[Pkg-mono-svn-commits] [SCM] mono branch, upstream-experimental, updated. upstream/2.10_rc1

Jo Shields directhex at apebox.org
Wed Jan 26 01:17:43 UTC 2011


The following commit has been merged in the upstream-experimental branch:
commit 98cb87c3c08e317dbff60033741b7b6749f1bdcf
Author: Jo Shields <directhex at apebox.org>
Date:   Wed Jan 26 01:09:22 2011 +0000

    Imported Upstream version 2.10~rc1

diff --git a/COPYING.LIB b/COPYING.LIB
index 0247f81..2f3b220 100644
--- a/COPYING.LIB
+++ b/COPYING.LIB
@@ -11,7 +11,13 @@ The Boehm licensing information is in the libgc directory
 The SGen Garbage Collector is under the terms of the MIT X11
 license
 
-		  
+The class libraries under mono/mcs are unless otherwise stated
+under the MIT X11 license.
+
+Open source Microsoft code is licensed under the original terms
+which is either MS-PL for older components, or dual licensed
+MS-PL/Apache2 licensed.
+ 
 		GNU LIBRARY GENERAL PUBLIC LICENSE
 		       Version 2, June 1991
 
diff --git a/ChangeLog b/ChangeLog
index 405fe9f..698db2a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,11 +1,368 @@
-2010-10-21  Andrew Jorgensen  <ajorgensen at novell.com>
+2011-01-13  Andrew Jorgensen  <ajorgensen at novell.com>
 
-	Bump version to 2.8.1
+	2.10
+
+2011-01-11  Marek Safar  <marek.safar at gmail.com>
+
+	Install new ikvm based C# compiler as mcs
+
+2011-01-11  Zoltan Varga  <vargaz at gmail.com>
+
+	Disable system AOT when using the loaded llvm, as it seems to
+	cause crashes on the x86 buildbot.
+
+2011-01-10  Zoltan Varga  <vargaz at gmail.com>
+
+	Force a build.
+
+2011-01-03  barkerm  <michael.barker at lmax.com>
+
+	Ignore files ending in '~'
+
+2011-01-05  Geoff Norton  <grompf at sublimeintervention.com>
+
+	Bump winconfig version
+
+2011-01-04  Elijah Taylor  <elijahtaylor at google.com>
+
+	change first batch of __native_client_codegen__ && TARGET_AMD64 to
+	__mono_ilp32__ where appropriate
+
+2011-01-05  Marek Habersack  <grendel at twistedcode.net>
+
+	[runtime] Include the al script in temporary installation
+	directory
+
+	This is needed as the 4.0 profile calls 'al' (which is defaults to
+	4.0) and not 'al2' and if Mono older than 2.8 is installed on the
+	machine, 'al' coming from it will fail to work with the current
+	Mono and thus some tests will fail.
+
+	The commit should fix the 300+ failing tests on the build bots.
+
+2011-01-04  Zoltan Varga  <vargaz at gmail.com>
+
+	Remove glib dependencies from the embed samples. Fixes #660117.
+
+2011-01-03  Zoltan Varga  <vargaz at gmail.com>
+
+	.gitignore
+
+2011-01-03  Zoltan Varga  <vargaz at gmail.com>
+
+	.gitignore.
+
+2010-12-23  Miguel de Icaza  <miguel at gnome.org>
+
+	Update README
+
+2010-12-22  Andrew Jorgensen  <ajorgensen at novell.com>
+
+	Package the new mcs.exe instead of gmcs.exe
+
+2010-12-20  Elijah Taylor  <elijahtaylor at google.com>
+
+	Merge selective files from fsa branch
+
+2010-12-21  Andreia Gaita  <shana at jitted.com>
+
+	Moonlight build fixes and cleanup
+
+2010-12-20  Elijah Taylor  <elijahtaylor at google.com>
+
+	Add back SHARED_MONO line that got deleted accidentally, always
+	enable shared mono for NaCl
+
+2010-12-20  Elijah Taylor  <elijahtaylor at google.com>
+
+	Changes to get NaCl builds working minimally
+
+2010-12-20  Elijah Taylor  <elijahtaylor at google.com>
+
+	NaCl build and test scripts
+
+2010-12-17  Andreia Gaita  <shana at jitted.com>
+
+	Fix moonlight build
+
+2010-12-17  Andreia Gaita  <shana at jitted.com>
+
+	Document the new --with-moon-gc flag on the README
+
+2010-12-17  Andreia Gaita  <shana at jitted.com>
+
+	Add --with-moon-gc to select the gc to use with moon (boehm/sgen)
+
+2010-12-16  Andrew Jorgensen  <ajorgensen at novell.com>
+
+	get-monolite-latest now pulls a versioned archive
+
+	In order to ensure that monolite actually works you need to ensure
+	that the corlib in it has the same version as your runtime.
+	Monolite archives are now versioned
+	monolite-MONO_CORLIB_VERSION-DATE.
+
+2010-12-16  Elijah Taylor  <elijahtaylor at google.com>
+
+	Merged in rest of Native Client changes, untested
+
+2010-12-16  Jonathan Pryor  <jonpryor at vt.edu>
+
+	[monodroid] Add support for the Android TimeZone file format.
+
+	Fixes #657609.
+
+	Android uses "ye standard" timezone file format, but instead of
+	using a directory + file structure as libc uses, they throw
+	everything into two files, a "zoneinfo.dat" and a "zoneinfo.idx",
+	where "zoneinfo.dat" is the concatenation of all the TZIF files
+	and "zoneinfo.idx" contains the timezone names and offsets into
+	"zoneinfo.dat". From the ZoneInfoDB documentation:
+
+	However, to conserve disk space the data for all time zones are
+	concatenated into a single file, and a second file is used to
+	indicate the starting position of each time zone record. A third
+	file indicates the version of the zoneinfo databse used to
+	generate the data.
+
+	TimeZoneInfo.Android.cs is a C# port of the corresponding Android
+	ZoneInfoDB type so that Mono can use Android's timezone DB.
+
+2010-12-16  Miguel de Icaza  <miguel at gnome.org>
+
+	Update instructions
+
+2010-12-16  Miguel de Icaza  <miguel at gnome.org>
+
+	Undo adding of README2 test file
+
+2010-12-16  Miguel de Icaza  <miguel at gnome.org>
+
+	Update COPYING file with MS-PL and Apache2 texts
+
+2010-12-14  Miguel de Icaza  <miguel at gnome.org>
+
+	Add README2
+
+2010-12-14  Elijah Taylor  <elijahtaylor at google.com>
+
+	Merge mono/io-layer, mono/metadata, mono/arch/x86 and configure.in
+	for Native Client
+
+2010-12-13  Andrew Jorgensen  <ajorgensen at novell.com>
+
+	Simplify the profiler line in the spec file
+
+	Stuff sometimes appears or disappears here, just use a wildcard.
+
+2010-12-12  Bojan Rajkovic  <bojan at airpoweranalytics.com>
+
+	Add FreeBSD to the list of supported platforms for SGen on i386
+	and x86_64.
+
+2010-12-03  Andreia Gaita  <shana at jitted.com>
+
+	[Moon] include cecil when building mono for moon
+
+2010-11-29  Paolo Molaro  <lupus at oddwiz.org>
+
+	Log profiler: portability checks.
+
+2010-11-26  Zoltan Varga  <vargaz at gmail.com>
+
+	Use $build instead of $target in a few places in configure.in,
+	$target is about building cross compilers, not cross compiling
+	itself.
+
+2010-11-24  Andreia Gaita  <shana at jitted.com>
+
+	[Moon] Speed up the moonlight build by stripping it down to the
+	bare basics
+
+2010-11-20  Miguel de Icaza  <miguel at gnome.org>
+
+	Remove experimental from the name
+
+2010-11-14  Zoltan Varga  <vargaz at gmail.com>
+
+	Remove the unused and incomplete CMake build scripts for now.
+
+2010-11-13  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix build breakage on platforms without execvp.
+
+2010-11-12  Andrew Jorgensen  <ajorgensen at novell.com>
+
+	Add new profiler to mono-devel package
+
+2010-11-12  Zoltan Varga  <vargaz at gmail.com>
+
+	Avoid 'sgen not supported' warnings when no --with-sgen=yes
+	argument was passed to configure.
+
+2010-11-12  Zoltan Varga  <vargaz at gmail.com>
+
+	Remove obsolete cygwin glib checks.
+
+2010-11-11  Zoltan Varga  <vargaz at gmail.com>
+
+	Pass -mno-cygwin to eglib's configure.
+
+2010-11-11  Paolo Molaro  <lupus at oddwiz.org>
+
+	Added a proper define for the external zlib and check for
+	sched_getcpu().
+
+2010-11-10  Geoff Norton  <grompf at sublimeintervention.com>
+
+	[OSX] Dont use nested functions to determine if we can use the
+	system zlib
+
+2010-11-10  Andrew Jorgensen  <ajorgensen at novell.com>
+
+	Remove compat-4.0 dir (nothing there anymore)
+
+2010-11-09  Zoltan Varga  <vargaz at gmail.com>
+
+	Tidy up the configure output a bit.
+
+2010-10-18  Mark Probst  <mark.probst at gmail.com>
+
+	[sgen] Dump Mark&Sweep heap occupancy.
+
+	For each block size dump the occupancy to the heap-dump file.
+
+2010-11-05  Marek Safar  <marek.safar at gmail.com>
+
+	Add *.xml to ignore list
+
+2010-11-03  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	a5
+
+2010-11-03  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	a4
+
+2010-11-03  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	a3
+
+2010-11-03  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	a2
+
+2010-11-03  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	iii
+
+2010-11-03  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	i
+
+2010-11-03  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Last
+
+2010-11-03  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Test 5
+
+2010-11-03  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Last test
+
+2010-11-03  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Test 3
+
+2010-11-03  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Test 2
+
+2010-11-03  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	TEST
+
+2010-10-28  Andrew Jorgensen  <ajorgensen at novell.com>
+
+	Move version to 2.9 (next to be 2.10)
+
+2010-10-22  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Unbreak the world
+
+2010-10-22  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Remove 'web' directory
+
+2010-10-12  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Updated notes on using get-monolite-latest
 
 2010-09-23  Andrew Jorgensen  <ajorgensen at novell.com>
 
 	move DynamicData to mvc because it depends on Extensions
 
+2010-09-23  Zoltan Varga  <vargaz at gmail.com>
+
+	Avoid extracting tar.gz files in the get-cygwin-deps.sh script, we
+	download only zip files now.
+
+2010-09-22  Jonathan Pryor  <jonpryor at vt.edu>
+
+	Do not build mcs/docs if the 4.0 build is disabled.
+
+2010-09-22  Jonathan Pryor  <jonpryor at vt.edu>
+
+	Revert "mdoc 2.0-only profile build support, take 3!"
+
+	We'll instead just disable the docs build entirely if
+	--with-profile4=no is specified [future commit, not this one].
+
+2010-09-22  Jonathan Pryor  <jonpryor at vt.edu>
+
+	mdoc 2.0-only profile build support, take 3!
+
+	Further discussion suggested that, even if mdoc 2.0 works, it
+	hasn't gotten widespread testing (as it's been a 4.0 app for
+	months), so it would be preferable to keep it as a 4.0 app.
+
+	However, it still needs to be built under 2.0 so that a
+	--with-profile4=no build can...build...without errors.
+
+	Thus, the compromise: build mdoc twice, once for each profile.
+	This will ensure that *some* version of mdoc is around when
+	mcs/docs is built.
+
+	Unfortunately we can't place mdoc into $(per_profile_dirs), as
+	these are built before $(net_2_0_dirs) (and thus before monodoc,
+	which needs to be built before mdoc). Thus the compromise of
+	listing mdoc in *both* $(net_2_0_dirs) and $(net_4_0_dirs),
+	allowing build dependencies to be met.
+
+2010-09-22  Marek Habersack  <grendel at twistedcode.net>
+
+	Revert "mdoc 2.0-only profile build support, take 2!"
+
+	This reverts commit 313633fc67cf1479514019a56143e5ad1643d28f
+	because it breaks the build.
+
+2010-09-21  Jonathan Pryor  <jonpryor at vt.edu>
+
+	mdoc 2.0-only profile build support, take 2!
+
+	Further discussion suggested that, even if mdoc 2.0 works, it
+	hasn't gotten widespread testing (as it's been a 4.0 app for
+	months), so it would be preferable to keep it as a 4.0 app.
+
+	However, it still needs to be built under 2.0 so that a
+	--with-profile4=no build can...build...without errors.
+
+	Thus, the compromise: build mdoc twice, once for each profile.
+	This will ensure that *some* version of mdoc is around when
+	mcs/docs is built.
+
 2010-09-20  Andrew Jorgensen  <ajorgensen at novell.com>
 
 	put the x11 devel package back in buildrequires and a couple other
@@ -13,23 +370,81 @@
 
 2010-09-17  Andrew Jorgensen  <ajorgensen at novell.com>
 
-	errant file
+	3.5 version of Sys.Web.Ext is gone
 
 2010-09-16  Andrew Jorgensen  <ajorgensen at novell.com>
 
 	More .spec reorgs
 
+2010-09-16  Rolf Bjarne Kvinge  <RKvinge at novell.com>
+
+	Add a configure option to disable building the shared libmono
+	library
+
+2010-09-15  Rolf Bjarne Kvinge  <RKvinge at novell.com>
+
+	Disable assembly remapping for moonlight
+
+2010-09-15  Rolf Bjarne Kvinge  <RKvinge at novell.com>
+
+	Add configure option for disabling assembly remapping
+
+2010-09-16  Jonathan Pryor  <jonpryor at vt.edu>
+
+	Make mdoc a 2.0 app, not a 4.0 app.
+
+	The problem is build sanity: it's possible to disable the 4.0
+	profile (--with-profile4=no) while not disabling documentation
+	building (--with-mcs-docs=yes is the default). The result would be
+	a 4.0-less build, and thus no mdoc, and thus no mdoc to assemble
+	the documentation, and thus a build break as we attempted to use
+	an app during the build which didn't exist.
+
+	Oops.
+
+	mdoc doesn't need to be a 4.0 app anyway...
+
+2010-09-15  Andrew Jorgensen  <ajorgensen at novell.com>
+
+	Add System.Net (4.0 and 2.0) to mono-core in .spec
+
+2010-09-15  Marek Safar  <marek.safar at gmail.com>
+
+	Remove copying of misplaced duplicate of
+	System.Web.Extensions.Design.dll
+
 2010-09-15  Andrew Jorgensen  <ajorgensen at novell.com>
 
 	mono-configuration-crypto is a 4.0 assembly, not 2.0
 
+2010-09-14  Chris Toshok  <toshok at gmail.com>
+
+	built a separate libmonoruntime for moonlight, so we can do
+	-DMOONLIGHT just in the moonlight lib instead of globally.
+
+2010-09-09  Chris Toshok  <toshok at gmail.com>
+
+	if we're building with moonlight enabled, don't build mdb.
+
+2010-09-14  Marek Safar  <marek.safar at gmail.com>
+
+	Fixes mixed line ending.
+
 2010-09-09  Andrew Jorgensen  <ajorgensen at novell.com>
 
 	Various cleanup and addition
 
-2010-08-31  Andrew Jorgensen  <ajorgensen at novell.com>
+2010-09-09  Jb Evain  <jbevain at gmail.com>
+
+	add mono-abi-info to gitignore
+
+2010-09-08  Jb Evain  <jbevain at gmail.com>
+
+	Enable the mcs monodroid build from mono's configure
+
+2010-09-02  Zoltan Varga  <vargaz at gmail.com>
 
-	Version 2.8
+	Enable system aot by default only on x86/amd64 linux.
 
 2010-08-31  Zoltan Varga  <vargaz at gmail.com>
 
diff --git a/LICENSE b/LICENSE
index d78a60a..0cb310e 100644
--- a/LICENSE
+++ b/LICENSE
@@ -98,6 +98,13 @@ For comments, corrections and updates, please contact mono at novell.com
             ICSharpCode.SharpZipLib, GPL with exceptions.
 		See: mcs/class/ICSharpCode.SharpZipLib/README
 
+** mcs/class/System.Core/System/TimeZoneInfo.Android.cs
+
+	This is a port of Apache 2.0-licensed Android code, and thus is
+	licensed under the Apache 2.0 license:
+
+	    http://www.apache.org/licenses/LICENSE-2.0
+
 	     
 ** mcs/tools
 
diff --git a/Makefile.am b/Makefile.am
index 0017405..339d38c 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,21 +1,21 @@
 AUTOMAKE_OPTIONS = foreign
 ACLOCAL_AMFLAGS = -I .
 
-MOONLIGHT_SUBDIRS =    $(libgc_dir) eglib mono $(ikvm_native_dir)         data
+MOONLIGHT_SUBDIRS = $(libgc_dir) eglib/src mono
 
 if CROSS_COMPILING
-SUBDIRS = po $(libgc_dir) eglib mono $(ikvm_native_dir) data runtime scripts man samples web msvc $(docs_dir)
+SUBDIRS = po $(libgc_dir) eglib mono $(ikvm_native_dir) data runtime scripts man samples msvc $(docs_dir)
 # Keep in sync with SUBDIRS
 ## 'tools' is not normally built
-DIST_SUBDIRS = po libgc eglib mono ikvm-native         data runtime scripts man samples web tools msvc docs
+DIST_SUBDIRS = po libgc eglib mono ikvm-native         data runtime scripts man samples tools msvc docs
 else
 if ONLY_MOONLIGHT
 SUBDIRS = $(MOONLIGHT_SUBDIRS) runtime
 else
-SUBDIRS = po $(libgc_dir) eglib mono $(ikvm_native_dir) support data runtime scripts man samples web msvc $(docs_dir)
+SUBDIRS = po $(libgc_dir) eglib mono $(ikvm_native_dir) support data runtime scripts man samples msvc $(docs_dir)
 # Keep in sync with SUBDIRS
 ## 'tools' is not normally built
-DIST_SUBDIRS = po libgc eglib mono ikvm-native support data runtime scripts man samples web tools msvc docs
+DIST_SUBDIRS = po libgc eglib mono ikvm-native support data runtime scripts man samples tools msvc docs
 endif
 endif
 
@@ -37,7 +37,8 @@ DISTCLEANFILES= mono-uninstalled.pc
 # building with monolite
 mcslib = $(mcs_topdir)/class/lib
 monolite = $(mcslib)/monolite
-monolite_url = http://mono.ximian.com/daily/monolite-latest.tar.gz
+mono_corlib_version = $(shell sed -n "s/\#define MONO_CORLIB_VERSION //p" $(srcdir)/mono/metadata/appdomain.c)
+monolite_url = http://mono.ximian.com/daily/monolite-$(mono_corlib_version)-latest.tar.gz
 .PHONY: get-monolite-latest 
 get-monolite-latest:
 	-rm -fr $(mcslib)/monolite-*
@@ -72,17 +73,26 @@ bootstrap-world: compiler-tests
 if MOONLIGHT
 moon-do-build: config.h
 	@list='$(MOONLIGHT_SUBDIRS)'; for subdir in $$list; do \
-	  echo "Making all in $$subdir"; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) all); \
+	  case "x$$subdir" in \
+		xmono ) target="moon-do-build";; \
+		* ) target="all";; \
+	  esac; \
+	  echo "Making $$target in $$subdir"; \
+	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$target); \
         done;
-	cd $(mcs_topdir) && NO_DIR_CHECK=1 $(MAKE) PROFILE=moonlight_raw all
+	(cd runtime && $(MAKE) $(AM_MAKEFLAGS) moon-do-build)
 
 moon-do-clean:
 	@list='$(MOONLIGHT_SUBDIRS)'; for subdir in $$list; do \
-	  echo "Making clean in $$subdir"; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) clean); \
+	  case "x$$subdir" in \
+		xmono ) target="moon-do-clean";; \
+		* ) target="clean";; \
+	  esac; \
+	  echo "Making $$target in $$subdir"; \
+	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$target); \
         done;
-	cd $(mcs_topdir) && NO_DIR_CHECK=1 $(MAKE) PROFILE=moonlight_raw clean
+	(cd runtime && $(MAKE) $(AM_MAKEFLAGS) moon-do-clean)
+
 endif
 
 win32getdeps:
diff --git a/Makefile.in b/Makefile.in
index 0ce0096..35c6c83 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -163,6 +163,7 @@ MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
 MONO_DL_NEED_USCORE = @MONO_DL_NEED_USCORE@
 MONO_NACL_ALIGN_MASK_OFF = @MONO_NACL_ALIGN_MASK_OFF@
+MOONLIGHT_DEFINES = @MOONLIGHT_DEFINES@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
@@ -273,14 +274,14 @@ top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 AUTOMAKE_OPTIONS = foreign
 ACLOCAL_AMFLAGS = -I .
-MOONLIGHT_SUBDIRS = $(libgc_dir) eglib mono $(ikvm_native_dir)         data
- at CROSS_COMPILING_FALSE@@ONLY_MOONLIGHT_FALSE at SUBDIRS = po $(libgc_dir) eglib mono $(ikvm_native_dir) support data runtime scripts man samples web msvc $(docs_dir)
+MOONLIGHT_SUBDIRS = $(libgc_dir) eglib/src mono
+ at CROSS_COMPILING_FALSE@@ONLY_MOONLIGHT_FALSE at SUBDIRS = po $(libgc_dir) eglib mono $(ikvm_native_dir) support data runtime scripts man samples msvc $(docs_dir)
 @CROSS_COMPILING_FALSE@@ONLY_MOONLIGHT_TRUE at SUBDIRS = $(MOONLIGHT_SUBDIRS) runtime
- at CROSS_COMPILING_TRUE@SUBDIRS = po $(libgc_dir) eglib mono $(ikvm_native_dir) data runtime scripts man samples web msvc $(docs_dir)
+ at CROSS_COMPILING_TRUE@SUBDIRS = po $(libgc_dir) eglib mono $(ikvm_native_dir) data runtime scripts man samples msvc $(docs_dir)
 # Keep in sync with SUBDIRS
- at CROSS_COMPILING_FALSE@@ONLY_MOONLIGHT_FALSE at DIST_SUBDIRS = po libgc eglib mono ikvm-native support data runtime scripts man samples web tools msvc docs
+ at CROSS_COMPILING_FALSE@@ONLY_MOONLIGHT_FALSE at DIST_SUBDIRS = po libgc eglib mono ikvm-native support data runtime scripts man samples tools msvc docs
 # Keep in sync with SUBDIRS
- at CROSS_COMPILING_TRUE@DIST_SUBDIRS = po libgc eglib mono ikvm-native         data runtime scripts man samples web tools msvc docs
+ at CROSS_COMPILING_TRUE@DIST_SUBDIRS = po libgc eglib mono ikvm-native         data runtime scripts man samples tools msvc docs
 EXTRA_DIST = nls.m4 po.m4 progtest.m4 mono-uninstalled.pc.in build-mingw32.sh LICENSE mkinstalldirs autogen.sh 
 DISTCHECK_CONFIGURE_FLAGS = EXTERNAL_MCS=false EXTERNAL_RUNTIME=false
 pkgconfigdir = $(libdir)/pkgconfig
@@ -290,7 +291,8 @@ DISTCLEANFILES = mono-uninstalled.pc
 # building with monolite
 mcslib = $(mcs_topdir)/class/lib
 monolite = $(mcslib)/monolite
-monolite_url = http://mono.ximian.com/daily/monolite-latest.tar.gz
+mono_corlib_version = $(shell sed -n "s/\#define MONO_CORLIB_VERSION //p" $(srcdir)/mono/metadata/appdomain.c)
+monolite_url = http://mono.ximian.com/daily/monolite-$(mono_corlib_version)-latest.tar.gz
 all: config.h
 	$(MAKE) $(AM_MAKEFLAGS) all-recursive
 
@@ -787,17 +789,25 @@ bootstrap-world: compiler-tests
 
 @MOONLIGHT_TRUE at moon-do-build: config.h
 @MOONLIGHT_TRUE@	@list='$(MOONLIGHT_SUBDIRS)'; for subdir in $$list; do \
- at MOONLIGHT_TRUE@	  echo "Making all in $$subdir"; \
- at MOONLIGHT_TRUE@	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) all); \
+ at MOONLIGHT_TRUE@	  case "x$$subdir" in \
+ at MOONLIGHT_TRUE@		xmono ) target="moon-do-build";; \
+ at MOONLIGHT_TRUE@		* ) target="all";; \
+ at MOONLIGHT_TRUE@	  esac; \
+ at MOONLIGHT_TRUE@	  echo "Making $$target in $$subdir"; \
+ at MOONLIGHT_TRUE@	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$target); \
 @MOONLIGHT_TRUE@        done;
- at MOONLIGHT_TRUE@	cd $(mcs_topdir) && NO_DIR_CHECK=1 $(MAKE) PROFILE=moonlight_raw all
+ at MOONLIGHT_TRUE@	(cd runtime && $(MAKE) $(AM_MAKEFLAGS) moon-do-build)
 
 @MOONLIGHT_TRUE at moon-do-clean:
 @MOONLIGHT_TRUE@	@list='$(MOONLIGHT_SUBDIRS)'; for subdir in $$list; do \
- at MOONLIGHT_TRUE@	  echo "Making clean in $$subdir"; \
- at MOONLIGHT_TRUE@	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) clean); \
+ at MOONLIGHT_TRUE@	  case "x$$subdir" in \
+ at MOONLIGHT_TRUE@		xmono ) target="moon-do-clean";; \
+ at MOONLIGHT_TRUE@		* ) target="clean";; \
+ at MOONLIGHT_TRUE@	  esac; \
+ at MOONLIGHT_TRUE@	  echo "Making $$target in $$subdir"; \
+ at MOONLIGHT_TRUE@	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$target); \
 @MOONLIGHT_TRUE@        done;
- at MOONLIGHT_TRUE@	cd $(mcs_topdir) && NO_DIR_CHECK=1 $(MAKE) PROFILE=moonlight_raw clean
+ at MOONLIGHT_TRUE@	(cd runtime && $(MAKE) $(AM_MAKEFLAGS) moon-do-clean)
 
 win32getdeps:
 	wget http://www.go-mono.com/archive/pkgconfig-0.11-20020310.zip
diff --git a/README b/README
index fcf01c3..d57aef2 100644
--- a/README
+++ b/README
@@ -11,16 +11,6 @@ This is Mono.
    a. Build Requirements
    ---------------------
 
-	To build Mono, you will need the following components:
-
-		* pkg-config
-
-		  Available from: http://www.freedesktop.org/Software/pkgconfig
-
-		* glib 2.4
-
-		  Available from: http://www.gtk.org/
-
 	On Itanium, you must obtain libunwind:
 
 		http://www.hpl.hp.com/research/linux/libunwind/download.php4
@@ -35,7 +25,15 @@ This is Mono.
 		* libgdiplus
 
 		  If you want to get support for System.Drawing, you will need to get
-		  Libgdiplus.
+		  Libgdiplus.    This library in turn requires glib and pkg-config:
+
+			* pkg-config
+
+		    	  Available from: http://www.freedesktop.org/Software/pkgconfig
+
+		  	* glib 2.4
+
+		    	  Available from: http://www.gtk.org/
 
 		* libzlib
 
@@ -74,15 +72,18 @@ This is Mono.
 		 make V=1
 
 
-
-    c. Building the software from SVN
+    c. Building the software from GIT
     ---------------------------------
 
-	If you are building the software from SVN, make sure that you
+	If you are building the software from GIT, make sure that you
 	have up-to-date mcs and mono sources:
 
-		svn co svn+ssh://USER@mono-cvs.ximian.com/source/trunk/mono
-		svn co svn+ssh://USER@mono-cvs.ximian.com/source/trunk/mcs
+	   If you are an anonymous user:
+		git clone git://github.com/mono/mono.git
+
+           If you are a Mono contributors with read/write privileges:
+	        git clone git at github.com:mono/mono.git
+
 
 	Then, go into the mono directory, and configure:
 
@@ -129,16 +130,16 @@ This is Mono.
 	distribution, which contains just enough to run the 'mcs'
 	compiler.  You do this with:
 
+		# Run the following line after ./autogen.sh
 		make get-monolite-latest
 
 	This will download and automatically gunzip and untar the
 	tarball, and place the files appropriately so that you can then
 	just run:
 
-		make
+		make EXTERNAL_MCS=${PWD}/mcs/class/lib/monolite/gmcs.exe
 
-	To ensure that you're using the 'monolite' distribution, you can
-	also try passing EXTERNAL_MCS=false on the make command-line.
+	And that will use the files downloaded by 'make get-monolite-latest.
 
 	Testing and Installation
 	------------------------
@@ -164,10 +165,13 @@ This is Mono.
 
 		make install
 
+	You can verify your installation by using the mono-test-install
+	script, it can diagnose some common problems with Mono's install.
+
 	Failure to follow these steps may result in a broken installation. 
 
-    d. Common Configuration Options
-    -------------------------------
+    d. Configuration Options
+    ------------------------
 
 	The following are the configuration options that someone
 	building Mono might want to use:
@@ -301,6 +305,21 @@ This is Mono.
 		System.dll, System.Code.dll and System.Xml.Core.dll) and turn
 	  	on the LINQ extensions for the compiler.
 
+	--with-moon-gc=boehm,sgen
+
+		Select the GC to use for Moonlight.
+
+		boehm:
+			Selects the Boehm Garbage Collector, with the same flags
+			as the regular Mono build. This is the default.
+
+		sgen:
+			Selects the new SGen Garbage Collector, which provides
+			Generational GC support, using the same flags as the
+			mono-sgen build.
+
+		This defaults to `boehm'.
+
 	--with-libgdiplus=installed,sibling,<path>
 
 		This is used to configure where should Mono look for
@@ -567,4 +586,3 @@ This is Mono.
 		same prefix than this module gets.
 
 
-
diff --git a/config.h.in b/config.h.in
index a85771c..c011dc9 100644
--- a/config.h.in
+++ b/config.h.in
@@ -12,6 +12,9 @@
 /* Disable AOT Compiler */
 #undef DISABLE_AOT_COMPILER
 
+/* Disable assembly remapping. */
+#undef DISABLE_ASSEMBLY_REMAPPING
+
 /* Disable agent attach support */
 #undef DISABLE_ATTACH
 
@@ -129,6 +132,9 @@
 /* Define to 1 if you have the <dirent.h> header file. */
 #undef HAVE_DIRENT_H
 
+/* Define to 1 if you have the `dladdr' function. */
+#undef HAVE_DLADDR
+
 /* Define to 1 if you have the <dlfcn.h> header file. */
 #undef HAVE_DLFCN_H
 
@@ -159,6 +165,9 @@
 /* Define to 1 if you have the <execinfo.h> header file. */
 #undef HAVE_EXECINFO_H
 
+/* Define to 1 if you have the `execvp' function. */
+#undef HAVE_EXECVP
+
 /* Define to 1 if you have the `fgetgrent' function. */
 #undef HAVE_FGETGRENT
 
@@ -384,6 +393,9 @@
 /* Define to 1 if you have the `round' function. */
 #undef HAVE_ROUND
 
+/* Define to 1 if you have the `sched_getcpu' function. */
+#undef HAVE_SCHED_GETCPU
+
 /* Define to 1 if you have the `sched_setaffinity' function. */
 #undef HAVE_SCHED_SETAFFINITY
 
@@ -627,6 +639,9 @@
 /* Define to 1 if you have the <sys/xattr.h> header file. */
 #undef HAVE_SYS_XATTR_H
 
+/* Have system zlib */
+#undef HAVE_SYS_ZLIB
+
 /* Define to 1 if you have the `telldir' function. */
 #undef HAVE_TELLDIR
 
@@ -721,9 +736,6 @@
 /* Length of zero length arrays */
 #undef MONO_ZERO_LEN_ARRAY
 
-/* Building for Moonlight */
-#undef MOONLIGHT
-
 /* Name of /dev/random */
 #undef NAME_DEV_RANDOM
 
diff --git a/configure b/configure
index 891253a..7203023 100755
--- a/configure
+++ b/configure
@@ -834,8 +834,14 @@ MIPS_GCC_FALSE
 MIPS_GCC_TRUE
 INSTALL_MONOTOUCH_FALSE
 INSTALL_MONOTOUCH_TRUE
+INSTALL_MONODROID_FALSE
+INSTALL_MONODROID_TRUE
 INSTALL_4_0_FALSE
 INSTALL_4_0_TRUE
+MOONLIGHT_SGEN_FALSE
+MOONLIGHT_SGEN_TRUE
+MOONLIGHT_BOEHM_FALSE
+MOONLIGHT_BOEHM_TRUE
 ONLY_MOONLIGHT_FALSE
 ONLY_MOONLIGHT_TRUE
 MOONLIGHT_FALSE
@@ -845,6 +851,7 @@ OPROFILE_CFLAGS
 HAVE_OPROFILE_FALSE
 HAVE_OPROFILE_TRUE
 docs_dir
+MOONLIGHT_DEFINES
 MONO_DEBUGGER_SUPPORTED_FALSE
 MONO_DEBUGGER_SUPPORTED_TRUE
 libsuffix
@@ -889,6 +896,8 @@ DISABLE_JIT_FALSE
 DISABLE_JIT_TRUE
 DISABLE_PROFILER_FALSE
 DISABLE_PROFILER_TRUE
+SHARED_MONO_FALSE
+SHARED_MONO_TRUE
 STATIC_MONO_FALSE
 STATIC_MONO_TRUE
 BUILD_GLIB_LIBS
@@ -1092,6 +1101,7 @@ with_gc
 with_tls
 with_sigaltstack
 with_static_mono
+with_shared_mono
 enable_mcs_build
 with_xen_opt
 enable_quiet_build
@@ -1107,6 +1117,7 @@ enable_nunit_tests
 enable_big_arrays
 enable_dtrace
 enable_nacl_codegen
+enable_nacl_gc
 enable_llvm
 enable_loadedllvm
 with_sgen
@@ -1115,11 +1126,13 @@ with_interp
 with_x
 enable_mono_debugger
 with_profile4
+with_monodroid
 with_monotouch
 with_oprofile
 with_malloc_mempools
 with_mcs_docs
 with_moonlight
+with_moon_gc
 '
       ac_precious_vars='build_alias
 host_alias
@@ -1788,7 +1801,7 @@ Optional Features:
   --enable-system-aot  Enable the Ahead-Of-Time compilation of system assemblies during the build (on by default on some platforms)
   --enable-minimal=LIST      drop support for LIST subsystems.
      LIST is a comma-separated list from: aot, profiler, decimal, pinvoke, debug,
-     reflection_emit, reflection_emit_save, large_code, logging, com, ssa, generics, attach, jit, simd, soft_debug, normalization.
+     reflection_emit, reflection_emit_save, large_code, logging, com, ssa, generics, attach, jit, simd, soft_debug, normalization, assembly_remapping.
   --enable-parallel-mark     Enables GC Parallel Marking
   --disable-dev-random    disable the use of the random device (enabled by default)
   --disable-shared-handles disable inter-process shared handles
@@ -1796,7 +1809,8 @@ Optional Features:
   --enable-big-arrays	Enable the allocation and indexing of arrays greater than Int32.MaxValue
   --enable-dtrace	Enable DTrace probes
   --enable-nacl-codegen      Enable Native Client code generation
-  --enable-llvm	Enable the experimental LLVM back-end
+  --enable-nacl-gc           Enable Native Client garbage collection
+  --enable-llvm	Enable the LLVM back-end
   --enable-loadedllvm	Load the LLVM back-end dynamically
   --disable-mono-debugger disable support for the mdb debugger
 
@@ -1814,6 +1828,7 @@ Optional Packages:
   --with-tls=__thread,pthread    select Thread Local Storage implementation (defaults to __thread)
   --with-sigaltstack=yes,no      enable/disable support for sigaltstack (defaults to yes)
   --with-static_mono=yes,no      link mono statically to libmono (faster) (defaults to yes)
+  --with-shared_mono=yes,no      build a shared libmono library (defaults to yes)
   --with-xen_opt=yes,no          Enable Xen-specific behaviour (defaults to yes)
   --with-large-heap=yes,no       Enable support for GC heaps larger than 3GB (defaults to no)
   --with-ikvm-native=yes,no      build the IKVM JNI interface library (defaults to yes)
@@ -1822,11 +1837,13 @@ Optional Packages:
   --with-interp=yes,no           If you want to build scripts that default to the interpreter (defaults to no)
   --with-x                use the X Window System
   --with-profile4=yes,no          If you want to install the 4.0 FX (defaults to yes)
-  --with-monotouch=yes,no         If you want to build the raw MonoTouch 2.1 assemblies (defaults to no)
+  --with-monodroid=yes,no         If you want to build the MonoDroid 2.1 assemblies (defaults to no)
+  --with-monotouch=yes,no         If you want to build the MonoTouch 2.1 assemblies (defaults to no)
   --with-oprofile=no,<oprofile install dir>   Enable oprofile support (defaults to no)
   --with-malloc-mempools=yes,no  Use malloc for each single mempool allocation (only for runtime debugging, defaults to no)
   --with-mcs-docs=yes,no         If you want to build the documentation under mcs (defaults to yes)
   --with-moonlight=yes|no|only         If you want to build Mono for Moonlight (defaults to no)
+  --with-moon-gc=boehm,sgen		Select the gc to use with Moonlight (defaults to boehm)
 
 Some influential environment variables:
   CC          C compiler command
@@ -2764,7 +2781,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE=mono
- VERSION=2.8.1
+ VERSION=2.10
 
 
 cat >>confdefs.h <<_ACEOF
@@ -3106,7 +3123,7 @@ _ACEOF
 		host_win32=yes
 		if test "x$cross_compiling" = "xno"; then
 			target_win32=yes
-			if test "x$host" == "x$target"; then
+			if test "x$host" == "x$build"; then
 
 cat >>confdefs.h <<\_ACEOF
 #define TARGET_WIN32 1
@@ -3118,6 +3135,7 @@ _ACEOF
 			# So libgc configure gets -mno-cygwin
 			export CC
 			export CXX
+			CFLAGS_FOR_EGLIB="$CFLAGS_FOR_EGLIB -mno-cygwin"
 		else
 			target_win32=yes
 
@@ -3219,7 +3237,6 @@ _ACEOF
 		libmono_cflags="-D_REENTRANT"
 		libdl="-ldl"
 		libgc_threads=pthreads
-		AOT_SUPPORTED="yes"
 		use_sigposix=yes
 		;;
 	*-*-nacl*)
@@ -3231,7 +3248,6 @@ _ACEOF
 		libmono_cflags="-D_REENTRANT"
 		libdl=
 		libgc_threads=pthreads
-		AOT_SUPPORTED="yes"
 		gc_default=boehm
 		use_sigposix=yes
 		ikvm_native=no
@@ -3240,6 +3256,11 @@ cat >>confdefs.h <<\_ACEOF
 #define DISABLE_SOCKETS 1
 _ACEOF
 
+
+cat >>confdefs.h <<\_ACEOF
+#define DISABLE_ATTACH 1
+_ACEOF
+
 		;;
 	*-*-hpux*)
 	        host_win32=no
@@ -7630,13 +7651,13 @@ if test "${lt_cv_nm_interface+set}" = set; then
 else
   lt_cv_nm_interface="BSD nm"
   echo "int some_variable = 0;" > conftest.$ac_ext
-  (eval echo "\"\$as_me:7633: $ac_compile\"" >&5)
+  (eval echo "\"\$as_me:7654: $ac_compile\"" >&5)
   (eval "$ac_compile" 2>conftest.err)
   cat conftest.err >&5
-  (eval echo "\"\$as_me:7636: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+  (eval echo "\"\$as_me:7657: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
   (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
   cat conftest.err >&5
-  (eval echo "\"\$as_me:7639: output\"" >&5)
+  (eval echo "\"\$as_me:7660: output\"" >&5)
   cat conftest.out >&5
   if $GREP 'External.*some_variable' conftest.out > /dev/null; then
     lt_cv_nm_interface="MS dumpbin"
@@ -8827,7 +8848,7 @@ ia64-*-hpux*)
   ;;
 *-*-irix6*)
   # Find out which ABI we are using.
-  echo '#line 8830 "configure"' > conftest.$ac_ext
+  echo '#line 8851 "configure"' > conftest.$ac_ext
   if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
@@ -10986,11 +11007,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:10989: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:11010: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:10993: \$? = $ac_status" >&5
+   echo "$as_me:11014: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -11325,11 +11346,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:11328: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:11349: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:11332: \$? = $ac_status" >&5
+   echo "$as_me:11353: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -11430,11 +11451,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:11433: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:11454: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:11437: \$? = $ac_status" >&5
+   echo "$as_me:11458: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -11485,11 +11506,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:11488: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:11509: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:11492: \$? = $ac_status" >&5
+   echo "$as_me:11513: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -14285,7 +14306,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 14288 "configure"
+#line 14309 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -14381,7 +14402,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 14384 "configure"
+#line 14405 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -16401,11 +16422,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:16404: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:16425: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:16408: \$? = $ac_status" >&5
+   echo "$as_me:16429: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -16500,11 +16521,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:16503: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:16524: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:16507: \$? = $ac_status" >&5
+   echo "$as_me:16528: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -16552,11 +16573,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:16555: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:16576: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:16559: \$? = $ac_status" >&5
+   echo "$as_me:16580: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -18400,9 +18421,8 @@ int
 main ()
 {
 
-   void main () {
    #if defined(ZLIB_VERNUM) && (ZLIB_VERNUM >= 0x1230)
-   }
+   return 0;
    #else
    #error No good zlib found
    #endif
@@ -18434,6 +18454,11 @@ $as_echo "$ac_try_echo") >&5
 $as_echo "Using system zlib" >&6; }
 	zlib_msg="system zlib"
 
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_SYS_ZLIB 1
+_ACEOF
+
+
 else
   $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
@@ -20689,37 +20714,6 @@ esac
 
 
 
-if test x$cross_compiling$host_win32 = xnoyes; then
-   { $as_echo "$as_me:$LINENO: checking for cygwin glib2-dev package" >&5
-$as_echo_n "checking for cygwin glib2-dev package... " >&6; }
-   if  cygcheck --f /usr/lib/libglib-2.0.dll.a | grep -q glib2-devel ; then
-      { $as_echo "$as_me:$LINENO: result: found" >&5
-$as_echo "found" >&6; }
-	  { { $as_echo "$as_me:$LINENO: error: Mono cannot be built with the cygwin glib2-devel package installed, because that package doesn't work with -mno-cygwin. Please uninstall it then re-run configure." >&5
-$as_echo "$as_me: error: Mono cannot be built with the cygwin glib2-devel package installed, because that package doesn't work with -mno-cygwin. Please uninstall it then re-run configure." >&2;}
-   { (exit 1); exit 1; }; }
-   else
-      { $as_echo "$as_me:$LINENO: result: not found" >&5
-$as_echo "not found" >&6; }
-   fi
-
-   { $as_echo "$as_me:$LINENO: checking for broken gwin32.h" >&5
-$as_echo_n "checking for broken gwin32.h... " >&6; }
-   glib_include=`$PKG_CONFIG --cflags-only-I glib-2.0 | sed -e 's/ -I.*//g' | sed -e 's/-I//g'`
-   if test -f $glib_include/glib/gwin32.h; then
-	  if  grep ftruncate $glib_include/glib/gwin32.h | grep -q define ; then
-		 { $as_echo "$as_me:$LINENO: result: failed" >&5
-$as_echo "failed" >&6; }
-		 hashmark='#'
-		 { { $as_echo "$as_me:$LINENO: error: Your version of gwin32.h is broken and will cause compilation errors when building mono. Please fix it by deleting the line: '$hashmark   define ftruncate...' from '$glib_include/glib/gwin32.h' then re-run configure." >&5
-$as_echo "$as_me: error: Your version of gwin32.h is broken and will cause compilation errors when building mono. Please fix it by deleting the line: '$hashmark   define ftruncate...' from '$glib_include/glib/gwin32.h' then re-run configure." >&2;}
-   { (exit 1); exit 1; }; }
-	  fi
-   fi
-   { $as_echo "$as_me:$LINENO: result: ok" >&5
-$as_echo "ok" >&6; }
-fi
-
 
 # Check whether --with-gc was given.
 if test "${with_gc+set}" = set; then
@@ -20760,10 +20754,26 @@ else
 fi
 
 
+# Check whether --with-shared_mono was given.
+if test "${with_shared_mono+set}" = set; then
+  withval=$with_shared_mono;
+else
+  with_shared_mono=yes
+fi
+
+
 if test "x$enable_static" = "xno"; then
    with_static_mono=no
 fi
 
+if test "x$enable_shared" = "xno"; then
+   with_shared_mono=no
+fi
+
+case $host in
+*nacl* ) with_shared_mono=yes;;
+esac
+
 if test "x$host_win32" = "xyes"; then
    # Boehm GC requires the runtime to be in its own dll
    with_static_mono=no
@@ -20777,6 +20787,14 @@ else
   STATIC_MONO_FALSE=
 fi
 
+ if test x$with_shared_mono != xno; then
+  SHARED_MONO_TRUE=
+  SHARED_MONO_FALSE='#'
+else
+  SHARED_MONO_TRUE='#'
+  SHARED_MONO_FALSE=
+fi
+
 # Check whether --enable-mcs-build was given.
 if test "${enable_mcs_build+set}" = set; then
   enableval=$enable_mcs_build; try_mcs_build=$enableval
@@ -20882,15 +20900,11 @@ _ACEOF
 	CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC -DSMALL_CONFIG"
 fi
 
-if test x$AOT_SUPPORTED != xyes; then
-   AOT_SUPPORTED=no
-fi
-
 # Check whether --enable-system-aot was given.
 if test "${enable_system_aot+set}" = set; then
   enableval=$enable_system_aot; enable_system_aot=$enableval
 else
-  enable_system_aot=$AOT_SUPPORTED
+  enable_system_aot=default
 fi
 
 
@@ -20903,7 +20917,7 @@ if test "${enable_minimal+set}" = set; then
 		eval "mono_feature_disable_$feature='yes'"
 	done
 	DISABLED_FEATURES=$enable_minimal
-	disabled="Disabled:    $enable_minimal"
+	disabled="Disabled:      $enable_minimal"
 
 fi
 
@@ -21142,6 +21156,16 @@ _ACEOF
 $as_echo "$as_me: Disabled String normalization support." >&6;}
 fi
 
+if test "x$mono_feature_disable_assembly_remapping" = "xyes"; then
+
+cat >>confdefs.h <<\_ACEOF
+#define DISABLE_ASSEMBLY_REMAPPING 1
+_ACEOF
+
+	{ $as_echo "$as_me:$LINENO: Disabled Assembly remapping." >&5
+$as_echo "$as_me: Disabled Assembly remapping." >&6;}
+fi
+
 { $as_echo "$as_me:$LINENO: checking for visibility __attribute__" >&5
 $as_echo_n "checking for visibility __attribute__... " >&6; }
 cat >conftest.$ac_ext <<_ACEOF
@@ -23920,6 +23944,107 @@ fi
 done
 
 
+for ac_func in dladdr
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  eval "$as_ac_var=yes"
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	eval "$as_ac_var=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+		 $as_echo "$as_val"'`
+	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+		 $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
 for ac_func in sysconf
 do
 as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
@@ -24123,6 +24248,107 @@ fi
 done
 
 
+for ac_func in sched_getcpu
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  eval "$as_ac_var=yes"
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	eval "$as_ac_var=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+		 $as_echo "$as_val"'`
+	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+		 $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
 										{ $as_echo "$as_me:$LINENO: checking for sched_setaffinity from glibc < 2.3.4" >&5
 $as_echo_n "checking for sched_setaffinity from glibc < 2.3.4... " >&6; }
 	cat >conftest.$ac_ext <<_ACEOF
@@ -37843,6 +38069,107 @@ fi
 done
 
 
+for ac_func in execvp
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  eval "$as_ac_var=yes"
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	eval "$as_ac_var=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+		 $as_echo "$as_val"'`
+	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_var'}
+		 $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
 
 { $as_echo "$as_me:$LINENO: checking if usage of random device is requested" >&5
 $as_echo_n "checking if usage of random device is requested... " >&6; }
@@ -37857,7 +38184,7 @@ fi
 { $as_echo "$as_me:$LINENO: result: $try_dev_random" >&5
 $as_echo "$try_dev_random" >&6; }
 
-case "{$target}" in
+case "{$build}" in
     *-openbsd*)
     NAME_DEV_RANDOM="/dev/srandom"
     ;;
@@ -38281,6 +38608,13 @@ else
   enable_nacl_codegen=no
 fi
 
+# Check whether --enable-nacl_gc was given.
+if test "${enable_nacl_gc+set}" = set; then
+  enableval=$enable_nacl_gc; enable_nacl_gc=$enableval
+else
+  enable_nacl_gc=no
+fi
+
 
  if test x$enable_nacl_codegen != xno; then
   NACL_CODEGEN_TRUE=
@@ -38300,6 +38634,10 @@ _ACEOF
 
 else
    MONO_NACL_ALIGN_MASK_OFF=0
+   CPPFLAGS="$CPPFLAGS -D__default_codegen__"
+fi
+if test "x$enable_nacl_gc" = "xyes"; then
+   CPPFLAGS="$CPPFLAGS -finstrument-for-thread-suspension -D__native_client_gc__"
 fi
 
 
@@ -38562,7 +38900,11 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 		  haiku*)
 			LIBC=libroot.so
 			;;
-		  linux*|darwin*|openbsd*)
+		  linux*)
+			sgen_supported=true
+			AOT_SUPPORTED="yes"
+			;;
+		  darwin*|openbsd*|freebsd*)
 			sgen_supported=true
 		        ;;
 		esac
@@ -38573,10 +38915,24 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 		JIT_SUPPORTED=yes
 		jit_wanted=true
 		case $host_os in
-		  linux*|darwin*|openbsd*)
+		  linux*)
+			sgen_supported=true
+			AOT_SUPPORTED="yes"
+			;;
+		  darwin*|openbsd*|freebsd*)
 			sgen_supported=true
 			;;
 		esac
+		case "$host" in
+			x86_64-*-nacl*)
+
+cat >>confdefs.h <<\_ACEOF
+#define __mono_ilp32__ 1
+_ACEOF
+
+				sizeof_register=8
+				;;
+		esac
 		;;
 	ia64-*-*)
 		TARGET=IA64
@@ -38832,6 +39188,26 @@ _ACEOF
 		sizeof_register=8
 		target_byte_order=G_BIG_ENDIAN
 		;;
+   x86_64-*-nacl)
+		TARGET=AMD64
+		arch_target=amd64
+
+cat >>confdefs.h <<\_ACEOF
+#define TARGET_AMD64 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define MONO_CROSS_COMPILE 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define __mono_ilp32__ 1
+_ACEOF
+
+		sizeof_register=8
+		;;
 	*)
 		{ $as_echo "$as_me:$LINENO: WARNING: Cross compiling is only supported for targets matching 'powerpc64-{ps3,xbox360}-linux-gnu'" >&5
 $as_echo "$as_me: WARNING: Cross compiling is only supported for targets matching 'powerpc64-{ps3,xbox360}-linux-gnu'" >&2;}
@@ -38938,13 +39314,18 @@ _ACEOF
 
 fi
 
+if $sgen_supported; then
+   build_sgen_default=yes
+else
+   build_sgen_default=no
+fi
 SGEN_DEFINES=
 
 # Check whether --with-sgen was given.
 if test "${with_sgen+set}" = set; then
   withval=$with_sgen; buildsgen=$with_sgen
 else
-  buildsgen=yes
+  buildsgen=$build_sgen_default
 fi
 
 if test x$buildsgen = xyes; then
@@ -39363,6 +39744,11 @@ if test "x$try_mono_debugger" = "xyes"; then
 	fi
 fi
 
+# disable the debugger entirely when building with moonlight
+if test "x$with_moonlight" != "xno"; then
+	mono_debugger_supported=no
+fi
+
 { $as_echo "$as_me:$LINENO: checking if the Mono Debugger is supported on this platform" >&5
 $as_echo_n "checking if the Mono Debugger is supported on this platform... " >&6; }
 if test "x$mono_debugger_supported" = "xyes"; then
@@ -39524,6 +39910,10 @@ case "x$gc" in
 		if test x$TARGET = xSPARC -o x$TARGET = xSPARC64; then
 			LIBGC_CPPFLAGS=`echo $LIBGC_CPPFLAGS | sed -e 's/-D_FILE_OFFSET_BITS=64//g'`
 		fi
+		# Don't pass -finstrument-for-thread-suspension in,
+		# if these are instrumented it will be very bad news
+		# (infinite recursion, undefined parking behavior, etc)
+		LIBGC_CPPFLAGS=`echo $LIBGC_CPPFLAGS | sed -e 's/-finstrument-for-thread-suspension//g'`
 		ac_configure_args="$ac_configure_args --disable-embed-check --with-libgc-threads=$libgc_threads $libgc_configure_args \"CPPFLAGS_FOR_LIBGC=$LIBGC_CPPFLAGS\" \"CFLAGS_FOR_LIBGC=$CFLAGS_FOR_LIBGC\""
 		subdirs="$subdirs libgc"
 
@@ -39540,6 +39930,14 @@ else
 fi
 
 
+# Check whether --with-monodroid was given.
+if test "${with_monodroid+set}" = set; then
+  withval=$with_monodroid;
+else
+  with_monodroid=no
+fi
+
+
 # Check whether --with-monotouch was given.
 if test "${with_monotouch+set}" = set; then
   withval=$with_monotouch;
@@ -39602,32 +40000,38 @@ if test "${with_mcs_docs+set}" = set; then
 
 fi
 
+if test x$with_profile4 != xyes; then
+	DISABLE_MCS_DOCS=yes
+fi
 
+MOONLIGHT_DEFINES=
 
 # Check whether --with-moonlight was given.
 if test "${with_moonlight+set}" = set; then
   withval=$with_moonlight;
-	if test "x$with_moonlight" = "xyes"; then
+	if test x$with_moonlight != xno; then
+        MOONLIGHT_DEFINES="-DMOONLIGHT -DDISABLE_ASSEMBLY_REMAPPING "
+	fi
+
+else
+  with_moonlight=no
+fi
 
-cat >>confdefs.h <<\_ACEOF
-#define MOONLIGHT 1
-_ACEOF
 
-	elif test "x$with_moonlight" = "xonly"; then
 
-cat >>confdefs.h <<\_ACEOF
-#define MOONLIGHT 1
-_ACEOF
 
+# Check whether --with-moon_gc was given.
+if test "${with_moon_gc+set}" = set; then
+  withval=$with_moon_gc;
+	if test "x$with_moon_gc" != "xsgen"; then
+		with_moon_gc=boehm
 	fi
 
 else
-  with_moonlight=no
+  with_moon_gc=boehm
 fi
 
 
-
-
 if test "${ac_cv_header_malloc_h+set}" = set; then
   { $as_echo "$as_me:$LINENO: checking for malloc.h" >&5
 $as_echo_n "checking for malloc.h... " >&6; }
@@ -39805,6 +40209,23 @@ else
   ONLY_MOONLIGHT_FALSE=
 fi
 
+ if test "x$with_moon_gc" = "xboehm"; then
+  MOONLIGHT_BOEHM_TRUE=
+  MOONLIGHT_BOEHM_FALSE='#'
+else
+  MOONLIGHT_BOEHM_TRUE='#'
+  MOONLIGHT_BOEHM_FALSE=
+fi
+
+ if test "x$with_moon_gc" = "xsgen"; then
+  MOONLIGHT_SGEN_TRUE=
+  MOONLIGHT_SGEN_FALSE='#'
+else
+  MOONLIGHT_SGEN_TRUE='#'
+  MOONLIGHT_SGEN_FALSE=
+fi
+
+
  if test "x$with_profile4" = xyes; then
   INSTALL_4_0_TRUE=
   INSTALL_4_0_FALSE='#'
@@ -39813,6 +40234,14 @@ else
   INSTALL_4_0_FALSE=
 fi
 
+ if test "x$with_monodroid" = xyes; then
+  INSTALL_MONODROID_TRUE=
+  INSTALL_MONODROID_FALSE='#'
+else
+  INSTALL_MONODROID_TRUE='#'
+  INSTALL_MONODROID_FALSE=
+fi
+
  if test "x$with_monotouch" = xyes; then
   INSTALL_MONOTOUCH_TRUE=
   INSTALL_MONOTOUCH_FALSE='#'
@@ -40049,7 +40478,7 @@ if test x$enable_quiet_build = xyes; then
 
 fi
 
-ac_config_files="$ac_config_files Makefile mono-core.spec mono-uninstalled.pc scripts/mono-find-provides scripts/mono-find-requires mono/Makefile mono/utils/Makefile mono/metadata/Makefile mono/dis/Makefile mono/cil/Makefile mono/arch/Makefile mono/arch/x86/Makefile mono/arch/amd64/Makefile mono/arch/hppa/Makefile mono/arch/ppc/Makefile mono/arch/sparc/Makefile mono/arch/s390/Makefile mono/arch/s390x/Makefile mono/arch/arm/Makefile mono/arch/alpha/Makefile mono/arch/ia64/Makefile mono/arch/mips/Makefile mono/interpreter/Makefile mono/tests/Makefile mono/tests/tests-config mono/tests/assemblyresolve/Makefile mono/tests/cas/Makefile mono/tests/cas/assembly/Makefile mono/tests/cas/demand/Makefile mono/tests/cas/inheritance/Makefile mono/tests/cas/linkdemand/Makefile mono/tests/cas/threads/Makefile mono/benchmark/Makefile mono/monograph/Makefile mono/io-layer/Makefile mono/mini/Makefile mono/profiler/Makefile ikvm-native/Makefile scripts/Makefile man/Makefile web/Makefile docs/Makefile data/Makefile data/net_2_0/Makefile data/net_4_0/Makefile data/net_2_0/Browsers/Makefile data/mint.pc data/mono-2.pc data/mono.pc data/mono-cairo.pc data/mono-nunit.pc data/mono-options.pc data/mono-lineeditor.pc data/monodoc.pc data/mono.web.pc data/dotnet.pc data/dotnet35.pc data/wcf.pc data/cecil.pc data/system.web.extensions_1.0.pc data/system.web.extensions.design_1.0.pc data/system.web.mvc.pc data/system.web.mvc2.pc samples/Makefile support/Makefile data/config tools/Makefile tools/locale-builder/Makefile tools/sgen/Makefile runtime/Makefile msvc/Makefile po/Makefile"
+ac_config_files="$ac_config_files Makefile mono-core.spec mono-uninstalled.pc scripts/mono-find-provides scripts/mono-find-requires mono/Makefile mono/utils/Makefile mono/metadata/Makefile mono/dis/Makefile mono/cil/Makefile mono/arch/Makefile mono/arch/x86/Makefile mono/arch/amd64/Makefile mono/arch/hppa/Makefile mono/arch/ppc/Makefile mono/arch/sparc/Makefile mono/arch/s390/Makefile mono/arch/s390x/Makefile mono/arch/arm/Makefile mono/arch/alpha/Makefile mono/arch/ia64/Makefile mono/arch/mips/Makefile mono/interpreter/Makefile mono/tests/Makefile mono/tests/tests-config mono/tests/assemblyresolve/Makefile mono/tests/cas/Makefile mono/tests/cas/assembly/Makefile mono/tests/cas/demand/Makefile mono/tests/cas/inheritance/Makefile mono/tests/cas/linkdemand/Makefile mono/tests/cas/threads/Makefile mono/benchmark/Makefile mono/monograph/Makefile mono/io-layer/Makefile mono/mini/Makefile mono/profiler/Makefile ikvm-native/Makefile scripts/Makefile man/Makefile docs/Makefile data/Makefile data/net_2_0/Makefile data/net_4_0/Makefile data/net_2_0/Browsers/Makefile data/mint.pc data/mono-2.pc data/mono.pc data/mono-cairo.pc data/mono-nunit.pc data/mono-options.pc data/mono-lineeditor.pc data/monodoc.pc data/mono.web.pc data/dotnet.pc data/dotnet35.pc data/wcf.pc data/cecil.pc data/system.web.extensions_1.0.pc data/system.web.extensions.design_1.0.pc data/system.web.mvc.pc data/system.web.mvc2.pc samples/Makefile support/Makefile data/config tools/Makefile tools/locale-builder/Makefile tools/sgen/Makefile runtime/Makefile msvc/Makefile po/Makefile"
 
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
@@ -40274,6 +40703,13 @@ $as_echo "$as_me: error: conditional \"STATIC_MONO\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
+if test -z "${SHARED_MONO_TRUE}" && test -z "${SHARED_MONO_FALSE}"; then
+  { { $as_echo "$as_me:$LINENO: error: conditional \"SHARED_MONO\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"SHARED_MONO\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
 if test -z "${DISABLE_PROFILER_TRUE}" && test -z "${DISABLE_PROFILER_FALSE}"; then
   { { $as_echo "$as_me:$LINENO: error: conditional \"DISABLE_PROFILER\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
@@ -40379,6 +40815,20 @@ $as_echo "$as_me: error: conditional \"ONLY_MOONLIGHT\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
+if test -z "${MOONLIGHT_BOEHM_TRUE}" && test -z "${MOONLIGHT_BOEHM_FALSE}"; then
+  { { $as_echo "$as_me:$LINENO: error: conditional \"MOONLIGHT_BOEHM\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"MOONLIGHT_BOEHM\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${MOONLIGHT_SGEN_TRUE}" && test -z "${MOONLIGHT_SGEN_FALSE}"; then
+  { { $as_echo "$as_me:$LINENO: error: conditional \"MOONLIGHT_SGEN\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"MOONLIGHT_SGEN\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
 if test -z "${INSTALL_4_0_TRUE}" && test -z "${INSTALL_4_0_FALSE}"; then
   { { $as_echo "$as_me:$LINENO: error: conditional \"INSTALL_4_0\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
@@ -40386,6 +40836,13 @@ $as_echo "$as_me: error: conditional \"INSTALL_4_0\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
+if test -z "${INSTALL_MONODROID_TRUE}" && test -z "${INSTALL_MONODROID_FALSE}"; then
+  { { $as_echo "$as_me:$LINENO: error: conditional \"INSTALL_MONODROID\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"INSTALL_MONODROID\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
 if test -z "${INSTALL_MONOTOUCH_TRUE}" && test -z "${INSTALL_MONOTOUCH_FALSE}"; then
   { { $as_echo "$as_me:$LINENO: error: conditional \"INSTALL_MONOTOUCH\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
@@ -41457,7 +41914,6 @@ do
     "ikvm-native/Makefile") CONFIG_FILES="$CONFIG_FILES ikvm-native/Makefile" ;;
     "scripts/Makefile") CONFIG_FILES="$CONFIG_FILES scripts/Makefile" ;;
     "man/Makefile") CONFIG_FILES="$CONFIG_FILES man/Makefile" ;;
-    "web/Makefile") CONFIG_FILES="$CONFIG_FILES web/Makefile" ;;
     "docs/Makefile") CONFIG_FILES="$CONFIG_FILES docs/Makefile" ;;
     "data/Makefile") CONFIG_FILES="$CONFIG_FILES data/Makefile" ;;
     "data/net_2_0/Makefile") CONFIG_FILES="$CONFIG_FILES data/net_2_0/Makefile" ;;
@@ -43562,7 +44018,16 @@ fi
       echo "PLATFORM = darwin" >> $mcs_topdir/build/config.make
     fi
 
-    if test x$host_win32 = xno -a x$platform_darwin != xyes -a "x$AOT_SUPPORTED" = "xyes" -a x$enable_system_aot = xyes; then
+	if test x$AOT_SUPPORTED = xyes -a x$enable_system_aot = xdefault; then
+	   enable_system_aot=yes
+	fi
+
+	if test "x$enable_loadedllvm" = "xyes"; then
+	   # This seems to fail on the x86 buildbots
+	   enable_system_aot=no
+	fi
+
+    if test x$host_win32 = xno -a x$platform_darwin != xyes -a x$enable_system_aot = xyes; then
       echo "ENABLE_AOT = 1" >> $mcs_topdir/build/config.make
     fi
 
@@ -43613,7 +44078,8 @@ echo "
 	LLVM Back End: $enable_llvm (dynamically loaded: $enable_loadedllvm)
 
     Libraries:
-	Moon Profile:  $with_moonlight
+	Moon Profile:  $with_moonlight ($with_moon_gc)
+	MonoDroid:     $with_monodroid
 	MonoTouch:     $with_monotouch
 	JNI support:   $jdk_headers_found
 	libgdiplus:    $libgdiplus_msg
diff --git a/configure.in b/configure.in
index 4c0d4cb..11b47dc 100644
--- a/configure.in
+++ b/configure.in
@@ -6,7 +6,7 @@ AC_CANONICAL_SYSTEM
 m4_ifdef([_A][M_PROG_TAR],[_A][M_SET_OPTION([tar-ustar])])
 
 AM_CONFIG_HEADER(config.h)
-AM_INIT_AUTOMAKE(mono,2.8.1)
+AM_INIT_AUTOMAKE(mono,2.10)
 AM_MAINTAINER_MODE
 
 API_VER=2.0
@@ -86,7 +86,7 @@ case "$host" in
 		host_win32=yes
 		if test "x$cross_compiling" = "xno"; then
 			target_win32=yes
-			if test "x$host" == "x$target"; then
+			if test "x$host" == "x$build"; then
 				AC_DEFINE(TARGET_WIN32,1,[Target OS is Win32])
 			fi
 			CC="gcc -mno-cygwin -g"
@@ -94,6 +94,7 @@ case "$host" in
 			# So libgc configure gets -mno-cygwin
 			export CC
 			export CXX
+			CFLAGS_FOR_EGLIB="$CFLAGS_FOR_EGLIB -mno-cygwin"
 		else
 			target_win32=yes
 			AC_DEFINE(TARGET_WIN32,1,[Target OS is Win32/MinGW])
@@ -180,7 +181,6 @@ case "$host" in
 		libmono_cflags="-D_REENTRANT"
 		libdl="-ldl"
 		libgc_threads=pthreads
-		AOT_SUPPORTED="yes"
 		use_sigposix=yes
 		;;
 	*-*-nacl*)
@@ -192,11 +192,11 @@ case "$host" in
 		libmono_cflags="-D_REENTRANT"
 		libdl=
 		libgc_threads=pthreads
-		AOT_SUPPORTED="yes"
 		gc_default=boehm
 		use_sigposix=yes
 		ikvm_native=no
 		AC_DEFINE(DISABLE_SOCKETS,1,[Disable sockets support])
+		AC_DEFINE(DISABLE_ATTACH, 1, [Disable agent attach support])
 		;;
 	*-*-hpux*)
 	        host_win32=no
@@ -379,15 +379,15 @@ AC_CHECK_HEADERS(sys/user.h, [], [],
 AC_CHECK_HEADER(zlib.h, [have_zlib=yes], [have_zlib=no])
 if test x$have_zlib = xyes; then
    AC_TRY_COMPILE([#include <zlib.h>], [
-   void main () {
    #if defined(ZLIB_VERNUM) && (ZLIB_VERNUM >= 0x1230)
-   }
+   return 0;
    #else
    #error No good zlib found
    #endif
    ],[
 	AC_MSG_RESULT(Using system zlib)
 	zlib_msg="system zlib"
+	AC_DEFINE(HAVE_SYS_ZLIB,1,[Have system zlib])
    ],[
 	AC_MSG_RESULT(Using embedded zlib)
 	have_zlib=no
@@ -591,27 +591,6 @@ AC_SUBST(GMODULE_LIBS)
 AC_SUBST(BUILD_GLIB_CFLAGS)
 AC_SUBST(BUILD_GLIB_LIBS)
 
-if test x$cross_compiling$host_win32 = xnoyes; then
-   AC_MSG_CHECKING(for cygwin glib2-dev package)
-   if [ cygcheck --f /usr/lib/libglib-2.0.dll.a | grep -q glib2-devel ]; then
-      AC_MSG_RESULT(found)
-	  AC_MSG_ERROR([Mono cannot be built with the cygwin glib2-devel package installed, because that package doesn't work with -mno-cygwin. Please uninstall it then re-run configure.])
-   else
-      AC_MSG_RESULT(not found, ok)
-   fi
-
-   AC_MSG_CHECKING(for broken gwin32.h)
-   glib_include=`$PKG_CONFIG --cflags-only-I glib-2.0 | sed -e 's/ -I.*//g' | sed -e 's/-I//g'`
-   if test -f $glib_include/glib/gwin32.h; then
-	  if [ grep ftruncate $glib_include/glib/gwin32.h | grep -q define ]; then
-		 AC_MSG_RESULT(failed)
-		 hashmark='#'
-		 AC_MSG_ERROR([Your version of gwin32.h is broken and will cause compilation errors when building mono. Please fix it by deleting the line: '$hashmark   define ftruncate...' from '$glib_include/glib/gwin32.h' then re-run configure.])
-	  fi
-   fi
-   AC_MSG_RESULT(ok)
-fi
-
 AC_ARG_WITH(gc,   [  --with-gc=boehm,included,none  Controls the Boehm GC config, default=included],[gc=$with_gc],[gc=$gc_default])
 
 # Enable support for fast thread-local storage
@@ -623,17 +602,27 @@ AC_ARG_WITH(tls, [  --with-tls=__thread,pthread    select Thread Local Storage i
 AC_ARG_WITH(sigaltstack, [  --with-sigaltstack=yes,no      enable/disable support for sigaltstack (defaults to yes)],[],[with_sigaltstack=yes])
 
 AC_ARG_WITH(static_mono, [  --with-static_mono=yes,no      link mono statically to libmono (faster) (defaults to yes)],[],[with_static_mono=yes])
+AC_ARG_WITH(shared_mono, [  --with-shared_mono=yes,no      build a shared libmono library (defaults to yes)],[],[with_shared_mono=yes])
 
 if test "x$enable_static" = "xno"; then
    with_static_mono=no
 fi
 
+if test "x$enable_shared" = "xno"; then
+   with_shared_mono=no
+fi
+
+case $host in
+*nacl* ) with_shared_mono=yes;;
+esac
+
 if test "x$host_win32" = "xyes"; then
    # Boehm GC requires the runtime to be in its own dll
    with_static_mono=no
 fi
 
 AM_CONDITIONAL(STATIC_MONO, test x$with_static_mono != xno)
+AM_CONDITIONAL(SHARED_MONO, test x$with_shared_mono != xno)
 AC_ARG_ENABLE(mcs-build, [  --disable-mcs-build disable the build of the mcs directory], try_mcs_build=$enableval, enable_mcs_build=yes)
 
 AC_ARG_WITH(xen_opt,   [  --with-xen_opt=yes,no          Enable Xen-specific behaviour (defaults to yes)],[],[with_xen_opt=yes])
@@ -662,23 +651,19 @@ if test x$enable_small_config = xyes; then
 	CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC -DSMALL_CONFIG"
 fi
 
-if test x$AOT_SUPPORTED != xyes; then
-   AOT_SUPPORTED=no
-fi
-
-AC_ARG_ENABLE(system-aot, [  --enable-system-aot  Enable the Ahead-Of-Time compilation of system assemblies during the build (on by default on some platforms)], enable_system_aot=$enableval, enable_system_aot=$AOT_SUPPORTED)
+AC_ARG_ENABLE(system-aot, [  --enable-system-aot  Enable the Ahead-Of-Time compilation of system assemblies during the build (on by default on some platforms)], enable_system_aot=$enableval, enable_system_aot=default)
 
 DISABLED_FEATURES=none
 
 AC_ARG_ENABLE(minimal, [  --enable-minimal=LIST      drop support for LIST subsystems.
      LIST is a comma-separated list from: aot, profiler, decimal, pinvoke, debug,
-     reflection_emit, reflection_emit_save, large_code, logging, com, ssa, generics, attach, jit, simd, soft_debug, normalization.],
+     reflection_emit, reflection_emit_save, large_code, logging, com, ssa, generics, attach, jit, simd, soft_debug, normalization, assembly_remapping.],
 [
 	for feature in `echo "$enable_minimal" | sed -e "s/,/ /g"`; do
 		eval "mono_feature_disable_$feature='yes'"
 	done
 	DISABLED_FEATURES=$enable_minimal
-	disabled="Disabled:    $enable_minimal"
+	disabled="Disabled:      $enable_minimal"
 ],[])
 
 AC_DEFINE_UNQUOTED(DISABLED_FEATURES, "$DISABLED_FEATURES", [String of disabled features])
@@ -792,6 +777,11 @@ if test "x$mono_feature_disable_normalization" = "xyes"; then
 	AC_MSG_NOTICE([Disabled String normalization support.])
 fi
 
+if test "x$mono_feature_disable_assembly_remapping" = "xyes"; then
+	AC_DEFINE(DISABLE_ASSEMBLY_REMAPPING, 1, [Disable assembly remapping.])
+	AC_MSG_NOTICE([Disabled Assembly remapping.])
+fi
+
 AC_MSG_CHECKING(for visibility __attribute__)
 AC_TRY_COMPILE([], [
    void __attribute__ ((visibility ("hidden"))) doit (void) {}
@@ -999,9 +989,11 @@ if test x$target_win32 = xno; then
 	AC_CHECK_FUNCS(getpriority)
 	AC_CHECK_FUNCS(setpriority)
 	AC_CHECK_FUNCS(dl_iterate_phdr)
+	AC_CHECK_FUNCS(dladdr)
 	AC_CHECK_FUNCS(sysconf)
 
 	AC_CHECK_FUNCS(sched_setaffinity)
+	AC_CHECK_FUNCS(sched_getcpu)
 
 	dnl ****************************************************************
 	dnl *** Check for sched_setaffinity from glibc versions before   ***
@@ -1837,6 +1829,7 @@ fi
 
 AC_CHECK_FUNCS(round)
 AC_CHECK_FUNCS(rint)
+AC_CHECK_FUNCS(execvp)
 
 dnl ****************************
 dnl *** Look for /dev/random ***
@@ -1849,7 +1842,7 @@ try_dev_random=$enableval, try_dev_random=yes)
 
 AC_MSG_RESULT($try_dev_random)
 
-case "{$target}" in
+case "{$build}" in
     *-openbsd*)
     NAME_DEV_RANDOM="/dev/srandom"
     ;;
@@ -1992,6 +1985,7 @@ dnl ***  NaCl  ***
 dnl **************
 
 AC_ARG_ENABLE(nacl_codegen, [  --enable-nacl-codegen      Enable Native Client code generation], enable_nacl_codegen=$enableval, enable_nacl_codegen=no)
+AC_ARG_ENABLE(nacl_gc, [  --enable-nacl-gc           Enable Native Client garbage collection], enable_nacl_gc=$enableval, enable_nacl_gc=no)
 
 AM_CONDITIONAL(NACL_CODEGEN, test x$enable_nacl_codegen != xno)
 if test "x$enable_nacl_codegen" = "xyes"; then
@@ -2000,6 +1994,10 @@ if test "x$enable_nacl_codegen" = "xyes"; then
    AC_DEFINE(TARGET_NACL, 1, [...])
 else
    MONO_NACL_ALIGN_MASK_OFF=0
+   CPPFLAGS="$CPPFLAGS -D__default_codegen__"
+fi
+if test "x$enable_nacl_gc" = "xyes"; then
+   CPPFLAGS="$CPPFLAGS -finstrument-for-thread-suspension -D__native_client_gc__"
 fi
 AC_SUBST(MONO_NACL_ALIGN_MASK_OFF)
 
@@ -2007,7 +2005,7 @@ dnl **************
 dnl ***  LLVM  ***
 dnl **************
 
-AC_ARG_ENABLE(llvm,[  --enable-llvm	Enable the experimental LLVM back-end], enable_llvm=$enableval, enable_llvm=no)
+AC_ARG_ENABLE(llvm,[  --enable-llvm	Enable the LLVM back-end], enable_llvm=$enableval, enable_llvm=no)
 AC_ARG_ENABLE(loadedllvm,[  --enable-loadedllvm	Load the LLVM back-end dynamically], enable_llvm=$enableval && enable_loadedllvm=$enableval, enable_loadedllvm=no)
 
 if test "x$enable_llvm" = "xyes"; then
@@ -2129,7 +2127,11 @@ case "$host" in
 		  haiku*)
 			LIBC=libroot.so
 			;;
-		  linux*|darwin*|openbsd*)
+		  linux*)
+			sgen_supported=true
+			AOT_SUPPORTED="yes"
+			;;
+		  darwin*|openbsd*|freebsd*)
 			sgen_supported=true
 		        ;;
 		esac
@@ -2140,10 +2142,20 @@ case "$host" in
 		JIT_SUPPORTED=yes
 		jit_wanted=true
 		case $host_os in
-		  linux*|darwin*|openbsd*)
+		  linux*)
+			sgen_supported=true
+			AOT_SUPPORTED="yes"
+			;;
+		  darwin*|openbsd*|freebsd*)
 			sgen_supported=true
 			;;
 		esac
+		case "$host" in
+			x86_64-*-nacl*)
+				AC_DEFINE(__mono_ilp32__, 1, [64 bit mode with 4 byte longs and pointers])
+				sizeof_register=8
+				;;
+		esac
 		;;
 	ia64-*-*)
 		TARGET=IA64
@@ -2295,6 +2307,14 @@ if test "x$host" != "x$target"; then
 		sizeof_register=8
 		target_byte_order=G_BIG_ENDIAN
 		;;
+   x86_64-*-nacl)
+		TARGET=AMD64
+		arch_target=amd64
+		AC_DEFINE(TARGET_AMD64, 1, [...])
+		AC_DEFINE(MONO_CROSS_COMPILE,1,[The runtime is compiled for cross-compiling mode])
+		AC_DEFINE(__mono_ilp32__, 1, [64 bit mode with 4 byte longs and pointers])
+		sizeof_register=8
+		;;
 	*)
 		AC_MSG_WARN([Cross compiling is only supported for targets matching 'powerpc64-{ps3,xbox360}-linux-gnu'])
 	esac
@@ -2347,8 +2367,13 @@ fi
 dnl 
 dnl Simple Generational checks (sgen)
 dnl
+if $sgen_supported; then
+   build_sgen_default=yes
+else
+   build_sgen_default=no
+fi
 SGEN_DEFINES=
-AC_ARG_WITH(sgen, [  --with-sgen=yes,no             Extra Generational GC, default=yes],[buildsgen=$with_sgen],[buildsgen=yes])
+AC_ARG_WITH(sgen, [  --with-sgen=yes,no             Extra Generational GC, default=yes],[buildsgen=$with_sgen],[buildsgen=$build_sgen_default])
 if test x$buildsgen = xyes; then
    if $sgen_supported; then
        SGEN_DEFINES="-DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -DHAVE_WRITE_BARRIERS"
@@ -2483,6 +2508,11 @@ if test "x$try_mono_debugger" = "xyes"; then
 	fi
 fi
 
+# disable the debugger entirely when building with moonlight
+if test "x$with_moonlight" != "xno"; then
+	mono_debugger_supported=no
+fi
+
 AC_MSG_CHECKING(if the Mono Debugger is supported on this platform)
 if test "x$mono_debugger_supported" = "xyes"; then
 	BOEHM_DEFINES="$BOEHM_DEFINES -DMONO_DEBUGGER_SUPPORTED"
@@ -2542,6 +2572,10 @@ case "x$gc" in
 		if test x$TARGET = xSPARC -o x$TARGET = xSPARC64; then
 			LIBGC_CPPFLAGS=`echo $LIBGC_CPPFLAGS | sed -e 's/-D_FILE_OFFSET_BITS=64//g'`
 		fi
+		# Don't pass -finstrument-for-thread-suspension in, 
+		# if these are instrumented it will be very bad news 
+		# (infinite recursion, undefined parking behavior, etc)
+		LIBGC_CPPFLAGS=`echo $LIBGC_CPPFLAGS | sed -e 's/-finstrument-for-thread-suspension//g'`
 		ac_configure_args="$ac_configure_args --disable-embed-check --with-libgc-threads=$libgc_threads $libgc_configure_args \"CPPFLAGS_FOR_LIBGC=$LIBGC_CPPFLAGS\" \"CFLAGS_FOR_LIBGC=$CFLAGS_FOR_LIBGC\""
 		AC_CONFIG_SUBDIRS(libgc)
 		;;
@@ -2549,7 +2583,8 @@ esac
 
 #AC_ARG_WITH(profile2,  [  --with-profile2=yes,no          If you want to install the 2.0 FX (defaults to yes)],                 [], [with_profile2=yes])
 AC_ARG_WITH(profile4,  [  --with-profile4=yes,no          If you want to install the 4.0 FX (defaults to yes)],                  [], [with_profile4=yes])
-AC_ARG_WITH(monotouch, [  --with-monotouch=yes,no         If you want to build the raw MonoTouch 2.1 assemblies (defaults to no)], [], [with_monotouch=no])
+AC_ARG_WITH(monodroid, [  --with-monodroid=yes,no         If you want to build the MonoDroid 2.1 assemblies (defaults to no)], [], [with_monodroid=no])
+AC_ARG_WITH(monotouch, [  --with-monotouch=yes,no         If you want to build the MonoTouch 2.1 assemblies (defaults to no)], [], [with_monotouch=no])
 
 OPROFILE=no
 AC_ARG_WITH(oprofile,[  --with-oprofile=no,<oprofile install dir>   Enable oprofile support (defaults to no)],[
@@ -2580,16 +2615,23 @@ AC_ARG_WITH(mcs_docs,[  --with-mcs-docs=yes,no         If you want to build the
 		DISABLE_MCS_DOCS=yes
 	fi
 ])
+if test x$with_profile4 != xyes; then
+	DISABLE_MCS_DOCS=yes
+fi
 
+MOONLIGHT_DEFINES=
 AC_ARG_WITH(moonlight, [  --with-moonlight=yes|no|only         If you want to build Mono for Moonlight (defaults to no)],[
-	if test "x$with_moonlight" = "xyes"; then
-		AC_DEFINE(MOONLIGHT,1,[Building for Moonlight])
-	elif test "x$with_moonlight" = "xonly"; then
-		AC_DEFINE(MOONLIGHT,1,[Building for Moonlight])
+	if test x$with_moonlight != xno; then
+        MOONLIGHT_DEFINES="-DMOONLIGHT -DDISABLE_ASSEMBLY_REMAPPING "
 	fi
 ], [with_moonlight=no])
+AC_SUBST(MOONLIGHT_DEFINES)
 
-
+AC_ARG_WITH(moon_gc, [  --with-moon-gc=boehm,sgen		Select the gc to use with Moonlight (defaults to boehm)],[
+	if test "x$with_moon_gc" != "xsgen"; then
+		with_moon_gc=boehm
+	fi
+], [with_moon_gc=boehm])
 
 AC_CHECK_HEADER([malloc.h], 
 		[AC_DEFINE([HAVE_USR_INCLUDE_MALLOC_H], [1], 
@@ -2617,7 +2659,11 @@ libmono_ldflags="$libmono_ldflags $LIBS"
 
 AM_CONDITIONAL(MOONLIGHT, [test "x$with_moonlight" != "xno"])
 AM_CONDITIONAL(ONLY_MOONLIGHT, [test "x$with_moonlight" = "xonly"])
+AM_CONDITIONAL(MOONLIGHT_BOEHM, [test "x$with_moon_gc" = "xboehm"])
+AM_CONDITIONAL(MOONLIGHT_SGEN, [test "x$with_moon_gc" = "xsgen"])
+
 AM_CONDITIONAL(INSTALL_4_0, [test "x$with_profile4" = xyes])
+AM_CONDITIONAL(INSTALL_MONODROID, [test "x$with_monodroid" = xyes])
 AM_CONDITIONAL(INSTALL_MONOTOUCH, [test "x$with_monotouch" = xyes])
 
 AM_CONDITIONAL(MIPS_GCC, test ${TARGET}${ac_cv_prog_gcc} = MIPSyes)
@@ -2823,7 +2869,6 @@ mono/profiler/Makefile
 ikvm-native/Makefile
 scripts/Makefile
 man/Makefile
-web/Makefile
 docs/Makefile
 data/Makefile
 data/net_2_0/Makefile
@@ -2914,7 +2959,16 @@ fi
       echo "PLATFORM = darwin" >> $mcs_topdir/build/config.make
     fi
 
-    if test x$host_win32 = xno -a x$platform_darwin != xyes -a "x$AOT_SUPPORTED" = "xyes" -a x$enable_system_aot = xyes; then
+	if test x$AOT_SUPPORTED = xyes -a x$enable_system_aot = xdefault; then
+	   enable_system_aot=yes
+	fi
+
+	if test "x$enable_loadedllvm" = "xyes"; then
+	   # This seems to fail on the x86 buildbots
+	   enable_system_aot=no
+	fi
+
+    if test x$host_win32 = xno -a x$platform_darwin != xyes -a x$enable_system_aot = xyes; then
       echo "ENABLE_AOT = 1" >> $mcs_topdir/build/config.make
     fi
 
@@ -2965,7 +3019,8 @@ echo "
 	LLVM Back End: $enable_llvm (dynamically loaded: $enable_loadedllvm)
 
     Libraries:
-	Moon Profile:  $with_moonlight
+	Moon Profile:  $with_moonlight ($with_moon_gc)
+	MonoDroid:     $with_monodroid
 	MonoTouch:     $with_monotouch
 	JNI support:   $jdk_headers_found
 	libgdiplus:    $libgdiplus_msg
diff --git a/data/ChangeLog b/data/ChangeLog
index 4e91007..a991ea8 100644
--- a/data/ChangeLog
+++ b/data/ChangeLog
@@ -1,9 +1,27 @@
+2010-12-01  Jonathan Pryor  <jonpryor at vt.edu>
+
+	Add response file suport to Mono.Options.
+
+	Response file support is an "opt-in" feature, performed by adding
+	a ResponseFileSource to the OptionSet initialization logic:
+
+	var p = new OptionSet () { // normal options here... new
+	ResponseFileSource (), };
+
+	Response files make use of the new "ArgumentSource" support, which
+	acts as a low-level argument pre-processor, allowing processing of
+	arguments _before_ Option processing is performed.
+
 2010-11-02  Andrew Jorgensen  <ajorgensen at novell.com>
 
 	Map libcups for mac
 
 	Fixes bnc#649994
 
+2010-10-22  Jb Evain  <jbevain at gmail.com>
+
+	update cecil.pc
+
 2010-08-30  Andrew Jorgensen  <ajorgensen at novell.com>
 
 	Remove obsolete Microsoft.Vsa and Microsoft.JScript
diff --git a/data/Makefile.in b/data/Makefile.in
index a6c73d3..fd59878 100644
--- a/data/Makefile.in
+++ b/data/Makefile.in
@@ -175,6 +175,7 @@ MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
 MONO_DL_NEED_USCORE = @MONO_DL_NEED_USCORE@
 MONO_NACL_ALIGN_MASK_OFF = @MONO_NACL_ALIGN_MASK_OFF@
+MOONLIGHT_DEFINES = @MOONLIGHT_DEFINES@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
diff --git a/data/cecil.pc.in b/data/cecil.pc.in
index 768bc46..067872a 100644
--- a/data/cecil.pc.in
+++ b/data/cecil.pc.in
@@ -1,5 +1,5 @@
 assemblies_dir=@prefix@/lib/mono
-Libraries=${assemblies_dir}/gac/Mono.Cecil/0.6.9.0__0738eb9f132ed756/Mono.Cecil.dll
+Libraries=${assemblies_dir}/gac/Mono.Cecil/0.9.4.0__0738eb9f132ed756/Mono.Cecil.dll
 
 Name: Mono Internal -- Do not use.
 Description: Mono Internal Libraries -- Do not use 
diff --git a/data/mono-options.pc.in b/data/mono-options.pc.in
index 028ff76..8c56982 100644
--- a/data/mono-options.pc.in
+++ b/data/mono-options.pc.in
@@ -4,4 +4,4 @@ Sources=${assemblies_dir}/Options.cs
 
 Name: Mono.Options
 Description: Command Line Parsing Library
-Version: 0.2.1
+Version: 0.2.2
diff --git a/data/net_2_0/Browsers/Makefile.in b/data/net_2_0/Browsers/Makefile.in
index ec5028b..ee847e2 100644
--- a/data/net_2_0/Browsers/Makefile.in
+++ b/data/net_2_0/Browsers/Makefile.in
@@ -143,6 +143,7 @@ MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
 MONO_DL_NEED_USCORE = @MONO_DL_NEED_USCORE@
 MONO_NACL_ALIGN_MASK_OFF = @MONO_NACL_ALIGN_MASK_OFF@
+MOONLIGHT_DEFINES = @MOONLIGHT_DEFINES@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
diff --git a/data/net_2_0/ChangeLog b/data/net_2_0/ChangeLog
index d925a1e..18e0ca0 100644
--- a/data/net_2_0/ChangeLog
+++ b/data/net_2_0/ChangeLog
@@ -1,3 +1,9 @@
+2010-11-19  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Web service help fix
+
+	Generate the wsdl document with UTF8 encoding.
+
 2009-08-11 Gonzalo Paniagua Javier <gonzalo at novell.com>
 
 	* DefaultWsdlHelpGenerator.aspx: the 'Message Layout' can now handle
diff --git a/data/net_2_0/ChangeLog b/data/net_2_0/ChangeLog.old
similarity index 100%
copy from data/net_2_0/ChangeLog
copy to data/net_2_0/ChangeLog.old
diff --git a/data/net_2_0/DefaultWsdlHelpGenerator.aspx b/data/net_2_0/DefaultWsdlHelpGenerator.aspx
index 4750b01..f4d74bf 100644
--- a/data/net_2_0/DefaultWsdlHelpGenerator.aspx
+++ b/data/net_2_0/DefaultWsdlHelpGenerator.aspx
@@ -474,10 +474,15 @@ private CodeDomProvider GetProvider(string langId)
 //
 // Document generation
 //
+class UTF8StringWriter : StringWriter {
+	public override Encoding Encoding {
+		get { return Encoding.UTF8; }
+	}
+}
 
 string GenerateDocument ()
 {
-	StringWriter sw = new StringWriter ();
+	UTF8StringWriter sw = new UTF8StringWriter ();
 	
 	if (CurrentDocType == "wsdl")
 		descriptions [CurrentDocInd].Write (sw);
diff --git a/data/net_2_0/Makefile.in b/data/net_2_0/Makefile.in
index 6fdf4bb..8617020 100644
--- a/data/net_2_0/Makefile.in
+++ b/data/net_2_0/Makefile.in
@@ -155,6 +155,7 @@ MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
 MONO_DL_NEED_USCORE = @MONO_DL_NEED_USCORE@
 MONO_NACL_ALIGN_MASK_OFF = @MONO_NACL_ALIGN_MASK_OFF@
+MOONLIGHT_DEFINES = @MOONLIGHT_DEFINES@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
diff --git a/data/net_4_0/ChangeLog b/data/net_4_0/ChangeLog
index 8c3088f..e431d5e 100644
--- a/data/net_4_0/ChangeLog
+++ b/data/net_4_0/ChangeLog
@@ -1,6 +1,28 @@
+2010-12-13  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] .NET 4.0 declares the <system.web.extensions> section in
+	machine.config
+
+2010-11-19  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Web service help fix
+
+	Generate the wsdl document with UTF8 encoding.
+
+2010-09-18  Atsushi Eno  <atsushi at ximian.com>
+
+	ProtocolMapping needed config section, default items and support
+	in ServiceHostBase.
+
 2010-09-17  Atsushi Eno  <atsushi at ximian.com>
 
-	Add working .svc handler in 4.0 web.config.
+	Add working .svc handler in 4.0 web.config, fix standard endpoint
+	handling and get xsp4 working.
+
+2010-09-13  Atsushi Eno  <atsushi at ximian.com>
+
+	implemented large parts of WCF standard endpoints and
+	configuration support.
 
 2010-09-07  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
 
diff --git a/data/net_4_0/DefaultWsdlHelpGenerator.aspx b/data/net_4_0/DefaultWsdlHelpGenerator.aspx
index 4750b01..f4d74bf 100644
--- a/data/net_4_0/DefaultWsdlHelpGenerator.aspx
+++ b/data/net_4_0/DefaultWsdlHelpGenerator.aspx
@@ -474,10 +474,15 @@ private CodeDomProvider GetProvider(string langId)
 //
 // Document generation
 //
+class UTF8StringWriter : StringWriter {
+	public override Encoding Encoding {
+		get { return Encoding.UTF8; }
+	}
+}
 
 string GenerateDocument ()
 {
-	StringWriter sw = new StringWriter ();
+	UTF8StringWriter sw = new UTF8StringWriter ();
 	
 	if (CurrentDocType == "wsdl")
 		descriptions [CurrentDocInd].Write (sw);
diff --git a/data/net_4_0/Makefile.in b/data/net_4_0/Makefile.in
index ae37eae..0c9f142 100644
--- a/data/net_4_0/Makefile.in
+++ b/data/net_4_0/Makefile.in
@@ -155,6 +155,7 @@ MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
 MONO_DL_NEED_USCORE = @MONO_DL_NEED_USCORE@
 MONO_NACL_ALIGN_MASK_OFF = @MONO_NACL_ALIGN_MASK_OFF@
+MOONLIGHT_DEFINES = @MOONLIGHT_DEFINES@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
diff --git a/data/net_4_0/machine.config b/data/net_4_0/machine.config
index e191241..6e6db73 100644
--- a/data/net_4_0/machine.config
+++ b/data/net_4_0/machine.config
@@ -62,6 +62,17 @@
 			</sectionGroup>
 			<section name="monoSettings" type="System.Web.Configuration.MonoSettingsSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
 		</sectionGroup>
+		<sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
+			<sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
+				<section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
+				<sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
+					<section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="Everywhere"/>
+					<section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
+					<section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
+					<section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
+				</sectionGroup>
+			</sectionGroup>
+		</sectionGroup>
 		<sectionGroup name="system.net" type="System.Net.Configuration.NetSectionGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
 			<section name="authenticationModules" type="System.Net.Configuration.AuthenticationModulesSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
 			<section name="connectionManagement" type="System.Net.Configuration.ConnectionManagementSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
@@ -83,6 +94,9 @@
 			<section name="extensions" type="System.ServiceModel.Configuration.ExtensionsSection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
 			<section name="serviceHostingEnvironment" type="System.ServiceModel.Configuration.ServiceHostingEnvironmentSection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
 			<section name="services" type="System.ServiceModel.Configuration.ServicesSection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+			<section name="standardEndpoints" type="System.ServiceModel.Configuration.StandardEndpointsSection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
+			<section name="routing" type="System.ServiceModel.Routing.Configuration.RoutingSection, System.ServiceModel.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
+			<section name="protocolMapping" type="System.ServiceModel.Configuration.ProtocolMappingSection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
 		</sectionGroup>
 		<section name="system.webServer" type="System.Configuration.IgnoreSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
 		<section name="uri" type="System.Configuration.UriSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
@@ -272,6 +286,15 @@
 			<bindingExtensions>
 				<add name="webHttpBinding" type="System.ServiceModel.Configuration.WebHttpBindingCollectionElement, System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
 			</bindingExtensions>
+			<endpointExtensions>
+				<add name="dynamicEndpoint" type="System.ServiceModel.Discovery.Configuration.DynamicEndpointCollectionElement, System.ServiceModel.Discovery, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
+				<add name="discoveryEndpoint" type="System.ServiceModel.Discovery.Configuration.DiscoveryEndpointCollectionElement, System.ServiceModel.Discovery, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
+				<add name="udpDiscoveryEndpoint" type="System.ServiceModel.Discovery.Configuration.UdpDiscoveryEndpointCollectionElement, System.ServiceModel.Discovery, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
+				<add name="announcementEndpoint" type="System.ServiceModel.Discovery.Configuration.AnnouncementEndpointCollectionElement, System.ServiceModel.Discovery, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
+				<add name="udpAnnouncementEndpoint" type="System.ServiceModel.Discovery.Configuration.UdpAnnouncementEndpointCollectionElement, System.ServiceModel.Discovery, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
+				<add name="webHttpEndpoint" type="System.ServiceModel.Configuration.WebHttpEndpointCollectionElement, System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
+				<add name="webScriptEndpoint" type="System.ServiceModel.Configuration.WebScriptEndpointCollectionElement, System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
+			</endpointExtensions>
 		</extensions>
 	</system.serviceModel>
 </configuration>
diff --git a/docs/Makefile.in b/docs/Makefile.in
index a9c8c70..4dde034 100644
--- a/docs/Makefile.in
+++ b/docs/Makefile.in
@@ -144,6 +144,7 @@ MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
 MONO_DL_NEED_USCORE = @MONO_DL_NEED_USCORE@
 MONO_NACL_ALIGN_MASK_OFF = @MONO_NACL_ALIGN_MASK_OFF@
+MOONLIGHT_DEFINES = @MOONLIGHT_DEFINES@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
diff --git a/eglib/ChangeLog b/eglib/ChangeLog
index 3a4e1e5..f66a9e2 100644
--- a/eglib/ChangeLog
+++ b/eglib/ChangeLog
@@ -1,3 +1,96 @@
+2011-01-11  Christian Hergert  <chris at dronelabs.com>
+
+	Fix broken g_int_hash/g_int_equal semantics
+
+	Both g_int_hash and g_int_equal used the semantics that an integer
+	is stored directly in the pointer. This is incorrect as the
+	pointer actually points to a location containing an integer.
+
+	For those wanting the previous (incorrect) implementation, they
+	should look at g_direct_hash and g_direct_equal.
+
+2011-01-08  Miguel de Icaza  <miguel at gnome.org>
+
+	[eglib] Another bug fix for g_shell_parse
+
+	We do not create a new string after a quotation, unless the next
+	character after a closing quote is a space. This allows parsing
+	the string: "foo","bar"
+
+	As: foo,bar
+
+	This fixes #655896
+
+	1# Explicit paths specified without -i nor -o; assuming --only
+	paths...
+
+2011-01-08  Miguel de Icaza  <miguel at gnome.org>
+
+	[eglib] Add more tests for the g_shell_parse
+
+2011-01-07  Marek Safar  <marek.safar at gmail.com>
+
+	Ignore more files
+
+2010-12-22  Geoff Norton  <grompf at sublimeintervention.com>
+
+	Add some missing files needed for windows to the tarball
+
+2010-12-02  Zoltan Varga  <vargaz at gmail.com>
+
+	Include alloca.h into glib.h if needed.
+
+2010-11-22  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix g_hash_table_remove_all ().
+
+2010-11-18  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Fix g_dir_open et al for windows.
+
+	This was using the *A functiones instead of the *W ones and
+	passing in UTF16. It was also opening and closing the directory
+	just to check that it was there and then open it again !?.
+
+	Fixes bug #645189.
+
+2010-11-17  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	User name and home directory initialization
+
+	User name and home directory are initialized at the same time from
+	the information in /etc/passwd if possible.
+
+2010-11-17  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Get the user name from the UID not the USER env
+
+	Fixes bug #653564.
+
+2010-11-14  Zoltan Varga  <vargaz at gmail.com>
+
+	Remove the unused and incomplete CMake build scripts for now.
+
+2010-11-12  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix the definition of G_BREAKPOINT on x86 when cross compiling.
+
+2010-11-12  Zoltan Varga  <vargaz at gmail.com>
+
+	Use dolt for eglib too.
+
+2010-11-09  Geoff Norton  <grompf at sublimeintervention.com>
+
+	[OSX] Disabled eglib tests build by default
+
+	On OSX our local system glib might be 32 or 64 bit, and we have no
+	simple way of testing wether it meeds the needs of the current
+	built, lets just disable tests by default for now
+
+2010-10-24  Zoltan Varga  <vargaz at gmail.com>
+
+	Add a g_hash_iter symbols to the eglib remapper.
+
 2010-10-23  Zoltan Varga  <vargaz at gmail.com>
 
 	Use int 3 as G_BREAKPOINT on x86-64 too. Hopefully fixes #648838.
@@ -10,17 +103,81 @@
 	different things on different systems. This at least fixes
 	OpenBSD.
 
-2010-09-04  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+2010-10-22  Zoltan Varga  <vargaz at gmail.com>
 
-	Fix return value of items_read
+	Fix test compilation with older glibs.
 
-	items_read was not being initialized and it was not being set in
-	the fast common case of g_utf8_to_utf16().
+2010-10-22  Zoltan Varga  <vargaz at gmail.com>
+
+	Implement GHashTable iterators.
+
+2010-10-21  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Fix typo
+
+	element_size is not a boolean.
+
+2010-10-15  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix warnings by defining GNU_SOURCE in eglib's configure.
+
+2010-10-14  Zoltan Varga  <vargaz at gmail.com>
+
+	Add -g to eglib cflags.
 
 2010-10-14  Zoltan Varga  <vargaz at gmail.com>
 
 	Avoid a crash in g_convert () if iconv_open () fails.
 
+2010-10-08  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix a warning.
+
+2010-09-24  Rolf Bjarne Kvinge  <RKvinge at novell.com>
+
+	* eglib/src/glib.h: * eglib/src/gmem.c: Make g_malloc and friends
+	abort in case of failure, like glib does.
+
+	* eglib/src/eglib-remap.h: Remap all allocation functions.
+
+2010-10-06  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Avoid warning
+
+	_GNU_SOURCE was redefined
+
+2010-10-04  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix the handling of varargs in g_set_error ().
+
+2010-09-25  Rolf Bjarne Kvinge  <RKvinge at novell.com>
+
+	Remap more eglib symbols
+
+2010-09-23  Hib Eris  <hib at hiberis.nl>
+
+	* configure.ac: iconv check creates variable ICONV_LIBS *
+	src/Makefile.am: only link eglib to iconv when iconv is found
+
+2010-09-13  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* glib.h: Fix propotype.
+
+2010-09-11  Geoff Norton  <gnorton at novell.com>
+
+	Implement GByteArray, g_hash_table_remove_all, g_queue_foreach and
+	some missing byteswap macros.
+
+2010-09-11  Zoltan Varga  <vargaz at gmail.com>
+
+	Remove -Werror from the eglib tests too.
+
+2010-09-10  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Fix the windows build
+
+	Avoid warnings in windows.
+
 2010-09-10  Miguel de Icaza  <miguel at gnome.org>
 
 	[Fix] Correct fix for the g_shell_parse_argv bug
@@ -42,6 +199,12 @@
 
 	This should fix #637680
 
+2010-09-07  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Add tests for g_strdupv
+
+	Add test for g_strdupv and check for NULL in g_strdupv.
+
 2010-09-07  Zoltan Varga  <vargaz at gmail.com>
 
 	Add a few more remaps.
@@ -50,6 +213,13 @@
 
 	Remap g_strdupv too.
 
+2010-09-04  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Fix return value of items_read
+
+	items_read was not being initialized and it was not being set in
+	the fast common case of g_utf8_to_utf16().
+
 2010-08-28  Zoltan Varga  <vargaz at gmail.com>
 
 	Add a g_hash_table_print_stats () helper function.
diff --git a/eglib/Makefile.am b/eglib/Makefile.am
index b33e244..136de50 100644
--- a/eglib/Makefile.am
+++ b/eglib/Makefile.am
@@ -1,12 +1,16 @@
 if HOST_WIN32
 SUBDIRS = src
 else
+if PLATFORM_DARWIN
+SUBDIRS = src
+else
 if CROSS_COMPILING
 SUBDIRS = src
 else
 SUBDIRS = src test
 endif
 endif
+endif
 
-EXTRA_DIST = autogen.sh README NEWS AUTHORS ChangeLog
+EXTRA_DIST = autogen.sh README NEWS AUTHORS ChangeLog winconfig.h
 
diff --git a/eglib/Makefile.in b/eglib/Makefile.in
index 2ec9f0f..7682860 100644
--- a/eglib/Makefile.in
+++ b/eglib/Makefile.in
@@ -41,7 +41,8 @@ DIST_COMMON = README $(am__configure_deps) $(srcdir)/../config.guess \
 	$(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \
 	TODO
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
+	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
@@ -90,6 +91,7 @@ CPPFLAGS = @CPPFLAGS@
 CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
+DOLT_BASH = @DOLT_BASH@
 DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
@@ -111,6 +113,8 @@ GUINT_TO_POINTER = @GUINT_TO_POINTER@
 G_GINT64_FORMAT = @G_GINT64_FORMAT@
 G_GUINT64_FORMAT = @G_GUINT64_FORMAT@
 G_HAVE_ISO_VARARGS = @G_HAVE_ISO_VARARGS@
+HAVE_ALLOCA_H = @HAVE_ALLOCA_H@
+ICONV_LIBS = @ICONV_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -123,6 +127,8 @@ LIBS = @LIBS@
 LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
+LTCOMPILE = @LTCOMPILE@
+LTCXXCOMPILE = @LTCXXCOMPILE@
 LTLIBOBJS = @LTLIBOBJS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
@@ -207,10 +213,11 @@ target_vendor = @target_vendor@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
- at CROSS_COMPILING_FALSE@@HOST_WIN32_FALSE at SUBDIRS = src test
- at CROSS_COMPILING_TRUE@@HOST_WIN32_FALSE at SUBDIRS = src
+ at CROSS_COMPILING_FALSE@@HOST_WIN32_FALSE@@PLATFORM_DARWIN_FALSE at SUBDIRS = src test
+ at CROSS_COMPILING_TRUE@@HOST_WIN32_FALSE@@PLATFORM_DARWIN_FALSE at SUBDIRS = src
+ at HOST_WIN32_FALSE@@PLATFORM_DARWIN_TRUE at SUBDIRS = src
 @HOST_WIN32_TRUE at SUBDIRS = src
-EXTRA_DIST = autogen.sh README NEWS AUTHORS ChangeLog
+EXTRA_DIST = autogen.sh README NEWS AUTHORS ChangeLog winconfig.h
 all: config.h
 	$(MAKE) $(AM_MAKEFLAGS) all-recursive
 
diff --git a/acinclude.m4 b/eglib/acinclude.m4
similarity index 100%
copy from acinclude.m4
copy to eglib/acinclude.m4
diff --git a/eglib/aclocal.m4 b/eglib/aclocal.m4
index 113994a..f88f3a6 100644
--- a/eglib/aclocal.m4
+++ b/eglib/aclocal.m4
@@ -8853,3 +8853,4 @@ AC_SUBST([am__tar])
 AC_SUBST([am__untar])
 ]) # _AM_PROG_TAR
 
+m4_include([acinclude.m4])
diff --git a/eglib/configure b/eglib/configure
index 8cdeaa3..b16b2de 100755
--- a/eglib/configure
+++ b/eglib/configure
@@ -797,9 +797,13 @@ GPOINTER_TO_INT
 HAVE_GLIB_FALSE
 HAVE_GLIB_TRUE
 PKG_CONFIG
+HAVE_ALLOCA_H
 G_HAVE_ISO_VARARGS
+ICONV_LIBS
 NEED_VASPRINTF_FALSE
 NEED_VASPRINTF_TRUE
+PLATFORM_DARWIN_FALSE
+PLATFORM_DARWIN_TRUE
 TARGET_WIN32_FALSE
 TARGET_WIN32_TRUE
 HOST_WIN32_FALSE
@@ -814,6 +818,9 @@ BREAKPOINT
 GNUC_NORETURN
 GNUC_UNUSED
 GNUC_PRETTY
+LTCXXCOMPILE
+LTCOMPILE
+DOLT_BASH
 CPP
 OTOOL64
 OTOOL
@@ -4409,13 +4416,13 @@ if test "${lt_cv_nm_interface+set}" = set; then
 else
   lt_cv_nm_interface="BSD nm"
   echo "int some_variable = 0;" > conftest.$ac_ext
-  (eval echo "\"\$as_me:4412: $ac_compile\"" >&5)
+  (eval echo "\"\$as_me:4419: $ac_compile\"" >&5)
   (eval "$ac_compile" 2>conftest.err)
   cat conftest.err >&5
-  (eval echo "\"\$as_me:4415: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+  (eval echo "\"\$as_me:4422: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
   (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
   cat conftest.err >&5
-  (eval echo "\"\$as_me:4418: output\"" >&5)
+  (eval echo "\"\$as_me:4425: output\"" >&5)
   cat conftest.out >&5
   if $GREP 'External.*some_variable' conftest.out > /dev/null; then
     lt_cv_nm_interface="MS dumpbin"
@@ -5621,7 +5628,7 @@ ia64-*-hpux*)
   ;;
 *-*-irix6*)
   # Find out which ABI we are using.
-  echo '#line 5624 "configure"' > conftest.$ac_ext
+  echo '#line 5631 "configure"' > conftest.$ac_ext
   if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
@@ -7474,11 +7481,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:7477: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:7484: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:7481: \$? = $ac_status" >&5
+   echo "$as_me:7488: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -7813,11 +7820,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:7816: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:7823: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:7820: \$? = $ac_status" >&5
+   echo "$as_me:7827: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -7918,11 +7925,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:7921: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:7928: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:7925: \$? = $ac_status" >&5
+   echo "$as_me:7932: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -7973,11 +7980,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:7976: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:7983: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:7980: \$? = $ac_status" >&5
+   echo "$as_me:7987: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -10773,7 +10780,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 10776 "configure"
+#line 10783 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -10869,7 +10876,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 10872 "configure"
+#line 10879 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11096,14 +11103,216 @@ CC="$lt_save_CC"
 # Only expand once:
 
 
-CFLAGS="$CFLAGS -g -O0 -D_GNU_SOURCE"
+# Use dolt (http://dolt.freedesktop.org/) instead of libtool for building.
+
+
+# dolt, a replacement for libtool
+# Josh Triplett <josh at freedesktop.org>
+# Extract the first word of "bash", so it can be a program name with args.
+set dummy bash; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_DOLT_BASH+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  case $DOLT_BASH in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_DOLT_BASH="$DOLT_BASH" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_DOLT_BASH="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+DOLT_BASH=$ac_cv_path_DOLT_BASH
+if test -n "$DOLT_BASH"; then
+  { $as_echo "$as_me:$LINENO: result: $DOLT_BASH" >&5
+$as_echo "$DOLT_BASH" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+{ $as_echo "$as_me:$LINENO: checking if dolt supports this host" >&5
+$as_echo_n "checking if dolt supports this host... " >&6; }
+dolt_supported=yes
+if test x$DOLT_BASH = x; then
+    dolt_supported=no
+fi
+if test x$GCC != xyes; then
+    dolt_supported=no
+fi
+case $host in
+i?86-*-linux*|x86_64-*-linux*|powerpc-*-linux*|powerpc64-*-linux* \
+|amd64-*-freebsd*|i?86-*-freebsd*|ia64-*-freebsd*|arm*-*-linux*|sparc*-*-linux*|mips*-*-linux*)
+    pic_options='-fPIC'
+    ;;
+?86-pc-cygwin*|i?86-pc-cygwin*)
+    pic_options='-DDLL_EXPORT'
+    ;;
+i?86-apple-darwin*)
+    pic_options='-fno-common'
+    ;;
+*)
+    dolt_supported=no
+    ;;
+esac
+if test x$dolt_supported = xno ; then
+    { $as_echo "$as_me:$LINENO: result: no, falling back to libtool" >&5
+$as_echo "no, falling back to libtool" >&6; }
+    LTCOMPILE='$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(COMPILE)'
+    LTCXXCOMPILE='$(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXXCOMPILE)'
+else
+    { $as_echo "$as_me:$LINENO: result: yes, replacing libtool" >&5
+$as_echo "yes, replacing libtool" >&6; }
+
+    cat <<__DOLTCOMPILE__EOF__ >doltcompile
+#!$DOLT_BASH
+__DOLTCOMPILE__EOF__
+    cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
+args=("$@")
+for ((arg=0; arg<${#args[@]}; arg++)) ; do
+    if test x"${args[$arg]}" = x-o ; then
+        objarg=$((arg+1))
+        break
+    fi
+done
+if test x$objarg = x ; then
+    echo 'Error: no -o on compiler command line' 1>&2
+    exit 1
+fi
+lo="${args[$objarg]}"
+obj="${lo%.lo}"
+if test x"$lo" = x"$obj" ; then
+    echo "Error: libtool object file name \"$lo\" does not end in .lo" 1>&2
+    exit 1
+fi
+objbase="${obj##*/}"
+__DOLTCOMPILE__EOF__
+
+    if test x$enable_shared = xyes; then
+        cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
+libobjdir="${obj%$objbase}.libs"
+if test ! -d "$libobjdir" ; then
+    mkdir_out="$(mkdir "$libobjdir" 2>&1)"
+    mkdir_ret=$?
+    if test "$mkdir_ret" -ne 0 && test ! -d "$libobjdir" ; then
+	echo "$mkdir_out" 1>&2
+        exit $mkdir_ret
+    fi
+fi
+pic_object="$libobjdir/$objbase.o"
+args[$objarg]="$pic_object"
+__DOLTCOMPILE__EOF__
+    cat <<__DOLTCOMPILE__EOF__ >>doltcompile
+"\${args[@]}" $pic_options -DPIC || exit \$?
+__DOLTCOMPILE__EOF__
+    fi
+
+    if test x$enable_static = xyes; then
+        cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
+non_pic_object="$obj.o"
+args[$objarg]="$non_pic_object"
+__DOLTCOMPILE__EOF__
+        if test x$enable_shared = xyes; then
+            cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
+"${args[@]}" >/dev/null 2>&1 || exit $?
+__DOLTCOMPILE__EOF__
+        else
+            cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
+"${args[@]}" || exit $?
+__DOLTCOMPILE__EOF__
+        fi
+    fi
+
+    cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
+{
+echo "# $lo - a libtool object file"
+echo "# Generated by doltcompile, not libtool"
+__DOLTCOMPILE__EOF__
+
+    if test x$enable_shared = xyes; then
+        cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
+echo "pic_object='.libs/${objbase}.o'"
+__DOLTCOMPILE__EOF__
+    else
+        cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
+echo pic_object=none
+__DOLTCOMPILE__EOF__
+    fi
+
+    if test x$enable_static = xyes; then
+        cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
+echo "non_pic_object='${objbase}.o'"
+__DOLTCOMPILE__EOF__
+    else
+        cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
+echo non_pic_object=none
+__DOLTCOMPILE__EOF__
+    fi
+
+    cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
+} > "$lo"
+__DOLTCOMPILE__EOF__
+
+    chmod +x doltcompile
+    LTCOMPILE='$(top_builddir)/doltcompile $(COMPILE)'
+    LTCXXCOMPILE='$(top_builddir)/doltcompile $(CXXCOMPILE)'
+
+    cat <<__DOLTLIBTOOL__EOF__ > doltlibtool
+#!$DOLT_BASH
+__DOLTLIBTOOL__EOF__
+    cat <<'__DOLTLIBTOOL__EOF__' >>doltlibtool
+top_builddir_slash="${0%%doltlibtool}"
+: ${top_builddir_slash:=./}
+args=()
+modeok=false
+tagok=false
+for arg in "$@"; do
+    case "$arg" in
+        --mode=compile) modeok=true ;;
+        --tag=CC|--tag=CXX) tagok=true ;;
+        --quiet) ;;
+        *) args[${#args[@]}]="$arg" ;;
+    esac
+done
+if $modeok && $tagok ; then
+    . ${top_builddir_slash}doltcompile "${args[@]}"
+else
+    exec ${top_builddir_slash}libtool "$@"
+fi
+__DOLTLIBTOOL__EOF__
+
+    chmod +x doltlibtool
+    LIBTOOL='$(top_builddir)/doltlibtool'
+fi
+
+
+# end dolt
+
+CFLAGS="$CFLAGS -O0"
 GNUC_PRETTY=
 GNUC_UNUSED=
 BREAKPOINT="G_STMT_START { raise (SIGTRAP); } G_STMT_END"
 if test x$GCC = xyes; then
    GNUC_UNUSED='__attribute__((__unused__))'
    GNUC_NORETURN='__attribute__((__noreturn__))'
-   case $target_cpu in
+   case $host_cpu in
      i*86|x86_64) BREAKPOINT="G_STMT_START { __asm__ (\"int \$03\"); } G_STMT_END" ;;
    esac
 fi
@@ -11121,6 +11330,8 @@ if test "x$CFLAGS_FOR_EGLIB" != "x"; then
    CFLAGS=$CFLAGS_FOR_EGLIB
 fi
 
+CFLAGS="$CFLAGS -g -D_GNU_SOURCE"
+
  if test x$cross_compiling = xyes; then
   CROSS_COMPILING_TRUE=
   CROSS_COMPILING_FALSE='#'
@@ -11533,12 +11744,20 @@ $as_echo "$as_me: error: unknown endianness
  esac
 
 
+platform_darwin=no
+
 case $host in
 *-*-msdos* | *-*-go32* | *-*-mingw32* | *-*-cygwin* | *-*-windows*)
     PATHSEP='\\'
     SEARCHSEP=';'
     OS="WIN32"
     ;;
+*-*darwin*)
+    platform_darwin=yes
+    PATHSEP='/'
+    SEARCHSEP=':'
+    OS="UNIX"
+    ;;
 *)
     PATHSEP='/'
     SEARCHSEP=':'
@@ -11586,6 +11805,14 @@ else
   TARGET_WIN32_FALSE=
 fi
 
+ if test x$platform_darwin = xyes; then
+  PLATFORM_DARWIN_TRUE=
+  PLATFORM_DARWIN_FALSE='#'
+else
+  PLATFORM_DARWIN_TRUE='#'
+  PLATFORM_DARWIN_FALSE=
+fi
+
 
 # The cast to long int works around a bug in the HP C Compiler
 # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
@@ -12557,6 +12784,146 @@ if test "x$ac_cv_lib_iconv_libiconv_open" = x""yes; then
   LIBS="$LIBS -liconv"
 fi
 
+{ $as_echo "$as_me:$LINENO: checking for iconv_open in -liconv" >&5
+$as_echo_n "checking for iconv_open in -liconv... " >&6; }
+if test "${ac_cv_lib_iconv_iconv_open+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-liconv  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char iconv_open ();
+int
+main ()
+{
+return iconv_open ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_lib_iconv_iconv_open=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_iconv_iconv_open=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_iconv_iconv_open" >&5
+$as_echo "$ac_cv_lib_iconv_iconv_open" >&6; }
+if test "x$ac_cv_lib_iconv_iconv_open" = x""yes; then
+  ICONV_LIBS="-liconv"
+fi
+
+{ $as_echo "$as_me:$LINENO: checking for libiconv_open in -liconv" >&5
+$as_echo_n "checking for libiconv_open in -liconv... " >&6; }
+if test "${ac_cv_lib_iconv_libiconv_open+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-liconv  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char libiconv_open ();
+int
+main ()
+{
+return libiconv_open ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_lib_iconv_libiconv_open=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_iconv_libiconv_open=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_iconv_libiconv_open" >&5
+$as_echo "$ac_cv_lib_iconv_libiconv_open" >&6; }
+if test "x$ac_cv_lib_iconv_libiconv_open" = x""yes; then
+  ICONV_LIBS="-liconv"
+fi
+
+
+LIBS="$LIBS $ICONV_LIBS"
 { $as_echo "$as_me:$LINENO: checking for library containing sqrtf" >&5
 $as_echo_n "checking for library containing sqrtf... " >&6; }
 if test "${ac_cv_search_sqrtf+set}" = set; then
@@ -13084,6 +13451,141 @@ fi
 
 done
 
+if test "${ac_cv_header_alloca_h+set}" = set; then
+  { $as_echo "$as_me:$LINENO: checking for alloca.h" >&5
+$as_echo_n "checking for alloca.h... " >&6; }
+if test "${ac_cv_header_alloca_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_alloca_h" >&5
+$as_echo "$ac_cv_header_alloca_h" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking alloca.h usability" >&5
+$as_echo_n "checking alloca.h usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <alloca.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking alloca.h presence" >&5
+$as_echo_n "checking alloca.h presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <alloca.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { $as_echo "$as_me:$LINENO: WARNING: alloca.h: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: alloca.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: alloca.h: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: alloca.h: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:$LINENO: WARNING: alloca.h: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: alloca.h: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: alloca.h:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: alloca.h:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: alloca.h: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: alloca.h: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: alloca.h:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: alloca.h:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: alloca.h: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: alloca.h: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: alloca.h: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: alloca.h: in the future, the compiler will take precedence" >&2;}
+
+    ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for alloca.h" >&5
+$as_echo_n "checking for alloca.h... " >&6; }
+if test "${ac_cv_header_alloca_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_header_alloca_h=$ac_header_preproc
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_alloca_h" >&5
+$as_echo "$ac_cv_header_alloca_h" >&6; }
+
+fi
+if test "x$ac_cv_header_alloca_h" = x""yes; then
+  HAVE_ALLOCA_H=1
+else
+  HAVE_ALLOCA_H=0
+fi
+
+
+
 
 if test $ac_cv_sizeof_void_p != $ac_cv_sizeof_int; then
    GPOINTER_TO_INT="((gint)(long) (ptr))"
@@ -13346,6 +13848,13 @@ $as_echo "$as_me: error: conditional \"TARGET_WIN32\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
+if test -z "${PLATFORM_DARWIN_TRUE}" && test -z "${PLATFORM_DARWIN_FALSE}"; then
+  { { $as_echo "$as_me:$LINENO: error: conditional \"PLATFORM_DARWIN\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"PLATFORM_DARWIN\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
 if test -z "${NEED_VASPRINTF_TRUE}" && test -z "${NEED_VASPRINTF_FALSE}"; then
   { { $as_echo "$as_me:$LINENO: error: conditional \"NEED_VASPRINTF\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
diff --git a/eglib/configure.ac b/eglib/configure.ac
index 5b614b1..7d52c70 100644
--- a/eglib/configure.ac
+++ b/eglib/configure.ac
@@ -7,14 +7,16 @@ AM_MAINTAINER_MODE
 
 AC_PROG_CC
 AM_PROG_LIBTOOL
-CFLAGS="$CFLAGS -g -O0 -D_GNU_SOURCE"
+# Use dolt (http://dolt.freedesktop.org/) instead of libtool for building.
+DOLT
+CFLAGS="$CFLAGS -O0"
 GNUC_PRETTY=
 GNUC_UNUSED=
 BREAKPOINT="G_STMT_START { raise (SIGTRAP); } G_STMT_END"
 if test x$GCC = xyes; then
    GNUC_UNUSED='__attribute__((__unused__))'
    GNUC_NORETURN='__attribute__((__noreturn__))'
-   case $target_cpu in
+   case $host_cpu in
      i*86|x86_64) BREAKPOINT="G_STMT_START { __asm__ (\"int \$03\"); } G_STMT_END" ;;
    esac
 fi
@@ -32,15 +34,25 @@ if test "x$CFLAGS_FOR_EGLIB" != "x"; then
    CFLAGS=$CFLAGS_FOR_EGLIB
 fi
 
+CFLAGS="$CFLAGS -g -D_GNU_SOURCE"
+
 AM_CONDITIONAL(CROSS_COMPILING, [test x$cross_compiling = xyes])
 AC_C_BIGENDIAN([ORDER=G_BIG_ENDIAN],[ORDER=G_LITTLE_ENDIAN])
 
+platform_darwin=no
+
 case $host in
 *-*-msdos* | *-*-go32* | *-*-mingw32* | *-*-cygwin* | *-*-windows*)
     PATHSEP='\\'
     SEARCHSEP=';'
     OS="WIN32"
     ;;
+*-*darwin*)
+    platform_darwin=yes
+    PATHSEP='/'
+    SEARCHSEP=':'
+    OS="UNIX"
+    ;;
 *)
     PATHSEP='/'
     SEARCHSEP=':'
@@ -74,6 +86,7 @@ AC_SUBST(SEARCHSEP)
 AC_SUBST(OS)
 AM_CONDITIONAL(HOST_WIN32, test x$OS = xWIN32)
 AM_CONDITIONAL(TARGET_WIN32, test x$OS = xWIN32)
+AM_CONDITIONAL(PLATFORM_DARWIN, test x$platform_darwin = xyes)
 
 AC_CHECK_SIZEOF(int)
 AC_CHECK_SIZEOF(void *)
@@ -81,6 +94,10 @@ AC_CHECK_FUNCS(strndup strlcpy getpwuid_r strtok_r rewinddir vasprintf)
 AM_CONDITIONAL(NEED_VASPRINTF, test x$have_vasprintf = x )
 AC_CHECK_LIB(iconv, iconv_open, LIBS="$LIBS -liconv")
 AC_CHECK_LIB(iconv, libiconv_open, LIBS="$LIBS -liconv")
+AC_CHECK_LIB(iconv, iconv_open, ICONV_LIBS="-liconv")
+AC_CHECK_LIB(iconv, libiconv_open, ICONV_LIBS="-liconv")
+AC_SUBST(ICONV_LIBS)
+LIBS="$LIBS $ICONV_LIBS"
 AC_SEARCH_LIBS(sqrtf, m)
 
 # nanosleep may not be part of libc, also search it in other libraries
@@ -110,6 +127,8 @@ fi
 AC_SUBST(G_HAVE_ISO_VARARGS)
 
 AC_CHECK_HEADERS(getopt.h sys/time.h sys/wait.h pwd.h langinfo.h iconv.h localcharset.h)
+AC_CHECK_HEADER(alloca.h, [HAVE_ALLOCA_H=1], [HAVE_ALLOCA_H=0])
+AC_SUBST(HAVE_ALLOCA_H)
 
 if test $ac_cv_sizeof_void_p != $ac_cv_sizeof_int; then
    GPOINTER_TO_INT="((gint)(long) (ptr))"
diff --git a/eglib/src/Makefile.am b/eglib/src/Makefile.am
index 1251d04..189d698 100644
--- a/eglib/src/Makefile.am
+++ b/eglib/src/Makefile.am
@@ -1,6 +1,7 @@
 noinst_LTLIBRARIES = libeglib.la libeglib-static.la
 
 win_files  = \
+	eglib-config.hw \
 	gdate-win32.c gdir-win32.c gfile-win32.c gmisc-win32.c \
 	gmodule-win32.c gtimer-win32.c
 
@@ -28,6 +29,7 @@ libeglib_la_SOURCES = \
 	sort.frag.h	\
 	glib.h	     	\
 	garray.c	\
+	gbytearray.c	\
 	gerror.c	\
 	ghashtable.c 	\
 	gmem.c       	\
@@ -52,14 +54,14 @@ libeglib_la_SOURCES = \
 	$(os_files)	\
 	$(vasprintf_files)
 
-libeglib_la_CFLAGS = -Wall -D_FORTIFY_SOURCE=2
+libeglib_la_CFLAGS = -g -Wall -D_FORTIFY_SOURCE=2
 libeglib_static_la_SOURCES=$(libeglib_la_SOURCES)
 libeglib_static_la_CFLAGS = $(libeglib_la_CFLAGS)
 
 INCLUDES = -I$(srcdir)
 
 if HOST_WIN32
-libeglib_la_LIBADD = -lm -liconv -lpsapi
+libeglib_la_LIBADD = -lm $(ICONV_LIBS) -lpsapi
 endif
 
 libeglib_static_la_LIBADD = $(libeglib_la_LIBADD)
diff --git a/eglib/src/Makefile.in b/eglib/src/Makefile.in
index edbd916..8d283e6 100644
--- a/eglib/src/Makefile.in
+++ b/eglib/src/Makefile.in
@@ -37,7 +37,8 @@ subdir = src
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
 	$(srcdir)/eglib-config.h.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
+	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs
@@ -45,16 +46,17 @@ CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES = eglib-config.h
 LTLIBRARIES = $(noinst_LTLIBRARIES)
 am__DEPENDENCIES_1 =
-libeglib_static_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
+ at HOST_WIN32_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1)
+libeglib_static_la_DEPENDENCIES = $(am__DEPENDENCIES_2)
 am__libeglib_static_la_SOURCES_DIST = eglib-config.h eglib-remap.h \
-	sort.frag.h glib.h garray.c gerror.c ghashtable.c gmem.c \
-	gmodule.h goutput.c gstr.c gslist.c gstring.c gptrarray.c \
-	glist.c gqueue.c gpath.c gshell.c gspawn.c gfile.c \
+	sort.frag.h glib.h garray.c gbytearray.c gerror.c ghashtable.c \
+	gmem.c gmodule.h goutput.c gstr.c gslist.c gstring.c \
+	gptrarray.c glist.c gqueue.c gpath.c gshell.c gspawn.c gfile.c \
 	gfile-posix.c gpattern.c gmarkup.c gutf8.c gunicode.c \
 	unicode-data.h gdate-unix.c gdir-unix.c gfile-unix.c \
-	gmisc-unix.c gmodule-unix.c gtimer-unix.c gdate-win32.c \
-	gdir-win32.c gfile-win32.c gmisc-win32.c gmodule-win32.c \
-	gtimer-win32.c vasprintf.c
+	gmisc-unix.c gmodule-unix.c gtimer-unix.c eglib-config.hw \
+	gdate-win32.c gdir-win32.c gfile-win32.c gmisc-win32.c \
+	gmodule-win32.c gtimer-win32.c vasprintf.c
 am__objects_1 = libeglib_static_la-gdate-unix.lo \
 	libeglib_static_la-gdir-unix.lo \
 	libeglib_static_la-gfile-unix.lo \
@@ -71,14 +73,14 @@ am__objects_2 = libeglib_static_la-gdate-win32.lo \
 @HOST_WIN32_TRUE at am__objects_3 = $(am__objects_2)
 @NEED_VASPRINTF_TRUE at am__objects_4 = libeglib_static_la-vasprintf.lo
 am__objects_5 = libeglib_static_la-garray.lo \
-	libeglib_static_la-gerror.lo libeglib_static_la-ghashtable.lo \
-	libeglib_static_la-gmem.lo libeglib_static_la-goutput.lo \
-	libeglib_static_la-gstr.lo libeglib_static_la-gslist.lo \
-	libeglib_static_la-gstring.lo libeglib_static_la-gptrarray.lo \
-	libeglib_static_la-glist.lo libeglib_static_la-gqueue.lo \
-	libeglib_static_la-gpath.lo libeglib_static_la-gshell.lo \
-	libeglib_static_la-gspawn.lo libeglib_static_la-gfile.lo \
-	libeglib_static_la-gfile-posix.lo \
+	libeglib_static_la-gbytearray.lo libeglib_static_la-gerror.lo \
+	libeglib_static_la-ghashtable.lo libeglib_static_la-gmem.lo \
+	libeglib_static_la-goutput.lo libeglib_static_la-gstr.lo \
+	libeglib_static_la-gslist.lo libeglib_static_la-gstring.lo \
+	libeglib_static_la-gptrarray.lo libeglib_static_la-glist.lo \
+	libeglib_static_la-gqueue.lo libeglib_static_la-gpath.lo \
+	libeglib_static_la-gshell.lo libeglib_static_la-gspawn.lo \
+	libeglib_static_la-gfile.lo libeglib_static_la-gfile-posix.lo \
 	libeglib_static_la-gpattern.lo libeglib_static_la-gmarkup.lo \
 	libeglib_static_la-gutf8.lo libeglib_static_la-gunicode.lo \
 	$(am__objects_3) $(am__objects_4)
@@ -88,16 +90,16 @@ libeglib_static_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) \
 	$(libeglib_static_la_CFLAGS) $(CFLAGS) \
 	$(libeglib_static_la_LDFLAGS) $(LDFLAGS) -o $@
-libeglib_la_DEPENDENCIES =
+ at HOST_WIN32_TRUE@libeglib_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
 am__libeglib_la_SOURCES_DIST = eglib-config.h eglib-remap.h \
-	sort.frag.h glib.h garray.c gerror.c ghashtable.c gmem.c \
-	gmodule.h goutput.c gstr.c gslist.c gstring.c gptrarray.c \
-	glist.c gqueue.c gpath.c gshell.c gspawn.c gfile.c \
+	sort.frag.h glib.h garray.c gbytearray.c gerror.c ghashtable.c \
+	gmem.c gmodule.h goutput.c gstr.c gslist.c gstring.c \
+	gptrarray.c glist.c gqueue.c gpath.c gshell.c gspawn.c gfile.c \
 	gfile-posix.c gpattern.c gmarkup.c gutf8.c gunicode.c \
 	unicode-data.h gdate-unix.c gdir-unix.c gfile-unix.c \
-	gmisc-unix.c gmodule-unix.c gtimer-unix.c gdate-win32.c \
-	gdir-win32.c gfile-win32.c gmisc-win32.c gmodule-win32.c \
-	gtimer-win32.c vasprintf.c
+	gmisc-unix.c gmodule-unix.c gtimer-unix.c eglib-config.hw \
+	gdate-win32.c gdir-win32.c gfile-win32.c gmisc-win32.c \
+	gmodule-win32.c gtimer-win32.c vasprintf.c
 am__objects_6 = libeglib_la-gdate-unix.lo libeglib_la-gdir-unix.lo \
 	libeglib_la-gfile-unix.lo libeglib_la-gmisc-unix.lo \
 	libeglib_la-gmodule-unix.lo libeglib_la-gtimer-unix.lo
@@ -107,7 +109,8 @@ am__objects_7 = libeglib_la-gdate-win32.lo libeglib_la-gdir-win32.lo \
 @HOST_WIN32_FALSE at am__objects_8 = $(am__objects_6)
 @HOST_WIN32_TRUE at am__objects_8 = $(am__objects_7)
 @NEED_VASPRINTF_TRUE at am__objects_9 = libeglib_la-vasprintf.lo
-am_libeglib_la_OBJECTS = libeglib_la-garray.lo libeglib_la-gerror.lo \
+am_libeglib_la_OBJECTS = libeglib_la-garray.lo \
+	libeglib_la-gbytearray.lo libeglib_la-gerror.lo \
 	libeglib_la-ghashtable.lo libeglib_la-gmem.lo \
 	libeglib_la-goutput.lo libeglib_la-gstr.lo \
 	libeglib_la-gslist.lo libeglib_la-gstring.lo \
@@ -127,9 +130,6 @@ depcomp = $(SHELL) $(top_srcdir)/../depcomp
 am__depfiles_maybe = depfiles
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
 CCLD = $(CC)
 LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
 	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
@@ -156,6 +156,7 @@ CPPFLAGS = @CPPFLAGS@
 CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
+DOLT_BASH = @DOLT_BASH@
 DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
@@ -177,6 +178,8 @@ GUINT_TO_POINTER = @GUINT_TO_POINTER@
 G_GINT64_FORMAT = @G_GINT64_FORMAT@
 G_GUINT64_FORMAT = @G_GUINT64_FORMAT@
 G_HAVE_ISO_VARARGS = @G_HAVE_ISO_VARARGS@
+HAVE_ALLOCA_H = @HAVE_ALLOCA_H@
+ICONV_LIBS = @ICONV_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -189,6 +192,8 @@ LIBS = @LIBS@
 LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
+LTCOMPILE = @LTCOMPILE@
+LTCXXCOMPILE = @LTCXXCOMPILE@
 LTLIBOBJS = @LTLIBOBJS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
@@ -275,6 +280,7 @@ top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 noinst_LTLIBRARIES = libeglib.la libeglib-static.la
 win_files = \
+	eglib-config.hw \
 	gdate-win32.c gdir-win32.c gfile-win32.c gmisc-win32.c \
 	gmodule-win32.c gtimer-win32.c
 
@@ -295,6 +301,7 @@ libeglib_la_SOURCES = \
 	sort.frag.h	\
 	glib.h	     	\
 	garray.c	\
+	gbytearray.c	\
 	gerror.c	\
 	ghashtable.c 	\
 	gmem.c       	\
@@ -319,11 +326,11 @@ libeglib_la_SOURCES = \
 	$(os_files)	\
 	$(vasprintf_files)
 
-libeglib_la_CFLAGS = -Wall -D_FORTIFY_SOURCE=2
+libeglib_la_CFLAGS = -g -Wall -D_FORTIFY_SOURCE=2
 libeglib_static_la_SOURCES = $(libeglib_la_SOURCES)
 libeglib_static_la_CFLAGS = $(libeglib_la_CFLAGS)
 INCLUDES = -I$(srcdir)
- at HOST_WIN32_TRUE@libeglib_la_LIBADD = -lm -liconv -lpsapi
+ at HOST_WIN32_TRUE@libeglib_la_LIBADD = -lm $(ICONV_LIBS) -lpsapi
 libeglib_static_la_LIBADD = $(libeglib_la_LIBADD)
 libeglib_static_la_LDFLAGS = -static
 MAINTAINERCLEANFILES = Makefile.in
@@ -384,6 +391,7 @@ distclean-compile:
 	-rm -f *.tab.c
 
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeglib_la-garray.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeglib_la-gbytearray.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeglib_la-gdate-unix.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeglib_la-gdate-win32.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeglib_la-gdir-unix.Plo at am__quote@
@@ -417,6 +425,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeglib_la-gutf8.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeglib_la-vasprintf.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeglib_static_la-garray.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeglib_static_la-gbytearray.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeglib_static_la-gdate-unix.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeglib_static_la-gdate-win32.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeglib_static_la-gdir-unix.Plo at am__quote@
@@ -478,6 +487,13 @@ libeglib_static_la-garray.lo: garray.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libeglib_static_la_CFLAGS) $(CFLAGS) -c -o libeglib_static_la-garray.lo `test -f 'garray.c' || echo '$(srcdir)/'`garray.c
 
+libeglib_static_la-gbytearray.lo: gbytearray.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libeglib_static_la_CFLAGS) $(CFLAGS) -MT libeglib_static_la-gbytearray.lo -MD -MP -MF $(DEPDIR)/libeglib_static_la-gbytearray.Tpo -c -o libeglib_static_la-gbytearray.lo `test -f 'gbytearray.c' || echo '$(srcdir)/'`gbytearray.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libeglib_static_la-gbytearray.Tpo $(DEPDIR)/libeglib_static_la-gbytearray.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='gbytearray.c' object='libeglib_static_la-gbytearray.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libeglib_static_la_CFLAGS) $(CFLAGS) -c -o libeglib_static_la-gbytearray.lo `test -f 'gbytearray.c' || echo '$(srcdir)/'`gbytearray.c
+
 libeglib_static_la-gerror.lo: gerror.c
 @am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libeglib_static_la_CFLAGS) $(CFLAGS) -MT libeglib_static_la-gerror.lo -MD -MP -MF $(DEPDIR)/libeglib_static_la-gerror.Tpo -c -o libeglib_static_la-gerror.lo `test -f 'gerror.c' || echo '$(srcdir)/'`gerror.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libeglib_static_la-gerror.Tpo $(DEPDIR)/libeglib_static_la-gerror.Plo
@@ -709,6 +725,13 @@ libeglib_la-garray.lo: garray.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libeglib_la_CFLAGS) $(CFLAGS) -c -o libeglib_la-garray.lo `test -f 'garray.c' || echo '$(srcdir)/'`garray.c
 
+libeglib_la-gbytearray.lo: gbytearray.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libeglib_la_CFLAGS) $(CFLAGS) -MT libeglib_la-gbytearray.lo -MD -MP -MF $(DEPDIR)/libeglib_la-gbytearray.Tpo -c -o libeglib_la-gbytearray.lo `test -f 'gbytearray.c' || echo '$(srcdir)/'`gbytearray.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libeglib_la-gbytearray.Tpo $(DEPDIR)/libeglib_la-gbytearray.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='gbytearray.c' object='libeglib_la-gbytearray.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libeglib_la_CFLAGS) $(CFLAGS) -c -o libeglib_la-gbytearray.lo `test -f 'gbytearray.c' || echo '$(srcdir)/'`gbytearray.c
+
 libeglib_la-gerror.lo: gerror.c
 @am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libeglib_la_CFLAGS) $(CFLAGS) -MT libeglib_la-gerror.lo -MD -MP -MF $(DEPDIR)/libeglib_la-gerror.Tpo -c -o libeglib_la-gerror.lo `test -f 'gerror.c' || echo '$(srcdir)/'`gerror.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libeglib_la-gerror.Tpo $(DEPDIR)/libeglib_la-gerror.Plo
diff --git a/eglib/src/eglib-config.h b/eglib/src/eglib-config.h
index 589185f..e3ff6ed 100644
--- a/eglib/src/eglib-config.h
+++ b/eglib/src/eglib-config.h
@@ -19,6 +19,10 @@
 #define GINT_TO_POINTER(v)     ((gpointer)(glong) (v))
 #define GUINT_TO_POINTER(v)    ((gpointer)(gulong) (v))
 
+#if 1 == 1
+#define G_HAVE_ALLOCA_H
+#endif
+
 typedef unsigned long gsize;
 typedef signed   long gssize;
 
diff --git a/eglib/src/eglib-config.h.in b/eglib/src/eglib-config.h.in
index 03ecbfd..7df6919 100644
--- a/eglib/src/eglib-config.h.in
+++ b/eglib/src/eglib-config.h.in
@@ -19,6 +19,10 @@
 #define GINT_TO_POINTER(v)     @GINT_TO_POINTER@
 #define GUINT_TO_POINTER(v)    @GUINT_TO_POINTER@
 
+#if @HAVE_ALLOCA_H@ == 1
+#define G_HAVE_ALLOCA_H
+#endif
+
 typedef unsigned @GSIZE@ gsize;
 typedef signed   @GSIZE@ gssize;
 
diff --git a/eglib/src/eglib-config.hw b/eglib/src/eglib-config.hw
new file mode 100644
index 0000000..40132d8
--- /dev/null
+++ b/eglib/src/eglib-config.hw
@@ -0,0 +1,74 @@
+#ifndef __EGLIB_CONFIG_H
+#define __EGLIB_CONFIG_H
+
+/*
+ * System-dependent settings
+ */
+#define G_OS_WIN32 1
+
+#ifdef _MSC_VER
+
+#include <io.h>
+
+#define G_GNUC_PRETTY_FUNCTION   __FUNCTION__
+#define G_GNUC_UNUSED            
+#define G_BYTE_ORDER             1234
+#define G_GNUC_NORETURN          
+#define G_BREAKPOINT()           __debugbreak()
+#define MAXPATHLEN 242
+
+typedef uintptr_t gsize;
+typedef intptr_t gssize;
+typedef int pid_t;
+
+#define G_DIR_SEPARATOR          '\\'
+#define G_DIR_SEPARATOR_S        "\\"
+#define G_SEARCHPATH_SEPARATOR_S ";"
+#define G_SEARCHPATH_SEPARATOR   ';'
+#define G_GSIZE_FORMAT   "d"
+#define G_GUINT64_FORMAT "d"
+#define G_GINT64_FORMAT "d"
+#define GPOINTER_TO_INT(ptr)   ((gint)(intptr_t) (ptr))
+#define GPOINTER_TO_UINT(ptr)  ((guint)(intptr_t) (ptr))
+#define GINT_TO_POINTER(v)     ((gpointer)(intptr_t) (v))
+#define GUINT_TO_POINTER(v)    ((gpointer)(intptr_t) (v))
+
+#define INT32_MAX 2147483647
+#define INT32_MIN (~ INT32_MAX)
+#define INT64_MAX 9223372036854775807i64
+#define INT64_MIN (~INT64_MAX)
+#define UINT32_MAX 0xffffffffU
+#define UINT64_MAX 0xffffffffffffffffULL
+
+#define STDOUT_FILENO (int)(intptr_t)stdout
+#define STDERR_FILENO (int)(intptr_t)stderr
+
+
+/* FIXME: what should this be ?*/
+#define X_OK 4 /* This is really read */
+#define WNOHANG 1
+#define F_SETFD 1
+#define FD_CLOEXEC 1
+
+#undef inline
+#define inline __inline
+
+#define strtok_r strtok_s
+
+#undef G_HAVE_UNISTD_H
+#undef G_HAVE_SYS_TIME_H
+#undef G_HAVE_SYS_WAIT_H
+#undef G_HAVE_PWD_H
+#undef G_HAVE_STRNDUP
+#define G_HAVE_GETOPT_H 1
+
+int vasprintf(char **ret, const char *fmt, va_list ap);
+
+/* disable the following warnings 
+ * C4100: The formal parameter is not referenced in the body of the function. The unreferenced parameter is ignored. 
+ * C4127: conditional expression is constant
+*/
+#pragma warning(disable:4100 4127)
+#endif
+
+#endif
\ No newline at end of file
diff --git a/eglib/src/eglib-remap.h b/eglib/src/eglib-remap.h
index c10aa6f..e298aaa 100644
--- a/eglib/src/eglib-remap.h
+++ b/eglib/src/eglib-remap.h
@@ -1,3 +1,4 @@
+#define g_array_append monoeg_g_array_append
 #define g_array_append_vals monoeg_g_array_append_vals
 #define g_array_free monoeg_g_array_free
 #define g_array_insert_vals monoeg_g_array_insert_vals
@@ -20,6 +21,7 @@
 #define g_direct_hash monoeg_g_direct_hash
 #define g_error_free monoeg_g_error_free
 #define g_error_new monoeg_g_error_new
+#define g_error_vnew monoeg_g_error_vnew
 #define g_file_error_from_errno monoeg_g_file_error_from_errno
 #define g_file_get_contents monoeg_g_file_get_contents
 #define g_file_open_tmp monoeg_g_file_open_tmp
@@ -51,6 +53,9 @@
 #define g_hash_table_remove monoeg_g_hash_table_remove
 #define g_hash_table_size monoeg_g_hash_table_size
 #define g_hash_table_print_stats monoeg_g_hash_table_print_stats
+#define g_hash_table_remove_all monoeg_g_hash_table_remove_all
+#define g_hash_table_iter_init monoeg_g_hash_table_iter_init
+#define g_hash_table_iter_next monoeg_g_hash_table_iter_next
 #define g_int_equal monoeg_g_int_equal
 #define g_int_hash monoeg_g_int_hash
 #define g_list_alloc monoeg_g_list_alloc
@@ -116,6 +121,7 @@
 #define g_ptr_array_sort_with_data monoeg_g_ptr_array_sort_with_data
 #define g_queue_free monoeg_g_queue_free
 #define g_queue_is_empty monoeg_g_queue_is_empty
+#define g_queue_foreach monoeg_g_queue_foreach
 #define g_queue_new monoeg_g_queue_new
 #define g_queue_pop_head monoeg_g_queue_pop_head
 #define g_queue_push_head monoeg_g_queue_push_head
@@ -219,7 +225,11 @@
 #define g_malloc0 monoeg_malloc0
 #define g_ptr_array_grow monoeg_ptr_array_grow
 #define g_realloc monoeg_realloc
+#define g_try_malloc monoeg_try_malloc
+#define g_try_realloc monoeg_try_realloc
 #define g_strdup monoeg_strdup
 #define g_ucs4_to_utf16_len monoeg_ucs4_to_utf16_len
 #define g_utf16_to_ucs4_len monoeg_utf16_to_ucs4_len
+#define g_byte_array_free monoeg_g_byte_array_free
+#define g_byte_array_new monoeg_g_byte_array_new
 
diff --git a/eglib/src/garray.c b/eglib/src/garray.c
index dadb6ca..99ebf6e 100644
--- a/eglib/src/garray.c
+++ b/eglib/src/garray.c
@@ -37,7 +37,7 @@
 typedef struct {
 	GArray array;
 	gboolean clear_;
-	gboolean element_size;
+	guint element_size;
 	gboolean zero_terminated;
 	gint capacity;
 } GArrayPriv;
diff --git a/eglib/src/gbytearray.c b/eglib/src/gbytearray.c
new file mode 100644
index 0000000..daa4bca
--- /dev/null
+++ b/eglib/src/gbytearray.c
@@ -0,0 +1,95 @@
+/*
+ * Arrays
+ *
+ * Author:
+ *   Geoff Norton  (gnorton at novell.com)
+ *
+ * (C) 2010 Novell, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#include <stdlib.h>
+#include <glib.h>
+
+#define INITIAL_CAPACITY 16
+
+static void
+ensure_capacity (GByteArray *array,
+		 int capacity)
+{
+	int new_capacity = MAX (array->len, INITIAL_CAPACITY);
+
+	if (capacity < array->len)
+		return;
+
+	while (new_capacity < capacity) {
+		new_capacity <<= 1;
+	}
+	capacity = new_capacity;
+	array->data = (guint8*) g_realloc (array->data, capacity);
+
+	memset (array->data + array->len, 0, capacity - array->len);
+	array->len = capacity;
+}
+
+GByteArray *
+g_byte_array_new ()
+{
+	GByteArray *rv = g_new0 (GByteArray, 1);
+
+	ensure_capacity (rv, INITIAL_CAPACITY);
+
+	return rv;
+}
+
+guint8*
+g_byte_array_free (GByteArray *array,
+	      gboolean free_segment)
+{
+	guint8* rv = NULL;
+
+	g_return_val_if_fail (array != NULL, NULL);
+
+	if (free_segment)
+		g_free (array->data);
+	else
+		rv = array->data;
+
+	g_free (array);
+
+	return rv;
+}
+
+GByteArray *
+g_array_append (GByteArray *array,
+		     guint8 *data,
+		     guint len)
+{
+	g_return_val_if_fail (array != NULL, NULL);
+
+	ensure_capacity (array, array->len + len);
+  
+	memmove (array->data + array->len, data, len);
+
+	array->len += len;
+
+	return array;
+}
diff --git a/eglib/src/gdir-win32.c b/eglib/src/gdir-win32.c
index 839f0b1..28a42bc 100644
--- a/eglib/src/gdir-win32.c
+++ b/eglib/src/gdir-win32.c
@@ -51,46 +51,40 @@ g_dir_open (const gchar *path, guint flags, GError **error)
 
 	g_return_val_if_fail (path != NULL, NULL);
 	g_return_val_if_fail (error == NULL || *error == NULL, NULL);
-	dir = g_new0 (GDir, 1);
 
+	dir = g_new0 (GDir, 1);
 	path_utf16 = u8to16 (path);
+	path_utf16_search = g_malloc ((wcslen(path_utf16) + 3)*sizeof(gunichar2));
+	wcscpy (path_utf16_search, path_utf16);
+	wcscat (path_utf16_search, L"\\*");
 
-	dir->handle = FindFirstFile (path_utf16, &find_data);
+	dir->handle = FindFirstFileW (path_utf16_search, &find_data);
 	if (dir->handle == INVALID_HANDLE_VALUE) {
 		if (error) {
 			gint err = errno;
 			*error = g_error_new (G_LOG_DOMAIN, g_file_error_from_errno (err), strerror (err));
 		}
-		g_free (dir);
+		g_free (path_utf16_search);
 		g_free (path_utf16);
+		g_free (dir);
 		return NULL;
 	}
-
-	/* now get files */
-	FindClose (dir->handle);
-	path_utf16_search = g_malloc ((wcslen(path_utf16) + 3)*sizeof(gunichar2));
-	wcscpy (path_utf16_search, path_utf16);
-	wcscat (path_utf16_search, L"\\*");
-
-	dir->handle = FindFirstFile (path_utf16_search, &find_data);
 	g_free (path_utf16_search);
+	g_free (path_utf16);
 
 	while ((wcscmp (find_data.cFileName, L".") == 0) || (wcscmp (find_data.cFileName, L"..") == 0)) {
-		if (!FindNextFile (dir->handle, &find_data)) {
+		if (!FindNextFileW (dir->handle, &find_data)) {
 			if (error) {
 				gint err = errno;
 				*error = g_error_new (G_LOG_DOMAIN, g_file_error_from_errno (err), strerror (err));
 			}
 			g_free (dir);
-			g_free (path_utf16);
 			return NULL;
 		}
 	}
 
 	dir->current = NULL;
 	dir->next = u16to8 (find_data.cFileName);
-
-	g_free (path_utf16);
 	return dir;
 }
 
@@ -113,7 +107,7 @@ g_dir_read_name (GDir *dir)
 	dir->next = NULL;
 
 	do {
-		if (!FindNextFile (dir->handle, &find_data)) {
+		if (!FindNextFileW (dir->handle, &find_data)) {
 			dir->next = NULL;
 			return dir->current;
 		}
diff --git a/eglib/src/gerror.c b/eglib/src/gerror.c
index 7db6645..790c388 100644
--- a/eglib/src/gerror.c
+++ b/eglib/src/gerror.c
@@ -47,6 +47,20 @@ g_error_new (gpointer domain, gint code, const char *format, ...)
 	return err;
 }
 
+static GError *
+g_error_vnew (gpointer domain, gint code, const char *format, va_list ap)
+{
+	GError *err = g_new (GError, 1);
+	
+	err->domain = domain;
+	err->code = code;
+
+	if (vasprintf (&err->message, format, ap) == -1)
+		err->message = g_strdup_printf ("internal: invalid format string %s", format); 
+
+	return err;
+}
+
 void
 g_clear_error (GError **error)
 {
@@ -72,7 +86,7 @@ g_set_error (GError **err, gpointer domain, gint code, const gchar *format, ...)
 
 	if (err) {
 		va_start (args, format);
-		*err = g_error_new (domain, code, format, args);
+		*err = g_error_vnew (domain, code, format, args);
 		va_end (args);
 	}
 }
diff --git a/eglib/src/ghashtable.c b/eglib/src/ghashtable.c
index 365752a..fbe0793 100644
--- a/eglib/src/ghashtable.c
+++ b/eglib/src/ghashtable.c
@@ -51,6 +51,12 @@ struct _GHashTable {
 	GDestroyNotify value_destroy_func, key_destroy_func;
 };
 
+typedef struct {
+	GHashTable *ht;
+	int slot_index;
+	Slot *slot;
+} Iter;
+
 static const guint prime_tbl[] = {
 	11, 19, 37, 73, 109, 163, 251, 367, 557, 823, 1237,
 	1861, 2777, 4177, 6247, 9371, 14057, 21089, 31627,
@@ -334,6 +340,23 @@ g_hash_table_find (GHashTable *hash, GHRFunc predicate, gpointer user_data)
 	return NULL;
 }
 
+void
+g_hash_table_remove_all (GHashTable *hash)
+{
+	int i;
+	
+	g_return_if_fail (hash != NULL);
+
+	for (i = 0; i < hash->table_size; i++){
+		Slot *s;
+
+		while (hash->table [i]) {
+			s = hash->table [i];
+			g_hash_table_remove (hash, s->key);
+		}
+	}
+}
+
 gboolean
 g_hash_table_remove (GHashTable *hash, gconstpointer key)
 {
@@ -500,6 +523,47 @@ g_hash_table_print_stats (GHashTable *table)
 	printf ("Size: %d Table Size: %d Max Chain Length: %d at %d\n", table->in_use, table->table_size, max_chain_size, max_chain_index);
 }
 
+void
+g_hash_table_iter_init (GHashTableIter *it, GHashTable *hash_table)
+{
+	Iter *iter = (Iter*)it;
+
+	memset (iter, 0, sizeof (Iter));
+	iter->ht = hash_table;
+	iter->slot_index = -1;
+}
+
+gboolean g_hash_table_iter_next (GHashTableIter *it, gpointer *key, gpointer *value)
+{
+	Iter *iter = (Iter*)it;
+
+	GHashTable *hash = iter->ht;
+
+	g_assert (iter->slot_index != -2);
+	g_assert (sizeof (Iter) <= sizeof (GHashTableIter));
+
+	if (!iter->slot) {
+		while (TRUE) {
+			iter->slot_index ++;
+			if (iter->slot_index >= hash->table_size) {
+				iter->slot_index = -2;
+				return FALSE;
+			}
+			if (hash->table [iter->slot_index])
+				break;
+		}
+		iter->slot = hash->table [iter->slot_index];
+	}
+
+	if (key)
+		*key = iter->slot->key;
+	if (value)
+		*value = iter->slot->value;
+	iter->slot = iter->slot->next;
+
+	return TRUE;
+}
+
 gboolean
 g_direct_equal (gconstpointer v1, gconstpointer v2)
 {
@@ -515,13 +579,13 @@ g_direct_hash (gconstpointer v1)
 gboolean
 g_int_equal (gconstpointer v1, gconstpointer v2)
 {
-	return GPOINTER_TO_INT (v1) == GPOINTER_TO_INT (v2);
+	return *(gint *)v1 == *(gint *)v2;
 }
 
 guint
 g_int_hash (gconstpointer v1)
 {
-	return GPOINTER_TO_UINT(v1);
+	return *(guint *)v1;
 }
 
 gboolean
diff --git a/eglib/src/glib.h b/eglib/src/glib.h
index 78bba09..8b6082e 100644
--- a/eglib/src/glib.h
+++ b/eglib/src/glib.h
@@ -24,6 +24,10 @@
 #include <eglib-remap.h>
 #endif
 
+#ifdef G_HAVE_ALLOCA_H
+#include <alloca.h>
+#endif
+
 #ifndef offsetof
 #   define offsetof(s_name,n_name) (size_t)(char *)&(((s_name*)0)->m_name)
 #endif
@@ -85,7 +89,6 @@ typedef int32_t        gboolean;
 #endif
 #endif
 
-
 /*
  * Macros
  */
@@ -123,11 +126,11 @@ typedef int32_t        gboolean;
  * Allocation
  */
 void g_free (void *ptr);
-static inline gpointer g_realloc (gpointer obj, gsize size) { if (!size) {g_free (obj); return 0;} return  realloc (obj, size);}
-static inline gpointer g_malloc (gsize x) {if (x) return malloc (x); else return 0;}
-static inline gpointer g_malloc0 (gsize x) {if (x) return calloc(1,x); else return 0;}
-#define g_try_malloc(x)         g_malloc(x)
-#define g_try_realloc(obj,size) g_realloc((obj),(size))
+gpointer g_realloc (gpointer obj, gsize size);
+gpointer g_malloc (gsize x);
+gpointer g_malloc0 (gsize x);
+gpointer g_try_malloc (gsize x);
+gpointer g_try_realloc (gpointer obj, gsize size);
 
 #define g_new(type,size)        ((type *) g_malloc (sizeof (type) * (size)))
 #define g_new0(type,size)       ((type *) g_malloc0 (sizeof (type)* (size)))
@@ -178,6 +181,14 @@ gchar*           g_win32_getlocale(void);
  * Hashtables
  */
 typedef struct _GHashTable GHashTable;
+typedef struct _GHashTableIter GHashTableIter;
+
+/* Private, but needed for stack allocation */
+struct _GHashTableIter
+{
+	gpointer dummy [8];
+};
+
 typedef void     (*GFunc)          (gpointer data, gpointer user_data);
 typedef gint     (*GCompareFunc)   (gconstpointer a, gconstpointer b);
 typedef gint     (*GCompareDataFunc) (gconstpointer a, gconstpointer b, gpointer user_data);
@@ -198,11 +209,15 @@ gboolean        g_hash_table_lookup_extended (GHashTable *hash, gconstpointer ke
 void            g_hash_table_foreach         (GHashTable *hash, GHFunc func, gpointer user_data);
 gpointer        g_hash_table_find            (GHashTable *hash, GHRFunc predicate, gpointer user_data);
 gboolean        g_hash_table_remove          (GHashTable *hash, gconstpointer key);
+void            g_hash_table_remove_all      (GHashTable *hash);
 guint           g_hash_table_foreach_remove  (GHashTable *hash, GHRFunc func, gpointer user_data);
 guint           g_hash_table_foreach_steal   (GHashTable *hash, GHRFunc func, gpointer user_data);
 void            g_hash_table_destroy         (GHashTable *hash);
 void            g_hash_table_print_stats     (GHashTable *table);
 
+void            g_hash_table_iter_init       (GHashTableIter *iter, GHashTable *hash_table);
+gboolean        g_hash_table_iter_next       (GHashTableIter *iter, gpointer *key, gpointer *value);
+
 guint           g_spaced_primes_closest      (guint x);
 
 #define g_hash_table_insert(h,k,v)    g_hash_table_insert_replace ((h),(k),(v),FALSE)
@@ -435,6 +450,20 @@ GList *g_list_sort          (GList         *sort,
 			     GCompareFunc   func);
 
 /*
+ * ByteArray
+ */
+
+typedef struct _GByteArray GByteArray;
+struct _GByteArray {
+	guint8 *data;
+	gint len;
+};
+
+GByteArray *g_byte_array_new    (void);
+GByteArray* g_byte_array_append (GByteArray *array, const guint8 *data, guint len);
+guint8*  g_byte_array_free      (GByteArray *array, gboolean free_segment);
+
+/*
  * Array
  */
 
@@ -496,6 +525,7 @@ void     g_queue_push_tail (GQueue   *queue,
 gboolean g_queue_is_empty  (GQueue   *queue);
 GQueue  *g_queue_new       (void);
 void     g_queue_free      (GQueue   *queue);
+void     g_queue_foreach   (GQueue   *queue, GFunc func, gpointer user_data);
 
 /*
  * Messages
@@ -542,6 +572,8 @@ void           g_assertion_message    (const gchar *format, ...) G_GNUC_NORETURN
 #endif  /* ndef HAVE_C99_SUPPORT */
 #define g_log_set_handler(a,b,c,d)
 
+#define G_GNUC_INTERNAL
+
 /*
  * Conversions
  */
@@ -891,16 +923,30 @@ glong     g_utf8_strlen        (const gchar *str, gssize max);
 #   define GUINT16_TO_LE(x) (x)
 #   define GUINT_TO_LE(x)   (x)
 #   define GUINT32_TO_BE(x) GUINT32_SWAP_LE_BE(x)
+#   define GUINT16_FROM_BE(x) GUINT16_SWAP_LE_BE(x)
 #   define GUINT32_FROM_BE(x) GUINT32_SWAP_LE_BE(x)
+#   define GUINT64_FROM_BE(x) GUINT64_SWAP_LE_BE(x)
+#   define GINT16_FROM_BE(x) GUINT16_SWAP_LE_BE(x)
+#   define GINT32_FROM_BE(x) GUINT32_SWAP_LE_BE(x)
+#   define GINT64_FROM_BE(x) GUINT64_SWAP_LE_BE(x)
 #else
 #   define GUINT32_TO_LE(x) GUINT32_SWAP_LE_BE(x)
 #   define GUINT64_TO_LE(x) GUINT64_SWAP_LE_BE(x)
 #   define GUINT16_TO_LE(x) GUINT16_SWAP_LE_BE(x)
 #   define GUINT_TO_LE(x)   GUINT32_SWAP_LE_BE(x)
 #   define GUINT32_TO_BE(x) (x)
+#   define GUINT16_FROM_BE(x) (x)
 #   define GUINT32_FROM_BE(x) (x)
+#   define GUINT64_FROM_BE(x) (x)
+#   define GINT16_FROM_BE(x) (x)
+#   define GINT32_FROM_BE(x) (x)
+#   define GINT64_FROM_BE(x) (x)
 #endif
 
+#define GINT64_FROM_LE(x)   (GUINT64_TO_LE (x))
+#define GINT32_FROM_LE(x)   (GUINT32_TO_LE (x))
+#define GINT16_FROM_LE(x)   (GUINT16_TO_LE (x))
+
 #define GUINT32_FROM_LE(x)  (GUINT32_TO_LE (x))
 #define GUINT64_FROM_LE(x)  (GUINT64_TO_LE (x))
 #define GUINT16_FROM_LE(x)  (GUINT16_TO_LE (x))
diff --git a/eglib/src/gmem.c b/eglib/src/gmem.c
index beebd49..565239d 100644
--- a/eglib/src/gmem.c
+++ b/eglib/src/gmem.c
@@ -51,3 +51,55 @@ g_memdup (gconstpointer mem, guint byte_size)
 	return ptr;
 }
 
+gpointer g_realloc (gpointer obj, gsize size)
+{
+	gpointer ptr;
+	if (!size) {
+		g_free (obj);
+		return 0;
+	}
+	ptr = realloc (obj, size);
+	if (ptr)
+		return ptr;
+	g_error ("Could not allocate %i bytes", size);
+}
+
+gpointer 
+g_malloc (gsize x) 
+{ 
+	gpointer ptr;
+	if (!x)
+		return 0;
+	ptr = malloc (x);
+	if (ptr) 
+		return ptr;
+	g_error ("Could not allocate %i bytes", x);
+}
+
+gpointer g_malloc0 (gsize x) 
+{ 
+	gpointer ptr; 
+	if (!x) 
+		return 0; 
+	ptr = calloc(1,x); 
+	if (ptr) 
+		return ptr; 
+	g_error ("Could not allocate %i bytes", x);
+}
+
+gpointer g_try_malloc (gsize x) 
+{
+	if (x)
+		return malloc (x);
+	return 0;
+}
+
+
+gpointer g_try_realloc (gpointer obj, gsize size)
+{ 
+	if (!size) {
+		g_free (obj);
+		return 0;
+	} 
+	return realloc (obj, size);
+}
diff --git a/eglib/src/gmisc-unix.c b/eglib/src/gmisc-unix.c
index 5d8cd2a..860b930 100644
--- a/eglib/src/gmisc-unix.c
+++ b/eglib/src/gmisc-unix.c
@@ -72,39 +72,57 @@ g_path_is_absolute (const char *filename)
 	return (*filename == '/');
 }
 
-static pthread_mutex_t home_lock = PTHREAD_MUTEX_INITIALIZER;
+static pthread_mutex_t pw_lock = PTHREAD_MUTEX_INITIALIZER;
 static const gchar *home_dir;
+static const gchar *user_name;
 
-/* Give preference to /etc/passwd than HOME */
-const gchar *
-g_get_home_dir (void)
+static void
+get_pw_data (void)
 {
-	if (home_dir == NULL){
-		pthread_mutex_lock (&home_lock);
-		if (home_dir == NULL){
 #ifdef HAVE_GETPWUID_R
-			struct passwd pw;
-			struct passwd *result;
-			char buf [4096];
+	struct passwd pw;
+	struct passwd *result;
+	char buf [4096];
+#endif
 
-			if (getpwuid_r (getuid (), &pw, buf, 4096, &result) == 0)
-				home_dir = g_strdup (pw.pw_dir);
+	if (user_name != NULL)
+		return;
+
+	pthread_mutex_lock (&pw_lock);
+	if (user_name != NULL) {
+		pthread_mutex_unlock (&pw_lock);
+		return;
+	}
+#ifdef HAVE_GETPWUID_R
+	if (getpwuid_r (getuid (), &pw, buf, 4096, &result) == 0) {
+		home_dir = g_strdup (pw.pw_dir);
+		user_name = g_strdup (pw.pw_name);
+	}
 #endif
-			if (home_dir == NULL)
-				home_dir = g_getenv ("HOME");
-		}
-		pthread_mutex_unlock (&home_lock);
+	if (home_dir == NULL)
+		home_dir = g_getenv ("HOME");
+
+	if (user_name == NULL) {
+		user_name = g_getenv ("USER");
+		if (user_name == NULL)
+			user_name = "somebody";
 	}
+	pthread_mutex_unlock (&pw_lock);
+}
+
+/* Give preference to /etc/passwd than HOME */
+const gchar *
+g_get_home_dir (void)
+{
+	get_pw_data ();
 	return home_dir;
 }
 
 const char *
 g_get_user_name (void)
 {
-	const char *retName = g_getenv ("USER");
-	if (!retName)
-		retName = "somebody";
-	return retName;
+	get_pw_data ();
+	return user_name;
 }
 
 static const char *tmp_dir;
diff --git a/eglib/src/goutput.c b/eglib/src/goutput.c
index 2272c97..bce2f0a 100644
--- a/eglib/src/goutput.c
+++ b/eglib/src/goutput.c
@@ -153,6 +153,6 @@ g_assertion_message (const gchar *format, ...)
 	va_start (args, format);
 	g_logv (G_LOG_DOMAIN, G_LOG_LEVEL_ERROR, format, args);
 	va_end (args);
-	g_assert_not_reached ();
+	abort ();
 }
 
diff --git a/eglib/src/gqueue.c b/eglib/src/gqueue.c
index 2eedbf6..cd94e1f 100644
--- a/eglib/src/gqueue.c
+++ b/eglib/src/gqueue.c
@@ -105,3 +105,9 @@ g_queue_free (GQueue *queue)
 	g_list_free (queue->head);
 	g_free (queue);
 }
+
+void 
+g_queue_foreach (GQueue *queue, GFunc func, gpointer user_data)
+{
+	g_list_foreach (queue->head, func, user_data);
+}
diff --git a/eglib/src/gshell.c b/eglib/src/gshell.c
index b322ff5..8f86833 100644
--- a/eglib/src/gshell.c
+++ b/eglib/src/gshell.c
@@ -33,7 +33,7 @@ split_cmdline (const gchar *cmdline, GPtrArray *array, GError **error)
 {
 	gchar *ptr;
 	gchar c;
-	gboolean escaped = FALSE;
+	gboolean escaped = FALSE, fresh = TRUE;
 	gchar quote_char = '\0';
 	GString *str;
 
@@ -57,8 +57,10 @@ split_cmdline (const gchar *cmdline, GPtrArray *array, GError **error)
 		} else if (quote_char) {
 			if (c == quote_char) {
 				quote_char = '\0';
-				g_ptr_array_add (array, g_string_free (str, FALSE));
-				str = g_string_new ("");
+				if (fresh && g_ascii_isspace (*ptr)){
+					g_ptr_array_add (array, g_string_free (str, FALSE));
+					str = g_string_new ("");
+				}
 			} else if (c == '\\'){
 				escaped = TRUE;
 			} else 
@@ -71,6 +73,7 @@ split_cmdline (const gchar *cmdline, GPtrArray *array, GError **error)
 		} else if (c == '\\') {
 			escaped = TRUE;
 		} else if (c == '\'' || c == '"') {
+			fresh = str->len == 0;
 			quote_char = c;
 		} else {
 			g_string_append_c (str, c);
diff --git a/eglib/src/gstr.c b/eglib/src/gstr.c
index 424abf8..015f798 100644
--- a/eglib/src/gstr.c
+++ b/eglib/src/gstr.c
@@ -69,6 +69,10 @@ g_strdupv (gchar **str_array)
 	guint length;
 	gchar **ret;
 	guint i;
+
+	if (!str_array)
+		return NULL;
+
 	length = g_strv_length(str_array);
 	ret = g_new0(gchar *, length + 1);
 	for (i = 0; str_array[i]; i++) {
diff --git a/eglib/src/gutf8.c b/eglib/src/gutf8.c
index 6abd703..cb17761 100644
--- a/eglib/src/gutf8.c
+++ b/eglib/src/gutf8.c
@@ -65,7 +65,7 @@ utf8_to_utf16_len (const gchar *str, glong len, glong *items_read, GError **erro
 	glong in_pos, ret;
 
 	if (len < 0)
-		len = strlen (str);
+		len = (glong) strlen (str);
 
 	in_pos = 0;
 	ret = 0;
@@ -215,7 +215,7 @@ g_utf8_to_utf16 (const gchar *str, glong len, glong *items_read, glong *items_wr
 		*error = NULL;
 
 	if (len < 0)
-		len = strlen (str);
+		len = (glong) strlen (str);
 
 	if (items_read)
 		*items_read = 0;
diff --git a/eglib/test/Makefile.am b/eglib/test/Makefile.am
index 3411ef9..0f4f07a 100644
--- a/eglib/test/Makefile.am
+++ b/eglib/test/Makefile.am
@@ -29,7 +29,7 @@ SOURCES = \
 
 test_eglib_SOURCES = $(SOURCES)
 
-test_eglib_CFLAGS = -Wall -Werror -D_FORTIFY_SOURCE=2 -I$(srcdir)/../src -I../src -DDRIVER_NAME=\"EGlib\"
+test_eglib_CFLAGS = -Wall -D_FORTIFY_SOURCE=2 -I$(srcdir)/../src -I../src -DDRIVER_NAME=\"EGlib\"
 test_eglib_LDADD = ../src/libeglib.la
 
 run-eglib: all
diff --git a/eglib/test/Makefile.in b/eglib/test/Makefile.in
index db57250..1a7dac3 100644
--- a/eglib/test/Makefile.in
+++ b/eglib/test/Makefile.in
@@ -39,7 +39,8 @@ target_triplet = @target@
 subdir = test
 DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
+	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs
@@ -94,9 +95,6 @@ depcomp = $(SHELL) $(top_srcdir)/../depcomp
 am__depfiles_maybe = depfiles
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
 CCLD = $(CC)
 LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
 	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
@@ -121,6 +119,7 @@ CPPFLAGS = @CPPFLAGS@
 CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
+DOLT_BASH = @DOLT_BASH@
 DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
@@ -142,6 +141,8 @@ GUINT_TO_POINTER = @GUINT_TO_POINTER@
 G_GINT64_FORMAT = @G_GINT64_FORMAT@
 G_GUINT64_FORMAT = @G_GUINT64_FORMAT@
 G_HAVE_ISO_VARARGS = @G_HAVE_ISO_VARARGS@
+HAVE_ALLOCA_H = @HAVE_ALLOCA_H@
+ICONV_LIBS = @ICONV_LIBS@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -154,6 +155,8 @@ LIBS = @LIBS@
 LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
+LTCOMPILE = @LTCOMPILE@
+LTCXXCOMPILE = @LTCXXCOMPILE@
 LTLIBOBJS = @LTLIBOBJS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
@@ -268,7 +271,7 @@ SOURCES = \
 	memory.c
 
 test_eglib_SOURCES = $(SOURCES)
-test_eglib_CFLAGS = -Wall -Werror -D_FORTIFY_SOURCE=2 -I$(srcdir)/../src -I../src -DDRIVER_NAME=\"EGlib\"
+test_eglib_CFLAGS = -Wall -D_FORTIFY_SOURCE=2 -I$(srcdir)/../src -I../src -DDRIVER_NAME=\"EGlib\"
 test_eglib_LDADD = ../src/libeglib.la
 @HAVE_GLIB_TRUE at test_glib_SOURCES = $(SOURCES)
 @HAVE_GLIB_TRUE at test_glib_CFLAGS = `pkg-config --cflags glib-2.0` -DDRIVER_NAME=\"GLib\"
diff --git a/eglib/test/hashtable.c b/eglib/test/hashtable.c
index 0b2f20c..8eb9885 100644
--- a/eglib/test/hashtable.c
+++ b/eglib/test/hashtable.c
@@ -131,12 +131,45 @@ RESULT hash_grow (void)
 	return NULL;
 }
 
+RESULT hash_iter (void)
+{
+#if !defined(GLIB_MAJOR_VERSION) || GLIB_CHECK_VERSION(2, 16, 0)
+	GHashTable *hash = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, NULL);
+	GHashTableIter iter;
+	int i, sum, keys_sum, values_sum;
+	gpointer key, value;
+
+	sum = 0;
+	for (i = 0; i < 1000; i++) {
+		sum += i;
+		g_hash_table_insert (hash, GUINT_TO_POINTER (i), GUINT_TO_POINTER (i));
+	}
+
+	keys_sum = values_sum = 0;
+	g_hash_table_iter_init (&iter, hash);
+	while (g_hash_table_iter_next (&iter, &key, &value)) {
+		if (key != value)
+			return FAILED ("key != value");
+		keys_sum += GPOINTER_TO_UINT (key);
+		values_sum += GPOINTER_TO_UINT (value);
+	}
+	if (keys_sum != sum || values_sum != sum)
+		return FAILED ("Did not find all key-value pairs");
+	g_hash_table_destroy (hash);
+	return NULL;
+#else
+	/* GHashTableIter was added in glib 2.16 */
+	return NULL;
+#endif
+}
+
 static Test hashtable_tests [] = {
 	{"t1", hash_t1},
 	{"t2", hash_t2},
 	{"grow", hash_grow},
 	{"default", hash_default},
 	{"null_lookup", hash_null_lookup},
+	{"iter", hash_iter},
 	{NULL, NULL}
 };
 
diff --git a/eglib/test/shell.c b/eglib/test/shell.c
index c55e27c..4715f1c 100644
--- a/eglib/test/shell.c
+++ b/eglib/test/shell.c
@@ -55,7 +55,7 @@ test_shell_argv1 ()
 	if (!ret)
 		return FAILED ("11. It should return TRUE");
 	if (argc != 2)
-		return FAILED ("12. argc was %d", argc);
+		return FAILED ("12. argc was %d expected 2", argc);
 	if (strcmp (argv [0], "hola"))
 		return FAILED ("13. argv[0] was %s", argv [0]);
 	if (strcmp (argv [1], "bola"))
@@ -72,7 +72,7 @@ test_shell_argv1 ()
 	if (!ret)
 		return FAILED ("16. It should return TRUE");
 	if (argc != 3)
-		return FAILED ("17. argc was %d", argc);
+		return FAILED ("17. argc was %d expected 3", argc);
 	if (strcmp (argv [0], "hola"))
 		return FAILED ("18. argv[0] was %s", argv [0]);
 	if (strcmp (argv [1], ""))
@@ -85,6 +85,19 @@ test_shell_argv1 ()
 	g_strfreev (argv);
 	argv = NULL;
 	argc = 0;
+	error = NULL;
+	ret = g_shell_parse_argv ("hola'' bola", &argc, &argv, &error);
+	if (!ret)
+		return FAILED ("21. It should return TRUE");
+	if (argc != 2)
+		return FAILED ("22. argc was %d expected 2", argc);
+	if (strcmp (argv [0], "hola"))
+		return FAILED ("23. argv[0] was %s", argv [0]);
+	if (strcmp (argv [1], "bola"))
+		return FAILED ("24. argv[2] was %s", argv [1]);
+	if (error != NULL)
+		return FAILED ("25. error is not null");
+	
 	return OK;
 }
 
@@ -103,7 +116,7 @@ test_shell_argv2 ()
 	if (!ret)
 		return FAILED ("1. It should return TRUE");
 	if (argc != 2)
-		return FAILED ("2. argc was %d", argc);
+		return FAILED ("2. argc was %d expected 2", argc);
 	if (strcmp (argv [0], "hola"))
 		return FAILED ("3. argv[0] was %s", argv [0]);
 	if (strcmp (argv [1], "bola"))
@@ -119,7 +132,7 @@ test_shell_argv2 ()
 	if (!ret)
 		return FAILED ("6. It should return TRUE");
 	if (argc != 3)
-		return FAILED ("7. argc was %d", argc);
+		return FAILED ("7. argc was %d expected 3", argc);
 	if (strcmp (argv [0], "hola"))
 		return FAILED ("8. argv[0] was %s", argv [0]);
 	if (strcmp (argv [1], ""))
@@ -137,7 +150,7 @@ test_shell_argv2 ()
 	if (!ret)
 		return FAILED ("10. It should return TRUE");
 	if (argc != 3)
-		return FAILED ("11. argc was %d", argc);
+		return FAILED ("11. argc was %d expected 3", argc);
 	if (strcmp (argv [0], "hola"))
 		return FAILED ("12. argv[0] was %s", argv [0]);
 	if (strcmp (argv [1], "\t"))
@@ -155,7 +168,7 @@ test_shell_argv2 ()
 	if (!ret)
 		return FAILED ("16. It should return TRUE");
 	if (argc != 3)
-		return FAILED ("17. argc was %d", argc);
+		return FAILED ("17. argc was %d expected 3", argc);
 	if (strcmp (argv [0], "hola"))
 		return FAILED ("18. argv[0] was %s", argv [0]);
 	if (strcmp (argv [1], "\t"))
@@ -184,7 +197,7 @@ test_shell_argv3 ()
 	if (ret)
 		return FAILED ("1. It should return FALSE");
 	if (argc != 0)
-		return FAILED ("2. argc was %d", argc);
+		return FAILED ("2. argc was %d expected 0", argc);
 	if (argv != NULL)
 		return FAILED ("3. argv[0] was %s", argv [0]);
 	if (error == NULL)
@@ -197,7 +210,7 @@ test_shell_argv3 ()
 	if (!ret)
 		return FAILED ("5. It should return TRUE");
 	if (argc != 2)
-		return FAILED ("6. argc was %d", argc);
+		return FAILED ("6. argc was %d expected 2", argc);
 	if (strcmp (argv [0], "hola"))
 		return FAILED ("18. argv[0] was %s", argv [0]);
 	if (strcmp (argv [1], "\"bola"))
@@ -212,7 +225,7 @@ test_shell_argv3 ()
 	if (!ret)
 		return FAILED ("9. It should return TRUE. %s", error->message);
 	if (argc != 2)
-		return FAILED ("10. argc was %d", argc);
+		return FAILED ("10. argc was %d expected 2", argc);
 	if (strcmp (argv [0], "hola"))
 		return FAILED ("11. argv[0] was %s", argv [0]);
 	if (strcmp (argv [1], "\n\\'bola"))
@@ -243,7 +256,7 @@ test_shell_argv4 ()
 	if (!ret)
 		return FAILED ("1. It should return TRUE");
 	if (argc != 3)
-		return FAILED ("2. argc was %d", argc);
+		return FAILED ("2. argc was %d expected 3", argc);
 	if (argv == NULL)
 		return FAILED ("3. argv[0] was NULL");
 	if (error != NULL)
@@ -259,6 +272,37 @@ test_shell_argv4 ()
 	return OK;
 }
 
+// This is https://bugzilla.novell.com/show_bug.cgi?id=655896
+RESULT
+test_shell_argv5 ()
+{
+	GError *error;
+	gint argc;
+	gchar **argv;
+	gboolean ret;
+	char *str = "echo \"foo\",\"bar\"";
+
+	argv = NULL;
+	argc = 0;
+	error = NULL;
+	ret = g_shell_parse_argv (str, &argc, &argv, &error);
+	if (!ret)
+		return FAILED ("1. It should return TRUE");
+	if (argc != 2)
+		return FAILED ("2. argc was %d expected 2", argc);
+	if (argv == NULL)
+		return FAILED ("3. argv[0] was NULL");
+	if (error != NULL)
+		return FAILED ("4. error was set");
+
+	if (strcmp (argv [0], "echo"))
+		return FAILED ("5. Expected echo got %s", argv [0]);
+	if (strcmp (argv [1], "foo,bar"))
+		return FAILED ("6. Expected foo,bar, got: %s", argv [1]);
+	
+	return OK;
+}
+
 RESULT
 test_quote ()
 {
@@ -274,10 +318,11 @@ test_quote ()
 }
 
 static Test shell_tests [] = {
-	{"g_shell_parse_argv1", test_shell_argv1},
-	{"g_shell_parse_argv2", test_shell_argv2},
-	{"g_shell_parse_argv3", test_shell_argv3},
-	{"g_shell_parse_argv4", test_shell_argv4},
+	{"test_shell_argv1", test_shell_argv1},
+	{"test_shell_argv2", test_shell_argv2},
+	{"test_shell_argv3", test_shell_argv3},
+	{"test_shell_argv4", test_shell_argv4},
+	{"test_shell_argv5", test_shell_argv5},
 	{"g_shell_quote", test_quote},
 	{NULL, NULL}
 };
diff --git a/eglib/test/string-util.c b/eglib/test/string-util.c
index 83f7115..14d24d6 100644
--- a/eglib/test/string-util.c
+++ b/eglib/test/string-util.c
@@ -621,6 +621,30 @@ test_ascii_strdown ()
 	return OK;
 }
 
+RESULT
+test_strdupv ()
+{
+	gchar **one;
+	gchar **two;
+	gint len;
+
+	one = g_strdupv (NULL);
+	if (one)
+		return FAILED ("Should have been NULL");
+
+	one = g_malloc (sizeof (gchar *));
+	*one = NULL;
+	two = g_strdupv (one);
+	if (!two)
+		FAILED ("Should have been not NULL");
+	len = g_strv_length (two);
+	if (len)
+		FAILED ("Should have been 0");
+	g_strfreev (two);
+	g_strfreev (one);
+	return NULL;
+}
+
 static Test strutil_tests [] = {
 	{"g_strfreev", test_strfreev},
 	{"g_strconcat", test_concat},
@@ -639,6 +663,7 @@ static Test strutil_tests [] = {
 	{"g_strescape", test_strescape},
 	{"g_ascii_strncasecmp", test_ascii_strncasecmp },
 	{"g_ascii_strdown", test_ascii_strdown },
+	{"g_strdupv", test_strdupv },
 	{NULL, NULL}
 };
 
diff --git a/eglib/winconfig.h b/eglib/winconfig.h
new file mode 100755
index 0000000..fdab3dd
--- /dev/null
+++ b/eglib/winconfig.h
@@ -0,0 +1,76 @@
+/* config.h.  Generated by configure.  */
+/* config.h.in.  Generated from configure.ac by autoheader.  */
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#define HAVE_DLFCN_H 1
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the <pwd.h> header file. */
+/* #undef HAVE_PWD_H 1 */
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the `strlcpy' function. */
+/* #undef HAVE_STRLCPY */
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+/* #undef HAVE_SYS_TIME_H */
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <sys/wait.h> header file. */
+/* #undef HAVE_SYS_WAIT_H */
+
+/* Define to 1 if you have the <unistd.h> header file. */
+/* #undef HAVE_UNISTD_H */
+
+/* Name of package */
+#define PACKAGE "eglib"
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT ""
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME ""
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING ""
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME ""
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION ""
+
+/* The size of a `int', as computed by sizeof. */
+#define SIZEOF_INT 4
+
+/* The size of a `void *', as computed by sizeof. */
+#define SIZEOF_VOID_P 4
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Version number of package */
+#define VERSION "0.1"
+
+#define HAVE_STRTOK_R 1
diff --git a/ikvm-native/ChangeLog b/ikvm-native/ChangeLog
index 715f44b..8d65baf 100644
--- a/ikvm-native/ChangeLog
+++ b/ikvm-native/ChangeLog
@@ -1,3 +1,7 @@
+2010-11-14  Zoltan Varga  <vargaz at gmail.com>
+
+	Remove the unused and incomplete CMake build scripts for now.
+
 2006-09-11  Zoltan Varga  <vargaz at gmail.com>
 
 	* jni.c: Apply a patch from the freebsd ports tree. Include the proper
diff --git a/ikvm-native/ChangeLog b/ikvm-native/ChangeLog.old
similarity index 100%
copy from ikvm-native/ChangeLog
copy to ikvm-native/ChangeLog.old
diff --git a/ikvm-native/Makefile.in b/ikvm-native/Makefile.in
index a855fb6..9c8cd61 100644
--- a/ikvm-native/Makefile.in
+++ b/ikvm-native/Makefile.in
@@ -161,6 +161,7 @@ MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
 MONO_DL_NEED_USCORE = @MONO_DL_NEED_USCORE@
 MONO_NACL_ALIGN_MASK_OFF = @MONO_NACL_ALIGN_MASK_OFF@
+MOONLIGHT_DEFINES = @MOONLIGHT_DEFINES@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
diff --git a/libgc/ChangeLog b/libgc/ChangeLog
index bc3e262..5b9375b 100644
--- a/libgc/ChangeLog
+++ b/libgc/ChangeLog
@@ -1,8 +1,87 @@
+2011-01-07  Marek Safar  <marek.safar at gmail.com>
+
+	Ignore more files
+
+2010-12-16  Elijah Taylor  <elijahtaylor at google.com>
+
+	Merged in rest of Native Client changes, untested
+
+2010-12-04  Zoltan Varga  <vargaz at gmail.com>
+
+	Really fix the ia64 build.
+
+2010-12-04  Zoltan Varga  <vargaz at gmail.com>
+
+	Hopefully fix the ia64 libgc build.
+
+2010-12-02  Zoltan Varga  <vargaz at gmail.com>
+
+	Revert "Fix the OSC build breakage by only compiling mach_dep.c on
+	openbsd."
+
+	This reverts commit 103450e4a270ed47fa93fc0a99fcdb95e602c5fa.
+
+2010-12-01  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix the OSC build breakage by only compiling mach_dep.c on
+	openbsd.
+
+2010-11-29  Robert Nagy  <robert at openbsd.org>
+
+	Add support for the internal boehm-gc on OpenBSD
+
+2010-11-29  Robert Nagy  <robert at openbsd.org>
+
+	Add support for the internal boehm-gc on OpenBSD
+
+2010-11-15  Zoltan Varga  <vargaz at gmail.com>
+
+	Make libgc use dolt too.
+
+2010-11-14  Zoltan Varga  <vargaz at gmail.com>
+
+	Remove the unused and incomplete CMake build scripts for now.
+
+2010-11-12  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	make -jX should work in libgc/ now.
+
 2010-10-18  Zoltan Varga  <vargaz at gmail.com>
 
 	Avoid calling sem_post on a uninitialized semaphore during thread
 	attach, it works under linux, but fails under *bsd. Fixes #647248.
 
+2010-10-14  Geoff Norton  <grompf at sublimeintervention.com>
+
+	[android] pthread_kill cannot be used safely on android
+
+	Android's fork() function does not properly update the
+	pthread_internal_t->threadid variable to point to the tid of the
+	fork()'d thread, and instead still points to the pid of zygote. As
+	a result we need to track the android tid's manually since
+	gettid() is sane, and use an alternate to pthread_kill on android
+	Additionally, disable sgen support on android until the same work
+	has been done there
+
+	r: kumpera, vargaz
+
+2010-10-08  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Undo mach_dep change.
+
+2010-10-08  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Allow -jX when compiling libgc
+
+	Add mach_dep.c to the sources. Fixes bug #644933. Thanks to
+	Mathias Ruediger.
+
+2010-09-29  Koushik Dutta  <koushd at gmail.com>
+
+	Work around Android's pthread/kernel_id/fork bug to fix mono
+	multithreading and GC_stop_world in processes that have been
+	forked.
+
 2010-08-26  Zoltan Varga  <vargaz at gmail.com>
 
 	Avoid warnings on machines with cpus > 16.
diff --git a/libgc/Makefile.am b/libgc/Makefile.am
index 735cc3b..daf32fe 100644
--- a/libgc/Makefile.am
+++ b/libgc/Makefile.am
@@ -36,8 +36,10 @@ EXTRA_DIST =
 
 if POWERPC_DARWIN
 asm_libgc_sources = powerpc_darwin_mach_dep.s
-else
-asm_libgc_sources = 
+endif
+
+if TARGET_IA64
+asm_libgc_sources = ia64_save_regs_in_stack.s
 endif
 
 libmonogc_la_SOURCES = allchblk.c alloc.c blacklst.c checksums.c dbg_mlc.c \
@@ -47,12 +49,12 @@ obj_map.c os_dep.c pcr_interface.c ptr_chck.c real_malloc.c reclaim.c \
 solaris_pthreads.c solaris_threads.c specific.c stubborn.c typd_mlc.c \
 backgraph.c win32_threads.c \
 pthread_support.c pthread_stop_world.c darwin_stop_world.c \
-$(asm_libgc_sources)
+openbsd_stop_world.c mach_dep.c $(asm_libgc_sources)
 
 # Include THREADDLLIBS here to ensure that the correct versions of
 # linuxthread semaphore functions get linked:
-libmonogc_la_LIBADD = @addobjs@ $(THREADDLLIBS) $(UNWINDLIBS)
-libmonogc_la_DEPENDENCIES = @addobjs@
+libmonogc_la_LIBADD = $(THREADDLLIBS) $(UNWINDLIBS)
+libmonogc_la_DEPENDENCIES =
 libmonogc_la_LDFLAGS = -version-info 1:2:0
 
 EXTRA_libmonogc_la_SOURCES = alpha_mach_dep.S \
@@ -93,7 +95,7 @@ endif
 #TESTS = gctest $(extra_checks)
 
 ## FIXME: relies on internal code generated by automake.
-all_objs = @addobjs@ $(libgc_la_OBJECTS)
+all_objs = $(libgc_la_OBJECTS)
 $(all_objs) : include/private/gcconfig.h include/private/gc_priv.h \
 include/private/gc_hdrs.h include/gc.h include/gc_gcj.h include/gc_mark.h
 
@@ -113,7 +115,7 @@ endif
 
 ## We have our own definition of LTCOMPILE because we want to use our
 ## CFLAGS, not those passed in from the top level make.
-LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) \
+LTCOMPILE = $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(INCLUDES) \
 	-I$(top_srcdir)/include $(AM_CPPFLAGS) $(CPPFLAGS) \
 	$(AM_CFLAGS) $(MY_CFLAGS) $(GC_CFLAGS) 
 LINK = $(LIBTOOL) --mode=link $(CC) $(AM_CFLAGS) $(MY_CFLAGS) $(LDFLAGS) -o $@
diff --git a/libgc/Makefile.in b/libgc/Makefile.in
index 7ad4e95..d52bf8a 100644
--- a/libgc/Makefile.in
+++ b/libgc/Makefile.in
@@ -71,7 +71,9 @@ am__libmonogc_static_la_SOURCES_DIST = allchblk.c alloc.c blacklst.c \
 	ptr_chck.c real_malloc.c reclaim.c solaris_pthreads.c \
 	solaris_threads.c specific.c stubborn.c typd_mlc.c backgraph.c \
 	win32_threads.c pthread_support.c pthread_stop_world.c \
-	darwin_stop_world.c powerpc_darwin_mach_dep.s
+	darwin_stop_world.c openbsd_stop_world.c mach_dep.c \
+	powerpc_darwin_mach_dep.s ia64_save_regs_in_stack.s
+ at POWERPC_DARWIN_FALSE@@TARGET_IA64_TRUE at am__objects_1 = ia64_save_regs_in_stack.lo
 @POWERPC_DARWIN_TRUE at am__objects_1 = powerpc_darwin_mach_dep.lo
 am__objects_2 = allchblk.lo alloc.lo blacklst.lo checksums.lo \
 	dbg_mlc.lo dyn_load.lo finalize.lo gc_dlopen.lo gcj_mlc.lo \
@@ -80,7 +82,8 @@ am__objects_2 = allchblk.lo alloc.lo blacklst.lo checksums.lo \
 	real_malloc.lo reclaim.lo solaris_pthreads.lo \
 	solaris_threads.lo specific.lo stubborn.lo typd_mlc.lo \
 	backgraph.lo win32_threads.lo pthread_support.lo \
-	pthread_stop_world.lo darwin_stop_world.lo $(am__objects_1)
+	pthread_stop_world.lo darwin_stop_world.lo \
+	openbsd_stop_world.lo mach_dep.lo $(am__objects_1)
 am_libmonogc_static_la_OBJECTS = $(am__objects_2)
 libmonogc_static_la_OBJECTS = $(am_libmonogc_static_la_OBJECTS)
 libmonogc_static_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
@@ -93,7 +96,8 @@ am__libmonogc_la_SOURCES_DIST = allchblk.c alloc.c blacklst.c \
 	ptr_chck.c real_malloc.c reclaim.c solaris_pthreads.c \
 	solaris_threads.c specific.c stubborn.c typd_mlc.c backgraph.c \
 	win32_threads.c pthread_support.c pthread_stop_world.c \
-	darwin_stop_world.c powerpc_darwin_mach_dep.s
+	darwin_stop_world.c openbsd_stop_world.c mach_dep.c \
+	powerpc_darwin_mach_dep.s ia64_save_regs_in_stack.s
 am_libmonogc_la_OBJECTS = allchblk.lo alloc.lo blacklst.lo \
 	checksums.lo dbg_mlc.lo dyn_load.lo finalize.lo gc_dlopen.lo \
 	gcj_mlc.lo headers.lo malloc.lo mallocx.lo mark.lo mark_rts.lo \
@@ -101,7 +105,8 @@ am_libmonogc_la_OBJECTS = allchblk.lo alloc.lo blacklst.lo \
 	ptr_chck.lo real_malloc.lo reclaim.lo solaris_pthreads.lo \
 	solaris_threads.lo specific.lo stubborn.lo typd_mlc.lo \
 	backgraph.lo win32_threads.lo pthread_support.lo \
-	pthread_stop_world.lo darwin_stop_world.lo $(am__objects_1)
+	pthread_stop_world.lo darwin_stop_world.lo \
+	openbsd_stop_world.lo mach_dep.lo $(am__objects_1)
 libmonogc_la_OBJECTS = $(am_libmonogc_la_OBJECTS)
 libmonogc_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
@@ -170,6 +175,7 @@ CXXINCLUDES = @CXXINCLUDES@
 CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
+DOLT_BASH = @DOLT_BASH@
 DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
@@ -195,6 +201,11 @@ LIBS = @LIBS@
 LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
+LTCOMPILE = $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(INCLUDES) \
+	-I$(top_srcdir)/include $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(MY_CFLAGS) $(GC_CFLAGS) 
+
+LTCXXCOMPILE = @LTCXXCOMPILE@
 LTLIBOBJS = @LTLIBOBJS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
@@ -230,7 +241,6 @@ ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
 addincludes = @addincludes@
 addlibs = @addlibs@
-addobjs = @addobjs@
 addtests = @addtests@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
@@ -305,8 +315,8 @@ EXTRA_DIST = alpha_mach_dep.S mips_sgi_mach_dep.s sparc_mach_dep.S \
 	cord/cordbscs.c cord/cordtest.c cord/de.c cord/de_win.c \
 	cord/de_win.ICO cord/cordprnt.c cord/cordxtra.c cord/de_cmds.h \
 	cord/de_win.h cord/de_win.RC configure.host
- at POWERPC_DARWIN_FALSE@asm_libgc_sources = 
 @POWERPC_DARWIN_TRUE at asm_libgc_sources = powerpc_darwin_mach_dep.s
+ at TARGET_IA64_TRUE@asm_libgc_sources = ia64_save_regs_in_stack.s
 libmonogc_la_SOURCES = allchblk.c alloc.c blacklst.c checksums.c dbg_mlc.c \
 dyn_load.c finalize.c gc_dlopen.c gcj_mlc.c headers.c \
 malloc.c mallocx.c mark.c mark_rts.c misc.c new_hblk.c \
@@ -314,13 +324,13 @@ obj_map.c os_dep.c pcr_interface.c ptr_chck.c real_malloc.c reclaim.c \
 solaris_pthreads.c solaris_threads.c specific.c stubborn.c typd_mlc.c \
 backgraph.c win32_threads.c \
 pthread_support.c pthread_stop_world.c darwin_stop_world.c \
-$(asm_libgc_sources)
+openbsd_stop_world.c mach_dep.c $(asm_libgc_sources)
 
 
 # Include THREADDLLIBS here to ensure that the correct versions of
 # linuxthread semaphore functions get linked:
-libmonogc_la_LIBADD = @addobjs@ $(THREADDLLIBS) $(UNWINDLIBS)
-libmonogc_la_DEPENDENCIES = @addobjs@
+libmonogc_la_LIBADD = $(THREADDLLIBS) $(UNWINDLIBS)
+libmonogc_la_DEPENDENCIES = 
 libmonogc_la_LDFLAGS = -version-info 1:2:0
 EXTRA_libmonogc_la_SOURCES = alpha_mach_dep.S \
     mips_sgi_mach_dep.s mips_ultrix_mach_dep.s powerpc_darwin_mach_dep.s \
@@ -349,13 +359,9 @@ AM_CFLAGS = @GC_CFLAGS@
 #test_cpp_LDADD = ./libgc.la ./libgccpp.la $(THREADDLLIBS) $(UNWINDLIBS) $(EXTRA_TEST_LIBS)
 
 #TESTS = gctest $(extra_checks)
-all_objs = @addobjs@ $(libgc_la_OBJECTS)
+all_objs = $(libgc_la_OBJECTS)
 @COMPILER_XLC_FALSE at ASM_CPP_OPTIONS = -Wp,-P -x assembler-with-cpp
 @COMPILER_XLC_TRUE at ASM_CPP_OPTIONS = 
-LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) \
-	-I$(top_srcdir)/include $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CFLAGS) $(MY_CFLAGS) $(GC_CFLAGS) 
-
 LINK = $(LIBTOOL) --mode=link $(CC) $(AM_CFLAGS) $(MY_CFLAGS) $(LDFLAGS) -o $@
 
 # Work around what appears to be a GNU make bug handling MAKEFLAGS
@@ -474,6 +480,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gc_dlopen.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gcj_mlc.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/headers.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/mach_dep.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/malloc.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/mallocx.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/mark.Plo at am__quote@
@@ -481,6 +488,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/misc.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/new_hblk.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/obj_map.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/openbsd_stop_world.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/os_dep.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pcr_interface.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pthread_stop_world.Plo at am__quote@
diff --git a/libgc/acinclude.m4 b/libgc/acinclude.m4
index 510967b..16c7da8 100644
--- a/libgc/acinclude.m4
+++ b/libgc/acinclude.m4
@@ -1,47 +1,181 @@
-# 
-# 
-# THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED
-# OR IMPLIED.  ANY USE IS AT YOUR OWN RISK.
-# 
-# Permission is hereby granted to use or copy this program
-# for any purpose,  provided the above notices are retained on all copies.
-# Permission to modify the code and to distribute modified code is granted,
-# provided the above notices are retained, and a notice that the code was
-# modified is included with the above copyright notice.
-#
-# Modified by: Grzegorz Jakacki <jakacki at acm dot org>
-
-# GC_SET_VERSION
-# sets and AC_DEFINEs GC_VERSION_MAJOR, GC_VERSION_MINOR and GC_ALPHA_VERSION
-# based on the contents of PACKAGE_VERSION; PACKAGE_VERSION must conform to
-# [0-9]+[.][0-9]+(alpha[0.9]+)? 
-# in lex syntax; if there is no alpha number, GC_ALPHA_VERSION is empty
-#
-AC_DEFUN(GC_SET_VERSION, [
-  AC_MSG_CHECKING(GC version numbers)
-  GC_VERSION_MAJOR=`echo $PACKAGE_VERSION | sed 's/^\([[0-9]][[0-9]]*\)[[.]].*$/\1/g'`
-  GC_VERSION_MINOR=`echo $PACKAGE_VERSION | sed 's/^[[^.]]*[[.]]\([[0-9]][[0-9]]*\).*$/\1/g'`
-  GC_ALPHA_VERSION=`echo $PACKAGE_VERSION | sed 's/^[[^.]]*[[.]][[0-9]]*//'`
-
-  case "$GC_ALPHA_VERSION" in
-    alpha*) 
-      GC_ALPHA_VERSION=`echo $GC_ALPHA_VERSION \
-      | sed 's/alpha\([[0-9]][[0-9]]*\)/\1/'` ;;
-    *)  GC_ALPHA_MAJOR='' ;;
-  esac
-
-  if test :$GC_VERSION_MAJOR: = :: \
-     -o   :$GC_VERSION_MINOR: = :: ;
-  then
-    AC_MSG_RESULT(invalid)
-    AC_MSG_ERROR([nonconforming PACKAGE_VERSION='$PACKAGE_VERSION'])
-  fi
-  
-  AC_DEFINE_UNQUOTED(GC_VERSION_MAJOR, $GC_VERSION_MAJOR)
-  AC_DEFINE_UNQUOTED(GC_VERSION_MINOR, $GC_VERSION_MINOR)
-  if test :$GC_ALPHA_VERSION: != :: ; then
-    AC_DEFINE_UNQUOTED(GC_ALPHA_VERSION, $GC_ALPHA_VERSION)
-  fi
-  AC_MSG_RESULT(major=$GC_VERSION_MAJOR minor=$GC_VERSION_MINOR \
-${GC_ALPHA_VERSION:+alpha=}$GC_ALPHA_VERSION)
+dnl dolt, a replacement for libtool
+dnl Copyright © 2007-2008 Josh Triplett <josh at freedesktop.org>
+dnl Copying and distribution of this file, with or without modification,
+dnl are permitted in any medium without royalty provided the copyright
+dnl notice and this notice are preserved.
+dnl
+dnl To use dolt, invoke the DOLT macro immediately after the libtool macros.
+dnl Optionally, copy this file into acinclude.m4, to avoid the need to have it
+dnl installed when running autoconf on your project.
+
+AC_DEFUN([DOLT], [
+AC_REQUIRE([AC_CANONICAL_HOST])
+# dolt, a replacement for libtool
+# Josh Triplett <josh at freedesktop.org>
+AC_PATH_PROG(DOLT_BASH, bash)
+AC_MSG_CHECKING([if dolt supports this host])
+dolt_supported=yes
+if test x$DOLT_BASH = x; then
+    dolt_supported=no
+fi
+if test x$GCC != xyes; then
+    dolt_supported=no
+fi
+case $host in
+i?86-*-linux*|x86_64-*-linux*|powerpc-*-linux*|powerpc64-*-linux* \
+|amd64-*-freebsd*|i?86-*-freebsd*|ia64-*-freebsd*|arm*-*-linux*|sparc*-*-linux*|mips*-*-linux*)
+    pic_options='-fPIC'
+    ;;
+?86-pc-cygwin*|i?86-pc-cygwin*)
+    pic_options='-DDLL_EXPORT'
+    ;;
+i?86-apple-darwin*)
+    pic_options='-fno-common'
+    ;;
+*)
+    dolt_supported=no
+    ;;
+esac
+if test x$dolt_supported = xno ; then
+    AC_MSG_RESULT([no, falling back to libtool])
+    LTCOMPILE='$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(COMPILE)'
+    LTCXXCOMPILE='$(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXXCOMPILE)'
+else
+    AC_MSG_RESULT([yes, replacing libtool])
+
+dnl Start writing out doltcompile.
+    cat <<__DOLTCOMPILE__EOF__ >doltcompile
+#!$DOLT_BASH
+__DOLTCOMPILE__EOF__
+    cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
+args=("$[]@")
+for ((arg=0; arg<${#args@<:@@@:>@}; arg++)) ; do
+    if test x"${args@<:@$arg@:>@}" = x-o ; then
+        objarg=$((arg+1))
+        break
+    fi
+done
+if test x$objarg = x ; then
+    echo 'Error: no -o on compiler command line' 1>&2
+    exit 1
+fi
+lo="${args@<:@$objarg@:>@}"
+obj="${lo%.lo}"
+if test x"$lo" = x"$obj" ; then
+    echo "Error: libtool object file name \"$lo\" does not end in .lo" 1>&2
+    exit 1
+fi
+objbase="${obj##*/}"
+__DOLTCOMPILE__EOF__
+
+dnl Write out shared compilation code.
+    if test x$enable_shared = xyes; then
+        cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
+libobjdir="${obj%$objbase}.libs"
+if test ! -d "$libobjdir" ; then
+    mkdir_out="$(mkdir "$libobjdir" 2>&1)"
+    mkdir_ret=$?
+    if test "$mkdir_ret" -ne 0 && test ! -d "$libobjdir" ; then
+	echo "$mkdir_out" 1>&2
+        exit $mkdir_ret
+    fi
+fi
+pic_object="$libobjdir/$objbase.o"
+args@<:@$objarg@:>@="$pic_object"
+__DOLTCOMPILE__EOF__
+    cat <<__DOLTCOMPILE__EOF__ >>doltcompile
+"\${args@<:@@@:>@}" $pic_options -DPIC || exit \$?
+__DOLTCOMPILE__EOF__
+    fi
+
+dnl Write out static compilation code.
+dnl Avoid duplicate compiler output if also building shared objects.
+    if test x$enable_static = xyes; then
+        cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
+non_pic_object="$obj.o"
+args@<:@$objarg@:>@="$non_pic_object"
+__DOLTCOMPILE__EOF__
+        if test x$enable_shared = xyes; then
+            cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
+"${args@<:@@@:>@}" >/dev/null 2>&1 || exit $?
+__DOLTCOMPILE__EOF__
+        else
+            cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
+"${args@<:@@@:>@}" || exit $?
+__DOLTCOMPILE__EOF__
+        fi
+    fi
+
+dnl Write out the code to write the .lo file.
+dnl The second line of the .lo file must match "^# Generated by .*libtool"
+    cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
+{
+echo "# $lo - a libtool object file"
+echo "# Generated by doltcompile, not libtool"
+__DOLTCOMPILE__EOF__
+
+    if test x$enable_shared = xyes; then
+        cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
+echo "pic_object='.libs/${objbase}.o'"
+__DOLTCOMPILE__EOF__
+    else
+        cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
+echo pic_object=none
+__DOLTCOMPILE__EOF__
+    fi
+
+    if test x$enable_static = xyes; then
+        cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
+echo "non_pic_object='${objbase}.o'"
+__DOLTCOMPILE__EOF__
+    else
+        cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
+echo non_pic_object=none
+__DOLTCOMPILE__EOF__
+    fi
+
+    cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
+} > "$lo"
+__DOLTCOMPILE__EOF__
+
+dnl Done writing out doltcompile; substitute it for libtool compilation.
+    chmod +x doltcompile
+    LTCOMPILE='$(top_builddir)/doltcompile $(COMPILE)'
+    LTCXXCOMPILE='$(top_builddir)/doltcompile $(CXXCOMPILE)'
+
+dnl automake ignores LTCOMPILE and LTCXXCOMPILE when it has separate CFLAGS for
+dnl a target, so write out a libtool wrapper to handle that case.
+dnl Note that doltlibtool does not handle inferred tags or option arguments
+dnl without '=', because automake does not use them.
+    cat <<__DOLTLIBTOOL__EOF__ > doltlibtool
+#!$DOLT_BASH
+__DOLTLIBTOOL__EOF__
+    cat <<'__DOLTLIBTOOL__EOF__' >>doltlibtool
+top_builddir_slash="${0%%doltlibtool}"
+: ${top_builddir_slash:=./}
+args=()
+modeok=false
+tagok=false
+for arg in "$[]@"; do
+    case "$arg" in
+        --mode=compile) modeok=true ;;
+        --tag=CC|--tag=CXX) tagok=true ;;
+        --quiet) ;;
+        *) args@<:@${#args[@]}@:>@="$arg" ;;
+    esac
+done
+if $modeok && $tagok ; then
+    . ${top_builddir_slash}doltcompile "${args@<:@@@:>@}"
+else
+    exec ${top_builddir_slash}libtool "$[]@"
+fi
+__DOLTLIBTOOL__EOF__
+
+dnl Done writing out doltlibtool; substitute it for libtool.
+    chmod +x doltlibtool
+    LIBTOOL='$(top_builddir)/doltlibtool'
+fi
+AC_SUBST(LTCOMPILE)
+AC_SUBST(LTCXXCOMPILE)
+# end dolt
 ])
diff --git a/libgc/configure b/libgc/configure
index 8903219..868b03a 100755
--- a/libgc/configure
+++ b/libgc/configure
@@ -792,6 +792,9 @@ USE_LIBDIR_FALSE
 USE_LIBDIR_TRUE
 UNWINDLIBS
 MY_CFLAGS
+LTCXXCOMPILE
+LTCOMPILE
+DOLT_BASH
 CXXCPP
 CPP
 OTOOL64
@@ -811,10 +814,11 @@ EGREP
 GREP
 SED
 LIBTOOL
+TARGET_IA64_FALSE
+TARGET_IA64_TRUE
 addtests
 addlibs
 addincludes
-addobjs
 CXXINCLUDES
 INCLUDES
 CPLUSPLUS_FALSE
@@ -4806,7 +4810,7 @@ _ACEOF
 _ACEOF
 
 	;;
-     *-*-linux*)
+     *-*-linux* | *-*-nacl*)
 	cat >>confdefs.h <<\_ACEOF
 #define GC_LINUX_THREADS 1
 _ACEOF
@@ -4917,6 +4921,22 @@ _ACEOF
 _ACEOF
 
 	;;
+     *-*-openbsd*)
+	cat >>confdefs.h <<\_ACEOF
+#define GC_OPENBSD_THREADS 1
+_ACEOF
+
+	if test "${enable_parallel_mark}" = yes; then
+	  cat >>confdefs.h <<\_ACEOF
+#define PARALLEL_MARK 1
+_ACEOF
+
+	fi
+	cat >>confdefs.h <<\_ACEOF
+#define THREAD_LOCAL_ALLOC 1
+_ACEOF
+
+	;;
      *-*-osf*)
 	cat >>confdefs.h <<\_ACEOF
 #define GC_OSF1_THREADS 1
@@ -5329,7 +5349,14 @@ _ACEOF
     machdep="sparc_mach_dep.lo"
     ;;
  ia64-*-*)
-    machdep="mach_dep.lo ia64_save_regs_in_stack.lo"
+     machdep="mach_dep.lo ia64_save_regs_in_stack.lo"
+	target_ia64=true
+    ;;
+ *-*-nacl*)
+    cat >>confdefs.h <<\_ACEOF
+#define NO_EXECUTE_PERMISSION 1
+_ACEOF
+
     ;;
 esac
 if test x"$machdep" = x; then
@@ -5338,10 +5365,24 @@ $as_echo "$machdep" >&6; }
    machdep="mach_dep.lo"
 fi
 addobjs="$addobjs $machdep"
+#
+# Adding object files directly to _LIBADD breaks -j builds, so we need to add the sources
+# instead, but _SOURCES can't contain autoconf substitutions, so add them using automake
+# conditionals.
+#
+#AC_SUBST(addobjs)
 
 
 
 
+ if test x$target_ia64 = xtrue; then
+  TARGET_IA64_TRUE=
+  TARGET_IA64_FALSE='#'
+else
+  TARGET_IA64_TRUE='#'
+  TARGET_IA64_FALSE=
+fi
+
 
 case `pwd` in
   *\ * | *\	*)
@@ -5962,13 +6003,13 @@ if test "${lt_cv_nm_interface+set}" = set; then
 else
   lt_cv_nm_interface="BSD nm"
   echo "int some_variable = 0;" > conftest.$ac_ext
-  (eval echo "\"\$as_me:5965: $ac_compile\"" >&5)
+  (eval echo "\"\$as_me:6006: $ac_compile\"" >&5)
   (eval "$ac_compile" 2>conftest.err)
   cat conftest.err >&5
-  (eval echo "\"\$as_me:5968: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+  (eval echo "\"\$as_me:6009: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
   (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
   cat conftest.err >&5
-  (eval echo "\"\$as_me:5971: output\"" >&5)
+  (eval echo "\"\$as_me:6012: output\"" >&5)
   cat conftest.out >&5
   if $GREP 'External.*some_variable' conftest.out > /dev/null; then
     lt_cv_nm_interface="MS dumpbin"
@@ -7173,7 +7214,7 @@ ia64-*-hpux*)
   ;;
 *-*-irix6*)
   # Find out which ABI we are using.
-  echo '#line 7176 "configure"' > conftest.$ac_ext
+  echo '#line 7217 "configure"' > conftest.$ac_ext
   if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
@@ -9715,11 +9756,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:9718: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:9759: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:9722: \$? = $ac_status" >&5
+   echo "$as_me:9763: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -10054,11 +10095,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:10057: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:10098: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:10061: \$? = $ac_status" >&5
+   echo "$as_me:10102: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -10159,11 +10200,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:10162: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:10203: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:10166: \$? = $ac_status" >&5
+   echo "$as_me:10207: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -10214,11 +10255,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:10217: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:10258: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:10221: \$? = $ac_status" >&5
+   echo "$as_me:10262: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -13014,7 +13055,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 13017 "configure"
+#line 13058 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -13110,7 +13151,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 13113 "configure"
+#line 13154 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -15130,11 +15171,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:15133: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:15174: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:15137: \$? = $ac_status" >&5
+   echo "$as_me:15178: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -15229,11 +15270,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:15232: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:15273: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:15236: \$? = $ac_status" >&5
+   echo "$as_me:15277: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -15281,11 +15322,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:15284: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:15325: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:15288: \$? = $ac_status" >&5
+   echo "$as_me:15329: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -16265,6 +16306,208 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 # Only expand once:
 
 
+# Use dolt (http://dolt.freedesktop.org/) instead of libtool for building.
+
+
+# dolt, a replacement for libtool
+# Josh Triplett <josh at freedesktop.org>
+# Extract the first word of "bash", so it can be a program name with args.
+set dummy bash; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_DOLT_BASH+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  case $DOLT_BASH in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_DOLT_BASH="$DOLT_BASH" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_DOLT_BASH="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+DOLT_BASH=$ac_cv_path_DOLT_BASH
+if test -n "$DOLT_BASH"; then
+  { $as_echo "$as_me:$LINENO: result: $DOLT_BASH" >&5
+$as_echo "$DOLT_BASH" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+{ $as_echo "$as_me:$LINENO: checking if dolt supports this host" >&5
+$as_echo_n "checking if dolt supports this host... " >&6; }
+dolt_supported=yes
+if test x$DOLT_BASH = x; then
+    dolt_supported=no
+fi
+if test x$GCC != xyes; then
+    dolt_supported=no
+fi
+case $host in
+i?86-*-linux*|x86_64-*-linux*|powerpc-*-linux*|powerpc64-*-linux* \
+|amd64-*-freebsd*|i?86-*-freebsd*|ia64-*-freebsd*|arm*-*-linux*|sparc*-*-linux*|mips*-*-linux*)
+    pic_options='-fPIC'
+    ;;
+?86-pc-cygwin*|i?86-pc-cygwin*)
+    pic_options='-DDLL_EXPORT'
+    ;;
+i?86-apple-darwin*)
+    pic_options='-fno-common'
+    ;;
+*)
+    dolt_supported=no
+    ;;
+esac
+if test x$dolt_supported = xno ; then
+    { $as_echo "$as_me:$LINENO: result: no, falling back to libtool" >&5
+$as_echo "no, falling back to libtool" >&6; }
+    LTCOMPILE='$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(COMPILE)'
+    LTCXXCOMPILE='$(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXXCOMPILE)'
+else
+    { $as_echo "$as_me:$LINENO: result: yes, replacing libtool" >&5
+$as_echo "yes, replacing libtool" >&6; }
+
+    cat <<__DOLTCOMPILE__EOF__ >doltcompile
+#!$DOLT_BASH
+__DOLTCOMPILE__EOF__
+    cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
+args=("$@")
+for ((arg=0; arg<${#args[@]}; arg++)) ; do
+    if test x"${args[$arg]}" = x-o ; then
+        objarg=$((arg+1))
+        break
+    fi
+done
+if test x$objarg = x ; then
+    echo 'Error: no -o on compiler command line' 1>&2
+    exit 1
+fi
+lo="${args[$objarg]}"
+obj="${lo%.lo}"
+if test x"$lo" = x"$obj" ; then
+    echo "Error: libtool object file name \"$lo\" does not end in .lo" 1>&2
+    exit 1
+fi
+objbase="${obj##*/}"
+__DOLTCOMPILE__EOF__
+
+    if test x$enable_shared = xyes; then
+        cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
+libobjdir="${obj%$objbase}.libs"
+if test ! -d "$libobjdir" ; then
+    mkdir_out="$(mkdir "$libobjdir" 2>&1)"
+    mkdir_ret=$?
+    if test "$mkdir_ret" -ne 0 && test ! -d "$libobjdir" ; then
+	echo "$mkdir_out" 1>&2
+        exit $mkdir_ret
+    fi
+fi
+pic_object="$libobjdir/$objbase.o"
+args[$objarg]="$pic_object"
+__DOLTCOMPILE__EOF__
+    cat <<__DOLTCOMPILE__EOF__ >>doltcompile
+"\${args[@]}" $pic_options -DPIC || exit \$?
+__DOLTCOMPILE__EOF__
+    fi
+
+    if test x$enable_static = xyes; then
+        cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
+non_pic_object="$obj.o"
+args[$objarg]="$non_pic_object"
+__DOLTCOMPILE__EOF__
+        if test x$enable_shared = xyes; then
+            cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
+"${args[@]}" >/dev/null 2>&1 || exit $?
+__DOLTCOMPILE__EOF__
+        else
+            cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
+"${args[@]}" || exit $?
+__DOLTCOMPILE__EOF__
+        fi
+    fi
+
+    cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
+{
+echo "# $lo - a libtool object file"
+echo "# Generated by doltcompile, not libtool"
+__DOLTCOMPILE__EOF__
+
+    if test x$enable_shared = xyes; then
+        cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
+echo "pic_object='.libs/${objbase}.o'"
+__DOLTCOMPILE__EOF__
+    else
+        cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
+echo pic_object=none
+__DOLTCOMPILE__EOF__
+    fi
+
+    if test x$enable_static = xyes; then
+        cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
+echo "non_pic_object='${objbase}.o'"
+__DOLTCOMPILE__EOF__
+    else
+        cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
+echo non_pic_object=none
+__DOLTCOMPILE__EOF__
+    fi
+
+    cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
+} > "$lo"
+__DOLTCOMPILE__EOF__
+
+    chmod +x doltcompile
+    LTCOMPILE='$(top_builddir)/doltcompile $(COMPILE)'
+    LTCXXCOMPILE='$(top_builddir)/doltcompile $(CXXCOMPILE)'
+
+    cat <<__DOLTLIBTOOL__EOF__ > doltlibtool
+#!$DOLT_BASH
+__DOLTLIBTOOL__EOF__
+    cat <<'__DOLTLIBTOOL__EOF__' >>doltlibtool
+top_builddir_slash="${0%%doltlibtool}"
+: ${top_builddir_slash:=./}
+args=()
+modeok=false
+tagok=false
+for arg in "$@"; do
+    case "$arg" in
+        --mode=compile) modeok=true ;;
+        --tag=CC|--tag=CXX) tagok=true ;;
+        --quiet) ;;
+        *) args[${#args[@]}]="$arg" ;;
+    esac
+done
+if $modeok && $tagok ; then
+    . ${top_builddir_slash}doltcompile "${args[@]}"
+else
+    exec ${top_builddir_slash}libtool "$@"
+fi
+__DOLTLIBTOOL__EOF__
+
+    chmod +x doltlibtool
+    LIBTOOL='$(top_builddir)/doltlibtool'
+fi
+
+
+# end dolt
+
 
 #
 # Check for AViiON Machines running DGUX
@@ -16919,6 +17162,13 @@ $as_echo "$as_me: error: conditional \"CPLUSPLUS\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
+if test -z "${TARGET_IA64_TRUE}" && test -z "${TARGET_IA64_FALSE}"; then
+  { { $as_echo "$as_me:$LINENO: error: conditional \"TARGET_IA64\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"TARGET_IA64\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
 if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
   { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
diff --git a/libgc/configure.in b/libgc/configure.in
index 2bd596b..e68d738 100644
--- a/libgc/configure.in
+++ b/libgc/configure.in
@@ -94,7 +94,7 @@ case "$THREADS" in
 	fi
 	AC_DEFINE(THREAD_LOCAL_ALLOC)
 	;;
-     *-*-linux*)
+     *-*-linux* | *-*-nacl*)
 	AC_DEFINE(GC_LINUX_THREADS)
 	AC_DEFINE(_REENTRANT)
 	;;
@@ -147,6 +147,13 @@ case "$THREADS" in
 	fi
 	AC_DEFINE(THREAD_LOCAL_ALLOC)
 	;;
+     *-*-openbsd*)
+	AC_DEFINE(GC_OPENBSD_THREADS)
+	if test "${enable_parallel_mark}" = yes; then
+	  AC_DEFINE(PARALLEL_MARK)
+	fi
+	AC_DEFINE(THREAD_LOCAL_ALLOC)
+	;;
      *-*-osf*)
 	AC_DEFINE(GC_OSF1_THREADS)
         if test "${enable_parallel_mark}" = yes; then
@@ -330,7 +337,11 @@ case "$host" in
     machdep="sparc_mach_dep.lo"
     ;;
  ia64-*-*)
-    machdep="mach_dep.lo ia64_save_regs_in_stack.lo"
+     machdep="mach_dep.lo ia64_save_regs_in_stack.lo"
+	target_ia64=true
+    ;;
+ *-*-nacl*)
+    AC_DEFINE(NO_EXECUTE_PERMISSION)
     ;;
 esac
 if test x"$machdep" = x; then
@@ -338,12 +349,21 @@ AC_MSG_RESULT($machdep)
    machdep="mach_dep.lo"
 fi
 addobjs="$addobjs $machdep"
-AC_SUBST(addobjs)
+#
+# Adding object files directly to _LIBADD breaks -j builds, so we need to add the sources
+# instead, but _SOURCES can't contain autoconf substitutions, so add them using automake
+# conditionals.
+#
+#AC_SUBST(addobjs)
 AC_SUBST(addincludes)
 AC_SUBST(addlibs)
 AC_SUBST(addtests)
 
+AM_CONDITIONAL(TARGET_IA64,test x$target_ia64 = xtrue)
+
 AC_PROG_LIBTOOL
+# Use dolt (http://dolt.freedesktop.org/) instead of libtool for building.
+DOLT
 
 #
 # Check for AViiON Machines running DGUX
diff --git a/libgc/doc/Makefile.in b/libgc/doc/Makefile.in
index b102ae0..555c0a1 100644
--- a/libgc/doc/Makefile.in
+++ b/libgc/doc/Makefile.in
@@ -90,6 +90,7 @@ CXXINCLUDES = @CXXINCLUDES@
 CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
+DOLT_BASH = @DOLT_BASH@
 DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
@@ -115,6 +116,8 @@ LIBS = @LIBS@
 LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
+LTCOMPILE = @LTCOMPILE@
+LTCXXCOMPILE = @LTCXXCOMPILE@
 LTLIBOBJS = @LTLIBOBJS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
@@ -150,7 +153,6 @@ ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
 addincludes = @addincludes@
 addlibs = @addlibs@
-addobjs = @addobjs@
 addtests = @addtests@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
diff --git a/libgc/dyn_load.c b/libgc/dyn_load.c
index a42efd4..e4be3c7 100644
--- a/libgc/dyn_load.c
+++ b/libgc/dyn_load.c
@@ -57,6 +57,7 @@
     !defined(HPUX) && !(defined(LINUX) && defined(__ELF__)) && \
     !defined(RS6000) && !defined(SCO_ELF) && !defined(DGUX) && \
     !(defined(FREEBSD) && defined(__ELF__)) && \
+    !(defined(OPENBSD) && (defined(__ELF__) || defined(M68K))) && \
     !(defined(NETBSD) && defined(__ELF__)) && !defined(HURD) && \
     !defined(DARWIN)
  --> We only know how to find data segments of dynamic libraries for the
@@ -92,9 +93,12 @@
 
 #if defined(LINUX) && defined(__ELF__) || defined(SCO_ELF) || \
     (defined(FREEBSD) && defined(__ELF__)) || defined(DGUX) || \
+    (defined(OPENBSD) && defined(__ELF__)) || \
     (defined(NETBSD) && defined(__ELF__)) || defined(HURD)
 #   include <stddef.h>
+# if !defined(OPENBSD)
 #   include <elf.h>
+# endif
 #   include <link.h>
 #endif
 
@@ -295,6 +299,7 @@ void GC_register_dynamic_libraries()
 
 #if defined(LINUX) && defined(__ELF__) || defined(SCO_ELF) || \
     (defined(FREEBSD) && defined(__ELF__)) || defined(DGUX) || \
+    (defined(OPENBSD) && defined(__ELF__)) || \
     (defined(NETBSD) && defined(__ELF__)) || defined(HURD)
 
 
@@ -473,8 +478,10 @@ GC_bool GC_register_main_static_data()
 /* This doesn't necessarily work in all cases, e.g. with preloaded
  * dynamic libraries.						*/
 
-#if defined(NETBSD)
+#if defined(NETBSD) || defined(OPENBSD)
+# if !defined(OPENBSD)
 #  include <sys/exec_elf.h>
+# endif
 /* for compatibility with 1.4.x */
 #  ifndef DT_DEBUG
 #  define DT_DEBUG     21
diff --git a/libgc/gc_dlopen.c b/libgc/gc_dlopen.c
index 4c690ed..6ca9e99 100644
--- a/libgc/gc_dlopen.c
+++ b/libgc/gc_dlopen.c
@@ -25,7 +25,7 @@
 
 #include "private/gc_priv.h"
 
-# if (defined(GC_PTHREADS) && !defined(GC_DARWIN_THREADS)) \
+# if defined(DYNAMIC_LOADING) && (defined(GC_PTHREADS) && !defined(GC_DARWIN_THREADS)) \
       || defined(GC_SOLARIS_THREADS)
 
 # if defined(dlopen) && !defined(GC_USE_LD_WRAP)
diff --git a/libgc/include/Makefile.in b/libgc/include/Makefile.in
index 81b319d..6090e2c 100644
--- a/libgc/include/Makefile.in
+++ b/libgc/include/Makefile.in
@@ -81,6 +81,7 @@ CXXINCLUDES = @CXXINCLUDES@
 CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
+DOLT_BASH = @DOLT_BASH@
 DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
@@ -106,6 +107,8 @@ LIBS = @LIBS@
 LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
+LTCOMPILE = @LTCOMPILE@
+LTCXXCOMPILE = @LTCXXCOMPILE@
 LTLIBOBJS = @LTLIBOBJS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
@@ -141,7 +144,6 @@ ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
 addincludes = @addincludes@
 addlibs = @addlibs@
-addobjs = @addobjs@
 addtests = @addtests@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
diff --git a/libgc/include/gc_config_macros.h b/libgc/include/gc_config_macros.h
index d8f3830..c11caa7 100644
--- a/libgc/include/gc_config_macros.h
+++ b/libgc/include/gc_config_macros.h
@@ -57,6 +57,7 @@
 	defined(GC_HPUX_THREADS) || defined(GC_OSF1_THREADS) || \
 	defined(GC_DGUX386_THREADS) || defined(GC_DARWIN_THREADS) || \
 	defined(GC_AIX_THREADS) || defined(GC_NETBSD_THREADS) || \
+	defined(GC_OPENBSD_THREADS) || \
         (defined(GC_WIN32_THREADS) && defined(__CYGWIN32__))
 #   define GC_PTHREADS
 # endif
@@ -87,6 +88,10 @@
 #   define GC_DARWIN_THREADS
 #   define GC_PTHREADS
 # endif
+# if !defined(GC_PTHREADS) && defined(__OpenBSD__)
+#   define GC_OPENBSD_THREADS
+#   define GC_PTHREADS
+# endif
 # if !defined(GC_PTHREADS) && defined(__FreeBSD__)
 #   define GC_FREEBSD_THREADS
 #   define GC_PTHREADS
diff --git a/libgc/include/gc_pthread_redirects.h b/libgc/include/gc_pthread_redirects.h
index bedcc26..520a36b 100644
--- a/libgc/include/gc_pthread_redirects.h
+++ b/libgc/include/gc_pthread_redirects.h
@@ -59,6 +59,11 @@
 #endif
   int GC_pthread_join(pthread_t thread, void **retval);
   int GC_pthread_detach(pthread_t thread);
+#if defined(__native_client__) || defined(NACL)
+  void GC_pthread_exit(void *status);
+# undef pthread_exit
+# define pthread_exit GC_pthread_exit
+#endif
 
 #if defined(GC_OSF1_THREADS) \
     && defined(_PTHREAD_USE_MANGLED_NAMES_) && !defined(_PTHREAD_USE_PTDNAM_)
diff --git a/libgc/include/private/Makefile.in b/libgc/include/private/Makefile.in
index 68eb807..509722c 100644
--- a/libgc/include/private/Makefile.in
+++ b/libgc/include/private/Makefile.in
@@ -66,6 +66,7 @@ CXXINCLUDES = @CXXINCLUDES@
 CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
+DOLT_BASH = @DOLT_BASH@
 DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
@@ -91,6 +92,8 @@ LIBS = @LIBS@
 LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
+LTCOMPILE = @LTCOMPILE@
+LTCXXCOMPILE = @LTCXXCOMPILE@
 LTLIBOBJS = @LTLIBOBJS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
@@ -126,7 +129,6 @@ ac_ct_CXX = @ac_ct_CXX@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
 addincludes = @addincludes@
 addlibs = @addlibs@
-addobjs = @addobjs@
 addtests = @addtests@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
diff --git a/libgc/include/private/gc_priv.h b/libgc/include/private/gc_priv.h
index 2efb473..5c4c514 100644
--- a/libgc/include/private/gc_priv.h
+++ b/libgc/include/private/gc_priv.h
@@ -1962,6 +1962,8 @@ void GC_err_puts GC_PROTO((GC_CONST char *s));
        /* SPARC/Linux doesn't properly define SIGPWR in <signal.h>.
         * It is aliased to SIGLOST in asm/signal.h, though.		*/
 #      define SIG_SUSPEND SIGLOST
+#    elif defined(NACL)
+#	define SIG_SUSPEND 0
 #    else
        /* Linuxthreads itself uses SIGUSR1 and SIGUSR2.			*/
 #      define SIG_SUSPEND SIGPWR
diff --git a/libgc/include/private/gcconfig.h b/libgc/include/private/gcconfig.h
index e517d70..8276079 100644
--- a/libgc/include/private/gcconfig.h
+++ b/libgc/include/private/gcconfig.h
@@ -65,6 +65,11 @@
 # endif
 
 /* Determine the machine type: */
+# if defined(__native_client__)
+#    define NACL
+#    define I386
+#    define mach_type_known
+# endif
 # if defined(__arm__) || defined(__thumb__)
 #    define ARM32
 #    if !defined(LINUX) && !defined(NETBSD) && !defined(DARWIN)
@@ -231,6 +236,10 @@
 #    define I386
 #    define mach_type_known
 # endif
+# if defined(OPENBSD) && defined(__amd64__)
+#    define X86_64
+#    define mach_type_known
+# endif
 # if defined(LINUX) && defined(__x86_64__)
 #    define X86_64
 #    define mach_type_known
@@ -1082,13 +1091,19 @@
 # endif
 
 # ifdef I386
-#   define MACH_TYPE "I386"
-#   if defined(__LP64__) || defined(_WIN64)
-#     define CPP_WORDSZ 64
-#     define ALIGNMENT 8
-#   else
+#   if defined( NACL )
+#     define MACH_TYPE "NACL"
 #     define CPP_WORDSZ 32
 #     define ALIGNMENT 4
+#   else
+#     define MACH_TYPE "I386"
+#     if defined(__LP64__) || defined(_WIN64)
+#       define CPP_WORDSZ 64
+#       define ALIGNMENT 8
+#     else
+#       define CPP_WORDSZ 32
+#       define ALIGNMENT 4
+#     endif
 			/* Appears to hold for all "32 bit" compilers	*/
 			/* except Borland.  The -a4 option fixes 	*/
 			/* Borland.					*/
@@ -1184,7 +1199,32 @@
 #	  define HEAP_START DATAEND
 #	endif /* USE_MMAP */
 #   endif /* DGUX */
-
+#   ifdef NACL
+#	define OS_TYPE "NACL"
+	extern int etext[];
+#	define DATASTART ((ptr_t)((((word) (etext)) + 0xfff) & ~0xfff))
+	extern int _end[];
+#	define DATAEND (_end)
+#	ifdef STACK_GRAN
+#	  undef STACK_GRAN
+#	endif /* STACK_GRAN */
+#	define STACK_GRAN 0x10000
+#	define HEURISTIC1
+#	ifdef USE_MMAP
+#	  undef USE_MMAP
+#	endif
+#	ifdef USE_MUNMAP
+#	  undef USE_MUNMAP
+#	endif
+#	ifdef USE_MMAP_ANON
+#	  undef USE_MMAP_ANON
+#	endif
+#	ifdef USE_MMAP_FIXED
+#	  undef USE_MMAP_FIXED
+#	endif
+#	define GETPAGESIZE() 65536
+#	define MAX_NACL_GC_THREADS 1024
+#   endif
 #   ifdef LINUX
 #	ifndef __GNUC__
 	  /* The Intel compiler doesn't like inline assembly */
@@ -1304,6 +1344,18 @@
 #   endif
 #   ifdef OPENBSD
 #	define OS_TYPE "OPENBSD"
+#    ifdef GC_OPENBSD_THREADS
+#       define UTHREAD_SP_OFFSET 192
+#    else
+#       include <sys/param.h>
+#       include <uvm/uvm_extern.h>
+#       define STACKBOTTOM USRSTACK
+#    endif
+        extern int __data_start[];
+#       define DATASTART ((ptr_t)(__data_start))
+        extern char _end[];
+#       define DATAEND ((ptr_t)(&_end))
+#       define DYNAMIC_LOADING
 #   endif
 #   ifdef FREEBSD
 #	define OS_TYPE "FREEBSD"
@@ -2086,6 +2138,22 @@
 	extern char etext[];
 #	define SEARCH_FOR_DATA_START
 #   endif
+#   ifdef OPENBSD
+#       define OS_TYPE "OPENBSD"
+#       define ELF_CLASS ELFCLASS64
+#    ifdef GC_OPENBSD_THREADS
+#       define UTHREAD_SP_OFFSET 400
+#    else
+#       include <sys/param.h>
+#       include <uvm/uvm_extern.h>
+#       define STACKBOTTOM USRSTACK
+#    endif
+        extern int __data_start[];
+#       define DATASTART ((ptr_t)(__data_start))
+        extern char _end[];
+#       define DATAEND ((ptr_t)(&_end))
+#       define DYNAMIC_LOADING
+#   endif
 # endif
 
 #if defined(LINUX) && defined(USE_MMAP)
@@ -2239,7 +2307,7 @@
 # if defined(GC_IRIX_THREADS) && !defined(IRIX5)
 	--> inconsistent configuration
 # endif
-# if defined(GC_LINUX_THREADS) && !defined(LINUX)
+# if defined(GC_LINUX_THREADS) && !(defined(LINUX) || defined(NACL))
 	--> inconsistent configuration
 # endif
 # if defined(GC_SOLARIS_THREADS) && !defined(SUNOS5)
diff --git a/libgc/include/private/openbsd_stop_world.h b/libgc/include/private/openbsd_stop_world.h
new file mode 100644
index 0000000..7f423ad
--- /dev/null
+++ b/libgc/include/private/openbsd_stop_world.h
@@ -0,0 +1,12 @@
+#ifndef GC_OPENBSD_STOP_WORLD_H
+#define GC_OPENBSD_STOP_WORLD_H
+
+#if !defined(GC_OPENBSD_THREADS)
+#error openbsd_stop_world.h included without GC_OPENBSD_THREADS defined
+#endif
+
+struct thread_stop_info {
+    ptr_t stack_ptr;  		/* Valid only when stopped.      	*/
+};
+    
+#endif
diff --git a/libgc/include/private/pthread_stop_world.h b/libgc/include/private/pthread_stop_world.h
index 054c7a0..bd72739 100644
--- a/libgc/include/private/pthread_stop_world.h
+++ b/libgc/include/private/pthread_stop_world.h
@@ -7,6 +7,15 @@ struct thread_stop_info {
     				/* last successfully handled a suspend	*/
     				/* signal.				*/
     ptr_t stack_ptr;  		/* Valid only when stopped.      	*/
+#ifdef NACL
+/* Grab NACL_GC_REG_STORAGE_SIZE pointers off the stack when going into */
+/* a syscall.  20 is more than we need, but it's an overestimate in case*/
+/* the instrumented function uses any callee saved registers, they may  */
+/* be pushed to the stack much earlier.  Also, on amd64 'push' puts 8   */
+/* bytes on the stack even though our pointers are 4 bytes.             */
+#define NACL_GC_REG_STORAGE_SIZE 20
+    ptr_t reg_storage[NACL_GC_REG_STORAGE_SIZE];
+#endif
 };
     
 #endif
diff --git a/libgc/include/private/pthread_support.h b/libgc/include/private/pthread_support.h
index c2c48c2..dbd6dbc 100644
--- a/libgc/include/private/pthread_support.h
+++ b/libgc/include/private/pthread_support.h
@@ -8,6 +8,8 @@
      
 #if defined(GC_DARWIN_THREADS)
 # include "private/darwin_stop_world.h"
+#elif defined(GC_OPENBSD_THREADS)
+# include "private/openbsd_stop_world.h"
 #else
 # include "private/pthread_stop_world.h"
 #endif
@@ -26,6 +28,9 @@ typedef struct GC_Thread_Rep {
 				  /* guaranteed to be dead, but we may  */
 				  /* not yet have registered the join.) */
     pthread_t id;
+#ifdef PLATFORM_ANDROID
+    pid_t kernel_id;
+#endif
     /* Extra bookkeeping information the stopping code uses */
     struct thread_stop_info stop_info;
     
@@ -87,6 +92,9 @@ typedef struct GC_Thread_Rep {
 
 # define THREAD_TABLE_SZ 128	/* Must be power of 2	*/
 extern volatile GC_thread GC_threads[THREAD_TABLE_SZ];
+#ifdef NACL
+extern __thread GC_thread gc_thread_self;
+#endif
 
 extern GC_bool GC_thr_initialized;
 
diff --git a/libgc/mach_dep.c b/libgc/mach_dep.c
index ba1e0b6..1e20b8a 100644
--- a/libgc/mach_dep.c
+++ b/libgc/mach_dep.c
@@ -492,7 +492,7 @@ ptr_t cold_gc_frame;
 /* the stack.	Return sp.						*/
 # ifdef SPARC
     asm("	.seg 	\"text\"");
-#   if defined(SVR4) || defined(NETBSD) || defined(FREEBSD)
+#   if defined(SVR4) || defined(NETBSD) || defined(FREEBSD) || defined(OPENBSD)
       asm("	.globl	GC_save_regs_in_stack");
       asm("GC_save_regs_in_stack:");
       asm("	.type GC_save_regs_in_stack,#function");
diff --git a/libgc/misc.c b/libgc/misc.c
index e21db5b..5b2868d 100644
--- a/libgc/misc.c
+++ b/libgc/misc.c
@@ -473,7 +473,7 @@ size_t GC_get_total_bytes GC_PROTO(())
 
 int GC_get_suspend_signal GC_PROTO(())
 {
-#if defined(SIG_SUSPEND) && defined(GC_PTHREADS) && !defined(GC_MACOSX_THREADS)
+#if defined(SIG_SUSPEND) && defined(GC_PTHREADS) && !defined(GC_MACOSX_THREADS) && !defined(GC_OPENBSD_THREADS)
 	return SIG_SUSPEND;
 #else
 	return -1;
@@ -684,7 +684,7 @@ void GC_init_inner()
 #   if defined(SEARCH_FOR_DATA_START)
 	GC_init_linux_data_start();
 #   endif
-#   if (defined(NETBSD) || defined(OPENBSD)) && defined(__ELF__)
+#   if defined(NETBSD) && defined(__ELF__)
 	GC_init_netbsd_elf();
 #   endif
 #   if defined(GC_PTHREADS) || defined(GC_SOLARIS_THREADS) \
diff --git a/libgc/openbsd_stop_world.c b/libgc/openbsd_stop_world.c
new file mode 100644
index 0000000..a4c927e
--- /dev/null
+++ b/libgc/openbsd_stop_world.c
@@ -0,0 +1,161 @@
+#include "private/pthread_support.h"
+
+/* derived from pthread_stop_world.c */
+
+# if defined(GC_OPENBSD_THREADS)
+
+#define THREAD_EQUAL(id1, id2) pthread_equal(id1, id2)
+
+/* We hold allocation lock.  Should do exactly the right thing if the	*/
+/* world is stopped.  Should not fail if it isn't.			*/
+void GC_push_all_stacks()
+{
+    GC_bool found_me = FALSE;
+    size_t nthreads = 0;
+    int i;
+    GC_thread p;
+    ptr_t lo, hi;
+    pthread_t me = pthread_self();
+    
+    if (!GC_thr_initialized) GC_thr_init();
+#   if DEBUG_THREADS
+        GC_printf("Pushing stacks from thread 0x%x\n", (unsigned) me);
+#   endif
+    for (i = 0; i < THREAD_TABLE_SZ; i++) {
+      for (p = GC_threads[i]; p != 0; p = p -> next) {
+        if (p -> flags & FINISHED) continue;
+	++nthreads;
+        if (THREAD_EQUAL(p -> id, me)) {
+#  	    ifdef SPARC
+	        lo = (ptr_t)GC_save_regs_in_stack();
+#  	    else
+ 	        lo = GC_approx_sp();
+#           endif
+	    found_me = TRUE;
+	} else {
+	    lo = p -> stop_info.stack_ptr;
+	}
+        if ((p -> flags & MAIN_THREAD) == 0) {
+	    hi = p -> stack_end;
+        } else {
+            /* The original stack. */
+            hi = GC_stackbottom;
+        }
+#	if DEBUG_THREADS
+            GC_printf("Stack for thread 0x%x = [%p,%p)\n",
+    	              (unsigned)(p -> id), lo, hi);
+#	endif
+	if (0 == lo) ABORT("GC_push_all_stacks: sp not set!\n");
+#       ifdef STACK_GROWS_UP
+	  /* We got them backwards! */
+          GC_push_all_stack(hi, lo);
+#       else
+          GC_push_all_stack(lo, hi);
+#	endif
+      }
+    }
+    if (!found_me && !GC_in_thread_creation)
+      ABORT("Collecting from unknown thread.");
+}
+
+/* We hold the allocation lock.  Suspend all threads that might	*/
+/* still be running. */ 
+void GC_suspend_all()
+{
+    int i;
+    GC_thread p;
+    int result;
+    pthread_t my_thread = pthread_self();
+    
+    for (i = 0; i < THREAD_TABLE_SZ; i++) {
+      for (p = GC_threads[i]; p != 0; p = p -> next) {
+        if (!THREAD_EQUAL(p -> id, my_thread)) {
+            if (p -> flags & FINISHED) continue;
+	    if (p -> thread_blocked) /* Will wait */ continue;
+#	    if DEBUG_THREADS
+	      GC_printf("Suspending thread 0x%x\n",
+			(unsigned)(p -> id));
+#	    endif
+        
+            if (pthread_suspend_np(p -> id) != 0)
+              ABORT("pthread_suspend_np failed");
+
+	   /*
+	    * This will only work for userland pthreads. It will
+	    * fail badly on rthreads. Perhaps we should consider
+	    * a pthread_sp_np() function that returns the stack
+	    * pointer for a suspended thread and implement in
+	    * both pthreads and rthreads.
+	    */
+	   p -> stop_info.stack_ptr = *(ptr_t*)((char *)p -> id + UTHREAD_SP_OFFSET);
+        }
+      }
+    }
+}
+
+void GC_stop_world()
+{
+    int i;
+
+    GC_ASSERT(I_HOLD_LOCK());
+#   if DEBUG_THREADS
+      GC_printf("Stopping the world from 0x%x\n", (unsigned)pthread_self());
+#   endif
+       
+    /* Make sure all free list construction has stopped before we start. */
+    /* No new construction can start, since free list construction is	*/
+    /* required to acquire and release the GC lock before it starts,	*/
+    /* and we have the lock.						*/
+#   ifdef PARALLEL_MARK
+      GC_acquire_mark_lock();
+      GC_ASSERT(GC_fl_builder_count == 0);
+      /* We should have previously waited for it to become zero. */
+#   endif /* PARALLEL_MARK */
+
+    GC_suspend_all();
+
+#   ifdef PARALLEL_MARK
+      GC_release_mark_lock();
+#   endif
+    #if DEBUG_THREADS
+      GC_printf("World stopped from 0x%x\n", (unsigned)pthread_self());
+    #endif
+}
+
+/* Caller holds allocation lock, and has held it continuously since	*/
+/* the world stopped.							*/
+void GC_start_world()
+{
+    pthread_t my_thread = pthread_self();
+    register int i;
+    register GC_thread p;
+    register int result;
+
+#   if DEBUG_THREADS
+      GC_printf("World starting\n");
+#   endif
+
+    for (i = 0; i < THREAD_TABLE_SZ; i++) {
+      for (p = GC_threads[i]; p != 0; p = p -> next) {
+        if (!THREAD_EQUAL(p -> id, my_thread)) {
+            if (p -> flags & FINISHED) continue;
+	    if (p -> thread_blocked) continue;
+	    #if DEBUG_THREADS
+	      GC_printf("Resuming thread 0x%x\n",
+			(unsigned)(p -> id));
+	    #endif
+        
+            if (pthread_resume_np(p -> id) != 0)
+              ABORT("pthread_kill failed");
+        }
+      }
+    }
+#    if DEBUG_THREADS
+      GC_printf("World started\n");
+#    endif
+}
+
+void GC_stop_init() {
+}
+
+#endif
diff --git a/libgc/os_dep.c b/libgc/os_dep.c
index 3a4b8a0..ecaa27c 100644
--- a/libgc/os_dep.c
+++ b/libgc/os_dep.c
@@ -133,7 +133,7 @@
 # include <errno.h>
 #endif
 
-#ifdef UNIX_LIKE
+#if defined( UNIX_LIKE ) || defined(NACL)
 # include <fcntl.h>
 #endif
 
@@ -392,7 +392,7 @@ static void *tiny_sbrk(ptrdiff_t increment)
 #define sbrk tiny_sbrk
 # endif /* ECOS */
 
-#if (defined(NETBSD) || defined(OPENBSD)) && defined(__ELF__)
+#if defined(NETBSD) && defined(__ELF__)
   ptr_t GC_data_start;
 
   void GC_init_netbsd_elf()
@@ -405,6 +405,102 @@ static void *tiny_sbrk(ptrdiff_t increment)
   }
 #endif
 
+#if defined(OPENBSD)
+  static struct sigaction old_segv_act;
+  sigjmp_buf GC_jmp_buf_openbsd;
+
+# if defined(GC_OPENBSD_THREADS)
+#   include <sys/syscall.h>
+    sigset_t __syscall(quad_t, ...);
+# endif
+
+  /*
+   * Dont use GC_find_limit() because siglongjmp out of the
+   * signal handler by-passes our userland pthreads lib, leaving
+   * SIGSEGV and SIGPROF masked. Instead use this custom one
+   * that works-around the issues.
+   */
+
+    /*ARGSUSED*/
+    void GC_fault_handler_openbsd(int sig)
+    {
+       siglongjmp(GC_jmp_buf_openbsd, 1);
+    }
+
+    /* Return the first nonaddressible location > p or bound   */
+    /* Requires allocation lock.                               */
+    ptr_t GC_find_limit_openbsd(ptr_t p, ptr_t bound)
+    {
+        static volatile ptr_t result;
+               /* Safer if static, since otherwise it may not be       */
+               /* preserved across the longjmp.  Can safely be         */
+               /* static since it's only called with the               */
+               /* allocation lock held.                                */
+        struct sigaction act;
+       size_t pgsz = (size_t)sysconf(_SC_PAGESIZE);
+
+       GC_ASSERT(I_HOLD_LOCK());
+
+        act.sa_handler = GC_fault_handler_openbsd;
+        sigemptyset(&act.sa_mask);
+        act.sa_flags = SA_NODEFER | SA_RESTART;
+        sigaction(SIGSEGV, &act, &old_segv_act);
+
+       if (sigsetjmp(GC_jmp_buf_openbsd, 1) == 0) {
+           result = (ptr_t)(((word)(p)) & ~(pgsz-1));
+           for (;;) {
+               result += pgsz;
+               if (result >= bound) {
+                   result = bound;
+                   break;
+               }
+               GC_noop1((word)(*result));
+           }
+       }
+
+# if defined(GC_OPENBSD_THREADS)
+       /* due to the siglongjump we need to manually unmask SIGPROF */
+       __syscall(SYS_sigprocmask, SIG_UNBLOCK, sigmask(SIGPROF));
+# endif
+
+       sigaction(SIGSEGV, &old_segv_act, 0);
+
+       return(result);
+    }
+
+    /* Return first addressable location > p or bound */
+    /* Requires allocation lock. */
+    ptr_t GC_skip_hole_openbsd(ptr_t p, ptr_t bound)
+    {
+        static volatile ptr_t result;
+        struct sigaction act;
+       size_t pgsz = (size_t)sysconf(_SC_PAGESIZE);
+       static volatile int firstpass;
+
+       GC_ASSERT(I_HOLD_LOCK());
+
+        act.sa_handler = GC_fault_handler_openbsd;
+        sigemptyset(&act.sa_mask);
+        act.sa_flags = SA_NODEFER | SA_RESTART;
+        sigaction(SIGSEGV, &act, &old_segv_act);
+
+       firstpass = 1;
+       result = (ptr_t)(((word)(p)) & ~(pgsz-1));
+       if (sigsetjmp(GC_jmp_buf_openbsd, 1) != 0 || firstpass) {
+           firstpass = 0;
+           result += pgsz;
+           if (result >= bound) {
+               result = bound;
+           } else
+               GC_noop1((word)(*result));
+        }
+
+       sigaction(SIGSEGV, &old_segv_act, 0);
+
+       return(result);
+    }
+#endif
+
 # ifdef OS2
 
 # include <stddef.h>
@@ -522,6 +618,12 @@ void GC_enable_signals(void)
     	  /* longjmp implementations.  Most systems appear not to have	*/
     	  /* a signal 32.						*/
 #	define SIGSETMASK(old, new) (old) = sigsetmask(new)
+#   elif defined(NACL)
+	/* We don't use signals in NaCl. */
+#	define SIGSET_T int
+#	define SIG_DEL(set, signal)
+#	define SIG_FILL(set)
+#	define SIGSETMASK(old, new)
 #   else
 	/* Use POSIX/SYSV interface	*/
 #	define SIGSET_T sigset_t
@@ -1021,7 +1123,8 @@ void *GC_set_stackbottom = NULL;
 #endif /* FREEBSD_STACKBOTTOM */
 
 #if !defined(BEOS) && !defined(AMIGA) && !defined(MSWIN32) \
-    && !defined(MSWINCE) && !defined(OS2) && !defined(NOSYS) && !defined(ECOS)
+    && !defined(MSWINCE) && !defined(OS2) && !defined(NOSYS) && !defined(ECOS) \
+    && !defined(GC_OPENBSD_THREADS)
 
 ptr_t GC_get_stack_base()
 {
@@ -1081,6 +1184,25 @@ ptr_t GC_get_stack_base()
 
 # endif /* ! AMIGA, !OS 2, ! MS Windows, !BEOS, !NOSYS, !ECOS */
 
+#if defined(GC_OPENBSD_THREADS)
+
+/* Find the stack using pthread_stackseg_np() */
+
+# include <sys/signal.h>
+# include <pthread.h>
+# include <pthread_np.h>
+        
+#define HAVE_GET_STACK_BASE
+
+ptr_t GC_get_stack_base()
+{
+    stack_t stack;
+    pthread_stackseg_np(pthread_self(), &stack);
+    return stack.ss_sp;
+}
+
+#endif /* GC_OPENBSD_THREADS */
+
 /*
  * Register static data segment(s) as roots.
  * If more data segments are added later then they need to be registered
@@ -1445,6 +1567,31 @@ int * etext_addr;
 
 #else /* !OS2 && !Windows && !AMIGA */
 
+#if defined(OPENBSD)
+
+/*
+ * Depending on arch alignment there can be multiple holes
+ * between DATASTART & DATAEND. Scan from DATASTART - DATAEND
+ * and register each region.
+ */
+void GC_register_data_segments(void)
+{
+  ptr_t region_start, region_end;
+
+  region_start = DATASTART;
+
+  for(;;) {
+    region_end = GC_find_limit_openbsd(region_start, DATAEND);
+    GC_add_roots_inner(region_start, region_end, FALSE);
+    if (region_end < DATAEND)
+       region_start = GC_skip_hole_openbsd(region_end, DATAEND);
+    else
+       break;
+  }
+}
+
+# else /* !OS2 && !Windows && !AMIGA && !OPENBSD */
+
 void GC_register_data_segments()
 {
 #   if !defined(PCR) && !defined(SRC_M3) && !defined(MACOS)
@@ -1504,6 +1651,7 @@ void GC_register_data_segments()
     /* change.								*/
 }
 
+# endif  /* ! OPENBSD */
 # endif  /* ! AMIGA */
 # endif  /* ! MSWIN32 && ! MSWINCE*/
 # endif  /* ! OS2 */
@@ -1925,8 +2073,21 @@ void GC_remap(ptr_t start, word bytes)
       int result; 
 
       if (0 == start_addr) return;
+#ifdef NACL
+      {
+	/* NaCl doesn't expose mprotect, but mmap should work fine */
+	void * mmap_result;
+        mmap_result = mmap(start_addr, len, PROT_READ | PROT_WRITE | OPT_PROT_EXEC,
+		      MAP_PRIVATE | MAP_FIXED | OPT_MAP_ANON,
+		      zero_fd, 0/* offset */);
+        if (mmap_result != (void *)start_addr) ABORT("mmap as mprotect failed");
+        /* Fake the return value as if mprotect succeeded. */
+        result = 0;
+      }
+#else /* NACL */
       result = mprotect(start_addr, len,
 		        PROT_READ | PROT_WRITE | OPT_PROT_EXEC);
+#endif /* NACL */
       if (result != 0) {
 	  GC_err_printf3(
 		"Mprotect failed at 0x%lx (length %ld) with errno %ld\n",
diff --git a/libgc/pthread_stop_world.c b/libgc/pthread_stop_world.c
index 04eb371..b1f9809 100644
--- a/libgc/pthread_stop_world.c
+++ b/libgc/pthread_stop_world.c
@@ -2,12 +2,14 @@
 
 #if defined(GC_PTHREADS) && !defined(GC_SOLARIS_THREADS) \
      && !defined(GC_IRIX_THREADS) && !defined(GC_WIN32_THREADS) \
-     && !defined(GC_DARWIN_THREADS) && !defined(GC_AIX_THREADS)
+     && !defined(GC_DARWIN_THREADS) && !defined(GC_AIX_THREADS) \
+     && !defined(GC_OPENBSD_THREADS)
 
 #include <signal.h>
 #include <semaphore.h>
 #include <errno.h>
 #include <unistd.h>
+#include <sys/time.h>
 
 /* work around a dlopen issue (bug #75390), undefs to avoid warnings with redefinitions */
 #undef PACKAGE_BUGREPORT
@@ -21,6 +23,19 @@
 #include "include/libgc-mono-debugger.h"
 #endif
 
+#ifdef NACL
+int nacl_park_threads_now = 0;
+pthread_t nacl_thread_parker = -1;
+
+int nacl_thread_parked[MAX_NACL_GC_THREADS];
+int nacl_thread_used[MAX_NACL_GC_THREADS];
+int nacl_thread_parking_inited = 0;
+int nacl_num_gc_threads = 0;
+pthread_mutex_t nacl_thread_alloc_lock = PTHREAD_MUTEX_INITIALIZER;
+__thread int nacl_thread_idx = -1;
+__thread GC_thread nacl_gc_thread_self = NULL;
+#endif
+
 #if DEBUG_THREADS
 
 #ifndef NSIG
@@ -35,6 +50,7 @@
 # endif
 #endif
 
+#ifndef NACL
 void GC_print_sig_mask()
 {
     sigset_t blocked;
@@ -48,7 +64,7 @@ void GC_print_sig_mask()
     }
     GC_printf0("\n");
 }
-
+#endif /* NACL */
 #endif
 
 /* Remove the signals that we want to allow in thread stopping 	*/
@@ -115,6 +131,7 @@ sem_t GC_suspend_ack_sem;
 
 static void _GC_suspend_handler(int sig)
 {
+#ifndef NACL
     int dummy;
     pthread_t my_thread = pthread_self();
     GC_thread me;
@@ -184,6 +201,8 @@ static void _GC_suspend_handler(int sig)
 #if DEBUG_THREADS
     GC_printf1("Continuing 0x%lx\n", my_thread);
 #endif
+
+#endif /* NACL */
 }
 
 void GC_suspend_handler(int sig)
@@ -277,6 +296,10 @@ static void pthread_push_all_stacks()
 #       else
           GC_push_all_stack(lo, hi);
 #	endif
+#       ifdef NACL
+	  /* Push reg_storage as roots, this will cover the reg context */
+          GC_push_all_stack(p -> stop_info.reg_storage, p -> stop_info.reg_storage + NACL_GC_REG_STORAGE_SIZE);
+#       endif
 #	ifdef IA64
 #         if DEBUG_THREADS
             GC_printf3("Reg stack for thread 0x%lx = [%lx,%lx)\n",
@@ -314,11 +337,29 @@ void GC_push_all_stacks()
 pthread_t GC_stopping_thread;
 int GC_stopping_pid;
 
+#ifdef PLATFORM_ANDROID
+static
+int android_thread_kill(pid_t tid, int sig)
+{
+    int  ret;
+    int  old_errno = errno;
+
+    ret = tkill(tid, sig);
+    if (ret < 0) {
+        ret = errno;
+        errno = old_errno;
+    }
+
+    return ret;
+}
+#endif
+
 /* We hold the allocation lock.  Suspend all threads that might	*/
 /* still be running.  Return the number of suspend signals that	*/
 /* were sent. */
 int GC_suspend_all()
 {
+#ifndef NACL
     int n_live_threads = 0;
     int i;
     GC_thread p;
@@ -337,8 +378,12 @@ int GC_suspend_all()
 	    #if DEBUG_THREADS
 	      GC_printf1("Sending suspend signal to 0x%lx\n", p -> id);
 	    #endif
-        
+
+#ifndef PLATFORM_ANDROID
         result = pthread_kill(p -> id, SIG_SUSPEND);
+#else
+        result = android_thread_kill(p -> kernel_id, SIG_SUSPEND);
+#endif
 	    switch(result) {
                 case ESRCH:
                     /* Not really there anymore.  Possible? */
@@ -353,11 +398,15 @@ int GC_suspend_all()
       }
     }
     return n_live_threads;
+#else /* NACL */
+    return 0;
+#endif
 }
 
 /* Caller holds allocation lock.	*/
 static void pthread_stop_world()
 {
+#ifndef NACL
     int i;
     int n_live_threads;
     int code;
@@ -409,8 +458,128 @@ static void pthread_stop_world()
       GC_printf1("World stopped from 0x%lx\n", pthread_self());
     #endif
     GC_stopping_thread = 0;  /* debugging only */
+#else /* NACL */
+    GC_thread p;
+    int i;
+
+    #if DEBUG_THREADS
+    GC_printf1("pthread_stop_world: num_threads %d\n", nacl_num_gc_threads - 1);
+    #endif
+    nacl_thread_parker = pthread_self();
+    nacl_park_threads_now = 1;
+    
+    while (1) {
+	#define NACL_PARK_WAIT_NANOSECONDS 100000
+        int num_threads_parked = 0;
+        struct timespec ts;
+        int num_used = 0;
+	/* Check the 'parked' flag for each thread the GC knows about */
+        for (i = 0; i < MAX_NACL_GC_THREADS && num_used < nacl_num_gc_threads; i++) {
+            if (nacl_thread_used[i] == 1) {
+                num_used++;
+                if (nacl_thread_parked[i] == 1) {
+                    num_threads_parked++;
+                }
+            }
+        }
+	/* -1 for the current thread */
+        if (num_threads_parked >= nacl_num_gc_threads - 1)
+            break;
+        ts.tv_sec = 0;
+        ts.tv_nsec = NACL_PARK_WAIT_NANOSECONDS;
+        #if DEBUG_THREADS
+        GC_printf1("sleeping waiting for %d threads to park...\n", nacl_num_gc_threads - num_threads_parked - 1);
+        #endif
+        nanosleep(&ts, 0);
+    }
+
+#endif /* NACL */
 }
 
+
+#ifdef NACL
+
+#if __x86_64__
+
+#define NACL_STORE_REGS()  \
+    do {                  \
+	asm("push %rbx");\
+	asm("push %rbp");\
+	asm("push %r12");\
+	asm("push %r13");\
+	asm("push %r14");\
+	asm("push %r15");\
+	asm("mov %%esp, %0" : "=m" (nacl_gc_thread_self->stop_info.stack_ptr));\
+        memcpy(nacl_gc_thread_self->stop_info.reg_storage, nacl_gc_thread_self->stop_info.stack_ptr, NACL_GC_REG_STORAGE_SIZE * sizeof(ptr_t));\
+	asm("add $48, %esp");\
+        asm("add %r15, %rsp");\
+    } while (0)
+
+#elif __i386__
+
+#define NACL_STORE_REGS()  \
+    do {                  \
+	asm("push %ebx");\
+	asm("push %ebp");\
+	asm("push %esi");\
+	asm("push %edi");\
+	asm("mov %%esp, %0" : "=m" (nacl_gc_thread_self->stop_info.stack_ptr));\
+        memcpy(nacl_gc_thread_self->stop_info.reg_storage, nacl_gc_thread_self->stop_info.stack_ptr, NACL_GC_REG_STORAGE_SIZE * sizeof(ptr_t));\
+	asm("add $16, %esp");\
+    } while (0)
+
+#endif
+
+void nacl_pre_syscall_hook()
+{
+    int local_dummy = 0;
+    if (nacl_thread_idx != -1) {
+	NACL_STORE_REGS();
+        nacl_gc_thread_self->stop_info.stack_ptr = (ptr_t)(&local_dummy);
+        nacl_thread_parked[nacl_thread_idx] = 1;
+    }
+}
+
+void nacl_post_syscall_hook()
+{
+    /* Calling __nacl_suspend_thread_if_needed() right away should guarantee we don't mutate the GC set. */
+    __nacl_suspend_thread_if_needed();
+    if (nacl_thread_idx != -1) {
+        nacl_thread_parked[nacl_thread_idx] = 0;
+    }
+}
+
+void __nacl_suspend_thread_if_needed() {
+    if (nacl_park_threads_now) {
+        pthread_t self = pthread_self();
+        int local_dummy = 0;
+        /* Don't try to park the thread parker. */
+        if (nacl_thread_parker == self)
+            return;
+
+        /* This can happen when a thread is created   */
+        /* outside of the GC system (wthread mostly). */
+        if (nacl_thread_idx < 0)
+            return;
+
+        /* If it was already 'parked', we're returning from a syscall, */
+        /* so don't bother storing registers again, the GC has a set.  */
+        if (!nacl_thread_parked[nacl_thread_idx]) {
+            NACL_STORE_REGS();
+            nacl_gc_thread_self->stop_info.stack_ptr = (ptr_t)(&local_dummy);
+        }
+        nacl_thread_parked[nacl_thread_idx] = 1;
+        while (nacl_park_threads_now)
+            ; /* spin */
+        nacl_thread_parked[nacl_thread_idx] = 0;
+
+        /* Clear out the reg storage for next suspend. */
+        memset(nacl_gc_thread_self->stop_info.reg_storage, 0, NACL_GC_REG_STORAGE_SIZE * sizeof(ptr_t));
+    }
+}
+
+#endif /* NACL */
+
 /* Caller holds allocation lock.	*/
 void GC_stop_world()
 {
@@ -443,6 +612,7 @@ void GC_stop_world()
 /* the world stopped.							*/
 static void pthread_start_world()
 {
+#ifndef NACL
     pthread_t my_thread = pthread_self();
     register int i;
     register GC_thread p;
@@ -465,8 +635,12 @@ static void pthread_start_world()
 	    #if DEBUG_THREADS
 	      GC_printf1("Sending restart signal to 0x%lx\n", p -> id);
 	    #endif
-        
+
+#ifndef PLATFORM_ANDROID
         result = pthread_kill(p -> id, SIG_THR_RESTART);
+#else
+        result = android_thread_kill(p -> kernel_id, SIG_THR_RESTART);
+#endif
 	    switch(result) {
                 case ESRCH:
                     /* Not really there anymore.  Possible? */
@@ -499,6 +673,12 @@ static void pthread_start_world()
     #if DEBUG_THREADS
       GC_printf0("World started\n");
     #endif
+#else /* NACL */
+#   if DEBUG_THREADS
+    GC_printf0("World starting\n");
+#   endif
+    nacl_park_threads_now = 0;
+#endif /* NACL */
 }
 
 void GC_start_world()
@@ -512,6 +692,7 @@ void GC_start_world()
 }
 
 static void pthread_stop_init() {
+#ifndef NACL
     struct sigaction act;
     
     if (sem_init(&GC_suspend_ack_sem, 0, 0) != 0)
@@ -552,6 +733,7 @@ static void pthread_stop_init() {
               GC_printf0("Will retry suspend signal if necessary.\n");
 	  }
 #     endif
+#endif /* NACL */
 }
 
 /* We hold the allocation lock.	*/
diff --git a/libgc/pthread_support.c b/libgc/pthread_support.c
index 29c39f7..3e588ac 100644
--- a/libgc/pthread_support.c
+++ b/libgc/pthread_support.c
@@ -68,7 +68,8 @@
 
 # if (defined(GC_DGUX386_THREADS) || defined(GC_OSF1_THREADS) || \
       defined(GC_DARWIN_THREADS) || defined(GC_AIX_THREADS)) || \
-      defined(GC_NETBSD_THREADS) && !defined(USE_PTHREAD_SPECIFIC)
+      defined(GC_NETBSD_THREADS) && !defined(USE_PTHREAD_SPECIFIC) || \
+      defined(GC_OPENBSD_THREADS)
 #   define USE_PTHREAD_SPECIFIC
 # endif
 
@@ -129,7 +130,7 @@
 # include <sys/sysctl.h>
 #endif /* GC_DARWIN_THREADS */
 
-#if defined(GC_NETBSD_THREADS)
+#if defined(GC_NETBSD_THREADS) || defined(GC_OPENBSD_THREADS)
 # include <sys/param.h>
 # include <sys/sysctl.h>
 #endif
@@ -163,6 +164,9 @@
 #   endif
 #   undef pthread_join
 #   undef pthread_detach
+#   if defined(NACL)
+#     undef pthread_exit
+#   endif
 #   if defined(GC_OSF1_THREADS) && defined(_PTHREAD_USE_MANGLED_NAMES_) \
        && !defined(_PTHREAD_USE_PTDNAM_)
 /* Restore the original mangled names on Tru64 UNIX.  */
@@ -675,6 +679,52 @@ void GC_mark_thread_local_free_lists(void)
 
 static struct GC_Thread_Rep first_thread;
 
+#ifdef NACL
+extern int nacl_thread_parked[MAX_NACL_GC_THREADS];
+extern int nacl_thread_used[MAX_NACL_GC_THREADS];
+extern int nacl_thread_parking_inited;
+extern int nacl_num_gc_threads;
+extern pthread_mutex_t nacl_thread_alloc_lock;
+extern __thread int nacl_thread_idx;
+extern __thread GC_thread nacl_gc_thread_self;
+
+void nacl_initialize_gc_thread()
+{
+    int i;
+    pthread_mutex_lock(&nacl_thread_alloc_lock);
+    if (!nacl_thread_parking_inited)
+    {
+        for (i = 0; i < MAX_NACL_GC_THREADS; i++) {
+            nacl_thread_used[i] = 0;
+            nacl_thread_parked[i] = 0;
+        }
+        nacl_thread_parking_inited = 1;
+    }
+    GC_ASSERT(nacl_num_gc_threads <= MAX_NACL_GC_THREADS);
+    for (i = 0; i < MAX_NACL_GC_THREADS; i++) {
+        if (nacl_thread_used[i] == 0) {
+            nacl_thread_used[i] = 1;
+            nacl_thread_idx = i;
+            nacl_num_gc_threads++;
+            break;
+        }
+    }
+    pthread_mutex_unlock(&nacl_thread_alloc_lock);
+}
+
+void nacl_shutdown_gc_thread()
+{
+    pthread_mutex_lock(&nacl_thread_alloc_lock);
+    GC_ASSERT(nacl_thread_idx >= 0 && nacl_thread_idx < MAX_NACL_GC_THREADS);
+    GC_ASSERT(nacl_thread_used[nacl_thread_idx] != 0);
+    nacl_thread_used[nacl_thread_idx] = 0;
+    nacl_thread_idx = -1;
+    nacl_num_gc_threads--;
+    pthread_mutex_unlock(&nacl_thread_alloc_lock);
+}
+
+#endif /* NACL */
+
 /* Add a thread to GC_threads.  We assume it wasn't already there.	*/
 /* Caller holds allocation lock.					*/
 GC_thread GC_new_thread(pthread_t id)
@@ -692,8 +742,15 @@ GC_thread GC_new_thread(pthread_t id)
     }
     if (result == 0) return(0);
     result -> id = id;
+#ifdef PLATFORM_ANDROID
+    result -> kernel_id = gettid();
+#endif
     result -> next = GC_threads[hv];
     GC_threads[hv] = result;
+#ifdef NACL
+    nacl_gc_thread_self = result;
+    nacl_initialize_gc_thread();
+#endif
     GC_ASSERT(result -> flags == 0 && result -> thread_blocked == 0);
     return(result);
 }
@@ -707,6 +764,11 @@ void GC_delete_thread(pthread_t id)
     register GC_thread p = GC_threads[hv];
     register GC_thread prev = 0;
     
+#ifdef NACL
+    nacl_shutdown_gc_thread();
+    nacl_gc_thread_self = NULL;
+#endif
+
     while (!pthread_equal(p -> id, id)) {
         prev = p;
         p = p -> next;
@@ -1037,7 +1099,7 @@ void GC_thr_init()
 	  GC_nprocs = sysconf(_SC_NPROC_ONLN);
 	  if (GC_nprocs <= 0) GC_nprocs = 1;
 #       endif
-#       if defined(GC_DARWIN_THREADS) || defined(GC_FREEBSD_THREADS) || defined(GC_NETBSD_THREADS)
+#       if defined(GC_DARWIN_THREADS) || defined(GC_FREEBSD_THREADS) || defined(GC_NETBSD_THREADS) || defined(GC_OPENBSD_THREADS)
 	  int ncpus = 1;
 	  size_t len = sizeof(ncpus);
 	  sysctl((int[2]) {CTL_HW, HW_NCPU}, 2, &ncpus, &len, NULL, 0);
@@ -1113,7 +1175,8 @@ void GC_init_parallel()
 }
 
 
-#if !defined(GC_DARWIN_THREADS)
+#if !defined(GC_DARWIN_THREADS) && !defined(GC_OPENBSD_THREADS)
+#ifndef NACL
 int WRAP_FUNC(pthread_sigmask)(int how, const sigset_t *set, sigset_t *oset)
 {
     sigset_t fudged_set;
@@ -1125,6 +1188,7 @@ int WRAP_FUNC(pthread_sigmask)(int how, const sigset_t *set, sigset_t *oset)
     }
     return(REAL_FUNC(pthread_sigmask)(how, set, oset));
 }
+#endif
 #endif /* !GC_DARWIN_THREADS */
 
 /* Wrappers for functions that are likely to block for an appreciable	*/
@@ -1255,6 +1319,17 @@ int WRAP_FUNC(pthread_join)(pthread_t thread, void **retval)
     return result;
 }
 
+#ifdef NACL
+/* Native Client doesn't support pthread cleanup functions, */
+/* so wrap pthread_exit and manually cleanup the thread.    */
+void
+WRAP_FUNC(pthread_exit)(void *status)
+{
+    GC_thread_exit_proc(0); 
+    REAL_FUNC(pthread_exit)(status);
+}
+#endif
+
 int
 WRAP_FUNC(pthread_detach)(pthread_t thread)
 {
diff --git a/libgc/threadlibs.c b/libgc/threadlibs.c
index 9078c8d..79428a9 100644
--- a/libgc/threadlibs.c
+++ b/libgc/threadlibs.c
@@ -15,7 +15,7 @@ int main()
 	|| defined(GC_DARWIN_THREADS) || defined(GC_AIX_THREADS)
         printf("-lpthread\n");
 #   endif
-#   if defined(GC_FREEBSD_THREADS)
+#   if defined(GC_FREEBSD_THREADS) || defined(GC_OPENBSD_THREADS)
 #       if (__FREEBSD_version >= 500000)
           printf("-lpthread\n");
 #       else
diff --git a/man/ChangeLog b/man/ChangeLog
index 4670bf3..c58a084 100644
--- a/man/ChangeLog
+++ b/man/ChangeLog
@@ -1,7 +1,98 @@
+2011-01-17  Marek Safar  <marek.safar at gmail.com>
+
+	Add new mcs -sdk option
+
+2011-01-11  Ankit Jain  <radical at corewars.org>
+
+	[xbuild] Update man page, new search paths for extensions and .pc
+	files.
+
+2010-10-06  Miguel de Icaza  <miguel at gnome.org>
+
+	Update docs
+
+2010-12-03  Mark Probst  <mark.probst at gmail.com>
+
+	[sgen] Make concurrent sweep user-selectable.
+
+	It's off by default for now.
+
+2010-11-29  Paolo Molaro  <lupus at oddwiz.org>
+
+	* man/mprof-report.1: updated the documentation. * decode.c: added
+	jit report and sample report. * proflog.h, proflog.c: implemented
+	statistical sampling mode, using either the mono built-in signal
+	based sampling and the Linux perforamnce counters perf subsystem.
+	Unmanaged symbols are currently available for ELF systems
+	implementing dl_iterate_phdr() or systems implementing dladdr().
+
+2010-11-19  Mark Probst  <mark.probst at gmail.com>
+
+	[sgen] Implement evacuation for parallel mark.
+
+2010-11-19  Miguel de Icaza  <miguel at gnome.org>
+
+	Remove mentions of Logging and Heap Shot profilers from man page
+
+2010-11-12  Paolo Molaro  <lupus at oddwiz.org>
+
+	Log profiler: removed the hsmode option, use heapshot=MODE
+	instead.
+
+2010-11-11  Paolo Molaro  <lupus at oddwiz.org>
+
+	Added the mprof-report manpage.
+
+2010-10-30  Mark Probst  <mark.probst at gmail.com>
+
+	[sgen] User-settable evacuation threshold.
+
+	A MONO_GC_PARAMS option for setting the evacuation threshold.
+
+2010-10-20  Pablo Ruiz Garcia  <pablo.ruiz at gmail.com>
+
+	[API] X509 related enhacemnts to allow 1) associating keystore's
+	private keys with their corresponding public certificates found at
+	X509Stores, and 2) importing private keys to X509Stores along with
+	certificates.
+
+	mcs/class/corlib/Mono.Security.X509/X509Store.cs:
+	mcs/class/Mono.Security/Mono.Security.X509/X509Store.cs:
+	mcs/class/corlib/Mono.Security.X509/X509StoreManager.cs:
+	mcs/class/Mono.Security/Mono.Security.X509/X509StoreManager.cs:
+	Modified MSX.X509Store to allow importing privateKeys along
+	certificates (by using RSACryptoServiceProvider and
+	KeyPairPersister). Fixed X509Store to use certificate's hash as
+	CspParameters.KeyContainerName.
+
+	mcs/tools/security/certmgr.cs: Added a new -importKey action to
+	certmgr, which allows importing a PKCS12 contained key into our
+	KeyPair store. Added a more (verbose) output to certmgr's -list
+	action.
+
+	man/certmgr.1: Updated certmgr man page ti reflect -importKey
+	addition.
+
+	mcs/class/corlib/System.Security.Cryptography/CspParameters.cs:
+	mcs/class/corlib/System.Security.Cryptography/RSACryptoServiceProvider.cs:
+	Implemented RSACryptoServiceProvider.CspKeyContainerInfo getter
+	RSACryptoServiceProvider will not take into account
+	CspParameterFlags.UseExistingKey by throwing a
+	CryptographicException if keyset identified by KeyContainerName
+	does not exists.
+
 2010-10-21  Miguel de Icaza  <miguel at gnome.org>
 
 	Document server option to --debugger-agent
 
+2010-09-07  Miguel de Icaza  <miguel at gnome.org>
+
+	Add profile docs
+
+2010-09-03  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Add notes when to use cardtable and remset.
+
 2010-09-02  Ankit Jain  <radical at corewars.org>
 
 	[xbuild] Update man page to add "/tv:" option.
diff --git a/man/Makefile.am b/man/Makefile.am
index c1ed916..4b1810c 100644
--- a/man/Makefile.am
+++ b/man/Makefile.am
@@ -27,6 +27,7 @@ man_MANS = \
 	mdvalidater.1         \
 	mkbundle.1            \
 	mono.1                \
+	mprof-report.1        \
 	mono-cil-strip.1      \
 	mono-config.5         \
 	monodocer.1           \
diff --git a/man/Makefile.in b/man/Makefile.in
index 595f923..9f6d007 100644
--- a/man/Makefile.in
+++ b/man/Makefile.in
@@ -138,6 +138,7 @@ MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
 MONO_DL_NEED_USCORE = @MONO_DL_NEED_USCORE@
 MONO_NACL_ALIGN_MASK_OFF = @MONO_NACL_ALIGN_MASK_OFF@
+MOONLIGHT_DEFINES = @MOONLIGHT_DEFINES@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
@@ -275,6 +276,7 @@ man_MANS = \
 	mdvalidater.1         \
 	mkbundle.1            \
 	mono.1                \
+	mprof-report.1        \
 	mono-cil-strip.1      \
 	mono-config.5         \
 	monodocer.1           \
diff --git a/man/certmgr.1 b/man/certmgr.1
index b67ee8f..0410034 100644
--- a/man/certmgr.1
+++ b/man/certmgr.1
@@ -1,8 +1,10 @@
 .\" 
 .\" certmgr manual page.
 .\" Copyright 2004-2005 Novell
+.\" Copyright 2010 Pablo Ruiz
 .\" Author:
 .\"   Sebastien Pouliot <sebastien at ximian.com>
+.\"   Pablo Ruiz Garcia <pruiz at netway.org>
 .\"
 .TH Mono "certmgr"
 .SH NAME
@@ -24,7 +26,9 @@ server certificates.
 List the certificates, CTL or CTL in the specified store.
 .TP
 .I "-add"
-Add a certificate, CRL or CTL to specified store.
+Add a certificate, CRL or CTL to specified store. If filename it's a pkcs12 
+or pfx file, and it contains a private key, it will be imported to local key
+pair container.
 .TP
 .I "-del"
 Remove a certificate, CRL or CTL from specified store. You must specify the 
@@ -44,6 +48,11 @@ This action assume an certificate (-c) object type and will import the
 certificates in appropriate stores (i.e. server certificate in the 
 OtherPeople store, the root certificate in the Trust store, any other 
 intermediate certificates in the IntermediateCA store).
+.TP
+.I "-importKey"
+Allows importing a private key from a pkcs12 file into a local key pair
+store. (Usefull when you already have the key's corresponding certificate
+installed at the specific store.)
 
 .SH OBJECT TYPES
 .TP
@@ -66,6 +75,9 @@ Use the machine's certificate stores (instead of the default user's stores).
 .I "-v"
 More details displayed on the console.
 .TP
+.I "-p password"
+Use the specify password when accessing a pkcs12 file.
+.TP
 .I "-help", "-h", "-?", "/?"
 Display help about this tool.
 
@@ -88,6 +100,9 @@ The filenames either starts with
 (subject key identifier).
 .TP
 The rest of the filename is the base64-encoded value (tbp or ski).
+.TP
+Private key data is stored under
+.I ~/.config/.mono/keypairs/
 
 .SH EXAMPLES
 .TP
@@ -140,6 +155,8 @@ element of your machine.config file.
 
 .SH AUTHOR
 Written by Sebastien Pouliot
+
+Minor additions by Pablo Ruiz García
 .SH COPYRIGHT
 Copyright (C) 2004-2005 Novell.
 .SH MAILING LISTS
diff --git a/man/mcs.1 b/man/mcs.1
index 4582b41..0fdec3b 100644
--- a/man/mcs.1
+++ b/man/mcs.1
@@ -351,6 +351,11 @@ shell will perform globbing, so you might want to use it like this:
 		$ mcs -recurse:'*.cs' 
 .fi
 .TP
+.I \-sdk:VERSION
+Used to specify the version of Base Class Library assemblies. The possible
+values are: 2 (default), 4. The version number means which .NET version
+should the produced assembly be compatible with.
+.TP
 .I \-\-shell
 Starts up the compiler in interactive mode, providing a C# shell for
 statements and expressions.   A shortcut is to use the
diff --git a/man/mono.1 b/man/mono.1
index b8b2d22..08b3012 100644
--- a/man/mono.1
+++ b/man/mono.1
@@ -422,6 +422,10 @@ Turns on profiling.  For more information about profiling applications
 and code coverage see the sections "PROFILING" and "CODE COVERAGE"
 below. 
 .TP
+This option can be used multiple times, each time will load an
+additional profiler.   This allows developers to use modules that
+extend the JIT through the Mono profiling interface.
+.TP
 \fB--trace[=expression]\fR
 Shows method names as they are invoked.  By default all methods are
 traced. 
@@ -634,412 +638,22 @@ Note that the statistical profiler has a very low overhead and should
 be the preferred profiler to use (for better output use the full path
 to the mono binary when running and make sure you have installed the
 addr2line utility that comes from the binutils package).
-.SH LOGGING PROFILER
-.PP
-The
-.I logging profiler
-is a general purpose profiler that can track many different kinds of
-events and logs those into a file as the program executes.   This is
-different than previous profilers in Mono that kept the information in
-memory and rendered a summary of the results when the program shut
-down.
-.PP
-Using the logging profiler means that useful information can be
-gathered for long-running applications, applications that terminate
-abormally (crashes, segfaults, complicated tear down processes) or
-when no data about the shutdown is required.
-.PP
-The data collected by the running threads is kept independent of each
-other to minimize the runtime overhead and the information dumped into
-the log at regular intervals. 
-.PP
-A sample use is very simple:
-.nf
-	$ mono --profile=logging program.exe
-
-	$ mprof-decoder program.mprof
-.fi
-.PP
-In the above example the logging profiler is used in its default mode
-that merely records GC statistics for the execution of program.exe.
-The profiling data collected is stored in the file program.mprof.  The
-mprof-decoder tool is then used to analyze the data.
-.PP
-You can instruct the logging profiler to record different one or more
-sets of events.   These are the modes supported:
-.IP
-.I Statistical Profiling (stat)
-the program instruction pointer is periodically sampled to determine
-where the program is spending most of its time.   Statistical
-profiling has a very low impact on a running application and it is
-very useful to get a general picture of where time is being spent on a
-program.   
-.IP 
-If call chains are requested, for each sample the profiler gets a
-partial stack trace (limited by the specified depth) so that
-caller-callee information is available.
-.IP
-.I Instrumenting:
-each method enter and exit is logged with a timestamp; further processing of
-the data can show the methods that took the longer to execute, with complete
-accounting for callers and callees. However, this way of profiling is rather
-intrusive and slows down the application significantly.
-.IP
-.I Allocation:
-each allocation is logged.
-.IP
-.I Allocation summary:
-shows, for each collection, a summary of the heap contents broken down by
-class (for each class the number of allocated and released objects is
-given, together with their aggregated size in bytes).
-.IP
-.I Heap snapshot mode:
-dumps the whole heap contents at every collection (or at user specified
-collections). It is also possible to request a collection and snapshot dump
-with a signal.
-.PP
-Moreover, other events can be logged and analyzed, like jit time for each
-method, load and unload for assemblies, modules and and individual classes,
-and appdomain and thread creation and destruction.
-.PP
-This profiler is activated passing the \fB--profile=logging\fR option to
-the mono runtime, and is controlled attaching further options, like
-\fB--profile=logging:statistical\fR for doing statistical profiling (multiple
-options are separated by commas).
-.PP
-As a quick primer, here are a few examples of the most common usage modes:
-.PP
-To perform statistical profiling:
-.nf
-
-	mono --profile=logging:stat program.exe
-.fi
-.PP
-To perform statistical profiling, inspecting call chains up to depth 8:
-.nf
-
-	mono --profile=logging:stat=8 program.exe
-.fi
-.PP
-To profile allocations (by default the call stack will be analized for
-each allocation, producing detailed caller method attribution infornation):
-.nf
-
-	mono --profile=logging:allocations program.exe
-.fi
-.PP
-To profile garbage collection activity at a high level (collection time and objects freed
-at each collection for each class are reported, but heap snapshots are not saved to disk):
-.nf
-
-	mono --profile=logging:allocations-summary program.exe
-.fi
-.PP
-To perform heap profiling taking heap snapshots:
-.nf
-
-	mono --profile=logging:heap=all program.exe
-.fi
-.PP
-To write the resulting data to a different file:
-.nf
-
-	mono --profile=logging:output=mydata.mprof program.exe
-.fi
-.PP
-Then you would need to invoke the decoder \fImprof-decoder(1)\fR
-on the output file to see the profiling results, or to examine heap
-snapshots and allocations in detail \fImprof-heap-viewer(1)\fR.
-.PP
-The operating modes described above are the default ones, and are sufficient
-to use the profiler.
-.PP
-To further customize the profiler behavior there are more options, described
-below.
-.PP
-These options can be individually enabled and disabled prefixing them
-with an (optional) '+' character or a '-' character.  For instance,
-the "allocations" option by default records also the full call stack
-at each allocation.  If only the caller is wanted, one should use
-"allocations,-save-allocation-stack", or to disable call tracking
-completely (making the profiler less intrusive)
-"allocations,-save-allocation-caller,-save-allocation-stack".  In
-practice the "allocation" option by default behaves like
-"allocations,save-allocation-caller,save-allocation-stack", but the
-user can tune this to his needs.
-.PP
-These are all the available options, organized by category:
-.PP
-\fBExecution profiling modes\fR
-.RS
-.ne 8
-.TP
-\fIstatistical\fR, \fIstat\fR or \fIs\fR
-Performs statistical profiling.   This is a lightweight profiling
-mechanism and it has a much lower overhead than the \fIenter-leave\fR
-profiling as it works by sampling where the program is spending its
-time by using a timer.
-If specified with \fIs=<number>\fR, also inspect call chains up to level
-<number>.
-.TP
-\fIenter-leave\fR, \fIcalls\fR or \fIc\fR
-Measure the time spent inside each method call, this is done by
-logging the time when a method enters and when the method leaves.
-This can be a time consuming operation. 
-.TP
-\fIjit\fR, \fIj\fR
-Collect information about time spent by the JIT engine compiling
-methods. 
-.ne
-.RE
-.PP
-\fBAllocation profiling modes\fR
-.RS
-.ne 8
-.TP
-\fIallocations\fR, \fIalloc\fR or \fIa\fR
-Collect information about each allocation (object class and size).
-By default this also implies "+save-allocation-caller" and
-"+save-allocation-stack".
-.TP
-\fIsave-allocation-caller\fR, \fIsac\fR
-Save the direct caller of each allocation. The profiler filters out wrapper
-methods, and also recognizes if the allocation has been performed by the
-runtime while jitting a method.
-.TP
-\fIsave-allocation-stack\fR, \fIsas\fR
-Save the full managed execution stack at each allocation.
-While the "sac" option saves the direct caller, this one records the whole
-stack trace.
-Note that in the call stack the wrapper methods are not filtered out.
-Anyway the "sac" and "sas" options can be combined, and the decoder will
-attribute the allocation to the correct method even if the wrapper is at the
-top of the stack trace.
-.TP
-\fIallocations-summary\fR or \fIas\fR
-At each collection dump a summary
-of the heap contents (for each class, the number and collective size of all
-live and freed heap objects). This very lightweight compared to full heap
-snapshots.
-.TP
-\fIunreachable\fR, \fIfree\fR or \fIf\fR
-Performs a lightweight profile of the garbage collector.  On each
-collection performed by the GC, the list of unreachable objects is
-recorded, and for each object the class and size is provided.  This
-information can be used to compute the heap size broken down by class
-(combined with "a" can give the same information of "as", but the log
-file contains info about each individual object, while in "as" the
-processing is done directly at runtime and the log file contains only
-the summarized data broken down by class).
-.TP
-\fIgc\fR or \fIg\fR
-Measure the time spent in each collection, and also trace heap resizes.
-.TP
-\fIheap-shot[=ARG]\fR, \fIheap[=ARG]\fR or \fIh[=ARH]\fR
-Performs full heap profiling.   In this case on each
-collection a full heap snapshot is recorded to disk.
-Inside the snapshots, each object reference is still represented so
-that it's possible to investigate who is responsible for keeping objects
-alive.
-.PP
-If the value of ARG is 
-.B all, 
-a heap snapshot is taken at each collection.  
-.PP
-If the value is an integer
-.B n,
-a snapshot will be taken at the first
-.B n
-collections (like setting
-.B gcd=n
-);
-.PP
-If no additional argument is given to the heap option, the only way to take
-heap snapshots is to requeste them using the runtime socket based command
-interface described below (see "Profiler activity control").
-.PP
-Heap profiling also enables full allocation profiling (with call
-stacks), and each allocation can be related to its corresponding
-object in the snapshots, enabling investigations like "find all
-objects of a given class allocated by a given method and still live at
-a given collection, and then find all objects referencing them".
-.PP
-This kind of heap snapshot analysis is performed using the mprof-heap-viewer(1)
-application.
-.PP
-The number of heap snapshots taken (and the moment in which they are taken)
-can be further customized with the following options: 
-.TP
-\fIgc-dumps=N\fR, \fIgc-d=N\fR, \fIgcd=N\fR
-states the number of snapshots that must be dumped (since the application
-starts).  Zero means no dumps at all, -1 means dump at all collections.
-.TP
-These options exist because it can happen that the user wants to investigate
-what happens during collections but without forcing a collection using the
-command interface, because forcing a collection alters the program behavior.
-Of course it is possible to simply take a snapshot at every collection, but
-in some workloads this is could not be feasible (too much data).
-So we have this "garbage collection dumps" counter to control how many
-snapshots to take.
-.ne
-.RE
-.PP
-\fBProfiler activity control\fR
-.RS
-.ne 8
-.TP
-\fIoutput=FILE\fR, \fIout=FILE\fR or \fIo=FILE\fR
-Use this option to provide the output file name for the profile log.
-If this option is not specified, it will default to "<program-name>.mprof".
-.TP
-\fIoutput-suffix=SUFFIX\fR, \fIsuffix=SUFFIX\fR or \fIos=SUFFIX\fR: makes
-the output file name equals to "<program-name>-SUFFIX.mprof".
-.TP
-\fIstart-enabled\fR or \fIse\fR: start with the profiler active
-(which is the default).
-.TP
-\fIstart-disabled\fR or \fIsd\fR: start with the profiler inactive.
-.TP
-\fIforce-accurate-timer\fR (or \fIfac\fR): the profiler by default uses
-rtdsc to acquire timestamps for frequent events, but this can be imprecise;
-using this option you force the use of "gettimeofday" at every event, which
-is more accurate but much slower.
-.TP
-\fIcommand-port=port\fR or \fIcp=port\fR (where port is an integer between
-1024 nd 65535):
-Choose a TCP port where the profiler will listen for user commands.
-The protocol is ASCII based and line oriented (one line per command), and the
-profiler answers with one line containing either "OK" or "ERROR" to each
-received command.
-.PP
-The user can telnet to this port and give commands manually, or a GUI can
-use this facility to control the profiler at runtime.
-.PP
-The available commands are:
-.TP
-\fIenable\fR: Enables the profiler.
-.TP
-\fIdisable\fR: Disables the profiler.
-.TP
-\fIheap-snapshot\fR: Takes a heap snapshot now (forces a full garbage collection).
-.TP
-\fIheap-snapshot-counter=arg\fR: Set the counter of the next heap snapshots
-that must be taken, where arg can be "all" (take a snapshot at every
-collection), "none" (do not take snapshots), or an integer "n" (take a heap
-snapshot for the next "n" collections).
-.ne
-.RE
-.PP
-\fBInternal buffer sizes\fR
-.RS
-.ne 8
-.TP
-\fIper-thread-buffer-size=N\fR, \fItbs=N\fR
-Use to specify the number of events that a thread buffer
-can hold.   When the thread buffer is full, a log block is
-written to disk.
-.Sp
-This defaults to tbs=10000.
-.TP
-\fIstatistical-thread-buffer-size=N\fR, \fIsbs=N\fR
-The number of statistical samples that
-are held in memory before they are dumped to disk (the system does
-double-buffering and the statistical samples are written by a helper
-thread, so the statistical profiler never stops and is able to profile
-the profiler itself).  
-.Sp
-This defaults to sbs=10000.
-.TP
-\fIwrite-buffer-size\fR, \fIwbs\fR
-Specifies the size in bytes of the internal write buffers.
-.Sp
-This defaults to wbs=1024.
-.ne
-.RE
-.PP
-In its current state, this profiler can also perform heap analysis
-like the HeapShot profiler, but there is no UI to process this
-information. 
-.PP
-Another known issue is that if the timer is not strictly monotonic (like
-rtdsc), differences between times can underflow (they are handled as
-unsigned integers) and weird numbers can show up in the logs.
-.PP
-Finally, it can happen that when exceptions are thrown the profiler temporarily
-loses track of the execution stack and misattributes the caller for a few
-allocations (and method execution time).
-.PP
-The output file contains compressed events, to process the data you should
-use tools like the "Mono.Profiler" tool provided on the Mono SVN
-repository.  
-.PP
-More explanations are provided here: "http://www.mono-project.com/LoggingProfiler".
-.SH EXTERNAL PROFILERS
-There are a number of external profilers that have been developed for
-Mono, we will update this section to contain the profilers.
-.PP
-The heap Shot profiler can track all live objects, and references to
-these objects, and includes a GUI tool, this is our recommended
-profiler.
-To install you must download the profiler
-from Mono's SVN:
-.nf
-	svn co svn://anonsvn.mono-project.com/source/trunk/heap-shot
-	cd heap-shot
-	./autogen
-	make
-	make install
-.fi
-.PP
-See the included documentation for details on using it.
-.PP
-The Live Type profiler shows at every GC iteration all of the live
-objects of a given type.   To install you must download the profiler
-from Mono's SVN:
-.nf
-	svn co svn://anonsvn.mono-project.com/source/trunk/heap-prof
-	cd heap-prof
-	./autogen
-	make
-	make install
-.fi
-.PP
-To use the profiler, execute:
-.nf
-	mono --profile=desc-heap program.exe
-.fi
-.PP
-The output of this profiler looks like this:
-.nf
-	Checkpoint at 102 for heap-resize
-	   System.MonoType : 708
-	   System.Threading.Thread : 352
-	   System.String : 3230
-	   System.String[] : 104
-	   Gnome.ModuleInfo : 112
-	   System.Object[] : 160
-	   System.Collections.Hashtable : 96
-	   System.Int32[] : 212
-	   System.Collections.Hashtable+Slot[] : 296
-	   System.Globalization.CultureInfo : 108
-	   System.Globalization.NumberFormatInfo : 144
-.fi
-.PP
-The first line describes the iteration number for the GC, in this case
-checkpoint 102.
-.PP
-Then on each line the type is displayed as well as the number of bytes
-that are being consumed by live instances of this object.
-.PP 
-The AOT profiler is used to feed back information to the AOT compiler
-about how to order code based on the access patterns for pages.  To
-use it, use:
-.nf
-	mono --profile=aot program.exe
-.fi
-The output of this profile can be fed back into Mono's AOT compiler to
-order the functions on the disk to produce precompiled images that
-have methods in sequential pages.
+.SH LOG PROFILER
+This is the most advanced profiler.   
+.PP
+The Mono \f[I]log\f[] profiler can be used to collect a lot of
+information about a program running in the Mono runtime.
+This data can be used (both while the process is running and later)
+to do analyses of the program behaviour, determine resource usage,
+performance issues or even look for particular execution patterns.
+.PP
+This is accomplished by logging the events provided by the Mono
+runtime through the profiling interface and periodically writing
+them to a file which can be later inspected with the mprof-report(1)
+tool. 
+.PP
+More information about how to use the log profiler is available on the
+mprof-report(1) page. 
 .SH CUSTOM PROFILERS
 Mono provides a mechanism for loading other profiling modules which in
 the form of shared libraries.  These profiling modules can hook up to
@@ -1388,7 +1002,25 @@ The default is 512 megabytes.
 Specifies which write barrier to use.  Options are `cardtable' and
 `remset'.  The card table barrier is faster but less precise, and only
 supported for the Mark&Sweep major collector on 32 bit platforms.  The
-default is `cardtable' if it is supported, otherwise `remset'.
+default is `cardtable' if it is supported, otherwise `remset'. The cardtable
+write barrier is faster and has a more stable and usually smaller
+memory footprint. If the program causes too much pinning during
+thread scan, it might be faster to enable remset.
+.TP
+\fBevacuation-threshold=\fIthreshold\fR
+Sets the evacuation threshold in percent.  This option is only available
+on the Mark&Sweep major collectors.  The value must be an
+integer in the range 0 to 100.  The default is 66.  If the sweep phase of
+the collection finds that the occupancy of a specific heap block type is
+less than this percentage, it will do a copying collection for that block
+type in the next major collection, thereby restoring occupancy to close
+to 100 percent.  A value of 0 turns evacuation off.
+.TP
+\fB(no-)concurrent-sweep\fR
+Enables or disables concurrent sweep for the Mark&Sweep collector.  If
+enabled, the sweep phase of the garbage collection is done in a thread
+concurrently with the application.  Concurrent sweep is disabled by
+default.
 .ne
 .RE
 .TP
@@ -1661,11 +1293,36 @@ trading off the small leaks for the increased performance
 unload the application domains on production systems, it is worth
 using this feature). 
 .TP
+\fBdyn-runtime-invoke\fR
+Instructs the runtime to try to use a generic runtime-invoke wrapper
+instead of creating one invoke wrapper.
+.TP
+\fBgdb\fR 
+Equivalent to setting the \fBMONO_XDEBUG\fR variable, this emits
+symbols into a shared library as the code is JITed that can be loaded
+into GDB to inspect symbols.
+.TP
+\fBgen-seq-points\fR 
+Automatically generates sequence points where the
+IL stack is empty.  These are places where the debugger can set a
+breakpoint.
+.TP
+\fBexplicit-null-checks\fR
+Makes the JIT generate an explicit NULL check on variable dereferences
+instead of depending on the operating system to raise a SIGSEGV or
+another form of trap event when an invalid memory location is
+accessed. 
+.TP
 \fBhandle-sigint\fR
 Captures the interrupt signal (Control-C) and displays a stack trace
 when pressed.  Useful to find out where the program is executing at a
 given point.  This only displays the stack trace of a single thread. 
 .TP
+\fBinit-stacks\FR 
+Instructs the runtime to initialize the stack with
+some known values (0x2a on x86-64) at the start of a method to assist
+in debuggin the JIT engine.
+.TP
 \fBkeep-delegates\fR
 This option will leak delegate trampolines that are no longer
 referenced as to present the user with more information about a
@@ -1689,7 +1346,6 @@ This option will disable the GDB backtrace emitted by the runtime
 after a SIGSEGV or SIGABRT in unmanaged code.
 .TP
 \fBsuspend-on-sigsegv\fR
-
 This option will suspend the program when a native SIGSEGV is received.
 This is useful for debugging crashes which do not happen under gdb,
 since a live process contains more information than a core file.
@@ -1784,7 +1440,7 @@ Mono JIT by default turns this on.
 \fBMONO_XDEBUG\fR
 When the the MONO_XDEBUG env var is set, debugging info for JITted
 code is emitted into a shared library, loadable into gdb. This enables,
-for example, to see managed frame names on gdb backtraces.
+for example, to see managed frame names on gdb backtraces.   
 .TP
 \fBMONO_VERBOSE_METHOD\fR
 Enables the maximum JIT verbosity for the specified method. This is
diff --git a/man/mprof-report.1 b/man/mprof-report.1
new file mode 100644
index 0000000..de40af6
--- /dev/null
+++ b/man/mprof-report.1
@@ -0,0 +1,524 @@
+.TH mprof-report 1 "" 
+.SH The Mono log profiler
+.PP
+The Mono \f[I]log\f[] profiler can be used to collect a lot of
+information about a program running in the Mono runtime.
+This data can be used (both while the process is running and later)
+to do analyses of the program behaviour, determine resource usage,
+performance issues or even look for particular execution patterns.
+.PP
+This is accomplished by logging the events provided by the Mono
+runtime through the profiling interface and periodically writing
+them to a file which can be later inspected with the command line
+\f[I]mprof-report\f[] program or with a GUI (not developed yet).
+.PP
+The events collected include (among others):
+.IP \[bu] 2
+method enter and leave
+.IP \[bu] 2
+object allocation
+.IP \[bu] 2
+garbage collection
+.IP \[bu] 2
+JIT compilation
+.IP \[bu] 2
+metadata loading
+.IP \[bu] 2
+lock contention
+.IP \[bu] 2
+exceptions
+.PP
+In addition, the profiler can periodically collect info about all
+the objects present in the heap at the end of a garbage collection
+(this is called heap shot and currently implemented only for the
+sgen garbage collector).
+Another available profiler mode is the \f[I]sampling\f[] or
+\f[I]statistical\f[] mode: periodically the program is sampled and
+the information about what the program was busy with is saved.
+This allows to get information about the program behaviour without
+degrading its performance too much (usually less than 10%).
+.SS Basic profiler usage
+.PP
+The simpler way to use the profiler is the following:
+.PP
+\f[B]mono\ --profile=log\ program.exe\f[]
+.PP
+At the end of the execution the file \f[I]output.mlpd\f[] will be
+found in the current directory.
+A summary report of the data can be printed by running:
+.PP
+\f[B]mprof-report\ output.mlpd\f[]
+.PP
+With this invocation a huge amount of data is collected about the
+program execution and collecting and saving this data can
+significantly slow down program execution.
+If saving the profiling data is not needed, a report can be
+generated directly with:
+.PP
+\f[B]mono\ --profile=log:report\ program.exe\f[]
+.PP
+If the information about allocations is not of interest, it can be
+excluded:
+.PP
+\f[B]mono\ --profile=log:noalloc\ program.exe\f[]
+.PP
+On the other hand, if method call timing is not important, while
+allocations are, the needed info can be gathered with:
+.PP
+\f[B]mono\ --profile=log:nocalls\ program.exe\f[]
+.PP
+You will still be able to inspect information about the sequence of
+calls that lead to each allocation because at each object
+allocation a stack trace is collected if full enter/leave
+information is not available.
+.PP
+To periodically collect heap shots (and exclude method and
+allocation events) use the following options (making sure you run
+with the sgen garbage collector):
+.PP
+\f[B]mono\ --gc=sgen\ --profile=log:heapshot\ program.exe\f[]
+.PP
+To perform a sampling profiler run, use the \f[I]sample\f[] option:
+.PP
+\f[B]mono\ --profile=log:sample\ program.exe\f[]
+.SS Profiler option documentation
+.PP
+By default the \f[I]log\f[] profiler will gather all the events
+provided by the Mono runtime and write them to a file named
+\f[I]output.mlpd\f[].
+When no option is specified, it is equivalent to using:
+.PP
+\f[B]--profile=log:calls,alloc,output=output.mlpd,maxframes=8,calldepth=100\f[]
+.PP
+The following options can be used to modify this default behaviour.
+Each option is separated from the next by a \f[B],\f[] character,
+with no spaces and all the options are included after the
+\f[I]log:\f[] profile module specifier.
+.IP \[bu] 2
+\f[I]help\f[]: display concise help info about each available
+option
+.IP \[bu] 2
+\f[I][no]alloc\f[]: \f[I]noalloc\f[] disables collecting object
+allocation info, \f[I]alloc\f[] enables it if it was disabled by
+another option like \f[I]heapshot\f[].
+.IP \[bu] 2
+\f[I][no]calls\f[]: \f[I]nocalls\f[] disables collecting method
+enter and leave events.
+When this option is used at each object allocation and at some
+other events (like lock contentions and exception throws) a stack
+trace is collected by default.
+See the \f[I]maxframes\f[] option to control this behaviour.
+\f[I]calls\f[] enables method enter/leave events if they were
+disabled by another option like \f[I]heapshot\f[].
+.IP \[bu] 2
+\f[I]heapshot[=MODE]\f[]: collect heap shot data at each major
+collection.
+The frequency of the heap shots can be changed with the
+\f[I]MODE\f[] parameter.
+When this option is used allocation events and method enter/leave
+events are not recorded by default: if they are needed, they need
+to be enabled explicitly.
+The optional parameter \f[I]MODE\f[] can modify the default heap
+shot frequency.
+heapshot can be used multiple times with different modes: in that
+case a heap shot is taken if either of the conditions are met.
+MODE can be one of:
+.RS 2
+.IP \[bu] 2
+\f[I]NUM\f[]ms: perform a heap shot if at least \f[I]NUM\f[]
+milliseconds passed since the last one.
+.IP \[bu] 2
+\f[I]NUM\f[]gc: perform a heap shot every \f[I]NUM\f[] major
+garbage collections
+.IP \[bu] 2
+\f[I]ondemand\f[]: perform a heap shot when such a command is sent
+to the control port
+.RE
+.IP \[bu] 2
+\f[I]sample[=TYPE[/FREQ]]\f[]: collect statistical samples of the
+program behaviour.
+The default is to collect a 1000 times per second the instruction
+pointer.
+This is equivalent to the value \[lq]cycles/1000\[rq] for
+\f[I]TYPE\f[].
+On some systems, like with recent Linux kernels, it is possible to
+cause the sampling to happen for other events provided by the
+performance counters of the cpu.
+In this case, \f[I]TYPE\f[] can be one of:
+.RS 2
+.IP \[bu] 2
+\f[I]cycles\f[]: processor cycles
+.IP \[bu] 2
+\f[I]instr\f[]: executed instructions
+.IP \[bu] 2
+\f[I]cacherefs\f[]: cache references
+.IP \[bu] 2
+\f[I]cachemiss\f[]: cache misses
+.IP \[bu] 2
+\f[I]branches\f[]: executed branches
+.IP \[bu] 2
+\f[I]branchmiss\f[]: mispredicted branches
+.RE
+.IP \[bu] 2
+\f[I]time=TIMER\f[]: use the TIMER timestamp mode.
+TIMER can have the following values:
+.RS 2
+.IP \[bu] 2
+\f[I]fast\f[]: a usually faster but possibly more inaccurate timer
+.RE
+.IP \[bu] 2
+\f[I]maxframes=NUM\f[]: when a stack trace needs to be performed,
+collect \f[I]NUM\f[] frames at the most.
+The default is 8.
+.IP \[bu] 2
+\f[I]calldepth=NUM\f[]: ignore method enter/leave events when the
+call chain depth is bigger than NUM.
+.IP \[bu] 2
+\f[I]zip\f[]: automatically compress the output data in gzip
+format.
+.IP \[bu] 2
+\f[I]output=OUTSPEC\f[]: instead of writing the profiling data to
+the output.mlpd file, substitute \f[I]%p\f[] in \f[I]OUTSPEC\f[]
+with the current process id and \f[I]%t\f[] with the current date
+and time, then do according to \f[I]OUTSPEC\f[]:
+.RS 2
+.IP \[bu] 2
+if \f[I]OUTSPEC\f[] begins with a \f[I]|\f[] character, execute the
+rest as a program and feed the data to its standard input
+.IP \[bu] 2
+if \f[I]OUTSPEC\f[] begins with a \f[I]-\f[] character, use the
+rest of OUTSPEC as the filename, but force overwrite any existing
+file by that name
+.IP \[bu] 2
+otherwise write the data the the named file: note that is a file by
+that name already exists, a warning is issued and profiling is
+disabled.
+.RE
+.IP \[bu] 2
+\f[I]report\f[]: the profiling data is sent to mprof-report, which
+will print a summary report.
+This is equivalent to the option: \f[B]output=mprof-report\ -\f[].
+If the \f[I]output\f[] option is specified as well, the report will
+be written to the output file instead of the console.
+.IP \[bu] 2
+\f[I]port=PORT\f[]: specify the tcp/ip port to use for the
+listening command server.
+Currently not available for windows.
+This server is started for example when heapshot=ondemand is used:
+it will read commands line by line.
+The following commands are available:
+.RS 2
+.IP \[bu] 2
+\f[I]heapshot\f[]: perform a heapshot as soon as possible
+.RE
+.SS Analyzing the profile data
+.PP
+Currently there is a command line program (\f[I]mprof-report\f[])
+to analyze the data produced by the profiler.
+This is ran automatically when the \f[I]report\f[] profiler option
+is used.
+Simply run:
+.PP
+\f[B]mprof-report\ output.mlpd\f[]
+.PP
+to see a summary report of the data included in the file.
+.SS Trace information for events
+.PP
+Often it is important for some events, like allocations, lock
+contention and exception throws to know where they happened.
+Or we may want to see what sequence of calls leads to a particular
+method invocation.
+To see this info invoke mprof-report as follows:
+.PP
+\f[B]mprof-report\ --traces\ output.mlpd\f[]
+.PP
+The maximum number of methods in each stack trace can be specified
+with the \f[I]\[em]maxframes=NUM\f[] option:
+.PP
+\f[B]mprof-report\ --traces\ --maxframes=4\ output.mlpd\f[]
+.PP
+The stack trace info will be available if method enter/leave events
+have been recorded or if stack trace collection wasn't explicitly
+disabled with the \f[I]maxframes=0\f[] profiler option.
+Note that the profiler will collect up to 8 frames by default at
+specific events when the \f[I]nocalls\f[] option is used, so in
+that case, if more stack frames are required in mprof-report, a
+bigger value for maxframes when profiling must be used, too.
+.PP
+The \f[I]\[em]traces\f[] option also controls the reverse reference
+feature in the heapshot report: for each class it reports how many
+references to objects of that class come from other classes.
+.SS Sort order for methods and allocations
+.PP
+When a list of methods is printed the default sort order is based
+on the total time spent in the method.
+This time is wall clock time (that is, it includes the time spent,
+for example, in a sleep call, even if actual cpu time would be
+basically 0).
+Also, if the method has been ran on different threads, the time
+will be a sum of the time used in each thread.
+.PP
+To change the sort order, use the option:
+.PP
+\f[B]--method-sort=MODE\f[]
+.PP
+where \f[I]MODE\f[] can be:
+.IP \[bu] 2
+\f[I]self\f[]: amount of time spent in the method itself and not in
+its callees
+.IP \[bu] 2
+\f[I]calls\f[]: the number of method invocations
+.IP \[bu] 2
+\f[I]total\f[]: the total time spent in the method.
+.PP
+Object allocation lists are sorted by default depending on the
+total amount of bytes used by each type.
+.PP
+To change the sort order of object allocations, use the option:
+.PP
+\f[B]--alloc-sort=MODE\f[]
+.PP
+where \f[I]MODE\f[] can be:
+.IP \[bu] 2
+\f[I]count\f[]: the number of allocated objects of the given type
+.IP \[bu] 2
+\f[I]bytes\f[]: the total number of bytes used by objects of the
+given type
+.SS Selecting what data to report
+.PP
+The profiler by default collects data about many runtime subsystems
+and mprof-report prints a summary of all the subsystems that are
+found in the data file.
+It is possible to tell mprof-report to only show information about
+some of them with the following option:
+.PP
+\f[B]--reports=R1[,R2...]\f[]
+.PP
+where the report names R1, R2 etc.
+can be:
+.IP \[bu] 2
+\f[I]header\f[]: information about program startup and profiler
+version
+.IP \[bu] 2
+\f[I]jit\f[]: JIT compiler information
+.IP \[bu] 2
+\f[I]sample\f[]: statistical sampling information
+.IP \[bu] 2
+\f[I]gc\f[]: garbage collection information
+.IP \[bu] 2
+\f[I]alloc\f[]: object allocation information
+.IP \[bu] 2
+\f[I]call\f[]: method profiling information
+.IP \[bu] 2
+\f[I]metadata\f[]: metadata events like image loads
+.IP \[bu] 2
+\f[I]exception\f[]: exception throw and handling information
+.IP \[bu] 2
+\f[I]monitor\f[]: lock contention information
+.IP \[bu] 2
+\f[I]thread\f[]: thread information
+.IP \[bu] 2
+\f[I]heapshot\f[]: live heap usage at heap shots
+.PP
+It is possible to limit some of the data displayed to a timeframe
+of the program execution with the option:
+.PP
+\f[B]--time=FROM-TO\f[]
+.PP
+where \f[I]FROM\f[] and \f[I]TO\f[] are seconds since application
+startup (they can be floating point numbers).
+.PP
+Another interesting option is to consider only events happening on
+a particular thread with the following option:
+.PP
+\f[B]--thread=THREADID\f[]
+.PP
+where \f[I]THREADID\f[] is one of the numbers listed in the thread
+summary report (or a thread name when present).
+.PP
+By default long lists of methods or other information like object
+allocations are limited to the most important data.
+To increase the amount of information printed you can use the
+option:
+.PP
+\f[B]--verbose\f[]
+.SS Track individual objects
+.PP
+Instead of printing the usual reports from the profiler data, it is
+possible to track some interesting information about some specific
+object addresses.
+The objects are selected based on their address with the
+\f[I]\[em]track\f[] option as follows:
+.PP
+\f[B]--track=0xaddr1[,0xaddr2,...]\f[]
+.PP
+The reported info (if available in the data file), will be class
+name, size, creation time, stack trace of creation (with the
+\f[I]\[em]traces\f[] option), etc.
+If heapshot data is available it will be possible to also track
+what other objects reference one of the listed addresses.
+.PP
+The object addresses can be gathered either from the profiler
+report in some cases (like in the monitor lock report), from the
+live application or they can be selected with the
+\f[I]\[em]find=FINDSPEC\f[] option.
+FINDSPEC can be one of the following:
+.IP \[bu] 2
+\f[I]S:SIZE\f[]: where the object is selected if it's size is at
+least \f[I]SIZE\f[]
+.IP \[bu] 2
+\f[I]T:NAME\f[]: where the object is selected if \f[I]NAME\f[]
+partially matches its class name
+.PP
+This option can be specified multiple times with one of the
+different kinds of FINDSPEC.
+For example, the following:
+.PP
+\f[B]--find=S:10000\ --find=T:Byte[]\f[]
+.PP
+will find all the byte arrays that are at least 10000 bytes in
+size.
+.PP
+Note that with a moving garbage collector the object address can
+change, so you may need to track the changed address manually.
+It can also happen that multiple objects are allocated at the same
+address, so the output from this option can become large.
+.SS Saving a profiler report
+.PP
+By default mprof-report will print the summary data to the console.
+To print it to a file, instead, use the option:
+.PP
+\f[B]--out=FILENAME\f[]
+.SS Dealing with profiler slowness
+.PP
+If the profiler needs to collect lots of data, the execution of the
+program will slow down significantly, usually 10 to 20 times
+slower.
+There are several ways to reduce the impact of the profiler on the
+program execution.
+.SS Use the statistical sampling mode
+.PP
+Statistical sampling allows executing a program under the profiler
+with minimal performance overhead (usually less than 10%).
+This mode allows checking where the program is spending most of
+it's execution time without significantly perturbing its behaviour.
+.SS Collect less data
+.PP
+Collecting method enter/leave events can be very expensive,
+especially in programs that perform many millions of tiny calls.
+The profiler option \f[I]nocalls\f[] can be used to avoid
+collecting this data or it can be limited to only a few call levels
+with the \f[I]calldepth\f[] option.
+.PP
+Object allocation information is expensive as well, though much
+less than method enter/leave events.
+If it's not needed, it can be skipped with the \f[I]noalloc\f[]
+profiler option.
+Note that when method enter/leave events are discarded, by default
+stack traces are collected at each allocation and this can be
+expensive as well.
+The impact of stack trace information can be reduced by setting a
+low value with the \f[I]maxframes\f[] option or by eliminating them
+completely, by setting it to 0.
+.PP
+The other major source of data is the heapshot profiler option:
+especially if the managed heap is big, since every object needs to
+be inspected.
+The \f[I]MODE\f[] parameter of the \f[I]heapshot\f[] option can be
+used to reduce the frequency of the heap shots.
+.SS Reduce the timestamp overhead
+.PP
+On many operating systems or architectures what actually slows down
+profiling is the function provided by the system to get timestamp
+information.
+The \f[I]time=fast\f[] profiler option can be usually used to speed
+up this operation, but, depending on the system, time accounting
+may have some level of approximation (though statistically the data
+should be still fairly valuable).
+.SS Dealing with the size of the data files
+.PP
+When collecting a lot of information about a profiled program, huge
+data files can be generated.
+There are a few ways to minimize the amount of data, for example by
+not collecting some of the more space-consuming information or by
+compressing the information on the fly or by just generating a
+summary report.
+.SS Reducing the amount of data
+.PP
+Method enter/leave events can be excluded completely with the
+\f[I]nocalls\f[] option or they can be limited to just a few levels
+of calls with the \f[I]calldepth\f[] option.
+For example, the option:
+.PP
+\f[B]calldepth=10\f[]
+.PP
+will ignore the method events when there are more than 10 managed
+stack frames.
+This is very useful for programs that have deep recursion or for
+programs that perform many millions of tiny calls deep enough in
+the call stack.
+The optimal number for the calldepth option depends on the program
+and it needs to be balanced between providing enough profiling
+information and allowing fast execution speed.
+.PP
+Note that by default, if method events are not recorded at all, the
+profiler will collect stack trace information at events like
+allocations.
+To avoid gathering this data, use the \f[I]maxframes=0\f[] profiler
+option.
+.PP
+Allocation events can be eliminated with the \f[I]noalloc\f[]
+option.
+.PP
+Heap shot data can also be huge: by default it is collected at each
+major collection.
+To reduce the frequency, you can specify a heapshot mode: for
+example to collect every 5 collections (including major and minor):
+.PP
+\f[B]heapshot=5gc\f[]
+.PP
+or when at least 5 seconds passed since the last heap shot:
+.PP
+\f[B]heapshot=5000ms\f[]
+.SS Compressing the data
+.PP
+To reduce the amout of disk space used by the data, the data can be
+compressed either after it has been generated with the gzip
+command:
+.PP
+\f[B]gzip\ -9\ output.mlpd\f[]
+.PP
+or it can be compressed automatically by using the \f[I]zip\f[]
+profiler option.
+Note that in this case there could be a significant slowdown of the
+profiled program.
+.PP
+The mprof-report program will tranparently deal with either
+compressed or uncompressed data files.
+.SS Generating only a summary report
+.PP
+Often it's enough to look at the profiler summary report to
+diagnose an issue and in this case it's possible to avoid saving
+the profiler data file to disk.
+This can be accomplished with the \f[I]report\f[] profiler option,
+which will basically send the data to the mprof-report program for
+display.
+.PP
+To have more control of what summary information is reported (or to
+use a completely different program to decode the profiler data),
+the \f[I]output\f[] profiler option can be used, with \f[B]|\f[] as
+the first character: the rest of the output name will be executed
+as a program with the data fed in on the standard input.
+.PP
+For example, to print only the Monitor summary with stack trace
+information, you could use it like this:
+.PP
+\f[B]output=|mprof-report\ --reports=monitor\ --traces\ -\f[]
+.SH WEB SITE
+http://www.mono-project.com/Profiler
+.SH SEE ALSO
+.PP
+mono(1)
+.SH AUTHORS
+Paolo Molaro.
+
diff --git a/man/xbuild.1 b/man/xbuild.1
index c5ec5ca..dd60211 100644
--- a/man/xbuild.1
+++ b/man/xbuild.1
@@ -73,9 +73,10 @@ to $prefix/lib/mono/xbuild . When used in Import, like:
 
 xbuild tries various values for the msbuild property $(MSBuildExtensionsPath), in order:
 
-  1. Paths specified in the environment variable $MSBuildExtensionsPath.
-  2. $XDG_CONFIG_HOME/xbuild/tasks (or Environment.SpecialFolder.ApplicationData)
-  3. $prefix/lib/mono/xbuild (default location)
+  1. /Library/Frameworks/Mono.framework/External/xbuild on Mac OSX.
+  2. Paths specified in the environment variable $MSBuildExtensionsPath.
+  3. $XDG_CONFIG_HOME/xbuild/tasks (or Environment.SpecialFolder.ApplicationData)
+  4. $prefix/lib/mono/xbuild (default location)
 
 Anywhere else in the project files, $(MSBuildExtensionsPath) will always resolve to the default
 location. This is a xbuild-only feature.
@@ -111,6 +112,10 @@ For example, you could set this variable from your shell:
 You can disable the built-in color scheme by setting this variable to
 "disable".
 
+.SH NOTES
+On Mac OSX, for locating pkg-config (.pc) files, xbuild additionally
+looks in "/Library/Frameworks/Mono.framework/External/pkgconfig" .
+
 .SH SEE ALSO
 .BR mono(1), mcs(1)
 .SH COPYRIGHT
diff --git a/mcs/ChangeLog b/mcs/ChangeLog
index 3ce2312..0ffc8b3 100644
--- a/mcs/ChangeLog
+++ b/mcs/ChangeLog
@@ -1,3 +1,54 @@
+2011-01-05  Marek Safar  <marek.safar at gmail.com>
+
+	Build mcs before docs
+
+2010-12-29  Marek Safar  <marek.safar at gmail.com>
+
+	Build culevel in basic as well
+
+2010-12-29  Marek Safar  <marek.safar at gmail.com>
+
+	[661642] Fixed v4 resgen compilation
+
+2010-12-16  Marek Safar  <marek.safar at gmail.com>
+
+	Fix resgen build order
+
+2010-12-16  Marek Safar  <marek.safar at gmail.com>
+
+	Switch to single mcs compiler for all managed code build
+
+2010-12-03  Zoltan Varga  <vargaz at gmail.com>
+
+	Remove unused nunit.key file.
+
+2010-11-03  Zoltan Varga  <vargaz at gmail.com>
+
+	Remove obsolete mcs/configure script. Fixes #650806.
+
+2010-10-20  Marek Safar  <marek.safar at gmail.com>
+
+	Clean up test files
+
+2010-10-20  Marek Safar  <marek.safar at gmail.com>
+
+	[601801] Fixes for parsing nant documentation
+
+	Gleb Golubitsky <rush.william at gmail.com>
+
+2010-09-15  Marek Safar  <marek.safar at gmail.com>
+
+	There are actually some 3.5 only dlls, thanks to ankit for poiting
+	out.
+
+2010-09-15  Marek Safar  <marek.safar at gmail.com>
+
+	Removed class from net_3_5 subdirs
+
+2010-09-08  Jb Evain  <jbevain at gmail.com>
+
+	Orchestrate the monodroid build bootstrap
+
 2010-08-24  Zoltan Varga  <vargaz at gmail.com>
 
 	Update the message in the mcs dir-check.
diff --git a/mcs/Makefile b/mcs/Makefile
index 094b8ea..baefcf2 100644
--- a/mcs/Makefile
+++ b/mcs/Makefile
@@ -3,16 +3,13 @@ thisdir := .
 SUBDIRS := build jay mcs class nunit24 ilasm tools tests errors docs
 
 basic_SUBDIRS := build jay mcs class tools
-net_2_0_bootstrap_SUBDIRS := build tools
-net_2_0_SUBDIRS := build mcs class nunit24 ilasm tools tests errors 
-moonlight_bootstrap_SUBDIRS := build mcs class
-moonlight_raw_SUBDIRS := build mcs class tools
-moonlight_SUBDIRS := tools tests errors
-monotouch_SUBDIRS := build mcs class
-monotouch_bootstrap_SUBDIRS := build mcs class
+net_2_0_SUBDIRS := build class nunit24 ilasm tools tests errors mcs
+moonlight_raw_SUBDIRS := build class tools mcs
+moonlight_SUBDIRS := tools
+monodroid_SUBDIRS := build class mcs
+monotouch_SUBDIRS := build class mcs
 net_3_5_SUBDIRS := build class tools/xbuild
-net_4_0_bootstrap_SUBDIRS := build mcs class tools 
-net_4_0_SUBDIRS := build mcs class nunit24 ilasm tools tests errors docs
+net_4_0_SUBDIRS := build class nunit24 ilasm tools tests errors mcs docs
 
 # List of test subdirs that should pass 100%
 centum_tests := \
@@ -103,16 +100,13 @@ profiles-do--run-test:
 
 # Orchestrate the bootstrap here.
 _boot_ = all clean install
-$(_boot_:%=profile-do--net_4_0--%):           profile-do--net_4_0--%:           profile-do--net_4_0_bootstrap--%
-$(_boot_:%=profile-do--net_4_0_bootstrap--%): profile-do--net_4_0_bootstrap--%: profile-do--net_2_0--%
+$(_boot_:%=profile-do--net_4_0--%):           profile-do--net_4_0--%:           profile-do--basic--%
 $(_boot_:%=profile-do--net_3_5--%):           profile-do--net_3_5--%:           profile-do--net_2_0--%
-$(_boot_:%=profile-do--moonlight--%):           profile-do--moonlight--%:           profile-do--moonlight_raw--%
-$(_boot_:%=profile-do--monotouch--%):         profile-do--monotouch--%:         profile-do--monotouch_bootstrap--%
-$(_boot_:%=profile-do--monotouch_bootstrap--%): profile-do--monotouch_bootstrap--%: profile-do--net_2_0--%
-$(_boot_:%=profile-do--moonlight_raw--%):       profile-do--moonlight_raw--%:       profile-do--moonlight_bootstrap--%
-$(_boot_:%=profile-do--moonlight_bootstrap--%): profile-do--moonlight_bootstrap--%: profile-do--basic--%
-$(_boot_:%=profile-do--net_2_0--%):           profile-do--net_2_0--%:           profile-do--net_2_0_bootstrap--%
-$(_boot_:%=profile-do--net_2_0_bootstrap--%): profile-do--net_2_0_bootstrap--%: profile-do--basic--%
+$(_boot_:%=profile-do--moonlight--%):         profile-do--moonlight--%:         profile-do--moonlight_raw--%
+$(_boot_:%=profile-do--monodroid--%):         profile-do--monodroid--%:         profile-do--basic--%
+$(_boot_:%=profile-do--monotouch--%):         profile-do--monotouch--%:         profile-do--basic--%
+$(_boot_:%=profile-do--moonlight_raw--%):     profile-do--moonlight_raw--%:     profile-do--basic--%
+$(_boot_:%=profile-do--net_2_0--%):           profile-do--net_2_0--%:           profile-do--basic--%
 
 testcorlib:
 	@cd class/corlib && $(MAKE) test run-test
@@ -138,8 +132,7 @@ DISTFILES = \
 	MonoIcon.png		\
 	README			\
 	ScalableMonoIcon.svg	\
-	winexe.in		\
-	nunit.key
+	winexe.in
 
 dist-local: dist-default
 
diff --git a/mcs/build/ChangeLog b/mcs/build/ChangeLog
index c8a3848..80ddab5 100644
--- a/mcs/build/ChangeLog
+++ b/mcs/build/ChangeLog
@@ -1,3 +1,52 @@
+2010-12-29  Marek Safar  <marek.safar at gmail.com>
+
+	[661642] Fixed v4 resgen compilation
+
+2010-12-29  Marek Safar  <marek.safar at gmail.com>
+
+	Remove no longer used bootstrap profiles
+
+2010-12-17  Marek Safar  <marek.safar at gmail.com>
+
+	Update mcs name for monolite build
+
+2010-12-16  Marek Safar  <marek.safar at gmail.com>
+
+	Adjust MONO_PATH, it's still needed for all profiles
+
+2010-12-16  Marek Safar  <marek.safar at gmail.com>
+
+	Fix resgen build order
+
+2010-12-16  Marek Safar  <marek.safar at gmail.com>
+
+	Switch to single mcs compiler for all managed code build
+
+2010-10-15  Marek Safar  <marek.safar at gmail.com>
+
+	Don't be too verbose when building response files
+
+2010-09-09  Zoltan Varga  <vargaz at gmail.com>
+
+	Clean the aot log file too.
+
+2010-09-08  Jb Evain  <jbevain at gmail.com>
+
+	Fix the monodroid profile's defines
+
+2010-09-08  Jb Evain  <jbevain at gmail.com>
+
+	Define MOBILE for the monotouch build as a shared symbol between
+	MonoTouch and MonoDroid
+
+2010-09-08  Jb Evain  <jbevain at gmail.com>
+
+	Add the monodroid profile
+
+2010-09-01  Jb Evain  <jbevain at gmail.com>
+
+	Fix the monotouch build
+
 2010-08-31  Andrew Jorgensen  <ajorgensen at novell.com>
 
 	Revert "Make the 'LABELS' make variable the same as the
diff --git a/mcs/build/Makefile b/mcs/build/Makefile
index 69721f7..f90c8b8 100644
--- a/mcs/build/Makefile
+++ b/mcs/build/Makefile
@@ -17,13 +17,10 @@ common/Consts.cs: common/Consts.cs.in $(wildcard config.make)
 PLATFORMS = darwin linux win32
 PROFILES = \
 	basic \
-	net_2_0_bootstrap \
 	net_2_0 \
-	moonlight_bootstrap \
 	moonlight_raw \
 	moonlight \
 	net_3_5	\
-	net_4_0_bootstrap \
 	net_4_0	
 
 COMMON_SRCS = \
diff --git a/mcs/build/common/Consts.cs b/mcs/build/common/Consts.cs
index 4912dd5..02c93bb 100644
--- a/mcs/build/common/Consts.cs
+++ b/mcs/build/common/Consts.cs
@@ -34,12 +34,12 @@ static class Consts
 	// Use these assembly version constants to make code more maintainable.
 	//
 
-	public const string MonoVersion = "2.8.1.0";
+	public const string MonoVersion = "2.10.0.0";
 	public const string MonoCompany = "MONO development team";
 	public const string MonoProduct = "MONO Common language infrastructure";
 	public const string MonoCopyright = "(c) various MONO Authors";
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
 	public const string FxVersion = "4.0.0.0";
 	public const string FxFileVersion = "4.0.30319.1";
 	
@@ -62,7 +62,7 @@ static class Consts
 	public const string VsVersion = "9.0.0.0"; // unused, but needed for compilation
 	public const string FxFileVersion = "4.0.50524.0";
 	public const string VsFileVersion = "9.0.50727.42"; // unused, but needed for compilation
-#elif NET_2_0 || BOOTSTRAP_NET_2_0
+#elif NET_2_0
 	// Versions of .NET Framework 2.0 RTM
 	public const string FxVersion = "2.0.0.0";
 	public const string VsVersion = "8.0.0.0";
@@ -82,9 +82,7 @@ static class Consts
 
 	public const string AssemblyI18N = "I18N, Version=" + FxVersion + ", Culture=neutral, PublicKeyToken=0738eb9f132ed756";
 	public const string AssemblyMicrosoft_VisualStudio = "Microsoft.VisualStudio, Version=" + FxVersion + ", Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a";
-#if NET_2_0
 	public const string AssemblyMicrosoft_VisualStudio_Web = "Microsoft.VisualStudio.Web, Version=" + VsVersion + ", Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a";
-#endif
 	public const string AssemblyMicrosoft_VSDesigner = "Microsoft.VSDesigner, Version=" + VsVersion + ", Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a";
 	public const string AssemblyMono_Http = "Mono.Http, Version=" + FxVersion + ", Culture=neutral, PublicKeyToken=0738eb9f132ed756";
 	public const string AssemblyMono_Posix = "Mono.Posix, Version=" + FxVersion + ", Culture=neutral, PublicKeyToken=0738eb9f132ed756";
@@ -102,7 +100,7 @@ static class Consts
 	public const string AssemblySystem_ServiceProcess = "System.ServiceProcess, Version=" + FxVersion + ", Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a";
 	public const string AssemblySystem_Web = "System.Web, Version=" + FxVersion + ", Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a";
 	public const string AssemblySystem_Windows_Forms = "System.Windows.Forms, Version=" + FxVersion + ", Culture=neutral, PublicKeyToken=b77a5c561934e089";
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
 	public const string AssemblySystem_2_0 = "System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089";
 	public const string AssemblySystemCore_3_5 = "System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089";
 	public const string AssemblySystem_Core = "System.Core, Version=" + FxVersion + ", Culture=neutral, PublicKeyToken=b77a5c561934e089";
diff --git a/mcs/build/common/Consts.cs.in b/mcs/build/common/Consts.cs.in
index d23b164..5adf52f 100644
--- a/mcs/build/common/Consts.cs.in
+++ b/mcs/build/common/Consts.cs.in
@@ -39,7 +39,7 @@ static class Consts
 	public const string MonoProduct = "MONO Common language infrastructure";
 	public const string MonoCopyright = "(c) various MONO Authors";
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
 	public const string FxVersion = "4.0.0.0";
 	public const string FxFileVersion = "4.0.30319.1";
 	
@@ -62,7 +62,7 @@ static class Consts
 	public const string VsVersion = "9.0.0.0"; // unused, but needed for compilation
 	public const string FxFileVersion = "4.0.50524.0";
 	public const string VsFileVersion = "9.0.50727.42"; // unused, but needed for compilation
-#elif NET_2_0 || BOOTSTRAP_NET_2_0
+#elif NET_2_0
 	// Versions of .NET Framework 2.0 RTM
 	public const string FxVersion = "2.0.0.0";
 	public const string VsVersion = "8.0.0.0";
@@ -82,9 +82,7 @@ static class Consts
 
 	public const string AssemblyI18N = "I18N, Version=" + FxVersion + ", Culture=neutral, PublicKeyToken=0738eb9f132ed756";
 	public const string AssemblyMicrosoft_VisualStudio = "Microsoft.VisualStudio, Version=" + FxVersion + ", Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a";
-#if NET_2_0
 	public const string AssemblyMicrosoft_VisualStudio_Web = "Microsoft.VisualStudio.Web, Version=" + VsVersion + ", Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a";
-#endif
 	public const string AssemblyMicrosoft_VSDesigner = "Microsoft.VSDesigner, Version=" + VsVersion + ", Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a";
 	public const string AssemblyMono_Http = "Mono.Http, Version=" + FxVersion + ", Culture=neutral, PublicKeyToken=0738eb9f132ed756";
 	public const string AssemblyMono_Posix = "Mono.Posix, Version=" + FxVersion + ", Culture=neutral, PublicKeyToken=0738eb9f132ed756";
@@ -102,7 +100,7 @@ static class Consts
 	public const string AssemblySystem_ServiceProcess = "System.ServiceProcess, Version=" + FxVersion + ", Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a";
 	public const string AssemblySystem_Web = "System.Web, Version=" + FxVersion + ", Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a";
 	public const string AssemblySystem_Windows_Forms = "System.Windows.Forms, Version=" + FxVersion + ", Culture=neutral, PublicKeyToken=b77a5c561934e089";
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
 	public const string AssemblySystem_2_0 = "System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089";
 	public const string AssemblySystemCore_3_5 = "System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089";
 	public const string AssemblySystem_Core = "System.Core, Version=" + FxVersion + ", Culture=neutral, PublicKeyToken=b77a5c561934e089";
diff --git a/mcs/build/common/MonoTODOAttribute.cs b/mcs/build/common/MonoTODOAttribute.cs
index ca23aa7..33bf695 100644
--- a/mcs/build/common/MonoTODOAttribute.cs
+++ b/mcs/build/common/MonoTODOAttribute.cs
@@ -33,7 +33,7 @@
 //
 
 namespace System {
-	
+#pragma warning disable 436
 	[AttributeUsage (AttributeTargets.All, AllowMultiple=true)]
 	internal class MonoTODOAttribute : Attribute {
 
@@ -97,4 +97,5 @@ namespace System {
 		{
 		}
 	}
+#pragma warning restore 436	
 }
diff --git a/mcs/build/library.make b/mcs/build/library.make
index f5d7ffd..614ac01 100644
--- a/mcs/build/library.make
+++ b/mcs/build/library.make
@@ -233,6 +233,8 @@ $(the_lib): $(build_lib)
 	$(Q) test ! -f $(build_lib:.dll=.pdb) || mv $(build_lib:.dll=.pdb) $(the_lib:.dll=.pdb)
 endif
 
+library_CLEAN_FILES += $(PROFILE)_aot.log
+
 ifdef PLATFORM_AOT_SUFFIX
 Q_AOT=$(if $(V),, at echo "AOT [$(PROFILE)] $(notdir $(@))";)
 $(the_lib)$(PLATFORM_AOT_SUFFIX): $(the_lib)
@@ -250,7 +252,7 @@ endif
 makefrag = $(depsdir)/$(PROFILE)_$(LIBRARY).makefrag
 library_CLEAN_FILES += $(makefrag)
 $(makefrag): $(sourcefile)
-	@echo Creating $@ ...
+#	@echo Creating $@ ...
 	@sed 's,^,$(build_lib): ,' $< >$@
 	@if test ! -f $(sourcefile).makefrag; then :; else \
 	   cat $(sourcefile).makefrag >> $@ ; \
@@ -268,7 +270,7 @@ $(response): $(sourcefile)
 	@echo Converting $(sourcefile) to $@ ...
 	@cat $(sourcefile) | $(PLATFORM_CHANGE_SEPARATOR_CMD) >$@
 endif
-	
+
 endif
 
 -include $(makefrag)
diff --git a/mcs/build/profiles/basic.make b/mcs/build/profiles/basic.make
index df858ae..6c1e9af 100644
--- a/mcs/build/profiles/basic.make
+++ b/mcs/build/profiles/basic.make
@@ -8,7 +8,7 @@ use_monolite := $(wildcard $(monolite_flag))
 
 ifdef use_monolite
 PROFILE_RUNTIME = $(with_mono_path_monolite) $(RUNTIME)
-BOOTSTRAP_MCS = $(PROFILE_RUNTIME) $(RUNTIME_FLAGS) $(topdir)/class/lib/monolite/gmcs.exe
+BOOTSTRAP_MCS = $(PROFILE_RUNTIME) $(RUNTIME_FLAGS) $(topdir)/class/lib/monolite/mcs.exe
 else
 PROFILE_RUNTIME = $(EXTERNAL_RUNTIME)
 BOOTSTRAP_MCS = $(EXTERNAL_MCS)
@@ -60,7 +60,7 @@ do-profile-check: $(depsdir)/.stamp
 	$(MAKE) $(MAKE_Q) $(PROFILE_OUT) || ok=false; \
 	rm -f $(PROFILE_EXE) $(PROFILE_OUT); \
 	if $$ok; then :; else \
-	    if test -f $(topdir)/class/lib/monolite/gmcs.exe; then \
+	    if test -f $(topdir)/class/lib/monolite/mcs.exe; then \
 		$(MAKE) -s do-profile-check-monolite ; \
 	    else \
 		echo "*** The compiler '$(BOOTSTRAP_MCS)' doesn't appear to be usable." 1>&2; \
diff --git a/mcs/build/profiles/moonlight_bootstrap.make b/mcs/build/profiles/moonlight_bootstrap.make
deleted file mode 100644
index 0f285db..0000000
--- a/mcs/build/profiles/moonlight_bootstrap.make
+++ /dev/null
@@ -1,21 +0,0 @@
-#! -*- makefile -*-
-
-INTERNAL_SMCS = $(RUNTIME) $(RUNTIME_FLAGS) --security=temporary-smcs-hack $(topdir)/class/lib/$(PROFILE)/smcs.exe
-INTERNAL_GMCS = $(RUNTIME) $(RUNTIME_FLAGS) $(topdir)/class/lib/basic/gmcs.exe
-
-BOOTSTRAP_PROFILE = basic
-BOOTSTRAP_MCS = MONO_PATH="$(topdir)/class/lib/$(BOOTSTRAP_PROFILE)$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" $(INTERNAL_GMCS)
-MCS = MONO_PATH="$(topdir)/class/lib/$(PROFILE)$(PLATFORM_PATH_SEPARATOR)$(topdir)/class/lib/$(BOOTSTRAP_PROFILE)$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" $(INTERNAL_SMCS)
-
-# We can enable this if System.dll depends new features of the mscorlib.dll from this profile
-#PROFILE_MCS_HAS_BOOTSTRAP_FALLBACK = yes
-
-profile-check:
-	@:
-
-PROFILE_MCS_FLAGS = -d:NET_1_1 -d:NET_2_0 -d:NET_2_1 -d:MOONLIGHT
-FRAMEWORK_VERSION = 2.1
-NO_TEST = yes
-
-# the tuner takes care of the install
-NO_INSTALL = yes
diff --git a/mcs/build/profiles/moonlight_raw.make b/mcs/build/profiles/moonlight_raw.make
index f3aba43..1c53054 100644
--- a/mcs/build/profiles/moonlight_raw.make
+++ b/mcs/build/profiles/moonlight_raw.make
@@ -1,17 +1,15 @@
 #! -*- makefile -*-
 
-my_runtime = $(RUNTIME) $(RUNTIME_FLAGS) --security=temporary-smcs-hack
-INTERNAL_SMCS = $(my_runtime) $(topdir)/class/lib/$(PROFILE)/smcs.exe
+BOOTSTRAP_PROFILE = basic
 
-BOOTSTRAP_PROFILE = moonlight_bootstrap
-
-BOOTSTRAP_MCS = MONO_PATH="$(topdir)/class/lib/$(BOOTSTRAP_PROFILE)$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" $(my_runtime) $(topdir)/class/lib/$(BOOTSTRAP_PROFILE)/smcs.exe
-MCS = MONO_PATH="$(topdir)/class/lib/$(PROFILE)$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" $(INTERNAL_SMCS)
+BOOTSTRAP_MCS = MONO_PATH="$(topdir)/class/lib/$(BOOTSTRAP_PROFILE)$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" $(INTERNAL_GMCS)
+MCS = MONO_PATH="$(topdir)/class/lib/$(BOOTSTRAP_PROFILE)$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" $(INTERNAL_GMCS)
 
 profile-check:
 	@:
 
-PROFILE_MCS_FLAGS = -d:NET_1_1 -d:NET_2_0 -d:NET_2_1 -d:MOONLIGHT
+DEFAULT_REFERENCES = -r:mscorlib.dll
+PROFILE_MCS_FLAGS = -d:NET_1_1 -d:NET_2_0 -d:NET_2_1 -d:MOONLIGHT -nowarn:1699 -nostdlib -lib:$(topdir)/class/lib/$(PROFILE) $(DEFAULT_REFERENCES)
 FRAMEWORK_VERSION = 2.1
 NO_TEST = yes
 
diff --git a/mcs/build/profiles/net_2_0.make b/mcs/build/profiles/net_2_0.make
index 03ce4e9..0f79ea0 100644
--- a/mcs/build/profiles/net_2_0.make
+++ b/mcs/build/profiles/net_2_0.make
@@ -1,14 +1,15 @@
 # -*- makefile -*-
 
 BOOTSTRAP_PROFILE = basic
-BUILD_TOOLS_PROFILE = net_2_0_bootstrap
 BOOTSTRAP_MCS = MONO_PATH="$(topdir)/class/lib/$(BOOTSTRAP_PROFILE)$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" $(INTERNAL_GMCS)
-MCS = MONO_PATH="$(topdir)/class/lib/$(PROFILE)$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" $(INTERNAL_GMCS)
+MCS = MONO_PATH="$(topdir)/class/lib/$(BOOTSTRAP_PROFILE)$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" $(INTERNAL_GMCS)
 
 # nuttzing!
 
 profile-check:
 	@:
 
-PROFILE_MCS_FLAGS = -d:NET_1_1 -d:NET_2_0 -nowarn:1699
+DEFAULT_REFERENCES = -r:mscorlib.dll
+PROFILE_MCS_FLAGS = -d:NET_1_1 -d:NET_2_0 -nowarn:1699 -nostdlib -lib:$(topdir)/class/lib/$(PROFILE) $(DEFAULT_REFERENCES)
+
 FRAMEWORK_VERSION = 2.0
diff --git a/mcs/build/profiles/net_2_0_bootstrap.make b/mcs/build/profiles/net_2_0_bootstrap.make
deleted file mode 100644
index f642d47..0000000
--- a/mcs/build/profiles/net_2_0_bootstrap.make
+++ /dev/null
@@ -1,18 +0,0 @@
-# -*- makefile -*-
-
-#
-# Note that we're using the .NET 1.1 MCS but MONO_PATH points to the net_2_0_bootstrap directory.
-# We do it this way to get assembly version references right.
-#
-BOOTSTRAP_PROFILE = basic
-BOOTSTRAP_MCS = MONO_PATH="$(topdir)/class/lib/$(BOOTSTRAP_PROFILE)$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" $(RUNTIME) $(RUNTIME_FLAGS) $(topdir)/class/lib/$(BOOTSTRAP_PROFILE)/gmcs.exe
-MCS = $(BOOTSTRAP_MCS)
-
-profile-check: 
-
-PROFILE_MCS_FLAGS = -d:NET_1_1 -d:NET_2_0
-FRAMEWORK_VERSION = 2.0
-NO_SIGN_ASSEMBLY = yes
-NO_TEST = yes
-NO_INSTALL = yes
-
diff --git a/mcs/build/profiles/net_3_5.make b/mcs/build/profiles/net_3_5.make
index 07248ff..6bd8a93 100644
--- a/mcs/build/profiles/net_3_5.make
+++ b/mcs/build/profiles/net_3_5.make
@@ -1,14 +1,17 @@
 # -*- makefile -*-
 
-INTERNAL_GMCS = $(RUNTIME) $(RUNTIME_FLAGS) $(topdir)/class/lib/net_2_0/gmcs.exe
+BOOTSTRAP_PROFILE = basic
+
+MCS = MONO_PATH="$(topdir)/class/lib/$(BOOTSTRAP_PROFILE)$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" $(INTERNAL_GMCS)
 
-MCS = MONO_PATH="$(topdir)/class/lib/$(PROFILE)$(PLATFORM_PATH_SEPARATOR)$(topdir)/class/lib/net_2_0$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" $(INTERNAL_GMCS)
 # nuttzing!
 
 profile-check:
 	@:
 
-PROFILE_MCS_FLAGS = -d:NET_1_1 -d:NET_2_0 -d:NET_3_5
+DEFAULT_REFERENCES = -r:mscorlib.dll
+PROFILE_MCS_FLAGS = -d:NET_1_1 -d:NET_2_0 -d:NET_3_5 -nowarn:1699 -nostdlib -lib:$(topdir)/class/lib/$(PROFILE) -lib:$(topdir)/class/lib/net_2_0 $(DEFAULT_REFERENCES)
+
 FRAMEWORK_VERSION = 3.5
 
 TEST_HARNESS = $(topdir)/class/lib/net_2_0/nunit-console.exe
diff --git a/mcs/build/profiles/net_4_0.make b/mcs/build/profiles/net_4_0.make
index dd9dab4..4574b47 100644
--- a/mcs/build/profiles/net_4_0.make
+++ b/mcs/build/profiles/net_4_0.make
@@ -1,17 +1,16 @@
 # -*- makefile -*-
 
-INTERNAL_DMCS = $(RUNTIME) $(RUNTIME_FLAGS) $(topdir)/class/lib/$(PROFILE)/dmcs.exe
+BOOTSTRAP_PROFILE = basic
 
-BOOTSTRAP_PROFILE = net_4_0_bootstrap
-
-BOOTSTAP_DMCS = $(RUNTIME) $(RUNTIME_FLAGS) $(topdir)/class/lib/$(BOOTSTRAP_PROFILE)/dmcs.exe
-BOOTSTRAP_MCS = MONO_PATH="$(topdir)/class/lib/$(BOOTSTRAP_PROFILE)$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" $(BOOTSTAP_DMCS)
-MCS = MONO_PATH="$(topdir)/class/lib/$(PROFILE)$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" $(INTERNAL_DMCS)
+BOOTSTRAP_MCS = MONO_PATH="$(topdir)/class/lib/$(BOOTSTRAP_PROFILE)$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" $(INTERNAL_GMCS)
+MCS = MONO_PATH="$(topdir)/class/lib/$(BOOTSTRAP_PROFILE)$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" $(INTERNAL_GMCS)
 
 # nuttzing!
 
 profile-check:
 	@:
 
-PROFILE_MCS_FLAGS = -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -nowarn:1699
+DEFAULT_REFERENCES = -r:mscorlib.dll
+PROFILE_MCS_FLAGS = -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -nowarn:1699 -nostdlib -lib:$(topdir)/class/lib/$(PROFILE) $(DEFAULT_REFERENCES)
+
 FRAMEWORK_VERSION = 4.0
diff --git a/mcs/build/profiles/net_4_0_bootstrap.make b/mcs/build/profiles/net_4_0_bootstrap.make
deleted file mode 100644
index d740366..0000000
--- a/mcs/build/profiles/net_4_0_bootstrap.make
+++ /dev/null
@@ -1,17 +0,0 @@
-# -*- makefile -*-
-
-BOOTSTRAP_PROFILE = net_2_0
-BOOTSTRAP_MCS = MONO_PATH="$(topdir)/class/lib/$(BOOTSTRAP_PROFILE)$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" $(RUNTIME) $(RUNTIME_FLAGS) $(topdir)/class/lib/$(BOOTSTRAP_PROFILE)/gmcs.exe
-MCS = MONO_PATH="$(topdir)/class/lib/$(PROFILE)$(PLATFORM_PATH_SEPARATOR)$(topdir)/class/lib/$(BOOTSTRAP_PROFILE)$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" $(RUNTIME) $(RUNTIME_FLAGS) $(topdir)/class/lib/$(PROFILE)/dmcs.exe
-
-# we have BOOTSTRAP_PROFILE listed in the MONO_PATH of MCS
-PROFILE_MCS_HAS_BOOTSTRAP_FALLBACK = yes
-
-profile-check: 
-
-PROFILE_MCS_FLAGS = -d:NET_1_1 -d:NET_2_0 -d:BOOTSTRAP_NET_4_0
-FRAMEWORK_VERSION = 4.0
-NO_SIGN_ASSEMBLY = yes
-NO_TEST = yes
-NO_INSTALL = yes
-
diff --git a/mcs/build/rules.make b/mcs/build/rules.make
index b9a1d3e..5d2d6ee 100644
--- a/mcs/build/rules.make
+++ b/mcs/build/rules.make
@@ -36,14 +36,13 @@ INSTALL_DATA = $(INSTALL) -c -m 644
 INSTALL_BIN = $(INSTALL) -c -m 755
 INSTALL_LIB = $(INSTALL_BIN)
 MKINSTALLDIRS = $(SHELL) $(topdir)/mkinstalldirs
-INTERNAL_MCS = $(RUNTIME) $(RUNTIME_FLAGS) $(topdir)/class/lib/$(PROFILE)/mcs.exe
 INTERNAL_MBAS = $(RUNTIME) $(RUNTIME_FLAGS) $(topdir)/mbas/mbas.exe
-INTERNAL_GMCS = $(RUNTIME) $(RUNTIME_FLAGS) $(topdir)/class/lib/$(PROFILE)/gmcs.exe
+INTERNAL_GMCS = $(RUNTIME) $(RUNTIME_FLAGS) $(topdir)/class/lib/basic/mcs.exe
 INTERNAL_ILASM = $(RUNTIME) $(RUNTIME_FLAGS) $(topdir)/class/lib/$(PROFILE)/ilasm.exe
 corlib = mscorlib.dll
 
 ifndef BUILD_TOOLS_PROFILE
-BUILD_TOOLS_PROFILE = $(BOOTSTRAP_PROFILE)
+BUILD_TOOLS_PROFILE = basic
 endif
 
 INTERNAL_RESGEN = $(RUNTIME) $(RUNTIME_FLAGS) $(topdir)/class/lib/$(BUILD_TOOLS_PROFILE)/resgen.exe
@@ -197,11 +196,6 @@ dist-default:
 	$(MKINSTALLDIRS) $(@D)
 	touch $@
 
-# Useful
-
-withmcs:
-	$(MAKE) MCS='$(INTERNAL_MCS)' BOOTSTRAP_MCS='$(INTERNAL_MCS)' all
-
 ## Documentation stuff
 
 Q_MDOC =$(if $(V),, at echo "MDOC    [$(PROFILE)] $(notdir $(@))";)
diff --git a/mcs/build/tests.make b/mcs/build/tests.make
index 7b10f85..9476cc5 100644
--- a/mcs/build/tests.make
+++ b/mcs/build/tests.make
@@ -109,11 +109,11 @@ $(test_lib): $(the_assembly) $(test_response) $(test_nunit_dep)
 	$(TEST_COMPILE) -target:library -out:$@ $(test_flags) $(LOCAL_TEST_COMPILER_ONDOTNET_FLAGS) @$(test_response)
 
 $(test_response): $(test_sourcefile)
-	@echo Creating $@ ...
+#	@echo Creating $@ ...
 	@sed -e '/^$$/d' -e 's,^,Test/,' $(test_sourcefile) | $(PLATFORM_CHANGE_SEPARATOR_CMD) >$@
 
 $(test_makefrag): $(test_response)
-	@echo Creating $@ ...
+#	@echo Creating $@ ...
 	@sed 's,^,$(test_lib): ,' $< >$@
 
 -include $(test_makefrag)
diff --git a/mcs/class/ChangeLog b/mcs/class/ChangeLog
index 9834afa..afe9ab0 100644
--- a/mcs/class/ChangeLog
+++ b/mcs/class/ChangeLog
@@ -1,3 +1,157 @@
+2011-01-17  Marek Safar  <marek.safar at gmail.com>
+
+	Update IKVM.Reflection
+
+2011-01-11  Jb Evain  <jbevain at gmail.com>
+
+	Update cecil from upstream
+
+2011-01-11  Zoltan Varga  <vargaz at gmail.com>
+
+	Dump the AOT log upon a failure.
+
+2011-01-10  Marek Safar  <marek.safar at gmail.com>
+
+	Fix IKVM float encoding on big-endian
+
+2010-12-21  Jb Evain  <jbevain at gmail.com>
+
+	Fix cecil update script
+
+2010-12-21  Jb Evain  <jbevain at gmail.com>
+
+	update cecil from upstream
+
+2010-12-20  Marek Safar  <marek.safar at gmail.com>
+
+	Import ikvm fixes
+
+2010-12-18  Marek Safar  <marek.safar at gmail.com>
+
+	Add aot-compiler to dist list
+
+2010-12-16  Marek Safar  <marek.safar at gmail.com>
+
+	Don't build aot symbols on make dist
+
+2010-12-16  Marek Safar  <marek.safar at gmail.com>
+
+	Monolite mcs compiler
+
+2010-12-16  Marek Safar  <marek.safar at gmail.com>
+
+	Add dist only Makefile
+
+2010-12-16  Marek Safar  <marek.safar at gmail.com>
+
+	Switch to single mcs compiler for all managed code build
+
+2010-12-16  Marek Safar  <marek.safar at gmail.com>
+
+	dist IKVM.Reflection
+
+2010-12-16  Marek Safar  <marek.safar at gmail.com>
+
+	Add IKVM.Reflection
+
+2010-12-01  Jb Evain  <jbevain at gmail.com>
+
+	Update Mono.Cecil
+
+2010-12-01  Jb Evain  <jbevain at gmail.com>
+
+	Add script to update Cecil from upstream
+
+2010-11-24  Jb Evain  <jbevain at gmail.com>
+
+	Add overloads to IAssemblyResolver.Resolve which take a
+	ReaderParameters for better control
+
+2010-11-23  Jb Evain  <jbevain at gmail.com>
+
+	Remove dead code
+
+2010-11-23  Jb Evain  <jbevain at gmail.com>
+
+	Fix corlib type lookup
+
+2010-11-21  Jb Evain  <jbevain at gmail.com>
+
+	update cecil to upstream
+
+2010-11-21  Zoltan Varga  <vargaz at gmail.com>
+
+	Remove the AOT log files on 'clean'.
+
+2010-11-05  Jb Evain  <jbevain at gmail.com>
+
+	Update Mono.Cecil from upstream
+
+2010-11-05  Marek Safar  <marek.safar at gmail.com>
+
+	Don't build obsolete Compat.ICSharpCode.SharpZipLib in 4.0 profile
+	to avoid another version conflict
+
+2010-11-03  Zoltan Varga  <vargaz at gmail.com>
+
+	Remove extra whitespace from a Makefile.
+
+2010-10-22  Jb Evain  <jbevain at gmail.com>
+
+	delete unused file
+
+2010-10-21  Atsushi Eno  <atsushi at ximian.com>
+
+	Add some WCF types in moonlight_raw System.Xml.Serialization.dll.
+
+2010-10-20  Jb Evain  <jbevain at gmail.com>
+
+	Pass the appropriate defines for the net_4_0 profile
+
+2010-10-06  Jb Evain  <jbevain at gmail.com>
+
+	Port Mono.CodeContract to cecil-light
+
+2010-09-27  Jb Evain  <jbevain at gmail.com>
+
+	Fix the net_4_0 build
+
+2010-09-26  Jonathan Pobst  <monkey at jpobst.com>
+
+	Commit some stuff I had implemented in my SVN tree.
+
+2010-09-23  Marek Habersack  <grendel at twistedcode.net>
+
+	[WCF] System.Data.Services.Client must be signed with the ECMA
+	public key
+
+2010-09-23  Marek Habersack  <grendel at twistedcode.net>
+
+	[WCF] Changes to System.Data.Services.Client to compile it for 4.0
+
+	It appears Microsoft didn't make any changes to the assembly in
+	.NET 4.0 - they simply changed its version number to 4.0.0.0 and
+	added few assembly attributes.
+
+2010-09-15  Marek Safar  <marek.safar at gmail.com>
+
+	There are actually some 3.5 only dlls, thanks to ankit for poiting
+	out.
+
+2010-09-15  Marek Safar  <marek.safar at gmail.com>
+
+	Remove net_3_5 dirs to fix 4.0 dependency and not to build some
+	dlls twice
+
+2010-09-09  Jb Evain  <jbevain at gmail.com>
+
+	add ignore file
+
+2010-09-08  Jb Evain  <jbevain at gmail.com>
+
+	Factorize the monotouch build into a mobile build for monodroid
+	and monotouch
+
 2010-08-31  Andrew Jorgensen  <ajorgensen at novell.com>
 
 	aot-compiler was not getting included in dist
@@ -42,6 +196,10 @@
 
 	Merge CodeContracts
 
+2010-08-13  jbevain  <jbevain at gmail.com>
+
+	[Fix] emit the proper metadata version for net_4_0 assemblies
+
 2010-08-13  Chris Bacon  <chrisbacon76 at gmail.com>
 
 	Removed code that is no longer required due to change to Cecil
@@ -80,6 +238,10 @@
 
 	Add System.ServiceModel.Discovery (now that it builds fine).
 
+2010-08-01  Marek Safar  <marek.safar at gmail.com>
+
+	Update SymbolWriter to use generics collections
+
 2010-06-30  Atsushi Enomoto  <atsushi at ximian.com>
 
 	* Makefile: move back Mvc2.
diff --git a/mcs/class/I18N/CJK/CP932.cs b/mcs/class/I18N/CJK/CP932.cs
index e5f81aa..7d3f2ce 100644
--- a/mcs/class/I18N/CJK/CP932.cs
+++ b/mcs/class/I18N/CJK/CP932.cs
@@ -447,7 +447,7 @@ namespace I18N.CJK
 	// Decoder that handles a rolling Shift-JIS state.
 	sealed class CP932Decoder : DbcsEncoding.DbcsDecoder
 	{
-		private JISConvert convert;
+		private new JISConvert convert;
 		private int last_byte_count;
 		private int last_byte_chars;
 
diff --git a/mcs/class/I18N/CJK/ChangeLog b/mcs/class/I18N/CJK/ChangeLog
index 527dd30..c40f1e2 100644
--- a/mcs/class/I18N/CJK/ChangeLog
+++ b/mcs/class/I18N/CJK/ChangeLog
@@ -1,3 +1,7 @@
+2010-10-15  Marek Safar  <marek.safar at gmail.com>
+
+	Clean up few more warnings
+
 2009-10-09  Atsushi Enomoto  <atsushi at ximian.com>
 
 	* ISO2022JP.cs : simply output wrong escape sequence bytes to the
diff --git a/mcs/class/I18N/CJK/ChangeLog b/mcs/class/I18N/CJK/ChangeLog.old
similarity index 100%
copy from mcs/class/I18N/CJK/ChangeLog
copy to mcs/class/I18N/CJK/ChangeLog.old
diff --git a/mcs/class/I18N/Common/ChangeLog b/mcs/class/I18N/Common/ChangeLog
index 0117b89..4eb077e 100644
--- a/mcs/class/I18N/Common/ChangeLog
+++ b/mcs/class/I18N/Common/ChangeLog
@@ -1,3 +1,7 @@
+2010-10-15  Marek Safar  <marek.safar at gmail.com>
+
+	Clean up few more warnings
+
 2006-08-24  Atsushi Enomoto  <atsushi at ximian.com>
 
 	* ByteEncoding.cs : Implemented IsAlwaysNormalized().
diff --git a/mcs/class/I18N/Common/ChangeLog b/mcs/class/I18N/Common/ChangeLog.old
similarity index 100%
copy from mcs/class/I18N/Common/ChangeLog
copy to mcs/class/I18N/Common/ChangeLog.old
diff --git a/mcs/class/I18N/Common/Handlers.cs b/mcs/class/I18N/Common/Handlers.cs
index 0c74d63..5d9c61a 100644
--- a/mcs/class/I18N/Common/Handlers.cs
+++ b/mcs/class/I18N/Common/Handlers.cs
@@ -26,7 +26,7 @@ namespace I18N.Common
 {
 
 using System;
-using System.Collections;
+using System.Collections.Generic;
 
 // This class provides an internal list of handlers, for runtime
 // engines that do not implement the altered "GetFile" semantics.
@@ -210,19 +210,20 @@ public sealed class Handlers
         "I18N.West.ENCibm865"
     };
 	
-	static Hashtable aliases;
+	static Dictionary<string, string> aliases;
 	public static string GetAlias (string name)
 	{
 		if (aliases == null)
 			BuildHash ();
 
-		return aliases [name] as string;
+		string v;
+		aliases.TryGetValue (name, out v);
+		return v;
 	}
 
 	static void BuildHash ()
 	{
-		aliases = new Hashtable (new CaseInsensitiveHashCodeProvider (),
-					 new CaseInsensitiveComparer ());
+		aliases = new Dictionary<string, string> (StringComparer.OrdinalIgnoreCase);
 
 		aliases.Add ("arabic", "iso_8859_6");
 		aliases.Add ("csISOLatinArabic", "iso_8859_6");
diff --git a/mcs/class/ICSharpCode.SharpZipLib/ChangeLog b/mcs/class/ICSharpCode.SharpZipLib/ChangeLog
index 7ef058d..f61df27 100644
--- a/mcs/class/ICSharpCode.SharpZipLib/ChangeLog
+++ b/mcs/class/ICSharpCode.SharpZipLib/ChangeLog
@@ -1,3 +1,8 @@
+2010-11-04  Marek Safar  <marek.safar at gmail.com>
+
+	Fix SharpZipLib 4.0 profile version number to not overwrite
+	non-4.0 version of same assembly in GAC
+
 2005-10-15  Zoltan Varga  <vargaz at freemail.hu>
 
 	* Import 0.84 version of SharpZipLib and merge local changes. This is
diff --git a/mcs/class/ICSharpCode.SharpZipLib/ChangeLog b/mcs/class/ICSharpCode.SharpZipLib/ChangeLog.old
similarity index 100%
copy from mcs/class/ICSharpCode.SharpZipLib/ChangeLog
copy to mcs/class/ICSharpCode.SharpZipLib/ChangeLog.old
diff --git a/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/AssemblyInfo.cs b/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/AssemblyInfo.cs
index 97c55c6..1873c7a 100644
--- a/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/AssemblyInfo.cs
+++ b/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/AssemblyInfo.cs
@@ -48,11 +48,12 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyTrademark("")]
 [assembly: AssemblyCulture("")]
 
-#if NET_2_0
+#if NET_4_0
+[assembly: AssemblyVersion("4.84.0.0")]
+#elif NET_2_0
 [assembly: AssemblyVersion("2.84.0.0")]
 #else
-// not worrying about the NET_1_0 profile for now.
-[assembly: AssemblyVersion("0.84.0.0")]
+	#error "No profile"
 #endif
 
 [assembly: AssemblyDelaySign(true)]
diff --git a/mcs/class/IKVM.Reflection/AmbiguousMatchException.cs b/mcs/class/IKVM.Reflection/AmbiguousMatchException.cs
new file mode 100644
index 0000000..121d69f
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/AmbiguousMatchException.cs
@@ -0,0 +1,51 @@
+/*
+  Copyright (C) 2009 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Runtime.Serialization;
+
+namespace IKVM.Reflection
+{
+	[Serializable]
+	public sealed class AmbiguousMatchException : Exception
+	{
+		public AmbiguousMatchException()
+		{
+		}
+
+		public AmbiguousMatchException(string message)
+			: base(message)
+		{
+		}
+
+		public AmbiguousMatchException(string message, Exception inner)
+			: base(message, inner)
+		{
+		}
+
+		private AmbiguousMatchException(SerializationInfo info, StreamingContext context)
+			: base(info, context)
+		{
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Assembly.cs b/mcs/class/IKVM.Reflection/Assembly.cs
new file mode 100644
index 0000000..8e547ae
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Assembly.cs
@@ -0,0 +1,159 @@
+/*
+  Copyright (C) 2009 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Collections.Generic;
+
+namespace IKVM.Reflection
+{
+	public abstract class Assembly : ICustomAttributeProvider
+	{
+		internal readonly Universe universe;
+
+		internal Assembly(Universe universe)
+		{
+			this.universe = universe;
+		}
+
+		public abstract Type[] GetTypes();
+		public abstract string FullName { get; }
+		public abstract AssemblyName GetName();
+		public abstract string ImageRuntimeVersion { get; }
+		public abstract Module ManifestModule { get; }
+		public abstract MethodInfo EntryPoint { get; }
+		public abstract string Location { get; }
+		public abstract AssemblyName[] GetReferencedAssemblies();
+		public abstract Module[] GetModules(bool getResourceModules);
+		public abstract Module[] GetLoadedModules(bool getResourceModules);
+		public abstract Module GetModule(string name);
+		public abstract string[] GetManifestResourceNames();
+		public abstract ManifestResourceInfo GetManifestResourceInfo(string resourceName);
+		public abstract System.IO.Stream GetManifestResourceStream(string resourceName);
+
+		internal abstract Type GetTypeImpl(string typeName);
+
+		public Module[] GetModules()
+		{
+			return GetModules(true);
+		}
+
+		public Module[] GetLoadedModules()
+		{
+			return GetLoadedModules(true);
+		}
+
+		public AssemblyName GetName(bool copiedName)
+		{
+			return GetName();
+		}
+
+		public bool ReflectionOnly
+		{
+			get { return true; }
+		}
+
+		public Type[] GetExportedTypes()
+		{
+			List<Type> list = new List<Type>();
+			foreach (Type type in GetTypes())
+			{
+				if (type.IsVisible)
+				{
+					list.Add(type);
+				}
+			}
+			return list.ToArray();
+		}
+
+		public Type GetType(string typeName)
+		{
+			return GetType(typeName, false);
+		}
+
+		public Type GetType(string typeName, bool throwOnError)
+		{
+			TypeNameParser parser = TypeNameParser.Parse(typeName, throwOnError);
+			if (parser.Error)
+			{
+				return null;
+			}
+			if (parser.AssemblyName != null)
+			{
+				if (throwOnError)
+				{
+					throw new ArgumentException("Type names passed to Assembly.GetType() must not specify an assembly.");
+				}
+				else
+				{
+					return null;
+				}
+			}
+			return parser.Expand(GetTypeImpl(parser.FirstNamePart), this, throwOnError, typeName);
+		}
+
+		public virtual Module LoadModule(string moduleName, byte[] rawModule)
+		{
+			throw new NotSupportedException();
+		}
+
+		public Module LoadModule(string moduleName, byte[] rawModule, byte[] rawSymbolStore)
+		{
+			return LoadModule(moduleName, rawModule);
+		}
+
+		public bool IsDefined(Type attributeType, bool inherit)
+		{
+			return CustomAttributeData.__GetCustomAttributes(this, attributeType, inherit).Count != 0;
+		}
+
+		public IList<CustomAttributeData> __GetCustomAttributes(Type attributeType, bool inherit)
+		{
+			return CustomAttributeData.__GetCustomAttributes(this, attributeType, inherit);
+		}
+
+		public static string CreateQualifiedName(string assemblyName, string typeName)
+		{
+			return assemblyName == null ? typeName : typeName + ", " + assemblyName;
+		}
+
+		public static Assembly GetAssembly(Type type)
+		{
+			return type.Assembly;
+		}
+
+		public string CodeBase
+		{
+			get
+			{
+				string path = this.Location.Replace(System.IO.Path.DirectorySeparatorChar, '/');
+				if (!path.StartsWith("/"))
+				{
+					path = "/" + path;
+				}
+				return "file://" + path;
+			}
+		}
+
+		internal abstract IList<CustomAttributeData> GetCustomAttributesData(Type attributeType);
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/AssemblyName.cs b/mcs/class/IKVM.Reflection/AssemblyName.cs
new file mode 100644
index 0000000..e89e80d
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/AssemblyName.cs
@@ -0,0 +1,209 @@
+/*
+  Copyright (C) 2009 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Globalization;
+using System.Configuration.Assemblies;
+using System.IO;
+using IKVM.Reflection.Reader;
+
+namespace IKVM.Reflection
+{
+	public sealed class AssemblyName : ICloneable
+	{
+		private readonly System.Reflection.AssemblyName name;
+		private string culture;
+
+		private AssemblyName(System.Reflection.AssemblyName name, string culture)
+		{
+			this.name = name;
+			this.culture = culture;
+		}
+
+		public AssemblyName()
+		{
+			name = new System.Reflection.AssemblyName();
+		}
+
+		public AssemblyName(string assemblyName)
+		{
+			name = new System.Reflection.AssemblyName(assemblyName);
+		}
+
+		public override string ToString()
+		{
+			string str = name.ToString();
+			if (culture != null)
+			{
+				str = str.Replace("Culture=neutral", "Culture=" + culture);
+			}
+			return str;
+		}
+
+		public string Name
+		{
+			get { return name.Name; }
+			set { name.Name = value; }
+		}
+
+		public CultureInfo CultureInfo
+		{
+			get { return name.CultureInfo; }
+			set
+			{
+				name.CultureInfo = value;
+				culture = null;
+			}
+		}
+
+		internal string Culture
+		{
+			set
+			{
+				culture = value;
+				name.CultureInfo = CultureInfo.InvariantCulture;
+			}
+		}
+
+		public Version Version
+		{
+			get { return name.Version; }
+			set { name.Version = value; }
+		}
+
+		public StrongNameKeyPair KeyPair
+		{
+			get { return name.KeyPair == null ?  null : new StrongNameKeyPair(name.KeyPair); }
+			set { name.KeyPair = value == null ? null : value.keyPair; }
+		}
+
+		public string CodeBase
+		{
+			get { return name.CodeBase; }
+			set { name.CodeBase = value; }
+		}
+
+		public ProcessorArchitecture ProcessorArchitecture
+		{
+			get { return (ProcessorArchitecture)name.ProcessorArchitecture; }
+			set { name.ProcessorArchitecture = (System.Reflection.ProcessorArchitecture)value; }
+		}
+
+		public AssemblyNameFlags Flags
+		{
+			get { return (AssemblyNameFlags)name.Flags; }
+			set { name.Flags = (System.Reflection.AssemblyNameFlags)value; }
+		}
+
+		public AssemblyVersionCompatibility VersionCompatibility
+		{
+			get { return name.VersionCompatibility; }
+			set { name.VersionCompatibility = value; }
+		}
+
+		public byte[] GetPublicKey()
+		{
+			return name.GetPublicKey();
+		}
+
+		public void SetPublicKey(byte[] publicKey)
+		{
+			name.SetPublicKey(publicKey);
+		}
+
+		public byte[] GetPublicKeyToken()
+		{
+			return name.GetPublicKeyToken();
+		}
+
+		public void SetPublicKeyToken(byte[] publicKeyToken)
+		{
+			name.SetPublicKeyToken(publicKeyToken);
+		}
+
+		public AssemblyHashAlgorithm HashAlgorithm
+		{
+			get { return name.HashAlgorithm; }
+			set { name.HashAlgorithm = value; }
+		}
+
+		public string FullName
+		{
+			get
+			{
+				string str = name.FullName;
+				if (culture != null)
+				{
+					str = str.Replace("Culture=neutral", "Culture=" + culture);
+				}
+				return str;
+			}
+		}
+
+		public override bool Equals(object obj)
+		{
+			AssemblyName other = obj as AssemblyName;
+			return other != null && other.FullName == this.FullName;
+		}
+
+		public override int GetHashCode()
+		{
+			return FullName.GetHashCode();
+		}
+
+		public object Clone()
+		{
+			return new AssemblyName((System.Reflection.AssemblyName)name.Clone(), culture);
+		}
+
+		public static bool ReferenceMatchesDefinition(AssemblyName reference, AssemblyName definition)
+		{
+			return System.Reflection.AssemblyName.ReferenceMatchesDefinition(reference.name, definition.name);
+		}
+
+		public static AssemblyName GetAssemblyName(string path)
+		{
+			try
+			{
+				path = Path.GetFullPath(path);
+				using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read))
+				{
+					ModuleReader module = new ModuleReader(null, null, fs, path);
+					if (module.Assembly == null)
+					{
+						throw new BadImageFormatException("Module does not contain a manifest");
+					}
+					return module.Assembly.GetName();
+				}
+			}
+			catch (IOException x)
+			{
+				throw new FileNotFoundException(x.Message, x);
+			}
+			catch (UnauthorizedAccessException x)
+			{
+				throw new FileNotFoundException(x.Message, x);
+			}
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/BadImageFormatException.cs b/mcs/class/IKVM.Reflection/BadImageFormatException.cs
new file mode 100644
index 0000000..330f983
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/BadImageFormatException.cs
@@ -0,0 +1,51 @@
+/*
+  Copyright (C) 2009 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Runtime.Serialization;
+
+namespace IKVM.Reflection
+{
+	[Serializable]
+	public sealed class BadImageFormatException : Exception
+	{
+		public BadImageFormatException()
+		{
+		}
+
+		public BadImageFormatException(string message)
+			: base(message)
+		{
+		}
+
+		public BadImageFormatException(string message, Exception inner)
+			: base(message, inner)
+		{
+		}
+
+		private BadImageFormatException(SerializationInfo info, StreamingContext context)
+			: base(info, context)
+		{
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Binder.cs b/mcs/class/IKVM.Reflection/Binder.cs
new file mode 100644
index 0000000..1307f00
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Binder.cs
@@ -0,0 +1,43 @@
+/*
+  Copyright (C) 2010 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Globalization;
+
+namespace IKVM.Reflection
+{
+	public abstract class Binder
+	{
+		protected Binder()
+		{
+			throw new NotSupportedException();
+		}
+
+		public abstract MethodBase BindToMethod(BindingFlags bindingAttr, MethodBase[] match, ref object[] args, ParameterModifier[] modifiers, CultureInfo culture, string[] names, out object state);
+		public abstract FieldInfo BindToField(BindingFlags bindingAttr, FieldInfo[] match, object value, CultureInfo culture);
+		public abstract object ChangeType(object value, Type type, CultureInfo culture);
+		public abstract void ReorderArgumentArray(ref object[] args, object state);
+		public abstract MethodBase SelectMethod(BindingFlags bindingAttr, MethodBase[] match, Type[] types, ParameterModifier[] modifiers);
+		public abstract PropertyInfo SelectProperty(BindingFlags bindingAttr, PropertyInfo[] match, Type returnType, Type[] indexes, ParameterModifier[] modifiers);
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/ConstructorInfo.cs b/mcs/class/IKVM.Reflection/ConstructorInfo.cs
new file mode 100644
index 0000000..69e2b4d
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/ConstructorInfo.cs
@@ -0,0 +1,224 @@
+/*
+  Copyright (C) 2009 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Collections.Generic;
+
+namespace IKVM.Reflection
+{
+	public abstract class ConstructorInfo : MethodBase
+	{
+		public static readonly string ConstructorName = ".ctor";
+		public static readonly string TypeConstructorName = ".cctor";
+
+		internal abstract MethodInfo GetMethodInfo();
+
+		internal override MethodBase BindTypeParameters(Type type)
+		{
+			return new ConstructorInfoImpl((MethodInfo)GetMethodInfo().BindTypeParameters(type));
+		}
+
+		public sealed override MemberTypes MemberType
+		{
+			get { return MemberTypes.Constructor; }
+		}
+
+		public override bool ContainsGenericParameters
+		{
+			get { return GetMethodInfo().ContainsGenericParameters; }
+		}
+
+		public sealed override ParameterInfo[] GetParameters()
+		{
+			ParameterInfo[] parameters = GetMethodInfo().GetParameters();
+			for (int i = 0; i < parameters.Length; i++)
+			{
+				parameters[i] = new ParameterInfoWrapper(this, parameters[i]);
+			}
+			return parameters;
+		}
+
+		private sealed class ParameterInfoWrapper : ParameterInfo
+		{
+			private readonly ConstructorInfo ctor;
+			private readonly ParameterInfo forward;
+
+			internal ParameterInfoWrapper(ConstructorInfo ctor, ParameterInfo forward)
+			{
+				this.ctor = ctor;
+				this.forward = forward;
+			}
+
+			public override string Name
+			{
+				get { return forward.Name; }
+			}
+
+			public override Type ParameterType
+			{
+				get { return forward.ParameterType; }
+			}
+
+			public override ParameterAttributes Attributes
+			{
+				get { return forward.Attributes; }
+			}
+
+			public override int Position
+			{
+				get { return forward.Position; }
+			}
+
+			public override object RawDefaultValue
+			{
+				get { return forward.RawDefaultValue; }
+			}
+
+			public override Type[] GetOptionalCustomModifiers()
+			{
+				return forward.GetOptionalCustomModifiers();
+			}
+
+			public override Type[] GetRequiredCustomModifiers()
+			{
+				return forward.GetRequiredCustomModifiers();
+			}
+
+			public override MemberInfo Member
+			{
+				get { return ctor; }
+			}
+
+			public override int MetadataToken
+			{
+				get { return forward.MetadataToken; }
+			}
+
+			internal override Module Module
+			{
+				get { return ctor.Module; }
+			}
+
+			internal override IList<CustomAttributeData> GetCustomAttributesData(Type attributeType)
+			{
+				return forward.GetCustomAttributesData(attributeType);
+			}
+		}
+	}
+
+	sealed class ConstructorInfoImpl : ConstructorInfo
+	{
+		private readonly MethodInfo method;
+
+		internal ConstructorInfoImpl(MethodInfo method)
+		{
+			this.method = method;
+		}
+
+		public override bool Equals(object obj)
+		{
+			ConstructorInfoImpl other = obj as ConstructorInfoImpl;
+			return other != null && other.method.Equals(method);
+		}
+
+		public override int GetHashCode()
+		{
+			return method.GetHashCode();
+		}
+
+		public override MethodBody GetMethodBody()
+		{
+			return method.GetMethodBody();
+		}
+
+		public override CallingConventions CallingConvention
+		{
+			get { return method.CallingConvention; }
+		}
+
+		public override MethodAttributes Attributes
+		{
+			get { return method.Attributes; }
+		}
+
+		public override MethodImplAttributes GetMethodImplementationFlags()
+		{
+			return method.GetMethodImplementationFlags();
+		}
+
+		internal override int ParameterCount
+		{
+			get { return method.ParameterCount; }
+		}
+
+		public override Type DeclaringType
+		{
+			get { return method.DeclaringType; }
+		}
+
+		public override string Name
+		{
+			get { return method.Name; }
+		}
+
+		public override string ToString()
+		{
+			return method.ToString();
+		}
+
+		public override Module Module
+		{
+			get { return method.Module; }
+		}
+
+		public override int MetadataToken
+		{
+			get { return method.MetadataToken; }
+		}
+
+		internal override MethodInfo GetMethodInfo()
+		{
+			return method;
+		}
+
+		internal override IList<CustomAttributeData> GetCustomAttributesData(Type attributeType)
+		{
+			return method.GetCustomAttributesData(attributeType);
+		}
+
+		internal override MethodInfo GetMethodOnTypeDefinition()
+		{
+			return method.GetMethodOnTypeDefinition();
+		}
+
+		internal override MethodSignature MethodSignature
+		{
+			get { return method.MethodSignature; }
+		}
+
+		internal override int ImportTo(Emit.ModuleBuilder module)
+		{
+			return method.ImportTo(module);
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/CustomAttributeData.cs b/mcs/class/IKVM.Reflection/CustomAttributeData.cs
new file mode 100644
index 0000000..5af366b
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/CustomAttributeData.cs
@@ -0,0 +1,612 @@
+/*
+  Copyright (C) 2009-2010 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.IO;
+using IKVM.Reflection.Reader;
+using IKVM.Reflection.Emit;
+using IKVM.Reflection.Metadata;
+
+namespace IKVM.Reflection
+{
+	public sealed class CustomAttributeData
+	{
+		internal static readonly IList<CustomAttributeData> EmptyList = new List<CustomAttributeData>(0).AsReadOnly();
+		private Module module;
+		private int index;
+		private ConstructorInfo lazyConstructor;
+		private IList<CustomAttributeTypedArgument> lazyConstructorArguments;
+		private IList<CustomAttributeNamedArgument> lazyNamedArguments;
+
+		internal CustomAttributeData(Module module, int index)
+		{
+			this.module = module;
+			this.index = index;
+		}
+
+		internal CustomAttributeData(ConstructorInfo constructor, object[] args, List<CustomAttributeNamedArgument> namedArguments)
+		{
+			this.lazyConstructor = constructor;
+			MethodSignature sig = constructor.MethodSignature;
+			List<CustomAttributeTypedArgument> list = new List<CustomAttributeTypedArgument>();
+			for (int i = 0; i < args.Length; i++)
+			{
+				list.Add(new CustomAttributeTypedArgument(sig.GetParameterType(i), args[i]));
+			}
+			lazyConstructorArguments = list.AsReadOnly();
+			if (namedArguments == null)
+			{
+				this.lazyNamedArguments = Empty<CustomAttributeNamedArgument>.Array;
+			}
+			else
+			{
+				this.lazyNamedArguments = namedArguments.AsReadOnly();
+			}
+		}
+
+		internal CustomAttributeData(Assembly asm, ConstructorInfo constructor, ByteReader br)
+		{
+			this.lazyConstructor = constructor;
+			if (br.Length == 0)
+			{
+				// it's legal to have an empty blob
+				lazyConstructorArguments = Empty<CustomAttributeTypedArgument>.Array;
+				lazyNamedArguments = Empty<CustomAttributeNamedArgument>.Array;
+			}
+			else
+			{
+				if (br.ReadUInt16() != 1)
+				{
+					throw new BadImageFormatException();
+				}
+				lazyConstructorArguments = ReadConstructorArguments(asm, br, constructor);
+				lazyNamedArguments = ReadNamedArguments(asm, br, br.ReadUInt16(), constructor.DeclaringType);
+			}
+		}
+
+		public override string ToString()
+		{
+			StringBuilder sb = new StringBuilder();
+			sb.Append('[');
+			sb.Append(Constructor.DeclaringType.FullName);
+			sb.Append('(');
+			string sep = "";
+			foreach (CustomAttributeTypedArgument arg in ConstructorArguments)
+			{
+				sb.Append(sep);
+				sep = ", ";
+				AppendValue(sb, arg);
+			}
+			foreach (CustomAttributeNamedArgument named in NamedArguments)
+			{
+				sb.Append(sep);
+				sep = ", ";
+				sb.Append(named.MemberInfo.Name);
+				sb.Append(" = ");
+				AppendValue(sb, named.TypedValue);
+			}
+			sb.Append(')');
+			sb.Append(']');
+			return sb.ToString();
+		}
+
+		private static void AppendValue(StringBuilder sb, CustomAttributeTypedArgument arg)
+		{
+			if (arg.ArgumentType == arg.ArgumentType.Module.universe.System_String)
+			{
+				sb.Append('"').Append(arg.Value).Append('"');
+			}
+			else
+			{
+				if (arg.ArgumentType.IsEnum)
+				{
+					sb.Append('(');
+					sb.Append(arg.ArgumentType.FullName);
+					sb.Append(')');
+				}
+				sb.Append(arg.Value);
+			}
+		}
+
+		internal static void ReadDeclarativeSecurity(Assembly asm, List<CustomAttributeData> list, int action, ByteReader br)
+		{
+			Universe u = asm.universe;
+			if (br.PeekByte() == '.')
+			{
+				br.ReadByte();
+				int count = br.ReadCompressedInt();
+				for (int j = 0; j < count; j++)
+				{
+					Type type = ReadType(asm, br);
+					ConstructorInfo constructor;
+					if (type == u.System_Security_Permissions_HostProtectionAttribute && action == (int)System.Security.Permissions.SecurityAction.LinkDemand)
+					{
+						constructor = type.GetConstructor(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, null, Type.EmptyTypes, null);
+					}
+					else
+					{
+						constructor = type.GetConstructor(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, null, new Type[] { u.System_Security_Permissions_SecurityAction }, null);
+					}
+					// LAMESPEC there is an additional length here (probably of the named argument list)
+					ByteReader slice = br.Slice(br.ReadCompressedInt());
+					// LAMESPEC the count of named arguments is a compressed integer (instead of UInt16 as NumNamed in custom attributes)
+					list.Add(new CustomAttributeData(constructor, action, ReadNamedArguments(asm, slice, slice.ReadCompressedInt(), type)));
+				}
+			}
+			else
+			{
+				// .NET 1.x format (xml)
+				char[] buf = new char[br.Length / 2];
+				for (int i = 0; i < buf.Length; i++)
+				{
+					buf[i] = br.ReadChar();
+				}
+				string xml = new String(buf);
+				ConstructorInfo constructor = u.System_Security_Permissions_PermissionSetAttribute.GetConstructor(new Type[] { u.System_Security_Permissions_SecurityAction });
+				List<CustomAttributeNamedArgument> args = new List<CustomAttributeNamedArgument>();
+				args.Add(new CustomAttributeNamedArgument(u.System_Security_Permissions_PermissionSetAttribute.GetProperty("XML"),
+					new CustomAttributeTypedArgument(u.System_String, xml)));
+				list.Add(new CustomAttributeData(constructor, action, args));
+			}
+		}
+
+		private CustomAttributeData(ConstructorInfo constructor, int securityAction, IList<CustomAttributeNamedArgument> namedArguments)
+		{
+			Universe u = constructor.Module.universe;
+			this.lazyConstructor = constructor;
+			List<CustomAttributeTypedArgument> list = new List<CustomAttributeTypedArgument>();
+			list.Add(new CustomAttributeTypedArgument(u.System_Security_Permissions_SecurityAction, securityAction));
+			this.lazyConstructorArguments =  list.AsReadOnly();
+			this.lazyNamedArguments = namedArguments;
+		}
+
+		private static Type ReadFieldOrPropType(Assembly asm, ByteReader br)
+		{
+			Universe u = asm.universe;
+			switch (br.ReadByte())
+			{
+				case Signature.ELEMENT_TYPE_BOOLEAN:
+					return u.System_Boolean;
+				case Signature.ELEMENT_TYPE_CHAR:
+					return u.System_Char;
+				case Signature.ELEMENT_TYPE_I1:
+					return u.System_SByte;
+				case Signature.ELEMENT_TYPE_U1:
+					return u.System_Byte;
+				case Signature.ELEMENT_TYPE_I2:
+					return u.System_Int16;
+				case Signature.ELEMENT_TYPE_U2:
+					return u.System_UInt16;
+				case Signature.ELEMENT_TYPE_I4:
+					return u.System_Int32;
+				case Signature.ELEMENT_TYPE_U4:
+					return u.System_UInt32;
+				case Signature.ELEMENT_TYPE_I8:
+					return u.System_Int64;
+				case Signature.ELEMENT_TYPE_U8:
+					return u.System_UInt64;
+				case Signature.ELEMENT_TYPE_R4:
+					return u.System_Single;
+				case Signature.ELEMENT_TYPE_R8:
+					return u.System_Double;
+				case Signature.ELEMENT_TYPE_STRING:
+					return u.System_String;
+				case Signature.ELEMENT_TYPE_SZARRAY:
+					return ReadFieldOrPropType(asm, br).MakeArrayType();
+				case 0x55:
+					return ReadType(asm, br);
+				case 0x50:
+					return u.System_Type;
+				case 0x51:
+					return u.System_Object;
+				default:
+					throw new InvalidOperationException();
+			}
+		}
+
+		private static CustomAttributeTypedArgument ReadFixedArg(Assembly asm, ByteReader br, Type type)
+		{
+			Universe u = asm.universe;
+			if (type == u.System_String)
+			{
+				return new CustomAttributeTypedArgument(type, br.ReadString());
+			}
+			else if (type == u.System_Type)
+			{
+				return new CustomAttributeTypedArgument(type, ReadType(asm, br));
+			}
+			else if (type == u.System_Object)
+			{
+				return ReadFixedArg(asm, br, ReadFieldOrPropType(asm, br));
+			}
+			else if (type.IsArray)
+			{
+				int length = br.ReadInt32();
+				if (length == -1)
+				{
+					return new CustomAttributeTypedArgument(type, null);
+				}
+				Type elementType = type.GetElementType();
+				CustomAttributeTypedArgument[] array = new CustomAttributeTypedArgument[length];
+				for (int i = 0; i < length; i++)
+				{
+					array[i] = ReadFixedArg(asm, br, elementType);
+				}
+				return new CustomAttributeTypedArgument(type, array);
+			}
+			else if (type.IsEnum)
+			{
+				return new CustomAttributeTypedArgument(type, ReadFixedArg(asm, br, type.GetEnumUnderlyingTypeImpl()).Value);
+			}
+			else
+			{
+				switch (Type.GetTypeCode(type))
+				{
+					case TypeCode.Boolean:
+						return new CustomAttributeTypedArgument(type, br.ReadByte() != 0);
+					case TypeCode.Char:
+						return new CustomAttributeTypedArgument(type, br.ReadChar());
+					case TypeCode.Single:
+						return new CustomAttributeTypedArgument(type, br.ReadSingle());
+					case TypeCode.Double:
+						return new CustomAttributeTypedArgument(type, br.ReadDouble());
+					case TypeCode.SByte:
+						return new CustomAttributeTypedArgument(type, br.ReadSByte());
+					case TypeCode.Int16:
+						return new CustomAttributeTypedArgument(type, br.ReadInt16());
+					case TypeCode.Int32:
+						return new CustomAttributeTypedArgument(type, br.ReadInt32());
+					case TypeCode.Int64:
+						return new CustomAttributeTypedArgument(type, br.ReadInt64());
+					case TypeCode.Byte:
+						return new CustomAttributeTypedArgument(type, br.ReadByte());
+					case TypeCode.UInt16:
+						return new CustomAttributeTypedArgument(type, br.ReadUInt16());
+					case TypeCode.UInt32:
+						return new CustomAttributeTypedArgument(type, br.ReadUInt32());
+					case TypeCode.UInt64:
+						return new CustomAttributeTypedArgument(type, br.ReadUInt64());
+					default:
+						throw new InvalidOperationException();
+				}
+			}
+		}
+
+		private static Type ReadType(Assembly asm, ByteReader br)
+		{
+			string typeName = br.ReadString();
+			if (typeName == null)
+			{
+				return null;
+			}
+			if (typeName.Length > 0 && typeName[typeName.Length - 1] == 0)
+			{
+				// there are broken compilers that emit an extra NUL character after the type name
+				typeName = typeName.Substring(0, typeName.Length - 1);
+			}
+			return asm.universe.GetType(asm, typeName, true);
+		}
+
+		private static IList<CustomAttributeTypedArgument> ReadConstructorArguments(Assembly asm, ByteReader br, ConstructorInfo constructor)
+		{
+			MethodSignature sig = constructor.MethodSignature;
+			int count = sig.GetParameterCount();
+			List<CustomAttributeTypedArgument> list = new List<CustomAttributeTypedArgument>(count);
+			for (int i = 0; i < count; i++)
+			{
+				list.Add(ReadFixedArg(asm, br, sig.GetParameterType(i)));
+			}
+			return list.AsReadOnly();
+		}
+
+		private static IList<CustomAttributeNamedArgument> ReadNamedArguments(Assembly asm, ByteReader br, int named, Type type)
+		{
+			List<CustomAttributeNamedArgument> list = new List<CustomAttributeNamedArgument>(named);
+			for (int i = 0; i < named; i++)
+			{
+				byte fieldOrProperty = br.ReadByte();
+				Type fieldOrPropertyType = ReadFieldOrPropType(asm, br);
+				string name = br.ReadString();
+				CustomAttributeTypedArgument value = ReadFixedArg(asm, br, fieldOrPropertyType);
+				MemberInfo member;
+				switch (fieldOrProperty)
+				{
+					case 0x53:
+						member = GetField(type, name);
+						break;
+					case 0x54:
+						member = GetProperty(type, name);
+						break;
+					default:
+						throw new BadImageFormatException();
+				}
+				if (member == null)
+				{
+					throw new BadImageFormatException();
+				}
+				list.Add(new CustomAttributeNamedArgument(member, value));
+			}
+			return list.AsReadOnly();
+		}
+
+		private static FieldInfo GetField(Type type, string name)
+		{
+			for (; type != null; type = type.BaseType)
+			{
+				foreach (FieldInfo field in type.__GetDeclaredFields())
+				{
+					if (field.IsPublic && !field.IsStatic && field.Name == name)
+					{
+						return field;
+					}
+				}
+			}
+			return null;
+		}
+
+		private static PropertyInfo GetProperty(Type type, string name)
+		{
+			for (; type != null; type = type.BaseType)
+			{
+				foreach (PropertyInfo property in type.__GetDeclaredProperties())
+				{
+					if (property.IsPublic && !property.IsStatic && property.Name == name)
+					{
+						return property;
+					}
+				}
+			}
+			return null;
+		}
+
+		public void __ReadTypeName(out string ns, out string name)
+		{
+			if (lazyConstructor == null)
+			{
+				ModuleReader mod = module as ModuleReader;
+				if (mod != null)
+				{
+					int methodToken = mod.CustomAttribute.records[index].Type;
+					if ((methodToken >> 24) == MemberRefTable.Index)
+					{
+						int methodIndex = (methodToken & 0xFFFFFF) - 1;
+						int typeToken = mod.MemberRef.records[methodIndex].Class;
+						if ((typeToken >> 24) == TypeRefTable.Index)
+						{
+							int typeIndex = (typeToken & 0xFFFFFF) - 1;
+							int typeNameSpace = mod.TypeRef.records[typeIndex].TypeNameSpace;
+							ns = typeNameSpace == 0 ? null : mod.GetString(typeNameSpace);
+							name = mod.GetString(mod.TypeRef.records[typeIndex].TypeName);
+							return;
+						}
+					}
+				}
+			}
+			ns = Constructor.DeclaringType.Namespace;
+			name = Constructor.DeclaringType.Name;
+		}
+
+		public ConstructorInfo Constructor
+		{
+			get
+			{
+				if (lazyConstructor == null)
+				{
+					lazyConstructor = (ConstructorInfo)module.ResolveMethod(module.CustomAttribute.records[index].Type);
+				}
+				return lazyConstructor;
+			}
+		}
+
+		public IList<CustomAttributeTypedArgument> ConstructorArguments
+		{
+			get
+			{
+				if (lazyConstructorArguments == null)
+				{
+					LazyParseArguments();
+				}
+				return lazyConstructorArguments;
+			}
+		}
+
+		public IList<CustomAttributeNamedArgument> NamedArguments
+		{
+			get
+			{
+				if (lazyNamedArguments == null)
+				{
+					LazyParseArguments();
+				}
+				return lazyNamedArguments;
+			}
+		}
+
+		private void LazyParseArguments()
+		{
+			ByteReader br = module.GetBlob(module.CustomAttribute.records[index].Value);
+			if (br.Length == 0)
+			{
+				// it's legal to have an empty blob
+				lazyConstructorArguments = Empty<CustomAttributeTypedArgument>.Array;
+				lazyNamedArguments = Empty<CustomAttributeNamedArgument>.Array;
+			}
+			else
+			{
+				if (br.ReadUInt16() != 1)
+				{
+					throw new BadImageFormatException();
+				}
+				lazyConstructorArguments = ReadConstructorArguments(module.Assembly, br, Constructor);
+				lazyNamedArguments = ReadNamedArguments(module.Assembly, br, br.ReadUInt16(), Constructor.DeclaringType);
+			}
+		}
+
+		public CustomAttributeBuilder __ToBuilder()
+		{
+			object[] args = new object[ConstructorArguments.Count];
+			for (int i = 0; i < args.Length; i++)
+			{
+				args[i] = ConstructorArguments[i].Value;
+			}
+			List<PropertyInfo> namedProperties = new List<PropertyInfo>();
+			List<object> propertyValues = new List<object>();
+			List<FieldInfo> namedFields = new List<FieldInfo>();
+			List<object> fieldValues = new List<object>();
+			foreach (CustomAttributeNamedArgument named in NamedArguments)
+			{
+				if (named.MemberInfo is PropertyInfo)
+				{
+					namedProperties.Add((PropertyInfo)named.MemberInfo);
+					propertyValues.Add(named.TypedValue.Value);
+				}
+				else
+				{
+					namedFields.Add((FieldInfo)named.MemberInfo);
+					fieldValues.Add(named.TypedValue.Value);
+				}
+			}
+			return new CustomAttributeBuilder(Constructor, args, namedProperties.ToArray(), propertyValues.ToArray(), namedFields.ToArray(), fieldValues.ToArray());
+		}
+
+		public static IList<CustomAttributeData> GetCustomAttributes(MemberInfo member)
+		{
+			return member.GetCustomAttributesData(null);
+		}
+
+		public static IList<CustomAttributeData> GetCustomAttributes(Assembly assembly)
+		{
+			return assembly.GetCustomAttributesData(null);
+		}
+
+		public static IList<CustomAttributeData> GetCustomAttributes(Module module)
+		{
+			return module.GetCustomAttributesData(null);
+		}
+
+		public static IList<CustomAttributeData> GetCustomAttributes(ParameterInfo parameter)
+		{
+			return parameter.GetCustomAttributesData(null);
+		}
+
+		public static IList<CustomAttributeData> __GetCustomAttributes(Assembly assembly, Type attributeType, bool inherit)
+		{
+			return assembly.GetCustomAttributesData(attributeType);
+		}
+
+		public static IList<CustomAttributeData> __GetCustomAttributes(Module module, Type attributeType, bool inherit)
+		{
+			return module.GetCustomAttributesData(attributeType);
+		}
+
+		public static IList<CustomAttributeData> __GetCustomAttributes(ParameterInfo parameter, Type attributeType, bool inherit)
+		{
+			return parameter.GetCustomAttributesData(attributeType);
+		}
+
+		public static IList<CustomAttributeData> __GetCustomAttributes(MemberInfo member, Type attributeType, bool inherit)
+		{
+			if (!inherit || !IsInheritableAttribute(attributeType))
+			{
+				return member.GetCustomAttributesData(attributeType);
+			}
+			List<CustomAttributeData> list = new List<CustomAttributeData>();
+			for (; ; )
+			{
+				list.AddRange(member.GetCustomAttributesData(attributeType));
+				Type type = member as Type;
+				if (type != null)
+				{
+					type = type.BaseType;
+					if (type == null)
+					{
+						return list;
+					}
+					member = type;
+					continue;
+				}
+				MethodInfo method = member as MethodInfo;
+				if (method != null)
+				{
+					MemberInfo prev = member;
+					method = method.GetBaseDefinition();
+					if (method == null || method == prev)
+					{
+						return list;
+					}
+					member = method;
+					continue;
+				}
+				return list;
+			}
+		}
+
+		public static IList<CustomAttributeData> __GetDeclarativeSecurity(Assembly assembly)
+		{
+			return assembly.ManifestModule.GetDeclarativeSecurity(0x20000001);
+		}
+
+		public static IList<CustomAttributeData> __GetDeclarativeSecurity(Type type)
+		{
+			if ((type.Attributes & TypeAttributes.HasSecurity) != 0)
+			{
+				return type.Module.GetDeclarativeSecurity(type.MetadataToken);
+			}
+			else
+			{
+				return EmptyList;
+			}
+		}
+
+		public static IList<CustomAttributeData> __GetDeclarativeSecurity(MethodBase method)
+		{
+			if ((method.Attributes & MethodAttributes.HasSecurity) != 0)
+			{
+				return method.Module.GetDeclarativeSecurity(method.MetadataToken);
+			}
+			else
+			{
+				return EmptyList;
+			}
+		}
+
+		private static bool IsInheritableAttribute(Type attribute)
+		{
+			Type attributeUsageAttribute = attribute.Module.universe.System_AttributeUsageAttribute;
+			IList<CustomAttributeData> attr = attribute.GetCustomAttributesData(attributeUsageAttribute);
+			if (attr.Count != 0)
+			{
+				foreach (CustomAttributeNamedArgument named in attr[0].NamedArguments)
+				{
+					if (named.MemberInfo.Name == "Inherited")
+					{
+						return (bool)named.TypedValue.Value;
+					}
+				}
+			}
+			return true;
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/CustomAttributeNamedArgument.cs b/mcs/class/IKVM.Reflection/CustomAttributeNamedArgument.cs
new file mode 100644
index 0000000..d9a84b7
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/CustomAttributeNamedArgument.cs
@@ -0,0 +1,71 @@
+/*
+  Copyright (C) 2009 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace IKVM.Reflection
+{
+	public struct CustomAttributeNamedArgument
+	{
+		private readonly MemberInfo member;
+		private readonly CustomAttributeTypedArgument value;
+
+		internal CustomAttributeNamedArgument(MemberInfo member, CustomAttributeTypedArgument value)
+		{
+			this.member = member;
+			this.value = value;
+		}
+
+		public override bool Equals(object obj)
+		{
+			return this == obj as CustomAttributeNamedArgument?;
+		}
+
+		public override int GetHashCode()
+		{
+			return member.GetHashCode() ^ 53 * value.GetHashCode();
+		}
+
+		public MemberInfo MemberInfo
+		{
+			get { return member; }
+		}
+
+		public CustomAttributeTypedArgument TypedValue
+		{
+			get { return value; }
+		}
+
+		public static bool operator ==(CustomAttributeNamedArgument arg1, CustomAttributeNamedArgument arg2)
+		{
+			return arg1.member.Equals(arg2.member) && arg1.value == arg2.value;
+		}
+
+		public static bool operator !=(CustomAttributeNamedArgument arg1, CustomAttributeNamedArgument arg2)
+		{
+			return !(arg1 == arg2);
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/CustomAttributeTypedArgument.cs b/mcs/class/IKVM.Reflection/CustomAttributeTypedArgument.cs
new file mode 100644
index 0000000..3403135
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/CustomAttributeTypedArgument.cs
@@ -0,0 +1,71 @@
+/*
+  Copyright (C) 2009 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace IKVM.Reflection
+{
+	public struct CustomAttributeTypedArgument
+	{
+		private readonly Type type;
+		private readonly object value;
+
+		internal CustomAttributeTypedArgument(Type type, object value)
+		{
+			this.type = type;
+			this.value = value;
+		}
+
+		public override bool Equals(object obj)
+		{
+			return this == obj as CustomAttributeTypedArgument?;
+		}
+
+		public override int GetHashCode()
+		{
+			return type.GetHashCode() ^ 77 * (value == null ? 0 : value.GetHashCode());
+		}
+
+		public Type ArgumentType
+		{
+			get { return type; }
+		}
+
+		public Object Value
+		{
+			get { return value; }
+		}
+
+		public static bool operator ==(CustomAttributeTypedArgument arg1, CustomAttributeTypedArgument arg2)
+		{
+			return arg1.type.Equals(arg2.type) && (arg1.value == arg2.value || (arg1.value != null && arg1.value.Equals(arg2.value)));
+		}
+
+		public static bool operator !=(CustomAttributeTypedArgument arg1, CustomAttributeTypedArgument arg2)
+		{
+			return !(arg1 == arg2);
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Emit/AssemblyBuilder.cs b/mcs/class/IKVM.Reflection/Emit/AssemblyBuilder.cs
new file mode 100644
index 0000000..9919fd3
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Emit/AssemblyBuilder.cs
@@ -0,0 +1,721 @@
+/*
+  Copyright (C) 2008-2010 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Collections.Generic;
+using System.Configuration.Assemblies;
+using System.IO;
+using System.Diagnostics;
+using System.Globalization;
+using System.Security.Cryptography;
+using System.Security;
+using IKVM.Reflection.Metadata;
+using IKVM.Reflection.Impl;
+using IKVM.Reflection.Writer;
+
+namespace IKVM.Reflection.Emit
+{
+	public sealed class AssemblyBuilder : Assembly
+	{
+		private readonly string name;
+		private ushort majorVersion;
+		private ushort minorVersion;
+		private ushort buildVersion;
+		private ushort revisionVersion;
+		private string culture;
+		private AssemblyNameFlags flags;
+		private AssemblyHashAlgorithm hashAlgorithm;
+		private StrongNameKeyPair keyPair;
+		private byte[] publicKey;
+		internal readonly string dir;
+		private readonly PermissionSet requiredPermissions;
+		private readonly PermissionSet optionalPermissions;
+		private readonly PermissionSet refusedPermissions;
+		private PEFileKinds fileKind = PEFileKinds.Dll;
+		private MethodInfo entryPoint;
+		private VersionInfo versionInfo;
+		private ResourceSection unmanagedResources;
+		private string imageRuntimeVersion;
+		internal int mdStreamVersion = 0x20000;
+		private Module pseudoManifestModule;
+		private readonly List<ResourceFile> resourceFiles = new List<ResourceFile>();
+		private readonly List<ModuleBuilder> modules = new List<ModuleBuilder>();
+		private readonly List<Module> addedModules = new List<Module>();
+		private readonly List<CustomAttributeBuilder> customAttributes = new List<CustomAttributeBuilder>();
+		private readonly List<CustomAttributeBuilder> declarativeSecurity = new List<CustomAttributeBuilder>();
+		private readonly List<Type> typeForwarders = new List<Type>();
+
+		private struct ResourceFile
+		{
+			internal string Name;
+			internal string FileName;
+			internal ResourceAttributes Attributes;
+		}
+
+		internal AssemblyBuilder(Universe universe, AssemblyName name, string dir, PermissionSet requiredPermissions, PermissionSet optionalPermissions, PermissionSet refusedPermissions)
+			: base(universe)
+		{
+			this.name = name.Name;
+			SetVersionHelper(name.Version);
+			if (name.CultureInfo != null && !string.IsNullOrEmpty(name.CultureInfo.Name))
+			{
+				this.culture = name.CultureInfo.Name;
+			}
+			this.flags = name.Flags;
+			this.hashAlgorithm = name.HashAlgorithm;
+			if (this.hashAlgorithm == AssemblyHashAlgorithm.None)
+			{
+				this.hashAlgorithm = AssemblyHashAlgorithm.SHA1;
+			}
+			this.keyPair = name.KeyPair;
+			if (this.keyPair != null)
+			{
+				this.publicKey = this.keyPair.PublicKey;
+			}
+			else
+			{
+				byte[] publicKey = name.GetPublicKey();
+				if (publicKey != null && publicKey.Length != 0)
+				{
+					this.publicKey = (byte[])publicKey.Clone();
+				}
+			}
+			this.dir = dir ?? ".";
+			this.requiredPermissions = requiredPermissions;
+			this.optionalPermissions = optionalPermissions;
+			this.refusedPermissions = refusedPermissions;
+			if (universe.HasMscorlib && universe.Mscorlib.ImageRuntimeVersion != null)
+			{
+				this.imageRuntimeVersion = universe.Mscorlib.ImageRuntimeVersion;
+			}
+			else
+			{
+				this.imageRuntimeVersion = typeof(object).Assembly.ImageRuntimeVersion;
+			}
+		}
+
+		private void SetVersionHelper(Version version)
+		{
+			if (version == null)
+			{
+				majorVersion = 0;
+				minorVersion = 0;
+				buildVersion = 0;
+				revisionVersion = 0;
+			}
+			else
+			{
+				majorVersion = (ushort)version.Major;
+				minorVersion = (ushort)version.Minor;
+				buildVersion = version.Build == -1 ? (ushort)0 : (ushort)version.Build;
+				revisionVersion = version.Revision == -1 ? (ushort)0 : (ushort)version.Revision;
+			}
+		}
+
+		public void __SetAssemblyVersion(Version version)
+		{
+			AssemblyName oldName = GetName();
+			SetVersionHelper(version);
+			universe.RenameAssembly(this, oldName);
+		}
+
+		public void __SetAssemblyCulture(string cultureName)
+		{
+			AssemblyName oldName = GetName();
+			this.culture = cultureName;
+			universe.RenameAssembly(this, oldName);
+		}
+
+		public void __SetAssemblyKeyPair(StrongNameKeyPair keyPair)
+		{
+			AssemblyName oldName = GetName();
+			this.keyPair = keyPair;
+			if (keyPair != null)
+			{
+				this.publicKey = keyPair.PublicKey;
+			}
+			universe.RenameAssembly(this, oldName);
+		}
+
+		// this is used in combination with delay signing
+		public void __SetAssemblyPublicKey(byte[] publicKey)
+		{
+			AssemblyName oldName = GetName();
+			this.publicKey = publicKey == null ? null : (byte[])publicKey.Clone();
+			universe.RenameAssembly(this, oldName);
+		}
+
+		public void __SetAssemblyAlgorithmId(AssemblyHashAlgorithm hashAlgorithm)
+		{
+			this.hashAlgorithm = hashAlgorithm;
+		}
+
+		public void __SetAssemblyFlags(AssemblyNameFlags flags)
+		{
+			this.flags = flags;
+		}
+
+		public override AssemblyName GetName()
+		{
+			AssemblyName n = new AssemblyName();
+			n.Name = name;
+			n.Version = new Version(majorVersion, minorVersion, buildVersion, revisionVersion);
+			n.Culture = culture;
+			n.HashAlgorithm = hashAlgorithm;
+			n.Flags = flags;
+			n.SetPublicKey(publicKey != null ? (byte[])publicKey.Clone() : Empty<byte>.Array);
+			n.KeyPair = keyPair;
+			return n;
+		}
+
+		public override string FullName
+		{
+			get { return GetName().FullName; }
+		}
+
+		public override string Location
+		{
+			get { throw new NotSupportedException(); }
+		}
+
+		public ModuleBuilder DefineDynamicModule(string name, string fileName)
+		{
+			return DefineDynamicModule(name, fileName, false);
+		}
+
+		public ModuleBuilder DefineDynamicModule(string name, string fileName, bool emitSymbolInfo)
+		{
+			ModuleBuilder module = new ModuleBuilder(this, name, fileName, emitSymbolInfo);
+			modules.Add(module);
+			return module;
+		}
+
+		public ModuleBuilder GetDynamicModule(string name)
+		{
+			foreach (ModuleBuilder module in modules)
+			{
+				if (module.Name == name)
+				{
+					return module;
+				}
+			}
+			return null;
+		}
+
+		public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute)
+		{
+			SetCustomAttribute(new CustomAttributeBuilder(con, binaryAttribute));
+		}
+
+		public void SetCustomAttribute(CustomAttributeBuilder customBuilder)
+		{
+			customAttributes.Add(customBuilder);
+		}
+
+		public void __AddDeclarativeSecurity(CustomAttributeBuilder customBuilder)
+		{
+			declarativeSecurity.Add(customBuilder);
+		}
+
+		public void __AddTypeForwarder(Type type)
+		{
+			typeForwarders.Add(type);
+		}
+
+		public void SetEntryPoint(MethodInfo entryMethod)
+		{
+			SetEntryPoint(entryMethod, PEFileKinds.ConsoleApplication);
+		}
+
+		public void SetEntryPoint(MethodInfo entryMethod, PEFileKinds fileKind)
+		{
+			this.entryPoint = entryMethod;
+			this.fileKind = fileKind;
+		}
+
+		public void Save(string assemblyFileName)
+		{
+			Save(assemblyFileName, PortableExecutableKinds.ILOnly, ImageFileMachine.I386);
+		}
+
+		public void Save(string assemblyFileName, PortableExecutableKinds portableExecutableKind, ImageFileMachine imageFileMachine)
+		{
+			ModuleBuilder manifestModule = null;
+
+			foreach (ModuleBuilder moduleBuilder in modules)
+			{
+				moduleBuilder.PopulatePropertyAndEventTables();
+
+				if (manifestModule == null
+					&& string.Compare(moduleBuilder.fileName, assemblyFileName, StringComparison.OrdinalIgnoreCase) == 0)
+				{
+					manifestModule = moduleBuilder;
+				}
+			}
+
+			if (manifestModule == null)
+			{
+				manifestModule = DefineDynamicModule("RefEmit_OnDiskManifestModule", assemblyFileName, false);
+			}
+
+			AssemblyTable.Record assemblyRecord = new AssemblyTable.Record();
+			assemblyRecord.HashAlgId = (int)hashAlgorithm;
+			assemblyRecord.Name = manifestModule.Strings.Add(name);
+			assemblyRecord.MajorVersion = majorVersion;
+			assemblyRecord.MinorVersion = minorVersion;
+			assemblyRecord.BuildNumber = buildVersion;
+			assemblyRecord.RevisionNumber = revisionVersion;
+			if (publicKey != null)
+			{
+				assemblyRecord.PublicKey = manifestModule.Blobs.Add(ByteBuffer.Wrap(publicKey));
+				assemblyRecord.Flags = (int)(flags | AssemblyNameFlags.PublicKey);
+			}
+			else
+			{
+				assemblyRecord.Flags = (int)(flags & ~AssemblyNameFlags.PublicKey);
+			}
+			if (culture != null)
+			{
+				assemblyRecord.Culture = manifestModule.Strings.Add(culture);
+			}
+			int token = 0x20000000 + manifestModule.AssemblyTable.AddRecord(assemblyRecord);
+
+#pragma warning disable 618
+			// this values are obsolete, but we already know that so we disable the warning
+			System.Security.Permissions.SecurityAction requestMinimum = System.Security.Permissions.SecurityAction.RequestMinimum;
+			System.Security.Permissions.SecurityAction requestOptional = System.Security.Permissions.SecurityAction.RequestOptional;
+			System.Security.Permissions.SecurityAction requestRefuse = System.Security.Permissions.SecurityAction.RequestRefuse;
+#pragma warning restore 618
+			if (requiredPermissions != null)
+			{
+				manifestModule.AddDeclarativeSecurity(token, requestMinimum, requiredPermissions);
+			}
+			if (optionalPermissions != null)
+			{
+				manifestModule.AddDeclarativeSecurity(token, requestOptional, optionalPermissions);
+			}
+			if (refusedPermissions != null)
+			{
+				manifestModule.AddDeclarativeSecurity(token, requestRefuse, refusedPermissions);
+			}
+
+			if (versionInfo != null)
+			{
+				versionInfo.SetName(GetName());
+				versionInfo.SetFileName(assemblyFileName);
+				foreach (CustomAttributeBuilder cab in customAttributes)
+				{
+					// .NET doesn't support copying blob custom attributes into the version info
+					if (!cab.HasBlob)
+					{
+						versionInfo.SetAttribute(cab);
+					}
+				}
+				ByteBuffer versionInfoData = new ByteBuffer(512);
+				versionInfo.Write(versionInfoData);
+				if (unmanagedResources == null)
+				{
+					unmanagedResources = new ResourceSection();
+				}
+				unmanagedResources.AddVersionInfo(versionInfoData);
+			}
+
+			foreach (CustomAttributeBuilder cab in customAttributes)
+			{
+				// we intentionally don't filter out the version info (pseudo) custom attributes (to be compatible with .NET)
+				manifestModule.SetCustomAttribute(0x20000001, cab);
+			}
+
+			manifestModule.AddDeclarativeSecurity(0x20000001, declarativeSecurity);
+
+			foreach (Type type in typeForwarders)
+			{
+				manifestModule.AddTypeForwarder(type);
+			}
+
+			foreach (ResourceFile resfile in resourceFiles)
+			{
+				int fileToken = AddFile(manifestModule, resfile.FileName, 1 /*ContainsNoMetaData*/);
+				ManifestResourceTable.Record rec = new ManifestResourceTable.Record();
+				rec.Offset = 0;
+				rec.Flags = (int)resfile.Attributes;
+				rec.Name = manifestModule.Strings.Add(resfile.Name);
+				rec.Implementation = fileToken;
+				manifestModule.ManifestResource.AddRecord(rec);
+			}
+
+			int entryPointToken = 0;
+
+			foreach (ModuleBuilder moduleBuilder in modules)
+			{
+				moduleBuilder.FillAssemblyRefTable();
+				if (moduleBuilder != manifestModule)
+				{
+					int fileToken;
+					if (entryPoint != null && entryPoint.Module == moduleBuilder)
+					{
+						ModuleWriter.WriteModule(null, null, moduleBuilder, fileKind, portableExecutableKind, imageFileMachine, moduleBuilder.unmanagedResources, entryPoint.MetadataToken);
+						entryPointToken = fileToken = AddFile(manifestModule, moduleBuilder.fileName, 0 /*ContainsMetaData*/);
+					}
+					else
+					{
+						ModuleWriter.WriteModule(null, null, moduleBuilder, fileKind, portableExecutableKind, imageFileMachine, moduleBuilder.unmanagedResources, 0);
+						fileToken = AddFile(manifestModule, moduleBuilder.fileName, 0 /*ContainsMetaData*/);
+					}
+					moduleBuilder.ExportTypes(fileToken, manifestModule);
+				}
+			}
+
+			foreach (Module module in addedModules)
+			{
+				int fileToken = AddFile(manifestModule, module.FullyQualifiedName, 0 /*ContainsMetaData*/);
+				module.ExportTypes(fileToken, manifestModule);
+			}
+
+			if (entryPointToken == 0 && entryPoint != null)
+			{
+				entryPointToken = entryPoint.MetadataToken;
+			}
+
+			// finally, write the manifest module
+			ModuleWriter.WriteModule(keyPair, publicKey, manifestModule, fileKind, portableExecutableKind, imageFileMachine, unmanagedResources ?? manifestModule.unmanagedResources, entryPointToken);
+		}
+
+		private int AddFile(ModuleBuilder manifestModule, string fileName, int flags)
+		{
+			SHA1Managed hash = new SHA1Managed();
+			string fullPath = fileName;
+			if (dir != null)
+			{
+				fullPath = Path.Combine(dir, fileName);
+			}
+			using (FileStream fs = new FileStream(fullPath, FileMode.Open, FileAccess.Read))
+			{
+				using (CryptoStream cs = new CryptoStream(Stream.Null, hash, CryptoStreamMode.Write))
+				{
+					byte[] buf = new byte[8192];
+					ModuleWriter.HashChunk(fs, cs, buf, (int)fs.Length);
+				}
+			}
+			FileTable.Record file = new FileTable.Record();
+			file.Flags = flags;
+			file.Name = manifestModule.Strings.Add(Path.GetFileName(fileName));
+			file.HashValue = manifestModule.Blobs.Add(ByteBuffer.Wrap(hash.Hash));
+			return 0x26000000 + manifestModule.File.AddRecord(file);
+		}
+
+		public void AddResourceFile(string name, string fileName)
+		{
+			AddResourceFile(name, fileName, ResourceAttributes.Public);
+		}
+
+		public void AddResourceFile(string name, string fileName, ResourceAttributes attribs)
+		{
+			ResourceFile resfile = new ResourceFile();
+			resfile.Name = name;
+			resfile.FileName = fileName;
+			resfile.Attributes = attribs;
+			resourceFiles.Add(resfile);
+		}
+
+		public void DefineVersionInfoResource()
+		{
+			versionInfo = new VersionInfo();
+		}
+
+		public void DefineVersionInfoResource(string product, string productVersion, string company, string copyright, string trademark)
+		{
+			versionInfo = new VersionInfo();
+			versionInfo.product = product;
+			versionInfo.informationalVersion = productVersion;
+			versionInfo.company = company;
+			versionInfo.copyright = copyright;
+			versionInfo.trademark = trademark;
+		}
+
+		public void __DefineIconResource(byte[] iconFile)
+		{
+			unmanagedResources = new ResourceSection();
+			unmanagedResources.AddIcon(iconFile);
+		}
+
+		public void __DefineUnmanagedResource(byte[] resource)
+		{
+			// The standard .NET DefineUnmanagedResource(byte[]) is useless, because it embeds "resource" (as-is) as the .rsrc section,
+			// but it doesn't set the PE file Resource Directory entry to point to it. That's why we have a renamed version, which behaves
+			// like DefineUnmanagedResource(string).
+			unmanagedResources = new ResourceSection();
+			unmanagedResources.ExtractResources(resource);
+		}
+
+		public void DefineUnmanagedResource(string resourceFileName)
+		{
+			// This method reads the specified resource file (Win32 .res file) and converts it into the appropriate format and embeds it in the .rsrc section,
+			// also setting the Resource Directory entry.
+			__DefineUnmanagedResource(File.ReadAllBytes(resourceFileName));
+		}
+
+		public override Type[] GetTypes()
+		{
+			List<Type> list = new List<Type>();
+			foreach (ModuleBuilder module in modules)
+			{
+				module.GetTypesImpl(list);
+			}
+			foreach (Module module in addedModules)
+			{
+				module.GetTypesImpl(list);
+			}
+			return list.ToArray();
+		}
+
+		internal override Type GetTypeImpl(string typeName)
+		{
+			foreach (ModuleBuilder mb in modules)
+			{
+				Type type = mb.GetTypeImpl(typeName);
+				if (type != null)
+				{
+					return type;
+				}
+			}
+			foreach (Module module in addedModules)
+			{
+				Type type = module.GetTypeImpl(typeName);
+				if (type != null)
+				{
+					return type;
+				}
+			}
+			return null;
+		}
+
+		public override string ImageRuntimeVersion
+		{
+			get { return imageRuntimeVersion; }
+		}
+
+		public void __SetImageRuntimeVersion(string imageRuntimeVersion, int mdStreamVersion)
+		{
+			this.imageRuntimeVersion = imageRuntimeVersion;
+			this.mdStreamVersion = mdStreamVersion;
+		}
+
+		public override Module ManifestModule
+		{
+			get
+			{
+				if (pseudoManifestModule == null)
+				{
+					pseudoManifestModule = new ManifestModule(this);
+				}
+				return pseudoManifestModule;
+			}
+		}
+
+		public override MethodInfo EntryPoint
+		{
+			get { return entryPoint; }
+		}
+
+		public override AssemblyName[] GetReferencedAssemblies()
+		{
+			return Empty<AssemblyName>.Array;
+		}
+
+		public override Module[] GetLoadedModules(bool getResourceModules)
+		{
+			return GetModules(getResourceModules);
+		}
+
+		public override Module[] GetModules(bool getResourceModules)
+		{
+			List<Module> list = new List<Module>();
+			foreach (ModuleBuilder module in modules)
+			{
+				if (getResourceModules || !module.IsResource())
+				{
+					list.Add(module);
+				}
+			}
+			foreach (Module module in addedModules)
+			{
+				if (getResourceModules || !module.IsResource())
+				{
+					list.Add(module);
+				}
+			}
+			return list.ToArray();
+		}
+
+		public override Module GetModule(string name)
+		{
+			foreach (ModuleBuilder module in modules)
+			{
+				if (module.Name.Equals(name, StringComparison.InvariantCultureIgnoreCase))
+				{
+					return module;
+				}
+			}
+			foreach (Module module in addedModules)
+			{
+				if (module.Name.Equals(name, StringComparison.InvariantCultureIgnoreCase))
+				{
+					return module;
+				}
+			}
+			return null;
+		}
+
+		public Module __AddModule(RawModule module)
+		{
+			Module mod = module.ToModule(this);
+			addedModules.Add(mod);
+			return mod;
+		}
+
+		public override ManifestResourceInfo GetManifestResourceInfo(string resourceName)
+		{
+			throw new NotSupportedException();
+		}
+
+		public override string[] GetManifestResourceNames()
+		{
+			throw new NotSupportedException();
+		}
+
+		public override Stream GetManifestResourceStream(string resourceName)
+		{
+			throw new NotSupportedException();
+		}
+
+		internal override IList<CustomAttributeData> GetCustomAttributesData(Type attributeType)
+		{
+			List<CustomAttributeData> list = new List<CustomAttributeData>();
+			foreach (CustomAttributeBuilder cab in customAttributes)
+			{
+				if (attributeType == null || attributeType.IsAssignableFrom(cab.Constructor.DeclaringType))
+				{
+					list.Add(cab.ToData(this));
+				}
+			}
+			return list;
+		}
+	}
+
+	sealed class ManifestModule : Module
+	{
+		private readonly AssemblyBuilder assembly;
+		private readonly Guid guid = Guid.NewGuid();
+
+		internal ManifestModule(AssemblyBuilder assembly)
+			: base(assembly.universe)
+		{
+			this.assembly = assembly;
+		}
+
+		public override int MDStreamVersion
+		{
+			get { return assembly.mdStreamVersion; }
+		}
+
+		public override Assembly Assembly
+		{
+			get { return assembly; }
+		}
+
+		internal override Type GetTypeImpl(string typeName)
+		{
+			return null;
+		}
+
+		internal override void  GetTypesImpl(List<Type> list)
+		{
+		}
+
+		public override string FullyQualifiedName
+		{
+			get { return Path.Combine(assembly.dir, "RefEmit_InMemoryManifestModule"); }
+		}
+
+		public override string Name
+		{
+			get { return "<In Memory Module>"; }
+		}
+
+		public override Guid ModuleVersionId
+		{
+			get { return guid; }
+		}
+
+		public override Type ResolveType(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)
+		{
+			throw new ArgumentException();
+		}
+
+		public override MethodBase ResolveMethod(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)
+		{
+			throw new ArgumentException();
+		}
+
+		public override FieldInfo ResolveField(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)
+		{
+			throw new ArgumentException();
+		}
+
+		public override MemberInfo ResolveMember(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)
+		{
+			throw new ArgumentException();
+		}
+
+		public override string ResolveString(int metadataToken)
+		{
+			throw new ArgumentException();
+		}
+
+		public override Type[] __ResolveOptionalParameterTypes(int metadataToken)
+		{
+			throw new ArgumentException();
+		}
+
+		public override string ScopeName
+		{
+			get { return "RefEmit_InMemoryManifestModule"; }
+		}
+
+		public override AssemblyName[] __GetReferencedAssemblies()
+		{
+			throw new InvalidOperationException();
+		}
+
+		internal override Type GetModuleType()
+		{
+			throw new InvalidOperationException();
+		}
+
+		internal override IKVM.Reflection.Reader.ByteReader GetBlob(int blobIndex)
+		{
+			throw new InvalidOperationException();
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Emit/ConstructorBuilder.cs b/mcs/class/IKVM.Reflection/Emit/ConstructorBuilder.cs
new file mode 100644
index 0000000..9ffc918
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Emit/ConstructorBuilder.cs
@@ -0,0 +1,174 @@
+/*
+  Copyright (C) 2008 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+
+namespace IKVM.Reflection.Emit
+{
+	public sealed class ConstructorBuilder : ConstructorInfo
+	{
+		private readonly MethodBuilder methodBuilder;
+
+		internal ConstructorBuilder(MethodBuilder mb)
+		{
+			this.methodBuilder = mb;
+		}
+
+		public override bool Equals(object obj)
+		{
+			ConstructorBuilder other = obj as ConstructorBuilder;
+			return other != null && other.methodBuilder.Equals(methodBuilder);
+		}
+
+		public override int GetHashCode()
+		{
+			return methodBuilder.GetHashCode();
+		}
+
+		public ParameterBuilder DefineParameter(int position, ParameterAttributes attributes, string strParamName)
+		{
+			return methodBuilder.DefineParameter(position, attributes, strParamName);
+		}
+
+		public void SetCustomAttribute(CustomAttributeBuilder customBuilder)
+		{
+			methodBuilder.SetCustomAttribute(customBuilder);
+		}
+
+		public void SetCustomAttribute(ConstructorInfo con,	byte[] binaryAttribute)
+		{
+			methodBuilder.SetCustomAttribute(con, binaryAttribute);
+		}
+
+		public void __AddDeclarativeSecurity(CustomAttributeBuilder customBuilder)
+		{
+			methodBuilder.__AddDeclarativeSecurity(customBuilder);
+		}
+
+		public void AddDeclarativeSecurity(System.Security.Permissions.SecurityAction securityAction, System.Security.PermissionSet permissionSet)
+		{
+			methodBuilder.AddDeclarativeSecurity(securityAction, permissionSet);
+		}
+
+		public void SetImplementationFlags(MethodImplAttributes attributes)
+		{
+			methodBuilder.SetImplementationFlags(attributes);
+		}
+
+		public ILGenerator GetILGenerator()
+		{
+			return methodBuilder.GetILGenerator();
+		}
+
+		public ILGenerator GetILGenerator(int streamSize)
+		{
+			return methodBuilder.GetILGenerator(streamSize);
+		}
+
+		public override CallingConventions CallingConvention
+		{
+			get { return methodBuilder.CallingConvention; }
+		}
+
+		public override MethodAttributes Attributes
+		{
+			get { return methodBuilder.Attributes; }
+		}
+
+		public override MethodImplAttributes GetMethodImplementationFlags()
+		{
+			return methodBuilder.GetMethodImplementationFlags();
+		}
+
+		public Type ReturnType
+		{
+			get { return methodBuilder.ReturnType; }
+		}
+
+		internal override int ParameterCount
+		{
+			get { return methodBuilder.ParameterCount; }
+		}
+
+		public override Type DeclaringType
+		{
+			get { return methodBuilder.DeclaringType; }
+		}
+
+		public override string Name
+		{
+			get { return methodBuilder.Name; }
+		}
+
+		public override int MetadataToken
+		{
+			get { return methodBuilder.MetadataToken; }
+		}
+
+		public override Module Module
+		{
+			get { return methodBuilder.Module; }
+		}
+
+		public Module GetModule()
+		{
+			return methodBuilder.GetModule();
+		}
+
+		public MethodToken GetToken()
+		{
+			return methodBuilder.GetToken();
+		}
+
+		public override MethodBody GetMethodBody()
+		{
+			return methodBuilder.GetMethodBody();
+		}
+
+		public bool InitLocals
+		{
+			get { return methodBuilder.InitLocals; }
+			set { methodBuilder.InitLocals = value; }
+		}
+
+		internal override MethodInfo GetMethodInfo()
+		{
+			return methodBuilder;
+		}
+
+		internal override MethodInfo GetMethodOnTypeDefinition()
+		{
+			return methodBuilder;
+		}
+
+		internal override MethodSignature MethodSignature
+		{
+			get { return methodBuilder.MethodSignature; }
+		}
+
+		internal override int ImportTo(ModuleBuilder module)
+		{
+			return module.ImportMember(methodBuilder);
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Emit/CustomAttributeBuilder.cs b/mcs/class/IKVM.Reflection/Emit/CustomAttributeBuilder.cs
new file mode 100644
index 0000000..e4fcff2
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Emit/CustomAttributeBuilder.cs
@@ -0,0 +1,492 @@
+/*
+  Copyright (C) 2008 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.IO;
+using System.Collections.Generic;
+using System.Diagnostics;
+using IKVM.Reflection.Writer;
+
+namespace IKVM.Reflection.Emit
+{
+	public sealed class CustomAttributeBuilder
+	{
+		private readonly ConstructorInfo con;
+		private readonly byte[] blob;
+		private readonly object[] constructorArgs;
+		private readonly PropertyInfo[] namedProperties;
+		private readonly object[] propertyValues;
+		private readonly FieldInfo[] namedFields;
+		private readonly object[] fieldValues;
+
+		internal CustomAttributeBuilder(ConstructorInfo con, byte[] blob)
+		{
+			this.con = con;
+			this.blob = blob;
+		}
+
+		public CustomAttributeBuilder(ConstructorInfo con, object[] constructorArgs)
+			: this(con, constructorArgs, null, null, null,null)
+		{
+		}
+
+		public CustomAttributeBuilder(ConstructorInfo con, object[] constructorArgs, FieldInfo[] namedFields, object[] fieldValues)
+			: this(con, constructorArgs, null, null, namedFields, fieldValues)
+		{
+		}
+
+		public CustomAttributeBuilder(ConstructorInfo con, object[] constructorArgs, PropertyInfo[] namedProperties, object[] propertyValues)
+			: this(con, constructorArgs, namedProperties, propertyValues, null, null)
+		{
+		}
+
+		public CustomAttributeBuilder(ConstructorInfo con, object[] constructorArgs, PropertyInfo[] namedProperties, object[] propertyValues, FieldInfo[] namedFields, object[] fieldValues)
+		{
+			this.con = con;
+			this.constructorArgs = constructorArgs;
+			this.namedProperties = namedProperties;
+			this.propertyValues = propertyValues;
+			this.namedFields = namedFields;
+			this.fieldValues = fieldValues;
+		}
+
+		private sealed class BlobWriter
+		{
+			private readonly ModuleBuilder moduleBuilder;
+			private readonly CustomAttributeBuilder cab;
+			private readonly ByteBuffer bb;
+
+			internal BlobWriter(ModuleBuilder moduleBuilder, CustomAttributeBuilder cab, ByteBuffer bb)
+			{
+				this.moduleBuilder = moduleBuilder;
+				this.cab = cab;
+				this.bb = bb;
+			}
+
+			internal void WriteCustomAttributeBlob()
+			{
+				// prolog
+				WriteUInt16(1);
+				ParameterInfo[] pi = cab.con.GetParameters();
+				for (int i = 0; i < pi.Length; i++)
+				{
+					WriteFixedArg(pi[i].ParameterType, cab.constructorArgs[i]);
+				}
+				WriteNamedArguments(false);
+			}
+
+			internal void WriteNamedArguments(bool forDeclSecurity)
+			{
+				// NumNamed
+				int named = 0;
+				if (cab.namedFields != null)
+				{
+					named += cab.namedFields.Length;
+				}
+				if (cab.namedProperties != null)
+				{
+					named += cab.namedProperties.Length;
+				}
+				if (forDeclSecurity)
+				{
+					WritePackedLen(named);
+				}
+				else
+				{
+					WriteUInt16((ushort)named);
+				}
+				if (cab.namedFields != null)
+				{
+					for (int i = 0; i < cab.namedFields.Length; i++)
+					{
+						WriteNamedArg(0x53, cab.namedFields[i].FieldType, cab.namedFields[i].Name, cab.fieldValues[i]);
+					}
+				}
+				if (cab.namedProperties != null)
+				{
+					for (int i = 0; i < cab.namedProperties.Length; i++)
+					{
+						WriteNamedArg(0x54, cab.namedProperties[i].PropertyType, cab.namedProperties[i].Name, cab.propertyValues[i]);
+					}
+				}
+			}
+
+			private void WriteNamedArg(byte fieldOrProperty, Type type, string name, object value)
+			{
+				WriteByte(fieldOrProperty);
+				WriteFieldOrPropType(type);
+				WriteString(name);
+				WriteFixedArg(type, value);
+			}
+
+			private void WriteByte(byte value)
+			{
+				bb.Write(value);
+			}
+
+			private void WriteUInt16(ushort value)
+			{
+				bb.Write(value);
+			}
+
+			private void WriteInt32(int value)
+			{
+				bb.Write(value);
+			}
+
+			private void WriteFixedArg(Type type, object value)
+			{
+				Universe u = moduleBuilder.universe;
+				if (type == u.System_String)
+				{
+					WriteString((string)value);
+				}
+				else if (type == u.System_Type)
+				{
+					WriteTypeName((Type)value);
+				}
+				else if (type == u.System_Object)
+				{
+					if (value == null)
+					{
+						type = u.System_String;
+					}
+					else if (value is Type)
+					{
+						// value.GetType() would return a subclass of Type, but we don't want to deal with that
+						type = u.System_Type;
+					}
+					else
+					{
+						type = u.Import(value.GetType());
+					}
+					WriteFieldOrPropType(type);
+					WriteFixedArg(type, value);
+				}
+				else if (type.IsArray)
+				{
+					if (value == null)
+					{
+						WriteInt32(-1);
+					}
+					else
+					{
+						Array array = (Array)value;
+						Type elemType = type.GetElementType();
+						WriteInt32(array.Length);
+						foreach (object val in array)
+						{
+							WriteFixedArg(elemType, val);
+						}
+					}
+				}
+				else if (type.IsEnum)
+				{
+					WriteFixedArg(type.GetEnumUnderlyingTypeImpl(), value);
+				}
+				else
+				{
+					switch (Type.GetTypeCode(type))
+					{
+						case TypeCode.Boolean:
+							WriteByte((bool)value ? (byte)1 : (byte)0);
+							break;
+						case TypeCode.Char:
+							WriteUInt16((char)value);
+							break;
+						case TypeCode.SByte:
+							WriteByte((byte)(sbyte)value);
+							break;
+						case TypeCode.Byte:
+							WriteByte((byte)value);
+							break;
+						case TypeCode.Int16:
+							WriteUInt16((ushort)(short)value);
+							break;
+						case TypeCode.UInt16:
+							WriteUInt16((ushort)value);
+							break;
+						case TypeCode.Int32:
+							WriteInt32((int)value);
+							break;
+						case TypeCode.UInt32:
+							WriteInt32((int)(uint)value);
+							break;
+						case TypeCode.Int64:
+							WriteInt64((long)value);
+							break;
+						case TypeCode.UInt64:
+							WriteInt64((long)(ulong)value);
+							break;
+						case TypeCode.Single:
+							WriteSingle((float)value);
+							break;
+						case TypeCode.Double:
+							WriteDouble((double)value);
+							break;
+						default:
+							throw new ArgumentException();
+					}
+				}
+			}
+
+			private void WriteInt64(long value)
+			{
+				bb.Write(value);
+			}
+
+			private void WriteSingle(float value)
+			{
+				bb.Write(value);
+			}
+
+			private void WriteDouble(double value)
+			{
+				bb.Write(value);
+			}
+
+			private void WriteTypeName(Type type)
+			{
+				string name = null;
+				if (type != null)
+				{
+					if (type.Assembly == moduleBuilder.Assembly)
+					{
+						name = type.FullName;
+					}
+					else
+					{
+						name = type.AssemblyQualifiedName;
+					}
+				}
+				WriteString(name);
+			}
+
+			private void WriteString(string val)
+			{
+				bb.Write(val);
+			}
+
+			private void WritePackedLen(int len)
+			{
+				bb.WriteCompressedInt(len);
+			}
+
+			private void WriteFieldOrPropType(Type type)
+			{
+				Universe u = type.Module.universe;
+				if (type == u.System_Type)
+				{
+					WriteByte(0x50);
+				}
+				else if (type == u.System_Object)
+				{
+					WriteByte(0x51);
+				}
+				else if (type.IsArray)
+				{
+					WriteByte(0x1D);
+					WriteFieldOrPropType(type.GetElementType());
+				}
+				else if (type.IsEnum)
+				{
+					WriteByte(0x55);
+					WriteTypeName(type);
+				}
+				else
+				{
+					switch (Type.GetTypeCode(type))
+					{
+						case TypeCode.Boolean:
+							WriteByte(0x02);
+							break;
+						case TypeCode.Char:
+							WriteByte(0x03);
+							break;
+						case TypeCode.SByte:
+							WriteByte(0x04);
+							break;
+						case TypeCode.Byte:
+							WriteByte(0x05);
+							break;
+						case TypeCode.Int16:
+							WriteByte(0x06);
+							break;
+						case TypeCode.UInt16:
+							WriteByte(0x07);
+							break;
+						case TypeCode.Int32:
+							WriteByte(0x08);
+							break;
+						case TypeCode.UInt32:
+							WriteByte(0x09);
+							break;
+						case TypeCode.Int64:
+							WriteByte(0x0A);
+							break;
+						case TypeCode.UInt64:
+							WriteByte(0x0B);
+							break;
+						case TypeCode.Single:
+							WriteByte(0x0C);
+							break;
+						case TypeCode.Double:
+							WriteByte(0x0D);
+							break;
+						case TypeCode.String:
+							WriteByte(0x0E);
+							break;
+						default:
+							throw new ArgumentException();
+					}
+				}
+			}
+		}
+
+		internal bool IsPseudoCustomAttribute
+		{
+			get { return con.DeclaringType.IsPseudoCustomAttribute; }
+		}
+
+		internal ConstructorInfo Constructor
+		{
+			get { return con; }
+		}
+
+		internal int WriteBlob(ModuleBuilder moduleBuilder)
+		{
+			ByteBuffer bb = new ByteBuffer(100);
+			if (blob != null)
+			{
+				bb.Write(blob);
+			}
+			else
+			{
+				BlobWriter bw = new BlobWriter(moduleBuilder, this, bb);
+				bw.WriteCustomAttributeBlob();
+			}
+			return moduleBuilder.Blobs.Add(bb);
+		}
+
+		internal object GetConstructorArgument(int pos)
+		{
+			return constructorArgs[pos];
+		}
+
+		internal int ConstructorArgumentCount
+		{
+			get { return constructorArgs == null ? 0 : constructorArgs.Length; }
+		}
+
+		internal T? GetFieldValue<T>(string name) where T : struct
+		{
+			object val = GetFieldValue(name);
+			if (val is T)
+			{
+				return (T)val;
+			}
+			else if (val != null)
+			{
+				if (typeof(T).IsEnum)
+				{
+					Debug.Assert(Enum.GetUnderlyingType(typeof(T)) == val.GetType());
+					return (T)Enum.ToObject(typeof(T), val);
+				}
+				else
+				{
+					Debug.Assert(Enum.GetUnderlyingType(val.GetType()) == typeof(T));
+					return (T)Convert.ChangeType(val, typeof(T));
+				}
+			}
+			else
+			{
+				return null;
+			}
+		}
+
+		internal object GetFieldValue(string name)
+		{
+			if (namedFields != null)
+			{
+				for (int i = 0; i < namedFields.Length; i++)
+				{
+					if (namedFields[i].Name == name)
+					{
+						return fieldValues[i];
+					}
+				}
+			}
+			return null;
+		}
+
+		internal void WriteNamedArgumentsForDeclSecurity(ModuleBuilder moduleBuilder, ByteBuffer bb)
+		{
+			BlobWriter bw = new BlobWriter(moduleBuilder, this, bb);
+			bw.WriteNamedArguments(true);
+		}
+
+		internal CustomAttributeData ToData(Assembly asm)
+		{
+			if (blob != null)
+			{
+				return new CustomAttributeData(asm, con, new IKVM.Reflection.Reader.ByteReader(blob, 0, blob.Length));
+			}
+			else
+			{
+				List<CustomAttributeNamedArgument> namedArgs = new List<CustomAttributeNamedArgument>();
+				if (namedProperties != null)
+				{
+					for (int i = 0; i < namedProperties.Length; i++)
+					{
+						namedArgs.Add(new CustomAttributeNamedArgument(namedProperties[i], new CustomAttributeTypedArgument(namedProperties[i].PropertyType, propertyValues[i])));
+					}
+				}
+				if (namedFields != null)
+				{
+					for (int i = 0; i < namedFields.Length; i++)
+					{
+						namedArgs.Add(new CustomAttributeNamedArgument(namedFields[i], new CustomAttributeTypedArgument(namedFields[i].FieldType, fieldValues[i])));
+					}
+				}
+				return new CustomAttributeData(con, constructorArgs, namedArgs);
+			}
+		}
+
+		internal bool HasBlob
+		{
+			get { return blob != null; }
+		}
+
+		internal CustomAttributeBuilder DecodeBlob(Assembly asm)
+		{
+			if (blob == null)
+			{
+				return this;
+			}
+			else
+			{
+				return ToData(asm).__ToBuilder();
+			}
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Emit/EnumBuilder.cs b/mcs/class/IKVM.Reflection/Emit/EnumBuilder.cs
new file mode 100644
index 0000000..5ad9686
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Emit/EnumBuilder.cs
@@ -0,0 +1,98 @@
+/*
+  Copyright (C) 2010 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace IKVM.Reflection.Emit
+{
+	public sealed class EnumBuilder : Type
+	{
+		private readonly TypeBuilder typeBuilder;
+		private readonly FieldBuilder fieldBuilder;
+
+		internal EnumBuilder(TypeBuilder typeBuilder, FieldBuilder fieldBuilder)
+		{
+			this.typeBuilder = typeBuilder;
+			this.fieldBuilder = fieldBuilder;
+		}
+
+		public override Type UnderlyingSystemType
+		{
+			get { return typeBuilder.UnderlyingSystemType; }
+		}
+
+		public override Type BaseType
+		{
+			get { return typeBuilder.BaseType; }
+		}
+
+		public override TypeAttributes Attributes
+		{
+			get { return typeBuilder.Attributes; }
+		}
+
+		public override Module Module
+		{
+			get { return typeBuilder.Module; }
+		}
+
+		public FieldBuilder DefineLiteral(string literalName, object literalValue)
+		{
+			FieldBuilder fb = typeBuilder.DefineField(literalName, typeBuilder, FieldAttributes.Public | FieldAttributes.Static | FieldAttributes.Literal);
+			fb.SetConstant(literalValue);
+			return fb;
+		}
+
+		public Type CreateType()
+		{
+			return typeBuilder.CreateType();
+		}
+
+		public TypeToken TypeToken
+		{
+			get { return typeBuilder.TypeToken; }
+		}
+
+		public FieldBuilder UnderlyingField
+		{
+			get { return fieldBuilder; }
+		}
+
+		public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute)
+		{
+			typeBuilder.SetCustomAttribute(con, binaryAttribute);
+		}
+
+		public void SetCustomAttribute(CustomAttributeBuilder customBuilder)
+		{
+			typeBuilder.SetCustomAttribute(customBuilder);
+		}
+
+		public override Type GetEnumUnderlyingType()
+		{
+			return fieldBuilder.FieldType;
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Emit/Enums.cs b/mcs/class/IKVM.Reflection/Emit/Enums.cs
new file mode 100644
index 0000000..7c85a55
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Emit/Enums.cs
@@ -0,0 +1,129 @@
+/*
+  Copyright (C) 2008 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+
+namespace IKVM.Reflection.Emit
+{
+	public enum AssemblyBuilderAccess
+	{
+		Save = 2,
+		ReflectionOnly = 6,
+	}
+
+	public enum OpCodeType
+	{
+		Annotation = 0,
+		Macro = 1,
+		Nternal = 2,
+		Objmodel = 3,
+		Prefix = 4,
+		Primitive = 5,
+	}
+	
+	public enum OperandType
+	{
+		InlineBrTarget = 0,
+		InlineField = 1,
+		InlineI = 2,
+		InlineI8 = 3,
+		InlineMethod = 4,
+		InlineNone = 5,
+		InlinePhi = 6,
+		InlineR = 7,
+		InlineSig = 9,
+		InlineString = 10,
+		InlineSwitch = 11,
+		InlineTok = 12,
+		InlineType = 13,
+		InlineVar = 14,
+		ShortInlineBrTarget = 15,
+		ShortInlineI = 16,
+		ShortInlineR = 17,
+		ShortInlineVar = 18,
+	}
+
+	public enum FlowControl
+	{
+		Branch = 0,
+		Break = 1,
+		Call = 2,
+		Cond_Branch = 3,
+		Meta = 4,
+		Next = 5,
+		Return = 7,
+		Throw = 8,
+	}
+
+	public enum PackingSize
+	{
+		Unspecified = 0,
+		Size1 = 1,
+		Size2 = 2,
+		Size4 = 4,
+		Size8 = 8,
+		Size16 = 16,
+		Size32 = 32,
+		Size64 = 64,
+		Size128 = 128,
+	}
+
+	public enum PEFileKinds
+	{
+		Dll = 1,
+		ConsoleApplication = 2,
+		WindowApplication = 3,
+	}
+
+	public enum StackBehaviour
+	{
+		Pop0 = 0,
+		Pop1 = 1,
+		Pop1_pop1 = 2,
+		Popi = 3,
+		Popi_pop1 = 4,
+		Popi_popi = 5,
+		Popi_popi8 = 6,
+		Popi_popi_popi = 7,
+		Popi_popr4 = 8,
+		Popi_popr8 = 9,
+		Popref = 10,
+		Popref_pop1 = 11,
+		Popref_popi = 12,
+		Popref_popi_popi = 13,
+		Popref_popi_popi8 = 14,
+		Popref_popi_popr4 = 15,
+		Popref_popi_popr8 = 16,
+		Popref_popi_popref = 17,
+		Push0 = 18,
+		Push1 = 19,
+		Push1_push1 = 20,
+		Pushi = 21,
+		Pushi8 = 22,
+		Pushr4 = 23,
+		Pushr8 = 24,
+		Pushref = 25,
+		Varpop = 26,
+		Varpush = 27,
+		Popref_popi_pop1 = 28,
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Emit/EventBuilder.cs b/mcs/class/IKVM.Reflection/Emit/EventBuilder.cs
new file mode 100644
index 0000000..be29644
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Emit/EventBuilder.cs
@@ -0,0 +1,250 @@
+/*
+  Copyright (C) 2009 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Collections.Generic;
+using System.Runtime.CompilerServices;
+using IKVM.Reflection.Metadata;
+using IKVM.Reflection.Writer;
+
+namespace IKVM.Reflection.Emit
+{
+	public sealed class EventBuilder : EventInfo
+	{
+		private readonly TypeBuilder typeBuilder;
+		private readonly string name;
+		private EventAttributes attributes;
+		private readonly int eventtype;
+		private MethodBuilder addOnMethod;
+		private MethodBuilder removeOnMethod;
+		private MethodBuilder fireMethod;
+		private List<MethodBuilder> otherMethods;
+		private int lazyPseudoToken;
+
+		internal EventBuilder(TypeBuilder typeBuilder, string name, EventAttributes attributes, Type eventtype)
+		{
+			this.typeBuilder = typeBuilder;
+			this.name = name;
+			this.attributes = attributes;
+			this.eventtype = typeBuilder.ModuleBuilder.GetTypeTokenForMemberRef(eventtype);
+		}
+
+		public void SetAddOnMethod(MethodBuilder mdBuilder)
+		{
+			addOnMethod = mdBuilder;
+		}
+
+		public void SetRemoveOnMethod(MethodBuilder mdBuilder)
+		{
+			removeOnMethod = mdBuilder;
+		}
+
+		public void SetRaiseMethod(MethodBuilder mdBuilder)
+		{
+			fireMethod = mdBuilder;
+		}
+
+		public void AddOtherMethod(MethodBuilder mdBuilder)
+		{
+			if (otherMethods == null)
+			{
+				otherMethods = new List<MethodBuilder>();
+			}
+			otherMethods.Add(mdBuilder);
+		}
+
+		public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute)
+		{
+			SetCustomAttribute(new CustomAttributeBuilder(con, binaryAttribute));
+		}
+
+		public void SetCustomAttribute(CustomAttributeBuilder customBuilder)
+		{
+			Universe u = typeBuilder.ModuleBuilder.universe;
+			if (customBuilder.Constructor.DeclaringType == u.System_Runtime_CompilerServices_SpecialNameAttribute)
+			{
+				attributes |= EventAttributes.SpecialName;
+			}
+			else
+			{
+				if (lazyPseudoToken == 0)
+				{
+					lazyPseudoToken = typeBuilder.ModuleBuilder.AllocPseudoToken();
+				}
+				typeBuilder.ModuleBuilder.SetCustomAttribute(lazyPseudoToken, customBuilder);
+			}
+		}
+
+		public override EventAttributes Attributes
+		{
+			get { return attributes; }
+		}
+
+		public override MethodInfo GetAddMethod(bool nonPublic)
+		{
+			return nonPublic || (addOnMethod != null && addOnMethod.IsPublic) ? addOnMethod : null;
+		}
+
+		public override MethodInfo GetRemoveMethod(bool nonPublic)
+		{
+			return nonPublic || (removeOnMethod != null && removeOnMethod.IsPublic) ? removeOnMethod : null;
+		}
+
+		public override MethodInfo GetRaiseMethod(bool nonPublic)
+		{
+			return nonPublic || (fireMethod != null && fireMethod.IsPublic) ? fireMethod : null;
+		}
+
+		public override MethodInfo[] GetOtherMethods(bool nonPublic)
+		{
+			List<MethodInfo> list = new List<MethodInfo>();
+			if (otherMethods != null)
+			{
+				foreach (MethodInfo method in otherMethods)
+				{
+					if (nonPublic || method.IsPublic)
+					{
+						list.Add(method);
+					}
+				}
+			}
+			return list.ToArray();
+		}
+
+		public override Type DeclaringType
+		{
+			get { return typeBuilder; }
+		}
+
+		public override string Name
+		{
+			get { return name; }
+		}
+
+		public override Module Module
+		{
+			get { return typeBuilder.ModuleBuilder; }
+		}
+
+		public EventToken GetEventToken()
+		{
+			if (lazyPseudoToken == 0)
+			{
+				lazyPseudoToken = typeBuilder.ModuleBuilder.AllocPseudoToken();
+			}
+			return new EventToken(lazyPseudoToken);
+		}
+
+		public override Type EventHandlerType
+		{
+			get { return typeBuilder.ModuleBuilder.ResolveType(eventtype); }
+		}
+
+		internal void Bake()
+		{
+			EventTable.Record rec = new EventTable.Record();
+			rec.EventFlags = (short)attributes;
+			rec.Name = typeBuilder.ModuleBuilder.Strings.Add(name);
+			rec.EventType = eventtype;
+			int token = 0x14000000 | typeBuilder.ModuleBuilder.Event.AddRecord(rec);
+
+			if (lazyPseudoToken != 0)
+			{
+				typeBuilder.ModuleBuilder.RegisterTokenFixup(lazyPseudoToken, token);
+			}
+
+			if (addOnMethod != null)
+			{
+				AddMethodSemantics(MethodSemanticsTable.AddOn, addOnMethod.MetadataToken, token);
+			}
+			if (removeOnMethod != null)
+			{
+				AddMethodSemantics(MethodSemanticsTable.RemoveOn, removeOnMethod.MetadataToken, token);
+			}
+			if (fireMethod != null)
+			{
+				AddMethodSemantics(MethodSemanticsTable.Fire, fireMethod.MetadataToken, token);
+			}
+			if (otherMethods != null)
+			{
+				foreach (MethodBuilder method in otherMethods)
+				{
+					AddMethodSemantics(MethodSemanticsTable.Other, method.MetadataToken, token);
+				}
+			}
+		}
+
+		private void AddMethodSemantics(short semantics, int methodToken, int propertyToken)
+		{
+			MethodSemanticsTable.Record rec = new MethodSemanticsTable.Record();
+			rec.Semantics = semantics;
+			rec.Method = methodToken;
+			rec.Association = propertyToken;
+			typeBuilder.ModuleBuilder.MethodSemantics.AddRecord(rec);
+		}
+
+		internal override bool IsPublic
+		{
+			get
+			{
+				if ((addOnMethod != null && addOnMethod.IsPublic) || (removeOnMethod != null && removeOnMethod.IsPublic) || (fireMethod != null && fireMethod.IsPublic))
+				{
+					return true;
+				}
+				if (otherMethods != null)
+				{
+					foreach (MethodBuilder method in otherMethods)
+					{
+						if (method.IsPublic)
+						{
+							return true;
+						}
+					}
+				}
+				return false;
+			}
+		}
+
+		internal override bool IsStatic
+		{
+			get
+			{
+				if ((addOnMethod != null && addOnMethod.IsStatic) || (removeOnMethod != null && removeOnMethod.IsStatic) || (fireMethod != null && fireMethod.IsStatic))
+				{
+					return true;
+				}
+				if (otherMethods != null)
+				{
+					foreach (MethodBuilder method in otherMethods)
+					{
+						if (method.IsStatic)
+						{
+							return true;
+						}
+					}
+				}
+				return false;
+			}
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Emit/FieldBuilder.cs b/mcs/class/IKVM.Reflection/Emit/FieldBuilder.cs
new file mode 100644
index 0000000..4316117
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Emit/FieldBuilder.cs
@@ -0,0 +1,184 @@
+/*
+  Copyright (C) 2008 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Runtime.CompilerServices;
+using IKVM.Reflection.Metadata;
+using IKVM.Reflection.Writer;
+
+namespace IKVM.Reflection.Emit
+{
+	public sealed class FieldBuilder : FieldInfo
+	{
+		private readonly TypeBuilder typeBuilder;
+		private readonly string name;
+		private readonly int pseudoToken;
+		private FieldAttributes attribs;
+		private readonly int nameIndex;
+		private readonly int signature;
+		private readonly FieldSignature fieldSig;
+
+		internal FieldBuilder(TypeBuilder type, string name, Type fieldType, Type[] requiredCustomModifiers, Type[] optionalCustomModifiers, FieldAttributes attribs)
+		{
+			this.typeBuilder = type;
+			this.name = name;
+			this.pseudoToken = type.ModuleBuilder.AllocPseudoToken();
+			this.nameIndex = type.ModuleBuilder.Strings.Add(name);
+			this.fieldSig = FieldSignature.Create(fieldType, optionalCustomModifiers, requiredCustomModifiers);
+			ByteBuffer sig = new ByteBuffer(5);
+			fieldSig.WriteSig(this.typeBuilder.ModuleBuilder, sig);
+			this.signature = this.typeBuilder.ModuleBuilder.Blobs.Add(sig);
+			this.attribs = attribs;
+			this.typeBuilder.ModuleBuilder.Field.AddVirtualRecord();
+		}
+
+		public void SetConstant(object defaultValue)
+		{
+			attribs |= FieldAttributes.HasDefault;
+			typeBuilder.ModuleBuilder.AddConstant(pseudoToken, defaultValue);
+		}
+
+		public override object GetRawConstantValue()
+		{
+			return typeBuilder.Module.Constant.GetRawConstantValue(typeBuilder.Module, this.MetadataToken);
+		}
+
+		public void __SetDataAndRVA(byte[] data)
+		{
+			attribs |= FieldAttributes.HasFieldRVA;
+			FieldRVATable.Record rec = new FieldRVATable.Record();
+			rec.RVA = typeBuilder.ModuleBuilder.initializedData.Position;
+			rec.Field = pseudoToken;
+			typeBuilder.ModuleBuilder.FieldRVA.AddRecord(rec);
+			typeBuilder.ModuleBuilder.initializedData.Write(data);
+		}
+
+		public override void __GetDataFromRVA(byte[] data, int offset, int length)
+		{
+			throw new NotImplementedException();
+		}
+
+		public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute)
+		{
+			SetCustomAttribute(new CustomAttributeBuilder(con, binaryAttribute));
+		}
+
+		public void SetCustomAttribute(CustomAttributeBuilder customBuilder)
+		{
+			Universe u = this.Module.universe;
+			if (customBuilder.Constructor.DeclaringType == u.System_Runtime_InteropServices_FieldOffsetAttribute)
+			{
+				customBuilder = customBuilder.DecodeBlob(this.Module.Assembly);
+				SetOffset((int)customBuilder.GetConstructorArgument(0));
+			}
+			else if (customBuilder.Constructor.DeclaringType == u.System_Runtime_InteropServices_MarshalAsAttribute)
+			{
+				MarshalSpec.SetMarshalAsAttribute(typeBuilder.ModuleBuilder, pseudoToken, customBuilder);
+				attribs |= FieldAttributes.HasFieldMarshal;
+			}
+			else if (customBuilder.Constructor.DeclaringType == u.System_NonSerializedAttribute)
+			{
+				attribs |= FieldAttributes.NotSerialized;
+			}
+			else if (customBuilder.Constructor.DeclaringType == u.System_Runtime_CompilerServices_SpecialNameAttribute)
+			{
+				attribs |= FieldAttributes.SpecialName;
+			}
+			else
+			{
+				typeBuilder.ModuleBuilder.SetCustomAttribute(pseudoToken, customBuilder);
+			}
+		}
+
+		public void SetOffset(int iOffset)
+		{
+			FieldLayoutTable.Record rec = new FieldLayoutTable.Record();
+			rec.Offset = iOffset;
+			rec.Field = pseudoToken;
+			typeBuilder.ModuleBuilder.FieldLayout.AddRecord(rec);
+		}
+
+		public override FieldAttributes Attributes
+		{
+			get { return attribs; }
+		}
+
+		public override Type DeclaringType
+		{
+			get { return typeBuilder.IsModulePseudoType ? null : typeBuilder; }
+		}
+
+		public override string Name
+		{
+			get { return name; }
+		}
+
+		public override int MetadataToken
+		{
+			get { return pseudoToken; }
+		}
+
+		public override Module Module
+		{
+			get { return typeBuilder.Module; }
+		}
+
+		public FieldToken GetToken()
+		{
+			return new FieldToken(pseudoToken);
+		}
+
+		internal void WriteFieldRecords(MetadataWriter mw)
+		{
+			mw.Write((short)attribs);
+			mw.WriteStringIndex(nameIndex);
+			mw.WriteBlobIndex(signature);
+		}
+
+		internal void FixupToken(int token)
+		{
+			typeBuilder.ModuleBuilder.RegisterTokenFixup(this.pseudoToken, token);
+		}
+
+		internal override FieldSignature FieldSignature
+		{
+			get { return fieldSig; }
+		}
+
+		internal override int ImportTo(ModuleBuilder other)
+		{
+			if (typeBuilder.IsGenericTypeDefinition)
+			{
+				return other.ImportMember(TypeBuilder.GetField(typeBuilder, this));
+			}
+			else if (other == typeBuilder.ModuleBuilder)
+			{
+				return pseudoToken;
+			}
+			else
+			{
+				return other.ImportMethodOrField(typeBuilder, name, fieldSig);
+			}
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Emit/ILGenerator.cs b/mcs/class/IKVM.Reflection/Emit/ILGenerator.cs
new file mode 100644
index 0000000..0f086b2
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Emit/ILGenerator.cs
@@ -0,0 +1,1144 @@
+/*
+  Copyright (C) 2008-2010 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Runtime.InteropServices;
+using System.Collections.Generic;
+using System.Diagnostics.SymbolStore;
+using System.Diagnostics;
+using IKVM.Reflection.Metadata;
+using IKVM.Reflection.Writer;
+
+namespace IKVM.Reflection.Emit
+{
+	public struct Label
+	{
+		// 1-based here, to make sure that an uninitialized Label isn't valid
+		private readonly int index1;
+
+		internal Label(int index)
+		{
+			this.index1 = index + 1;
+		}
+
+		internal int Index
+		{
+			get { return index1 - 1; }
+		}
+
+		public bool Equals(Label other)
+		{
+			return other.index1 == index1;
+		}
+
+		public override bool Equals(object obj)
+		{
+			return this == obj as Label?;
+		}
+
+		public override int GetHashCode()
+		{
+			return index1;
+		}
+
+		public static bool operator ==(Label arg1, Label arg2)
+		{
+			return arg1.index1 == arg2.index1;
+		}
+
+		public static bool operator !=(Label arg1, Label arg2)
+		{
+			return !(arg1 == arg2);
+		}
+	}
+
+	public sealed class LocalBuilder
+	{
+		private readonly Type localType;
+		private readonly int index;
+		private readonly bool pinned;
+		internal string name;
+		internal int startOffset;
+		internal int endOffset;
+
+		internal LocalBuilder(Type localType, int index, bool pinned)
+		{
+			this.localType = localType;
+			this.index = index;
+			this.pinned = pinned;
+		}
+
+		public void SetLocalSymInfo(string name)
+		{
+			this.name = name;
+		}
+
+		public void SetLocalSymInfo(string name, int startOffset, int endOffset)
+		{
+			this.name = name;
+			this.startOffset = startOffset;
+			this.endOffset = endOffset;
+		}
+
+		public Type LocalType
+		{
+			get { return localType; }
+		}
+
+		public int LocalIndex
+		{
+			get { return index; }
+		}
+
+		public bool IsPinned
+		{
+			get { return pinned; }
+		}
+	}
+
+	public sealed class ILGenerator
+	{
+		private static readonly Type FAULT = new BakedType(null); // the type we use here doesn't matter, as long as it can never be used as a real exception type
+		private readonly ModuleBuilder moduleBuilder;
+		private readonly ByteBuffer code;
+		private readonly List<LocalBuilder> locals = new List<LocalBuilder>();
+		private readonly List<int> tokenFixups = new List<int>();
+		private readonly List<int> labels = new List<int>();
+		private readonly List<int> labelStackHeight = new List<int>();
+		private readonly List<LabelFixup> labelFixups = new List<LabelFixup>();
+		private readonly List<SequencePoint> sequencePoints = new List<SequencePoint>();
+		private readonly List<ExceptionBlock> exceptions = new List<ExceptionBlock>();
+		private readonly Stack<ExceptionBlock> exceptionStack = new Stack<ExceptionBlock>();
+		private ushort maxStack;
+		private int stackHeight;
+		private Scope scope;
+		private byte exceptionBlockAssistanceMode = EBAM_COMPAT;
+		private const byte EBAM_COMPAT = 0;
+		private const byte EBAM_DISABLE = 1;
+		private const byte EBAM_CLEVER = 2;
+
+		private struct LabelFixup
+		{
+			internal int label;
+			internal int offset;
+		}
+
+		private sealed class ExceptionBlock : IComparer<ExceptionBlock>
+		{
+			internal readonly int ordinal;
+			internal Label labelEnd;
+			internal int tryOffset;
+			internal int tryLength;
+			internal int handlerOffset;
+			internal int handlerLength;
+			internal Type exceptionType;	// null = finally block or handler with filter, FAULT = fault block
+			internal int filterOffset;
+
+			internal ExceptionBlock(int ordinal)
+			{
+				this.ordinal = ordinal;
+			}
+
+			int IComparer<ExceptionBlock>.Compare(ExceptionBlock x, ExceptionBlock y)
+			{
+				// Mono's sort insists on doing unnecessary comparisons
+				if (x == y)
+				{
+					return 0;
+				}
+				if (x.tryOffset >= y.handlerOffset && x.tryOffset + x.tryLength <= y.handlerOffset + y.handlerLength)
+				{
+					return -1;
+				}
+				if (y.tryOffset >= x.handlerOffset && y.tryOffset + y.tryLength <= x.handlerOffset + x.handlerLength)
+				{
+					return 1;
+				}
+				if (x.tryOffset == y.tryOffset && x.tryLength == y.tryLength)
+				{
+					return x.ordinal < y.ordinal ? -1 : 1;
+				}
+				if (x.tryOffset + x.tryLength <= y.tryOffset)
+				{
+					return -1;
+				}
+				if (y.tryOffset + y.tryLength <= x.tryOffset)
+				{
+					return 1;
+				}
+				if (x.tryOffset > y.tryOffset || (x.tryOffset == y.tryOffset && x.tryLength < y.tryLength))
+				{
+					return -1;
+				}
+				else
+				{
+					return 1;
+				}
+			}
+		}
+
+		private struct SequencePoint
+		{
+			internal ISymbolDocumentWriter document;
+			internal int offset;
+			internal int startLine;
+			internal int startColumn;
+			internal int endLine;
+			internal int endColumn;
+		}
+
+		private sealed class Scope
+		{
+			internal readonly Scope parent;
+			internal readonly List<Scope> children = new List<Scope>();
+			internal readonly List<LocalBuilder> locals = new List<LocalBuilder>();
+			internal int startOffset;
+			internal int endOffset;
+
+			internal Scope(Scope parent)
+			{
+				this.parent = parent;
+			}
+		}
+
+		internal ILGenerator(ModuleBuilder moduleBuilder, int initialCapacity)
+		{
+			this.code = new ByteBuffer(initialCapacity);
+			this.moduleBuilder = moduleBuilder;
+			if (moduleBuilder.symbolWriter != null)
+			{
+				scope = new Scope(null);
+			}
+		}
+
+		private bool IsLabelReachable(Label label)
+		{
+			return labelStackHeight[label.Index] != -1;
+		}
+
+		// non-standard API
+		public void __DisableExceptionBlockAssistance()
+		{
+			exceptionBlockAssistanceMode = EBAM_DISABLE;
+		}
+
+		// non-standard API
+		public void __CleverExceptionBlockAssistance()
+		{
+			exceptionBlockAssistanceMode = EBAM_CLEVER;
+		}
+
+		// new in .NET 4.0
+		public int ILOffset
+		{
+			get { return code.Position; }
+		}
+
+		public void BeginCatchBlock(Type exceptionType)
+		{
+			ExceptionBlock block = exceptionStack.Peek();
+			if (exceptionBlockAssistanceMode == EBAM_COMPAT || (exceptionBlockAssistanceMode == EBAM_CLEVER && stackHeight != -1))
+			{
+				if (exceptionType == null)
+				{
+					Emit(OpCodes.Endfilter);
+				}
+				else
+				{
+					Emit(OpCodes.Leave, block.labelEnd);
+				}
+			}
+			stackHeight = 0;
+			UpdateStack(1);
+			if (block.tryLength == 0)
+			{
+				block.tryLength = code.Position - block.tryOffset;
+			}
+			else if (exceptionType != null)
+			{
+				block.handlerLength = code.Position - block.handlerOffset;
+				exceptionStack.Pop();
+				ExceptionBlock newBlock = new ExceptionBlock(exceptions.Count);
+				newBlock.labelEnd = block.labelEnd;
+				newBlock.tryOffset = block.tryOffset;
+				newBlock.tryLength = block.tryLength;
+				block = newBlock;
+				exceptions.Add(block);
+				exceptionStack.Push(block);
+			}
+			block.handlerOffset = code.Position;
+			block.exceptionType = exceptionType;
+		}
+
+		public Label BeginExceptionBlock()
+		{
+			ExceptionBlock block = new ExceptionBlock(exceptions.Count);
+			block.labelEnd = DefineLabel();
+			block.tryOffset = code.Position;
+			exceptionStack.Push(block);
+			exceptions.Add(block);
+			stackHeight = 0;
+			return block.labelEnd;
+		}
+
+		public void BeginExceptFilterBlock()
+		{
+			ExceptionBlock block = BeginFinallyFilterFaultBlock();
+			block.filterOffset = code.Position;
+			UpdateStack(1);
+		}
+
+		public void BeginFaultBlock()
+		{
+			ExceptionBlock block = BeginFinallyFilterFaultBlock();
+			block.handlerOffset = code.Position;
+			block.exceptionType = FAULT;
+		}
+
+		public void BeginFinallyBlock()
+		{
+			ExceptionBlock block = BeginFinallyFilterFaultBlock();
+			block.handlerOffset = code.Position;
+		}
+
+		private ExceptionBlock BeginFinallyFilterFaultBlock()
+		{
+			ExceptionBlock block = exceptionStack.Peek();
+			if (exceptionBlockAssistanceMode == EBAM_COMPAT || (exceptionBlockAssistanceMode == EBAM_CLEVER && stackHeight != -1))
+			{
+				Emit(OpCodes.Leave, block.labelEnd);
+			}
+			if (block.handlerOffset == 0)
+			{
+				block.tryLength = code.Position - block.tryOffset;
+			}
+			else
+			{
+				block.handlerLength = code.Position - block.handlerOffset;
+				Label labelEnd;
+				if (exceptionBlockAssistanceMode != EBAM_COMPAT)
+				{
+					labelEnd = block.labelEnd;
+				}
+				else
+				{
+					MarkLabel(block.labelEnd);
+					labelEnd = DefineLabel();
+					Emit(OpCodes.Leave, labelEnd);
+				}
+				exceptionStack.Pop();
+				ExceptionBlock newBlock = new ExceptionBlock(exceptions.Count);
+				newBlock.labelEnd = labelEnd;
+				newBlock.tryOffset = block.tryOffset;
+				newBlock.tryLength = code.Position - block.tryOffset;
+				block = newBlock;
+				exceptions.Add(block);
+				exceptionStack.Push(block);
+			}
+			stackHeight = 0;
+			return block;
+		}
+
+		public void EndExceptionBlock()
+		{
+			ExceptionBlock block = exceptionStack.Pop();
+			if (exceptionBlockAssistanceMode == EBAM_COMPAT || (exceptionBlockAssistanceMode == EBAM_CLEVER && stackHeight != -1))
+			{
+				if (block.filterOffset != 0 || (block.exceptionType != null && block.exceptionType != FAULT))
+				{
+					Emit(OpCodes.Leave, block.labelEnd);
+				}
+				else
+				{
+					Emit(OpCodes.Endfinally);
+				}
+			}
+			MarkLabel(block.labelEnd);
+			block.handlerLength = code.Position - block.handlerOffset;
+		}
+
+		public void BeginScope()
+		{
+			Scope newScope = new Scope(scope);
+			scope.children.Add(newScope);
+			scope = newScope;
+			scope.startOffset = code.Position;
+		}
+
+		public void UsingNamespace(string usingNamespace)
+		{
+			if (moduleBuilder.symbolWriter != null)
+			{
+				moduleBuilder.symbolWriter.UsingNamespace(usingNamespace);
+			}
+		}
+
+		public LocalBuilder DeclareLocal(Type localType)
+		{
+			return DeclareLocal(localType, false);
+		}
+
+		public LocalBuilder DeclareLocal(Type localType, bool pinned)
+		{
+			LocalBuilder local = new LocalBuilder(localType, locals.Count, pinned);
+			locals.Add(local);
+			if (scope != null)
+			{
+				scope.locals.Add(local);
+			}
+			return local;
+		}
+
+		public Label DefineLabel()
+		{
+			Label label = new Label(labels.Count);
+			labels.Add(-1);
+			labelStackHeight.Add(-1);
+			return label;
+		}
+
+		public void Emit(OpCode opc)
+		{
+			Debug.Assert(opc != OpCodes.Ret || (opc == OpCodes.Ret && stackHeight <= 1));
+			if (opc.Value < 0)
+			{
+				code.Write((byte)(opc.Value >> 8));
+			}
+			code.Write((byte)opc.Value);
+			switch (opc.FlowControl)
+			{
+				case FlowControl.Branch:
+				case FlowControl.Break:
+				case FlowControl.Return:
+				case FlowControl.Throw:
+					stackHeight = -1;
+					break;
+				default:
+					UpdateStack(opc.StackDiff);
+					break;
+			}
+		}
+
+		private void UpdateStack(int stackdiff)
+		{
+			if (stackHeight == -1)
+			{
+				// we're about to emit code that is either unreachable or reachable only via a backward branch
+				stackHeight = 0;
+			}
+			Debug.Assert(stackHeight >= 0 && stackHeight <= ushort.MaxValue);
+			stackHeight += stackdiff;
+			Debug.Assert(stackHeight >= 0 && stackHeight <= ushort.MaxValue);
+			maxStack = Math.Max(maxStack, (ushort)stackHeight);
+		}
+
+		public void Emit(OpCode opc, byte arg)
+		{
+			Emit(opc);
+			code.Write(arg);
+		}
+
+		public void Emit(OpCode opc, double arg)
+		{
+			Emit(opc);
+			code.Write(arg);
+		}
+
+		public void Emit(OpCode opc, FieldInfo field)
+		{
+			Emit(opc);
+			WriteToken(moduleBuilder.GetFieldToken(field));
+		}
+
+		public void Emit(OpCode opc, short arg)
+		{
+			Emit(opc);
+			code.Write(arg);
+		}
+
+		public void Emit(OpCode opc, int arg)
+		{
+			Emit(opc);
+			code.Write(arg);
+		}
+
+		public void Emit(OpCode opc, long arg)
+		{
+			Emit(opc);
+			code.Write(arg);
+		}
+
+		public void Emit(OpCode opc, Label label)
+		{
+			// We need special stackHeight handling for unconditional branches,
+			// because the branch and next flows have differing stack heights.
+			// Note that this assumes that unconditional branches do not push/pop.
+			int flowStackHeight = this.stackHeight;
+			Emit(opc);
+			if (opc == OpCodes.Leave || opc == OpCodes.Leave_S)
+			{
+				flowStackHeight = 0;
+			}
+			else if (opc.FlowControl != FlowControl.Branch)
+			{
+				flowStackHeight = this.stackHeight;
+			}
+			// if the label has already been marked, we can emit the branch offset directly
+			if (labels[label.Index] != -1)
+			{
+				if (labelStackHeight[label.Index] != flowStackHeight && (labelStackHeight[label.Index] != 0 || flowStackHeight != -1))
+				{
+					// the "backward branch constraint" prohibits this, so we don't need to support it
+					throw new NotSupportedException("'Backward branch constraints' violated");
+				}
+				if (opc.OperandType == OperandType.ShortInlineBrTarget)
+				{
+					WriteByteBranchOffset(labels[label.Index] - (code.Position + 1));
+				}
+				else
+				{
+					code.Write(labels[label.Index] - (code.Position + 4));
+				}
+			}
+			else
+			{
+				Debug.Assert(labelStackHeight[label.Index] == -1 || labelStackHeight[label.Index] == flowStackHeight || (flowStackHeight == -1 && labelStackHeight[label.Index] == 0));
+				labelStackHeight[label.Index] = flowStackHeight;
+				LabelFixup fix = new LabelFixup();
+				fix.label = label.Index;
+				fix.offset = code.Position;
+				labelFixups.Add(fix);
+				if (opc.OperandType == OperandType.ShortInlineBrTarget)
+				{
+					code.Write((byte)1);
+				}
+				else
+				{
+					code.Write(4);
+				}
+			}
+		}
+
+		private void WriteByteBranchOffset(int offset)
+		{
+			if (offset < -128 || offset > 127)
+			{
+				throw new NotSupportedException("Branch offset of " + offset + " does not fit in one-byte branch target at position " + code.Position);
+			}
+			code.Write((byte)offset);
+		}
+
+		public void Emit(OpCode opc, Label[] labels)
+		{
+			Emit(opc);
+			LabelFixup fix = new LabelFixup();
+			fix.label = -1;
+			fix.offset = code.Position;
+			labelFixups.Add(fix);
+			code.Write(labels.Length);
+			foreach (Label label in labels)
+			{
+				code.Write(label.Index);
+				if (this.labels[label.Index] != -1)
+				{
+					if (labelStackHeight[label.Index] != stackHeight)
+					{
+						// the "backward branch constraint" prohibits this, so we don't need to support it
+						throw new NotSupportedException();
+					}
+				}
+				else
+				{
+					Debug.Assert(labelStackHeight[label.Index] == -1 || labelStackHeight[label.Index] == stackHeight);
+					labelStackHeight[label.Index] = stackHeight;
+				}
+			}
+		}
+
+		public void Emit(OpCode opc, LocalBuilder local)
+		{
+			if ((opc == OpCodes.Ldloc || opc == OpCodes.Ldloca || opc == OpCodes.Stloc) && local.LocalIndex < 256)
+			{
+				if (opc == OpCodes.Ldloc)
+				{
+					switch (local.LocalIndex)
+					{
+						case 0:
+							Emit(OpCodes.Ldloc_0);
+							break;
+						case 1:
+							Emit(OpCodes.Ldloc_1);
+							break;
+						case 2:
+							Emit(OpCodes.Ldloc_2);
+							break;
+						case 3:
+							Emit(OpCodes.Ldloc_3);
+							break;
+						default:
+							Emit(OpCodes.Ldloc_S);
+							code.Write((byte)local.LocalIndex);
+							break;
+					}
+				}
+				else if (opc == OpCodes.Ldloca)
+				{
+					Emit(OpCodes.Ldloca_S);
+					code.Write((byte)local.LocalIndex);
+				}
+				else if (opc == OpCodes.Stloc)
+				{
+					switch (local.LocalIndex)
+					{
+						case 0:
+							Emit(OpCodes.Stloc_0);
+							break;
+						case 1:
+							Emit(OpCodes.Stloc_1);
+							break;
+						case 2:
+							Emit(OpCodes.Stloc_2);
+							break;
+						case 3:
+							Emit(OpCodes.Stloc_3);
+							break;
+						default:
+							Emit(OpCodes.Stloc_S);
+							code.Write((byte)local.LocalIndex);
+							break;
+					}
+				}
+			}
+			else
+			{
+				Emit(opc);
+				switch (opc.OperandType)
+				{
+					case OperandType.InlineVar:
+						code.Write((ushort)local.LocalIndex);
+						break;
+					case OperandType.ShortInlineVar:
+						code.Write((byte)local.LocalIndex);
+						break;
+				}
+			}
+		}
+
+		private void WriteToken(FieldToken token)
+		{
+			if (token.IsPseudoToken)
+			{
+				tokenFixups.Add(code.Position);
+			}
+			code.Write(token.Token);
+		}
+
+		private void WriteToken(MethodToken token)
+		{
+			if (token.IsPseudoToken)
+			{
+				tokenFixups.Add(code.Position);
+			}
+			code.Write(token.Token);
+		}
+
+		private void UpdateStack(OpCode opc, bool hasthis, Type returnType, int parameterCount)
+		{
+			if (opc == OpCodes.Jmp)
+			{
+				stackHeight = -1;
+			}
+			else if (opc.FlowControl == FlowControl.Call)
+			{
+				int stackdiff = 0;
+				if ((hasthis && opc != OpCodes.Newobj) || opc == OpCodes.Calli)
+				{
+					// pop this
+					stackdiff--;
+				}
+				// pop parameters
+				stackdiff -= parameterCount;
+				if (returnType != moduleBuilder.universe.System_Void)
+				{
+					// push return value
+					stackdiff++;
+				}
+				UpdateStack(stackdiff);
+			}
+		}
+
+		public void Emit(OpCode opc, MethodInfo method)
+		{
+			Emit(opc);
+			WriteToken(moduleBuilder.GetMethodTokenForIL(method));
+			UpdateStack(opc, method.HasThis, method.ReturnType, method.ParameterCount);
+		}
+
+		public void Emit(OpCode opc, ConstructorInfo constructor)
+		{
+			Emit(opc, constructor.GetMethodInfo());
+		}
+
+		public void Emit(OpCode opc, sbyte arg)
+		{
+			Emit(opc);
+			code.Write(arg);
+		}
+
+		public void Emit(OpCode opc, float arg)
+		{
+			Emit(opc);
+			code.Write(arg);
+		}
+
+		public void Emit(OpCode opc, string str)
+		{
+			Emit(opc);
+			code.Write(0x70000000 | moduleBuilder.UserStrings.Add(str));
+		}
+
+		public void Emit(OpCode opc, Type type)
+		{
+			Emit(opc);
+			if (opc == OpCodes.Ldtoken)
+			{
+				code.Write(moduleBuilder.GetTypeToken(type).Token);
+			}
+			else
+			{
+				code.Write(moduleBuilder.GetTypeTokenForMemberRef(type));
+			}
+		}
+
+		public void Emit(OpCode opcode, SignatureHelper signature)
+		{
+			Emit(opcode);
+			UpdateStack(opcode, signature.HasThis, signature.ReturnType, signature.ParameterCount);
+			code.Write(0x11000000 | moduleBuilder.StandAloneSig.FindOrAddRecord(moduleBuilder.Blobs.Add(signature.GetSignature(moduleBuilder))));
+		}
+
+		public void EmitCall(OpCode opc, MethodInfo method, Type[] optionalParameterTypes)
+		{
+			if (optionalParameterTypes == null || optionalParameterTypes.Length == 0)
+			{
+				Emit(opc, method);
+			}
+			else
+			{
+				Emit(opc);
+				UpdateStack(opc, method.HasThis, method.ReturnType, method.ParameterCount + optionalParameterTypes.Length);
+				ByteBuffer sig = new ByteBuffer(16);
+				method.MethodSignature.WriteMethodRefSig(moduleBuilder, sig, optionalParameterTypes);
+				MemberRefTable.Record record = new MemberRefTable.Record();
+				if (method.Module == moduleBuilder)
+				{
+					record.Class = method.MetadataToken;
+				}
+				else
+				{
+					record.Class = moduleBuilder.GetTypeTokenForMemberRef(method.DeclaringType ?? method.Module.GetModuleType());
+				}
+				record.Name = moduleBuilder.Strings.Add(method.Name);
+				record.Signature = moduleBuilder.Blobs.Add(sig);
+				code.Write(0x0A000000 | moduleBuilder.MemberRef.FindOrAddRecord(record));
+			}
+		}
+
+		public void __EmitCall(OpCode opc, ConstructorInfo constructor, Type[] optionalParameterTypes)
+		{
+			EmitCall(opc, constructor.GetMethodInfo(), optionalParameterTypes);
+		}
+
+		public void EmitCalli(OpCode opc, CallingConvention callingConvention, Type returnType, Type[] parameterTypes)
+		{
+			returnType = returnType ?? moduleBuilder.universe.System_Void;
+			Emit(opc);
+			UpdateStack(opc, false, returnType, parameterTypes.Length);
+			ByteBuffer sig = new ByteBuffer(16);
+			Signature.WriteStandAloneMethodSig(moduleBuilder, sig, callingConvention, returnType, parameterTypes);
+			code.Write(0x11000000 | moduleBuilder.StandAloneSig.FindOrAddRecord(moduleBuilder.Blobs.Add(sig)));
+		}
+
+		public void EmitCalli(OpCode opc, CallingConventions callingConvention, Type returnType, Type[] parameterTypes, Type[] optionalParameterTypes)
+		{
+			returnType = returnType ?? moduleBuilder.universe.System_Void;
+			optionalParameterTypes = optionalParameterTypes ?? Type.EmptyTypes;
+			Emit(opc);
+			UpdateStack(opc, (callingConvention & CallingConventions.HasThis | CallingConventions.ExplicitThis) == CallingConventions.HasThis, returnType, parameterTypes.Length + optionalParameterTypes.Length);
+			ByteBuffer sig = new ByteBuffer(16);
+			Signature.WriteStandAloneMethodSig(moduleBuilder, sig, callingConvention, returnType, parameterTypes, optionalParameterTypes);
+			code.Write(0x11000000 | moduleBuilder.StandAloneSig.FindOrAddRecord(moduleBuilder.Blobs.Add(sig)));
+		}
+
+		public void EmitWriteLine(string text)
+		{
+			Universe u = moduleBuilder.universe;
+			Emit(OpCodes.Ldstr, text);
+			Emit(OpCodes.Call, u.Import(typeof(Console)).GetMethod("WriteLine", new Type[] { u.System_String }));
+		}
+
+		public void EmitWriteLine(FieldInfo field)
+		{
+			Universe u = moduleBuilder.universe;
+			Emit(OpCodes.Call, u.Import(typeof(Console)).GetMethod("get_Out"));
+			if (field.IsStatic)
+			{
+				Emit(OpCodes.Ldsfld, field);
+			}
+			else
+			{
+				Emit(OpCodes.Ldarg_0);
+				Emit(OpCodes.Ldfld, field);
+			}
+			Emit(OpCodes.Callvirt, u.Import(typeof(System.IO.TextWriter)).GetMethod("WriteLine", new Type[] { field.FieldType }));
+		}
+
+		public void EmitWriteLine(LocalBuilder local)
+		{
+			Universe u = moduleBuilder.universe;
+			Emit(OpCodes.Call, u.Import(typeof(Console)).GetMethod("get_Out"));
+			Emit(OpCodes.Ldloc, local);
+			Emit(OpCodes.Callvirt, u.Import(typeof(System.IO.TextWriter)).GetMethod("WriteLine", new Type[] { local.LocalType }));
+		}
+
+		public void EndScope()
+		{
+			scope.endOffset = code.Position;
+			scope = scope.parent;
+		}
+
+		public void MarkLabel(Label loc)
+		{
+			Debug.Assert(stackHeight == -1 || labelStackHeight[loc.Index] == -1 || stackHeight == labelStackHeight[loc.Index]);
+			labels[loc.Index] = code.Position;
+			if (labelStackHeight[loc.Index] == -1)
+			{
+				if (stackHeight == -1)
+				{
+					// We're at a location that can only be reached by a backward branch,
+					// so according to the "backward branch constraint" that must mean the stack is empty,
+					// but note that this may be an unused label followed by another label that is used and
+					// that does have a non-zero stack height, so we don't yet set stackHeight here.
+					labelStackHeight[loc.Index] = 0;
+				}
+				else
+				{
+					labelStackHeight[loc.Index] = stackHeight;
+				}
+			}
+			else
+			{
+				Debug.Assert(stackHeight == -1 || stackHeight == labelStackHeight[loc.Index]);
+				stackHeight = labelStackHeight[loc.Index];
+			}
+		}
+
+		public void MarkSequencePoint(ISymbolDocumentWriter document, int startLine, int startColumn, int endLine, int endColumn)
+		{
+			SequencePoint sp = new SequencePoint();
+			sp.document = document;
+			sp.offset = code.Position;
+			sp.startLine = startLine;
+			sp.startColumn = startColumn;
+			sp.endLine = endLine;
+			sp.endColumn = endColumn;
+			sequencePoints.Add(sp);
+		}
+
+		public void ThrowException(Type excType)
+		{
+			Emit(OpCodes.Newobj, excType.GetConstructor(Type.EmptyTypes));
+			Emit(OpCodes.Throw);
+		}
+
+		internal int WriteBody(bool initLocals)
+		{
+			if (moduleBuilder.symbolWriter != null)
+			{
+				Debug.Assert(scope != null && scope.parent == null);
+				scope.endOffset = code.Position;
+			}
+
+			ResolveBranches();
+
+			ByteBuffer bb = moduleBuilder.methodBodies;
+
+			int localVarSigTok = 0;
+
+			int rva;
+			if (locals.Count == 0 && exceptions.Count == 0 && maxStack <= 8 && code.Length < 64)
+			{
+				rva = WriteTinyHeaderAndCode(bb);
+			}
+			else
+			{
+				rva = WriteFatHeaderAndCode(bb, ref localVarSigTok, initLocals);
+			}
+
+			if (moduleBuilder.symbolWriter != null)
+			{
+				if (sequencePoints.Count != 0)
+				{
+					ISymbolDocumentWriter document = sequencePoints[0].document;
+					int[] offsets = new int[sequencePoints.Count];
+					int[] lines = new int[sequencePoints.Count];
+					int[] columns = new int[sequencePoints.Count];
+					int[] endLines = new int[sequencePoints.Count];
+					int[] endColumns = new int[sequencePoints.Count];
+					for (int i = 0; i < sequencePoints.Count; i++)
+					{
+						if (sequencePoints[i].document != document)
+						{
+							throw new NotImplementedException();
+						}
+						offsets[i] = sequencePoints[i].offset;
+						lines[i] = sequencePoints[i].startLine;
+						columns[i] = sequencePoints[i].startColumn;
+						endLines[i] = sequencePoints[i].endLine;
+						endColumns[i] = sequencePoints[i].endColumn;
+					}
+					moduleBuilder.symbolWriter.DefineSequencePoints(document, offsets, lines, columns, endLines, endColumns);
+				}
+
+				WriteScope(scope, localVarSigTok);
+			}
+			return rva;
+		}
+
+		private void ResolveBranches()
+		{
+			foreach (LabelFixup fixup in labelFixups)
+			{
+				// is it a switch?
+				if (fixup.label == -1)
+				{
+					code.Position = fixup.offset;
+					int count = code.GetInt32AtCurrentPosition();
+					int offset = fixup.offset + 4 + 4 * count;
+					code.Position += 4;
+					for (int i = 0; i < count; i++)
+					{
+						int index = code.GetInt32AtCurrentPosition();
+						code.Write(labels[index] - offset);
+					}
+				}
+				else
+				{
+					code.Position = fixup.offset;
+					byte size = code.GetByteAtCurrentPosition();
+					int branchOffset = labels[fixup.label] - (code.Position + size);
+					if (size == 1)
+					{
+						WriteByteBranchOffset(branchOffset);
+					}
+					else
+					{
+						code.Write(branchOffset);
+					}
+				}
+			}
+		}
+
+		private int WriteTinyHeaderAndCode(ByteBuffer bb)
+		{
+			int rva = bb.Position;
+			const byte CorILMethod_TinyFormat = 0x2;
+			bb.Write((byte)(CorILMethod_TinyFormat | (code.Length << 2)));
+			WriteCode(bb);
+			return rva;
+		}
+
+		private int WriteFatHeaderAndCode(ByteBuffer bb, ref int localVarSigTok, bool initLocals)
+		{
+			// fat headers require 4-byte alignment
+			bb.Align(4);
+			int rva = bb.Position;
+
+			if (locals.Count != 0)
+			{
+				ByteBuffer localVarSig = new ByteBuffer(locals.Count + 2);
+				Signature.WriteLocalVarSig(moduleBuilder, localVarSig, locals);
+				localVarSigTok = 0x11000000 | moduleBuilder.StandAloneSig.FindOrAddRecord(moduleBuilder.Blobs.Add(localVarSig));
+			}
+
+			const byte CorILMethod_FatFormat = 0x03;
+			const byte CorILMethod_MoreSects = 0x08;
+			const byte CorILMethod_InitLocals = 0x10;
+
+			short flagsAndSize = (short)(CorILMethod_FatFormat | (3 << 12));
+			if (initLocals)
+			{
+				flagsAndSize |= CorILMethod_InitLocals;
+			}
+
+			if (exceptions.Count > 0)
+			{
+				flagsAndSize |= CorILMethod_MoreSects;
+			}
+
+			bb.Write(flagsAndSize);
+			bb.Write(maxStack);
+			bb.Write(code.Length);
+			bb.Write(localVarSigTok);
+
+			WriteCode(bb);
+
+			if (exceptions.Count > 0)
+			{
+				bb.Align(4);
+
+				bool fat = false;
+				foreach (ExceptionBlock block in exceptions)
+				{
+					if (block.tryOffset > 65535 || block.tryLength > 255 || block.handlerOffset > 65535 || block.handlerLength > 255)
+					{
+						fat = true;
+						break;
+					}
+				}
+				exceptions.Sort(exceptions[0]);
+				if (exceptions.Count * 12 + 4 > 255)
+				{
+					fat = true;
+				}
+				const byte CorILMethod_Sect_EHTable = 0x1;
+				const byte CorILMethod_Sect_FatFormat = 0x40;
+				const short COR_ILEXCEPTION_CLAUSE_EXCEPTION = 0x0000;
+				const short COR_ILEXCEPTION_CLAUSE_FILTER = 0x0001;
+				const short COR_ILEXCEPTION_CLAUSE_FINALLY = 0x0002;
+				const short COR_ILEXCEPTION_CLAUSE_FAULT = 0x0004;
+
+				if (fat)
+				{
+					bb.Write((byte)(CorILMethod_Sect_EHTable | CorILMethod_Sect_FatFormat));
+					int dataSize = exceptions.Count * 24 + 4;
+					bb.Write((byte)dataSize);
+					bb.Write((short)(dataSize >> 8));
+					foreach (ExceptionBlock block in exceptions)
+					{
+						if (block.exceptionType == FAULT)
+						{
+							bb.Write((int)COR_ILEXCEPTION_CLAUSE_FAULT);
+						}
+						else if (block.filterOffset != 0)
+						{
+							bb.Write((int)COR_ILEXCEPTION_CLAUSE_FILTER);
+						}
+						else if (block.exceptionType != null)
+						{
+							bb.Write((int)COR_ILEXCEPTION_CLAUSE_EXCEPTION);
+						}
+						else
+						{
+							bb.Write((int)COR_ILEXCEPTION_CLAUSE_FINALLY);
+						}
+						bb.Write(block.tryOffset);
+						bb.Write(block.tryLength);
+						bb.Write(block.handlerOffset);
+						bb.Write(block.handlerLength);
+						if (block.exceptionType != null && block.exceptionType != FAULT)
+						{
+							bb.Write(moduleBuilder.GetTypeTokenForMemberRef(block.exceptionType));
+						}
+						else
+						{
+							bb.Write(block.filterOffset);
+						}
+					}
+				}
+				else
+				{
+					bb.Write(CorILMethod_Sect_EHTable);
+					bb.Write((byte)(exceptions.Count * 12 + 4));
+					bb.Write((short)0);
+					foreach (ExceptionBlock block in exceptions)
+					{
+						if (block.exceptionType == FAULT)
+						{
+							bb.Write(COR_ILEXCEPTION_CLAUSE_FAULT);
+						}
+						else if (block.filterOffset != 0)
+						{
+							bb.Write(COR_ILEXCEPTION_CLAUSE_FILTER);
+						}
+						else if (block.exceptionType != null)
+						{
+							bb.Write(COR_ILEXCEPTION_CLAUSE_EXCEPTION);
+						}
+						else
+						{
+							bb.Write(COR_ILEXCEPTION_CLAUSE_FINALLY);
+						}
+						bb.Write((short)block.tryOffset);
+						bb.Write((byte)block.tryLength);
+						bb.Write((short)block.handlerOffset);
+						bb.Write((byte)block.handlerLength);
+						if (block.exceptionType != null && block.exceptionType != FAULT)
+						{
+							bb.Write(moduleBuilder.GetTypeTokenForMemberRef(block.exceptionType));
+						}
+						else
+						{
+							bb.Write(block.filterOffset);
+						}
+					}
+				}
+			}
+			return rva;
+		}
+
+		private void WriteCode(ByteBuffer bb)
+		{
+			int codeOffset = bb.Position;
+			foreach (int fixup in this.tokenFixups)
+			{
+				moduleBuilder.tokenFixupOffsets.Add(fixup + codeOffset);
+			}
+			bb.Write(code);
+		}
+
+		private void WriteScope(Scope scope, int localVarSigTok)
+		{
+			moduleBuilder.symbolWriter.OpenScope(scope.startOffset);
+			foreach (LocalBuilder local in scope.locals)
+			{
+				if (local.name != null)
+				{
+					int startOffset = local.startOffset;
+					int endOffset = local.endOffset;
+					if (startOffset == 0 && endOffset == 0)
+					{
+						startOffset = scope.startOffset;
+						endOffset = scope.endOffset;
+					}
+					moduleBuilder.symbolWriter.DefineLocalVariable2(local.name, 0, localVarSigTok, SymAddressKind.ILOffset, local.LocalIndex, 0, 0, startOffset, endOffset);
+				}
+			}
+			foreach (Scope child in scope.children)
+			{
+				WriteScope(child, localVarSigTok);
+			}
+			moduleBuilder.symbolWriter.CloseScope(scope.endOffset);
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Emit/MethodBuilder.cs b/mcs/class/IKVM.Reflection/Emit/MethodBuilder.cs
new file mode 100644
index 0000000..a54e637
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Emit/MethodBuilder.cs
@@ -0,0 +1,693 @@
+/*
+  Copyright (C) 2008-2010 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.IO;
+using System.Diagnostics;
+using System.Collections.Generic;
+using System.Runtime.InteropServices;
+using System.Runtime.CompilerServices;
+using System.Diagnostics.SymbolStore;
+using IKVM.Reflection.Metadata;
+using IKVM.Reflection.Writer;
+
+namespace IKVM.Reflection.Emit
+{
+	public sealed class MethodBuilder : MethodInfo
+	{
+		private readonly TypeBuilder typeBuilder;
+		private readonly string name;
+		private readonly int nameIndex;
+		private readonly int pseudoToken;
+		private int signature;
+		private Type returnType;
+		private Type[] parameterTypes;
+		private Type[][][] modifiers;	// see PackedCustomModifiers
+		private MethodAttributes attributes;
+		private MethodImplAttributes implFlags;
+		private ILGenerator ilgen;
+		private int rva;
+		private readonly CallingConventions callingConvention;
+		private List<ParameterBuilder> parameters;
+		private GenericTypeParameterBuilder[] gtpb;
+		private List<CustomAttributeBuilder> declarativeSecurity;
+		private MethodSignature methodSignature;
+		private bool initLocals = true;
+
+		internal MethodBuilder(TypeBuilder typeBuilder, string name, MethodAttributes attributes, CallingConventions callingConvention)
+		{
+			this.typeBuilder = typeBuilder;
+			this.name = name;
+			this.pseudoToken = typeBuilder.ModuleBuilder.AllocPseudoToken();
+			// because all the MethodBuilders constitute a virtual MethodDef table, we cannot allocate the string during WriteMethodDefRecord,
+			// since by then the metadata has already been frozen
+			this.nameIndex = typeBuilder.ModuleBuilder.Strings.Add(name);
+			this.attributes = attributes;
+			if ((attributes & MethodAttributes.Static) == 0)
+			{
+				callingConvention |= CallingConventions.HasThis;
+			}
+			this.callingConvention = callingConvention;
+		}
+
+		public ILGenerator GetILGenerator()
+		{
+			return GetILGenerator(16);
+		}
+
+		public ILGenerator GetILGenerator(int streamSize)
+		{
+			if (ilgen == null)
+			{
+				ilgen = new ILGenerator(typeBuilder.ModuleBuilder, streamSize);
+			}
+			return ilgen;
+		}
+
+		public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute)
+		{
+			SetCustomAttribute(new CustomAttributeBuilder(con, binaryAttribute));
+		}
+
+		private void SetDllImportPseudoCustomAttribute(CustomAttributeBuilder customBuilder)
+		{
+			CallingConvention? callingConvention = customBuilder.GetFieldValue<CallingConvention>("CallingConvention");
+			CharSet? charSet = customBuilder.GetFieldValue<CharSet>("CharSet");
+			SetDllImportPseudoCustomAttribute((string)customBuilder.GetConstructorArgument(0),
+				(string)customBuilder.GetFieldValue("EntryPoint"),
+				callingConvention,
+				charSet,
+				(bool?)customBuilder.GetFieldValue("BestFitMapping"),
+				(bool?)customBuilder.GetFieldValue("ThrowOnUnmappableChar"),
+				(bool?)customBuilder.GetFieldValue("SetLastError"),
+				(bool?)customBuilder.GetFieldValue("PreserveSig"),
+				(bool?)customBuilder.GetFieldValue("ExactSpelling"));
+		}
+
+		internal void SetDllImportPseudoCustomAttribute(string dllName, string entryName, CallingConvention? nativeCallConv, CharSet? nativeCharSet,
+			bool? bestFitMapping, bool? throwOnUnmappableChar, bool? setLastError, bool? preserveSig, bool? exactSpelling)
+		{
+			const short NoMangle = 0x0001;
+			const short CharSetMask = 0x0006;
+			const short CharSetNotSpec = 0x0000;
+			const short CharSetAnsi = 0x0002;
+			const short CharSetUnicode = 0x0004;
+			const short CharSetAuto = 0x0006;
+			const short SupportsLastError = 0x0040;
+			const short CallConvMask = 0x0700;
+			const short CallConvWinapi = 0x0100;
+			const short CallConvCdecl = 0x0200;
+			const short CallConvStdcall = 0x0300;
+			const short CallConvThiscall = 0x0400;
+			const short CallConvFastcall = 0x0500;
+			// non-standard flags
+			const short BestFitOn = 0x0010;
+			const short BestFitOff = 0x0020;
+			const short CharMapErrorOn = 0x1000;
+			const short CharMapErrorOff = 0x2000;
+			int name = this.nameIndex;
+			short flags = CharSetNotSpec | CallConvWinapi;
+			if (bestFitMapping.HasValue)
+			{
+				flags |= bestFitMapping.Value ? BestFitOn : BestFitOff;
+			}
+			if (throwOnUnmappableChar.HasValue)
+			{
+				flags |= throwOnUnmappableChar.Value ? CharMapErrorOn : CharMapErrorOff;
+			}
+			if (nativeCallConv.HasValue)
+			{
+				flags &= ~CallConvMask;
+				switch (nativeCallConv.Value)
+				{
+					case System.Runtime.InteropServices.CallingConvention.Cdecl:
+						flags |= CallConvCdecl;
+						break;
+					case System.Runtime.InteropServices.CallingConvention.FastCall:
+						flags |= CallConvFastcall;
+						break;
+					case System.Runtime.InteropServices.CallingConvention.StdCall:
+						flags |= CallConvStdcall;
+						break;
+					case System.Runtime.InteropServices.CallingConvention.ThisCall:
+						flags |= CallConvThiscall;
+						break;
+					case System.Runtime.InteropServices.CallingConvention.Winapi:
+						flags |= CallConvWinapi;
+						break;
+				}
+			}
+			if (nativeCharSet.HasValue)
+			{
+				flags &= ~CharSetMask;
+				switch (nativeCharSet.Value)
+				{
+					case CharSet.Ansi:
+					case CharSet.None:
+						flags |= CharSetAnsi;
+						break;
+					case CharSet.Auto:
+						flags |= CharSetAuto;
+						break;
+					case CharSet.Unicode:
+						flags |= CharSetUnicode;
+						break;
+				}
+			}
+			if (entryName != null)
+			{
+				name = this.ModuleBuilder.Strings.Add(entryName);
+			}
+			if (exactSpelling.HasValue && exactSpelling.Value)
+			{
+				flags |= NoMangle;
+			}
+			if (!preserveSig.HasValue || preserveSig.Value)
+			{
+				implFlags |= MethodImplAttributes.PreserveSig;
+			}
+			if (setLastError.HasValue && setLastError.Value)
+			{
+				flags |= SupportsLastError;
+			}
+			ImplMapTable.Record rec = new ImplMapTable.Record();
+			rec.MappingFlags = flags;
+			rec.MemberForwarded = pseudoToken;
+			rec.ImportName = name;
+			rec.ImportScope = this.ModuleBuilder.ModuleRef.FindOrAddRecord(dllName == null ? 0 : this.ModuleBuilder.Strings.Add(dllName));
+			this.ModuleBuilder.ImplMap.AddRecord(rec);
+		}
+
+		private void SetMethodImplAttribute(CustomAttributeBuilder customBuilder)
+		{
+			MethodImplOptions opt;
+			switch (customBuilder.Constructor.ParameterCount)
+			{
+				case 0:
+					opt = 0;
+					break;
+				case 1:
+					{
+						object val = customBuilder.GetConstructorArgument(0);
+						if (val is short)
+						{
+							opt = (MethodImplOptions)(short)val;
+						}
+						else if (val is int)
+						{
+							opt = (MethodImplOptions)(int)val;
+						}
+						else
+						{
+							opt = (MethodImplOptions)val;
+						}
+						break;
+					}
+				default:
+					throw new NotSupportedException();
+			}
+			MethodCodeType? type = customBuilder.GetFieldValue<MethodCodeType>("MethodCodeType");
+			implFlags = (MethodImplAttributes)opt;
+			if (type.HasValue)
+			{
+				implFlags |= (MethodImplAttributes)type;
+			}
+		}
+
+		public void SetCustomAttribute(CustomAttributeBuilder customBuilder)
+		{
+			Universe u = this.ModuleBuilder.universe;
+			Type type = customBuilder.Constructor.DeclaringType;
+			if (type == u.System_Runtime_InteropServices_DllImportAttribute)
+			{
+				attributes |= MethodAttributes.PinvokeImpl;
+				SetDllImportPseudoCustomAttribute(customBuilder.DecodeBlob(this.Module.Assembly));
+			}
+			else if (type == u.System_Runtime_CompilerServices_MethodImplAttribute)
+			{
+				SetMethodImplAttribute(customBuilder.DecodeBlob(this.Module.Assembly));
+			}
+			else if (type == u.System_Runtime_InteropServices_PreserveSigAttribute)
+			{
+				implFlags |= MethodImplAttributes.PreserveSig;
+			}
+			else if (type == u.System_Runtime_CompilerServices_SpecialNameAttribute)
+			{
+				attributes |= MethodAttributes.SpecialName;
+			}
+			else
+			{
+				if (type == u.System_Security_SuppressUnmanagedCodeSecurityAttribute)
+				{
+					attributes |= MethodAttributes.HasSecurity;
+				}
+				this.ModuleBuilder.SetCustomAttribute(pseudoToken, customBuilder);
+			}
+		}
+
+		public void __AddDeclarativeSecurity(CustomAttributeBuilder customBuilder)
+		{
+			attributes |= MethodAttributes.HasSecurity;
+			if (declarativeSecurity == null)
+			{
+				declarativeSecurity = new List<CustomAttributeBuilder>();
+			}
+			declarativeSecurity.Add(customBuilder);
+		}
+
+		public void AddDeclarativeSecurity(System.Security.Permissions.SecurityAction securityAction, System.Security.PermissionSet permissionSet)
+		{
+			this.ModuleBuilder.AddDeclarativeSecurity(pseudoToken, securityAction, permissionSet);
+			this.attributes |= MethodAttributes.HasSecurity;
+		}
+
+		public void SetImplementationFlags(MethodImplAttributes attributes)
+		{
+			implFlags = attributes;
+		}
+
+		public ParameterBuilder DefineParameter(int position, ParameterAttributes attributes, string strParamName)
+		{
+			// the parameter is named "position", but it is actually a sequence number (i.e. 0 = return parameter, 1 = first parameter)
+			int sequence = position--;
+			if (parameters == null)
+			{
+				parameters = new List<ParameterBuilder>();
+			}
+			this.ModuleBuilder.Param.AddVirtualRecord();
+			ParameterBuilder pb = new ParameterBuilder(this.ModuleBuilder, sequence, attributes, strParamName);
+			if (parameters.Count == 0 || position > parameters[parameters.Count - 1].Position)
+			{
+				parameters.Add(pb);
+			}
+			else
+			{
+				for (int i = 0; i < parameters.Count; i++)
+				{
+					if (parameters[i].Position > position)
+					{
+						parameters.Insert(i, pb);
+						break;
+					}
+				}
+			}
+			return pb;
+		}
+
+		public void SetParameters(params Type[] parameterTypes)
+		{
+			this.parameterTypes = Util.Copy(parameterTypes);
+		}
+
+		public void SetReturnType(Type returnType)
+		{
+			this.returnType = returnType ?? this.Module.universe.System_Void;
+		}
+
+		public void SetSignature(Type returnType, Type[] returnTypeRequiredCustomModifiers, Type[] returnTypeOptionalCustomModifiers, Type[] parameterTypes, Type[][] parameterTypeRequiredCustomModifiers, Type[][] parameterTypeOptionalCustomModifiers)
+		{
+			this.returnType = returnType ?? this.Module.universe.System_Void;
+			this.parameterTypes = Util.Copy(parameterTypes);
+			this.modifiers = PackedCustomModifiers.CreateFromExternal(returnTypeOptionalCustomModifiers, returnTypeRequiredCustomModifiers,
+				parameterTypeOptionalCustomModifiers, parameterTypeRequiredCustomModifiers, this.parameterTypes.Length);
+		}
+
+		public GenericTypeParameterBuilder[] DefineGenericParameters(params string[] names)
+		{
+			gtpb = new GenericTypeParameterBuilder[names.Length];
+			for (int i = 0; i < names.Length; i++)
+			{
+				gtpb[i] = new GenericTypeParameterBuilder(names[i], null, this, i);
+			}
+			return (GenericTypeParameterBuilder[])gtpb.Clone();
+		}
+
+		public override MethodInfo MakeGenericMethod(params Type[] typeArguments)
+		{
+			return new GenericMethodInstance(typeBuilder, this, typeArguments);
+		}
+
+		public override MethodInfo GetGenericMethodDefinition()
+		{
+			if (gtpb == null)
+			{
+				throw new InvalidOperationException();
+			}
+			return this;
+		}
+
+		public override Type[] GetGenericArguments()
+		{
+			return Util.Copy(gtpb);
+		}
+
+		internal override Type GetGenericMethodArgument(int index)
+		{
+			return gtpb[index];
+		}
+
+		internal override int GetGenericMethodArgumentCount()
+		{
+			return gtpb == null ? 0 : gtpb.Length;
+		}
+
+		public override Type ReturnType
+		{
+			get { return returnType; }
+		}
+
+		public override ParameterInfo ReturnParameter
+		{
+			get { return new ParameterInfoImpl(this, -1); }
+		}
+
+		public override MethodAttributes Attributes
+		{
+			get { return attributes; }
+		}
+
+		public void __SetAttributes(MethodAttributes attributes)
+		{
+			this.attributes = attributes;
+		}
+
+		public override MethodImplAttributes GetMethodImplementationFlags()
+		{
+			return implFlags;
+		}
+
+		private sealed class ParameterInfoImpl : ParameterInfo
+		{
+			private readonly MethodBuilder method;
+			private readonly int parameter;
+
+			internal ParameterInfoImpl(MethodBuilder method, int parameter)
+			{
+				this.method = method;
+				this.parameter = parameter;
+			}
+
+			private ParameterBuilder ParameterBuilder
+			{
+				get
+				{
+					if (method.parameters != null)
+					{
+						foreach (ParameterBuilder pb in method.parameters)
+						{
+							if (pb.Position == parameter)
+							{
+								return pb;
+							}
+						}
+					}
+					return null;
+				}
+			}
+
+			public override string Name
+			{
+				get
+				{
+					ParameterBuilder pb = this.ParameterBuilder;
+					return pb != null ? pb.Name : null;
+				}
+			}
+
+			public override Type ParameterType
+			{
+				get { return parameter == -1 ? method.returnType : method.parameterTypes[parameter]; }
+			}
+
+			public override ParameterAttributes Attributes
+			{
+				get
+				{
+					ParameterBuilder pb = this.ParameterBuilder;
+					return pb != null ? (ParameterAttributes)pb.Attributes : ParameterAttributes.None;
+				}
+			}
+
+			public override int Position
+			{
+				get { return parameter; }
+			}
+
+			public override object RawDefaultValue
+			{
+				get
+				{
+					ParameterBuilder pb = this.ParameterBuilder;
+					if (pb != null && (pb.Attributes & (int)ParameterAttributes.HasDefault) != 0)
+					{
+						return method.ModuleBuilder.Constant.GetRawConstantValue(method.ModuleBuilder, pb.PseudoToken);
+					}
+					if (pb != null && (pb.Attributes & (int)ParameterAttributes.Optional) != 0)
+					{
+						return Missing.Value;
+					}
+					return null;
+				}
+			}
+
+			private Type[] GetCustomModifiers(int optOrReq)
+			{
+				if (method.modifiers == null || method.modifiers[parameter + 1] == null)
+				{
+					return Type.EmptyTypes;
+				}
+				return Util.Copy(method.modifiers[parameter + 1][optOrReq]);
+			}
+
+			public override Type[] GetOptionalCustomModifiers()
+			{
+				return GetCustomModifiers(0);
+			}
+
+			public override Type[] GetRequiredCustomModifiers()
+			{
+				return GetCustomModifiers(1);
+			}
+
+			public override MemberInfo Member
+			{
+				get { return method; }
+			}
+
+			public override int MetadataToken
+			{
+				get
+				{
+					ParameterBuilder pb = this.ParameterBuilder;
+					return pb != null ? pb.PseudoToken : 0x08000000;
+				}
+			}
+
+			internal override Module Module
+			{
+				get { return method.Module; }
+			}
+		}
+
+		public override ParameterInfo[] GetParameters()
+		{
+			ParameterInfo[] parameters = new ParameterInfo[parameterTypes.Length];
+			for (int i = 0; i < parameters.Length; i++)
+			{
+				parameters[i] = new ParameterInfoImpl(this, i);
+			}
+			return parameters;
+		}
+
+		internal override int ParameterCount
+		{
+			get { return parameterTypes.Length; }
+		}
+
+		public override Type DeclaringType
+		{
+			get { return typeBuilder.IsModulePseudoType ? null : typeBuilder; }
+		}
+
+		public override string Name
+		{
+			get { return name; }
+		}
+
+		public override CallingConventions CallingConvention
+		{
+			get { return callingConvention; }
+		}
+
+		public override int MetadataToken
+		{
+			get { return pseudoToken; }
+		}
+
+		public override bool IsGenericMethod
+		{
+			get { return gtpb != null; }
+		}
+
+		public override bool IsGenericMethodDefinition
+		{
+			get { return gtpb != null; }
+		}
+
+		public override Module Module
+		{
+			get { return typeBuilder.Module; }
+		}
+
+		public Module GetModule()
+		{
+			return typeBuilder.Module;
+		}
+
+		public MethodToken GetToken()
+		{
+			return new MethodToken(pseudoToken);
+		}
+
+		public override MethodBody GetMethodBody()
+		{
+			throw new NotSupportedException();
+		}
+
+		public bool InitLocals
+		{
+			get { return initLocals; }
+			set { initLocals = value; }
+		}
+
+		internal void Bake()
+		{
+			this.signature = this.ModuleBuilder.GetSignatureBlobIndex(this.MethodSignature);
+
+			if (ilgen != null)
+			{
+				if (this.ModuleBuilder.symbolWriter != null)
+				{
+					this.ModuleBuilder.symbolWriter.OpenMethod(new SymbolToken(-pseudoToken | 0x06000000));
+				}
+				rva = ilgen.WriteBody(initLocals);
+				if (this.ModuleBuilder.symbolWriter != null)
+				{
+					this.ModuleBuilder.symbolWriter.CloseMethod();
+				}
+				ilgen = null;
+			}
+			else
+			{
+				rva = -1;
+			}
+
+			if (declarativeSecurity != null)
+			{
+				this.ModuleBuilder.AddDeclarativeSecurity(pseudoToken, declarativeSecurity);
+			}
+		}
+
+		internal ModuleBuilder ModuleBuilder
+		{
+			get { return typeBuilder.ModuleBuilder; }
+		}
+
+		internal void WriteMethodDefRecord(int baseRVA, MetadataWriter mw, ref int paramList)
+		{
+			if (rva != -1)
+			{
+				mw.Write(rva + baseRVA);
+			}
+			else
+			{
+				mw.Write(0);
+			}
+			mw.Write((short)implFlags);
+			mw.Write((short)attributes);
+			mw.WriteStringIndex(nameIndex);
+			mw.WriteBlobIndex(signature);
+			mw.WriteParam(paramList);
+			if (parameters != null)
+			{
+				paramList += parameters.Count;
+			}
+		}
+
+		internal void WriteParamRecords(MetadataWriter mw)
+		{
+			if (parameters != null)
+			{
+				foreach (ParameterBuilder pb in parameters)
+				{
+					pb.WriteParamRecord(mw);
+				}
+			}
+		}
+
+		internal void FixupToken(int token, ref int parameterToken)
+		{
+			typeBuilder.ModuleBuilder.RegisterTokenFixup(this.pseudoToken, token);
+			if (parameters != null)
+			{
+				foreach (ParameterBuilder pb in parameters)
+				{
+					pb.FixupToken(parameterToken++);
+				}
+			}
+		}
+
+		internal override MethodSignature MethodSignature
+		{
+			get
+			{
+				if (methodSignature == null)
+				{
+					methodSignature = MethodSignature.MakeFromBuilder(returnType, parameterTypes, modifiers, callingConvention, gtpb == null ? 0 : gtpb.Length);
+				}
+				return methodSignature;
+			}
+		}
+
+		internal override int ImportTo(ModuleBuilder other)
+		{
+			if (typeBuilder.IsGenericTypeDefinition)
+			{
+				return other.ImportMember(TypeBuilder.GetMethod(typeBuilder, this));
+			}
+			else if (other == typeBuilder.ModuleBuilder)
+			{
+				return pseudoToken;
+			}
+			else
+			{
+				return other.ImportMethodOrField(typeBuilder, name, this.MethodSignature);
+			}
+		}
+
+		internal void CheckBaked()
+		{
+			typeBuilder.CheckBaked();
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Emit/ModuleBuilder.cs b/mcs/class/IKVM.Reflection/Emit/ModuleBuilder.cs
new file mode 100644
index 0000000..07dc278
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Emit/ModuleBuilder.cs
@@ -0,0 +1,1364 @@
+/*
+  Copyright (C) 2008-2010 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Diagnostics;
+using System.Diagnostics.SymbolStore;
+using System.Security.Cryptography;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using IKVM.Reflection.Impl;
+using IKVM.Reflection.Metadata;
+using IKVM.Reflection.Writer;
+
+namespace IKVM.Reflection.Emit
+{
+	public sealed class ModuleBuilder : Module, ITypeOwner
+	{
+		private static readonly bool usePublicKeyAssemblyReference = false;
+		private readonly Guid mvid = Guid.NewGuid();
+		private long imageBaseAddress = 0x00400000;
+		private readonly AssemblyBuilder asm;
+		internal readonly string moduleName;
+		internal readonly string fileName;
+		internal readonly ISymbolWriterImpl symbolWriter;
+		private readonly TypeBuilder moduleType;
+		private readonly List<TypeBuilder> types = new List<TypeBuilder>();
+		private readonly Dictionary<Type, int> typeTokens = new Dictionary<Type, int>();
+		private readonly Dictionary<Type, int> memberRefTypeTokens = new Dictionary<Type, int>();
+		private readonly Dictionary<string, TypeBuilder> fullNameToType = new Dictionary<string, TypeBuilder>();
+		internal readonly ByteBuffer methodBodies = new ByteBuffer(128 * 1024);
+		internal readonly List<int> tokenFixupOffsets = new List<int>();
+		internal readonly ByteBuffer initializedData = new ByteBuffer(512);
+		internal readonly ByteBuffer manifestResources = new ByteBuffer(512);
+		internal ResourceSection unmanagedResources;
+		private readonly Dictionary<MemberInfo, int> importedMembers = new Dictionary<MemberInfo, int>();
+		private readonly Dictionary<MemberRefKey, int> importedMemberRefs = new Dictionary<MemberRefKey, int>();
+		private readonly Dictionary<Assembly, int> referencedAssemblies = new Dictionary<Assembly, int>();
+		private List<AssemblyName> referencedAssemblyNames;
+		private int nextPseudoToken = -1;
+		private readonly List<int> resolvedTokens = new List<int>();
+		internal readonly TableHeap Tables = new TableHeap();
+		internal readonly StringHeap Strings = new StringHeap();
+		internal readonly UserStringHeap UserStrings = new UserStringHeap();
+		internal readonly GuidHeap Guids = new GuidHeap();
+		internal readonly BlobHeap Blobs = new BlobHeap();
+
+		struct MemberRefKey : IEquatable<MemberRefKey>
+		{
+			private readonly Type type;
+			private readonly string name;
+			private readonly Signature signature;
+
+			internal MemberRefKey(Type type, string name, Signature signature)
+			{
+				this.type = type;
+				this.name = name;
+				this.signature = signature;
+			}
+
+			public bool Equals(MemberRefKey other)
+			{
+				return other.type.Equals(type)
+					&& other.name == name
+					&& other.signature.Equals(signature);
+			}
+
+			public override bool Equals(object obj)
+			{
+				MemberRefKey? other = obj as MemberRefKey?;
+				return other != null && Equals(other);
+			}
+
+			public override int GetHashCode()
+			{
+				return type.GetHashCode() + name.GetHashCode() + signature.GetHashCode();
+			}
+		}
+
+		internal ModuleBuilder(AssemblyBuilder asm, string moduleName, string fileName, bool emitSymbolInfo)
+			: base(asm.universe)
+		{
+			this.asm = asm;
+			this.moduleName = moduleName;
+			this.fileName = fileName;
+			if (emitSymbolInfo)
+			{
+				symbolWriter = SymbolSupport.CreateSymbolWriterFor(this);
+			}
+			// <Module> must be the first record in the TypeDef table
+			moduleType = new TypeBuilder(this, "<Module>", null, 0);
+			types.Add(moduleType);
+		}
+
+		internal void PopulatePropertyAndEventTables()
+		{
+			// LAMESPEC the PropertyMap and EventMap tables are not required to be sorted by the CLI spec,
+			// but .NET sorts them and Mono requires them to be sorted, so we have to populate the
+			// tables in the right order
+			foreach (TypeBuilder type in types)
+			{
+				type.PopulatePropertyAndEventTables();
+			}
+		}
+
+		internal void WriteTypeDefTable(MetadataWriter mw)
+		{
+			int fieldList = 1;
+			int methodList = 1;
+			foreach (TypeBuilder type in types)
+			{
+				type.WriteTypeDefRecord(mw, ref fieldList, ref methodList);
+			}
+		}
+
+		internal void WriteMethodDefTable(int baseRVA, MetadataWriter mw)
+		{
+			int paramList = 1;
+			foreach (TypeBuilder type in types)
+			{
+				type.WriteMethodDefRecords(baseRVA, mw, ref paramList);
+			}
+		}
+
+		internal void WriteParamTable(MetadataWriter mw)
+		{
+			foreach (TypeBuilder type in types)
+			{
+				type.WriteParamRecords(mw);
+			}
+		}
+
+		internal void WriteFieldTable(MetadataWriter mw)
+		{
+			foreach (TypeBuilder type in types)
+			{
+				type.WriteFieldRecords(mw);
+			}
+		}
+
+		internal int AllocPseudoToken()
+		{
+			return nextPseudoToken--;
+		}
+
+		public TypeBuilder DefineType(string name)
+		{
+			return DefineType(name, TypeAttributes.Class);
+		}
+
+		public TypeBuilder DefineType(string name, TypeAttributes attr)
+		{
+			return DefineType(name, attr, null);
+		}
+
+		public TypeBuilder DefineType(string name, TypeAttributes attr, Type parent)
+		{
+			return DefineType(name, attr, parent, PackingSize.Unspecified, 0);
+		}
+
+		public TypeBuilder DefineType(string name, TypeAttributes attr, Type parent, int typesize)
+		{
+			return DefineType(name, attr, parent, PackingSize.Unspecified, typesize);
+		}
+
+		public TypeBuilder DefineType(string name, TypeAttributes attr, Type parent, PackingSize packsize)
+		{
+			return DefineType(name, attr, parent, packsize, 0);
+		}
+
+		public TypeBuilder DefineType(string name, TypeAttributes attr, Type parent, Type[] interfaces)
+		{
+			TypeBuilder tb = DefineType(name, attr, parent);
+			foreach (Type iface in interfaces)
+			{
+				tb.AddInterfaceImplementation(iface);
+			}
+			return tb;
+		}
+
+		public TypeBuilder DefineType(string name, TypeAttributes attr, Type parent, PackingSize packingSize, int typesize)
+		{
+			if (parent == null && (attr & TypeAttributes.Interface) == 0)
+			{
+				parent = universe.System_Object;
+			}
+			TypeBuilder typeBuilder = new TypeBuilder(this, name, parent, attr);
+			PostDefineType(typeBuilder, packingSize, typesize);
+			return typeBuilder;
+		}
+
+		public EnumBuilder DefineEnum(string name, TypeAttributes visibility, Type underlyingType)
+		{
+			TypeBuilder tb = DefineType(name, (visibility & TypeAttributes.VisibilityMask) | TypeAttributes.Sealed, universe.System_Enum);
+			FieldBuilder fb = tb.DefineField("value__", underlyingType, FieldAttributes.Public | FieldAttributes.SpecialName | FieldAttributes.RTSpecialName);
+			return new EnumBuilder(tb, fb);
+		}
+
+		internal TypeBuilder DefineNestedTypeHelper(TypeBuilder enclosingType, string name, TypeAttributes attr, Type parent, PackingSize packingSize, int typesize)
+		{
+			if (parent == null && (attr & TypeAttributes.Interface) == 0)
+			{
+				parent = universe.System_Object;
+			}
+			TypeBuilder typeBuilder = new TypeBuilder(enclosingType, name, parent, attr);
+			PostDefineType(typeBuilder, packingSize, typesize);
+			if (enclosingType != null)
+			{
+				NestedClassTable.Record rec = new NestedClassTable.Record();
+				rec.NestedClass = typeBuilder.MetadataToken;
+				rec.EnclosingClass = enclosingType.MetadataToken;
+				this.NestedClass.AddRecord(rec);
+			}
+			return typeBuilder;
+		}
+
+		private void PostDefineType(TypeBuilder typeBuilder, PackingSize packingSize, int typesize)
+		{
+			types.Add(typeBuilder);
+			fullNameToType.Add(typeBuilder.FullName, typeBuilder);
+			if (packingSize != PackingSize.Unspecified || typesize != 0)
+			{
+				ClassLayoutTable.Record rec = new ClassLayoutTable.Record();
+				rec.PackingSize = (short)packingSize;
+				rec.ClassSize = typesize;
+				rec.Parent = typeBuilder.MetadataToken;
+				this.ClassLayout.AddRecord(rec);
+			}
+		}
+
+		public FieldBuilder __DefineField(string name, Type type, Type[] requiredCustomModifiers, Type[] optionalCustomModifiers, FieldAttributes attributes)
+		{
+			return moduleType.DefineField(name, type, requiredCustomModifiers, optionalCustomModifiers, attributes);
+		}
+
+		public ConstructorBuilder __DefineModuleInitializer(MethodAttributes visibility)
+		{
+			return moduleType.DefineConstructor(visibility | MethodAttributes.Static | MethodAttributes.SpecialName | MethodAttributes.RTSpecialName, CallingConventions.Standard, Type.EmptyTypes);
+		}
+
+		public FieldBuilder DefineUninitializedData(string name, int size, FieldAttributes attributes)
+		{
+			return moduleType.DefineUninitializedData(name, size, attributes);
+		}
+
+		public FieldBuilder DefineInitializedData(string name, byte[] data, FieldAttributes attributes)
+		{
+			return moduleType.DefineInitializedData(name, data, attributes);
+		}
+
+		public MethodBuilder DefineGlobalMethod(string name, MethodAttributes attributes, Type returnType, Type[] parameterTypes)
+		{
+			return moduleType.DefineMethod(name, attributes, returnType, parameterTypes);
+		}
+
+		public MethodBuilder DefineGlobalMethod(string name, MethodAttributes attributes, CallingConventions callingConvention, Type returnType, Type[] parameterTypes)
+		{
+			return moduleType.DefineMethod(name, attributes, callingConvention, returnType, parameterTypes);
+		}
+
+		public MethodBuilder DefineGlobalMethod(string name, MethodAttributes attributes, CallingConventions callingConvention, Type returnType, Type[] requiredReturnTypeCustomModifiers, Type[] optionalReturnTypeCustomModifiers, Type[] parameterTypes, Type[][] requiredParameterTypeCustomModifiers, Type[][] optionalParameterTypeCustomModifiers)
+		{
+			return moduleType.DefineMethod(name, attributes, callingConvention, returnType, requiredReturnTypeCustomModifiers, optionalReturnTypeCustomModifiers, parameterTypes, requiredParameterTypeCustomModifiers, optionalParameterTypeCustomModifiers);
+		}
+
+		public MethodBuilder DefinePInvokeMethod(string name, string dllName, MethodAttributes attributes, CallingConventions callingConvention, Type returnType, Type[] parameterTypes, CallingConvention nativeCallConv, CharSet nativeCharSet)
+		{
+			return moduleType.DefinePInvokeMethod(name, dllName, attributes, callingConvention, returnType, parameterTypes, nativeCallConv, nativeCharSet);
+		}
+
+		public MethodBuilder DefinePInvokeMethod(string name, string dllName, string entryName, MethodAttributes attributes, CallingConventions callingConvention, Type returnType, Type[] parameterTypes, CallingConvention nativeCallConv, CharSet nativeCharSet)
+		{
+			return moduleType.DefinePInvokeMethod(name, dllName, entryName, attributes, callingConvention, returnType, parameterTypes, nativeCallConv, nativeCharSet);
+		}
+
+		public void CreateGlobalFunctions()
+		{
+			moduleType.CreateType();
+		}
+
+		internal void AddTypeForwarder(Type type)
+		{
+			ExportType(type);
+			foreach (Type nested in type.GetNestedTypes(BindingFlags.Public | BindingFlags.NonPublic))
+			{
+				// we export all nested types (i.e. even the private ones)
+				// (this behavior is the same as the C# compiler)
+				AddTypeForwarder(nested);
+			}
+		}
+
+		private int ExportType(Type type)
+		{
+			ExportedTypeTable.Record rec = new ExportedTypeTable.Record();
+			rec.TypeDefId = type.MetadataToken;
+			rec.TypeName = this.Strings.Add(TypeNameParser.Unescape(type.Name));
+			if (type.IsNested)
+			{
+				rec.Flags = 0;
+				rec.TypeNamespace = 0;
+				rec.Implementation = ExportType(type.DeclaringType);
+			}
+			else
+			{
+				rec.Flags = 0x00200000;	// CorTypeAttr.tdForwarder
+				string ns = type.Namespace;
+				rec.TypeNamespace = ns == null ? 0 : this.Strings.Add(TypeNameParser.Unescape(ns));
+				rec.Implementation = ImportAssemblyRef(type.Assembly);
+			}
+			return 0x27000000 | this.ExportedType.FindOrAddRecord(rec);
+		}
+
+		public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute)
+		{
+			SetCustomAttribute(new CustomAttributeBuilder(con, binaryAttribute));
+		}
+
+		public void SetCustomAttribute(CustomAttributeBuilder customBuilder)
+		{
+			SetCustomAttribute(0x00000001, customBuilder);
+		}
+
+		internal void SetCustomAttribute(int token, CustomAttributeBuilder customBuilder)
+		{
+			Debug.Assert(!customBuilder.IsPseudoCustomAttribute);
+			CustomAttributeTable.Record rec = new CustomAttributeTable.Record();
+			rec.Parent = token;
+			rec.Type = this.GetConstructorToken(customBuilder.Constructor).Token;
+			rec.Value = customBuilder.WriteBlob(this);
+			this.CustomAttribute.AddRecord(rec);
+		}
+
+		internal void AddDeclarativeSecurity(int token, System.Security.Permissions.SecurityAction securityAction, System.Security.PermissionSet permissionSet)
+		{
+			DeclSecurityTable.Record rec = new DeclSecurityTable.Record();
+			rec.Action = (short)securityAction;
+			rec.Parent = token;
+			// like Ref.Emit, we're using the .NET 1.x xml format
+			rec.PermissionSet = this.Blobs.Add(ByteBuffer.Wrap(System.Text.Encoding.Unicode.GetBytes(permissionSet.ToXml().ToString())));
+			this.DeclSecurity.AddRecord(rec);
+		}
+
+		internal void AddDeclarativeSecurity(int token, List<CustomAttributeBuilder> declarativeSecurity)
+		{
+			Dictionary<int, List<CustomAttributeBuilder>> ordered = new Dictionary<int, List<CustomAttributeBuilder>>();
+			foreach (CustomAttributeBuilder cab in declarativeSecurity)
+			{
+				int action;
+				// check for HostProtectionAttribute without SecurityAction
+				if (cab.ConstructorArgumentCount == 0)
+				{
+					action = (int)System.Security.Permissions.SecurityAction.LinkDemand;
+				}
+				else
+				{
+					action = (int)cab.GetConstructorArgument(0);
+				}
+				List<CustomAttributeBuilder> list;
+				if (!ordered.TryGetValue(action, out list))
+				{
+					list = new List<CustomAttributeBuilder>();
+					ordered.Add(action, list);
+				}
+				list.Add(cab);
+			}
+			foreach (KeyValuePair<int, List<CustomAttributeBuilder>> kv in ordered)
+			{
+				DeclSecurityTable.Record rec = new DeclSecurityTable.Record();
+				rec.Action = (short)kv.Key;
+				rec.Parent = token;
+				rec.PermissionSet = WriteDeclSecurityBlob(kv.Value);
+				this.DeclSecurity.AddRecord(rec);
+			}
+		}
+
+		private int WriteDeclSecurityBlob(List<CustomAttributeBuilder> list)
+		{
+			ByteBuffer namedArgs = new ByteBuffer(100);
+			ByteBuffer bb = new ByteBuffer(list.Count * 100);
+			bb.Write((byte)'.');
+			bb.WriteCompressedInt(list.Count);
+			foreach (CustomAttributeBuilder cab in list)
+			{
+				bb.Write(cab.Constructor.DeclaringType.AssemblyQualifiedName);
+				namedArgs.Clear();
+				cab.WriteNamedArgumentsForDeclSecurity(this, namedArgs);
+				bb.WriteCompressedInt(namedArgs.Length);
+				bb.Write(namedArgs);
+			}
+			return this.Blobs.Add(bb);
+		}
+
+		public void DefineManifestResource(string name, Stream stream, ResourceAttributes attribute)
+		{
+			ManifestResourceTable.Record rec = new ManifestResourceTable.Record();
+			rec.Offset = manifestResources.Position;
+			rec.Flags = (int)attribute;
+			rec.Name = this.Strings.Add(name);
+			rec.Implementation = 0;
+			this.ManifestResource.AddRecord(rec);
+			manifestResources.Write(0);	// placeholder for the length
+			manifestResources.Write(stream);
+			int savePosition = manifestResources.Position;
+			manifestResources.Position = rec.Offset;
+			manifestResources.Write(savePosition - (manifestResources.Position + 4));
+			manifestResources.Position = savePosition;
+		}
+
+		public override Assembly Assembly
+		{
+			get { return asm; }
+		}
+
+		internal override Type GetTypeImpl(string typeName)
+		{
+			TypeBuilder type;
+			fullNameToType.TryGetValue(typeName, out type);
+			return type;
+		}
+
+		internal override void GetTypesImpl(List<Type> list)
+		{
+			foreach (Type type in types)
+			{
+				if (type != moduleType)
+				{
+					list.Add(type);
+				}
+			}
+		}
+
+		public ISymbolDocumentWriter DefineDocument(string url, Guid language, Guid languageVendor, Guid documentType)
+		{
+			return symbolWriter.DefineDocument(url, language, languageVendor, documentType);
+		}
+
+		public TypeToken GetTypeToken(string name)
+		{
+			return new TypeToken(GetType(name, true, false).MetadataToken);
+		}
+
+		public TypeToken GetTypeToken(Type type)
+		{
+			if (type.Module == this)
+			{
+				return new TypeToken(type.GetModuleBuilderToken());
+			}
+			else
+			{
+				return new TypeToken(ImportType(type));
+			}
+		}
+
+		internal int GetTypeTokenForMemberRef(Type type)
+		{
+			if (type.IsGenericTypeDefinition)
+			{
+				int token;
+				if (!memberRefTypeTokens.TryGetValue(type, out token))
+				{
+					ByteBuffer spec = new ByteBuffer(5);
+					Signature.WriteTypeSpec(this, spec, type);
+					token = 0x1B000000 | this.TypeSpec.AddRecord(this.Blobs.Add(spec));
+					memberRefTypeTokens.Add(type, token);
+				}
+				return token;
+			}
+			else if (type.IsModulePseudoType)
+			{
+				return 0x1A000000 | this.ModuleRef.FindOrAddRecord(this.Strings.Add(type.Module.ScopeName));
+			}
+			else
+			{
+				return GetTypeToken(type).Token;
+			}
+		}
+
+		private static bool IsFromGenericTypeDefinition(MemberInfo member)
+		{
+			Type decl = member.DeclaringType;
+			return decl != null && decl.IsGenericTypeDefinition;
+		}
+
+		public FieldToken GetFieldToken(FieldInfo field)
+		{
+			// NOTE for some reason, when TypeBuilder.GetFieldToken() is used on a field in a generic type definition,
+			// a memberref token is returned (confirmed on .NET) unlike for Get(Method|Constructor)Token which always
+			// simply returns the MethodDef token (if the method is from the same module).
+			FieldBuilder fb = field as FieldBuilder;
+			if (fb != null && fb.Module == this && !IsFromGenericTypeDefinition(fb))
+			{
+				return new FieldToken(fb.MetadataToken);
+			}
+			else
+			{
+				return new FieldToken(ImportMember(field));
+			}
+		}
+
+		public MethodToken GetMethodToken(MethodInfo method)
+		{
+			MethodBuilder mb = method as MethodBuilder;
+			if (mb != null && mb.ModuleBuilder == this)
+			{
+				return new MethodToken(mb.MetadataToken);
+			}
+			else
+			{
+				return new MethodToken(ImportMember(method));
+			}
+		}
+
+		// when we refer to a method on a generic type definition in the IL stream,
+		// we need to use a MemberRef (even if the method is in the same module)
+		internal MethodToken GetMethodTokenForIL(MethodInfo method)
+		{
+			if (method.IsGenericMethodDefinition)
+			{
+				method = method.MakeGenericMethod(method.GetGenericArguments());
+			}
+			if (IsFromGenericTypeDefinition(method))
+			{
+				return new MethodToken(ImportMember(method));
+			}
+			else
+			{
+				return GetMethodToken(method);
+			}
+		}
+
+		public MethodToken GetConstructorToken(ConstructorInfo constructor)
+		{
+			if (constructor.Module == this && constructor.GetMethodInfo() is MethodBuilder)
+			{
+				return new MethodToken(constructor.MetadataToken);
+			}
+			else
+			{
+				return new MethodToken(ImportMember(constructor));
+			}
+		}
+
+		internal int ImportMember(MethodBase member)
+		{
+			int token;
+			if (!importedMembers.TryGetValue(member, out token))
+			{
+				token = member.ImportTo(this);
+				importedMembers.Add(member, token);
+			}
+			return token;
+		}
+
+		internal int ImportMember(FieldInfo member)
+		{
+			int token;
+			if (!importedMembers.TryGetValue(member, out token))
+			{
+				token = member.ImportTo(this);
+				importedMembers.Add(member, token);
+			}
+			return token;
+		}
+
+		internal int ImportMethodOrField(Type declaringType, string name, Signature sig)
+		{
+			int token;
+			if (!importedMemberRefs.TryGetValue(new MemberRefKey(declaringType, name, sig), out token))
+			{
+				MemberRefTable.Record rec = new MemberRefTable.Record();
+				rec.Class = GetTypeTokenForMemberRef(declaringType);
+				rec.Name = this.Strings.Add(name);
+				ByteBuffer bb = new ByteBuffer(16);
+				sig.WriteSig(this, bb);
+				rec.Signature = this.Blobs.Add(bb);
+				token = 0x0A000000 | this.MemberRef.AddRecord(rec);
+				importedMemberRefs.Add(new MemberRefKey(declaringType, name, sig), token);
+			}
+			return token;
+		}
+
+		internal int ImportType(Type type)
+		{
+			int token;
+			if (!typeTokens.TryGetValue(type, out token))
+			{
+				if (type.HasElementType || (type.IsGenericType && !type.IsGenericTypeDefinition))
+				{
+					ByteBuffer spec = new ByteBuffer(5);
+					Signature.WriteTypeSpec(this, spec, type);
+					token = 0x1B000000 | this.TypeSpec.AddRecord(this.Blobs.Add(spec));
+				}
+				else
+				{
+					TypeRefTable.Record rec = new TypeRefTable.Record();
+					if (type.IsNested)
+					{
+						rec.ResolutionScope = GetTypeToken(type.DeclaringType).Token;
+						rec.TypeName = this.Strings.Add(TypeNameParser.Unescape(type.Name));
+						rec.TypeNameSpace = 0;
+					}
+					else
+					{
+						rec.ResolutionScope = ImportAssemblyRef(type.Assembly);
+						rec.TypeName = this.Strings.Add(TypeNameParser.Unescape(type.Name));
+						string ns = type.Namespace;
+						rec.TypeNameSpace = ns == null ? 0 : this.Strings.Add(TypeNameParser.Unescape(ns));
+					}
+					token = 0x01000000 | this.TypeRef.AddRecord(rec);
+				}
+				typeTokens.Add(type, token);
+			}
+			return token;
+		}
+
+		private int ImportAssemblyRef(Assembly asm)
+		{
+			int token;
+			if (!referencedAssemblies.TryGetValue(asm, out token))
+			{
+				// We can't write the AssemblyRef record here yet, because the identity of the assembly can still change
+				// (if it's an AssemblyBuilder).
+				// We set the high bit of rid in the token to make sure we emit obviously broken metadata,
+				// if we forget to patch up the token somewhere.
+				token = 0x23800001 + referencedAssemblies.Count;
+				referencedAssemblies.Add(asm, token);
+			}
+			return token;
+		}
+
+		internal void FillAssemblyRefTable()
+		{
+			int[] realtokens = new int[referencedAssemblies.Count];
+			foreach (KeyValuePair<Assembly, int> kv in referencedAssemblies)
+			{
+				realtokens[(kv.Value & 0x7FFFFF) - 1] = FindOrAddAssemblyRef(kv.Key.GetName());
+			}
+			// now fixup the resolution scopes in TypeRef
+			for (int i = 0; i < this.TypeRef.records.Length; i++)
+			{
+				int resolutionScope = this.TypeRef.records[i].ResolutionScope;
+				if ((resolutionScope >> 24) == AssemblyRefTable.Index)
+				{
+					this.TypeRef.records[i].ResolutionScope = realtokens[(resolutionScope & 0x7FFFFF) - 1];
+				}
+			}
+			// and implementation in ExportedType
+			for (int i = 0; i < this.ExportedType.records.Length; i++)
+			{
+				int implementation = this.ExportedType.records[i].Implementation;
+				if ((implementation >> 24) == AssemblyRefTable.Index)
+				{
+					this.ExportedType.records[i].Implementation = realtokens[(implementation & 0x7FFFFF) - 1];
+				}
+			}
+		}
+
+		private int FindOrAddAssemblyRef(AssemblyName name)
+		{
+			AssemblyRefTable.Record rec = new AssemblyRefTable.Record();
+			Version ver = name.Version;
+			rec.MajorVersion = (ushort)ver.Major;
+			rec.MinorVersion = (ushort)ver.Minor;
+			rec.BuildNumber = (ushort)ver.Build;
+			rec.RevisionNumber = (ushort)ver.Revision;
+			rec.Flags = (int)(name.Flags & AssemblyNameFlags.Retargetable);
+			byte[] publicKeyOrToken = null;
+			if (usePublicKeyAssemblyReference)
+			{
+				publicKeyOrToken = name.GetPublicKey();
+			}
+			if (publicKeyOrToken == null || publicKeyOrToken.Length == 0)
+			{
+				publicKeyOrToken = name.GetPublicKeyToken();
+			}
+			else
+			{
+				const int PublicKey = 0x0001;
+				rec.Flags |= PublicKey;
+			}
+			rec.PublicKeyOrToken = this.Blobs.Add(ByteBuffer.Wrap(publicKeyOrToken));
+			rec.Name = this.Strings.Add(name.Name);
+			if (name.CultureInfo != null)
+			{
+				rec.Culture = this.Strings.Add(name.CultureInfo.Name);
+			}
+			else
+			{
+				rec.Culture = 0;
+			}
+			rec.HashValue = 0;
+			return 0x23000000 | this.AssemblyRef.FindOrAddRecord(rec);
+		}
+
+		internal void WriteSymbolTokenMap()
+		{
+			for (int i = 0; i < resolvedTokens.Count; i++)
+			{
+				int newToken = resolvedTokens[i];
+				// The symbol API doesn't support remapping arbitrary integers, the types have to be the same,
+				// so we copy the type from the newToken, because our pseudo tokens don't have a type.
+				// (see MethodToken.SymbolToken)
+				int oldToken = (i + 1) | (newToken & ~0xFFFFFF);
+				SymbolSupport.RemapToken(symbolWriter, oldToken, newToken);
+			}
+		}
+
+		internal void RegisterTokenFixup(int pseudoToken, int realToken)
+		{
+			int index = -(pseudoToken + 1);
+			while (resolvedTokens.Count <= index)
+			{
+				resolvedTokens.Add(0);
+			}
+			resolvedTokens[index] = realToken;
+		}
+
+		internal bool IsPseudoToken(int token)
+		{
+			return token < 0;
+		}
+
+		internal int ResolvePseudoToken(int pseudoToken)
+		{
+			int index = -(pseudoToken + 1);
+			return resolvedTokens[index];
+		}
+
+		internal void FixupMethodBodyTokens()
+		{
+			int methodToken = 0x06000001;
+			int fieldToken = 0x04000001;
+			int parameterToken = 0x08000001;
+			foreach (TypeBuilder type in types)
+			{
+				type.ResolveMethodAndFieldTokens(ref methodToken, ref fieldToken, ref parameterToken);
+			}
+			foreach (int offset in tokenFixupOffsets)
+			{
+				methodBodies.Position = offset;
+				int pseudoToken = methodBodies.GetInt32AtCurrentPosition();
+				methodBodies.Write(ResolvePseudoToken(pseudoToken));
+			}
+		}
+
+		private int GetHeaderLength()
+		{
+			return
+				4 + // Signature
+				2 + // MajorVersion
+				2 + // MinorVersion
+				4 + // Reserved
+				4 + // ImageRuntimeVersion Length
+				StringToPaddedUTF8Length(asm.ImageRuntimeVersion) +
+				2 + // Flags
+				2 + // Streams
+				4 + // #~ Offset
+				4 + // #~ Size
+				4 + // StringToPaddedUTF8Length("#~")
+				4 + // #Strings Offset
+				4 + // #Strings Size
+				12 + // StringToPaddedUTF8Length("#Strings")
+				4 + // #US Offset
+				4 + // #US Size
+				4 + // StringToPaddedUTF8Length("#US")
+				4 + // #GUID Offset
+				4 + // #GUID Size
+				8 + // StringToPaddedUTF8Length("#GUID")
+				(Blobs.IsEmpty ? 0 :
+				(
+				4 + // #Blob Offset
+				4 + // #Blob Size
+				8   // StringToPaddedUTF8Length("#Blob")
+				));
+		}
+
+		internal int MetadataLength
+		{
+			get
+			{
+				return GetHeaderLength() + (Blobs.IsEmpty ? 0 : Blobs.Length) + Tables.Length + Strings.Length + UserStrings.Length + Guids.Length;
+			}
+		}
+
+		internal void WriteMetadata(MetadataWriter mw)
+		{
+			mw.Write(0x424A5342);			// Signature ("BSJB")
+			mw.Write((ushort)1);			// MajorVersion
+			mw.Write((ushort)1);			// MinorVersion
+			mw.Write(0);					// Reserved
+			byte[] version = StringToPaddedUTF8(asm.ImageRuntimeVersion);
+			mw.Write(version.Length);		// Length
+			mw.Write(version);
+			mw.Write((ushort)0);			// Flags
+			// #Blob is the only optional heap
+			if (Blobs.IsEmpty)
+			{
+				mw.Write((ushort)4);		// Streams
+			}
+			else
+			{
+				mw.Write((ushort)5);		// Streams
+			}
+
+			int offset = GetHeaderLength();
+
+			// Streams
+			mw.Write(offset);				// Offset
+			mw.Write(Tables.Length);		// Size
+			mw.Write(StringToPaddedUTF8("#~"));
+			offset += Tables.Length;
+
+			mw.Write(offset);				// Offset
+			mw.Write(Strings.Length);		// Size
+			mw.Write(StringToPaddedUTF8("#Strings"));
+			offset += Strings.Length;
+
+			mw.Write(offset);				// Offset
+			mw.Write(UserStrings.Length);	// Size
+			mw.Write(StringToPaddedUTF8("#US"));
+			offset += UserStrings.Length;
+
+			mw.Write(offset);				// Offset
+			mw.Write(Guids.Length);			// Size
+			mw.Write(StringToPaddedUTF8("#GUID"));
+			offset += Guids.Length;
+
+			if (!Blobs.IsEmpty)
+			{
+				mw.Write(offset);				// Offset
+				mw.Write(Blobs.Length);			// Size
+				mw.Write(StringToPaddedUTF8("#Blob"));
+			}
+
+			Tables.Write(mw);
+			Strings.Write(mw);
+			UserStrings.Write(mw);
+			Guids.Write(mw);
+			if (!Blobs.IsEmpty)
+			{
+				Blobs.Write(mw);
+			}
+		}
+
+		private static int StringToPaddedUTF8Length(string str)
+		{
+			return (System.Text.Encoding.UTF8.GetByteCount(str) + 4) & ~3;
+		}
+
+		private static byte[] StringToPaddedUTF8(string str)
+		{
+			byte[] buf = new byte[(System.Text.Encoding.UTF8.GetByteCount(str) + 4) & ~3];
+			System.Text.Encoding.UTF8.GetBytes(str, 0, str.Length, buf, 0);
+			return buf;
+		}
+
+		internal override void ExportTypes(int fileToken, ModuleBuilder manifestModule)
+		{
+			manifestModule.ExportTypes(types.ToArray(), fileToken);
+		}
+
+		internal void ExportTypes(Type[] types, int fileToken)
+		{
+			Dictionary<Type, int> declaringTypes = new Dictionary<Type, int>();
+			foreach (Type type in types)
+			{
+				if (!type.IsModulePseudoType && IsVisible(type))
+				{
+					ExportedTypeTable.Record rec = new ExportedTypeTable.Record();
+					rec.Flags = (int)type.Attributes;
+					rec.TypeDefId = type.MetadataToken & 0xFFFFFF;
+					rec.TypeName = this.Strings.Add(TypeNameParser.Unescape(type.Name));
+					string ns = type.Namespace;
+					rec.TypeNamespace = ns == null ? 0 : this.Strings.Add(TypeNameParser.Unescape(ns));
+					if (type.IsNested)
+					{
+						rec.Implementation = declaringTypes[type.DeclaringType];
+					}
+					else
+					{
+						rec.Implementation = fileToken;
+					}
+					int exportTypeToken = 0x27000000 | this.ExportedType.AddRecord(rec);
+					declaringTypes.Add(type, exportTypeToken);
+				}
+			}
+		}
+
+		private static bool IsVisible(Type type)
+		{
+			// NOTE this is not the same as Type.IsVisible, because that doesn't take into account family access
+			return type.IsPublic || ((type.IsNestedFamily || type.IsNestedFamORAssem || type.IsNestedPublic) && IsVisible(type.DeclaringType));
+		}
+
+		internal void AddConstant(int parentToken, object defaultValue)
+		{
+			ConstantTable.Record rec = new ConstantTable.Record();
+			rec.Parent = parentToken;
+			ByteBuffer val = new ByteBuffer(16);
+			if (defaultValue == null)
+			{
+				rec.Type = Signature.ELEMENT_TYPE_CLASS;
+				val.Write((int)0);
+			}
+			else if (defaultValue is bool)
+			{
+				rec.Type = Signature.ELEMENT_TYPE_BOOLEAN;
+				val.Write((bool)defaultValue ? (byte)1 : (byte)0);
+			}
+			else if (defaultValue is char)
+			{
+				rec.Type = Signature.ELEMENT_TYPE_CHAR;
+				val.Write((char)defaultValue);
+			}
+			else if (defaultValue is sbyte)
+			{
+				rec.Type = Signature.ELEMENT_TYPE_I1;
+				val.Write((sbyte)defaultValue);
+			}
+			else if (defaultValue is byte)
+			{
+				rec.Type = Signature.ELEMENT_TYPE_U1;
+				val.Write((byte)defaultValue);
+			}
+			else if (defaultValue is short)
+			{
+				rec.Type = Signature.ELEMENT_TYPE_I2;
+				val.Write((short)defaultValue);
+			}
+			else if (defaultValue is ushort)
+			{
+				rec.Type = Signature.ELEMENT_TYPE_U2;
+				val.Write((ushort)defaultValue);
+			}
+			else if (defaultValue is int)
+			{
+				rec.Type = Signature.ELEMENT_TYPE_I4;
+				val.Write((int)defaultValue);
+			}
+			else if (defaultValue is uint)
+			{
+				rec.Type = Signature.ELEMENT_TYPE_U4;
+				val.Write((uint)defaultValue);
+			}
+			else if (defaultValue is long)
+			{
+				rec.Type = Signature.ELEMENT_TYPE_I8;
+				val.Write((long)defaultValue);
+			}
+			else if (defaultValue is ulong)
+			{
+				rec.Type = Signature.ELEMENT_TYPE_U8;
+				val.Write((ulong)defaultValue);
+			}
+			else if (defaultValue is float)
+			{
+				rec.Type = Signature.ELEMENT_TYPE_R4;
+				val.Write((float)defaultValue);
+			}
+			else if (defaultValue is double)
+			{
+				rec.Type = Signature.ELEMENT_TYPE_R8;
+				val.Write((double)defaultValue);
+			}
+			else if (defaultValue is string)
+			{
+				rec.Type = Signature.ELEMENT_TYPE_STRING;
+				foreach (char c in (string)defaultValue)
+				{
+					val.Write(c);
+				}
+			}
+			else if (defaultValue is DateTime)
+			{
+				rec.Type = Signature.ELEMENT_TYPE_I8;
+				val.Write(((DateTime)defaultValue).Ticks);
+			}
+			else
+			{
+				throw new ArgumentException();
+			}
+			rec.Value = this.Blobs.Add(val);
+			this.Constant.AddRecord(rec);
+		}
+
+		ModuleBuilder ITypeOwner.ModuleBuilder
+		{
+			get { return this; }
+		}
+
+		public override Type ResolveType(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)
+		{
+			if (genericTypeArguments != null || genericMethodArguments != null)
+			{
+				throw new NotImplementedException();
+			}
+			return types[(metadataToken & 0xFFFFFF) - 1];
+		}
+
+		public override MethodBase ResolveMethod(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)
+		{
+			if (genericTypeArguments != null || genericMethodArguments != null)
+			{
+				throw new NotImplementedException();
+			}
+			// this method is inefficient, but since it isn't used we don't care
+			if ((metadataToken >> 24) == MemberRefTable.Index)
+			{
+				foreach (KeyValuePair<MemberInfo, int> kv in importedMembers)
+				{
+					if (kv.Value == metadataToken)
+					{
+						return (MethodBase)kv.Key;
+					}
+				}
+			}
+			// HACK if we're given a SymbolToken, we need to convert back
+			if ((metadataToken & 0xFF000000) == 0x06000000)
+			{
+				metadataToken = -(metadataToken & 0x00FFFFFF);
+			}
+			foreach (Type type in types)
+			{
+				MethodBase method = ((TypeBuilder)type).LookupMethod(metadataToken);
+				if (method != null)
+				{
+					return method;
+				}
+			}
+			return ((TypeBuilder)moduleType).LookupMethod(metadataToken);
+		}
+
+		public override FieldInfo ResolveField(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)
+		{
+			throw new NotImplementedException();
+		}
+
+		public override MemberInfo ResolveMember(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)
+		{
+			throw new NotImplementedException();
+		}
+
+		public override string ResolveString(int metadataToken)
+		{
+			throw new NotImplementedException();
+		}
+
+		public override string FullyQualifiedName
+		{
+			get { return Path.GetFullPath(Path.Combine(asm.dir, fileName)); }
+		}
+
+		public override string Name
+		{
+			get { return fileName; }
+		}
+
+		public override Guid ModuleVersionId
+		{
+			get { return mvid; }
+		}
+
+		public override Type[] __ResolveOptionalParameterTypes(int metadataToken)
+		{
+			throw new NotImplementedException();
+		}
+
+		public override string ScopeName
+		{
+			get { return moduleName; }
+		}
+
+		public ISymbolWriter GetSymWriter()
+		{
+			return symbolWriter;
+		}
+
+		public void DefineUnmanagedResource(string resourceFileName)
+		{
+			// This method reads the specified resource file (Win32 .res file) and converts it into the appropriate format and embeds it in the .rsrc section,
+			// also setting the Resource Directory entry.
+			unmanagedResources = new ResourceSection();
+			unmanagedResources.ExtractResources(System.IO.File.ReadAllBytes(resourceFileName));
+		}
+
+		public bool IsTransient()
+		{
+			return false;
+		}
+
+		public void SetUserEntryPoint(MethodInfo entryPoint)
+		{
+			int token = entryPoint.MetadataToken;
+			if (token < 0)
+			{
+				token = -token | 0x06000000;
+			}
+			if (symbolWriter != null)
+			{
+				symbolWriter.SetUserEntryPoint(new SymbolToken(token));
+			}
+		}
+
+		public StringToken GetStringConstant(string str)
+		{
+			return new StringToken(this.UserStrings.Add(str) | (0x70 << 24));
+		}
+
+		public SignatureToken GetSignatureToken(SignatureHelper sigHelper)
+		{
+			return new SignatureToken(this.StandAloneSig.FindOrAddRecord(this.Blobs.Add(sigHelper.GetSignature(this))) | (StandAloneSigTable.Index << 24));
+		}
+
+		public SignatureToken GetSignatureToken(byte[] sigBytes, int sigLength)
+		{
+			return new SignatureToken(this.StandAloneSig.FindOrAddRecord(this.Blobs.Add(ByteBuffer.Wrap(sigBytes, sigLength))) | (StandAloneSigTable.Index << 24));
+		}
+
+		public MethodInfo GetArrayMethod(Type arrayClass, string methodName, CallingConventions callingConvention, Type returnType, Type[] parameterTypes)
+		{
+			return new ArrayMethod(this, arrayClass, methodName, callingConvention, returnType, parameterTypes);
+		}
+
+		public MethodToken GetArrayMethodToken(Type arrayClass, string methodName, CallingConventions callingConvention, Type returnType, Type[] parameterTypes)
+		{
+			return GetMethodToken(GetArrayMethod(arrayClass, methodName, callingConvention, returnType, parameterTypes));
+		}
+
+		internal override Type GetModuleType()
+		{
+			return moduleType;
+		}
+
+		internal override IKVM.Reflection.Reader.ByteReader GetBlob(int blobIndex)
+		{
+			return Blobs.GetBlob(blobIndex);
+		}
+
+		internal int GetSignatureBlobIndex(Signature sig)
+		{
+			ByteBuffer bb = new ByteBuffer(16);
+			sig.WriteSig(this, bb);
+			return this.Blobs.Add(bb);
+		}
+
+		// non-standard API
+		public long __ImageBase
+		{
+			get { return imageBaseAddress; }
+			set { imageBaseAddress = value; }
+		}
+
+		public override int MDStreamVersion
+		{
+			get { return asm.mdStreamVersion; }
+		}
+
+		private int AddTypeRefByName(int resolutionScope, string ns, string name)
+		{
+			TypeRefTable.Record rec = new TypeRefTable.Record();
+			rec.ResolutionScope = resolutionScope;
+			rec.TypeName = this.Strings.Add(name);
+			rec.TypeNameSpace = ns == null ? 0 : this.Strings.Add(ns);
+			return 0x01000000 | this.TypeRef.AddRecord(rec);
+		}
+
+		public void __Save(PortableExecutableKinds portableExecutableKind, ImageFileMachine imageFileMachine)
+		{
+			PopulatePropertyAndEventTables();
+			IList<CustomAttributeData> attributes = asm.GetCustomAttributesData(null);
+			if (attributes.Count > 0)
+			{
+				int mscorlib = ImportAssemblyRef(universe.Mscorlib);
+				int[] placeholderTokens = new int[4];
+				string[] placeholderTypeNames = new string[] { "AssemblyAttributesGoHere", "AssemblyAttributesGoHereM", "AssemblyAttributesGoHereS", "AssemblyAttributesGoHereSM" };
+				foreach (CustomAttributeData cad in attributes)
+				{
+					int index;
+					if (cad.Constructor.DeclaringType.BaseType == universe.System_Security_Permissions_CodeAccessSecurityAttribute)
+					{
+						if (cad.Constructor.DeclaringType.IsAllowMultipleCustomAttribute)
+						{
+							index = 3;
+						}
+						else
+						{
+							index = 2;
+						}
+					}
+					else if (cad.Constructor.DeclaringType.IsAllowMultipleCustomAttribute)
+					{
+						index = 1;
+					}
+					else
+					{
+						index = 0;
+					}
+					if (placeholderTokens[index] == 0)
+					{
+						// we manually add a TypeRef without looking it up in mscorlib, because Mono and Silverlight's mscorlib don't have these types
+						placeholderTokens[index] = AddTypeRefByName(mscorlib, "System.Runtime.CompilerServices", placeholderTypeNames[index]);
+					}
+					SetCustomAttribute(placeholderTokens[index], cad.__ToBuilder());
+				}
+			}
+			FillAssemblyRefTable();
+			ModuleWriter.WriteModule(null, null, this, PEFileKinds.Dll, portableExecutableKind, imageFileMachine, unmanagedResources, 0);
+		}
+
+		public void __AddAssemblyReference(AssemblyName assemblyName)
+		{
+			if (referencedAssemblyNames == null)
+			{
+				referencedAssemblyNames = new List<AssemblyName>();
+			}
+			FindOrAddAssemblyRef(assemblyName);
+			referencedAssemblyNames.Add((AssemblyName)assemblyName.Clone());
+		}
+
+		public override AssemblyName[] __GetReferencedAssemblies()
+		{
+			List<AssemblyName> list = new List<AssemblyName>();
+			if (referencedAssemblyNames != null)
+			{
+				foreach (AssemblyName name in referencedAssemblyNames)
+				{
+					if (!list.Contains(name))
+					{
+						list.Add(name);
+					}
+				}
+			}
+			foreach (Assembly asm in referencedAssemblies.Keys)
+			{
+				AssemblyName name = asm.GetName();
+				if (!list.Contains(name))
+				{
+					list.Add(name);
+				}
+			}
+			return list.ToArray();
+		}
+	}
+
+	class ArrayMethod : MethodInfo
+	{
+		private readonly Module module;
+		private readonly Type arrayClass;
+		private readonly string methodName;
+		private readonly CallingConventions callingConvention;
+		private readonly Type returnType;
+		protected readonly Type[] parameterTypes;
+		private MethodSignature methodSignature;
+
+		internal ArrayMethod(Module module, Type arrayClass, string methodName, CallingConventions callingConvention, Type returnType, Type[] parameterTypes)
+		{
+			this.module = module;
+			this.arrayClass = arrayClass;
+			this.methodName = methodName;
+			this.callingConvention = callingConvention;
+			this.returnType = returnType ?? module.universe.System_Void;
+			this.parameterTypes = Util.Copy(parameterTypes);
+		}
+
+		public override MethodBody GetMethodBody()
+		{
+			throw new InvalidOperationException();
+		}
+
+		public override MethodImplAttributes GetMethodImplementationFlags()
+		{
+			throw new NotSupportedException();
+		}
+
+		public override ParameterInfo[] GetParameters()
+		{
+			throw new NotSupportedException();
+		}
+
+		internal override int ImportTo(ModuleBuilder module)
+		{
+			return module.ImportMethodOrField(arrayClass, methodName, MethodSignature);
+		}
+
+		public override MethodAttributes Attributes
+		{
+			get { throw new NotSupportedException(); }
+		}
+
+		public override CallingConventions CallingConvention
+		{
+			get { return callingConvention; }
+		}
+
+		public override Type DeclaringType
+		{
+			get { return arrayClass; }
+		}
+
+		internal override MethodSignature MethodSignature
+		{
+			get
+			{
+				if (methodSignature == null)
+				{
+					methodSignature = MethodSignature.MakeFromBuilder(returnType, parameterTypes, null, callingConvention, 0);
+				}
+				return methodSignature;
+			}
+		}
+
+		public override Module Module
+		{
+			// like .NET, we return the module that GetArrayMethod was called on, not the module associated with the array type
+			get { return module; }
+		}
+
+		public override string Name
+		{
+			get { return methodName; }
+		}
+
+		internal override int ParameterCount
+		{
+			get { return parameterTypes.Length; }
+		}
+
+		public override ParameterInfo ReturnParameter
+		{
+			get { throw new NotImplementedException(); }
+		}
+
+		public override Type ReturnType
+		{
+			get { return returnType; }
+		}
+
+		internal override bool HasThis
+		{
+			get { return (callingConvention & (CallingConventions.HasThis | CallingConventions.ExplicitThis)) == CallingConventions.HasThis; }
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Emit/OpCode.cs b/mcs/class/IKVM.Reflection/Emit/OpCode.cs
new file mode 100644
index 0000000..1d75a0a
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Emit/OpCode.cs
@@ -0,0 +1,288 @@
+/*
+  Copyright (C) 2008, 2010 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Diagnostics;
+
+namespace IKVM.Reflection.Emit
+{
+	public struct OpCode
+	{
+		private const int ValueCount = 1024;
+		private const int OperandTypeCount = 19;
+		private const int FlowControlCount = 9;
+		private const int StackDiffCount = 5;
+		private const int OpCodeTypeCount = 6;
+		private const int StackBehaviourPopCount = 20;
+		private const int StackBehaviourPushCount = 9;
+		private static readonly StackBehaviour[] pop = {
+			StackBehaviour.Pop0,
+			StackBehaviour.Pop1,
+			StackBehaviour.Pop1_pop1,
+			StackBehaviour.Popi,
+			StackBehaviour.Popi_pop1,
+			StackBehaviour.Popi_popi,
+			StackBehaviour.Popi_popi8,
+			StackBehaviour.Popi_popi_popi,
+			StackBehaviour.Popi_popr4,
+			StackBehaviour.Popi_popr8,
+			StackBehaviour.Popref,
+			StackBehaviour.Popref_pop1,
+			StackBehaviour.Popref_popi,
+			StackBehaviour.Popref_popi_popi,
+			StackBehaviour.Popref_popi_popi8,
+			StackBehaviour.Popref_popi_popr4,
+			StackBehaviour.Popref_popi_popr8,
+			StackBehaviour.Popref_popi_popref,
+			StackBehaviour.Varpop,
+			StackBehaviour.Popref_popi_pop1
+		};
+		private static readonly StackBehaviour[] push = {
+			StackBehaviour.Push0,
+			StackBehaviour.Push1,
+			StackBehaviour.Push1_push1,
+			StackBehaviour.Pushi,
+			StackBehaviour.Pushi8,
+			StackBehaviour.Pushr4,
+			StackBehaviour.Pushr8,
+			StackBehaviour.Pushref,
+			StackBehaviour.Varpush
+		};
+		private readonly int value;
+
+		internal OpCode(int value)
+		{
+			this.value = value;
+		}
+
+		public override bool Equals(object obj)
+		{
+			return this == obj as OpCode?;
+		}
+
+		public override int GetHashCode()
+		{
+			return value;
+		}
+
+		public bool Equals(OpCode other)
+		{
+			return this == other;
+		}
+
+		public static bool operator ==(OpCode a, OpCode b)
+		{
+			return a.value == b.value;
+		}
+
+		public static bool operator !=(OpCode a, OpCode b)
+		{
+			return !(a == b);
+		}
+
+		public short Value
+		{
+			get { return (short)(value >> 22); }
+		}
+
+		public int Size
+		{
+			get { return value < 0 ? 2 : 1; }
+		}
+
+#if !GENERATOR
+		public string Name
+		{
+			get { return OpCodes.GetName(this.Value); }
+		}
+#endif
+
+		public OperandType OperandType
+		{
+			get { return (OperandType)((value & 0x3FFFFF) % OperandTypeCount); }
+		}
+
+		public FlowControl FlowControl
+		{
+			get { return (FlowControl)(((value & 0x3FFFFF) / OperandTypeCount) % FlowControlCount); }
+		}
+
+		internal int StackDiff
+		{
+			get { return ((((value & 0x3FFFFF) / (OperandTypeCount * FlowControlCount)) % StackDiffCount) - 3); }
+		}
+
+		public OpCodeType OpCodeType
+		{
+			get { return (OpCodeType)(((value & 0x3FFFFF) / (OperandTypeCount * FlowControlCount * StackDiffCount)) % OpCodeTypeCount); }
+		}
+
+		public StackBehaviour StackBehaviourPop
+		{
+			get { return pop[(((value & 0x3FFFFF) / (OperandTypeCount * FlowControlCount * StackDiffCount * OpCodeTypeCount)) % StackBehaviourPopCount)]; }
+		}
+
+		public StackBehaviour StackBehaviourPush
+		{
+			get { return push[(((value & 0x3FFFFF) / (OperandTypeCount * FlowControlCount * StackDiffCount * OpCodeTypeCount * StackBehaviourPopCount)) % StackBehaviourPushCount)]; }
+		}
+
+#if GENERATOR
+		static void Main(string[] args)
+		{
+			Debug.Assert(pop.Length == StackBehaviourPopCount);
+			Debug.Assert(push.Length == StackBehaviourPushCount);
+			CheckEnumRange(typeof(FlowControl), FlowControlCount);
+			CheckEnumRange(typeof(OpCodeType), OpCodeTypeCount);
+			CheckEnumRange(typeof(OperandType), OperandTypeCount);
+			foreach (var field in typeof(System.Reflection.Emit.OpCodes).GetFields(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static))
+			{
+				System.Reflection.Emit.OpCode opc1 = (System.Reflection.Emit.OpCode)field.GetValue(null);
+				IKVM.Reflection.Emit.OpCode opc2 = new IKVM.Reflection.Emit.OpCode(Pack(opc1));
+				Debug.Assert(opc1.Value == opc2.Value);
+				Debug.Assert(opc1.Size == opc2.Size);
+				Debug.Assert((int)opc1.FlowControl == (int)opc2.FlowControl);
+				Debug.Assert((int)opc1.OpCodeType == (int)opc2.OpCodeType);
+				Debug.Assert((int)opc1.OperandType == (int)opc2.OperandType);
+				Debug.Assert((int)opc1.StackBehaviourPop == (int)opc2.StackBehaviourPop);
+				Debug.Assert((int)opc1.StackBehaviourPush == (int)opc2.StackBehaviourPush);
+				Console.WriteLine("\t\tpublic static readonly OpCode {0} = new OpCode({1});", field.Name, Pack(opc1));
+			}
+			Console.WriteLine();
+			Console.WriteLine("\t\tinternal static string GetName(int value)");
+			Console.WriteLine("\t\t{");
+			Console.WriteLine("\t\t\tswitch (value)");
+			Console.WriteLine("\t\t\t{");
+			foreach (var field in typeof(System.Reflection.Emit.OpCodes).GetFields(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static))
+			{
+				System.Reflection.Emit.OpCode opc1 = (System.Reflection.Emit.OpCode)field.GetValue(null);
+				Console.WriteLine("\t\t\t\tcase {0}:", opc1.Value);
+				Console.WriteLine("\t\t\t\t\treturn \"{0}\";", opc1.Name);
+			}
+			Console.WriteLine("\t\t\t}");
+			Console.WriteLine("\t\t\tthrow new ArgumentOutOfRangeException();");
+			Console.WriteLine("\t\t}");
+			Console.WriteLine();
+			Console.WriteLine("\t\tpublic static bool TakesSingleByteArgument(OpCode inst)");
+			Console.WriteLine("\t\t{");
+			Console.WriteLine("\t\t\tswitch (inst.Value)");
+			Console.WriteLine("\t\t\t{");
+			foreach (var field in typeof(System.Reflection.Emit.OpCodes).GetFields(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static))
+			{
+				System.Reflection.Emit.OpCode opc1 = (System.Reflection.Emit.OpCode)field.GetValue(null);
+				if (System.Reflection.Emit.OpCodes.TakesSingleByteArgument(opc1))
+				{
+					Console.WriteLine("\t\t\t\tcase {0}:", opc1.Value);
+				}
+			}
+			Console.WriteLine("\t\t\t\t\treturn true;");
+			Console.WriteLine("\t\t\t\tdefault:");
+			Console.WriteLine("\t\t\t\t\treturn false;");
+			Console.WriteLine("\t\t\t}");
+			Console.WriteLine("\t\t}");
+		}
+
+		private static void CheckEnumRange(System.Type type, int count)
+		{
+			foreach (var field in type.GetFields(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static))
+			{
+				int value = (int)field.GetValue(null);
+				Debug.Assert(value >= 0 && value < count);
+			}
+		}
+
+		static int Pack(System.Reflection.Emit.OpCode opcode)
+		{
+			int value = 0;
+			value *= StackBehaviourPushCount;
+			value += Map(push, opcode.StackBehaviourPush);
+			value *= StackBehaviourPopCount;
+			value += Map(pop, opcode.StackBehaviourPop);
+			value *= OpCodeTypeCount;
+			value += (int)opcode.OpCodeType;
+			value *= StackDiffCount;
+			value += 3 + GetStackDiff(opcode.StackBehaviourPush) + GetStackDiff(opcode.StackBehaviourPop);
+			value *= FlowControlCount;
+			value += (int)opcode.FlowControl;
+			value *= OperandTypeCount;
+			value += (int)opcode.OperandType;
+			return (opcode.Value << 22) | value;
+		}
+
+		private static int Map(StackBehaviour[] array, System.Reflection.Emit.StackBehaviour stackBehaviour)
+		{
+			for (int i = 0; i < array.Length; i++)
+			{
+				if ((int)array[i] == (int)stackBehaviour)
+				{
+					return i;
+				}
+			}
+			throw new InvalidOperationException();
+		}
+
+		static int GetStackDiff(System.Reflection.Emit.StackBehaviour sb)
+		{
+			switch (sb)
+			{
+				case System.Reflection.Emit.StackBehaviour.Pop0:
+				case System.Reflection.Emit.StackBehaviour.Push0:
+				case System.Reflection.Emit.StackBehaviour.Varpop:
+				case System.Reflection.Emit.StackBehaviour.Varpush:
+					return 0;
+				case System.Reflection.Emit.StackBehaviour.Pop1:
+				case System.Reflection.Emit.StackBehaviour.Popi:
+				case System.Reflection.Emit.StackBehaviour.Popref:
+					return -1;
+				case System.Reflection.Emit.StackBehaviour.Pop1_pop1:
+				case System.Reflection.Emit.StackBehaviour.Popi_pop1:
+				case System.Reflection.Emit.StackBehaviour.Popi_popi:
+				case System.Reflection.Emit.StackBehaviour.Popi_popi8:
+				case System.Reflection.Emit.StackBehaviour.Popi_popr4:
+				case System.Reflection.Emit.StackBehaviour.Popi_popr8:
+				case System.Reflection.Emit.StackBehaviour.Popref_pop1:
+				case System.Reflection.Emit.StackBehaviour.Popref_popi:
+					return -2;
+				case System.Reflection.Emit.StackBehaviour.Popi_popi_popi:
+				case System.Reflection.Emit.StackBehaviour.Popref_popi_pop1:
+				case System.Reflection.Emit.StackBehaviour.Popref_popi_popi:
+				case System.Reflection.Emit.StackBehaviour.Popref_popi_popi8:
+				case System.Reflection.Emit.StackBehaviour.Popref_popi_popr4:
+				case System.Reflection.Emit.StackBehaviour.Popref_popi_popr8:
+				case System.Reflection.Emit.StackBehaviour.Popref_popi_popref:
+					return -3;
+				case System.Reflection.Emit.StackBehaviour.Push1:
+				case System.Reflection.Emit.StackBehaviour.Pushi:
+				case System.Reflection.Emit.StackBehaviour.Pushi8:
+				case System.Reflection.Emit.StackBehaviour.Pushr4:
+				case System.Reflection.Emit.StackBehaviour.Pushr8:
+				case System.Reflection.Emit.StackBehaviour.Pushref:
+					return 1;
+				case System.Reflection.Emit.StackBehaviour.Push1_push1:
+					return 2;
+			}
+			throw new InvalidOperationException();
+		}
+#endif // GENERATOR
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Emit/OpCodes.cs b/mcs/class/IKVM.Reflection/Emit/OpCodes.cs
new file mode 100644
index 0000000..7d4bcb0
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Emit/OpCodes.cs
@@ -0,0 +1,749 @@
+/*
+  Copyright (C) 2008 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+
+namespace IKVM.Reflection.Emit
+{
+	public class OpCodes
+	{
+		public static readonly OpCode Nop = new OpCode(4888);
+		public static readonly OpCode Break = new OpCode(4199116);
+		public static readonly OpCode Ldarg_0 = new OpCode(8492847);
+		public static readonly OpCode Ldarg_1 = new OpCode(12687151);
+		public static readonly OpCode Ldarg_2 = new OpCode(16881455);
+		public static readonly OpCode Ldarg_3 = new OpCode(21075759);
+		public static readonly OpCode Ldloc_0 = new OpCode(25270063);
+		public static readonly OpCode Ldloc_1 = new OpCode(29464367);
+		public static readonly OpCode Ldloc_2 = new OpCode(33658671);
+		public static readonly OpCode Ldloc_3 = new OpCode(37852975);
+		public static readonly OpCode Stloc_0 = new OpCode(41949467);
+		public static readonly OpCode Stloc_1 = new OpCode(46143771);
+		public static readonly OpCode Stloc_2 = new OpCode(50338075);
+		public static readonly OpCode Stloc_3 = new OpCode(54532379);
+		public static readonly OpCode Ldarg_S = new OpCode(58824508);
+		public static readonly OpCode Ldarga_S = new OpCode(63224012);
+		public static readonly OpCode Starg_S = new OpCode(67115304);
+		public static readonly OpCode Ldloc_S = new OpCode(71407420);
+		public static readonly OpCode Ldloca_S = new OpCode(75806924);
+		public static readonly OpCode Stloc_S = new OpCode(79698216);
+		public static readonly OpCode Ldnull = new OpCode(84609339);
+		public static readonly OpCode Ldc_I4_M1 = new OpCode(88389823);
+		public static readonly OpCode Ldc_I4_0 = new OpCode(92584127);
+		public static readonly OpCode Ldc_I4_1 = new OpCode(96778431);
+		public static readonly OpCode Ldc_I4_2 = new OpCode(100972735);
+		public static readonly OpCode Ldc_I4_3 = new OpCode(105167039);
+		public static readonly OpCode Ldc_I4_4 = new OpCode(109361343);
+		public static readonly OpCode Ldc_I4_5 = new OpCode(113555647);
+		public static readonly OpCode Ldc_I4_6 = new OpCode(117749951);
+		public static readonly OpCode Ldc_I4_7 = new OpCode(121944255);
+		public static readonly OpCode Ldc_I4_8 = new OpCode(126138559);
+		public static readonly OpCode Ldc_I4_S = new OpCode(130332874);
+		public static readonly OpCode Ldc_I4 = new OpCode(134530584);
+		public static readonly OpCode Ldc_I8 = new OpCode(138827489);
+		public static readonly OpCode Ldc_R4 = new OpCode(143124407);
+		public static readonly OpCode Ldc_R8 = new OpCode(147421301);
+		public static readonly OpCode Dup = new OpCode(155404637);
+		public static readonly OpCode Pop = new OpCode(159393399);
+		public static readonly OpCode Jmp = new OpCode(163582686);
+		public static readonly OpCode Call = new OpCode(168690130);
+		public static readonly OpCode Calli = new OpCode(172884439);
+		public static readonly OpCode Ret = new OpCode(176258034);
+		public static readonly OpCode Br_S = new OpCode(180356455);
+		public static readonly OpCode Brfalse_S = new OpCode(184566035);
+		public static readonly OpCode Brtrue_S = new OpCode(188760339);
+		public static readonly OpCode Beq_S = new OpCode(192949342);
+		public static readonly OpCode Bge_S = new OpCode(197143646);
+		public static readonly OpCode Bgt_S = new OpCode(201337950);
+		public static readonly OpCode Ble_S = new OpCode(205532254);
+		public static readonly OpCode Blt_S = new OpCode(209726558);
+		public static readonly OpCode Bne_Un_S = new OpCode(213920862);
+		public static readonly OpCode Bge_Un_S = new OpCode(218115166);
+		public static readonly OpCode Bgt_Un_S = new OpCode(222309470);
+		public static readonly OpCode Ble_Un_S = new OpCode(226503774);
+		public static readonly OpCode Blt_Un_S = new OpCode(230698078);
+		public static readonly OpCode Br = new OpCode(234885812);
+		public static readonly OpCode Brfalse = new OpCode(239095392);
+		public static readonly OpCode Brtrue = new OpCode(243289696);
+		public static readonly OpCode Beq = new OpCode(247475279);
+		public static readonly OpCode Bge = new OpCode(251669583);
+		public static readonly OpCode Bgt = new OpCode(255863887);
+		public static readonly OpCode Ble = new OpCode(260058191);
+		public static readonly OpCode Blt = new OpCode(264252495);
+		public static readonly OpCode Bne_Un = new OpCode(268446799);
+		public static readonly OpCode Bge_Un = new OpCode(272641103);
+		public static readonly OpCode Bgt_Un = new OpCode(276835407);
+		public static readonly OpCode Ble_Un = new OpCode(281029711);
+		public static readonly OpCode Blt_Un = new OpCode(285224015);
+		public static readonly OpCode Switch = new OpCode(289427051);
+		public static readonly OpCode Ldind_I1 = new OpCode(293929358);
+		public static readonly OpCode Ldind_U1 = new OpCode(298123662);
+		public static readonly OpCode Ldind_I2 = new OpCode(302317966);
+		public static readonly OpCode Ldind_U2 = new OpCode(306512270);
+		public static readonly OpCode Ldind_I4 = new OpCode(310706574);
+		public static readonly OpCode Ldind_U4 = new OpCode(314900878);
+		public static readonly OpCode Ldind_I8 = new OpCode(319197782);
+		public static readonly OpCode Ldind_I = new OpCode(323289486);
+		public static readonly OpCode Ldind_R4 = new OpCode(327688990);
+		public static readonly OpCode Ldind_R8 = new OpCode(331985894);
+		public static readonly OpCode Ldind_Ref = new OpCode(336282798);
+		public static readonly OpCode Stind_Ref = new OpCode(339768820);
+		public static readonly OpCode Stind_I1 = new OpCode(343963124);
+		public static readonly OpCode Stind_I2 = new OpCode(348157428);
+		public static readonly OpCode Stind_I4 = new OpCode(352351732);
+		public static readonly OpCode Stind_I8 = new OpCode(356551166);
+		public static readonly OpCode Stind_R4 = new OpCode(360755730);
+		public static readonly OpCode Stind_R8 = new OpCode(364955164);
+		public static readonly OpCode Add = new OpCode(369216329);
+		public static readonly OpCode Sub = new OpCode(373410633);
+		public static readonly OpCode Mul = new OpCode(377604937);
+		public static readonly OpCode Div = new OpCode(381799241);
+		public static readonly OpCode Div_Un = new OpCode(385993545);
+		public static readonly OpCode Rem = new OpCode(390187849);
+		public static readonly OpCode Rem_Un = new OpCode(394382153);
+		public static readonly OpCode And = new OpCode(398576457);
+		public static readonly OpCode Or = new OpCode(402770761);
+		public static readonly OpCode Xor = new OpCode(406965065);
+		public static readonly OpCode Shl = new OpCode(411159369);
+		public static readonly OpCode Shr = new OpCode(415353673);
+		public static readonly OpCode Shr_Un = new OpCode(419547977);
+		public static readonly OpCode Neg = new OpCode(423737322);
+		public static readonly OpCode Not = new OpCode(427931626);
+		public static readonly OpCode Conv_I1 = new OpCode(432331130);
+		public static readonly OpCode Conv_I2 = new OpCode(436525434);
+		public static readonly OpCode Conv_I4 = new OpCode(440719738);
+		public static readonly OpCode Conv_I8 = new OpCode(445016642);
+		public static readonly OpCode Conv_R4 = new OpCode(449313546);
+		public static readonly OpCode Conv_R8 = new OpCode(453610450);
+		public static readonly OpCode Conv_U4 = new OpCode(457496954);
+		public static readonly OpCode Conv_U8 = new OpCode(461793858);
+		public static readonly OpCode Callvirt = new OpCode(466484004);
+		public static readonly OpCode Cpobj = new OpCode(469790542);
+		public static readonly OpCode Ldobj = new OpCode(474077528);
+		public static readonly OpCode Ldstr = new OpCode(478872210);
+		public static readonly OpCode Newobj = new OpCode(483158791);
+		public static readonly OpCode Castclass = new OpCode(487311950);
+		public static readonly OpCode Isinst = new OpCode(491095854);
+		public static readonly OpCode Conv_R_Un = new OpCode(495553490);
+		public static readonly OpCode Unbox = new OpCode(507874780);
+		public static readonly OpCode Throw = new OpCode(511759452);
+		public static readonly OpCode Ldfld = new OpCode(516056466);
+		public static readonly OpCode Ldflda = new OpCode(520455970);
+		public static readonly OpCode Stfld = new OpCode(524347262);
+		public static readonly OpCode Ldsfld = new OpCode(528588249);
+		public static readonly OpCode Ldsflda = new OpCode(532987753);
+		public static readonly OpCode Stsfld = new OpCode(536879045);
+		public static readonly OpCode Stobj = new OpCode(541090290);
+		public static readonly OpCode Conv_Ovf_I1_Un = new OpCode(545577338);
+		public static readonly OpCode Conv_Ovf_I2_Un = new OpCode(549771642);
+		public static readonly OpCode Conv_Ovf_I4_Un = new OpCode(553965946);
+		public static readonly OpCode Conv_Ovf_I8_Un = new OpCode(558262850);
+		public static readonly OpCode Conv_Ovf_U1_Un = new OpCode(562354554);
+		public static readonly OpCode Conv_Ovf_U2_Un = new OpCode(566548858);
+		public static readonly OpCode Conv_Ovf_U4_Un = new OpCode(570743162);
+		public static readonly OpCode Conv_Ovf_U8_Un = new OpCode(575040066);
+		public static readonly OpCode Conv_Ovf_I_Un = new OpCode(579131770);
+		public static readonly OpCode Conv_Ovf_U_Un = new OpCode(583326074);
+		public static readonly OpCode Box = new OpCode(587930786);
+		public static readonly OpCode Newarr = new OpCode(592133640);
+		public static readonly OpCode Ldlen = new OpCode(595953446);
+		public static readonly OpCode Ldelema = new OpCode(600157847);
+		public static readonly OpCode Ldelem_I1 = new OpCode(604352143);
+		public static readonly OpCode Ldelem_U1 = new OpCode(608546447);
+		public static readonly OpCode Ldelem_I2 = new OpCode(612740751);
+		public static readonly OpCode Ldelem_U2 = new OpCode(616935055);
+		public static readonly OpCode Ldelem_I4 = new OpCode(621129359);
+		public static readonly OpCode Ldelem_U4 = new OpCode(625323663);
+		public static readonly OpCode Ldelem_I8 = new OpCode(629620567);
+		public static readonly OpCode Ldelem_I = new OpCode(633712271);
+		public static readonly OpCode Ldelem_R4 = new OpCode(638111775);
+		public static readonly OpCode Ldelem_R8 = new OpCode(642408679);
+		public static readonly OpCode Ldelem_Ref = new OpCode(646705583);
+		public static readonly OpCode Stelem_I = new OpCode(650186475);
+		public static readonly OpCode Stelem_I1 = new OpCode(654380779);
+		public static readonly OpCode Stelem_I2 = new OpCode(658575083);
+		public static readonly OpCode Stelem_I4 = new OpCode(662769387);
+		public static readonly OpCode Stelem_I8 = new OpCode(666968821);
+		public static readonly OpCode Stelem_R4 = new OpCode(671168255);
+		public static readonly OpCode Stelem_R8 = new OpCode(675367689);
+		public static readonly OpCode Stelem_Ref = new OpCode(679567123);
+		public static readonly OpCode Ldelem = new OpCode(683838727);
+		public static readonly OpCode Stelem = new OpCode(687965999);
+		public static readonly OpCode Unbox_Any = new OpCode(692217246);
+		public static readonly OpCode Conv_Ovf_I1 = new OpCode(751098234);
+		public static readonly OpCode Conv_Ovf_U1 = new OpCode(755292538);
+		public static readonly OpCode Conv_Ovf_I2 = new OpCode(759486842);
+		public static readonly OpCode Conv_Ovf_U2 = new OpCode(763681146);
+		public static readonly OpCode Conv_Ovf_I4 = new OpCode(767875450);
+		public static readonly OpCode Conv_Ovf_U4 = new OpCode(772069754);
+		public static readonly OpCode Conv_Ovf_I8 = new OpCode(776366658);
+		public static readonly OpCode Conv_Ovf_U8 = new OpCode(780560962);
+		public static readonly OpCode Refanyval = new OpCode(814012802);
+		public static readonly OpCode Ckfinite = new OpCode(818514898);
+		public static readonly OpCode Mkrefany = new OpCode(830595078);
+		public static readonly OpCode Ldtoken = new OpCode(872728098);
+		public static readonly OpCode Conv_U2 = new OpCode(876927354);
+		public static readonly OpCode Conv_U1 = new OpCode(881121658);
+		public static readonly OpCode Conv_I = new OpCode(885315962);
+		public static readonly OpCode Conv_Ovf_I = new OpCode(889510266);
+		public static readonly OpCode Conv_Ovf_U = new OpCode(893704570);
+		public static readonly OpCode Add_Ovf = new OpCode(897698633);
+		public static readonly OpCode Add_Ovf_Un = new OpCode(901892937);
+		public static readonly OpCode Mul_Ovf = new OpCode(906087241);
+		public static readonly OpCode Mul_Ovf_Un = new OpCode(910281545);
+		public static readonly OpCode Sub_Ovf = new OpCode(914475849);
+		public static readonly OpCode Sub_Ovf_Un = new OpCode(918670153);
+		public static readonly OpCode Endfinally = new OpCode(922751806);
+		public static readonly OpCode Leave = new OpCode(926945972);
+		public static readonly OpCode Leave_S = new OpCode(931140291);
+		public static readonly OpCode Stind_I = new OpCode(935359988);
+		public static readonly OpCode Conv_U = new OpCode(939841914);
+		public static readonly OpCode Prefix7 = new OpCode(1040189696);
+		public static readonly OpCode Prefix6 = new OpCode(1044384000);
+		public static readonly OpCode Prefix5 = new OpCode(1048578304);
+		public static readonly OpCode Prefix4 = new OpCode(1052772608);
+		public static readonly OpCode Prefix3 = new OpCode(1056966912);
+		public static readonly OpCode Prefix2 = new OpCode(1061161216);
+		public static readonly OpCode Prefix1 = new OpCode(1065355520);
+		public static readonly OpCode Prefixref = new OpCode(1069549824);
+		public static readonly OpCode Arglist = new OpCode(-2147170789);
+		public static readonly OpCode Ceq = new OpCode(-2142966567);
+		public static readonly OpCode Cgt = new OpCode(-2138772263);
+		public static readonly OpCode Cgt_Un = new OpCode(-2134577959);
+		public static readonly OpCode Clt = new OpCode(-2130383655);
+		public static readonly OpCode Clt_Un = new OpCode(-2126189351);
+		public static readonly OpCode Ldftn = new OpCode(-2122004966);
+		public static readonly OpCode Ldvirtftn = new OpCode(-2117759533);
+		public static readonly OpCode Ldarg = new OpCode(-2109627244);
+		public static readonly OpCode Ldarga = new OpCode(-2105227740);
+		public static readonly OpCode Starg = new OpCode(-2101336448);
+		public static readonly OpCode Ldloc = new OpCode(-2097044332);
+		public static readonly OpCode Ldloca = new OpCode(-2092644828);
+		public static readonly OpCode Stloc = new OpCode(-2088753536);
+		public static readonly OpCode Localloc = new OpCode(-2084241010);
+		public static readonly OpCode Endfilter = new OpCode(-2076160335);
+		public static readonly OpCode Unaligned = new OpCode(-2071982151);
+		public static readonly OpCode Volatile = new OpCode(-2067787858);
+		public static readonly OpCode Tailcall = new OpCode(-2063593554);
+		public static readonly OpCode Initobj = new OpCode(-2059384859);
+		public static readonly OpCode Constrained = new OpCode(-2055204938);
+		public static readonly OpCode Cpblk = new OpCode(-2050974371);
+		public static readonly OpCode Initblk = new OpCode(-2046780067);
+		public static readonly OpCode Rethrow = new OpCode(-2038428509);
+		public static readonly OpCode Sizeof = new OpCode(-2029730269);
+		public static readonly OpCode Refanytype = new OpCode(-2025531014);
+		public static readonly OpCode Readonly = new OpCode(-2021650514);
+
+		internal static string GetName(int value)
+		{
+			switch (value)
+			{
+				case 0:
+					return "nop";
+				case 1:
+					return "break";
+				case 2:
+					return "ldarg.0";
+				case 3:
+					return "ldarg.1";
+				case 4:
+					return "ldarg.2";
+				case 5:
+					return "ldarg.3";
+				case 6:
+					return "ldloc.0";
+				case 7:
+					return "ldloc.1";
+				case 8:
+					return "ldloc.2";
+				case 9:
+					return "ldloc.3";
+				case 10:
+					return "stloc.0";
+				case 11:
+					return "stloc.1";
+				case 12:
+					return "stloc.2";
+				case 13:
+					return "stloc.3";
+				case 14:
+					return "ldarg.s";
+				case 15:
+					return "ldarga.s";
+				case 16:
+					return "starg.s";
+				case 17:
+					return "ldloc.s";
+				case 18:
+					return "ldloca.s";
+				case 19:
+					return "stloc.s";
+				case 20:
+					return "ldnull";
+				case 21:
+					return "ldc.i4.m1";
+				case 22:
+					return "ldc.i4.0";
+				case 23:
+					return "ldc.i4.1";
+				case 24:
+					return "ldc.i4.2";
+				case 25:
+					return "ldc.i4.3";
+				case 26:
+					return "ldc.i4.4";
+				case 27:
+					return "ldc.i4.5";
+				case 28:
+					return "ldc.i4.6";
+				case 29:
+					return "ldc.i4.7";
+				case 30:
+					return "ldc.i4.8";
+				case 31:
+					return "ldc.i4.s";
+				case 32:
+					return "ldc.i4";
+				case 33:
+					return "ldc.i8";
+				case 34:
+					return "ldc.r4";
+				case 35:
+					return "ldc.r8";
+				case 37:
+					return "dup";
+				case 38:
+					return "pop";
+				case 39:
+					return "jmp";
+				case 40:
+					return "call";
+				case 41:
+					return "calli";
+				case 42:
+					return "ret";
+				case 43:
+					return "br.s";
+				case 44:
+					return "brfalse.s";
+				case 45:
+					return "brtrue.s";
+				case 46:
+					return "beq.s";
+				case 47:
+					return "bge.s";
+				case 48:
+					return "bgt.s";
+				case 49:
+					return "ble.s";
+				case 50:
+					return "blt.s";
+				case 51:
+					return "bne.un.s";
+				case 52:
+					return "bge.un.s";
+				case 53:
+					return "bgt.un.s";
+				case 54:
+					return "ble.un.s";
+				case 55:
+					return "blt.un.s";
+				case 56:
+					return "br";
+				case 57:
+					return "brfalse";
+				case 58:
+					return "brtrue";
+				case 59:
+					return "beq";
+				case 60:
+					return "bge";
+				case 61:
+					return "bgt";
+				case 62:
+					return "ble";
+				case 63:
+					return "blt";
+				case 64:
+					return "bne.un";
+				case 65:
+					return "bge.un";
+				case 66:
+					return "bgt.un";
+				case 67:
+					return "ble.un";
+				case 68:
+					return "blt.un";
+				case 69:
+					return "switch";
+				case 70:
+					return "ldind.i1";
+				case 71:
+					return "ldind.u1";
+				case 72:
+					return "ldind.i2";
+				case 73:
+					return "ldind.u2";
+				case 74:
+					return "ldind.i4";
+				case 75:
+					return "ldind.u4";
+				case 76:
+					return "ldind.i8";
+				case 77:
+					return "ldind.i";
+				case 78:
+					return "ldind.r4";
+				case 79:
+					return "ldind.r8";
+				case 80:
+					return "ldind.ref";
+				case 81:
+					return "stind.ref";
+				case 82:
+					return "stind.i1";
+				case 83:
+					return "stind.i2";
+				case 84:
+					return "stind.i4";
+				case 85:
+					return "stind.i8";
+				case 86:
+					return "stind.r4";
+				case 87:
+					return "stind.r8";
+				case 88:
+					return "add";
+				case 89:
+					return "sub";
+				case 90:
+					return "mul";
+				case 91:
+					return "div";
+				case 92:
+					return "div.un";
+				case 93:
+					return "rem";
+				case 94:
+					return "rem.un";
+				case 95:
+					return "and";
+				case 96:
+					return "or";
+				case 97:
+					return "xor";
+				case 98:
+					return "shl";
+				case 99:
+					return "shr";
+				case 100:
+					return "shr.un";
+				case 101:
+					return "neg";
+				case 102:
+					return "not";
+				case 103:
+					return "conv.i1";
+				case 104:
+					return "conv.i2";
+				case 105:
+					return "conv.i4";
+				case 106:
+					return "conv.i8";
+				case 107:
+					return "conv.r4";
+				case 108:
+					return "conv.r8";
+				case 109:
+					return "conv.u4";
+				case 110:
+					return "conv.u8";
+				case 111:
+					return "callvirt";
+				case 112:
+					return "cpobj";
+				case 113:
+					return "ldobj";
+				case 114:
+					return "ldstr";
+				case 115:
+					return "newobj";
+				case 116:
+					return "castclass";
+				case 117:
+					return "isinst";
+				case 118:
+					return "conv.r.un";
+				case 121:
+					return "unbox";
+				case 122:
+					return "throw";
+				case 123:
+					return "ldfld";
+				case 124:
+					return "ldflda";
+				case 125:
+					return "stfld";
+				case 126:
+					return "ldsfld";
+				case 127:
+					return "ldsflda";
+				case 128:
+					return "stsfld";
+				case 129:
+					return "stobj";
+				case 130:
+					return "conv.ovf.i1.un";
+				case 131:
+					return "conv.ovf.i2.un";
+				case 132:
+					return "conv.ovf.i4.un";
+				case 133:
+					return "conv.ovf.i8.un";
+				case 134:
+					return "conv.ovf.u1.un";
+				case 135:
+					return "conv.ovf.u2.un";
+				case 136:
+					return "conv.ovf.u4.un";
+				case 137:
+					return "conv.ovf.u8.un";
+				case 138:
+					return "conv.ovf.i.un";
+				case 139:
+					return "conv.ovf.u.un";
+				case 140:
+					return "box";
+				case 141:
+					return "newarr";
+				case 142:
+					return "ldlen";
+				case 143:
+					return "ldelema";
+				case 144:
+					return "ldelem.i1";
+				case 145:
+					return "ldelem.u1";
+				case 146:
+					return "ldelem.i2";
+				case 147:
+					return "ldelem.u2";
+				case 148:
+					return "ldelem.i4";
+				case 149:
+					return "ldelem.u4";
+				case 150:
+					return "ldelem.i8";
+				case 151:
+					return "ldelem.i";
+				case 152:
+					return "ldelem.r4";
+				case 153:
+					return "ldelem.r8";
+				case 154:
+					return "ldelem.ref";
+				case 155:
+					return "stelem.i";
+				case 156:
+					return "stelem.i1";
+				case 157:
+					return "stelem.i2";
+				case 158:
+					return "stelem.i4";
+				case 159:
+					return "stelem.i8";
+				case 160:
+					return "stelem.r4";
+				case 161:
+					return "stelem.r8";
+				case 162:
+					return "stelem.ref";
+				case 163:
+					return "ldelem";
+				case 164:
+					return "stelem";
+				case 165:
+					return "unbox.any";
+				case 179:
+					return "conv.ovf.i1";
+				case 180:
+					return "conv.ovf.u1";
+				case 181:
+					return "conv.ovf.i2";
+				case 182:
+					return "conv.ovf.u2";
+				case 183:
+					return "conv.ovf.i4";
+				case 184:
+					return "conv.ovf.u4";
+				case 185:
+					return "conv.ovf.i8";
+				case 186:
+					return "conv.ovf.u8";
+				case 194:
+					return "refanyval";
+				case 195:
+					return "ckfinite";
+				case 198:
+					return "mkrefany";
+				case 208:
+					return "ldtoken";
+				case 209:
+					return "conv.u2";
+				case 210:
+					return "conv.u1";
+				case 211:
+					return "conv.i";
+				case 212:
+					return "conv.ovf.i";
+				case 213:
+					return "conv.ovf.u";
+				case 214:
+					return "add.ovf";
+				case 215:
+					return "add.ovf.un";
+				case 216:
+					return "mul.ovf";
+				case 217:
+					return "mul.ovf.un";
+				case 218:
+					return "sub.ovf";
+				case 219:
+					return "sub.ovf.un";
+				case 220:
+					return "endfinally";
+				case 221:
+					return "leave";
+				case 222:
+					return "leave.s";
+				case 223:
+					return "stind.i";
+				case 224:
+					return "conv.u";
+				case 248:
+					return "prefix7";
+				case 249:
+					return "prefix6";
+				case 250:
+					return "prefix5";
+				case 251:
+					return "prefix4";
+				case 252:
+					return "prefix3";
+				case 253:
+					return "prefix2";
+				case 254:
+					return "prefix1";
+				case 255:
+					return "prefixref";
+				case -512:
+					return "arglist";
+				case -511:
+					return "ceq";
+				case -510:
+					return "cgt";
+				case -509:
+					return "cgt.un";
+				case -508:
+					return "clt";
+				case -507:
+					return "clt.un";
+				case -506:
+					return "ldftn";
+				case -505:
+					return "ldvirtftn";
+				case -503:
+					return "ldarg";
+				case -502:
+					return "ldarga";
+				case -501:
+					return "starg";
+				case -500:
+					return "ldloc";
+				case -499:
+					return "ldloca";
+				case -498:
+					return "stloc";
+				case -497:
+					return "localloc";
+				case -495:
+					return "endfilter";
+				case -494:
+					return "unaligned.";
+				case -493:
+					return "volatile.";
+				case -492:
+					return "tail.";
+				case -491:
+					return "initobj";
+				case -490:
+					return "constrained.";
+				case -489:
+					return "cpblk";
+				case -488:
+					return "initblk";
+				case -486:
+					return "rethrow";
+				case -484:
+					return "sizeof";
+				case -483:
+					return "refanytype";
+				case -482:
+					return "readonly.";
+			}
+			throw new ArgumentOutOfRangeException();
+		}
+
+		public static bool TakesSingleByteArgument(OpCode inst)
+		{
+			switch (inst.Value)
+			{
+				case 14:
+				case 15:
+				case 16:
+				case 17:
+				case 18:
+				case 19:
+				case 31:
+				case 43:
+				case 44:
+				case 45:
+				case 46:
+				case 47:
+				case 48:
+				case 49:
+				case 50:
+				case 51:
+				case 52:
+				case 53:
+				case 54:
+				case 55:
+				case 222:
+				case -494:
+					return true;
+				default:
+					return false;
+			}
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Emit/ParameterBuilder.cs b/mcs/class/IKVM.Reflection/Emit/ParameterBuilder.cs
new file mode 100644
index 0000000..a74e350
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Emit/ParameterBuilder.cs
@@ -0,0 +1,143 @@
+/*
+  Copyright (C) 2008 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using IKVM.Reflection.Writer;
+using IKVM.Reflection.Metadata;
+
+namespace IKVM.Reflection.Emit
+{
+	public sealed class ParameterBuilder
+	{
+		private readonly ModuleBuilder moduleBuilder;
+		private short flags;
+		private readonly short sequence;
+		private readonly int nameIndex;
+		private readonly string name;
+		private int lazyPseudoToken;
+
+		internal ParameterBuilder(ModuleBuilder moduleBuilder, int sequence, ParameterAttributes attribs, string name)
+		{
+			this.moduleBuilder = moduleBuilder;
+			this.flags = (short)attribs;
+			this.sequence = (short)sequence;
+			this.nameIndex = name == null ? 0 : moduleBuilder.Strings.Add(name);
+			this.name = name;
+		}
+
+		internal int PseudoToken
+		{
+			get
+			{
+				if (lazyPseudoToken == 0)
+				{
+					// we lazily create the token, because if we don't need it we don't want the token fixup cost
+					lazyPseudoToken = moduleBuilder.AllocPseudoToken();
+				}
+				return lazyPseudoToken;
+			}
+		}
+
+		public string Name
+		{
+			get { return name; }
+		}
+
+		public int Position
+		{
+			get { return sequence - 1; }
+		}
+
+		public int Attributes
+		{
+			get { return flags; }
+		}
+
+		public bool IsIn
+		{
+			get { return (flags & (short)ParameterAttributes.In) != 0; }
+		}
+
+		public bool IsOut
+		{
+			get { return (flags & (short)ParameterAttributes.Out) != 0; }
+		}
+
+		public bool IsOptional
+		{
+			get { return (flags & (short)ParameterAttributes.Optional) != 0; }
+		}
+
+		public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute)
+		{
+			SetCustomAttribute(new CustomAttributeBuilder(con, binaryAttribute));
+		}
+
+		public void SetCustomAttribute(CustomAttributeBuilder customAttributeBuilder)
+		{
+			Universe u = moduleBuilder.universe;
+			if (customAttributeBuilder.Constructor.DeclaringType == u.System_Runtime_InteropServices_InAttribute)
+			{
+				flags |= (short)ParameterAttributes.In;
+			}
+			else if (customAttributeBuilder.Constructor.DeclaringType == u.System_Runtime_InteropServices_OutAttribute)
+			{
+				flags |= (short)ParameterAttributes.Out;
+			}
+			else if (customAttributeBuilder.Constructor.DeclaringType == u.System_Runtime_InteropServices_OptionalAttribute)
+			{
+				flags |= (short)ParameterAttributes.Optional;
+			}
+			else if (customAttributeBuilder.Constructor.DeclaringType == u.System_Runtime_InteropServices_MarshalAsAttribute)
+			{
+				MarshalSpec.SetMarshalAsAttribute(moduleBuilder, PseudoToken, customAttributeBuilder);
+				flags |= (short)ParameterAttributes.HasFieldMarshal;
+			}
+			else
+			{
+				moduleBuilder.SetCustomAttribute(PseudoToken, customAttributeBuilder);
+			}
+		}
+
+		public void SetConstant(object defaultValue)
+		{
+			flags |= (short)ParameterAttributes.HasDefault;
+			moduleBuilder.AddConstant(PseudoToken, defaultValue);
+		}
+
+		internal void WriteParamRecord(MetadataWriter mw)
+		{
+			mw.Write(flags);
+			mw.Write(sequence);
+			mw.WriteStringIndex(nameIndex);
+		}
+
+		internal void FixupToken(int parameterToken)
+		{
+			if (lazyPseudoToken != 0)
+			{
+				moduleBuilder.RegisterTokenFixup(lazyPseudoToken, parameterToken);
+			}
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Emit/PropertyBuilder.cs b/mcs/class/IKVM.Reflection/Emit/PropertyBuilder.cs
new file mode 100644
index 0000000..1815355
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Emit/PropertyBuilder.cs
@@ -0,0 +1,275 @@
+/*
+  Copyright (C) 2008 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Collections.Generic;
+using System.Runtime.CompilerServices;
+using IKVM.Reflection.Writer;
+using IKVM.Reflection.Metadata;
+
+namespace IKVM.Reflection.Emit
+{
+	public sealed class PropertyBuilder : PropertyInfo
+	{
+		private readonly TypeBuilder typeBuilder;
+		private readonly string name;
+		private PropertyAttributes attributes;
+		private PropertySignature sig;
+		private MethodBuilder getter;
+		private MethodBuilder setter;
+		private List<MethodBuilder> otherMethods;
+		private int lazyPseudoToken;
+		private bool patchCallingConvention;
+
+		internal PropertyBuilder(TypeBuilder typeBuilder, string name, PropertyAttributes attributes, PropertySignature sig, bool patchCallingConvention)
+		{
+			this.typeBuilder = typeBuilder;
+			this.name = name;
+			this.attributes = attributes;
+			this.sig = sig;
+			this.patchCallingConvention = patchCallingConvention;
+		}
+
+		internal override PropertySignature PropertySignature
+		{
+			get { return sig; }
+		}
+
+		private void PatchCallingConvention(MethodBuilder mdBuilder)
+		{
+			if (patchCallingConvention && !mdBuilder.IsStatic)
+			{
+				sig.HasThis = true;
+			}
+		}
+
+		public void SetGetMethod(MethodBuilder mdBuilder)
+		{
+			PatchCallingConvention(mdBuilder);
+			getter = mdBuilder;
+		}
+
+		public void SetSetMethod(MethodBuilder mdBuilder)
+		{
+			PatchCallingConvention(mdBuilder);
+			setter = mdBuilder;
+		}
+
+		public void AddOtherMethod(MethodBuilder mdBuilder)
+		{
+			PatchCallingConvention(mdBuilder);
+			if (otherMethods == null)
+			{
+				otherMethods = new List<MethodBuilder>();
+			}
+			otherMethods.Add(mdBuilder);
+		}
+
+		public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute)
+		{
+			SetCustomAttribute(new CustomAttributeBuilder(con, binaryAttribute));
+		}
+
+		public void SetCustomAttribute(CustomAttributeBuilder customBuilder)
+		{
+			Universe u = typeBuilder.ModuleBuilder.universe;
+			if (customBuilder.Constructor.DeclaringType == u.System_Runtime_CompilerServices_SpecialNameAttribute)
+			{
+				attributes |= PropertyAttributes.SpecialName;
+			}
+			else
+			{
+				if (lazyPseudoToken == 0)
+				{
+					lazyPseudoToken = typeBuilder.ModuleBuilder.AllocPseudoToken();
+				}
+				typeBuilder.ModuleBuilder.SetCustomAttribute(lazyPseudoToken, customBuilder);
+			}
+		}
+
+		public override object GetRawConstantValue()
+		{
+			if (lazyPseudoToken != 0)
+			{
+				return typeBuilder.ModuleBuilder.Constant.GetRawConstantValue(typeBuilder.ModuleBuilder, lazyPseudoToken);
+			}
+			throw new InvalidOperationException();
+		}
+
+		public override PropertyAttributes Attributes
+		{
+			get { return attributes; }
+		}
+
+		public override bool CanRead
+		{
+			get { return getter != null; }
+		}
+
+		public override bool CanWrite
+		{
+			get { return setter != null; }
+		}
+
+		public override MethodInfo GetGetMethod(bool nonPublic)
+		{
+			return nonPublic || (getter != null && getter.IsPublic) ? getter : null;
+		}
+
+		public override MethodInfo GetSetMethod(bool nonPublic)
+		{
+			return nonPublic || (setter != null && setter.IsPublic) ? setter : null;
+		}
+
+		public override MethodInfo[] GetAccessors(bool nonPublic)
+		{
+			List<MethodInfo> list = new List<MethodInfo>();
+			AddAccessor(list, nonPublic, getter);
+			AddAccessor(list, nonPublic, setter);
+			if (otherMethods != null)
+			{
+				foreach (MethodInfo method in otherMethods)
+				{
+					AddAccessor(list, nonPublic, method);
+				}
+			}
+			return list.ToArray();
+		}
+
+		private static void AddAccessor(List<MethodInfo> list, bool nonPublic, MethodInfo method)
+		{
+			if (method != null && (nonPublic || method.IsPublic))
+			{
+				list.Add(method);
+			}
+		}
+
+		public override Type DeclaringType
+		{
+			get { return typeBuilder; }
+		}
+
+		public override string Name
+		{
+			get { return name; }
+		}
+
+		public override Module Module
+		{
+			get { return typeBuilder.Module; }
+		}
+
+		public void SetConstant(object defaultValue)
+		{
+			if (lazyPseudoToken == 0)
+			{
+				lazyPseudoToken = typeBuilder.ModuleBuilder.AllocPseudoToken();
+			}
+			attributes |= PropertyAttributes.HasDefault;
+			typeBuilder.ModuleBuilder.AddConstant(lazyPseudoToken, defaultValue);
+		}
+
+		internal void Bake()
+		{
+			PropertyTable.Record rec = new PropertyTable.Record();
+			rec.Flags = (short)attributes;
+			rec.Name = typeBuilder.ModuleBuilder.Strings.Add(name);
+			rec.Type = typeBuilder.ModuleBuilder.GetSignatureBlobIndex(sig);
+			int token = 0x17000000 | typeBuilder.ModuleBuilder.Property.AddRecord(rec);
+
+			if (lazyPseudoToken != 0)
+			{
+				typeBuilder.ModuleBuilder.RegisterTokenFixup(lazyPseudoToken, token);
+			}
+
+			if (getter != null)
+			{
+				AddMethodSemantics(MethodSemanticsTable.Getter, getter.MetadataToken, token);
+			}
+			if (setter != null)
+			{
+				AddMethodSemantics(MethodSemanticsTable.Setter, setter.MetadataToken, token);
+			}
+			if (otherMethods != null)
+			{
+				foreach (MethodBuilder method in otherMethods)
+				{
+					AddMethodSemantics(MethodSemanticsTable.Other, method.MetadataToken, token);
+				}
+			}
+		}
+
+		private void AddMethodSemantics(short semantics, int methodToken, int propertyToken)
+		{
+			MethodSemanticsTable.Record rec = new MethodSemanticsTable.Record();
+			rec.Semantics = semantics;
+			rec.Method = methodToken;
+			rec.Association = propertyToken;
+			typeBuilder.ModuleBuilder.MethodSemantics.AddRecord(rec);
+		}
+
+		internal override bool IsPublic
+		{
+			get
+			{
+				if ((getter != null && getter.IsPublic) || (setter != null && setter.IsPublic))
+				{
+					return true;
+				}
+				if (otherMethods != null)
+				{
+					foreach (MethodBuilder method in otherMethods)
+					{
+						if (method.IsPublic)
+						{
+							return true;
+						}
+					}
+				}
+				return false;
+			}
+		}
+
+		internal override bool IsStatic
+		{
+			get
+			{
+				if ((getter != null && getter.IsStatic) || (setter != null && setter.IsStatic))
+				{
+					return true;
+				}
+				if (otherMethods != null)
+				{
+					foreach (MethodBuilder method in otherMethods)
+					{
+						if (method.IsStatic)
+						{
+							return true;
+						}
+					}
+				}
+				return false;
+			}
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Emit/SignatureHelper.cs b/mcs/class/IKVM.Reflection/Emit/SignatureHelper.cs
new file mode 100644
index 0000000..788c370
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Emit/SignatureHelper.cs
@@ -0,0 +1,239 @@
+/*
+  Copyright (C) 2008, 2010 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Collections.Generic;
+using System.Runtime.InteropServices;
+using IKVM.Reflection;
+using IKVM.Reflection.Writer;
+
+namespace IKVM.Reflection.Emit
+{
+	public sealed class SignatureHelper
+	{
+		private readonly ModuleBuilder module;
+		private readonly byte type;
+		private readonly List<Type> args = new List<Type>();
+		private readonly List<LocalBuilder> locals = new List<LocalBuilder>();
+		private readonly List<Type[]> requiredCustomModifiers = new List<Type[]>();
+		private readonly List<Type[]> optionalCustomModifiers = new List<Type[]>();
+		private readonly List<Type> optionalArgs = new List<Type>();
+		private Type returnType;
+		private Type[] returnTypeRequiredCustomModifiers;
+		private Type[] returnTypeOptionalCustomModifiers;
+		private CallingConventions callingConvention;
+		private CallingConvention unmanagedCallConv;
+		private bool unmanaged;
+		private bool optional;
+
+		private SignatureHelper(ModuleBuilder module, byte type)
+		{
+			this.module = module;
+			this.type = type;
+		}
+
+		internal bool HasThis
+		{
+			get { return (callingConvention & CallingConventions.HasThis) != 0; }
+		}
+
+		internal Type ReturnType
+		{
+			get { return returnType; }
+		}
+
+		internal int ParameterCount
+		{
+			get { return args.Count + optionalArgs.Count; }
+		}
+
+		public static SignatureHelper GetFieldSigHelper(Module mod)
+		{
+			return new SignatureHelper(mod as ModuleBuilder, Signature.FIELD);
+		}
+
+		public static SignatureHelper GetLocalVarSigHelper()
+		{
+			return new SignatureHelper(null, Signature.LOCAL_SIG);
+		}
+
+		public static SignatureHelper GetLocalVarSigHelper(Module mod)
+		{
+			return new SignatureHelper(mod as ModuleBuilder, Signature.LOCAL_SIG);
+		}
+
+		public static SignatureHelper GetPropertySigHelper(Module mod, Type returnType, Type[] parameterTypes)
+		{
+			SignatureHelper sig = new SignatureHelper(mod as ModuleBuilder, Signature.PROPERTY);
+			sig.returnType = returnType;
+			sig.returnTypeOptionalCustomModifiers = Type.EmptyTypes;
+			sig.returnTypeRequiredCustomModifiers = Type.EmptyTypes;
+			foreach (Type type in parameterTypes)
+			{
+				sig.AddArgument(type);
+			}
+			return sig;
+		}
+
+		public static SignatureHelper GetPropertySigHelper(Module mod, Type returnType, Type[] requiredReturnTypeCustomModifiers, Type[] optionalReturnTypeCustomModifiers, Type[] parameterTypes, Type[][] requiredParameterTypeCustomModifiers, Type[][] optionalParameterTypeCustomModifiers)
+		{
+			return GetPropertySigHelper(mod, CallingConventions.Standard, returnType, requiredReturnTypeCustomModifiers, optionalReturnTypeCustomModifiers, parameterTypes, requiredParameterTypeCustomModifiers, optionalParameterTypeCustomModifiers);
+		}
+
+		public static SignatureHelper GetPropertySigHelper(Module mod, CallingConventions callingConvention, Type returnType, Type[] requiredReturnTypeCustomModifiers, Type[] optionalReturnTypeCustomModifiers, Type[] parameterTypes, Type[][] requiredParameterTypeCustomModifiers, Type[][] optionalParameterTypeCustomModifiers)
+		{
+			SignatureHelper sig = new SignatureHelper(mod as ModuleBuilder, Signature.PROPERTY);
+			sig.callingConvention = callingConvention;
+			sig.returnType = returnType;
+			sig.returnTypeOptionalCustomModifiers = requiredReturnTypeCustomModifiers;
+			sig.returnTypeRequiredCustomModifiers = optionalReturnTypeCustomModifiers;
+			sig.AddArguments(parameterTypes, requiredParameterTypeCustomModifiers, optionalParameterTypeCustomModifiers);
+			return sig;
+		}
+
+		public static SignatureHelper GetMethodSigHelper(CallingConvention unmanagedCallingConvention, Type returnType)
+		{
+			return GetMethodSigHelper(null, unmanagedCallingConvention, returnType);
+		}
+
+		public static SignatureHelper GetMethodSigHelper(CallingConventions callingConvention, Type returnType)
+		{
+			return GetMethodSigHelper(null, callingConvention, returnType);
+		}
+
+		public static SignatureHelper GetMethodSigHelper(Module mod, CallingConvention unmanagedCallConv, Type returnType)
+		{
+			SignatureHelper sig = new SignatureHelper(mod as ModuleBuilder, 0);
+			sig.returnType = returnType;
+			sig.unmanaged = true;
+			sig.unmanagedCallConv = unmanagedCallConv;
+			return sig;
+		}
+
+		public static SignatureHelper GetMethodSigHelper(Module mod, CallingConventions callingConvention, Type returnType)
+		{
+			SignatureHelper sig = new SignatureHelper(mod as ModuleBuilder, 0);
+			sig.returnType = returnType;
+			sig.callingConvention = callingConvention;
+			return sig;
+		}
+
+		public static SignatureHelper GetMethodSigHelper(Module mod, Type returnType, Type[] parameterTypes)
+		{
+			SignatureHelper sig = new SignatureHelper(mod as ModuleBuilder, 0);
+			sig.returnType = returnType;
+			sig.callingConvention = CallingConventions.Standard;
+			foreach (Type type in parameterTypes)
+			{
+				sig.AddArgument(type);
+			}
+			return sig;
+		}
+
+		public byte[] GetSignature()
+		{
+			if (module == null)
+			{
+				throw new NotSupportedException();
+			}
+			return GetSignature(module).ToArray();
+		}
+
+		internal ByteBuffer GetSignature(ModuleBuilder module)
+		{
+			ByteBuffer bb = new ByteBuffer(16);
+			switch (type)
+			{
+				case 0:
+					if (unmanaged)
+					{
+						Signature.WriteStandAloneMethodSig(module, bb, unmanagedCallConv, returnType, args.ToArray());
+					}
+					else
+					{
+						Signature.WriteStandAloneMethodSig(module, bb, callingConvention, returnType, args.ToArray(), optionalArgs.ToArray());
+					}
+					break;
+				case Signature.FIELD:
+					FieldSignature.Create(args[0], optionalCustomModifiers[0], requiredCustomModifiers[0]).WriteSig(module, bb);
+					break;
+				case Signature.PROPERTY:
+					Signature.WritePropertySig(module, bb, callingConvention, returnType, returnTypeRequiredCustomModifiers, returnTypeOptionalCustomModifiers, args.ToArray(), requiredCustomModifiers.ToArray(), optionalCustomModifiers.ToArray());
+					break;
+				case Signature.LOCAL_SIG:
+					Signature.WriteLocalVarSig(module, bb, locals);
+					break;
+				default:
+					throw new InvalidOperationException();
+			}
+			return bb;
+		}
+
+		public void AddSentinel()
+		{
+			optional = true;
+			callingConvention |= CallingConventions.VarArgs;
+		}
+
+		public void AddArgument(Type clsArgument)
+		{
+			AddArgument(clsArgument, false);
+		}
+
+		public void AddArgument(Type argument, bool pinned)
+		{
+			AddArgument(argument, pinned, Type.EmptyTypes, Type.EmptyTypes);
+		}
+
+		public void AddArgument(Type argument, Type[] requiredCustomModifiers, Type[] optionalCustomModifiers)
+		{
+			AddArgument(argument, false, requiredCustomModifiers, optionalCustomModifiers);
+		}
+
+		private void AddArgument(Type argument, bool pinned, Type[] requiredCustomModifiers, Type[] optionalCustomModifiers)
+		{
+			if (type == Signature.LOCAL_SIG)
+			{
+				locals.Add(new LocalBuilder(argument, 0, pinned));
+			}
+			else if (optional)
+			{
+				this.optionalArgs.Add(argument);
+			}
+			else
+			{
+				this.args.Add(argument);
+				this.requiredCustomModifiers.Add(requiredCustomModifiers);
+				this.optionalCustomModifiers.Add(optionalCustomModifiers);
+			}
+		}
+
+		public void AddArguments(Type[] arguments, Type[][] requiredCustomModifiers, Type[][] optionalCustomModifiers)
+		{
+			for (int i = 0; i < arguments.Length; i++)
+			{
+				AddArgument(arguments[i], false, requiredCustomModifiers[i], optionalCustomModifiers[i]);
+			}
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Emit/Tokens.cs b/mcs/class/IKVM.Reflection/Emit/Tokens.cs
new file mode 100644
index 0000000..49ac4c6
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Emit/Tokens.cs
@@ -0,0 +1,281 @@
+/*
+  Copyright (C) 2008 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+
+namespace IKVM.Reflection.Emit
+{
+	public struct EventToken
+	{
+		public static readonly EventToken Empty;
+		private readonly int token;
+
+		internal EventToken(int token)
+		{
+			this.token = token;
+		}
+
+		public int Token
+		{
+			get { return token; }
+		}
+
+		public override bool Equals(object obj)
+		{
+			return obj as EventToken? == this;
+		}
+
+		public override int GetHashCode()
+		{
+			return token;
+		}
+
+		public bool Equals(EventToken other)
+		{
+			return this == other;
+		}
+
+		public static bool operator ==(EventToken et1, EventToken et2)
+		{
+			return et1.token == et2.token;
+		}
+
+		public static bool operator !=(EventToken et1, EventToken et2)
+		{
+			return et1.token != et2.token;
+		}
+	}
+
+	public struct FieldToken
+	{
+		public static readonly FieldToken Empty;
+		private readonly int token;
+
+		internal FieldToken(int token)
+		{
+			this.token = token;
+		}
+
+		internal bool IsPseudoToken
+		{
+			get { return token < 0; }
+		}
+
+		public int Token
+		{
+			get { return token; }
+		}
+
+		public override bool Equals(object obj)
+		{
+			return obj as FieldToken? == this;
+		}
+
+		public override int GetHashCode()
+		{
+			return token;
+		}
+
+		public bool Equals(FieldToken other)
+		{
+			return this == other;
+		}
+
+		public static bool operator ==(FieldToken ft1, FieldToken ft2)
+		{
+			return ft1.token == ft2.token;
+		}
+
+		public static bool operator !=(FieldToken ft1, FieldToken ft2)
+		{
+			return ft1.token != ft2.token;
+		}
+	}
+
+	public struct MethodToken
+	{
+		public static readonly MethodToken Empty;
+		private readonly int token;
+
+		internal MethodToken(int token)
+		{
+			this.token = token;
+		}
+
+		internal bool IsPseudoToken
+		{
+			get { return token < 0; }
+		}
+
+		public int Token
+		{
+			get { return token; }
+		}
+
+		public override bool Equals(object obj)
+		{
+			return obj as MethodToken? == this;
+		}
+
+		public override int GetHashCode()
+		{
+			return token;
+		}
+
+		public bool Equals(MethodToken other)
+		{
+			return this == other;
+		}
+
+		public static bool operator ==(MethodToken mt1, MethodToken mt2)
+		{
+			return mt1.token == mt2.token;
+		}
+
+		public static bool operator !=(MethodToken mt1, MethodToken mt2)
+		{
+			return mt1.token != mt2.token;
+		}
+	}
+
+	public struct SignatureToken
+	{
+		public static readonly SignatureToken Empty;
+		private readonly int token;
+
+		internal SignatureToken(int token)
+		{
+			this.token = token;
+		}
+
+		public int Token
+		{
+			get { return token; }
+		}
+
+		public override bool Equals(object obj)
+		{
+			return obj as SignatureToken? == this;
+		}
+
+		public override int GetHashCode()
+		{
+			return token;
+		}
+
+		public bool Equals(SignatureToken other)
+		{
+			return this == other;
+		}
+
+		public static bool operator ==(SignatureToken st1, SignatureToken st2)
+		{
+			return st1.token == st2.token;
+		}
+
+		public static bool operator !=(SignatureToken st1, SignatureToken st2)
+		{
+			return st1.token != st2.token;
+		}
+	}
+
+	public struct StringToken
+	{
+		private readonly int token;
+
+		internal StringToken(int token)
+		{
+			this.token = token;
+		}
+
+		public int Token
+		{
+			get { return token; }
+		}
+
+		public override bool Equals(object obj)
+		{
+			return obj as StringToken? == this;
+		}
+
+		public override int GetHashCode()
+		{
+			return token;
+		}
+
+		public bool Equals(StringToken other)
+		{
+			return this == other;
+		}
+
+		public static bool operator ==(StringToken st1, StringToken st2)
+		{
+			return st1.token == st2.token;
+		}
+
+		public static bool operator !=(StringToken st1, StringToken st2)
+		{
+			return st1.token != st2.token;
+		}
+	}
+
+	public struct TypeToken
+	{
+		public static readonly TypeToken Empty;
+		private readonly int token;
+
+		internal TypeToken(int token)
+		{
+			this.token = token;
+		}
+
+		public int Token
+		{
+			get { return token; }
+		}
+
+		public override bool Equals(object obj)
+		{
+			return obj as TypeToken? == this;
+		}
+
+		public override int GetHashCode()
+		{
+			return token;
+		}
+
+		public bool Equals(TypeToken other)
+		{
+			return this == other;
+		}
+
+		public static bool operator ==(TypeToken tt1, TypeToken tt2)
+		{
+			return tt1.token == tt2.token;
+		}
+
+		public static bool operator !=(TypeToken tt1, TypeToken tt2)
+		{
+			return tt1.token != tt2.token;
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Emit/TypeBuilder.cs b/mcs/class/IKVM.Reflection/Emit/TypeBuilder.cs
new file mode 100644
index 0000000..9d206eb
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Emit/TypeBuilder.cs
@@ -0,0 +1,1163 @@
+/*
+  Copyright (C) 2008-2010 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Runtime.InteropServices;
+using IKVM.Reflection.Impl;
+using IKVM.Reflection.Metadata;
+using IKVM.Reflection.Writer;
+
+namespace IKVM.Reflection.Emit
+{
+	public sealed class GenericTypeParameterBuilder : Type
+	{
+		private readonly string name;
+		private readonly TypeBuilder type;
+		private readonly MethodBuilder method;
+		private readonly int paramPseudoIndex;
+		private readonly int position;
+		private int typeToken;
+		private Type baseType;
+		private GenericParameterAttributes attr;
+
+		internal GenericTypeParameterBuilder(string name, TypeBuilder type, MethodBuilder method, int position)
+		{
+			this.name = name;
+			this.type = type;
+			this.method = method;
+			this.position = position;
+			GenericParamTable.Record rec = new GenericParamTable.Record();
+			rec.Number = (short)position;
+			rec.Flags = 0;
+			rec.Owner = type != null ? type.MetadataToken : method.MetadataToken;
+			rec.Name = this.ModuleBuilder.Strings.Add(name);
+			this.paramPseudoIndex = this.ModuleBuilder.GenericParam.AddRecord(rec);
+		}
+
+		public override string AssemblyQualifiedName
+		{
+			get { return null; }
+		}
+
+		public override bool IsValueType
+		{
+			get { return (this.GenericParameterAttributes & GenericParameterAttributes.NotNullableValueTypeConstraint) != 0; }
+		}
+
+		public override Type BaseType
+		{
+			get { return baseType; }
+		}
+
+		public override Type[] __GetDeclaredInterfaces()
+		{
+			throw new NotImplementedException();
+		}
+
+		public override TypeAttributes Attributes
+		{
+			get { return TypeAttributes.Public; }
+		}
+
+		public override string Namespace
+		{
+			get { return DeclaringType.Namespace; }
+		}
+
+		public override Type UnderlyingSystemType
+		{
+			get { return this; }
+		}
+
+		public override string Name
+		{
+			get { return name; }
+		}
+
+		public override string FullName
+		{
+			get { return null; }
+		}
+
+		public override string ToString()
+		{
+			return this.Name;
+		}
+
+		private ModuleBuilder ModuleBuilder
+		{
+			get { return type != null ? type.ModuleBuilder : method.ModuleBuilder; }
+		}
+
+		public override Module Module
+		{
+			get { return ModuleBuilder; }
+		}
+
+		public override bool IsGenericParameter
+		{
+			get { return true; }
+		}
+
+		public override int GenericParameterPosition
+		{
+			get { return position; }
+		}
+
+		public override Type DeclaringType
+		{
+			get { return type; }
+		}
+
+		public override MethodBase DeclaringMethod
+		{
+			get { return method; }
+		}
+
+		public override Type[] GetGenericParameterConstraints()
+		{
+			throw new NotImplementedException();
+		}
+
+		public override GenericParameterAttributes GenericParameterAttributes
+		{
+			get
+			{
+				if (type != null)
+				{
+					type.CheckBaked();
+				}
+				else
+				{
+					method.CheckBaked();
+				}
+				return attr;
+			}
+		}
+
+		private void AddConstraint(Type type)
+		{
+			GenericParamConstraintTable.Record rec = new GenericParamConstraintTable.Record();
+			rec.Owner = paramPseudoIndex;
+			rec.Constraint = this.ModuleBuilder.GetTypeTokenForMemberRef(type);
+			this.ModuleBuilder.GenericParamConstraint.AddRecord(rec);
+		}
+
+		public void SetBaseTypeConstraint(Type baseTypeConstraint)
+		{
+			this.baseType = baseTypeConstraint;
+			AddConstraint(baseTypeConstraint);
+		}
+
+		public void SetInterfaceConstraints(params Type[] interfaceConstraints)
+		{
+			foreach (Type type in interfaceConstraints)
+			{
+				AddConstraint(type);
+			}
+		}
+
+		public void SetGenericParameterAttributes(GenericParameterAttributes genericParameterAttributes)
+		{
+			this.attr = genericParameterAttributes;
+			// for now we'll back patch the table
+			this.ModuleBuilder.GenericParam.PatchAttribute(paramPseudoIndex, genericParameterAttributes);
+		}
+
+		public void SetCustomAttribute(CustomAttributeBuilder customBuilder)
+		{
+			this.ModuleBuilder.SetCustomAttribute((GenericParamTable.Index << 24) | paramPseudoIndex, customBuilder);
+		}
+
+		public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute)
+		{
+			SetCustomAttribute(new CustomAttributeBuilder(con, binaryAttribute));
+		}
+
+		internal override int GetModuleBuilderToken()
+		{
+			if (typeToken == 0)
+			{
+				ByteBuffer spec = new ByteBuffer(5);
+				Signature.WriteTypeSpec(this.ModuleBuilder, spec, this);
+				typeToken = 0x1B000000 | this.ModuleBuilder.TypeSpec.AddRecord(this.ModuleBuilder.Blobs.Add(spec));
+			}
+			return typeToken;
+		}
+
+		internal override Type BindTypeParameters(IGenericBinder binder)
+		{
+			if (type != null)
+			{
+				return binder.BindTypeParameter(this);
+			}
+			else
+			{
+				return binder.BindMethodParameter(this);
+			}
+		}
+	}
+
+	public sealed class TypeBuilder : Type, ITypeOwner
+	{
+		public const int UnspecifiedTypeSize = 0;
+		private readonly ITypeOwner owner;
+		private readonly int token;
+		private int extends;
+		private Type baseType;
+		private readonly int typeName;
+		private readonly int typeNameSpace;
+		private readonly string nameOrFullName;
+		private readonly List<MethodBuilder> methods = new List<MethodBuilder>();
+		private readonly List<FieldBuilder> fields = new List<FieldBuilder>();
+		private List<PropertyBuilder> properties;
+		private List<EventBuilder> events;
+		private TypeAttributes attribs;
+		private TypeFlags typeFlags;
+		private GenericTypeParameterBuilder[] gtpb;
+		private List<CustomAttributeBuilder> declarativeSecurity;
+		private List<Type> interfaces;
+
+		[Flags]
+		private enum TypeFlags
+		{
+			IsGenericTypeDefinition = 1,
+			HasNestedTypes = 2,
+			Baked = 4,
+		}
+
+		internal TypeBuilder(ITypeOwner owner, string name, Type baseType, TypeAttributes attribs)
+		{
+			this.owner = owner;
+			this.token = this.ModuleBuilder.TypeDef.AllocToken();
+			this.nameOrFullName = TypeNameParser.Escape(name);
+			SetParent(baseType);
+			this.attribs = attribs;
+			if (!this.IsNested)
+			{
+				int lastdot = name.LastIndexOf('.');
+				if (lastdot > 0)
+				{
+					this.typeNameSpace = this.ModuleBuilder.Strings.Add(name.Substring(0, lastdot));
+					name = name.Substring(lastdot + 1);
+				}
+			}
+			this.typeName = this.ModuleBuilder.Strings.Add(name);
+		}
+
+		public ConstructorBuilder DefineDefaultConstructor(MethodAttributes attributes)
+		{
+			ConstructorBuilder cb = DefineConstructor(attributes, CallingConventions.Standard, Type.EmptyTypes);
+			ILGenerator ilgen = cb.GetILGenerator();
+			ilgen.Emit(OpCodes.Ldarg_0);
+			ilgen.Emit(OpCodes.Call, baseType.GetConstructor(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, null, Type.EmptyTypes, null));
+			ilgen.Emit(OpCodes.Ret);
+			return cb;
+		}
+
+		public ConstructorBuilder DefineConstructor(MethodAttributes attribs, CallingConventions callConv, Type[] parameterTypes)
+		{
+			return DefineConstructor(attribs, callConv, parameterTypes, null, null);
+		}
+
+		public ConstructorBuilder DefineConstructor(MethodAttributes attribs, CallingConventions callingConvention, Type[] parameterTypes, Type[][] requiredCustomModifiers, Type[][] optionalCustomModifiers)
+		{
+			attribs |= MethodAttributes.RTSpecialName | MethodAttributes.SpecialName;
+			string name = (attribs & MethodAttributes.Static) == 0 ? ConstructorInfo.ConstructorName : ConstructorInfo.TypeConstructorName;
+			MethodBuilder mb = DefineMethod(name, attribs, callingConvention, null, null, null, parameterTypes, requiredCustomModifiers, optionalCustomModifiers);
+			return new ConstructorBuilder(mb);
+		}
+
+		public ConstructorBuilder DefineTypeInitializer()
+		{
+			MethodBuilder mb = DefineMethod(ConstructorInfo.TypeConstructorName, MethodAttributes.Private | MethodAttributes.Static | MethodAttributes.RTSpecialName | MethodAttributes.SpecialName, null, Type.EmptyTypes);
+			return new ConstructorBuilder(mb);
+		}
+
+		private MethodBuilder CreateMethodBuilder(string name, MethodAttributes attributes, CallingConventions callingConvention)
+		{
+			this.ModuleBuilder.MethodDef.AddVirtualRecord();
+			MethodBuilder mb = new MethodBuilder(this, name, attributes, callingConvention);
+			methods.Add(mb);
+			return mb;
+		}
+
+		public MethodBuilder DefineMethod(string name, MethodAttributes attribs)
+		{
+			return DefineMethod(name, attribs, CallingConventions.Standard);
+		}
+
+		public MethodBuilder DefineMethod(string name, MethodAttributes attribs, CallingConventions callingConvention)
+		{
+			return CreateMethodBuilder(name, attribs, callingConvention);
+		}
+
+		public MethodBuilder DefineMethod(string name, MethodAttributes attribs, Type returnType, Type[] parameterTypes)
+		{
+			return DefineMethod(name, attribs, CallingConventions.Standard, returnType, null, null, parameterTypes, null, null);
+		}
+
+		public MethodBuilder DefineMethod(string name, MethodAttributes attributes, CallingConventions callingConvention, Type returnType, Type[] parameterTypes)
+		{
+			return DefineMethod(name, attributes, callingConvention, returnType, null, null, parameterTypes, null, null);
+		}
+
+		public MethodBuilder DefineMethod(string name, MethodAttributes attributes, CallingConventions callingConvention, Type returnType, Type[] returnTypeRequiredCustomModifiers, Type[] returnTypeOptionalCustomModifiers, Type[] parameterTypes, Type[][] parameterTypeRequiredCustomModifiers, Type[][] parameterTypeOptionalCustomModifiers)
+		{
+			MethodBuilder mb = CreateMethodBuilder(name, attributes, callingConvention);
+			mb.SetSignature(returnType, returnTypeRequiredCustomModifiers, returnTypeOptionalCustomModifiers, parameterTypes, parameterTypeRequiredCustomModifiers, parameterTypeOptionalCustomModifiers);
+			return mb;
+		}
+
+		public MethodBuilder DefinePInvokeMethod(string name, string dllName, MethodAttributes attributes, CallingConventions callingConvention, Type returnType, Type[] parameterTypes, CallingConvention nativeCallConv, CharSet nativeCharSet)
+		{
+			return DefinePInvokeMethod(name, dllName, null, attributes, callingConvention, returnType, null, null, parameterTypes, null, null, nativeCallConv, nativeCharSet);
+		}
+
+		public MethodBuilder DefinePInvokeMethod(string name, string dllName, string entryName, MethodAttributes attributes, CallingConventions callingConvention, Type returnType, Type[] parameterTypes, CallingConvention nativeCallConv, CharSet nativeCharSet)
+		{
+			return DefinePInvokeMethod(name, dllName, entryName, attributes, callingConvention, returnType, null, null, parameterTypes, null, null, nativeCallConv, nativeCharSet);
+		}
+
+		public MethodBuilder DefinePInvokeMethod(string name, string dllName, string entryName, MethodAttributes attributes, CallingConventions callingConvention,
+			Type returnType, Type[] returnTypeRequiredCustomModifiers, Type[] returnTypeOptionalCustomModifiers,
+			Type[] parameterTypes, Type[][] parameterTypeRequiredCustomModifiers, Type[][] parameterTypeOptionalCustomModifiers,
+			CallingConvention nativeCallConv, CharSet nativeCharSet)
+		{
+			MethodBuilder mb = DefineMethod(name, attributes | MethodAttributes.PinvokeImpl, callingConvention,
+				returnType, returnTypeRequiredCustomModifiers, returnTypeOptionalCustomModifiers,
+				parameterTypes, parameterTypeRequiredCustomModifiers, parameterTypeOptionalCustomModifiers);
+			mb.SetDllImportPseudoCustomAttribute(dllName, entryName, nativeCallConv, nativeCharSet, null, null, null, null, null);
+			return mb;
+		}
+
+		public void DefineMethodOverride(MethodInfo methodInfoBody, MethodInfo methodInfoDeclaration)
+		{
+			MethodImplTable.Record rec = new MethodImplTable.Record();
+			rec.Class = token;
+			rec.MethodBody = this.ModuleBuilder.GetMethodToken(methodInfoBody).Token;
+			rec.MethodDeclaration = this.ModuleBuilder.GetMethodToken(methodInfoDeclaration).Token;
+			this.ModuleBuilder.MethodImpl.AddRecord(rec);
+		}
+
+		public FieldBuilder DefineField(string name, Type fieldType, FieldAttributes attribs)
+		{
+			return DefineField(name, fieldType, null, null, attribs);
+		}
+
+		public FieldBuilder DefineField(string fieldName, Type type, Type[] requiredCustomModifiers, Type[] optionalCustomModifiers, FieldAttributes attributes)
+		{
+			FieldBuilder fb = new FieldBuilder(this, fieldName, type, requiredCustomModifiers, optionalCustomModifiers, attributes);
+			fields.Add(fb);
+			return fb;
+		}
+
+		public PropertyBuilder DefineProperty(string name, PropertyAttributes attributes, Type returnType, Type[] parameterTypes)
+		{
+			return DefineProperty(name, attributes, returnType, null, null, parameterTypes, null, null);
+		}
+
+		public PropertyBuilder DefineProperty(string name, PropertyAttributes attributes, Type returnType, Type[] returnTypeRequiredCustomModifiers, Type[] returnTypeOptionalCustomModifiers,
+			Type[] parameterTypes, Type[][] parameterTypeRequiredCustomModifiers, Type[][] parameterTypeOptionalCustomModifiers)
+		{
+			return DefinePropertyImpl(name, attributes, CallingConventions.Standard, true, returnType, returnTypeRequiredCustomModifiers, returnTypeOptionalCustomModifiers,
+				parameterTypes, parameterTypeRequiredCustomModifiers, parameterTypeOptionalCustomModifiers);
+		}
+
+		public PropertyBuilder DefineProperty(string name, PropertyAttributes attributes, CallingConventions callingConvention,
+			Type returnType, Type[] returnTypeRequiredCustomModifiers, Type[] returnTypeOptionalCustomModifiers,
+			Type[] parameterTypes, Type[][] parameterTypeRequiredCustomModifiers, Type[][] parameterTypeOptionalCustomModifiers)
+		{
+			return DefinePropertyImpl(name, attributes, callingConvention, false, returnType, returnTypeRequiredCustomModifiers, returnTypeOptionalCustomModifiers,
+				parameterTypes, parameterTypeRequiredCustomModifiers, parameterTypeOptionalCustomModifiers);
+		}
+
+		private PropertyBuilder DefinePropertyImpl(string name, PropertyAttributes attributes, CallingConventions callingConvention, bool patchCallingConvention,
+			Type returnType, Type[] returnTypeRequiredCustomModifiers, Type[] returnTypeOptionalCustomModifiers,
+			Type[] parameterTypes, Type[][] parameterTypeRequiredCustomModifiers, Type[][] parameterTypeOptionalCustomModifiers)
+		{
+			if (properties == null)
+			{
+				properties = new List<PropertyBuilder>();
+			}
+			PropertySignature sig = PropertySignature.Create(callingConvention, returnType, returnTypeOptionalCustomModifiers, returnTypeRequiredCustomModifiers,
+				parameterTypes, parameterTypeOptionalCustomModifiers, parameterTypeRequiredCustomModifiers);
+			PropertyBuilder pb = new PropertyBuilder(this, name, attributes, sig, patchCallingConvention);
+			properties.Add(pb);
+			return pb;
+		}
+
+		public EventBuilder DefineEvent(string name, EventAttributes attributes, Type eventtype)
+		{
+			if (events == null)
+			{
+				events = new List<EventBuilder>();
+			}
+			EventBuilder eb = new EventBuilder(this, name, attributes, eventtype);
+			events.Add(eb);
+			return eb;
+		}
+
+		public TypeBuilder DefineNestedType(string name)
+		{
+			return DefineNestedType(name, TypeAttributes.Class | TypeAttributes.NestedPrivate);
+		}
+
+		public TypeBuilder DefineNestedType(string name, TypeAttributes attribs)
+		{
+			return DefineNestedType(name, attribs, null);
+		}
+
+		public TypeBuilder DefineNestedType(string name, TypeAttributes attr, Type parent, Type[] interfaces)
+		{
+			TypeBuilder tb = DefineNestedType(name, attr, parent);
+			foreach (Type iface in interfaces)
+			{
+				tb.AddInterfaceImplementation(iface);
+			}
+			return tb;
+		}
+
+		public TypeBuilder DefineNestedType(string name, TypeAttributes attr, Type parent)
+		{
+			this.typeFlags |= TypeFlags.HasNestedTypes;
+			return this.ModuleBuilder.DefineNestedTypeHelper(this, name, attr, parent, PackingSize.Unspecified, 0);
+		}
+
+		public TypeBuilder DefineNestedType(string name, TypeAttributes attr, Type parent, int typeSize)
+		{
+			this.typeFlags |= TypeFlags.HasNestedTypes;
+			return this.ModuleBuilder.DefineNestedTypeHelper(this, name, attr, parent, PackingSize.Unspecified, typeSize);
+		}
+
+		public TypeBuilder DefineNestedType(string name, TypeAttributes attr, Type parent, PackingSize packSize)
+		{
+			this.typeFlags |= TypeFlags.HasNestedTypes;
+			return this.ModuleBuilder.DefineNestedTypeHelper(this, name, attr, parent, packSize, 0);
+		}
+
+		public void SetParent(Type parent)
+		{
+			baseType = parent;
+		}
+
+		public void AddInterfaceImplementation(Type interfaceType)
+		{
+			if (interfaces == null)
+			{
+				interfaces = new List<Type>();
+			}
+			interfaces.Add(interfaceType);
+		}
+
+		public int Size
+		{
+			get
+			{
+				for (int i = 0; i < this.ModuleBuilder.ClassLayout.records.Length; i++)
+				{
+					if (this.ModuleBuilder.ClassLayout.records[i].Parent == token)
+					{
+						return this.ModuleBuilder.ClassLayout.records[i].ClassSize;
+					}
+				}
+				return 0;
+			}
+		}
+
+		public PackingSize PackingSize
+		{
+			get
+			{
+				for (int i = 0; i < this.ModuleBuilder.ClassLayout.records.Length; i++)
+				{
+					if (this.ModuleBuilder.ClassLayout.records[i].Parent == token)
+					{
+						return (PackingSize)this.ModuleBuilder.ClassLayout.records[i].PackingSize;
+					}
+				}
+				return PackingSize.Unspecified;
+			}
+		}
+
+		private void SetStructLayoutPseudoCustomAttribute(CustomAttributeBuilder customBuilder)
+		{
+			object val = customBuilder.GetConstructorArgument(0);
+			LayoutKind layout;
+			if (val is short)
+			{
+				layout = (LayoutKind)(short)val;
+			}
+			else
+			{
+				layout = (LayoutKind)val;
+			}
+			int? pack = (int?)customBuilder.GetFieldValue("Pack");
+			int? size = (int?)customBuilder.GetFieldValue("Size");
+			if (pack.HasValue || size.HasValue)
+			{
+				ClassLayoutTable.Record rec = new ClassLayoutTable.Record();
+				rec.PackingSize = (short)(pack ?? 0);
+				rec.ClassSize = size ?? 0;
+				rec.Parent = token;
+				this.ModuleBuilder.ClassLayout.AddOrReplaceRecord(rec);
+			}
+			attribs &= ~TypeAttributes.LayoutMask;
+			switch (layout)
+			{
+				case LayoutKind.Auto:
+					attribs |= TypeAttributes.AutoLayout;
+					break;
+				case LayoutKind.Explicit:
+					attribs |= TypeAttributes.ExplicitLayout;
+					break;
+				case LayoutKind.Sequential:
+					attribs |= TypeAttributes.SequentialLayout;
+					break;
+			}
+			CharSet? charSet = customBuilder.GetFieldValue<CharSet>("CharSet");
+			attribs &= ~TypeAttributes.StringFormatMask;
+			switch (charSet ?? CharSet.None)
+			{
+				case CharSet.None:
+				case CharSet.Ansi:
+					attribs |= TypeAttributes.AnsiClass;
+					break;
+				case CharSet.Auto:
+					attribs |= TypeAttributes.AutoClass;
+					break;
+				case CharSet.Unicode:
+					attribs |= TypeAttributes.UnicodeClass;
+					break;
+			}
+		}
+
+		public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute)
+		{
+			SetCustomAttribute(new CustomAttributeBuilder(con, binaryAttribute));
+		}
+
+		public void SetCustomAttribute(CustomAttributeBuilder customBuilder)
+		{
+			Universe u = this.ModuleBuilder.universe;
+			Type type = customBuilder.Constructor.DeclaringType;
+			if (type == u.System_Runtime_InteropServices_StructLayoutAttribute)
+			{
+				SetStructLayoutPseudoCustomAttribute(customBuilder.DecodeBlob(this.Assembly));
+			}
+			else if (type == u.System_SerializableAttribute)
+			{
+				attribs |= TypeAttributes.Serializable;
+			}
+			else if (type == u.System_Runtime_InteropServices_ComImportAttribute)
+			{
+				attribs |= TypeAttributes.Import;
+			}
+			else if (type == u.System_Runtime_CompilerServices_SpecialNameAttribute)
+			{
+				attribs |= TypeAttributes.SpecialName;
+			}
+			else
+			{
+				if (type == u.System_Security_SuppressUnmanagedCodeSecurityAttribute)
+				{
+					attribs |= TypeAttributes.HasSecurity;
+				}
+				this.ModuleBuilder.SetCustomAttribute(token, customBuilder);
+			}
+		}
+
+		public void __AddDeclarativeSecurity(CustomAttributeBuilder customBuilder)
+		{
+			attribs |= TypeAttributes.HasSecurity;
+			if (declarativeSecurity == null)
+			{
+				declarativeSecurity = new List<CustomAttributeBuilder>();
+			}
+			declarativeSecurity.Add(customBuilder);
+		}
+
+		public void AddDeclarativeSecurity(System.Security.Permissions.SecurityAction securityAction, System.Security.PermissionSet permissionSet)
+		{
+			this.ModuleBuilder.AddDeclarativeSecurity(token, securityAction, permissionSet);
+			this.attribs |= TypeAttributes.HasSecurity;
+		}
+
+		public GenericTypeParameterBuilder[] DefineGenericParameters(params string[] names)
+		{
+			typeFlags |= TypeFlags.IsGenericTypeDefinition;
+			gtpb = new GenericTypeParameterBuilder[names.Length];
+			for (int i = 0; i < names.Length; i++)
+			{
+				gtpb[i] = new GenericTypeParameterBuilder(names[i], this, null, i);
+			}
+			return (GenericTypeParameterBuilder[])gtpb.Clone();
+		}
+
+		public override Type[] GetGenericArguments()
+		{
+			return Util.Copy(gtpb);
+		}
+
+		public override Type[][] __GetGenericArgumentsOptionalCustomModifiers()
+		{
+			return gtpb == null ? Empty<Type[]>.Array : Util.Copy(new Type[gtpb.Length][]);
+		}
+
+		public override Type[][] __GetGenericArgumentsRequiredCustomModifiers()
+		{
+			return gtpb == null ? Empty<Type[]>.Array : Util.Copy(new Type[gtpb.Length][]);
+		}
+
+		internal override Type GetGenericTypeArgument(int index)
+		{
+			return gtpb[index];
+		}
+
+		public override bool ContainsGenericParameters
+		{
+			get { return gtpb != null; }
+		}
+
+		public override Type GetGenericTypeDefinition()
+		{
+			return this;
+		}
+
+		public Type CreateType()
+		{
+			if ((typeFlags & TypeFlags.Baked) != 0)
+			{
+				// .NET allows multiple invocations (subsequent invocations return the same baked type)
+				throw new NotImplementedException();
+			}
+			typeFlags |= TypeFlags.Baked;
+			foreach (MethodBuilder mb in methods)
+			{
+				mb.Bake();
+			}
+			if (declarativeSecurity != null)
+			{
+				this.ModuleBuilder.AddDeclarativeSecurity(token, declarativeSecurity);
+			}
+			if (baseType != null)
+			{
+				extends = this.ModuleBuilder.GetTypeToken(baseType).Token;
+			}
+			if (interfaces != null)
+			{
+				foreach (Type interfaceType in interfaces)
+				{
+					InterfaceImplTable.Record rec = new InterfaceImplTable.Record();
+					rec.Class = token;
+					rec.Interface = this.ModuleBuilder.GetTypeToken(interfaceType).Token;
+					this.ModuleBuilder.InterfaceImpl.AddRecord(rec);
+				}
+			}
+			return new BakedType(this);
+		}
+
+		internal void PopulatePropertyAndEventTables()
+		{
+			if (properties != null)
+			{
+				PropertyMapTable.Record rec = new PropertyMapTable.Record();
+				rec.Parent = token;
+				rec.PropertyList = this.ModuleBuilder.Property.RowCount + 1;
+				this.ModuleBuilder.PropertyMap.AddRecord(rec);
+				foreach (PropertyBuilder pb in properties)
+				{
+					pb.Bake();
+				}
+			}
+			if (events != null)
+			{
+				EventMapTable.Record rec = new EventMapTable.Record();
+				rec.Parent = token;
+				rec.EventList = this.ModuleBuilder.Event.RowCount + 1;
+				this.ModuleBuilder.EventMap.AddRecord(rec);
+				foreach (EventBuilder eb in events)
+				{
+					eb.Bake();
+				}
+			}
+		}
+
+		public override Type BaseType
+		{
+			get { return baseType; }
+		}
+
+		public override string FullName
+		{
+			get
+			{
+				if (this.IsNested)
+				{
+					return this.DeclaringType.FullName + "+" + nameOrFullName;
+				}
+				else
+				{
+					return nameOrFullName;
+				}
+			}
+		}
+
+		public override string Name
+		{
+			get
+			{
+				if (this.IsNested)
+				{
+					return nameOrFullName;
+				}
+				else
+				{
+					return base.Name;
+				}
+			}
+		}
+
+		public override string Namespace
+		{
+			get
+			{
+				// for some reason, TypeBuilder doesn't return null (and mcs depends on this)
+				return base.Namespace ?? "";
+			}
+		}
+
+		internal string GetBakedNamespace()
+		{
+			// if you refer to the TypeBuilder via its baked Type, Namespace will return null
+			// for the empty namespace (instead of "" like TypeBuilder.Namespace above does)
+			return base.Namespace;
+		}
+
+		public override TypeAttributes Attributes
+		{
+			get { return attribs; }
+		}
+
+		public void __SetAttributes(TypeAttributes attributes)
+		{
+			this.attribs = attributes;
+		}
+
+		public override Type[] __GetDeclaredInterfaces()
+		{
+			return Util.ToArray(interfaces, Type.EmptyTypes);
+		}
+
+		public override MethodBase[] __GetDeclaredMethods()
+		{
+			MethodBase[] methods = new MethodBase[this.methods.Count];
+			for (int i = 0; i < methods.Length; i++)
+			{
+				MethodBuilder mb = this.methods[i];
+				if (mb.IsConstructor)
+				{
+					methods[i] = new ConstructorInfoImpl(mb);
+				}
+				else
+				{
+					methods[i] = mb;
+				}
+			}
+			return methods;
+		}
+
+		public override StructLayoutAttribute StructLayoutAttribute
+		{
+			get
+			{
+				StructLayoutAttribute attr;
+				if ((attribs & TypeAttributes.ExplicitLayout) != 0)
+				{
+					attr = new StructLayoutAttribute(LayoutKind.Explicit);
+					attr.Pack = 8;
+					attr.Size = 0;
+					this.ModuleBuilder.ClassLayout.GetLayout(token, ref attr.Pack, ref attr.Size);
+				}
+				else
+				{
+					attr = new StructLayoutAttribute((attribs & TypeAttributes.SequentialLayout) != 0 ? LayoutKind.Sequential : LayoutKind.Auto);
+					attr.Pack = 8;
+					attr.Size = 0;
+				}
+				switch (attribs & TypeAttributes.StringFormatMask)
+				{
+					case TypeAttributes.AutoClass:
+						attr.CharSet = CharSet.Auto;
+						break;
+					case TypeAttributes.UnicodeClass:
+						attr.CharSet = CharSet.Unicode;
+						break;
+					case TypeAttributes.AnsiClass:
+						attr.CharSet = CharSet.Ansi;
+						break;
+				}
+				return attr;
+			}
+		}
+
+		public override Type DeclaringType
+		{
+			get { return owner as TypeBuilder; }
+		}
+
+		public override bool IsGenericType
+		{
+			get { return IsGenericTypeDefinition; }
+		}
+
+		public override bool IsGenericTypeDefinition
+		{
+			get { return (typeFlags & TypeFlags.IsGenericTypeDefinition) != 0; }
+		}
+
+		public override int MetadataToken
+		{
+			get { return token; }
+		}
+
+		public FieldBuilder DefineUninitializedData(string name, int size, FieldAttributes attributes)
+		{
+			return DefineInitializedData(name, new byte[size], attributes);
+		}
+
+		public FieldBuilder DefineInitializedData(string name, byte[] data, FieldAttributes attributes)
+		{
+			Type fieldType = this.ModuleBuilder.GetType("$ArrayType$" + data.Length);
+			if (fieldType == null)
+			{
+				TypeBuilder tb = this.ModuleBuilder.DefineType("$ArrayType$" + data.Length, TypeAttributes.Public | TypeAttributes.Sealed | TypeAttributes.ExplicitLayout, this.Module.universe.System_ValueType, PackingSize.Size1, data.Length);
+				tb.CreateType();
+				fieldType = tb;
+			}
+			FieldBuilder fb = DefineField(name, fieldType, attributes | FieldAttributes.Static);
+			fb.__SetDataAndRVA(data);
+			return fb;
+		}
+
+		public static MethodInfo GetMethod(Type type, MethodInfo method)
+		{
+			return new GenericMethodInstance(type, method, null);
+		}
+
+		public static ConstructorInfo GetConstructor(Type type, ConstructorInfo constructor)
+		{
+			return new ConstructorInfoImpl(GetMethod(type, constructor.GetMethodInfo()));
+		}
+
+		public static FieldInfo GetField(Type type, FieldInfo field)
+		{
+			return new GenericFieldInstance(type, field);
+		}
+
+		public override Module Module
+		{
+			get { return owner.ModuleBuilder; }
+		}
+
+		public TypeToken TypeToken
+		{
+			get { return new TypeToken(token); }
+		}
+
+		internal void WriteTypeDefRecord(MetadataWriter mw, ref int fieldList, ref int methodList)
+		{
+			mw.Write((int)attribs);
+			mw.WriteStringIndex(typeName);
+			mw.WriteStringIndex(typeNameSpace);
+			mw.WriteTypeDefOrRef(extends);
+			mw.WriteField(fieldList);
+			mw.WriteMethodDef(methodList);
+			methodList += methods.Count;
+			fieldList += fields.Count;
+		}
+
+		internal void WriteMethodDefRecords(int baseRVA, MetadataWriter mw, ref int paramList)
+		{
+			foreach (MethodBuilder mb in methods)
+			{
+				mb.WriteMethodDefRecord(baseRVA, mw, ref paramList);
+			}
+		}
+
+		internal void ResolveMethodAndFieldTokens(ref int methodToken, ref int fieldToken, ref int parameterToken)
+		{
+			foreach (MethodBuilder method in methods)
+			{
+				method.FixupToken(methodToken++, ref parameterToken);
+			}
+			foreach (FieldBuilder field in fields)
+			{
+				field.FixupToken(fieldToken++);
+			}
+		}
+
+		internal void WriteParamRecords(MetadataWriter mw)
+		{
+			foreach (MethodBuilder mb in methods)
+			{
+				mb.WriteParamRecords(mw);
+			}
+		}
+
+		internal void WriteFieldRecords(MetadataWriter mw)
+		{
+			foreach (FieldBuilder fb in fields)
+			{
+				fb.WriteFieldRecords(mw);
+			}
+		}
+
+		internal ModuleBuilder ModuleBuilder
+		{
+			get { return owner.ModuleBuilder; }
+		}
+
+		ModuleBuilder ITypeOwner.ModuleBuilder
+		{
+			get { return owner.ModuleBuilder; }
+		}
+
+		internal override int GetModuleBuilderToken()
+		{
+			return token;
+		}
+
+		internal bool HasNestedTypes
+		{
+			get { return (typeFlags & TypeFlags.HasNestedTypes) != 0; }
+		}
+
+		// helper for ModuleBuilder.ResolveMethod()
+		internal MethodBase LookupMethod(int token)
+		{
+			foreach (MethodBuilder method in methods)
+			{
+				if (method.MetadataToken == token)
+				{
+					return method;
+				}
+			}
+			return null;
+		}
+
+		public bool IsCreated()
+		{
+			return (typeFlags & TypeFlags.Baked) != 0;
+		}
+
+		internal override void CheckBaked()
+		{
+			if ((typeFlags & TypeFlags.Baked) == 0)
+			{
+				throw new NotSupportedException();
+			}
+		}
+
+		public override Type[] __GetDeclaredTypes()
+		{
+			if (this.HasNestedTypes)
+			{
+				List<Type> types = new List<Type>();
+				List<int> classes = this.ModuleBuilder.NestedClass.GetNestedClasses(token);
+				foreach (int nestedClass in classes)
+				{
+					types.Add(this.ModuleBuilder.ResolveType(nestedClass));
+				}
+				return types.ToArray();
+			}
+			else
+			{
+				return Type.EmptyTypes;
+			}
+		}
+
+		public override FieldInfo[] __GetDeclaredFields()
+		{
+			return Util.ToArray(fields, Empty<FieldInfo>.Array);
+		}
+
+		public override EventInfo[] __GetDeclaredEvents()
+		{
+			return Util.ToArray(events, Empty<EventInfo>.Array);
+		}
+
+		public override PropertyInfo[] __GetDeclaredProperties()
+		{
+			return Util.ToArray(properties, Empty<PropertyInfo>.Array);
+		}
+
+		internal override bool IsModulePseudoType
+		{
+			get { return token == 0x02000001; }
+		}
+	}
+
+	sealed class BakedType : Type
+	{
+		private readonly TypeBuilder typeBuilder;
+
+		internal BakedType(TypeBuilder typeBuilder)
+		{
+			this.typeBuilder = typeBuilder;
+		}
+
+		public override string AssemblyQualifiedName
+		{
+			get { return typeBuilder.AssemblyQualifiedName; }
+		}
+
+		public override Type BaseType
+		{
+			get { return typeBuilder.BaseType; }
+		}
+
+		public override string Name
+		{
+			get { return typeBuilder.Name; }
+		}
+
+		public override string Namespace
+		{
+			get { return typeBuilder.GetBakedNamespace(); }
+		}
+
+		public override string FullName
+		{
+			get { return typeBuilder.FullName; }
+		}
+
+		public override TypeAttributes Attributes
+		{
+			get { return typeBuilder.Attributes; }
+		}
+
+		public override Type[] __GetDeclaredInterfaces()
+		{
+			return typeBuilder.__GetDeclaredInterfaces();
+		}
+
+		public override MethodBase[] __GetDeclaredMethods()
+		{
+			return typeBuilder.__GetDeclaredMethods();
+		}
+
+		public override __MethodImplMap __GetMethodImplMap()
+		{
+			return typeBuilder.__GetMethodImplMap();
+		}
+
+		public override FieldInfo[] __GetDeclaredFields()
+		{
+			return typeBuilder.__GetDeclaredFields();
+		}
+
+		public override EventInfo[] __GetDeclaredEvents()
+		{
+			return typeBuilder.__GetDeclaredEvents();
+		}
+
+		public override PropertyInfo[] __GetDeclaredProperties()
+		{
+			return typeBuilder.__GetDeclaredProperties();
+		}
+
+		public override Type[] __GetDeclaredTypes()
+		{
+			return typeBuilder.__GetDeclaredTypes();
+		}
+
+		public override Type DeclaringType
+		{
+			get { return typeBuilder.DeclaringType; }
+		}
+
+		public override StructLayoutAttribute StructLayoutAttribute
+		{
+			get { return typeBuilder.StructLayoutAttribute; }
+		}
+
+		public override Type UnderlyingSystemType
+		{
+			// Type.Equals/GetHashCode relies on this
+			get { return typeBuilder; }
+		}
+
+		public override Type[] GetGenericArguments()
+		{
+			return typeBuilder.GetGenericArguments();
+		}
+
+		internal override Type GetGenericTypeArgument(int index)
+		{
+			return typeBuilder.GetGenericTypeArgument(index);
+		}
+
+		public override Type[][] __GetGenericArgumentsOptionalCustomModifiers()
+		{
+			return typeBuilder.__GetGenericArgumentsOptionalCustomModifiers();
+		}
+
+		public override Type[][] __GetGenericArgumentsRequiredCustomModifiers()
+		{
+			return typeBuilder.__GetGenericArgumentsRequiredCustomModifiers();
+		}
+
+		public override bool IsGenericType
+		{
+			get { return typeBuilder.IsGenericType; }
+		}
+
+		public override bool IsGenericTypeDefinition
+		{
+			get { return typeBuilder.IsGenericTypeDefinition; }
+		}
+
+		public override bool ContainsGenericParameters
+		{
+			get { return typeBuilder.ContainsGenericParameters; }
+		}
+
+		public override int MetadataToken
+		{
+			get { return typeBuilder.MetadataToken; }
+		}
+
+		public override Module Module
+		{
+			get { return typeBuilder.Module; }
+		}
+
+		internal override int GetModuleBuilderToken()
+		{
+			return typeBuilder.GetModuleBuilderToken();
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Enums.cs b/mcs/class/IKVM.Reflection/Enums.cs
new file mode 100644
index 0000000..7dd5b34
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Enums.cs
@@ -0,0 +1,274 @@
+/*
+  Copyright (C) 2009 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+
+namespace IKVM.Reflection
+{
+	[Flags]
+	public enum AssemblyNameFlags
+	{
+		None = 0,
+		PublicKey = 1,
+		Retargetable = 256,
+		EnableJITcompileOptimizer = 16384,
+		EnableJITcompileTracking = 32768,
+	}
+
+	[Flags]
+	public enum BindingFlags
+	{
+		Default = 0,
+		DeclaredOnly = 2,
+		Instance = 4,
+		Static = 8,
+		Public = 16,
+		NonPublic = 32,
+		FlattenHierarchy = 64,
+	}
+
+	[Flags]
+	public enum CallingConventions
+	{
+		Standard = 1,
+		VarArgs = 2,
+		Any = 3,
+		HasThis = 32,
+		ExplicitThis = 64,
+	}
+
+	[Flags]
+	public enum EventAttributes
+	{
+		None = 0,
+		SpecialName = 512,
+		RTSpecialName = 1024,
+		ReservedMask = 1024,
+	}
+
+	[Flags]
+	public enum FieldAttributes
+	{
+		PrivateScope = 0,
+		Private = 1,
+		FamANDAssem = 2,
+		Assembly = 3,
+		Family = 4,
+		FamORAssem = 5,
+		Public = 6,
+		FieldAccessMask = 7,
+		Static = 16,
+		InitOnly = 32,
+		Literal = 64,
+		NotSerialized = 128,
+		HasFieldRVA = 256,
+		SpecialName = 512,
+		RTSpecialName = 1024,
+		HasFieldMarshal = 4096,
+		PinvokeImpl = 8192,
+		HasDefault = 32768,
+		ReservedMask = 38144,
+	}
+
+	[Flags]
+	public enum GenericParameterAttributes
+	{
+		None = 0,
+		Covariant = 1,
+		Contravariant = 2,
+		VarianceMask = 3,
+		ReferenceTypeConstraint = 4,
+		NotNullableValueTypeConstraint = 8,
+		DefaultConstructorConstraint = 16,
+		SpecialConstraintMask = 28,
+	}
+
+	public enum ImageFileMachine
+	{
+		I386 = 332,
+		IA64 = 512,
+		AMD64 = 34404,
+	}
+
+	[FlagsAttribute]
+	public enum MemberTypes
+	{
+		Constructor = 0x01,
+		Event = 0x02,
+		Field = 0x04,
+		Method = 0x08,
+		Property = 0x10,
+		TypeInfo = 0x20,
+		Custom = 0x40,
+		NestedType = 0x80,
+		All = Constructor | Event | Field | Method | Property | TypeInfo | NestedType
+	}
+
+	[Flags]
+	public enum MethodAttributes
+	{
+		MemberAccessMask		= 0x0007,
+		PrivateScope			= 0x0000,
+		Private					= 0x0001,
+		FamANDAssem				= 0x0002,
+		Assembly				= 0x0003,
+		Family					= 0x0004,
+		FamORAssem				= 0x0005,
+		Public					= 0x0006,
+		Static					= 0x0010,
+		Final					= 0x0020,
+		Virtual					= 0x0040,
+		HideBySig				= 0x0080,
+		VtableLayoutMask		= 0x0100,
+		ReuseSlot				= 0x0000,
+		NewSlot					= 0x0100,
+		CheckAccessOnOverride	= 0x0200,
+		Abstract				= 0x0400,
+		SpecialName				= 0x0800,
+
+		PinvokeImpl				= 0x2000,
+		UnmanagedExport			= 0x0008,
+
+		RTSpecialName			= 0x1000,
+		HasSecurity				= 0x4000,
+		RequireSecObject		= 0x8000,
+
+		ReservedMask			= 0xd000,
+	}
+
+	[Flags]
+	public enum MethodImplAttributes
+	{
+		CodeTypeMask		= 0x0003,
+		IL					= 0x0000,
+		Native				= 0x0001,
+		OPTIL				= 0x0002,
+		Runtime				= 0x0003,
+		ManagedMask			= 0x0004,
+		Unmanaged			= 0x0004,
+		Managed				= 0x0000,
+
+		ForwardRef			= 0x0010,
+		PreserveSig			= 0x0080,
+		InternalCall		= 0x1000,
+		Synchronized		= 0x0020,
+		NoInlining			= 0x0008,
+		NoOptimization		= 0x0040,
+
+		MaxMethodImplVal	= 0xffff,
+	}
+
+	[Flags]
+	public enum ParameterAttributes
+	{
+		None = 0,
+		In = 1,
+		Out = 2,
+		Lcid = 4,
+		Retval = 8,
+		Optional = 16,
+		HasDefault = 4096,
+		HasFieldMarshal = 8192,
+		Reserved3 = 16384,
+		Reserved4 = 32768,
+		ReservedMask = 61440,
+	}
+
+	[Flags]
+	public enum PortableExecutableKinds
+	{
+		NotAPortableExecutableImage = 0,
+		ILOnly = 1,
+		Required32Bit = 2,
+		PE32Plus = 4,
+		Unmanaged32Bit = 8,
+	}
+
+	public enum ProcessorArchitecture
+	{
+		None = 0,
+		MSIL = 1,
+		X86 = 2,
+		IA64 = 3,
+		Amd64 = 4,
+	}
+
+	[Flags]
+	public enum PropertyAttributes
+	{
+		None = 0,
+		SpecialName = 512,
+		RTSpecialName = 1024,
+		HasDefault = 4096,
+	}
+
+	[Flags]
+	public enum ResourceAttributes
+	{
+		Public = 1,
+		Private = 2,
+	}
+
+	public enum ResourceLocation
+	{
+		Embedded = 1,
+		ContainedInAnotherAssembly = 2,
+		ContainedInManifestFile = 4,
+	}
+
+	[Flags]
+	public enum TypeAttributes
+	{
+		AnsiClass = 0,
+		Class = 0,
+		AutoLayout = 0,
+		NotPublic = 0,
+		Public = 1,
+		NestedPublic = 2,
+		NestedPrivate = 3,
+		NestedFamily = 4,
+		NestedAssembly = 5,
+		NestedFamANDAssem = 6,
+		VisibilityMask = 7,
+		NestedFamORAssem = 7,
+		SequentialLayout = 8,
+		ExplicitLayout = 16,
+		LayoutMask = 24,
+		ClassSemanticsMask = 32,
+		Interface = 32,
+		Abstract = 128,
+		Sealed = 256,
+		SpecialName = 1024,
+		RTSpecialName = 2048,
+		Import = 4096,
+		Serializable = 8192,
+		UnicodeClass = 65536,
+		AutoClass = 131072,
+		CustomFormatClass = 196608,
+		StringFormatMask = 196608,
+		HasSecurity = 262144,
+		ReservedMask = 264192,
+		BeforeFieldInit = 1048576,
+		CustomFormatMask = 12582912,
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/EventInfo.cs b/mcs/class/IKVM.Reflection/EventInfo.cs
new file mode 100644
index 0000000..816acbc
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/EventInfo.cs
@@ -0,0 +1,73 @@
+/*
+  Copyright (C) 2009 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+
+namespace IKVM.Reflection
+{
+	public abstract class EventInfo : MemberInfo
+	{
+		public sealed override MemberTypes MemberType
+		{
+			get { return MemberTypes.Event; }
+		}
+
+		public abstract EventAttributes Attributes { get; }
+		public abstract MethodInfo GetAddMethod(bool nonPublic);
+		public abstract MethodInfo GetRaiseMethod(bool nonPublic);
+		public abstract MethodInfo GetRemoveMethod(bool nonPublic);
+		public abstract MethodInfo[] GetOtherMethods(bool nonPublic);
+		public abstract Type EventHandlerType { get; }
+		internal abstract bool IsPublic { get; }
+		internal abstract bool IsStatic { get; }
+
+		public bool IsSpecialName
+		{
+			get { return (Attributes & EventAttributes.SpecialName) != 0; }
+		}
+
+		public MethodInfo GetAddMethod()
+		{
+			return GetAddMethod(false);
+		}
+
+		public MethodInfo GetRaiseMethod()
+		{
+			return GetRaiseMethod(false);
+		}
+
+		public MethodInfo GetRemoveMethod()
+		{
+			return GetRemoveMethod(false);
+		}
+
+		public MethodInfo[] GetOtherMethods()
+		{
+			return GetOtherMethods(false);
+		}
+
+		internal virtual EventInfo BindTypeParameters(Type type)
+		{
+			return new GenericEventInfo(this.DeclaringType.BindTypeParameters(type), this);
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/ExceptionHandlingClause.cs b/mcs/class/IKVM.Reflection/ExceptionHandlingClause.cs
new file mode 100644
index 0000000..dddc532
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/ExceptionHandlingClause.cs
@@ -0,0 +1,93 @@
+/*
+  Copyright (C) 2009 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using IKVM.Reflection.Reader;
+
+namespace IKVM.Reflection
+{
+	public enum ExceptionHandlingClauseOptions
+	{
+		Clause  = 0x0000,
+		Filter  = 0x0001,
+		Finally = 0x0002,
+		Fault   = 0x0004,
+	}
+
+	public sealed class ExceptionHandlingClause
+	{
+		private readonly int flags;
+		private readonly int tryOffset;
+		private readonly int tryLength;
+		private readonly int handlerOffset;
+		private readonly int handlerLength;
+		private readonly Type catchType;
+		private readonly int filterOffset;
+
+		internal ExceptionHandlingClause(ModuleReader module, int flags, int tryOffset, int tryLength, int handlerOffset, int handlerLength, int classTokenOrfilterOffset, IGenericContext context)
+		{
+			this.flags = flags;
+			this.tryOffset = tryOffset;
+			this.tryLength = tryLength;
+			this.handlerOffset = handlerOffset;
+			this.handlerLength = handlerLength;
+			this.catchType = flags == (int)ExceptionHandlingClauseOptions.Clause && classTokenOrfilterOffset != 0 ? module.ResolveType(classTokenOrfilterOffset, context) : null;
+			this.filterOffset = flags == (int)ExceptionHandlingClauseOptions.Filter ? classTokenOrfilterOffset : 0;
+		}
+
+		public Type CatchType
+		{
+			get { return catchType; }
+		}
+
+		public int FilterOffset
+		{
+			get { return filterOffset; }
+		}
+
+		public ExceptionHandlingClauseOptions Flags
+		{
+			get { return (ExceptionHandlingClauseOptions)flags; }
+		}
+
+		public int HandlerLength
+		{
+			get { return handlerLength; }
+		}
+
+		public int HandlerOffset
+		{
+			get { return handlerOffset; }
+		}
+
+		public int TryLength
+		{
+			get { return tryLength; }
+		}
+
+		public int TryOffset
+		{
+			get { return tryOffset; }
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/FieldInfo.cs b/mcs/class/IKVM.Reflection/FieldInfo.cs
new file mode 100644
index 0000000..b64ea2c
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/FieldInfo.cs
@@ -0,0 +1,122 @@
+/*
+  Copyright (C) 2009 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+
+namespace IKVM.Reflection
+{
+	public abstract class FieldInfo : MemberInfo
+	{
+		public sealed override MemberTypes MemberType
+		{
+			get { return MemberTypes.Field; }
+		}
+
+		public abstract FieldAttributes Attributes { get; }
+		public abstract void __GetDataFromRVA(byte[] data, int offset, int length);
+		public abstract Object GetRawConstantValue();
+		internal abstract FieldSignature FieldSignature { get; }
+
+		public Type FieldType
+		{
+			get { return this.FieldSignature.FieldType; }
+		}
+
+		public Type[] GetOptionalCustomModifiers()
+		{
+			return this.FieldSignature.GetOptionalCustomModifiers();
+		}
+
+		public Type[] GetRequiredCustomModifiers()
+		{
+			return this.FieldSignature.GetRequiredCustomModifiers();
+		}
+
+		public bool IsStatic
+		{
+			get { return (Attributes & FieldAttributes.Static) != 0; }
+		}
+
+		public bool IsLiteral
+		{
+			get { return (Attributes & FieldAttributes.Literal) != 0; }
+		}
+
+		public bool IsInitOnly
+		{
+			get { return (Attributes & FieldAttributes.InitOnly) != 0; }
+		}
+
+		public bool IsNotSerialized
+		{
+			get { return (Attributes & FieldAttributes.NotSerialized) != 0; }
+		}
+
+		public bool IsSpecialName
+		{
+			get { return (Attributes & FieldAttributes.SpecialName) != 0; }
+		}
+
+		public bool IsPublic
+		{
+			get { return (Attributes & FieldAttributes.FieldAccessMask) == FieldAttributes.Public; }
+		}
+
+		public bool IsPrivate
+		{
+			get { return (Attributes & FieldAttributes.FieldAccessMask) == FieldAttributes.Private; }
+		}
+
+		public bool IsFamily
+		{
+			get { return (Attributes & FieldAttributes.FieldAccessMask) == FieldAttributes.Family; }
+		}
+
+		public bool IsFamilyOrAssembly
+		{
+			get { return (Attributes & FieldAttributes.FieldAccessMask) == FieldAttributes.FamORAssem; }
+		}
+
+		public bool IsAssembly
+		{
+			get { return (Attributes & FieldAttributes.FieldAccessMask) == FieldAttributes.Family; }
+		}
+
+		public bool IsFamilyAndAssembly
+		{
+			get { return (Attributes & FieldAttributes.FieldAccessMask) == FieldAttributes.FamANDAssem; }
+		}
+
+		public bool IsPinvokeImpl
+		{
+			get { return (Attributes & FieldAttributes.PinvokeImpl) != 0; }
+		}
+
+		internal abstract int ImportTo(Emit.ModuleBuilder module);
+
+		internal virtual FieldInfo BindTypeParameters(Type type)
+		{
+			return new GenericFieldInstance(this.DeclaringType.BindTypeParameters(type), this);
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/FieldSignature.cs b/mcs/class/IKVM.Reflection/FieldSignature.cs
new file mode 100644
index 0000000..0a4ff94
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/FieldSignature.cs
@@ -0,0 +1,111 @@
+/*
+  Copyright (C) 2009 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Text;
+using IKVM.Reflection.Emit;
+using IKVM.Reflection.Writer;
+using IKVM.Reflection.Reader;
+
+namespace IKVM.Reflection
+{
+	sealed class FieldSignature : Signature
+	{
+		private readonly Type fieldType;
+		private readonly Type[] optionalCustomModifiers;
+		private readonly Type[] requiredCustomModifiers;
+
+		internal static FieldSignature Create(Type fieldType, Type[] optionalCustomModifiers, Type[] requiredCustomModifiers)
+		{
+			return new FieldSignature(fieldType, Util.Copy(optionalCustomModifiers), Util.Copy(requiredCustomModifiers));
+		}
+
+		private FieldSignature(Type fieldType, Type[] optionalCustomModifiers, Type[] requiredCustomModifiers)
+		{
+			this.fieldType = fieldType;
+			this.optionalCustomModifiers = optionalCustomModifiers;
+			this.requiredCustomModifiers = requiredCustomModifiers;
+		}
+
+		public override bool Equals(object obj)
+		{
+			FieldSignature other = obj as FieldSignature;
+			return other != null
+				&& other.fieldType.Equals(fieldType)
+				&& Util.ArrayEquals(other.optionalCustomModifiers, optionalCustomModifiers)
+				&& Util.ArrayEquals(other.requiredCustomModifiers, requiredCustomModifiers);
+		}
+
+		public override int GetHashCode()
+		{
+			return fieldType.GetHashCode() ^ Util.GetHashCode(optionalCustomModifiers) ^ Util.GetHashCode(requiredCustomModifiers);
+		}
+
+		internal Type FieldType
+		{
+			get { return fieldType; }
+		}
+
+		internal Type[] GetOptionalCustomModifiers()
+		{
+			return Util.Copy(optionalCustomModifiers);
+		}
+
+		internal Type[] GetRequiredCustomModifiers()
+		{
+			return Util.Copy(requiredCustomModifiers);
+		}
+
+		internal FieldSignature ExpandTypeParameters(Type declaringType)
+		{
+			return new FieldSignature(
+				fieldType.BindTypeParameters(declaringType),
+				BindTypeParameters(declaringType, optionalCustomModifiers),
+				BindTypeParameters(declaringType, requiredCustomModifiers));
+		}
+
+		internal static FieldSignature ReadSig(ModuleReader module, ByteReader br, IGenericContext context)
+		{
+			if (br.ReadByte() != FIELD)
+			{
+				throw new BadImageFormatException();
+			}
+			Type fieldType;
+			Type[] optionalCustomModifiers;
+			Type[] requiredCustomModifiers;
+			ReadCustomModifiers(module, br, context, out requiredCustomModifiers, out optionalCustomModifiers);
+			fieldType = ReadType(module, br, context);
+			return new FieldSignature(fieldType, optionalCustomModifiers, requiredCustomModifiers);
+		}
+
+		internal override void WriteSig(ModuleBuilder module, ByteBuffer bb)
+		{
+			bb.Write(FIELD);
+			WriteCustomModifiers(module, bb, ELEMENT_TYPE_CMOD_OPT, optionalCustomModifiers);
+			WriteCustomModifiers(module, bb, ELEMENT_TYPE_CMOD_REQD, requiredCustomModifiers);
+			WriteType(module, bb, fieldType);
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Fusion.cs b/mcs/class/IKVM.Reflection/Fusion.cs
new file mode 100644
index 0000000..b18a8d1
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Fusion.cs
@@ -0,0 +1,386 @@
+/*
+  Copyright (C) 2010 Jeroen Frijters
+  Copyright (C) 2011 Marek Safar
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+
+using System;
+using System.Runtime.InteropServices;
+using System.Text;
+
+namespace IKVM.Reflection
+{
+	struct ParsedAssemblyName
+	{
+		internal string Name;
+		internal Version Version;
+		internal string Culture;
+		internal string PublicKeyToken;
+	}
+
+	static class Fusion
+	{
+		private static readonly bool UseNativeFusion = Environment.OSVersion.Platform == PlatformID.Win32NT && System.Type.GetType("Mono.Runtime") == null && Environment.GetEnvironmentVariable("IKVM_DISABLE_FUSION") == null;
+
+		internal static bool CompareAssemblyIdentity(string assemblyIdentity1, bool unified1, string assemblyIdentity2, bool unified2, out AssemblyComparisonResult result)
+		{
+			if (UseNativeFusion)
+			{
+				bool equivalent;
+				Marshal.ThrowExceptionForHR(CompareAssemblyIdentity(assemblyIdentity1, unified1, assemblyIdentity2, unified2, out equivalent, out result));
+				return equivalent;
+			}
+			else
+			{
+				return CompareAssemblyIdentityPure(assemblyIdentity1, unified1, assemblyIdentity2, unified2, out result);
+			}
+		}
+
+		[DllImport("fusion", CharSet = CharSet.Unicode)]
+		private static extern int CompareAssemblyIdentity(string pwzAssemblyIdentity1, bool fUnified1, string pwzAssemblyIdentity2, bool fUnified2, out bool pfEquivalent, out AssemblyComparisonResult pResult);
+
+		// internal for use by mcs
+		internal static bool CompareAssemblyIdentityPure(string assemblyIdentity1, bool unified1, string assemblyIdentity2, bool unified2, out AssemblyComparisonResult result)
+		{
+			ParsedAssemblyName name1;
+			ParsedAssemblyName name2;
+
+			if (!ParseAssemblyName(assemblyIdentity1, out name1)
+				|| !ParseAssemblyName(assemblyIdentity2, out name2))
+			{
+				result = AssemblyComparisonResult.NonEquivalent;
+				throw new ArgumentException();
+			}
+
+			bool partial = IsPartial(name1);
+
+			if ((partial && unified1) || IsPartial(name2))
+			{
+				result = AssemblyComparisonResult.NonEquivalent;
+				throw new ArgumentException();
+			}
+			if (!name1.Name.Equals(name2.Name, StringComparison.InvariantCultureIgnoreCase))
+			{
+				result = AssemblyComparisonResult.NonEquivalent;
+				return false;
+			}
+			if (name1.Name.Equals("mscorlib", StringComparison.InvariantCultureIgnoreCase))
+			{
+				result = AssemblyComparisonResult.EquivalentFullMatch;
+				return true;
+			}
+			if (partial && name1.Culture == null)
+			{
+			}
+			else if (!name1.Culture.Equals(name2.Culture, StringComparison.InvariantCultureIgnoreCase))
+			{
+				result = AssemblyComparisonResult.NonEquivalent;
+				return false;
+			}
+			if (IsStrongNamed(name2))
+			{
+				if (partial && name1.PublicKeyToken == null)
+				{
+				}
+				else if (name1.PublicKeyToken != name2.PublicKeyToken)
+				{
+					result = AssemblyComparisonResult.NonEquivalent;
+					return false;
+				}
+				if (partial && name1.Version == null)
+				{
+					result = AssemblyComparisonResult.EquivalentPartialMatch;
+					return true;
+				}
+				else if (IsFrameworkAssembly(name2))
+				{
+					result = partial ? AssemblyComparisonResult.EquivalentPartialFXUnified : AssemblyComparisonResult.EquivalentFXUnified;
+					return true;
+				}
+				else if (name1.Version < name2.Version)
+				{
+					if (unified2)
+					{
+						result = partial ? AssemblyComparisonResult.EquivalentPartialUnified : AssemblyComparisonResult.EquivalentUnified;
+						return true;
+					}
+					else
+					{
+						result = partial ? AssemblyComparisonResult.NonEquivalentPartialVersion : AssemblyComparisonResult.NonEquivalentVersion;
+						return false;
+					}
+				}
+				else if (name1.Version > name2.Version)
+				{
+					if (unified1)
+					{
+						result = partial ? AssemblyComparisonResult.EquivalentPartialUnified : AssemblyComparisonResult.EquivalentUnified;
+						return true;
+					}
+					else
+					{
+						result = partial ? AssemblyComparisonResult.NonEquivalentPartialVersion : AssemblyComparisonResult.NonEquivalentVersion;
+						return false;
+					}
+				}
+				else
+				{
+					result = partial ? AssemblyComparisonResult.EquivalentPartialMatch : AssemblyComparisonResult.EquivalentFullMatch;
+					return true;
+				}
+			}
+			else if (IsStrongNamed(name1))
+			{
+				result = AssemblyComparisonResult.NonEquivalent;
+				return false;
+			}
+			else
+			{
+				result = partial ? AssemblyComparisonResult.EquivalentPartialWeakNamed : AssemblyComparisonResult.EquivalentWeakNamed;
+				return true;
+			}
+		}
+
+		static bool IsFrameworkAssembly(ParsedAssemblyName name)
+		{
+			// A list of FX assemblies which require some form of remapping
+			// When 4.0 + 1 version  is release, assemblies introduced in v4.0
+			// will have to be added
+			switch (name.Name)
+			{
+				case "System":
+				case "System.Core":
+				case "System.Data":
+				case "System.Data.DataSetExtensions":
+				case "System.Data.Linq":
+				case "System.Data.OracleClient":
+				case "System.Data.Services":
+				case "System.Data.Services.Client":
+				case "System.IdentityModel":
+				case "System.IdentityModel.Selectors":
+				case "System.Runtime.Remoting":
+				case "System.Runtime.Serialization":
+				case "System.ServiceModel":
+				case "System.Transactions":
+				case "System.Windows.Forms":
+				case "System.Xml":
+				case "System.Xml.Linq":
+					return name.PublicKeyToken == "b77a5c561934e089";
+
+				case "System.Configuration":
+				case "System.Configuration.Install":
+				case "System.Design":
+				case "System.DirectoryServices":
+				case "System.Drawing":
+				case "System.Drawing.Design":
+				case "System.EnterpriseServices":
+				case "System.Management":
+				case "System.Messaging":
+				case "System.Runtime.Serialization.Formatters.Soap":
+				case "System.Security":
+				case "System.ServiceProcess":
+				case "System.Web":
+				case "System.Web.Mobile":
+				case "System.Web.Services":
+					return name.PublicKeyToken == "b03f5f7f11d50a3a";
+
+				case "System.ComponentModel.DataAnnotations":
+				case "System.ServiceModel.Web":
+				case "System.Web.Abstractions":
+				case "System.Web.Extensions":
+				case "System.Web.Extensions.Design":
+				case "System.Web.DynamicData":
+				case "System.Web.Routing":
+					return name.PublicKeyToken == "31bf3856ad364e35";
+			}
+
+			return false;
+		}
+
+		// note that this is the fusion specific parser, it is not the same as System.Reflection.AssemblyName
+		private static bool ParseAssemblyName(string fullName, out ParsedAssemblyName parsedName)
+		{
+			parsedName = new ParsedAssemblyName();
+			StringBuilder sb = new StringBuilder();
+			int pos = 0;
+			while (pos < fullName.Length)
+			{
+				char ch = fullName[pos++];
+				if (ch == '\\')
+				{
+					if (pos == fullName.Length)
+					{
+						return false;
+					}
+					ch = fullName[pos++];
+				}
+				else if (ch == ',')
+				{
+					break;
+				}
+				sb.Append(ch);
+			}
+			parsedName.Name = sb.ToString().Trim();
+			if (pos < fullName.Length)
+			{
+				string[] parts = fullName.Substring(pos).Split(',');
+				for (int i = 0; i < parts.Length; i++)
+				{
+					string[] kv = parts[i].Split('=');
+					if (kv.Length != 2)
+					{
+						return false;
+					}
+					switch (kv[0].Trim().ToLowerInvariant())
+					{
+						case "version":
+							if (parsedName.Version != null)
+							{
+								return false;
+							}
+							if (!ParseVersion(kv[1].Trim(), out parsedName.Version))
+							{
+								return false;
+							}
+							break;
+						case "culture":
+							if (parsedName.Culture != null)
+							{
+								return false;
+							}
+							if (!ParseCulture(kv[1].Trim(), out parsedName.Culture))
+							{
+								return false;
+							}
+							break;
+						case "publickeytoken":
+							if (parsedName.PublicKeyToken != null)
+							{
+								return false;
+							}
+							if (!ParsePublicKeyToken(kv[1].Trim(), out parsedName.PublicKeyToken))
+							{
+								return false;
+							}
+							break;
+						case "publickey":
+							if (parsedName.PublicKeyToken != null)
+							{
+								return false;
+							}
+							if (!ParsePublicKey(kv[1].Trim(), out parsedName.PublicKeyToken))
+							{
+								return false;
+							}
+							break;
+					}
+				}
+			}
+			return true;
+		}
+
+		private static bool ParseVersion(string str, out Version version)
+		{
+			string[] parts = str.Split('.');
+			if (parts.Length == 4)
+			{
+				ushort major, minor, build, revision;
+				if (ushort.TryParse(parts[0], System.Globalization.NumberStyles.Integer, null, out major)
+					&& ushort.TryParse(parts[1], System.Globalization.NumberStyles.Integer, null, out minor)
+					&& ushort.TryParse(parts[2], System.Globalization.NumberStyles.Integer, null, out build)
+					&& ushort.TryParse(parts[3], System.Globalization.NumberStyles.Integer, null, out revision))
+				{
+					version = new Version(major, minor, build, revision);
+					return true;
+				}
+			}
+			version = null;
+			return false;
+		}
+
+		private static bool ParseCulture(string str, out string culture)
+		{
+			if (str == null)
+			{
+				culture = null;
+				return false;
+			}
+			culture = str;
+			return true;
+		}
+
+		private static bool ParsePublicKeyToken(string str, out string publicKeyToken)
+		{
+			if (str == null)
+			{
+				publicKeyToken = null;
+				return false;
+			}
+			publicKeyToken = str.ToLowerInvariant();
+			return true;
+		}
+
+		private static bool ParsePublicKey(string str, out string publicKeyToken)
+		{
+			if (str == null)
+			{
+				publicKeyToken = null;
+				return false;
+			}
+			// HACK use AssemblyName to convert PublicKey to PublicKeyToken
+			byte[] token = new AssemblyName("Foo, PublicKey=" + str).GetPublicKeyToken();
+			StringBuilder sb = new StringBuilder(token.Length * 2);
+			for (int i = 0; i < token.Length; i++)
+			{
+				sb.AppendFormat("{0:x2}", token[i]);
+			}
+			publicKeyToken = sb.ToString();
+			return true;
+		}
+
+		private static bool IsPartial(ParsedAssemblyName name)
+		{
+			return name.Version == null || name.Culture == null || name.PublicKeyToken == null;
+		}
+
+		private static bool IsStrongNamed(ParsedAssemblyName name)
+		{
+			return name.PublicKeyToken != null && name.PublicKeyToken != "null";
+		}
+
+		private static bool IsEqual(byte[] b1, byte[] b2)
+		{
+			if (b1.Length != b2.Length)
+			{
+				return false;
+			}
+			for (int i = 0; i < b1.Length; i++)
+			{
+				if (b1[i] != b2[i])
+				{
+					return false;
+				}
+			}
+			return true;
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/GenericWrappers.cs b/mcs/class/IKVM.Reflection/GenericWrappers.cs
new file mode 100644
index 0000000..8290f14
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/GenericWrappers.cs
@@ -0,0 +1,631 @@
+/*
+  Copyright (C) 2009, 2010 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace IKVM.Reflection
+{
+	// this represents both generic method instantiations and non-generic methods on generic type instantations
+	// (this means that it can be a generic method declaration as well as a generic method instance)
+	sealed class GenericMethodInstance : MethodInfo
+	{
+		private readonly Type declaringType;
+		private readonly MethodInfo method;
+		private readonly Type[] methodArgs;
+		private MethodSignature lazyMethodSignature;
+
+		internal GenericMethodInstance(Type declaringType, MethodInfo method, Type[] methodArgs)
+		{
+			System.Diagnostics.Debug.Assert(!(method is GenericMethodInstance));
+			this.declaringType = declaringType;
+			this.method = method;
+			this.methodArgs = methodArgs;
+		}
+
+		public override bool Equals(object obj)
+		{
+			GenericMethodInstance other = obj as GenericMethodInstance;
+			return other != null
+				&& other.method.Equals(method)
+				&& other.declaringType.Equals(declaringType)
+				&& Util.ArrayEquals(other.methodArgs, methodArgs);
+		}
+
+		public override int GetHashCode()
+		{
+			return declaringType.GetHashCode() * 33 ^ method.GetHashCode() ^ Util.GetHashCode(methodArgs);
+		}
+
+		public override Type ReturnType
+		{
+			get { return method.ReturnType.BindTypeParameters(this); }
+		}
+
+		public override ParameterInfo ReturnParameter
+		{
+			get { return new GenericParameterInfoImpl(this, method.ReturnParameter); }
+		}
+
+		public override ParameterInfo[] GetParameters()
+		{
+			ParameterInfo[] parameters = method.GetParameters();
+			for (int i = 0; i < parameters.Length; i++)
+			{
+				parameters[i] = new GenericParameterInfoImpl(this, parameters[i]);
+			}
+			return parameters;
+		}
+
+		internal override int ParameterCount
+		{
+			get { return method.ParameterCount; }
+		}
+
+		public override CallingConventions CallingConvention
+		{
+			get { return method.CallingConvention; }
+		}
+
+		public override MethodAttributes Attributes
+		{
+			get { return method.Attributes; }
+		}
+
+		public override MethodImplAttributes GetMethodImplementationFlags()
+		{
+			return method.GetMethodImplementationFlags();
+		}
+
+		public override string Name
+		{
+			get { return method.Name; }
+		}
+
+		public override Type DeclaringType
+		{
+			get { return declaringType.IsModulePseudoType ? null : declaringType; }
+		}
+
+		public override Module Module
+		{
+			get { return method.Module; }
+		}
+
+		public override int MetadataToken
+		{
+			get { return method.MetadataToken; }
+		}
+
+		public override MethodBody GetMethodBody()
+		{
+			IKVM.Reflection.Reader.MethodDefImpl md = method as IKVM.Reflection.Reader.MethodDefImpl;
+			if (md != null)
+			{
+				return md.GetMethodBody(this);
+			}
+			throw new NotSupportedException();
+		}
+
+		public override MethodInfo MakeGenericMethod(params Type[] typeArguments)
+		{
+			return new GenericMethodInstance(declaringType, method, typeArguments);
+		}
+
+		public override bool IsGenericMethod
+		{
+			get { return method.IsGenericMethod; }
+		}
+
+		public override bool IsGenericMethodDefinition
+		{
+			get { return method.IsGenericMethodDefinition && methodArgs == null; }
+		}
+
+		public override bool ContainsGenericParameters
+		{
+			get
+			{
+				if (declaringType.ContainsGenericParameters)
+				{
+					return true;
+				}
+				if (methodArgs != null)
+				{
+					foreach (Type type in methodArgs)
+					{
+						if (type.ContainsGenericParameters)
+						{
+							return true;
+						}
+					}
+				}
+				return false;
+			}
+		}
+
+		public override MethodInfo GetGenericMethodDefinition()
+		{
+			if (this.IsGenericMethod)
+			{
+				if (this.IsGenericMethodDefinition)
+				{
+					return this;
+				}
+				else if (declaringType.IsGenericType && !declaringType.IsGenericTypeDefinition)
+				{
+					return new GenericMethodInstance(declaringType, method, null);
+				}
+				else
+				{
+					return method;
+				}
+			}
+			throw new InvalidOperationException();
+		}
+
+		public override Type[] GetGenericArguments()
+		{
+			if (methodArgs == null)
+			{
+				return method.GetGenericArguments();
+			}
+			else
+			{
+				return (Type[])methodArgs.Clone();
+			}
+		}
+
+		internal override Type GetGenericMethodArgument(int index)
+		{
+			if (methodArgs == null)
+			{
+				return method.GetGenericMethodArgument(index);
+			}
+			else
+			{
+				return methodArgs[index];
+			}
+		}
+
+		internal override int GetGenericMethodArgumentCount()
+		{
+			return method.GetGenericMethodArgumentCount();
+		}
+
+		internal override IList<CustomAttributeData> GetCustomAttributesData(Type attributeType)
+		{
+			return method.GetCustomAttributesData(attributeType);
+		}
+
+		internal override MethodInfo GetMethodOnTypeDefinition()
+		{
+			return method.GetMethodOnTypeDefinition();
+		}
+
+		internal override int ImportTo(Emit.ModuleBuilder module)
+		{
+			if (methodArgs == null)
+			{
+				return module.ImportMethodOrField(declaringType, method.Name, method.MethodSignature);
+			}
+			else
+			{
+				Writer.ByteBuffer spec = new Writer.ByteBuffer(10);
+				Signature.WriteMethodSpec(module, spec, methodArgs);
+				Metadata.MethodSpecTable.Record rec = new Metadata.MethodSpecTable.Record();
+				Emit.MethodBuilder mb = method as Emit.MethodBuilder;
+				if (mb != null && mb.ModuleBuilder == module && !declaringType.IsGenericType)
+				{
+					rec.Method = mb.MetadataToken;
+				}
+				else
+				{
+					rec.Method = module.ImportMember(GetGenericMethodDefinition());
+				}
+				rec.Instantiation = module.Blobs.Add(spec);
+				return 0x2B000000 | module.MethodSpec.FindOrAddRecord(rec);
+			}
+		}
+
+		internal override MethodSignature MethodSignature
+		{
+			get { return lazyMethodSignature ?? (lazyMethodSignature = method.MethodSignature.Bind(declaringType, methodArgs)); }
+		}
+
+		internal override MethodBase BindTypeParameters(Type type)
+		{
+			System.Diagnostics.Debug.Assert(methodArgs == null);
+			return new GenericMethodInstance(declaringType.BindTypeParameters(type), method, null);
+		}
+	}
+
+	sealed class GenericFieldInstance : FieldInfo
+	{
+		private readonly Type declaringType;
+		private readonly FieldInfo field;
+
+		internal GenericFieldInstance(Type declaringType, FieldInfo field)
+		{
+			this.declaringType = declaringType;
+			this.field = field;
+		}
+
+		public override bool Equals(object obj)
+		{
+			GenericFieldInstance other = obj as GenericFieldInstance;
+			return other != null && other.declaringType.Equals(declaringType) && other.field.Equals(field);
+		}
+
+		public override int GetHashCode()
+		{
+			return declaringType.GetHashCode() * 3 ^ field.GetHashCode();
+		}
+
+		public override FieldAttributes Attributes
+		{
+			get { return field.Attributes; }
+		}
+
+		public override string Name
+		{
+			get { return field.Name; }
+		}
+
+		public override Type DeclaringType
+		{
+			get { return declaringType; }
+		}
+
+		public override Module Module
+		{
+			get { return declaringType.Module; }
+		}
+
+		public override int MetadataToken
+		{
+			get { return field.MetadataToken; }
+		}
+
+		public override object GetRawConstantValue()
+		{
+			return field.GetRawConstantValue();
+		}
+
+		public override void __GetDataFromRVA(byte[] data, int offset, int length)
+		{
+			field.__GetDataFromRVA(data, offset, length);
+		}
+
+		internal override IList<CustomAttributeData> GetCustomAttributesData(Type attributeType)
+		{
+			return field.GetCustomAttributesData(attributeType);
+		}
+
+		internal override FieldSignature FieldSignature
+		{
+			get { return field.FieldSignature.ExpandTypeParameters(declaringType); }
+		}
+
+		internal override int ImportTo(Emit.ModuleBuilder module)
+		{
+			return module.ImportMethodOrField(declaringType, field.Name, field.FieldSignature);
+		}
+
+		internal override FieldInfo BindTypeParameters(Type type)
+		{
+			return new GenericFieldInstance(declaringType.BindTypeParameters(type), field);
+		}
+	}
+
+	sealed class GenericParameterInfoImpl : ParameterInfo
+	{
+		private readonly GenericMethodInstance method;
+		private readonly ParameterInfo parameterInfo;
+
+		internal GenericParameterInfoImpl(GenericMethodInstance method, ParameterInfo parameterInfo)
+		{
+			this.method = method;
+			this.parameterInfo = parameterInfo;
+		}
+
+		public override string Name
+		{
+			get { return parameterInfo.Name; }
+		}
+
+		public override Type ParameterType
+		{
+			get { return parameterInfo.ParameterType.BindTypeParameters(method); }
+		}
+
+		public override ParameterAttributes Attributes
+		{
+			get { return parameterInfo.Attributes; }
+		}
+
+		public override int Position
+		{
+			get { return parameterInfo.Position; }
+		}
+
+		public override object RawDefaultValue
+		{
+			get { return parameterInfo.RawDefaultValue; }
+		}
+
+		public override Type[] GetOptionalCustomModifiers()
+		{
+			Type[] modifiers = parameterInfo.GetOptionalCustomModifiers();
+			Type.InplaceBindTypeParameters(method, modifiers);
+			return modifiers;
+		}
+
+		public override Type[] GetRequiredCustomModifiers()
+		{
+			Type[] modifiers = parameterInfo.GetRequiredCustomModifiers();
+			Type.InplaceBindTypeParameters(method, modifiers);
+			return modifiers;
+		}
+
+		public override MemberInfo Member
+		{
+			get { return method; }
+		}
+
+		public override int MetadataToken
+		{
+			get { return parameterInfo.MetadataToken; }
+		}
+
+		internal override Module Module
+		{
+			get { return method.Module; }
+		}
+	}
+
+	sealed class GenericPropertyInfo : PropertyInfo
+	{
+		private readonly Type typeInstance;
+		private readonly PropertyInfo property;
+
+		internal GenericPropertyInfo(Type typeInstance, PropertyInfo property)
+		{
+			this.typeInstance = typeInstance;
+			this.property = property;
+		}
+
+		public override bool Equals(object obj)
+		{
+			GenericPropertyInfo other = obj as GenericPropertyInfo;
+			return other != null && other.typeInstance == typeInstance && other.property == property;
+		}
+
+		public override int GetHashCode()
+		{
+			return typeInstance.GetHashCode() * 537 + property.GetHashCode();
+		}
+
+		public override PropertyAttributes Attributes
+		{
+			get { return property.Attributes; }
+		}
+
+		public override bool CanRead
+		{
+			get { return property.CanRead; }
+		}
+
+		public override bool CanWrite
+		{
+			get { return property.CanWrite; }
+		}
+
+		private MethodInfo Wrap(MethodInfo method)
+		{
+			if (method == null)
+			{
+				return null;
+			}
+			return new GenericMethodInstance(typeInstance, method, null);
+		}
+
+		public override MethodInfo GetGetMethod(bool nonPublic)
+		{
+			return Wrap(property.GetGetMethod(nonPublic));
+		}
+
+		public override MethodInfo GetSetMethod(bool nonPublic)
+		{
+			return Wrap(property.GetSetMethod(nonPublic));
+		}
+
+		public override MethodInfo[] GetAccessors(bool nonPublic)
+		{
+			MethodInfo[] accessors = property.GetAccessors(nonPublic);
+			for (int i = 0; i < accessors.Length; i++)
+			{
+				accessors[i] = Wrap(accessors[i]);
+			}
+			return accessors;
+		}
+
+		public override object GetRawConstantValue()
+		{
+			return property.GetRawConstantValue();
+		}
+
+		internal override bool IsPublic
+		{
+			get { return property.IsPublic; }
+		}
+
+		internal override bool IsStatic
+		{
+			get { return property.IsStatic; }
+		}
+
+		internal override PropertySignature PropertySignature
+		{
+			get { return property.PropertySignature.ExpandTypeParameters(typeInstance); }
+		}
+
+		public override string Name
+		{
+			get { return property.Name; }
+		}
+
+		public override Type DeclaringType
+		{
+			get { return typeInstance; }
+		}
+
+		public override Module Module
+		{
+			get { return typeInstance.Module; }
+		}
+
+		public override int MetadataToken
+		{
+			get { return property.MetadataToken; }
+		}
+
+		internal override IList<CustomAttributeData> GetCustomAttributesData(Type attributeType)
+		{
+			return property.GetCustomAttributesData(attributeType);
+		}
+
+		internal override PropertyInfo BindTypeParameters(Type type)
+		{
+			return new GenericPropertyInfo(typeInstance.BindTypeParameters(type), property);
+		}
+	}
+
+	sealed class GenericEventInfo : EventInfo
+	{
+		private readonly Type typeInstance;
+		private readonly EventInfo eventInfo;
+
+		internal GenericEventInfo(Type typeInstance, EventInfo eventInfo)
+		{
+			this.typeInstance = typeInstance;
+			this.eventInfo = eventInfo;
+		}
+
+		public override bool Equals(object obj)
+		{
+			GenericEventInfo other = obj as GenericEventInfo;
+			return other != null && other.typeInstance == typeInstance && other.eventInfo == eventInfo;
+		}
+
+		public override int GetHashCode()
+		{
+			return typeInstance.GetHashCode() * 777 + eventInfo.GetHashCode();
+		}
+
+		public override EventAttributes Attributes
+		{
+			get { return eventInfo.Attributes; }
+		}
+
+		private MethodInfo Wrap(MethodInfo method)
+		{
+			if (method == null)
+			{
+				return null;
+			}
+			return new GenericMethodInstance(typeInstance, method, null);
+		}
+
+		public override MethodInfo GetAddMethod(bool nonPublic)
+		{
+			return Wrap(eventInfo.GetAddMethod(nonPublic));
+		}
+
+		public override MethodInfo GetRaiseMethod(bool nonPublic)
+		{
+			return Wrap(eventInfo.GetRaiseMethod(nonPublic));
+		}
+
+		public override MethodInfo GetRemoveMethod(bool nonPublic)
+		{
+			return Wrap(eventInfo.GetRemoveMethod(nonPublic));
+		}
+
+		public override MethodInfo[] GetOtherMethods(bool nonPublic)
+		{
+			MethodInfo[] others = eventInfo.GetOtherMethods(nonPublic);
+			for (int i = 0; i < others.Length; i++)
+			{
+				others[i] = Wrap(others[i]);
+			}
+			return others;
+		}
+
+		public override Type EventHandlerType
+		{
+			get { return eventInfo.EventHandlerType.BindTypeParameters(typeInstance); }
+		}
+
+		public override string Name
+		{
+			get { return eventInfo.Name; }
+		}
+
+		public override Type DeclaringType
+		{
+			get { return typeInstance; }
+		}
+
+		public override Module Module
+		{
+			get { return eventInfo.Module; }
+		}
+
+		public override int MetadataToken
+		{
+			get { return eventInfo.MetadataToken; }
+		}
+
+		internal override IList<CustomAttributeData> GetCustomAttributesData(Type attributeType)
+		{
+			return eventInfo.GetCustomAttributesData(attributeType);
+		}
+
+		internal override EventInfo BindTypeParameters(Type type)
+		{
+			return new GenericEventInfo(typeInstance.BindTypeParameters(type), eventInfo);
+		}
+
+		internal override bool IsPublic
+		{
+			get { return eventInfo.IsPublic; }
+		}
+
+		internal override bool IsStatic
+		{
+			get { return eventInfo.IsStatic; }
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/IKVM.Reflection.csproj b/mcs/class/IKVM.Reflection/IKVM.Reflection.csproj
new file mode 100644
index 0000000..c038274
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/IKVM.Reflection.csproj
@@ -0,0 +1,141 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{4CB170EF-DFE6-4A56-9E1B-A85449E827A7}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>IKVM.Reflection</RootNamespace>
+    <AssemblyName>IKVM.Reflection</AssemblyName>
+    <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <TargetFrameworkSubset>
+    </TargetFrameworkSubset>
+    <SccProjectName>
+    </SccProjectName>
+    <SccLocalPath>
+    </SccLocalPath>
+    <SccAuxPath>
+    </SccAuxPath>
+    <SccProvider>
+    </SccProvider>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="AmbiguousMatchException.cs" />
+    <Compile Include="Assembly.cs" />
+    <Compile Include="AssemblyName.cs" />
+    <Compile Include="BadImageFormatException.cs" />
+    <Compile Include="Binder.cs" />
+    <Compile Include="ConstructorInfo.cs" />
+    <Compile Include="CustomAttributeData.cs" />
+    <Compile Include="CustomAttributeNamedArgument.cs" />
+    <Compile Include="CustomAttributeTypedArgument.cs" />
+    <Compile Include="Emit\AssemblyBuilder.cs" />
+    <Compile Include="Emit\ConstructorBuilder.cs" />
+    <Compile Include="Emit\CustomAttributeBuilder.cs" />
+    <Compile Include="Emit\EnumBuilder.cs" />
+    <Compile Include="Emit\Enums.cs" />
+    <Compile Include="Emit\EventBuilder.cs" />
+    <Compile Include="Emit\FieldBuilder.cs" />
+    <Compile Include="Emit\ILGenerator.cs" />
+    <Compile Include="Emit\MethodBuilder.cs" />
+    <Compile Include="Emit\ModuleBuilder.cs" />
+    <Compile Include="Emit\OpCode.cs" />
+    <Compile Include="Emit\OpCodes.cs" />
+    <Compile Include="Emit\ParameterBuilder.cs" />
+    <Compile Include="Emit\PropertyBuilder.cs" />
+    <Compile Include="Emit\SignatureHelper.cs" />
+    <Compile Include="Emit\Tokens.cs" />
+    <Compile Include="Emit\TypeBuilder.cs" />
+    <Compile Include="Enums.cs" />
+    <Compile Include="EventInfo.cs" />
+    <Compile Include="ExceptionHandlingClause.cs" />
+    <Compile Include="FieldInfo.cs" />
+    <Compile Include="FieldSignature.cs" />
+    <Compile Include="Fusion.cs" />
+    <Compile Include="GenericWrappers.cs" />
+    <Compile Include="Impl\CryptoConvert.cs" />
+    <Compile Include="Impl\CryptoHack.cs" />
+    <Compile Include="Impl\ITypeOwner.cs" />
+    <Compile Include="Impl\MdbWriter.cs" />
+    <Compile Include="Impl\PdbWriter.cs" />
+    <Compile Include="Impl\SymbolSupport.cs" />
+    <Compile Include="InterfaceMapping.cs" />
+    <Compile Include="LocalVariableInfo.cs" />
+    <Compile Include="ManifestResourceInfo.cs" />
+    <Compile Include="MarshalSpec.cs" />
+    <Compile Include="MemberInfo.cs" />
+    <Compile Include="Metadata\CliHeader.cs" />
+    <Compile Include="Metadata\MetadataRW.cs" />
+    <Compile Include="Metadata\Tables.cs" />
+    <Compile Include="MethodBase.cs" />
+    <Compile Include="MethodBody.cs" />
+    <Compile Include="MethodImplMap.cs" />
+    <Compile Include="MethodInfo.cs" />
+    <Compile Include="MethodSignature.cs" />
+    <Compile Include="Module.cs" />
+    <Compile Include="ParameterInfo.cs" />
+    <Compile Include="ParameterModifier.cs" />
+    <Compile Include="PropertyInfo.cs" />
+    <Compile Include="PropertySignature.cs" />
+    <Compile Include="Reader\AssemblyReader.cs" />
+    <Compile Include="Reader\ByteReader.cs" />
+    <Compile Include="Reader\EventInfoImpl.cs" />
+    <Compile Include="Reader\Field.cs" />
+    <Compile Include="Reader\GenericTypeParameter.cs" />
+    <Compile Include="Reader\MetadataReader.cs" />
+    <Compile Include="Reader\Method.cs" />
+    <Compile Include="Reader\ModuleReader.cs" />
+    <Compile Include="Reader\PEReader.cs" />
+    <Compile Include="Reader\PropertyInfoImpl.cs" />
+    <Compile Include="Reader\ResourceModule.cs" />
+    <Compile Include="Reader\TypeDefImpl.cs" />
+    <Compile Include="Signature.cs" />
+    <Compile Include="StandAloneMethodSig.cs" />
+    <Compile Include="StrongNameKeyPair.cs" />
+    <Compile Include="Type.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="TypeNameParser.cs" />
+    <Compile Include="Universe.cs" />
+    <Compile Include="Util.cs" />
+    <Compile Include="Writer\ByteBuffer.cs" />
+    <Compile Include="Writer\Heaps.cs" />
+    <Compile Include="Writer\MetadataWriter.cs" />
+    <Compile Include="Writer\ModuleWriter.cs" />
+    <Compile Include="Writer\PEWriter.cs" />
+    <Compile Include="Writer\ResourceSection.cs" />
+    <Compile Include="Writer\TextSection.cs" />
+    <Compile Include="Writer\VersionInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
\ No newline at end of file
diff --git a/mcs/class/IKVM.Reflection/Impl/CryptoConvert.cs b/mcs/class/IKVM.Reflection/Impl/CryptoConvert.cs
new file mode 100644
index 0000000..14687de
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Impl/CryptoConvert.cs
@@ -0,0 +1,743 @@
+//
+// CryptoConvert.cs - Crypto Convertion Routines
+//
+// Author:
+//	Sebastien Pouliot  <sebastien at ximian.com>
+//
+// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
+// Copyright (C) 2004-2006 Novell Inc. (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// [JF-20081013] begin modifications for IKVM
+#define INSIDE_CORLIB
+// end modifications for IKVM
+
+using System;
+using System.Globalization;
+using System.Security.Cryptography;
+using System.Text;
+
+namespace Mono.Security.Cryptography {
+
+#if INSIDE_CORLIB
+	internal
+#else
+	public
+#endif
+	sealed class CryptoConvert {
+
+		private CryptoConvert () 
+		{
+		}
+
+		static private int ToInt32LE (byte [] bytes, int offset)
+		{
+			return (bytes [offset+3] << 24) | (bytes [offset+2] << 16) | (bytes [offset+1] << 8) | bytes [offset];
+		}
+
+		static private uint ToUInt32LE (byte [] bytes, int offset)
+		{
+			return (uint)((bytes [offset+3] << 24) | (bytes [offset+2] << 16) | (bytes [offset+1] << 8) | bytes [offset]);
+		}
+
+		static private byte [] GetBytesLE (int val)
+		{
+			return new byte [] { 
+				(byte) (val & 0xff), 
+				(byte) ((val >> 8) & 0xff), 
+				(byte) ((val >> 16) & 0xff), 
+				(byte) ((val >> 24) & 0xff)
+			};
+                }
+
+		static private byte[] Trim (byte[] array) 
+		{
+			for (int i=0; i < array.Length; i++) {
+				if (array [i] != 0x00) {
+					byte[] result = new byte [array.Length - i];
+					Buffer.BlockCopy (array, i, result, 0, result.Length);
+					return result;
+				}
+			}
+			return null;
+		}
+
+		// convert the key from PRIVATEKEYBLOB to RSA
+		// http://msdn.microsoft.com/library/default.asp?url=/library/en-us/security/Security/private_key_blobs.asp
+		// e.g. SNK files, PVK files
+		static public RSA FromCapiPrivateKeyBlob (byte[] blob) 
+		{
+			return FromCapiPrivateKeyBlob (blob, 0);
+		}
+
+		static public RSA FromCapiPrivateKeyBlob (byte[] blob, int offset) 
+		{
+			if (blob == null)
+				throw new ArgumentNullException ("blob");
+			if (offset >= blob.Length)
+				throw new ArgumentException ("blob is too small.");
+
+			RSAParameters rsap = new RSAParameters ();
+			try {
+				if ((blob [offset]   != 0x07) ||				// PRIVATEKEYBLOB (0x07)
+				    (blob [offset+1] != 0x02) ||				// Version (0x02)
+				    (blob [offset+2] != 0x00) ||				// Reserved (word)
+				    (blob [offset+3] != 0x00) ||
+				    (ToUInt32LE (blob, offset+8) != 0x32415352))	// DWORD magic = RSA2
+					throw new CryptographicException ("Invalid blob header");
+				
+				// ALGID (CALG_RSA_SIGN, CALG_RSA_KEYX, ...)
+				// int algId = ToInt32LE (blob, offset+4);
+
+				// DWORD bitlen
+				int bitLen = ToInt32LE (blob, offset+12);
+
+				// DWORD public exponent
+				byte[] exp = new byte [4];
+				Buffer.BlockCopy (blob, offset+16, exp, 0, 4);
+				Array.Reverse (exp);
+				rsap.Exponent = Trim (exp);
+			
+				int pos = offset+20;
+				// BYTE modulus[rsapubkey.bitlen/8];
+				int byteLen = (bitLen >> 3);
+				rsap.Modulus = new byte [byteLen];
+				Buffer.BlockCopy (blob, pos, rsap.Modulus, 0, byteLen);
+				Array.Reverse (rsap.Modulus);
+				pos += byteLen;
+
+				// BYTE prime1[rsapubkey.bitlen/16];
+				int byteHalfLen = (byteLen >> 1);
+				rsap.P = new byte [byteHalfLen];
+				Buffer.BlockCopy (blob, pos, rsap.P, 0, byteHalfLen);
+				Array.Reverse (rsap.P);
+				pos += byteHalfLen;
+
+				// BYTE prime2[rsapubkey.bitlen/16];
+				rsap.Q = new byte [byteHalfLen];
+				Buffer.BlockCopy (blob, pos, rsap.Q, 0, byteHalfLen);
+				Array.Reverse (rsap.Q);
+				pos += byteHalfLen;
+
+				// BYTE exponent1[rsapubkey.bitlen/16];
+				rsap.DP = new byte [byteHalfLen];
+				Buffer.BlockCopy (blob, pos, rsap.DP, 0, byteHalfLen);
+				Array.Reverse (rsap.DP);
+				pos += byteHalfLen;
+
+				// BYTE exponent2[rsapubkey.bitlen/16];
+				rsap.DQ = new byte [byteHalfLen];
+				Buffer.BlockCopy (blob, pos, rsap.DQ, 0, byteHalfLen);
+				Array.Reverse (rsap.DQ);
+				pos += byteHalfLen;
+
+				// BYTE coefficient[rsapubkey.bitlen/16];
+				rsap.InverseQ = new byte [byteHalfLen];
+				Buffer.BlockCopy (blob, pos, rsap.InverseQ, 0, byteHalfLen);
+				Array.Reverse (rsap.InverseQ);
+				pos += byteHalfLen;
+
+				// ok, this is hackish but CryptoAPI support it so...
+				// note: only works because CRT is used by default
+				// http://bugzilla.ximian.com/show_bug.cgi?id=57941
+				rsap.D = new byte [byteLen]; // must be allocated
+				if (pos + byteLen + offset <= blob.Length) {
+					// BYTE privateExponent[rsapubkey.bitlen/8];
+					Buffer.BlockCopy (blob, pos, rsap.D, 0, byteLen);
+					Array.Reverse (rsap.D);
+				}
+			}
+			catch (Exception e) {
+				throw new CryptographicException ("Invalid blob.", e);
+			}
+
+			RSA rsa = null;
+			try {
+				rsa = RSA.Create ();
+				rsa.ImportParameters (rsap);
+			}
+			catch (CryptographicException ce) {
+				// this may cause problem when this code is run under
+				// the SYSTEM identity on Windows (e.g. ASP.NET). See
+				// http://bugzilla.ximian.com/show_bug.cgi?id=77559
+				try {
+					CspParameters csp = new CspParameters ();
+					csp.Flags = CspProviderFlags.UseMachineKeyStore;
+					rsa = new RSACryptoServiceProvider (csp);
+					rsa.ImportParameters (rsap);
+				}
+				catch {
+					// rethrow original, not the later, exception if this fails
+					throw ce;
+				}
+			}
+			return rsa;
+		}
+
+		static public DSA FromCapiPrivateKeyBlobDSA (byte[] blob)
+		{
+			return FromCapiPrivateKeyBlobDSA (blob, 0);
+		}
+
+		static public DSA FromCapiPrivateKeyBlobDSA (byte[] blob, int offset)
+		{
+			if (blob == null)
+				throw new ArgumentNullException ("blob");
+			if (offset >= blob.Length)
+				throw new ArgumentException ("blob is too small.");
+
+			DSAParameters dsap = new DSAParameters ();
+			try {
+				if ((blob [offset] != 0x07) ||				// PRIVATEKEYBLOB (0x07)
+				    (blob [offset + 1] != 0x02) ||			// Version (0x02)
+				    (blob [offset + 2] != 0x00) ||			// Reserved (word)
+				    (blob [offset + 3] != 0x00) ||
+				    (ToUInt32LE (blob, offset + 8) != 0x32535344))	// DWORD magic
+					throw new CryptographicException ("Invalid blob header");
+
+				int bitlen = ToInt32LE (blob, offset + 12);
+				int bytelen = bitlen >> 3;
+				int pos = offset + 16;
+
+				dsap.P = new byte [bytelen];
+				Buffer.BlockCopy (blob, pos, dsap.P, 0, bytelen);
+				Array.Reverse (dsap.P);
+				pos += bytelen;
+
+				dsap.Q = new byte [20];
+				Buffer.BlockCopy (blob, pos, dsap.Q, 0, 20);
+				Array.Reverse (dsap.Q);
+				pos += 20;
+
+				dsap.G = new byte [bytelen];
+				Buffer.BlockCopy (blob, pos, dsap.G, 0, bytelen);
+				Array.Reverse (dsap.G);
+				pos += bytelen;
+
+				dsap.X = new byte [20];
+				Buffer.BlockCopy (blob, pos, dsap.X, 0, 20);
+				Array.Reverse (dsap.X);
+				pos += 20;
+
+				dsap.Counter = ToInt32LE (blob, pos);
+				pos += 4;
+
+				dsap.Seed = new byte [20];
+				Buffer.BlockCopy (blob, pos, dsap.Seed, 0, 20);
+				Array.Reverse (dsap.Seed);
+				pos += 20;
+			}
+			catch (Exception e) {
+				throw new CryptographicException ("Invalid blob.", e);
+			}
+
+			DSA dsa = null;
+			try {
+				dsa = (DSA)DSA.Create ();
+				dsa.ImportParameters (dsap);
+			}
+			catch (CryptographicException ce) {
+				// this may cause problem when this code is run under
+				// the SYSTEM identity on Windows (e.g. ASP.NET). See
+				// http://bugzilla.ximian.com/show_bug.cgi?id=77559
+				try {
+					CspParameters csp = new CspParameters ();
+					csp.Flags = CspProviderFlags.UseMachineKeyStore;
+					dsa = new DSACryptoServiceProvider (csp);
+					dsa.ImportParameters (dsap);
+				}
+				catch {
+					// rethrow original, not the later, exception if this fails
+					throw ce;
+				}
+			}
+			return dsa;
+		}
+
+		static public byte[] ToCapiPrivateKeyBlob (RSA rsa) 
+		{
+			RSAParameters p = rsa.ExportParameters (true);
+			int keyLength = p.Modulus.Length; // in bytes
+			byte[] blob = new byte [20 + (keyLength << 2) + (keyLength >> 1)];
+
+			blob [0] = 0x07;	// Type - PRIVATEKEYBLOB (0x07)
+			blob [1] = 0x02;	// Version - Always CUR_BLOB_VERSION (0x02)
+			// [2], [3]		// RESERVED - Always 0
+			blob [5] = 0x24;	// ALGID - Always 00 24 00 00 (for CALG_RSA_SIGN)
+			blob [8] = 0x52;	// Magic - RSA2 (ASCII in hex)
+			blob [9] = 0x53;
+			blob [10] = 0x41;
+			blob [11] = 0x32;
+
+			byte[] bitlen = GetBytesLE (keyLength << 3);
+			blob [12] = bitlen [0];	// bitlen
+			blob [13] = bitlen [1];	
+			blob [14] = bitlen [2];	
+			blob [15] = bitlen [3];
+
+			// public exponent (DWORD)
+			int pos = 16;
+			int n = p.Exponent.Length;
+			while (n > 0)
+				blob [pos++] = p.Exponent [--n];
+			// modulus
+			pos = 20;
+			byte[] part = p.Modulus;
+			int len = part.Length;
+			Array.Reverse (part, 0, len);
+			Buffer.BlockCopy (part, 0, blob, pos, len);
+			pos += len;
+			// private key
+			part = p.P;
+			len = part.Length;
+			Array.Reverse (part, 0, len);
+			Buffer.BlockCopy (part, 0, blob, pos, len);
+			pos += len;
+
+			part = p.Q;
+			len = part.Length;
+			Array.Reverse (part, 0, len);
+			Buffer.BlockCopy (part, 0, blob, pos, len);
+			pos += len;
+
+			part = p.DP;
+			len = part.Length;
+			Array.Reverse (part, 0, len);
+			Buffer.BlockCopy (part, 0, blob, pos, len);
+			pos += len;
+
+			part = p.DQ;
+			len = part.Length;
+			Array.Reverse (part, 0, len);
+			Buffer.BlockCopy (part, 0, blob, pos, len);
+			pos += len;
+
+			part = p.InverseQ;
+			len = part.Length;
+			Array.Reverse (part, 0, len);
+			Buffer.BlockCopy (part, 0, blob, pos, len);
+			pos += len;
+
+			part = p.D;
+			len = part.Length;
+			Array.Reverse (part, 0, len);
+			Buffer.BlockCopy (part, 0, blob, pos, len);
+
+			return blob;
+		}
+
+		static public byte[] ToCapiPrivateKeyBlob (DSA dsa)
+		{
+			DSAParameters p = dsa.ExportParameters (true);
+			int keyLength = p.P.Length; // in bytes
+
+			// header + P + Q + G + X + count + seed
+			byte[] blob = new byte [16 + keyLength + 20 + keyLength + 20 + 4 + 20];
+
+			blob [0] = 0x07;	// Type - PRIVATEKEYBLOB (0x07)
+			blob [1] = 0x02;	// Version - Always CUR_BLOB_VERSION (0x02)
+			// [2], [3]		// RESERVED - Always 0
+			blob [5] = 0x22;	// ALGID
+			blob [8] = 0x44;	// Magic
+			blob [9] = 0x53;
+			blob [10] = 0x53;
+			blob [11] = 0x32;
+
+			byte[] bitlen = GetBytesLE (keyLength << 3);
+			blob [12] = bitlen [0];
+			blob [13] = bitlen [1];
+			blob [14] = bitlen [2];
+			blob [15] = bitlen [3];
+
+			int pos = 16;
+			byte[] part = p.P;
+			Array.Reverse (part);
+			Buffer.BlockCopy (part, 0, blob, pos, keyLength);
+			pos += keyLength;
+
+			part = p.Q;
+			Array.Reverse (part);
+			Buffer.BlockCopy (part, 0, blob, pos, 20);
+			pos += 20;
+
+			part = p.G;
+			Array.Reverse (part);
+			Buffer.BlockCopy (part, 0, blob, pos, keyLength);
+			pos += keyLength;
+
+			part = p.X;
+			Array.Reverse (part);
+			Buffer.BlockCopy (part, 0, blob, pos, 20);
+			pos += 20;
+
+			Buffer.BlockCopy (GetBytesLE (p.Counter), 0, blob, pos, 4);
+			pos += 4;
+
+			part = p.Seed;
+			Array.Reverse (part);
+			Buffer.BlockCopy (part, 0, blob, pos, 20);
+
+			return blob;
+		}
+
+		static public RSA FromCapiPublicKeyBlob (byte[] blob) 
+		{
+			return FromCapiPublicKeyBlob (blob, 0);
+		}
+
+		static public RSA FromCapiPublicKeyBlob (byte[] blob, int offset) 
+		{
+			if (blob == null)
+				throw new ArgumentNullException ("blob");
+			if (offset >= blob.Length)
+				throw new ArgumentException ("blob is too small.");
+
+			try {
+				if ((blob [offset]   != 0x06) ||				// PUBLICKEYBLOB (0x06)
+				    (blob [offset+1] != 0x02) ||				// Version (0x02)
+				    (blob [offset+2] != 0x00) ||				// Reserved (word)
+				    (blob [offset+3] != 0x00) || 
+				    (ToUInt32LE (blob, offset+8) != 0x31415352))	// DWORD magic = RSA1
+					throw new CryptographicException ("Invalid blob header");
+
+				// ALGID (CALG_RSA_SIGN, CALG_RSA_KEYX, ...)
+				// int algId = ToInt32LE (blob, offset+4);
+
+				// DWORD bitlen
+				int bitLen = ToInt32LE (blob, offset+12);
+
+				// DWORD public exponent
+				RSAParameters rsap = new RSAParameters ();
+				rsap.Exponent = new byte [3];
+				rsap.Exponent [0] = blob [offset+18];
+				rsap.Exponent [1] = blob [offset+17];
+				rsap.Exponent [2] = blob [offset+16];
+			
+				int pos = offset+20;
+				// BYTE modulus[rsapubkey.bitlen/8];
+				int byteLen = (bitLen >> 3);
+				rsap.Modulus = new byte [byteLen];
+				Buffer.BlockCopy (blob, pos, rsap.Modulus, 0, byteLen);
+				Array.Reverse (rsap.Modulus);
+
+				RSA rsa = null;
+				try {
+					rsa = RSA.Create ();
+					rsa.ImportParameters (rsap);
+				}
+				catch (CryptographicException) {
+					// this may cause problem when this code is run under
+					// the SYSTEM identity on Windows (e.g. ASP.NET). See
+					// http://bugzilla.ximian.com/show_bug.cgi?id=77559
+					CspParameters csp = new CspParameters ();
+					csp.Flags = CspProviderFlags.UseMachineKeyStore;
+					rsa = new RSACryptoServiceProvider (csp);
+					rsa.ImportParameters (rsap);
+				}
+				return rsa;
+			}
+			catch (Exception e) {
+				throw new CryptographicException ("Invalid blob.", e);
+			}
+		}
+
+		static public DSA FromCapiPublicKeyBlobDSA (byte[] blob)
+		{
+			return FromCapiPublicKeyBlobDSA (blob, 0);
+		}
+
+		static public DSA FromCapiPublicKeyBlobDSA (byte[] blob, int offset)
+		{
+			if (blob == null)
+				throw new ArgumentNullException ("blob");
+			if (offset >= blob.Length)
+				throw new ArgumentException ("blob is too small.");
+
+			try {
+				if ((blob [offset] != 0x06) ||				// PUBLICKEYBLOB (0x06)
+				    (blob [offset + 1] != 0x02) ||			// Version (0x02)
+				    (blob [offset + 2] != 0x00) ||			// Reserved (word)
+				    (blob [offset + 3] != 0x00) ||
+				    (ToUInt32LE (blob, offset + 8) != 0x31535344))	// DWORD magic
+					throw new CryptographicException ("Invalid blob header");
+
+				int bitlen = ToInt32LE (blob, offset + 12);
+				DSAParameters dsap = new DSAParameters ();
+				int bytelen = bitlen >> 3;
+				int pos = offset + 16;
+
+				dsap.P = new byte [bytelen];
+				Buffer.BlockCopy (blob, pos, dsap.P, 0, bytelen);
+				Array.Reverse (dsap.P);
+				pos += bytelen;
+
+				dsap.Q = new byte [20];
+				Buffer.BlockCopy (blob, pos, dsap.Q, 0, 20);
+				Array.Reverse (dsap.Q);
+				pos += 20;
+
+				dsap.G = new byte [bytelen];
+				Buffer.BlockCopy (blob, pos, dsap.G, 0, bytelen);
+				Array.Reverse (dsap.G);
+				pos += bytelen;
+
+				dsap.Y = new byte [bytelen];
+				Buffer.BlockCopy (blob, pos, dsap.Y, 0, bytelen);
+				Array.Reverse (dsap.Y);
+				pos += bytelen;
+
+				dsap.Counter = ToInt32LE (blob, pos);
+				pos += 4;
+
+				dsap.Seed = new byte [20];
+				Buffer.BlockCopy (blob, pos, dsap.Seed, 0, 20);
+				Array.Reverse (dsap.Seed);
+				pos += 20;
+
+				DSA dsa = (DSA)DSA.Create ();
+				dsa.ImportParameters (dsap);
+				return dsa;
+			}
+			catch (Exception e) {
+				throw new CryptographicException ("Invalid blob.", e);
+			}
+		}
+
+		static public byte[] ToCapiPublicKeyBlob (RSA rsa) 
+		{
+			RSAParameters p = rsa.ExportParameters (false);
+			int keyLength = p.Modulus.Length; // in bytes
+			byte[] blob = new byte [20 + keyLength];
+
+			blob [0] = 0x06;	// Type - PUBLICKEYBLOB (0x06)
+			blob [1] = 0x02;	// Version - Always CUR_BLOB_VERSION (0x02)
+			// [2], [3]		// RESERVED - Always 0
+			blob [5] = 0x24;	// ALGID - Always 00 24 00 00 (for CALG_RSA_SIGN)
+			blob [8] = 0x52;	// Magic - RSA1 (ASCII in hex)
+			blob [9] = 0x53;
+			blob [10] = 0x41;
+			blob [11] = 0x31;
+
+			byte[] bitlen = GetBytesLE (keyLength << 3);
+			blob [12] = bitlen [0];	// bitlen
+			blob [13] = bitlen [1];	
+			blob [14] = bitlen [2];	
+			blob [15] = bitlen [3];
+
+			// public exponent (DWORD)
+			int pos = 16;
+			int n = p.Exponent.Length;
+			while (n > 0)
+				blob [pos++] = p.Exponent [--n];
+			// modulus
+			pos = 20;
+			byte[] part = p.Modulus;
+			int len = part.Length;
+			Array.Reverse (part, 0, len);
+			Buffer.BlockCopy (part, 0, blob, pos, len);
+			pos += len;
+			return blob;
+		}
+
+		static public byte[] ToCapiPublicKeyBlob (DSA dsa)
+		{
+			DSAParameters p = dsa.ExportParameters (false);
+			int keyLength = p.P.Length; // in bytes
+
+			// header + P + Q + G + Y + count + seed
+			byte[] blob = new byte [16 + keyLength + 20 + keyLength + keyLength + 4 + 20];
+
+			blob [0] = 0x06;	// Type - PUBLICKEYBLOB (0x06)
+			blob [1] = 0x02;	// Version - Always CUR_BLOB_VERSION (0x02)
+			// [2], [3]		// RESERVED - Always 0
+			blob [5] = 0x22;	// ALGID
+			blob [8] = 0x44;	// Magic
+			blob [9] = 0x53;
+			blob [10] = 0x53;
+			blob [11] = 0x31;
+
+			byte[] bitlen = GetBytesLE (keyLength << 3);
+			blob [12] = bitlen [0];
+			blob [13] = bitlen [1];
+			blob [14] = bitlen [2];
+			blob [15] = bitlen [3];
+
+			int pos = 16;
+			byte[] part;
+
+			part = p.P;
+			Array.Reverse (part);
+			Buffer.BlockCopy (part, 0, blob, pos, keyLength);
+			pos += keyLength;
+
+			part = p.Q;
+			Array.Reverse (part);
+			Buffer.BlockCopy (part, 0, blob, pos, 20);
+			pos += 20;
+
+			part = p.G;
+			Array.Reverse (part);
+			Buffer.BlockCopy (part, 0, blob, pos, keyLength);
+			pos += keyLength;
+
+			part = p.Y;
+			Array.Reverse (part);
+			Buffer.BlockCopy (part, 0, blob, pos, keyLength);
+			pos += keyLength;
+
+			Buffer.BlockCopy (GetBytesLE (p.Counter), 0, blob, pos, 4);
+			pos += 4;
+
+			part = p.Seed;
+			Array.Reverse (part);
+			Buffer.BlockCopy (part, 0, blob, pos, 20);
+
+			return blob;
+		}
+
+		// PRIVATEKEYBLOB
+		// PUBLICKEYBLOB
+		static public RSA FromCapiKeyBlob (byte[] blob) 
+		{
+			return FromCapiKeyBlob (blob, 0);
+		}
+
+		static public RSA FromCapiKeyBlob (byte[] blob, int offset) 
+		{
+			if (blob == null)
+				throw new ArgumentNullException ("blob");
+			if (offset >= blob.Length)
+				throw new ArgumentException ("blob is too small.");
+
+			switch (blob [offset]) {
+				case 0x00:
+					// this could be a public key inside an header
+					// like "sn -e" would produce
+					if (blob [offset + 12] == 0x06) {
+						return FromCapiPublicKeyBlob (blob, offset + 12);
+					}
+					break;
+				case 0x06:
+					return FromCapiPublicKeyBlob (blob, offset);
+				case 0x07:
+					return FromCapiPrivateKeyBlob (blob, offset);
+			}
+			throw new CryptographicException ("Unknown blob format.");
+		}
+
+		static public DSA FromCapiKeyBlobDSA (byte[] blob)
+		{
+			return FromCapiKeyBlobDSA (blob, 0);
+		}
+
+		static public DSA FromCapiKeyBlobDSA (byte[] blob, int offset)
+		{
+			if (blob == null)
+				throw new ArgumentNullException ("blob");
+			if (offset >= blob.Length)
+				throw new ArgumentException ("blob is too small.");
+
+			switch (blob [offset]) {
+				case 0x06:
+					return FromCapiPublicKeyBlobDSA (blob, offset);
+				case 0x07:
+					return FromCapiPrivateKeyBlobDSA (blob, offset);
+			}
+			throw new CryptographicException ("Unknown blob format.");
+		}
+
+		static public byte[] ToCapiKeyBlob (AsymmetricAlgorithm keypair, bool includePrivateKey) 
+		{
+			if (keypair == null)
+				throw new ArgumentNullException ("keypair");
+
+			// check between RSA and DSA (and potentially others like DH)
+			if (keypair is RSA)
+				return ToCapiKeyBlob ((RSA)keypair, includePrivateKey);
+			else if (keypair is DSA)
+				return ToCapiKeyBlob ((DSA)keypair, includePrivateKey);
+			else
+				return null;	// TODO
+		}
+
+		static public byte[] ToCapiKeyBlob (RSA rsa, bool includePrivateKey) 
+		{
+			if (rsa == null)
+				throw new ArgumentNullException ("rsa");
+
+			if (includePrivateKey)
+				return ToCapiPrivateKeyBlob (rsa);
+			else
+				return ToCapiPublicKeyBlob (rsa);
+		}
+
+		static public byte[] ToCapiKeyBlob (DSA dsa, bool includePrivateKey)
+		{
+			if (dsa == null)
+				throw new ArgumentNullException ("dsa");
+
+			if (includePrivateKey)
+				return ToCapiPrivateKeyBlob (dsa);
+			else
+				return ToCapiPublicKeyBlob (dsa);
+		}
+
+		static public string ToHex (byte[] input) 
+		{
+			if (input == null)
+				return null;
+
+			StringBuilder sb = new StringBuilder (input.Length * 2);
+			foreach (byte b in input) {
+				sb.Append (b.ToString ("X2", CultureInfo.InvariantCulture));
+			}
+			return sb.ToString ();
+		}
+
+		static private byte FromHexChar (char c) 
+		{
+			if ((c >= 'a') && (c <= 'f'))
+				return (byte) (c - 'a' + 10);
+			if ((c >= 'A') && (c <= 'F'))
+				return (byte) (c - 'A' + 10);
+			if ((c >= '0') && (c <= '9'))
+				return (byte) (c - '0');
+			throw new ArgumentException ("invalid hex char");
+		}
+
+		static public byte[] FromHex (string hex) 
+		{
+			if (hex == null)
+				return null;
+			if ((hex.Length & 0x1) == 0x1)
+				throw new ArgumentException ("Length must be a multiple of 2");
+
+			byte[] result = new byte [hex.Length >> 1];
+			int n = 0;
+			int i = 0;
+			while (n < result.Length) {
+				result [n] = (byte) (FromHexChar (hex [i++]) << 4);
+				result [n++] += FromHexChar (hex [i++]);
+			}
+			return result;
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Impl/CryptoHack.cs b/mcs/class/IKVM.Reflection/Impl/CryptoHack.cs
new file mode 100644
index 0000000..1a8b46a
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Impl/CryptoHack.cs
@@ -0,0 +1,56 @@
+/*
+  Copyright (C) 2008 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Security.Cryptography;
+using System.Runtime.Serialization;
+
+namespace IKVM.Reflection.Impl
+{
+	static class CryptoHack
+	{
+		internal static RSA CreateRSA(StrongNameKeyPair keyPair)
+		{
+			// HACK use serialization to get at the private key or key container name,
+			// this should be more future proof than using reflection to access the fields directly.
+			SerializationInfo ser = new SerializationInfo(typeof(StrongNameKeyPair), new FormatterConverter());
+			((ISerializable)keyPair.keyPair).GetObjectData(ser, new StreamingContext());
+			byte[] key = (byte[])ser.GetValue("_keyPairArray", typeof(byte[]));
+			string keycontainer = ser.GetString("_keyPairContainer");
+			if (keycontainer != null)
+			{
+				CspParameters parm = new CspParameters();
+				parm.Flags = CspProviderFlags.UseMachineKeyStore;
+				parm.KeyContainerName = keycontainer;
+				parm.KeyNumber = 2;	// Signature
+				return new RSACryptoServiceProvider(parm);
+			}
+			else
+			{
+				return Mono.Security.Cryptography.CryptoConvert.FromCapiKeyBlob(key);
+			}
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Impl/ITypeOwner.cs b/mcs/class/IKVM.Reflection/Impl/ITypeOwner.cs
new file mode 100644
index 0000000..10050f7
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Impl/ITypeOwner.cs
@@ -0,0 +1,32 @@
+/*
+  Copyright (C) 2008 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using IKVM.Reflection.Emit;
+
+namespace IKVM.Reflection.Impl
+{
+	interface ITypeOwner
+	{
+		ModuleBuilder ModuleBuilder { get; }
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Impl/MdbWriter.cs b/mcs/class/IKVM.Reflection/Impl/MdbWriter.cs
new file mode 100644
index 0000000..06d3ed0
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Impl/MdbWriter.cs
@@ -0,0 +1,230 @@
+/*
+  Copyright (C) 2009 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+#if MONO
+using System;
+using System.Collections.Generic;
+using Mono.CompilerServices.SymbolWriter;
+using IKVM.Reflection.Emit;
+
+namespace IKVM.Reflection.Impl
+{
+	sealed class Method : IMethodDef
+	{
+		internal int token;
+		internal string name;
+		internal SymbolDocumentWriter document;
+		internal int[] offsets;
+		internal int[] lines;
+		internal int[] columns;
+		internal List<string> variables = new List<string>();
+
+		public string Name
+		{
+			get { return name; }
+		}
+
+		public int Token
+		{
+			get { return token; }
+		}
+	}
+
+	sealed class SymbolDocumentWriter : System.Diagnostics.SymbolStore.ISymbolDocumentWriter
+	{
+		internal readonly string url;
+		internal SourceFileEntry source;
+
+		internal SymbolDocumentWriter(string url)
+		{
+			this.url = url;
+		}
+
+		public void SetCheckSum(Guid algorithmId, byte[] checkSum)
+		{
+		}
+
+		public void SetSource(byte[] source)
+		{
+		}
+	}
+
+	sealed class MdbWriter : ISymbolWriterImpl
+	{
+		private readonly ModuleBuilder moduleBuilder;
+		private readonly Dictionary<int, Method> methods = new Dictionary<int, Method>();
+		private readonly Dictionary<string, SymbolDocumentWriter> documents = new Dictionary<string, SymbolDocumentWriter>();
+		private Method currentMethod;
+
+		internal MdbWriter(ModuleBuilder moduleBuilder)
+		{
+			this.moduleBuilder = moduleBuilder;
+		}
+
+		public byte[] GetDebugInfo(ref IMAGE_DEBUG_DIRECTORY idd)
+		{
+			return Empty<byte>.Array;
+		}
+
+		public void RemapToken(int oldToken, int newToken)
+		{
+			if (methods.ContainsKey(oldToken))
+			{
+				methods[oldToken].token = newToken;
+			}
+		}
+
+		public void Close()
+		{
+			MonoSymbolWriter writer = new MonoSymbolWriter(moduleBuilder.FullyQualifiedName);
+
+			foreach (Method method in methods.Values)
+			{
+				if (method.document != null)
+				{
+					if (method.document.source == null)
+					{
+						method.document.source = new SourceFileEntry(writer.SymbolFile, method.document.url);
+					}
+					ICompileUnit file = new CompileUnitEntry(writer.SymbolFile, method.document.source);
+					SourceMethodBuilder smb = writer.OpenMethod(file, 0, method);
+					for (int i = 0; i < method.offsets.Length; i++)
+					{
+						smb.MarkSequencePoint(method.offsets[i], method.document.source, method.lines[i], method.columns[i], false);
+					}
+					for (int i = 0; i < method.variables.Count; i++)
+					{
+						writer.DefineLocalVariable(i, method.variables[i]);
+					}
+					writer.CloseMethod();
+				}
+			}
+
+			writer.WriteSymbolFile(moduleBuilder.ModuleVersionId);
+		}
+
+		public System.Diagnostics.SymbolStore.ISymbolDocumentWriter DefineDocument(string url, Guid language, Guid languageVendor, Guid documentType)
+		{
+			SymbolDocumentWriter writer;
+			if (!documents.TryGetValue(url, out writer))
+			{
+				writer = new SymbolDocumentWriter(url);
+				documents.Add(url, writer);
+			}
+			return writer;
+		}
+
+		public void OpenMethod(System.Diagnostics.SymbolStore.SymbolToken token)
+		{
+			Method method = new Method();
+			method.token = token.GetToken();
+			// name doesn't appear to be used. We can look it up, but ModuleBuilder.ResolveMethod() is inefficient,
+			// so if it isn't used, why bother?
+			method.name = null; // moduleBuilder.ResolveMethod(token.GetToken()).Name;
+			methods.Add(token.GetToken(), method);
+			currentMethod = method;
+		}
+
+		public void CloseMethod()
+		{
+			currentMethod = null;
+		}
+
+		public void DefineLocalVariable(string name, System.Reflection.FieldAttributes attributes, byte[] signature, System.Diagnostics.SymbolStore.SymAddressKind addrKind, int addr1, int addr2, int addr3, int startOffset, int endOffset)
+		{
+		}
+
+		public void DefineLocalVariable2(string name, FieldAttributes attributes, int signature, System.Diagnostics.SymbolStore.SymAddressKind addrKind, int addr1, int addr2, int addr3, int startOffset, int endOffset)
+		{
+			currentMethod.variables.Add(name);
+		}
+
+		public void DefineSequencePoints(System.Diagnostics.SymbolStore.ISymbolDocumentWriter document, int[] offsets, int[] lines, int[] columns, int[] endLines, int[] endColumns)
+		{
+			currentMethod.document = (SymbolDocumentWriter)document;
+			currentMethod.offsets = offsets;
+			currentMethod.lines = lines;
+			currentMethod.columns = columns;
+		}
+
+		public void DefineParameter(string name, System.Reflection.ParameterAttributes attributes, int sequence, System.Diagnostics.SymbolStore.SymAddressKind addrKind, int addr1, int addr2, int addr3)
+		{
+		}
+
+		public void DefineField(System.Diagnostics.SymbolStore.SymbolToken parent, string name, System.Reflection.FieldAttributes attributes, byte[] signature, System.Diagnostics.SymbolStore.SymAddressKind addrKind, int addr1, int addr2, int addr3)
+		{
+		}
+
+		public void DefineGlobalVariable(string name, System.Reflection.FieldAttributes attributes, byte[] signature, System.Diagnostics.SymbolStore.SymAddressKind addrKind, int addr1, int addr2, int addr3)
+		{
+		}
+
+		public void OpenNamespace(string name)
+		{
+		}
+
+		public void CloseNamespace()
+		{
+		}
+
+		public void UsingNamespace(string fullName)
+		{
+		}
+
+		public int OpenScope(int startOffset)
+		{
+			return 0;
+		}
+
+		public void CloseScope(int endOffset)
+		{
+		}
+
+		public void SetMethodSourceRange(System.Diagnostics.SymbolStore.ISymbolDocumentWriter startDoc, int startLine, int startColumn, System.Diagnostics.SymbolStore.ISymbolDocumentWriter endDoc, int endLine, int endColumn)
+		{
+		}
+
+		public void SetScopeRange(int scopeID, int startOffset, int endOffset)
+		{
+		}
+
+		public void SetSymAttribute(System.Diagnostics.SymbolStore.SymbolToken parent, string name, byte[] data)
+		{
+		}
+
+		public void SetUserEntryPoint(System.Diagnostics.SymbolStore.SymbolToken entryMethod)
+		{
+		}
+
+		public void SetUnderlyingWriter(IntPtr underlyingWriter)
+		{
+			throw new InvalidOperationException();
+		}
+
+		public void Initialize(IntPtr emitter, string filename, bool fFullBuild)
+		{
+			throw new InvalidOperationException();
+		}
+	}
+}
+#endif // MONO
diff --git a/mcs/class/IKVM.Reflection/Impl/PdbWriter.cs b/mcs/class/IKVM.Reflection/Impl/PdbWriter.cs
new file mode 100644
index 0000000..aacc6c9
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Impl/PdbWriter.cs
@@ -0,0 +1,1180 @@
+/*
+  Copyright (C) 2008-2010 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Collections.Generic;
+using System.Runtime.InteropServices;
+using System.Diagnostics.SymbolStore;
+using IKVM.Reflection.Emit;
+
+namespace IKVM.Reflection.Impl
+{
+	[Guid("7dac8207-d3ae-4c75-9b67-92801a497d44")]
+	[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
+	[ComImport]
+	interface IMetaDataImport
+	{
+		void PlaceHolder_CloseEnum();
+		void PlaceHolder_CountEnum();
+		void PlaceHolder_ResetEnum();
+		void PlaceHolder_EnumTypeDefs();
+		void PlaceHolder_EnumInterfaceImpls();
+		void PlaceHolder_EnumTypeRefs();
+		void PlaceHolder_FindTypeDefByName();
+		void PlaceHolder_GetScopeProps();
+		void PlaceHolder_GetModuleFromScope();
+
+		void GetTypeDefProps(
+			int			td,                     // [IN] TypeDef token for inquiry.
+	        IntPtr		szTypeDef,              // [OUT] Put name here.
+		    int			cchTypeDef,             // [IN] size of name buffer in wide chars.
+			IntPtr		pchTypeDef,				// [OUT] put size of name (wide chars) here.
+			IntPtr		pdwTypeDefFlags,		// [OUT] Put flags here.
+			IntPtr		ptkExtends);			// [OUT] Put base class TypeDef/TypeRef here.
+
+		void PlaceHolder_GetInterfaceImplProps();
+		void PlaceHolder_GetTypeRefProps();
+		void PlaceHolder_ResolveTypeRef();
+		void PlaceHolder_EnumMembers();
+		void PlaceHolder_EnumMembersWithName();
+		void PlaceHolder_EnumMethods();
+		void PlaceHolder_EnumMethodsWithName();
+		void PlaceHolder_EnumFields();
+		void PlaceHolder_EnumFieldsWithName();
+		void PlaceHolder_EnumParams();
+		void PlaceHolder_EnumMemberRefs();
+		void PlaceHolder_EnumMethodImpls();
+		void PlaceHolder_EnumPermissionSets();
+		void PlaceHolder_FindMember();
+		void PlaceHolder_FindMethod();
+		void PlaceHolder_FindField();
+		void PlaceHolder_FindMemberRef();
+
+		void GetMethodProps(
+			int			mb,                     // The method for which to get props.   
+			IntPtr		pClass,					// Put method's class here. 
+			IntPtr      szMethod,               // Put method's name here.  
+			int			cchMethod,              // Size of szMethod buffer in wide chars.   
+			IntPtr      pchMethod,				// Put actual size here 
+			IntPtr		pdwAttr,				// Put flags here.  
+			IntPtr		ppvSigBlob,				// [OUT] point to the blob value of meta data   
+			IntPtr		pcbSigBlob,				// [OUT] actual size of signature blob  
+			IntPtr		pulCodeRVA,				// [OUT] codeRVA    
+			IntPtr		pdwImplFlags);		    // [OUT] Impl. Flags    
+
+		void PlaceHolder_GetMemberRefProps();
+		void PlaceHolder_EnumProperties();
+		void PlaceHolder_EnumEvents();
+		void PlaceHolder_GetEventProps();
+		void PlaceHolder_EnumMethodSemantics();
+		void PlaceHolder_GetMethodSemantics();
+		void PlaceHolder_GetClassLayout();
+		void PlaceHolder_GetFieldMarshal();
+		void PlaceHolder_GetRVA();
+		void PlaceHolder_GetPermissionSetProps();
+		void PlaceHolder_GetSigFromToken();
+		void PlaceHolder_GetModuleRefProps();
+		void PlaceHolder_EnumModuleRefs();
+		void PlaceHolder_GetTypeSpecFromToken();
+		void PlaceHolder_GetNameFromToken();
+		void PlaceHolder_EnumUnresolvedMethods();
+		void PlaceHolder_GetUserString();
+		void PlaceHolder_GetPinvokeMap();
+		void PlaceHolder_EnumSignatures();
+		void PlaceHolder_EnumTypeSpecs();
+		void PlaceHolder_EnumUserStrings();
+		void PlaceHolder_GetParamForMethodIndex();
+		void PlaceHolder_EnumCustomAttributes();
+		void PlaceHolder_GetCustomAttributeProps();
+		void PlaceHolder_FindTypeRef();
+		void PlaceHolder_GetMemberProps();
+		void PlaceHolder_GetFieldProps();
+		void PlaceHolder_GetPropertyProps();
+		void PlaceHolder_GetParamProps();
+		void PlaceHolder_GetCustomAttributeByName();
+		void PlaceHolder_IsValidToken();
+
+		void GetNestedClassProps(
+			int		tdNestedClass,			// [IN] NestedClass token.
+			IntPtr	ptdEnclosingClass);		// [OUT] EnclosingClass token.
+
+		void PlaceHolder_GetNativeCallConvFromSig();
+		void PlaceHolder_IsGlobal();
+	}
+
+	[Guid("ba3fee4c-ecb9-4e41-83b7-183fa41cd859")]
+	[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
+	[ComImport]
+	interface IMetaDataEmit
+	{
+		void PlaceHolder_SetModuleProps();
+		void PlaceHolder_Save();
+		void PlaceHolder_SaveToStream();
+		void PlaceHolder_GetSaveSize();
+		void PlaceHolder_DefineTypeDef();
+		void PlaceHolder_DefineNestedType();
+		void PlaceHolder_SetHandler();
+		void PlaceHolder_DefineMethod();
+		void PlaceHolder_DefineMethodImpl();
+		void PlaceHolder_DefineTypeRefByName();
+		void PlaceHolder_DefineImportType();
+		void PlaceHolder_DefineMemberRef();
+		void PlaceHolder_DefineImportMember();
+		void PlaceHolder_DefineEvent();
+		void PlaceHolder_SetClassLayout();
+		void PlaceHolder_DeleteClassLayout();
+		void PlaceHolder_SetFieldMarshal();
+		void PlaceHolder_DeleteFieldMarshal();
+		void PlaceHolder_DefinePermissionSet();
+		void PlaceHolder_SetRVA();
+		void PlaceHolder_GetTokenFromSig();
+		void PlaceHolder_DefineModuleRef();
+		void PlaceHolder_SetParent();
+		void PlaceHolder_GetTokenFromTypeSpec();
+		void PlaceHolder_SaveToMemory();
+		void PlaceHolder_DefineUserString();
+		void PlaceHolder_DeleteToken();
+		void PlaceHolder_SetMethodProps();
+		void PlaceHolder_SetTypeDefProps();
+		void PlaceHolder_SetEventProps();
+		void PlaceHolder_SetPermissionSetProps();
+		void PlaceHolder_DefinePinvokeMap();
+		void PlaceHolder_SetPinvokeMap();
+		void PlaceHolder_DeletePinvokeMap();
+		void PlaceHolder_DefineCustomAttribute();
+		void PlaceHolder_SetCustomAttributeValue();
+		void PlaceHolder_DefineField();
+		void PlaceHolder_DefineProperty();
+		void PlaceHolder_DefineParam();
+		void PlaceHolder_SetFieldProps();
+		void PlaceHolder_SetPropertyProps();
+		void PlaceHolder_SetParamProps();
+		void PlaceHolder_DefineSecurityAttributeSet();
+		void PlaceHolder_ApplyEditAndContinue();
+		void PlaceHolder_TranslateSigWithScope();
+		void PlaceHolder_SetMethodImplFlags();
+		void PlaceHolder_SetFieldRVA();
+		void PlaceHolder_Merge();
+		void PlaceHolder_MergeEnd();
+	}
+
+	[Guid("B01FAFEB-C450-3A4D-BEEC-B4CEEC01E006")]
+	[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
+	[ComImport]
+	internal interface ISymUnmanagedDocumentWriter { }
+
+	[Guid("0b97726e-9e6d-4f05-9a26-424022093caa")]
+	[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
+	[ComImport]
+	[CoClass(typeof(CorSymWriterClass))]
+	interface ISymUnmanagedWriter2
+	{
+		ISymUnmanagedDocumentWriter DefineDocument(string url, ref Guid language, ref Guid languageVendor, ref Guid documentType);
+		void PlaceHolder_SetUserEntryPoint();
+		void OpenMethod(int method);
+		void CloseMethod();
+		int OpenScope(int startOffset);
+		void CloseScope(int endOffset);
+		void PlaceHolder_SetScopeRange();
+		void DefineLocalVariable(string name, int attributes, int cSig, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 2)] byte[] signature, int addrKind, int addr1, int addr2, int startOffset, int endOffset);
+		void PlaceHolder_DefineParameter();
+		void PlaceHolder_DefineField();
+		void PlaceHolder_DefineGlobalVariable();
+		void Close();
+		void PlaceHolder_SetSymAttribute();
+		void PlaceHolder_OpenNamespace();
+		void PlaceHolder_CloseNamespace();
+		void PlaceHolder_UsingNamespace();
+		void PlaceHolder_SetMethodSourceRange();
+		void Initialize([MarshalAs(UnmanagedType.IUnknown)] object emitter, string filename, [MarshalAs(UnmanagedType.IUnknown)] object pIStream, bool fFullBuild);
+
+		void GetDebugInfo(
+			[In, Out] ref IMAGE_DEBUG_DIRECTORY pIDD,
+			[In]  uint cData,
+			[Out] out uint pcData,
+			[Out, MarshalAs(UnmanagedType.LPArray)] byte[] data);
+
+		void DefineSequencePoints(ISymUnmanagedDocumentWriter document, int spCount,
+		  [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1)] int[] offsets,
+		  [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1)] int[] lines,
+		  [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1)] int[] columns,
+		  [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1)] int[] endLines,
+		  [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1)] int[] endColumns);
+
+		void RemapToken(
+			[In] int oldToken,
+			[In] int newToken);
+
+		void PlaceHolder_Initialize2();
+		void PlaceHolder_DefineConstant();
+		void PlaceHolder_Abort();
+
+		void DefineLocalVariable2(string name, int attributes, int token, int addrKind, int addr1, int addr2, int addr3, int startOffset, int endOffset);
+
+		void PlaceHolder_DefineGlobalVariable2();
+		void PlaceHolder_DefineConstant2();
+	}
+
+	[Guid("108296c1-281e-11d3-bd22-0000f80849bd")]
+	[ComImport]
+	class CorSymWriterClass { }
+
+	sealed class PdbWriter : ISymbolWriterImpl, IMetaDataEmit, IMetaDataImport
+	{
+		private readonly ModuleBuilder moduleBuilder;
+		private ISymUnmanagedWriter2 symUnmanagedWriter;
+		private readonly Dictionary<string, Document> documents = new Dictionary<string, Document>();
+		private readonly List<Method> methods = new List<Method>();
+		private readonly Dictionary<int, int> remap = new Dictionary<int, int>();
+		private readonly Dictionary<int, int> reversemap = new Dictionary<int, int>();
+		private Method currentMethod;
+
+		internal PdbWriter(ModuleBuilder moduleBuilder)
+		{
+			this.moduleBuilder = moduleBuilder;
+		}
+
+		private sealed class Document : ISymbolDocumentWriter
+		{
+			internal readonly string url;
+			private Guid language;
+			private Guid languageVendor;
+			private Guid documentType;
+			private ISymUnmanagedDocumentWriter unmanagedDocument;
+
+			internal Document(string url, Guid language, Guid languageVendor, Guid documentType)
+			{
+				this.url = url;
+				this.language = language;
+				this.languageVendor = languageVendor;
+				this.documentType = documentType;
+			}
+
+			public void SetCheckSum(Guid algorithmId, byte[] checkSum)
+			{
+				throw new NotImplementedException();
+			}
+
+			public void SetSource(byte[] source)
+			{
+				throw new NotImplementedException();
+			}
+
+			internal ISymUnmanagedDocumentWriter GetUnmanagedDocument(ISymUnmanagedWriter2 symUnmanagedWriter)
+			{
+				if (unmanagedDocument == null)
+				{
+					unmanagedDocument = symUnmanagedWriter.DefineDocument(url, ref language, ref languageVendor, ref documentType);
+				}
+				return unmanagedDocument;
+			}
+
+			internal void Release()
+			{
+				if (unmanagedDocument != null)
+				{
+					Marshal.ReleaseComObject(unmanagedDocument);
+					unmanagedDocument = null;
+				}
+			}
+		}
+
+		private sealed class LocalVar
+		{
+			internal readonly FieldAttributes attributes;
+			internal readonly int signature;
+			internal readonly SymAddressKind addrKind;
+			internal readonly int addr1;
+			internal readonly int addr2;
+			internal readonly int addr3;
+			internal readonly int startOffset;
+			internal readonly int endOffset;
+
+			internal LocalVar(FieldAttributes attributes, int signature, SymAddressKind addrKind, int addr1, int addr2, int addr3, int startOffset, int endOffset)
+			{
+				this.attributes = attributes;
+				this.signature = signature;
+				this.addrKind = addrKind;
+				this.addr1 = addr1;
+				this.addr2 = addr2;
+				this.addr3 = addr3;
+				this.startOffset = startOffset;
+				this.endOffset = endOffset;
+			}
+		}
+
+		private sealed class Scope
+		{
+			internal readonly int startOffset;
+			internal int endOffset;
+			internal readonly List<Scope> scopes = new List<Scope>();
+			internal readonly Dictionary<string, LocalVar> locals = new Dictionary<string, LocalVar>();
+
+			internal Scope(int startOffset)
+			{
+				this.startOffset = startOffset;
+			}
+
+			internal void Do(ISymUnmanagedWriter2 symUnmanagedWriter)
+			{
+				symUnmanagedWriter.OpenScope(startOffset);
+				foreach (KeyValuePair<string, LocalVar> kv in locals)
+				{
+					symUnmanagedWriter.DefineLocalVariable2(kv.Key, (int)kv.Value.attributes, kv.Value.signature, (int)kv.Value.addrKind, kv.Value.addr1, kv.Value.addr2, kv.Value.addr3, kv.Value.startOffset, kv.Value.endOffset);
+				}
+				foreach (Scope scope in scopes)
+				{
+					scope.Do(symUnmanagedWriter);
+				}
+				symUnmanagedWriter.CloseScope(endOffset);
+			}
+		}
+
+		private sealed class Method
+		{
+			internal readonly int token;
+			internal Document document;
+			internal int[] offsets;
+			internal int[] lines;
+			internal int[] columns;
+			internal int[] endLines;
+			internal int[] endColumns;
+			internal readonly List<Scope> scopes = new List<Scope>();
+			internal readonly Stack<Scope> scopeStack = new Stack<Scope>();
+
+			internal Method(int token)
+			{
+				this.token = token;
+			}
+		}
+
+		public ISymbolDocumentWriter DefineDocument(string url, Guid language, Guid languageVendor, Guid documentType)
+		{
+			Document doc;
+			if (!documents.TryGetValue(url, out doc))
+			{
+				doc = new Document(url, language, languageVendor, documentType);
+				documents.Add(url, doc);
+			}
+			return doc;
+		}
+
+		public void OpenMethod(SymbolToken method)
+		{
+			currentMethod = new Method(method.GetToken());
+		}
+
+		public void CloseMethod()
+		{
+			methods.Add(currentMethod);
+			currentMethod = null;
+		}
+
+		public void DefineSequencePoints(ISymbolDocumentWriter document, int[] offsets, int[] lines, int[] columns, int[] endLines, int[] endColumns)
+		{
+			currentMethod.document = (Document)document;
+			currentMethod.offsets = offsets;
+			currentMethod.lines = lines;
+			currentMethod.columns = columns;
+			currentMethod.endLines = endLines;
+			currentMethod.endColumns = endColumns;
+		}
+
+		public int OpenScope(int startOffset)
+		{
+			Scope scope = new Scope(startOffset);
+			if (currentMethod.scopeStack.Count == 0)
+			{
+				currentMethod.scopes.Add(scope);
+			}
+			else
+			{
+				currentMethod.scopeStack.Peek().scopes.Add(scope);
+			}
+			currentMethod.scopeStack.Push(scope);
+			return 0;
+		}
+
+		public void CloseScope(int endOffset)
+		{
+			currentMethod.scopeStack.Pop().endOffset = endOffset;
+		}
+
+		public void DefineLocalVariable2(string name, FieldAttributes attributes, int signature, SymAddressKind addrKind, int addr1, int addr2, int addr3, int startOffset, int endOffset)
+		{
+			currentMethod.scopeStack.Peek().locals[name] = new LocalVar(attributes, signature, addrKind, addr1, addr2, addr3, startOffset, endOffset);
+		}
+
+		private void InitWriter()
+		{
+			if (symUnmanagedWriter == null)
+			{
+				string fileName = System.IO.Path.ChangeExtension(moduleBuilder.FullyQualifiedName, ".pdb");
+				// pro-actively delete the .pdb to get a meaningful IOException, instead of COMInteropException if the file can't be overwritten (or is corrupt, or who knows what)
+				System.IO.File.Delete(fileName);
+				symUnmanagedWriter = new ISymUnmanagedWriter2();
+				symUnmanagedWriter.Initialize(this, fileName, null, true);
+			}
+		}
+
+		public byte[] GetDebugInfo(ref IMAGE_DEBUG_DIRECTORY idd)
+		{
+			InitWriter();
+			uint cData;
+			symUnmanagedWriter.GetDebugInfo(ref idd, 0, out cData, null);
+			byte[] buf = new byte[cData];
+			symUnmanagedWriter.GetDebugInfo(ref idd, (uint)buf.Length, out cData, buf);
+			return buf;
+		}
+
+		public void RemapToken(int oldToken, int newToken)
+		{
+			remap.Add(oldToken, newToken);
+			reversemap.Add(newToken, oldToken);
+		}
+
+		public void Close()
+		{
+			InitWriter();
+
+			foreach (Method method in methods)
+			{
+				int remappedToken = method.token;
+				remap.TryGetValue(remappedToken, out remappedToken);
+				symUnmanagedWriter.OpenMethod(remappedToken);
+				if (method.document != null)
+				{
+					ISymUnmanagedDocumentWriter doc = method.document.GetUnmanagedDocument(symUnmanagedWriter);
+					symUnmanagedWriter.DefineSequencePoints(doc, method.offsets.Length, method.offsets, method.lines, method.columns, method.endLines, method.endColumns);
+				}
+				foreach (Scope scope in method.scopes)
+				{
+					scope.Do(symUnmanagedWriter);
+				}
+				symUnmanagedWriter.CloseMethod(); 
+			}
+
+			foreach (Document doc in documents.Values)
+			{
+				doc.Release();
+			}
+
+			symUnmanagedWriter.Close();
+			Marshal.ReleaseComObject(symUnmanagedWriter);
+			symUnmanagedWriter = null;
+			documents.Clear();
+			methods.Clear();
+			remap.Clear();
+			reversemap.Clear();
+		}
+
+		public void DefineLocalVariable(string name, System.Reflection.FieldAttributes attributes, byte[] signature, SymAddressKind addrKind, int addr1, int addr2, int addr3, int startOffset, int endOffset)
+		{
+			throw new NotImplementedException();
+		}
+
+		public void CloseNamespace()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void DefineField(SymbolToken parent, string name, System.Reflection.FieldAttributes attributes, byte[] signature, SymAddressKind addrKind, int addr1, int addr2, int addr3)
+		{
+			throw new NotImplementedException();
+		}
+
+		public void DefineGlobalVariable(string name, System.Reflection.FieldAttributes attributes, byte[] signature, SymAddressKind addrKind, int addr1, int addr2, int addr3)
+		{
+			throw new NotImplementedException();
+		}
+
+		public void DefineParameter(string name, System.Reflection.ParameterAttributes attributes, int sequence, SymAddressKind addrKind, int addr1, int addr2, int addr3)
+		{
+			throw new NotImplementedException();
+		}
+
+		public void Initialize(IntPtr emitter, string filename, bool fFullBuild)
+		{
+			throw new NotImplementedException();
+		}
+
+		public void OpenNamespace(string name)
+		{
+			throw new NotImplementedException();
+		}
+
+		public void SetMethodSourceRange(ISymbolDocumentWriter startDoc, int startLine, int startColumn, ISymbolDocumentWriter endDoc, int endLine, int endColumn)
+		{
+			throw new NotImplementedException();
+		}
+
+		public void SetScopeRange(int scopeID, int startOffset, int endOffset)
+		{
+			throw new NotImplementedException();
+		}
+
+		public void SetSymAttribute(SymbolToken parent, string name, byte[] data)
+		{
+			throw new NotImplementedException();
+		}
+
+		public void SetUnderlyingWriter(IntPtr underlyingWriter)
+		{
+			throw new NotImplementedException();
+		}
+
+		public void SetUserEntryPoint(SymbolToken entryMethod)
+		{
+			throw new NotImplementedException();
+		}
+
+		public void UsingNamespace(string fullName)
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_CloseEnum()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_CountEnum()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_ResetEnum()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_EnumTypeDefs()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_EnumInterfaceImpls()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_EnumTypeRefs()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_FindTypeDefByName()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_GetScopeProps()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_GetModuleFromScope()
+		{
+			throw new NotImplementedException();
+		}
+
+		private static void WriteString(IntPtr ptrString, IntPtr ptrLength, string str, int length)
+		{
+			if (ptrString != IntPtr.Zero)
+			{
+				for (int i = 0; i < Math.Min(length, str.Length); i++)
+				{
+					Marshal.WriteInt16(ptrString, i, str[i]);
+				}
+			}
+			if (ptrLength != IntPtr.Zero)
+			{
+				Marshal.WriteInt32(ptrLength, str.Length);
+			}
+		}
+
+		private static void WriteToken(IntPtr ptr, MemberInfo member)
+		{
+			if (ptr != IntPtr.Zero)
+			{
+				Marshal.WriteInt32(ptr, member == null ? 0 : member.MetadataToken);
+			}
+		}
+
+		private static void WriteInt32(IntPtr ptr, int value)
+		{
+			if (ptr != IntPtr.Zero)
+			{
+				Marshal.WriteInt32(ptr, value);
+			}
+		}
+
+		public void GetTypeDefProps(
+			int td,                     // [IN] TypeDef token for inquiry.
+			IntPtr szTypeDef,			// [OUT] Put name here.
+			int cchTypeDef,             // [IN] size of name buffer in wide chars.
+			IntPtr pchTypeDef,			// [OUT] put size of name (wide chars) here.
+			IntPtr pdwTypeDefFlags,		// [OUT] Put flags here.
+			IntPtr ptkExtends)			// [OUT] Put base class TypeDef/TypeRef here.
+		{
+			if (td == 0)
+			{
+				// why are we being called with an invalid token?
+				WriteString(szTypeDef, pchTypeDef, "", cchTypeDef);
+				WriteInt32(pdwTypeDefFlags, 0);
+				WriteToken(ptkExtends, null);
+			}
+			else
+			{
+				Type type = moduleBuilder.ResolveType(td);
+				WriteString(szTypeDef, pchTypeDef, type.FullName, cchTypeDef);
+				WriteInt32(pdwTypeDefFlags, (int)type.Attributes);
+				WriteToken(ptkExtends, type.BaseType);
+			}
+		}
+
+		public void PlaceHolder_GetInterfaceImplProps()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_GetTypeRefProps()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_ResolveTypeRef()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_EnumMembers()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_EnumMembersWithName()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_EnumMethods()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_EnumMethodsWithName()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_EnumFields()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_EnumFieldsWithName()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_EnumParams()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_EnumMemberRefs()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_EnumMethodImpls()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_EnumPermissionSets()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_FindMember()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_FindMethod()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_FindField()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_FindMemberRef()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void GetMethodProps(
+			int mb,						// The method for which to get props.   
+			IntPtr pClass,				// [OUT] Put method's class here. 
+			IntPtr szMethod,            // [OUT] Put method's name here.  
+			int cchMethod,              // Size of szMethod buffer in wide chars.   
+			IntPtr pchMethod,			// [OUT] Put actual size here 
+			IntPtr pdwAttr,				// [OUT] Put flags here.  
+			IntPtr ppvSigBlob,			// [OUT] point to the blob value of meta data   
+			IntPtr pcbSigBlob,			// [OUT] actual size of signature blob  
+			IntPtr pulCodeRVA,			// [OUT] codeRVA    
+			IntPtr pdwImplFlags)		// [OUT] Impl. Flags    
+		{
+			if (pdwAttr != IntPtr.Zero || ppvSigBlob != IntPtr.Zero || pcbSigBlob != IntPtr.Zero || pulCodeRVA != IntPtr.Zero || pdwImplFlags != IntPtr.Zero)
+			{
+				throw new NotImplementedException();
+			}
+			MethodBase method = moduleBuilder.ResolveMethod(reversemap[mb]);
+			WriteToken(pClass, method.DeclaringType);
+			WriteString(szMethod, pchMethod, method.Name, cchMethod);
+		}
+
+		public void PlaceHolder_GetMemberRefProps()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_EnumProperties()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_EnumEvents()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_GetEventProps()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_EnumMethodSemantics()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_GetMethodSemantics()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_GetClassLayout()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_GetFieldMarshal()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_GetRVA()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_GetPermissionSetProps()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_GetSigFromToken()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_GetModuleRefProps()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_EnumModuleRefs()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_GetTypeSpecFromToken()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_GetNameFromToken()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_EnumUnresolvedMethods()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_GetUserString()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_GetPinvokeMap()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_EnumSignatures()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_EnumTypeSpecs()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_EnumUserStrings()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_GetParamForMethodIndex()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_EnumCustomAttributes()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_GetCustomAttributeProps()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_FindTypeRef()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_GetMemberProps()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_GetFieldProps()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_GetPropertyProps()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_GetParamProps()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_GetCustomAttributeByName()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_IsValidToken()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void GetNestedClassProps(
+			int tdNestedClass,				// [IN] NestedClass token.
+			IntPtr ptdEnclosingClass)		// [OUT] EnclosingClass token.
+		{
+			Type type = moduleBuilder.ResolveType(tdNestedClass);
+			WriteToken(ptdEnclosingClass, type.DeclaringType);
+		}
+
+		public void PlaceHolder_GetNativeCallConvFromSig()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_IsGlobal()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_SetModuleProps()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_Save()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_SaveToStream()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_GetSaveSize()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_DefineTypeDef()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_DefineNestedType()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_SetHandler()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_DefineMethod()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_DefineMethodImpl()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_DefineTypeRefByName()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_DefineImportType()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_DefineMemberRef()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_DefineImportMember()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_DefineEvent()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_SetClassLayout()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_DeleteClassLayout()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_SetFieldMarshal()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_DeleteFieldMarshal()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_DefinePermissionSet()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_SetRVA()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_GetTokenFromSig()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_DefineModuleRef()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_SetParent()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_GetTokenFromTypeSpec()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_SaveToMemory()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_DefineUserString()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_DeleteToken()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_SetMethodProps()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_SetTypeDefProps()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_SetEventProps()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_SetPermissionSetProps()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_DefinePinvokeMap()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_SetPinvokeMap()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_DeletePinvokeMap()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_DefineCustomAttribute()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_SetCustomAttributeValue()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_DefineField()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_DefineProperty()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_DefineParam()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_SetFieldProps()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_SetPropertyProps()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_SetParamProps()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_DefineSecurityAttributeSet()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_ApplyEditAndContinue()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_TranslateSigWithScope()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_SetMethodImplFlags()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_SetFieldRVA()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_Merge()
+		{
+			throw new NotImplementedException();
+		}
+
+		public void PlaceHolder_MergeEnd()
+		{
+			throw new NotImplementedException();
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Impl/SymbolSupport.cs b/mcs/class/IKVM.Reflection/Impl/SymbolSupport.cs
new file mode 100644
index 0000000..945187e
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Impl/SymbolSupport.cs
@@ -0,0 +1,85 @@
+/*
+  Copyright (C) 2008, 2009 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Runtime.InteropServices;
+using System.Diagnostics.SymbolStore;
+using IKVM.Reflection.Emit;
+
+namespace IKVM.Reflection.Impl
+{
+	[StructLayout(LayoutKind.Sequential)]
+	struct IMAGE_DEBUG_DIRECTORY
+	{
+		public uint Characteristics;
+		public uint TimeDateStamp;
+		public ushort MajorVersion;
+		public ushort MinorVersion;
+		public uint Type;
+		public uint SizeOfData;
+		public uint AddressOfRawData;
+		public uint PointerToRawData;
+	}
+
+	interface ISymbolWriterImpl : ISymbolWriter
+	{
+		byte[] GetDebugInfo(ref IMAGE_DEBUG_DIRECTORY idd);
+		void RemapToken(int oldToken, int newToken);
+		void DefineLocalVariable2(string name, FieldAttributes attributes, int signature, SymAddressKind addrKind, int addr1, int addr2, int addr3, int startOffset, int endOffset);
+	}
+
+	static class SymbolSupport
+	{
+		private static readonly bool runningOnMono = System.Type.GetType("Mono.Runtime") != null;
+
+		internal static ISymbolWriterImpl CreateSymbolWriterFor(ModuleBuilder moduleBuilder)
+		{
+#if !NO_SYMBOL_WRITER
+			throw new NotSupportedException ("IKVM.Reflection with no symbol writer support");
+#else
+			if (runningOnMono)
+			{
+#if MONO
+				return new MdbWriter(moduleBuilder);
+#else
+				throw new NotSupportedException("IKVM.Reflection must be compiled with MONO defined to support writing Mono debugging symbols.");
+#endif
+			}
+			else
+			{
+				return new PdbWriter(moduleBuilder);
+			}
+#endif
+		}
+
+		internal static byte[] GetDebugInfo(ISymbolWriterImpl writer, ref IMAGE_DEBUG_DIRECTORY idd)
+		{
+			return writer.GetDebugInfo(ref idd);
+		}
+
+		internal static void RemapToken(ISymbolWriterImpl writer, int oldToken, int newToken)
+		{
+			writer.RemapToken(oldToken, newToken);
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/InterfaceMapping.cs b/mcs/class/IKVM.Reflection/InterfaceMapping.cs
new file mode 100644
index 0000000..f589cfe
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/InterfaceMapping.cs
@@ -0,0 +1,35 @@
+/*
+  Copyright (C) 2009 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+
+namespace IKVM.Reflection
+{
+	public struct InterfaceMapping
+	{
+		public MethodInfo[] InterfaceMethods;
+		public Type InterfaceType;
+		public MethodInfo[] TargetMethods;
+		public Type TargetType;
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/LocalVariableInfo.cs b/mcs/class/IKVM.Reflection/LocalVariableInfo.cs
new file mode 100644
index 0000000..a6875d9
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/LocalVariableInfo.cs
@@ -0,0 +1,56 @@
+/*
+  Copyright (C) 2009 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+
+namespace IKVM.Reflection
+{
+	public class LocalVariableInfo
+	{
+		private readonly int index;
+		private readonly Type type;
+		private readonly bool pinned;
+
+		internal LocalVariableInfo(int index, Type type, bool pinned)
+		{
+			this.index = index;
+			this.type = type;
+			this.pinned = pinned;
+		}
+
+		public virtual bool IsPinned
+		{
+			get { return pinned; }
+		}
+
+		public virtual int LocalIndex
+		{
+			get { return index; }
+		}
+
+		public virtual Type LocalType
+		{
+			get { return type; }
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Makefile b/mcs/class/IKVM.Reflection/Makefile
new file mode 100644
index 0000000..069df18
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Makefile
@@ -0,0 +1,18 @@
+thisdir = class/IKVM.Reflection
+SUBDIRS = 
+
+include ../../build/rules.make
+
+DISTFILES = \
+	Emit/*.cs \
+	Impl/*.cs \
+	Metadata/*.cs \
+	Properties/*.cs \
+	Reader/*.cs \
+	Writer/*.cs \
+	*.cs  *.csproj \
+	Makefile
+
+all-local install-local clean-local test-local run-test-local run-test-ondotnet-local uninstall-local doc-update-local csproj-local:
+
+dist-local: dist-default
diff --git a/mcs/class/IKVM.Reflection/ManifestResourceInfo.cs b/mcs/class/IKVM.Reflection/ManifestResourceInfo.cs
new file mode 100644
index 0000000..a17b0d1
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/ManifestResourceInfo.cs
@@ -0,0 +1,91 @@
+/*
+  Copyright (C) 2009 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using IKVM.Reflection.Reader;
+using IKVM.Reflection.Metadata;
+
+namespace IKVM.Reflection
+{
+	public class ManifestResourceInfo
+	{
+		private readonly ModuleReader module;
+		private readonly int index;
+
+		internal ManifestResourceInfo(ModuleReader module, int index)
+		{
+			this.module = module;
+			this.index = index;
+		}
+
+		public ResourceLocation ResourceLocation
+		{
+			get
+			{
+				int implementation = module.ManifestResource.records[index].Implementation;
+				if ((implementation >> 24) == AssemblyRefTable.Index)
+				{
+					//return ResourceLocation.ContainedInAnotherAssembly;
+					throw new NotImplementedException();
+				}
+				else if ((implementation >> 24) == FileTable.Index)
+				{
+					if ((implementation & 0xFFFFFF) == 0)
+					{
+						return ResourceLocation.ContainedInManifestFile | ResourceLocation.Embedded;
+					}
+					return 0;
+				}
+				else
+				{
+					throw new BadImageFormatException();
+				}
+			}
+		}
+
+		public Assembly ReferencedAssembly
+		{
+			get { throw new NotImplementedException(); }
+		}
+
+		public string FileName
+		{
+			get
+			{
+				int implementation = module.ManifestResource.records[index].Implementation;
+				if ((implementation >> 24) == FileTable.Index)
+				{
+					if ((implementation & 0xFFFFFF) == 0)
+					{
+						return null;
+					}
+					else
+					{
+						return module.GetString(module.File.records[(implementation & 0xFFFFFF) - 1].Name);
+					}
+				}
+				throw new NotImplementedException();
+			}
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/MarshalSpec.cs b/mcs/class/IKVM.Reflection/MarshalSpec.cs
new file mode 100644
index 0000000..7078196
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/MarshalSpec.cs
@@ -0,0 +1,299 @@
+/*
+  Copyright (C) 2008, 2010 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Collections.Generic;
+using System.Runtime.InteropServices;
+using System.Text;
+using IKVM.Reflection.Emit;
+using IKVM.Reflection.Reader;
+using IKVM.Reflection.Writer;
+using IKVM.Reflection.Metadata;
+
+namespace IKVM.Reflection
+{
+	static class MarshalSpec
+	{
+		private const UnmanagedType NATIVE_TYPE_MAX = (UnmanagedType)0x50;
+
+		internal static CustomAttributeData GetMarshalAsAttribute(Module module, int token)
+		{
+			// TODO use binary search?
+			for (int i = 0; i < module.FieldMarshal.records.Length; i++)
+			{
+				if (module.FieldMarshal.records[i].Parent == token)
+				{
+					ByteReader blob = module.GetBlob(module.FieldMarshal.records[i].NativeType);
+					UnmanagedType unmanagedType = (UnmanagedType)blob.ReadCompressedInt();
+					UnmanagedType? arraySubType = null;
+					short? sizeParamIndex = null;
+					int? sizeConst = null;
+					VarEnum? safeArraySubType = null;
+					Type safeArrayUserDefinedSubType = null;
+					int? iidParameterIndex = null;
+					string marshalType = null;
+					string marshalCookie = null;
+					Type marshalTypeRef = null;
+					if (unmanagedType == UnmanagedType.LPArray)
+					{
+						arraySubType = (UnmanagedType)blob.ReadCompressedInt();
+						if (arraySubType == NATIVE_TYPE_MAX)
+						{
+							arraySubType = null;
+						}
+						if (blob.Length != 0)
+						{
+							sizeParamIndex = (short)blob.ReadCompressedInt();
+							if (blob.Length != 0)
+							{
+								sizeConst = blob.ReadCompressedInt();
+								if (blob.Length != 0 && blob.ReadCompressedInt() == 0)
+								{
+									sizeParamIndex = null;
+								}
+							}
+						}
+					}
+					else if (unmanagedType == UnmanagedType.SafeArray)
+					{
+						if (blob.Length != 0)
+						{
+							safeArraySubType = (VarEnum)blob.ReadCompressedInt();
+							if (blob.Length != 0)
+							{
+								safeArrayUserDefinedSubType = ReadType(module, blob);
+							}
+						}
+					}
+					else if (unmanagedType == UnmanagedType.ByValArray)
+					{
+						sizeConst = blob.ReadCompressedInt();
+						if (blob.Length != 0)
+						{
+							arraySubType = (UnmanagedType)blob.ReadCompressedInt();
+						}
+					}
+					else if (unmanagedType == UnmanagedType.ByValTStr)
+					{
+						sizeConst = blob.ReadCompressedInt();
+					}
+					else if (unmanagedType == UnmanagedType.Interface
+						|| unmanagedType == UnmanagedType.IDispatch
+						|| unmanagedType == UnmanagedType.IUnknown)
+					{
+						if (blob.Length != 0)
+						{
+							iidParameterIndex = blob.ReadCompressedInt();
+						}
+					}
+					else if (unmanagedType == UnmanagedType.CustomMarshaler)
+					{
+						blob.ReadCompressedInt();
+						blob.ReadCompressedInt();
+						marshalType = ReadString(blob);
+						marshalCookie = ReadString(blob);
+						marshalTypeRef = module.Assembly.GetType(marshalType) ?? module.universe.GetType(marshalType);
+					}
+
+					Type typeofMarshalAs = module.universe.System_Runtime_InteropServices_MarshalAsAttribute;
+					Type typeofUnmanagedType = module.universe.System_Runtime_InteropServices_UnmanagedType;
+					Type typeofVarEnum = module.universe.System_Runtime_InteropServices_VarEnum;
+					Type typeofType = module.universe.System_Type;
+					List<CustomAttributeNamedArgument> named = new List<CustomAttributeNamedArgument>();
+					if (arraySubType != null)
+					{
+						named.Add(new CustomAttributeNamedArgument(typeofMarshalAs.GetField("ArraySubType"), new CustomAttributeTypedArgument(typeofUnmanagedType, arraySubType.Value)));
+					}
+					if (sizeParamIndex != null)
+					{
+						named.Add(new CustomAttributeNamedArgument(typeofMarshalAs.GetField("SizeParamIndex"), new CustomAttributeTypedArgument(module.universe.System_Int16, sizeParamIndex.Value)));
+					}
+					if (sizeConst != null)
+					{
+						named.Add(new CustomAttributeNamedArgument(typeofMarshalAs.GetField("SizeConst"), new CustomAttributeTypedArgument(module.universe.System_Int32, sizeConst.Value)));
+					}
+					if (safeArraySubType != null)
+					{
+						named.Add(new CustomAttributeNamedArgument(typeofMarshalAs.GetField("SafeArraySubType"), new CustomAttributeTypedArgument(typeofVarEnum, safeArraySubType.Value)));
+					}
+					if (safeArrayUserDefinedSubType != null)
+					{
+						named.Add(new CustomAttributeNamedArgument(typeofMarshalAs.GetField("SafeArrayUserDefinedSubType"), new CustomAttributeTypedArgument(typeofType, safeArrayUserDefinedSubType)));
+					}
+					if (iidParameterIndex != null)
+					{
+						named.Add(new CustomAttributeNamedArgument(typeofMarshalAs.GetField("IidParameterIndex"), new CustomAttributeTypedArgument(module.universe.System_Int32, iidParameterIndex.Value)));
+					}
+					if (marshalType != null)
+					{
+						named.Add(new CustomAttributeNamedArgument(typeofMarshalAs.GetField("MarshalType"), new CustomAttributeTypedArgument(module.universe.System_String, marshalType)));
+					}
+					if (marshalTypeRef != null)
+					{
+						named.Add(new CustomAttributeNamedArgument(typeofMarshalAs.GetField("MarshalTypeRef"), new CustomAttributeTypedArgument(module.universe.System_Type, marshalTypeRef)));
+					}
+					if (marshalCookie != null)
+					{
+						named.Add(new CustomAttributeNamedArgument(typeofMarshalAs.GetField("MarshalCookie"), new CustomAttributeTypedArgument(module.universe.System_String, marshalCookie)));
+					}
+					ConstructorInfo constructor = typeofMarshalAs.GetConstructor(new Type[] { typeofUnmanagedType });
+					return new CustomAttributeData(constructor, new object[] { unmanagedType }, named);
+				}
+			}
+			throw new BadImageFormatException();
+		}
+
+		internal static void SetMarshalAsAttribute(ModuleBuilder module, int token, CustomAttributeBuilder attribute)
+		{
+			attribute = attribute.DecodeBlob(module.Assembly);
+			FieldMarshalTable.Record rec = new FieldMarshalTable.Record();
+			rec.Parent = token;
+			rec.NativeType = WriteMarshallingDescriptor(module, attribute);
+			module.FieldMarshal.AddRecord(rec);
+		}
+
+		private static int WriteMarshallingDescriptor(ModuleBuilder module, CustomAttributeBuilder attribute)
+		{
+			UnmanagedType unmanagedType;
+			object val = attribute.GetConstructorArgument(0);
+			if (val is short)
+			{
+				unmanagedType = (UnmanagedType)(short)val;
+			}
+			else if (val is int)
+			{
+				unmanagedType = (UnmanagedType)(int)val;
+			}
+			else
+			{
+				unmanagedType = (UnmanagedType)val;
+			}
+
+			ByteBuffer bb = new ByteBuffer(5);
+			bb.WriteCompressedInt((int)unmanagedType);
+
+			if (unmanagedType == UnmanagedType.LPArray)
+			{
+				UnmanagedType arraySubType = attribute.GetFieldValue<UnmanagedType>("ArraySubType") ?? NATIVE_TYPE_MAX;
+				bb.WriteCompressedInt((int)arraySubType);
+				int? sizeParamIndex = attribute.GetFieldValue<short>("SizeParamIndex");
+				int? sizeConst = attribute.GetFieldValue<int>("SizeConst");
+				if (sizeParamIndex != null)
+				{
+					bb.WriteCompressedInt(sizeParamIndex.Value);
+					if (sizeConst != null)
+					{
+						bb.WriteCompressedInt(sizeConst.Value);
+						bb.WriteCompressedInt(1); // flag that says that SizeParamIndex was specified
+					}
+				}
+				else if (sizeConst != null)
+				{
+					bb.WriteCompressedInt(0); // SizeParamIndex
+					bb.WriteCompressedInt(sizeConst.Value);
+					bb.WriteCompressedInt(0); // flag that says that SizeParamIndex was not specified
+				}
+			}
+			else if (unmanagedType == UnmanagedType.SafeArray)
+			{
+				VarEnum? safeArraySubType = attribute.GetFieldValue<VarEnum>("SafeArraySubType");
+				if (safeArraySubType != null)
+				{
+					bb.WriteCompressedInt((int)safeArraySubType);
+					Type safeArrayUserDefinedSubType = (Type)attribute.GetFieldValue("SafeArrayUserDefinedSubType");
+					if (safeArrayUserDefinedSubType != null)
+					{
+						WriteType(module, bb, safeArrayUserDefinedSubType);
+					}
+				}
+			}
+			else if (unmanagedType == UnmanagedType.ByValArray)
+			{
+				bb.WriteCompressedInt(attribute.GetFieldValue<int>("SizeConst") ?? 1);
+				UnmanagedType? arraySubType = attribute.GetFieldValue<UnmanagedType>("ArraySubType");
+				if (arraySubType != null)
+				{
+					bb.WriteCompressedInt((int)arraySubType);
+				}
+			}
+			else if (unmanagedType == UnmanagedType.ByValTStr)
+			{
+				bb.WriteCompressedInt(attribute.GetFieldValue<int>("SizeConst").Value);
+			}
+			else if (unmanagedType == UnmanagedType.Interface
+				|| unmanagedType == UnmanagedType.IDispatch
+				|| unmanagedType == UnmanagedType.IUnknown)
+			{
+				int? iidParameterIndex = attribute.GetFieldValue<int>("IidParameterIndex");
+				if (iidParameterIndex != null)
+				{
+					bb.WriteCompressedInt(iidParameterIndex.Value);
+				}
+			}
+			else if (unmanagedType == UnmanagedType.CustomMarshaler)
+			{
+				bb.WriteCompressedInt(0);
+				bb.WriteCompressedInt(0);
+				string marshalType = (string)attribute.GetFieldValue("MarshalType");
+				if (marshalType != null)
+				{
+					WriteString(bb, marshalType);
+				}
+				else
+				{
+					WriteType(module, bb, (Type)attribute.GetFieldValue("MarshalTypeRef"));
+				}
+				WriteString(bb, (string)attribute.GetFieldValue("MarshalCookie") ?? "");
+			}
+
+			return module.Blobs.Add(bb);
+		}
+
+		private static Type ReadType(Module module, ByteReader br)
+		{
+			string str = ReadString(br);
+			if (str == "")
+			{
+				return null;
+			}
+			return module.Assembly.GetType(str) ?? module.universe.GetType(str, true);
+		}
+
+		private static void WriteType(Module module, ByteBuffer bb, Type type)
+		{
+			WriteString(bb, type.Assembly == module.Assembly ? type.FullName : type.AssemblyQualifiedName);
+		}
+
+		private static string ReadString(ByteReader br)
+		{
+			return Encoding.UTF8.GetString(br.ReadBytes(br.ReadCompressedInt()));
+		}
+
+		private static void WriteString(ByteBuffer bb, string str)
+		{
+			byte[] buf = Encoding.UTF8.GetBytes(str);
+			bb.WriteCompressedInt(buf.Length);
+			bb.Write(buf);
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/MemberInfo.cs b/mcs/class/IKVM.Reflection/MemberInfo.cs
new file mode 100644
index 0000000..5406c32
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/MemberInfo.cs
@@ -0,0 +1,81 @@
+/*
+  Copyright (C) 2009 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace IKVM.Reflection
+{
+// disable warnings that complain about us having == and != operators without also overriding Equals/GetHashCode,
+// this is intentional because most subtypes use reference equality
+#pragma warning disable 660, 661
+	public abstract class MemberInfo : ICustomAttributeProvider
+	{
+		public abstract string Name { get; }
+		public abstract Type DeclaringType { get; }
+		public abstract MemberTypes MemberType { get; }
+
+		public virtual int MetadataToken
+		{
+			get { throw new NotSupportedException(); }
+		}
+
+		public abstract Module Module
+		{
+			get;
+		}
+
+		public bool IsDefined(Type attributeType, bool inherit)
+		{
+			return CustomAttributeData.__GetCustomAttributes(this, attributeType, inherit).Count != 0;
+		}
+
+		public IList<CustomAttributeData> __GetCustomAttributes(Type attributeType, bool inherit)
+		{
+			return CustomAttributeData.__GetCustomAttributes(this, attributeType, inherit);
+		}
+
+		public static bool operator ==(MemberInfo m1, MemberInfo m2)
+		{
+			return ReferenceEquals(m1, m2) || (!ReferenceEquals(m1, null) && m1.Equals(m2));
+		}
+
+		public static bool operator !=(MemberInfo m1, MemberInfo m2)
+		{
+			return !(m1 == m2);
+		}
+
+		internal virtual IList<CustomAttributeData> GetCustomAttributesData(Type attributeType)
+		{
+			return this.Module.GetCustomAttributes(this.MetadataToken, attributeType);
+		}
+
+		internal static bool BindingFlagsMatch(bool state, BindingFlags flags, BindingFlags trueFlag, BindingFlags falseFlag)
+		{
+			return (state && (flags & trueFlag) == trueFlag)
+				|| (!state && (flags & falseFlag) == falseFlag);
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Metadata/CliHeader.cs b/mcs/class/IKVM.Reflection/Metadata/CliHeader.cs
new file mode 100644
index 0000000..90258c3
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Metadata/CliHeader.cs
@@ -0,0 +1,92 @@
+/*
+  Copyright (C) 2008 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System.IO;
+
+namespace IKVM.Reflection.Metadata
+{
+	sealed class CliHeader
+	{
+		internal const uint COMIMAGE_FLAGS_ILONLY = 0x00000001;
+		internal const uint COMIMAGE_FLAGS_32BITREQUIRED = 0x00000002;
+		internal const uint COMIMAGE_FLAGS_STRONGNAMESIGNED = 0x00000008;
+		internal const uint COMIMAGE_FLAGS_NATIVE_ENTRYPOINT = 0x00000010;
+
+		internal uint Cb = 0x48;
+		internal ushort MajorRuntimeVersion;
+		internal ushort MinorRuntimeVersion;
+		internal uint MetaDataRVA;
+		internal uint MetaDataSize;
+		internal uint Flags;
+		internal uint EntryPointToken;
+		internal uint ResourcesRVA;
+		internal uint ResourcesSize;
+		internal uint StrongNameSignatureRVA;
+		internal uint StrongNameSignatureSize;
+		internal ulong CodeManagerTable;
+		internal uint VTableFixupsRVA;
+		internal uint VTableFixupsSize;
+		internal ulong ExportAddressTableJumps;
+		internal ulong ManagedNativeHeader;
+
+		internal void Read(BinaryReader br)
+		{
+			Cb = br.ReadUInt32();
+			MajorRuntimeVersion = br.ReadUInt16();
+			MinorRuntimeVersion = br.ReadUInt16();
+			MetaDataRVA = br.ReadUInt32();
+			MetaDataSize = br.ReadUInt32();
+			Flags = br.ReadUInt32();
+			EntryPointToken = br.ReadUInt32();
+			ResourcesRVA = br.ReadUInt32();
+			ResourcesSize = br.ReadUInt32();
+			StrongNameSignatureRVA = br.ReadUInt32();
+			StrongNameSignatureSize = br.ReadUInt32();
+			CodeManagerTable = br.ReadUInt32();
+			VTableFixupsRVA = br.ReadUInt32();
+			VTableFixupsSize = br.ReadUInt32();
+			ExportAddressTableJumps = br.ReadUInt32();
+			ManagedNativeHeader = br.ReadUInt32();
+		}
+
+		internal void Write(IKVM.Reflection.Writer.MetadataWriter mw)
+		{
+			mw.Write(Cb);
+			mw.Write(MajorRuntimeVersion);
+			mw.Write(MinorRuntimeVersion);
+			mw.Write(MetaDataRVA);
+			mw.Write(MetaDataSize);
+			mw.Write(Flags);
+			mw.Write(EntryPointToken);
+			mw.Write(ResourcesRVA);
+			mw.Write(ResourcesSize);
+			mw.Write(StrongNameSignatureRVA);
+			mw.Write(StrongNameSignatureSize);
+			mw.Write(CodeManagerTable);
+			mw.Write(VTableFixupsRVA);
+			mw.Write(VTableFixupsSize);
+			mw.Write(ExportAddressTableJumps);
+			mw.Write(ManagedNativeHeader);
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Metadata/MetadataRW.cs b/mcs/class/IKVM.Reflection/Metadata/MetadataRW.cs
new file mode 100644
index 0000000..d03c8d6
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Metadata/MetadataRW.cs
@@ -0,0 +1,101 @@
+/*
+  Copyright (C) 2009 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace IKVM.Reflection.Metadata
+{
+	// base class for MetadataReader and MetadataWriter
+	abstract class MetadataRW
+	{
+		internal readonly bool bigStrings;
+		internal readonly bool bigGuids;
+		internal readonly bool bigBlobs;
+		internal readonly bool bigResolutionScope;
+		internal readonly bool bigTypeDefOrRef;
+		internal readonly bool bigMemberRefParent;
+		internal readonly bool bigHasCustomAttribute;
+		internal readonly bool bigCustomAttributeType;
+		internal readonly bool bigMethodDefOrRef;
+		internal readonly bool bigHasConstant;
+		internal readonly bool bigHasSemantics;
+		internal readonly bool bigHasFieldMarshal;
+		internal readonly bool bigHasDeclSecurity;
+		internal readonly bool bigTypeOrMethodDef;
+		internal readonly bool bigMemberForwarded;
+		internal readonly bool bigImplementation;
+		internal readonly bool bigField;
+		internal readonly bool bigMethodDef;
+		internal readonly bool bigParam;
+		internal readonly bool bigTypeDef;
+		internal readonly bool bigProperty;
+		internal readonly bool bigEvent;
+		internal readonly bool bigGenericParam;
+		internal readonly bool bigModuleRef;
+
+		protected MetadataRW(Module module, bool bigStrings, bool bigGuids, bool bigBlobs)
+		{
+			this.bigStrings = bigStrings;
+			this.bigGuids = bigGuids;
+			this.bigBlobs = bigBlobs;
+			this.bigField = module.Field.IsBig;
+			this.bigMethodDef = module.MethodDef.IsBig;
+			this.bigParam = module.Param.IsBig;
+			this.bigTypeDef = module.TypeDef.IsBig;
+			this.bigProperty = module.Property.IsBig;
+			this.bigEvent = module.Event.IsBig;
+			this.bigGenericParam = module.GenericParam.IsBig;
+			this.bigModuleRef = module.ModuleRef.IsBig;
+			this.bigResolutionScope = IsBig(2, module.ModuleTable, module.ModuleRef, module.AssemblyRef, module.TypeRef);
+			this.bigTypeDefOrRef = IsBig(2, module.TypeDef, module.TypeRef, module.TypeSpec);
+			this.bigMemberRefParent = IsBig(3, module.TypeDef, module.TypeRef, module.ModuleRef, module.MethodDef, module.TypeSpec);
+			this.bigMethodDefOrRef = IsBig(1, module.MethodDef, module.MemberRef);
+			this.bigHasCustomAttribute = IsBig(5, module.MethodDef, module.Field, module.TypeRef, module.TypeDef, module.Param, module.InterfaceImpl, module.MemberRef,
+				module.ModuleTable, /*module.Permission,*/ module.Property, module.Event, module.StandAloneSig, module.ModuleRef, module.TypeSpec, module.AssemblyTable,
+				module.AssemblyRef, module.File, module.ExportedType, module.ManifestResource);
+			this.bigCustomAttributeType = IsBig(3, module.MethodDef, module.MemberRef);
+			this.bigHasConstant = IsBig(2, module.Field, module.Param, module.Property);
+			this.bigHasSemantics = IsBig(1, module.Event, module.Property);
+			this.bigHasFieldMarshal = IsBig(1, module.Field, module.Param);
+			this.bigHasDeclSecurity = IsBig(2, module.TypeDef, module.MethodDef, module.AssemblyTable);
+			this.bigTypeOrMethodDef = IsBig(1, module.TypeDef, module.MethodDef);
+			this.bigMemberForwarded = IsBig(1, module.Field, module.MethodDef);
+			this.bigImplementation = IsBig(2, module.File, module.AssemblyRef, module.ExportedType);
+		}
+
+		private static bool IsBig(int bitsUsed, params Table[] tables)
+		{
+			int limit = 1 << (16 - bitsUsed);
+			foreach (Table table in tables)
+			{
+				if (table.RowCount >= limit)
+				{
+					return true;
+				}
+			}
+			return false;
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Metadata/Tables.cs b/mcs/class/IKVM.Reflection/Metadata/Tables.cs
new file mode 100644
index 0000000..c4a5b0b
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Metadata/Tables.cs
@@ -0,0 +1,2496 @@
+/*
+  Copyright (C) 2009 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Collections.Generic;
+using System.Text;
+using IKVM.Reflection.Emit;
+using IKVM.Reflection.Writer;
+using IKVM.Reflection.Reader;
+
+namespace IKVM.Reflection.Metadata
+{
+	internal abstract class Table
+	{
+		internal bool IsBig
+		{
+			get { return RowCount > 65535; }
+		}
+
+		internal abstract int RowCount { get; set; }
+
+		internal abstract void Write(MetadataWriter mw);
+		internal abstract void Read(MetadataReader mr);
+
+		internal int GetLength(MetadataWriter md)
+		{
+			return RowCount * GetRowSize(new RowSizeCalc(md));
+		}
+
+		protected abstract int GetRowSize(RowSizeCalc rsc);
+
+		protected sealed class RowSizeCalc
+		{
+			private readonly MetadataWriter mw;
+			private int size;
+
+			internal RowSizeCalc(MetadataWriter mw)
+			{
+				this.mw = mw;
+			}
+
+			internal RowSizeCalc AddFixed(int size)
+			{
+				this.size += size;
+				return this;
+			}
+
+			internal RowSizeCalc WriteStringIndex()
+			{
+				if (mw.bigStrings)
+				{
+					this.size += 4;
+				}
+				else
+				{
+					this.size += 2;
+				}
+				return this;
+			}
+
+			internal RowSizeCalc WriteGuidIndex()
+			{
+				if (mw.bigGuids)
+				{
+					this.size += 4;
+				}
+				else
+				{
+					this.size += 2;
+				}
+				return this;
+			}
+
+			internal RowSizeCalc WriteBlobIndex()
+			{
+				if (mw.bigBlobs)
+				{
+					this.size += 4;
+				}
+				else
+				{
+					this.size += 2;
+				}
+				return this;
+			}
+
+			internal RowSizeCalc WriteTypeDefOrRef()
+			{
+				if (mw.bigTypeDefOrRef)
+				{
+					this.size += 4;
+				}
+				else
+				{
+					this.size += 2;
+				}
+				return this;
+			}
+
+			internal RowSizeCalc WriteField()
+			{
+				if (mw.bigField)
+				{
+					size += 4;
+				}
+				else
+				{
+					size += 2;
+				}
+				return this;
+			}
+
+			internal RowSizeCalc WriteMethodDef()
+			{
+				if (mw.bigMethodDef)
+				{
+					this.size += 4;
+				}
+				else
+				{
+					this.size += 2;
+				}
+				return this;
+			}
+
+			internal RowSizeCalc WriteParam()
+			{
+				if (mw.bigParam)
+				{
+					this.size += 4;
+				}
+				else
+				{
+					this.size += 2;
+				}
+				return this;
+			}
+
+			internal RowSizeCalc WriteResolutionScope()
+			{
+				if (mw.bigResolutionScope)
+				{
+					this.size += 4;
+				}
+				else
+				{
+					this.size += 2;
+				}
+				return this;
+			}
+
+			internal RowSizeCalc WriteMemberRefParent()
+			{
+				if (mw.bigMemberRefParent)
+				{
+					this.size += 4;
+				}
+				else
+				{
+					this.size += 2;
+				}
+				return this;
+			}
+
+			internal RowSizeCalc WriteHasCustomAttribute()
+			{
+				if (mw.bigHasCustomAttribute)
+				{
+					size += 4;
+				}
+				else
+				{
+					size += 2;
+				}
+				return this;
+			}
+
+			internal RowSizeCalc WriteCustomAttributeType()
+			{
+				if (mw.bigCustomAttributeType)
+				{
+					this.size += 4;
+				}
+				else
+				{
+					this.size += 2;
+				}
+				return this;
+			}
+
+			internal RowSizeCalc WriteHasConstant()
+			{
+				if (mw.bigHasConstant)
+				{
+					size += 4;
+				}
+				else
+				{
+					size += 2;
+				}
+				return this;
+			}
+
+			internal RowSizeCalc WriteTypeDef()
+			{
+				if (mw.bigTypeDef)
+				{
+					this.size += 4;
+				}
+				else
+				{
+					this.size += 2;
+				}
+				return this;
+			}
+
+			internal RowSizeCalc WriteMethodDefOrRef()
+			{
+				if (mw.bigMethodDefOrRef)
+				{
+					this.size += 4;
+				}
+				else
+				{
+					this.size += 2;
+				}
+				return this;
+			}
+
+			internal RowSizeCalc WriteEvent()
+			{
+				if (mw.bigEvent)
+				{
+					this.size += 4;
+				}
+				else
+				{
+					this.size += 2;
+				}
+				return this;
+			}
+
+			internal RowSizeCalc WriteProperty()
+			{
+				if (mw.bigProperty)
+				{
+					this.size += 4;
+				}
+				else
+				{
+					this.size += 2;
+				}
+				return this;
+			}
+
+			internal RowSizeCalc WriteHasSemantics()
+			{
+				if (mw.bigHasSemantics)
+				{
+					this.size += 4;
+				}
+				else
+				{
+					this.size += 2;
+				}
+				return this;
+			}
+
+			internal RowSizeCalc WriteImplementation()
+			{
+				if (mw.bigImplementation)
+				{
+					this.size += 4;
+				}
+				else
+				{
+					this.size += 2;
+				}
+				return this;
+			}
+
+			internal RowSizeCalc WriteTypeOrMethodDef()
+			{
+				if (mw.bigTypeOrMethodDef)
+				{
+					this.size += 4;
+				}
+				else
+				{
+					this.size += 2;
+				}
+				return this;
+			}
+
+			internal RowSizeCalc WriteGenericParam()
+			{
+				if (mw.bigGenericParam)
+				{
+					this.size += 4;
+				}
+				else
+				{
+					this.size += 2;
+				}
+				return this;
+			}
+
+			internal RowSizeCalc WriteHasDeclSecurity()
+			{
+				if (mw.bigHasDeclSecurity)
+				{
+					this.size += 4;
+				}
+				else
+				{
+					this.size += 2;
+				}
+				return this;
+			}
+
+			internal RowSizeCalc WriteMemberForwarded()
+			{
+				if (mw.bigMemberForwarded)
+				{
+					this.size += 4;
+				}
+				else
+				{
+					this.size += 2;
+				}
+				return this;
+			}
+
+			internal RowSizeCalc WriteModuleRef()
+			{
+				if (mw.bigModuleRef)
+				{
+					this.size += 4;
+				}
+				else
+				{
+					this.size += 2;
+				}
+				return this;
+			}
+
+			internal RowSizeCalc WriteHasFieldMarshal()
+			{
+				if (mw.bigHasFieldMarshal)
+				{
+					this.size += 4;
+				}
+				else
+				{
+					this.size += 2;
+				}
+				return this;
+			}
+
+			internal int Value
+			{
+				get { return size; }
+			}
+		}
+	}
+
+	abstract class Table<T> : Table
+	{
+		internal T[] records = new T[1];
+		protected int rowCount;
+
+		internal sealed override int RowCount
+		{
+			get { return rowCount; }
+			set { rowCount = value; records = new T[value]; }
+		}
+
+		protected override int GetRowSize(RowSizeCalc rsc)
+		{
+			throw new InvalidOperationException();
+		}
+
+		internal int AddRecord(T newRecord)
+		{
+			if (rowCount == records.Length)
+			{
+				T[] newarr = new T[records.Length * 2];
+				Array.Copy(records, newarr, records.Length);
+				records = newarr;
+			}
+			records[rowCount++] = newRecord;
+			return rowCount;
+		}
+
+		internal int AddVirtualRecord()
+		{
+			return ++rowCount;
+		}
+
+		internal override void Write(MetadataWriter mw)
+		{
+			throw new InvalidOperationException();
+		}
+	}
+
+	sealed class ModuleTable : Table<ModuleTable.Record>
+	{
+		internal const int Index = 0x00;
+
+		internal struct Record
+		{
+			internal short Generation;
+			internal int Name; // -> StringHeap
+			internal int Mvid; // -> GuidHeap
+			internal int EncId; // -> GuidHeap
+			internal int EncBaseId; // -> GuidHeap
+		}
+
+		internal override void Read(MetadataReader mr)
+		{
+			for (int i = 0; i < records.Length; i++)
+			{
+				records[i].Generation = mr.ReadInt16();
+				records[i].Name = mr.ReadStringIndex();
+				records[i].Mvid = mr.ReadGuidIndex();
+				records[i].EncId = mr.ReadGuidIndex();
+				records[i].EncBaseId = mr.ReadGuidIndex();
+			}
+		}
+
+		internal override void Write(MetadataWriter mw)
+		{
+			for (int i = 0; i < rowCount; i++)
+			{
+				mw.Write(records[i].Generation);
+				mw.WriteStringIndex(records[i].Name);
+				mw.WriteGuidIndex(records[i].Mvid);
+				mw.WriteGuidIndex(records[i].EncId);
+				mw.WriteGuidIndex(records[i].EncBaseId);
+			}
+		}
+
+		protected override int GetRowSize(RowSizeCalc rsc)
+		{
+			return rsc
+				.AddFixed(2)
+				.WriteStringIndex()
+				.WriteGuidIndex()
+				.WriteGuidIndex()
+				.WriteGuidIndex()
+				.Value;
+		}
+
+		internal void Add(short generation, int name, int mvid, int encid, int encbaseid)
+		{
+			Record record = new Record();
+			record.Generation = generation;
+			record.Name = name;
+			record.Mvid = mvid;
+			record.EncId = encid;
+			record.EncBaseId = encbaseid;
+			AddRecord(record);
+		}
+	}
+
+	sealed class TypeRefTable : Table<TypeRefTable.Record>
+	{
+		internal const int Index = 0x01;
+
+		internal struct Record
+		{
+			internal int ResolutionScope;
+			internal int TypeName;
+			internal int TypeNameSpace;
+		}
+
+		internal override void Read(MetadataReader mr)
+		{
+			for (int i = 0; i < records.Length; i++)
+			{
+				records[i].ResolutionScope = mr.ReadResolutionScope();
+				records[i].TypeName = mr.ReadStringIndex();
+				records[i].TypeNameSpace = mr.ReadStringIndex();
+			}
+		}
+
+		internal override void Write(MetadataWriter mw)
+		{
+			for (int i = 0; i < rowCount; i++)
+			{
+				mw.WriteResolutionScope(records[i].ResolutionScope);
+				mw.WriteStringIndex(records[i].TypeName);
+				mw.WriteStringIndex(records[i].TypeNameSpace);
+			}
+		}
+
+		protected override int GetRowSize(RowSizeCalc rsc)
+		{
+			return rsc
+				.WriteResolutionScope()
+				.WriteStringIndex()
+				.WriteStringIndex()
+				.Value;
+		}
+	}
+
+	sealed class TypeDefTable : Table<TypeDefTable.Record>
+	{
+		internal const int Index = 0x02;
+
+		internal struct Record
+		{
+			internal int Flags;
+			internal int TypeName;
+			internal int TypeNamespace;
+			internal int Extends;
+			internal int FieldList;
+			internal int MethodList;
+		}
+
+		internal override void Read(MetadataReader mr)
+		{
+			for (int i = 0; i < records.Length; i++)
+			{
+				records[i].Flags = mr.ReadInt32();
+				records[i].TypeName = mr.ReadStringIndex();
+				records[i].TypeNamespace = mr.ReadStringIndex();
+				records[i].Extends = mr.ReadTypeDefOrRef();
+				records[i].FieldList = mr.ReadField();
+				records[i].MethodList = mr.ReadMethodDef();
+			}
+		}
+
+		internal override void Write(MetadataWriter mw)
+		{
+			mw.ModuleBuilder.WriteTypeDefTable(mw);
+		}
+
+		internal int AllocToken()
+		{
+			return 0x02000000 + AddVirtualRecord();
+		}
+
+		protected override int GetRowSize(RowSizeCalc rsc)
+		{
+			return rsc
+				.AddFixed(4)
+				.WriteStringIndex()
+				.WriteStringIndex()
+				.WriteTypeDefOrRef()
+				.WriteField()
+				.WriteMethodDef()
+				.Value;
+		}
+	}
+
+	sealed class FieldTable : Table<FieldTable.Record>
+	{
+		internal const int Index = 0x04;
+
+		internal struct Record
+		{
+			internal short Flags;
+			internal int Name;
+			internal int Signature;
+		}
+
+		internal override void Read(MetadataReader mr)
+		{
+			for (int i = 0; i < records.Length; i++)
+			{
+				records[i].Flags = mr.ReadInt16();
+				records[i].Name = mr.ReadStringIndex();
+				records[i].Signature = mr.ReadBlobIndex();
+			}
+		}
+
+		internal override void Write(MetadataWriter mw)
+		{
+			mw.ModuleBuilder.WriteFieldTable(mw);
+		}
+
+		protected override int GetRowSize(RowSizeCalc rsc)
+		{
+			return rsc
+				.AddFixed(2)
+				.WriteStringIndex()
+				.WriteBlobIndex()
+				.Value;
+		}
+	}
+
+	sealed class MethodDefTable : Table<MethodDefTable.Record>
+	{
+		internal const int Index = 0x06;
+		private int baseRVA;
+
+		internal struct Record
+		{
+			internal int RVA;
+			internal short ImplFlags;
+			internal short Flags;
+			internal int Name;
+			internal int Signature;
+			internal int ParamList;
+		}
+
+		internal override void Read(MetadataReader mr)
+		{
+			for (int i = 0; i < records.Length; i++)
+			{
+				records[i].RVA = mr.ReadInt32();
+				records[i].ImplFlags = mr.ReadInt16();
+				records[i].Flags = mr.ReadInt16();
+				records[i].Name = mr.ReadStringIndex();
+				records[i].Signature = mr.ReadBlobIndex();
+				records[i].ParamList = mr.ReadParam();
+			}
+		}
+
+		internal override void Write(MetadataWriter mw)
+		{
+			mw.ModuleBuilder.WriteMethodDefTable(baseRVA, mw);
+		}
+
+		protected override int GetRowSize(RowSizeCalc rsc)
+		{
+			return rsc
+				.AddFixed(8)
+				.WriteStringIndex()
+				.WriteBlobIndex()
+				.WriteParam()
+				.Value;
+		}
+
+		internal void Fixup(TextSection code)
+		{
+			baseRVA = (int)code.MethodBodiesRVA;
+		}
+	}
+
+	sealed class ParamTable : Table<ParamTable.Record>
+	{
+		internal const int Index = 0x08;
+
+		internal struct Record
+		{
+			internal short Flags;
+			internal short Sequence;
+			internal int Name;
+		}
+
+		internal override void Read(MetadataReader mr)
+		{
+			for (int i = 0; i < records.Length; i++)
+			{
+				records[i].Flags = mr.ReadInt16();
+				records[i].Sequence = mr.ReadInt16();
+				records[i].Name = mr.ReadStringIndex();
+			}
+		}
+
+		internal override void Write(MetadataWriter mw)
+		{
+			mw.ModuleBuilder.WriteParamTable(mw);
+		}
+
+		protected override int GetRowSize(RowSizeCalc rsc)
+		{
+			return rsc
+				.AddFixed(4)
+				.WriteStringIndex()
+				.Value;
+		}
+	}
+
+	sealed class InterfaceImplTable : Table<InterfaceImplTable.Record>, IComparer<InterfaceImplTable.Record>
+	{
+		internal const int Index = 0x09;
+
+		internal struct Record
+		{
+			internal int Class;
+			internal int Interface;
+		}
+
+		internal override void Read(MetadataReader mr)
+		{
+			for (int i = 0; i < records.Length; i++)
+			{
+				records[i].Class = mr.ReadTypeDef();
+				records[i].Interface = mr.ReadTypeDefOrRef();
+			}
+		}
+
+		internal override void Write(MetadataWriter mw)
+		{
+			for (int i = 0; i < rowCount; i++)
+			{
+				mw.WriteTypeDef(records[i].Class);
+				mw.WriteEncodedTypeDefOrRef(records[i].Interface);
+			}
+		}
+
+		protected override int GetRowSize(RowSizeCalc rsc)
+		{
+			return rsc
+				.WriteTypeDef()
+				.WriteTypeDefOrRef()
+				.Value;
+		}
+
+		internal void Fixup()
+		{
+			for (int i = 0; i < rowCount; i++)
+			{
+				int token = records[i].Interface;
+				switch (token >> 24)
+				{
+					case 0:
+						break;
+					case TypeDefTable.Index:
+						token = (token & 0xFFFFFF) << 2 | 0;
+						break;
+					case TypeRefTable.Index:
+						token = (token & 0xFFFFFF) << 2 | 1;
+						break;
+					case TypeSpecTable.Index:
+						token = (token & 0xFFFFFF) << 2 | 2;
+						break;
+					default:
+						throw new InvalidOperationException();
+				}
+				records[i].Interface = token;
+			}
+			Array.Sort(records, 0, rowCount, this);
+		}
+
+		int IComparer<Record>.Compare(Record x, Record y)
+		{
+			if (x.Class == y.Class)
+			{
+				return x.Interface == y.Interface ? 0 : (x.Interface > y.Interface ? 1 : -1);
+			}
+			return x.Class > y.Class ? 1 : -1;
+		}
+	}
+
+	sealed class MemberRefTable : Table<MemberRefTable.Record>
+	{
+		internal const int Index = 0x0A;
+
+		internal struct Record
+		{
+			internal int Class;
+			internal int Name;
+			internal int Signature;
+		}
+
+		internal override void Read(MetadataReader mr)
+		{
+			for (int i = 0; i < records.Length; i++)
+			{
+				records[i].Class = mr.ReadMemberRefParent();
+				records[i].Name = mr.ReadStringIndex();
+				records[i].Signature = mr.ReadBlobIndex();
+			}
+		}
+
+		internal override void Write(MetadataWriter mw)
+		{
+			for (int i = 0; i < rowCount; i++)
+			{
+				mw.WriteMemberRefParent(records[i].Class);
+				mw.WriteStringIndex(records[i].Name);
+				mw.WriteBlobIndex(records[i].Signature);
+			}
+		}
+
+		protected override int GetRowSize(RowSizeCalc rsc)
+		{
+			return rsc
+				.WriteMemberRefParent()
+				.WriteStringIndex()
+				.WriteBlobIndex()
+				.Value;
+		}
+
+		internal int FindOrAddRecord(Record record)
+		{
+			for (int i = 0; i < rowCount; i++)
+			{
+				if (records[i].Class == record.Class
+					&& records[i].Name == record.Name
+					&& records[i].Signature == record.Signature)
+				{
+					return i + 1;
+				}
+			}
+			return AddRecord(record);
+		}
+
+		internal void Fixup(ModuleBuilder moduleBuilder)
+		{
+			for (int i = 0; i < rowCount; i++)
+			{
+				if (moduleBuilder.IsPseudoToken(records[i].Class))
+				{
+					records[i].Class = moduleBuilder.ResolvePseudoToken(records[i].Class);
+				}
+			}
+		}
+	}
+
+	sealed class ConstantTable : Table<ConstantTable.Record>, IComparer<ConstantTable.Record>
+	{
+		internal const int Index = 0x0B;
+
+		internal struct Record
+		{
+			internal short Type;
+			internal int Parent;
+			internal int Value;
+		}
+
+		internal override void Read(MetadataReader mr)
+		{
+			for (int i = 0; i < records.Length; i++)
+			{
+				records[i].Type = mr.ReadInt16();
+				records[i].Parent = mr.ReadHasConstant();
+				records[i].Value = mr.ReadBlobIndex();
+			}
+		}
+
+		internal override void Write(MetadataWriter mw)
+		{
+			for (int i = 0; i < rowCount; i++)
+			{
+				mw.Write(records[i].Type);
+				mw.WriteHasConstant(records[i].Parent);
+				mw.WriteBlobIndex(records[i].Value);
+			}
+		}
+
+		protected override int GetRowSize(RowSizeCalc rsc)
+		{
+			return rsc
+				.AddFixed(2)
+				.WriteHasConstant()
+				.WriteBlobIndex()
+				.Value;
+		}
+
+		internal void Fixup(ModuleBuilder moduleBuilder)
+		{
+			for (int i = 0; i < rowCount; i++)
+			{
+				int token = records[i].Parent;
+				if (moduleBuilder.IsPseudoToken(token))
+				{
+					token = moduleBuilder.ResolvePseudoToken(token);
+				}
+				// do the HasConstant encoding, so that we can sort the table
+				switch (token >> 24)
+				{
+					case FieldTable.Index:
+						records[i].Parent = (token & 0xFFFFFF) << 2 | 0;
+						break;
+					case ParamTable.Index:
+						records[i].Parent = (token & 0xFFFFFF) << 2 | 1;
+						break;
+					case PropertyTable.Index:
+						records[i].Parent = (token & 0xFFFFFF) << 2 | 2;
+						break;
+					default:
+						throw new InvalidOperationException();
+				}
+			}
+			Array.Sort(records, 0, rowCount, this);
+		}
+
+		int IComparer<Record>.Compare(Record x, Record y)
+		{
+			return x.Parent == y.Parent ? 0 : (x.Parent > y.Parent ? 1 : -1);
+		}
+
+		internal object GetRawConstantValue(Module module, int parent)
+		{
+			// TODO use binary search (if sorted)
+			for (int i = 0; i < module.Constant.records.Length; i++)
+			{
+				if (module.Constant.records[i].Parent == parent)
+				{
+					ByteReader br = module.GetBlob(module.Constant.records[i].Value);
+					switch (module.Constant.records[i].Type)
+					{
+						// see ModuleBuilder.AddConstant for the encodings
+						case Signature.ELEMENT_TYPE_BOOLEAN:
+							return br.ReadByte() != 0;
+						case Signature.ELEMENT_TYPE_I1:
+							return br.ReadSByte();
+						case Signature.ELEMENT_TYPE_I2:
+							return br.ReadInt16();
+						case Signature.ELEMENT_TYPE_I4:
+							return br.ReadInt32();
+						case Signature.ELEMENT_TYPE_I8:
+							return br.ReadInt64();
+						case Signature.ELEMENT_TYPE_U1:
+							return br.ReadByte();
+						case Signature.ELEMENT_TYPE_U2:
+							return br.ReadUInt16();
+						case Signature.ELEMENT_TYPE_U4:
+							return br.ReadUInt32();
+						case Signature.ELEMENT_TYPE_U8:
+							return br.ReadUInt64();
+						case Signature.ELEMENT_TYPE_R4:
+							return br.ReadSingle();
+						case Signature.ELEMENT_TYPE_R8:
+							return br.ReadDouble();
+						case Signature.ELEMENT_TYPE_CHAR:
+							return br.ReadChar();
+						case Signature.ELEMENT_TYPE_STRING:
+							{
+								char[] chars = new char[br.Length / 2];
+								for (int j = 0; j < chars.Length; j++)
+								{
+									chars[j] = br.ReadChar();
+								}
+								return new String(chars);
+							}
+						case Signature.ELEMENT_TYPE_CLASS:
+							if (br.ReadInt32() != 0)
+							{
+								throw new BadImageFormatException();
+							}
+							return null;
+						default:
+							throw new BadImageFormatException();
+					}
+				}
+			}
+			throw new InvalidOperationException();
+		}
+	}
+
+	sealed class CustomAttributeTable : Table<CustomAttributeTable.Record>, IComparer<CustomAttributeTable.Record>
+	{
+		internal const int Index = 0x0C;
+
+		internal struct Record
+		{
+			internal int Parent;
+			internal int Type;
+			internal int Value;
+		}
+
+		internal override void Read(MetadataReader mr)
+		{
+			for (int i = 0; i < records.Length; i++)
+			{
+				records[i].Parent = mr.ReadHasCustomAttribute();
+				records[i].Type = mr.ReadCustomAttributeType();
+				records[i].Value = mr.ReadBlobIndex();
+			}
+		}
+
+		internal override void Write(MetadataWriter mw)
+		{
+			for (int i = 0; i < rowCount; i++)
+			{
+				mw.WriteHasCustomAttribute(records[i].Parent);
+				mw.WriteCustomAttributeType(records[i].Type);
+				mw.WriteBlobIndex(records[i].Value);
+			}
+		}
+
+		protected override int GetRowSize(RowSizeCalc rsc)
+		{
+			return rsc
+				.WriteHasCustomAttribute()
+				.WriteCustomAttributeType()
+				.WriteBlobIndex()
+				.Value;
+		}
+
+		internal void Fixup(ModuleBuilder moduleBuilder)
+		{
+			int[] genericParamFixup = moduleBuilder.GenericParam.GetIndexFixup();
+			for (int i = 0; i < rowCount; i++)
+			{
+				if (moduleBuilder.IsPseudoToken(records[i].Type))
+				{
+					records[i].Type = moduleBuilder.ResolvePseudoToken(records[i].Type);
+				}
+				int token = records[i].Parent;
+				if (moduleBuilder.IsPseudoToken(token))
+				{
+					token = moduleBuilder.ResolvePseudoToken(token);
+				}
+				// do the HasCustomAttribute encoding, so that we can sort the table
+				switch (token >> 24)
+				{
+					case MethodDefTable.Index:
+						records[i].Parent = (token & 0xFFFFFF) << 5 | 0;
+						break;
+					case FieldTable.Index:
+						records[i].Parent = (token & 0xFFFFFF) << 5 | 1;
+						break;
+					case TypeRefTable.Index:
+						records[i].Parent = (token & 0xFFFFFF) << 5 | 2;
+						break;
+					case TypeDefTable.Index:
+						records[i].Parent = (token & 0xFFFFFF) << 5 | 3;
+						break;
+					case ParamTable.Index:
+						records[i].Parent = (token & 0xFFFFFF) << 5 | 4;
+						break;
+					case InterfaceImplTable.Index:
+						records[i].Parent = (token & 0xFFFFFF) << 5 | 5;
+						break;
+					case MemberRefTable.Index:
+						records[i].Parent = (token & 0xFFFFFF) << 5 | 6;
+						break;
+					case ModuleTable.Index:
+						records[i].Parent = (token & 0xFFFFFF) << 5 | 7;
+						break;
+					// Permission (8) table doesn't exist in the spec
+					case PropertyTable.Index:
+						records[i].Parent = (token & 0xFFFFFF) << 5 | 9;
+						break;
+					case EventTable.Index:
+						records[i].Parent = (token & 0xFFFFFF) << 5 | 10;
+						break;
+					case StandAloneSigTable.Index:
+						records[i].Parent = (token & 0xFFFFFF) << 5 | 11;
+						break;
+					case ModuleRefTable.Index:
+						records[i].Parent = (token & 0xFFFFFF) << 5 | 12;
+						break;
+					case TypeSpecTable.Index:
+						records[i].Parent = (token & 0xFFFFFF) << 5 | 13;
+						break;
+					case AssemblyTable.Index:
+						records[i].Parent = (token & 0xFFFFFF) << 5 | 14;
+						break;
+					case AssemblyRefTable.Index:
+						records[i].Parent = (token & 0xFFFFFF) << 5 | 15;
+						break;
+					case FileTable.Index:
+						records[i].Parent = (token & 0xFFFFFF) << 5 | 16;
+						break;
+					case ExportedTypeTable.Index:
+						records[i].Parent = (token & 0xFFFFFF) << 5 | 17;
+						break;
+					case ManifestResourceTable.Index:
+						records[i].Parent = (token & 0xFFFFFF) << 5 | 18;
+						break;
+					case GenericParamTable.Index:
+						records[i].Parent = (genericParamFixup[(token & 0xFFFFFF) - 1] + 1) << 5 | 19;
+						break;
+					default:
+						throw new InvalidOperationException();
+				}
+			}
+			Array.Sort(records, 0, rowCount, this);
+		}
+
+		int IComparer<Record>.Compare(Record x, Record y)
+		{
+			return x.Parent == y.Parent ? 0 : (x.Parent > y.Parent ? 1 : -1);
+		}
+	}
+
+	sealed class FieldMarshalTable : Table<FieldMarshalTable.Record>, IComparer<FieldMarshalTable.Record>
+	{
+		internal const int Index = 0x0D;
+
+		internal struct Record
+		{
+			internal int Parent;
+			internal int NativeType;
+		}
+
+		internal override void Read(MetadataReader mr)
+		{
+			for (int i = 0; i < records.Length; i++)
+			{
+				records[i].Parent = mr.ReadHasFieldMarshal();
+				records[i].NativeType = mr.ReadBlobIndex();
+			}
+		}
+
+		internal override void Write(MetadataWriter mw)
+		{
+			for (int i = 0; i < rowCount; i++)
+			{
+				mw.WriteHasFieldMarshal(records[i].Parent);
+				mw.WriteBlobIndex(records[i].NativeType);
+			}
+		}
+
+		protected override int GetRowSize(RowSizeCalc rsc)
+		{
+			return rsc
+				.WriteHasFieldMarshal()
+				.WriteBlobIndex()
+				.Value;
+		}
+
+		internal void Fixup(ModuleBuilder moduleBuilder)
+		{
+			for (int i = 0; i < rowCount; i++)
+			{
+				int token = moduleBuilder.ResolvePseudoToken(records[i].Parent);
+				// do the HasFieldMarshal encoding, so that we can sort the table
+				switch (token >> 24)
+				{
+					case FieldTable.Index:
+						records[i].Parent = (token & 0xFFFFFF) << 1 | 0;
+						break;
+					case ParamTable.Index:
+						records[i].Parent = (token & 0xFFFFFF) << 1 | 1;
+						break;
+					default:
+						throw new InvalidOperationException();
+				}
+			}
+			Array.Sort(records, 0, rowCount, this);
+		}
+
+		int IComparer<Record>.Compare(Record x, Record y)
+		{
+			return x.Parent == y.Parent ? 0 : (x.Parent > y.Parent ? 1 : -1);
+		}
+	}
+
+	sealed class DeclSecurityTable : Table<DeclSecurityTable.Record>, IComparer<DeclSecurityTable.Record>
+	{
+		internal const int Index = 0x0E;
+
+		internal struct Record
+		{
+			internal short Action;
+			internal int Parent;
+			internal int PermissionSet;
+		}
+
+		internal override void Read(MetadataReader mr)
+		{
+			for (int i = 0; i < records.Length; i++)
+			{
+				records[i].Action = mr.ReadInt16();
+				records[i].Parent = mr.ReadHasDeclSecurity();
+				records[i].PermissionSet = mr.ReadBlobIndex();
+			}
+		}
+
+		internal override void Write(MetadataWriter mw)
+		{
+			for (int i = 0; i < rowCount; i++)
+			{
+				mw.Write(records[i].Action);
+				mw.WriteHasDeclSecurity(records[i].Parent);
+				mw.WriteBlobIndex(records[i].PermissionSet);
+			}
+		}
+
+		protected override int GetRowSize(RowSizeCalc rsc)
+		{
+			return rsc
+				.AddFixed(2)
+				.WriteHasDeclSecurity()
+				.WriteBlobIndex()
+				.Value;
+		}
+
+		internal void Fixup(ModuleBuilder moduleBuilder)
+		{
+			for (int i = 0; i < rowCount; i++)
+			{
+				int token = records[i].Parent;
+				if (moduleBuilder.IsPseudoToken(token))
+				{
+					token = moduleBuilder.ResolvePseudoToken(token);
+				}
+				// do the HasDeclSecurity encoding, so that we can sort the table
+				switch (token >> 24)
+				{
+					case TypeDefTable.Index:
+						token = (token & 0xFFFFFF) << 2 | 0;
+						break;
+					case MethodDefTable.Index:
+						token = (token & 0xFFFFFF) << 2 | 1;
+						break;
+					case AssemblyTable.Index:
+						token = (token & 0xFFFFFF) << 2 | 2;
+						break;
+					default:
+						throw new InvalidOperationException();
+				}
+				records[i].Parent = token;
+			}
+			Array.Sort(records, 0, rowCount, this);
+		}
+
+		int IComparer<Record>.Compare(Record x, Record y)
+		{
+			return x.Parent == y.Parent ? 0 : (x.Parent > y.Parent ? 1 : -1);
+		}
+	}
+
+	sealed class ClassLayoutTable : Table<ClassLayoutTable.Record>, IComparer<ClassLayoutTable.Record>
+	{
+		internal const int Index = 0x0f;
+
+		internal struct Record
+		{
+			internal short PackingSize;
+			internal int ClassSize;
+			internal int Parent;
+		}
+
+		internal void AddOrReplaceRecord(Record rec)
+		{
+			for (int i = 0; i < records.Length; i++)
+			{
+				if (records[i].Parent == rec.Parent)
+				{
+					records[i] = rec;
+					return;
+				}
+			}
+			AddRecord(rec);
+		}
+
+		internal override void Read(MetadataReader mr)
+		{
+			for (int i = 0; i < records.Length; i++)
+			{
+				records[i].PackingSize = mr.ReadInt16();
+				records[i].ClassSize = mr.ReadInt32();
+				records[i].Parent = mr.ReadTypeDef();
+			}
+		}
+
+		internal override void Write(MetadataWriter mw)
+		{
+			Array.Sort(records, 0, rowCount, this);
+			for (int i = 0; i < rowCount; i++)
+			{
+				mw.Write(records[i].PackingSize);
+				mw.Write(records[i].ClassSize);
+				mw.WriteTypeDef(records[i].Parent);
+			}
+		}
+
+		protected override int GetRowSize(RowSizeCalc rsc)
+		{
+			return rsc
+				.AddFixed(6)
+				.WriteTypeDef()
+				.Value;
+		}
+
+		int IComparer<Record>.Compare(Record x, Record y)
+		{
+			return x.Parent == y.Parent ? 0 : (x.Parent > y.Parent ? 1 : -1);
+		}
+
+		internal void GetLayout(int token, ref int pack, ref int size)
+		{
+			for (int i = 0; i < rowCount; i++)
+			{
+				if (records[i].Parent == token)
+				{
+					pack = records[i].PackingSize;
+					size = records[i].ClassSize;
+					break;
+				}
+			}
+		}
+	}
+
+	sealed class FieldLayoutTable : Table<FieldLayoutTable.Record>, IComparer<FieldLayoutTable.Record>
+	{
+		internal const int Index = 0x10;
+
+		internal struct Record
+		{
+			internal int Offset;
+			internal int Field;
+		}
+
+		internal override void Read(MetadataReader mr)
+		{
+			for (int i = 0; i < records.Length; i++)
+			{
+				records[i].Offset = mr.ReadInt32();
+				records[i].Field = mr.ReadField();
+			}
+		}
+
+		internal override void Write(MetadataWriter mw)
+		{
+			for (int i = 0; i < rowCount; i++)
+			{
+				mw.Write(records[i].Offset);
+				mw.WriteField(records[i].Field);
+			}
+		}
+
+		protected override int GetRowSize(RowSizeCalc rsc)
+		{
+			return rsc
+				.AddFixed(4)
+				.WriteField()
+				.Value;
+		}
+
+		internal void Fixup(ModuleBuilder moduleBuilder)
+		{
+			for (int i = 0; i < rowCount; i++)
+			{
+				records[i].Field = moduleBuilder.ResolvePseudoToken(records[i].Field);
+			}
+			Array.Sort(records, 0, rowCount, this);
+		}
+
+		int IComparer<Record>.Compare(Record x, Record y)
+		{
+			return x.Field == y.Field ? 0 : (x.Field > y.Field ? 1 : -1);
+		}
+	}
+
+	sealed class StandAloneSigTable : Table<int>
+	{
+		internal const int Index = 0x11;
+
+		internal override void Read(MetadataReader mr)
+		{
+			for (int i = 0; i < records.Length; i++)
+			{
+				records[i] = mr.ReadBlobIndex();
+			}
+		}
+
+		internal override void Write(MetadataWriter mw)
+		{
+			for (int i = 0; i < rowCount; i++)
+			{
+				mw.WriteBlobIndex(records[i]);
+			}
+		}
+
+		protected override int GetRowSize(Table.RowSizeCalc rsc)
+		{
+			return rsc.WriteBlobIndex().Value;
+		}
+
+		internal int FindOrAddRecord(int blob)
+		{
+			for (int i = 0; i < rowCount; i++)
+			{
+				if (records[i] == blob)
+				{
+					return i + 1;
+				}
+			}
+			return AddRecord(blob);
+		}
+	}
+
+	sealed class EventMapTable : Table<EventMapTable.Record>
+	{
+		internal const int Index = 0x12;
+
+		internal struct Record
+		{
+			internal int Parent;
+			internal int EventList;
+		}
+
+		internal override void Read(MetadataReader mr)
+		{
+			for (int i = 0; i < records.Length; i++)
+			{
+				records[i].Parent = mr.ReadTypeDef();
+				records[i].EventList = mr.ReadEvent();
+			}
+		}
+
+		internal override void Write(MetadataWriter mw)
+		{
+			for (int i = 0; i < rowCount; i++)
+			{
+				mw.WriteTypeDef(records[i].Parent);
+				mw.WriteEvent(records[i].EventList);
+			}
+		}
+
+		protected override int GetRowSize(RowSizeCalc rsc)
+		{
+			return rsc
+				.WriteTypeDef()
+				.WriteEvent()
+				.Value;
+		}
+	}
+
+	sealed class EventTable : Table<EventTable.Record>
+	{
+		internal const int Index = 0x14;
+
+		internal struct Record
+		{
+			internal short EventFlags;
+			internal int Name;
+			internal int EventType;
+		}
+
+		internal override void Read(MetadataReader mr)
+		{
+			for (int i = 0; i < records.Length; i++)
+			{
+				records[i].EventFlags = mr.ReadInt16();
+				records[i].Name = mr.ReadStringIndex();
+				records[i].EventType = mr.ReadTypeDefOrRef();
+			}
+		}
+
+		internal override void Write(MetadataWriter mw)
+		{
+			for (int i = 0; i < rowCount; i++)
+			{
+				mw.Write(records[i].EventFlags);
+				mw.WriteStringIndex(records[i].Name);
+				mw.WriteTypeDefOrRef(records[i].EventType);
+			}
+		}
+
+		protected override int GetRowSize(RowSizeCalc rsc)
+		{
+			return rsc
+				.AddFixed(2)
+				.WriteStringIndex()
+				.WriteTypeDefOrRef()
+				.Value;
+		}
+	}
+
+	sealed class PropertyMapTable : Table<PropertyMapTable.Record>
+	{
+		internal const int Index = 0x15;
+
+		internal struct Record
+		{
+			internal int Parent;
+			internal int PropertyList;
+		}
+
+		internal override void Read(MetadataReader mr)
+		{
+			for (int i = 0; i < records.Length; i++)
+			{
+				records[i].Parent = mr.ReadTypeDef();
+				records[i].PropertyList = mr.ReadProperty();
+			}
+		}
+
+		internal override void Write(MetadataWriter mw)
+		{
+			for (int i = 0; i < rowCount; i++)
+			{
+				mw.WriteTypeDef(records[i].Parent);
+				mw.WriteProperty(records[i].PropertyList);
+			}
+		}
+
+		protected override int GetRowSize(RowSizeCalc rsc)
+		{
+			return rsc
+				.WriteTypeDef()
+				.WriteProperty()
+				.Value;
+		}
+	}
+
+	sealed class PropertyTable : Table<PropertyTable.Record>
+	{
+		internal const int Index = 0x17;
+
+		internal struct Record
+		{
+			internal short Flags;
+			internal int Name;
+			internal int Type;
+		}
+
+		internal override void Read(MetadataReader mr)
+		{
+			for (int i = 0; i < records.Length; i++)
+			{
+				records[i].Flags = mr.ReadInt16();
+				records[i].Name = mr.ReadStringIndex();
+				records[i].Type = mr.ReadBlobIndex();
+			}
+		}
+
+		internal override void Write(MetadataWriter mw)
+		{
+			for (int i = 0; i < rowCount; i++)
+			{
+				mw.Write(records[i].Flags);
+				mw.WriteStringIndex(records[i].Name);
+				mw.WriteBlobIndex(records[i].Type);
+			}
+		}
+
+		protected override int GetRowSize(RowSizeCalc rsc)
+		{
+			return rsc
+				.AddFixed(2)
+				.WriteStringIndex()
+				.WriteBlobIndex()
+				.Value;
+		}
+	}
+
+	sealed class MethodSemanticsTable : Table<MethodSemanticsTable.Record>, IComparer<MethodSemanticsTable.Record>
+	{
+		internal const int Index = 0x18;
+
+		// semantics
+		internal const short Setter = 0x0001;
+		internal const short Getter = 0x0002;
+		internal const short Other = 0x0004;
+		internal const short AddOn = 0x0008;
+		internal const short RemoveOn = 0x0010;
+		internal const short Fire = 0x0020;
+
+		internal struct Record
+		{
+			internal short Semantics;
+			internal int Method;
+			internal int Association;
+		}
+
+		internal override void Read(MetadataReader mr)
+		{
+			for (int i = 0; i < records.Length; i++)
+			{
+				records[i].Semantics = mr.ReadInt16();
+				records[i].Method = mr.ReadMethodDef();
+				records[i].Association = mr.ReadHasSemantics();
+			}
+		}
+
+		internal override void Write(MetadataWriter mw)
+		{
+			for (int i = 0; i < rowCount; i++)
+			{
+				mw.Write(records[i].Semantics);
+				mw.WriteMethodDef(records[i].Method);
+				mw.WriteHasSemantics(records[i].Association);
+			}
+		}
+
+		protected override int GetRowSize(RowSizeCalc rsc)
+		{
+			return rsc
+				.AddFixed(2)
+				.WriteMethodDef()
+				.WriteHasSemantics()
+				.Value;
+		}
+
+		internal void Fixup(ModuleBuilder moduleBuilder)
+		{
+			for (int i = 0; i < rowCount; i++)
+			{
+				if (moduleBuilder.IsPseudoToken(records[i].Method))
+				{
+					records[i].Method = moduleBuilder.ResolvePseudoToken(records[i].Method);
+				}
+				int token = records[i].Association;
+				// do the HasSemantics encoding, so that we can sort the table
+				switch (token >> 24)
+				{
+					case EventTable.Index:
+						token = (token & 0xFFFFFF) << 1 | 0;
+						break;
+					case PropertyTable.Index:
+						token = (token & 0xFFFFFF) << 1 | 1;
+						break;
+					default:
+						throw new InvalidOperationException();
+				}
+				records[i].Association = token;
+			}
+			Array.Sort(records, 0, rowCount, this);
+		}
+
+		int IComparer<Record>.Compare(Record x, Record y)
+		{
+			return x.Association == y.Association ? 0 : (x.Association > y.Association ? 1 : -1);
+		}
+
+		internal MethodInfo GetMethod(Module module, int token, bool nonPublic, short semantics)
+		{
+			int i = 0;
+			return GetNextMethod(module, token, nonPublic, semantics, ref i);
+		}
+
+		internal MethodInfo[] GetMethods(Module module, int token, bool nonPublic, short semantics)
+		{
+			List<MethodInfo> methods = new List<MethodInfo>();
+			MethodInfo method;
+			for (int i = 0; (method = GetNextMethod(module, token, nonPublic, semantics, ref i)) != null; )
+			{
+				methods.Add(method);
+			}
+			return methods.ToArray();
+		}
+
+		private MethodInfo GetNextMethod(Module module, int token, bool nonPublic, short semantics, ref int i)
+		{
+			// TODO use binary search?
+			for (; i < records.Length; i++)
+			{
+				if (records[i].Association == token)
+				{
+					if ((records[i].Semantics & semantics) != 0)
+					{
+						MethodInfo method = (MethodInfo)module.ResolveMethod((MethodDefTable.Index << 24) + records[i].Method);
+						if (nonPublic || method.IsPublic)
+						{
+							i++;
+							return method;
+						}
+					}
+				}
+			}
+			return null;
+		}
+
+		internal void ComputeFlags(Module module, int token, out bool isPublic, out bool isStatic)
+		{
+			isPublic = false;
+			isStatic = false;
+			MethodInfo method;
+			for (int i = 0; (method = GetNextMethod(module, token, true, -1, ref i)) != null; )
+			{
+				if (method.IsPublic)
+				{
+					isPublic = true;
+				}
+				if (method.IsStatic)
+				{
+					isStatic = true;
+				}
+			}
+		}
+	}
+
+	sealed class MethodImplTable : Table<MethodImplTable.Record>, IComparer<MethodImplTable.Record>
+	{
+		internal const int Index = 0x19;
+
+		internal struct Record
+		{
+			internal int Class;
+			internal int MethodBody;
+			internal int MethodDeclaration;
+		}
+
+		internal override void Read(MetadataReader mr)
+		{
+			for (int i = 0; i < records.Length; i++)
+			{
+				records[i].Class = mr.ReadTypeDef();
+				records[i].MethodBody = mr.ReadMethodDefOrRef();
+				records[i].MethodDeclaration = mr.ReadMethodDefOrRef();
+			}
+		}
+
+		internal override void Write(MetadataWriter mw)
+		{
+			for (int i = 0; i < rowCount; i++)
+			{
+				mw.WriteTypeDef(records[i].Class);
+				mw.WriteMethodDefOrRef(records[i].MethodBody);
+				mw.WriteMethodDefOrRef(records[i].MethodDeclaration);
+			}
+		}
+
+		protected override int GetRowSize(RowSizeCalc rsc)
+		{
+			return rsc
+				.WriteTypeDef()
+				.WriteMethodDefOrRef()
+				.WriteMethodDefOrRef()
+				.Value;
+		}
+
+		internal void Fixup(ModuleBuilder moduleBuilder)
+		{
+			for (int i = 0; i < rowCount; i++)
+			{
+				if (moduleBuilder.IsPseudoToken(records[i].MethodBody))
+				{
+					records[i].MethodBody = moduleBuilder.ResolvePseudoToken(records[i].MethodBody);
+				}
+				if (moduleBuilder.IsPseudoToken(records[i].MethodDeclaration))
+				{
+					records[i].MethodDeclaration = moduleBuilder.ResolvePseudoToken(records[i].MethodDeclaration);
+				}
+			}
+			Array.Sort(records, 0, rowCount, this);
+		}
+
+		int IComparer<Record>.Compare(Record x, Record y)
+		{
+			return x.Class == y.Class ? 0 : (x.Class > y.Class ? 1 : -1);
+		}
+	}
+
+	sealed class ModuleRefTable : Table<int>
+	{
+		internal const int Index = 0x1A;
+
+		internal override void Read(MetadataReader mr)
+		{
+			for (int i = 0; i < records.Length; i++)
+			{
+				records[i] = mr.ReadStringIndex();
+			}
+		}
+
+		internal override void Write(MetadataWriter mw)
+		{
+			for (int i = 0; i < rowCount; i++)
+			{
+				mw.WriteStringIndex(records[i]);
+			}
+		}
+
+		protected override int GetRowSize(RowSizeCalc rsc)
+		{
+			return rsc
+				.WriteStringIndex()
+				.Value;
+		}
+
+		internal int FindOrAddRecord(int str)
+		{
+			for (int i = 0; i < rowCount; i++)
+			{
+				if (records[i] == str)
+				{
+					return i + 1;
+				}
+			}
+			return AddRecord(str);
+		}
+	}
+
+	sealed class TypeSpecTable : Table<int>
+	{
+		internal const int Index = 0x1B;
+
+		internal override void Read(MetadataReader mr)
+		{
+			for (int i = 0; i < records.Length; i++)
+			{
+				records[i] = mr.ReadBlobIndex();
+			}
+		}
+
+		internal override void Write(MetadataWriter mw)
+		{
+			for (int i = 0; i < rowCount; i++)
+			{
+				mw.WriteBlobIndex(records[i]);
+			}
+		}
+
+		protected override int GetRowSize(Table.RowSizeCalc rsc)
+		{
+			return rsc.WriteBlobIndex().Value;
+		}
+	}
+
+	sealed class ImplMapTable : Table<ImplMapTable.Record>, IComparer<ImplMapTable.Record>
+	{
+		internal const int Index = 0x1C;
+
+		internal struct Record
+		{
+			internal short MappingFlags;
+			internal int MemberForwarded;
+			internal int ImportName;
+			internal int ImportScope;
+		}
+
+		internal override void Read(MetadataReader mr)
+		{
+			for (int i = 0; i < records.Length; i++)
+			{
+				records[i].MappingFlags = mr.ReadInt16();
+				records[i].MemberForwarded = mr.ReadMemberForwarded();
+				records[i].ImportName = mr.ReadStringIndex();
+				records[i].ImportScope = mr.ReadModuleRef();
+			}
+		}
+
+		internal override void Write(MetadataWriter mw)
+		{
+			for (int i = 0; i < rowCount; i++)
+			{
+				mw.Write(records[i].MappingFlags);
+				mw.WriteMemberForwarded(records[i].MemberForwarded);
+				mw.WriteStringIndex(records[i].ImportName);
+				mw.WriteModuleRef(records[i].ImportScope);
+			}
+		}
+
+		protected override int GetRowSize(RowSizeCalc rsc)
+		{
+			return rsc
+				.AddFixed(2)
+				.WriteMemberForwarded()
+				.WriteStringIndex()
+				.WriteModuleRef()
+				.Value;
+		}
+
+		internal void Fixup(ModuleBuilder moduleBuilder)
+		{
+			for (int i = 0; i < rowCount; i++)
+			{
+				if (moduleBuilder.IsPseudoToken(records[i].MemberForwarded))
+				{
+					records[i].MemberForwarded = moduleBuilder.ResolvePseudoToken(records[i].MemberForwarded);
+				}
+			}
+			Array.Sort(records, 0, rowCount, this);
+		}
+
+		int IComparer<Record>.Compare(Record x, Record y)
+		{
+			return x.MemberForwarded == y.MemberForwarded ? 0 : (x.MemberForwarded > y.MemberForwarded ? 1 : -1);
+		}
+	}
+
+	sealed class FieldRVATable : Table<FieldRVATable.Record>, IComparer<FieldRVATable.Record>
+	{
+		internal const int Index = 0x1D;
+
+		internal struct Record
+		{
+			internal int RVA;
+			internal int Field;
+		}
+
+		internal override void Read(MetadataReader mr)
+		{
+			for (int i = 0; i < records.Length; i++)
+			{
+				records[i].RVA = mr.ReadInt32();
+				records[i].Field = mr.ReadField();
+			}
+		}
+
+		internal override void Write(MetadataWriter mw)
+		{
+			for (int i = 0; i < rowCount; i++)
+			{
+				mw.Write(records[i].RVA);
+				mw.WriteField(records[i].Field);
+			}
+		}
+
+		protected override int GetRowSize(RowSizeCalc rsc)
+		{
+			return rsc
+				.AddFixed(4)
+				.WriteField()
+				.Value;
+		}
+
+		internal void Fixup(ModuleBuilder moduleBuilder, int sdataRVA)
+		{
+			for (int i = 0; i < rowCount; i++)
+			{
+				records[i].RVA += sdataRVA;
+				if (moduleBuilder.IsPseudoToken(records[i].Field))
+				{
+					records[i].Field = moduleBuilder.ResolvePseudoToken(records[i].Field);
+				}
+			}
+			Array.Sort(records, 0, rowCount, this);
+		}
+
+		int IComparer<Record>.Compare(Record x, Record y)
+		{
+			return x.Field == y.Field ? 0 : (x.Field > y.Field ? 1 : -1);
+		}
+	}
+
+	sealed class AssemblyTable : Table<AssemblyTable.Record>
+	{
+		internal const int Index = 0x20;
+
+		internal struct Record
+		{
+			internal int HashAlgId;
+			internal ushort MajorVersion;
+			internal ushort MinorVersion;
+			internal ushort BuildNumber;
+			internal ushort RevisionNumber;
+			internal int Flags;
+			internal int PublicKey;
+			internal int Name;
+			internal int Culture;
+		}
+
+		internal override void Read(MetadataReader mr)
+		{
+			for (int i = 0; i < records.Length; i++)
+			{
+				records[i].HashAlgId = mr.ReadInt32();
+				records[i].MajorVersion = mr.ReadUInt16();
+				records[i].MinorVersion = mr.ReadUInt16();
+				records[i].BuildNumber = mr.ReadUInt16();
+				records[i].RevisionNumber = mr.ReadUInt16();
+				records[i].Flags = mr.ReadInt32();
+				records[i].PublicKey = mr.ReadBlobIndex();
+				records[i].Name = mr.ReadStringIndex();
+				records[i].Culture = mr.ReadStringIndex();
+			}
+		}
+
+		internal override void Write(MetadataWriter mw)
+		{
+			for (int i = 0; i < rowCount; i++)
+			{
+				mw.Write(records[i].HashAlgId);
+				mw.Write(records[i].MajorVersion);
+				mw.Write(records[i].MinorVersion);
+				mw.Write(records[i].BuildNumber);
+				mw.Write(records[i].RevisionNumber);
+				mw.Write(records[i].Flags);
+				mw.WriteBlobIndex(records[i].PublicKey);
+				mw.WriteStringIndex(records[i].Name);
+				mw.WriteStringIndex(records[i].Culture);
+			}
+		}
+
+		protected override int GetRowSize(RowSizeCalc rsc)
+		{
+			return rsc
+				.AddFixed(16)
+				.WriteBlobIndex()
+				.WriteStringIndex()
+				.WriteStringIndex()
+				.Value;
+		}
+	}
+
+	sealed class AssemblyRefTable : Table<AssemblyRefTable.Record>
+	{
+		internal const int Index = 0x23;
+
+		internal struct Record
+		{
+			internal ushort MajorVersion;
+			internal ushort MinorVersion;
+			internal ushort BuildNumber;
+			internal ushort RevisionNumber;
+			internal int Flags;
+			internal int PublicKeyOrToken;
+			internal int Name;
+			internal int Culture;
+			internal int HashValue;
+		}
+
+		internal int FindOrAddRecord(Record rec)
+		{
+			for (int i = 0; i < rowCount; i++)
+			{
+				if (records[i].Name == rec.Name
+					&& records[i].MajorVersion == rec.MajorVersion
+					&& records[i].MinorVersion == rec.MinorVersion
+					&& records[i].BuildNumber == rec.BuildNumber
+					&& records[i].RevisionNumber == rec.RevisionNumber
+					&& records[i].Flags == rec.Flags
+					&& records[i].PublicKeyOrToken == rec.PublicKeyOrToken
+					&& records[i].Culture == rec.Culture
+					&& records[i].HashValue == rec.HashValue
+					)
+				{
+					return i + 1;
+				}
+			}
+			return AddRecord(rec);
+		}
+
+		internal override void Read(MetadataReader mr)
+		{
+			for (int i = 0; i < records.Length; i++)
+			{
+				records[i].MajorVersion = mr.ReadUInt16();
+				records[i].MinorVersion = mr.ReadUInt16();
+				records[i].BuildNumber = mr.ReadUInt16();
+				records[i].RevisionNumber = mr.ReadUInt16();
+				records[i].Flags = mr.ReadInt32();
+				records[i].PublicKeyOrToken = mr.ReadBlobIndex();
+				records[i].Name = mr.ReadStringIndex();
+				records[i].Culture = mr.ReadStringIndex();
+				records[i].HashValue = mr.ReadBlobIndex();
+			}
+		}
+
+		internal override void Write(MetadataWriter mw)
+		{
+			for (int i = 0; i < rowCount; i++)
+			{
+				mw.Write(records[i].MajorVersion);
+				mw.Write(records[i].MinorVersion);
+				mw.Write(records[i].BuildNumber);
+				mw.Write(records[i].RevisionNumber);
+				mw.Write(records[i].Flags);
+				mw.WriteBlobIndex(records[i].PublicKeyOrToken);
+				mw.WriteStringIndex(records[i].Name);
+				mw.WriteStringIndex(records[i].Culture);
+				mw.WriteBlobIndex(records[i].HashValue);
+			}
+		}
+
+		protected override int GetRowSize(RowSizeCalc rsc)
+		{
+			return rsc
+				.AddFixed(12)
+				.WriteBlobIndex()
+				.WriteStringIndex()
+				.WriteStringIndex()
+				.WriteBlobIndex()
+				.Value;
+		}
+	}
+
+	sealed class FileTable : Table<FileTable.Record>
+	{
+		internal const int Index = 0x26;
+
+		internal struct Record
+		{
+			internal int Flags;
+			internal int Name;
+			internal int HashValue;
+		}
+
+		internal override void Read(MetadataReader mr)
+		{
+			for (int i = 0; i < records.Length; i++)
+			{
+				records[i].Flags = mr.ReadInt32();
+				records[i].Name = mr.ReadStringIndex();
+				records[i].HashValue = mr.ReadBlobIndex();
+			}
+		}
+
+		internal override void Write(MetadataWriter mw)
+		{
+			for (int i = 0; i < rowCount; i++)
+			{
+				mw.Write(records[i].Flags);
+				mw.WriteStringIndex(records[i].Name);
+				mw.WriteBlobIndex(records[i].HashValue);
+			}
+		}
+
+		protected override int GetRowSize(RowSizeCalc rsc)
+		{
+			return rsc
+				.AddFixed(4)
+				.WriteStringIndex()
+				.WriteBlobIndex()
+				.Value;
+		}
+	}
+
+	sealed class ExportedTypeTable : Table<ExportedTypeTable.Record>
+	{
+		internal const int Index = 0x27;
+
+		internal struct Record
+		{
+			internal int Flags;
+			internal int TypeDefId;
+			internal int TypeName;
+			internal int TypeNamespace;
+			internal int Implementation;
+		}
+
+		internal override void Read(MetadataReader mr)
+		{
+			for (int i = 0; i < records.Length; i++)
+			{
+				records[i].Flags = mr.ReadInt32();
+				records[i].TypeDefId = mr.ReadInt32();
+				records[i].TypeName = mr.ReadStringIndex();
+				records[i].TypeNamespace = mr.ReadStringIndex();
+				records[i].Implementation = mr.ReadImplementation();
+			}
+		}
+
+		internal override void Write(MetadataWriter mw)
+		{
+			for (int i = 0; i < rowCount; i++)
+			{
+				mw.Write(records[i].Flags);
+				mw.Write(records[i].TypeDefId);
+				mw.WriteStringIndex(records[i].TypeName);
+				mw.WriteStringIndex(records[i].TypeNamespace);
+				mw.WriteImplementation(records[i].Implementation);
+			}
+		}
+
+		protected override int GetRowSize(RowSizeCalc rsc)
+		{
+			return rsc
+				.AddFixed(8)
+				.WriteStringIndex()
+				.WriteStringIndex()
+				.WriteImplementation()
+				.Value;
+		}
+
+		internal int FindOrAddRecord(Record rec)
+		{
+			for (int i = 0; i < rowCount; i++)
+			{
+				if (records[i].Implementation == rec.Implementation
+					&& records[i].TypeName == rec.TypeName
+					&& records[i].TypeNamespace == rec.TypeNamespace)
+				{
+					return i + 1;
+				}
+			}
+			return AddRecord(rec);
+		}
+	}
+
+	sealed class ManifestResourceTable : Table<ManifestResourceTable.Record>
+	{
+		internal const int Index = 0x28;
+
+		internal struct Record
+		{
+			internal int Offset;
+			internal int Flags;
+			internal int Name;
+			internal int Implementation;
+		}
+
+		internal override void Read(MetadataReader mr)
+		{
+			for (int i = 0; i < records.Length; i++)
+			{
+				records[i].Offset = mr.ReadInt32();
+				records[i].Flags = mr.ReadInt32();
+				records[i].Name = mr.ReadStringIndex();
+				records[i].Implementation = mr.ReadImplementation();
+			}
+		}
+
+		internal override void Write(MetadataWriter mw)
+		{
+			for (int i = 0; i < rowCount; i++)
+			{
+				mw.Write(records[i].Offset);
+				mw.Write(records[i].Flags);
+				mw.WriteStringIndex(records[i].Name);
+				mw.WriteImplementation(records[i].Implementation);
+			}
+		}
+
+		protected override int GetRowSize(RowSizeCalc rsc)
+		{
+			return rsc
+				.AddFixed(8)
+				.WriteStringIndex()
+				.WriteImplementation()
+				.Value;
+		}
+	}
+
+	sealed class NestedClassTable : Table<NestedClassTable.Record>
+	{
+		internal const int Index = 0x29;
+
+		internal struct Record
+		{
+			internal int NestedClass;
+			internal int EnclosingClass;
+		}
+
+		internal override void Read(MetadataReader mr)
+		{
+			for (int i = 0; i < records.Length; i++)
+			{
+				records[i].NestedClass = mr.ReadTypeDef();
+				records[i].EnclosingClass = mr.ReadTypeDef();
+			}
+		}
+
+		internal override void Write(MetadataWriter mw)
+		{
+			for (int i = 0; i < rowCount; i++)
+			{
+				mw.WriteTypeDef(records[i].NestedClass);
+				mw.WriteTypeDef(records[i].EnclosingClass);
+			}
+		}
+
+		protected override int GetRowSize(RowSizeCalc rsc)
+		{
+			return rsc
+				.WriteTypeDef()
+				.WriteTypeDef()
+				.Value;
+		}
+
+		internal List<int> GetNestedClasses(int enclosingClass)
+		{
+			List<int> nestedClasses = new List<int>();
+			for (int i = 0; i < rowCount; i++)
+			{
+				if (records[i].EnclosingClass == enclosingClass)
+				{
+					nestedClasses.Add(records[i].NestedClass);
+				}
+			}
+			return nestedClasses;
+		}
+	}
+
+	sealed class GenericParamTable : Table<GenericParamTable.Record>, IComparer<GenericParamTable.Record>
+	{
+		internal const int Index = 0x2A;
+
+		internal struct Record
+		{
+			internal short Number;
+			internal short Flags;
+			internal int Owner;
+			internal int Name;
+			// not part of the table, we use it to be able to fixup the GenericParamConstraint table
+			internal int unsortedIndex;
+		}
+
+		internal override void Read(MetadataReader mr)
+		{
+			for (int i = 0; i < records.Length; i++)
+			{
+				records[i].Number = mr.ReadInt16();
+				records[i].Flags = mr.ReadInt16();
+				records[i].Owner = mr.ReadTypeOrMethodDef();
+				records[i].Name = mr.ReadStringIndex();
+			}
+		}
+
+		internal override void Write(MetadataWriter mw)
+		{
+			for (int i = 0; i < rowCount; i++)
+			{
+				mw.Write(records[i].Number);
+				mw.Write(records[i].Flags);
+				mw.WriteTypeOrMethodDef(records[i].Owner);
+				mw.WriteStringIndex(records[i].Name);
+			}
+		}
+
+		protected override int GetRowSize(RowSizeCalc rsc)
+		{
+			return rsc
+				.AddFixed(4)
+				.WriteTypeOrMethodDef()
+				.WriteStringIndex()
+				.Value;
+		}
+
+		internal void Fixup(ModuleBuilder moduleBuilder)
+		{
+			for (int i = 0; i < rowCount; i++)
+			{
+				int token = records[i].Owner;
+				if (moduleBuilder.IsPseudoToken(token))
+				{
+					token = moduleBuilder.ResolvePseudoToken(token);
+				}
+				// do the TypeOrMethodDef encoding, so that we can sort the table
+				switch (token >> 24)
+				{
+					case TypeDefTable.Index:
+						records[i].Owner = (token & 0xFFFFFF) << 1 | 0;
+						break;
+					case MethodDefTable.Index:
+						records[i].Owner = (token & 0xFFFFFF) << 1 | 1;
+						break;
+					default:
+						throw new InvalidOperationException();
+				}
+				records[i].unsortedIndex = i;
+			}
+			Array.Sort(records, 0, rowCount, this);
+		}
+
+		int IComparer<Record>.Compare(Record x, Record y)
+		{
+			if (x.Owner == y.Owner)
+			{
+				return x.Number == y.Number ? 0 : (x.Number > y.Number ? 1 : -1);
+			}
+			return x.Owner > y.Owner ? 1 : -1;
+		}
+
+		internal GenericParameterAttributes GetAttributes(int token)
+		{
+			return (GenericParameterAttributes)records[(token & 0xFFFFFF) - 1].Flags;
+		}
+
+		internal void PatchAttribute(int token, GenericParameterAttributes genericParameterAttributes)
+		{
+			records[(token & 0xFFFFFF) - 1].Flags = (short)genericParameterAttributes;
+		}
+
+		internal int[] GetIndexFixup()
+		{
+			int[] array = new int[rowCount];
+			for (int i = 0; i < rowCount; i++)
+			{
+				array[records[i].unsortedIndex] = i;
+			}
+			return array;
+		}
+
+		internal int FindFirstByOwner(int token)
+		{
+			// TODO use binary search (if sorted)
+			for (int i = 0; i < records.Length; i++)
+			{
+				if (records[i].Owner == token)
+				{
+					return i;
+				}
+			}
+			return -1;
+		}
+	}
+
+	sealed class MethodSpecTable : Table<MethodSpecTable.Record>
+	{
+		internal const int Index = 0x2B;
+
+		internal struct Record
+		{
+			internal int Method;
+			internal int Instantiation;
+		}
+
+		internal override void Read(MetadataReader mr)
+		{
+			for (int i = 0; i < records.Length; i++)
+			{
+				records[i].Method = mr.ReadMethodDefOrRef();
+				records[i].Instantiation = mr.ReadBlobIndex();
+			}
+		}
+
+		internal override void Write(MetadataWriter mw)
+		{
+			for (int i = 0; i < rowCount; i++)
+			{
+				mw.WriteMethodDefOrRef(records[i].Method);
+				mw.WriteBlobIndex(records[i].Instantiation);
+			}
+		}
+
+		protected override int GetRowSize(RowSizeCalc rsc)
+		{
+			return rsc
+				.WriteMethodDefOrRef()
+				.WriteBlobIndex()
+				.Value;
+		}
+
+		internal int FindOrAddRecord(Record record)
+		{
+			for (int i = 0; i < rowCount; i++)
+			{
+				if (records[i].Method == record.Method
+					&& records[i].Instantiation == record.Instantiation)
+				{
+					return i + 1;
+				}
+			}
+			return AddRecord(record);
+		}
+
+		internal void Fixup(ModuleBuilder moduleBuilder)
+		{
+			for (int i = 0; i < rowCount; i++)
+			{
+				if (moduleBuilder.IsPseudoToken(records[i].Method))
+				{
+					records[i].Method = moduleBuilder.ResolvePseudoToken(records[i].Method);
+				}
+			}
+		}
+	}
+
+	sealed class GenericParamConstraintTable : Table<GenericParamConstraintTable.Record>, IComparer<GenericParamConstraintTable.Record>
+	{
+		internal const int Index = 0x2C;
+
+		internal struct Record
+		{
+			internal int Owner;
+			internal int Constraint;
+		}
+
+		internal override void Read(MetadataReader mr)
+		{
+			for (int i = 0; i < records.Length; i++)
+			{
+				records[i].Owner = mr.ReadGenericParam();
+				records[i].Constraint = mr.ReadTypeDefOrRef();
+			}
+		}
+
+		internal override void Write(MetadataWriter mw)
+		{
+			for (int i = 0; i < rowCount; i++)
+			{
+				mw.WriteGenericParam(records[i].Owner);
+				mw.WriteTypeDefOrRef(records[i].Constraint);
+			}
+		}
+
+		protected override int GetRowSize(RowSizeCalc rsc)
+		{
+			return rsc
+				.WriteGenericParam()
+				.WriteTypeDefOrRef()
+				.Value;
+		}
+
+		internal void Fixup(ModuleBuilder moduleBuilder)
+		{
+			int[] fixups = moduleBuilder.GenericParam.GetIndexFixup();
+			for (int i = 0; i < rowCount; i++)
+			{
+				records[i].Owner = fixups[records[i].Owner - 1] + 1;
+			}
+			Array.Sort(records, 0, rowCount, this);
+		}
+
+		int IComparer<Record>.Compare(Record x, Record y)
+		{
+			return x.Owner == y.Owner ? 0 : (x.Owner > y.Owner ? 1 : -1);
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/MethodBase.cs b/mcs/class/IKVM.Reflection/MethodBase.cs
new file mode 100644
index 0000000..b7e4b85
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/MethodBase.cs
@@ -0,0 +1,139 @@
+/*
+  Copyright (C) 2009 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+
+namespace IKVM.Reflection
+{
+	public abstract class MethodBase : MemberInfo
+	{
+		internal abstract MethodSignature MethodSignature { get; }
+		internal abstract int ParameterCount { get; }
+		public abstract ParameterInfo[] GetParameters();
+		public abstract MethodAttributes Attributes { get; }
+		public abstract MethodImplAttributes GetMethodImplementationFlags();
+		public abstract MethodBody GetMethodBody();
+		public abstract CallingConventions CallingConvention { get; }
+
+		public bool IsConstructor
+		{
+			get
+			{
+				if ((this.Attributes & MethodAttributes.RTSpecialName) != 0)
+				{
+					string name = this.Name;
+					return name == ConstructorInfo.ConstructorName || name == ConstructorInfo.TypeConstructorName;
+				}
+				return false;
+			}
+		}
+
+		public bool IsStatic
+		{
+			get { return (Attributes & MethodAttributes.Static) != 0; }
+		}
+
+		public bool IsVirtual
+		{
+			get { return (Attributes & MethodAttributes.Virtual) != 0; }
+		}
+
+		public bool IsAbstract
+		{
+			get { return (Attributes & MethodAttributes.Abstract) != 0; }
+		}
+
+		public bool IsFinal
+		{
+			get { return (Attributes & MethodAttributes.Final) != 0; }
+		}
+
+		public bool IsPublic
+		{
+			get { return (Attributes & MethodAttributes.MemberAccessMask) == MethodAttributes.Public; }
+		}
+
+		public bool IsFamily
+		{
+			get { return (Attributes & MethodAttributes.MemberAccessMask) == MethodAttributes.Family; }
+		}
+
+		public bool IsFamilyOrAssembly
+		{
+			get { return (Attributes & MethodAttributes.MemberAccessMask) == MethodAttributes.FamORAssem; }
+		}
+
+		public bool IsAssembly
+		{
+			get { return (Attributes & MethodAttributes.MemberAccessMask) == MethodAttributes.Assembly; }
+		}
+
+		public bool IsFamilyAndAssembly
+		{
+			get { return (Attributes & MethodAttributes.MemberAccessMask) == MethodAttributes.FamANDAssem; }
+		}
+
+		public bool IsPrivate
+		{
+			get { return (Attributes & MethodAttributes.MemberAccessMask) == MethodAttributes.Private; }
+		}
+
+		public bool IsSpecialName
+		{
+			get { return (Attributes & MethodAttributes.SpecialName) != 0; }
+		}
+
+		public bool IsHideBySig
+		{
+			get { return (Attributes & MethodAttributes.HideBySig) != 0; }
+		}
+
+		public virtual Type[] GetGenericArguments()
+		{
+			return Type.EmptyTypes;
+		}
+
+		public virtual bool IsGenericMethod
+		{
+			get { return false; }
+		}
+
+		public virtual bool IsGenericMethodDefinition
+		{
+			get { return false; }
+		}
+
+		public virtual bool ContainsGenericParameters
+		{
+			get { return IsGenericMethodDefinition; }
+		}
+
+		// This goes to the (uninstantiated) MethodInfo on the (uninstantiated) Type. For constructors
+		// it also has the effect of removing the ConstructorInfo wrapper and returning the underlying MethodInfo.
+		internal abstract MethodInfo GetMethodOnTypeDefinition();
+
+		internal abstract int ImportTo(Emit.ModuleBuilder module);
+
+		internal abstract MethodBase BindTypeParameters(Type type);
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/MethodBody.cs b/mcs/class/IKVM.Reflection/MethodBody.cs
new file mode 100644
index 0000000..7e14992
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/MethodBody.cs
@@ -0,0 +1,161 @@
+/*
+  Copyright (C) 2009 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Collections.Generic;
+using IKVM.Reflection.Reader;
+using System.IO;
+
+namespace IKVM.Reflection
+{
+	public sealed class MethodBody
+	{
+		private readonly IList<ExceptionHandlingClause> exceptionClauses;
+		private readonly IList<LocalVariableInfo> locals;
+		private readonly bool initLocals;
+		private readonly int maxStack;
+		private readonly int localVarSigTok;
+		private byte[] body;
+
+		internal MethodBody(ModuleReader module, int rva, IGenericContext context)
+		{
+			const byte CorILMethod_TinyFormat = 0x02;
+			const byte CorILMethod_FatFormat = 0x03;
+			const byte CorILMethod_MoreSects = 0x08;
+			const byte CorILMethod_InitLocals = 0x10;
+			const byte CorILMethod_Sect_EHTable = 0x01;
+			const byte CorILMethod_Sect_FatFormat = 0x40;
+			const byte CorILMethod_Sect_MoreSects = 0x80;
+
+			List<ExceptionHandlingClause> exceptionClauses = new List<ExceptionHandlingClause>();
+			List<LocalVariableInfo> locals = new List<LocalVariableInfo>();
+			module.SeekRVA(rva);
+			BinaryReader br = new BinaryReader(module.stream);
+			byte b = br.ReadByte();
+			if ((b & 3) == CorILMethod_TinyFormat)
+			{
+				initLocals = true;
+				body = br.ReadBytes(b >> 2);
+			}
+			else if ((b & 3) == CorILMethod_FatFormat)
+			{
+				initLocals = (b & CorILMethod_InitLocals) != 0;
+				short flagsAndSize = (short)(b | (br.ReadByte() << 8));
+				if ((flagsAndSize >> 12) != 3)
+				{
+					throw new BadImageFormatException("Fat format method header size should be 3");
+				}
+				maxStack = br.ReadUInt16();
+				int codeLength = br.ReadInt32();
+				localVarSigTok = br.ReadInt32();
+				body = br.ReadBytes(codeLength);
+				if ((b & CorILMethod_MoreSects) != 0)
+				{
+					module.stream.Position = (module.stream.Position + 3) & ~3;
+					int hdr = br.ReadInt32();
+					if ((hdr & CorILMethod_Sect_MoreSects) != 0 || (hdr & CorILMethod_Sect_EHTable) == 0)
+					{
+						throw new NotImplementedException();
+					}
+					else if ((hdr & CorILMethod_Sect_FatFormat) != 0)
+					{
+						int count = ComputeExceptionCount((hdr >> 8) & 0xFFFFFF, 24);
+						for (int i = 0; i < count; i++)
+						{
+							int flags = br.ReadInt32();
+							int tryOffset = br.ReadInt32();
+							int tryLength = br.ReadInt32();
+							int handlerOffset = br.ReadInt32();
+							int handlerLength = br.ReadInt32();
+							int classTokenOrFilterOffset = br.ReadInt32();
+							exceptionClauses.Add(new ExceptionHandlingClause(module, flags, tryOffset, tryLength, handlerOffset, handlerLength, classTokenOrFilterOffset, context));
+						}
+					}
+					else
+					{
+						int count = ComputeExceptionCount((hdr >> 8) & 0xFF, 12);
+						for (int i = 0; i < count; i++)
+						{
+							int flags = br.ReadUInt16();
+							int tryOffset = br.ReadUInt16();
+							int tryLength = br.ReadByte();
+							int handlerOffset = br.ReadUInt16();
+							int handlerLength = br.ReadByte();
+							int classTokenOrFilterOffset = br.ReadInt32();
+							exceptionClauses.Add(new ExceptionHandlingClause(module, flags, tryOffset, tryLength, handlerOffset, handlerLength, classTokenOrFilterOffset, context));
+						}
+					}
+				}
+				if (localVarSigTok != 0)
+				{
+					ByteReader sig = module.ResolveSignature(localVarSigTok);
+					Signature.ReadLocalVarSig(module, sig, context, locals);
+				}
+			}
+			else
+			{
+				throw new BadImageFormatException();
+			}
+			this.exceptionClauses = exceptionClauses.AsReadOnly();
+			this.locals = locals.AsReadOnly();
+		}
+
+		private static int ComputeExceptionCount(int size, int itemLength)
+		{
+			// LAMESPEC according to the spec, the count should be calculated as "(size - 4) / itemLength",
+			// FXBUG but to workaround a VB compiler bug that specifies the size incorrectly,
+			// we do a truncating division instead.
+			return size / itemLength;
+		}
+
+		public IList<ExceptionHandlingClause> ExceptionHandlingClauses
+		{
+			get { return exceptionClauses; }
+		}
+
+		public bool InitLocals
+		{
+			get { return initLocals; }
+		}
+
+		public IList<LocalVariableInfo> LocalVariables
+		{
+			get { return locals; }
+		}
+
+		public byte[] GetILAsByteArray()
+		{
+			return body;
+		}
+
+		public int LocalSignatureMetadataToken
+		{
+			get { return localVarSigTok; }
+		}
+
+		public int MaxStackSize
+		{
+			get { return maxStack; }
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/MethodImplMap.cs b/mcs/class/IKVM.Reflection/MethodImplMap.cs
new file mode 100644
index 0000000..bab829f
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/MethodImplMap.cs
@@ -0,0 +1,36 @@
+/*
+  Copyright (C) 2009 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace IKVM.Reflection
+{
+	public struct __MethodImplMap
+	{
+		public Type TargetType;
+		public MethodInfo[] MethodBodies;
+		public MethodInfo[][] MethodDeclarations;
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/MethodInfo.cs b/mcs/class/IKVM.Reflection/MethodInfo.cs
new file mode 100644
index 0000000..6d8e997
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/MethodInfo.cs
@@ -0,0 +1,146 @@
+/*
+  Copyright (C) 2009 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Text;
+
+namespace IKVM.Reflection
+{
+	public abstract class MethodInfo : MethodBase, IGenericContext, IGenericBinder
+	{
+		public sealed override MemberTypes MemberType
+		{
+			get { return MemberTypes.Method; }
+		}
+
+		public abstract Type ReturnType { get; }
+		public abstract ParameterInfo ReturnParameter { get; }
+
+		public virtual MethodInfo MakeGenericMethod(params Type[] typeArguments)
+		{
+			throw new NotSupportedException(this.GetType().FullName);
+		}
+
+		public virtual MethodInfo GetGenericMethodDefinition()
+		{
+			throw new NotSupportedException(this.GetType().FullName);
+		}
+
+		public override string ToString()
+		{
+			StringBuilder sb = new StringBuilder();
+			sb.Append(this.ReturnType.Name).Append(' ').Append(this.Name);
+			string sep;
+			if (this.IsGenericMethod)
+			{
+				sb.Append('[');
+				sep = "";
+				foreach (Type arg in GetGenericArguments())
+				{
+					sb.Append(sep).Append(arg);
+					sep = ", ";
+				}
+				sb.Append(']');
+			}
+			sb.Append('(');
+			sep = "";
+			foreach (ParameterInfo arg in GetParameters())
+			{
+				sb.Append(sep).Append(arg.ParameterType);
+				sep = ", ";
+			}
+			sb.Append(')');
+			return sb.ToString();
+		}
+
+		internal bool IsNewSlot
+		{
+			get { return (this.Attributes & MethodAttributes.NewSlot) != 0; }
+		}
+
+		public MethodInfo GetBaseDefinition()
+		{
+			MethodInfo match = this;
+			if (match.IsVirtual)
+			{
+				for (Type type = this.DeclaringType.BaseType; type != null && !match.IsNewSlot; type = type.BaseType)
+				{
+					MethodInfo method = type.FindMethod(this.Name, this.MethodSignature) as MethodInfo;
+					if (method != null && method.IsVirtual)
+					{
+						match = method;
+					}
+				}
+			}
+			return match;
+		}
+
+		Type IGenericContext.GetGenericTypeArgument(int index)
+		{
+			return this.DeclaringType.GetGenericTypeArgument(index);
+		}
+
+		Type IGenericContext.GetGenericMethodArgument(int index)
+		{
+			return GetGenericMethodArgument(index);
+		}
+
+		internal virtual Type GetGenericMethodArgument(int index)
+		{
+			throw new InvalidOperationException();
+		}
+
+		internal virtual int GetGenericMethodArgumentCount()
+		{
+			throw new InvalidOperationException();
+		}
+
+		internal override MethodInfo GetMethodOnTypeDefinition()
+		{
+			return this;
+		}
+
+		Type IGenericBinder.BindTypeParameter(Type type)
+		{
+			return this.DeclaringType.GetGenericTypeArgument(type.GenericParameterPosition);
+		}
+
+		Type IGenericBinder.BindMethodParameter(Type type)
+		{
+			return GetGenericMethodArgument(type.GenericParameterPosition);
+		}
+
+		internal override MethodBase BindTypeParameters(Type type)
+		{
+			return new GenericMethodInstance(this.DeclaringType.BindTypeParameters(type), this, null);
+		}
+
+		// This method is used by ILGenerator and exists to allow ArrayMethod to override it,
+		// because ArrayMethod doesn't have a working MethodAttributes property, so it needs
+		// to base the result of this on the CallingConvention.
+		internal virtual bool HasThis
+		{
+			get { return !IsStatic; }
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/MethodSignature.cs b/mcs/class/IKVM.Reflection/MethodSignature.cs
new file mode 100644
index 0000000..8db04bc
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/MethodSignature.cs
@@ -0,0 +1,492 @@
+/*
+  Copyright (C) 2009-2010 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using IKVM.Reflection.Reader;
+using IKVM.Reflection.Writer;
+using IKVM.Reflection.Emit;
+
+namespace IKVM.Reflection
+{
+	sealed class MethodSignature : Signature
+	{
+		private readonly Type returnType;
+		private readonly Type[] parameterTypes;
+		private readonly Type[][][] modifiers;	// see PackedCustomModifiers
+		private readonly CallingConventions callingConvention;
+		private readonly int genericParamCount;
+
+		private MethodSignature(Type returnType, Type[] parameterTypes, Type[][][] modifiers, CallingConventions callingConvention, int genericParamCount)
+		{
+			this.returnType = returnType;
+			this.parameterTypes = parameterTypes;
+			this.modifiers = modifiers;
+			this.callingConvention = callingConvention;
+			this.genericParamCount = genericParamCount;
+		}
+
+		public override bool Equals(object obj)
+		{
+			MethodSignature other = obj as MethodSignature;
+			return other != null
+				&& other.callingConvention == callingConvention
+				&& other.genericParamCount == genericParamCount
+				&& other.returnType.Equals(returnType)
+				&& Util.ArrayEquals(other.parameterTypes, parameterTypes)
+				&& Util.ArrayEquals(other.modifiers, modifiers);
+		}
+
+		public override int GetHashCode()
+		{
+			return genericParamCount ^ 77 * (int)callingConvention
+				^ 3 * returnType.GetHashCode()
+				^ Util.GetHashCode(parameterTypes) * 5
+				^ Util.GetHashCode(modifiers) * 55;
+		}
+
+		private sealed class UnboundGenericMethodContext : IGenericContext
+		{
+			private readonly IGenericContext original;
+
+			internal UnboundGenericMethodContext(IGenericContext original)
+			{
+				this.original = original;
+			}
+
+			public Type GetGenericTypeArgument(int index)
+			{
+				return original.GetGenericTypeArgument(index);
+			}
+
+			public Type GetGenericMethodArgument(int index)
+			{
+				return UnboundGenericMethodParameter.Make(index);
+			}
+		}
+
+		internal static MethodSignature ReadSig(ModuleReader module, ByteReader br, IGenericContext context)
+		{
+			CallingConventions callingConvention;
+			int genericParamCount;
+			Type returnType;
+			Type[] parameterTypes;
+			byte flags = br.ReadByte();
+			switch (flags & 7)
+			{
+				case DEFAULT:
+					callingConvention = CallingConventions.Standard;
+					break;
+				case VARARG:
+					callingConvention = CallingConventions.VarArgs;
+					break;
+				default:
+					throw new BadImageFormatException();
+			}
+			if ((flags & HASTHIS) != 0)
+			{
+				callingConvention |= CallingConventions.HasThis;
+			}
+			if ((flags & EXPLICITTHIS) != 0)
+			{
+				callingConvention |= CallingConventions.ExplicitThis;
+			}
+			genericParamCount = 0;
+			if ((flags & GENERIC) != 0)
+			{
+				genericParamCount = br.ReadCompressedInt();
+				context = new UnboundGenericMethodContext(context);
+			}
+			int paramCount = br.ReadCompressedInt();
+			Type[][][] modifiers = null;
+			Type[] optionalCustomModifiers;
+			Type[] requiredCustomModifiers;
+			ReadCustomModifiers(module, br, context, out requiredCustomModifiers, out optionalCustomModifiers);
+			returnType = ReadRetType(module, br, context);
+			parameterTypes = new Type[paramCount];
+			PackedCustomModifiers.SetModifiers(ref modifiers, 0, 0, optionalCustomModifiers, paramCount + 1);
+			PackedCustomModifiers.SetModifiers(ref modifiers, 0, 1, requiredCustomModifiers, paramCount + 1);
+			for (int i = 0; i < parameterTypes.Length; i++)
+			{
+				if ((callingConvention & CallingConventions.VarArgs) != 0 && br.PeekByte() == SENTINEL)
+				{
+					Array.Resize(ref parameterTypes, i);
+					if (modifiers != null)
+					{
+						Array.Resize(ref modifiers, i + 1);
+					}
+					break;
+				}
+				ReadCustomModifiers(module, br, context, out requiredCustomModifiers, out optionalCustomModifiers);
+				PackedCustomModifiers.SetModifiers(ref modifiers, i + 1, 0, optionalCustomModifiers, paramCount + 1);
+				PackedCustomModifiers.SetModifiers(ref modifiers, i + 1, 1, requiredCustomModifiers, paramCount + 1);
+				parameterTypes[i] = ReadParam(module, br, context);
+			}
+			return new MethodSignature(returnType, parameterTypes, modifiers, callingConvention, genericParamCount);
+		}
+
+		internal static __StandAloneMethodSig ReadStandAloneMethodSig(ModuleReader module, ByteReader br, IGenericContext context)
+		{
+			CallingConventions callingConvention = 0;
+			System.Runtime.InteropServices.CallingConvention unmanagedCallingConvention = 0;
+			bool unmanaged;
+			byte flags = br.ReadByte();
+			switch (flags & 7)
+			{
+				case DEFAULT:
+					callingConvention = CallingConventions.Standard;
+					unmanaged = false;
+					break;
+				case 0x01:	// C
+					unmanagedCallingConvention = System.Runtime.InteropServices.CallingConvention.Cdecl;
+					unmanaged = true;
+					break;
+				case 0x02:	// STDCALL
+					unmanagedCallingConvention = System.Runtime.InteropServices.CallingConvention.StdCall;
+					unmanaged = true;
+					break;
+				case 0x03:	// THISCALL
+					unmanagedCallingConvention = System.Runtime.InteropServices.CallingConvention.ThisCall;
+					unmanaged = true;
+					break;
+				case 0x04:	// FASTCALL
+					unmanagedCallingConvention = System.Runtime.InteropServices.CallingConvention.FastCall;
+					unmanaged = true;
+					break;
+				case VARARG:
+					callingConvention = CallingConventions.VarArgs;
+					unmanaged = false;
+					break;
+				default:
+					throw new BadImageFormatException();
+			}
+			if ((flags & HASTHIS) != 0)
+			{
+				callingConvention |= CallingConventions.HasThis;
+			}
+			if ((flags & EXPLICITTHIS) != 0)
+			{
+				callingConvention |= CallingConventions.ExplicitThis;
+			}
+			if ((flags & GENERIC) != 0)
+			{
+				throw new BadImageFormatException();
+			}
+			int paramCount = br.ReadCompressedInt();
+			SkipCustomModifiers(br);
+			Type returnType = ReadRetType(module, br, context);
+			List<Type> parameterTypes = new List<Type>();
+			List<Type> optionalParameterTypes = new List<Type>();
+			List<Type> curr = parameterTypes;
+			for (int i = 0; i < paramCount; i++)
+			{
+				if (br.PeekByte() == SENTINEL)
+				{
+					br.ReadByte();
+					curr = optionalParameterTypes;
+				}
+				SkipCustomModifiers(br);
+				curr.Add(ReadParam(module, br, context));
+			}
+			return new __StandAloneMethodSig(unmanaged, unmanagedCallingConvention, callingConvention, returnType, parameterTypes.ToArray(), optionalParameterTypes.ToArray());
+		}
+
+		internal int GetParameterCount()
+		{
+			return parameterTypes.Length;
+		}
+
+		internal Type GetParameterType(int index)
+		{
+			return parameterTypes[index];
+		}
+
+		internal Type GetReturnType(IGenericBinder binder)
+		{
+			return returnType.BindTypeParameters(binder);
+		}
+
+		internal Type[] GetReturnTypeOptionalCustomModifiers(IGenericBinder binder)
+		{
+			return BindTypeParameters(binder, modifiers, 0, 0);
+		}
+
+		internal Type[] GetReturnTypeRequiredCustomModifiers(IGenericBinder binder)
+		{
+			return BindTypeParameters(binder, modifiers, 0, 1);
+		}
+
+		internal Type GetParameterType(IGenericBinder binder, int index)
+		{
+			return parameterTypes[index].BindTypeParameters(binder);
+		}
+
+		internal Type[] GetParameterOptionalCustomModifiers(IGenericBinder binder, int index)
+		{
+			return BindTypeParameters(binder, modifiers, index + 1, 0);
+		}
+
+		internal Type[] GetParameterRequiredCustomModifiers(IGenericBinder binder, int index)
+		{
+			return BindTypeParameters(binder, modifiers, index + 1, 1);
+		}
+
+		internal CallingConventions CallingConvention
+		{
+			get { return callingConvention; }
+		}
+
+		private sealed class Binder : IGenericBinder
+		{
+			private readonly Type declaringType;
+			private readonly Type[] methodArgs;
+
+			internal Binder(Type declaringType, Type[] methodArgs)
+			{
+				this.declaringType = declaringType;
+				this.methodArgs = methodArgs;
+			}
+
+			public Type BindTypeParameter(Type type)
+			{
+				return declaringType.GetGenericTypeArgument(type.GenericParameterPosition);
+			}
+
+			public Type BindMethodParameter(Type type)
+			{
+				if (methodArgs == null)
+				{
+					return type;
+				}
+				return methodArgs[type.GenericParameterPosition];
+			}
+		}
+
+		internal MethodSignature Bind(Type type, Type[] methodArgs)
+		{
+			Binder binder = new Binder(type, methodArgs);
+			return new MethodSignature(returnType.BindTypeParameters(binder),
+				BindTypeParameters(binder, parameterTypes),
+				BindTypeParameters(binder, modifiers),
+				callingConvention, genericParamCount);
+		}
+
+		private sealed class Unbinder : IGenericBinder
+		{
+			internal static readonly Unbinder Instance = new Unbinder();
+
+			private Unbinder()
+			{
+			}
+
+			public Type BindTypeParameter(Type type)
+			{
+				return type;
+			}
+
+			public Type BindMethodParameter(Type type)
+			{
+				return UnboundGenericMethodParameter.Make(type.GenericParameterPosition);
+			}
+		}
+
+		internal static MethodSignature MakeFromBuilder(Type returnType, Type[] parameterTypes, Type[][][] modifiers, CallingConventions callingConvention, int genericParamCount)
+		{
+			if (genericParamCount > 0)
+			{
+				returnType = returnType.BindTypeParameters(Unbinder.Instance);
+				parameterTypes = BindTypeParameters(Unbinder.Instance, parameterTypes);
+				modifiers = BindTypeParameters(Unbinder.Instance, modifiers);
+			}
+			return new MethodSignature(returnType, parameterTypes, modifiers, callingConvention, genericParamCount);
+		}
+
+		internal bool MatchParameterTypes(Type[] types)
+		{
+			if (types == parameterTypes)
+			{
+				return true;
+			}
+			if (types == null)
+			{
+				return parameterTypes.Length == 0;
+			}
+			if (parameterTypes == null)
+			{
+				return types.Length == 0;
+			}
+			if (types.Length == parameterTypes.Length)
+			{
+				for (int i = 0; i < types.Length; i++)
+				{
+					if (!Util.TypeEquals(types[i], parameterTypes[i]))
+					{
+						return false;
+					}
+				}
+				return true;
+			}
+			return false;
+		}
+
+		internal override void WriteSig(ModuleBuilder module, ByteBuffer bb)
+		{
+			WriteSigImpl(module, bb, parameterTypes.Length);
+		}
+
+		internal void WriteMethodRefSig(ModuleBuilder module, ByteBuffer bb, Type[] optionalParameterTypes)
+		{
+			WriteSigImpl(module, bb, parameterTypes.Length + optionalParameterTypes.Length);
+			if (optionalParameterTypes.Length > 0)
+			{
+				bb.Write(SENTINEL);
+				foreach (Type type in optionalParameterTypes)
+				{
+					WriteType(module, bb, type);
+				}
+			}
+		}
+
+		private void WriteSigImpl(ModuleBuilder module, ByteBuffer bb, int parameterCount)
+		{
+			byte first;
+			if ((callingConvention & CallingConventions.Any) == CallingConventions.VarArgs)
+			{
+				Debug.Assert(genericParamCount == 0);
+				first = VARARG;
+			}
+			else if (genericParamCount > 0)
+			{
+				first = GENERIC;
+			}
+			else
+			{
+				first = DEFAULT;
+			}
+			if ((callingConvention & CallingConventions.HasThis) != 0)
+			{
+				first |= HASTHIS;
+			}
+			if ((callingConvention & CallingConventions.ExplicitThis) != 0)
+			{
+				first |= EXPLICITTHIS;
+			}
+			bb.Write(first);
+			if (genericParamCount > 0)
+			{
+				bb.WriteCompressedInt(genericParamCount);
+			}
+			bb.WriteCompressedInt(parameterCount);
+			// RetType
+			if (modifiers != null && modifiers[0] != null)
+			{
+				WriteCustomModifiers(module, bb, ELEMENT_TYPE_CMOD_OPT, modifiers[0][0]);
+				WriteCustomModifiers(module, bb, ELEMENT_TYPE_CMOD_REQD, modifiers[0][1]);
+			}
+			WriteType(module, bb, returnType);
+			// Param
+			for (int i = 0; i < parameterTypes.Length; i++)
+			{
+				if (modifiers != null && modifiers[i + 1] != null)
+				{
+					WriteCustomModifiers(module, bb, ELEMENT_TYPE_CMOD_OPT, modifiers[i + 1][0]);
+					WriteCustomModifiers(module, bb, ELEMENT_TYPE_CMOD_REQD, modifiers[i + 1][1]);
+				}
+				WriteType(module, bb, parameterTypes[i]);
+			}
+		}
+	}
+
+	static class PackedCustomModifiers
+	{
+		// modifiers are packed in a very specific way (and required to be so, otherwise equality checks will fail)
+		// For modifiers[x][y][z]:
+		//  x = parameter index, 0 = return type, 1 = first parameters, ...
+		//  y = 0 = optional custom modifiers, 1 = required custom modifiers
+		//  z = the custom modifiers
+		// At any level the reference can be null (and *must* be null, if there are no modifiers below that level).
+		// Empty arrays are not allowed at any level.
+
+		// this can be used to "add" elements to the modifiers array (and the elements are assumed to already be in normalized form)
+		internal static void SetModifiers(ref Type[][][] modifiers, int index, int optOrReq, Type[] add, int count)
+		{
+			if (add != null)
+			{
+				if (modifiers == null)
+				{
+					modifiers = new Type[count][][];
+				}
+				if (modifiers[index] == null)
+				{
+					modifiers[index] = new Type[2][];
+				}
+				modifiers[index][optOrReq] = add;
+			}
+		}
+
+		// this method make a copy of the incoming arrays (where necessary) and returns a normalized modifiers array
+		internal static Type[][][] CreateFromExternal(Type[] returnOptional, Type[] returnRequired, Type[][] parameterOptional, Type[][] parameterRequired, int parameterCount)
+		{
+			Type[][][] modifiers = null;
+			SetModifiers(ref modifiers, 0, 0, NormalizeAndCopy(returnOptional), parameterCount + 1);
+			SetModifiers(ref modifiers, 0, 1, NormalizeAndCopy(returnRequired), parameterCount + 1);
+			for (int i = 0; i < parameterCount; i++)
+			{
+				SetModifiers(ref modifiers, i + 1, 0, NormalizeAndCopy(parameterOptional, i), parameterCount + 1);
+				SetModifiers(ref modifiers, i + 1, 1, NormalizeAndCopy(parameterRequired, i), parameterCount + 1);
+			}
+			return modifiers;
+		}
+
+		private static Type[] NormalizeAndCopy(Type[] array)
+		{
+			if (array == null || array.Length == 0)
+			{
+				return null;
+			}
+			Type[] copy = null;
+			for (int i = 0; i < array.Length; i++)
+			{
+				if (array[i] != null)
+				{
+					if (copy == null)
+					{
+						copy = new Type[array.Length];
+					}
+					copy[i] = array[i];
+				}
+			}
+			return copy;
+		}
+
+		private static Type[] NormalizeAndCopy(Type[][] array, int index)
+		{
+			if (array == null || array.Length == 0)
+			{
+				return null;
+			}
+			return NormalizeAndCopy(array[index]);
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Module.cs b/mcs/class/IKVM.Reflection/Module.cs
new file mode 100644
index 0000000..a481ae2
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Module.cs
@@ -0,0 +1,462 @@
+/*
+  Copyright (C) 2009-2010 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Collections.Generic;
+using IKVM.Reflection.Metadata;
+using IKVM.Reflection.Reader;
+
+namespace IKVM.Reflection
+{
+	public sealed class RawModule : IDisposable
+	{
+		private readonly ModuleReader module;
+		private readonly bool isManifestModule;
+		private bool imported;
+
+		internal RawModule(ModuleReader module)
+		{
+			this.module = module;
+			this.isManifestModule = module.Assembly != null;
+		}
+
+		public string Location
+		{
+			get { return module.FullyQualifiedName; }
+		}
+
+		public bool IsManifestModule
+		{
+			get { return isManifestModule; }
+		}
+
+		private void CheckManifestModule()
+		{
+			if (!IsManifestModule)
+			{
+				throw new BadImageFormatException("Module does not contain a manifest");
+			}
+		}
+
+		public AssemblyName GetAssemblyName()
+		{
+			CheckManifestModule();
+			return module.Assembly.GetName();
+		}
+
+		public AssemblyName[] GetReferencedAssemblies()
+		{
+			return module.__GetReferencedAssemblies();
+		}
+
+		public void Dispose()
+		{
+			if (!imported)
+			{
+				module.stream.Dispose();
+			}
+		}
+
+		internal Assembly ToAssembly()
+		{
+			if (imported)
+			{
+				throw new InvalidOperationException();
+			}
+			imported = true;
+			return module.Assembly;
+		}
+
+		internal Module ToModule(Assembly assembly)
+		{
+			if (module.Assembly != null)
+			{
+				throw new InvalidOperationException();
+			}
+			imported = true;
+			module.SetAssembly(assembly);
+			return module;
+		}
+	}
+
+	public abstract class Module : ICustomAttributeProvider
+	{
+		internal readonly Universe universe;
+		internal readonly ModuleTable ModuleTable = new ModuleTable();
+		internal readonly TypeRefTable TypeRef = new TypeRefTable();
+		internal readonly TypeDefTable TypeDef = new TypeDefTable();
+		internal readonly FieldTable Field = new FieldTable();
+		internal readonly MemberRefTable MemberRef = new MemberRefTable();
+		internal readonly ConstantTable Constant = new ConstantTable();
+		internal readonly CustomAttributeTable CustomAttribute = new CustomAttributeTable();
+		internal readonly FieldMarshalTable FieldMarshal = new FieldMarshalTable();
+		internal readonly DeclSecurityTable DeclSecurity = new DeclSecurityTable();
+		internal readonly ClassLayoutTable ClassLayout = new ClassLayoutTable();
+		internal readonly FieldLayoutTable FieldLayout = new FieldLayoutTable();
+		internal readonly ParamTable Param = new ParamTable();
+		internal readonly InterfaceImplTable InterfaceImpl = new InterfaceImplTable();
+		internal readonly StandAloneSigTable StandAloneSig = new StandAloneSigTable();
+		internal readonly EventMapTable EventMap = new EventMapTable();
+		internal readonly EventTable Event = new EventTable();
+		internal readonly PropertyMapTable PropertyMap = new PropertyMapTable();
+		internal readonly PropertyTable Property = new PropertyTable();
+		internal readonly MethodSemanticsTable MethodSemantics = new MethodSemanticsTable();
+		internal readonly MethodImplTable MethodImpl = new MethodImplTable();
+		internal readonly ModuleRefTable ModuleRef = new ModuleRefTable();
+		internal readonly TypeSpecTable TypeSpec = new TypeSpecTable();
+		internal readonly ImplMapTable ImplMap = new ImplMapTable();
+		internal readonly FieldRVATable FieldRVA = new FieldRVATable();
+		internal readonly AssemblyTable AssemblyTable = new AssemblyTable();
+		internal readonly AssemblyRefTable AssemblyRef = new AssemblyRefTable();
+		internal readonly MethodDefTable MethodDef = new MethodDefTable();
+		internal readonly NestedClassTable NestedClass = new NestedClassTable();
+		internal readonly FileTable File = new FileTable();
+		internal readonly ExportedTypeTable ExportedType = new ExportedTypeTable();
+		internal readonly ManifestResourceTable ManifestResource = new ManifestResourceTable();
+		internal readonly GenericParamTable GenericParam = new GenericParamTable();
+		internal readonly MethodSpecTable MethodSpec = new MethodSpecTable();
+		internal readonly GenericParamConstraintTable GenericParamConstraint = new GenericParamConstraintTable();
+
+		internal Module(Universe universe)
+		{
+			this.universe = universe;
+		}
+
+		internal Table[] GetTables()
+		{
+			Table[] tables = new Table[64];
+			tables[ModuleTable.Index] = ModuleTable;
+			tables[TypeRefTable.Index] = TypeRef;
+			tables[TypeDefTable.Index] = TypeDef;
+			tables[FieldTable.Index] = Field;
+			tables[MemberRefTable.Index] = MemberRef;
+			tables[ConstantTable.Index] = Constant;
+			tables[CustomAttributeTable.Index] = CustomAttribute;
+			tables[FieldMarshalTable.Index] = FieldMarshal;
+			tables[DeclSecurityTable.Index] = DeclSecurity;
+			tables[ClassLayoutTable.Index] = ClassLayout;
+			tables[FieldLayoutTable.Index] = FieldLayout;
+			tables[ParamTable.Index] = Param;
+			tables[InterfaceImplTable.Index] = InterfaceImpl;
+			tables[StandAloneSigTable.Index] = StandAloneSig;
+			tables[EventMapTable.Index] = EventMap;
+			tables[EventTable.Index] = Event;
+			tables[PropertyMapTable.Index] = PropertyMap;
+			tables[PropertyTable.Index] = Property;
+			tables[MethodSemanticsTable.Index] = MethodSemantics;
+			tables[MethodImplTable.Index] = MethodImpl;
+			tables[ModuleRefTable.Index] = ModuleRef;
+			tables[TypeSpecTable.Index] = TypeSpec;
+			tables[ImplMapTable.Index] = ImplMap;
+			tables[FieldRVATable.Index] = FieldRVA;
+			tables[AssemblyTable.Index] = AssemblyTable;
+			tables[AssemblyRefTable.Index] = AssemblyRef;
+			tables[MethodDefTable.Index] = MethodDef;
+			tables[NestedClassTable.Index] = NestedClass;
+			tables[FileTable.Index] = File;
+			tables[ExportedTypeTable.Index] = ExportedType;
+			tables[ManifestResourceTable.Index] = ManifestResource;
+			tables[GenericParamTable.Index] = GenericParam;
+			tables[MethodSpecTable.Index] = MethodSpec;
+			tables[GenericParamConstraintTable.Index] = GenericParamConstraint;
+			return tables;
+		}
+
+		public virtual void __GetDataDirectoryEntry(int index, out int rva, out int length)
+		{
+			throw new NotSupportedException();
+		}
+
+		public virtual long __RelativeVirtualAddressToFileOffset(int rva)
+		{
+			throw new NotSupportedException();
+		}
+
+		public virtual void GetPEKind(out PortableExecutableKinds peKind, out ImageFileMachine machine)
+		{
+			throw new NotSupportedException();
+		}
+
+		public virtual int __Subsystem
+		{
+			get { throw new NotSupportedException(); }
+		}
+
+		public FieldInfo GetField(string name)
+		{
+			return IsResource() ? null : GetModuleType().GetField(name);
+		}
+
+		public FieldInfo GetField(string name, BindingFlags bindingFlags)
+		{
+			return IsResource() ? null : GetModuleType().GetField(name, bindingFlags);
+		}
+
+		public FieldInfo[] GetFields()
+		{
+			return IsResource() ? Empty<FieldInfo>.Array : GetModuleType().GetFields();
+		}
+
+		public FieldInfo[] GetFields(BindingFlags bindingFlags)
+		{
+			return IsResource() ? Empty<FieldInfo>.Array : GetModuleType().GetFields(bindingFlags);
+		}
+
+		public MethodInfo GetMethod(string name)
+		{
+			return IsResource() ? null : GetModuleType().GetMethod(name);
+		}
+
+		public MethodInfo GetMethod(string name, Type[] types)
+		{
+			return IsResource() ? null : GetModuleType().GetMethod(name, types);
+		}
+
+		public MethodInfo GetMethod(string name, BindingFlags bindingAttr, Binder binder, CallingConventions callConv, Type[] types, ParameterModifier[] modifiers)
+		{
+			return IsResource() ? null : GetModuleType().GetMethod(name, bindingAttr, binder, callConv, types, modifiers);
+		}
+
+		public MethodInfo[] GetMethods()
+		{
+			return IsResource() ? Empty<MethodInfo>.Array : GetModuleType().GetMethods();
+		}
+
+		public MethodInfo[] GetMethods(BindingFlags bindingFlags)
+		{
+			return IsResource() ? Empty<MethodInfo>.Array : GetModuleType().GetMethods(bindingFlags);
+		}
+
+		public ConstructorInfo __ModuleInitializer
+		{
+			get { return IsResource() ? null : GetModuleType().TypeInitializer; }
+		}
+
+		public byte[] ResolveSignature(int metadataToken)
+		{
+			ModuleReader rdr = this as ModuleReader;
+			if (rdr != null)
+			{
+				ByteReader br = rdr.ResolveSignature(metadataToken);
+				return br.ReadBytes(br.Length);
+			}
+			throw new NotSupportedException();
+		}
+
+		public virtual __StandAloneMethodSig __ResolveStandAloneMethodSig(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)
+		{
+			throw new NotSupportedException();
+		}
+
+		public int MetadataToken
+		{
+			get { return IsResource() ? 0 : 1; }
+		}
+
+		public abstract int MDStreamVersion { get ;}
+		public abstract Assembly Assembly { get; }
+		public abstract string FullyQualifiedName { get; }
+		public abstract string Name { get; }
+		public abstract Guid ModuleVersionId { get; }
+		public abstract Type ResolveType(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments);
+		public abstract MethodBase ResolveMethod(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments);
+		public abstract FieldInfo ResolveField(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments);
+		public abstract MemberInfo ResolveMember(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments);
+
+		public abstract string ResolveString(int metadataToken);
+		public abstract Type[] __ResolveOptionalParameterTypes(int metadataToken);
+		public abstract string ScopeName { get; }
+
+		internal abstract Type GetTypeImpl(string typeName);
+		internal abstract void GetTypesImpl(List<Type> list);
+
+		public Type GetType(string className)
+		{
+			return GetType(className, false, false);
+		}
+
+		public Type GetType(string className, bool ignoreCase)
+		{
+			return GetType(className, false, ignoreCase);
+		}
+
+		public Type GetType(string className, bool throwOnError, bool ignoreCase)
+		{
+			if (ignoreCase)
+			{
+				throw new NotImplementedException();
+			}
+			TypeNameParser parser = TypeNameParser.Parse(className, throwOnError);
+			if (parser.Error)
+			{
+				return null;
+			}
+			if (parser.AssemblyName != null)
+			{
+				if (throwOnError)
+				{
+					throw new ArgumentException("Type names passed to Module.GetType() must not specify an assembly.");
+				}
+				else
+				{
+					return null;
+				}
+			}
+			return parser.Expand(GetTypeImpl(parser.FirstNamePart), this.Assembly, throwOnError, className);
+		}
+
+		public Type[] GetTypes()
+		{
+			List<Type> list = new List<Type>();
+			GetTypesImpl(list);
+			return list.ToArray();
+		}
+
+		public Type[] FindTypes(TypeFilter filter, object filterCriteria)
+		{
+			List<Type> list = new List<Type>();
+			foreach (Type type in GetTypes())
+			{
+				if (filter(type, filterCriteria))
+				{
+					list.Add(type);
+				}
+			}
+			return list.ToArray();
+		}
+
+		public virtual bool IsResource()
+		{
+			return false;
+		}
+
+		public Type ResolveType(int metadataToken)
+		{
+			return ResolveType(metadataToken, null, null);
+		}
+
+		public MethodBase ResolveMethod(int metadataToken)
+		{
+			return ResolveMethod(metadataToken, null, null);
+		}
+
+		public FieldInfo ResolveField(int metadataToken)
+		{
+			return ResolveField(metadataToken, null, null);
+		}
+
+		public MemberInfo ResolveMember(int metadataToken)
+		{
+			return ResolveMember(metadataToken, null, null);
+		}
+
+		public bool IsDefined(Type attributeType, bool inherit)
+		{
+			return CustomAttributeData.__GetCustomAttributes(this, attributeType, inherit).Count != 0;
+		}
+
+		public IList<CustomAttributeData> __GetCustomAttributes(Type attributeType, bool inherit)
+		{
+			return CustomAttributeData.__GetCustomAttributes(this, attributeType, inherit);
+		}
+
+		public virtual IList<CustomAttributeData> __GetPlaceholderAssemblyCustomAttributes(bool multiple, bool security)
+		{
+			return Empty<CustomAttributeData>.Array;
+		}
+
+		public abstract AssemblyName[] __GetReferencedAssemblies();
+
+		internal Type CanonicalizeType(Type type)
+		{
+			Type canon;
+			if (!universe.canonicalizedTypes.TryGetValue(type, out canon))
+			{
+				canon = type;
+				universe.canonicalizedTypes.Add(canon, canon);
+			}
+			return canon;
+		}
+
+		internal abstract Type GetModuleType();
+
+		internal abstract ByteReader GetBlob(int blobIndex);
+
+		internal IList<CustomAttributeData> GetCustomAttributesData(Type attributeType)
+		{
+			return GetCustomAttributes(0x00000001, attributeType);
+		}
+
+		internal List<CustomAttributeData> GetCustomAttributes(int metadataToken, Type attributeType)
+		{
+			List<CustomAttributeData> list = new List<CustomAttributeData>();
+			// TODO use binary search?
+			for (int i = 0; i < CustomAttribute.records.Length; i++)
+			{
+				if (CustomAttribute.records[i].Parent == metadataToken)
+				{
+					if (attributeType == null)
+					{
+						list.Add(new CustomAttributeData(this, i));
+					}
+					else
+					{
+						ConstructorInfo constructor = (ConstructorInfo)ResolveMethod(CustomAttribute.records[i].Type);
+						if (attributeType.IsAssignableFrom(constructor.DeclaringType))
+						{
+							list.Add(new CustomAttributeData(this.Assembly, constructor, GetBlob(CustomAttribute.records[i].Value)));
+						}
+					}
+				}
+			}
+			return list;
+		}
+
+		internal IList<CustomAttributeData> GetDeclarativeSecurity(int metadataToken)
+		{
+			List<CustomAttributeData> list = new List<CustomAttributeData>();
+			// TODO use binary search?
+			for (int i = 0; i < DeclSecurity.records.Length; i++)
+			{
+				if (DeclSecurity.records[i].Parent == metadataToken)
+				{
+					int action = DeclSecurity.records[i].Action;
+					int permissionSet = DeclSecurity.records[i].PermissionSet;
+					CustomAttributeData.ReadDeclarativeSecurity(this.Assembly, list, action, GetBlob(permissionSet));
+				}
+			}
+			return list;
+		}
+
+		internal virtual void Dispose()
+		{
+		}
+
+		internal virtual void ExportTypes(int fileToken, IKVM.Reflection.Emit.ModuleBuilder manifestModule)
+		{
+		}
+	}
+
+	public delegate bool TypeFilter(Type m, object filterCriteria);
+	public delegate bool MemberFilter(MemberInfo m, object filterCriteria);
+}
diff --git a/mcs/class/IKVM.Reflection/ParameterInfo.cs b/mcs/class/IKVM.Reflection/ParameterInfo.cs
new file mode 100644
index 0000000..6bc2fff
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/ParameterInfo.cs
@@ -0,0 +1,102 @@
+/*
+  Copyright (C) 2009 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System.Collections.Generic;
+
+namespace IKVM.Reflection
+{
+	public abstract class ParameterInfo : ICustomAttributeProvider
+	{
+		public sealed override bool Equals(object obj)
+		{
+			ParameterInfo other = obj as ParameterInfo;
+			return other != null && other.Member == this.Member && other.Position == this.Position;
+		}
+
+		public sealed override int GetHashCode()
+		{
+			return this.Member.GetHashCode() * 1777 + this.Position;
+		}
+
+		public static bool operator ==(ParameterInfo p1, ParameterInfo p2)
+		{
+			return ReferenceEquals(p1, p2) || (!ReferenceEquals(p1, null) && p1.Equals(p2));
+		}
+
+		public static bool operator !=(ParameterInfo p1, ParameterInfo p2)
+		{
+			return !(p1 == p2);
+		}
+
+		public abstract string Name { get; }
+		public abstract Type ParameterType { get; }
+		public abstract ParameterAttributes Attributes { get; }
+		public abstract int Position { get; }
+		public abstract object RawDefaultValue { get; }
+		public abstract Type[] GetOptionalCustomModifiers();
+		public abstract Type[] GetRequiredCustomModifiers();
+		public abstract MemberInfo Member { get; }
+		public abstract int MetadataToken { get; }
+		internal abstract Module Module { get; }
+
+		public bool IsIn
+		{
+			get { return (Attributes & ParameterAttributes.In) != 0; }
+		}
+
+		public bool IsOut
+		{
+			get { return (Attributes & ParameterAttributes.Out) != 0; }
+		}
+
+		public bool IsLcid
+		{
+			get { return (Attributes & ParameterAttributes.Lcid) != 0; }
+		}
+
+		public bool IsRetval
+		{
+			get { return (Attributes & ParameterAttributes.Retval) != 0; }
+		}
+
+		public bool IsOptional
+		{
+			get { return (Attributes & ParameterAttributes.Optional) != 0; }
+		}
+
+		public bool IsDefined(Type attributeType, bool inherit)
+		{
+			return CustomAttributeData.__GetCustomAttributes(this, attributeType, inherit).Count != 0;
+		}
+
+		public IList<CustomAttributeData> __GetCustomAttributes(Type attributeType, bool inherit)
+		{
+			return CustomAttributeData.__GetCustomAttributes(this, attributeType, inherit);
+		}
+
+		internal virtual IList<CustomAttributeData> GetCustomAttributesData(Type attributeType)
+		{
+			return this.Module.GetCustomAttributes(this.MetadataToken, attributeType);
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/ParameterModifier.cs b/mcs/class/IKVM.Reflection/ParameterModifier.cs
new file mode 100644
index 0000000..605cca4
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/ParameterModifier.cs
@@ -0,0 +1,45 @@
+/*
+  Copyright (C) 2009 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace IKVM.Reflection
+{
+	public struct ParameterModifier
+	{
+		private readonly bool[] values;
+
+		public ParameterModifier(int parameterCount)
+		{
+			values = new bool[parameterCount];
+		}
+
+		public bool this[int index]
+		{
+			get { return values[index]; }
+			set { values[index] = value; }
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Properties/AssemblyInfo.cs b/mcs/class/IKVM.Reflection/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..6422e19
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Properties/AssemblyInfo.cs
@@ -0,0 +1,28 @@
+/*
+  Copyright (C) 2008 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle("IKVM.NET Reflection")]
+[assembly: AssemblyDescription("Managed (partial) Reflection implementation for use by ikvmc")]
diff --git a/mcs/class/IKVM.Reflection/PropertyInfo.cs b/mcs/class/IKVM.Reflection/PropertyInfo.cs
new file mode 100644
index 0000000..de991aa
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/PropertyInfo.cs
@@ -0,0 +1,158 @@
+/*
+  Copyright (C) 2009 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+
+namespace IKVM.Reflection
+{
+	public abstract class PropertyInfo : MemberInfo
+	{
+		public sealed override MemberTypes MemberType
+		{
+			get { return MemberTypes.Property; }
+		}
+
+		public abstract PropertyAttributes Attributes { get; }
+		public abstract bool CanRead { get; }
+		public abstract bool CanWrite { get; }
+		public abstract MethodInfo GetGetMethod(bool nonPublic);
+		public abstract MethodInfo GetSetMethod(bool nonPublic);
+		public abstract MethodInfo[] GetAccessors(bool nonPublic);
+		public abstract object GetRawConstantValue();
+		internal abstract bool IsPublic { get; }
+		internal abstract bool IsStatic { get; }
+		internal abstract PropertySignature PropertySignature { get; }
+
+		private sealed class ParameterInfoImpl : ParameterInfo
+		{
+			private readonly PropertyInfo property;
+			private readonly int parameter;
+
+			internal ParameterInfoImpl(PropertyInfo property, int parameter)
+			{
+				this.property = property;
+				this.parameter = parameter;
+			}
+
+			public override string Name
+			{
+				get { return null; }
+			}
+
+			public override Type ParameterType
+			{
+				get { return property.PropertySignature.GetParameter(parameter); }
+			}
+
+			public override ParameterAttributes Attributes
+			{
+				get { return ParameterAttributes.None; }
+			}
+
+			public override int Position
+			{
+				get { return parameter; }
+			}
+
+			public override object RawDefaultValue
+			{
+				get { throw new InvalidOperationException(); }
+			}
+
+			public override Type[] GetOptionalCustomModifiers()
+			{
+				return property.PropertySignature.GetOptionalCustomModifiers(parameter);
+			}
+
+			public override Type[] GetRequiredCustomModifiers()
+			{
+				return property.PropertySignature.GetRequiredCustomModifiers(parameter);
+			}
+
+			public override MemberInfo Member
+			{
+				get { return property; }
+			}
+
+			public override int MetadataToken
+			{
+				get { return 0x08000000; }
+			}
+
+			internal override Module Module
+			{
+				get { return property.Module; }
+			}
+		}
+
+		public ParameterInfo[] GetIndexParameters()
+		{
+			ParameterInfo[] parameters = new ParameterInfo[this.PropertySignature.ParameterCount];
+			for (int i = 0; i < parameters.Length; i++)
+			{
+				parameters[i] = new ParameterInfoImpl(this, i);
+			}
+			return parameters;
+		}
+
+		public Type PropertyType
+		{
+			get { return this.PropertySignature.PropertyType; }
+		}
+
+		public Type[] GetRequiredCustomModifiers()
+		{
+			return this.PropertySignature.GetRequiredCustomModifiers();
+		}
+
+		public Type[] GetOptionalCustomModifiers()
+		{
+			return this.PropertySignature.GetOptionalCustomModifiers();
+		}
+
+		public bool IsSpecialName
+		{
+			get { return (Attributes & PropertyAttributes.SpecialName) != 0; }
+		}
+
+		public MethodInfo GetGetMethod()
+		{
+			return GetGetMethod(false);
+		}
+
+		public MethodInfo GetSetMethod()
+		{
+			return GetSetMethod(false);
+		}
+
+		public MethodInfo[] GetAccessors()
+		{
+			return GetAccessors(false);
+		}
+
+		internal virtual PropertyInfo BindTypeParameters(Type type)
+		{
+			return new GenericPropertyInfo(this.DeclaringType.BindTypeParameters(type), this);
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/PropertySignature.cs b/mcs/class/IKVM.Reflection/PropertySignature.cs
new file mode 100644
index 0000000..4e19dca
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/PropertySignature.cs
@@ -0,0 +1,218 @@
+/*
+  Copyright (C) 2009 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Text;
+using IKVM.Reflection.Emit;
+using IKVM.Reflection.Writer;
+using IKVM.Reflection.Reader;
+
+namespace IKVM.Reflection
+{
+	sealed class PropertySignature : Signature
+	{
+		private CallingConventions callingConvention;
+		private readonly Type propertyType;
+		private readonly Type[] optionalCustomModifiers;
+		private readonly Type[] requiredCustomModifiers;
+		private readonly Type[] parameterTypes;
+		private readonly Type[][] parameterOptionalCustomModifiers;
+		private readonly Type[][] parameterRequiredCustomModifiers;
+
+		internal static PropertySignature Create(CallingConventions callingConvention, Type propertyType, Type[] optionalCustomModifiers, Type[] requiredCustomModifiers, Type[] parameterTypes, Type[][] parameterTypeOptionalCustomModifiers, Type[][] parameterTypeRequiredCustomModifiers)
+		{
+			return new PropertySignature(callingConvention, propertyType, Util.Copy(optionalCustomModifiers), Util.Copy(requiredCustomModifiers), Util.Copy(parameterTypes), Util.Copy(parameterTypeOptionalCustomModifiers), Util.Copy(parameterTypeRequiredCustomModifiers));
+		}
+
+		private PropertySignature(CallingConventions callingConvention, Type propertyType, Type[] optionalCustomModifiers, Type[] requiredCustomModifiers, Type[] parameterTypes, Type[][] parameterTypeOptionalCustomModifiers, Type[][] parameterTypeRequiredCustomModifiers)
+		{
+			this.callingConvention = callingConvention;
+			this.propertyType = propertyType;
+			this.optionalCustomModifiers = optionalCustomModifiers;
+			this.requiredCustomModifiers = requiredCustomModifiers;
+			this.parameterTypes = parameterTypes;
+			this.parameterOptionalCustomModifiers = parameterTypeOptionalCustomModifiers;
+			this.parameterRequiredCustomModifiers = parameterTypeRequiredCustomModifiers;
+		}
+
+		public override bool Equals(object obj)
+		{
+			PropertySignature other = obj as PropertySignature;
+			return other != null
+				&& other.propertyType.Equals(propertyType)
+				&& Util.ArrayEquals(other.optionalCustomModifiers, optionalCustomModifiers)
+				&& Util.ArrayEquals(other.requiredCustomModifiers, requiredCustomModifiers);
+		}
+
+		public override int GetHashCode()
+		{
+			return propertyType.GetHashCode() ^ Util.GetHashCode(optionalCustomModifiers) ^ Util.GetHashCode(requiredCustomModifiers);
+		}
+
+		internal int ParameterCount
+		{
+			get { return parameterTypes.Length; }
+		}
+
+		internal bool HasThis
+		{
+			set
+			{
+				if (value)
+				{
+					callingConvention |= CallingConventions.HasThis;
+				}
+				else
+				{
+					callingConvention &= ~CallingConventions.HasThis;
+				}
+			}
+		}
+
+		internal Type PropertyType
+		{
+			get { return propertyType; }
+		}
+
+		internal Type[] GetOptionalCustomModifiers()
+		{
+			return Util.Copy(optionalCustomModifiers);
+		}
+
+		internal Type[] GetRequiredCustomModifiers()
+		{
+			return Util.Copy(requiredCustomModifiers);
+		}
+
+		internal PropertySignature ExpandTypeParameters(Type declaringType)
+		{
+			return new PropertySignature(
+				callingConvention,
+				propertyType.BindTypeParameters(declaringType),
+				BindTypeParameters(declaringType, optionalCustomModifiers),
+				BindTypeParameters(declaringType, requiredCustomModifiers),
+				BindTypeParameters(declaringType, parameterTypes),
+				BindTypeParameters(declaringType, parameterOptionalCustomModifiers),
+				BindTypeParameters(declaringType, parameterRequiredCustomModifiers));
+		}
+
+		internal override void WriteSig(ModuleBuilder module, ByteBuffer bb)
+		{
+			byte flags = PROPERTY;
+			if ((callingConvention & CallingConventions.HasThis) != 0)
+			{
+				flags |= HASTHIS;
+			}
+			if ((callingConvention & CallingConventions.ExplicitThis) != 0)
+			{
+				flags |= EXPLICITTHIS;
+			}
+			if ((callingConvention & CallingConventions.VarArgs) != 0)
+			{
+				flags |= VARARG;
+			}
+			bb.Write(flags);
+			bb.WriteCompressedInt(parameterTypes == null ? 0 : parameterTypes.Length);
+			WriteCustomModifiers(module, bb, ELEMENT_TYPE_CMOD_REQD, requiredCustomModifiers);
+			WriteCustomModifiers(module, bb, ELEMENT_TYPE_CMOD_OPT, optionalCustomModifiers);
+			WriteType(module, bb, propertyType);
+			if (parameterTypes != null)
+			{
+				for (int i = 0; i < parameterTypes.Length; i++)
+				{
+					if (parameterRequiredCustomModifiers != null)
+					{
+						WriteCustomModifiers(module, bb, ELEMENT_TYPE_CMOD_REQD, parameterRequiredCustomModifiers[i]);
+					}
+					if (parameterOptionalCustomModifiers != null)
+					{
+						WriteCustomModifiers(module, bb, ELEMENT_TYPE_CMOD_OPT, parameterOptionalCustomModifiers[i]);
+					}
+					WriteType(module, bb, parameterTypes[i]);
+				}
+			}
+		}
+
+		internal Type GetParameter(int parameter)
+		{
+			return parameterTypes[parameter];
+		}
+
+		internal Type[] GetOptionalCustomModifiers(int parameter)
+		{
+			return parameterOptionalCustomModifiers == null ? Type.EmptyTypes : parameterOptionalCustomModifiers[parameter];
+		}
+
+		internal Type[] GetRequiredCustomModifiers(int parameter)
+		{
+			return parameterRequiredCustomModifiers == null ? Type.EmptyTypes : parameterRequiredCustomModifiers[parameter];
+		}
+
+		internal static PropertySignature ReadSig(ModuleReader module, ByteReader br, IGenericContext context)
+		{
+			byte flags = br.ReadByte();
+			if ((flags & PROPERTY) == 0)
+			{
+				throw new BadImageFormatException();
+			}
+			CallingConventions callingConvention = CallingConventions.Standard;
+			if ((flags & HASTHIS) != 0)
+			{
+				callingConvention |= CallingConventions.HasThis;
+			}
+			if ((flags & EXPLICITTHIS) != 0)
+			{
+				callingConvention |= CallingConventions.ExplicitThis;
+			}
+			Type returnType;
+			Type[] returnTypeRequiredCustomModifiers;
+			Type[] returnTypeOptionalCustomModifiers;
+			Type[] parameterTypes;
+			Type[][] parameterRequiredCustomModifiers;
+			Type[][] parameterOptionalCustomModifiers;
+			int paramCount = br.ReadCompressedInt();
+			ReadCustomModifiers(module, br, context, out returnTypeRequiredCustomModifiers, out returnTypeOptionalCustomModifiers);
+			returnType = ReadRetType(module, br, context);
+			parameterTypes = new Type[paramCount];
+			parameterRequiredCustomModifiers = null;
+			parameterOptionalCustomModifiers = null;
+			for (int i = 0; i < parameterTypes.Length; i++)
+			{
+				if (IsCustomModifier(br.PeekByte()))
+				{
+					if (parameterOptionalCustomModifiers == null)
+					{
+						parameterOptionalCustomModifiers = new Type[parameterTypes.Length][];
+						parameterRequiredCustomModifiers = new Type[parameterTypes.Length][];
+					}
+					ReadCustomModifiers(module, br, context, out parameterRequiredCustomModifiers[i], out parameterOptionalCustomModifiers[i]);
+				}
+				parameterTypes[i] = ReadParam(module, br, context);
+			}
+			return new PropertySignature(callingConvention, returnType, returnTypeOptionalCustomModifiers, returnTypeRequiredCustomModifiers,
+				parameterTypes, parameterOptionalCustomModifiers, parameterRequiredCustomModifiers);
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Reader/AssemblyReader.cs b/mcs/class/IKVM.Reflection/Reader/AssemblyReader.cs
new file mode 100644
index 0000000..08d66dd
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Reader/AssemblyReader.cs
@@ -0,0 +1,255 @@
+/*
+  Copyright (C) 2009 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Collections.Generic;
+using System.Configuration.Assemblies;
+using System.IO;
+using IKVM.Reflection.Metadata;
+
+namespace IKVM.Reflection.Reader
+{
+	sealed class AssemblyReader : Assembly
+	{
+		private const int ContainsNoMetaData = 0x0001;
+		private readonly string location;
+		private readonly ModuleReader manifestModule;
+		private readonly Module[] externalModules;
+
+		internal AssemblyReader(string location, ModuleReader manifestModule)
+			: base(manifestModule.universe)
+		{
+			this.location = location;
+			this.manifestModule = manifestModule;
+			externalModules = new Module[manifestModule.File.records.Length];
+		}
+
+		public override string Location
+		{
+			get { return location; }
+		}
+
+		public override string FullName
+		{
+			get { return GetName().FullName; }
+		}
+
+		public override AssemblyName GetName()
+		{
+			return GetNameImpl(ref manifestModule.AssemblyTable.records[0]);
+		}
+
+		private AssemblyName GetNameImpl(ref AssemblyTable.Record rec)
+		{
+			AssemblyName name = new AssemblyName();
+			name.Name = manifestModule.GetString(rec.Name);
+			name.Version = new Version(rec.MajorVersion, rec.MinorVersion, rec.BuildNumber, rec.RevisionNumber);
+			if (rec.PublicKey != 0)
+			{
+				name.SetPublicKey(manifestModule.GetBlobCopy(rec.PublicKey));
+			}
+			else
+			{
+				name.SetPublicKey(Empty<byte>.Array);
+			}
+			if (rec.Culture != 0)
+			{
+				name.CultureInfo = new System.Globalization.CultureInfo(manifestModule.GetString(rec.Culture));
+			}
+			else
+			{
+				name.CultureInfo = System.Globalization.CultureInfo.InvariantCulture;
+			}
+			name.HashAlgorithm = (AssemblyHashAlgorithm)rec.HashAlgId;
+			name.CodeBase = this.CodeBase;
+			name.Flags = (AssemblyNameFlags)rec.Flags;
+			return name;
+		}
+
+		public override Type[] GetTypes()
+		{
+			if (externalModules.Length == 0)
+			{
+				return manifestModule.GetTypes();
+			}
+
+			List<Type> list = new List<Type>();
+			foreach (Module module in GetModules(false))
+			{
+				list.AddRange(module.GetTypes());
+			}
+			return list.ToArray();
+		}
+
+		internal override Type GetTypeImpl(string typeName)
+		{
+			Type type = manifestModule.GetType(typeName);
+			for (int i = 0; type == null && i < externalModules.Length; i++)
+			{
+				if ((manifestModule.File.records[i].Flags & ContainsNoMetaData) == 0)
+				{
+					type = GetModule(i).GetType(typeName);
+				}
+			}
+			return type;
+		}
+
+		public override string ImageRuntimeVersion
+		{
+			get { return manifestModule.ImageRuntimeVersion; }
+		}
+
+		public override Module ManifestModule
+		{
+			get { return manifestModule; }
+		}
+
+		public override Module[] GetLoadedModules(bool getResourceModules)
+		{
+			List<Module> list = new List<Module>();
+			list.Add(manifestModule);
+			foreach (Module m in externalModules)
+			{
+				if (m != null)
+				{
+					list.Add(m);
+				}
+			}
+			return list.ToArray();
+		}
+
+		public override Module[] GetModules(bool getResourceModules)
+		{
+			if (externalModules.Length == 0)
+			{
+				return new Module[] { manifestModule };
+			}
+			else
+			{
+				List<Module> list = new List<Module>();
+				list.Add(manifestModule);
+				for (int i = 0; i < manifestModule.File.records.Length; i++)
+				{
+					if (getResourceModules || (manifestModule.File.records[i].Flags & ContainsNoMetaData) == 0)
+					{
+						list.Add(GetModule(i));
+					}
+				}
+				return list.ToArray();
+			}
+		}
+
+		public override Module GetModule(string name)
+		{
+			if (name.Equals(manifestModule.ScopeName, StringComparison.InvariantCultureIgnoreCase))
+			{
+				return manifestModule;
+			}
+			int index = GetModuleIndex(name);
+			if (index != -1)
+			{
+				return GetModule(index);
+			}
+			return null;
+		}
+
+		private int GetModuleIndex(string name)
+		{
+			for (int i = 0; i < manifestModule.File.records.Length; i++)
+			{
+				if (name.Equals(manifestModule.GetString(manifestModule.File.records[i].Name), StringComparison.InvariantCultureIgnoreCase))
+				{
+					return i;
+				}
+			}
+			return -1;
+		}
+
+		private Module GetModule(int index)
+		{
+			if (externalModules[index] != null)
+			{
+				return externalModules[index];
+			}
+			// TODO add ModuleResolve event
+			string location = Path.Combine(Path.GetDirectoryName(this.location), manifestModule.GetString(manifestModule.File.records[index].Name));
+			return LoadModule(index, File.ReadAllBytes(location), location);
+		}
+
+		private Module LoadModule(int index, byte[] rawModule, string location)
+		{
+			if ((manifestModule.File.records[index].Flags & ContainsNoMetaData) != 0)
+			{
+				return externalModules[index] = new ResourceModule(this, manifestModule.GetString(manifestModule.File.records[index].Name), location);
+			}
+			else
+			{
+				return externalModules[index] = new ModuleReader(this, manifestModule.universe, new MemoryStream(rawModule), location);
+			}
+		}
+
+		public override Module LoadModule(string moduleName, byte[] rawModule)
+		{
+			int index = GetModuleIndex(moduleName);
+			if (index == -1)
+			{
+				throw new ArgumentException();
+			}
+			if (externalModules[index] != null)
+			{
+				return externalModules[index];
+			}
+			return LoadModule(index, rawModule, null);
+		}
+
+		public override MethodInfo EntryPoint
+		{
+			get { return manifestModule.GetEntryPoint(); }
+		}
+
+		public override string[] GetManifestResourceNames()
+		{
+			return manifestModule.GetManifestResourceNames();
+		}
+
+		public override ManifestResourceInfo GetManifestResourceInfo(string resourceName)
+		{
+			return manifestModule.GetManifestResourceInfo(resourceName);
+		}
+
+		public override Stream GetManifestResourceStream(string resourceName)
+		{
+			return manifestModule.GetManifestResourceStream(resourceName);
+		}
+
+		public override AssemblyName[] GetReferencedAssemblies()
+		{
+			return manifestModule.__GetReferencedAssemblies();
+		}
+
+		internal override IList<CustomAttributeData> GetCustomAttributesData(Type attributeType)
+		{
+			return manifestModule.GetCustomAttributes(0x20000001, attributeType);
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Reader/ByteReader.cs b/mcs/class/IKVM.Reflection/Reader/ByteReader.cs
new file mode 100644
index 0000000..a82744f
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Reader/ByteReader.cs
@@ -0,0 +1,194 @@
+/*
+  Copyright (C) 2009 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace IKVM.Reflection.Reader
+{
+	sealed class ByteReader
+	{
+		private byte[] buffer;
+		private int pos;
+		private int end;
+
+		internal ByteReader(byte[] buffer, int offset, int length)
+		{
+			this.buffer = buffer;
+			this.pos = offset;
+			this.end = pos + length;
+		}
+
+		internal static ByteReader FromBlob(byte[] blobHeap, int blob)
+		{
+			ByteReader br = new ByteReader(blobHeap, blob, 4);
+			int length = br.ReadCompressedInt();
+			br.end = br.pos + length;
+			return br;
+		}
+
+		internal int Length
+		{
+			get { return end - pos; }
+		}
+
+		internal byte PeekByte()
+		{
+			if (pos == end)
+				throw new BadImageFormatException();
+			return buffer[pos];
+		}
+
+		internal byte ReadByte()
+		{
+			if (pos == end)
+				throw new BadImageFormatException();
+			return buffer[pos++];
+		}
+
+		internal byte[] ReadBytes(int count)
+		{
+			if (count < 0)
+				throw new BadImageFormatException();
+			if (end - pos < count)
+				throw new BadImageFormatException();
+			byte[] buf = new byte[count];
+			Buffer.BlockCopy(buffer, pos, buf, 0, count);
+			pos += count;
+			return buf;
+		}
+
+		internal int ReadCompressedInt()
+		{
+			byte b1 = ReadByte();
+			if (b1 <= 0x7F)
+			{
+				return b1;
+			}
+			else if ((b1 & 0xC0) == 0x80)
+			{
+				byte b2 = ReadByte();
+				return ((b1 & 0x3F) << 8) | b2;
+			}
+			else
+			{
+				byte b2 = ReadByte();
+				byte b3 = ReadByte();
+				byte b4 = ReadByte();
+				return ((b1 & 0x3F) << 24) + (b2 << 16) + (b3 << 8) + b4;
+			}
+		}
+
+		internal string ReadString()
+		{
+			if (PeekByte() == 0xFF)
+			{
+				pos++;
+				return null;
+			}
+			int length = ReadCompressedInt();
+			string str = Encoding.UTF8.GetString(buffer, pos, length);
+			pos += length;
+			return str;
+		}
+
+		internal char ReadChar()
+		{
+			return (char)ReadInt16();
+		}
+
+		internal sbyte ReadSByte()
+		{
+			return (sbyte)ReadByte();
+		}
+
+		internal short ReadInt16()
+		{
+			if (end - pos < 2)
+				throw new BadImageFormatException();
+			byte b1 = buffer[pos++];
+			byte b2 = buffer[pos++];
+			return (short)(b1 | (b2 << 8));
+		}
+
+		internal ushort ReadUInt16()
+		{
+			return (ushort)ReadInt16();
+		}
+
+		internal int ReadInt32()
+		{
+			if (end - pos < 4)
+				throw new BadImageFormatException();
+			byte b1 = buffer[pos++];
+			byte b2 = buffer[pos++];
+			byte b3 = buffer[pos++];
+			byte b4 = buffer[pos++];
+			return (int)(b1 | (b2 << 8) | (b3 << 16) | (b4 << 24));
+		}
+
+		internal uint ReadUInt32()
+		{
+			return (uint)ReadInt32();
+		}
+
+		internal long ReadInt64()
+		{
+			ulong lo = ReadUInt32();
+			ulong hi = ReadUInt32();
+			return (long)(lo | (hi << 32));
+		}
+
+		internal ulong ReadUInt64()
+		{
+			return (ulong)ReadInt64();
+		}
+
+		internal float ReadSingle()
+		{
+			return SingleConverter.Int32BitsToSingle(ReadInt32());
+		}
+
+		internal double ReadDouble()
+		{
+			return BitConverter.Int64BitsToDouble(ReadInt64());
+		}
+
+		internal ByteReader Slice(int length)
+		{
+			if (end - pos < length)
+				throw new BadImageFormatException();
+			ByteReader br = new ByteReader(buffer, pos, length);
+			pos += length;
+			return br;
+		}
+
+		// NOTE this method only works if the original offset was aligned and for alignments that are a power of 2
+		internal void Align(int alignment)
+		{
+			alignment--;
+			pos = (pos + alignment) & ~alignment;
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Reader/EventInfoImpl.cs b/mcs/class/IKVM.Reflection/Reader/EventInfoImpl.cs
new file mode 100644
index 0000000..82591b0
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Reader/EventInfoImpl.cs
@@ -0,0 +1,138 @@
+/*
+  Copyright (C) 2009 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Collections.Generic;
+using System.Text;
+using IKVM.Reflection.Metadata;
+
+namespace IKVM.Reflection.Reader
+{
+	sealed class EventInfoImpl : EventInfo
+	{
+		private readonly ModuleReader module;
+		private readonly Type declaringType;
+		private readonly int index;
+		private bool isPublic;
+		private bool isStatic;
+		private bool flagsCached;
+
+		internal EventInfoImpl(ModuleReader module, Type declaringType, int index)
+		{
+			this.module = module;
+			this.declaringType = declaringType;
+			this.index = index;
+		}
+
+		public override bool Equals(object obj)
+		{
+			EventInfoImpl other = obj as EventInfoImpl;
+			return other != null && other.declaringType == declaringType && other.index == index;
+		}
+
+		public override int GetHashCode()
+		{
+			return declaringType.GetHashCode() * 123 + index;
+		}
+
+		public override EventAttributes Attributes
+		{
+			get { return (EventAttributes)module.Event.records[index].EventFlags; }
+		}
+
+		public override MethodInfo GetAddMethod(bool nonPublic)
+		{
+			return module.MethodSemantics.GetMethod(module, this.MetadataToken, nonPublic, MethodSemanticsTable.AddOn);
+		}
+
+		public override MethodInfo GetRaiseMethod(bool nonPublic)
+		{
+			return module.MethodSemantics.GetMethod(module, this.MetadataToken, nonPublic, MethodSemanticsTable.Fire);
+		}
+
+		public override MethodInfo GetRemoveMethod(bool nonPublic)
+		{
+			return module.MethodSemantics.GetMethod(module, this.MetadataToken, nonPublic, MethodSemanticsTable.RemoveOn);
+		}
+
+		public override MethodInfo[] GetOtherMethods(bool nonPublic)
+		{
+			return module.MethodSemantics.GetMethods(module, this.MetadataToken, nonPublic, MethodSemanticsTable.Other);
+		}
+
+		public override Type EventHandlerType
+		{
+			get { return module.ResolveType(module.Event.records[index].EventType, declaringType); }
+		}
+
+		public override string Name
+		{
+			get { return module.GetString(module.Event.records[index].Name); }
+		}
+
+		public override Type DeclaringType
+		{
+			get { return declaringType; }
+		}
+
+		public override Module Module
+		{
+			get { return module; }
+		}
+
+		public override int MetadataToken
+		{
+			get { return (EventTable.Index << 24) + index + 1; }
+		}
+
+		internal override bool IsPublic
+		{
+			get
+			{
+				if (!flagsCached)
+				{
+					ComputeFlags();
+				}
+				return isPublic;
+			}
+		}
+
+		internal override bool IsStatic
+		{
+			get
+			{
+				if (!flagsCached)
+				{
+					ComputeFlags();
+				}
+				return isStatic;
+			}
+		}
+
+		private void ComputeFlags()
+		{
+			module.MethodSemantics.ComputeFlags(module, this.MetadataToken, out isPublic, out isStatic);
+			flagsCached = true;
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Reader/Field.cs b/mcs/class/IKVM.Reflection/Reader/Field.cs
new file mode 100644
index 0000000..f9bcca6
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Reader/Field.cs
@@ -0,0 +1,152 @@
+/*
+  Copyright (C) 2009 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.IO;
+using IKVM.Reflection.Metadata;
+
+namespace IKVM.Reflection.Reader
+{
+	sealed class FieldDefImpl : FieldInfo
+	{
+		private readonly ModuleReader module;
+		private readonly TypeDefImpl declaringType;
+		private readonly int index;
+		private FieldSignature lazyFieldSig;
+
+		internal FieldDefImpl(ModuleReader module, TypeDefImpl declaringType, int index)
+		{
+			this.module = module;
+			this.declaringType = declaringType;
+			this.index = index;
+		}
+
+		public override FieldAttributes Attributes
+		{
+			get { return (FieldAttributes)module.Field.records[index].Flags; }
+		}
+
+		public override Type DeclaringType
+		{
+			get { return declaringType.IsModulePseudoType ? null : declaringType; }
+		}
+
+		public override string Name
+		{
+			get { return module.GetString(module.Field.records[index].Name); }
+		}
+
+		public override string ToString()
+		{
+			return this.FieldType.Name + " " + this.Name;
+		}
+
+		public override Module Module
+		{
+			get { return module; }
+		}
+
+		public override int MetadataToken
+		{
+			get { return (FieldTable.Index << 24) + index + 1; }
+		}
+
+		public override object GetRawConstantValue()
+		{
+			return module.Constant.GetRawConstantValue(module, this.MetadataToken);
+		}
+
+		public override void __GetDataFromRVA(byte[] data, int offset, int length)
+		{
+			int rid = index + 1;
+			// TODO binary search?
+			for (int i = 0; i < module.FieldRVA.records.Length; i++)
+			{
+				if (module.FieldRVA.records[i].Field == rid)
+				{
+					int rva = module.FieldRVA.records[i].RVA;
+					if (rva == 0)
+					{
+						// C++ assemblies can have fields that have an RVA that is zero
+						Array.Clear(data, offset, length);
+						return;
+					}
+					module.SeekRVA(rva);
+					while (length > 0)
+					{
+						int read = module.stream.Read(data, offset, length);
+						if (read == 0)
+						{
+							// C++ assemblies can have fields that have an RVA that lies outside of the file
+							break;
+						}
+						offset += read;
+						length -= read;
+					}
+					return;
+				}
+			}
+			throw new InvalidOperationException();
+		}
+
+		internal override IList<CustomAttributeData> GetCustomAttributesData(Type attributeType)
+		{
+			List<CustomAttributeData> list = module.GetCustomAttributes(this.MetadataToken, attributeType);
+			if ((this.Attributes & FieldAttributes.HasFieldMarshal) != 0
+				&& (attributeType == null || attributeType.IsAssignableFrom(module.universe.System_Runtime_InteropServices_MarshalAsAttribute)))
+			{
+				list.Add(MarshalSpec.GetMarshalAsAttribute(module, this.MetadataToken));
+			}
+			if (declaringType.IsExplicitLayout
+				&& (attributeType == null || attributeType.IsAssignableFrom(module.universe.System_Runtime_InteropServices_FieldOffsetAttribute)))
+			{
+				int rid = index + 1;
+				// TODO use binary search?
+				for (int i = 0; i < module.FieldLayout.records.Length; i++)
+				{
+					if (module.FieldLayout.records[i].Field == rid)
+					{
+						ConstructorInfo constructor = module.universe.System_Runtime_InteropServices_FieldOffsetAttribute.GetConstructor(new Type[] { module.universe.System_Int32 });
+						list.Add(new CustomAttributeData(constructor,
+							new object[] { module.FieldLayout.records[i].Offset },
+							null));
+						break;
+					}
+				}
+			}
+			return list;
+		}
+
+		internal override FieldSignature FieldSignature
+		{
+			get { return lazyFieldSig ?? (lazyFieldSig = FieldSignature.ReadSig(module, module.GetBlob(module.Field.records[index].Signature), declaringType)); }
+		}
+
+		internal override int ImportTo(Emit.ModuleBuilder module)
+		{
+			return module.ImportMethodOrField(declaringType, this.Name, this.FieldSignature);
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Reader/GenericTypeParameter.cs b/mcs/class/IKVM.Reflection/Reader/GenericTypeParameter.cs
new file mode 100644
index 0000000..2f961f9
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Reader/GenericTypeParameter.cs
@@ -0,0 +1,380 @@
+/*
+  Copyright (C) 2009 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Collections.Generic;
+using System.Text;
+using IKVM.Reflection.Metadata;
+
+namespace IKVM.Reflection.Reader
+{
+	abstract class TypeParameterType : Type
+	{
+		public sealed override string AssemblyQualifiedName
+		{
+			get { return null; }
+		}
+
+		public sealed override bool IsValueType
+		{
+			get { return (this.GenericParameterAttributes & GenericParameterAttributes.NotNullableValueTypeConstraint) != 0; }
+		}
+
+		public sealed override Type BaseType
+		{
+			get
+			{
+				foreach (Type type in GetGenericParameterConstraints())
+				{
+					if (!type.IsInterface && !type.IsGenericParameter)
+					{
+						return type;
+					}
+				}
+				return this.IsValueType ? this.Module.universe.System_ValueType : this.Module.universe.System_Object;
+			}
+		}
+
+		public override Type[] __GetDeclaredInterfaces()
+		{
+			List<Type> list = new List<Type>();
+			foreach (Type type in GetGenericParameterConstraints())
+			{
+				if (type.IsInterface)
+				{
+					list.Add(type);
+				}
+			}
+			return list.ToArray();
+		}
+
+		public sealed override TypeAttributes Attributes
+		{
+			get { return TypeAttributes.Public; }
+		}
+
+		public sealed override Type UnderlyingSystemType
+		{
+			get { return this; }
+		}
+
+		public sealed override string FullName
+		{
+			get { return null; }
+		}
+
+		public sealed override string ToString()
+		{
+			return this.Name;
+		}
+
+		public sealed override bool IsGenericParameter
+		{
+			get { return true; }
+		}
+	}
+
+	sealed class UnboundGenericMethodParameter : TypeParameterType
+	{
+		private static readonly DummyModule module = new DummyModule();
+		private readonly int position;
+
+		private sealed class DummyModule : Module
+		{
+			internal DummyModule()
+				: base(new Universe())
+			{
+			}
+
+			public override bool Equals(object obj)
+			{
+				throw new InvalidOperationException();
+			}
+
+			public override int GetHashCode()
+			{
+				throw new InvalidOperationException();
+			}
+
+			public override string ToString()
+			{
+				throw new InvalidOperationException();
+			}
+
+			public override int MDStreamVersion
+			{
+				get { throw new InvalidOperationException(); }
+			}
+
+			public override Assembly Assembly
+			{
+				get { throw new InvalidOperationException(); }
+			}
+
+			internal override Type GetTypeImpl(string typeName)
+			{
+				throw new InvalidOperationException();
+			}
+
+			internal override void GetTypesImpl(List<Type> list)
+			{
+				throw new InvalidOperationException();
+			}
+
+			public override string FullyQualifiedName
+			{
+				get { throw new InvalidOperationException(); }
+			}
+
+			public override string Name
+			{
+				get { throw new InvalidOperationException(); }
+			}
+
+			public override Guid ModuleVersionId
+			{
+				get { throw new InvalidOperationException(); }
+			}
+
+			public override Type ResolveType(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)
+			{
+				throw new InvalidOperationException();
+			}
+
+			public override MethodBase ResolveMethod(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)
+			{
+				throw new InvalidOperationException();
+			}
+
+			public override FieldInfo ResolveField(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)
+			{
+				throw new InvalidOperationException();
+			}
+
+			public override MemberInfo ResolveMember(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)
+			{
+				throw new InvalidOperationException();
+			}
+
+			public override string ResolveString(int metadataToken)
+			{
+				throw new InvalidOperationException();
+			}
+
+			public override Type[] __ResolveOptionalParameterTypes(int metadataToken)
+			{
+				throw new InvalidOperationException();
+			}
+
+			public override string ScopeName
+			{
+				get { throw new InvalidOperationException(); }
+			}
+
+			public override AssemblyName[] __GetReferencedAssemblies()
+			{
+				throw new InvalidOperationException();
+			}
+
+			internal override Type GetModuleType()
+			{
+				throw new InvalidOperationException();
+			}
+
+			internal override ByteReader GetBlob(int blobIndex)
+			{
+				throw new InvalidOperationException();
+			}
+		}
+
+		internal static Type Make(int position)
+		{
+			return module.CanonicalizeType(new UnboundGenericMethodParameter(position));
+		}
+
+		private UnboundGenericMethodParameter(int position)
+		{
+			this.position = position;
+		}
+
+		public override bool Equals(object obj)
+		{
+			UnboundGenericMethodParameter other = obj as UnboundGenericMethodParameter;
+			return other != null && other.position == position;
+		}
+
+		public override int GetHashCode()
+		{
+			return position;
+		}
+
+		public override string Namespace
+		{
+			get { throw new InvalidOperationException(); }
+		}
+
+		public override string Name
+		{
+			get { throw new InvalidOperationException(); }
+		}
+
+		public override int MetadataToken
+		{
+			get { throw new InvalidOperationException(); }
+		}
+
+		public override Module Module
+		{
+			get { return module; }
+		}
+
+		public override int GenericParameterPosition
+		{
+			get { return position; }
+		}
+
+		public override Type DeclaringType
+		{
+			get { return null; }
+		}
+
+		public override MethodBase DeclaringMethod
+		{
+			get { throw new InvalidOperationException(); }
+		}
+
+		public override Type[] GetGenericParameterConstraints()
+		{
+			throw new InvalidOperationException();
+		}
+
+		public override GenericParameterAttributes GenericParameterAttributes
+		{
+			get { throw new InvalidOperationException(); }
+		}
+
+		internal override Type BindTypeParameters(IGenericBinder binder)
+		{
+			return binder.BindMethodParameter(this);
+		}
+	}
+
+	sealed class GenericTypeParameter : TypeParameterType
+	{
+		private readonly ModuleReader module;
+		private readonly int index;
+
+		internal GenericTypeParameter(ModuleReader module, int index)
+		{
+			this.module = module;
+			this.index = index;
+		}
+
+		public override bool Equals(object obj)
+		{
+			return base.Equals(obj);
+		}
+
+		public override int GetHashCode()
+		{
+			return base.GetHashCode();
+		}
+
+		public override string Namespace
+		{
+			get { return DeclaringType.Namespace; }
+		}
+
+		public override string Name
+		{
+			get { return module.GetString(module.GenericParam.records[index].Name); }
+		}
+
+		public override Module Module
+		{
+			get { return module; }
+		}
+
+		public override int MetadataToken
+		{
+			get { return (GenericParamTable.Index << 24) + index + 1; }
+		}
+
+		public override int GenericParameterPosition
+		{
+			get { return module.GenericParam.records[index].Number; }
+		}
+
+		public override Type DeclaringType
+		{
+			get
+			{
+				int owner = module.GenericParam.records[index].Owner;
+				return (owner >> 24) == TypeDefTable.Index ? module.ResolveType(owner) : null;
+			}
+		}
+
+		public override MethodBase DeclaringMethod
+		{
+			get
+			{
+				int owner = module.GenericParam.records[index].Owner;
+				return (owner >> 24) == MethodDefTable.Index ? module.ResolveMethod(owner) : null;
+			}
+		}
+
+		public override Type[] GetGenericParameterConstraints()
+		{
+			IGenericContext context = (this.DeclaringMethod as IGenericContext) ?? this.DeclaringType;
+			List<Type> list = new List<Type>();
+			int token = this.MetadataToken;
+			// TODO use binary search
+			for (int i = 0; i < module.GenericParamConstraint.records.Length; i++)
+			{
+				if (module.GenericParamConstraint.records[i].Owner == token)
+				{
+					list.Add(module.ResolveType(module.GenericParamConstraint.records[i].Constraint, context));
+				}
+			}
+			return list.ToArray();
+		}
+
+		public override GenericParameterAttributes GenericParameterAttributes
+		{
+			get { return (GenericParameterAttributes)module.GenericParam.records[index].Flags; }
+		}
+
+		internal override Type BindTypeParameters(IGenericBinder binder)
+		{
+			int owner = module.GenericParam.records[index].Owner;
+			if ((owner >> 24) == MethodDefTable.Index)
+			{
+				return binder.BindMethodParameter(this);
+			}
+			else
+			{
+				return binder.BindTypeParameter(this);
+			}
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Reader/MetadataReader.cs b/mcs/class/IKVM.Reflection/Reader/MetadataReader.cs
new file mode 100644
index 0000000..0bbe475
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Reader/MetadataReader.cs
@@ -0,0 +1,522 @@
+/*
+  Copyright (C) 2009 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.IO;
+using IKVM.Reflection.Metadata;
+
+namespace IKVM.Reflection.Reader
+{
+	sealed class MetadataReader : MetadataRW
+	{
+		private readonly BinaryReader br;
+
+		internal MetadataReader(ModuleReader module, BinaryReader br, byte heapSizes)
+			: base(module, (heapSizes & 0x01) != 0, (heapSizes & 0x02) != 0, (heapSizes & 0x04) != 0)
+		{
+			this.br = br;
+		}
+
+		internal short ReadInt16()
+		{
+			return br.ReadInt16();
+		}
+
+		internal ushort ReadUInt16()
+		{
+			return br.ReadUInt16();
+		}
+
+		internal int ReadInt32()
+		{
+			return br.ReadInt32();
+		}
+
+		internal int ReadStringIndex()
+		{
+			if (bigStrings)
+			{
+				return br.ReadInt32();
+			}
+			else
+			{
+				return br.ReadUInt16();
+			}
+		}
+
+		internal int ReadGuidIndex()
+		{
+			if (bigGuids)
+			{
+				return br.ReadInt32();
+			}
+			else
+			{
+				return br.ReadUInt16();
+			}
+		}
+
+		internal int ReadBlobIndex()
+		{
+			if (bigBlobs)
+			{
+				return br.ReadInt32();
+			}
+			else
+			{
+				return br.ReadUInt16();
+			}
+		}
+
+		internal int ReadResolutionScope()
+		{
+			int codedIndex;
+			if (bigResolutionScope)
+			{
+				codedIndex = br.ReadInt32();
+			}
+			else
+			{
+				codedIndex = br.ReadUInt16();
+			}
+			switch (codedIndex & 3)
+			{
+				case 0:
+					return (ModuleTable.Index << 24) + (codedIndex >> 2);
+				case 1:
+					return (ModuleRefTable.Index << 24) + (codedIndex >> 2);
+				case 2:
+					return (AssemblyRefTable.Index << 24) + (codedIndex >> 2);
+				case 3:
+					return (TypeRefTable.Index << 24) + (codedIndex >> 2);
+				default:
+					throw new BadImageFormatException();
+			}
+		}
+
+		internal int ReadTypeDefOrRef()
+		{
+			int codedIndex;
+			if (bigTypeDefOrRef)
+			{
+				codedIndex = br.ReadInt32();
+			}
+			else
+			{
+				codedIndex = br.ReadUInt16();
+			}
+			switch (codedIndex & 3)
+			{
+				case 0:
+					return (TypeDefTable.Index << 24) + (codedIndex >> 2);
+				case 1:
+					return (TypeRefTable.Index << 24) + (codedIndex >> 2);
+				case 2:
+					return (TypeSpecTable.Index << 24) + (codedIndex >> 2);
+				default:
+					throw new BadImageFormatException();
+			}
+		}
+
+		internal int ReadMemberRefParent()
+		{
+			int codedIndex;
+			if (bigMemberRefParent)
+			{
+				codedIndex = br.ReadInt32();
+			}
+			else
+			{
+				codedIndex = br.ReadUInt16();
+			}
+			switch (codedIndex & 7)
+			{
+				case 0:
+					return (TypeDefTable.Index << 24) + (codedIndex >> 3);
+				case 1:
+					return (TypeRefTable.Index << 24) + (codedIndex >> 3);
+				case 2:
+					return (ModuleRefTable.Index << 24) + (codedIndex >> 3);
+				case 3:
+					return (MethodDefTable.Index << 24) + (codedIndex >> 3);
+				case 4:
+					return (TypeSpecTable.Index << 24) + (codedIndex >> 3);
+				default:
+					throw new BadImageFormatException();
+			}
+		}
+
+		internal int ReadHasCustomAttribute()
+		{
+			int codedIndex;
+			if (bigHasCustomAttribute)
+			{
+				codedIndex = br.ReadInt32();
+			}
+			else
+			{
+				codedIndex = br.ReadUInt16();
+			}
+			switch (codedIndex & 31)
+			{
+				case 0:
+					return (MethodDefTable.Index << 24) + (codedIndex >> 5);
+				case 1:
+					return (FieldTable.Index << 24) + (codedIndex >> 5);
+				case 2:
+					return (TypeRefTable.Index << 24) + (codedIndex >> 5);
+				case 3:
+					return (TypeDefTable.Index << 24) + (codedIndex >> 5);
+				case 4:
+					return (ParamTable.Index << 24) + (codedIndex >> 5);
+				case 5:
+					return (InterfaceImplTable.Index << 24) + (codedIndex >> 5);
+				case 6:
+					return (MemberRefTable.Index << 24) + (codedIndex >> 5);
+				case 7:
+					return (ModuleTable.Index << 24) + (codedIndex >> 5);
+				case 8:
+					throw new BadImageFormatException();
+				case 9:
+					return (PropertyTable.Index << 24) + (codedIndex >> 5);
+				case 10:
+					return (EventTable.Index << 24) + (codedIndex >> 5);
+				case 11:
+					return (StandAloneSigTable.Index << 24) + (codedIndex >> 5);
+				case 12:
+					return (ModuleRefTable.Index << 24) + (codedIndex >> 5);
+				case 13:
+					return (TypeSpecTable.Index << 24) + (codedIndex >> 5);
+				case 14:
+					return (AssemblyTable.Index << 24) + (codedIndex >> 5);
+				case 15:
+					return (AssemblyRefTable.Index << 24) + (codedIndex >> 5);
+				case 16:
+					return (FileTable.Index << 24) + (codedIndex >> 5);
+				case 17:
+					return (ExportedTypeTable.Index << 24) + (codedIndex >> 5);
+				case 18:
+					return (ManifestResourceTable.Index << 24) + (codedIndex >> 5);
+				case 19:
+					return (GenericParamTable.Index << 24) + (codedIndex >> 5);
+				default:
+					throw new BadImageFormatException();
+			}
+		}
+
+		internal int ReadCustomAttributeType()
+		{
+			int codedIndex;
+			if (bigCustomAttributeType)
+			{
+				codedIndex = br.ReadInt32();
+			}
+			else
+			{
+				codedIndex = br.ReadUInt16();
+			}
+			switch (codedIndex & 7)
+			{
+				case 2:
+					return (MethodDefTable.Index << 24) + (codedIndex >> 3);
+				case 3:
+					return (MemberRefTable.Index << 24) + (codedIndex >> 3);
+				default:
+					throw new BadImageFormatException();
+			}
+		}
+
+		internal int ReadMethodDefOrRef()
+		{
+			int codedIndex;
+			if (bigMethodDefOrRef)
+			{
+				codedIndex = br.ReadInt32();
+			}
+			else
+			{
+				codedIndex = br.ReadUInt16();
+			}
+			switch (codedIndex & 1)
+			{
+				case 0:
+					return (MethodDefTable.Index << 24) + (codedIndex >> 1);
+				case 1:
+					return (MemberRefTable.Index << 24) + (codedIndex >> 1);
+				default:
+					throw new BadImageFormatException();
+			}
+		}
+
+		internal int ReadHasConstant()
+		{
+			int codedIndex;
+			if (bigHasConstant)
+			{
+				codedIndex = br.ReadInt32();
+			}
+			else
+			{
+				codedIndex = br.ReadUInt16();
+			}
+			switch (codedIndex & 3)
+			{
+				case 0:
+					return (FieldTable.Index << 24) + (codedIndex >> 2);
+				case 1:
+					return (ParamTable.Index << 24) + (codedIndex >> 2);
+				case 2:
+					return (PropertyTable.Index << 24) + (codedIndex >> 2);
+				default:
+					throw new BadImageFormatException();
+			}
+		}
+
+		internal int ReadHasSemantics()
+		{
+			int codedIndex;
+			if (bigHasSemantics)
+			{
+				codedIndex = br.ReadInt32();
+			}
+			else
+			{
+				codedIndex = br.ReadUInt16();
+			}
+			switch (codedIndex & 1)
+			{
+				case 0:
+					return (EventTable.Index << 24) + (codedIndex >> 1);
+				case 1:
+					return (PropertyTable.Index << 24) + (codedIndex >> 1);
+				default:
+					throw new BadImageFormatException();
+			}
+		}
+
+		internal int ReadHasFieldMarshal()
+		{
+			int codedIndex;
+			if (bigHasFieldMarshal)
+			{
+				codedIndex = br.ReadInt32();
+			}
+			else
+			{
+				codedIndex = br.ReadUInt16();
+			}
+			switch (codedIndex & 1)
+			{
+				case 0:
+					return (FieldTable.Index << 24) + (codedIndex >> 1);
+				case 1:
+					return (ParamTable.Index << 24) + (codedIndex >> 1);
+				default:
+					throw new BadImageFormatException();
+			}
+		}
+
+		internal int ReadHasDeclSecurity()
+		{
+			int codedIndex;
+			if (bigHasDeclSecurity)
+			{
+				codedIndex = br.ReadInt32();
+			}
+			else
+			{
+				codedIndex = br.ReadUInt16();
+			}
+			switch (codedIndex & 3)
+			{
+				case 0:
+					return (TypeDefTable.Index << 24) + (codedIndex >> 2);
+				case 1:
+					return (MethodDefTable.Index << 24) + (codedIndex >> 2);
+				case 2:
+					return (AssemblyTable.Index << 24) + (codedIndex >> 2);
+				default:
+					throw new BadImageFormatException();
+			}
+		}
+
+		internal int ReadTypeOrMethodDef()
+		{
+			int codedIndex;
+			if (bigTypeOrMethodDef)
+			{
+				codedIndex = br.ReadInt32();
+			}
+			else
+			{
+				codedIndex = br.ReadUInt16();
+			}
+			switch (codedIndex & 1)
+			{
+				case 0:
+					return (TypeDefTable.Index << 24) + (codedIndex >> 1);
+				case 1:
+					return (MethodDefTable.Index << 24) + (codedIndex >> 1);
+				default:
+					throw new BadImageFormatException();
+			}
+		}
+
+		internal int ReadMemberForwarded()
+		{
+			int codedIndex;
+			if (bigMemberForwarded)
+			{
+				codedIndex = br.ReadInt32();
+			}
+			else
+			{
+				codedIndex = br.ReadUInt16();
+			}
+			switch (codedIndex & 1)
+			{
+				case 0:
+					return (FieldTable.Index << 24) + (codedIndex >> 1);
+				case 1:
+					return (MethodDefTable.Index << 24) + (codedIndex >> 1);
+				default:
+					throw new BadImageFormatException();
+			}
+		}
+
+		internal int ReadImplementation()
+		{
+			int codedIndex;
+			if (bigImplementation)
+			{
+				codedIndex = br.ReadInt32();
+			}
+			else
+			{
+				codedIndex = br.ReadUInt16();
+			}
+			switch (codedIndex & 3)
+			{
+				case 0:
+					return (FileTable.Index << 24) + (codedIndex >> 2);
+				case 1:
+					return (AssemblyRefTable.Index << 24) + (codedIndex >> 2);
+				case 2:
+					return (ExportedTypeTable.Index << 24) + (codedIndex >> 2);
+				default:
+					throw new BadImageFormatException();
+			}
+		}
+
+		private int ReadToken(int table, bool big)
+		{
+			int rid;
+			if (big)
+			{
+				rid = br.ReadInt32();
+			}
+			else
+			{
+				rid = br.ReadUInt16();
+			}
+			return rid | (table << 24);
+		}
+
+		internal int ReadField()
+		{
+			if (bigField)
+			{
+				return br.ReadInt32();
+			}
+			else
+			{
+				return br.ReadUInt16();
+			}
+		}
+
+		internal int ReadMethodDef()
+		{
+			if (bigMethodDef)
+			{
+				return br.ReadInt32();
+			}
+			else
+			{
+				return br.ReadUInt16();
+			}
+		}
+
+		internal int ReadParam()
+		{
+			if (bigParam)
+			{
+				return br.ReadInt32();
+			}
+			else
+			{
+				return br.ReadUInt16();
+			}
+		}
+
+		internal int ReadProperty()
+		{
+			if (bigProperty)
+			{
+				return br.ReadInt32();
+			}
+			else
+			{
+				return br.ReadUInt16();
+			}
+		}
+
+		internal int ReadEvent()
+		{
+			if (bigEvent)
+			{
+				return br.ReadInt32();
+			}
+			else
+			{
+				return br.ReadUInt16();
+			}
+		}
+
+		internal int ReadTypeDef()
+		{
+			return ReadToken(TypeDefTable.Index, bigTypeDef);
+		}
+
+		internal int ReadGenericParam()
+		{
+			return ReadToken(GenericParamTable.Index, bigGenericParam);
+		}
+
+		internal int ReadModuleRef()
+		{
+			return ReadToken(ModuleRefTable.Index, bigModuleRef);
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Reader/Method.cs b/mcs/class/IKVM.Reflection/Reader/Method.cs
new file mode 100644
index 0000000..c3d77f5
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Reader/Method.cs
@@ -0,0 +1,485 @@
+/*
+  Copyright (C) 2009 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Collections.Generic;
+using System.Text;
+using IKVM.Reflection.Metadata;
+
+namespace IKVM.Reflection.Reader
+{
+	sealed class MethodDefImpl : MethodInfo
+	{
+		private readonly ModuleReader module;
+		private readonly int index;
+		private readonly TypeDefImpl declaringType;
+		private MethodSignature lazyMethodSignature;
+		private ParameterInfo returnParameter;
+		private ParameterInfo[] parameters;
+		private Type[] typeArgs;
+
+		internal MethodDefImpl(ModuleReader module, TypeDefImpl declaringType, int index)
+		{
+			this.module = module;
+			this.index = index;
+			this.declaringType = declaringType;
+		}
+
+		public override MethodBody GetMethodBody()
+		{
+			return GetMethodBody(this);
+		}
+
+		internal MethodBody GetMethodBody(IGenericContext context)
+		{
+			if ((GetMethodImplementationFlags() & MethodImplAttributes.CodeTypeMask) != MethodImplAttributes.IL)
+			{
+				// method is not IL
+				return null;
+			}
+			int rva = module.MethodDef.records[index].RVA;
+			return rva == 0 ? null : new MethodBody(module, rva, context);
+		}
+
+		public override CallingConventions CallingConvention
+		{
+			get { return this.MethodSignature.CallingConvention; }
+		}
+
+		public override MethodAttributes Attributes
+		{
+			get { return (MethodAttributes)module.MethodDef.records[index].Flags; }
+		}
+
+		public override MethodImplAttributes GetMethodImplementationFlags()
+		{
+			return (MethodImplAttributes)module.MethodDef.records[index].ImplFlags;
+		}
+
+		public override ParameterInfo[] GetParameters()
+		{
+			PopulateParameters();
+			return (ParameterInfo[])parameters.Clone();
+		}
+
+		private void PopulateParameters()
+		{
+			if (parameters == null)
+			{
+				MethodSignature methodSignature = this.MethodSignature;
+				parameters = new ParameterInfo[methodSignature.GetParameterCount()];
+				int parameter = module.MethodDef.records[index].ParamList - 1;
+				int end = module.MethodDef.records.Length > index + 1 ? module.MethodDef.records[index + 1].ParamList - 1 : module.Param.records.Length;
+				for (; parameter < end; parameter++)
+				{
+					int seq = module.Param.records[parameter].Sequence - 1;
+					if (seq == -1)
+					{
+						returnParameter = new ParameterInfoImpl(this, seq, parameter);
+					}
+					else
+					{
+						parameters[seq] = new ParameterInfoImpl(this, seq, parameter);
+					}
+				}
+				for (int i = 0; i < parameters.Length; i++)
+				{
+					if (parameters[i] == null)
+					{
+						parameters[i] = new ParameterInfoImpl(this, i, -1);
+					}
+				}
+				if (returnParameter == null)
+				{
+					returnParameter = new ParameterInfoImpl(this, -1, -1);
+				}
+			}
+		}
+
+		internal override int ParameterCount
+		{
+			get { return this.MethodSignature.GetParameterCount(); }
+		}
+
+		public override ParameterInfo ReturnParameter
+		{
+			get
+			{
+				PopulateParameters();
+				return returnParameter;
+			}
+		}
+
+		public override Type ReturnType
+		{
+			get
+			{
+				return this.ReturnParameter.ParameterType;
+			}
+		}
+
+		public override Type DeclaringType
+		{
+			get { return declaringType.IsModulePseudoType ? null : declaringType; }
+		}
+
+		public override string Name
+		{
+			get { return module.GetString(module.MethodDef.records[index].Name); }
+		}
+
+		public override int MetadataToken
+		{
+			get { return (MethodDefTable.Index << 24) + index + 1; }
+		}
+
+		public override bool IsGenericMethodDefinition
+		{
+			get
+			{
+				PopulateGenericArguments();
+				return typeArgs.Length > 0;
+			}
+		}
+
+		public override bool IsGenericMethod
+		{
+			get { return IsGenericMethodDefinition; }
+		}
+
+		public override Type[] GetGenericArguments()
+		{
+			PopulateGenericArguments();
+			return Util.Copy(typeArgs);
+		}
+
+		private void PopulateGenericArguments()
+		{
+			if (typeArgs == null)
+			{
+				int token = this.MetadataToken;
+				int first = module.GenericParam.FindFirstByOwner(token);
+				if (first == -1)
+				{
+					typeArgs = Type.EmptyTypes;
+				}
+				else
+				{
+					List<Type> list = new List<Type>();
+					int len = module.GenericParam.records.Length;
+					for (int i = first; i < len && module.GenericParam.records[i].Owner == token; i++)
+					{
+						list.Add(new GenericTypeParameter(module, i));
+					}
+					typeArgs = list.ToArray();
+				}
+			}
+		}
+
+		internal override Type GetGenericMethodArgument(int index)
+		{
+			PopulateGenericArguments();
+			return typeArgs[index];
+		}
+
+		internal override int GetGenericMethodArgumentCount()
+		{
+			PopulateGenericArguments();
+			return typeArgs.Length;
+		}
+
+		public override MethodInfo GetGenericMethodDefinition()
+		{
+			if (this.IsGenericMethodDefinition)
+			{
+				return this;
+			}
+			throw new InvalidOperationException();
+		}
+
+		public override MethodInfo MakeGenericMethod(params Type[] typeArguments)
+		{
+			return new GenericMethodInstance(declaringType, this, typeArguments);
+		}
+
+		public override Module Module
+		{
+			get { return module; }
+		}
+
+		internal override IList<CustomAttributeData> GetCustomAttributesData(Type attributeType)
+		{
+			List<CustomAttributeData> list = module.GetCustomAttributes(this.MetadataToken, attributeType);
+			if ((this.Attributes & MethodAttributes.PinvokeImpl) != 0
+				&& (attributeType == null || attributeType.IsAssignableFrom(module.universe.System_Runtime_InteropServices_DllImportAttribute)))
+			{
+				CreateDllImportPseudoCustomAttribute(list);
+			}
+			return list;
+		}
+
+		private void CreateDllImportPseudoCustomAttribute(List<CustomAttributeData> attribs)
+		{
+			int token = this.MetadataToken;
+			// TODO use binary search?
+			for (int i = 0; i < module.ImplMap.records.Length; i++)
+			{
+				if (module.ImplMap.records[i].MemberForwarded == token)
+				{
+					const short NoMangle = 0x0001;
+					const short CharSetMask = 0x0006;
+					const short CharSetNotSpec = 0x0000;
+					const short CharSetAnsi = 0x0002;
+					const short CharSetUnicode = 0x0004;
+					const short CharSetAuto = 0x0006;
+					const short SupportsLastError = 0x0040;
+					const short CallConvMask = 0x0700;
+					const short CallConvWinapi = 0x0100;
+					const short CallConvCdecl = 0x0200;
+					const short CallConvStdcall = 0x0300;
+					const short CallConvThiscall = 0x0400;
+					const short CallConvFastcall = 0x0500;
+					// non-standard flags
+					const short BestFitOn = 0x0010;
+					const short BestFitOff = 0x0020;
+					const short CharMapErrorOn = 0x1000;
+					const short CharMapErrorOff = 0x2000;
+
+					Type type = module.universe.System_Runtime_InteropServices_DllImportAttribute;
+					ConstructorInfo constructor = type.GetConstructor(new Type[] { module.universe.System_String });
+					List<CustomAttributeNamedArgument> list = new List<CustomAttributeNamedArgument>();
+					int flags = module.ImplMap.records[i].MappingFlags;
+					string entryPoint = module.GetString(module.ImplMap.records[i].ImportName);
+					string dllName = module.GetString(module.ModuleRef.records[(module.ImplMap.records[i].ImportScope & 0xFFFFFF) - 1]);
+					System.Runtime.InteropServices.CharSet? charSet;
+					switch (flags & CharSetMask)
+					{
+						case CharSetAnsi:
+							charSet = System.Runtime.InteropServices.CharSet.Ansi;
+							break;
+						case CharSetUnicode:
+							charSet = System.Runtime.InteropServices.CharSet.Unicode;
+							break;
+						case CharSetAuto:
+							charSet = System.Runtime.InteropServices.CharSet.Auto;
+							break;
+						case CharSetNotSpec:
+						default:
+							charSet = null;
+							break;
+					}
+					System.Runtime.InteropServices.CallingConvention callingConvention;
+					switch (flags & CallConvMask)
+					{
+						case CallConvCdecl:
+							callingConvention = System.Runtime.InteropServices.CallingConvention.Cdecl;
+							break;
+						case CallConvFastcall:
+							callingConvention = System.Runtime.InteropServices.CallingConvention.FastCall;
+							break;
+						case CallConvStdcall:
+							callingConvention = System.Runtime.InteropServices.CallingConvention.StdCall;
+							break;
+						case CallConvThiscall:
+							callingConvention = System.Runtime.InteropServices.CallingConvention.ThisCall;
+							break;
+						case CallConvWinapi:
+						default:
+							callingConvention = System.Runtime.InteropServices.CallingConvention.Winapi;
+							break;
+					}
+					list.Add(MakeNamedArgument(type, "EntryPoint", entryPoint));
+					list.Add(MakeNamedArgument(type, "ExactSpelling", flags, NoMangle));
+					list.Add(MakeNamedArgument(type, "SetLastError", flags, SupportsLastError));
+					list.Add(MakeNamedArgument(type, "PreserveSig", (int)GetMethodImplementationFlags(), (int)MethodImplAttributes.PreserveSig));
+					list.Add(MakeNamedArgument(type, "CallingConvention", (int)callingConvention));
+					if (charSet.HasValue)
+					{
+						list.Add(MakeNamedArgument(type, "CharSet", (int)charSet.Value));
+					}
+					if ((flags & (BestFitOn | BestFitOff)) != 0)
+					{
+						list.Add(MakeNamedArgument(type, "BestFitMapping", flags, BestFitOn));
+					}
+					if ((flags & (CharMapErrorOn | CharMapErrorOff)) != 0)
+					{
+						list.Add(MakeNamedArgument(type, "ThrowOnUnmappableChar", flags, CharMapErrorOn));
+					}
+					attribs.Add(new CustomAttributeData(constructor, new object[] { dllName }, list));
+					return;
+				}
+			}
+		}
+
+		private static CustomAttributeNamedArgument MakeNamedArgument(Type type, string field, string value)
+		{
+			return new CustomAttributeNamedArgument(type.GetField(field), new CustomAttributeTypedArgument(type.Module.universe.System_String, value));
+		}
+
+		private static CustomAttributeNamedArgument MakeNamedArgument(Type type, string field, int value)
+		{
+			return new CustomAttributeNamedArgument(type.GetField(field), new CustomAttributeTypedArgument(type.Module.universe.System_Int32, value));
+		}
+
+		private static CustomAttributeNamedArgument MakeNamedArgument(Type type, string field, int flags, int flagMask)
+		{
+			return new CustomAttributeNamedArgument(type.GetField(field), new CustomAttributeTypedArgument(type.Module.universe.System_Boolean, (flags & flagMask) != 0));
+		}
+
+		internal override MethodSignature MethodSignature
+		{
+			get { return lazyMethodSignature ?? (lazyMethodSignature = MethodSignature.ReadSig(module, module.GetBlob(module.MethodDef.records[index].Signature), this)); }
+		}
+
+		internal override int ImportTo(Emit.ModuleBuilder module)
+		{
+			return module.ImportMethodOrField(declaringType, this.Name, this.MethodSignature);
+		}
+	}
+
+	sealed class ParameterInfoImpl : ParameterInfo
+	{
+		private readonly MethodDefImpl method;
+		private readonly int position;
+		private readonly int index;
+
+		internal ParameterInfoImpl(MethodDefImpl method, int position, int index)
+		{
+			this.method = method;
+			this.position = position;
+			this.index = index;
+		}
+
+		public override string Name
+		{
+			get { return index == -1 ? null : ((ModuleReader)this.Module).GetString(this.Module.Param.records[index].Name); }
+		}
+
+		public override Type ParameterType
+		{
+			get { return position == -1 ? method.MethodSignature.GetReturnType(method) : method.MethodSignature.GetParameterType(method, position); }
+		}
+
+		public override ParameterAttributes Attributes
+		{
+			get { return index == -1 ? ParameterAttributes.None : (ParameterAttributes)this.Module.Param.records[index].Flags; }
+		}
+
+		public override int Position
+		{
+			get { return position; }
+		}
+
+		public override object RawDefaultValue
+		{
+			get
+			{
+				if ((this.Attributes & ParameterAttributes.HasDefault) != 0)
+				{
+					return this.Module.Constant.GetRawConstantValue(this.Module, this.MetadataToken);
+				}
+				Universe universe = this.Module.universe;
+				if (this.ParameterType == universe.System_Decimal)
+				{
+					Type attr = universe.System_Runtime_CompilerServices_DecimalConstantAttribute;
+					if (attr != null)
+					{
+						foreach (CustomAttributeData cad in GetCustomAttributesData(attr))
+						{
+							IList<CustomAttributeTypedArgument> args = cad.ConstructorArguments;
+							if (args.Count == 5)
+							{
+								if (args[0].ArgumentType == universe.System_Byte
+									&& args[1].ArgumentType == universe.System_Byte
+									&& args[2].ArgumentType == universe.System_Int32
+									&& args[3].ArgumentType == universe.System_Int32
+									&& args[4].ArgumentType == universe.System_Int32)
+								{
+									return new Decimal((int)args[4].Value, (int)args[3].Value, (int)args[2].Value, (byte)args[1].Value != 0, (byte)args[0].Value);
+								}
+								else if (args[0].ArgumentType == universe.System_Byte
+									&& args[1].ArgumentType == universe.System_Byte
+									&& args[2].ArgumentType == universe.System_UInt32
+									&& args[3].ArgumentType == universe.System_UInt32
+									&& args[4].ArgumentType == universe.System_UInt32)
+								{
+									return new Decimal(unchecked((int)(uint)args[4].Value), unchecked((int)(uint)args[3].Value), unchecked((int)(uint)args[2].Value), (byte)args[1].Value != 0, (byte)args[0].Value);
+								}
+							}
+						}
+					}
+				}
+				if ((this.Attributes & ParameterAttributes.Optional) != 0)
+				{
+					return Missing.Value;
+				}
+				return null;
+			}
+		}
+
+		public override Type[] GetRequiredCustomModifiers()
+		{
+			return Util.Copy(position == -1 ? method.MethodSignature.GetReturnTypeRequiredCustomModifiers(method) : method.MethodSignature.GetParameterRequiredCustomModifiers(method, position));
+		}
+
+		public override Type[] GetOptionalCustomModifiers()
+		{
+			return Util.Copy(position == -1 ? method.MethodSignature.GetReturnTypeOptionalCustomModifiers(method) : method.MethodSignature.GetParameterOptionalCustomModifiers(method, position));
+		}
+
+		public override MemberInfo Member
+		{
+			get
+			{
+				// return the right ConstructorInfo wrapper
+				return method.Module.ResolveMethod(method.MetadataToken);
+			}
+		}
+
+		public override int MetadataToken
+		{
+			get
+			{
+				// for parameters that don't have a row in the Param table, we return 0x08000000 (because index is -1 in that case),
+				// just like .NET
+				return (ParamTable.Index << 24) + index + 1;
+			}
+		}
+
+		internal override Module Module
+		{
+			get { return method.Module; }
+		}
+
+		internal override IList<CustomAttributeData> GetCustomAttributesData(Type attributeType)
+		{
+			IList<CustomAttributeData> list = base.GetCustomAttributesData(attributeType);
+			if ((this.Attributes & ParameterAttributes.HasFieldMarshal) != 0
+				&& (attributeType == null || attributeType.IsAssignableFrom(this.Module.universe.System_Runtime_InteropServices_MarshalAsAttribute)))
+			{
+				list.Add(MarshalSpec.GetMarshalAsAttribute(this.Module, this.MetadataToken));
+			}
+			return list;
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Reader/ModuleReader.cs b/mcs/class/IKVM.Reflection/Reader/ModuleReader.cs
new file mode 100644
index 0000000..3f04d71
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Reader/ModuleReader.cs
@@ -0,0 +1,1028 @@
+/*
+  Copyright (C) 2009-2010 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.IO;
+using System.Text;
+using System.Collections.Generic;
+using IKVM.Reflection.Metadata;
+
+namespace IKVM.Reflection.Reader
+{
+	sealed class StreamHeader
+	{
+		internal uint Offset;
+		internal uint Size;
+		internal string Name;
+
+		internal void Read(BinaryReader br)
+		{
+			Offset = br.ReadUInt32();
+			Size = br.ReadUInt32();
+			byte[] buf = new byte[32];
+			byte b;
+			int len = 0;
+			while ((b = br.ReadByte()) != 0)
+			{
+				buf[len++] = b;
+			}
+			Name = Encoding.UTF8.GetString(buf, 0, len); ;
+			int padding = -1 + ((len + 4) & ~3) - len;
+			br.BaseStream.Seek(padding, SeekOrigin.Current);
+		}
+	}
+
+	sealed class ModuleReader : Module
+	{
+		internal readonly Stream stream;
+		private readonly string location;
+		private Assembly assembly;
+		private readonly PEReader peFile = new PEReader();
+		private readonly CliHeader cliHeader = new CliHeader();
+		private string imageRuntimeVersion;
+		private int metadataStreamVersion;
+		private byte[] stringHeap;
+		private byte[] blobHeap;
+		private byte[] userStringHeap;
+		private byte[] guidHeap;
+		private TypeDefImpl[] typeDefs;
+		private TypeDefImpl moduleType;
+		private Assembly[] assemblyRefs;
+		private Type[] typeRefs;
+		private Type[] typeSpecs;
+		private FieldInfo[] fields;
+		private MethodBase[] methods;
+		private MemberInfo[] memberRefs;
+		private Dictionary<int, string> strings = new Dictionary<int, string>();
+		private Dictionary<string, Type> types = new Dictionary<string, Type>();
+		private Dictionary<string, LazyForwardedType> forwardedTypes = new Dictionary<string, LazyForwardedType>();
+
+		private sealed class LazyForwardedType
+		{
+			private readonly int assemblyRef;
+			private Type type;
+
+			internal LazyForwardedType(int assemblyRef)
+			{
+				this.assemblyRef = assemblyRef;
+			}
+
+			internal Type GetType(ModuleReader module, string typeName)
+			{
+				if (type == null)
+				{
+					Assembly asm = module.ResolveAssemblyRef(assemblyRef);
+					type = asm.GetType(typeName, true);
+				}
+				return type;
+			}
+		}
+
+		internal ModuleReader(AssemblyReader assembly, Universe universe, Stream stream, string location)
+			: base(universe)
+		{
+			this.stream = stream;
+			this.location = location;
+			Read();
+			if (assembly == null && AssemblyTable.records.Length != 0)
+			{
+				assembly = new AssemblyReader(location, this);
+			}
+			this.assembly = assembly;
+		}
+
+		private void Read()
+		{
+			BinaryReader br = new BinaryReader(stream);
+			peFile.Read(br);
+			stream.Seek(peFile.RvaToFileOffset(peFile.GetComDescriptorVirtualAddress()), SeekOrigin.Begin);
+			cliHeader.Read(br);
+			stream.Seek(peFile.RvaToFileOffset(cliHeader.MetaDataRVA), SeekOrigin.Begin);
+			foreach (StreamHeader sh in ReadStreamHeaders(br, out imageRuntimeVersion))
+			{
+				switch (sh.Name)
+				{
+					case "#Strings":
+						stringHeap = ReadHeap(stream, sh);
+						break;
+					case "#Blob":
+						blobHeap = ReadHeap(stream, sh);
+						break;
+					case "#US":
+						userStringHeap = ReadHeap(stream, sh);
+						break;
+					case "#GUID":
+						guidHeap = ReadHeap(stream, sh);
+						break;
+					case "#~":
+						stream.Seek(peFile.RvaToFileOffset(cliHeader.MetaDataRVA + sh.Offset), SeekOrigin.Begin);
+						ReadTables(br);
+						break;
+					default:
+						throw new BadImageFormatException("Unsupported stream: " + sh.Name);
+				}
+			}
+		}
+
+		internal void SetAssembly(Assembly assembly)
+		{
+			this.assembly = assembly;
+		}
+
+		private static StreamHeader[] ReadStreamHeaders(BinaryReader br, out string Version)
+		{
+			uint Signature = br.ReadUInt32();
+			if (Signature != 0x424A5342)
+			{
+				throw new BadImageFormatException("Invalid metadata signature");
+			}
+			ushort MajorVersion = br.ReadUInt16();
+			ushort MinorVersion = br.ReadUInt16();
+			uint Reserved = br.ReadUInt32();
+			uint Length = br.ReadUInt32();
+			byte[] buf = br.ReadBytes((int)Length);
+			Version = Encoding.UTF8.GetString(buf).TrimEnd('\u0000');
+			ushort Flags = br.ReadUInt16();
+			ushort Streams = br.ReadUInt16();
+			StreamHeader[] streamHeaders = new StreamHeader[Streams];
+			for (int i = 0; i < streamHeaders.Length; i++)
+			{
+				streamHeaders[i] = new StreamHeader();
+				streamHeaders[i].Read(br);
+			}
+			return streamHeaders;
+		}
+
+		private void ReadTables(BinaryReader br)
+		{
+			Table[] tables = GetTables();
+			uint Reserved0 = br.ReadUInt32();
+			byte MajorVersion = br.ReadByte();
+			byte MinorVersion = br.ReadByte();
+			metadataStreamVersion = MajorVersion << 16 | MinorVersion;
+			byte HeapSizes = br.ReadByte();
+			byte Reserved7 = br.ReadByte();
+			ulong Valid = br.ReadUInt64();
+			ulong Sorted = br.ReadUInt64();
+			for (int i = 0; i < 64; i++)
+			{
+				if ((Valid & (1UL << i)) != 0)
+				{
+					tables[i].RowCount = br.ReadInt32();
+				}
+				else if (tables[i] != null)
+				{
+					tables[i].RowCount = 0;
+				}
+			}
+			MetadataReader mr = new MetadataReader(this, br, HeapSizes);
+			for (int i = 0; i < 64; i++)
+			{
+				if ((Valid & (1UL << i)) != 0)
+				{
+					tables[i].Read(mr);
+				}
+			}
+		}
+
+		private byte[] ReadHeap(Stream stream, StreamHeader sh)
+		{
+			byte[] buf = new byte[sh.Size];
+			stream.Seek(peFile.RvaToFileOffset(cliHeader.MetaDataRVA + sh.Offset), SeekOrigin.Begin);
+			for (int pos = 0; pos < buf.Length; )
+			{
+				int read = stream.Read(buf, pos, buf.Length - pos);
+				if (read == 0)
+				{
+					throw new BadImageFormatException();
+				}
+				pos += read;
+			}
+			return buf;
+		}
+
+		internal void SeekRVA(int rva)
+		{
+			stream.Seek(peFile.RvaToFileOffset((uint)rva), SeekOrigin.Begin);
+		}
+
+		internal override void GetTypesImpl(List<Type> list)
+		{
+			PopulateTypeDef();
+			foreach (TypeDefImpl type in typeDefs)
+			{
+				if (type != moduleType)
+				{
+					list.Add(type);
+				}
+			}
+		}
+
+		private void PopulateTypeDef()
+		{
+			if (typeDefs == null)
+			{
+				typeDefs = new TypeDefImpl[TypeDef.records.Length];
+				for (int i = 0; i < typeDefs.Length; i++)
+				{
+					TypeDefImpl type = new TypeDefImpl(this, i);
+					typeDefs[i] = type;
+					if (type.IsModulePseudoType)
+					{
+						moduleType = type;
+					}
+					else
+					{
+						types.Add(type.FullName, type);
+					}
+				}
+				// add forwarded types to forwardedTypes dictionary (because Module.GetType(string) should return them)
+				for (int i = 0; i < ExportedType.records.Length; i++)
+				{
+					int implementation = ExportedType.records[i].Implementation;
+					if (implementation >> 24 == AssemblyRefTable.Index)
+					{
+						string typeName = GetTypeName(ExportedType.records[i].TypeNamespace, ExportedType.records[i].TypeName);
+						forwardedTypes.Add(typeName, new LazyForwardedType((implementation & 0xFFFFFF) - 1));
+					}
+				}
+			}
+		}
+
+		internal string GetString(int index)
+		{
+			if (index == 0)
+			{
+				return null;
+			}
+			string str;
+			if (!strings.TryGetValue(index, out str))
+			{
+				int len = 0;
+				while (stringHeap[index + len] != 0)
+				{
+					len++;
+				}
+				str = Encoding.UTF8.GetString(stringHeap, index, len);
+				strings.Add(index, str);
+			}
+			return str;
+		}
+
+		private static int ReadCompressedInt(byte[] buffer, ref int offset)
+		{
+			byte b1 = buffer[offset++];
+			if (b1 <= 0x7F)
+			{
+				return b1;
+			}
+			else if ((b1 & 0xC0) == 0x80)
+			{
+				byte b2 = buffer[offset++];
+				return ((b1 & 0x3F) << 8) | b2;
+			}
+			else
+			{
+				byte b2 = buffer[offset++];
+				byte b3 = buffer[offset++];
+				byte b4 = buffer[offset++];
+				return ((b1 & 0x3F) << 24) + (b2 << 16) + (b3 << 8) + b4;
+			}
+		}
+
+		internal byte[] GetBlobCopy(int blobIndex)
+		{
+			int len = ReadCompressedInt(blobHeap, ref blobIndex);
+			byte[] buf = new byte[len];
+			Buffer.BlockCopy(blobHeap, blobIndex, buf, 0, len);
+			return buf;
+		}
+
+		internal override ByteReader GetBlob(int blobIndex)
+		{
+			return ByteReader.FromBlob(blobHeap, blobIndex);
+		}
+
+		public override string ResolveString(int metadataToken)
+		{
+			string str;
+			if (!strings.TryGetValue(metadataToken, out str))
+			{
+				if ((metadataToken >> 24) != 0x70)
+				{
+					throw new ArgumentOutOfRangeException();
+				}
+				int index = metadataToken & 0xFFFFFF;
+				int len = ReadCompressedInt(userStringHeap, ref index) & ~1;
+				str = Encoding.Unicode.GetString(userStringHeap, index, len);
+				strings.Add(metadataToken, str);
+			}
+			return str;
+		}
+
+		internal Type ResolveType(int metadataToken, IGenericContext context)
+		{
+			switch (metadataToken >> 24)
+			{
+				case TypeDefTable.Index:
+					PopulateTypeDef();
+					return typeDefs[(metadataToken & 0xFFFFFF) - 1];
+				case TypeRefTable.Index:
+					{
+						if (typeRefs == null)
+						{
+							typeRefs = new Type[TypeRef.records.Length];
+						}
+						int index = (metadataToken & 0xFFFFFF) - 1;
+						if (typeRefs[index] == null)
+						{
+							int scope = TypeRef.records[index].ResolutionScope;
+							switch (scope >> 24)
+							{
+								case AssemblyRefTable.Index:
+									{
+										Assembly assembly = ResolveAssemblyRef((scope & 0xFFFFFF) - 1);
+										string typeName = GetTypeName(TypeRef.records[index].TypeNameSpace, TypeRef.records[index].TypeName);
+										Type type = assembly.GetType(typeName);
+										if (type == null)
+										{
+											throw new TypeLoadException(String.Format("Type '{0}' not found in assembly '{1}'", typeName, assembly.FullName));
+										}
+										typeRefs[index] = type;
+										break;
+									}
+								case TypeRefTable.Index:
+									{
+										Type outer = ResolveType(scope, null);
+										typeRefs[index] = outer.GetNestedType(GetString(TypeRef.records[index].TypeName), BindingFlags.Public | BindingFlags.NonPublic);
+										break;
+									}
+								case ModuleTable.Index:
+									if (scope != 0 && scope != 1)
+									{
+										throw new NotImplementedException("self reference scope?");
+									}
+									typeRefs[index] = GetType(GetTypeName(TypeRef.records[index].TypeNameSpace, TypeRef.records[index].TypeName));
+									break;
+								case ModuleRefTable.Index:
+									{
+										Module module = ResolveModuleRef(ModuleRef.records[(scope & 0xFFFFFF) - 1]);
+										string typeName = GetTypeName(TypeRef.records[index].TypeNameSpace, TypeRef.records[index].TypeName);
+										Type type = assembly.GetType(typeName);
+										if (type == null)
+										{
+											throw new TypeLoadException(String.Format("Type '{0}' not found in module '{1}'", typeName, module.Name));
+										}
+										typeRefs[index] = type;
+										break;
+									}
+								default:
+									throw new NotImplementedException("ResolutionScope = " + scope.ToString("X"));
+							}
+						}
+						return typeRefs[index];
+					}
+				case TypeSpecTable.Index:
+					{
+						if (typeSpecs == null)
+						{
+							typeSpecs = new Type[TypeSpec.records.Length];
+						}
+						int index = (metadataToken & 0xFFFFFF) - 1;
+						Type type = typeSpecs[index];
+						if (type == null)
+						{
+							TrackingGenericContext tc = context == null ? null : new TrackingGenericContext(context);
+							type = Signature.ReadTypeSpec(this, ByteReader.FromBlob(blobHeap, TypeSpec.records[index]), tc);
+							if (tc == null || !tc.IsUsed)
+							{
+								typeSpecs[index] = type;
+							}
+						}
+						return type;
+					}
+				default:
+					throw new NotImplementedException(String.Format("0x{0:X}", metadataToken));
+			}
+		}
+
+		private Module ResolveModuleRef(int moduleNameIndex)
+		{
+			string moduleName = GetString(moduleNameIndex);
+			Module module = assembly.GetModule(moduleName);
+			if (module == null)
+			{
+				throw new FileNotFoundException(moduleName);
+			}
+			return module;
+		}
+
+		private sealed class TrackingGenericContext : IGenericContext
+		{
+			private readonly IGenericContext context;
+			private bool used;
+
+			internal TrackingGenericContext(IGenericContext context)
+			{
+				this.context = context;
+			}
+
+			internal bool IsUsed
+			{
+				get { return used; }
+			}
+
+			public Type GetGenericTypeArgument(int index)
+			{
+				used = true;
+				return context.GetGenericTypeArgument(index);
+			}
+
+			public Type GetGenericMethodArgument(int index)
+			{
+				used = true;
+				return context.GetGenericMethodArgument(index);
+			}
+		}
+
+		public override Type ResolveType(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)
+		{
+			if ((metadataToken >> 24) == TypeSpecTable.Index)
+			{
+				return ResolveType(metadataToken, new GenericContext(genericTypeArguments, genericMethodArguments));
+			}
+			else
+			{
+				return ResolveType(metadataToken, null);
+			}
+		}
+
+		private string GetTypeName(int typeNamespace, int typeName)
+		{
+			if (typeNamespace == 0)
+			{
+				return GetString(typeName);
+			}
+			else
+			{
+				return GetString(typeNamespace) + "." + GetString(typeName);
+			}
+		}
+
+		private Assembly ResolveAssemblyRef(int index)
+		{
+			if (assemblyRefs == null)
+			{
+				assemblyRefs = new Assembly[AssemblyRef.RowCount];
+			}
+			if (assemblyRefs[index] == null)
+			{
+				assemblyRefs[index] = ResolveAssemblyRefImpl(ref AssemblyRef.records[index]);
+			}
+			return assemblyRefs[index];
+		}
+
+		private Assembly ResolveAssemblyRefImpl(ref AssemblyRefTable.Record rec)
+		{
+			const int PublicKey = 0x0001;
+			string name = String.Format("{0}, Version={1}.{2}.{3}.{4}, Culture={5}, {6}={7}",
+				GetString(rec.Name),
+				rec.MajorVersion,
+				rec.MinorVersion,
+				rec.BuildNumber,
+				rec.RevisionNumber,
+				rec.Culture == 0 ? "neutral" : GetString(rec.Culture),
+				(rec.Flags & PublicKey) == 0 ? "PublicKeyToken" : "PublicKey",
+				PublicKeyOrTokenToString(rec.PublicKeyOrToken));
+			return universe.Load(name, this.Assembly, true);
+		}
+
+		private string PublicKeyOrTokenToString(int publicKeyOrToken)
+		{
+			if (publicKeyOrToken == 0)
+			{
+				return "null";
+			}
+			ByteReader br = GetBlob(publicKeyOrToken);
+			if (br.Length == 0)
+			{
+				return "null";
+			}
+			StringBuilder sb = new StringBuilder(br.Length * 2);
+			while (br.Length > 0)
+			{
+				sb.AppendFormat("{0:x2}", br.ReadByte());
+			}
+			return sb.ToString();
+		}
+
+		public override Guid ModuleVersionId
+		{
+			get
+			{
+				byte[] buf = new byte[16];
+				Buffer.BlockCopy(guidHeap, 16 * (ModuleTable.records[0].Mvid - 1), buf, 0, 16);
+				return new Guid(buf);
+			}
+		}
+
+		public override string FullyQualifiedName
+		{
+			get { return location ?? "<Unknown>"; }
+		}
+
+		public override string Name
+		{
+			get { return location == null ? "<Unknown>" : System.IO.Path.GetFileName(location); }
+		}
+
+		public override Assembly Assembly
+		{
+			get { return assembly; }
+		}
+
+		internal override Type GetTypeImpl(string typeName)
+		{
+			PopulateTypeDef();
+			Type type;
+			if (!types.TryGetValue(typeName, out type))
+			{
+				LazyForwardedType fw;
+				if (forwardedTypes.TryGetValue(typeName, out fw))
+				{
+					return fw.GetType(this, typeName);
+				}
+			}
+			return type;
+		}
+
+		public override MemberInfo ResolveMember(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)
+		{
+			switch (metadataToken >> 24)
+			{
+				case FieldTable.Index:
+					return ResolveField(metadataToken, genericTypeArguments, genericMethodArguments);
+				case MemberRefTable.Index:
+					return GetMemberRef((metadataToken & 0xFFFFFF) - 1, genericTypeArguments, genericMethodArguments);
+				case MethodDefTable.Index:
+				case MethodSpecTable.Index:
+					return ResolveMethod(metadataToken, genericTypeArguments, genericMethodArguments);
+			}
+			throw new ArgumentOutOfRangeException();
+		}
+
+		internal FieldInfo GetFieldAt(TypeDefImpl owner, int index)
+		{
+			if (fields == null)
+			{
+				fields = new FieldInfo[Field.records.Length];
+			}
+			if (fields[index] == null)
+			{
+				fields[index] = new FieldDefImpl(this, owner ?? FindFieldOwner(index), index);
+			}
+			return fields[index];
+		}
+
+		public override FieldInfo ResolveField(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)
+		{
+			if ((metadataToken >> 24) == FieldTable.Index)
+			{
+				int index = (metadataToken & 0xFFFFFF) - 1;
+				return GetFieldAt(null, index);
+			}
+			else if ((metadataToken >> 24) == MemberRefTable.Index)
+			{
+				FieldInfo field = GetMemberRef((metadataToken & 0xFFFFFF) - 1, genericTypeArguments, genericMethodArguments) as FieldInfo;
+				if (field != null)
+				{
+					return field;
+				}
+			}
+			throw new ArgumentOutOfRangeException();
+		}
+
+		private TypeDefImpl FindFieldOwner(int fieldIndex)
+		{
+			// TODO use binary search?
+			for (int i = 0; i < TypeDef.records.Length; i++)
+			{
+				int field = TypeDef.records[i].FieldList - 1;
+				int end = TypeDef.records.Length > i + 1 ? TypeDef.records[i + 1].FieldList - 1 : Field.records.Length;
+				if (field <= fieldIndex && fieldIndex < end)
+				{
+					PopulateTypeDef();
+					return typeDefs[i];
+				}
+			}
+			throw new InvalidOperationException();
+		}
+
+		internal MethodBase GetMethodAt(TypeDefImpl owner, int index)
+		{
+			if (methods == null)
+			{
+				methods = new MethodBase[MethodDef.records.Length];
+			}
+			if (methods[index] == null)
+			{
+				MethodDefImpl method = new MethodDefImpl(this, owner ?? FindMethodOwner(index), index);
+				methods[index] = method.IsConstructor ? new ConstructorInfoImpl(method) : (MethodBase)method;
+			}
+			return methods[index];
+		}
+
+		private sealed class GenericContext : IGenericContext
+		{
+			private readonly Type[] genericTypeArguments;
+			private readonly Type[] genericMethodArguments;
+
+			internal GenericContext(Type[] genericTypeArguments, Type[] genericMethodArguments)
+			{
+				this.genericTypeArguments = genericTypeArguments;
+				this.genericMethodArguments = genericMethodArguments;
+			}
+
+			public Type GetGenericTypeArgument(int index)
+			{
+				return genericTypeArguments[index];
+			}
+
+			public Type GetGenericMethodArgument(int index)
+			{
+				return genericMethodArguments[index];
+			}
+		}
+
+		public override MethodBase ResolveMethod(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)
+		{
+			if ((metadataToken >> 24) == MethodDefTable.Index)
+			{
+				int index = (metadataToken & 0xFFFFFF) - 1;
+				return GetMethodAt(null, index);
+			}
+			else if ((metadataToken >> 24) == MemberRefTable.Index)
+			{
+				int index = (metadataToken & 0xFFFFFF) - 1;
+				MethodBase method = GetMemberRef(index, genericTypeArguments, genericMethodArguments) as MethodBase;
+				if (method != null)
+				{
+					return method;
+				}
+			}
+			else if ((metadataToken >> 24) == MethodSpecTable.Index)
+			{
+				int index = (metadataToken & 0xFFFFFF) - 1;
+				MethodInfo method = (MethodInfo)ResolveMethod(MethodSpec.records[index].Method, genericTypeArguments, genericMethodArguments);
+				ByteReader instantiation = ByteReader.FromBlob(blobHeap, MethodSpec.records[index].Instantiation);
+				return method.MakeGenericMethod(Signature.ReadMethodSpec(this, instantiation, new GenericContext(genericTypeArguments, genericMethodArguments)));
+			}
+			throw new ArgumentOutOfRangeException();
+		}
+
+		public override Type[] __ResolveOptionalParameterTypes(int metadataToken)
+		{
+			if ((metadataToken >> 24) == MemberRefTable.Index)
+			{
+				int index = (metadataToken & 0xFFFFFF) - 1;
+				int sig = MemberRef.records[index].Signature;
+				return Signature.ReadOptionalParameterTypes(this, GetBlob(sig));
+			}
+			else if ((metadataToken >> 24) == MethodDefTable.Index)
+			{
+				// for convenience, we support passing a MethodDef token as well, because in some places
+				// it makes sense to have a vararg method that is referred to by its methoddef (e.g. ldftn).
+				// Note that MethodSpec doesn't make sense, because generic methods cannot be vararg.
+				return Type.EmptyTypes;
+			}
+			throw new ArgumentOutOfRangeException();
+		}
+
+		public override string ScopeName
+		{
+			get { return GetString(ModuleTable.records[0].Name); }
+		}
+
+		private TypeDefImpl FindMethodOwner(int methodIndex)
+		{
+			// TODO use binary search?
+			for (int i = 0; i < TypeDef.records.Length; i++)
+			{
+				int method = TypeDef.records[i].MethodList - 1;
+				int end = TypeDef.records.Length > i + 1 ? TypeDef.records[i + 1].MethodList - 1 : MethodDef.records.Length;
+				if (method <= methodIndex && methodIndex < end)
+				{
+					PopulateTypeDef();
+					return typeDefs[i];
+				}
+			}
+			throw new InvalidOperationException();
+		}
+
+		private MemberInfo GetMemberRef(int index, Type[] genericTypeArguments, Type[] genericMethodArguments)
+		{
+			if (memberRefs == null)
+			{
+				memberRefs = new MemberInfo[MemberRef.records.Length];
+			}
+			if (memberRefs[index] == null)
+			{
+				int owner = MemberRef.records[index].Class;
+				int sig = MemberRef.records[index].Signature;
+				string name = GetString(MemberRef.records[index].Name);
+				switch (owner >> 24)
+				{
+					case MethodDefTable.Index:
+						return GetMethodAt(null, (owner & 0xFFFFFF) - 1);
+					case ModuleRefTable.Index:
+						memberRefs[index] = ResolveTypeMemberRef(ResolveModuleType(owner), name, ByteReader.FromBlob(blobHeap, sig), genericTypeArguments, genericMethodArguments);
+						break;
+					case TypeDefTable.Index:
+					case TypeRefTable.Index:
+						memberRefs[index] = ResolveTypeMemberRef(ResolveType(owner), name, ByteReader.FromBlob(blobHeap, sig), genericTypeArguments, genericMethodArguments);
+						break;
+					case TypeSpecTable.Index:
+						return ResolveTypeMemberRef(ResolveType(owner, genericTypeArguments, genericMethodArguments), name, ByteReader.FromBlob(blobHeap, sig), genericTypeArguments, genericMethodArguments);
+					default:
+						throw new BadImageFormatException();
+				}
+			}
+			return memberRefs[index];
+		}
+
+		private Type ResolveModuleType(int token)
+		{
+			int index = (token & 0xFFFFFF) - 1;
+			string name = GetString(ModuleRef.records[index]);
+			Module module = assembly.GetModule(name);
+			if (module == null || module.IsResource())
+			{
+				throw new BadImageFormatException();
+			}
+			return module.GetModuleType();
+		}
+
+		private MemberInfo ResolveTypeMemberRef(Type type, string name, ByteReader sig, Type[] genericTypeArguments, Type[] genericMethodArguments)
+		{
+			IGenericContext context;
+			if ((genericTypeArguments == null && genericMethodArguments == null) || type.IsGenericType)
+			{
+				context = type;
+			}
+			else
+			{
+				context = new GenericContext(genericTypeArguments, genericMethodArguments);
+			}
+			if (sig.PeekByte() == Signature.FIELD)
+			{
+				Type org = type;
+				FieldSignature fieldSig = FieldSignature.ReadSig(this, sig, context);
+				do
+				{
+					FieldInfo field = type.FindField(name, fieldSig);
+					if (field != null)
+					{
+						return field;
+					}
+					type = type.BaseType;
+				} while (type != null);
+				throw new MissingFieldException(org.ToString(), name);
+			}
+			else
+			{
+				Type org = type;
+				MethodSignature methodSig = MethodSignature.ReadSig(this, sig, context);
+				do
+				{
+					MethodBase method = type.FindMethod(name, methodSig);
+					if (method != null)
+					{
+						return method;
+					}
+					type = type.BaseType;
+				} while (type != null);
+				throw new MissingMethodException(org.ToString(), name);
+			}
+		}
+
+		internal new ByteReader ResolveSignature(int metadataToken)
+		{
+			if ((metadataToken >> 24) == StandAloneSigTable.Index)
+			{
+				int index = (metadataToken & 0xFFFFFF) - 1;
+				return ByteReader.FromBlob(blobHeap, StandAloneSig.records[index]);
+			}
+			throw new ArgumentOutOfRangeException();
+		}
+
+		public override __StandAloneMethodSig __ResolveStandAloneMethodSig(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)
+		{
+			return MethodSignature.ReadStandAloneMethodSig(this, ResolveSignature(metadataToken), new GenericContext(genericTypeArguments, genericMethodArguments));
+		}
+
+		internal MethodInfo GetEntryPoint()
+		{
+			if (cliHeader.EntryPointToken != 0 && (cliHeader.Flags & CliHeader.COMIMAGE_FLAGS_NATIVE_ENTRYPOINT) == 0)
+			{
+				return (MethodInfo)ResolveMethod((int)cliHeader.EntryPointToken);
+			}
+			return null;
+		}
+
+		internal string[] GetManifestResourceNames()
+		{
+			string[] names = new string[ManifestResource.records.Length];
+			for (int i = 0; i < ManifestResource.records.Length; i++)
+			{
+				names[i] = GetString(ManifestResource.records[i].Name);
+			}
+			return names;
+		}
+
+		internal ManifestResourceInfo GetManifestResourceInfo(string resourceName)
+		{
+			for (int i = 0; i < ManifestResource.records.Length; i++)
+			{
+				if (resourceName == GetString(ManifestResource.records[i].Name))
+				{
+					return new ManifestResourceInfo(this, i);
+				}
+			}
+			return null;
+		}
+
+		internal Stream GetManifestResourceStream(string resourceName)
+		{
+			for (int i = 0; i < ManifestResource.records.Length; i++)
+			{
+				if (resourceName == GetString(ManifestResource.records[i].Name))
+				{
+					if (ManifestResource.records[i].Implementation != 0x26000000)
+					{
+						throw new NotImplementedException();
+					}
+					SeekRVA((int)cliHeader.ResourcesRVA + ManifestResource.records[i].Offset);
+					BinaryReader br = new BinaryReader(stream);
+					int length = br.ReadInt32();
+					return new MemoryStream(br.ReadBytes(length));
+				}
+			}
+			throw new FileNotFoundException();
+		}
+
+		public override AssemblyName[] __GetReferencedAssemblies()
+		{
+			List<AssemblyName> list = new List<AssemblyName>();
+			for (int i = 0; i < AssemblyRef.records.Length; i++)
+			{
+				AssemblyName name = new AssemblyName();
+				name.Name = GetString(AssemblyRef.records[i].Name);
+				name.Version = new Version(
+					AssemblyRef.records[i].MajorVersion,
+					AssemblyRef.records[i].MinorVersion,
+					AssemblyRef.records[i].BuildNumber,
+					AssemblyRef.records[i].RevisionNumber);
+				if (AssemblyRef.records[i].PublicKeyOrToken != 0)
+				{
+					byte[] keyOrToken = GetBlobCopy(AssemblyRef.records[i].PublicKeyOrToken);
+					const int PublicKey = 0x0001;
+					if ((AssemblyRef.records[i].Flags & PublicKey) != 0)
+					{
+						name.SetPublicKey(keyOrToken);
+					}
+					else
+					{
+						name.SetPublicKeyToken(keyOrToken);
+					}
+				}
+				if (AssemblyRef.records[i].Culture != 0)
+				{
+					name.CultureInfo = new System.Globalization.CultureInfo(GetString(AssemblyRef.records[i].Culture));
+				}
+				else
+				{
+					name.CultureInfo = System.Globalization.CultureInfo.InvariantCulture;
+				}
+				name.Flags = (AssemblyNameFlags)AssemblyRef.records[i].Flags;
+				list.Add(name);
+			}
+			return list.ToArray();
+		}
+
+		internal override Type GetModuleType()
+		{
+			PopulateTypeDef();
+			return moduleType;
+		}
+
+		internal string ImageRuntimeVersion
+		{
+			get { return imageRuntimeVersion; }
+		}
+
+		public override int MDStreamVersion
+		{
+			get { return metadataStreamVersion; }
+		}
+
+		public override void __GetDataDirectoryEntry(int index, out int rva, out int length)
+		{
+			peFile.GetDataDirectoryEntry(index, out rva, out length);
+		}
+
+		public override long __RelativeVirtualAddressToFileOffset(int rva)
+		{
+			return peFile.RvaToFileOffset((uint)rva);
+		}
+
+		public override void GetPEKind(out PortableExecutableKinds peKind, out ImageFileMachine machine)
+		{
+			peKind = 0;
+			if ((cliHeader.Flags & CliHeader.COMIMAGE_FLAGS_ILONLY) != 0)
+			{
+				peKind |= PortableExecutableKinds.ILOnly;
+			}
+			if ((cliHeader.Flags & CliHeader.COMIMAGE_FLAGS_32BITREQUIRED) != 0)
+			{
+				peKind |= PortableExecutableKinds.Required32Bit;
+			}
+			if (peFile.OptionalHeader.Magic == IMAGE_OPTIONAL_HEADER.IMAGE_NT_OPTIONAL_HDR64_MAGIC)
+			{
+				peKind |= PortableExecutableKinds.PE32Plus;
+			}
+
+			machine = (ImageFileMachine)peFile.FileHeader.Machine;
+		}
+
+		public override int __Subsystem
+		{
+			get { return peFile.OptionalHeader.Subsystem; }
+		}
+
+		public override IList<CustomAttributeData> __GetPlaceholderAssemblyCustomAttributes(bool multiple, bool security)
+		{
+			string typeName;
+			switch ((multiple ? 1 : 0) + (security ? 2 : 0))
+			{
+				case 0:
+					typeName = "System.Runtime.CompilerServices.AssemblyAttributesGoHere";
+					break;
+				case 1:
+					typeName = "System.Runtime.CompilerServices.AssemblyAttributesGoHereM";
+					break;
+				case 2:
+					typeName = "System.Runtime.CompilerServices.AssemblyAttributesGoHereS";
+					break;
+				case 3:
+				default:
+					typeName = "System.Runtime.CompilerServices.AssemblyAttributesGoHereSM";
+					break;
+			}
+			List<CustomAttributeData> list = new List<CustomAttributeData>();
+			for (int i = 0; i < CustomAttribute.records.Length; i++)
+			{
+				if ((CustomAttribute.records[i].Parent >> 24) == TypeRefTable.Index)
+				{
+					int index = (CustomAttribute.records[i].Parent & 0xFFFFFF) - 1;
+					if (typeName == GetTypeName(TypeRef.records[index].TypeNameSpace, TypeRef.records[index].TypeName))
+					{
+						ConstructorInfo constructor = (ConstructorInfo)ResolveMethod(CustomAttribute.records[i].Type);
+						list.Add(new CustomAttributeData(this.Assembly, constructor, GetBlob(CustomAttribute.records[i].Value)));
+					}
+				}
+			}
+			return list;
+		}
+
+		internal override void Dispose()
+		{
+			stream.Close();
+		}
+
+		internal override void ExportTypes(int fileToken, IKVM.Reflection.Emit.ModuleBuilder manifestModule)
+		{
+			PopulateTypeDef();
+			manifestModule.ExportTypes(typeDefs, fileToken);
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Reader/PEReader.cs b/mcs/class/IKVM.Reflection/Reader/PEReader.cs
new file mode 100644
index 0000000..dcafcf0
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Reader/PEReader.cs
@@ -0,0 +1,318 @@
+/*
+  Copyright (C) 2009 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using BYTE = System.Byte;
+using WORD = System.UInt16;
+using DWORD = System.UInt32;
+using ULONGLONG = System.UInt64;
+using System.IO;
+
+namespace IKVM.Reflection.Reader
+{
+	sealed class MSDOS_HEADER
+	{
+		internal const WORD MAGIC_MZ = 0x5A4D;
+
+		internal WORD signature;	// 'MZ'
+		// skip 58 bytes
+		internal DWORD peSignatureOffset;
+	}
+
+	sealed class IMAGE_NT_HEADERS
+	{
+		public const DWORD MAGIC_SIGNATURE = 0x00004550;	// "PE\0\0"
+
+		public DWORD Signature;
+		public IMAGE_FILE_HEADER FileHeader = new IMAGE_FILE_HEADER();
+		public IMAGE_OPTIONAL_HEADER OptionalHeader = new IMAGE_OPTIONAL_HEADER();
+
+		internal void Read(BinaryReader br)
+		{
+			Signature = br.ReadUInt32();
+			if (Signature != IMAGE_NT_HEADERS.MAGIC_SIGNATURE)
+			{
+				throw new BadImageFormatException();
+			}
+			FileHeader.Read(br);
+			OptionalHeader.Read(br);
+		}
+	}
+
+	sealed class IMAGE_FILE_HEADER
+	{
+		public const WORD IMAGE_FILE_MACHINE_I386 = 0x014c;
+		public const WORD IMAGE_FILE_MACHINE_IA64 = 0x0200;
+		public const WORD IMAGE_FILE_MACHINE_AMD64 = 0x8664;
+
+		public const WORD IMAGE_FILE_32BIT_MACHINE = 0x0100;
+		public const WORD IMAGE_FILE_EXECUTABLE_IMAGE = 0x0002;
+		public const WORD IMAGE_FILE_LARGE_ADDRESS_AWARE = 0x0020;
+		public const WORD IMAGE_FILE_DLL = 0x2000;
+
+		public WORD Machine;
+		public WORD NumberOfSections;
+		public DWORD TimeDateStamp;
+		public DWORD PointerToSymbolTable;
+		public DWORD NumberOfSymbols;
+		public WORD SizeOfOptionalHeader;
+		public WORD Characteristics;
+
+		internal void Read(BinaryReader br)
+		{
+			Machine = br.ReadUInt16();
+			NumberOfSections = br.ReadUInt16();
+			TimeDateStamp = br.ReadUInt32();
+			PointerToSymbolTable = br.ReadUInt32();
+			NumberOfSymbols = br.ReadUInt32();
+			SizeOfOptionalHeader = br.ReadUInt16();
+			Characteristics = br.ReadUInt16();
+		}
+	}
+
+	sealed class IMAGE_OPTIONAL_HEADER
+	{
+		public const WORD IMAGE_NT_OPTIONAL_HDR32_MAGIC = 0x10b;
+		public const WORD IMAGE_NT_OPTIONAL_HDR64_MAGIC = 0x20b;
+
+		public const WORD IMAGE_SUBSYSTEM_WINDOWS_GUI = 2;
+		public const WORD IMAGE_SUBSYSTEM_WINDOWS_CUI = 3;
+
+		public const WORD IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE = 0x0040;
+		public const WORD IMAGE_DLLCHARACTERISTICS_NX_COMPAT = 0x0100;
+		public const WORD IMAGE_DLLCHARACTERISTICS_NO_SEH = 0x0400;
+		public const WORD IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE = 0x8000;
+
+		public WORD Magic;
+		public BYTE MajorLinkerVersion;
+		public BYTE MinorLinkerVersion;
+		public DWORD SizeOfCode;
+		public DWORD SizeOfInitializedData;
+		public DWORD SizeOfUninitializedData;
+		public DWORD AddressOfEntryPoint;
+		public DWORD BaseOfCode;
+		public DWORD BaseOfData;
+		public ULONGLONG ImageBase;
+		public DWORD SectionAlignment;
+		public DWORD FileAlignment;
+		public WORD MajorOperatingSystemVersion;
+		public WORD MinorOperatingSystemVersion;
+		public WORD MajorImageVersion;
+		public WORD MinorImageVersion;
+		public WORD MajorSubsystemVersion;
+		public WORD MinorSubsystemVersion;
+		public DWORD Win32VersionValue;
+		public DWORD SizeOfImage;
+		public DWORD SizeOfHeaders;
+		public DWORD CheckSum;
+		public WORD Subsystem;
+		public WORD DllCharacteristics;
+		public ULONGLONG SizeOfStackReserve;
+		public ULONGLONG SizeOfStackCommit;
+		public ULONGLONG SizeOfHeapReserve;
+		public ULONGLONG SizeOfHeapCommit;
+		public DWORD LoaderFlags;
+		public DWORD NumberOfRvaAndSizes;
+		public IMAGE_DATA_DIRECTORY[] DataDirectory;
+
+		internal void Read(BinaryReader br)
+		{
+			Magic = br.ReadUInt16();
+			if (Magic != IMAGE_NT_OPTIONAL_HDR32_MAGIC && Magic != IMAGE_NT_OPTIONAL_HDR64_MAGIC)
+			{
+				throw new BadImageFormatException();
+			}
+			MajorLinkerVersion = br.ReadByte();
+			MinorLinkerVersion = br.ReadByte();
+			SizeOfCode = br.ReadUInt32();
+			SizeOfInitializedData = br.ReadUInt32();
+			SizeOfUninitializedData = br.ReadUInt32();
+			AddressOfEntryPoint = br.ReadUInt32();
+			BaseOfCode = br.ReadUInt32();
+			if (Magic == IMAGE_NT_OPTIONAL_HDR32_MAGIC)
+			{
+				BaseOfData = br.ReadUInt32();
+				ImageBase = br.ReadUInt32();
+			}
+			else
+			{
+				ImageBase = br.ReadUInt64();
+			}
+			SectionAlignment = br.ReadUInt32();
+			FileAlignment = br.ReadUInt32();
+			MajorOperatingSystemVersion = br.ReadUInt16();
+			MinorOperatingSystemVersion = br.ReadUInt16();
+			MajorImageVersion = br.ReadUInt16();
+			MinorImageVersion = br.ReadUInt16();
+			MajorSubsystemVersion = br.ReadUInt16();
+			MinorSubsystemVersion = br.ReadUInt16();
+			Win32VersionValue = br.ReadUInt32();
+			SizeOfImage = br.ReadUInt32();
+			SizeOfHeaders = br.ReadUInt32();
+			CheckSum = br.ReadUInt32();
+			Subsystem = br.ReadUInt16();
+			DllCharacteristics = br.ReadUInt16();
+			if (Magic == IMAGE_NT_OPTIONAL_HDR32_MAGIC)
+			{
+				SizeOfStackReserve = br.ReadUInt32();
+				SizeOfStackCommit = br.ReadUInt32();
+				SizeOfHeapReserve = br.ReadUInt32();
+				SizeOfHeapCommit = br.ReadUInt32();
+			}
+			else
+			{
+				SizeOfStackReserve = br.ReadUInt64();
+				SizeOfStackCommit = br.ReadUInt64();
+				SizeOfHeapReserve = br.ReadUInt64();
+				SizeOfHeapCommit = br.ReadUInt64();
+			}
+			LoaderFlags = br.ReadUInt32();
+			NumberOfRvaAndSizes = br.ReadUInt32();
+			DataDirectory = new IMAGE_DATA_DIRECTORY[NumberOfRvaAndSizes];
+			for (uint i = 0; i < NumberOfRvaAndSizes; i++)
+			{
+				DataDirectory[i] = new IMAGE_DATA_DIRECTORY();
+				DataDirectory[i].Read(br);
+			}
+		}
+	}
+
+	struct IMAGE_DATA_DIRECTORY
+	{
+		public DWORD VirtualAddress;
+		public DWORD Size;
+
+		internal void Read(BinaryReader br)
+		{
+			VirtualAddress = br.ReadUInt32();
+			Size = br.ReadUInt32();
+		}
+	}
+
+	class SectionHeader
+	{
+		public const DWORD IMAGE_SCN_CNT_CODE = 0x00000020;
+		public const DWORD IMAGE_SCN_CNT_INITIALIZED_DATA = 0x00000040;
+		public const DWORD IMAGE_SCN_MEM_DISCARDABLE = 0x02000000;
+		public const DWORD IMAGE_SCN_MEM_EXECUTE = 0x20000000;
+		public const DWORD IMAGE_SCN_MEM_READ = 0x40000000;
+		public const DWORD IMAGE_SCN_MEM_WRITE = 0x80000000;
+
+		public string Name;		// 8 byte UTF8 encoded 0-padded
+		public DWORD VirtualSize;
+		public DWORD VirtualAddress;
+		public DWORD SizeOfRawData;
+		public DWORD PointerToRawData;
+		public DWORD PointerToRelocations;
+		public DWORD PointerToLinenumbers;
+		public WORD NumberOfRelocations;
+		public WORD NumberOfLinenumbers;
+		public DWORD Characteristics;
+
+		internal void Read(BinaryReader br)
+		{
+			char[] name = new char[8];
+			int len = 8;
+			for (int i = 0; i < 8; i++)
+			{
+				byte b = br.ReadByte();
+				name[i] = (char)b;
+				if (b == 0 && len == 8)
+				{
+					len = i;
+				}
+			}
+			Name = new String(name, 0, len);
+			VirtualSize = br.ReadUInt32();
+			VirtualAddress = br.ReadUInt32();
+			SizeOfRawData = br.ReadUInt32();
+			PointerToRawData = br.ReadUInt32();
+			PointerToRelocations = br.ReadUInt32();
+			PointerToLinenumbers = br.ReadUInt32();
+			NumberOfRelocations = br.ReadUInt16();
+			NumberOfLinenumbers = br.ReadUInt16();
+			Characteristics = br.ReadUInt32();
+		}
+	}
+
+	sealed class PEReader
+	{
+		private MSDOS_HEADER msdos = new MSDOS_HEADER();
+		private IMAGE_NT_HEADERS headers = new IMAGE_NT_HEADERS();
+		private SectionHeader[] sections;
+
+		internal void Read(BinaryReader br)
+		{
+			msdos.signature = br.ReadUInt16();
+			br.BaseStream.Seek(58, SeekOrigin.Current);
+			msdos.peSignatureOffset = br.ReadUInt32();
+
+			if (msdos.signature != MSDOS_HEADER.MAGIC_MZ)
+			{
+				throw new BadImageFormatException();
+			}
+
+			br.BaseStream.Seek(msdos.peSignatureOffset, SeekOrigin.Begin);
+			headers.Read(br);
+			sections = new SectionHeader[headers.FileHeader.NumberOfSections];
+			for (int i = 0; i < sections.Length; i++)
+			{
+				sections[i] = new SectionHeader();
+				sections[i].Read(br);
+			}
+		}
+
+		internal IMAGE_FILE_HEADER FileHeader
+		{
+			get { return headers.FileHeader; }
+		}
+
+		internal IMAGE_OPTIONAL_HEADER OptionalHeader
+		{
+			get { return headers.OptionalHeader; }
+		}
+
+		internal DWORD GetComDescriptorVirtualAddress()
+		{
+			return headers.OptionalHeader.DataDirectory[14].VirtualAddress;
+		}
+
+		internal void GetDataDirectoryEntry(int index, out int rva, out int length)
+		{
+			rva = (int)headers.OptionalHeader.DataDirectory[index].VirtualAddress;
+			length = (int)headers.OptionalHeader.DataDirectory[index].Size;
+		}
+
+		internal long RvaToFileOffset(DWORD rva)
+		{
+			for (int i = 0; i < sections.Length; i++)
+			{
+				if (rva >= sections[i].VirtualAddress && rva < sections[i].VirtualAddress + sections[i].VirtualSize)
+				{
+					return sections[i].PointerToRawData + rva - sections[i].VirtualAddress;
+				}
+			}
+			throw new BadImageFormatException();
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Reader/PropertyInfoImpl.cs b/mcs/class/IKVM.Reflection/Reader/PropertyInfoImpl.cs
new file mode 100644
index 0000000..ea95393
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Reader/PropertyInfoImpl.cs
@@ -0,0 +1,156 @@
+/*
+  Copyright (C) 2009 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Collections.Generic;
+using System.Text;
+using IKVM.Reflection.Metadata;
+
+namespace IKVM.Reflection.Reader
+{
+	sealed class PropertyInfoImpl : PropertyInfo
+	{
+		private readonly ModuleReader module;
+		private readonly Type declaringType;
+		private readonly int index;
+		private PropertySignature sig;
+		private bool isPublic;
+		private bool isStatic;
+		private bool flagsCached;
+
+		internal PropertyInfoImpl(ModuleReader module, Type declaringType, int index)
+		{
+			this.module = module;
+			this.declaringType = declaringType;
+			this.index = index;
+		}
+
+		public override bool Equals(object obj)
+		{
+			PropertyInfoImpl other = obj as PropertyInfoImpl;
+			return other != null && other.DeclaringType == declaringType && other.index == index;
+		}
+
+		public override int GetHashCode()
+		{
+			return declaringType.GetHashCode() * 77 + index;
+		}
+
+		internal override PropertySignature PropertySignature
+		{
+			get
+			{
+				if (sig == null)
+				{
+					sig = PropertySignature.ReadSig(module, module.GetBlob(module.Property.records[index].Type), declaringType);
+				}
+				return sig;
+			}
+		}
+
+		public override PropertyAttributes Attributes
+		{
+			get { return (PropertyAttributes)module.Property.records[index].Flags; }
+		}
+
+		public override object GetRawConstantValue()
+		{
+			return module.Constant.GetRawConstantValue(module, this.MetadataToken);
+		}
+
+		public override bool CanRead
+		{
+			get { return GetGetMethod(true) != null; }
+		}
+
+		public override bool CanWrite
+		{
+			get { return GetSetMethod(true) != null; }
+		}
+
+		public override MethodInfo GetGetMethod(bool nonPublic)
+		{
+			return module.MethodSemantics.GetMethod(module, this.MetadataToken, nonPublic, MethodSemanticsTable.Getter);
+		}
+
+		public override MethodInfo GetSetMethod(bool nonPublic)
+		{
+			return module.MethodSemantics.GetMethod(module, this.MetadataToken, nonPublic, MethodSemanticsTable.Setter);
+		}
+
+		public override MethodInfo[] GetAccessors(bool nonPublic)
+		{
+			return module.MethodSemantics.GetMethods(module, this.MetadataToken, nonPublic, MethodSemanticsTable.Getter | MethodSemanticsTable.Setter | MethodSemanticsTable.Other);
+		}
+
+		public override Type DeclaringType
+		{
+			get { return declaringType; }
+		}
+
+		public override Module Module
+		{
+			get { return module; }
+		}
+
+		public override int MetadataToken
+		{
+			get { return (PropertyTable.Index << 24) + index + 1; }
+		}
+
+		public override string Name
+		{
+			get { return module.GetString(module.Property.records[index].Name); }
+		}
+
+		internal override bool IsPublic
+		{
+			get
+			{
+				if (!flagsCached)
+				{
+					ComputeFlags();
+				}
+				return isPublic;
+			}
+		}
+
+		internal override bool IsStatic
+		{
+			get
+			{
+				if (!flagsCached)
+				{
+					ComputeFlags();
+				}
+				return isStatic;
+			}
+		}
+
+		private void ComputeFlags()
+		{
+			module.MethodSemantics.ComputeFlags(module, this.MetadataToken, out isPublic, out isStatic);
+			flagsCached = true;
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Reader/ResourceModule.cs b/mcs/class/IKVM.Reflection/Reader/ResourceModule.cs
new file mode 100644
index 0000000..e80170d
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Reader/ResourceModule.cs
@@ -0,0 +1,132 @@
+/*
+  Copyright (C) 2009 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Collections.Generic;
+
+namespace IKVM.Reflection.Reader
+{
+	sealed class ResourceModule : Module
+	{
+		private readonly Assembly assembly;
+		private readonly string scopeName;
+		private readonly string location;
+
+		internal ResourceModule(Assembly assembly, string scopeName, string location)
+			: base(assembly.universe)
+		{
+			this.assembly = assembly;
+			this.scopeName = scopeName;
+			this.location = location;
+		}
+
+		public override int MDStreamVersion
+		{
+			get { throw new NotSupportedException(); }
+		}
+
+		public override bool IsResource()
+		{
+			return true;
+		}
+
+		public override Assembly Assembly
+		{
+			get { return assembly; }
+		}
+
+		public override string FullyQualifiedName
+		{
+			get { return location ?? "<Unknown>"; }
+		}
+
+		public override string Name
+		{
+			get { return location == null ? "<Unknown>" : System.IO.Path.GetFileName(location); }
+		}
+
+		public override string ScopeName
+		{
+			get { return scopeName; }
+		}
+
+		public override Guid ModuleVersionId
+		{
+			get { throw new NotSupportedException(); }
+		}
+
+		public override Type ResolveType(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)
+		{
+			throw new NotSupportedException();
+		}
+
+		public override MethodBase ResolveMethod(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)
+		{
+			throw new NotSupportedException();
+		}
+
+		public override FieldInfo ResolveField(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)
+		{
+			throw new NotSupportedException();
+		}
+
+		public override MemberInfo ResolveMember(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)
+		{
+			throw new NotSupportedException();
+		}
+
+		public override string ResolveString(int metadataToken)
+		{
+			throw new NotSupportedException();
+		}
+
+		public override Type[] __ResolveOptionalParameterTypes(int metadataToken)
+		{
+			throw new NotSupportedException();
+		}
+
+		public override AssemblyName[] __GetReferencedAssemblies()
+		{
+			throw new NotSupportedException();
+		}
+
+		internal override Type GetTypeImpl(string typeName)
+		{
+			return null;
+		}
+
+		internal override void GetTypesImpl(List<Type> list)
+		{
+		}
+
+		internal override Type GetModuleType()
+		{
+			throw new InvalidOperationException();
+		}
+
+		internal override ByteReader GetBlob(int blobIndex)
+		{
+			throw new InvalidOperationException();
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Reader/TypeDefImpl.cs b/mcs/class/IKVM.Reflection/Reader/TypeDefImpl.cs
new file mode 100644
index 0000000..ec6aba1
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Reader/TypeDefImpl.cs
@@ -0,0 +1,378 @@
+/*
+  Copyright (C) 2009 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Runtime.InteropServices;
+using IKVM.Reflection.Metadata;
+
+namespace IKVM.Reflection.Reader
+{
+	sealed class TypeDefImpl : Type
+	{
+		private readonly ModuleReader module;
+		private readonly int index;
+		private readonly string typeName;
+		private readonly string typeNamespace;
+		private Type[] typeArgs;
+
+		internal TypeDefImpl(ModuleReader module, int index)
+		{
+			this.module = module;
+			this.index = index;
+			this.typeName = TypeNameParser.Escape(module.GetString(module.TypeDef.records[index].TypeName));
+			this.typeNamespace = TypeNameParser.Escape(module.GetString(module.TypeDef.records[index].TypeNamespace));
+		}
+
+		public override Type BaseType
+		{
+			get
+			{
+				int extends = module.TypeDef.records[index].Extends;
+				if ((extends & 0xFFFFFF) == 0)
+				{
+					return null;
+				}
+				return module.ResolveType(extends, this);
+			}
+		}
+
+		public override TypeAttributes Attributes
+		{
+			get { return (TypeAttributes)module.TypeDef.records[index].Flags; }
+		}
+
+		public override EventInfo[] __GetDeclaredEvents()
+		{
+			int token = this.MetadataToken;
+			// TODO use binary search?
+			for (int i = 0; i < module.EventMap.records.Length; i++)
+			{
+				if (module.EventMap.records[i].Parent == token)
+				{
+					int evt = module.EventMap.records[i].EventList - 1;
+					int end = module.EventMap.records.Length > i + 1 ? module.EventMap.records[i + 1].EventList - 1 : module.Event.records.Length;
+					EventInfo[] events = new EventInfo[end - evt];
+					for (int j = 0; evt < end; evt++, j++)
+					{
+						events[j] = new EventInfoImpl(module, this, evt);
+					}
+					return events;
+				}
+			}
+			return Empty<EventInfo>.Array;
+		}
+
+		public override FieldInfo[] __GetDeclaredFields()
+		{
+			int field = module.TypeDef.records[index].FieldList - 1;
+			int end = module.TypeDef.records.Length > index + 1 ? module.TypeDef.records[index + 1].FieldList - 1 : module.Field.records.Length;
+			FieldInfo[] fields = new FieldInfo[end - field];
+			for (int i = 0; field < end; i++, field++)
+			{
+				fields[i] = module.GetFieldAt(this, field);
+			}
+			return fields;
+		}
+
+		public override Type[] __GetDeclaredInterfaces()
+		{
+			int token = this.MetadataToken;
+			List<Type> list = new List<Type>();
+			// TODO use binary search?
+			for (int i = 0; i < module.InterfaceImpl.records.Length; i++)
+			{
+				if (module.InterfaceImpl.records[i].Class == token)
+				{
+					list.Add(module.ResolveType(module.InterfaceImpl.records[i].Interface, this));
+				}
+			}
+			return list.ToArray();
+		}
+
+		public override MethodBase[] __GetDeclaredMethods()
+		{
+			int method = module.TypeDef.records[index].MethodList - 1;
+			int end = module.TypeDef.records.Length > index + 1 ? module.TypeDef.records[index + 1].MethodList - 1 : module.MethodDef.records.Length;
+			MethodBase[] methods = new MethodBase[end - method];
+			for (int i = 0; method < end; method++, i++)
+			{
+				methods[i] = module.GetMethodAt(this, method);
+			}
+			return methods;
+		}
+
+		public override __MethodImplMap __GetMethodImplMap()
+		{
+			List<MethodInfo> bodies = new List<MethodInfo>();
+			List<List<MethodInfo>> declarations = new List<List<MethodInfo>>();
+			int token = this.MetadataToken;
+			// TODO use binary search?
+			for (int i = 0; i < module.MethodImpl.records.Length; i++)
+			{
+				if (module.MethodImpl.records[i].Class == token)
+				{
+					MethodInfo body = (MethodInfo)module.ResolveMethod(module.MethodImpl.records[i].MethodBody, typeArgs, null);
+					int index = bodies.IndexOf(body);
+					if (index == -1)
+					{
+						index = bodies.Count;
+						bodies.Add(body);
+						declarations.Add(new List<MethodInfo>());
+					}
+					MethodInfo declaration = (MethodInfo)module.ResolveMethod(module.MethodImpl.records[i].MethodDeclaration, typeArgs, null);
+					declarations[index].Add(declaration);
+				}
+			}
+			__MethodImplMap map = new __MethodImplMap();
+			map.TargetType = this;
+			map.MethodBodies = bodies.ToArray();
+			map.MethodDeclarations = new MethodInfo[declarations.Count][];
+			for (int i = 0; i < map.MethodDeclarations.Length; i++)
+			{
+				map.MethodDeclarations[i] = declarations[i].ToArray();
+			}
+			return map;
+		}
+
+		public override Type[] __GetDeclaredTypes()
+		{
+			int token = this.MetadataToken;
+			List<Type> list = new List<Type>();
+			// TODO use binary search?
+			for (int i = 0; i < module.NestedClass.records.Length; i++)
+			{
+				if (module.NestedClass.records[i].EnclosingClass == token)
+				{
+					list.Add(module.ResolveType(module.NestedClass.records[i].NestedClass));
+				}
+			}
+			return list.ToArray();
+		}
+
+		public override PropertyInfo[] __GetDeclaredProperties()
+		{
+			int token = this.MetadataToken;
+			// TODO use binary search?
+			for (int i = 0; i < module.PropertyMap.records.Length; i++)
+			{
+				if (module.PropertyMap.records[i].Parent == token)
+				{
+					int property = module.PropertyMap.records[i].PropertyList - 1;
+					int end = module.PropertyMap.records.Length > i + 1 ? module.PropertyMap.records[i + 1].PropertyList - 1 : module.Property.records.Length;
+					PropertyInfo[] properties = new PropertyInfo[end - property];
+					for (int j = 0; property < end; property++, j++)
+					{
+						properties[j] = new PropertyInfoImpl(module, this, property);
+					}
+					return properties;
+				}
+			}
+			return Empty<PropertyInfo>.Array;
+		}
+
+		public override string Name
+		{
+			get { return typeName; }
+		}
+
+		public override string Namespace
+		{
+			get { return typeNamespace; }
+		}
+
+		public override Type UnderlyingSystemType
+		{
+			get { return this; }
+		}
+
+		public override int MetadataToken
+		{
+			get { return (TypeDefTable.Index << 24) + index + 1; }
+		}
+
+		public override Type[] GetGenericArguments()
+		{
+			PopulateGenericArguments();
+			return Util.Copy(typeArgs);
+		}
+
+		private void PopulateGenericArguments()
+		{
+			if (typeArgs == null)
+			{
+				int token = this.MetadataToken;
+				int first = module.GenericParam.FindFirstByOwner(token);
+				if (first == -1)
+				{
+					typeArgs = Type.EmptyTypes;
+				}
+				else
+				{
+					List<Type> list = new List<Type>();
+					int len = module.GenericParam.records.Length;
+					for (int i = first; i < len && module.GenericParam.records[i].Owner == token; i++)
+					{
+						list.Add(new GenericTypeParameter(module, i));
+					}
+					typeArgs = list.ToArray();
+				}
+			}
+		}
+
+		internal override Type GetGenericTypeArgument(int index)
+		{
+			PopulateGenericArguments();
+			return typeArgs[index];
+		}
+
+		public override Type[][] __GetGenericArgumentsOptionalCustomModifiers()
+		{
+			PopulateGenericArguments();
+			return Util.Copy(new Type[typeArgs.Length][]);
+		}
+
+		public override Type[][] __GetGenericArgumentsRequiredCustomModifiers()
+		{
+			PopulateGenericArguments();
+			return Util.Copy(new Type[typeArgs.Length][]);
+		}
+
+		public override bool IsGenericType
+		{
+			get { return IsGenericTypeDefinition; }
+		}
+
+		public override bool IsGenericTypeDefinition
+		{
+			get { return module.GenericParam.FindFirstByOwner(this.MetadataToken) != -1; }
+		}
+
+		public override Type GetGenericTypeDefinition()
+		{
+			if (IsGenericTypeDefinition)
+			{
+				return this;
+			}
+			throw new InvalidOperationException();
+		}
+
+		public override string ToString()
+		{
+			StringBuilder sb = new StringBuilder(this.FullName);
+			string sep = "[";
+			foreach (Type arg in GetGenericArguments())
+			{
+				sb.Append(sep);
+				sb.Append(arg);
+				sep = ",";
+			}
+			if (sep != "[")
+			{
+				sb.Append(']');
+			}
+			return sb.ToString();
+		}
+
+		public override Type DeclaringType
+		{
+			get
+			{
+				// note that we cannot use Type.IsNested for this, because that calls DeclaringType
+				if ((this.Attributes & TypeAttributes.VisibilityMask & ~TypeAttributes.Public) == 0)
+				{
+					return null;
+				}
+				// TODO use binary search (if sorted)
+				int token = this.MetadataToken;
+				for (int i = 0; i < module.NestedClass.records.Length; i++)
+				{
+					if (module.NestedClass.records[i].NestedClass == token)
+					{
+						return module.ResolveType(module.NestedClass.records[i].EnclosingClass, null, null);
+					}
+				}
+				throw new InvalidOperationException();
+			}
+		}
+
+		public override StructLayoutAttribute StructLayoutAttribute
+		{
+			get
+			{
+				StructLayoutAttribute layout;
+				switch (this.Attributes & TypeAttributes.LayoutMask)
+				{
+					case TypeAttributes.AutoLayout:
+						return null;
+					case TypeAttributes.SequentialLayout:
+						layout = new StructLayoutAttribute(LayoutKind.Sequential);
+						break;
+					case TypeAttributes.ExplicitLayout:
+						layout = new StructLayoutAttribute(LayoutKind.Explicit);
+						break;
+					default:
+						throw new BadImageFormatException();
+				}
+				int token = this.MetadataToken;
+				// TODO use binary search?
+				for (int i = 0; i < module.ClassLayout.records.Length; i++)
+				{
+					if (module.ClassLayout.records[i].Parent == token)
+					{
+						layout.Pack = module.ClassLayout.records[i].PackingSize;
+						layout.Size = module.ClassLayout.records[i].ClassSize;
+						switch (this.Attributes & TypeAttributes.StringFormatMask)
+						{
+							case TypeAttributes.AnsiClass:
+								layout.CharSet = CharSet.Ansi;
+								break;
+							case TypeAttributes.UnicodeClass:
+								layout.CharSet = CharSet.Unicode;
+								break;
+							case TypeAttributes.AutoClass:
+								layout.CharSet = CharSet.Auto;
+								break;
+							default:
+								layout.CharSet = CharSet.None;
+								break;
+						}
+						return layout;
+					}
+				}
+				return null;
+			}
+		}
+
+		public override Module Module
+		{
+			get { return module; }
+		}
+
+		internal override bool IsModulePseudoType
+		{
+			get { return index == 0; }
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Signature.cs b/mcs/class/IKVM.Reflection/Signature.cs
new file mode 100644
index 0000000..7924c4f
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Signature.cs
@@ -0,0 +1,798 @@
+/*
+  Copyright (C) 2009-2010 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.IO;
+using System.Text;
+using CallingConvention = System.Runtime.InteropServices.CallingConvention;
+using IKVM.Reflection.Reader;
+using IKVM.Reflection.Emit;
+using IKVM.Reflection.Writer;
+using IKVM.Reflection.Metadata;
+
+namespace IKVM.Reflection
+{
+	abstract class Signature
+	{
+		internal const byte DEFAULT = 0x00;
+		internal const byte VARARG = 0x05;
+		internal const byte GENERIC = 0x10;
+		internal const byte HASTHIS = 0x20;
+		internal const byte EXPLICITTHIS = 0x40;
+		internal const byte FIELD = 0x06;
+		internal const byte LOCAL_SIG = 0x07;
+		internal const byte PROPERTY = 0x08;
+		internal const byte GENERICINST = 0x0A;
+		internal const byte SENTINEL = 0x41;
+		internal const byte ELEMENT_TYPE_VOID = 0x01;
+		internal const byte ELEMENT_TYPE_BOOLEAN = 0x02;
+		internal const byte ELEMENT_TYPE_CHAR = 0x03;
+		internal const byte ELEMENT_TYPE_I1 = 0x04;
+		internal const byte ELEMENT_TYPE_U1 = 0x05;
+		internal const byte ELEMENT_TYPE_I2 = 0x06;
+		internal const byte ELEMENT_TYPE_U2 = 0x07;
+		internal const byte ELEMENT_TYPE_I4 = 0x08;
+		internal const byte ELEMENT_TYPE_U4 = 0x09;
+		internal const byte ELEMENT_TYPE_I8 = 0x0a;
+		internal const byte ELEMENT_TYPE_U8 = 0x0b;
+		internal const byte ELEMENT_TYPE_R4 = 0x0c;
+		internal const byte ELEMENT_TYPE_R8 = 0x0d;
+		internal const byte ELEMENT_TYPE_STRING = 0x0e;
+		internal const byte ELEMENT_TYPE_PTR = 0x0f;
+		internal const byte ELEMENT_TYPE_BYREF = 0x10;
+		internal const byte ELEMENT_TYPE_VALUETYPE = 0x11;
+		internal const byte ELEMENT_TYPE_CLASS = 0x12;
+		internal const byte ELEMENT_TYPE_VAR = 0x13;
+		internal const byte ELEMENT_TYPE_ARRAY = 0x14;
+		internal const byte ELEMENT_TYPE_GENERICINST = 0x15;
+		internal const byte ELEMENT_TYPE_TYPEDBYREF = 0x16;
+		internal const byte ELEMENT_TYPE_I = 0x18;
+		internal const byte ELEMENT_TYPE_U = 0x19;
+		internal const byte ELEMENT_TYPE_FNPTR = 0x1b;
+		internal const byte ELEMENT_TYPE_OBJECT = 0x1c;
+		internal const byte ELEMENT_TYPE_SZARRAY = 0x1d;
+		internal const byte ELEMENT_TYPE_MVAR = 0x1e;
+		internal const byte ELEMENT_TYPE_CMOD_REQD = 0x1f;
+		internal const byte ELEMENT_TYPE_CMOD_OPT = 0x20;
+		internal const byte ELEMENT_TYPE_PINNED = 0x45;
+
+		internal abstract void WriteSig(ModuleBuilder module, ByteBuffer bb);
+
+		private static Type ReadGenericInst(ModuleReader module, ByteReader br, IGenericContext context)
+		{
+			switch (br.ReadByte())
+			{
+				case ELEMENT_TYPE_CLASS:
+				case ELEMENT_TYPE_VALUETYPE:
+					break;
+				default:
+					throw new BadImageFormatException();
+			}
+			Type type = ReadTypeDefOrRefEncoded(module, br, context);
+			if (!type.IsGenericTypeDefinition)
+			{
+				throw new BadImageFormatException();
+			}
+			int genArgCount = br.ReadCompressedInt();
+			Type[] args = new Type[genArgCount];
+			Type[][] reqmod = null;
+			Type[][] optmod = null;
+			for (int i = 0; i < genArgCount; i++)
+			{
+				// LAMESPEC the Type production (23.2.12) doesn't include CustomMod* for genericinst, but C++ uses it, the verifier allows it and ildasm also supports it
+				CustomModifiers mods = ReadCustomModifiers(module, br, context);
+				if (mods.required != null || mods.optional != null)
+				{
+					if (reqmod == null)
+					{
+						reqmod = new Type[genArgCount][];
+						optmod = new Type[genArgCount][];
+					}
+					reqmod[i] = mods.required;
+					optmod[i] = mods.optional;
+				}
+				args[i] = ReadType(module, br, context);
+			}
+			return GenericTypeInstance.Make(type, args, reqmod, optmod);
+		}
+
+		internal static Type ReadTypeSpec(ModuleReader module, ByteReader br, IGenericContext context)
+		{
+			// LAMESPEC a TypeSpec can contain custom modifiers (C++/CLI generates "newarr (TypeSpec with custom modifiers)")
+			SkipCustomModifiers(br);
+			// LAMESPEC anything can be adorned by (useless) custom modifiers
+			// also, VAR and MVAR are also used in TypeSpec (contrary to what the spec says)
+			return ReadType(module, br, context);
+		}
+
+		private static Type ReadFunctionPointer(ModuleReader module, ByteReader br, IGenericContext context)
+		{
+			// TODO like .NET we return System.IntPtr here, but ideally we should fire an event in Universe that
+			// the user can hook to provide a custom type (or we simply should build in full support for function pointer types)
+			MethodSignature.ReadStandAloneMethodSig(module, br, context);
+			return module.universe.System_IntPtr;
+		}
+
+		internal static Type[] ReadMethodSpec(ModuleReader module, ByteReader br, IGenericContext context)
+		{
+			if (br.ReadByte() != GENERICINST)
+			{
+				throw new BadImageFormatException();
+			}
+			Type[] args = new Type[br.ReadCompressedInt()];
+			for (int i = 0; i < args.Length; i++)
+			{
+				args[i] = ReadType(module, br, context);
+			}
+			return args;
+		}
+
+		private static int ReadArrayShape(ByteReader br)
+		{
+			int rank = br.ReadCompressedInt();
+			int numSizes = br.ReadCompressedInt();
+			for (int i = 0; i < numSizes; i++)
+			{
+				br.ReadCompressedInt();
+			}
+			int numLoBounds = br.ReadCompressedInt();
+			for (int i = 0; i < numLoBounds; i++)
+			{
+				br.ReadCompressedInt();
+			}
+			return rank;
+		}
+
+		private static Type ReadTypeOrVoid(ModuleReader module, ByteReader br, IGenericContext context)
+		{
+			if (br.PeekByte() == ELEMENT_TYPE_VOID)
+			{
+				br.ReadByte();
+				return module.universe.System_Void;
+			}
+			else
+			{
+				return ReadType(module, br, context);
+			}
+		}
+
+		// see ECMA 335 CLI spec June 2006 section 23.2.12 for this production
+		protected static Type ReadType(ModuleReader module, ByteReader br, IGenericContext context)
+		{
+			CustomModifiers mods;
+			switch (br.ReadByte())
+			{
+				case ELEMENT_TYPE_CLASS:
+				case ELEMENT_TYPE_VALUETYPE:
+					return ReadTypeDefOrRefEncoded(module, br, context);
+				case ELEMENT_TYPE_BOOLEAN:
+					return module.universe.System_Boolean;
+				case ELEMENT_TYPE_CHAR:
+					return module.universe.System_Char;
+				case ELEMENT_TYPE_I1:
+					return module.universe.System_SByte;
+				case ELEMENT_TYPE_U1:
+					return module.universe.System_Byte;
+				case ELEMENT_TYPE_I2:
+					return module.universe.System_Int16;
+				case ELEMENT_TYPE_U2:
+					return module.universe.System_UInt16;
+				case ELEMENT_TYPE_I4:
+					return module.universe.System_Int32;
+				case ELEMENT_TYPE_U4:
+					return module.universe.System_UInt32;
+				case ELEMENT_TYPE_I8:
+					return module.universe.System_Int64;
+				case ELEMENT_TYPE_U8:
+					return module.universe.System_UInt64;
+				case ELEMENT_TYPE_R4:
+					return module.universe.System_Single;
+				case ELEMENT_TYPE_R8:
+					return module.universe.System_Double;
+				case ELEMENT_TYPE_I:
+					return module.universe.System_IntPtr;
+				case ELEMENT_TYPE_U:
+					return module.universe.System_UIntPtr;
+				case ELEMENT_TYPE_STRING:
+					return module.universe.System_String;
+				case ELEMENT_TYPE_OBJECT:
+					return module.universe.System_Object;
+				case ELEMENT_TYPE_VAR:
+					return context.GetGenericTypeArgument(br.ReadCompressedInt());
+				case ELEMENT_TYPE_MVAR:
+					return context.GetGenericMethodArgument(br.ReadCompressedInt());
+				case ELEMENT_TYPE_GENERICINST:
+					return ReadGenericInst(module, br, context);
+				case ELEMENT_TYPE_SZARRAY:
+					mods = ReadCustomModifiers(module, br, context);
+					return ReadType(module, br, context).__MakeArrayType(mods.required, mods.optional);
+				case ELEMENT_TYPE_ARRAY:
+					mods = ReadCustomModifiers(module, br, context);
+					return ReadType(module, br, context).__MakeArrayType(ReadArrayShape(br), mods.required, mods.optional);
+				case ELEMENT_TYPE_PTR:
+					mods = ReadCustomModifiers(module, br, context);
+					return ReadTypeOrVoid(module, br, context).__MakePointerType(mods.required, mods.optional);
+				case ELEMENT_TYPE_FNPTR:
+					return ReadFunctionPointer(module, br, context);
+				default:
+					throw new BadImageFormatException();
+			}
+		}
+
+		internal static void ReadLocalVarSig(ModuleReader module, ByteReader br, IGenericContext context, List<LocalVariableInfo> list)
+		{
+			if (br.Length < 2 || br.ReadByte() != LOCAL_SIG)
+			{
+				throw new BadImageFormatException("Invalid local variable signature");
+			}
+			int count = br.ReadCompressedInt();
+			for (int i = 0; i < count; i++)
+			{
+				if (br.PeekByte() == ELEMENT_TYPE_TYPEDBYREF)
+				{
+					br.ReadByte();
+					list.Add(new LocalVariableInfo(i, module.universe.System_TypedReference, false));
+				}
+				else
+				{
+					SkipCustomModifiers(br);
+					bool pinned = false;
+					if (br.PeekByte() == ELEMENT_TYPE_PINNED)
+					{
+						br.ReadByte();
+						pinned = true;
+					}
+					SkipCustomModifiers(br);
+					Type type = ReadTypeOrByRef(module, br, context);
+					list.Add(new LocalVariableInfo(i, type, pinned));
+				}
+			}
+		}
+
+		private static Type ReadTypeOrByRef(ModuleReader module, ByteReader br, IGenericContext context)
+		{
+			if (br.PeekByte() == ELEMENT_TYPE_BYREF)
+			{
+				br.ReadByte();
+				// LAMESPEC it is allowed (by C++/CLI, ilasm and peverify) to have custom modifiers after the BYREF
+				// (which makes sense, as it is analogous to pointers)
+				CustomModifiers mods = ReadCustomModifiers(module, br, context);
+				// C++/CLI generates void& local variables, so we need to use ReadTypeOrVoid here
+				return ReadTypeOrVoid(module, br, context).__MakeByRefType(mods.required, mods.optional);
+			}
+			else
+			{
+				return ReadType(module, br, context);
+			}
+		}
+
+		protected static Type ReadRetType(ModuleReader module, ByteReader br, IGenericContext context)
+		{
+			switch (br.PeekByte())
+			{
+				case ELEMENT_TYPE_VOID:
+					br.ReadByte();
+					return module.universe.System_Void;
+				case ELEMENT_TYPE_TYPEDBYREF:
+					br.ReadByte();
+					return module.universe.System_TypedReference;
+				default:
+					return ReadTypeOrByRef(module, br, context);
+			}
+		}
+
+		protected static Type ReadParam(ModuleReader module, ByteReader br, IGenericContext context)
+		{
+			switch (br.PeekByte())
+			{
+				case ELEMENT_TYPE_TYPEDBYREF:
+					br.ReadByte();
+					return module.universe.System_TypedReference;
+				default:
+					return ReadTypeOrByRef(module, br, context);
+			}
+		}
+
+		protected static void WriteType(ModuleBuilder module, ByteBuffer bb, Type type)
+		{
+			while (type.HasElementType)
+			{
+				if (type.__IsVector)
+				{
+					bb.Write(ELEMENT_TYPE_SZARRAY);
+				}
+				else if (type.IsArray)
+				{
+					int rank = type.GetArrayRank();
+					bb.Write(ELEMENT_TYPE_ARRAY);
+					// LAMESPEC the Type production (23.2.12) doesn't include CustomMod* for arrays, but the verifier allows it and ildasm also supports it
+					WriteCustomModifiers(module, bb, ELEMENT_TYPE_CMOD_REQD, type.__GetRequiredCustomModifiers());
+					WriteCustomModifiers(module, bb, ELEMENT_TYPE_CMOD_OPT, type.__GetOptionalCustomModifiers());
+					WriteType(module, bb, type.GetElementType());
+					bb.WriteCompressedInt(rank);
+					// since a Type doesn't contain the lower/upper bounds
+					// (they act like a custom modifier, so they are part of the signature, but not of the Type),
+					// we set them to the C# compatible values and hope for the best
+					bb.WriteCompressedInt(0);	// boundsCount
+					bb.WriteCompressedInt(rank);	// loCount
+					for (int i = 0; i < rank; i++)
+					{
+						bb.WriteCompressedInt(0);
+					}
+					return;
+				}
+				else if (type.IsByRef)
+				{
+					bb.Write(ELEMENT_TYPE_BYREF);
+				}
+				else if (type.IsPointer)
+				{
+					bb.Write(ELEMENT_TYPE_PTR);
+				}
+				WriteCustomModifiers(module, bb, ELEMENT_TYPE_CMOD_REQD, type.__GetRequiredCustomModifiers());
+				WriteCustomModifiers(module, bb, ELEMENT_TYPE_CMOD_OPT, type.__GetOptionalCustomModifiers());
+				type = type.GetElementType();
+			}
+			Universe u = module.universe;
+			if (type == u.System_Void)
+			{
+				bb.Write(ELEMENT_TYPE_VOID);
+			}
+			else if (type == u.System_Boolean)
+			{
+				bb.Write(ELEMENT_TYPE_BOOLEAN);
+			}
+			else if (type == u.System_Char)
+			{
+				bb.Write(ELEMENT_TYPE_CHAR);
+			}
+			else if (type == u.System_SByte)
+			{
+				bb.Write(ELEMENT_TYPE_I1);
+			}
+			else if (type == u.System_Byte)
+			{
+				bb.Write(ELEMENT_TYPE_U1);
+			}
+			else if (type == u.System_Int16)
+			{
+				bb.Write(ELEMENT_TYPE_I2);
+			}
+			else if (type == u.System_UInt16)
+			{
+				bb.Write(ELEMENT_TYPE_U2);
+			}
+			else if (type == u.System_Int32)
+			{
+				bb.Write(ELEMENT_TYPE_I4);
+			}
+			else if (type == u.System_UInt32)
+			{
+				bb.Write(ELEMENT_TYPE_U4);
+			}
+			else if (type == u.System_Int64)
+			{
+				bb.Write(ELEMENT_TYPE_I8);
+			}
+			else if (type == u.System_UInt64)
+			{
+				bb.Write(ELEMENT_TYPE_U8);
+			}
+			else if (type == u.System_Single)
+			{
+				bb.Write(ELEMENT_TYPE_R4);
+			}
+			else if (type == u.System_Double)
+			{
+				bb.Write(ELEMENT_TYPE_R8);
+			}
+			else if (type == u.System_String)
+			{
+				bb.Write(ELEMENT_TYPE_STRING);
+			}
+			else if (type == u.System_IntPtr)
+			{
+				bb.Write(ELEMENT_TYPE_I);
+			}
+			else if (type == u.System_UIntPtr)
+			{
+				bb.Write(ELEMENT_TYPE_U);
+			}
+			else if (type == u.System_TypedReference)
+			{
+				bb.Write(ELEMENT_TYPE_TYPEDBYREF);
+			}
+			else if (type == u.System_Object)
+			{
+				bb.Write(ELEMENT_TYPE_OBJECT);
+			}
+			else if (type.IsGenericParameter)
+			{
+				if (type is UnboundGenericMethodParameter || type.DeclaringMethod != null)
+				{
+					bb.Write(ELEMENT_TYPE_MVAR);
+				}
+				else
+				{
+					bb.Write(ELEMENT_TYPE_VAR);
+				}
+				bb.WriteCompressedInt(type.GenericParameterPosition);
+			}
+			else if (type.IsGenericType)
+			{
+				WriteGenericSignature(module, bb, type);
+			}
+			else
+			{
+				if (type.IsValueType)
+				{
+					bb.Write(ELEMENT_TYPE_VALUETYPE);
+				}
+				else
+				{
+					bb.Write(ELEMENT_TYPE_CLASS);
+				}
+				bb.WriteTypeDefOrRefEncoded(module.GetTypeToken(type).Token);
+			}
+		}
+
+		private static void WriteGenericSignature(ModuleBuilder module, ByteBuffer bb, Type type)
+		{
+			Type[] typeArguments = type.GetGenericArguments();
+			Type[][] requiredCustomModifiers = type.__GetGenericArgumentsRequiredCustomModifiers();
+			Type[][] optionalCustomModifiers = type.__GetGenericArgumentsOptionalCustomModifiers();
+			if (!type.IsGenericTypeDefinition)
+			{
+				type = type.GetGenericTypeDefinition();
+			}
+			bb.Write(ELEMENT_TYPE_GENERICINST);
+			if (type.IsValueType)
+			{
+				bb.Write(ELEMENT_TYPE_VALUETYPE);
+			}
+			else
+			{
+				bb.Write(ELEMENT_TYPE_CLASS);
+			}
+			bb.WriteTypeDefOrRefEncoded(module.GetTypeToken(type).Token);
+			bb.WriteCompressedInt(typeArguments.Length);
+			for (int i = 0; i < typeArguments.Length; i++)
+			{
+				WriteCustomModifiers(module, bb, ELEMENT_TYPE_CMOD_REQD, requiredCustomModifiers[i]);
+				WriteCustomModifiers(module, bb, ELEMENT_TYPE_CMOD_OPT, optionalCustomModifiers[i]);
+				WriteType(module, bb, typeArguments[i]);
+			}
+		}
+
+		protected static void WriteCustomModifiers(ModuleBuilder module, ByteBuffer bb, byte mod, Type[] modifiers)
+		{
+			if (modifiers != null)
+			{
+				foreach (Type type in modifiers)
+				{
+					bb.Write(mod);
+					bb.WriteTypeDefOrRefEncoded(module.GetTypeTokenForMemberRef(type));
+				}
+			}
+		}
+
+		protected static bool IsCustomModifier(byte b)
+		{
+			return b == ELEMENT_TYPE_CMOD_OPT || b == ELEMENT_TYPE_CMOD_REQD;
+		}
+
+		struct CustomModifiers
+		{
+			internal Type[] required;
+			internal Type[] optional;
+		}
+
+		private static CustomModifiers ReadCustomModifiers(ModuleReader module, ByteReader br, IGenericContext context)
+		{
+			CustomModifiers mods = new CustomModifiers();
+			byte b = br.PeekByte();
+			if (IsCustomModifier(b))
+			{
+				List<Type> required = new List<Type>();
+				List<Type> optional = new List<Type>();
+				while (IsCustomModifier(b))
+				{
+					bool req = br.ReadByte() == ELEMENT_TYPE_CMOD_REQD;
+					Type type = ReadTypeDefOrRefEncoded(module, br, context);
+					(req ? required : optional).Add(type);
+					b = br.PeekByte();
+				}
+				mods.required = required.ToArray();
+				mods.optional = optional.ToArray();
+			}
+			return mods;
+		}
+
+		protected static void SkipCustomModifiers(ByteReader br)
+		{
+			byte b = br.PeekByte();
+			while (IsCustomModifier(b))
+			{
+				br.ReadByte();
+				br.ReadCompressedInt();
+				b = br.PeekByte();
+			}
+		}
+
+		private static Type ReadTypeDefOrRefEncoded(ModuleReader module, ByteReader br, IGenericContext context)
+		{
+			int encoded = br.ReadCompressedInt();
+			switch (encoded & 3)
+			{
+				case 0:
+					return module.ResolveType((TypeDefTable.Index << 24) + (encoded >> 2), null, null);
+				case 1:
+					return module.ResolveType((TypeRefTable.Index << 24) + (encoded >> 2), null, null);
+				case 2:
+					return module.ResolveType((TypeSpecTable.Index << 24) + (encoded >> 2), context);
+				default:
+					throw new BadImageFormatException();
+			}
+		}
+
+		protected static void ReadCustomModifiers(ModuleReader module, ByteReader br, IGenericContext context, out Type[] requiredCustomModifiers, out Type[] optionalCustomModifiers)
+		{
+			byte b = br.PeekByte();
+			if (IsCustomModifier(b))
+			{
+				List<Type> required = new List<Type>();
+				List<Type> optional = new List<Type>();
+				while (IsCustomModifier(b))
+				{
+					br.ReadByte();
+					Type type = ReadTypeDefOrRefEncoded(module, br, context);
+					if (b == ELEMENT_TYPE_CMOD_REQD)
+					{
+						required.Add(type);
+					}
+					else
+					{
+						optional.Add(type);
+					}
+					b = br.PeekByte();
+				}
+				requiredCustomModifiers = required.ToArray();
+				optionalCustomModifiers = optional.ToArray();
+			}
+			else
+			{
+				requiredCustomModifiers = null;
+				optionalCustomModifiers = null;
+			}
+		}
+
+		// unmanaged calling convention
+		internal static void WriteStandAloneMethodSig(ModuleBuilder module, ByteBuffer bb, CallingConvention callingConvention, Type returnType, Type[] parameterTypes)
+		{
+			switch (callingConvention)
+			{
+				case CallingConvention.Cdecl:
+					bb.Write((byte)0x01);	// C
+					break;
+				case CallingConvention.StdCall:
+				case CallingConvention.Winapi:
+					bb.Write((byte)0x02);	// STDCALL
+					break;
+				case CallingConvention.ThisCall:
+					bb.Write((byte)0x03);	// THISCALL
+					break;
+				case CallingConvention.FastCall:
+					bb.Write((byte)0x04);	// FASTCALL
+					break;
+				default:
+					throw new ArgumentOutOfRangeException("callingConvention");
+			}
+			bb.WriteCompressedInt(parameterTypes.Length);
+			WriteType(module, bb, returnType);
+			foreach (Type t in parameterTypes)
+			{
+				WriteType(module, bb, t);
+			}
+		}
+
+		// managed calling convention
+		internal static void WriteStandAloneMethodSig(ModuleBuilder module, ByteBuffer bb, CallingConventions callingConvention, Type returnType, Type[] parameterTypes, Type[] optionalParameterTypes)
+		{
+			byte flags = 0;
+			if ((callingConvention & CallingConventions.HasThis) != 0)
+			{
+				flags |= HASTHIS;
+			}
+			if ((callingConvention & CallingConventions.ExplicitThis) != 0)
+			{
+				flags |= EXPLICITTHIS;
+			}
+			if ((callingConvention & CallingConventions.VarArgs) != 0)
+			{
+				flags |= VARARG;
+			}
+			bb.Write(flags);
+			bb.WriteCompressedInt(parameterTypes.Length + optionalParameterTypes.Length);
+			WriteType(module, bb, returnType);
+			foreach (Type t in parameterTypes)
+			{
+				WriteType(module, bb, t);
+			}
+			if (optionalParameterTypes.Length > 0)
+			{
+				bb.Write(SENTINEL);
+				foreach (Type t in optionalParameterTypes)
+				{
+					WriteType(module, bb, t);
+				}
+			}
+		}
+
+		internal static void WriteLocalVarSig(ModuleBuilder module, ByteBuffer bb, IList<LocalBuilder> locals)
+		{
+			bb.Write(LOCAL_SIG);
+			bb.WriteCompressedInt(locals.Count);
+			foreach (LocalBuilder local in locals)
+			{
+				if (local.IsPinned)
+				{
+					bb.Write(ELEMENT_TYPE_PINNED);
+				}
+				WriteType(module, bb, local.LocalType);
+			}
+		}
+
+		internal static void WritePropertySig(ModuleBuilder module, ByteBuffer bb, CallingConventions callingConvention,
+			Type returnType, Type[] returnTypeRequiredCustomModifiers, Type[] returnTypeOptionalCustomModifiers,
+			Type[] parameterTypes, Type[][] parameterTypeRequiredCustomModifiers, Type[][] parameterTypeOptionalCustomModifiers)
+		{
+			byte flags = PROPERTY;
+			if ((callingConvention & CallingConventions.HasThis) != 0)
+			{
+				flags |= HASTHIS;
+			}
+			if ((callingConvention & CallingConventions.ExplicitThis) != 0)
+			{
+				flags |= EXPLICITTHIS;
+			}
+			if ((callingConvention & CallingConventions.VarArgs) != 0)
+			{
+				flags |= VARARG;
+			}
+			bb.Write(flags);
+			bb.WriteCompressedInt(parameterTypes == null ? 0 : parameterTypes.Length);
+			WriteCustomModifiers(module, bb, ELEMENT_TYPE_CMOD_REQD, returnTypeRequiredCustomModifiers);
+			WriteCustomModifiers(module, bb, ELEMENT_TYPE_CMOD_OPT, returnTypeOptionalCustomModifiers);
+			WriteType(module, bb, returnType);
+			if (parameterTypes != null)
+			{
+				for (int i = 0; i < parameterTypes.Length; i++)
+				{
+					if (parameterTypeRequiredCustomModifiers != null)
+					{
+						WriteCustomModifiers(module, bb, ELEMENT_TYPE_CMOD_REQD, parameterTypeRequiredCustomModifiers[i]);
+					}
+					if (parameterTypeOptionalCustomModifiers != null)
+					{
+						WriteCustomModifiers(module, bb, ELEMENT_TYPE_CMOD_OPT, parameterTypeOptionalCustomModifiers[i]);
+					}
+					WriteType(module, bb, parameterTypes[i]);
+				}
+			}
+		}
+
+		internal static void WriteTypeSpec(ModuleBuilder module, ByteBuffer bb, Type type)
+		{
+			WriteType(module, bb, type);
+		}
+
+		internal static void WriteMethodSpec(ModuleBuilder module, ByteBuffer bb, Type[] genArgs)
+		{
+			bb.Write(GENERICINST);
+			bb.WriteCompressedInt(genArgs.Length);
+			foreach (Type arg in genArgs)
+			{
+				WriteType(module, bb, arg);
+			}
+		}
+
+		// this reads just the optional parameter types, from a MethodRefSig
+		internal static Type[] ReadOptionalParameterTypes(ModuleReader module, ByteReader br)
+		{
+			br.ReadByte();
+			int paramCount = br.ReadCompressedInt();
+			SkipCustomModifiers(br);
+			ReadRetType(module, br, null);
+			for (int i = 0; i < paramCount; i++)
+			{
+				if (br.PeekByte() == SENTINEL)
+				{
+					br.ReadByte();
+					Type[] types = new Type[paramCount - i];
+					for (int j = 0; j < types.Length; j++)
+					{
+						SkipCustomModifiers(br);
+						types[j] = ReadType(module, br, null);
+					}
+					return types;
+				}
+				SkipCustomModifiers(br);
+				ReadType(module, br, null);
+			}
+			return Type.EmptyTypes;
+		}
+
+		protected static Type[] BindTypeParameters(IGenericBinder binder, Type[] types)
+		{
+			if (types == null || types.Length == 0)
+			{
+				return Type.EmptyTypes;
+			}
+			Type[] expanded = new Type[types.Length];
+			for (int i = 0; i < types.Length; i++)
+			{
+				expanded[i] = types[i].BindTypeParameters(binder);
+			}
+			return expanded;
+		}
+
+		protected static Type[][] BindTypeParameters(IGenericBinder binder, Type[][] types)
+		{
+			if (types == null)
+			{
+				return null;
+			}
+			Type[][] expanded = new Type[types.Length][];
+			for (int i = 0; i < types.Length; i++)
+			{
+				expanded[i] = BindTypeParameters(binder, types[i]);
+			}
+			return expanded;
+		}
+
+		protected static Type[][][] BindTypeParameters(IGenericBinder binder, Type[][][] types)
+		{
+			if (types == null)
+			{
+				return null;
+			}
+			Type[][][] expanded = new Type[types.Length][][];
+			for (int i = 0; i < types.Length; i++)
+			{
+				expanded[i] = BindTypeParameters(binder, types[i]);
+			}
+			return expanded;
+		}
+
+		protected static Type[] BindTypeParameters(IGenericBinder binder, Type[][][] types, int index, int optOrReq)
+		{
+			if (types == null || types[index] == null)
+			{
+				return null;
+			}
+			return BindTypeParameters(binder, types[index][optOrReq]);
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/StandAloneMethodSig.cs b/mcs/class/IKVM.Reflection/StandAloneMethodSig.cs
new file mode 100644
index 0000000..007e575
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/StandAloneMethodSig.cs
@@ -0,0 +1,79 @@
+/*
+  Copyright (C) 2010 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Runtime.InteropServices;
+using IKVM.Reflection.Reader;
+
+namespace IKVM.Reflection
+{
+	public sealed class __StandAloneMethodSig
+	{
+		private readonly bool unmanaged;
+		private readonly CallingConvention unmanagedCallingConvention;
+		private readonly CallingConventions callingConvention;
+		private readonly Type returnType;
+		private readonly Type[] parameterTypes;
+		private readonly Type[] optionalParameterTypes;
+
+		internal __StandAloneMethodSig(bool unmanaged, CallingConvention unmanagedCallingConvention, CallingConventions callingConvention, Type returnType, Type[] parameterTypes, Type[] optionalParameterTypes)
+		{
+			this.unmanaged = unmanaged;
+			this.unmanagedCallingConvention = unmanagedCallingConvention;
+			this.callingConvention = callingConvention;
+			this.returnType = returnType;
+			this.parameterTypes = parameterTypes;
+			this.optionalParameterTypes = optionalParameterTypes;
+		}
+
+		public bool IsUnmanaged
+		{
+			get { return unmanaged; }
+		}
+
+		public CallingConventions CallingConvention
+		{
+			get { return callingConvention; }
+		}
+
+		public CallingConvention UnmanagedCallingConvention
+		{
+			get { return unmanagedCallingConvention; }
+		}
+
+		public Type ReturnType
+		{
+			get { return returnType; }
+		}
+
+		public Type[] ParameterTypes
+		{
+			get { return Util.Copy(parameterTypes); }
+		}
+
+		public Type[] OptionalParameterTypes
+		{
+			get { return Util.Copy(optionalParameterTypes); }
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/StrongNameKeyPair.cs b/mcs/class/IKVM.Reflection/StrongNameKeyPair.cs
new file mode 100644
index 0000000..6ea6f7e
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/StrongNameKeyPair.cs
@@ -0,0 +1,59 @@
+/*
+  Copyright (C) 2009 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace IKVM.Reflection
+{
+	public class StrongNameKeyPair
+	{
+		internal readonly System.Reflection.StrongNameKeyPair keyPair;
+
+		internal StrongNameKeyPair(System.Reflection.StrongNameKeyPair keyPair)
+		{
+			this.keyPair = keyPair;
+		}
+
+		public StrongNameKeyPair(string keyPairContainer)
+		{
+			this.keyPair = new System.Reflection.StrongNameKeyPair(keyPairContainer);
+		}
+
+		public StrongNameKeyPair(byte[] keyPairArray)
+		{
+			this.keyPair = new System.Reflection.StrongNameKeyPair(keyPairArray);
+		}
+
+		public StrongNameKeyPair(System.IO.FileStream fs)
+		{
+			this.keyPair = new System.Reflection.StrongNameKeyPair(fs);
+		}
+
+		public byte[] PublicKey
+		{
+			get { return keyPair.PublicKey; }
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Type.cs b/mcs/class/IKVM.Reflection/Type.cs
new file mode 100644
index 0000000..3067943
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Type.cs
@@ -0,0 +1,2398 @@
+/*
+  Copyright (C) 2009-2010 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Runtime.InteropServices;
+using System.Text;
+using System.Collections.Generic;
+using IKVM.Reflection.Emit;
+
+namespace IKVM.Reflection
+{
+	interface IGenericContext
+	{
+		Type GetGenericTypeArgument(int index);
+		Type GetGenericMethodArgument(int index);
+	}
+
+	interface IGenericBinder
+	{
+		Type BindTypeParameter(Type type);
+		Type BindMethodParameter(Type type);
+	}
+
+	public abstract class Type : MemberInfo, IGenericContext, IGenericBinder
+	{
+		public static readonly Type[] EmptyTypes = Empty<Type>.Array;
+
+		public static Binder DefaultBinder
+		{
+			get { return null; }
+		}
+
+		public sealed override MemberTypes MemberType
+		{
+			get { return IsNested ? MemberTypes.NestedType : MemberTypes.TypeInfo; }
+		}
+
+		public virtual string AssemblyQualifiedName
+		{
+			// NOTE the assembly name is not escaped here, only when used in a generic type instantiation
+			get { return this.FullName + ", " + this.Assembly.FullName; }
+		}
+
+		public abstract Type BaseType
+		{
+			get;
+		}
+
+		public abstract TypeAttributes Attributes
+		{
+			get;
+		}
+
+		public virtual Type GetElementType()
+		{
+			return null;
+		}
+
+		internal virtual void CheckBaked()
+		{
+		}
+
+		public virtual Type[] __GetDeclaredTypes()
+		{
+			return Type.EmptyTypes;
+		}
+
+		public virtual Type[] __GetDeclaredInterfaces()
+		{
+			return Type.EmptyTypes;
+		}
+
+		public virtual MethodBase[] __GetDeclaredMethods()
+		{
+			return Empty<MethodBase>.Array;
+		}
+
+		public virtual __MethodImplMap __GetMethodImplMap()
+		{
+			throw new NotSupportedException();
+		}
+
+		public virtual FieldInfo[] __GetDeclaredFields()
+		{
+			return Empty<FieldInfo>.Array;
+		}
+
+		public virtual EventInfo[] __GetDeclaredEvents()
+		{
+			return Empty<EventInfo>.Array;
+		}
+
+		public virtual PropertyInfo[] __GetDeclaredProperties()
+		{
+			return Empty<PropertyInfo>.Array;
+		}
+
+		public virtual Type[] __GetRequiredCustomModifiers()
+		{
+			return Type.EmptyTypes;
+		}
+
+		public virtual Type[] __GetOptionalCustomModifiers()
+		{
+			return Type.EmptyTypes;
+		}
+
+		public virtual bool HasElementType
+		{
+			get { return false; }
+		}
+
+		public virtual bool IsArray
+		{
+			get { return false; }
+		}
+
+		public virtual bool __IsVector
+		{
+			get { return false; }
+		}
+
+		public virtual bool IsByRef
+		{
+			get { return false; }
+		}
+
+		public virtual bool IsPointer
+		{
+			get { return false; }
+		}
+
+		public virtual bool IsValueType
+		{
+			get
+			{
+				Type baseType = this.BaseType;
+				return baseType == this.Module.universe.System_Enum
+					|| (baseType == this.Module.universe.System_ValueType && this != this.Module.universe.System_Enum);
+			}
+		}
+
+		public virtual bool IsGenericParameter
+		{
+			get { return false; }
+		}
+
+		public virtual int GenericParameterPosition
+		{
+			get { throw new NotSupportedException(); }
+		}
+
+		public virtual MethodBase DeclaringMethod
+		{
+			get { return null; }
+		}
+
+		public virtual Type UnderlyingSystemType
+		{
+			get { return this; }
+		}
+
+		public override Type DeclaringType
+		{
+			get { return null; }
+		}
+
+		public override string Name
+		{
+			get
+			{
+				string fullname = FullName;
+				return fullname.Substring(fullname.LastIndexOf('.') + 1);
+			}
+		}
+
+		public virtual string Namespace
+		{
+			get
+			{
+				if (IsNested)
+				{
+					return null;
+				}
+				string fullname = FullName;
+				int index = fullname.LastIndexOf('.');
+				return index < 0 ? null : fullname.Substring(0, index);
+			}
+		}
+
+		internal virtual int GetModuleBuilderToken()
+		{
+			throw new InvalidOperationException();
+		}
+
+		public bool Equals(Type type)
+		{
+			return !ReferenceEquals(type, null) && ReferenceEquals(type.UnderlyingSystemType, this.UnderlyingSystemType);
+		}
+
+		public override bool Equals(object obj)
+		{
+			return Equals(obj as Type);
+		}
+
+		public override int GetHashCode()
+		{
+			Type type = this.UnderlyingSystemType;
+			return ReferenceEquals(type, this) ? base.GetHashCode() : type.GetHashCode();
+		}
+
+		public virtual Type[] GetGenericArguments()
+		{
+			return Type.EmptyTypes;
+		}
+
+		public virtual Type[][] __GetGenericArgumentsRequiredCustomModifiers()
+		{
+			return Empty<Type[]>.Array;
+		}
+
+		public virtual Type[][] __GetGenericArgumentsOptionalCustomModifiers()
+		{
+			return Empty<Type[]>.Array;
+		}
+
+		public virtual Type GetGenericTypeDefinition()
+		{
+			throw new InvalidOperationException();
+		}
+
+		public virtual StructLayoutAttribute StructLayoutAttribute
+		{
+			get { return null; }
+		}
+
+		public virtual bool IsGenericType
+		{
+			get { return false; }
+		}
+
+		public virtual bool IsGenericTypeDefinition
+		{
+			get { return false; }
+		}
+
+		public virtual bool ContainsGenericParameters
+		{
+			get
+			{
+				if (this.IsGenericParameter)
+				{
+					return true;
+				}
+				foreach (Type arg in this.GetGenericArguments())
+				{
+					if (arg.ContainsGenericParameters)
+					{
+						return true;
+					}
+				}
+				return false;
+			}
+		}
+
+		public virtual Type[] GetGenericParameterConstraints()
+		{
+			throw new InvalidOperationException();
+		}
+
+		public virtual GenericParameterAttributes GenericParameterAttributes
+		{
+			get { throw new InvalidOperationException(); }
+		}
+
+		public virtual int GetArrayRank()
+		{
+			throw new NotSupportedException();
+		}
+
+		// .NET 4.0 API
+		public virtual Type GetEnumUnderlyingType()
+		{
+			if (!this.IsEnum)
+			{
+				throw new ArgumentException();
+			}
+			CheckBaked();
+			return GetEnumUnderlyingTypeImpl();
+		}
+
+		internal Type GetEnumUnderlyingTypeImpl()
+		{
+			foreach (FieldInfo field in __GetDeclaredFields())
+			{
+				if (!field.IsStatic)
+				{
+					// the CLR assumes that an enum has only one instance field, so we can do the same
+					return field.FieldType;
+				}
+			}
+			throw new InvalidOperationException();
+		}
+
+		public override string ToString()
+		{
+			return FullName;
+		}
+
+		public virtual string FullName
+		{
+			get
+			{
+				Type decl = this.DeclaringType;
+				string ns = this.Namespace;
+				if (ns == null)
+				{
+					if (decl == null)
+					{
+						return this.Name;
+					}
+					else
+					{
+						return decl.FullName + "+" + this.Name;
+					}
+				}
+				else
+				{
+					if (decl == null)
+					{
+						return ns + "." + this.Name;
+					}
+					else
+					{
+						return decl.FullName + "+" + ns + "." + this.Name;
+					}
+				}
+			}
+		}
+
+		internal virtual bool IsModulePseudoType
+		{
+			get { return false; }
+		}
+
+		internal virtual Type GetGenericTypeArgument(int index)
+		{
+			throw new InvalidOperationException();
+		}
+
+		public MemberInfo[] GetDefaultMembers()
+		{
+			Type defaultMemberAttribute = this.Module.universe.Import(typeof(System.Reflection.DefaultMemberAttribute));
+			foreach (CustomAttributeData cad in CustomAttributeData.GetCustomAttributes(this))
+			{
+				if (cad.Constructor.DeclaringType.Equals(defaultMemberAttribute))
+				{
+					return GetMember((string)cad.ConstructorArguments[0].Value);
+				}
+			}
+			return Empty<MemberInfo>.Array;
+		}
+
+		public MemberInfo[] GetMember(string name)
+		{
+			return GetMember(name, BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static);
+		}
+
+		public MemberInfo[] GetMember(string name, BindingFlags bindingAttr)
+		{
+			return GetMember(name, MemberTypes.All, bindingAttr);
+		}
+
+		public MemberInfo[] GetMembers()
+		{
+			return GetMembers(BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static);
+		}
+
+		public MemberInfo[] GetMembers(BindingFlags bindingAttr)
+		{
+			List<MemberInfo> members = new List<MemberInfo>();
+			members.AddRange(GetConstructors(bindingAttr));
+			members.AddRange(GetMethods(bindingAttr));
+			members.AddRange(GetFields(bindingAttr));
+			members.AddRange(GetProperties(bindingAttr));
+			members.AddRange(GetEvents(bindingAttr));
+			members.AddRange(GetNestedTypes(bindingAttr));
+			return members.ToArray();
+		}
+
+		public MemberInfo[] GetMember(string name, MemberTypes type, BindingFlags bindingAttr)
+		{
+			MemberFilter filter = delegate(MemberInfo member, object filterCriteria) { return member.Name.Equals(filterCriteria); };
+			return FindMembers(type, bindingAttr, filter, name);
+		}
+
+		private static void AddMembers(List<MemberInfo> list, MemberFilter filter, object filterCriteria, MemberInfo[] members)
+		{
+			foreach (MemberInfo member in members)
+			{
+				if (filter == null || filter(member, filterCriteria))
+				{
+					list.Add(member);
+				}
+			}
+		}
+
+		public MemberInfo[] FindMembers(MemberTypes memberType, BindingFlags bindingAttr, MemberFilter filter, object filterCriteria)
+		{
+			List<MemberInfo> members = new List<MemberInfo>();
+			if ((memberType & MemberTypes.Constructor) != 0)
+			{
+				AddMembers(members, filter, filterCriteria, GetConstructors(bindingAttr));
+			}
+			if ((memberType & MemberTypes.Method) != 0)
+			{
+				AddMembers(members, filter, filterCriteria, GetMethods(bindingAttr));
+			}
+			if ((memberType & MemberTypes.Field) != 0)
+			{
+				AddMembers(members, filter, filterCriteria, GetFields(bindingAttr));
+			}
+			if ((memberType & MemberTypes.Property) != 0)
+			{
+				AddMembers(members, filter, filterCriteria, GetProperties(bindingAttr));
+			}
+			if ((memberType & MemberTypes.Event) != 0)
+			{
+				AddMembers(members, filter, filterCriteria, GetEvents(bindingAttr));
+			}
+			if ((memberType & MemberTypes.NestedType) != 0)
+			{
+				AddMembers(members, filter, filterCriteria, GetNestedTypes(bindingAttr));
+			}
+			return members.ToArray();
+		}
+
+		public EventInfo GetEvent(string name)
+		{
+			return GetEvent(name, BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static);
+		}
+
+		public EventInfo GetEvent(string name, BindingFlags bindingAttr)
+		{
+			foreach (EventInfo evt in GetEvents(bindingAttr))
+			{
+				if (evt.Name == name)
+				{
+					return evt;
+				}
+			}
+			return null;
+		}
+
+		public EventInfo[] GetEvents()
+		{
+			return GetEvents(BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static);
+		}
+
+		public EventInfo[] GetEvents(BindingFlags bindingAttr)
+		{
+			List<EventInfo> list = new List<EventInfo>();
+			Type type = this;
+			while (type != null)
+			{
+				type.CheckBaked();
+				foreach (EventInfo evt in type.__GetDeclaredEvents())
+				{
+					if (BindingFlagsMatch(evt.IsPublic, bindingAttr, BindingFlags.Public, BindingFlags.NonPublic)
+						&& BindingFlagsMatch(evt.IsStatic, bindingAttr, BindingFlags.Static, BindingFlags.Instance))
+					{
+						list.Add(evt);
+					}
+				}
+				if ((bindingAttr & BindingFlags.DeclaredOnly) == 0)
+				{
+					if ((bindingAttr & BindingFlags.FlattenHierarchy) == 0)
+					{
+						bindingAttr &= ~BindingFlags.Static;
+					}
+					type = type.BaseType;
+				}
+				else
+				{
+					break;
+				}
+			}
+			return list.ToArray();
+		}
+
+		public FieldInfo GetField(string name)
+		{
+			return GetField(name, BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static);
+		}
+
+		public FieldInfo GetField(string name, BindingFlags bindingAttr)
+		{
+			foreach (FieldInfo field in GetFields(bindingAttr))
+			{
+				if (field.Name == name)
+				{
+					return field;
+				}
+			}
+			return null;
+		}
+
+		public FieldInfo[] GetFields()
+		{
+			return GetFields(BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance);
+		}
+
+		public FieldInfo[] GetFields(BindingFlags bindingAttr)
+		{
+			List<FieldInfo> list = new List<FieldInfo>();
+			CheckBaked();
+			foreach (FieldInfo field in __GetDeclaredFields())
+			{
+				if (BindingFlagsMatch(field.IsPublic, bindingAttr, BindingFlags.Public, BindingFlags.NonPublic)
+					&& BindingFlagsMatch(field.IsStatic, bindingAttr, BindingFlags.Static, BindingFlags.Instance))
+				{
+					list.Add(field);
+				}
+			}
+			if ((bindingAttr & BindingFlags.DeclaredOnly) == 0)
+			{
+				for (Type type = this.BaseType; type != null; type = type.BaseType)
+				{
+					type.CheckBaked();
+					foreach (FieldInfo field in type.__GetDeclaredFields())
+					{
+						if ((field.Attributes & FieldAttributes.FieldAccessMask) > FieldAttributes.Private
+							&& BindingFlagsMatch(field.IsStatic, bindingAttr, BindingFlags.Static | BindingFlags.FlattenHierarchy, BindingFlags.Instance))
+						{
+							list.Add(field);
+						}
+					}
+				}
+			}
+			return list.ToArray();
+		}
+
+		public Type[] GetInterfaces()
+		{
+			List<Type> list = new List<Type>();
+			for (Type type = this; type != null; type = type.BaseType)
+			{
+				AddInterfaces(list, type);
+			}
+			return list.ToArray();
+		}
+
+		private static void AddInterfaces(List<Type> list, Type type)
+		{
+			type.CheckBaked();
+			foreach (Type iface in type.__GetDeclaredInterfaces())
+			{
+				if (!list.Contains(iface))
+				{
+					list.Add(iface);
+					AddInterfaces(list, iface);
+				}
+			}
+		}
+
+		public MethodInfo[] GetMethods(BindingFlags bindingAttr)
+		{
+			CheckBaked();
+			List<MethodInfo> list = new List<MethodInfo>();
+			foreach (MethodBase mb in __GetDeclaredMethods())
+			{
+				MethodInfo mi = mb as MethodInfo;
+				if (mi != null
+					&& BindingFlagsMatch(mi.IsPublic, bindingAttr, BindingFlags.Public, BindingFlags.NonPublic)
+					&& BindingFlagsMatch(mi.IsStatic, bindingAttr, BindingFlags.Static, BindingFlags.Instance))
+				{
+					list.Add(mi);
+				}
+			}
+			if ((bindingAttr & BindingFlags.DeclaredOnly) == 0)
+			{
+				for (Type type = this.BaseType; type != null; type = type.BaseType)
+				{
+					type.CheckBaked();
+					foreach (MethodBase mb in type.__GetDeclaredMethods())
+					{
+						MethodInfo mi = mb as MethodInfo;
+						if (mi != null
+							&& (mi.Attributes & MethodAttributes.MemberAccessMask) > MethodAttributes.Private
+							&& BindingFlagsMatch(mi.IsPublic, bindingAttr, BindingFlags.Public, BindingFlags.NonPublic)
+							&& BindingFlagsMatch(mi.IsStatic, bindingAttr, BindingFlags.Static | BindingFlags.FlattenHierarchy, BindingFlags.Instance)
+							&& !FindMethod(list, mi))
+						{
+							list.Add(mi);
+						}
+					}
+				}
+			}
+			return list.ToArray();
+		}
+
+		private static bool FindMethod(List<MethodInfo> methods, MethodInfo method)
+		{
+			foreach (MethodInfo m in methods)
+			{
+				if (m.Name == method.Name && m.MethodSignature.Equals(method.MethodSignature))
+				{
+					return true;
+				}
+			}
+			return false;
+		}
+
+		public MethodInfo[] GetMethods()
+		{
+			return GetMethods(BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance);
+		}
+
+		public MethodInfo GetMethod(string name)
+		{
+			return GetMethod(name, BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public);
+		}
+
+		public MethodInfo GetMethod(string name, BindingFlags bindingAttr)
+		{
+			MethodInfo found = null;
+			foreach (MethodInfo method in GetMethods(bindingAttr))
+			{
+				if (method.Name == name)
+				{
+					if (found != null)
+					{
+						throw new AmbiguousMatchException();
+					}
+					found = method;
+				}
+			}
+			return found;
+		}
+
+		public MethodInfo GetMethod(string name, Type[] types)
+		{
+			return GetMethod(name, types, null);
+		}
+
+		public MethodInfo GetMethod(string name, Type[] types, ParameterModifier[] modifiers)
+		{
+			return GetMethod(name, BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public, null, types, modifiers);
+		}
+
+		public MethodInfo GetMethod(string name, BindingFlags bindingAttr, Binder binder, Type[] types, ParameterModifier[] modifiers)
+		{
+			MethodInfo found = null;
+			foreach (MethodInfo method in GetMethods(bindingAttr))
+			{
+				if (method.Name == name && method.MethodSignature.MatchParameterTypes(types))
+				{
+					if (found != null)
+					{
+						throw new AmbiguousMatchException();
+					}
+					found = method;
+				}
+			}
+			return found;
+		}
+
+		public MethodInfo GetMethod(string name, BindingFlags bindingAttr, Binder binder, CallingConventions callConvention, Type[] types, ParameterModifier[] modifiers)
+		{
+			// FXBUG callConvention seems to be ignored
+			return GetMethod(name, bindingAttr, binder, types, modifiers);
+		}
+
+		public ConstructorInfo[] GetConstructors()
+		{
+			return GetConstructors(BindingFlags.Public | BindingFlags.Instance);
+		}
+
+		public ConstructorInfo[] GetConstructors(BindingFlags bindingAttr)
+		{
+			CheckBaked();
+			List<ConstructorInfo> list = new List<ConstructorInfo>();
+			foreach (MethodBase mb in __GetDeclaredMethods())
+			{
+				ConstructorInfo constructor = mb as ConstructorInfo;
+				if (constructor != null
+					&& BindingFlagsMatch(constructor.IsPublic, bindingAttr, BindingFlags.Public, BindingFlags.NonPublic)
+					&& BindingFlagsMatch(constructor.IsStatic, bindingAttr, BindingFlags.Static, BindingFlags.Instance))
+				{
+					list.Add(constructor);
+				}
+			}
+			return list.ToArray();
+		}
+
+		public ConstructorInfo GetConstructor(Type[] types)
+		{
+			return GetConstructor(BindingFlags.Public | BindingFlags.Instance, null, CallingConventions.Standard, types, null);
+		}
+
+		public ConstructorInfo GetConstructor(BindingFlags bindingAttr, Binder binder, Type[] types, ParameterModifier[] modifiers)
+		{
+			foreach (ConstructorInfo constructor in GetConstructors(bindingAttr))
+			{
+				if (constructor.MethodSignature.MatchParameterTypes(types))
+				{
+					return constructor;
+				}
+			}
+			return null;
+		}
+
+		public ConstructorInfo GetConstructor(BindingFlags bindingAttr, Binder binder, CallingConventions callingConvention, Type[] types, ParameterModifier[] modifiers)
+		{
+			// FXBUG callConvention seems to be ignored
+			return GetConstructor(bindingAttr, binder, types, modifiers);
+		}
+
+		public Type GetNestedType(string name)
+		{
+			return GetNestedType(name, BindingFlags.Public);
+		}
+
+		public virtual Type GetNestedType(string name, BindingFlags bindingAttr)
+		{
+			foreach (Type type in GetNestedTypes(bindingAttr))
+			{
+				if (type.Name == name)
+				{
+					return type;
+				}
+			}
+			return null;
+		}
+
+		public Type[] GetNestedTypes()
+		{
+			return GetNestedTypes(BindingFlags.Public);
+		}
+
+		public Type[] GetNestedTypes(BindingFlags bindingAttr)
+		{
+			CheckBaked();
+			List<Type> list = new List<Type>();
+			foreach (Type type in __GetDeclaredTypes())
+			{
+				if (BindingFlagsMatch(type.IsNestedPublic, bindingAttr, BindingFlags.Public, BindingFlags.NonPublic))
+				{
+					list.Add(type);
+				}
+			}
+			return list.ToArray();
+		}
+
+		public PropertyInfo[] GetProperties()
+		{
+			return GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static);
+		}
+
+		public PropertyInfo[] GetProperties(BindingFlags bindingAttr)
+		{
+			List<PropertyInfo> list = new List<PropertyInfo>();
+			Type type = this;
+			while (type != null)
+			{
+				type.CheckBaked();
+				foreach (PropertyInfo property in type.__GetDeclaredProperties())
+				{
+					if (BindingFlagsMatch(property.IsPublic, bindingAttr, BindingFlags.Public, BindingFlags.NonPublic)
+						&& BindingFlagsMatch(property.IsStatic, bindingAttr, BindingFlags.Static, BindingFlags.Instance))
+					{
+						list.Add(property);
+					}
+				}
+				if ((bindingAttr & BindingFlags.DeclaredOnly) == 0)
+				{
+					if ((bindingAttr & BindingFlags.FlattenHierarchy) == 0)
+					{
+						bindingAttr &= ~BindingFlags.Static;
+					}
+					type = type.BaseType;
+				}
+				else
+				{
+					break;
+				}
+			}
+			return list.ToArray();
+		}
+
+		public PropertyInfo GetProperty(string name)
+		{
+			return GetProperty(name, BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static);
+		}
+
+		public PropertyInfo GetProperty(string name, BindingFlags bindingAttr)
+		{
+			foreach (PropertyInfo prop in GetProperties(bindingAttr))
+			{
+				if (prop.Name == name)
+				{
+					return prop;
+				}
+			}
+			return null;
+		}
+
+		public PropertyInfo GetProperty(string name, Type returnType)
+		{
+			PropertyInfo found = null;
+			foreach (PropertyInfo prop in GetProperties())
+			{
+				if (prop.Name == name && prop.PropertyType.Equals(returnType))
+				{
+					if (found != null)
+					{
+						throw new AmbiguousMatchException();
+					}
+					found = prop;
+				}
+			}
+			return found;
+		}
+
+		public PropertyInfo GetProperty(string name, Type[] types)
+		{
+			PropertyInfo found = null;
+			foreach (PropertyInfo prop in GetProperties())
+			{
+				if (prop.Name == name && MatchParameterTypes(prop.GetIndexParameters(), types))
+				{
+					if (found != null)
+					{
+						throw new AmbiguousMatchException();
+					}
+					found = prop;
+				}
+			}
+			return found;
+		}
+
+		private static bool MatchParameterTypes(ParameterInfo[] parameters, Type[] types)
+		{
+			if (parameters.Length == types.Length)
+			{
+				for (int i = 0; i < parameters.Length; i++)
+				{
+					if (!parameters[i].ParameterType.Equals(types[i]))
+					{
+						return false;
+					}
+				}
+				return true;
+			}
+			return false;
+		}
+
+		public PropertyInfo GetProperty(string name, Type returnType, Type[] types)
+		{
+			return GetProperty(name, returnType, types, null);
+		}
+
+		public PropertyInfo GetProperty(string name, Type returnType, Type[] types, ParameterModifier[] modifiers)
+		{
+			return GetProperty(name, BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static, null, returnType, types, modifiers);
+		}
+
+		public PropertyInfo GetProperty(string name, BindingFlags bindingAttr, Binder binder, Type returnType, Type[] types, ParameterModifier[] modifiers)
+		{
+			PropertyInfo found = null;
+			foreach (PropertyInfo prop in GetProperties(bindingAttr))
+			{
+				if (prop.Name == name && prop.PropertyType.Equals(returnType) && MatchParameterTypes(prop.GetIndexParameters(), types))
+				{
+					if (found != null)
+					{
+						throw new AmbiguousMatchException();
+					}
+					found = prop;
+				}
+			}
+			return found;
+		}
+
+		public Type GetInterface(string name)
+		{
+			return GetInterface(name, false);
+		}
+
+		public Type GetInterface(string name, bool ignoreCase)
+		{
+			if (ignoreCase)
+			{
+				throw new NotImplementedException();
+			}
+			foreach (Type type in GetInterfaces())
+			{
+				if (type.FullName == name)
+				{
+					return type;
+				}
+			}
+			return null;
+		}
+
+		public Type[] FindInterfaces(TypeFilter filter, object filterCriteria)
+		{
+			List<Type> list = new List<Type>();
+			foreach (Type type in GetInterfaces())
+			{
+				if (filter(type, filterCriteria))
+				{
+					list.Add(type);
+				}
+			}
+			return list.ToArray();
+		}
+
+		public ConstructorInfo TypeInitializer
+		{
+			get { return GetConstructor(BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic, null, Type.EmptyTypes, null); }
+		}
+
+		public bool IsPrimitive
+		{
+			get
+			{
+				Universe u = this.Module.universe;
+				return this == u.System_Boolean
+					|| this == u.System_Byte
+					|| this == u.System_SByte
+					|| this == u.System_Int16
+					|| this == u.System_UInt16
+					|| this == u.System_Int32
+					|| this == u.System_UInt32
+					|| this == u.System_Int64
+					|| this == u.System_UInt64
+					|| this == u.System_IntPtr
+					|| this == u.System_UIntPtr
+					|| this == u.System_Char
+					|| this == u.System_Double
+					|| this == u.System_Single
+					;
+			}
+		}
+
+		public bool IsEnum
+		{
+			get { return this.BaseType == this.Module.universe.System_Enum; }
+		}
+
+		public bool IsSealed
+		{
+			get { return (Attributes & TypeAttributes.Sealed) != 0; }
+		}
+
+		public bool IsAbstract
+		{
+			get { return (Attributes & TypeAttributes.Abstract) != 0; }
+		}
+
+		private bool CheckVisibility(TypeAttributes access)
+		{
+			return (Attributes & TypeAttributes.VisibilityMask) == access;
+		}
+
+		public bool IsPublic
+		{
+			get { return CheckVisibility(TypeAttributes.Public); }
+		}
+
+		public bool IsNestedPublic
+		{
+			get { return CheckVisibility(TypeAttributes.NestedPublic); }
+		}
+
+		public bool IsNestedPrivate
+		{
+			get { return CheckVisibility(TypeAttributes.NestedPrivate); }
+		}
+
+		public bool IsNestedFamily
+		{
+			get { return CheckVisibility(TypeAttributes.NestedFamily); }
+		}
+
+		public bool IsNestedAssembly
+		{
+			get { return CheckVisibility(TypeAttributes.NestedAssembly); }
+		}
+
+		public bool IsNestedFamANDAssem
+		{
+			get { return CheckVisibility(TypeAttributes.NestedFamANDAssem); }
+		}
+
+		public bool IsNestedFamORAssem
+		{
+			get { return CheckVisibility(TypeAttributes.NestedFamORAssem); }
+		}
+
+		public bool IsNotPublic
+		{
+			get { return CheckVisibility(TypeAttributes.NotPublic); }
+		}
+
+		public bool IsImport
+		{
+			get { return (Attributes & TypeAttributes.Import) != 0; }
+		}
+
+		public bool IsCOMObject
+		{
+			get { return IsClass && IsImport; }
+		}
+
+		public bool IsContextful
+		{
+			get { return IsSubclassOf(this.Module.universe.Import(typeof(ContextBoundObject))); }
+		}
+
+		public bool IsMarshalByRef
+		{
+			get { return IsSubclassOf(this.Module.universe.Import(typeof(MarshalByRefObject))); }
+		}
+
+		public virtual bool IsVisible
+		{
+			get { return IsPublic || (IsNestedPublic && this.DeclaringType.IsVisible); }
+		}
+
+		public bool IsAnsiClass
+		{
+			get { return (Attributes & TypeAttributes.StringFormatMask) == TypeAttributes.AnsiClass; }
+		}
+
+		public bool IsUnicodeClass
+		{
+			get { return (Attributes & TypeAttributes.StringFormatMask) == TypeAttributes.UnicodeClass; }
+		}
+
+		public bool IsAutoClass
+		{
+			get { return (Attributes & TypeAttributes.StringFormatMask) == TypeAttributes.AutoClass; }
+		}
+
+		public bool IsAutoLayout
+		{
+			get { return (Attributes & TypeAttributes.LayoutMask) == TypeAttributes.AutoLayout; }
+		}
+
+		public bool IsLayoutSequential
+		{
+			get { return (Attributes & TypeAttributes.LayoutMask) == TypeAttributes.SequentialLayout; }
+		}
+
+		public bool IsExplicitLayout
+		{
+			get { return (Attributes & TypeAttributes.LayoutMask) == TypeAttributes.ExplicitLayout; }
+		}
+
+		public bool IsSpecialName
+		{
+			get { return (Attributes & TypeAttributes.SpecialName) != 0; }
+		}
+
+		public bool IsSerializable
+		{
+			get { return (Attributes & TypeAttributes.Serializable) != 0; }
+		}
+
+		public bool IsClass
+		{
+			get { return !IsInterface && !IsValueType; }
+		}
+
+		public bool IsInterface
+		{
+			get { return (Attributes & TypeAttributes.Interface) != 0; }
+		}
+
+		public bool IsNested
+		{
+			// FXBUG we check the declaring type (like .NET) and this results
+			// in IsNested returning true for a generic type parameter
+			get { return this.DeclaringType != null; }
+		}
+
+		public Type MakeArrayType()
+		{
+			return ArrayType.Make(this, null, null);
+		}
+
+		public Type __MakeArrayType(Type[] requiredCustomModifiers, Type[] optionalCustomModifiers)
+		{
+			return ArrayType.Make(this, Util.Copy(requiredCustomModifiers), Util.Copy(optionalCustomModifiers));
+		}
+
+		public Type MakeArrayType(int rank)
+		{
+			return MultiArrayType.Make(this, rank, null, null);
+		}
+
+		public Type __MakeArrayType(int rank, Type[] requiredCustomModifiers, Type[] optionalCustomModifiers)
+		{
+			return MultiArrayType.Make(this, rank, Util.Copy(requiredCustomModifiers), Util.Copy(optionalCustomModifiers));
+		}
+
+		public Type MakeByRefType()
+		{
+			return ByRefType.Make(this, null, null);
+		}
+
+		public Type __MakeByRefType(Type[] requiredCustomModifiers, Type[] optionalCustomModifiers)
+		{
+			return ByRefType.Make(this, Util.Copy(requiredCustomModifiers), Util.Copy(optionalCustomModifiers));
+		}
+
+		public Type MakePointerType()
+		{
+			return PointerType.Make(this, null, null);
+		}
+
+		public Type __MakePointerType(Type[] requiredCustomModifiers, Type[] optionalCustomModifiers)
+		{
+			return PointerType.Make(this, Util.Copy(requiredCustomModifiers), Util.Copy(optionalCustomModifiers));
+		}
+
+		public Type MakeGenericType(params Type[] typeArguments)
+		{
+			return __MakeGenericType(typeArguments, null, null);
+		}
+
+		public Type __MakeGenericType(Type[] typeArguments, Type[][] requiredCustomModifiers, Type[][] optionalCustomModifiers)
+		{
+			if (!this.IsGenericTypeDefinition)
+			{
+				throw new InvalidOperationException();
+			}
+			return GenericTypeInstance.Make(this, Util.Copy(typeArguments), Util.Copy(requiredCustomModifiers), Util.Copy(optionalCustomModifiers));
+		}
+
+		public static System.Type __GetSystemType(TypeCode typeCode)
+		{
+			switch (typeCode)
+			{
+				case TypeCode.Boolean:
+					return typeof(System.Boolean);
+				case TypeCode.Byte:
+					return typeof(System.Byte);
+				case TypeCode.Char:
+					return typeof(System.Char);
+				case TypeCode.DBNull:
+					return typeof(System.DBNull);
+				case TypeCode.DateTime:
+					return typeof(System.DateTime);
+				case TypeCode.Decimal:
+					return typeof(System.Decimal);
+				case TypeCode.Double:
+					return typeof(System.Double);
+				case TypeCode.Empty:
+					return null;
+				case TypeCode.Int16:
+					return typeof(System.Int16);
+				case TypeCode.Int32:
+					return typeof(System.Int32);
+				case TypeCode.Int64:
+					return typeof(System.Int64);
+				case TypeCode.Object:
+					return typeof(System.Object);
+				case TypeCode.SByte:
+					return typeof(System.SByte);
+				case TypeCode.Single:
+					return typeof(System.Single);
+				case TypeCode.String:
+					return typeof(System.String);
+				case TypeCode.UInt16:
+					return typeof(System.UInt16);
+				case TypeCode.UInt32:
+					return typeof(System.UInt32);
+				case TypeCode.UInt64:
+					return typeof(System.UInt64);
+				default:
+					throw new ArgumentOutOfRangeException();
+			}
+		}
+
+		public static TypeCode GetTypeCode(Type type)
+		{
+			if (type == null)
+			{
+				return TypeCode.Empty;
+			}
+			if (type.IsEnum)
+			{
+				type = type.GetEnumUnderlyingType();
+			}
+			Universe u = type.Module.universe;
+			if (type == u.System_Boolean)
+			{
+				return TypeCode.Boolean;
+			}
+			else if (type == u.System_Char)
+			{
+				return TypeCode.Char;
+			}
+			else if (type == u.System_SByte)
+			{
+				return TypeCode.SByte;
+			}
+			else if (type == u.System_Byte)
+			{
+				return TypeCode.Byte;
+			}
+			else if (type == u.System_Int16)
+			{
+				return TypeCode.Int16;
+			}
+			else if (type == u.System_UInt16)
+			{
+				return TypeCode.UInt16;
+			}
+			else if (type == u.System_Int32)
+			{
+				return TypeCode.Int32;
+			}
+			else if (type == u.System_UInt32)
+			{
+				return TypeCode.UInt32;
+			}
+			else if (type == u.System_Int64)
+			{
+				return TypeCode.Int64;
+			}
+			else if (type == u.System_UInt64)
+			{
+				return TypeCode.UInt64;
+			}
+			else if (type == u.System_Single)
+			{
+				return TypeCode.Single;
+			}
+			else if (type == u.System_Double)
+			{
+				return TypeCode.Double;
+			}
+			else if (type == u.System_DateTime)
+			{
+				return TypeCode.DateTime;
+			}
+			else if (type == u.System_DBNull)
+			{
+				return TypeCode.DBNull;
+			}
+			else if (type == u.System_Decimal)
+			{
+				return TypeCode.Decimal;
+			}
+			else if (type == u.System_String)
+			{
+				return TypeCode.String;
+			}
+			else
+			{
+				return TypeCode.Object;
+			}
+		}
+
+		public Assembly Assembly
+		{
+			get { return Module.Assembly; }
+		}
+
+		// note that interface/delegate co- and contravariance is not considered
+		public bool IsAssignableFrom(Type type)
+		{
+			if (this.Equals(type))
+			{
+				return true;
+			}
+			else if (type == null)
+			{
+				return false;
+			}
+			else if (this.IsArray && type.IsArray)
+			{
+				if (this.GetArrayRank() != type.GetArrayRank())
+				{
+					return false;
+				}
+				else if (this.__IsVector && !type.__IsVector)
+				{
+					return false;
+				}
+				Type e1 = this.GetElementType();
+				Type e2 = type.GetElementType();
+				return e1.IsValueType == e2.IsValueType && e1.IsAssignableFrom(e2);
+			}
+			else if (this.IsSealed)
+			{
+				return false;
+			}
+			else if (this.IsInterface)
+			{
+				return Array.IndexOf(type.GetInterfaces(), this) != -1;
+			}
+			else if (type.IsInterface)
+			{
+				return this == this.Module.universe.System_Object;
+			}
+			else if (type.IsPointer)
+			{
+				return this == this.Module.universe.System_Object || this == this.Module.universe.System_ValueType;
+			}
+			else
+			{
+				return type.IsSubclassOf(this);
+			}
+		}
+
+		public bool IsSubclassOf(Type type)
+		{
+			Type thisType = this.BaseType;
+			while (thisType != null)
+			{
+				if (thisType.Equals(type))
+				{
+					return true;
+				}
+				thisType = thisType.BaseType;
+			}
+			return false;
+		}
+
+		// This returns true if this type directly (i.e. not inherited from the base class) implements the interface.
+		// Note that a complicating factor is that the interface itself can be implemented by an interface that extends it.
+		private bool IsDirectlyImplementedInterface(Type interfaceType)
+		{
+			foreach (Type iface in __GetDeclaredInterfaces())
+			{
+				if (interfaceType.IsAssignableFrom(iface))
+				{
+					return true;
+				}
+			}
+			return false;
+		}
+
+		public InterfaceMapping GetInterfaceMap(Type interfaceType)
+		{
+			CheckBaked();
+			InterfaceMapping map = new InterfaceMapping();
+			if (!IsDirectlyImplementedInterface(interfaceType))
+			{
+				Type baseType = this.BaseType;
+				if (baseType == null)
+				{
+					throw new ArgumentException();
+				}
+				else
+				{
+					map = baseType.GetInterfaceMap(interfaceType);
+				}
+			}
+			else
+			{
+				map.InterfaceMethods = interfaceType.GetMethods(BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public);
+				map.InterfaceType = interfaceType;
+				map.TargetMethods = new MethodInfo[map.InterfaceMethods.Length];
+				FillInExplicitInterfaceMethods(map.InterfaceMethods, map.TargetMethods);
+				MethodInfo[] methods = GetMethods(BindingFlags.Instance | BindingFlags.Public);
+				for (int i = 0; i < map.TargetMethods.Length; i++)
+				{
+					if (map.TargetMethods[i] == null)
+					{
+						// TODO use proper method resolution (also take into account that no implicit base class implementation is used across assembly boundaries)
+						for (int j = 0; j < methods.Length; j++)
+						{
+							if (methods[j].Name == map.InterfaceMethods[i].Name
+								&& methods[j].MethodSignature.Equals(map.InterfaceMethods[i].MethodSignature))
+							{
+								map.TargetMethods[i] = methods[j];
+							}
+						}
+					}
+				}
+				for (Type baseType = this.BaseType; baseType != null && interfaceType.IsAssignableFrom(baseType); baseType = baseType.BaseType)
+				{
+					baseType.FillInExplicitInterfaceMethods(map.InterfaceMethods, map.TargetMethods);
+				}
+			}
+			map.TargetType = this;
+			return map;
+		}
+
+		internal void FillInExplicitInterfaceMethods(MethodInfo[] interfaceMethods, MethodInfo[] targetMethods)
+		{
+			__MethodImplMap impl = __GetMethodImplMap();
+			for (int i = 0; i < impl.MethodDeclarations.Length; i++)
+			{
+				for (int j = 0; j < impl.MethodDeclarations[i].Length; j++)
+				{
+					int index = Array.IndexOf(interfaceMethods, impl.MethodDeclarations[i][j]);
+					if (index != -1 && targetMethods[index] == null)
+					{
+						targetMethods[index] = impl.MethodBodies[i];
+					}
+				}
+			}
+		}
+
+		Type IGenericContext.GetGenericTypeArgument(int index)
+		{
+			return GetGenericTypeArgument(index);
+		}
+
+		Type IGenericContext.GetGenericMethodArgument(int index)
+		{
+			throw new BadImageFormatException();
+		}
+
+		Type IGenericBinder.BindTypeParameter(Type type)
+		{
+			return GetGenericTypeArgument(type.GenericParameterPosition);
+		}
+
+		Type IGenericBinder.BindMethodParameter(Type type)
+		{
+			throw new BadImageFormatException();
+		}
+
+		internal virtual Type BindTypeParameters(IGenericBinder binder)
+		{
+			if (IsGenericTypeDefinition)
+			{
+				Type[] args = GetGenericArguments();
+				Type.InplaceBindTypeParameters(binder, args);
+				return GenericTypeInstance.Make(this, args, null, null);
+			}
+			else
+			{
+				return this;
+			}
+		}
+
+		internal static void InplaceBindTypeParameters(IGenericBinder binder, Type[] types)
+		{
+			for (int i = 0; i < types.Length; i++)
+			{
+				types[i] = types[i].BindTypeParameters(binder);
+			}
+		}
+
+		internal MethodBase FindMethod(string name, MethodSignature signature)
+		{
+			foreach (MethodBase method in __GetDeclaredMethods())
+			{
+				if (method.Name == name && method.MethodSignature.Equals(signature))
+				{
+					return method;
+				}
+			}
+			return null;
+		}
+
+		internal FieldInfo FindField(string name, FieldSignature signature)
+		{
+			foreach (FieldInfo field in __GetDeclaredFields())
+			{
+				if (field.Name == name && field.FieldSignature.Equals(signature))
+				{
+					return field;
+				}
+			}
+			return null;
+		}
+
+		internal bool IsAllowMultipleCustomAttribute
+		{
+			get
+			{
+				IList<CustomAttributeData> cad = GetCustomAttributesData(this.Module.universe.System_AttributeUsageAttribute);
+				if (cad.Count == 1)
+				{
+					foreach (CustomAttributeNamedArgument arg in cad[0].NamedArguments)
+					{
+						if (arg.MemberInfo.Name == "AllowMultiple")
+						{
+							return (bool)arg.TypedValue.Value;
+						}
+					}
+				}
+				return false;
+			}
+		}
+
+		internal bool IsPseudoCustomAttribute
+		{
+			get
+			{
+				Universe u = this.Module.universe;
+				return this == u.System_NonSerializedAttribute
+					|| this == u.System_SerializableAttribute
+					|| this == u.System_Runtime_InteropServices_DllImportAttribute
+					|| this == u.System_Runtime_InteropServices_FieldOffsetAttribute
+					|| this == u.System_Runtime_InteropServices_InAttribute
+					|| this == u.System_Runtime_InteropServices_MarshalAsAttribute
+					|| this == u.System_Runtime_InteropServices_OutAttribute
+					|| this == u.System_Runtime_InteropServices_StructLayoutAttribute
+					|| this == u.System_Runtime_InteropServices_OptionalAttribute
+					|| this == u.System_Runtime_InteropServices_PreserveSigAttribute
+					|| this == u.System_Runtime_InteropServices_ComImportAttribute
+					|| this == u.System_Runtime_CompilerServices_SpecialNameAttribute
+					|| this == u.System_Runtime_CompilerServices_MethodImplAttribute
+					;
+			}
+		}
+	}
+
+	abstract class ElementHolderType : Type
+	{
+		protected readonly Type elementType;
+		private int token;
+		private readonly Type[] requiredCustomModifiers;
+		private readonly Type[] optionalCustomModifiers;
+
+		protected ElementHolderType(Type elementType, Type[] requiredCustomModifiers, Type[] optionalCustomModifiers)
+		{
+			this.elementType = elementType;
+			this.requiredCustomModifiers = requiredCustomModifiers;
+			this.optionalCustomModifiers = optionalCustomModifiers;
+		}
+
+		protected bool EqualsHelper(ElementHolderType other)
+		{
+			return other != null
+				&& other.elementType.Equals(elementType)
+				&& Util.ArrayEquals(other.requiredCustomModifiers, requiredCustomModifiers)
+				&& Util.ArrayEquals(other.optionalCustomModifiers, optionalCustomModifiers);
+		}
+
+		public override Type[] __GetRequiredCustomModifiers()
+		{
+			return Util.Copy(requiredCustomModifiers);
+		}
+
+		public override Type[] __GetOptionalCustomModifiers()
+		{
+			return Util.Copy(optionalCustomModifiers);
+		}
+
+		public sealed override string Name
+		{
+			get { return elementType.Name + GetSuffix(); }
+		}
+
+		public sealed override string FullName
+		{
+			get { return elementType.FullName + GetSuffix(); }
+		}
+
+		public sealed override string ToString()
+		{
+			return elementType.ToString() + GetSuffix();
+		}
+
+		public sealed override Type GetElementType()
+		{
+			return elementType;
+		}
+
+		public sealed override bool HasElementType
+		{
+			get { return true; }
+		}
+
+		public sealed override Module Module
+		{
+			get { return elementType.Module; }
+		}
+
+		internal sealed override int GetModuleBuilderToken()
+		{
+			if (token == 0)
+			{
+				token = ((ModuleBuilder)elementType.Module).ImportType(this);
+			}
+			return token;
+		}
+
+		public sealed override bool ContainsGenericParameters
+		{
+			get
+			{
+				Type type = elementType;
+				while (type.HasElementType)
+				{
+					type = type.GetElementType();
+				}
+				return type.ContainsGenericParameters;
+			}
+		}
+
+		internal sealed override Type BindTypeParameters(IGenericBinder binder)
+		{
+			Type type = elementType.BindTypeParameters(binder);
+			Type[] req = BindArray(requiredCustomModifiers, binder);
+			Type[] opt = BindArray(optionalCustomModifiers, binder);
+			if (ReferenceEquals(type, elementType)
+				&& ReferenceEquals(req, requiredCustomModifiers)
+				&& ReferenceEquals(opt, optionalCustomModifiers))
+			{
+				return this;
+			}
+			return Wrap(type, req, opt);
+		}
+
+		internal override void CheckBaked()
+		{
+			elementType.CheckBaked();
+		}
+
+		private static Type[] BindArray(Type[] array, IGenericBinder binder)
+		{
+			if (array ==null || array.Length == 0)
+			{
+				return array;
+			}
+			Type[] result = array;
+			for (int i = 0; i < array.Length; i++)
+			{
+				Type type = array[i].BindTypeParameters(binder);
+				if (!ReferenceEquals(type, array[i]))
+				{
+					if (result == array)
+					{
+						result = (Type[])array.Clone();
+					}
+					result[i] = type;
+				}
+			}
+			return result;
+		}
+
+		internal sealed override IList<CustomAttributeData> GetCustomAttributesData(Type attributeType)
+		{
+			return CustomAttributeData.EmptyList;
+		}
+
+		protected abstract string GetSuffix();
+
+		protected abstract Type Wrap(Type type, Type[] requiredCustomModifiers, Type[] optionalCustomModifiers);
+	}
+
+	sealed class ArrayType : ElementHolderType
+	{
+		internal static Type Make(Type type, Type[] requiredCustomModifiers, Type[] optionalCustomModifiers)
+		{
+			return type.Module.CanonicalizeType(new ArrayType(type, requiredCustomModifiers, optionalCustomModifiers));
+		}
+
+		private ArrayType(Type type, Type[] requiredCustomModifiers, Type[] optionalCustomModifiers)
+			: base(type, requiredCustomModifiers, optionalCustomModifiers)
+		{
+		}
+
+		public override Type BaseType
+		{
+			get { return elementType.Module.universe.System_Array; }
+		}
+
+		public override Type[] __GetDeclaredInterfaces()
+		{
+			return new Type[] {
+				this.Module.universe.Import(typeof(IList<>)).MakeGenericType(elementType),
+				this.Module.universe.Import(typeof(ICollection<>)).MakeGenericType(elementType),
+				this.Module.universe.Import(typeof(IEnumerable<>)).MakeGenericType(elementType)
+			};
+		}
+
+		public override MethodBase[] __GetDeclaredMethods()
+		{
+			Type[] int32 = new Type[] { this.Module.universe.System_Int32 };
+			List<MethodBase> list = new List<MethodBase>();
+			list.Add(new BuiltinArrayMethod(this.Module, this, "Set", CallingConventions.Standard | CallingConventions.HasThis, this.Module.universe.System_Void, new Type[] { this.Module.universe.System_Int32, elementType }));
+			list.Add(new BuiltinArrayMethod(this.Module, this, "Address", CallingConventions.Standard | CallingConventions.HasThis, elementType.MakeByRefType(), int32));
+			list.Add(new BuiltinArrayMethod(this.Module, this, "Get", CallingConventions.Standard | CallingConventions.HasThis, elementType, int32));
+			list.Add(new ConstructorInfoImpl(new BuiltinArrayMethod(this.Module, this, ".ctor", CallingConventions.Standard | CallingConventions.HasThis, this.Module.universe.System_Void, int32)));
+			for (Type type = elementType; type.__IsVector; type = type.GetElementType())
+			{
+				Array.Resize(ref int32, int32.Length + 1);
+				int32[int32.Length - 1] = int32[0];
+				list.Add(new ConstructorInfoImpl(new BuiltinArrayMethod(this.Module, this, ".ctor", CallingConventions.Standard | CallingConventions.HasThis, this.Module.universe.System_Void, int32)));
+			}
+			return list.ToArray();
+		}
+
+		public override TypeAttributes Attributes
+		{
+			get { return TypeAttributes.Public | TypeAttributes.Sealed | TypeAttributes.Serializable; }
+		}
+
+		public override bool IsArray
+		{
+			get { return true; }
+		}
+
+		public override bool __IsVector
+		{
+			get { return true; }
+		}
+
+		public override int GetArrayRank()
+		{
+			return 1;
+		}
+
+		public override bool Equals(object o)
+		{
+			return EqualsHelper(o as ArrayType);
+		}
+
+		public override int GetHashCode()
+		{
+			return elementType.GetHashCode() * 5;
+		}
+
+		protected override string GetSuffix()
+		{
+			return "[]";
+		}
+
+		protected override Type Wrap(Type type, Type[] requiredCustomModifiers, Type[] optionalCustomModifiers)
+		{
+			return Make(type, requiredCustomModifiers, optionalCustomModifiers);
+		}
+	}
+
+	sealed class MultiArrayType : ElementHolderType
+	{
+		private readonly int rank;
+
+		internal static Type Make(Type type, int rank, Type[] requiredCustomModifiers, Type[] optionalCustomModifiers)
+		{
+			return type.Module.CanonicalizeType(new MultiArrayType(type, rank, requiredCustomModifiers, optionalCustomModifiers));
+		}
+
+		private MultiArrayType(Type type, int rank, Type[] requiredCustomModifiers, Type[] optionalCustomModifiers)
+			: base(type, requiredCustomModifiers, optionalCustomModifiers)
+		{
+			this.rank = rank;
+		}
+
+		public override Type BaseType
+		{
+			get { return elementType.Module.universe.System_Array; }
+		}
+
+		public override MethodBase[] __GetDeclaredMethods()
+		{
+			Type int32 = this.Module.universe.System_Int32;
+			Type[] setArgs = new Type[rank + 1];
+			Type[] getArgs = new Type[rank];
+			Type[] ctorArgs = new Type[rank * 2];
+			for (int i = 0; i < rank; i++)
+			{
+				setArgs[i] = int32;
+				getArgs[i] = int32;
+				ctorArgs[i * 2 + 0] = int32;
+				ctorArgs[i * 2 + 1] = int32;
+			}
+			setArgs[rank] = elementType;
+			return new MethodBase[] {
+				new ConstructorInfoImpl(new BuiltinArrayMethod(this.Module, this, ".ctor", CallingConventions.Standard | CallingConventions.HasThis, this.Module.universe.System_Void, getArgs)),
+				new ConstructorInfoImpl(new BuiltinArrayMethod(this.Module, this, ".ctor", CallingConventions.Standard | CallingConventions.HasThis, this.Module.universe.System_Void, ctorArgs)),
+				new BuiltinArrayMethod(this.Module, this, "Set", CallingConventions.Standard | CallingConventions.HasThis, this.Module.universe.System_Void, setArgs),
+				new BuiltinArrayMethod(this.Module, this, "Address", CallingConventions.Standard | CallingConventions.HasThis, elementType.MakeByRefType(), getArgs),
+				new BuiltinArrayMethod(this.Module, this, "Get", CallingConventions.Standard | CallingConventions.HasThis, elementType, getArgs),
+			};
+		}
+
+		public override TypeAttributes Attributes
+		{
+			get { return TypeAttributes.Public | TypeAttributes.Sealed | TypeAttributes.Serializable; }
+		}
+
+		public override bool IsArray
+		{
+			get { return true; }
+		}
+
+		public override int GetArrayRank()
+		{
+			return rank;
+		}
+
+		public override bool Equals(object o)
+		{
+			MultiArrayType at = o as MultiArrayType;
+			return EqualsHelper(at) && at.rank == rank;
+		}
+
+		public override int GetHashCode()
+		{
+			return elementType.GetHashCode() * 9 + rank;
+		}
+
+		protected override string GetSuffix()
+		{
+			if (rank == 1)
+			{
+				return "[*]";
+			}
+			else
+			{
+				return "[" + new String(',', rank - 1) + "]";
+			}
+		}
+
+		protected override Type Wrap(Type type, Type[] requiredCustomModifiers, Type[] optionalCustomModifiers)
+		{
+			return Make(type, rank, requiredCustomModifiers, optionalCustomModifiers);
+		}
+	}
+
+	sealed class BuiltinArrayMethod : ArrayMethod
+	{
+		internal BuiltinArrayMethod(Module module, Type arrayClass, string methodName, CallingConventions callingConvention, Type returnType, Type[] parameterTypes)
+			: base(module, arrayClass, methodName, callingConvention, returnType, parameterTypes)
+		{
+		}
+
+		public override MethodAttributes Attributes
+		{
+			get { return this.Name == ".ctor" ? MethodAttributes.RTSpecialName | MethodAttributes.Public : MethodAttributes.Public; }
+		}
+
+		public override MethodImplAttributes GetMethodImplementationFlags()
+		{
+			return MethodImplAttributes.IL;
+		}
+
+		public override int MetadataToken
+		{
+			get { return 0x06000000; }
+		}
+
+		public override MethodBody GetMethodBody()
+		{
+			return null;
+		}
+
+		public override ParameterInfo[] GetParameters()
+		{
+			ParameterInfo[] parameterInfos = new ParameterInfo[parameterTypes.Length];
+			for (int i = 0; i < parameterInfos.Length; i++)
+			{
+				parameterInfos[i] = new ParameterInfoImpl(this, parameterTypes[i], i);
+			}
+			return parameterInfos;
+		}
+
+		public override ParameterInfo ReturnParameter
+		{
+			get { return new ParameterInfoImpl(this, this.ReturnType, -1); }
+		}
+
+		private sealed class ParameterInfoImpl : ParameterInfo
+		{
+			private readonly MethodInfo method;
+			private readonly Type type;
+			private readonly int pos;
+
+			internal ParameterInfoImpl(MethodInfo method, Type type, int pos)
+			{
+				this.method = method;
+				this.type = type;
+				this.pos = pos;
+			}
+
+			public override Type ParameterType
+			{
+				get { return type; }
+			}
+
+			public override string Name
+			{
+				get { return null; }
+			}
+
+			public override ParameterAttributes Attributes
+			{
+				get { return ParameterAttributes.None; }
+			}
+
+			public override int Position
+			{
+				get { return pos; }
+			}
+
+			public override object RawDefaultValue
+			{
+				get { return null; }
+			}
+
+			public override Type[] GetOptionalCustomModifiers()
+			{
+				return Empty<Type>.Array;
+			}
+
+			public override Type[] GetRequiredCustomModifiers()
+			{
+				return Empty<Type>.Array;
+			}
+
+			public override MemberInfo Member
+			{
+				get { return method.IsConstructor ? (MethodBase)new ConstructorInfoImpl(method) : method; }
+			}
+
+			public override int MetadataToken
+			{
+				get { return 0x8000000; }
+			}
+
+			internal override Module Module
+			{
+				get { return method.Module; }
+			}
+		}
+	}
+
+	sealed class ByRefType : ElementHolderType
+	{
+		internal static Type Make(Type type, Type[] requiredCustomModifiers, Type[] optionalCustomModifiers)
+		{
+			return type.Module.CanonicalizeType(new ByRefType(type, requiredCustomModifiers, optionalCustomModifiers));
+		}
+
+		private ByRefType(Type type, Type[] requiredCustomModifiers, Type[] optionalCustomModifiers)
+			: base(type, requiredCustomModifiers, optionalCustomModifiers)
+		{
+		}
+
+		public override bool Equals(object o)
+		{
+			return EqualsHelper(o as ByRefType);
+		}
+
+		public override int GetHashCode()
+		{
+			return elementType.GetHashCode() * 3;
+		}
+
+		public override Type BaseType
+		{
+			get { return null; }
+		}
+
+		public override TypeAttributes Attributes
+		{
+			get { return 0; }
+		}
+
+		public override bool IsByRef
+		{
+			get { return true; }
+		}
+
+		protected override string GetSuffix()
+		{
+			return "&";
+		}
+
+		protected override Type Wrap(Type type, Type[] requiredCustomModifiers, Type[] optionalCustomModifiers)
+		{
+			return Make(type, requiredCustomModifiers, optionalCustomModifiers);
+		}
+	}
+
+	sealed class PointerType : ElementHolderType
+	{
+		internal static Type Make(Type type, Type[] requiredCustomModifiers, Type[] optionalCustomModifiers)
+		{
+			return type.Module.CanonicalizeType(new PointerType(type, requiredCustomModifiers, optionalCustomModifiers));
+		}
+
+		private PointerType(Type type, Type[] requiredCustomModifiers, Type[] optionalCustomModifiers)
+			: base(type, requiredCustomModifiers, optionalCustomModifiers)
+		{
+		}
+
+		public override bool Equals(object o)
+		{
+			return EqualsHelper(o as PointerType);
+		}
+
+		public override int GetHashCode()
+		{
+			return elementType.GetHashCode() * 7;
+		}
+
+		public override Type BaseType
+		{
+			get { return null; }
+		}
+
+		public override TypeAttributes Attributes
+		{
+			get { return 0; }
+		}
+
+		public override bool IsPointer
+		{
+			get { return true; }
+		}
+
+		protected override string GetSuffix()
+		{
+			return "*";
+		}
+
+		protected override Type Wrap(Type type, Type[] requiredCustomModifiers, Type[] optionalCustomModifiers)
+		{
+			return Make(type, requiredCustomModifiers, optionalCustomModifiers);
+		}
+	}
+
+	sealed class GenericTypeInstance : Type
+	{
+		private readonly Type type;
+		private readonly Type[] args;
+		private readonly Type[][] requiredCustomModifiers;
+		private readonly Type[][] optionalCustomModifiers;
+		private Type baseType;
+		private int token;
+
+		internal static Type Make(Type type, Type[] typeArguments, Type[][] requiredCustomModifiers, Type[][] optionalCustomModifiers)
+		{
+			bool identity = true;
+			if (type is TypeBuilder || type is BakedType)
+			{
+				// a TypeBuiler identity must be instantiated
+				identity = false;
+			}
+			else
+			{
+				// we must not instantiate the identity instance, because typeof(Foo<>).MakeGenericType(typeof(Foo<>).GetGenericArguments()) == typeof(Foo<>)
+				for (int i = 0; i < typeArguments.Length; i++)
+				{
+					if (typeArguments[i] != type.GetGenericTypeArgument(i)
+						|| !IsEmpty(requiredCustomModifiers, i)
+						|| !IsEmpty(optionalCustomModifiers, i))
+					{
+						identity = false;
+						break;
+					}
+				}
+			}
+			if (identity)
+			{
+				return type;
+			}
+			else
+			{
+				return type.Module.CanonicalizeType(new GenericTypeInstance(type, typeArguments, requiredCustomModifiers, optionalCustomModifiers));
+			}
+		}
+
+		private static bool IsEmpty(Type[][] mods, int i)
+		{
+			// we need to be extra careful, because mods doesn't not need to be in canonical format
+			// (Signature.ReadGenericInst() calls Make() directly, without copying the modifier arrays)
+			return mods == null || mods[i] == null || mods[i].Length == 0;
+		}
+
+		private GenericTypeInstance(Type type, Type[] args, Type[][] requiredCustomModifiers, Type[][] optionalCustomModifiers)
+		{
+			this.type = type;
+			this.args = args;
+			this.requiredCustomModifiers = requiredCustomModifiers;
+			this.optionalCustomModifiers = optionalCustomModifiers;
+		}
+
+		public override bool Equals(object o)
+		{
+			GenericTypeInstance gt = o as GenericTypeInstance;
+			return gt != null && gt.type.Equals(type) && Util.ArrayEquals(gt.args, args)
+				&& Util.ArrayEquals(gt.requiredCustomModifiers, requiredCustomModifiers)
+				&& Util.ArrayEquals(gt.optionalCustomModifiers, optionalCustomModifiers);
+		}
+
+		public override int GetHashCode()
+		{
+			return type.GetHashCode() * 3 ^ Util.GetHashCode(args);
+		}
+
+		public override string AssemblyQualifiedName
+		{
+			get
+			{
+				string fn = FullName;
+				return fn == null ? null : fn + ", " + type.Assembly.FullName;
+			}
+		}
+
+		public override Type BaseType
+		{
+			get
+			{
+				if (baseType == null)
+				{
+					Type rawBaseType = type.BaseType;
+					if (rawBaseType == null)
+					{
+						baseType = rawBaseType;
+					}
+					else
+					{
+						baseType = rawBaseType.BindTypeParameters(this);
+					}
+				}
+				return baseType;
+			}
+		}
+
+		public override bool IsValueType
+		{
+			get { return type.IsValueType; }
+		}
+
+		public override bool IsVisible
+		{
+			get
+			{
+				if (base.IsVisible)
+				{
+					foreach (Type arg in args)
+					{
+						if (!arg.IsVisible)
+						{
+							return false;
+						}
+					}
+					return true;
+				}
+				return false;
+			}
+		}
+
+		public override Type DeclaringType
+		{
+			get { return type.DeclaringType; }
+		}
+
+		public override TypeAttributes Attributes
+		{
+			get { return type.Attributes; }
+		}
+
+		internal override void CheckBaked()
+		{
+			type.CheckBaked();
+		}
+
+		public override FieldInfo[] __GetDeclaredFields()
+		{
+			FieldInfo[] fields = type.__GetDeclaredFields();
+			for (int i = 0; i < fields.Length; i++)
+			{
+				fields[i] = fields[i].BindTypeParameters(this);
+			}
+			return fields;
+		}
+
+		public override Type[] __GetDeclaredInterfaces()
+		{
+			Type[] interfaces = type.__GetDeclaredInterfaces();
+			for (int i = 0; i < interfaces.Length; i++)
+			{
+				interfaces[i] = interfaces[i].BindTypeParameters(this);
+			}
+			return interfaces;
+		}
+
+		public override MethodBase[] __GetDeclaredMethods()
+		{
+			MethodBase[] methods = type.__GetDeclaredMethods();
+			for (int i = 0; i < methods.Length; i++)
+			{
+				methods[i] = methods[i].BindTypeParameters(this);
+			}
+			return methods;
+		}
+
+		public override Type[] __GetDeclaredTypes()
+		{
+			return type.__GetDeclaredTypes();
+		}
+
+		public override EventInfo[] __GetDeclaredEvents()
+		{
+			EventInfo[] events = type.__GetDeclaredEvents();
+			for (int i = 0; i < events.Length; i++)
+			{
+				events[i] = events[i].BindTypeParameters(this);
+			}
+			return events;
+		}
+
+		public override PropertyInfo[] __GetDeclaredProperties()
+		{
+			PropertyInfo[] properties = type.__GetDeclaredProperties();
+			for (int i = 0; i < properties.Length; i++)
+			{
+				properties[i] = properties[i].BindTypeParameters(this);
+			}
+			return properties;
+		}
+
+		public override __MethodImplMap __GetMethodImplMap()
+		{
+			__MethodImplMap map = type.__GetMethodImplMap();
+			map.TargetType = this;
+			for (int i = 0; i < map.MethodBodies.Length; i++)
+			{
+				map.MethodBodies[i] = (MethodInfo)map.MethodBodies[i].BindTypeParameters(this);
+				for (int j = 0; j < map.MethodDeclarations[i].Length; j++)
+				{
+					Type interfaceType = map.MethodDeclarations[i][j].DeclaringType;
+					if (interfaceType.IsGenericType)
+					{
+						map.MethodDeclarations[i][j] = (MethodInfo)map.MethodDeclarations[i][j].BindTypeParameters(this);
+					}
+				}
+			}
+			return map;
+		}
+
+		public override string Namespace
+		{
+			get { return type.Namespace; }
+		}
+
+		public override Type UnderlyingSystemType
+		{
+			get { return this; }
+		}
+
+		public override string Name
+		{
+			get { return type.Name; }
+		}
+
+		public override string FullName
+		{
+			get
+			{
+				if (this.ContainsGenericParameters)
+				{
+					return null;
+				}
+				StringBuilder sb = new StringBuilder(base.FullName);
+				sb.Append('[');
+				foreach (Type type in args)
+				{
+					sb.Append('[').Append(type.AssemblyQualifiedName.Replace("]", "\\]")).Append(']');
+				}
+				sb.Append(']');
+				return sb.ToString();
+			}
+		}
+
+		public override string ToString()
+		{
+			StringBuilder sb = new StringBuilder(type.FullName);
+			sb.Append('[');
+			string sep = "";
+			foreach (Type arg in args)
+			{
+				sb.Append(sep);
+				sb.Append(arg);
+				sep = ",";
+			}
+			sb.Append(']');
+			return sb.ToString();
+		}
+
+		public override Module Module
+		{
+			get { return type.Module; }
+		}
+
+		public override bool IsGenericType
+		{
+			get { return true; }
+		}
+
+		public override Type GetGenericTypeDefinition()
+		{
+			return type;
+		}
+
+		public override Type[] GetGenericArguments()
+		{
+			return Util.Copy(args);
+		}
+
+		public override Type[][] __GetGenericArgumentsRequiredCustomModifiers()
+		{
+			return Util.Copy(requiredCustomModifiers ?? new Type[args.Length][]);
+		}
+
+		public override Type[][] __GetGenericArgumentsOptionalCustomModifiers()
+		{
+			return Util.Copy(optionalCustomModifiers ?? new Type[args.Length][]);
+		}
+
+		internal override Type GetGenericTypeArgument(int index)
+		{
+			return args[index];
+		}
+
+		public override bool ContainsGenericParameters
+		{
+			get
+			{
+				foreach (Type type in args)
+				{
+					if (type.ContainsGenericParameters)
+					{
+						return true;
+					}
+				}
+				return false;
+			}
+		}
+
+		public override StructLayoutAttribute StructLayoutAttribute
+		{
+			get { return type.StructLayoutAttribute; }
+		}
+
+		internal override int GetModuleBuilderToken()
+		{
+			if (token == 0)
+			{
+				token = ((ModuleBuilder)type.Module).ImportType(this);
+			}
+			return token;
+		}
+
+		internal override Type BindTypeParameters(IGenericBinder binder)
+		{
+			for (int i = 0; i < args.Length; i++)
+			{
+				Type xarg = args[i].BindTypeParameters(binder);
+				if (!ReferenceEquals(xarg, args[i]))
+				{
+					Type[] xargs = new Type[args.Length];
+					Array.Copy(args, xargs, i);
+					xargs[i++] = xarg;
+					for (; i < args.Length; i++)
+					{
+						xargs[i] = args[i].BindTypeParameters(binder);
+					}
+					return Make(type, xargs, null, null);
+				}
+			}
+			return this;
+		}
+
+		internal override IList<CustomAttributeData> GetCustomAttributesData(Type attributeType)
+		{
+			return type.GetCustomAttributesData(attributeType);
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/TypeNameParser.cs b/mcs/class/IKVM.Reflection/TypeNameParser.cs
new file mode 100644
index 0000000..d6c18ee
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/TypeNameParser.cs
@@ -0,0 +1,458 @@
+/*
+  Copyright (C) 2009 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace IKVM.Reflection
+{
+	struct TypeNameParser
+	{
+		private const string SpecialChars = "\\+,[]*&";
+		private const short SZARRAY = -1;
+		private const short BYREF = -2;
+		private const short POINTER = -3;
+		private readonly string name;
+		private readonly string[] nested;
+		private readonly string assemblyName;
+		private readonly short[] modifiers;
+		private readonly TypeNameParser[] genericParameters;
+
+		internal static string Escape(string name)
+		{
+			if (name == null)
+			{
+				return null;
+			}
+			StringBuilder sb = null;
+			for (int pos = 0; pos < name.Length; pos++)
+			{
+				char c = name[pos];
+				if (SpecialChars.IndexOf(c) != -1)
+				{
+					if (sb == null)
+					{
+						sb = new StringBuilder(name, 0, pos, name.Length + 3);
+					}
+					sb.Append('\\').Append(c);
+				}
+				else if (sb != null)
+				{
+					sb.Append(c);
+				}
+			}
+			return sb != null ? sb.ToString() : name;
+		}
+
+		internal static string Unescape(string name)
+		{
+			int pos = name.IndexOf('\\');
+			if (pos == -1)
+			{
+				return name;
+			}
+			StringBuilder sb = new StringBuilder(name, 0, pos, name.Length - 1);
+			for (; pos < name.Length; pos++)
+			{
+				char c = name[pos];
+				if (c == '\\')
+				{
+					c = name[++pos];
+				}
+				sb.Append(c);
+			}
+			return sb.ToString();
+		}
+
+		internal static TypeNameParser Parse(string typeName, bool throwOnError)
+		{
+			if (throwOnError)
+			{
+				Parser parser = new Parser(typeName);
+				return new TypeNameParser(ref parser, true);
+			}
+			else
+			{
+				try
+				{
+					Parser parser = new Parser(typeName);
+					return new TypeNameParser(ref parser, true);
+				}
+				catch (ArgumentException)
+				{
+					return new TypeNameParser();
+				}
+			}
+		}
+
+		private TypeNameParser(ref Parser parser, bool withAssemblyName)
+		{
+			bool genericParameter = parser.pos != 0;
+			name = parser.NextNamePart();
+			nested = null;
+			parser.ParseNested(ref nested);
+			genericParameters = null;
+			parser.ParseGenericParameters(ref genericParameters);
+			modifiers = null;
+			parser.ParseModifiers(ref modifiers);
+			assemblyName = null;
+			if (withAssemblyName)
+			{
+				parser.ParseAssemblyName(genericParameter, ref assemblyName);
+			}
+		}
+
+		internal bool Error
+		{
+			get { return name == null; }
+		}
+
+		internal string FirstNamePart
+		{
+			get { return name; }
+		}
+
+		internal string AssemblyName
+		{
+			get { return assemblyName; }
+		}
+
+		private struct Parser
+		{
+			private readonly string typeName;
+			internal int pos;
+
+			internal Parser(string typeName)
+			{
+				this.typeName = typeName;
+				this.pos = 0;
+			}
+
+			private void Check(bool condition)
+			{
+				if (!condition)
+				{
+					throw new ArgumentException("Invalid type name '" + typeName + "'");
+				}
+			}
+
+			private void Consume(char c)
+			{
+				Check(pos < typeName.Length && typeName[pos++] == c);
+			}
+
+			private bool TryConsume(char c)
+			{
+				if (pos < typeName.Length && typeName[pos] == c)
+				{
+					pos++;
+					return true;
+				}
+				else
+				{
+					return false;
+				}
+			}
+
+			internal string NextNamePart()
+			{
+				SkipWhiteSpace();
+				int start = pos;
+				for (; pos < typeName.Length; pos++)
+				{
+					char c = typeName[pos];
+					if (c == '\\')
+					{
+						pos++;
+						Check(pos < typeName.Length && SpecialChars.IndexOf(typeName[pos]) != -1);
+					}
+					else if (SpecialChars.IndexOf(c) != -1)
+					{
+						break;
+					}
+				}
+				Check(pos - start != 0);
+				if (start == 0 && pos == typeName.Length)
+				{
+					return typeName;
+				}
+				else
+				{
+					return typeName.Substring(start, pos - start);
+				}
+			}
+
+			internal void ParseNested(ref string[] nested)
+			{
+				while (TryConsume('+'))
+				{
+					Add(ref nested, NextNamePart());
+				}
+			}
+
+			internal void ParseGenericParameters(ref TypeNameParser[] genericParameters)
+			{
+				int saved = pos;
+				if (TryConsume('['))
+				{
+					SkipWhiteSpace();
+					if (TryConsume(']') || TryConsume('*') || TryConsume(','))
+					{
+						// it's not a generic parameter list, but an array instead
+						pos = saved;
+						return;
+					}
+					do
+					{
+						SkipWhiteSpace();
+						if (TryConsume('['))
+						{
+							Add(ref genericParameters, new TypeNameParser(ref this, true));
+							Consume(']');
+						}
+						else
+						{
+							Add(ref genericParameters, new TypeNameParser(ref this, false));
+						}
+					}
+					while (TryConsume(','));
+					Consume(']');
+					SkipWhiteSpace();
+				}
+			}
+
+			internal void ParseModifiers(ref short[] modifiers)
+			{
+				while (pos < typeName.Length)
+				{
+					switch (typeName[pos])
+					{
+						case '*':
+							pos++;
+							Add(ref modifiers, POINTER);
+							break;
+						case '&':
+							pos++;
+							Add(ref modifiers, BYREF);
+							break;
+						case '[':
+							pos++;
+							Add(ref modifiers, ParseArray());
+							Consume(']');
+							break;
+						default:
+							return;
+					}
+					SkipWhiteSpace();
+				}
+			}
+
+			internal void ParseAssemblyName(bool genericParameter, ref string assemblyName)
+			{
+				if (pos < typeName.Length)
+				{
+					if (typeName[pos] == ']' && genericParameter)
+					{
+						// ok
+					}
+					else
+					{
+						Consume(',');
+						SkipWhiteSpace();
+						if (genericParameter)
+						{
+							int start = pos;
+							while (pos < typeName.Length)
+							{
+								char c = typeName[pos];
+								if (c == '\\')
+								{
+									pos++;
+									// a backslash itself is not legal in an assembly name, so we don't need to check for an escaped backslash
+									Check(pos < typeName.Length && typeName[pos++] == ']');
+								}
+								else if (c == ']')
+								{
+									break;
+								}
+								else
+								{
+									pos++;
+								}
+							}
+							Check(pos < typeName.Length && typeName[pos] == ']');
+							assemblyName = typeName.Substring(start, pos - start).Replace("\\]", "]");
+						}
+						else
+						{
+							// only when an assembly name is used in a generic type parameter, will it be escaped
+							assemblyName = typeName.Substring(pos);
+						}
+						Check(assemblyName.Length != 0);
+					}
+				}
+				else
+				{
+					Check(!genericParameter);
+				}
+			}
+
+			private short ParseArray()
+			{
+				SkipWhiteSpace();
+				Check(pos < typeName.Length);
+				char c = typeName[pos];
+				if (c == ']')
+				{
+					return SZARRAY;
+				}
+				else if (c == '*')
+				{
+					pos++;
+					SkipWhiteSpace();
+					return 1;
+				}
+				else
+				{
+					short rank = 1;
+					while (TryConsume(','))
+					{
+						Check(rank < short.MaxValue);
+						rank++;
+						SkipWhiteSpace();
+					}
+					return rank;
+				}
+			}
+
+			private void SkipWhiteSpace()
+			{
+				while (pos < typeName.Length && Char.IsWhiteSpace(typeName[pos]))
+				{
+					pos++;
+				}
+			}
+
+			private static void Add<T>(ref T[] array, T elem)
+			{
+				if (array == null)
+				{
+					array = new T[] { elem };
+					return;
+				}
+				Array.Resize(ref array, array.Length + 1);
+				array[array.Length - 1] = elem;
+			}
+		}
+
+		internal Type GetType(Universe universe, Assembly context, bool throwOnError, string originalName)
+		{
+			Type type;
+			if (assemblyName != null)
+			{
+				Assembly asm = universe.Load(assemblyName, context, throwOnError);
+				if (asm == null)
+				{
+					return null;
+				}
+				type = asm.GetTypeImpl(name);
+			}
+			else if (context == null)
+			{
+				type = universe.Mscorlib.GetTypeImpl(name);
+			}
+			else
+			{
+				type = context.GetTypeImpl(name);
+				if (type == null && context != universe.Mscorlib)
+				{
+					type = universe.Mscorlib.GetTypeImpl(name);
+				}
+			}
+			return Expand(type, context, throwOnError, originalName);
+		}
+
+		internal Type Expand(Type type, Assembly context, bool throwOnError, string originalName)
+		{
+			if (type == null)
+			{
+				if (throwOnError)
+				{
+					throw new TypeLoadException(originalName);
+				}
+				return null;
+			}
+			if (nested != null)
+			{
+				foreach (string nest in nested)
+				{
+					type = type.GetNestedType(nest, BindingFlags.Public | BindingFlags.NonPublic);
+					if (type == null)
+					{
+						if (throwOnError)
+						{
+							throw new TypeLoadException(originalName);
+						}
+						return null;
+					}
+				}
+			}
+			if (genericParameters != null)
+			{
+				Type[] typeArgs = new Type[genericParameters.Length];
+				for (int i = 0; i < typeArgs.Length; i++)
+				{
+					typeArgs[i] = genericParameters[i].GetType(type.Assembly.universe, context, throwOnError, originalName);
+					if (typeArgs[i] == null)
+					{
+						return null;
+					}
+				}
+				type = type.MakeGenericType(typeArgs);
+			}
+			if (modifiers != null)
+			{
+				foreach (short modifier in modifiers)
+				{
+					switch (modifier)
+					{
+						case SZARRAY:
+							type = type.MakeArrayType();
+							break;
+						case BYREF:
+							type = type.MakeByRefType();
+							break;
+						case POINTER:
+							type = type.MakePointerType();
+							break;
+						default:
+							type = type.MakeArrayType(modifier);
+							break;
+					}
+				}
+			}
+			return type;
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Universe.cs b/mcs/class/IKVM.Reflection/Universe.cs
new file mode 100644
index 0000000..ab63183
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Universe.cs
@@ -0,0 +1,795 @@
+/*
+  Copyright (C) 2009-2010 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Security;
+using System.Text;
+using System.Diagnostics;
+using IKVM.Reflection.Reader;
+using IKVM.Reflection.Emit;
+
+namespace IKVM.Reflection
+{
+	public class ResolveEventArgs : EventArgs
+	{
+		private readonly string name;
+		private readonly Assembly requestingAssembly;
+
+		public ResolveEventArgs(string name)
+			: this(name, null)
+		{
+		}
+
+		public ResolveEventArgs(string name, Assembly requestingAssembly)
+		{
+			this.name = name;
+			this.requestingAssembly = requestingAssembly;
+		}
+
+		public string Name
+		{
+			get { return name; }
+		}
+
+		public Assembly RequestingAssembly
+		{
+			get { return requestingAssembly; }
+		}
+	}
+
+	public enum AssemblyComparisonResult
+	{
+		Unknown = 0,
+		EquivalentFullMatch = 1,
+		EquivalentWeakNamed = 2,
+		EquivalentFXUnified = 3,
+		EquivalentUnified = 4,
+		NonEquivalentVersion = 5,
+		NonEquivalent = 6,
+		EquivalentPartialMatch = 7,
+		EquivalentPartialWeakNamed = 8,
+		EquivalentPartialUnified = 9,
+		EquivalentPartialFXUnified = 10,
+		NonEquivalentPartialVersion = 11,
+	}
+
+	public delegate Assembly ResolveEventHandler(object sender, ResolveEventArgs args);
+
+	public sealed class Universe : IDisposable
+	{
+		internal readonly Dictionary<Type, Type> canonicalizedTypes = new Dictionary<Type, Type>();
+		private readonly List<Assembly> assemblies = new List<Assembly>();
+		private readonly List<AssemblyBuilder> dynamicAssemblies = new List<AssemblyBuilder>();
+		private readonly Dictionary<string, Assembly> assembliesByName = new Dictionary<string, Assembly>();
+		private readonly Dictionary<System.Type, Type> importedTypes = new Dictionary<System.Type, Type>();
+		private Type typeof_System_Object;
+		private Type typeof_System_ValueType;
+		private Type typeof_System_Enum;
+		private Type typeof_System_Void;
+		private Type typeof_System_Boolean;
+		private Type typeof_System_Char;
+		private Type typeof_System_SByte;
+		private Type typeof_System_Byte;
+		private Type typeof_System_Int16;
+		private Type typeof_System_UInt16;
+		private Type typeof_System_Int32;
+		private Type typeof_System_UInt32;
+		private Type typeof_System_Int64;
+		private Type typeof_System_UInt64;
+		private Type typeof_System_Single;
+		private Type typeof_System_Double;
+		private Type typeof_System_String;
+		private Type typeof_System_IntPtr;
+		private Type typeof_System_UIntPtr;
+		private Type typeof_System_TypedReference;
+		private Type typeof_System_Type;
+		private Type typeof_System_Array;
+		private Type typeof_System_DateTime;
+		private Type typeof_System_DBNull;
+		private Type typeof_System_Decimal;
+		private Type typeof_System_NonSerializedAttribute;
+		private Type typeof_System_SerializableAttribute;
+		private Type typeof_System_AttributeUsageAttribute;
+		private Type typeof_System_Reflection_AssemblyCultureAttribute;
+		private Type typeof_System_Runtime_InteropServices_DllImportAttribute;
+		private Type typeof_System_Runtime_InteropServices_FieldOffsetAttribute;
+		private Type typeof_System_Runtime_InteropServices_InAttribute;
+		private Type typeof_System_Runtime_InteropServices_MarshalAsAttribute;
+		private Type typeof_System_Runtime_InteropServices_UnmanagedType;
+		private Type typeof_System_Runtime_InteropServices_VarEnum;
+		private Type typeof_System_Runtime_InteropServices_OutAttribute;
+		private Type typeof_System_Runtime_InteropServices_StructLayoutAttribute;
+		private Type typeof_System_Runtime_InteropServices_OptionalAttribute;
+		private Type typeof_System_Runtime_InteropServices_PreserveSigAttribute;
+		private Type typeof_System_Runtime_InteropServices_ComImportAttribute;
+		private Type typeof_System_Runtime_CompilerServices_DecimalConstantAttribute;
+		private Type typeof_System_Runtime_CompilerServices_SpecialNameAttribute;
+		private Type typeof_System_Runtime_CompilerServices_MethodImplAttribute;
+		private Type typeof_System_Security_SuppressUnmanagedCodeSecurityAttribute;
+		private Type typeof_System_Reflection_AssemblyCopyrightAttribute;
+		private Type typeof_System_Reflection_AssemblyTrademarkAttribute;
+		private Type typeof_System_Reflection_AssemblyProductAttribute;
+		private Type typeof_System_Reflection_AssemblyCompanyAttribute;
+		private Type typeof_System_Reflection_AssemblyDescriptionAttribute;
+		private Type typeof_System_Reflection_AssemblyTitleAttribute;
+		private Type typeof_System_Reflection_AssemblyInformationalVersionAttribute;
+		private Type typeof_System_Reflection_AssemblyFileVersionAttribute;
+		private Type typeof_System_Security_Permissions_CodeAccessSecurityAttribute;
+		private Type typeof_System_Security_Permissions_HostProtectionAttribute;
+		private Type typeof_System_Security_Permissions_PermissionSetAttribute;
+		private Type typeof_System_Security_Permissions_SecurityAction;
+		private List<ResolveEventHandler> resolvers = new List<ResolveEventHandler>();
+
+		internal Assembly Mscorlib
+		{
+			get { return Load("mscorlib"); }
+		}
+
+		private Type ImportMscorlibType(System.Type type)
+		{
+			return Mscorlib.GetTypeImpl(type.FullName);
+		}
+
+		internal Type System_Object
+		{
+			get { return typeof_System_Object ?? (typeof_System_Object = ImportMscorlibType(typeof(System.Object))); }
+		}
+
+		internal Type System_ValueType
+		{
+			get { return typeof_System_ValueType ?? (typeof_System_ValueType = ImportMscorlibType(typeof(System.ValueType))); }
+		}
+
+		internal Type System_Enum
+		{
+			get { return typeof_System_Enum ?? (typeof_System_Enum = ImportMscorlibType(typeof(System.Enum))); }
+		}
+
+		internal Type System_Void
+		{
+			get { return typeof_System_Void ?? (typeof_System_Void = ImportMscorlibType(typeof(void))); }
+		}
+
+		internal Type System_Boolean
+		{
+			get { return typeof_System_Boolean ?? (typeof_System_Boolean = ImportMscorlibType(typeof(System.Boolean))); }
+		}
+
+		internal Type System_Char
+		{
+			get { return typeof_System_Char ?? (typeof_System_Char = ImportMscorlibType(typeof(System.Char))); }
+		}
+
+		internal Type System_SByte
+		{
+			get { return typeof_System_SByte ?? (typeof_System_SByte = ImportMscorlibType(typeof(System.SByte))); }
+		}
+
+		internal Type System_Byte
+		{
+			get { return typeof_System_Byte ?? (typeof_System_Byte = ImportMscorlibType(typeof(System.Byte))); }
+		}
+
+		internal Type System_Int16
+		{
+			get { return typeof_System_Int16 ?? (typeof_System_Int16 = ImportMscorlibType(typeof(System.Int16))); }
+		}
+
+		internal Type System_UInt16
+		{
+			get { return typeof_System_UInt16 ?? (typeof_System_UInt16 = ImportMscorlibType(typeof(System.UInt16))); }
+		}
+
+		internal Type System_Int32
+		{
+			get { return typeof_System_Int32 ?? (typeof_System_Int32 = ImportMscorlibType(typeof(System.Int32))); }
+		}
+
+		internal Type System_UInt32
+		{
+			get { return typeof_System_UInt32 ?? (typeof_System_UInt32 = ImportMscorlibType(typeof(System.UInt32))); }
+		}
+
+		internal Type System_Int64
+		{
+			get { return typeof_System_Int64 ?? (typeof_System_Int64 = ImportMscorlibType(typeof(System.Int64))); }
+		}
+
+		internal Type System_UInt64
+		{
+			get { return typeof_System_UInt64 ?? (typeof_System_UInt64 = ImportMscorlibType(typeof(System.UInt64))); }
+		}
+
+		internal Type System_Single
+		{
+			get { return typeof_System_Single ?? (typeof_System_Single = ImportMscorlibType(typeof(System.Single))); }
+		}
+
+		internal Type System_Double
+		{
+			get { return typeof_System_Double ?? (typeof_System_Double = ImportMscorlibType(typeof(System.Double))); }
+		}
+
+		internal Type System_String
+		{
+			get { return typeof_System_String ?? (typeof_System_String = ImportMscorlibType(typeof(System.String))); }
+		}
+
+		internal Type System_IntPtr
+		{
+			get { return typeof_System_IntPtr ?? (typeof_System_IntPtr = ImportMscorlibType(typeof(System.IntPtr))); }
+		}
+
+		internal Type System_UIntPtr
+		{
+			get { return typeof_System_UIntPtr ?? (typeof_System_UIntPtr = ImportMscorlibType(typeof(System.UIntPtr))); }
+		}
+
+		internal Type System_TypedReference
+		{
+			get { return typeof_System_TypedReference ?? (typeof_System_TypedReference = ImportMscorlibType(typeof(System.TypedReference))); }
+		}
+
+		internal Type System_Type
+		{
+			get { return typeof_System_Type ?? (typeof_System_Type = ImportMscorlibType(typeof(System.Type))); }
+		}
+
+		internal Type System_Array
+		{
+			get { return typeof_System_Array ?? (typeof_System_Array = ImportMscorlibType(typeof(System.Array))); }
+		}
+
+		internal Type System_DateTime
+		{
+			get { return typeof_System_DateTime ?? (typeof_System_DateTime = ImportMscorlibType(typeof(System.DateTime))); }
+		}
+
+		internal Type System_DBNull
+		{
+			get { return typeof_System_DBNull ?? (typeof_System_DBNull = ImportMscorlibType(typeof(System.DBNull))); }
+		}
+
+		internal Type System_Decimal
+		{
+			get { return typeof_System_Decimal ?? (typeof_System_Decimal = ImportMscorlibType(typeof(System.Decimal))); }
+		}
+
+		internal Type System_NonSerializedAttribute
+		{
+			get { return typeof_System_NonSerializedAttribute ?? (typeof_System_NonSerializedAttribute = ImportMscorlibType(typeof(System.NonSerializedAttribute))); }
+		}
+
+		internal Type System_SerializableAttribute
+		{
+			get { return typeof_System_SerializableAttribute ?? (typeof_System_SerializableAttribute = ImportMscorlibType(typeof(System.SerializableAttribute))); }
+		}
+
+		internal Type System_AttributeUsageAttribute
+		{
+			get { return typeof_System_AttributeUsageAttribute ?? (typeof_System_AttributeUsageAttribute = ImportMscorlibType(typeof(System.AttributeUsageAttribute))); }
+		}
+
+		internal Type System_Reflection_AssemblyCultureAttribute
+		{
+			get { return typeof_System_Reflection_AssemblyCultureAttribute ?? (typeof_System_Reflection_AssemblyCultureAttribute = ImportMscorlibType(typeof(System.Reflection.AssemblyCultureAttribute))); }
+		}
+
+		internal Type System_Runtime_InteropServices_DllImportAttribute
+		{
+			get { return typeof_System_Runtime_InteropServices_DllImportAttribute ?? (typeof_System_Runtime_InteropServices_DllImportAttribute = ImportMscorlibType(typeof(System.Runtime.InteropServices.DllImportAttribute))); }
+		}
+
+		internal Type System_Runtime_InteropServices_FieldOffsetAttribute
+		{
+			get { return typeof_System_Runtime_InteropServices_FieldOffsetAttribute ?? (typeof_System_Runtime_InteropServices_FieldOffsetAttribute = ImportMscorlibType(typeof(System.Runtime.InteropServices.FieldOffsetAttribute))); }
+		}
+
+		internal Type System_Runtime_InteropServices_InAttribute
+		{
+			get { return typeof_System_Runtime_InteropServices_InAttribute ?? (typeof_System_Runtime_InteropServices_InAttribute = ImportMscorlibType(typeof(System.Runtime.InteropServices.InAttribute))); }
+		}
+
+		internal Type System_Runtime_InteropServices_MarshalAsAttribute
+		{
+			get { return typeof_System_Runtime_InteropServices_MarshalAsAttribute ?? (typeof_System_Runtime_InteropServices_MarshalAsAttribute = ImportMscorlibType(typeof(System.Runtime.InteropServices.MarshalAsAttribute))); }
+		}
+
+		internal Type System_Runtime_InteropServices_UnmanagedType
+		{
+			get { return typeof_System_Runtime_InteropServices_UnmanagedType ?? (typeof_System_Runtime_InteropServices_UnmanagedType = ImportMscorlibType(typeof(System.Runtime.InteropServices.UnmanagedType))); }
+		}
+
+		internal Type System_Runtime_InteropServices_VarEnum
+		{
+			get { return typeof_System_Runtime_InteropServices_VarEnum ?? (typeof_System_Runtime_InteropServices_VarEnum = ImportMscorlibType(typeof(System.Runtime.InteropServices.VarEnum))); }
+		}
+
+		internal Type System_Runtime_InteropServices_OutAttribute
+		{
+			get { return typeof_System_Runtime_InteropServices_OutAttribute ?? (typeof_System_Runtime_InteropServices_OutAttribute = ImportMscorlibType(typeof(System.Runtime.InteropServices.OutAttribute))); }
+		}
+
+		internal Type System_Runtime_InteropServices_StructLayoutAttribute
+		{
+			get { return typeof_System_Runtime_InteropServices_StructLayoutAttribute ?? (typeof_System_Runtime_InteropServices_StructLayoutAttribute = ImportMscorlibType(typeof(System.Runtime.InteropServices.StructLayoutAttribute))); }
+		}
+
+		internal Type System_Runtime_InteropServices_OptionalAttribute
+		{
+			get { return typeof_System_Runtime_InteropServices_OptionalAttribute ?? (typeof_System_Runtime_InteropServices_OptionalAttribute = ImportMscorlibType(typeof(System.Runtime.InteropServices.OptionalAttribute))); }
+		}
+
+		internal Type System_Runtime_InteropServices_PreserveSigAttribute
+		{
+			get { return typeof_System_Runtime_InteropServices_PreserveSigAttribute ?? (typeof_System_Runtime_InteropServices_PreserveSigAttribute = ImportMscorlibType(typeof(System.Runtime.InteropServices.PreserveSigAttribute))); }
+		}
+
+		internal Type System_Runtime_InteropServices_ComImportAttribute
+		{
+			get { return typeof_System_Runtime_InteropServices_ComImportAttribute ?? (typeof_System_Runtime_InteropServices_ComImportAttribute = ImportMscorlibType(typeof(System.Runtime.InteropServices.ComImportAttribute))); }
+		}
+
+		internal Type System_Runtime_CompilerServices_DecimalConstantAttribute
+		{
+			get { return typeof_System_Runtime_CompilerServices_DecimalConstantAttribute ?? (typeof_System_Runtime_CompilerServices_DecimalConstantAttribute = ImportMscorlibType(typeof(System.Runtime.CompilerServices.DecimalConstantAttribute))); }
+		}
+
+		internal Type System_Runtime_CompilerServices_SpecialNameAttribute
+		{
+			get { return typeof_System_Runtime_CompilerServices_SpecialNameAttribute ?? (typeof_System_Runtime_CompilerServices_SpecialNameAttribute = ImportMscorlibType(typeof(System.Runtime.CompilerServices.SpecialNameAttribute))); }
+		}
+
+		internal Type System_Runtime_CompilerServices_MethodImplAttribute
+		{
+			get { return typeof_System_Runtime_CompilerServices_MethodImplAttribute ?? (typeof_System_Runtime_CompilerServices_MethodImplAttribute = ImportMscorlibType(typeof(System.Runtime.CompilerServices.MethodImplAttribute))); }
+		}
+
+		internal Type System_Security_SuppressUnmanagedCodeSecurityAttribute
+		{
+			get { return typeof_System_Security_SuppressUnmanagedCodeSecurityAttribute ?? (typeof_System_Security_SuppressUnmanagedCodeSecurityAttribute = ImportMscorlibType(typeof(System.Security.SuppressUnmanagedCodeSecurityAttribute))); }
+		}
+
+		internal Type System_Reflection_AssemblyCopyrightAttribute
+		{
+			get { return typeof_System_Reflection_AssemblyCopyrightAttribute ?? (typeof_System_Reflection_AssemblyCopyrightAttribute = ImportMscorlibType(typeof(System.Reflection.AssemblyCopyrightAttribute))); }
+		}
+
+		internal Type System_Reflection_AssemblyTrademarkAttribute
+		{
+			get { return typeof_System_Reflection_AssemblyTrademarkAttribute ?? (typeof_System_Reflection_AssemblyTrademarkAttribute = ImportMscorlibType(typeof(System.Reflection.AssemblyTrademarkAttribute))); }
+		}
+
+		internal Type System_Reflection_AssemblyProductAttribute
+		{
+			get { return typeof_System_Reflection_AssemblyProductAttribute ?? (typeof_System_Reflection_AssemblyProductAttribute = ImportMscorlibType(typeof(System.Reflection.AssemblyProductAttribute))); }
+		}
+
+		internal Type System_Reflection_AssemblyCompanyAttribute
+		{
+			get { return typeof_System_Reflection_AssemblyCompanyAttribute ?? (typeof_System_Reflection_AssemblyCompanyAttribute = ImportMscorlibType(typeof(System.Reflection.AssemblyCompanyAttribute))); }
+		}
+
+		internal Type System_Reflection_AssemblyDescriptionAttribute
+		{
+			get { return typeof_System_Reflection_AssemblyDescriptionAttribute ?? (typeof_System_Reflection_AssemblyDescriptionAttribute = ImportMscorlibType(typeof(System.Reflection.AssemblyDescriptionAttribute))); }
+		}
+
+		internal Type System_Reflection_AssemblyTitleAttribute
+		{
+			get { return typeof_System_Reflection_AssemblyTitleAttribute ?? (typeof_System_Reflection_AssemblyTitleAttribute = ImportMscorlibType(typeof(System.Reflection.AssemblyTitleAttribute))); }
+		}
+
+		internal Type System_Reflection_AssemblyInformationalVersionAttribute
+		{
+			get { return typeof_System_Reflection_AssemblyInformationalVersionAttribute ?? (typeof_System_Reflection_AssemblyInformationalVersionAttribute = ImportMscorlibType(typeof(System.Reflection.AssemblyInformationalVersionAttribute))); }
+		}
+
+		internal Type System_Reflection_AssemblyFileVersionAttribute
+		{
+			get { return typeof_System_Reflection_AssemblyFileVersionAttribute ?? (typeof_System_Reflection_AssemblyFileVersionAttribute = ImportMscorlibType(typeof(System.Reflection.AssemblyFileVersionAttribute))); }
+		}
+
+		internal Type System_Security_Permissions_CodeAccessSecurityAttribute
+		{
+			get { return typeof_System_Security_Permissions_CodeAccessSecurityAttribute ?? (typeof_System_Security_Permissions_CodeAccessSecurityAttribute = ImportMscorlibType(typeof(System.Security.Permissions.CodeAccessSecurityAttribute))); }
+		}
+
+		internal Type System_Security_Permissions_HostProtectionAttribute
+		{
+			get { return typeof_System_Security_Permissions_HostProtectionAttribute ?? (typeof_System_Security_Permissions_HostProtectionAttribute = ImportMscorlibType(typeof(System.Security.Permissions.HostProtectionAttribute))); }
+		}
+
+		internal Type System_Security_Permissions_PermissionSetAttribute
+		{
+			get { return typeof_System_Security_Permissions_PermissionSetAttribute ?? (typeof_System_Security_Permissions_PermissionSetAttribute = ImportMscorlibType(typeof(System.Security.Permissions.PermissionSetAttribute))); }
+		}
+
+		internal Type System_Security_Permissions_SecurityAction
+		{
+			get { return typeof_System_Security_Permissions_SecurityAction ?? (typeof_System_Security_Permissions_SecurityAction = ImportMscorlibType(typeof(System.Security.Permissions.SecurityAction))); }
+		}
+
+		internal bool HasMscorlib
+		{
+			get { return GetLoadedAssembly("mscorlib") != null; }
+		}
+
+		public event ResolveEventHandler AssemblyResolve
+		{
+			add { resolvers.Add(value); }
+			remove { resolvers.Remove(value); }
+		}
+
+		public Type Import(System.Type type)
+		{
+			Type imported;
+			if (!importedTypes.TryGetValue(type, out imported))
+			{
+				imported = ImportImpl(type);
+				if (imported != null)
+				{
+					importedTypes.Add(type, imported);
+				}
+			}
+			return imported;
+		}
+
+		private Type ImportImpl(System.Type type)
+		{
+			if (type.Assembly == typeof(IKVM.Reflection.Type).Assembly)
+			{
+				throw new ArgumentException("Did you really want to import " + type.FullName + "?");
+			}
+			if (type.HasElementType)
+			{
+				if (type.IsArray)
+				{
+					if (type.Name.EndsWith("[]"))
+					{
+						return Import(type.GetElementType()).MakeArrayType();
+					}
+					else
+					{
+						return Import(type.GetElementType()).MakeArrayType(type.GetArrayRank());
+					}
+				}
+				else if (type.IsByRef)
+				{
+					return Import(type.GetElementType()).MakeByRefType();
+				}
+				else if (type.IsPointer)
+				{
+					return Import(type.GetElementType()).MakePointerType();
+				}
+				else
+				{
+					throw new InvalidOperationException();
+				}
+			}
+			else if (type.IsGenericParameter)
+			{
+				if (type.DeclaringMethod != null)
+				{
+					throw new NotImplementedException();
+				}
+				else
+				{
+					return Import(type.DeclaringType).GetGenericArguments()[type.GenericParameterPosition];
+				}
+			}
+			else if (type.IsGenericType && !type.IsGenericTypeDefinition)
+			{
+				System.Type[] args = type.GetGenericArguments();
+				Type[] importedArgs = new Type[args.Length];
+				for (int i = 0; i < args.Length; i++)
+				{
+					importedArgs[i] = Import(args[i]);
+				}
+				return Import(type.GetGenericTypeDefinition()).MakeGenericType(importedArgs);
+			}
+			else
+			{
+				return Import(type.Assembly).GetType(type.FullName);
+			}
+		}
+
+		private Assembly Import(System.Reflection.Assembly asm)
+		{
+			return Load(asm.FullName);
+		}
+
+		public RawModule OpenRawModule(string path)
+		{
+			path = Path.GetFullPath(path);
+			return OpenRawModule(new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read), path);
+		}
+
+		public RawModule OpenRawModule(Stream stream, string location)
+		{
+			if (!stream.CanRead || !stream.CanSeek)
+			{
+				throw new NotSupportedException();
+			}
+			return new RawModule(new ModuleReader(null, this, stream, location));
+		}
+
+		public Assembly LoadAssembly(RawModule module)
+		{
+			string refname = module.GetAssemblyName().FullName;
+			Assembly asm = GetLoadedAssembly(refname);
+			if (asm == null)
+			{
+				asm = module.ToAssembly();
+				assemblies.Add(asm);
+			}
+			return asm;
+		}
+
+		public Assembly LoadFile(string path)
+		{
+			try
+			{
+				using (RawModule module = OpenRawModule(path))
+				{
+					return LoadAssembly(module);
+				}
+			}
+			catch (IOException x)
+			{
+				throw new FileNotFoundException(x.Message, x);
+			}
+			catch (UnauthorizedAccessException x)
+			{
+				throw new FileNotFoundException(x.Message, x);
+			}
+		}
+
+		private Assembly GetLoadedAssembly(string refname)
+		{
+			Assembly asm;
+			if (!assembliesByName.TryGetValue(refname, out asm))
+			{
+				for (int i = 0; i < assemblies.Count; i++)
+				{
+					AssemblyComparisonResult result;
+					// We won't allow FX unification here, because our own (non-Fusion) implementation of CompareAssemblyIdentity doesn't support it and
+					// we don't want to create a fundamental functional difference based on that.
+					if (CompareAssemblyIdentity(refname, false, assemblies[i].FullName, false, out result) && result != AssemblyComparisonResult.EquivalentFXUnified)
+					{
+						asm = assemblies[i];
+						assembliesByName.Add(refname, asm);
+						break;
+					}
+				}
+			}
+			return asm;
+		}
+
+		private Assembly GetDynamicAssembly(string refname)
+		{
+			foreach (AssemblyBuilder asm in dynamicAssemblies)
+			{
+				AssemblyComparisonResult result;
+				// We won't allow FX unification here, because our own (non-Fusion) implementation of CompareAssemblyIdentity doesn't support it and
+				// we don't want to create a fundamental functional difference based on that.
+				if (CompareAssemblyIdentity(refname, false, asm.FullName, false, out result) && result != AssemblyComparisonResult.EquivalentFXUnified)
+				{
+					return asm;
+				}
+			}
+			return null;
+		}
+
+		public Assembly Load(string refname)
+		{
+			return Load(refname, null, true);
+		}
+
+		internal Assembly Load(string refname, Assembly requestingAssembly, bool throwOnError)
+		{
+			Assembly asm = GetLoadedAssembly(refname);
+			if (asm != null)
+			{
+				return asm;
+			}
+			if (resolvers.Count == 0)
+			{
+				asm = DefaultResolver(refname, throwOnError);
+			}
+			else
+			{
+				ResolveEventArgs args = new ResolveEventArgs(refname, requestingAssembly);
+				foreach (ResolveEventHandler evt in resolvers)
+				{
+					asm = evt(this, args);
+					if (asm != null)
+					{
+						break;
+					}
+				}
+				if (asm == null)
+				{
+					asm = GetDynamicAssembly(refname);
+				}
+			}
+			if (asm != null)
+			{
+				string defname = asm.FullName;
+				if (refname != defname)
+				{
+					assembliesByName.Add(refname, asm);
+				}
+				return asm;
+			}
+			if (throwOnError)
+			{
+				throw new FileNotFoundException(refname);
+			}
+			return null;
+		}
+
+		private Assembly DefaultResolver(string refname, bool throwOnError)
+		{
+			Assembly asm = GetDynamicAssembly(refname);
+			if (asm != null)
+			{
+				return asm;
+			}
+			string fileName;
+			if (throwOnError)
+			{
+				try
+				{
+					fileName = System.Reflection.Assembly.ReflectionOnlyLoad(refname).Location;
+				}
+				catch (System.BadImageFormatException x)
+				{
+					throw new BadImageFormatException(x.Message, x);
+				}
+			}
+			else
+			{
+				try
+				{
+					fileName = System.Reflection.Assembly.ReflectionOnlyLoad(refname).Location;
+				}
+				catch (System.BadImageFormatException x)
+				{
+					throw new BadImageFormatException(x.Message, x);
+				}
+				catch (FileNotFoundException)
+				{
+					// we intentionally only swallow the FileNotFoundException, if the file exists but isn't a valid assembly,
+					// we should throw an exception
+					return null;
+				}
+			}
+			return LoadFile(fileName);
+		}
+
+		public Type GetType(string assemblyQualifiedTypeName)
+		{
+			// to be more compatible with Type.GetType(), we could call Assembly.GetCallingAssembly(),
+			// import that assembly and pass it as the context, but implicitly importing is considered evil
+			return GetType(null, assemblyQualifiedTypeName, false);
+		}
+
+		public Type GetType(string assemblyQualifiedTypeName, bool throwOnError)
+		{
+			// to be more compatible with Type.GetType(), we could call Assembly.GetCallingAssembly(),
+			// import that assembly and pass it as the context, but implicitly importing is considered evil
+			return GetType(null, assemblyQualifiedTypeName, throwOnError);
+		}
+
+		// note that context is slightly different from the calling assembly (System.Type.GetType),
+		// because context is passed to the AssemblyResolve event as the RequestingAssembly
+		public Type GetType(Assembly context, string assemblyQualifiedTypeName, bool throwOnError)
+		{
+			TypeNameParser parser = TypeNameParser.Parse(assemblyQualifiedTypeName, throwOnError);
+			if (parser.Error)
+			{
+				return null;
+			}
+			return parser.GetType(this, context, throwOnError, assemblyQualifiedTypeName);
+		}
+
+		public Assembly[] GetAssemblies()
+		{
+			Assembly[] array = new Assembly[assemblies.Count + dynamicAssemblies.Count];
+			assemblies.CopyTo(array);
+			for (int i = 0, j = assemblies.Count; j < array.Length; i++, j++)
+			{
+				array[j] = dynamicAssemblies[i];
+			}
+			return array;
+		}
+
+		// this is equivalent to the Fusion CompareAssemblyIdentity API
+		public bool CompareAssemblyIdentity(string assemblyIdentity1, bool unified1, string assemblyIdentity2, bool unified2, out AssemblyComparisonResult result)
+		{
+			return Fusion.CompareAssemblyIdentity(assemblyIdentity1, unified1, assemblyIdentity2, unified2, out result);
+		}
+
+		public AssemblyBuilder DefineDynamicAssembly(AssemblyName name, AssemblyBuilderAccess access)
+		{
+			return DefineDynamicAssemblyImpl(name, access, null, null, null, null);
+		}
+
+		public AssemblyBuilder DefineDynamicAssembly(AssemblyName name, AssemblyBuilderAccess access, string dir)
+		{
+			return DefineDynamicAssemblyImpl(name, access, dir, null, null, null);
+		}
+
+#if NET_4_0
+		[Obsolete]
+#endif
+		public AssemblyBuilder DefineDynamicAssembly(AssemblyName name, AssemblyBuilderAccess access, string dir, PermissionSet requiredPermissions, PermissionSet optionalPermissions, PermissionSet refusedPermissions)
+		{
+			return DefineDynamicAssemblyImpl(name, access, dir, requiredPermissions, optionalPermissions, refusedPermissions);
+		}
+
+		private AssemblyBuilder DefineDynamicAssemblyImpl(AssemblyName name, AssemblyBuilderAccess access, string dir, PermissionSet requiredPermissions, PermissionSet optionalPermissions, PermissionSet refusedPermissions)
+		{
+			AssemblyBuilder asm = new AssemblyBuilder(this, name, dir, requiredPermissions, optionalPermissions, refusedPermissions);
+			dynamicAssemblies.Add(asm);
+			return asm;
+ 		}
+
+		internal void RenameAssembly(Assembly assembly, AssemblyName oldName)
+		{
+			List<string> remove = new List<string>();
+			foreach (KeyValuePair<string, Assembly> kv in assembliesByName)
+			{
+				if (kv.Value == assembly)
+				{
+					remove.Add(kv.Key);
+				}
+			}
+			foreach (string key in remove)
+			{
+				assembliesByName.Remove(key);
+			}
+		}
+
+		public void Dispose()
+		{
+			foreach (Assembly asm in assemblies)
+			{
+				foreach (Module mod in asm.GetLoadedModules())
+				{
+					mod.Dispose();
+				}
+			}
+			foreach (AssemblyBuilder asm in dynamicAssemblies)
+			{
+				foreach (Module mod in asm.GetLoadedModules())
+				{
+					mod.Dispose();
+				}
+			}
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Util.cs b/mcs/class/IKVM.Reflection/Util.cs
new file mode 100644
index 0000000..ca457d3
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Util.cs
@@ -0,0 +1,291 @@
+/*
+  Copyright (C) 2008-2011 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Collections.Generic;
+using System.Runtime.Serialization;
+
+namespace IKVM.Reflection
+{
+	public interface ICustomAttributeProvider
+	{
+		bool IsDefined(Type attributeType, bool inherit);
+		IList<CustomAttributeData> __GetCustomAttributes(Type attributeType, bool inherit);
+	}
+
+	[Serializable]
+	public sealed class FileFormatLimitationExceededException : InvalidOperationException
+	{
+		public const int META_E_STRINGSPACE_FULL = unchecked((int)0x80131198);
+
+		public FileFormatLimitationExceededException(string message, int hresult)
+			: base(message)
+		{
+			this.HResult = hresult;
+		}
+
+		private FileFormatLimitationExceededException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context)
+			: base(info, context)
+		{
+		}
+
+		public int ErrorCode
+		{
+			get { return this.HResult; }
+		}
+	}
+
+	[Serializable]
+	public sealed class Missing : ISerializable
+	{
+		public static readonly Missing Value = new Missing();
+
+		private Missing() { }
+
+		void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context)
+		{
+			info.SetType(typeof(SingletonSerializationHelper));
+		}
+
+		[Serializable]
+		private sealed class SingletonSerializationHelper : IObjectReference
+		{
+			public object GetRealObject(StreamingContext context)
+			{
+				return Value;
+			}
+		}
+	}
+
+	static class Empty<T>
+	{
+		internal static readonly T[] Array = new T[0];
+	}
+
+	static class Util
+	{
+		internal static Type[] Copy(Type[] array)
+		{
+			if (array == null || array.Length == 0)
+			{
+				return Type.EmptyTypes;
+			}
+			Type[] copy = new Type[array.Length];
+			Array.Copy(array, copy, array.Length);
+			return copy;
+		}
+
+		internal static Type[][] Copy(Type[][] types)
+		{
+			if (types == null || types.Length == 0)
+			{
+				return types;
+			}
+			Type[][] newArray = new Type[types.Length][];
+			for (int i = 0; i < newArray.Length; i++)
+			{
+				newArray[i] = Copy(types[i]);
+			}
+			return newArray;
+		}
+
+		internal static T[] ToArray<T, V>(List<V> list, T[] empty) where V : T
+		{
+			if (list == null || list.Count == 0)
+			{
+				return empty;
+			}
+			T[] array = new T[list.Count];
+			for (int i = 0; i < array.Length; i++)
+			{
+				array[i] = list[i];
+			}
+			return array;
+		}
+
+		// note that an empty array matches a null reference
+		internal static bool ArrayEquals(Type[] t1, Type[] t2)
+		{
+			if (t1 == t2)
+			{
+				return true;
+			}
+			if (t1 == null)
+			{
+				return t2.Length == 0;
+			}
+			else if (t2 == null)
+			{
+				return t1.Length == 0;
+			}
+			if (t1.Length == t2.Length)
+			{
+				for (int i = 0; i < t1.Length; i++)
+				{
+					if (!TypeEquals(t1[i], t2[i]))
+					{
+						return false;
+					}
+				}
+				return true;
+			}
+			return false;
+		}
+
+		internal static bool ArrayEquals(Type[][] t1, Type[][] t2)
+		{
+			if (t1 == t2)
+			{
+				return true;
+			}
+			if (t1 == null)
+			{
+				return t2.Length == 0;
+			}
+			else if (t2 == null)
+			{
+				return t1.Length == 0;
+			}
+			if (t1.Length == t2.Length)
+			{
+				for (int i = 0; i < t1.Length; i++)
+				{
+					if (!ArrayEquals(t1[i], t2[i]))
+					{
+						return false;
+					}
+				}
+				return true;
+			}
+			return false;
+		}
+
+		internal static bool ArrayEquals(Type[][][] t1, Type[][][] t2)
+		{
+			if (t1 == t2)
+			{
+				return true;
+			}
+			if (t1 == null)
+			{
+				return t2.Length == 0;
+			}
+			else if (t2 == null)
+			{
+				return t1.Length == 0;
+			}
+			if (t1.Length == t2.Length)
+			{
+				for (int i = 0; i < t1.Length; i++)
+				{
+					if (!ArrayEquals(t1[i], t2[i]))
+					{
+						return false;
+					}
+				}
+				return true;
+			}
+			return false;
+		}
+
+		internal static bool TypeEquals(Type t1, Type t2)
+		{
+			if (t1 == t2)
+			{
+				return true;
+			}
+			if (t1 == null)
+			{
+				return false;
+			}
+			return t1.Equals(t2);
+		}
+
+		internal static int GetHashCode(Type[] types)
+		{
+			if (types == null)
+			{
+				return 0;
+			}
+			int h = 0;
+			foreach (Type t in types)
+			{
+				if (t != null)
+				{
+					h *= 3;
+					h ^= t.GetHashCode();
+				}
+			}
+			return h;
+		}
+
+		internal static int GetHashCode(Type[][] types)
+		{
+			int h = 0;
+			if (types != null)
+			{
+				foreach (Type[] array in types)
+				{
+					h ^= GetHashCode(array);
+				}
+			}
+			return h;
+		}
+
+		internal static int GetHashCode(Type[][][] types)
+		{
+			int h = 0;
+			if (types != null)
+			{
+				foreach (Type[][] array in types)
+				{
+					h ^= GetHashCode(array);
+				}
+			}
+			return h;
+		}
+	}
+
+	[System.Runtime.InteropServices.StructLayout(System.Runtime.InteropServices.LayoutKind.Explicit)]
+	struct SingleConverter
+	{
+		[System.Runtime.InteropServices.FieldOffset(0)]
+		private int i;
+		[System.Runtime.InteropServices.FieldOffset(0)]
+		private float f;
+
+		internal static int SingleToInt32Bits(float v)
+		{
+			SingleConverter c = new SingleConverter();
+			c.f = v;
+			return c.i;
+		}
+
+		internal static float Int32BitsToSingle(int v)
+		{
+			SingleConverter c = new SingleConverter();
+			c.i = v;
+			return c.f;
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Writer/ByteBuffer.cs b/mcs/class/IKVM.Reflection/Writer/ByteBuffer.cs
new file mode 100644
index 0000000..b7e103f
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Writer/ByteBuffer.cs
@@ -0,0 +1,311 @@
+/*
+  Copyright (C) 2008 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Collections.Generic;
+using System.Text;
+using IKVM.Reflection.Metadata;
+
+namespace IKVM.Reflection.Writer
+{
+	sealed class ByteBuffer
+	{
+		private byte[] buffer;
+		private int pos;
+		private int __length;	// __length is only valid if > pos, otherwise pos is the current length
+
+		internal ByteBuffer(int initialCapacity)
+		{
+			buffer = new byte[initialCapacity];
+		}
+
+		private ByteBuffer(byte[] wrap, int length)
+		{
+			this.buffer = wrap;
+			this.pos = length;
+		}
+
+		internal int Position
+		{
+			get { return pos; }
+			set
+			{
+				if (value > this.Length || value > buffer.Length)
+					throw new ArgumentOutOfRangeException();
+				__length = Math.Max(__length, pos);
+				pos = value;
+			}
+		}
+
+		internal int Length
+		{
+			get { return Math.Max(pos, __length); }
+		}
+
+		private void Grow(int minGrow)
+		{
+			byte[] newbuf = new byte[Math.Max(buffer.Length + minGrow, buffer.Length * 2)];
+			Buffer.BlockCopy(buffer, 0, newbuf, 0, buffer.Length);
+			buffer = newbuf;
+		}
+
+		// NOTE this does not advance the position
+		internal int GetInt32AtCurrentPosition()
+		{
+			return buffer[pos]
+				+ (buffer[pos + 1] << 8)
+				+ (buffer[pos + 2] << 16)
+				+ (buffer[pos + 3] << 24);
+		}
+
+		// NOTE this does not advance the position
+		internal byte GetByteAtCurrentPosition()
+		{
+			return buffer[pos];
+		}
+
+		internal void Write(byte[] value)
+		{
+			if (pos + value.Length > buffer.Length)
+				Grow(value.Length);
+			Buffer.BlockCopy(value, 0, buffer, pos, value.Length);
+			pos += value.Length;
+		}
+
+		internal void Write(byte value)
+		{
+			if (pos == buffer.Length)
+				Grow(1);
+			buffer[pos++] = value;
+		}
+
+		internal void Write(sbyte value)
+		{
+			Write((byte)value);
+		}
+
+		internal void Write(ushort value)
+		{
+			Write((short)value);
+		}
+
+		internal void Write(short value)
+		{
+			if (pos + 2 > buffer.Length)
+				Grow(2);
+			buffer[pos++] = (byte)value;
+			buffer[pos++] = (byte)(value >> 8);
+		}
+
+		internal void Write(uint value)
+		{
+			Write((int)value);
+		}
+	
+		internal void Write(int value)
+		{
+			if (pos + 4 > buffer.Length)
+				Grow(4);
+			buffer[pos++] = (byte)value;
+			buffer[pos++] = (byte)(value >> 8);
+			buffer[pos++] = (byte)(value >> 16);
+			buffer[pos++] = (byte)(value >> 24);
+		}
+
+		internal void Write(ulong value)
+		{
+			Write((long)value);
+		}
+
+		internal void Write(long value)
+		{
+			if (pos + 8 > buffer.Length)
+				Grow(8);
+			buffer[pos++] = (byte)value;
+			buffer[pos++] = (byte)(value >> 8);
+			buffer[pos++] = (byte)(value >> 16);
+			buffer[pos++] = (byte)(value >> 24);
+			buffer[pos++] = (byte)(value >> 32);
+			buffer[pos++] = (byte)(value >> 40);
+			buffer[pos++] = (byte)(value >> 48);
+			buffer[pos++] = (byte)(value >> 56);
+		}
+
+		internal void Write(float value)
+		{
+			Write(SingleConverter.SingleToInt32Bits(value));
+		}
+
+		internal void Write(double value)
+		{
+			Write(BitConverter.DoubleToInt64Bits(value));
+		}
+
+		internal void Write(string str)
+		{
+			if (str == null)
+			{
+				Write((byte)0xFF);
+			}
+			else
+			{
+				byte[] buf = Encoding.UTF8.GetBytes(str);
+				WriteCompressedInt(buf.Length);
+				Write(buf);
+			}
+		}
+
+		internal void WriteCompressedInt(int value)
+		{
+			if (value <= 0x7F)
+			{
+				Write((byte)value);
+			}
+			else if (value <= 0x3FFF)
+			{
+				Write((byte)(0x80 | (value >> 8)));
+				Write((byte)value);
+			}
+			else
+			{
+				Write((byte)(0xC0 | (value >> 24)));
+				Write((byte)(value >> 16));
+				Write((byte)(value >> 8));
+				Write((byte)value);
+			}
+		}
+
+		internal void Write(ByteBuffer bb)
+		{
+			if (pos + bb.Length > buffer.Length)
+				Grow(bb.Length);
+			Buffer.BlockCopy(bb.buffer, 0, buffer, pos, bb.Length);
+			pos += bb.Length;
+		}
+
+		internal void WriteTo(System.IO.Stream stream)
+		{
+			stream.Write(buffer, 0, this.Length);
+		}
+
+		internal void Clear()
+		{
+			pos = 0;
+			__length = 0;
+		}
+
+		internal void Align(int alignment)
+		{
+			if (pos + alignment > buffer.Length)
+				Grow(alignment);
+			int newpos = (pos + alignment - 1) & ~(alignment - 1);
+			while (pos < newpos)
+				buffer[pos++] = 0;
+		}
+
+		internal void WriteTypeDefOrRefEncoded(int token)
+		{
+			switch (token >> 24)
+			{
+				case TypeDefTable.Index:
+					WriteCompressedInt((token & 0xFFFFFF) << 2 | 0);
+					break;
+				case TypeRefTable.Index:
+					WriteCompressedInt((token & 0xFFFFFF) << 2 | 1);
+					break;
+				case TypeSpecTable.Index:
+					WriteCompressedInt((token & 0xFFFFFF) << 2 | 2);
+					break;
+				default:
+					throw new InvalidOperationException();
+			}
+		}
+
+		internal void Write(System.IO.Stream stream)
+		{
+			const int chunkSize = 8192;
+			for (; ; )
+			{
+				if (pos + chunkSize > buffer.Length)
+					Grow(chunkSize);
+				int read = stream.Read(buffer, pos, chunkSize);
+				if (read <= 0)
+				{
+					break;
+				}
+				pos += read;
+			}
+		}
+
+		internal byte[] ToArray()
+		{
+			byte[] buf = new byte[pos];
+			Buffer.BlockCopy(buffer, 0, buf, 0, pos);
+			return buf;
+		}
+
+		internal static ByteBuffer Wrap(byte[] buf)
+		{
+			return new ByteBuffer(buf, buf.Length);
+		}
+
+		internal static ByteBuffer Wrap(byte[] buf, int length)
+		{
+			return new ByteBuffer(buf, length);
+		}
+
+		internal bool Match(int pos, ByteBuffer bb2, int pos2, int len)
+		{
+			for (int i = 0; i < len; i++)
+			{
+				if (buffer[pos + i] != bb2.buffer[pos2 + i])
+				{
+					return false;
+				}
+			}
+			return true;
+		}
+
+		internal int Hash()
+		{
+			int hash = 0;
+			int len = this.Length;
+			for (int i = 0; i < len; i++)
+			{
+				hash *= 37;
+				hash ^= buffer[i];
+			}
+			return hash;
+		}
+
+		internal IKVM.Reflection.Reader.ByteReader GetBlob(int offset)
+		{
+			return IKVM.Reflection.Reader.ByteReader.FromBlob(buffer, offset);
+		}
+
+		internal void Patch(int offset, byte b)
+		{
+			buffer[offset] = b;
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Writer/Heaps.cs b/mcs/class/IKVM.Reflection/Writer/Heaps.cs
new file mode 100644
index 0000000..b8764d2
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Writer/Heaps.cs
@@ -0,0 +1,382 @@
+/*
+  Copyright (C) 2008 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Diagnostics;
+using IKVM.Reflection.Metadata;
+
+namespace IKVM.Reflection.Writer
+{
+	abstract class Heap
+	{
+		protected bool frozen;
+		protected int unalignedlength;
+
+		internal void Write(MetadataWriter mw)
+		{
+			int pos = mw.Position;
+			WriteImpl(mw);
+			Debug.Assert(mw.Position == pos + unalignedlength);
+			int align = Length - unalignedlength;
+			for (int i = 0; i < align; i++)
+			{
+				mw.Write((byte)0);
+			}
+		}
+
+		internal bool IsBig
+		{
+			get { return Length > 65535; }
+		}
+
+		internal int Length
+		{
+			get
+			{
+				if (!frozen)
+					throw new InvalidOperationException();
+				return (unalignedlength + 3) & ~3;
+			}
+		}
+
+		protected abstract void WriteImpl(MetadataWriter mw);
+	}
+
+	abstract class SimpleHeap : Heap
+	{
+		internal void Freeze()
+		{
+			if (frozen)
+				throw new InvalidOperationException();
+			frozen = true;
+			unalignedlength = GetLength();
+		}
+
+		protected abstract int GetLength();
+	}
+
+	sealed class TableHeap : Heap
+	{
+		internal void Freeze(MetadataWriter mw)
+		{
+			if (frozen)
+				throw new InvalidOperationException();
+			frozen = true;
+			unalignedlength = GetLength(mw);
+		}
+
+		protected override void WriteImpl(MetadataWriter mw)
+		{
+			Table[] tables = mw.ModuleBuilder.GetTables();
+			// Header
+			mw.Write(0);		// Reserved
+			int ver = mw.ModuleBuilder.MDStreamVersion;
+			mw.Write((byte)(ver >> 16));	// MajorVersion
+			mw.Write((byte)ver);			// MinorVersion
+			byte heapSizes = 0;
+			if (mw.ModuleBuilder.Strings.IsBig)
+			{
+				heapSizes |= 0x01;
+			}
+			if (mw.ModuleBuilder.Guids.IsBig)
+			{
+				heapSizes |= 0x02;
+			}
+			if (mw.ModuleBuilder.Blobs.IsBig)
+			{
+				heapSizes |= 0x04;
+			}
+			mw.Write(heapSizes);// HeapSizes
+			// LAMESPEC spec says reserved, but .NET 2.0 Ref.Emit sets it to 0x10
+			mw.Write((byte)0x10);	// Reserved
+			long bit = 1;
+			long valid = 0;
+			foreach (Table table in tables)
+			{
+				if (table != null && table.RowCount > 0)
+				{
+					valid |= bit;
+				}
+				bit <<= 1;
+			}
+			mw.Write(valid);	// Valid
+			mw.Write(0x0016003301FA00L);	// Sorted
+			// Rows
+			foreach (Table table in tables)
+			{
+				if (table != null && table.RowCount > 0)
+				{
+					mw.Write(table.RowCount);
+				}
+			}
+			// Tables
+			foreach (Table table in tables)
+			{
+				if (table != null && table.RowCount > 0)
+				{
+					int pos = mw.Position;
+					table.Write(mw);
+					Debug.Assert(mw.Position - pos == table.GetLength(mw));
+				}
+			}
+			// unexplained extra padding
+			mw.Write((byte)0);
+		}
+
+		private int GetLength(MetadataWriter mw)
+		{
+			int len = 4 + 4 + 8 + 8;
+			foreach (Table table in mw.ModuleBuilder.GetTables())
+			{
+				if (table != null && table.RowCount > 0)
+				{
+					len += 4;	// row count
+					len += table.GetLength(mw);
+				}
+			}
+			// note that we pad one extra (unexplained) byte
+			return len + 1;
+		}
+	}
+
+	sealed class StringHeap : SimpleHeap
+	{
+		private List<string> list = new List<string>();
+		private Dictionary<string, int> strings = new Dictionary<string, int>();
+		private int nextOffset;
+
+		internal StringHeap()
+		{
+			Add("");
+		}
+
+		internal int Add(string str)
+		{
+			Debug.Assert(!frozen);
+			int offset;
+			if (!strings.TryGetValue(str, out offset))
+			{
+				offset = nextOffset;
+				nextOffset += System.Text.Encoding.UTF8.GetByteCount(str) + 1;
+				list.Add(str);
+				strings.Add(str, offset);
+			}
+			return offset;
+		}
+
+		protected override int GetLength()
+		{
+			return nextOffset;
+		}
+
+		protected override void WriteImpl(MetadataWriter mw)
+		{
+			foreach (string str in list)
+			{
+				mw.Write(System.Text.Encoding.UTF8.GetBytes(str));
+				mw.Write((byte)0);
+			}
+		}
+	}
+
+	sealed class UserStringHeap : SimpleHeap
+	{
+		private List<string> list = new List<string>();
+		private Dictionary<string, int> strings = new Dictionary<string, int>();
+		private int nextOffset;
+
+		internal UserStringHeap()
+		{
+			nextOffset = 1;
+		}
+
+		internal bool IsEmpty
+		{
+			get { return nextOffset == 1; }
+		}
+
+		internal int Add(string str)
+		{
+			Debug.Assert(!frozen);
+			int offset;
+			if (!strings.TryGetValue(str, out offset))
+			{
+				int length = str.Length * 2 + 1 + MetadataWriter.GetCompressedIntLength(str.Length * 2 + 1);
+				if (nextOffset + length > 0xFFFFFF)
+				{
+					throw new FileFormatLimitationExceededException("No logical space left to create more user strings.", FileFormatLimitationExceededException.META_E_STRINGSPACE_FULL);
+				}
+				offset = nextOffset;
+				nextOffset += length;
+				list.Add(str);
+				strings.Add(str, offset);
+			}
+			return offset;
+		}
+
+		protected override int GetLength()
+		{
+			return nextOffset;
+		}
+
+		protected override void WriteImpl(MetadataWriter mw)
+		{
+			mw.Write((byte)0);
+			foreach (string str in list)
+			{
+				mw.WriteCompressedInt(str.Length * 2 + 1);
+				byte hasSpecialChars = 0;
+				foreach (char ch in str)
+				{
+					mw.Write((ushort)ch);
+					if (hasSpecialChars == 0 && (ch < 0x20 || ch > 0x7E))
+					{
+						if (ch > 0x7E
+							|| (ch >= 0x01 && ch <= 0x08)
+							|| (ch >= 0x0E && ch <= 0x1F)
+							|| ch == 0x27
+							|| ch == 0x2D)
+						{
+							hasSpecialChars = 1;
+						}
+					}
+				}
+				mw.Write(hasSpecialChars);
+			}
+		}
+	}
+
+	sealed class GuidHeap : SimpleHeap
+	{
+		private List<Guid> list = new List<Guid>();
+
+		internal GuidHeap()
+		{
+		}
+
+		internal int Add(Guid guid)
+		{
+			Debug.Assert(!frozen);
+			list.Add(guid);
+			return list.Count;
+		}
+
+		protected override int GetLength()
+		{
+			return list.Count * 16;
+		}
+
+		protected override void WriteImpl(MetadataWriter mw)
+		{
+			foreach (Guid guid in list)
+			{
+				mw.Write(guid.ToByteArray());
+			}
+		}
+	}
+
+	sealed class BlobHeap : SimpleHeap
+	{
+		private Key[] map = new Key[8179];
+		private readonly ByteBuffer buf = new ByteBuffer(32);
+
+		private struct Key
+		{
+			internal Key[] next;
+			internal int len;
+			internal int hash;
+			internal int offset;
+		}
+
+		internal BlobHeap()
+		{
+			buf.Write((byte)0);
+		}
+
+		internal int Add(ByteBuffer bb)
+		{
+			Debug.Assert(!frozen);
+			if (bb.Length == 0)
+			{
+				return 0;
+			}
+			int lenlen = MetadataWriter.GetCompressedIntLength(bb.Length);
+			int hash = bb.Hash();
+			int index = (hash & 0x7FFFFFFF) % map.Length;
+			Key[] keys = map;
+			int last = index;
+			while (keys[index].offset != 0)
+			{
+				if (keys[index].hash == hash
+					&& keys[index].len == bb.Length
+					&& buf.Match(keys[index].offset + lenlen, bb, 0, bb.Length))
+				{
+					return keys[index].offset;
+				}
+				if (index == last)
+				{
+					if (keys[index].next == null)
+					{
+						keys[index].next = new Key[4];
+						keys = keys[index].next;
+						index = 0;
+						break;
+					}
+					keys = keys[index].next;
+					index = -1;
+					last = keys.Length - 1;
+				}
+				index++;
+			}
+			int offset = buf.Position;
+			buf.WriteCompressedInt(bb.Length);
+			buf.Write(bb);
+			keys[index].len = bb.Length;
+			keys[index].hash = hash;
+			keys[index].offset = offset;
+			return offset;
+		}
+
+		protected override int GetLength()
+		{
+			return buf.Position;
+		}
+
+		protected override void WriteImpl(MetadataWriter mw)
+		{
+			mw.Write(buf);
+		}
+
+		internal bool IsEmpty
+		{
+			get { return buf.Position == 1; }
+		}
+
+		internal IKVM.Reflection.Reader.ByteReader GetBlob(int blobIndex)
+		{
+			return buf.GetBlob(blobIndex);
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Writer/MetadataWriter.cs b/mcs/class/IKVM.Reflection/Writer/MetadataWriter.cs
new file mode 100644
index 0000000..1f17b38
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Writer/MetadataWriter.cs
@@ -0,0 +1,565 @@
+/*
+  Copyright (C) 2008 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.IO;
+using System.Collections.Generic;
+using System.Text;
+using IKVM.Reflection.Emit;
+using IKVM.Reflection.Metadata;
+
+namespace IKVM.Reflection.Writer
+{
+	sealed class MetadataWriter : MetadataRW
+	{
+		private readonly ModuleBuilder moduleBuilder;
+		private readonly Stream stream;
+		private readonly byte[] buffer = new byte[8];
+
+		internal MetadataWriter(ModuleBuilder module, Stream stream)
+			: base(module, module.Strings.IsBig, module.Guids.IsBig, module.Blobs.IsBig)
+		{
+			this.moduleBuilder = module;
+			this.stream = stream;
+		}
+
+		internal ModuleBuilder ModuleBuilder
+		{
+			get { return moduleBuilder; }
+		}
+
+		internal int Position
+		{
+			get { return (int)stream.Position; }
+		}
+
+		internal void Write(ByteBuffer bb)
+		{
+			bb.WriteTo(stream);
+		}
+
+		internal void Write(byte[] value)
+		{
+			stream.Write(value, 0, value.Length);
+		}
+
+		internal void Write(byte value)
+		{
+			stream.WriteByte(value);
+		}
+
+		internal void Write(ushort value)
+		{
+			Write((short)value);
+		}
+
+		internal void Write(short value)
+		{
+			buffer[0] = (byte)value;
+			buffer[1] = (byte)(value >> 8);
+			stream.Write(buffer, 0, 2);
+		}
+
+		internal void Write(uint value)
+		{
+			Write((int)value);
+		}
+
+		internal void Write(int value)
+		{
+			buffer[0] = (byte)value;
+			buffer[1] = (byte)(value >> 8);
+			buffer[2] = (byte)(value >> 16);
+			buffer[3] = (byte)(value >> 24);
+			stream.Write(buffer, 0, 4);
+		}
+
+		internal void Write(ulong value)
+		{
+			Write((long)value);
+		}
+
+		internal void Write(long value)
+		{
+			buffer[0] = (byte)value;
+			buffer[1] = (byte)(value >> 8);
+			buffer[2] = (byte)(value >> 16);
+			buffer[3] = (byte)(value >> 24);
+			buffer[4] = (byte)(value >> 32);
+			buffer[5] = (byte)(value >> 40);
+			buffer[6] = (byte)(value >> 48);
+			buffer[7] = (byte)(value >> 56);
+			stream.Write(buffer, 0, 8);
+		}
+
+		internal void WriteCompressedInt(int value)
+		{
+			if (value <= 0x7F)
+			{
+				Write((byte)value);
+			}
+			else if (value <= 0x3FFF)
+			{
+				Write((byte)(0x80 | (value >> 8)));
+				Write((byte)value);
+			}
+			else
+			{
+				Write((byte)(0xC0 | (value >> 24)));
+				Write((byte)(value >> 16));
+				Write((byte)(value >> 8));
+				Write((byte)value);
+			}
+		}
+
+		internal static int GetCompressedIntLength(int value)
+		{
+			if (value <= 0x7F)
+			{
+				return 1;
+			}
+			else if (value <= 0x3FFF)
+			{
+				return 2;
+			}
+			else
+			{
+				return 4;
+			}
+		}
+
+		internal void WriteStringIndex(int index)
+		{
+			if (bigStrings)
+			{
+				Write(index);
+			}
+			else
+			{
+				Write((short)index);
+			}
+		}
+
+		internal void WriteGuidIndex(int index)
+		{
+			if (bigGuids)
+			{
+				Write(index);
+			}
+			else
+			{
+				Write((short)index);
+			}
+		}
+
+		internal void WriteBlobIndex(int index)
+		{
+			if (bigBlobs)
+			{
+				Write(index);
+			}
+			else
+			{
+				Write((short)index);
+			}
+		}
+
+		internal void WriteTypeDefOrRef(int token)
+		{
+			switch (token >> 24)
+			{
+				case 0:
+					break;
+				case TypeDefTable.Index:
+					token = (token & 0xFFFFFF) << 2 | 0;
+					break;
+				case TypeRefTable.Index:
+					token = (token & 0xFFFFFF) << 2 | 1;
+					break;
+				case TypeSpecTable.Index:
+					token = (token & 0xFFFFFF) << 2 | 2;
+					break;
+				default:
+					throw new InvalidOperationException();
+			}
+			if (bigTypeDefOrRef)
+			{
+				Write(token);
+			}
+			else
+			{
+				Write((short)token);
+			}
+		}
+
+		internal void WriteEncodedTypeDefOrRef(int encodedToken)
+		{
+			if (bigTypeDefOrRef)
+			{
+				Write(encodedToken);
+			}
+			else
+			{
+				Write((short)encodedToken);
+			}
+		}
+
+		internal void WriteHasCustomAttribute(int encodedToken)
+		{
+			// NOTE because we've already had to do the encoding (to be able to sort the table)
+			// here we simple write the value
+			if (bigHasCustomAttribute)
+			{
+				Write(encodedToken);
+			}
+			else
+			{
+				Write((short)encodedToken);
+			}
+		}
+
+		internal void WriteCustomAttributeType(int token)
+		{
+			switch (token >> 24)
+			{
+				case MethodDefTable.Index:
+					token = (token & 0xFFFFFF) << 3 | 2;
+					break;
+				case MemberRefTable.Index:
+					token = (token & 0xFFFFFF) << 3 | 3;
+					break;
+				default:
+					throw new InvalidOperationException();
+			}
+			if (bigCustomAttributeType)
+			{
+				Write(token);
+			}
+			else
+			{
+				Write((short)token);
+			}
+		}
+
+		internal void WriteField(int index)
+		{
+			if (bigField)
+			{
+				Write(index & 0xFFFFFF);
+			}
+			else
+			{
+				Write((short)index);
+			}
+		}
+
+		internal void WriteMethodDef(int index)
+		{
+			if (bigMethodDef)
+			{
+				Write(index & 0xFFFFFF);
+			}
+			else
+			{
+				Write((short)index);
+			}
+		}
+
+		internal void WriteParam(int index)
+		{
+			if (bigParam)
+			{
+				Write(index & 0xFFFFFF);
+			}
+			else
+			{
+				Write((short)index);
+			}
+		}
+
+		internal void WriteTypeDef(int index)
+		{
+			if (bigTypeDef)
+			{
+				Write(index & 0xFFFFFF);
+			}
+			else
+			{
+				Write((short)index);
+			}
+		}
+
+		internal void WriteEvent(int index)
+		{
+			if (bigEvent)
+			{
+				Write(index & 0xFFFFFF);
+			}
+			else
+			{
+				Write((short)index);
+			}
+		}
+
+		internal void WriteProperty(int index)
+		{
+			if (bigProperty)
+			{
+				Write(index & 0xFFFFFF);
+			}
+			else
+			{
+				Write((short)index);
+			}
+		}
+
+		internal void WriteGenericParam(int index)
+		{
+			if (bigGenericParam)
+			{
+				Write(index & 0xFFFFFF);
+			}
+			else
+			{
+				Write((short)index);
+			}
+		}
+
+		internal void WriteModuleRef(int index)
+		{
+			if (bigModuleRef)
+			{
+				Write(index & 0xFFFFFF);
+			}
+			else
+			{
+				Write((short)index);
+			}
+		}
+
+		internal void WriteResolutionScope(int token)
+		{
+			switch (token >> 24)
+			{
+				case ModuleTable.Index:
+					token = (token & 0xFFFFFF) << 2 | 0;
+					break;
+				case ModuleRefTable.Index:
+					token = (token & 0xFFFFFF) << 2 | 1;
+					break;
+				case AssemblyRefTable.Index:
+					token = (token & 0xFFFFFF) << 2 | 2;
+					break;
+				case TypeRefTable.Index:
+					token = (token & 0xFFFFFF) << 2 | 3;
+					break;
+				default:
+					throw new InvalidOperationException();
+			}
+			if (bigResolutionScope)
+			{
+				Write(token);
+			}
+			else
+			{
+				Write((short)token);
+			}
+		}
+
+		internal void WriteMemberRefParent(int token)
+		{
+			switch (token >> 24)
+			{
+				case TypeDefTable.Index:
+					token = (token & 0xFFFFFF) << 3 | 0;
+					break;
+				case TypeRefTable.Index:
+					token = (token & 0xFFFFFF) << 3 | 1;
+					break;
+				case ModuleRefTable.Index:
+					token = (token & 0xFFFFFF) << 3 | 2;
+					break;
+				case MethodDefTable.Index:
+					token = (token & 0xFFFFFF) << 3 | 3;
+					break;
+				case TypeSpecTable.Index:
+					token = (token & 0xFFFFFF) << 3 | 4;
+					break;
+				default:
+					throw new InvalidOperationException();
+			}
+			if (bigMemberRefParent)
+			{
+				Write(token);
+			}
+			else
+			{
+				Write((short)token);
+			}
+		}
+
+		internal void WriteMethodDefOrRef(int token)
+		{
+			switch (token >> 24)
+			{
+				case MethodDefTable.Index:
+					token = (token & 0xFFFFFF) << 1 | 0;
+					break;
+				case MemberRefTable.Index:
+					token = (token & 0xFFFFFF) << 1 | 1;
+					break;
+				default:
+					throw new InvalidOperationException();
+			}
+			if (bigMethodDefOrRef)
+			{
+				Write(token);
+			}
+			else
+			{
+				Write((short)token);
+			}
+		}
+
+		internal void WriteHasConstant(int encodedToken)
+		{
+			// NOTE because we've already had to do the encoding (to be able to sort the table)
+			// here we simple write the value
+			if (bigHasConstant)
+			{
+				Write(encodedToken);
+			}
+			else
+			{
+				Write((short)encodedToken);
+			}
+		}
+
+		internal void WriteHasSemantics(int encodedToken)
+		{
+			// NOTE because we've already had to do the encoding (to be able to sort the table)
+			// here we simple write the value
+			if (bigHasSemantics)
+			{
+				Write(encodedToken);
+			}
+			else
+			{
+				Write((short)encodedToken);
+			}
+		}
+
+		internal void WriteImplementation(int token)
+		{
+			switch (token >> 24)
+			{
+				case 0:
+					break;
+				case FileTable.Index:
+					token = (token & 0xFFFFFF) << 2 | 0;
+					break;
+				case AssemblyRefTable.Index:
+					token = (token & 0xFFFFFF) << 2 | 1;
+					break;
+				case ExportedTypeTable.Index:
+					token = (token & 0xFFFFFF) << 2 | 2;
+					break;
+				default:
+					throw new InvalidOperationException();
+			}
+			if (bigImplementation)
+			{
+				Write(token);
+			}
+			else
+			{
+				Write((short)token);
+			}
+		}
+
+		internal void WriteTypeOrMethodDef(int encodedToken)
+		{
+			// NOTE because we've already had to do the encoding (to be able to sort the table)
+			// here we simple write the value
+			if (bigTypeOrMethodDef)
+			{
+				Write(encodedToken);
+			}
+			else
+			{
+				Write((short)encodedToken);
+			}
+		}
+
+		internal void WriteHasDeclSecurity(int encodedToken)
+		{
+			// NOTE because we've already had to do the encoding (to be able to sort the table)
+			// here we simple write the value
+			if (bigHasDeclSecurity)
+			{
+				Write(encodedToken);
+			}
+			else
+			{
+				Write((short)encodedToken);
+			}
+		}
+
+		internal void WriteMemberForwarded(int token)
+		{
+			switch (token >> 24)
+			{
+				case FieldTable.Index:
+					token = (token & 0xFFFFFF) << 1 | 0;
+				    break;
+				case MethodDefTable.Index:
+					token = (token & 0xFFFFFF) << 1 | 1;
+					break;
+				default:
+					throw new InvalidOperationException();
+			}
+			if (bigMemberForwarded)
+			{
+				Write(token);
+			}
+			else
+			{
+				Write((short)token);
+			}
+		}
+
+		internal void WriteHasFieldMarshal(int encodedToken)
+		{
+			// NOTE because we've already had to do the encoding (to be able to sort the table)
+			// here we simple write the value
+			if (bigHasFieldMarshal)
+			{
+				Write(encodedToken & 0xFFFFFF);
+			}
+			else
+			{
+				Write((short)encodedToken);
+			}
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Writer/ModuleWriter.cs b/mcs/class/IKVM.Reflection/Writer/ModuleWriter.cs
new file mode 100644
index 0000000..c4208f8
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Writer/ModuleWriter.cs
@@ -0,0 +1,382 @@
+/*
+  Copyright (C) 2008 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.IO;
+using System.Security.Cryptography;
+using IKVM.Reflection.Emit;
+using IKVM.Reflection.Impl;
+using IKVM.Reflection.Metadata;
+
+namespace IKVM.Reflection.Writer
+{
+	static class ModuleWriter
+	{
+		internal static void WriteModule(StrongNameKeyPair keyPair, byte[] publicKey, ModuleBuilder moduleBuilder,
+			PEFileKinds fileKind, PortableExecutableKinds portableExecutableKind, ImageFileMachine imageFileMachine,
+			ResourceSection resources, int entryPointToken)
+		{
+			moduleBuilder.FixupMethodBodyTokens();
+
+			moduleBuilder.ModuleTable.Add(0, moduleBuilder.Strings.Add(moduleBuilder.moduleName), moduleBuilder.Guids.Add(moduleBuilder.ModuleVersionId), 0, 0);
+
+			if (moduleBuilder.UserStrings.IsEmpty)
+			{
+				// for compat with Ref.Emit, if there aren't any user strings, we add one
+				moduleBuilder.UserStrings.Add(" ");
+			}
+
+			if (resources != null)
+			{
+				resources.Finish();
+			}
+
+			using (FileStream fs = new FileStream(moduleBuilder.FullyQualifiedName, FileMode.Create))
+			{
+				PEWriter writer = new PEWriter(fs);
+				switch (imageFileMachine)
+				{
+					case ImageFileMachine.I386:
+						writer.Headers.FileHeader.Machine = IMAGE_FILE_HEADER.IMAGE_FILE_MACHINE_I386;
+						writer.Headers.FileHeader.Characteristics |= IMAGE_FILE_HEADER.IMAGE_FILE_32BIT_MACHINE;
+						break;
+					case ImageFileMachine.AMD64:
+						writer.Headers.FileHeader.Machine = IMAGE_FILE_HEADER.IMAGE_FILE_MACHINE_AMD64;
+						writer.Headers.FileHeader.Characteristics |= IMAGE_FILE_HEADER.IMAGE_FILE_LARGE_ADDRESS_AWARE;
+						writer.Headers.FileHeader.SizeOfOptionalHeader = 0xF0;
+						writer.Headers.OptionalHeader.Magic = IMAGE_OPTIONAL_HEADER.IMAGE_NT_OPTIONAL_HDR64_MAGIC;
+						writer.Headers.OptionalHeader.SizeOfStackReserve = 0x400000;
+						writer.Headers.OptionalHeader.SizeOfStackCommit = 0x4000;
+						writer.Headers.OptionalHeader.SizeOfHeapCommit = 0x2000;
+						break;
+					case ImageFileMachine.IA64:
+						writer.Headers.FileHeader.Machine = IMAGE_FILE_HEADER.IMAGE_FILE_MACHINE_IA64;
+						writer.Headers.FileHeader.Characteristics |= IMAGE_FILE_HEADER.IMAGE_FILE_LARGE_ADDRESS_AWARE;
+						writer.Headers.FileHeader.SizeOfOptionalHeader = 0xF0;
+						writer.Headers.OptionalHeader.Magic = IMAGE_OPTIONAL_HEADER.IMAGE_NT_OPTIONAL_HDR64_MAGIC;
+						writer.Headers.OptionalHeader.SizeOfStackReserve = 0x400000;
+						writer.Headers.OptionalHeader.SizeOfStackCommit = 0x4000;
+						writer.Headers.OptionalHeader.SizeOfHeapCommit = 0x2000;
+						break;
+					default:
+						throw new ArgumentOutOfRangeException("imageFileMachine");
+				}
+				if (fileKind == PEFileKinds.Dll)
+				{
+					writer.Headers.FileHeader.Characteristics |= IMAGE_FILE_HEADER.IMAGE_FILE_DLL;
+				}
+
+				switch (fileKind)
+				{
+					case PEFileKinds.WindowApplication:
+						writer.Headers.OptionalHeader.Subsystem = IMAGE_OPTIONAL_HEADER.IMAGE_SUBSYSTEM_WINDOWS_GUI;
+						break;
+					default:
+						writer.Headers.OptionalHeader.Subsystem = IMAGE_OPTIONAL_HEADER.IMAGE_SUBSYSTEM_WINDOWS_CUI;
+						break;
+				}
+				writer.Headers.OptionalHeader.DllCharacteristics =
+					IMAGE_OPTIONAL_HEADER.IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE |
+					IMAGE_OPTIONAL_HEADER.IMAGE_DLLCHARACTERISTICS_NO_SEH |
+					IMAGE_OPTIONAL_HEADER.IMAGE_DLLCHARACTERISTICS_NX_COMPAT |
+					IMAGE_OPTIONAL_HEADER.IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE;
+
+				CliHeader cliHeader = new CliHeader();
+				cliHeader.Cb = 0x48;
+				cliHeader.MajorRuntimeVersion = 2;
+				cliHeader.MinorRuntimeVersion = moduleBuilder.MDStreamVersion < 0x20000 ? (ushort)0 : (ushort)5;
+				if ((portableExecutableKind & PortableExecutableKinds.ILOnly) != 0)
+				{
+					cliHeader.Flags |= CliHeader.COMIMAGE_FLAGS_ILONLY;
+				}
+				if ((portableExecutableKind & PortableExecutableKinds.Required32Bit) != 0)
+				{
+					cliHeader.Flags |= CliHeader.COMIMAGE_FLAGS_32BITREQUIRED;
+				}
+				if (keyPair != null)
+				{
+					cliHeader.Flags |= CliHeader.COMIMAGE_FLAGS_STRONGNAMESIGNED;
+				}
+				if (moduleBuilder.IsPseudoToken(entryPointToken))
+				{
+					entryPointToken = moduleBuilder.ResolvePseudoToken(entryPointToken);
+				}
+				cliHeader.EntryPointToken = (uint)entryPointToken;
+
+				moduleBuilder.Strings.Freeze();
+				moduleBuilder.UserStrings.Freeze();
+				moduleBuilder.Guids.Freeze();
+				moduleBuilder.Blobs.Freeze();
+				MetadataWriter mw = new MetadataWriter(moduleBuilder, fs);
+				moduleBuilder.Tables.Freeze(mw);
+				TextSection code = new TextSection(writer, cliHeader, moduleBuilder, ComputeStrongNameSignatureLength(publicKey));
+
+				// Import Directory
+				writer.Headers.OptionalHeader.DataDirectory[1].VirtualAddress = code.ImportDirectoryRVA;
+				writer.Headers.OptionalHeader.DataDirectory[1].Size = code.ImportDirectoryLength;
+
+				// Import Address Table Directory
+				writer.Headers.OptionalHeader.DataDirectory[12].VirtualAddress = code.ImportAddressTableRVA;
+				writer.Headers.OptionalHeader.DataDirectory[12].Size = code.ImportAddressTableLength;
+
+				// COM Descriptor Directory
+				writer.Headers.OptionalHeader.DataDirectory[14].VirtualAddress = code.ComDescriptorRVA;
+				writer.Headers.OptionalHeader.DataDirectory[14].Size = code.ComDescriptorLength;
+
+				// Debug Directory
+				if (code.DebugDirectoryLength != 0)
+				{
+					writer.Headers.OptionalHeader.DataDirectory[6].VirtualAddress = code.DebugDirectoryRVA;
+					writer.Headers.OptionalHeader.DataDirectory[6].Size = code.DebugDirectoryLength;
+				}
+
+				writer.Headers.FileHeader.NumberOfSections = 2;
+
+				if (moduleBuilder.initializedData.Length != 0)
+				{
+					writer.Headers.FileHeader.NumberOfSections++;
+				}
+
+				if (resources != null && resources.Length != 0)
+				{
+					writer.Headers.FileHeader.NumberOfSections++;
+				}
+
+				SectionHeader text = new SectionHeader();
+				text.Name = ".text";
+				text.VirtualAddress = code.BaseRVA;
+				text.VirtualSize = (uint)code.Length;
+				text.PointerToRawData = code.PointerToRawData;
+				text.SizeOfRawData = writer.ToFileAlignment((uint)code.Length);
+				text.Characteristics = SectionHeader.IMAGE_SCN_CNT_CODE | SectionHeader.IMAGE_SCN_MEM_EXECUTE | SectionHeader.IMAGE_SCN_MEM_READ;
+
+				SectionHeader sdata = new SectionHeader();
+				sdata.Name = ".sdata";
+				sdata.VirtualAddress = text.VirtualAddress + writer.ToSectionAlignment(text.VirtualSize);
+				sdata.VirtualSize = (uint)moduleBuilder.initializedData.Length;
+				sdata.PointerToRawData = text.PointerToRawData + text.SizeOfRawData;
+				sdata.SizeOfRawData = writer.ToFileAlignment((uint)moduleBuilder.initializedData.Length);
+				sdata.Characteristics = SectionHeader.IMAGE_SCN_CNT_INITIALIZED_DATA | SectionHeader.IMAGE_SCN_MEM_READ | SectionHeader.IMAGE_SCN_MEM_WRITE;
+
+				SectionHeader rsrc = new SectionHeader();
+				rsrc.Name = ".rsrc";
+				rsrc.VirtualAddress = sdata.VirtualAddress + writer.ToSectionAlignment(sdata.VirtualSize);
+				rsrc.PointerToRawData = sdata.PointerToRawData + sdata.SizeOfRawData;
+				rsrc.VirtualSize = resources == null ? 0 : (uint)resources.Length;
+				rsrc.SizeOfRawData = writer.ToFileAlignment(rsrc.VirtualSize);
+				rsrc.Characteristics = SectionHeader.IMAGE_SCN_MEM_READ | SectionHeader.IMAGE_SCN_CNT_INITIALIZED_DATA;
+
+				if (rsrc.SizeOfRawData != 0)
+				{
+					// Resource Directory
+					writer.Headers.OptionalHeader.DataDirectory[2].VirtualAddress = rsrc.VirtualAddress;
+					writer.Headers.OptionalHeader.DataDirectory[2].Size = rsrc.VirtualSize;
+				}
+
+				SectionHeader reloc = new SectionHeader();
+				reloc.Name = ".reloc";
+				reloc.VirtualAddress = rsrc.VirtualAddress + writer.ToSectionAlignment(rsrc.VirtualSize);
+				reloc.VirtualSize = 12;
+				reloc.PointerToRawData = rsrc.PointerToRawData + rsrc.SizeOfRawData;
+				reloc.SizeOfRawData = writer.ToFileAlignment(reloc.VirtualSize);
+				reloc.Characteristics = SectionHeader.IMAGE_SCN_MEM_READ | SectionHeader.IMAGE_SCN_CNT_INITIALIZED_DATA | SectionHeader.IMAGE_SCN_MEM_DISCARDABLE;
+
+				// Base Relocation Directory
+				writer.Headers.OptionalHeader.DataDirectory[5].VirtualAddress = reloc.VirtualAddress;
+				writer.Headers.OptionalHeader.DataDirectory[5].Size = reloc.VirtualSize;
+
+				writer.Headers.OptionalHeader.SizeOfCode = text.SizeOfRawData;
+				writer.Headers.OptionalHeader.SizeOfInitializedData = sdata.SizeOfRawData + rsrc.SizeOfRawData + reloc.SizeOfRawData;
+				writer.Headers.OptionalHeader.SizeOfUninitializedData = 0;
+				writer.Headers.OptionalHeader.SizeOfImage = reloc.VirtualAddress + writer.ToSectionAlignment(reloc.VirtualSize);
+				writer.Headers.OptionalHeader.SizeOfHeaders = text.PointerToRawData;
+				writer.Headers.OptionalHeader.BaseOfCode = code.BaseRVA;
+				writer.Headers.OptionalHeader.BaseOfData = sdata.VirtualAddress;
+				writer.Headers.OptionalHeader.ImageBase = (ulong)moduleBuilder.__ImageBase;
+
+				if (imageFileMachine == ImageFileMachine.IA64)
+				{
+					// apparently for IA64 AddressOfEntryPoint points to the address of the entry point
+					// (i.e. there is an additional layer of indirection), so we add the offset to the pointer
+					writer.Headers.OptionalHeader.AddressOfEntryPoint = code.StartupStubRVA + 0x20;
+				}
+				else
+				{
+					writer.Headers.OptionalHeader.AddressOfEntryPoint = code.StartupStubRVA;
+				}
+
+				writer.WritePEHeaders();
+				writer.WriteSectionHeader(text);
+				if (sdata.SizeOfRawData != 0)
+				{
+					writer.WriteSectionHeader(sdata);
+				}
+				if (rsrc.SizeOfRawData != 0)
+				{
+					writer.WriteSectionHeader(rsrc);
+				}
+				writer.WriteSectionHeader(reloc);
+
+				fs.Seek(text.PointerToRawData, SeekOrigin.Begin);
+				code.Write(mw, (int)sdata.VirtualAddress);
+
+				fs.Seek(sdata.PointerToRawData, SeekOrigin.Begin);
+				mw.Write(moduleBuilder.initializedData);
+
+				if (rsrc.SizeOfRawData != 0)
+				{
+					fs.Seek(rsrc.PointerToRawData, SeekOrigin.Begin);
+					resources.Write(mw, rsrc.VirtualAddress);
+				}
+
+				fs.Seek(reloc.PointerToRawData, SeekOrigin.Begin);
+				// .reloc section
+				uint relocAddress = code.StartupStubRVA;
+				switch (imageFileMachine)
+				{
+					case ImageFileMachine.I386:
+					case ImageFileMachine.AMD64:
+						relocAddress += 2;
+						break;
+					case ImageFileMachine.IA64:
+						relocAddress += 0x20;
+						break;
+				}
+				uint pageRVA = relocAddress & ~0xFFFU;
+				mw.Write(pageRVA);	// PageRVA
+				mw.Write(0x000C);	// Block Size
+				if (imageFileMachine == ImageFileMachine.I386)
+				{
+					mw.Write(0x3000 + relocAddress - pageRVA);				// Type / Offset
+				}
+				else if (imageFileMachine == ImageFileMachine.AMD64)
+				{
+					mw.Write(0xA000 + relocAddress - pageRVA);				// Type / Offset
+				}
+				else if (imageFileMachine == ImageFileMachine.IA64)
+				{
+					// on IA64 the StartupStubRVA is 16 byte aligned, so these two addresses won't cross a page boundary
+					mw.Write((short)(0xA000 + relocAddress - pageRVA));		// Type / Offset
+					mw.Write((short)(0xA000 + relocAddress - pageRVA + 8));	// Type / Offset
+				}
+
+				// file alignment
+				mw.Write(new byte[writer.Headers.OptionalHeader.FileAlignment - reloc.VirtualSize]);
+
+				// do the strong naming
+				if (keyPair != null)
+				{
+					StrongName(fs, keyPair, writer.HeaderSize, text.PointerToRawData, code.StrongNameSignatureRVA - text.VirtualAddress + text.PointerToRawData, code.StrongNameSignatureLength);
+				}
+			}
+
+			if (moduleBuilder.symbolWriter != null)
+			{
+				moduleBuilder.WriteSymbolTokenMap();
+				moduleBuilder.symbolWriter.Close();
+			}
+		}
+
+		private static int ComputeStrongNameSignatureLength(byte[] publicKey)
+		{
+			if (publicKey == null)
+			{
+				return 0;
+			}
+			else if (publicKey.Length == 16)
+			{
+				// it must be the ECMA pseudo public key, we don't know the key size of the real key, but currently both Mono and Microsoft use a 1024 bit key size
+				return 128;
+			}
+			else
+			{
+				// for the supported strong naming algorithms, the signature size is the same as the key size
+				// (we have to subtract 32 for the header)
+				return publicKey.Length - 32;
+			}
+		}
+
+		private static void StrongName(FileStream fs, StrongNameKeyPair keyPair, uint headerLength, uint textSectionFileOffset, uint strongNameSignatureFileOffset, uint strongNameSignatureLength)
+		{
+			SHA1Managed hash = new SHA1Managed();
+			using (CryptoStream cs = new CryptoStream(Stream.Null, hash, CryptoStreamMode.Write))
+			{
+				fs.Seek(0, SeekOrigin.Begin);
+				byte[] buf = new byte[8192];
+				HashChunk(fs, cs, buf, (int)headerLength);
+				fs.Seek(textSectionFileOffset, SeekOrigin.Begin);
+				HashChunk(fs, cs, buf, (int)(strongNameSignatureFileOffset - textSectionFileOffset));
+				fs.Seek(strongNameSignatureLength, SeekOrigin.Current);
+				HashChunk(fs, cs, buf, (int)(fs.Length - (strongNameSignatureFileOffset + strongNameSignatureLength)));
+			}
+			using (RSA rsa = CryptoHack.CreateRSA(keyPair))
+			{
+				RSAPKCS1SignatureFormatter sign = new RSAPKCS1SignatureFormatter(rsa);
+				byte[] signature = sign.CreateSignature(hash);
+				Array.Reverse(signature);
+				if (signature.Length != strongNameSignatureLength)
+				{
+					throw new InvalidOperationException("Signature length mismatch");
+				}
+				fs.Seek(strongNameSignatureFileOffset, SeekOrigin.Begin);
+				fs.Write(signature, 0, signature.Length);
+			}
+
+			// compute the PE checksum
+			fs.Seek(0, SeekOrigin.Begin);
+			int count = (int)fs.Length / 4;
+			BinaryReader br = new BinaryReader(fs);
+			long sum = 0;
+			for (int i = 0; i < count; i++)
+			{
+				sum += br.ReadUInt32();
+				int carry = (int)(sum >> 32);
+				sum &= 0xFFFFFFFFU;
+				sum += carry;
+			}
+			while ((sum >> 16) != 0)
+			{
+				sum = (sum & 0xFFFF) + (sum >> 16);
+			}
+			sum += fs.Length;
+
+			// write the PE checksum, note that it is always at offset 0xD8 in the file
+			ByteBuffer bb = new ByteBuffer(4);
+			bb.Write((int)sum);
+			fs.Seek(0xD8, SeekOrigin.Begin);
+			bb.WriteTo(fs);
+		}
+
+		internal static void HashChunk(FileStream fs, CryptoStream cs, byte[] buf, int length)
+		{
+			while (length > 0)
+			{
+				int read = fs.Read(buf, 0, Math.Min(buf.Length, length));
+				cs.Write(buf, 0, read);
+				length -= read;
+			}
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Writer/PEWriter.cs b/mcs/class/IKVM.Reflection/Writer/PEWriter.cs
new file mode 100644
index 0000000..3ddd20b
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Writer/PEWriter.cs
@@ -0,0 +1,303 @@
+/*
+  Copyright (C) 2008 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.IO;
+using BYTE = System.Byte;
+using WORD = System.UInt16;
+using DWORD = System.UInt32;
+using ULONGLONG = System.UInt64;
+
+namespace IKVM.Reflection.Writer
+{
+	sealed class PEWriter
+	{
+		private readonly BinaryWriter bw;
+		private readonly IMAGE_NT_HEADERS hdr = new IMAGE_NT_HEADERS();
+
+		internal PEWriter(Stream stream)
+		{
+			bw = new BinaryWriter(stream);
+			WriteMSDOSHeader();
+		}
+
+		public IMAGE_NT_HEADERS Headers
+		{
+			get { return hdr; }
+		}
+
+		public uint HeaderSize
+		{
+			get
+			{
+				return (uint)
+					((8 * 16) +	// MSDOS header
+					4 +				// signature
+					20 +			// IMAGE_FILE_HEADER
+					hdr.FileHeader.SizeOfOptionalHeader +
+					hdr.FileHeader.NumberOfSections * 40);
+			}
+		}
+
+		private void WriteMSDOSHeader()
+		{
+			bw.Write(new byte[] {
+				0x4D, 0x5A, 0x90, 0x00, 0x03, 0x00, 0x00, 0x00,
+				0x04, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+				0xB8, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00, 0x00,
+				0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+				0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+				0x0E, 0x1F, 0xBA, 0x0E, 0x00, 0xB4, 0x09, 0xCD,
+				0x21, 0xB8, 0x01, 0x4C, 0xCD, 0x21, 0x54, 0x68,
+				0x69, 0x73, 0x20, 0x70, 0x72, 0x6F, 0x67, 0x72,
+				0x61, 0x6D, 0x20, 0x63, 0x61, 0x6E, 0x6E, 0x6F,
+				0x74, 0x20, 0x62, 0x65, 0x20, 0x72, 0x75, 0x6E,
+				0x20, 0x69, 0x6E, 0x20, 0x44, 0x4F, 0x53, 0x20,
+				0x6D, 0x6F, 0x64, 0x65, 0x2E, 0x0D, 0x0D, 0x0A,
+				0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+			});
+		}
+
+		internal void WritePEHeaders()
+		{
+			bw.Write(hdr.Signature);
+
+			// IMAGE_FILE_HEADER
+			bw.Write(hdr.FileHeader.Machine);
+			bw.Write(hdr.FileHeader.NumberOfSections);
+			bw.Write(hdr.FileHeader.TimeDateStamp);
+			bw.Write(hdr.FileHeader.PointerToSymbolTable);
+			bw.Write(hdr.FileHeader.NumberOfSymbols);
+			bw.Write(hdr.FileHeader.SizeOfOptionalHeader);
+			bw.Write(hdr.FileHeader.Characteristics);
+
+			// IMAGE_OPTIONAL_HEADER
+			hdr.OptionalHeader.Write(bw);
+		}
+
+		internal void WriteSectionHeader(SectionHeader sectionHeader)
+		{
+			byte[] name = new byte[8];
+			System.Text.Encoding.UTF8.GetBytes(sectionHeader.Name, 0, sectionHeader.Name.Length, name, 0);
+			bw.Write(name);
+			bw.Write(sectionHeader.VirtualSize);
+			bw.Write(sectionHeader.VirtualAddress);
+			bw.Write(sectionHeader.SizeOfRawData);
+			bw.Write(sectionHeader.PointerToRawData);
+			bw.Write(sectionHeader.PointerToRelocations);
+			bw.Write(sectionHeader.PointerToLinenumbers);
+			bw.Write(sectionHeader.NumberOfRelocations);
+			bw.Write(sectionHeader.NumberOfLinenumbers);
+			bw.Write(sectionHeader.Characteristics);
+		}
+
+		internal uint ToFileAlignment(uint p)
+		{
+			return (p + (Headers.OptionalHeader.FileAlignment - 1)) & ~(Headers.OptionalHeader.FileAlignment - 1);
+		}
+
+		internal uint ToSectionAlignment(uint p)
+		{
+			return (p + (Headers.OptionalHeader.SectionAlignment - 1)) & ~(Headers.OptionalHeader.SectionAlignment - 1);
+		}
+	}
+
+	sealed class IMAGE_NT_HEADERS
+	{
+		public DWORD Signature = 0x00004550;	// "PE\0\0"
+		public IMAGE_FILE_HEADER FileHeader = new IMAGE_FILE_HEADER();
+		public IMAGE_OPTIONAL_HEADER OptionalHeader = new IMAGE_OPTIONAL_HEADER();
+	}
+
+	sealed class IMAGE_FILE_HEADER
+	{
+		public const WORD IMAGE_FILE_MACHINE_I386 = 0x014c;
+		public const WORD IMAGE_FILE_MACHINE_IA64 = 0x0200;
+		public const WORD IMAGE_FILE_MACHINE_AMD64 = 0x8664;
+
+		public const WORD IMAGE_FILE_32BIT_MACHINE = 0x0100;
+		public const WORD IMAGE_FILE_EXECUTABLE_IMAGE = 0x0002;
+		public const WORD IMAGE_FILE_LARGE_ADDRESS_AWARE = 0x0020;
+		public const WORD IMAGE_FILE_DLL = 0x2000;
+
+		public WORD Machine;
+		public WORD NumberOfSections;
+		public DWORD TimeDateStamp = (uint)(DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalSeconds;
+		public DWORD PointerToSymbolTable = 0;
+		public DWORD NumberOfSymbols = 0;
+		public WORD SizeOfOptionalHeader = 0xE0;
+		public WORD Characteristics = IMAGE_FILE_EXECUTABLE_IMAGE;
+	}
+
+	sealed class IMAGE_OPTIONAL_HEADER
+	{
+		public const WORD IMAGE_NT_OPTIONAL_HDR32_MAGIC = 0x10b;
+		public const WORD IMAGE_NT_OPTIONAL_HDR64_MAGIC = 0x20b;
+
+		public const WORD IMAGE_SUBSYSTEM_WINDOWS_GUI = 2;
+		public const WORD IMAGE_SUBSYSTEM_WINDOWS_CUI = 3;
+
+		public const WORD IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE = 0x0040;
+		public const WORD IMAGE_DLLCHARACTERISTICS_NX_COMPAT = 0x0100;
+		public const WORD IMAGE_DLLCHARACTERISTICS_NO_SEH = 0x0400;
+		public const WORD IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE = 0x8000;
+
+		public WORD Magic = IMAGE_NT_OPTIONAL_HDR32_MAGIC;
+		public BYTE MajorLinkerVersion = 8;
+		public BYTE MinorLinkerVersion = 0;
+		public DWORD SizeOfCode;
+		public DWORD SizeOfInitializedData;
+		public DWORD SizeOfUninitializedData;
+		public DWORD AddressOfEntryPoint;
+		public DWORD BaseOfCode;
+		public DWORD BaseOfData;
+		public ULONGLONG ImageBase;
+		public DWORD SectionAlignment = 0x2000;
+		public DWORD FileAlignment = 0x200;
+		public WORD MajorOperatingSystemVersion = 4;
+		public WORD MinorOperatingSystemVersion = 0;
+		public WORD MajorImageVersion = 0;
+		public WORD MinorImageVersion = 0;
+		public WORD MajorSubsystemVersion = 4;
+		public WORD MinorSubsystemVersion = 0;
+		public DWORD Win32VersionValue = 0;
+		public DWORD SizeOfImage;
+		public DWORD SizeOfHeaders;
+		public DWORD CheckSum = 0;
+		public WORD Subsystem;
+		public WORD DllCharacteristics;
+		public ULONGLONG SizeOfStackReserve = 0x100000;
+		public ULONGLONG SizeOfStackCommit = 0x1000;
+		public ULONGLONG SizeOfHeapReserve = 0x100000;
+		public ULONGLONG SizeOfHeapCommit = 0x1000;
+		public DWORD LoaderFlags = 0;
+		public DWORD NumberOfRvaAndSizes = 16;
+		public IMAGE_DATA_DIRECTORY[] DataDirectory = new IMAGE_DATA_DIRECTORY[16];
+
+		internal void Write(BinaryWriter bw)
+		{
+			bw.Write(Magic);
+			bw.Write(MajorLinkerVersion);
+			bw.Write(MinorLinkerVersion);
+			bw.Write(SizeOfCode);
+			bw.Write(SizeOfInitializedData);
+			bw.Write(SizeOfUninitializedData);
+			bw.Write(AddressOfEntryPoint);
+			bw.Write(BaseOfCode);
+			if (Magic == IMAGE_NT_OPTIONAL_HDR32_MAGIC)
+			{
+				bw.Write(BaseOfData);
+				bw.Write((DWORD)ImageBase);
+			}
+			else
+			{
+				bw.Write(ImageBase);
+			}
+			bw.Write(SectionAlignment);
+			bw.Write(FileAlignment);
+			bw.Write(MajorOperatingSystemVersion);
+			bw.Write(MinorOperatingSystemVersion);
+			bw.Write(MajorImageVersion);
+			bw.Write(MinorImageVersion);
+			bw.Write(MajorSubsystemVersion);
+			bw.Write(MinorSubsystemVersion);
+			bw.Write(Win32VersionValue);
+			bw.Write(SizeOfImage);
+			bw.Write(SizeOfHeaders);
+			bw.Write(CheckSum);
+			bw.Write(Subsystem);
+			bw.Write(DllCharacteristics);
+			if (Magic == IMAGE_NT_OPTIONAL_HDR32_MAGIC)
+			{
+				bw.Write((DWORD)SizeOfStackReserve);
+			}
+			else
+			{
+				bw.Write(SizeOfStackReserve);
+			}
+			if (Magic == IMAGE_NT_OPTIONAL_HDR32_MAGIC)
+			{
+				bw.Write((DWORD)SizeOfStackCommit);
+			}
+			else
+			{
+				bw.Write(SizeOfStackCommit);
+			}
+			if (Magic == IMAGE_NT_OPTIONAL_HDR32_MAGIC)
+			{
+				bw.Write((DWORD)SizeOfHeapReserve);
+			}
+			else
+			{
+				bw.Write(SizeOfHeapReserve);
+			}
+			if (Magic == IMAGE_NT_OPTIONAL_HDR32_MAGIC)
+			{
+				bw.Write((DWORD)SizeOfHeapCommit);
+			}
+			else
+			{
+				bw.Write(SizeOfHeapCommit);
+			}
+			bw.Write(LoaderFlags);
+			bw.Write(NumberOfRvaAndSizes);
+			for (int i = 0; i < DataDirectory.Length; i++)
+			{
+				bw.Write(DataDirectory[i].VirtualAddress);
+				bw.Write(DataDirectory[i].Size);
+			}
+		}
+	}
+
+	struct IMAGE_DATA_DIRECTORY
+	{
+		public DWORD VirtualAddress;
+		public DWORD Size;
+	}
+
+	class SectionHeader
+	{
+		public const DWORD IMAGE_SCN_CNT_CODE = 0x00000020;
+		public const DWORD IMAGE_SCN_CNT_INITIALIZED_DATA = 0x00000040;
+		public const DWORD IMAGE_SCN_MEM_DISCARDABLE = 0x02000000;
+		public const DWORD IMAGE_SCN_MEM_EXECUTE = 0x20000000;
+		public const DWORD IMAGE_SCN_MEM_READ = 0x40000000;
+		public const DWORD IMAGE_SCN_MEM_WRITE = 0x80000000;
+
+		public string Name;		// 8 byte UTF8 encoded 0-padded
+		public DWORD VirtualSize;
+		public DWORD VirtualAddress;
+		public DWORD SizeOfRawData;
+		public DWORD PointerToRawData;
+#pragma warning disable 649 // the follow fields are never assigned to
+		public DWORD PointerToRelocations;
+		public DWORD PointerToLinenumbers;
+		public WORD NumberOfRelocations;
+		public WORD NumberOfLinenumbers;
+#pragma warning restore 649
+		public DWORD Characteristics;
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Writer/ResourceSection.cs b/mcs/class/IKVM.Reflection/Writer/ResourceSection.cs
new file mode 100644
index 0000000..81941e2
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Writer/ResourceSection.cs
@@ -0,0 +1,372 @@
+/*
+  Copyright (C) 2010 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Text;
+using IKVM.Reflection.Reader;
+
+namespace IKVM.Reflection.Writer
+{
+	sealed class ResourceSection
+	{
+		private const int RT_ICON = 3;
+		private const int RT_GROUP_ICON = 14;
+		private const int RT_VERSION = 16;
+		private ResourceDirectoryEntry root = new ResourceDirectoryEntry(new OrdinalOrName("root"));
+		private ByteBuffer bb;
+		private List<int> linkOffsets;
+
+		internal void AddVersionInfo(ByteBuffer versionInfo)
+		{
+			root[new OrdinalOrName(RT_VERSION)][new OrdinalOrName(1)][new OrdinalOrName(0)].Data = versionInfo;
+		}
+
+		internal void AddIcon(byte[] iconFile)
+		{
+			BinaryReader br = new BinaryReader(new MemoryStream(iconFile));
+			ushort idReserved = br.ReadUInt16();
+			ushort idType = br.ReadUInt16();
+			ushort idCount = br.ReadUInt16();
+			if (idReserved != 0 || idType != 1)
+			{
+				throw new ArgumentException("The supplied byte array is not a valid .ico file.");
+			}
+			ByteBuffer group = new ByteBuffer(6 + 14 * idCount);
+			group.Write(idReserved);
+			group.Write(idType);
+			group.Write(idCount);
+			for (int i = 0; i < idCount; i++)
+			{
+				byte bWidth = br.ReadByte();
+				byte bHeight = br.ReadByte();
+				byte bColorCount = br.ReadByte();
+				byte bReserved = br.ReadByte();
+				ushort wPlanes = br.ReadUInt16();
+				ushort wBitCount = br.ReadUInt16();
+				uint dwBytesInRes = br.ReadUInt32();
+				uint dwImageOffset = br.ReadUInt32();
+
+				// we start the icon IDs at 2
+				ushort id = (ushort)(2 + i);
+
+				group.Write(bWidth);
+				group.Write(bHeight);
+				group.Write(bColorCount);
+				group.Write(bReserved);
+				group.Write(wPlanes);
+				group.Write(wBitCount);
+				group.Write(dwBytesInRes);
+				group.Write(id);
+
+				byte[] icon = new byte[dwBytesInRes];
+				Buffer.BlockCopy(iconFile, (int)dwImageOffset, icon, 0, icon.Length);
+				root[new OrdinalOrName(RT_ICON)][new OrdinalOrName(id)][new OrdinalOrName(0)].Data = ByteBuffer.Wrap(icon);
+			}
+			root[new OrdinalOrName(RT_GROUP_ICON)][new OrdinalOrName(32512)][new OrdinalOrName(0)].Data = group;
+		}
+
+		internal void ExtractResources(byte[] buf)
+		{
+			ByteReader br = new ByteReader(buf, 0, buf.Length);
+			while (br.Length >= 32)
+			{
+				br.Align(4);
+				RESOURCEHEADER hdr = new RESOURCEHEADER(br);
+				if (hdr.DataSize != 0)
+				{
+					root[hdr.TYPE][hdr.NAME][new OrdinalOrName(hdr.LanguageId)].Data = ByteBuffer.Wrap(br.ReadBytes(hdr.DataSize));
+				}
+			}
+		}
+
+		internal void Finish()
+		{
+			if (bb != null)
+			{
+				throw new InvalidOperationException();
+			}
+			bb = new ByteBuffer(1024);
+			linkOffsets = new List<int>();
+			root.Write(bb, linkOffsets);
+			root = null;
+		}
+
+		internal int Length
+		{
+			get { return bb.Length; }
+		}
+
+		internal void Write(MetadataWriter mw, uint rva)
+		{
+			foreach (int offset in linkOffsets)
+			{
+				bb.Position = offset;
+				bb.Write(bb.GetInt32AtCurrentPosition() + (int)rva);
+			}
+			mw.Write(bb);
+		}
+	}
+
+	sealed class ResourceDirectoryEntry
+	{
+		internal readonly OrdinalOrName OrdinalOrName;
+		internal ByteBuffer Data;
+		private int namedEntries;
+		private readonly List<ResourceDirectoryEntry> entries = new List<ResourceDirectoryEntry>();
+
+		internal ResourceDirectoryEntry(OrdinalOrName id)
+		{
+			this.OrdinalOrName = id;
+		}
+
+		internal ResourceDirectoryEntry this[OrdinalOrName id]
+		{
+			get
+			{
+				foreach (ResourceDirectoryEntry entry in entries)
+				{
+					if (entry.OrdinalOrName.Ordinal == id.Ordinal && entry.OrdinalOrName.Name == id.Name)
+					{
+						return entry;
+					}
+				}
+				ResourceDirectoryEntry newEntry = new ResourceDirectoryEntry(id);
+				if (id.Name == null)
+				{
+					entries.Add(newEntry);
+				}
+				else
+				{
+					entries.Insert(namedEntries++, newEntry);
+				}
+				return newEntry;
+			}
+		}
+
+		private int DirectoryLength
+		{
+			get
+			{
+				if (Data != null)
+				{
+					return 16;
+				}
+				else
+				{
+					int length = 16 + entries.Count * 8;
+					foreach (ResourceDirectoryEntry entry in entries)
+					{
+						length += entry.DirectoryLength;
+					}
+					return length;
+				}
+			}
+		}
+
+		internal void Write(ByteBuffer bb, List<int> linkOffsets)
+		{
+			if (entries.Count != 0)
+			{
+				int stringTableOffset = this.DirectoryLength;
+				Dictionary<string, int> strings = new Dictionary<string, int>();
+				ByteBuffer stringTable = new ByteBuffer(16);
+				int offset = 16 + entries.Count * 8;
+				for (int pass = 0; pass < 3; pass++)
+				{
+					Write(bb, pass, 0, ref offset, strings, ref stringTableOffset, stringTable);
+				}
+				// the pecoff spec says that the string table is between the directory entries and the data entries,
+				// but the windows linker puts them after the data entries, so we do too.
+				stringTable.Align(4);
+				offset += stringTable.Length;
+				WriteResourceDataEntries(bb, linkOffsets, ref offset);
+				bb.Write(stringTable);
+				WriteData(bb);
+			}
+		}
+
+		private void WriteResourceDataEntries(ByteBuffer bb, List<int> linkOffsets, ref int offset)
+		{
+			foreach (ResourceDirectoryEntry entry in entries)
+			{
+				if (entry.Data != null)
+				{
+					linkOffsets.Add(bb.Position);
+					bb.Write(offset);
+					bb.Write(entry.Data.Length);
+					bb.Write(0);	// code page
+					bb.Write(0);	// reserved
+					offset += (entry.Data.Length + 3) & ~3;
+				}
+				else
+				{
+					entry.WriteResourceDataEntries(bb, linkOffsets, ref offset);
+				}
+			}
+		}
+
+		private void WriteData(ByteBuffer bb)
+		{
+			foreach (ResourceDirectoryEntry entry in entries)
+			{
+				if (entry.Data != null)
+				{
+					bb.Write(entry.Data);
+					bb.Align(4);
+				}
+				else
+				{
+					entry.WriteData(bb);
+				}
+			}
+		}
+
+		private void Write(ByteBuffer bb, int writeDepth, int currentDepth, ref int offset, Dictionary<string, int> strings, ref int stringTableOffset, ByteBuffer stringTable)
+		{
+			if (currentDepth == writeDepth)
+			{
+				// directory header
+				bb.Write(0);	// Characteristics
+				bb.Write(0);	// Time/Date Stamp
+				bb.Write(0);	// Version (Major / Minor)
+				bb.Write((ushort)namedEntries);
+				bb.Write((ushort)(entries.Count - namedEntries));
+			}
+			foreach (ResourceDirectoryEntry entry in entries)
+			{
+				if (currentDepth == writeDepth)
+				{
+					entry.WriteEntry(bb, ref offset, strings, ref stringTableOffset, stringTable);
+				}
+				else
+				{
+					entry.Write(bb, writeDepth, currentDepth + 1, ref offset, strings, ref stringTableOffset, stringTable);
+				}
+			}
+		}
+
+		private void WriteEntry(ByteBuffer bb, ref int offset, Dictionary<string, int> strings, ref int stringTableOffset, ByteBuffer stringTable)
+		{
+			WriteNameOrOrdinal(bb, OrdinalOrName, strings, ref stringTableOffset, stringTable);
+			if (Data == null)
+			{
+				bb.Write(0x80000000U | (uint)offset);
+			}
+			else
+			{
+				bb.Write(offset);
+			}
+			offset += 16 + entries.Count * 8;
+		}
+
+		private static void WriteNameOrOrdinal(ByteBuffer bb, OrdinalOrName id, Dictionary<string, int> strings, ref int stringTableOffset, ByteBuffer stringTable)
+		{
+			if (id.Name == null)
+			{
+				bb.Write((int)id.Ordinal);
+			}
+			else
+			{
+				int stringOffset;
+				if (!strings.TryGetValue(id.Name, out stringOffset))
+				{
+					stringOffset = stringTableOffset;
+					strings.Add(id.Name, stringOffset);
+					stringTableOffset += id.Name.Length * 2 + 2;
+					stringTable.Write((ushort)id.Name.Length);
+					foreach (char c in id.Name)
+					{
+						stringTable.Write((short)c);
+					}
+				}
+				bb.Write(0x80000000U | (uint)stringOffset);
+			}
+		}
+	}
+
+	struct OrdinalOrName
+	{
+		internal readonly ushort Ordinal;
+		internal readonly string Name;
+
+		internal OrdinalOrName(ushort value)
+		{
+			Ordinal = value;
+			Name = null;
+		}
+
+		internal OrdinalOrName(string value)
+		{
+			Ordinal = 0xFFFF;
+			Name = value;
+		}
+	}
+
+	struct RESOURCEHEADER
+	{
+		internal int DataSize;
+		internal int HeaderSize;
+		internal OrdinalOrName TYPE;
+		internal OrdinalOrName NAME;
+		internal int DataVersion;
+		internal ushort MemoryFlags;
+		internal ushort LanguageId;
+		internal int Version;
+		internal int Characteristics;
+
+		internal RESOURCEHEADER(ByteReader br)
+		{
+			DataSize = br.ReadInt32();
+			HeaderSize = br.ReadInt32();
+			TYPE = ReadOrdinalOrName(br);
+			NAME = ReadOrdinalOrName(br);
+			br.Align(4);
+			DataVersion = br.ReadInt32();
+			MemoryFlags = br.ReadUInt16();
+			LanguageId = br.ReadUInt16();
+			Version = br.ReadInt32();
+			Characteristics = br.ReadInt32();
+		}
+
+		private static OrdinalOrName ReadOrdinalOrName(ByteReader br)
+		{
+			char c = br.ReadChar();
+			if (c == 0xFFFF)
+			{
+				return new OrdinalOrName(br.ReadUInt16());
+			}
+			else
+			{
+				StringBuilder sb = new StringBuilder();
+				while (c != 0)
+				{
+					sb.Append(c);
+					c = br.ReadChar();
+				}
+				return new OrdinalOrName(sb.ToString());
+			}
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Writer/TextSection.cs b/mcs/class/IKVM.Reflection/Writer/TextSection.cs
new file mode 100644
index 0000000..9b4a7ee
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Writer/TextSection.cs
@@ -0,0 +1,445 @@
+/*
+  Copyright (C) 2008 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Diagnostics;
+using System.IO;
+using System.Collections.Generic;
+using System.Text;
+using IKVM.Reflection.Emit;
+using IKVM.Reflection.Impl;
+using IKVM.Reflection.Metadata;
+
+namespace IKVM.Reflection.Writer
+{
+	sealed class TextSection
+	{
+		private readonly PEWriter peWriter;
+		private readonly CliHeader cliHeader;
+		private readonly ModuleBuilder moduleBuilder;
+		private readonly uint strongNameSignatureLength;
+
+		internal TextSection(PEWriter peWriter, CliHeader cliHeader, ModuleBuilder moduleBuilder, int strongNameSignatureLength)
+		{
+			this.peWriter = peWriter;
+			this.cliHeader = cliHeader;
+			this.moduleBuilder = moduleBuilder;
+			this.strongNameSignatureLength = (uint)strongNameSignatureLength;
+		}
+
+		internal uint PointerToRawData
+		{
+			get { return peWriter.ToFileAlignment(peWriter.HeaderSize); }
+		}
+
+		internal uint BaseRVA
+		{
+			get { return 0x2000; }
+		}
+
+		internal uint ImportAddressTableRVA
+		{
+			get { return BaseRVA; }
+		}
+
+		internal uint ImportAddressTableLength
+		{
+			get
+			{
+				if (peWriter.Headers.FileHeader.Machine == IMAGE_FILE_HEADER.IMAGE_FILE_MACHINE_I386)
+				{
+					return 8;
+				}
+				else
+				{
+					return 16;
+				}
+			}
+		}
+
+		internal uint ComDescriptorRVA
+		{
+			get { return ImportAddressTableRVA + ImportAddressTableLength; }
+		}
+
+		internal uint ComDescriptorLength
+		{
+			get { return cliHeader.Cb; }
+		}
+
+		internal uint MethodBodiesRVA
+		{
+			get { return (ComDescriptorRVA + ComDescriptorLength + 7) & ~7U; }
+		}
+
+		private uint MethodBodiesLength
+		{
+			get { return (uint)moduleBuilder.methodBodies.Length; }
+		}
+
+		private uint ResourcesRVA
+		{
+			get
+			{
+				if (peWriter.Headers.FileHeader.Machine == IMAGE_FILE_HEADER.IMAGE_FILE_MACHINE_I386)
+				{
+					return (MethodBodiesRVA + MethodBodiesLength + 3) & ~3U;
+				}
+				else
+				{
+					return (MethodBodiesRVA + MethodBodiesLength + 15) & ~15U;
+				}
+			}
+		}
+
+		private uint ResourcesLength
+		{
+			get { return (uint)moduleBuilder.manifestResources.Length; }
+		}
+
+		internal uint StrongNameSignatureRVA
+		{
+			get
+			{
+				return (ResourcesRVA + ResourcesLength + 3) & ~3U;
+			}
+		}
+
+		internal uint StrongNameSignatureLength
+		{
+			get
+			{
+				return strongNameSignatureLength;
+			}
+		}
+
+		private uint MetadataRVA
+		{
+			get
+			{
+				return (StrongNameSignatureRVA + StrongNameSignatureLength + 3) & ~3U;
+			}
+		}
+
+		private uint MetadataLength
+		{
+			get { return (uint)moduleBuilder.MetadataLength; }
+		}
+
+		internal uint DebugDirectoryRVA
+		{
+			get { return MetadataRVA + MetadataLength; }
+		}
+
+		internal uint DebugDirectoryLength
+		{
+			get
+			{
+				if (DebugDirectoryContentsLength != 0)
+				{
+					return 28;
+				}
+				return 0;
+			}
+		}
+
+		private uint DebugDirectoryContentsLength
+		{
+			get
+			{
+				if (moduleBuilder.symbolWriter != null)
+				{
+					IMAGE_DEBUG_DIRECTORY idd = new IMAGE_DEBUG_DIRECTORY();
+					return (uint)SymbolSupport.GetDebugInfo(moduleBuilder.symbolWriter, ref idd).Length;
+				}
+				return 0;
+			}
+		}
+
+		internal uint ImportDirectoryRVA
+		{
+			// on AMD64 (and probably IA64) the import directory needs to be 16 byte aligned (on I386 4 byte alignment is sufficient)
+			get { return (DebugDirectoryRVA + DebugDirectoryLength + DebugDirectoryContentsLength + 15) & ~15U; }
+		}
+
+		internal uint ImportDirectoryLength
+		{
+			get { return (ImportHintNameTableRVA - ImportDirectoryRVA) + 27; }
+		}
+
+		private uint ImportHintNameTableRVA
+		{
+			get
+			{
+				if (peWriter.Headers.FileHeader.Machine == IMAGE_FILE_HEADER.IMAGE_FILE_MACHINE_I386)
+				{
+					return (ImportDirectoryRVA + 48 + 15) & ~15U;
+				}
+				else
+				{
+					return (ImportDirectoryRVA + 48 + 4 + 15) & ~15U;
+				}
+			}
+		}
+
+		internal uint StartupStubRVA
+		{
+			get
+			{
+				if (peWriter.Headers.FileHeader.Machine == IMAGE_FILE_HEADER.IMAGE_FILE_MACHINE_IA64)
+				{
+					// note that the alignment is driven by the requirement that the two relocation fixups are in a single page
+					return (ImportDirectoryRVA + ImportDirectoryLength + 15U) & ~15U;
+				}
+				else
+				{
+					// the additional 2 bytes padding are to align the address in the jump (which is a relocation fixup)
+					return 2 + ((ImportDirectoryRVA + ImportDirectoryLength + 3U) & ~3U);
+				}
+			}
+		}
+
+		internal uint StartupStubLength
+		{
+			get
+			{
+				if (peWriter.Headers.FileHeader.Machine == IMAGE_FILE_HEADER.IMAGE_FILE_MACHINE_AMD64)
+				{
+					return 12;
+				}
+				else if (peWriter.Headers.FileHeader.Machine == IMAGE_FILE_HEADER.IMAGE_FILE_MACHINE_IA64)
+				{
+					return 48;
+				}
+				else
+				{
+					return 6;
+				}
+			}
+		}
+
+		private void WriteRVA(MetadataWriter mw, uint rva)
+		{
+			if (peWriter.Headers.FileHeader.Machine == IMAGE_FILE_HEADER.IMAGE_FILE_MACHINE_I386)
+			{
+				mw.Write(rva);
+			}
+			else
+			{
+				mw.Write((ulong)rva);
+			}
+		}
+
+		internal void Write(MetadataWriter mw, int sdataRVA)
+		{
+			// Now that we're ready to start writing, we need to do some fix ups
+			moduleBuilder.MethodDef.Fixup(this);
+			moduleBuilder.MethodImpl.Fixup(moduleBuilder);
+			moduleBuilder.MethodSemantics.Fixup(moduleBuilder);
+			moduleBuilder.InterfaceImpl.Fixup();
+			moduleBuilder.MemberRef.Fixup(moduleBuilder);
+			moduleBuilder.Constant.Fixup(moduleBuilder);
+			moduleBuilder.FieldMarshal.Fixup(moduleBuilder);
+			moduleBuilder.DeclSecurity.Fixup(moduleBuilder);
+			moduleBuilder.GenericParam.Fixup(moduleBuilder);
+			moduleBuilder.CustomAttribute.Fixup(moduleBuilder);
+			moduleBuilder.FieldLayout.Fixup(moduleBuilder);
+			moduleBuilder.FieldRVA.Fixup(moduleBuilder, sdataRVA);
+			moduleBuilder.ImplMap.Fixup(moduleBuilder);
+			moduleBuilder.MethodSpec.Fixup(moduleBuilder);
+			moduleBuilder.GenericParamConstraint.Fixup(moduleBuilder);
+
+			// Import Address Table
+			AssertRVA(mw, ImportAddressTableRVA);
+			WriteRVA(mw, ImportHintNameTableRVA);
+			WriteRVA(mw, 0);
+
+			// CLI Header
+			AssertRVA(mw, ComDescriptorRVA);
+			cliHeader.MetaDataRVA = MetadataRVA;
+			cliHeader.MetaDataSize = MetadataLength;
+			if (ResourcesLength != 0)
+			{
+				cliHeader.ResourcesRVA = ResourcesRVA;
+				cliHeader.ResourcesSize = ResourcesLength;
+			}
+			if (StrongNameSignatureLength != 0)
+			{
+				cliHeader.StrongNameSignatureRVA = StrongNameSignatureRVA;
+				cliHeader.StrongNameSignatureSize = StrongNameSignatureLength;
+			}
+			cliHeader.Write(mw);
+
+			// alignment padding
+			for (int i = (int)(MethodBodiesRVA - (ComDescriptorRVA + ComDescriptorLength)); i > 0; i--)
+			{
+				mw.Write((byte)0);
+			}
+
+			// Method Bodies
+			mw.Write(moduleBuilder.methodBodies);
+
+			// alignment padding
+			for (int i = (int)(ResourcesRVA - (MethodBodiesRVA + MethodBodiesLength)); i > 0; i--)
+			{
+				mw.Write((byte)0);
+			}
+
+			// Resources
+			mw.Write(moduleBuilder.manifestResources);
+
+			// The strong name signature live here (if it exists), but it will written later
+			// and the following alignment padding will take care of reserving the space.
+
+			// alignment padding
+			for (int i = (int)(MetadataRVA - (ResourcesRVA + ResourcesLength)); i > 0; i--)
+			{
+				mw.Write((byte)0);
+			}
+
+			// Metadata
+			AssertRVA(mw, MetadataRVA);
+			moduleBuilder.WriteMetadata(mw);
+
+			// Debug Directory
+			AssertRVA(mw, DebugDirectoryRVA);
+			WriteDebugDirectory(mw);
+
+			// alignment padding
+			for (int i = (int)(ImportDirectoryRVA - (DebugDirectoryRVA + DebugDirectoryLength + DebugDirectoryContentsLength)); i > 0; i--)
+			{
+				mw.Write((byte)0);
+			}
+
+			// Import Directory
+			AssertRVA(mw, ImportDirectoryRVA);
+			WriteImportDirectory(mw);
+
+			// alignment padding
+			for (int i = (int)(StartupStubRVA - (ImportDirectoryRVA + ImportDirectoryLength)); i > 0; i--)
+			{
+				mw.Write((byte)0);
+			}
+
+			// Startup Stub
+			AssertRVA(mw, StartupStubRVA);
+			if (peWriter.Headers.FileHeader.Machine == IMAGE_FILE_HEADER.IMAGE_FILE_MACHINE_AMD64)
+			{
+				/*
+				 *   48 A1 00 20 40 00 00 00 00 00        mov         rax,qword ptr [0000000000402000h]
+				 *   FF E0                                jmp         rax
+				 */
+				mw.Write((ushort)0xA148);
+				mw.Write(peWriter.Headers.OptionalHeader.ImageBase + ImportAddressTableRVA);
+				mw.Write((ushort)0xE0FF);
+			}
+			else if (peWriter.Headers.FileHeader.Machine == IMAGE_FILE_HEADER.IMAGE_FILE_MACHINE_IA64)
+			{
+				mw.Write(new byte[] {
+						0x0B, 0x48, 0x00, 0x02, 0x18, 0x10, 0xA0, 0x40, 0x24, 0x30, 0x28, 0x00, 0x00, 0x00, 0x04, 0x00,
+						0x10, 0x08, 0x00, 0x12, 0x18, 0x10, 0x60, 0x50, 0x04, 0x80, 0x03, 0x00, 0x60, 0x00, 0x80, 0x00
+					});
+				mw.Write(peWriter.Headers.OptionalHeader.ImageBase + StartupStubRVA);
+				mw.Write(peWriter.Headers.OptionalHeader.ImageBase + BaseRVA);
+			}
+			else
+			{
+				mw.Write((ushort)0x25FF);
+				mw.Write((uint)peWriter.Headers.OptionalHeader.ImageBase + ImportAddressTableRVA);
+			}
+		}
+
+		[Conditional("DEBUG")]
+		private void AssertRVA(MetadataWriter mw, uint rva)
+		{
+			Debug.Assert(mw.Position - PointerToRawData + BaseRVA == rva);
+		}
+
+		private void WriteDebugDirectory(MetadataWriter mw)
+		{
+			if (DebugDirectoryLength != 0)
+			{
+				IMAGE_DEBUG_DIRECTORY idd = new IMAGE_DEBUG_DIRECTORY();
+				idd.Characteristics = 0;
+				idd.TimeDateStamp = peWriter.Headers.FileHeader.TimeDateStamp;
+				byte[] buf = SymbolSupport.GetDebugInfo(moduleBuilder.symbolWriter, ref idd);
+				idd.PointerToRawData = (DebugDirectoryRVA - BaseRVA) + DebugDirectoryLength + PointerToRawData;
+				mw.Write(idd.Characteristics);
+				mw.Write(idd.TimeDateStamp);
+				mw.Write(idd.MajorVersion);
+				mw.Write(idd.MinorVersion);
+				mw.Write(idd.Type);
+				mw.Write(idd.SizeOfData);
+				mw.Write(idd.AddressOfRawData);
+				mw.Write(idd.PointerToRawData);
+				mw.Write(buf);
+			}
+		}
+
+		private void WriteImportDirectory(MetadataWriter mw)
+		{
+			mw.Write(ImportDirectoryRVA + 40);		// ImportLookupTable
+			mw.Write(0);							// DateTimeStamp
+			mw.Write(0);							// ForwarderChain
+			mw.Write(ImportHintNameTableRVA + 14);	// Name
+			mw.Write(ImportAddressTableRVA);
+			mw.Write(new byte[20]);
+			// Import Lookup Table
+			mw.Write(ImportHintNameTableRVA);		// Hint/Name Table RVA
+			int size = 48;
+			if (peWriter.Headers.FileHeader.Machine != IMAGE_FILE_HEADER.IMAGE_FILE_MACHINE_I386)
+			{
+				size += 4;
+				mw.Write(0);
+			}
+			mw.Write(0);
+
+			// alignment padding
+			for (int i = (int)(ImportHintNameTableRVA - (ImportDirectoryRVA + size)); i > 0; i--)
+			{
+				mw.Write((byte)0);
+			}
+
+			// Hint/Name Table
+			AssertRVA(mw, ImportHintNameTableRVA);
+			mw.Write((ushort)0);		// Hint
+			if ((peWriter.Headers.FileHeader.Characteristics & IMAGE_FILE_HEADER.IMAGE_FILE_DLL) != 0)
+			{
+				mw.Write(System.Text.Encoding.ASCII.GetBytes("_CorDllMain"));
+			}
+			else
+			{
+				mw.Write(System.Text.Encoding.ASCII.GetBytes("_CorExeMain"));
+			}
+			mw.Write((byte)0);
+			// Name
+			mw.Write(System.Text.Encoding.ASCII.GetBytes("mscoree.dll"));
+			mw.Write((ushort)0);
+		}
+
+		internal int Length
+		{
+			get { return (int)(StartupStubRVA - BaseRVA + StartupStubLength); }
+		}
+	}
+}
diff --git a/mcs/class/IKVM.Reflection/Writer/VersionInfo.cs b/mcs/class/IKVM.Reflection/Writer/VersionInfo.cs
new file mode 100644
index 0000000..bfcc00b
--- /dev/null
+++ b/mcs/class/IKVM.Reflection/Writer/VersionInfo.cs
@@ -0,0 +1,280 @@
+/*
+  Copyright (C) 2008 Jeroen Frijters
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jeroen Frijters
+  jeroen at frijters.net
+  
+*/
+using System;
+using System.Globalization;
+using IKVM.Reflection.Emit;
+
+namespace IKVM.Reflection.Writer
+{
+	sealed class VersionInfo
+	{
+		private AssemblyName name;
+		private string fileName;
+		internal string copyright;
+		internal string trademark;
+		internal string product;
+		internal string company;
+		private string description;
+		private string title;
+		internal string informationalVersion;
+		private string culture;
+		private string fileVersion;
+
+		internal void SetName(AssemblyName name)
+		{
+			this.name = name;
+		}
+
+		internal void SetFileName(string assemblyFileName)
+		{
+			this.fileName = assemblyFileName;
+		}
+
+		internal void SetAttribute(CustomAttributeBuilder cab)
+		{
+			Universe u = cab.Constructor.Module.universe;
+			Type type = cab.Constructor.DeclaringType;
+			if (copyright == null && type == u.System_Reflection_AssemblyCopyrightAttribute)
+			{
+				copyright = (string)cab.GetConstructorArgument(0);
+			}
+			else if (trademark == null && type == u.System_Reflection_AssemblyTrademarkAttribute)
+			{
+				trademark = (string)cab.GetConstructorArgument(0);
+			}
+			else if (product == null && type == u.System_Reflection_AssemblyProductAttribute)
+			{
+				product = (string)cab.GetConstructorArgument(0);
+			}
+			else if (company == null && type == u.System_Reflection_AssemblyCompanyAttribute)
+			{
+				company = (string)cab.GetConstructorArgument(0);
+			}
+			else if (description == null && type == u.System_Reflection_AssemblyDescriptionAttribute)
+			{
+				description = (string)cab.GetConstructorArgument(0);
+			}
+			else if (title == null && type == u.System_Reflection_AssemblyTitleAttribute)
+			{
+				title = (string)cab.GetConstructorArgument(0);
+			}
+			else if (informationalVersion == null && type == u.System_Reflection_AssemblyInformationalVersionAttribute)
+			{
+				informationalVersion = (string)cab.GetConstructorArgument(0);
+			}
+			else if (culture == null && type == u.System_Reflection_AssemblyCultureAttribute)
+			{
+				culture  = (string)cab.GetConstructorArgument(0);
+			}
+			else if (fileVersion == null && type == u.System_Reflection_AssemblyFileVersionAttribute)
+			{
+				fileVersion = (string)cab.GetConstructorArgument(0);
+			}
+		}
+
+		internal void Write(ByteBuffer bb)
+		{
+			if (fileVersion == null)
+			{
+				if (name.Version != null)
+				{
+					fileVersion = name.Version.ToString();
+				}
+				else
+				{
+					fileVersion = "0.0.0.0";
+				}
+			}
+
+			int codepage = 1200;	// Unicode codepage
+			int lcid = 0x7f;
+			if (name.CultureInfo != null)
+			{
+				lcid = name.CultureInfo.LCID;
+			}
+			if (culture != null)
+			{
+				lcid = new CultureInfo(culture).LCID;
+			}
+
+			Version filever = ParseVersionRobust(fileVersion);
+			int fileVersionMajor = filever.Major;
+			int fileVersionMinor = filever.Minor;
+			int fileVersionBuild = filever.Build;
+			int fileVersionRevision = filever.Revision;
+
+			int productVersionMajor = fileVersionMajor;
+			int productVersionMinor = fileVersionMinor;
+			int productVersionBuild = fileVersionBuild;
+			int productVersionRevision = fileVersionRevision;
+			if (informationalVersion != null)
+			{
+				Version productver = ParseVersionRobust(informationalVersion);
+				productVersionMajor = productver.Major;
+				productVersionMinor = productver.Minor;
+				productVersionBuild = productver.Build;
+				productVersionRevision = productver.Revision;
+			}
+
+			ByteBuffer stringTable = new ByteBuffer(512);
+			stringTable.Write((short)0);	// wLength (placeholder)
+			stringTable.Write((short)0);	// wValueLength
+			stringTable.Write((short)1);	// wType
+			WriteUTF16Z(stringTable, string.Format("{0:x4}{1:x4}", lcid, codepage));
+			stringTable.Align(4);
+
+			WriteString(stringTable, "Comments", description);
+			WriteString(stringTable, "CompanyName", company);
+			WriteString(stringTable, "FileDescription", title);
+			WriteString(stringTable, "FileVersion", fileVersion);
+			WriteString(stringTable, "InternalName", name.Name);
+			WriteString(stringTable, "LegalCopyright", copyright);
+			WriteString(stringTable, "LegalTrademarks", trademark);
+			WriteString(stringTable, "OriginalFilename", fileName);
+			WriteString(stringTable, "ProductName", product);
+			WriteString(stringTable, "ProductVersion", informationalVersion);
+
+			stringTable.Position = 0;
+			stringTable.Write((short)stringTable.Length);
+
+			ByteBuffer stringFileInfo = new ByteBuffer(512);
+			stringFileInfo.Write((short)0);	// wLength (placeholder)
+			stringFileInfo.Write((short)0);	// wValueLength
+			stringFileInfo.Write((short)1);	// wType
+			WriteUTF16Z(stringFileInfo, "StringFileInfo");
+			stringFileInfo.Align(4);
+			stringFileInfo.Write(stringTable);
+			stringFileInfo.Position = 0;
+			stringFileInfo.Write((short)stringFileInfo.Length);
+
+			byte[] preamble1 = new byte[] {
+			  // VS_VERSIONINFO (platform SDK)
+			  0x34, 0x00,				// wValueLength
+			  0x00, 0x00,				// wType
+			  0x56, 0x00, 0x53, 0x00, 0x5F, 0x00, 0x56, 0x00, 0x45, 0x00, 0x52, 0x00, 0x53, 0x00, 0x49, 0x00, 0x4F, 0x00, 0x4E, 0x00, 0x5F, 0x00, 0x49, 0x00, 0x4E, 0x00, 0x46, 0x00, 0x4F, 0x00, 0x00, 0x00,  // "VS_VERSION_INFO\0"
+			  0x00, 0x00,				// Padding1 (32 bit alignment)
+			  // VS_FIXEDFILEINFO starts
+			  0xBD, 0x04, 0xEF, 0xFE,	// dwSignature (0xFEEF04BD)
+			  0x00, 0x00, 0x01, 0x00,	// dwStrucVersion
+			};
+			byte[] preamble2 = new byte[] {
+			  0x3F, 0x00, 0x00, 0x00,	// dwFileFlagsMask (??)
+			  0x00, 0x00, 0x00, 0x00,	// dwFileFlags (??)
+			  0x04, 0x00, 0x00, 0x00,	// dwFileOS
+			  0x02, 0x00, 0x00, 0x00,	// dwFileType
+			  0x00, 0x00, 0x00, 0x00,	// dwFileSubtype
+			  0x00, 0x00, 0x00, 0x00,	// dwFileDateMS
+			  0x00, 0x00, 0x00, 0x00,	// dwFileDateLS
+										// Padding2 (32 bit alignment)
+			  // VarFileInfo
+			  0x44, 0x00,				// wLength
+			  0x00, 0x00,				// wValueLength
+			  0x01, 0x00,				// wType
+			  0x56, 0x00, 0x61, 0x00, 0x72, 0x00, 0x46, 0x00, 0x69, 0x00, 0x6C, 0x00, 0x65, 0x00, 0x49, 0x00, 0x6E, 0x00, 0x66, 0x00, 0x6F, 0x00, 0x00, 0x00,	// "VarFileInfo\0"
+			  0x00, 0x00,				// Padding
+			  // Var
+			  0x24, 0x00,				// wLength
+			  0x04, 0x00,				// wValueLength
+			  0x00, 0x00,				// wType
+			  0x54, 0x00, 0x72, 0x00, 0x61, 0x00, 0x6E, 0x00, 0x73, 0x00, 0x6C, 0x00, 0x61, 0x00, 0x74, 0x00, 0x69, 0x00, 0x6F, 0x00, 0x6E, 0x00, 0x00, 0x00,	// "Translation\0"
+			  0x00, 0x00,				// Padding (32 bit alignment)
+			};
+			bb.Write((short)(2 + preamble1.Length + 8 + 8 + preamble2.Length + 4 + stringFileInfo.Length));
+			bb.Write(preamble1);
+			bb.Write((short)fileVersionMinor);
+			bb.Write((short)fileVersionMajor);
+			bb.Write((short)fileVersionRevision);
+			bb.Write((short)fileVersionBuild);
+			bb.Write((short)productVersionMinor);
+			bb.Write((short)productVersionMajor);
+			bb.Write((short)productVersionRevision);
+			bb.Write((short)productVersionBuild);
+			bb.Write(preamble2);
+			bb.Write((short)lcid);
+			bb.Write((short)codepage);
+			bb.Write(stringFileInfo);
+		}
+
+		private static void WriteUTF16Z(ByteBuffer bb, string str)
+		{
+			foreach (char c in str)
+			{
+				bb.Write((short)c);
+			}
+			bb.Write((short)0);
+		}
+
+		private static void WriteString(ByteBuffer bb, string name, string value)
+		{
+			value = value ?? " ";
+			int pos = bb.Position;
+			bb.Write((short)0);					// wLength (placeholder)
+			bb.Write((short)(value.Length + 1));// wValueLength
+			bb.Write((short)1);					// wType
+			WriteUTF16Z(bb, name);
+			bb.Align(4);
+			WriteUTF16Z(bb, value);
+			bb.Align(4);
+			int savedPos = bb.Position;
+			bb.Position = pos;
+			bb.Write((short)(savedPos - pos));
+			bb.Position = savedPos;
+		}
+
+		private static Version ParseVersionRobust(string ver)
+		{
+			int index = 0;
+			ushort major = ParseVersionPart(ver, ref index);
+			ushort minor = ParseVersionPart(ver, ref index);
+			ushort build = ParseVersionPart(ver, ref index);
+			ushort revision = ParseVersionPart(ver, ref index);
+			return new Version(major, minor, build, revision);
+		}
+
+		private static ushort ParseVersionPart(string str, ref int pos)
+		{
+			ushort value = 0;
+			while (pos < str.Length)
+			{
+				char c = str[pos];
+				if (c == '.')
+				{
+					pos++;
+					break;
+				}
+				else if (c >= '0' && c <= '9')
+				{
+					value *= 10;
+					value += (ushort)(c - '0');
+					pos++;
+				}
+				else
+				{
+					break;
+				}
+			}
+			return value;
+		}
+	}
+}
diff --git a/mcs/class/Makefile b/mcs/class/Makefile
index 1515bb7..63bc061 100644
--- a/mcs/class/Makefile
+++ b/mcs/class/Makefile
@@ -1,19 +1,8 @@
 thisdir = class
 
-bootstrap_dirs := \
-	corlib					\
-	Mono.CompilerServices.SymbolWriter	\
-	System					\
-	System.XML				\
-	Mono.Security				\
-	System.Security				\
-	System.Configuration			\
-	System
-
-
 # Note that Mono.Security and System.Security aren't listed.
 # We may have to add those if 'mcs' starts using them.
-basic_SUBDIRS := corlib System System.XML System Mono.Security Mono.CompilerServices.SymbolWriter System.Core
+basic_SUBDIRS := corlib System System.XML System Mono.Security Mono.CompilerServices.SymbolWriter System.Core aot-compiler
 
 net_1_1_java_SUBDIRS = \
 	System.Xml					\
@@ -37,7 +26,6 @@ common_dirs := \
 	System.Configuration		\
 	System				\
 	System.XML			\
-	aot-compiler		\
 	I18N				\
 	System.Drawing			\
 	System.Transactions		\
@@ -63,9 +51,6 @@ common_dirs := \
 	System.Design			\
 	PEAPI				\
 	Npgsql				\
-	Compat.ICSharpCode.SharpZipLib	\
-	ICSharpCode.SharpZipLib		\
-	Compat.ICSharpCode.SharpZipLib	\
 	Commons.Xml.Relaxng		\
 	Novell.Directory.Ldap		\
 	Mono.Security.Win32		\
@@ -77,6 +62,7 @@ common_dirs := \
 	System.ServiceProcess           \
 	System.Drawing.Design		\
 	System.Design			\
+	ICSharpCode.SharpZipLib		\
 	Mono.Http			\
 	Mono.Cairo                      \
 	IBM.Data.DB2			\
@@ -117,30 +103,33 @@ net_2_0_dirs := \
 	Mono.CSharp			\
 	Moonlight.Build.Tasks		\
 	WindowsBase			\
-	System.Data.Services
+	System.Data.Services	\
+	System.Data.Services.Client \
+	System.Net
 
 net_2_0_only_dirs := \
 	System.Web.Extensions_1.0	\
-	System.Web.Extensions.Design_1.0
+	System.Web.Extensions.Design_1.0	\
+	Compat.ICSharpCode.SharpZipLib
 
 moonlight_dirs := \
 	corlib			\
+	System			\
 	Mono.CompilerServices.SymbolWriter \
 	System.Core		\
-	System			\
 	System.XML		\
 	System.Net		\
 	System.Xml.Linq	\
-	System.Xml.Serialization	\
 	System.Runtime.Serialization	\
 	System.ServiceModel	\
-	System.ServiceModel.Web
+	System.ServiceModel.Web	\
+	System.Xml.Serialization
 
-monotouch_dirs := \
+mobile_dirs := \
 	corlib	\
+	System	\
 	Mono.CompilerServices.SymbolWriter	\
 	System.Core	\
-	System	\
 	System.XML	\
 	Mono.Security	\
 	System	\
@@ -157,14 +146,11 @@ monotouch_dirs := \
 	Mono.Cairo	\
 	Mono.Data.Sqlite
 
-net_3_5_dirs := \
+net_3_5_only_dirs := \
 	Microsoft.Build.Framework	\
 	Microsoft.Build.Utilities	\
 	Microsoft.Build.Engine		\
-	Microsoft.Build.Tasks		\
-	Moonlight.Build.Tasks		\
-	System.Web.Extensions.Design	\
-	System.Data.Services.Client
+	Microsoft.Build.Tasks
 
 net_4_0_dirs := \
 	System.Dynamic		\
@@ -179,21 +165,18 @@ net_4_0_dirs := \
 	System.Runtime.DurableInstancing \
 	Mono.CodeContracts
 
-net_2_0_bootstrap_SUBDIRS := $(bootstrap_dirs)
 net_2_0_SUBDIRS := $(common_dirs) $(net_2_0_dirs) $(net_2_0_only_dirs)
-moonlight_bootstrap_SUBDIRS := corlib System Mono.CompilerServices.SymbolWriter System.Core
 moonlight_raw_SUBDIRS := $(moonlight_dirs)
-monotouch_bootstrap_SUBDIRS := corlib System Mono.CompilerServices.SymbolWriter System.Core
-monotouch_SUBDIRS := $(monotouch_dirs)
-net_3_5_SUBDIRS := $(net_3_5_dirs)
-net_4_0_bootstrap_SUBDIRS := $(bootstrap_dirs) Mono.Posix System.Core
+monodroid_SUBDIRS := $(mobile_dirs)
+monotouch_SUBDIRS := $(mobile_dirs)
+net_3_5_SUBDIRS := $(net_3_5_only_dirs)
 net_4_0_SUBDIRS := $(common_dirs) $(net_2_0_dirs) $(net_4_0_dirs)
 
 include ../build/rules.make
 
-SUBDIRS = $(common_dirs) $(net_2_0_dirs) $(net_2_0_only_dirs) $(moonlight_dirs) $(monotouch_dirs) $(net_3_5_dirs) $(net_4_0_dirs)
+SUBDIRS = $(common_dirs) $(net_2_0_dirs) $(net_2_0_only_dirs) $(moonlight_dirs) $(mobile_dirs) $(net_4_0_dirs)
 
-DIST_ONLY_SUBDIRS = dlr
+DIST_ONLY_SUBDIRS = dlr IKVM.Reflection aot-compiler
 
 # No new makefiles for: System.Messaging, System.Web.Mobile,
 # System.ServiceProcess
@@ -219,9 +202,8 @@ DISTFILES = \
 all-local $(STD_TARGETS:=-local):
 	@:
 
-# What is this used for ?
-
-basic_files = gmcs.exe mscorlib.dll System.dll System.Xml.dll Mono.Security.dll System.Core.dll
+# Files needed to bootstrap C# compiler
+basic_files = mcs.exe mscorlib.dll System.dll System.Xml.dll Mono.Security.dll System.Core.dll
 monolite_files = $(basic_files:%=lib/monolite/%)
 
 lib/monolite:
@@ -232,7 +214,7 @@ $(monolite_files): lib/monolite/%: lib/basic/%
 	cp -p $< $@
 
 $(basic_files:%=lib/basic/%):
-	cd $(topdir) && $(MAKE) profile-do--basic--all
+	cd $(topdir) && $(MAKE) profile-do--basic--all SKIP_AOT=1
 
 dist-default: $(monolite_files)
 dist-local: dist-default
diff --git a/mcs/class/Managed.Windows.Forms/ChangeLog b/mcs/class/Managed.Windows.Forms/ChangeLog
index dcab574..0d851d3 100644
--- a/mcs/class/Managed.Windows.Forms/ChangeLog
+++ b/mcs/class/Managed.Windows.Forms/ChangeLog
@@ -1,3 +1,12 @@
+2011-01-05  Marek Safar  <marek.safar at gmail.com>
+
+	Add missing Accessibility reference
+
+2010-12-10  Miguel de Icaza  <miguel at gnome.org>
+
+	[winforms] Use conditional attributes, not ifdefs to insert
+	conditional code
+
 2009-08-19  Carlos Alberto Cortez <calberto.cortez at gmail.com>
 
 	* System.Windows.Forms_test.dll.sources: Add a new test file.
diff --git a/mcs/class/Managed.Windows.Forms/ChangeLog b/mcs/class/Managed.Windows.Forms/ChangeLog.old
similarity index 100%
copy from mcs/class/Managed.Windows.Forms/ChangeLog
copy to mcs/class/Managed.Windows.Forms/ChangeLog.old
diff --git a/mcs/class/Managed.Windows.Forms/Makefile b/mcs/class/Managed.Windows.Forms/Makefile
index 5a7cf2e..0e1eba8 100644
--- a/mcs/class/Managed.Windows.Forms/Makefile
+++ b/mcs/class/Managed.Windows.Forms/Makefile
@@ -101,7 +101,7 @@ EXTRA_DISTFILES = \
 	$(IMAGES_RESOURCES) \
 	$(TEST_DISTFILES)
 
-TEST_MCS_FLAGS = /r:System.Data.dll /r:System.Drawing.dll \
+TEST_MCS_FLAGS = /r:System.Data.dll /r:System.Drawing.dll /r:Accessibility.dll \
 	-resource:Test/resources/a.cur,a.cur \
 	-resource:Test/resources/32x32.ico,32x32.ico \
 	-nowarn:618,612
diff --git a/mcs/class/Managed.Windows.Forms/System.Resources/ChangeLog b/mcs/class/Managed.Windows.Forms/System.Resources/ChangeLog
index b0276bd..b4598e7 100644
--- a/mcs/class/Managed.Windows.Forms/System.Resources/ChangeLog
+++ b/mcs/class/Managed.Windows.Forms/System.Resources/ChangeLog
@@ -1,3 +1,12 @@
+2010-10-31  Nikolaos Georgiou  <Nikolaos.Georgiou at gmail.com>
+
+	Changed new method back to private, it was accidentally public.
+
+2010-10-31  Nikolaos Georgiou  <Nikolaos.Georgiou at gmail.com>
+
+	Modified ResXResourceWriter so that the comment of ResXNode is not
+	lost. Added unit test.
+
 2010-02-23 Gonzalo Paniagua Javier <gonzalo at novell.com>
 
 	* ResXResourceReader.cs: handle resource file comments.
diff --git a/mcs/class/Managed.Windows.Forms/System.Resources/ChangeLog b/mcs/class/Managed.Windows.Forms/System.Resources/ChangeLog.old
similarity index 100%
copy from mcs/class/Managed.Windows.Forms/System.Resources/ChangeLog
copy to mcs/class/Managed.Windows.Forms/System.Resources/ChangeLog.old
diff --git a/mcs/class/Managed.Windows.Forms/System.Resources/ResXResourceWriter.cs b/mcs/class/Managed.Windows.Forms/System.Resources/ResXResourceWriter.cs
index 5c274ab..761cd28 100644
--- a/mcs/class/Managed.Windows.Forms/System.Resources/ResXResourceWriter.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Resources/ResXResourceWriter.cs
@@ -241,7 +241,7 @@ namespace System.Resources
 		private void AddResource (string name, object value, string comment)
 		{
 			if (value is string) {
-				AddResource (name, (string) value);
+				AddResource (name, (string) value, comment);
 				return;
 			}
 
@@ -294,6 +294,11 @@ namespace System.Resources
 		
 		public void AddResource (string name, string value)
 		{
+			AddResource (name, value, string.Empty);
+		}
+
+		private void AddResource (string name, string value, string comment)
+		{
 			if (name == null)
 				throw new ArgumentNullException ("name");
 
@@ -306,7 +311,7 @@ namespace System.Resources
 			if (writer == null)
 				InitWriter ();
 
-			WriteString (name, value);
+			WriteString (name, value, null, comment);
 		}
 
 #if NET_2_0
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms.CarbonInternal/ChangeLog b/mcs/class/Managed.Windows.Forms/System.Windows.Forms.CarbonInternal/ChangeLog
index a933621..89dca72 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms.CarbonInternal/ChangeLog
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms.CarbonInternal/ChangeLog
@@ -1,7 +1,7 @@
-2010-09-17  Atsushi Eno  <atsushi at ximian.com>
+2010-09-07  Atsushi Eno  <atsushi at ximian.com>
 
-	(merge master 3a7d8b3) Avoid crash for use of deprecated
-	InstallTrackingHandler in Snow Leopard.
+	Avoid crash for use of deprecated InstallTrackingHandler in Snow
+	Leopard.
 
 2009-06-26  Atsushi Enomoto  <atsushi at ximian.com>
 
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms.Layout/ChangeLog b/mcs/class/Managed.Windows.Forms/System.Windows.Forms.Layout/ChangeLog
index 5f09aef..b45eb8d 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms.Layout/ChangeLog
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms.Layout/ChangeLog
@@ -1,3 +1,8 @@
+2010-12-10  Miguel de Icaza  <miguel at gnome.org>
+
+	[winforms] Use conditional attributes, not ifdefs to insert
+	conditional code
+
 2009-02-04  Jonathan Pobst  <monkey at jpobst.com>
 
 	* FlowLayout.cs: When laying out ToolStripItems, they should be
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms.Layout/ChangeLog b/mcs/class/Managed.Windows.Forms/System.Windows.Forms.Layout/ChangeLog.old
similarity index 100%
copy from mcs/class/Managed.Windows.Forms/System.Windows.Forms.Layout/ChangeLog
copy to mcs/class/Managed.Windows.Forms/System.Windows.Forms.Layout/ChangeLog.old
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/LayoutEngine.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms.Layout/LayoutEngine.cs
similarity index 100%
rename from mcs/class/Managed.Windows.Forms/System.Windows.Forms/LayoutEngine.cs
rename to mcs/class/Managed.Windows.Forms/System.Windows.Forms.Layout/LayoutEngine.cs
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms.Theming/Default/ChangeLog b/mcs/class/Managed.Windows.Forms/System.Windows.Forms.Theming/Default/ChangeLog
index b0c1652..82b9cfc 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms.Theming/Default/ChangeLog
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms.Theming/Default/ChangeLog
@@ -1,3 +1,7 @@
+2010-12-10  Thomas Goldstein  <stifu at free.fr>
+
+	[winforms] Small optimization
+
 2010-06-25  Carlos Alberto Cortez <calberto.cortez at gmail.com>
 
 	* TabControlPainter.cs: Use TabControl.Font instead of the values of
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms.Theming/Default/ChangeLog b/mcs/class/Managed.Windows.Forms/System.Windows.Forms.Theming/Default/ChangeLog.old
similarity index 100%
copy from mcs/class/Managed.Windows.Forms/System.Windows.Forms.Theming/Default/ChangeLog
copy to mcs/class/Managed.Windows.Forms/System.Windows.Forms.Theming/Default/ChangeLog.old
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms.Theming/Default/TabControlPainter.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms.Theming/Default/TabControlPainter.cs
index b7c3793..c770d85 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms.Theming/Default/TabControlPainter.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms.Theming/Default/TabControlPainter.cs
@@ -230,10 +230,7 @@ namespace System.Windows.Forms.Theming.Default
 		public Rectangle GetTabPanelRect (System.Windows.Forms.TabControl tab)
 		{	
 			// Offset the tab page (panel) from the top corner
-			Rectangle res = new Rectangle (tab.ClientRectangle.X,
-				tab.ClientRectangle.Y,
-				tab.ClientRectangle.Width,
-				tab.ClientRectangle.Height);
+			Rectangle res = tab.ClientRectangle;
 
 			if (tab.TabCount == 0)
 				return res;
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms.dll.sources b/mcs/class/Managed.Windows.Forms/System.Windows.Forms.dll.sources
index 21946d5..c1b379c 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms.dll.sources
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms.dll.sources
@@ -433,7 +433,6 @@ System.Windows.Forms/Label.cs
 System.Windows.Forms/LabelEditEventArgs.cs
 System.Windows.Forms/LabelEditEventHandler.cs
 System.Windows.Forms/LabelEditTextBox.cs
-System.Windows.Forms/LayoutEngine.cs
 System.Windows.Forms/LayoutEventArgs.cs
 System.Windows.Forms/LayoutEventHandler.cs
 System.Windows.Forms/LayoutSettings.cs
@@ -816,6 +815,7 @@ System.Windows.Forms.Layout/DefaultLayout.cs
 System.Windows.Forms.Layout/FlowLayout.cs
 System.Windows.Forms.Layout/TableLayout.cs
 System.Windows.Forms.Layout/TableLayoutSettingsTypeConverter.cs
+System.Windows.Forms.Layout/LayoutEngine.cs
 System.Windows.Forms.CarbonInternal/ApplicationHandler.cs
 System.Windows.Forms.CarbonInternal/ControlHandler.cs
 System.Windows.Forms.CarbonInternal/Cursor.cs
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/AccessibleObject.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/AccessibleObject.cs
index 11ef7db..9ba2f9a 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/AccessibleObject.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/AccessibleObject.cs
@@ -34,11 +34,7 @@ using System.Runtime.InteropServices;
 
 namespace System.Windows.Forms {
 	[ComVisible(true)]
-#if NET_2_0
 	public class AccessibleObject : StandardOleMarshalObject, IReflect, IAccessible {
-#else
-	public class AccessibleObject : MarshalByRefObject, IReflect, IAccessible {
-#endif
 		#region Private Variables
 		internal string		name;
 		internal string		value;
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/AccessibleRole.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/AccessibleRole.cs
index 4830d02..51ce883 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/AccessibleRole.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/AccessibleRole.cs
@@ -91,11 +91,8 @@ namespace System.Windows.Forms {
 		PageTabList	= 60,
 		Clock		= 61,
 		Default		= -1,
-#if NET_2_0
 		SplitButton	= 62,
 		IpAddress	= 63,
 		OutlineButton	= 64
-#endif
-
 	}
 }
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/AccessibleStates.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/AccessibleStates.cs
index 1d610b7..baae238 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/AccessibleStates.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/AccessibleStates.cs
@@ -62,12 +62,8 @@ namespace System.Windows.Forms {
 		AlertMedium	= 0x08000000,
 		AlertHigh	= 0x10000000,
 		Protected	= 0x20000000,
-#if NET_2_0
 		[Obsolete]
-#endif
 		Valid		= 0x3FFFFFFF,
-#if NET_2_0
 		HasPopup	= 0x40000000
-#endif
 	}
 }
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/AnchorStyles.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/AnchorStyles.cs
index 80c2170..b42e434 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/AnchorStyles.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/AnchorStyles.cs
@@ -30,9 +30,6 @@ using System.ComponentModel;
 
 namespace System.Windows.Forms {
 	[Flags]
-#if !NET_2_0
-	[Serializable]
-#endif
 	[Editor("System.Windows.Forms.Design.AnchorEditor, " + Consts.AssemblySystem_Design, typeof(System.Drawing.Design.UITypeEditor))]
 	public enum AnchorStyles {
 		None	= 0x00000000,
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Application.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Application.cs
index bfc3ee0..6ec93c8 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Application.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Application.cs
@@ -39,9 +39,7 @@ using System.IO;
 using System.Reflection;
 using System.Runtime.InteropServices;
 using System.Threading;
-#if NET_2_0
 using System.Text;
-#endif
 using System.Windows.Forms.VisualStyles;
 
 namespace System.Windows.Forms
@@ -148,10 +146,8 @@ namespace System.Windows.Forms
 		private static readonly ArrayList message_filters = new ArrayList();
 		private static readonly FormCollection forms = new FormCollection ();
 
-#if NET_2_0
 		private static bool use_wait_cursor;
 		private static ToolStrip keyboard_capture;
-#endif
 		private static VisualStyleState visual_style_state = VisualStyleState.ClientAndNonClientAreasEnabled;
 		static bool visual_styles_enabled;
 
@@ -160,19 +156,15 @@ namespace System.Windows.Forms
 			browser_embedded = false;
 		}
 
-#if NET_2_0
 		static Application ()
 		{
 			// Attempt to load UIA support for winforms
 			// UIA support requires .NET 2.0
 			InitializeUIAutomation ();
 		}
-#endif
 
 		#region Private Methods
 
-#if NET_2_0
-		
 		private static void InitializeUIAutomation ()
 		{
 			// Initialize the UIAutomationWinforms Global class,
@@ -210,7 +202,6 @@ namespace System.Windows.Forms
 				Console.Error.WriteLine ("Error setting up UIA: " + ex);
 			}
 		}
-#endif
 		
 		internal static void CloseForms (Thread thread)
 		{
@@ -434,7 +425,6 @@ namespace System.Windows.Forms
 			}
 		}
 
-#if NET_2_0
 		public static bool UseWaitCursor {
 			get {
 				return use_wait_cursor;
@@ -448,14 +438,8 @@ namespace System.Windows.Forms
 				}
 			}
 		}
-#endif
-		
-#if NET_2_0
-		public
-#else
-		internal
-#endif
-		static bool RenderWithVisualStyles {
+
+		public static bool RenderWithVisualStyles {
 			get {
 				if (VisualStyleInformation.IsSupportedByOS) {
 					if (!VisualStyleInformation.IsEnabledByUser)
@@ -471,12 +455,7 @@ namespace System.Windows.Forms
 			}
 		}
 
-#if NET_2_0
-		public 
-#else
-		internal
-#endif
-		static VisualStyleState VisualStyleState {
+		public static VisualStyleState VisualStyleState {
 			get { return Application.visual_style_state; }
 			set { Application.visual_style_state = value; }
 		}
@@ -508,13 +487,8 @@ namespace System.Windows.Forms
 			XplatUI.EnableThemes ();
 		}
 
-#if NET_2_0
 		[EditorBrowsable (EditorBrowsableState.Advanced)]
-		public
-#else
-		internal
-#endif
-		static bool FilterMessage (ref Message message)
+		public static bool FilterMessage (ref Message message)
 		{
 			lock (message_filters) {
 				for (int i = 0; i < message_filters.Count; i++) {
@@ -526,7 +500,6 @@ namespace System.Windows.Forms
 			return false;
 		}
 		
-#if NET_2_0
 		//
 		// If true, it uses GDI+, performance reasons were quoted
 		//
@@ -641,19 +614,12 @@ namespace System.Windows.Forms
 			Application.Exit ();
 			Process.Start (procInfo);
 		}
-#endif
 
 		public static void Exit ()
 		{
-#if NET_2_0
 			Exit (new CancelEventArgs ());
-#else
-			XplatUI.PostQuitMessage (0);
-			CloseForms (null);
-#endif
 		}
 
-#if NET_2_0
 		[EditorBrowsable (EditorBrowsableState.Advanced)]
 		public static void Exit (CancelEventArgs e)
 		{
@@ -677,7 +643,6 @@ namespace System.Windows.Forms
 
 			XplatUI.PostQuitMessage (0);
 		}
-#endif
 
 		public static void ExitThread()
 		{
@@ -742,31 +707,25 @@ namespace System.Windows.Forms
 			Run (new ApplicationContext (mainForm));
 		}
 
-#if NET_2_0
 		internal static void FirePreRun ()
 		{
 			EventHandler handler = PreRun;
 			if (handler != null)
 				handler (null, EventArgs.Empty);
 		}
-#endif
 
 		public static void Run (ApplicationContext context)
 		{
-#if NET_2_0
 			// If a sync context hasn't been created by now, create
 			// a default one
 			if (SynchronizationContext.Current == null)
 				SynchronizationContext.SetSynchronizationContext (new SynchronizationContext ());
-#endif
 				
 			RunLoop (false, context);
 			
-#if NET_2_0
 			// Reset the sync context back to the default
 			if (SynchronizationContext.Current is WindowsFormsSynchronizationContext)
 				WindowsFormsSynchronizationContext.Uninstall ();
-#endif
 		}
 
 		private static void DisableFormsForModalLoop (Queue toplevels, ApplicationContext context)
@@ -906,7 +865,6 @@ namespace System.Windows.Forms
 					Control c;
 					c = Control.FromHandle(msg.hwnd);
 
-#if NET_2_0
 					// If we have a control with keyboard capture (usually a *Strip)
 					// give it the message, and then drop the message
 					if (keyboard_capture != null) {
@@ -935,14 +893,13 @@ namespace System.Windows.Forms
 								break;
 						}
 					}
-#endif
 
 					if (((c != null) && c.PreProcessControlMessageInternal (ref m) != PreProcessControlState.MessageProcessed) ||
 						(c == null)) {
 						goto default;
 					} 
 					break;
-#if NET_2_0
+
 				case Msg.WM_LBUTTONDOWN:
 				case Msg.WM_MBUTTONDOWN:
 				case Msg.WM_RBUTTONDOWN:
@@ -975,7 +932,7 @@ namespace System.Windows.Forms
 					}
 					
 					goto default;
-#endif
+
 				case Msg.WM_QUIT:
 					quit = true; // make sure we exit
 					break;
@@ -1055,7 +1012,6 @@ namespace System.Windows.Forms
 		public static event EventHandler ThreadExit;
 		public static event ThreadExceptionEventHandler ThreadException;
 		
-#if NET_2_0
 		// These are used externally by the UIA framework
 		internal static event EventHandler FormAdded;
 		internal static event EventHandler PreRun;
@@ -1065,26 +1021,21 @@ namespace System.Windows.Forms
 
 		[EditorBrowsable (EditorBrowsableState.Advanced)]
 		public static event EventHandler LeaveThreadModal;
-#endif
 
 		#endregion	// Events
 
 		#region Public Delegates
 
-#if NET_2_0
 		[EditorBrowsable (EditorBrowsableState.Advanced)]
 		public delegate bool MessageLoopCallback ();
-#endif
 
 		#endregion
 		
 		#region Internal Properties
-#if NET_2_0
 		internal static ToolStrip KeyboardCapture {
 			get { return keyboard_capture; }
 			set { keyboard_capture = value; }
 		}
-#endif
 
 		internal static bool VisualStylesEnabled {
 			get { return visual_styles_enabled; }
@@ -1097,7 +1048,6 @@ namespace System.Windows.Forms
 		{
 			lock (forms)
 				forms.Add (f);
-#if NET_2_0
 			// Signal that a Form has been added to this
 			// Application. Used by UIA to detect new Forms that
 			// need a11y support. This event may be fired even if
@@ -1105,7 +1055,6 @@ namespace System.Windows.Forms
 			// account for that when handling this signal.
 			if (FormAdded != null)
 				FormAdded (f, null);
-#endif
 		}
 		
 		internal static void RemoveForm (Form f)
@@ -1114,7 +1063,6 @@ namespace System.Windows.Forms
 				forms.Remove (f);
 		}
 
-#if NET_2_0
 		private static bool ControlOnToolStrip (Control c)
 		{
 			Control p = c.Parent;
@@ -1128,7 +1076,6 @@ namespace System.Windows.Forms
 			
 			return false;
 		}
-#endif
 
 		// Takes a starting path, appends company name, product name, and
 		// product version.  If the directory doesn't exist, create it
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ApplicationContext.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ApplicationContext.cs
index c27eadc..49254c1 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ApplicationContext.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ApplicationContext.cs
@@ -26,16 +26,11 @@
 using System.ComponentModel;
 
 namespace System.Windows.Forms {
-	public class ApplicationContext
-#if NET_2_0
-		: IDisposable
-#endif
+	public class ApplicationContext : IDisposable
 	{
 		#region Local Variables
 		Form main_form;
-#if NET_2_0
 		object tag;
-#endif
 		bool thread_exit_raised;
 
 		#endregion	// Local Variables
@@ -74,7 +69,6 @@ namespace System.Windows.Forms {
 			}
 		}
 
-#if NET_2_0
 		[BindableAttribute (true)] 
 		[DefaultValue (null)]
 		[LocalizableAttribute (false)] 
@@ -83,7 +77,6 @@ namespace System.Windows.Forms {
 			get { return tag; }
 			set { tag = value; }
 		}
-#endif
 		#endregion	// Public Instance Properties
 
 		#region Public Instance Methods
@@ -100,9 +93,7 @@ namespace System.Windows.Forms {
 		#region Protected Instance Methods
 		protected virtual void Dispose(bool disposing) {
 			MainForm = null;
-#if NET_2_0
 			tag = null;
-#endif
 		}
 
 		protected virtual void ExitThreadCore() {
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ArrangeDirection.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ArrangeDirection.cs
index dc065c7..a0d838b 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ArrangeDirection.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ArrangeDirection.cs
@@ -29,9 +29,7 @@
 using System.Runtime.InteropServices;
 
 namespace System.Windows.Forms {
-#if NET_2_0
 	[Flags]
-#endif
 	[ComVisible(true)]
 	public enum ArrangeDirection {
 		Left		= 0,
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ArrangeStartingPosition.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ArrangeStartingPosition.cs
index 9848df6..cc96444 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ArrangeStartingPosition.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ArrangeStartingPosition.cs
@@ -27,9 +27,7 @@
 // COMPLETE
 
 namespace System.Windows.Forms {
-#if NET_2_0
 	[Flags]
-#endif
 	public enum ArrangeStartingPosition {
 		BottomLeft	= 0,
 		BottomRight	= 1,
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ArrowDirection.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ArrowDirection.cs
index a2c4eb1..bdf861b 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ArrowDirection.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ArrowDirection.cs
@@ -27,7 +27,6 @@
 //
 
 
-#if NET_2_0
 namespace System.Windows.Forms
 {
 	public enum ArrowDirection
@@ -38,4 +37,3 @@ namespace System.Windows.Forms
 		Down = 17
 	}
 }
-#endif
\ No newline at end of file
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/AsyncMethodData.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/AsyncMethodData.cs
index 7b61ebf..cbfeea4 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/AsyncMethodData.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/AsyncMethodData.cs
@@ -34,11 +34,7 @@ namespace System.Windows.Forms {
 		public Delegate Method;
 		public object [] Args;
 		public AsyncMethodResult Result;
-#if NET_2_0
 		public ExecutionContext Context;
-#else
-		public CompressedStack Stack;
-#endif
 	}
 
 }
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/AutoCompleteMode.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/AutoCompleteMode.cs
index 4c9f99d..825aebb 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/AutoCompleteMode.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/AutoCompleteMode.cs
@@ -26,8 +26,6 @@
 //	Jonathan Pobst (monkey at jpobst.com)
 //
 
-
-#if NET_2_0
 namespace System.Windows.Forms
 {
 	public enum AutoCompleteMode
@@ -38,4 +36,3 @@ namespace System.Windows.Forms
 		SuggestAppend = 3
 	}
 }
-#endif
\ No newline at end of file
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/AutoCompleteSource.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/AutoCompleteSource.cs
index e7f539a..ba42a95 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/AutoCompleteSource.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/AutoCompleteSource.cs
@@ -27,7 +27,6 @@
 //
 
 
-#if NET_2_0
 namespace System.Windows.Forms
 {
 	public enum AutoCompleteSource
@@ -43,4 +42,3 @@ namespace System.Windows.Forms
 		ListItems = 256
 	}
 }
-#endif
\ No newline at end of file
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/AutoCompleteStringCollection.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/AutoCompleteStringCollection.cs
index 520a3dc..4e488dd 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/AutoCompleteStringCollection.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/AutoCompleteStringCollection.cs
@@ -25,7 +25,6 @@
 // Author:
 //      Daniel Nauck    (dna(at)mono-project(dot)de)
 
-#if NET_2_0
 
 using System;
 using System.Collections;
@@ -202,4 +201,3 @@ namespace System.Windows.Forms
 		#endregion
 	}
 }
-#endif
\ No newline at end of file
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/AutoScaleMode.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/AutoScaleMode.cs
index 0ceefc1..b7ac0a6 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/AutoScaleMode.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/AutoScaleMode.cs
@@ -24,9 +24,6 @@
 //
 //
 
-// COMPLETE
-
-#if NET_2_0
 namespace System.Windows.Forms {
 	public enum AutoScaleMode {
 		None	= 0,
@@ -35,4 +32,3 @@ namespace System.Windows.Forms {
 		Inherit	= 3
 	}
 }
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/AutoSizeMode.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/AutoSizeMode.cs
index 88a1171..ba5a395 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/AutoSizeMode.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/AutoSizeMode.cs
@@ -27,7 +27,6 @@
 //
 
 
-#if NET_2_0
 namespace System.Windows.Forms
 {
 	public enum AutoSizeMode
@@ -36,4 +35,3 @@ namespace System.Windows.Forms
 		GrowOnly = 1
 	}
 }
-#endif
\ No newline at end of file
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/AutoValidate.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/AutoValidate.cs
index 8d05f31..9084e0b 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/AutoValidate.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/AutoValidate.cs
@@ -27,7 +27,6 @@
 //
 
 
-#if NET_2_0
 namespace System.Windows.Forms
 {
 	public enum AutoValidate
@@ -38,4 +37,3 @@ namespace System.Windows.Forms
 		EnableAllowFocusChange = 2
 	}
 }
-#endif
\ No newline at end of file
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/AxHost.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/AxHost.cs
index 7fa52bc..0021db5 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/AxHost.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/AxHost.cs
@@ -37,10 +37,8 @@ namespace System.Windows.Forms {
 	[Designer("System.Windows.Forms.Design.AxHostDesigner, " + Consts.AssemblySystem_Design, "System.ComponentModel.Design.IDesigner")]
 	[DesignTimeVisible(false)]
 	[ToolboxItem(false)]
-#if NET_2_0
 	[ClassInterface (ClassInterfaceType.AutoDispatch)]
 	[ComVisible (true)]
-#endif
 	public abstract class AxHost : Control, ISupportInitialize, ICustomTypeDescriptor {
 		#region AxHost Subclasses
 		#region AxHost.ActiveXInvokeKind Enum
@@ -52,9 +50,7 @@ namespace System.Windows.Forms {
 		#endregion	// AxHost.ActiveXInvokeKind Enum
 
 		#region AxHost.AxComponentEditor Class
-#if NET_2_0
 		[ComVisible (false)]
-#endif
 		public class AxComponentEditor : System.Windows.Forms.Design.WindowsFormsComponentEditor {
 			public AxComponentEditor ()
 			{
@@ -85,9 +81,6 @@ namespace System.Windows.Forms {
 		#endregion AxHost.ClsidAttribute
 		
 		#region AxHost.ConnectionPointCookie
-#if !NET_2_0
-		[ComVisible(false)]
-#endif
 		public class ConnectionPointCookie {
 			public ConnectionPointCookie (object source, object sink, Type eventInterface)
 			{
@@ -108,12 +101,10 @@ namespace System.Windows.Forms {
 		
 		#region AxHost.InvalidActiveXStateException  Class
 		public class InvalidActiveXStateException : Exception {
-#if NET_2_0
 			public InvalidActiveXStateException ()
 			{
 				throw new NotImplementedException("COM/ActiveX support is not implemented");
 			}
-#endif
 
 			public InvalidActiveXStateException (string name, ActiveXInvokeKind kind)
 			{
@@ -136,12 +127,7 @@ namespace System.Windows.Forms {
 				//throw new NotImplementedException("COM/ActiveX support is not implemented");
 			}
 
-#if NET_2_0
-			protected
-#else
-			private
-#endif
-			State (SerializationInfo info, StreamingContext context)
+			protected State (SerializationInfo info, StreamingContext context)
 			{
 			}
 
@@ -224,9 +210,7 @@ namespace System.Windows.Forms {
 		
 		[Browsable (false)]
 		[EditorBrowsable (EditorBrowsableState.Never)]
-#if NET_2_0
 		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
-#endif
 		public override Image BackgroundImage {
 			get {
 				throw new NotImplementedException("COM/ActiveX support is not implemented");
@@ -237,7 +221,6 @@ namespace System.Windows.Forms {
 			}
 		}
 
-#if NET_2_0
 		[Browsable (false)]
 		[EditorBrowsable (EditorBrowsableState.Never)]
 		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
@@ -250,13 +233,10 @@ namespace System.Windows.Forms {
 				throw new NotImplementedException("COM/ActiveX support is not implemented");
 			}
 		}
-#endif
 		
 		[Browsable (false)]
 		[EditorBrowsable (EditorBrowsableState.Advanced)]
-#if NET_2_0
 		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
-#endif
 		public ContainerControl ContainingControl {
 			get {
 				throw new NotImplementedException("COM/ActiveX support is not implemented");
@@ -345,7 +325,6 @@ namespace System.Windows.Forms {
 			}
 		}
 
-#if NET_2_0
 		[Browsable (false)]
 		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
 		[EditorBrowsable (EditorBrowsableState.Never)]
@@ -357,7 +336,6 @@ namespace System.Windows.Forms {
 				throw new NotImplementedException("COM/ActiveX support is not implemented");
 			}
 		}
-#endif
 		
 		[Browsable (false)]
 		[DefaultValue (null)]
@@ -569,12 +547,10 @@ namespace System.Windows.Forms {
 			throw new NotImplementedException("COM/ActiveX support is not implemented");
 		}
 
-#if NET_2_0
 		protected virtual object CreateInstanceCore (Guid clsid)
 		{
 			throw new NotImplementedException("COM/ActiveX support is not implemented");
 		}
-#endif
 
 		[EditorBrowsable (EditorBrowsableState.Advanced)]
 		protected virtual void CreateSink ()
@@ -598,7 +574,6 @@ namespace System.Windows.Forms {
 			throw new NotImplementedException("COM/ActiveX support is not implemented");
 		}
 
-#if NET_2_0
 		[EditorBrowsable (EditorBrowsableState.Never)]
 		public new void DrawToBitmap (Bitmap bitmap, Rectangle targetBounds)
 		{
@@ -610,7 +585,6 @@ namespace System.Windows.Forms {
 		{
 			throw new NotImplementedException("COM/ActiveX support is not implemented");
 		}
-#endif
 
 		protected override bool IsInputChar (char charCode)
 		{
@@ -978,7 +952,6 @@ namespace System.Windows.Forms {
 			remove { base.StyleChanged -= value; }
 		}
 
-#if NET_2_0
 		[Browsable (false)]
 		[EditorBrowsable (EditorBrowsableState.Never)]
 		public new event EventHandler BackgroundImageLayoutChanged {
@@ -1002,21 +975,6 @@ namespace System.Windows.Forms {
 			add { Events.AddHandler (MouseDoubleClickEvent, value); }
 			remove { Events.RemoveHandler (MouseDoubleClickEvent, value); }
 		}
-#else
-		[Browsable (false)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public new event EventHandler TabIndexChanged {
-			add { base.TabIndexChanged += value; }
-			remove { base.TabIndexChanged -= value; }
-		}
-
-		[Browsable (false)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public new event EventHandler TabStopChanged {
-			add { base.TabStopChanged += value; }
-			remove { base.TabStopChanged -= value; }
-		}
-#endif
 
 		[Browsable (false)]
 		[EditorBrowsable (EditorBrowsableState.Never)]
@@ -1027,9 +985,6 @@ namespace System.Windows.Forms {
 		#endregion	// Events
 
 		#region Delegates
-#if ONLY_1_1
-		[Serializable]
-#endif
 		protected delegate void AboutBoxDelegate ();
 		#endregion	// Delegates
 
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BatteryChargeStatus.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BatteryChargeStatus.cs
index ab9c706..664ba4c 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BatteryChargeStatus.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BatteryChargeStatus.cs
@@ -27,7 +27,6 @@
 //
 
 
-#if NET_2_0
 namespace System.Windows.Forms
 {
 	[Flags]
@@ -41,4 +40,3 @@ namespace System.Windows.Forms
 		Unknown = 255
 	}
 }
-#endif
\ No newline at end of file
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Binding.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Binding.cs
index 86db66e..468f30e 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Binding.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Binding.cs
@@ -40,11 +40,7 @@ namespace System.Windows.Forms {
 		private bool checked_isnull;
 
 		private BindingMemberInfo binding_member_info;
-#if NET_2_0
 		private IBindableComponent control;
-#else
-		private Control control;
-#endif
 
 		private BindingManagerBase manager;
 		private PropertyDescriptor control_property;
@@ -53,7 +49,6 @@ namespace System.Windows.Forms {
 		private object data;
 		private Type data_type;
 
-#if NET_2_0
 		private DataSourceUpdateMode datasource_update_mode;
 		private ControlUpdateMode control_update_mode;
 		private object datasource_null_value = Convert.DBNull;
@@ -61,9 +56,7 @@ namespace System.Windows.Forms {
 		private IFormatProvider format_info;
 		private string format_string;
 		private bool formatting_enabled;
-#endif
 		#region Public Constructors
-#if NET_2_0
 		public Binding (string propertyName, object dataSource, string dataMember) 
 			: this (propertyName, dataSource, dataMember, false, DataSourceUpdateMode.OnValidation, null, string.Empty, null)
 		{
@@ -100,26 +93,16 @@ namespace System.Windows.Forms {
 			format_string = formatString;
 			format_info = formatInfo;
 		}
-#else
-		public Binding (string propertyName, object dataSource, string dataMember)
-		{
-			property_name = propertyName;
-			data_source = dataSource;
-			data_member = dataMember;
-			binding_member_info = new BindingMemberInfo (dataMember);
-		}		
-#endif
 		#endregion	// Public Constructors
 
 		#region Public Instance Properties
-#if NET_2_0
 		[DefaultValue (null)]
 		public IBindableComponent BindableComponent {
 			get {
 				return control;
 			}
 		}
-#endif
+
 		public BindingManagerBase BindingManagerBase {
 			get {
 				return manager;
@@ -135,15 +118,10 @@ namespace System.Windows.Forms {
 		[DefaultValue (null)]
 		public Control Control {
 			get {
-#if NET_2_0
 				return control as Control;
-#else
-				return control;
-#endif
 			}
 		}
 
-#if NET_2_0
 		[DefaultValue (ControlUpdateMode.OnPropertyChanged)]
 		public ControlUpdateMode ControlUpdateMode {
 			get {
@@ -153,7 +131,6 @@ namespace System.Windows.Forms {
 				control_update_mode = value;
 			}
 		}
-#endif
 
 		public object DataSource {
 			get {
@@ -161,7 +138,6 @@ namespace System.Windows.Forms {
 			}
 		}
 
-#if NET_2_0
 		[DefaultValue (DataSourceUpdateMode.OnValidation)]
 		public DataSourceUpdateMode DataSourceUpdateMode {
 			get {
@@ -225,7 +201,6 @@ namespace System.Windows.Forms {
 					PushData ();
 			}
 		}
-#endif
 
 		public bool IsBinding {
 			get {
@@ -236,7 +211,6 @@ namespace System.Windows.Forms {
 			}
 		}
 
-#if NET_2_0
 		public object NullValue {
 			get {
 				return null_value;
@@ -250,7 +224,6 @@ namespace System.Windows.Forms {
 					PushData ();
 			}
 		}
-#endif
 
 		[DefaultValue ("")]
 		public string PropertyName {
@@ -260,7 +233,6 @@ namespace System.Windows.Forms {
 		}
 		#endregion	// Public Instance Properties
 
-#if NET_2_0
 		public void ReadValue ()
 		{
 			PushData (true);
@@ -270,16 +242,13 @@ namespace System.Windows.Forms {
 		{
 			PullData (true);
 		}
-#endif
 
 		#region Protected Instance Methods
-#if NET_2_0
 		protected virtual void OnBindingComplete (BindingCompleteEventArgs e)
 		{
 			if (BindingComplete != null)
 				BindingComplete (this, e);
 		}
-#endif
 
 		protected virtual void OnFormat (ConvertEventArgs cevent)
 		{
@@ -298,11 +267,7 @@ namespace System.Windows.Forms {
 			get { return data_member; }
 		}
 		
-#if NET_2_0
 		internal void SetControl (IBindableComponent control)
-#else
-		internal void SetControl (Control control)
-#endif
 		{
 			if (control == this.control)
 				return;
@@ -323,11 +288,9 @@ namespace System.Windows.Forms {
 					ctrl.HandleCreated += new EventHandler (ControlCreatedHandler);
 			}
 
-#if NET_2_0
 			EventDescriptor prop_changed_event = GetPropertyChangedEvent (control, property_name);
 			if (prop_changed_event != null)
 				prop_changed_event.AddEventHandler (control, new EventHandler (ControlPropertyChangedHandler));
-#endif
 			this.control = control;
 			UpdateIsBinding ();
 		}
@@ -377,33 +340,25 @@ namespace System.Windows.Forms {
 		{
 			if (IsBinding == false || manager.Current == null)
 				return true;
-#if NET_2_0
 			if (!force && datasource_update_mode == DataSourceUpdateMode.Never)
 				return true;
-#endif
 
 			data = control_property.GetValue (control);
-#if NET_2_0
 			if (data == null)
 				data = datasource_null_value;
-#endif
 
 			try {
 				SetPropertyValue (data);
 			} catch (Exception e) {
-#if NET_2_0
 				if (formatting_enabled) {
 					FireBindingComplete (BindingCompleteContext.DataSourceUpdate, e, e.Message);
 					return false;
 				}
-#endif
 				throw e;
 			}
 
-#if NET_2_0
 			if (formatting_enabled)
 				FireBindingComplete (BindingCompleteContext.DataSourceUpdate, null, null);
-#endif
 			return true;
 		}
 
@@ -416,10 +371,8 @@ namespace System.Windows.Forms {
 		{
 			if (manager == null || manager.IsSuspended || manager.Count == 0 || manager.Position == -1)
 				return;
-#if NET_2_0
 			if (!force && control_update_mode == ControlUpdateMode.Never)
 				return;
-#endif
 
 			if (is_null_desc != null) {
 				bool is_null = (bool) is_null_desc.GetValue (manager.Current);
@@ -436,38 +389,28 @@ namespace System.Windows.Forms {
 				data = pd.GetValue (manager.Current);
 			}
 
-#if NET_2_0
 			if ((data == null || data == DBNull.Value) && null_value != null)
 				data = null_value;
-#endif
 
 			try {
 				data = FormatData (data);
 				SetControlValue (data);
 			} catch (Exception e) {
-#if NET_2_0
 				if (formatting_enabled) {
 					FireBindingComplete (BindingCompleteContext.ControlUpdate, e, e.Message);
 					return;
 				}
-#endif
 				throw e;
 			}
 
-#if NET_2_0
 			if (formatting_enabled)
 				FireBindingComplete (BindingCompleteContext.ControlUpdate, null, null);
-#endif
 		}
 
 		internal void UpdateIsBinding ()
 		{
 			is_binding = false;
-#if NET_2_0
 			if (control == null || (control is Control && !((Control)control).IsHandleCreated))
-#else
-			if (control == null && !control.IsHandleCreated)
-#endif
 				return;
 
 			is_binding = true;
@@ -490,10 +433,8 @@ namespace System.Windows.Forms {
 
 		private void ControlValidatingHandler (object sender, CancelEventArgs e)
 		{
-#if NET_2_0
 			if (datasource_update_mode != DataSourceUpdateMode.OnValidation)
 				return;
-#endif
 
 			bool ok = true;
 			// If the data doesn't seem to be valid (it can't be converted,
@@ -543,7 +484,6 @@ namespace System.Windows.Forms {
 			PushData ();
 		}
 
-#if NET_2_0
 		void ControlPropertyChangedHandler (object o, EventArgs args)
 		{
 			if (datasource_update_mode != DataSourceUpdateMode.OnPropertyChanged)
@@ -551,7 +491,6 @@ namespace System.Windows.Forms {
 
 			PullData ();
 		}
-#endif
 
 		private object ParseData (object data, Type data_type)
 		{
@@ -562,13 +501,11 @@ namespace System.Windows.Forms {
 				return e.Value;
 			if (e.Value == Convert.DBNull)
 				return e.Value;
-#if NET_2_0
 			if (e.Value == null) {
 				bool nullable = data_type.IsGenericType && !data_type.ContainsGenericParameters &&
 					data_type.GetGenericTypeDefinition () == typeof (Nullable<>);
 				return data_type.IsValueType && !nullable ? Convert.DBNull : null;
 			}
-#endif
 
 			return ConvertData (e.Value, data_type);
 		}
@@ -581,7 +518,6 @@ namespace System.Windows.Forms {
 			if (data_type.IsInstanceOfType (e.Value))
 				return e.Value;
 
-#if NET_2_0
 			if (formatting_enabled) {
 				if ((e.Value == null || e.Value == Convert.DBNull) && null_value != null)
 					return null_value;
@@ -591,7 +527,7 @@ namespace System.Windows.Forms {
 					return formattable.ToString (format_string, format_info);
 				}
 			}
-#endif
+
 			if (e.Value == null && data_type == typeof (object))
 				return Convert.DBNull;
 
@@ -619,7 +555,6 @@ namespace System.Windows.Forms {
 
 			return null;
 		}
-#if NET_2_0
 		void FireBindingComplete (BindingCompleteContext context, Exception exc, string error_message)
 		{
 			BindingCompleteEventArgs args = new BindingCompleteEventArgs (this, 
@@ -632,14 +567,11 @@ namespace System.Windows.Forms {
 
 			OnBindingComplete (args);
 		}
-#endif
 
 		#region Events
 		public event ConvertEventHandler Format;
 		public event ConvertEventHandler Parse;
-#if NET_2_0
 		public event BindingCompleteEventHandler BindingComplete;
-#endif
 		#endregion	// Events
 	}
 }
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingCompleteContext.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingCompleteContext.cs
index b017e9f..3ebad33 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingCompleteContext.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingCompleteContext.cs
@@ -27,7 +27,6 @@
 //
 
 
-#if NET_2_0
 namespace System.Windows.Forms
 {
 	public enum BindingCompleteContext
@@ -36,4 +35,3 @@ namespace System.Windows.Forms
 		DataSourceUpdate = 1
 	}
 }
-#endif
\ No newline at end of file
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingCompleteEventArgs.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingCompleteEventArgs.cs
index dd2acfc..37f18f4 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingCompleteEventArgs.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingCompleteEventArgs.cs
@@ -26,8 +26,6 @@
 //	Jonathan Pobst (monkey at jpobst.com)
 //
 
-#if NET_2_0
-
 using System.ComponentModel;
 
 namespace System.Windows.Forms
@@ -100,4 +98,3 @@ namespace System.Windows.Forms
 		}
 	}
 }
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingCompleteEventHandler.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingCompleteEventHandler.cs
index 8823f56..3e0a310 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingCompleteEventHandler.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingCompleteEventHandler.cs
@@ -26,9 +26,7 @@
 //	Jonathan Pobst (monkey at jpobst.com)
 //
 
-#if NET_2_0
 namespace System.Windows.Forms
 {
 	public delegate void BindingCompleteEventHandler(object sender, BindingCompleteEventArgs e);
 }
-#endif
\ No newline at end of file
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingCompleteState.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingCompleteState.cs
index 685bb19..cd565de 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingCompleteState.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingCompleteState.cs
@@ -27,7 +27,6 @@
 //
 
 
-#if NET_2_0
 namespace System.Windows.Forms
 {
 	public enum BindingCompleteState
@@ -37,4 +36,3 @@ namespace System.Windows.Forms
 		Exception = 2
 	}
 }
-#endif
\ No newline at end of file
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingContext.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingContext.cs
index 2823f19..a66a2e3 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingContext.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingContext.cs
@@ -83,7 +83,6 @@ namespace System.Windows.Forms {
 				if (dataMember == null)
 					dataMember = String.Empty;
 
-#if NET_2_0
 				ICurrencyManagerProvider cm_provider = dataSource as ICurrencyManagerProvider;
 				if (cm_provider != null) {
 					if (dataMember.Length == 0)
@@ -91,7 +90,6 @@ namespace System.Windows.Forms {
 
 					return cm_provider.GetRelatedCurrencyManager (dataMember);
 				}
-#endif
 
 				HashKey key = new HashKey (dataSource, dataMember);
 				BindingManagerBase res = managers [key] as BindingManagerBase;
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingManagerBase.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingManagerBase.cs
index a3c32ac..245f8d4 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingManagerBase.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingManagerBase.cs
@@ -46,9 +46,7 @@ namespace System.Windows.Forms
 		#region Protected Instance Fields
 		protected EventHandler onCurrentChangedHandler;
 		protected EventHandler onPositionChangedHandler;
-#if NET_2_0
 		internal EventHandler onCurrentItemChangedHandler;
-#endif
 		#endregion	// Protected Instance Fields
 
 		#region Public Instance Properties
@@ -69,13 +67,11 @@ namespace System.Windows.Forms
 			get;
 		}
 
-#if NET_2_0
 		public bool IsBindingSuspended {
 			get {
 				return IsSuspended;
 			}
 		}
-#endif
 
 		public abstract int Position {
 			get; set;
@@ -89,7 +85,6 @@ namespace System.Windows.Forms
 
 		public abstract void EndCurrentEdit();
 
-#if NET_2_0
 		public virtual PropertyDescriptorCollection GetItemProperties()
 		{
 			return GetItemPropertiesInternal ();
@@ -99,9 +94,6 @@ namespace System.Windows.Forms
 		{
 			throw new NotImplementedException ();
 		}
-#else
-		public abstract PropertyDescriptorCollection GetItemProperties();
-#endif
 
 		public abstract void RemoveAt(int index);
 
@@ -164,7 +156,6 @@ namespace System.Windows.Forms
 		}
 
 
-#if NET_2_0
 		protected void OnBindingComplete (BindingCompleteEventArgs args)
 		{
 			if (BindingComplete != null)
@@ -178,7 +169,6 @@ namespace System.Windows.Forms
 			if (DataError != null)
 				DataError (this, new BindingManagerDataErrorEventArgs (e));
 		}
-#endif
 
 		protected abstract void UpdateIsBinding();
 		#endregion	// Protected Instance Methods
@@ -201,7 +191,6 @@ namespace System.Windows.Forms
 			remove { onPositionChangedHandler -= value; }
 		}
 
-#if NET_2_0
 		public event EventHandler CurrentItemChanged {
 			add { onCurrentItemChangedHandler += value; }
 			remove { onCurrentItemChangedHandler -= value; }
@@ -209,7 +198,6 @@ namespace System.Windows.Forms
 
 		public event BindingCompleteEventHandler BindingComplete;
 		public event BindingManagerDataErrorEventHandler DataError;
-#endif
 		#endregion	// Events
 	}
 }
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingManagerDataErrorEventArgs.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingManagerDataErrorEventArgs.cs
index f7081c2..5ae3d2a 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingManagerDataErrorEventArgs.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingManagerDataErrorEventArgs.cs
@@ -26,7 +26,6 @@
 //	Jonathan Pobst (monkey at jpobst.com)
 //
 
-#if NET_2_0
 namespace System.Windows.Forms
 {
 	public class BindingManagerDataErrorEventArgs : EventArgs
@@ -48,4 +47,3 @@ namespace System.Windows.Forms
 		#endregion	// Public Instance Properties
 	}
 }
-#endif
\ No newline at end of file
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingManagerDataErrorEventHandler.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingManagerDataErrorEventHandler.cs
index ee8acc2..424fd8a 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingManagerDataErrorEventHandler.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingManagerDataErrorEventHandler.cs
@@ -26,9 +26,7 @@
 //	Jonathan Pobst (monkey at jpobst.com)
 //
 
-#if NET_2_0
 namespace System.Windows.Forms
 {
 	public delegate void BindingManagerDataErrorEventHandler(object sender, BindingManagerDataErrorEventArgs e);
 }
-#endif
\ No newline at end of file
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingMemberInfo.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingMemberInfo.cs
index 37205ad..9deb4b6 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingMemberInfo.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingMemberInfo.cs
@@ -91,7 +91,6 @@ namespace System.Windows.Forms {
 		#endregion	// Public Instance Methods
 
 		#region Public Static Methods
-#if NET_2_0
 		public static bool operator == (BindingMemberInfo a, BindingMemberInfo b)
 		{
 			return (a.Equals (b));
@@ -101,7 +100,6 @@ namespace System.Windows.Forms {
 		{
 			return !(a.Equals (b));
 		}
-#endif
 		#endregion	// Public Static Methods
 
 	}
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingNavigator.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingNavigator.cs
index b7e83c2..256af69 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingNavigator.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingNavigator.cs
@@ -24,8 +24,6 @@
 //  Alan McGovern alan.mcgovern at gmail.com
 //
 
-#if NET_2_0
-
 using System;
 using System.Collections.Generic;
 using System.Text;
@@ -488,5 +486,3 @@ namespace System.Windows.Forms
 		#endregion
 	}
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingSource.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingSource.cs
index c8c9d28..09dc0b6 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingSource.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingSource.cs
@@ -20,8 +20,6 @@
 // Copyright (c) 2007 Novell, Inc.
 //
 
-#if NET_2_0
-
 using System.ComponentModel;
 using System.Collections;
 using System.Collections.Generic;
@@ -1071,5 +1069,3 @@ namespace System.Windows.Forms {
 		}
 	}
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingsCollection.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingsCollection.cs
index d9a82c4..c84e65a 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingsCollection.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/BindingsCollection.cs
@@ -70,9 +70,7 @@ namespace System.Windows.Forms {
 		protected virtual void AddCore (Binding dataBinding) 
 		{
 			CollectionChangeEventArgs args = new CollectionChangeEventArgs (CollectionChangeAction.Add, dataBinding);
-#if NET_2_0
 			OnCollectionChanging (args);
-#endif
 			base.List.Add(dataBinding);
 			OnCollectionChanged (args);
 		}
@@ -84,9 +82,7 @@ namespace System.Windows.Forms {
 		protected virtual void ClearCore() 
 		{
 			CollectionChangeEventArgs args = new CollectionChangeEventArgs(CollectionChangeAction.Refresh, null);
-#if NET_2_0
 			OnCollectionChanging (args);
-#endif
 			base.List.Clear();
 			OnCollectionChanged (args);
 		}
@@ -95,13 +91,11 @@ namespace System.Windows.Forms {
 			if (CollectionChanged!=null) CollectionChanged(this, ccevent);
 		}
 
-#if NET_2_0
 		protected virtual void OnCollectionChanging (CollectionChangeEventArgs e)
 		{
 			if (CollectionChanging != null)
 				CollectionChanging (this, e);
 		}
-#endif
 
 		protected internal void Remove(Binding binding) {
 			RemoveCore(binding);
@@ -115,9 +109,7 @@ namespace System.Windows.Forms {
 		protected virtual void RemoveCore(Binding dataBinding) 
 		{
 			CollectionChangeEventArgs args = new CollectionChangeEventArgs(CollectionChangeAction.Remove, dataBinding);
-#if NET_2_0
 			OnCollectionChanging (args);
-#endif
 			base.List.Remove(dataBinding);
 			OnCollectionChanged (args);
 		}
@@ -138,9 +130,7 @@ namespace System.Windows.Forms {
 
 		#region Events
 		public event CollectionChangeEventHandler	CollectionChanged;
-#if NET_2_0
 		public event CollectionChangeEventHandler	CollectionChanging;
-#endif
 		#endregion	// Events
 	}
 }
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Button.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Button.cs
index de8a80c..dc640e8 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Button.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Button.cs
@@ -30,12 +30,10 @@ using System.Drawing.Text;
 using System.Runtime.InteropServices;
 
 namespace System.Windows.Forms {
-#if NET_2_0
 	[ClassInterface (ClassInterfaceType.AutoDispatch)]
 	[ComVisible (true)]
 	[Designer ("System.Windows.Forms.Design.ButtonBaseDesigner, " + Consts.AssemblySystem_Design,
 		   "System.ComponentModel.Design.IDesigner")]
-#endif
 	public class Button : ButtonBase, IButtonControl {
 		#region Local variables
 		DialogResult	dialog_result;
@@ -50,7 +48,6 @@ namespace System.Windows.Forms {
 		#endregion	// Public Constructors
 
 		#region Public Properties
-#if NET_2_0
 		[Browsable (true)]
 		[Localizable (true)]
 		[DefaultValue (AutoSizeMode.GrowOnly)]
@@ -59,7 +56,6 @@ namespace System.Windows.Forms {
 			get { return base.GetAutoSizeMode (); }
 			set { base.SetAutoSizeMode (value); }
 		}
-#endif
 
 		[DefaultValue (DialogResult.None)]
 		[MWFCategory("Behavior")]
@@ -106,7 +102,6 @@ namespace System.Windows.Forms {
 			base.OnClick (e);
 		}
 
-#if NET_2_0
 		protected override void OnFontChanged (EventArgs e)
 		{
 			base.OnFontChanged (e);
@@ -121,19 +116,16 @@ namespace System.Windows.Forms {
 		{
 			base.OnMouseLeave (e);
 		}
-#endif
 
 		protected override void OnMouseUp (MouseEventArgs mevent)
 		{
 			base.OnMouseUp (mevent);
 		}
 
-#if NET_2_0
 		protected override void OnTextChanged (EventArgs e)
 		{
 			base.OnTextChanged (e);
 		}
-#endif
 
 		protected override bool ProcessMnemonic (char charCode)
 		{
@@ -159,18 +151,15 @@ namespace System.Windows.Forms {
 			remove { base.DoubleClick -= value; }
 		}
 
-#if NET_2_0
 		[Browsable (false)]
 		[EditorBrowsable (EditorBrowsableState.Advanced)]
 		public new event MouseEventHandler MouseDoubleClick {
 			add { base.MouseDoubleClick += value; }
 			remove { base.MouseDoubleClick -= value; }
 		}
-#endif
 		#endregion	// Events
 
 		#region	Internal methods
-#if NET_2_0
 		internal override void Draw (PaintEventArgs pevent)
 		{
 			// System style does not use any of the new 2.0 stuff
@@ -204,7 +193,6 @@ namespace System.Windows.Forms {
 				
 			return base.GetPreferredSizeCore (proposedSize);
 		}
-#endif
 		#endregion	// Internal methods
 	}
 }
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ButtonBase.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ButtonBase.cs
index 7897bd5..3b223ff 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ButtonBase.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ButtonBase.cs
@@ -30,12 +30,10 @@ using System.Drawing.Text;
 using System.Runtime.InteropServices;
 
 namespace System.Windows.Forms {
-#if NET_2_0
 	[ClassInterface (ClassInterfaceType.AutoDispatch)]
 	[ComVisible (true)]
 	[Designer ("System.Windows.Forms.Design.ButtonBaseDesigner, " + Consts.AssemblySystem_Design,
 		   "System.ComponentModel.Design.IDesigner")]
-#endif
 	public abstract class ButtonBase : Control
 	{
 		#region Local Variables
@@ -54,9 +52,7 @@ namespace System.Windows.Forms {
 		// Properties are 2.0, but variables used in 1.1 for common drawing code
 		private bool			auto_ellipsis;
 		private FlatButtonAppearance	flat_button_appearance;
-#if NET_2_0		
 		private string			image_key;
-#endif
 		private TextImageRelation	text_image_relation;
 		private TextFormatFlags		text_format_flags;
 		private bool			use_mnemonic;
@@ -68,12 +64,10 @@ namespace System.Windows.Forms {
 		{
 			flat_style	= FlatStyle.Standard;
 			flat_button_appearance = new FlatButtonAppearance (this);
-#if NET_2_0
 			this.image_key = string.Empty;
 			this.text_image_relation = TextImageRelation.Overlay;
 			this.use_mnemonic = true;
 			use_visual_style_back_color = true;
-#endif
 			image_index	= -1;
 			image		= null;
 			image_list	= null;
@@ -97,11 +91,7 @@ namespace System.Windows.Forms {
 				ControlStyles.UserMouse | 
 				ControlStyles.SupportsTransparentBackColor | 
 				ControlStyles.CacheText |
-#if NET_2_0
 				ControlStyles.OptimizedDoubleBuffer, true);
-#else
-				ControlStyles.DoubleBuffer, true);
-#endif
 			SetStyle (ControlStyles.StandardClick, false);
 		}
 		#endregion	// Public Constructors
@@ -111,12 +101,7 @@ namespace System.Windows.Forms {
 		[DefaultValue (false)]
 		[EditorBrowsable (EditorBrowsableState.Always)]
 		[MWFCategory("Behavior")]
-#if NET_2_0
-		public
-#else
-		internal
-#endif
-		bool AutoEllipsis {
+		public bool AutoEllipsis {
 			get { return this.auto_ellipsis; }
 			set
 			{
@@ -138,7 +123,6 @@ namespace System.Windows.Forms {
 			}
 		}
 
-#if NET_2_0
 		[Browsable (true)]
 		[EditorBrowsable (EditorBrowsableState.Always)]
 		[DesignerSerializationVisibility (DesignerSerializationVisibility.Visible)]
@@ -152,17 +136,11 @@ namespace System.Windows.Forms {
 			get { return base.BackColor; }
 			set { base.BackColor = value; }
 		}
-#endif
 
 		[DesignerSerializationVisibility (DesignerSerializationVisibility.Content)]
 		[Browsable (true)]
 		[MWFCategory("Appearance")]
-#if NET_2_0
-		public
-#else
-		internal
-#endif
-		FlatButtonAppearance FlatAppearance {
+		public FlatButtonAppearance FlatAppearance {
 			get { return flat_button_appearance; }
 		}
 
@@ -193,26 +171,20 @@ namespace System.Windows.Forms {
 					if (this.image_list != null)
 						return this.image_list.Images[this.image_index];
 
-#if NET_2_0
 				if (!string.IsNullOrEmpty (this.image_key))
 					if (this.image_list != null)
 						return this.image_list.Images[this.image_key];
-#endif
 				return null;
 			}
 			set {
 				if (this.image != value) {
 					this.image = value;
 					this.image_index = -1;
-#if NET_2_0
 					this.image_key = string.Empty;
-#endif
 					this.image_list = null;
 
-#if NET_2_0
 					if (this.AutoSize && this.Parent != null)
 						this.Parent.PerformLayout (this, "Image");
-#endif
 
 					Invalidate ();
 				}
@@ -242,9 +214,7 @@ namespace System.Windows.Forms {
 		[Editor("System.Windows.Forms.Design.ImageIndexEditor, " + Consts.AssemblySystem_Design, typeof(System.Drawing.Design.UITypeEditor))]
 		[TypeConverter(typeof(ImageIndexConverter))]
 		[MWFDescription("Index of image to display, if ImageList is used for button face images"), MWFCategory("Appearance")]
-#if NET_2_0
 		[RefreshProperties (RefreshProperties.Repaint)]
-#endif
 		public int ImageIndex {
 			get {
 				if (image_list == null)
@@ -256,15 +226,12 @@ namespace System.Windows.Forms {
 				if (this.image_index != value) {
 					this.image_index = value;
 					this.image = null;
-#if NET_2_0
 					this.image_key = string.Empty;
-#endif
 					Invalidate ();
 				}
 			}
 		}
 
-#if NET_2_0
 		[Localizable (true)]
 		[DefaultValue ("")]
 		[Editor ("System.Windows.Forms.Design.ImageIndexEditor, " + Consts.AssemblySystem_Design, typeof (System.Drawing.Design.UITypeEditor))]
@@ -282,13 +249,10 @@ namespace System.Windows.Forms {
 				}
 			}
 		}
-#endif
 
 		[DefaultValue(null)]
 		[MWFDescription("ImageList used for ImageIndex"), MWFCategory("Appearance")]
-#if NET_2_0
 		[RefreshProperties (RefreshProperties.Repaint)]
-#endif
 		public ImageList ImageList {
 			get { return image_list; }
 			set {
@@ -310,7 +274,6 @@ namespace System.Windows.Forms {
 			set { base.ImeMode = value; }
 		}
 
-#if NET_2_0
 		[SettingsBindable (true)]
 		[Editor ("System.ComponentModel.Design.MultilineStringEditor, " + Consts.AssemblySystem_Design,
 			 "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
@@ -318,7 +281,6 @@ namespace System.Windows.Forms {
 			get { return base.Text; }
 			set { base.Text = value; }
 		}
-#endif
 
 		[Localizable(true)]
 		[DefaultValue(ContentAlignment.MiddleCenter)]
@@ -396,15 +358,10 @@ namespace System.Windows.Forms {
 			}
 		}
 
-#if NET_2_0
 		[Localizable (true)]
 		[DefaultValue (TextImageRelation.Overlay)]
 		[MWFCategory("Appearance")]
-		public
-#else
-		internal
-#endif
-		TextImageRelation TextImageRelation {
+		public TextImageRelation TextImageRelation {
 			get { return this.text_image_relation; }
 			set {
 				if (!Enum.IsDefined (typeof (TextImageRelation), value))
@@ -413,10 +370,8 @@ namespace System.Windows.Forms {
 				if (this.text_image_relation != value) {
 					this.text_image_relation = value;
 					
-#if NET_2_0
 					if (this.AutoSize && this.Parent != null)
 						this.Parent.PerformLayout (this, "TextImageRelation");
-#endif
 					
 					this.Invalidate ();
 				}
@@ -425,12 +380,7 @@ namespace System.Windows.Forms {
 
 		[DefaultValue (false)]
 		[MWFCategory("Behavior")]
-#if NET_2_0
-		public
-#else
-		internal
-#endif
-		bool UseCompatibleTextRendering {
+		public bool UseCompatibleTextRendering {
 			get { return use_compatible_text_rendering; }
 			set {
 				if (use_compatible_text_rendering != value) {
@@ -444,12 +394,7 @@ namespace System.Windows.Forms {
 		
 		[DefaultValue (true)]
 		[MWFCategory("Appearance")]
-#if NET_2_0
-		public
-#else
-		internal
-#endif
-		bool UseMnemonic {
+		public bool UseMnemonic {
 			get { return this.use_mnemonic; }
 			set {
 				if (this.use_mnemonic != value) {
@@ -466,12 +411,7 @@ namespace System.Windows.Forms {
 		}
 
 		[MWFCategory("Appearance")]
-#if NET_2_0
-		public
-#else
-		internal
-#endif
-		bool UseVisualStyleBackColor {
+		public bool UseVisualStyleBackColor {
 			get { return use_visual_style_back_color; }
 			set {
 				if (use_visual_style_back_color != value) {
@@ -507,13 +447,11 @@ namespace System.Windows.Forms {
 		#endregion	// Public Instance Properties
 
 		#region Public Methods
-#if NET_2_0
 		// The base calls into GetPreferredSizeCore, which we will override in our subclasses
 		public override Size GetPreferredSize (Size proposedSize)
 		{
 			return base.GetPreferredSize (proposedSize);
 		}
-#endif
 		#endregion
 		
 		#region Protected Methods
@@ -632,9 +570,7 @@ namespace System.Windows.Forms {
 				if (ClientRectangle.Contains (mevent.Location))
 					if (!ValidationFailed) {
 						OnClick (EventArgs.Empty);
-#if NET_2_0
 						OnMouseClick (mevent);
-#endif
 					}
 			}
 			
@@ -698,14 +634,12 @@ namespace System.Windows.Forms {
 		#endregion	// Public Instance Properties
 
 		#region	Public Events
-#if NET_2_0
 		[Browsable (true)]
 		[EditorBrowsable (EditorBrowsableState.Always)]
 		public new event EventHandler AutoSizeChanged {
 			add { base.AutoSizeChanged += value; }
 			remove { base.AutoSizeChanged -= value; }
 		}
-#endif
 
 		[Browsable (false)]
 		[EditorBrowsable (EditorBrowsableState.Never)]
@@ -795,11 +729,9 @@ namespace System.Windows.Forms {
 			#endregion	// ButtonBaseAccessibleObject Constructors
 
 			#region Public Properties
-#if NET_2_0
 			public override AccessibleStates State {
 				get { return base.State; }
 			}
-#endif
 			#endregion
 			
 			#region ButtonBaseAccessibleObject Methods
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ButtonRenderer.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ButtonRenderer.cs
index e229e08..ee949ab 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ButtonRenderer.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ButtonRenderer.cs
@@ -31,10 +31,7 @@ using System.Windows.Forms.VisualStyles;
 
 namespace System.Windows.Forms
 {
-#if NET_2_0
-	public
-#endif
-	sealed class ButtonRenderer
+	public sealed class ButtonRenderer
 	{
 		private static bool always_use_visual_styles = false;
 
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/CacheVirtualItemsEventArgs.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/CacheVirtualItemsEventArgs.cs
index 16e198b..2c51dfd 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/CacheVirtualItemsEventArgs.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/CacheVirtualItemsEventArgs.cs
@@ -26,7 +26,6 @@
 //	Jonathan Pobst (monkey at jpobst.com)
 //
 
-#if NET_2_0
 namespace System.Windows.Forms
 {
 	public class CacheVirtualItemsEventArgs : EventArgs
@@ -54,4 +53,3 @@ namespace System.Windows.Forms
 		#endregion	// Public Instance Properties
 	}
 }
-#endif
\ No newline at end of file
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/CacheVirtualItemsEventHandler.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/CacheVirtualItemsEventHandler.cs
index fbbffce..9cca2c6 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/CacheVirtualItemsEventHandler.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/CacheVirtualItemsEventHandler.cs
@@ -26,9 +26,7 @@
 //	Jonathan Pobst (monkey at jpobst.com)
 //
 
-#if NET_2_0
 namespace System.Windows.Forms
 {
 	public delegate void CacheVirtualItemsEventHandler(object sender, CacheVirtualItemsEventArgs e);
 }
-#endif
\ No newline at end of file
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
index 98e1523..e7e312a 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
@@ -1,3 +1,319 @@
+2011-01-06  Thomas Goldstein  <stifu at free.fr>
+
+	Replace decimal to hex string conversion code with a much more
+	simple alternative (suggested by Oliver Thimm). Fixes bug 661750.
+
+2011-01-06  Thomas Goldstein  <stifu at free.fr>
+
+	Remove #if NET_2_0.
+
+2011-01-01  Thomas Goldstein  <stifu at free.fr>
+
+	Add missing properties that should be copied when cloning a
+	TreeNode. Fixes bug 661753.
+
+2010-12-22  Thomas Goldstein  <stifu at free.fr>
+
+	Remove null check in ComboBox.SelectedText setter (now handled in
+	TextBoxBase).
+
+2010-12-22  Thomas Goldstein  <stifu at free.fr>
+
+	If SelectedText is given a null value, set it to String.Empty.
+
+2010-12-21  Thomas Goldstein  <stifu at free.fr>
+
+	When ComboBox.SelectedText is given a null value, set it to
+	String.Empty. Fixes bug 660294.
+
+2010-12-16  Jonathan Pobst  <monkey at jpobst.com>
+
+	Move line inside if () to fix 2 tests.
+
+	Broke by 9aa23d8ebec0f5c60ae66fee3df8a3c6c39cf191.
+
+2010-12-16  Miguel de Icaza  <miguel at gnome.org>
+
+	[winforms] undo accidental removal of a line
+
+2010-12-16  Miguel de Icaza  <miguel at gnome.org>
+
+	[winforms] revert patch, it regresses the test suite:
+	https://github.com/mono/mono/commit/8334fe3a56c978ffe7f8cb199536f9b3234afdbe
+
+2010-12-12  Miguel de Icaza  <miguel at gnome.org>
+
+	[winforms] Pass 4 of removing NET_2_0 from winforms
+
+2010-12-12  Miguel de Icaza  <miguel at gnome.org>
+
+	[winforms] Pass 3 of removing NET_2_0 from winforms
+
+2010-12-12  Miguel de Icaza  <miguel at gnome.org>
+
+	[winforms] Pass 3 of removing NET_2_0 from winforms
+
+2010-12-12  Miguel de Icaza  <miguel at gnome.org>
+
+	[winforms] Pass 2 of removing NET_2_0 from winforms
+
+2010-12-12  Miguel de Icaza  <miguel at gnome.org>
+
+	[winforms] Pass 2 of removing NET_2_0 from winforms
+
+2010-12-12  Miguel de Icaza  <miguel at gnome.org>
+
+	Pass 1 of removing NET_2_0 from winforms
+
+2010-12-11  Thomas Goldstein  <stifu at free.fr>
+
+	[winforms] Small optimizations, use properties that do not compute
+	values
+
+2010-12-10  Miguel de Icaza  <miguel at gnome.org>
+
+	[winforms] Style, braces
+
+2010-12-10  Miguel de Icaza  <miguel at gnome.org>
+
+	[winforms] Use conditional attributes, not ifdefs to insert
+	conditional code
+
+2010-12-10  Miguel de Icaza  <miguel at gnome.org>
+
+	[winforms] Use conditional attributes, not ifdefs to insert
+	conditional code
+
+2010-12-10  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Line endings
+
+2010-12-10  Ralph Leckett  <rleckett at gmail.com>
+
+	[winforms] Fix graphics leak
+
+2010-12-10  Ralph Leckett  <rleckett at gmail.com>
+
+	[winforms] Fix graphics leak
+
+2010-12-10  Ralph Leckett  <rleckett at gmail.com>
+
+	[winforms] For what it appeared to be a crasher from the
+	JumboPatch
+
+2010-12-10  Ralph Leckett  <rleckett at gmail.com>
+
+	[winforms] Reorder code a bit
+
+2010-12-10  Ralph Leckett  <rleckett at gmail.com>
+
+	[winforms] Avoid leaking the Graphics
+
+2010-12-10  Ralph Leckett  <rleckett at gmail.com>
+
+	[winforms] Avoid leaking the Graphics + style
+
+2010-12-10  Ralph Leckett  <rleckett at gmail.com>
+
+	[winforms] Cope with null current regions
+
+2010-12-10  Ralph Leckett  <rleckett at gmail.com>
+
+	[winforms] Cope with small windows
+
+2010-12-10  Ralph Leckett  <rleckett at gmail.com>
+
+	[winforms] Style
+
+2010-12-10  Ralph Leckett  <rleckett at gmail.com>
+
+	[winforms] Style
+
+2010-12-10  Ralph Leckett  <rleckett at gmail.com>
+
+	[winforms] Style, reduce full sizes of common types
+
+2010-12-10  Ralph Leckett  <rleckett at gmail.com>
+
+	[winforms] Do not leak Graphics in Invalidate + some Style
+
+2010-12-10  Miguel de Icaza  <miguel at gnome.org>
+
+	[winforms] style, and NET_2_0 dropped
+
+2010-12-10  Ralph Leckett  <rleckett at gmail.com>
+
+	[winforms] Style
+
+2010-12-10  Ralph Leckett  <rleckett at gmail.com>
+
+	[winforms] Cope with null Hwnd value from Hwnd.ObjectFromHandle
+
+2010-12-10  Ralph Leckett  <rleckett at gmail.com>
+
+	[winforms] Win32 fixes for window class name
+
+	This is extracted from Ralph Leckett's jumbo-patch to winforms
+
+2010-12-10  Thomas Goldstein  <stifu at free.fr>
+
+	[winforms] quick cleanup patches for a few WinForms classes
+
+2010-12-10  Miguel de Icaza  <miguel at gnome.org>
+
+	[winforms] Prepare for Gnome 3, by not depending on libgnomeui
+
+2010-12-10  Tom Hindle  <tom_hindle at sil.org>
+
+	[winforms] Fix ContextMenuStrip vertical position can be wrong.
+
+	Fixes #658945
+
+	This can lead to the top of the context menu being off the screen.
+	This only happens with context menus with lots of items.
+
+2010-12-10  Tom Hindle  <tom_hindle at sil.org>
+
+	[winforms] WM_SETFOCUS is sent before Keyboard Focus is changed.
+
+	Switches Keyboard focus so that it occurs before WM_SETFOCUS is
+	sent.
+
+	This means that the wrong keyboard im is selected while process
+	winform events caused by WM_SETFOCUS.
+
+	Attaching patch that changes this so that keyboard im is focused
+	before WM_SETFOCUS is sent.
+
+	Fixes: #557277
+
+2010-12-10  Tom Hindle  <tom_hindle at sil.org>
+
+	* XplatUIStructs.cs: Added user messages WM_XIM_PREEDITSTART,
+	WM_XIM_PREEDITDONE, WM_XIM_PREEDITDRAW, WM_XIM_PREEDITCARET *
+	X11Keyboard.cs: Changed preedit callbacks to emit WM_XIM_*
+	messages * X11Structs.cs: Added XIMFeedbackStruct and XIMFeedback
+	enum.
+
+	Here is some sample code which make use of this feature:
+
+	/// <summary> /// Proof on concept implementation of a user
+	defined TextBox that does on-the-spot /// input method editing.
+	/// There is a number of know flaws - eg. doesn't end preedit when
+	user moves cursor with mouse. /// Need to run with
+	MONO_WINFORMS_XIM_STYLE=on-the-spot mono /// </summary> public
+	class OnTheSpotTextBox : TextBox, XIM.IPreedit { // store text
+	before preedit. string backup;
+
+	#region IPreedit implementation public int PreeditStart (IntPtr
+	clientData, IntPtr callData) { Console.WriteLine ("PreeditStart");
+	backup = Text; return 100; }
+
+	public int PreeditDone (IntPtr clientData, IntPtr callData) {
+	Clear (); AppendText (backup); return 0; }
+
+	public int PreeditDraw (IntPtr clientData, IntPtr callData) {
+	XIM.PreeditDrawInfo info = new XIM.PreeditDrawInfo (callData);
+	Console.WriteLine ("PreeditDraw PreeditDrawInfo {0}", info); if
+	(info.ChangeLength > 0) { Clear (); AppendText (backup); } if
+	(info.Caret > 0) AppendText (info.Text); return 0; }
+
+	public int PreeditCaret (IntPtr clientData, IntPtr callData) {
+	XIM.PreeditCaretInfo info = new XIM.PreeditCaretInfo (clientData);
+	Console.WriteLine ("PreeditCaret PreeditCaretInfo {0}", info);
+	return 0; }
+
+	protected override void WndProc (ref Message m) { switch (m.Msg) {
+
+	case /*WM_USER*/0x400 + 0x1d00: // WM_XIM_PREEDITSTART // The
+	WParam value identifies what is occurring. PreeditStart (m.WParam,
+	m.LParam); break; case /*WM_USER*/0x400 + 0x1d01: //
+	WM_XIM_PREEDITDONE PreeditDone (m.WParam, m.LParam); break; case
+	/*WM_USER*/0x400 + 0x1d02: // WM_XIM_PREEDITDRAW PreeditDraw
+	(m.WParam, m.LParam); break; case /*WM_USER*/0x400 + 0x1d03: //
+	WM_XIM_PREEDITCARET PreeditCaret (m.WParam, m.LParam); break; }
+	base.WndProc (ref m); }
+
+	#endregion
+
+	}
+
+2010-12-10  Tom Hindle  <tom_hindle at sil.org>
+
+	[winforms] Add modal support to Forms
+
+	This fixes 614850 "Modal dialogs should prevent closing their
+	parent windows."
+
+2010-12-10  Tom Hindle  <tom_hindle at sil.org>
+
+	[winforms] DataGridView.cs : Made MoveCurrentCell not attempt
+	access Column index -1.
+
+	Fixes #516960
+
+2010-12-10  Tom Hindle  <tom_hindle at sil.org>
+
+	[winforms,fix] Prevent Clipboard APIs from running any Idle
+	handlers
+
+	Fixes: 641756
+
+	This prevents idle methods to be invoked when calling the
+	Clipboard APIs on X11, which is not the expected behavior.
+
+	The description from the bug report is:
+
+	Mono X11 Clipboard handling calls UpdateMessageQueue, which has
+	the side affect of potentially calling Idle handlers.
+
+	If any Idle handlers call Clipboard functions, this can cause idle
+	handler reentry.
+
+	See attached test case.
+
+	Incidentally removing the reentry check from the idle handler will
+	actually cause mono to segfault.
+
+	I will attach a patch shortly which fixes this by overloading
+	UpdateMessageQueue to allow Clipboard methods to call a version
+	that doesn't run idle processing.
+
+2010-12-10  Thomas Goldstein  <stifu at free.fr>
+
+	[winforms, fix] Keep the carret in sync with changes to the text
+	entry value
+
+	Patch from Thomas Goldstein for bug #621475
+
+	The IndexOutOfRangeException is apparently a caret position bug.
+	As a workaround, doing textbox.SelectionStart = 0; before
+	resetting the Text avoids the bug.
+
+	Here's a patch to fix the bug. Basically, it applies the same
+	caret updates whether the Text is null/empty or not. I hope I can
+	get away with the minor style updates without having to submit
+	them as a separate patch...
+
+2010-12-10  Andy Hume  <andyhume32 at yahoo.co.uk>
+
+	[fix, winforms] Fix the ProgressBar speed in Marquee situations
+
+	This issue was identified as:
+
+	Marquee speed is very weird, changing between very very fast and
+	very very very very fast, and in inverse to the speed setting?
+
+	In https://bugzilla.novell.com/show_bug.cgi?id=440220
+
+	Also fixes this bug which was the test case isolated:
+
+	https://bugzilla.novell.com/show_bug.cgi?id=655797
+
+2010-12-10  Nagappan Alagappan  <nagappan at gmail.com>
+
+	[winforms, datagrid, fix] fixes crasher reported in 416111
+
 2010-10-31  Miguel de Icaza  <miguel at gnome.org>
 
 	Expose some of our internals to the Mono.Winforms assembly
@@ -10,6 +326,69 @@
 
 	Allow this file to expose its types as public if needed
 
+2010-10-25  Carlos Alberto Cortez  <calberto.cortez at gmail.com>
+
+	* ComboBox.cs: Fire the Mouse* events when using the child
+	TextBox. Fixes #647689.
+
+2010-10-25  Carlos Alberto Cortez  <calberto.cortez at gmail.com>
+
+	* ListView.cs: When updating the Z-order for our controls don't
+	forget to add the implicit scrollbars we well. Fixes #648449.
+
+2010-10-24  Marek Safar  <marek.safar at gmail.com>
+
+	Warnings cleanup.
+
+2010-10-20  Latif Khalifa  <lkalif at openmetaverse.org>
+
+	Avoid nullref when clearing TextBox that has not yet been
+	displayed
+
+2010-09-27  Carlos Alberto Cortez  <calberto.cortez at gmail.com>
+
+	* Form.cs: When setting DialogResult call RaiseCloseEvents instead
+	of directly setting 'closing', since we need to have our
+	FormClosing event invoked *before* the form dissapears, so the
+	user can properly cancel the close operation if desired. Fixes
+	#631810.
+
+2010-09-26  Carlos Alberto Cortez  <calberto.cortez at gmail.com>
+
+	* X11Keyboard.cs: Manually handle the conversion of the string
+	returned by XLookupString, just as we were already doing for XIM
+	support - using StringBuilder directly was somehow returning a
+	corrupt buffer from time to time. Fixes #639939.
+
+2010-09-21  acken  <acken at acken.no>
+
+	Had an issue where the linklabel was clicked, the form was redrawn
+	with some changes and some internal behavior called the OnGotFocus
+	where sorted_links now was null and focused_index was 0. Don't
+	know wheter that is wrong but solved the issue with a nullcheck
+
+2010-08-31  Carlos Alberto Cortez  <calberto.cortez at gmail.com>
+
+	* ListBox.cs: Invalidate the selection border when horizontally
+	scrolling - the call to ScrollWindow is not enough, so we need to
+	update by ourselves the new margin of the selection border by a
+	quite small offset. Fixes #512136.
+
+2010-08-31  Carlos Alberto Cortez  <calberto.cortez at gmail.com>
+
+	* NotifyIcon.cs: Use SystemColors.Menu to paint the background of
+	the control, since at least in gnome the menu and the panel share
+	the back color (unfortunately we can't just leave the rectangle
+	transparent, as some window managers use a default white). Fixes
+	#581287.
+
+2010-08-31  Tom Hindle  <tom_hindle at sil.org>
+
+	* TreeView.cs: Create a new method to check that the new valid for
+	the vertical scroll is in the valid range - this is specially
+	important when the size of the TreeView can show less than one
+	element. Fixes #624915.
+
 2010-08-16  Carlos Alberto Cortez  <calberto.cortez at gmail.com>
 
 	* DataGridView.cs: When refreshing the scrolling info, set the
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/CheckBox.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/CheckBox.cs
index dfd9831..3e26f77 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/CheckBox.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/CheckBox.cs
@@ -32,12 +32,10 @@ using System.Runtime.InteropServices;
 namespace System.Windows.Forms {
 	[DefaultProperty("Checked")]
 	[DefaultEvent("CheckedChanged")]
-#if NET_2_0
 	[ComVisible (true)]
 	[ClassInterface (ClassInterfaceType.AutoDispatch)]
 	[DefaultBindingProperty ("CheckState")]
 	[ToolboxItem ("System.Windows.Forms.Design.AutoSizeToolboxItem," + Consts.AssemblySystem_Design)]
-#endif
 	public class CheckBox : ButtonBase {
 		#region Local Variables
 		internal Appearance		appearance;
@@ -96,14 +94,12 @@ namespace System.Windows.Forms {
 			}
 			#endregion	// CheckBoxAccessibleObject Properties
 
-#if NET_2_0
 			#region CheckBoxAccessibleObject Methods
 			public override void DoDefaultAction ()
 			{
 				owner.Checked = !owner.Checked;
 			}
 			#endregion	// CheckBoxAccessibleObject Methods
-#endif
 		}
 		#endregion	// CheckBoxAccessibleObject Sub-class
 
@@ -114,15 +110,12 @@ namespace System.Windows.Forms {
 			check_alignment = ContentAlignment.MiddleLeft;
 			TextAlign = ContentAlignment.MiddleLeft;
 			SetStyle(ControlStyles.StandardDoubleClick, false);
-#if NET_2_0
 			SetAutoSizeMode (AutoSizeMode.GrowAndShrink);
-#endif
 		}
 		#endregion	// Public Constructors
 
 		#region	Internal Methods
 		internal override void Draw (PaintEventArgs pe) {
-#if NET_2_0
 			// FIXME: This should be called every time something that can affect it
 			// is changed, not every paint.  Can only change so many things at a time.
 
@@ -138,12 +131,8 @@ namespace System.Windows.Forms {
 				ThemeEngine.Current.DrawCheckBox (pe.Graphics, this, glyph_rectangle, text_rectangle, image_rectangle, pe.ClipRectangle);
 			else
 				ThemeEngine.Current.DrawCheckBox (pe.Graphics, this.ClientRectangle, this);
-#else
-			ThemeEngine.Current.DrawCheckBox (pe.Graphics, this.ClientRectangle, this);
-#endif
 		}
 
-#if NET_2_0
 		internal override Size GetPreferredSizeCore (Size proposedSize)
 		{
 			if (this.AutoSize)
@@ -151,7 +140,6 @@ namespace System.Windows.Forms {
 
 			return base.GetPreferredSizeCore (proposedSize);
 		}
-#endif
 
 		internal override void HaveDoubleClick() {
 			if (DoubleClick != null) DoubleClick(this, EventArgs.Empty);
@@ -210,9 +198,7 @@ namespace System.Windows.Forms {
 		[Bindable(true)]
 		[RefreshProperties(RefreshProperties.All)]
 		[DefaultValue(false)]
-#if NET_2_0
 		[SettingsBindable (true)]
-#endif
 		public bool Checked {
 			get {
 				if (check_state != CheckState.Unchecked) {
@@ -357,12 +343,10 @@ namespace System.Windows.Forms {
 			base.OnHandleCreated (e);
 		}
 
-#if NET_2_0
 		protected override void OnKeyDown (KeyEventArgs e)
 		{
 			base.OnKeyDown (e);
 		}
-#endif
 
 		protected override void OnMouseUp(MouseEventArgs mevent) {
 			base.OnMouseUp (mevent);
@@ -399,14 +383,12 @@ namespace System.Windows.Forms {
 			remove { Events.RemoveHandler (CheckStateChangedEvent, value); }
 		}
 		
-#if NET_2_0
 		[Browsable (false)]
 		[EditorBrowsable (EditorBrowsableState.Never)]
 		public new event MouseEventHandler MouseDoubleClick {
 			add { base.MouseDoubleClick += value; }
 			remove { base.MouseDoubleClick -= value; }
 		}
-#endif
 		#endregion	// Events
 
 		#region Events
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/CheckBoxRenderer.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/CheckBoxRenderer.cs
index da29259..efe7edf 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/CheckBoxRenderer.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/CheckBoxRenderer.cs
@@ -31,10 +31,7 @@ using System.Windows.Forms.VisualStyles;
 
 namespace System.Windows.Forms
 {
-#if NET_2_0
-	public
-#endif
-	sealed class CheckBoxRenderer
+	public sealed class CheckBoxRenderer
 	{
 		private static bool always_use_visual_styles = false;
 
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/CheckedListBox.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/CheckedListBox.cs
index 52b842a..772eeb3 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/CheckedListBox.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/CheckedListBox.cs
@@ -34,11 +34,9 @@ using System.Runtime.InteropServices;
 
 namespace System.Windows.Forms
 {
-#if NET_2_0
 	[ClassInterface (ClassInterfaceType.AutoDispatch)]
 	[ComVisible (true)]
 	[LookupBindingPropertiesAttribute ()]
-#endif
 	public class CheckedListBox : ListBox
 	{
 		private CheckedIndexCollection checked_indices;
@@ -57,13 +55,8 @@ namespace System.Windows.Forms
 		#region events
 		static object ItemCheckEvent = new object ();
 
-#if NET_2_0
 		[Browsable (true)]
 		[EditorBrowsable (EditorBrowsableState.Always)]
-#else
-		[Browsable (false)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-#endif
 		public new event EventHandler Click {
 			add { base.Click += value; }
 			remove { base.Click -= value; }
@@ -109,14 +102,12 @@ namespace System.Windows.Forms
 			remove { Events.RemoveHandler (ItemCheckEvent, value); }
 		}
 		
-#if NET_2_0
 		[Browsable (true)]
 		[EditorBrowsable (EditorBrowsableState.Always)]
 		public new event MouseEventHandler MouseClick {
 			add { base.MouseClick += value; }
 			remove { base.MouseClick -= value; }
 		}
-#endif
 		#endregion Events
 
 		#region Public Properties
@@ -213,7 +204,6 @@ namespace System.Windows.Forms
 			set { base.ValueMember = value; }			
 		}
 		
-#if NET_2_0
 		[Browsable (false)]
 		[EditorBrowsable (EditorBrowsableState.Never)]
 		[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
@@ -221,7 +211,6 @@ namespace System.Windows.Forms
 			get { return base.Padding; }
 			set { base.Padding = value; }
 		}
-#endif
 		#endregion Public Properties
 
 		#region Public Methods
@@ -309,12 +298,11 @@ namespace System.Windows.Forms
 			base.OnSelectedIndexChanged (e);
 		}
 
-#if NET_2_0
 		protected override void RefreshItems ()
 		{
 			base.RefreshItems ();
 		}
-#endif
+
 		public void SetItemChecked (int index, bool value)
 		{
 			SetItemCheckState (index, value ? CheckState.Checked : CheckState.Unchecked);
@@ -656,14 +644,11 @@ namespace System.Windows.Forms
 			}
 			#endregion Private Methods
 		}
-#if NET_2_0
 		[DefaultValue (false)]
 		public bool UseCompatibleTextRendering {
 			get { return use_compatible_text_rendering; }
 			set { use_compatible_text_rendering = value; }
 		}
-#endif
-
 	}
 }
 
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Clipboard.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Clipboard.cs
index 861bd99..674da05 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Clipboard.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Clipboard.cs
@@ -61,7 +61,6 @@ namespace System.Windows.Forms {
 		#endregion	// Private Methods
 
 		#region Public Static Methods
-#if NET_2_0
 		public static void Clear ()
 		{
 			IntPtr clipboard_handle;
@@ -132,14 +131,12 @@ namespace System.Windows.Forms {
 
 			return data.GetData (format, true);
 		}
-#endif
 
 		public static IDataObject GetDataObject ()
 		{
 			return GetDataObject (false);
 		}
 
-#if NET_2_0
 		public static StringCollection GetFileDropList ()
 		{
 			IDataObject data = GetDataObject ();
@@ -225,7 +222,6 @@ namespace System.Windows.Forms {
 			DataObject data_object = new DataObject (format, data);
 			SetDataObject (data_object);
 		}
-#endif
 
 		public static void SetDataObject(object data) {
 			SetDataObject(data, false);  // MSDN says default behavior is to place non-persistent data to clipboard
@@ -287,12 +283,7 @@ namespace System.Windows.Forms {
 			return attrs [typeof (SerializableAttribute)] != null;
 		}
 
-#if NET_2_0
-		public 
-#else
-		internal 
-#endif
-		static void SetDataObject(object data, bool copy, int retryTimes, int retryDelay)
+		public static void SetDataObject(object data, bool copy, int retryTimes, int retryDelay)
 		{
 			if (data == null)
 				throw new ArgumentNullException("data");
@@ -319,7 +310,6 @@ namespace System.Windows.Forms {
 			} while (retry && retryTimes > 0);
 		}
 
-#if NET_2_0
 		[MonoInternalNote ("Needs additional checks for valid paths, see MSDN")]
 		public static void SetFileDropList (StringCollection filePaths)
 		{
@@ -370,7 +360,6 @@ namespace System.Windows.Forms {
 					break;
 			}
 		}
-#endif
 		#endregion	// Public Static Methods
 
 		#region Internal Static Methods
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/CloseReason.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/CloseReason.cs
index d7facf0..b01b923 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/CloseReason.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/CloseReason.cs
@@ -29,10 +29,7 @@
 
 namespace System.Windows.Forms
 {
-#if NET_2_0
-	public 
-#endif
-	enum CloseReason
+	public enum CloseReason
 	{
 		None = 0,
 		WindowsShutDown = 1,
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ColorDepth.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ColorDepth.cs
index 96684c5..9844a09 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ColorDepth.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ColorDepth.cs
@@ -27,9 +27,6 @@
 // COMPLETE
 
 namespace System.Windows.Forms {
-#if !NET_2_0
-	[Serializable]
-#endif
 	public enum ColorDepth {
 		Depth4Bit	= 4,
 		Depth8Bit	= 8,
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ColorDialog.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ColorDialog.cs
index 4483432..599cb3d 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ColorDialog.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ColorDialog.cs
@@ -969,7 +969,6 @@ namespace System.Windows.Forms {
 			private SmallColorControl selectedSmallColorControl;
 
 			#region UIA Framework Property
-#if NET_2_0
 			public SmallColorControl UIASelectedSmallColorControl {
 				get {
 					for (int i = 0; i < smallColorControl.Length - 1; ++i)
@@ -981,7 +980,6 @@ namespace System.Windows.Forms {
 					return null;
 				}
 			}
-#endif
 			#endregion
 
 			private int currentlyUsedUserSmallColorControl = 0;
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ColumnClickEventHandler.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ColumnClickEventHandler.cs
index abc9bc6..12c8705 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ColumnClickEventHandler.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ColumnClickEventHandler.cs
@@ -25,8 +25,5 @@
 
 namespace System.Windows.Forms
 {
-#if !NET_2_0
-	[Serializable]
-#endif
 	public delegate void ColumnClickEventHandler (object sender, ColumnClickEventArgs e);
 }
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ColumnHeader.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ColumnHeader.cs
index 5b7f9ea..998448c 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ColumnHeader.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ColumnHeader.cs
@@ -35,9 +35,7 @@ namespace System.Windows.Forms
 	[DefaultProperty ("Text")]
 	[DesignTimeVisible (false)]
 	[ToolboxItem (false)]
-#if NET_2_0
 	[TypeConverter (typeof (ColumnHeaderConverter))]
-#endif
 	public class ColumnHeader : Component, ICloneable
 	{
 		#region Instance Variables
@@ -45,12 +43,10 @@ namespace System.Windows.Forms
 		private string text = "ColumnHeader";
 		private HorizontalAlignment text_alignment = HorizontalAlignment.Left;
 		private int width = ThemeEngine.Current.ListViewDefaultColumnWidth;
-#if NET_2_0
 		private int image_index = -1;
 		private string image_key = String.Empty;
 		private string name = String.Empty;
 		private object tag;
-#endif
 		private int display_index = -1;
 
 		// internal variables
@@ -70,7 +66,6 @@ namespace System.Windows.Forms
 			CalcColumnHeader ();
 		}
 
-#if NET_2_0
 		internal ColumnHeader (string key, string text, int width, HorizontalAlignment textAlign)
 		{
 			Name = key;
@@ -79,13 +74,11 @@ namespace System.Windows.Forms
 			this.text_alignment = textAlign;
 			CalcColumnHeader ();
 		}
-#endif
 		#endregion	// Internal Constructor
 
 		#region Public Constructors
 		public ColumnHeader () { }
 
-#if NET_2_0
 		public ColumnHeader (int imageIndex)
 		{
 			ImageIndex = imageIndex;
@@ -95,7 +88,6 @@ namespace System.Windows.Forms
 		{
 			ImageKey = imageKey;
 		}
-#endif
 		#endregion	// Public Constructors
 
 		#region Private Internal Methods Properties
@@ -188,7 +180,6 @@ namespace System.Windows.Forms
 
 		#region Public Instance Properties
 
-#if NET_2_0
 		[Localizable (true)]
 		[RefreshProperties (RefreshProperties.Repaint)]
 		public int DisplayIndex {
@@ -260,7 +251,6 @@ namespace System.Windows.Forms
 				return owner.SmallImageList;
 			}
 		}
-#endif
 
 		[Browsable (false)]
 		public int Index {
@@ -277,7 +267,6 @@ namespace System.Windows.Forms
 			get { return owner; }
 		}
 
-#if NET_2_0
 		[Browsable (false)]
 		public string Name {
 			get {
@@ -300,7 +289,6 @@ namespace System.Windows.Forms
 				tag = value;
 			}
 		}
-#endif
 
 		[Localizable (true)]
 		public string Text {
@@ -311,10 +299,8 @@ namespace System.Windows.Forms
 					if (owner != null)
 						owner.Redraw (true);
 
-#if NET_2_0
 					// UIA Framework: Raising Value changed event
 					OnUIATextChanged ();
-#endif
 				}
 			}
 		}
@@ -347,7 +333,6 @@ namespace System.Windows.Forms
 		#endregion // Public Instance Properties
 
 		#region Public Methods
-#if NET_2_0
 		public void AutoResize (ColumnHeaderAutoResizeStyle headerAutoResize)
 		{
 			switch (headerAutoResize) {
@@ -364,7 +349,6 @@ namespace System.Windows.Forms
 							typeof (ColumnHeaderAutoResizeStyle));
 			}
 		}
-#endif
 
 		public object Clone ()
 		{
@@ -391,7 +375,6 @@ namespace System.Windows.Forms
 		}
 		#endregion // Protected Methods
 
-#if NET_2_0
 		
 		#region UIA Framework: Methods, Properties and Events
 
@@ -410,7 +393,5 @@ namespace System.Windows.Forms
 		}
 
 		#endregion
-
-#endif
 	}
 }
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ColumnHeaderAutoResizeStyle.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ColumnHeaderAutoResizeStyle.cs
index 1268dc3..19c7da8 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ColumnHeaderAutoResizeStyle.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ColumnHeaderAutoResizeStyle.cs
@@ -27,7 +27,6 @@
 //
 
 
-#if NET_2_0
 namespace System.Windows.Forms
 {
 	public enum ColumnHeaderAutoResizeStyle
@@ -37,4 +36,3 @@ namespace System.Windows.Forms
 		ColumnContent = 2
 	}
 }
-#endif
\ No newline at end of file
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ColumnHeaderConverter.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ColumnHeaderConverter.cs
index cc6798f..ba13fd9 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ColumnHeaderConverter.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ColumnHeaderConverter.cs
@@ -26,8 +26,6 @@
 
 // COMPLETE
 
-#if NET_2_0
-
 using System.ComponentModel;
 using System.ComponentModel.Design.Serialization;
 using System.Collections;
@@ -95,5 +93,3 @@ namespace System.Windows.Forms
 		}
 	}
 }
-
-#endif
\ No newline at end of file
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ColumnReorderedEventArgs.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ColumnReorderedEventArgs.cs
index a1c78b4..ea4002a 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ColumnReorderedEventArgs.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ColumnReorderedEventArgs.cs
@@ -26,7 +26,6 @@
 //	Jonathan Pobst (monkey at jpobst.com)
 //
 
-#if NET_2_0
 
 using System.ComponentModel;
 
@@ -63,4 +62,3 @@ namespace System.Windows.Forms
 		#endregion	// Public Instance Properties
 	}
 }
-#endif
\ No newline at end of file
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ColumnReorderedEventHandler.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ColumnReorderedEventHandler.cs
index 482c285..00e7c41 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ColumnReorderedEventHandler.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ColumnReorderedEventHandler.cs
@@ -26,9 +26,7 @@
 //	Jonathan Pobst (monkey at jpobst.com)
 //
 
-#if NET_2_0
 namespace System.Windows.Forms
 {
 	public delegate void ColumnReorderedEventHandler(object sender, ColumnReorderedEventArgs e);
 }
-#endif
\ No newline at end of file
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ColumnStyle.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ColumnStyle.cs
index 5cb63fc..6e5ddde 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ColumnStyle.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ColumnStyle.cs
@@ -26,7 +26,6 @@
 //
 // (C) 2004 Novell, Inc.
 //
-#if NET_2_0
 namespace System.Windows.Forms 
 {
 	public class ColumnStyle : TableLayoutStyle 
@@ -68,4 +67,3 @@ namespace System.Windows.Forms
 		}
 	}
 }
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ColumnWidthChangedEventArgs.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ColumnWidthChangedEventArgs.cs
index ed35d73..43c8f10 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ColumnWidthChangedEventArgs.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ColumnWidthChangedEventArgs.cs
@@ -26,7 +26,6 @@
 //	Jonathan Pobst (monkey at jpobst.com)
 //
 
-#if NET_2_0
 namespace System.Windows.Forms
 {
 	public class ColumnWidthChangedEventArgs : EventArgs
@@ -48,4 +47,3 @@ namespace System.Windows.Forms
 		#endregion	// Public Instance Properties
 	}
 }
-#endif
\ No newline at end of file
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ColumnWidthChangedEventHandler.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ColumnWidthChangedEventHandler.cs
index 503c6a7..07d6216 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ColumnWidthChangedEventHandler.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ColumnWidthChangedEventHandler.cs
@@ -26,9 +26,7 @@
 //	Jonathan Pobst (monkey at jpobst.com)
 //
 
-#if NET_2_0
 namespace System.Windows.Forms
 {
 	public delegate void ColumnWidthChangedEventHandler (object sender, ColumnWidthChangedEventArgs e);
 }
-#endif
\ No newline at end of file
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ColumnWidthChangingEventArgs.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ColumnWidthChangingEventArgs.cs
index 756af5a..7a87b8e 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ColumnWidthChangingEventArgs.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ColumnWidthChangingEventArgs.cs
@@ -26,7 +26,6 @@
 //	Jonathan Pobst (monkey at jpobst.com)
 //
 
-#if NET_2_0
 using System.ComponentModel;
 
 namespace System.Windows.Forms
@@ -60,4 +59,3 @@ namespace System.Windows.Forms
 		#endregion	// Public Instance Properties
 	}
 }
-#endif
\ No newline at end of file
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ColumnWidthChangingEventHandler.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ColumnWidthChangingEventHandler.cs
index 7d54193..7a3d7ae 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ColumnWidthChangingEventHandler.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ColumnWidthChangingEventHandler.cs
@@ -26,9 +26,7 @@
 //	Jonathan Pobst (monkey at jpobst.com)
 //
 
-#if NET_2_0
 namespace System.Windows.Forms
 {
 	public delegate void ColumnWidthChangingEventHandler (object sender, ColumnWidthChangingEventArgs e);
 }
-#endif
\ No newline at end of file
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ComboBox.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ComboBox.cs
index bc5ed73..3d038b3 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ComboBox.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ComboBox.cs
@@ -39,11 +39,9 @@ namespace System.Windows.Forms
 	[DefaultProperty("Items")]
 	[DefaultEvent("SelectedIndexChanged")]
 	[Designer ("System.Windows.Forms.Design.ComboBoxDesigner, " + Consts.AssemblySystem_Design, "System.ComponentModel.Design.IDesigner")]
-#if NET_2_0
 	[DefaultBindingProperty ("Text")]
 	[ClassInterface (ClassInterfaceType.AutoDispatch)]
 	[ComVisible(true)]
-#endif
 	public class ComboBox : ListControl
 	{
 		private DrawMode draw_mode = DrawMode.Normal;
@@ -72,14 +70,12 @@ namespace System.Windows.Forms
 		private Rectangle listbox_area;
 		private const int button_width = 16;
 		bool drop_down_button_entered;
-#if NET_2_0
 		private AutoCompleteStringCollection auto_complete_custom_source = null;
 		private AutoCompleteMode auto_complete_mode = AutoCompleteMode.None;
 		private AutoCompleteSource auto_complete_source = AutoCompleteSource.None;
 		private FlatStyle flat_style;
 		private int drop_down_height;
 		const int default_drop_down_height = 106;
-#endif
 
 		[ComVisible(true)]
 		public class ChildAccessibleObject : AccessibleObject {
@@ -104,10 +100,8 @@ namespace System.Windows.Forms
 			background_color = ThemeEngine.Current.ColorWindow;
 			border_style = BorderStyle.None;
 
-#if NET_2_0
 			drop_down_height = default_drop_down_height;
 			flat_style = FlatStyle.Standard;
-#endif
 
 			/* Events */
 			MouseDown += new MouseEventHandler (OnMouseDownCB);
@@ -128,8 +122,6 @@ namespace System.Windows.Forms
 			remove { base.BackgroundImageChanged -= value; }
 		}
 		
-#if NET_2_0
-
 		[Browsable (false)]
 		[EditorBrowsable (EditorBrowsableState.Never)]
 		public new event EventHandler BackgroundImageLayoutChanged
@@ -145,7 +137,6 @@ namespace System.Windows.Forms
 			add { base.DoubleClick += value; }
 			remove { base.DoubleClick -= value; }
 		}
-#endif
 
 		static object DrawItemEvent = new object ();
 		static object DropDownEvent = new object ();
@@ -153,10 +144,8 @@ namespace System.Windows.Forms
 		static object MeasureItemEvent = new object ();
 		static object SelectedIndexChangedEvent = new object ();
 		static object SelectionChangeCommittedEvent = new object ();
-#if NET_2_0
 		static object DropDownClosedEvent = new object ();
 		static object TextUpdateEvent = new object ();
-#endif
 
 		public event DrawItemEventHandler DrawItem {
 			add { Events.AddHandler (DrawItemEvent, value); }
@@ -167,13 +156,11 @@ namespace System.Windows.Forms
 			add { Events.AddHandler (DropDownEvent, value); }
 			remove { Events.RemoveHandler (DropDownEvent, value); }
 		}
-#if NET_2_0
 		public event EventHandler DropDownClosed
 		{
 			add { Events.AddHandler (DropDownClosedEvent, value); }
 			remove { Events.RemoveHandler (DropDownClosedEvent, value); }
 		}
-#endif
 
 		public event EventHandler DropDownStyleChanged {
 			add { Events.AddHandler (DropDownStyleChangedEvent, value); }
@@ -184,7 +171,6 @@ namespace System.Windows.Forms
 			add { Events.AddHandler (MeasureItemEvent, value); }
 			remove { Events.RemoveHandler (MeasureItemEvent, value); }
 		}
-#if NET_2_0
 		[Browsable (false)]
 		[EditorBrowsable (EditorBrowsableState.Never)]
 		public new event EventHandler PaddingChanged
@@ -192,7 +178,6 @@ namespace System.Windows.Forms
 			add { base.PaddingChanged += value; }
 			remove { base.PaddingChanged -= value; }
 		}
-#endif
 		
 		[Browsable (false)]
 		[EditorBrowsable (EditorBrowsableState.Never)]
@@ -210,18 +195,15 @@ namespace System.Windows.Forms
 			add { Events.AddHandler (SelectionChangeCommittedEvent, value); }
 			remove { Events.RemoveHandler (SelectionChangeCommittedEvent, value); }
 		}
-#if NET_2_0
 		public event EventHandler TextUpdate
 		{
 			add { Events.AddHandler (TextUpdateEvent, value); }
 			remove { Events.RemoveHandler (TextUpdateEvent, value); }
 		}
-#endif
 
 		#endregion Events
 
 		#region Public Properties
-#if NET_2_0
 		[MonoTODO("AutoCompletion algorithm is currently not implemented.")]
 		[DesignerSerializationVisibility (DesignerSerializationVisibility.Content)]
 		[Browsable (true)]
@@ -306,7 +288,6 @@ namespace System.Windows.Forms
 				textbox_ctrl.AutoCompleteInternalSource = null;
 			}
 		}
-#endif
 		public override Color BackColor {
 			get { return base.BackColor; }
 			set {
@@ -329,20 +310,17 @@ namespace System.Windows.Forms
 			}
 		}
 
-#if NET_2_0
 		[Browsable (false)]
 		[EditorBrowsable (EditorBrowsableState.Never)]
 		public override ImageLayout BackgroundImageLayout {
 			get { return base.BackgroundImageLayout; }
 			set { base.BackgroundImageLayout = value; }
 		}
-#endif
 
 		protected override CreateParams CreateParams {
 			get { return base.CreateParams;}
 		}
 
-#if NET_2_0
 		[DefaultValue ((string)null)]
 		[AttributeProvider (typeof (IListSource))]
 		[RefreshProperties (RefreshProperties.Repaint)]
@@ -351,7 +329,6 @@ namespace System.Windows.Forms
 			get { return base.DataSource; }
 			set { base.DataSource = value; }
 		}
-#endif
 
 		protected override Size DefaultSize {
 			get { return new Size (121, 21); }
@@ -378,7 +355,6 @@ namespace System.Windows.Forms
 			}
 		}
 
-#if NET_2_0
 		[Browsable (true)]
 		[DefaultValue (106)]
 		[EditorBrowsable (EditorBrowsableState.Always)]
@@ -398,7 +374,6 @@ namespace System.Windows.Forms
 				IntegralHeight = false;
 			}
 		}
-#endif
 
 		[DefaultValue (ComboBoxStyle.DropDown)]
 		[RefreshProperties(RefreshProperties.Repaint)]
@@ -461,9 +436,7 @@ namespace System.Windows.Forms
 
 					if (IsHandleCreated == true)
 						Controls.AddImplicit (textbox_ctrl);
-#if NET_2_0
 					SetTextBoxAutoCompleteData ();
-#endif
 				}
 				
 				ResumeLayout ();
@@ -488,12 +461,8 @@ namespace System.Windows.Forms
 					return;
 					
 				if (value < 1)
-#if NET_2_0
 					throw new ArgumentOutOfRangeException ("DropDownWidth",
 						"The DropDownWidth value is less than one.");
-#else
-					throw new ArgumentException ("The DropDownWidth value is less than one.");
-#endif
 
 				dropdown_width = value;
 			}
@@ -519,7 +488,6 @@ namespace System.Windows.Forms
 			}
 		}
 
-#if NET_2_0
 		[DefaultValue (FlatStyle.Standard)]
 		[Localizable (true)]
 		[MWFCategory("Appearance")]
@@ -534,7 +502,6 @@ namespace System.Windows.Forms
 				Invalidate ();
 			}
 		}
-#endif
 
 		public override bool Focused {
 			get { return base.Focused; }
@@ -576,12 +543,8 @@ namespace System.Windows.Forms
 			}
 			set {
 				if (value < 1)
-#if NET_2_0
 					throw new ArgumentOutOfRangeException ("ItemHeight",
 						"The item height value is less than one.");
-#else
-					throw new ArgumentException ("The item height value is less than one.");
-#endif
 
 				item_height_specified = true;
 				item_height = value;
@@ -595,9 +558,7 @@ namespace System.Windows.Forms
 		[DesignerSerializationVisibility (DesignerSerializationVisibility.Content)]
 		[Localizable (true)]
 		[Editor ("System.Windows.Forms.Design.ListControlStringCollectionEditor, " + Consts.AssemblySystem_Design, typeof (System.Drawing.Design.UITypeEditor))]
-#if NET_2_0
 		[MergableProperty (false)]
-#endif
 		[MWFCategory("Data")]
 		public ComboBox.ObjectCollection Items {
 			get { return items; }
@@ -615,14 +576,12 @@ namespace System.Windows.Forms
 			}
 		}
 
-#if NET_2_0
 		public override Size MaximumSize {
 			get { return base.MaximumSize; }
 			set {
 				base.MaximumSize = new Size (value.Width, 0);
 			}
 		}
-#endif
 
 		[DefaultValue (0)]
 		[Localizable (true)]
@@ -644,7 +603,6 @@ namespace System.Windows.Forms
 			}
 		}
 
-#if NET_2_0
 		public override Size MinimumSize {
 			get { return base.MinimumSize; }
 			set {
@@ -659,7 +617,6 @@ namespace System.Windows.Forms
 			get { return base.Padding; }
 			set { base.Padding = value; }
 		}
-#endif
 
 		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
 		[Browsable (false)]
@@ -702,11 +659,6 @@ namespace System.Windows.Forms
 					
 				string retval = textbox_ctrl.SelectedText;
 				
-#if ONLY_1_1
-				// On 1.1, the textbox will return null, combobox returns ""
-				if (retval == null && !textbox_ctrl.IsHandleCreated)
-					return string.Empty;
-#endif					
 				return retval;
 			}
 			set {
@@ -840,9 +792,7 @@ namespace System.Windows.Forms
 		#endregion UIA Framework Properties
 
 		#region Public Methods
-#if NET_2_0
 		[Obsolete ("This method has been deprecated")]
-#endif
 		protected virtual void AddItemsCore (object[] value)
 		{
 			
@@ -853,7 +803,6 @@ namespace System.Windows.Forms
 			suspend_ctrlupdate = true;
 		}
 
-#if NET_2_0
 		protected override AccessibleObject CreateAccessibilityInstance ()
 		{
 			return base.CreateAccessibilityInstance ();
@@ -863,7 +812,6 @@ namespace System.Windows.Forms
 		{
 			base.CreateHandle ();
 		}
-#endif
 
 		protected override void Dispose (bool disposing)
 		{
@@ -901,18 +849,12 @@ namespace System.Windows.Forms
 			if (s == null || Items.Count == 0) 
 				return -1;
 
-#if NET_2_0
 			if (startIndex < -1 || startIndex >= Items.Count)
-#else
-			if (startIndex < -1 || startIndex >= Items.Count - 1)
-#endif
 				throw new ArgumentOutOfRangeException ("startIndex");
 
 			int i = startIndex;
-#if NET_2_0
 			if (i == (Items.Count - 1))
 				i = -1;
-#endif
 			do {
 				i++;
 				if (string.Compare (s, 0, GetItemText (Items [i]), 0, s.Length, true) == 0)
@@ -939,18 +881,12 @@ namespace System.Windows.Forms
 			if (s == null || Items.Count == 0) 
 				return -1;
 
-#if NET_2_0
 			if (startIndex < -1 || startIndex >= Items.Count)
-#else
-			if (startIndex < -1 || startIndex >= Items.Count - 1)
-#endif
 				throw new ArgumentOutOfRangeException ("startIndex");
 
 			int i = startIndex;
-#if NET_2_0
 			if (i == (Items.Count - 1))
 				i = -1;
-#endif
 			do {
 				i++;
 				if (string.Compare (s, GetItemText (Items [i]), ignoreCase, CultureInfo.CurrentCulture) == 0)
@@ -1067,14 +1003,12 @@ namespace System.Windows.Forms
 				eh (this, e);
 		}
 
-#if NET_2_0
 		protected virtual void OnDropDownClosed (EventArgs e)
 		{
 			EventHandler eh = (EventHandler) Events [DropDownClosedEvent];
 			if (eh != null)
 				eh (this, e);
 		}
-#endif
 
 		protected virtual void OnDropDownStyleChanged (EventArgs e)
 		{
@@ -1143,9 +1077,7 @@ namespace System.Windows.Forms
 				textbox_ctrl.ActivateCaret (false);
 				textbox_ctrl.ShowSelection = false;
 				textbox_ctrl.SelectionLength = 0;
-#if NET_2_0
 				textbox_ctrl.HideAutoCompleteList ();
-#endif
 			}
 
 			base.OnLostFocus (e);
@@ -1241,7 +1173,6 @@ namespace System.Windows.Forms
 				item_heights.Remove (Items [index]);
 		}
 
-#if NET_2_0
 		protected override void RefreshItems ()
 		{
 			for (int i = 0; i < Items.Count; i++) {
@@ -1283,39 +1214,30 @@ namespace System.Windows.Forms
 			base.OnTextChanged (e);
 		}
 
-#if NET_2_0
 		protected virtual void OnTextUpdate (EventArgs e)
 		{
 			EventHandler eh = (EventHandler) Events [TextUpdateEvent];
 			if (eh != null)
 				eh (this, e);
 		}
-#endif
 		protected override void OnMouseLeave (EventArgs e)
 		{
-#if NET_2_0
 			if (flat_style == FlatStyle.Popup)
 				Invalidate ();
-#endif
 			base.OnMouseLeave (e);
 		}
 		
 		protected override void OnMouseEnter (EventArgs e)
 		{
-#if NET_2_0
 			if (flat_style == FlatStyle.Popup)
 				Invalidate ();
-#endif
 			base.OnMouseEnter (e);
 		}
-#endif
 
-#if NET_2_0
 		protected override void ScaleControl (SizeF factor, BoundsSpecified specified)
 		{
 			base.ScaleControl (factor, specified);
 		}
-#endif
 
 		public void Select (int start, int length)
 		{
@@ -1387,13 +1309,11 @@ namespace System.Windows.Forms
 			case Msg.WM_KEYUP:
 			case Msg.WM_KEYDOWN:
 				Keys keys = (Keys) m.WParam.ToInt32 ();
-#if NET_2_0
 				// Don't pass the message to base if auto complete is being used and available.
 				if (textbox_ctrl != null && textbox_ctrl.CanNavigateAutoCompleteList) {
 					XplatUI.SendMessage (textbox_ctrl.Handle, (Msg) m.Msg, m.WParam, m.LParam);
 					return;
 				}
-#endif
 				if (keys == Keys.Up || keys == Keys.Down)
 					break;
 				goto case Msg.WM_CHAR;
@@ -1416,13 +1336,11 @@ namespace System.Windows.Forms
 		#endregion Public Methods
 
 		#region Private Methods
-#if NET_2_0
 		void OnAutoCompleteCustomSourceChanged(object sender, CollectionChangeEventArgs e) {
 			if(auto_complete_source == AutoCompleteSource.CustomSource) {
 				//FIXME: handle add, remove and refresh events in AutoComplete algorithm.
 			}
 		}
-#endif
 
 		internal override bool InternalCapture {
 			get { return Capture; }
@@ -1450,13 +1368,11 @@ namespace System.Windows.Forms
 				button_area.Y = text_area.Y + border;
 				button_area.Width = button_width;
 				button_area.Height = text_area.Height - 2 * border;
-#if NET_2_0
 				if (flat_style == FlatStyle.Popup || flat_style == FlatStyle.Flat) {
 					button_area.Inflate (1, 1);
 					button_area.X += 2;
 					button_area.Width -= 2;
 				}
-#endif
 			}
 
 			if (button_area != prev_button_area) {
@@ -1492,10 +1408,8 @@ namespace System.Windows.Forms
 			FlatStyle style = FlatStyle.Standard;
 			bool is_flat = false;
 
-#if NET_2_0
 			style = this.FlatStyle;
 			is_flat = style == FlatStyle.Flat || style == FlatStyle.Popup;
-#endif
 
 			theme.ComboBoxDrawBackground (this, dc, clip, style);
 
@@ -1566,10 +1480,8 @@ namespace System.Windows.Forms
 
 			FindMatchOrSetIndex(SelectedIndex);
 
-#if NET_2_0
 			if (textbox_ctrl != null)
 				textbox_ctrl.HideAutoCompleteList ();
-#endif
 
 			if (listbox_ctrl.ShowWindow ())
 				dropped_down = true;
@@ -1588,9 +1500,7 @@ namespace System.Windows.Forms
 			button_state = ButtonState.Normal;
 			Invalidate (button_area);
 			dropped_down = false;
-#if NET_2_0
 			OnDropDownClosed (EventArgs.Empty);
-#endif
 			/*
 			 * Apples X11 looses override-redirect when doing a Unmap/Map on a previously mapped window
 			 * this causes the popup to appear under the main form.  This is horrible but necessary
@@ -1602,12 +1512,10 @@ namespace System.Windows.Forms
 				listbox_ctrl.Dispose ();
 				listbox_ctrl = null;
 			}
-#if NET_2_0
 			 // The auto complete list could have been shown after the listbox,
 			 // so make sure it's hidden.
 			 if (textbox_ctrl != null)
 				 textbox_ctrl.HideAutoCompleteList ();
-#endif
 		}
 		
 		private int FindStringCaseInsensitive (string search)
@@ -1887,6 +1795,12 @@ namespace System.Windows.Forms
 			}
 		}
 
+		MouseEventArgs TranslateMouseEventArgs (MouseEventArgs args)
+		{
+			Point loc = PointToClient (Control.MousePosition);
+			return new MouseEventArgs (args.Button, args.Clicks, loc.X, loc.Y, args.Delta);
+		}
+
 		internal override void OnPaintInternal (PaintEventArgs pevent)
 		{
 			if (suspend_ctrlupdate)
@@ -1998,7 +1912,6 @@ namespace System.Windows.Forms
 			
 			#region UIA Framework Events
 
-#if NET_2_0
 			//NOTE:
 			//	We are using Reflection to add/remove internal events.
 			//	Class ListProvider uses the events.
@@ -2018,7 +1931,6 @@ namespace System.Windows.Forms
 				if (eh != null)
 					eh (owner, args);
 			}
-#endif
 
 			#endregion UIA Framework Events
 
@@ -2051,17 +1963,13 @@ namespace System.Windows.Forms
 					if (value == null)
 						throw new ArgumentNullException ("value");
 
-#if NET_2_0
 					//UIA Framework event: Item Removed
 					OnUIACollectionChangedEvent (new CollectionChangeEventArgs (CollectionChangeAction.Remove, object_items [index]));
-#endif
 
 					object_items[index] = value;
 					
-#if NET_2_0
 					//UIA Framework event: Item Added
 					OnUIACollectionChangedEvent (new CollectionChangeEventArgs (CollectionChangeAction.Add, value));
-#endif
 
 					if (owner.listbox_ctrl != null)
 						owner.listbox_ctrl.InvalidateItem (index);
@@ -2119,10 +2027,8 @@ namespace System.Windows.Forms
 				owner.UpdatedItems ();
 				owner.Refresh ();
 				
-#if NET_2_0
 				//UIA Framework event: Items list cleared
 				OnUIACollectionChangedEvent (new CollectionChangeEventArgs (CollectionChangeAction.Refresh, null));
-#endif
 			}
 			
 			public bool Contains (object value)
@@ -2133,7 +2039,6 @@ namespace System.Windows.Forms
 				return object_items.Contains (value);
 			}
 
-#if NET_2_0
 			public void CopyTo (object [] destination, int arrayIndex)
 			{
 				object_items.CopyTo (destination, arrayIndex);
@@ -2143,17 +2048,6 @@ namespace System.Windows.Forms
 			{
 				object_items.CopyTo (destination, index);
 			}
-#else
-			public void CopyTo (object [] dest, int arrayIndex)
-			{
-				object_items.CopyTo (dest, arrayIndex);
-			}
-
-			void ICollection.CopyTo (Array dest, int index)
-			{
-				object_items.CopyTo (dest, index);
-			}
-#endif
 
 			public IEnumerator GetEnumerator ()
 			{
@@ -2186,10 +2080,8 @@ namespace System.Windows.Forms
 					AddItem (item, false);
 				else {
 					object_items.Insert (index, item);
-#if NET_2_0
 					//UIA Framework event: Item added
 					OnUIACollectionChangedEvent (new CollectionChangeEventArgs (CollectionChangeAction.Add, item));
-#endif					
 				}
 				
 				owner.EndUpdate ();	// Calls UpdatedItems
@@ -2214,18 +2106,13 @@ namespace System.Windows.Forms
 				if (index == owner.SelectedIndex)
 					owner.SelectedIndex = -1;
 
-#if NET_2_0
 				object removed = object_items [index];
-#endif
-
 
 				object_items.RemoveAt (index);
 				owner.UpdatedItems ();
 				
-#if NET_2_0
 				//UIA Framework event: Item removed
 				OnUIACollectionChangedEvent (new CollectionChangeEventArgs (CollectionChangeAction.Remove, removed));
-#endif
 			}
 			#endregion Public Methods
 
@@ -2249,10 +2136,8 @@ namespace System.Windows.Forms
 							if (index <= owner.selected_index && owner.IsHandleCreated)
 								owner.selected_index++;
 								
-#if NET_2_0
 							//UIA Framework event: Item added
 							OnUIACollectionChangedEvent (new CollectionChangeEventArgs (CollectionChangeAction.Add, item));
-#endif
 
 							return index;
 						}
@@ -2261,10 +2146,8 @@ namespace System.Windows.Forms
 				}
 				object_items.Add (item);
 				
-#if NET_2_0
 				//UIA Framework event: Item added
 				OnUIACollectionChangedEvent (new CollectionChangeEventArgs (CollectionChangeAction.Add, item));
-#endif
 				
 				return object_items.Count - 1;
 			}
@@ -2318,9 +2201,7 @@ namespace System.Windows.Forms
 				this.owner = owner;
 				ShowSelection = false;
 				owner.EnabledChanged += OwnerEnabledChangedHandler;
-#if NET_2_0
 				owner.LostFocus += OwnerLostFocusHandler;
-#endif
 			}
 
 			void OwnerEnabledChangedHandler (object o, EventArgs args)
@@ -2328,7 +2209,6 @@ namespace System.Windows.Forms
 				ShowSelection = owner.Focused && owner.Enabled;
 			}
 
-#if NET_2_0
 			void OwnerLostFocusHandler (object o, EventArgs args)
 			{
 				if (IsAutoCompleteAvailable)
@@ -2348,7 +2228,6 @@ namespace System.Windows.Forms
 				base.OnAutoCompleteValueSelected (args);
 				owner.Text = Text;
 			}
-#endif
 
 			internal void SetSelectable (bool selectable)
 			{
@@ -2363,13 +2242,11 @@ namespace System.Windows.Forms
 					document.CaretLostFocus ();
 			}
 			
-#if NET_2_0
 			internal override void OnTextUpdate ()
 			{
 				base.OnTextUpdate ();
 				owner.OnTextUpdate (EventArgs.Empty);
 			}
-#endif
 			
 			protected override void OnGotFocus (EventArgs e)
 			{
@@ -2381,6 +2258,32 @@ namespace System.Windows.Forms
 				owner.Select (false, true);
 			}
 
+			// We have to pass these events to our owner - MouseMove is not, however.
+
+			protected override void OnMouseDown (MouseEventArgs e)
+			{
+				base.OnMouseDown (e);
+				owner.OnMouseDown (owner.TranslateMouseEventArgs (e));
+			}
+
+			protected override void OnMouseUp (MouseEventArgs e)
+			{
+				base.OnMouseUp (e);
+				owner.OnMouseUp (owner.TranslateMouseEventArgs (e));
+			}
+
+			protected override void OnMouseClick (MouseEventArgs e)
+			{
+				base.OnMouseClick (e);
+				owner.OnMouseClick (owner.TranslateMouseEventArgs (e));
+			}
+
+			protected override void OnMouseDoubleClick (MouseEventArgs e)
+			{
+				base.OnMouseDoubleClick (e);
+				owner.OnMouseDoubleClick (owner.TranslateMouseEventArgs (e));
+			}
+
 			public override bool Focused {
 				get {
 					return owner.Focused;
@@ -2548,7 +2451,6 @@ namespace System.Windows.Forms
 						show_scrollbar = owner.Items.Count > owner.MaxDropDownItems;
 						
 					} else	{
-#if NET_2_0
 						if (owner.DropDownHeight == default_drop_down_height) { // ignore DropDownHeight
 							height = owner.ItemHeight * visible_items_count;
 							show_scrollbar = owner.Items.Count > owner.MaxDropDownItems;
@@ -2557,10 +2459,6 @@ namespace System.Windows.Forms
 							height = owner.DropDownHeight;
 							show_scrollbar = (owner.Items.Count * owner.ItemHeight) > height;
 						}
-#else		
-						height = owner.ItemHeight * visible_items_count;
-						show_scrollbar = owner.Items.Count > owner.MaxDropDownItems;
-#endif
 					}
 				}
 				
@@ -2588,11 +2486,7 @@ namespace System.Windows.Forms
 					vscrollbar_ctrl.Dock = DockStyle.Right;
 
 					vscrollbar_ctrl.Maximum = owner.Items.Count - 1;
-#if NET_2_0
 					int large = page_size;
-#else
-					int large = (dropdown_style == ComboBoxStyle.Simple ? page_size : owner.maxdrop_items) - 1;
-#endif
 					if (large < 1)
 						large = 1;
 					vscrollbar_ctrl.LargeChange = large;
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ComboBoxRenderer.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ComboBoxRenderer.cs
index c2b3a52..bfa3888 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ComboBoxRenderer.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ComboBoxRenderer.cs
@@ -26,7 +26,6 @@
 //	Jonathan Pobst (monkey at jpobst.com)
 //
 
-#if NET_2_0
 using System.Drawing;
 using System.Windows.Forms.VisualStyles;
 
@@ -123,4 +122,3 @@ namespace System.Windows.Forms
 		#endregion
 	}
 }
-#endif
\ No newline at end of file
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/CommonDialog.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/CommonDialog.cs
index e161815..fc2b931 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/CommonDialog.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/CommonDialog.cs
@@ -78,9 +78,7 @@ namespace System.Windows.Forms {
 
 		#region Local Variables
 		internal DialogForm	form;
-#if NET_2_0
 		private object tag;
-#endif
 		#endregion Local Variables
 
 		#region Public Constructors
@@ -89,7 +87,6 @@ namespace System.Windows.Forms {
 		#endregion Public Constructors
 
 		#region Public Properties
-#if NET_2_0
 		[Localizable (false)]
 		[Bindable (true)]
 		[TypeConverter (typeof (StringConverter))]
@@ -99,7 +96,6 @@ namespace System.Windows.Forms {
 			get { return this.tag; }
 			set { this.tag = value; }
 		}
-#endif
 		#endregion
 
 		#region Internal Methods
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ContainerControl.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ContainerControl.cs
index 20a9425..44c3ea1 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ContainerControl.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ContainerControl.cs
@@ -32,10 +32,8 @@ using System.Drawing;
 using System.Runtime.InteropServices;
 
 namespace System.Windows.Forms {
-#if NET_2_0
 	[ClassInterface (ClassInterfaceType.AutoDispatch)]
 	[ComVisible (true)]
-#endif
 	public class ContainerControl : ScrollableControl, IContainerControl {
 		private Control		active_control;
 		private Control		unvalidated_control;
@@ -44,13 +42,11 @@ namespace System.Windows.Forms {
 		// This is an internal hack that allows some container controls
 		// to not auto select their child when they are activated
 		internal bool 		auto_select_child = true;
-#if NET_2_0
 		private SizeF		auto_scale_dimensions;
 		private AutoScaleMode	auto_scale_mode;
 		private bool		auto_scale_mode_set;
 		private bool		auto_scale_pending;
 		private bool		is_auto_scaling;
-#endif
 
 		internal bool validation_failed; //track whether validation was cancelled by a validating control
 
@@ -59,10 +55,8 @@ namespace System.Windows.Forms {
 			active_control = null;
 			unvalidated_control = null;
 			ControlRemoved += new ControlEventHandler(OnControlRemoved);
-#if NET_2_0
 			auto_scale_dimensions = SizeF.Empty;
 			auto_scale_mode = AutoScaleMode.Inherit;
-#endif
 		}
 		#endregion	// Public Constructors
 
@@ -333,7 +327,6 @@ namespace System.Windows.Forms {
 			}
 		}
 
-#if NET_2_0
 		[Browsable (false)]
 		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
 		[EditorBrowsable (EditorBrowsableState.Advanced)]
@@ -386,7 +379,6 @@ namespace System.Windows.Forms {
 				}
 			}
 		}
-#endif // NET_2_0
 
 		[Browsable (false)]
 		public override BindingContext BindingContext {
@@ -402,7 +394,6 @@ namespace System.Windows.Forms {
 			}
 		}
 
-#if NET_2_0
 		[Browsable (false)]
 		[EditorBrowsable (EditorBrowsableState.Advanced)]
 		public SizeF CurrentAutoScaleDimensions {
@@ -421,7 +412,6 @@ namespace System.Windows.Forms {
 				return auto_scale_dimensions;
 			}
 		}
-#endif
 
 		[Browsable (false)]
 		[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
@@ -444,11 +434,9 @@ namespace System.Windows.Forms {
 		#endregion	// Public Instance Properties
 
 		#region Protected Instance Methods
-#if NET_2_0
 		protected override bool CanEnableIme {
 			get { return false; }
 		}
-#endif
 		protected override CreateParams CreateParams {
 			get {
 				return base.CreateParams;
@@ -457,7 +445,6 @@ namespace System.Windows.Forms {
 		#endregion	// Public Instance Methods
 
 		#region Public Instance Methods
-#if NET_2_0
 		internal void PerformAutoScale (bool called_by_scale)
 		{
 			if ((AutoScaleMode == AutoScaleMode.Inherit) && !called_by_scale)
@@ -502,7 +489,6 @@ namespace System.Windows.Forms {
 		internal bool IsAutoScaling {
 			get { return is_auto_scaling; }
 		}
-#endif
 
 		[MonoTODO ("Stub, not implemented")]
 		static bool ValidateWarned;
@@ -515,7 +501,6 @@ namespace System.Windows.Forms {
 			return true;
 		}
 
-#if NET_2_0
 		public bool Validate (bool checkAutoValidate)
 		{
 			if ((checkAutoValidate && (AutoValidate != AutoValidate.Disable)) || !checkAutoValidate)
@@ -543,7 +528,6 @@ namespace System.Windows.Forms {
 
 			return true;
 		}
-#endif
 
 		bool IContainerControl.ActivateControl(Control control) {
 			return Select(control);
@@ -582,7 +566,6 @@ namespace System.Windows.Forms {
 			OnBindingContextChanged (EventArgs.Empty);
 		}
 
-#if NET_2_0
 		protected override bool ProcessCmdKey (ref Message msg, Keys keyData)
 		{
 			if (ToolStripManager.ProcessCmdKey (ref msg, keyData) == true)
@@ -590,7 +573,6 @@ namespace System.Windows.Forms {
 				
 			return base.ProcessCmdKey (ref msg, keyData);
 		}
-#endif
 
 		[EditorBrowsable (EditorBrowsableState.Advanced)]
 		protected override bool ProcessDialogChar(char charCode) {
@@ -701,10 +683,6 @@ namespace System.Windows.Forms {
 						Select (active_control);
 					else
 						base.WndProc (ref m);
-#if false
-					else
-						SelectNextControl (null, true, true, true, false);
-#endif
 				break;
 
 				default:
@@ -769,7 +747,6 @@ namespace System.Windows.Forms {
 			// do nothing here, only called if it is a Form
 		}
 
-#if NET_2_0
 		private bool ValidateNestedControls (Control c, ValidationConstraints constraints, bool recurse)
 		{
 			bool validate_result = true;
@@ -808,10 +785,8 @@ namespace System.Windows.Forms {
 
 			return true;
 		}
-#endif
 		#endregion	// Internal Methods
 
-#if NET_2_0
 		protected override void OnParentChanged (EventArgs e)
 		{
 			base.OnParentChanged (e);
@@ -870,6 +845,5 @@ namespace System.Windows.Forms {
 			add { Events.AddHandler (OnValidateChanged, value); }
 			remove { Events.RemoveHandler (OnValidateChanged, value); }
 		}
-#endif
 	}
 }
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ContextMenu.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ContextMenu.cs
index 115dcdd..9fa229b 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ContextMenu.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ContextMenu.cs
@@ -37,17 +37,13 @@ namespace System.Windows.Forms
 		private Control	src_control;
 
 		#region Events
-#if NET_2_0
 		static object CollapseEvent = new object ();
-#endif
 		static object PopupEvent = new object ();
 
-#if NET_2_0
 		public event EventHandler Collapse {
 			add { Events.AddHandler (CollapseEvent, value); }
 			remove { Events.RemoveHandler (CollapseEvent, value); }
 		}
-#endif
 
 		public event EventHandler Popup {
 			add { Events.AddHandler (PopupEvent, value); }
@@ -71,9 +67,7 @@ namespace System.Windows.Forms
 		#region Public Properties
 		
 		[Localizable(true)]
-#if NET_2_0
 		[DefaultValue (RightToLeft.No)]
-#endif
 		public virtual RightToLeft RightToLeft {
 			get { return right_to_left; }
 			set { right_to_left = value; }
@@ -89,7 +83,6 @@ namespace System.Windows.Forms
 
 		#region Public Methods
 
-#if NET_2_0
 		protected internal virtual bool ProcessCmdKey (ref Message msg, Keys keyData, Control control)
 		{
 			src_control = control;
@@ -102,7 +95,6 @@ namespace System.Windows.Forms
 			if (eh != null)
 				eh (this, e);
 		}
-#endif
 
 		protected internal virtual void OnPopup (EventArgs e)
 		{
@@ -121,12 +113,9 @@ namespace System.Windows.Forms
 			OnPopup (EventArgs.Empty);
 			pos = control.PointToScreen (pos);
 			MenuTracker.TrackPopupMenu (this, pos);
-#if NET_2_0
 			OnCollapse (EventArgs.Empty);
-#endif
 		}
 
-#if NET_2_0
 		public void Show (Control control, Point pos, LeftRightAlignment alignment)
 		{
 			Point point;
@@ -138,7 +127,6 @@ namespace System.Windows.Forms
 
 			Show (control, point);
 		}
-#endif
 		#endregion Public Methods
 		internal void Hide ()
 		{
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ContextMenuStrip.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ContextMenuStrip.cs
index a57ce86..1df1488 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ContextMenuStrip.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ContextMenuStrip.cs
@@ -25,7 +25,6 @@
 // Authors:
 //	Jonathan Pobst (monkey at jpobst.com)
 //
-#if NET_2_0
 using System.ComponentModel;
 using System.Runtime.InteropServices;
 
@@ -79,4 +78,3 @@ namespace System.Windows.Forms
 		}
 	}
 }
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Control.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Control.cs
index 5d04a3e..a895b09 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Control.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Control.cs
@@ -49,19 +49,15 @@ using System.Threading;
 
 namespace System.Windows.Forms
 {
-#if NET_2_0
 	[ComVisible(true)]
 	[ClassInterface (ClassInterfaceType.AutoDispatch)]
-#endif
 	[Designer("System.Windows.Forms.Design.ControlDesigner, " + Consts.AssemblySystem_Design, "System.ComponentModel.Design.IDesigner")]
 	[DefaultProperty("Text")]
 	[DefaultEvent("Click")]
 	[DesignerSerializer("System.Windows.Forms.Design.ControlCodeDomSerializer, " + Consts.AssemblySystem_Design, "System.ComponentModel.Design.Serialization.CodeDomSerializer, " + Consts.AssemblySystem_Design)]
 	[ToolboxItemFilter("System.Windows.Forms")]
 	public class Control : Component, ISynchronizeInvoke, IWin32Window
-#if NET_2_0
 		, IBindableComponent, IDropTarget, IBounds
-#endif
 	{
 		#region Local Variables
 
@@ -148,7 +144,6 @@ namespace System.Windows.Forms
 
 		ControlBindingsCollection data_bindings;
 
-#if NET_2_0
 		static bool verify_thread_handle;
 		Padding padding;
 		ImageLayout backgroundimage_layout;
@@ -160,7 +155,6 @@ namespace System.Windows.Forms
 		Point auto_scroll_offset;
 		private AutoSizeMode auto_size_mode;
 		private bool suppressing_key_press;
-#endif
 
 		#endregion	// Local Variables
 
@@ -333,13 +327,11 @@ namespace System.Windows.Forms
 			{
 			}
 
-#if NET_2_0
 			[MonoTODO ("Stub, does nothing")]
 			public void NotifyClients (AccessibleEvents accEvent, int objectID, int childID)
 			{
 			}
 
-#endif
 			public override string ToString() {
 				return "ControlAccessibleObject: Owner = " + owner.ToString() + ", Text: " + owner.text;
 			}
@@ -393,7 +385,8 @@ namespace System.Windows.Forms
 				buffered_graphics.Dispose ();
 			}
 			
-			public void Invalidate () {
+			public void Invalidate ()
+			{
 				if (InvalidRegion != null)
 					InvalidRegion.Dispose ();
 				InvalidRegion = new Region (parent.ClientRectangle);
@@ -426,17 +419,9 @@ namespace System.Windows.Forms
 		}
 
 		[ListBindable (false)]
-#if NET_2_0
 		[ComVisible (false)]
 		public class ControlCollection : Layout.ArrangedElementCollection, IList, ICollection, ICloneable, IEnumerable {
-#else
-		[DesignerSerializer("System.Windows.Forms.Design.ControlCollectionCodeDomSerializer, " + Consts.AssemblySystem_Design, "System.ComponentModel.Design.Serialization.CodeDomSerializer, " + Consts.AssemblySystem_Design)]
-		public class ControlCollection : IList, ICollection, ICloneable, IEnumerable {
-#endif
 			#region ControlCollection Local Variables
-#if !NET_2_0
-			ArrayList list;
-#endif
 			ArrayList impl_list;
 			Control [] all_controls;
 			Control owner;
@@ -446,27 +431,12 @@ namespace System.Windows.Forms
 			public ControlCollection (Control owner)
 			{
 				this.owner = owner;
-#if !NET_2_0
-				this.list = new ArrayList();
-#endif
 			}
 			#endregion
 
 			#region ControlCollection Public Instance Properties
 
-#if !NET_2_0
-			public int Count {
-				get { return list.Count; }
-			}
-
-			public bool IsReadOnly {
-				get {
-					return list.IsReadOnly;
-				}
-			}
-#endif
 
-#if NET_2_0
 			public Control Owner {
 				get { return this.owner; }
 			}
@@ -482,9 +452,7 @@ namespace System.Windows.Forms
 				}
 			}
 			
-			new
-#endif
-			public virtual Control this[int index] {
+			new public virtual Control this[int index] {
 				get {
 					if (index < 0 || index >= list.Count) {
 						throw new ArgumentOutOfRangeException("index", index, "ControlCollection does not have that many controls");
@@ -590,9 +558,7 @@ namespace System.Windows.Forms
 				if (control.VisibleInternal)
 					owner.PerformLayout (control, "Parent");
 			}
-#if NET_2_0
 			[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
-#endif
 			public virtual void AddRange (Control[] controls)
 			{
 				if (controls == null)
@@ -623,9 +589,7 @@ namespace System.Windows.Forms
 				}
 			}
 
-#if NET_2_0
-			new
-#endif
+			new 
 			public virtual void Clear ()
 			{
 				all_controls = null;
@@ -660,30 +624,13 @@ namespace System.Windows.Forms
 				return Contains (value) || ImplicitContains (value);
 			}
 
-#if NET_2_0
+
 			public virtual bool ContainsKey (string key)
 			{
 				return IndexOfKey (key) >= 0;
 			}
-#endif
 
-#if !NET_2_0
-			public void CopyTo (Array dest, int index)
-			{
-				list.CopyTo (dest, index);
-			}
 
-			public override bool Equals (object other)
-			{
-				if (other is ControlCollection && (((ControlCollection)other).owner==this.owner)) {
-					return(true);
-				} else {
-					return(false);
-				}
-			}
-#endif
-
-#if NET_2_0
 			// LAMESPEC: MSDN says AE, MS implementation throws ANE
 			public Control[] Find (string key, bool searchAllChildren)
 			{
@@ -702,18 +649,12 @@ namespace System.Windows.Forms
 				
 				return (Control[])al.ToArray (typeof (Control));
 			}
-#endif
 
 			public int GetChildIndex(Control child) {
 				return GetChildIndex(child, false);
 			}
 
-#if NET_2_0
-			public virtual int
-#else
-			public int
-#endif
-			GetChildIndex(Control child, bool throwException) {
+			public virtual int GetChildIndex(Control child, bool throwException) {
 				int index;
 
 				index=list.IndexOf(child);
@@ -724,11 +665,7 @@ namespace System.Windows.Forms
 				return index;
 			}
 
-#if NET_2_0
 			public override IEnumerator
-#else
-			public IEnumerator
-#endif
 			GetEnumerator () {
 				return new ControlCollectionEnumerator (list);
 			}
@@ -758,19 +695,11 @@ namespace System.Windows.Forms
 				return all_controls;
 			}
 
-#if !NET_2_0
-			public override int GetHashCode ()
-			{
-				return base.GetHashCode ();
-			}
-#endif
-
 			public int IndexOf (Control control)
 			{
 				return list.IndexOf (control);
 			}
 
-#if NET_2_0
 			public virtual int IndexOfKey (string key)
 			{
 				if (string.IsNullOrEmpty (key))
@@ -782,7 +711,6 @@ namespace System.Windows.Forms
 						
 				return -1;
 			}
-#endif
 
 			public virtual void Remove (Control value)
 			{
@@ -827,7 +755,6 @@ namespace System.Windows.Forms
 				Remove ((Control) list [index]);
 			}
 
-#if NET_2_0
 			public virtual void RemoveByKey (string key)
 			{
 				int index = IndexOfKey (key);
@@ -835,14 +762,8 @@ namespace System.Windows.Forms
 				if (index >= 0)
 					RemoveAt (index);
 			}
-#endif
 
-#if NET_2_0
-			public virtual void
-#else
-			public void
-#endif
-			SetChildIndex(Control child, int newIndex)
+			public virtual void SetChildIndex(Control child, int newIndex)
 			{
 				if (child == null)
 					throw new ArgumentNullException ("child");
@@ -874,52 +795,6 @@ namespace System.Windows.Forms
 
 			#region ControlCollection Interface Properties
 
-#if !NET_2_0
-			object IList.this [int index] {
-				get {
-					if (index<0 || index>=list.Count) {
-						throw new ArgumentOutOfRangeException("index", index, "ControlCollection does not have that many controls");
-					}
-					return this[index];
-				}
-
-				set {
-					if (!(value is Control)) {
-						throw new ArgumentException("Object of type Control required", "value");
-					}
-
-					all_controls = null;
-					Control ctrl = (Control) value;
-					list[index]= ctrl;
-
-					ctrl.ChangeParent(owner);
-
-					ctrl.InitLayout();
-
-					owner.UpdateChildrenZOrder();
-					owner.PerformLayout(ctrl, "Parent");
-				}
-			}
-
-			bool IList.IsFixedSize {
-				get {
-					return false;
-				}
-			}
-
-			bool ICollection.IsSynchronized {
-				get {
-					return list.IsSynchronized;
-				}
-			}
-
-			object ICollection.SyncRoot {
-				get {
-					return list.SyncRoot;
-				}
-			}
-#endif
-
 			#endregion // ControlCollection Interface Properties
 
 			#region ControlCollection Interface Methods
@@ -936,33 +811,6 @@ namespace System.Windows.Forms
 				return this.IndexOf ((Control)control);
 			}
 
-#if !NET_2_0
-			bool IList.Contains (object control)
-			{
-				if (!(control is Control))
-					throw new ArgumentException ("Object of type Control required", "control");
-
-				return this.Contains ((Control) control);
-			}
-
-			int IList.IndexOf (object control)
-			{
-				if (!(control is Control))
-					throw new ArgumentException ("Object of type Control  required", "control");
-
-				return this.IndexOf ((Control) control);
-			}
-
-			void IList.Insert (int index, object value)
-			{
-				if (!(value is Control))
-					throw new ArgumentException("Object of type Control required", "value");
-
-				all_controls = null;
-				list.Insert (index, value);
-			}
-#endif
-
 			void IList.Remove (object control)
 			{
 				if (!(control is Control))
@@ -1020,11 +868,9 @@ namespace System.Windows.Forms
 		#region Public Constructors
 		public Control ()
 		{
-#if NET_2_0
 			if (WindowsFormsSynchronizationContext.AutoInstall)
 				if (!(SynchronizationContext.Current is WindowsFormsSynchronizationContext))
 					SynchronizationContext.SetSynchronizationContext (new WindowsFormsSynchronizationContext ());
-#endif
 
 			layout_type = LayoutType.Anchor;
 			anchor_style = AnchorStyles.Top | AnchorStyles.Left;
@@ -1055,7 +901,6 @@ namespace System.Windows.Forms
 			show_focus_cues = SystemInformation.MenuAccessKeysUnderlined;
 			use_wait_cursor = false;
 
-#if NET_2_0
 			backgroundimage_layout = ImageLayout.Tile;
 			use_compatible_text_rendering = Application.use_compatible_text_rendering;
 			padding = this.DefaultPadding;
@@ -1063,14 +908,11 @@ namespace System.Windows.Forms
 			minimum_size = new Size();
 			margin = this.DefaultMargin;
 			auto_size_mode = AutoSizeMode.GrowOnly;
-#endif
 
 			control_style = ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | 
 					ControlStyles.Selectable | ControlStyles.StandardClick | 
 					ControlStyles.StandardDoubleClick;
-#if NET_2_0
 			control_style |= ControlStyles.UseTextForAccessibility;
-#endif
 
 			parent = null;
 			background_image = null;
@@ -1148,15 +990,11 @@ namespace System.Windows.Forms
 		internal Rectangle PaddingClientRectangle
 		{
 			get {
-#if NET_2_0
 				return new Rectangle (
 					ClientRectangle.Left   + padding.Left,
 					ClientRectangle.Top    + padding.Top, 
 					ClientRectangle.Width  - padding.Horizontal, 
 					ClientRectangle.Height - padding.Vertical);
-#else
-				return ClientRectangle;
-#endif
 			}
 		}
 
@@ -1264,7 +1102,6 @@ namespace System.Windows.Forms
 
 		#region Private & Internal Methods
 		
-#if NET_2_0
 		void IDropTarget.OnDragDrop (DragEventArgs drgEvent)
 		{
 			OnDragDrop (drgEvent);
@@ -1284,7 +1121,6 @@ namespace System.Windows.Forms
 		{
 			OnDragOver (drgEvent);
 		}
-#endif
 
 		internal IAsyncResult BeginInvokeInternal (Delegate method, object [] args) {
 			return BeginInvokeInternal (method, args, FindControlToInvokeOn ());
@@ -1302,17 +1138,9 @@ namespace System.Windows.Forms
 			data.Args = args;
 			data.Result = result;
 
-#if NET_2_0
 			if (!ExecutionContext.IsFlowSuppressed ()) {
 				data.Context = ExecutionContext.Capture ();
 			}
-#else
-#if !MWF_ON_MSRUNTIME
-			if (SecurityManager.SecurityEnabled) {
-				data.Stack = CompressedStack.GetCompressedStack ();
-			}
-#endif
-#endif
 
 			XplatUI.SendAsyncMethod (data);
 			return result;
@@ -1545,7 +1373,7 @@ namespace System.Windows.Forms
 
 			if (background_image == null) {
 				if (!tbstyle_flat) {
-					Rectangle paintRect = new Rectangle(pevent.ClipRectangle.X, pevent.ClipRectangle.Y, pevent.ClipRectangle.Width, pevent.ClipRectangle.Height);
+					Rectangle paintRect = pevent.ClipRectangle;
 					Brush pen = ThemeEngine.Current.ResPool.GetSolidBrush(BackColor);
 					pevent.Graphics.FillRectangle(pen, paintRect);
 				}
@@ -1556,7 +1384,6 @@ namespace System.Windows.Forms
 		}
 
 		void DrawBackgroundImage (Graphics g) {
-#if NET_2_0
 			Rectangle drawing_rectangle = new Rectangle ();
 			g.FillRectangle (ThemeEngine.Current.ResPool.GetSolidBrush (BackColor), ClientRectangle);
 				
@@ -1594,11 +1421,6 @@ namespace System.Windows.Forms
 
 			g.DrawImage (background_image, drawing_rectangle);
 
-#else
-			using (TextureBrush b = new TextureBrush (background_image, WrapMode.Tile)) {
-				g.FillRectangle (b, ClientRectangle);
-			}
-#endif
 		}
 
 		internal virtual void DndEnter (DragEventArgs e) {
@@ -1826,19 +1648,11 @@ namespace System.Windows.Forms
 			bool standardclick = GetStyle (ControlStyles.StandardClick);
 			bool standardclickclick = GetStyle (ControlStyles.StandardDoubleClick);
 			if ((clicks > 1) && standardclick && standardclickclick) {
-#if NET_2_0
 				OnDoubleClick (me);
 				OnMouseDoubleClick (me);
-#else
-				OnDoubleClick(EventArgs.Empty);
-#endif
 			} else if (clicks == 1 && standardclick && !ValidationFailed) {
-#if NET_2_0
 				OnClick (me);
 				OnMouseClick (me);
-#else
-				OnClick(EventArgs.Empty);
-#endif
 			}
 		}
 		
@@ -1960,12 +1774,10 @@ namespace System.Windows.Forms
 			return CreateParams;
 		}
 
-#if NET_2_0
 		internal virtual Size GetPreferredSizeCore (Size proposedSize)
 		{
 			return this.explicit_bounds.Size;
 		}
-#endif
 
 		private void UpdateDistances() {
 			if (parent != null) {
@@ -2024,10 +1836,8 @@ namespace System.Windows.Forms
 				if (force_double_buffer)
 					return true;
 					
-#if NET_2_0
 				if (DoubleBuffered)
 					return true;
-#endif
 				return (control_style & ControlStyles.DoubleBuffer) != 0;
 			}
 		}
@@ -2077,7 +1887,6 @@ namespace System.Windows.Forms
 			}
 		}
 		
-#if NET_2_0
 		[EditorBrowsable (EditorBrowsableState.Advanced)]
 		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
 		[Browsable (false)]
@@ -2092,7 +1901,6 @@ namespace System.Windows.Forms
 				verify_thread_handle = value;
 			}
 		}
-#endif
 		#endregion	// Public Static Properties
 
 		#region Public Instance Properties
@@ -2202,7 +2010,6 @@ namespace System.Windows.Forms
 			}
 		}
 
-#if NET_2_0
 		[Browsable (false)]
 		[DefaultValue (typeof (Point), "0, 0")]
 		[EditorBrowsable (EditorBrowsableState.Advanced)]
@@ -2244,11 +2051,7 @@ namespace System.Windows.Forms
 			}
 		}
 		
-#if NET_2_0
 		[AmbientValue ("{Width=0, Height=0}")]
-#else
-		[AmbientValue (typeof(Size), "0, 0")]
-#endif
 		[MWFCategory("Layout")]
 		public virtual Size MaximumSize {
 			get {
@@ -2284,7 +2087,6 @@ namespace System.Windows.Forms
 		{
 			return this.MinimumSize != DefaultMinimumSize;
 		}
-#endif // NET_2_0
 
 		[DispId(-501)]
 		[MWFCategory("Appearance")]
@@ -2337,7 +2139,6 @@ namespace System.Windows.Forms
 			}
 		}
 
-#if NET_2_0
 		[DefaultValue (ImageLayout.Tile)]
 		[Localizable (true)]
 		[MWFCategory("Appearance")]
@@ -2357,7 +2158,7 @@ namespace System.Windows.Forms
 				
 			}
 		} 
-#endif
+
 		[EditorBrowsable(EditorBrowsableState.Advanced)]
 		[Browsable(false)]
 		[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
@@ -2383,7 +2184,7 @@ namespace System.Windows.Forms
 		[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
 		public int Bottom {
 			get {
-				return bounds.Y+bounds.Height;
+				return this.bounds.Bottom;
 			}
 		}
 
@@ -2510,9 +2311,7 @@ namespace System.Windows.Forms
 
 			set {
 				this.SetClientSizeCore(value.Width, value.Height);
-#if NET_2_0
 				this.OnClientSizeChanged (EventArgs.Empty);
-#endif
 			}
 		}
 
@@ -2548,9 +2347,7 @@ namespace System.Windows.Forms
 				return false;
 			}
 		}
-#if NET_2_0
 		[Browsable (false)]
-#endif
 		[DefaultValue(null)]
 		[MWFCategory("Behavior")]
 		public virtual ContextMenu ContextMenu {
@@ -2575,7 +2372,6 @@ namespace System.Windows.Forms
 			}
 		}
 
-#if NET_2_0
 		[DefaultValue (null)]
 		[MWFCategory("Behavior")]
 		public virtual ContextMenuStrip ContextMenuStrip {
@@ -2589,7 +2385,6 @@ namespace System.Windows.Forms
 				}
 			}
 		}
-#endif
 
 		[Browsable(false)]
 		[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
@@ -2612,10 +2407,8 @@ namespace System.Windows.Forms
 		[MWFCategory("Appearance")]
 		public virtual Cursor Cursor {
 			get {
-#if NET_2_0
 				if (use_wait_cursor)
 					return Cursors.WaitCursor;
-#endif
 
 				if (cursor != null) {
 					return cursor;
@@ -2715,7 +2508,6 @@ namespace System.Windows.Forms
 			}
 		}
 
-#if NET_2_0
 		protected virtual bool DoubleBuffered {
 			get {
 				return (control_style & ControlStyles.OptimizedDoubleBuffer) != 0;
@@ -2756,7 +2548,6 @@ namespace System.Windows.Forms
 			
 			g.Dispose ();
 		}
-#endif
 		
 		[DispId(-514)]
 		[Localizable(true)]
@@ -2811,9 +2602,7 @@ namespace System.Windows.Forms
 		[Localizable(true)]
 		[MWFCategory("Appearance")]
 		public virtual Font Font {
-#if NET_2_0
 			[return: MarshalAs (UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof (Font))]
-#endif
 			get {
 				if (font != null)
 					return font;
@@ -2878,13 +2667,11 @@ namespace System.Windows.Forms
 		[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
 		public IntPtr Handle {							// IWin32Window
 			get {
-#if NET_2_0
 				if (verify_thread_handle) {
 					if (this.InvokeRequired) {
 						throw new InvalidOperationException("Cross-thread access of handle detected. Handle access only valid on thread that created the control");
 					}
 				}
-#endif
 				if (!IsHandleCreated) {
 					CreateHandle();
 				}
@@ -2990,7 +2777,6 @@ namespace System.Windows.Forms
 			}
 		}
 
-#if NET_2_0
 		[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
 		[EditorBrowsable(EditorBrowsableState.Advanced)]
 		[Browsable(false)]
@@ -2998,14 +2784,10 @@ namespace System.Windows.Forms
 		public bool IsMirrored {
 			get { return false; }
 		}
-#endif
 
 		[Browsable (false)]
 		[EditorBrowsable (EditorBrowsableState.Advanced)]
-#if NET_2_0
-		public virtual
-#endif
-		Layout.LayoutEngine LayoutEngine {
+		public virtual Layout.LayoutEngine LayoutEngine {
 			get {
 				if (layout_engine == null)
 					layout_engine = new Layout.DefaultLayout ();
@@ -3018,7 +2800,7 @@ namespace System.Windows.Forms
 		[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
 		public int Left {
 			get {
-				return this.bounds.X;
+				return this.bounds.Left;
 			}
 
 			set {
@@ -3030,7 +2812,7 @@ namespace System.Windows.Forms
 		[MWFCategory("Layout")]
 		public Point Location {
 			get {
-				return new Point(bounds.X, bounds.Y);
+				return this.bounds.Location;
 			}
 
 			set {
@@ -3043,7 +2825,6 @@ namespace System.Windows.Forms
 			return this.Location != new Point (0, 0);
 		}
 
-#if NET_2_0
 		[Localizable (true)]
 		[MWFCategory("Layout")]
 		public Padding Margin {
@@ -3062,7 +2843,6 @@ namespace System.Windows.Forms
 		{
 			return this.Margin != DefaultMargin;
 		}
-#endif
 
 		[Browsable(false)]
 		public string Name {
@@ -3075,7 +2855,6 @@ namespace System.Windows.Forms
 			}
 		}
 
-#if NET_2_0
 		[Localizable(true)]
 		[MWFCategory("Layout")]
 		public Padding Padding {
@@ -3101,7 +2880,6 @@ namespace System.Windows.Forms
 		{
 			return this.Padding != DefaultPadding;
 		}
-#endif
 
 		[Browsable(false)]
 		[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
@@ -3127,12 +2905,10 @@ namespace System.Windows.Forms
 			}
 		}
 
-#if NET_2_0
 		[Browsable (false)]
 		public Size PreferredSize {
 			get { return this.GetPreferredSize (Size.Empty); }
 		}
-#endif
 
 		[EditorBrowsable(EditorBrowsableState.Advanced)]
 		[Browsable(false)]
@@ -3192,9 +2968,7 @@ namespace System.Windows.Forms
 
 					clip_region = value;
 					
-#if NET_2_0
 					OnRegionChanged (EventArgs.Empty);
-#endif
 				}
 			}
 		}
@@ -3204,7 +2978,7 @@ namespace System.Windows.Forms
 		[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
 		public int Right {
 			get {
-				return this.bounds.X+this.bounds.Width;
+				return this.bounds.Right;
 			}
 		}
 
@@ -3349,11 +3123,9 @@ namespace System.Windows.Forms
 					UpdateWindowText ();
 					OnTextChanged (EventArgs.Empty);
 
-#if NET_2_0
 					// Label has its own AutoSize implementation
 					if (AutoSize && Parent != null && (!(this is Label)))
 						Parent.PerformLayout (this, "Text");
-#endif
 				}
 			}
 		}
@@ -3371,7 +3143,7 @@ namespace System.Windows.Forms
 		[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
 		public int Top {
 			get {
-				return this.bounds.Y;
+				return this.bounds.Top;
 			}
 
 			set {
@@ -3394,7 +3166,6 @@ namespace System.Windows.Forms
 			}
 		}
 
-#if NET_2_0		
 		[EditorBrowsable(EditorBrowsableState.Always)]
 		[Browsable(true)]
 		[DefaultValue (false)]
@@ -3409,7 +3180,6 @@ namespace System.Windows.Forms
 				}
 			}
 		}
-#endif
 
 		[Localizable(true)]
 		[MWFCategory("Behavior")]
@@ -3462,7 +3232,6 @@ namespace System.Windows.Forms
 		#endregion	// Public Instance Properties
 
 		#region	Protected Instance Properties
-#if NET_2_0
 		protected virtual bool CanEnableIme {
 			get { return false; }
 		}
@@ -3471,7 +3240,6 @@ namespace System.Windows.Forms
 		protected override bool CanRaiseEvents {
 			get { return true; }
 		}
-#endif
 
 		protected virtual CreateParams CreateParams {
 			get {
@@ -3513,7 +3281,7 @@ namespace System.Windows.Forms
 				}
 
 
-				create_params.ClassName = XplatUI.DefaultClassName;
+				create_params.ClassName = XplatUI.GetDefaultClassName (GetType ());
 				create_params.ClassStyle = (int)(XplatUIWin32.ClassStyle.CS_OWNDC | XplatUIWin32.ClassStyle.CS_DBLCLKS);
 				create_params.ExStyle = 0;
 				create_params.Param = 0;
@@ -3551,9 +3319,7 @@ namespace System.Windows.Forms
 			}
 		}
 
-#if NET_2_0
 		protected virtual Cursor DefaultCursor { get { return Cursors.Default; } }
-#endif
 
 		protected virtual ImeMode DefaultImeMode {
 			get {
@@ -3561,7 +3327,6 @@ namespace System.Windows.Forms
 			}
 		}
 
-#if NET_2_0
 		protected virtual Padding DefaultMargin {
 			get { return new Padding (3); }
 		}
@@ -3569,7 +3334,6 @@ namespace System.Windows.Forms
 		protected virtual Size DefaultMaximumSize { get { return new Size (); } }
 		protected virtual Size DefaultMinimumSize { get { return new Size (); } }
 		protected virtual Padding DefaultPadding { get { return new Padding (); } }
-#endif
 
 		protected virtual Size DefaultSize {
 			get {
@@ -3586,9 +3350,7 @@ namespace System.Windows.Forms
 				;; // Nothing to do
 			}
 		}
-#if NET_2_0
 		[Obsolete ()]
-#endif
 		protected bool RenderRightToLeft {
 			get {
 				return (this.right_to_left == RightToLeft.Yes);
@@ -3605,12 +3367,10 @@ namespace System.Windows.Forms
 			}
 		}
 
-#if NET_2_0
 		[EditorBrowsable (EditorBrowsableState.Advanced)]
 		protected virtual bool ScaleChildren {
 			get { return ScaleChildrenInternal; }
 		}
-#endif
 
 		internal virtual bool ScaleChildrenInternal {
 			get { return true; }
@@ -3639,10 +3399,7 @@ namespace System.Windows.Forms
 		[EditorBrowsable(EditorBrowsableState.Advanced)]
 		[Browsable(false)]
 		[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
-#if NET_2_0
-		internal virtual
-#endif
-		protected bool ShowKeyboardCues {
+		internal virtual protected bool ShowKeyboardCues {
 			get {
 				return ShowKeyboardCuesInternal;
 			}
@@ -3670,7 +3427,6 @@ namespace System.Windows.Forms
 			return Control.ControlNativeWindow.ControlFromHandle(handle);
 		}
 
-#if NET_2_0
 		[MonoTODO ("Only implemented for Win32, others always return false")]
 		public static bool IsKeyLocked (Keys keyVal)
 		{
@@ -3683,7 +3439,6 @@ namespace System.Windows.Forms
 					throw new NotSupportedException ("keyVal must be CapsLock, NumLock, or ScrollLock");
 			}
 		}
-#endif
 
 		public static bool IsMnemonic(char charCode, string text) {
 			int amp;
@@ -3728,11 +3483,7 @@ namespace System.Windows.Forms
 		}
 
 		[EditorBrowsable(EditorBrowsableState.Advanced)]
-#if NET_2_0
 		public IAsyncResult BeginInvoke (Delegate method, params object[] args)
-#else
-		public IAsyncResult BeginInvoke (Delegate method, object[] args)
-#endif
 		{
 			return BeginInvokeInternal (method, args);
 		}
@@ -3788,12 +3539,6 @@ namespace System.Windows.Forms
 					if (!c.Created && !c.IsDisposed)
 						c.CreateControl ();
 						
-#if ONLY_1_1
-				if (binding_context == null && parent != null) {
-					OnBindingContextChanged(EventArgs.Empty);
-				}
-#endif
-
 				OnCreateControl();
 			}
 		}
@@ -3845,9 +3590,7 @@ namespace System.Windows.Forms
 			}
 			return null;
 		}
-#if NET_2_0
 		[EditorBrowsable (EditorBrowsableState.Advanced)]
-#endif
 		public bool Focus() {
 			return FocusInternal (false);
 		}
@@ -3883,10 +3626,7 @@ namespace System.Windows.Forms
 			return GetChildAtPoint (pt, GetChildAtPointSkip.None);
 		}
 
-#if NET_2_0
-		public
-#endif
-		Control GetChildAtPoint (Point pt, GetChildAtPointSkip skipValue)
+		public Control GetChildAtPoint (Point pt, GetChildAtPointSkip skipValue)
 		{
 			// MS's version causes the handle to be created.  The stack trace shows that get_Handle is called here, but
 			// we'll just call CreateHandle instead.
@@ -3953,7 +3693,6 @@ namespace System.Windows.Forms
 			return null;
 		}
 
-#if NET_2_0
 		[EditorBrowsable (EditorBrowsableState.Advanced)]
 		public virtual Size GetPreferredSize (Size proposedSize) {
 			Size retsize = GetPreferredSizeCore (proposedSize);
@@ -3972,31 +3711,34 @@ namespace System.Windows.Forms
 				
 			return retsize;
 		}
-#endif
 
 		public void Hide() {
 			this.Visible = false;
 		}
 
-		public void Invalidate() {
-			Invalidate(ClientRectangle, false);
+		public void Invalidate ()
+		{
+			Invalidate (ClientRectangle, false);
 		}
 
-		public void Invalidate(bool invalidateChildren) {
-			Invalidate(ClientRectangle, invalidateChildren);
+		public void Invalidate (bool invalidateChildren)
+		{
+			Invalidate (ClientRectangle, invalidateChildren);
 		}
 
-		public void Invalidate(System.Drawing.Rectangle rc) {
-			Invalidate(rc, false);
+		public void Invalidate (Rectangle rc)
+		{
+			Invalidate (rc, false);
 		}
 
-		public void Invalidate(System.Drawing.Rectangle rc, bool invalidateChildren) {
+		public void Invalidate (Rectangle rc, bool invalidateChildren)
+		{
 			// Win32 invalidates control including when Width and Height is equal 0
 			// or is not visible, only Paint event must be care about this.
 			if (!IsHandleCreated)
 				return;
 
-			if (rc == Rectangle.Empty)
+			if (rc.IsEmpty)
 				rc = ClientRectangle;
 				
 			if  (rc.Width > 0 && rc.Height > 0) {
@@ -4020,14 +3762,17 @@ namespace System.Windows.Forms
 			OnInvalidated(new InvalidateEventArgs(rc));
 		}
 
-		public void Invalidate(System.Drawing.Region region) {
-			Invalidate(region, false);
+		public void Invalidate (Region region)
+		{
+			Invalidate (region, false);
 		}
 
-		public void Invalidate(System.Drawing.Region region, bool invalidateChildren) {
-			RectangleF bounds = region.GetBounds (CreateGraphics ());
-			Invalidate (new Rectangle ((int) bounds.X, (int) bounds.Y, (int) bounds.Width, (int) bounds.Height),
-					invalidateChildren);
+		public void Invalidate (Region region, bool invalidateChildren)
+		{
+			using (Graphics g = CreateGraphics ()){
+				RectangleF bounds = region.GetBounds (g);
+				Invalidate (new Rectangle ((int) bounds.X, (int) bounds.Y, (int) bounds.Width, (int) bounds.Height), invalidateChildren);
+			}
 		}
 
 		public object Invoke (Delegate method) {
@@ -4037,11 +3782,7 @@ namespace System.Windows.Forms
 
 			return Invoke(method, prms);
 		}
-#if NET_2_0
 		public object Invoke (Delegate method, params object [] args) {
-#else
-		public object Invoke (Delegate method, object[] args) {
-#endif
 			Control control = FindControlToInvokeOn ();
 			
 			if (!this.InvokeRequired) {
@@ -4104,26 +3845,22 @@ namespace System.Windows.Forms
 			return new Point(x, y);
 		}
 
-#if NET_2_0
 		[EditorBrowsable(EditorBrowsableState.Advanced)]
 		public PreProcessControlState PreProcessControlMessage (ref Message msg)
 		{
 			return PreProcessControlMessageInternal (ref msg);
 		}
-#endif
 
 		internal PreProcessControlState PreProcessControlMessageInternal (ref Message msg)
 		{
 			switch ((Msg)msg.Msg) {
 				case Msg.WM_KEYDOWN:
 				case Msg.WM_SYSKEYDOWN:
-#if NET_2_0
 					PreviewKeyDownEventArgs e = new PreviewKeyDownEventArgs ((Keys)msg.WParam.ToInt32 () | XplatUI.State.ModifierKeys);
 					OnPreviewKeyDown (e);
 				
 					if (e.IsInputKey)
 						return PreProcessControlState.MessageNeeded;
-#endif
 				
 					if (PreProcessMessage (ref msg))
 						return PreProcessControlState.MessageProcessed;
@@ -4177,11 +3914,7 @@ namespace System.Windows.Forms
 				if (ProcessDialogChar((char)msg.WParam))
 					return true;
 				else
-#if NET_2_0
 					return ToolStripManager.ProcessMenuKey (ref msg);
-#else
-					return false;
-#endif
 			}
 			return false;
 		}
@@ -4251,10 +3984,8 @@ namespace System.Windows.Forms
 			}
 
 			if (layout_suspended == 0) {
-#if NET_2_0
 				if (this is ContainerControl)
 					(this as ContainerControl).PerformDelayedAutoScale();
-#endif
 
 				if (!performLayout)
 					foreach (Control c in Controls.GetAllControls ())
@@ -4265,23 +3996,18 @@ namespace System.Windows.Forms
 				}
 			}
 		}
-#if NET_2_0
 		[EditorBrowsable (EditorBrowsableState.Never)]
 		[Obsolete ()]
-#endif
 		public void Scale(float ratio) {
 			ScaleCore(ratio, ratio);
 		}
 		
-#if NET_2_0
 		[EditorBrowsable (EditorBrowsableState.Never)]
 		[Obsolete ()]
-#endif
 		public void Scale(float dx, float dy) {
 			ScaleCore(dx, dy);
 		}
 
-#if NET_2_0
 		[EditorBrowsable (EditorBrowsableState.Advanced)]
 		public void Scale (SizeF factor)
 		{
@@ -4325,7 +4051,6 @@ namespace System.Windows.Forms
 			ContainerControl cc = FindContainer (c);
 			return (cc != null) && cc.IsAutoScaling;
 		}
-#endif
 
 		public void Select() {
 			Select(false, false);	
@@ -4452,22 +4177,17 @@ namespace System.Windows.Forms
 			// CWL shows nothing.  So we fudge it and put
 			// a CreateHandle here.
 
-#if ONLY_1_1
-			CreateHandle ();
-#endif
 
 			if (accessibility_object != null && accessibility_object is ControlAccessibleObject)
 				((ControlAccessibleObject)accessibility_object).NotifyClients (accEvent, childID);
 		}
 
-#if NET_2_0
 		[EditorBrowsable (EditorBrowsableState.Advanced)]
 		protected void AccessibilityNotifyClients (AccessibleEvents accEvent, int objectID, int childID)
 		{
 			if (accessibility_object != null && accessibility_object is ControlAccessibleObject)
 				((ControlAccessibleObject)accessibility_object).NotifyClients (accEvent, objectID, childID);
 		}
-#endif
 
 		[EditorBrowsable(EditorBrowsableState.Advanced)]
 		protected virtual AccessibleObject CreateAccessibilityInstance() {
@@ -4535,7 +4255,6 @@ namespace System.Windows.Forms
 			}
 		}
 
-#if NET_2_0
 		protected virtual AccessibleObject GetAccessibilityObjectById (int objectId)
 		{
 			// XXX need to implement this.
@@ -4571,7 +4290,6 @@ namespace System.Windows.Forms
 
 			return bounds;
 		}
-#endif
 
 		private Rectangle GetScaledBoundsOld (Rectangle bounds, SizeF factor, BoundsSpecified specified)
 		{
@@ -4696,9 +4414,7 @@ namespace System.Windows.Forms
 				case (int)Msg.WM_KEYDOWN: {
 					key_event = new KeyEventArgs ((Keys) m.WParam.ToInt32 ());
 					OnKeyDown (key_event);
-#if NET_2_0
 					suppressing_key_press = key_event.SuppressKeyPress;
-#endif
 					return key_event.Handled;
 				}
 
@@ -4711,17 +4427,13 @@ namespace System.Windows.Forms
 
 				case (int)Msg.WM_SYSCHAR:
 				case (int)Msg.WM_CHAR: {
-#if NET_2_0
 					if (suppressing_key_press)
 						return true;
-#endif
 					KeyPressEventArgs key_press_event;
 
 					key_press_event = new KeyPressEventArgs ((char) m.WParam);
 					OnKeyPress(key_press_event);
-#if NET_2_0
 					m.WParam = (IntPtr) key_press_event.KeyChar;
-#endif
 					return key_press_event.Handled;
 				}
 
@@ -4904,7 +4616,6 @@ namespace System.Windows.Forms
 			return RtlTranslateAlignment(align);
 		}
 
-#if NET_2_0
 		[EditorBrowsable (EditorBrowsableState.Advanced)]
 		protected virtual void ScaleControl (SizeF factor, BoundsSpecified specified)
 		{
@@ -4912,13 +4623,8 @@ namespace System.Windows.Forms
 
 			SetBounds (new_bounds.X, new_bounds.Y, new_bounds.Width, new_bounds.Height, specified);
 		}
-#endif
 
-#if NET_2_0
 		[EditorBrowsable (EditorBrowsableState.Never)]
-#else
-		[EditorBrowsable (EditorBrowsableState.Advanced)]
-#endif
 		protected virtual void ScaleCore (float dx, float dy)
 		{
 			Rectangle new_bounds = GetScaledBoundsOld (bounds, new SizeF (dx, dy), BoundsSpecified.All);
@@ -4942,7 +4648,6 @@ namespace System.Windows.Forms
 				container.ActiveControl = this;
 		}
 
-#if NET_2_0
 		protected void SetAutoSizeMode (AutoSizeMode mode)
 		{
 			if (auto_size_mode != mode) {
@@ -4950,7 +4655,6 @@ namespace System.Windows.Forms
 				PerformLayout (this, "AutoSizeMode");
 			}
 		}
-#endif
 		
 		[EditorBrowsable(EditorBrowsableState.Advanced)]
 		protected virtual void SetBoundsCore(int x, int y, int width, int height, BoundsSpecified specified) {
@@ -5103,12 +4807,7 @@ namespace System.Windows.Forms
 		}
 
 		[EditorBrowsable (EditorBrowsableState.Advanced)]
-#if NET_2_0
-		protected 
-#else
-		internal
-#endif
-		virtual Size SizeFromClientSize (Size clientSize) {
+		protected virtual Size SizeFromClientSize (Size clientSize) {
 			return InternalSizeFromClientSize (clientSize);
 		}
 
@@ -5179,9 +4878,7 @@ namespace System.Windows.Forms
 			if (resized) {
 				OnSizeInitializedOrChanged ();
 				OnSizeChanged(EventArgs.Empty);
-#if NET_2_0
 				OnClientSizeChanged (EventArgs.Empty);
-#endif
 			}
 		}
 
@@ -5262,7 +4959,7 @@ namespace System.Windows.Forms
 					continue;
 
 				Hwnd hwnd = Hwnd.ObjectFromHandle (controls[i].Handle);
-				if (hwnd.zero_sized)
+				if (hwnd == null || hwnd.zero_sized)
 					continue;
 
 				children_to_order.Add (controls[i]);
@@ -5508,11 +5205,9 @@ namespace System.Windows.Forms
 		// can be found here: http://pluralsight.com/wiki/default.aspx/Craig/FlickerFreeControlDrawing.html
 		// and here http://msdn.microsoft.com/msdnmag/issues/06/03/WindowsFormsPerformance/
 		private void WmPaint (ref Message m) {
-			PaintEventArgs	paint_event;
-
 			IntPtr handle = Handle;
 
-			paint_event = XplatUI.PaintEventStart (ref m, handle, true);
+			PaintEventArgs paint_event = XplatUI.PaintEventStart (ref m, handle, true);
 
 			if (paint_event == null)
 				return;
@@ -5533,11 +5228,9 @@ namespace System.Windows.Forms
 				//}
 				current_buffer.Start (paint_event);
 			}
-#if NET_2_0
 			// If using OptimizedDoubleBuffer, ensure the clip region gets set
 			if (GetStyle (ControlStyles.OptimizedDoubleBuffer))
 				paint_event.Graphics.SetClip (Rectangle.Intersect (paint_event.ClipRectangle, this.ClientRectangle));
-#endif
 
 			if (!GetStyle(ControlStyles.Opaque)) {
 				OnPaintBackground (paint_event);
@@ -5725,7 +5418,6 @@ namespace System.Windows.Forms
 				return;
 			}
 
-#if NET_2_0
 				// If there isn't a regular context menu, show the Strip version
 				if (context_menu == null && context_menu_strip != null) {
 					Point pt;
@@ -5742,7 +5434,6 @@ namespace System.Windows.Forms
 					context_menu_strip.Show (this, PointToClient (pt));
 					return;
 				}
-#endif
 			DefWndProc(ref m);
 		}
 
@@ -5853,11 +5544,9 @@ namespace System.Windows.Forms
 				if (form != null && form.ActiveMenu != null) {
 					form.ActiveMenu.ProcessCmdKey(ref m, (Keys)m.WParam.ToInt32());
 				}
-#if NET_2_0
 				else
 					if (ToolStripManager.ProcessMenuKey (ref m))
 						return;
-#endif
 			}
 
 			DefWndProc (ref m);
@@ -5959,14 +5648,12 @@ namespace System.Windows.Forms
 		#endregion
 
 		#region OnXXX methods
-#if NET_2_0
 		protected virtual void OnAutoSizeChanged (EventArgs e)
 		{
 			EventHandler eh = (EventHandler)(Events[AutoSizeChangedEvent]);
 			if (eh != null)
 				eh (this, e);
 		}
-#endif
 
 		[EditorBrowsable (EditorBrowsableState.Advanced)]
 		protected virtual void OnBackColorChanged(EventArgs e) {
@@ -5984,7 +5671,6 @@ namespace System.Windows.Forms
 			for (int i=0; i<child_controls.Count; i++) child_controls[i].OnParentBackgroundImageChanged(e);
 		}
 
-#if NET_2_0
 		[EditorBrowsable (EditorBrowsableState.Advanced)]
 		protected virtual void OnBackgroundImageLayoutChanged (EventArgs e)
 		{
@@ -5992,7 +5678,6 @@ namespace System.Windows.Forms
 			if (eh != null)
 				eh (this, e);
 		}
-#endif
 
 		[EditorBrowsable(EditorBrowsableState.Advanced)]
 		protected virtual void OnBindingContextChanged(EventArgs e) {
@@ -6024,7 +5709,6 @@ namespace System.Windows.Forms
 				eh (this, e);
 		}
 
-#if NET_2_0
 		[EditorBrowsable (EditorBrowsableState.Advanced)]
 		protected virtual void OnClientSizeChanged (EventArgs e)
 		{
@@ -6032,7 +5716,6 @@ namespace System.Windows.Forms
 			if (eh != null)
 				eh (this, e);
 		}
-#endif
 
 		[EditorBrowsable(EditorBrowsableState.Advanced)]
 		protected virtual void OnContextMenuChanged(EventArgs e) {
@@ -6041,14 +5724,12 @@ namespace System.Windows.Forms
 				eh (this, e);
 		}
 
-#if NET_2_0
 		[EditorBrowsable (EditorBrowsableState.Advanced)]
 		protected virtual void OnContextMenuStripChanged (EventArgs e) {
 			EventHandler eh = (EventHandler)(Events [ContextMenuStripChangedEvent]);
 			if (eh != null)
 				eh (this, e);
 		}
-#endif
 
 		[EditorBrowsable(EditorBrowsableState.Advanced)]
 		protected virtual void OnControlAdded(ControlEventArgs e) {
@@ -6075,9 +5756,7 @@ namespace System.Windows.Forms
 			if (eh != null)
 				eh (this, e);
 				
-#if NET_2_0
 			for (int i = 0; i < child_controls.Count; i++) child_controls[i].OnParentCursorChanged (e);
-#endif
 		}
 
 		[EditorBrowsable(EditorBrowsableState.Advanced)]
@@ -6262,7 +5941,6 @@ namespace System.Windows.Forms
 			if (eh != null)
 				eh (this, levent);
 
-#if NET_2_0
 			Size s = Size;
 			
 			// If our layout changed our PreferredSize, our parent
@@ -6273,7 +5951,6 @@ namespace System.Windows.Forms
 				Parent.PerformLayout ();
 				nested_layout = false;
 			}
-#endif
 			
 			LayoutEngine.Layout (this, levent);
 		}
@@ -6300,27 +5977,20 @@ namespace System.Windows.Forms
 				eh (this, e);
 		}
 
-#if NET_2_0
 		protected virtual void OnMarginChanged (EventArgs e)
 		{
 			EventHandler eh = (EventHandler)(Events[MarginChangedEvent]);
 			if (eh != null)
 				eh (this, e);
 		}
-#endif
 		[EditorBrowsable (EditorBrowsableState.Advanced)]
-#if NET_2_0
 		protected virtual void OnMouseCaptureChanged (EventArgs e)
-#else
-		internal virtual void OnMouseCaptureChanged (EventArgs e)
-#endif
 		{
 			EventHandler eh = (EventHandler)(Events [MouseCaptureChangedEvent]);
 			if (eh != null)
 				eh (this, e);
 		}
 
-#if NET_2_0
 		[EditorBrowsable (EditorBrowsableState.Advanced)]
 		protected virtual void OnMouseClick (MouseEventArgs e)
 		{
@@ -6336,7 +6006,6 @@ namespace System.Windows.Forms
 			if (eh != null)
 				eh (this, e);
 		}
-#endif
 
 		[EditorBrowsable(EditorBrowsableState.Advanced)]
 		protected virtual void OnMouseDown(MouseEventArgs e) {
@@ -6399,13 +6068,11 @@ namespace System.Windows.Forms
 			// Override me!
 		}
 
-#if NET_2_0
 		protected virtual void OnPaddingChanged (EventArgs e) {
 			EventHandler eh = (EventHandler) (Events [PaddingChangedEvent]);
 			if (eh != null)
 				eh (this, e);
 		}
-#endif
 
 		[EditorBrowsable(EditorBrowsableState.Advanced)]
 		protected virtual void OnPaint(PaintEventArgs e) {
@@ -6456,12 +6123,10 @@ namespace System.Windows.Forms
 				eh (this, e);
 		}
 
-#if NET_2_0
 		[EditorBrowsable (EditorBrowsableState.Advanced)]
 		protected virtual void OnParentCursorChanged (EventArgs e)
 		{
 		}
-#endif
 
 		[EditorBrowsable (EditorBrowsableState.Advanced)]
 		protected virtual void OnParentEnabledChanged(EventArgs e) {
@@ -6509,7 +6174,6 @@ namespace System.Windows.Forms
 				eh (this, qcdevent);
 		}
 
-#if NET_2_0
 		[EditorBrowsable (EditorBrowsableState.Advanced)]
 		protected virtual void OnPreviewKeyDown (PreviewKeyDownEventArgs e)
 		{
@@ -6533,7 +6197,6 @@ namespace System.Windows.Forms
 			if (eh != null)
 				eh (this, e);
 		}
-#endif
 
 		[EditorBrowsable(EditorBrowsableState.Advanced)]
 		protected virtual void OnResize(EventArgs e) {
@@ -6631,25 +6294,17 @@ namespace System.Windows.Forms
 		#endregion	// OnXXX methods
 
 		#region Events
-#if NET_2_0
 		static object AutoSizeChangedEvent = new object ();
-#endif
 		static object BackColorChangedEvent = new object ();
 		static object BackgroundImageChangedEvent = new object ();
-#if NET_2_0
 		static object BackgroundImageLayoutChangedEvent = new object ();
-#endif
 		static object BindingContextChangedEvent = new object ();
 		static object CausesValidationChangedEvent = new object ();
 		static object ChangeUICuesEvent = new object ();
 		static object ClickEvent = new object ();
-#if NET_2_0
 		static object ClientSizeChangedEvent = new object ();
-#endif
 		static object ContextMenuChangedEvent = new object ();
-#if NET_2_0
 		static object ContextMenuStripChangedEvent = new object ();
-#endif
 		static object ControlAddedEvent = new object ();
 		static object ControlRemovedEvent = new object ();
 		static object CursorChangedEvent = new object ();
@@ -6677,14 +6332,10 @@ namespace System.Windows.Forms
 		static object LeaveEvent = new object ();
 		static object LocationChangedEvent = new object ();
 		static object LostFocusEvent = new object ();
-#if NET_2_0
 		static object MarginChangedEvent = new object ();
-#endif
 		static object MouseCaptureChangedEvent = new object ();
-#if NET_2_0
 		static object MouseClickEvent = new object ();
 		static object MouseDoubleClickEvent = new object ();
-#endif
 		static object MouseDownEvent = new object ();
 		static object MouseEnterEvent = new object ();
 		static object MouseHoverEvent = new object ();
@@ -6693,19 +6344,13 @@ namespace System.Windows.Forms
 		static object MouseUpEvent = new object ();
 		static object MouseWheelEvent = new object ();
 		static object MoveEvent = new object ();
-#if NET_2_0
 		static object PaddingChangedEvent = new object ();
-#endif
 		static object PaintEvent = new object ();
 		static object ParentChangedEvent = new object ();
-#if NET_2_0
 		static object PreviewKeyDownEvent = new object ();
-#endif
 		static object QueryAccessibilityHelpEvent = new object ();
 		static object QueryContinueDragEvent = new object ();
-#if NET_2_0
 		static object RegionChangedEvent = new object ();
-#endif
 		static object ResizeEvent = new object ();
 		static object RightToLeftChangedEvent = new object ();
 		static object SizeChangedEvent = new object ();
@@ -6718,14 +6363,12 @@ namespace System.Windows.Forms
 		static object ValidatingEvent = new object ();
 		static object VisibleChangedEvent = new object ();
 
-#if NET_2_0
 		[Browsable (false)]
 		[EditorBrowsable (EditorBrowsableState.Never)]
 		public event EventHandler AutoSizeChanged {
 			add { Events.AddHandler (AutoSizeChangedEvent, value);}
 			remove {Events.RemoveHandler (AutoSizeChangedEvent, value);}
 		}
-#endif
 		public event EventHandler BackColorChanged {
 			add { Events.AddHandler (BackColorChangedEvent, value); }
 			remove { Events.RemoveHandler (BackColorChangedEvent, value); }
@@ -6736,12 +6379,10 @@ namespace System.Windows.Forms
 			remove { Events.RemoveHandler (BackgroundImageChangedEvent, value); }
 		}
 
-#if NET_2_0	
 		public event EventHandler BackgroundImageLayoutChanged {
 			add {Events.AddHandler (BackgroundImageLayoutChangedEvent, value);}
 			remove {Events.RemoveHandler (BackgroundImageLayoutChangedEvent, value);}
 		}
-#endif
 
 		public event EventHandler BindingContextChanged {
 			add { Events.AddHandler (BindingContextChangedEvent, value); }
@@ -6763,46 +6404,32 @@ namespace System.Windows.Forms
 			remove { Events.RemoveHandler (ClickEvent, value); }
 		}
 		
-#if NET_2_0
 		public event EventHandler ClientSizeChanged {
 			add {Events.AddHandler (ClientSizeChangedEvent, value);}
 			remove {Events.RemoveHandler (ClientSizeChangedEvent, value);}
 		}
-#endif
 
-#if NET_2_0
 		[Browsable (false)]
-#endif
 		public event EventHandler ContextMenuChanged {
 			add { Events.AddHandler (ContextMenuChangedEvent, value); }
 			remove { Events.RemoveHandler (ContextMenuChangedEvent, value); }
 		}
 
-#if NET_2_0
 		public event EventHandler ContextMenuStripChanged {
 			add { Events.AddHandler (ContextMenuStripChangedEvent, value); }
 			remove { Events.RemoveHandler (ContextMenuStripChangedEvent, value);}
 		}
-#endif
 
 
 		[EditorBrowsable(EditorBrowsableState.Advanced)]
-#if NET_2_0
 		[Browsable(true)]
-#else 
-		[Browsable(false)]
-#endif
 		public event ControlEventHandler ControlAdded {
 			add { Events.AddHandler (ControlAddedEvent, value); }
 			remove { Events.RemoveHandler (ControlAddedEvent, value); }
 		}
 
 		[EditorBrowsable(EditorBrowsableState.Advanced)]
-#if NET_2_0
 		[Browsable(true)]
-#else 
-		[Browsable(false)]
-#endif
 		public event ControlEventHandler ControlRemoved {
 			add { Events.AddHandler (ControlRemovedEvent, value); }
 			remove { Events.RemoveHandler (ControlRemovedEvent, value); }
@@ -6944,21 +6571,15 @@ namespace System.Windows.Forms
 			remove { Events.RemoveHandler (LostFocusEvent, value); }
 		}
 
-#if NET_2_0
 		public event EventHandler MarginChanged {
 			add { Events.AddHandler (MarginChangedEvent, value); }
 			remove {Events.RemoveHandler (MarginChangedEvent, value); }
 		}
-#endif
-#if NET_2_0
+
 		public event EventHandler MouseCaptureChanged {
-#else
-		internal event EventHandler MouseCaptureChanged {
-#endif
 			add { Events.AddHandler (MouseCaptureChangedEvent, value); }
 			remove { Events.RemoveHandler (MouseCaptureChangedEvent, value); }
 		}
-#if NET_2_0		
 		public event MouseEventHandler MouseClick
 		{
 			add { Events.AddHandler (MouseClickEvent, value); }
@@ -6969,7 +6590,6 @@ namespace System.Windows.Forms
 			add { Events.AddHandler (MouseDoubleClickEvent, value); }
 			remove { Events.RemoveHandler (MouseDoubleClickEvent, value); }
 		}
-#endif
 		public event MouseEventHandler MouseDown {
 			add { Events.AddHandler (MouseDownEvent, value); }
 			remove { Events.RemoveHandler (MouseDownEvent, value); }
@@ -7011,13 +6631,11 @@ namespace System.Windows.Forms
 			add { Events.AddHandler (MoveEvent, value); }
 			remove { Events.RemoveHandler (MoveEvent, value); }
 		}
-#if NET_2_0
 		public event EventHandler PaddingChanged
 		{
 			add { Events.AddHandler (PaddingChangedEvent, value); }
 			remove { Events.RemoveHandler (PaddingChangedEvent, value); }
 		}
-#endif
 		public event PaintEventHandler Paint {
 			add { Events.AddHandler (PaintEvent, value); }
 			remove { Events.RemoveHandler (PaintEvent, value); }
@@ -7028,12 +6646,10 @@ namespace System.Windows.Forms
 			remove { Events.RemoveHandler (ParentChangedEvent, value); }
 		}
 
-#if NET_2_0
 		public event PreviewKeyDownEventHandler PreviewKeyDown {
 			add { Events.AddHandler (PreviewKeyDownEvent, value); }
 			remove { Events.RemoveHandler (PreviewKeyDownEvent, value); }
 		}
-#endif
 
 		public event QueryAccessibilityHelpEventHandler QueryAccessibilityHelp {
 			add { Events.AddHandler (QueryAccessibilityHelpEvent, value); }
@@ -7045,16 +6661,12 @@ namespace System.Windows.Forms
 			remove { Events.RemoveHandler (QueryContinueDragEvent, value); }
 		}
 
-#if NET_2_0
 		public event EventHandler RegionChanged {
 			add { Events.AddHandler (RegionChangedEvent, value); }
 			remove { Events.RemoveHandler (RegionChangedEvent, value); }
 		}
-#endif
 
-#if NET_2_0	
 		[EditorBrowsable (EditorBrowsableState.Advanced)]
-#endif
 		public event EventHandler Resize {
 			add { Events.AddHandler (ResizeEvent, value); }
 			remove { Events.RemoveHandler (ResizeEvent, value); }
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ControlBindingsCollection.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ControlBindingsCollection.cs
index c9028a4..ef40a18 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ControlBindingsCollection.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ControlBindingsCollection.cs
@@ -36,29 +36,23 @@ namespace System.Windows.Forms {
 	public class ControlBindingsCollection : BindingsCollection {
 		#region	Fields
 		private Control control;
-#if NET_2_0
 		private IBindableComponent bindable_component;
 		private DataSourceUpdateMode default_datasource_update_mode;
-#endif
 		#endregion	// Fields
 
 		#region Constructors
 		internal ControlBindingsCollection (Control control) {
 			this.control = control;
-#if NET_2_0
 			bindable_component = control as IBindableComponent;
 			default_datasource_update_mode = DataSourceUpdateMode.OnValidation;
-#endif
 		}
 
-#if NET_2_0
 		public ControlBindingsCollection (IBindableComponent control)
 		{
 			bindable_component = control;
 			control = control as Control;
 			default_datasource_update_mode = DataSourceUpdateMode.OnValidation;
 		}
-#endif
 		#endregion	// Constructors
 
 		#region Public Instance Properties
@@ -79,7 +73,6 @@ namespace System.Windows.Forms {
 			}
 		}
 
-#if NET_2_0
 		public IBindableComponent BindableComponent {
 			get {
 				return bindable_component;
@@ -94,7 +87,6 @@ namespace System.Windows.Forms {
 				default_datasource_update_mode = value;
 			}
 		}
-#endif
 		#endregion	// Public Instance Properties
 
 		#region Public Instance Methods
@@ -110,14 +102,11 @@ namespace System.Windows.Forms {
 				throw new ArgumentNullException ("dataSource");
 
 			Binding res = new Binding (propertyName, dataSource, dataMember);
-#if NET_2_0
 			res.DataSourceUpdateMode = default_datasource_update_mode;
-#endif
 			Add (res);
 			return res;
 		}
 
-#if NET_2_0
 		public Binding Add (string propertyName, object dataSource, string dataMember, bool formattingEnabled)
 		{
 			return Add (propertyName, dataSource, dataMember, formattingEnabled, default_datasource_update_mode, null, String.Empty, null);
@@ -156,7 +145,6 @@ namespace System.Windows.Forms {
 			Add (res);
 			return res;
 		}
-#endif
 
 		public new void Clear() {
 			base.Clear();
@@ -183,11 +171,7 @@ namespace System.Windows.Forms {
 			if (dataBinding == null)
 				throw new ArgumentNullException ("dataBinding");
 
-#if NET_2_0
 			if (dataBinding.Control != null && dataBinding.BindableComponent != bindable_component)
-#else
-			if (dataBinding.Control != null && dataBinding.Control != control)
-#endif
 				throw new ArgumentException ("dataBinding belongs to another BindingsCollection");
 
 			for (int i = 0; i < Count; i++) {
@@ -201,11 +185,7 @@ namespace System.Windows.Forms {
 				}
 			}
 
-#if NET_2_0
 			dataBinding.SetControl (bindable_component);
-#else
-			dataBinding.SetControl (control);
-#endif
 			dataBinding.Check ();
 			base.AddCore (dataBinding);
 		}
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ControlPaint.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ControlPaint.cs
index 23c4970..4004c1e 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ControlPaint.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ControlPaint.cs
@@ -404,23 +404,19 @@ namespace System.Windows.Forms {
 			ThemeEngine.Current.CPDrawMenuGlyph (graphics, rectangle, glyph, ThemeEngine.Current.ColorMenuText, Color.Empty);
 		}
 
-#if NET_2_0
 		public static void DrawMenuGlyph (Graphics graphics, Rectangle rectangle, MenuGlyph glyph, Color foreColor, Color backColor)
 		{
 			ThemeEngine.Current.CPDrawMenuGlyph (graphics, rectangle, glyph, foreColor, backColor);
 		}
-#endif	
 	
 		public static void DrawMenuGlyph(Graphics graphics, int x, int y, int width, int height, MenuGlyph glyph) {
 			DrawMenuGlyph(graphics, new Rectangle(x, y, width, height), glyph);
 		}
 
-#if NET_2_0
 		public static void DrawMenuGlyph (Graphics graphics, int x, int y, int width, int height, MenuGlyph glyph, Color foreColor, Color backColor)
 		{
 			DrawMenuGlyph (graphics, new Rectangle (x, y, width, height), glyph, foreColor, backColor);
 		}
-#endif		
 
 		public static void DrawMixedCheckBox(Graphics graphics, Rectangle rectangle, ButtonState state) {
 			ThemeEngine.Current.CPDrawMixedCheckBox (graphics, rectangle, state);
@@ -484,7 +480,6 @@ namespace System.Windows.Forms {
 			ThemeEngine.Current.CPDrawStringDisabled (graphics, s, font, color, layoutRectangle, format);
 		}
 
-#if NET_2_0
 		public static void DrawStringDisabled (IDeviceContext dc, string s, Font font, Color color, Rectangle layoutRectangle, TextFormatFlags format)
 		{
 			ThemeEngine.Current.CPDrawStringDisabled (dc, s, font, color, layoutRectangle, format);
@@ -494,7 +489,6 @@ namespace System.Windows.Forms {
 		{
 			ThemeEngine.Current.CPDrawVisualStyleBorder (graphics, bounds);
 		}
-#endif
 		#endregion	// Public Static Methods
 	}
 }
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ControlStyles.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ControlStyles.cs
index 814481f..a544e00 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ControlStyles.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ControlStyles.cs
@@ -48,14 +48,10 @@ namespace System.Windows.Forms {
 		CacheText		= 0x00004000,
 		EnableNotifyMessage	= 0x00008000,
 
-#if NET_2_0
 		[EditorBrowsable (EditorBrowsableState.Never)]
-#endif
 		DoubleBuffer		= 0x00010000,
 
-#if NET_2_0
 		OptimizedDoubleBuffer	= 0x00020000,
 		UseTextForAccessibility	= 0x00040000
-#endif
 	}
 }
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ControlUpdateMode.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ControlUpdateMode.cs
index 98f2bfd..d52f2f3 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ControlUpdateMode.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ControlUpdateMode.cs
@@ -27,7 +27,6 @@
 //
 
 
-#if NET_2_0
 namespace System.Windows.Forms
 {
 	public enum ControlUpdateMode
@@ -36,4 +35,3 @@ namespace System.Windows.Forms
 		Never = 1
 	}
 }
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/CurrencyManager.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/CurrencyManager.cs
index 9465fe9..277e71c 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/CurrencyManager.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/CurrencyManager.cs
@@ -218,11 +218,8 @@ namespace System.Windows.Forms {
 				editable.CancelEdit ();
 				OnItemChanged (new ItemChangedEventArgs (Position));
 			}
-#if NET_2_0
 			if (list is ICancelAddNew)
 				((ICancelAddNew)list).CancelNew (listposition);
-#endif
-
 		}
 		
 		public override void EndCurrentEdit ()
@@ -237,10 +234,8 @@ namespace System.Windows.Forms {
 				editable.EndEdit ();
 			}
 
-#if NET_2_0
 			if (list is ICancelAddNew)
 				((ICancelAddNew)list).EndNew (listposition);
-#endif
 		}
 
 		public void Refresh ()
@@ -261,23 +256,19 @@ namespace System.Windows.Forms {
 				onCurrentChangedHandler (this, e);
 			}
 
-#if NET_2_0
 			// don't call OnCurrentItemChanged here, as it can be overridden
 			if (onCurrentItemChangedHandler != null) {
 				onCurrentItemChangedHandler (this, e);
 			}
-#endif
 
 		}
 
-#if NET_2_0
 		protected override void OnCurrentItemChanged (EventArgs e)
 		{
 			if (onCurrentItemChangedHandler != null) {
 				onCurrentItemChangedHandler (this, e);
 			}
 		}
-#endif
 
 		protected virtual void OnItemChanged (ItemChangedEventArgs e)
 		{
@@ -289,13 +280,11 @@ namespace System.Windows.Forms {
 			transfering_data = false;
 		}
 
-#if NET_2_0
 		void OnListChanged (ListChangedEventArgs args)
 		{
 			if (ListChanged != null)
 				ListChanged (this, args);
 		}
-#endif
 
 		protected virtual void OnPositionChanged (EventArgs e)
 		{
@@ -374,12 +363,7 @@ namespace System.Windows.Forms {
 			return TypeDescriptor.GetProperties (t, att);
 		}
 
-#if NET_2_0
-		protected
-#else
-		private
-#endif
-		void OnMetaDataChanged (EventArgs e)
+		protected void OnMetaDataChanged (EventArgs e)
 		{
 			if (MetaDataChanged != null)
 				MetaDataChanged (this, e);
@@ -392,9 +376,7 @@ namespace System.Windows.Forms {
 			case ListChangedType.PropertyDescriptorDeleted:
 			case ListChangedType.PropertyDescriptorChanged:
 				OnMetaDataChanged (EventArgs.Empty);
-#if NET_2_0
 				OnListChanged (e);
-#endif
 				break;
 			case ListChangedType.ItemDeleted:
 				if (list.Count == 0) {
@@ -402,15 +384,13 @@ namespace System.Windows.Forms {
 					listposition = -1;
 					UpdateIsBinding ();
 
-#if NET_2_0
 					OnPositionChanged (EventArgs.Empty);
 					OnCurrentChanged (EventArgs.Empty);
-#endif
 				}
 				else if (e.NewIndex <= listposition) {
 					/* the deleted row was either the current one, or one earlier in the list.
 					   Update the index and emit PositionChanged, CurrentChanged, and ItemChanged. */
-					ChangeRecordState (e.NewIndex,
+					ChangeRecordState (listposition+1,
 							   false, false, e.NewIndex != listposition, false);
 				}
 				else {
@@ -419,9 +399,7 @@ namespace System.Windows.Forms {
 				}
 
 				OnItemChanged (new ItemChangedEventArgs (-1));
-#if NET_2_0
 				OnListChanged (e);
-#endif
 				break;
 			case ListChangedType.ItemAdded:
 				if (list.Count == 1) {
@@ -429,17 +407,12 @@ namespace System.Windows.Forms {
 					ChangeRecordState (e.NewIndex,
 							   false, false, true, false);
 
-#if ONLY_1_1
-					UpdateIsBinding ();
-#else
 					OnItemChanged (new ItemChangedEventArgs (-1));
 					OnListChanged (e);
-#endif					 	
 				}
 				else {
-#if NET_2_0
 					if (e.NewIndex <= listposition) {
-						ChangeRecordState (listposition + 1,
+						ChangeRecordState (e.NewIndex,
 								   false, false, false, false);
 						OnItemChanged (new ItemChangedEventArgs (-1));
 						OnListChanged (e);
@@ -449,42 +422,29 @@ namespace System.Windows.Forms {
 						OnItemChanged (new ItemChangedEventArgs (-1));
 						OnListChanged (e);
 					}
-#else
-					OnItemChanged (new ItemChangedEventArgs (-1));
-#endif
 				}
 
 				break;
 			case ListChangedType.ItemChanged:
 				if (editing) {
-#if NET_2_0
 					if (e.NewIndex == listposition)
 						OnCurrentItemChanged (EventArgs.Empty);
-#endif
 					OnItemChanged (new ItemChangedEventArgs (e.NewIndex));
 				}
-#if NET_2_0
 				OnListChanged (e);
-#endif					 	
 				break;
 			case ListChangedType.Reset:
 				PushData();
 				UpdateIsBinding();
-#if NET_2_0	
 				OnListChanged (e);
-#endif
 				break;
 			default:
-#if NET_2_0
 				OnListChanged (e);
-#endif
 				break;
 			}
 		}
 
-#if NET_2_0
 		public event ListChangedEventHandler ListChanged;
-#endif
 		public event ItemChangedEventHandler ItemChanged;
 		public event EventHandler MetaDataChanged;
 	}
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Cursor.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Cursor.cs
index 70be1d1..cfb9713 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Cursor.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Cursor.cs
@@ -17,15 +17,12 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-// Copyright (c) 2004 Novell, Inc.
+// Copyright (c) 2004-2010 Novell, Inc.
 //
 // Authors:
 //	Peter Bartok	pbartok at novell.com
 //
 
-
-// NOT COMPLETE
-
 using System;
 using System.Drawing;
 using System.Drawing.Imaging;
@@ -41,7 +38,7 @@ namespace System.Windows.Forms {
 	[TypeConverter(typeof(CursorConverter))]
 	public sealed class Cursor : IDisposable, ISerializable {
 		#region	Internal Structs
-		[StructLayout(LayoutKind.Sequential)]
+		[StructLayout (LayoutKind.Sequential)]
 		private  struct CursorDir {
 			internal ushort		idReserved;	// Reserved
 			internal ushort		idType;		// resource type (2 for cursors)
@@ -49,7 +46,7 @@ namespace System.Windows.Forms {
 			internal CursorEntry[]	idEntries;	// the entries for each cursor
 		};
 		
-		[StructLayout(LayoutKind.Sequential)]
+		[StructLayout (LayoutKind.Sequential)]
 		private  struct CursorEntry {
 			internal byte		width;		// Width of cursor
 			internal byte		height;		// Height of cursor
@@ -100,13 +97,13 @@ namespace System.Windows.Forms {
 		internal string		name;
 		private StdCursor	std_cursor = (StdCursor) (-1);
 
-#if NET_2_0
 		private object tag;
-#endif
+
 		#endregion	// Local Variables
 
 		#region Public Constructors
-		private void CreateCursor(System.IO.Stream stream) {
+		private void CreateCursor (Stream stream)
+		{
 			InitFromStream(stream);
 			this.shape = ToBitmap(true, false);
 			this.mask = ToBitmap(false, false);
@@ -121,26 +118,32 @@ namespace System.Windows.Forms {
 			}
 		}
 	
-		internal Cursor (StdCursor cursor) : this (XplatUI.DefineStdCursor (cursor)) {
+		internal Cursor (StdCursor cursor) : this (XplatUI.DefineStdCursor (cursor))
+		{
 			std_cursor = cursor;
 		}
 		
-		private Cursor(SerializationInfo info, StreamingContext context) {
+		private Cursor(SerializationInfo info, StreamingContext context)
+		{
 		}
 
-		private Cursor() {
+		private Cursor()
+		{
 		}
 
-		~Cursor() {
+		~Cursor()
+		{
 			Dispose();
 		}
 
 		// This is supposed to take a Win32 handle
-		public Cursor(IntPtr handle) {
+		public Cursor (IntPtr handle) 
+		{
 			this.handle = handle;
 		}
 
-		public Cursor(System.IO.Stream stream) {
+		public Cursor (Stream stream)
+		{
 			CreateCursor(stream);
 		}
 
@@ -154,15 +157,15 @@ namespace System.Windows.Forms {
 		public Cursor(Type type, string resource) {
 			using (Stream s = type.Assembly.GetManifestResourceStream (type, resource)) {
 				if (s != null) {
-					CreateCursor(s);
+					CreateCursor (s);
 					return;
 				}
 			}
 
 			// Try a different way, previous failed
-			using (Stream s = Assembly.GetExecutingAssembly().GetManifestResourceStream(resource)) {
+			using (Stream s = Assembly.GetExecutingAssembly ().GetManifestResourceStream (resource)) {
 				if (s != null) {
-					CreateCursor(s);
+					CreateCursor (s);
 					return;
 				}
 			}
@@ -178,12 +181,12 @@ namespace System.Windows.Forms {
 				Rectangle	rect;
 				Size		size;
 
-				XplatUI.GrabInfo(out handle, out confined, out rect);
+				XplatUI.GrabInfo (out handle, out confined, out rect);
 				if (handle != IntPtr.Zero) {
 					return rect;
 				}
 
-				XplatUI.GetDisplaySize(out size);
+				XplatUI.GetDisplaySize (out size);
 				rect.X = 0;
 				rect.Y = 0;
 				rect.Width = size.Width;
@@ -200,21 +203,21 @@ namespace System.Windows.Forms {
 
 		public static Cursor Current {
 			get {
-				if (current != null) {
+				if (current != null) 
 					return current;
-				}
 				return Cursors.Default;
 			}
 
 			set {
-				if (current != value) {
-					current = value;
-					if (current == null){
-						// FIXME - define and set empty cursor
-						XplatUI.OverrideCursor(IntPtr.Zero);
-					} else
-						XplatUI.OverrideCursor(current.handle);
-				}
+				if (current == value)
+					return;
+				
+				current = value;
+				if (current == null){
+					// FIXME - define and set empty cursor
+					XplatUI.OverrideCursor(IntPtr.Zero);
+				} else
+					XplatUI.OverrideCursor(current.handle);
 			}
 		}
 
@@ -240,7 +243,6 @@ namespace System.Windows.Forms {
 			}
 		}
 
-#if NET_2_0
 		[MonoTODO ("Implemented for Win32, X11 always returns 0,0")]
 		public Point HotSpot {
 			get {
@@ -250,14 +252,13 @@ namespace System.Windows.Forms {
 				return new Point (hot_x, hot_y);
 			}
 		}
-#endif
+
 		public Size Size {
 			get {
 				return size;
 			}
 		}
 		
-#if NET_2_0
 		[Localizable (false)]
 		[Bindable (true)]
 		[TypeConverter (typeof (StringConverter))]
@@ -267,46 +268,44 @@ namespace System.Windows.Forms {
 			get { return this.tag; }
 			set { this.tag = value; }
 		}
-#endif
+
 		#endregion	// Public Instance Properties
 
 		#region Public Static Methods
-		public static void Hide() {
+		public static void Hide ()
+		{
 			XplatUI.ShowCursor(false);
 		}
 
-		public static void Show() {
+		public static void Show ()
+		{
 			XplatUI.ShowCursor(true);
 		}
 
-		public static bool operator !=(Cursor left, Cursor right) {
-			if ((object)left == (object)right) {
+		public static bool operator != (Cursor left, Cursor right) {
+			if ((object)left == (object)right)
 				return false;
-			}
 
-			if ((object)left == null || (object)right == null) {
+			if ((object)left == null || (object)right == null) 
 				return true;
-			}
 
-			if (left.handle == right.handle) {
+			if (left.handle == right.handle) 
 				return false;
-			}
 			return true;
 		}
 
 
-		public static bool operator ==(Cursor left, Cursor right) {
-			if ((object)left == (object)right) {
+		public static bool operator ==(Cursor left, Cursor right)
+		{
+			if ((object)left == (object)right) 
 				return true;
-			}
 
-			if ((object)left == null || (object)right == null) {
+			if ((object)left == null || (object)right == null)
 				return false;
-			}
 
-			if (left.handle == right.handle) {
+			if (left.handle == right.handle)
 				return true;
-			}
+
 			return false;
 		}
 		#endregion	// Public Static Methods
@@ -316,62 +315,65 @@ namespace System.Windows.Forms {
 			return handle;
 		}
 
-		public void Dispose() {
-			if (this.cursor != null) {
-				this.cursor.Dispose();
-				this.cursor = null;
+		public void Dispose ()
+		{
+			if (cursor != null) {
+				cursor.Dispose ();
+				cursor = null;
 			}
 
-			if (this.shape != null) {
-				this.shape.Dispose();
-				this.shape = null;
+			if (shape != null) {
+				shape.Dispose ();
+				shape = null;
 			}
 
-			if (this.mask != null) {
-				this.mask.Dispose();
-				this.mask = null;
+			if (mask != null) {
+				mask.Dispose ();
+				mask = null;
 			}
 
 			GC.SuppressFinalize (this);
 		}
 
-		public void Draw(Graphics g, Rectangle targetRect) {
-			if (this.cursor == null && std_cursor != (StdCursor) (-1)) {
-				this.cursor = XplatUI.DefineStdCursorBitmap (std_cursor);
-			}
-			if (this.cursor != null) {
+		public void Draw (Graphics g, Rectangle targetRect)
+		{
+			if (cursor == null && std_cursor != (StdCursor) (-1)) 
+				cursor = XplatUI.DefineStdCursorBitmap (std_cursor);
+
+			if (cursor != null) {
 				// Size of the targetRect is not considered at all
-				g.DrawImage (this.cursor, targetRect.X, targetRect.Y);
+				g.DrawImage (cursor, targetRect.X, targetRect.Y);
 			}
 		}
 
 		public void DrawStretched (Graphics g, Rectangle targetRect)
 		{
-			if (this.cursor == null && std_cursor != (StdCursor)(-1)) {
-				this.cursor = XplatUI.DefineStdCursorBitmap (std_cursor);
-			}
-			if (this.cursor != null) {
-				g.DrawImage(this.cursor, targetRect, new Rectangle(0, 0, this.cursor.Width, this.cursor.Height), GraphicsUnit.Pixel);
+			if (cursor == null && std_cursor != (StdCursor)(-1)) 
+				cursor = XplatUI.DefineStdCursorBitmap (std_cursor);
+
+			if (cursor != null) {
+				g.DrawImage (cursor, targetRect, new Rectangle(0, 0, cursor.Width, cursor.Height), GraphicsUnit.Pixel);
 			}
 		}
 
-		public override bool Equals(object obj) {
-			if ( !(obj is Cursor)) {
+		public override bool Equals (object obj)
+		{
+			if (!(obj is Cursor)) 
 				return false;
-			}
 
-			if (((Cursor)obj).handle == this.handle) {
+			if (((Cursor)obj).handle == handle)
 				return true;
-			}
 
 			return false;
 		}
 
-		public override int GetHashCode() {
+		public override int GetHashCode()
+		{
 			return base.GetHashCode ();
 		}
 
-		public override string ToString() {
+		public override string ToString()
+		{
 			if (name != null) {
 				return "[Cursor:" + name + "]";
 			}
@@ -379,63 +381,65 @@ namespace System.Windows.Forms {
 			throw new FormatException("Cannot convert custom cursors to string.");
 		}
 
-		void ISerializable.GetObjectData(SerializationInfo si, StreamingContext context) {
+		void ISerializable.GetObjectData (SerializationInfo si, StreamingContext context)
+		{
 			MemoryStream	ms;
 			BinaryWriter	wr;
 			CursorImage	ci;
 
-			ms = new MemoryStream();
-			wr = new BinaryWriter(ms);
-			ci = cursor_data[this.id];
+			ms = new MemoryStream ();
+			wr = new BinaryWriter (ms);
+			ci = cursor_data [this.id];
 
 			// Build the headers, first the CursorDir
-			wr.Write((ushort)0);	// Reserved
-			wr.Write((ushort)2);	// Resource type
-			wr.Write((ushort)1);	// Count
+			wr.Write ((ushort) 0);	// Reserved
+			wr.Write ((ushort) 2);	// Resource type
+			wr.Write ((ushort) 1);	// Count
 
 			// Next the CursorEntry
-			wr.Write((byte)cursor_dir.idEntries[this.id].width);
-			wr.Write((byte)cursor_dir.idEntries[this.id].height);
-			wr.Write((byte)cursor_dir.idEntries[this.id].colorCount);
-			wr.Write((byte)cursor_dir.idEntries[this.id].reserved);
-			wr.Write((ushort)cursor_dir.idEntries[this.id].xHotspot);
-			wr.Write((ushort)cursor_dir.idEntries[this.id].yHotspot);
-			wr.Write((uint)(40 + (ci.cursorColors.Length * 4) + ci.cursorXOR.Length + ci.cursorAND.Length));
-			wr.Write((uint)(6 + 16));	// CursorDir + CursorEntry size
+			wr.Write ((byte)cursor_dir.idEntries [this.id].width);
+			wr.Write ((byte)cursor_dir.idEntries [this.id].height);
+			wr.Write ((byte)cursor_dir.idEntries [this.id].colorCount);
+			wr.Write ((byte)cursor_dir.idEntries [this.id].reserved);
+			wr.Write ((ushort)cursor_dir.idEntries [this.id].xHotspot);
+			wr.Write ((ushort)cursor_dir.idEntries [this.id].yHotspot);
+			wr.Write ((uint)(40 + (ci.cursorColors.Length * 4) + ci.cursorXOR.Length + ci.cursorAND.Length));
+			wr.Write ((uint)(6 + 16));	// CursorDir + CursorEntry size
 
 			// Then the CursorInfoHeader
-			wr.Write(ci.cursorHeader.biSize);
-			wr.Write(ci.cursorHeader.biWidth);
-			wr.Write(ci.cursorHeader.biHeight);
-			wr.Write(ci.cursorHeader.biPlanes);
-			wr.Write(ci.cursorHeader.biBitCount);
-			wr.Write(ci.cursorHeader.biCompression);
-			wr.Write(ci.cursorHeader.biSizeImage);
-			wr.Write(ci.cursorHeader.biXPelsPerMeter);
-			wr.Write(ci.cursorHeader.biYPelsPerMeter);
-			wr.Write(ci.cursorHeader.biClrUsed);
-			wr.Write(ci.cursorHeader.biClrImportant);
-			for (int i = 0; i < ci.cursorColors.Length; i++) {
+			wr.Write (ci.cursorHeader.biSize);
+			wr.Write (ci.cursorHeader.biWidth);
+			wr.Write (ci.cursorHeader.biHeight);
+			wr.Write (ci.cursorHeader.biPlanes);
+			wr.Write (ci.cursorHeader.biBitCount);
+			wr.Write (ci.cursorHeader.biCompression);
+			wr.Write (ci.cursorHeader.biSizeImage);
+			wr.Write (ci.cursorHeader.biXPelsPerMeter);
+			wr.Write (ci.cursorHeader.biYPelsPerMeter);
+			wr.Write (ci.cursorHeader.biClrUsed);
+			wr.Write (ci.cursorHeader.biClrImportant);
+			
+			for (int i = 0; i < ci.cursorColors.Length; i++) 
 				wr.Write(ci.cursorColors[i]);
-			}
-			wr.Write(ci.cursorXOR);
-			wr.Write(ci.cursorAND);
-			wr.Flush();
 
-			si.AddValue ("CursorData", ms.ToArray());
+			wr.Write (ci.cursorXOR);
+			wr.Write (ci.cursorAND);
+			wr.Flush ();
+
+			si.AddValue ("CursorData", ms.ToArray ());
 		}
 		#endregion	// Public Instance Methods
 
-		#region Private Methods		  w
-		private void InitFromStream(Stream stream) {
+		#region Private Methods
+		private void InitFromStream (Stream stream)
+		{
 			ushort		entry_count;
 			CursorEntry	ce;
 			uint		largest;
 
 			//read the cursor header
-			if (stream == null || stream.Length == 0) {
-				throw new System.ArgumentException ("The argument 'stream' must be a picture that can be used as a cursor", "stream");
-			}
+			if (stream == null || stream.Length == 0) 
+				throw new ArgumentException ("The argument 'stream' must be a picture that can be used as a cursor", "stream");
 			
 			BinaryReader reader = new BinaryReader (stream);
             
@@ -443,7 +447,7 @@ namespace System.Windows.Forms {
 			cursor_dir.idReserved = reader.ReadUInt16();
 			cursor_dir.idType = reader.ReadUInt16();
 			if (cursor_dir.idReserved != 0 || !(cursor_dir.idType == 2 || cursor_dir.idType == 1))
-				throw new System.ArgumentException ("Invalid Argument, format error", "stream");
+				throw new ArgumentException ("Invalid Argument, format error", "stream");
 
 			entry_count = reader.ReadUInt16();
 			cursor_dir.idCount = entry_count;
@@ -472,7 +476,7 @@ namespace System.Windows.Forms {
 
 			// If we have more than one pick the largest cursor
 			largest = 0;
-			for (int j=0; j < entry_count; j++){
+			for (int j = 0; j < entry_count; j++){
 				if (cursor_dir.idEntries[j].sizeInBytes >= largest)	{
 					largest = cursor_dir.idEntries[j].sizeInBytes;
 					this.id = (ushort)j;
@@ -504,7 +508,7 @@ namespace System.Windows.Forms {
 
 				cih.biSize = cih_reader.ReadUInt32 ();
 				if (cih.biSize != 40) {
-					throw new System.ArgumentException ("Invalid cursor file", "stream");
+					throw new ArgumentException ("Invalid cursor file", "stream");
 				}
 				cih.biWidth = cih_reader.ReadInt32 ();
 				cih.biHeight = cih_reader.ReadInt32 ();
@@ -564,7 +568,8 @@ namespace System.Windows.Forms {
 			reader.Close();
 		}
 
-		private Bitmap ToBitmap(bool xor, bool transparent) {
+		private Bitmap ToBitmap(bool xor, bool transparent)
+		{
 			CursorImage		ci;
 			CursorInfoHeader	cih;
 			int			ncolors;
@@ -574,9 +579,8 @@ namespace System.Windows.Forms {
 			int			biHeight;
 			int			bytesPerLine;
 
-			if (cursor_data == null) {
+			if (cursor_data == null)
 				return new Bitmap(32, 32);
-			}
 
 			ci = cursor_data[this.id];
 			cih = ci.cursorHeader;
@@ -604,47 +608,43 @@ namespace System.Windows.Forms {
 				}
 
 				switch(cih.biBitCount) {
-					case 1: {	// Monochrome
-						bmp = new Bitmap(cih.biWidth, biHeight, PixelFormat.Format1bppIndexed);
-						break;
-					}
-
-					case 4: {	// 4bpp
-						bmp = new Bitmap(cih.biWidth, biHeight, PixelFormat.Format4bppIndexed);
-						break;
-					}
-
-					case 8: {	// 8bpp
-						bmp = new Bitmap(cih.biWidth, biHeight, PixelFormat.Format8bppIndexed);
-						break;
-					}
-
-					case 24:
-					case 32: {	// 32bpp
-						bmp = new Bitmap(cih.biWidth, biHeight, PixelFormat.Format32bppArgb);
-						break;
-					}
-
-					default: {
-						throw new Exception("Unexpected number of bits:" + cih.biBitCount.ToString());
-					}
+				case 1: {	// Monochrome
+					bmp = new Bitmap (cih.biWidth, biHeight, PixelFormat.Format1bppIndexed);
+					break;
 				}
-
+					
+				case 4: {	// 4bpp
+					bmp = new Bitmap (cih.biWidth, biHeight, PixelFormat.Format4bppIndexed);
+					break;
+				}
+					
+				case 8: {	// 8bpp
+					bmp = new Bitmap (cih.biWidth, biHeight, PixelFormat.Format8bppIndexed);
+					break;
+				}
+					
+				case 24:
+				case 32: {	// 32bpp
+					bmp = new Bitmap (cih.biWidth, biHeight, PixelFormat.Format32bppArgb);
+					break;
+				}
+					
+				default: 
+					throw new Exception("Unexpected number of bits:" + cih.biBitCount.ToString());
+				}
+				
 				if (cih.biBitCount < 24) {
 					pal = bmp.Palette;				// Managed palette
-
-					for (int i = 0; i < ci.cursorColors.Length; i++) {
+					for (int i = 0; i < ci.cursorColors.Length; i++) 
 						pal.Entries[i] = Color.FromArgb((int)ci.cursorColors[i] | unchecked((int)0xff000000));
-					}
 					bmp.Palette = pal;
 				}
 
 				bytesPerLine = (int)((((cih.biWidth * cih.biBitCount) + 31) & ~31) >> 3);
 				bits = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.WriteOnly, bmp.PixelFormat);
 
-				for (int y = 0; y < biHeight; y++) {
+				for (int y = 0; y < biHeight; y++) 
 					Marshal.Copy(ci.cursorXOR, bytesPerLine * y, (IntPtr)(bits.Scan0.ToInt64() + bits.Stride * (biHeight - 1 - y)), bytesPerLine);
-				}
 				
 				bmp.UnlockBits(bits);
 			}
@@ -655,9 +655,8 @@ namespace System.Windows.Forms {
 				for (int y = 0; y < biHeight; y++) {
 					for (int x = 0; x < cih.biWidth / 8; x++) {
 						for (int bit = 7; bit >= 0; bit--) {
-							if (((ci.cursorAND[y * cih.biWidth / 8 +x] >> bit) & 1) != 0) {
+							if (((ci.cursorAND[y * cih.biWidth / 8 +x] >> bit) & 1) != 0) 
 								bmp.SetPixel(x*8 + 7-bit, biHeight - y - 1, Color.Transparent);
-							}
 						}
 					}
 				}
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGrid.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGrid.cs
index 41d003b..29fbae3 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGrid.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGrid.cs
@@ -111,17 +111,12 @@ namespace System.Windows.Forms
 	[DefaultEvent("Navigate")]
 	[DefaultProperty("DataSource")]
 	[Designer("System.Windows.Forms.Design.DataGridDesigner, " + Consts.AssemblySystem_Design, "System.ComponentModel.Design.IDesigner")]
-#if NET_2_0
 	[ComplexBindingProperties ("DataSource", "DataMember")]
 	[ClassInterface (ClassInterfaceType.AutoDispatch)]
 	[ComVisible (true)]
-#endif
 	public class DataGrid : Control, ISupportInitialize, IDataGridEditingService
 	{
 		[Flags]
-#if !NET_2_0
-		[Serializable]
-#endif
 		public enum HitTestType
 		{
 			None		= 0,
@@ -375,14 +370,12 @@ namespace System.Windows.Forms
 			}
 		}
 
-#if NET_2_0
 		[Browsable (false)]
 		[EditorBrowsable (EditorBrowsableState.Never)]
 		public override ImageLayout BackgroundImageLayout {
 			get { return base.BackgroundImageLayout; }
 			set { base.BackgroundImageLayout = value; }
 		}
-#endif
 
 		[DispId(-504)]
 		[DefaultValue(BorderStyle.Fixed3D)]
@@ -465,10 +458,8 @@ namespace System.Windows.Forms
 				if (grid_style.ColumnHeadersVisible != value) {
 					grid_style.ColumnHeadersVisible = value; 
 
-#if NET_2_0
 					// UIA Framework: To keep track of header
 					OnUIAColumnHeadersVisibleChanged ();
-#endif
 				}
 			}
 		}
@@ -635,11 +626,7 @@ namespace System.Windows.Forms
 
 		[DefaultValue(null)]
 		[RefreshProperties(RefreshProperties.Repaint)]
-#if NET_2_0
 		[AttributeProvider (typeof (IListSource))]
-#else
-		[TypeConverter("System.Windows.Forms.Design.DataSourceConverter, " + Consts.AssemblySystem_Design)]
-#endif
 		public object DataSource {
 			get { return datasource; }
 			set {
@@ -747,12 +734,10 @@ namespace System.Windows.Forms
 				CurrentTableStyle.GridColumnStyles[columnIndex].SetColumnValueAtRow (ListManager,
 												     rowIndex, value); 
 
-#if NET_2_0
 				// UIA Framework: Raising changes in datasource.
 				OnUIAGridCellChanged (new CollectionChangeEventArgs (CollectionChangeAction.Refresh,
 				                                                     new DataGridCell (rowIndex,
  				                                                                       columnIndex)));
-#endif
 			}
 		}
 
@@ -765,9 +750,6 @@ namespace System.Windows.Forms
 			get { return new Font (Font, FontStyle.Underline); }
 		}
 
-#if !NET_2_0
-		[ComVisible(false)]
-#endif
 		[Browsable(false)]
 		[EditorBrowsable(EditorBrowsableState.Never)]
 		public Color LinkHoverColor {
@@ -2163,21 +2145,17 @@ namespace System.Windows.Forms
 			if (selected_rows.Count == 0)
 				selection_start = row;
 
-#if NET_2_0
 			// UIA Framework: To raise event only when selecting
 			bool wasSelected = rows [row].IsSelected;
-#endif
 
 			selected_rows[row] = true;
 			rows[row].IsSelected = true;
 
 			InvalidateRow (row);
 
-#if NET_2_0
 			// UIA Framework:
 			if (!wasSelected)
 				OnUIASelectionChangedEvent (new CollectionChangeEventArgs (CollectionChangeAction.Add, row));
-#endif
 
 		}
 
@@ -2262,20 +2240,16 @@ namespace System.Windows.Forms
 
 		public void UnSelect (int row)
 		{
-#if NET_2_0
 			// UIA Framework: To raise event only when unselecting 
 			bool wasSelected = rows  [row].IsSelected;
 
-#endif
 			rows[row].IsSelected = false;
 			selected_rows.Remove (row);
 			InvalidateRow (row);
 
-#if NET_2_0
 			// UIA Framework: Raises selection event
 			if (!wasSelected)
 				OnUIASelectionChangedEvent (new CollectionChangeEventArgs (CollectionChangeAction.Remove, row));
-#endif
 		}
 		#endregion	// Public Instance Methods
 
@@ -2470,7 +2444,6 @@ namespace System.Windows.Forms
 					new_rows[i].VerticalOffset = new_rows[i-1].VerticalOffset + new_rows[i-1].Height;
 			}
 
-#if NET_2_0
 			// UIA Framework event: Updates collection list depending on binding
 			CollectionChangeAction action = CollectionChangeAction.Refresh;
 			if (rows != null) {
@@ -2479,15 +2452,12 @@ namespace System.Windows.Forms
 				else
 					action = CollectionChangeAction.Remove;
 			}
-#endif
 			rows = new_rows;
 
 			if (recalc)
 				CalcAreasAndInvalidate ();
-#if NET_2_0
 			// UIA Framework event: Row added/removed 
 			OnUIACollectionChangedEvent (new CollectionChangeEventArgs (action, -1));
-#endif 
 		}
 
 		internal void UpdateRowsFrom (DataGridRelationshipRow row)
@@ -2799,14 +2769,12 @@ namespace System.Windows.Forms
 			remove { base.BackgroundImageChanged -= value; }
 		}
 
-#if NET_2_0
 		[Browsable(false)]
 		[EditorBrowsable(EditorBrowsableState.Never)]
 		public new event EventHandler BackgroundImageLayoutChanged {
 			add { base.BackgroundImageLayoutChanged += value; }
 			remove { base.BackgroundImageLayoutChanged -= value; }
 		}
-#endif
 
 		[Browsable(false)]
 		[EditorBrowsable(EditorBrowsableState.Never)]
@@ -3373,8 +3341,6 @@ namespace System.Windows.Forms
 
 		#endregion // Code originally in DataGridDrawingLogic.cs
 
-#if NET_2_0
-		
 		#region UIA Framework: Methods, Properties and Events
 		
 		static object UIACollectionChangedEvent = new object ();
@@ -3467,7 +3433,5 @@ namespace System.Windows.Forms
 
 		#endregion // UIA Framework: Methods, Properties and Events
 
-#endif
-
 	}
 }
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridBoolColumn.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridBoolColumn.cs
index 0127178..e755c3e 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridBoolColumn.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridBoolColumn.cs
@@ -93,9 +93,7 @@ namespace System.Windows.Forms
 		}
 
 		[TypeConverter(typeof(System.ComponentModel.StringConverter))]
-#if NET_2_0
 		[DefaultValue (false)]
-#endif
 		public object FalseValue {
 			get {
 				return false_value;
@@ -126,9 +124,7 @@ namespace System.Windows.Forms
 		}
 
 		[TypeConverter(typeof(System.ComponentModel.StringConverter))]
-#if NET_2_0
 		[DefaultValue (true)]
-#endif
 		public object TrueValue {
 			get {
 				return true_value;
@@ -178,13 +174,8 @@ namespace System.Windows.Forms
 			base.ConcedeFocus ();
 		}
 
-#if NET_2_0
 		protected internal override void Edit (CurrencyManager source, int rowNum, Rectangle bounds, bool readOnly, string displayText,  bool cellIsVisible)
 		{
-#else
-		protected internal override void Edit (CurrencyManager source, int rowNum, Rectangle bounds, bool readOnly, string instantText, bool cellIsVisible)
-		{
-#endif
 			editing_row = rowNum;
 			model_state = FromValueToState (GetColumnValueAtRow (source, rowNum));
 			editing_state = model_state | CheckState.Selected;
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridColumnStyle.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridColumnStyle.cs
index c28bf4b..933ddcf 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridColumnStyle.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridColumnStyle.cs
@@ -44,11 +44,9 @@ namespace System.Windows.Forms
 			#endregion
 
 			#region Constructors
-#if NET_2_0
 			public DataGridColumnHeaderAccessibleObject ()
 			{
 			}
-#endif		
 			public DataGridColumnHeaderAccessibleObject (DataGridColumnStyle owner)
 			{
 				this.owner = owner;
@@ -231,9 +229,7 @@ namespace System.Windows.Forms
 
 		[Editor("System.Windows.Forms.Design.DataGridColumnStyleMappingNameEditor, " + Consts.AssemblySystem_Design, typeof(System.Drawing.Design.UITypeEditor))]
 		[Localizable(true)]
-#if NET_2_0
 		[DefaultValue ("")]
-#endif
 		public string MappingName {
 			get {
 				return mapping_name;
@@ -404,24 +400,15 @@ namespace System.Windows.Forms
 			Edit (source, rowNum, bounds, readOnly, string.Empty);
 		}
 
-#if NET_2_0
 		protected internal virtual void Edit (CurrencyManager source, int rowNum, Rectangle bounds, bool readOnly, string displayText)
 		{
 			string instantText = displayText;
-#else
-		protected internal virtual void Edit (CurrencyManager source, int rowNum, Rectangle bounds, bool readOnly, string instantText)
-		{
-#endif
 			Edit (source, rowNum, bounds, readOnly, instantText, true);
 		}
 
 		protected internal abstract void Edit (CurrencyManager source,
 			int rowNum, Rectangle bounds, bool readOnly,
-#if NET_2_0
 			string displayText,
-#else
-			string instantText,
-#endif
 			bool cellIsVisible);
 
 
@@ -501,15 +488,9 @@ namespace System.Windows.Forms
 			SetDataGridInColumn (value);
 		}
 
-#if NET_2_0
 		protected internal virtual void UpdateUI (CurrencyManager source, int rowNum, string displayText)
 		{
 		}
-#else
-		protected internal virtual void UpdateUI (CurrencyManager source, int rowNum, string instantText)
-		{
-		}
-#endif
 
 		#endregion	// Public Instance Methods
 		
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridTableStyle.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridTableStyle.cs
index 356311d..3f1f9af 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridTableStyle.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridTableStyle.cs
@@ -42,9 +42,7 @@ namespace System.Windows.Forms
 	[ToolboxItem(false)]
 	public class DataGridTableStyle : Component, IDataGridEditingService
 	{
-#if NET_2_0
 		readonly
-#endif
 		public static DataGridTableStyle DefaultTableStyle = new DataGridTableStyle (true);
 
 		#region	Local Variables
@@ -314,9 +312,7 @@ namespace System.Windows.Forms
 			}
 		}
 
-#if !NET_2_0
-		[ComVisible(false)]
-#endif
+
 		[EditorBrowsable(EditorBrowsableState.Never)]
 		[Browsable(false)]
 		public Color LinkHoverColor {
@@ -331,9 +327,7 @@ namespace System.Windows.Forms
 		}
 
 		[Editor("System.Windows.Forms.Design.DataGridTableStyleMappingNameEditor, " + Consts.AssemblySystem_Design, typeof(System.Drawing.Design.UITypeEditor))]
-#if NET_2_0
 		[DefaultValue ("")]
-#endif
 		public string MappingName {
 			get { return mapping_name; }
 			set {
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridTextBox.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridTextBox.cs
index 7a10d72..80acd75 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridTextBox.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridTextBox.cs
@@ -34,10 +34,8 @@ namespace System.Windows.Forms
 	[DefaultProperty("GridEditName")]
 	[DesignTimeVisible(false)]
 	[ToolboxItem(false)]
-#if NET_2_0
 	[ClassInterface (ClassInterfaceType.AutoDispatch)]
 	[ComVisible (true)]
-#endif
 	public class DataGridTextBox : TextBox
 	{
 
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridTextBoxColumn.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridTextBoxColumn.cs
index 21d9b8c..e7f0e49 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridTextBoxColumn.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridTextBoxColumn.cs
@@ -76,9 +76,7 @@ namespace System.Windows.Forms
 
 		#region Public Instance Properties
 		[Editor("System.Windows.Forms.Design.DataGridColumnStyleFormatEditor, " + Consts.AssemblySystem_Design, typeof(System.Drawing.Design.UITypeEditor))]
-#if NET_2_0
 		[DefaultValue (null)]
-#endif
 		public string Format {
 			get { return format; }
 			set {
@@ -166,14 +164,9 @@ namespace System.Windows.Forms
 			HideEditBox ();
 		}
 
-#if NET_2_0
 		protected internal override void Edit (CurrencyManager source, int rowNum, Rectangle bounds, bool readOnly, string displayText, bool cellIsVisible)
 		{
 			string instantText = displayText;
-#else
-		protected internal override void Edit (CurrencyManager source, int rowNum, Rectangle bounds, bool readOnly, string instantText, bool cellIsVisible)
-		{
-#endif
 			grid.SuspendLayout ();
 
 			textbox.TextChanged -= new EventHandler (textbox_TextChanged);
@@ -336,14 +329,9 @@ namespace System.Windows.Forms
 			grid.ResumeLayout (false);
 		}
 
-#if NET_2_0
 		protected internal override void UpdateUI (CurrencyManager source, int rowNum, string displayText)
 		{
 			string instantText = displayText;
-#else
-		protected internal override void UpdateUI (CurrencyManager source, int rowNum, string instantText)
-		{
-#endif
 			if (textbox.Visible // I don't really like this, but it gets DataGridTextBoxColumnTest.TestUpdateUI passing
 			    && textbox.IsInEditOrNavigateMode) {
 				textbox.Text = GetFormattedValue (source, rowNum);
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridView.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridView.cs
index b1a0afc..7c2d0c3 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridView.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridView.cs
@@ -24,15 +24,13 @@
 //	Ivan N. Zlatev <contact at i-nz.net>
 //
 
-#if NET_2_0
-
 using System;
 using System.ComponentModel;
 using System.Runtime.InteropServices;
 using System.Drawing;
 using System.Reflection;
 using System.Collections;
-using System.Data;
+using System.Text;
 using System.Collections.Generic;
 
 namespace System.Windows.Forms {
@@ -76,7 +74,7 @@ namespace System.Windows.Forms {
 		private DataGridViewColumnCollection columns;
 		private DataGridViewCell currentCell;
 		private Point currentCellAddress;
-		private DataGridViewRow currentRow;
+		//private DataGridViewRow currentRow;
 		private string dataMember;
 		private object dataSource;
 		private DataGridViewCellStyle defaultCellStyle;
@@ -2665,10 +2663,10 @@ namespace System.Windows.Forms {
 			
 			DataObject result = new DataObject ();
 			
-			System.Text.StringBuilder text_builder = new System.Text.StringBuilder ();
-			System.Text.StringBuilder utext_builder = new System.Text.StringBuilder ();
-			System.Text.StringBuilder html_builder = new System.Text.StringBuilder ();
-			System.Text.StringBuilder csv_builder = new System.Text.StringBuilder ();
+			StringBuilder text_builder = new StringBuilder ();
+			StringBuilder utext_builder = new StringBuilder ();
+			StringBuilder html_builder = new StringBuilder ();
+			StringBuilder csv_builder = new StringBuilder ();
 			
 			// Loop through all rows and columns to create the content.
 			// -1 is the header row/column.
@@ -5253,8 +5251,6 @@ namespace System.Windows.Forms {
 			if (!AllowUserToDeleteRows || SelectedRows.Count == 0)
 				return false;
 
-			int index = Math.Max (selected_row - SelectedRows.Count + 1, 0);
-			
 			for (int i = SelectedRows.Count - 1; i >= 0; i--) {
 				DataGridViewRow row = SelectedRows[i];
 
@@ -6272,7 +6268,7 @@ namespace System.Windows.Forms {
 					if (disp_x == Columns.Count - 1)
 						delta_x = horizontalScrollBar.Maximum - horizontalScrollBar.Value;
 					else
-						for (int i = first_col_index + displayedColumnsCount - 1; i < disp_x; i++)
+						for (int i = first_col_index + displayedColumnsCount - 1; i < disp_x && i != -1; i++)
 							delta_x += Columns[ColumnDisplayIndexToIndex (i)].Width;
 
 					horizontalScrollBar.SafeValueSet (horizontalScrollBar.Value + delta_x);
@@ -6735,5 +6731,3 @@ namespace System.Windows.Forms {
 		}
 	}
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewAdvancedBorderStyle.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewAdvancedBorderStyle.cs
index 1a36896..df3c323 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewAdvancedBorderStyle.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewAdvancedBorderStyle.cs
@@ -24,8 +24,6 @@
 //
 
 
-#if NET_2_0
-
 using System;
 using System.ComponentModel;
 
@@ -155,5 +153,3 @@ namespace System.Windows.Forms {
 	}
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewAdvancedCellBorderStyle.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewAdvancedCellBorderStyle.cs
index 80df6be..b7c07f2 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewAdvancedCellBorderStyle.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewAdvancedCellBorderStyle.cs
@@ -23,7 +23,6 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-#if NET_2_0
 
 namespace System.Windows.Forms {
 
@@ -39,5 +38,3 @@ namespace System.Windows.Forms {
 	}
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewAutoSizeColumnMode.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewAutoSizeColumnMode.cs
index 2317b1a..52bd070 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewAutoSizeColumnMode.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewAutoSizeColumnMode.cs
@@ -24,8 +24,6 @@
 //
 
 
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public enum DataGridViewAutoSizeColumnMode {
@@ -40,5 +38,3 @@ namespace System.Windows.Forms {
 	}
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewAutoSizeColumnModeEventArgs.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewAutoSizeColumnModeEventArgs.cs
index f53b564..158f977 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewAutoSizeColumnModeEventArgs.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewAutoSizeColumnModeEventArgs.cs
@@ -24,8 +24,6 @@
 //
 
 
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public class DataGridViewAutoSizeColumnModeEventArgs : EventArgs {
@@ -49,5 +47,3 @@ namespace System.Windows.Forms {
 	}
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewAutoSizeColumnModeEventHandler.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewAutoSizeColumnModeEventHandler.cs
index 4dace6a..144b2d8 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewAutoSizeColumnModeEventHandler.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewAutoSizeColumnModeEventHandler.cs
@@ -24,12 +24,8 @@
 //
 
 
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public delegate void DataGridViewAutoSizeColumnModeEventHandler (object sender, DataGridViewAutoSizeColumnModeEventArgs e);
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewAutoSizeColumnsMode.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewAutoSizeColumnsMode.cs
index b36b34d..f32d7cd 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewAutoSizeColumnsMode.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewAutoSizeColumnsMode.cs
@@ -24,8 +24,6 @@
 //
 
 
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public enum DataGridViewAutoSizeColumnsMode {
@@ -39,5 +37,3 @@ namespace System.Windows.Forms {
 	}
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewAutoSizeColumnsModeEventArgs.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewAutoSizeColumnsModeEventArgs.cs
index 6742b3a..56dd8ad 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewAutoSizeColumnsModeEventArgs.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewAutoSizeColumnsModeEventArgs.cs
@@ -24,8 +24,6 @@
 //
 
 
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public class DataGridViewAutoSizeColumnsModeEventArgs : EventArgs {
@@ -43,5 +41,3 @@ namespace System.Windows.Forms {
 	}
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewAutoSizeColumnsModeEventHandler.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewAutoSizeColumnsModeEventHandler.cs
index 83229f2..53a842f 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewAutoSizeColumnsModeEventHandler.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewAutoSizeColumnsModeEventHandler.cs
@@ -24,12 +24,8 @@
 //
 
 
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public delegate void DataGridViewAutoSizeColumnsModeEventHandler (object sender, DataGridViewAutoSizeColumnsModeEventArgs e);
 	
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewAutoSizeModeEventArgs.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewAutoSizeModeEventArgs.cs
index 88ce4d7..705e991 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewAutoSizeModeEventArgs.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewAutoSizeModeEventArgs.cs
@@ -24,8 +24,6 @@
 //
 
 
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public class DataGridViewAutoSizeModeEventArgs : EventArgs {
@@ -43,5 +41,3 @@ namespace System.Windows.Forms {
 	}
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewAutoSizeModeEventHandler.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewAutoSizeModeEventHandler.cs
index 0e9e703..719c01c 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewAutoSizeModeEventHandler.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewAutoSizeModeEventHandler.cs
@@ -24,12 +24,8 @@
 //
 
 
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public delegate void DataGridViewAutoSizeModeEventHandler (object sender, DataGridViewAutoSizeModeEventArgs e);
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewAutoSizeRowMode.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewAutoSizeRowMode.cs
index ad36676..23c0ea6 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewAutoSizeRowMode.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewAutoSizeRowMode.cs
@@ -24,8 +24,6 @@
 //
 
 
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public enum DataGridViewAutoSizeRowMode {
@@ -35,5 +33,3 @@ namespace System.Windows.Forms {
 	}
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewAutoSizeRowsMode.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewAutoSizeRowsMode.cs
index 7656a3c..400d2ed 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewAutoSizeRowsMode.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewAutoSizeRowsMode.cs
@@ -23,9 +23,6 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public enum DataGridViewAutoSizeRowsMode {
@@ -39,5 +36,3 @@ namespace System.Windows.Forms {
 	}
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewBand.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewBand.cs
index 112aa1e..3ad8af6 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewBand.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewBand.cs
@@ -24,8 +24,6 @@
 //
 
 
-#if NET_2_0
-
 using System.ComponentModel;
 
 namespace System.Windows.Forms {
@@ -264,4 +262,3 @@ namespace System.Windows.Forms {
 
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewBindingCompleteEventArgs.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewBindingCompleteEventArgs.cs
index 74eca19..539e251 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewBindingCompleteEventArgs.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewBindingCompleteEventArgs.cs
@@ -24,8 +24,6 @@
 //
 
 
-#if NET_2_0
-
 using System.ComponentModel;
 
 namespace System.Windows.Forms {
@@ -45,5 +43,3 @@ namespace System.Windows.Forms {
 	}
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewBindingCompleteEventHandler.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewBindingCompleteEventHandler.cs
index 0978451..e421aa4 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewBindingCompleteEventHandler.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewBindingCompleteEventHandler.cs
@@ -24,12 +24,9 @@
 //
 
 
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public delegate void DataGridViewBindingCompleteEventHandler (object sender, DataGridViewBindingCompleteEventArgs e);
 
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewButtonCell.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewButtonCell.cs
index a216aa4..d0cc064 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewButtonCell.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewButtonCell.cs
@@ -23,8 +23,6 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-#if NET_2_0
-
 using System.Drawing;
 using System.ComponentModel;
 using System.Windows.Forms.VisualStyles;
@@ -285,4 +283,3 @@ namespace System.Windows.Forms {
 
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewButtonColumn.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewButtonColumn.cs
index 8ee8ce3..28234bc 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewButtonColumn.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewButtonColumn.cs
@@ -24,7 +24,6 @@
 //
 
 
-#if NET_2_0
 using System.Drawing;
 using System.ComponentModel;
 
@@ -99,4 +98,3 @@ namespace System.Windows.Forms {
 
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCell.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCell.cs
index 88552fb..4747c9f 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCell.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCell.cs
@@ -25,7 +25,6 @@
 //
 
 
-#if NET_2_0
 
 using System;
 using System.Drawing;
@@ -805,7 +804,7 @@ namespace System.Windows.Forms {
 			string value = null;
 			
 			if (Selected) {
-				DataGridViewCellStyle style = GetInheritedStyle (null, rowIndex, false);
+//				DataGridViewCellStyle style = GetInheritedStyle (null, rowIndex, false);
 				value = GetEditedFormattedValue (rowIndex, DataGridViewDataErrorContexts.ClipboardContent | DataGridViewDataErrorContexts.Formatting) as string;
 			}
 
@@ -1587,5 +1586,3 @@ namespace System.Windows.Forms {
 	}
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellBorderStyle.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellBorderStyle.cs
index bac099e..f80b5fd 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellBorderStyle.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellBorderStyle.cs
@@ -24,8 +24,6 @@
 //
 
 
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public enum DataGridViewCellBorderStyle {
@@ -43,5 +41,3 @@ namespace System.Windows.Forms {
 	}
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellCancelEventArgs.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellCancelEventArgs.cs
index 8f009af..864bdcf 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellCancelEventArgs.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellCancelEventArgs.cs
@@ -24,7 +24,6 @@
 //
 
 
-#if NET_2_0
 
 using System.ComponentModel;
 
@@ -52,4 +51,3 @@ namespace System.Windows.Forms {
 
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellCancelEventHandler.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellCancelEventHandler.cs
index f98ab54..c6c6313 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellCancelEventHandler.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellCancelEventHandler.cs
@@ -24,12 +24,9 @@
 //
 
 
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public delegate void DataGridViewCellCancelEventHandler (object sender, DataGridViewCellCancelEventArgs e);
 
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellCollection.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellCollection.cs
index 9a189b4..cbbc6fa 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellCollection.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellCollection.cs
@@ -23,8 +23,6 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-#if NET_2_0
-
 using System.Collections;
 using System.ComponentModel;
 
@@ -222,5 +220,3 @@ namespace System.Windows.Forms
 		}
 	}
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellContextMenuStripNeededEventArgs.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellContextMenuStripNeededEventArgs.cs
index 12bc750..391ede9 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellContextMenuStripNeededEventArgs.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellContextMenuStripNeededEventArgs.cs
@@ -24,8 +24,6 @@
 //
 
 
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public class DataGridViewCellContextMenuStripNeededEventArgs : DataGridViewCellEventArgs {
@@ -43,4 +41,3 @@ namespace System.Windows.Forms {
 
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellContextMenuStripNeededEventHandler.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellContextMenuStripNeededEventHandler.cs
index f5f1c54..50be6b5 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellContextMenuStripNeededEventHandler.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellContextMenuStripNeededEventHandler.cs
@@ -24,7 +24,6 @@
 //
 
 
-#if NET_2_0
 
 namespace System.Windows.Forms {
 
@@ -32,4 +31,3 @@ namespace System.Windows.Forms {
 
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellErrorTextNeededEventArgs.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellErrorTextNeededEventArgs.cs
index 47e641f..7334427 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellErrorTextNeededEventArgs.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellErrorTextNeededEventArgs.cs
@@ -24,8 +24,6 @@
 //
 
 
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public class DataGridViewCellErrorTextNeededEventArgs : DataGridViewCellEventArgs {
@@ -45,4 +43,3 @@ namespace System.Windows.Forms {
 
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellErrorTextNeededEventHandler.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellErrorTextNeededEventHandler.cs
index feea38e..d413eb0 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellErrorTextNeededEventHandler.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellErrorTextNeededEventHandler.cs
@@ -24,7 +24,6 @@
 //
 
 
-#if NET_2_0
 
 namespace System.Windows.Forms {
 
@@ -32,4 +31,3 @@ namespace System.Windows.Forms {
 
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellEventArgs.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellEventArgs.cs
index 489be1d..63e1d85 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellEventArgs.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellEventArgs.cs
@@ -24,8 +24,6 @@
 //
 
 
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public class DataGridViewCellEventArgs : EventArgs {
@@ -50,4 +48,3 @@ namespace System.Windows.Forms {
 
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellEventHandler.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellEventHandler.cs
index 1e73b3f..5a0280d 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellEventHandler.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellEventHandler.cs
@@ -24,7 +24,6 @@
 //
 
 
-#if NET_2_0
 
 namespace System.Windows.Forms {
 
@@ -32,4 +31,3 @@ namespace System.Windows.Forms {
 
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellFormattingEventArgs.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellFormattingEventArgs.cs
index e822d9d..34e43fd 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellFormattingEventArgs.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellFormattingEventArgs.cs
@@ -24,8 +24,6 @@
 //
 
 
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public class DataGridViewCellFormattingEventArgs : ConvertEventArgs {
@@ -66,4 +64,3 @@ namespace System.Windows.Forms {
 
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellFormattingEventHandler.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellFormattingEventHandler.cs
index c2f1980..1f8c8a2 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellFormattingEventHandler.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellFormattingEventHandler.cs
@@ -24,12 +24,8 @@
 //
 
 
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public delegate void DataGridViewCellFormattingEventHandler (object sender, DataGridViewCellFormattingEventArgs e);
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellMouseEventArgs.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellMouseEventArgs.cs
index 7f2fa85..8f018d9 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellMouseEventArgs.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellMouseEventArgs.cs
@@ -24,7 +24,6 @@
 //
 
 
-#if NET_2_0
 
 namespace System.Windows.Forms {
 
@@ -50,4 +49,3 @@ namespace System.Windows.Forms {
 
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellMouseEventHandler.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellMouseEventHandler.cs
index 1a04249..22eaa23 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellMouseEventHandler.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellMouseEventHandler.cs
@@ -24,12 +24,8 @@
 //
 
 
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public delegate void DataGridViewCellMouseEventHandler (object sender, DataGridViewCellMouseEventArgs e);
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellPaintingEventArgs.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellPaintingEventArgs.cs
index f6a6dbc..ec7fd58 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellPaintingEventArgs.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellPaintingEventArgs.cs
@@ -24,8 +24,6 @@
 //
 
 
-#if NET_2_0
-
 using System.ComponentModel;
 using System.Drawing;
 
@@ -145,5 +143,3 @@ namespace System.Windows.Forms {
 	}
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellPaintingEventHandler.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellPaintingEventHandler.cs
index a84e57b..dae8814 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellPaintingEventHandler.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellPaintingEventHandler.cs
@@ -24,7 +24,6 @@
 //
 
 
-#if NET_2_0
 
 namespace System.Windows.Forms {
 
@@ -32,4 +31,3 @@ namespace System.Windows.Forms {
 
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellParsingEventArgs.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellParsingEventArgs.cs
index 8006c43..ad751a7 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellParsingEventArgs.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellParsingEventArgs.cs
@@ -24,8 +24,6 @@
 //
 
 
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public class DataGridViewCellParsingEventArgs : ConvertEventArgs {
@@ -65,4 +63,3 @@ namespace System.Windows.Forms {
 
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellParsingEventHandler.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellParsingEventHandler.cs
index 6574462..fea8e78 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellParsingEventHandler.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellParsingEventHandler.cs
@@ -24,7 +24,6 @@
 //
 
 
-#if NET_2_0
 
 namespace System.Windows.Forms {
 
@@ -32,4 +31,3 @@ namespace System.Windows.Forms {
 
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellStateChangedEventArgs.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellStateChangedEventArgs.cs
index 19e0c26..935f667 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellStateChangedEventArgs.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellStateChangedEventArgs.cs
@@ -24,8 +24,6 @@
 //
 
 
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public class DataGridViewCellStateChangedEventArgs : EventArgs {
@@ -50,4 +48,3 @@ namespace System.Windows.Forms {
 
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellStyle.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellStyle.cs
index af126fb..ef0cf2b 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellStyle.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellStyle.cs
@@ -24,8 +24,6 @@
 //
 
 
-#if NET_2_0
-
 using System.Drawing;
 using System.ComponentModel;
 using System.Globalization;
@@ -388,4 +386,3 @@ namespace System.Windows.Forms {
 
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellStyleContentChangedEventArgs.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellStyleContentChangedEventArgs.cs
index 32a1b18..8700659 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellStyleContentChangedEventArgs.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellStyleContentChangedEventArgs.cs
@@ -24,8 +24,6 @@
 //
 
 
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public class DataGridViewCellStyleContentChangedEventArgs : EventArgs {
@@ -50,4 +48,3 @@ namespace System.Windows.Forms {
 
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellStyleContentChangedEventHandler.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellStyleContentChangedEventHandler.cs
index 939ba99..683d063 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellStyleContentChangedEventHandler.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellStyleContentChangedEventHandler.cs
@@ -24,7 +24,6 @@
 //
 
 
-#if NET_2_0
 
 namespace System.Windows.Forms {
 
@@ -32,4 +31,3 @@ namespace System.Windows.Forms {
 
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellStyleConverter.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellStyleConverter.cs
index 623a5b9..77ff5bd 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellStyleConverter.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellStyleConverter.cs
@@ -23,7 +23,6 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-#if NET_2_0
 
 using System.ComponentModel;
 using System.Globalization;
@@ -47,4 +46,3 @@ namespace System.Windows.Forms {
 
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellStyleScopes.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellStyleScopes.cs
index ca3c58a..7418e73 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellStyleScopes.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellStyleScopes.cs
@@ -23,8 +23,6 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	[FlagsAttribute()]
@@ -41,5 +39,3 @@ namespace System.Windows.Forms {
 	}
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellToolTipTextNeededEventArgs.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellToolTipTextNeededEventArgs.cs
index 5397a38..7c3a8ad 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellToolTipTextNeededEventArgs.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellToolTipTextNeededEventArgs.cs
@@ -24,8 +24,6 @@
 //
 
 
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public class DataGridViewCellToolTipTextNeededEventArgs : DataGridViewCellEventArgs {
@@ -44,5 +42,3 @@ namespace System.Windows.Forms {
 	}
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellToolTipTextNeededEventHandler.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellToolTipTextNeededEventHandler.cs
index a0f7334..dc83e22 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellToolTipTextNeededEventHandler.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellToolTipTextNeededEventHandler.cs
@@ -24,12 +24,8 @@
 //
 
 
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public delegate void DataGridViewCellToolTipTextNeededEventHandler (object sender, DataGridViewCellToolTipTextNeededEventArgs e);
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellValidatingEventArgs.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellValidatingEventArgs.cs
index 5159a0a..f0ca888 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellValidatingEventArgs.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellValidatingEventArgs.cs
@@ -24,8 +24,6 @@
 //
 
 
-#if NET_2_0
-
 using System.ComponentModel;
 
 namespace System.Windows.Forms {
@@ -58,5 +56,3 @@ namespace System.Windows.Forms {
 	}
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellValidatingEventHandler.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellValidatingEventHandler.cs
index 0c83d63..e3fb5c7 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellValidatingEventHandler.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellValidatingEventHandler.cs
@@ -23,12 +23,8 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public delegate void DataGridViewCellValidatingEventHandler (object sender, DataGridViewCellValidatingEventArgs e);
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellValueEventArgs.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellValueEventArgs.cs
index eeb39b8..2ae4c47 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellValueEventArgs.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellValueEventArgs.cs
@@ -24,8 +24,6 @@
 //
 
 
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public class DataGridViewCellValueEventArgs : EventArgs {
@@ -56,4 +54,3 @@ namespace System.Windows.Forms {
 
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellValueEventHandler.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellValueEventHandler.cs
index e48dc06..af1efc0 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellValueEventHandler.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCellValueEventHandler.cs
@@ -24,12 +24,9 @@
 //
 
 
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public delegate void DataGridViewCellValueEventHandler (object sender, DataGridViewCellValueEventArgs e);
 
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCheckBoxCell.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCheckBoxCell.cs
index e11ea2e..6ef788e 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCheckBoxCell.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCheckBoxCell.cs
@@ -24,8 +24,6 @@
 //
 
 
-#if NET_2_0
-
 using System;
 using System.ComponentModel;
 using System.Drawing;
@@ -467,4 +465,3 @@ namespace System.Windows.Forms {
 
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCheckBoxColumn.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCheckBoxColumn.cs
index 4ec7833..c59c308 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCheckBoxColumn.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewCheckBoxColumn.cs
@@ -24,7 +24,6 @@
 //
 
 
-#if NET_2_0
 using System.Drawing;
 using System.ComponentModel;
 
@@ -145,4 +144,3 @@ namespace System.Windows.Forms {
 
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewClipboardCopyMode.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewClipboardCopyMode.cs
index 9eef130..9b5ad59 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewClipboardCopyMode.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewClipboardCopyMode.cs
@@ -24,8 +24,6 @@
 //
 
 
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public enum DataGridViewClipboardCopyMode {
@@ -37,4 +35,3 @@ namespace System.Windows.Forms {
 
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewColumn.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewColumn.cs
index 4d34543..93801d1 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewColumn.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewColumn.cs
@@ -24,8 +24,6 @@
 //
 
 
-#if NET_2_0
-
 using System;
 using System.ComponentModel;
 
@@ -523,4 +521,3 @@ Example */
 	}
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewColumnCollection.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewColumnCollection.cs
index 29bc09d..74a7b27 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewColumnCollection.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewColumnCollection.cs
@@ -24,8 +24,6 @@
 //
 
 
-#if NET_2_0
-
 using System.ComponentModel;
 using System.Collections;
 using System.Collections.Generic;
@@ -285,4 +283,3 @@ namespace System.Windows.Forms
 	}
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewColumnDividerDoubleClickEventArgs.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewColumnDividerDoubleClickEventArgs.cs
index 811621b..819671d 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewColumnDividerDoubleClickEventArgs.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewColumnDividerDoubleClickEventArgs.cs
@@ -24,8 +24,6 @@
 //
 
 
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public class DataGridViewColumnDividerDoubleClickEventArgs : HandledMouseEventArgs {
@@ -44,4 +42,3 @@ namespace System.Windows.Forms {
 
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewColumnDividerDoubleClickEventHandler.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewColumnDividerDoubleClickEventHandler.cs
index 1bb1292..7cb948d 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewColumnDividerDoubleClickEventHandler.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewColumnDividerDoubleClickEventHandler.cs
@@ -24,7 +24,6 @@
 //
 
 
-#if NET_2_0
 
 namespace System.Windows.Forms {
 
@@ -32,4 +31,3 @@ namespace System.Windows.Forms {
 
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewColumnEventArgs.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewColumnEventArgs.cs
index d452db3..54b9422 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewColumnEventArgs.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewColumnEventArgs.cs
@@ -24,7 +24,6 @@
 //
 
 
-#if NET_2_0
 
 namespace System.Windows.Forms {
 
@@ -44,4 +43,3 @@ namespace System.Windows.Forms {
 
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewColumnEventHandler.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewColumnEventHandler.cs
index 31a00e3..8179353 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewColumnEventHandler.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewColumnEventHandler.cs
@@ -23,13 +23,9 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public delegate void DataGridViewColumnEventHandler (object sender, DataGridViewColumnEventArgs e);
 
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewColumnHeaderCell.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewColumnHeaderCell.cs
index 0b847ce..210fb48 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewColumnHeaderCell.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewColumnHeaderCell.cs
@@ -24,8 +24,6 @@
 //
 
 
-#if NET_2_0
-
 using System;
 using System.Drawing;
 using System.ComponentModel;
@@ -314,4 +312,3 @@ namespace System.Windows.Forms {
 
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewColumnHeadersHeightSizeMode.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewColumnHeadersHeightSizeMode.cs
index ef5a845..7c498bf 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewColumnHeadersHeightSizeMode.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewColumnHeadersHeightSizeMode.cs
@@ -23,9 +23,6 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public enum DataGridViewColumnHeadersHeightSizeMode {
@@ -36,4 +33,3 @@ namespace System.Windows.Forms {
 
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewColumnSortMode.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewColumnSortMode.cs
index ccf6f73..c0efb8f 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewColumnSortMode.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewColumnSortMode.cs
@@ -23,9 +23,6 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public enum DataGridViewColumnSortMode {
@@ -35,5 +32,3 @@ namespace System.Windows.Forms {
 	}
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewColumnStateChangedEventArgs.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewColumnStateChangedEventArgs.cs
index 215741f..61407db 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewColumnStateChangedEventArgs.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewColumnStateChangedEventArgs.cs
@@ -23,9 +23,6 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public class DataGridViewColumnStateChangedEventArgs : EventArgs  {
@@ -49,5 +46,3 @@ namespace System.Windows.Forms {
 	}
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewColumnStateChangedEventHandler.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewColumnStateChangedEventHandler.cs
index ca041f8..383982e 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewColumnStateChangedEventHandler.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewColumnStateChangedEventHandler.cs
@@ -23,13 +23,9 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public delegate void DataGridViewColumnStateChangedEventHandler (object sender, DataGridViewColumnStateChangedEventArgs e);
 
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewComboBoxCell.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewComboBoxCell.cs
index 7374b39..09e250e 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewComboBoxCell.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewComboBoxCell.cs
@@ -25,8 +25,6 @@
 //
 
 
-#if NET_2_0
-
 using System.Collections;
 using System.ComponentModel;
 using System.Drawing;
@@ -569,4 +567,3 @@ namespace System.Windows.Forms {
 
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewComboBoxColumn.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewComboBoxColumn.cs
index 1fb5608..90af2ec 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewComboBoxColumn.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewComboBoxColumn.cs
@@ -23,9 +23,6 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-
-#if NET_2_0
-
 using System.Collections;
 using System.ComponentModel;
 using System.Drawing.Design;
@@ -244,5 +241,3 @@ namespace System.Windows.Forms {
 	}
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewComboBoxDisplayStyle.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewComboBoxDisplayStyle.cs
index 6f19fb1..d36ee85 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewComboBoxDisplayStyle.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewComboBoxDisplayStyle.cs
@@ -23,9 +23,6 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public enum DataGridViewComboBoxDisplayStyle {
@@ -36,4 +33,3 @@ namespace System.Windows.Forms {
 
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewComboBoxEditingControl.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewComboBoxEditingControl.cs
index bc4197d..8a661d2 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewComboBoxEditingControl.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewComboBoxEditingControl.cs
@@ -23,9 +23,6 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-
-#if NET_2_0
-
 using System.Runtime.InteropServices;
 
 namespace System.Windows.Forms {
@@ -98,4 +95,3 @@ namespace System.Windows.Forms {
 
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewContentAlignment.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewContentAlignment.cs
index cb07722..261358b 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewContentAlignment.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewContentAlignment.cs
@@ -23,9 +23,6 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public enum DataGridViewContentAlignment {
@@ -42,4 +39,3 @@ namespace System.Windows.Forms {
 	}
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewDataErrorContexts.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewDataErrorContexts.cs
index df316f0..5d75549 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewDataErrorContexts.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewDataErrorContexts.cs
@@ -23,9 +23,6 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	[FlagsAttribute()]
@@ -45,4 +42,3 @@ namespace System.Windows.Forms {
 
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewDataErrorEventArgs.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewDataErrorEventArgs.cs
index b1c47b6..1862b39 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewDataErrorEventArgs.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewDataErrorEventArgs.cs
@@ -23,9 +23,6 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-
-#if NET_2_0
-
 using System;
 
 namespace System.Windows.Forms {
@@ -59,4 +56,3 @@ namespace System.Windows.Forms {
 
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewDataErrorEventHandler.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewDataErrorEventHandler.cs
index edf2e48..922d561 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewDataErrorEventHandler.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewDataErrorEventHandler.cs
@@ -23,13 +23,8 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public delegate void DataGridViewDataErrorEventHandler (object sender, DataGridViewDataErrorEventArgs e);
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewEditMode.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewEditMode.cs
index 0fb63ea..55d373b 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewEditMode.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewEditMode.cs
@@ -23,9 +23,6 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public enum DataGridViewEditMode {
@@ -37,5 +34,3 @@ namespace System.Windows.Forms {
 	}
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewEditingControlShowingEventArgs.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewEditingControlShowingEventArgs.cs
index bc0563c..de34d0f 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewEditingControlShowingEventArgs.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewEditingControlShowingEventArgs.cs
@@ -23,9 +23,6 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public class DataGridViewEditingControlShowingEventArgs : EventArgs {
@@ -51,4 +48,3 @@ namespace System.Windows.Forms {
 
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewEditingControlShowingEventHandler.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewEditingControlShowingEventHandler.cs
index 78864d6..33e35bf 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewEditingControlShowingEventHandler.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewEditingControlShowingEventHandler.cs
@@ -23,13 +23,8 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public delegate void DataGridViewEditingControlShowingEventHandler (object sender, DataGridViewEditingControlShowingEventArgs e);
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewElement.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewElement.cs
index 0faca1e..280e5a6 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewElement.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewElement.cs
@@ -22,10 +22,6 @@
 // Author:
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
-
-
-#if NET_2_0
-
 using System.Drawing;
 using System.ComponentModel;
 
@@ -107,4 +103,3 @@ namespace System.Windows.Forms {
 
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewElementStates.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewElementStates.cs
index f00d4e4..b5f9764 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewElementStates.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewElementStates.cs
@@ -24,8 +24,6 @@
 //
 
 
-#if NET_2_0
-
 using System;
 using System.Runtime.InteropServices;
 
@@ -46,4 +44,3 @@ namespace System.Windows.Forms {
 
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewHeaderBorderStyle.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewHeaderBorderStyle.cs
index bd3aa5a..a1913af 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewHeaderBorderStyle.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewHeaderBorderStyle.cs
@@ -23,9 +23,6 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public enum DataGridViewHeaderBorderStyle {
@@ -38,4 +35,3 @@ namespace System.Windows.Forms {
 
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewHeaderCell.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewHeaderCell.cs
index b19bfcc..f092684 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewHeaderCell.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewHeaderCell.cs
@@ -23,9 +23,6 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-
-#if NET_2_0
-
 using System.ComponentModel;
 using System.Drawing;
 
@@ -227,4 +224,3 @@ namespace System.Windows.Forms {
 
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewHitTestType.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewHitTestType.cs
index 28d05f6..1f5f359 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewHitTestType.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewHitTestType.cs
@@ -23,9 +23,6 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public enum DataGridViewHitTestType {
@@ -40,4 +37,3 @@ namespace System.Windows.Forms {
 
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewImageCell.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewImageCell.cs
index bc3bd68..9e7daa6 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewImageCell.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewImageCell.cs
@@ -23,9 +23,6 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-
-#if NET_2_0
-
 using System.Drawing;
 using System.ComponentModel;
 
@@ -264,4 +261,3 @@ namespace System.Windows.Forms {
 
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewImageCellLayout.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewImageCellLayout.cs
index b8d6bbd..9f438a8 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewImageCellLayout.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewImageCellLayout.cs
@@ -23,9 +23,6 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public enum DataGridViewImageCellLayout {
@@ -36,5 +33,3 @@ namespace System.Windows.Forms {
 	}
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewImageColumn.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewImageColumn.cs
index 1528a99..e1378e5 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewImageColumn.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewImageColumn.cs
@@ -23,9 +23,6 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-
-#if NET_2_0
-
 using System.ComponentModel;
 using System.Drawing;
 
@@ -114,5 +111,3 @@ namespace System.Windows.Forms {
 	}
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewLinkCell.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewLinkCell.cs
index 3d9c01d..5ad5379 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewLinkCell.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewLinkCell.cs
@@ -24,8 +24,6 @@
 //
 //
 
-#if NET_2_0
-
 using System;
 using System.Collections.Generic;
 using System.Text;
@@ -334,5 +332,3 @@ namespace System.Windows.Forms
 		
 	}
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewLinkColumn.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewLinkColumn.cs
index 143ee63..d5ef3cd 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewLinkColumn.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewLinkColumn.cs
@@ -24,8 +24,6 @@
 //
 //
 
-#if NET_2_0
-
 using System;
 using System.Collections.Generic;
 using System.ComponentModel;
@@ -249,5 +247,3 @@ namespace System.Windows.Forms
 		#endregion
 	}
 }
-
-#endif
\ No newline at end of file
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewPaintParts.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewPaintParts.cs
index f3fb169..09f2f60 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewPaintParts.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewPaintParts.cs
@@ -24,8 +24,6 @@
 //
 
 
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	[FlagsAttribute()]
@@ -42,5 +40,3 @@ namespace System.Windows.Forms {
 	}
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRow.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRow.cs
index 24ff521..df638ee 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRow.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRow.cs
@@ -23,8 +23,6 @@
 //
 
 
-#if NET_2_0
-
 using System.ComponentModel;
 using System.Drawing;
 using System.Runtime.InteropServices;
@@ -577,20 +575,14 @@ namespace System.Windows.Forms
 					style = cell.InheritedStyle;
 
 				object value;
-				object formattedValue;
-				string errorText;
 				DataGridViewElementStates cellState;
 				
 				if (cell.RowIndex == -1) {
 					// TODO: Look up value if databound.
 					value = null;
-					formattedValue = null;
-					errorText = null;
 					cellState = cell.State;
 				} else {
 					value = cell.Value;
-					formattedValue = cell.FormattedValue;
-					errorText = cell.ErrorText;
 					cellState = cell.InheritedState;
 				}
 
@@ -771,4 +763,3 @@ namespace System.Windows.Forms
 	}
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowCancelEventArgs.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowCancelEventArgs.cs
index 5f8a3e9..60f697e 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowCancelEventArgs.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowCancelEventArgs.cs
@@ -24,8 +24,6 @@
 //
 
 
-#if NET_2_0
-
 using System.ComponentModel;
 
 namespace System.Windows.Forms {
@@ -45,5 +43,3 @@ namespace System.Windows.Forms {
 	}
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowCancelEventHandler.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowCancelEventHandler.cs
index da05cc6..2f4fd9f 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowCancelEventHandler.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowCancelEventHandler.cs
@@ -23,13 +23,8 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public delegate void DataGridViewRowCancelEventHandler (object sender, DataGridViewRowCancelEventArgs e);
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowCollection.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowCollection.cs
index 9af26a9..87580ef 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowCollection.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowCollection.cs
@@ -24,8 +24,6 @@
 //
 
 
-#if NET_2_0
-
 using System.ComponentModel;
 using System.Collections;
 using System.ComponentModel.Design.Serialization;
@@ -591,5 +589,3 @@ namespace System.Windows.Forms
 		}
 	}
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowContextMenuStripNeededEventArgs.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowContextMenuStripNeededEventArgs.cs
index a917c5a..778afb2 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowContextMenuStripNeededEventArgs.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowContextMenuStripNeededEventArgs.cs
@@ -24,8 +24,6 @@
 //
 
 
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public class DataGridViewRowContextMenuStripNeededEventArgs : EventArgs {
@@ -49,5 +47,3 @@ namespace System.Windows.Forms {
 	}
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowContextMenuStripNeededEventHandler.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowContextMenuStripNeededEventHandler.cs
index 67fae9c..72a24c2 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowContextMenuStripNeededEventHandler.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowContextMenuStripNeededEventHandler.cs
@@ -24,12 +24,8 @@
 //
 
 
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public delegate void DataGridViewRowContextMenuStripNeededEventHandler (object sender, DataGridViewRowContextMenuStripNeededEventArgs e);
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowDividerDoubleClickEventArgs.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowDividerDoubleClickEventArgs.cs
index 72ef21a..bee69a6 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowDividerDoubleClickEventArgs.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowDividerDoubleClickEventArgs.cs
@@ -24,8 +24,6 @@
 //
 
 
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public class DataGridViewRowDividerDoubleClickEventArgs : HandledMouseEventArgs {
@@ -43,5 +41,3 @@ namespace System.Windows.Forms {
 	}
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowDividerDoubleClickEventHandler.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowDividerDoubleClickEventHandler.cs
index 7a4605e..5641340 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowDividerDoubleClickEventHandler.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowDividerDoubleClickEventHandler.cs
@@ -23,13 +23,8 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public delegate void DataGridViewRowDividerDoubleClickEventHandler (object sender, DataGridViewRowDividerDoubleClickEventArgs e);
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowErrorTextNeededEventArgs.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowErrorTextNeededEventArgs.cs
index 2a5734a..639d4e0 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowErrorTextNeededEventArgs.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowErrorTextNeededEventArgs.cs
@@ -23,9 +23,6 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public class DataGridViewRowErrorTextNeededEventArgs : EventArgs {
@@ -50,5 +47,3 @@ namespace System.Windows.Forms {
 	}
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowErrorTextNeededEventHandler.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowErrorTextNeededEventHandler.cs
index 052a4cb..ff48ac1 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowErrorTextNeededEventHandler.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowErrorTextNeededEventHandler.cs
@@ -23,13 +23,8 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public delegate void DataGridViewRowErrorTextNeededEventHandler (object sender, DataGridViewRowErrorTextNeededEventArgs e);
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowEventArgs.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowEventArgs.cs
index 18b2844..145077d 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowEventArgs.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowEventArgs.cs
@@ -24,8 +24,6 @@
 //
 
 
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public class DataGridViewRowEventArgs : EventArgs {
@@ -43,5 +41,3 @@ namespace System.Windows.Forms {
 	}
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowEventHandler.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowEventHandler.cs
index a67cd6a..e7fb167 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowEventHandler.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowEventHandler.cs
@@ -23,13 +23,8 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public delegate void DataGridViewRowEventHandler (object sender, DataGridViewRowEventArgs e);
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowHeaderCell.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowHeaderCell.cs
index 64e67c3..7e559d1 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowHeaderCell.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowHeaderCell.cs
@@ -23,9 +23,6 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-
-#if NET_2_0
-
 using System.Drawing;
 
 namespace System.Windows.Forms {
@@ -343,5 +340,3 @@ namespace System.Windows.Forms {
 	}
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowHeadersWidthSizeMode.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowHeadersWidthSizeMode.cs
index 6bf0613..1abbc29 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowHeadersWidthSizeMode.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowHeadersWidthSizeMode.cs
@@ -23,9 +23,6 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public enum DataGridViewRowHeadersWidthSizeMode {
@@ -38,4 +35,3 @@ namespace System.Windows.Forms {
 
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowHeightInfoNeededEventArgs.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowHeightInfoNeededEventArgs.cs
index 0ed5203..0bd0384 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowHeightInfoNeededEventArgs.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowHeightInfoNeededEventArgs.cs
@@ -23,9 +23,6 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public class DataGridViewRowHeightInfoNeededEventArgs : EventArgs {
@@ -57,5 +54,3 @@ namespace System.Windows.Forms {
 	}
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowHeightInfoNeededEventHandler.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowHeightInfoNeededEventHandler.cs
index c60d955..5430f92 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowHeightInfoNeededEventHandler.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowHeightInfoNeededEventHandler.cs
@@ -23,13 +23,9 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public delegate void DataGridViewRowHeightInfoNeededEventHandler (object sender, DataGridViewRowHeightInfoNeededEventArgs e);
 
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowHeightInfoPushedEventArgs.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowHeightInfoPushedEventArgs.cs
index cd97dff..13a6ac7 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowHeightInfoPushedEventArgs.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowHeightInfoPushedEventArgs.cs
@@ -23,9 +23,6 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-
-#if NET_2_0
-
 using System.ComponentModel;
 
 namespace System.Windows.Forms {
@@ -57,5 +54,3 @@ namespace System.Windows.Forms {
 	}
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowHeightInfoPushedEventHandler.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowHeightInfoPushedEventHandler.cs
index e0cb9ac..48f2966 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowHeightInfoPushedEventHandler.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowHeightInfoPushedEventHandler.cs
@@ -22,14 +22,8 @@
 // Author:
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
-
-
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public delegate void DataGridViewRowHeightInfoPushedEventHandler (object sender, DataGridViewRowHeightInfoPushedEventArgs e);
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowPostPaintEventArgs.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowPostPaintEventArgs.cs
index 8dc8853..069db19 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowPostPaintEventArgs.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowPostPaintEventArgs.cs
@@ -23,9 +23,6 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-
-#if NET_2_0
-
 using System.ComponentModel;
 using System.Drawing;
 
@@ -146,5 +143,3 @@ namespace System.Windows.Forms {
 		}
 	}
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowPostPaintEventHandler.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowPostPaintEventHandler.cs
index 8b2d61d..f56f379 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowPostPaintEventHandler.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowPostPaintEventHandler.cs
@@ -23,13 +23,8 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public delegate void DataGridViewRowPostPaintEventHandler (object sender, DataGridViewRowPostPaintEventArgs e);
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowPrePaintEventArgs.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowPrePaintEventArgs.cs
index 6abb7ec..ab35f81 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowPrePaintEventArgs.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowPrePaintEventArgs.cs
@@ -23,9 +23,6 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-
-#if NET_2_0
-
 using System.ComponentModel;
 using System.Drawing;
 
@@ -151,5 +148,3 @@ namespace System.Windows.Forms {
 		}
 	}
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowPrePaintEventHandler.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowPrePaintEventHandler.cs
index 5b70ad7..986d5be 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowPrePaintEventHandler.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowPrePaintEventHandler.cs
@@ -23,13 +23,8 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public delegate void DataGridViewRowPrePaintEventHandler (object sender, DataGridViewRowPrePaintEventArgs e);
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowStateChangedEventArgs.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowStateChangedEventArgs.cs
index 0c10761..07a242a 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowStateChangedEventArgs.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowStateChangedEventArgs.cs
@@ -23,9 +23,6 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public class DataGridViewRowStateChangedEventArgs : EventArgs {
@@ -49,5 +46,3 @@ namespace System.Windows.Forms {
 	}
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowStateChangedEventHandler.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowStateChangedEventHandler.cs
index da4b1e4..be05c17 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowStateChangedEventHandler.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowStateChangedEventHandler.cs
@@ -23,13 +23,8 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public delegate void DataGridViewRowStateChangedEventHandler (object sender, DataGridViewRowStateChangedEventArgs e);
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowsAddedEventArgs.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowsAddedEventArgs.cs
index bdc620b..2d9b4c0 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowsAddedEventArgs.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowsAddedEventArgs.cs
@@ -23,9 +23,6 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public class DataGridViewRowsAddedEventArgs : EventArgs {
@@ -49,5 +46,3 @@ namespace System.Windows.Forms {
 	}
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowsAddedEventHandler.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowsAddedEventHandler.cs
index 035ec12..0d6e96d 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowsAddedEventHandler.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowsAddedEventHandler.cs
@@ -24,12 +24,8 @@
 //
 
 
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public delegate void DataGridViewRowsAddedEventHandler (object sender, DataGridViewRowsAddedEventArgs e);
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowsRemovedEventArgs.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowsRemovedEventArgs.cs
index d0383c0..1cf86c3 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowsRemovedEventArgs.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowsRemovedEventArgs.cs
@@ -23,9 +23,6 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public class DataGridViewRowsRemovedEventArgs : EventArgs {
@@ -49,5 +46,3 @@ namespace System.Windows.Forms {
 	}
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowsRemovedEventHandler.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowsRemovedEventHandler.cs
index 8368976..e792435 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowsRemovedEventHandler.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewRowsRemovedEventHandler.cs
@@ -23,13 +23,8 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public delegate void DataGridViewRowsRemovedEventHandler (object sender, DataGridViewRowsRemovedEventArgs e);
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewSelectedCellCollection.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewSelectedCellCollection.cs
index e74a917..c3aeaad 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewSelectedCellCollection.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewSelectedCellCollection.cs
@@ -23,8 +23,6 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-#if NET_2_0
-
 using System;
 using System.Collections;
 using System.ComponentModel;
@@ -137,5 +135,3 @@ namespace System.Windows.Forms
 		}
 	}
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewSelectedColumnCollection.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewSelectedColumnCollection.cs
index 51f8567..35b78e2 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewSelectedColumnCollection.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewSelectedColumnCollection.cs
@@ -23,8 +23,6 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-#if NET_2_0
-
 using System.Collections;
 using System.ComponentModel;
 
@@ -137,5 +135,3 @@ namespace System.Windows.Forms
 		}
 	}
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewSelectedRowCollection.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewSelectedRowCollection.cs
index e7d3f0c..ef4b831 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewSelectedRowCollection.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewSelectedRowCollection.cs
@@ -23,8 +23,6 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-#if NET_2_0
-
 using System.Collections;
 using System.ComponentModel;
 
@@ -144,5 +142,3 @@ namespace System.Windows.Forms
 		}
 	}
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewSelectionMode.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewSelectionMode.cs
index 5016dea..89a5f88 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewSelectionMode.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewSelectionMode.cs
@@ -24,8 +24,6 @@
 //
 
 
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public enum DataGridViewSelectionMode {
@@ -37,5 +35,3 @@ namespace System.Windows.Forms {
 	}
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewSortCompareEventArgs.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewSortCompareEventArgs.cs
index 9b91557..43776be 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewSortCompareEventArgs.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewSortCompareEventArgs.cs
@@ -23,9 +23,6 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-
-#if NET_2_0
-
 using System.ComponentModel;
 
 namespace System.Windows.Forms {
@@ -76,4 +73,3 @@ namespace System.Windows.Forms {
 
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewTextBoxCell.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewTextBoxCell.cs
index 0fb543d..ef0b802 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewTextBoxCell.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewTextBoxCell.cs
@@ -24,8 +24,6 @@
 //
 
 
-#if NET_2_0
-
 using System;
 using System.ComponentModel;
 using System.Drawing;
@@ -230,5 +228,3 @@ namespace System.Windows.Forms {
 	}
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewTextBoxColumn.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewTextBoxColumn.cs
index 84936a2..ea89674 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewTextBoxColumn.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewTextBoxColumn.cs
@@ -23,9 +23,6 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-
-#if NET_2_0
-
 using System.Drawing;
 using System.ComponentModel;
 
@@ -78,4 +75,3 @@ namespace System.Windows.Forms {
 
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewTextBoxEditingControl.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewTextBoxEditingControl.cs
index 73d7c04..8e934dd 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewTextBoxEditingControl.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewTextBoxEditingControl.cs
@@ -22,10 +22,6 @@
 // Author:
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
-
-
-#if NET_2_0
-
 using System.Runtime.InteropServices;
 
 namespace System.Windows.Forms {
@@ -128,4 +124,3 @@ namespace System.Windows.Forms {
 
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewTopLeftHeaderCell.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewTopLeftHeaderCell.cs
index 1d4fcd1..eb6022a 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewTopLeftHeaderCell.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewTopLeftHeaderCell.cs
@@ -23,8 +23,6 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-#if NET_2_0
-
 using System.Drawing;
 
 namespace System.Windows.Forms
@@ -136,4 +134,3 @@ namespace System.Windows.Forms
 	}
 }
 
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewTriState.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewTriState.cs
index 1513ab0..54e211c 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewTriState.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewTriState.cs
@@ -23,9 +23,6 @@
 //	Pedro Martínez Juliá <pedromj at gmail.com>
 //
 
-
-#if NET_2_0
-
 namespace System.Windows.Forms {
 
 	public enum DataGridViewTriState {
@@ -35,5 +32,3 @@ namespace System.Windows.Forms {
 	}
 
 }
-
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataObject.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataObject.cs
index 90dc248..6ba54c7 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataObject.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataObject.cs
@@ -36,10 +36,7 @@ using System.Runtime.InteropServices;
 
 namespace System.Windows.Forms {
 	[ClassInterface(ClassInterfaceType.None)]
-	public class DataObject : IDataObject
-#if NET_2_0
-	, System.Runtime.InteropServices.ComTypes.IDataObject
-#endif
+	public class DataObject : IDataObject, System.Runtime.InteropServices.ComTypes.IDataObject
 	 {
 		#region DataObject.Entry Class
 		private class Entry {
@@ -194,7 +191,6 @@ namespace System.Windows.Forms {
 		#endregion	// Public Constructors
 
 		#region Public Instance Methods
-#if NET_2_0
 		public virtual bool ContainsAudio ()
 		{
 			return GetDataPresent (DataFormats.WaveAudio, true);
@@ -227,7 +223,6 @@ namespace System.Windows.Forms {
 		{
 			return (Stream)GetData (DataFormats.WaveAudio, true);
 		}
-#endif
 
 		public virtual object GetData(string format) {
 			return GetData(format, true);
@@ -265,12 +260,10 @@ namespace System.Windows.Forms {
 			return GetDataPresent(format.FullName, true);
 		}
 
-#if NET_2_0
 		public virtual StringCollection GetFileDropList ()
 		{
 			return (StringCollection)GetData (DataFormats.FileDrop, true);
 		}
-#endif
 		public virtual string[] GetFormats() {
 			return GetFormats(true);
 		}
@@ -279,7 +272,6 @@ namespace System.Windows.Forms {
 			return Entry.Entries(entries, autoConvert);
 		}
 
-#if NET_2_0
 		public virtual Image GetImage ()
 		{
 			return (Image)GetData (DataFormats.Bitmap, true);
@@ -315,7 +307,6 @@ namespace System.Windows.Forms {
 
 			SetData (DataFormats.WaveAudio, audioStream);
 		}
-#endif
 
 		public virtual void SetData(object data) {
 			SetData(data.GetType(), data); 
@@ -357,7 +348,6 @@ namespace System.Windows.Forms {
 			SetData(EnsureFormat(format), true, data);
 		}
 		
-#if NET_2_0
 		[MonoInternalNote ("Needs additional checks for valid paths, see MSDN")]
 		public virtual void SetFileDropList (StringCollection filePaths)
 		{
@@ -408,7 +398,6 @@ namespace System.Windows.Forms {
 					break;
 			}
 		}
-#endif
 		#endregion	// Public Instance Methods
 
 		#region Private Methods
@@ -428,7 +417,6 @@ namespace System.Windows.Forms {
 			return EnsureFormat(type.FullName);
 		}
 
-#if NET_2_0
 		private string TextFormatToDataFormat (TextDataFormat format)
 		{
 			switch (format) {
@@ -445,10 +433,8 @@ namespace System.Windows.Forms {
 					return DataFormats.CommaSeparatedValue;
 			}
 		}
-#endif
 		#endregion	// Private Methods
 
-#if NET_2_0
 		#region IDataObject Members
 		int System.Runtime.InteropServices.ComTypes.IDataObject.DAdvise (ref System.Runtime.InteropServices.ComTypes.FORMATETC pFormatetc, System.Runtime.InteropServices.ComTypes.ADVF advf, System.Runtime.InteropServices.ComTypes.IAdviseSink adviseSink, out int connection)
 		{
@@ -495,6 +481,5 @@ namespace System.Windows.Forms {
 			throw new NotImplementedException ();
 		}
 		#endregion
-#endif
 	 }
 }
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataSourceUpdateMode.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataSourceUpdateMode.cs
index 7bdbfa1..071f3d8 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataSourceUpdateMode.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataSourceUpdateMode.cs
@@ -27,7 +27,6 @@
 //
 
 
-#if NET_2_0
 namespace System.Windows.Forms
 {
 	public enum DataSourceUpdateMode
@@ -37,4 +36,3 @@ namespace System.Windows.Forms
 		Never = 2
 	}
 }
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Form.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Form.cs
index 8f203b8..2ef8c7f 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Form.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Form.cs
@@ -103,6 +103,10 @@ namespace System.Windows.Forms {
 		private Rectangle		restore_bounds;
 		private bool			autoscale_base_size_set;
 #endif
+
+		internal ArrayList disabled_by_showdialog = new ArrayList();
+		internal static ArrayList modal_dialogs = new ArrayList();
+		
 		#endregion	// Local Variables
 
 		#region Private & Internal Methods
@@ -708,7 +712,8 @@ namespace System.Windows.Forms {
 							typeof (DialogResult));
 
 				dialog_result = value;
-				closing = (dialog_result != DialogResult.None && is_modal);
+				if (dialog_result != DialogResult.None && is_modal)
+					RaiseCloseEvents (false, false); // .Net doesn't send WM_CLOSE here.
 			}
 		}
 
@@ -1396,7 +1401,7 @@ namespace System.Windows.Forms {
 				if (Text != null)
 					cp.Caption = Text.Replace (Environment.NewLine, string.Empty);
 				
-				cp.ClassName = XplatUI.DefaultClassName;
+				cp.ClassName = XplatUI.GetDefaultClassName (GetType ());
 				cp.ClassStyle = 0;
 				cp.Style = 0;
 				cp.ExStyle = 0;
@@ -1787,6 +1792,16 @@ namespace System.Windows.Forms {
 				XplatUI.UngrabWindow(capture_window);
 			}
 
+			foreach (Form form in Application.OpenForms)
+			{
+				if (form.Enabled == true)
+				{
+					disabled_by_showdialog.Add(form);
+					form.Enabled = false;
+				}
+			}
+			modal_dialogs.Add(this);
+
 #if not
 			// Commented out; we instead let the Visible=true inside the runloop create the control
 			// otherwise setting DialogResult inside any of the events that are triggered by the
@@ -2660,6 +2675,9 @@ namespace System.Windows.Forms {
 
 		private void WmClose (ref Message m)
 		{
+			if (this.Enabled == false)
+				return; // prevent closing a disabled form.
+
 			Form act = Form.ActiveForm;
 			// Don't close this form if there's another modal form visible.
 			if (act != null && act != this && act.Modal == true) {
@@ -2744,6 +2762,12 @@ namespace System.Windows.Forms {
 #endif	
 		private void WmActivate (ref Message m)
 		{
+			if (!this.Enabled && modal_dialogs.Count > 0)
+			{
+				(modal_dialogs[modal_dialogs.Count -1] as Form).Activate ();
+				return; // prevent Activating of disabled form.
+			}
+
 			if (m.WParam != (IntPtr)WindowActiveFlags.WA_INACTIVE) {
 				if (is_loaded) {
 					SelectActiveControl ();
@@ -2854,11 +2878,8 @@ namespace System.Windows.Forms {
 		private void WmNcPaint (ref Message m)
 		{
 			if (ActiveMenu != null) {
-				PaintEventArgs pe;
-				Point pnt;
-
-				pe = XplatUI.PaintEventStart (ref m, Handle, false);
-				pnt = XplatUI.GetMenuOrigin (window.Handle);
+				PaintEventArgs pe = XplatUI.PaintEventStart (ref m, Handle, false);
+				Point pnt = XplatUI.GetMenuOrigin (window.Handle);
 
 				// The entire menu has to be in the clip rectangle because the 
 				// control buttons are right-aligned and otherwise they would
@@ -2870,9 +2891,8 @@ namespace System.Windows.Forms {
 
 				ActiveMenu.Draw (pe, new Rectangle (pnt.X, pnt.Y, ClientSize.Width, 0));
 
-				if (ActiveMaximizedMdiChild != null) {
+				if (ActiveMaximizedMdiChild != null)
 					ActiveMaximizedMdiChild.DrawMaximizedButtons (ActiveMenu, pe);
-				}
 
 				XplatUI.PaintEventEnd (ref m, Handle, false);
 			}
@@ -3241,6 +3261,14 @@ namespace System.Windows.Forms {
 			FormClosedEventHandler eh = (FormClosedEventHandler)(Events[FormClosedEvent]);
 			if (eh != null)
 				eh (this, e);
+
+			foreach (Form form in disabled_by_showdialog)
+			{
+				form.Enabled = true;
+			}
+			disabled_by_showdialog.Clear();
+			if (modal_dialogs.Contains(this))
+				modal_dialogs.Remove(this);
 		}
 		
 		// Consider calling FireClosingEvents instead of calling this directly.
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Help.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Help.cs
index c2b12ce..a7d355b 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Help.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Help.cs
@@ -50,15 +50,9 @@ namespace System.Windows.Forms
 			ShowHelp(parent, url, navigator, null);
 		}
 
-[MonoTODO ("Stub, does nothing")]
-#if NET_2_0
+		[MonoTODO ("Stub, does nothing")]
 		public static void ShowHelp (Control parent, string url, HelpNavigator command, object parameter)
 		{
-			object param = parameter;
-#else
-		public static void ShowHelp (Control parent, string url, HelpNavigator command, object param)
-		{
-#endif
 		}
 
 		public static void ShowHelp (Control parent, string url, string keyword)
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ImageList.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ImageList.cs
index 544595d..e9d7a64 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ImageList.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ImageList.cs
@@ -567,26 +567,23 @@ namespace System.Windows.Forms
 			{
 				int imageWidth;
 				int imageHeight;
-				Bitmap bitmap;
-				Graphics graphics;
 				ImageAttributes imageAttributes;
 
 				if (transparentColor.A == 0)
 					imageAttributes = null;
 				else {
 					imageAttributes = new ImageAttributes();
-					imageAttributes.SetColorKey(transparentColor, transparentColor);
+					imageAttributes.SetColorKey (transparentColor, transparentColor);
 				}
 
-				bitmap = new Bitmap(imageWidth = this.imageSize.Width, imageHeight = this.imageSize.Height, PixelFormat.Format32bppArgb);
-				graphics = Graphics.FromImage(bitmap);
-				graphics.DrawImage(value, new Rectangle(0, 0, imageWidth, imageHeight), 0, 0, value.Width, value.Height, GraphicsUnit.Pixel, imageAttributes);
-				graphics.Dispose();
+				var bitmap = new Bitmap (imageWidth = this.imageSize.Width, imageHeight = this.imageSize.Height, PixelFormat.Format32bppArgb);
+				using (var graphics = Graphics.FromImage (bitmap))
+					graphics.DrawImage (value, new Rectangle(0, 0, imageWidth, imageHeight), 0, 0, value.Width, value.Height, GraphicsUnit.Pixel, imageAttributes);
 
 				if (imageAttributes != null)
-					imageAttributes.Dispose();
+					imageAttributes.Dispose ();
 
-				ReduceColorDepth(bitmap);
+				ReduceColorDepth (bitmap);
 				return bitmap;
 			}
 
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/LinkLabel.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/LinkLabel.cs
index efd1cbe..84ce040 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/LinkLabel.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/LinkLabel.cs
@@ -336,6 +336,10 @@ namespace System.Windows.Forms
 		protected override void OnGotFocus (EventArgs e)
 		{
 			base.OnGotFocus (e);
+			
+			// And yes it can actually be null..... arghh..
+			if (sorted_links == null)
+				return;
 
 			// Set focus to the first enabled link piece
 			if (focused_index == -1) {
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ListBox.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ListBox.cs
index 4aa74f7..eb33bd0 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ListBox.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ListBox.cs
@@ -1386,8 +1386,14 @@ namespace System.Windows.Forms
 				if (hbar_offset < 0)
 					hbar_offset = 0;
 
-				if (IsHandleCreated)
+				if (IsHandleCreated) {
 					XplatUI.ScrollWindow (Handle, items_area, old_offset - hbar_offset, 0, false);
+
+					// Invalidate the previous selection border, to keep it properly updated.
+					Rectangle selection_border_area = new Rectangle (items_area.Width - (hbar_offset - old_offset) - 3, 0, 
+							3, items_area.Height);
+					Invalidate (selection_border_area);
+				}
 			}
 		}
 
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ListView.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ListView.cs
index 52bd32b..c1b7d79 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ListView.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ListView.cs
@@ -37,20 +37,16 @@ using System.ComponentModel.Design;
 using System.Drawing;
 using System.Runtime.InteropServices;
 using System.Globalization;
-#if NET_2_0
 using System.Collections.Generic;
-#endif
 
 namespace System.Windows.Forms
 {
 	[DefaultEvent ("SelectedIndexChanged")]
 	[DefaultProperty ("Items")]
 	[Designer ("System.Windows.Forms.Design.ListViewDesigner, " + Consts.AssemblySystem_Design, "System.ComponentModel.Design.IDesigner")]
-#if NET_2_0
 	[ClassInterface (ClassInterfaceType.AutoDispatch)]
 	[ComVisible (true)]
 	[Docking (DockingBehavior.Ask)]
-#endif
 	public class ListView : Control
 	{
 		private ItemActivation activation = ItemActivation.Standard;
@@ -69,11 +65,9 @@ namespace System.Windows.Forms
 		private bool hover_selection;
 		private IComparer item_sorter;
 		private readonly ListViewItemCollection items;
-#if NET_2_0
 		private readonly ListViewGroupCollection groups;
 		private bool owner_draw;
 		private bool show_groups = true;
-#endif
 		private bool label_edit;
 		private bool label_wrap = true;
 		private bool multiselect = true;
@@ -103,7 +97,6 @@ namespace System.Windows.Forms
 		private Size item_size; // used for caching item size
 		private int custom_column_width; // used when using Columns with SmallIcon/List views
 		private int hot_item_index = -1;
-#if NET_2_0
 		private bool hot_tracking;
 		private ListViewInsertionMark insertion_mark;
 		private bool show_item_tooltips;
@@ -112,7 +105,6 @@ namespace System.Windows.Forms
 		private bool virtual_mode;
 		private int virtual_list_size;
 		private bool right_to_left_layout;
-#endif
 		// selection is available after the first time the handle is created, *even* if later
 		// the handle is either recreated or destroyed - so keep this info around.
 		private bool is_selection_available;
@@ -130,7 +122,6 @@ namespace System.Windows.Forms
 		static object ItemCheckEvent = new object ();
 		static object ItemDragEvent = new object ();
 		static object SelectedIndexChangedEvent = new object ();
-#if NET_2_0
 		static object DrawColumnHeaderEvent = new object();
 		static object DrawItemEvent = new object();
 		static object DrawSubItemEvent = new object();
@@ -142,30 +133,19 @@ namespace System.Windows.Forms
 		static object RightToLeftLayoutChangedEvent = new object ();
 		static object SearchForVirtualItemEvent = new object ();
 		static object VirtualItemsSelectionRangeChangedEvent = new object ();
-#endif
 
 		public event LabelEditEventHandler AfterLabelEdit {
 			add { Events.AddHandler (AfterLabelEditEvent, value); }
 			remove { Events.RemoveHandler (AfterLabelEditEvent, value); }
 		}
 
-#if !NET_2_0
-		[Browsable (false)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public new event EventHandler BackgroundImageChanged {
-			add { base.BackgroundImageChanged += value; }
-			remove { base.BackgroundImageChanged -= value; }
-		}
-#endif
 
-#if NET_2_0
 		[Browsable (false)]
 		[EditorBrowsable (EditorBrowsableState.Never)]
 		public new event EventHandler BackgroundImageLayoutChanged {
 			add { base.BackgroundImageLayoutChanged += value; }
 			remove { base.BackgroundImageLayoutChanged -= value; }
 		}
-#endif
 
 		public event LabelEditEventHandler BeforeLabelEdit {
 			add { Events.AddHandler (BeforeLabelEditEvent, value); }
@@ -177,7 +157,6 @@ namespace System.Windows.Forms
 			remove { Events.RemoveHandler (ColumnClickEvent, value); }
 		}
 
-#if NET_2_0
 		public event DrawListViewColumnHeaderEventHandler DrawColumnHeader {
 			add { Events.AddHandler(DrawColumnHeaderEvent, value); }
 			remove { Events.RemoveHandler(DrawColumnHeaderEvent, value); }
@@ -192,7 +171,6 @@ namespace System.Windows.Forms
 			add { Events.AddHandler(DrawSubItemEvent, value); }
 			remove { Events.RemoveHandler(DrawSubItemEvent, value); }
 		}
-#endif
 
 		public event EventHandler ItemActivate {
 			add { Events.AddHandler (ItemActivateEvent, value); }
@@ -204,19 +182,16 @@ namespace System.Windows.Forms
 			remove { Events.RemoveHandler (ItemCheckEvent, value); }
 		}
 
-#if NET_2_0
 		public event ItemCheckedEventHandler ItemChecked {
 			add { Events.AddHandler (ItemCheckedEvent, value); }
 			remove { Events.RemoveHandler (ItemCheckedEvent, value); }
 		}
-#endif
 
 		public event ItemDragEventHandler ItemDrag {
 			add { Events.AddHandler (ItemDragEvent, value); }
 			remove { Events.RemoveHandler (ItemDragEvent, value); }
 		}
 
-#if NET_2_0
 		public event ListViewItemMouseHoverEventHandler ItemMouseHover {
 			add { Events.AddHandler (ItemMouseHoverEvent, value); }
 			remove { Events.RemoveHandler (ItemMouseHoverEvent, value); }
@@ -233,7 +208,6 @@ namespace System.Windows.Forms
 			add { base.PaddingChanged += value; }
 			remove { base.PaddingChanged -= value; }
 		}
-#endif
 
 		[Browsable (false)]
 		[EditorBrowsable (EditorBrowsableState.Never)]
@@ -254,7 +228,6 @@ namespace System.Windows.Forms
 			remove { base.TextChanged -= value; }
 		}
 
-#if NET_2_0
 		public event CacheVirtualItemsEventHandler CacheVirtualItems {
 			add { Events.AddHandler (CacheVirtualItemsEvent, value); }
 			remove { Events.RemoveHandler (CacheVirtualItemsEvent, value); }
@@ -279,7 +252,6 @@ namespace System.Windows.Forms
 			add { Events.AddHandler (VirtualItemsSelectionRangeChangedEvent, value); }
 			remove { Events.RemoveHandler (VirtualItemsSelectionRangeChangedEvent, value); }
 		}
-#endif
 
 		#endregion // Events
 
@@ -287,9 +259,7 @@ namespace System.Windows.Forms
 		public ListView ()
 		{
 			background_color = ThemeEngine.Current.ColorWindow;
-#if NET_2_0
 			groups = new ListViewGroupCollection (this);
-#endif
 			items = new ListViewItemCollection (this);
 			items.Changed += new CollectionChangedHandler (OnItemsChanged);
 			checked_indices = new CheckedIndexCollection (this);
@@ -301,11 +271,9 @@ namespace System.Windows.Forms
 			items_location = new Point [16];
 			items_matrix_location = new ItemMatrixLocation [16];
 			reordered_items_indices = new int [16];
-#if NET_2_0
 			item_tooltip = new ToolTip ();
 			item_tooltip.Active = false;
 			insertion_mark = new ListViewInsertionMark (this);
-#endif
 
 			InternalBorderStyle = BorderStyle.Fixed3D;
 
@@ -340,14 +308,10 @@ namespace System.Windows.Forms
 			MouseEnter += new EventHandler (ListView_MouseEnter);
 			Invalidated += new InvalidateEventHandler (ListView_Invalidated);
 
-#if NET_2_0
 			BackgroundImageTiled = false;
-#endif
 
 			this.SetStyle (ControlStyles.UserPaint | ControlStyles.StandardClick
-#if NET_2_0
 				| ControlStyles.UseTextForAccessibility
-#endif
 				, false);
 		}
 		#endregion	// Public Constructors
@@ -391,14 +355,12 @@ namespace System.Windows.Forms
 			}
 		}
 
-#if NET_2_0
 		internal bool UsingGroups {
 			get {
 				return show_groups && groups.Count > 0 && view != View.List && 
 					Application.VisualStylesEnabled;
 			}
 		}
-#endif
 
 		internal override bool ScaleChildrenInternal {
 			get { return false; }
@@ -425,7 +387,6 @@ namespace System.Windows.Forms
 		protected override Size DefaultSize {
 			get { return ThemeEngine.Current.ListViewDefaultSize; }
 		}
-#if NET_2_0
 		protected override bool DoubleBuffered {
 			get {
 				return base.DoubleBuffered;
@@ -434,7 +395,6 @@ namespace System.Windows.Forms
 				base.DoubleBuffered = value;
 			}
 		}
-#endif
 		#endregion	// Protected Properties
 
 		#region Public Instance Properties
@@ -447,10 +407,8 @@ namespace System.Windows.Forms
 					throw new InvalidEnumArgumentException (string.Format
 						("Enum argument value '{0}' is not valid for Activation", value));
 				}
-#if NET_2_0
 				if (hot_tracking && value != ItemActivation.OneClick)
 					throw new ArgumentException ("When HotTracking is on, activation must be ItemActivation.OneClick");
-#endif
 				
 				activation = value;
 			}
@@ -508,16 +466,6 @@ namespace System.Windows.Forms
 			}
 		}
 
-#if !NET_2_0
-		[Browsable (false)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public override Image BackgroundImage {
-			get { return base.BackgroundImage; }
-			set { base.BackgroundImage = value; }
-		}
-#endif
-
-#if NET_2_0
 		[Browsable (false)]
 		[EditorBrowsable (EditorBrowsableState.Never)]
 		public override ImageLayout BackgroundImageLayout {
@@ -542,7 +490,6 @@ namespace System.Windows.Forms
 				item_control.BackgroundImageLayout = new_image_layout;
 			}
 		}
-#endif
 
 		[DefaultValue (BorderStyle.Fixed3D)]
 		[DispId (-504)]
@@ -556,20 +503,16 @@ namespace System.Windows.Forms
 			get { return check_boxes; }
 			set {
 				if (check_boxes != value) {
-#if NET_2_0
 					if (value && View == View.Tile)
 						throw new NotSupportedException ("CheckBoxes are not"
 							+ " supported in Tile view. Choose a different"
 							+ " view or set CheckBoxes to false.");
-#endif
 
 					check_boxes = value;
 					this.Redraw (true);
 
-#if NET_2_0
 					//UIA Framework: Event used by ListView to set/unset Toggle Pattern
 					OnUIACheckBoxesChanged ();
-#endif
 				}
 			}
 		}
@@ -586,9 +529,7 @@ namespace System.Windows.Forms
 			get { return checked_items; }
 		}
 
-#if NET_2_0
 		[Editor ("System.Windows.Forms.Design.ColumnHeaderCollectionEditor, " + Consts.AssemblySystem_Design, typeof (System.Drawing.Design.UITypeEditor))]
-#endif
 		[DesignerSerializationVisibility (DesignerSerializationVisibility.Content)]
 		[Localizable (true)]
 		[MergableProperty (false)]
@@ -605,7 +546,6 @@ namespace System.Windows.Forms
 
 				return GetItemAtDisplayIndex (focused_item_index);
 			}
-#if NET_2_0
 			set {
 				if (value == null || value.ListView != this || 
 						!IsHandleCreated)
@@ -613,7 +553,6 @@ namespace System.Windows.Forms
 
 				SetFocusedItem (value.DisplayIndex);
 			}
-#endif
 		}
 
 		public override Color ForeColor {
@@ -682,7 +621,6 @@ namespace System.Windows.Forms
 			}
 		}
 
-#if NET_2_0
 		[DefaultValue (false)]
 		public bool HotTracking {
 			get {
@@ -699,21 +637,17 @@ namespace System.Windows.Forms
 				}
 			}
 		}
-#endif
 
 		[DefaultValue (false)]
 		public bool HoverSelection {
 			get { return hover_selection; }
 			set { 
-#if NET_2_0
 				if (hot_tracking && value == false)
 					throw new ArgumentException ("When HotTracking is on, hover selection must be true");
-#endif
 				hover_selection = value; 
 			}
 		}
 
-#if NET_2_0
 		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
 		[Browsable (false)]
 		public ListViewInsertionMark InsertionMark {
@@ -721,11 +655,8 @@ namespace System.Windows.Forms
 				return insertion_mark;
 			}
 		}
-#endif
 
-#if NET_2_0
 		[Editor ("System.Windows.Forms.Design.ListViewItemCollectionEditor, " + Consts.AssemblySystem_Design, typeof (System.Drawing.Design.UITypeEditor))]
-#endif
 		[DesignerSerializationVisibility (DesignerSerializationVisibility.Content)]
 		[Localizable (true)]
 		[MergableProperty (false)]
@@ -740,10 +671,8 @@ namespace System.Windows.Forms
 				if (value != label_edit) {
 					label_edit = value; 
 
-#if NET_2_0
 					// UIA Framework: Event used by Value Pattern in ListView.ListItem provider
 					OnUIALabelEditChanged ();
-#endif
 				}
 
 			}
@@ -793,16 +722,13 @@ namespace System.Windows.Forms
 				if (value != multiselect) {
 					multiselect = value; 
 
-#if NET_2_0
 					// UIA Framework: Event used by Selection Pattern in ListView.ListItem provider
 					OnUIAMultiSelectChanged ();
-#endif
 				}
 			}
 		}
 
 
-#if NET_2_0
 		[DefaultValue(false)]
 		public bool OwnerDraw {
 			get { return owner_draw; }
@@ -836,7 +762,6 @@ namespace System.Windows.Forms
 				}
 			}
 		}
-#endif
 
 		[DefaultValue (true)]
 		public bool Scrollable {
@@ -861,7 +786,6 @@ namespace System.Windows.Forms
 			get { return selected_items; }
 		}
 
-#if NET_2_0
 		[DefaultValue(true)]
 		public bool ShowGroups {
 			get { return show_groups; }
@@ -894,7 +818,6 @@ namespace System.Windows.Forms
 				item_tooltip.Active = false;
 			}
 		}
-#endif
 
 		[DefaultValue (null)]
 		public ImageList SmallImageList {
@@ -919,39 +842,22 @@ namespace System.Windows.Forms
 
 				sort_order = value;
 
-#if NET_2_0
 				if (virtual_mode) // Sorting is not allowed in virtual mode
 					return;
-#endif
 
 				if (value == SortOrder.None) {
 					if (item_sorter != null) {
 						// ListViewItemSorter should never be reset for SmallIcon
 						// and LargeIcon view
 						if (View != View.SmallIcon && View != View.LargeIcon)
-#if NET_2_0
 							item_sorter = null;
-#else
-							// in .NET 1.1, only internal IComparer would be
-							// set to null
-							if (item_sorter is ItemComparer)
-								item_sorter = null;
-#endif
 					}
 					this.Redraw (false);
 				} else {
 					if (item_sorter == null)
 						item_sorter = new ItemComparer (value);
 					if (item_sorter is ItemComparer) {
-#if NET_2_0
 						item_sorter = new ItemComparer (value);
-#else
-						// in .NET 1.1, the sort order is not updated for
-						// SmallIcon and LargeIcon views if no custom IComparer
-						// is set
-						if (View != View.SmallIcon && View != View.LargeIcon)
-							item_sorter = new ItemComparer (value);
-#endif
 					}
 					Sort ();
 				}
@@ -996,7 +902,6 @@ namespace System.Windows.Forms
 			}
 		}
 
-#if NET_2_0
 		[Browsable (true)]
 		public Size TileSize {
 			get {
@@ -1011,16 +916,13 @@ namespace System.Windows.Forms
 					Redraw (true);
 			}
 		}
-#endif
 
 		[Browsable (false)]
 		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
 		public ListViewItem TopItem {
 			get {
-#if NET_2_0
 				if (view == View.LargeIcon || view == View.SmallIcon || view == View.Tile)
 					throw new InvalidOperationException ("Cannot get the top item in LargeIcon, SmallIcon or Tile view.");
-#endif
 				// there is no item
 				if (this.items.Count == 0)
 					return null;
@@ -1039,7 +941,6 @@ namespace System.Windows.Forms
 					return null;
 				}
 			}
-#if NET_2_0
 			set {
 				if (view == View.LargeIcon || view == View.SmallIcon || view == View.Tile)
 					throw new InvalidOperationException ("Cannot set the top item in LargeIcon, SmallIcon or Tile view.");
@@ -1051,10 +952,8 @@ namespace System.Windows.Forms
 				// Take advantage this property is only valid for Details view.
 				SetScrollValue (v_scroll, item_size.Height * value.Index);
 			}
-#endif
 		}
 
-#if NET_2_0
 		[EditorBrowsable (EditorBrowsableState.Advanced)]
 		[DefaultValue (true)]
 		[Browsable (false)]
@@ -1066,7 +965,6 @@ namespace System.Windows.Forms
 			set {
 			}
 		}
-#endif
 
 		[DefaultValue (View.LargeIcon)]
 		public View View {
@@ -1077,7 +975,6 @@ namespace System.Windows.Forms
 						typeof (View));
 
 				if (view != value) {
-#if NET_2_0
 					if (CheckBoxes && value == View.Tile)
 						throw new NotSupportedException ("CheckBoxes are not"
 							+ " supported in Tile view. Choose a different"
@@ -1086,21 +983,17 @@ namespace System.Windows.Forms
 						throw new NotSupportedException ("VirtualMode is"
 							+ " not supported in Tile view. Choose a different"
 							+ " view or set ViewMode to false.");
-#endif
 
 					h_scroll.Value = v_scroll.Value = 0;
 					view = value; 
 					Redraw (true);
 
-#if NET_2_0
 					// UIA Framework: Event used to update UIA Tree.
 					OnUIAViewChanged ();
-#endif
 				}
 			}
 		}
 
-#if NET_2_0
 		[DefaultValue (false)]
 		[RefreshProperties (RefreshProperties.Repaint)]
 		public bool VirtualMode {
@@ -1143,7 +1036,6 @@ namespace System.Windows.Forms
 				}
 			}
 		}
-#endif
 		#endregion	// Public Instance Properties
 
 		#region Internal Methods Properties
@@ -1158,7 +1050,6 @@ namespace System.Windows.Forms
 					return 0;
 				
 				Size item_size = ItemSize;
-#if NET_2_0
 				// In virtual mode we always have fixed positions, and we can infer the positon easily
 				if (virtual_mode) {
 					int first = 0;
@@ -1180,7 +1071,6 @@ namespace System.Windows.Forms
 
 					return first;
 				}
-#endif
 				for (int i = 0; i < items.Count; i++) {
 					Rectangle item_rect = new Rectangle (GetItemLocation (i), item_size);
 					if (item_rect.Right >= 0 && item_rect.Bottom >= 0)
@@ -1227,11 +1117,9 @@ namespace System.Windows.Forms
 			// Avoid calculations when control is being updated
 			if (updating)
 				return;
-#if NET_2_0
 			// VirtualMode doesn't do any calculations until handle is created
 			if (virtual_mode && !IsHandleCreated)
 				return;
-#endif
 
 
 			if (recalculate)
@@ -1291,7 +1179,6 @@ namespace System.Windows.Forms
 		{
 			Size temp = Size.Empty;
 			Size ret_size = Size.Empty;
-#if NET_2_0
     			bool use_indent_count = small_image_list != null;
 
 			// VirtualMode uses the first item text size
@@ -1303,7 +1190,6 @@ namespace System.Windows.Forms
 				if (use_indent_count)
 					ret_size.Width += item.IndentCount * small_image_list.ImageSize.Width;
 			} else {
-#endif
 				// 0th column holds the item text, we check the size of
 				// the various subitems falling in that column and get
 				// the biggest one's size.
@@ -1314,17 +1200,13 @@ namespace System.Windows.Forms
 					temp = Size.Ceiling (TextRenderer.MeasureString
 								(item.SubItems [col].Text, Font));
 
-#if NET_2_0
 					if (use_indent_count)
 						temp.Width += item.IndentCount * small_image_list.ImageSize.Width;
-#endif
     
 					if (temp.Width > ret_size.Width)
 						ret_size = temp;
 				}
-#if NET_2_0
 			}
-#endif
 
 			// adjustment for space in Details view
 			if (!ret_size.IsEmpty && view == View.Details)
@@ -1477,7 +1359,7 @@ namespace System.Windows.Forms
 				// v_scroll to account for the height of h_scroll
 				if (h_scroll.Visible) {
 					v_scroll.Maximum = layout_ht + h_scroll.Height;
-					v_scroll.Height = client_area.Height - h_scroll.Height;
+					v_scroll.Height = client_area.Height > h_scroll.Height ? client_area.Height - h_scroll.Height : 0;
 				} else {
 					v_scroll.Maximum = layout_ht;
 					v_scroll.Height = client_area.Height;
@@ -1485,8 +1367,9 @@ namespace System.Windows.Forms
 
 				if (view == View.Details) {
 					// Need to update Maximum if using LargeChange with value other than the visible area
-					v_scroll.LargeChange = v_scroll.Height - (header_control.Height + item_size.Height);
-					v_scroll.Maximum -= header_control.Height + item_size.Height;
+					int headerPlusOneItem = header_control.Height + item_size.Height;
+					v_scroll.LargeChange = v_scroll.Height > headerPlusOneItem ? v_scroll.Height - headerPlusOneItem : 0;
+					v_scroll.Maximum = v_scroll.Maximum > headerPlusOneItem ? v_scroll.Maximum - headerPlusOneItem : 0;
 				} else
 					v_scroll.LargeChange = v_scroll.Height;
 
@@ -1500,7 +1383,6 @@ namespace System.Windows.Forms
 				header_control.Width = width;
 		}
 
-#if NET_2_0
 		internal int GetReorderedColumnIndex (ColumnHeader column)
 		{
 			if (reordered_column_indices == null)
@@ -1512,7 +1394,6 @@ namespace System.Windows.Forms
 
 			return -1;
 		}
-#endif
 
 		internal ColumnHeader GetReorderedColumn (int index)
 		{
@@ -1524,7 +1405,6 @@ namespace System.Windows.Forms
 
 		internal void ReorderColumn (ColumnHeader col, int index, bool fireEvent)
 		{
-#if NET_2_0
 			if (fireEvent) {
 				ColumnReorderedEventHandler eh = (ColumnReorderedEventHandler) (Events [ColumnReorderedEvent]);
 				if (eh != null){
@@ -1538,7 +1418,6 @@ namespace System.Windows.Forms
 					}
 				}
 			}
-#endif
 			int column_count = Columns.Count;
 
 			if (reordered_column_indices == null) {
@@ -1633,7 +1512,6 @@ namespace System.Windows.Forms
 			}
 		}
 
-#if NET_2_0
 		Size TileItemSize {
 			get {
 				// Calculate tile size if needed
@@ -1651,7 +1529,6 @@ namespace System.Windows.Forms
 				return tile_size;
 			}
 		}
-#endif
 
 		int GetDetailsItemHeight ()
 		{
@@ -1678,7 +1555,7 @@ namespace System.Windows.Forms
 			reordered_items_indices [index] = index;
 		}
 
-#if NET_2_0
+
 		void ShiftItemsPositions (int from, int to, bool forward)
 		{
 			if (forward) {
@@ -1773,13 +1650,10 @@ namespace System.Windows.Forms
 
 			return count;
 		}
-#endif
 
-#if NET_2_0
 		// cache the spacing to let virtualmode compute the positions on the fly
 		int x_spacing;
 		int y_spacing;
-#endif
 		int rows;
 		int cols;
 		int[,] item_index_matrix;
@@ -1790,7 +1664,6 @@ namespace System.Windows.Forms
 
 			if (UseCustomColumnWidth)
 				CalculateCustomColumnWidth ();
-#if NET_2_0
 			if (UsingGroups) {
 				// When groups are used the alignment is always top-aligned
 				rows = 0;
@@ -1820,7 +1693,6 @@ namespace System.Windows.Forms
 					items += items_in_group;
 				}
 			} else
-#endif
 			{
 				// Simple matrix if no groups are used
 				if (left_aligned) {
@@ -1865,10 +1737,8 @@ namespace System.Windows.Forms
 			item_control.Visible = true;
 			item_control.Location = Point.Empty;
 			ItemSize = item_size; // Cache item size
-#if NET_2_0
 			this.x_spacing = x_spacing;
 			this.y_spacing = y_spacing;
-#endif
 
 			if (items.Count == 0)
 				return;
@@ -1880,7 +1750,6 @@ namespace System.Windows.Forms
 			layout_wd = UseCustomColumnWidth ? cols * custom_column_width : cols * (sz.Width + x_spacing) - x_spacing;
 			layout_ht = rows * (sz.Height + y_spacing) - y_spacing;
 
-#if NET_2_0
 			if (virtual_mode) { // no actual assignment is needed on items for virtual mode
 				item_control.Size = new Size (layout_wd, layout_ht);
 				return;
@@ -1889,7 +1758,6 @@ namespace System.Windows.Forms
 			bool using_groups = UsingGroups;
 			if (using_groups) // the groups layout will override layout_ht
 				CalculateGroupsLayout (sz, y_spacing, 0);
-#endif
 
 			int row = 0, col = 0;
 			int x = 0, y = 0;
@@ -1897,7 +1765,6 @@ namespace System.Windows.Forms
 
 			for (int i = 0; i < items.Count; i++) {
 				ListViewItem item = items [i];
-#if NET_2_0
 				if (using_groups) {
 					ListViewGroup group = item.Group;
 					if (group == null)
@@ -1919,7 +1786,6 @@ namespace System.Windows.Forms
 					item_index_matrix [row + starting_row, col] = i;
 
 				} else
-#endif
 				{
 					x = UseCustomColumnWidth ? col * custom_column_width : col * (item_size.Width + x_spacing);
 					y = row * (item_size.Height + y_spacing);
@@ -1944,15 +1810,12 @@ namespace System.Windows.Forms
 
 				item.Layout ();
 				item.DisplayIndex = display_index;
-#if NET_2_0					
 				item.SetPosition (new Point (x, y));
-#endif					
 			}
 
 			item_control.Size = new Size (layout_wd, layout_ht);
 		}
 
-#if NET_2_0
 		void CalculateGroupsLayout (Size item_size, int y_spacing, int y_origin)
 		{
 			int y = y_origin;
@@ -1998,7 +1861,6 @@ namespace System.Windows.Forms
 				items += items_in_group;
 			}
 		}
-#endif
 
 		void LayoutHeader ()
 		{
@@ -2050,7 +1912,6 @@ namespace System.Windows.Forms
 			if (items.Count > 0 && grid_lines) // some space for bottom gridline
 				layout_ht += 2;
 
-#if NET_2_0
 			bool using_groups = UsingGroups;
 			if (using_groups) {
 				// Observe that this routines will override our layout_ht value
@@ -2060,7 +1921,6 @@ namespace System.Windows.Forms
 
 			if (virtual_mode) // no assgination on items is needed
 				return;
-#endif
 
 			for (int i = 0; i < items.Count; i++) {
 				ListViewItem item = items [i];
@@ -2068,7 +1928,6 @@ namespace System.Windows.Forms
 				int display_index;
 				int item_y;
 
-#if NET_2_0
 				if (using_groups) {
 					ListViewGroup group = item.Group;
 					if (group == null)
@@ -2082,7 +1941,6 @@ namespace System.Windows.Forms
 					SetItemLocation (display_index, 0, item_y, 0, 0);
 					SetItemAtDisplayIndex (display_index, i);
 				} else
-#endif
 				{
 					display_index = i;
 					item_y = y;
@@ -2092,9 +1950,7 @@ namespace System.Windows.Forms
 
 				item.Layout ();
 				item.DisplayIndex = display_index;
-#if NET_2_0					
 				item.SetPosition (new Point (0, item_y));
-#endif					
 			}
 		}
 
@@ -2106,16 +1962,16 @@ namespace System.Windows.Forms
 			Controls.ClearImplicit ();
 			Controls.AddImplicit (header_control);
 			Controls.AddImplicit (item_control);
+			Controls.AddImplicit (h_scroll);
+			Controls.AddImplicit (v_scroll);
 			ResumeLayout ();
 		}
 
 		private void AdjustItemsPositionArray (int count)
 		{
-#if  NET_2_0
 			// In virtual mode we compute the positions on the fly.
 			if (virtual_mode)
 				return;
-#endif
 			if (items_location.Length >= count)
 				return;
 
@@ -2152,7 +2008,6 @@ namespace System.Windows.Forms
 				LayoutIcons (SmallIconItemSize, true, 
 						ThemeEngine.Current.ListViewHorizontalSpacing, 2);
 				break;
-#if NET_2_0
 			case View.Tile:
 				if (!Application.VisualStylesEnabled)
 					goto case View.LargeIcon;
@@ -2161,7 +2016,6 @@ namespace System.Windows.Forms
 						ThemeEngine.Current.ListViewHorizontalSpacing,
 						ThemeEngine.Current.ListViewVerticalSpacing);
 				break;
-#endif
 			}
 
 			CalculateScrollBars ();
@@ -2170,11 +2024,9 @@ namespace System.Windows.Forms
 		internal Point GetItemLocation (int index)
 		{
 			Point loc = Point.Empty;
-#if NET_2_0
 			if (virtual_mode)
 				loc = GetFixedItemLocation (index);
 			else
-#endif
 				loc = items_location [index];
 
 			loc.X -= h_marker; // Adjust to scroll
@@ -2183,7 +2035,6 @@ namespace System.Windows.Forms
 			return loc;
 		}
 
-#if NET_2_0
 		Point GetFixedItemLocation (int index)
 		{
 			Point loc = Point.Empty;
@@ -2205,24 +2056,19 @@ namespace System.Windows.Forms
 
 			return loc;
 		}
-#endif
 
 		internal int GetItemIndex (int display_index)
 		{
-#if NET_2_0
 			if (virtual_mode)
 				return display_index; // no reordering in virtual mode.
-#endif
 			return reordered_items_indices [display_index];
 		}
 
 		internal ListViewItem GetItemAtDisplayIndex (int display_index)
 		{
-#if NET_2_0
 			// in virtual mode there's no reordering at all.
 			if (virtual_mode)
 				return items [display_index];
-#endif
 			return items [reordered_items_indices [display_index]];
 		}
 
@@ -2316,10 +2162,8 @@ namespace System.Windows.Forms
 				return result;
 			}
 
-#if NET_2_0
 			if (virtual_mode)
 				return GetFixedAdjustedIndex (key);
-#endif
 
 			ItemMatrixLocation item_matrix_location = items_matrix_location [FocusedItem.DisplayIndex];
 			int row = item_matrix_location.Row;
@@ -2374,7 +2218,6 @@ namespace System.Windows.Forms
 			return items [adjusted_index].DisplayIndex;
 		}
 
-#if NET_2_0
 		// Used for virtual mode, where items *cannot* be re-arranged
 		int GetFixedAdjustedIndex (Keys key)
 		{
@@ -2415,7 +2258,6 @@ namespace System.Windows.Forms
 
 			return result;
 		}
-#endif
 
 		ListViewItem selection_start;
 
@@ -2600,9 +2442,7 @@ namespace System.Windows.Forms
 			bool hover_processed = false;
 			bool checking = false;
 			ListViewItem prev_hovered_item;
-#if NET_2_0
 			ListViewItem prev_tooltip_item;
-#endif
 			int clicks;
 			Point drag_begin = new Point (-1, -1);
 			internal int dragged_item_index = -1;
@@ -2705,12 +2545,8 @@ namespace System.Windows.Forms
 					ArrayList result = new ArrayList ();
 					for (int i = 0; i < owner.Items.Count; i++) {
 						bool intersects;
-#if NET_2_0
 						// Can't iterate over specific items properties in virtualmode
 						if (owner.View == View.Details && !owner.FullRowSelect && !owner.VirtualMode)
-#else
-						if (owner.View == View.Details && !owner.FullRowSelect)
-#endif
 							intersects = BoxIntersectsText (i);
 						else
 							intersects = BoxIntersectsItem (i);
@@ -2790,9 +2626,6 @@ namespace System.Windows.Forms
 						// and if we are in 1.1 profile only take into account
 						// double clicks
 						if (owner.StateImageList != null && owner.StateImageList.Images.Count < 2 
-#if !NET_2_0
-								&& me.Clicks == 1
-#endif
 								)
 							return;
 
@@ -2837,7 +2670,6 @@ namespace System.Windows.Forms
 						clicked_item.Selected = true;
 					}
 
-#if NET_2_0
 					if (owner.VirtualMode && changed) {
 						// Broken event - It's not fired from Item.Selected also
 						ListViewVirtualItemsSelectionRangeChangedEventArgs args = 
@@ -2845,7 +2677,6 @@ namespace System.Windows.Forms
 
 						owner.OnVirtualItemsSelectionRangeChanged (args);
 					}
-#endif
 					// Report clicks only if the item was clicked. On MS the
 					// clicks are only raised if you click an item
 					clicks = me.Clicks;
@@ -2889,9 +2720,7 @@ namespace System.Windows.Forms
 					return;
 				if ((me.Button != MouseButtons.Left && me.Button != MouseButtons.Right) &&
 					!hover_processed && owner.Activation != ItemActivation.OneClick
-#if NET_2_0
 					&& !owner.ShowItemToolTips
-#endif
 						)
 					return;
 
@@ -2906,18 +2735,14 @@ namespace System.Windows.Forms
 				// Need to invalidate the item in HotTracking to show/hide the underline style
 				if (owner.Activation == ItemActivation.OneClick) {
 					if (item == null && owner.HotItemIndex != -1) {
-#if NET_2_0
 						if (owner.HotTracking)
 							Invalidate (owner.Items [owner.HotItemIndex].Bounds); // Previous one
-#endif
 
 						Cursor = Cursors.Default;
 						owner.HotItemIndex = -1;
 					} else if (item != null && owner.HotItemIndex == -1) {
-#if NET_2_0
 						if (owner.HotTracking)
 							Invalidate (item.Bounds);
-#endif
 
 						Cursor = Cursors.Hand;
 						owner.HotItemIndex = item.Index;
@@ -2937,7 +2762,6 @@ namespace System.Windows.Forms
 					}
 				}
 
-#if NET_2_0
 				if (owner.ShowItemToolTips) {
 					if (item == null) {
 						owner.item_tooltip.Active = false;
@@ -2948,7 +2772,6 @@ namespace System.Windows.Forms
 						prev_tooltip_item = item;
 					}
 				}
-#endif
 
 			}
 
@@ -2980,9 +2803,7 @@ namespace System.Windows.Forms
 					Select (); // Make sure we have the focus, since MouseHover doesn't give it to us
 				}
 
-#if NET_2_0
 				owner.OnItemMouseHover (new ListViewItemMouseHoverEventArgs (item));
-#endif
 			}
 
 			void HandleClicks (MouseEventArgs me)
@@ -2990,17 +2811,11 @@ namespace System.Windows.Forms
 				// if the click is not on an item,
 				// clicks remains as 0
 				if (clicks > 1) {
-#if !NET_2_0
-					owner.OnDoubleClick (EventArgs.Empty);
-				} else if (clicks == 1) {
-					owner.OnClick (EventArgs.Empty);
-#else
 					owner.OnDoubleClick (EventArgs.Empty);
 					owner.OnMouseDoubleClick (me);
 				} else if (clicks == 1) {
 					owner.OnClick (EventArgs.Empty);
 					owner.OnMouseClick (me);
-#endif
 				}
 
 				clicks = 0;
@@ -3455,14 +3270,12 @@ namespace System.Windows.Forms
 			case View.List:
 				Scroll (h_scroll, -ItemSize.Width * lines);
 				break;
-#if NET_2_0
 			case View.Tile:
 				if (!Application.VisualStylesEnabled)
 					goto case View.LargeIcon;
 
 				Scroll (v_scroll, -(ItemSize.Height + ThemeEngine.Current.ListViewVerticalSpacing) * 2 * lines);
 				break;
-#endif
 			}
 		}
 
@@ -3478,12 +3291,10 @@ namespace System.Windows.Forms
 			else if (focused_item_index != -1 && focused_item_index < items.Count) // Previous focused item
 				GetItemAtDisplayIndex (focused_item_index).Focused = false;
 			focused_item_index = display_index;
-#if NET_2_0
 			if (display_index == -1)
 				OnUIAFocusedItemChanged ();
 				// otherwise the event will have been fired
 				// when the ListViewItem's Focused was set
-#endif
 		}
 
 		private void HorizontalScroller (object sender, EventArgs e)
@@ -3548,9 +3359,7 @@ namespace System.Windows.Forms
 				foreach (ColumnHeader col in columns)
 					col.SetListView (null);
 
-#if NET_2_0
 				if (!virtual_mode) // In virtual mode we don't save the items
-#endif
 					foreach (ListViewItem item in items)
 						item.Owner = null;
 			}
@@ -3585,13 +3394,11 @@ namespace System.Windows.Forms
 				eh (this, e);
 		}
 
-#if NET_2_0
 		protected override void OnBackgroundImageChanged (EventArgs e)
 		{
 			item_control.BackgroundImage = BackgroundImage;
 			base.OnBackgroundImageChanged (e);
 		}
-#endif
 
 		protected virtual void OnBeforeLabelEdit (LabelEditEventArgs e)
 		{
@@ -3607,7 +3414,6 @@ namespace System.Windows.Forms
 				eh (this, e);
 		}
 
-#if NET_2_0
 		protected internal virtual void OnDrawColumnHeader(DrawListViewColumnHeaderEventArgs e)
 		{
 			DrawListViewColumnHeaderEventHandler eh = (DrawListViewColumnHeaderEventHandler)(Events[DrawColumnHeaderEvent]);
@@ -3629,13 +3435,6 @@ namespace System.Windows.Forms
 				eh(this, e);
 		}
 
-#else
-		protected override void OnEnabledChanged (EventArgs e)
-		{
-			base.OnEnabledChanged (e);
-		}
-#endif
-
 		protected override void OnFontChanged (EventArgs e)
 		{
 			base.OnFontChanged (e);
@@ -3646,9 +3445,7 @@ namespace System.Windows.Forms
 		{
 			base.OnHandleCreated (e);
 			CalculateListView (alignment);
-#if NET_2_0
 			if (!virtual_mode) // Sorting is not allowed in virtual mode
-#endif
 				Sort ();
 		}
 
@@ -3671,14 +3468,12 @@ namespace System.Windows.Forms
 				eh (this, ice);
 		}
 
-#if NET_2_0
 		protected internal virtual void OnItemChecked (ItemCheckedEventArgs e)
 		{
 			ItemCheckedEventHandler eh = (ItemCheckedEventHandler)(Events [ItemCheckedEvent]);
 			if (eh != null)
 				eh (this, e);
 		}
-#endif
 
 		protected virtual void OnItemDrag (ItemDragEventArgs e)
 		{
@@ -3687,7 +3482,6 @@ namespace System.Windows.Forms
 				eh (this, e);
 		}
 
-#if NET_2_0
 		protected virtual void OnItemMouseHover (ListViewItemMouseHoverEventArgs e)
 		{
 			ListViewItemMouseHoverEventHandler eh = (ListViewItemMouseHoverEventHandler)(Events [ItemMouseHoverEvent]);
@@ -3712,7 +3506,6 @@ namespace System.Windows.Forms
 		{
 			base.OnParentChanged (e);
 		}
-#endif
 
 		protected virtual void OnSelectedIndexChanged (EventArgs e)
 		{
@@ -3726,7 +3519,6 @@ namespace System.Windows.Forms
 			base.OnSystemColorsChanged (e);
 		}
 
-#if NET_2_0
 		protected internal virtual void OnCacheVirtualItems (CacheVirtualItemsEventArgs e)
 		{
 			CacheVirtualItemsEventHandler eh = (CacheVirtualItemsEventHandler)Events [CacheVirtualItemsEvent];
@@ -3763,7 +3555,6 @@ namespace System.Windows.Forms
 			if (eh != null)
 				eh (this, e);
 		}
-#endif
 
 		protected void RealizeProperties ()
 		{
@@ -3815,7 +3606,6 @@ namespace System.Windows.Forms
 				Redraw (true);
 		}
 
-#if NET_2_0
 		public void AutoResizeColumn (int columnIndex, ColumnHeaderAutoResizeStyle headerAutoResize)
 		{
 			if (columnIndex < 0 || columnIndex >= columns.Count)
@@ -3831,7 +3621,6 @@ namespace System.Windows.Forms
 				col.AutoResize (headerAutoResize);
 			EndUpdate ();
 		}
-#endif
 
 		public void BeginUpdate ()
 		{
@@ -3860,12 +3649,8 @@ namespace System.Windows.Forms
 				return;
 
 			Rectangle view_rect = item_control.ClientRectangle;
-#if NET_2_0
 			// Avoid direct access to items in virtual mode, and use item bounds otherwise, since we could have reordered items
 			Rectangle bounds = virtual_mode ? new Rectangle (GetItemLocation (index), ItemSize) : items [index].Bounds;
-#else
-			Rectangle bounds = items [index].Bounds;
-#endif
 
 			if (view == View.Details && header_style != ColumnHeaderStyle.None) {
 				view_rect.Y += header_control.Height;
@@ -3888,7 +3673,6 @@ namespace System.Windows.Forms
 				v_scroll.Value += (bounds.Bottom - view_rect.Bottom);
 		}
 
-#if NET_2_0
 		public ListViewItem FindItemWithText (string text)
 		{
 			if (items.Count == 0)
@@ -3906,7 +3690,6 @@ namespace System.Windows.Forms
 		{
 			return FindItemWithText (text, includeSubItemsInSearch, startIndex, isPrefixSearch, false);
 		}
-#endif
 		
 		internal ListViewItem FindItemWithText (string text, bool includeSubItemsInSearch, int startIndex, bool isPrefixSearch, bool roundtrip)
 		{
@@ -3916,7 +3699,6 @@ namespace System.Windows.Forms
 			if (text == null)
 				throw new ArgumentNullException ("text");
 
-#if NET_2_0
 			if (virtual_mode) {
 				SearchForVirtualItemEventArgs args = new SearchForVirtualItemEventArgs (true,
 						isPrefixSearch, includeSubItemsInSearch, text, Point.Empty, 
@@ -3929,7 +3711,6 @@ namespace System.Windows.Forms
 
 				return null;
 			}
-#endif
 
 			int i = startIndex;
 			while (true) {
@@ -3971,7 +3752,6 @@ namespace System.Windows.Forms
 			return null;
 		}
 
-#if NET_2_0
 		public ListViewItem FindNearestItem (SearchDirectionHint searchDirection, int x, int y)
 		{
 			return FindNearestItem (searchDirection, new Point (x, y));
@@ -4048,7 +3828,6 @@ namespace System.Windows.Forms
 
 			return item;
 		}
-#endif
 		
 		public ListViewItem GetItemAt (int x, int y)
 		{
@@ -4076,7 +3855,6 @@ namespace System.Windows.Forms
 			return items [index].GetBounds (portion);
 		}
 
-#if NET_2_0
 		public ListViewHitTestInfo HitTest (Point point)
 		{
 			return HitTest (point.X, point.Y);
@@ -4131,14 +3909,11 @@ namespace System.Windows.Forms
 			if (!invalidateOnly)
 				Update ();
 		}
-#endif
 
 		public void Sort ()
 		{
-#if NET_2_0
 			if (virtual_mode)
 				throw new InvalidOperationException ();
-#endif
 
 			Sort (true);
 		}
@@ -4438,9 +4213,7 @@ namespace System.Windows.Forms
 			}
 		}
 
-#if NET_2_0
 		[ListBindable (false)]
-#endif
 		public class CheckedIndexCollection : IList, ICollection, IEnumerable
 		{
 			private readonly ListView owner;
@@ -4574,9 +4347,7 @@ namespace System.Windows.Forms
 			}
 		}	// CheckedIndexCollection
 
-#if NET_2_0
 		[ListBindable (false)]
-#endif
 		public class CheckedListViewItemCollection : IList, ICollection, IEnumerable
 		{
 			private readonly ListView owner;
@@ -4607,10 +4378,8 @@ namespace System.Windows.Forms
 
 			public ListViewItem this [int index] {
 				get {
-#if NET_2_0
 					if (owner.VirtualMode)
 						throw new InvalidOperationException ();
-#endif
 					ArrayList checked_items = List;
 					if (index < 0 || index >= checked_items.Count)
 						throw new ArgumentOutOfRangeException ("index");
@@ -4618,14 +4387,12 @@ namespace System.Windows.Forms
 				}
 			}
 
-#if NET_2_0
 			public virtual ListViewItem this [string key] {
 				get {
 					int idx = IndexOfKey (key);
 					return idx == -1 ? null : (ListViewItem) List [idx];
 				}
 			}
-#endif
 
 			bool ICollection.IsSynchronized {
 				get { return false; }
@@ -4653,19 +4420,15 @@ namespace System.Windows.Forms
 				return List.Contains (item);
 			}
 
-#if NET_2_0
 			public virtual bool ContainsKey (string key)
 			{
 				return IndexOfKey (key) != -1;
 			}
-#endif
 
 			public void CopyTo (Array dest, int index)
 			{
-#if NET_2_0
 				if (owner.VirtualMode)
 					throw new InvalidOperationException ();
-#endif
 				if (!owner.CheckBoxes)
 					return;
 				List.CopyTo (dest, index);
@@ -4673,10 +4436,8 @@ namespace System.Windows.Forms
 
 			public IEnumerator GetEnumerator ()
 			{
-#if NET_2_0
 				if (owner.VirtualMode)
 					throw new InvalidOperationException ();
-#endif
 				if (!owner.CheckBoxes)
 					return (new ListViewItem [0]).GetEnumerator ();
 				return List.GetEnumerator ();
@@ -4723,22 +4484,17 @@ namespace System.Windows.Forms
 
 			public int IndexOf (ListViewItem item)
 			{
-#if NET_2_0
 				if (owner.VirtualMode)
 					throw new InvalidOperationException ();
-#endif
 				if (!owner.CheckBoxes)
 					return -1;
 				return List.IndexOf (item);
 			}
 
-#if NET_2_0
 			public virtual int IndexOfKey (string key)
 			{
-#if NET_2_0
 				if (owner.VirtualMode)
 					throw new InvalidOperationException ();
-#endif
 				if (key == null || key.Length == 0)
 					return -1;
 
@@ -4751,7 +4507,6 @@ namespace System.Windows.Forms
 
 				return -1;
 			}
-#endif
 			#endregion	// Public Methods
 
 			internal ArrayList List {
@@ -4779,16 +4534,13 @@ namespace System.Windows.Forms
 			}
 		}	// CheckedListViewItemCollection
 
-#if NET_2_0
 		[ListBindable (false)]
-#endif
 		public class ColumnHeaderCollection : IList, ICollection, IEnumerable
 		{
 			internal ArrayList list;
 			private ListView owner;
 
 			#region UIA Framework Events 
-#if NET_2_0
 			//NOTE:
 			//	We are using Reflection to add/remove internal events.
 			//	Class ListViewProvider uses the events when View is Details.
@@ -4818,7 +4570,6 @@ namespace System.Windows.Forms
 					eh (owner, args);
 			}
 
-#endif
 			#endregion UIA Framework Events 
 
 			#region Public Constructor
@@ -4847,7 +4598,6 @@ namespace System.Windows.Forms
 				}
 			}
 
-#if NET_2_0
 			public virtual ColumnHeader this [string key] {
 				get {
 					int idx = IndexOfKey (key);
@@ -4857,7 +4607,6 @@ namespace System.Windows.Forms
 					return (ColumnHeader) list [idx];
 				}
 			}
-#endif
 
 			bool ICollection.IsSynchronized {
 				get { return true; }
@@ -4883,28 +4632,20 @@ namespace System.Windows.Forms
 				int idx = list.Add (value);
 				owner.AddColumn (value, idx, true);
 
-#if NET_2_0
 				//UIA Framework event: Item Added
 				OnUIACollectionChangedEvent (new CollectionChangeEventArgs (CollectionChangeAction.Add, value));
-#endif
 
 				return idx;
 			}
 
-#if NET_2_0
 			public virtual ColumnHeader Add (string text, int width, HorizontalAlignment textAlign)
 			{
 				string str = text;
-#else
-			public virtual ColumnHeader Add (string str, int width, HorizontalAlignment textAlign)
-			{
-#endif
 				ColumnHeader colHeader = new ColumnHeader (this.owner, str, textAlign, width);
 				this.Add (colHeader);
 				return colHeader;
 			}
 
-#if NET_2_0
 			public virtual ColumnHeader Add (string text)
 			{
 				return Add (String.Empty, text);
@@ -4944,7 +4685,6 @@ namespace System.Windows.Forms
 				Add (colHeader);
 				return colHeader;
 			}
-#endif
 
 			public virtual void AddRange (ColumnHeader [] values)
 			{
@@ -4963,10 +4703,8 @@ namespace System.Windows.Forms
 				list.Clear ();
 				owner.ReorderColumns (new int [0], true);
 
-#if NET_2_0
 				//UIA Framework event: Items cleared
 				OnUIACollectionChangedEvent (new CollectionChangeEventArgs (CollectionChangeAction.Refresh, null));
-#endif
 
 			}
 
@@ -4975,12 +4713,10 @@ namespace System.Windows.Forms
 				return list.Contains (value);
 			}
 
-#if NET_2_0
 			public virtual bool ContainsKey (string key)
 			{
 				return IndexOfKey (key) != -1;
 			}
-#endif
 
 			public IEnumerator GetEnumerator ()
 			{
@@ -5042,7 +4778,6 @@ namespace System.Windows.Forms
 				return list.IndexOf (value);
 			}
 
-#if NET_2_0
 			public virtual int IndexOfKey (string key)
 			{
 				if (key == null || key.Length == 0)
@@ -5056,7 +4791,6 @@ namespace System.Windows.Forms
 
 				return -1;
 			}
-#endif
 
 			public void Insert (int index, ColumnHeader value)
 			{
@@ -5068,13 +4802,10 @@ namespace System.Windows.Forms
 				list.Insert (index, value);
 				owner.AddColumn (value, index, true);
 
-#if NET_2_0
 				//UIA Framework event: Item added
 				OnUIACollectionChangedEvent (new CollectionChangeEventArgs (CollectionChangeAction.Add, value));
-#endif
 			}
 
-#if NET_2_0
 			public void Insert (int index, string text)
 			{
 				Insert (index, String.Empty, text);
@@ -5112,16 +4843,10 @@ namespace System.Windows.Forms
 				colHeader.ImageKey = imageKey;
 				Insert (index, colHeader);
 			}
-#endif
 
-#if NET_2_0
 			public void Insert (int index, string text, int width, HorizontalAlignment textAlign)
 			{
 				string str = text;
-#else
-			public void Insert (int index, string str, int width, HorizontalAlignment textAlign)
-			{
-#endif
 				ColumnHeader colHeader = new ColumnHeader (this.owner, str, textAlign, width);
 				this.Insert (index, colHeader);
 			}
@@ -5149,20 +4874,16 @@ namespace System.Windows.Forms
 				column.InternalDisplayIndex = -1;
 				owner.ReorderColumns (display_indices, true);
 
-#if NET_2_0
 				//UIA Framework event: Item Removed
 				OnUIACollectionChangedEvent (new CollectionChangeEventArgs (CollectionChangeAction.Remove, column));
-#endif
 			}
 
-#if NET_2_0
 			public virtual void RemoveByKey (string key)
 			{
 				int idx = IndexOfKey (key);
 				if (idx != -1)
 					RemoveAt (idx);
 			}
-#endif
 
 			public virtual void RemoveAt (int index)
 			{
@@ -5177,19 +4898,14 @@ namespace System.Windows.Forms
 
 		}	// ColumnHeaderCollection
 
-#if NET_2_0
 		[ListBindable (false)]
-#endif
 		public class ListViewItemCollection : IList, ICollection, IEnumerable
 		{
 			private readonly ArrayList list;
 			private ListView owner;
-#if NET_2_0
 			private ListViewGroup group;
-#endif
 
 			#region UIA Framework Events 
-#if NET_2_0
 			//NOTE:
 			//	We are using Reflection to add/remove internal events.
 			//	Class ListViewProvider uses the events.
@@ -5219,7 +4935,6 @@ namespace System.Windows.Forms
 					eh (owner, args);
 			}
 
-#endif
 			#endregion UIA Framework Events 
 
 			// The collection can belong to a ListView (main) or to a ListViewGroup (sub-collection)
@@ -5234,22 +4949,18 @@ namespace System.Windows.Forms
 			}
 			#endregion	// Public Constructor
 
-#if NET_2_0
 			internal ListViewItemCollection (ListView owner, ListViewGroup group) : this (owner)
 			{
 				this.group = group;
 				is_main_collection = false;
 			}
-#endif
 
 			#region Public Properties
 			[Browsable (false)]
 			public int Count {
 				get {
-#if NET_2_0
 					if (owner != null && owner.VirtualMode)
 						return owner.VirtualListSize;
-#endif
 
 					return list.Count; 
 				}
@@ -5259,38 +4970,22 @@ namespace System.Windows.Forms
 				get { return false; }
 			}
 
-#if NET_2_0
 			public virtual ListViewItem this [int index] {
-#else
-			public virtual ListViewItem this [int displayIndex] {
-#endif
 				get {
-#if !NET_2_0
-					int index = displayIndex;
-#endif
-
 					if (index < 0 || index >= Count)
 						throw new ArgumentOutOfRangeException ("index");
 
-#if NET_2_0
 					if (owner != null && owner.VirtualMode)
 						return RetrieveVirtualItemFromOwner (index);
-#endif
 					return (ListViewItem) list [index];
 				}
 
 				set {
-#if !NET_2_0
-					int index = displayIndex;
-#endif
-
 					if (index < 0 || index >= Count)
 						throw new ArgumentOutOfRangeException ("index");
 
-#if NET_2_0
 					if (owner != null && owner.VirtualMode)
 						throw new InvalidOperationException ();
-#endif
 
 					if (list.Contains (value))
 						throw new ArgumentException ("An item cannot be added more than once. To add an item again, you need to clone it.", "value");
@@ -5300,33 +4995,26 @@ namespace System.Windows.Forms
 
 					if (is_main_collection)
 						value.Owner = owner;
-#if NET_2_0
 					else {
 						if (value.Group != null)
 							value.Group.Items.Remove (value);
 
 						value.SetGroup (group);
 					}
-#endif
 
-#if NET_2_0
 					//UIA Framework event: Item Replaced
 					OnUIACollectionChangedEvent (new CollectionChangeEventArgs (CollectionChangeAction.Remove, list [index]));
-#endif
 
 					list [index] = value;
 
 					CollectionChanged (true);
 
-#if NET_2_0
 					//UIA Framework event: Item Replaced
 					OnUIACollectionChangedEvent (new CollectionChangeEventArgs (CollectionChangeAction.Add, value));
-#endif
 
 				}
 			}
 
-#if NET_2_0
 			public virtual ListViewItem this [string key] {
 				get {
 					int idx = IndexOfKey (key);
@@ -5336,7 +5024,6 @@ namespace System.Windows.Forms
 					return this [idx];
 				}
 			}
-#endif
 
 			bool ICollection.IsSynchronized {
 				get { return true; }
@@ -5353,10 +5040,8 @@ namespace System.Windows.Forms
 			object IList.this [int index] {
 				get { return this [index]; }
 				set {
-#if NET_2_0
 					//UIA Framework event: Item Replaced
 					OnUIACollectionChangedEvent (new CollectionChangeEventArgs (CollectionChangeAction.Remove, this [index]));
-#endif
 
 					if (value is ListViewItem)
 						this [index] = (ListViewItem) value;
@@ -5364,10 +5049,8 @@ namespace System.Windows.Forms
 						this [index] = new ListViewItem (value.ToString ());
 
 					OnChange ();
-#if NET_2_0
 					//UIA Framework event: Item Replaced
 					OnUIACollectionChangedEvent (new CollectionChangeEventArgs (CollectionChangeAction.Add, value));
-#endif
 				}
 			}
 			#endregion	// Public Properties
@@ -5375,10 +5058,8 @@ namespace System.Windows.Forms
 			#region Public Methods
 			public virtual ListViewItem Add (ListViewItem value)
 			{
-#if NET_2_0
 				if (owner != null && owner.VirtualMode)
 					throw new InvalidOperationException ();
-#endif
 
 				AddItem (value);
 
@@ -5386,10 +5067,8 @@ namespace System.Windows.Forms
 				if (is_main_collection || value.ListView != null)
 					CollectionChanged (true);
 
-#if NET_2_0
 				//UIA Framework event: Item Added
 				OnUIACollectionChangedEvent (new CollectionChangeEventArgs (CollectionChangeAction.Add, value));
-#endif
 
 				return value;
 			}
@@ -5406,7 +5085,6 @@ namespace System.Windows.Forms
 				return this.Add (item);
 			}
 
-#if NET_2_0
 			public virtual ListViewItem Add (string text, string imageKey)
 			{
 				ListViewItem item = new ListViewItem (text, imageKey);
@@ -5426,32 +5104,21 @@ namespace System.Windows.Forms
 				item.Name = key;
 				return this.Add (item);
 			}
-#endif
 
-#if NET_2_0
 			public void AddRange (ListViewItem [] items)
 			{
-#else
-			public void AddRange (ListViewItem [] values)
-			{
-				ListViewItem [] items = values;
-#endif
 				if (items == null)
 					throw new ArgumentNullException ("Argument cannot be null!", "items");
-#if NET_2_0
 				if (owner != null && owner.VirtualMode)
 					throw new InvalidOperationException ();
-#endif
 
 				owner.BeginUpdate ();
 				
 				foreach (ListViewItem item in items) {
 					AddItem (item);
 
-#if NET_2_0
 					//UIA Framework event: Item Added
 					OnUIACollectionChangedEvent (new CollectionChangeEventArgs (CollectionChangeAction.Add, item));
-#endif
 				}
 
 				owner.EndUpdate ();
@@ -5459,7 +5126,6 @@ namespace System.Windows.Forms
 				CollectionChanged (true);
 			}
 
-#if NET_2_0
 			public void AddRange (ListViewItemCollection items)
 			{
 				if (items == null)
@@ -5469,46 +5135,36 @@ namespace System.Windows.Forms
 				items.CopyTo (itemArray,0);
 				this.AddRange (itemArray);
 			}
-#endif
 
 			public virtual void Clear ()
 			{
-#if NET_2_0
 				if (owner != null && owner.VirtualMode)
 					throw new InvalidOperationException ();
-#endif
 				if (is_main_collection && owner != null) {
 					owner.SetFocusedItem (-1);
 					owner.h_scroll.Value = owner.v_scroll.Value = 0;
 
-#if NET_2_0
 					// first remove any item in the groups that *are* part of this LV too
 					foreach (ListViewGroup group in owner.groups)
 						group.Items.ClearItemsWithSameListView ();
-#endif
 				
 					foreach (ListViewItem item in list) {
 						owner.item_control.CancelEdit (item);
 						item.Owner = null;
 					}
 				}
-#if NET_2_0
 				else
 					foreach (ListViewItem item in list)
 						item.SetGroup (null);
-#endif
 
 				list.Clear ();
 				CollectionChanged (false);
 
-#if NET_2_0
 				//UIA Framework event: Items Removed
 				OnUIACollectionChangedEvent (new CollectionChangeEventArgs (CollectionChangeAction.Refresh, null));
-#endif
 
 			}
 
-#if NET_2_0
 			// This method is intended to be used from ListViewGroup.Items, not from ListView.Items,
 			// added for performance reasons (avoid calling manually Remove for every item on ListViewGroup.Items)
 			void ClearItemsWithSameListView ()
@@ -5529,26 +5185,22 @@ namespace System.Windows.Forms
 					counter--;
 				}
 			}
-#endif
 
 			public bool Contains (ListViewItem item)
 			{
 				return IndexOf (item) != -1;
 			}
 
-#if NET_2_0
 			public virtual bool ContainsKey (string key)
 			{
 				return IndexOfKey (key) != -1;
 			}
-#endif
 
 			public void CopyTo (Array dest, int index)
 			{
 				list.CopyTo (dest, index);
 			}
 
-#if NET_2_0
 			public ListViewItem [] Find (string key, bool searchAllSubItems)
 			{
 				if (key == null)
@@ -5567,14 +5219,11 @@ namespace System.Windows.Forms
 
 				return retval;
 			}
-#endif
 
 			public IEnumerator GetEnumerator ()
 			{
-#if NET_2_0
 				if (owner != null && owner.VirtualMode)
 					throw new InvalidOperationException ();
-#endif
 
 				// This enumerator makes a copy of the collection so
 				// it can be deleted from in a foreach
@@ -5586,10 +5235,8 @@ namespace System.Windows.Forms
 				int result;
 				ListViewItem li;
 
-#if NET_2_0
 				if (owner != null && owner.VirtualMode)
 					throw new InvalidOperationException ();
-#endif
 
 				if (item is ListViewItem) {
 					li = (ListViewItem) item;
@@ -5608,10 +5255,8 @@ namespace System.Windows.Forms
 				result = list.Add (li);
 				CollectionChanged (true);
 
-#if NET_2_0
 				//UIA Framework event: Item Added
 				OnUIACollectionChangedEvent (new CollectionChangeEventArgs (CollectionChangeAction.Add, li));
-#endif
 
 				return result;
 			}
@@ -5633,10 +5278,8 @@ namespace System.Windows.Forms
 				else
 					this.Insert (index, item.ToString ());
 
-#if NET_2_0
 				//UIA Framework event: Item Added
 				OnUIACollectionChangedEvent (new CollectionChangeEventArgs (CollectionChangeAction.Add, this [index]));
-#endif
 			}
 
 			void IList.Remove (object item)
@@ -5646,7 +5289,6 @@ namespace System.Windows.Forms
 
 			public int IndexOf (ListViewItem item)
 			{
-#if NET_2_0
 				if (owner != null && owner.VirtualMode) {
 					for (int i = 0; i < Count; i++)
 						if (RetrieveVirtualItemFromOwner (i) == item)
@@ -5654,12 +5296,10 @@ namespace System.Windows.Forms
 
 					return -1;
 				}
-#endif
 				
 				return list.IndexOf (item);
 			}
 
-#if NET_2_0
 			public virtual int IndexOfKey (string key)
 			{
 				if (key == null || key.Length == 0)
@@ -5673,17 +5313,14 @@ namespace System.Windows.Forms
 
 				return -1;
 			}
-#endif
 
 			public ListViewItem Insert (int index, ListViewItem item)
 			{
 				if (index < 0 || index > list.Count)
 					throw new ArgumentOutOfRangeException ("index");
 
-#if NET_2_0
 				if (owner != null && owner.VirtualMode)
 					throw new InvalidOperationException ();
-#endif
 
 				if (list.Contains (item))
 					throw new ArgumentException ("An item cannot be added more than once. To add an item again, you need to clone it.", "item");
@@ -5693,14 +5330,12 @@ namespace System.Windows.Forms
 
 				if (is_main_collection)
 					item.Owner = owner;
-#if NET_2_0
 				else {
 					if (item.Group != null)
 						item.Group.Items.Remove (item);
 
 					item.SetGroup (group);
 				}
-#endif
 
 				list.Insert (index, item);
 
@@ -5710,10 +5345,8 @@ namespace System.Windows.Forms
 				// force an update of the selected info if the new item is selected.
 				if (item.Selected)
 					item.SetSelectedCore (true);
-#if NET_2_0
 				//UIA Framework event: Item Added
 				OnUIACollectionChangedEvent (new CollectionChangeEventArgs (CollectionChangeAction.Add, item));
-#endif
 
 				return item;
 			}
@@ -5728,7 +5361,6 @@ namespace System.Windows.Forms
 				return this.Insert (index, new ListViewItem (text, imageIndex));
 			}
 
-#if NET_2_0
 			public ListViewItem Insert (int index, string text, string imageKey)
 			{
 				ListViewItem lvi = new ListViewItem (text, imageKey);
@@ -5748,14 +5380,11 @@ namespace System.Windows.Forms
 				lvi.Name = key;
 				return Insert (index, lvi);
 			}
-#endif
 
 			public virtual void Remove (ListViewItem item)
 			{
-#if NET_2_0
 				if (owner != null && owner.VirtualMode)
 					throw new InvalidOperationException ();
-#endif
 
 				int idx = list.IndexOf (item);
 				if (idx != -1)
@@ -5767,10 +5396,8 @@ namespace System.Windows.Forms
 				if (index < 0 || index >= Count)
 					throw new ArgumentOutOfRangeException ("index");
 
-#if NET_2_0
 				if (owner != null && owner.VirtualMode)
 					throw new InvalidOperationException ();
-#endif
 
 				ListViewItem item = (ListViewItem) list [index];
 
@@ -5787,36 +5414,28 @@ namespace System.Windows.Forms
 
 				list.RemoveAt (index);
 
-#if NET_2_0
 				if (is_main_collection) {
 					item.Owner = null;
 					if (item.Group != null)
 						item.Group.Items.Remove (item);
 				} else
 					item.SetGroup (null);
-#else
-				item.Owner = null;
-#endif
 
 				CollectionChanged (false);
 				if (selection_changed && owner != null)
 					owner.OnSelectedIndexChanged (EventArgs.Empty);
 
 
-#if NET_2_0
 				//UIA Framework event: Item Removed 
 				OnUIACollectionChangedEvent (new CollectionChangeEventArgs (CollectionChangeAction.Remove, item));
-#endif
 			}
 
-#if NET_2_0
 			public virtual void RemoveByKey (string key)
 			{
 				int idx = IndexOfKey (key);
 				if (idx != -1)
 					RemoveAt (idx);
 			}
-#endif
 
 			#endregion	// Public Methods
 
@@ -5829,7 +5448,6 @@ namespace System.Windows.Forms
 				}
 			}
 
-#if NET_2_0
 			internal ListViewGroup Group {
 				get {
 					return group;
@@ -5838,7 +5456,6 @@ namespace System.Windows.Forms
 					group = value;
 				}
 			}
-#endif
 
 			void AddItem (ListViewItem value)
 			{
@@ -5849,14 +5466,12 @@ namespace System.Windows.Forms
 					throw new ArgumentException ("Cannot add or insert the item '" + value.Text + "' in more than one place. You must first remove it from its current location or clone it.", "value");
 				if (is_main_collection)
 					value.Owner = owner;
-#if NET_2_0
 				else {
 					if (value.Group != null)
 						value.Group.Items.Remove (value);
 
 					value.SetGroup (group);
 				}
-#endif
 
 				list.Add (value);
 
@@ -5876,7 +5491,6 @@ namespace System.Windows.Forms
 				}
 			}
 
-#if NET_2_0
 			ListViewItem RetrieveVirtualItemFromOwner (int displayIndex)
 			{
 				RetrieveVirtualItemEventArgs args = new RetrieveVirtualItemEventArgs (displayIndex);
@@ -5889,7 +5503,6 @@ namespace System.Windows.Forms
 
 				return retval;
 			}
-#endif
 
 			internal event CollectionChangedHandler Changed;
 
@@ -5912,9 +5525,7 @@ namespace System.Windows.Forms
 		//
 		// In virtual mode, SelectedIndexCollection directly saves the selection
 		// information, instead of getting it from Items, making List read-and-write
-#if NET_2_0
 		[ListBindable (false)]
-#endif
 		public class SelectedIndexCollection : IList, ICollection, IEnumerable
 		{
 			private readonly ListView owner;
@@ -5941,11 +5552,7 @@ namespace System.Windows.Forms
 
 			public bool IsReadOnly {
 				get { 
-#if NET_2_0
 					return false;
-#else
-					return true; 
-#endif
 				}
 			}
 
@@ -5968,11 +5575,7 @@ namespace System.Windows.Forms
 
 			bool IList.IsFixedSize {
 				get { 
-#if NET_2_0
 					return false;
-#else
-					return true;
-#endif
 				}
 			}
 
@@ -5983,7 +5586,6 @@ namespace System.Windows.Forms
 			#endregion	// Public Properties
 
 			#region Public Methods
-#if NET_2_0
 			public int Add (int itemIndex)
 			{
 				if (itemIndex < 0 || itemIndex >= owner.Items.Count)
@@ -5999,14 +5601,8 @@ namespace System.Windows.Forms
 
 				return List.Count;
 			}
-#endif
 
-#if NET_2_0
-			public 
-#else
-			internal
-#endif	
-			void Clear ()
+			public void Clear ()
 			{
 				if (!owner.is_selection_available)
 					return;
@@ -6078,7 +5674,6 @@ namespace System.Windows.Forms
 				return List.IndexOf (selectedIndex);
 			}
 
-#if NET_2_0
 			public void Remove (int itemIndex)
 			{
 				if (itemIndex < 0 || itemIndex >= owner.Items.Count)
@@ -6086,16 +5681,13 @@ namespace System.Windows.Forms
 
 				owner.Items [itemIndex].Selected = false;
 			}
-#endif
 			#endregion	// Public Methods
 
 			internal ArrayList List {
 				get {
 					if (list == null) {
 						list = new ArrayList ();
-#if NET_2_0
 						if (!owner.VirtualMode)
-#endif
 						for (int i = 0; i < owner.Items.Count; i++) {
 							if (owner.Items [i].Selected)
 								list.Add (i);
@@ -6116,7 +5708,6 @@ namespace System.Windows.Forms
 				Reset ();
 			}
 
-#if NET_2_0
 			internal void RemoveIndex (int index)
 			{
 				int idx = List.BinarySearch (index);
@@ -6144,13 +5735,10 @@ namespace System.Windows.Forms
 
 				List.Insert (iMin, index);
 			}
-#endif
 
 		}	// SelectedIndexCollection
 
-#if NET_2_0
 		[ListBindable (false)]
-#endif
 		public class SelectedListViewItemCollection : IList, ICollection, IEnumerable
 		{
 			private readonly ListView owner;
@@ -6184,7 +5772,6 @@ namespace System.Windows.Forms
 				}
 			}
 
-#if NET_2_0
 			public virtual ListViewItem this [string key] {
 				get {
 					int idx = IndexOfKey (key);
@@ -6194,7 +5781,6 @@ namespace System.Windows.Forms
 					return this [idx];
 				}
 			}
-#endif
 
 			bool ICollection.IsSynchronized {
 				get { return false; }
@@ -6225,12 +5811,10 @@ namespace System.Windows.Forms
 				return IndexOf (item) != -1;
 			}
 
-#if NET_2_0
 			public virtual bool ContainsKey (string key)
 			{
 				return IndexOfKey (key) != -1;
 			}
-#endif
 
 			public void CopyTo (Array dest, int index)
 			{
@@ -6301,7 +5885,6 @@ namespace System.Windows.Forms
 				return -1;
 			}
 
-#if NET_2_0
 			public virtual int IndexOfKey (string key)
 			{
 				if (!owner.is_selection_available || key == null || key.Length == 0)
@@ -6315,7 +5898,6 @@ namespace System.Windows.Forms
 
 				return -1;
 			}
-#endif
 			#endregion	// Public Methods
 
 		}	// SelectedListViewItemCollection
@@ -6355,7 +5937,6 @@ namespace System.Windows.Forms
 		}
 
 		#endregion // Subclasses
-#if NET_2_0
 		protected override void OnResize (EventArgs e)
 		{
 			base.OnResize (e);
@@ -6435,19 +6016,6 @@ namespace System.Windows.Forms
 			cwceh (this, changing);
 			return !changing.Cancel;
 		}
-#else
-		//
-		// 1.0 profile based implementation
-		//
-		bool CanProceedWithResize (ColumnHeader col, int width)
-		{
-			return true;
-		}
-
-		void RaiseColumnWidthChanged (int resize_column)
-		{
-		}
-#endif
 
 		internal void RaiseColumnWidthChanged (ColumnHeader column)
 		{
@@ -6455,7 +6023,6 @@ namespace System.Windows.Forms
 			RaiseColumnWidthChanged (index);
 		}
 
-#if NET_2_0
 		
 		#region UIA Framework: Methods, Properties and Events
 		
@@ -6575,6 +6142,5 @@ namespace System.Windows.Forms
 
 		#endregion // UIA Framework: Methods, Properties and Events
 
-#endif
 	}
 }
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/MimeIcon.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/MimeIcon.cs
index c45f3b5..ae3622b 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/MimeIcon.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/MimeIcon.cs
@@ -466,10 +466,17 @@ namespace System.Windows.Forms
 				Init ();
 			
 			Uri uri = new Uri (file_name);
-			
-			string icon = gnome_icon_lookup (default_icon_theme, IntPtr.Zero, uri.AbsoluteUri,
-							 null, IntPtr.Zero, mime_type,
-							 GnomeIconLookupFlags.GNOME_ICON_LOOKUP_FLAGS_NONE, IntPtr.Zero);
+	
+			string icon;
+
+			try {
+				icon = gnome_icon_lookup (default_icon_theme, IntPtr.Zero, uri.AbsoluteUri,
+							  null, IntPtr.Zero, mime_type,
+							  GnomeIconLookupFlags.GNOME_ICON_LOOKUP_FLAGS_NONE, IntPtr.Zero);
+			} catch {
+				// If libgnomeui is not installed, in preparation for Gnome 3
+				return null;
+			}
 			
 			IntPtr error = IntPtr.Zero;
 			IntPtr pixbuf = gtk_icon_theme_load_icon (default_icon_theme, icon, size,
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/NotifyIcon.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/NotifyIcon.cs
index 0a71465..bb98470 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/NotifyIcon.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/NotifyIcon.cs
@@ -197,7 +197,9 @@ namespace System.Windows.Forms {
 
 			internal override void OnPaintInternal (PaintEventArgs e) {
 				if (owner.icon != null) {
-					e.Graphics.FillRectangle(ThemeEngine.Current.ResPool.GetSolidBrush(SystemColors.Window), rect);
+					// At least in Gnome, the background of the panel is the same as the Menu, so we go for it
+					// instead of (most of the time) plain white.
+					e.Graphics.FillRectangle(ThemeEngine.Current.ResPool.GetSolidBrush(SystemColors.Menu), rect);
 					e.Graphics.DrawImage(owner.icon_bitmap,
 							     rect,
 							     new Rectangle (0, 0, owner.icon_bitmap.Width, owner.icon_bitmap.Height),
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/NumericUpDown.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/NumericUpDown.cs
index bab8310..a6415b7 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/NumericUpDown.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/NumericUpDown.cs
@@ -38,11 +38,9 @@ using System.Windows.Forms;
 namespace System.Windows.Forms {
 	[DefaultEvent("ValueChanged")]
 	[DefaultProperty("Value")]
-#if NET_2_0
 	[DefaultBindingProperty ("Value")]
 	[ClassInterface (ClassInterfaceType.AutoDispatch)]
 	[ComVisible (true)]
-#endif
 	public class NumericUpDown : UpDownBase, ISupportInitialize {
 		#region Local Variables
 		private bool	suppress_validation;
@@ -55,15 +53,12 @@ namespace System.Windows.Forms {
 		private decimal	dvalue;
 		
 
-#if NET_2_0
 		NumericUpDownAccelerationCollection accelerations;
 //		private long buttonPressedTicks;
 		//private bool isSpinning;
-#endif
 		#endregion	// Local Variables
 
 		#region UIA FrameWork Events
-#if NET_2_0
 		static object UIAMinimumChangedEvent = new object ();
 
 		internal event EventHandler UIAMinimumChanged {
@@ -105,7 +100,6 @@ namespace System.Windows.Forms {
 			if (eh != null)
 				eh (this, e);
 		}
-#endif
 		#endregion
 
 		#region Public Constructors
@@ -122,87 +116,8 @@ namespace System.Windows.Forms {
 		}
 		#endregion	// Public Constructors
 
-		#region Private Methods
-		void wide_number_multiply_by_10(int[] number) {
-			long carry = 0;
-
-			for (int i=0; i < number.Length; i++) {
-				long multiplication = unchecked(carry + 10 * (long)(uint)number[i]);
-
-				carry = multiplication >> 32;
-
-				number[i] = unchecked((int)multiplication);
-			}
-		}
-
-		void wide_number_multiply_by_16(int[] number) {
-			int carry = 0;
-
-			for (int i=0; i < number.Length; i++) {
-				int multiplication = unchecked(carry | (number[i] << 4));
-
-				carry = (number[i] >> 28) & 0x0F;
-
-				number[i] = multiplication;
-			}
-		}
-
-		void wide_number_divide_by_16(int[] number) {
-			int carry = 0;
-
-			for (int i=number.Length - 1; i >= 0; i--) {
-				int division = unchecked(carry | ((number[i] >> 4) & 0x0FFFFFFF));
-
-				carry = (number[i] << 28);
-
-				number[i] = division;
-			}
-		}
-
-		bool wide_number_less_than(int[] left, int[] right) {
-			unchecked {
-				for (int i=left.Length - 1; i >= 0; i--) {
-					uint leftvalue = (uint)left[i];
-					uint rightvalue = (uint)right[i];
-
-					if (leftvalue > rightvalue)
-						return false;
-					if (leftvalue < rightvalue)
-						return true;
-				}
-			}
-
-			// equal
-			return false;
-		}
-
-		void wide_number_subtract(int[] subtrahend, int[] minuend) {
-			long carry = 0;
-
-			unchecked {
-				for (int i=0; i < subtrahend.Length; i++) {
-					long subtrahendvalue = (uint)subtrahend[i];
-					long minuendvalue = (uint)minuend[i];
-
-					long result = subtrahendvalue - minuendvalue + carry;
-
-					if (result < 0) {
-						carry = -1;
-						result -= int.MinValue;
-						result -= int.MinValue;
-					}
-					else
-						carry = 0;
-
-					subtrahend[i] = unchecked((int)result);
-				}
-			}
-		}
-		#endregion	// Private Methods
-
 		#region Public Instance Properties
 
-#if NET_2_0	
 		[Browsable (false)]
 		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
 		public NumericUpDownAccelerationCollection Accelerations {
@@ -212,7 +127,6 @@ namespace System.Windows.Forms {
 				return accelerations;
 			}
 		}
-#endif
 
 		[DefaultValue(0)]
 		public int DecimalPlaces {
@@ -251,10 +165,8 @@ namespace System.Windows.Forms {
 
 				increment = value;
 
-#if NET_2_0
 				// UIA Framework Event: SmallChange Changed
 				OnUIASmallChangeChanged (EventArgs.Empty);
-#endif
 			}
 		}
 
@@ -273,10 +185,8 @@ namespace System.Windows.Forms {
 				if (dvalue > maximum)
 					Value = maximum;
 
-#if NET_2_0
 				// UIA Framework Event: Maximum Changed
 				OnUIAMaximumChanged (EventArgs.Empty);
-#endif
 			}
 		}
 
@@ -295,14 +205,11 @@ namespace System.Windows.Forms {
 				if (dvalue < minimum)
 					Value = minimum;
 
-#if NET_2_0
 				// UIA Framework Event: Minimum Changed
 				OnUIAMinimumChanged (EventArgs.Empty);
-#endif
 			}
 		}
 
-#if NET_2_0
 		[Browsable (false)]
 		[EditorBrowsable (EditorBrowsableState.Never)]
 		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
@@ -310,7 +217,6 @@ namespace System.Windows.Forms {
 			get { return Padding.Empty; }
 			set { }
 		}
-#endif
 
 		[Bindable(false)]
 		[Browsable(false)]
@@ -350,11 +256,7 @@ namespace System.Windows.Forms {
 			set {
 				if (value != dvalue) {
 					if (!suppress_validation && ((value < minimum) || (value > maximum))) {
-#if NET_2_0
 						throw new ArgumentOutOfRangeException ("value", "NumericUpDown.Value must be within the specified Minimum and Maximum values");
-#else
-						throw new ArgumentException ("NumericUpDown.Value must be within the specified Minimum and Maximum values", "value");						
-#endif
 					}
 
 					dvalue = value;
@@ -387,10 +289,8 @@ namespace System.Windows.Forms {
 
 			Value = Math.Max (minimum, unchecked (dvalue - increment));
 
-#if NET_2_0
 			// UIA Framework Event: DownButton Click
 			OnUIADownButtonClick (EventArgs.Empty);
-#endif
 		}
 
 		public override void UpButton() {
@@ -400,10 +300,8 @@ namespace System.Windows.Forms {
 
 			Value = Math.Min (maximum, unchecked (dvalue + increment));
 
-#if NET_2_0
 			// UIA Framework Event: UpButton Click
 			OnUIAUpButtonClick (EventArgs.Empty);
-#endif
 		}
 		#endregion	// Public Instance Methods
 
@@ -502,59 +400,10 @@ namespace System.Windows.Forms {
 				Text = dvalue.ToString (format_string, CultureInfo.CurrentCulture);
 
 			} else {
-				// Decimal.ToString doesn't know the "X" formatter, and
-				// converting it to an int is narrowing, so do it
-				// manually...
-
-				int[] bits = decimal.GetBits (dvalue);
-
-				bool negative = (bits[3] < 0);
-
-				int scale = (bits[3] >> 16) & 0x1F;
-
-				bits[3] = 0;
-
-				int[] radix = new int[4];
-
-				radix[0] = 1;
-
-				for (int i = 0; i < scale; i++)
-					wide_number_multiply_by_10 (radix);
-
-				int num_chars = 0;
-
-				while (!wide_number_less_than (bits, radix)) {
-					num_chars++;
-					wide_number_multiply_by_16 (radix);
-				}
-
-				if (num_chars == 0) {
-					Text = "0";
-				}
-
-				StringBuilder chars = new StringBuilder ();
-
-				if (negative)
-					chars.Append ('-');
-
-				for (int i = 0; i < num_chars; i++) {
-					int digit = 0;
-
-					wide_number_divide_by_16 (radix);
-
-					while (!wide_number_less_than (bits, radix)) { // greater than or equals
-						digit++;
-						wide_number_subtract (bits, radix);
-					}
-
-					if (digit < 10) {
-						chars.Append ((char) ('0' + digit));
-					} else {
-						chars.Append ((char) ('A' + digit - 10));
-					}
-				}
-
-				Text = chars.ToString ();
+				// Cast to Int64 to be able to use the "X" formatter.
+				// If the value is below Int64.MinValue or above Int64.MaxValue,
+				// then an OverflowException will be thrown, as with .NET.
+				Text = ((Int64)dvalue).ToString("X", CultureInfo.CurrentCulture);
 			}
 		}
 
@@ -564,7 +413,6 @@ namespace System.Windows.Forms {
 			UpdateEditText ();
 		}
 
-#if NET_2_0
 		protected override void OnLostFocus(EventArgs e) {
 			base.OnLostFocus(e);
 			if (UserEdit)
@@ -583,18 +431,15 @@ namespace System.Windows.Forms {
 //			isSpinning = true;
 			base.OnKeyDown (e);
 		}
-#endif
 		#endregion	// Protected Instance Methods
 
 		#region Events
-#if NET_2_0
 		[Browsable (false)]
 		[EditorBrowsable (EditorBrowsableState.Never)]
 		public new event EventHandler PaddingChanged {
 			add { base.PaddingChanged += value; }
 			remove { base.PaddingChanged -= value; }
 		}
-#endif
 
 		static object ValueChangedEvent = new object ();
 
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/PageSetupDialog.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/PageSetupDialog.cs
index 8fbb569..5edf93e 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/PageSetupDialog.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/PageSetupDialog.cs
@@ -33,6 +33,7 @@ using System.Drawing;
 using System.Drawing.Printing;
 using System.Globalization;
 using System.Reflection;
+using System.Text;
 
 namespace System.Windows.Forms
 {
@@ -454,7 +455,12 @@ namespace System.Windows.Forms
 		}
 
 		static bool UseYardPound {
-			get { return !RegionInfo.CurrentRegion.IsMetric; }
+			get {
+				var current = RegionInfo.CurrentRegion;
+				if (current == null)
+					return true;
+				return !current.IsMetric;
+			}
 		}
 
 		// .Net uses PrinterSettings property if it is not null.
@@ -856,7 +862,7 @@ namespace System.Windows.Forms
 
 			bool loaded = false;
 
-			System.Text.StringBuilder sb;
+			StringBuilder sb;
 			float displayHeight;
 			new Font font;
 
@@ -882,7 +888,7 @@ namespace System.Windows.Forms
 
 			public PagePreview ()
 			{
-				sb = new System.Text.StringBuilder ();
+				sb = new StringBuilder ();
 				for (int i = 0; i < 4; i++) {
 					sb.Append ("blabla piu piublapiu haha lai dlais dhlçai shd ");
 					sb.Append ("çoasd çlaj sdç\r\n lajsd lçaisdj lçillaisd lahs dli");
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/RichTextBox.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/RichTextBox.cs
index 1db7f29..01edb7e 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/RichTextBox.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/RichTextBox.cs
@@ -37,12 +37,10 @@ using System.Runtime.InteropServices;
 using RTF=System.Windows.Forms.RTF;
 
 namespace System.Windows.Forms {
-#if NET_2_0
 	[ClassInterface (ClassInterfaceType.AutoDispatch)]
 	[Docking (DockingBehavior.Ask)]
 	[ComVisible (true)]
 	[Designer ("System.Windows.Forms.Design.RichTextBoxDesigner, " + Consts.AssemblySystem_Design, "System.ComponentModel.Design.IDesigner")]
-#endif
 	public class RichTextBox : TextBoxBase {
 		#region Local Variables
 		internal bool		auto_word_select;
@@ -63,12 +61,10 @@ namespace System.Windows.Forms {
 		private int		rtf_cursor_y;
 		private int		rtf_chars;
 
-#if NET_2_0
 		private bool		enable_auto_drag_drop;
 		private RichTextBoxLanguageOptions language_option;
 		private bool		rich_text_shortcuts_enabled;
 		private Color		selection_back_color;
-#endif
 		#endregion	// Local Variables
 
 		#region Public Constructors
@@ -94,20 +90,16 @@ namespace System.Windows.Forms {
 			LostFocus += new EventHandler(RichTextBox_LostFocus);
 			GotFocus += new EventHandler(RichTextBox_GotFocus);
 			BackColor = ThemeEngine.Current.ColorWindow;
-#if NET_2_0
 			backcolor_set = false;
 			language_option = RichTextBoxLanguageOptions.AutoFontSizeAdjust;
 			rich_text_shortcuts_enabled = true;
 			selection_back_color = DefaultBackColor;
-#endif
 			ForeColor = ThemeEngine.Current.ColorWindowText;
 
 			base.HScrolled += new EventHandler(RichTextBox_HScrolled);
 			base.VScrolled += new EventHandler(RichTextBox_VScrolled);
 
-#if NET_2_0
 			SetStyle (ControlStyles.StandardDoubleClick, false);
-#endif
 		}
 		#endregion	// Public Constructors
 
@@ -121,14 +113,10 @@ namespace System.Windows.Forms {
 		internal override Color ChangeBackColor (Color backColor)
 		{
 			if (backColor == Color.Empty) {
-#if NET_2_0
 				backcolor_set = false;
 				if (!ReadOnly) {
 					backColor = SystemColors.Window;
 				}
-#else
-				backColor = SystemColors.Window;
-#endif
 			}
 			return backColor;
 		}
@@ -148,9 +136,7 @@ namespace System.Windows.Forms {
 		#endregion	// Private & Internal Methods
 
 		#region Public Instance Properties
-#if NET_2_0
 		[Browsable (false)]
-#endif
 		public override bool AllowDrop {
 			get {
 				return base.AllowDrop;
@@ -162,14 +148,10 @@ namespace System.Windows.Forms {
 		}
 
 		[DefaultValue(false)]
-#if NET_2_0
 		[DesignerSerializationVisibility (DesignerSerializationVisibility.Visible)]
 		[RefreshProperties (RefreshProperties.Repaint)]
 		[EditorBrowsable (EditorBrowsableState.Never)]
 		[Browsable (false)]
-#else
-		[Localizable(true)]
-#endif
 		public override bool AutoSize {
 			get {
 				return auto_size;
@@ -194,14 +176,12 @@ namespace System.Windows.Forms {
 			set { base.BackgroundImage = value; }
 		}
 
-#if NET_2_0
 		[Browsable (false)]
 		[EditorBrowsable (EditorBrowsableState.Never)]
 		public override ImageLayout BackgroundImageLayout {
 			get { return base.BackgroundImageLayout; }
 			set { base.BackgroundImageLayout = value; }
 		}
-#endif
 
 		[DefaultValue(0)]
 		[Localizable(true)]
@@ -229,14 +209,12 @@ namespace System.Windows.Forms {
 			set { base.EnableLinks = value; }
 		}
 
-#if NET_2_0
 		[MonoTODO ("Stub, does nothing")]
 		[DefaultValue (false)]
 		public bool EnableAutoDragDrop {
 			get { return enable_auto_drag_drop; }
 			set { enable_auto_drag_drop = value; }
 		}
-#endif
 
 		public override Font Font {
 			get {
@@ -274,7 +252,6 @@ namespace System.Windows.Forms {
 			}
 		}
 
-#if NET_2_0
 		[MonoTODO ("Stub, does nothing")]
 		[Browsable (false)]
 		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
@@ -282,7 +259,6 @@ namespace System.Windows.Forms {
 			get { return language_option; }
 			set { language_option = value; }
 		}
-#endif
 
 		[DefaultValue(Int32.MaxValue)]
 		public override int MaxLength {
@@ -309,7 +285,6 @@ namespace System.Windows.Forms {
 			}
 		}
 
-#if NET_2_0
 		[MonoTODO ("Stub, does nothing")]
 		[Browsable (false)]
 		[DefaultValue (true)]
@@ -318,7 +293,6 @@ namespace System.Windows.Forms {
 			get { return rich_text_shortcuts_enabled; }
 			set { rich_text_shortcuts_enabled = value; }
 		}
-#endif
 
 		[DefaultValue(0)]
 		[Localizable(true)]
@@ -336,11 +310,7 @@ namespace System.Windows.Forms {
 
 		[Browsable(false)]
 		[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
-#if NET_2_0
 		[RefreshProperties (RefreshProperties.All)]
-#else
-		[DefaultValue("")]
-#endif
 		public string Rtf {
 			get {
 				Line		start_line;
@@ -503,7 +473,6 @@ namespace System.Windows.Forms {
 			}
 		}
 
-#if NET_2_0
 		[MonoTODO ("Stub, does nothing")]
 		[Browsable (false)]
 		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
@@ -511,7 +480,6 @@ namespace System.Windows.Forms {
 			get { return selection_back_color; }
 			set { selection_back_color = value; }
 		}
-#endif
 
 		[Browsable(false)]
 		[DefaultValue(false)]
@@ -760,9 +728,7 @@ namespace System.Windows.Forms {
 		}
 
 		[Localizable(true)]
-#if NET_2_0
 		[RefreshProperties (RefreshProperties.All)]
-#endif
 		public override string Text {
 			get {
 				return base.Text;
@@ -932,20 +898,6 @@ namespace System.Windows.Forms {
 		}
 
 		
-#if !NET_2_0
-		public char GetCharFromPosition(Point pt) {
-			LineTag	tag;
-			int	pos;
-
-			PointToTagPos(pt, out tag, out pos);
-
-			if (pos >= tag.Line.text.Length) {
-				return '\n';
-			}
-
-			return tag.Line.text[pos];
-		}
-#else
 		internal override char GetCharFromPositionInternal (Point p)
 		{
 			LineTag tag;
@@ -958,13 +910,8 @@ namespace System.Windows.Forms {
 
 			return tag.Line.text[pos];
 		}
-#endif
 
-		public
-#if NET_2_0
-		override
-#endif	
-		int GetCharIndexFromPosition(Point pt) {
+		public override int GetCharIndexFromPosition(Point pt) {
 			LineTag	tag;
 			int	pos;
 
@@ -973,11 +920,7 @@ namespace System.Windows.Forms {
 			return document.LineTagToCharIndex(tag.Line, pos);
 		}
 
-		public
-#if NET_2_0
-		override
-#endif
-		int GetLineFromCharIndex(int index) {
+		public override int GetLineFromCharIndex(int index) {
 			Line	line;
 			LineTag	tag;
 			int	pos;
@@ -987,11 +930,7 @@ namespace System.Windows.Forms {
 			return line.LineNo - 1;
 		}
 
-		public
-#if NET_2_0
-		override
-#endif
-		Point GetPositionFromCharIndex(int index) {
+		public override Point GetPositionFromCharIndex(int index) {
 			Line	line;
 			LineTag	tag;
 			int	pos;
@@ -1164,46 +1103,50 @@ namespace System.Windows.Forms {
 //			}
 		}
 
-#if NET_2_0
 		[EditorBrowsable (EditorBrowsableState.Never)]
 		public new void DrawToBitmap (Bitmap bitmap, Rectangle targetBounds)
 		{
-			Graphics dc = Graphics.FromImage (bitmap);
-
-			Draw (dc, targetBounds);
+			using (Graphics dc = Graphics.FromImage (bitmap))
+				Draw (dc, targetBounds);
 		}
-#endif
 
 		#endregion	// Public Instance Methods
 
 		#region Protected Instance Methods
-		protected virtual object CreateRichEditOleCallback() {
-			throw new NotImplementedException();
+		protected virtual object CreateRichEditOleCallback()
+		{
+			throw new NotImplementedException ();
 		}
 
-		protected override void OnBackColorChanged(EventArgs e) {
+		protected override void OnBackColorChanged (EventArgs e)
+		{
 			base.OnBackColorChanged (e);
 		}
 
-		protected virtual void OnContentsResized(ContentsResizedEventArgs e) {
+		protected virtual void OnContentsResized (ContentsResizedEventArgs e)
+		{
 			ContentsResizedEventHandler eh = (ContentsResizedEventHandler)(Events [ContentsResizedEvent]);
 			if (eh != null)
 				eh (this, e);
 		}
 
-		protected override void OnContextMenuChanged(EventArgs e) {
+		protected override void OnContextMenuChanged (EventArgs e)
+		{
 			base.OnContextMenuChanged (e);
 		}
 
-		protected override void OnHandleCreated(EventArgs e) {
+		protected override void OnHandleCreated (EventArgs e)
+		{
 			base.OnHandleCreated (e);
 		}
 
-		protected override void OnHandleDestroyed(EventArgs e) {
+		protected override void OnHandleDestroyed (EventArgs e)
+		{
 			base.OnHandleDestroyed (e);
 		}
 
-		protected virtual void OnHScroll(EventArgs e) {
+		protected virtual void OnHScroll(EventArgs e)
+		{
 			EventHandler eh = (EventHandler)(Events [HScrollEvent]);
 			if (eh != null)
 				eh (this, e);
@@ -1238,16 +1181,6 @@ namespace System.Windows.Forms {
 				eh (this, e);
 		}
 
-#if !NET_2_0
-		protected override void OnSystemColorsChanged(EventArgs e) {
-			base.OnSystemColorsChanged (e);
-		}
-
-		protected override void OnTextChanged(EventArgs e) {
-			base.OnTextChanged (e);
-		}
-#endif
-
 		protected virtual void OnVScroll(EventArgs e) {
 			EventHandler eh = (EventHandler)(Events [VScrollEvent]);
 			if (eh != null)
@@ -1258,12 +1191,10 @@ namespace System.Windows.Forms {
 			base.WndProc (ref m);
 		}
 
-#if NET_2_0
 		protected override bool ProcessCmdKey (ref Message m, Keys keyData)
 		{
 			return base.ProcessCmdKey (ref m, keyData);
 		}
-#endif
 		#endregion	// Protected Instance Methods
 
 		#region Events
@@ -1282,42 +1213,25 @@ namespace System.Windows.Forms {
 			remove { base.BackgroundImageChanged -= value; }
 		}
 
-#if NET_2_0
 		[Browsable (false)]
 		[EditorBrowsable (EditorBrowsableState.Never)]
 		public new event EventHandler BackgroundImageLayoutChanged {
 			add { base.BackgroundImageLayoutChanged += value; }
 			remove { base.BackgroundImageLayoutChanged -= value; }
 		}
-#endif
 
 		public event ContentsResizedEventHandler ContentsResized {
 			add { Events.AddHandler (ContentsResizedEvent, value); }
 			remove { Events.RemoveHandler (ContentsResizedEvent, value); }
 		}
 
-#if !NET_2_0
 		[Browsable(false)]
-		[EditorBrowsable(EditorBrowsableState.Never)]
-		public new event EventHandler DoubleClick {
-			add { base.DoubleClick += value; }
-			remove { base.DoubleClick -= value; }
-		}
-#endif
-
-		[Browsable(false)]
-#if !NET_2_0
-		[EditorBrowsable(EditorBrowsableState.Never)]
-#endif
 		public new event DragEventHandler DragDrop {
 			add { base.DragDrop += value; }
 			remove { base.DragDrop -= value; }
 		}
 
 		[Browsable(false)]
-#if !NET_2_0
-		[EditorBrowsable(EditorBrowsableState.Never)]
-#endif
 		public new event DragEventHandler DragEnter {
 			add { base.DragEnter += value; }
 			remove { base.DragEnter -= value; }
@@ -1587,7 +1501,8 @@ namespace System.Windows.Forms {
 					break;
 
 				case RTF.Minor.LeftIndent:
-					rtf_style.rtf_par_line_left_indent = (int) (((float) rtf.Param / 1440.0F) * CreateGraphics ().DpiX + 0.5F);
+					using (Graphics g = CreateGraphics ())
+						rtf_style.rtf_par_line_left_indent = (int) (((float) rtf.Param / 1440.0F) * g.DpiX + 0.5F);
 					break;
 
 				case RTF.Minor.QuadCenter:
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Splitter.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Splitter.cs
index 0b296d0..6378969 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Splitter.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Splitter.cs
@@ -428,25 +428,25 @@ namespace System.Windows.Forms {
 			SplitterBeginMove (Parent.PointToClient (PointToScreen (new Point (e.X, e.Y))));
 		}
 
-		protected override void OnMouseMove(MouseEventArgs e) {
+		protected override void OnMouseMove (MouseEventArgs e)
+		{
 			base.OnMouseMove (e);
 
 			if (!Capture  || e.Button != MouseButtons.Left || affected == null)
 				return;
 
 			// We need our mouse coordinates relative to our parent
-			SplitterMove (Parent.PointToClient (PointToScreen (new Point (e.X, e.Y))));
+			SplitterMove (Parent.PointToClient (PointToScreen (e.Location)));
 		}
 
-		protected override void OnMouseUp(MouseEventArgs e) {
-			if (!Capture || e.Button != MouseButtons.Left || affected == null) {
-				base.OnMouseUp (e);
+		protected override void OnMouseUp (MouseEventArgs e)
+		{
+			base.OnMouseUp (e);
+			if (!Capture || e.Button != MouseButtons.Left || affected == null) 
 				return;
-			}
 
-			base.OnMouseUp (e);
+			SplitterEndMove (Parent.PointToClient (PointToScreen (e.Location)), false);
 			Capture = false;
-			SplitterEndMove (Parent.PointToClient (PointToScreen (new Point (e.X, e.Y))), false);
 		}
 
 		private void SplitterBeginMove (Point location)
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TabControl.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TabControl.cs
index c3e200c..4d7ef78 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TabControl.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TabControl.cs
@@ -33,10 +33,8 @@ using System.Windows.Forms.Theming;
 using System.Windows.Forms.VisualStyles;
 
 namespace System.Windows.Forms {
-#if NET_2_0
 	[ComVisibleAttribute (true)]
 	[ClassInterfaceAttribute (ClassInterfaceType.AutoDispatch)]
-#endif
 	[DefaultEvent("SelectedIndexChanged")]
 	[DefaultProperty("TabPages")]
 	[Designer("System.Windows.Forms.Design.TabControlDesigner, " + Consts.AssemblySystem_Design, "System.ComponentModel.Design.IDesigner")]
@@ -66,13 +64,10 @@ namespace System.Windows.Forms {
 		ToolTip.TipState tooltip_state = ToolTip.TipState.Down;
 		Timer tooltip_timer;
 
-#if NET_2_0
 		private bool rightToLeftLayout;
-#endif		
 		#endregion	// Fields
 
 		#region UIA Framework Events
-#if NET_2_0
 		static object UIAHorizontallyScrollableChangedEvent = new object ();
 
 		internal event EventHandler UIAHorizontallyScrollableChanged {
@@ -102,15 +97,12 @@ namespace System.Windows.Forms {
 			if (eh != null)
 				eh (this, e);
 		}
-#endif
 		#endregion
 
 		#region UIA Framework Property
-#if NET_2_0
 		internal double UIAHorizontalViewSize {
 			get { return LeftScrollButtonArea.Left * 100 / TabPages [TabCount - 1].TabBounds.Right; }
 		}
-#endif
 		#endregion
 
 		#region Public Constructors
@@ -171,14 +163,12 @@ namespace System.Windows.Forms {
 			set { base.BackgroundImage = value; }
 		}
 
-#if NET_2_0
 		[Browsable (false)]
 		[EditorBrowsable (EditorBrowsableState.Never)]
 		public override ImageLayout BackgroundImageLayout {
 			get { return base.BackgroundImageLayout; }
 			set { base.BackgroundImageLayout = value; }
 		}
-#endif
 		
 		public override Rectangle DisplayRectangle {
 			get {
@@ -186,13 +176,11 @@ namespace System.Windows.Forms {
 			}
 		}
 
-#if NET_2_0
 		[EditorBrowsable (EditorBrowsableState.Never)]
 		protected override bool DoubleBuffered {
 			get { return base.DoubleBuffered; }
 			set { base.DoubleBuffered = value; }
 		}
-#endif
 
 		[DefaultValue(TabDrawMode.Normal)]
 		public TabDrawMode DrawMode {
@@ -223,9 +211,7 @@ namespace System.Windows.Forms {
 			}
 		}
 
-#if NET_2_0
 		[RefreshProperties (RefreshProperties.Repaint)]
-#endif
 		[DefaultValue(null)]
 		public ImageList ImageList {
 			get { return image_list; }
@@ -279,9 +265,7 @@ namespace System.Windows.Forms {
 
 		[Localizable(true)]
 		public
-#if NET_2_0
 		new
-#endif
 		Point Padding {
 			get { return padding; }
 			set {
@@ -295,7 +279,6 @@ namespace System.Windows.Forms {
 
 		}
 
-#if NET_2_0
 		[MonoTODO ("RTL not supported")]
 		[Localizable (true)]
 		[DefaultValue (false)]
@@ -308,7 +291,6 @@ namespace System.Windows.Forms {
 				}
 			}
 		}
-#endif
 
 		[Browsable(false)]
 		[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
@@ -323,20 +305,12 @@ namespace System.Windows.Forms {
 			set {
 
 				if (value < -1) {
-#if NET_2_0
 					throw new ArgumentOutOfRangeException ("SelectedIndex", "Value of '" + value + "' is valid for 'SelectedIndex'. " +
 						"'SelectedIndex' must be greater than or equal to -1.");
-#else
-					throw new ArgumentException ("'" + value + "' is not a valid value for 'value'. " +
-						"'value' must be greater than or equal to -1.");
-#endif
 				}
 				if (!this.IsHandleCreated) {
 					if (selected_index != value) {
 						selected_index = value;
-#if !NET_2_0
-						OnSelectedIndexChanged (EventArgs.Empty);
-#endif
 					}
 					return;
 				}
@@ -353,27 +327,23 @@ namespace System.Windows.Forms {
 					return;
 				}
 
-#if NET_2_0
 				TabControlCancelEventArgs ret = new TabControlCancelEventArgs (SelectedTab, selected_index, false, TabControlAction.Deselecting);
 				OnDeselecting (ret);
 				if (ret.Cancel)
 					return;
 
-#endif
 				Focus ();
 				int old_index = selected_index;
 				int new_index = value;
 
 				selected_index = new_index;
 
-#if NET_2_0
 				ret = new TabControlCancelEventArgs (SelectedTab, selected_index, false, TabControlAction.Selecting);
 				OnSelecting (ret);
 				if (ret.Cancel) {
 					selected_index = old_index;
 					return;
 				}
-#endif
 
 				SuspendLayout ();
 
@@ -492,11 +462,7 @@ namespace System.Windows.Forms {
 			}
 		}
 
-#if NET_2_0
 		[Editor ("System.Windows.Forms.Design.TabPageCollectionEditor, " + Consts.AssemblySystem_Design, typeof (System.Drawing.Design.UITypeEditor))]
-#else
-		[DefaultValue(null)]
-#endif
 		[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
 		[MergableProperty(false)]
 		public TabPageCollection TabPages {
@@ -518,10 +484,8 @@ namespace System.Windows.Forms {
 			set {
 				show_slider = value;
 
-#if NET_2_0
 				// UIA Framework Event: HorizontallyScrollable Changed
 				OnUIAHorizontallyScrollableChanged (EventArgs.Empty);
-#endif
 			}
 		}
 
@@ -613,7 +577,6 @@ namespace System.Windows.Forms {
 			return GetTab (index);
 		}
 
-#if NET_2_0
 		public void SelectTab (TabPage tabPage)
 		{
 			if (tabPage == null)
@@ -664,7 +627,6 @@ namespace System.Windows.Forms {
 			}
 		}
 
-#endif
 
 		public override string ToString ()
 		{
@@ -767,7 +729,6 @@ namespace System.Windows.Forms {
 			pe.Handled = true;
 		}
 
-#if NET_2_0
 		protected override void OnEnter (EventArgs e)
 		{
 			base.OnEnter (e);
@@ -835,7 +796,6 @@ namespace System.Windows.Forms {
 			if (this.SelectedTab != null)
 				this.SelectedTab.FireEnter ();
 		}
-#endif
 
 		#endregion
 
@@ -937,11 +897,7 @@ namespace System.Windows.Forms {
 		}
 		#endregion
 
-#if NET_2_0
 		protected void UpdateTabSelection (bool updateFocus)
-#else
-		protected void UpdateTabSelection (bool uiselected)
-#endif
 		{
 			ResizeTabPages ();
 		}
@@ -998,10 +954,8 @@ namespace System.Windows.Forms {
 						slider_pos++;
 						SizeTabs ();
 
-#if NET_2_0
 						// UIA Framework Event: Horizontally Scrolled
 						OnUIAHorizontallyScrolled (EventArgs.Empty);
-#endif
 
 						switch (this.Alignment) {
 							case TabAlignment.Top:
@@ -1028,10 +982,8 @@ namespace System.Windows.Forms {
 						slider_pos--;
 						SizeTabs ();
 
-#if NET_2_0
 						// UIA Framework Event: Horizontally Scrolled
 						OnUIAHorizontallyScrolled (EventArgs.Empty);
-#endif
 
 						switch (this.Alignment) {
 							case TabAlignment.Top:
@@ -1365,12 +1317,6 @@ namespace System.Windows.Forms {
 
 				switch (Alignment) {
 					case TabAlignment.Top:
-						page.TabBounds = new Rectangle (
-							xpos + CalcXPos (),
-							ypos + (height + spacing.Height) * (row_count - page.Row) + CalcYPos (),
-							width, 
-							height);
-						break;
 					case TabAlignment.Bottom:
 						page.TabBounds = new Rectangle (
 							xpos + CalcXPos (),
@@ -1472,21 +1418,8 @@ namespace System.Windows.Forms {
 				return;
 
 			Rectangle r = page.TabBounds;
-			switch (Alignment) {
-				case TabAlignment.Top:
-				case TabAlignment.Left:
-					r.Y -= ThemeEngine.Current.TabControlSelectedDelta.Y;
-					r.X -= ThemeEngine.Current.TabControlSelectedDelta.X;
-					break;
-				case TabAlignment.Bottom:
-					r.Y -= ThemeEngine.Current.TabControlSelectedDelta.Y;
-					r.X -= ThemeEngine.Current.TabControlSelectedDelta.X;
-					break;
-				case TabAlignment.Right:
-					r.Y -= ThemeEngine.Current.TabControlSelectedDelta.Y;
-					r.X -= ThemeEngine.Current.TabControlSelectedDelta.X;
-					break;
-			}
+			r.Y -= ThemeEngine.Current.TabControlSelectedDelta.Y;
+			r.X -= ThemeEngine.Current.TabControlSelectedDelta.X;
 
 			r.Width += ThemeEngine.Current.TabControlSelectedDelta.Width;
 			r.Height += ThemeEngine.Current.TabControlSelectedDelta.Height;
@@ -1519,7 +1452,6 @@ namespace System.Windows.Forms {
 			this.Controls.SetChildIndex (value, index);
 			Redraw ();
 		}
-#if NET_2_0
 		private void InsertTab (int index, TabPage value)
 		{
 			if (!tab_pages.Contains (value)) {
@@ -1528,7 +1460,6 @@ namespace System.Windows.Forms {
 			this.Controls.SetChildIndex (value, index);
 			Redraw ();
 		}
-#endif
 		internal void Redraw ()
 		{
 			if (!IsHandleCreated)
@@ -1663,7 +1594,6 @@ namespace System.Windows.Forms {
 			remove { base.BackgroundImageChanged -= value; }
 		}
 
-#if NET_2_0
 		[Browsable (false)]
 		[EditorBrowsable (EditorBrowsableState.Never)]
 		public new event EventHandler BackgroundImageLayoutChanged
@@ -1671,7 +1601,6 @@ namespace System.Windows.Forms {
 			add { base.BackgroundImageLayoutChanged += value; }
 			remove { base.BackgroundImageLayoutChanged -= value; }
 		}
-#endif
 
 		[Browsable(false)]
 		[EditorBrowsable(EditorBrowsableState.Never)]
@@ -1707,7 +1636,6 @@ namespace System.Windows.Forms {
 			remove { Events.RemoveHandler (SelectedIndexChangedEvent, value); }
 		}
 		
-#if NET_2_0
 		static object SelectedEvent = new object ();
 		
 		public event TabControlEventHandler Selected {
@@ -1745,14 +1673,11 @@ namespace System.Windows.Forms {
 			add { Events.AddHandler (RightToLeftLayoutChangedEvent, value); }
 			remove { Events.RemoveHandler (RightToLeftLayoutChangedEvent, value); }
 		}
-#endif
 		#endregion	// Events
 
 
 		#region Class TaControl.ControlCollection
-#if NET_2_0
 		[ComVisible (false)]
-#endif
 		public new class ControlCollection : System.Windows.Forms.Control.ControlCollection {
 
 			private TabControl owner;
@@ -1840,7 +1765,6 @@ namespace System.Windows.Forms {
 					owner.SetTab (index, value);
 				}
 			}
-#if NET_2_0
 			public virtual TabPage this [string key] {
 				get {
 					if (string.IsNullOrEmpty (key))
@@ -1853,7 +1777,6 @@ namespace System.Windows.Forms {
 					return this[index];
 				}
 			}
-#endif
 
 			internal int this[TabPage tabPage] {
 				get {
@@ -1896,7 +1819,6 @@ namespace System.Windows.Forms {
 				owner.Controls.Add (value);
 			}
 
-#if NET_2_0
 			public void Add (string text)
 			{
 				TabPage page = new TabPage (text);
@@ -1926,7 +1848,6 @@ namespace System.Windows.Forms {
 				page.ImageKey = imageKey;
 				this.Add (page);
 			}
-#endif
 
 			public void AddRange (TabPage [] pages)
 			{
@@ -1948,13 +1869,11 @@ namespace System.Windows.Forms {
 				return owner.Controls.Contains (page);
 			}
 
-#if NET_2_0
 			public virtual bool ContainsKey (string key)
 			{
 				int index = this.IndexOfKey (key);
 				return (index >= 0 && index < this.Count);
 			}
-#endif
 
 			public IEnumerator GetEnumerator ()
 			{
@@ -1966,7 +1885,6 @@ namespace System.Windows.Forms {
 				return owner.Controls.IndexOf (page);
 			}
 
-#if NET_2_0
 			public virtual int IndexOfKey(string key)
 			{
 				if (string.IsNullOrEmpty (key))
@@ -1981,7 +1899,6 @@ namespace System.Windows.Forms {
 
 				return -1;
 			}
-#endif
 
 			public void Remove (TabPage value)
 			{
@@ -1995,14 +1912,12 @@ namespace System.Windows.Forms {
 				owner.Invalidate ();
 			}
 
-#if NET_2_0
 			public virtual void RemoveByKey (string key)
 			{
 				int index = this.IndexOfKey (key);
 				if (index >= 0 && index < this.Count)
 					this.RemoveAt (index);
 			}
-#endif
 
 			void ICollection.CopyTo (Array dest, int index)
 			{
@@ -2034,16 +1949,11 @@ namespace System.Windows.Forms {
 				return IndexOf (tabPage);
 			}
 
-#if NET_2_0
 			void IList.Insert (int index, object tabPage)
-#else
-			void IList.Insert (int index, object value)
-#endif
 			{
 				throw new NotSupportedException ();
 			}
 
-#if NET_2_0
 			public void Insert (int index, string text)
 			{
 				owner.InsertTab (index, new TabPage (text));
@@ -2076,7 +1986,6 @@ namespace System.Windows.Forms {
 				owner.InsertTab (index, page);
 				page.ImageKey = imageKey;
 			}
-#endif
 			void IList.Remove (object value)
 			{
 				TabPage page = value as TabPage;
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TextBox.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TextBox.cs
index 5ad95c1..d7c548c 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TextBox.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TextBox.cs
@@ -31,18 +31,14 @@ using System.Collections;
 using System.ComponentModel;
 using System.ComponentModel.Design;
 using System.Drawing;
-#if NET_2_0
 using System.Collections.Generic;
 using System.Runtime.InteropServices;
-#endif
 
 namespace System.Windows.Forms {
 
-#if NET_2_0
 	[ComVisible(true)]
 	[ClassInterface (ClassInterfaceType.AutoDispatch)]
 	[Designer ("System.Windows.Forms.Design.TextBoxDesigner, " + Consts.AssemblySystem_Design, "System.ComponentModel.Design.IDesigner")]
-#endif
 	public class TextBox : TextBoxBase {
 		#region Variables
 		private ContextMenu	menu;
@@ -53,7 +49,6 @@ namespace System.Windows.Forms {
 		private MenuItem	delete;
 		private MenuItem	select_all;
 
-#if NET_2_0
 		private bool use_system_password_char;
 		private AutoCompleteStringCollection auto_complete_custom_source;
 		private AutoCompleteMode auto_complete_mode = AutoCompleteMode.None;
@@ -63,7 +58,6 @@ namespace System.Windows.Forms {
 		private int auto_complete_selected_index = -1;
 		private List<string> auto_complete_matches;
 		private ComboBox auto_complete_cb_source;
-#endif
 		#endregion	// Variables
 
 		#region Public Constructors
@@ -73,9 +67,7 @@ namespace System.Windows.Forms {
 			alignment = HorizontalAlignment.Left;
 			this.LostFocus +=new EventHandler(TextBox_LostFocus);
 			this.RightToLeftChanged += new EventHandler (TextBox_RightToLeftChanged);
-#if NET_2_0
 			MouseWheel += new MouseEventHandler (TextBox_MouseWheel);
-#endif
 
 			BackColor = SystemColors.Window;
 			ForeColor = SystemColors.WindowText;
@@ -117,13 +109,10 @@ namespace System.Windows.Forms {
 		private void TextBox_LostFocus (object sender, EventArgs e) {
 			if (hide_selection)
 				document.InvalidateSelectionArea ();
-#if NET_2_0
 			if (auto_complete_listbox != null && auto_complete_listbox.Visible)
 				auto_complete_listbox.HideListBox (false);
-#endif
 		}
 
-#if NET_2_0
 		private void TextBox_MouseWheel (object o, MouseEventArgs args)
 		{
 			if (auto_complete_listbox == null || !auto_complete_listbox.Visible)
@@ -329,7 +318,6 @@ namespace System.Windows.Forms {
 		internal virtual void OnAutoCompleteValueSelected (EventArgs args)
 		{
 		}
-#endif
 
 		private void UpdateAlignment ()
 		{
@@ -366,28 +354,23 @@ namespace System.Windows.Forms {
 		internal override Color ChangeBackColor (Color backColor)
 		{
 			if (backColor == Color.Empty) {
-#if NET_2_0
 				if (!ReadOnly)
 					backColor = SystemColors.Window;
-#else
-				backColor = SystemColors.Window;
-#endif
+
 				backcolor_set = false;
 			}
+
 			return backColor;
 		}
 
-#if NET_2_0
 		void OnAutoCompleteCustomSourceChanged(object sender, CollectionChangeEventArgs e) {
 			if(auto_complete_source == AutoCompleteSource.CustomSource) {
 				//FIXME: handle add, remove and refresh events in AutoComplete algorithm.
 			}
 		}
-#endif
 		#endregion	// Private & Internal Methods
 
 		#region Public Instance Properties
-#if NET_2_0
 		[MonoTODO("AutoCompletion algorithm is currently not implemented.")]
 		[DesignerSerializationVisibility (DesignerSerializationVisibility.Content)]
 		[Browsable (true)]
@@ -471,7 +454,6 @@ namespace System.Windows.Forms {
 				}
 			}
 		}
-#endif
 
 		[DefaultValue(false)]
 		[MWFCategory("Behavior")]
@@ -504,16 +486,12 @@ namespace System.Windows.Forms {
 		[Localizable(true)]
 		[DefaultValue('\0')]
 		[MWFCategory("Behavior")]
-#if NET_2_0
 		[RefreshProperties (RefreshProperties.Repaint)]
-#endif
 		public char PasswordChar {
 			get {
-#if NET_2_0
 				if (use_system_password_char) {
 					return '*';
 				}
-#endif
 				return password_char;
 			}
 
@@ -550,19 +528,6 @@ namespace System.Windows.Forms {
 			}
 		}
 
-#if ONLY_1_1
-		[Browsable(false)]
-		[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
-		public override int SelectionLength {
-			get {
-				return base.SelectionLength;
-			}
-			set {
-				base.SelectionLength = value;
-			}
-		}
-#endif
-
 		public override string Text {
 			get {
 				return base.Text;
@@ -593,7 +558,6 @@ namespace System.Windows.Forms {
 		}
 		#endregion	// Public Instance Properties
 
-#if NET_2_0
 		public void Paste (string text)
 		{
 			document.ReplaceSelection (CaseAdjust (text), false);
@@ -601,7 +565,6 @@ namespace System.Windows.Forms {
 			ScrollToCaret();
 			OnTextChanged(EventArgs.Empty);
 		}
-#endif
 		#region Protected Instance Methods
 		protected override CreateParams CreateParams {
 			get {
@@ -609,19 +572,10 @@ namespace System.Windows.Forms {
 			}
 		}
 
-#if ONLY_1_1
-		protected override ImeMode DefaultImeMode {
-			get {
-				return base.DefaultImeMode;
-			}
-		}
-#endif
-#if NET_2_0
 		protected override void Dispose (bool disposing)
 		{
 			base.Dispose (disposing);
 		}
-#endif
 
 		protected override bool IsInputKey (Keys keyData)
 		{
@@ -641,13 +595,6 @@ namespace System.Windows.Forms {
 			base.OnHandleCreated (e);
 		}
 
-#if ONLY_1_1
-		protected override void OnMouseUp(MouseEventArgs mevent)
-		{
-			base.OnMouseUp (mevent);
-		}
-#endif
-
 		protected virtual void OnTextAlignChanged (EventArgs e)
 		{
 			EventHandler eh = (EventHandler)(Events [TextAlignChangedEvent]);
@@ -658,7 +605,6 @@ namespace System.Windows.Forms {
 		protected override void WndProc (ref Message m)
 		{
 			switch ((Msg)m.Msg) {
-#if NET_2_0
 				case Msg.WM_KEYDOWN:
 					if (!IsAutoCompleteAvailable)
 						break;
@@ -701,7 +647,6 @@ namespace System.Windows.Forms {
 
 					ProcessAutoCompleteInput (ref m, char_value == 8);
 					return;
-#endif
 				case Msg.WM_LBUTTONDOWN:
 					// When the textbox gets focus by LBUTTON (but not by middle or right)
 					// it does not do the select all / scroll thing.
@@ -793,7 +738,6 @@ namespace System.Windows.Forms {
 		}
 		#endregion	// Private Methods
 
-#if NET_2_0
 		public override bool Multiline {
 			get {
 				return base.Multiline;
@@ -1085,10 +1029,8 @@ namespace System.Windows.Forms {
 				ThemeEngine.Current.CPDrawSizeGrip (g, SystemColors.Control, resizer_bounds);
 			}
 		}
-#endif
 	}
 	
-#if NET_2_0
 	internal class TextBoxAutoCompleteSourceConverter : EnumConverter
 	{
 		public TextBoxAutoCompleteSourceConverter(Type type)
@@ -1107,5 +1049,4 @@ namespace System.Windows.Forms {
 			return new StandardValuesCollection(arr2);
 		}
 	}
-#endif
 }
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TextBoxBase.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TextBoxBase.cs
index 72fd50a..e824ff1 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TextBoxBase.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TextBoxBase.cs
@@ -38,11 +38,9 @@ using System.Collections;
 
 namespace System.Windows.Forms
 {
-#if NET_2_0
 	[ComVisible (true)]
 	[DefaultBindingProperty ("Text")]
 	[ClassInterface (ClassInterfaceType.AutoDispatch)]
-#endif
 	[DefaultEvent("TextChanged")]
 	[Designer("System.Windows.Forms.Design.TextBoxBaseDesigner, " + Consts.AssemblySystem_Design)]
 	public abstract class TextBoxBase : Control
@@ -154,11 +152,9 @@ namespace System.Windows.Forms
 			ResumeLayout ();
 			
 			SetStyle(ControlStyles.UserPaint | ControlStyles.StandardClick, false);
-#if NET_2_0
 			SetStyle(ControlStyles.UseTextForAccessibility, false);
 			
 			base.SetAutoSizeMode (AutoSizeMode.GrowAndShrink);
-#endif
 
 			canvas_width = ClientSize.Width;
 			canvas_height = ClientSize.Height;
@@ -179,12 +175,10 @@ namespace System.Windows.Forms
 			return s.ToUpper();
 		}
 
-#if NET_2_0
 		internal override Size GetPreferredSizeCore (Size proposedSize)
 		{
 			return new Size (Width, Height);
 		}
-#endif
 
 		internal override void HandleClick (int clicks, MouseEventArgs me)
 		{
@@ -228,21 +222,13 @@ namespace System.Windows.Forms
 			}
 		}
 
-#if NET_2_0
 		[Browsable (false)]
 		[EditorBrowsable (EditorBrowsableState.Never)]
-#endif
 		[DefaultValue(true)]
 		[Localizable(true)]
 		[RefreshProperties(RefreshProperties.Repaint)]
 		[MWFCategory("Behavior")]
-		public
-#if NET_2_0
-		override
-#else
-		virtual
-#endif
-		bool AutoSize {
+		public override bool AutoSize {
 			get {
 				return auto_size;
 			}
@@ -255,9 +241,6 @@ namespace System.Windows.Forms
 							ClientSize = new Size(ClientSize.Width, PreferredHeight);
 						}
 					}
-#if NET_1_1
-					OnAutoSizeChanged(EventArgs.Empty);
-#endif
 				}
 			}
 		}
@@ -342,9 +325,7 @@ namespace System.Windows.Forms
 			}
 		}
 
-#if NET_2_0
 		[MergableProperty (false)]
-#endif
 		[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
 		[Editor("System.Windows.Forms.Design.StringArrayEditor, " + Consts.AssemblySystem_Design, typeof(System.Drawing.Design.UITypeEditor))]
 		[Localizable(true)]
@@ -496,9 +477,7 @@ namespace System.Windows.Forms
 			}
 		}
 
-#if NET_2_0
 		[RefreshProperties (RefreshProperties.Repaint)]	
-#endif
 		[DefaultValue(false)]
 		[MWFCategory("Behavior")]
 		public bool ReadOnly {
@@ -509,14 +488,12 @@ namespace System.Windows.Forms
 			set {
 				if (value != read_only) {
 					read_only = value;
-#if NET_2_0
 					if (!backcolor_set) {
 						if (read_only)
 							background_color = SystemColors.Control;
 						else
 							background_color = SystemColors.Window;
 					}
-#endif
 					OnReadOnlyChanged(EventArgs.Empty);
 					Invalidate ();
 				}
@@ -529,14 +506,13 @@ namespace System.Windows.Forms
 			get {
 				string retval = document.GetSelection ();
 
-#if ONLY_1_1
-				if (!IsHandleCreated && retval == string.Empty)
-					return null;
-#endif
 				return retval;
 			}
 
 			set {
+				if (value == null)
+					value = String.Empty;
+
 				document.ReplaceSelection(CaseAdjust(value), false);
 
 				ScrollToCaret();
@@ -550,22 +526,13 @@ namespace System.Windows.Forms
 			get {
 				int res = document.SelectionLength ();
 
-#if !NET_2_0
-				if (res == 0 && !IsHandleCreated)
-					res = -1;
-#endif
-
 				return res;
 			}
 
 			set {
 				if (value < 0) {
 					string msg = String.Format ("'{0}' is not a valid value for 'SelectionLength'", value);
-#if NET_2_0
 					throw new ArgumentOutOfRangeException ("SelectionLength", msg);
-#else
-					throw new ArgumentException (msg);
-#endif
 				}
 
 				document.InvalidateSelectionArea ();
@@ -599,11 +566,7 @@ namespace System.Windows.Forms
 			set {
 				if (value < 0) {
 					string msg = String.Format ("'{0}' is not a valid value for 'SelectionStart'", value);
-#if NET_2_0
 					throw new ArgumentOutOfRangeException ("SelectionStart", msg);
-#else
-					throw new ArgumentException (msg);
-#endif
 				}
 
 				// If SelectionStart has been used, we don't highlight on focus
@@ -620,7 +583,6 @@ namespace System.Windows.Forms
 			}
 		}
 
-#if NET_2_0
 		[DefaultValue (true)]
 		public virtual bool ShortcutsEnabled {
 			get { return shortcuts_enabled; }
@@ -629,7 +591,6 @@ namespace System.Windows.Forms
 
 		[Editor ("System.ComponentModel.Design.MultilineStringEditor, " + Consts.AssemblySystem_Design,
 			 "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
-#endif
 		[Localizable(true)]
 		public override string Text {
 			get {
@@ -654,23 +615,20 @@ namespace System.Windows.Forms
 				if (value == Text)
 					return;
 
+				document.Empty ();
 				if ((value != null) && (value != "")) {
-
-					document.Empty ();
-
 					document.Insert (document.GetLine (1), 0, false, value);
-							
-					document.PositionCaret (document.GetLine (1), 0);
-					document.SetSelectionToCaret (true);
-
-					ScrollToCaret ();
 				} else {
-					document.Empty();
-
-					document.SetSelectionToCaret (true);
-					if (IsHandleCreated)
+					if (IsHandleCreated) {
+						document.SetSelectionToCaret (true);
 						CalculateDocument ();
+					}
 				}
+							
+				document.PositionCaret (document.GetLine (1), 0);
+				document.SetSelectionToCaret (true);
+
+				ScrollToCaret ();
 
 				OnTextChanged(EventArgs.Empty);
 			}
@@ -704,7 +662,6 @@ namespace System.Windows.Forms
 			}
 		}
 
-#if NET_2_0
 		[Browsable (false)]
 		[EditorBrowsable (EditorBrowsableState.Never)]
 		public override ImageLayout BackgroundImageLayout {
@@ -723,11 +680,9 @@ namespace System.Windows.Forms
 		protected override Cursor DefaultCursor {
 			get { return Cursors.IBeam; }
 		}
-#endif
 		#endregion	// Public Instance Properties
 
 		#region Protected Instance Properties
-#if NET_2_0
 		protected override bool CanEnableIme {
 			get {
 				if (ReadOnly || password_char != '\0')
@@ -736,7 +691,6 @@ namespace System.Windows.Forms
 				return true;
 			}
 		}
-#endif
 
 		protected override CreateParams CreateParams {
 			get {
@@ -750,14 +704,12 @@ namespace System.Windows.Forms
 			}
 		}
 
-#if NET_2_0
 		// Currently our double buffering breaks our scrolling, so don't let people enable this
 		[EditorBrowsable (EditorBrowsableState.Never)]
 		protected override bool DoubleBuffered {
 			get { return false; }
 			set { }
 		}
-#endif
 
 		#endregion	// Protected Instance Properties
 
@@ -885,7 +837,6 @@ namespace System.Windows.Forms
 			}
 		}
 
-#if NET_2_0
 		public void DeselectAll ()
 		{
 			SelectionLength = 0;
@@ -977,7 +928,6 @@ namespace System.Windows.Forms
 		{
 			return document.LineTagToCharIndex (document.caret.line, 0);
 		}
-#endif
 		#endregion	// Public Instance Methods
 
 		#region Protected Instance Methods
@@ -1031,15 +981,6 @@ namespace System.Windows.Forms
 				eh (this, e);
 		}
 
-#if ONLY_1_1
-		protected virtual void OnAutoSizeChanged (EventArgs e)
-		{
-			EventHandler eh = (EventHandler)(Events [AutoSizeChangedEvent]);
-			if (eh != null)
-				eh (this, e);
-		}
-#endif
-
 		protected virtual void OnBorderStyleChanged (EventArgs e)
 		{
 			EventHandler eh = (EventHandler)(Events [BorderStyleChangedEvent]);
@@ -1090,12 +1031,10 @@ namespace System.Windows.Forms
 				eh (this, e);
 		}
 
-#if NET_2_0
 		protected override void OnPaddingChanged (EventArgs e)
 		{
 			base.OnPaddingChanged (e);
 		}
-#endif
 
 		protected virtual void OnReadOnlyChanged (EventArgs e)
 		{
@@ -1104,12 +1043,10 @@ namespace System.Windows.Forms
 				eh (this, e);
 		}
 
-#if NET_2_0
 		protected override bool ProcessCmdKey (ref Message msg, Keys keyData)
 		{
 			return base.ProcessCmdKey (ref msg, keyData);
 		}
-#endif
 		protected override bool ProcessDialogKey (Keys keyData)
 		{
 			// The user can use Ctrl-Tab or Ctrl-Shift-Tab to move control focus
@@ -1591,9 +1528,7 @@ namespace System.Windows.Forms
 
 					if (document.Length < max_length) {
 						document.InsertCharAtCaret(c, true);
-#if NET_2_0
 						OnTextUpdate ();
-#endif
 						CaretMoved (this, null);
 						Modified = true;
 						OnTextChanged(EventArgs.Empty);
@@ -1649,15 +1584,9 @@ namespace System.Windows.Forms
 			remove { Events.RemoveHandler (AcceptsTabChangedEvent, value); }
 		}
 
-#if NET_2_0
 		[Browsable (false)]
 		[EditorBrowsable (EditorBrowsableState.Never)]
-#endif
-		public
-#if NET_2_0
-		new
-#endif
-		event EventHandler AutoSizeChanged {
+		public new event EventHandler AutoSizeChanged {
 			add { Events.AddHandler (AutoSizeChangedEvent, value); }
 			remove { Events.RemoveHandler (AutoSizeChangedEvent, value); }
 		}
@@ -1704,7 +1633,6 @@ namespace System.Windows.Forms
 			remove { base.BackgroundImageChanged -= value; }
 		}
 
-#if NET_2_0
 		[Browsable (false)]
 		[EditorBrowsable (EditorBrowsableState.Never)]
 		public new event EventHandler BackgroundImageLayoutChanged {
@@ -1729,10 +1657,6 @@ namespace System.Windows.Forms
 
 		[Browsable (true)]
 		[EditorBrowsable (EditorBrowsableState.Always)]
-#else
-		[Browsable(false)]
-		[EditorBrowsable(EditorBrowsableState.Advanced)]
-#endif
 		public new event EventHandler Click {
 			add { base.Click += value; }
 			remove { base.Click -= value; }
@@ -2300,11 +2224,7 @@ namespace System.Windows.Forms
 			}
 
 			if (found_link == false) {
-#if NET_2_0
 				XplatUI.SetCursor (window.Handle, DefaultCursor.handle);
-#else
-				XplatUI.SetCursor(window.Handle, Cursors.IBeam.handle);
-#endif
 				current_link = null;
 			}
 		}
@@ -2535,7 +2455,6 @@ namespace System.Windows.Forms
 		}
 		#endregion
 
-#if NET_2_0
 		// This is called just before OnTextChanged is called.
 		internal virtual void OnTextUpdate ()
 		{
@@ -2561,6 +2480,5 @@ namespace System.Windows.Forms
 		{
 			base.OnMouseUp (mevent);
 		}
-#endif
 	}
 }
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TextControl.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TextControl.cs
index b06c2fa..bf671d4 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TextControl.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TextControl.cs
@@ -933,15 +933,14 @@ namespace System.Windows.Forms {
 
 			int start_line_top = line.Y;			
 
-			int end_line_bottom;
-			Line end_line;
-
-			end_line = GetLine (line.line_no + line_count);
+			Line end_line = GetLine (line.line_no + line_count);
 			if (end_line == null)
 				end_line = GetLine (lines);
 
-
-			end_line_bottom = end_line.Y + end_line.height;
+			if (end_line == null)
+				return;
+			
+			int end_line_bottom = end_line.Y + end_line.height;
 			
 			if (RecalculateDocument(owner.CreateGraphicsInternal(), line.line_no, line.line_no + line_count, true)) {
 				// Lineheight changed, invalidate the rest of the document
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Theme.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Theme.cs
index e4154e7..1a68cc0 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Theme.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Theme.cs
@@ -27,7 +27,6 @@
 using System.Collections;
 using System.Drawing;
 using System.Drawing.Drawing2D;
-using System.Drawing.Imaging;
 using System.Reflection;
 
 namespace System.Windows.Forms
@@ -643,8 +642,8 @@ namespace System.Windows.Forms
 				Console.Error.WriteLine ("warning: requesting icon that not been tuned {0}_{1} {2}", width, name, image.Width);
 				int height = (image.Height * width)/image.Width;
 				Bitmap b = new Bitmap (width, height);
-				Graphics g = Graphics.FromImage (b);
-				g.DrawImage (image, 0, 0, width, height);
+				using (Graphics g = Graphics.FromImage (b))
+					g.DrawImage (image, 0, 0, width, height);
 				ResPool.AddUIImage (b, name, width);
 
 				return b;
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ThemeVisualStyles.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ThemeVisualStyles.cs
index 421a469..4e43c1c 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ThemeVisualStyles.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ThemeVisualStyles.cs
@@ -1153,7 +1153,8 @@ namespace System.Windows.Forms
 				break;
 			case 2: // Marquee
 				int ms_diff = (int)(DateTime.Now - ctrl.start).TotalMilliseconds;
-				double percent_done = (double)ms_diff % (double)ctrl.MarqueeAnimationSpeed / (double)ctrl.MarqueeAnimationSpeed;
+				double percent_done = (double) ms_diff / ProgressBarMarqueeSpeedScaling 
+					% (double)ctrl.MarqueeAnimationSpeed / (double)ctrl.MarqueeAnimationSpeed;
 				max_blocks = 5;
 				start_pixel = client_area.X + (int)(client_area.Width * percent_done);
 				goto default;
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ThemeWin32Classic.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ThemeWin32Classic.cs
index 36e9944..7ea2d03 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ThemeWin32Classic.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ThemeWin32Classic.cs
@@ -4287,7 +4287,8 @@ namespace System.Windows.Forms
 			case 2: // Marquee
 				if (XplatUI.ThemesEnabled) {
 					int ms_diff = (int) (DateTime.Now - ctrl.start).TotalMilliseconds;
-					double percent_done = (double) ms_diff % (double)ctrl.MarqueeAnimationSpeed / (double)ctrl.MarqueeAnimationSpeed;
+					double percent_done = (double) ms_diff / ProgressBarMarqueeSpeedScaling 
+						% (double)ctrl.MarqueeAnimationSpeed / (double)ctrl.MarqueeAnimationSpeed;
 					max_blocks = 5;
 					start_pixel = client_area.X + (int) (client_area.Width * percent_done);
 				}
@@ -4353,6 +4354,8 @@ namespace System.Windows.Forms
 			}
 		}
 
+		public const double ProgressBarMarqueeSpeedScaling = 15;
+
 		#endregion	// ProgressBar
 
 		#region RadioButton
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripDropDown.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripDropDown.cs
index dd03137..12fb4ae 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripDropDown.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripDropDown.cs
@@ -449,20 +449,20 @@ namespace System.Windows.Forms
 							direction = ToolStripDropDownDirection.BelowRight;
 						break;
 					case ToolStripDropDownDirection.BelowLeft:
-						if (show_point.Y + this.Height > max_screen.Y)
+						if (show_point.Y + this.Height > max_screen.Y && show_point.Y - this.Height > 0)
 							direction = ToolStripDropDownDirection.AboveLeft;
 						break;
 					case ToolStripDropDownDirection.BelowRight:
 					case ToolStripDropDownDirection.Default:
-						if (show_point.Y + this.Height > max_screen.Y)
+						if (show_point.Y + this.Height > max_screen.Y && show_point.Y - this.Height > 0)
 							direction = ToolStripDropDownDirection.AboveRight;
 						break;
 					case ToolStripDropDownDirection.Left:
-						if (show_point.Y + this.Height > max_screen.Y)
+						if (show_point.Y + this.Height > max_screen.Y && show_point.Y - this.Height > 0)
 							direction = ToolStripDropDownDirection.AboveLeft;
 						break;
 					case ToolStripDropDownDirection.Right:
-						if (show_point.Y + this.Height > max_screen.Y)
+						if (show_point.Y + this.Height > max_screen.Y && show_point.Y - this.Height > 0)
 							direction = ToolStripDropDownDirection.AboveRight;
 						break;
 				}
@@ -486,12 +486,18 @@ namespace System.Windows.Forms
 					break;
 			}
 
-			// Fix offscreen positions
+			// Fix offscreen horizontal positions
 			if ((show_point.X + this.Width) > max_screen.X)
 				show_point.X = max_screen.X - this.Width;
 			if (show_point.X < 0)
 				show_point.X = 0;
-			
+
+			// Fix offscreen vertical positions
+			if ((show_point.Y + this.Height) > max_screen.Y)
+				show_point.Y = max_screen.Y - this.Height;
+			if (show_point.Y < 0)
+				show_point.Y = 0;
+
 			if (this.Location != show_point)
 				this.Location = show_point;
 
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripRenderer.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripRenderer.cs
index fe40ba3..9696364 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripRenderer.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripRenderer.cs
@@ -60,7 +60,8 @@ namespace System.Windows.Forms
 			ia.SetColorMatrix (grayscale_matrix);
 			
 			Bitmap b = new Bitmap(normalImage.Width, normalImage.Height);
-			Graphics.FromImage(b).DrawImage(normalImage, new Rectangle (0, 0, normalImage.Width, normalImage.Height), 0, 0, normalImage.Width, normalImage.Height, GraphicsUnit.Pixel, ia);
+			using (Graphics g = Graphics.FromImage(b))
+				g.DrawImage(normalImage, new Rectangle (0, 0, normalImage.Width, normalImage.Height), 0, 0, normalImage.Width, normalImage.Height, GraphicsUnit.Pixel, ia);
 			
 			return b;
 		}
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolTip.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolTip.cs
index a5d4a7f..e057b32 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolTip.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolTip.cs
@@ -30,16 +30,10 @@ using System.Drawing;
 using System.Drawing.Text;
 
 namespace System.Windows.Forms {
-#if NET_2_0
 	[DefaultEvent ("Popup")]
-#endif
 	[ProvideProperty ("ToolTip", typeof(System.Windows.Forms.Control))]
 	[ToolboxItemFilter("System.Windows.Forms", ToolboxItemFilterType.Allow)]
-	public
-#if !NET_2_0
-	sealed
-#endif
-	class ToolTip : System.ComponentModel.Component, System.ComponentModel.IExtenderProvider {
+	public class ToolTip : System.ComponentModel.Component, System.ComponentModel.IExtenderProvider {
 		#region Local variables
 		internal bool		is_active;
 		internal int		automatic_delay;
@@ -59,7 +53,6 @@ namespace System.Windows.Forms {
 		internal Timer		timer;				// Used for the various intervals
 		private Form		hooked_form;
 
-#if NET_2_0
 		private bool isBalloon;
 		private bool owner_draw;
 		private bool stripAmpersands;
@@ -67,7 +60,6 @@ namespace System.Windows.Forms {
 		private bool useAnimation;
 		private bool useFading;
 		private object tag;
-#endif
 
 		#endregion	// Local variables
 
@@ -91,10 +83,8 @@ namespace System.Windows.Forms {
 
 				VisibleChanged += new EventHandler(ToolTipWindow_VisibleChanged);
 
-#if NET_2_0
 				// UIA Framework: Used to generate UnPopup
 				VisibleChanged += new EventHandler (OnUIAToolTip_VisibleChanged);
-#endif
 
 				SetStyle (ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint, true);
 				SetStyle (ControlStyles.ResizeRedraw, true);
@@ -183,7 +173,6 @@ namespace System.Windows.Forms {
 					XplatUI.SetTopmost(control.window.Handle, false);
 				}
 			}
-#if NET_2_0
 
 			// UIA Framework
 			private void OnUIAToolTip_VisibleChanged (object sender, EventArgs e)
@@ -199,7 +188,6 @@ namespace System.Windows.Forms {
 					eh (this, e);
 			}
 
-#endif
 
 			#endregion	// ToolTipWindow Class Protected Instance Methods
 
@@ -240,9 +228,7 @@ namespace System.Windows.Forms {
 				Size display_size;
 				XplatUI.GetDisplaySize (out display_size);
 
-#if NET_2_0
 				associated_control = control;
-#endif
 
 				Text = text;
 
@@ -277,10 +263,8 @@ namespace System.Windows.Forms {
 			static object DrawEvent = new object ();
 			static object PopupEvent = new object ();
 	
-#if NET_2_0
 			// UIA Framework
 			static object UnPopupEvent = new object ();
-#endif
 
 			public event DrawToolTipEventHandler Draw {
 				add { Events.AddHandler (DrawEvent, value); }
@@ -292,12 +276,10 @@ namespace System.Windows.Forms {
 				remove { Events.RemoveHandler (PopupEvent, value); }
 			}
 
-#if NET_2_0
 			internal event PopupEventHandler UnPopup {
 				add { Events.AddHandler (UnPopupEvent, value); }
 				remove { Events.RemoveHandler (UnPopupEvent, value); }
 			}
-#endif
 			#endregion
 		}
 		#endregion	// ToolTipWindow Class
@@ -315,12 +297,10 @@ namespace System.Windows.Forms {
 			back_color = SystemColors.Info;
 			fore_color = SystemColors.InfoText;
 			
-#if NET_2_0
 			isBalloon = false;
 			stripAmpersands = false;
 			useAnimation = true;
 			useFading = true;
-#endif
 			tooltip_strings = new Hashtable(5);
 			controls = new ArrayList(5);
 
@@ -329,13 +309,11 @@ namespace System.Windows.Forms {
 			tooltip_window.Draw += new DrawToolTipEventHandler (tooltip_window_Draw);
 			tooltip_window.Popup += new PopupEventHandler (tooltip_window_Popup);
 
-#if NET_2_0
 			// UIA Framework: Static event handlers
 			tooltip_window.UnPopup += delegate (object sender, PopupEventArgs args) {
 				OnUnPopup (args);
 			};
 			UnPopup += new PopupEventHandler (OnUIAUnPopup);
-#endif
 
 			timer = new Timer();
 			timer.Enabled = false;
@@ -345,7 +323,6 @@ namespace System.Windows.Forms {
 
 
 		#region UIA Framework: Events, Delegates and Methods
-#if NET_2_0
 		// NOTE: 
 		//	We are using Reflection to add/remove internal events.
 		//      Class ToolTipListener uses the events.
@@ -386,7 +363,6 @@ namespace System.Windows.Forms {
 				UIAToolTipUnhookUp (sender, args);
 		}
 
-#endif 
 		#endregion
 
 		public ToolTip(System.ComponentModel.IContainer cont) : this() {
@@ -446,7 +422,6 @@ namespace System.Windows.Forms {
 			}
 		}
 
-#if NET_2_0
 		[DefaultValue ("Color [Info]")]
 		public Color BackColor {
 			get { return this.back_color; }
@@ -459,7 +434,6 @@ namespace System.Windows.Forms {
 			get { return this.fore_color; }
 			set { this.fore_color = value; tooltip_window.ForeColor = value; }
 		}
-#endif
 
 		[RefreshProperties (RefreshProperties.All)]
 		public int InitialDelay {
@@ -474,13 +448,11 @@ namespace System.Windows.Forms {
 			}
 		}
 
-#if NET_2_0
 		[DefaultValue (false)]
 		public bool OwnerDraw {
 			get { return this.owner_draw; }
 			set { this.owner_draw = value; }
 		}
-#endif
 
 		[RefreshProperties (RefreshProperties.All)]
 		public int ReshowDelay {
@@ -509,7 +481,6 @@ namespace System.Windows.Forms {
 		}
 
 
-#if NET_2_0
 		[DefaultValue (false)]
 		public bool IsBalloon {
 			get { return isBalloon; }
@@ -579,12 +550,10 @@ namespace System.Windows.Forms {
 			get { return useFading; }
 			set { useFading = value; }
 		}
-#endif
 
 		#endregion	// Public Instance Properties
 
 		#region Protected Properties
-#if NET_2_0
 		protected virtual CreateParams CreateParams
 		{
 			get
@@ -596,7 +565,6 @@ namespace System.Windows.Forms {
 				return cp;
 			}
 		}
-#endif
 		#endregion
 
 		#region Public Instance Methods
@@ -604,10 +572,8 @@ namespace System.Windows.Forms {
 			return false;
 		}
 
-#if NET_2_0
 		[Editor ("System.ComponentModel.Design.MultilineStringEditor, " + Consts.AssemblySystem_Design,
 			 "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
-#endif
 		[Localizable (true)]
 		[DefaultValue ("")]
 		public string GetToolTip (Control control)
@@ -620,20 +586,16 @@ namespace System.Windows.Forms {
 
 		public void RemoveAll() {
 			tooltip_strings.Clear();
-#if NET_2_0
 			//UIA Framework: ToolTip isn't associated anymore
 			foreach (Control control in controls)
 				OnUIAToolTipUnhookUp (this, new ControlEventArgs (control));
-#endif
 
 			controls.Clear();
 		}
 
 		public void SetToolTip(Control control, string caption) {
-#if NET_2_0
 			// UIA Framework
 			OnUIAToolTipHookUp (this, new ControlEventArgs (control));
-#endif
 			tooltip_strings[control] = caption;
 
 			// no need for duplicates
@@ -663,7 +625,6 @@ namespace System.Windows.Forms {
 			return base.ToString() + " InitialDelay: " + initial_delay + ", ShowAlways: " + show_always;
 		}
 
-#if NET_2_0
 		public void Show (string text, IWin32Window window)
 		{
 			Show (text, window, 0);
@@ -757,11 +718,7 @@ namespace System.Windows.Forms {
 			Show (text, window, new Point (x, y), duration);
 		}
 		
-		public
-#else
-		internal
-#endif
-		void Hide (IWin32Window win)
+		public void Hide (IWin32Window win)
  		{
 			timer.Stop ();
 			state = TipState.Initial;
@@ -786,21 +743,17 @@ namespace System.Windows.Forms {
 
 				tooltip_strings.Clear();
 				
-#if NET_2_0
 				//UIA Framework: ToolTip isn't associated anymore
 				foreach (Control control in controls)
 					OnUIAToolTipUnhookUp (this, new ControlEventArgs (control));
-#endif
 				controls.Clear();
 			}
 		}
 
-#if NET_2_0
 		protected void StopTimer ()
 		{
 			timer.Stop ();
 		}
-#endif
 		#endregion	// Protected Instance Methods
 
 		internal enum TipState {
@@ -813,7 +766,6 @@ namespace System.Windows.Forms {
 
 		#region Private Methods
 
-#if NET_2_0
 		private void HookupFormEvents (Form form)
 		{
 			hooked_form = form;
@@ -841,7 +793,6 @@ namespace System.Windows.Forms {
 			control.MouseLeave -= new EventHandler (control_MouseLeave);
 			control.MouseDown -= new MouseEventHandler (control_MouseDown);
 		}
-#endif
 		private void UnhookFormEvents ()
 		{
 			if (hooked_form == null)
@@ -944,11 +895,9 @@ namespace System.Windows.Forms {
 
 		private void tooltip_window_Draw (object sender, DrawToolTipEventArgs e)
 		{
-#if NET_2_0
 			if (OwnerDraw)
 				OnDraw (e);
 			else
-#endif
 				ThemeEngine.Current.DrawToolTip (e.Graphics, e.Bounds, tooltip_window);
 		}
 		
@@ -1003,23 +952,6 @@ namespace System.Windows.Forms {
 				last_control = null;
 		}
 
-#if NET_2_0
-/*
-		private void Hide (Control sender)
-		{
-			timer.Stop();
-
-			if (!MouseInControl (tooltip_window, true) && !MouseInControl (active_control, true)) {
-				active_control = null;
-				tooltip_window.Visible = false;
-			}
-			
-			if (last_control == sender)
-				last_control = null;
-		}
-*/
-#endif
-
 		private void control_MouseMove(object sender, MouseEventArgs e) {
 			if (state != TipState.Down) {
 				timer.Stop();
@@ -1041,14 +973,12 @@ namespace System.Windows.Forms {
 				eh (this, e);
 		}
 
-#if NET_2_0
 		internal void OnUnPopup (PopupEventArgs e)
 		{
 			PopupEventHandler eh = (PopupEventHandler) (Events [UnPopupEvent]);
 			if (eh != null)
 				eh (this, e);
 		}
-#endif
 		
 		internal bool Visible {
 			get { return tooltip_window.Visible; }
@@ -1059,18 +989,12 @@ namespace System.Windows.Forms {
 		static object PopupEvent = new object ();
 		static object DrawEvent = new object ();
 		
-#if NET_2_0
-		public
-#endif		
-		event PopupEventHandler Popup {
+		public event PopupEventHandler Popup {
 			add { Events.AddHandler (PopupEvent, value); }
 			remove { Events.RemoveHandler (PopupEvent, value); }
 		}
 
-#if NET_2_0
-		public
-#endif
-		event DrawToolTipEventHandler Draw {
+		public event DrawToolTipEventHandler Draw {
 			add { Events.AddHandler (DrawEvent, value); }
 			remove { Events.RemoveHandler (DrawEvent, value); }
 		}
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TreeNode.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TreeNode.cs
index 12c1115..c2f2c64 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TreeNode.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TreeNode.cs
@@ -146,21 +146,29 @@ namespace System.Windows.Forms
 		#endregion	// Public Constructors
 
 		#region ICloneable Members
-		public virtual object Clone()
+		public virtual object Clone ()
 		{
 			TreeNode tn = (TreeNode)Activator.CreateInstance (GetType ());
-			tn.Text = text;
+			tn.name = name;
+			tn.text = text;
+			tn.image_key = image_key;
 			tn.image_index = image_index;
 			tn.selected_image_index = selected_image_index;
+			tn.selected_image_key = selected_image_key;
+			tn.state_image_index = state_image_index;
+			tn.state_image_key = state_image_key;
+			tn.tag = tag;
+			tn.check = check;
+			tn.tool_tip_text = tool_tip_text;
+			tn.context_menu = context_menu;
+			tn.context_menu_strip = context_menu_strip;
 			if (nodes != null) {
 				foreach (TreeNode child in nodes)
-					tn.Nodes.Add ((TreeNode)child.Clone ());
+					tn.nodes.Add ((TreeNode)child.Clone ());
 			}
-			tn.Tag = tag;
-			tn.Checked = Checked;
 			if (prop_bag != null)
 				tn.prop_bag = OwnerDrawPropertyBag.Copy (prop_bag);
-			return tn;	
+			return tn;
 		}
 
 		#endregion	// ICloneable Members
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TreeView.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TreeView.cs
index 9dcca0b..202f157 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TreeView.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TreeView.cs
@@ -764,6 +764,16 @@ namespace System.Windows.Forms {
 			Invalidate ();
 		}
 
+		void SetVScrollValue (int value)
+		{
+			if (value > vbar.Maximum)
+				value = vbar.Maximum;
+			else if (value < vbar.Minimum)
+				value = vbar.Minimum;
+
+			vbar.Value = value;
+		}
+		
 		public void ExpandAll ()
 		{
 			BeginUpdate ();
@@ -790,7 +800,7 @@ namespace System.Windows.Forms {
 				return;
 
 			if (IsHandleCreated && vbar.VisibleInternal) {
-				vbar.Value = vbar.Maximum - VisibleCount + 1;
+				SetVScrollValue (vbar.Maximum - VisibleCount + 1);
 			} else {
 				RecalculateVisibleOrder (root_node);
 				UpdateScrollBars (true);
@@ -811,7 +821,7 @@ namespace System.Windows.Forms {
 			EndUpdate ();
 
 			if (vbar.VisibleInternal)
-				vbar.Value = vbar.Maximum - VisibleCount + 1;
+				SetVScrollValue (vbar.Maximum - VisibleCount + 1);
 		}
 
 		public TreeNode GetNodeAt (Point pt) {
@@ -1392,7 +1402,7 @@ namespace System.Windows.Forms {
 				return;
 			}
 
-			vbar.Value = Math.Min (order, vbar.Maximum - VisibleCount + 1);
+			SetVScrollValue (Math.Min (order, vbar.Maximum - VisibleCount + 1));
 		}
 
 		internal void SetBottom (TreeNode node)
@@ -1412,7 +1422,7 @@ namespace System.Windows.Forms {
 
 			int nv = vbar.Value + offset;
 			if (vbar.Value + offset < vbar.Maximum) {
-				vbar.Value = nv;
+				SetVScrollValue (nv);
 			} else {
 #if DEBUG
 				Console.Error.WriteLine ("setting bottom to value greater then maximum ({0}, {1})",
@@ -1896,7 +1906,7 @@ namespace System.Windows.Forms {
 				skipped_nodes = 0;
 				RecalculateVisibleOrder (root_node);
 				vbar.Visible = false;
-				vbar.Value = 0;
+				SetVScrollValue (0);
 				vbar_bounds_set = false;
 			}
 
@@ -2037,9 +2047,9 @@ namespace System.Windows.Forms {
 			}
 
 			if (e.Delta < 0) {
-				vbar.Value = Math.Min(vbar.Value + SystemInformation.MouseWheelScrollLines, vbar.Maximum - VisibleCount + 1);
+				SetVScrollValue (Math.Min (vbar.Value + SystemInformation.MouseWheelScrollLines, vbar.Maximum - VisibleCount + 1));
 			} else {
-				vbar.Value = Math.Max(0, vbar.Value - SystemInformation.MouseWheelScrollLines);
+				SetVScrollValue (Math.Max (0, vbar.Value - SystemInformation.MouseWheelScrollLines));
 			}
 		}
 
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/WebBrowserReadyState.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/WebBrowserReadyState.cs
index 8eaef1c..aec5a6d 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/WebBrowserReadyState.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/WebBrowserReadyState.cs
@@ -27,7 +27,6 @@
 //
 
 
-#if NET_2_0
 namespace System.Windows.Forms
 {
 	public enum WebBrowserReadyState
@@ -39,4 +38,3 @@ namespace System.Windows.Forms
 		Complete = 4
 	}
 }
-#endif
\ No newline at end of file
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/WebBrowserRefreshOption.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/WebBrowserRefreshOption.cs
index aae4e5c..6964e13 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/WebBrowserRefreshOption.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/WebBrowserRefreshOption.cs
@@ -26,8 +26,6 @@
 //	Jonathan Pobst (monkey at jpobst.com)
 //
 
-
-#if NET_2_0
 namespace System.Windows.Forms
 {
 	public enum WebBrowserRefreshOption
@@ -38,4 +36,3 @@ namespace System.Windows.Forms
 		Completely = 3
 	}
 }
-#endif
\ No newline at end of file
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/WebBrowserSiteBase.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/WebBrowserSiteBase.cs
index 70f1399..e18b4e8 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/WebBrowserSiteBase.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/WebBrowserSiteBase.cs
@@ -22,7 +22,6 @@
 // Authors:
 //	Andreia Gaita	<avidigal at novell.com>
 
-#if NET_2_0
 
 using System;
 using System.Collections;
@@ -52,4 +51,3 @@ namespace System.Windows.Forms
 		#endregion
 	}
 }
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/WindowsFormsSection.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/WindowsFormsSection.cs
index 0e995cb..e50fe9d 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/WindowsFormsSection.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/WindowsFormsSection.cs
@@ -20,8 +20,6 @@
 // Copyright (c) 2007 Novell, Inc.
 //
 
-#if NET_2_0
-
 using System;
 using System.Configuration;
 
@@ -51,4 +49,3 @@ namespace System.Windows.Forms
 		}
 	}
 }
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/WindowsFormsSynchronizationContext.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/WindowsFormsSynchronizationContext.cs
index 8f3c18c..c319f9d 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/WindowsFormsSynchronizationContext.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/WindowsFormsSynchronizationContext.cs
@@ -24,7 +24,6 @@ using System;
 using System.Threading;
 using System.ComponentModel;
 
-#if NET_2_0
 
 // Some implementation details:
 // http://msdn.microsoft.com/msdnmag/issues/06/06/NETMatters/default.aspx
@@ -88,4 +87,3 @@ namespace System.Windows.Forms
 		#endregion
 	}
 }
-#endif
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/X11Keyboard.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/X11Keyboard.cs
index 3a17e74..fc0c7fe 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/X11Keyboard.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/X11Keyboard.cs
@@ -32,6 +32,7 @@
 // 
 using System;
 using System.Collections;
+using System.Diagnostics;
 using System.Drawing;
 using System.Text;
 using System.Globalization;
@@ -51,7 +52,7 @@ namespace System.Windows.Forms {
 		private XIMProperties ximStyle;
 		private EventMask xic_event_mask = EventMask.NoEventMask;
 		private StringBuilder lookup_buffer;
-		private byte [] utf8_buffer;
+		private byte [] lookup_byte_buffer = new byte [100];
 		private int min_keycode, max_keycode, keysyms_per_keycode, syms;
 		private int [] keyc2vkey = new int [256];
 		private int [] keyc2scan = new int [256];
@@ -130,8 +131,6 @@ namespace System.Windows.Forms {
 			xim = XOpenIM (display, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero);
 			if (xim == IntPtr.Zero) 
 				Console.Error.WriteLine ("Could not get XIM");
-			else 
-				utf8_buffer = new byte [100];
 
 			initialized = true;
 		}
@@ -1027,10 +1026,10 @@ namespace System.Windows.Forms {
 
 			public XIMCallbackContext (IntPtr clientWindow)
 			{
-				startCB = new XIMCallback (IntPtr.Zero, DoPreeditStart);
-				doneCB = new XIMCallback (IntPtr.Zero, DoPreeditDone);
-				drawCB = new XIMCallback (IntPtr.Zero, DoPreeditDraw);
-				caretCB = new XIMCallback (IntPtr.Zero, DoPreeditCaret);
+				startCB = new XIMCallback (clientWindow, DoPreeditStart);
+				doneCB = new XIMCallback (clientWindow, DoPreeditDone);
+				drawCB = new XIMCallback (clientWindow, DoPreeditDraw);
+				caretCB = new XIMCallback (clientWindow, DoPreeditCaret);
 				pStartCB = Marshal.AllocHGlobal (Marshal.SizeOf (typeof (XIMCallback)));
 				pDoneCB = Marshal.AllocHGlobal (Marshal.SizeOf (typeof (XIMCallback)));
 				pDrawCB = Marshal.AllocHGlobal (Marshal.SizeOf (typeof (XIMCallback)));
@@ -1064,27 +1063,29 @@ namespace System.Windows.Forms {
 
 			int DoPreeditStart (IntPtr xic, IntPtr clientData, IntPtr callData)
 			{
-				Console.WriteLine ("DoPreeditStart");
+				Debug.WriteLine ("DoPreeditStart");
+				XplatUI.SendMessage(clientData, Msg.WM_XIM_PREEDITSTART, clientData, callData);
 				return 100;
 			}
 
 			int DoPreeditDone (IntPtr xic, IntPtr clientData, IntPtr callData)
 			{
-				Console.WriteLine ("DoPreeditDone");
+				Debug.WriteLine ("DoPreeditDone");
+				XplatUI.SendMessage(clientData, Msg.WM_XIM_PREEDITDONE, clientData, callData);
 				return 0;
 			}
 
 			int DoPreeditDraw (IntPtr xic, IntPtr clientData, IntPtr callData)
 			{
-				Console.WriteLine ("DoPreeditDraw");
-				//XIMPreeditDrawCallbackStruct cd = (XIMPreeditDrawCallbackStruct) Marshal.PtrToStructure (callData, typeof (XIMPreeditDrawCallbackStruct));
+				Debug.WriteLine ("DoPreeditDraw");
+				XplatUI.SendMessage(clientData, Msg.WM_XIM_PREEDITDRAW, clientData, callData);
 				return 0;
 			}
 
 			int DoPreeditCaret (IntPtr xic, IntPtr clientData, IntPtr callData)
 			{
-				Console.WriteLine ("DoPreeditCaret");
-				//XIMPreeditCaretCallbackStruct cd = (XIMPreeditCaretCallbackStruct) Marshal.PtrToStructure (callData, typeof (XIMPreeditCaretCallbackStruct));
+				Debug.WriteLine ("DoPreeditCaret");
+				XplatUI.SendMessage(clientData, Msg.WM_XIM_PREEDITCARET, clientData, callData);
 				return 0;
 			}
 
@@ -1181,19 +1182,26 @@ namespace System.Windows.Forms {
 			IntPtr xic = GetXic (client_window);
 			if (xic != IntPtr.Zero) {
 				do {
-					res = Xutf8LookupString (xic, ref xevent, utf8_buffer, 100, out keysym_res,  out status);
+					res = Xutf8LookupString (xic, ref xevent, lookup_byte_buffer, 100, out keysym_res,  out status);
 					if ((int) status != -1) // XLookupBufferOverflow
 						break;
-					utf8_buffer = new byte [utf8_buffer.Length << 1];
+					lookup_byte_buffer = new byte [lookup_byte_buffer.Length << 1];
 				} while (true);
 				lookup_buffer.Length = 0;
-				string s = Encoding.UTF8.GetString (utf8_buffer, 0, res);
+				string s = Encoding.UTF8.GetString (lookup_byte_buffer, 0, res);
 				lookup_buffer.Append (s);
 				keysym = (XKeySym) keysym_res.ToInt32 ();
 				return s.Length;
 			} else {
+				do {
+					res = XLookupString (ref xevent, lookup_byte_buffer, 100, out keysym_res, out status);
+					if ((int) status != -1) // XLookupBufferOverflow
+						break;
+					lookup_byte_buffer = new byte [lookup_byte_buffer.Length << 1];
+				} while (true);
 				lookup_buffer.Length = 0;
-				res = XLookupString (ref xevent, lookup_buffer, len, out keysym_res, IntPtr.Zero);
+				string s = Encoding.ASCII.GetString (lookup_byte_buffer, 0, res);
+				lookup_buffer.Append (s);
 				keysym = (XKeySym) keysym_res.ToInt32 ();
 				return res;
 			}
@@ -1259,7 +1267,7 @@ namespace System.Windows.Forms {
 		private static extern bool XSetLocaleModifiers (string mods);
 
 		[DllImport ("libX11")]
-		internal extern static int XLookupString(ref XEvent xevent, StringBuilder buffer, int num_bytes, out IntPtr keysym, IntPtr status);
+		internal extern static int XLookupString(ref XEvent xevent, byte [] buffer, int num_bytes, out IntPtr keysym, out IntPtr status);
 		[DllImport ("libX11")]
 		internal extern static int Xutf8LookupString(IntPtr xic, ref XEvent xevent, byte [] buffer, int num_bytes, out IntPtr keysym, out IntPtr status);
 
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/X11Structs.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/X11Structs.cs
index abb0fee..f2dd4ca 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/X11Structs.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/X11Structs.cs
@@ -1717,11 +1717,26 @@ namespace System.Windows.Forms {
 			gch.Free ();
 		}
 	}
+	
+	internal enum XIMFeedback
+	{
+		Reverse = 1,
+		Underline = 2,
+		Highlight = 4,
+		Primary = 32,
+		Secondary = 64,
+		Tertiary = 128,
+	}
 
+	internal struct XIMFeedbackStruct
+	{
+		public byte FeedbackMask; // one or more of XIMFeedback enum
+	}
+	
 	internal struct XIMText
 	{
 		public ushort Length;
-		public IntPtr Feedback;
+		public IntPtr Feedback; // to XIMFeedbackStruct
 		public bool EncodingIsWChar;
 		public IntPtr String; // it could be either char* or wchar_t*
 	}
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/XplatUI.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/XplatUI.cs
index 8d3facf..e106025 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/XplatUI.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/XplatUI.cs
@@ -48,9 +48,17 @@ namespace System.Windows.Forms {
 		#endregion	// Local Variables
 
 		#region Private Methods
-		internal static string Window(IntPtr handle) {
-			return String.Format("'{0}' ({1:X})", Control.FromHandle(handle), handle.ToInt32());
+		internal static string Window (IntPtr handle)
+		{
+			return String.Format ("'{0}' ({1:X})", Control.FromHandle (handle), handle.ToInt32 ());
 		}
+
+		[Conditional ("DriverDebug")]
+		static void DriverDebug (string format, params object [] args)
+		{
+			Console.WriteLine (String.Format (format, args));
+		}
+		
 		#endregion	// Private Methods
 
 		#region Subclasses
@@ -77,11 +85,12 @@ namespace System.Windows.Forms {
 		#endregion	// Subclasses
 
 		#region Constructor & Destructor
-		static XplatUI() {
+		static XplatUI ()
+		{
 			// Compose name with current domain id because on Win32 we register class name
 			// and name must be unique to process. If we load MWF into multiple appdomains
 			// and try to register same class name we fail.
-			default_class_name = "SWFClass" + System.Threading.Thread.GetDomainID().ToString();
+			default_class_name = "SWFClass" + System.Threading.Thread.GetDomainID ().ToString ();
 
 			if (RunningOnUnix) {
 				//if (Environment.GetEnvironmentVariable ("not_supported_MONO_MWF_USE_NEW_X11_BACKEND") != null) {
@@ -105,20 +114,18 @@ namespace System.Windows.Forms {
 					Marshal.FreeHGlobal (buf);
 				}
 			} else {
-				driver=XplatUIWin32.GetInstance();
+				driver=XplatUIWin32.GetInstance ();
 			}
 
-			driver.InitializeDriver();
+			driver.InitializeDriver ();
 
 			// Initialize things that need to be done after the driver is ready
-			DataFormats.GetFormat(0);
+			DataFormats.GetFormat (0);
 
-#if NET_2_0
 			// Signal that the Application loop can be run.
 			// This allows UIA to initialize a11y support for MWF
 			// before the main loop begins.
 			Application.FirePreRun ();
-#endif
 		}
 		#endregion	// Constructor & Destructor
 
@@ -136,14 +143,12 @@ namespace System.Windows.Forms {
 			get { return driver.ActiveWindowTrackingDelay; }
 		}
 
-		internal static string DefaultClassName {
-			get {
-				return default_class_name;
-			}
-
-			set {
-				default_class_name=value;
-			}
+		// Compose name with current domain id because on Win32 we register class name
+		// and name must be unique to process. If we load MWF into multiple appdomains
+		// and try to register same class name we fail.
+		internal static string GetDefaultClassName (Type type)
+		{
+			return "SWFClass" + Thread.GetDomainID ().ToString () + "." + type.ToString ();
 		}
 
 		static public Size Border3DSize {
@@ -374,11 +379,9 @@ namespace System.Windows.Forms {
 			get { return driver.PopupMenuAlignment; }
 		}
 		
-#if NET_2_0
 		public static PowerStatus PowerStatus {
 			get { return driver.PowerStatus; }
 		}
-#endif
 
 		public static bool RequiresPositiveClientAreaSize {
 			get {
@@ -457,18 +460,16 @@ namespace System.Windows.Forms {
 		#endregion	// Events
 
 		#region Public Static Methods
-		internal static void Activate(IntPtr handle) {
-			#if DriverDebug
-				Console.WriteLine("Activate({0}): Called", Window(handle));
-			#endif
-			driver.Activate(handle);
+		internal static void Activate (IntPtr handle)
+		{
+			DriverDebug ("Activate ({0}): Called", Window (handle));
+			driver.Activate (handle);
 		}
 
-		internal static void AudibleAlert(AlertType alert) {
-			#if DriverDebug
-				Console.WriteLine("AudibleAlert(): Called");
-			#endif
-			driver.AudibleAlert(alert);
+		internal static void AudibleAlert (AlertType alert)
+		{
+			DriverDebug ("AudibleAlert (): Called");
+			driver.AudibleAlert (alert);
 		}
 
 		internal static void BeginMoveResize (IntPtr handle)
@@ -476,748 +477,671 @@ namespace System.Windows.Forms {
 			driver.BeginMoveResize (handle);
 		}
 
-		internal static bool CalculateWindowRect(ref Rectangle ClientRect, CreateParams cp, Menu menu, out Rectangle WindowRect) {
-			#if DriverDebug
-				Console.WriteLine("CalculateWindowRect({0}, {1}, {2}): Called", ClientRect, cp, menu);
-			#endif
-			return driver.CalculateWindowRect(ref ClientRect, cp, menu, out WindowRect);
+		internal static bool CalculateWindowRect (ref Rectangle ClientRect, CreateParams cp, Menu menu, out Rectangle WindowRect)
+		{
+			DriverDebug ("CalculateWindowRect ({0}, {1}, {2}): Called", ClientRect, cp, menu);
+			return driver.CalculateWindowRect (ref ClientRect, cp, menu, out WindowRect);
 		}
 
-		internal static void CaretVisible(IntPtr handle, bool visible) {
-			#if DriverDebug
-				Console.WriteLine("CaretVisible({0:X}, {1}): Called", handle.ToInt32(), visible);
-			#endif
-			driver.CaretVisible(handle, visible);
+		internal static void CaretVisible (IntPtr handle, bool visible)
+		{
+			DriverDebug ("CaretVisible ({0:X}, {1}): Called", handle.ToInt32 (), visible);
+			driver.CaretVisible (handle, visible);
 		}
 
-		internal static void CreateCaret(IntPtr handle, int width, int height) {
-			#if DriverDebug
-				Console.WriteLine("CreateCaret({0:X}), {1}, {2}: Called", handle.ToInt32(), width, height);
-			#endif
-			driver.CreateCaret(handle, width, height);
+		internal static void CreateCaret (IntPtr handle, int width, int height)
+		{
+			DriverDebug ("CreateCaret ({0:X}), {1}, {2}: Called", handle.ToInt32 (), width, height);
+			driver.CreateCaret (handle, width, height);
 		}
 
-		internal static IntPtr CreateWindow(CreateParams cp) {
+		internal static IntPtr CreateWindow (CreateParams cp)
+		{
 			#if DriverDebug || DriverDebugCreate
 				IntPtr handle;
 
-				handle = driver.CreateWindow(cp);
+				handle = driver.CreateWindow (cp);
 
-				Console.WriteLine("CreateWindow(): Called, returning {0:X}", handle.ToInt32());
+				Console.WriteLine ("CreateWindow (): Called, returning {0:X}", handle.ToInt32 ());
 				return handle;
 			#else
-				return driver.CreateWindow(cp);
+				return driver.CreateWindow (cp);
 			#endif
 		}
 
-		internal static IntPtr CreateWindow(IntPtr Parent, int X, int Y, int Width, int Height) {
+		internal static IntPtr CreateWindow (IntPtr Parent, int X, int Y, int Width, int Height)
+		{
 			#if DriverDebug || DriverDebugCreate
-				Console.WriteLine("CreateWindow(): Called");
+				Console.WriteLine ("CreateWindow (): Called");
 			#endif
-			return driver.CreateWindow(Parent, X, Y, Width, Height);
+			return driver.CreateWindow (Parent, X, Y, Width, Height);
 		}
 
-		internal static void ClientToScreen(IntPtr handle, ref int x, ref int y) {
+		internal static void ClientToScreen (IntPtr handle, ref int x, ref int y)
+		{
 			#if DriverDebug
-				Console.WriteLine("ClientToScreen({0}, {1}, {2}): Called", Window(handle), x, y);
+				Console.WriteLine ("ClientToScreen ({0}, {1}, {2}): Called", Window (handle), x, y);
 			#endif
-			driver.ClientToScreen(handle, ref x, ref y);
+			driver.ClientToScreen (handle, ref x, ref y);
 		}
 
-		internal static int[] ClipboardAvailableFormats(IntPtr handle) {
-			#if DriverDebug
-				Console.WriteLine("ClipboardAvailableTypes({0:X}): Called", handle.ToInt32());
-			#endif
-			return driver.ClipboardAvailableFormats(handle);
+		internal static int[] ClipboardAvailableFormats (IntPtr handle)
+		{
+			DriverDebug ("ClipboardAvailableTypes ({0:X}): Called", handle.ToInt32 ());
+			return driver.ClipboardAvailableFormats (handle);
 		}
 
-		internal static void ClipboardClose(IntPtr handle) {
-			#if DriverDebug
-				Console.WriteLine("ClipboardClose({0:X}): Called", handle.ToInt32());
-			#endif
-			driver.ClipboardClose(handle);
+		internal static void ClipboardClose (IntPtr handle)
+		{
+			DriverDebug ("ClipboardClose ({0:X}): Called", handle.ToInt32 ());
+			driver.ClipboardClose (handle);
 		}
 
-		internal static int ClipboardGetID(IntPtr handle, string format) {
-			#if DriverDebug
-				Console.WriteLine("ClipboardGetID({0:X}, {1}): Called", handle.ToInt32(), format);
-			#endif
-			return driver.ClipboardGetID(handle, format);
+		internal static int ClipboardGetID (IntPtr handle, string format)
+		{
+			DriverDebug ("ClipboardGetID ({0:X}, {1}): Called", handle.ToInt32 (), format);
+			return driver.ClipboardGetID (handle, format);
 		}
 
-		internal static IntPtr ClipboardOpen(bool primary_selection) {
-			#if DriverDebug
-				Console.WriteLine("ClipboardOpen(): Called");
-			#endif
+		internal static IntPtr ClipboardOpen (bool primary_selection)
+		{
+			DriverDebug ("ClipboardOpen (): Called");
 			return driver.ClipboardOpen (primary_selection);
 		}
 
-		internal static void ClipboardStore(IntPtr handle, object obj, int type, XplatUI.ObjectToClipboard converter) {
-			#if DriverDebug
-				Console.WriteLine("ClipboardStore({0:X}, {1}, {2}): Called", handle.ToInt32(), obj, type, converter);
-			#endif
-			driver.ClipboardStore(handle, obj, type, converter);
+		internal static void ClipboardStore (IntPtr handle, object obj, int type, XplatUI.ObjectToClipboard converter)
+		{
+			DriverDebug ("ClipboardStore ({0:X}, {1}, {2}): Called", handle.ToInt32 (), obj, type, converter);
+			driver.ClipboardStore (handle, obj, type, converter);
 		}
 
-		internal static object ClipboardRetrieve(IntPtr handle, int type, XplatUI.ClipboardToObject converter) {
-			#if DriverDebug
-				Console.WriteLine("ClipboardRetrieve({0:X}, type, {1}): Called", handle.ToInt32(), converter);
-			#endif
-			return driver.ClipboardRetrieve(handle, type, converter);
+		internal static object ClipboardRetrieve (IntPtr handle, int type, XplatUI.ClipboardToObject converter)
+		{
+			DriverDebug ("ClipboardRetrieve ({0:X}, type, {1}): Called", handle.ToInt32 (), converter);
+			return driver.ClipboardRetrieve (handle, type, converter);
 		}
 
-		internal static IntPtr DefineCursor(Bitmap bitmap, Bitmap mask, Color cursor_pixel, Color mask_pixel, int xHotSpot, int yHotSpot) {
-			#if DriverDebug
-				Console.WriteLine("DefineCursor(...): Called");
-			#endif
-			return driver.DefineCursor(bitmap, mask, cursor_pixel, mask_pixel, xHotSpot, yHotSpot);
+		internal static IntPtr DefineCursor (Bitmap bitmap, Bitmap mask, Color cursor_pixel, Color mask_pixel, int xHotSpot, int yHotSpot)
+		{
+			DriverDebug ("DefineCursor (...): Called");
+			return driver.DefineCursor (bitmap, mask, cursor_pixel, mask_pixel, xHotSpot, yHotSpot);
 		}
 
-		internal static IntPtr DefineStdCursor(StdCursor id) {
-			return driver.DefineStdCursor(id);
+		internal static IntPtr DefineStdCursor (StdCursor id)
+		{
+			return driver.DefineStdCursor (id);
 		}
 		
-		internal static Bitmap DefineStdCursorBitmap(StdCursor id) {
-			return driver.DefineStdCursorBitmap(id);
+		internal static Bitmap DefineStdCursorBitmap (StdCursor id)
+		{
+			return driver.DefineStdCursorBitmap (id);
 		}
 
-		internal static IntPtr DefWndProc(ref Message msg) {
-			return driver.DefWndProc(ref msg);
+		internal static IntPtr DefWndProc (ref Message msg)
+		{
+			return driver.DefWndProc (ref msg);
 		}
 
-		internal static void DestroyCaret(IntPtr handle) {
-			#if DriverDebug
-				Console.WriteLine("DestroyCaret({0:X}): Called", handle.ToInt32());
-			#endif
-			driver.DestroyCaret(handle);
+		internal static void DestroyCaret (IntPtr handle)
+		{
+			DriverDebug ("DestroyCaret ({0:X}): Called", handle.ToInt32 ());
+			driver.DestroyCaret (handle);
 		}
 
-		internal static void DestroyCursor(IntPtr cursor) {
-			#if DriverDebug
-				Console.WriteLine("DestroyCursor({0:X}): Called", cursor.ToInt32());
-			#endif
-			driver.DestroyCursor(cursor);
+		internal static void DestroyCursor (IntPtr cursor)
+		{
+			DriverDebug ("DestroyCursor ({0:X}): Called", cursor.ToInt32 ());
+			driver.DestroyCursor (cursor);
 		}
 
-		internal static void DestroyWindow(IntPtr handle) {
-			#if DriverDebug || DriverDebugDestroy
-				Console.WriteLine("DestroyWindow({0}): Called", Window(handle));
-			#endif
-			driver.DestroyWindow(handle);
+		internal static void DestroyWindow (IntPtr handle)
+		{
+			DriverDebug ("DestroyWindow ({0}): Called", Window (handle));
+			driver.DestroyWindow (handle);
 		}
 
-		internal static IntPtr DispatchMessage(ref MSG msg) {
-			return driver.DispatchMessage(ref msg);
+		internal static IntPtr DispatchMessage (ref MSG msg)
+		{
+			return driver.DispatchMessage (ref msg);
 		}
 
-		internal static void DoEvents() {
-			driver.DoEvents();
+		internal static void DoEvents ()
+		{
+			driver.DoEvents ();
 		}
 
-		internal static void DrawReversibleRectangle(IntPtr handle, Rectangle rect, int line_width) {
-			#if DriverDebug
-				Console.WriteLine("DrawReversibleRectangle({0}, {1}, {2}): Called", Window(handle), rect, line_width);
-			#endif
-			driver.DrawReversibleRectangle(handle, rect, line_width);
+		internal static void DrawReversibleRectangle (IntPtr handle, Rectangle rect, int line_width)
+		{
+			DriverDebug ("DrawReversibleRectangle ({0}, {1}, {2}): Called", Window (handle), rect, line_width);
+			driver.DrawReversibleRectangle (handle, rect, line_width);
 		}
 
 		internal static void FillReversibleRectangle (Rectangle rectangle, Color backColor)
 		{
-			#if DriverDebug
-				Console.WriteLine("FillReversibleRectangle({0}, {1}): Called", rectangle, backColor);
-			#endif
+			DriverDebug ("FillReversibleRectangle ({0}, {1}): Called", rectangle, backColor);
 			driver.FillReversibleRectangle (rectangle, backColor);
 		}
 
 		internal static void DrawReversibleFrame (Rectangle rectangle, Color backColor, FrameStyle style)
 		{
-			#if DriverDebug
-				Console.WriteLine("DrawReversibleFrame({0}, {1}, {2}): Called", rectangle, backColor, style);
-			#endif
+			DriverDebug ("DrawReversibleFrame ({0}, {1}, {2}): Called", rectangle, backColor, style);
 			driver.DrawReversibleFrame (rectangle, backColor, style);
 		}
 
 		internal static void DrawReversibleLine (Point start, Point end, Color backColor)
 		{
-			#if DriverDebug
-				Console.WriteLine("DrawReversibleLine({0}, {1}, {2}): Called", start, end, backColor);
-			#endif
+			DriverDebug ("DrawReversibleLine ({0}, {1}, {2}): Called", start, end, backColor);
 			driver.DrawReversibleLine (start, end, backColor);
 		}
 
-		internal static void EnableThemes() {
-			driver.EnableThemes();
+		internal static void EnableThemes ()
+		{
+			driver.EnableThemes ();
 		}
 
-		internal static void EnableWindow(IntPtr handle, bool Enable) {
-			#if DriverDebug || DriverDebugState
-				Console.WriteLine("EnableWindow({0}, {1}): Called", Window(handle), Enable);
-			#endif
-			driver.EnableWindow(handle, Enable);
+		internal static void EnableWindow (IntPtr handle, bool Enable)
+		{
+			DriverDebug ("EnableWindow ({0}, {1}): Called", Window (handle), Enable);
+			driver.EnableWindow (handle, Enable);
 		}
 
-		internal static void EndLoop(Thread thread) {
-			#if DriverDebug
-				Console.WriteLine("EndLoop({0:X}): Called", thread.GetHashCode());
-			#endif
-			driver.EndLoop(thread);
+		internal static void EndLoop (Thread thread)
+		{
+			DriverDebug ("EndLoop ({0:X}): Called", thread.GetHashCode ());
+			driver.EndLoop (thread);
 		}
 
-		internal static IntPtr GetActive() {
-			#if DriverDebug
-				Console.WriteLine("GetActive(): Called");
-			#endif
-			return driver.GetActive();
+		internal static IntPtr GetActive ()
+		{
+			DriverDebug ("GetActive (): Called");
+			return driver.GetActive ();
 		}
 
-		internal static SizeF GetAutoScaleSize(Font font) {
-			#if DriverDebug
-				Console.WriteLine("GetAutoScaleSize({0}): Called", font);
-			#endif
-			return driver.GetAutoScaleSize(font);
+		internal static SizeF GetAutoScaleSize (Font font)
+		{
+			DriverDebug ("GetAutoScaleSize ({0}): Called", font);
+			return driver.GetAutoScaleSize (font);
 		}
 
-		internal static Region GetClipRegion(IntPtr handle) {
-			#if DriverDebug
-				Console.WriteLine("GetClipRegion({0}): Called", Window(handle));
-			#endif
-			return driver.GetClipRegion(handle);
+		internal static Region GetClipRegion (IntPtr handle)
+		{
+			DriverDebug ("GetClipRegion ({0}): Called", Window (handle));
+			return driver.GetClipRegion (handle);
 		}
 
-		internal static void GetCursorInfo(IntPtr cursor, out int width, out int height, out int hotspot_x, out int hotspot_y) {
-			#if DriverDebug
-				Console.WriteLine("GetCursorInfo({0}): Called", cursor.ToInt32());
-			#endif
-			driver.GetCursorInfo(cursor, out width, out height, out hotspot_x, out hotspot_y);
+		internal static void GetCursorInfo (IntPtr cursor, out int width, out int height, out int hotspot_x, out int hotspot_y)
+		{
+			DriverDebug ("GetCursorInfo ({0}): Called", cursor.ToInt32 ());
+			driver.GetCursorInfo (cursor, out width, out height, out hotspot_x, out hotspot_y);
 		}
 
-		internal static void GetCursorPos(IntPtr handle, out int x, out int y) {
-			#if DriverDebug
-				Console.WriteLine("GetCursorPos({0}): Called", Window(handle));
-			#endif
-			driver.GetCursorPos(handle, out x, out y);
+		internal static void GetCursorPos (IntPtr handle, out int x, out int y)
+		{
+			DriverDebug ("GetCursorPos ({0}): Called", Window (handle));
+			driver.GetCursorPos (handle, out x, out y);
 		}
 
-		internal static void GetDisplaySize(out Size size) {
-			#if DriverDebug
-				Console.WriteLine("GetDisplaySize(): Called");
-			#endif
-			driver.GetDisplaySize(out size);
+		internal static void GetDisplaySize (out Size size) 
+		{
+			DriverDebug ("GetDisplaySize (): Called");
+			driver.GetDisplaySize (out size);
 		}
 
-		internal static IntPtr GetFocus() {
-			#if DriverDebug
-				Console.WriteLine("GetFocus(): Called, Result:{0}", Window(driver.GetFocus()));
-			#endif
-			return driver.GetFocus();
+		internal static IntPtr GetFocus ()
+		{
+			DriverDebug ("GetFocus (): Called, Result:{0}", Window (driver.GetFocus ()));
+			return driver.GetFocus ();
 		}
 
-		internal static bool GetFontMetrics(Graphics g, Font font, out int ascent, out int descent) {
-			#if DriverDebug
-				Console.WriteLine("GetFontMetrics(): Called");
-			#endif
-			return driver.GetFontMetrics(g, font, out ascent, out descent);
+		internal static bool GetFontMetrics (Graphics g, Font font, out int ascent, out int descent)
+		{
+			DriverDebug ("GetFontMetrics (): Called");
+			return driver.GetFontMetrics (g, font, out ascent, out descent);
 		}
 			
-		internal static Point GetMenuOrigin(IntPtr handle) {
-			#if DriverDebug
-				Console.WriteLine("GetMenuOrigin({0}): Called", Window(handle));
-			#endif
-			return driver.GetMenuOrigin(handle);
+		internal static Point GetMenuOrigin (IntPtr handle)
+		{
+			DriverDebug ("GetMenuOrigin ({0}): Called", Window (handle));
+			return driver.GetMenuOrigin (handle);
 		}
 
-		internal static bool GetMessage(object queue_id, ref MSG msg, IntPtr hWnd, int wFilterMin, int wFilterMax) {
-			return driver.GetMessage(queue_id, ref msg, hWnd, wFilterMin, wFilterMax);
+		internal static bool GetMessage (object queue_id, ref MSG msg, IntPtr hWnd, int wFilterMin, int wFilterMax)
+		{
+			return driver.GetMessage (queue_id, ref msg, hWnd, wFilterMin, wFilterMax);
 		}
 
-		internal static IntPtr GetParent(IntPtr handle) {
-			#if DriverDebug
-				Console.WriteLine("GetParent({0}): Called", Window(handle));
-			#endif
-			return driver.GetParent(handle);
+		internal static IntPtr GetParent (IntPtr handle)
+		{
+			DriverDebug ("GetParent ({0}): Called", Window (handle));
+			return driver.GetParent (handle);
 		}
 
-		internal static IntPtr GetPreviousWindow(IntPtr handle) {
-			return driver.GetPreviousWindow(handle);
+		internal static IntPtr GetPreviousWindow (IntPtr handle)
+		{
+			return driver.GetPreviousWindow (handle);
 		}
 
-		internal static bool GetText(IntPtr handle, out string text) {
-			#if DriverDebug
-				Console.WriteLine("GetText({0}): Called", Window(handle));
-			#endif
-			return driver.GetText(handle, out text);
+		internal static bool GetText (IntPtr handle, out string text)
+		{
+			DriverDebug ("GetText ({0}): Called", Window (handle));
+			return driver.GetText (handle, out text);
 		}
 
-		internal static void GetWindowPos(IntPtr handle, bool is_toplevel, out int x, out int y, out int width, out int height, out int client_width, out int client_height) {
-			#if DriverDebug
-				Console.WriteLine("GetWindowPos({0}): Called", Window(handle));
-			#endif
-			driver.GetWindowPos(handle, is_toplevel, out x, out y, out width, out height, out client_width, out client_height);
+		internal static void GetWindowPos (IntPtr handle, bool is_toplevel, out int x, out int y, out int width, out int height, out int client_width, out int client_height)
+		{
+			DriverDebug ("GetWindowPos ({0}): Called", Window (handle));
+			driver.GetWindowPos (handle, is_toplevel, out x, out y, out width, out height, out client_width, out client_height);
 		}
 
 		/* this method can (and does, on X11) return
-		 * (FormWindowState)(-1), when the state of the window
+		 * (FormWindowState) (-1), when the state of the window
 		 * cannot be determined (in the X11 case, when the
 		 * window isn't mapped.)  Checking for the additional
 		 * return value is less expensive than
 		 * throwing/catching an exception. */
-		internal static FormWindowState GetWindowState(IntPtr handle) {
-			#if DriverDebug
-				Console.WriteLine("GetWindowState({0}): Called", Window(handle));
-			#endif
-			return driver.GetWindowState(handle);
+		internal static FormWindowState GetWindowState (IntPtr handle)
+		{
+			DriverDebug ("GetWindowState ({0}): Called", Window (handle));
+			return driver.GetWindowState (handle);
 		}
 
-		internal static void GrabInfo(out IntPtr handle, out bool GrabConfined, out Rectangle GrabArea) {
-			#if DriverDebug
-				Console.WriteLine("GrabInfo(): Called");
-			#endif
-			driver.GrabInfo(out handle, out GrabConfined, out GrabArea);
+		internal static void GrabInfo (out IntPtr handle, out bool GrabConfined, out Rectangle GrabArea)
+		{
+			DriverDebug ("GrabInfo (): Called");
+			driver.GrabInfo (out handle, out GrabConfined, out GrabArea);
 		}
 
-		internal static void GrabWindow(IntPtr handle, IntPtr ConfineToHwnd) {
-			#if DriverDebug
-				Console.WriteLine("GrabWindow({0}, {1}): Called", Window(handle), Window(ConfineToHwnd));
-			#endif
-			driver.GrabWindow(handle, ConfineToHwnd);
+		internal static void GrabWindow (IntPtr handle, IntPtr ConfineToHwnd)
+		{
+			DriverDebug ("GrabWindow ({0}, {1}): Called", Window (handle), Window (ConfineToHwnd));
+			driver.GrabWindow (handle, ConfineToHwnd);
 		}
 
-		internal static void HandleException(Exception e) {
-			driver.HandleException(e);
+		internal static void HandleException (Exception e)
+		{
+			driver.HandleException (e);
 		}
 
-		internal static void Invalidate(IntPtr handle, Rectangle rc, bool clear) {
-			#if DriverDebug
-				Console.WriteLine("Invalidate({0}, {1}, {2}): Called", Window(handle), rc, clear);
-			#endif
-			driver.Invalidate(handle, rc, clear);
+		internal static void Invalidate (IntPtr handle, Rectangle rc, bool clear)
+		{
+			DriverDebug ("Invalidate ({0}, {1}, {2}): Called", Window (handle), rc, clear);
+			driver.Invalidate (handle, rc, clear);
 		}
 
 		internal static void InvalidateNC (IntPtr handle)
 		{
-			#if DriverDebug
-				Console.WriteLine("InvalidateNC({0}): Called", Window(handle));
-			#endif
-			driver.InvalidateNC(handle);
+			DriverDebug ("InvalidateNC ({0}): Called", Window (handle));
+			driver.InvalidateNC (handle);
 		}
 
 
-		internal static bool IsEnabled(IntPtr handle) {
+		internal static bool IsEnabled (IntPtr handle)
+		{
 			#if DriverDebug || DriverDebugState
-				Console.WriteLine("IsEnabled({0}): Called, Result={1}", Window(handle), driver.IsEnabled(handle));
+				Console.WriteLine ("IsEnabled ({0}): Called, Result={1}", Window (handle), driver.IsEnabled (handle));
 			#endif
-			return driver.IsEnabled(handle);
+			return driver.IsEnabled (handle);
 		}
 
 		internal static bool IsKeyLocked (VirtualKeys key)
 		{
 			#if DriverDebug || DriverDebugState
-				Console.WriteLine("IsKeyLocked({0}): Called, Result={1}", key, driver.IsKeyLocked(key));
+				Console.WriteLine ("IsKeyLocked ({0}): Called, Result={1}", key, driver.IsKeyLocked (key));
 			#endif
 			return driver.IsKeyLocked (key);
 		}
 
-		internal static bool IsVisible(IntPtr handle) {
+		internal static bool IsVisible (IntPtr handle)
+		{
 			#if DriverDebug || DriverDebugState
-				Console.WriteLine("IsVisible({0}): Called, Result={1}", Window(handle), driver.IsVisible(handle));
+				Console.WriteLine ("IsVisible ({0}): Called, Result={1}", Window (handle), driver.IsVisible (handle));
 			#endif
-			return driver.IsVisible(handle);
+			return driver.IsVisible (handle);
 		}
 
 		internal static void KillTimer (Timer timer)
 		{
-			#if DriverDebug
-				Console.WriteLine("KillTimer({0}): Called", timer);
-			#endif
+			DriverDebug ("KillTimer ({0}): Called", timer);
 			driver.KillTimer (timer);
 		}
 
-		internal static void MenuToScreen(IntPtr handle, ref int x, ref int y) {
-			#if DriverDebug
-				Console.WriteLine("MenuToScreen({0}, {1}, {2}): Called", Window(handle), x, y);
-			#endif
-			driver.MenuToScreen(handle, ref x, ref y);
+		internal static void MenuToScreen (IntPtr handle, ref int x, ref int y)
+		{
+			DriverDebug ("MenuToScreen ({0}, {1}, {2}): Called", Window (handle), x, y);
+			driver.MenuToScreen (handle, ref x, ref y);
 		}
 
-		internal static void OverrideCursor(IntPtr cursor) {
-			#if DriverDebug
-				Console.WriteLine("OverrideCursor({0:X}): Called", cursor.ToInt32());
-			#endif
-			driver.OverrideCursor(cursor);
+		internal static void OverrideCursor (IntPtr cursor)
+		{
+			DriverDebug ("OverrideCursor ({0:X}): Called", cursor.ToInt32 ());
+			driver.OverrideCursor (cursor);
 		}
 
-		internal static void PaintEventEnd (ref Message msg, IntPtr handle, bool client) {
+		internal static void PaintEventEnd (ref Message msg, IntPtr handle, bool client)
+		{
 			#if DriverDebug || DriverDebugPaint
-				Console.WriteLine("PaintEventEnd({0}, {1}, {2}): Called from thread {3}", msg, Window(handle), client, Thread.CurrentThread.GetHashCode());
+				Console.WriteLine ("PaintEventEnd ({0}, {1}, {2}): Called from thread {3}", msg, Window (handle), client, Thread.CurrentThread.GetHashCode ());
 			#endif
 			driver.PaintEventEnd (ref msg, handle, client);
 		}
 
-		internal static PaintEventArgs PaintEventStart (ref Message msg, IntPtr handle, bool client) {
+		internal static PaintEventArgs PaintEventStart (ref Message msg, IntPtr handle, bool client)
+		{
 			#if DriverDebug || DriverDebugPaint
-				Console.WriteLine("PaintEventStart({0}, {1}, {2}): Called from thread {3}", msg, Window(handle), client, Thread.CurrentThread.GetHashCode());
+				Console.WriteLine ("PaintEventStart ({0}, {1}, {2}): Called from thread {3}", msg, Window (handle), client, Thread.CurrentThread.GetHashCode ());
 			#endif
 			return driver.PaintEventStart (ref msg, handle, client);
 		}
 
-		internal static bool PeekMessage(Object queue_id, ref MSG msg, IntPtr hWnd, int wFilterMin, int wFilterMax, uint flags) {
-			return driver.PeekMessage(queue_id, ref msg, hWnd, wFilterMin, wFilterMax, flags);
+		internal static bool PeekMessage (Object queue_id, ref MSG msg, IntPtr hWnd, int wFilterMin, int wFilterMax, uint flags)
+		{
+			return driver.PeekMessage (queue_id, ref msg, hWnd, wFilterMin, wFilterMax, flags);
 		}
 
-		internal static bool PostMessage(IntPtr hwnd, Msg message, IntPtr wParam, IntPtr lParam) {
-			#if DriverDebug
-				Console.WriteLine("PostMessage({0}, {1}, {2:X}, {3:X}): Called", Window(hwnd), message, wParam.ToInt32(), lParam.ToInt32());
-			#endif
-			return driver.PostMessage(hwnd, message, wParam, lParam);
+		internal static bool PostMessage (IntPtr hwnd, Msg message, IntPtr wParam, IntPtr lParam)
+		{
+			DriverDebug ("PostMessage ({0}, {1}, {2:X}, {3:X}): Called", Window (hwnd), message, wParam.ToInt32 (), lParam.ToInt32 ());
+			return driver.PostMessage (hwnd, message, wParam, lParam);
 		}
 
-		internal static bool PostMessage(ref MSG msg) {
-			#if DriverDebug
-				Console.WriteLine("PostMessage({0}): Called", msg);
-			#endif
-			return driver.PostMessage(msg.hwnd, msg.message, msg.wParam, msg.lParam);
+		internal static bool PostMessage (ref MSG msg)
+		{
+			DriverDebug ("PostMessage ({0}): Called", msg);
+			return driver.PostMessage (msg.hwnd, msg.message, msg.wParam, msg.lParam);
 		}
 
-		internal static void PostQuitMessage(int exitCode) {
-			#if DriverDebug
-				Console.WriteLine("PostQuitMessage({0}): Called", exitCode);
-			#endif
-			driver.PostQuitMessage(exitCode);
+		internal static void PostQuitMessage (int exitCode)
+		{
+			DriverDebug ("PostQuitMessage ({0}): Called", exitCode);
+			driver.PostQuitMessage (exitCode);
 		}
 
 		internal static void RaiseIdle (EventArgs e)
 		{
-			#if DriverDebug
-				Console.WriteLine("RaiseIdle({0}): Called", e.ToString ());
-			#endif
+			DriverDebug ("RaiseIdle ({0}): Called", e.ToString ());
 			
 			driver.RaiseIdle (e);
 		}
 		
-		internal static void RequestAdditionalWM_NCMessages(IntPtr handle, bool hover, bool leave) {
-			#if DriverDebug
-				Console.WriteLine("RequestAdditionalWM_NCMessages({0}, {1}, {2}): Called", Window(handle), hover, leave);
-			#endif
+		internal static void RequestAdditionalWM_NCMessages (IntPtr handle, bool hover, bool leave)
+		{
+			DriverDebug ("RequestAdditionalWM_NCMessages ({0}, {1}, {2}): Called", Window (handle), hover, leave);
 			driver.RequestAdditionalWM_NCMessages (handle, hover, leave);
 		}
 
-		internal static void RequestNCRecalc(IntPtr handle) {
-			#if DriverDebug
-				Console.WriteLine("RequestNCRecalc({0}): Called", Window(handle));
-			#endif
-			driver.RequestNCRecalc(handle);
+		internal static void RequestNCRecalc (IntPtr handle)
+		{
+			DriverDebug ("RequestNCRecalc ({0}): Called", Window (handle));
+			driver.RequestNCRecalc (handle);
 		}
 
-		internal static void ResetMouseHover(IntPtr handle) {
-			#if DriverDebug
-				Console.WriteLine("ResetMouseHover({0}): Called", Window(handle));
-			#endif
-			driver.ResetMouseHover(handle);
+		internal static void ResetMouseHover (IntPtr handle)
+		{
+			DriverDebug ("ResetMouseHover ({0}): Called", Window (handle));
+			driver.ResetMouseHover (handle);
 		}
 
-		internal static void ScreenToClient(IntPtr handle, ref int x, ref int y) {
-			#if DriverDebug
-				Console.WriteLine("ScreenToClient({0}, {1}, {2}): Called", Window(handle), x, y);
-			#endif
+		internal static void ScreenToClient (IntPtr handle, ref int x, ref int y)
+		{
+			DriverDebug ("ScreenToClient ({0}, {1}, {2}): Called", Window (handle), x, y);
 			driver.ScreenToClient (handle, ref x, ref y);
 		}
 
-		internal static void ScreenToMenu(IntPtr handle, ref int x, ref int y) {
-			#if DriverDebug
-				Console.WriteLine("ScreenToMenu({0}, {1}, {2}): Called", Window(handle), x, y);
-			#endif
-			driver.ScreenToMenu(handle, ref x, ref y);
+		internal static void ScreenToMenu (IntPtr handle, ref int x, ref int y)
+		{
+			DriverDebug ("ScreenToMenu ({0}, {1}, {2}): Called", Window (handle), x, y);
+			driver.ScreenToMenu (handle, ref x, ref y);
 		}
 
-		internal static void ScrollWindow(IntPtr handle, Rectangle rectangle, int XAmount, int YAmount, bool with_children) {
-			#if DriverDebug
-				Console.WriteLine("ScrollWindow({0}, {1}, {2}, {3}, {4}): Called", Window(handle), rectangle, XAmount, YAmount, with_children);
-			#endif
-			driver.ScrollWindow(handle, rectangle, XAmount, YAmount, with_children);
+		internal static void ScrollWindow (IntPtr handle, Rectangle rectangle, int XAmount, int YAmount, bool with_children)
+		{
+			DriverDebug ("ScrollWindow ({0}, {1}, {2}, {3}, {4}): Called", Window (handle), rectangle, XAmount, YAmount, with_children);
+			driver.ScrollWindow (handle, rectangle, XAmount, YAmount, with_children);
 		}
 
-		internal static void ScrollWindow(IntPtr handle, int XAmount, int YAmount, bool with_children) {
-			#if DriverDebug
-				Console.WriteLine("ScrollWindow({0}, {1}, {2}, {3}): Called", Window(handle), XAmount, YAmount, with_children);
-			#endif
-			driver.ScrollWindow(handle, XAmount, YAmount, with_children);
+		internal static void ScrollWindow (IntPtr handle, int XAmount, int YAmount, bool with_children)
+		{
+			DriverDebug ("ScrollWindow ({0}, {1}, {2}, {3}): Called", Window (handle), XAmount, YAmount, with_children);
+			driver.ScrollWindow (handle, XAmount, YAmount, with_children);
 		}
 
-		internal static void SendAsyncMethod (AsyncMethodData data) {
-			#if DriverDebug
-				Console.WriteLine("SendAsyncMethod({0}): Called", data);
-			#endif
+		internal static void SendAsyncMethod (AsyncMethodData data)
+		{
+			DriverDebug ("SendAsyncMethod ({0}): Called", data);
 			driver.SendAsyncMethod (data);
 		}
 
-		internal static int SendInput (IntPtr hwnd, Queue keys) {
-			#if DriverDebug
-				Console.WriteLine("SendInput({0}, {1}): Called", hwnd, keys);
-			#endif
+		internal static int SendInput (IntPtr hwnd, Queue keys)
+		{
+			DriverDebug ("SendInput ({0}, {1}): Called", hwnd, keys);
 			return driver.SendInput (hwnd, keys);
 		}
 
-		internal static IntPtr SendMessage (IntPtr handle, Msg message, IntPtr wParam, IntPtr lParam) {
-			#if DriverDebug
-				Console.WriteLine("SendMessage ({0}, {1}, {2:X}, {3:X}): Called", Window(handle), message, wParam.ToInt32(), lParam.ToInt32());
-			#endif
+		internal static IntPtr SendMessage (IntPtr handle, Msg message, IntPtr wParam, IntPtr lParam)
+		{
+			DriverDebug ("SendMessage ({0}, {1}, {2:X}, {3:X}): Called", Window (handle), message, wParam.ToInt32 (), lParam.ToInt32 ());
 			return driver.SendMessage (handle, message, wParam, lParam);
 		}
 
-		internal static void SendMessage (ref Message m) {
-			#if DriverDebug
-				Console.WriteLine("SendMessage ({0}): Called", m);
-			#endif
-			m.Result = driver.SendMessage(m.HWnd, (Msg)m.Msg, m.WParam, m.LParam);
+		internal static void SendMessage (ref Message m)
+		{
+			DriverDebug ("SendMessage ({0}): Called", m);
+			m.Result = driver.SendMessage (m.HWnd, (Msg)m.Msg, m.WParam, m.LParam);
 		}
 
 		internal static void SetAllowDrop (IntPtr handle, bool value)
 		{
-			#if DriverDebug
-			Console.WriteLine ("SetAllowDrop({0}, {1}): Called", handle, value);
-			#endif
+			DriverDebug  ("SetAllowDrop ({0}, {1}): Called", handle, value);
 			driver.SetAllowDrop (handle, value);
 		}
 
-		internal static void SetBorderStyle(IntPtr handle, FormBorderStyle border_style) {
-			#if DriverDebug
-				Console.WriteLine("SetBorderStyle({0}, {1}): Called", Window(handle), border_style);
-			#endif
-			driver.SetBorderStyle(handle, border_style);
+		internal static void SetBorderStyle (IntPtr handle, FormBorderStyle border_style)
+		{
+			DriverDebug ("SetBorderStyle ({0}, {1}): Called", Window (handle), border_style);
+			driver.SetBorderStyle (handle, border_style);
 		}
 
-		internal static void SetCaretPos(IntPtr handle, int x, int y) {
-			#if DriverDebug
-				Console.WriteLine("SetCaretPos({0}, {1}, {2}): Called", Window(handle), x, y);
-			#endif
-			driver.SetCaretPos(handle, x, y);
+		internal static void SetCaretPos (IntPtr handle, int x, int y)
+		{
+			DriverDebug ("SetCaretPos ({0}, {1}, {2}): Called", Window (handle), x, y);
+			driver.SetCaretPos (handle, x, y);
 		}
 
-		internal static void SetClipRegion(IntPtr handle, Region region) {
-			#if DriverDebug
-				Console.WriteLine("SetClipRegion({0}, {1}): Called", Window(handle), region);
-			#endif
-			driver.SetClipRegion(handle, region);
+		internal static void SetClipRegion (IntPtr handle, Region region)
+		{
+			DriverDebug ("SetClipRegion ({0}, {1}): Called", Window (handle), region);
+			driver.SetClipRegion (handle, region);
 		}
 
-		internal static void SetCursor(IntPtr handle, IntPtr cursor) {
-			#if DriverDebug
-				Console.WriteLine("SetCursor({0}, {1:X}): Called", Window(handle), cursor.ToInt32());
-			#endif
-			driver.SetCursor(handle, cursor);
+		internal static void SetCursor (IntPtr handle, IntPtr cursor)
+		{
+			DriverDebug ("SetCursor ({0}, {1:X}): Called", Window (handle), cursor.ToInt32 ());
+			driver.SetCursor (handle, cursor);
 		}
 
-		internal static void SetCursorPos(IntPtr handle, int x, int y) {
-			#if DriverDebug
-				Console.WriteLine("SetCursorPos({0}, {1}, {2}): Called", Window(handle), x, y);
-			#endif
-			driver.SetCursorPos(handle, x, y);
+		internal static void SetCursorPos (IntPtr handle, int x, int y)
+		{
+			DriverDebug ("SetCursorPos ({0}, {1}, {2}): Called", Window (handle), x, y);
+			driver.SetCursorPos (handle, x, y);
 		}
 
-		internal static void SetFocus(IntPtr handle) {
-			#if DriverDebug
-				Console.WriteLine("SetFocus({0}): Called", Window(handle));
-			#endif
-			driver.SetFocus(handle);
+		internal static void SetFocus (IntPtr handle)
+		{
+			DriverDebug ("SetFocus ({0}): Called", Window (handle));
+			driver.SetFocus (handle);
 		}
 
-		internal static void SetForegroundWindow(IntPtr handle) {
-			#if DriverDebug
-				Console.WriteLine("SetForegroundWindow({0}): Called", Window(handle));
-			#endif
-			driver.SetForegroundWindow(handle);
+		internal static void SetForegroundWindow (IntPtr handle)
+		{
+			DriverDebug ("SetForegroundWindow ({0}): Called", Window (handle));
+			driver.SetForegroundWindow (handle);
 		}
 
-		internal static void SetIcon(IntPtr handle, Icon icon) {
-			#if DriverDebug
-				Console.WriteLine("SetIcon({0}, {1}): Called", Window(handle), icon);
-			#endif
-			driver.SetIcon(handle, icon);
+		internal static void SetIcon (IntPtr handle, Icon icon)
+		{
+			DriverDebug ("SetIcon ({0}, {1}): Called", Window (handle), icon);
+			driver.SetIcon (handle, icon);
 		}
 
-		internal static void SetMenu(IntPtr handle, Menu menu) {
-			#if DriverDebug
-				Console.WriteLine("SetMenu({0}, {1}): Called", Window(handle), menu);
-			#endif
-			driver.SetMenu(handle, menu);
+		internal static void SetMenu (IntPtr handle, Menu menu)
+		{
+			DriverDebug ("SetMenu ({0}, {1}): Called", Window (handle), menu);
+			driver.SetMenu (handle, menu);
 		}
 
-		internal static void SetModal(IntPtr handle, bool Modal) {
-			#if DriverDebug || DriverDebugState
-				Console.WriteLine("SetModal({0}, {1}): Called", Window(handle), Modal);
-			#endif
-			driver.SetModal(handle, Modal);
+		internal static void SetModal (IntPtr handle, bool Modal)
+		{
+			DriverDebug ("SetModal ({0}, {1}): Called", Window (handle), Modal);
+			driver.SetModal (handle, Modal);
 		}
 
-		internal static IntPtr SetParent(IntPtr handle, IntPtr hParent) {
-			#if DriverDebug
-				Console.WriteLine("SetParent({0}, {1:X}): Called", Window(handle), Window(hParent));
-			#endif
-			return driver.SetParent(handle, hParent);
+		internal static IntPtr SetParent (IntPtr handle, IntPtr hParent)
+		{
+			DriverDebug ("SetParent ({0}, {1:X}): Called", Window (handle), Window (hParent));
+			return driver.SetParent (handle, hParent);
 		}
 
 		internal static void SetTimer (Timer timer)
 		{
-			#if DriverDebug
-				Console.WriteLine("SetTimer({0}): Called", timer);
-			#endif
+			DriverDebug ("SetTimer ({0}): Called", timer);
 			driver.SetTimer (timer);
 		}
 
-		internal static bool SetTopmost(IntPtr handle, bool Enabled) {
-			#if DriverDebug
-				Console.WriteLine("SetTopMost({0}, {1}): Called", Window(handle), Enabled);
-			#endif
-			return driver.SetTopmost(handle, Enabled);
+		internal static bool SetTopmost (IntPtr handle, bool Enabled)
+		{
+			DriverDebug ("SetTopMost ({0}, {1}): Called", Window (handle), Enabled);
+			return driver.SetTopmost (handle, Enabled);
 		}
 
-		internal static bool SetOwner(IntPtr handle, IntPtr hWndOwner) {
-			#if DriverDebug
-				Console.WriteLine("SetOwner({0}, {1}): Called", Window(handle), Window(hWndOwner));
-			#endif
-			return driver.SetOwner(handle, hWndOwner);
+		internal static bool SetOwner (IntPtr handle, IntPtr hWndOwner)
+		{
+			DriverDebug ("SetOwner ({0}, {1}): Called", Window (handle), Window (hWndOwner));
+			return driver.SetOwner (handle, hWndOwner);
 		}
 
 		internal static bool SetVisible (IntPtr handle, bool visible, bool activate)
 		{
 			#if DriverDebug || DriverDebugState
-				Console.WriteLine("SetVisible({0}, {1}, {2}): Called", Window(handle), visible, activate);
+				Console.WriteLine ("SetVisible ({0}, {1}, {2}): Called", Window (handle), visible, activate);
 			#endif
 			return driver.SetVisible (handle, visible, activate);
 		}
 
-		internal static void SetWindowMinMax(IntPtr handle, Rectangle maximized, Size min, Size max) {
+		internal static void SetWindowMinMax (IntPtr handle, Rectangle maximized, Size min, Size max)
+		{
 			#if DriverDebug || DriverDebugState
-				Console.WriteLine("SetWindowMinMax({0}, {1}, {2}, {3}): Called", Window(handle), maximized, min, max);
+				Console.WriteLine ("SetWindowMinMax ({0}, {1}, {2}, {3}): Called", Window (handle), maximized, min, max);
 			#endif
-			driver.SetWindowMinMax(handle, maximized, min, max);
+			driver.SetWindowMinMax (handle, maximized, min, max);
 		}
 
-		internal static void SetWindowPos(IntPtr handle, int x, int y, int width, int height) {
-			#if DriverDebug
-				Console.WriteLine("SetWindowPos({0}, {1}, {2}, {3}, {4}): Called", Window(handle), x, y, width, height);
-			#endif
-			driver.SetWindowPos(handle, x, y, width, height);
+		internal static void SetWindowPos (IntPtr handle, int x, int y, int width, int height)
+		{
+			DriverDebug ("SetWindowPos ({0}, {1}, {2}, {3}, {4}): Called", Window (handle), x, y, width, height);
+			driver.SetWindowPos (handle, x, y, width, height);
 		}
 
-		internal static void SetWindowState(IntPtr handle, FormWindowState state) {
+		internal static void SetWindowState (IntPtr handle, FormWindowState state)
+		{
 			#if DriverDebug || DriverDebugState
-				Console.WriteLine("SetWindowState({0} {1}): Called", Window(handle), state);
+				Console.WriteLine ("SetWindowState ({0} {1}): Called", Window (handle), state);
 			#endif
-			driver.SetWindowState(handle, state);
+			driver.SetWindowState (handle, state);
 		}
 
-		internal static void SetWindowStyle(IntPtr handle, CreateParams cp) {
-			#if DriverDebug
-				Console.WriteLine("SetWindowStyle({0}): Called", Window(handle));
-			#endif
-			driver.SetWindowStyle(handle, cp);
+		internal static void SetWindowStyle (IntPtr handle, CreateParams cp)
+		{
+			DriverDebug ("SetWindowStyle ({0}): Called", Window (handle));
+			driver.SetWindowStyle (handle, cp);
 		}
 
 		internal static double GetWindowTransparency (IntPtr handle)
 		{
-			#if DriverDebug
-				Console.WriteLine("SetWindowTransparency({0}): Called", Window(handle));
-			#endif
-			return driver.GetWindowTransparency(handle);
+			DriverDebug ("SetWindowTransparency ({0}): Called", Window (handle));
+			return driver.GetWindowTransparency (handle);
 		}
 
-		internal static void SetWindowTransparency(IntPtr handle, double transparency, Color key) 
+		internal static void SetWindowTransparency (IntPtr handle, double transparency, Color key) 
 		{
-			#if DriverDebug
-				Console.WriteLine("SetWindowTransparency({0}): Called", Window(handle));
-			#endif
-			driver.SetWindowTransparency(handle, transparency, key);
+			DriverDebug ("SetWindowTransparency ({0}): Called", Window (handle));
+			driver.SetWindowTransparency (handle, transparency, key);
 		}
 
-		internal static bool SetZOrder(IntPtr handle, IntPtr AfterhWnd, bool Top, bool Bottom) {
-			#if DriverDebug
-				Console.WriteLine("SetZOrder({0}, {1:X}, {2}, {3}): Called", Window(handle), Window(AfterhWnd), Top, Bottom);
-			#endif
-			return driver.SetZOrder(handle, AfterhWnd, Top, Bottom);
+		internal static bool SetZOrder (IntPtr handle, IntPtr AfterhWnd, bool Top, bool Bottom)
+		{
+			DriverDebug ("SetZOrder ({0}, {1:X}, {2}, {3}): Called", Window (handle), Window (AfterhWnd), Top, Bottom);
+			return driver.SetZOrder (handle, AfterhWnd, Top, Bottom);
 		}
 
-		internal static void ShowCursor(bool show) {
-			#if DriverDebug
-				Console.WriteLine("ShowCursor({0}): Called", show);
-			#endif
-			driver.ShowCursor(show);
+		internal static void ShowCursor (bool show)
+		{
+			DriverDebug ("ShowCursor ({0}): Called", show);
+			driver.ShowCursor (show);
 		}
 
-		internal static DragDropEffects StartDrag(IntPtr handle, object data, DragDropEffects allowedEffects) {
-			#if DriverDebug
-			Console.WriteLine ("StartDrag({0}, {1}, {2}): Called", Window(handle), data, allowedEffects);
-			#endif
+		internal static DragDropEffects StartDrag (IntPtr handle, object data, DragDropEffects allowedEffects)
+		{
+			DriverDebug  ("StartDrag ({0}, {1}, {2}): Called", Window (handle), data, allowedEffects);
 			return driver.StartDrag (handle, data, allowedEffects);
 		}
 
-		internal static object StartLoop(Thread thread) {
-			#if DriverDebug
-				Console.WriteLine("StartLoop({0:X}): Called", thread.GetHashCode());
-			#endif
-			return driver.StartLoop(thread);
+		internal static object StartLoop (Thread thread)
+		{
+			DriverDebug ("StartLoop ({0:X}): Called", thread.GetHashCode ());
+			return driver.StartLoop (thread);
 		}
 
-		internal static TransparencySupport SupportsTransparency() {
-			#if DriverDebug
-				Console.WriteLine("SupportsTransparency(): Called, result={0}", driver.SupportsTransparency());
-			#endif
-			return driver.SupportsTransparency();
+		internal static TransparencySupport SupportsTransparency ()
+		{
+			DriverDebug ("SupportsTransparency (): Called, result={0}", driver.SupportsTransparency ());
+			return driver.SupportsTransparency ();
 		}
 
-		internal static bool SystrayAdd(IntPtr handle, string tip, Icon icon, out ToolTip tt) {
-			#if DriverDebug
-				Console.WriteLine("SystrayAdd({0}, {1}): Called", Window(handle), tip);
-			#endif
-			return driver.SystrayAdd(handle, tip, icon, out tt);
+		internal static bool SystrayAdd (IntPtr handle, string tip, Icon icon, out ToolTip tt)
+		{
+			DriverDebug ("SystrayAdd ({0}, {1}): Called", Window (handle), tip);
+			return driver.SystrayAdd (handle, tip, icon, out tt);
 		}
 
-		internal static void SystrayChange(IntPtr handle, string tip, Icon icon, ref ToolTip tt) {
-			#if DriverDebug
-				Console.WriteLine("SystrayChange({0}, {1}): Called", Window(handle), tip);
-			#endif
-			driver.SystrayChange(handle, tip, icon, ref tt);
+		internal static void SystrayChange (IntPtr handle, string tip, Icon icon, ref ToolTip tt)
+		{
+			DriverDebug ("SystrayChange ({0}, {1}): Called", Window (handle), tip);
+			driver.SystrayChange (handle, tip, icon, ref tt);
 		}
 
-		internal static void SystrayRemove(IntPtr handle, ref ToolTip tt) {
-			#if DriverDebug
-				Console.WriteLine("SystrayRemove({0}): Called", Window(handle));
-			#endif
-			driver.SystrayRemove(handle, ref tt);
+		internal static void SystrayRemove (IntPtr handle, ref ToolTip tt)
+		{
+			DriverDebug ("SystrayRemove ({0}): Called", Window (handle));
+			driver.SystrayRemove (handle, ref tt);
 		}
 
-#if NET_2_0
-		internal static void SystrayBalloon(IntPtr handle, int timeout, string title, string text, ToolTipIcon icon) {
-			#if DriverDebug
-				Console.WriteLine("SystrayBalloon ({0}, {1}, {2}, {3}, {4}): Called", Window(handle), timeout, title, text, icon);
-			#endif
-			driver.SystrayBalloon(handle, timeout, title, text, icon);
+		internal static void SystrayBalloon (IntPtr handle, int timeout, string title, string text, ToolTipIcon icon)
+		{
+			DriverDebug ("SystrayBalloon ({0}, {1}, {2}, {3}, {4}): Called", Window (handle), timeout, title, text, icon);
+			driver.SystrayBalloon (handle, timeout, title, text, icon);
 		}
-#endif
 
-		internal static bool Text(IntPtr handle, string text) {
-			#if DriverDebug
-				Console.WriteLine("Text({0}, {1}): Called", Window(handle), text);
-			#endif
-			return driver.Text(handle, text);
+		internal static bool Text (IntPtr handle, string text)
+		{
+			DriverDebug ("Text ({0}, {1}): Called", Window (handle), text);
+			return driver.Text (handle, text);
 		}
 
-		internal static bool TranslateMessage(ref MSG msg) {
-			return driver.TranslateMessage(ref msg);
+		internal static bool TranslateMessage (ref MSG msg)
+		{
+			return driver.TranslateMessage (ref msg);
 		}
 
-		internal static void UngrabWindow(IntPtr handle) {
-			#if DriverDebug
-				Console.WriteLine("UngrabWindow({0}): Called", Window(handle));
-			#endif
-			driver.UngrabWindow(handle);
+		internal static void UngrabWindow (IntPtr handle)
+		{
+			DriverDebug ("UngrabWindow ({0}): Called", Window (handle));
+			driver.UngrabWindow (handle);
 		}
 
-		internal static void UpdateWindow(IntPtr handle) {
-			#if DriverDebug
-				Console.WriteLine("UpdateWindow({0}): Called", Window(handle));
-			#endif
-			driver.UpdateWindow(handle);
+		internal static void UpdateWindow (IntPtr handle)
+		{
+			DriverDebug ("UpdateWindow ({0}): Called", Window (handle));
+			driver.UpdateWindow (handle);
 		}
 
 		// double buffering
@@ -1225,26 +1149,20 @@ namespace System.Windows.Forms {
 							    int width, int height,
 							    out object offscreen_drawable)
 		{
-#if DriverDebug
-			Console.WriteLine("CreateOffscreenDrawable({2}, {0},{1}): Called", width, height, Window(handle));
-#endif
+			DriverDebug ("CreateOffscreenDrawable ({2}, {0},{1}): Called", width, height, Window (handle));
 			driver.CreateOffscreenDrawable (handle, width, height,
 							out offscreen_drawable);
 		}
 
 		internal static void DestroyOffscreenDrawable (object offscreen_drawable)
 		{
-#if DriverDebug
-			Console.WriteLine("DestroyOffscreenDrawable(): Called");
-#endif
+			DriverDebug ("DestroyOffscreenDrawable (): Called");
 			driver.DestroyOffscreenDrawable (offscreen_drawable);
 		}
 
 		internal static Graphics GetOffscreenGraphics (object offscreen_drawable)
 		{
-#if DriverDebug
-			Console.WriteLine("GetOffscreenGraphics(): Called");
-#endif
+			DriverDebug ("GetOffscreenGraphics (): Called");
 			return driver.GetOffscreenGraphics (offscreen_drawable);
 		}
 
@@ -1254,16 +1172,15 @@ namespace System.Windows.Forms {
 						      Graphics offscreen_dc,
 						      Rectangle r)
 		{
-#if DriverDebug
-			Console.WriteLine("BlitFromOffscreen({0}): Called", Window(dest_handle));
-#endif
+			DriverDebug ("BlitFromOffscreen ({0}): Called", Window (dest_handle));
 			driver.BlitFromOffscreen (dest_handle, dest_dc, offscreen_drawable, offscreen_dc, r);
 		}
 
 
 		// Santa's little helper
-		internal static void Version() {
-			Console.WriteLine("Xplat version $Revision: $");
+		internal static void Version ()
+		{
+			Console.WriteLine ("Xplat version $Revision: $");
 		}
 
 		internal static void AddKeyFilter (IKeyFilter value)
@@ -1287,8 +1204,8 @@ namespace System.Windows.Forms {
 		#endregion	// Public Static Methods
 
 		#region	Delegates
-		public delegate bool ClipboardToObject(int type, IntPtr data, out object obj);
-		public delegate bool ObjectToClipboard(ref int type, object obj, out byte[] data);
+		public delegate bool ClipboardToObject (int type, IntPtr data, out object obj);
+		public delegate bool ObjectToClipboard (ref int type, object obj, out byte[] data);
 		#endregion	// Delegates
 
 		[DllImport ("libc")]
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/XplatUICarbon.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/XplatUICarbon.cs
index e06fa86..0241dc6 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/XplatUICarbon.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/XplatUICarbon.cs
@@ -1079,7 +1079,7 @@ namespace System.Windows.Forms {
 			create_params.Width = Width;
 			create_params.Height = Height;
 
-			create_params.ClassName=XplatUI.DefaultClassName;
+			create_params.ClassName=XplatUI.GetDefaultClassName (GetType ());
 			create_params.ClassStyle = 0;
 			create_params.ExStyle=0;
 			create_params.Parent=IntPtr.Zero;
@@ -2071,13 +2071,11 @@ namespace System.Windows.Forms {
 			throw new NotImplementedException();
 		}
 
-#if NET_2_0
 		[MonoTODO]
 		internal override void SystrayBalloon(IntPtr hwnd, int timeout, string title, string text, ToolTipIcon icon)
 		{
 			throw new NotImplementedException ();
 		}
-#endif
 		
 		internal override bool Text(IntPtr handle, string text) {
 			Hwnd hwnd = Hwnd.ObjectFromHandle (handle);
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/XplatUIDriver.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/XplatUIDriver.cs
index 4ea795d..3adc215 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/XplatUIDriver.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/XplatUIDriver.cs
@@ -173,11 +173,9 @@ namespace System.Windows.Forms {
 			get { return LeftRightAlignment.Left; }
 		}
 		
-#if NET_2_0
 		internal virtual PowerStatus PowerStatus {
 			get { throw new NotImplementedException ("Has not been implemented yet for this platform."); }
 		}
-#endif
 
 		internal virtual int SizingBorderWidth {
 			get { return 4; }
@@ -390,9 +388,7 @@ namespace System.Windows.Forms {
 		internal abstract bool SystrayAdd(IntPtr hwnd, string tip, Icon icon, out ToolTip tt);
 		internal abstract bool SystrayChange(IntPtr hwnd, string tip, Icon icon, ref ToolTip tt);
 		internal abstract void SystrayRemove(IntPtr hwnd, ref ToolTip tt);
-#if NET_2_0		
 		internal abstract void SystrayBalloon(IntPtr hwnd, int timeout, string title, string text, ToolTipIcon icon);
-#endif
 
 		internal abstract Point GetMenuOrigin(IntPtr hwnd);
 		internal abstract void MenuToScreen(IntPtr hwnd, ref int x, ref int y);
@@ -473,7 +469,6 @@ namespace System.Windows.Forms {
 
 	internal class XplatUIDriverSupport {
 		#region XplatUI Driver Support Methods
-#if NET_2_0
 		internal static void ExecutionCallback (object state)
 		{
 			AsyncMethodData data = (AsyncMethodData) state;
@@ -510,42 +505,6 @@ namespace System.Windows.Forms {
 				gchandle.Free ();
 			}
 		}
-#else
-		// for NET_1_0 and NET_1_1 no (public) ExecutionContext exists 
-		// so we must use the System.Threading.CompressedStack class
-		internal static void ExecuteClientMessage (GCHandle gchandle) {
-			AsyncMethodData data = (AsyncMethodData) gchandle.Target;
-			CompressedStack original = null;
-			
-#if !MWF_ON_MSRUNTIME
-			// Stack is non-null only if the security manager is active
-			if (data.Stack != null) {
-				original = Thread.CurrentThread.GetCompressedStack ();
-				Thread.CurrentThread.SetCompressedStack (data.Stack);
-			}
-#endif
-
-			AsyncMethodResult result = data.Result;
-			object ret;
-
-			try {
-				ret = data.Method.DynamicInvoke (data.Args);
-				result.Complete (ret);
-			} catch (Exception ex) {
-				result.CompleteWithException (ex);
-				return;
-			} finally {
-#if !MWF_ON_MSRUNTIME
-				if (data.Stack != null) {
-					// whatever occurs we must revert to the original compressed
-					// stack (null being a valid, empty, value in this case).
-					Thread.CurrentThread.SetCompressedStack (original);
-				}
-#endif
-				gchandle.Free ();
-			}
-		}
-#endif
 		
 		#endregion	// XplatUI Driver Support Methods
 	}
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/XplatUIStructs.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/XplatUIStructs.cs
index 9a27be4..21b2515 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/XplatUIStructs.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/XplatUIStructs.cs
@@ -376,6 +376,12 @@ namespace System.Windows.Forms
 		WM_REFLECT                = WM_USER + 0x1c00,
 		WM_CLOSE_INTERNAL         = WM_USER + 0x1c01,
 
+		// private messages to support on-the-spot IME editing.
+		WM_XIM_PREEDITSTART		  = WM_USER + 0x1d00,
+		WM_XIM_PREEDITDONE		  = WM_USER + 0x1d01,
+		WM_XIM_PREEDITDRAW		  = WM_USER + 0x1d02,
+		WM_XIM_PREEDITCARET		  = WM_USER + 0x1d03,
+
 		// NotifyIcon (Systray) Balloon messages 
 		NIN_BALLOONSHOW           = WM_USER + 0x0002,
 		NIN_BALLOONHIDE           = WM_USER + 0x0003,
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/XplatUIWin32.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/XplatUIWin32.cs
index aceae31..4f27cd7 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/XplatUIWin32.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/XplatUIWin32.cs
@@ -652,11 +652,7 @@ namespace System.Windows.Forms {
 			internal int				uTimeoutOrVersion;
 			[MarshalAs(UnmanagedType.ByValTStr, SizeConst=64)]
 			internal string				szInfoTitle;
-#if NET_2_0
 			internal ToolTipIcon		dwInfoFlags;
-#else
-			internal int				dwInfoFlags;
-#endif
 		}
 
 		[Flags]
@@ -1211,7 +1207,6 @@ namespace System.Windows.Forms {
 			get { return GetSystemParametersInfoBool (SPIAction.SPI_GETMENUDROPALIGNMENT) == true ? LeftRightAlignment.Left : LeftRightAlignment.Right; }
 		}
 
-#if NET_2_0
 		internal override PowerStatus PowerStatus {
 			get {
 				SYSTEMPOWERSTATUS p = new SYSTEMPOWERSTATUS ();
@@ -1223,7 +1218,6 @@ namespace System.Windows.Forms {
 				return ps;
 			}
 		}
-#endif
 
 		internal override int SizingBorderWidth {
 			get { return Win32GetSystemMetrics (SystemMetrics.SM_CXSIZEFRAME); }
@@ -1664,7 +1658,7 @@ namespace System.Windows.Forms {
 			create_params.Width = Width;
 			create_params.Height = Height;
 
-			create_params.ClassName=XplatUI.DefaultClassName;
+			create_params.ClassName=XplatUI.GetDefaultClassName (GetType ());
 			create_params.ClassStyle = 0;
 			create_params.ExStyle=0;
 			create_params.Parent=IntPtr.Zero;
@@ -2740,7 +2734,6 @@ namespace System.Windows.Forms {
 			Win32Shell_NotifyIcon(NotifyIconMessage.NIM_DELETE, ref nid);
 		}
 
-#if NET_2_0
 		internal override void SystrayBalloon(IntPtr hwnd, int timeout, string title, string text, ToolTipIcon icon)
 		{
 			NOTIFYICONDATA	nid;
@@ -2758,7 +2751,6 @@ namespace System.Windows.Forms {
 			
 			Win32Shell_NotifyIcon(NotifyIconMessage.NIM_MODIFY, ref nid);
 		}
-#endif
 
 		internal override void SetBorderStyle(IntPtr handle, FormBorderStyle border_style) {
 			// Nothing to do on Win32
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/XplatUIX11.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/XplatUIX11.cs
index f01a993..2890de6 100644
--- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/XplatUIX11.cs
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/XplatUIX11.cs
@@ -78,155 +78,155 @@ namespace System.Windows.Forms {
 		#region Local Variables
 		// General
 		static volatile XplatUIX11	Instance;
-		private static int		RefCount;
-		private static object		XlibLock;		// Our locking object
-		private static bool		themes_enabled;
+		static int		RefCount;
+		static object		XlibLock;		// Our locking object
+		static bool		themes_enabled;
 
 		// General X11
-		private static IntPtr		DisplayHandle;		// X11 handle to display
-		private static int		ScreenNo;		// Screen number used
-		private static IntPtr		DefaultColormap;	// Colormap for screen
-		private static IntPtr		CustomVisual;		// Visual for window creation
-		private static IntPtr		CustomColormap;		// Colormap for window creation
-		private static IntPtr		RootWindow;		// Handle of the root window for the screen/display
-		private static IntPtr		FosterParent;		// Container to hold child windows until their parent exists
-		private static XErrorHandler	ErrorHandler;		// Error handler delegate
-		private static bool		ErrorExceptions;	// Throw exceptions on X errors
-		private int                     render_major_opcode;
-		private int                     render_first_event;
-		private int                     render_first_error;
+		static IntPtr		DisplayHandle;		// X11 handle to display
+		static int		ScreenNo;		// Screen number used
+		static IntPtr		DefaultColormap;	// Colormap for screen
+		static IntPtr		CustomVisual;		// Visual for window creation
+		static IntPtr		CustomColormap;		// Colormap for window creation
+		static IntPtr		RootWindow;		// Handle of the root window for the screen/display
+		static IntPtr		FosterParent;		// Container to hold child windows until their parent exists
+		static XErrorHandler	ErrorHandler;		// Error handler delegate
+		static bool		ErrorExceptions;	// Throw exceptions on X errors
+		int                     render_major_opcode;
+		int                     render_first_event;
+		int                     render_first_error;
 
 		// Clipboard
-		private static IntPtr 		ClipMagic;
-		private static ClipboardData	Clipboard;		// Our clipboard
+		static IntPtr 		ClipMagic;
+		static ClipboardData	Clipboard;		// Our clipboard
 
 		// Communication
-		private static IntPtr		PostAtom;		// PostMessage atom
-		private static IntPtr		AsyncAtom;		// Support for async messages
+		static IntPtr		PostAtom;		// PostMessage atom
+		static IntPtr		AsyncAtom;		// Support for async messages
 
 		// Message Loop
-		private static Hashtable	MessageQueues;		// Holds our thread-specific XEventQueues
-		private static ArrayList	unattached_timer_list; // holds timers that are enabled but not attached to a window.
+		static Hashtable	MessageQueues;		// Holds our thread-specific XEventQueues
+		static ArrayList	unattached_timer_list; // holds timers that are enabled but not attached to a window.
 		#if __MonoCS__						//
-		private static Pollfd[]		pollfds;		// For watching the X11 socket
-		private static bool wake_waiting;
-		private static object wake_waiting_lock = new object ();
+		static Pollfd[]		pollfds;		// For watching the X11 socket
+		static bool wake_waiting;
+		static object wake_waiting_lock = new object ();
 		#endif							//
-		private static X11Keyboard	Keyboard;		//
-		private static X11Dnd		Dnd;
-		private static Socket		listen;			//
-		private static Socket		wake;			//
-		private static Socket		wake_receive;		//
-		private static byte[]		network_buffer;		//
-		private static bool		detectable_key_auto_repeat;
+		static X11Keyboard	Keyboard;		//
+		static X11Dnd		Dnd;
+		static Socket		listen;			//
+		static Socket		wake;			//
+		static Socket		wake_receive;		//
+		static byte[]		network_buffer;		//
+		static bool		detectable_key_auto_repeat;
 
 		// Focus tracking
-		private static IntPtr		ActiveWindow;		// Handle of the active window
-		private static IntPtr		FocusWindow;		// Handle of the window with keyboard focus (if any)
+		static IntPtr		ActiveWindow;		// Handle of the active window
+		static IntPtr		FocusWindow;		// Handle of the window with keyboard focus (if any)
 
 		// Modality support
-		private static Stack		ModalWindows;		// Stack of our modal windows
+		static Stack		ModalWindows;		// Stack of our modal windows
 
 		// Systray
-		private static IntPtr		SystrayMgrWindow;	// Handle of the Systray Manager window
+		static IntPtr		SystrayMgrWindow;	// Handle of the Systray Manager window
 
 		// Cursors
-		private static IntPtr		LastCursorWindow;	// The last window we set the cursor on
-		private static IntPtr		LastCursorHandle;	// The handle that was last set on LastCursorWindow
-		private static IntPtr		OverrideCursorHandle;	// The cursor that is set to override any other cursors
+		static IntPtr		LastCursorWindow;	// The last window we set the cursor on
+		static IntPtr		LastCursorHandle;	// The handle that was last set on LastCursorWindow
+		static IntPtr		OverrideCursorHandle;	// The cursor that is set to override any other cursors
 
 		// Caret
-		private static CaretStruct	Caret;			//
+		static CaretStruct	Caret;			//
 
 		// Last window containing the pointer
-		private static IntPtr		LastPointerWindow;	// The last window containing the pointer
+		static IntPtr		LastPointerWindow;	// The last window containing the pointer
 
 		// Our atoms
-		private static IntPtr WM_PROTOCOLS;
-		private static IntPtr WM_DELETE_WINDOW;
-		private static IntPtr WM_TAKE_FOCUS;
-		//private static IntPtr _NET_SUPPORTED;
-		//private static IntPtr _NET_CLIENT_LIST;
-		//private static IntPtr _NET_NUMBER_OF_DESKTOPS;
-		private static IntPtr _NET_DESKTOP_GEOMETRY;
-		//private static IntPtr _NET_DESKTOP_VIEWPORT;
-		private static IntPtr _NET_CURRENT_DESKTOP;
-		//private static IntPtr _NET_DESKTOP_NAMES;
-		private static IntPtr _NET_ACTIVE_WINDOW;
-		private static IntPtr _NET_WORKAREA;
-		//private static IntPtr _NET_SUPPORTING_WM_CHECK;
-		//private static IntPtr _NET_VIRTUAL_ROOTS;
-		//private static IntPtr _NET_DESKTOP_LAYOUT;
-		//private static IntPtr _NET_SHOWING_DESKTOP;
-		//private static IntPtr _NET_CLOSE_WINDOW;
-		//private static IntPtr _NET_MOVERESIZE_WINDOW;
-		private static IntPtr _NET_WM_MOVERESIZE;
-		//private static IntPtr _NET_RESTACK_WINDOW;
-		//private static IntPtr _NET_REQUEST_FRAME_EXTENTS;
-		private static IntPtr _NET_WM_NAME;
-		//private static IntPtr _NET_WM_VISIBLE_NAME;
-		//private static IntPtr _NET_WM_ICON_NAME;
-		//private static IntPtr _NET_WM_VISIBLE_ICON_NAME;
-		//private static IntPtr _NET_WM_DESKTOP;
-		private static IntPtr _NET_WM_WINDOW_TYPE;
-		private static IntPtr _NET_WM_STATE;
-		//private static IntPtr _NET_WM_ALLOWED_ACTIONS;
-		//private static IntPtr _NET_WM_STRUT;
-		//private static IntPtr _NET_WM_STRUT_PARTIAL;
-		//private static IntPtr _NET_WM_ICON_GEOMETRY;
-		private static IntPtr _NET_WM_ICON;
-		//private static IntPtr _NET_WM_PID;
-		//private static IntPtr _NET_WM_HANDLED_ICONS;
-		private static IntPtr _NET_WM_USER_TIME;
-		private static IntPtr _NET_FRAME_EXTENTS;
-		//private static IntPtr _NET_WM_PING;
-		//private static IntPtr _NET_WM_SYNC_REQUEST;
-		private static IntPtr _NET_SYSTEM_TRAY_S;
-		//private static IntPtr _NET_SYSTEM_TRAY_ORIENTATION;
-		private static IntPtr _NET_SYSTEM_TRAY_OPCODE;
-		private static IntPtr _NET_WM_STATE_MAXIMIZED_HORZ;
-		private static IntPtr _NET_WM_STATE_MAXIMIZED_VERT;
-		private static IntPtr _XEMBED;
-		private static IntPtr _XEMBED_INFO;
-		private static IntPtr _MOTIF_WM_HINTS;
-		private static IntPtr _NET_WM_STATE_SKIP_TASKBAR;
-		private static IntPtr _NET_WM_STATE_ABOVE;
-		private static IntPtr _NET_WM_STATE_MODAL;
-		private static IntPtr _NET_WM_STATE_HIDDEN;
-		private static IntPtr _NET_WM_CONTEXT_HELP;
-		private static IntPtr _NET_WM_WINDOW_OPACITY;
-		//private static IntPtr _NET_WM_WINDOW_TYPE_DESKTOP;
-		//private static IntPtr _NET_WM_WINDOW_TYPE_DOCK;
-		//private static IntPtr _NET_WM_WINDOW_TYPE_TOOLBAR;
-		//private static IntPtr _NET_WM_WINDOW_TYPE_MENU;
-		private static IntPtr _NET_WM_WINDOW_TYPE_UTILITY;
-		//private static IntPtr _NET_WM_WINDOW_TYPE_SPLASH;
-		// private static IntPtr _NET_WM_WINDOW_TYPE_DIALOG;
-		private static IntPtr _NET_WM_WINDOW_TYPE_NORMAL;
-		private static IntPtr CLIPBOARD;
-		private static IntPtr PRIMARY;
-		//private static IntPtr DIB;
-		private static IntPtr OEMTEXT;
-		private static IntPtr UTF8_STRING;
-		private static IntPtr UTF16_STRING;
-		private static IntPtr RICHTEXTFORMAT;
-		private static IntPtr TARGETS;
+		static IntPtr WM_PROTOCOLS;
+		static IntPtr WM_DELETE_WINDOW;
+		static IntPtr WM_TAKE_FOCUS;
+		//static IntPtr _NET_SUPPORTED;
+		//static IntPtr _NET_CLIENT_LIST;
+		//static IntPtr _NET_NUMBER_OF_DESKTOPS;
+		static IntPtr _NET_DESKTOP_GEOMETRY;
+		//static IntPtr _NET_DESKTOP_VIEWPORT;
+		static IntPtr _NET_CURRENT_DESKTOP;
+		//static IntPtr _NET_DESKTOP_NAMES;
+		static IntPtr _NET_ACTIVE_WINDOW;
+		static IntPtr _NET_WORKAREA;
+		//static IntPtr _NET_SUPPORTING_WM_CHECK;
+		//static IntPtr _NET_VIRTUAL_ROOTS;
+		//static IntPtr _NET_DESKTOP_LAYOUT;
+		//static IntPtr _NET_SHOWING_DESKTOP;
+		//static IntPtr _NET_CLOSE_WINDOW;
+		//static IntPtr _NET_MOVERESIZE_WINDOW;
+		static IntPtr _NET_WM_MOVERESIZE;
+		//static IntPtr _NET_RESTACK_WINDOW;
+		//static IntPtr _NET_REQUEST_FRAME_EXTENTS;
+		static IntPtr _NET_WM_NAME;
+		//static IntPtr _NET_WM_VISIBLE_NAME;
+		//static IntPtr _NET_WM_ICON_NAME;
+		//static IntPtr _NET_WM_VISIBLE_ICON_NAME;
+		//static IntPtr _NET_WM_DESKTOP;
+		static IntPtr _NET_WM_WINDOW_TYPE;
+		static IntPtr _NET_WM_STATE;
+		//static IntPtr _NET_WM_ALLOWED_ACTIONS;
+		//static IntPtr _NET_WM_STRUT;
+		//static IntPtr _NET_WM_STRUT_PARTIAL;
+		//static IntPtr _NET_WM_ICON_GEOMETRY;
+		static IntPtr _NET_WM_ICON;
+		//static IntPtr _NET_WM_PID;
+		//static IntPtr _NET_WM_HANDLED_ICONS;
+		static IntPtr _NET_WM_USER_TIME;
+		static IntPtr _NET_FRAME_EXTENTS;
+		//static IntPtr _NET_WM_PING;
+		//static IntPtr _NET_WM_SYNC_REQUEST;
+		static IntPtr _NET_SYSTEM_TRAY_S;
+		//static IntPtr _NET_SYSTEM_TRAY_ORIENTATION;
+		static IntPtr _NET_SYSTEM_TRAY_OPCODE;
+		static IntPtr _NET_WM_STATE_MAXIMIZED_HORZ;
+		static IntPtr _NET_WM_STATE_MAXIMIZED_VERT;
+		static IntPtr _XEMBED;
+		static IntPtr _XEMBED_INFO;
+		static IntPtr _MOTIF_WM_HINTS;
+		static IntPtr _NET_WM_STATE_SKIP_TASKBAR;
+		static IntPtr _NET_WM_STATE_ABOVE;
+		static IntPtr _NET_WM_STATE_MODAL;
+		static IntPtr _NET_WM_STATE_HIDDEN;
+		static IntPtr _NET_WM_CONTEXT_HELP;
+		static IntPtr _NET_WM_WINDOW_OPACITY;
+		//static IntPtr _NET_WM_WINDOW_TYPE_DESKTOP;
+		//static IntPtr _NET_WM_WINDOW_TYPE_DOCK;
+		//static IntPtr _NET_WM_WINDOW_TYPE_TOOLBAR;
+		//static IntPtr _NET_WM_WINDOW_TYPE_MENU;
+		static IntPtr _NET_WM_WINDOW_TYPE_UTILITY;
+		//static IntPtr _NET_WM_WINDOW_TYPE_SPLASH;
+		// static IntPtr _NET_WM_WINDOW_TYPE_DIALOG;
+		static IntPtr _NET_WM_WINDOW_TYPE_NORMAL;
+		static IntPtr CLIPBOARD;
+		static IntPtr PRIMARY;
+		//static IntPtr DIB;
+		static IntPtr OEMTEXT;
+		static IntPtr UTF8_STRING;
+		static IntPtr UTF16_STRING;
+		static IntPtr RICHTEXTFORMAT;
+		static IntPtr TARGETS;
 
 		// mouse hover message generation
-		private static HoverStruct	HoverState;		//
+		static HoverStruct	HoverState;		//
 
 		// double click message generation
-		private static ClickStruct	ClickPending;		//
+		static ClickStruct	ClickPending;		//
 
 		// Support for mouse grab
-		private static GrabStruct	Grab;			//
+		static GrabStruct	Grab;			//
 
 		// State
 		Point		mouse_position;		// Last position of mouse, in screen coords
 		internal static MouseButtons	MouseState;		// Last state of mouse buttons
 		internal static bool in_doevents;
 		// 'Constants'
-		private static int		DoubleClickInterval;	// msec; max interval between clicks to count as double click
+		static int		DoubleClickInterval;	// msec; max interval between clicks to count as double click
 
 		const EventMask SelectInputMask = (EventMask.ButtonPressMask | 
 						   EventMask.ButtonReleaseMask | 
@@ -247,7 +247,8 @@ namespace System.Windows.Forms {
 
 		#endregion	// Local Variables
 		#region Constructors
-		private XplatUIX11() {
+		XplatUIX11()
+		{
 			// Handle singleton stuff first
 			RefCount = 0;
 			in_doevents = false;
@@ -425,7 +426,8 @@ namespace System.Windows.Forms {
 		#endregion	// XExceptionClass
 
 		#region Internal Methods
-		internal void SetDisplay(IntPtr display_handle) {
+		internal void SetDisplay(IntPtr display_handle)
+		{
 			if (display_handle != IntPtr.Zero) {
 				Hwnd	hwnd;
 
@@ -549,14 +551,20 @@ namespace System.Windows.Forms {
 		}
 		#endregion	// Internal Methods
 
-		#region Private Methods
-		private int unixtime() {
+		#region Methods
+		[Conditional ("DriverDebug")]
+		static void DriverDebug (string format, params object [] args)
+		{
+			Console.WriteLine (String.Format (format, args));
+		}
+		
+		int unixtime() {
 			TimeSpan t = (DateTime.UtcNow - new DateTime(1970, 1, 1));
 
 			return (int) t.TotalSeconds;
 		}
 
-		private static void SetupAtoms() {
+		static void SetupAtoms() {
 			// make sure this array stays in sync with the statements below
 			string [] atom_names = new string[] {
 				"WM_PROTOCOLS",
@@ -710,18 +718,18 @@ namespace System.Windows.Forms {
 			_NET_SYSTEM_TRAY_S = XInternAtom (DisplayHandle, "_NET_SYSTEM_TRAY_S" + ScreenNo.ToString(), false);
 		}
 
-		private void GetSystrayManagerWindow() {
+		void GetSystrayManagerWindow() {
 			XGrabServer(DisplayHandle);
 			SystrayMgrWindow = XGetSelectionOwner(DisplayHandle, _NET_SYSTEM_TRAY_S);
 			XUngrabServer(DisplayHandle);
 			XFlush(DisplayHandle);
 		}
 
-		private void SendNetWMMessage(IntPtr window, IntPtr message_type, IntPtr l0, IntPtr l1, IntPtr l2) {
+		void SendNetWMMessage(IntPtr window, IntPtr message_type, IntPtr l0, IntPtr l1, IntPtr l2) {
 			SendNetWMMessage (window, message_type, l0, l1, l2, IntPtr.Zero);
 		}
 
-		private void SendNetWMMessage(IntPtr window, IntPtr message_type, IntPtr l0, IntPtr l1, IntPtr l2, IntPtr l3) {
+		void SendNetWMMessage(IntPtr window, IntPtr message_type, IntPtr l0, IntPtr l1, IntPtr l2, IntPtr l3) {
 			XEvent	xev;
 
 			xev = new XEvent();
@@ -737,7 +745,7 @@ namespace System.Windows.Forms {
 			XSendEvent(DisplayHandle, RootWindow, false, new IntPtr ((int) (EventMask.SubstructureRedirectMask | EventMask.SubstructureNotifyMask)), ref xev);
 		}
 
-		private void SendNetClientMessage(IntPtr window, IntPtr message_type, IntPtr l0, IntPtr l1, IntPtr l2) {
+		void SendNetClientMessage(IntPtr window, IntPtr message_type, IntPtr l0, IntPtr l1, IntPtr l2) {
 			XEvent	xev;
 
 			xev = new XEvent();
@@ -909,7 +917,7 @@ namespace System.Windows.Forms {
 			return new Point (x, y);
 		}
 		
-		private void DeriveStyles(int Style, int ExStyle, out FormBorderStyle border_style, out bool border_static, out TitleStyle title_style, out int caption_height, out int tool_caption_height) {
+		void DeriveStyles(int Style, int ExStyle, out FormBorderStyle border_style, out bool border_static, out TitleStyle title_style, out int caption_height, out int tool_caption_height) {
 
 			caption_height = 0;
 			tool_caption_height = 19;
@@ -989,11 +997,11 @@ namespace System.Windows.Forms {
 			}
 		}
 
-		private void SetHwndStyles(Hwnd hwnd, CreateParams cp) {
+		void SetHwndStyles(Hwnd hwnd, CreateParams cp) {
 			DeriveStyles(cp.Style, cp.ExStyle, out hwnd.border_style, out hwnd.border_static, out hwnd.title_style, out hwnd.caption_height, out hwnd.tool_caption_height);
 		}
 
-		private void SetWMStyles(Hwnd hwnd, CreateParams cp) {
+		void SetWMStyles(Hwnd hwnd, CreateParams cp) {
 			MotifWmHints		mwmHints;
 			MotifFunctions		functions;
 			MotifDecorations	decorations;
@@ -1098,9 +1106,7 @@ namespace System.Windows.Forms {
 			mwmHints.functions = (IntPtr)functions;
 			mwmHints.decorations = (IntPtr)decorations;
 
-#if debug
-			Console.WriteLine ("SetWMStyles ({0}, {1}) functions = {2}, decorations = {3}", hwnd, cp, functions, decorations);
-#endif
+			DriverDebug ("SetWMStyles ({0}, {1}) functions = {2}, decorations = {3}", hwnd, cp, functions, decorations);
 
 			if (cp.IsSet (WindowExStyles.WS_EX_TOOLWINDOW)) {
 				// needed! map toolwindows to _NET_WM_WINDOW_TYPE_UTILITY to make newer metacity versions happy
@@ -1184,7 +1190,7 @@ namespace System.Windows.Forms {
 			}
 		}
 
-		private void SetIcon(Hwnd hwnd, Icon icon)
+		void SetIcon(Hwnd hwnd, Icon icon)
 		{
 			if (icon == null) {
 				// XXX
@@ -1223,11 +1229,11 @@ namespace System.Windows.Forms {
 			}
 		}
 
-		private void WakeupMain () {
+		void WakeupMain () {
 			wake.Send (new byte [] { 0xFF });
 		}
 
-		private XEventQueue ThreadQueue(Thread thread) {
+		XEventQueue ThreadQueue(Thread thread) {
 			XEventQueue	queue;
 
 			queue = (XEventQueue)MessageQueues[thread];
@@ -1239,7 +1245,7 @@ namespace System.Windows.Forms {
 			return queue;
 		}
 
-		private void TranslatePropertyToClipboard(IntPtr property) {
+		void TranslatePropertyToClipboard(IntPtr property) {
 			IntPtr			actual_atom;
 			int			actual_format;
 			IntPtr			nitems;
@@ -1287,7 +1293,7 @@ namespace System.Windows.Forms {
 			}
 		}
 
-		private string UnescapeUnicodeFromAnsi (string value)
+		string UnescapeUnicodeFromAnsi (string value)
 		{
 			if (value == null || value.IndexOf ("\\u") == -1)
 				return value;
@@ -1329,7 +1335,7 @@ namespace System.Windows.Forms {
 			return sb.ToString ();
 		}
 
-		private void AddExpose (Hwnd hwnd, bool client, int x, int y, int width, int height) {
+		void AddExpose (Hwnd hwnd, bool client, int x, int y, int width, int height) {
 			// Don't waste time
 			if ((hwnd == null) || (x > hwnd.Width) || (y > hwnd.Height) || ((x + width) < 0) || ((y + height) < 0)) {
 				return;
@@ -1364,7 +1370,7 @@ namespace System.Windows.Forms {
 			}
 		}
 
-		private static Hwnd.Borders FrameExtents (IntPtr window)
+		static Hwnd.Borders FrameExtents (IntPtr window)
 		{
 			IntPtr actual_atom;
 			int actual_format;
@@ -1387,7 +1393,7 @@ namespace System.Windows.Forms {
 			return rect;
 		}
 
-		private void AddConfigureNotify (XEvent xevent) {
+		void AddConfigureNotify (XEvent xevent) {
 			Hwnd	hwnd;
 
 			hwnd = Hwnd.GetObjectFromWindow(xevent.ConfigureEvent.window);
@@ -1417,9 +1423,9 @@ namespace System.Windows.Forms {
 				hwnd.height = TranslatedSize.Height;
 				hwnd.ClientRect = Rectangle.Empty;
 
-#if debug
-				Console.WriteLine ("AddConfigureNotify (hwnd.Handle = {1}, final hwnd.rect = {0}, reported rect={2})", new Rectangle (hwnd.x, hwnd.y, hwnd.width, hwnd.height), hwnd.Handle, new Rectangle (xevent.ConfigureEvent.x, xevent.ConfigureEvent.y, xevent.ConfigureEvent.width, xevent.ConfigureEvent.width));
-#endif			
+				DriverDebug ("AddConfigureNotify (hwnd.Handle = {1}, final hwnd.rect = {0}, reported rect={2})",
+					     new Rectangle (hwnd.x, hwnd.y, hwnd.width, hwnd.height), hwnd.Handle,
+					     new Rectangle (xevent.ConfigureEvent.x, xevent.ConfigureEvent.y, xevent.ConfigureEvent.width, xevent.ConfigureEvent.width));
 				lock (hwnd.configure_lock) {
 					if (!hwnd.configure_pending) {
 						hwnd.Queue.EnqueueLocked (xevent);
@@ -1430,7 +1436,7 @@ namespace System.Windows.Forms {
 			// We drop configure events for Client windows
 		}
 
-		private void ShowCaret() {
+		void ShowCaret() {
 			if ((Caret.gc == IntPtr.Zero) || Caret.On) {
 				return;
 			}
@@ -1441,7 +1447,7 @@ namespace System.Windows.Forms {
 			}
 		}
 
-		private void HideCaret() {
+		void HideCaret() {
 			if ((Caret.gc == IntPtr.Zero) || !Caret.On) {
 				return;
 			}
@@ -1452,7 +1458,7 @@ namespace System.Windows.Forms {
 			}
 		}
 
-		private int NextTimeout (ArrayList timers, DateTime now) {
+		int NextTimeout (ArrayList timers, DateTime now) {
 			int timeout = 0; 
 
 			foreach (Timer timer in timers) {
@@ -1474,7 +1480,7 @@ namespace System.Windows.Forms {
 			return timeout;
 		}
 
-		private void CheckTimers (ArrayList timers, DateTime now) {
+		void CheckTimers (ArrayList timers, DateTime now) {
 			int count;
 
 			count = timers.Count;
@@ -1505,12 +1511,12 @@ namespace System.Windows.Forms {
 			}
 		}
 
-		private void WaitForHwndMessage (Hwnd hwnd, Msg message) {
+		void WaitForHwndMessage (Hwnd hwnd, Msg message) {
 			WaitForHwndMessage (hwnd, message, false);
 
 		}
 
-		private void WaitForHwndMessage (Hwnd hwnd, Msg message, bool process) {
+		void WaitForHwndMessage (Hwnd hwnd, Msg message, bool process) {
 			MSG msg = new MSG ();
 			XEventQueue queue;
 
@@ -1569,7 +1575,7 @@ namespace System.Windows.Forms {
 
 		}
 
-		private void MapWindow(Hwnd hwnd, WindowType windows) {
+		void MapWindow(Hwnd hwnd, WindowType windows) {
 			if (!hwnd.mapped) {
 				Form f = Control.FromHandle(hwnd.Handle) as Form;
 				if (f != null) {
@@ -1607,7 +1613,7 @@ namespace System.Windows.Forms {
 			}
 		}
 
-		private void UnmapWindow(Hwnd hwnd, WindowType windows) {
+		void UnmapWindow(Hwnd hwnd, WindowType windows) {
 			if (hwnd.mapped) {
 				Form f = null;
 				if (Control.FromHandle(hwnd.Handle) is Form) {
@@ -1647,7 +1653,11 @@ namespace System.Windows.Forms {
 			}
 		}
 
-		private void UpdateMessageQueue (XEventQueue queue) {
+		void UpdateMessageQueue (XEventQueue queue) {
+			UpdateMessageQueue(queue, true);
+		}
+
+		void UpdateMessageQueue (XEventQueue queue, bool allowIdle) {
 			DateTime	now;
 			int		pending;
 			Hwnd		hwnd;
@@ -1658,7 +1668,7 @@ namespace System.Windows.Forms {
 				pending = XPending (DisplayHandle);
 			}
 
-			if (pending == 0) {
+			if (pending == 0 && allowIdle) {
 				if ((queue == null || queue.DispatchIdle) && Idle != null) {
 					Idle (this, EventArgs.Empty);
 				}
@@ -1734,11 +1744,8 @@ namespace System.Windows.Forms {
 				if (hwnd == null)
 					continue;
 
-#if debug				
-				Console.WriteLine ("UpdateMessageQueue (), got Event: {0}", xevent.ToString ());
-#else
 				DebugHelper.WriteLine  ("UpdateMessageQueue got Event: " + xevent.ToString ());
-#endif
+
 				switch (xevent.type) {
 				case XEventName.Expose:
 					AddExpose (hwnd, xevent.ExposeEvent.window == hwnd.ClientWindow, xevent.ExposeEvent.x, xevent.ExposeEvent.y, xevent.ExposeEvent.width, xevent.ExposeEvent.height);
@@ -1881,9 +1888,7 @@ namespace System.Windows.Forms {
 							XDeleteProperty(DisplayHandle, FosterParent, (IntPtr)xevent.SelectionEvent.property);
 							if (!Clipboard.Formats.Contains(xevent.SelectionEvent.property)) {
 								Clipboard.Formats.Add(xevent.SelectionEvent.property);
-								#if DriverDebugExtra
-								Console.WriteLine("Got supported clipboard atom format: {0}", xevent.SelectionEvent.property);
-								#endif
+								DriverDebug("Got supported clipboard atom format: {0}", xevent.SelectionEvent.property);
 							}
 						}
 					} else if (Clipboard.Retrieving) {
@@ -1952,9 +1957,7 @@ namespace System.Windows.Forms {
 					break;
 
 				case XEventName.PropertyNotify:
-#if debug
-					Console.WriteLine ("UpdateMessageQueue (), got Event: {0}", xevent.ToString ());
-#endif
+					DriverDebug ("UpdateMessageQueue (), got Event: {0}", xevent.ToString ());
 					if (xevent.PropertyEvent.atom == _NET_ACTIVE_WINDOW) {
 						IntPtr	actual_atom;
 						int	actual_format;
@@ -2017,7 +2020,7 @@ namespace System.Windows.Forms {
 			}
 		}
 
-		private IntPtr GetMousewParam(int Delta) {
+		IntPtr GetMousewParam(int Delta) {
 			int	result = 0;
 
 			if ((MouseState & MouseButtons.Left) != 0) {
@@ -2045,7 +2048,7 @@ namespace System.Windows.Forms {
 
 			return (IntPtr)result;
 		}
-		private IntPtr XGetParent(IntPtr handle) {
+		IntPtr XGetParent(IntPtr handle) {
 			IntPtr	Root;
 			IntPtr	Parent;
 			IntPtr	Children;
@@ -2063,7 +2066,7 @@ namespace System.Windows.Forms {
 			return Parent;
 		}
 
-		private int HandleError (IntPtr display, ref XErrorEvent error_event)
+		int HandleError (IntPtr display, ref XErrorEvent error_event)
 		{
 			// we need to workaround a problem with the
 			// ordering of destruction of Drawables and
@@ -2090,7 +2093,7 @@ namespace System.Windows.Forms {
 			return 0;
 		}
 
-		private void AccumulateDestroyedHandles (Control c, ArrayList list)
+		void AccumulateDestroyedHandles (Control c, ArrayList list)
 		{
 			DebugHelper.Enter ();
 			if (c != null) {
@@ -2102,10 +2105,8 @@ namespace System.Windows.Forms {
 				if (c.IsHandleCreated && !c.IsDisposed) {
 					Hwnd hwnd = Hwnd.ObjectFromHandle(c.Handle);
 
-					#if DriverDebug || DriverDebugDestroy
-					Console.WriteLine (" + adding {0} to the list of zombie windows", XplatUI.Window (hwnd.Handle));
-					Console.WriteLine (" + parent X window is {0:X}", XGetParent (hwnd.whole_window).ToInt32());
-					#endif
+					DriverDebug (" + adding {0} to the list of zombie windows", XplatUI.Window (hwnd.Handle));
+					DriverDebug (" + parent X window is {0:X}", XGetParent (hwnd.whole_window).ToInt32());
 
 					list.Add (hwnd);
 					CleanupCachedWindows (hwnd);
@@ -2138,7 +2139,7 @@ namespace System.Windows.Forms {
 			DestroyCaret (hwnd.Handle);
 		}
 
-		private void PerformNCCalc(Hwnd hwnd) {
+		void PerformNCCalc(Hwnd hwnd) {
 			XplatUIWin32.NCCALCSIZE_PARAMS	ncp;
 			IntPtr				ptr;
 			Rectangle			rect;
@@ -2170,10 +2171,10 @@ namespace System.Windows.Forms {
 
 			AddExpose (hwnd, hwnd.WholeWindow == hwnd.ClientWindow, 0, 0, hwnd.Width, hwnd.Height);
 		}
-		#endregion	// Private Methods
+		#endregion	// Methods
 
 		#region	Callbacks
-		private void MouseHover(object sender, EventArgs e) {
+		void MouseHover(object sender, EventArgs e) {
 			XEvent	xevent;
 			Hwnd	hwnd;
 
@@ -2198,7 +2199,7 @@ namespace System.Windows.Forms {
 			}
 		}
 
-		private void CaretCallback(object sender, EventArgs e) {
+		void CaretCallback(object sender, EventArgs e) {
 			if (Caret.Paused) {
 				return;
 			}
@@ -2569,7 +2570,8 @@ namespace System.Windows.Forms {
 				Idle (this, e);
 		}
 		
-		internal override IntPtr InitializeDriver() {
+		internal override IntPtr InitializeDriver()
+		{
 			lock (this) {
 				if (DisplayHandle==IntPtr.Zero) {
 					SetDisplay(XOpenDisplay(IntPtr.Zero));
@@ -2578,7 +2580,8 @@ namespace System.Windows.Forms {
 			return IntPtr.Zero;
 		}
 
-		internal override void ShutdownDriver(IntPtr token) {
+		internal override void ShutdownDriver(IntPtr token)
+		{
 			lock (this) {
 				if (DisplayHandle!=IntPtr.Zero) {
 					XCloseDisplay(DisplayHandle);
@@ -2587,12 +2590,14 @@ namespace System.Windows.Forms {
 			}
 		}
 
-		internal override void EnableThemes() {
+		internal override void EnableThemes()
+		{
 			themes_enabled = true;
 		}
 
 
-		internal override void Activate(IntPtr handle) {
+		internal override void Activate(IntPtr handle)
+		{
 			Hwnd hwnd;
 
 			hwnd = Hwnd.ObjectFromHandle(handle);
@@ -2619,13 +2624,15 @@ namespace System.Windows.Forms {
 			}
 		}
 
-		internal override void AudibleAlert(AlertType alert) {
+		internal override void AudibleAlert(AlertType alert)
+		{
 			XBell(DisplayHandle, 0);
 			return;
 		}
 
 
-		internal override void CaretVisible(IntPtr handle, bool visible) {
+		internal override void CaretVisible(IntPtr handle, bool visible)
+		{
 			if (Caret.Hwnd == handle) {
 				if (visible) {
 					if (!Caret.Visible) {
@@ -2641,12 +2648,14 @@ namespace System.Windows.Forms {
 			}
 		}
 
-		internal override bool CalculateWindowRect(ref Rectangle ClientRect, CreateParams cp, Menu menu, out Rectangle WindowRect) {
+		internal override bool CalculateWindowRect(ref Rectangle ClientRect, CreateParams cp, Menu menu, out Rectangle WindowRect)
+		{
 			WindowRect = Hwnd.GetWindowRectangle (cp, menu, ClientRect);
 			return true;
 		}
 
-		internal override void ClientToScreen(IntPtr handle, ref int x, ref int y) {
+		internal override void ClientToScreen(IntPtr handle, ref int x, ref int y)
+		{
 			int	dest_x_return;
 			int	dest_y_return;
 			IntPtr	child;
@@ -2662,7 +2671,8 @@ namespace System.Windows.Forms {
 			y = dest_y_return;
 		}
 
-		internal override int[] ClipboardAvailableFormats(IntPtr handle) {
+		internal override int[] ClipboardAvailableFormats(IntPtr handle)
+		{
 			DataFormats.Format	f;
 			int[]			result;
 
@@ -2679,7 +2689,7 @@ namespace System.Windows.Forms {
 
 				Clipboard.Enumerating = true;
 				while (Clipboard.Enumerating) {
-					UpdateMessageQueue(null);
+					UpdateMessageQueue(null, false);
 				}
 				f = f.Next;
 			}
@@ -2694,14 +2704,16 @@ namespace System.Windows.Forms {
 			return result;
 		}
 
-		internal override void ClipboardClose(IntPtr handle) {
+		internal override void ClipboardClose(IntPtr handle)
+		{
 			if (handle != ClipMagic) {
 				throw new ArgumentException("handle is not a valid clipboard handle");
 			}
 			return;
 		}
 
-		internal override int ClipboardGetID(IntPtr handle, string format) {
+		internal override int ClipboardGetID(IntPtr handle, string format)
+		{
 			if (handle != ClipMagic) {
 				throw new ArgumentException("handle is not a valid clipboard handle");
 			}
@@ -2727,7 +2739,8 @@ namespace System.Windows.Forms {
 			return XInternAtom(DisplayHandle, format, false).ToInt32();
 		}
 
-		internal override IntPtr ClipboardOpen(bool primary_selection) {
+		internal override IntPtr ClipboardOpen(bool primary_selection)
+		{
 			if (!primary_selection)
 				ClipMagic = CLIPBOARD;
 			else
@@ -2735,18 +2748,20 @@ namespace System.Windows.Forms {
 			return ClipMagic;
 		}
 
-		internal override object ClipboardRetrieve(IntPtr handle, int type, XplatUI.ClipboardToObject converter) {
+		internal override object ClipboardRetrieve(IntPtr handle, int type, XplatUI.ClipboardToObject converter)
+		{
 			XConvertSelection(DisplayHandle, handle, (IntPtr)type, (IntPtr)type, FosterParent, IntPtr.Zero);
 
 			Clipboard.Retrieving = true;
 			while (Clipboard.Retrieving) {
-				UpdateMessageQueue(null);
+				UpdateMessageQueue(null, false);
 			}
 
 			return Clipboard.Item;
 		}
 
-		internal override void ClipboardStore(IntPtr handle, object obj, int type, XplatUI.ObjectToClipboard converter) {
+		internal override void ClipboardStore(IntPtr handle, object obj, int type, XplatUI.ObjectToClipboard converter)
+		{
 			Clipboard.Converter = converter;
 
 			if (obj != null) {
@@ -2890,9 +2905,7 @@ namespace System.Windows.Forms {
 			hwnd.WholeWindow = WholeWindow;
 			hwnd.ClientWindow = ClientWindow;
 
-			#if DriverDebug || DriverDebugCreate
-				Console.WriteLine("Created window {0:X} / {1:X} parent {2:X}, Style {3}, ExStyle {4}", ClientWindow.ToInt32(), WholeWindow.ToInt32(), hwnd.parent != null ? hwnd.parent.Handle.ToInt32() : 0, (WindowStyles)cp.Style, (WindowExStyles)cp.ExStyle);
-			#endif
+			DriverDebug("Created window {0:X} / {1:X} parent {2:X}, Style {3}, ExStyle {4}", ClientWindow.ToInt32(), WholeWindow.ToInt32(), hwnd.parent != null ? hwnd.parent.Handle.ToInt32() : 0, (WindowStyles)cp.Style, (WindowExStyles)cp.ExStyle);
 			
 			if (!StyleSet (cp.Style, WindowStyles.WS_CHILD)) {
 				if ((X != unchecked((int)0x80000000)) && (Y != unchecked((int)0x80000000))) {
@@ -2964,7 +2977,8 @@ namespace System.Windows.Forms {
 			return hwnd.Handle;
 		}
 
-		internal override IntPtr CreateWindow(IntPtr Parent, int X, int Y, int Width, int Height) {
+		internal override IntPtr CreateWindow(IntPtr Parent, int X, int Y, int Width, int Height)
+		{
 			CreateParams create_params = new CreateParams();
 
 			create_params.Caption = "";
@@ -2973,7 +2987,7 @@ namespace System.Windows.Forms {
 			create_params.Width = Width;
 			create_params.Height = Height;
 
-			create_params.ClassName=XplatUI.DefaultClassName;
+			create_params.ClassName=XplatUI.GetDefaultClassName (GetType ());
 			create_params.ClassStyle = 0;
 			create_params.ExStyle=0;
 			create_params.Parent=IntPtr.Zero;
@@ -2982,7 +2996,8 @@ namespace System.Windows.Forms {
 			return CreateWindow(create_params);
 		}
 
-		internal override IntPtr DefineCursor(Bitmap bitmap, Bitmap mask, Color cursor_pixel, Color mask_pixel, int xHotSpot, int yHotSpot) {
+		internal override IntPtr DefineCursor(Bitmap bitmap, Bitmap mask, Color cursor_pixel, Color mask_pixel, int xHotSpot, int yHotSpot)
+		{
 			IntPtr	cursor;
 			Bitmap	cursor_bitmap;
 			Bitmap	cursor_mask;
@@ -3069,7 +3084,8 @@ namespace System.Windows.Forms {
 			return cursor;
 		}
 
-		internal override Bitmap DefineStdCursorBitmap (StdCursor id) {
+		internal override Bitmap DefineStdCursorBitmap (StdCursor id)
+		{
 			CursorFontShape	shape;
 			string name;
 			IntPtr theme;
@@ -3082,26 +3098,20 @@ namespace System.Windows.Forms {
 				size = XcursorGetDefaultSize (DisplayHandle);
 				theme = XcursorGetTheme (DisplayHandle);
 				IntPtr images_ptr = XcursorLibraryLoadImages (name, theme, size);
-#if debug
-				Console.WriteLine ("DefineStdCursorBitmap, id={0}, #id={1}, name{2}, size={3}, theme: {4}, images_ptr={5}", id, (int) id, name, size, Marshal.PtrToStringAnsi (theme), images_ptr);
-#endif
+				DriverDebug ("DefineStdCursorBitmap, id={0}, #id={1}, name{2}, size={3}, theme: {4}, images_ptr={5}", id, (int) id, name, size, Marshal.PtrToStringAnsi (theme), images_ptr);
 
 				if (images_ptr == IntPtr.Zero) {
 					return null;
 				}
 
 				XcursorImages images = (XcursorImages) Marshal.PtrToStructure (images_ptr, typeof (XcursorImages));
-#if debug
-				Console.WriteLine ("DefineStdCursorBitmap, cursor has {0} images", images.nimage);
-#endif
+				DriverDebug ("DefineStdCursorBitmap, cursor has {0} images", images.nimage);
 
 				if (images.nimage > 0) {			
 					// We only care about the first image.
 					XcursorImage image = (XcursorImage)Marshal.PtrToStructure (Marshal.ReadIntPtr (images.images), typeof (XcursorImage));
 					
-#if debug
-					Console.WriteLine ("DefineStdCursorBitmap, loaded image <size={0}, height={1}, width={2}, xhot={3}, yhot={4}, pixels={5}", image.size, image.height, image.width, image.xhot, image.yhot, image.pixels);
-#endif
+					DriverDebug ("DefineStdCursorBitmap, loaded image <size={0}, height={1}, width={2}, xhot={3}, yhot={4}, pixels={5}", image.size, image.height, image.width, image.xhot, image.yhot, image.pixels);
 					// A sanity check
 					if (image.width <= short.MaxValue && image.height <= short.MaxValue) {
 						int [] pixels = new int [image.width * image.height];
@@ -3126,7 +3136,8 @@ namespace System.Windows.Forms {
 		}
 
 		
-		internal override IntPtr DefineStdCursor(StdCursor id) {
+		internal override IntPtr DefineStdCursor(StdCursor id)
+		{
 			CursorFontShape	shape;
 			IntPtr		cursor;
 
@@ -3138,7 +3149,8 @@ namespace System.Windows.Forms {
 			return cursor;
 		}
 
-		internal static CursorFontShape StdCursorToFontShape (StdCursor id) {
+		internal static CursorFontShape StdCursorToFontShape (StdCursor id)
+		{
 			CursorFontShape shape;
 			// FIXME - define missing shapes
 
@@ -3292,7 +3304,8 @@ namespace System.Windows.Forms {
 			return shape;
 		}
 
-		internal override IntPtr DefWndProc(ref Message msg) {
+		internal override IntPtr DefWndProc(ref Message msg)
+		{
 			switch ((Msg)msg.Msg) {
 				
 				case Msg.WM_IME_COMPOSITION:
@@ -3443,7 +3456,8 @@ namespace System.Windows.Forms {
 			return IntPtr.Zero;
 		}
 
-		internal override void DestroyCaret(IntPtr handle) {
+		internal override void DestroyCaret(IntPtr handle)
+		{
 			if (Caret.Hwnd == handle) {
 				if (Caret.Visible) {
 					HideCaret ();
@@ -3459,13 +3473,15 @@ namespace System.Windows.Forms {
 			}
 		}
 
-		internal override void DestroyCursor(IntPtr cursor) {
+		internal override void DestroyCursor(IntPtr cursor)
+		{
 			lock (XlibLock) {
 				XFreeCursor(DisplayHandle, cursor);
 			}
 		}
 
-		internal override void DestroyWindow(IntPtr handle) {
+		internal override void DestroyWindow(IntPtr handle)
+		{
 			Hwnd	hwnd;
 			hwnd = Hwnd.ObjectFromHandle(handle);
 			
@@ -3473,15 +3489,11 @@ namespace System.Windows.Forms {
 			// wait until it's completely dead before returning from 
 			// "destroying" calls, but just in case....
 			if (hwnd == null || hwnd.zombie) {
-				#if DriverDebug || DriverDebugDestroy
-					Console.WriteLine("window {0:X} already destroyed", handle.ToInt32());
-				#endif
+				DriverDebug ("window {0:X} already destroyed", handle.ToInt32());
 				return;
 			}
 
-			#if DriverDebug || DriverDebugDestroy
-				Console.WriteLine("Destroying window {0}", XplatUI.Window(hwnd.client_window));
-			#endif
+			DriverDebug ("Destroying window {0}", XplatUI.Window(hwnd.client_window));
 
 			SendParentNotify (hwnd.Handle, Msg.WM_DESTROY, int.MaxValue, int.MaxValue);
 				
@@ -3499,16 +3511,12 @@ namespace System.Windows.Forms {
 
 			lock (XlibLock) {
 				if (hwnd.whole_window != IntPtr.Zero) {
-					#if DriverDebug || DriverDebugDestroy
-					Console.WriteLine ("XDestroyWindow (whole_window = {0:X})", hwnd.whole_window.ToInt32());
-					#endif
+					DriverDebug ("XDestroyWindow (whole_window = {0:X})", hwnd.whole_window.ToInt32());
 					Keyboard.DestroyICForWindow (hwnd.whole_window);
 					XDestroyWindow(DisplayHandle, hwnd.whole_window);
 				}
 				else if (hwnd.client_window != IntPtr.Zero) {
-					#if DriverDebug || DriverDebugDestroy
-					Console.WriteLine ("XDestroyWindow (client_window = {0:X})", hwnd.client_window.ToInt32());
-					#endif
+					DriverDebug ("XDestroyWindow (client_window = {0:X})", hwnd.client_window.ToInt32());
 					Keyboard.DestroyICForWindow (hwnd.client_window);
 					XDestroyWindow(DisplayHandle, hwnd.client_window);
 				}
@@ -3516,7 +3524,8 @@ namespace System.Windows.Forms {
 			}
 		}
 
-		internal override IntPtr DispatchMessage(ref MSG msg) {
+		internal override IntPtr DispatchMessage(ref MSG msg)
+		{
 			return NativeWindow.WndProc(msg.hwnd, msg.message, msg.wParam, msg.lParam);
 		}
 
@@ -3681,7 +3690,8 @@ namespace System.Windows.Forms {
 			XFreeGC(DisplayHandle, gc);
 		}
 
-		internal override void DoEvents() {
+		internal override void DoEvents()
+		{
 			DebugHelper.Enter ();
 
 			MSG	msg = new MSG ();
@@ -3718,7 +3728,8 @@ namespace System.Windows.Forms {
 			DebugHelper.Leave ();
 		}
 
-		internal override void EnableWindow(IntPtr handle, bool Enable) {
+		internal override void EnableWindow(IntPtr handle, bool Enable)
+		{
 			Hwnd	hwnd;
 
 			hwnd = Hwnd.ObjectFromHandle(handle);
@@ -3727,11 +3738,13 @@ namespace System.Windows.Forms {
 			}
 		}
 
-		internal override void EndLoop(Thread thread) {
+		internal override void EndLoop(Thread thread)
+		{
 			// This is where we one day will shut down the loop for the thread
 		}
 
-		internal override IntPtr GetActive() {
+		internal override IntPtr GetActive()
+		{
 			IntPtr	actual_atom;
 			int	actual_format;
 			IntPtr	nitems;
@@ -3758,7 +3771,8 @@ namespace System.Windows.Forms {
 			return active;
 		}
 
-		internal override Region GetClipRegion(IntPtr handle) {
+		internal override Region GetClipRegion(IntPtr handle)
+		{
 			Hwnd	hwnd;
 
 			hwnd = Hwnd.ObjectFromHandle(handle);
@@ -3769,14 +3783,16 @@ namespace System.Windows.Forms {
 			return null;
 		}
 
-		internal override void GetCursorInfo(IntPtr cursor, out int width, out int height, out int hotspot_x, out int hotspot_y) {
+		internal override void GetCursorInfo(IntPtr cursor, out int width, out int height, out int hotspot_x, out int hotspot_y)
+		{
 			width = 20;
 			height = 20;
 			hotspot_x = 0;
 			hotspot_y = 0;
 		}
 
-		internal override void GetDisplaySize(out Size size) {
+		internal override void GetDisplaySize(out Size size)
+		{
 			XWindowAttributes	attributes=new XWindowAttributes();
 
 			lock (XlibLock) {
@@ -3787,7 +3803,8 @@ namespace System.Windows.Forms {
 			size = new Size(attributes.width, attributes.height);
 		}
 
-		internal override SizeF GetAutoScaleSize(Font font) {
+		internal override SizeF GetAutoScaleSize(Font font)
+		{
 			Graphics	g;
 			float		width;
 			string		magic_string = "The quick brown fox jumped over the lazy dog.";
@@ -3799,7 +3816,8 @@ namespace System.Windows.Forms {
 			return new SizeF(width, font.Height);
 		}
 
-		internal override IntPtr GetParent(IntPtr handle) {
+		internal override IntPtr GetParent(IntPtr handle)
+		{
 			Hwnd	hwnd;
 
 			hwnd = Hwnd.ObjectFromHandle(handle);
@@ -3810,11 +3828,13 @@ namespace System.Windows.Forms {
 		}
 		
 		// This is a nop on win32 and x11
-		internal override IntPtr GetPreviousWindow(IntPtr handle) {
+		internal override IntPtr GetPreviousWindow(IntPtr handle)
+		{
 			return handle;
 		}
 
-		internal override void GetCursorPos(IntPtr handle, out int x, out int y) {
+		internal override void GetCursorPos(IntPtr handle, out int x, out int y)
+		{
 			IntPtr	use_handle;
 			IntPtr	root;
 			IntPtr	child;
@@ -3843,19 +3863,22 @@ namespace System.Windows.Forms {
 			}
 		}
 
-		internal override IntPtr GetFocus() {
+		internal override IntPtr GetFocus()
+		{
 			return FocusWindow;
 		}
 
 
-		internal override bool GetFontMetrics(Graphics g, Font font, out int ascent, out int descent) {
+		internal override bool GetFontMetrics(Graphics g, Font font, out int ascent, out int descent)
+		{
 			FontFamily ff = font.FontFamily;
 			ascent = ff.GetCellAscent (font.Style);
 			descent = ff.GetCellDescent (font.Style);
 			return true;
 		}
 
-		internal override Point GetMenuOrigin(IntPtr handle) {
+		internal override Point GetMenuOrigin(IntPtr handle)
+		{
 			Hwnd	hwnd;
 
 			hwnd = Hwnd.ObjectFromHandle(handle);
@@ -3867,7 +3890,8 @@ namespace System.Windows.Forms {
 		}
 
 		[MonoTODO("Implement filtering")]
-		internal override bool GetMessage(Object queue_id, ref MSG msg, IntPtr handle, int wFilterMin, int wFilterMax) {
+		internal override bool GetMessage(Object queue_id, ref MSG msg, IntPtr handle, int wFilterMin, int wFilterMax)
+		{
 			XEvent	xevent;
 			bool	client;
 			Hwnd	hwnd;
@@ -3915,9 +3939,7 @@ namespace System.Windows.Forms {
 			// client_window, and that'll result in BadWindow errors if there's some lag
 			// between the XDestroyWindow call and the DestroyNotify event.
 			if (hwnd == null || hwnd.zombie && xevent.AnyEvent.type != XEventName.ClientMessage) {
-				#if DriverDebug || DriverDebugDestroy
-					Console.WriteLine("GetMessage(): Got message {0} for non-existent or already destroyed window {1:X}", xevent.type, xevent.AnyEvent.window.ToInt32());
-				#endif
+				DriverDebug("GetMessage(): Got message {0} for non-existent or already destroyed window {1:X}", xevent.type, xevent.AnyEvent.window.ToInt32());
 				goto ProcessNextMessage;
 			}
 
@@ -4185,9 +4207,9 @@ namespace System.Windows.Forms {
 
 				case XEventName.MotionNotify: {
 					if (client) {
-						#if DriverDebugExtra
-							Console.WriteLine("GetMessage(): Window {0:X} MotionNotify x={1} y={2}", client ? hwnd.client_window.ToInt32() : hwnd.whole_window.ToInt32(), xevent.MotionEvent.x, xevent.MotionEvent.y);
-						#endif
+						DriverDebug("GetMessage(): Window {0:X} MotionNotify x={1} y={2}",
+							    client ? hwnd.client_window.ToInt32() : hwnd.whole_window.ToInt32(),
+							    xevent.MotionEvent.x, xevent.MotionEvent.y);
 
 						if (Grab.Hwnd != IntPtr.Zero) {
 							msg.hwnd = Grab.Hwnd;
@@ -4240,9 +4262,9 @@ namespace System.Windows.Forms {
 						HitTest	ht;
 						IntPtr dummy;
 
-						#if DriverDebugExtra
-							Console.WriteLine("GetMessage(): non-client area {0:X} MotionNotify x={1} y={2}", client ? hwnd.client_window.ToInt32() : hwnd.whole_window.ToInt32(), xevent.MotionEvent.x, xevent.MotionEvent.y);
-						#endif
+						DriverDebug("GetMessage(): non-client area {0:X} MotionNotify x={1} y={2}",
+							    client ? hwnd.client_window.ToInt32() : hwnd.whole_window.ToInt32(),
+							    xevent.MotionEvent.x, xevent.MotionEvent.y);
 						msg.message = Msg.WM_NCMOUSEMOVE;
 
 						if (!hwnd.Enabled) {
@@ -4390,9 +4412,9 @@ namespace System.Windows.Forms {
 
 				case XEventName.ConfigureNotify: {
 					if (!client && (xevent.ConfigureEvent.xevent == xevent.ConfigureEvent.window)) {	// Ignore events for children (SubstructureNotify) and client areas
-						#if DriverDebugExtra
-							Console.WriteLine("GetMessage(): Window {0:X} ConfigureNotify x={1} y={2} width={3} height={4}", hwnd.client_window.ToInt32(), xevent.ConfigureEvent.x, xevent.ConfigureEvent.y, xevent.ConfigureEvent.width, xevent.ConfigureEvent.height);
-						#endif
+						DriverDebug("GetMessage(): Window {0:X} ConfigureNotify x={1} y={2} width={3} height={4}",
+							    hwnd.client_window.ToInt32(), xevent.ConfigureEvent.x,
+							    xevent.ConfigureEvent.y, xevent.ConfigureEvent.width, xevent.ConfigureEvent.height);
 
 						lock (hwnd.configure_lock) {
 							Form form = Control.FromHandle (hwnd.client_window) as Form;
@@ -4444,8 +4466,8 @@ namespace System.Windows.Forms {
 						}
 						goto ProcessNextMessage;
 					}
-					SendMessage(FocusWindow, Msg.WM_SETFOCUS, IntPtr.Zero, IntPtr.Zero);
 					Keyboard.FocusIn (FocusWindow);
+					SendMessage(FocusWindow, Msg.WM_SETFOCUS, IntPtr.Zero, IntPtr.Zero);
 					goto ProcessNextMessage;
 				}
 
@@ -4529,9 +4551,9 @@ namespace System.Windows.Forms {
 								break;
 							}
 						}
-						#if DriverDebugExtra
-							Console.WriteLine("GetMessage(): Window {0:X} Exposed non-client area {1},{2} {3}x{4}", hwnd.client_window.ToInt32(), xevent.ExposeEvent.x, xevent.ExposeEvent.y, xevent.ExposeEvent.width, xevent.ExposeEvent.height);
-						#endif
+						DriverDebug("GetMessage(): Window {0:X} Exposed non-client area {1},{2} {3}x{4}",
+							    hwnd.client_window.ToInt32(), xevent.ExposeEvent.x, xevent.ExposeEvent.y,
+							    xevent.ExposeEvent.width, xevent.ExposeEvent.height);
 
 						Rectangle rect = new Rectangle (xevent.ExposeEvent.x, xevent.ExposeEvent.y, xevent.ExposeEvent.width, xevent.ExposeEvent.height);
 						Region region = new Region (rect);
@@ -4541,9 +4563,9 @@ namespace System.Windows.Forms {
 						msg.refobject = region;
 						break;
 					}
-					#if DriverDebugExtra
-						Console.WriteLine("GetMessage(): Window {0:X} Exposed area {1},{2} {3}x{4}", hwnd.client_window.ToInt32(), xevent.ExposeEvent.x, xevent.ExposeEvent.y, xevent.ExposeEvent.width, xevent.ExposeEvent.height);
-					#endif
+					DriverDebug("GetMessage(): Window {0:X} Exposed area {1},{2} {3}x{4}",
+						    hwnd.client_window.ToInt32(), xevent.ExposeEvent.x, xevent.ExposeEvent.y,
+						    xevent.ExposeEvent.width, xevent.ExposeEvent.height);
 					if (Caret.Visible == true) {
 						Caret.Paused = true;
 						HideCaret();
@@ -4566,9 +4588,7 @@ namespace System.Windows.Forms {
 					if ((hwnd != null) && (hwnd.client_window == xevent.DestroyWindowEvent.window)) {
 						CleanupCachedWindows (hwnd);
 
-						#if DriverDebugDestroy
-							Console.WriteLine("Received X11 Destroy Notification for {0}", XplatUI.Window(hwnd.client_window));
-						#endif
+						DriverDebug("Received X11 Destroy Notification for {0}", XplatUI.Window(hwnd.client_window));
 
 						msg.hwnd = hwnd.client_window;
 						msg.message=Msg.WM_DESTROY;
@@ -4652,7 +4672,7 @@ namespace System.Windows.Forms {
 			return true;
 		}
 
-		private HitTest NCHitTest (Hwnd hwnd, int x, int y)
+		HitTest NCHitTest (Hwnd hwnd, int x, int y)
 		{
 			// The hit test is sent in screen coordinates
 			IntPtr dummy;
@@ -4678,7 +4698,8 @@ namespace System.Windows.Forms {
 					(IntPtr) 1); // left button
 		}
 
-		internal override bool GetText(IntPtr handle, out string text) {
+		internal override bool GetText(IntPtr handle, out string text)
+		{
 
 			lock (XlibLock) {
 				IntPtr actual_atom;
@@ -4715,7 +4736,8 @@ namespace System.Windows.Forms {
 			}
 		}
 
-		internal override void GetWindowPos(IntPtr handle, bool is_toplevel, out int x, out int y, out int width, out int height, out int client_width, out int client_height) {
+		internal override void GetWindowPos(IntPtr handle, bool is_toplevel, out int x, out int y, out int width, out int height, out int client_width, out int client_height)
+		{
 			Hwnd		hwnd;
 
 			hwnd = Hwnd.ObjectFromHandle(handle);
@@ -4745,7 +4767,8 @@ namespace System.Windows.Forms {
 			client_height = 0;
 		}
 
-		internal override FormWindowState GetWindowState(IntPtr handle) {
+		internal override FormWindowState GetWindowState(IntPtr handle)
+		{
 			Hwnd			hwnd;
 
 			hwnd = Hwnd.ObjectFromHandle(handle);
@@ -4756,7 +4779,7 @@ namespace System.Windows.Forms {
 			return hwnd.cached_window_state;
 		}
 
-		private FormWindowState UpdateWindowState (IntPtr handle) {
+		FormWindowState UpdateWindowState (IntPtr handle) {
 			IntPtr			actual_atom;
 			int			actual_format;
 			IntPtr			nitems;
@@ -4801,13 +4824,15 @@ namespace System.Windows.Forms {
 			return FormWindowState.Normal;
 		}
 
-		internal override void GrabInfo(out IntPtr handle, out bool GrabConfined, out Rectangle GrabArea) {
+		internal override void GrabInfo(out IntPtr handle, out bool GrabConfined, out Rectangle GrabArea)
+		{
 			handle = Grab.Hwnd;
 			GrabConfined = Grab.Confined;
 			GrabArea = Grab.Area;
 		}
 
-		internal override void GrabWindow(IntPtr handle, IntPtr confine_to_handle) {
+		internal override void GrabWindow(IntPtr handle, IntPtr confine_to_handle)
+		{
 			Hwnd	hwnd;
 			IntPtr	confine_to_window;
 
@@ -4842,7 +4867,8 @@ namespace System.Windows.Forms {
 			}
 		}
 
-		internal override void UngrabWindow(IntPtr hwnd) {
+		internal override void UngrabWindow(IntPtr hwnd)
+		{
 			lock (XlibLock) {
 				XUngrabPointer(DisplayHandle, IntPtr.Zero);
 				XFlush(DisplayHandle);
@@ -4850,7 +4876,7 @@ namespace System.Windows.Forms {
 			WindowUngrabbed (hwnd);			
 		}
 		
-		private void WindowUngrabbed (IntPtr hwnd) {
+		void WindowUngrabbed (IntPtr hwnd) {
 			bool was_grabbed = Grab.Hwnd != IntPtr.Zero;
 			
 			Grab.Hwnd = IntPtr.Zero;
@@ -4867,13 +4893,15 @@ namespace System.Windows.Forms {
 			}
 		}
 
-		internal override void HandleException(Exception e) {
+		internal override void HandleException(Exception e)
+		{
 			StackTrace st = new StackTrace(e, true);
 			Console.WriteLine("Exception '{0}'", e.Message+st.ToString());
 			Console.WriteLine("{0}{1}", e.Message, st.ToString());
 		}
 
-		internal override void Invalidate(IntPtr handle, Rectangle rc, bool clear) {
+		internal override void Invalidate(IntPtr handle, Rectangle rc, bool clear)
+		{
 			Hwnd	hwnd;
 
 			hwnd = Hwnd.ObjectFromHandle(handle);
@@ -4885,7 +4913,8 @@ namespace System.Windows.Forms {
 			}
 		}
 
-		internal override void InvalidateNC (IntPtr handle) {
+		internal override void InvalidateNC (IntPtr handle)
+		{
 			Hwnd	hwnd;
 
 			hwnd = Hwnd.ObjectFromHandle(handle);
@@ -4893,17 +4922,20 @@ namespace System.Windows.Forms {
 			AddExpose (hwnd, hwnd.WholeWindow == hwnd.ClientWindow, 0, 0, hwnd.Width, hwnd.Height);
 		}
 
-		internal override bool IsEnabled(IntPtr handle) {
+		internal override bool IsEnabled(IntPtr handle)
+		{
 			Hwnd hwnd = Hwnd.ObjectFromHandle (handle);
 			return (hwnd != null && hwnd.Enabled);
 		}
 		
-		internal override bool IsVisible(IntPtr handle) {
+		internal override bool IsVisible(IntPtr handle)
+		{
 			Hwnd hwnd = Hwnd.ObjectFromHandle (handle);
 			return (hwnd != null && hwnd.visible);
 		}
 
-		internal override void KillTimer(Timer timer) {
+		internal override void KillTimer(Timer timer)
+		{
 			XEventQueue queue = (XEventQueue) MessageQueues [timer.thread];
 
 			if (queue == null) {
@@ -4919,7 +4951,8 @@ namespace System.Windows.Forms {
 			queue.timer_list.Remove (timer);
 		}
 
-		internal override void MenuToScreen(IntPtr handle, ref int x, ref int y) {
+		internal override void MenuToScreen(IntPtr handle, ref int x, ref int y)
+		{
 			int	dest_x_return;
 			int	dest_y_return;
 			IntPtr	child;
@@ -4951,7 +4984,8 @@ namespace System.Windows.Forms {
 			OverrideCursorHandle = cursor;
 		}
 
-		internal override PaintEventArgs PaintEventStart(ref Message msg, IntPtr handle, bool client) {
+		internal override PaintEventArgs PaintEventStart(ref Message msg, IntPtr handle, bool client)
+		{
 			PaintEventArgs	paint_event;
 			Hwnd		hwnd;
 			Hwnd		paint_hwnd;
@@ -5023,7 +5057,8 @@ namespace System.Windows.Forms {
 			}
 		}
 
-		internal override void PaintEventEnd(ref Message msg, IntPtr handle, bool client) {
+		internal override void PaintEventEnd(ref Message msg, IntPtr handle, bool client)
+		{
 			Hwnd	hwnd;
 
 			hwnd = Hwnd.ObjectFromHandle (msg.HWnd);
@@ -5043,7 +5078,8 @@ namespace System.Windows.Forms {
 		}
 
 		[MonoTODO("Implement filtering and PM_NOREMOVE")]
-		internal override bool PeekMessage(Object queue_id, ref MSG msg, IntPtr hWnd, int wFilterMin, int wFilterMax, uint flags) {
+		internal override bool PeekMessage(Object queue_id, ref MSG msg, IntPtr hWnd, int wFilterMin, int wFilterMax, uint flags)
+		{
 			XEventQueue queue = (XEventQueue) queue_id;
 			bool	pending;
 
@@ -5073,7 +5109,8 @@ namespace System.Windows.Forms {
 			return GetMessage(queue_id, ref msg, hWnd, wFilterMin, wFilterMax);
 		}
 
-		internal override bool PostMessage (IntPtr handle, Msg message, IntPtr wparam, IntPtr lparam) {
+		internal override bool PostMessage (IntPtr handle, Msg message, IntPtr wparam, IntPtr lparam)
+		{
 			XEvent xevent = new XEvent ();
 			Hwnd hwnd = Hwnd.ObjectFromHandle(handle);
 
@@ -5101,7 +5138,8 @@ namespace System.Windows.Forms {
 			return true;
 		}
 
-		internal override void PostQuitMessage(int exitCode) {
+		internal override void PostQuitMessage(int exitCode)
+		{
 			ApplicationContext ctx = Application.MWFThread.Current.Context;
 			Form f = ctx != null ? ctx.MainForm : null;
 			if (f != null)
@@ -5116,7 +5154,8 @@ namespace System.Windows.Forms {
 			// TODO
 		}
 
-		internal override void RequestNCRecalc(IntPtr handle) {
+		internal override void RequestNCRecalc(IntPtr handle)
+		{
 			Hwnd				hwnd;
 
 			hwnd = Hwnd.ObjectFromHandle(handle);
@@ -5130,7 +5169,8 @@ namespace System.Windows.Forms {
 			InvalidateNC(handle);
 		}
 
-		internal override void ResetMouseHover(IntPtr handle) {
+		internal override void ResetMouseHover(IntPtr handle)
+		{
 			Hwnd	hwnd;
 
 			hwnd = Hwnd.ObjectFromHandle(handle);
@@ -5145,7 +5185,8 @@ namespace System.Windows.Forms {
 		}
 
 
-		internal override void ScreenToClient(IntPtr handle, ref int x, ref int y) {
+		internal override void ScreenToClient(IntPtr handle, ref int x, ref int y)
+		{
 			int	dest_x_return;
 			int	dest_y_return;
 			IntPtr	child;
@@ -5161,7 +5202,8 @@ namespace System.Windows.Forms {
 			y = dest_y_return;
 		}
 
-		internal override void ScreenToMenu(IntPtr handle, ref int x, ref int y) {
+		internal override void ScreenToMenu(IntPtr handle, ref int x, ref int y)
+		{
 			int	dest_x_return;
 			int	dest_y_return;
 			IntPtr	child;
@@ -5209,7 +5251,8 @@ namespace System.Windows.Forms {
 			}
 		}
 
-		internal override void ScrollWindow(IntPtr handle, Rectangle area, int XAmount, int YAmount, bool with_children) {
+		internal override void ScrollWindow(IntPtr handle, Rectangle area, int XAmount, int YAmount, bool with_children)
+		{
 			Hwnd		hwnd;
 			IntPtr		gc;
 			XGCValues	gc_values;
@@ -5267,7 +5310,8 @@ namespace System.Windows.Forms {
 			XFreeGC(DisplayHandle, gc);
 		}
 
-		internal override void ScrollWindow(IntPtr handle, int XAmount, int YAmount, bool with_children) {
+		internal override void ScrollWindow(IntPtr handle, int XAmount, int YAmount, bool with_children)
+		{
 			Hwnd		hwnd;
 			Rectangle	rect;
 
@@ -5321,7 +5365,8 @@ namespace System.Windows.Forms {
 			return visible_area;
 		}
 
-		internal override void SendAsyncMethod (AsyncMethodData method) {
+		internal override void SendAsyncMethod (AsyncMethodData method)
+		{
 			Hwnd	hwnd;
 			XEvent	xevent = new XEvent ();
 
@@ -5359,9 +5404,7 @@ namespace System.Windows.Forms {
 				data.Result = result;
 				
 				SendAsyncMethod (data);
-				#if DriverDebug || DriverDebugThreads
-				Console.WriteLine ("Sending {0} message across.", message);
-				#endif
+				DriverDebug("Sending {0} message across.", message);
 
 				return IntPtr.Zero;
 			}
@@ -5371,7 +5414,8 @@ namespace System.Windows.Forms {
 			return NativeWindow.WndProc(hwnd, message, wParam, lParam);
 		}
 
-		internal override int SendInput(IntPtr handle, Queue keys) { 
+		internal override int SendInput(IntPtr handle, Queue keys)
+		{ 
 			if (handle == IntPtr.Zero)
 				return 0;
 
@@ -5416,7 +5460,8 @@ namespace System.Windows.Forms {
 			return Dnd.StartDrag (hwnd.client_window, data, allowed_effects);
 		}
 
-		internal override void SetBorderStyle(IntPtr handle, FormBorderStyle border_style) {
+		internal override void SetBorderStyle(IntPtr handle, FormBorderStyle border_style)
+		{
 			Form form = Control.FromHandle (handle) as Form;
 			if (form != null && form.window_manager == null) {
 				CreateParams cp = form.GetCreateParams ();
@@ -5430,7 +5475,8 @@ namespace System.Windows.Forms {
 			RequestNCRecalc(handle);
 		}
 
-		internal override void SetCaretPos(IntPtr handle, int x, int y) {
+		internal override void SetCaretPos(IntPtr handle, int x, int y)
+		{
 			if (Caret.Hwnd == handle) {
 				Caret.Timer.Stop();
 				HideCaret();
@@ -5447,7 +5493,8 @@ namespace System.Windows.Forms {
 			}
 		}
 
-		internal override void SetClipRegion(IntPtr handle, Region region) {
+		internal override void SetClipRegion(IntPtr handle, Region region)
+		{
 			Hwnd	hwnd;
 
 			hwnd = Hwnd.ObjectFromHandle(handle);
@@ -5458,7 +5505,8 @@ namespace System.Windows.Forms {
 			hwnd.UserClip = region;
 		}
 
-		internal override void SetCursor(IntPtr handle, IntPtr cursor) {
+		internal override void SetCursor(IntPtr handle, IntPtr cursor)
+		{
 			Hwnd	hwnd;
 
 			if (OverrideCursorHandle == IntPtr.Zero) {
@@ -5487,7 +5535,7 @@ namespace System.Windows.Forms {
 			}
 		}
 
-		private void QueryPointer (IntPtr display, IntPtr w, out IntPtr root, out IntPtr child,
+		void QueryPointer (IntPtr display, IntPtr w, out IntPtr root, out IntPtr child,
 					   out int root_x, out int root_y, out int child_x, out int child_y,
 					   out int mask)
 		{
@@ -5522,7 +5570,8 @@ namespace System.Windows.Forms {
 			child = child_last;
 		}
 
-		internal override void SetCursorPos(IntPtr handle, int x, int y) {
+		internal override void SetCursorPos(IntPtr handle, int x, int y)
+		{
 			if (handle == IntPtr.Zero) {
 				lock (XlibLock) {
 					IntPtr root, child;
@@ -5588,7 +5637,8 @@ namespace System.Windows.Forms {
 			}
 		}
 
-		internal override void SetFocus(IntPtr handle) {
+		internal override void SetFocus(IntPtr handle)
+		{
 			Hwnd	hwnd;
 			IntPtr	prev_focus_window;
 
@@ -5607,14 +5657,15 @@ namespace System.Windows.Forms {
 
 			if (prev_focus_window != IntPtr.Zero) {
 				SendMessage(prev_focus_window, Msg.WM_KILLFOCUS, FocusWindow, IntPtr.Zero);
-			}
-			SendMessage(FocusWindow, Msg.WM_SETFOCUS, prev_focus_window, IntPtr.Zero);
+			}			
 			Keyboard.FocusIn (FocusWindow);
+			SendMessage(FocusWindow, Msg.WM_SETFOCUS, prev_focus_window, IntPtr.Zero);
 
 			//XSetInputFocus(DisplayHandle, Hwnd.ObjectFromHandle(handle).client_window, RevertTo.None, IntPtr.Zero);
 		}
 
-		internal override void SetIcon(IntPtr handle, Icon icon) {
+		internal override void SetIcon(IntPtr handle, Icon icon)
+		{
 			Hwnd	hwnd;
 
 			hwnd = Hwnd.ObjectFromHandle(handle);
@@ -5623,7 +5674,8 @@ namespace System.Windows.Forms {
 			}
 		}
 
-		internal override void SetMenu(IntPtr handle, Menu menu) {
+		internal override void SetMenu(IntPtr handle, Menu menu)
+		{
 			Hwnd	hwnd;
 
 			hwnd = Hwnd.ObjectFromHandle(handle);
@@ -5632,7 +5684,8 @@ namespace System.Windows.Forms {
 			RequestNCRecalc(handle);
 		}
 
-		internal override void SetModal(IntPtr handle, bool Modal) {
+		internal override void SetModal(IntPtr handle, bool Modal)
+		{
 			if (Modal) {
 				ModalWindows.Push(handle);
 			} else {
@@ -5649,23 +5702,23 @@ namespace System.Windows.Forms {
 			SetWMStyles (hwnd, ctrl.GetCreateParams ());
 		}
 
-		internal override IntPtr SetParent(IntPtr handle, IntPtr parent) {
+		internal override IntPtr SetParent(IntPtr handle, IntPtr parent)
+		{
 			Hwnd	hwnd;
 
 			hwnd = Hwnd.ObjectFromHandle(handle);
 			hwnd.parent = Hwnd.ObjectFromHandle(parent);
 
 			lock (XlibLock) {
-				#if DriverDebug || DriverDebugParent
-					Console.WriteLine("Parent for window {0} = {1}", XplatUI.Window(hwnd.Handle), XplatUI.Window(hwnd.parent != null ? hwnd.parent.Handle : IntPtr.Zero));
-				#endif
+				DriverDebug("Parent for window {0} = {1}", XplatUI.Window(hwnd.Handle), XplatUI.Window(hwnd.parent != null ? hwnd.parent.Handle : IntPtr.Zero));
 				XReparentWindow(DisplayHandle, hwnd.whole_window, hwnd.parent == null ? FosterParent : hwnd.parent.client_window, hwnd.x, hwnd.y);
 			}
 
 			return IntPtr.Zero;
 		}
 
-		internal override void SetTimer (Timer timer) {
+		internal override void SetTimer (Timer timer)
+		{
 			XEventQueue queue = (XEventQueue) MessageQueues [timer.thread];
 
 			if (queue == null) {
@@ -5679,7 +5732,8 @@ namespace System.Windows.Forms {
 			WakeupMain ();
 		}
 
-		internal override bool SetTopmost(IntPtr handle, bool enabled) {
+		internal override bool SetTopmost(IntPtr handle, bool enabled)
+		{
 
 			Hwnd hwnd = Hwnd.ObjectFromHandle(handle);
 
@@ -5704,7 +5758,8 @@ namespace System.Windows.Forms {
 			return true;
 		}
 
-		internal override bool SetOwner(IntPtr handle, IntPtr handle_owner) {
+		internal override bool SetOwner(IntPtr handle, IntPtr handle_owner)
+		{
 			Hwnd hwnd;
 			Hwnd hwnd_owner;
 
@@ -5765,7 +5820,8 @@ namespace System.Windows.Forms {
 			return true;
 		}
 
-		internal override void SetWindowMinMax(IntPtr handle, Rectangle maximized, Size min, Size max) {
+		internal override void SetWindowMinMax(IntPtr handle, Rectangle maximized, Size min, Size max)
+		{
 			Control ctrl = Control.FromHandle (handle);
 			SetWindowMinMax (handle, maximized, min, max, ctrl != null ? ctrl.GetCreateParams () : null);
 		}
@@ -5825,7 +5881,8 @@ namespace System.Windows.Forms {
 		}
 
 
-		internal override void SetWindowPos(IntPtr handle, int x, int y, int width, int height) {
+		internal override void SetWindowPos(IntPtr handle, int x, int y, int width, int height)
+		{
 			Hwnd		hwnd;
 
 			hwnd = Hwnd.ObjectFromHandle(handle);
@@ -5890,7 +5947,8 @@ namespace System.Windows.Forms {
 			hwnd.ClientRect = Rectangle.Empty;
 		}
 
-		internal override void SetWindowState(IntPtr handle, FormWindowState state) {
+		internal override void SetWindowState(IntPtr handle, FormWindowState state)
+		{
 			FormWindowState	current_state;
 			Hwnd		hwnd;
 
@@ -5939,7 +5997,8 @@ namespace System.Windows.Forms {
 			}
 		}
 
-		internal override void SetWindowStyle(IntPtr handle, CreateParams cp) {
+		internal override void SetWindowStyle(IntPtr handle, CreateParams cp)
+		{
 			Hwnd	hwnd;
 
 			hwnd = Hwnd.ObjectFromHandle(handle);
@@ -5952,7 +6011,8 @@ namespace System.Windows.Forms {
 			return 1.0;
 		}
 
-		internal override void SetWindowTransparency(IntPtr handle, double transparency, Color key) {
+		internal override void SetWindowTransparency(IntPtr handle, double transparency, Color key)
+		{
 			Hwnd	hwnd;
 			IntPtr	opacity;
 
@@ -5971,7 +6031,8 @@ namespace System.Windows.Forms {
 			XChangeProperty(DisplayHandle, w, _NET_WM_WINDOW_OPACITY, (IntPtr)Atom.XA_CARDINAL, 32, PropertyMode.Replace, ref opacity, 1);
 		}
 
-		internal override bool SetZOrder(IntPtr handle, IntPtr after_handle, bool top, bool bottom) {
+		internal override bool SetZOrder(IntPtr handle, IntPtr after_handle, bool top, bool bottom)
+		{
 			Hwnd	hwnd = Hwnd.ObjectFromHandle(handle);
 
 			if (!hwnd.mapped) {
@@ -6022,21 +6083,25 @@ namespace System.Windows.Forms {
 			return false;
 		}
 
-		internal override void ShowCursor(bool show) {
+		internal override void ShowCursor(bool show)
+		{
 			;	// FIXME - X11 doesn't 'hide' the cursor. we could create an empty cursor
 		}
 
-		internal override object StartLoop(Thread thread) {
+		internal override object StartLoop(Thread thread)
+		{
 			XEventQueue q = ThreadQueue(thread);
 			return q;
 		}
 
-		internal override TransparencySupport SupportsTransparency() {
+		internal override TransparencySupport SupportsTransparency()
+		{
 			// We need to check if the x compositing manager is running
 			return TransparencySupport.Set;
 		}
 
-		internal override bool SystrayAdd(IntPtr handle, string tip, Icon icon, out ToolTip tt) {
+		internal override bool SystrayAdd(IntPtr handle, string tip, Icon icon, out ToolTip tt)
+		{
 			GetSystrayManagerWindow();
 
 			if (SystrayMgrWindow != IntPtr.Zero) {
@@ -6044,9 +6109,7 @@ namespace System.Windows.Forms {
 				Hwnd		hwnd;
 
 				hwnd = Hwnd.ObjectFromHandle(handle);
-				#if DriverDebug
-					Console.WriteLine("Adding Systray Whole:{0:X}, Client:{1:X}", hwnd.whole_window.ToInt32(), hwnd.client_window.ToInt32());
-				#endif
+				DriverDebug("Adding Systray Whole:{0:X}, Client:{1:X}", hwnd.whole_window.ToInt32(), hwnd.client_window.ToInt32());
 
 				// Oh boy.
 				if (hwnd.client_window != hwnd.whole_window) {
@@ -6111,7 +6174,8 @@ namespace System.Windows.Forms {
 			return false;
 		}
 
-		internal override bool SystrayChange(IntPtr handle, string tip, Icon icon, ref ToolTip tt) {
+		internal override bool SystrayChange(IntPtr handle, string tip, Icon icon, ref ToolTip tt)
+		{
 			Control	control;
 
 			control = Control.FromHandle(handle);
@@ -6125,7 +6189,8 @@ namespace System.Windows.Forms {
 			}
 		}
 
-		internal override void SystrayRemove(IntPtr handle, ref ToolTip tt) {
+		internal override void SystrayRemove(IntPtr handle, ref ToolTip tt)
+		{
 
 			SetVisible (handle, false, false);
 
@@ -6134,21 +6199,18 @@ namespace System.Windows.Forms {
 				tt.Dispose();
 				tt = null;
 			}
-#if NET_2_0
 			// Close any balloon window *we* fired.
 			ThemeEngine.Current.HideBalloonWindow (handle);
-#endif
 		}
 
-#if NET_2_0
 		internal override void SystrayBalloon(IntPtr handle, int timeout, string title, string text, ToolTipIcon icon)
 		{
 			ThemeEngine.Current.ShowBalloonWindow (handle, timeout, title, text, icon);
 			SendMessage(handle, Msg.WM_USER, IntPtr.Zero, (IntPtr) Msg.NIN_BALLOONSHOW);	
 		}
-#endif
 
-		internal override bool Text(IntPtr handle, string text) {
+		internal override bool Text(IntPtr handle, string text)
+{
 			Hwnd	hwnd;
 
 			hwnd = Hwnd.ObjectFromHandle(handle);
@@ -6167,11 +6229,13 @@ namespace System.Windows.Forms {
 			return true;
 		}
 
-		internal override bool TranslateMessage(ref MSG msg) {
+		internal override bool TranslateMessage(ref MSG msg)
+		{
 			return Keyboard.TranslateMessage (ref msg);
 		}
 
-		internal override void UpdateWindow(IntPtr handle) {
+		internal override void UpdateWindow(IntPtr handle)
+		{
 			Hwnd	hwnd;
 
 			hwnd = Hwnd.ObjectFromHandle(handle);
@@ -6270,90 +6334,103 @@ namespace System.Windows.Forms {
 
 		[DllImport ("libX11", EntryPoint="XCreateWindow")]
 		internal extern static IntPtr _XCreateWindow(IntPtr display, IntPtr parent, int x, int y, int width, int height, int border_width, int depth, int xclass, IntPtr visual, UIntPtr valuemask, ref XSetWindowAttributes attributes);
-		internal static IntPtr XCreateWindow(IntPtr display, IntPtr parent, int x, int y, int width, int height, int border_width, int depth, int xclass, IntPtr visual, UIntPtr valuemask, ref XSetWindowAttributes attributes) {
+		internal static IntPtr XCreateWindow(IntPtr display, IntPtr parent, int x, int y, int width, int height, int border_width, int depth, int xclass, IntPtr visual, UIntPtr valuemask, ref XSetWindowAttributes attributes)
+		{
 			DebugHelper.TraceWriteLine ("XCreateWindow");
 			return _XCreateWindow(display, parent, x, y, width, height, 
 			               border_width, depth, xclass, visual, valuemask, ref attributes);
 		}
 		[DllImport ("libX11", EntryPoint="XCreateSimpleWindow")]
 		internal extern static IntPtr _XCreateSimpleWindow(IntPtr display, IntPtr parent, int x, int y, int width, int height, int border_width, UIntPtr border, UIntPtr background);
-		internal static IntPtr XCreateSimpleWindow(IntPtr display, IntPtr parent, int x, int y, int width, int height, int border_width, UIntPtr border, UIntPtr background) {
+		internal static IntPtr XCreateSimpleWindow(IntPtr display, IntPtr parent, int x, int y, int width, int height, int border_width, UIntPtr border, UIntPtr background)
+		{
 			DebugHelper.TraceWriteLine ("XCreateSimpleWindow");
 			return _XCreateSimpleWindow(display, parent, x, y, width, height, border_width, border, background);
 		}
 		[DllImport ("libX11", EntryPoint="XMapWindow")]
 		internal extern static int _XMapWindow(IntPtr display, IntPtr window);
-		internal static int XMapWindow(IntPtr display, IntPtr window) {
+		internal static int XMapWindow(IntPtr display, IntPtr window)
+		{
 			DebugHelper.TraceWriteLine ("XMapWindow");
 			return _XMapWindow(display, window);
 		}
 		[DllImport ("libX11", EntryPoint="XUnmapWindow")]
 		internal extern static int _XUnmapWindow(IntPtr display, IntPtr window);
-		internal static int XUnmapWindow(IntPtr display, IntPtr window) {
+		internal static int XUnmapWindow(IntPtr display, IntPtr window)
+		{
 			DebugHelper.TraceWriteLine ("XUnmapWindow");
 			return _XUnmapWindow(display, window);
 		}
 		[DllImport ("libX11", EntryPoint="XMapSubwindows")]
 		internal extern static int _XMapSubindows(IntPtr display, IntPtr window);
-		internal static int XMapSubindows(IntPtr display, IntPtr window) {
+		internal static int XMapSubindows(IntPtr display, IntPtr window)
+		{
 			DebugHelper.TraceWriteLine ("XMapSubindows");
 			return _XMapSubindows(display, window);
 		}
 		[DllImport ("libX11", EntryPoint="XUnmapSubwindows")]
 		internal extern static int _XUnmapSubwindows(IntPtr display, IntPtr window);
-		internal static int XUnmapSubwindows(IntPtr display, IntPtr window) {
+		internal static int XUnmapSubwindows(IntPtr display, IntPtr window)
+		{
 			DebugHelper.TraceWriteLine ("XUnmapSubwindows");
 			return _XUnmapSubwindows(display, window);
 		}
 		[DllImport ("libX11", EntryPoint="XRootWindow")]
 		internal extern static IntPtr _XRootWindow(IntPtr display, int screen_number);
-		internal static IntPtr XRootWindow(IntPtr display, int screen_number) {
+		internal static IntPtr XRootWindow(IntPtr display, int screen_number)
+		{
 			DebugHelper.TraceWriteLine ("XRootWindow");
 			return _XRootWindow(display, screen_number);
 		}
 		[DllImport ("libX11", EntryPoint="XNextEvent")]
 		internal extern static IntPtr _XNextEvent(IntPtr display, ref XEvent xevent);
-		internal static IntPtr XNextEvent(IntPtr display, ref XEvent xevent) {
+		internal static IntPtr XNextEvent(IntPtr display, ref XEvent xevent)
+		{
 			DebugHelper.TraceWriteLine ("XNextEvent");
 			return _XNextEvent(display, ref xevent);
 		}
 		[DllImport ("libX11", EntryPoint="XConnectionNumber")]
 		internal extern static int _XConnectionNumber (IntPtr display);
-		internal static int XConnectionNumber (IntPtr display) {
+		internal static int XConnectionNumber (IntPtr display)
+		{
 			DebugHelper.TraceWriteLine ("XConnectionNumber");
 			return _XConnectionNumber (display);
 		}
 		[DllImport ("libX11", EntryPoint="XPending")]
 		internal extern static int _XPending (IntPtr display);
-		internal static int XPending (IntPtr display) {
+		internal static int XPending (IntPtr display)
+		{
 			DebugHelper.TraceWriteLine ("XPending");
 			DebugHelper.DumpCallers (3);
 			return _XPending (display);
 		}
 		[DllImport ("libX11", EntryPoint="XSelectInput")]
 		internal extern static IntPtr _XSelectInput(IntPtr display, IntPtr window, IntPtr mask);
-		internal static IntPtr XSelectInput(IntPtr display, IntPtr window, IntPtr mask) {
+		internal static IntPtr XSelectInput(IntPtr display, IntPtr window, IntPtr mask)
+		{
 			DebugHelper.TraceWriteLine ("XSelectInput");
 			return _XSelectInput(display, window, mask);
 		}
 
 		[DllImport ("libX11", EntryPoint="XDestroyWindow")]
 		internal extern static int _XDestroyWindow(IntPtr display, IntPtr window);
-		internal static int XDestroyWindow(IntPtr display, IntPtr window) {
+		internal static int XDestroyWindow(IntPtr display, IntPtr window)
+		{
 			DebugHelper.TraceWriteLine ("XDestroyWindow 0x{0:x}", window.ToInt32());
 			return _XDestroyWindow(display, window);
 		}
 
 		[DllImport ("libX11", EntryPoint="XReparentWindow")]
 		internal extern static int _XReparentWindow(IntPtr display, IntPtr window, IntPtr parent, int x, int y);
-		internal static int XReparentWindow(IntPtr display, IntPtr window, IntPtr parent, int x, int y) {
+		internal static int XReparentWindow(IntPtr display, IntPtr window, IntPtr parent, int x, int y)
+		{
 			DebugHelper.TraceWriteLine ("XReparentWindow");
 			return _XReparentWindow(display, window, parent, x, y);
 		}
 		
 		[DllImport ("libX11", EntryPoint="XMoveResizeWindow")]
-		private extern static int _XMoveResizeWindow(IntPtr display, IntPtr window, int x, int y, int width, int height);
-		private static int XMoveResizeWindow(IntPtr display, IntPtr window, int x, int y, int width, int height) {
+		extern static int _XMoveResizeWindow(IntPtr display, IntPtr window, int x, int y, int width, int height);
+		static int XMoveResizeWindow(IntPtr display, IntPtr window, int x, int y, int width, int height) {
 			DebugHelper.TraceWriteLine ("XMoveResizeWindow");
 			return _XMoveResizeWindow(display, window, x, y, width, height);
 		}
@@ -6367,182 +6444,208 @@ namespace System.Windows.Forms {
 
 		[DllImport ("libX11", EntryPoint="XResizeWindow")]
 		internal extern static int _XResizeWindow(IntPtr display, IntPtr window, int width, int height);
-		internal static int XResizeWindow(IntPtr display, IntPtr window, int width, int height) {
+		internal static int XResizeWindow(IntPtr display, IntPtr window, int width, int height)
+		{
 			DebugHelper.TraceWriteLine ("XResizeWindow");
 			return _XResizeWindow(display, window, width, height);
 		}
 
 		[DllImport ("libX11", EntryPoint="XGetWindowAttributes")]
 		internal extern static int _XGetWindowAttributes(IntPtr display, IntPtr window, ref XWindowAttributes attributes);
-		internal static int XGetWindowAttributes(IntPtr display, IntPtr window, ref XWindowAttributes attributes) {
+		internal static int XGetWindowAttributes(IntPtr display, IntPtr window, ref XWindowAttributes attributes)
+		{
 			DebugHelper.TraceWriteLine ("XGetWindowAttributes");
 			return _XGetWindowAttributes(display, window, ref attributes);
 		}
 
 		[DllImport ("libX11", EntryPoint="XFlush")]
 		internal extern static int _XFlush(IntPtr display);
-		internal static int XFlush(IntPtr display) {
+		internal static int XFlush(IntPtr display)
+		{
 			DebugHelper.TraceWriteLine ("XFlush");
 			return _XFlush(display);
 		}
 
 		[DllImport ("libX11", EntryPoint="XSetWMName")]
 		internal extern static int _XSetWMName(IntPtr display, IntPtr window, ref XTextProperty text_prop);
-		internal static int XSetWMName(IntPtr display, IntPtr window, ref XTextProperty text_prop) {
+		internal static int XSetWMName(IntPtr display, IntPtr window, ref XTextProperty text_prop)
+		{
 			DebugHelper.TraceWriteLine ("XSetWMName");
 			return _XSetWMName(display, window, ref text_prop);
 		}
 
 		[DllImport ("libX11", EntryPoint="XStoreName")]
 		internal extern static int _XStoreName(IntPtr display, IntPtr window, string window_name);
-		internal static int XStoreName(IntPtr display, IntPtr window, string window_name) {
+		internal static int XStoreName(IntPtr display, IntPtr window, string window_name)
+		{
 			DebugHelper.TraceWriteLine ("XStoreName");
 			return _XStoreName(display, window, window_name);
 		}
 
 		[DllImport ("libX11", EntryPoint="XFetchName")]
 		internal extern static int _XFetchName(IntPtr display, IntPtr window, ref IntPtr window_name);
-		internal static int XFetchName(IntPtr display, IntPtr window, ref IntPtr window_name) {
+		internal static int XFetchName(IntPtr display, IntPtr window, ref IntPtr window_name)
+		{
 			DebugHelper.TraceWriteLine ("XFetchName");
 			return _XFetchName(display, window, ref window_name);
 		}
 
 		[DllImport ("libX11", EntryPoint="XSendEvent")]
 		internal extern static int _XSendEvent(IntPtr display, IntPtr window, bool propagate, IntPtr event_mask, ref XEvent send_event);
-		internal static int XSendEvent(IntPtr display, IntPtr window, bool propagate, IntPtr event_mask, ref XEvent send_event) {
+		internal static int XSendEvent(IntPtr display, IntPtr window, bool propagate, IntPtr event_mask, ref XEvent send_event)
+		{
 			DebugHelper.TraceWriteLine ("XSendEvent");
 			return _XSendEvent(display, window, propagate, event_mask, ref send_event);
 		}
 
 		[DllImport ("libX11", EntryPoint="XQueryTree")]
 		internal extern static int _XQueryTree(IntPtr display, IntPtr window, out IntPtr root_return, out IntPtr parent_return, out IntPtr children_return, out int nchildren_return);
-		internal static int XQueryTree(IntPtr display, IntPtr window, out IntPtr root_return, out IntPtr parent_return, out IntPtr children_return, out int nchildren_return) {
+		internal static int XQueryTree(IntPtr display, IntPtr window, out IntPtr root_return, out IntPtr parent_return, out IntPtr children_return, out int nchildren_return)
+		{
 			DebugHelper.TraceWriteLine ("XQueryTree");
 			return _XQueryTree(display, window, out root_return, out parent_return, out children_return, out nchildren_return);
 		}
 
 		[DllImport ("libX11", EntryPoint="XFree")]
 		internal extern static int _XFree(IntPtr data);
-		internal static int XFree(IntPtr data) {
+		internal static int XFree(IntPtr data)
+		{
 			DebugHelper.TraceWriteLine ("XFree");
 			return _XFree(data);
 		}
 
 		[DllImport ("libX11", EntryPoint="XRaiseWindow")]
 		internal extern static int _XRaiseWindow(IntPtr display, IntPtr window);
-		internal static int XRaiseWindow(IntPtr display, IntPtr window) {
+		internal static int XRaiseWindow(IntPtr display, IntPtr window)
+		{
 			DebugHelper.TraceWriteLine ("XRaiseWindow");
 			return _XRaiseWindow(display, window);
 		}
 
 		[DllImport ("libX11", EntryPoint="XLowerWindow")]
 		internal extern static uint _XLowerWindow(IntPtr display, IntPtr window);
-		internal static uint XLowerWindow(IntPtr display, IntPtr window) {
+		internal static uint XLowerWindow(IntPtr display, IntPtr window)
+		{
 			DebugHelper.TraceWriteLine ("XLowerWindow");
 			return _XLowerWindow(display, window);
 		}
 
 		[DllImport ("libX11", EntryPoint="XConfigureWindow")]
 		internal extern static uint _XConfigureWindow(IntPtr display, IntPtr window, ChangeWindowFlags value_mask, ref XWindowChanges values);
-		internal static uint XConfigureWindow(IntPtr display, IntPtr window, ChangeWindowFlags value_mask, ref XWindowChanges values) {
+		internal static uint XConfigureWindow(IntPtr display, IntPtr window, ChangeWindowFlags value_mask, ref XWindowChanges values)
+		{
 			DebugHelper.TraceWriteLine ("XConfigureWindow");
 			return _XConfigureWindow(display, window, value_mask, ref values);
 		}
 
 		[DllImport ("libX11", EntryPoint="XInternAtom")]
 		internal extern static IntPtr _XInternAtom(IntPtr display, string atom_name, bool only_if_exists);
-		internal static IntPtr XInternAtom(IntPtr display, string atom_name, bool only_if_exists) {
+		internal static IntPtr XInternAtom(IntPtr display, string atom_name, bool only_if_exists)
+		{
 			DebugHelper.TraceWriteLine ("XInternAtom");
 			return _XInternAtom(display, atom_name, only_if_exists);
 		}
 
 		[DllImport ("libX11", EntryPoint="XInternAtoms")]
 		internal extern static int _XInternAtoms(IntPtr display, string[] atom_names, int atom_count, bool only_if_exists, IntPtr[] atoms);
-		internal static int XInternAtoms(IntPtr display, string[] atom_names, int atom_count, bool only_if_exists, IntPtr[] atoms) {
+		internal static int XInternAtoms(IntPtr display, string[] atom_names, int atom_count, bool only_if_exists, IntPtr[] atoms)
+		{
 			DebugHelper.TraceWriteLine ("XInternAtoms");
 			return _XInternAtoms(display, atom_names, atom_count, only_if_exists, atoms);
 		}
 
 		[DllImport ("libX11", EntryPoint="XSetWMProtocols")]
 		internal extern static int _XSetWMProtocols(IntPtr display, IntPtr window, IntPtr[] protocols, int count);
-		internal static int XSetWMProtocols(IntPtr display, IntPtr window, IntPtr[] protocols, int count) {
+		internal static int XSetWMProtocols(IntPtr display, IntPtr window, IntPtr[] protocols, int count)
+		{
 			DebugHelper.TraceWriteLine ("XSetWMProtocols");
 			return _XSetWMProtocols(display, window, protocols, count);
 		}
 
 		[DllImport ("libX11", EntryPoint="XGrabPointer")]
 		internal extern static int _XGrabPointer(IntPtr display, IntPtr window, bool owner_events, EventMask event_mask, GrabMode pointer_mode, GrabMode keyboard_mode, IntPtr confine_to, IntPtr cursor, IntPtr timestamp);
-		internal static int XGrabPointer(IntPtr display, IntPtr window, bool owner_events, EventMask event_mask, GrabMode pointer_mode, GrabMode keyboard_mode, IntPtr confine_to, IntPtr cursor, IntPtr timestamp) {
+		internal static int XGrabPointer(IntPtr display, IntPtr window, bool owner_events, EventMask event_mask, GrabMode pointer_mode, GrabMode keyboard_mode, IntPtr confine_to, IntPtr cursor, IntPtr timestamp)
+		{
 			DebugHelper.TraceWriteLine ("XGrabPointer");
 			return _XGrabPointer(display, window, owner_events, event_mask, pointer_mode, keyboard_mode, confine_to, cursor, timestamp);
 		}
 
 		[DllImport ("libX11", EntryPoint="XUngrabPointer")]
 		internal extern static int _XUngrabPointer(IntPtr display, IntPtr timestamp);
-		internal static int XUngrabPointer(IntPtr display, IntPtr timestamp) {
+		internal static int XUngrabPointer(IntPtr display, IntPtr timestamp)
+		{
 			DebugHelper.TraceWriteLine ("XUngrabPointer");
 			return _XUngrabPointer(display, timestamp);
 		}
 
 		[DllImport ("libX11", EntryPoint="XQueryPointer")]
 		internal extern static bool _XQueryPointer(IntPtr display, IntPtr window, out IntPtr root, out IntPtr child, out int root_x, out int root_y, out int win_x, out int win_y, out int keys_buttons);
-		internal static bool XQueryPointer(IntPtr display, IntPtr window, out IntPtr root, out IntPtr child, out int root_x, out int root_y, out int win_x, out int win_y, out int keys_buttons) {
+		internal static bool XQueryPointer(IntPtr display, IntPtr window, out IntPtr root, out IntPtr child, out int root_x, out int root_y, out int win_x, out int win_y, out int keys_buttons)
+		{
 			DebugHelper.TraceWriteLine ("XQueryPointer");
 			return _XQueryPointer(display, window, out root, out child, out root_x, out root_y, out win_x, out win_y, out keys_buttons);
 		}
 
 		[DllImport ("libX11", EntryPoint="XTranslateCoordinates")]
 		internal extern static bool _XTranslateCoordinates (IntPtr display, IntPtr src_w, IntPtr dest_w, int src_x, int src_y, out int intdest_x_return, out int dest_y_return, out IntPtr child_return);
-		internal static bool XTranslateCoordinates (IntPtr display, IntPtr src_w, IntPtr dest_w, int src_x, int src_y, out int intdest_x_return,	 out int dest_y_return, out IntPtr child_return) {
+		internal static bool XTranslateCoordinates (IntPtr display, IntPtr src_w, IntPtr dest_w, int src_x, int src_y, out int intdest_x_return,	 out int dest_y_return, out IntPtr child_return)
+		{
 			DebugHelper.TraceWriteLine ("XTranslateCoordinates");
 			return _XTranslateCoordinates (display, src_w, dest_w, src_x, src_y, out intdest_x_return, out dest_y_return, out child_return);
 		}
 
 		[DllImport ("libX11", EntryPoint="XGetGeometry")]
 		internal extern static bool _XGetGeometry(IntPtr display, IntPtr window, out IntPtr root, out int x, out int y, out int width, out int height, out int border_width, out int depth);
-		internal static bool XGetGeometry(IntPtr display, IntPtr window, out IntPtr root, out int x, out int y, out int width, out int height, out int border_width, out int depth) {
+		internal static bool XGetGeometry(IntPtr display, IntPtr window, out IntPtr root, out int x, out int y, out int width, out int height, out int border_width, out int depth)
+		{
 			DebugHelper.TraceWriteLine ("XGetGeometry");
 			return _XGetGeometry(display, window, out root, out x, out y, out width, out height, out border_width, out depth);
 		}
 
 		[DllImport ("libX11", EntryPoint="XGetGeometry")]
 		internal extern static bool _XGetGeometry(IntPtr display, IntPtr window, IntPtr root, out int x, out int y, out int width, out int height, IntPtr border_width, IntPtr depth);
-		internal static bool XGetGeometry(IntPtr display, IntPtr window, IntPtr root, out int x, out int y, out int width, out int height, IntPtr border_width, IntPtr depth) {
+		internal static bool XGetGeometry(IntPtr display, IntPtr window, IntPtr root, out int x, out int y, out int width, out int height, IntPtr border_width, IntPtr depth)
+		{
 			DebugHelper.TraceWriteLine ("XGetGeometry");
 			return _XGetGeometry(display, window, root, out x, out y, out width, out height, border_width, depth);
 		}
 
 		[DllImport ("libX11", EntryPoint="XGetGeometry")]
 		internal extern static bool _XGetGeometry(IntPtr display, IntPtr window, IntPtr root, out int x, out int y, IntPtr width, IntPtr height, IntPtr border_width, IntPtr depth);
-		internal static bool XGetGeometry(IntPtr display, IntPtr window, IntPtr root, out int x, out int y, IntPtr width, IntPtr height, IntPtr border_width, IntPtr depth) {
+		internal static bool XGetGeometry(IntPtr display, IntPtr window, IntPtr root, out int x, out int y, IntPtr width, IntPtr height, IntPtr border_width, IntPtr depth)
+		{
 			DebugHelper.TraceWriteLine ("XGetGeometry");
 			return _XGetGeometry(display, window, root, out x, out y, width, height, border_width, depth);
 		}
 
 		[DllImport ("libX11", EntryPoint="XGetGeometry")]
 		internal extern static bool _XGetGeometry(IntPtr display, IntPtr window, IntPtr root, IntPtr x, IntPtr y, out int width, out int height, IntPtr border_width, IntPtr depth);
-		internal static bool XGetGeometry(IntPtr display, IntPtr window, IntPtr root, IntPtr x, IntPtr y, out int width, out int height, IntPtr border_width, IntPtr depth) {
+		internal static bool XGetGeometry(IntPtr display, IntPtr window, IntPtr root, IntPtr x, IntPtr y, out int width, out int height, IntPtr border_width, IntPtr depth)
+		{
 			DebugHelper.TraceWriteLine ("XGetGeometry");
 			return _XGetGeometry(display, window, root, x, y, out width, out height, border_width, depth);
 		}
 
 		[DllImport ("libX11", EntryPoint="XWarpPointer")]
 		internal extern static uint _XWarpPointer(IntPtr display, IntPtr src_w, IntPtr dest_w, int src_x, int src_y, uint src_width, uint src_height, int dest_x, int dest_y);
-		internal static uint XWarpPointer(IntPtr display, IntPtr src_w, IntPtr dest_w, int src_x, int src_y, uint src_width, uint src_height, int dest_x, int dest_y) {
+		internal static uint XWarpPointer(IntPtr display, IntPtr src_w, IntPtr dest_w, int src_x, int src_y, uint src_width, uint src_height, int dest_x, int dest_y)
+		{
 			DebugHelper.TraceWriteLine ("XWarpPointer");
 			return _XWarpPointer(display, src_w, dest_w, src_x, src_y, src_width, src_height, dest_x, dest_y);
 		}
 
 		[DllImport ("libX11", EntryPoint="XClearWindow")]
 		internal extern static int _XClearWindow(IntPtr display, IntPtr window);
-		internal static int XClearWindow(IntPtr display, IntPtr window) {
+		internal static int XClearWindow(IntPtr display, IntPtr window)
+		{
 			DebugHelper.TraceWriteLine ("XClearWindow");
 			return _XClearWindow(display, window);
 		}
 
 		[DllImport ("libX11", EntryPoint="XClearArea")]
 		internal extern static int _XClearArea(IntPtr display, IntPtr window, int x, int y, int width, int height, bool exposures);
-		internal static int XClearArea(IntPtr display, IntPtr window, int x, int y, int width, int height, bool exposures) {
+		internal static int XClearArea(IntPtr display, IntPtr window, int x, int y, int width, int height, bool exposures)
+		{
 			DebugHelper.TraceWriteLine ("XClearArea");
 			return _XClearArea(display, window, x, y, width, height, exposures);
 		}
@@ -6550,126 +6653,144 @@ namespace System.Windows.Forms {
 		// Colormaps
 		[DllImport ("libX11", EntryPoint="XDefaultScreenOfDisplay")]
 		internal extern static IntPtr _XDefaultScreenOfDisplay(IntPtr display);
-		internal static IntPtr XDefaultScreenOfDisplay(IntPtr display) {
+		internal static IntPtr XDefaultScreenOfDisplay(IntPtr display)
+		{
 			DebugHelper.TraceWriteLine ("XDefaultScreenOfDisplay");
 			return _XDefaultScreenOfDisplay(display);
 		}
 
 		[DllImport ("libX11", EntryPoint="XScreenNumberOfScreen")]
 		internal extern static int _XScreenNumberOfScreen(IntPtr display, IntPtr Screen);
-		internal static int XDefaultScreenOfDisplay(IntPtr display, IntPtr Screen) {
+		internal static int XDefaultScreenOfDisplay(IntPtr display, IntPtr Screen)
+		{
 			DebugHelper.TraceWriteLine ("XDefaultScreenOfDisplay");
 			return _XScreenNumberOfScreen(display, Screen);
 		}
 
 		[DllImport ("libX11", EntryPoint="XDefaultVisual")]
 		internal extern static IntPtr _XDefaultVisual(IntPtr display, int screen_number);
-		internal static IntPtr XDefaultScreenOfDisplay(IntPtr display, int screen_number) {
+		internal static IntPtr XDefaultScreenOfDisplay(IntPtr display, int screen_number)
+		{
 			DebugHelper.TraceWriteLine ("XDefaultScreenOfDisplay");
 			return _XDefaultVisual(display, screen_number);
 		}
 
 		[DllImport ("libX11", EntryPoint="XDefaultDepth")]
 		internal extern static uint _XDefaultDepth(IntPtr display, int screen_number);
-		internal static uint XDefaultDepth(IntPtr display, int screen_number) {
+		internal static uint XDefaultDepth(IntPtr display, int screen_number)
+		{
 			DebugHelper.TraceWriteLine ("XDefaultDepth");
 			return _XDefaultDepth(display, screen_number);
 		}
 
 		[DllImport ("libX11", EntryPoint="XDefaultScreen")]
 		internal extern static int _XDefaultScreen(IntPtr display);
-		internal static int XDefaultScreen(IntPtr display) {
+		internal static int XDefaultScreen(IntPtr display)
+		{
 			DebugHelper.TraceWriteLine ("XDefaultScreen");
 			return _XDefaultScreen(display);
 		}
 
 		[DllImport ("libX11", EntryPoint="XDefaultColormap")]
 		internal extern static IntPtr _XDefaultColormap(IntPtr display, int screen_number);
-		internal static IntPtr XDefaultColormap(IntPtr display, int screen_number) {
+		internal static IntPtr XDefaultColormap(IntPtr display, int screen_number)
+		{
 			DebugHelper.TraceWriteLine ("XDefaultColormap");
 			return _XDefaultColormap(display, screen_number);
 		}
 
 		[DllImport ("libX11", EntryPoint="XLookupColor")]
 		internal extern static int _XLookupColor(IntPtr display, IntPtr Colormap, string Coloranem, ref XColor exact_def_color, ref XColor screen_def_color);
-		internal static int XLookupColor(IntPtr display, IntPtr Colormap, string Coloranem, ref XColor exact_def_color, ref XColor screen_def_color) {
+		internal static int XLookupColor(IntPtr display, IntPtr Colormap, string Coloranem, ref XColor exact_def_color, ref XColor screen_def_color)
+		{
 			DebugHelper.TraceWriteLine ("XLookupColor");
 			return _XLookupColor(display, Colormap, Coloranem, ref exact_def_color, ref screen_def_color);
 		}
 
 		[DllImport ("libX11", EntryPoint="XAllocColor")]
 		internal extern static int _XAllocColor(IntPtr display, IntPtr Colormap, ref XColor colorcell_def);
-		internal static int XAllocColor(IntPtr display, IntPtr Colormap, ref XColor colorcell_def) {
+		internal static int XAllocColor(IntPtr display, IntPtr Colormap, ref XColor colorcell_def)
+		{
 			DebugHelper.TraceWriteLine ("XAllocColor");
 			return _XAllocColor(display, Colormap, ref colorcell_def);
 		}
 
 		[DllImport ("libX11", EntryPoint="XSetTransientForHint")]
 		internal extern static int _XSetTransientForHint(IntPtr display, IntPtr window, IntPtr prop_window);
-		internal static int XSetTransientForHint(IntPtr display, IntPtr window, IntPtr prop_window) {
+		internal static int XSetTransientForHint(IntPtr display, IntPtr window, IntPtr prop_window)
+		{
 			DebugHelper.TraceWriteLine ("XSetTransientForHint");
 			return _XSetTransientForHint(display, window, prop_window);
 		}
 
 		[DllImport ("libX11", EntryPoint="XChangeProperty")]
 		internal extern static int _XChangeProperty(IntPtr display, IntPtr window, IntPtr property, IntPtr type, int format, PropertyMode mode, ref MotifWmHints data, int nelements);
-		internal static int XChangeProperty(IntPtr display, IntPtr window, IntPtr property, IntPtr type, int format, PropertyMode mode, ref MotifWmHints data, int nelements) {
+		internal static int XChangeProperty(IntPtr display, IntPtr window, IntPtr property, IntPtr type, int format, PropertyMode mode, ref MotifWmHints data, int nelements)
+		{
 			DebugHelper.TraceWriteLine ("XChangeProperty");
 			return _XChangeProperty(display, window, property, type, format, mode, ref data, nelements);
 		}
 
 		[DllImport ("libX11", EntryPoint="XChangeProperty")]
 		internal extern static int _XChangeProperty(IntPtr display, IntPtr window, IntPtr property, IntPtr type, int format, PropertyMode mode, ref uint value, int nelements);
-		internal static int XChangeProperty(IntPtr display, IntPtr window, IntPtr property, IntPtr type, int format, PropertyMode mode, ref uint value, int nelements) {
+		internal static int XChangeProperty(IntPtr display, IntPtr window, IntPtr property, IntPtr type, int format, PropertyMode mode, ref uint value, int nelements)
+		{
 			DebugHelper.TraceWriteLine ("XChangeProperty");
 			return _XChangeProperty(display, window, property, type, format, mode, ref value, nelements);
 		}
 
 		[DllImport ("libX11", EntryPoint="XChangeProperty")]
 		internal extern static int _XChangeProperty(IntPtr display, IntPtr window, IntPtr property, IntPtr type, int format, PropertyMode mode, ref IntPtr value, int nelements);
-		internal static int XChangeProperty(IntPtr display, IntPtr window, IntPtr property, IntPtr type, int format, PropertyMode mode, ref IntPtr value, int nelements) {
+		internal static int XChangeProperty(IntPtr display, IntPtr window, IntPtr property, IntPtr type, int format, PropertyMode mode, ref IntPtr value, int nelements)
+		{
 			DebugHelper.TraceWriteLine ("XChangeProperty");
 			return _XChangeProperty(display, window, property, type, format, mode, ref value, nelements);
 		}
 
 		[DllImport ("libX11", EntryPoint="XChangeProperty")]
 		internal extern static int _XChangeProperty(IntPtr display, IntPtr window, IntPtr property, IntPtr type, int format, PropertyMode mode, uint[] data, int nelements);
-		internal static int XChangeProperty(IntPtr display, IntPtr window, IntPtr property, IntPtr type, int format, PropertyMode mode, uint[] data, int nelements) {
+		internal static int XChangeProperty(IntPtr display, IntPtr window, IntPtr property, IntPtr type, int format, PropertyMode mode, uint[] data, int nelements)
+		{
 			DebugHelper.TraceWriteLine ("XChangeProperty");
 			return _XChangeProperty(display, window, property, type, format, mode, data, nelements);
 		}
 
 		[DllImport ("libX11", EntryPoint="XChangeProperty")]
 		internal extern static int _XChangeProperty(IntPtr display, IntPtr window, IntPtr property, IntPtr type, int format, PropertyMode mode, int[] data, int nelements);
-		internal static int XChangeProperty(IntPtr display, IntPtr window, IntPtr property, IntPtr type, int format, PropertyMode mode, int[] data, int nelements) {
+		internal static int XChangeProperty(IntPtr display, IntPtr window, IntPtr property, IntPtr type, int format, PropertyMode mode, int[] data, int nelements)
+		{
 			DebugHelper.TraceWriteLine ("XChangeProperty");
 			return _XChangeProperty(display, window, property, type, format, mode, data, nelements);
 		}
 
 		[DllImport ("libX11", EntryPoint="XChangeProperty")]
 		internal extern static int _XChangeProperty(IntPtr display, IntPtr window, IntPtr property, IntPtr type, int format, PropertyMode mode, IntPtr[] data, int nelements);
-		internal static int XChangeProperty(IntPtr display, IntPtr window, IntPtr property, IntPtr type, int format, PropertyMode mode, IntPtr[] data, int nelements) {
+		internal static int XChangeProperty(IntPtr display, IntPtr window, IntPtr property, IntPtr type, int format, PropertyMode mode, IntPtr[] data, int nelements)
+		{
 			DebugHelper.TraceWriteLine ("XChangeProperty");
 			return _XChangeProperty(display, window, property, type, format, mode, data, nelements);
 		}
 
 		[DllImport ("libX11", EntryPoint="XChangeProperty")]
 		internal extern static int _XChangeProperty(IntPtr display, IntPtr window, IntPtr property, IntPtr type, int format, PropertyMode mode, IntPtr atoms, int nelements);
-		internal static int XChangeProperty(IntPtr display, IntPtr window, IntPtr property, IntPtr type, int format, PropertyMode mode, IntPtr atoms, int nelements) {
+		internal static int XChangeProperty(IntPtr display, IntPtr window, IntPtr property, IntPtr type, int format, PropertyMode mode, IntPtr atoms, int nelements)
+		{
 			DebugHelper.TraceWriteLine ("XChangeProperty");
 			return _XChangeProperty(display, window, property, type, format, mode, atoms, nelements);
 		}
 
 		[DllImport ("libX11", EntryPoint="XChangeProperty", CharSet=CharSet.Ansi)]
 		internal extern static int _XChangeProperty(IntPtr display, IntPtr window, IntPtr property, IntPtr type, int format, PropertyMode mode, string text, int text_length);
-		internal static int XChangeProperty(IntPtr display, IntPtr window, IntPtr property, IntPtr type, int format, PropertyMode mode, string text, int text_length) {
+		internal static int XChangeProperty(IntPtr display, IntPtr window, IntPtr property, IntPtr type, int format, PropertyMode mode, string text, int text_length)
+		{
 			DebugHelper.TraceWriteLine ("XChangeProperty");
 			return _XChangeProperty(display, window, property, type, format, mode, text, text_length);
 		}
 
 		[DllImport ("libX11", EntryPoint="XDeleteProperty")]
 		internal extern static int _XDeleteProperty(IntPtr display, IntPtr window, IntPtr property);
-		internal static int XDeleteProperty(IntPtr display, IntPtr window, IntPtr property) {
+		internal static int XDeleteProperty(IntPtr display, IntPtr window, IntPtr property)
+		{
 			DebugHelper.TraceWriteLine ("XDeleteProperty");
 			return _XDeleteProperty(display, window, property);
 		}
@@ -6677,322 +6798,368 @@ namespace System.Windows.Forms {
 		// Drawing
 		[DllImport ("libX11", EntryPoint="XCreateGC")]
 		internal extern static IntPtr _XCreateGC(IntPtr display, IntPtr window, IntPtr valuemask, ref XGCValues values);
-		internal static IntPtr XCreateGC(IntPtr display, IntPtr window, IntPtr valuemask, ref XGCValues values) {
+		internal static IntPtr XCreateGC(IntPtr display, IntPtr window, IntPtr valuemask, ref XGCValues values)
+		{
 			DebugHelper.TraceWriteLine ("XCreateGC");
 			return _XCreateGC(display, window, valuemask, ref values);
 		}
 
 		[DllImport ("libX11", EntryPoint="XFreeGC")]
 		internal extern static int _XFreeGC(IntPtr display, IntPtr gc);
-		internal static int XFreeGC(IntPtr display, IntPtr gc) {
+		internal static int XFreeGC(IntPtr display, IntPtr gc)
+		{
 			DebugHelper.TraceWriteLine ("XFreeGC");
 			return _XFreeGC(display, gc);
 		}
 
 		[DllImport ("libX11", EntryPoint="XSetFunction")]
 		internal extern static int _XSetFunction(IntPtr display, IntPtr gc, GXFunction function);
-		internal static int XSetFunction(IntPtr display, IntPtr gc, GXFunction function) {
+		internal static int XSetFunction(IntPtr display, IntPtr gc, GXFunction function)
+		{
 			DebugHelper.TraceWriteLine ("XSetFunction");
 			return _XSetFunction(display, gc, function);
 		}
 
 		[DllImport ("libX11", EntryPoint="XSetLineAttributes")]
 		internal extern static int _XSetLineAttributes(IntPtr display, IntPtr gc, int line_width, GCLineStyle line_style, GCCapStyle cap_style, GCJoinStyle join_style);
-		internal static int XSetLineAttributes(IntPtr display, IntPtr gc, int line_width, GCLineStyle line_style, GCCapStyle cap_style, GCJoinStyle join_style) {
+		internal static int XSetLineAttributes(IntPtr display, IntPtr gc, int line_width, GCLineStyle line_style, GCCapStyle cap_style, GCJoinStyle join_style)
+		{
 			DebugHelper.TraceWriteLine ("XSetLineAttributes");
 			return _XSetLineAttributes(display, gc, line_width, line_style, cap_style, join_style);
 		}
 
 		[DllImport ("libX11", EntryPoint="XDrawLine")]
 		internal extern static int _XDrawLine(IntPtr display, IntPtr drawable, IntPtr gc, int x1, int y1, int x2, int y2);
-		internal static int XDrawLine(IntPtr display, IntPtr drawable, IntPtr gc, int x1, int y1, int x2, int y2) {
+		internal static int XDrawLine(IntPtr display, IntPtr drawable, IntPtr gc, int x1, int y1, int x2, int y2)
+		{
 			DebugHelper.TraceWriteLine ("XDrawLine");
 			return _XDrawLine(display, drawable, gc, x1, y1, x2, y2);
 		}
 
 		[DllImport ("libX11", EntryPoint="XDrawRectangle")]
 		internal extern static int _XDrawRectangle(IntPtr display, IntPtr drawable, IntPtr gc, int x1, int y1, int width, int height);
-		internal static int XDrawRectangle(IntPtr display, IntPtr drawable, IntPtr gc, int x1, int y1, int width, int height) {
+		internal static int XDrawRectangle(IntPtr display, IntPtr drawable, IntPtr gc, int x1, int y1, int width, int height)
+		{
 			DebugHelper.TraceWriteLine ("XDrawRectangle");
 			return _XDrawRectangle(display, drawable, gc, x1, y1, width, height);
 		}
 
 		[DllImport ("libX11", EntryPoint="XFillRectangle")]
 		internal extern static int _XFillRectangle(IntPtr display, IntPtr drawable, IntPtr gc, int x1, int y1, int width, int height);
-		internal static int XFillRectangle(IntPtr display, IntPtr drawable, IntPtr gc, int x1, int y1, int width, int height) {
+		internal static int XFillRectangle(IntPtr display, IntPtr drawable, IntPtr gc, int x1, int y1, int width, int height)
+		{
 			DebugHelper.TraceWriteLine ("XFillRectangle");
 			return _XFillRectangle(display, drawable, gc, x1, y1, width, height);
 		}
 
 		[DllImport ("libX11", EntryPoint="XSetWindowBackground")]
 		internal extern static int _XSetWindowBackground(IntPtr display, IntPtr window, IntPtr background);
-		internal static int XSetWindowBackground(IntPtr display, IntPtr window, IntPtr background) {
+		internal static int XSetWindowBackground(IntPtr display, IntPtr window, IntPtr background)
+		{
 			DebugHelper.TraceWriteLine ("XSetWindowBackground");
 			return _XSetWindowBackground(display, window, background);
 		}
 
 		[DllImport ("libX11", EntryPoint="XCopyArea")]
 		internal extern static int _XCopyArea(IntPtr display, IntPtr src, IntPtr dest, IntPtr gc, int src_x, int src_y, int width, int height, int dest_x, int dest_y);
-		internal static int XCopyArea(IntPtr display, IntPtr src, IntPtr dest, IntPtr gc, int src_x, int src_y, int width, int height, int dest_x, int dest_y) {
+		internal static int XCopyArea(IntPtr display, IntPtr src, IntPtr dest, IntPtr gc, int src_x, int src_y, int width, int height, int dest_x, int dest_y)
+		{
 			DebugHelper.TraceWriteLine ("XCopyArea");
 			return _XCopyArea(display, src, dest, gc, src_x, src_y, width, height, dest_x, dest_y);
 		}
 
 		[DllImport ("libX11", EntryPoint="XGetWindowProperty")]
 		internal extern static int _XGetWindowProperty(IntPtr display, IntPtr window, IntPtr atom, IntPtr long_offset, IntPtr long_length, bool delete, IntPtr req_type, out IntPtr actual_type, out int actual_format, out IntPtr nitems, out IntPtr bytes_after, ref IntPtr prop);
-		internal static int XGetWindowProperty(IntPtr display, IntPtr window, IntPtr atom, IntPtr long_offset, IntPtr long_length, bool delete, IntPtr req_type, out IntPtr actual_type, out int actual_format, out IntPtr nitems, out IntPtr bytes_after, ref IntPtr prop) {
+		internal static int XGetWindowProperty(IntPtr display, IntPtr window, IntPtr atom, IntPtr long_offset, IntPtr long_length, bool delete, IntPtr req_type, out IntPtr actual_type, out int actual_format, out IntPtr nitems, out IntPtr bytes_after, ref IntPtr prop)
+		{
 			DebugHelper.TraceWriteLine ("XGetWindowProperty");
 			return _XGetWindowProperty(display, window, atom, long_offset, long_length, delete, req_type, out actual_type, out actual_format, out nitems, out bytes_after, ref prop);
 		}
 
 		[DllImport ("libX11", EntryPoint="XSetInputFocus")]
 		internal extern static int _XSetInputFocus(IntPtr display, IntPtr window, RevertTo revert_to, IntPtr time);
-		internal static int XSetInputFocus(IntPtr display, IntPtr window, RevertTo revert_to, IntPtr time) {
+		internal static int XSetInputFocus(IntPtr display, IntPtr window, RevertTo revert_to, IntPtr time)
+		{
 			DebugHelper.TraceWriteLine ("XSetInputFocus");
 			return _XSetInputFocus(display, window, revert_to, time);
 		}
 
 		[DllImport ("libX11", EntryPoint="XIconifyWindow")]
 		internal extern static int _XIconifyWindow(IntPtr display, IntPtr window, int screen_number);
-		internal static int XIconifyWindow(IntPtr display, IntPtr window, int screen_number) {
+		internal static int XIconifyWindow(IntPtr display, IntPtr window, int screen_number)
+		{
 			DebugHelper.TraceWriteLine ("XIconifyWindow");
 			return _XIconifyWindow(display, window, screen_number);
 		}
 
 		[DllImport ("libX11", EntryPoint="XDefineCursor")]
 		internal extern static int _XDefineCursor(IntPtr display, IntPtr window, IntPtr cursor);
-		internal static int XDefineCursor(IntPtr display, IntPtr window, IntPtr cursor) {
+		internal static int XDefineCursor(IntPtr display, IntPtr window, IntPtr cursor)
+		{
 			DebugHelper.TraceWriteLine ("XDefineCursor");
 			return _XDefineCursor(display, window, cursor);
 		}
 
 		[DllImport ("libX11", EntryPoint="XUndefineCursor")]
 		internal extern static int _XUndefineCursor(IntPtr display, IntPtr window);
-		internal static int XUndefineCursor(IntPtr display, IntPtr window) {
+		internal static int XUndefineCursor(IntPtr display, IntPtr window)
+		{
 			DebugHelper.TraceWriteLine ("XUndefineCursor");
 			return _XUndefineCursor(display, window);
 		}
 
 		[DllImport ("libX11", EntryPoint="XFreeCursor")]
 		internal extern static int _XFreeCursor(IntPtr display, IntPtr cursor);
-		internal static int XFreeCursor(IntPtr display, IntPtr cursor) {
+		internal static int XFreeCursor(IntPtr display, IntPtr cursor)
+		{
 			DebugHelper.TraceWriteLine ("XFreeCursor");
 			return _XFreeCursor(display, cursor);
 		}
 
 		[DllImport ("libX11", EntryPoint="XCreateFontCursor")]
 		internal extern static IntPtr _XCreateFontCursor(IntPtr display, CursorFontShape shape);
-		internal static IntPtr XCreateFontCursor(IntPtr display, CursorFontShape shape) {
+		internal static IntPtr XCreateFontCursor(IntPtr display, CursorFontShape shape)
+		{
 			DebugHelper.TraceWriteLine ("XCreateFontCursor");
 			return _XCreateFontCursor(display, shape);
 		}
 
 		[DllImport ("libX11", EntryPoint="XCreatePixmapCursor")]
 		internal extern static IntPtr _XCreatePixmapCursor(IntPtr display, IntPtr source, IntPtr mask, ref XColor foreground_color, ref XColor background_color, int x_hot, int y_hot);
-		internal static IntPtr XCreatePixmapCursor(IntPtr display, IntPtr source, IntPtr mask, ref XColor foreground_color, ref XColor background_color, int x_hot, int y_hot) {
+		internal static IntPtr XCreatePixmapCursor(IntPtr display, IntPtr source, IntPtr mask, ref XColor foreground_color, ref XColor background_color, int x_hot, int y_hot)
+		{
 			DebugHelper.TraceWriteLine ("XCreatePixmapCursor");
 			return _XCreatePixmapCursor(display, source, mask, ref foreground_color, ref background_color, x_hot, y_hot);
 		}
 
 		[DllImport ("libX11", EntryPoint="XCreatePixmapFromBitmapData")]
 		internal extern static IntPtr _XCreatePixmapFromBitmapData(IntPtr display, IntPtr drawable, byte[] data, int width, int height, IntPtr fg, IntPtr bg, int depth);
-		internal static IntPtr XCreatePixmapFromBitmapData(IntPtr display, IntPtr drawable, byte[] data, int width, int height, IntPtr fg, IntPtr bg, int depth) {
+		internal static IntPtr XCreatePixmapFromBitmapData(IntPtr display, IntPtr drawable, byte[] data, int width, int height, IntPtr fg, IntPtr bg, int depth)
+		{
 			DebugHelper.TraceWriteLine ("XCreatePixmapFromBitmapData");
 			return _XCreatePixmapFromBitmapData(display, drawable, data, width, height, fg, bg, depth);
 		}
 
 		[DllImport ("libX11", EntryPoint="XCreatePixmap")]
 		internal extern static IntPtr _XCreatePixmap(IntPtr display, IntPtr d, int width, int height, int depth);
-		internal static IntPtr XCreatePixmap(IntPtr display, IntPtr d, int width, int height, int depth) {
+		internal static IntPtr XCreatePixmap(IntPtr display, IntPtr d, int width, int height, int depth)
+		{
 			DebugHelper.TraceWriteLine ("XCreatePixmap");
 			return _XCreatePixmap(display, d, width, height, depth);
 		}
 
 		[DllImport ("libX11", EntryPoint="XFreePixmap")]
 		internal extern static IntPtr _XFreePixmap(IntPtr display, IntPtr pixmap);
-		internal static IntPtr XFreePixmap(IntPtr display, IntPtr pixmap) {
+		internal static IntPtr XFreePixmap(IntPtr display, IntPtr pixmap)
+		{
 			DebugHelper.TraceWriteLine ("XFreePixmap");
 			return _XFreePixmap(display, pixmap);
 		}
 
 		[DllImport ("libX11", EntryPoint="XQueryBestCursor")]
 		internal extern static int _XQueryBestCursor(IntPtr display, IntPtr drawable, int width, int height, out int best_width, out int best_height);
-		internal static int XQueryBestCursor(IntPtr display, IntPtr drawable, int width, int height, out int best_width, out int best_height) {
+		internal static int XQueryBestCursor(IntPtr display, IntPtr drawable, int width, int height, out int best_width, out int best_height)
+		{
 			DebugHelper.TraceWriteLine ("XQueryBestCursor");
 			return _XQueryBestCursor(display, drawable, width, height, out best_width, out best_height);
 		}
 
 		[DllImport ("libX11", EntryPoint="XQueryExtension")]
 		internal extern static int _XQueryExtension(IntPtr display, string extension_name, ref int major, ref int first_event, ref int first_error);
-		internal static int XQueryExtension(IntPtr display, string extension_name, ref int major, ref int first_event, ref int first_error) {
+		internal static int XQueryExtension(IntPtr display, string extension_name, ref int major, ref int first_event, ref int first_error)
+		{
 			DebugHelper.TraceWriteLine ("XQueryExtension");
 			return _XQueryExtension(display, extension_name, ref major, ref first_event, ref first_error);
 		}
 
 		[DllImport ("libX11", EntryPoint="XWhitePixel")]
 		internal extern static IntPtr _XWhitePixel(IntPtr display, int screen_no);
-		internal static IntPtr XWhitePixel(IntPtr display, int screen_no) {
+		internal static IntPtr XWhitePixel(IntPtr display, int screen_no)
+		{
 			DebugHelper.TraceWriteLine ("XWhitePixel");
 			return _XWhitePixel(display, screen_no);
 		}
 
 		[DllImport ("libX11", EntryPoint="XBlackPixel")]
 		internal extern static IntPtr _XBlackPixel(IntPtr display, int screen_no);
-		internal static IntPtr XBlackPixel(IntPtr display, int screen_no) {
+		internal static IntPtr XBlackPixel(IntPtr display, int screen_no)
+		{
 			DebugHelper.TraceWriteLine ("XBlackPixel");
 			return _XBlackPixel(display, screen_no);
 		}
 
 		[DllImport ("libX11", EntryPoint="XGrabServer")]
 		internal extern static void _XGrabServer(IntPtr display);
-		internal static void XGrabServer(IntPtr display) {
+		internal static void XGrabServer(IntPtr display)
+		{
 			DebugHelper.TraceWriteLine ("XGrabServer");
 			_XGrabServer(display);
 		}
 
 		[DllImport ("libX11", EntryPoint="XUngrabServer")]
 		internal extern static void _XUngrabServer(IntPtr display);
-		internal static void XUngrabServer(IntPtr display) {
+		internal static void XUngrabServer(IntPtr display)
+		{
 			DebugHelper.TraceWriteLine ("XUngrabServer");
 			_XUngrabServer(display);
 		}
 
 		[DllImport ("libX11", EntryPoint="XGetWMNormalHints")]
 		internal extern static void _XGetWMNormalHints(IntPtr display, IntPtr window, ref XSizeHints hints, out IntPtr supplied_return);
-		internal static void XGetWMNormalHints(IntPtr display, IntPtr window, ref XSizeHints hints, out IntPtr supplied_return) {
+		internal static void XGetWMNormalHints(IntPtr display, IntPtr window, ref XSizeHints hints, out IntPtr supplied_return)
+		{
 			DebugHelper.TraceWriteLine ("XGetWMNormalHints");
 			_XGetWMNormalHints(display, window, ref hints, out supplied_return);
 		}
 
 		[DllImport ("libX11", EntryPoint="XSetWMNormalHints")]
 		internal extern static void _XSetWMNormalHints(IntPtr display, IntPtr window, ref XSizeHints hints);
-		internal static void XSetWMNormalHints(IntPtr display, IntPtr window, ref XSizeHints hints) {
+		internal static void XSetWMNormalHints(IntPtr display, IntPtr window, ref XSizeHints hints)
+		{
 			DebugHelper.TraceWriteLine ("XSetWMNormalHints");
 			_XSetWMNormalHints(display, window, ref hints);
 		}
 
 		[DllImport ("libX11", EntryPoint="XSetZoomHints")]
 		internal extern static void _XSetZoomHints(IntPtr display, IntPtr window, ref XSizeHints hints);
-		internal static void XSetZoomHints(IntPtr display, IntPtr window, ref XSizeHints hints) {
+		internal static void XSetZoomHints(IntPtr display, IntPtr window, ref XSizeHints hints)
+		{
 			DebugHelper.TraceWriteLine ("XSetZoomHints");
 			_XSetZoomHints(display, window, ref hints);
 		}
 
 		[DllImport ("libX11", EntryPoint="XSetWMHints")]
 		internal extern static void _XSetWMHints(IntPtr display, IntPtr window, ref XWMHints wmhints);
-		internal static void XSetWMHints(IntPtr display, IntPtr window, ref XWMHints wmhints) {
+		internal static void XSetWMHints(IntPtr display, IntPtr window, ref XWMHints wmhints)
+		{
 			DebugHelper.TraceWriteLine ("XSetWMHints");
 			_XSetWMHints(display, window, ref wmhints);
 		}
 
 		[DllImport ("libX11", EntryPoint="XGetIconSizes")]
 		internal extern static int _XGetIconSizes(IntPtr display, IntPtr window, out IntPtr size_list, out int count);
-		internal static int XGetIconSizes(IntPtr display, IntPtr window, out IntPtr size_list, out int count) {
+		internal static int XGetIconSizes(IntPtr display, IntPtr window, out IntPtr size_list, out int count)
+		{
 			DebugHelper.TraceWriteLine ("XGetIconSizes");
 			return _XGetIconSizes(display, window, out size_list, out count);
 		}
 
 		[DllImport ("libX11", EntryPoint="XSetErrorHandler")]
 		internal extern static IntPtr _XSetErrorHandler(XErrorHandler error_handler);
-		internal static IntPtr XSetErrorHandler(XErrorHandler error_handler) {
+		internal static IntPtr XSetErrorHandler(XErrorHandler error_handler)
+		{
 			DebugHelper.TraceWriteLine ("XSetErrorHandler");
 			return _XSetErrorHandler(error_handler);
 		}
 
 		[DllImport ("libX11", EntryPoint="XGetErrorText")]
 		internal extern static IntPtr _XGetErrorText(IntPtr display, byte code, StringBuilder buffer, int length);
-		internal static IntPtr XGetErrorText(IntPtr display, byte code, StringBuilder buffer, int length) {
+		internal static IntPtr XGetErrorText(IntPtr display, byte code, StringBuilder buffer, int length)
+		{
 			DebugHelper.TraceWriteLine ("XGetErrorText");
 			return _XGetErrorText(display, code, buffer, length);
 		}
 
 		[DllImport ("libX11", EntryPoint="XInitThreads")]
 		internal extern static int _XInitThreads();
-		internal static int XInitThreads() {
+		internal static int XInitThreads()
+		{
 			DebugHelper.TraceWriteLine ("XInitThreads");
 			return _XInitThreads();
 		}
 
 		[DllImport ("libX11", EntryPoint="XConvertSelection")]
 		internal extern static int _XConvertSelection(IntPtr display, IntPtr selection, IntPtr target, IntPtr property, IntPtr requestor, IntPtr time);
-		internal static int XConvertSelection(IntPtr display, IntPtr selection, IntPtr target, IntPtr property, IntPtr requestor, IntPtr time) {
+		internal static int XConvertSelection(IntPtr display, IntPtr selection, IntPtr target, IntPtr property, IntPtr requestor, IntPtr time)
+		{
 			DebugHelper.TraceWriteLine ("XConvertSelection");
 			return _XConvertSelection(display, selection, target, property, requestor, time);
 		}
 
 		[DllImport ("libX11", EntryPoint="XGetSelectionOwner")]
 		internal extern static IntPtr _XGetSelectionOwner(IntPtr display, IntPtr selection);
-		internal static IntPtr XGetSelectionOwner(IntPtr display, IntPtr selection) {
+		internal static IntPtr XGetSelectionOwner(IntPtr display, IntPtr selection)
+		{
 			DebugHelper.TraceWriteLine ("XGetSelectionOwner");
 			return _XGetSelectionOwner(display, selection);
 		}
 
 		[DllImport ("libX11", EntryPoint="XSetSelectionOwner")]
 		internal extern static int _XSetSelectionOwner(IntPtr display, IntPtr selection, IntPtr owner, IntPtr time);
-		internal static int XSetSelectionOwner(IntPtr display, IntPtr selection, IntPtr owner, IntPtr time) {
+		internal static int XSetSelectionOwner(IntPtr display, IntPtr selection, IntPtr owner, IntPtr time)
+		{
 			DebugHelper.TraceWriteLine ("XSetSelectionOwner");
 			return _XSetSelectionOwner(display, selection, owner, time);
 		}
 
 		[DllImport ("libX11", EntryPoint="XSetPlaneMask")]
 		internal extern static int _XSetPlaneMask(IntPtr display, IntPtr gc, IntPtr mask);
-		internal static int XSetPlaneMask(IntPtr display, IntPtr gc, IntPtr mask) {
+		internal static int XSetPlaneMask(IntPtr display, IntPtr gc, IntPtr mask)
+		{
 			DebugHelper.TraceWriteLine ("XSetPlaneMask");
 			return _XSetPlaneMask(display, gc, mask);
 		}
 
 		[DllImport ("libX11", EntryPoint="XSetForeground")]
 		internal extern static int _XSetForeground(IntPtr display, IntPtr gc, UIntPtr foreground);
-		internal static int XSetForeground(IntPtr display, IntPtr gc, UIntPtr foreground) {
+		internal static int XSetForeground(IntPtr display, IntPtr gc, UIntPtr foreground)
+		{
 			DebugHelper.TraceWriteLine ("XSetForeground");
 			return _XSetForeground(display, gc, foreground);
 		}
 
 		[DllImport ("libX11", EntryPoint="XSetBackground")]
 		internal extern static int _XSetBackground(IntPtr display, IntPtr gc, UIntPtr background);
-		internal static int XSetBackground(IntPtr display, IntPtr gc, UIntPtr background) {
+		internal static int XSetBackground(IntPtr display, IntPtr gc, UIntPtr background)
+		{
 			DebugHelper.TraceWriteLine ("XSetBackground");
 			return _XSetBackground(display, gc, background);
 		}
 
 		[DllImport ("libX11", EntryPoint="XBell")]
 		internal extern static int _XBell(IntPtr display, int percent);
-		internal static int XBell(IntPtr display, int percent) {
+		internal static int XBell(IntPtr display, int percent)
+		{
 			DebugHelper.TraceWriteLine ("XBell");
 			return _XBell(display, percent);
 		}
 
 		[DllImport ("libX11", EntryPoint="XChangeActivePointerGrab")]
 		internal extern static int _XChangeActivePointerGrab (IntPtr display, EventMask event_mask, IntPtr cursor, IntPtr time);
-		internal static int XChangeActivePointerGrab (IntPtr display, EventMask event_mask, IntPtr cursor, IntPtr time) {
+		internal static int XChangeActivePointerGrab (IntPtr display, EventMask event_mask, IntPtr cursor, IntPtr time)
+		{
 			DebugHelper.TraceWriteLine ("XChangeActivePointerGrab");
 			return _XChangeActivePointerGrab (display, event_mask, cursor, time);
 		}
 
 		[DllImport ("libX11", EntryPoint="XFilterEvent")]
 		internal extern static bool _XFilterEvent(ref XEvent xevent, IntPtr window);
-		internal static bool XFilterEvent(ref XEvent xevent, IntPtr window) {
+		internal static bool XFilterEvent(ref XEvent xevent, IntPtr window)
+		{
 			DebugHelper.TraceWriteLine ("XFilterEvent");
 			return _XFilterEvent(ref xevent, window);
 		}
 
 		[DllImport ("libX11", EntryPoint="XkbSetDetectableAutoRepeat")]
 		internal extern static void _XkbSetDetectableAutoRepeat (IntPtr display, bool detectable, IntPtr supported);
-		internal static void XkbSetDetectableAutoRepeat (IntPtr display, bool detectable, IntPtr supported) {
+		internal static void XkbSetDetectableAutoRepeat (IntPtr display, bool detectable, IntPtr supported)
+		{
 			DebugHelper.TraceWriteLine ("XkbSetDetectableAutoRepeat");
 			_XkbSetDetectableAutoRepeat (display, detectable, supported);
 		}
 
 		[DllImport ("libX11", EntryPoint="XPeekEvent")]
 		internal extern static void _XPeekEvent (IntPtr display, ref XEvent xevent);
-		internal static void XPeekEvent (IntPtr display, ref XEvent xevent) {
+		internal static void XPeekEvent (IntPtr display, ref XEvent xevent)
+		{
 			DebugHelper.TraceWriteLine ("XPeekEvent");
 			_XPeekEvent (display, ref xevent);
 		}
 
 		[DllImport ("libX11", EntryPoint="XIfEvent")]
 		internal extern static void _XIfEvent (IntPtr display, ref XEvent xevent, Delegate event_predicate, IntPtr arg);
-		internal static void XIfEvent (IntPtr display, ref XEvent xevent, Delegate event_predicate, IntPtr arg) {
+		internal static void XIfEvent (IntPtr display, ref XEvent xevent, Delegate event_predicate, IntPtr arg)
+		{
 			DebugHelper.TraceWriteLine ("XIfEvent");
 			_XIfEvent (display, ref xevent, event_predicate, arg);
 		}
@@ -7068,7 +7235,7 @@ namespace System.Windows.Forms {
 		internal extern static int XReparentWindow(IntPtr display, IntPtr window, IntPtr parent, int x, int y);
 		
 		[DllImport ("libX11", EntryPoint="XMoveResizeWindow")]
-		private extern static int XMoveResizeWindow(IntPtr display, IntPtr window, int x, int y, int width, int height);
+		extern static int XMoveResizeWindow(IntPtr display, IntPtr window, int x, int y, int width, int height);
 		internal static int MoveResizeWindow(IntPtr display, IntPtr window, int x, int y, int width, int height)
 		{
 			int ret = XMoveResizeWindow (display, window, x, y, width, height);
diff --git a/mcs/class/Managed.Windows.Forms/Test/System.Resources/ChangeLog b/mcs/class/Managed.Windows.Forms/Test/System.Resources/ChangeLog
index 6b31736..9bf4adf 100644
--- a/mcs/class/Managed.Windows.Forms/Test/System.Resources/ChangeLog
+++ b/mcs/class/Managed.Windows.Forms/Test/System.Resources/ChangeLog
@@ -1,3 +1,8 @@
+2010-10-31  Nikolaos Georgiou  <Nikolaos.Georgiou at gmail.com>
+
+	Modified ResXResourceWriter so that the comment of ResXNode is not
+	lost. Added unit test.
+
 2008-10-31  Andreia Gaita  <shana at jitted.com>
 
 	* CompatTest.cs, CultureTest.cs, ResXDataNodeTest.cs,
diff --git a/mcs/class/Managed.Windows.Forms/Test/System.Resources/ChangeLog b/mcs/class/Managed.Windows.Forms/Test/System.Resources/ChangeLog.old
similarity index 100%
copy from mcs/class/Managed.Windows.Forms/Test/System.Resources/ChangeLog
copy to mcs/class/Managed.Windows.Forms/Test/System.Resources/ChangeLog.old
diff --git a/mcs/class/Managed.Windows.Forms/Test/System.Resources/WriterTest.cs b/mcs/class/Managed.Windows.Forms/Test/System.Resources/WriterTest.cs
index 90abb81..5814719 100644
--- a/mcs/class/Managed.Windows.Forms/Test/System.Resources/WriterTest.cs
+++ b/mcs/class/Managed.Windows.Forms/Test/System.Resources/WriterTest.cs
@@ -8,6 +8,7 @@
 using System;
 using System.Collections;
 using System.ComponentModel;
+using System.ComponentModel.Design;
 using System.Drawing;
 using System.Globalization;
 using System.IO;
@@ -101,6 +102,39 @@ namespace MonoTests.System.Resources
 		}
 
 		[Test]
+		public void AddResource_WithComment ()
+		{
+			ResXResourceWriter w = new ResXResourceWriter (fileName);
+			ResXDataNode node = new ResXDataNode ("key", "value");
+    			node.Comment = "comment is preserved";
+			w.AddResource (node);
+			w.Generate ();
+			w.Close ();
+
+			ResXResourceReader r = new ResXResourceReader (fileName);
+			ITypeResolutionService typeres = null;
+			r.UseResXDataNodes = true;
+			
+			int count = 0;
+			foreach (DictionaryEntry o in r)
+			{
+				string key = o.Key.ToString();
+				node = (ResXDataNode)o.Value;
+				string value = node.GetValue (typeres).ToString ();
+				string comment = node.Comment;
+
+				Assert.AreEqual ("key", key, "key");
+				Assert.AreEqual ("value", value, "value");
+				Assert.AreEqual ("comment is preserved", comment, "comment");
+				Assert.AreEqual (0, count, "too many nodes");
+				count++;
+			}
+			r.Close ();
+
+			File.Delete (fileName);
+		}
+
+		[Test]
 		public void TestWriter ()
 		{
 			ResXResourceWriter w = new ResXResourceWriter (fileName);
diff --git a/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ChangeLog b/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ChangeLog
index 1544ad2..73e8546 100644
--- a/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ChangeLog
+++ b/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ChangeLog
@@ -1,3 +1,36 @@
+2011-01-07  Thomas Goldstein  <stifu at free.fr>
+
+	Add new NumericUpDown tests.
+
+2011-01-07  Thomas Goldstein  <stifu at free.fr>
+
+	Add unit test for bug 661750.
+
+2011-01-07  Thomas Goldstein  <stifu at free.fr>
+
+	Remove NumericUpDownTest.cs from the -crlf list (file line-ending
+	encoding converted by mistake)
+
+2011-01-05  Thomas Goldstein  <stifu at free.fr>
+
+	Remove #if NET_2_0 flags.
+
+2011-01-05  Marek Safar  <marek.safar at gmail.com>
+
+	Fixed WinFormsTest System.Drawing namespace reference
+
+2011-01-01  Thomas Goldstein  <stifu at free.fr>
+
+	Add unit tests for bug 661753.
+
+2010-12-21  Thomas Goldstein  <stifu at free.fr>
+
+	Add unit test for bug 660294.
+
+2010-09-15  Raja R Harinath  <harinath at hurrynot.org>
+
+	Fix a few CRLF issues
+
 2010-08-15  Thomas Goldstein  <stifu at free.fr>
 
 	* ListControlTest.cs: New test for #620326 - actual values being
diff --git a/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ComboBoxTest.cs b/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ComboBoxTest.cs
index 0466bdf..8b0389c 100644
--- a/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ComboBoxTest.cs
+++ b/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ComboBoxTest.cs
@@ -63,6 +63,19 @@ namespace MonoTests.System.Windows.Forms
 			base.TearDown ();
 		}
 
+		[Test] // bug 660294
+		public void TestNullSelectedText ()
+		{
+			ComboBox comboBox = new ComboBox ();
+			string text = "abc";
+			comboBox.Items.Add (text);
+			comboBox.SelectedIndex = 0;
+			comboBox.Select (0, text.Length);
+			comboBox.SelectedText = null;
+
+			Assert.AreEqual (String.Empty, comboBox.SelectedText);
+		}
+
 		[Test] // bug #331144
 		public void DropDownStyle ()
 		{
diff --git a/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/EventLogger.cs b/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/EventLogger.cs
index f0ef5d2..f04124d 100644
--- a/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/EventLogger.cs
+++ b/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/EventLogger.cs
@@ -129,10 +129,10 @@ namespace MonoTests.System.Windows.Forms
 			logCtor.DefineParameter (1, ParameterAttributes.None, "test");
 			logCtor.DefineParameter (2, ParameterAttributes.None, "obj");
 			ILGenerator logIL = logCtor.GetILGenerator ();
-
-			logIL.Emit (OpCodes.Ldarg_0);
-			logIL.Emit (OpCodes.Call, typeof (object).GetConstructor (Type.EmptyTypes));
-
+
+			logIL.Emit (OpCodes.Ldarg_0);
+			logIL.Emit (OpCodes.Call, typeof (object).GetConstructor (Type.EmptyTypes));
+
 			logIL.Emit (OpCodes.Ldarg_0);
 			logIL.Emit (OpCodes.Ldarg_1);
 			logIL.Emit (OpCodes.Stfld, logField);
diff --git a/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/NumericUpDownTest.cs b/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/NumericUpDownTest.cs
index 21cbed5..3eb4e78 100644
--- a/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/NumericUpDownTest.cs
+++ b/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/NumericUpDownTest.cs
@@ -1,158 +1,171 @@
-
-using System;
-using System.ComponentModel;
-using System.Drawing;
-using System.Globalization;
-using System.Reflection;
-using System.Windows.Forms;
-using System.Collections;
-using Threading = System.Threading;
-
-using NUnit.Framework;
-
-using CategoryAttribute = NUnit.Framework.CategoryAttribute;
-
-namespace MonoTests.System.Windows.Forms
-{
-	[TestFixture]
-	public class NumericUpDownTest : TestHelper
-	{
-		[Test]
-		public void DefaultValues ()
-		{
-			NumericUpDown n = new NumericUpDown ();
-#if NET_2_0
-			Assert.IsFalse (n.Accelerations.IsReadOnly, "#A1");
-#endif
-		}
-
-#if NET_2_0
-		[Test]
-		public void SortedAccelerationsTest ()
-		{
-			NumericUpDown numericUpDown1 = new NumericUpDown ();
-			numericUpDown1.Maximum = 40000;
-			numericUpDown1.Minimum = -40000;
-
-			numericUpDown1.Accelerations.Add (new NumericUpDownAcceleration (9, 100));
-			numericUpDown1.Accelerations.Add (new NumericUpDownAcceleration (2, 1000));
-			numericUpDown1.Accelerations.Add (new NumericUpDownAcceleration (10, 2000));
-			numericUpDown1.Accelerations.Add (new NumericUpDownAcceleration (8, 5000));
-
-			Assert.AreEqual (2, numericUpDown1.Accelerations[0].Seconds, "#A1");
-			Assert.AreEqual (8, numericUpDown1.Accelerations[1].Seconds, "#A2");
-			Assert.AreEqual (9, numericUpDown1.Accelerations[2].Seconds, "#A3");
-			Assert.AreEqual (10, numericUpDown1.Accelerations[3].Seconds, "#A4");
-		}
-#endif
-		[Test]
-		public void Minimum ()
-		{
-			Form f = new Form ();
-			NumericUpDown nud = new NumericUpDown ();
-			nud.Value = 0;
-			nud.Minimum = 2;
-			nud.Maximum = 4;
-			f.Controls.Add (nud);
-			f.Show ();
-
-			Assert.AreEqual (2, nud.Value, "#A1");
-			nud.Minimum = 3;
-			Assert.AreEqual (3, nud.Value, "#A2");
-			f.Dispose ();
-		}
-
-		[Test]
-		public void Maximum ()
-		{
-			Form f = new Form ();
-			NumericUpDown nud = new NumericUpDown ();
-			nud.BeginInit ();
-			nud.Value = 1000;
-			nud.Minimum = 2;
-			nud.Maximum = 4;
-			nud.EndInit ();
-			f.Controls.Add (nud);
-			f.Show ();
-
-			Assert.AreEqual (4, nud.Value, "#A1");
-			nud.Maximum = 3;
-			Assert.AreEqual (3, nud.Value, "#A2");
-			f.Dispose ();
-		}
-
-		[Test]
-		public void Hexadecimal ()
-		{
-			Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo ("en-US");
-			Form f = new Form ();
-			NumericUpDown nud = new NumericUpDown ();
-			nud.Maximum = 100000;
-			f.Controls.Add (nud);
-			f.Show ();
-
-			nud.Value = 56789;
-			nud.Hexadecimal = true;
-			Assert.AreEqual ("DDD5", nud.Text, "#A1");
-			Assert.AreEqual (56789, nud.Value, "#A2");
-			f.Dispose ();
-		}
-
-		[Test]
-		public void ThousandsSeparator ()
-		{
-			Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo ("en-US");
-			Form f = new Form ();
-			NumericUpDown nud = new NumericUpDown ();
-			nud.Maximum = 100000;
-			f.Controls.Add (nud);
-			f.Show ();
-
-			nud.Value = 12345;
-			nud.ThousandsSeparator = true;
-			Assert.AreEqual ("12,345", nud.Text, "#A1");
-			Assert.AreEqual (12345, nud.Value, "#A2");
-			f.Dispose ();
-		}
-
-		[Test]
-		public void Height ()
-		{
-			NumericUpDown nud = new NumericUpDown ();
-			Assert.AreEqual (20, nud.PreferredHeight, "#1");
-			nud.Height = 9999;
-			Assert.AreEqual (nud.PreferredHeight, nud.Height, "#2");
-		}
-
-		[Test]
-#if NET_2_0
-		[ExpectedException (typeof (ArgumentOutOfRangeException))]
-#else
-		[ExpectedException (typeof (ArgumentException))]
-#endif
-		public void SetValueThrowsException ()
-		{
-			NumericUpDown nud = new NumericUpDown ();
-			nud.Maximum = 3;
-			nud.Value = 4;
-			nud.Dispose ();
-		}
-
-		[Test]
-#if NET_2_0
-		[ExpectedException (typeof (ArgumentOutOfRangeException))]
-#else
-		[ExpectedException (typeof (ArgumentException))]
-#endif
-		public void InitTest ()
-		{
-			NumericUpDown nud = new NumericUpDown ();
-			nud.BeginInit ();
-			nud.Maximum = 3;
-			nud.BeginInit ();
-			nud.EndInit ();
-			nud.Value = 4;
-			nud.Dispose ();
-		}
-	}
-}
+using System;
+using System.ComponentModel;
+using System.Drawing;
+using System.Globalization;
+using System.Reflection;
+using System.Windows.Forms;
+using System.Collections;
+using Threading = System.Threading;
+
+using NUnit.Framework;
+
+using CategoryAttribute = NUnit.Framework.CategoryAttribute;
+
+namespace MonoTests.System.Windows.Forms
+{
+	[TestFixture]
+	public class NumericUpDownTest : TestHelper
+	{
+		[Test]
+		public void DefaultValues ()
+		{
+			NumericUpDown n = new NumericUpDown ();
+			Assert.IsFalse (n.Accelerations.IsReadOnly, "#A1");
+		}
+
+		[Test]
+		public void SortedAccelerationsTest ()
+		{
+			NumericUpDown numericUpDown1 = new NumericUpDown ();
+			numericUpDown1.Maximum = 40000;
+			numericUpDown1.Minimum = -40000;
+
+			numericUpDown1.Accelerations.Add (new NumericUpDownAcceleration (9, 100));
+			numericUpDown1.Accelerations.Add (new NumericUpDownAcceleration (2, 1000));
+			numericUpDown1.Accelerations.Add (new NumericUpDownAcceleration (10, 2000));
+			numericUpDown1.Accelerations.Add (new NumericUpDownAcceleration (8, 5000));
+
+			Assert.AreEqual (2, numericUpDown1.Accelerations[0].Seconds, "#A1");
+			Assert.AreEqual (8, numericUpDown1.Accelerations[1].Seconds, "#A2");
+			Assert.AreEqual (9, numericUpDown1.Accelerations[2].Seconds, "#A3");
+			Assert.AreEqual (10, numericUpDown1.Accelerations[3].Seconds, "#A4");
+		}
+
+		[Test]
+		public void Minimum ()
+		{
+			Form f = new Form ();
+			NumericUpDown nud = new NumericUpDown ();
+			nud.Value = 0;
+			nud.Minimum = 2;
+			nud.Maximum = 4;
+			f.Controls.Add (nud);
+			f.Show ();
+
+			Assert.AreEqual (2, nud.Value, "#A1");
+			nud.Minimum = 3;
+			Assert.AreEqual (3, nud.Value, "#A2");
+			f.Dispose ();
+		}
+
+		[Test]
+		public void Maximum ()
+		{
+			Form f = new Form ();
+			NumericUpDown nud = new NumericUpDown ();
+			nud.BeginInit ();
+			nud.Value = 1000;
+			nud.Minimum = 2;
+			nud.Maximum = 4;
+			nud.EndInit ();
+			f.Controls.Add (nud);
+			f.Show ();
+
+			Assert.AreEqual (4, nud.Value, "#A1");
+			nud.Maximum = 3;
+			Assert.AreEqual (3, nud.Value, "#A2");
+			f.Dispose ();
+		}
+
+		[Test]
+		public void Hexadecimal ()
+		{
+			Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo ("en-US");
+			Form f = new Form ();
+			NumericUpDown nud = new NumericUpDown ();
+			nud.Maximum = 100000;
+			f.Controls.Add (nud);
+			f.Show ();
+
+			nud.Value = 56789;
+			nud.Hexadecimal = true;
+			Assert.AreEqual ("DDD5", nud.Text, "#A1");
+			Assert.AreEqual (56789, nud.Value, "#A2");
+			nud.Value = 0; // bug 661750
+			Assert.AreEqual ("0", nud.Text, "#A3");
+			Assert.AreEqual (0, nud.Value, "#A4");
+			f.Dispose ();
+		}
+
+		[Test]
+		public void ThousandsSeparator ()
+		{
+			Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo ("en-US");
+			Form f = new Form ();
+			NumericUpDown nud = new NumericUpDown ();
+			nud.Maximum = 100000;
+			f.Controls.Add (nud);
+			f.Show ();
+
+			nud.Value = 12345;
+			nud.ThousandsSeparator = true;
+			Assert.AreEqual ("12,345", nud.Text, "#A1");
+			Assert.AreEqual (12345, nud.Value, "#A2");
+			f.Dispose ();
+		}
+
+		[Test]
+		public void Height ()
+		{
+			NumericUpDown nud = new NumericUpDown ();
+			Assert.AreEqual (20, nud.PreferredHeight, "#1");
+			nud.Height = 9999;
+			Assert.AreEqual (nud.PreferredHeight, nud.Height, "#2");
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentOutOfRangeException))]
+		public void SetValueThrowsException ()
+		{
+			NumericUpDown nud = new NumericUpDown ();
+			nud.Maximum = 3;
+			nud.Value = 4;
+			nud.Dispose ();
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentOutOfRangeException))]
+		public void InitTest ()
+		{
+			NumericUpDown nud = new NumericUpDown ();
+			nud.BeginInit ();
+			nud.Maximum = 3;
+			nud.BeginInit ();
+			nud.EndInit ();
+			nud.Value = 4;
+			nud.Dispose ();
+		}
+
+		[Test]
+		[ExpectedException (typeof (OverflowException))]
+		public void TestHexadecimalMaximum ()
+		{
+			NumericUpDown nud = new NumericUpDown ();
+			nud.Hexadecimal = true;
+			nud.Maximum = Decimal.MaxValue;
+			nud.Value = Int64.MaxValue;
+			nud.Value++;
+		}
+
+		[Test]
+		[ExpectedException (typeof (OverflowException))]
+		public void TestHexadecimalMinimum ()
+		{
+			NumericUpDown nud = new NumericUpDown ();
+			nud.Hexadecimal = true;
+			nud.Minimum = Decimal.MinValue;
+			nud.Value = Int64.MinValue;
+			nud.Value--;
+		}
+	}
+}
diff --git a/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/TreeNodeTest.cs b/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/TreeNodeTest.cs
index 9ebdf3a..731e2cb 100644
--- a/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/TreeNodeTest.cs
+++ b/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/TreeNodeTest.cs
@@ -178,6 +178,74 @@ namespace MonoTests.System.Windows.Forms {
 			Assert.AreEqual (SystemDrawingNamespace.Color.Beige, clone.ForeColor, "#13");
 		}
 
+		[Test] // bug 661753
+		public void TestTreeNodeClone ()
+		{
+			TreeNode orig = new TreeNode ();
+
+			orig.Nodes.Add ("Node1");
+			orig.Nodes.Add ("Node2");
+			orig.Nodes.Add ("Node3");
+
+			orig.Checked = true;
+			orig.ImageIndex = 4;
+			orig.Name = "MyName";
+			orig.SelectedImageIndex = 3;
+			orig.StateImageIndex = 8;
+			orig.Tag = new object ();
+			orig.Text = "MyText";
+			orig.ToolTipText = "MyToolTipText";
+
+			orig.ContextMenu = new ContextMenu ();
+			orig.ContextMenu.Name = "MyContextMenu";
+			orig.ContextMenu.MenuItems.Add (new MenuItem ("MenuItem1"));
+			orig.ContextMenu.MenuItems.Add (new MenuItem ("MenuItem2"));
+
+			orig.ContextMenuStrip = new ContextMenuStrip ();
+			orig.ContextMenuStrip.Name = "MyContextMenuStrip";
+			orig.ContextMenuStrip.Items.Add ("ToolStripText");
+			orig.ContextMenuStrip.Items.Add (new SystemDrawingNamespace.Bitmap (1, 1));
+
+			TreeNode clone = orig.Clone () as TreeNode;
+
+			Assert.AreEqual (orig.Nodes[0].Name, clone.Nodes[0].Name, "#01");
+			Assert.AreEqual (orig.Nodes[1].Name, clone.Nodes[1].Name, "#02");
+			Assert.AreEqual (orig.Nodes[2].Name, clone.Nodes[2].Name, "#03");
+			Assert.AreNotEqual (orig.Nodes[0], clone.Nodes[0], "#04");
+			Assert.AreNotEqual (orig.Nodes[1], clone.Nodes[1], "#05");
+			Assert.AreNotEqual (orig.Nodes[2], clone.Nodes[2], "#06");
+
+			Assert.AreEqual (orig.Checked, clone.Checked, "#07");
+			Assert.AreEqual (orig.ImageIndex, clone.ImageIndex, "#08");
+			Assert.AreEqual (orig.Name, clone.Name, "#09");
+			Assert.AreEqual (orig.SelectedImageIndex, clone.SelectedImageIndex, "#10");
+			Assert.AreEqual (orig.StateImageIndex, clone.StateImageIndex, "#11");
+			Assert.AreEqual (orig.Tag, clone.Tag, "#12");
+			Assert.AreEqual (orig.Text, clone.Text, "#13");
+			Assert.AreEqual (orig.ToolTipText, clone.ToolTipText, "#14");
+			Assert.AreEqual (orig.ContextMenu, clone.ContextMenu, "#15");
+			Assert.AreEqual (orig.ContextMenuStrip, clone.ContextMenuStrip, "#16");
+		}
+
+		[Test] // bug 661753
+		public void TestTreeNodeClone2 ()
+		{
+			// Cannot test ImageIndex and ImageKey properties at the same time,
+			// as one excludes the other. So this method is for Keys only.
+
+			TreeNode orig = new TreeNode ();
+
+			orig.ImageKey = "MyImageKey";
+			orig.SelectedImageKey = "MySelectedImageKey";
+			orig.StateImageKey = "MyStateImageKey";
+
+			TreeNode clone = orig.Clone () as TreeNode;
+
+			Assert.AreEqual (orig.ImageKey, clone.ImageKey, "#01");
+			Assert.AreEqual (orig.SelectedImageKey, clone.SelectedImageKey, "#02");
+			Assert.AreEqual (orig.StateImageKey, clone.StateImageKey, "#03");
+		}
+
 		[Test]
 		public void SingleNodeIndexTest ()
 		{
diff --git a/mcs/class/Microsoft.Build.Engine/ChangeLog b/mcs/class/Microsoft.Build.Engine/ChangeLog
index d7b0a4e..e0b67ba 100644
--- a/mcs/class/Microsoft.Build.Engine/ChangeLog
+++ b/mcs/class/Microsoft.Build.Engine/ChangeLog
@@ -1,3 +1,12 @@
+2011-01-11  Ankit Jain  <radical at corewars.org>
+
+	[xbuild] Fix bug #663180, second part.
+
+	Fix the way RunningOnMac is detected (use `uname`=="Darwin"),
+	thanks to Michael Hutchinson. And use
+	"/Library/Frameworks/Mono.framework/External/pkgconfig" as a
+	search path for pkg-config files on MacOSX.
+
 2010-09-15  Marek Safar  <marek.safar at gmail.com>
 
 	[637935] Fixed 3.5 version of msbuild dlls to reference 3.5
diff --git a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ChangeLog b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ChangeLog
index ca872f3..55cd142 100644
--- a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ChangeLog
+++ b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ChangeLog
@@ -1,3 +1,62 @@
+2011-01-14  Ankit Jain  <radical at corewars.org>
+
+	[xbuild] Use the backing field directly to avoid evaluating again.
+
+2011-01-14  Ankit Jain  <radical at corewars.org>
+
+	* Microsoft.Build.BuildEngine/Project.cs (BuildInternal): Set
+	needToReevaluate to false, when reevaluating.
+
+2011-01-14  Ankit Jain  <radical at corewars.org>
+
+	* Microsoft.Build.BuildEngine/Engine.cs
+	(ClearBuiltTargetsForProject): New. *
+	Microsoft.Build.BuildEngine/Project.cs (BuiltTargetKeys): Remove.
+	(RemoveBuiltTargets): Use Engine.ClearBuiltTargetsForProject . *
+	Microsoft.Build.BuildEngine/Target.cs: Track api changes. *
+
+2011-01-11  Ankit Jain  <radical at corewars.org>
+
+	[xbuild] ConsoleLogger - Correctly indent multi-line messages.
+
+	Split and correctly indent multi-line messages in ConsoleLogger.
+
+2011-01-11  Ankit Jain  <radical at corewars.org>
+
+	* Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Import.cs:
+	Change the order of paths. *
+	Microsoft.Build.Engine/Microsoft.Build.Engine.dll.sources: Use
+	MS.Build.Tasks/Utilities.cs, for using RunningOnMac . *
+	Microsoft.Build.Tasks/Microsoft.Build.Tasks/PcFileCache.cs: Look
+	in "/Library/Frameworks/Mono.framework/External/pkgconfig" for .pc
+	files, on Mac. *
+	Microsoft.Build.Tasks/Microsoft.Build.Tasks/Utilities.cs
+	(RunningOnMac): New.
+
+2011-01-10  Ankit Jain  <radical at corewars.org>
+
+	* Microsoft.Build.BuildEngine/Token.cs: Add position information.
+	* Microsoft.Build.BuildEngine/ConditionParser.cs: Track api
+	changes. Improve error messages. (ExpectToken): Rename to ..
+	(IsAtToken): .. this, to better reflect its behavior. *
+	Microsoft.Build.BuildEngine/ConditionTokenizer.cs: Track api
+	changes and improve error messages. *
+	Microsoft.Build.BuildEngine/ConditionFactorExpresion.cs: Track api
+	changes
+
+2011-01-10  Ankit Jain  <radical at corewars.org>
+
+	[xbuild] Fix bug #663180 .
+
+	Add "/Library/Frameworks/Mono.framework/External/xbuild" to
+	MSBuildExtensionsPath on MacOSX.
+
+	From the bug report: The purpose of this directory is to provide a
+	place for third-party installers to place extensions where they
+	will not be removed by Mono upgrades. MonoDevelop patches this
+	into the xbuild MSBuildExtensionsPath for builds within MD but it
+	would be useful to have it work outside of MD.
+
 2010-10-13  Ankit Jain  <radical at corewars.org>
 
 	[xbuild] Reset cache of built targets, on a new project build.
diff --git a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ConditionFactorExpresion.cs b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ConditionFactorExpresion.cs
index 616b003..07c8378 100644
--- a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ConditionFactorExpresion.cs
+++ b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ConditionFactorExpresion.cs
@@ -123,7 +123,7 @@ namespace Microsoft.Build.BuildEngine {
 		{
 			Expression oe = new Expression ();
 			oe.Parse (token.Value, ParseOptions.AllowItemsMetadataAndSplit);
-			return new Token ((string) oe.ConvertTo (context, typeof (string)), token.Type);
+			return new Token ((string) oe.ConvertTo (context, typeof (string)), token.Type, token.Position);
 		}
 	}
 }
diff --git a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ConditionParser.cs b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ConditionParser.cs
index 728529c..a0cce01 100644
--- a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ConditionParser.cs
+++ b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ConditionParser.cs
@@ -67,7 +67,7 @@ namespace Microsoft.Build.BuildEngine {
 			ConditionExpression e = parser.ParseExpression ();
 			
 			if (!parser.tokenizer.IsEOF ())
-				throw new ExpressionParseException (String.Format ("Unexpected token at end of condition: \"{0}\"", parser.tokenizer.Token.Value));
+				throw new ExpressionParseException (String.Format ("Unexpected token found, {0}, in condition \"{1}\"", parser.tokenizer.Token, condition));
 			
 			return e;
 		}
@@ -173,7 +173,7 @@ namespace Microsoft.Build.BuildEngine {
 			} else if (token.Type == TokenType.Not) {
 				e = ParseNotExpression ();
 			} else
-				throw new ExpressionParseException (String.Format ("Unexpected token type {0}, while parsing {1}", token.Type, conditionStr));
+				throw new ExpressionParseException (String.Format ("Unexpected token {0}, while parsing condition \"{1}\"", token, conditionStr));
 			
 			return e;
 		}
@@ -215,7 +215,11 @@ namespace Microsoft.Build.BuildEngine {
 		{
 			StringBuilder sb = new StringBuilder ();
 
-			ExpectToken (TokenType.LeftParen);
+			string ref_type = prefix [0] == '$' ? "a property" : "an item list";
+			int token_pos = tokenizer.Token.Position;
+			IsAtToken (TokenType.LeftParen, String.Format (
+						"Expected {0} at position {1} in condition \"{2}\". Missing opening parantheses after the '{3}'.",
+						ref_type, token_pos, conditionStr, prefix));
 			tokenizer.GetNextToken ();
 
 			sb.AppendFormat ("{0}({1}", prefix, tokenizer.Token.Value);
@@ -233,20 +237,33 @@ namespace Microsoft.Build.BuildEngine {
 				}
 			}
 
-			ExpectToken (TokenType.RightParen);
+			IsAtToken (TokenType.RightParen, String.Format (
+						"Expected {0} at position {1} in condition \"{2}\". Missing closing parantheses'.",
+						ref_type, token_pos, conditionStr, prefix));
 			tokenizer.GetNextToken ();
 
 			sb.Append (")");
 
 			//FIXME: HACKY!
-			return new ConditionFactorExpression (new Token (sb.ToString (), TokenType.String));
+			return new ConditionFactorExpression (new Token (sb.ToString (), TokenType.String, token_pos));
 		}
 
-		void ExpectToken (TokenType type)
+		// used to check current token type
+		void IsAtToken (TokenType type, string error_msg)
 		{
-			if (tokenizer.Token.Type != type)
-				throw new ExpressionParseException ("Expected token type of type: " + type + ", got " +
-						tokenizer.Token.Type + " (" + tokenizer.Token.Value + "), while parsing " + conditionStr);
+			if (tokenizer.Token.Type != type) {
+				if (!String.IsNullOrEmpty (error_msg))
+					throw new ExpressionParseException (error_msg);
+
+				if (tokenizer.Token.Type == TokenType.EOF)
+					throw new ExpressionParseException (String.Format (
+								"Expected a \"{0}\" but the condition ended abruptly, while parsing condition \"{1}\"",
+								Token.TypeAsString (type), conditionStr));
+
+				throw new ExpressionParseException (String.Format (
+								"Expected \"{0}\" token,  but got {1}, while parsing \"{2}\"",
+								Token.TypeAsString (type), tokenizer.Token, conditionStr));
+			}
 		}
 	}
 }
diff --git a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ConditionTokenizer.cs b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ConditionTokenizer.cs
index 3a33f85..9dd7a34 100644
--- a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ConditionTokenizer.cs
+++ b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ConditionTokenizer.cs
@@ -75,7 +75,7 @@ namespace Microsoft.Build.BuildEngine {
 		
 			this.inputString = s;
 			this.position = 0;
-			this.token = new Token (null, TokenType.BOF);
+			this.token = new Token (null, TokenType.BOF, 0);
 
 			GetNextToken ();
 		}
@@ -151,7 +151,9 @@ namespace Microsoft.Build.BuildEngine {
 			}
 		
 			if (token.Type == TokenType.EOF)
-				throw new ExpressionParseException ("Cannot read past the end of stream.");
+				throw new ExpressionParseException (String.Format (
+							"Error while parsing condition \"{0}\", ended abruptly.",
+							inputString));
 			
 			SkipWhiteSpace ();
 			
@@ -161,7 +163,7 @@ namespace Microsoft.Build.BuildEngine {
 			int i = ReadChar ();
 			
 			if (i == -1) {
-				token = new Token (null, TokenType.EOF);
+				token = new Token (null, TokenType.EOF, tokenPosition);
 				return;
 			}
 			
@@ -172,7 +174,7 @@ namespace Microsoft.Build.BuildEngine {
 			// maybe we should treat item reference as a token
 			if (ch == '-' && PeekChar () == '>') {
 				ReadChar ();
-				token = new Token ("->", TokenType.Transform);
+				token = new Token ("->", TokenType.Transform, tokenPosition);
 			} else if (Char.IsDigit (ch) || ch == '-') {
 				StringBuilder sb = new StringBuilder ();
 				
@@ -187,8 +189,8 @@ namespace Microsoft.Build.BuildEngine {
 						break;
 				}
 				
-				token = new Token (sb.ToString (), TokenType.Number);
-			} else if (ch == '\'') {
+				token = new Token (sb.ToString (), TokenType.Number, tokenPosition);
+			} else if (ch == '\'' && position < inputString.Length) {
 				StringBuilder sb = new StringBuilder ();
 				string temp;
 				
@@ -215,7 +217,7 @@ namespace Microsoft.Build.BuildEngine {
 				
 				temp = sb.ToString ();
 				
-				token = new Token (temp.Substring (1, temp.Length - 2), TokenType.String);
+				token = new Token (temp.Substring (1, temp.Length - 2), TokenType.String, tokenPosition);
 				
 			} else 	if (ch == '_' || Char.IsLetter (ch)) {
 				StringBuilder sb = new StringBuilder ();
@@ -232,25 +234,25 @@ namespace Microsoft.Build.BuildEngine {
 				string temp = sb.ToString ();
 				
 				if (keywords.ContainsKey (temp))
-					token = new Token (temp, keywords [temp]);
+					token = new Token (temp, keywords [temp], tokenPosition);
 				else
-					token = new Token (temp, TokenType.String);
+					token = new Token (temp, TokenType.String, tokenPosition);
 					
 			} else if (ch == '!' && PeekChar () == (int) '=') {
-				token = new Token ("!=", TokenType.NotEqual);
+				token = new Token ("!=", TokenType.NotEqual, tokenPosition);
 				ReadChar ();
 			} else if (ch == '<' && PeekChar () == (int) '=') {
-				token = new Token ("<=", TokenType.LessOrEqual);
+				token = new Token ("<=", TokenType.LessOrEqual, tokenPosition);
 				ReadChar ();
 			} else if (ch == '>' && PeekChar () == (int) '=') {
-				token = new Token (">=", TokenType.GreaterOrEqual);
+				token = new Token (">=", TokenType.GreaterOrEqual, tokenPosition);
 				ReadChar ();
 			} else if (ch == '=' && PeekChar () == (int) '=') {
-				token = new Token ("==", TokenType.Equal);
+				token = new Token ("==", TokenType.Equal, tokenPosition);
 				ReadChar ();
 			} else if (ch >= 32 && ch < 128) {
 				if (charIndexToTokenType [ch] != TokenType.Invalid) {
-					token = new Token (new String (ch, 1), charIndexToTokenType [ch]);
+					token = new Token (new String (ch, 1), charIndexToTokenType [ch], tokenPosition);
 					return;
 				} else
 					throw new ExpressionParseException (String.Format ("Invalid punctuation: {0}", ch));
diff --git a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ConsoleLogger.cs b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ConsoleLogger.cs
index 2834998..759c88b 100644
--- a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ConsoleLogger.cs
+++ b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ConsoleLogger.cs
@@ -456,9 +456,11 @@ namespace Microsoft.Build.BuildEngine {
 				StringBuilder sb = new StringBuilder ();
 				for (int i = 0; i < indent; i++)
 					sb.Append ('\t');
-				sb.Append (message);
 
-				writeHandler (sb.ToString ());
+				string indent_str = sb.ToString ();
+
+				foreach (string line in message.Split (new string[] {Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries))
+					writeHandler (indent_str + line);
 			} else {
 				writeHandler (message);
 			}
diff --git a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Engine.cs b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Engine.cs
index 3a41134..8f7bc6d 100644
--- a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Engine.cs
+++ b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Engine.cs
@@ -31,6 +31,7 @@ using System;
 using System.Collections;
 using System.Collections.Generic;
 using System.IO;
+using System.Linq;
 using Microsoft.Build.Framework;
 using Microsoft.Build.Utilities;
 using Mono.XBuild.Utilities;
@@ -308,8 +309,10 @@ namespace Microsoft.Build.BuildEngine {
 
 		internal void RemoveLoadedProject (Project p)
 		{
-			if (p.FullFileName != String.Empty)
+			if (!String.IsNullOrEmpty (p.FullFileName)) {
+				ClearBuiltTargetsForProject (p);
 				projects.Remove (p.FullFileName);
+			}
 		}
 
 		internal void AddLoadedProject (Project p)
@@ -328,8 +331,7 @@ namespace Microsoft.Build.BuildEngine {
 			
 			project.CheckUnloaded ();
 			
-			if (project.FullFileName != String.Empty)
-				projects.Remove (project.FullFileName);
+			RemoveLoadedProject (project);
 			
 			project.Unload ();
 		}
@@ -401,6 +403,14 @@ namespace Microsoft.Build.BuildEngine {
 			}
 		}
 
+		internal void ClearBuiltTargetsForProject (Project project)
+		{
+			string project_key = project.GetKeyForTarget (String.Empty, false);
+			var to_remove_keys = BuiltTargetsOutputByName.Keys.Where (key => key.StartsWith (project_key)).ToList ();
+			foreach (string to_remove_key in to_remove_keys)
+				BuiltTargetsOutputByName.Remove (to_remove_key);
+		}
+
 		void LogProjectStarted (Project project, string [] target_names)
 		{
 			string targets;
diff --git a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Import.cs b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Import.cs
index 6209299..9c595a0 100644
--- a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Import.cs
+++ b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Import.cs
@@ -42,6 +42,7 @@ namespace Microsoft.Build.BuildEngine {
 
 		static string DotConfigExtensionsPath = Path.Combine (Environment.GetFolderPath (Environment.SpecialFolder.ApplicationData),
 								Path.Combine ("xbuild", "tasks"));
+		const string MacOSXExternalXBuildDir = "/Library/Frameworks/Mono.framework/External/xbuild";
 	
 		internal Import (XmlElement importElement, Project project, ImportedProject originalProject)
 		{
@@ -117,7 +118,12 @@ namespace Microsoft.Build.BuildEngine {
 			// project.
 
 			string envvar = Environment.GetEnvironmentVariable (property_name);
-			envvar = (envvar ?? String.Empty) + ":" + DotConfigExtensionsPath;
+			envvar = String.Join (":", new string [] {
+						// For mac osx, look in the 'External' dir on macosx,
+						// see bug #663180
+						Microsoft.Build.Tasks.Utilities.RunningOnMac ? MacOSXExternalXBuildDir : String.Empty,
+						(envvar ?? String.Empty),
+						DotConfigExtensionsPath});
 
 			string [] paths = envvar.Split (new char [] {':'}, StringSplitOptions.RemoveEmptyEntries);
 			foreach (string path in paths) {
diff --git a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Project.cs b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Project.cs
index cba8f82..0b46834 100644
--- a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Project.cs
+++ b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Project.cs
@@ -73,7 +73,6 @@ namespace Microsoft.Build.BuildEngine {
 		XmlDocument			xmlDocument;
 		bool				unloaded;
 		bool				initialTargetsBuilt;
-		List<string>			builtTargetKeys;
 		bool				building;
 		BuildSettings			current_settings;
 		Stack<Batch>			batches;
@@ -111,7 +110,6 @@ namespace Microsoft.Build.BuildEngine {
 
 			encoding = null;
 
-			builtTargetKeys = new List<string> ();
 			initialTargets = new List<string> ();
 			defaultTargets = new string [0];
 			batches = new Stack<Batch> ();
@@ -301,8 +299,10 @@ namespace Microsoft.Build.BuildEngine {
 				   BuildSettings buildFlags)
 		{
 			CheckUnloaded ();
-			if (buildFlags == BuildSettings.None)
+			if (buildFlags == BuildSettings.None) {
+				needToReevaluate = false;
 				Reevaluate ();
+			}
 			
 			if (targetNames == null || targetNames.Length == 0) {
 				if (defaultTargets != null && defaultTargets.Length != 0)
@@ -352,8 +352,15 @@ namespace Microsoft.Build.BuildEngine {
 
 		internal string GetKeyForTarget (string target_name)
 		{
+			return GetKeyForTarget (target_name, true);
+		}
+
+		internal string GetKeyForTarget (string target_name, bool include_global_properties)
+		{
 			// target name is case insensitive
-			return fullFileName + ":" + target_name.ToLower () + ":" + GlobalPropertiesToString (GlobalProperties);
+			return fullFileName + ":" + target_name.ToLower () +
+					(include_global_properties ? (":" + GlobalPropertiesToString (GlobalProperties))
+					 			   : String.Empty);
 		}
 
 		string GlobalPropertiesToString (BuildPropertyGroup bgp)
@@ -896,8 +903,7 @@ namespace Microsoft.Build.BuildEngine {
 		// Removes entries of all earlier built targets for this project
 		void RemoveBuiltTargets ()
 		{
-			foreach (string key in builtTargetKeys)
-				ParentEngine.BuiltTargetsOutputByName.Remove (key);
+			ParentEngine.ClearBuiltTargetsForProject (this);
 		}
 
 		void InitializeProperties (string effective_tools_version)
@@ -908,7 +914,7 @@ namespace Microsoft.Build.BuildEngine {
 
 			foreach (BuildProperty gp in GlobalProperties) {
 				bp = new BuildProperty (gp.Name, gp.Value, PropertyType.Global);
-				EvaluatedProperties.AddProperty (bp);
+				evaluatedProperties.AddProperty (bp);
 			}
 			
 			foreach (BuildProperty gp in GlobalProperties)
@@ -917,38 +923,38 @@ namespace Microsoft.Build.BuildEngine {
 			// add properties that we dont have from parent engine's
 			// global properties
 			foreach (BuildProperty gp in ParentEngine.GlobalProperties) {
-				if (EvaluatedProperties [gp.Name] == null) {
+				if (evaluatedProperties [gp.Name] == null) {
 					bp = new BuildProperty (gp.Name, gp.Value, PropertyType.Global);
-					EvaluatedProperties.AddProperty (bp);
+					evaluatedProperties.AddProperty (bp);
 				}
 			}
 
 			foreach (DictionaryEntry de in Environment.GetEnvironmentVariables ()) {
 				bp = new BuildProperty ((string) de.Key, (string) de.Value, PropertyType.Environment);
-				EvaluatedProperties.AddProperty (bp);
+				evaluatedProperties.AddProperty (bp);
 			}
 
-			EvaluatedProperties.AddProperty (new BuildProperty ("MSBuildProjectFile", Path.GetFileName (fullFileName),
+			evaluatedProperties.AddProperty (new BuildProperty ("MSBuildProjectFile", Path.GetFileName (fullFileName),
 						PropertyType.Reserved));
-			EvaluatedProperties.AddProperty (new BuildProperty ("MSBuildProjectFullPath", fullFileName, PropertyType.Reserved));
-			EvaluatedProperties.AddProperty (new BuildProperty ("MSBuildProjectName",
+			evaluatedProperties.AddProperty (new BuildProperty ("MSBuildProjectFullPath", fullFileName, PropertyType.Reserved));
+			evaluatedProperties.AddProperty (new BuildProperty ("MSBuildProjectName",
 						Path.GetFileNameWithoutExtension (fullFileName),
 						PropertyType.Reserved));
-			EvaluatedProperties.AddProperty (new BuildProperty ("MSBuildProjectExtension",
+			evaluatedProperties.AddProperty (new BuildProperty ("MSBuildProjectExtension",
 						Path.GetExtension (fullFileName),
 						PropertyType.Reserved));
 
 			string toolsPath = parentEngine.Toolsets [effective_tools_version].ToolsPath;
 			if (toolsPath == null)
 				throw new Exception (String.Format ("Invalid tools version '{0}', no tools path set for this.", effective_tools_version));
-			EvaluatedProperties.AddProperty (new BuildProperty ("MSBuildBinPath", toolsPath, PropertyType.Reserved));
-			EvaluatedProperties.AddProperty (new BuildProperty ("MSBuildToolsPath", toolsPath, PropertyType.Reserved));
-			EvaluatedProperties.AddProperty (new BuildProperty ("MSBuildToolsVersion", effective_tools_version, PropertyType.Reserved));
-			EvaluatedProperties.AddProperty (new BuildProperty ("MSBuildExtensionsPath", ExtensionsPath, PropertyType.Reserved));
-			EvaluatedProperties.AddProperty (new BuildProperty ("MSBuildExtensionsPath32", ExtensionsPath, PropertyType.Reserved));
-			EvaluatedProperties.AddProperty (new BuildProperty ("MSBuildExtensionsPath64", ExtensionsPath, PropertyType.Reserved));
-			EvaluatedProperties.AddProperty (new BuildProperty ("MSBuildProjectDefaultTargets", DefaultTargets, PropertyType.Reserved));
-			EvaluatedProperties.AddProperty (new BuildProperty ("OS", OS, PropertyType.Environment));
+			evaluatedProperties.AddProperty (new BuildProperty ("MSBuildBinPath", toolsPath, PropertyType.Reserved));
+			evaluatedProperties.AddProperty (new BuildProperty ("MSBuildToolsPath", toolsPath, PropertyType.Reserved));
+			evaluatedProperties.AddProperty (new BuildProperty ("MSBuildToolsVersion", effective_tools_version, PropertyType.Reserved));
+			evaluatedProperties.AddProperty (new BuildProperty ("MSBuildExtensionsPath", ExtensionsPath, PropertyType.Reserved));
+			evaluatedProperties.AddProperty (new BuildProperty ("MSBuildExtensionsPath32", ExtensionsPath, PropertyType.Reserved));
+			evaluatedProperties.AddProperty (new BuildProperty ("MSBuildExtensionsPath64", ExtensionsPath, PropertyType.Reserved));
+			evaluatedProperties.AddProperty (new BuildProperty ("MSBuildProjectDefaultTargets", DefaultTargets, PropertyType.Reserved));
+			evaluatedProperties.AddProperty (new BuildProperty ("OS", OS, PropertyType.Environment));
 
 			// FIXME: make some internal method that will work like GetDirectoryName but output String.Empty on null/String.Empty
 			string projectDir;
@@ -957,7 +963,7 @@ namespace Microsoft.Build.BuildEngine {
 			else
 				projectDir = Path.GetDirectoryName (FullFileName);
 
-			EvaluatedProperties.AddProperty (new BuildProperty ("MSBuildProjectDirectory", projectDir, PropertyType.Reserved));
+			evaluatedProperties.AddProperty (new BuildProperty ("MSBuildProjectDirectory", projectDir, PropertyType.Reserved));
 		}
 
 		// precedence:
@@ -1396,10 +1402,6 @@ namespace Microsoft.Build.BuildEngine {
 			get; internal set;
 		}
 
-		internal List<string> BuiltTargetKeys {
-			get { return builtTargetKeys; }
-		}
-
 		internal Dictionary <string, BuildItemGroup> LastItemGroupContaining {
 			get { return last_item_group_containing; }
 		}
diff --git a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Target.cs b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Target.cs
index 158ffde..beb7c58 100644
--- a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Target.cs
+++ b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Target.cs
@@ -165,7 +165,6 @@ namespace Microsoft.Build.BuildEngine {
 			}
 
 			project.ParentEngine.BuiltTargetsOutputByName [built_targets_key] = (ITaskItem[]) Outputs.Clone ();
-			project.BuiltTargetKeys.Add (built_targets_key);
 
 			return result;
 		}
diff --git a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Token.cs b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Token.cs
index c794c2b..5c38a96 100644
--- a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Token.cs
+++ b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Token.cs
@@ -38,10 +38,11 @@ namespace Microsoft.Build.BuildEngine {
 		string		tokenValue;
 		TokenType	tokenType;
 	
-		public Token (string tokenValue, TokenType tokenType)
+		public Token (string tokenValue, TokenType tokenType, int position)
 		{
 			this.tokenValue = tokenValue;
 			this.tokenType = tokenType;
+			this.Position = position + 1;
 		}
 		
 		public string Value {
@@ -52,9 +53,42 @@ namespace Microsoft.Build.BuildEngine {
 			get { return tokenType; }
 		}
 
+		// this is 1-based
+		public int Position {
+			get; private set;
+		}
+
+		public static string TypeAsString (TokenType tokenType)
+		{
+			switch (tokenType) {
+				case TokenType.Item:return "@";
+				case TokenType.Property:return "$";
+				case TokenType.Metadata:return "%";
+				case TokenType.Transform:return "->";
+				case TokenType.Less:return "<";
+				case TokenType.Greater:return ">";
+				case TokenType.LessOrEqual:return "<=";
+				case TokenType.GreaterOrEqual:return ">=";
+				case TokenType.Equal:return "=";
+				case TokenType.NotEqual:return "!=";
+				case TokenType.LeftParen:return "(";
+				case TokenType.RightParen:return ")";
+				case TokenType.Dot:return ".";
+				case TokenType.Comma:return ",";
+				case TokenType.Not:return "!";
+				case TokenType.And:return "and";
+				case TokenType.Or:return "or";
+				case TokenType.Apostrophe:return "'";
+				default: return tokenType.ToString ();
+			}
+		}
+
 		public override string ToString ()
 		{
-			return String.Format ("Token (Type: {0} -> Value: {1})", tokenType, tokenValue);
+			if (tokenType == TokenType.EOF || tokenType == TokenType.BOF)
+				return String.Format ("{0} at character position {1}", tokenType.ToString (), Position);
+
+			return String.Format ("\"{0}\" at character position {1}", tokenValue, Position);
 		}
 	}
 	
diff --git a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.Engine.dll.sources b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.Engine.dll.sources
index 923aa2f..a7bb42b 100644
--- a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.Engine.dll.sources
+++ b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.Engine.dll.sources
@@ -2,6 +2,7 @@
 ../../build/common/MonoTODOAttribute.cs
 Assembly/AssemblyInfo.cs
 ../Microsoft.Build.Framework/Mono.XBuild.Framework/AssemblyLoadInfo.cs
+../Microsoft.Build.Tasks/Microsoft.Build.Tasks/Utilities.cs
 ../Microsoft.Build.Utilities/Mono.XBuild.Utilities/ReservedNameUtils.cs
 ../../tools/xbuild/SolutionParser.cs
 Microsoft.Build.BuildEngine/BatchingImplBase.cs
diff --git a/mcs/class/Microsoft.Build.Engine/Test/Microsoft.Build.BuildEngine/ChangeLog b/mcs/class/Microsoft.Build.Engine/Test/Microsoft.Build.BuildEngine/ChangeLog
index 629ac8e..5df5853 100644
--- a/mcs/class/Microsoft.Build.Engine/Test/Microsoft.Build.BuildEngine/ChangeLog
+++ b/mcs/class/Microsoft.Build.Engine/Test/Microsoft.Build.BuildEngine/ChangeLog
@@ -1,3 +1,12 @@
+2011-01-11  Ankit Jain  <radical at corewars.org>
+
+	[xbuild] Copy metadata from Project items to target outputs.
+
+	Copy metadata from Project items to the corresponding target
+	outputs in MSBuild task.
+
+	Fix the corresponding test also.
+
 2010-08-04  Ankit Jain  <radical at corewars.org>
 
 	* Test/*/EngineTest.cs (TestGlobalPropertiesImport*): New tests.
diff --git a/mcs/class/Microsoft.Build.Engine/Test/Microsoft.Build.BuildEngine/EngineTest.cs b/mcs/class/Microsoft.Build.Engine/Test/Microsoft.Build.BuildEngine/EngineTest.cs
index acec0e9..d46108b 100755
--- a/mcs/class/Microsoft.Build.Engine/Test/Microsoft.Build.BuildEngine/EngineTest.cs
+++ b/mcs/class/Microsoft.Build.Engine/Test/Microsoft.Build.BuildEngine/EngineTest.cs
@@ -862,9 +862,10 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
 
 			CreateAndCheckGlobalPropertiesTest (mainProject, firstProject, secondProject,
 				null, null,
-				4, 3, 12,
+				4, 3, 13,
 				new string [] {
-					"foofoo;barbar;foofoo;barbar: F.Unique: true",
+					"foofoo;barbar: F.Unique: true",
+					"foofoo;barbar: F.Unique: false",
 					"from_second: F.Unique: unique",
 					"foofoo;foofoo;from_second: F.Prop1: false",
 					"barbar;barbar: F.Prop1: bar_false",
diff --git a/mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/ChangeLog b/mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/ChangeLog
index fe424f5..b61593f 100644
--- a/mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/ChangeLog
+++ b/mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/ChangeLog
@@ -1,3 +1,38 @@
+2011-01-11  Ankit Jain  <radical at corewars.org>
+
+	[xbuild] Copy metadata from Project items to target outputs.
+
+	Copy metadata from Project items to the corresponding target
+	outputs in MSBuild task.
+
+	Fix the corresponding test also.
+
+2011-01-11  Ankit Jain  <radical at corewars.org>
+
+	[xbuild] Fix bug #663180, second part.
+
+	Fix the way RunningOnMac is detected (use `uname`=="Darwin"),
+	thanks to Michael Hutchinson. And use
+	"/Library/Frameworks/Mono.framework/External/pkgconfig" as a
+	search path for pkg-config files on MacOSX.
+
+2011-01-10  Ankit Jain  <radical at corewars.org>
+
+	[xbuild] Sync *PcFileCache.cs changes from monodevelop.
+
+2011-01-05  Ankit Jain  <radical at corewars.org>
+
+	[xbuild] Fix bug #662355.
+
+	Support reference aliases in Csc task.
+
+2010-11-10  Ankit Jain  <radical at corewars.org>
+
+	[xbuild] Emit /platform: for *mcs
+
+	Emit /platform:foo for the *mcs. Based on patch from
+	technomage1972 <dellis1972 at googlemail.com> .
+
 2010-09-16  Ankit Jain  <radical at corewars.org>
 
 	[xbuild] Use files referenced by resx for dependency check.
diff --git a/mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/Csc.cs b/mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/Csc.cs
index 18f3096..9dc504d 100644
--- a/mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/Csc.cs
+++ b/mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/Csc.cs
@@ -88,10 +88,17 @@ namespace Microsoft.Build.Tasks {
 				commandLine.AppendSwitch ("/nostdlib");
 
 			//platform
+			commandLine.AppendSwitchIfNotNull ("/platform:", Platform);
 			//
 			if (References != null)
-				foreach (ITaskItem item in References)
-					commandLine.AppendSwitchIfNotNull ("/reference:", item.ItemSpec);
+				foreach (ITaskItem item in References) {
+					string aliases = item.GetMetadata ("Aliases") ?? String.Empty;
+					aliases = aliases.Trim ();
+					if (aliases.Length > 0)
+						commandLine.AppendSwitchIfNotNull ("/reference:" + aliases + "=", item.ItemSpec);
+					else
+						commandLine.AppendSwitchIfNotNull ("/reference:", item.ItemSpec);
+				}
 
 			if (ResponseFiles != null)
 				foreach (ITaskItem item in ResponseFiles) 
diff --git a/mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/LibraryPcFileCache.cs b/mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/LibraryPcFileCache.cs
index 3eaa214..1a2a2fb 100644
--- a/mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/LibraryPcFileCache.cs
+++ b/mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/LibraryPcFileCache.cs
@@ -30,6 +30,10 @@ using System.Xml;
 using System.IO;
 using System.Collections.Generic;
 
+// IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT
+// This code is shared with xbuild, which has to build with .NET 2.0,
+// so no c# 3.0 syntax is allowed here.
+
 namespace Mono.PkgConfig
 {
 	internal class LibraryPcFileCache: PcFileCache<LibraryPackageInfo>
diff --git a/mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/MSBuild.cs b/mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/MSBuild.cs
index 6409867..0359b96 100644
--- a/mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/MSBuild.cs
+++ b/mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/MSBuild.cs
@@ -66,7 +66,6 @@ namespace Microsoft.Build.Tasks {
 			Hashtable outputs;
 		
 			var global_properties = SplitPropertiesToDictionary ();
-			Dictionary<string, ITaskItem> projectsByFileName = new Dictionary<string, ITaskItem> ();
 
 			Log.LogMessage (MessageImportance.Low, "Global Properties:");
 			if (global_properties != null)
@@ -104,11 +103,6 @@ namespace Microsoft.Build.Tasks {
 				}
 
 				if (result) {
-					// Metadata from the first item for the project file is copied
-					ITaskItem first_item;
-					if (!projectsByFileName.TryGetValue (filename, out first_item))
-						projectsByFileName [filename] = first_item = project;
-
 					foreach (DictionaryEntry de in outputs) {
 						ITaskItem [] array = (ITaskItem []) de.Value;
 						foreach (ITaskItem item in array) {
@@ -117,7 +111,7 @@ namespace Microsoft.Build.Tasks {
 
 							// copy the metadata from original @project to here
 							// CopyMetadataTo does _not_ overwrite
-							first_item.CopyMetadataTo (new_item);
+							project.CopyMetadataTo (new_item);
 
 							outputItems.Add (new_item);
 
diff --git a/mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/PcFileCache.cs b/mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/PcFileCache.cs
index f77a5ae..8069d65 100644
--- a/mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/PcFileCache.cs
+++ b/mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/PcFileCache.cs
@@ -30,6 +30,10 @@ using System.Xml;
 using System.IO;
 using System.Collections.Generic;
 
+// IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT
+// This code is shared with xbuild, which has to build with .NET 2.0,
+// so no c# 3.0 syntax is allowed here.
+
 namespace Mono.PkgConfig
 {
 	internal interface IPcFileCacheContext<TP> where TP:PackageInfo, new()
@@ -60,6 +64,7 @@ namespace Mono.PkgConfig
 	internal abstract class PcFileCache<TP> where TP:PackageInfo, new()
 	{
 		const string CACHE_VERSION = "2";
+		const string MacOSXExternalPkgConfigDir = "/Library/Frameworks/Mono.framework/External/pkgconfig";
 		
 		Dictionary<string, TP> infos = new Dictionary<string, TP> ();
 		Dictionary<string, List<TP>> filesByFolder = new Dictionary<string, List<TP>> ();
@@ -155,7 +160,7 @@ namespace Mono.PkgConfig
 			try {
 				info = ParsePackageInfo (file);
 			} catch (Exception ex) {
-				ctx.ReportError ("Error while parsing .pc file", ex);
+				ctx.ReportError ("Error while parsing .pc file: " + file, ex);
 				info = new TP ();
 			}
 			
@@ -263,6 +268,8 @@ namespace Mono.PkgConfig
 					tw.WriteAttributeString ("version", pinfo.Version);
 				if (!string.IsNullOrEmpty (pinfo.Description))
 					tw.WriteAttributeString ("description", pinfo.Description);
+				if (!string.IsNullOrEmpty (pinfo.Requires))
+					tw.WriteAttributeString ("requires", pinfo.Requires);
 				if (pinfo.CustomData != null) {
 					foreach (KeyValuePair<string,string> cd in pinfo.CustomData)
 						tw.WriteAttributeString (cd.Key, cd.Value);
@@ -289,6 +296,7 @@ namespace Mono.PkgConfig
 					case "name": pinfo.Name = tr.Value; break;
 					case "version": pinfo.Version = tr.Value; break;
 					case "description": pinfo.Description = tr.Value; break;
+					case "requires": pinfo.Requires = tr.Value; break;
 					default: pinfo.SetData (tr.LocalName, tr.Value); break;
 				}
 			} while (tr.MoveToNextAttribute ());
@@ -329,8 +337,10 @@ namespace Mono.PkgConfig
 			if (!file.HasErrors) {
 				pinfo.Version = file.Version;
 				pinfo.Description = file.Description;
+				pinfo.Requires = file.Requires;
 				ParsePackageInfo (file, pinfo);
-				ctx.StoreCustomData (file, pinfo);
+				if (pinfo.IsValidPackage)
+					ctx.StoreCustomData (file, pinfo);
 			}
 			return pinfo;
 		}
@@ -342,7 +352,12 @@ namespace Mono.PkgConfig
 		IEnumerable<string> GetDefaultPaths ()
 		{
 			if (defaultPaths == null) {
-				string pkgConfigPath = Environment.GetEnvironmentVariable ("PKG_CONFIG_PATH");
+				// For mac osx, look in the 'External' dir on macosx,
+				// see bug #663180
+				string pkgConfigPath = String.Format ("{0}:{1}",
+						Microsoft.Build.Tasks.Utilities.RunningOnMac ? MacOSXExternalPkgConfigDir : String.Empty,
+						Environment.GetEnvironmentVariable ("PKG_CONFIG_PATH") ?? String.Empty);
+
 				string pkgConfigDir = Environment.GetEnvironmentVariable ("PKG_CONFIG_LIBDIR");
 				defaultPaths = GetPkgconfigPaths (null, pkgConfigPath, pkgConfigDir);
 			}
@@ -386,10 +401,11 @@ namespace Mono.PkgConfig
 					yield return dir;
 			} else if (systemPrefixes != null) {
 				string[] suffixes = new string [] {
+					//FIXME: is this the correct order? share should be before lib but not sure about others.
+					Path.Combine ("share", "pkgconfig"),
 					Path.Combine ("lib", "pkgconfig"),
 					Path.Combine ("lib64", "pkgconfig"),
 					Path.Combine ("libdata", "pkgconfig"),
-					Path.Combine ("share", "pkgconfig"),
 				};
 				foreach (string prefix in systemPrefixes)
 					foreach (string suffix in suffixes)
@@ -437,12 +453,47 @@ namespace Mono.PkgConfig
 	{
 		Dictionary<string,string> variables = new Dictionary<string, string> ();
 		
-		public string FilePath { get; set; }
-		public string Name { get; set; }
-		public string Description { get; set; }
-		public string Version { get; set; }
-		public string Libs { get; set; }
-		public bool HasErrors { get; set; }
+		string description;
+		public string Description {
+			get { return description; }
+			set { description = value; }
+		}
+		
+		string filePath;
+		public string FilePath {
+			get { return filePath; }
+			set { filePath = value; }
+		}
+		
+		bool hasErrors;
+		public bool HasErrors {
+			get { return hasErrors; }
+			set { hasErrors = value; }
+		}
+		
+		string libs;
+		public string Libs {
+			get { return libs; }
+			set { libs = value; }
+		}
+		
+		string name;
+		public string Name {
+			get { return name; }
+			set { name = value; }
+		}
+		
+		string version;
+		public string Version {
+			get { return version; }
+			set { version = value; }
+		}
+		
+		string requires;
+		public string Requires {
+			get { return requires; }
+			set { requires = value; }
+		}
 		
 		public string GetVariable (string varName)
 		{
@@ -477,6 +528,7 @@ namespace Mono.PkgConfig
 							case "Description": Description = value; break;
 							case "Version": Version = value; break;
 							case "Libs": Libs = value; break;
+							case "Requires": Requires = value; break;
 						}
 					}
 				}
@@ -515,7 +567,7 @@ namespace Mono.PkgConfig
 				} else
 					last = i++;
 				
-				if (i < value.Length - 1)
+				if (i < value.Length)
 					i = value.IndexOf ("${", i);
 			}
 			sb.Append (value.Substring (last, value.Length - last));
@@ -526,12 +578,31 @@ namespace Mono.PkgConfig
 	internal class PackageInfo
 	{
 		Dictionary<string,string> customData;
-
-		public string Name { get; set; }
+		DateTime lastWriteTime;
+		
+		string name;
+		public string Name {
+			get { return name; }
+			set { name = value; }
+		}
+		
+		string version;
+		public string Version {
+			get { return version; }
+			set { version = value; }
+		}
 		
-		public string Version { get; set; }
+		string description;
+		public string Description {
+			get { return description; }
+			set { description = value; }
+		}
 		
-		public string Description { get; set; }
+		string requires;
+		public string Requires {
+			get { return requires; }
+			set { requires = value; }
+		}
 		
 		public string GetData (string name)
 		{
@@ -559,7 +630,10 @@ namespace Mono.PkgConfig
 			get { return customData; }
 		}
 		
-		internal DateTime LastWriteTime { get; set; }
+		internal DateTime LastWriteTime {
+			get { return lastWriteTime; }
+			set { lastWriteTime = value; }
+		}
 		
 		internal bool HasCustomData {
 			get { return customData != null && customData.Count > 0; }
diff --git a/mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/Utilities.cs b/mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/Utilities.cs
index 5a0c56e..1738d9e 100644
--- a/mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/Utilities.cs
+++ b/mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/Utilities.cs
@@ -29,19 +29,41 @@
 
 using System;
 using System.IO;
+using System.Runtime.InteropServices;
 
 namespace Microsoft.Build.Tasks {
 	internal static class Utilities {
 
-		public static bool RunningOnWindows {
-			get {
-				// Code from Mono.GetOptions/Options.cs
-				// check for non-Unix platforms - see FAQ for more details
-				// http://www.mono-project.com/FAQ:_Technical#How_to_detect_the_execution_platform_.3F
-				int platform = (int) Environment.OSVersion.Platform;
-				return ((platform != 4) && (platform != 128));
-			}
+		public readonly static bool RunningOnMac;
+		public readonly static bool RunningOnWindows;
+
+		static Utilities ()
+		{
+			RunningOnWindows = Path.DirectorySeparatorChar == '\\';
+			RunningOnMac = !RunningOnWindows && IsRunningOnMac ();
+		}
 
+		[DllImport ("libc")]
+		static extern int uname (IntPtr buf);
+
+		//From Managed.Windows.Forms/XplatUI
+		static bool IsRunningOnMac ()
+		{
+			IntPtr buf = IntPtr.Zero;
+			try {
+				buf = System.Runtime.InteropServices.Marshal.AllocHGlobal (8192);
+				// This is a hacktastic way of getting sysname from uname ()
+				if (uname (buf) == 0) {
+					string os = System.Runtime.InteropServices.Marshal.PtrToStringAnsi (buf);
+					if (os == "Darwin")
+						return true;
+				}
+			} catch {
+			} finally {
+				if (buf != IntPtr.Zero)
+					System.Runtime.InteropServices.Marshal.FreeHGlobal (buf);
+			}
+			return false;
 		}
 
 		internal static string FromMSBuildPath (string relPath)
diff --git a/mcs/class/Microsoft.Build.Tasks/Test/Microsoft.Build.Tasks/ChangeLog b/mcs/class/Microsoft.Build.Tasks/Test/Microsoft.Build.Tasks/ChangeLog
index a68f2d5..68acb50 100644
--- a/mcs/class/Microsoft.Build.Tasks/Test/Microsoft.Build.Tasks/ChangeLog
+++ b/mcs/class/Microsoft.Build.Tasks/Test/Microsoft.Build.Tasks/ChangeLog
@@ -1,3 +1,7 @@
+2011-01-05  Ankit Jain  <radical at corewars.org>
+
+	[xbuild] Fix failing test in msbuild.tasks .
+
 2010-07-09  Ankit Jain  <jankit at novell.com>
 
 	* MessageTest (TestExecution): Additional messages with 'low'
diff --git a/mcs/class/Microsoft.Build.Tasks/Test/Microsoft.Build.Tasks/ChangeLog b/mcs/class/Microsoft.Build.Tasks/Test/Microsoft.Build.Tasks/ChangeLog.old
similarity index 100%
copy from mcs/class/Microsoft.Build.Tasks/Test/Microsoft.Build.Tasks/ChangeLog
copy to mcs/class/Microsoft.Build.Tasks/Test/Microsoft.Build.Tasks/ChangeLog.old
diff --git a/mcs/class/Microsoft.Build.Tasks/Test/Microsoft.Build.Tasks/CscTest.cs b/mcs/class/Microsoft.Build.Tasks/Test/Microsoft.Build.Tasks/CscTest.cs
index 46019d7..f7505b2 100644
--- a/mcs/class/Microsoft.Build.Tasks/Test/Microsoft.Build.Tasks/CscTest.cs
+++ b/mcs/class/Microsoft.Build.Tasks/Test/Microsoft.Build.Tasks/CscTest.cs
@@ -341,6 +341,11 @@ namespace MonoTests.Microsoft.Build.Tasks {
 			Assert.AreEqual (String.Empty, c2.ToString (), "A2");
 		}
 
+		// Behavior for this intentionally differs from .net .
+		// msbuild doesn't quote the define args, but we do
+		// that to make it easier to copy/paste and execute
+		// compiler command lines, helps in debugging.
+		[Category ("NotDotNet")]
 		[Test]
 		public void TestDefineConstants ()
 		{
@@ -352,7 +357,7 @@ namespace MonoTests.Microsoft.Build.Tasks {
 			csc.ARFC (c1);
 			csc.ACLC (c2);
 
-			Assert.AreEqual ("/define:A;B;CD;Foo;Bar", c1.ToString (), "A1");
+			Assert.AreEqual ("/define:\"A;B;CD;Foo;Bar\"", c1.ToString (), "A1");
 			Assert.AreEqual (String.Empty, c2.ToString (), "A2");
 		}
 
diff --git a/mcs/class/Microsoft.CSharp/Microsoft.CSharp.RuntimeBinder/Binder.cs b/mcs/class/Microsoft.CSharp/Microsoft.CSharp.RuntimeBinder/Binder.cs
index b8ce85b..c8d5687 100644
--- a/mcs/class/Microsoft.CSharp/Microsoft.CSharp.RuntimeBinder/Binder.cs
+++ b/mcs/class/Microsoft.CSharp/Microsoft.CSharp.RuntimeBinder/Binder.cs
@@ -80,12 +80,12 @@ namespace Microsoft.CSharp.RuntimeBinder
 		
 		public static CallSiteBinder SetIndex (CSharpBinderFlags flags, Type context, IEnumerable<CSharpArgumentInfo> argumentInfo)
 		{
-			return new CSharpSetIndexBinder (context, argumentInfo);
+			return new CSharpSetIndexBinder (flags, context, argumentInfo);
 		}
 		
 		public static CallSiteBinder SetMember (CSharpBinderFlags flags, string name, Type context, IEnumerable<CSharpArgumentInfo> argumentInfo)
 		{
-			return new CSharpSetMemberBinder (name, context, argumentInfo);
+			return new CSharpSetMemberBinder (flags, name, context, argumentInfo);
 		}
 		
 		public static CallSiteBinder UnaryOperation (CSharpBinderFlags flags, ExpressionType operation, Type context, IEnumerable<CSharpArgumentInfo> argumentInfo)
diff --git a/mcs/class/Microsoft.CSharp/Microsoft.CSharp.RuntimeBinder/CSharpBinaryOperationBinder.cs b/mcs/class/Microsoft.CSharp/Microsoft.CSharp.RuntimeBinder/CSharpBinaryOperationBinder.cs
index a59a09c..e06b722 100644
--- a/mcs/class/Microsoft.CSharp/Microsoft.CSharp.RuntimeBinder/CSharpBinaryOperationBinder.cs
+++ b/mcs/class/Microsoft.CSharp/Microsoft.CSharp.RuntimeBinder/CSharpBinaryOperationBinder.cs
@@ -139,7 +139,7 @@ namespace Microsoft.CSharp.RuntimeBinder
 			Compiler.Expression expr;
 
 			if (is_compound) {
-				var target_expr = ctx.CreateCompilerExpression (argumentInfo[0], target);
+				var target_expr = new Compiler.RuntimeValueExpression (target, ctx.ImportType (target.LimitType));
 				expr = new Compiler.CompoundAssign (oper, target_expr, right, left, Compiler.Location.Null);
 			} else {
 				expr = new Compiler.Binary (oper, left, right, Compiler.Location.Null);
diff --git a/mcs/class/Microsoft.CSharp/Microsoft.CSharp.RuntimeBinder/CSharpBinder.cs b/mcs/class/Microsoft.CSharp/Microsoft.CSharp.RuntimeBinder/CSharpBinder.cs
index db959c2..1dd5584 100644
--- a/mcs/class/Microsoft.CSharp/Microsoft.CSharp.RuntimeBinder/CSharpBinder.cs
+++ b/mcs/class/Microsoft.CSharp/Microsoft.CSharp.RuntimeBinder/CSharpBinder.cs
@@ -132,16 +132,24 @@ namespace Microsoft.CSharp.RuntimeBinder
 		static object compiler_initializer = new object ();
 		static object lock_object = new object ();
 
-		readonly Compiler.CompilerContext cc;
+		readonly Compiler.ModuleContainer module;
+		readonly Compiler.ReflectionImporter importer;
 
-		private DynamicContext (Compiler.CompilerContext cc)
+		private DynamicContext (Compiler.ModuleContainer module, Compiler.ReflectionImporter importer)
 		{
-			this.cc = cc;
+			this.module = module;
+			this.importer = importer;
 		}
 
 		public Compiler.CompilerContext CompilerContext {
 			get {
-				return cc;
+				return module.Compiler;
+			}
+		}
+
+		public Compiler.ModuleContainer Module {
+			get {
+				return module;
 			}
 		}
 
@@ -154,43 +162,51 @@ namespace Microsoft.CSharp.RuntimeBinder
 				if (dc != null)
 					return dc;
 
-				var importer = new Compiler.ReflectionMetaImporter () {
-					IgnorePrivateMembers = false
-				};
-
 				var reporter = new Compiler.Report (ErrorPrinter.Instance) {
 					WarningLevel = 0
 				};
 
-				var cc = new Compiler.CompilerContext (importer, reporter) {
+				var cc = new Compiler.CompilerContext (reporter) {
 					IsRuntimeBinder = true
 				};
 
-				IList<Compiler.PredefinedTypeSpec> core_types = null;
-				// HACK: To avoid re-initializing static TypeManager types, like string_type
-				if (!Compiler.RootContext.EvalMode) {
-					core_types = Compiler.TypeManager.InitCoreTypes ();
-				}
+				//IList<Compiler.PredefinedTypeSpec> core_types = null;
+				//// HACK: To avoid re-initializing static TypeManager types, like string_type
+				//if (!Compiler.RootContext.EvalMode) {
+				//    core_types = Compiler.TypeManager.InitCoreTypes ();
+				//}
+
+				//
+				// Any later loaded assemblies are handled internally by GetAssemblyDefinition
+				// domain.AssemblyLoad cannot be used as that would be too destructive as we
+				// would hold all loaded assemblies even if they can be never visited
+				//
+				// TODO: Remove this code and rely on GetAssemblyDefinition only
+				//
+				var module = new Compiler.ModuleContainer (cc);
+				var temp = new Compiler.AssemblyDefinitionDynamic (module, "dynamic");
+				module.SetDeclaringAssembly (temp);
 
-				importer.Initialize ();
+				// Import all currently loaded assemblies
+				var domain = AppDomain.CurrentDomain;
 
-				// I don't think dynamically loaded assemblies can be used as dynamic
-				// expression without static type to be loaded first
-				// AppDomain.CurrentDomain.AssemblyLoad += (sender, e) => { throw new NotImplementedException (); };
+				temp.Create (domain, System.Reflection.Emit.AssemblyBuilderAccess.Run);
+				var importer = new Compiler.ReflectionImporter (cc.BuildinTypes) {
+					IgnorePrivateMembers = false
+				};
 
-				// Import all currently loaded assemblies
-				var ns = cc.GlobalRootNamespace;
-				foreach (System.Reflection.Assembly a in AppDomain.CurrentDomain.GetAssemblies ()) {
-					ns.AddAssemblyReference (a);
-					importer.ImportAssembly (a, ns);
+				Compiler.RootContext.ToplevelTypes = module;
+
+				foreach (var a in AppDomain.CurrentDomain.GetAssemblies ()) {
+					importer.ImportAssembly (a, module.GlobalRootNamespace);
 				}
 
 				if (!Compiler.RootContext.EvalMode) {
-					Compiler.TypeManager.InitCoreTypes (cc, core_types);
-					Compiler.TypeManager.InitOptionalCoreTypes (cc);
+					cc.BuildinTypes.CheckDefinitions (module);
+					module.InitializePredefinedTypes ();
 				}
 
-				dc = new DynamicContext (cc);
+				dc = new DynamicContext (module, importer);
 			}
 
 			return dc;
@@ -201,18 +217,15 @@ namespace Microsoft.CSharp.RuntimeBinder
 		//
 		public Compiler.Expression CreateCompilerExpression (CSharpArgumentInfo info, DynamicMetaObject value)
 		{
-			if (value.Value == null) {
-				if (value.LimitType == typeof (object))
-					return new Compiler.NullLiteral (Compiler.Location.Null);
-
-				return Compiler.Constant.CreateConstantFromValue (ImportType (value.LimitType), null, Compiler.Location.Null);
-			}
-
 			//
 			// No type details provider, go with runtime type
 			//
-			if (info == null)
+			if (info == null) {
+				if (value.LimitType == typeof (object))
+					return new Compiler.NullLiteral (Compiler.Location.Null);
+
 				return new Compiler.RuntimeValueExpression (value, ImportType (value.RuntimeType));
+			}
 
 			//
 			// Value is known to be a type
@@ -220,6 +233,12 @@ namespace Microsoft.CSharp.RuntimeBinder
 			if ((info.Flags & CSharpArgumentInfoFlags.IsStaticType) != 0)
 				return new Compiler.TypeExpression (ImportType ((Type) value.Value), Compiler.Location.Null);
 
+			if (value.Value == null &&
+				(info.Flags & (CSharpArgumentInfoFlags.IsOut | CSharpArgumentInfoFlags.IsRef | CSharpArgumentInfoFlags.UseCompileTimeType)) == 0 &&
+				value.LimitType == typeof (object)) {
+				return new Compiler.NullLiteral (Compiler.Location.Null);
+			}
+
 			//
 			// Use compilation time type when type was known not to be dynamic during compilation
 			//
@@ -244,7 +263,7 @@ namespace Microsoft.CSharp.RuntimeBinder
 			foreach (var item in info) {
 				var expr = CreateCompilerExpression (item, args[pos++]);
 				if (item.IsNamed) {
-					res.Add (new Compiler.NamedArgument (item.Name, Compiler.Location.Null, expr));
+					res.Add (new Compiler.NamedArgument (item.Name, Compiler.Location.Null, expr, item.ArgumentModifier));
 				} else {
 					res.Add (new Compiler.Argument (expr, item.ArgumentModifier));
 				}
@@ -259,7 +278,7 @@ namespace Microsoft.CSharp.RuntimeBinder
 		public Compiler.TypeSpec ImportType (Type type)
 		{
 			lock (lock_object) {
-				return cc.MetaImporter.ImportType (type);
+				return importer.ImportType (type);
 			}
 		}
 	}
diff --git a/mcs/class/Microsoft.CSharp/Microsoft.CSharp.RuntimeBinder/CSharpInvokeMemberBinder.cs b/mcs/class/Microsoft.CSharp/Microsoft.CSharp.RuntimeBinder/CSharpInvokeMemberBinder.cs
index d6fe5d4..138e314 100644
--- a/mcs/class/Microsoft.CSharp/Microsoft.CSharp.RuntimeBinder/CSharpInvokeMemberBinder.cs
+++ b/mcs/class/Microsoft.CSharp/Microsoft.CSharp.RuntimeBinder/CSharpInvokeMemberBinder.cs
@@ -31,11 +31,104 @@ using System.Dynamic;
 using System.Collections.Generic;
 using System.Linq;
 using Compiler = Mono.CSharp;
+using SLE = System.Linq.Expressions;
 
 namespace Microsoft.CSharp.RuntimeBinder
 {
 	class CSharpInvokeMemberBinder : InvokeMemberBinder
 	{
+		//
+		// A custom runtime invocation is needed to deal with member invocation which
+		// is not real member invocation but invocation on invocalble member.
+		//
+		// An example:
+		// class C {
+		//		dynamic f;
+		//		void Foo ()
+		//		{
+		//			dynamic d = new C ();
+		//			d.f.M ();
+		//		}
+		//
+		// The runtime value of `f' can be a delegate in which case we are invoking result
+		// of member invocation, this is already handled by DoResolveDynamic but we need
+		// more runtime dependencies which require Microsoft.CSharp assembly reference or
+		// a lot of reflection calls
+		//
+		class Invocation : Compiler.Invocation
+		{
+			sealed class RuntimeDynamicInvocation : Compiler.ShimExpression
+			{
+				Invocation invoke;
+
+				public RuntimeDynamicInvocation (Invocation invoke, Compiler.Expression memberExpr)
+					: base (memberExpr)
+				{
+					this.invoke = invoke;
+				}
+
+				protected override Compiler.Expression DoResolve (Compiler.ResolveContext rc)
+				{
+					type = expr.Type;
+					eclass = Compiler.ExprClass.Value;
+					return this;
+				}
+
+				//
+				// Creates an invoke call on invocable expression
+				//
+				public override System.Linq.Expressions.Expression MakeExpression (Compiler.BuilderContext ctx)
+				{
+					var invokeBinder = invoke.invokeBinder;
+					var binder = Binder.Invoke (invokeBinder.flags, invokeBinder.callingContext, invokeBinder.argumentInfo);
+
+					var args = invoke.Arguments;
+					var args_expr = new SLE.Expression[invokeBinder.argumentInfo.Count];
+
+					var types = new Type [args_expr.Length + 2];
+
+					// Required by MakeDynamic
+					types[0] = typeof (System.Runtime.CompilerServices.CallSite);
+					types[1] = expr.Type.GetMetaInfo ();
+
+					args_expr[0] = expr.MakeExpression (ctx);
+
+					for (int i = 0; i < args.Count; ++i) {
+						args_expr[i + 1] = args[i].Expr.MakeExpression (ctx);
+
+						int type_index = i + 2;
+						types[type_index] = args[i].Type.GetMetaInfo ();
+						if (args[i].IsByRef)
+							types[type_index] = types[type_index].MakeByRefType ();
+					}
+
+					// Return type goes last
+					bool void_result = (invokeBinder.flags & CSharpBinderFlags.ResultDiscarded) != 0;
+					types[types.Length - 1] = void_result ? typeof (void) : invokeBinder.ReturnType;
+
+					//
+					// Much easier to use Expression.Dynamic cannot be used because it ignores ByRef arguments
+					// and it always generates either Func or Action and any value type argument is lost
+					//
+					Type delegateType = SLE.Expression.GetDelegateType (types);
+					return SLE.Expression.MakeDynamic (delegateType, binder, args_expr);
+				}
+			}
+
+			readonly CSharpInvokeMemberBinder invokeBinder;
+
+			public Invocation (Compiler.Expression expr, Compiler.Arguments arguments, CSharpInvokeMemberBinder invokeBinder)
+				: base (expr, arguments)
+			{
+				this.invokeBinder = invokeBinder;
+			}
+
+			protected override Compiler.Expression DoResolveDynamic (Compiler.ResolveContext ec, Compiler.Expression memberExpr)
+			{
+				return new RuntimeDynamicInvocation (this, memberExpr).Resolve (ec);
+			}
+		}
+
 		readonly CSharpBinderFlags flags;
 		IList<CSharpArgumentInfo> argumentInfo;
 		IList<Type> typeArguments;
@@ -81,7 +174,7 @@ namespace Microsoft.CSharp.RuntimeBinder
 			}
 
 			expr = new Compiler.MemberAccess (expr, Name, t_args, Compiler.Location.Null);
-			expr = new Compiler.Invocation (expr, c_args);
+			expr = new Invocation (expr, c_args, this);
 
 			if ((flags & CSharpBinderFlags.ResultDiscarded) == 0)
 				expr = new Compiler.Cast (new Compiler.TypeExpression (ctx.ImportType (ReturnType), Compiler.Location.Null), expr, Compiler.Location.Null);
diff --git a/mcs/class/Microsoft.CSharp/Microsoft.CSharp.RuntimeBinder/CSharpIsEventBinder.cs b/mcs/class/Microsoft.CSharp/Microsoft.CSharp.RuntimeBinder/CSharpIsEventBinder.cs
index 58ab942..3c46c0f 100644
--- a/mcs/class/Microsoft.CSharp/Microsoft.CSharp.RuntimeBinder/CSharpIsEventBinder.cs
+++ b/mcs/class/Microsoft.CSharp/Microsoft.CSharp.RuntimeBinder/CSharpIsEventBinder.cs
@@ -52,7 +52,8 @@ namespace Microsoft.CSharp.RuntimeBinder
 			var queried_type = ctx.ImportType (target.LimitType);
 			var rc = new Compiler.ResolveContext (new RuntimeBinderContext (ctx, context_type), 0);
 
-			var expr = Compiler.Expression.MemberLookup (rc, context_type, queried_type, name, 0, false, Compiler.Location.Null);
+			var expr = Compiler.Expression.MemberLookup (rc, context_type, queried_type,
+				name, 0, Compiler.Expression.MemberLookupRestrictions.ExactArity, Compiler.Location.Null);
 
 			var binder = new CSharpBinder (
 				this, new Compiler.BoolConstant (expr is Compiler.EventExpr, Compiler.Location.Null), null);
diff --git a/mcs/class/Microsoft.CSharp/Microsoft.CSharp.RuntimeBinder/CSharpSetIndexBinder.cs b/mcs/class/Microsoft.CSharp/Microsoft.CSharp.RuntimeBinder/CSharpSetIndexBinder.cs
index a02ef82..ad2f51a 100644
--- a/mcs/class/Microsoft.CSharp/Microsoft.CSharp.RuntimeBinder/CSharpSetIndexBinder.cs
+++ b/mcs/class/Microsoft.CSharp/Microsoft.CSharp.RuntimeBinder/CSharpSetIndexBinder.cs
@@ -36,12 +36,14 @@ namespace Microsoft.CSharp.RuntimeBinder
 {
 	class CSharpSetIndexBinder : SetIndexBinder
 	{
+		readonly CSharpBinderFlags flags;
 		IList<CSharpArgumentInfo> argumentInfo;
 		Type callingContext;
 
-		public CSharpSetIndexBinder (Type callingContext, IEnumerable<CSharpArgumentInfo> argumentInfo)
+		public CSharpSetIndexBinder (CSharpBinderFlags flags, Type callingContext, IEnumerable<CSharpArgumentInfo> argumentInfo)
 			: base (CSharpArgumentInfo.CreateCallInfo (argumentInfo, 2))
 		{
+			this.flags = flags;
 			this.callingContext = callingContext;
 			this.argumentInfo = argumentInfo.ToReadOnly ();
 		}
@@ -61,9 +63,18 @@ namespace Microsoft.CSharp.RuntimeBinder
 			expr = new Compiler.ElementAccess (expr, args, Compiler.Location.Null);
 
 			var source = ctx.CreateCompilerExpression (argumentInfo [indexes.Length + 1], value);
-			expr = new Compiler.SimpleAssign (expr, source);
+
+			// Same conversion as in SetMemberBinder
+			if ((flags & CSharpBinderFlags.ValueFromCompoundAssignment) != 0) {
+				expr = new Compiler.RuntimeExplicitAssign (expr, source);
+			} else {
+				expr = new Compiler.SimpleAssign (expr, source);
+			}
 			expr = new Compiler.Cast (new Compiler.TypeExpression (ctx.ImportType (ReturnType), Compiler.Location.Null), expr, Compiler.Location.Null);
 
+			if ((flags & CSharpBinderFlags.CheckedContext) != 0)
+				expr = new Compiler.CheckedExpr (expr, Compiler.Location.Null);
+
 			var binder = new CSharpBinder (this, expr, errorSuggestion);
 			binder.AddRestrictions (target);
 			binder.AddRestrictions (value);
diff --git a/mcs/class/Microsoft.CSharp/Microsoft.CSharp.RuntimeBinder/CSharpSetMemberBinder.cs b/mcs/class/Microsoft.CSharp/Microsoft.CSharp.RuntimeBinder/CSharpSetMemberBinder.cs
index 5add41b..aaf2b25 100644
--- a/mcs/class/Microsoft.CSharp/Microsoft.CSharp.RuntimeBinder/CSharpSetMemberBinder.cs
+++ b/mcs/class/Microsoft.CSharp/Microsoft.CSharp.RuntimeBinder/CSharpSetMemberBinder.cs
@@ -36,12 +36,14 @@ namespace Microsoft.CSharp.RuntimeBinder
 {
 	class CSharpSetMemberBinder : SetMemberBinder
 	{
+		readonly CSharpBinderFlags flags;
 		IList<CSharpArgumentInfo> argumentInfo;
 		Type callingContext;
-		
-		public CSharpSetMemberBinder (string name, Type callingContext, IEnumerable<CSharpArgumentInfo> argumentInfo)
+
+		public CSharpSetMemberBinder (CSharpBinderFlags flags, string name, Type callingContext, IEnumerable<CSharpArgumentInfo> argumentInfo)
 			: base (name, false)
 		{
+			this.flags = flags;
 			this.callingContext = callingContext;
 			this.argumentInfo = argumentInfo.ToReadOnly ();
 		}
@@ -54,9 +56,22 @@ namespace Microsoft.CSharp.RuntimeBinder
 
 			// Field assignment
 			expr = new Compiler.MemberAccess (expr, Name);
-			expr = new Compiler.SimpleAssign (expr, source);
+
+			// Compound assignment under dynamic context does not convert result
+			// expression but when setting member type we need to do explicit
+			// conversion to ensure type match between member type and dynamic
+			// expression type
+			if ((flags & CSharpBinderFlags.ValueFromCompoundAssignment) != 0) {
+				expr = new Compiler.RuntimeExplicitAssign (expr, source);
+			} else {
+				expr = new Compiler.SimpleAssign (expr, source);
+			}
+
 			expr = new Compiler.Cast (new Compiler.TypeExpression (ctx.ImportType (ReturnType), Compiler.Location.Null), expr, Compiler.Location.Null);
 
+			if ((flags & CSharpBinderFlags.CheckedContext) != 0)
+				expr = new Compiler.CheckedExpr (expr, Compiler.Location.Null);
+
 			var binder = new CSharpBinder (this, expr, errorSuggestion);
 			binder.AddRestrictions (target);
 			binder.AddRestrictions (value);
diff --git a/mcs/class/Microsoft.CSharp/Microsoft.CSharp.RuntimeBinder/CSharpUnaryOperationBinder.cs b/mcs/class/Microsoft.CSharp/Microsoft.CSharp.RuntimeBinder/CSharpUnaryOperationBinder.cs
index 38dbf38..f625f5f 100644
--- a/mcs/class/Microsoft.CSharp/Microsoft.CSharp.RuntimeBinder/CSharpUnaryOperationBinder.cs
+++ b/mcs/class/Microsoft.CSharp/Microsoft.CSharp.RuntimeBinder/CSharpUnaryOperationBinder.cs
@@ -76,6 +76,8 @@ namespace Microsoft.CSharp.RuntimeBinder
 
 			if (Operation == ExpressionType.IsTrue) {
 				expr = new Compiler.BooleanExpression (expr);
+			} else if (Operation == ExpressionType.IsFalse) {
+				expr = new Compiler.BooleanExpressionFalse (expr);
 			} else {
 				if (Operation == ExpressionType.Increment)
 					expr = new Compiler.UnaryMutator (Compiler.UnaryMutator.Mode.PreIncrement, expr, Compiler.Location.Null);
diff --git a/mcs/class/Microsoft.CSharp/Microsoft.CSharp.RuntimeBinder/ChangeLog b/mcs/class/Microsoft.CSharp/Microsoft.CSharp.RuntimeBinder/ChangeLog
index 30f7390..fd77b26 100644
--- a/mcs/class/Microsoft.CSharp/Microsoft.CSharp.RuntimeBinder/ChangeLog
+++ b/mcs/class/Microsoft.CSharp/Microsoft.CSharp.RuntimeBinder/ChangeLog
@@ -1,7 +1,94 @@
+2010-12-07  Marek Safar  <marek.safar at gmail.com>
+
+	Add IKVM.Reflection support
+
+2010-12-02  Marek Safar  <marek.safar at gmail.com>
+
+	Update setting of buildin internal types
+
+2010-12-02  Marek Safar  <marek.safar at gmail.com>
+
+	Removed InitOptionalCoreTypes
+
+2010-12-02  Marek Safar  <marek.safar at gmail.com>
+
+	Clean-up module indirections
+
+2010-11-30  Marek Safar  <marek.safar at gmail.com>
+
+	Move core predefined types into a new class
+
+2010-11-30  Marek Safar  <marek.safar at gmail.com>
+
+	Add initial reflection dependant code
+
+2010-11-30  Marek Safar  <marek.safar at gmail.com>
+
+	Move metadata importer out of compiler context finally
+
+2010-11-21  Marek Safar  <marek.safar at gmail.com>
+
+	Improve handling of netmodules. Fixes #504085
+
+2010-11-19  Marek Safar  <marek.safar at gmail.com>
+
+	Add AssemblySpec to handle all assembly attributes in same way.
+
+2010-11-15  Marek Safar  <marek.safar at gmail.com>
+
+	Remove old accessibility check routine
+
+2010-11-10  Marek Safar  <marek.safar at gmail.com>
+
+	False user-operator has priority over logical not user-operator
+
+2010-11-10  Marek Safar  <marek.safar at gmail.com>
+
+	Reorder logic in DMO type conversion
+
+2010-11-09  Marek Safar  <marek.safar at gmail.com>
+
+	Logical binary operarions with dynamic arguments have to be
+	unfolded
+
+2010-11-03  Marek Safar  <marek.safar at gmail.com>
+
+	Pass checked context to compound member access setters
+
+2010-11-02  Marek Safar  <marek.safar at gmail.com>
+
+	Implements indirect delegates invocation via dynamic member
+	dispatch
+
+2010-10-18  Marek Safar  <marek.safar at gmail.com>
+
+	Pass modifier when used with named argument
+
+2010-10-12  Marek Safar  <marek.safar at gmail.com>
+
+	Do not create a constant null value for runtime types.
+
+2010-10-01  Marek Safar  <marek.safar at gmail.com>
+
+	Implement compound assignment over null value
+
+2010-10-01  Marek Safar  <marek.safar at gmail.com>
+
+	Dynamic compound assignment breaks standard C# result conversion
+	rules
+
+2010-09-30  Marek Safar  <marek.safar at gmail.com>
+
+	Null constant cannot be used for ref/out variables
+
 2010-09-16  Marek Safar  <marek.safar at gmail.com>
 
 	[639407] Clean up more static stuff to fix repl instances.
 
+2010-09-10  Marek Safar  <marek.safar at gmail.com>
+
+	Update to the latest dmcs
+
 2010-08-26  Marek Safar  <marek.safar at gmail.com>
 
 	Always build type from compiler type when flagged
diff --git a/mcs/class/Microsoft.CSharp/Microsoft.CSharp.RuntimeBinder/RuntimeBinderContext.cs b/mcs/class/Microsoft.CSharp/Microsoft.CSharp.RuntimeBinder/RuntimeBinderContext.cs
index afdb7f1..1dddbb4 100644
--- a/mcs/class/Microsoft.CSharp/Microsoft.CSharp.RuntimeBinder/RuntimeBinderContext.cs
+++ b/mcs/class/Microsoft.CSharp/Microsoft.CSharp.RuntimeBinder/RuntimeBinderContext.cs
@@ -34,12 +34,12 @@ namespace Microsoft.CSharp.RuntimeBinder
 {
 	class RuntimeBinderContext : Compiler.IMemberContext
 	{
-		readonly Compiler.CompilerContext ctx;
+		readonly Compiler.ModuleContainer module;
 		readonly Compiler.TypeSpec currentType;
 
 		public RuntimeBinderContext (DynamicContext ctx, Compiler.TypeSpec currentType)
 		{
-			this.ctx = ctx.CompilerContext;
+			this.module = ctx.Module;
 			this.currentType = currentType;
 		}
 
@@ -55,8 +55,7 @@ namespace Microsoft.CSharp.RuntimeBinder
 
 		public Compiler.MemberCore CurrentMemberDefinition {
 			get {
-				// For operators and methods
-				return new Compiler.ModuleContainer (currentType.Assembly);
+				return null;
 			}
 		}
 
@@ -81,7 +80,15 @@ namespace Microsoft.CSharp.RuntimeBinder
 		}
 
 		public bool IsStatic {
-			get { throw new NotImplementedException (); }
+			get {
+				throw new NotImplementedException ();
+			}
+		}
+
+		public Compiler.ModuleContainer Module {
+			get {
+				return module;
+			}
 		}
 
 		public string GetSignatureForError ()
@@ -107,7 +114,7 @@ namespace Microsoft.CSharp.RuntimeBinder
 		}
 
 		public Compiler.CompilerContext Compiler {
-			get { return ctx; }
+			get { return module.Compiler; }
 		}
 
 		#endregion
diff --git a/mcs/class/Mono.CSharp/ChangeLog b/mcs/class/Mono.CSharp/ChangeLog
index d10db6c..beaeb34 100644
--- a/mcs/class/Mono.CSharp/ChangeLog
+++ b/mcs/class/Mono.CSharp/ChangeLog
@@ -1,3 +1,7 @@
+2010-12-20  Marek Safar  <marek.safar at gmail.com>
+
+	Add missing files to Mono.CSharp.csproj
+
 2010-05-08  Daniel Nauck <dna at mono-project.de>
 
  * Mono.CSharp.csproj: add double quotes around path directives
diff --git a/mcs/class/Mono.CSharp/ChangeLog b/mcs/class/Mono.CSharp/ChangeLog.old
similarity index 100%
copy from mcs/class/Mono.CSharp/ChangeLog
copy to mcs/class/Mono.CSharp/ChangeLog.old
diff --git a/mcs/class/Mono.CSharp/Mono.CSharp.dll.sources b/mcs/class/Mono.CSharp/Mono.CSharp.dll.sources
index 9d7f536..ae2876d 100644
--- a/mcs/class/Mono.CSharp/Mono.CSharp.dll.sources
+++ b/mcs/class/Mono.CSharp/Mono.CSharp.dll.sources
@@ -1,6 +1,7 @@
 ../../mcs/anonymous.cs
 ../../mcs/argument.cs
 ../../mcs/assign.cs
+../../mcs/assembly.cs
 ../../mcs/attribute.cs
 ../../mcs/cs-tokenizer.cs
 ../../mcs/cfold.cs
@@ -38,6 +39,7 @@
 ../../mcs/parameter.cs
 ../../mcs/pending.cs
 ../../mcs/property.cs
+../../mcs/reflection.cs
 ../../mcs/report.cs
 ../../mcs/rootcontext.cs
 ../../mcs/roottypes.cs
diff --git a/mcs/class/Mono.Cairo/ChangeLog b/mcs/class/Mono.Cairo/ChangeLog
index abebe2f..c9335de 100644
--- a/mcs/class/Mono.Cairo/ChangeLog
+++ b/mcs/class/Mono.Cairo/ChangeLog
@@ -1,3 +1,20 @@
+2010-12-04  Miguel de Icaza  <miguel at gnome.org>
+
+	Add part3 of the Google GCI 2010 contributions
+
+2010-12-01  Miguel de Icaza  <miguel at gnome.org>
+
+	Documentation for Mono.Cairo contributed by knairda from Google
+	GCI 2010
+
+2010-11-28  Miguel de Icaza  <miguel at gnome.org>
+
+	Awesome doc contributions from Adrian Kummerlaender
+
+2010-11-28  Miguel de Icaza  <miguel at gnome.org>
+
+	Awesome doc contributions from Adrian Kummerlaender
+
 2009-02-12 Jordi Mas i Hernandez <jordimash at gmail.com>
 
 	* Mono.Cairo/ScaledFont.cs: Fixes Dispose signature
diff --git a/mcs/class/Mono.Cairo/ChangeLog b/mcs/class/Mono.Cairo/ChangeLog.old
similarity index 100%
copy from mcs/class/Mono.Cairo/ChangeLog
copy to mcs/class/Mono.Cairo/ChangeLog.old
diff --git a/mcs/class/Mono.Cairo/Documentation/en/Cairo/CairoAPI.xml b/mcs/class/Mono.Cairo/Documentation/en/Cairo/CairoAPI.xml
index 0b31afe..d470e29 100644
--- a/mcs/class/Mono.Cairo/Documentation/en/Cairo/CairoAPI.xml
+++ b/mcs/class/Mono.Cairo/Documentation/en/Cairo/CairoAPI.xml
@@ -10,8 +10,8 @@
   </Base>
   <Interfaces />
   <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
+    <summary>Provides information about the CairoAPI.</summary>
+    <remarks />
   </Docs>
   <Members>
     <Member MemberName="Version">
@@ -25,9 +25,9 @@
         <ReturnType>System.Int32</ReturnType>
       </ReturnValue>
       <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
+        <summary>Returns the current version number of CairoAPI</summary>
+        <value>a integer representing the current version</value>
+        <remarks />
       </Docs>
     </Member>
     <Member MemberName="VersionString">
@@ -41,10 +41,10 @@
         <ReturnType>System.String</ReturnType>
       </ReturnValue>
       <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
+        <summary>Returns the current version string of CairoAPI</summary>
+        <value>the current version string</value>
+        <remarks>Returns the version of the cairo library as a human-readable string of the form "X.Y.Z".</remarks>
       </Docs>
     </Member>
   </Members>
-</Type>
+</Type>
\ No newline at end of file
diff --git a/mcs/class/Mono.Cairo/Documentation/en/Cairo/Context.xml b/mcs/class/Mono.Cairo/Documentation/en/Cairo/Context.xml
index 39e0d12..2586366 100644
--- a/mcs/class/Mono.Cairo/Documentation/en/Cairo/Context.xml
+++ b/mcs/class/Mono.Cairo/Documentation/en/Cairo/Context.xml
@@ -199,9 +199,9 @@ Note that the <paramref name="surface" /> can be a <see cref="T:Cairo.Surface" /
         <Parameter Name="path" Type="Cairo.Path" />
       </Parameters>
       <Docs>
-        <param name="path">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
+        <param name="path">path to be appended</param>
+        <summary>Appends the path <paramref name="path" /> onto the current path.</summary>
+        <remarks>This Function appends the path onto the current path. The path may be either the return value from one of <see cref="P:Cairo.Context.CopyPath" /> or <see cref="P:Cairo.Context.CopyPathFlat" /> or it may be constructed manually.</remarks>
       </Docs>
     </Member>
     <Member MemberName="Arc">
@@ -454,7 +454,7 @@ gr.ClosePath ();
         <ReturnType>Cairo.FontFace</ReturnType>
       </ReturnValue>
       <Docs>
-        <summary>To be added.</summary>
+        <summary />
         <value>To be added.</value>
         <remarks>To be added.</remarks>
         <since version="Mono-1.2.5" />
@@ -496,9 +496,9 @@ gr.ClosePath ();
       </ReturnValue>
       <Parameters />
       <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
+        <summary>Creates a copy of the current path and returns it as <see cref="T:Cairo.Path" />.</summary>
+        <returns>Copy of current path</returns>
+        <remarks>This function creates a copy of the current path and returns it to the user as <see cref="T:Cairo.Path" />.</remarks>
       </Docs>
     </Member>
     <Member MemberName="CopyPathFlat">
@@ -513,9 +513,9 @@ gr.ClosePath ();
       </ReturnValue>
       <Parameters />
       <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
+        <summary>Gets a flattened copy of the current path and returns it to the user as a <see cref="T:Cairo.Path" />.</summary>
+        <returns>Flattened copy of current path.</returns>
+        <remarks>This function is like <see cref="P:Cairo.Context.CopyPath" /> except that any curves in the path will be approximated with piecewise-linear approximations, (accurate to within the current tolerance value). That is, the result is guaranteed to not have any elements of type <see cref="P:Cairo.Context.CurveTo" /> which will instead be replaced by a series of <see cref="P:Cairo.Context.LineTo" /> elements.</remarks>
       </Docs>
     </Member>
     <Member MemberName="CurrentPoint">
@@ -597,10 +597,10 @@ gr.ClosePath ();
         <Parameter Name="y" Type="System.Double&" RefType="ref" />
       </Parameters>
       <Docs>
-        <param name="x">To be added.</param>
-        <param name="y">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
+        <param name="x">X value of coordinate</param>
+        <param name="y">Y value of coordinate</param>
+        <summary>Transform a coordinate from device space to user space by multiplying the given point by the inverse of the current transformation matrix (CTM).</summary>
+        <remarks>None</remarks>
         <since version="Mono-1.2.5" />
       </Docs>
       <AssemblyInfo>
@@ -619,10 +619,10 @@ gr.ClosePath ();
         <Parameter Name="dy" Type="System.Double&" RefType="ref" />
       </Parameters>
       <Docs>
-        <param name="dx">To be added.</param>
-        <param name="dy">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
+        <param name="dx">X value of the coordinate</param>
+        <param name="dy">Y value of the coordinate</param>
+        <summary>Transform a distance vector from device space to user space. </summary>
+        <remarks>This function is similar to <see cref="P:Cairo.Context.DeviceToUser" /> except that the translation components of the inverse CTM will be ignored when transforming (dx,dy).</remarks>
         <since version="Mono-1.2.5" />
       </Docs>
       <AssemblyInfo>
@@ -640,8 +640,8 @@ gr.ClosePath ();
         <Parameter Name="disposing" Type="System.Boolean" />
       </Parameters>
       <Docs>
-        <param name="disposing">To be added.</param>
-        <summary>To be added.</summary>
+        <param name="disposing">When false, returning and "Cairo.Context: called from finalization thread, programmer is missing a call to Dispose" is written</param>
+        <summary>Decreases the reference count on cr by one. If the result is zero, then cr and all associated resources are freed.</summary>
         <remarks>To be added.</remarks>
       </Docs>
       <AssemblyInfo>
@@ -837,8 +837,8 @@ gr.ClosePath ();
       </Parameters>
       <Docs>
         <param name="scale">size of the font.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
+        <summary>Sets the current font matrix to a scale by a factor of size, replacing any font matrix previously set. This results in a font size of size user space units. (More precisely, this matrix will result in the font's em-square being a size by size square in user space.)</summary>
+        <remarks>If text is drawn without a call to <see cref="S:Cairo.Context.FontSetSize" />, the default font size is 10.0.</remarks>
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -882,10 +882,10 @@ gr.ClosePath ();
         <Parameter Name="glyphs" Type="Cairo.Glyph[]" />
       </Parameters>
       <Docs>
-        <param name="glyphs">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
+        <param name="glyphs">an array of <see cref="T:Cairo.Glyph" /></param>
+        <summary>Gets the extents for an array of glyphs.</summary>
+        <returns>The extents of an array of glyphs as <see cref="P:Cairo.Context.TextExtends" />.</returns>
+        <remarks>Note that whitespace glyphs do not contribute to the size of the rectangle.</remarks>
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -902,9 +902,9 @@ gr.ClosePath ();
         <Parameter Name="glyphs" Type="Cairo.Glyph[]" />
       </Parameters>
       <Docs>
-        <param name="glyphs">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
+        <param name="glyphs">array of glyphs to show</param>
+        <summary>Adds closed paths for the glyphs to the current path.</summary>
+        <remarks>None</remarks>
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -944,9 +944,9 @@ gr.ClosePath ();
         <ReturnType>Cairo.Surface</ReturnType>
       </ReturnValue>
       <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
+        <summary>Gets the current destination surface for the context.</summary>
+        <value>the target surface</value>
+        <remarks>Gets the current destination surface for the context. This is either the original target surface or the target surface for the current group as started by the most recent call to <see cref="P:Cairo.Context.PushGroup" />.</remarks>
         <since version="cairo 1.2" />
       </Docs>
       <AssemblyInfo>
@@ -979,8 +979,8 @@ gr.ClosePath ();
       </ReturnValue>
       <Parameters />
       <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
+        <summary>Resets the current transformation matrix.</summary>
+        <remarks>Resets the current transformation matrix (CTM) by setting it equal to the identity matrix. That is, the user-space and device-space axes will be aligned and one user-space unit will transform to one device-space unit.</remarks>
         <since version="Mono-1.2.5" />
       </Docs>
       <AssemblyInfo>
@@ -999,11 +999,11 @@ gr.ClosePath ();
         <Parameter Name="y" Type="System.Double" />
       </Parameters>
       <Docs>
-        <param name="x">To be added.</param>
-        <param name="y">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
+        <param name="x">X coordinate of the point to test</param>
+        <param name="y">Y coordinate of the point to test</param>
+        <summary>Tests whether the given point is inside the area that would be affected by a <see cref="P:Cairo.Context.Fill" /> operation given the current path and filling parameters.</summary>
+        <returns>True if the point is inside, or false if outside.</returns>
+        <remarks>Surface dimensions and clipping are not taken into account.</remarks>
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -1021,11 +1021,11 @@ gr.ClosePath ();
         <Parameter Name="y" Type="System.Double" />
       </Parameters>
       <Docs>
-        <param name="x">To be added.</param>
-        <param name="y">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
+        <param name="x">X coordinate of the point to test</param>
+        <param name="y">Y coordinate of the point to test</param>
+        <summary>Tests whether the given point is inside the area that would be affected by a <see cref="P:Cairo.Context.Stroke" /> operation given the current path and stroking parameters.</summary>
+        <returns>True if the point is inside, or false if outside.</returns>
+        <remarks>Surface dimensions and clipping are not taken into account.</remarks>
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -1203,8 +1203,8 @@ gr.ClosePath ();
       </Parameters>
       <Docs>
         <param name="surface">a Surface</param>
-        <param name="surface_x">To be added.</param>
-        <param name="surface_y">To be added.</param>
+        <param name="surface_x">X coordinate at which to place the origin of <paramref name="surface" /></param>
+        <param name="surface_y">Y coordinate at which to place the origin of <paramref name="surface" /></param>
         <summary>A drawing operator that paints the current source using the alpha channel of <paramref name="surface" /> as a mask.</summary>
         <remarks>Opaque areas of surface are painted with the source, transparent areas are not painted.</remarks>
       </Docs>
@@ -1311,8 +1311,10 @@ gr.ClosePath ();
       </ReturnValue>
       <Parameters />
       <Docs>
-        <summary>.</summary>
-        <remarks>To be added.</remarks>
+        <summary>Begins a new sub-path.</summary>
+        <remarks>Note that the existing path is not affected. After this call there will be no current point.
+In many cases, this call is not needed since new sub-paths are frequently started with <see cref="P:Cairo.Context.MoveTo" />.
+A call to <see cref="P:Cairo.Context.NewSubPath" /> is particularly useful when beginning a new sub-path with one of the <see cref="P:Cairo.Context.Arc" /> calls. This makes things easier as it is no longer necessary to manually compute the arc's initial coordinates for a call to <see cref="P:Cairo.Context.MoveTo" />.</remarks>
         <since version="cairo 1.2" />
       </Docs>
       <AssemblyInfo>
@@ -1397,9 +1399,9 @@ gr.ClosePath ();
       </ReturnValue>
       <Parameters />
       <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
+        <summary>Terminates the redirection begun by a call to <see cref="P:Cairo.Context.PushGroup" /> and returns a new pattern containing the results of all drawing operations performed to the group.</summary>
+        <returns>A newly created (surface) pattern containing the results of all drawing operations performed to the group. The caller owns the returned object and should call cairo_pattern_destroy() when finished with it.</returns>
+        <remarks>The <see cref="P:Cairo.Context.PopGroup" /> function calls <see cref="P:Cairo.Context.Restore" />, (balancing a call to <see cref="P:Cairo.Context.Save" /> by the PopGroup function), so that any changes to the graphics state will not be visible outside the group.</remarks>
         <since version="cairo 1.2" />
       </Docs>
       <AssemblyInfo>
@@ -1415,8 +1417,8 @@ gr.ClosePath ();
       </ReturnValue>
       <Parameters />
       <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
+        <summary>Terminates the redirection begun by a call to <see cref="P:Cairo.Context.PushGroup" /> and installs the resulting pattern as the source pattern in the given cairo context.</summary>
+        <remarks>The <see cref="P:Cairo.Context.PopGroup" /> function calls <see cref="P:Cairo.Context.Restore" />, (balancing a call to <see cref="P:Cairo.Context.Save" /> by the PopGroup function), so that any changes to the graphics state will not be visible outside the group.</remarks>
         <since version="cairo 1.2" />
       </Docs>
       <AssemblyInfo>
@@ -1432,8 +1434,11 @@ gr.ClosePath ();
       </ReturnValue>
       <Parameters />
       <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
+        <summary>Temporarily redirects drawing to an intermediate surface known as a group.</summary>
+        <remarks>Temporarily redirects drawing to an intermediate surface known as a group. The redirection lasts until the group is completed by a call to <see cref="P:Cairo.Context.PopGroup" /> or <see cref="P:Cairo.Context.PopGroupToSource" />. These calls provide the result of any drawing to the group as a pattern, (either as an explicit object, or set as the source pattern).
+This group functionality can be convenient for performing intermediate compositing. One common use of a group is to render objects as opaque within the group, (so that they occlude each other), and then blend the result with translucence onto the destination.
+Groups can be nested arbitrarily deep by making balanced calls to <see cref="P:Cairo.Context.PushGroup" />/<see cref="P:Cairo.Context.PopGroup" />. Each call pushes/pops the new target group onto/from a stack.
+The <see cref="P:Cairo.Context.PushGroup" /> function calls <see cref="P:Cairo.Context.Save" /> so that any changes to the graphics state will not be visible outside the group, (the <see cref="P:Cairo.Context.PopGroup" /> functions call <see cref="P:Cairo.Context.Restore" />).</remarks>
         <since version="cairo 1.2" />
       </Docs>
       <AssemblyInfo>
@@ -1451,9 +1456,10 @@ gr.ClosePath ();
         <Parameter Name="content" Type="Cairo.Content" />
       </Parameters>
       <Docs>
-        <param name="content">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
+        <param name="content">a <see cref="T:Cairo.Content" /> indicating the type of group that will be created</param>
+        <summary>Temporarily redirects drawing to an intermediate surface known as a group. The group will have a content type of content.</summary>
+        <remarks>Temporarily redirects drawing to an intermediate surface known as a group. The redirection lasts until the group is completed by a call to <see cref="P:Cairo.Context.PopGroup" /> or <see cref="P:Cairo.Context.PopGroupToSource" />. These calls provide the result of any drawing to the group as a pattern, (either as an explicit object, or set as the source pattern).
+The group will have a content type of content. The ability to control this content type is the only distinction between this function and  <see cref="P:Cairo.Context.PushGroup" /> which you should see for a more detailed description of group rendering.</remarks>
         <since version="cairo 1.2" />
       </Docs>
       <AssemblyInfo>
@@ -1542,9 +1548,9 @@ gr.ClosePath ();
         <ReturnType>System.UInt32</ReturnType>
       </ReturnValue>
       <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
+        <summary>Returns the current reference count.</summary>
+        <value>the current reference count</value>
+        <remarks> If the object is a nil object, 0 will be returned.</remarks>
       </Docs>
     </Member>
     <Member MemberName="RelCurveTo">
@@ -1798,9 +1804,9 @@ Note that code meant to be reusable should not call Cairo.Context.ResetClip() as
         <ReturnType>Cairo.ScaledFont</ReturnType>
       </ReturnValue>
       <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
+        <summary>Gets or sets the current font face, font matrix, and font options.</summary>
+        <value>the ScaledFont</value>
+        <remarks>Returns the current scaled font.</remarks>
       </Docs>
     </Member>
     <Member MemberName="SelectFontFace">
@@ -1876,9 +1882,9 @@ Note that code meant to be reusable should not call Cairo.Context.ResetClip() as
         <Parameter Name="source" Type="Cairo.Surface" />
       </Parameters>
       <Docs>
-        <param name="source">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
+        <param name="source">a surface to be used to set the source pattern</param>
+        <summary>This is a convenience function for creating a pattern from surface and setting it as the source in cr with <see cref="P:Cairo.Context.GetSource" />.</summary>
+        <remarks />
         <since version="Mono-1.2.5" />
       </Docs>
       <AssemblyInfo>
@@ -1898,11 +1904,11 @@ Note that code meant to be reusable should not call Cairo.Context.ResetClip() as
         <Parameter Name="y" Type="System.Double" />
       </Parameters>
       <Docs>
-        <param name="source">To be added.</param>
-        <param name="x">To be added.</param>
-        <param name="y">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
+        <param name="source">a surface to be used to set the source pattern</param>
+        <param name="x">User-space X coordinate for surface origin</param>
+        <param name="y">User-space Y coordinate for surface origin</param>
+        <summary>This is a convenience function for creating a pattern from surface and setting it as the source in cr with <see cref="P:Cairo.Context.GetSource" />.</summary>
+        <remarks>The x and y parameters give the user-space coordinate at which the surface origin should appear. (The surface origin is its upper-left corner before any transformation has been applied.) The x and y patterns are negated and then set as translation values in the pattern matrix.</remarks>
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -1992,9 +1998,9 @@ Note that code meant to be reusable should not call Cairo.Context.ResetClip() as
         <Parameter Name="glyphs" Type="Cairo.Glyph[]" />
       </Parameters>
       <Docs>
-        <param name="glyphs">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
+        <param name="glyphs">array of glyphs to show</param>
+        <summary>A drawing operator that generates the shape from an array of glyphs, rendered according to the current font face, font size (font matrix), and font options.</summary>
+        <remarks />
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -2012,10 +2018,10 @@ Note that code meant to be reusable should not call Cairo.Context.ResetClip() as
         <Parameter Name="glyphs" Type="Cairo.Glyph[]" />
       </Parameters>
       <Docs>
-        <param name="matrix">To be added.</param>
-        <param name="glyphs">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
+        <param name="matrix">Obsolete</param>
+        <param name="glyphs">array of glyphs to show</param>
+        <summary>A drawing operator that generates the shape from an array of glyphs, rendered according to the current font face, font size (font matrix), and font options.</summary>
+        <remarks />
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -2223,9 +2229,9 @@ into account.</remarks>
         <Parameter Name="str" Type="System.String" />
       </Parameters>
       <Docs>
-        <param name="str">To be added</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
+        <param name="str">a String</param>
+        <summary>Adds closed paths for text to the current path. </summary>
+        <remarks>Adds closed paths for text to the current path. The generated path if filled, achieves an effect similar to that of <see cref="P:Cairo.Context.ShowText" />.</remarks>
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -2374,10 +2380,10 @@ image.Destroy ();
         <Parameter Name="y" Type="System.Double&" RefType="ref" />
       </Parameters>
       <Docs>
-        <param name="x">To be added.</param>
-        <param name="y">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
+        <param name="x">X value of coordinate</param>
+        <param name="y">Y value of coordinate</param>
+        <summary>Transform a coordinate from user space to device space by multiplying the given point by the current transformation matrix.</summary>
+        <remarks />
         <since version="Mono-1.2.5" />
       </Docs>
       <AssemblyInfo>
@@ -2396,10 +2402,10 @@ image.Destroy ();
         <Parameter Name="dy" Type="System.Double&" RefType="ref" />
       </Parameters>
       <Docs>
-        <param name="dx">To be added.</param>
-        <param name="dy">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
+        <param name="dx">X component of a distance vector</param>
+        <param name="dy">Y component of a distance vector</param>
+        <summary>Transform a distance vector from user space to device space.</summary>
+        <remarks> This function is similar to <see cref="P:Cairo.Context.UserToDevice" /> except that the translation components of the CTM will be ignored when transforming (dx,dy).</remarks>
         <since version="Mono-1.2.5" />
       </Docs>
       <AssemblyInfo>
@@ -2408,4 +2414,4 @@ image.Destroy ();
       </AssemblyInfo>
     </Member>
   </Members>
-</Type>
+</Type>
\ No newline at end of file
diff --git a/mcs/class/Mono.Cairo/Documentation/en/Cairo/DirectFBSurface.xml b/mcs/class/Mono.Cairo/Documentation/en/Cairo/DirectFBSurface.xml
index d7d71ad..cdd11af 100644
--- a/mcs/class/Mono.Cairo/Documentation/en/Cairo/DirectFBSurface.xml
+++ b/mcs/class/Mono.Cairo/Documentation/en/Cairo/DirectFBSurface.xml
@@ -10,8 +10,8 @@
   </Base>
   <Interfaces />
   <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
+    <summary>A DirectFBSurface</summary>
+    <remarks />
   </Docs>
   <Members>
     <Member MemberName=".ctor">
@@ -33,4 +33,4 @@
       </Docs>
     </Member>
   </Members>
-</Type>
+</Type>
\ No newline at end of file
diff --git a/mcs/class/Mono.Cairo/Documentation/en/Cairo/Filter.xml b/mcs/class/Mono.Cairo/Documentation/en/Cairo/Filter.xml
index 44ca4bd..a139f31 100644
--- a/mcs/class/Mono.Cairo/Documentation/en/Cairo/Filter.xml
+++ b/mcs/class/Mono.Cairo/Documentation/en/Cairo/Filter.xml
@@ -20,7 +20,7 @@
         <ReturnType>Cairo.Filter</ReturnType>
       </ReturnValue>
       <Docs>
-        <summary>To be added.</summary>
+        <summary />
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -34,7 +34,7 @@
         <ReturnType>Cairo.Filter</ReturnType>
       </ReturnValue>
       <Docs>
-        <summary>To be added.</summary>
+        <summary />
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -48,7 +48,7 @@
         <ReturnType>Cairo.Filter</ReturnType>
       </ReturnValue>
       <Docs>
-        <summary>To be added.</summary>
+        <summary />
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -62,7 +62,7 @@
         <ReturnType>Cairo.Filter</ReturnType>
       </ReturnValue>
       <Docs>
-        <summary>To be added.</summary>
+        <summary />
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -76,7 +76,7 @@
         <ReturnType>Cairo.Filter</ReturnType>
       </ReturnValue>
       <Docs>
-        <summary>To be added.</summary>
+        <summary />
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -90,7 +90,7 @@
         <ReturnType>Cairo.Filter</ReturnType>
       </ReturnValue>
       <Docs>
-        <summary>To be added.</summary>
+        <summary />
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -98,4 +98,4 @@
       </AssemblyInfo>
     </Member>
   </Members>
-</Type>
+</Type>
\ No newline at end of file
diff --git a/mcs/class/Mono.Cairo/Documentation/en/Cairo/FontFace.xml b/mcs/class/Mono.Cairo/Documentation/en/Cairo/FontFace.xml
index 62976e3..896e891 100644
--- a/mcs/class/Mono.Cairo/Documentation/en/Cairo/FontFace.xml
+++ b/mcs/class/Mono.Cairo/Documentation/en/Cairo/FontFace.xml
@@ -14,8 +14,8 @@
     </Interface>
   </Interfaces>
   <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
+    <summary>A FontFace represents a font at a particular weight, slant, and other characteristics but no size or transformation.</summary>
+    <remarks />
   </Docs>
   <Members>
     <Member MemberName=".ctor">
@@ -29,9 +29,10 @@
         <Parameter Name="handle" Type="System.IntPtr" />
       </Parameters>
       <Docs>
-        <param name="handle">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
+        <param name="handle">The handle as an <see cref="t:System.IntPtr"/></param>
+        <summary>The FontFace constructor</summary>
+        <remarks>
+        </remarks>
       </Docs>
     </Member>
     <Member MemberName="Dispose">
@@ -48,9 +49,10 @@
         <Parameter Name="disposing" Type="System.Boolean" />
       </Parameters>
       <Docs>
-        <param name="disposing">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
+        <param name="disposing">
+        </param>
+        <summary>Frees FontFace and all other associated resources</summary>
+        <remarks>This method should be called when the FontFace is not needed anymore.</remarks>
       </Docs>
     </Member>
     <Member MemberName="Finalize">
@@ -65,8 +67,8 @@
       </ReturnValue>
       <Parameters />
       <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
+        <summary>Disposes the FontFace</summary>
+        <remarks>Normally the programmer should do that himself</remarks>
       </Docs>
     </Member>
     <Member MemberName="FontType">
@@ -80,9 +82,10 @@
         <ReturnType>Cairo.FontType</ReturnType>
       </ReturnValue>
       <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
+        <summary>The <see cref="T:Cairo.FontType" /> of the FontFace</summary>
+        <value>The <see cref="T:Cairo.FontType" /></value>
+        <remarks>
+        </remarks>
       </Docs>
     </Member>
     <Member MemberName="Handle">
@@ -96,9 +99,10 @@
         <ReturnType>System.IntPtr</ReturnType>
       </ReturnValue>
       <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
+        <summary>The handle of the FontFace</summary>
+        <value>The handle as <see cref="T:System.IntPtr" /></value>
+        <remarks>
+        </remarks>
       </Docs>
     </Member>
     <Member MemberName="ReferenceCount">
@@ -112,9 +116,10 @@
         <ReturnType>System.UInt32</ReturnType>
       </ReturnValue>
       <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
+        <summary>Returns the current reference count of <see cref="T:Cairo.FontFace" /></summary>
+        <value>The current reference count as <see cref="T:System.UInt32" /></value>
+        <remarks>
+        </remarks>
       </Docs>
     </Member>
     <Member MemberName="Status">
@@ -128,9 +133,10 @@
         <ReturnType>Cairo.Status</ReturnType>
       </ReturnValue>
       <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
+        <summary>Checks whether an error has previously occurred for this FontFace</summary>
+        <value>A <see cref="T:Cairo.Status" /> representing the status of the FontFace</value>
+        <remarks>
+        </remarks>
       </Docs>
     </Member>
     <Member MemberName="System.IDisposable.Dispose">
@@ -145,9 +151,10 @@
       </ReturnValue>
       <Parameters />
       <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
+        <summary>Calls <see cref="P:Cairo.FontFace.Dispose" /> with disposing = true</summary>
+        <remarks>
+        </remarks>
       </Docs>
     </Member>
   </Members>
-</Type>
+</Type>
\ No newline at end of file
diff --git a/mcs/class/Mono.Cairo/Documentation/en/Cairo/FontOptions.xml b/mcs/class/Mono.Cairo/Documentation/en/Cairo/FontOptions.xml
index cc1591c..d74f640 100644
--- a/mcs/class/Mono.Cairo/Documentation/en/Cairo/FontOptions.xml
+++ b/mcs/class/Mono.Cairo/Documentation/en/Cairo/FontOptions.xml
@@ -14,7 +14,7 @@
     </Interface>
   </Interfaces>
   <Docs>
-    <summary>How a font should be rendered</summary>
+    <summary>The FontOptions Class defines how a font should be rendered</summary>
     <remarks>
     </remarks>
   </Docs>
@@ -115,10 +115,10 @@
         <Parameter Name="other" Type="System.Object" />
       </Parameters>
       <Docs>
-        <param name="other">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
+        <param name="other">The other object</param>
+        <summary>Compares this FontOptions object with another one for equality.</summary>
+        <returns>True when equal, in all other cases false.</returns>
+        <remarks />
       </Docs>
     </Member>
     <Member MemberName="Finalize">
@@ -133,8 +133,8 @@
       </ReturnValue>
       <Parameters />
       <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
+        <summary>Disposes the FontOptions object</summary>
+        <remarks />
       </Docs>
     </Member>
     <Member MemberName="GetHashCode">
@@ -149,9 +149,9 @@
       </ReturnValue>
       <Parameters />
       <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
+        <summary>Compute a hash for the FontOptions object</summary>
+        <returns>the hash value for the FontOptions object.</returns>
+        <remarks />
       </Docs>
     </Member>
     <Member MemberName="Handle">
@@ -301,4 +301,4 @@
       </AssemblyInfo>
     </Member>
   </Members>
-</Type>
+</Type>
\ No newline at end of file
diff --git a/mcs/class/Mono.Cairo/Documentation/en/Cairo/FontSlant.xml b/mcs/class/Mono.Cairo/Documentation/en/Cairo/FontSlant.xml
index c0276d3..21a3ae9 100644
--- a/mcs/class/Mono.Cairo/Documentation/en/Cairo/FontSlant.xml
+++ b/mcs/class/Mono.Cairo/Documentation/en/Cairo/FontSlant.xml
@@ -10,7 +10,7 @@
   </Base>
   <Docs>
     <summary>Defines the possible slants on fonts.</summary>
-    <remarks>To be added.</remarks>
+    <remarks />
   </Docs>
   <Members>
     <Member MemberName="Italic">
@@ -56,4 +56,4 @@
       </AssemblyInfo>
     </Member>
   </Members>
-</Type>
+</Type>
\ No newline at end of file
diff --git a/mcs/class/Mono.Cairo/Documentation/en/Cairo/FontWeight.xml b/mcs/class/Mono.Cairo/Documentation/en/Cairo/FontWeight.xml
index 92a2c6d..617e714 100644
--- a/mcs/class/Mono.Cairo/Documentation/en/Cairo/FontWeight.xml
+++ b/mcs/class/Mono.Cairo/Documentation/en/Cairo/FontWeight.xml
@@ -9,8 +9,8 @@
     <BaseTypeName>System.Enum</BaseTypeName>
   </Base>
   <Docs>
-    <summary>Defines the wieght of the font (normal, bold).</summary>
-    <remarks>To be added.</remarks>
+    <summary>Defines the weight of the font (normal, bold).</summary>
+    <remarks />
   </Docs>
   <Members>
     <Member MemberName="Bold">
@@ -42,4 +42,4 @@
       </AssemblyInfo>
     </Member>
   </Members>
-</Type>
+</Type>
\ No newline at end of file
diff --git a/mcs/class/Mono.Cairo/Documentation/en/Cairo/Format.xml b/mcs/class/Mono.Cairo/Documentation/en/Cairo/Format.xml
index 22f062a..25173fb 100644
--- a/mcs/class/Mono.Cairo/Documentation/en/Cairo/Format.xml
+++ b/mcs/class/Mono.Cairo/Documentation/en/Cairo/Format.xml
@@ -10,7 +10,7 @@
   </Base>
   <Docs>
     <summary>Used to identify the memory format of image data.</summary>
-    <remarks>To be added.</remarks>
+    <remarks />
   </Docs>
   <Members>
     <Member MemberName="A1">
@@ -117,4 +117,4 @@
       </AssemblyInfo>
     </Member>
   </Members>
-</Type>
+</Type>
\ No newline at end of file
diff --git a/mcs/class/Mono.Cairo/Documentation/en/Cairo/Glyph.xml b/mcs/class/Mono.Cairo/Documentation/en/Cairo/Glyph.xml
index 7c22c14..db8b145 100644
--- a/mcs/class/Mono.Cairo/Documentation/en/Cairo/Glyph.xml
+++ b/mcs/class/Mono.Cairo/Documentation/en/Cairo/Glyph.xml
@@ -27,11 +27,12 @@
         <Parameter Name="y" Type="System.Double" />
       </Parameters>
       <Docs>
-        <param name="index">To be added.</param>
-        <param name="x">To be added.</param>
-        <param name="y">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
+        <param name="index">A <see cref="t:System.Int64" /> value as index. </param>
+        <param name="x">A <see cref="t:System.Double" /> value as x</param>
+        <param name="y">A <see cref="t:System.Int64" /> value as y</param>
+        <summary>Sets the index, x and y values</summary>
+        <remarks>The x value represents the offset in the X direction between the origin used for drawing or measuring the string and the origin of this glyph.
+The y value represents the offset in the Y direction between the origin used for drawing or measuring the string and the origin of this glyph.</remarks>
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -52,10 +53,10 @@
         <Parameter Name="obj" Type="System.Object" />
       </Parameters>
       <Docs>
-        <param name="obj">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
+        <param name="obj">the other object</param>
+        <summary>Compares this Glyph object with another one for equality.</summary>
+        <returns>True if this Glyph is equal to the other, in all other cases false.</returns>
+        <remarks />
       </Docs>
     </Member>
     <Member MemberName="GetHashCode">
@@ -70,9 +71,9 @@
       </ReturnValue>
       <Parameters />
       <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
+        <summary>Compute a hash for the Glyph</summary>
+        <returns>The hash value for the Glyph</returns>
+        <remarks />
       </Docs>
     </Member>
     <Member MemberName="Index">
@@ -83,7 +84,7 @@
       </ReturnValue>
       <Docs>
         <summary>Glyph index in the font. The exact interpretation of the glyph index depends on the font technology being used.</summary>
-        <value>To be added.</value>
+        <value>A <see cref="t:System.Int64" /> representing the index</value>
         <remarks>
         </remarks>
       </Docs>
@@ -103,11 +104,11 @@
         <Parameter Name="other" Type="Cairo.Glyph" />
       </Parameters>
       <Docs>
-        <param name="glyph">To be added.</param>
-        <param name="other">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
+        <param name="glyph">The first Glyph</param>
+        <param name="other">The other Glyph</param>
+        <summary>Checks the equality of two Glyphs</summary>
+        <returns>A <see cref="t:System.Boolean" /> representing the result</returns>
+        <remarks />
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -125,11 +126,11 @@
         <Parameter Name="other" Type="Cairo.Glyph" />
       </Parameters>
       <Docs>
-        <param name="glyph">To be added.</param>
-        <param name="other">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
+        <param name="glyph">The first Glyph</param>
+        <param name="other">The other Glyph</param>
+        <summary>Checks the inequality of two Glyphs</summary>
+        <returns>A <see cref="t:System.Boolean" /> representing the result</returns>
+        <remarks />
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -144,7 +145,7 @@
       </ReturnValue>
       <Docs>
         <summary>The offset in the X direction between the origin used for drawing or measuring the string and the origin of this glyph.</summary>
-        <value>To be added.</value>
+        <value>A <see cref="t:System.Double" /> representing X</value>
         <remarks>
         </remarks>
       </Docs>
@@ -161,7 +162,7 @@
       </ReturnValue>
       <Docs>
         <summary>The offset in the Y direction between the origin used for drawing or measuring the string and the origin of this glyph.</summary>
-        <value>To be added.</value>
+        <value>A <see cref="t:System.Double" /> representing Y</value>
         <remarks>
         </remarks>
       </Docs>
@@ -171,4 +172,4 @@
       </AssemblyInfo>
     </Member>
   </Members>
-</Type>
+</Type>
\ No newline at end of file
diff --git a/mcs/class/Mono.Cairo/Documentation/en/Cairo/Gradient.xml b/mcs/class/Mono.Cairo/Documentation/en/Cairo/Gradient.xml
index 026c12a..fedd812 100644
--- a/mcs/class/Mono.Cairo/Documentation/en/Cairo/Gradient.xml
+++ b/mcs/class/Mono.Cairo/Documentation/en/Cairo/Gradient.xml
@@ -36,9 +36,9 @@
         <Parameter Name="handle" Type="System.IntPtr" />
       </Parameters>
       <Docs>
-        <param name="handle">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
+        <param name="handle">The handle as a <see cref="t:System.IntPtr" /></param>
+        <summary>Costructor with the option to pass an handle</summary>
+        <remarks />
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -100,10 +100,10 @@
         <ReturnType>System.Int32</ReturnType>
       </ReturnValue>
       <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
+        <summary>Gets the count of Color Stops</summary>
+        <value>The ColorStopCount as <see cref="t:System.Int32" /></value>
+        <remarks />
       </Docs>
     </Member>
   </Members>
-</Type>
+</Type>
\ No newline at end of file
diff --git a/mcs/class/Mono.Cairo/Documentation/en/Cairo/Graphics.xml b/mcs/class/Mono.Cairo/Documentation/en/Cairo/Graphics.xml
index 244569f..3d886fe 100644
--- a/mcs/class/Mono.Cairo/Documentation/en/Cairo/Graphics.xml
+++ b/mcs/class/Mono.Cairo/Documentation/en/Cairo/Graphics.xml
@@ -90,9 +90,9 @@ Note that the <paramref name="surface" /> can be a <see cref="T:Cairo.Surface" /
         <ReturnType>Cairo.Color</ReturnType>
       </ReturnValue>
       <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
+        <summary>The current Color in the drawing context (obsolete, use <see cref="P:Cairo.Graphics.Color" />)</summary>
+        <value>the Color</value>
+        <remarks />
       </Docs>
       <Attributes>
         <Attribute>
@@ -129,7 +129,7 @@ Note that the <paramref name="surface" /> can be a <see cref="T:Cairo.Surface" /
       <Docs>
         <summary>Get or set the fill rule.</summary>
         <value>See <see cref="T:Cairo.FillRule" /></value>
-        <remarks>To be added.</remarks>
+        <remarks />
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -143,9 +143,9 @@ Note that the <paramref name="surface" /> can be a <see cref="T:Cairo.Surface" /
         <ReturnType>Cairo.FontExtents</ReturnType>
       </ReturnValue>
       <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
+        <summary>The metric information for a font</summary>
+        <value>A <see cref="t:Cairo.FontExtents" /> structure</value>
+        <remarks />
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -210,7 +210,7 @@ Note that the <paramref name="surface" /> can be a <see cref="T:Cairo.Surface" /
       <Docs>
         <summary>Get or set the line cap style.</summary>
         <value>See <see cref="T:Cairo.LineCap" />.</value>
-        <remarks>To be added.</remarks>
+        <remarks />
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -226,7 +226,7 @@ Note that the <paramref name="surface" /> can be a <see cref="T:Cairo.Surface" /
       <Docs>
         <summary>Get or set the line join style.</summary>
         <value>See <see cref="T:Cairo.LineJoin" />.</value>
-        <remarks>To be added.</remarks>
+        <remarks />
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -242,7 +242,7 @@ Note that the <paramref name="surface" /> can be a <see cref="T:Cairo.Surface" /
       <Docs>
         <summary>Get or set the width of the stroke.</summary>
         <value>The width of the stroke.</value>
-        <remarks>To be added.</remarks>
+        <remarks />
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -257,8 +257,8 @@ Note that the <paramref name="surface" /> can be a <see cref="T:Cairo.Surface" /
       </ReturnValue>
       <Docs>
         <summary>Get or set the current transformation matrix (CTM).</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
+        <value>The current Transformation Matrix <see cref="t:Cairo.Matrix" /></value>
+        <remarks />
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -273,8 +273,8 @@ Note that the <paramref name="surface" /> can be a <see cref="T:Cairo.Surface" /
       </ReturnValue>
       <Docs>
         <summary>Get or set the miter limit (the value beyond which joins are no longer mitered).</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
+        <value>the miter limit as <see cref="t:System.Double" /></value>
+        <remarks />
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -386,4 +386,4 @@ Note that the <paramref name="surface" /> can be a <see cref="T:Cairo.Surface" /
       <AttributeName>System.Obsolete("Renamed Cairo.Context per suggestion from cairo binding guidelines.")</AttributeName>
     </Attribute>
   </Attributes>
-</Type>
+</Type>
\ No newline at end of file
diff --git a/mcs/class/Mono.Cairo/Documentation/en/Cairo/ImageSurface.xml b/mcs/class/Mono.Cairo/Documentation/en/Cairo/ImageSurface.xml
index 0e704e7..c2a9a20 100644
--- a/mcs/class/Mono.Cairo/Documentation/en/Cairo/ImageSurface.xml
+++ b/mcs/class/Mono.Cairo/Documentation/en/Cairo/ImageSurface.xml
@@ -116,9 +116,9 @@
         <ReturnType>System.Byte[]</ReturnType>
       </ReturnValue>
       <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
+        <summary>The data of the ImageSurface</summary>
+        <value>the data as a <see cref="t:System.Byte" /> Array</value>
+        <remarks />
         <since version="cairo 1.2" />
       </Docs>
       <AssemblyInfo>
@@ -134,7 +134,7 @@
       </ReturnValue>
       <Docs>
         <summary>An IntPtr pointing to the image data in memory.</summary>
-        <value>To be added.</value>
+        <value>The <see cref="t:System.IntPtr" /> pointing to the image data in memory</value>
         <remarks>
         </remarks>
         <since version="Mono-1.2.5" />
@@ -151,9 +151,9 @@
         <ReturnType>Cairo.Format</ReturnType>
       </ReturnValue>
       <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
+        <summary>The format of the ImageSurface</summary>
+        <value>The <see cref="t:Cairo.Format" /> of the ImageSurface</value>
+        <remarks />
         <since version="cairo 1.2" />
       </Docs>
       <AssemblyInfo>
@@ -168,9 +168,9 @@
         <ReturnType>System.Int32</ReturnType>
       </ReturnValue>
       <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
+        <summary>The height of the ImageSurface in pixels</summary>
+        <value>the height as <see cref="t:System.Int32" /></value>
+        <remarks />
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -185,7 +185,7 @@
       </ReturnValue>
       <Docs>
         <summary>The number of bytes per row in the image.</summary>
-        <value>To be added.</value>
+        <value>The number of Bytes as <see cref="t:System.Int32" /></value>
         <remarks>the number of bytes between the start of rows in the buffer. Having this be specified separate from width  allows for padding at the end of rows, or for writing to a subportion of a larger image.</remarks>
         <since version="cairo 1.2" />
       </Docs>
@@ -201,9 +201,9 @@
         <ReturnType>System.Int32</ReturnType>
       </ReturnValue>
       <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
+        <summary>The width of the ImageSurface in pixels</summary>
+        <value>the width as <see cref="t:System.Int32" /></value>
+        <remarks />
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -211,4 +211,4 @@
       </AssemblyInfo>
     </Member>
   </Members>
-</Type>
+</Type>
\ No newline at end of file
diff --git a/mcs/class/Mono.Cairo/Documentation/en/Cairo/LineCap.xml b/mcs/class/Mono.Cairo/Documentation/en/Cairo/LineCap.xml
index 01945d8..a8b18ee 100644
--- a/mcs/class/Mono.Cairo/Documentation/en/Cairo/LineCap.xml
+++ b/mcs/class/Mono.Cairo/Documentation/en/Cairo/LineCap.xml
@@ -10,7 +10,7 @@
   </Base>
   <Docs>
     <summary>Defines the various line ending styles.</summary>
-    <remarks>To be added.</remarks>
+    <remarks />
   </Docs>
   <Members>
     <Member MemberName="Butt">
@@ -57,4 +57,4 @@
       </AssemblyInfo>
     </Member>
   </Members>
-</Type>
+</Type>
\ No newline at end of file
diff --git a/mcs/class/Mono.Cairo/Documentation/en/Cairo/LineJoin.xml b/mcs/class/Mono.Cairo/Documentation/en/Cairo/LineJoin.xml
index b5aa4a5..601688f 100644
--- a/mcs/class/Mono.Cairo/Documentation/en/Cairo/LineJoin.xml
+++ b/mcs/class/Mono.Cairo/Documentation/en/Cairo/LineJoin.xml
@@ -9,8 +9,8 @@
     <BaseTypeName>System.Enum</BaseTypeName>
   </Base>
   <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
+    <summary>Defines the various line join styles</summary>
+    <remarks />
   </Docs>
   <Members>
     <Member MemberName="Bevel">
@@ -20,7 +20,7 @@
         <ReturnType>Cairo.LineJoin</ReturnType>
       </ReturnValue>
       <Docs>
-        <summary>To be added.</summary>
+        <summary>beveled join</summary>
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -34,7 +34,7 @@
         <ReturnType>Cairo.LineJoin</ReturnType>
       </ReturnValue>
       <Docs>
-        <summary>To be added.</summary>
+        <summary>miter join</summary>
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -48,7 +48,7 @@
         <ReturnType>Cairo.LineJoin</ReturnType>
       </ReturnValue>
       <Docs>
-        <summary>To be added.</summary>
+        <summary>rounded join</summary>
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -56,4 +56,4 @@
       </AssemblyInfo>
     </Member>
   </Members>
-</Type>
+</Type>
\ No newline at end of file
diff --git a/mcs/class/Mono.Cairo/Documentation/en/Cairo/LinearGradient.xml b/mcs/class/Mono.Cairo/Documentation/en/Cairo/LinearGradient.xml
index 3de7d1f..ae080e5 100644
--- a/mcs/class/Mono.Cairo/Documentation/en/Cairo/LinearGradient.xml
+++ b/mcs/class/Mono.Cairo/Documentation/en/Cairo/LinearGradient.xml
@@ -67,10 +67,10 @@ pat.Destroy ();
         <ReturnType>Cairo.PointD[]</ReturnType>
       </ReturnValue>
       <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
+        <summary>Gets the gradient endpoints for a linear gradient</summary>
+        <value>A Array of <see cref="t:Cairo.PointD" /> with the Start- and Endpoint</value>
+        <remarks />
       </Docs>
     </Member>
   </Members>
-</Type>
+</Type>
\ No newline at end of file
diff --git a/mcs/class/Mono.Cairo/Documentation/en/Cairo/Matrix.xml b/mcs/class/Mono.Cairo/Documentation/en/Cairo/Matrix.xml
index 26a6487..4f38bfb 100644
--- a/mcs/class/Mono.Cairo/Documentation/en/Cairo/Matrix.xml
+++ b/mcs/class/Mono.Cairo/Documentation/en/Cairo/Matrix.xml
@@ -101,7 +101,7 @@ if (cs == Cairo.Status.Success) {
         <param name="x0">x0 component of the affine transformation.</param>
         <param name="y0">y0 component of the affine transformation.</param>
         <summary>Create a new matrix, initialized with the specified values.</summary>
-        <remarks>To be added.</remarks>
+        <remarks />
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -116,9 +116,9 @@ if (cs == Cairo.Status.Success) {
       </ReturnValue>
       <Parameters />
       <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
+        <summary>Returns a clone of the matrix</summary>
+        <returns>The clone matrix as a <see cref="t:System.Object" /></returns>
+        <remarks />
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -139,10 +139,10 @@ if (cs == Cairo.Status.Success) {
         <Parameter Name="o" Type="System.Object" />
       </Parameters>
       <Docs>
-        <param name="o">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
+        <param name="o">The matrix to test the equality with</param>
+        <summary>Tests the equality of this matrix and another one</summary>
+        <returns>True if the two matrices are equal, otherwise false</returns>
+        <remarks />
       </Docs>
     </Member>
     <Member MemberName="GetHashCode">
@@ -157,9 +157,9 @@ if (cs == Cairo.Status.Success) {
       </ReturnValue>
       <Parameters />
       <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
+        <summary>Returns a hash representing the matrix</summary>
+        <returns>A hash as an <see cref="t:System.Int32" /> representing the matrix</returns>
+        <remarks />
       </Docs>
     </Member>
     <Member MemberName="Init">
@@ -187,7 +187,7 @@ if (cs == Cairo.Status.Success) {
 
 
 <list type="bullet"><item><term>x_new = xx * x + xy * y + x0;</term></item><item><term>y_new = yx * x + yy * y + y0;</term></item></list></summary>
-        <remarks>To be added.</remarks>
+        <remarks />
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -203,7 +203,7 @@ if (cs == Cairo.Status.Success) {
       <Parameters />
       <Docs>
         <summary>Initializes the matrix to the identity.</summary>
-        <remarks>To be added.</remarks>
+        <remarks />
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -301,7 +301,7 @@ if (cs == Cairo.Status.Success) {
       <Docs>
         <summary>Determine if a given matrix is the Identity.</summary>
         <returns>Returns true if this matrix is equivalent to the identity.</returns>
-        <remarks>To be added.</remarks>
+        <remarks />
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -320,7 +320,7 @@ if (cs == Cairo.Status.Success) {
       <Docs>
         <param name="b">The affine transformation matrix to multiply by.</param>
         <summary>Multiplies this Matrix by b. The effect is to apply b's transformation to this matrix, or in other words, to transform this matrix by b.</summary>
-        <remarks>To be added.</remarks>
+        <remarks />
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -342,7 +342,7 @@ if (cs == Cairo.Status.Success) {
         <param name="b">The matrix to multiply by.</param>
         <summary>Multiplies the affine transformations in a and b together and returns the result in result. The result is an affine transformation which is equivalent to separately applying the transformations a and b in order.</summary>
         <returns>The result of multiplying a and b.</returns>
-        <remarks>To be added.</remarks>
+        <remarks />
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -364,7 +364,7 @@ if (cs == Cairo.Status.Success) {
         <param name="rhs">The second Matrix to compare.</param>
         <summary>Determines whether two matrices have the same value.</summary>
         <returns>Returns true if all members are equal.</returns>
-        <remarks>To be added.</remarks>
+        <remarks />
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -386,7 +386,7 @@ if (cs == Cairo.Status.Success) {
         <param name="rhs">The second Matrix to compare.</param>
         <summary>Determines whether two matrices do not share the same value.</summary>
         <returns>Returns true if any members are not equal.</returns>
-        <remarks>To be added.</remarks>
+        <remarks />
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -446,9 +446,9 @@ if (cs == Cairo.Status.Success) {
       </ReturnValue>
       <Parameters />
       <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
+        <summary>Returns the matrix as a string</summary>
+        <returns>A string describing the matrix</returns>
+        <remarks />
       </Docs>
     </Member>
     <Member MemberName="TransformDistance">
@@ -611,4 +611,4 @@ if (cs == Cairo.Status.Success) {
       </AssemblyInfo>
     </Member>
   </Members>
-</Type>
+</Type>
\ No newline at end of file
diff --git a/mcs/class/Mono.Cairo/Documentation/en/Cairo/NativeMethods.xml b/mcs/class/Mono.Cairo/Documentation/en/Cairo/NativeMethods.xml
index a8e5158..1b5c559 100644
--- a/mcs/class/Mono.Cairo/Documentation/en/Cairo/NativeMethods.xml
+++ b/mcs/class/Mono.Cairo/Documentation/en/Cairo/NativeMethods.xml
@@ -10,8 +10,8 @@
   </Base>
   <Interfaces />
   <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
+    <summary>Contains references to the native cairo methods</summary>
+    <remarks />
   </Docs>
   <Members />
-</Type>
+</Type>
\ No newline at end of file
diff --git a/mcs/class/Mono.Cairo/Documentation/en/Cairo/Operator.xml b/mcs/class/Mono.Cairo/Documentation/en/Cairo/Operator.xml
index ac894b4..bdfa8cb 100644
--- a/mcs/class/Mono.Cairo/Documentation/en/Cairo/Operator.xml
+++ b/mcs/class/Mono.Cairo/Documentation/en/Cairo/Operator.xml
@@ -9,8 +9,8 @@
     <BaseTypeName>System.Enum</BaseTypeName>
   </Base>
   <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
+    <summary>Contains the Cairo Operators</summary>
+    <remarks />
   </Docs>
   <Members>
     <Member MemberName="Add">
@@ -20,7 +20,7 @@
         <ReturnType>Cairo.Operator</ReturnType>
       </ReturnValue>
       <Docs>
-        <summary>To be added.</summary>
+        <summary>Merges the overlapping colors to a new one</summary>
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -34,7 +34,7 @@
         <ReturnType>Cairo.Operator</ReturnType>
       </ReturnValue>
       <Docs>
-        <summary>To be added.</summary>
+        <summary>This operator leaves the first object mostly intact, but mixes both objects in the overlapping area. The second object object is not drawn except there.</summary>
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -48,7 +48,7 @@
         <ReturnType>Cairo.Operator</ReturnType>
       </ReturnValue>
       <Docs>
-        <summary>To be added.</summary>
+        <summary>Where the second object is drawn, the first is completely removed. Anywhere else it is left intact. The second object itself is not drawn.</summary>
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -62,7 +62,7 @@
         <ReturnType>Cairo.Operator</ReturnType>
       </ReturnValue>
       <Docs>
-        <summary>To be added.</summary>
+        <summary>Leaves the first object untouched, the second is discarded completely.</summary>
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -76,7 +76,7 @@
         <ReturnType>Cairo.Operator</ReturnType>
       </ReturnValue>
       <Docs>
-        <summary>To be added.</summary>
+        <summary>Same as the ATOP operator, but as if the order of the drawing operations had been reversed.</summary>
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -90,7 +90,7 @@
         <ReturnType>Cairo.Operator</ReturnType>
       </ReturnValue>
       <Docs>
-        <summary>To be added.</summary>
+        <summary>This works like the IN operator, but with the second object "below" the first.</summary>
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -104,7 +104,7 @@
         <ReturnType>Cairo.Operator</ReturnType>
       </ReturnValue>
       <Docs>
-        <summary>To be added.</summary>
+        <summary>The second object is used to reduce the visibility of the first in the overlapping area. The second object is not drawn itself.</summary>
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -118,7 +118,7 @@
         <ReturnType>Cairo.Operator</ReturnType>
       </ReturnValue>
       <Docs>
-        <summary>To be added.</summary>
+        <summary>The result is similar to the OVER operator. Except that the "order" of the objects is reversed, so the second is drawn below the first.</summary>
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -132,7 +132,7 @@
         <ReturnType>Cairo.Operator</ReturnType>
       </ReturnValue>
       <Docs>
-        <summary>To be added.</summary>
+        <summary>The first object is removed completely, the second is only drawn where the first was.</summary>
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -146,7 +146,7 @@
         <ReturnType>Cairo.Operator</ReturnType>
       </ReturnValue>
       <Docs>
-        <summary>To be added.</summary>
+        <summary>The first object is removed completely, the second is only drawn where the first not was.</summary>
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -160,7 +160,7 @@
         <ReturnType>Cairo.Operator</ReturnType>
       </ReturnValue>
       <Docs>
-        <summary>To be added.</summary>
+        <summary>The result is the same as if you held two semi-transparent slides on top of each other.</summary>
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -174,7 +174,7 @@
         <ReturnType>Cairo.Operator</ReturnType>
       </ReturnValue>
       <Docs>
-        <summary>To be added.</summary>
+        <summary>Merges the overlapping colors to a new one</summary>
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -188,7 +188,7 @@
         <ReturnType>Cairo.Operator</ReturnType>
       </ReturnValue>
       <Docs>
-        <summary>To be added.</summary>
+        <summary>The second object is drawn as if nothing else were below. The first object is only left intact outside the second.</summary>
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -202,7 +202,7 @@
         <ReturnType>Cairo.Operator</ReturnType>
       </ReturnValue>
       <Docs>
-        <summary>To be added.</summary>
+        <summary>Merges the overlapping colors to a new one with XOR</summary>
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -210,4 +210,4 @@
       </AssemblyInfo>
     </Member>
   </Members>
-</Type>
+</Type>
\ No newline at end of file
diff --git a/mcs/class/Mono.Cairo/Documentation/en/Cairo/PSSurface.xml b/mcs/class/Mono.Cairo/Documentation/en/Cairo/PSSurface.xml
index f000de7..9b5b041 100644
--- a/mcs/class/Mono.Cairo/Documentation/en/Cairo/PSSurface.xml
+++ b/mcs/class/Mono.Cairo/Documentation/en/Cairo/PSSurface.xml
@@ -10,8 +10,8 @@
   </Base>
   <Interfaces />
   <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
+    <summary>The PostScript surface is used to render cairo graphics to Adobe PostScript files.</summary>
+    <remarks />
     <since version="cairo 1.2" />
   </Docs>
   <Members>
@@ -24,11 +24,11 @@
         <Parameter Name="height" Type="System.Double" />
       </Parameters>
       <Docs>
-        <param name="filename">To be added.</param>
-        <param name="width">To be added.</param>
-        <param name="height">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
+        <param name="filename">Filename for the PDF output as <see cref="t:System.String" /></param>
+        <param name="width">width of the surface, in points as <see cref="t:System.Double" /> (1 point == 1/72.0 inch)</param>
+        <param name="height">height of the surface, in points as <see cref="t:System.Double" /> (1 point == 1/72.0 inch)</param>
+        <summary>Creates a PostScript surface of the specified size in points to be written to filename.</summary>
+        <remarks />
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -43,8 +43,8 @@
       </ReturnValue>
       <Parameters />
       <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
+        <summary>Begins the setup of the page</summary>
+        <remarks>Note that it is only necessary to call <see cref="M:Cairo.PSSurface.BeginPageSetup" /> for the first page of any surface.</remarks>
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -59,8 +59,8 @@
       </ReturnValue>
       <Parameters />
       <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
+        <summary>Begins the setup</summary>
+        <remarks />
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -77,9 +77,9 @@
         <Parameter Name="comment" Type="System.String" />
       </Parameters>
       <Docs>
-        <param name="comment">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
+        <param name="comment">The comment as a <see cref="t:System.String" /></param>
+        <summary>Emits a comment into the PostScript output</summary>
+        <remarks />
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -97,10 +97,10 @@
         <Parameter Name="height" Type="System.Double" />
       </Parameters>
       <Docs>
-        <param name="width">To be added.</param>
-        <param name="height">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
+        <param name="width">The new surface width in points as <see cref="t:System.Double" /> (1 point == 1/72.0 inch)</param>
+        <param name="height">The new surface height in points as <see cref="t:System.Double" /> (1 point == 1/72.0 inch)</param>
+        <summary>Changes the size of the PostScript surface for the current (and subsequent) pages.</summary>
+        <remarks />
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -108,4 +108,4 @@
       </AssemblyInfo>
     </Member>
   </Members>
-</Type>
+</Type>
\ No newline at end of file
diff --git a/mcs/class/Mono.Cairo/Documentation/en/Cairo/Path.xml b/mcs/class/Mono.Cairo/Documentation/en/Cairo/Path.xml
index 9fc97a4..9e30b73 100644
--- a/mcs/class/Mono.Cairo/Documentation/en/Cairo/Path.xml
+++ b/mcs/class/Mono.Cairo/Documentation/en/Cairo/Path.xml
@@ -14,8 +14,8 @@
     </Interface>
   </Interfaces>
   <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
+    <summary>The Cairo Path Class</summary>
+    <remarks />
   </Docs>
   <Members>
     <Member MemberName="Dispose">
@@ -32,9 +32,9 @@
         <Parameter Name="disposing" Type="System.Boolean" />
       </Parameters>
       <Docs>
-        <param name="disposing">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
+        <param name="disposing">Defines if called from finalization thread</param>
+        <summary>Immediately releases all memory associated with Path</summary>
+        <remarks />
       </Docs>
     </Member>
     <Member MemberName="Finalize">
@@ -49,8 +49,8 @@
       </ReturnValue>
       <Parameters />
       <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
+        <summary>Finalizes the path</summary>
+        <remarks />
       </Docs>
     </Member>
     <Member MemberName="System.IDisposable.Dispose">
@@ -70,4 +70,4 @@
       </Docs>
     </Member>
   </Members>
-</Type>
+</Type>
\ No newline at end of file
diff --git a/mcs/class/Mono.Cairo/Documentation/en/Cairo/PdfSurface.xml b/mcs/class/Mono.Cairo/Documentation/en/Cairo/PdfSurface.xml
index 8e3be34..a367f72 100644
--- a/mcs/class/Mono.Cairo/Documentation/en/Cairo/PdfSurface.xml
+++ b/mcs/class/Mono.Cairo/Documentation/en/Cairo/PdfSurface.xml
@@ -10,8 +10,8 @@
   </Base>
   <Interfaces />
   <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
+    <summary>The PDF surface is used to render cairo graphics to Adobe PDF files.</summary>
+    <remarks />
     <since version="cairo 1.2" />
   </Docs>
   <Members>
@@ -24,11 +24,11 @@
         <Parameter Name="height" Type="System.Double" />
       </Parameters>
       <Docs>
-        <param name="filename">To be added.</param>
-        <param name="width">To be added.</param>
-        <param name="height">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
+        <param name="filename">Filename for the PDF output as <see cref="t:System.String" /></param>
+        <param name="width">width of the surface, in points as <see cref="t:System.Double" /> (1 point == 1/72.0 inch)</param>
+        <param name="height">height of the surface, in points <see cref="t:System.Double" /> (1 point == 1/72.0 inch)</param>
+        <summary>Creates a PDF surface of the specified size in points to be written to filename.</summary>
+        <remarks />
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -46,10 +46,10 @@
         <Parameter Name="height" Type="System.Double" />
       </Parameters>
       <Docs>
-        <param name="width">To be added.</param>
-        <param name="height">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
+        <param name="width">new surface width, in points (1 point == 1/72.0 inch)</param>
+        <param name="height">new surface height, in points (1 point == 1/72.0 inch)</param>
+        <summary>Changes the size of the PDF surface for the current (and subsequent) pages.</summary>
+        <remarks />
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -57,4 +57,4 @@
       </AssemblyInfo>
     </Member>
   </Members>
-</Type>
+</Type>
\ No newline at end of file
diff --git a/mcs/class/Mono.Cairo/Documentation/en/Cairo/Point.xml b/mcs/class/Mono.Cairo/Documentation/en/Cairo/Point.xml
index 76f4e2d..16eca1a 100644
--- a/mcs/class/Mono.Cairo/Documentation/en/Cairo/Point.xml
+++ b/mcs/class/Mono.Cairo/Documentation/en/Cairo/Point.xml
@@ -40,7 +40,7 @@
       </ReturnValue>
       <Docs>
         <summary>Access to the X coordinate.</summary>
-        <value>To be added.</value>
+        <value>The X coordinate</value>
         <remarks>
         </remarks>
       </Docs>
@@ -57,7 +57,7 @@
       </ReturnValue>
       <Docs>
         <summary>Access to the Y coordinate.</summary>
-        <value>To be added.</value>
+        <value>The Y coordinate</value>
         <remarks>
         </remarks>
       </Docs>
@@ -67,4 +67,4 @@
       </AssemblyInfo>
     </Member>
   </Members>
-</Type>
+</Type>
\ No newline at end of file
diff --git a/mcs/class/Mono.Cairo/Documentation/en/Cairo/PointD.xml b/mcs/class/Mono.Cairo/Documentation/en/Cairo/PointD.xml
index 8704861..ca73bc3 100644
--- a/mcs/class/Mono.Cairo/Documentation/en/Cairo/PointD.xml
+++ b/mcs/class/Mono.Cairo/Documentation/en/Cairo/PointD.xml
@@ -46,7 +46,7 @@ gr.Rectangle ( new PointD (0, 0), 1, 1);
       </ReturnValue>
       <Docs>
         <summary>Access to the X coordinate.</summary>
-        <value>To be added.</value>
+        <value>The X coordinate</value>
         <remarks>
         </remarks>
       </Docs>
@@ -63,7 +63,7 @@ gr.Rectangle ( new PointD (0, 0), 1, 1);
       </ReturnValue>
       <Docs>
         <summary>Access to the Y coordinate.</summary>
-        <value>To be added.</value>
+        <value>The Y coordinate</value>
         <remarks>
         </remarks>
       </Docs>
@@ -73,4 +73,4 @@ gr.Rectangle ( new PointD (0, 0), 1, 1);
       </AssemblyInfo>
     </Member>
   </Members>
-</Type>
+</Type>
\ No newline at end of file
diff --git a/mcs/class/Mono.Cecil.Mdb/ChangeLog b/mcs/class/Mono.Cecil.Mdb/ChangeLog
deleted file mode 100644
index 5faa9b4..0000000
--- a/mcs/class/Mono.Cecil.Mdb/ChangeLog
+++ /dev/null
@@ -1,79 +0,0 @@
-2010-08-01  Marek Safar  <marek.safar at gmail.com>
-
-	Update SymbolWriter to use generics collections
-
-2010-01-20  Rolf Bjarne Kvinge  <RKvinge at novell.com>
-
-	* Makefile: Specify the path to Mono.Cecil.dll when referencing it.
-
-2009-02-02  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Mdb/MdbWriter.cs: add a GetDebugHeader method
-		that will be used by the image writer.
-
-2008-11-11  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* Mono.Cecil.Mdb/MdbFactory.cs: Wrap any MonoSymbolFileException
-	into a FormatException since callers can't catch the former (at least
-	not without catching Exception).
-
-2008-10-17  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Mdb/MdbWriter.cs: Adjust to Cecil changes.
-
-2008-06-07  Martin Baulig  <martin at ximian.com>
-
-	* Mono.Cecil.Mdb/MdbReader.cs: Reflect latest symbol
-	reader changes.
-
-	* Mono.Cecil.Mdb/MdbWriter.cs: Reflect latest symbol
-	writer changes.
-
-2008-05-28  Martin Baulig  <martin at ximian.com>
-
-	* Mono.Cecil.Mdb/MdbReader.cs: Reflect latest symbol
-	reader changes.
-
-2008-05-05  Martin Baulig  <martin at ximian.com>
-
-	* Mono.Cecil.Mdb/MdbWriter.cs: Reflect latest symbol writer
-	changes; DefineLocalVariables() doesn't take a signature anymore.
-
-	* Mono.Cecil.Mdb/MdbReader.cs: Reflect latest symbol writer
-	changes; use CodeBlockEntry instead of LexicalBlockEntry.
-
-2008-04-19  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* Mono.Cecil.Mdb/MdbReader.cs: Update wrt interface change (i.e.
-	Read now provide a Dictionary to reuse the existing Hashtable
-	between	offsets and instructions).
-
-2008-04-08  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* Mono.Cecil.Mdb/MdbReader.cs:
-		Make sure we set variables names even if the scope
-		information is missing.
-
-2007-08-28  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Mdb/MdbWriter.cs:
-		Rewrite variables infos.
-
-2007-08-27  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Mdb/MdbWriter.cs:
-		Rewrite using the direct mdb api.
-
-2007-02-21  Jb Evain  <jb at nurv.fr>
-
-	* Start working on local var debug infos emitting.
-
-2006-09-24  Jb Evain  <jbevain at gmail.com>
-
-	* start some work on the reader.
-
-2006-09-19  Jb Evain  <jbevain at gmail.com>
-
-	* first checkin in SVN:
-		This is the assembly to support reading and writing
-		from Mono's mdb symbol store.
diff --git a/mcs/class/Mono.Cecil.Mdb/ChangeLog.old b/mcs/class/Mono.Cecil.Mdb/ChangeLog.old
deleted file mode 100644
index 7713cc5..0000000
--- a/mcs/class/Mono.Cecil.Mdb/ChangeLog.old
+++ /dev/null
@@ -1,75 +0,0 @@
-2010-01-20  Rolf Bjarne Kvinge  <RKvinge at novell.com>
-
-	* Makefile: Specify the path to Mono.Cecil.dll when referencing it.
-
-2009-02-02  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Mdb/MdbWriter.cs: add a GetDebugHeader method
-		that will be used by the image writer.
-
-2008-11-11  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* Mono.Cecil.Mdb/MdbFactory.cs: Wrap any MonoSymbolFileException
-	into a FormatException since callers can't catch the former (at least
-	not without catching Exception).
-
-2008-10-17  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Mdb/MdbWriter.cs: Adjust to Cecil changes.
-
-2008-06-07  Martin Baulig  <martin at ximian.com>
-
-	* Mono.Cecil.Mdb/MdbReader.cs: Reflect latest symbol
-	reader changes.
-
-	* Mono.Cecil.Mdb/MdbWriter.cs: Reflect latest symbol
-	writer changes.
-
-2008-05-28  Martin Baulig  <martin at ximian.com>
-
-	* Mono.Cecil.Mdb/MdbReader.cs: Reflect latest symbol
-	reader changes.
-
-2008-05-05  Martin Baulig  <martin at ximian.com>
-
-	* Mono.Cecil.Mdb/MdbWriter.cs: Reflect latest symbol writer
-	changes; DefineLocalVariables() doesn't take a signature anymore.
-
-	* Mono.Cecil.Mdb/MdbReader.cs: Reflect latest symbol writer
-	changes; use CodeBlockEntry instead of LexicalBlockEntry.
-
-2008-04-19  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* Mono.Cecil.Mdb/MdbReader.cs: Update wrt interface change (i.e.
-	Read now provide a Dictionary to reuse the existing Hashtable
-	between	offsets and instructions).
-
-2008-04-08  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* Mono.Cecil.Mdb/MdbReader.cs:
-		Make sure we set variables names even if the scope
-		information is missing.
-
-2007-08-28  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Mdb/MdbWriter.cs:
-		Rewrite variables infos.
-
-2007-08-27  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Mdb/MdbWriter.cs:
-		Rewrite using the direct mdb api.
-
-2007-02-21  Jb Evain  <jb at nurv.fr>
-
-	* Start working on local var debug infos emitting.
-
-2006-09-24  Jb Evain  <jbevain at gmail.com>
-
-	* start some work on the reader.
-
-2006-09-19  Jb Evain  <jbevain at gmail.com>
-
-	* first checkin in SVN:
-		This is the assembly to support reading and writing
-		from Mono's mdb symbol store.
diff --git a/mcs/class/Mono.Cecil.Mdb/Mono.Cecil.Mdb.dll.sources b/mcs/class/Mono.Cecil.Mdb/Mono.Cecil.Mdb.dll.sources
index 74a3d70..9775ab4 100644
--- a/mcs/class/Mono.Cecil.Mdb/Mono.Cecil.Mdb.dll.sources
+++ b/mcs/class/Mono.Cecil.Mdb/Mono.Cecil.Mdb.dll.sources
@@ -1,5 +1,4 @@
 ./Mono.Cecil.Mdb/AssemblyInfo.cs
-./Mono.Cecil.Mdb/MdbFactory.cs
 ./Mono.Cecil.Mdb/MdbReader.cs
 ./Mono.Cecil.Mdb/MdbWriter.cs
 ../Mono.CompilerServices.SymbolWriter/MonoSymbolFile.cs
diff --git a/mcs/class/Mono.Cecil.Mdb/Mono.Cecil.Mdb/AssemblyInfo.cs b/mcs/class/Mono.Cecil.Mdb/Mono.Cecil.Mdb/AssemblyInfo.cs
index 5debf10..a08113a 100644
--- a/mcs/class/Mono.Cecil.Mdb/Mono.Cecil.Mdb/AssemblyInfo.cs
+++ b/mcs/class/Mono.Cecil.Mdb/Mono.Cecil.Mdb/AssemblyInfo.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2006 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -31,13 +31,11 @@ using System.Reflection;
 using System.Runtime.InteropServices;
 
 [assembly: AssemblyTitle ("Mono.Cecil.Mdb")]
-[assembly: AssemblyDescription ("Support for the mdb symbols store in Cecil")]
-[assembly: AssemblyConfiguration ("")]
 [assembly: AssemblyProduct ("Mono.Cecil")]
-[assembly: AssemblyCopyright ("(C) 2006, Jb Evain")]
-[assembly: AssemblyCulture ("")]
+[assembly: AssemblyCopyright ("Copyright © 2008 - 2010 Jb Evain")]
 
 [assembly: CLSCompliant (false)]
 [assembly: ComVisible (false)]
 
-[assembly: AssemblyVersion ("0.2.0.0")]
+[assembly: AssemblyVersion ("0.9.4.0")]
+[assembly: AssemblyFileVersion ("0.9.4.0")]
diff --git a/mcs/class/Mono.Cecil.Mdb/Mono.Cecil.Mdb/MdbFactory.cs b/mcs/class/Mono.Cecil.Mdb/Mono.Cecil.Mdb/MdbFactory.cs
deleted file mode 100644
index f12cff4..0000000
--- a/mcs/class/Mono.Cecil.Mdb/Mono.Cecil.Mdb/MdbFactory.cs
+++ /dev/null
@@ -1,56 +0,0 @@
-//
-// MdbFactory.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2006 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Mdb {
-
-	using System;
-
-	using Mono.Cecil.Cil;
-
-	using Mono.CompilerServices.SymbolWriter;
-
-	public class MdbFactory : ISymbolStoreFactory {
-
-		public ISymbolReader CreateReader (ModuleDefinition module, string assembly)
-		{
-			try {
-				return new MdbReader (MonoSymbolFile.ReadSymbolFile (module.Assembly, assembly));
-			}
-			catch (MonoSymbolFileException e) {
-				// callers may not be able to catch this exception since they, likely,
-				// don't link with Mono.CompilerServices.SymbolWriter
-				throw new FormatException ("Invalid MDB symbol file.", e);
-			}
-		}
-
-		public ISymbolWriter CreateWriter (ModuleDefinition module, string assembly)
-		{
-			return new MdbWriter (module.Mvid, assembly);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil.Mdb/Mono.Cecil.Mdb/MdbReader.cs b/mcs/class/Mono.Cecil.Mdb/Mono.Cecil.Mdb/MdbReader.cs
index fd09e69..0198a71 100644
--- a/mcs/class/Mono.Cecil.Mdb/Mono.Cecil.Mdb/MdbReader.cs
+++ b/mcs/class/Mono.Cecil.Mdb/Mono.Cecil.Mdb/MdbReader.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2006 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,113 +26,143 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System;
+using System.Collections.Generic;
+using System.IO;
+
+using Mono.Cecil.Cil;
+using Mono.Collections.Generic;
+using Mono.CompilerServices.SymbolWriter;
+
 namespace Mono.Cecil.Mdb {
 
-	using System.Collections;
+	public class MdbReaderProvider : ISymbolReaderProvider {
 
-	using Mono.Cecil.Cil;
+		public ISymbolReader GetSymbolReader (ModuleDefinition module, string fileName)
+		{
+			return new MdbReader (MonoSymbolFile.ReadSymbolFile (module, fileName));
+		}
 
-	using Mono.CompilerServices.SymbolWriter;
+		public ISymbolReader GetSymbolReader (ModuleDefinition module, Stream symbolStream)
+		{
+			throw new NotImplementedException ();
+		}
+	}
 
-	class MdbReader : ISymbolReader {
+	public class MdbReader : ISymbolReader {
 
-		MonoSymbolFile m_symFile;
-		Hashtable m_documents;
-		Hashtable m_scopes;
+		readonly MonoSymbolFile symbol_file;
+		readonly Dictionary<string, Document> documents;
 
 		public MdbReader (MonoSymbolFile symFile)
 		{
-			m_symFile = symFile;
-			m_documents = new Hashtable ();
-			m_scopes = new Hashtable ();
+			symbol_file = symFile;
+			documents = new Dictionary<string, Document> ();
 		}
 
-		Instruction GetInstruction (MethodBody body, IDictionary instructions, int offset)
+		public bool ProcessDebugHeader (ImageDebugDirectory directory, byte [] header)
 		{
-			Instruction instr = (Instruction) instructions [offset];
-			if (instr != null)
-				return instr;
-
-			return body.Instructions.Outside;
+			return true;
 		}
 
-		public void Read (MethodBody body, IDictionary instructions)
+		public void Read (MethodBody body, InstructionMapper mapper)
 		{
-			MethodEntry entry = m_symFile.GetMethodByToken ((int) body.Method.MetadataToken.ToUInt ());
+			var method_token = body.Method.MetadataToken;
+			var entry = symbol_file.GetMethodByToken (method_token.ToInt32	());
 			if (entry == null)
 				return;
 
-			ReadScopes (entry, body, instructions);
-			ReadLineNumbers (entry, instructions);
-			ReadLocalVariables (entry, body);
+			var scopes = ReadScopes (entry, body, mapper);
+			ReadLineNumbers (entry, mapper);
+			ReadLocalVariables (entry, body, scopes);
 		}
 
-		void ReadLocalVariables (MethodEntry entry, MethodBody body)
+		static void ReadLocalVariables (MethodEntry entry, MethodBody body, Scope [] scopes)
 		{
-			LocalVariableEntry[] locals = entry.GetLocals ();
-			foreach (LocalVariableEntry loc in locals) {
-				VariableDefinition var = body.Variables [loc.Index];
-				var.Name = loc.Name;
+			var locals = entry.GetLocals ();
+			foreach (var local in locals) {
+				var variable = body.Variables [local.Index];
+				variable.Name = local.Name;
+
+				var index = local.BlockIndex;
+				if (index < 0 || index >= scopes.Length)
+					continue;
 
-				Scope scope = m_scopes [loc.BlockIndex] as Scope;
+				var scope = scopes [index];
 				if (scope == null)
 					continue;
-				scope.Variables.Add (var);
+
+				scope.Variables.Add (variable);
 			}
 		}
 
-		void ReadLineNumbers (MethodEntry entry, IDictionary instructions)
+		void ReadLineNumbers (MethodEntry entry, InstructionMapper mapper)
 		{
-			LineNumberTable lnt = entry.GetLineNumberTable ();
-			foreach (LineNumberEntry line in lnt.LineNumbers) {
-				Instruction instr = instructions [line.Offset] as Instruction;
-				if (instr == null)
+			Document document = null;
+			var table = entry.GetLineNumberTable ();
+
+			foreach (var line in table.LineNumbers) {
+				var instruction = mapper (line.Offset);
+				if (instruction == null)
 					continue;
 
-				Document doc = GetDocument (entry.CompileUnit.SourceFile);
-				instr.SequencePoint = new SequencePoint (doc);
-				instr.SequencePoint.StartLine = line.Row;
-				instr.SequencePoint.EndLine = line.Row;
+				if (document == null)
+					document = GetDocument (entry.CompileUnit.SourceFile);
+
+				instruction.SequencePoint = new SequencePoint (document) {
+					StartLine = line.Row,
+					EndLine = line.Row,
+				};
 			}
 		}
 
 		Document GetDocument (SourceFileEntry file)
 		{
-			Document doc = m_documents [file.FileName] as Document;
-			if (doc != null)
-				return doc;
+			var file_name = file.FileName;
+
+			Document document;
+			if (documents.TryGetValue (file_name, out document))
+				return document;
 
-			doc = new Document (file.FileName);
+			document = new Document (file_name);
+			documents.Add (file_name, document);
 
-			m_documents [file.FileName] = doc;
-			return doc;
+			return document;
 		}
 
-		void ReadScopes (MethodEntry entry, MethodBody body, IDictionary instructions)
+		static Scope [] ReadScopes (MethodEntry entry, MethodBody body, InstructionMapper mapper)
 		{
-			CodeBlockEntry[] blocks = entry.GetCodeBlocks ();
-			foreach (CodeBlockEntry cbe in blocks) {
-				if (cbe.BlockType != CodeBlockEntry.Type.Lexical)
+			var blocks = entry.GetCodeBlocks ();
+			var scopes = new Scope [blocks.Length];
+
+			foreach (var block in blocks) {
+				if (block.BlockType != CodeBlockEntry.Type.Lexical)
 					continue;
 
-				Scope s = new Scope ();
-				s.Start = GetInstruction (body, instructions, cbe.StartOffset);
-				s.End = GetInstruction(body, instructions, cbe.EndOffset);
-				m_scopes [entry.Index] = s;
+				var scope = new Scope ();
+				scope.Start = mapper (block.StartOffset);
+				scope.End = mapper (block.EndOffset);
+
+				scopes [block.Index] = scope;
 
-				if (!AddScope (body, s))
-					body.Scopes.Add (s);
+				if (body.Scope == null)
+					body.Scope = scope;
+
+				if (!AddScope (body.Scope, scope))
+					body.Scope = scope;
 			}
+
+			return scopes;
 		}
 
-		bool AddScope (IScopeProvider provider, Scope s)
+		static bool AddScope (Scope provider, Scope scope)
 		{
-			foreach (Scope scope in provider.Scopes) {
-				if (AddScope (scope, s))
+			foreach (var sub_scope in provider.Scopes) {
+				if (AddScope (sub_scope, scope))
 					return true;
 
-				if (s.Start.Offset >= scope.Start.Offset && s.End.Offset <= scope.End.Offset) {
-					scope.Scopes.Add (s);
+				if (scope.Start.Offset >= sub_scope.Start.Offset && scope.End.Offset <= sub_scope.End.Offset) {
+					sub_scope.Scopes.Add (scope);
 					return true;
 				}
 			}
@@ -140,9 +170,44 @@ namespace Mono.Cecil.Mdb {
 			return false;
 		}
 
+		public void Read (MethodSymbols symbols)
+		{
+			var entry = symbol_file.GetMethodByToken (symbols.MethodToken.ToInt32 ());
+			if (entry == null)
+				return;
+
+			ReadLineNumbers (entry, symbols);
+			ReadLocalVariables (entry, symbols);
+		}
+
+		void ReadLineNumbers (MethodEntry entry, MethodSymbols symbols)
+		{
+			var table = entry.GetLineNumberTable ();
+			var lines = table.LineNumbers;
+
+			var instructions = symbols.instructions = new Collection<InstructionSymbol> (lines.Length);
+
+			for (int i = 0; i < lines.Length; i++) {
+				var line = lines [i];
+
+				instructions.Add (new InstructionSymbol (line.Offset, new SequencePoint (GetDocument (entry.CompileUnit.SourceFile)) {
+					StartLine = line.Row,
+					EndLine = line.Row,
+				}));
+			}
+		}
+
+		static void ReadLocalVariables (MethodEntry entry, MethodSymbols symbols)
+		{
+			foreach (var local in entry.GetLocals ()) {
+				var variable = symbols.Variables [local.Index];
+				variable.Name = local.Name;
+			}
+		}
+
 		public void Dispose ()
 		{
-			m_symFile.Dispose ();
+			symbol_file.Dispose ();
 		}
 	}
 }
diff --git a/mcs/class/Mono.Cecil.Mdb/Mono.Cecil.Mdb/MdbWriter.cs b/mcs/class/Mono.Cecil.Mdb/Mono.Cecil.Mdb/MdbWriter.cs
index 948d151..54362ec 100644
--- a/mcs/class/Mono.Cecil.Mdb/Mono.Cecil.Mdb/MdbWriter.cs
+++ b/mcs/class/Mono.Cecil.Mdb/Mono.Cecil.Mdb/MdbWriter.cs
@@ -2,9 +2,9 @@
 // MdbWriter.cs
 //
 // Author:
-//   Jb Evain (jbevain at novell.com)
+//   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2007 Novell, Inc.
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,164 +26,226 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-// Inspired by the pdb2mdb tool written by Robert Jordan, thanks Robert!
+using System;
+using System.Collections.Generic;
+using System.IO;
 
-namespace Mono.Cecil.Mdb {
+using Mono.Cecil.Cil;
+using Mono.Collections.Generic;
+using Mono.CompilerServices.SymbolWriter;
 
-	using System;
-	using System.Collections;
+namespace Mono.Cecil.Mdb {
 
-	using Mono.CompilerServices.SymbolWriter;
+#if !READ_ONLY
+	public class MdbWriterProvider : ISymbolWriterProvider {
 
-	using Mono.Cecil;
-	using Mono.Cecil.Cil;
+		public ISymbolWriter GetSymbolWriter (ModuleDefinition module, string fileName)
+		{
+			return new MdbWriter (module.Mvid, fileName);
+		}
 
-	class MdbWriter : ISymbolWriter {
+		public ISymbolWriter GetSymbolWriter (ModuleDefinition module, Stream symbolStream)
+		{
+			throw new NotImplementedException ();
+		}
+	}
 
-		Guid m_mvid;
-		MonoSymbolWriter m_writer;
+	public class MdbWriter : ISymbolWriter {
 
-		Hashtable m_documents;
+		readonly Guid mvid;
+		readonly MonoSymbolWriter writer;
+		readonly Dictionary<string, SourceFile> source_files;
 
 		public MdbWriter (Guid mvid, string assembly)
 		{
-			m_mvid = mvid;
-			m_writer = new MonoSymbolWriter (assembly);
-			m_documents = new Hashtable ();
+			this.mvid = mvid;
+			this.writer = new MonoSymbolWriter (assembly);
+			this.source_files = new Dictionary<string, SourceFile> ();
 		}
 
-		static Instruction [] GetInstructions (MethodBody body)
+		static Collection<Instruction> GetInstructions (MethodBody body)
 		{
-			ArrayList list = new ArrayList ();
-			foreach (Instruction instruction in body.Instructions)
+			var instructions = new Collection<Instruction> ();
+			foreach (var instruction in body.Instructions)
 				if (instruction.SequencePoint != null)
-					list.Add (instruction);
+					instructions.Add (instruction);
 
-			return list.ToArray (typeof (Instruction)) as Instruction [];
+			return instructions;
 		}
 
 		SourceFile GetSourceFile (Document document)
 		{
-			string url = document.Url;
-			SourceFile file = m_documents [url] as SourceFile;
-			if (file != null)
-				return file;
+			var url = document.Url;
+
+			SourceFile source_file;
+			if (source_files.TryGetValue (url, out source_file))
+				return source_file;
 
-			SourceFileEntry entry = m_writer.DefineDocument (url);
-			CompileUnitEntry comp_unit = m_writer.DefineCompilationUnit (entry);
+			var entry = writer.DefineDocument (url);
+			var compile_unit = writer.DefineCompilationUnit (entry);
 
-			file = new SourceFile (comp_unit, entry);
-			m_documents [url] = file;
-			return file;
+			source_file = new SourceFile (compile_unit, entry);
+			source_files.Add (url, source_file);
+			return source_file;
 		}
 
-		void Populate (Instruction [] instructions, int [] offsets,
-			int [] startRows, int [] startCols, int [] endRows, int [] endCols,
-			out SourceFile file)
+		void Populate (Collection<Instruction> instructions, int [] offsets,
+			int [] startRows, int [] startCols, out SourceFile file)
 		{
-			SourceFile document = null;
+			SourceFile source_file = null;
 
-			for (int i = 0; i < instructions.Length; i++) {
-				Instruction instr = (Instruction) instructions [i];
-				offsets [i] = instr.Offset;
+			for (int i = 0; i < instructions.Count; i++) {
+				var instruction = instructions [i];
+				offsets [i] = instruction.Offset;
 
-				if (document == null)
-					document = GetSourceFile (instr.SequencePoint.Document);
+				var sequence_point = instruction.SequencePoint;
+				if (source_file == null)
+					source_file = GetSourceFile (sequence_point.Document);
 
-				startRows [i] = instr.SequencePoint.StartLine;
-				startCols [i] = instr.SequencePoint.StartColumn;
-				endRows [i] = instr.SequencePoint.EndLine;
-				endCols [i] = instr.SequencePoint.EndColumn;
+				startRows [i] = sequence_point.StartLine;
+				startCols [i] = sequence_point.StartColumn;
 			}
 
-			file = document;
+			file = source_file;
 		}
 
 		public void Write (MethodBody body)
 		{
-			SourceMethod meth = new SourceMethod (body.Method);
+			var method = new SourceMethod (body.Method);
 
-			SourceFile file;
-
-			Instruction [] instructions = GetInstructions (body);
-			int length = instructions.Length;
-			if (length == 0)
+			var instructions = GetInstructions (body);
+			int count = instructions.Count;
+			if (count == 0)
 				return;
 
-			int [] offsets = new int [length];
-			int [] startRows = new int [length];
-			int [] startCols = new int [length];
-			int [] endRows = new int [length];
-			int [] endCols = new int [length];
+			var offsets = new int [count];
+			var start_rows = new int [count];
+			var start_cols = new int [count];
+
+			SourceFile file;
+			Populate (instructions, offsets, start_rows, start_cols, out file);
+
+			var builder = writer.OpenMethod (file.CompilationUnit, 0, method);
 
-			Populate (instructions, offsets, startRows, startCols, endRows, endCols, out file);
+			for (int i = 0; i < count; i++)
+				builder.MarkSequencePoint (
+					offsets [i],
+					file.CompilationUnit.SourceFile,
+					start_rows [i],
+					start_cols [i],
+					false);
 
-			SourceMethodBuilder builder = m_writer.OpenMethod (file.CompilationUnit, 0, meth);
+			if (body.HasVariables)
+				AddVariables (body.Variables);
 
-			for (int i = 0; i < length; i++)
-				builder.MarkSequencePoint (offsets [i], file.CompilationUnit.SourceFile,
-							   startRows [i], startCols [i], false);
+			writer.CloseMethod ();
+		}
 
-			MarkVariables (body);
+		readonly static byte [] empty_header = new byte [0];
 
-			m_writer.CloseMethod ();
+		public bool GetDebugHeader (out ImageDebugDirectory directory, out byte [] header)
+		{
+			directory = new ImageDebugDirectory ();
+			header = empty_header;
+			return false;
 		}
 
-		void MarkVariables (MethodBody body)
+		void AddVariables (IList<VariableDefinition> variables)
 		{
-			for (int i = 0; i < body.Variables.Count; i++) {
-				VariableDefinition var = body.Variables [i];
-				m_writer.DefineLocalVariable (i, var.Name);
+			for (int i = 0; i < variables.Count; i++) {
+				var variable = variables [i];
+				writer.DefineLocalVariable (i, variable.Name);
 			}
 		}
 
-		public byte [] GetDebugHeader ()
+		public void Write (MethodSymbols symbols)
 		{
-			// mdb doesn't need a debug header
-			// in the PE file.
-			return new byte [0];
+			var method = new SourceMethodSymbol (symbols);
+
+			var file = GetSourceFile (symbols.Instructions [0].SequencePoint.Document);
+			var builder = writer.OpenMethod (file.CompilationUnit, 0, method);
+			var count = symbols.Instructions.Count;
+
+			for (int i = 0; i < count; i++) {
+				var instruction = symbols.Instructions [i];
+				var sequence_point = instruction.SequencePoint;
+
+				builder.MarkSequencePoint (
+					instruction.Offset,
+					GetSourceFile (sequence_point.Document).CompilationUnit.SourceFile,
+					sequence_point.StartLine,
+					sequence_point.EndLine,
+					false);
+			}
+
+			if (symbols.HasVariables)
+				AddVariables (symbols.Variables);
+
+			writer.CloseMethod ();
 		}
 
 		public void Dispose ()
 		{
-			m_writer.WriteSymbolFile (m_mvid);
+			writer.WriteSymbolFile (mvid);
 		}
 
 		class SourceFile : ISourceFile {
-			CompileUnitEntry comp_unit;
-			SourceFileEntry entry;
+
+			readonly CompileUnitEntry compilation_unit;
+			readonly SourceFileEntry entry;
 
 			public SourceFileEntry Entry {
 				get { return entry; }
 			}
 
 			public CompileUnitEntry CompilationUnit {
-				get { return comp_unit; }
+				get { return compilation_unit; }
 			}
 
 			public SourceFile (CompileUnitEntry comp_unit, SourceFileEntry entry)
 			{
-				this.comp_unit = comp_unit;
+				this.compilation_unit = comp_unit;
 				this.entry = entry;
 			}
 		}
 
+		class SourceMethodSymbol : IMethodDef {
+
+			readonly string name;
+			readonly int token;
+
+			public string Name {
+				get { return name;}
+			}
+
+			public int Token {
+				get { return token; }
+			}
+
+			public SourceMethodSymbol (MethodSymbols symbols)
+			{
+				name = symbols.MethodName;
+				token = symbols.MethodToken.ToInt32 ();
+			}
+		}
+
 		class SourceMethod : IMethodDef {
 
-			MethodDefinition m_method;
+			readonly MethodDefinition method;
 
 			public string Name {
-				get { return m_method.Name; }
+				get { return method.Name; }
 			}
 
 			public int Token {
-				get { return (int) m_method.MetadataToken.ToUInt (); }
+				get { return method.MetadataToken.ToInt32 (); }
 			}
 
 			public SourceMethod (MethodDefinition method)
 			{
-				m_method = method;
+				this.method = method;
 			}
 		}
 	}
+#endif
 }
diff --git a/mcs/class/Mono.Cecil/ChangeLog b/mcs/class/Mono.Cecil/ChangeLog
deleted file mode 100644
index 6622be0..0000000
--- a/mcs/class/Mono.Cecil/ChangeLog
+++ /dev/null
@@ -1,4483 +0,0 @@
-2010-08-13  jbevain  <jbevain at gmail.com>
-
-	[Fix] emit the proper metadata version for net_4_0 assemblies
-
-2010-08-12  Chris Bacon  <chrisbacon76 at gmail.com>
-
-	Moved back to Cecil version 0.6.* PDB files are not supported any
-	more. Symbol writing is not supported.
-
-2010-04-23  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ReflectionWriter.cs: fix writing of exported types.
-
-2010-04-19  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* Mono.Cecil/ReflectionWriter.cs: Partial (forwarders) fix for
-	writing ExternTypes (needed for tuning ML4 correctly)
-
-2010-04-11  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/GenericParameter.cs: override Module properly.
-
-2010-03-29  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/AssemblyStripper.cs: optimize.
-
-2010-02-13  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ReflectionReader.cs: don't cache everything
-	that is context dependent.
-	Based on a patch by Frank Laub  <frank.laub at gmail.com>
-
-2010-02-13  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/MethodReturnType.cs: avoid creating an
-	inner parameter if not necessary.
-
-2010-02-13  Jb Evain  <jbevain at novell.com>
-
-	* TypeAttributes.cs: add Forwarder flag.
-
-2010-02-12  Jb Evain  <jbevain at novell.com>
-
-	* AssemblyStripper.cs: properly set the rva of methods with
-	no body.
-
-2010-01-06	Rodrigo B. de Oliveira <rodrigo at unity.com>
-
-	* Mono.Cecil.csproj
-	  Mono.Cecil/NameObjectCollectionBase.cs
-	  Mono.Cecil/BaseAssemblyResolver.cs
-	  Mono.Cecil/DefaultAssemblyResolver.cs:
-	  	support for compiling Mono.Cecil without
-	  	any references to System.dll using the newly introduced
-	  	"Debug - No System.dll" configuration in Mono.Cecil.csproj;
-
-2009-12-14  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* Mono.Cecil/BaseAssemblyResolver.cs: Update to .net fx 4 beta2
-	version number and reduce code duplication.
-
-2009-10-25  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/BaseAssemblyResolver.cs
-	  Mono.Cecil/StructureReader.cs
-	  Mono.Cecil.Metadata/MetadataWriter.cs:
-		update .net 4.0 version to beta 2.
-
-2009-08-18  Michael Hutchinson  <mhutchinson at novell.com>
-
-	* Mono.Cecil/BaseAssemblyResolver.cs: Search GACs specified in the
-	  MONO_GAC_PREFIX environment variable.
-
-2009-08-06  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/BaseAssemblyResolver.cs:
-	Do not crash when the GAC folder can't be found.
-
-2009-07-28  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/AssemblyStripper.cs: Make all methods share
-	the same body.
-
-2009-07-16  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/AssemblyFactory.cs
-	* Mono.Cecil.Metadata/MetadataWriter.cs
-	* Mono.Cecil.Binary/ImageWriter.cs:
-		Support for properly writing 4.0 dlls.
-		Patch by Carlo Kok  <ck at remobjects.com>.
-
-2009-06-05  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/BaseAssemblyResolver.cs: properly look for the 4.0 corlib
-	when running on Mono.
-
-2009-06-03  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/MetadataResolver.cs: add support for resolving from
-	a ModuleReference.
-
-2009-06-03  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/BaseAssemblyResolver.cs: look for 4.0.0.0 assemblies.
-
-2009-05-21  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ReflectionReader.cs: add support for type forwarders.
-
-2009-05-19  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/TargetRuntime.cs
-	* Mono.Cecil/StructureReader.cs
-	* Mono.Cecil.Metadata/MetadataWriter.cs:
-		add support for .net 4.0 detection.
-
-2009-04-30  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Signatures/SignatureReader.cs: fix reading out extra mods.
-
-2009-04-21  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Cil/SymbolStoreHelper.cs: look for the assembly in the GAC
-	as well if it's not local.
-
-2009-04-03  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Metadata/BlobHeap.cs
-	* Mono.Cecil.Metadata/MetadataWriter.cs:
-		do a better job at emitting a blob heap.
-
-2009-04-01  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ModuleDefinition.cs (Import): add overloads
-	taking a MethodDefinition as a generic context.
-
-2009-04-01  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ReflectionHelper.cs: throw proper exception
-	when importing in an invalid context.
-
-2009-03-12  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/AssemblyStripper.cs (PatchHeap): don't crash
-	if the assembly doesn't contain a specific metadata heap.
-
-2009-03-04  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/StructureWriter.cs: properly set the metadata tokens
-	of newly emitted modules and assemblies. Fix #480729.
-
-2009-01-28  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/MetadataResolver.cs:
-		Add new MetadataResolver.
-
-	* Mono.Cecil/GenericParameter.cs
-	  Mono.Cecil/FieldDefinition.cs
-	  Mono.Cecil/TypeReference.cs
-	  Mono.Cecil/GenericInstanceMethod.cs
-	  Mono.Cecil/IMemberDefinition.cs
-	  Mono.Cecil/TypeDefinition.cs
-	  Mono.Cecil/PropertyReference.cs
-	  Mono.Cecil/EventReference.cs
-	  Mono.Cecil/MethodDefinition.cs
-	  Mono.Cecil/EventDefinition.cs
-	  Mono.Cecil/ModuleDefinition.cs
-	  Mono.Cecil/MethodReference.cs
-	  Mono.Cecil/FieldReference.cs
-	  Mono.Cecil/ParameterDefinition.cs
-	  Mono.Cecil/PropertyDefinition.cs
-	  Mono.Cecil/ParameterReference.cs
-	  Mono.Cecil.Cil/VariableReference.cs
-	  Mono.Cecil.Cil/VariableDefinition.cs:
-		Add Resolve to Definition methods on References.
-
-	* Mono.Cecil.dll.sources, Mono.Cecil.csproj: add MetadataResolver.cs
-
-2009-01-05  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ReflectionHelper.cs
-	* Mono.Cecil/DefaultImporter.cs:
-		Adjust references's generic parameter count on import.
-
-2009-01-05  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* CodeReader.cs: Do not call VisitVariableDefinitionCollection
-	unless LocalVarToken is different from zero.
-	* CodeWriter.cs: Use HasVariables and HasExceptionHandlers.
-	Write zero, not TokenType.Signature, for LocalVarToken if no
-	variable is defined. That should fix the problem with unsign
-	* Mono.Cecil.Cil/MethodBody.cs: Add HasExceptionHandlers,
-	HasVariables and HasScopes to avoid creating empty collections
-	inside Cecil. There is no HasInstruction because there's always
-	something if MethodDefinition.HasBody is true (i.e. a MethodBody
-	exists). [re-apply r1222198]
-
-2008-12-29  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* Mono.Cecil/MethodReturnType.cs: Override ToString so we can, by
-	default, display something useful about the return type.
-
-2008-12-29  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* Mono.Cecil/GenericInstanceMethod.cs,
-	* Mono.Cecil/GenericInstanceType.cs,
-	* Mono.Cecil/IGenericInstance.cs: Introduce HasGenericArguments into
-	the interface and implement it inside GenericInstance[Method|Type]
-
-2008-12-16  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Signatures/SignatureReader.cs: fix reading of wrong
-	modifiers.
-
-2008-12-01  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* Mono.Cecil.Signatures/CustomAttrib.cs: Define reusable Empty
-	arrays for both FixedArg and NamedArg.
-	* Mono.Cecil.Signatures/SignatureReader.cs: Avoid creating empty
-	ParameterDefinitionCollection on constructors. Use the new Empty
-	arrays when possible.
-
-2008-12-01  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* Mono.Cecil/MethodReference.cs: Make HasParameters virtual
-	* Mono.Cecil/MethodSpecification.cs: Override HasParameters to make
-	sure we're tracking the same object as the Parameters property does.
-	* Mono.Cecil/PropertyDefinition.cs: Implement HasParameters based on
-	the GetMethod, SetMethod or its own parameter collection.
-	* Mono.Cecil/PropertyReference.cs: Add abstract HasParameters property
-
-2008-11-27  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ExternTypeCollection.cs: don't attach types as they
-	are already attached to the current module.
-
-2008-11-22  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* Mono.Cecil/GenericParameter.cs,
-	* Mono.Cecil/ICustomAttributeProvider.cs,
-	* Mono.Cecil/CallSite.cs,
-	* Mono.Cecil/IMethodSignature.cs,
-	* Mono.Cecil/FunctionPointerType.cs,
-	* Mono.Cecil/FieldDefinition.cs,
-	* Mono.Cecil/TypeReference.cs,
-	* Mono.Cecil/GenericInstanceMethod.cs,
-	* Mono.Cecil/IHasSecurity.cs,
-	* Mono.Cecil/MethodReturnType.cs,
-	* Mono.Cecil/AssemblyDefinition.cs,
-	* Mono.Cecil/TypeDefinition.cs,
-	* Mono.Cecil/MethodDefinition.cs,
-	* Mono.Cecil/EventDefinition.cs,
-	* Mono.Cecil/ModuleDefinition.cs,
-	* Mono.Cecil/MethodReference.cs,
-	* Mono.Cecil/ReflectionWriter.cs,
-	* Mono.Cecil/ParameterDefinition.cs,
-	* Mono.Cecil/PropertyDefinition.cs,
-	* Mono.Cecil/IGenericParameterProvider.cs:
-		Add boolean Has{x} properties so Cecil consumers are able
-		to avoid the lazy allocations that would be made for an
-		empty {x}. Use the Has{x} properties inside Cecil (some
-		cases might be missing).
-
-2008-11-16  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* Mono.Cecil/TypeDefinition.cs (IsValueType): Inline the call to
-	IsEnum and remove the double null check being done.
-
-2008-11-14  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ParameterAttributes.cs: add Retval and Lcid.
-	* Mono.Cecil/ParameterDefinition.cs: add Is* property accordingly.
-
-2008-11-12  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Signatures/SignatureReader.cs: properly construct
-	TypeReferences when reading them from custom attributes data.
-
-2008-11-11  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ReflectionReader.cs (AddTypeRef):
-	protect against invalid token.
-
-2008-11-11  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Cil/CodeWriter.cs: fix writing of catch handlers
-	of a generic exception type.
-
-2008-11-06  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Metadata/MetadataWriter.cs: properly clean
-	the runtime image in case we're unsigning an assembly.
-
-2008-11-01  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Binary/RuntimeImage.cs: add [Flags] attribute.
-	Fixes #440574.
-
-2008-10-27  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/AssemblyInfo.cs: bump version.
-
-2008-10-27  Zoltan Varga  <vargaz at gmail.com>
-
-	* Mono.Cecil/AssemblyStripper.cs: Strip locals info too.
-
-2008-10-17  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ReflectionWriter.cs: remove dead code.
-	* Mono.Cecil.Cil/ISymbolWriter.cs: simplify Write method.
-
-2008-10-17	Rodrigo B. de Oliveira <rodrigobamboo at gmail.com>
-
-	* Mono.Cecil.Cil/CodeWriter.cs
-	* Mono.Cecil.Cil/MethodBody.cs:
-		mcs-cecil-local-var-1.diff patch enabling better handling of local
-		variable debugging information applied.
-		Patch by Juerg Billeter <j at bitron.ch>
-
-2008-10-17	Rodrigo B. de Oliveira <rodrigobamboo at gmail.com>
-
-	* Mono.Cecil/ConstructorCollection.cs
-	* Mono.Cecil.Binary/ImageReader.cs:
-		Compact Framework compilation fixes.
-
-2008-10-14  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/SecurityDeclarationReader.cs: protect against
-	wrongly formatted security attributes.
-
-2008-10-12  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* Mono.Cecil.Cil/SymbolStoreHelper.cs: Change two "static readonly"
-	fields into const.
-	[Found using Gendarme PreferLiteralOverInitOnlyFieldsRule]
-
-2008-10-11  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* Mono.Cecil/ConstructorCollection.cs: Fix a NRE if a null parameter
-	is provided to one of the GetConstructor overloads.
-
-2008-10-07  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ReflectionReader.cs: don't cache generic typespecs,
-	as some compiler reuse generic instance signatures with different
-	generic contexts.
-
-2008-10-01  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.dll.sources
-	* Mono.Cecil.csproj
-	* Mono.Cecil/AssemblyStripper.cs
-	* Mono.Cecil.Cil/CodeWriter.cs
-	* Mono.Cecil.Metadata/MetadataWriter.cs: add a new AssemblyStripper
-	class to be used by a tool to empty method bodies for assemblies
-	that have been AOTed.
-
-2008-09-29  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/GenericParameter.cs: override TypeReference.Scope.
-
-2008-09-25  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Binary/MemoryBinaryWriter.cs: Make sure QuadAlign
-	properly enlarge the memory stream if needed.
-	Patch by Regis Vaquette <rvaquette at yahoo.fr>.
-
-2008-09-18  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ReflectionReader.cs (GetModifierType): protect against
-	zero rids.
-
-2008-09-15  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Signatures/SignatureReader.cs: fix regression
-	in reading custom mods.
-
-2008-09-04  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Signatures/SignatureReader.cs: better read modifiers on
-	return types and parameters.
-
-2008-09-02  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Metadata/UserStringsHeap.cs: fix reading of some unicode fu.
-
-2008-09-02  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/MethodAttributes.cs: add CheckAccessOnOverride.
-	* Mono.Cecil/MethodDefinition.cs: add IsCheckAccessOnOverride.
-
-2008-09-02  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/GenericParameter.cs: fix Has*Constraint properties.
-
-2008-09-02  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/SecurityDeclarationReader.cs: fix reading
-	multiple permissions. Patch by Carsten Keutmann.
-
-2008-09-01  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ReflectionReader.cs: properly compose mod and byref types
-	for parameters and return types.
-	Based on a patch by Carlo Kok <ck at remobjects.com>
-
-2008-09-01  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Signatures/SignatureReader.cs: Avoid a crash
-	when looking for an enumeration definition when the assembly
-	could not be resolved. Patch by Carlo Kok <ck at remobjects.com>
-
-2008-09-01  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ReflectionWriter.cs: fix for writing null string
-	constants. Patch by Ewout Prangsma <ewout at tallapplications.com>.
-
-2008-06-28  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* Mono.Cecil.dll.sources
-	* Mono.Xml/MiniParser.cs:
-		Remove MiniParser as it is no more required (replaced by
-		SmallXmlParser) and save a few KB in the binary size
-
-	* Mono.Xml/SecurityParser.cs
-	* Mono.Xml/SmallXmlParser.cs:
-		Seal non-visible classes.
-		[Found using Gendarme AvoidUnsealedUninheritedInternalClassesRule]
-
-	* Mono.Cecil.Signatures/GenericArg.cs:
-		Seal non-visible classes.
-		[Found using Gendarme AvoidUnsealedUninheritedInternalClassesRule]
-
-	* Mono.Cecil.Binary/CopyImageVisitor.cs
-	* Mono.Cecil.Binary/ImageInitializer.cs
-	* Mono.Cecil.Binary/ImageReader.cs
-	* Mono.Cecil.Binary/ImageWriter.cs
-	* Mono.Cecil.Binary/ResourceReader.cs
-	* Mono.Cecil.Binary/ResourceWriter.cs:
-		Seal non-visible classes.
-		[Found using Gendarme AvoidUnsealedUninheritedInternalClassesRule]
-
-	* Mono.Cecil.Metadata/CultureUtils.cs
-	* Mono.Cecil.Metadata/MetadataInitializer.cs
-	* Mono.Cecil.Metadata/MetadataReader.cs
-	* Mono.Cecil.Metadata/MetadataRowReader.cs
-	* Mono.Cecil.Metadata/MetadataRowWriter.cs
-	* Mono.Cecil.Metadata/MetadataTableReader.cs
-	* Mono.Cecil.Metadata/Utilities.cs:
-		Seal non-visible classes.
-		[Found using Gendarme AvoidUnsealedUninheritedInternalClassesRule]
-
-	* Mono.Cecil.Cil/CodeReader.cs
-	* Mono.Cecil.Cil/OpCodeNames.cs
-	* Mono.Cecil.Cil/CodeWriter.cs
-	* Mono.Cecil.Cil/SymbolStoreHelper.cs:
-		Seal non-visible classes.
-		[Found using Gendarme AvoidUnsealedUninheritedInternalClassesRule]
-
-	* Mono.Cecil/SecurityDeclarationReader.cs
-	* Mono.Cecil/NullReferenceImporter.cs
-	* Mono.Cecil/TableComparers.cs:
-		Seal non-visible classes.
-		[Found using Gendarme AvoidUnsealedUninheritedInternalClassesRule]
-
-	* Mono.Cecil/AssemblyNameReference.cs:
-		Use String.Length > 0 instead of comparing to String.Empty
-		[Found using Gendarme CompareWithEmptyStringEfficientlyRule]
-
-	* Mono.Cecil.Metadata/MetadataToken.cs:
-		Add a private Equals(MetadataToken) method. This allows the
-		existing operators (== and !=) to avoid boxing, since they
-		will prefer it to the Equals(object) method.
-		[Found using Gendarme ImplementEqualsTypeRule]
-
-	* Mono.Cecil.Cil/GuidAttribute.cs:
-		Seal attribute class
-		[Found using Gendarme AvoidUnsealedConcreteAttributesRule]
-
-	* Mono.Cecil.Signatures/SignatureWriter.cs:
-		Fix typo.
-		[Found using Gendarme AvoidUnneededUnboxingRule]
-
-2008-06-06  Jb Evain  <jbevain at novell.com>
-
-	* CodeGen/cecil.xml: constrained. is of type InlineType.
-	* Mono.Cecil.Cil/OpCodes.cs: re-generate.
-
-2008-05-14  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ReflectionWriter.cs:
-		Only create the GenericParameterConstraint table if needed.
-		Patch by Richard Flamsholt <richard.flamsholt at gmail.com>.
-
-	* Mono.Cecil.Cil/MethodBody.cs:
-		Fix typo in switch cloning. Patch by
-		Rune Glerup <rune.glerup at gmail.com>.
-
-2008-05-06  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Signatures/CustomMod.cs:
-		Introduce a EmptyCustomMod static field.
-	* Mono.Cecil/ReflectionWriter.cs
-	* Mono.Cecil.Signatures/SignatureReader.cs:
-		Use EmptyCustomMod instead of instanciating
-		empty arrays of CustomMod.
-		Based on a patch by Carlo Kok <ck at remobjects.com>.
-
-	* Mono.Cecil.Metadata/MetadataRowReader.cs
-	* Mono.Cecil.Metadata/MetadataRowWriter.cs:
-		Cache row counters delegates.
-		Based on a patch by Carlo Kok <ck at remobjects.com>.
-
-	* Mono.Cecil/TypeDefinition.cs
-	* Mono.Cecil/MethodDefinition.cs
-	* Mono.Cecil/DefaultImporter.cs
-	* Mono.Cecil/ReflectionHelper.cs:
-		Restore the generic context values instead of blindly
-		overriding them. Based on a patch by Dzintars Avots.
-
-	* Mono.Cecil/MarshalSpec.cs (CloneInto): add new method
-	to clone MarshalSpec into a new container.
-
-	* Mono.Cecil/ParameterDefinition.cs (Clone):
-	* Mono.Cecil/FieldDefinition.cs (Clone):
-	Use the new MarshalSpec.CloneInto method.
-	Based on a patch by Dzintars Avots <davots at coverity.com>.
-
-	* Mono.Cecil/MethodDefinition.cs (Clone): fix cloning of
-	return types when they don't have a parameter.
-	Patch by Dzintars Avots <davots at coverity.com>.
-
-	* Mono.Cecil.Cil/CodeWriter.cs (ComputeMaxStack): compute max
-	stack more precisely. Based on a patch by Daniel Grunwald,
-	Contains code from Cecil.FlowAnalysis.
-
-	* Mono.Cecil.Cil/MethodBody.cs (Clone): make sure the
-	instruction linked list is properly constructed.
-
-2008-04-19  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* Mono.Cecil.Cil/CodeReader.cs:
-	* Mono.Cecil.Cil/ISymbolReader.cs:
-		Move reading of debugging symbols where it's possible to
-		reuse the existing Hashtable (offset, Instruction) in
-		the debugging libraries. Change interface to allow
-		passing the Hashtable.
-
-2008-04-15  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* Mono.Cecil.csproj
-	* Mono.Cecil.dll.sources:
-		Add Mono.Cecil.Cil/OpCodeNames.cs to the build.
-
-	* Mono.Cecil.Cil/OpCodeNames.cs
-	* Mono.Cecil.Cil/OpCode.cs
-	* Mono.Cecil.Cil/OpCodes.cs:
-		Reduce the OpCode struct size to 8 bytes (instead of 36).
-		Based on the SRE.OpCode code found in corlib.
-
-2008-04-13  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* Mono.Cecil/AssemblyDefinition.cs:
-		Short circut loop when module is found.
-
-2008-04-08  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/SecurityDeclaration.cs
-	  Mono.Cecil/SecurityDeclarationReader.cs:
-		Implement resolving of SecurityDeclarations.
-
-2008-03-31  Jb Evain  <jbevain at novell.com>
-
-	Integrate patches from Dzintars Avots <davots at coverity.com>
-
-	* Mono.Cecil/GenericParameter.cs
-	  Mono.Cecil/TypeDefinition.cs
-	  Mono.Cecil/DefaultImporter.cs
-	  Mono.Cecil/MethodDefinition.cs:
-		Fix generic parameter cloning to avoid issues when
-		the constraint reference the parameter itself.
-
-	* Mono.Cecil/MethodBody.cs (Clone): deals with switches.
-
-	* Mono.Cecil/MethodBody.cs (Clone): clone the name of
-	the local variables.
-
-2008-03-30  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* Mono.Cecil/ReflectionReader.cs:
-		Avoid creating a BinaryReader+MemoryStream on LE archs for
-		GetConstant. Saves about 400KB for Gendarme.
-		Avoid a BinaryReader creation in GetConstant which saves
-		about 50KB for Gendarme.
-	* Mono.Cecil.Metadata/GuidHeap.cs:
-		Compute ideal capacity for Hashtable. Avoid memory allocation
-		if a single GUID is present (which is the case for all of
-		Mono 2.0 assemblies). Saves a whole 2KB for Gendarme ;-)
-	* Mono.Cecil.Binary/Image.cs:
-		Add internal GetSectionAtVirtualAddress to avoid creating
-		BinaryReader in some cases.
-	* Mono.Cecil.Binary/ResourceReader.cs:
-		Avoid a BinaryReader creation in SetInitialValue which saves
-		about 3000KB for Gendarme.
-
-2008-03-08  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Binary/CopyImageVisitor.cs:
-		Copy the cliheaders flags over the new assembly.
-		Patch by Oleksiy Gapotchenko <alex.s.gap at gmail.com>
-
-2008-03-08  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* Mono.Cecil.Cil/CodeReader.cs:
-		Use one and only Hashtable for caching instructions offsets.
-		Save tons of precious memory.
-
-2008-03-08  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* Mono.Cecil.Cil/OpCode.cs
-	* Mono.Cecil.Binary/RVA.cs
-	* Mono.Cecil.Binary/DataDirectory.cs:
-		Avoid boxing/unboxing when == or != operators are used.
-		Results in significant memory savings for Gendarme.
-
-2008-03-08  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ReflectionReader.cs:
-		Protect from malformed RIDs.
-	* Mono.Cecil/AggressiveReflectionReader.cs:
-		Create the m_events and m_properties tables
-		even if they contains 0 elements.
-
-2008-02-26  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Binary/ImageReader.cs:
-		Avoid throwing non desired exceptions.
-
-2008-02-25  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ReflectionReader.cs:
-		Avoid throwing in case a constant
-		is of type object.
-
-2008-02-19  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/DefaultImporter.cs:
-		Add support for importing function pointers. Based on a
-		patch by Andrea Carlo Ornstein <andrea.ornstein at st.com>.
-
-	* Mono.Cecil/ModuleDefinition.cs:
-		Add a Inject(FieldDef) overload for symmetry.
-		Patch by Andrea Carlo Ornstein <andrea.ornstein at st.com>.
-
-2008-02-16  Jb Evain  <jbevain at novell.com>
-
-	* CodeGen/templates/MetadataRowReader.cs
-	  CodeGen/templates/Utilities.cs
-	  CodeGen/templates/MetadataRowWriter.cs
-	  Mono.Cecil.Metadata/MetadataRowReader.cs
-	  Mono.Cecil.Metadata/MetadataRowWriter.cs
-	  Mono.Cecil.Metadata/Utilities.cs:
-		Use a good old traditional array instead of an
-		Hashtable. Based on a patch by Carlo Kok <ck at remobjects.com>.
-
-2008-02-07  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/BaseAssemblyResolver.cs:
-		deal with 2.1 corlib on Mono.
-
-2008-02-07  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/MethodDefinition.cs:
-		add last Is method for semantics property.
-
-2008-02-05  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/TypeDefinition.cs:
-		System.Enum by itself is not a value type.
-		Fix #351879.
-
-	* Mono.Cecil.Signatures/SignatureReader.cs:
-		Properly read fnptr local variables. Fix #358507.
-
-	* Mono.Cecil.Binary/DefaultImporter.cs:
-		Import modifiers and sentinels, patch from:
-		Andrea Carlo Ornstein <andrea.ornstein at st.com>
-
-2008-02-04  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Binary/CLIHeader.cs
-	  Mono.Cecil.Binary/ImageWriter.cs
-	  Mono.Cecil.Metadata/MetadataWriter.cs:
-		emit the proper cli header version for 1.1 and 2.0 cases.
-
-	* Mono.Cecil.Cil/CilWorker.cs: add callsite overloads.
-
-2008-01-10  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ReflectionHelper.cs: deal with complex arrays.
-
-2008-01-07  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Cil/CilWorker.cs:
-		Allow ldarg.s/ldloc.s/stloc.s to take a byte
-		instead of the actual parameter or variable. Fix #350606.
-
-2008-01-07  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ArrayType.cs:
-		Add a constructor with the array rank. Fix #351924.
-		Based on a patch by Rolf Kvinge <rkvinge at novell.com>.
-
-2008-01-04  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Cil/CilWorker.cs:
-		Allow ldarg/ldloc/stloc to take a integer
-		instead of the actual parameter or variable. Fix #350606.
-
-2008-01-04  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/DefaultImporter.cs:
-	  Mono.Cecil/ReflectionHelper.cs:
-		Properly import nested types. Fix #351133.
-
-2008-01-03  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ReflectionWriter.cs:
-		Properly emit null type constants. Fix #351141.
-		Patch by Rolf Kvinge <rkvinge at novell.com>.
-
-2007-12-30  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Cil/CilWorker.cs:
-		Check for null arguments. Fix #350857.
-
-2007-12-21  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/AggressiveReflectionReader.cs
-	  Mono.Cecil.Signatures/SignatureReader.cs:
-		Don't crash on force resolve for nested arrays
-		in custom attributes.
-
-2007-12-17  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/IMemberDefinition.cs: make IMemberDefinition
-	implement ICustomAttributeProvider.
-
-2007-12-15  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Binary/AggressiveReflectionReader.cs: protect
-	against zeroed tokens.
-
-2007-12-15  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Binary/ImageReader.cs: fix crash when reading
-	some non .net binaries.
-
-2007-11-22  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* Mono.Cecil/SecurityDeclarationReader.cs:	Change default read
-	value to true. Fix reading 2.0 security	declaration format used by
-	MS compilers (#343553).
-
-2007-11-15	Rodrigo B. de Oliveira <rodrigobamboo at gmail.com>
-
-	* Mono.Cecil.Cil/MethodBody.cs:
-		Fixed Optimize for ldc_i4
-
-2007-11-15	Rodrigo B. de Oliveira <rodrigobamboo at gmail.com>
-
-	* Mono.Cecil.Cil/DocumentLanguage.cs
-	  Mono.Cecil.Cil/DocumentLanguageVendor.cs:
-	  	Compact Framework support by using Guid(string) if CF_2_0 is defined
-
-2007-11-01  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/MethodReturnType.cs: based on a patch by
-	Ivan <ivanjh at gmail.com>. Fix for cloning methods with
-	marshalers on return type.
-
-2007-10-31  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Binary/ImageReader.cs: fix for the case where
-	the export table export zero functions.
-
-2007-10-18  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Cil/MethodBody.cs: Add an Optimize method which
-	is the opposite of Simplify. Based on a patch by Carlo.
-
-	* Mono.Cecil.Cil/CodeWriter.cs: don't care about reducing MaxStack.
-
-2007-10-11  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/TypeReference.cs: add a IsNested helper property.
-
-	* Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil.Signatures/SignatureWriter.cs:
-		Integrate patch for Carlo, start working on enum writing
-		in custom attribute.
-
-2007-10-09  Nestor Salceda  <nestor.salceda at gmail.com>
-
-	* mono-cecil.pc.in:  Updated the version number.
-
-2007-10-09  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Cil/Instruction.cs
-	  Mono.Cecil.Cil/CodeWriter.cs:
-		Move CodeWriter.GetSize (Instruction) to Instruction.
-
-	Integration of patches from Carlo Kok <ck at remobjects.com>:
-
-	* Mono.Cecil.Cil/Document.cs
-	  Mono.Cecil.Cil/DocumentType.cs
-	  Mono.Cecil.Cil/DocumentLanguage.cs
-	  Mono.Cecil.Cil/DocumentLanguageVendor.cs:
-		Use plain guids for Document properties so it's easy
-		for third party document providers to use their own.
-
-	* Mono.Cecil/ParameterDefinition.cs:
-		Clean or set the HasFieldMarshal flag when setting
-		MarshalSpecs on parameters.
-
-	* Mono.Cecil/AssemblyNameReference.cs:
-		Protect against null culture.
-
-	* Mono.Cecil/FieldDefinition.cs:
-		Clean or set the HasFieldMarshal flag when setting
-		MarshalSpecs on fields.
-
-	* Mono.Cecil/GenericInstanceType.cs:
-		Properly initialize the IsValueType from the element type.
-
-2007-10-09  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ReflectionWriter.cs: check for duplicates
-	in the MemberRef row.
-
-2007-10-08  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* standalone.make: Revert changes so standalone Cecil (in SVN) can
-	be built using this Makefile (required for Gendarme);
-	* README: Update build and bug instructions.
-
-2007-10-07  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/BaseAssemblyResolver.cs: first lookup assemblies
-	in the specified directories before trying the framework dir.
-
-2007-10-06  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Cil/OpCode.cs: make that a struct again, it
-	make the 2.1 profile explode. Will investigate why.
-
-2007-10-06  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/MethodCallingConvention.cs: Not a [Flag]
-
-2007-10-05  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Cil/OpCode.cs: Change OpCode from struct to class
-	to avoid copying everything everytime.
-
-2007-09-28  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/SecurityDeclarationReader.cs:
-		Adapt patch from Carlo Kok  <ck at remobjects.com>.
-		Properly read unicode string constants.
-
-	* Mono.Cecil/SecurityDeclarationReader.cs:
-		Adapt patch from Carlo Kok  <ck at remobjects.com>.
-		For some MS assemblies, the security declaration contains
-		one zero byte.
-
-2007-09-24  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ModuleDefinition.cs: after a FullLoad, the symbol
-	reader is not needed anymore.
-
-2007-09-18  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Cil/MethodBody.cs:
-		Adapt a patch from Ivan <ivanjh at gmail.com>.
-		Fix cloning of the This parameter.
-
-2007-09-12  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil.Signatures/SignatureReader.cs
-	  Mono.Cecil.Signatures/TypeSpec.cs
-	  Mono.Cecil.Signatures/SignatureWriter.cs:
-		Deal with custom mods on typespecs.
-
-2007-09-12  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Binary/ImageReader.cs: some 64bits assemblies
-	have a strange header without import tables.
-
-2007-09-09  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/GenericContext.cs
-	  Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/DefaultImporter.cs:
-		Better handling of generic instances of references, where
-		the number of generic parameters is not known.
-
-2007-09-06  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/MethodDefinition: add Is** methods for MethodImplAttributes.
-
-2007-09-04  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ReflectionWriter.cs:
-		Adapt a patch by Ewout Prangsma <ewout at tallapplications.com>.
-		Cache the typespec tokens instead of the typespec themselves
-		because GenericParameters are somethimes considered as typespecs.
-
-2007-08-28  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Cil/CodeWriter.cs
-	  Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil.Cil/SymbolStoreHelper.cs
-	  Mono.Cecil.Signatures/SignatureWriter.cs:
-		Generate proper variables signatures for symbols
-		stores.
-
-2007-08-19  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Cil/CodeReader.cs:
-		Deal with generic exceptions.
-
-2007-08-15  Jb Evain  <jbevain at novell.com>
-
-	* CodeGen/cecil.xml,
-	  Mono.Cecil.Cil/OpCodes.cs:
-		Fix bug spotted by Jesse Jones, ldelem.any has a
-		stack behavior pop of popref, popi.
-
-2007-08-15  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/TypeReference.cs
-	  Mono.Cecil/TypeSpecification.cs:
-		TypeSpecification.Module return the module of the elemen
-		type now.
-
-2007-08-13  Rodrigo B. de Oliveira <rodrigobamboo at gmail.com>
-
-	* default.build
-	  Mono.Cecil/AssemblyInfo.cs:
-		Ability to pass custom defines to the c# compiler through
-		the csc.defines property. KEYFILE can be used to force
-		an AssemblyKeyFile attribute on AssemblyInfo.cs so strongly
-		signed versions of Mono.Cecil can be produced on .net 1.1,
-		cf 1.0 and cf 2.0.
-
-2007-08-13  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Cil/CilWorker.cs:
-		Fix InsertBefore.
-
-2007-08-06  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Cil/CilWorker.cs:
-		Fix the linked list after an InsertBefore, InsertAfter.
-
-2007-08-02  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/GenericParameter.cs
-	  Mono.Cecil/FieldDefinition.cs
-	  Mono.Cecil/TypeDefinition.cs
-	  Mono.Cecil/MethodDefinition.cs
-	  Mono.Cecil/EventDefinition.cs
-	  Mono.Cecil/PInvokeInfo.cs
-	  Mono.Cecil/Resource.cs
-	  Mono.Cecil/ParameterDefinition.cs
-	  Mono.Cecil/PropertyDefinition.cs:
-
-		Add Isxxx properties based on the xxxAttributes enums.
-
-2007-07-23  Raja R Harinath  <rharinath at novell.com>
-
-	Fix 'make warnings'.
-	* Makefile (LIBRARY_PACKAGE): Set to none.
-	(install-local): Remove.
-
-2007-07-21  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/TypeReference.cs
-	  Mono.Cecil/TypeSpecification.cs:
-		Add a new GetOriginalType () method.
-
-	* Mono.Cecil/MethodReference.cs
-	  Mono.Cecil/MethodSpecification.cs:
-		Add a new GetOriginalMethod () method.
-
-2007-07-19  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/AssemblyFactory.cs
-	  Mono.Cecil.Binary/Image.cs:
-		Update the fileinfo after writing an assembly
-		to a file.
-
-2007-07-19  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil.Cil/CodeReader.cs
-	  Mono.Cecil.Signature/SignatureReader.cs:
-		Better handling of the sentil in the varargs methods.
-
-	* Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/SentinelType.cs
-	  Mono.Cecil.Cil/CodeWriter.cs:
-	  Mono.Cecil.Signatures/SignatureReader.cs:
-		Fix handling of varargs methods.
-
-2007-07-18  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Cil/CodeReader.cs
-	  Mono.Cecil.Cil/CodeWriter.cs:
-		Deal with non-sense instructions that some
-		obfuscators emit.
-
-	* Mono.Cecil/AggressiveReflectionReader.cs:
-		Deal with out of range properties.
-	* Mono.Cecil.Metadata/StringsHeap.cs:
-		Deal with out of range string indexes.
-
-2007-07-17  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/AggressiveReflectionReader.cs:
-		Add some gards against zeroed tokens.
-
-	* Mono.Cecil.Metadata/Utilities.cs:
-		Return zero instead of throwing on invalid tags.
-		Allow Cecil to read assemblies partially broken
-		by some obfuscators.
-
-2007-07-14  Gert Driesen  <drieseng at users.sourceforge.net>
-
-	* default.build: Fix relative path to key. Avoid use of ugly foreach
-	contruct. Spaces to tabs.
-	* Mono.Cecil.csproj: Fix relative path to key.
-	* standalone.make: Fix relative path to key and config.make.
-
-2007-07-03  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/BaseAssemblyResolver.cs:
-		Expose a way to add default directories
-		where the assemblies are first looked for.
-
-2007-06-20  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/IReferenceImporter.cs => IImporter.cs
-	  Mono.Cecil/DefaultReferenceImporter.cs => DefaultImporter.cs
-
-	* Mono.Cecil/ReflectionHelper.cs
-	  Mono.Cecil/DefaultReferenceImporter.cs
-	  Mono.Cecil/ModuleDefinition.cs:
-		Move Cecil types import logic into
-		the DefaultReferenceImporter.
-
-		Needed by the merger and the extractor.
-
-2007-06-19  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Cil/MethodBody.cs:
-		Avoid invalid cast by properly simplifying
-		instructions.
-
-	* Mono.Cecil.Cil/OpCodes.cs:
-	  CodeGen/cecil.xml:
-		leave.s is a macro instruction.
-
-	* Mono.Cecil/TypeDefinition.cs
-	  Mono.Cecil/ParameterDefinition.cs:
-		Fix cloning.
-
-2007-06-18  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ReflectionReader.cs:
-		Fix custom mods for fields ref.
-
-2007-06-13  Jb Evain  <jbevain at novell.com>
-
-	Integrated patches by:
-	Paul Apostolescu <papostolescu at fortifysoftware.com>
-
-	* patch3:
-	  Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil.Signatures/SignatureWriter.cs:
-		In named args, objects are encoded as boxed.
-
-	* patch1:
-	  Mono.Cecil/IMemberDefinition.cs
-	  Mono.Cecil/Constants.cs
-	  Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/AggressiveReflectionReader.cs:
-		Do not take into account special _Deleted
-		members.
-
-	* patch6:
-	  Mono.Cecil/StructureReader.cs:
-		Read the flags of the references as well.
-
-	* patch5:
-	  Mono.Cecil.Metadata/UserStringsHeap.cs:
-		Don't bother getting a string from the bytes
-		if the length is < 2 (0, or 0 + an encoding flag)
-
-	* patch4:
-	  Mono.Cecil/ReflectionHelper.cs:
-		Update the value type flags of types
-		when they are imported if the type
-		reference was first seen as a type reference.
-
-	* patch2:
-	  Mono.Cecil.Signature/SignatureWriter.cs:
-		Patch to handle nullref values for types in
-		custom attributes arguments.
-
-2007-06-13  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/StructureWriter.cs,
-	  Mono.Cecil/ReflectionWriter.cs:
-		Revert the on demand creation of memberref.
-
-2007-06-12  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/CallSite.cs
-	  Mono.Cecil/ModuleReference.cs
-	  Mono.Cecil/CustomAttribute.cs
-	  Mono.Cecil/AssemblyDefinition.cs
-	  Mono.Cecil/SecurityDeclaration.cs
-	  Mono.Cecil/AssemblyNameReference.cs
-	  Mono.Cecil/MemberReference.cs
-	  Mono.Cecil/Resource.cs
-	  Mono.Cecil/ParameterReference.cs:
-		Implement explicitely IAnnotationProvider.
-
-2007-06-05  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/AssemblyNameReference.cs:
-		Cache the fullname when possible.
-
-2007-05-31  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ModuleDefinition.cs:
-		Add types to the module and members to the context
-		on inject.
-
-	* Mono.Cecil/BaseAssemblyResolver.cs:
-		Improve resolve, works for people requiring
-		.net 1.0 assemblies when they only have 1.1.
-
-2007-05-30  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/DefaultAssemblyResolver.cs:
-		Add a RegisterAssembly method to register an
-		assembly to the cache without having to resolve it.
-
-	* Mono.Cecil/DefaultReferenceImporter.cs:
-		Make methods virtual.
-
-	* Mono.Cecil.dll.sources
-	  Mono.Cecil.csproj
-	  Mono.Cecil/ReflectionHelper.cs
-	  Mono.Cecil/IReferenceImporter.cs
-	  Mono.Cecil/FieldDefinition.cs
-	  Mono.Cecil/CustomAttribute.cs
-	  Mono.Cecil/ImportContext.cs
-	  Mono.Cecil/NullReferenceImporter.cs
-	  Mono.Cecil/MethodDefinition.cs
-	  Mono.Cecil/EventDefinition.cs
-	  Mono.Cecil/ReflectionController.cs
-	  Mono.Cecil/ModuleDefinition.cs
-	  Mono.Cecil/GenericContext.cs
-	  Mono.Cecil/DefaultReferenceImporter.cs
-	  Mono.Cecil/PropertyDefinition.cs:
-		Provide a IReferenceImporter to customize how
-		types are injected from an assembly to another.
-
-2007-05-28  Jb Evain  <jbevain at novell.com>
-
-	* Borrow annotations concept from boo ast node.
-	  Should be useful for the linker.
-
-2007-05-23  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/StructureWriter.cs
-	  Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil.Cil/CodeWriter.cs:
-		Emit MemberReferences rows on demand.
-
-2007-05-16  Jb Evain  <jb at nurv.fr>
-
-	* Mono.Cecil.Binary/ImageReader.cs:
-		Fix reading of the debug header for
-		headers half way emitted by .net SRE.
-
-	* Mono.Cecil/BaseAssemblyResolver:
-		try to resolve unversionned assemblies.
-
-2007-05-09  Jb Evain  <jb at nurv.fr>
-
-	* Mono.Cecil.Binary/Image.cs:
-		Throw when rva cannot be resolved.
-
-	* Mono.Cecil.csproj
-	  Mono.Cecil.Binary/ExportTable.cs
-	  Mono.Cecil.Binary/BaseImageVisitor.cs
-	  Mono.Cecil.Binary/ImageReader.cs
-	  Mono.Cecil.Binary/IBinaryVisitor.cs
-	  Mono.Cecil.Binary/Image.cs
-	  Mono.Cecil.Binary/ImageInitializer.cs
-	  Mono.Cecil/StructureReader.cs
-	  Mono.Cecil/ReflectionWriter.cs:
-		When present, read the export table, so that people
-		reading non managed assemblies can use the Mono.Cecil.Binary
-		stuff.
-
-		Fix the bug when section name is 8 char long.
-
-		Based on a patch by Pavel Savara <pavel.savara at gmail.com>.
-
-2007-04-27  Jb Evain  <jb at nurv.fr>
-
-	* Mono.Cecil/AssemblyNameReference.cs:
-		Allow the computation of pktoken on CF_2_0.
-
-2007-04-25  Jb Evain  <jb at nurv.fr>
-
-	* Mono.Cecil/ModuleDefinition.cs
-	  Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil.Cil/ISymbolWriter.cs
-	  Mono.Cecil.Signatures/SignatureWriter.cs
-		Start working on local var debug infos emitting.
-
-2007-04-08  Jb Evain  <jb at nurv.fr>
-
-	* Mono.Cecil/ParameterAttributes.cs:
-		ParameterAttributes.None
-
-2007-03-30  Jb Evain  <jb at nurv.fr>
-
-	* Collections:
-		Remove uneeded tests as an optimizations.
-		Based on a suggestion by Carlo Kok <ck at remobjects.com>.
-
-	* Mono.Cecil.Metadata/StringsHeap.cs:
-		Optimize GetStringAt, patch by:
-		Carlo Kok <ck at remobjects.com>
-
-2007-03-22  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/AssemblyInfo.cs:
-		Bump to 0.5.0.0 for the sake of our packagers friends.
-		Re-Bump to 0.5.0.1.
-
-	* Mono.Cecil/StructureWriter.cs:
-		Throw a NotSupportedException instead of a NIE
-		for mixed mode assemblies.
-
-2007-03-20  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Metadata/MetadataWriter.cs:
-		Correct epilog for unicode user strings heap.
-
-2007-03-16  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Cil/CodeReader.cs
-	  Mono.Cecil.Cil/MethodBody.cs:
-		Add a MethodBody.Simplify method to expand
-		macros.
-
-	* Mono.Cecil.dll.sources
-	  Mono.Cecil.csproj
-	  Mono.Cecil.Cil/OpCode.cs
-	  Mono.Cecil.Cil/OpCodes.cs
-	  Mono.Cecil.Cil/Code.cs
-	  CodeGen/cecil-gen.rb
-	  CodeGen/templates/OpCodes.cs
-	  CodeGen/templates/Code.cs:
-		Add a Code enumeration to simplify working with
-		OpCodes.
-
-2007-03-12  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Metadata/UserStringsHeap.cs:
-		Avoid trailing blank on some systems.
-
-2007-02-22  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ReflectionWriter.cs:
-		Deal with sentinels on simple methodrefs.
-
-2007-02-22  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.dll.sources
-	  Mono.Cecil.csproj
-	  CodeGen/cecil.xml
-	  Mono.Cecil.Metadata/ParamPtr.cs
-	  Mono.Cecil.Metadata/MethodSpec.cs
-	  Mono.Cecil.Metadata/BaseMetadataVisitor.cs
-	  Mono.Cecil.Metadata/EventPtr.cs
-	  Mono.Cecil.Metadata/MetadataTableReader.cs
-	  Mono.Cecil.Metadata/MetadataTableWriter.cs
-	  Mono.Cecil.Metadata/MetadataRowReader.cs
-	  Mono.Cecil.Metadata/MetadataRowWriter.cs
-	  Mono.Cecil.Metadata/PropertyPtr.cs
-	  Mono.Cecil.Metadata/FieldPtr.cs
-	  Mono.Cecil.Metadata/MethodPtr.cs
-	  Mono.Cecil.Metadata/IMetadataVisitor.cs:
-		Add *Ptr table definitions.
-
-	* Mono.Cecil.dll.sources
-	  Mono.Cecil.csproj
-	  Mono.Cecil/CallSite.cs
-	  Mono.Cecil/IMethodSignature.cs
-	  Mono.Cecil/SentinelType.cs
-	  Mono.Cecil/FunctionPointerType.cs
-	  Mono.Cecil/MethodReference.cs
-	  Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil.Cil/CodeReader.cs
-	  Mono.Cecil.Cil/CodeWriter.cs:
-		Implement support for writing function pointers.
-		Based on a patch by Argiris Kirtzidis <akyrtzi at gmail.com>
-
-	* Mono.Cecil/Constants.cs:
-		Make it public due to some demands.
-
-2007-02-21  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Signatures/SignatureReader.cs:
-		do not read enums if the resolution is not forced until
-		cecil knows how to write them.
-
-	* Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil.Signatures/SzArray.cs
-	  Mono.Cecil.Signatures/Array.cs
-	  Mono.Cecil.Signatures/SignatureReader.cs
-	  Mono.Cecil.Signatures/TypeSpec.cs
-	  Mono.Cecil.Signatures/SignatureWriter.cs:
-		handle custom mods on arrays signatures.
-
-	* Mono.Cecil/ReflectionReader.cs:
-		Handle fields TypeSpecs that have an initial value.
-		Based on a patch by Argiris Kirtzidis <akyrtzi at gmail.com>
-
-2007-01-29  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Metadata/MetadataWriter.cs:
-		Save a byte ! Yeah !
-
-2006-12-18  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ReflectionReader.cs:
-		Fix a bug in reading MemberRef pointing to MethodDef.
-
-2006-12-16  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/StructureReader.cs:
-		Prevent a NRE if we're reading a multi module
-		assembly through a stream if a module is not find.
-		Fix #80273.
-
-2006-12-07  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ReflectionWriter.cs:
-		Allow an AssemblyDefinition to be written
-		more than once.
-
-2006-12-05  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ReflectionWriter.cs:
-		Deal with nullref default parameters.
-
-2006-12-03  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ReflectionWriter.cs:
-		Handle constant where the parameter is object
-		and the signature is something else.
-
-2006-11-27  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/TypeDefinitionCollection.cs
-	  CodeGen/templates/NamedCollection.cs:
-		Allow multiple typedefs with the same namespace+name
-		to be able to read unvalid assemblies.
-
-	* Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil.Signatures/PropertySig.cs
-	  Mono.Cecil.Signatures/SignatureReader.cs
-	  Mono.Cecil.Signatures/SignatureWriter.cs:
-		- Deal with modifiers on properties.
-		- Deal with non standard signatures when the byref
-		flag is placed after the custom modifiers.
-	  Mono.Cecil/StructureReader.cs:
-		- Properly detect wether an assembli is a dll or not.
-
-		Based on a patch by Argiris Kirtzidis <akyrtzi at gmail.com>.
-
-2006-11-25  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil.Signatures/GenericArg.cs
-	  Mono.Cecil.Signatures/GenericInstSignature.cs
-	  Mono.Cecil.Signatures/SignatureReader.cs
-	  Mono.Cecil.Signatures/SignatureWriter.cs:
-		Deal with modifiers for generic arguments.
-		Based on a patch by Argiris Kirtzidis <akyrtzi at gmail.com>.
-
-	* Mono.Cecil.Binary/ImageWriter.cs:
-		Fix a bug in writing rsrc sections.
-
-	* Mono.Cecil.Cil/CodeReader.cs:
-		Do some refactoring.
-
-	* Mono.Cecil.Metadata/MetadataToken.cs:
-		Add a ctor to get a MetadataToken
-		from an integer token.
-
-2006-11-22  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Cil/GuidAttribute.cs:
-		Fix for CF compilation.
-
-2006-11-16  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/StructureReader.cs:
-		If an assembly has no managed assembly defined,
-		consider it as a dll.
-
-2006-11-08  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/BaseAssemblyResolver.cs:
-		Handles different kind of GAC on Windows.
-
-2006-11-07  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ReflectionHelper.cs:
-		Don't import the flags of an assembly name reference.
-
-2006-11-03  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/PropertyDefinition.cs:
-		Fix property cloning.
-		Patch by Alex Prudkiy <prudkiy at mail.ru>
-
-2006-10-26  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ReflectionReader.cs:
-		Use the proper generic context when reading memberrefs.
-
-2006-10-11  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Cil/Document.cs:
-		Complete a little bit.
-
-	* Mono.Cecil/SecurityDeclarationReader.cs:
-		Get rid of a lot of exceptions when creating the security
-		attribute.
-
-2006-10-10  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ReflectionReader.cs:
-	  Mono.Cecil/CustomAttribute.cs:
-	  Mono.Cecil.Signatures/SignatureReader.cs:
-	  Mono.Cecil/SecurityDeclarationReader.cs:
-		Patch from: Eyal Alaluf  <eyala at mainsoft.com>.
-		Add support for resolving custom attributes that contain references
-		to enum in other assemblies.
-
-2006-10-09  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/IRequireResolving.cs
-	  Mono.Cecil/CustomAttribute.cs
-	  Mono.Cecil/SecurityDeclaration.cs
-	  Mono.Cecil/SecurityDeclarationReader.cs
-	  Mono.Cecil/AggressiveReflectionReader.cs
-	  Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil/ModuleDefinition.cs:
-		Introduce the interface IRequireResolving implemented
-		by CustomAttribute and SecurityDeclaration for when they can't
-		be read without loading another assembly.
-
-	* Mono.Cecil/SecurityDeclarationReader.cs:
-		Prevent Cecil to crash when it can not get the type
-		of the declaration.
-
-2006-10-04  Eyal Alaluf  <eyala at mainsoft.com>
-
-	* Mono.Cecil/StructureReader.cs:
-		Visit the module we load when a DLL has more then 1 module.
-	  Mono.Cecil/AssemblyNameReference.cs:
-	  	Allow "PublicToken=null" when parsing an assembly full name.
-
-2006-10-03  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/BaseAssemblyResolver.cs
-	  Mono.Cecil.Binary/ResourceReader.cs:
-		CompactFramework fix.
-
-2006-10-02  Jb Evain  <jbevain at gmail.com>
-
-	* implement IList on the named collections.
-
-	* implement the first bits of Win32 resources handling.
-
-	* Mono.Cecil/ReflectionHelper.cs:
-		It does not make sense to import the assembly flags.
-
-2006-09-28  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/MethodDefinitionCollection.cs
-	  Mono.Cecil/ConstructorCollection.cs
-	  Mono.Cecil.Cil/InstructionCollection.cs
-	  CodeGen/templates/IndexedCollection.cs
-		Fix StackOverlow.
-
-2006-09-27  Jb Evain  <jbevain at gmail.com>
-
-	* *Collection.cs: use CollectionBase when possible.
-
-2006-09-24  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/AssemblyFactory.cs
-	  Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil.Cil/ISymbolStoreFactory.cs
-	  Mono.Cecil.Cil/SymbolStoreHelper.cs:
-		Some more work on the debugging infos api.
-
-	* Mono.Cecil/MethodDefinitionCollection.cs
-	  Mono.Cecil/ConstructorCollection.cs
-	  CodeGen/templates/IndexedCollection.cs:
-		Fix the GetConstructor/GetMethod methods.
-		Based on a patch by Jon Chambers.
-
-2006-09-20  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/StructureWriter.cs
-	  Mono.Cecil/ModuleDefinition.cs
-	  Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil/AssemblyFactory.cs
-	  Mono.Cecil.Cil/ISymbolReader.cs
-	  Mono.Cecil.Cil/CodeWriter.cs
-	  Mono.Cecil.Cil/ISymbolWriter.cs
-	  Mono.Cecil.Cil/SymbolStoreHelper.cs:
-		Working on the debug infos stuff.
-
-	* Mono.Cecil.Signatures/SignatureReader.cs:
-		Ensure custom attributes are read when they can be.
-		Patch by Sebastien Pouliot.
-
-2006-09-19  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ModuleDefinition.cs
-	  Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil.Cil/Document.cs
-	  Mono.Cecil.Cil/Instruction.cs
-	  Mono.Cecil.Cil/SequencePoint.cs
-	  Mono.Cecil.Cil/CodeReader.cs
-	  Mono.Cecil.Cil/IScopeProvider.cs
-	  Mono.Cecil.Cil/ISymbolReader.cs
-	  Mono.Cecil.Cil/CodeWriter.cs
-	  Mono.Cecil.Cil/ISymbolWriter.cs
-	  Mono.Cecil.Cil/IVariableDefinitionProvider.cs
-	  Mono.Cecil.Cil/SymbolStoreHelper.cs
-	  Mono.Cecil.Cil/ISymbolStoreFactory.cs
-	  Mono.Cecil.Cil/ScopeCollection.cs
-	  Mono.Cecil.Cil/Scope.cs:
-		Work on the architecture for debugging infos.
-
-	* Mono.Cecil.dll.sources
-	  Mono.Cecil.Cil/Document.cs
-	  Mono.Cecil.Cil/IVariableDefinitionProvider.cs
-	  Mono.Cecil.Cil/SequencePoint.cs
-	  Mono.Cecil.Cil/ScopeCollection.cs
-	  Mono.Cecil.Cil/BaseCodeVisitor.cs
-	  Mono.Cecil.Cil/CodeReader.cs
-	  Mono.Cecil.Cil/IScopeProvider.cs
-	  Mono.Cecil.Cil/MethodBody.cs
-	  Mono.Cecil.Cil/ICodeVisitor.cs
-	  Mono.Cecil.Cil/CodeWriter.cs
-	  Mono.Cecil.Cil/Scope.cs
-	  Mono.Cecil.Cil/VariableDefinitionCollection.cs
-	  CodeGen/cecil.xml:
-		First bits of the debug infos stuff.
-
-	* Mono.Cecil.Cil/InstructionCollection.cs
-	  CodeGen/templates/IndexedCollection.cs:
-		The outside instruction has an offset of -1.
-
-	* Mono.Cecil.Cil/OpCodes.cs
-	  Mono.Cecil.Cil/CodeReader.cs
-	  Mono.Cecil.Cil/OpCode.cs
-	  CodeGen/templates/OpCodes.cs:
-		Simpliest way of dealing with different opcodes.
-
-2006-09-07  Jb Evain  <jbevain at gmail.com>
-
-	* support PE32+ file format.
-
-	* Add an Outside instruction to an InstructionCollection.
-	Cleaner than the old null instruction.
-
-	* Mono.Cecil/MarshalSpec.cs
-	  Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/ReflectionWriter.cs
-	  CodeGen/cecil-mig.rb:
-		Refactor names from Desc to Spec.
-
-	* *Collection.cs:
-		Remove the unused events stuff.
-
-2006-08-31  Jb Evain  <jbevain at gmail.com>
-
-	* /!\ Breaking changes:
-		On the way to Cecil 0.5. Remove meaningless interfaces.
-		GenericParamAttributes -> GenericParameterAttributes
-		ParamAttributes -> ParamAttributes
-
-		I'll provide a migration path with a script.
-
-		Please do not use this revision, other changes are on the way.
-
-2006-08-26  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ReflectionReader.cs:
-		Fix a bug when reading some parameters.
-
-2006-08-26  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Cil/ReflectionWriter.cs:
-		Fix the computation of the size of the last opcode in case
-		of an exception handler is pointing outside the cil stream.
-
-	* Mono.Cecil.Cil/ReflectionWriter.cs:
-		Don't use seh tiny headers when the size can't fit in a byte.
-
-	* Mono.Cecil.Cil/ReflectionWriter.cs:
-		Fix a problem in the computation of the stack when the IL
-		is somewhat strange.
-
-2006-08-23  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/AssemblyInfo.cs:
-		Cecil 0.4.3 release.
-
-2006-08-21  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Metadata/MetadataWriter.cs:
-		Fix a bug in field initial values writing.
-
-	* Mono.Cecil/BaseAssemblyResolver.cs:
-		Look for assemblies in ./ first
-
-2006-08-17  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/BaseAssemblyResolver.cs:
-		Resolve the corlib depending on its version.
-
-	* Mono.Cecil/AssemblyName.cs
-	  Mono.Cecil/BaseAssemblyResolver.cs:
-		Implement a AssemblyNameReference.Parse(string)
-
-	* Mono.Cecil/TypeReferenceCollection.cs
-	  Mono.Cecil/ExternTypeCollection.cs
-	  Mono.Cecil/TypeDefinitionCollection.cs
-	  CodeGen/templates/NamedCollectionImplem.cs:
-		Avoid infinite recursion.
-
-	* Mono.Cecil/BaseAssemblyResolver.sc:
-		Stay .net 1.1 compatible
-
-2006-08-16  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/IAssemblyResolver.cs
-	  Mono.Cecil/BaseAssemblyResolver.cs
-	  Mono.Cecil/DefaultAssemblyResolver.cs
-	  Mono.Cecil/AssemblyDefinition.cs
-		Implement an assembly resolver.
-
-	* Mono.Cecil/ReflectionReader.cs:
-		Fix the initial value reading.
-		Based on a report and a patch of Roei Erez  <roeie at mainsoft.com>
-
-2006-08-15  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/TypeReferenceCollection.cs
-	  Mono.Cecil/ExternTypeCollection.cs
-	  Mono.Cecil/TypeDefinitionCollection.cs
-	  CodeGen/templates/NamedCollectionImplem.cs:
-		Fix the CopyTo method.
-
-2006-07-19  Jb Evain  <jbevain at gmail.com>
-
-	* CodeGen/templates/IIndexedCollection.cs
-	  CodeGen/templates/IndexedCollectionImplem.cs
-	  Mono.Cecil/IConstructorCollection.cs
-	  Mono.Cecil/IMethodDefinitionCollection.cs
-	  Mono.Cecil/MethodDefinitionCollection.cs
-	  Mono.Cecil/ConstructorCollection.cs:
-		Add a GetConstructor(bool,ParameterDefinitionCollection) method
-		required by the linker.
-
-	* Mono.Cecil.Metadata/MetadataReader.cs
-	  Mono.Cecil.Metadata/StringsHeap.cs:
-		Read the string on demand, based on the index.
-		Needed due to some obfuscators that create a string entry like
-		xClassName, and make the pointer points to after the x.
-
-2006-07-03	Rodrigo B. de Oliveira <rodrigobamboo at gmail.com>
-	* CodeGen/templates/ImageReader.cs
-	  Mono.Cecil.Binary/ImageReader.cs:
-	  	CompactFramework compatibility.
-
-2006-07-02	Rodrigo B. de Oliveira <rodrigobamboo at gmail.com>
-
-	* CodeGen/templates/ImageReader.cs
-	  Mono.Cecil.Binary/ImageReader.cs:
-	  	Proper FileNotFoundException construction.
-
-	* Mono.Cecil/MethodDefinition.cs
-	  Mono.Cecil/IMethod.cs:
-		Helper properties IsInternalCall and IsRuntime.
-
-2006-06-21  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Cil/CilWorker.cs:
-		Fix ldc.i4.s emitting.
-
-2006-06-13  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ReflectionWriter.cs:
-		Fix for compiling on CF 1.
-	* Mono.Cecil/StructureReader.cs:
-		Fix for a "bug" when csc 7.1 emits an assembly
-		with an assembly row, but no blob heap.
-		Plus style fix.
-
-2006-06-08  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/IMethod.cs
-	  Mono.Cecil/MethodDefinition.cs
-	  Mono.Cecil/ReflectionWriter.cs:
-		Add a public HasBody property.
-
-2006-06-07  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/MethodDefinition.cs
-	  Mono.Cecil/ReflectionWriter.cs:
-		Read and write method bodies only when allowed.
-
-2006-05-29  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/IMethodDefinition.cs
-	  Mono.Cecil/MethodDefinition.cs:
-		Remove the useless CreateBody method.
-
-2006-05-27  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/StructureWriter.cs
-	  Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/MethodDefinition.cs
-	  Mono.Cecil.Metadata/MetadataToken.cs
-	  Mono.Cecil.Signatures/SignatureReader.cs:
-		Play better with mixed mode assemblies.
-
-	* Mono.Cecil/SecurityDeclarationReader.cs
-	  Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil.Signatures/SignatureReader.cs:
-		Read/Write this awful load of crap that is sharepoint.
-
-2006-05-22  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Cil/CilWorker.cs:
-		Fix #78479. Patch by David Emsellem.
-
-2006-05-20  Jb Evain  <jbevain at gmail.com>
-
-	* CodeGen/templates/ImageReader.cs
-	  CodeGen/templates/ImageWriter.cs
-	  Mono.Cecil/AssemblyFactory.cs
-	  Mono.Cecil/StructureWriter.cs
-	  Mono.Cecil/Binary/ImageReader.cs
-	  Mono.Cecil/Binary/Image.cs
-	  Mono.Cecil/Binary/ImageWriter.cs
-	  Mono.Cecil.Metadata/MetadataWriter.cs:
-		Optimize assembly writing.
-		Add methods to read assemblies from byte arrays.
-
-	* Mono.Cecil/StructureWriter.cs:
-		Throw an exception when the target is an exe
-		and no entry point have been setted.
-	* Mono.Cecil/AssemblyFactory.cs:
-		Add helpers method to defines assemblies.
-	* Mono.Cecil/MethodDefinition.cs:
-		Set the hasThis flag to the correct value.
-	* Mono.Cecil.Cil/CodeReader.cs:
-		Remove old comment.
-	* Mono.Xml/SmallXmlParser.cs:
-		Make private.
-
-2006-05-18  Jb Evain  <jbevain at gmail.com>
-
-	* CodeGen/templates/MetadataTableReader.cs
-	  Mono.Cecil.Metadata/MetadataTableReader.cs
-	  Mono.Cecil.Metadata/TableCollection.cs
-	  Mono.Cecil.Metadata/TablesHeap.cs:
-		Optimize a little bit.
-
-	* CodeGen/templates/MetadataTableWriter.cs
-	  Mono.Cecil.Metadata/MetadataTableWriter.cs
-	  Mono.Cecil.Metadata/TableCollection.cs:
-		Fix for last changeset.
-
-	* Mono.Cecil.Metadata/RIdAttribute.cs:
-		deleted.
-
-	* Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/StructureReader.cs
-	  Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil/AggressiveReflectionReader.cs
-	  Mono.Cecil.Cil/CodeReader.cs
-	  CodeGen/templates/Utilities.cs
-	  CodeGen/templates/MetadataTableReader.cs
-	  CodeGen/templates/MetadataTableWriter.cs
-	  CodeGen/templates/Table.cs
-	  CodeGen/templates/MetadataRowReader.cs
-	  CodeGen/templates/MetadataRowWriter.cs
-	  Mono.Cecil.Metadata/Assembly.cs
-	  Mono.Cecil.Metadata/InterfaceImpl.cs
-	  Mono.Cecil.Metadata/PropertyMap.cs
-	  Mono.Cecil.Metadata/Constant.cs
-	  Mono.Cecil.Metadata/MethodSpec.cs
-	  Mono.Cecil.Metadata/DeclSecurity.cs
-	  Mono.Cecil.Metadata/TypeDef.cs
-	  Mono.Cecil.Metadata/GenericParamConstraint.cs
-	  Mono.Cecil.Metadata/MethodImpl.cs
-	  Mono.Cecil.Metadata/NestedClass.cs
-	  Mono.Cecil.Metadata/MetadataTableReader.cs
-	  Mono.Cecil.Metadata/AssemblyRefProcessor.cs
-	  Mono.Cecil.Metadata/AssemblyRef.cs
-	  Mono.Cecil.Metadata/AssemblyRefOS.cs
-	  Mono.Cecil.Metadata/Method.cs
-	  Mono.Cecil.Metadata/MetadataTableWriter.cs
-	  Mono.Cecil.Metadata/MetadataRowReader.cs
-	  Mono.Cecil.Metadata/ExportedType.cs
-	  Mono.Cecil.Metadata/CustomAttribute.cs
-	  Mono.Cecil.Metadata/Param.cs
-	  Mono.Cecil.Metadata/ClassLayout.cs
-	  Mono.Cecil.Metadata/MetadataRowWriter.cs
-	  Mono.Cecil.Metadata/Utilities.cs
-	  Mono.Cecil.Metadata/AssemblyOS.cs
-	  Mono.Cecil.Metadata/ModuleRef.cs
-	  Mono.Cecil.Metadata/FieldMarshal.cs
-	  Mono.Cecil.Metadata/GenericParam.cs
-	  Mono.Cecil.Metadata/ImplMap.cs
-	  Mono.Cecil.Metadata/TableCollection.cs
-	  Mono.Cecil.Metadata/TablesHeap.cs
-	  Mono.Cecil.Metadata/TypeRef.cs
-	  Mono.Cecil.Metadata/ManifestResource.cs
-	  Mono.Cecil.Metadata/File.cs
-	  Mono.Cecil.Metadata/EventMap.cs
-	  Mono.Cecil.Metadata/AssemblyProcessor.cs
-	  Mono.Cecil.Metadata/FieldLayout.cs
-	  Mono.Cecil.Metadata/Event.cs
-	  Mono.Cecil.Metadata/Field.cs
-	  Mono.Cecil.Metadata/Property.cs
-	  Mono.Cecil.Metadata/Module.cs
-	  Mono.Cecil.Metadata/MethodSemantics.cs
-	  Mono.Cecil.Metadata/StandAloneSig.cs
-	  Mono.Cecil.Metadata/FieldRVA.cs
-	  Mono.Cecil.Metadata/TypeSpec.cs
-	  Mono.Cecil.Metadata/IMetadataTable.cs
-	  Mono.Cecil.Metadata/MemberRef.cs:
-		Fix the way the metadata tables are handled.
-
-	* Mono.Cecil.Signatures/SignatureWriter.cs:
-		Fix bug in string writing.
-
-2006-05-12  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/AssemblyInfo.cs:
-		Hide the info if Cecil is embedded.
-
-2006-05-09  Jb Evain  <jbevain at gmail.com>
-
-	* cecil.build: rename to default.build
-
-2006-05-08  Jb Evain  <jbevain at gmail.com>
-
-	* Makefile:
-		Sign the assembly.
-
-	* cecil.csproj:
-		Add an msbuild file.
-
-2006-05-05  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/AssemblyFactory.cs
-	  Mono.Cecil/StructureReader.cs
-	  Mono.Cecil/ModuleDefinition.cs:
-		Add an AssemblyFactory.GetAssemblyManifest method.
-
-2006-05-04  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/TableComparers.cs:
-		TypeDef.Compare: the name is enough against <Module>.
-
-	* Mono.Cecil/ReflectionWriter.cs:
-		Fix writing of namedargs in custom attributes.
-
-2006-04-26  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Signatures/SignatureReader.cs:
-		Don't create tons of hashtables.
-
-2006-04-24  Jb Evain  <jbveain at gmail.com>
-
-       * Mono.Cecil.Cil/MethodBody.cs:
-               Fix cloning.
-
-2006-04-21  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/AssemblyFactory.cs
-	  Mono.Cecil.Binary/MemoryBinaryWriter.cs:
-		Use MemoryStream::WriteTo when it's possible.
-
-2006-04-21	Rodrigo B. de Oliveira	<rodrigobamboo at gmail.com>
-
-	* Mono.Cecil/SecurityDeclaration.cs
-	  Mono.Cecil/ISecurityDeclaration.cs
-	  Mono.Cecil/SecurityDeclarationCollection.cs
-	  Mono.Cecil/ModuleDefinition.cs:
-	  	Patch by Almann T. Goo (almann.goo at gmail.com) conditionally
-		removing references to PermissionSet when compiling for the CompactFramework.
-
-	* Mono.Cecil/CompactFrameworkCompatibility.cs:
-		System.Security.PermissionSet definition no longer needed.
-
-2006-04-21  Jb Evain  <jbevain at gmail.com>
-
-	* *Collection.cs:
-		Fix typo in RemoveAt.
-
-2006-04-20  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ReflectionWriter.cs:
-		Fix writing of complex arrays.
-		Now we roundtrip SharpDevelop.
-
-	* Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil/TableComparers.cs:
-		Ensure <Module> will always be the first type.
-		Fix roundtrip of Nemerle.
-
-2006-04-19  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Cil/CodeWriter.cs:
-		Handle the case where an handler points after the last
-		instruction. Now we roundtrip db4o.
-
-	* Mono.Cecil/IIndexedCollection.cs:
-	  *Collection.cs:
-		Make every collection implement an indexed collection.
-
-2006-04-15  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/CustomAttribute.cs:
-		Fix handling of types.
-
-2006-04-11  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/FieldDefinition.cs
-	  Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/TypeDefinition.cs
-	  Mono.Cecil/IField.cs
-	  Mono.Cecil/ITypeDefinition.cs
-	  Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil/AggressiveReflectionReader.cs
-	  Mono.Cecil.Cil/IVariable.cs
-	  Mono.Cecil.Cil/MethodBody.cs
-	  Mono.Cecil.Cil/VariableDefinition.cs
-	  Mono.Cecil.Cil/CodeWriter.cs:
-		Don't use interfaces internally.
-
-	* Mono.Cecil/TypeReference.cs:
-		Make TypeReference extend MemberReference.
-
-	* Mono.Cecil/Modifiers.cs
-	  Mono.Cecil.Cil/CodeReader.cs
-	  Mono.Cecil.Cil/CodeWriter.cs
-	  Mono.Cecil.Signatures/LocalVarSig.cs
-	  Mono.Cecil.Signatures/SignatureReader.cs:
-		Fix modifiers on localvar signatures.
-		Fix roundtrip of delphi assemblies.
-
-	* Mono.Cecil/CustomAttribute.cs
-	  Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil.Signatures/SignatureWriter.cs:
-		Work on complex custom attributes encoding.
-
-	* Mono.Cecil/TableComparers.cs:
-		Style.
-
-2006-04-09  Eyal Alaluf  <eyala at mainsoft.com>
-
-    * Mono.Cecil/ReflectionReader.cs
-	    Cannot assume that TypeRefs are ordered is such a way that an outer
-		class index comes always before all its inner classes.
-
-2006-04-06  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil.Signatures/SignatureWriter.cs:
-		Clean up things a little bit prior ending
-		custom attribute encoding.
-
-	* Mono.Cecil/ReflectionWriter.cs:
-		Write custom attributes of parameters
-		onyl when all methods have their tokens.
-
-	* Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil/AggressiveReflectionReader.cs:
-		Handle custom attributes on generic parameters.
-
-2006-04-05  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ReflectionWriter.cs:
-		Ensure the param[0] is written when it should be.
-
-2006-04-04  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ReflectionHelper.cs:
-		Remove an unused hack.
-
-	* Mono.Cecil/AssemblyInfo.cs: Go 0.4.1
-
-	* Mono.Cecil.Metadata/MetadataHeap.cs
-	  Mono.Cecil.Metadata/MetadataStream.cs:
-		Read #- stream has well.
-
-	* Mono.Cecil/ReflectionHelper.cs:
-		Implement Import stuff for System.Type and SR.*
-
-2006-04-03	Rodrigo B. de Oliveira	<rodrigobamboo at gmail.com>
-
-	* Mono.Cecil/SecurityDeclarationReader.cs
-	  Mono.Cecil/TypeReferenceCollection.cs
-	  Mono.Cecil/CompactFrameworkCompatibility.cs
-	  Mono.Cecil/AssemblyFactory.cs
-	  Mono.Cecil/AssemblyName.cs
-	  Mono.Cecil/ExternTypeCollection.cs
-	  Mono.Cecil/TypeDefinitionCollection.cs
-	  CodeGen/templates/NamedCollectionImplem.cs
-	  Mono.Cecil.Metadata/CultureUtils.cs
-	  cecil.build:
-		CompactFramework 2.0 support through CF_2_0 compilation symbol.
-
-2006-04-03  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.dll.sources
-	  Mono.Cecil/GenericParameter.cs
-	  Mono.Cecil/ReflectionHelper.cs
-	  Mono.Cecil/FieldDefinition.cs
-	  Mono.Cecil/CustomAttribute.cs
-	  Mono.Cecil/TypeDefinition.cs
-	  Mono.Cecil/IModuleDefinition.cs
-	  Mono.Cecil/ImportContext.cs
-	  Mono.Cecil/AssemblyName.cs
-	  Mono.Cecil/MethodDefinition.cs
-	  Mono.Cecil/EventDefinition.cs
-	  Mono.Cecil/ModuleDefinition.cs
-	  Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil/GenericContext.cs
-	  Mono.Cecil/ParameterDefinition.cs
-	  Mono.Cecil/PropertyDefinition.cs
-	  Mono.Cecil.Cil/MethodBody.cs:
-		Work on generic assemblies manipulation via
-		import stuff.
-
-2006-03-31  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/AssemblyFlags.cs:
-		Add a Retargetable flag used on the CF.
-
-2006-03-30  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/SecurityDeclarationReader.cs:
-		Don't crash if the declaration is empty.
-
-	* Mono.Cecil/ParamAttributes.cs:
-		Update the Optional flag.
-	  Mono.Cecil/ReflectionWriter.cs:
-		Fix the encoding of nullref.
-		Fixes #77959. Based on a patch by
-		Armand Du Plessis < armand at dotnet.org.za>
-
-2006-03-29  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/IHasSecurity.cs
-	  Mono.Cecil/IHasConstant.cs
-	  Mono.Cecil/IHasMarshalSpec.cs:
-	  Mono.Cecil/MethodReturnType.cs
-	  Mono.Cecil/AssemblyDefinition.cs:
-		Implement IMetadataTokenProvider.
-
-	* Mono.Cecil/StructureReader.cs
-	  Mono.Cecil/ReflectionWriter.cs:
-		Use more the token providers.
-
-2006-03-28  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/MarshalDesc.cs
-	  Mono.Cecil/IMarshalSpec.cs
-	  Mono.Cecil/ReflectionWriter.cs:
-		Fix round-tripping of assemblies using
-		COM stuff.
-
-2006-03-27  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Metadata/MetadataToken.cs:
-		Override GetHashCode as we override Equals.
-
-	* Mono.Cecil/TableComparers.cs:
-		Fix the ordering of generic parameters.
-		This revision roundtrips C5. Yeah!
-
-	* Mono.Cecil/ReflectionWriter.cs:
-		Fix method spec "caching"
-	  Mono.Cecil.Cil/OpCode.cs:
-		Override ToString ();
-	  Mono.Cecil.Metadata/MetadataToken.cs:
-		Implement operator ==
-
-	* Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil/TableComparers.cs:
-		Better handling of generic tables sorting.
-
-	* Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil/TableComparers.cs:
-		Sort generic tables as well.
-
-2006-03-27	Rodrigo B. de Oliveira	<rodrigobamboo at gmail.com>
-	* Mono.Cecil.Metadata/MetadataWriter.cs:
-		Use CompactFramework compatible version of
-		System.Convert.ToBase64String.
-
-2006-03-27  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.dll.sources
-	  Mono.Cecil/GenericParameter.cs
-	  Mono.Cecil/ConstraintCollection.cs
-	  Mono.Cecil/IGenericParameter.cs
-	  Mono.Cecil/IConstraintCollection.cs
-	  CodeGen/cecil.xml:
-		Add a ConstraintCollection to be used within
-		generic parameters.
-
-	* Mono.Cecil/GenericInstanceType.cs:
-		Correctly return if the instance is a value type
-		or not.
-
-2006-03-25  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ModuleDefinition.cs:
-		Support the unreadable security declarations
-		when converting one to byte [].
-
-	* Mono.Cecil/IModuleDefinition.cs
-	  Mono.Cecil/ModuleDefinition.cs
-	  Mono.Cecil/ReflectionWriter.cs:
-		Add a FullLoad method on a module.
-
-	* Mono.Cecil/StructureWriter.cs
-	  Mono.Cecil/ReflectionWriter.cs:
-		Fix a  few bugs in generics type emitting.
-
-	* Mono.Cecil.Cil/CodeWriter.cs:
-		Cache local sig as well.
-
-2006-03-24  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ReflectionWriter.cs:
-		Cache method specs as well.
-
-	* CodeGen/templates/ImageWriter.cs
-	  Mono.Cecil.Metadata/MetadataWriter.cs
-	  Mono.Cecil.Binary/ImageWriter.cs:
-		Replace the foreach char pattern by
-		Encoding.GetBytes
-
-2006-03-23  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/TypeReferenceCollection.cs
-	  Mono.Cecil/ExternTypeCollection.cs
-	  Mono.Cecil/TypeDefinitionCollection.cs
-	  CodeGen/templates/NamedCollectionImplem.cs
-	  CodeGen/templates/ImageReader.cs:
-		Ensure type with the same name are added
-		to the collection.
-
-	* Mono.Cecil.Metadata/MetadataWriter.cs:
-		Ensure every blob signature is unique.
-
-	* Mono.Cecil/IModuleDefinition.cs
-	  Mono.Cecil/ModuleDefinition.cs:
-		Rename method to avoid confusion.
-
-2006-03-22  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Cil/CodeWriter.cs:
-		Precisely detect whether we emit fat seh or not.
-
-	* Mono.Cecil/ReflectionWriter.cs:
-		Avoid duplicates in the typespec table.
-
-2006-03-21  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ReflectionWriter.cs:
-		Correctly write generic parameters.
-
-	* Mono.Cecil/SecurityDeclarationReader.cs
-	  Mono.Cecil/SecurityDeclaration.cs
-	  Mono.Cecil/ReflectionWriter.cs:
-		Fix for security declarations reading on .net 2.0.
-
-	* Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/GenericContext.cs:
-		Fix test case RoundtripTestFixture.boo.
-
-2006-03-20  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Metadata/MetadataReader.cs:
-		#Strings heap is utf8, fix #77820.
-
-2006-03-08  Jb Evain  <jbevain at gmail.com>
-
-	* CodeGen/cecil-gen-tests.rb
-	  CodeGen/templates/Tests.cs:
-		Start of a very small infrastructure to use tests from
-		rotor/mono with Cecil.
-
-	* Mono.Cecil/IMethod.cs
-	  Mono.Cecil/TypeDefinition.cs
-	  Mono.Cecil/MethodDefinition.cs
-	  Mono.Cecil.Cil/CodeReader.cs
-	  Mono.Cecil.Cil/CodeWriter.cs:
-		Add support for the very special case ldarg 0.
-		Patch idea by Vladislav Spivak <spivak at mainsoft.com>
-
-2006-03-07  Jb Evain  <jbevain at gmail.com>
-
-	* CodeGen/templates/ImageReader.cs
-	  Mono.Cecil/AssemblyFactory.cs
-	  Mono.Cecil/StructureReader.cs
-	  Mono.Cecil.Binary/Image.cs
-	  Mono.Cecil.Binary/ImageReader.cs:
-		Allow users to get a loaded image using
-		Image.GetImage as they have no access to
-		the ImageReader.
-
-2006-03-06  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Signatures/SignatureReader.cs:
-		Fix array reading in custom attributes.
-
-2006-03-06  Joshua Tauberer <tauberer at for.net>
-
-	* Mono.Cecil/TypeAttributes.cs: Fixed typo
-	  in value for Abstract.
-
-2006-02-27  Jb Evain  <jbevain at gmail.com>
-
-	* CodeGen/templates/IndexedCollectionImplem.cs
-	  CodeGen/templates/IIndexedCollection.cs
-	  Mono.Cecil.Cil/InstructionCollection.cs
-	  Mono.Cecil.Cil/IInstructionCollection.cs:
-		Small API fix, prevent the user from not using
-		the CilWorker.
-
-	* Mono.Cecil.Cil/CodeReader.cs
-	  Mono.Cecil.Cil/Label.cs:
-		Remove Label.
-
-	* Mono.Cecil/ReflectionReader.cs:
-		Fix typo.
-
-2006-02-20  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Signatures/SignatureWriter.cs:
-		Fix a bug when a value is null in a custom attribute.
-
-2006-02-20  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* Mono.Cecil.Metadata/MetadataWriter.cs:
-		Fix GetStrongNameSignatureSize to handle the ECMA pseudo-key.
-
-2006-02-07  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/AssemblyInfos.cs:
-		Tag this version 0.3, as users are happy with it.
-
-2006-01-26  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/CustomAttribute.cs:
-		Fix cloning of non readable attributes.
-
-	* Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil.Signatures/MethodRefSig.cs
-	  Mono.Cecil.Signatures/SignatureWriter.cs
-	  Mono.Cecil.Signatures/MethodDefSig.cs:
-		Work on generics.
-
-	* Mono.Cecil/ArrayType.cs
-	  Mono.Cecil/ReferenceType.cs
-	  Mono.Cecil/PointerType.cs:
-		Fix names of typespecs.
-
-	* Mono.Cecil/TypeReferenceCollection.cs
-	  Mono.Cecil/ExternTypeCollection.cs
-	  CodeGen/templates/NamedCollectionImplem.cs:
-		Allow multiple key by names in type references.
-
-2006-01-25  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/AssemblyFactory.cs:
-		Don't trap exceptions.
-
-	* Mono.Cecil/GenericParameter.cs
-	  Mono.Cecil/IMethod.cs
-	  Mono.Cecil/GenericInstanceType.cs
-	  Mono.Cecil/TypeReference.cs
-	  Mono.Cecil/GenericInstanceMethod.cs
-	  Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/TypeDefinition.cs
-	  Mono.Cecil/IGenericArgumentCollection.cs
-	  Mono.Cecil/ITypeReference.cs
-	  Mono.Cecil/IGenericInstance.cs
-	  Mono.Cecil/GenericArgumentCollection.cs
-	  Mono.Cecil/MethodDefinition.cs
-	  Mono.Cecil/MethodReference.cs
-	  Mono.Cecil/ITypeDefinition.cs
-	  Mono.Cecil/IGenericArgumentProvider.cs
-	  Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil/GenericContext.cs
-	  CodeGen/cecil.xml:
-		Clean the generic api. This is not stable yet.
-
-2006-01-24  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ArrayType.cs:
-		Bug reported by  Vladislav Spivak (spivak at mainsoft.com).
-		Fix a bug in array handling.
-	* Mono.Cecil/ConstructorCollection.cs
-	  CodeGen/templates/IndexedCollectionImplem.cs:
-		Bug reported by Oleg Varchovsky (olegv at mainsoft.com).
-		Fix the lookup of constructors.
-
-2006-01-19  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/AssemblyName.cs:
-		Fix computation of public key token.
-
-2006-01-18  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Cil/CodeWriter.cs
-	  Mono.Cecil.Metadata/MetadataToken.cs:
-		Add an use an ToUInt method and use it.
-	  CodeGen/templates/DebugHeader.cs
-	  Mono.Cecil.Binary/DebugHeader.cs:
-		Fix the size of the debug header.
-
-	* Mono.Cecil/ModuleReference.cs
-	  Mono.Cecil/AssemblyName.cs
-	  Mono.Cecil/StructureReader.cs
-	  Mono.Cecil/IMetadataScope.cs:
-		Make IMetadataScope implement IMetadataTokenProvider.
-	* Mono.Cecil/ReflectionWriter.cs:
-		Fix a typo when saving nested type refs.
-
-2006-01-17  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ArrayType.cs
-	  Mono.Cecil/ArrayDimension.cs
-	  Mono.Cecil/ReflectionWriter.cs:
-		End arrays support.
-
-2006-01-03  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/GenericParameter.cs
-	  Mono.Cecil/ReflectionHelper.cs
-	  Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/GenericContext.cs:
-		Work on generics.
-
-2005-12-31  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ReflectionHelper.cs:
-		Fix import of type specs.
-
-2005-12-30  Jb Evain  <jbevain at gmail.com>
-
-	* CodeGen/templates/ImageReader.cs
-	  Mono.Cecil.Metadata/MetadataReader.cs
-	  Mono.Cecil.Binary/Image.cs
-	  Mono.Cecil.Binary/ImageReader.cs:
-		Add support to assemblies where the metadata is defined
-		outside of the text section. (c++/cli /safe for instance)
-
-2005-12-23  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/AssemblyInfo.cs:
-		Version 0.2.2.2 devel.
-
-	* Mono.Cecil/AssemblyInfo.cs:
-		Version 0.2 to be released.
-
-	* Mono.Cecil/ReflectionWriter.cs:
-		IGenericInstance are typespecs as well.
-
-	* Mono.Cecil/ArrayType.cs:
-		Add a single dimension in the default ctor.
-	* Mono.Cecil/ReflectionReader.cs:
-		Don't manually add the default dimension as it's done
-		int the array type ctor.
-	* Mono.Cecil/ReflectionHelper.cs:
-		Import type specs.
-
-2005-12-22  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ReflectionWriter:
-		Write pinvoke infos as well.
-
-	* Mono.Cecil/ReflectionReader.cs:
-		Unsure that primitive value types are viewed as
-		value types.
-
-	* CodeGen/templates/Section.cs
-	  CodeGen/templates/ImageReader.cs
-	  Mono.Cecil.Metadata/MetadataReader.cs
-	  Mono.Cecil.Binary/Image.cs
-	  Mono.Cecil.Binary/Section.cs
-	  Mono.Cecil.Binary/ImageReader.cs:
-		Simplify the way you read binary data whithin
-		high level layer.
-
-	* Mono.Cecil.Cil/CodeReader.cs:
-		Make helper methods public static.
-	* Mono.Cecil/ReflectionReader.cs:
-		Don't try to get the entry point method
-		if it don't point on a valid method RID.
-
-	* CodeGen/templates/NamedCollectionImplem.cs
-	  Mono.Cecil/ExternTypeCollection.cs
-	  Mono.Cecil/TypeDefinitionCollection.cs
-	  Mono.Cecil/TypeReferenceCollection.cs:
-		Don't add existing values.
-
-	* Mono.Cecil/ModuleDefinition.cs:
-		Protect import from null refs.
-
-2005-12-21  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/StructureWriter.cs:
-		Don't increment pdb age. Not Cecil's job.
-
-	* Mono.Cecil.Cil/ICilWorker.cs
-	  Mono.Cecil.Cil/CilWorker.cs:
-		Add a new replace method.
-
-2005-12-20  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/StructureWriter.cs:
-		Ensure every assembly reference is processed.
-
-	* Mono.Cecil/ReflectionHelper.cs:
-		Don't assume the cache is magically loaded.
-		Aka: most stupid bug of the year.
-
-2005-12-19  Jb Evain  <jbevain at gmail.com>
-
-	* CodeGen/templates/DebugHeader.cs
-	  Mono.Cecil.Binary/DebugHeader.cs
-	  Mono.Cecil.Binary/DebugStoreType.cs:
-		New files to store debug header infos.
-	* Mono.Cecil.dll.sources: updated
-	* CodeGen/cecil.xml
-	  CodeGen/cecil-gen.rb
-	  Mono.Cecil/StructureWriter.cs
-	  Mono.Cecil.Binary/IBinaryVisitor.cs
-	  Mono.Cecil.Binary/ImageWriter.cs
-	  Mono.Cecil.Binary/Image.cs
-	  Mono.Cecil.Binary/ImageInitializer.cs
-	  Mono.Cecil.Binary/BaseImageVisitor.cs
-	  Mono.Cecil.Binary/ImageReader.cs
-	  Mono.Cecil.Metadata/MetadataWriter.cs:
-		Read and write debug header.
-
-	* CodeGen/templates/ImageWriter.cs
-	  Mono.Cecil.Binary/ImageWriter.cs:
-		Revert revision 54409.
-
-2005-12-14  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Cil/ICilWorker.cs
-	  Mono.Cecil.Cil/CilWorker.cs:
-		Add a remove method.
-
-	* CodeGen/templates/ImageWriter.cs
-	  Mono.Cecil.Binary/ImageWriter.cs:
-		Don't allocate potential big arrays here.
-
-2005-12-13  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Metadata/MetadataWriter.cs:
-		Set the correct version for .net 2 assemblies.
-		Correctly write embedded resources.
-		Fix #76963.
-
-2005-12-03  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/MethodSpecification.cs:
-		Override the declaring type and the name property to
-		match the inner method.
-	* Mono.Cecil/GenericInstanceType.cs:
-		Correctly set the FullName.
-	* Mono.Cecil/GenericInstanceMethod.cs:
-		Style.
-
-2005-12-02  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/TypeDefinition.cs:
-		Fix interface import. Patch by Thomas Gil.
-
-2005-11-24  Jb Evain  <jbevain at gmail.com>
-
-	* CodeGen/cecil-gen.rb
-	  CodeGen/templates/MetadataTableReader.cs
-	  CodeGen/templates/PEFileHeader.cs
-	  CodeGen/templates/CLIHeader.cs
-	  CodeGen/templates/PEOptionalHeader.cs
-	  CodeGen/templates/Table.cs
-	  CodeGen/templates/MetadataRowReader.cs
-	  CodeGen/templates/OpCodes.cs
-	  CodeGen/templates/Section.cs
-	  CodeGen/templates/ImageReader.cs:
-		Update the codegen engine so that everyone can run it
-		without having to install a dependency (eruby).
-
-	* Mono.Cecil.Metadata/Utilities.cs: re-codegenerated.
-
-2005-11-23  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/IGenericArgumentProvider.cs
-		Style.
-	* CodeGen/cecil.xml:
-		Mirror Martin's change in the codegen engine.
-
-2005-11-23  Martin Baulig  <martin at ximian.com>
-
-	Generics API changes:
-	TypeReference and MethodReference now contain a
-	`GenericArguments' property (of type `GenericArgumentCollection')
-	and `GenericParameters' is moved into TypeDefinition/MethodDefinition.
-
-	* Mono.Cecil/IGenericArgumentProvider.cs: New file.
-	(IGenericArgumentProvider): New public interface.
-
-	* Mono.Cecil/IGenericArgumentCollection.cs
-	(IGenericArgumentCollection.Container): Changed type from
-	`IGenericInstance' -> `IGenericArgumentProvider'.
-
-	* Mono.Cecil/IGenericInstance.cs
-	(IGenericInstance.Arguments): Renamed to `GenericArguments'.
-
-	* Mono.Cecil/ITypeReference.cs
-	(ITypeReference): Implement `IGenericArgumentProvider' instead of
-	`IGenericParameterProvider'.
-
-	* Mono.Cecil/ITypeDefinition.cs
-	(ITypeDefinition): Implement `IGenericParameterProvider'.
-
-	* Mono.Cecil/IMethod.cs
-	(IMethodReference): Implement `IGenericArgumentProvider' instead of
-	`IGenericParameterProvider'.
-	(IMethodDefinition): Implement `IGenericParameterProvider'.
-
-	* Mono.Cecil/TypeReference.cs
-	(TypeReference.GenericParameters): Removed.
-	(TypeReference.GenericArguments): New public property.
-
-	* Mono.Cecil/TypeDefinition.cs
-	(TypeDefinition.GenericParameters): New public property.
-	(TypeDefinition.OnGenericParameterAdded): If a generic parameter
-	is added, also add it to the `GenericArguments'.
-
-	* Mono.Cecil/MethodReference.cs
-	(MethodReference.GenericParameters): Removed.
-	(MethodReference.GenericArguments): New public property.
-
-	* Mono.Cecil/MethodDefinition.cs
-	(MethodDefinition.GenericParameters): New public property.
-	(MethodDefinition.OnGenericParameterAdded): If a generic parameter
-	is added, also add it to the `GenericArguments'.
-
-	* Mono.Cecil/GenericInstanceType.cs
-	(GenericInstanceType): Removed the `m_arguments' field; we now
-	inherit the `GenericArguments' property from `TypeReference'.
-
-	* Mono.Cecil/GenericInstanceMethod.cs
-	(GenericInstanceMethod): Removed the `m_arguments' field; we now
-	inherit the `GenericArguments' property from `MethodReference'.
-
-	* Mono.Cecil/GenericContext.cs
-	(GenericContext): We now operate on type/method references and not
-	definitions.
-	(GenericContext.Type): Changed type to `TypeReference'.
-	(GenericContext.Method): Changed type to `MethodReference'.
-
-2005-11-23  Martin Baulig  <martin at ximian.com>
-
-	* Mono.Cecil.Metadata/TokenType.cs: Added `GenericParam'.
-
-	* Mono.Cecil.Metadata/Utilities.cs
-	(GetMetadataToken): In `case CodedIndex.HasCustomAttribute', add
-	`TokenType.GenericParam'.
-
-2005-11-22  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/IMethodDefinitionCollection.cs
-	  Mono.Cecil/MethodDefinitionCollection.cs
-	  CodeGen/templates/IndexedCollectionImplem.cs
-	  CodeGen/templates/IIndexedCollection.cs:
-		Add a new search method.
-	* CodeGen/templates/NamedCollectionImplem.cs
-	  Mono.Cecil/TypeReferenceCollection.cs
-	  Mono.Cecil/ExternTypeCollection.cs
-	  Mono.Cecil/TypeDefinitionCollection.cs:
-		Style.
-
-2005-11-13	Rodrigo B. de Oliveira <rodrigobamboo at gmail.com>
-	* Mono.Cecil/ReflectionReader.cs
-		Fix for NRE when reading assemblies with a field initializer
-		pointing to a data section
-		(TestCases/Regression/OddInt64Initializer.dll).
-
-2005-11-11  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* Mono.Cecil.Metadata/MetadataWriter.cs
-		Add support for different strongname key size (between 384
-		and 16384 bits) as now supported in fx 2.0. Default is still
-		1024 bits.
-
-2005-11-10	Rodrigo B. de Oliveira <rodrigobamboo at gmail.com>
-	* Mono.Cecil/CompactFrameworkCompatibility.cs
-	  Mono.Cecil/SecurityDeclarationReader.cs
-	  Mono.Cecil/TypeReferenceCollection.cs
-	  Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/AssemblyFactory.cs
-	  Mono.Cecil/AssemblyName.cs
-	  Mono.Cecil/ExternTypeCollection.cs
-	  Mono.Cecil/ModuleDefinition.cs
-	  Mono.Cecil/TypeDefinitionCollection.cs
-	  CodeGen/templates/NamedCollectionImplem.cs
-	  CodeGen/templates/ImageReader.cs
-	  Mono.Cecil.Metadata/MetadataReader.cs
-	  Mono.Cecil.Metadata/MetadataWriter.cs
-	  Mono.Cecil.Metadata/CultureUtils.cs
-	  Mono.Xml/SecurityParser.cs
-	  Mono.Xml/SmallXmlParser.cs
-	  Mono.Cecil.Signatures/SignatureReader.cs
-	  Mono.Cecil.Binary/ImageReader.cs
-	  cecil.build
-	  	Implement support for compiling on the CompactFramework
-
-2005-11-08  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/GenericInstanceType.cs
-	  Mono.Cecil/TypeReference.cs:
-		Fix a regression with 2.0 assemblies.
-
-2005-11-03  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/CallSite.cs
-	  Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/ICallSite.cs
-	  Mono.Cecil.Cil/CodeReader.cs
-	  Mono.Cecil.Cil/CodeWriter.cs
-	  Mono.Cecil.Signatures/SignatureReader.cs
-	  Mono.Cecil.dll.sources:
-		Implement support for calli opcodes reading.
-
-2005-11-01  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/FunctionPointerType.cs
-	  Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil.Signatures/SignatureReader.cs:
-		Work on function pointers.
-
-	* Mono.Cecil/AssemblyInfo.cs:
-		Increase Cecil SVN version.
-
-	* Mono.Cecil/ArrayType.cs
-	  Mono.Cecil/MethodSpecification.cs
-	  Mono.Cecil/TypeSpecification.cs
-	  Mono.Cecil/IMethodSpecification.cs
-	  Mono.Cecil/GenericInstanceType.cs
-	  Mono.Cecil/IGenericInstanceType.cs
-	  Mono.Cecil/GenericInstanceMethod.cs
-	  Mono.Cecil/IModifierType.cs
-	  Mono.Cecil/IPinnedType.cs
-	  Mono.Cecil/ReferenceType.cs
-	  Mono.Cecil/IGenericInstanceMethod.cs
-	  Mono.Cecil/PinnedType.cs
-	  Mono.Cecil/PointerType.cs
-	  Mono.Cecil/IPointerType.cs
-	  Mono.Cecil/IReferenceType.cs
-	  Mono.Cecil/IArrayType.cs
-	  Mono.Cecil/ITypeSpecification.cs
-	  Mono.Cecil/Modifiers.cs
-	  Mono.Cecil.dll.sources:
-		Uniformize the specification model.
-
-2005-10-31  Jb Evain  <jbevain at gmail.com>
-
-	* AUTHORS,
-	  NEWS,
-	  README,
-	  TODO,
-	  Mono.Cecil/AssemblyInfo.cs:
-		Cecil 0.1 release.
-
-	* Mono.Cecil/ReflectionReader.cs:
-		Force value type property on known core types.
-
-2005-10-28  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/TypeReference.cs
-	  Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/TypeDefinition.cs
-	  Mono.Cecil/ModuleDefinition.cs
-	  Mono.Cecil/ReflectionWriter.cs:
-		Uniformize the API.
-
-	* Mono.Cecil.Signatures/SignatureWriter.cs:
-		Correct a bug in strings encoding in custom attributes.
-
-	* CodeGen/templates/ImageWriter.cs
-	  Mono.Cecil.Metadata/MetadataWriter.cs
-	  Mono.Cecil/StructureWriter.cs
-	  Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil.Binary/ImageWriter.cs:
-		Implement a big of public key management,
-		here we reserve space for the strong name
-		signature if needed.
-
-	* Mono.Cecil/StructureWriter.cs
-	  Mono.Cecil/StructureReader.cs:
-		Disable public key writing until
-		it is implemented.
-
-	* Mono.Cecil/GenericParameter.cs
-	  Mono.Cecil/TypeReference.cs
-	  Mono.Cecil/MethodReference.cs:
-		Work on generics writing api.
-	* Mono.Cecil/ReflectionReader.cs:
-		Fix a bug when defining a fresh assembly.
-
-	* Mono.Cecil/GenericInstanceType.cs
-	  Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil/IGenericParameterProvider.cs
-	  Mono.Cecil.Signatures/Var.cs
-	  Mono.Cecil.Signatures/MVar.cs
-	  Mono.Cecil.Signatures/SignatureReader.cs
-	  Mono.Cecil.Signatures/SignatureWriter.cs
-	  Mono.Cecil.Cil/CodeWriter.cs:
-		Work on generics writing.
-
-2005-10-27  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Cil/CodeReader.cs
-	  Mono.Cecil.Cil/CilWorker.cs
-	  Mono.Cecil.Cil/CodeWriter.cs
-	  Mono.Cecil.Cil/OpCode.cs:
-		Override op == and != on opcodes.
-
-	* Mono.Cecil/FieldDefinition.cs
-	  Mono.Cecil/TypeDefinition.cs
-	  Mono.Cecil/MethodDefinition.cs
-	  Mono.Cecil/EventDefinition.cs
-	  Mono.Cecil/PropertyDefinition.cs:
-		Fix setters working on attributes.
-
-	* Mono.Cecil.Cil/CodeWriter.cs:
-		Compute max stack before writing method.
-
-	* Mono.Cecil/GenericContext.cs
-	  Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil.Signatures/SignatureReader.cs:
-		Work on generics support.
-
-	* CodeGen/cecil.xml
-	  Mono.Cecil/ISecurityDeclarationCollection.cs
-	  Mono.Cecil/SecurityDeclarationCollection.cs:
-		Remove the security declaration from the codegen.
-
-2005-10-27  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* Mono.Cecil\SecurityDeclaration.cs
-		Copy the permission set when cloning.
-	* Mono.Cecil\SecurityDeclarationCollection.cs
-		Ajusted to use an Hashtable, to Union permission sets on
-		the same action and to set/unset HasSecurity when needed.
-	* Mono.Cecil\ModuleDefinition.cs:
-		Added TODO (remainder) for complete 2.0 format support.
-	* Mono.Cecil\ReflectionWriter.cs:
-		Move MetadataToken finding outside the loop.
-	* Mono.Cecil\ISecurityDeclarationCollection.cs:
-		Adjust interface.
-
-2005-10-27  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/TypeDefinition.cs
-	  Mono.Cecil/MethodDefinition.cs:
-		Add generics parameters in visitor path.
-
-	* Mono.Cecil/GenericParamAttributes.cs:
-		Add new constraints flags.
-
-2005-10-22  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/GenericParameter.cs
-	  Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/IGenericParameter.cs
-	  Mono.Cecil/AggressiveReflectionReader.cs
-	  Mono.Cecil/GenericContext.cs:
-		Support generic parameters constraints.
-
-2005-10-21  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/FieldDefinition.cs
-	  Mono.Cecil/CustomAttribute.cs
-	  Mono.Cecil/TypeDefinition.cs
-	  Mono.Cecil/SecurityDeclaration.cs
-	  Mono.Cecil/MethodDefinition.cs
-	  Mono.Cecil/EventDefinition.cs
-	  Mono.Cecil/ParameterDefinition.cs
-	  Mono.Cecil/PropertyDefinition.cs:
-		Implement ICloneable.
-
-	* Mono.Cecil/IAssemblyDefinition.cs:
-		Mirror changes on asm kind.
-	* Mono.Cecil/StructureReader.cs:
-		Fix asm kind detection.
-
-	* Mono.Cecil/StructureWriter.cs
-	  Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/MethodDefinition.cs
-	  Mono.Cecil/ReflectionWriter.cs:
-		Fix regressions.
-	* Mono.Cecil.Cil/MethodBody.cs:
-		Fix method cloning.
-
-	* CodeGen/templates/MetadataTableReader.cs
-	  Mono.Cecil.Metadata/MetadataTableReader.cs
-	  Mono.Cecil.Metadata/MetadataReader.cs:
-		Add helpers for reading.
-
-	* Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/MethodDefinition.cs
-	  Mono.Cecil/AggressiveReflectionReader.cs
-	  Mono.Cecil/GenericContext.cs:
-		Working on generic parameters reading.
-		Still have troubles reading a 2.0 corlib.
-
-	* Mono.Cecil/IHasMarshalSpec.cs:
-		API fix.
-
-	* Mono.Cecil/ParameterDefinition.cs
-	  Mono.Cecil.Cil/VariableDefinition.cs:
-		Override ToString.
-
-2005-10-20  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Cil/CodeReader.cs
-	  Mono.Cecil.Cil/CodeWriter.cs
-	  Mono.Cecil.Cil/ICilWorker.cs
-	  Mono.Cecil.Cil/CilWorker.cs:
-		ShortInlineI operands are signed.
-		Spotted by Rodrigo B. de Oliveira.
-
-	* CodeGen/templates/OpCodes.cs
-	  Mono.Cecil.Cil/OpCodes.cs:
-		Add 2.0 opcodes.
-
-	* Mono.Cecil/StructureWriter.cs
-	  Mono.Cecil/AssemblyDefinition.cs
-	  Mono.Cecil/AssemblyFactory.cs
-	  Mono.Cecil/StructureReader.cs
-	  Mono.Cecil/ReflectionWriter.cs:
-		Handle the assembly kind in a smoothie way.
-
-2005-10-19  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* Mono.Cecil/AssemblyDefinition.cs: Added an override for ToString to
-	ease debugging.
-	* Mono.Cecil/ModuleDefinition.cs: Make SecurityDeclaration works with
-	2.0 assemblies.
-	* Mono.Cecil/ReflectionReader.cs: Modified BuildSecurityDeclaration
-	to use the new SecurityDeclarationReader (supporting both formats).
-	* Mono.Cecil/SecurityAction.cs: Removed actions that were "cutted" out
-	of 2.0 final.
-	* Mono.Cecil/SecurityDeclarationReader.cs: New. Handle both the 1.x
-	and 2.0 formats for reading declarative security.
-
-2005-10-18  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/GenericParameter.cs:
-		A little change before the fix.
-
-	* Mono.Cecil/ReflectionHelper.cs
-	  Mono.Cecil/MethodDefinition.cs
-	  Mono.Cecil.Cil/MethodBody.cs:
-		Implement method cloning.
-
-	* Mono.Cecil/ModuleReference.cs
-	  Mono.Cecil/FieldDefinition.cs
-	  Mono.Cecil/TypeReference.cs
-	  Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/TypeDefinition.cs
-	  Mono.Cecil/EventDefinition.cs
-	  Mono.Cecil/ModuleDefinition.cs
-	  Mono.Cecil/FieldReference.cs
-	  Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil/PropertyDefinition.cs
-	  Mono.Cecil/AssemblyFactory.cs:
-		Small API change.
-
-	* Mono.Cecil.Cil/CodeReader.cs:
-		Fix variables names.
-
-	TODO before 0.1:
-		Fix generic parameters,
-		generic writing,
-		constructor changes (with S.Type and SR.*Info)
-
-2005-10-14  Jb Evain  <jbevain at gmail.com>
-
-	Work on generics support.
-
-	* CodeGen/cecil.xml: new collections, coded indexes, opcodes.
-
-	* Mono.Cecil/IGenericParameterCollection.cs
-	  Mono.Cecil/GenericParameterCollection.cs
-	  Mono.Cecil/IGenericArgumentCollection.cs
-	  Mono.Cecil/GenericArgumentCollection.cs:
-		Added new collections.
-
-	* Mono.Cecil.Metadata/Utilities.cs: updated.
-	* Mono.Cecil.Metadata/TokenType.cs: added MethodSpec.
-
-	* Mono.Cecil/IGenericParameter.cs
-	  Mono.Cecil/GenericParameter.cs
-	  Mono.Cecil/IGenericParameterConstraints.cs
-	  Mono.Cecil/GenericParameterConstraints.cs
-	  Mono.Cecil/IGenericParameterProvider.cs
-	  Mono.Cecil/IGenericInstance.cs
-	  Mono.Cecil/IGenericInstanceType.cs
-	  Mono.Cecil/GenericInstanceType.cs
-	  Mono.Cecil/IGenericInstanceMethod.cs
-	  Mono.Cecil/GenericInstanceMethod.cs:
-		Generics API elements.
-
-	* Mono.Cecil/IMethod.cs
-	  Mono.Cecil/MethodReference.cs
-	  Mono.Cecil/ITypeReference.cs
-	  Mono.Cecil/TypeReference.cs:
-		Implement IGenericParameterProvider
-
-	* Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/IReflectionVisitor.cs
-	  Mono.Cecil/BaseReflectionVisitor.cs
-	  Mono.Cecil/StructureReader.cs
-	  Mono.Cecil/AggressiveReflectionReader.cs
-	  Mono.Cecil/MemberReference.cs:
-		Support for the new generics elements.
-
-	* Mono.Cecil.Signatures/Var.cs
-	  Mono.Cecil.Signatures/MVar.cs
-	  Mono.Cecil.Signatures/GenericInstSignature.cs
-	  Mono.Cecil.Signatures/GenericInst.cs:
-		Added file header.
-
-	* Mono.Cecil.Signatures/SignatureReader.cs
-	  Mono.Cecil.Signatures/GenericInstSignature.cs
-	  Mono.Cecil.Signatures/MethodDefSig.cs
-	  Mono.Cecil.Signatures/GenericInst.cs
-	  Mono.Cecil.Signatures/MethodSpec.cs
-	  Mono.Cecil/MethodCallingConvention.cs
-	  Mono.Cecil.Cil/CodeReader.cs:
-		Added support for generic signatures.
-
-	* Mono.Cecil.Cil/OpCodes.cs:
-		Add consrained. opcode.
-
-	* Mono.Cecil.dll.sources:
-		Updated.
-
-	Known problems: !!parameters
-
-2005-10-13  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ReflectionHelper.cs
-	  Mono.Cecil/FieldDefinition.cs
-	  Mono.Cecil/CustomAttribute.cs
-	  Mono.Cecil/MethodReturnType.cs
-	  Mono.Cecil/TypeDefinition.cs
-	  Mono.Cecil/SecurityDeclaration.cs
-	  Mono.Cecil/MethodDefinition.cs
-	  Mono.Cecil/EventDefinition.cs
-	  Mono.Cecil/ModuleDefinition.cs
-	  Mono.Cecil/ParameterDefinition.cs
-	  Mono.Cecil/IMethodReturnType.cs
-	  Mono.Cecil/PropertyDefinition.cs
-	  Mono.Cecil.Cil/MethodBody.cs:
-		Work on the import.
-	* Mono.Cecil/ITypeParameterType.cs
-	  Mono.Cecil/TypeParameterType.cs:
-		Correct the interface.
-
-2005-10-12  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/EventDefinition.cs
-	  Mono.Cecil/TypeDefinition.cs
-	  Mono.Cecil/ModuleDefinition.cs
-	  Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil/PropertyDefinition.cs:
-		Small fixes.
-
-2005-09-16  Martin Baulig  <martin at ximian.com>
-
-	Added generics support to Cecil.
-
-	* Mono.Cecil/IGenericInstType.cs: New file.
-	* Mono.Cecil/ITypeParameterType.cs: New file.
-	* Mono.Cecil/IMethodTypeParameterType.cs: New file.
-
-	* Mono.Cecil.Metadata/ElementType.cs
-	(ElementType): Added `Var', `MVar' and `GenericInst'.
-
-	* Mono.Cecil.Metadata/Utilities.cs
-	(Utilities.GetMetadataToken): .NET 2.0 also uses TypeDef's in the
-	MemberRefParent.
-
-	* Mono.Cecil/GenericInstType.cs: New file.
-	* Mono.Cecil/MethodTypeParameterType.cs: New file.
-	* Mono.Cecil/TypeParameterType.cs: New file.
-
-	* Mono.Cecil.Signatures/Var.cs: New file.
-	* Mono.Cecil.Signatures/MVar.cs: New file.
-	* Mono.Cecil.Signatures/GenericInst.cs: New file.
-	* Mono.Cecil.Signatures/GenericInstSignature.cs: New file.
-
-	* Mono.Cecil/ReflectionReader.cs
-	(ReflectionReader.GetTypeRefFromSig): Add the new types.
-
-	* Mono.Cecil.Signatures/SignatureReader.cs
-	(SignatureReader.ReadType): Add the new types.
-
-2005-10-06  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ReflectionHelper.cs
-	  Mono.Cecil/ModuleDefinition.cs:
-		Fix a bug in type importing.
-
-2005-10-06  Jb Evain  <jbevain at gmail.com>
-
-	* Hopefully, this is the last API change before the release of Cecil 0.1.
-	  Mono.Cecil.Implem has been moved to Mono.Cecil. The interfaces where
-	  very convenient for a reading API, it was far less convenient for a
-	  modification and writing one. The modification API still needs some work,
-	  but this should be easier this way.
-
-2005-09-27  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Metadata/MetadataReader.cs:
-		Fix resources reading.
-
-	* Mono.Cecil.Implem/StructureWriter.cs:
-		Correctly set the offset of resources in the manifest.
-	* Mono.Cecil.Implem/StructureFactories.cs:
-		Use correct overrides when creating assembly references.
-	* Mono.Cecil.Implem/ReflectionFactories:
-		Correctly create type references.
-
-2005-09-06  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/IReflectionFactories.cs
-	  Mono.Cecil.Implem/ReflectionFactories.cs:
-		Allow the creation of reference types for methods
-		parameters and return types.
-	* Mono.Cecil.Cil/ICilWorker.cs
-	  Mono.Cecil.Implem/CilWorker.cs
-	  Mono.Cecil.Implem/CodeReader.cs
-	  Mono.Cecil.Implem/CodeWriter.cs:
-		Global fix on the handling of parameters in instructions.
-	* Mono.Cecil.Implem/AssemblyName.cs:
-		Correcty write the version of an assembly fullname.
-		Spotted by Bruno Cabral.
-	* Mono.Cecil.Implem/TypeDefinition.cs:
-		Set the declaring type of a nested type on add.
-	* Mono.Cecil.Implem/CustomAttribute.cs
-	  Mono.Cecil.Implem/ReflectionReader.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs
-	  Mono.Cecil.Implem/AggressiveReflectionReader.cs
-	  Mono.Cecil.Signatures/CustomAttrib.cs
-	  Mono.Cecil.Signatures/SignatureReader.cs:
-		Global fix on custom attribute handling. Some
-		custom attribute (containing enums) blobs can not be
-		decoded.
-
-2005-09-04  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Implem/Instruction.cs:
-		Add the setter for IInstruction::OpCode.
-
-2005-09-02  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ICustomAttribute.cs
-	  Mono.Cecil.Implem/ReflectionFactories.cs
-	  Mono.Cecil.Implem/CustomAttribute.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs
-	  Mono.Cecil.Signatures/SignatureWriter.cs:
-		Prepare the work on custom attributes.
-	* Mono.Cecil.Cil/IInstruction.cs:
-		Let users modify the content of an instruction.
-	* Mono.Cecil.Implem/StructureReader.cs:
-		Do not try to read 2.0 assemblies.
-
-2005-08-28  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Metadata/MetadataWriter.cs:
-		Write the fields initial value back.
-		As of this revision, a round tripped mcs
-		can compile Cecil.
-
-	* Mono.Cecil.Implem/ReflectionWriter.cs:
-		Emit things in proper order.
-	  Mono.Cecil.Implem/CodeReader.cs
-	  Mono.Cecil.Implem/CodeWriter.cs:
-		Correct bug with InlineVar opcodes.
-		Emit fat body if maxstack is set.
-
-	* Mono.Cecil.Implem/CodeWriter.cs:
-		Handle null tokens.
-	  Mono.Cecil.Metadata/MetadataWriter.cs:
-		Allow one empty string in the userstring heap.
-
-	* Mono.Cecil.Implem/ReflectionReader.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs:
-		Strings constant are unicode.
-
-	* Mono.Cecil/LoadingType.cs
-	  Mono.Cecil/AssemblyFactory.cs
-	  CodeGen/templates/IndexedCollectionImplem.cs
-	  CodeGen/templates/LzIndexedCollectionImplem.cs
-	  CodeGen/cecil.xml
-	  Mono.Cecil.Implem/InterfaceCollection.cs
-	  Mono.Cecil.Implem/ILazyLoadable.cs
-	  Mono.Cecil.Implem/ExternTypeCollection.cs
-	  Mono.Cecil.Implem/SecurityDeclarationCollection.cs
-	  Mono.Cecil.Implem/ReflectionHelper.cs
-	  Mono.Cecil.Implem/OverrideCollection.cs
-	  Mono.Cecil.Implem/EventDefinitionCollection.cs
-	  Mono.Cecil.Implem/FieldDefinitionCollection.cs
-	  Mono.Cecil.Implem/PropertyDefinitionCollection.cs
-	  Mono.Cecil.Implem/CustomAttributeCollection.cs
-	  Mono.Cecil.Implem/MethodDefinition.cs
-	  Mono.Cecil.Implem/EventDefinition.cs
-	  Mono.Cecil.Implem/FieldDefinition.cs
-	  Mono.Cecil.Implem/ModuleDefinition.cs
-	  Mono.Cecil.Implem/ReflectionController.cs
-	  Mono.Cecil.Implem/TypeReference.cs
-	  Mono.Cecil.Implem/ReflectionReader.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs
-	  Mono.Cecil.Implem/AssemblyDefinition.cs
-	  Mono.Cecil.Implem/TypeDefinition.cs
-	  Mono.Cecil.Implem/AggressiveReflectionReader.cs
-	  Mono.Cecil.Implem/MethodDefinitionCollection.cs
-	  Mono.Cecil.Implem/LazyReflectionReader.cs
-	  Mono.Cecil.Implem/ParameterDefinition.cs
-	  Mono.Cecil.Implem/PropertyDefinition.cs
-	  Mono.Cecil.Implem/ConstructorCollection.cs
-	  Mono.Cecil.Signatures/SignatureWriter.cs:
-		Get rid of the complexity introduced by the
-		internal lazy loading.
-
-	* Mono.Cecil.Implem/EventDefinition.cs
-	  Mono.Cecil.Implem/PropertyDefinition.cs:
-		Fix the behavior of .ToString ().
-
-2005-08-27  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Implem/ReflectionWriter.cs:
-		Write back custom attributes of modules and assemblies
-		as well as their security declaration.
-	* Mono.Cecil.Implem/CodeWriter.cs:
-		Fix branches computation.
-	  Mono.Cecil.Signatures/SignatureReader.cs:
-		Disable custom attribute reading cache.
-
-	* CodeGen/templates/ImageWriter.cs
-	  Mono.Cecil.Binary/ImageWriter.cs:
-		Compute relocations.
-	* Mono.Cecil.Implem/ReflectionFactories.cs:
-		Blah.
-
-	* Mono.Cecil.Implem/TablesComparer.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs:
-		Sort all tables that need to be sorted.
-
-	* Mono.Cecil.Implem/CodeReader.cs:
-		Oops. Add fat exception handlers to the method body.
-
-	* CodeGen/templates/ImageWriter.cs
-	  Mono.Cecil.Implem/StructureWriter.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs
-	  Mono.Cecil.Implem/TypeDefinition.cs
-	  Mono.Cecil.Binary/ImageWriter.cs:
-		Correct a few bugs: relocations now works.
-		Encode enums in custom attributes.
-		Compute memberrefs tokens before visitings types.
-
-	* Mono.Cecil.Implem/FieldDefinition.cs:
-		Correct a bug that causes null ref due to
-		the new api.
-	* Mono.Cecil.Signatures/SignatureWriter.cs:
-		Implement a very little more custom attributes
-		writing.
-
-2005-08-26  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/IMemberReferenceCollection.cs
-	  Mono.Cecil/IReflectionVisitor.cs
-	  Mono.Cecil/IReflectionFactories.cs
-	  Mono.Cecil/BaseReflectionVisitor.cs
-	  Mono.Cecil/IModuleDefinition.cs
-	  CodeGen/cecil.xml
-	  Mono.Cecil.Implem/ReflectionFactories.cs
-	  Mono.Cecil.Implem/ReflectionHelper.cs
-	  Mono.Cecil.Implem/ModuleDefinition.cs
-	  Mono.Cecil.Implem/MemberReferenceCollection.cs
-	  Mono.Cecil.Implem/ReflectionReader.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs
-	  Mono.Cecil.Implem/ParameterDefinition.cs:
-		Handle member references nicely.
-
-	* Mono.Cecil/ICustomAttributeProvider.cs
-	  Mono.Cecil/IModuleDefinitionCollection.cs
-	  Mono.Cecil/IReflectionStructureFactories.cs
-	  Mono.Cecil/IInterfaceCollection.cs
-	  Mono.Cecil/IMethod.cs
-	  Mono.Cecil/IReflectionFactories.cs
-	  Mono.Cecil/INestedTypeCollection.cs
-	  Mono.Cecil/ITypeReferenceCollection.cs
-	  Mono.Cecil/IExternTypeCollection.cs
-	  Mono.Cecil/IAssemblyDefinition.cs
-	  Mono.Cecil/ITypeDefinition.cs
-	  Mono.Cecil/ICustomAttribute.cs
-	  Mono.Cecil/IArrayDimensionCollection.cs
-	  Mono.Cecil/TypeFactory.cs
-	  Mono.Cecil/IConstructorCollection.cs
-	  Mono.Cecil/IHasSecurity.cs
-	  Mono.Cecil/IMethodDefinitionCollection.cs
-	  Mono.Cecil/IPropertyDefinitionCollection.cs
-	  Mono.Cecil/IAssemblyNameReferenceCollection.cs
-	  Mono.Cecil/IModuleReferenceCollection.cs
-	  Mono.Cecil/IArrayType.cs
-	  Mono.Cecil/ISecurityDeclarationCollection.cs
-	  Mono.Cecil/IModuleDefinition.cs
-	  Mono.Cecil/IResourceCollection.cs
-	  Mono.Cecil/IParameterDefinitionCollection.cs
-	  Mono.Cecil/IEventDefinitionCollection.cs
-	  Mono.Cecil/ITypeDefinitionCollection.cs
-	  Mono.Cecil/IFieldDefinitionCollection.cs
-	  Mono.Cecil/ICustomAttributeCollection.cs
-	  Mono.Cecil/ISecurityDeclaration.cs
-	  Mono.Cecil/IOverrideCollection.cs
-	  Mono.Cecil/ITypeReference.cs
-	  Mono.Cecil.Cil/IExceptionHandlerCollection.cs
-	  Mono.Cecil.Cil/IVariableDefinitionCollection.cs
-	  Mono.Cecil.Cil/IInstructionCollection.cs
-	  Mono.Cecil.Cil/IMethodBody.cs
-	  CodeGen/cecil-gen-types.rb
-	  CodeGen/templates/ImageWriter.cs
-	  CodeGen/templates/IndexedCollectionImplem.cs
-	  CodeGen/templates/NamedCollectionImplem.cs
-	  CodeGen/templates/IIndexedCollection.cs
-	  CodeGen/templates/LzIndexedCollectionImplem.cs
-	  CodeGen/templates/INamedCollection.cs
-	  CodeGen/templates/LzNamedCollectionImplem.cs
-	  Mono.Cecil.Implem/InterfaceCollection.cs
-	  Mono.Cecil.Implem/AssemblyLinkedResource.cs
-	  Mono.Cecil.Implem/ModuleReferenceCollection.cs
-	  Mono.Cecil.Implem/ExternTypeCollection.cs
-	  Mono.Cecil.Implem/SecurityDeclarationCollection.cs
-	  Mono.Cecil.Implem/ReflectionFactories.cs
-	  Mono.Cecil.Implem/ReflectionHelper.cs
-	  Mono.Cecil.Implem/OverrideCollection.cs
-	  Mono.Cecil.Implem/ArrayDimensionCollection.cs
-	  Mono.Cecil.Implem/EmbeddedResource.cs
-	  Mono.Cecil.Implem/CilWorker.cs
-	  Mono.Cecil.Implem/ParameterDefinitionCollection.cs
-	  Mono.Cecil.Implem/EventDefinitionCollection.cs
-	  Mono.Cecil.Implem/FieldDefinitionCollection.cs
-	  Mono.Cecil.Implem/PropertyDefinitionCollection.cs
-	  Mono.Cecil.Implem/ModuleDefinitionCollection.cs
-	  Mono.Cecil.Implem/CustomAttributeCollection.cs
-	  Mono.Cecil.Implem/VariableDefinitionCollection.cs
-	  Mono.Cecil.Implem/TypeReferenceCollection.cs
-	  Mono.Cecil.Implem/MemberDefinition.cs
-	  Mono.Cecil.Implem/StructureReader.cs
-	  Mono.Cecil.Implem/FunctionPointerType.cs
-	  Mono.Cecil.Implem/MethodDefinition.cs
-	  Mono.Cecil.Implem/EventDefinition.cs
-	  Mono.Cecil.Implem/FieldDefinition.cs
-	  Mono.Cecil.Implem/InstructionCollection.cs
-	  Mono.Cecil.Implem/VariableDefinition.cs
-	  Mono.Cecil.Implem/CustomAttribute.cs
-	  Mono.Cecil.Implem/ModuleDefinition.cs
-	  Mono.Cecil.Implem/MethodReference.cs
-	  Mono.Cecil.Implem/TypeReference.cs
-	  Mono.Cecil.Implem/StructureFactories.cs
-	  Mono.Cecil.Implem/TypeDefinitionCollection.cs
-	  Mono.Cecil.Implem/AssemblyNameReferenceCollection.cs
-	  Mono.Cecil.Implem/ReflectionReader.cs
-	  Mono.Cecil.Implem/MethodReturnType.cs
-	  Mono.Cecil.Implem/MemberReference.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs
-	  Mono.Cecil.Implem/Resource.cs
-	  Mono.Cecil.Implem/AssemblyDefinition.cs
-	  Mono.Cecil.Implem/TypeDefinition.cs
-	  Mono.Cecil.Implem/AggressiveReflectionReader.cs
-	  Mono.Cecil.Implem/CodeReader.cs
-	  Mono.Cecil.Implem/FieldReference.cs
-	  Mono.Cecil.Implem/MethodDefinitionCollection.cs
-	  Mono.Cecil.Implem/LazyReflectionReader.cs
-	  Mono.Cecil.Implem/LinkedResource.cs
-	  Mono.Cecil.Implem/ParameterDefinition.cs
-	  Mono.Cecil.Implem/PropertyDefinition.cs
-	  Mono.Cecil.Implem/MethodBody.cs
-	  Mono.Cecil.Implem/NestedTypeCollection.cs
-	  Mono.Cecil.Implem/ConstructorCollection.cs
-	  Mono.Cecil.Implem/ResourceCollection.cs
-	  Mono.Cecil.Implem/ExceptionHandlerCollection.cs
-	  Mono.Cecil.Binary/ImageWriter.cs
-	  Mono.Cecil.Binary/ImageReader.cs:
-		Fix the writing API before the API freeze. Few things
-		are not implemented, see todos.
-
-2005-08-20  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ITypeDefinition.cs
-	  Mono.Cecil/IModuleDefinition.cs
-	  Mono.Cecil/ITypeReference.cs
-	  Mono.Cecil.Implem/ReflectionHelper.cs
-	  Mono.Cecil.Implem/ModuleDefinition.cs
-	  Mono.Cecil.Implem/TypeReference.cs
-	  Mono.Cecil.Implem/ReflectionReader.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs
-	  Mono.Cecil.Implem/TypeDefinition.cs:
-		Add way to know if a type reference is a
-		value type or not. This hack saved my life.
-
-	* Mono.Cecil.Implem/CodeWriter.cs:
-		Fix typespec emitting.
-
-	* Mono.Cecil/IReflectionVisitor.cs
-	  Mono.Cecil/IMethod.cs
-	  Mono.Cecil/BaseReflectionVisitor.cs
-	  Mono.Cecil/ITypeDefinition.cs
-	  Mono.Cecil/IConstructorCollection.cs
-	  CodeGen/cecil.xml
-	  Mono.Cecil.Implem/MethodDefinition.cs
-	  Mono.Cecil.Implem/ReflectionReader.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs
-	  Mono.Cecil.Implem/TypeDefinition.cs
-	  Mono.Cecil.Implem/ConstructorCollection.cs:
-		Support constructors decently.
-
-	* CodeGen/templates/Utilities.cs
-	  Mono.Cecil.Metadata/Utilities.cs:
-		Return a null token if the rid of a md token
-		is 0. Fix the crash when Mono try to read
-		assemblies emitted by Cecil.
-
-2005-08-19  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Implem/ReflectionWriter.cs:
-		Set the RVA of a method only if it can
-		have a body.
-	* Mono.Cecil.Signatures/SignatureReader.cs:
-		Remove debugging stuff.
-
-	* Mono.Cecil.Implem/ReflectionReader.cs
-	  Mono.Cecil.Signatures/SignatureReader.cs:
-		Fix custom marshaller reading.
-
-	* CodeGen/templates/NamedCollectionImplem.cs
-	  CodeGen/templates/LzNamedCollectionImplem.cs
-	  Mono.Cecil.Implem/ExternTypeCollection.cs
-	  Mono.Cecil.Implem/TypeReferenceCollection.cs
-	  Mono.Cecil.Implem/TypeDefinitionCollection.cs
-	  Mono.Cecil.Implem/ReflectionReader.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs
-	  Mono.Cecil.Implem/TablesComparer.cs
-	  Mono.Cecil.Implem/Constants.cs
-	  Mono.Cecil.Signatures/SignatureWriter.cs:
-		Correct bugs in type* tables generations.
-
-	* Mono.Cecil/IModuleDefinitionCollection.cs
-	  Mono.Cecil/IInterfaceCollection.cs
-	  Mono.Cecil/INestedTypeCollection.cs
-	  Mono.Cecil/ITypeReferenceCollection.cs
-	  Mono.Cecil/IExternTypeCollection.cs
-	  Mono.Cecil/IArrayDimensionCollection.cs
-	  Mono.Cecil/IMethodDefinitionCollection.cs
-	  Mono.Cecil/IPropertyDefinitionCollection.cs
-	  Mono.Cecil/IAssemblyNameReferenceCollection.cs
-	  Mono.Cecil/IModuleReferenceCollection.cs
-	  Mono.Cecil/ISecurityDeclarationCollection.cs
-	  Mono.Cecil/IResourceCollection.cs
-	  Mono.Cecil/IParameterDefinitionCollection.cs
-	  Mono.Cecil/IEventDefinitionCollection.cs
-	  Mono.Cecil/ITypeDefinitionCollection.cs
-	  Mono.Cecil/IFieldDefinitionCollection.cs
-	  Mono.Cecil/ICustomAttributeCollection.cs
-	  Mono.Cecil/IOverrideCollection.cs
-	  Mono.Cecil.Cil/IExceptionHandlerCollection.cs
-	  Mono.Cecil.Cil/IVariableDefinitionCollection.cs
-	  Mono.Cecil.Cil/IInstructionCollection.cs
-	  CodeGen/templates/IIndexedCollection.cs
-	  CodeGen/templates/INamedCollection.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs
-	  Mono.Cecil.Binary/SubSystem.cs
-	  Mono.Cecil.Signatures/SignatureWriter.cs:
-		On going change to the writing api. Not setter allowed on
-		collections. Work on custom attribute encoding. Remove
-		the Flags on Subsystem.
-
-	* Mono.Cecil.dll.sources
-	  Mono.Cecil.Implem/ReflectionHelper.cs
-	  Mono.Cecil.Implem/TypeReference.cs
-	  Mono.Cecil.Implem/ReflectionReader.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs
-	  Mono.Cecil.Implem/TypeDefinition.cs
-	  Mono.Cecil.Implem/TablesComparer.cs
-	  Mono.Cecil.Signatures/SignatureReader.cs:
-		Fix the build.
-		Stop to prefix typeref by the scope.
-		Cecil will have buggy behaviour if it have to handle
-		two typeref with the same namespace+name, but for the
-		moment, let it like that.
-
-	* Mono.Cecil/INestedTypeCollection.cs
-	  Mono.Cecil/IModuleReference.cs
-	  Mono.Cecil/ITypeReferenceCollection.cs
-	  Mono.Cecil/IAssemblyName.cs
-	  Mono.Cecil/IExternTypeCollection.cs
-	  Mono.Cecil/IMetadataScope.cs
-	  Mono.Cecil/IModuleDefinition.cs
-	  Mono.Cecil/IResourceCollection.cs
-	  Mono.Cecil/ITypeDefinitionCollection.cs
-	  CodeGen/templates/NamedCollectionImplem.cs
-	  CodeGen/templates/INamedCollection.cs
-	  CodeGen/templates/LzNamedCollectionImplem.cs
-	  CodeGen/cecil.xml
-	  Mono.Cecil.Metadata/RowCollection.cs
-	  Mono.Cecil.Metadata/MetadataWriter.cs
-	  Mono.Cecil.Metadata/MetadataToken.cs
-	  Mono.Cecil.Implem/TablesComparer.cs
-	  Mono.Cecil.Implem/ExternTypeCollection.cs
-	  Mono.Cecil.Implem/ReflectionHelper.cs
-	  Mono.Cecil.Implem/TypeReferenceCollection.cs
-	  Mono.Cecil.Implem/StructureReader.cs
-	  Mono.Cecil.Implem/StructureWriter.cs
-	  Mono.Cecil.Implem/ModuleDefinition.cs
-	  Mono.Cecil.Implem/TypeReference.cs
-	  Mono.Cecil.Implem/TypeDefinitionCollection.cs
-	  Mono.Cecil.Implem/ReflectionReader.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs
-	  Mono.Cecil.Implem/TypeDefinition.cs
-	  Mono.Cecil.Implem/CodeReader.cs
-	  Mono.Cecil.Implem/CodeWriter.cs
-	  Mono.Cecil.Implem/Constants.cs
-	  Mono.Cecil.Implem/NestedTypeCollection.cs
-	  Mono.Cecil.Implem/ResourceCollection.cs
-	  Mono.Cecil.Signatures/SignatureReader.cs
-	  Mono.Cecil.Signatures/SignatureWriter.cs:
-		Correct some part of the API.
-		Correct tons of bugs in the writing layer.
-
-2005-08-17  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/IField.cs
-	  CodeGen/cecil.xml
-	  Mono.Cecil.Metadata/MetadataReader.cs
-	  Mono.Cecil.Metadata/MetadataWriter.cs
-	  Mono.Cecil.Implem/ReflectionHelper.cs
-	  Mono.Cecil.Implem/StructureReader.cs
-	  Mono.Cecil.Implem/FieldDefinition.cs
-	  Mono.Cecil.Implem/BaseReflectionReader.cs
-	  Mono.Cecil.Implem/ReflectionReader.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs
-	  Mono.Cecil.Implem/TypeDefinition.cs
-	  Mono.Cecil.Implem/AggressiveReflectionReader.cs
-	  Mono.Cecil.Implem/CodeReader.cs
-	  Mono.Cecil.Implem/IDetailReader.cs
-	  Mono.Cecil.Implem/CodeWriter.cs
-	  Mono.Cecil.Implem/LazyReflectionReader.cs
-	  Mono.Cecil.Signatures/SignatureWriter.cs:
-		Work on the working layer. Implement field initial
-		data. Bugs.
-
-2005-08-16  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Implem/ReflectionWriter.cs
-	  Mono.Cecil.Implem/CodeWriter.cs
-	  Mono.Cecil.Signatures/SignatureReader.cs:
-		Implement local var sig writing.
-
-	* Mono.Cecil.Implem/ArrayType.cs:
-		Style.
-	  Mono.Cecil.Implem/ParameterDefinition.cs:
-		Correct a bug in module obtention.
-	  Mono.Cecil.Signatures/SignatureReader.cs:
-		Correct a bug in arrays's signature reading.
-
-	* Mono.Cecil.dll.sources
-	  Mono.Cecil/IReflectionVisitor.cs
-	  Mono.Cecil/IModuleDefinitionCollection.cs
-	  Mono.Cecil/IInterfaceCollection.cs
-	  Mono.Cecil/IProperty.cs
-	  Mono.Cecil/BaseReflectionVisitor.cs
-	  Mono.Cecil/INestedTypeCollection.cs
-	  Mono.Cecil/ITypeReferenceCollection.cs
-	  Mono.Cecil/IParameter.cs
-	  Mono.Cecil/IExternTypeCollection.cs
-	  Mono.Cecil/IField.cs
-	  Mono.Cecil/IArrayDimensionCollection.cs
-	  Mono.Cecil/IMethodDefinitionCollection.cs
-	  Mono.Cecil/IPropertyDefinitionCollection.cs
-	  Mono.Cecil/IAssemblyNameReferenceCollection.cs
-	  Mono.Cecil/IModuleReferenceCollection.cs
-	  Mono.Cecil/IHasConstant.cs
-	  Mono.Cecil/ISecurityDeclarationCollection.cs
-	  Mono.Cecil/IMetadataTokenProvider.cs
-	  Mono.Cecil/IModuleDefinition.cs
-	  Mono.Cecil/BaseStructureVisitor.cs
-	  Mono.Cecil/IResourceCollection.cs
-	  Mono.Cecil/IParameterDefinitionCollection.cs
-	  Mono.Cecil/IEventDefinitionCollection.cs
-	  Mono.Cecil/ITypeDefinitionCollection.cs
-	  Mono.Cecil/IFieldDefinitionCollection.cs
-	  Mono.Cecil/ICustomAttributeCollection.cs
-	  Mono.Cecil/IOverrideCollection.cs
-	  Mono.Cecil.Cil/IExceptionHandlerCollection.cs
-	  Mono.Cecil.Cil/IVariableDefinitionCollection.cs
-	  Mono.Cecil.Cil/IInstructionCollection.cs
-	  CodeGen/cecil-gen.rb
-	  CodeGen/cecil-gen-types.rb
-	  CodeGen/templates/IndexedCollectionImplem.cs
-	  CodeGen/templates/NamedCollectionImplem.cs
-	  CodeGen/templates/IIndexedCollection.cs
-	  CodeGen/templates/LzIndexedCollectionImplem.cs
-	  CodeGen/templates/INamedCollection.cs
-	  CodeGen/templates/LzNamedCollectionImplem.cs
-	  CodeGen/cecil.xml
-	  Mono.Cecil.Metadata/MetadataRowWriter.cs
-	  Mono.Cecil.Metadata/MetadataWriter.cs
-	  Mono.Cecil.Implem/InterfaceCollection.cs
-	  Mono.Cecil.Implem/ModuleReferenceCollection.cs
-	  Mono.Cecil.Implem/ExternTypeCollection.cs
-	  Mono.Cecil.Implem/SecurityDeclarationCollection.cs
-	  Mono.Cecil.Implem/OverrideCollection.cs
-	  Mono.Cecil.Implem/ParameterDefinitionCollection.cs
-	  Mono.Cecil.Implem/EventDefinitionCollection.cs
-	  Mono.Cecil.Implem/FieldDefinitionCollection.cs
-	  Mono.Cecil.Implem/PropertyDefinitionCollection.cs
-	  Mono.Cecil.Implem/ModuleDefinitionCollection.cs
-	  Mono.Cecil.Implem/CustomAttributeCollection.cs
-	  Mono.Cecil.Implem/VariableDefinitionCollection.cs
-	  Mono.Cecil.Implem/TypeReferenceCollection.cs
-	  Mono.Cecil.Implem/StructureReader.cs
-	  Mono.Cecil.Implem/MethodDefinition.cs
-	  Mono.Cecil.Implem/EventDefinition.cs
-	  Mono.Cecil.Implem/FieldDefinition.cs
-	  Mono.Cecil.Implem/InstructionCollection.cs
-	  Mono.Cecil.Implem/StructureWriter.cs
-	  Mono.Cecil.Implem/ModuleDefinition.cs
-	  Mono.Cecil.Implem/MethodReference.cs
-	  Mono.Cecil.Implem/TypeReference.cs
-	  Mono.Cecil.Implem/TypeDefinitionCollection.cs
-	  Mono.Cecil.Implem/AssemblyNameReferenceCollection.cs
-	  Mono.Cecil.Implem/ReflectionReader.cs
-	  Mono.Cecil.Implem/MethodReturnType.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs
-	  Mono.Cecil.Implem/AssemblyDefinition.cs
-	  Mono.Cecil.Implem/TypeDefinition.cs
-	  Mono.Cecil.Implem/AggressiveReflectionReader.cs
-	  Mono.Cecil.Implem/MethodDefinitionCollection.cs
-	  Mono.Cecil.Implem/CodeWriter.cs
-	  Mono.Cecil.Implem/LazyReflectionReader.cs
-	  Mono.Cecil.Implem/ParameterDefinition.cs
-	  Mono.Cecil.Implem/PropertyDefinition.cs
-	  Mono.Cecil.Implem/NestedTypeCollection.cs
-	  Mono.Cecil.Implem/ResourceCollection.cs
-	  Mono.Cecil.Implem/ExceptionHandlerCollection.cs
-	  Mono.Cecil.Signatures/SignatureReader.cs
-	  Mono.Cecil.Signatures/SignatureWriter.cs:
-		Working on the writing layer.
-		Begin to fix brokens part of the API.
-
-2005-08-15  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ITypeDefinition.cs
-	  CodeGen/templates/MetadataTableReader.cs
-	  CodeGen/templates/PEFileHeader.cs
-	  CodeGen/templates/ImageWriter.cs
-	  CodeGen/templates/CLIHeader.cs
-	  CodeGen/templates/PEOptionalHeader.cs
-	  CodeGen/templates/MetadataTableWriter.cs
-	  CodeGen/templates/Table.cs
-	  CodeGen/templates/MetadataRowReader.cs
-	  CodeGen/templates/BaseMetadataVisitor.cs
-	  CodeGen/templates/Section.cs
-	  CodeGen/templates/MetadataRowWriter.cs
-	  CodeGen/templates/ImageReader.cs
-	  CodeGen/templates/IMetadataVisitor.cs
-	  Mono.Cecil.Metadata/Assembly.cs
-	  Mono.Cecil.Metadata/PropertyMap.cs
-	  Mono.Cecil.Metadata/InterfaceImpl.cs
-	  Mono.Cecil.Metadata/MetadataInitializer.cs
-	  Mono.Cecil.Metadata/Constant.cs
-	  Mono.Cecil.Metadata/MethodSpec.cs
-	  Mono.Cecil.Metadata/BaseMetadataVisitor.cs
-	  Mono.Cecil.Metadata/DeclSecurity.cs
-	  Mono.Cecil.Metadata/TypeDef.cs
-	  Mono.Cecil.Metadata/MethodImpl.cs
-	  Mono.Cecil.Metadata/GenericParamConstraint.cs
-	  Mono.Cecil.Metadata/NestedClass.cs
-	  Mono.Cecil.Metadata/MetadataTableReader.cs
-	  Mono.Cecil.Metadata/AssemblyRefProcessor.cs
-	  Mono.Cecil.Metadata/AssemblyRef.cs
-	  Mono.Cecil.Metadata/AssemblyRefOS.cs
-	  Mono.Cecil.Metadata/Method.cs
-	  Mono.Cecil.Metadata/RowCollection.cs
-	  Mono.Cecil.Metadata/MetadataTableWriter.cs
-	  Mono.Cecil.Metadata/StringsHeap.cs
-	  Mono.Cecil.Metadata/MetadataRowReader.cs
-	  Mono.Cecil.Metadata/ExportedType.cs
-	  Mono.Cecil.Metadata/CustomAttribute.cs
-	  Mono.Cecil.Metadata/Param.cs
-	  Mono.Cecil.Metadata/MetadataReader.cs
-	  Mono.Cecil.Metadata/ClassLayout.cs
-	  Mono.Cecil.Metadata/MetadataRowWriter.cs
-	  Mono.Cecil.Metadata/BlobHeap.cs
-	  Mono.Cecil.Metadata/MetadataWriter.cs
-	  Mono.Cecil.Metadata/AssemblyOS.cs
-	  Mono.Cecil.Metadata/ModuleRef.cs
-	  Mono.Cecil.Metadata/MetadataRoot.cs
-	  Mono.Cecil.Metadata/UserStringsHeap.cs
-	  Mono.Cecil.Metadata/FieldMarshal.cs
-	  Mono.Cecil.Metadata/GenericParam.cs
-	  Mono.Cecil.Metadata/ImplMap.cs
-	  Mono.Cecil.Metadata/TableCollection.cs
-	  Mono.Cecil.Metadata/TablesHeap.cs
-	  Mono.Cecil.Metadata/MetadataStreamCollection.cs
-	  Mono.Cecil.Metadata/ManifestResource.cs
-	  Mono.Cecil.Metadata/TypeRef.cs
-	  Mono.Cecil.Metadata/AssemblyProcessor.cs
-	  Mono.Cecil.Metadata/EventMap.cs
-	  Mono.Cecil.Metadata/File.cs
-	  Mono.Cecil.Metadata/Event.cs
-	  Mono.Cecil.Metadata/FieldLayout.cs
-	  Mono.Cecil.Metadata/Field.cs
-	  Mono.Cecil.Metadata/Property.cs
-	  Mono.Cecil.Metadata/Module.cs
-	  Mono.Cecil.Metadata/GuidHeap.cs
-	  Mono.Cecil.Metadata/MethodSemantics.cs
-	  Mono.Cecil.Metadata/StandAloneSig.cs
-	  Mono.Cecil.Metadata/MetadataStream.cs
-	  Mono.Cecil.Metadata/FieldRVA.cs
-	  Mono.Cecil.Metadata/TypeSpec.cs
-	  Mono.Cecil.Metadata/MemberRef.cs
-	  Mono.Cecil.Metadata/IMetadataVisitor.cs
-	  Mono.Cecil.Implem/TypeDefinition.cs
-	  Mono.Cecil.Signatures/MethodRefSig.cs
-	  Mono.Cecil.Signatures/SignatureReader.cs
-	  Mono.Cecil.Signatures/FieldSig.cs
-	  Mono.Cecil.Signatures/PropertySig.cs
-	  Mono.Cecil.Signatures/ISignatureVisitor.cs
-	  Mono.Cecil.Signatures/SignatureWriter.cs
-	  Mono.Cecil.Signatures/MethodDefSig.cs
-	  Mono.Cecil.Signatures/LocalVarSig.cs
-	  Mono.Cecil.Binary/PEFileHeader.cs
-	  Mono.Cecil.Binary/IBinaryVisitor.cs
-	  Mono.Cecil.Binary/ImageWriter.cs
-	  Mono.Cecil.Binary/CLIHeader.cs
-	  Mono.Cecil.Binary/SectionCollection.cs
-	  Mono.Cecil.Binary/Image.cs
-	  Mono.Cecil.Binary/PEOptionalHeader.cs
-	  Mono.Cecil.Binary/ImageInitializer.cs
-	  Mono.Cecil.Binary/Imports.cs
-	  Mono.Cecil.Binary/BaseImageVisitor.cs
-	  Mono.Cecil.Binary/DOSHeader.cs
-	  Mono.Cecil.Binary/Section.cs
-	  Mono.Cecil.Binary/ImageReader.cs:
-		Apply the new visitor model to the rest of Cecil.
-
-	* Mono.Cecil/IReflectionVisitor.cs
-	  Mono.Cecil/BaseReflectionVisitor.cs
-	  Mono.Cecil/IReflectionStructureVisitor.cs
-	  Mono.Cecil/BaseStructureVisitor.cs
-	  Mono.Cecil.Cil/BaseCodeVisitor.cs
-	  Mono.Cecil.Cil/ICodeVisitor.cs
-	  CodeGen/cecil-gen.rb
-	  CodeGen/cecil-gen-types.rb
-	  CodeGen/templates/IndexedCollectionImplem.cs
-	  CodeGen/templates/NamedCollectionImplem.cs
-	  CodeGen/templates/LzIndexedCollectionImplem.cs
-	  CodeGen/templates/LzNamedCollectionImplem.cs
-	  CodeGen/cecil.xml
-	  Mono.Cecil.Implem/InterfaceCollection.cs
-	  Mono.Cecil.Implem/AssemblyLinkedResource.cs
-	  Mono.Cecil.Implem/ModuleReferenceCollection.cs
-	  Mono.Cecil.Implem/AssemblyName.cs
-	  Mono.Cecil.Implem/Instruction.cs
-	  Mono.Cecil.Implem/ExternTypeCollection.cs
-	  Mono.Cecil.Implem/MarshalDesc.cs
-	  Mono.Cecil.Implem/SecurityDeclarationCollection.cs
-	  Mono.Cecil.Implem/OverrideCollection.cs
-	  Mono.Cecil.Implem/ExceptionHandler.cs
-	  Mono.Cecil.Implem/EmbeddedResource.cs
-	  Mono.Cecil.Implem/ModuleReference.cs
-	  Mono.Cecil.Implem/ParameterDefinitionCollection.cs
-	  Mono.Cecil.Implem/EventDefinitionCollection.cs
-	  Mono.Cecil.Implem/FieldDefinitionCollection.cs
-	  Mono.Cecil.Implem/PropertyDefinitionCollection.cs
-	  Mono.Cecil.Implem/ModuleDefinitionCollection.cs
-	  Mono.Cecil.Implem/CustomAttributeCollection.cs
-	  Mono.Cecil.Implem/VariableDefinitionCollection.cs
-	  Mono.Cecil.Implem/TypeReferenceCollection.cs
-	  Mono.Cecil.Implem/StructureReader.cs
-	  Mono.Cecil.Implem/MethodDefinition.cs
-	  Mono.Cecil.Implem/EventDefinition.cs
-	  Mono.Cecil.Implem/FieldDefinition.cs
-	  Mono.Cecil.Implem/InstructionCollection.cs
-	  Mono.Cecil.Implem/StructureWriter.cs
-	  Mono.Cecil.Implem/ModuleDefinition.cs
-	  Mono.Cecil.Implem/CustomAttribute.cs
-	  Mono.Cecil.Implem/VariableDefinition.cs
-	  Mono.Cecil.Implem/TypeReference.cs
-	  Mono.Cecil.Implem/TypeDefinitionCollection.cs
-	  Mono.Cecil.Implem/AssemblyNameReferenceCollection.cs
-	  Mono.Cecil.Implem/ReflectionReader.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs
-	  Mono.Cecil.Implem/PInvokeInfo.cs
-	  Mono.Cecil.Implem/AssemblyDefinition.cs
-	  Mono.Cecil.Implem/TypeDefinition.cs
-	  Mono.Cecil.Implem/CodeReader.cs
-	  Mono.Cecil.Implem/AggressiveReflectionReader.cs
-	  Mono.Cecil.Implem/MethodDefinitionCollection.cs
-	  Mono.Cecil.Implem/CodeWriter.cs
-	  Mono.Cecil.Implem/SecurityDeclaration.cs
-	  Mono.Cecil.Implem/LazyReflectionReader.cs
-	  Mono.Cecil.Implem/LinkedResource.cs
-	  Mono.Cecil.Implem/ParameterDefinition.cs
-	  Mono.Cecil.Implem/PropertyDefinition.cs
-	  Mono.Cecil.Implem/MethodBody.cs
-	  Mono.Cecil.Implem/NestedTypeCollection.cs
-	  Mono.Cecil.Implem/ResourceCollection.cs
-	  Mono.Cecil.Implem/ExceptionHandlerCollection.cs:
-		BIG changes in the visitor object model. Last one
-		was causing ambiguous calls, and does not provides
-		differences between an interface and a typedef for
-		instance. This is corrected by suffixing the visit
-		method by the name of what it is visiting, and by
-		configuring some collection to stop the propagation
-		of the visitor.
-
-	* Mono.Cecil/ITypeDefinition.cs
-	  Mono.Cecil/IArrayType.cs
-	  CodeGen/templates/Utilities.cs
-	  Mono.Cecil.Metadata/Utilities.cs
-	  Mono.Cecil.Implem/ArrayType.cs
-	  Mono.Cecil.Implem/TypeReference.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs
-	  Mono.Cecil.Implem/TypeDefinition.cs
-	  Mono.Cecil.Implem/CodeWriter.cs
-	  Mono.Cecil.Implem/Constants.cs
-	  Mono.Cecil.Signatures/MarshalSig.cs:
-		Work on the writing layer goes on.
-
-2005-08-14  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/NativeType.cs
-	  Mono.Cecil.Signatures/MarshalSig.cs
-	  Mono.Cecil.Signatures/SignatureWriter.cs
-	  Mono.Cecil.Signatures/Signature.cs:
-		Work on signature writing.
-	  Mono.Cecil.Implem/MethodDefinition.cs
-	  Mono.Cecil.Implem/TypeDefinition.cs:
-		Correct bugs in setting the hasThis field.
-
-	* CodeGen/templates/ImageWriter.cs
-	  Mono.Cecil.Binary/templates/ImageWriter.cs
-	  Mono.Cecil/AssemblyKind.cs:
-		Make assemblies executable on win32.
-	  Mono.Cecil.Implem/TypeDefinition.cs:
-		Mark new fields as loaded.
-	  Mono.Cecil.Implem/ReflectionWriter.cs:
-		Correct the style to patch provided by
-		Sebastien Ros  <s.ros at evaluant.com>
-
-2005-08-13  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/IMethod.cs
-	  Mono.Cecil/ITypeDefinition.cs
-	  Mono.Cecil/IModuleDefinition.cs
-	  Mono.Cecil.Cil/OpCode.cs
-	  Mono.Cecil.Cil/ICilWorker.cs
-	  CodeGen/templates/ImageReader.cs
-	  Mono.Cecil.Metadata/MetadataReader.cs
-	  Mono.Cecil.Metadata/MetadataWriter.cs
-	  Mono.Cecil.Metadata/MetadataRoot.cs
-	  Mono.Cecil.Implem/ReflectionHelper.cs
-	  Mono.Cecil.Implem/CilWorker.cs
-	  Mono.Cecil.Implem/StructureReader.cs
-	  Mono.Cecil.Implem/MethodDefinition.cs
-	  Mono.Cecil.Implem/StructureWriter.cs
-	  Mono.Cecil.Implem/ModuleDefinition.cs
-	  Mono.Cecil.Implem/MethodReference.cs
-	  Mono.Cecil.Implem/ReflectionReader.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs
-	  Mono.Cecil.Implem/TypeDefinition.cs
-	  Mono.Cecil.Implem/CodeReader.cs
-	  Mono.Cecil.Implem/CodeWriter.cs
-	  Mono.Cecil.Implem/Constants.cs
-	  Mono.Cecil.Implem/ParameterDefinition.cs
-	  Mono.Cecil.Implem/MethodBody.cs
-	  Mono.Cecil.Binary/ImageReader.cs
-	  Mono.Cecil.Binary/MemoryBinaryWriter.cs
-	  Mono.Cecil.Signatures/SignatureReader.cs
-	  Mono.Cecil.Signatures/SignatureWriter.cs:
-		On going work on the writing layer.
-
-	* Mono.Cecil.Signatures/SignatureReader.cs:
-		Fix a bug when reading chars inside a custom
-		attribute signature.
-
-2005-08-12  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/AssemblyFactory.cs
-	  CodeGen/templates/ImageWriter.cs
-	  CodeGen/templates/MetadataTableWriter.cs
-	  CodeGen/templates/MetadataRowWriter.cs
-	  Mono.Cecil.Metadata/MetadataTableWriter.cs
-	  Mono.Cecil.Metadata/MetadataRowWriter.cs
-	  Mono.Cecil.Metadata/MetadataWriter.cs
-	  Mono.Cecil.Implem/StructureWriter.cs
-	  Mono.Cecil.Binary/ImageWriter.cs
-	  Mono.Cecil.Binary/MemoryBinaryWriter.cs:
-		Use a custom binary writer instead of the old one.
-
-	* Mono.Cecil/IMethod.cs
-	  Mono.Cecil.Cil/BaseCodeVisitor.cs
-	  Mono.Cecil.Cil/MethodHeader.cs
-	  Mono.Cecil.Cil/ICodeVisitor.cs
-	  Mono.Cecil.Implem/Instruction.cs
-	  Mono.Cecil.Implem/MethodDefinition.cs
-	  Mono.Cecil.Implem/FieldDefinition.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs
-	  Mono.Cecil.Implem/CodeReader.cs
-	  Mono.Cecil.Implem/CodeWriter.cs
-	  Mono.Cecil.Implem/MethodBody.cs:
-		Ongoing work on the writing layer.
-
-	* CodeGen/templates/Utilities.cs
-	  CodeGen/templates/NamedCollectionImplem.cs
-	  CodeGen/templates/MetadataRowWriter.cs
-	  CodeGen/templates/LzNamedCollectionImplem.cs
-	  CodeGen/cecil.xml
-	  Mono.Cecil/IMethod.cs
-	  Mono.Cecil/IAssemblyName.cs
-	  Mono.Cecil/IModuleDefinition.cs
-	  Mono.Cecil/AssemblyFactory.cs
-	  Mono.Cecil.Metadata/MetadataRowWriter.cs
-	  Mono.Cecil.Metadata/Utilities.cs
-	  Mono.Cecil.Implem/ReflectionHelper.cs
-	  Mono.Cecil.Implem/StructureReader.cs
-	  Mono.Cecil.Implem/MethodDefinition.cs
-	  Mono.Cecil.Implem/EventDefinition.cs
-	  Mono.Cecil.Implem/FieldDefinition.cs
-	  Mono.Cecil.Implem/StructureWriter.cs
-	  Mono.Cecil.Implem/ModuleDefinition.cs
-	  Mono.Cecil.Implem/MethodReference.cs
-	  Mono.Cecil.Implem/TypeDefinitionCollection.cs
-	  Mono.Cecil.Implem/ReflectionReader.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs
-	  Mono.Cecil.Implem/TypeDefinition.cs
-	  Mono.Cecil.Implem/AggressiveReflectionReader.cs
-	  Mono.Cecil.Implem/Constants.cs
-	  Mono.Cecil.Implem/ParameterDefinition.cs
-	  Mono.Cecil.Implem/PropertyDefinition.cs
-	  Mono.Cecil.Signatures/SignatureWriter.cs:
-		Ongoing work on the writing layer.
-		Some fixes to the reading layer as well.
-
-2005-08-11  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Signatures/SignatureReader.cs:
-		Read Array signatures correctly.
-
-	* Mono.Cecil/IMethodSignature.cs:
-		Remove the setted for the return type.
-	* Mono.Cecil.Implem/CilWorker.cs:
-		Fix the build. Me idiot!
-	* Mono.Cecil.Implem/Constants.cs:
-		Remove unexisting type Variant.
-	* Mono.Cecil.Implem/ReflectionHelper.cs:
-		Complete the helper.
-
-2005-08-10  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Cil/IMethodBody.cs
-	  Mono.Cecil.Cil/ICilEmitter.cs
-	  Mono.Cecil.Cil/ICilWorker.cs
-	  Mono.Cecil.Implem/CilWorker.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs
-	  Mono.Cecil.Implem/MethodBody.cs
-	  Mono.Cecil.Implem/CilEmitter.cs
-	  Mono.Cecil.Signatures/SignatureReader.cs
-	  Mono.Cecil.Signatures/SignatureWriter.cs:
-		Prepare the api for the cil emitting.
-
-	* CodeGen/templates/Utilities.cs
-	  CodeGen/templates/MetadataRowReader.cs
-	  CodeGen/templates/MetadataRowWriter.cs
-	  Mono.Cecil.Metadata/Utilities.cs
-	  Mono.Cecil.Metadata/MetadataRowReader.cs
-	  Mono.Cecil.Metadata/MetadataRowWriter.cs:
-		Fix the build on .net, i was using a sugar
-		syntax for delegates that csc does not understand.
-		Remove the coded index cache from the static class
-		Utilities, and add one per row visitor.
-
-	* Mono.Cecil/IMethodReturnType.cs
-	  Mono.Cecil.Implem/MethodReturnType.cs
-	  Mono.Cecil.Implem/ReflectionReader.cs
-	  Mono.Cecil.Implem/ParameterDefinition.cs:
-		Make IMethodReturn type inherits IHasMarshalSpec so
-		that users can read marshaling info for return types,
-		and implement it.
-
-	* CodeGen/templates/ImageWriter.cs
-	  Mono.Cecil.Binary/ImageWriter.cs
-	  Mono.Cecil.Metadata/MetadataWriter.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs:
-		Cecil now emits assemblies understood by the .net clr.
-
-2005-08-09  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/AssemblyKind.cs
-	  CodeGen/templates/ImageWriter.cs
-	  CodeGen/templates/ImageReader.cs
-	  Mono.Cecil.Metadata/MetadataWriter.cs
-	  Mono.Cecil.Binary/ImageWriter.cs
-	  Mono.Cecil.Binary/ImageInitializer.cs
-	  Mono.Cecil.Binary/ImageReader.cs:
-		Lots of little fixes. Now dumpbin is coherent
-		compared with an assembly emitted with csc or mcs
-		but still not yet compatible with .net.
-
-	* Mono.Cecil.Signatures/SignatureReader.cs:
-		Fix an array out of range while trying to read
-		fixed arrays signatures
-
-	* CodeGen/templates/ImageWriter.cs
-	  Mono.Cecil.Metadata/MetadataReader.cs
-	  Mono.Cecil.Metadata/MetadataWriter.cs
-	  Mono.Cecil.Implem/AssemblyName.cs
-	  Mono.Cecil.Implem/StructureReader.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs
-	  Mono.Cecil.Binary/ImageCharacteristics.cs
-	  Mono.Cecil.Binary/ImageWriter.cs
-	  Mono.Cecil.Binary/Image.cs:
-		Cecil now emits assemblies that are understood
-		by Mono and Cecil itself. Still have troubles
-		with Msft CLR.
-
-2005-08-08  Jb Evain  <jbevain at gmail.com>
-
-	* CodeGen/cecil-gen.rb
-	  CodeGen/templates/MetadataTableReader.cs
-	  CodeGen/templates/ImageWriter.cs
-	  CodeGen/templates/MetadataTableWriter.cs
-	  CodeGen/templates/BaseMetadataVisitor.cs
-	  CodeGen/templates/MetadataRowReader.cs
-	  CodeGen/templates/MetadataRowWriter.cs
-	  CodeGen/cecil.xml
-	  Mono.Cecil.Metadata/MetadataInitializer.cs
-	  Mono.Cecil.Metadata/BaseMetadataVisitor.cs
-	  Mono.Cecil.Metadata/MetadataTableReader.cs
-	  Mono.Cecil.Metadata/MetadataTableWriter.cs
-	  Mono.Cecil.Metadata/MetadataRowReader.cs
-	  Mono.Cecil.Metadata/MetadataRowWriter.cs
-	  Mono.Cecil.Metadata/MetadataWriter.cs
-	  Mono.Cecil.Binary/ImageWriter.cs
-	  Mono.Cecil.Binary/CLIHeader.cs
-	  Mono.Cecil.Binary/ImageInitializer.cs:
-		The writing layer almost works.
-
-	* Mono.Cecil/AssemblyKind.cs
-	  Mono.Cecil/TargetRuntime.cs
-	  Mono.Cecil.dll.sources:
-		Add thoses enumes to control assembly writing.
-	* Mono.Cecil/AssemblyFactory.cs
-	  Mono.Cecil/IReflectionVisitor.cs
-	  Mono.Cecil/BaseReflectionVisitor.cs
-	  Mono.Cecil/IAssemblyDefinition.cs
-	  Mono.Cecil/IReflectionStructureVisitor.cs
-	  Mono.Cecil/BaseStructureVisitor.cs
-	  CodeGen/templates/ImageWriter.cs
-	  CodeGen/templates/MetadataTableWriter.cs
-	  CodeGen/templates/MetadataRowWriter.cs
-	  CodeGen/templates/LzNamedCollectionImplem.cs
-	  Mono.Cecil.Metadata/MetadataInitializer.cs
-	  Mono.Cecil.Metadata/MetadataTableWriter.cs
-	  Mono.Cecil.Metadata/MetadataRowWriter.cs
-	  Mono.Cecil.Metadata/MetadataWriter.cs
-	  Mono.Cecil.Metadata/MetadataStreamCollection.cs
-	  Mono.Cecil.Implem/AssemblyName.cs
-	  Mono.Cecil.Implem/StructureWriter.cs
-	  Mono.Cecil.Implem/ModuleDefinition.cs
-	  Mono.Cecil.Implem/TypeDefinitionCollection.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs
-	  Mono.Cecil.Implem/AssemblyDefinition.cs
-	  Mono.Cecil.Binary/ImageWriter.cs
-	  Mono.Cecil.Binary/ImageInitializer.cs
-	  Mono.Cecil.Binary/Imports.cs:
-		Things are now plugged. SaveAssembly will now emits
-		a binary file. A broken file, but heh, at least it does.
-
-2005-08-07  Jb Evain  <jbevain at gmail.com>
-
-	* CodeGen/templates/ImageReader.cs
-	  CodeGen/templates/ImageWriter.cs
-	  CodeGen/templates/IMetadataVisitor.cs
-	  Mono.Cecil.Binary/ImageReader.cs
-	  Mono.Cecil.Binary/ImageWriter.cs
-	  Mono.Cecil.Metadata/IMetadataVisitor.cs
-	  Mono.Cecil.Metadata/BaseMetadataVisitor.cs
-	  Mono.Cecil.Metadata/MetadataReader.cs
-	  Mono.Cecil.Metadata/MetadataWriter.cs
-	  Mono.Cecil.Metadata/MetadataStreamCollection.cs:
-		Simplify IMetadataVisitor.
-		Work on the writing layer, closer to have something testable
-		than ever.
-
-	* CodeGen/cecil.xml
-	  CodeGen/templates/ImageWriter.cs
-	  Mono.Cecil.Metadata/MetadataWriter.cs
-	  Mono.Cecil.Binary/PEOptionalHeader.cs
-	  Mono.Cecil.Binary/ImageWriter.cs
-	  Mono.Cecil.Binary/Imports.cs:
-		don't stop don't stop come ON!
-
-	* CodeGen/templates/ImageWriter.cs
-	  CodeGen/templates/ImageReader.cs
-	  CodeGen/templates/Section.cs
-	  Mono.Cecil.Binary/Image.cs
-	  Mono.Cecil.Binary/ImageReader.cs
-	  Mono.Cecil.Binary/ImageInitializer.cs
-	  Mono.Cecil.Binary/ImageWriter.cs
-	  Mono.Cecil.Binary/Section.cs
-	  Mono.Cecil.Metadata/MetadataReader.cs
-	  Mono.Cecil.Metadata/MetadataWriter.cs
-	  Mono.Cecil.Implem/StructureReader.cs
-	  Mono.Cecil.Implem/StructureWriter.cs
-	  Mono.Cecil.Implem/CodeWriter.cs:
-		Some writing layer love.
-
-	* CodeGen/templates/ImageWriter.cs
-	  CodeGen/templates/ImageReader.cs
-	  Mono.Cecil.Binary/Imports.cs
-	  Mono.Cecil.Binary/ImageReader.cs
-	  Mono.Cecil.Binary/ImageInitializer.cs
-	  Mono.Cecil.Binary/ImageWriter.cs:
-		Read an write correctly the Hint/Name table
-		at the end of the .text section.
-
-	* CodeGen/templates/ImageWriter.cs
-	  Mono.Cecil.Metadata/MetadataWriter.cs
-	  Mono.Cecil.Binary/ImageWriter.cs
-	  Mono.Cecil.Binary/ImageInitializer.cs:
-		More writing layer stuff.
-
-2005-08-06  Jb Evain  <jbevain at gmail.com>
-
-	* CodeGen/templates/ImageWriter.cs
-	  CodeGen/templates/MetadataTableWriter.cs
-	  Mono.Cecil.Metadata/MetadataInitializer.cs
-	  Mono.Cecil.Metadata/MetadataTableWriter.cs
-	  Mono.Cecil.Metadata/StringsHeap.cs
-	  Mono.Cecil.Metadata/BlobHeap.cs
-	  Mono.Cecil.Metadata/MetadataWriter.cs
-	  Mono.Cecil.Metadata/UserStringsHeap.cs
-	  Mono.Cecil.Metadata/TableCollection.cs
-	  Mono.Cecil.Metadata/TablesHeap.cs
-	  Mono.Cecil.Metadata/MetadataHeap.cs
-	  Mono.Cecil.Metadata/GuidHeap.cs
-	  Mono.Cecil.Metadata/MetadataStream.cs
-	  Mono.Cecil.Implem/StructureWriter.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs
-	  Mono.Cecil.Implem/CodeWriter.cs
-	  Mono.Cecil.Binary/ImageWriter.cs
-	  Mono.Cecil.Binary/ImageInitializer.cs:
-		Playing lego with bricks from the writing layer.
-
-	* Mono.Cecil.dll.sources:
-		Updated.
-	* CodeGen/templates/CLIHeader.cs
-	  CodeGen/templates/PEOptionalHeader.cs
-		Blah.
-	* CodeGen/cecil.xml
-	  Mono.Cecil.Binary/CLIHeader.cs
-	  Mono.Cecil.Binary/PEOptionalHeader.cs:
-	  Mono.Cecil.Binary/PEFileHeader.cs
-		On going work on the writing layer
-
-	* CodeGen/templates/ImageWriter.cs
-	  CodeGen/templates/ImageReader.cs
-	  Mono.Cecil.Binary/BaseImageVisitor.cs
-	  Mono.Cecil.Binary/ImageReader.cs
-	  Mono.Cecil.Binary/ImageInitializer.cs
-	  Mono.Cecil.Binary/ImageWriter.cs
-	  Mono.Cecil.Metadata/BaseMetadataVisitor.cs
-	  Mono.Cecil.Metadata/MetadataReader.cs
-	  Mono.Cecil.Metadata/MetadataInitializer.cs
-	  Mono.Cecil.Metadata/MetadataWriter.cs
-	  Mono.Cecil.Metadata/MetadataStream.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs
-	  Mono.Cecil.Implem/CodeWriter.cs:
-		Add helpers visitor.
-		On going work on the writing layer.
-
-	* CodeGen/templates/Utilities.cs
-	  CodeGen/templates/MetadataRowReader.cs
-	  CodeGen/templates/MetadataRowWriter.cs
-	  Mono.Cecil.Metadata/StringsHeap.cs
-	  Mono.Cecil.Metadata/MetadataRowReader.cs
-	  Mono.Cecil.Metadata/MetadataRowWriter.cs
-	  Mono.Cecil.Metadata/MetadataReader.cs
-	  Mono.Cecil.Metadata/Utilities.cs
-	  Mono.Cecil.Metadata/BlobHeap.cs
-	  Mono.Cecil.Metadata/MetadataWriter.cs
-	  Mono.Cecil.Metadata/MetadataHeap.cd
-	  Mono.Cecil.Metadata/GuidHeap.cs:
-		On going work on the writing layer.
-
-	* CodeGen/templates/MetadataTableWriter.cs
-	  Mono.Cecil.Metadata/MetadataTableWriter.cs
-	  Mono.Cecil.Metadata/MetadataWriter.cs:
-		On going work on the writing layer.
-	* Mono.Cecil.Implem/StructureWriter.cs:
-		Correctly override methods
-	* CodeGen/templates/MetadataRowWriter.cs
-	  Mono.Cecil.Metadata/MetadataRowWriter.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs:
-		Fix build warnings.
-
-	* Mono.Cecil/IResource.cs
-	  Mono.Cecil.Implem/AssemblyLinkedResource.cs
-	  Mono.Cecil.Implem/EmbeddedResource.cs
-	  Mono.Cecil.Implem/LinkedResource.cs
-	  Mono.Cecil.Implem/Resource.cs:
-		Rename field Attributes to Flags for the sake of consistency.
-	* Mono.Cecil.Metadata/MetadataWriter.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs
-	  Mono.Cecil.Implem/StructureWriter.cs:
-		On going work on the writing layer.
-	* Mono.Cecil.Implem/StructureReader.cs:
-		Style.
-
-	* Mono.Cecil/IAssemblyName.cs
-	  Mono.Cecil.Implem/AssemblyName.cs
-	  Mono.Cecil.Implem/StructureReader.cs:
-		Add an AssemblyFlag property to an IAssemblyNameReference,
-		implement it, and read it.
-
-2005-08-04  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Implem/ReflectionReader.cs:
-		set a correct name to nameless parameters
-
-	* Mono.Cecil.Signatures/SignatureReader.cs:
-		don't crash on null custom attributes
-
-2005-08-03  Jb Evain  <jbevain at gmail.com>
-
-	* CodeGen/templates/OpCodes.cs
-	  Mono.Cecil.Cil/OpCodes.cs
-	  Mono.Cecil.Cil/OpCode.cs:
-		Revert modifications to reduce code. OpCodes::.ctors were
-		not called.
-
-	* Mono.Cecil.Implem/ReflectionReader.cs:
-		Make sure parameters are read even if there is no
-		corresponding Param row. Thanks Cesar for the hint.
-
-	* Mono.Cecil.Metadata/MetadataWriter.cs
-	  Mono.Cecil.Metadata/UserStringsHeap.cs
-	  Mono.Cecil.Metadata/GuidHeap.cs
-	  Mono.Cecil.Implem/CodeReader.cs:
-		On going work on the writing layer
-
-	* CodeGen/cecil-gen.rb
-	  CodeGen/cecil-gen-sources.rb
-		make executable
-	* *.*: set svn:eol-style to native
-
-	* Mono.Cecil/BaseStructureVisitor.cs
-	  Mono.Cecil/BaseReflectionVisitor.cs
-	  Mono.Cecil.Implem/BaseReflectionReader.cs:
-		Add empty visitors for the sake of simplicity
-	* Mono.Cecil.Implem/StructureReader.cs
-	  Mono.Cecil.Implem/ReflectionReader.cs:
-		Inherit new visitors
-
-2005-08-03  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Implem/ReflectionReader.cs
-	  Mono.Cecil.Implem/AggressiveReflectionReader.cs
-	  Mono.Cecil.Implem/LazyReflectionReader.cs
-	  Mono.Cecil.Implem/CodeReader.cs:
-		Modify and add helpers to avoid lots of casts.
-		Correct a bug in custom attributes attribution.
-
-2005-08-02  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Signatures/TypeSpec.cs:
-		Don't restrain the SigType
-	* Mono.Cecil.Implem/AggressiveReflectionReader.cs:
-		Set PInvokeInfos on the correct method
-
-2005-07-30  Jb Evain  <jbevain at gmail.com>
-
-	* CodeGen/cecil-gen.rb
-	  CodeGen/cecil-gen-sources.rb:
-		make them executable
-	* CodeGen/cecil-gen-types: style
-	* CodeGen/templates/ImageWriter.cs
-	  Mono.Cecil.Binary/ImageWriter.cs:
-		Prelimimary work on assembly writing
-
-2005-07-29  Jb Evain  <jbevain at gmail.com>
-
-	* CodeGen/cecil-gen-types.rb
-	  CodeGen/templates/MetadataTableWriter.cs
-	  CodeGen/templates/MetadataRowWriter.cs
-	  Mono.Cecil/AssemblyFactory.cs
-	  Mono.Cecil.Metadata/MetadataTableWriter.cs
-	  Mono.Cecil.Metadata/MetadataRowWriter.cs
-	  Mono.Cecil.Implem/StructureWriter.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs:
-		Preliminary work on assembly writing
-
-2005-07-28  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/AssemblyFactory.cs
-	  Mono.Cecil.Implem/StructureWriter.cs
-		Preliminary work on assembly writing
-
-	* Mono.Cecil/IMetadataTokenProvider.cs
-	  Mono.Cecil/IMember.cs
-	  Mono.Cecil/IParameter.cs:
-		Add a MetadataToken property on searchable items
-	* Mono.Cecil.Metadata/MetadataToken.cs:
-		Add a factory method to create token from row number
-	* Mono.Cecil.Implem/TypeReference.cs
-	  Mono.Cecil.Implem/MemberReference.cs
-	  Mono.Cecil.Implem/ParameterDefinition.cs:
-		Implement the token property
-	* Mono.Cecil.Implem/ReflectionReader.cs
-	  Mono.Cecil.Implem/AggressiveReflectionReader.cs
-	  Mono.Cecil.Implem/LazyReflectionReader.cs:
-		Set the token property on reading
-	* Mono.Cecil/IModuleDefinition.cs
-	  Mono.Cecil.Implem/ModuleDefinition.cs
-	  Mono.Cecil.Implem/ReflectionReader.cs:
-		Add methods to lookup items from their tokens
-
-2005-07-27  Jb Evain  <jbevain at gmail.com>
-
-	* CodeGen/templates/OpCodes.cs
-	  Mono.Cecil.Cil/OpCodes.cs
-	  Mono.Cecil.Cil/OpCode.cs:
-		Changes to reduce the size of the cache ctor
-
-2005-07-22  Raja R Harinath  <rharinath at novell.com>
-
-	* Makefile (MCS): Allow compiler to be overriden.
-
-2005-07-21  Todd Berman  <tberman at off.net>
-
-	* configure: Add a small stub configure (stolen from mcs) to set the
-	prefix.
-	* mono-cecil.pc.in: Add a mono-cecil.pc.in to allow for installation
-	according to the new "Libraries with Unstable API" Wiki documentation.
-	* Makefile: Add an install an a mono-cecil.pc target to allow for
-	installation and creation of the pc file.
-
-2005-07-14  Jb Evain  <jbevain at gmail.com>
-
-	* CodeGen/templates/ImageReader.cs
-	  Mono.Cecil.Binary/IBinaryVisitor.cs
-	  Mono.Cecil.Binary/Image.cs
-	  Mono.Cecil.Binary/ImageInitializer.cs
-	  Mono.Cecil.Binary/Imports.cs
-	  Mono.Cecil.Binary/ImageReader.cs:
-		Read Imports Tables
-
-2005-07-14  Jb Evain  <jbevain at gmail.com>
-
-	* CodeGen/cecil-gen.rb:
-		make codegen works on ruby 1.8.2
-	* CodeGen/templates/*.cs
-	  Mono.Cecil.Metadata/*.cs:
-	  	style
-
-2005-07-13  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Implem/VariableDefinition.cs:
-		set the index field
-
-2005-07-13  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.dll.sources: regenerated
-	* Mono.Cecil.Signatures/SignatureReader.cs:
-		Fix compilation warnings
-	* Mono.Cecil/IArrayType.cs
-	  Mono.Cecil.Implem/ArrayType.cs:
-	  	Add Rank helper property
-	* Mono.Cecil/ITypeDefinition.cs
-	  Mono.Cecil.Implem/TypeDefinition.cs:
-	  	Add Constructors helper property
-
-2005-07-11  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/IMethod.cs
-	  Mono.Cecil.Implem/Instruction.cs
-	  Mono.Cecil.Implem/ExceptionHandler.cs
-	  Mono.Cecil.Implem/MethodDefinition.cs
-	  Mono.Cecil.Implem/Label.cs
-	  Mono.Cecil.Implem/CodeReader.cs
-	  Mono.Cecil.Implem/MethodBody.cs
-	  Mono.Cecil.Implem/CilEmitter.cs
-	  Mono.Cecil.Cil/ILabel.cs
-	  Mono.Cecil.Cil/IInstruction.cs
-	  Mono.Cecil.Cil/IExceptionHandler.cs
-	  Mono.Cecil.Cil/IMethodBody.cs
-	  Mono.Cecil.Cil/ICilEmitter.cs:
-		Preliminary changes on the instruction model before
-		changing of latptop
-
-2005-07-08  Jb Evain  <jbevain at gmail.com>
-
-   * Every generated files: use \n instead of \r\n
-
-2005-07-07  Jb Evain  <jbevain at gmail.com>
-
-	* *.*: use Mono coding conventions
-	* Mono.Xml/*.*: update Mono.Xml from corlib
-	* Mono.Cecil.Metadata/CultureUtils.cs:
-		Ensure that Cecil works under Mono
-
-2005-07-02  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/IMethod.cs
-	  Mono.Cecil/IProperty.cs
-	  Mono.Cecil/IEvent.cs
-	  Mono.Cecil/IField.cs
-	  Mono.Cecil/ITypeDefinition.cs
-	  Mono.Cecil.Implem/MethodDefinition.cs
-	  Mono.Cecil.Implem/PropertyDefinition.cs
-	  Mono.Cecil.Implem/EventDefinition.cs
-	  Mono.Cecil.Implem/FieldDefinition.cs
-	  Mono.Cecil.Implem/TypeDefinition.cs:
-		Add some funky sugar attributes,
-		more to come
-
-2005-07-01  Jb Evain  <jbevain at gmail.com>
-
-	* CodeGen/cecil-gen.rb,
-	  CodeGen/templates/MetadataTableWriter.cs,
-	  CodeGen/templates/MetadataRowWriter.cs,
-	  Mono.Cecil.Metadata/MetadataTableWriter.cs,
-	  Mono.Cecil.Metadata/MetadataRowWriter.cs,
-	  Mono.Cecil.Metadata/MetadataWriter.cs:
-		Add metadata writing visitors
-	* Mono.Cecil.Metadata/CultureUtils.cs:
-		Be sure to use every possible culture infos.
-	* Mono.Cecil.Cil/IVariable.cs,
-	  Mono.Cecil.Implem/VariableDefinition.cs,
-	  Mono.Cecil.Implem/CodeReader.cs,
-	  Mono.Cecil.Implem/CilEmitter.cs:
-		Add an index property to local variables
-	* Mono.Cecil.Metadata/MetadataReader.cs,
-	  Mono.Cecil.Metadata/MetadataRowReader.cs,
-	  CodeGen/templates/MetadataRowReader.cs,
-	  Mono.Cecil.Metadata/TablesHeap.cs:
-		Handles null heaps
-	* Mono.Cecil.Implem/StructureWriter.cs,
-	  Mono.Cecil.Implem/ReflectionController.cs,
-	  Mono.Cecil.Implem/ReflectionWriter.cs:
-		Assemble writing classes
-
-2005-06-28  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Implem/ReflectionReader.cs: style
-	* Mono.Cecil.Implem/LazyReflectionReader.cs:
-		read the last property as well.
-
-2005-06-21  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Implem/ReflectionReader.cs: Correct a bug that prevents
-		assemblies to be readed if they have an entrypoint. Suggestion by
-		Mario Sopena
-	* Mono.Cecil.Implem/CodeReader.cs: Use sbyte not to lose negatives
-		offsets. Suggestion by Vladislav Spivak
-	* CodeGen/cecil.xml,
-	  Mono.Cecil.Cil/OpCodes.cs,
-	  Mono.Cecil.Cil/StackBehaviour.cs: Add an PopAll enumeration value
-		for StackBehaviour, and set the StackBehaviourPop property for
-		leave and leave.s opcodes to it. Suggested by Vladislav Spivak
-
-2005-06-12  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Implem/TypeDefinition.cs: Set the declaring type
-		to this when defining a nested type.
-
-2005-06-07  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.dll.sources,
-	* CodeGen/cecil.xml,
-	* Mono.Cecil/IReflectionVisitor.cs,
-	* Mono.Cecil/INestedTypeCollection.cs,
-	* Mono.Cecil/ITypeDefinition,
-	* Mono.Cecil.Implem/ReflectionReader.cs,
-	* Mono.Cecil.Implem/ReflectionWriter.cs,
-	* Mono.Cecil.Implem/TypeDefinition.cs,
-	* Mono.Cecil.Implem/NestedTypeCollection:
-		Add a collection of nested types for type definition
-
-	* Mono.Cecil.Implem/ModuleDefinition.cs: simplify type creation
-
-2005-06-07  Jb Evain  <jbevain at gmail.com>
-
-	* ChangeLog: Cecil has now ChangeLogs. Let use them.
diff --git a/mcs/class/Mono.Cecil/ChangeLog.old b/mcs/class/Mono.Cecil/ChangeLog.old
deleted file mode 100644
index 140b0ea..0000000
--- a/mcs/class/Mono.Cecil/ChangeLog.old
+++ /dev/null
@@ -1,4474 +0,0 @@
-2010-04-23  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ReflectionWriter.cs: fix writing of exported types.
-
-2010-04-19  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* Mono.Cecil/ReflectionWriter.cs: Partial (forwarders) fix for
-	writing ExternTypes (needed for tuning ML4 correctly)
-
-2010-04-11  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/GenericParameter.cs: override Module properly.
-
-2010-03-29  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/AssemblyStripper.cs: optimize.
-
-2010-02-13  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ReflectionReader.cs: don't cache everything
-	that is context dependent.
-	Based on a patch by Frank Laub  <frank.laub at gmail.com>
-
-2010-02-13  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/MethodReturnType.cs: avoid creating an
-	inner parameter if not necessary.
-
-2010-02-13  Jb Evain  <jbevain at novell.com>
-
-	* TypeAttributes.cs: add Forwarder flag.
-
-2010-02-12  Jb Evain  <jbevain at novell.com>
-
-	* AssemblyStripper.cs: properly set the rva of methods with
-	no body.
-
-2010-01-06	Rodrigo B. de Oliveira <rodrigo at unity.com>
-
-	* Mono.Cecil.csproj
-	  Mono.Cecil/NameObjectCollectionBase.cs
-	  Mono.Cecil/BaseAssemblyResolver.cs
-	  Mono.Cecil/DefaultAssemblyResolver.cs:
-	  	support for compiling Mono.Cecil without
-	  	any references to System.dll using the newly introduced
-	  	"Debug - No System.dll" configuration in Mono.Cecil.csproj;
-
-2009-12-14  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* Mono.Cecil/BaseAssemblyResolver.cs: Update to .net fx 4 beta2
-	version number and reduce code duplication.
-
-2009-10-25  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/BaseAssemblyResolver.cs
-	  Mono.Cecil/StructureReader.cs
-	  Mono.Cecil.Metadata/MetadataWriter.cs:
-		update .net 4.0 version to beta 2.
-
-2009-08-18  Michael Hutchinson  <mhutchinson at novell.com>
-
-	* Mono.Cecil/BaseAssemblyResolver.cs: Search GACs specified in the
-	  MONO_GAC_PREFIX environment variable.
-
-2009-08-06  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/BaseAssemblyResolver.cs:
-	Do not crash when the GAC folder can't be found.
-
-2009-07-28  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/AssemblyStripper.cs: Make all methods share
-	the same body.
-
-2009-07-16  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/AssemblyFactory.cs
-	* Mono.Cecil.Metadata/MetadataWriter.cs
-	* Mono.Cecil.Binary/ImageWriter.cs:
-		Support for properly writing 4.0 dlls.
-		Patch by Carlo Kok  <ck at remobjects.com>.
-
-2009-06-05  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/BaseAssemblyResolver.cs: properly look for the 4.0 corlib
-	when running on Mono.
-
-2009-06-03  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/MetadataResolver.cs: add support for resolving from
-	a ModuleReference.
-
-2009-06-03  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/BaseAssemblyResolver.cs: look for 4.0.0.0 assemblies.
-
-2009-05-21  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ReflectionReader.cs: add support for type forwarders.
-
-2009-05-19  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/TargetRuntime.cs
-	* Mono.Cecil/StructureReader.cs
-	* Mono.Cecil.Metadata/MetadataWriter.cs:
-		add support for .net 4.0 detection.
-
-2009-04-30  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Signatures/SignatureReader.cs: fix reading out extra mods.
-
-2009-04-21  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Cil/SymbolStoreHelper.cs: look for the assembly in the GAC
-	as well if it's not local.
-
-2009-04-03  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Metadata/BlobHeap.cs
-	* Mono.Cecil.Metadata/MetadataWriter.cs:
-		do a better job at emitting a blob heap.
-
-2009-04-01  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ModuleDefinition.cs (Import): add overloads
-	taking a MethodDefinition as a generic context.
-
-2009-04-01  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ReflectionHelper.cs: throw proper exception
-	when importing in an invalid context.
-
-2009-03-12  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/AssemblyStripper.cs (PatchHeap): don't crash
-	if the assembly doesn't contain a specific metadata heap.
-
-2009-03-04  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/StructureWriter.cs: properly set the metadata tokens
-	of newly emitted modules and assemblies. Fix #480729.
-
-2009-01-28  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/MetadataResolver.cs:
-		Add new MetadataResolver.
-
-	* Mono.Cecil/GenericParameter.cs
-	  Mono.Cecil/FieldDefinition.cs
-	  Mono.Cecil/TypeReference.cs
-	  Mono.Cecil/GenericInstanceMethod.cs
-	  Mono.Cecil/IMemberDefinition.cs
-	  Mono.Cecil/TypeDefinition.cs
-	  Mono.Cecil/PropertyReference.cs
-	  Mono.Cecil/EventReference.cs
-	  Mono.Cecil/MethodDefinition.cs
-	  Mono.Cecil/EventDefinition.cs
-	  Mono.Cecil/ModuleDefinition.cs
-	  Mono.Cecil/MethodReference.cs
-	  Mono.Cecil/FieldReference.cs
-	  Mono.Cecil/ParameterDefinition.cs
-	  Mono.Cecil/PropertyDefinition.cs
-	  Mono.Cecil/ParameterReference.cs
-	  Mono.Cecil.Cil/VariableReference.cs
-	  Mono.Cecil.Cil/VariableDefinition.cs:
-		Add Resolve to Definition methods on References.
-
-	* Mono.Cecil.dll.sources, Mono.Cecil.csproj: add MetadataResolver.cs
-
-2009-01-05  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ReflectionHelper.cs
-	* Mono.Cecil/DefaultImporter.cs:
-		Adjust references's generic parameter count on import.
-
-2009-01-05  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* CodeReader.cs: Do not call VisitVariableDefinitionCollection
-	unless LocalVarToken is different from zero.
-	* CodeWriter.cs: Use HasVariables and HasExceptionHandlers.
-	Write zero, not TokenType.Signature, for LocalVarToken if no
-	variable is defined. That should fix the problem with unsign
-	* Mono.Cecil.Cil/MethodBody.cs: Add HasExceptionHandlers,
-	HasVariables and HasScopes to avoid creating empty collections
-	inside Cecil. There is no HasInstruction because there's always
-	something if MethodDefinition.HasBody is true (i.e. a MethodBody
-	exists). [re-apply r1222198]
-
-2008-12-29  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* Mono.Cecil/MethodReturnType.cs: Override ToString so we can, by
-	default, display something useful about the return type.
-
-2008-12-29  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* Mono.Cecil/GenericInstanceMethod.cs,
-	* Mono.Cecil/GenericInstanceType.cs,
-	* Mono.Cecil/IGenericInstance.cs: Introduce HasGenericArguments into
-	the interface and implement it inside GenericInstance[Method|Type]
-
-2008-12-16  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Signatures/SignatureReader.cs: fix reading of wrong
-	modifiers.
-
-2008-12-01  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* Mono.Cecil.Signatures/CustomAttrib.cs: Define reusable Empty
-	arrays for both FixedArg and NamedArg.
-	* Mono.Cecil.Signatures/SignatureReader.cs: Avoid creating empty
-	ParameterDefinitionCollection on constructors. Use the new Empty
-	arrays when possible.
-
-2008-12-01  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* Mono.Cecil/MethodReference.cs: Make HasParameters virtual
-	* Mono.Cecil/MethodSpecification.cs: Override HasParameters to make
-	sure we're tracking the same object as the Parameters property does.
-	* Mono.Cecil/PropertyDefinition.cs: Implement HasParameters based on
-	the GetMethod, SetMethod or its own parameter collection.
-	* Mono.Cecil/PropertyReference.cs: Add abstract HasParameters property
-
-2008-11-27  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ExternTypeCollection.cs: don't attach types as they
-	are already attached to the current module.
-
-2008-11-22  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* Mono.Cecil/GenericParameter.cs,
-	* Mono.Cecil/ICustomAttributeProvider.cs,
-	* Mono.Cecil/CallSite.cs,
-	* Mono.Cecil/IMethodSignature.cs,
-	* Mono.Cecil/FunctionPointerType.cs,
-	* Mono.Cecil/FieldDefinition.cs,
-	* Mono.Cecil/TypeReference.cs,
-	* Mono.Cecil/GenericInstanceMethod.cs,
-	* Mono.Cecil/IHasSecurity.cs,
-	* Mono.Cecil/MethodReturnType.cs,
-	* Mono.Cecil/AssemblyDefinition.cs,
-	* Mono.Cecil/TypeDefinition.cs,
-	* Mono.Cecil/MethodDefinition.cs,
-	* Mono.Cecil/EventDefinition.cs,
-	* Mono.Cecil/ModuleDefinition.cs,
-	* Mono.Cecil/MethodReference.cs,
-	* Mono.Cecil/ReflectionWriter.cs,
-	* Mono.Cecil/ParameterDefinition.cs,
-	* Mono.Cecil/PropertyDefinition.cs,
-	* Mono.Cecil/IGenericParameterProvider.cs:
-		Add boolean Has{x} properties so Cecil consumers are able
-		to avoid the lazy allocations that would be made for an
-		empty {x}. Use the Has{x} properties inside Cecil (some
-		cases might be missing).
-
-2008-11-16  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* Mono.Cecil/TypeDefinition.cs (IsValueType): Inline the call to
-	IsEnum and remove the double null check being done.
-
-2008-11-14  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ParameterAttributes.cs: add Retval and Lcid.
-	* Mono.Cecil/ParameterDefinition.cs: add Is* property accordingly.
-
-2008-11-12  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Signatures/SignatureReader.cs: properly construct
-	TypeReferences when reading them from custom attributes data.
-
-2008-11-11  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ReflectionReader.cs (AddTypeRef):
-	protect against invalid token.
-
-2008-11-11  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Cil/CodeWriter.cs: fix writing of catch handlers
-	of a generic exception type.
-
-2008-11-06  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Metadata/MetadataWriter.cs: properly clean
-	the runtime image in case we're unsigning an assembly.
-
-2008-11-01  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Binary/RuntimeImage.cs: add [Flags] attribute.
-	Fixes #440574.
-
-2008-10-27  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/AssemblyInfo.cs: bump version.
-
-2008-10-27  Zoltan Varga  <vargaz at gmail.com>
-
-	* Mono.Cecil/AssemblyStripper.cs: Strip locals info too.
-
-2008-10-17  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ReflectionWriter.cs: remove dead code.
-	* Mono.Cecil.Cil/ISymbolWriter.cs: simplify Write method.
-
-2008-10-17	Rodrigo B. de Oliveira <rodrigobamboo at gmail.com>
-
-	* Mono.Cecil.Cil/CodeWriter.cs
-	* Mono.Cecil.Cil/MethodBody.cs:
-		mcs-cecil-local-var-1.diff patch enabling better handling of local
-		variable debugging information applied.
-		Patch by Juerg Billeter <j at bitron.ch>
-
-2008-10-17	Rodrigo B. de Oliveira <rodrigobamboo at gmail.com>
-
-	* Mono.Cecil/ConstructorCollection.cs
-	* Mono.Cecil.Binary/ImageReader.cs:
-		Compact Framework compilation fixes.
-
-2008-10-14  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/SecurityDeclarationReader.cs: protect against
-	wrongly formatted security attributes.
-
-2008-10-12  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* Mono.Cecil.Cil/SymbolStoreHelper.cs: Change two "static readonly"
-	fields into const.
-	[Found using Gendarme PreferLiteralOverInitOnlyFieldsRule]
-
-2008-10-11  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* Mono.Cecil/ConstructorCollection.cs: Fix a NRE if a null parameter
-	is provided to one of the GetConstructor overloads.
-
-2008-10-07  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ReflectionReader.cs: don't cache generic typespecs,
-	as some compiler reuse generic instance signatures with different
-	generic contexts.
-
-2008-10-01  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.dll.sources
-	* Mono.Cecil.csproj
-	* Mono.Cecil/AssemblyStripper.cs
-	* Mono.Cecil.Cil/CodeWriter.cs
-	* Mono.Cecil.Metadata/MetadataWriter.cs: add a new AssemblyStripper
-	class to be used by a tool to empty method bodies for assemblies
-	that have been AOTed.
-
-2008-09-29  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/GenericParameter.cs: override TypeReference.Scope.
-
-2008-09-25  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Binary/MemoryBinaryWriter.cs: Make sure QuadAlign
-	properly enlarge the memory stream if needed.
-	Patch by Regis Vaquette <rvaquette at yahoo.fr>.
-
-2008-09-18  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ReflectionReader.cs (GetModifierType): protect against
-	zero rids.
-
-2008-09-15  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Signatures/SignatureReader.cs: fix regression
-	in reading custom mods.
-
-2008-09-04  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Signatures/SignatureReader.cs: better read modifiers on
-	return types and parameters.
-
-2008-09-02  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Metadata/UserStringsHeap.cs: fix reading of some unicode fu.
-
-2008-09-02  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/MethodAttributes.cs: add CheckAccessOnOverride.
-	* Mono.Cecil/MethodDefinition.cs: add IsCheckAccessOnOverride.
-
-2008-09-02  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/GenericParameter.cs: fix Has*Constraint properties.
-
-2008-09-02  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/SecurityDeclarationReader.cs: fix reading
-	multiple permissions. Patch by Carsten Keutmann.
-
-2008-09-01  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ReflectionReader.cs: properly compose mod and byref types
-	for parameters and return types.
-	Based on a patch by Carlo Kok <ck at remobjects.com>
-
-2008-09-01  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Signatures/SignatureReader.cs: Avoid a crash
-	when looking for an enumeration definition when the assembly
-	could not be resolved. Patch by Carlo Kok <ck at remobjects.com>
-
-2008-09-01  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ReflectionWriter.cs: fix for writing null string
-	constants. Patch by Ewout Prangsma <ewout at tallapplications.com>.
-
-2008-06-28  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* Mono.Cecil.dll.sources
-	* Mono.Xml/MiniParser.cs:
-		Remove MiniParser as it is no more required (replaced by
-		SmallXmlParser) and save a few KB in the binary size
-
-	* Mono.Xml/SecurityParser.cs
-	* Mono.Xml/SmallXmlParser.cs:
-		Seal non-visible classes.
-		[Found using Gendarme AvoidUnsealedUninheritedInternalClassesRule]
-
-	* Mono.Cecil.Signatures/GenericArg.cs:
-		Seal non-visible classes.
-		[Found using Gendarme AvoidUnsealedUninheritedInternalClassesRule]
-
-	* Mono.Cecil.Binary/CopyImageVisitor.cs
-	* Mono.Cecil.Binary/ImageInitializer.cs
-	* Mono.Cecil.Binary/ImageReader.cs
-	* Mono.Cecil.Binary/ImageWriter.cs
-	* Mono.Cecil.Binary/ResourceReader.cs
-	* Mono.Cecil.Binary/ResourceWriter.cs:
-		Seal non-visible classes.
-		[Found using Gendarme AvoidUnsealedUninheritedInternalClassesRule]
-
-	* Mono.Cecil.Metadata/CultureUtils.cs
-	* Mono.Cecil.Metadata/MetadataInitializer.cs
-	* Mono.Cecil.Metadata/MetadataReader.cs
-	* Mono.Cecil.Metadata/MetadataRowReader.cs
-	* Mono.Cecil.Metadata/MetadataRowWriter.cs
-	* Mono.Cecil.Metadata/MetadataTableReader.cs
-	* Mono.Cecil.Metadata/Utilities.cs:
-		Seal non-visible classes.
-		[Found using Gendarme AvoidUnsealedUninheritedInternalClassesRule]
-
-	* Mono.Cecil.Cil/CodeReader.cs
-	* Mono.Cecil.Cil/OpCodeNames.cs
-	* Mono.Cecil.Cil/CodeWriter.cs
-	* Mono.Cecil.Cil/SymbolStoreHelper.cs:
-		Seal non-visible classes.
-		[Found using Gendarme AvoidUnsealedUninheritedInternalClassesRule]
-
-	* Mono.Cecil/SecurityDeclarationReader.cs
-	* Mono.Cecil/NullReferenceImporter.cs
-	* Mono.Cecil/TableComparers.cs:
-		Seal non-visible classes.
-		[Found using Gendarme AvoidUnsealedUninheritedInternalClassesRule]
-
-	* Mono.Cecil/AssemblyNameReference.cs:
-		Use String.Length > 0 instead of comparing to String.Empty
-		[Found using Gendarme CompareWithEmptyStringEfficientlyRule]
-
-	* Mono.Cecil.Metadata/MetadataToken.cs:
-		Add a private Equals(MetadataToken) method. This allows the
-		existing operators (== and !=) to avoid boxing, since they
-		will prefer it to the Equals(object) method.
-		[Found using Gendarme ImplementEqualsTypeRule]
-
-	* Mono.Cecil.Cil/GuidAttribute.cs:
-		Seal attribute class
-		[Found using Gendarme AvoidUnsealedConcreteAttributesRule]
-
-	* Mono.Cecil.Signatures/SignatureWriter.cs:
-		Fix typo.
-		[Found using Gendarme AvoidUnneededUnboxingRule]
-
-2008-06-06  Jb Evain  <jbevain at novell.com>
-
-	* CodeGen/cecil.xml: constrained. is of type InlineType.
-	* Mono.Cecil.Cil/OpCodes.cs: re-generate.
-
-2008-05-14  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ReflectionWriter.cs:
-		Only create the GenericParameterConstraint table if needed.
-		Patch by Richard Flamsholt <richard.flamsholt at gmail.com>.
-
-	* Mono.Cecil.Cil/MethodBody.cs:
-		Fix typo in switch cloning. Patch by
-		Rune Glerup <rune.glerup at gmail.com>.
-
-2008-05-06  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Signatures/CustomMod.cs:
-		Introduce a EmptyCustomMod static field.
-	* Mono.Cecil/ReflectionWriter.cs
-	* Mono.Cecil.Signatures/SignatureReader.cs:
-		Use EmptyCustomMod instead of instanciating
-		empty arrays of CustomMod.
-		Based on a patch by Carlo Kok <ck at remobjects.com>.
-
-	* Mono.Cecil.Metadata/MetadataRowReader.cs
-	* Mono.Cecil.Metadata/MetadataRowWriter.cs:
-		Cache row counters delegates.
-		Based on a patch by Carlo Kok <ck at remobjects.com>.
-
-	* Mono.Cecil/TypeDefinition.cs
-	* Mono.Cecil/MethodDefinition.cs
-	* Mono.Cecil/DefaultImporter.cs
-	* Mono.Cecil/ReflectionHelper.cs:
-		Restore the generic context values instead of blindly
-		overriding them. Based on a patch by Dzintars Avots.
-
-	* Mono.Cecil/MarshalSpec.cs (CloneInto): add new method
-	to clone MarshalSpec into a new container.
-
-	* Mono.Cecil/ParameterDefinition.cs (Clone):
-	* Mono.Cecil/FieldDefinition.cs (Clone):
-	Use the new MarshalSpec.CloneInto method.
-	Based on a patch by Dzintars Avots <davots at coverity.com>.
-
-	* Mono.Cecil/MethodDefinition.cs (Clone): fix cloning of
-	return types when they don't have a parameter.
-	Patch by Dzintars Avots <davots at coverity.com>.
-
-	* Mono.Cecil.Cil/CodeWriter.cs (ComputeMaxStack): compute max
-	stack more precisely. Based on a patch by Daniel Grunwald,
-	Contains code from Cecil.FlowAnalysis.
-
-	* Mono.Cecil.Cil/MethodBody.cs (Clone): make sure the
-	instruction linked list is properly constructed.
-
-2008-04-19  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* Mono.Cecil.Cil/CodeReader.cs:
-	* Mono.Cecil.Cil/ISymbolReader.cs:
-		Move reading of debugging symbols where it's possible to
-		reuse the existing Hashtable (offset, Instruction) in
-		the debugging libraries. Change interface to allow
-		passing the Hashtable.
-
-2008-04-15  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* Mono.Cecil.csproj
-	* Mono.Cecil.dll.sources:
-		Add Mono.Cecil.Cil/OpCodeNames.cs to the build.
-
-	* Mono.Cecil.Cil/OpCodeNames.cs
-	* Mono.Cecil.Cil/OpCode.cs
-	* Mono.Cecil.Cil/OpCodes.cs:
-		Reduce the OpCode struct size to 8 bytes (instead of 36).
-		Based on the SRE.OpCode code found in corlib.
-
-2008-04-13  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* Mono.Cecil/AssemblyDefinition.cs:
-		Short circut loop when module is found.
-
-2008-04-08  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/SecurityDeclaration.cs
-	  Mono.Cecil/SecurityDeclarationReader.cs:
-		Implement resolving of SecurityDeclarations.
-
-2008-03-31  Jb Evain  <jbevain at novell.com>
-
-	Integrate patches from Dzintars Avots <davots at coverity.com>
-
-	* Mono.Cecil/GenericParameter.cs
-	  Mono.Cecil/TypeDefinition.cs
-	  Mono.Cecil/DefaultImporter.cs
-	  Mono.Cecil/MethodDefinition.cs:
-		Fix generic parameter cloning to avoid issues when
-		the constraint reference the parameter itself.
-
-	* Mono.Cecil/MethodBody.cs (Clone): deals with switches.
-
-	* Mono.Cecil/MethodBody.cs (Clone): clone the name of
-	the local variables.
-
-2008-03-30  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* Mono.Cecil/ReflectionReader.cs:
-		Avoid creating a BinaryReader+MemoryStream on LE archs for
-		GetConstant. Saves about 400KB for Gendarme.
-		Avoid a BinaryReader creation in GetConstant which saves
-		about 50KB for Gendarme.
-	* Mono.Cecil.Metadata/GuidHeap.cs:
-		Compute ideal capacity for Hashtable. Avoid memory allocation
-		if a single GUID is present (which is the case for all of
-		Mono 2.0 assemblies). Saves a whole 2KB for Gendarme ;-)
-	* Mono.Cecil.Binary/Image.cs:
-		Add internal GetSectionAtVirtualAddress to avoid creating
-		BinaryReader in some cases.
-	* Mono.Cecil.Binary/ResourceReader.cs:
-		Avoid a BinaryReader creation in SetInitialValue which saves
-		about 3000KB for Gendarme.
-
-2008-03-08  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Binary/CopyImageVisitor.cs:
-		Copy the cliheaders flags over the new assembly.
-		Patch by Oleksiy Gapotchenko <alex.s.gap at gmail.com>
-
-2008-03-08  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* Mono.Cecil.Cil/CodeReader.cs:
-		Use one and only Hashtable for caching instructions offsets.
-		Save tons of precious memory.
-
-2008-03-08  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* Mono.Cecil.Cil/OpCode.cs
-	* Mono.Cecil.Binary/RVA.cs
-	* Mono.Cecil.Binary/DataDirectory.cs:
-		Avoid boxing/unboxing when == or != operators are used.
-		Results in significant memory savings for Gendarme.
-
-2008-03-08  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ReflectionReader.cs:
-		Protect from malformed RIDs.
-	* Mono.Cecil/AggressiveReflectionReader.cs:
-		Create the m_events and m_properties tables
-		even if they contains 0 elements.
-
-2008-02-26  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Binary/ImageReader.cs:
-		Avoid throwing non desired exceptions.
-
-2008-02-25  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ReflectionReader.cs:
-		Avoid throwing in case a constant
-		is of type object.
-
-2008-02-19  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/DefaultImporter.cs:
-		Add support for importing function pointers. Based on a
-		patch by Andrea Carlo Ornstein <andrea.ornstein at st.com>.
-
-	* Mono.Cecil/ModuleDefinition.cs:
-		Add a Inject(FieldDef) overload for symmetry.
-		Patch by Andrea Carlo Ornstein <andrea.ornstein at st.com>.
-
-2008-02-16  Jb Evain  <jbevain at novell.com>
-
-	* CodeGen/templates/MetadataRowReader.cs
-	  CodeGen/templates/Utilities.cs
-	  CodeGen/templates/MetadataRowWriter.cs
-	  Mono.Cecil.Metadata/MetadataRowReader.cs
-	  Mono.Cecil.Metadata/MetadataRowWriter.cs
-	  Mono.Cecil.Metadata/Utilities.cs:
-		Use a good old traditional array instead of an
-		Hashtable. Based on a patch by Carlo Kok <ck at remobjects.com>.
-
-2008-02-07  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/BaseAssemblyResolver.cs:
-		deal with 2.1 corlib on Mono.
-
-2008-02-07  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/MethodDefinition.cs:
-		add last Is method for semantics property.
-
-2008-02-05  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/TypeDefinition.cs:
-		System.Enum by itself is not a value type.
-		Fix #351879.
-
-	* Mono.Cecil.Signatures/SignatureReader.cs:
-		Properly read fnptr local variables. Fix #358507.
-
-	* Mono.Cecil.Binary/DefaultImporter.cs:
-		Import modifiers and sentinels, patch from:
-		Andrea Carlo Ornstein <andrea.ornstein at st.com>
-
-2008-02-04  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Binary/CLIHeader.cs
-	  Mono.Cecil.Binary/ImageWriter.cs
-	  Mono.Cecil.Metadata/MetadataWriter.cs:
-		emit the proper cli header version for 1.1 and 2.0 cases.
-
-	* Mono.Cecil.Cil/CilWorker.cs: add callsite overloads.
-
-2008-01-10  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ReflectionHelper.cs: deal with complex arrays.
-
-2008-01-07  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Cil/CilWorker.cs:
-		Allow ldarg.s/ldloc.s/stloc.s to take a byte
-		instead of the actual parameter or variable. Fix #350606.
-
-2008-01-07  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ArrayType.cs:
-		Add a constructor with the array rank. Fix #351924.
-		Based on a patch by Rolf Kvinge <rkvinge at novell.com>.
-
-2008-01-04  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Cil/CilWorker.cs:
-		Allow ldarg/ldloc/stloc to take a integer
-		instead of the actual parameter or variable. Fix #350606.
-
-2008-01-04  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/DefaultImporter.cs:
-	  Mono.Cecil/ReflectionHelper.cs:
-		Properly import nested types. Fix #351133.
-
-2008-01-03  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ReflectionWriter.cs:
-		Properly emit null type constants. Fix #351141.
-		Patch by Rolf Kvinge <rkvinge at novell.com>.
-
-2007-12-30  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Cil/CilWorker.cs:
-		Check for null arguments. Fix #350857.
-
-2007-12-21  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/AggressiveReflectionReader.cs
-	  Mono.Cecil.Signatures/SignatureReader.cs:
-		Don't crash on force resolve for nested arrays
-		in custom attributes.
-
-2007-12-17  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/IMemberDefinition.cs: make IMemberDefinition
-	implement ICustomAttributeProvider.
-
-2007-12-15  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Binary/AggressiveReflectionReader.cs: protect
-	against zeroed tokens.
-
-2007-12-15  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Binary/ImageReader.cs: fix crash when reading
-	some non .net binaries.
-
-2007-11-22  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* Mono.Cecil/SecurityDeclarationReader.cs:	Change default read
-	value to true. Fix reading 2.0 security	declaration format used by
-	MS compilers (#343553).
-
-2007-11-15	Rodrigo B. de Oliveira <rodrigobamboo at gmail.com>
-
-	* Mono.Cecil.Cil/MethodBody.cs:
-		Fixed Optimize for ldc_i4
-
-2007-11-15	Rodrigo B. de Oliveira <rodrigobamboo at gmail.com>
-
-	* Mono.Cecil.Cil/DocumentLanguage.cs
-	  Mono.Cecil.Cil/DocumentLanguageVendor.cs:
-	  	Compact Framework support by using Guid(string) if CF_2_0 is defined
-
-2007-11-01  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/MethodReturnType.cs: based on a patch by
-	Ivan <ivanjh at gmail.com>. Fix for cloning methods with
-	marshalers on return type.
-
-2007-10-31  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Binary/ImageReader.cs: fix for the case where
-	the export table export zero functions.
-
-2007-10-18  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Cil/MethodBody.cs: Add an Optimize method which
-	is the opposite of Simplify. Based on a patch by Carlo.
-
-	* Mono.Cecil.Cil/CodeWriter.cs: don't care about reducing MaxStack.
-
-2007-10-11  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/TypeReference.cs: add a IsNested helper property.
-
-	* Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil.Signatures/SignatureWriter.cs:
-		Integrate patch for Carlo, start working on enum writing
-		in custom attribute.
-
-2007-10-09  Nestor Salceda  <nestor.salceda at gmail.com>
-
-	* mono-cecil.pc.in:  Updated the version number.
-
-2007-10-09  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Cil/Instruction.cs
-	  Mono.Cecil.Cil/CodeWriter.cs:
-		Move CodeWriter.GetSize (Instruction) to Instruction.
-
-	Integration of patches from Carlo Kok <ck at remobjects.com>:
-
-	* Mono.Cecil.Cil/Document.cs
-	  Mono.Cecil.Cil/DocumentType.cs
-	  Mono.Cecil.Cil/DocumentLanguage.cs
-	  Mono.Cecil.Cil/DocumentLanguageVendor.cs:
-		Use plain guids for Document properties so it's easy
-		for third party document providers to use their own.
-
-	* Mono.Cecil/ParameterDefinition.cs:
-		Clean or set the HasFieldMarshal flag when setting
-		MarshalSpecs on parameters.
-
-	* Mono.Cecil/AssemblyNameReference.cs:
-		Protect against null culture.
-
-	* Mono.Cecil/FieldDefinition.cs:
-		Clean or set the HasFieldMarshal flag when setting
-		MarshalSpecs on fields.
-
-	* Mono.Cecil/GenericInstanceType.cs:
-		Properly initialize the IsValueType from the element type.
-
-2007-10-09  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ReflectionWriter.cs: check for duplicates
-	in the MemberRef row.
-
-2007-10-08  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* standalone.make: Revert changes so standalone Cecil (in SVN) can
-	be built using this Makefile (required for Gendarme);
-	* README: Update build and bug instructions.
-
-2007-10-07  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/BaseAssemblyResolver.cs: first lookup assemblies
-	in the specified directories before trying the framework dir.
-
-2007-10-06  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Cil/OpCode.cs: make that a struct again, it
-	make the 2.1 profile explode. Will investigate why.
-
-2007-10-06  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/MethodCallingConvention.cs: Not a [Flag]
-
-2007-10-05  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Cil/OpCode.cs: Change OpCode from struct to class
-	to avoid copying everything everytime.
-
-2007-09-28  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/SecurityDeclarationReader.cs:
-		Adapt patch from Carlo Kok  <ck at remobjects.com>.
-		Properly read unicode string constants.
-
-	* Mono.Cecil/SecurityDeclarationReader.cs:
-		Adapt patch from Carlo Kok  <ck at remobjects.com>.
-		For some MS assemblies, the security declaration contains
-		one zero byte.
-
-2007-09-24  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ModuleDefinition.cs: after a FullLoad, the symbol
-	reader is not needed anymore.
-
-2007-09-18  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Cil/MethodBody.cs:
-		Adapt a patch from Ivan <ivanjh at gmail.com>.
-		Fix cloning of the This parameter.
-
-2007-09-12  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil.Signatures/SignatureReader.cs
-	  Mono.Cecil.Signatures/TypeSpec.cs
-	  Mono.Cecil.Signatures/SignatureWriter.cs:
-		Deal with custom mods on typespecs.
-
-2007-09-12  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Binary/ImageReader.cs: some 64bits assemblies
-	have a strange header without import tables.
-
-2007-09-09  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/GenericContext.cs
-	  Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/DefaultImporter.cs:
-		Better handling of generic instances of references, where
-		the number of generic parameters is not known.
-
-2007-09-06  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/MethodDefinition: add Is** methods for MethodImplAttributes.
-
-2007-09-04  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ReflectionWriter.cs:
-		Adapt a patch by Ewout Prangsma <ewout at tallapplications.com>.
-		Cache the typespec tokens instead of the typespec themselves
-		because GenericParameters are somethimes considered as typespecs.
-
-2007-08-28  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Cil/CodeWriter.cs
-	  Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil.Cil/SymbolStoreHelper.cs
-	  Mono.Cecil.Signatures/SignatureWriter.cs:
-		Generate proper variables signatures for symbols
-		stores.
-
-2007-08-19  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Cil/CodeReader.cs:
-		Deal with generic exceptions.
-
-2007-08-15  Jb Evain  <jbevain at novell.com>
-
-	* CodeGen/cecil.xml,
-	  Mono.Cecil.Cil/OpCodes.cs:
-		Fix bug spotted by Jesse Jones, ldelem.any has a
-		stack behavior pop of popref, popi.
-
-2007-08-15  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/TypeReference.cs
-	  Mono.Cecil/TypeSpecification.cs:
-		TypeSpecification.Module return the module of the elemen
-		type now.
-
-2007-08-13  Rodrigo B. de Oliveira <rodrigobamboo at gmail.com>
-
-	* default.build
-	  Mono.Cecil/AssemblyInfo.cs:
-		Ability to pass custom defines to the c# compiler through
-		the csc.defines property. KEYFILE can be used to force
-		an AssemblyKeyFile attribute on AssemblyInfo.cs so strongly
-		signed versions of Mono.Cecil can be produced on .net 1.1,
-		cf 1.0 and cf 2.0.
-
-2007-08-13  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Cil/CilWorker.cs:
-		Fix InsertBefore.
-
-2007-08-06  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Cil/CilWorker.cs:
-		Fix the linked list after an InsertBefore, InsertAfter.
-
-2007-08-02  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/GenericParameter.cs
-	  Mono.Cecil/FieldDefinition.cs
-	  Mono.Cecil/TypeDefinition.cs
-	  Mono.Cecil/MethodDefinition.cs
-	  Mono.Cecil/EventDefinition.cs
-	  Mono.Cecil/PInvokeInfo.cs
-	  Mono.Cecil/Resource.cs
-	  Mono.Cecil/ParameterDefinition.cs
-	  Mono.Cecil/PropertyDefinition.cs:
-
-		Add Isxxx properties based on the xxxAttributes enums.
-
-2007-07-23  Raja R Harinath  <rharinath at novell.com>
-
-	Fix 'make warnings'.
-	* Makefile (LIBRARY_PACKAGE): Set to none.
-	(install-local): Remove.
-
-2007-07-21  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/TypeReference.cs
-	  Mono.Cecil/TypeSpecification.cs:
-		Add a new GetOriginalType () method.
-
-	* Mono.Cecil/MethodReference.cs
-	  Mono.Cecil/MethodSpecification.cs:
-		Add a new GetOriginalMethod () method.
-
-2007-07-19  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/AssemblyFactory.cs
-	  Mono.Cecil.Binary/Image.cs:
-		Update the fileinfo after writing an assembly
-		to a file.
-
-2007-07-19  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil.Cil/CodeReader.cs
-	  Mono.Cecil.Signature/SignatureReader.cs:
-		Better handling of the sentil in the varargs methods.
-
-	* Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/SentinelType.cs
-	  Mono.Cecil.Cil/CodeWriter.cs:
-	  Mono.Cecil.Signatures/SignatureReader.cs:
-		Fix handling of varargs methods.
-
-2007-07-18  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Cil/CodeReader.cs
-	  Mono.Cecil.Cil/CodeWriter.cs:
-		Deal with non-sense instructions that some
-		obfuscators emit.
-
-	* Mono.Cecil/AggressiveReflectionReader.cs:
-		Deal with out of range properties.
-	* Mono.Cecil.Metadata/StringsHeap.cs:
-		Deal with out of range string indexes.
-
-2007-07-17  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/AggressiveReflectionReader.cs:
-		Add some gards against zeroed tokens.
-
-	* Mono.Cecil.Metadata/Utilities.cs:
-		Return zero instead of throwing on invalid tags.
-		Allow Cecil to read assemblies partially broken
-		by some obfuscators.
-
-2007-07-14  Gert Driesen  <drieseng at users.sourceforge.net>
-
-	* default.build: Fix relative path to key. Avoid use of ugly foreach
-	contruct. Spaces to tabs.
-	* Mono.Cecil.csproj: Fix relative path to key.
-	* standalone.make: Fix relative path to key and config.make.
-
-2007-07-03  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/BaseAssemblyResolver.cs:
-		Expose a way to add default directories
-		where the assemblies are first looked for.
-
-2007-06-20  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/IReferenceImporter.cs => IImporter.cs
-	  Mono.Cecil/DefaultReferenceImporter.cs => DefaultImporter.cs
-
-	* Mono.Cecil/ReflectionHelper.cs
-	  Mono.Cecil/DefaultReferenceImporter.cs
-	  Mono.Cecil/ModuleDefinition.cs:
-		Move Cecil types import logic into
-		the DefaultReferenceImporter.
-
-		Needed by the merger and the extractor.
-
-2007-06-19  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil.Cil/MethodBody.cs:
-		Avoid invalid cast by properly simplifying
-		instructions.
-
-	* Mono.Cecil.Cil/OpCodes.cs:
-	  CodeGen/cecil.xml:
-		leave.s is a macro instruction.
-
-	* Mono.Cecil/TypeDefinition.cs
-	  Mono.Cecil/ParameterDefinition.cs:
-		Fix cloning.
-
-2007-06-18  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ReflectionReader.cs:
-		Fix custom mods for fields ref.
-
-2007-06-13  Jb Evain  <jbevain at novell.com>
-
-	Integrated patches by:
-	Paul Apostolescu <papostolescu at fortifysoftware.com>
-
-	* patch3:
-	  Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil.Signatures/SignatureWriter.cs:
-		In named args, objects are encoded as boxed.
-
-	* patch1:
-	  Mono.Cecil/IMemberDefinition.cs
-	  Mono.Cecil/Constants.cs
-	  Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/AggressiveReflectionReader.cs:
-		Do not take into account special _Deleted
-		members.
-
-	* patch6:
-	  Mono.Cecil/StructureReader.cs:
-		Read the flags of the references as well.
-
-	* patch5:
-	  Mono.Cecil.Metadata/UserStringsHeap.cs:
-		Don't bother getting a string from the bytes
-		if the length is < 2 (0, or 0 + an encoding flag)
-
-	* patch4:
-	  Mono.Cecil/ReflectionHelper.cs:
-		Update the value type flags of types
-		when they are imported if the type
-		reference was first seen as a type reference.
-
-	* patch2:
-	  Mono.Cecil.Signature/SignatureWriter.cs:
-		Patch to handle nullref values for types in
-		custom attributes arguments.
-
-2007-06-13  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/StructureWriter.cs,
-	  Mono.Cecil/ReflectionWriter.cs:
-		Revert the on demand creation of memberref.
-
-2007-06-12  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/CallSite.cs
-	  Mono.Cecil/ModuleReference.cs
-	  Mono.Cecil/CustomAttribute.cs
-	  Mono.Cecil/AssemblyDefinition.cs
-	  Mono.Cecil/SecurityDeclaration.cs
-	  Mono.Cecil/AssemblyNameReference.cs
-	  Mono.Cecil/MemberReference.cs
-	  Mono.Cecil/Resource.cs
-	  Mono.Cecil/ParameterReference.cs:
-		Implement explicitely IAnnotationProvider.
-
-2007-06-05  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/AssemblyNameReference.cs:
-		Cache the fullname when possible.
-
-2007-05-31  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/ModuleDefinition.cs:
-		Add types to the module and members to the context
-		on inject.
-
-	* Mono.Cecil/BaseAssemblyResolver.cs:
-		Improve resolve, works for people requiring
-		.net 1.0 assemblies when they only have 1.1.
-
-2007-05-30  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/DefaultAssemblyResolver.cs:
-		Add a RegisterAssembly method to register an
-		assembly to the cache without having to resolve it.
-
-	* Mono.Cecil/DefaultReferenceImporter.cs:
-		Make methods virtual.
-
-	* Mono.Cecil.dll.sources
-	  Mono.Cecil.csproj
-	  Mono.Cecil/ReflectionHelper.cs
-	  Mono.Cecil/IReferenceImporter.cs
-	  Mono.Cecil/FieldDefinition.cs
-	  Mono.Cecil/CustomAttribute.cs
-	  Mono.Cecil/ImportContext.cs
-	  Mono.Cecil/NullReferenceImporter.cs
-	  Mono.Cecil/MethodDefinition.cs
-	  Mono.Cecil/EventDefinition.cs
-	  Mono.Cecil/ReflectionController.cs
-	  Mono.Cecil/ModuleDefinition.cs
-	  Mono.Cecil/GenericContext.cs
-	  Mono.Cecil/DefaultReferenceImporter.cs
-	  Mono.Cecil/PropertyDefinition.cs:
-		Provide a IReferenceImporter to customize how
-		types are injected from an assembly to another.
-
-2007-05-28  Jb Evain  <jbevain at novell.com>
-
-	* Borrow annotations concept from boo ast node.
-	  Should be useful for the linker.
-
-2007-05-23  Jb Evain  <jbevain at novell.com>
-
-	* Mono.Cecil/StructureWriter.cs
-	  Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil.Cil/CodeWriter.cs:
-		Emit MemberReferences rows on demand.
-
-2007-05-16  Jb Evain  <jb at nurv.fr>
-
-	* Mono.Cecil.Binary/ImageReader.cs:
-		Fix reading of the debug header for
-		headers half way emitted by .net SRE.
-
-	* Mono.Cecil/BaseAssemblyResolver:
-		try to resolve unversionned assemblies.
-
-2007-05-09  Jb Evain  <jb at nurv.fr>
-
-	* Mono.Cecil.Binary/Image.cs:
-		Throw when rva cannot be resolved.
-
-	* Mono.Cecil.csproj
-	  Mono.Cecil.Binary/ExportTable.cs
-	  Mono.Cecil.Binary/BaseImageVisitor.cs
-	  Mono.Cecil.Binary/ImageReader.cs
-	  Mono.Cecil.Binary/IBinaryVisitor.cs
-	  Mono.Cecil.Binary/Image.cs
-	  Mono.Cecil.Binary/ImageInitializer.cs
-	  Mono.Cecil/StructureReader.cs
-	  Mono.Cecil/ReflectionWriter.cs:
-		When present, read the export table, so that people
-		reading non managed assemblies can use the Mono.Cecil.Binary
-		stuff.
-
-		Fix the bug when section name is 8 char long.
-
-		Based on a patch by Pavel Savara <pavel.savara at gmail.com>.
-
-2007-04-27  Jb Evain  <jb at nurv.fr>
-
-	* Mono.Cecil/AssemblyNameReference.cs:
-		Allow the computation of pktoken on CF_2_0.
-
-2007-04-25  Jb Evain  <jb at nurv.fr>
-
-	* Mono.Cecil/ModuleDefinition.cs
-	  Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil.Cil/ISymbolWriter.cs
-	  Mono.Cecil.Signatures/SignatureWriter.cs
-		Start working on local var debug infos emitting.
-
-2007-04-08  Jb Evain  <jb at nurv.fr>
-
-	* Mono.Cecil/ParameterAttributes.cs:
-		ParameterAttributes.None
-
-2007-03-30  Jb Evain  <jb at nurv.fr>
-
-	* Collections:
-		Remove uneeded tests as an optimizations.
-		Based on a suggestion by Carlo Kok <ck at remobjects.com>.
-
-	* Mono.Cecil.Metadata/StringsHeap.cs:
-		Optimize GetStringAt, patch by:
-		Carlo Kok <ck at remobjects.com>
-
-2007-03-22  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/AssemblyInfo.cs:
-		Bump to 0.5.0.0 for the sake of our packagers friends.
-		Re-Bump to 0.5.0.1.
-
-	* Mono.Cecil/StructureWriter.cs:
-		Throw a NotSupportedException instead of a NIE
-		for mixed mode assemblies.
-
-2007-03-20  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Metadata/MetadataWriter.cs:
-		Correct epilog for unicode user strings heap.
-
-2007-03-16  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Cil/CodeReader.cs
-	  Mono.Cecil.Cil/MethodBody.cs:
-		Add a MethodBody.Simplify method to expand
-		macros.
-
-	* Mono.Cecil.dll.sources
-	  Mono.Cecil.csproj
-	  Mono.Cecil.Cil/OpCode.cs
-	  Mono.Cecil.Cil/OpCodes.cs
-	  Mono.Cecil.Cil/Code.cs
-	  CodeGen/cecil-gen.rb
-	  CodeGen/templates/OpCodes.cs
-	  CodeGen/templates/Code.cs:
-		Add a Code enumeration to simplify working with
-		OpCodes.
-
-2007-03-12  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Metadata/UserStringsHeap.cs:
-		Avoid trailing blank on some systems.
-
-2007-02-22  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ReflectionWriter.cs:
-		Deal with sentinels on simple methodrefs.
-
-2007-02-22  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.dll.sources
-	  Mono.Cecil.csproj
-	  CodeGen/cecil.xml
-	  Mono.Cecil.Metadata/ParamPtr.cs
-	  Mono.Cecil.Metadata/MethodSpec.cs
-	  Mono.Cecil.Metadata/BaseMetadataVisitor.cs
-	  Mono.Cecil.Metadata/EventPtr.cs
-	  Mono.Cecil.Metadata/MetadataTableReader.cs
-	  Mono.Cecil.Metadata/MetadataTableWriter.cs
-	  Mono.Cecil.Metadata/MetadataRowReader.cs
-	  Mono.Cecil.Metadata/MetadataRowWriter.cs
-	  Mono.Cecil.Metadata/PropertyPtr.cs
-	  Mono.Cecil.Metadata/FieldPtr.cs
-	  Mono.Cecil.Metadata/MethodPtr.cs
-	  Mono.Cecil.Metadata/IMetadataVisitor.cs:
-		Add *Ptr table definitions.
-
-	* Mono.Cecil.dll.sources
-	  Mono.Cecil.csproj
-	  Mono.Cecil/CallSite.cs
-	  Mono.Cecil/IMethodSignature.cs
-	  Mono.Cecil/SentinelType.cs
-	  Mono.Cecil/FunctionPointerType.cs
-	  Mono.Cecil/MethodReference.cs
-	  Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil.Cil/CodeReader.cs
-	  Mono.Cecil.Cil/CodeWriter.cs:
-		Implement support for writing function pointers.
-		Based on a patch by Argiris Kirtzidis <akyrtzi at gmail.com>
-
-	* Mono.Cecil/Constants.cs:
-		Make it public due to some demands.
-
-2007-02-21  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Signatures/SignatureReader.cs:
-		do not read enums if the resolution is not forced until
-		cecil knows how to write them.
-
-	* Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil.Signatures/SzArray.cs
-	  Mono.Cecil.Signatures/Array.cs
-	  Mono.Cecil.Signatures/SignatureReader.cs
-	  Mono.Cecil.Signatures/TypeSpec.cs
-	  Mono.Cecil.Signatures/SignatureWriter.cs:
-		handle custom mods on arrays signatures.
-
-	* Mono.Cecil/ReflectionReader.cs:
-		Handle fields TypeSpecs that have an initial value.
-		Based on a patch by Argiris Kirtzidis <akyrtzi at gmail.com>
-
-2007-01-29  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Metadata/MetadataWriter.cs:
-		Save a byte ! Yeah !
-
-2006-12-18  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ReflectionReader.cs:
-		Fix a bug in reading MemberRef pointing to MethodDef.
-
-2006-12-16  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/StructureReader.cs:
-		Prevent a NRE if we're reading a multi module
-		assembly through a stream if a module is not find.
-		Fix #80273.
-
-2006-12-07  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ReflectionWriter.cs:
-		Allow an AssemblyDefinition to be written
-		more than once.
-
-2006-12-05  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ReflectionWriter.cs:
-		Deal with nullref default parameters.
-
-2006-12-03  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ReflectionWriter.cs:
-		Handle constant where the parameter is object
-		and the signature is something else.
-
-2006-11-27  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/TypeDefinitionCollection.cs
-	  CodeGen/templates/NamedCollection.cs:
-		Allow multiple typedefs with the same namespace+name
-		to be able to read unvalid assemblies.
-
-	* Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil.Signatures/PropertySig.cs
-	  Mono.Cecil.Signatures/SignatureReader.cs
-	  Mono.Cecil.Signatures/SignatureWriter.cs:
-		- Deal with modifiers on properties.
-		- Deal with non standard signatures when the byref
-		flag is placed after the custom modifiers.
-	  Mono.Cecil/StructureReader.cs:
-		- Properly detect wether an assembli is a dll or not.
-
-		Based on a patch by Argiris Kirtzidis <akyrtzi at gmail.com>.
-
-2006-11-25  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil.Signatures/GenericArg.cs
-	  Mono.Cecil.Signatures/GenericInstSignature.cs
-	  Mono.Cecil.Signatures/SignatureReader.cs
-	  Mono.Cecil.Signatures/SignatureWriter.cs:
-		Deal with modifiers for generic arguments.
-		Based on a patch by Argiris Kirtzidis <akyrtzi at gmail.com>.
-
-	* Mono.Cecil.Binary/ImageWriter.cs:
-		Fix a bug in writing rsrc sections.
-
-	* Mono.Cecil.Cil/CodeReader.cs:
-		Do some refactoring.
-
-	* Mono.Cecil.Metadata/MetadataToken.cs:
-		Add a ctor to get a MetadataToken
-		from an integer token.
-
-2006-11-22  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Cil/GuidAttribute.cs:
-		Fix for CF compilation.
-
-2006-11-16  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/StructureReader.cs:
-		If an assembly has no managed assembly defined,
-		consider it as a dll.
-
-2006-11-08  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/BaseAssemblyResolver.cs:
-		Handles different kind of GAC on Windows.
-
-2006-11-07  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ReflectionHelper.cs:
-		Don't import the flags of an assembly name reference.
-
-2006-11-03  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/PropertyDefinition.cs:
-		Fix property cloning.
-		Patch by Alex Prudkiy <prudkiy at mail.ru>
-
-2006-10-26  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ReflectionReader.cs:
-		Use the proper generic context when reading memberrefs.
-
-2006-10-11  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Cil/Document.cs:
-		Complete a little bit.
-
-	* Mono.Cecil/SecurityDeclarationReader.cs:
-		Get rid of a lot of exceptions when creating the security
-		attribute.
-
-2006-10-10  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ReflectionReader.cs:
-	  Mono.Cecil/CustomAttribute.cs:
-	  Mono.Cecil.Signatures/SignatureReader.cs:
-	  Mono.Cecil/SecurityDeclarationReader.cs:
-		Patch from: Eyal Alaluf  <eyala at mainsoft.com>.
-		Add support for resolving custom attributes that contain references
-		to enum in other assemblies.
-
-2006-10-09  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/IRequireResolving.cs
-	  Mono.Cecil/CustomAttribute.cs
-	  Mono.Cecil/SecurityDeclaration.cs
-	  Mono.Cecil/SecurityDeclarationReader.cs
-	  Mono.Cecil/AggressiveReflectionReader.cs
-	  Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil/ModuleDefinition.cs:
-		Introduce the interface IRequireResolving implemented
-		by CustomAttribute and SecurityDeclaration for when they can't
-		be read without loading another assembly.
-
-	* Mono.Cecil/SecurityDeclarationReader.cs:
-		Prevent Cecil to crash when it can not get the type
-		of the declaration.
-
-2006-10-04  Eyal Alaluf  <eyala at mainsoft.com>
-
-	* Mono.Cecil/StructureReader.cs:
-		Visit the module we load when a DLL has more then 1 module.
-	  Mono.Cecil/AssemblyNameReference.cs:
-	  	Allow "PublicToken=null" when parsing an assembly full name.
-
-2006-10-03  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/BaseAssemblyResolver.cs
-	  Mono.Cecil.Binary/ResourceReader.cs:
-		CompactFramework fix.
-
-2006-10-02  Jb Evain  <jbevain at gmail.com>
-
-	* implement IList on the named collections.
-
-	* implement the first bits of Win32 resources handling.
-
-	* Mono.Cecil/ReflectionHelper.cs:
-		It does not make sense to import the assembly flags.
-
-2006-09-28  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/MethodDefinitionCollection.cs
-	  Mono.Cecil/ConstructorCollection.cs
-	  Mono.Cecil.Cil/InstructionCollection.cs
-	  CodeGen/templates/IndexedCollection.cs
-		Fix StackOverlow.
-
-2006-09-27  Jb Evain  <jbevain at gmail.com>
-
-	* *Collection.cs: use CollectionBase when possible.
-
-2006-09-24  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/AssemblyFactory.cs
-	  Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil.Cil/ISymbolStoreFactory.cs
-	  Mono.Cecil.Cil/SymbolStoreHelper.cs:
-		Some more work on the debugging infos api.
-
-	* Mono.Cecil/MethodDefinitionCollection.cs
-	  Mono.Cecil/ConstructorCollection.cs
-	  CodeGen/templates/IndexedCollection.cs:
-		Fix the GetConstructor/GetMethod methods.
-		Based on a patch by Jon Chambers.
-
-2006-09-20  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/StructureWriter.cs
-	  Mono.Cecil/ModuleDefinition.cs
-	  Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil/AssemblyFactory.cs
-	  Mono.Cecil.Cil/ISymbolReader.cs
-	  Mono.Cecil.Cil/CodeWriter.cs
-	  Mono.Cecil.Cil/ISymbolWriter.cs
-	  Mono.Cecil.Cil/SymbolStoreHelper.cs:
-		Working on the debug infos stuff.
-
-	* Mono.Cecil.Signatures/SignatureReader.cs:
-		Ensure custom attributes are read when they can be.
-		Patch by Sebastien Pouliot.
-
-2006-09-19  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ModuleDefinition.cs
-	  Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil.Cil/Document.cs
-	  Mono.Cecil.Cil/Instruction.cs
-	  Mono.Cecil.Cil/SequencePoint.cs
-	  Mono.Cecil.Cil/CodeReader.cs
-	  Mono.Cecil.Cil/IScopeProvider.cs
-	  Mono.Cecil.Cil/ISymbolReader.cs
-	  Mono.Cecil.Cil/CodeWriter.cs
-	  Mono.Cecil.Cil/ISymbolWriter.cs
-	  Mono.Cecil.Cil/IVariableDefinitionProvider.cs
-	  Mono.Cecil.Cil/SymbolStoreHelper.cs
-	  Mono.Cecil.Cil/ISymbolStoreFactory.cs
-	  Mono.Cecil.Cil/ScopeCollection.cs
-	  Mono.Cecil.Cil/Scope.cs:
-		Work on the architecture for debugging infos.
-
-	* Mono.Cecil.dll.sources
-	  Mono.Cecil.Cil/Document.cs
-	  Mono.Cecil.Cil/IVariableDefinitionProvider.cs
-	  Mono.Cecil.Cil/SequencePoint.cs
-	  Mono.Cecil.Cil/ScopeCollection.cs
-	  Mono.Cecil.Cil/BaseCodeVisitor.cs
-	  Mono.Cecil.Cil/CodeReader.cs
-	  Mono.Cecil.Cil/IScopeProvider.cs
-	  Mono.Cecil.Cil/MethodBody.cs
-	  Mono.Cecil.Cil/ICodeVisitor.cs
-	  Mono.Cecil.Cil/CodeWriter.cs
-	  Mono.Cecil.Cil/Scope.cs
-	  Mono.Cecil.Cil/VariableDefinitionCollection.cs
-	  CodeGen/cecil.xml:
-		First bits of the debug infos stuff.
-
-	* Mono.Cecil.Cil/InstructionCollection.cs
-	  CodeGen/templates/IndexedCollection.cs:
-		The outside instruction has an offset of -1.
-
-	* Mono.Cecil.Cil/OpCodes.cs
-	  Mono.Cecil.Cil/CodeReader.cs
-	  Mono.Cecil.Cil/OpCode.cs
-	  CodeGen/templates/OpCodes.cs:
-		Simpliest way of dealing with different opcodes.
-
-2006-09-07  Jb Evain  <jbevain at gmail.com>
-
-	* support PE32+ file format.
-
-	* Add an Outside instruction to an InstructionCollection.
-	Cleaner than the old null instruction.
-
-	* Mono.Cecil/MarshalSpec.cs
-	  Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/ReflectionWriter.cs
-	  CodeGen/cecil-mig.rb:
-		Refactor names from Desc to Spec.
-
-	* *Collection.cs:
-		Remove the unused events stuff.
-
-2006-08-31  Jb Evain  <jbevain at gmail.com>
-
-	* /!\ Breaking changes:
-		On the way to Cecil 0.5. Remove meaningless interfaces.
-		GenericParamAttributes -> GenericParameterAttributes
-		ParamAttributes -> ParamAttributes
-
-		I'll provide a migration path with a script.
-
-		Please do not use this revision, other changes are on the way.
-
-2006-08-26  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ReflectionReader.cs:
-		Fix a bug when reading some parameters.
-
-2006-08-26  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Cil/ReflectionWriter.cs:
-		Fix the computation of the size of the last opcode in case
-		of an exception handler is pointing outside the cil stream.
-
-	* Mono.Cecil.Cil/ReflectionWriter.cs:
-		Don't use seh tiny headers when the size can't fit in a byte.
-
-	* Mono.Cecil.Cil/ReflectionWriter.cs:
-		Fix a problem in the computation of the stack when the IL
-		is somewhat strange.
-
-2006-08-23  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/AssemblyInfo.cs:
-		Cecil 0.4.3 release.
-
-2006-08-21  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Metadata/MetadataWriter.cs:
-		Fix a bug in field initial values writing.
-
-	* Mono.Cecil/BaseAssemblyResolver.cs:
-		Look for assemblies in ./ first
-
-2006-08-17  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/BaseAssemblyResolver.cs:
-		Resolve the corlib depending on its version.
-
-	* Mono.Cecil/AssemblyName.cs
-	  Mono.Cecil/BaseAssemblyResolver.cs:
-		Implement a AssemblyNameReference.Parse(string)
-
-	* Mono.Cecil/TypeReferenceCollection.cs
-	  Mono.Cecil/ExternTypeCollection.cs
-	  Mono.Cecil/TypeDefinitionCollection.cs
-	  CodeGen/templates/NamedCollectionImplem.cs:
-		Avoid infinite recursion.
-
-	* Mono.Cecil/BaseAssemblyResolver.sc:
-		Stay .net 1.1 compatible
-
-2006-08-16  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/IAssemblyResolver.cs
-	  Mono.Cecil/BaseAssemblyResolver.cs
-	  Mono.Cecil/DefaultAssemblyResolver.cs
-	  Mono.Cecil/AssemblyDefinition.cs
-		Implement an assembly resolver.
-
-	* Mono.Cecil/ReflectionReader.cs:
-		Fix the initial value reading.
-		Based on a report and a patch of Roei Erez  <roeie at mainsoft.com>
-
-2006-08-15  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/TypeReferenceCollection.cs
-	  Mono.Cecil/ExternTypeCollection.cs
-	  Mono.Cecil/TypeDefinitionCollection.cs
-	  CodeGen/templates/NamedCollectionImplem.cs:
-		Fix the CopyTo method.
-
-2006-07-19  Jb Evain  <jbevain at gmail.com>
-
-	* CodeGen/templates/IIndexedCollection.cs
-	  CodeGen/templates/IndexedCollectionImplem.cs
-	  Mono.Cecil/IConstructorCollection.cs
-	  Mono.Cecil/IMethodDefinitionCollection.cs
-	  Mono.Cecil/MethodDefinitionCollection.cs
-	  Mono.Cecil/ConstructorCollection.cs:
-		Add a GetConstructor(bool,ParameterDefinitionCollection) method
-		required by the linker.
-
-	* Mono.Cecil.Metadata/MetadataReader.cs
-	  Mono.Cecil.Metadata/StringsHeap.cs:
-		Read the string on demand, based on the index.
-		Needed due to some obfuscators that create a string entry like
-		xClassName, and make the pointer points to after the x.
-
-2006-07-03	Rodrigo B. de Oliveira <rodrigobamboo at gmail.com>
-	* CodeGen/templates/ImageReader.cs
-	  Mono.Cecil.Binary/ImageReader.cs:
-	  	CompactFramework compatibility.
-
-2006-07-02	Rodrigo B. de Oliveira <rodrigobamboo at gmail.com>
-
-	* CodeGen/templates/ImageReader.cs
-	  Mono.Cecil.Binary/ImageReader.cs:
-	  	Proper FileNotFoundException construction.
-
-	* Mono.Cecil/MethodDefinition.cs
-	  Mono.Cecil/IMethod.cs:
-		Helper properties IsInternalCall and IsRuntime.
-
-2006-06-21  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Cil/CilWorker.cs:
-		Fix ldc.i4.s emitting.
-
-2006-06-13  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ReflectionWriter.cs:
-		Fix for compiling on CF 1.
-	* Mono.Cecil/StructureReader.cs:
-		Fix for a "bug" when csc 7.1 emits an assembly
-		with an assembly row, but no blob heap.
-		Plus style fix.
-
-2006-06-08  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/IMethod.cs
-	  Mono.Cecil/MethodDefinition.cs
-	  Mono.Cecil/ReflectionWriter.cs:
-		Add a public HasBody property.
-
-2006-06-07  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/MethodDefinition.cs
-	  Mono.Cecil/ReflectionWriter.cs:
-		Read and write method bodies only when allowed.
-
-2006-05-29  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/IMethodDefinition.cs
-	  Mono.Cecil/MethodDefinition.cs:
-		Remove the useless CreateBody method.
-
-2006-05-27  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/StructureWriter.cs
-	  Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/MethodDefinition.cs
-	  Mono.Cecil.Metadata/MetadataToken.cs
-	  Mono.Cecil.Signatures/SignatureReader.cs:
-		Play better with mixed mode assemblies.
-
-	* Mono.Cecil/SecurityDeclarationReader.cs
-	  Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil.Signatures/SignatureReader.cs:
-		Read/Write this awful load of crap that is sharepoint.
-
-2006-05-22  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Cil/CilWorker.cs:
-		Fix #78479. Patch by David Emsellem.
-
-2006-05-20  Jb Evain  <jbevain at gmail.com>
-
-	* CodeGen/templates/ImageReader.cs
-	  CodeGen/templates/ImageWriter.cs
-	  Mono.Cecil/AssemblyFactory.cs
-	  Mono.Cecil/StructureWriter.cs
-	  Mono.Cecil/Binary/ImageReader.cs
-	  Mono.Cecil/Binary/Image.cs
-	  Mono.Cecil/Binary/ImageWriter.cs
-	  Mono.Cecil.Metadata/MetadataWriter.cs:
-		Optimize assembly writing.
-		Add methods to read assemblies from byte arrays.
-
-	* Mono.Cecil/StructureWriter.cs:
-		Throw an exception when the target is an exe
-		and no entry point have been setted.
-	* Mono.Cecil/AssemblyFactory.cs:
-		Add helpers method to defines assemblies.
-	* Mono.Cecil/MethodDefinition.cs:
-		Set the hasThis flag to the correct value.
-	* Mono.Cecil.Cil/CodeReader.cs:
-		Remove old comment.
-	* Mono.Xml/SmallXmlParser.cs:
-		Make private.
-
-2006-05-18  Jb Evain  <jbevain at gmail.com>
-
-	* CodeGen/templates/MetadataTableReader.cs
-	  Mono.Cecil.Metadata/MetadataTableReader.cs
-	  Mono.Cecil.Metadata/TableCollection.cs
-	  Mono.Cecil.Metadata/TablesHeap.cs:
-		Optimize a little bit.
-
-	* CodeGen/templates/MetadataTableWriter.cs
-	  Mono.Cecil.Metadata/MetadataTableWriter.cs
-	  Mono.Cecil.Metadata/TableCollection.cs:
-		Fix for last changeset.
-
-	* Mono.Cecil.Metadata/RIdAttribute.cs:
-		deleted.
-
-	* Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/StructureReader.cs
-	  Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil/AggressiveReflectionReader.cs
-	  Mono.Cecil.Cil/CodeReader.cs
-	  CodeGen/templates/Utilities.cs
-	  CodeGen/templates/MetadataTableReader.cs
-	  CodeGen/templates/MetadataTableWriter.cs
-	  CodeGen/templates/Table.cs
-	  CodeGen/templates/MetadataRowReader.cs
-	  CodeGen/templates/MetadataRowWriter.cs
-	  Mono.Cecil.Metadata/Assembly.cs
-	  Mono.Cecil.Metadata/InterfaceImpl.cs
-	  Mono.Cecil.Metadata/PropertyMap.cs
-	  Mono.Cecil.Metadata/Constant.cs
-	  Mono.Cecil.Metadata/MethodSpec.cs
-	  Mono.Cecil.Metadata/DeclSecurity.cs
-	  Mono.Cecil.Metadata/TypeDef.cs
-	  Mono.Cecil.Metadata/GenericParamConstraint.cs
-	  Mono.Cecil.Metadata/MethodImpl.cs
-	  Mono.Cecil.Metadata/NestedClass.cs
-	  Mono.Cecil.Metadata/MetadataTableReader.cs
-	  Mono.Cecil.Metadata/AssemblyRefProcessor.cs
-	  Mono.Cecil.Metadata/AssemblyRef.cs
-	  Mono.Cecil.Metadata/AssemblyRefOS.cs
-	  Mono.Cecil.Metadata/Method.cs
-	  Mono.Cecil.Metadata/MetadataTableWriter.cs
-	  Mono.Cecil.Metadata/MetadataRowReader.cs
-	  Mono.Cecil.Metadata/ExportedType.cs
-	  Mono.Cecil.Metadata/CustomAttribute.cs
-	  Mono.Cecil.Metadata/Param.cs
-	  Mono.Cecil.Metadata/ClassLayout.cs
-	  Mono.Cecil.Metadata/MetadataRowWriter.cs
-	  Mono.Cecil.Metadata/Utilities.cs
-	  Mono.Cecil.Metadata/AssemblyOS.cs
-	  Mono.Cecil.Metadata/ModuleRef.cs
-	  Mono.Cecil.Metadata/FieldMarshal.cs
-	  Mono.Cecil.Metadata/GenericParam.cs
-	  Mono.Cecil.Metadata/ImplMap.cs
-	  Mono.Cecil.Metadata/TableCollection.cs
-	  Mono.Cecil.Metadata/TablesHeap.cs
-	  Mono.Cecil.Metadata/TypeRef.cs
-	  Mono.Cecil.Metadata/ManifestResource.cs
-	  Mono.Cecil.Metadata/File.cs
-	  Mono.Cecil.Metadata/EventMap.cs
-	  Mono.Cecil.Metadata/AssemblyProcessor.cs
-	  Mono.Cecil.Metadata/FieldLayout.cs
-	  Mono.Cecil.Metadata/Event.cs
-	  Mono.Cecil.Metadata/Field.cs
-	  Mono.Cecil.Metadata/Property.cs
-	  Mono.Cecil.Metadata/Module.cs
-	  Mono.Cecil.Metadata/MethodSemantics.cs
-	  Mono.Cecil.Metadata/StandAloneSig.cs
-	  Mono.Cecil.Metadata/FieldRVA.cs
-	  Mono.Cecil.Metadata/TypeSpec.cs
-	  Mono.Cecil.Metadata/IMetadataTable.cs
-	  Mono.Cecil.Metadata/MemberRef.cs:
-		Fix the way the metadata tables are handled.
-
-	* Mono.Cecil.Signatures/SignatureWriter.cs:
-		Fix bug in string writing.
-
-2006-05-12  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/AssemblyInfo.cs:
-		Hide the info if Cecil is embedded.
-
-2006-05-09  Jb Evain  <jbevain at gmail.com>
-
-	* cecil.build: rename to default.build
-
-2006-05-08  Jb Evain  <jbevain at gmail.com>
-
-	* Makefile:
-		Sign the assembly.
-
-	* cecil.csproj:
-		Add an msbuild file.
-
-2006-05-05  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/AssemblyFactory.cs
-	  Mono.Cecil/StructureReader.cs
-	  Mono.Cecil/ModuleDefinition.cs:
-		Add an AssemblyFactory.GetAssemblyManifest method.
-
-2006-05-04  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/TableComparers.cs:
-		TypeDef.Compare: the name is enough against <Module>.
-
-	* Mono.Cecil/ReflectionWriter.cs:
-		Fix writing of namedargs in custom attributes.
-
-2006-04-26  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Signatures/SignatureReader.cs:
-		Don't create tons of hashtables.
-
-2006-04-24  Jb Evain  <jbveain at gmail.com>
-
-       * Mono.Cecil.Cil/MethodBody.cs:
-               Fix cloning.
-
-2006-04-21  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/AssemblyFactory.cs
-	  Mono.Cecil.Binary/MemoryBinaryWriter.cs:
-		Use MemoryStream::WriteTo when it's possible.
-
-2006-04-21	Rodrigo B. de Oliveira	<rodrigobamboo at gmail.com>
-
-	* Mono.Cecil/SecurityDeclaration.cs
-	  Mono.Cecil/ISecurityDeclaration.cs
-	  Mono.Cecil/SecurityDeclarationCollection.cs
-	  Mono.Cecil/ModuleDefinition.cs:
-	  	Patch by Almann T. Goo (almann.goo at gmail.com) conditionally
-		removing references to PermissionSet when compiling for the CompactFramework.
-
-	* Mono.Cecil/CompactFrameworkCompatibility.cs:
-		System.Security.PermissionSet definition no longer needed.
-
-2006-04-21  Jb Evain  <jbevain at gmail.com>
-
-	* *Collection.cs:
-		Fix typo in RemoveAt.
-
-2006-04-20  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ReflectionWriter.cs:
-		Fix writing of complex arrays.
-		Now we roundtrip SharpDevelop.
-
-	* Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil/TableComparers.cs:
-		Ensure <Module> will always be the first type.
-		Fix roundtrip of Nemerle.
-
-2006-04-19  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Cil/CodeWriter.cs:
-		Handle the case where an handler points after the last
-		instruction. Now we roundtrip db4o.
-
-	* Mono.Cecil/IIndexedCollection.cs:
-	  *Collection.cs:
-		Make every collection implement an indexed collection.
-
-2006-04-15  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/CustomAttribute.cs:
-		Fix handling of types.
-
-2006-04-11  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/FieldDefinition.cs
-	  Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/TypeDefinition.cs
-	  Mono.Cecil/IField.cs
-	  Mono.Cecil/ITypeDefinition.cs
-	  Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil/AggressiveReflectionReader.cs
-	  Mono.Cecil.Cil/IVariable.cs
-	  Mono.Cecil.Cil/MethodBody.cs
-	  Mono.Cecil.Cil/VariableDefinition.cs
-	  Mono.Cecil.Cil/CodeWriter.cs:
-		Don't use interfaces internally.
-
-	* Mono.Cecil/TypeReference.cs:
-		Make TypeReference extend MemberReference.
-
-	* Mono.Cecil/Modifiers.cs
-	  Mono.Cecil.Cil/CodeReader.cs
-	  Mono.Cecil.Cil/CodeWriter.cs
-	  Mono.Cecil.Signatures/LocalVarSig.cs
-	  Mono.Cecil.Signatures/SignatureReader.cs:
-		Fix modifiers on localvar signatures.
-		Fix roundtrip of delphi assemblies.
-
-	* Mono.Cecil/CustomAttribute.cs
-	  Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil.Signatures/SignatureWriter.cs:
-		Work on complex custom attributes encoding.
-
-	* Mono.Cecil/TableComparers.cs:
-		Style.
-
-2006-04-09  Eyal Alaluf  <eyala at mainsoft.com>
-
-    * Mono.Cecil/ReflectionReader.cs
-	    Cannot assume that TypeRefs are ordered is such a way that an outer
-		class index comes always before all its inner classes.
-
-2006-04-06  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil.Signatures/SignatureWriter.cs:
-		Clean up things a little bit prior ending
-		custom attribute encoding.
-
-	* Mono.Cecil/ReflectionWriter.cs:
-		Write custom attributes of parameters
-		onyl when all methods have their tokens.
-
-	* Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil/AggressiveReflectionReader.cs:
-		Handle custom attributes on generic parameters.
-
-2006-04-05  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ReflectionWriter.cs:
-		Ensure the param[0] is written when it should be.
-
-2006-04-04  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ReflectionHelper.cs:
-		Remove an unused hack.
-
-	* Mono.Cecil/AssemblyInfo.cs: Go 0.4.1
-
-	* Mono.Cecil.Metadata/MetadataHeap.cs
-	  Mono.Cecil.Metadata/MetadataStream.cs:
-		Read #- stream has well.
-
-	* Mono.Cecil/ReflectionHelper.cs:
-		Implement Import stuff for System.Type and SR.*
-
-2006-04-03	Rodrigo B. de Oliveira	<rodrigobamboo at gmail.com>
-
-	* Mono.Cecil/SecurityDeclarationReader.cs
-	  Mono.Cecil/TypeReferenceCollection.cs
-	  Mono.Cecil/CompactFrameworkCompatibility.cs
-	  Mono.Cecil/AssemblyFactory.cs
-	  Mono.Cecil/AssemblyName.cs
-	  Mono.Cecil/ExternTypeCollection.cs
-	  Mono.Cecil/TypeDefinitionCollection.cs
-	  CodeGen/templates/NamedCollectionImplem.cs
-	  Mono.Cecil.Metadata/CultureUtils.cs
-	  cecil.build:
-		CompactFramework 2.0 support through CF_2_0 compilation symbol.
-
-2006-04-03  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.dll.sources
-	  Mono.Cecil/GenericParameter.cs
-	  Mono.Cecil/ReflectionHelper.cs
-	  Mono.Cecil/FieldDefinition.cs
-	  Mono.Cecil/CustomAttribute.cs
-	  Mono.Cecil/TypeDefinition.cs
-	  Mono.Cecil/IModuleDefinition.cs
-	  Mono.Cecil/ImportContext.cs
-	  Mono.Cecil/AssemblyName.cs
-	  Mono.Cecil/MethodDefinition.cs
-	  Mono.Cecil/EventDefinition.cs
-	  Mono.Cecil/ModuleDefinition.cs
-	  Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil/GenericContext.cs
-	  Mono.Cecil/ParameterDefinition.cs
-	  Mono.Cecil/PropertyDefinition.cs
-	  Mono.Cecil.Cil/MethodBody.cs:
-		Work on generic assemblies manipulation via
-		import stuff.
-
-2006-03-31  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/AssemblyFlags.cs:
-		Add a Retargetable flag used on the CF.
-
-2006-03-30  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/SecurityDeclarationReader.cs:
-		Don't crash if the declaration is empty.
-
-	* Mono.Cecil/ParamAttributes.cs:
-		Update the Optional flag.
-	  Mono.Cecil/ReflectionWriter.cs:
-		Fix the encoding of nullref.
-		Fixes #77959. Based on a patch by
-		Armand Du Plessis < armand at dotnet.org.za>
-
-2006-03-29  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/IHasSecurity.cs
-	  Mono.Cecil/IHasConstant.cs
-	  Mono.Cecil/IHasMarshalSpec.cs:
-	  Mono.Cecil/MethodReturnType.cs
-	  Mono.Cecil/AssemblyDefinition.cs:
-		Implement IMetadataTokenProvider.
-
-	* Mono.Cecil/StructureReader.cs
-	  Mono.Cecil/ReflectionWriter.cs:
-		Use more the token providers.
-
-2006-03-28  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/MarshalDesc.cs
-	  Mono.Cecil/IMarshalSpec.cs
-	  Mono.Cecil/ReflectionWriter.cs:
-		Fix round-tripping of assemblies using
-		COM stuff.
-
-2006-03-27  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Metadata/MetadataToken.cs:
-		Override GetHashCode as we override Equals.
-
-	* Mono.Cecil/TableComparers.cs:
-		Fix the ordering of generic parameters.
-		This revision roundtrips C5. Yeah!
-
-	* Mono.Cecil/ReflectionWriter.cs:
-		Fix method spec "caching"
-	  Mono.Cecil.Cil/OpCode.cs:
-		Override ToString ();
-	  Mono.Cecil.Metadata/MetadataToken.cs:
-		Implement operator ==
-
-	* Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil/TableComparers.cs:
-		Better handling of generic tables sorting.
-
-	* Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil/TableComparers.cs:
-		Sort generic tables as well.
-
-2006-03-27	Rodrigo B. de Oliveira	<rodrigobamboo at gmail.com>
-	* Mono.Cecil.Metadata/MetadataWriter.cs:
-		Use CompactFramework compatible version of
-		System.Convert.ToBase64String.
-
-2006-03-27  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.dll.sources
-	  Mono.Cecil/GenericParameter.cs
-	  Mono.Cecil/ConstraintCollection.cs
-	  Mono.Cecil/IGenericParameter.cs
-	  Mono.Cecil/IConstraintCollection.cs
-	  CodeGen/cecil.xml:
-		Add a ConstraintCollection to be used within
-		generic parameters.
-
-	* Mono.Cecil/GenericInstanceType.cs:
-		Correctly return if the instance is a value type
-		or not.
-
-2006-03-25  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ModuleDefinition.cs:
-		Support the unreadable security declarations
-		when converting one to byte [].
-
-	* Mono.Cecil/IModuleDefinition.cs
-	  Mono.Cecil/ModuleDefinition.cs
-	  Mono.Cecil/ReflectionWriter.cs:
-		Add a FullLoad method on a module.
-
-	* Mono.Cecil/StructureWriter.cs
-	  Mono.Cecil/ReflectionWriter.cs:
-		Fix a  few bugs in generics type emitting.
-
-	* Mono.Cecil.Cil/CodeWriter.cs:
-		Cache local sig as well.
-
-2006-03-24  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ReflectionWriter.cs:
-		Cache method specs as well.
-
-	* CodeGen/templates/ImageWriter.cs
-	  Mono.Cecil.Metadata/MetadataWriter.cs
-	  Mono.Cecil.Binary/ImageWriter.cs:
-		Replace the foreach char pattern by
-		Encoding.GetBytes
-
-2006-03-23  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/TypeReferenceCollection.cs
-	  Mono.Cecil/ExternTypeCollection.cs
-	  Mono.Cecil/TypeDefinitionCollection.cs
-	  CodeGen/templates/NamedCollectionImplem.cs
-	  CodeGen/templates/ImageReader.cs:
-		Ensure type with the same name are added
-		to the collection.
-
-	* Mono.Cecil.Metadata/MetadataWriter.cs:
-		Ensure every blob signature is unique.
-
-	* Mono.Cecil/IModuleDefinition.cs
-	  Mono.Cecil/ModuleDefinition.cs:
-		Rename method to avoid confusion.
-
-2006-03-22  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Cil/CodeWriter.cs:
-		Precisely detect whether we emit fat seh or not.
-
-	* Mono.Cecil/ReflectionWriter.cs:
-		Avoid duplicates in the typespec table.
-
-2006-03-21  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ReflectionWriter.cs:
-		Correctly write generic parameters.
-
-	* Mono.Cecil/SecurityDeclarationReader.cs
-	  Mono.Cecil/SecurityDeclaration.cs
-	  Mono.Cecil/ReflectionWriter.cs:
-		Fix for security declarations reading on .net 2.0.
-
-	* Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/GenericContext.cs:
-		Fix test case RoundtripTestFixture.boo.
-
-2006-03-20  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Metadata/MetadataReader.cs:
-		#Strings heap is utf8, fix #77820.
-
-2006-03-08  Jb Evain  <jbevain at gmail.com>
-
-	* CodeGen/cecil-gen-tests.rb
-	  CodeGen/templates/Tests.cs:
-		Start of a very small infrastructure to use tests from
-		rotor/mono with Cecil.
-
-	* Mono.Cecil/IMethod.cs
-	  Mono.Cecil/TypeDefinition.cs
-	  Mono.Cecil/MethodDefinition.cs
-	  Mono.Cecil.Cil/CodeReader.cs
-	  Mono.Cecil.Cil/CodeWriter.cs:
-		Add support for the very special case ldarg 0.
-		Patch idea by Vladislav Spivak <spivak at mainsoft.com>
-
-2006-03-07  Jb Evain  <jbevain at gmail.com>
-
-	* CodeGen/templates/ImageReader.cs
-	  Mono.Cecil/AssemblyFactory.cs
-	  Mono.Cecil/StructureReader.cs
-	  Mono.Cecil.Binary/Image.cs
-	  Mono.Cecil.Binary/ImageReader.cs:
-		Allow users to get a loaded image using
-		Image.GetImage as they have no access to
-		the ImageReader.
-
-2006-03-06  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Signatures/SignatureReader.cs:
-		Fix array reading in custom attributes.
-
-2006-03-06  Joshua Tauberer <tauberer at for.net>
-
-	* Mono.Cecil/TypeAttributes.cs: Fixed typo
-	  in value for Abstract.
-
-2006-02-27  Jb Evain  <jbevain at gmail.com>
-
-	* CodeGen/templates/IndexedCollectionImplem.cs
-	  CodeGen/templates/IIndexedCollection.cs
-	  Mono.Cecil.Cil/InstructionCollection.cs
-	  Mono.Cecil.Cil/IInstructionCollection.cs:
-		Small API fix, prevent the user from not using
-		the CilWorker.
-
-	* Mono.Cecil.Cil/CodeReader.cs
-	  Mono.Cecil.Cil/Label.cs:
-		Remove Label.
-
-	* Mono.Cecil/ReflectionReader.cs:
-		Fix typo.
-
-2006-02-20  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Signatures/SignatureWriter.cs:
-		Fix a bug when a value is null in a custom attribute.
-
-2006-02-20  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* Mono.Cecil.Metadata/MetadataWriter.cs:
-		Fix GetStrongNameSignatureSize to handle the ECMA pseudo-key.
-
-2006-02-07  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/AssemblyInfos.cs:
-		Tag this version 0.3, as users are happy with it.
-
-2006-01-26  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/CustomAttribute.cs:
-		Fix cloning of non readable attributes.
-
-	* Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil.Signatures/MethodRefSig.cs
-	  Mono.Cecil.Signatures/SignatureWriter.cs
-	  Mono.Cecil.Signatures/MethodDefSig.cs:
-		Work on generics.
-
-	* Mono.Cecil/ArrayType.cs
-	  Mono.Cecil/ReferenceType.cs
-	  Mono.Cecil/PointerType.cs:
-		Fix names of typespecs.
-
-	* Mono.Cecil/TypeReferenceCollection.cs
-	  Mono.Cecil/ExternTypeCollection.cs
-	  CodeGen/templates/NamedCollectionImplem.cs:
-		Allow multiple key by names in type references.
-
-2006-01-25  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/AssemblyFactory.cs:
-		Don't trap exceptions.
-
-	* Mono.Cecil/GenericParameter.cs
-	  Mono.Cecil/IMethod.cs
-	  Mono.Cecil/GenericInstanceType.cs
-	  Mono.Cecil/TypeReference.cs
-	  Mono.Cecil/GenericInstanceMethod.cs
-	  Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/TypeDefinition.cs
-	  Mono.Cecil/IGenericArgumentCollection.cs
-	  Mono.Cecil/ITypeReference.cs
-	  Mono.Cecil/IGenericInstance.cs
-	  Mono.Cecil/GenericArgumentCollection.cs
-	  Mono.Cecil/MethodDefinition.cs
-	  Mono.Cecil/MethodReference.cs
-	  Mono.Cecil/ITypeDefinition.cs
-	  Mono.Cecil/IGenericArgumentProvider.cs
-	  Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil/GenericContext.cs
-	  CodeGen/cecil.xml:
-		Clean the generic api. This is not stable yet.
-
-2006-01-24  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ArrayType.cs:
-		Bug reported by  Vladislav Spivak (spivak at mainsoft.com).
-		Fix a bug in array handling.
-	* Mono.Cecil/ConstructorCollection.cs
-	  CodeGen/templates/IndexedCollectionImplem.cs:
-		Bug reported by Oleg Varchovsky (olegv at mainsoft.com).
-		Fix the lookup of constructors.
-
-2006-01-19  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/AssemblyName.cs:
-		Fix computation of public key token.
-
-2006-01-18  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Cil/CodeWriter.cs
-	  Mono.Cecil.Metadata/MetadataToken.cs:
-		Add an use an ToUInt method and use it.
-	  CodeGen/templates/DebugHeader.cs
-	  Mono.Cecil.Binary/DebugHeader.cs:
-		Fix the size of the debug header.
-
-	* Mono.Cecil/ModuleReference.cs
-	  Mono.Cecil/AssemblyName.cs
-	  Mono.Cecil/StructureReader.cs
-	  Mono.Cecil/IMetadataScope.cs:
-		Make IMetadataScope implement IMetadataTokenProvider.
-	* Mono.Cecil/ReflectionWriter.cs:
-		Fix a typo when saving nested type refs.
-
-2006-01-17  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ArrayType.cs
-	  Mono.Cecil/ArrayDimension.cs
-	  Mono.Cecil/ReflectionWriter.cs:
-		End arrays support.
-
-2006-01-03  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/GenericParameter.cs
-	  Mono.Cecil/ReflectionHelper.cs
-	  Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/GenericContext.cs:
-		Work on generics.
-
-2005-12-31  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ReflectionHelper.cs:
-		Fix import of type specs.
-
-2005-12-30  Jb Evain  <jbevain at gmail.com>
-
-	* CodeGen/templates/ImageReader.cs
-	  Mono.Cecil.Metadata/MetadataReader.cs
-	  Mono.Cecil.Binary/Image.cs
-	  Mono.Cecil.Binary/ImageReader.cs:
-		Add support to assemblies where the metadata is defined
-		outside of the text section. (c++/cli /safe for instance)
-
-2005-12-23  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/AssemblyInfo.cs:
-		Version 0.2.2.2 devel.
-
-	* Mono.Cecil/AssemblyInfo.cs:
-		Version 0.2 to be released.
-
-	* Mono.Cecil/ReflectionWriter.cs:
-		IGenericInstance are typespecs as well.
-
-	* Mono.Cecil/ArrayType.cs:
-		Add a single dimension in the default ctor.
-	* Mono.Cecil/ReflectionReader.cs:
-		Don't manually add the default dimension as it's done
-		int the array type ctor.
-	* Mono.Cecil/ReflectionHelper.cs:
-		Import type specs.
-
-2005-12-22  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ReflectionWriter:
-		Write pinvoke infos as well.
-
-	* Mono.Cecil/ReflectionReader.cs:
-		Unsure that primitive value types are viewed as
-		value types.
-
-	* CodeGen/templates/Section.cs
-	  CodeGen/templates/ImageReader.cs
-	  Mono.Cecil.Metadata/MetadataReader.cs
-	  Mono.Cecil.Binary/Image.cs
-	  Mono.Cecil.Binary/Section.cs
-	  Mono.Cecil.Binary/ImageReader.cs:
-		Simplify the way you read binary data whithin
-		high level layer.
-
-	* Mono.Cecil.Cil/CodeReader.cs:
-		Make helper methods public static.
-	* Mono.Cecil/ReflectionReader.cs:
-		Don't try to get the entry point method
-		if it don't point on a valid method RID.
-
-	* CodeGen/templates/NamedCollectionImplem.cs
-	  Mono.Cecil/ExternTypeCollection.cs
-	  Mono.Cecil/TypeDefinitionCollection.cs
-	  Mono.Cecil/TypeReferenceCollection.cs:
-		Don't add existing values.
-
-	* Mono.Cecil/ModuleDefinition.cs:
-		Protect import from null refs.
-
-2005-12-21  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/StructureWriter.cs:
-		Don't increment pdb age. Not Cecil's job.
-
-	* Mono.Cecil.Cil/ICilWorker.cs
-	  Mono.Cecil.Cil/CilWorker.cs:
-		Add a new replace method.
-
-2005-12-20  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/StructureWriter.cs:
-		Ensure every assembly reference is processed.
-
-	* Mono.Cecil/ReflectionHelper.cs:
-		Don't assume the cache is magically loaded.
-		Aka: most stupid bug of the year.
-
-2005-12-19  Jb Evain  <jbevain at gmail.com>
-
-	* CodeGen/templates/DebugHeader.cs
-	  Mono.Cecil.Binary/DebugHeader.cs
-	  Mono.Cecil.Binary/DebugStoreType.cs:
-		New files to store debug header infos.
-	* Mono.Cecil.dll.sources: updated
-	* CodeGen/cecil.xml
-	  CodeGen/cecil-gen.rb
-	  Mono.Cecil/StructureWriter.cs
-	  Mono.Cecil.Binary/IBinaryVisitor.cs
-	  Mono.Cecil.Binary/ImageWriter.cs
-	  Mono.Cecil.Binary/Image.cs
-	  Mono.Cecil.Binary/ImageInitializer.cs
-	  Mono.Cecil.Binary/BaseImageVisitor.cs
-	  Mono.Cecil.Binary/ImageReader.cs
-	  Mono.Cecil.Metadata/MetadataWriter.cs:
-		Read and write debug header.
-
-	* CodeGen/templates/ImageWriter.cs
-	  Mono.Cecil.Binary/ImageWriter.cs:
-		Revert revision 54409.
-
-2005-12-14  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Cil/ICilWorker.cs
-	  Mono.Cecil.Cil/CilWorker.cs:
-		Add a remove method.
-
-	* CodeGen/templates/ImageWriter.cs
-	  Mono.Cecil.Binary/ImageWriter.cs:
-		Don't allocate potential big arrays here.
-
-2005-12-13  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Metadata/MetadataWriter.cs:
-		Set the correct version for .net 2 assemblies.
-		Correctly write embedded resources.
-		Fix #76963.
-
-2005-12-03  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/MethodSpecification.cs:
-		Override the declaring type and the name property to
-		match the inner method.
-	* Mono.Cecil/GenericInstanceType.cs:
-		Correctly set the FullName.
-	* Mono.Cecil/GenericInstanceMethod.cs:
-		Style.
-
-2005-12-02  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/TypeDefinition.cs:
-		Fix interface import. Patch by Thomas Gil.
-
-2005-11-24  Jb Evain  <jbevain at gmail.com>
-
-	* CodeGen/cecil-gen.rb
-	  CodeGen/templates/MetadataTableReader.cs
-	  CodeGen/templates/PEFileHeader.cs
-	  CodeGen/templates/CLIHeader.cs
-	  CodeGen/templates/PEOptionalHeader.cs
-	  CodeGen/templates/Table.cs
-	  CodeGen/templates/MetadataRowReader.cs
-	  CodeGen/templates/OpCodes.cs
-	  CodeGen/templates/Section.cs
-	  CodeGen/templates/ImageReader.cs:
-		Update the codegen engine so that everyone can run it
-		without having to install a dependency (eruby).
-
-	* Mono.Cecil.Metadata/Utilities.cs: re-codegenerated.
-
-2005-11-23  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/IGenericArgumentProvider.cs
-		Style.
-	* CodeGen/cecil.xml:
-		Mirror Martin's change in the codegen engine.
-
-2005-11-23  Martin Baulig  <martin at ximian.com>
-
-	Generics API changes:
-	TypeReference and MethodReference now contain a
-	`GenericArguments' property (of type `GenericArgumentCollection')
-	and `GenericParameters' is moved into TypeDefinition/MethodDefinition.
-
-	* Mono.Cecil/IGenericArgumentProvider.cs: New file.
-	(IGenericArgumentProvider): New public interface.
-
-	* Mono.Cecil/IGenericArgumentCollection.cs
-	(IGenericArgumentCollection.Container): Changed type from
-	`IGenericInstance' -> `IGenericArgumentProvider'.
-
-	* Mono.Cecil/IGenericInstance.cs
-	(IGenericInstance.Arguments): Renamed to `GenericArguments'.
-
-	* Mono.Cecil/ITypeReference.cs
-	(ITypeReference): Implement `IGenericArgumentProvider' instead of
-	`IGenericParameterProvider'.
-
-	* Mono.Cecil/ITypeDefinition.cs
-	(ITypeDefinition): Implement `IGenericParameterProvider'.
-
-	* Mono.Cecil/IMethod.cs
-	(IMethodReference): Implement `IGenericArgumentProvider' instead of
-	`IGenericParameterProvider'.
-	(IMethodDefinition): Implement `IGenericParameterProvider'.
-
-	* Mono.Cecil/TypeReference.cs
-	(TypeReference.GenericParameters): Removed.
-	(TypeReference.GenericArguments): New public property.
-
-	* Mono.Cecil/TypeDefinition.cs
-	(TypeDefinition.GenericParameters): New public property.
-	(TypeDefinition.OnGenericParameterAdded): If a generic parameter
-	is added, also add it to the `GenericArguments'.
-
-	* Mono.Cecil/MethodReference.cs
-	(MethodReference.GenericParameters): Removed.
-	(MethodReference.GenericArguments): New public property.
-
-	* Mono.Cecil/MethodDefinition.cs
-	(MethodDefinition.GenericParameters): New public property.
-	(MethodDefinition.OnGenericParameterAdded): If a generic parameter
-	is added, also add it to the `GenericArguments'.
-
-	* Mono.Cecil/GenericInstanceType.cs
-	(GenericInstanceType): Removed the `m_arguments' field; we now
-	inherit the `GenericArguments' property from `TypeReference'.
-
-	* Mono.Cecil/GenericInstanceMethod.cs
-	(GenericInstanceMethod): Removed the `m_arguments' field; we now
-	inherit the `GenericArguments' property from `MethodReference'.
-
-	* Mono.Cecil/GenericContext.cs
-	(GenericContext): We now operate on type/method references and not
-	definitions.
-	(GenericContext.Type): Changed type to `TypeReference'.
-	(GenericContext.Method): Changed type to `MethodReference'.
-
-2005-11-23  Martin Baulig  <martin at ximian.com>
-
-	* Mono.Cecil.Metadata/TokenType.cs: Added `GenericParam'.
-
-	* Mono.Cecil.Metadata/Utilities.cs
-	(GetMetadataToken): In `case CodedIndex.HasCustomAttribute', add
-	`TokenType.GenericParam'.
-
-2005-11-22  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/IMethodDefinitionCollection.cs
-	  Mono.Cecil/MethodDefinitionCollection.cs
-	  CodeGen/templates/IndexedCollectionImplem.cs
-	  CodeGen/templates/IIndexedCollection.cs:
-		Add a new search method.
-	* CodeGen/templates/NamedCollectionImplem.cs
-	  Mono.Cecil/TypeReferenceCollection.cs
-	  Mono.Cecil/ExternTypeCollection.cs
-	  Mono.Cecil/TypeDefinitionCollection.cs:
-		Style.
-
-2005-11-13	Rodrigo B. de Oliveira <rodrigobamboo at gmail.com>
-	* Mono.Cecil/ReflectionReader.cs
-		Fix for NRE when reading assemblies with a field initializer
-		pointing to a data section
-		(TestCases/Regression/OddInt64Initializer.dll).
-
-2005-11-11  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* Mono.Cecil.Metadata/MetadataWriter.cs
-		Add support for different strongname key size (between 384
-		and 16384 bits) as now supported in fx 2.0. Default is still
-		1024 bits.
-
-2005-11-10	Rodrigo B. de Oliveira <rodrigobamboo at gmail.com>
-	* Mono.Cecil/CompactFrameworkCompatibility.cs
-	  Mono.Cecil/SecurityDeclarationReader.cs
-	  Mono.Cecil/TypeReferenceCollection.cs
-	  Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/AssemblyFactory.cs
-	  Mono.Cecil/AssemblyName.cs
-	  Mono.Cecil/ExternTypeCollection.cs
-	  Mono.Cecil/ModuleDefinition.cs
-	  Mono.Cecil/TypeDefinitionCollection.cs
-	  CodeGen/templates/NamedCollectionImplem.cs
-	  CodeGen/templates/ImageReader.cs
-	  Mono.Cecil.Metadata/MetadataReader.cs
-	  Mono.Cecil.Metadata/MetadataWriter.cs
-	  Mono.Cecil.Metadata/CultureUtils.cs
-	  Mono.Xml/SecurityParser.cs
-	  Mono.Xml/SmallXmlParser.cs
-	  Mono.Cecil.Signatures/SignatureReader.cs
-	  Mono.Cecil.Binary/ImageReader.cs
-	  cecil.build
-	  	Implement support for compiling on the CompactFramework
-
-2005-11-08  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/GenericInstanceType.cs
-	  Mono.Cecil/TypeReference.cs:
-		Fix a regression with 2.0 assemblies.
-
-2005-11-03  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/CallSite.cs
-	  Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/ICallSite.cs
-	  Mono.Cecil.Cil/CodeReader.cs
-	  Mono.Cecil.Cil/CodeWriter.cs
-	  Mono.Cecil.Signatures/SignatureReader.cs
-	  Mono.Cecil.dll.sources:
-		Implement support for calli opcodes reading.
-
-2005-11-01  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/FunctionPointerType.cs
-	  Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil.Signatures/SignatureReader.cs:
-		Work on function pointers.
-
-	* Mono.Cecil/AssemblyInfo.cs:
-		Increase Cecil SVN version.
-
-	* Mono.Cecil/ArrayType.cs
-	  Mono.Cecil/MethodSpecification.cs
-	  Mono.Cecil/TypeSpecification.cs
-	  Mono.Cecil/IMethodSpecification.cs
-	  Mono.Cecil/GenericInstanceType.cs
-	  Mono.Cecil/IGenericInstanceType.cs
-	  Mono.Cecil/GenericInstanceMethod.cs
-	  Mono.Cecil/IModifierType.cs
-	  Mono.Cecil/IPinnedType.cs
-	  Mono.Cecil/ReferenceType.cs
-	  Mono.Cecil/IGenericInstanceMethod.cs
-	  Mono.Cecil/PinnedType.cs
-	  Mono.Cecil/PointerType.cs
-	  Mono.Cecil/IPointerType.cs
-	  Mono.Cecil/IReferenceType.cs
-	  Mono.Cecil/IArrayType.cs
-	  Mono.Cecil/ITypeSpecification.cs
-	  Mono.Cecil/Modifiers.cs
-	  Mono.Cecil.dll.sources:
-		Uniformize the specification model.
-
-2005-10-31  Jb Evain  <jbevain at gmail.com>
-
-	* AUTHORS,
-	  NEWS,
-	  README,
-	  TODO,
-	  Mono.Cecil/AssemblyInfo.cs:
-		Cecil 0.1 release.
-
-	* Mono.Cecil/ReflectionReader.cs:
-		Force value type property on known core types.
-
-2005-10-28  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/TypeReference.cs
-	  Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/TypeDefinition.cs
-	  Mono.Cecil/ModuleDefinition.cs
-	  Mono.Cecil/ReflectionWriter.cs:
-		Uniformize the API.
-
-	* Mono.Cecil.Signatures/SignatureWriter.cs:
-		Correct a bug in strings encoding in custom attributes.
-
-	* CodeGen/templates/ImageWriter.cs
-	  Mono.Cecil.Metadata/MetadataWriter.cs
-	  Mono.Cecil/StructureWriter.cs
-	  Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil.Binary/ImageWriter.cs:
-		Implement a big of public key management,
-		here we reserve space for the strong name
-		signature if needed.
-
-	* Mono.Cecil/StructureWriter.cs
-	  Mono.Cecil/StructureReader.cs:
-		Disable public key writing until
-		it is implemented.
-
-	* Mono.Cecil/GenericParameter.cs
-	  Mono.Cecil/TypeReference.cs
-	  Mono.Cecil/MethodReference.cs:
-		Work on generics writing api.
-	* Mono.Cecil/ReflectionReader.cs:
-		Fix a bug when defining a fresh assembly.
-
-	* Mono.Cecil/GenericInstanceType.cs
-	  Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil/IGenericParameterProvider.cs
-	  Mono.Cecil.Signatures/Var.cs
-	  Mono.Cecil.Signatures/MVar.cs
-	  Mono.Cecil.Signatures/SignatureReader.cs
-	  Mono.Cecil.Signatures/SignatureWriter.cs
-	  Mono.Cecil.Cil/CodeWriter.cs:
-		Work on generics writing.
-
-2005-10-27  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Cil/CodeReader.cs
-	  Mono.Cecil.Cil/CilWorker.cs
-	  Mono.Cecil.Cil/CodeWriter.cs
-	  Mono.Cecil.Cil/OpCode.cs:
-		Override op == and != on opcodes.
-
-	* Mono.Cecil/FieldDefinition.cs
-	  Mono.Cecil/TypeDefinition.cs
-	  Mono.Cecil/MethodDefinition.cs
-	  Mono.Cecil/EventDefinition.cs
-	  Mono.Cecil/PropertyDefinition.cs:
-		Fix setters working on attributes.
-
-	* Mono.Cecil.Cil/CodeWriter.cs:
-		Compute max stack before writing method.
-
-	* Mono.Cecil/GenericContext.cs
-	  Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil.Signatures/SignatureReader.cs:
-		Work on generics support.
-
-	* CodeGen/cecil.xml
-	  Mono.Cecil/ISecurityDeclarationCollection.cs
-	  Mono.Cecil/SecurityDeclarationCollection.cs:
-		Remove the security declaration from the codegen.
-
-2005-10-27  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* Mono.Cecil\SecurityDeclaration.cs
-		Copy the permission set when cloning.
-	* Mono.Cecil\SecurityDeclarationCollection.cs
-		Ajusted to use an Hashtable, to Union permission sets on
-		the same action and to set/unset HasSecurity when needed.
-	* Mono.Cecil\ModuleDefinition.cs:
-		Added TODO (remainder) for complete 2.0 format support.
-	* Mono.Cecil\ReflectionWriter.cs:
-		Move MetadataToken finding outside the loop.
-	* Mono.Cecil\ISecurityDeclarationCollection.cs:
-		Adjust interface.
-
-2005-10-27  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/TypeDefinition.cs
-	  Mono.Cecil/MethodDefinition.cs:
-		Add generics parameters in visitor path.
-
-	* Mono.Cecil/GenericParamAttributes.cs:
-		Add new constraints flags.
-
-2005-10-22  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/GenericParameter.cs
-	  Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/IGenericParameter.cs
-	  Mono.Cecil/AggressiveReflectionReader.cs
-	  Mono.Cecil/GenericContext.cs:
-		Support generic parameters constraints.
-
-2005-10-21  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/FieldDefinition.cs
-	  Mono.Cecil/CustomAttribute.cs
-	  Mono.Cecil/TypeDefinition.cs
-	  Mono.Cecil/SecurityDeclaration.cs
-	  Mono.Cecil/MethodDefinition.cs
-	  Mono.Cecil/EventDefinition.cs
-	  Mono.Cecil/ParameterDefinition.cs
-	  Mono.Cecil/PropertyDefinition.cs:
-		Implement ICloneable.
-
-	* Mono.Cecil/IAssemblyDefinition.cs:
-		Mirror changes on asm kind.
-	* Mono.Cecil/StructureReader.cs:
-		Fix asm kind detection.
-
-	* Mono.Cecil/StructureWriter.cs
-	  Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/MethodDefinition.cs
-	  Mono.Cecil/ReflectionWriter.cs:
-		Fix regressions.
-	* Mono.Cecil.Cil/MethodBody.cs:
-		Fix method cloning.
-
-	* CodeGen/templates/MetadataTableReader.cs
-	  Mono.Cecil.Metadata/MetadataTableReader.cs
-	  Mono.Cecil.Metadata/MetadataReader.cs:
-		Add helpers for reading.
-
-	* Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/MethodDefinition.cs
-	  Mono.Cecil/AggressiveReflectionReader.cs
-	  Mono.Cecil/GenericContext.cs:
-		Working on generic parameters reading.
-		Still have troubles reading a 2.0 corlib.
-
-	* Mono.Cecil/IHasMarshalSpec.cs:
-		API fix.
-
-	* Mono.Cecil/ParameterDefinition.cs
-	  Mono.Cecil.Cil/VariableDefinition.cs:
-		Override ToString.
-
-2005-10-20  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Cil/CodeReader.cs
-	  Mono.Cecil.Cil/CodeWriter.cs
-	  Mono.Cecil.Cil/ICilWorker.cs
-	  Mono.Cecil.Cil/CilWorker.cs:
-		ShortInlineI operands are signed.
-		Spotted by Rodrigo B. de Oliveira.
-
-	* CodeGen/templates/OpCodes.cs
-	  Mono.Cecil.Cil/OpCodes.cs:
-		Add 2.0 opcodes.
-
-	* Mono.Cecil/StructureWriter.cs
-	  Mono.Cecil/AssemblyDefinition.cs
-	  Mono.Cecil/AssemblyFactory.cs
-	  Mono.Cecil/StructureReader.cs
-	  Mono.Cecil/ReflectionWriter.cs:
-		Handle the assembly kind in a smoothie way.
-
-2005-10-19  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* Mono.Cecil/AssemblyDefinition.cs: Added an override for ToString to
-	ease debugging.
-	* Mono.Cecil/ModuleDefinition.cs: Make SecurityDeclaration works with
-	2.0 assemblies.
-	* Mono.Cecil/ReflectionReader.cs: Modified BuildSecurityDeclaration
-	to use the new SecurityDeclarationReader (supporting both formats).
-	* Mono.Cecil/SecurityAction.cs: Removed actions that were "cutted" out
-	of 2.0 final.
-	* Mono.Cecil/SecurityDeclarationReader.cs: New. Handle both the 1.x
-	and 2.0 formats for reading declarative security.
-
-2005-10-18  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/GenericParameter.cs:
-		A little change before the fix.
-
-	* Mono.Cecil/ReflectionHelper.cs
-	  Mono.Cecil/MethodDefinition.cs
-	  Mono.Cecil.Cil/MethodBody.cs:
-		Implement method cloning.
-
-	* Mono.Cecil/ModuleReference.cs
-	  Mono.Cecil/FieldDefinition.cs
-	  Mono.Cecil/TypeReference.cs
-	  Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/TypeDefinition.cs
-	  Mono.Cecil/EventDefinition.cs
-	  Mono.Cecil/ModuleDefinition.cs
-	  Mono.Cecil/FieldReference.cs
-	  Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil/PropertyDefinition.cs
-	  Mono.Cecil/AssemblyFactory.cs:
-		Small API change.
-
-	* Mono.Cecil.Cil/CodeReader.cs:
-		Fix variables names.
-
-	TODO before 0.1:
-		Fix generic parameters,
-		generic writing,
-		constructor changes (with S.Type and SR.*Info)
-
-2005-10-14  Jb Evain  <jbevain at gmail.com>
-
-	Work on generics support.
-
-	* CodeGen/cecil.xml: new collections, coded indexes, opcodes.
-
-	* Mono.Cecil/IGenericParameterCollection.cs
-	  Mono.Cecil/GenericParameterCollection.cs
-	  Mono.Cecil/IGenericArgumentCollection.cs
-	  Mono.Cecil/GenericArgumentCollection.cs:
-		Added new collections.
-
-	* Mono.Cecil.Metadata/Utilities.cs: updated.
-	* Mono.Cecil.Metadata/TokenType.cs: added MethodSpec.
-
-	* Mono.Cecil/IGenericParameter.cs
-	  Mono.Cecil/GenericParameter.cs
-	  Mono.Cecil/IGenericParameterConstraints.cs
-	  Mono.Cecil/GenericParameterConstraints.cs
-	  Mono.Cecil/IGenericParameterProvider.cs
-	  Mono.Cecil/IGenericInstance.cs
-	  Mono.Cecil/IGenericInstanceType.cs
-	  Mono.Cecil/GenericInstanceType.cs
-	  Mono.Cecil/IGenericInstanceMethod.cs
-	  Mono.Cecil/GenericInstanceMethod.cs:
-		Generics API elements.
-
-	* Mono.Cecil/IMethod.cs
-	  Mono.Cecil/MethodReference.cs
-	  Mono.Cecil/ITypeReference.cs
-	  Mono.Cecil/TypeReference.cs:
-		Implement IGenericParameterProvider
-
-	* Mono.Cecil/ReflectionReader.cs
-	  Mono.Cecil/IReflectionVisitor.cs
-	  Mono.Cecil/BaseReflectionVisitor.cs
-	  Mono.Cecil/StructureReader.cs
-	  Mono.Cecil/AggressiveReflectionReader.cs
-	  Mono.Cecil/MemberReference.cs:
-		Support for the new generics elements.
-
-	* Mono.Cecil.Signatures/Var.cs
-	  Mono.Cecil.Signatures/MVar.cs
-	  Mono.Cecil.Signatures/GenericInstSignature.cs
-	  Mono.Cecil.Signatures/GenericInst.cs:
-		Added file header.
-
-	* Mono.Cecil.Signatures/SignatureReader.cs
-	  Mono.Cecil.Signatures/GenericInstSignature.cs
-	  Mono.Cecil.Signatures/MethodDefSig.cs
-	  Mono.Cecil.Signatures/GenericInst.cs
-	  Mono.Cecil.Signatures/MethodSpec.cs
-	  Mono.Cecil/MethodCallingConvention.cs
-	  Mono.Cecil.Cil/CodeReader.cs:
-		Added support for generic signatures.
-
-	* Mono.Cecil.Cil/OpCodes.cs:
-		Add consrained. opcode.
-
-	* Mono.Cecil.dll.sources:
-		Updated.
-
-	Known problems: !!parameters
-
-2005-10-13  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ReflectionHelper.cs
-	  Mono.Cecil/FieldDefinition.cs
-	  Mono.Cecil/CustomAttribute.cs
-	  Mono.Cecil/MethodReturnType.cs
-	  Mono.Cecil/TypeDefinition.cs
-	  Mono.Cecil/SecurityDeclaration.cs
-	  Mono.Cecil/MethodDefinition.cs
-	  Mono.Cecil/EventDefinition.cs
-	  Mono.Cecil/ModuleDefinition.cs
-	  Mono.Cecil/ParameterDefinition.cs
-	  Mono.Cecil/IMethodReturnType.cs
-	  Mono.Cecil/PropertyDefinition.cs
-	  Mono.Cecil.Cil/MethodBody.cs:
-		Work on the import.
-	* Mono.Cecil/ITypeParameterType.cs
-	  Mono.Cecil/TypeParameterType.cs:
-		Correct the interface.
-
-2005-10-12  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/EventDefinition.cs
-	  Mono.Cecil/TypeDefinition.cs
-	  Mono.Cecil/ModuleDefinition.cs
-	  Mono.Cecil/ReflectionWriter.cs
-	  Mono.Cecil/PropertyDefinition.cs:
-		Small fixes.
-
-2005-09-16  Martin Baulig  <martin at ximian.com>
-
-	Added generics support to Cecil.
-
-	* Mono.Cecil/IGenericInstType.cs: New file.
-	* Mono.Cecil/ITypeParameterType.cs: New file.
-	* Mono.Cecil/IMethodTypeParameterType.cs: New file.
-
-	* Mono.Cecil.Metadata/ElementType.cs
-	(ElementType): Added `Var', `MVar' and `GenericInst'.
-
-	* Mono.Cecil.Metadata/Utilities.cs
-	(Utilities.GetMetadataToken): .NET 2.0 also uses TypeDef's in the
-	MemberRefParent.
-
-	* Mono.Cecil/GenericInstType.cs: New file.
-	* Mono.Cecil/MethodTypeParameterType.cs: New file.
-	* Mono.Cecil/TypeParameterType.cs: New file.
-
-	* Mono.Cecil.Signatures/Var.cs: New file.
-	* Mono.Cecil.Signatures/MVar.cs: New file.
-	* Mono.Cecil.Signatures/GenericInst.cs: New file.
-	* Mono.Cecil.Signatures/GenericInstSignature.cs: New file.
-
-	* Mono.Cecil/ReflectionReader.cs
-	(ReflectionReader.GetTypeRefFromSig): Add the new types.
-
-	* Mono.Cecil.Signatures/SignatureReader.cs
-	(SignatureReader.ReadType): Add the new types.
-
-2005-10-06  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ReflectionHelper.cs
-	  Mono.Cecil/ModuleDefinition.cs:
-		Fix a bug in type importing.
-
-2005-10-06  Jb Evain  <jbevain at gmail.com>
-
-	* Hopefully, this is the last API change before the release of Cecil 0.1.
-	  Mono.Cecil.Implem has been moved to Mono.Cecil. The interfaces where
-	  very convenient for a reading API, it was far less convenient for a
-	  modification and writing one. The modification API still needs some work,
-	  but this should be easier this way.
-
-2005-09-27  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Metadata/MetadataReader.cs:
-		Fix resources reading.
-
-	* Mono.Cecil.Implem/StructureWriter.cs:
-		Correctly set the offset of resources in the manifest.
-	* Mono.Cecil.Implem/StructureFactories.cs:
-		Use correct overrides when creating assembly references.
-	* Mono.Cecil.Implem/ReflectionFactories:
-		Correctly create type references.
-
-2005-09-06  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/IReflectionFactories.cs
-	  Mono.Cecil.Implem/ReflectionFactories.cs:
-		Allow the creation of reference types for methods
-		parameters and return types.
-	* Mono.Cecil.Cil/ICilWorker.cs
-	  Mono.Cecil.Implem/CilWorker.cs
-	  Mono.Cecil.Implem/CodeReader.cs
-	  Mono.Cecil.Implem/CodeWriter.cs:
-		Global fix on the handling of parameters in instructions.
-	* Mono.Cecil.Implem/AssemblyName.cs:
-		Correcty write the version of an assembly fullname.
-		Spotted by Bruno Cabral.
-	* Mono.Cecil.Implem/TypeDefinition.cs:
-		Set the declaring type of a nested type on add.
-	* Mono.Cecil.Implem/CustomAttribute.cs
-	  Mono.Cecil.Implem/ReflectionReader.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs
-	  Mono.Cecil.Implem/AggressiveReflectionReader.cs
-	  Mono.Cecil.Signatures/CustomAttrib.cs
-	  Mono.Cecil.Signatures/SignatureReader.cs:
-		Global fix on custom attribute handling. Some
-		custom attribute (containing enums) blobs can not be
-		decoded.
-
-2005-09-04  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Implem/Instruction.cs:
-		Add the setter for IInstruction::OpCode.
-
-2005-09-02  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ICustomAttribute.cs
-	  Mono.Cecil.Implem/ReflectionFactories.cs
-	  Mono.Cecil.Implem/CustomAttribute.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs
-	  Mono.Cecil.Signatures/SignatureWriter.cs:
-		Prepare the work on custom attributes.
-	* Mono.Cecil.Cil/IInstruction.cs:
-		Let users modify the content of an instruction.
-	* Mono.Cecil.Implem/StructureReader.cs:
-		Do not try to read 2.0 assemblies.
-
-2005-08-28  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Metadata/MetadataWriter.cs:
-		Write the fields initial value back.
-		As of this revision, a round tripped mcs
-		can compile Cecil.
-
-	* Mono.Cecil.Implem/ReflectionWriter.cs:
-		Emit things in proper order.
-	  Mono.Cecil.Implem/CodeReader.cs
-	  Mono.Cecil.Implem/CodeWriter.cs:
-		Correct bug with InlineVar opcodes.
-		Emit fat body if maxstack is set.
-
-	* Mono.Cecil.Implem/CodeWriter.cs:
-		Handle null tokens.
-	  Mono.Cecil.Metadata/MetadataWriter.cs:
-		Allow one empty string in the userstring heap.
-
-	* Mono.Cecil.Implem/ReflectionReader.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs:
-		Strings constant are unicode.
-
-	* Mono.Cecil/LoadingType.cs
-	  Mono.Cecil/AssemblyFactory.cs
-	  CodeGen/templates/IndexedCollectionImplem.cs
-	  CodeGen/templates/LzIndexedCollectionImplem.cs
-	  CodeGen/cecil.xml
-	  Mono.Cecil.Implem/InterfaceCollection.cs
-	  Mono.Cecil.Implem/ILazyLoadable.cs
-	  Mono.Cecil.Implem/ExternTypeCollection.cs
-	  Mono.Cecil.Implem/SecurityDeclarationCollection.cs
-	  Mono.Cecil.Implem/ReflectionHelper.cs
-	  Mono.Cecil.Implem/OverrideCollection.cs
-	  Mono.Cecil.Implem/EventDefinitionCollection.cs
-	  Mono.Cecil.Implem/FieldDefinitionCollection.cs
-	  Mono.Cecil.Implem/PropertyDefinitionCollection.cs
-	  Mono.Cecil.Implem/CustomAttributeCollection.cs
-	  Mono.Cecil.Implem/MethodDefinition.cs
-	  Mono.Cecil.Implem/EventDefinition.cs
-	  Mono.Cecil.Implem/FieldDefinition.cs
-	  Mono.Cecil.Implem/ModuleDefinition.cs
-	  Mono.Cecil.Implem/ReflectionController.cs
-	  Mono.Cecil.Implem/TypeReference.cs
-	  Mono.Cecil.Implem/ReflectionReader.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs
-	  Mono.Cecil.Implem/AssemblyDefinition.cs
-	  Mono.Cecil.Implem/TypeDefinition.cs
-	  Mono.Cecil.Implem/AggressiveReflectionReader.cs
-	  Mono.Cecil.Implem/MethodDefinitionCollection.cs
-	  Mono.Cecil.Implem/LazyReflectionReader.cs
-	  Mono.Cecil.Implem/ParameterDefinition.cs
-	  Mono.Cecil.Implem/PropertyDefinition.cs
-	  Mono.Cecil.Implem/ConstructorCollection.cs
-	  Mono.Cecil.Signatures/SignatureWriter.cs:
-		Get rid of the complexity introduced by the
-		internal lazy loading.
-
-	* Mono.Cecil.Implem/EventDefinition.cs
-	  Mono.Cecil.Implem/PropertyDefinition.cs:
-		Fix the behavior of .ToString ().
-
-2005-08-27  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Implem/ReflectionWriter.cs:
-		Write back custom attributes of modules and assemblies
-		as well as their security declaration.
-	* Mono.Cecil.Implem/CodeWriter.cs:
-		Fix branches computation.
-	  Mono.Cecil.Signatures/SignatureReader.cs:
-		Disable custom attribute reading cache.
-
-	* CodeGen/templates/ImageWriter.cs
-	  Mono.Cecil.Binary/ImageWriter.cs:
-		Compute relocations.
-	* Mono.Cecil.Implem/ReflectionFactories.cs:
-		Blah.
-
-	* Mono.Cecil.Implem/TablesComparer.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs:
-		Sort all tables that need to be sorted.
-
-	* Mono.Cecil.Implem/CodeReader.cs:
-		Oops. Add fat exception handlers to the method body.
-
-	* CodeGen/templates/ImageWriter.cs
-	  Mono.Cecil.Implem/StructureWriter.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs
-	  Mono.Cecil.Implem/TypeDefinition.cs
-	  Mono.Cecil.Binary/ImageWriter.cs:
-		Correct a few bugs: relocations now works.
-		Encode enums in custom attributes.
-		Compute memberrefs tokens before visitings types.
-
-	* Mono.Cecil.Implem/FieldDefinition.cs:
-		Correct a bug that causes null ref due to
-		the new api.
-	* Mono.Cecil.Signatures/SignatureWriter.cs:
-		Implement a very little more custom attributes
-		writing.
-
-2005-08-26  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/IMemberReferenceCollection.cs
-	  Mono.Cecil/IReflectionVisitor.cs
-	  Mono.Cecil/IReflectionFactories.cs
-	  Mono.Cecil/BaseReflectionVisitor.cs
-	  Mono.Cecil/IModuleDefinition.cs
-	  CodeGen/cecil.xml
-	  Mono.Cecil.Implem/ReflectionFactories.cs
-	  Mono.Cecil.Implem/ReflectionHelper.cs
-	  Mono.Cecil.Implem/ModuleDefinition.cs
-	  Mono.Cecil.Implem/MemberReferenceCollection.cs
-	  Mono.Cecil.Implem/ReflectionReader.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs
-	  Mono.Cecil.Implem/ParameterDefinition.cs:
-		Handle member references nicely.
-
-	* Mono.Cecil/ICustomAttributeProvider.cs
-	  Mono.Cecil/IModuleDefinitionCollection.cs
-	  Mono.Cecil/IReflectionStructureFactories.cs
-	  Mono.Cecil/IInterfaceCollection.cs
-	  Mono.Cecil/IMethod.cs
-	  Mono.Cecil/IReflectionFactories.cs
-	  Mono.Cecil/INestedTypeCollection.cs
-	  Mono.Cecil/ITypeReferenceCollection.cs
-	  Mono.Cecil/IExternTypeCollection.cs
-	  Mono.Cecil/IAssemblyDefinition.cs
-	  Mono.Cecil/ITypeDefinition.cs
-	  Mono.Cecil/ICustomAttribute.cs
-	  Mono.Cecil/IArrayDimensionCollection.cs
-	  Mono.Cecil/TypeFactory.cs
-	  Mono.Cecil/IConstructorCollection.cs
-	  Mono.Cecil/IHasSecurity.cs
-	  Mono.Cecil/IMethodDefinitionCollection.cs
-	  Mono.Cecil/IPropertyDefinitionCollection.cs
-	  Mono.Cecil/IAssemblyNameReferenceCollection.cs
-	  Mono.Cecil/IModuleReferenceCollection.cs
-	  Mono.Cecil/IArrayType.cs
-	  Mono.Cecil/ISecurityDeclarationCollection.cs
-	  Mono.Cecil/IModuleDefinition.cs
-	  Mono.Cecil/IResourceCollection.cs
-	  Mono.Cecil/IParameterDefinitionCollection.cs
-	  Mono.Cecil/IEventDefinitionCollection.cs
-	  Mono.Cecil/ITypeDefinitionCollection.cs
-	  Mono.Cecil/IFieldDefinitionCollection.cs
-	  Mono.Cecil/ICustomAttributeCollection.cs
-	  Mono.Cecil/ISecurityDeclaration.cs
-	  Mono.Cecil/IOverrideCollection.cs
-	  Mono.Cecil/ITypeReference.cs
-	  Mono.Cecil.Cil/IExceptionHandlerCollection.cs
-	  Mono.Cecil.Cil/IVariableDefinitionCollection.cs
-	  Mono.Cecil.Cil/IInstructionCollection.cs
-	  Mono.Cecil.Cil/IMethodBody.cs
-	  CodeGen/cecil-gen-types.rb
-	  CodeGen/templates/ImageWriter.cs
-	  CodeGen/templates/IndexedCollectionImplem.cs
-	  CodeGen/templates/NamedCollectionImplem.cs
-	  CodeGen/templates/IIndexedCollection.cs
-	  CodeGen/templates/LzIndexedCollectionImplem.cs
-	  CodeGen/templates/INamedCollection.cs
-	  CodeGen/templates/LzNamedCollectionImplem.cs
-	  Mono.Cecil.Implem/InterfaceCollection.cs
-	  Mono.Cecil.Implem/AssemblyLinkedResource.cs
-	  Mono.Cecil.Implem/ModuleReferenceCollection.cs
-	  Mono.Cecil.Implem/ExternTypeCollection.cs
-	  Mono.Cecil.Implem/SecurityDeclarationCollection.cs
-	  Mono.Cecil.Implem/ReflectionFactories.cs
-	  Mono.Cecil.Implem/ReflectionHelper.cs
-	  Mono.Cecil.Implem/OverrideCollection.cs
-	  Mono.Cecil.Implem/ArrayDimensionCollection.cs
-	  Mono.Cecil.Implem/EmbeddedResource.cs
-	  Mono.Cecil.Implem/CilWorker.cs
-	  Mono.Cecil.Implem/ParameterDefinitionCollection.cs
-	  Mono.Cecil.Implem/EventDefinitionCollection.cs
-	  Mono.Cecil.Implem/FieldDefinitionCollection.cs
-	  Mono.Cecil.Implem/PropertyDefinitionCollection.cs
-	  Mono.Cecil.Implem/ModuleDefinitionCollection.cs
-	  Mono.Cecil.Implem/CustomAttributeCollection.cs
-	  Mono.Cecil.Implem/VariableDefinitionCollection.cs
-	  Mono.Cecil.Implem/TypeReferenceCollection.cs
-	  Mono.Cecil.Implem/MemberDefinition.cs
-	  Mono.Cecil.Implem/StructureReader.cs
-	  Mono.Cecil.Implem/FunctionPointerType.cs
-	  Mono.Cecil.Implem/MethodDefinition.cs
-	  Mono.Cecil.Implem/EventDefinition.cs
-	  Mono.Cecil.Implem/FieldDefinition.cs
-	  Mono.Cecil.Implem/InstructionCollection.cs
-	  Mono.Cecil.Implem/VariableDefinition.cs
-	  Mono.Cecil.Implem/CustomAttribute.cs
-	  Mono.Cecil.Implem/ModuleDefinition.cs
-	  Mono.Cecil.Implem/MethodReference.cs
-	  Mono.Cecil.Implem/TypeReference.cs
-	  Mono.Cecil.Implem/StructureFactories.cs
-	  Mono.Cecil.Implem/TypeDefinitionCollection.cs
-	  Mono.Cecil.Implem/AssemblyNameReferenceCollection.cs
-	  Mono.Cecil.Implem/ReflectionReader.cs
-	  Mono.Cecil.Implem/MethodReturnType.cs
-	  Mono.Cecil.Implem/MemberReference.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs
-	  Mono.Cecil.Implem/Resource.cs
-	  Mono.Cecil.Implem/AssemblyDefinition.cs
-	  Mono.Cecil.Implem/TypeDefinition.cs
-	  Mono.Cecil.Implem/AggressiveReflectionReader.cs
-	  Mono.Cecil.Implem/CodeReader.cs
-	  Mono.Cecil.Implem/FieldReference.cs
-	  Mono.Cecil.Implem/MethodDefinitionCollection.cs
-	  Mono.Cecil.Implem/LazyReflectionReader.cs
-	  Mono.Cecil.Implem/LinkedResource.cs
-	  Mono.Cecil.Implem/ParameterDefinition.cs
-	  Mono.Cecil.Implem/PropertyDefinition.cs
-	  Mono.Cecil.Implem/MethodBody.cs
-	  Mono.Cecil.Implem/NestedTypeCollection.cs
-	  Mono.Cecil.Implem/ConstructorCollection.cs
-	  Mono.Cecil.Implem/ResourceCollection.cs
-	  Mono.Cecil.Implem/ExceptionHandlerCollection.cs
-	  Mono.Cecil.Binary/ImageWriter.cs
-	  Mono.Cecil.Binary/ImageReader.cs:
-		Fix the writing API before the API freeze. Few things
-		are not implemented, see todos.
-
-2005-08-20  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ITypeDefinition.cs
-	  Mono.Cecil/IModuleDefinition.cs
-	  Mono.Cecil/ITypeReference.cs
-	  Mono.Cecil.Implem/ReflectionHelper.cs
-	  Mono.Cecil.Implem/ModuleDefinition.cs
-	  Mono.Cecil.Implem/TypeReference.cs
-	  Mono.Cecil.Implem/ReflectionReader.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs
-	  Mono.Cecil.Implem/TypeDefinition.cs:
-		Add way to know if a type reference is a
-		value type or not. This hack saved my life.
-
-	* Mono.Cecil.Implem/CodeWriter.cs:
-		Fix typespec emitting.
-
-	* Mono.Cecil/IReflectionVisitor.cs
-	  Mono.Cecil/IMethod.cs
-	  Mono.Cecil/BaseReflectionVisitor.cs
-	  Mono.Cecil/ITypeDefinition.cs
-	  Mono.Cecil/IConstructorCollection.cs
-	  CodeGen/cecil.xml
-	  Mono.Cecil.Implem/MethodDefinition.cs
-	  Mono.Cecil.Implem/ReflectionReader.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs
-	  Mono.Cecil.Implem/TypeDefinition.cs
-	  Mono.Cecil.Implem/ConstructorCollection.cs:
-		Support constructors decently.
-
-	* CodeGen/templates/Utilities.cs
-	  Mono.Cecil.Metadata/Utilities.cs:
-		Return a null token if the rid of a md token
-		is 0. Fix the crash when Mono try to read
-		assemblies emitted by Cecil.
-
-2005-08-19  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Implem/ReflectionWriter.cs:
-		Set the RVA of a method only if it can
-		have a body.
-	* Mono.Cecil.Signatures/SignatureReader.cs:
-		Remove debugging stuff.
-
-	* Mono.Cecil.Implem/ReflectionReader.cs
-	  Mono.Cecil.Signatures/SignatureReader.cs:
-		Fix custom marshaller reading.
-
-	* CodeGen/templates/NamedCollectionImplem.cs
-	  CodeGen/templates/LzNamedCollectionImplem.cs
-	  Mono.Cecil.Implem/ExternTypeCollection.cs
-	  Mono.Cecil.Implem/TypeReferenceCollection.cs
-	  Mono.Cecil.Implem/TypeDefinitionCollection.cs
-	  Mono.Cecil.Implem/ReflectionReader.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs
-	  Mono.Cecil.Implem/TablesComparer.cs
-	  Mono.Cecil.Implem/Constants.cs
-	  Mono.Cecil.Signatures/SignatureWriter.cs:
-		Correct bugs in type* tables generations.
-
-	* Mono.Cecil/IModuleDefinitionCollection.cs
-	  Mono.Cecil/IInterfaceCollection.cs
-	  Mono.Cecil/INestedTypeCollection.cs
-	  Mono.Cecil/ITypeReferenceCollection.cs
-	  Mono.Cecil/IExternTypeCollection.cs
-	  Mono.Cecil/IArrayDimensionCollection.cs
-	  Mono.Cecil/IMethodDefinitionCollection.cs
-	  Mono.Cecil/IPropertyDefinitionCollection.cs
-	  Mono.Cecil/IAssemblyNameReferenceCollection.cs
-	  Mono.Cecil/IModuleReferenceCollection.cs
-	  Mono.Cecil/ISecurityDeclarationCollection.cs
-	  Mono.Cecil/IResourceCollection.cs
-	  Mono.Cecil/IParameterDefinitionCollection.cs
-	  Mono.Cecil/IEventDefinitionCollection.cs
-	  Mono.Cecil/ITypeDefinitionCollection.cs
-	  Mono.Cecil/IFieldDefinitionCollection.cs
-	  Mono.Cecil/ICustomAttributeCollection.cs
-	  Mono.Cecil/IOverrideCollection.cs
-	  Mono.Cecil.Cil/IExceptionHandlerCollection.cs
-	  Mono.Cecil.Cil/IVariableDefinitionCollection.cs
-	  Mono.Cecil.Cil/IInstructionCollection.cs
-	  CodeGen/templates/IIndexedCollection.cs
-	  CodeGen/templates/INamedCollection.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs
-	  Mono.Cecil.Binary/SubSystem.cs
-	  Mono.Cecil.Signatures/SignatureWriter.cs:
-		On going change to the writing api. Not setter allowed on
-		collections. Work on custom attribute encoding. Remove
-		the Flags on Subsystem.
-
-	* Mono.Cecil.dll.sources
-	  Mono.Cecil.Implem/ReflectionHelper.cs
-	  Mono.Cecil.Implem/TypeReference.cs
-	  Mono.Cecil.Implem/ReflectionReader.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs
-	  Mono.Cecil.Implem/TypeDefinition.cs
-	  Mono.Cecil.Implem/TablesComparer.cs
-	  Mono.Cecil.Signatures/SignatureReader.cs:
-		Fix the build.
-		Stop to prefix typeref by the scope.
-		Cecil will have buggy behaviour if it have to handle
-		two typeref with the same namespace+name, but for the
-		moment, let it like that.
-
-	* Mono.Cecil/INestedTypeCollection.cs
-	  Mono.Cecil/IModuleReference.cs
-	  Mono.Cecil/ITypeReferenceCollection.cs
-	  Mono.Cecil/IAssemblyName.cs
-	  Mono.Cecil/IExternTypeCollection.cs
-	  Mono.Cecil/IMetadataScope.cs
-	  Mono.Cecil/IModuleDefinition.cs
-	  Mono.Cecil/IResourceCollection.cs
-	  Mono.Cecil/ITypeDefinitionCollection.cs
-	  CodeGen/templates/NamedCollectionImplem.cs
-	  CodeGen/templates/INamedCollection.cs
-	  CodeGen/templates/LzNamedCollectionImplem.cs
-	  CodeGen/cecil.xml
-	  Mono.Cecil.Metadata/RowCollection.cs
-	  Mono.Cecil.Metadata/MetadataWriter.cs
-	  Mono.Cecil.Metadata/MetadataToken.cs
-	  Mono.Cecil.Implem/TablesComparer.cs
-	  Mono.Cecil.Implem/ExternTypeCollection.cs
-	  Mono.Cecil.Implem/ReflectionHelper.cs
-	  Mono.Cecil.Implem/TypeReferenceCollection.cs
-	  Mono.Cecil.Implem/StructureReader.cs
-	  Mono.Cecil.Implem/StructureWriter.cs
-	  Mono.Cecil.Implem/ModuleDefinition.cs
-	  Mono.Cecil.Implem/TypeReference.cs
-	  Mono.Cecil.Implem/TypeDefinitionCollection.cs
-	  Mono.Cecil.Implem/ReflectionReader.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs
-	  Mono.Cecil.Implem/TypeDefinition.cs
-	  Mono.Cecil.Implem/CodeReader.cs
-	  Mono.Cecil.Implem/CodeWriter.cs
-	  Mono.Cecil.Implem/Constants.cs
-	  Mono.Cecil.Implem/NestedTypeCollection.cs
-	  Mono.Cecil.Implem/ResourceCollection.cs
-	  Mono.Cecil.Signatures/SignatureReader.cs
-	  Mono.Cecil.Signatures/SignatureWriter.cs:
-		Correct some part of the API.
-		Correct tons of bugs in the writing layer.
-
-2005-08-17  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/IField.cs
-	  CodeGen/cecil.xml
-	  Mono.Cecil.Metadata/MetadataReader.cs
-	  Mono.Cecil.Metadata/MetadataWriter.cs
-	  Mono.Cecil.Implem/ReflectionHelper.cs
-	  Mono.Cecil.Implem/StructureReader.cs
-	  Mono.Cecil.Implem/FieldDefinition.cs
-	  Mono.Cecil.Implem/BaseReflectionReader.cs
-	  Mono.Cecil.Implem/ReflectionReader.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs
-	  Mono.Cecil.Implem/TypeDefinition.cs
-	  Mono.Cecil.Implem/AggressiveReflectionReader.cs
-	  Mono.Cecil.Implem/CodeReader.cs
-	  Mono.Cecil.Implem/IDetailReader.cs
-	  Mono.Cecil.Implem/CodeWriter.cs
-	  Mono.Cecil.Implem/LazyReflectionReader.cs
-	  Mono.Cecil.Signatures/SignatureWriter.cs:
-		Work on the working layer. Implement field initial
-		data. Bugs.
-
-2005-08-16  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Implem/ReflectionWriter.cs
-	  Mono.Cecil.Implem/CodeWriter.cs
-	  Mono.Cecil.Signatures/SignatureReader.cs:
-		Implement local var sig writing.
-
-	* Mono.Cecil.Implem/ArrayType.cs:
-		Style.
-	  Mono.Cecil.Implem/ParameterDefinition.cs:
-		Correct a bug in module obtention.
-	  Mono.Cecil.Signatures/SignatureReader.cs:
-		Correct a bug in arrays's signature reading.
-
-	* Mono.Cecil.dll.sources
-	  Mono.Cecil/IReflectionVisitor.cs
-	  Mono.Cecil/IModuleDefinitionCollection.cs
-	  Mono.Cecil/IInterfaceCollection.cs
-	  Mono.Cecil/IProperty.cs
-	  Mono.Cecil/BaseReflectionVisitor.cs
-	  Mono.Cecil/INestedTypeCollection.cs
-	  Mono.Cecil/ITypeReferenceCollection.cs
-	  Mono.Cecil/IParameter.cs
-	  Mono.Cecil/IExternTypeCollection.cs
-	  Mono.Cecil/IField.cs
-	  Mono.Cecil/IArrayDimensionCollection.cs
-	  Mono.Cecil/IMethodDefinitionCollection.cs
-	  Mono.Cecil/IPropertyDefinitionCollection.cs
-	  Mono.Cecil/IAssemblyNameReferenceCollection.cs
-	  Mono.Cecil/IModuleReferenceCollection.cs
-	  Mono.Cecil/IHasConstant.cs
-	  Mono.Cecil/ISecurityDeclarationCollection.cs
-	  Mono.Cecil/IMetadataTokenProvider.cs
-	  Mono.Cecil/IModuleDefinition.cs
-	  Mono.Cecil/BaseStructureVisitor.cs
-	  Mono.Cecil/IResourceCollection.cs
-	  Mono.Cecil/IParameterDefinitionCollection.cs
-	  Mono.Cecil/IEventDefinitionCollection.cs
-	  Mono.Cecil/ITypeDefinitionCollection.cs
-	  Mono.Cecil/IFieldDefinitionCollection.cs
-	  Mono.Cecil/ICustomAttributeCollection.cs
-	  Mono.Cecil/IOverrideCollection.cs
-	  Mono.Cecil.Cil/IExceptionHandlerCollection.cs
-	  Mono.Cecil.Cil/IVariableDefinitionCollection.cs
-	  Mono.Cecil.Cil/IInstructionCollection.cs
-	  CodeGen/cecil-gen.rb
-	  CodeGen/cecil-gen-types.rb
-	  CodeGen/templates/IndexedCollectionImplem.cs
-	  CodeGen/templates/NamedCollectionImplem.cs
-	  CodeGen/templates/IIndexedCollection.cs
-	  CodeGen/templates/LzIndexedCollectionImplem.cs
-	  CodeGen/templates/INamedCollection.cs
-	  CodeGen/templates/LzNamedCollectionImplem.cs
-	  CodeGen/cecil.xml
-	  Mono.Cecil.Metadata/MetadataRowWriter.cs
-	  Mono.Cecil.Metadata/MetadataWriter.cs
-	  Mono.Cecil.Implem/InterfaceCollection.cs
-	  Mono.Cecil.Implem/ModuleReferenceCollection.cs
-	  Mono.Cecil.Implem/ExternTypeCollection.cs
-	  Mono.Cecil.Implem/SecurityDeclarationCollection.cs
-	  Mono.Cecil.Implem/OverrideCollection.cs
-	  Mono.Cecil.Implem/ParameterDefinitionCollection.cs
-	  Mono.Cecil.Implem/EventDefinitionCollection.cs
-	  Mono.Cecil.Implem/FieldDefinitionCollection.cs
-	  Mono.Cecil.Implem/PropertyDefinitionCollection.cs
-	  Mono.Cecil.Implem/ModuleDefinitionCollection.cs
-	  Mono.Cecil.Implem/CustomAttributeCollection.cs
-	  Mono.Cecil.Implem/VariableDefinitionCollection.cs
-	  Mono.Cecil.Implem/TypeReferenceCollection.cs
-	  Mono.Cecil.Implem/StructureReader.cs
-	  Mono.Cecil.Implem/MethodDefinition.cs
-	  Mono.Cecil.Implem/EventDefinition.cs
-	  Mono.Cecil.Implem/FieldDefinition.cs
-	  Mono.Cecil.Implem/InstructionCollection.cs
-	  Mono.Cecil.Implem/StructureWriter.cs
-	  Mono.Cecil.Implem/ModuleDefinition.cs
-	  Mono.Cecil.Implem/MethodReference.cs
-	  Mono.Cecil.Implem/TypeReference.cs
-	  Mono.Cecil.Implem/TypeDefinitionCollection.cs
-	  Mono.Cecil.Implem/AssemblyNameReferenceCollection.cs
-	  Mono.Cecil.Implem/ReflectionReader.cs
-	  Mono.Cecil.Implem/MethodReturnType.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs
-	  Mono.Cecil.Implem/AssemblyDefinition.cs
-	  Mono.Cecil.Implem/TypeDefinition.cs
-	  Mono.Cecil.Implem/AggressiveReflectionReader.cs
-	  Mono.Cecil.Implem/MethodDefinitionCollection.cs
-	  Mono.Cecil.Implem/CodeWriter.cs
-	  Mono.Cecil.Implem/LazyReflectionReader.cs
-	  Mono.Cecil.Implem/ParameterDefinition.cs
-	  Mono.Cecil.Implem/PropertyDefinition.cs
-	  Mono.Cecil.Implem/NestedTypeCollection.cs
-	  Mono.Cecil.Implem/ResourceCollection.cs
-	  Mono.Cecil.Implem/ExceptionHandlerCollection.cs
-	  Mono.Cecil.Signatures/SignatureReader.cs
-	  Mono.Cecil.Signatures/SignatureWriter.cs:
-		Working on the writing layer.
-		Begin to fix brokens part of the API.
-
-2005-08-15  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/ITypeDefinition.cs
-	  CodeGen/templates/MetadataTableReader.cs
-	  CodeGen/templates/PEFileHeader.cs
-	  CodeGen/templates/ImageWriter.cs
-	  CodeGen/templates/CLIHeader.cs
-	  CodeGen/templates/PEOptionalHeader.cs
-	  CodeGen/templates/MetadataTableWriter.cs
-	  CodeGen/templates/Table.cs
-	  CodeGen/templates/MetadataRowReader.cs
-	  CodeGen/templates/BaseMetadataVisitor.cs
-	  CodeGen/templates/Section.cs
-	  CodeGen/templates/MetadataRowWriter.cs
-	  CodeGen/templates/ImageReader.cs
-	  CodeGen/templates/IMetadataVisitor.cs
-	  Mono.Cecil.Metadata/Assembly.cs
-	  Mono.Cecil.Metadata/PropertyMap.cs
-	  Mono.Cecil.Metadata/InterfaceImpl.cs
-	  Mono.Cecil.Metadata/MetadataInitializer.cs
-	  Mono.Cecil.Metadata/Constant.cs
-	  Mono.Cecil.Metadata/MethodSpec.cs
-	  Mono.Cecil.Metadata/BaseMetadataVisitor.cs
-	  Mono.Cecil.Metadata/DeclSecurity.cs
-	  Mono.Cecil.Metadata/TypeDef.cs
-	  Mono.Cecil.Metadata/MethodImpl.cs
-	  Mono.Cecil.Metadata/GenericParamConstraint.cs
-	  Mono.Cecil.Metadata/NestedClass.cs
-	  Mono.Cecil.Metadata/MetadataTableReader.cs
-	  Mono.Cecil.Metadata/AssemblyRefProcessor.cs
-	  Mono.Cecil.Metadata/AssemblyRef.cs
-	  Mono.Cecil.Metadata/AssemblyRefOS.cs
-	  Mono.Cecil.Metadata/Method.cs
-	  Mono.Cecil.Metadata/RowCollection.cs
-	  Mono.Cecil.Metadata/MetadataTableWriter.cs
-	  Mono.Cecil.Metadata/StringsHeap.cs
-	  Mono.Cecil.Metadata/MetadataRowReader.cs
-	  Mono.Cecil.Metadata/ExportedType.cs
-	  Mono.Cecil.Metadata/CustomAttribute.cs
-	  Mono.Cecil.Metadata/Param.cs
-	  Mono.Cecil.Metadata/MetadataReader.cs
-	  Mono.Cecil.Metadata/ClassLayout.cs
-	  Mono.Cecil.Metadata/MetadataRowWriter.cs
-	  Mono.Cecil.Metadata/BlobHeap.cs
-	  Mono.Cecil.Metadata/MetadataWriter.cs
-	  Mono.Cecil.Metadata/AssemblyOS.cs
-	  Mono.Cecil.Metadata/ModuleRef.cs
-	  Mono.Cecil.Metadata/MetadataRoot.cs
-	  Mono.Cecil.Metadata/UserStringsHeap.cs
-	  Mono.Cecil.Metadata/FieldMarshal.cs
-	  Mono.Cecil.Metadata/GenericParam.cs
-	  Mono.Cecil.Metadata/ImplMap.cs
-	  Mono.Cecil.Metadata/TableCollection.cs
-	  Mono.Cecil.Metadata/TablesHeap.cs
-	  Mono.Cecil.Metadata/MetadataStreamCollection.cs
-	  Mono.Cecil.Metadata/ManifestResource.cs
-	  Mono.Cecil.Metadata/TypeRef.cs
-	  Mono.Cecil.Metadata/AssemblyProcessor.cs
-	  Mono.Cecil.Metadata/EventMap.cs
-	  Mono.Cecil.Metadata/File.cs
-	  Mono.Cecil.Metadata/Event.cs
-	  Mono.Cecil.Metadata/FieldLayout.cs
-	  Mono.Cecil.Metadata/Field.cs
-	  Mono.Cecil.Metadata/Property.cs
-	  Mono.Cecil.Metadata/Module.cs
-	  Mono.Cecil.Metadata/GuidHeap.cs
-	  Mono.Cecil.Metadata/MethodSemantics.cs
-	  Mono.Cecil.Metadata/StandAloneSig.cs
-	  Mono.Cecil.Metadata/MetadataStream.cs
-	  Mono.Cecil.Metadata/FieldRVA.cs
-	  Mono.Cecil.Metadata/TypeSpec.cs
-	  Mono.Cecil.Metadata/MemberRef.cs
-	  Mono.Cecil.Metadata/IMetadataVisitor.cs
-	  Mono.Cecil.Implem/TypeDefinition.cs
-	  Mono.Cecil.Signatures/MethodRefSig.cs
-	  Mono.Cecil.Signatures/SignatureReader.cs
-	  Mono.Cecil.Signatures/FieldSig.cs
-	  Mono.Cecil.Signatures/PropertySig.cs
-	  Mono.Cecil.Signatures/ISignatureVisitor.cs
-	  Mono.Cecil.Signatures/SignatureWriter.cs
-	  Mono.Cecil.Signatures/MethodDefSig.cs
-	  Mono.Cecil.Signatures/LocalVarSig.cs
-	  Mono.Cecil.Binary/PEFileHeader.cs
-	  Mono.Cecil.Binary/IBinaryVisitor.cs
-	  Mono.Cecil.Binary/ImageWriter.cs
-	  Mono.Cecil.Binary/CLIHeader.cs
-	  Mono.Cecil.Binary/SectionCollection.cs
-	  Mono.Cecil.Binary/Image.cs
-	  Mono.Cecil.Binary/PEOptionalHeader.cs
-	  Mono.Cecil.Binary/ImageInitializer.cs
-	  Mono.Cecil.Binary/Imports.cs
-	  Mono.Cecil.Binary/BaseImageVisitor.cs
-	  Mono.Cecil.Binary/DOSHeader.cs
-	  Mono.Cecil.Binary/Section.cs
-	  Mono.Cecil.Binary/ImageReader.cs:
-		Apply the new visitor model to the rest of Cecil.
-
-	* Mono.Cecil/IReflectionVisitor.cs
-	  Mono.Cecil/BaseReflectionVisitor.cs
-	  Mono.Cecil/IReflectionStructureVisitor.cs
-	  Mono.Cecil/BaseStructureVisitor.cs
-	  Mono.Cecil.Cil/BaseCodeVisitor.cs
-	  Mono.Cecil.Cil/ICodeVisitor.cs
-	  CodeGen/cecil-gen.rb
-	  CodeGen/cecil-gen-types.rb
-	  CodeGen/templates/IndexedCollectionImplem.cs
-	  CodeGen/templates/NamedCollectionImplem.cs
-	  CodeGen/templates/LzIndexedCollectionImplem.cs
-	  CodeGen/templates/LzNamedCollectionImplem.cs
-	  CodeGen/cecil.xml
-	  Mono.Cecil.Implem/InterfaceCollection.cs
-	  Mono.Cecil.Implem/AssemblyLinkedResource.cs
-	  Mono.Cecil.Implem/ModuleReferenceCollection.cs
-	  Mono.Cecil.Implem/AssemblyName.cs
-	  Mono.Cecil.Implem/Instruction.cs
-	  Mono.Cecil.Implem/ExternTypeCollection.cs
-	  Mono.Cecil.Implem/MarshalDesc.cs
-	  Mono.Cecil.Implem/SecurityDeclarationCollection.cs
-	  Mono.Cecil.Implem/OverrideCollection.cs
-	  Mono.Cecil.Implem/ExceptionHandler.cs
-	  Mono.Cecil.Implem/EmbeddedResource.cs
-	  Mono.Cecil.Implem/ModuleReference.cs
-	  Mono.Cecil.Implem/ParameterDefinitionCollection.cs
-	  Mono.Cecil.Implem/EventDefinitionCollection.cs
-	  Mono.Cecil.Implem/FieldDefinitionCollection.cs
-	  Mono.Cecil.Implem/PropertyDefinitionCollection.cs
-	  Mono.Cecil.Implem/ModuleDefinitionCollection.cs
-	  Mono.Cecil.Implem/CustomAttributeCollection.cs
-	  Mono.Cecil.Implem/VariableDefinitionCollection.cs
-	  Mono.Cecil.Implem/TypeReferenceCollection.cs
-	  Mono.Cecil.Implem/StructureReader.cs
-	  Mono.Cecil.Implem/MethodDefinition.cs
-	  Mono.Cecil.Implem/EventDefinition.cs
-	  Mono.Cecil.Implem/FieldDefinition.cs
-	  Mono.Cecil.Implem/InstructionCollection.cs
-	  Mono.Cecil.Implem/StructureWriter.cs
-	  Mono.Cecil.Implem/ModuleDefinition.cs
-	  Mono.Cecil.Implem/CustomAttribute.cs
-	  Mono.Cecil.Implem/VariableDefinition.cs
-	  Mono.Cecil.Implem/TypeReference.cs
-	  Mono.Cecil.Implem/TypeDefinitionCollection.cs
-	  Mono.Cecil.Implem/AssemblyNameReferenceCollection.cs
-	  Mono.Cecil.Implem/ReflectionReader.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs
-	  Mono.Cecil.Implem/PInvokeInfo.cs
-	  Mono.Cecil.Implem/AssemblyDefinition.cs
-	  Mono.Cecil.Implem/TypeDefinition.cs
-	  Mono.Cecil.Implem/CodeReader.cs
-	  Mono.Cecil.Implem/AggressiveReflectionReader.cs
-	  Mono.Cecil.Implem/MethodDefinitionCollection.cs
-	  Mono.Cecil.Implem/CodeWriter.cs
-	  Mono.Cecil.Implem/SecurityDeclaration.cs
-	  Mono.Cecil.Implem/LazyReflectionReader.cs
-	  Mono.Cecil.Implem/LinkedResource.cs
-	  Mono.Cecil.Implem/ParameterDefinition.cs
-	  Mono.Cecil.Implem/PropertyDefinition.cs
-	  Mono.Cecil.Implem/MethodBody.cs
-	  Mono.Cecil.Implem/NestedTypeCollection.cs
-	  Mono.Cecil.Implem/ResourceCollection.cs
-	  Mono.Cecil.Implem/ExceptionHandlerCollection.cs:
-		BIG changes in the visitor object model. Last one
-		was causing ambiguous calls, and does not provides
-		differences between an interface and a typedef for
-		instance. This is corrected by suffixing the visit
-		method by the name of what it is visiting, and by
-		configuring some collection to stop the propagation
-		of the visitor.
-
-	* Mono.Cecil/ITypeDefinition.cs
-	  Mono.Cecil/IArrayType.cs
-	  CodeGen/templates/Utilities.cs
-	  Mono.Cecil.Metadata/Utilities.cs
-	  Mono.Cecil.Implem/ArrayType.cs
-	  Mono.Cecil.Implem/TypeReference.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs
-	  Mono.Cecil.Implem/TypeDefinition.cs
-	  Mono.Cecil.Implem/CodeWriter.cs
-	  Mono.Cecil.Implem/Constants.cs
-	  Mono.Cecil.Signatures/MarshalSig.cs:
-		Work on the writing layer goes on.
-
-2005-08-14  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/NativeType.cs
-	  Mono.Cecil.Signatures/MarshalSig.cs
-	  Mono.Cecil.Signatures/SignatureWriter.cs
-	  Mono.Cecil.Signatures/Signature.cs:
-		Work on signature writing.
-	  Mono.Cecil.Implem/MethodDefinition.cs
-	  Mono.Cecil.Implem/TypeDefinition.cs:
-		Correct bugs in setting the hasThis field.
-
-	* CodeGen/templates/ImageWriter.cs
-	  Mono.Cecil.Binary/templates/ImageWriter.cs
-	  Mono.Cecil/AssemblyKind.cs:
-		Make assemblies executable on win32.
-	  Mono.Cecil.Implem/TypeDefinition.cs:
-		Mark new fields as loaded.
-	  Mono.Cecil.Implem/ReflectionWriter.cs:
-		Correct the style to patch provided by
-		Sebastien Ros  <s.ros at evaluant.com>
-
-2005-08-13  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/IMethod.cs
-	  Mono.Cecil/ITypeDefinition.cs
-	  Mono.Cecil/IModuleDefinition.cs
-	  Mono.Cecil.Cil/OpCode.cs
-	  Mono.Cecil.Cil/ICilWorker.cs
-	  CodeGen/templates/ImageReader.cs
-	  Mono.Cecil.Metadata/MetadataReader.cs
-	  Mono.Cecil.Metadata/MetadataWriter.cs
-	  Mono.Cecil.Metadata/MetadataRoot.cs
-	  Mono.Cecil.Implem/ReflectionHelper.cs
-	  Mono.Cecil.Implem/CilWorker.cs
-	  Mono.Cecil.Implem/StructureReader.cs
-	  Mono.Cecil.Implem/MethodDefinition.cs
-	  Mono.Cecil.Implem/StructureWriter.cs
-	  Mono.Cecil.Implem/ModuleDefinition.cs
-	  Mono.Cecil.Implem/MethodReference.cs
-	  Mono.Cecil.Implem/ReflectionReader.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs
-	  Mono.Cecil.Implem/TypeDefinition.cs
-	  Mono.Cecil.Implem/CodeReader.cs
-	  Mono.Cecil.Implem/CodeWriter.cs
-	  Mono.Cecil.Implem/Constants.cs
-	  Mono.Cecil.Implem/ParameterDefinition.cs
-	  Mono.Cecil.Implem/MethodBody.cs
-	  Mono.Cecil.Binary/ImageReader.cs
-	  Mono.Cecil.Binary/MemoryBinaryWriter.cs
-	  Mono.Cecil.Signatures/SignatureReader.cs
-	  Mono.Cecil.Signatures/SignatureWriter.cs:
-		On going work on the writing layer.
-
-	* Mono.Cecil.Signatures/SignatureReader.cs:
-		Fix a bug when reading chars inside a custom
-		attribute signature.
-
-2005-08-12  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/AssemblyFactory.cs
-	  CodeGen/templates/ImageWriter.cs
-	  CodeGen/templates/MetadataTableWriter.cs
-	  CodeGen/templates/MetadataRowWriter.cs
-	  Mono.Cecil.Metadata/MetadataTableWriter.cs
-	  Mono.Cecil.Metadata/MetadataRowWriter.cs
-	  Mono.Cecil.Metadata/MetadataWriter.cs
-	  Mono.Cecil.Implem/StructureWriter.cs
-	  Mono.Cecil.Binary/ImageWriter.cs
-	  Mono.Cecil.Binary/MemoryBinaryWriter.cs:
-		Use a custom binary writer instead of the old one.
-
-	* Mono.Cecil/IMethod.cs
-	  Mono.Cecil.Cil/BaseCodeVisitor.cs
-	  Mono.Cecil.Cil/MethodHeader.cs
-	  Mono.Cecil.Cil/ICodeVisitor.cs
-	  Mono.Cecil.Implem/Instruction.cs
-	  Mono.Cecil.Implem/MethodDefinition.cs
-	  Mono.Cecil.Implem/FieldDefinition.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs
-	  Mono.Cecil.Implem/CodeReader.cs
-	  Mono.Cecil.Implem/CodeWriter.cs
-	  Mono.Cecil.Implem/MethodBody.cs:
-		Ongoing work on the writing layer.
-
-	* CodeGen/templates/Utilities.cs
-	  CodeGen/templates/NamedCollectionImplem.cs
-	  CodeGen/templates/MetadataRowWriter.cs
-	  CodeGen/templates/LzNamedCollectionImplem.cs
-	  CodeGen/cecil.xml
-	  Mono.Cecil/IMethod.cs
-	  Mono.Cecil/IAssemblyName.cs
-	  Mono.Cecil/IModuleDefinition.cs
-	  Mono.Cecil/AssemblyFactory.cs
-	  Mono.Cecil.Metadata/MetadataRowWriter.cs
-	  Mono.Cecil.Metadata/Utilities.cs
-	  Mono.Cecil.Implem/ReflectionHelper.cs
-	  Mono.Cecil.Implem/StructureReader.cs
-	  Mono.Cecil.Implem/MethodDefinition.cs
-	  Mono.Cecil.Implem/EventDefinition.cs
-	  Mono.Cecil.Implem/FieldDefinition.cs
-	  Mono.Cecil.Implem/StructureWriter.cs
-	  Mono.Cecil.Implem/ModuleDefinition.cs
-	  Mono.Cecil.Implem/MethodReference.cs
-	  Mono.Cecil.Implem/TypeDefinitionCollection.cs
-	  Mono.Cecil.Implem/ReflectionReader.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs
-	  Mono.Cecil.Implem/TypeDefinition.cs
-	  Mono.Cecil.Implem/AggressiveReflectionReader.cs
-	  Mono.Cecil.Implem/Constants.cs
-	  Mono.Cecil.Implem/ParameterDefinition.cs
-	  Mono.Cecil.Implem/PropertyDefinition.cs
-	  Mono.Cecil.Signatures/SignatureWriter.cs:
-		Ongoing work on the writing layer.
-		Some fixes to the reading layer as well.
-
-2005-08-11  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Signatures/SignatureReader.cs:
-		Read Array signatures correctly.
-
-	* Mono.Cecil/IMethodSignature.cs:
-		Remove the setted for the return type.
-	* Mono.Cecil.Implem/CilWorker.cs:
-		Fix the build. Me idiot!
-	* Mono.Cecil.Implem/Constants.cs:
-		Remove unexisting type Variant.
-	* Mono.Cecil.Implem/ReflectionHelper.cs:
-		Complete the helper.
-
-2005-08-10  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Cil/IMethodBody.cs
-	  Mono.Cecil.Cil/ICilEmitter.cs
-	  Mono.Cecil.Cil/ICilWorker.cs
-	  Mono.Cecil.Implem/CilWorker.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs
-	  Mono.Cecil.Implem/MethodBody.cs
-	  Mono.Cecil.Implem/CilEmitter.cs
-	  Mono.Cecil.Signatures/SignatureReader.cs
-	  Mono.Cecil.Signatures/SignatureWriter.cs:
-		Prepare the api for the cil emitting.
-
-	* CodeGen/templates/Utilities.cs
-	  CodeGen/templates/MetadataRowReader.cs
-	  CodeGen/templates/MetadataRowWriter.cs
-	  Mono.Cecil.Metadata/Utilities.cs
-	  Mono.Cecil.Metadata/MetadataRowReader.cs
-	  Mono.Cecil.Metadata/MetadataRowWriter.cs:
-		Fix the build on .net, i was using a sugar
-		syntax for delegates that csc does not understand.
-		Remove the coded index cache from the static class
-		Utilities, and add one per row visitor.
-
-	* Mono.Cecil/IMethodReturnType.cs
-	  Mono.Cecil.Implem/MethodReturnType.cs
-	  Mono.Cecil.Implem/ReflectionReader.cs
-	  Mono.Cecil.Implem/ParameterDefinition.cs:
-		Make IMethodReturn type inherits IHasMarshalSpec so
-		that users can read marshaling info for return types,
-		and implement it.
-
-	* CodeGen/templates/ImageWriter.cs
-	  Mono.Cecil.Binary/ImageWriter.cs
-	  Mono.Cecil.Metadata/MetadataWriter.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs:
-		Cecil now emits assemblies understood by the .net clr.
-
-2005-08-09  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/AssemblyKind.cs
-	  CodeGen/templates/ImageWriter.cs
-	  CodeGen/templates/ImageReader.cs
-	  Mono.Cecil.Metadata/MetadataWriter.cs
-	  Mono.Cecil.Binary/ImageWriter.cs
-	  Mono.Cecil.Binary/ImageInitializer.cs
-	  Mono.Cecil.Binary/ImageReader.cs:
-		Lots of little fixes. Now dumpbin is coherent
-		compared with an assembly emitted with csc or mcs
-		but still not yet compatible with .net.
-
-	* Mono.Cecil.Signatures/SignatureReader.cs:
-		Fix an array out of range while trying to read
-		fixed arrays signatures
-
-	* CodeGen/templates/ImageWriter.cs
-	  Mono.Cecil.Metadata/MetadataReader.cs
-	  Mono.Cecil.Metadata/MetadataWriter.cs
-	  Mono.Cecil.Implem/AssemblyName.cs
-	  Mono.Cecil.Implem/StructureReader.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs
-	  Mono.Cecil.Binary/ImageCharacteristics.cs
-	  Mono.Cecil.Binary/ImageWriter.cs
-	  Mono.Cecil.Binary/Image.cs:
-		Cecil now emits assemblies that are understood
-		by Mono and Cecil itself. Still have troubles
-		with Msft CLR.
-
-2005-08-08  Jb Evain  <jbevain at gmail.com>
-
-	* CodeGen/cecil-gen.rb
-	  CodeGen/templates/MetadataTableReader.cs
-	  CodeGen/templates/ImageWriter.cs
-	  CodeGen/templates/MetadataTableWriter.cs
-	  CodeGen/templates/BaseMetadataVisitor.cs
-	  CodeGen/templates/MetadataRowReader.cs
-	  CodeGen/templates/MetadataRowWriter.cs
-	  CodeGen/cecil.xml
-	  Mono.Cecil.Metadata/MetadataInitializer.cs
-	  Mono.Cecil.Metadata/BaseMetadataVisitor.cs
-	  Mono.Cecil.Metadata/MetadataTableReader.cs
-	  Mono.Cecil.Metadata/MetadataTableWriter.cs
-	  Mono.Cecil.Metadata/MetadataRowReader.cs
-	  Mono.Cecil.Metadata/MetadataRowWriter.cs
-	  Mono.Cecil.Metadata/MetadataWriter.cs
-	  Mono.Cecil.Binary/ImageWriter.cs
-	  Mono.Cecil.Binary/CLIHeader.cs
-	  Mono.Cecil.Binary/ImageInitializer.cs:
-		The writing layer almost works.
-
-	* Mono.Cecil/AssemblyKind.cs
-	  Mono.Cecil/TargetRuntime.cs
-	  Mono.Cecil.dll.sources:
-		Add thoses enumes to control assembly writing.
-	* Mono.Cecil/AssemblyFactory.cs
-	  Mono.Cecil/IReflectionVisitor.cs
-	  Mono.Cecil/BaseReflectionVisitor.cs
-	  Mono.Cecil/IAssemblyDefinition.cs
-	  Mono.Cecil/IReflectionStructureVisitor.cs
-	  Mono.Cecil/BaseStructureVisitor.cs
-	  CodeGen/templates/ImageWriter.cs
-	  CodeGen/templates/MetadataTableWriter.cs
-	  CodeGen/templates/MetadataRowWriter.cs
-	  CodeGen/templates/LzNamedCollectionImplem.cs
-	  Mono.Cecil.Metadata/MetadataInitializer.cs
-	  Mono.Cecil.Metadata/MetadataTableWriter.cs
-	  Mono.Cecil.Metadata/MetadataRowWriter.cs
-	  Mono.Cecil.Metadata/MetadataWriter.cs
-	  Mono.Cecil.Metadata/MetadataStreamCollection.cs
-	  Mono.Cecil.Implem/AssemblyName.cs
-	  Mono.Cecil.Implem/StructureWriter.cs
-	  Mono.Cecil.Implem/ModuleDefinition.cs
-	  Mono.Cecil.Implem/TypeDefinitionCollection.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs
-	  Mono.Cecil.Implem/AssemblyDefinition.cs
-	  Mono.Cecil.Binary/ImageWriter.cs
-	  Mono.Cecil.Binary/ImageInitializer.cs
-	  Mono.Cecil.Binary/Imports.cs:
-		Things are now plugged. SaveAssembly will now emits
-		a binary file. A broken file, but heh, at least it does.
-
-2005-08-07  Jb Evain  <jbevain at gmail.com>
-
-	* CodeGen/templates/ImageReader.cs
-	  CodeGen/templates/ImageWriter.cs
-	  CodeGen/templates/IMetadataVisitor.cs
-	  Mono.Cecil.Binary/ImageReader.cs
-	  Mono.Cecil.Binary/ImageWriter.cs
-	  Mono.Cecil.Metadata/IMetadataVisitor.cs
-	  Mono.Cecil.Metadata/BaseMetadataVisitor.cs
-	  Mono.Cecil.Metadata/MetadataReader.cs
-	  Mono.Cecil.Metadata/MetadataWriter.cs
-	  Mono.Cecil.Metadata/MetadataStreamCollection.cs:
-		Simplify IMetadataVisitor.
-		Work on the writing layer, closer to have something testable
-		than ever.
-
-	* CodeGen/cecil.xml
-	  CodeGen/templates/ImageWriter.cs
-	  Mono.Cecil.Metadata/MetadataWriter.cs
-	  Mono.Cecil.Binary/PEOptionalHeader.cs
-	  Mono.Cecil.Binary/ImageWriter.cs
-	  Mono.Cecil.Binary/Imports.cs:
-		don't stop don't stop come ON!
-
-	* CodeGen/templates/ImageWriter.cs
-	  CodeGen/templates/ImageReader.cs
-	  CodeGen/templates/Section.cs
-	  Mono.Cecil.Binary/Image.cs
-	  Mono.Cecil.Binary/ImageReader.cs
-	  Mono.Cecil.Binary/ImageInitializer.cs
-	  Mono.Cecil.Binary/ImageWriter.cs
-	  Mono.Cecil.Binary/Section.cs
-	  Mono.Cecil.Metadata/MetadataReader.cs
-	  Mono.Cecil.Metadata/MetadataWriter.cs
-	  Mono.Cecil.Implem/StructureReader.cs
-	  Mono.Cecil.Implem/StructureWriter.cs
-	  Mono.Cecil.Implem/CodeWriter.cs:
-		Some writing layer love.
-
-	* CodeGen/templates/ImageWriter.cs
-	  CodeGen/templates/ImageReader.cs
-	  Mono.Cecil.Binary/Imports.cs
-	  Mono.Cecil.Binary/ImageReader.cs
-	  Mono.Cecil.Binary/ImageInitializer.cs
-	  Mono.Cecil.Binary/ImageWriter.cs:
-		Read an write correctly the Hint/Name table
-		at the end of the .text section.
-
-	* CodeGen/templates/ImageWriter.cs
-	  Mono.Cecil.Metadata/MetadataWriter.cs
-	  Mono.Cecil.Binary/ImageWriter.cs
-	  Mono.Cecil.Binary/ImageInitializer.cs:
-		More writing layer stuff.
-
-2005-08-06  Jb Evain  <jbevain at gmail.com>
-
-	* CodeGen/templates/ImageWriter.cs
-	  CodeGen/templates/MetadataTableWriter.cs
-	  Mono.Cecil.Metadata/MetadataInitializer.cs
-	  Mono.Cecil.Metadata/MetadataTableWriter.cs
-	  Mono.Cecil.Metadata/StringsHeap.cs
-	  Mono.Cecil.Metadata/BlobHeap.cs
-	  Mono.Cecil.Metadata/MetadataWriter.cs
-	  Mono.Cecil.Metadata/UserStringsHeap.cs
-	  Mono.Cecil.Metadata/TableCollection.cs
-	  Mono.Cecil.Metadata/TablesHeap.cs
-	  Mono.Cecil.Metadata/MetadataHeap.cs
-	  Mono.Cecil.Metadata/GuidHeap.cs
-	  Mono.Cecil.Metadata/MetadataStream.cs
-	  Mono.Cecil.Implem/StructureWriter.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs
-	  Mono.Cecil.Implem/CodeWriter.cs
-	  Mono.Cecil.Binary/ImageWriter.cs
-	  Mono.Cecil.Binary/ImageInitializer.cs:
-		Playing lego with bricks from the writing layer.
-
-	* Mono.Cecil.dll.sources:
-		Updated.
-	* CodeGen/templates/CLIHeader.cs
-	  CodeGen/templates/PEOptionalHeader.cs
-		Blah.
-	* CodeGen/cecil.xml
-	  Mono.Cecil.Binary/CLIHeader.cs
-	  Mono.Cecil.Binary/PEOptionalHeader.cs:
-	  Mono.Cecil.Binary/PEFileHeader.cs
-		On going work on the writing layer
-
-	* CodeGen/templates/ImageWriter.cs
-	  CodeGen/templates/ImageReader.cs
-	  Mono.Cecil.Binary/BaseImageVisitor.cs
-	  Mono.Cecil.Binary/ImageReader.cs
-	  Mono.Cecil.Binary/ImageInitializer.cs
-	  Mono.Cecil.Binary/ImageWriter.cs
-	  Mono.Cecil.Metadata/BaseMetadataVisitor.cs
-	  Mono.Cecil.Metadata/MetadataReader.cs
-	  Mono.Cecil.Metadata/MetadataInitializer.cs
-	  Mono.Cecil.Metadata/MetadataWriter.cs
-	  Mono.Cecil.Metadata/MetadataStream.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs
-	  Mono.Cecil.Implem/CodeWriter.cs:
-		Add helpers visitor.
-		On going work on the writing layer.
-
-	* CodeGen/templates/Utilities.cs
-	  CodeGen/templates/MetadataRowReader.cs
-	  CodeGen/templates/MetadataRowWriter.cs
-	  Mono.Cecil.Metadata/StringsHeap.cs
-	  Mono.Cecil.Metadata/MetadataRowReader.cs
-	  Mono.Cecil.Metadata/MetadataRowWriter.cs
-	  Mono.Cecil.Metadata/MetadataReader.cs
-	  Mono.Cecil.Metadata/Utilities.cs
-	  Mono.Cecil.Metadata/BlobHeap.cs
-	  Mono.Cecil.Metadata/MetadataWriter.cs
-	  Mono.Cecil.Metadata/MetadataHeap.cd
-	  Mono.Cecil.Metadata/GuidHeap.cs:
-		On going work on the writing layer.
-
-	* CodeGen/templates/MetadataTableWriter.cs
-	  Mono.Cecil.Metadata/MetadataTableWriter.cs
-	  Mono.Cecil.Metadata/MetadataWriter.cs:
-		On going work on the writing layer.
-	* Mono.Cecil.Implem/StructureWriter.cs:
-		Correctly override methods
-	* CodeGen/templates/MetadataRowWriter.cs
-	  Mono.Cecil.Metadata/MetadataRowWriter.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs:
-		Fix build warnings.
-
-	* Mono.Cecil/IResource.cs
-	  Mono.Cecil.Implem/AssemblyLinkedResource.cs
-	  Mono.Cecil.Implem/EmbeddedResource.cs
-	  Mono.Cecil.Implem/LinkedResource.cs
-	  Mono.Cecil.Implem/Resource.cs:
-		Rename field Attributes to Flags for the sake of consistency.
-	* Mono.Cecil.Metadata/MetadataWriter.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs
-	  Mono.Cecil.Implem/StructureWriter.cs:
-		On going work on the writing layer.
-	* Mono.Cecil.Implem/StructureReader.cs:
-		Style.
-
-	* Mono.Cecil/IAssemblyName.cs
-	  Mono.Cecil.Implem/AssemblyName.cs
-	  Mono.Cecil.Implem/StructureReader.cs:
-		Add an AssemblyFlag property to an IAssemblyNameReference,
-		implement it, and read it.
-
-2005-08-04  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Implem/ReflectionReader.cs:
-		set a correct name to nameless parameters
-
-	* Mono.Cecil.Signatures/SignatureReader.cs:
-		don't crash on null custom attributes
-
-2005-08-03  Jb Evain  <jbevain at gmail.com>
-
-	* CodeGen/templates/OpCodes.cs
-	  Mono.Cecil.Cil/OpCodes.cs
-	  Mono.Cecil.Cil/OpCode.cs:
-		Revert modifications to reduce code. OpCodes::.ctors were
-		not called.
-
-	* Mono.Cecil.Implem/ReflectionReader.cs:
-		Make sure parameters are read even if there is no
-		corresponding Param row. Thanks Cesar for the hint.
-
-	* Mono.Cecil.Metadata/MetadataWriter.cs
-	  Mono.Cecil.Metadata/UserStringsHeap.cs
-	  Mono.Cecil.Metadata/GuidHeap.cs
-	  Mono.Cecil.Implem/CodeReader.cs:
-		On going work on the writing layer
-
-	* CodeGen/cecil-gen.rb
-	  CodeGen/cecil-gen-sources.rb
-		make executable
-	* *.*: set svn:eol-style to native
-
-	* Mono.Cecil/BaseStructureVisitor.cs
-	  Mono.Cecil/BaseReflectionVisitor.cs
-	  Mono.Cecil.Implem/BaseReflectionReader.cs:
-		Add empty visitors for the sake of simplicity
-	* Mono.Cecil.Implem/StructureReader.cs
-	  Mono.Cecil.Implem/ReflectionReader.cs:
-		Inherit new visitors
-
-2005-08-03  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Implem/ReflectionReader.cs
-	  Mono.Cecil.Implem/AggressiveReflectionReader.cs
-	  Mono.Cecil.Implem/LazyReflectionReader.cs
-	  Mono.Cecil.Implem/CodeReader.cs:
-		Modify and add helpers to avoid lots of casts.
-		Correct a bug in custom attributes attribution.
-
-2005-08-02  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Signatures/TypeSpec.cs:
-		Don't restrain the SigType
-	* Mono.Cecil.Implem/AggressiveReflectionReader.cs:
-		Set PInvokeInfos on the correct method
-
-2005-07-30  Jb Evain  <jbevain at gmail.com>
-
-	* CodeGen/cecil-gen.rb
-	  CodeGen/cecil-gen-sources.rb:
-		make them executable
-	* CodeGen/cecil-gen-types: style
-	* CodeGen/templates/ImageWriter.cs
-	  Mono.Cecil.Binary/ImageWriter.cs:
-		Prelimimary work on assembly writing
-
-2005-07-29  Jb Evain  <jbevain at gmail.com>
-
-	* CodeGen/cecil-gen-types.rb
-	  CodeGen/templates/MetadataTableWriter.cs
-	  CodeGen/templates/MetadataRowWriter.cs
-	  Mono.Cecil/AssemblyFactory.cs
-	  Mono.Cecil.Metadata/MetadataTableWriter.cs
-	  Mono.Cecil.Metadata/MetadataRowWriter.cs
-	  Mono.Cecil.Implem/StructureWriter.cs
-	  Mono.Cecil.Implem/ReflectionWriter.cs:
-		Preliminary work on assembly writing
-
-2005-07-28  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/AssemblyFactory.cs
-	  Mono.Cecil.Implem/StructureWriter.cs
-		Preliminary work on assembly writing
-
-	* Mono.Cecil/IMetadataTokenProvider.cs
-	  Mono.Cecil/IMember.cs
-	  Mono.Cecil/IParameter.cs:
-		Add a MetadataToken property on searchable items
-	* Mono.Cecil.Metadata/MetadataToken.cs:
-		Add a factory method to create token from row number
-	* Mono.Cecil.Implem/TypeReference.cs
-	  Mono.Cecil.Implem/MemberReference.cs
-	  Mono.Cecil.Implem/ParameterDefinition.cs:
-		Implement the token property
-	* Mono.Cecil.Implem/ReflectionReader.cs
-	  Mono.Cecil.Implem/AggressiveReflectionReader.cs
-	  Mono.Cecil.Implem/LazyReflectionReader.cs:
-		Set the token property on reading
-	* Mono.Cecil/IModuleDefinition.cs
-	  Mono.Cecil.Implem/ModuleDefinition.cs
-	  Mono.Cecil.Implem/ReflectionReader.cs:
-		Add methods to lookup items from their tokens
-
-2005-07-27  Jb Evain  <jbevain at gmail.com>
-
-	* CodeGen/templates/OpCodes.cs
-	  Mono.Cecil.Cil/OpCodes.cs
-	  Mono.Cecil.Cil/OpCode.cs:
-		Changes to reduce the size of the cache ctor
-
-2005-07-22  Raja R Harinath  <rharinath at novell.com>
-
-	* Makefile (MCS): Allow compiler to be overriden.
-
-2005-07-21  Todd Berman  <tberman at off.net>
-
-	* configure: Add a small stub configure (stolen from mcs) to set the
-	prefix.
-	* mono-cecil.pc.in: Add a mono-cecil.pc.in to allow for installation
-	according to the new "Libraries with Unstable API" Wiki documentation.
-	* Makefile: Add an install an a mono-cecil.pc target to allow for
-	installation and creation of the pc file.
-
-2005-07-14  Jb Evain  <jbevain at gmail.com>
-
-	* CodeGen/templates/ImageReader.cs
-	  Mono.Cecil.Binary/IBinaryVisitor.cs
-	  Mono.Cecil.Binary/Image.cs
-	  Mono.Cecil.Binary/ImageInitializer.cs
-	  Mono.Cecil.Binary/Imports.cs
-	  Mono.Cecil.Binary/ImageReader.cs:
-		Read Imports Tables
-
-2005-07-14  Jb Evain  <jbevain at gmail.com>
-
-	* CodeGen/cecil-gen.rb:
-		make codegen works on ruby 1.8.2
-	* CodeGen/templates/*.cs
-	  Mono.Cecil.Metadata/*.cs:
-	  	style
-
-2005-07-13  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Implem/VariableDefinition.cs:
-		set the index field
-
-2005-07-13  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.dll.sources: regenerated
-	* Mono.Cecil.Signatures/SignatureReader.cs:
-		Fix compilation warnings
-	* Mono.Cecil/IArrayType.cs
-	  Mono.Cecil.Implem/ArrayType.cs:
-	  	Add Rank helper property
-	* Mono.Cecil/ITypeDefinition.cs
-	  Mono.Cecil.Implem/TypeDefinition.cs:
-	  	Add Constructors helper property
-
-2005-07-11  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/IMethod.cs
-	  Mono.Cecil.Implem/Instruction.cs
-	  Mono.Cecil.Implem/ExceptionHandler.cs
-	  Mono.Cecil.Implem/MethodDefinition.cs
-	  Mono.Cecil.Implem/Label.cs
-	  Mono.Cecil.Implem/CodeReader.cs
-	  Mono.Cecil.Implem/MethodBody.cs
-	  Mono.Cecil.Implem/CilEmitter.cs
-	  Mono.Cecil.Cil/ILabel.cs
-	  Mono.Cecil.Cil/IInstruction.cs
-	  Mono.Cecil.Cil/IExceptionHandler.cs
-	  Mono.Cecil.Cil/IMethodBody.cs
-	  Mono.Cecil.Cil/ICilEmitter.cs:
-		Preliminary changes on the instruction model before
-		changing of latptop
-
-2005-07-08  Jb Evain  <jbevain at gmail.com>
-
-   * Every generated files: use \n instead of \r\n
-
-2005-07-07  Jb Evain  <jbevain at gmail.com>
-
-	* *.*: use Mono coding conventions
-	* Mono.Xml/*.*: update Mono.Xml from corlib
-	* Mono.Cecil.Metadata/CultureUtils.cs:
-		Ensure that Cecil works under Mono
-
-2005-07-02  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil/IMethod.cs
-	  Mono.Cecil/IProperty.cs
-	  Mono.Cecil/IEvent.cs
-	  Mono.Cecil/IField.cs
-	  Mono.Cecil/ITypeDefinition.cs
-	  Mono.Cecil.Implem/MethodDefinition.cs
-	  Mono.Cecil.Implem/PropertyDefinition.cs
-	  Mono.Cecil.Implem/EventDefinition.cs
-	  Mono.Cecil.Implem/FieldDefinition.cs
-	  Mono.Cecil.Implem/TypeDefinition.cs:
-		Add some funky sugar attributes,
-		more to come
-
-2005-07-01  Jb Evain  <jbevain at gmail.com>
-
-	* CodeGen/cecil-gen.rb,
-	  CodeGen/templates/MetadataTableWriter.cs,
-	  CodeGen/templates/MetadataRowWriter.cs,
-	  Mono.Cecil.Metadata/MetadataTableWriter.cs,
-	  Mono.Cecil.Metadata/MetadataRowWriter.cs,
-	  Mono.Cecil.Metadata/MetadataWriter.cs:
-		Add metadata writing visitors
-	* Mono.Cecil.Metadata/CultureUtils.cs:
-		Be sure to use every possible culture infos.
-	* Mono.Cecil.Cil/IVariable.cs,
-	  Mono.Cecil.Implem/VariableDefinition.cs,
-	  Mono.Cecil.Implem/CodeReader.cs,
-	  Mono.Cecil.Implem/CilEmitter.cs:
-		Add an index property to local variables
-	* Mono.Cecil.Metadata/MetadataReader.cs,
-	  Mono.Cecil.Metadata/MetadataRowReader.cs,
-	  CodeGen/templates/MetadataRowReader.cs,
-	  Mono.Cecil.Metadata/TablesHeap.cs:
-		Handles null heaps
-	* Mono.Cecil.Implem/StructureWriter.cs,
-	  Mono.Cecil.Implem/ReflectionController.cs,
-	  Mono.Cecil.Implem/ReflectionWriter.cs:
-		Assemble writing classes
-
-2005-06-28  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Implem/ReflectionReader.cs: style
-	* Mono.Cecil.Implem/LazyReflectionReader.cs:
-		read the last property as well.
-
-2005-06-21  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Implem/ReflectionReader.cs: Correct a bug that prevents
-		assemblies to be readed if they have an entrypoint. Suggestion by
-		Mario Sopena
-	* Mono.Cecil.Implem/CodeReader.cs: Use sbyte not to lose negatives
-		offsets. Suggestion by Vladislav Spivak
-	* CodeGen/cecil.xml,
-	  Mono.Cecil.Cil/OpCodes.cs,
-	  Mono.Cecil.Cil/StackBehaviour.cs: Add an PopAll enumeration value
-		for StackBehaviour, and set the StackBehaviourPop property for
-		leave and leave.s opcodes to it. Suggested by Vladislav Spivak
-
-2005-06-12  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.Implem/TypeDefinition.cs: Set the declaring type
-		to this when defining a nested type.
-
-2005-06-07  Jb Evain  <jbevain at gmail.com>
-
-	* Mono.Cecil.dll.sources,
-	* CodeGen/cecil.xml,
-	* Mono.Cecil/IReflectionVisitor.cs,
-	* Mono.Cecil/INestedTypeCollection.cs,
-	* Mono.Cecil/ITypeDefinition,
-	* Mono.Cecil.Implem/ReflectionReader.cs,
-	* Mono.Cecil.Implem/ReflectionWriter.cs,
-	* Mono.Cecil.Implem/TypeDefinition.cs,
-	* Mono.Cecil.Implem/NestedTypeCollection:
-		Add a collection of nested types for type definition
-
-	* Mono.Cecil.Implem/ModuleDefinition.cs: simplify type creation
-
-2005-06-07  Jb Evain  <jbevain at gmail.com>
-
-	* ChangeLog: Cecil has now ChangeLogs. Let use them.
diff --git a/mcs/class/Mono.Cecil/CodeGen/cecil.xml b/mcs/class/Mono.Cecil/CodeGen/cecil.xml
deleted file mode 100644
index 0fded33..0000000
--- a/mcs/class/Mono.Cecil/CodeGen/cecil.xml
+++ /dev/null
@@ -1,608 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<cecil>
-
-	<types>
-		<type name="byte" size="1" />
-		<type name="ushort" size="2" />
-		<type name="short" size="2" />
-		<type name="uint" size="4" />
-		<type name="int" size="4" />
-		<type name="Mono.Cecil.Binary.DataDirectory" size="8" />
-		<type name="Mono.Cecil.Binary.ImageCharacteristics" underlying="ushort" size="2" />
-		<type name="Mono.Cecil.Binary.DebugStoreType" underlying="uint" size="4" />
-		<type name="Mono.Cecil.Binary.SubSystem" underlying="ushort" size="2" />
-		<type name="Mono.Cecil.Binary.SectionCharacteristics" underlying="uint" size="4" />
-		<type name="Mono.Cecil.Binary.RVA" size="4" />
-		<type name="Mono.Cecil.Binary.RuntimeImage" underlying="uint" size="4" />
-		<type name="Mono.Cecil.AssemblyHashAlgorithm" underlying="uint" size="4" />
-		<type name="Mono.Cecil.AssemblyFlags" underlying="uint" size="4" />
-		<type name="Mono.Cecil.EventAttributes" underlying="ushort" size="2" />
-		<type name="Mono.Cecil.TypeAttributes" underlying="uint" size="4" />
-		<type name="Mono.Cecil.FieldAttributes" underlying="ushort" size="2" />
-		<type name="Mono.Cecil.FileAttributes" underlying="uint" size="4" />
-		<type name="Mono.Cecil.GenericParameterAttributes" underlying="ushort" size="2" />
-		<type name="Mono.Cecil.PInvokeAttributes" underlying="ushort" size="2" />
-		<type name="Mono.Cecil.ParameterAttributes" underlying="ushort" size="2" />
-		<type name="Mono.Cecil.PropertyAttributes" underlying="ushort" size="2" />
-		<type name="Mono.Cecil.ManifestResourceAttributes" underlying="uint" size="4" />
-		<type name="Mono.Cecil.MethodAttributes" underlying="ushort" size="2" />
-		<type name="Mono.Cecil.MethodImplAttributes" underlying="ushort" size="2" />
-		<type name="Mono.Cecil.MethodSemanticsAttributes" underlying="ushort" size="2" />
-		<type name="Mono.Cecil.SecurityAction" underlying="short" size="2" />
-		<type name="Mono.Cecil.Metadata.ElementType" underlying="ushort" size="2" />
-		<type name="Mono.Cecil.Metadata.MetadataToken" underlying="uint" size="4" />
-	</types>
-
-	<!--
-		All details about the Metadata
-		reader and writer of Cecil
-	-->
-	<metadata>
-
-		<!--
-			This part contains ECMA spec
-			about CIL tables and rows positions
-			in a valid CLI image
-		-->
-		<tables>
-			<table name="Assembly" rid="0x20">
-				<column name="HashAlgId" type="Mono.Cecil.AssemblyHashAlgorithm" />
-				<column name="MajorVersion" type="ushort" />
-				<column name="MinorVersion" type="ushort" />
-				<column name="BuildNumber" type="ushort" />
-				<column name="RevisionNumber" type="ushort" />
-				<column name="Flags" type="Mono.Cecil.AssemblyFlags" />
-				<column name="PublicKey" type="uint" target="BlobHeap" />
-				<column name="Name" type="uint" target="StringsHeap" />
-				<column name="Culture" type="uint" target="StringsHeap" />
-			</table>
-			<table name="AssemblyOS" rid="0x22">
-				<column name="OSPlatformID" type="uint" />
-				<column name="OSMajorVersion" type="uint" />
-				<column name="OSMinorVersion" type="uint" />
-			</table>
-			<table name="AssemblyProcessor" rid="0x21">
-				<column name="Processor" type="uint" />
-			</table>
-			<table name="AssemblyRef" rid="0x23">
-				<column name="MajorVersion" type="ushort" />
-				<column name="MinorVersion" type="ushort" />
-				<column name="BuildNumber" type="ushort" />
-				<column name="RevisionNumber" type="ushort" />
-				<column name="Flags" type="Mono.Cecil.AssemblyFlags" />
-				<column name="PublicKeyOrToken" type="uint" target="BlobHeap" />
-				<column name="Name" type="uint" target="StringsHeap" />
-				<column name="Culture" type="uint" target="StringsHeap" />
-				<column name="HashValue" type="uint" target="BlobHeap" />
-			</table>
-			<table name="AssemblyRefOS" rid="0x25">
-				<column name="OSPlatformID" type="uint" />
-				<column name="OSMajorVersion" type="uint" />
-				<column name="OSMinorVersion" type="uint" />
-				<column name="AssemblyRef" type="uint" target="AssemblyRef" />
-			</table>
-			<table name="AssemblyRefProcessor" rid="0x24">
-				<column name="Processor" type="uint" />
-				<column name="AssemblyRef" type="uint" target="AssemblyRef" />
-			</table>
-			<table name="ClassLayout" rid="0x0f">
-				<column name="PackingSize" type="ushort" />
-				<column name="ClassSize" type="uint" />
-				<column name="Parent" type="uint" target="TypeDef" />
-			</table>
-			<table name="Constant" rid="0x0b">
-				<column name="Type" type="Mono.Cecil.Metadata.ElementType" />
-				<column name="Parent" type="Mono.Cecil.Metadata.MetadataToken" target="HasConstant" />
-				<column name="Value" type="uint" target="BlobHeap" />
-			</table>
-			<table name="CustomAttribute" rid="0x0c">
-				<column name="Parent" type="Mono.Cecil.Metadata.MetadataToken" target="HasCustomAttribute" />
-				<column name="Type" type="Mono.Cecil.Metadata.MetadataToken" target="CustomAttributeType" />
-				<column name="Value" type="uint" target="BlobHeap" />
-			</table>
-			<table name="DeclSecurity" rid="0x0e">
-				<column name="Action" type="Mono.Cecil.SecurityAction" />
-				<column name="Parent" type="Mono.Cecil.Metadata.MetadataToken" target="HasDeclSecurity" />
-				<column name="PermissionSet" type="uint" target="BlobHeap" />
-			</table>
-			<table name="EventMap" rid="0x12">
-				<column name="Parent" type="uint" target="TypeDef" />
-				<column name="EventList" type="uint" target="Event" />
-			</table>
-			<table name="Event" rid="0x14">
-				<column name="EventFlags" type="Mono.Cecil.EventAttributes" />
-				<column name="Name" type="uint" target="StringsHeap" />
-				<column name="EventType" type="Mono.Cecil.Metadata.MetadataToken" target="TypeDefOrRef" />
-			</table>
-			<table name="EventPtr" rid="0x13">
-				<column name="Event" type="uint" target="Event" />
-			</table>
-			<table name="ExportedType" rid="0x27">
-				<column name="Flags" type="Mono.Cecil.TypeAttributes" />
-				<column name="TypeDefId" type="uint" />
-				<column name="TypeName" type="uint" target="StringsHeap" />
-				<column name="TypeNamespace" type="uint" target="StringsHeap" />
-				<column name="Implementation" type="Mono.Cecil.Metadata.MetadataToken" target="Implementation" />
-			</table>
-			<table name="Field" rid="0x04">
-				<column name="Flags" type="Mono.Cecil.FieldAttributes" />
-				<column name="Name" type="uint" target="StringsHeap" />
-				<column name="Signature" type="uint" target="BlobHeap" />
-			</table>
-			<table name="FieldLayout" rid="0x10">
-				<column name="Offset" type="uint" />
-				<column name="Field" type="uint" target="Field" />
-			</table>
-			<table name="FieldMarshal" rid="0x0d">
-				<column name="Parent" type="Mono.Cecil.Metadata.MetadataToken" target="HasFieldMarshal" />
-				<column name="NativeType" type="uint" target="BlobHeap" />
-			</table>
-			<table name="FieldPtr" rid="0x03">
-				<column name="Field" type="uint" target="Field" />
-			</table>
-			<table name="FieldRVA" rid="0x1d">
-				<column name="RVA" type="Mono.Cecil.Binary.RVA" />
-				<column name="Field" type="uint" target="Field" />
-			</table>
-			<table name="File" rid="0x26">
-				<column name="Flags" type="Mono.Cecil.FileAttributes" />
-				<column name="Name" type="uint" target="StringsHeap" />
-				<column name="HashValue" type="uint" target="BlobHeap" />
-			</table>
-			<table name="GenericParam" rid="0x2a" requires="NET_2_0">
-				<column name="Number" type="ushort" />
-				<column name="Flags" type="Mono.Cecil.GenericParameterAttributes" />
-				<column name="Owner" type="Mono.Cecil.Metadata.MetadataToken" target="TypeOrMethodDef" />
-				<column name="Name" type="uint" target="StringsHeap" />
-			</table>
-			<table name="GenericParamConstraint" rid="0x2c" requires="NET_2_0">
-				<column name="Owner" type="uint" target="GenericParam" />
-				<column name="Constraint" type="Mono.Cecil.Metadata.MetadataToken" target="TypeDefOrRef" />
-			</table>
-			<table name="ImplMap" rid="0x1c">
-				<column name="MappingFlags" type="Mono.Cecil.PInvokeAttributes" />
-				<column name="MemberForwarded" type="Mono.Cecil.Metadata.MetadataToken" target="MemberForwarded" />
-				<column name="ImportName" type="uint" target="StringsHeap" />
-				<column name="ImportScope" type="uint" target="ModuleRef" />
-			</table>
-			<table name="InterfaceImpl" rid="0x09">
-				<column name="Class" type="uint" target="TypeDef" />
-				<column name="Interface" type="Mono.Cecil.Metadata.MetadataToken" target="TypeDefOrRef" />
-			</table>
-			<table name="ManifestResource" rid="0x28">
-				<column name="Offset" type="uint" />
-				<column name="Flags" type="Mono.Cecil.ManifestResourceAttributes" />
-				<column name="Name" type="uint" target="StringsHeap" />
-				<column name="Implementation" type="Mono.Cecil.Metadata.MetadataToken" target="Implementation" />
-			</table>
-			<table name="MemberRef" rid="0x0a">
-				<column name="Class" type="Mono.Cecil.Metadata.MetadataToken" target="MemberRefParent" />
-				<column name="Name" type="uint" target="StringsHeap" />
-				<column name="Signature" type="uint" target="BlobHeap" />
-			</table>
-			<table name="Method" rid="0x06">
-				<column name="RVA" type="Mono.Cecil.Binary.RVA" />
-				<column name="ImplFlags" type="Mono.Cecil.MethodImplAttributes" />
-				<column name="Flags" type="Mono.Cecil.MethodAttributes" />
-				<column name="Name" type="uint" target="StringsHeap" />
-				<column name="Signature" type="uint" target="BlobHeap" />
-				<column name="ParamList" type="uint" target="Param" />
-			</table>
-			<table name="MethodImpl" rid="0x19">
-				<column name="Class" type="uint" target="TypeDef" />
-				<column name="MethodBody" type="Mono.Cecil.Metadata.MetadataToken" target="MethodDefOrRef" />
-				<column name="MethodDeclaration" type="Mono.Cecil.Metadata.MetadataToken" target="MethodDefOrRef" />
-			</table>
-			<table name="MethodPtr" rid="0x05">
-				<column name="Method" type="uint" target="Method" />
-			</table>
-			<table name="MethodSemantics" rid="0x18">
-				<column name="Semantics" type="Mono.Cecil.MethodSemanticsAttributes" />
-				<column name="Method" type="uint" target="Method" />
-				<column name="Association" type="Mono.Cecil.Metadata.MetadataToken" target="HasSemantics" />
-			</table>
-			<table name="MethodSpec" rid="0x2b" requires="NET_2_0">
-				<column name="Method" type="Mono.Cecil.Metadata.MetadataToken" target="MethodDefOrRef" />
-				<column name="Instantiation" type="uint" target="BlobHeap" />
-			</table>
-			<table name="Module" rid="0x00">
-				<column name="Generation" type="ushort" />
-				<column name="Name" type="uint" target="StringsHeap" />
-				<column name="Mvid" type="uint" target="GuidHeap" />
-				<column name="EncId" type="uint" target="GuidHeap" />
-				<column name="EncBaseId" type="uint" target="GuidHeap" />
-			</table>
-			<table name="ModuleRef" rid="0x1a">
-				<column name="Name" type="uint" target="StringsHeap" />
-			</table>
-			<table name="NestedClass" rid="0x29">
-				<column name="NestedClass" type="uint" target="TypeDef" />
-				<column name="EnclosingClass" type="uint" target="TypeDef" />
-			</table>
-			<table name="Param" rid="0x08">
-				<column name="Flags" type="Mono.Cecil.ParameterAttributes" />
-				<column name="Sequence" type="ushort" />
-				<column name="Name" type="uint" target="StringsHeap" />
-			</table>
-			<table name="ParamPtr" rid="0x07">
-				<column name="Param" type="uint" target="Param" />
-			</table>
-			<table name="Property" rid="0x17">
-				<column name="Flags" type="Mono.Cecil.PropertyAttributes" />
-				<column name="Name" type="uint" target="StringsHeap" />
-				<column name="Type" type="uint" target="BlobHeap" />
-			</table>
-			<table name="PropertyMap" rid="0x15">
-				<column name="Parent" type="uint" target="TypeDef" />
-				<column name="PropertyList" type="uint" target="Property" />
-			</table>
-			<table name="PropertyPtr" rid="0x16">
-				<column name="Property" type="uint" target="Property" />
-			</table>
-			<table name="StandAloneSig" rid="0x11">
-				<column name="Signature" type="uint" target="BlobHeap" />
-			</table>
-			<table name="TypeDef" rid="0x02">
-				<column name="Flags" type="Mono.Cecil.TypeAttributes" />
-				<column name="Name" type="uint" target="StringsHeap" />
-				<column name="Namespace" type="uint" target="StringsHeap" />
-				<column name="Extends" type="Mono.Cecil.Metadata.MetadataToken" target="TypeDefOrRef" />
-				<column name="FieldList" type="uint" target="Field" />
-				<column name="MethodList" type="uint" target="Method" />
-			</table>
-			<table name="TypeRef" rid="0x01">
-				<column name="ResolutionScope" type="Mono.Cecil.Metadata.MetadataToken" target="ResolutionScope" />
-				<column name="Name" type="uint" target="StringsHeap" />
-				<column name="Namespace" type="uint" target="StringsHeap" />
-			</table>
-			<table name="TypeSpec" rid="0x1b">
-				<column name="Signature" type="uint" target="BlobHeap" />
-			</table>
-		</tables>
-
-		<codedindexes>
-			<codedindex name="TypeDefOrRef" size="2">
-				<table name="TypeDef" tag="0" />
-				<table name="TypeRef" tag="1" />
-				<table name="TypeSpec" tag="2" />
-			</codedindex>
-			<codedindex name="HasConstant" size="2">
-				<table name="Field" tag="0" />
-				<table name="Param" tag="1" />
-				<table name="Property" tag="2" />
-			</codedindex>
-			<codedindex name="HasCustomAttribute" size="5">
-				<table name="Method" tag="0" />
-				<table name="Field" tag="1" />
-				<table name="TypeRef" tag="2" />
-				<table name="TypeDef" tag="3" />
-				<table name="Param" tag="4" />
-				<table name="InterfaceImpl" tag="5" />
-				<table name="MemberRef" tag="6" />
-				<table name="Module" tag="7" />
-				<table name="DeclSecurity" tag="8" />
-				<table name="Property" tag="9" />
-				<table name="Event" tag="10" />
-				<table name="StandAloneSig" tag="11" />
-				<table name="ModuleRef" tag="12" />
-				<table name="TypeSpec" tag="13" />
-				<table name="Assembly" tag="14" />
-				<table name="AssemblyRef" tag="15" />
-				<table name="File" tag="16" />
-				<table name="ExportedType" tag="17" />
-				<table name="ManifestResource" tag="18" />
-				<table name="GenericParam" tag="19" />
-			</codedindex>
-			<codedindex name="HasFieldMarshal" size="1">
-				<table name="Field" tag="0" />
-				<table name="Param" tag="1" />
-			</codedindex>
-			<codedindex name="HasDeclSecurity" size="2">
-				<table name="TypeDef" tag="0" />
-				<table name="Method" tag="1" />
-				<table name="Assembly" tag="2" />
-			</codedindex>
-			<codedindex name="MemberRefParent" size="3">
-				<table name="TypeDef" tag="0" />
-				<table name="TypeRef" tag="1" />
-				<table name="ModuleRef" tag="2" />
-				<table name="Method" tag="3" />
-				<table name="TypeSpec" tag="4" />
-			</codedindex>
-			<codedindex name="HasSemantics" size="1">
-				<table name="Event" tag="0" />
-				<table name="Property" tag="1" />
-			</codedindex>
-			<codedindex name="MethodDefOrRef" size="1">
-				<table name="Method" tag="0" />
-				<table name="MemberRef" tag="1" />
-			</codedindex>
-			<codedindex name="MemberForwarded" size="1">
-				<table name="Field" tag="0" />
-				<table name="Method" tag="1" />
-			</codedindex>
-			<codedindex name="Implementation" size="2">
-				<table name="File" tag="0" />
-				<table name="AssemblyRef" tag="1" />
-				<table name="ExportedType" tag="2" />
-			</codedindex>
-			<codedindex name="CustomAttributeType" size="3">
-				<table name="Method" tag="2" />
-				<table name="MemberRef" tag="3" />
-			</codedindex>
-			<codedindex name="ResolutionScope" size="2">
-				<table name="Module" tag="0" />
-				<table name="ModuleRef" tag="1" />
-				<table name="AssemblyRef" tag="2" />
-				<table name="TypeRef" tag="3" />
-			</codedindex>
-			<codedindex name="TypeOrMethodDef" size="1" requires="NET_2_0">
-				<table name="TypeDef" tag="0" />
-				<table name="Method" tag="1" />
-			</codedindex>
-		</codedindexes>
-
-		<!--
-			This part contains all the standards opcodes
-		-->
-		<opcodes>
-			<opcode name="nop" op1="0xff" op2="0x00" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Push0" />
-			<opcode name="break" op1="0xff" op2="0x01" flowcontrol="Break" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Push0" />
-			<opcode name="ldarg.0" op1="0xff" op2="0x02" flowcontrol="Next" opcodetype="Macro" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Push1" />
-			<opcode name="ldarg.1" op1="0xff" op2="0x03" flowcontrol="Next" opcodetype="Macro" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Push1" />
-			<opcode name="ldarg.2" op1="0xff" op2="0x04" flowcontrol="Next" opcodetype="Macro" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Push1" />
-			<opcode name="ldarg.3" op1="0xff" op2="0x05" flowcontrol="Next" opcodetype="Macro" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Push1" />
-			<opcode name="ldloc.0" op1="0xff" op2="0x06" flowcontrol="Next" opcodetype="Macro" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Push1" />
-			<opcode name="ldloc.1" op1="0xff" op2="0x07" flowcontrol="Next" opcodetype="Macro" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Push1" />
-			<opcode name="ldloc.2" op1="0xff" op2="0x08" flowcontrol="Next" opcodetype="Macro" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Push1" />
-			<opcode name="ldloc.3" op1="0xff" op2="0x09" flowcontrol="Next" opcodetype="Macro" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Push1" />
-			<opcode name="stloc.0" op1="0xff" op2="0x0a" flowcontrol="Next" opcodetype="Macro" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Push0" />
-			<opcode name="stloc.1" op1="0xff" op2="0x0b" flowcontrol="Next" opcodetype="Macro" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Push0" />
-			<opcode name="stloc.2" op1="0xff" op2="0x0c" flowcontrol="Next" opcodetype="Macro" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Push0" />
-			<opcode name="stloc.3" op1="0xff" op2="0x0d" flowcontrol="Next" opcodetype="Macro" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Push0" />
-			<opcode name="ldarg.s" op1="0xff" op2="0x0e" flowcontrol="Next" opcodetype="Macro" operandtype="ShortInlineParam" stackbehaviourpop="Pop0" stackbehaviourpush="Push1" />
-			<opcode name="ldarga.s" op1="0xff" op2="0x0f" flowcontrol="Next" opcodetype="Macro" operandtype="ShortInlineParam" stackbehaviourpop="Pop0" stackbehaviourpush="Pushi" />
-			<opcode name="starg.s" op1="0xff" op2="0x10" flowcontrol="Next" opcodetype="Macro" operandtype="ShortInlineParam" stackbehaviourpop="Pop1" stackbehaviourpush="Push0" />
-			<opcode name="ldloc.s" op1="0xff" op2="0x11" flowcontrol="Next" opcodetype="Macro" operandtype="ShortInlineVar" stackbehaviourpop="Pop0" stackbehaviourpush="Push1" />
-			<opcode name="ldloca.s" op1="0xff" op2="0x12" flowcontrol="Next" opcodetype="Macro" operandtype="ShortInlineVar" stackbehaviourpop="Pop0" stackbehaviourpush="Pushi" />
-			<opcode name="stloc.s" op1="0xff" op2="0x13" flowcontrol="Next" opcodetype="Macro" operandtype="ShortInlineVar" stackbehaviourpop="Pop1" stackbehaviourpush="Push0" />
-			<opcode name="ldnull" op1="0xff" op2="0x14" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Pushref" />
-			<opcode name="ldc.i4.m1" op1="0xff" op2="0x15" flowcontrol="Next" opcodetype="Macro" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Pushi" />
-			<opcode name="ldc.i4.0" op1="0xff" op2="0x16" flowcontrol="Next" opcodetype="Macro" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Pushi" />
-			<opcode name="ldc.i4.1" op1="0xff" op2="0x17" flowcontrol="Next" opcodetype="Macro" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Pushi" />
-			<opcode name="ldc.i4.2" op1="0xff" op2="0x18" flowcontrol="Next" opcodetype="Macro" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Pushi" />
-			<opcode name="ldc.i4.3" op1="0xff" op2="0x19" flowcontrol="Next" opcodetype="Macro" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Pushi" />
-			<opcode name="ldc.i4.4" op1="0xff" op2="0x1a" flowcontrol="Next" opcodetype="Macro" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Pushi" />
-			<opcode name="ldc.i4.5" op1="0xff" op2="0x1b" flowcontrol="Next" opcodetype="Macro" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Pushi" />
-			<opcode name="ldc.i4.6" op1="0xff" op2="0x1c" flowcontrol="Next" opcodetype="Macro" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Pushi" />
-			<opcode name="ldc.i4.7" op1="0xff" op2="0x1d" flowcontrol="Next" opcodetype="Macro" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Pushi" />
-			<opcode name="ldc.i4.8" op1="0xff" op2="0x1e" flowcontrol="Next" opcodetype="Macro" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Pushi" />
-			<opcode name="ldc.i4.s" op1="0xff" op2="0x1f" flowcontrol="Next" opcodetype="Macro" operandtype="ShortInlineI" stackbehaviourpop="Pop0" stackbehaviourpush="Pushi" />
-			<opcode name="ldc.i4" op1="0xff" op2="0x20" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineI" stackbehaviourpop="Pop0" stackbehaviourpush="Pushi" />
-			<opcode name="ldc.i8" op1="0xff" op2="0x21" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineI8" stackbehaviourpop="Pop0" stackbehaviourpush="Pushi8" />
-			<opcode name="ldc.r4" op1="0xff" op2="0x22" flowcontrol="Next" opcodetype="Primitive" operandtype="ShortInlineR" stackbehaviourpop="Pop0" stackbehaviourpush="Pushr4" />
-			<opcode name="ldc.r8" op1="0xff" op2="0x23" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineR" stackbehaviourpop="Pop0" stackbehaviourpush="Pushr8" />
-			<opcode name="dup" op1="0xff" op2="0x25" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Push1_push1" />
-			<opcode name="pop" op1="0xff" op2="0x26" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Push0" />
-			<opcode name="jmp" op1="0xff" op2="0x27" flowcontrol="Call" opcodetype="Primitive" operandtype="InlineMethod" stackbehaviourpop="Pop0" stackbehaviourpush="Push0" />
-			<opcode name="call" op1="0xff" op2="0x28" flowcontrol="Call" opcodetype="Primitive" operandtype="InlineMethod" stackbehaviourpop="Varpop" stackbehaviourpush="Varpush" />
-			<opcode name="calli" op1="0xff" op2="0x29" flowcontrol="Call" opcodetype="Primitive" operandtype="InlineSig" stackbehaviourpop="Varpop" stackbehaviourpush="Varpush" />
-			<opcode name="ret" op1="0xff" op2="0x2a" flowcontrol="Return" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Varpop" stackbehaviourpush="Push0" />
-			<opcode name="br.s" op1="0xff" op2="0x2b" flowcontrol="Branch" opcodetype="Macro" operandtype="ShortInlineBrTarget" stackbehaviourpop="Pop0" stackbehaviourpush="Push0" />
-			<opcode name="brfalse.s" op1="0xff" op2="0x2c" flowcontrol="Cond_Branch" opcodetype="Macro" operandtype="ShortInlineBrTarget" stackbehaviourpop="Popi" stackbehaviourpush="Push0" />
-			<opcode name="brtrue.s" op1="0xff" op2="0x2d" flowcontrol="Cond_Branch" opcodetype="Macro" operandtype="ShortInlineBrTarget" stackbehaviourpop="Popi" stackbehaviourpush="Push0" />
-			<opcode name="beq.s" op1="0xff" op2="0x2e" flowcontrol="Cond_Branch" opcodetype="Macro" operandtype="ShortInlineBrTarget" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push0" />
-			<opcode name="bge.s" op1="0xff" op2="0x2f" flowcontrol="Cond_Branch" opcodetype="Macro" operandtype="ShortInlineBrTarget" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push0" />
-			<opcode name="bgt.s" op1="0xff" op2="0x30" flowcontrol="Cond_Branch" opcodetype="Macro" operandtype="ShortInlineBrTarget" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push0" />
-			<opcode name="ble.s" op1="0xff" op2="0x31" flowcontrol="Cond_Branch" opcodetype="Macro" operandtype="ShortInlineBrTarget" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push0" />
-			<opcode name="blt.s" op1="0xff" op2="0x32" flowcontrol="Cond_Branch" opcodetype="Macro" operandtype="ShortInlineBrTarget" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push0" />
-			<opcode name="bne.un.s" op1="0xff" op2="0x33" flowcontrol="Cond_Branch" opcodetype="Macro" operandtype="ShortInlineBrTarget" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push0" />
-			<opcode name="bge.un.s" op1="0xff" op2="0x34" flowcontrol="Cond_Branch" opcodetype="Macro" operandtype="ShortInlineBrTarget" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push0" />
-			<opcode name="bgt.un.s" op1="0xff" op2="0x35" flowcontrol="Cond_Branch" opcodetype="Macro" operandtype="ShortInlineBrTarget" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push0" />
-			<opcode name="ble.un.s" op1="0xff" op2="0x36" flowcontrol="Cond_Branch" opcodetype="Macro" operandtype="ShortInlineBrTarget" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push0" />
-			<opcode name="blt.un.s" op1="0xff" op2="0x37" flowcontrol="Cond_Branch" opcodetype="Macro" operandtype="ShortInlineBrTarget" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push0" />
-			<opcode name="br" op1="0xff" op2="0x38" flowcontrol="Branch" opcodetype="Primitive" operandtype="InlineBrTarget" stackbehaviourpop="Pop0" stackbehaviourpush="Push0" />
-			<opcode name="brfalse" op1="0xff" op2="0x39" flowcontrol="Cond_Branch" opcodetype="Primitive" operandtype="InlineBrTarget" stackbehaviourpop="Popi" stackbehaviourpush="Push0" />
-			<opcode name="brtrue" op1="0xff" op2="0x3a" flowcontrol="Cond_Branch" opcodetype="Primitive" operandtype="InlineBrTarget" stackbehaviourpop="Popi" stackbehaviourpush="Push0" />
-			<opcode name="beq" op1="0xff" op2="0x3b" flowcontrol="Cond_Branch" opcodetype="Macro" operandtype="InlineBrTarget" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push0" />
-			<opcode name="bge" op1="0xff" op2="0x3c" flowcontrol="Cond_Branch" opcodetype="Macro" operandtype="InlineBrTarget" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push0" />
-			<opcode name="bgt" op1="0xff" op2="0x3d" flowcontrol="Cond_Branch" opcodetype="Macro" operandtype="InlineBrTarget" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push0" />
-			<opcode name="ble" op1="0xff" op2="0x3e" flowcontrol="Cond_Branch" opcodetype="Macro" operandtype="InlineBrTarget" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push0" />
-			<opcode name="blt" op1="0xff" op2="0x3f" flowcontrol="Cond_Branch" opcodetype="Macro" operandtype="InlineBrTarget" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push0" />
-			<opcode name="bne.un" op1="0xff" op2="0x40" flowcontrol="Cond_Branch" opcodetype="Macro" operandtype="InlineBrTarget" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push0" />
-			<opcode name="bge.un" op1="0xff" op2="0x41" flowcontrol="Cond_Branch" opcodetype="Macro" operandtype="InlineBrTarget" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push0" />
-			<opcode name="bgt.un" op1="0xff" op2="0x42" flowcontrol="Cond_Branch" opcodetype="Macro" operandtype="InlineBrTarget" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push0" />
-			<opcode name="ble.un" op1="0xff" op2="0x43" flowcontrol="Cond_Branch" opcodetype="Macro" operandtype="InlineBrTarget" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push0" />
-			<opcode name="blt.un" op1="0xff" op2="0x44" flowcontrol="Cond_Branch" opcodetype="Macro" operandtype="InlineBrTarget" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push0" />
-			<opcode name="switch" op1="0xff" op2="0x45" flowcontrol="Cond_Branch" opcodetype="Primitive" operandtype="InlineSwitch" stackbehaviourpop="Popi" stackbehaviourpush="Push0" />
-			<opcode name="ldind.i1" op1="0xff" op2="0x46" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Popi" stackbehaviourpush="Pushi" />
-			<opcode name="ldind.u1" op1="0xff" op2="0x47" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Popi" stackbehaviourpush="Pushi" />
-			<opcode name="ldind.i2" op1="0xff" op2="0x48" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Popi" stackbehaviourpush="Pushi" />
-			<opcode name="ldind.u2" op1="0xff" op2="0x49" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Popi" stackbehaviourpush="Pushi" />
-			<opcode name="ldind.i4" op1="0xff" op2="0x4a" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Popi" stackbehaviourpush="Pushi" />
-			<opcode name="ldind.u4" op1="0xff" op2="0x4b" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Popi" stackbehaviourpush="Pushi" />
-			<opcode name="ldind.i8" op1="0xff" op2="0x4c" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Popi" stackbehaviourpush="Pushi8" />
-			<opcode name="ldind.i" op1="0xff" op2="0x4d" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Popi" stackbehaviourpush="Pushi" />
-			<opcode name="ldind.r4" op1="0xff" op2="0x4e" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Popi" stackbehaviourpush="Pushr4" />
-			<opcode name="ldind.r8" op1="0xff" op2="0x4f" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Popi" stackbehaviourpush="Pushr8" />
-			<opcode name="ldind.ref" op1="0xff" op2="0x50" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Popi" stackbehaviourpush="Pushref" />
-			<opcode name="stind.ref" op1="0xff" op2="0x51" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Popi_popi" stackbehaviourpush="Push0" />
-			<opcode name="stind.i1" op1="0xff" op2="0x52" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Popi_popi" stackbehaviourpush="Push0" />
-			<opcode name="stind.i2" op1="0xff" op2="0x53" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Popi_popi" stackbehaviourpush="Push0" />
-			<opcode name="stind.i4" op1="0xff" op2="0x54" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Popi_popi" stackbehaviourpush="Push0" />
-			<opcode name="stind.i8" op1="0xff" op2="0x55" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Popi_popi8" stackbehaviourpush="Push0" />
-			<opcode name="stind.r4" op1="0xff" op2="0x56" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Popi_popr4" stackbehaviourpush="Push0" />
-			<opcode name="stind.r8" op1="0xff" op2="0x57" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Popi_popr8" stackbehaviourpush="Push0" />
-			<opcode name="add" op1="0xff" op2="0x58" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push1" />
-			<opcode name="sub" op1="0xff" op2="0x59" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push1" />
-			<opcode name="mul" op1="0xff" op2="0x5a" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push1" />
-			<opcode name="div" op1="0xff" op2="0x5b" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push1" />
-			<opcode name="div.un" op1="0xff" op2="0x5c" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push1" />
-			<opcode name="rem" op1="0xff" op2="0x5d" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push1" />
-			<opcode name="rem.un" op1="0xff" op2="0x5e" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push1" />
-			<opcode name="and" op1="0xff" op2="0x5f" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push1" />
-			<opcode name="or" op1="0xff" op2="0x60" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push1" />
-			<opcode name="xor" op1="0xff" op2="0x61" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push1" />
-			<opcode name="shl" op1="0xff" op2="0x62" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push1" />
-			<opcode name="shr" op1="0xff" op2="0x63" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push1" />
-			<opcode name="shr.un" op1="0xff" op2="0x64" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push1" />
-			<opcode name="neg" op1="0xff" op2="0x65" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Push1" />
-			<opcode name="not" op1="0xff" op2="0x66" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Push1" />
-			<opcode name="conv.i1" op1="0xff" op2="0x67" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi" />
-			<opcode name="conv.i2" op1="0xff" op2="0x68" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi" />
-			<opcode name="conv.i4" op1="0xff" op2="0x69" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi" />
-			<opcode name="conv.i8" op1="0xff" op2="0x6a" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi8" />
-			<opcode name="conv.r4" op1="0xff" op2="0x6b" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushr4" />
-			<opcode name="conv.r8" op1="0xff" op2="0x6c" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushr8" />
-			<opcode name="conv.u4" op1="0xff" op2="0x6d" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi" />
-			<opcode name="conv.u8" op1="0xff" op2="0x6e" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi8" />
-			<opcode name="callvirt" op1="0xff" op2="0x6f" flowcontrol="Call" opcodetype="Objmodel" operandtype="InlineMethod" stackbehaviourpop="Varpop" stackbehaviourpush="Varpush" />
-			<opcode name="cpobj" op1="0xff" op2="0x70" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineType" stackbehaviourpop="Popi_popi" stackbehaviourpush="Push0" />
-			<opcode name="ldobj" op1="0xff" op2="0x71" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineType" stackbehaviourpop="Popi" stackbehaviourpush="Push1" />
-			<opcode name="ldstr" op1="0xff" op2="0x72" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineString" stackbehaviourpop="Pop0" stackbehaviourpush="Pushref" />
-			<opcode name="newobj" op1="0xff" op2="0x73" flowcontrol="Call" opcodetype="Objmodel" operandtype="InlineMethod" stackbehaviourpop="Varpop" stackbehaviourpush="Pushref" />
-			<opcode name="castclass" op1="0xff" op2="0x74" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineType" stackbehaviourpop="Popref" stackbehaviourpush="Pushref" />
-			<opcode name="isinst" op1="0xff" op2="0x75" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineType" stackbehaviourpop="Popref" stackbehaviourpush="Pushi" />
-			<opcode name="conv.r.un" op1="0xff" op2="0x76" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushr8" />
-			<opcode name="unbox" op1="0xff" op2="0x79" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineType" stackbehaviourpop="Popref" stackbehaviourpush="Pushi" />
-			<opcode name="throw" op1="0xff" op2="0x7a" flowcontrol="Throw" opcodetype="Objmodel" operandtype="InlineNone" stackbehaviourpop="Popref" stackbehaviourpush="Push0" />
-			<opcode name="ldfld" op1="0xff" op2="0x7b" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineField" stackbehaviourpop="Popref" stackbehaviourpush="Push1" />
-			<opcode name="ldflda" op1="0xff" op2="0x7c" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineField" stackbehaviourpop="Popref" stackbehaviourpush="Pushi" />
-			<opcode name="stfld" op1="0xff" op2="0x7d" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineField" stackbehaviourpop="Popref_pop1" stackbehaviourpush="Push0" />
-			<opcode name="ldsfld" op1="0xff" op2="0x7e" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineField" stackbehaviourpop="Pop0" stackbehaviourpush="Push1" />
-			<opcode name="ldsflda" op1="0xff" op2="0x7f" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineField" stackbehaviourpop="Pop0" stackbehaviourpush="Pushi" />
-			<opcode name="stsfld" op1="0xff" op2="0x80" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineField" stackbehaviourpop="Pop1" stackbehaviourpush="Push0" />
-			<opcode name="stobj" op1="0xff" op2="0x81" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineType" stackbehaviourpop="Popi_pop1" stackbehaviourpush="Push0" />
-			<opcode name="conv.ovf.i1.un" op1="0xff" op2="0x82" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi" />
-			<opcode name="conv.ovf.i2.un" op1="0xff" op2="0x83" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi" />
-			<opcode name="conv.ovf.i4.un" op1="0xff" op2="0x84" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi" />
-			<opcode name="conv.ovf.i8.un" op1="0xff" op2="0x85" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi8" />
-			<opcode name="conv.ovf.u1.un" op1="0xff" op2="0x86" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi" />
-			<opcode name="conv.ovf.u2.un" op1="0xff" op2="0x87" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi" />
-			<opcode name="conv.ovf.u4.un" op1="0xff" op2="0x88" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi" />
-			<opcode name="conv.ovf.u8.un" op1="0xff" op2="0x89" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi8" />
-			<opcode name="conv.ovf.i.un" op1="0xff" op2="0x8a" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi" />
-			<opcode name="conv.ovf.u.un" op1="0xff" op2="0x8b" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi" />
-			<opcode name="box" op1="0xff" op2="0x8c" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineType" stackbehaviourpop="Pop1" stackbehaviourpush="Pushref" />
-			<opcode name="newarr" op1="0xff" op2="0x8d" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineType" stackbehaviourpop="Popi" stackbehaviourpush="Pushref" />
-			<opcode name="ldlen" op1="0xff" op2="0x8e" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineNone" stackbehaviourpop="Popref" stackbehaviourpush="Pushi" />
-			<opcode name="ldelema" op1="0xff" op2="0x8f" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineType" stackbehaviourpop="Popref_popi" stackbehaviourpush="Pushi" />
-			<opcode name="ldelem.i1" op1="0xff" op2="0x90" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineNone" stackbehaviourpop="Popref_popi" stackbehaviourpush="Pushi" />
-			<opcode name="ldelem.u1" op1="0xff" op2="0x91" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineNone" stackbehaviourpop="Popref_popi" stackbehaviourpush="Pushi" />
-			<opcode name="ldelem.i2" op1="0xff" op2="0x92" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineNone" stackbehaviourpop="Popref_popi" stackbehaviourpush="Pushi" />
-			<opcode name="ldelem.u2" op1="0xff" op2="0x93" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineNone" stackbehaviourpop="Popref_popi" stackbehaviourpush="Pushi" />
-			<opcode name="ldelem.i4" op1="0xff" op2="0x94" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineNone" stackbehaviourpop="Popref_popi" stackbehaviourpush="Pushi" />
-			<opcode name="ldelem.u4" op1="0xff" op2="0x95" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineNone" stackbehaviourpop="Popref_popi" stackbehaviourpush="Pushi" />
-			<opcode name="ldelem.i8" op1="0xff" op2="0x96" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineNone" stackbehaviourpop="Popref_popi" stackbehaviourpush="Pushi8" />
-			<opcode name="ldelem.i" op1="0xff" op2="0x97" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineNone" stackbehaviourpop="Popref_popi" stackbehaviourpush="Pushi" />
-			<opcode name="ldelem.r4" op1="0xff" op2="0x98" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineNone" stackbehaviourpop="Popref_popi" stackbehaviourpush="Pushr4" />
-			<opcode name="ldelem.r8" op1="0xff" op2="0x99" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineNone" stackbehaviourpop="Popref_popi" stackbehaviourpush="Pushr8" />
-			<opcode name="ldelem.ref" op1="0xff" op2="0x9a" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineNone" stackbehaviourpop="Popref_popi" stackbehaviourpush="Pushref" />
-			<opcode name="stelem.i" op1="0xff" op2="0x9b" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineNone" stackbehaviourpop="Popref_popi_popi" stackbehaviourpush="Push0" />
-			<opcode name="stelem.i1" op1="0xff" op2="0x9c" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineNone" stackbehaviourpop="Popref_popi_popi" stackbehaviourpush="Push0" />
-			<opcode name="stelem.i2" op1="0xff" op2="0x9d" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineNone" stackbehaviourpop="Popref_popi_popi" stackbehaviourpush="Push0" />
-			<opcode name="stelem.i4" op1="0xff" op2="0x9e" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineNone" stackbehaviourpop="Popref_popi_popi" stackbehaviourpush="Push0" />
-			<opcode name="stelem.i8" op1="0xff" op2="0x9f" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineNone" stackbehaviourpop="Popref_popi_popi8" stackbehaviourpush="Push0" />
-			<opcode name="stelem.r4" op1="0xff" op2="0xa0" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineNone" stackbehaviourpop="Popref_popi_popr4" stackbehaviourpush="Push0" />
-			<opcode name="stelem.r8" op1="0xff" op2="0xa1" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineNone" stackbehaviourpop="Popref_popi_popr8" stackbehaviourpush="Push0" />
-			<opcode name="stelem.ref" op1="0xff" op2="0xa2" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineNone" stackbehaviourpop="Popref_popi_popref" stackbehaviourpush="Push0" />
-			<opcode name="ldelem.any" op1="0xff" op2="0xa3" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineType" stackbehaviourpop="Popref_popi" stackbehaviourpush="Push1" requires="NET_2_0" />
-			<opcode name="stelem.any" op1="0xff" op2="0xa4" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineType" stackbehaviourpop="Popref_popi_popref" stackbehaviourpush="Push0" requires="NET_2_0" />
-			<opcode name="unbox.any" op1="0xff" op2="0xa5" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineType" stackbehaviourpop="Popref" stackbehaviourpush="Push1" requires="NET_2_0" />
-			<opcode name="conv.ovf.i1" op1="0xff" op2="0xb3" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi" />
-			<opcode name="conv.ovf.u1" op1="0xff" op2="0xb4" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi" />
-			<opcode name="conv.ovf.i2" op1="0xff" op2="0xb5" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi" />
-			<opcode name="conv.ovf.u2" op1="0xff" op2="0xb6" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi" />
-			<opcode name="conv.ovf.i4" op1="0xff" op2="0xb7" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi" />
-			<opcode name="conv.ovf.u4" op1="0xff" op2="0xb8" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi" />
-			<opcode name="conv.ovf.i8" op1="0xff" op2="0xb9" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi8" />
-			<opcode name="conv.ovf.u8" op1="0xff" op2="0xba" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi8" />
-			<opcode name="refanyval" op1="0xff" op2="0xc2" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineType" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi" />
-			<opcode name="ckfinite" op1="0xff" op2="0xc3" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushr8" />
-			<opcode name="mkrefany" op1="0xff" op2="0xc6" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineType" stackbehaviourpop="Popi" stackbehaviourpush="Push1" />
-			<opcode name="ldtoken" op1="0xff" op2="0xd0" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineTok" stackbehaviourpop="Pop0" stackbehaviourpush="Pushi" />
-			<opcode name="conv.u2" op1="0xff" op2="0xd1" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi" />
-			<opcode name="conv.u1" op1="0xff" op2="0xd2" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi" />
-			<opcode name="conv.i" op1="0xff" op2="0xd3" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi" />
-			<opcode name="conv.ovf.i" op1="0xff" op2="0xd4" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi" />
-			<opcode name="conv.ovf.u" op1="0xff" op2="0xd5" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi" />
-			<opcode name="add.ovf" op1="0xff" op2="0xd6" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push1" />
-			<opcode name="add.ovf.un" op1="0xff" op2="0xd7" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push1" />
-			<opcode name="mul.ovf" op1="0xff" op2="0xd8" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push1" />
-			<opcode name="mul.ovf.un" op1="0xff" op2="0xd9" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push1" />
-			<opcode name="sub.ovf" op1="0xff" op2="0xda" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push1" />
-			<opcode name="sub.ovf.un" op1="0xff" op2="0xdb" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Push1" />
-			<opcode name="endfinally" op1="0xff" op2="0xdc" flowcontrol="Return" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Push0" />
-			<opcode name="leave" op1="0xff" op2="0xdd" flowcontrol="Branch" opcodetype="Primitive" operandtype="InlineBrTarget" stackbehaviourpop="PopAll" stackbehaviourpush="Push0" />
-			<opcode name="leave.s" op1="0xff" op2="0xde" flowcontrol="Branch" opcodetype="Macro" operandtype="ShortInlineBrTarget" stackbehaviourpop="PopAll" stackbehaviourpush="Push0" />
-			<opcode name="stind.i" op1="0xff" op2="0xdf" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Popi_popi" stackbehaviourpush="Push0" />
-			<opcode name="conv.u" op1="0xff" op2="0xe0" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi" />
-			<opcode name="arglist" op1="0xfe" op2="0x00" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Pushi" />
-			<opcode name="ceq" op1="0xfe" op2="0x01" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Pushi" />
-			<opcode name="cgt" op1="0xfe" op2="0x02" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Pushi" />
-			<opcode name="cgt.un" op1="0xfe" op2="0x03" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Pushi" />
-			<opcode name="clt" op1="0xfe" op2="0x04" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Pushi" />
-			<opcode name="clt.un" op1="0xfe" op2="0x05" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1_pop1" stackbehaviourpush="Pushi" />
-			<opcode name="ldftn" op1="0xfe" op2="0x06" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineMethod" stackbehaviourpop="Pop0" stackbehaviourpush="Pushi" />
-			<opcode name="ldvirtftn" op1="0xfe" op2="0x07" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineMethod" stackbehaviourpop="Popref" stackbehaviourpush="Pushi" />
-			<opcode name="ldarg" op1="0xfe" op2="0x09" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineParam" stackbehaviourpop="Pop0" stackbehaviourpush="Push1" />
-			<opcode name="ldarga" op1="0xfe" op2="0x0a" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineParam" stackbehaviourpop="Pop0" stackbehaviourpush="Pushi" />
-			<opcode name="starg" op1="0xfe" op2="0x0b" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineParam" stackbehaviourpop="Pop1" stackbehaviourpush="Push0" />
-			<opcode name="ldloc" op1="0xfe" op2="0x0c" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineVar" stackbehaviourpop="Pop0" stackbehaviourpush="Push1" />
-			<opcode name="ldloca" op1="0xfe" op2="0x0d" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineVar" stackbehaviourpop="Pop0" stackbehaviourpush="Pushi" />
-			<opcode name="stloc" op1="0xfe" op2="0x0e" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineVar" stackbehaviourpop="Pop1" stackbehaviourpush="Push0" />
-			<opcode name="localloc" op1="0xfe" op2="0x0f" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Popi" stackbehaviourpush="Pushi" />
-			<opcode name="endfilter" op1="0xfe" op2="0x11" flowcontrol="Return" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Popi" stackbehaviourpush="Push0" />
-			<opcode name="unaligned." op1="0xfe" op2="0x12" flowcontrol="Meta" opcodetype="Prefix" operandtype="ShortInlineI" stackbehaviourpop="Pop0" stackbehaviourpush="Push0" />
-			<opcode name="volatile." op1="0xfe" op2="0x13" flowcontrol="Meta" opcodetype="Prefix" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Push0" />
-			<opcode name="tail." op1="0xfe" op2="0x14" flowcontrol="Meta" opcodetype="Prefix" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Push0" />
-			<opcode name="initobj" op1="0xfe" op2="0x15" flowcontrol="Next" opcodetype="Objmodel" operandtype="InlineType" stackbehaviourpop="Popi" stackbehaviourpush="Push0" />
-			<opcode name="constrained." op1="0xfe" op2="0x16" flowcontrol="Next" opcodetype="Prefix" operandtype="InlineType" stackbehaviourpop="Pop0" stackbehaviourpush="Push0" />
-			<opcode name="cpblk" op1="0xfe" op2="0x17" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Popi_popi_popi" stackbehaviourpush="Push0" />
-			<opcode name="initblk" op1="0xfe" op2="0x18" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Popi_popi_popi" stackbehaviourpush="Push0" />
-			<opcode name="no." op1="0xfe" op2="0x19" flowcontrol="Next" opcodetype="Prefix" operandtype="ShortInlineI" stackbehaviourpop="Pop0" stackbehaviourpush="Push0" />
-			<opcode name="rethrow" op1="0xfe" op2="0x1a" flowcontrol="Throw" opcodetype="Objmodel" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Push0" />
-			<opcode name="sizeof" op1="0xfe" op2="0x1c" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineType" stackbehaviourpop="Pop0" stackbehaviourpush="Pushi" />
-			<opcode name="refanytype" op1="0xfe" op2="0x1d" flowcontrol="Next" opcodetype="Primitive" operandtype="InlineNone" stackbehaviourpop="Pop1" stackbehaviourpush="Pushi" />
-			<opcode name="readonly." op1="0xfe" op2="0x1e" flowcontrol="Next" opcodetype="Prefix" operandtype="InlineNone" stackbehaviourpop="Pop0" stackbehaviourpush="Push0" />
-		</opcodes>
-
-	</metadata>
-
-	<!--
-		This part contains all the collections
-		that will be used in the Reflection ns
-	-->
-	<collections>
-		<collection type="AssemblyNameReference" container="ModuleDefinition" visit="IReflectionStructure" target="Mono.Cecil" indexed="true" />
-		<collection type="ModuleReference" container="ModuleDefinition" visit="IReflectionStructure" indexed="true" target="Mono.Cecil" />
-		<collection type="ModuleDefinition" container="AssemblyDefinition" visit="IReflectionStructure" indexed="true" target="Mono.Cecil" />
-		<collection type="Resource" container="ModuleDefinition" visit="IReflectionStructure" target="Mono.Cecil" indexed="true" />
-		<collection type="TypeDefinition" container="ModuleDefinition" visit="IReflection" target="Mono.Cecil" />
-		<collection type="TypeReference" container="ModuleDefinition" visit="IReflection" target="Mono.Cecil" />
-		<collection type="TypeReference" container="TypeDefinition" visit="IReflection" name="Interface" indexed="true" target="Mono.Cecil" />
-		<collection type="ParameterDefinition" container="IMemberReference" visit="IReflection" indexed="true" target="Mono.Cecil" />
-		<collection type="MethodReference" container="MethodDefinition" visit="IReflection" name="Override" indexed="true" target="Mono.Cecil" />
-		<collection type="MethodDefinition" container="TypeDefinition" visit="IReflection" indexed="true" target="Mono.Cecil" />
-		<collection type="MethodDefinition" container="TypeDefinition" visit="IReflection" name="Constructor" indexed="true" target="Mono.Cecil" />
-		<collection type="EventDefinition" container="TypeDefinition" visit="IReflection" target="Mono.Cecil" indexed="true" />
-		<collection type="FieldDefinition" container="TypeDefinition" visit="IReflection" target="Mono.Cecil" indexed="true" />
-		<collection type="PropertyDefinition" container="TypeDefinition" visit="IReflection" target="Mono.Cecil" indexed="true" />
-		<collection type="Instruction" container="MethodBody" visit="ICode" indexed="true" target="Mono.Cecil.Cil" />
-		<collection type="ExceptionHandler" container="MethodBody" visit="ICode" indexed="true" target="Mono.Cecil.Cil" />
-		<collection type="VariableDefinition" container="IVariableDefinitionProvider" visit="ICode" indexed="true" target="Mono.Cecil.Cil" />
-		<collection type="ArrayDimension" container="ArrayType" target="Mono.Cecil" indexed="true" />
-		<!-- modified behaviour
-		<collection type="SecurityDeclaration" container="IHasSecurity" usecontainerinterface="true" target="Mono.Cecil" indexed="true" visit="IReflection" />
-		-->
-		<collection type="CustomAttribute" container="ICustomAttributeProvider" usecontainerinterface="true" target="Mono.Cecil" indexed="true" visit="IReflection" />
-		<collection type="TypeReference" container="ModuleDefinition" target="Mono.Cecil" visit="IReflection" name="ExternType" />
-		<collection type="TypeDefinition" container="TypeDefinition" target="Mono.Cecil" visit="IReflection" name="NestedType" indexed="true" />
-		<collection type="MemberReference" container="ModuleDefinition" target="Mono.Cecil" visit="IReflection" indexed="true" />
-		<collection type="GenericParameter" container="IGenericParameterProvider" usecontainerinterface="true" target="Mono.Cecil" indexed="true" visit="IReflection" />
-		<collection type="TypeReference" name="GenericArgument" container="IGenericInstance" target="Mono.Cecil" indexed="true" />
-		<collection type="TypeReference" name="Constraint" container="GenericParameter" target="Mono.Cecil" indexed="true" />
-		<collection type="Scope" container="IScopeProvider" visit="ICode" target="Mono.Cecil.Cil" indexed="true" />
-	</collections>
-
-</cecil>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/BaseImageVisitor.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/BaseImageVisitor.xml
deleted file mode 100644
index 1570963..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/BaseImageVisitor.xml
+++ /dev/null
@@ -1,339 +0,0 @@
-<Type Name="BaseImageVisitor" FullName="Mono.Cecil.Binary.BaseImageVisitor">
-  <TypeSignature Language="C#" Value="public abstract class BaseImageVisitor : Mono.Cecil.Binary.IBinaryVisitor" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IBinaryVisitor</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="protected BaseImageVisitor ();" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="TerminateImage">
-      <MemberSignature Language="C#" Value="public virtual void TerminateImage (Mono.Cecil.Binary.Image img);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="img" Type="Mono.Cecil.Binary.Image" />
-      </Parameters>
-      <Docs>
-        <param name="img">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitCLIHeader">
-      <MemberSignature Language="C#" Value="public virtual void VisitCLIHeader (Mono.Cecil.Binary.CLIHeader header);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="header" Type="Mono.Cecil.Binary.CLIHeader" />
-      </Parameters>
-      <Docs>
-        <param name="header">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitDataDirectoriesHeader">
-      <MemberSignature Language="C#" Value="public virtual void VisitDataDirectoriesHeader (Mono.Cecil.Binary.PEOptionalHeader.DataDirectoriesHeader header);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="header" Type="Mono.Cecil.Binary.PEOptionalHeader+DataDirectoriesHeader" />
-      </Parameters>
-      <Docs>
-        <param name="header">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitDebugHeader">
-      <MemberSignature Language="C#" Value="public virtual void VisitDebugHeader (Mono.Cecil.Binary.DebugHeader dh);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="dh" Type="Mono.Cecil.Binary.DebugHeader" />
-      </Parameters>
-      <Docs>
-        <param name="dh">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitDOSHeader">
-      <MemberSignature Language="C#" Value="public virtual void VisitDOSHeader (Mono.Cecil.Binary.DOSHeader header);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="header" Type="Mono.Cecil.Binary.DOSHeader" />
-      </Parameters>
-      <Docs>
-        <param name="header">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitExportTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitExportTable (Mono.Cecil.Binary.ExportTable et);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="et" Type="Mono.Cecil.Binary.ExportTable" />
-      </Parameters>
-      <Docs>
-        <param name="et">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitHintNameTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitHintNameTable (Mono.Cecil.Binary.HintNameTable hnt);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="hnt" Type="Mono.Cecil.Binary.HintNameTable" />
-      </Parameters>
-      <Docs>
-        <param name="hnt">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitImage">
-      <MemberSignature Language="C#" Value="public virtual void VisitImage (Mono.Cecil.Binary.Image img);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="img" Type="Mono.Cecil.Binary.Image" />
-      </Parameters>
-      <Docs>
-        <param name="img">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitImportAddressTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitImportAddressTable (Mono.Cecil.Binary.ImportAddressTable iat);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="iat" Type="Mono.Cecil.Binary.ImportAddressTable" />
-      </Parameters>
-      <Docs>
-        <param name="iat">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitImportLookupTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitImportLookupTable (Mono.Cecil.Binary.ImportLookupTable ilt);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="ilt" Type="Mono.Cecil.Binary.ImportLookupTable" />
-      </Parameters>
-      <Docs>
-        <param name="ilt">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitImportTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitImportTable (Mono.Cecil.Binary.ImportTable it);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="it" Type="Mono.Cecil.Binary.ImportTable" />
-      </Parameters>
-      <Docs>
-        <param name="it">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitNTSpecificFieldsHeader">
-      <MemberSignature Language="C#" Value="public virtual void VisitNTSpecificFieldsHeader (Mono.Cecil.Binary.PEOptionalHeader.NTSpecificFieldsHeader header);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="header" Type="Mono.Cecil.Binary.PEOptionalHeader+NTSpecificFieldsHeader" />
-      </Parameters>
-      <Docs>
-        <param name="header">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitPEFileHeader">
-      <MemberSignature Language="C#" Value="public virtual void VisitPEFileHeader (Mono.Cecil.Binary.PEFileHeader header);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="header" Type="Mono.Cecil.Binary.PEFileHeader" />
-      </Parameters>
-      <Docs>
-        <param name="header">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitPEOptionalHeader">
-      <MemberSignature Language="C#" Value="public virtual void VisitPEOptionalHeader (Mono.Cecil.Binary.PEOptionalHeader header);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="header" Type="Mono.Cecil.Binary.PEOptionalHeader" />
-      </Parameters>
-      <Docs>
-        <param name="header">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitSection">
-      <MemberSignature Language="C#" Value="public virtual void VisitSection (Mono.Cecil.Binary.Section section);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="section" Type="Mono.Cecil.Binary.Section" />
-      </Parameters>
-      <Docs>
-        <param name="section">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitSectionCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitSectionCollection (Mono.Cecil.Binary.SectionCollection coll);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="coll" Type="Mono.Cecil.Binary.SectionCollection" />
-      </Parameters>
-      <Docs>
-        <param name="coll">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitStandardFieldsHeader">
-      <MemberSignature Language="C#" Value="public virtual void VisitStandardFieldsHeader (Mono.Cecil.Binary.PEOptionalHeader.StandardFieldsHeader header);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="header" Type="Mono.Cecil.Binary.PEOptionalHeader+StandardFieldsHeader" />
-      </Parameters>
-      <Docs>
-        <param name="header">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/CLIHeader.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/CLIHeader.xml
deleted file mode 100644
index 32b68b1..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/CLIHeader.xml
+++ /dev/null
@@ -1,239 +0,0 @@
-<Type Name="CLIHeader" FullName="Mono.Cecil.Binary.CLIHeader">
-  <TypeSignature Language="C#" Value="public sealed class CLIHeader : Mono.Cecil.Binary.IBinaryVisitable, Mono.Cecil.Binary.IHeader" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IBinaryVisitable</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IHeader</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Binary.IBinaryVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Binary.IBinaryVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Cb">
-      <MemberSignature Language="C#" Value="public uint Cb;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CodeManagerTable">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.DataDirectory CodeManagerTable;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DataDirectory</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="EntryPointToken">
-      <MemberSignature Language="C#" Value="public uint EntryPointToken;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ExportAddressTableJumps">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.DataDirectory ExportAddressTableJumps;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DataDirectory</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Flags">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.RuntimeImage Flags;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RuntimeImage</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ImageHash">
-      <MemberSignature Language="C#" Value="public byte[] ImageHash;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte[]</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MajorRuntimeVersion">
-      <MemberSignature Language="C#" Value="public ushort MajorRuntimeVersion;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ManagedNativeHeader">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.DataDirectory ManagedNativeHeader;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DataDirectory</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Metadata">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.DataDirectory Metadata;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DataDirectory</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MinorRuntimeVersion">
-      <MemberSignature Language="C#" Value="public ushort MinorRuntimeVersion;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resources">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.DataDirectory Resources;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DataDirectory</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SetDefaultValues">
-      <MemberSignature Language="C#" Value="public void SetDefaultValues ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="StrongNameSignature">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.DataDirectory StrongNameSignature;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DataDirectory</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VTableFixups">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.DataDirectory VTableFixups;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DataDirectory</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/DOSHeader.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/DOSHeader.xml
deleted file mode 100644
index fc98837..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/DOSHeader.xml
+++ /dev/null
@@ -1,99 +0,0 @@
-<Type Name="DOSHeader" FullName="Mono.Cecil.Binary.DOSHeader">
-  <TypeSignature Language="C#" Value="public sealed class DOSHeader : Mono.Cecil.Binary.IBinaryVisitable, Mono.Cecil.Binary.IHeader" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IBinaryVisitable</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IHeader</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Binary.IBinaryVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Binary.IBinaryVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="End">
-      <MemberSignature Language="C#" Value="public byte[] End;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte[]</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Lfanew">
-      <MemberSignature Language="C#" Value="public uint Lfanew;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SetDefaultValues">
-      <MemberSignature Language="C#" Value="public void SetDefaultValues ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Start">
-      <MemberSignature Language="C#" Value="public byte[] Start;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte[]</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/DataDirectory.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/DataDirectory.xml
deleted file mode 100644
index e03ff33..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/DataDirectory.xml
+++ /dev/null
@@ -1,171 +0,0 @@
-<Type Name="DataDirectory" FullName="Mono.Cecil.Binary.DataDirectory">
-  <TypeSignature Language="C#" Value="public struct DataDirectory" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.ValueType</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public DataDirectory (Mono.Cecil.Binary.RVA virtualAddress, uint size);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="virtualAddress" Type="Mono.Cecil.Binary.RVA" />
-        <Parameter Name="size" Type="System.UInt32" />
-      </Parameters>
-      <Docs>
-        <param name="virtualAddress">To be added.</param>
-        <param name="size">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Equals">
-      <MemberSignature Language="C#" Value="public override bool Equals (object other);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="other" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="other">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetHashCode">
-      <MemberSignature Language="C#" Value="public override int GetHashCode ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="op_Equality">
-      <MemberSignature Language="C#" Value="public static bool op_Equality (Mono.Cecil.Binary.DataDirectory one, Mono.Cecil.Binary.DataDirectory other);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="one" Type="Mono.Cecil.Binary.DataDirectory" />
-        <Parameter Name="other" Type="Mono.Cecil.Binary.DataDirectory" />
-      </Parameters>
-      <Docs>
-        <param name="one">To be added.</param>
-        <param name="other">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="op_Inequality">
-      <MemberSignature Language="C#" Value="public static bool op_Inequality (Mono.Cecil.Binary.DataDirectory one, Mono.Cecil.Binary.DataDirectory other);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="one" Type="Mono.Cecil.Binary.DataDirectory" />
-        <Parameter Name="other" Type="Mono.Cecil.Binary.DataDirectory" />
-      </Parameters>
-      <Docs>
-        <param name="one">To be added.</param>
-        <param name="other">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Size">
-      <MemberSignature Language="C#" Value="public uint Size { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ToString">
-      <MemberSignature Language="C#" Value="public override string ToString ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VirtualAddress">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.RVA VirtualAddress { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Zero">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Binary.DataDirectory Zero;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DataDirectory</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/DebugHeader.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/DebugHeader.xml
deleted file mode 100644
index 2b321eb..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/DebugHeader.xml
+++ /dev/null
@@ -1,241 +0,0 @@
-<Type Name="DebugHeader" FullName="Mono.Cecil.Binary.DebugHeader">
-  <TypeSignature Language="C#" Value="public sealed class DebugHeader : Mono.Cecil.Binary.IBinaryVisitable, Mono.Cecil.Binary.IHeader" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IBinaryVisitable</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IHeader</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Binary.IBinaryVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Binary.IBinaryVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="AddressOfRawData">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.RVA AddressOfRawData;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Age">
-      <MemberSignature Language="C#" Value="public uint Age;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Characteristics">
-      <MemberSignature Language="C#" Value="public uint Characteristics;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="FileName">
-      <MemberSignature Language="C#" Value="public string FileName;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetSize">
-      <MemberSignature Language="C#" Value="public uint GetSize ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Magic">
-      <MemberSignature Language="C#" Value="public uint Magic;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MajorVersion">
-      <MemberSignature Language="C#" Value="public ushort MajorVersion;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MinorVersion">
-      <MemberSignature Language="C#" Value="public ushort MinorVersion;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PointerToRawData">
-      <MemberSignature Language="C#" Value="public uint PointerToRawData;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SetDefaultValues">
-      <MemberSignature Language="C#" Value="public void SetDefaultValues ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Signature">
-      <MemberSignature Language="C#" Value="public Guid Signature;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Guid</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SizeOfData">
-      <MemberSignature Language="C#" Value="public uint SizeOfData;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="TimeDateStamp">
-      <MemberSignature Language="C#" Value="public uint TimeDateStamp;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Type">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.DebugStoreType Type;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DebugStoreType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/DebugStoreType.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/DebugStoreType.xml
deleted file mode 100644
index 4f67b77..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/DebugStoreType.xml
+++ /dev/null
@@ -1,172 +0,0 @@
-<Type Name="DebugStoreType" FullName="Mono.Cecil.Binary.DebugStoreType">
-  <TypeSignature Language="C#" Value="public enum DebugStoreType" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Borland">
-      <MemberSignature Language="C#" Value="Borland" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DebugStoreType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="CLSID">
-      <MemberSignature Language="C#" Value="CLSID" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DebugStoreType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="CodeView">
-      <MemberSignature Language="C#" Value="CodeView" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DebugStoreType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="COFF">
-      <MemberSignature Language="C#" Value="COFF" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DebugStoreType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Exception">
-      <MemberSignature Language="C#" Value="Exception" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DebugStoreType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Fixup">
-      <MemberSignature Language="C#" Value="Fixup" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DebugStoreType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="FPO">
-      <MemberSignature Language="C#" Value="FPO" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DebugStoreType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Misc">
-      <MemberSignature Language="C#" Value="Misc" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DebugStoreType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="OMAPFromSrc">
-      <MemberSignature Language="C#" Value="OMAPFromSrc" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DebugStoreType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="OMAPToSrc">
-      <MemberSignature Language="C#" Value="OMAPToSrc" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DebugStoreType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Reserved10">
-      <MemberSignature Language="C#" Value="Reserved10" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DebugStoreType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Unknown">
-      <MemberSignature Language="C#" Value="Unknown" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DebugStoreType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ExportTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ExportTable.xml
deleted file mode 100644
index d199afe..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ExportTable.xml
+++ /dev/null
@@ -1,249 +0,0 @@
-<Type Name="ExportTable" FullName="Mono.Cecil.Binary.ExportTable">
-  <TypeSignature Language="C#" Value="public sealed class ExportTable : Mono.Cecil.Binary.IBinaryVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IBinaryVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Binary.IBinaryVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Binary.IBinaryVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="AddressesOfFunctions">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.RVA[] AddressesOfFunctions;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA[]</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="AddressesOfNames">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.RVA[] AddressesOfNames;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA[]</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="AddressOfFunctions">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.RVA AddressOfFunctions;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="AddressOfNameOrdinals">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.RVA AddressOfNameOrdinals;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="AddressOfNames">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.RVA AddressOfNames;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Base">
-      <MemberSignature Language="C#" Value="public uint Base;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Characteristics">
-      <MemberSignature Language="C#" Value="public uint Characteristics;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MajorVersion">
-      <MemberSignature Language="C#" Value="public ushort MajorVersion;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MinorVersion">
-      <MemberSignature Language="C#" Value="public ushort MinorVersion;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public string Name;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="NameOrdinals">
-      <MemberSignature Language="C#" Value="public ushort[] NameOrdinals;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16[]</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Names">
-      <MemberSignature Language="C#" Value="public string[] Names;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String[]</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="NumberOfFunctions">
-      <MemberSignature Language="C#" Value="public uint NumberOfFunctions;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="NumberOfNames">
-      <MemberSignature Language="C#" Value="public uint NumberOfNames;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="TimeDateStamp">
-      <MemberSignature Language="C#" Value="public uint TimeDateStamp;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/HintNameTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/HintNameTable.xml
deleted file mode 100644
index 6857b82..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/HintNameTable.xml
+++ /dev/null
@@ -1,151 +0,0 @@
-<Type Name="HintNameTable" FullName="Mono.Cecil.Binary.HintNameTable">
-  <TypeSignature Language="C#" Value="public sealed class HintNameTable : Mono.Cecil.Binary.IBinaryVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IBinaryVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Binary.IBinaryVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Binary.IBinaryVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="EntryPoint">
-      <MemberSignature Language="C#" Value="public ushort EntryPoint;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Hint">
-      <MemberSignature Language="C#" Value="public ushort Hint;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RuntimeCorEE">
-      <MemberSignature Language="C#" Value="public const string RuntimeCorEE;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RuntimeLibrary">
-      <MemberSignature Language="C#" Value="public string RuntimeLibrary;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RuntimeMain">
-      <MemberSignature Language="C#" Value="public string RuntimeMain;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RuntimeMainDll">
-      <MemberSignature Language="C#" Value="public const string RuntimeMainDll;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RuntimeMainExe">
-      <MemberSignature Language="C#" Value="public const string RuntimeMainExe;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RVA">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.RVA RVA;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/IBinaryVisitable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/IBinaryVisitable.xml
deleted file mode 100644
index f6c6cfa..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/IBinaryVisitable.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<Type Name="IBinaryVisitable" FullName="Mono.Cecil.Binary.IBinaryVisitable">
-  <TypeSignature Language="C#" Value="public interface IBinaryVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Binary.IBinaryVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Binary.IBinaryVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/IBinaryVisitor.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/IBinaryVisitor.xml
deleted file mode 100644
index 4272eab..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/IBinaryVisitor.xml
+++ /dev/null
@@ -1,320 +0,0 @@
-<Type Name="IBinaryVisitor" FullName="Mono.Cecil.Binary.IBinaryVisitor">
-  <TypeSignature Language="C#" Value="public interface IBinaryVisitor" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="TerminateImage">
-      <MemberSignature Language="C#" Value="public void TerminateImage (Mono.Cecil.Binary.Image img);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="img" Type="Mono.Cecil.Binary.Image" />
-      </Parameters>
-      <Docs>
-        <param name="img">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitCLIHeader">
-      <MemberSignature Language="C#" Value="public void VisitCLIHeader (Mono.Cecil.Binary.CLIHeader header);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="header" Type="Mono.Cecil.Binary.CLIHeader" />
-      </Parameters>
-      <Docs>
-        <param name="header">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitDataDirectoriesHeader">
-      <MemberSignature Language="C#" Value="public void VisitDataDirectoriesHeader (Mono.Cecil.Binary.PEOptionalHeader.DataDirectoriesHeader header);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="header" Type="Mono.Cecil.Binary.PEOptionalHeader+DataDirectoriesHeader" />
-      </Parameters>
-      <Docs>
-        <param name="header">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitDebugHeader">
-      <MemberSignature Language="C#" Value="public void VisitDebugHeader (Mono.Cecil.Binary.DebugHeader dh);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="dh" Type="Mono.Cecil.Binary.DebugHeader" />
-      </Parameters>
-      <Docs>
-        <param name="dh">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitDOSHeader">
-      <MemberSignature Language="C#" Value="public void VisitDOSHeader (Mono.Cecil.Binary.DOSHeader header);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="header" Type="Mono.Cecil.Binary.DOSHeader" />
-      </Parameters>
-      <Docs>
-        <param name="header">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitExportTable">
-      <MemberSignature Language="C#" Value="public void VisitExportTable (Mono.Cecil.Binary.ExportTable et);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="et" Type="Mono.Cecil.Binary.ExportTable" />
-      </Parameters>
-      <Docs>
-        <param name="et">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitHintNameTable">
-      <MemberSignature Language="C#" Value="public void VisitHintNameTable (Mono.Cecil.Binary.HintNameTable hnt);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="hnt" Type="Mono.Cecil.Binary.HintNameTable" />
-      </Parameters>
-      <Docs>
-        <param name="hnt">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitImage">
-      <MemberSignature Language="C#" Value="public void VisitImage (Mono.Cecil.Binary.Image img);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="img" Type="Mono.Cecil.Binary.Image" />
-      </Parameters>
-      <Docs>
-        <param name="img">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitImportAddressTable">
-      <MemberSignature Language="C#" Value="public void VisitImportAddressTable (Mono.Cecil.Binary.ImportAddressTable iat);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="iat" Type="Mono.Cecil.Binary.ImportAddressTable" />
-      </Parameters>
-      <Docs>
-        <param name="iat">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitImportLookupTable">
-      <MemberSignature Language="C#" Value="public void VisitImportLookupTable (Mono.Cecil.Binary.ImportLookupTable ilt);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="ilt" Type="Mono.Cecil.Binary.ImportLookupTable" />
-      </Parameters>
-      <Docs>
-        <param name="ilt">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitImportTable">
-      <MemberSignature Language="C#" Value="public void VisitImportTable (Mono.Cecil.Binary.ImportTable it);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="it" Type="Mono.Cecil.Binary.ImportTable" />
-      </Parameters>
-      <Docs>
-        <param name="it">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitNTSpecificFieldsHeader">
-      <MemberSignature Language="C#" Value="public void VisitNTSpecificFieldsHeader (Mono.Cecil.Binary.PEOptionalHeader.NTSpecificFieldsHeader header);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="header" Type="Mono.Cecil.Binary.PEOptionalHeader+NTSpecificFieldsHeader" />
-      </Parameters>
-      <Docs>
-        <param name="header">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitPEFileHeader">
-      <MemberSignature Language="C#" Value="public void VisitPEFileHeader (Mono.Cecil.Binary.PEFileHeader header);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="header" Type="Mono.Cecil.Binary.PEFileHeader" />
-      </Parameters>
-      <Docs>
-        <param name="header">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitPEOptionalHeader">
-      <MemberSignature Language="C#" Value="public void VisitPEOptionalHeader (Mono.Cecil.Binary.PEOptionalHeader header);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="header" Type="Mono.Cecil.Binary.PEOptionalHeader" />
-      </Parameters>
-      <Docs>
-        <param name="header">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitSection">
-      <MemberSignature Language="C#" Value="public void VisitSection (Mono.Cecil.Binary.Section section);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="section" Type="Mono.Cecil.Binary.Section" />
-      </Parameters>
-      <Docs>
-        <param name="section">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitSectionCollection">
-      <MemberSignature Language="C#" Value="public void VisitSectionCollection (Mono.Cecil.Binary.SectionCollection coll);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="coll" Type="Mono.Cecil.Binary.SectionCollection" />
-      </Parameters>
-      <Docs>
-        <param name="coll">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitStandardFieldsHeader">
-      <MemberSignature Language="C#" Value="public void VisitStandardFieldsHeader (Mono.Cecil.Binary.PEOptionalHeader.StandardFieldsHeader header);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="header" Type="Mono.Cecil.Binary.PEOptionalHeader+StandardFieldsHeader" />
-      </Parameters>
-      <Docs>
-        <param name="header">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/Image.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/Image.xml
deleted file mode 100644
index 4ee4b58..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/Image.xml
+++ /dev/null
@@ -1,375 +0,0 @@
-<Type Name="Image" FullName="Mono.Cecil.Binary.Image">
-  <TypeSignature Language="C#" Value="public sealed class Image : Mono.Cecil.Binary.IBinaryVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IBinaryVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Binary.IBinaryVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Binary.IBinaryVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="AddDebugHeader">
-      <MemberSignature Language="C#" Value="public void AddDebugHeader ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CLIHeader">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.CLIHeader CLIHeader { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.CLIHeader</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CreateImage">
-      <MemberSignature Language="C#" Value="public static Mono.Cecil.Binary.Image CreateImage ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.Image</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="DebugHeader">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.DebugHeader DebugHeader { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DebugHeader</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="DOSHeader">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.DOSHeader DOSHeader { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DOSHeader</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ExportTable">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.ExportTable ExportTable { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.ExportTable</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="FileInformation">
-      <MemberSignature Language="C#" Value="public System.IO.FileInfo FileInformation { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.IO.FileInfo</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetImage">
-      <MemberSignature Language="C#" Value="public static Mono.Cecil.Binary.Image GetImage (byte[] image);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.Image</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="image" Type="System.Byte[]" />
-      </Parameters>
-      <Docs>
-        <param name="image">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetImage">
-      <MemberSignature Language="C#" Value="public static Mono.Cecil.Binary.Image GetImage (System.IO.Stream stream);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.Image</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="stream" Type="System.IO.Stream" />
-      </Parameters>
-      <Docs>
-        <param name="stream">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetImage">
-      <MemberSignature Language="C#" Value="public static Mono.Cecil.Binary.Image GetImage (string file);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.Image</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="file" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="file">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetReaderAtVirtualAddress">
-      <MemberSignature Language="C#" Value="public System.IO.BinaryReader GetReaderAtVirtualAddress (Mono.Cecil.Binary.RVA rva);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.IO.BinaryReader</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="rva" Type="Mono.Cecil.Binary.RVA" />
-      </Parameters>
-      <Docs>
-        <param name="rva">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HintNameTable">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.HintNameTable HintNameTable { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.HintNameTable</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ImportAddressTable">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.ImportAddressTable ImportAddressTable { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.ImportAddressTable</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ImportLookupTable">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.ImportLookupTable ImportLookupTable { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.ImportLookupTable</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ImportTable">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.ImportTable ImportTable { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.ImportTable</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MetadataRoot">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataRoot MetadataRoot { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataRoot</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PEFileHeader">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.PEFileHeader PEFileHeader { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.PEFileHeader</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PEOptionalHeader">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.PEOptionalHeader PEOptionalHeader { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.PEOptionalHeader</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ResolveVirtualAddress">
-      <MemberSignature Language="C#" Value="public long ResolveVirtualAddress (Mono.Cecil.Binary.RVA rva);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int64</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="rva" Type="Mono.Cecil.Binary.RVA" />
-      </Parameters>
-      <Docs>
-        <param name="rva">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Sections">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.SectionCollection Sections { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="TextSection">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.Section TextSection { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.Section</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ImageCharacteristics.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ImageCharacteristics.xml
deleted file mode 100644
index 54ff6b2..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ImageCharacteristics.xml
+++ /dev/null
@@ -1,268 +0,0 @@
-<Type Name="ImageCharacteristics" FullName="Mono.Cecil.Binary.ImageCharacteristics">
-  <TypeSignature Language="C#" Value="public enum ImageCharacteristics" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Attributes>
-    <Attribute>
-      <AttributeName>System.Flags</AttributeName>
-    </Attribute>
-  </Attributes>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="__flags">
-      <MemberSignature Language="C#" Value="__flags" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.ImageCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="_32BitsMachine">
-      <MemberSignature Language="C#" Value="_32BitsMachine" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.ImageCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="AggressiveWSTrim">
-      <MemberSignature Language="C#" Value="AggressiveWSTrim" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.ImageCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="BytesReversedHI">
-      <MemberSignature Language="C#" Value="BytesReversedHI" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.ImageCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="BytesReversedLo">
-      <MemberSignature Language="C#" Value="BytesReversedLo" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.ImageCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="CILOnlyDll">
-      <MemberSignature Language="C#" Value="CILOnlyDll" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.ImageCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="CILOnlyExe">
-      <MemberSignature Language="C#" Value="CILOnlyExe" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.ImageCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="DebugStripped">
-      <MemberSignature Language="C#" Value="DebugStripped" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.ImageCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Dll">
-      <MemberSignature Language="C#" Value="Dll" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.ImageCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ExecutableImage">
-      <MemberSignature Language="C#" Value="ExecutableImage" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.ImageCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="LargeAddressAware">
-      <MemberSignature Language="C#" Value="LargeAddressAware" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.ImageCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="LineNumsStripped">
-      <MemberSignature Language="C#" Value="LineNumsStripped" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.ImageCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="LocalSymsStripped">
-      <MemberSignature Language="C#" Value="LocalSymsStripped" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.ImageCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="NetRunFromSwap">
-      <MemberSignature Language="C#" Value="NetRunFromSwap" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.ImageCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="RelocsStripped">
-      <MemberSignature Language="C#" Value="RelocsStripped" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.ImageCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="RemovableRunFromSwap">
-      <MemberSignature Language="C#" Value="RemovableRunFromSwap" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.ImageCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ReservedForFutureUse">
-      <MemberSignature Language="C#" Value="ReservedForFutureUse" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.ImageCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="System">
-      <MemberSignature Language="C#" Value="System" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.ImageCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="UPSystemOnly">
-      <MemberSignature Language="C#" Value="UPSystemOnly" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.ImageCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ImageFormatException.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ImageFormatException.xml
deleted file mode 100644
index 2b1c4b3..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ImageFormatException.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<Type Name="ImageFormatException" FullName="Mono.Cecil.Binary.ImageFormatException">
-  <TypeSignature Language="C#" Value="public class ImageFormatException : Exception" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Exception</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members />
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ImportAddressTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ImportAddressTable.xml
deleted file mode 100644
index 53d3636..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ImportAddressTable.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<Type Name="ImportAddressTable" FullName="Mono.Cecil.Binary.ImportAddressTable">
-  <TypeSignature Language="C#" Value="public sealed class ImportAddressTable : Mono.Cecil.Binary.IBinaryVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IBinaryVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Binary.IBinaryVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Binary.IBinaryVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HintNameTableRVA">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.RVA HintNameTableRVA;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ImportLookupTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ImportLookupTable.xml
deleted file mode 100644
index 37cbc59..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ImportLookupTable.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<Type Name="ImportLookupTable" FullName="Mono.Cecil.Binary.ImportLookupTable">
-  <TypeSignature Language="C#" Value="public sealed class ImportLookupTable : Mono.Cecil.Binary.IBinaryVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IBinaryVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Binary.IBinaryVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Binary.IBinaryVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HintNameRVA">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.RVA HintNameRVA;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ImportTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ImportTable.xml
deleted file mode 100644
index 9e43e30..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ImportTable.xml
+++ /dev/null
@@ -1,109 +0,0 @@
-<Type Name="ImportTable" FullName="Mono.Cecil.Binary.ImportTable">
-  <TypeSignature Language="C#" Value="public sealed class ImportTable : Mono.Cecil.Binary.IBinaryVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IBinaryVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Binary.IBinaryVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Binary.IBinaryVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="DateTimeStamp">
-      <MemberSignature Language="C#" Value="public uint DateTimeStamp;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ForwardChain">
-      <MemberSignature Language="C#" Value="public uint ForwardChain;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ImportAddressTable">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.RVA ImportAddressTable;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ImportLookupTable">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.RVA ImportLookupTable;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.RVA Name;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/PEFileHeader.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/PEFileHeader.xml
deleted file mode 100644
index 6c6b5bd..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/PEFileHeader.xml
+++ /dev/null
@@ -1,155 +0,0 @@
-<Type Name="PEFileHeader" FullName="Mono.Cecil.Binary.PEFileHeader">
-  <TypeSignature Language="C#" Value="public sealed class PEFileHeader : Mono.Cecil.Binary.IBinaryVisitable, Mono.Cecil.Binary.IHeader" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IBinaryVisitable</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IHeader</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Binary.IBinaryVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Binary.IBinaryVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Characteristics">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.ImageCharacteristics Characteristics;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.ImageCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Machine">
-      <MemberSignature Language="C#" Value="public ushort Machine;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="NumberOfSections">
-      <MemberSignature Language="C#" Value="public ushort NumberOfSections;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="NumberOfSymbols">
-      <MemberSignature Language="C#" Value="public uint NumberOfSymbols;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OptionalHeaderSize">
-      <MemberSignature Language="C#" Value="public ushort OptionalHeaderSize;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PointerToSymbolTable">
-      <MemberSignature Language="C#" Value="public uint PointerToSymbolTable;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SetDefaultValues">
-      <MemberSignature Language="C#" Value="public void SetDefaultValues ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="TimeDateStamp">
-      <MemberSignature Language="C#" Value="public uint TimeDateStamp;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/PEOptionalHeader+DataDirectoriesHeader.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/PEOptionalHeader+DataDirectoriesHeader.xml
deleted file mode 100644
index b44913e..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/PEOptionalHeader+DataDirectoriesHeader.xml
+++ /dev/null
@@ -1,281 +0,0 @@
-<Type Name="PEOptionalHeader+DataDirectoriesHeader" FullName="Mono.Cecil.Binary.PEOptionalHeader+DataDirectoriesHeader">
-  <TypeSignature Language="C#" Value="public sealed class PEOptionalHeader.DataDirectoriesHeader : Mono.Cecil.Binary.IBinaryVisitable, Mono.Cecil.Binary.IHeader" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IBinaryVisitable</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IHeader</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Binary.IBinaryVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Binary.IBinaryVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="BaseRelocationTable">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.DataDirectory BaseRelocationTable;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DataDirectory</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="BoundImport">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.DataDirectory BoundImport;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DataDirectory</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CertificateTable">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.DataDirectory CertificateTable;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DataDirectory</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CLIHeader">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.DataDirectory CLIHeader;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DataDirectory</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Copyright">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.DataDirectory Copyright;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DataDirectory</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Debug">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.DataDirectory Debug;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DataDirectory</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="DelayImportDescriptor">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.DataDirectory DelayImportDescriptor;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DataDirectory</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ExceptionTable">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.DataDirectory ExceptionTable;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DataDirectory</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ExportTable">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.DataDirectory ExportTable;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DataDirectory</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GlobalPtr">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.DataDirectory GlobalPtr;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DataDirectory</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IAT">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.DataDirectory IAT;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DataDirectory</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ImportTable">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.DataDirectory ImportTable;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DataDirectory</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="LoadConfigTable">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.DataDirectory LoadConfigTable;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DataDirectory</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Reserved">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.DataDirectory Reserved;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DataDirectory</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ResourceTable">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.DataDirectory ResourceTable;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DataDirectory</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SetDefaultValues">
-      <MemberSignature Language="C#" Value="public void SetDefaultValues ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="TLSTable">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.DataDirectory TLSTable;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.DataDirectory</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/PEOptionalHeader+NTSpecificFieldsHeader.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/PEOptionalHeader+NTSpecificFieldsHeader.xml
deleted file mode 100644
index 7234439..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/PEOptionalHeader+NTSpecificFieldsHeader.xml
+++ /dev/null
@@ -1,351 +0,0 @@
-<Type Name="PEOptionalHeader+NTSpecificFieldsHeader" FullName="Mono.Cecil.Binary.PEOptionalHeader+NTSpecificFieldsHeader">
-  <TypeSignature Language="C#" Value="public sealed class PEOptionalHeader.NTSpecificFieldsHeader : Mono.Cecil.Binary.IBinaryVisitable, Mono.Cecil.Binary.IHeader" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IBinaryVisitable</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IHeader</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Binary.IBinaryVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Binary.IBinaryVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="DLLFlags">
-      <MemberSignature Language="C#" Value="public ushort DLLFlags;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="FileAlignment">
-      <MemberSignature Language="C#" Value="public uint FileAlignment;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="FileChecksum">
-      <MemberSignature Language="C#" Value="public uint FileChecksum;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HeaderSize">
-      <MemberSignature Language="C#" Value="public uint HeaderSize;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HeapCommitSize">
-      <MemberSignature Language="C#" Value="public ulong HeapCommitSize;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt64</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HeapReserveSize">
-      <MemberSignature Language="C#" Value="public ulong HeapReserveSize;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt64</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ImageBase">
-      <MemberSignature Language="C#" Value="public ulong ImageBase;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt64</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ImageSize">
-      <MemberSignature Language="C#" Value="public uint ImageSize;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="LoaderFlags">
-      <MemberSignature Language="C#" Value="public uint LoaderFlags;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="NumberOfDataDir">
-      <MemberSignature Language="C#" Value="public uint NumberOfDataDir;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OSMajor">
-      <MemberSignature Language="C#" Value="public ushort OSMajor;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OSMinor">
-      <MemberSignature Language="C#" Value="public ushort OSMinor;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Reserved">
-      <MemberSignature Language="C#" Value="public uint Reserved;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SectionAlignment">
-      <MemberSignature Language="C#" Value="public uint SectionAlignment;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SetDefaultValues">
-      <MemberSignature Language="C#" Value="public void SetDefaultValues ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="StackCommitSize">
-      <MemberSignature Language="C#" Value="public ulong StackCommitSize;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt64</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="StackReserveSize">
-      <MemberSignature Language="C#" Value="public ulong StackReserveSize;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt64</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SubSysMajor">
-      <MemberSignature Language="C#" Value="public ushort SubSysMajor;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SubSysMinor">
-      <MemberSignature Language="C#" Value="public ushort SubSysMinor;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SubSystem">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.SubSystem SubSystem;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SubSystem</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="UserMajor">
-      <MemberSignature Language="C#" Value="public ushort UserMajor;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="UserMinor">
-      <MemberSignature Language="C#" Value="public ushort UserMinor;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/PEOptionalHeader+StandardFieldsHeader.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/PEOptionalHeader+StandardFieldsHeader.xml
deleted file mode 100644
index b53fb33..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/PEOptionalHeader+StandardFieldsHeader.xml
+++ /dev/null
@@ -1,198 +0,0 @@
-<Type Name="PEOptionalHeader+StandardFieldsHeader" FullName="Mono.Cecil.Binary.PEOptionalHeader+StandardFieldsHeader">
-  <TypeSignature Language="C#" Value="public sealed class PEOptionalHeader.StandardFieldsHeader : Mono.Cecil.Binary.IBinaryVisitable, Mono.Cecil.Binary.IHeader" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IBinaryVisitable</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IHeader</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Binary.IBinaryVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Binary.IBinaryVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="BaseOfCode">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.RVA BaseOfCode;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="BaseOfData">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.RVA BaseOfData;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CodeSize">
-      <MemberSignature Language="C#" Value="public uint CodeSize;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="EntryPointRVA">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.RVA EntryPointRVA;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="InitializedDataSize">
-      <MemberSignature Language="C#" Value="public uint InitializedDataSize;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsPE64">
-      <MemberSignature Language="C#" Value="public bool IsPE64 { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="LMajor">
-      <MemberSignature Language="C#" Value="public byte LMajor;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="LMinor">
-      <MemberSignature Language="C#" Value="public byte LMinor;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Magic">
-      <MemberSignature Language="C#" Value="public ushort Magic;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SetDefaultValues">
-      <MemberSignature Language="C#" Value="public void SetDefaultValues ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="UninitializedDataSize">
-      <MemberSignature Language="C#" Value="public uint UninitializedDataSize;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/PEOptionalHeader.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/PEOptionalHeader.xml
deleted file mode 100644
index 0f7ef42..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/PEOptionalHeader.xml
+++ /dev/null
@@ -1,99 +0,0 @@
-<Type Name="PEOptionalHeader" FullName="Mono.Cecil.Binary.PEOptionalHeader">
-  <TypeSignature Language="C#" Value="public sealed class PEOptionalHeader : Mono.Cecil.Binary.IBinaryVisitable, Mono.Cecil.Binary.IHeader" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IBinaryVisitable</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IHeader</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Binary.IBinaryVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Binary.IBinaryVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="DataDirectories">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.PEOptionalHeader.DataDirectoriesHeader DataDirectories;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.PEOptionalHeader+DataDirectoriesHeader</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="NTSpecificFields">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.PEOptionalHeader.NTSpecificFieldsHeader NTSpecificFields;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.PEOptionalHeader+NTSpecificFieldsHeader</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SetDefaultValues">
-      <MemberSignature Language="C#" Value="public void SetDefaultValues ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="StandardFields">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.PEOptionalHeader.StandardFieldsHeader StandardFields;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.PEOptionalHeader+StandardFieldsHeader</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/RVA.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/RVA.xml
deleted file mode 100644
index 422d104..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/RVA.xml
+++ /dev/null
@@ -1,318 +0,0 @@
-<Type Name="RVA" FullName="Mono.Cecil.Binary.RVA">
-  <TypeSignature Language="C#" Value="public struct RVA" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.ValueType</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public RVA (uint rva);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="rva" Type="System.UInt32" />
-      </Parameters>
-      <Docs>
-        <param name="rva">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Equals">
-      <MemberSignature Language="C#" Value="public override bool Equals (object other);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="other" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="other">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetHashCode">
-      <MemberSignature Language="C#" Value="public override int GetHashCode ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="op_Addition">
-      <MemberSignature Language="C#" Value="public static Mono.Cecil.Binary.RVA op_Addition (Mono.Cecil.Binary.RVA rva, uint x);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="rva" Type="Mono.Cecil.Binary.RVA" />
-        <Parameter Name="x" Type="System.UInt32" />
-      </Parameters>
-      <Docs>
-        <param name="rva">To be added.</param>
-        <param name="x">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="op_Equality">
-      <MemberSignature Language="C#" Value="public static bool op_Equality (Mono.Cecil.Binary.RVA one, Mono.Cecil.Binary.RVA other);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="one" Type="Mono.Cecil.Binary.RVA" />
-        <Parameter Name="other" Type="Mono.Cecil.Binary.RVA" />
-      </Parameters>
-      <Docs>
-        <param name="one">To be added.</param>
-        <param name="other">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="op_GreaterThan">
-      <MemberSignature Language="C#" Value="public static bool op_GreaterThan (Mono.Cecil.Binary.RVA one, Mono.Cecil.Binary.RVA other);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="one" Type="Mono.Cecil.Binary.RVA" />
-        <Parameter Name="other" Type="Mono.Cecil.Binary.RVA" />
-      </Parameters>
-      <Docs>
-        <param name="one">To be added.</param>
-        <param name="other">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="op_GreaterThanOrEqual">
-      <MemberSignature Language="C#" Value="public static bool op_GreaterThanOrEqual (Mono.Cecil.Binary.RVA one, Mono.Cecil.Binary.RVA other);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="one" Type="Mono.Cecil.Binary.RVA" />
-        <Parameter Name="other" Type="Mono.Cecil.Binary.RVA" />
-      </Parameters>
-      <Docs>
-        <param name="one">To be added.</param>
-        <param name="other">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="op_Implicit">
-      <MemberSignature Language="C#" Value="public static uint op_Implicit (Mono.Cecil.Binary.RVA rva);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="rva" Type="Mono.Cecil.Binary.RVA" />
-      </Parameters>
-      <Docs>
-        <param name="rva">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="op_Implicit">
-      <MemberSignature Language="C#" Value="public static Mono.Cecil.Binary.RVA op_Implicit (uint val);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="val" Type="System.UInt32" />
-      </Parameters>
-      <Docs>
-        <param name="val">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="op_Inequality">
-      <MemberSignature Language="C#" Value="public static bool op_Inequality (Mono.Cecil.Binary.RVA one, Mono.Cecil.Binary.RVA other);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="one" Type="Mono.Cecil.Binary.RVA" />
-        <Parameter Name="other" Type="Mono.Cecil.Binary.RVA" />
-      </Parameters>
-      <Docs>
-        <param name="one">To be added.</param>
-        <param name="other">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="op_LessThan">
-      <MemberSignature Language="C#" Value="public static bool op_LessThan (Mono.Cecil.Binary.RVA one, Mono.Cecil.Binary.RVA other);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="one" Type="Mono.Cecil.Binary.RVA" />
-        <Parameter Name="other" Type="Mono.Cecil.Binary.RVA" />
-      </Parameters>
-      <Docs>
-        <param name="one">To be added.</param>
-        <param name="other">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="op_LessThanOrEqual">
-      <MemberSignature Language="C#" Value="public static bool op_LessThanOrEqual (Mono.Cecil.Binary.RVA one, Mono.Cecil.Binary.RVA other);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="one" Type="Mono.Cecil.Binary.RVA" />
-        <Parameter Name="other" Type="Mono.Cecil.Binary.RVA" />
-      </Parameters>
-      <Docs>
-        <param name="one">To be added.</param>
-        <param name="other">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="op_Subtraction">
-      <MemberSignature Language="C#" Value="public static Mono.Cecil.Binary.RVA op_Subtraction (Mono.Cecil.Binary.RVA rva, uint x);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="rva" Type="Mono.Cecil.Binary.RVA" />
-        <Parameter Name="x" Type="System.UInt32" />
-      </Parameters>
-      <Docs>
-        <param name="rva">To be added.</param>
-        <param name="x">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ToString">
-      <MemberSignature Language="C#" Value="public override string ToString ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Value">
-      <MemberSignature Language="C#" Value="public uint Value { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Zero">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Binary.RVA Zero;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ResourceDataEntry.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ResourceDataEntry.xml
deleted file mode 100644
index cb2233d..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ResourceDataEntry.xml
+++ /dev/null
@@ -1,114 +0,0 @@
-<Type Name="ResourceDataEntry" FullName="Mono.Cecil.Binary.ResourceDataEntry">
-  <TypeSignature Language="C#" Value="public class ResourceDataEntry : Mono.Cecil.Binary.ResourceNode" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.Binary.ResourceNode</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ResourceDataEntry ();" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ResourceDataEntry (int offset);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="offset" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="offset">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Codepage">
-      <MemberSignature Language="C#" Value="public uint Codepage;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Data">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.RVA Data;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Reserved">
-      <MemberSignature Language="C#" Value="public uint Reserved;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ResourceData">
-      <MemberSignature Language="C#" Value="public byte[] ResourceData;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte[]</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Size">
-      <MemberSignature Language="C#" Value="public uint Size;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ResourceDirectoryEntry.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ResourceDirectoryEntry.xml
deleted file mode 100644
index 1e9531f..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ResourceDirectoryEntry.xml
+++ /dev/null
@@ -1,138 +0,0 @@
-<Type Name="ResourceDirectoryEntry" FullName="Mono.Cecil.Binary.ResourceDirectoryEntry">
-  <TypeSignature Language="C#" Value="public class ResourceDirectoryEntry : Mono.Cecil.Binary.ResourceNode" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.Binary.ResourceNode</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ResourceDirectoryEntry (Mono.Cecil.Binary.ResourceDirectoryString name);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="Mono.Cecil.Binary.ResourceDirectoryString" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ResourceDirectoryEntry (int id);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="id" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="id">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ResourceDirectoryEntry (Mono.Cecil.Binary.ResourceDirectoryString name, int offset);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="Mono.Cecil.Binary.ResourceDirectoryString" />
-        <Parameter Name="offset" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="offset">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ResourceDirectoryEntry (int id, int offset);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="id" Type="System.Int32" />
-        <Parameter Name="offset" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="id">To be added.</param>
-        <param name="offset">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Child">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.ResourceNode Child;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.ResourceNode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ID">
-      <MemberSignature Language="C#" Value="public int ID;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IdentifiedByName">
-      <MemberSignature Language="C#" Value="public bool IdentifiedByName { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.ResourceDirectoryString Name;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.ResourceDirectoryString</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ResourceDirectoryString.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ResourceDirectoryString.xml
deleted file mode 100644
index 6047a23..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ResourceDirectoryString.xml
+++ /dev/null
@@ -1,63 +0,0 @@
-<Type Name="ResourceDirectoryString" FullName="Mono.Cecil.Binary.ResourceDirectoryString">
-  <TypeSignature Language="C#" Value="public class ResourceDirectoryString : Mono.Cecil.Binary.ResourceNode" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.Binary.ResourceNode</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ResourceDirectoryString (string str);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="str" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="str">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ResourceDirectoryString (string str, int offset);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="str" Type="System.String" />
-        <Parameter Name="offset" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="str">To be added.</param>
-        <param name="offset">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="String">
-      <MemberSignature Language="C#" Value="public string String;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ResourceDirectoryTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ResourceDirectoryTable.xml
deleted file mode 100644
index de0c1de..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ResourceDirectoryTable.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<Type Name="ResourceDirectoryTable" FullName="Mono.Cecil.Binary.ResourceDirectoryTable">
-  <TypeSignature Language="C#" Value="public class ResourceDirectoryTable : Mono.Cecil.Binary.ResourceNode" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.Binary.ResourceNode</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ResourceDirectoryTable ();" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ResourceDirectoryTable (int offset);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="offset" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="offset">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Characteristics">
-      <MemberSignature Language="C#" Value="public uint Characteristics;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Entries">
-      <MemberSignature Language="C#" Value="public System.Collections.IList Entries { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Collections.IList</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MajorVersion">
-      <MemberSignature Language="C#" Value="public ushort MajorVersion;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MinorVersion">
-      <MemberSignature Language="C#" Value="public ushort MinorVersion;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="TimeDateStamp">
-      <MemberSignature Language="C#" Value="public uint TimeDateStamp;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ResourceNode.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ResourceNode.xml
deleted file mode 100644
index 31a32ef..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/ResourceNode.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<Type Name="ResourceNode" FullName="Mono.Cecil.Binary.ResourceNode">
-  <TypeSignature Language="C#" Value="public abstract class ResourceNode" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Offset">
-      <MemberSignature Language="C#" Value="public int Offset;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/RuntimeImage.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/RuntimeImage.xml
deleted file mode 100644
index 56f47d9..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/RuntimeImage.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<Type Name="RuntimeImage" FullName="Mono.Cecil.Binary.RuntimeImage">
-  <TypeSignature Language="C#" Value="public enum RuntimeImage" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Attributes>
-    <Attribute>
-      <AttributeName>System.Flags</AttributeName>
-    </Attribute>
-  </Attributes>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="F32BitsRequired">
-      <MemberSignature Language="C#" Value="F32BitsRequired" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RuntimeImage</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ILOnly">
-      <MemberSignature Language="C#" Value="ILOnly" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RuntimeImage</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="StrongNameSigned">
-      <MemberSignature Language="C#" Value="StrongNameSigned" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RuntimeImage</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="TrackDebugData">
-      <MemberSignature Language="C#" Value="TrackDebugData" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RuntimeImage</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/Section.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/Section.xml
deleted file mode 100644
index e88861d..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/Section.xml
+++ /dev/null
@@ -1,267 +0,0 @@
-<Type Name="Section" FullName="Mono.Cecil.Binary.Section">
-  <TypeSignature Language="C#" Value="public sealed class Section : Mono.Cecil.Binary.IBinaryVisitable, Mono.Cecil.Binary.IHeader" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IBinaryVisitable</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IHeader</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Binary.IBinaryVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Binary.IBinaryVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Characteristics">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.SectionCharacteristics Characteristics;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Data">
-      <MemberSignature Language="C#" Value="public byte[] Data;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte[]</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public string Name;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="NumberOfLineNumbers">
-      <MemberSignature Language="C#" Value="public ushort NumberOfLineNumbers;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="NumberOfRelocations">
-      <MemberSignature Language="C#" Value="public ushort NumberOfRelocations;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PointerToLineNumbers">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.RVA PointerToLineNumbers;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PointerToRawData">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.RVA PointerToRawData;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PointerToRelocations">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.RVA PointerToRelocations;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Relocs">
-      <MemberSignature Language="C#" Value="public const string Relocs;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resources">
-      <MemberSignature Language="C#" Value="public const string Resources;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SData">
-      <MemberSignature Language="C#" Value="public const string SData;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SetDefaultValues">
-      <MemberSignature Language="C#" Value="public void SetDefaultValues ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SizeOfRawData">
-      <MemberSignature Language="C#" Value="public uint SizeOfRawData;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Text">
-      <MemberSignature Language="C#" Value="public const string Text;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VirtualAddress">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.RVA VirtualAddress;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VirtualSize">
-      <MemberSignature Language="C#" Value="public uint VirtualSize;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/SectionCharacteristics.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/SectionCharacteristics.xml
deleted file mode 100644
index e8ba933..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/SectionCharacteristics.xml
+++ /dev/null
@@ -1,463 +0,0 @@
-<Type Name="SectionCharacteristics" FullName="Mono.Cecil.Binary.SectionCharacteristics">
-  <TypeSignature Language="C#" Value="public enum SectionCharacteristics" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Attributes>
-    <Attribute>
-      <AttributeName>System.Flags</AttributeName>
-    </Attribute>
-  </Attributes>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Align1024Bytes">
-      <MemberSignature Language="C#" Value="Align1024Bytes" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Align128Bytes">
-      <MemberSignature Language="C#" Value="Align128Bytes" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Align16Bytes">
-      <MemberSignature Language="C#" Value="Align16Bytes" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Align1Bytes">
-      <MemberSignature Language="C#" Value="Align1Bytes" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Align2048Bytes">
-      <MemberSignature Language="C#" Value="Align2048Bytes" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Align256Bytes">
-      <MemberSignature Language="C#" Value="Align256Bytes" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Align2Bytes">
-      <MemberSignature Language="C#" Value="Align2Bytes" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Align32Bytes">
-      <MemberSignature Language="C#" Value="Align32Bytes" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Align4096Bytes">
-      <MemberSignature Language="C#" Value="Align4096Bytes" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Align4Bytes">
-      <MemberSignature Language="C#" Value="Align4Bytes" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Align512Bytes">
-      <MemberSignature Language="C#" Value="Align512Bytes" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Align64Bytes">
-      <MemberSignature Language="C#" Value="Align64Bytes" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Align8192Bytes">
-      <MemberSignature Language="C#" Value="Align8192Bytes" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Align8Bytes">
-      <MemberSignature Language="C#" Value="Align8Bytes" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ContainsCode">
-      <MemberSignature Language="C#" Value="ContainsCode" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ContainsInitializedData">
-      <MemberSignature Language="C#" Value="ContainsInitializedData" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ContainsUninitializedData">
-      <MemberSignature Language="C#" Value="ContainsUninitializedData" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="GPRel">
-      <MemberSignature Language="C#" Value="GPRel" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="LnkCOMDAT">
-      <MemberSignature Language="C#" Value="LnkCOMDAT" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="LnkInfo">
-      <MemberSignature Language="C#" Value="LnkInfo" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="LnkNRelocOvfl">
-      <MemberSignature Language="C#" Value="LnkNRelocOvfl" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="LnkOther">
-      <MemberSignature Language="C#" Value="LnkOther" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="LnkRemove">
-      <MemberSignature Language="C#" Value="LnkRemove" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="MemDiscardable">
-      <MemberSignature Language="C#" Value="MemDiscardable" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="MemExecute">
-      <MemberSignature Language="C#" Value="MemExecute" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="MemLocked">
-      <MemberSignature Language="C#" Value="MemLocked" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="MemNotCached">
-      <MemberSignature Language="C#" Value="MemNotCached" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="MemNotPaged">
-      <MemberSignature Language="C#" Value="MemNotPaged" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="MemoryRead">
-      <MemberSignature Language="C#" Value="MemoryRead" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="MemoryWrite">
-      <MemberSignature Language="C#" Value="MemoryWrite" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="MemPreload">
-      <MemberSignature Language="C#" Value="MemPreload" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="MemPurgeable">
-      <MemberSignature Language="C#" Value="MemPurgeable" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="MemShared">
-      <MemberSignature Language="C#" Value="MemShared" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="TypeNoPad">
-      <MemberSignature Language="C#" Value="TypeNoPad" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SectionCharacteristics</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/SectionCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/SectionCollection.xml
deleted file mode 100644
index 2160efe..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/SectionCollection.xml
+++ /dev/null
@@ -1,180 +0,0 @@
-<Type Name="SectionCollection" FullName="Mono.Cecil.Binary.SectionCollection">
-  <TypeSignature Language="C#" Value="public sealed class SectionCollection : Mono.Cecil.Binary.IBinaryVisitable, System.Collections.ICollection" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IBinaryVisitable</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>System.Collections.ICollection</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Binary.IBinaryVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Binary.IBinaryVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.Binary.Section value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.Binary.Section" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CopyTo">
-      <MemberSignature Language="C#" Value="public void CopyTo (Array ary, int index);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="ary" Type="System.Array" />
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="ary">To be added.</param>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Count">
-      <MemberSignature Language="C#" Value="public int Count { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetEnumerator">
-      <MemberSignature Language="C#" Value="public System.Collections.IEnumerator GetEnumerator ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Collections.IEnumerator</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.Binary.Section value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.Binary.Section" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsSynchronized">
-      <MemberSignature Language="C#" Value="public bool IsSynchronized { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.Section this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.Section</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SyncRoot">
-      <MemberSignature Language="C#" Value="public object SyncRoot { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Object</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/SubSystem.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/SubSystem.xml
deleted file mode 100644
index 80c8605..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Binary/SubSystem.xml
+++ /dev/null
@@ -1,172 +0,0 @@
-<Type Name="SubSystem" FullName="Mono.Cecil.Binary.SubSystem">
-  <TypeSignature Language="C#" Value="public enum SubSystem" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="EfiApplication">
-      <MemberSignature Language="C#" Value="EfiApplication" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SubSystem</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="EfiBootServiceDriver">
-      <MemberSignature Language="C#" Value="EfiBootServiceDriver" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SubSystem</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="EfiRom">
-      <MemberSignature Language="C#" Value="EfiRom" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SubSystem</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="EfiRuntimeDriver">
-      <MemberSignature Language="C#" Value="EfiRuntimeDriver" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SubSystem</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Native">
-      <MemberSignature Language="C#" Value="Native" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SubSystem</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="NexusAgent">
-      <MemberSignature Language="C#" Value="NexusAgent" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SubSystem</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="PosixCui">
-      <MemberSignature Language="C#" Value="PosixCui" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SubSystem</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Unknown">
-      <MemberSignature Language="C#" Value="Unknown" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SubSystem</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="WindowsCeGui">
-      <MemberSignature Language="C#" Value="WindowsCeGui" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SubSystem</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="WindowsCui">
-      <MemberSignature Language="C#" Value="WindowsCui" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SubSystem</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="WindowsGui">
-      <MemberSignature Language="C#" Value="WindowsGui" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SubSystem</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Xbox">
-      <MemberSignature Language="C#" Value="Xbox" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.SubSystem</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/BaseCodeVisitor.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/BaseCodeVisitor.xml
deleted file mode 100644
index 3f90573..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/BaseCodeVisitor.xml
+++ /dev/null
@@ -1,213 +0,0 @@
-<Type Name="BaseCodeVisitor" FullName="Mono.Cecil.Cil.BaseCodeVisitor">
-  <TypeSignature Language="C#" Value="public abstract class BaseCodeVisitor : Mono.Cecil.Cil.ICodeVisitor" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Cil.ICodeVisitor</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="protected BaseCodeVisitor ();" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="TerminateMethodBody">
-      <MemberSignature Language="C#" Value="public virtual void TerminateMethodBody (Mono.Cecil.Cil.MethodBody body);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="body" Type="Mono.Cecil.Cil.MethodBody" />
-      </Parameters>
-      <Docs>
-        <param name="body">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitExceptionHandler">
-      <MemberSignature Language="C#" Value="public virtual void VisitExceptionHandler (Mono.Cecil.Cil.ExceptionHandler eh);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="eh" Type="Mono.Cecil.Cil.ExceptionHandler" />
-      </Parameters>
-      <Docs>
-        <param name="eh">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitExceptionHandlerCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitExceptionHandlerCollection (Mono.Cecil.Cil.ExceptionHandlerCollection seh);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="seh" Type="Mono.Cecil.Cil.ExceptionHandlerCollection" />
-      </Parameters>
-      <Docs>
-        <param name="seh">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitInstruction">
-      <MemberSignature Language="C#" Value="public virtual void VisitInstruction (Mono.Cecil.Cil.Instruction instr);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="instr" Type="Mono.Cecil.Cil.Instruction" />
-      </Parameters>
-      <Docs>
-        <param name="instr">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitInstructionCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitInstructionCollection (Mono.Cecil.Cil.InstructionCollection instructions);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="instructions" Type="Mono.Cecil.Cil.InstructionCollection" />
-      </Parameters>
-      <Docs>
-        <param name="instructions">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMethodBody">
-      <MemberSignature Language="C#" Value="public virtual void VisitMethodBody (Mono.Cecil.Cil.MethodBody body);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="body" Type="Mono.Cecil.Cil.MethodBody" />
-      </Parameters>
-      <Docs>
-        <param name="body">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitScope">
-      <MemberSignature Language="C#" Value="public virtual void VisitScope (Mono.Cecil.Cil.Scope s);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="s" Type="Mono.Cecil.Cil.Scope" />
-      </Parameters>
-      <Docs>
-        <param name="s">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitScopeCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitScopeCollection (Mono.Cecil.Cil.ScopeCollection scopes);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="scopes" Type="Mono.Cecil.Cil.ScopeCollection" />
-      </Parameters>
-      <Docs>
-        <param name="scopes">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitVariableDefinition">
-      <MemberSignature Language="C#" Value="public virtual void VisitVariableDefinition (Mono.Cecil.Cil.VariableDefinition var);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="var" Type="Mono.Cecil.Cil.VariableDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="var">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitVariableDefinitionCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitVariableDefinitionCollection (Mono.Cecil.Cil.VariableDefinitionCollection variables);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="variables" Type="Mono.Cecil.Cil.VariableDefinitionCollection" />
-      </Parameters>
-      <Docs>
-        <param name="variables">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/CilWorker.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/CilWorker.xml
deleted file mode 100644
index 2bd4a82..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/CilWorker.xml
+++ /dev/null
@@ -1,797 +0,0 @@
-<Type Name="CilWorker" FullName="Mono.Cecil.Cil.CilWorker">
-  <TypeSignature Language="C#" Value="public sealed class CilWorker" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Append">
-      <MemberSignature Language="C#" Value="public void Append (Mono.Cecil.Cil.Instruction instr);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="instr" Type="Mono.Cecil.Cil.Instruction" />
-      </Parameters>
-      <Docs>
-        <param name="instr">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Create">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Create (Mono.Cecil.Cil.OpCode opcode);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Create">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Create (Mono.Cecil.Cil.OpCode opcode, Mono.Cecil.CallSite site);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="site" Type="Mono.Cecil.CallSite" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="site">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Create">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Create (Mono.Cecil.Cil.OpCode opcode, Mono.Cecil.Cil.Instruction label);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="label" Type="Mono.Cecil.Cil.Instruction" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="label">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Create">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Create (Mono.Cecil.Cil.OpCode opcode, Mono.Cecil.Cil.Instruction[] labels);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="labels" Type="Mono.Cecil.Cil.Instruction[]" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="labels">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Create">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Create (Mono.Cecil.Cil.OpCode opcode, Mono.Cecil.Cil.VariableDefinition var);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="var" Type="Mono.Cecil.Cil.VariableDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="var">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Create">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Create (Mono.Cecil.Cil.OpCode opcode, Mono.Cecil.FieldReference field);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="field" Type="Mono.Cecil.FieldReference" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="field">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Create">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Create (Mono.Cecil.Cil.OpCode opcode, Mono.Cecil.MethodReference method);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="method" Type="Mono.Cecil.MethodReference" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="method">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Create">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Create (Mono.Cecil.Cil.OpCode opcode, Mono.Cecil.ParameterDefinition param);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="param" Type="Mono.Cecil.ParameterDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="param">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Create">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Create (Mono.Cecil.Cil.OpCode opcode, Mono.Cecil.TypeReference type);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="type" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="type">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Create">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Create (Mono.Cecil.Cil.OpCode opcode, byte b);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="b" Type="System.Byte" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="b">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Create">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Create (Mono.Cecil.Cil.OpCode opcode, double d);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="d" Type="System.Double" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="d">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Create">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Create (Mono.Cecil.Cil.OpCode opcode, int i);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="i" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="i">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Create">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Create (Mono.Cecil.Cil.OpCode opcode, long l);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="l" Type="System.Int64" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="l">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Create">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Create (Mono.Cecil.Cil.OpCode opcode, sbyte b);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="b" Type="System.SByte" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="b">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Create">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Create (Mono.Cecil.Cil.OpCode opcode, float f);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="f" Type="System.Single" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="f">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Create">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Create (Mono.Cecil.Cil.OpCode opcode, string str);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="str" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="str">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Emit">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Emit (Mono.Cecil.Cil.OpCode opcode);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Emit">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Emit (Mono.Cecil.Cil.OpCode opcode, Mono.Cecil.CallSite site);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="site" Type="Mono.Cecil.CallSite" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="site">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Emit">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Emit (Mono.Cecil.Cil.OpCode opcode, Mono.Cecil.Cil.Instruction target);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="target" Type="Mono.Cecil.Cil.Instruction" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="target">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Emit">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Emit (Mono.Cecil.Cil.OpCode opcode, Mono.Cecil.Cil.Instruction[] targets);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="targets" Type="Mono.Cecil.Cil.Instruction[]" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="targets">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Emit">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Emit (Mono.Cecil.Cil.OpCode opcode, Mono.Cecil.Cil.VariableDefinition var);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="var" Type="Mono.Cecil.Cil.VariableDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="var">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Emit">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Emit (Mono.Cecil.Cil.OpCode opcode, Mono.Cecil.FieldReference field);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="field" Type="Mono.Cecil.FieldReference" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="field">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Emit">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Emit (Mono.Cecil.Cil.OpCode opcode, Mono.Cecil.MethodReference meth);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="meth" Type="Mono.Cecil.MethodReference" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="meth">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Emit">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Emit (Mono.Cecil.Cil.OpCode opcode, Mono.Cecil.ParameterDefinition param);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="param" Type="Mono.Cecil.ParameterDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="param">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Emit">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Emit (Mono.Cecil.Cil.OpCode opcode, Mono.Cecil.TypeReference type);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="type" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="type">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Emit">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Emit (Mono.Cecil.Cil.OpCode opcode, byte b);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="b" Type="System.Byte" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="b">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Emit">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Emit (Mono.Cecil.Cil.OpCode opcode, double d);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="d" Type="System.Double" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="d">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Emit">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Emit (Mono.Cecil.Cil.OpCode opcode, int i);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="i" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="i">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Emit">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Emit (Mono.Cecil.Cil.OpCode opcode, long l);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="l" Type="System.Int64" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="l">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Emit">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Emit (Mono.Cecil.Cil.OpCode opcode, sbyte b);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="b" Type="System.SByte" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="b">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Emit">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Emit (Mono.Cecil.Cil.OpCode opcode, float f);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="f" Type="System.Single" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="f">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Emit">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Emit (Mono.Cecil.Cil.OpCode opcode, string str);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="str" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <param name="str">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetBody">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.MethodBody GetBody ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.MethodBody</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="InsertAfter">
-      <MemberSignature Language="C#" Value="public void InsertAfter (Mono.Cecil.Cil.Instruction target, Mono.Cecil.Cil.Instruction instr);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="target" Type="Mono.Cecil.Cil.Instruction" />
-        <Parameter Name="instr" Type="Mono.Cecil.Cil.Instruction" />
-      </Parameters>
-      <Docs>
-        <param name="target">To be added.</param>
-        <param name="instr">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="InsertBefore">
-      <MemberSignature Language="C#" Value="public void InsertBefore (Mono.Cecil.Cil.Instruction target, Mono.Cecil.Cil.Instruction instr);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="target" Type="Mono.Cecil.Cil.Instruction" />
-        <Parameter Name="instr" Type="Mono.Cecil.Cil.Instruction" />
-      </Parameters>
-      <Docs>
-        <param name="target">To be added.</param>
-        <param name="instr">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.Cil.Instruction instr);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="instr" Type="Mono.Cecil.Cil.Instruction" />
-      </Parameters>
-      <Docs>
-        <param name="instr">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Replace">
-      <MemberSignature Language="C#" Value="public void Replace (Mono.Cecil.Cil.Instruction old, Mono.Cecil.Cil.Instruction instr);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="old" Type="Mono.Cecil.Cil.Instruction" />
-        <Parameter Name="instr" Type="Mono.Cecil.Cil.Instruction" />
-      </Parameters>
-      <Docs>
-        <param name="old">To be added.</param>
-        <param name="instr">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/Code.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/Code.xml
deleted file mode 100644
index d103943..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/Code.xml
+++ /dev/null
@@ -1,2863 +0,0 @@
-<Type Name="Code" FullName="Mono.Cecil.Cil.Code">
-  <TypeSignature Language="C#" Value="public enum Code" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="Add" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Add_Ovf">
-      <MemberSignature Language="C#" Value="Add_Ovf" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Add_Ovf_Un">
-      <MemberSignature Language="C#" Value="Add_Ovf_Un" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="And">
-      <MemberSignature Language="C#" Value="And" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Arglist">
-      <MemberSignature Language="C#" Value="Arglist" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Beq">
-      <MemberSignature Language="C#" Value="Beq" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Beq_S">
-      <MemberSignature Language="C#" Value="Beq_S" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Bge">
-      <MemberSignature Language="C#" Value="Bge" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Bge_S">
-      <MemberSignature Language="C#" Value="Bge_S" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Bge_Un">
-      <MemberSignature Language="C#" Value="Bge_Un" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Bge_Un_S">
-      <MemberSignature Language="C#" Value="Bge_Un_S" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Bgt">
-      <MemberSignature Language="C#" Value="Bgt" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Bgt_S">
-      <MemberSignature Language="C#" Value="Bgt_S" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Bgt_Un">
-      <MemberSignature Language="C#" Value="Bgt_Un" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Bgt_Un_S">
-      <MemberSignature Language="C#" Value="Bgt_Un_S" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ble">
-      <MemberSignature Language="C#" Value="Ble" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ble_S">
-      <MemberSignature Language="C#" Value="Ble_S" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ble_Un">
-      <MemberSignature Language="C#" Value="Ble_Un" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ble_Un_S">
-      <MemberSignature Language="C#" Value="Ble_Un_S" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Blt">
-      <MemberSignature Language="C#" Value="Blt" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Blt_S">
-      <MemberSignature Language="C#" Value="Blt_S" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Blt_Un">
-      <MemberSignature Language="C#" Value="Blt_Un" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Blt_Un_S">
-      <MemberSignature Language="C#" Value="Blt_Un_S" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Bne_Un">
-      <MemberSignature Language="C#" Value="Bne_Un" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Bne_Un_S">
-      <MemberSignature Language="C#" Value="Bne_Un_S" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Box">
-      <MemberSignature Language="C#" Value="Box" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Br">
-      <MemberSignature Language="C#" Value="Br" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Br_S">
-      <MemberSignature Language="C#" Value="Br_S" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Break">
-      <MemberSignature Language="C#" Value="Break" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Brfalse">
-      <MemberSignature Language="C#" Value="Brfalse" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Brfalse_S">
-      <MemberSignature Language="C#" Value="Brfalse_S" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Brtrue">
-      <MemberSignature Language="C#" Value="Brtrue" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Brtrue_S">
-      <MemberSignature Language="C#" Value="Brtrue_S" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Call">
-      <MemberSignature Language="C#" Value="Call" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Calli">
-      <MemberSignature Language="C#" Value="Calli" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Callvirt">
-      <MemberSignature Language="C#" Value="Callvirt" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Castclass">
-      <MemberSignature Language="C#" Value="Castclass" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ceq">
-      <MemberSignature Language="C#" Value="Ceq" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Cgt">
-      <MemberSignature Language="C#" Value="Cgt" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Cgt_Un">
-      <MemberSignature Language="C#" Value="Cgt_Un" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ckfinite">
-      <MemberSignature Language="C#" Value="Ckfinite" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Clt">
-      <MemberSignature Language="C#" Value="Clt" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Clt_Un">
-      <MemberSignature Language="C#" Value="Clt_Un" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Constrained">
-      <MemberSignature Language="C#" Value="Constrained" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_I">
-      <MemberSignature Language="C#" Value="Conv_I" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_I1">
-      <MemberSignature Language="C#" Value="Conv_I1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_I2">
-      <MemberSignature Language="C#" Value="Conv_I2" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_I4">
-      <MemberSignature Language="C#" Value="Conv_I4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_I8">
-      <MemberSignature Language="C#" Value="Conv_I8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_I">
-      <MemberSignature Language="C#" Value="Conv_Ovf_I" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_I_Un">
-      <MemberSignature Language="C#" Value="Conv_Ovf_I_Un" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_I1">
-      <MemberSignature Language="C#" Value="Conv_Ovf_I1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_I1_Un">
-      <MemberSignature Language="C#" Value="Conv_Ovf_I1_Un" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_I2">
-      <MemberSignature Language="C#" Value="Conv_Ovf_I2" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_I2_Un">
-      <MemberSignature Language="C#" Value="Conv_Ovf_I2_Un" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_I4">
-      <MemberSignature Language="C#" Value="Conv_Ovf_I4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_I4_Un">
-      <MemberSignature Language="C#" Value="Conv_Ovf_I4_Un" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_I8">
-      <MemberSignature Language="C#" Value="Conv_Ovf_I8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_I8_Un">
-      <MemberSignature Language="C#" Value="Conv_Ovf_I8_Un" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_U">
-      <MemberSignature Language="C#" Value="Conv_Ovf_U" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_U_Un">
-      <MemberSignature Language="C#" Value="Conv_Ovf_U_Un" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_U1">
-      <MemberSignature Language="C#" Value="Conv_Ovf_U1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_U1_Un">
-      <MemberSignature Language="C#" Value="Conv_Ovf_U1_Un" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_U2">
-      <MemberSignature Language="C#" Value="Conv_Ovf_U2" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_U2_Un">
-      <MemberSignature Language="C#" Value="Conv_Ovf_U2_Un" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_U4">
-      <MemberSignature Language="C#" Value="Conv_Ovf_U4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_U4_Un">
-      <MemberSignature Language="C#" Value="Conv_Ovf_U4_Un" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_U8">
-      <MemberSignature Language="C#" Value="Conv_Ovf_U8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_U8_Un">
-      <MemberSignature Language="C#" Value="Conv_Ovf_U8_Un" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_R_Un">
-      <MemberSignature Language="C#" Value="Conv_R_Un" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_R4">
-      <MemberSignature Language="C#" Value="Conv_R4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_R8">
-      <MemberSignature Language="C#" Value="Conv_R8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_U">
-      <MemberSignature Language="C#" Value="Conv_U" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_U1">
-      <MemberSignature Language="C#" Value="Conv_U1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_U2">
-      <MemberSignature Language="C#" Value="Conv_U2" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_U4">
-      <MemberSignature Language="C#" Value="Conv_U4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_U8">
-      <MemberSignature Language="C#" Value="Conv_U8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Cpblk">
-      <MemberSignature Language="C#" Value="Cpblk" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Cpobj">
-      <MemberSignature Language="C#" Value="Cpobj" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Div">
-      <MemberSignature Language="C#" Value="Div" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Div_Un">
-      <MemberSignature Language="C#" Value="Div_Un" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Dup">
-      <MemberSignature Language="C#" Value="Dup" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Endfilter">
-      <MemberSignature Language="C#" Value="Endfilter" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Endfinally">
-      <MemberSignature Language="C#" Value="Endfinally" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Initblk">
-      <MemberSignature Language="C#" Value="Initblk" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Initobj">
-      <MemberSignature Language="C#" Value="Initobj" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Isinst">
-      <MemberSignature Language="C#" Value="Isinst" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Jmp">
-      <MemberSignature Language="C#" Value="Jmp" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldarg">
-      <MemberSignature Language="C#" Value="Ldarg" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldarg_0">
-      <MemberSignature Language="C#" Value="Ldarg_0" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldarg_1">
-      <MemberSignature Language="C#" Value="Ldarg_1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldarg_2">
-      <MemberSignature Language="C#" Value="Ldarg_2" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldarg_3">
-      <MemberSignature Language="C#" Value="Ldarg_3" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldarg_S">
-      <MemberSignature Language="C#" Value="Ldarg_S" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldarga">
-      <MemberSignature Language="C#" Value="Ldarga" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldarga_S">
-      <MemberSignature Language="C#" Value="Ldarga_S" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_I4">
-      <MemberSignature Language="C#" Value="Ldc_I4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_I4_0">
-      <MemberSignature Language="C#" Value="Ldc_I4_0" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_I4_1">
-      <MemberSignature Language="C#" Value="Ldc_I4_1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_I4_2">
-      <MemberSignature Language="C#" Value="Ldc_I4_2" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_I4_3">
-      <MemberSignature Language="C#" Value="Ldc_I4_3" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_I4_4">
-      <MemberSignature Language="C#" Value="Ldc_I4_4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_I4_5">
-      <MemberSignature Language="C#" Value="Ldc_I4_5" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_I4_6">
-      <MemberSignature Language="C#" Value="Ldc_I4_6" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_I4_7">
-      <MemberSignature Language="C#" Value="Ldc_I4_7" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_I4_8">
-      <MemberSignature Language="C#" Value="Ldc_I4_8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_I4_M1">
-      <MemberSignature Language="C#" Value="Ldc_I4_M1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_I4_S">
-      <MemberSignature Language="C#" Value="Ldc_I4_S" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_I8">
-      <MemberSignature Language="C#" Value="Ldc_I8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_R4">
-      <MemberSignature Language="C#" Value="Ldc_R4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_R8">
-      <MemberSignature Language="C#" Value="Ldc_R8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldelem_Any">
-      <MemberSignature Language="C#" Value="Ldelem_Any" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldelem_I">
-      <MemberSignature Language="C#" Value="Ldelem_I" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldelem_I1">
-      <MemberSignature Language="C#" Value="Ldelem_I1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldelem_I2">
-      <MemberSignature Language="C#" Value="Ldelem_I2" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldelem_I4">
-      <MemberSignature Language="C#" Value="Ldelem_I4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldelem_I8">
-      <MemberSignature Language="C#" Value="Ldelem_I8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldelem_R4">
-      <MemberSignature Language="C#" Value="Ldelem_R4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldelem_R8">
-      <MemberSignature Language="C#" Value="Ldelem_R8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldelem_Ref">
-      <MemberSignature Language="C#" Value="Ldelem_Ref" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldelem_U1">
-      <MemberSignature Language="C#" Value="Ldelem_U1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldelem_U2">
-      <MemberSignature Language="C#" Value="Ldelem_U2" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldelem_U4">
-      <MemberSignature Language="C#" Value="Ldelem_U4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldelema">
-      <MemberSignature Language="C#" Value="Ldelema" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldfld">
-      <MemberSignature Language="C#" Value="Ldfld" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldflda">
-      <MemberSignature Language="C#" Value="Ldflda" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldftn">
-      <MemberSignature Language="C#" Value="Ldftn" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldind_I">
-      <MemberSignature Language="C#" Value="Ldind_I" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldind_I1">
-      <MemberSignature Language="C#" Value="Ldind_I1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldind_I2">
-      <MemberSignature Language="C#" Value="Ldind_I2" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldind_I4">
-      <MemberSignature Language="C#" Value="Ldind_I4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldind_I8">
-      <MemberSignature Language="C#" Value="Ldind_I8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldind_R4">
-      <MemberSignature Language="C#" Value="Ldind_R4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldind_R8">
-      <MemberSignature Language="C#" Value="Ldind_R8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldind_Ref">
-      <MemberSignature Language="C#" Value="Ldind_Ref" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldind_U1">
-      <MemberSignature Language="C#" Value="Ldind_U1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldind_U2">
-      <MemberSignature Language="C#" Value="Ldind_U2" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldind_U4">
-      <MemberSignature Language="C#" Value="Ldind_U4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldlen">
-      <MemberSignature Language="C#" Value="Ldlen" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldloc">
-      <MemberSignature Language="C#" Value="Ldloc" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldloc_0">
-      <MemberSignature Language="C#" Value="Ldloc_0" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldloc_1">
-      <MemberSignature Language="C#" Value="Ldloc_1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldloc_2">
-      <MemberSignature Language="C#" Value="Ldloc_2" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldloc_3">
-      <MemberSignature Language="C#" Value="Ldloc_3" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldloc_S">
-      <MemberSignature Language="C#" Value="Ldloc_S" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldloca">
-      <MemberSignature Language="C#" Value="Ldloca" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldloca_S">
-      <MemberSignature Language="C#" Value="Ldloca_S" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldnull">
-      <MemberSignature Language="C#" Value="Ldnull" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldobj">
-      <MemberSignature Language="C#" Value="Ldobj" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldsfld">
-      <MemberSignature Language="C#" Value="Ldsfld" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldsflda">
-      <MemberSignature Language="C#" Value="Ldsflda" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldstr">
-      <MemberSignature Language="C#" Value="Ldstr" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldtoken">
-      <MemberSignature Language="C#" Value="Ldtoken" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldvirtftn">
-      <MemberSignature Language="C#" Value="Ldvirtftn" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Leave">
-      <MemberSignature Language="C#" Value="Leave" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Leave_S">
-      <MemberSignature Language="C#" Value="Leave_S" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Localloc">
-      <MemberSignature Language="C#" Value="Localloc" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Mkrefany">
-      <MemberSignature Language="C#" Value="Mkrefany" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Mul">
-      <MemberSignature Language="C#" Value="Mul" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Mul_Ovf">
-      <MemberSignature Language="C#" Value="Mul_Ovf" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Mul_Ovf_Un">
-      <MemberSignature Language="C#" Value="Mul_Ovf_Un" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Neg">
-      <MemberSignature Language="C#" Value="Neg" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Newarr">
-      <MemberSignature Language="C#" Value="Newarr" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Newobj">
-      <MemberSignature Language="C#" Value="Newobj" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="No">
-      <MemberSignature Language="C#" Value="No" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Nop">
-      <MemberSignature Language="C#" Value="Nop" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Not">
-      <MemberSignature Language="C#" Value="Not" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Or">
-      <MemberSignature Language="C#" Value="Or" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Pop">
-      <MemberSignature Language="C#" Value="Pop" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Readonly">
-      <MemberSignature Language="C#" Value="Readonly" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Refanytype">
-      <MemberSignature Language="C#" Value="Refanytype" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Refanyval">
-      <MemberSignature Language="C#" Value="Refanyval" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Rem">
-      <MemberSignature Language="C#" Value="Rem" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Rem_Un">
-      <MemberSignature Language="C#" Value="Rem_Un" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ret">
-      <MemberSignature Language="C#" Value="Ret" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Rethrow">
-      <MemberSignature Language="C#" Value="Rethrow" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Shl">
-      <MemberSignature Language="C#" Value="Shl" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Shr">
-      <MemberSignature Language="C#" Value="Shr" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Shr_Un">
-      <MemberSignature Language="C#" Value="Shr_Un" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Sizeof">
-      <MemberSignature Language="C#" Value="Sizeof" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Starg">
-      <MemberSignature Language="C#" Value="Starg" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Starg_S">
-      <MemberSignature Language="C#" Value="Starg_S" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Stelem_Any">
-      <MemberSignature Language="C#" Value="Stelem_Any" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Stelem_I">
-      <MemberSignature Language="C#" Value="Stelem_I" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Stelem_I1">
-      <MemberSignature Language="C#" Value="Stelem_I1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Stelem_I2">
-      <MemberSignature Language="C#" Value="Stelem_I2" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Stelem_I4">
-      <MemberSignature Language="C#" Value="Stelem_I4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Stelem_I8">
-      <MemberSignature Language="C#" Value="Stelem_I8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Stelem_R4">
-      <MemberSignature Language="C#" Value="Stelem_R4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Stelem_R8">
-      <MemberSignature Language="C#" Value="Stelem_R8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Stelem_Ref">
-      <MemberSignature Language="C#" Value="Stelem_Ref" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Stfld">
-      <MemberSignature Language="C#" Value="Stfld" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Stind_I">
-      <MemberSignature Language="C#" Value="Stind_I" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Stind_I1">
-      <MemberSignature Language="C#" Value="Stind_I1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Stind_I2">
-      <MemberSignature Language="C#" Value="Stind_I2" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Stind_I4">
-      <MemberSignature Language="C#" Value="Stind_I4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Stind_I8">
-      <MemberSignature Language="C#" Value="Stind_I8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Stind_R4">
-      <MemberSignature Language="C#" Value="Stind_R4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Stind_R8">
-      <MemberSignature Language="C#" Value="Stind_R8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Stind_Ref">
-      <MemberSignature Language="C#" Value="Stind_Ref" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Stloc">
-      <MemberSignature Language="C#" Value="Stloc" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Stloc_0">
-      <MemberSignature Language="C#" Value="Stloc_0" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Stloc_1">
-      <MemberSignature Language="C#" Value="Stloc_1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Stloc_2">
-      <MemberSignature Language="C#" Value="Stloc_2" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Stloc_3">
-      <MemberSignature Language="C#" Value="Stloc_3" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Stloc_S">
-      <MemberSignature Language="C#" Value="Stloc_S" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Stobj">
-      <MemberSignature Language="C#" Value="Stobj" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Stsfld">
-      <MemberSignature Language="C#" Value="Stsfld" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Sub">
-      <MemberSignature Language="C#" Value="Sub" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Sub_Ovf">
-      <MemberSignature Language="C#" Value="Sub_Ovf" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Sub_Ovf_Un">
-      <MemberSignature Language="C#" Value="Sub_Ovf_Un" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Switch">
-      <MemberSignature Language="C#" Value="Switch" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Tail">
-      <MemberSignature Language="C#" Value="Tail" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Throw">
-      <MemberSignature Language="C#" Value="Throw" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Unaligned">
-      <MemberSignature Language="C#" Value="Unaligned" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Unbox">
-      <MemberSignature Language="C#" Value="Unbox" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Unbox_Any">
-      <MemberSignature Language="C#" Value="Unbox_Any" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Volatile">
-      <MemberSignature Language="C#" Value="Volatile" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Xor">
-      <MemberSignature Language="C#" Value="Xor" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/Document.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/Document.xml
deleted file mode 100644
index cf00934..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/Document.xml
+++ /dev/null
@@ -1,122 +0,0 @@
-<Type Name="Document" FullName="Mono.Cecil.Cil.Document">
-  <TypeSignature Language="C#" Value="public class Document" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public Document (string url);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="url" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="url">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Hash">
-      <MemberSignature Language="C#" Value="public byte[] Hash { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte[]</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HashAlgorithm">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.DocumentHashAlgorithm HashAlgorithm { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.DocumentHashAlgorithm</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Language">
-      <MemberSignature Language="C#" Value="public Guid Language { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Guid</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="LanguageVendor">
-      <MemberSignature Language="C#" Value="public Guid LanguageVendor { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Guid</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Type">
-      <MemberSignature Language="C#" Value="public Guid Type { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Guid</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Url">
-      <MemberSignature Language="C#" Value="public string Url { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/DocumentHashAlgorithm.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/DocumentHashAlgorithm.xml
deleted file mode 100644
index 6154401..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/DocumentHashAlgorithm.xml
+++ /dev/null
@@ -1,70 +0,0 @@
-<Type Name="DocumentHashAlgorithm" FullName="Mono.Cecil.Cil.DocumentHashAlgorithm">
-  <TypeSignature Language="C#" Value="public enum DocumentHashAlgorithm" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="MD5">
-      <MemberSignature Language="C#" Value="MD5" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Attributes>
-        <Attribute>
-          <AttributeName>Mono.Cecil.Cil.Guid(1080993376, 25807, 19586, 182, 240, 66, 212, 129, 114, 167, 153)</AttributeName>
-        </Attribute>
-      </Attributes>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.DocumentHashAlgorithm</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="None">
-      <MemberSignature Language="C#" Value="None" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Attributes>
-        <Attribute>
-          <AttributeName>Mono.Cecil.Cil.Guid(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)</AttributeName>
-        </Attribute>
-      </Attributes>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.DocumentHashAlgorithm</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="SHA1">
-      <MemberSignature Language="C#" Value="SHA1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Attributes>
-        <Attribute>
-          <AttributeName>Mono.Cecil.Cil.Guid(4279768812, 43614, 19728, 135, 247, 111, 73, 99, 131, 52, 96)</AttributeName>
-        </Attribute>
-      </Attributes>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.DocumentHashAlgorithm</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/DocumentLanguage.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/DocumentLanguage.xml
deleted file mode 100644
index 3e54ed2..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/DocumentLanguage.xml
+++ /dev/null
@@ -1,197 +0,0 @@
-<Type Name="DocumentLanguage" FullName="Mono.Cecil.Cil.DocumentLanguage">
-  <TypeSignature Language="C#" Value="public abstract class DocumentLanguage" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="protected DocumentLanguage ();" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Basic">
-      <MemberSignature Language="C#" Value="public static readonly Guid Basic;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Guid</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="C">
-      <MemberSignature Language="C#" Value="public static readonly Guid C;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Guid</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CIL">
-      <MemberSignature Language="C#" Value="public static readonly Guid CIL;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Guid</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Cobol">
-      <MemberSignature Language="C#" Value="public static readonly Guid Cobol;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Guid</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Cpp">
-      <MemberSignature Language="C#" Value="public static readonly Guid Cpp;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Guid</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CSharp">
-      <MemberSignature Language="C#" Value="public static readonly Guid CSharp;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Guid</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Java">
-      <MemberSignature Language="C#" Value="public static readonly Guid Java;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Guid</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="JScript">
-      <MemberSignature Language="C#" Value="public static readonly Guid JScript;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Guid</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MCpp">
-      <MemberSignature Language="C#" Value="public static readonly Guid MCpp;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Guid</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="None">
-      <MemberSignature Language="C#" Value="public static readonly Guid None;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Guid</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Pascal">
-      <MemberSignature Language="C#" Value="public static readonly Guid Pascal;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Guid</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SMC">
-      <MemberSignature Language="C#" Value="public static readonly Guid SMC;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Guid</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/DocumentLanguageVendor.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/DocumentLanguageVendor.xml
deleted file mode 100644
index 0caae66..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/DocumentLanguageVendor.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-<Type Name="DocumentLanguageVendor" FullName="Mono.Cecil.Cil.DocumentLanguageVendor">
-  <TypeSignature Language="C#" Value="public abstract class DocumentLanguageVendor" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="protected DocumentLanguageVendor ();" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Microsoft">
-      <MemberSignature Language="C#" Value="public static readonly Guid Microsoft;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Guid</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Other">
-      <MemberSignature Language="C#" Value="public static readonly Guid Other;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Guid</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/DocumentType.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/DocumentType.xml
deleted file mode 100644
index 1b77d7f..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/DocumentType.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-<Type Name="DocumentType" FullName="Mono.Cecil.Cil.DocumentType">
-  <TypeSignature Language="C#" Value="public abstract class DocumentType" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="protected DocumentType ();" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Other">
-      <MemberSignature Language="C#" Value="public static readonly Guid Other;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Guid</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Text">
-      <MemberSignature Language="C#" Value="public static readonly Guid Text;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Guid</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ExceptionHandler.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ExceptionHandler.xml
deleted file mode 100644
index 9d82625..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ExceptionHandler.xml
+++ /dev/null
@@ -1,174 +0,0 @@
-<Type Name="ExceptionHandler" FullName="Mono.Cecil.Cil.ExceptionHandler">
-  <TypeSignature Language="C#" Value="public sealed class ExceptionHandler : Mono.Cecil.Cil.ICodeVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Cil.ICodeVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ExceptionHandler (Mono.Cecil.Cil.ExceptionHandlerType type);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="type" Type="Mono.Cecil.Cil.ExceptionHandlerType" />
-      </Parameters>
-      <Docs>
-        <param name="type">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Cil.ICodeVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Cil.ICodeVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CatchType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference CatchType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="FilterEnd">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction FilterEnd { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="FilterStart">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction FilterStart { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HandlerEnd">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction HandlerEnd { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HandlerStart">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction HandlerStart { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="TryEnd">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction TryEnd { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="TryStart">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction TryStart { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Type">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.ExceptionHandlerType Type { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.ExceptionHandlerType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ExceptionHandlerCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ExceptionHandlerCollection.xml
deleted file mode 100644
index d96b2d4..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ExceptionHandlerCollection.xml
+++ /dev/null
@@ -1,200 +0,0 @@
-<Type Name="ExceptionHandlerCollection" FullName="Mono.Cecil.Cil.ExceptionHandlerCollection">
-  <TypeSignature Language="C#" Value="public sealed class ExceptionHandlerCollection : System.Collections.CollectionBase, Mono.Cecil.Cil.ICodeVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Cil.ICodeVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ExceptionHandlerCollection (Mono.Cecil.Cil.MethodBody container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.Cil.MethodBody" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Cil.ICodeVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Cil.ICodeVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Mono.Cecil.Cil.ExceptionHandler value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.Cil.ExceptionHandler" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.MethodBody Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.MethodBody</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.Cil.ExceptionHandler value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.Cil.ExceptionHandler" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.Cil.ExceptionHandler value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.Cil.ExceptionHandler" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Insert">
-      <MemberSignature Language="C#" Value="public void Insert (int index, Mono.Cecil.Cil.ExceptionHandler value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="value" Type="Mono.Cecil.Cil.ExceptionHandler" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.ExceptionHandler this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.ExceptionHandler</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OnValidate">
-      <MemberSignature Language="C#" Value="protected override void OnValidate (object o);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="o" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="o">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.Cil.ExceptionHandler value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.Cil.ExceptionHandler" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ExceptionHandlerType.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ExceptionHandlerType.xml
deleted file mode 100644
index b4b6d7d..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ExceptionHandlerType.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-<Type Name="ExceptionHandlerType" FullName="Mono.Cecil.Cil.ExceptionHandlerType">
-  <TypeSignature Language="C#" Value="public enum ExceptionHandlerType" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Catch">
-      <MemberSignature Language="C#" Value="Catch" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.ExceptionHandlerType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Fault">
-      <MemberSignature Language="C#" Value="Fault" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.ExceptionHandlerType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Filter">
-      <MemberSignature Language="C#" Value="Filter" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.ExceptionHandlerType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Finally">
-      <MemberSignature Language="C#" Value="Finally" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.ExceptionHandlerType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/FlowControl.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/FlowControl.xml
deleted file mode 100644
index 1ad15f0..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/FlowControl.xml
+++ /dev/null
@@ -1,133 +0,0 @@
-<Type Name="FlowControl" FullName="Mono.Cecil.Cil.FlowControl">
-  <TypeSignature Language="C#" Value="public enum FlowControl" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Branch">
-      <MemberSignature Language="C#" Value="Branch" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.FlowControl</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Break">
-      <MemberSignature Language="C#" Value="Break" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.FlowControl</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Call">
-      <MemberSignature Language="C#" Value="Call" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.FlowControl</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Cond_Branch">
-      <MemberSignature Language="C#" Value="Cond_Branch" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.FlowControl</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Meta">
-      <MemberSignature Language="C#" Value="Meta" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.FlowControl</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Next">
-      <MemberSignature Language="C#" Value="Next" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.FlowControl</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Phi">
-      <MemberSignature Language="C#" Value="Phi" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.FlowControl</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Return">
-      <MemberSignature Language="C#" Value="Return" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.FlowControl</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Throw">
-      <MemberSignature Language="C#" Value="Throw" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.FlowControl</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/GuidAttribute.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/GuidAttribute.xml
deleted file mode 100644
index 10e89ac..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/GuidAttribute.xml
+++ /dev/null
@@ -1,114 +0,0 @@
-<Type Name="GuidAttribute" FullName="Mono.Cecil.Cil.GuidAttribute">
-  <TypeSignature Language="C#" Value="public sealed class GuidAttribute : Attribute" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Attribute</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Attributes>
-    <Attribute>
-      <AttributeName>System.AttributeUsage(System.AttributeTargets.Field)</AttributeName>
-    </Attribute>
-  </Attributes>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public GuidAttribute (uint a, ushort b, ushort c, byte d, byte e, byte f, byte g, byte h, byte i, byte j, byte k);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="a" Type="System.UInt32" />
-        <Parameter Name="b" Type="System.UInt16" />
-        <Parameter Name="c" Type="System.UInt16" />
-        <Parameter Name="d" Type="System.Byte" />
-        <Parameter Name="e" Type="System.Byte" />
-        <Parameter Name="f" Type="System.Byte" />
-        <Parameter Name="g" Type="System.Byte" />
-        <Parameter Name="h" Type="System.Byte" />
-        <Parameter Name="i" Type="System.Byte" />
-        <Parameter Name="j" Type="System.Byte" />
-        <Parameter Name="k" Type="System.Byte" />
-      </Parameters>
-      <Docs>
-        <param name="a">To be added.</param>
-        <param name="b">To be added.</param>
-        <param name="c">To be added.</param>
-        <param name="d">To be added.</param>
-        <param name="e">To be added.</param>
-        <param name="f">To be added.</param>
-        <param name="g">To be added.</param>
-        <param name="h">To be added.</param>
-        <param name="i">To be added.</param>
-        <param name="j">To be added.</param>
-        <param name="k">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetGuidFromValue">
-      <MemberSignature Language="C#" Value="public static Guid GetGuidFromValue (int value, Type enumeration);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Guid</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="System.Int32" />
-        <Parameter Name="enumeration" Type="System.Type" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <param name="enumeration">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetValueFromGuid">
-      <MemberSignature Language="C#" Value="public static int GetValueFromGuid (Guid id, Type enumeration);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="id" Type="System.Guid" />
-        <Parameter Name="enumeration" Type="System.Type" />
-      </Parameters>
-      <Docs>
-        <param name="id">To be added.</param>
-        <param name="enumeration">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Guid">
-      <MemberSignature Language="C#" Value="public Guid Guid { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Guid</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ICodeVisitable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ICodeVisitable.xml
deleted file mode 100644
index 82d85bb..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ICodeVisitable.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<Type Name="ICodeVisitable" FullName="Mono.Cecil.Cil.ICodeVisitable">
-  <TypeSignature Language="C#" Value="public interface ICodeVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Cil.ICodeVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Cil.ICodeVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ICodeVisitor.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ICodeVisitor.xml
deleted file mode 100644
index ec3e519..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ICodeVisitor.xml
+++ /dev/null
@@ -1,194 +0,0 @@
-<Type Name="ICodeVisitor" FullName="Mono.Cecil.Cil.ICodeVisitor">
-  <TypeSignature Language="C#" Value="public interface ICodeVisitor" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="TerminateMethodBody">
-      <MemberSignature Language="C#" Value="public void TerminateMethodBody (Mono.Cecil.Cil.MethodBody body);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="body" Type="Mono.Cecil.Cil.MethodBody" />
-      </Parameters>
-      <Docs>
-        <param name="body">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitExceptionHandler">
-      <MemberSignature Language="C#" Value="public void VisitExceptionHandler (Mono.Cecil.Cil.ExceptionHandler eh);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="eh" Type="Mono.Cecil.Cil.ExceptionHandler" />
-      </Parameters>
-      <Docs>
-        <param name="eh">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitExceptionHandlerCollection">
-      <MemberSignature Language="C#" Value="public void VisitExceptionHandlerCollection (Mono.Cecil.Cil.ExceptionHandlerCollection seh);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="seh" Type="Mono.Cecil.Cil.ExceptionHandlerCollection" />
-      </Parameters>
-      <Docs>
-        <param name="seh">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitInstruction">
-      <MemberSignature Language="C#" Value="public void VisitInstruction (Mono.Cecil.Cil.Instruction instr);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="instr" Type="Mono.Cecil.Cil.Instruction" />
-      </Parameters>
-      <Docs>
-        <param name="instr">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitInstructionCollection">
-      <MemberSignature Language="C#" Value="public void VisitInstructionCollection (Mono.Cecil.Cil.InstructionCollection instructions);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="instructions" Type="Mono.Cecil.Cil.InstructionCollection" />
-      </Parameters>
-      <Docs>
-        <param name="instructions">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMethodBody">
-      <MemberSignature Language="C#" Value="public void VisitMethodBody (Mono.Cecil.Cil.MethodBody body);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="body" Type="Mono.Cecil.Cil.MethodBody" />
-      </Parameters>
-      <Docs>
-        <param name="body">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitScope">
-      <MemberSignature Language="C#" Value="public void VisitScope (Mono.Cecil.Cil.Scope scope);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="scope" Type="Mono.Cecil.Cil.Scope" />
-      </Parameters>
-      <Docs>
-        <param name="scope">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitScopeCollection">
-      <MemberSignature Language="C#" Value="public void VisitScopeCollection (Mono.Cecil.Cil.ScopeCollection scopes);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="scopes" Type="Mono.Cecil.Cil.ScopeCollection" />
-      </Parameters>
-      <Docs>
-        <param name="scopes">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitVariableDefinition">
-      <MemberSignature Language="C#" Value="public void VisitVariableDefinition (Mono.Cecil.Cil.VariableDefinition var);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="var" Type="Mono.Cecil.Cil.VariableDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="var">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitVariableDefinitionCollection">
-      <MemberSignature Language="C#" Value="public void VisitVariableDefinitionCollection (Mono.Cecil.Cil.VariableDefinitionCollection variables);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="variables" Type="Mono.Cecil.Cil.VariableDefinitionCollection" />
-      </Parameters>
-      <Docs>
-        <param name="variables">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/IScopeProvider.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/IScopeProvider.xml
deleted file mode 100644
index e2c7650..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/IScopeProvider.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<Type Name="IScopeProvider" FullName="Mono.Cecil.Cil.IScopeProvider">
-  <TypeSignature Language="C#" Value="public interface IScopeProvider" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Scopes">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.ScopeCollection Scopes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.ScopeCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ISymbolReader.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ISymbolReader.xml
deleted file mode 100644
index 1444b9a..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ISymbolReader.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<Type Name="ISymbolReader" FullName="Mono.Cecil.Cil.ISymbolReader">
-  <TypeSignature Language="C#" Value="public interface ISymbolReader : IDisposable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>System.IDisposable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Read">
-      <MemberSignature Language="C#" Value="public void Read (Mono.Cecil.Cil.MethodBody body, System.Collections.IDictionary instructions);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="body" Type="Mono.Cecil.Cil.MethodBody" />
-        <Parameter Name="instructions" Type="System.Collections.IDictionary" />
-      </Parameters>
-      <Docs>
-        <param name="body">To be added.</param>
-        <param name="instructions">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ISymbolStoreFactory.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ISymbolStoreFactory.xml
deleted file mode 100644
index 286eecb..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ISymbolStoreFactory.xml
+++ /dev/null
@@ -1,56 +0,0 @@
-<Type Name="ISymbolStoreFactory" FullName="Mono.Cecil.Cil.ISymbolStoreFactory">
-  <TypeSignature Language="C#" Value="public interface ISymbolStoreFactory" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="CreateReader">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.ISymbolReader CreateReader (Mono.Cecil.ModuleDefinition module, string assemblyFileName);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.ISymbolReader</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="module" Type="Mono.Cecil.ModuleDefinition" />
-        <Parameter Name="assemblyFileName" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="module">To be added.</param>
-        <param name="assemblyFileName">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CreateWriter">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.ISymbolWriter CreateWriter (Mono.Cecil.ModuleDefinition module, string assemblyFileName);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.ISymbolWriter</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="module" Type="Mono.Cecil.ModuleDefinition" />
-        <Parameter Name="assemblyFileName" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="module">To be added.</param>
-        <param name="assemblyFileName">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ISymbolWriter.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ISymbolWriter.xml
deleted file mode 100644
index 834ddca..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ISymbolWriter.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<Type Name="ISymbolWriter" FullName="Mono.Cecil.Cil.ISymbolWriter">
-  <TypeSignature Language="C#" Value="public interface ISymbolWriter : IDisposable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>System.IDisposable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Write">
-      <MemberSignature Language="C#" Value="public void Write (Mono.Cecil.Cil.MethodBody body);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="body" Type="Mono.Cecil.Cil.MethodBody" />
-      </Parameters>
-      <Docs>
-        <param name="body">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/IVariableDefinitionProvider.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/IVariableDefinitionProvider.xml
deleted file mode 100644
index 24fe7db..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/IVariableDefinitionProvider.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<Type Name="IVariableDefinitionProvider" FullName="Mono.Cecil.Cil.IVariableDefinitionProvider">
-  <TypeSignature Language="C#" Value="public interface IVariableDefinitionProvider" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Variables">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.VariableDefinitionCollection Variables { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.VariableDefinitionCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/Instruction.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/Instruction.xml
deleted file mode 100644
index f56cc9f..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/Instruction.xml
+++ /dev/null
@@ -1,145 +0,0 @@
-<Type Name="Instruction" FullName="Mono.Cecil.Cil.Instruction">
-  <TypeSignature Language="C#" Value="public sealed class Instruction : Mono.Cecil.Cil.ICodeVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Cil.ICodeVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Cil.ICodeVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Cil.ICodeVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetSize">
-      <MemberSignature Language="C#" Value="public int GetSize ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Next">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Next { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Offset">
-      <MemberSignature Language="C#" Value="public int Offset { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OpCode">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.OpCode OpCode { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Operand">
-      <MemberSignature Language="C#" Value="public object Operand { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Object</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Previous">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Previous { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SequencePoint">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.SequencePoint SequencePoint { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.SequencePoint</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/InstructionCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/InstructionCollection.xml
deleted file mode 100644
index 1096dd8..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/InstructionCollection.xml
+++ /dev/null
@@ -1,158 +0,0 @@
-<Type Name="InstructionCollection" FullName="Mono.Cecil.Cil.InstructionCollection">
-  <TypeSignature Language="C#" Value="public sealed class InstructionCollection : System.Collections.CollectionBase, Mono.Cecil.Cil.ICodeVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Cil.ICodeVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public InstructionCollection (Mono.Cecil.Cil.MethodBody container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.Cil.MethodBody" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Cil.ICodeVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Cil.ICodeVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.MethodBody Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.MethodBody</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.Cil.Instruction value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.Cil.Instruction" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.Cil.Instruction value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.Cil.Instruction" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OnValidate">
-      <MemberSignature Language="C#" Value="protected override void OnValidate (object o);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="o" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="o">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Outside">
-      <MemberSignature Language="C#" Value="public readonly Mono.Cecil.Cil.Instruction Outside;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/MethodBody.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/MethodBody.xml
deleted file mode 100644
index c86f954..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/MethodBody.xml
+++ /dev/null
@@ -1,285 +0,0 @@
-<Type Name="MethodBody" FullName="Mono.Cecil.Cil.MethodBody">
-  <TypeSignature Language="C#" Value="public sealed class MethodBody : Mono.Cecil.Cil.ICodeVisitable, Mono.Cecil.Cil.IScopeProvider, Mono.Cecil.Cil.IVariableDefinitionProvider" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Cil.ICodeVisitable</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Cil.IScopeProvider</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Cil.IVariableDefinitionProvider</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public MethodBody (Mono.Cecil.MethodDefinition meth);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="meth" Type="Mono.Cecil.MethodDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="meth">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Cil.ICodeVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Cil.ICodeVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CilWorker">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.CilWorker CilWorker { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.CilWorker</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CodeSize">
-      <MemberSignature Language="C#" Value="public int CodeSize { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ExceptionHandlers">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.ExceptionHandlerCollection ExceptionHandlers { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.ExceptionHandlerCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasExceptionHandlers">
-      <MemberSignature Language="C#" Value="public bool HasExceptionHandlers { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasScopes">
-      <MemberSignature Language="C#" Value="public bool HasScopes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasVariables">
-      <MemberSignature Language="C#" Value="public bool HasVariables { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="InitLocals">
-      <MemberSignature Language="C#" Value="public bool InitLocals { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Instructions">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.InstructionCollection Instructions { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.InstructionCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="LocalVarToken">
-      <MemberSignature Language="C#" Value="public int LocalVarToken { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MaxStack">
-      <MemberSignature Language="C#" Value="public int MaxStack { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Method">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodDefinition Method { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Optimize">
-      <MemberSignature Language="C#" Value="public void Optimize ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Scopes">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.ScopeCollection Scopes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.ScopeCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Simplify">
-      <MemberSignature Language="C#" Value="public void Simplify ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Variables">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.VariableDefinitionCollection Variables { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.VariableDefinitionCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/OpCode.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/OpCode.xml
deleted file mode 100644
index ac78b99..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/OpCode.xml
+++ /dev/null
@@ -1,294 +0,0 @@
-<Type Name="OpCode" FullName="Mono.Cecil.Cil.OpCode">
-  <TypeSignature Language="C#" Value="public struct OpCode" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.ValueType</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Code">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Code Code { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Code</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Equals">
-      <MemberSignature Language="C#" Value="public bool Equals (Mono.Cecil.Cil.OpCode opcode);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="opcode" Type="Mono.Cecil.Cil.OpCode" />
-      </Parameters>
-      <Docs>
-        <param name="opcode">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Equals">
-      <MemberSignature Language="C#" Value="public override bool Equals (object obj);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="obj" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="obj">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="FlowControl">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.FlowControl FlowControl { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.FlowControl</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetHashCode">
-      <MemberSignature Language="C#" Value="public override int GetHashCode ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public string Name { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="op_Equality">
-      <MemberSignature Language="C#" Value="public static bool op_Equality (Mono.Cecil.Cil.OpCode one, Mono.Cecil.Cil.OpCode other);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="one" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="other" Type="Mono.Cecil.Cil.OpCode" />
-      </Parameters>
-      <Docs>
-        <param name="one">To be added.</param>
-        <param name="other">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="op_Inequality">
-      <MemberSignature Language="C#" Value="public static bool op_Inequality (Mono.Cecil.Cil.OpCode one, Mono.Cecil.Cil.OpCode other);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="one" Type="Mono.Cecil.Cil.OpCode" />
-        <Parameter Name="other" Type="Mono.Cecil.Cil.OpCode" />
-      </Parameters>
-      <Docs>
-        <param name="one">To be added.</param>
-        <param name="other">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Op1">
-      <MemberSignature Language="C#" Value="public byte Op1 { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Op2">
-      <MemberSignature Language="C#" Value="public byte Op2 { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OpCodeType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.OpCodeType OpCodeType { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCodeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OperandType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.OperandType OperandType { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OperandType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Size">
-      <MemberSignature Language="C#" Value="public int Size { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="StackBehaviourPop">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.StackBehaviour StackBehaviourPop { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="StackBehaviourPush">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.StackBehaviour StackBehaviourPush { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ToString">
-      <MemberSignature Language="C#" Value="public override string ToString ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Value">
-      <MemberSignature Language="C#" Value="public short Value { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/OpCodeType.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/OpCodeType.xml
deleted file mode 100644
index 4be9f71..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/OpCodeType.xml
+++ /dev/null
@@ -1,94 +0,0 @@
-<Type Name="OpCodeType" FullName="Mono.Cecil.Cil.OpCodeType">
-  <TypeSignature Language="C#" Value="public enum OpCodeType" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Annotation">
-      <MemberSignature Language="C#" Value="Annotation" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCodeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Macro">
-      <MemberSignature Language="C#" Value="Macro" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCodeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Nternal">
-      <MemberSignature Language="C#" Value="Nternal" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCodeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Objmodel">
-      <MemberSignature Language="C#" Value="Objmodel" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCodeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Prefix">
-      <MemberSignature Language="C#" Value="Prefix" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCodeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Primitive">
-      <MemberSignature Language="C#" Value="Primitive" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCodeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/OpCodes.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/OpCodes.xml
deleted file mode 100644
index 917429b..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/OpCodes.xml
+++ /dev/null
@@ -1,3102 +0,0 @@
-<Type Name="OpCodes" FullName="Mono.Cecil.Cil.OpCodes">
-  <TypeSignature Language="C#" Value="public sealed class OpCodes" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Add;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add_Ovf">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Add_Ovf;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add_Ovf_Un">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Add_Ovf_Un;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="And">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode And;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Arglist">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Arglist;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Beq">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Beq;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Beq_S">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Beq_S;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Bge">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Bge;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Bge_S">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Bge_S;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Bge_Un">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Bge_Un;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Bge_Un_S">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Bge_Un_S;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Bgt">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Bgt;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Bgt_S">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Bgt_S;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Bgt_Un">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Bgt_Un;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Bgt_Un_S">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Bgt_Un_S;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ble">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ble;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ble_S">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ble_S;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ble_Un">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ble_Un;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ble_Un_S">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ble_Un_S;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Blt">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Blt;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Blt_S">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Blt_S;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Blt_Un">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Blt_Un;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Blt_Un_S">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Blt_Un_S;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Bne_Un">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Bne_Un;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Bne_Un_S">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Bne_Un_S;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Box">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Box;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Br">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Br;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Br_S">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Br_S;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Break">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Break;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Brfalse">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Brfalse;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Brfalse_S">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Brfalse_S;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Brtrue">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Brtrue;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Brtrue_S">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Brtrue_S;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Call">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Call;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Calli">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Calli;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Callvirt">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Callvirt;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Castclass">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Castclass;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ceq">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ceq;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Cgt">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Cgt;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Cgt_Un">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Cgt_Un;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ckfinite">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ckfinite;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Clt">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Clt;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Clt_Un">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Clt_Un;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Constrained">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Constrained;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_I">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_I;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_I1">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_I1;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_I2">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_I2;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_I4">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_I4;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_I8">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_I8;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_I">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_Ovf_I;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_I_Un">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_Ovf_I_Un;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_I1">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_Ovf_I1;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_I1_Un">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_Ovf_I1_Un;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_I2">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_Ovf_I2;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_I2_Un">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_Ovf_I2_Un;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_I4">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_Ovf_I4;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_I4_Un">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_Ovf_I4_Un;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_I8">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_Ovf_I8;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_I8_Un">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_Ovf_I8_Un;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_U">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_Ovf_U;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_U_Un">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_Ovf_U_Un;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_U1">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_Ovf_U1;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_U1_Un">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_Ovf_U1_Un;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_U2">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_Ovf_U2;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_U2_Un">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_Ovf_U2_Un;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_U4">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_Ovf_U4;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_U4_Un">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_Ovf_U4_Un;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_U8">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_Ovf_U8;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_Ovf_U8_Un">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_Ovf_U8_Un;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_R_Un">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_R_Un;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_R4">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_R4;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_R8">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_R8;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_U">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_U;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_U1">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_U1;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_U2">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_U2;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_U4">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_U4;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Conv_U8">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Conv_U8;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Cpblk">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Cpblk;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Cpobj">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Cpobj;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Div">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Div;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Div_Un">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Div_Un;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Dup">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Dup;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Endfilter">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Endfilter;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Endfinally">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Endfinally;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetOpCode">
-      <MemberSignature Language="C#" Value="public static Mono.Cecil.Cil.OpCode GetOpCode (Mono.Cecil.Cil.Code code);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="code" Type="Mono.Cecil.Cil.Code" />
-      </Parameters>
-      <Docs>
-        <param name="code">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Initblk">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Initblk;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Initobj">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Initobj;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Isinst">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Isinst;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Jmp">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Jmp;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldarg">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldarg;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldarg_0">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldarg_0;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldarg_1">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldarg_1;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldarg_2">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldarg_2;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldarg_3">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldarg_3;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldarg_S">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldarg_S;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldarga">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldarga;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldarga_S">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldarga_S;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_I4">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldc_I4;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_I4_0">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldc_I4_0;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_I4_1">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldc_I4_1;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_I4_2">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldc_I4_2;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_I4_3">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldc_I4_3;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_I4_4">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldc_I4_4;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_I4_5">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldc_I4_5;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_I4_6">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldc_I4_6;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_I4_7">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldc_I4_7;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_I4_8">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldc_I4_8;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_I4_M1">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldc_I4_M1;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_I4_S">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldc_I4_S;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_I8">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldc_I8;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_R4">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldc_R4;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldc_R8">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldc_R8;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldelem_Any">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldelem_Any;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldelem_I">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldelem_I;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldelem_I1">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldelem_I1;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldelem_I2">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldelem_I2;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldelem_I4">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldelem_I4;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldelem_I8">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldelem_I8;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldelem_R4">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldelem_R4;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldelem_R8">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldelem_R8;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldelem_Ref">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldelem_Ref;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldelem_U1">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldelem_U1;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldelem_U2">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldelem_U2;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldelem_U4">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldelem_U4;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldelema">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldelema;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldfld">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldfld;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldflda">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldflda;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldftn">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldftn;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldind_I">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldind_I;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldind_I1">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldind_I1;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldind_I2">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldind_I2;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldind_I4">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldind_I4;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldind_I8">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldind_I8;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldind_R4">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldind_R4;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldind_R8">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldind_R8;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldind_Ref">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldind_Ref;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldind_U1">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldind_U1;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldind_U2">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldind_U2;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldind_U4">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldind_U4;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldlen">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldlen;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldloc">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldloc;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldloc_0">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldloc_0;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldloc_1">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldloc_1;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldloc_2">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldloc_2;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldloc_3">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldloc_3;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldloc_S">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldloc_S;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldloca">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldloca;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldloca_S">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldloca_S;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldnull">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldnull;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldobj">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldobj;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldsfld">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldsfld;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldsflda">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldsflda;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldstr">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldstr;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldtoken">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldtoken;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ldvirtftn">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ldvirtftn;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Leave">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Leave;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Leave_S">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Leave_S;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Localloc">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Localloc;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Mkrefany">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Mkrefany;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Mul">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Mul;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Mul_Ovf">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Mul_Ovf;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Mul_Ovf_Un">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Mul_Ovf_Un;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Neg">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Neg;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Newarr">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Newarr;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Newobj">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Newobj;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="No">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode No;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Nop">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Nop;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Not">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Not;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Or">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Or;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Pop">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Pop;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Readonly">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Readonly;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Refanytype">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Refanytype;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Refanyval">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Refanyval;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rem">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Rem;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rem_Un">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Rem_Un;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ret">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Ret;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rethrow">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Rethrow;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Shl">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Shl;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Shr">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Shr;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Shr_Un">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Shr_Un;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Sizeof">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Sizeof;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Starg">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Starg;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Starg_S">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Starg_S;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stelem_Any">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Stelem_Any;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stelem_I">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Stelem_I;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stelem_I1">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Stelem_I1;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stelem_I2">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Stelem_I2;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stelem_I4">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Stelem_I4;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stelem_I8">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Stelem_I8;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stelem_R4">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Stelem_R4;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stelem_R8">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Stelem_R8;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stelem_Ref">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Stelem_Ref;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stfld">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Stfld;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stind_I">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Stind_I;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stind_I1">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Stind_I1;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stind_I2">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Stind_I2;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stind_I4">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Stind_I4;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stind_I8">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Stind_I8;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stind_R4">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Stind_R4;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stind_R8">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Stind_R8;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stind_Ref">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Stind_Ref;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stloc">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Stloc;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stloc_0">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Stloc_0;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stloc_1">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Stloc_1;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stloc_2">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Stloc_2;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stloc_3">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Stloc_3;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stloc_S">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Stloc_S;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stobj">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Stobj;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stsfld">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Stsfld;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Sub">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Sub;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Sub_Ovf">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Sub_Ovf;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Sub_Ovf_Un">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Sub_Ovf_Un;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Switch">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Switch;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Tail">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Tail;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Throw">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Throw;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Unaligned">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Unaligned;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Unbox">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Unbox;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Unbox_Any">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Unbox_Any;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Volatile">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Volatile;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Xor">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Cil.OpCode Xor;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OpCode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/OperandType.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/OperandType.xml
deleted file mode 100644
index a7a7b22..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/OperandType.xml
+++ /dev/null
@@ -1,276 +0,0 @@
-<Type Name="OperandType" FullName="Mono.Cecil.Cil.OperandType">
-  <TypeSignature Language="C#" Value="public enum OperandType" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="InlineBrTarget">
-      <MemberSignature Language="C#" Value="InlineBrTarget" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OperandType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="InlineField">
-      <MemberSignature Language="C#" Value="InlineField" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OperandType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="InlineI">
-      <MemberSignature Language="C#" Value="InlineI" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OperandType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="InlineI8">
-      <MemberSignature Language="C#" Value="InlineI8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OperandType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="InlineMethod">
-      <MemberSignature Language="C#" Value="InlineMethod" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OperandType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="InlineNone">
-      <MemberSignature Language="C#" Value="InlineNone" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OperandType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="InlineParam">
-      <MemberSignature Language="C#" Value="InlineParam" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OperandType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="InlinePhi">
-      <MemberSignature Language="C#" Value="InlinePhi" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OperandType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="InlineR">
-      <MemberSignature Language="C#" Value="InlineR" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OperandType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="InlineSig">
-      <MemberSignature Language="C#" Value="InlineSig" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OperandType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="InlineString">
-      <MemberSignature Language="C#" Value="InlineString" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OperandType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="InlineSwitch">
-      <MemberSignature Language="C#" Value="InlineSwitch" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OperandType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="InlineTok">
-      <MemberSignature Language="C#" Value="InlineTok" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OperandType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="InlineType">
-      <MemberSignature Language="C#" Value="InlineType" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OperandType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="InlineVar">
-      <MemberSignature Language="C#" Value="InlineVar" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OperandType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ShortInlineBrTarget">
-      <MemberSignature Language="C#" Value="ShortInlineBrTarget" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OperandType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ShortInlineI">
-      <MemberSignature Language="C#" Value="ShortInlineI" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OperandType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ShortInlineParam">
-      <MemberSignature Language="C#" Value="ShortInlineParam" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OperandType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ShortInlineR">
-      <MemberSignature Language="C#" Value="ShortInlineR" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OperandType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ShortInlineVar">
-      <MemberSignature Language="C#" Value="ShortInlineVar" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.OperandType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/Scope.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/Scope.xml
deleted file mode 100644
index 0c97aa9..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/Scope.xml
+++ /dev/null
@@ -1,132 +0,0 @@
-<Type Name="Scope" FullName="Mono.Cecil.Cil.Scope">
-  <TypeSignature Language="C#" Value="public class Scope : Mono.Cecil.Cil.ICodeVisitable, Mono.Cecil.Cil.IScopeProvider, Mono.Cecil.Cil.IVariableDefinitionProvider" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Cil.ICodeVisitable</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Cil.IScopeProvider</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Cil.IVariableDefinitionProvider</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public Scope ();" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Cil.ICodeVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Cil.ICodeVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="End">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction End { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Parent">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Scope Parent { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Scope</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Scopes">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.ScopeCollection Scopes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.ScopeCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Start">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Instruction Start { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Instruction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Variables">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.VariableDefinitionCollection Variables { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.VariableDefinitionCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ScopeCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ScopeCollection.xml
deleted file mode 100644
index 14df934..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/ScopeCollection.xml
+++ /dev/null
@@ -1,200 +0,0 @@
-<Type Name="ScopeCollection" FullName="Mono.Cecil.Cil.ScopeCollection">
-  <TypeSignature Language="C#" Value="public sealed class ScopeCollection : System.Collections.CollectionBase, Mono.Cecil.Cil.ICodeVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Cil.ICodeVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ScopeCollection (Mono.Cecil.Cil.IScopeProvider container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.Cil.IScopeProvider" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Cil.ICodeVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Cil.ICodeVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Mono.Cecil.Cil.Scope value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.Cil.Scope" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.IScopeProvider Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.IScopeProvider</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.Cil.Scope value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.Cil.Scope" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.Cil.Scope value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.Cil.Scope" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Insert">
-      <MemberSignature Language="C#" Value="public void Insert (int index, Mono.Cecil.Cil.Scope value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="value" Type="Mono.Cecil.Cil.Scope" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Scope this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Scope</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OnValidate">
-      <MemberSignature Language="C#" Value="protected override void OnValidate (object o);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="o" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="o">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.Cil.Scope value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.Cil.Scope" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/SequencePoint.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/SequencePoint.xml
deleted file mode 100644
index 8bf7ad7..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/SequencePoint.xml
+++ /dev/null
@@ -1,130 +0,0 @@
-<Type Name="SequencePoint" FullName="Mono.Cecil.Cil.SequencePoint">
-  <TypeSignature Language="C#" Value="public class SequencePoint" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public SequencePoint (Mono.Cecil.Cil.Document document);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="document" Type="Mono.Cecil.Cil.Document" />
-      </Parameters>
-      <Docs>
-        <param name="document">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public SequencePoint (Mono.Cecil.Cil.Document doc, int startLine, int startCol, int endLine, int endCol);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="doc" Type="Mono.Cecil.Cil.Document" />
-        <Parameter Name="startLine" Type="System.Int32" />
-        <Parameter Name="startCol" Type="System.Int32" />
-        <Parameter Name="endLine" Type="System.Int32" />
-        <Parameter Name="endCol" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="doc">To be added.</param>
-        <param name="startLine">To be added.</param>
-        <param name="startCol">To be added.</param>
-        <param name="endLine">To be added.</param>
-        <param name="endCol">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Document">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.Document Document { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.Document</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="EndColumn">
-      <MemberSignature Language="C#" Value="public int EndColumn { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="EndLine">
-      <MemberSignature Language="C#" Value="public int EndLine { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="StartColumn">
-      <MemberSignature Language="C#" Value="public int StartColumn { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="StartLine">
-      <MemberSignature Language="C#" Value="public int StartLine { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/StackBehaviour.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/StackBehaviour.xml
deleted file mode 100644
index 2e97a73..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/StackBehaviour.xml
+++ /dev/null
@@ -1,393 +0,0 @@
-<Type Name="StackBehaviour" FullName="Mono.Cecil.Cil.StackBehaviour">
-  <TypeSignature Language="C#" Value="public enum StackBehaviour" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Pop0">
-      <MemberSignature Language="C#" Value="Pop0" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Pop1">
-      <MemberSignature Language="C#" Value="Pop1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Pop1_pop1">
-      <MemberSignature Language="C#" Value="Pop1_pop1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="PopAll">
-      <MemberSignature Language="C#" Value="PopAll" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Popi">
-      <MemberSignature Language="C#" Value="Popi" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Popi_pop1">
-      <MemberSignature Language="C#" Value="Popi_pop1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Popi_popi">
-      <MemberSignature Language="C#" Value="Popi_popi" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Popi_popi_popi">
-      <MemberSignature Language="C#" Value="Popi_popi_popi" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Popi_popi8">
-      <MemberSignature Language="C#" Value="Popi_popi8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Popi_popr4">
-      <MemberSignature Language="C#" Value="Popi_popr4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Popi_popr8">
-      <MemberSignature Language="C#" Value="Popi_popr8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Popref">
-      <MemberSignature Language="C#" Value="Popref" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Popref_pop1">
-      <MemberSignature Language="C#" Value="Popref_pop1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Popref_popi">
-      <MemberSignature Language="C#" Value="Popref_popi" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Popref_popi_popi">
-      <MemberSignature Language="C#" Value="Popref_popi_popi" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Popref_popi_popi8">
-      <MemberSignature Language="C#" Value="Popref_popi_popi8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Popref_popi_popr4">
-      <MemberSignature Language="C#" Value="Popref_popi_popr4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Popref_popi_popr8">
-      <MemberSignature Language="C#" Value="Popref_popi_popr8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Popref_popi_popref">
-      <MemberSignature Language="C#" Value="Popref_popi_popref" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Push0">
-      <MemberSignature Language="C#" Value="Push0" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Push1">
-      <MemberSignature Language="C#" Value="Push1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Push1_push1">
-      <MemberSignature Language="C#" Value="Push1_push1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Pushi">
-      <MemberSignature Language="C#" Value="Pushi" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Pushi8">
-      <MemberSignature Language="C#" Value="Pushi8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Pushr4">
-      <MemberSignature Language="C#" Value="Pushr4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Pushr8">
-      <MemberSignature Language="C#" Value="Pushr8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Pushref">
-      <MemberSignature Language="C#" Value="Pushref" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Varpop">
-      <MemberSignature Language="C#" Value="Varpop" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Varpush">
-      <MemberSignature Language="C#" Value="Varpush" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.StackBehaviour</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/VariableDefinition.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/VariableDefinition.xml
deleted file mode 100644
index 260732f..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/VariableDefinition.xml
+++ /dev/null
@@ -1,102 +0,0 @@
-<Type Name="VariableDefinition" FullName="Mono.Cecil.Cil.VariableDefinition">
-  <TypeSignature Language="C#" Value="public sealed class VariableDefinition : Mono.Cecil.Cil.VariableReference" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.Cil.VariableReference</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public VariableDefinition (Mono.Cecil.TypeReference variableType);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="variableType" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="variableType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public VariableDefinition (string name, int index, Mono.Cecil.MethodDefinition method, Mono.Cecil.TypeReference variableType);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="method" Type="Mono.Cecil.MethodDefinition" />
-        <Parameter Name="variableType" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="index">To be added.</param>
-        <param name="method">To be added.</param>
-        <param name="variableType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public override void Accept (Mono.Cecil.Cil.ICodeVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Cil.ICodeVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Method">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodDefinition Method { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resolve">
-      <MemberSignature Language="C#" Value="public override Mono.Cecil.Cil.VariableDefinition Resolve ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.VariableDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/VariableDefinitionCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/VariableDefinitionCollection.xml
deleted file mode 100644
index 718a3da..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/VariableDefinitionCollection.xml
+++ /dev/null
@@ -1,200 +0,0 @@
-<Type Name="VariableDefinitionCollection" FullName="Mono.Cecil.Cil.VariableDefinitionCollection">
-  <TypeSignature Language="C#" Value="public sealed class VariableDefinitionCollection : System.Collections.CollectionBase, Mono.Cecil.Cil.ICodeVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Cil.ICodeVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public VariableDefinitionCollection (Mono.Cecil.Cil.IVariableDefinitionProvider container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.Cil.IVariableDefinitionProvider" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Cil.ICodeVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Cil.ICodeVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Mono.Cecil.Cil.VariableDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.Cil.VariableDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.IVariableDefinitionProvider Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.IVariableDefinitionProvider</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.Cil.VariableDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.Cil.VariableDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.Cil.VariableDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.Cil.VariableDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Insert">
-      <MemberSignature Language="C#" Value="public void Insert (int index, Mono.Cecil.Cil.VariableDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="value" Type="Mono.Cecil.Cil.VariableDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.VariableDefinition this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.VariableDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OnValidate">
-      <MemberSignature Language="C#" Value="protected override void OnValidate (object o);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="o" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="o">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.Cil.VariableDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.Cil.VariableDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/VariableReference.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/VariableReference.xml
deleted file mode 100644
index 7b972cb..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Cil/VariableReference.xml
+++ /dev/null
@@ -1,150 +0,0 @@
-<Type Name="VariableReference" FullName="Mono.Cecil.Cil.VariableReference">
-  <TypeSignature Language="C#" Value="public abstract class VariableReference : Mono.Cecil.Cil.ICodeVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Cil.ICodeVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public VariableReference (Mono.Cecil.TypeReference variableType);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="variableType" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="variableType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public VariableReference (string name, int index, Mono.Cecil.TypeReference variableType);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="variableType" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="index">To be added.</param>
-        <param name="variableType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public abstract void Accept (Mono.Cecil.Cil.ICodeVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Cil.ICodeVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Index">
-      <MemberSignature Language="C#" Value="public int Index { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public string Name { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resolve">
-      <MemberSignature Language="C#" Value="public abstract Mono.Cecil.Cil.VariableDefinition Resolve ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.VariableDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ToString">
-      <MemberSignature Language="C#" Value="public override string ToString ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VariableType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference VariableType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyOSRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyOSRow.xml
deleted file mode 100644
index 4a7d0db..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyOSRow.xml
+++ /dev/null
@@ -1,81 +0,0 @@
-<Type Name="AssemblyOSRow" FullName="Mono.Cecil.Metadata.AssemblyOSRow">
-  <TypeSignature Language="C#" Value="public sealed class AssemblyOSRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OSMajorVersion">
-      <MemberSignature Language="C#" Value="public uint OSMajorVersion;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OSMinorVersion">
-      <MemberSignature Language="C#" Value="public uint OSMinorVersion;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OSPlatformID">
-      <MemberSignature Language="C#" Value="public uint OSPlatformID;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyOSTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyOSTable.xml
deleted file mode 100644
index 0b68272..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyOSTable.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="AssemblyOSTable" FullName="Mono.Cecil.Metadata.AssemblyOSTable">
-  <TypeSignature Language="C#" Value="public sealed class AssemblyOSTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.AssemblyOSRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.AssemblyOSRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 34;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>34</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyProcessorRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyProcessorRow.xml
deleted file mode 100644
index 4c37b9a..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyProcessorRow.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<Type Name="AssemblyProcessorRow" FullName="Mono.Cecil.Metadata.AssemblyProcessorRow">
-  <TypeSignature Language="C#" Value="public sealed class AssemblyProcessorRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Processor">
-      <MemberSignature Language="C#" Value="public uint Processor;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyProcessorTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyProcessorTable.xml
deleted file mode 100644
index ee0377a..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyProcessorTable.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="AssemblyProcessorTable" FullName="Mono.Cecil.Metadata.AssemblyProcessorTable">
-  <TypeSignature Language="C#" Value="public sealed class AssemblyProcessorTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.AssemblyProcessorRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.AssemblyProcessorRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 33;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>33</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyRefOSRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyRefOSRow.xml
deleted file mode 100644
index 077d2bf..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyRefOSRow.xml
+++ /dev/null
@@ -1,95 +0,0 @@
-<Type Name="AssemblyRefOSRow" FullName="Mono.Cecil.Metadata.AssemblyRefOSRow">
-  <TypeSignature Language="C#" Value="public sealed class AssemblyRefOSRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="AssemblyRef">
-      <MemberSignature Language="C#" Value="public uint AssemblyRef;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OSMajorVersion">
-      <MemberSignature Language="C#" Value="public uint OSMajorVersion;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OSMinorVersion">
-      <MemberSignature Language="C#" Value="public uint OSMinorVersion;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OSPlatformID">
-      <MemberSignature Language="C#" Value="public uint OSPlatformID;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyRefOSTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyRefOSTable.xml
deleted file mode 100644
index 208c043..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyRefOSTable.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="AssemblyRefOSTable" FullName="Mono.Cecil.Metadata.AssemblyRefOSTable">
-  <TypeSignature Language="C#" Value="public sealed class AssemblyRefOSTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.AssemblyRefOSRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.AssemblyRefOSRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 37;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>37</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyRefProcessorRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyRefProcessorRow.xml
deleted file mode 100644
index 829222e..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyRefProcessorRow.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-<Type Name="AssemblyRefProcessorRow" FullName="Mono.Cecil.Metadata.AssemblyRefProcessorRow">
-  <TypeSignature Language="C#" Value="public sealed class AssemblyRefProcessorRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="AssemblyRef">
-      <MemberSignature Language="C#" Value="public uint AssemblyRef;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Processor">
-      <MemberSignature Language="C#" Value="public uint Processor;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyRefProcessorTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyRefProcessorTable.xml
deleted file mode 100644
index efad89b..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyRefProcessorTable.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="AssemblyRefProcessorTable" FullName="Mono.Cecil.Metadata.AssemblyRefProcessorTable">
-  <TypeSignature Language="C#" Value="public sealed class AssemblyRefProcessorTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.AssemblyRefProcessorRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.AssemblyRefProcessorRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 36;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>36</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyRefRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyRefRow.xml
deleted file mode 100644
index 0d94466..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyRefRow.xml
+++ /dev/null
@@ -1,165 +0,0 @@
-<Type Name="AssemblyRefRow" FullName="Mono.Cecil.Metadata.AssemblyRefRow">
-  <TypeSignature Language="C#" Value="public sealed class AssemblyRefRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="BuildNumber">
-      <MemberSignature Language="C#" Value="public ushort BuildNumber;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Culture">
-      <MemberSignature Language="C#" Value="public uint Culture;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Flags">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.AssemblyFlags Flags;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyFlags</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HashValue">
-      <MemberSignature Language="C#" Value="public uint HashValue;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MajorVersion">
-      <MemberSignature Language="C#" Value="public ushort MajorVersion;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MinorVersion">
-      <MemberSignature Language="C#" Value="public ushort MinorVersion;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public uint Name;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PublicKeyOrToken">
-      <MemberSignature Language="C#" Value="public uint PublicKeyOrToken;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RevisionNumber">
-      <MemberSignature Language="C#" Value="public ushort RevisionNumber;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyRefTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyRefTable.xml
deleted file mode 100644
index 8e020ea..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyRefTable.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="AssemblyRefTable" FullName="Mono.Cecil.Metadata.AssemblyRefTable">
-  <TypeSignature Language="C#" Value="public sealed class AssemblyRefTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.AssemblyRefRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.AssemblyRefRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 35;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>35</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyRow.xml
deleted file mode 100644
index 7c8903d..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyRow.xml
+++ /dev/null
@@ -1,165 +0,0 @@
-<Type Name="AssemblyRow" FullName="Mono.Cecil.Metadata.AssemblyRow">
-  <TypeSignature Language="C#" Value="public sealed class AssemblyRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="BuildNumber">
-      <MemberSignature Language="C#" Value="public ushort BuildNumber;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Culture">
-      <MemberSignature Language="C#" Value="public uint Culture;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Flags">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.AssemblyFlags Flags;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyFlags</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HashAlgId">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.AssemblyHashAlgorithm HashAlgId;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyHashAlgorithm</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MajorVersion">
-      <MemberSignature Language="C#" Value="public ushort MajorVersion;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MinorVersion">
-      <MemberSignature Language="C#" Value="public ushort MinorVersion;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public uint Name;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PublicKey">
-      <MemberSignature Language="C#" Value="public uint PublicKey;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RevisionNumber">
-      <MemberSignature Language="C#" Value="public ushort RevisionNumber;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyTable.xml
deleted file mode 100644
index c016439..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/AssemblyTable.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="AssemblyTable" FullName="Mono.Cecil.Metadata.AssemblyTable">
-  <TypeSignature Language="C#" Value="public sealed class AssemblyTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.AssemblyRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.AssemblyRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 32;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>32</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/BaseMetadataRowVisitor.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/BaseMetadataRowVisitor.xml
deleted file mode 100644
index 4202fa5..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/BaseMetadataRowVisitor.xml
+++ /dev/null
@@ -1,843 +0,0 @@
-<Type Name="BaseMetadataRowVisitor" FullName="Mono.Cecil.Metadata.BaseMetadataRowVisitor">
-  <TypeSignature Language="C#" Value="public abstract class BaseMetadataRowVisitor : Mono.Cecil.Metadata.IMetadataRowVisitor" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRowVisitor</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="protected BaseMetadataRowVisitor ();" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="TerminateRowCollection">
-      <MemberSignature Language="C#" Value="public virtual void TerminateRowCollection (Mono.Cecil.Metadata.RowCollection coll);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="coll" Type="Mono.Cecil.Metadata.RowCollection" />
-      </Parameters>
-      <Docs>
-        <param name="coll">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyOSRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitAssemblyOSRow (Mono.Cecil.Metadata.AssemblyOSRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.AssemblyOSRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyProcessorRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitAssemblyProcessorRow (Mono.Cecil.Metadata.AssemblyProcessorRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.AssemblyProcessorRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyRefOSRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitAssemblyRefOSRow (Mono.Cecil.Metadata.AssemblyRefOSRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.AssemblyRefOSRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyRefProcessorRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitAssemblyRefProcessorRow (Mono.Cecil.Metadata.AssemblyRefProcessorRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.AssemblyRefProcessorRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyRefRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitAssemblyRefRow (Mono.Cecil.Metadata.AssemblyRefRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.AssemblyRefRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitAssemblyRow (Mono.Cecil.Metadata.AssemblyRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.AssemblyRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitClassLayoutRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitClassLayoutRow (Mono.Cecil.Metadata.ClassLayoutRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.ClassLayoutRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitConstantRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitConstantRow (Mono.Cecil.Metadata.ConstantRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.ConstantRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitCustomAttributeRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitCustomAttributeRow (Mono.Cecil.Metadata.CustomAttributeRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.CustomAttributeRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitDeclSecurityRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitDeclSecurityRow (Mono.Cecil.Metadata.DeclSecurityRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.DeclSecurityRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitEventMapRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitEventMapRow (Mono.Cecil.Metadata.EventMapRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.EventMapRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitEventPtrRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitEventPtrRow (Mono.Cecil.Metadata.EventPtrRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.EventPtrRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitEventRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitEventRow (Mono.Cecil.Metadata.EventRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.EventRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitExportedTypeRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitExportedTypeRow (Mono.Cecil.Metadata.ExportedTypeRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.ExportedTypeRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFieldLayoutRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitFieldLayoutRow (Mono.Cecil.Metadata.FieldLayoutRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.FieldLayoutRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFieldMarshalRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitFieldMarshalRow (Mono.Cecil.Metadata.FieldMarshalRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.FieldMarshalRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFieldPtrRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitFieldPtrRow (Mono.Cecil.Metadata.FieldPtrRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.FieldPtrRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFieldRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitFieldRow (Mono.Cecil.Metadata.FieldRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.FieldRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFieldRVARow">
-      <MemberSignature Language="C#" Value="public virtual void VisitFieldRVARow (Mono.Cecil.Metadata.FieldRVARow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.FieldRVARow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFileRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitFileRow (Mono.Cecil.Metadata.FileRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.FileRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitGenericParamConstraintRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitGenericParamConstraintRow (Mono.Cecil.Metadata.GenericParamConstraintRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.GenericParamConstraintRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitGenericParamRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitGenericParamRow (Mono.Cecil.Metadata.GenericParamRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.GenericParamRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitImplMapRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitImplMapRow (Mono.Cecil.Metadata.ImplMapRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.ImplMapRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitInterfaceImplRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitInterfaceImplRow (Mono.Cecil.Metadata.InterfaceImplRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.InterfaceImplRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitManifestResourceRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitManifestResourceRow (Mono.Cecil.Metadata.ManifestResourceRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.ManifestResourceRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMemberRefRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitMemberRefRow (Mono.Cecil.Metadata.MemberRefRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.MemberRefRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMethodImplRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitMethodImplRow (Mono.Cecil.Metadata.MethodImplRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.MethodImplRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMethodPtrRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitMethodPtrRow (Mono.Cecil.Metadata.MethodPtrRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.MethodPtrRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMethodRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitMethodRow (Mono.Cecil.Metadata.MethodRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.MethodRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMethodSemanticsRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitMethodSemanticsRow (Mono.Cecil.Metadata.MethodSemanticsRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.MethodSemanticsRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMethodSpecRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitMethodSpecRow (Mono.Cecil.Metadata.MethodSpecRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.MethodSpecRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitModuleRefRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitModuleRefRow (Mono.Cecil.Metadata.ModuleRefRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.ModuleRefRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitModuleRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitModuleRow (Mono.Cecil.Metadata.ModuleRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.ModuleRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitNestedClassRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitNestedClassRow (Mono.Cecil.Metadata.NestedClassRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.NestedClassRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitParamPtrRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitParamPtrRow (Mono.Cecil.Metadata.ParamPtrRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.ParamPtrRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitParamRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitParamRow (Mono.Cecil.Metadata.ParamRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.ParamRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitPropertyMapRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitPropertyMapRow (Mono.Cecil.Metadata.PropertyMapRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.PropertyMapRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitPropertyPtrRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitPropertyPtrRow (Mono.Cecil.Metadata.PropertyPtrRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.PropertyPtrRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitPropertyRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitPropertyRow (Mono.Cecil.Metadata.PropertyRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.PropertyRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitRowCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitRowCollection (Mono.Cecil.Metadata.RowCollection coll);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="coll" Type="Mono.Cecil.Metadata.RowCollection" />
-      </Parameters>
-      <Docs>
-        <param name="coll">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitStandAloneSigRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitStandAloneSigRow (Mono.Cecil.Metadata.StandAloneSigRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.StandAloneSigRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitTypeDefRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitTypeDefRow (Mono.Cecil.Metadata.TypeDefRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.TypeDefRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitTypeRefRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitTypeRefRow (Mono.Cecil.Metadata.TypeRefRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.TypeRefRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitTypeSpecRow">
-      <MemberSignature Language="C#" Value="public virtual void VisitTypeSpecRow (Mono.Cecil.Metadata.TypeSpecRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.TypeSpecRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/BaseMetadataTableVisitor.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/BaseMetadataTableVisitor.xml
deleted file mode 100644
index 32f511c..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/BaseMetadataTableVisitor.xml
+++ /dev/null
@@ -1,859 +0,0 @@
-<Type Name="BaseMetadataTableVisitor" FullName="Mono.Cecil.Metadata.BaseMetadataTableVisitor">
-  <TypeSignature Language="C#" Value="public abstract class BaseMetadataTableVisitor : Mono.Cecil.Metadata.IMetadataTableVisitor" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTableVisitor</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="protected BaseMetadataTableVisitor ();" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetRowVisitor">
-      <MemberSignature Language="C#" Value="public abstract Mono.Cecil.Metadata.IMetadataRowVisitor GetRowVisitor ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.IMetadataRowVisitor</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="TerminateTableCollection">
-      <MemberSignature Language="C#" Value="public virtual void TerminateTableCollection (Mono.Cecil.Metadata.TableCollection coll);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="coll" Type="Mono.Cecil.Metadata.TableCollection" />
-      </Parameters>
-      <Docs>
-        <param name="coll">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyOSTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitAssemblyOSTable (Mono.Cecil.Metadata.AssemblyOSTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.AssemblyOSTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyProcessorTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitAssemblyProcessorTable (Mono.Cecil.Metadata.AssemblyProcessorTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.AssemblyProcessorTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyRefOSTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitAssemblyRefOSTable (Mono.Cecil.Metadata.AssemblyRefOSTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.AssemblyRefOSTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyRefProcessorTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitAssemblyRefProcessorTable (Mono.Cecil.Metadata.AssemblyRefProcessorTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.AssemblyRefProcessorTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyRefTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitAssemblyRefTable (Mono.Cecil.Metadata.AssemblyRefTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.AssemblyRefTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitAssemblyTable (Mono.Cecil.Metadata.AssemblyTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.AssemblyTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitClassLayoutTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitClassLayoutTable (Mono.Cecil.Metadata.ClassLayoutTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.ClassLayoutTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitConstantTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitConstantTable (Mono.Cecil.Metadata.ConstantTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.ConstantTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitCustomAttributeTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitCustomAttributeTable (Mono.Cecil.Metadata.CustomAttributeTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.CustomAttributeTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitDeclSecurityTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitDeclSecurityTable (Mono.Cecil.Metadata.DeclSecurityTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.DeclSecurityTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitEventMapTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitEventMapTable (Mono.Cecil.Metadata.EventMapTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.EventMapTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitEventPtrTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitEventPtrTable (Mono.Cecil.Metadata.EventPtrTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.EventPtrTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitEventTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitEventTable (Mono.Cecil.Metadata.EventTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.EventTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitExportedTypeTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitExportedTypeTable (Mono.Cecil.Metadata.ExportedTypeTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.ExportedTypeTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFieldLayoutTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitFieldLayoutTable (Mono.Cecil.Metadata.FieldLayoutTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.FieldLayoutTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFieldMarshalTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitFieldMarshalTable (Mono.Cecil.Metadata.FieldMarshalTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.FieldMarshalTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFieldPtrTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitFieldPtrTable (Mono.Cecil.Metadata.FieldPtrTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.FieldPtrTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFieldRVATable">
-      <MemberSignature Language="C#" Value="public virtual void VisitFieldRVATable (Mono.Cecil.Metadata.FieldRVATable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.FieldRVATable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFieldTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitFieldTable (Mono.Cecil.Metadata.FieldTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.FieldTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFileTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitFileTable (Mono.Cecil.Metadata.FileTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.FileTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitGenericParamConstraintTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitGenericParamConstraintTable (Mono.Cecil.Metadata.GenericParamConstraintTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.GenericParamConstraintTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitGenericParamTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitGenericParamTable (Mono.Cecil.Metadata.GenericParamTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.GenericParamTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitImplMapTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitImplMapTable (Mono.Cecil.Metadata.ImplMapTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.ImplMapTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitInterfaceImplTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitInterfaceImplTable (Mono.Cecil.Metadata.InterfaceImplTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.InterfaceImplTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitManifestResourceTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitManifestResourceTable (Mono.Cecil.Metadata.ManifestResourceTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.ManifestResourceTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMemberRefTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitMemberRefTable (Mono.Cecil.Metadata.MemberRefTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.MemberRefTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMethodImplTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitMethodImplTable (Mono.Cecil.Metadata.MethodImplTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.MethodImplTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMethodPtrTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitMethodPtrTable (Mono.Cecil.Metadata.MethodPtrTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.MethodPtrTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMethodSemanticsTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitMethodSemanticsTable (Mono.Cecil.Metadata.MethodSemanticsTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.MethodSemanticsTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMethodSpecTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitMethodSpecTable (Mono.Cecil.Metadata.MethodSpecTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.MethodSpecTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMethodTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitMethodTable (Mono.Cecil.Metadata.MethodTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.MethodTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitModuleRefTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitModuleRefTable (Mono.Cecil.Metadata.ModuleRefTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.ModuleRefTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitModuleTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitModuleTable (Mono.Cecil.Metadata.ModuleTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.ModuleTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitNestedClassTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitNestedClassTable (Mono.Cecil.Metadata.NestedClassTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.NestedClassTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitParamPtrTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitParamPtrTable (Mono.Cecil.Metadata.ParamPtrTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.ParamPtrTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitParamTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitParamTable (Mono.Cecil.Metadata.ParamTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.ParamTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitPropertyMapTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitPropertyMapTable (Mono.Cecil.Metadata.PropertyMapTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.PropertyMapTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitPropertyPtrTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitPropertyPtrTable (Mono.Cecil.Metadata.PropertyPtrTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.PropertyPtrTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitPropertyTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitPropertyTable (Mono.Cecil.Metadata.PropertyTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.PropertyTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitStandAloneSigTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitStandAloneSigTable (Mono.Cecil.Metadata.StandAloneSigTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.StandAloneSigTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitTableCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitTableCollection (Mono.Cecil.Metadata.TableCollection coll);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="coll" Type="Mono.Cecil.Metadata.TableCollection" />
-      </Parameters>
-      <Docs>
-        <param name="coll">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitTypeDefTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitTypeDefTable (Mono.Cecil.Metadata.TypeDefTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.TypeDefTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitTypeRefTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitTypeRefTable (Mono.Cecil.Metadata.TypeRefTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.TypeRefTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitTypeSpecTable">
-      <MemberSignature Language="C#" Value="public virtual void VisitTypeSpecTable (Mono.Cecil.Metadata.TypeSpecTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.TypeSpecTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/BaseMetadataVisitor.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/BaseMetadataVisitor.xml
deleted file mode 100644
index 97f0740..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/BaseMetadataVisitor.xml
+++ /dev/null
@@ -1,231 +0,0 @@
-<Type Name="BaseMetadataVisitor" FullName="Mono.Cecil.Metadata.BaseMetadataVisitor">
-  <TypeSignature Language="C#" Value="public abstract class BaseMetadataVisitor : Mono.Cecil.Metadata.IMetadataVisitor" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataVisitor</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="protected BaseMetadataVisitor ();" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="TerminateMetadataRoot">
-      <MemberSignature Language="C#" Value="public virtual void TerminateMetadataRoot (Mono.Cecil.Metadata.MetadataRoot root);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="root" Type="Mono.Cecil.Metadata.MetadataRoot" />
-      </Parameters>
-      <Docs>
-        <param name="root">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitBlobHeap">
-      <MemberSignature Language="C#" Value="public virtual void VisitBlobHeap (Mono.Cecil.Metadata.BlobHeap heap);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="heap" Type="Mono.Cecil.Metadata.BlobHeap" />
-      </Parameters>
-      <Docs>
-        <param name="heap">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitGuidHeap">
-      <MemberSignature Language="C#" Value="public virtual void VisitGuidHeap (Mono.Cecil.Metadata.GuidHeap heap);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="heap" Type="Mono.Cecil.Metadata.GuidHeap" />
-      </Parameters>
-      <Docs>
-        <param name="heap">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMetadataRoot">
-      <MemberSignature Language="C#" Value="public virtual void VisitMetadataRoot (Mono.Cecil.Metadata.MetadataRoot root);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="root" Type="Mono.Cecil.Metadata.MetadataRoot" />
-      </Parameters>
-      <Docs>
-        <param name="root">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMetadataRootHeader">
-      <MemberSignature Language="C#" Value="public virtual void VisitMetadataRootHeader (Mono.Cecil.Metadata.MetadataRoot.MetadataRootHeader header);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="header" Type="Mono.Cecil.Metadata.MetadataRoot+MetadataRootHeader" />
-      </Parameters>
-      <Docs>
-        <param name="header">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMetadataStream">
-      <MemberSignature Language="C#" Value="public virtual void VisitMetadataStream (Mono.Cecil.Metadata.MetadataStream stream);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="stream" Type="Mono.Cecil.Metadata.MetadataStream" />
-      </Parameters>
-      <Docs>
-        <param name="stream">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMetadataStreamCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitMetadataStreamCollection (Mono.Cecil.Metadata.MetadataStreamCollection streams);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="streams" Type="Mono.Cecil.Metadata.MetadataStreamCollection" />
-      </Parameters>
-      <Docs>
-        <param name="streams">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMetadataStreamHeader">
-      <MemberSignature Language="C#" Value="public virtual void VisitMetadataStreamHeader (Mono.Cecil.Metadata.MetadataStream.MetadataStreamHeader header);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="header" Type="Mono.Cecil.Metadata.MetadataStream+MetadataStreamHeader" />
-      </Parameters>
-      <Docs>
-        <param name="header">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitStringsHeap">
-      <MemberSignature Language="C#" Value="public virtual void VisitStringsHeap (Mono.Cecil.Metadata.StringsHeap heap);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="heap" Type="Mono.Cecil.Metadata.StringsHeap" />
-      </Parameters>
-      <Docs>
-        <param name="heap">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitTablesHeap">
-      <MemberSignature Language="C#" Value="public virtual void VisitTablesHeap (Mono.Cecil.Metadata.TablesHeap heap);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="heap" Type="Mono.Cecil.Metadata.TablesHeap" />
-      </Parameters>
-      <Docs>
-        <param name="heap">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitUserStringsHeap">
-      <MemberSignature Language="C#" Value="public virtual void VisitUserStringsHeap (Mono.Cecil.Metadata.UserStringsHeap heap);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="heap" Type="Mono.Cecil.Metadata.UserStringsHeap" />
-      </Parameters>
-      <Docs>
-        <param name="heap">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/BlobHeap.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/BlobHeap.xml
deleted file mode 100644
index 7e17c1b..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/BlobHeap.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<Type Name="BlobHeap" FullName="Mono.Cecil.Metadata.BlobHeap">
-  <TypeSignature Language="C#" Value="public class BlobHeap : Mono.Cecil.Metadata.MetadataHeap" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.Metadata.MetadataHeap</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public override void Accept (Mono.Cecil.Metadata.IMetadataVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetReader">
-      <MemberSignature Language="C#" Value="public System.IO.BinaryReader GetReader (uint index);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.IO.BinaryReader</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.UInt32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Read">
-      <MemberSignature Language="C#" Value="public byte[] Read (uint index);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte[]</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.UInt32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ClassLayoutRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ClassLayoutRow.xml
deleted file mode 100644
index f382c29..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ClassLayoutRow.xml
+++ /dev/null
@@ -1,81 +0,0 @@
-<Type Name="ClassLayoutRow" FullName="Mono.Cecil.Metadata.ClassLayoutRow">
-  <TypeSignature Language="C#" Value="public sealed class ClassLayoutRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ClassSize">
-      <MemberSignature Language="C#" Value="public uint ClassSize;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PackingSize">
-      <MemberSignature Language="C#" Value="public ushort PackingSize;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Parent">
-      <MemberSignature Language="C#" Value="public uint Parent;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ClassLayoutTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ClassLayoutTable.xml
deleted file mode 100644
index 8e421ab..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ClassLayoutTable.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="ClassLayoutTable" FullName="Mono.Cecil.Metadata.ClassLayoutTable">
-  <TypeSignature Language="C#" Value="public sealed class ClassLayoutTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.ClassLayoutRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ClassLayoutRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 15;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>15</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/CodedIndex.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/CodedIndex.xml
deleted file mode 100644
index 5b029e8..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/CodedIndex.xml
+++ /dev/null
@@ -1,185 +0,0 @@
-<Type Name="CodedIndex" FullName="Mono.Cecil.Metadata.CodedIndex">
-  <TypeSignature Language="C#" Value="public enum CodedIndex" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="CustomAttributeType">
-      <MemberSignature Language="C#" Value="CustomAttributeType" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.CodedIndex</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="HasConstant">
-      <MemberSignature Language="C#" Value="HasConstant" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.CodedIndex</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="HasCustomAttribute">
-      <MemberSignature Language="C#" Value="HasCustomAttribute" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.CodedIndex</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="HasDeclSecurity">
-      <MemberSignature Language="C#" Value="HasDeclSecurity" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.CodedIndex</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="HasFieldMarshal">
-      <MemberSignature Language="C#" Value="HasFieldMarshal" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.CodedIndex</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="HasSemantics">
-      <MemberSignature Language="C#" Value="HasSemantics" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.CodedIndex</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Implementation">
-      <MemberSignature Language="C#" Value="Implementation" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.CodedIndex</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="MemberForwarded">
-      <MemberSignature Language="C#" Value="MemberForwarded" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.CodedIndex</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="MemberRefParent">
-      <MemberSignature Language="C#" Value="MemberRefParent" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.CodedIndex</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="MethodDefOrRef">
-      <MemberSignature Language="C#" Value="MethodDefOrRef" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.CodedIndex</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ResolutionScope">
-      <MemberSignature Language="C#" Value="ResolutionScope" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.CodedIndex</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="TypeDefOrRef">
-      <MemberSignature Language="C#" Value="TypeDefOrRef" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.CodedIndex</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="TypeOrMethodDef">
-      <MemberSignature Language="C#" Value="TypeOrMethodDef" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.CodedIndex</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ConstantRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ConstantRow.xml
deleted file mode 100644
index 391ee34..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ConstantRow.xml
+++ /dev/null
@@ -1,81 +0,0 @@
-<Type Name="ConstantRow" FullName="Mono.Cecil.Metadata.ConstantRow">
-  <TypeSignature Language="C#" Value="public sealed class ConstantRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Parent">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken Parent;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Type">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.ElementType Type;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Value">
-      <MemberSignature Language="C#" Value="public uint Value;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ConstantTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ConstantTable.xml
deleted file mode 100644
index 5ee87aa..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ConstantTable.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="ConstantTable" FullName="Mono.Cecil.Metadata.ConstantTable">
-  <TypeSignature Language="C#" Value="public sealed class ConstantTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.ConstantRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ConstantRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 11;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>11</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/CustomAttributeRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/CustomAttributeRow.xml
deleted file mode 100644
index b5b36c9..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/CustomAttributeRow.xml
+++ /dev/null
@@ -1,81 +0,0 @@
-<Type Name="CustomAttributeRow" FullName="Mono.Cecil.Metadata.CustomAttributeRow">
-  <TypeSignature Language="C#" Value="public sealed class CustomAttributeRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Parent">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken Parent;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Type">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken Type;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Value">
-      <MemberSignature Language="C#" Value="public uint Value;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/CustomAttributeTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/CustomAttributeTable.xml
deleted file mode 100644
index 6b3dc48..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/CustomAttributeTable.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="CustomAttributeTable" FullName="Mono.Cecil.Metadata.CustomAttributeTable">
-  <TypeSignature Language="C#" Value="public sealed class CustomAttributeTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.CustomAttributeRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.CustomAttributeRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 12;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>12</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/DeclSecurityRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/DeclSecurityRow.xml
deleted file mode 100644
index 2d7f6c0..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/DeclSecurityRow.xml
+++ /dev/null
@@ -1,81 +0,0 @@
-<Type Name="DeclSecurityRow" FullName="Mono.Cecil.Metadata.DeclSecurityRow">
-  <TypeSignature Language="C#" Value="public sealed class DeclSecurityRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Action">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.SecurityAction Action;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.SecurityAction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Parent">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken Parent;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PermissionSet">
-      <MemberSignature Language="C#" Value="public uint PermissionSet;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/DeclSecurityTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/DeclSecurityTable.xml
deleted file mode 100644
index 2b0e6c4..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/DeclSecurityTable.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="DeclSecurityTable" FullName="Mono.Cecil.Metadata.DeclSecurityTable">
-  <TypeSignature Language="C#" Value="public sealed class DeclSecurityTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.DeclSecurityRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.DeclSecurityRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 14;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>14</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ElementType.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ElementType.xml
deleted file mode 100644
index b6f60c4..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ElementType.xml
+++ /dev/null
@@ -1,510 +0,0 @@
-<Type Name="ElementType" FullName="Mono.Cecil.Metadata.ElementType">
-  <TypeSignature Language="C#" Value="public enum ElementType" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Array">
-      <MemberSignature Language="C#" Value="Array" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Boolean">
-      <MemberSignature Language="C#" Value="Boolean" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Boxed">
-      <MemberSignature Language="C#" Value="Boxed" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ByRef">
-      <MemberSignature Language="C#" Value="ByRef" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Char">
-      <MemberSignature Language="C#" Value="Char" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Class">
-      <MemberSignature Language="C#" Value="Class" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="CModOpt">
-      <MemberSignature Language="C#" Value="CModOpt" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="CModReqD">
-      <MemberSignature Language="C#" Value="CModReqD" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="End">
-      <MemberSignature Language="C#" Value="End" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Enum">
-      <MemberSignature Language="C#" Value="Enum" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="FnPtr">
-      <MemberSignature Language="C#" Value="FnPtr" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="GenericInst">
-      <MemberSignature Language="C#" Value="GenericInst" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="I">
-      <MemberSignature Language="C#" Value="I" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="I1">
-      <MemberSignature Language="C#" Value="I1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="I2">
-      <MemberSignature Language="C#" Value="I2" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="I4">
-      <MemberSignature Language="C#" Value="I4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="I8">
-      <MemberSignature Language="C#" Value="I8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Internal">
-      <MemberSignature Language="C#" Value="Internal" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Modifier">
-      <MemberSignature Language="C#" Value="Modifier" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="MVar">
-      <MemberSignature Language="C#" Value="MVar" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Object">
-      <MemberSignature Language="C#" Value="Object" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Pinned">
-      <MemberSignature Language="C#" Value="Pinned" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ptr">
-      <MemberSignature Language="C#" Value="Ptr" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="R4">
-      <MemberSignature Language="C#" Value="R4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="R8">
-      <MemberSignature Language="C#" Value="R8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Sentinel">
-      <MemberSignature Language="C#" Value="Sentinel" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="String">
-      <MemberSignature Language="C#" Value="String" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="SzArray">
-      <MemberSignature Language="C#" Value="SzArray" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Type">
-      <MemberSignature Language="C#" Value="Type" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="TypedByRef">
-      <MemberSignature Language="C#" Value="TypedByRef" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="U">
-      <MemberSignature Language="C#" Value="U" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="U1">
-      <MemberSignature Language="C#" Value="U1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="U2">
-      <MemberSignature Language="C#" Value="U2" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="U4">
-      <MemberSignature Language="C#" Value="U4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="U8">
-      <MemberSignature Language="C#" Value="U8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ValueType">
-      <MemberSignature Language="C#" Value="ValueType" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Var">
-      <MemberSignature Language="C#" Value="Var" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Void">
-      <MemberSignature Language="C#" Value="Void" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ElementType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/EventMapRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/EventMapRow.xml
deleted file mode 100644
index 2680300..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/EventMapRow.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-<Type Name="EventMapRow" FullName="Mono.Cecil.Metadata.EventMapRow">
-  <TypeSignature Language="C#" Value="public sealed class EventMapRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="EventList">
-      <MemberSignature Language="C#" Value="public uint EventList;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Parent">
-      <MemberSignature Language="C#" Value="public uint Parent;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/EventMapTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/EventMapTable.xml
deleted file mode 100644
index 012db89..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/EventMapTable.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="EventMapTable" FullName="Mono.Cecil.Metadata.EventMapTable">
-  <TypeSignature Language="C#" Value="public sealed class EventMapTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.EventMapRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.EventMapRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 18;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>18</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/EventPtrRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/EventPtrRow.xml
deleted file mode 100644
index 11fe3c8..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/EventPtrRow.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<Type Name="EventPtrRow" FullName="Mono.Cecil.Metadata.EventPtrRow">
-  <TypeSignature Language="C#" Value="public sealed class EventPtrRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Event">
-      <MemberSignature Language="C#" Value="public uint Event;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/EventPtrTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/EventPtrTable.xml
deleted file mode 100644
index 939b9e6..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/EventPtrTable.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="EventPtrTable" FullName="Mono.Cecil.Metadata.EventPtrTable">
-  <TypeSignature Language="C#" Value="public sealed class EventPtrTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.EventPtrRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.EventPtrRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 19;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>19</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/EventRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/EventRow.xml
deleted file mode 100644
index 4d79666..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/EventRow.xml
+++ /dev/null
@@ -1,81 +0,0 @@
-<Type Name="EventRow" FullName="Mono.Cecil.Metadata.EventRow">
-  <TypeSignature Language="C#" Value="public sealed class EventRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="EventFlags">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.EventAttributes EventFlags;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.EventAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="EventType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken EventType;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public uint Name;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/EventTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/EventTable.xml
deleted file mode 100644
index 85169c5..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/EventTable.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="EventTable" FullName="Mono.Cecil.Metadata.EventTable">
-  <TypeSignature Language="C#" Value="public sealed class EventTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.EventRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.EventRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 20;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>20</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ExportedTypeRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ExportedTypeRow.xml
deleted file mode 100644
index 2ed7c03..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ExportedTypeRow.xml
+++ /dev/null
@@ -1,109 +0,0 @@
-<Type Name="ExportedTypeRow" FullName="Mono.Cecil.Metadata.ExportedTypeRow">
-  <TypeSignature Language="C#" Value="public sealed class ExportedTypeRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Flags">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeAttributes Flags;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Implementation">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken Implementation;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="TypeDefId">
-      <MemberSignature Language="C#" Value="public uint TypeDefId;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="TypeName">
-      <MemberSignature Language="C#" Value="public uint TypeName;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="TypeNamespace">
-      <MemberSignature Language="C#" Value="public uint TypeNamespace;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ExportedTypeTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ExportedTypeTable.xml
deleted file mode 100644
index 0cd81f0..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ExportedTypeTable.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="ExportedTypeTable" FullName="Mono.Cecil.Metadata.ExportedTypeTable">
-  <TypeSignature Language="C#" Value="public sealed class ExportedTypeTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.ExportedTypeRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ExportedTypeRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 39;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>39</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldLayoutRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldLayoutRow.xml
deleted file mode 100644
index e414b52..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldLayoutRow.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-<Type Name="FieldLayoutRow" FullName="Mono.Cecil.Metadata.FieldLayoutRow">
-  <TypeSignature Language="C#" Value="public sealed class FieldLayoutRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Field">
-      <MemberSignature Language="C#" Value="public uint Field;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Offset">
-      <MemberSignature Language="C#" Value="public uint Offset;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldLayoutTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldLayoutTable.xml
deleted file mode 100644
index 9893e91..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldLayoutTable.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="FieldLayoutTable" FullName="Mono.Cecil.Metadata.FieldLayoutTable">
-  <TypeSignature Language="C#" Value="public sealed class FieldLayoutTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.FieldLayoutRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.FieldLayoutRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 16;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>16</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldMarshalRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldMarshalRow.xml
deleted file mode 100644
index 3e524e0..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldMarshalRow.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-<Type Name="FieldMarshalRow" FullName="Mono.Cecil.Metadata.FieldMarshalRow">
-  <TypeSignature Language="C#" Value="public sealed class FieldMarshalRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="NativeType">
-      <MemberSignature Language="C#" Value="public uint NativeType;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Parent">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken Parent;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldMarshalTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldMarshalTable.xml
deleted file mode 100644
index 7284238..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldMarshalTable.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="FieldMarshalTable" FullName="Mono.Cecil.Metadata.FieldMarshalTable">
-  <TypeSignature Language="C#" Value="public sealed class FieldMarshalTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.FieldMarshalRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.FieldMarshalRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 13;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>13</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldPtrRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldPtrRow.xml
deleted file mode 100644
index 94ebc21..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldPtrRow.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<Type Name="FieldPtrRow" FullName="Mono.Cecil.Metadata.FieldPtrRow">
-  <TypeSignature Language="C#" Value="public sealed class FieldPtrRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Field">
-      <MemberSignature Language="C#" Value="public uint Field;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldPtrTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldPtrTable.xml
deleted file mode 100644
index 586c354..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldPtrTable.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="FieldPtrTable" FullName="Mono.Cecil.Metadata.FieldPtrTable">
-  <TypeSignature Language="C#" Value="public sealed class FieldPtrTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.FieldPtrRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.FieldPtrRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 3;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>3</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldRVARow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldRVARow.xml
deleted file mode 100644
index 0a3e096..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldRVARow.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-<Type Name="FieldRVARow" FullName="Mono.Cecil.Metadata.FieldRVARow">
-  <TypeSignature Language="C#" Value="public sealed class FieldRVARow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Field">
-      <MemberSignature Language="C#" Value="public uint Field;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RVA">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.RVA RVA;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldRVATable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldRVATable.xml
deleted file mode 100644
index e136cdb..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldRVATable.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="FieldRVATable" FullName="Mono.Cecil.Metadata.FieldRVATable">
-  <TypeSignature Language="C#" Value="public sealed class FieldRVATable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.FieldRVARow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.FieldRVARow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 29;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>29</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldRow.xml
deleted file mode 100644
index 2a2a97f..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldRow.xml
+++ /dev/null
@@ -1,81 +0,0 @@
-<Type Name="FieldRow" FullName="Mono.Cecil.Metadata.FieldRow">
-  <TypeSignature Language="C#" Value="public sealed class FieldRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Flags">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.FieldAttributes Flags;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public uint Name;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Signature">
-      <MemberSignature Language="C#" Value="public uint Signature;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldTable.xml
deleted file mode 100644
index 72f094b..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FieldTable.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="FieldTable" FullName="Mono.Cecil.Metadata.FieldTable">
-  <TypeSignature Language="C#" Value="public sealed class FieldTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.FieldRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.FieldRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 4;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>4</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FileRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FileRow.xml
deleted file mode 100644
index 15b6daf..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FileRow.xml
+++ /dev/null
@@ -1,81 +0,0 @@
-<Type Name="FileRow" FullName="Mono.Cecil.Metadata.FileRow">
-  <TypeSignature Language="C#" Value="public sealed class FileRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Flags">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.FileAttributes Flags;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FileAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HashValue">
-      <MemberSignature Language="C#" Value="public uint HashValue;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public uint Name;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FileTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FileTable.xml
deleted file mode 100644
index c200834..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/FileTable.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="FileTable" FullName="Mono.Cecil.Metadata.FileTable">
-  <TypeSignature Language="C#" Value="public sealed class FileTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.FileRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.FileRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 38;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>38</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/GenericParamConstraintRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/GenericParamConstraintRow.xml
deleted file mode 100644
index db32c23..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/GenericParamConstraintRow.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-<Type Name="GenericParamConstraintRow" FullName="Mono.Cecil.Metadata.GenericParamConstraintRow">
-  <TypeSignature Language="C#" Value="public sealed class GenericParamConstraintRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Constraint">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken Constraint;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Owner">
-      <MemberSignature Language="C#" Value="public uint Owner;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/GenericParamConstraintTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/GenericParamConstraintTable.xml
deleted file mode 100644
index bac4ab3..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/GenericParamConstraintTable.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="GenericParamConstraintTable" FullName="Mono.Cecil.Metadata.GenericParamConstraintTable">
-  <TypeSignature Language="C#" Value="public sealed class GenericParamConstraintTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.GenericParamConstraintRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.GenericParamConstraintRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 44;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>44</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/GenericParamRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/GenericParamRow.xml
deleted file mode 100644
index 558c5f7..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/GenericParamRow.xml
+++ /dev/null
@@ -1,95 +0,0 @@
-<Type Name="GenericParamRow" FullName="Mono.Cecil.Metadata.GenericParamRow">
-  <TypeSignature Language="C#" Value="public sealed class GenericParamRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Flags">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.GenericParameterAttributes Flags;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.GenericParameterAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public uint Name;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Number">
-      <MemberSignature Language="C#" Value="public ushort Number;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Owner">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken Owner;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/GenericParamTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/GenericParamTable.xml
deleted file mode 100644
index fe459e2..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/GenericParamTable.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="GenericParamTable" FullName="Mono.Cecil.Metadata.GenericParamTable">
-  <TypeSignature Language="C#" Value="public sealed class GenericParamTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.GenericParamRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.GenericParamRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 42;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>42</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/GuidHeap.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/GuidHeap.xml
deleted file mode 100644
index 2158828..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/GuidHeap.xml
+++ /dev/null
@@ -1,84 +0,0 @@
-<Type Name="GuidHeap" FullName="Mono.Cecil.Metadata.GuidHeap">
-  <TypeSignature Language="C#" Value="public class GuidHeap : Mono.Cecil.Metadata.MetadataHeap" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.Metadata.MetadataHeap</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public GuidHeap (Mono.Cecil.Metadata.MetadataStream stream);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="stream" Type="Mono.Cecil.Metadata.MetadataStream" />
-      </Parameters>
-      <Docs>
-        <param name="stream">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public override void Accept (Mono.Cecil.Metadata.IMetadataVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Guids">
-      <MemberSignature Language="C#" Value="public System.Collections.IDictionary Guids { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Collections.IDictionary</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Guid this[uint index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Guid</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.UInt32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/IMetadataRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/IMetadataRow.xml
deleted file mode 100644
index 68e60f2..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/IMetadataRow.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<Type Name="IMetadataRow" FullName="Mono.Cecil.Metadata.IMetadataRow">
-  <TypeSignature Language="C#" Value="public interface IMetadataRow : Mono.Cecil.Metadata.IMetadataRowVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRowVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members />
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/IMetadataRowVisitable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/IMetadataRowVisitable.xml
deleted file mode 100644
index c46e072..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/IMetadataRowVisitable.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<Type Name="IMetadataRowVisitable" FullName="Mono.Cecil.Metadata.IMetadataRowVisitable">
-  <TypeSignature Language="C#" Value="public interface IMetadataRowVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/IMetadataRowVisitor.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/IMetadataRowVisitor.xml
deleted file mode 100644
index 701c534..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/IMetadataRowVisitor.xml
+++ /dev/null
@@ -1,824 +0,0 @@
-<Type Name="IMetadataRowVisitor" FullName="Mono.Cecil.Metadata.IMetadataRowVisitor">
-  <TypeSignature Language="C#" Value="public interface IMetadataRowVisitor" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="TerminateRowCollection">
-      <MemberSignature Language="C#" Value="public void TerminateRowCollection (Mono.Cecil.Metadata.RowCollection coll);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="coll" Type="Mono.Cecil.Metadata.RowCollection" />
-      </Parameters>
-      <Docs>
-        <param name="coll">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyOSRow">
-      <MemberSignature Language="C#" Value="public void VisitAssemblyOSRow (Mono.Cecil.Metadata.AssemblyOSRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.AssemblyOSRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyProcessorRow">
-      <MemberSignature Language="C#" Value="public void VisitAssemblyProcessorRow (Mono.Cecil.Metadata.AssemblyProcessorRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.AssemblyProcessorRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyRefOSRow">
-      <MemberSignature Language="C#" Value="public void VisitAssemblyRefOSRow (Mono.Cecil.Metadata.AssemblyRefOSRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.AssemblyRefOSRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyRefProcessorRow">
-      <MemberSignature Language="C#" Value="public void VisitAssemblyRefProcessorRow (Mono.Cecil.Metadata.AssemblyRefProcessorRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.AssemblyRefProcessorRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyRefRow">
-      <MemberSignature Language="C#" Value="public void VisitAssemblyRefRow (Mono.Cecil.Metadata.AssemblyRefRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.AssemblyRefRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyRow">
-      <MemberSignature Language="C#" Value="public void VisitAssemblyRow (Mono.Cecil.Metadata.AssemblyRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.AssemblyRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitClassLayoutRow">
-      <MemberSignature Language="C#" Value="public void VisitClassLayoutRow (Mono.Cecil.Metadata.ClassLayoutRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.ClassLayoutRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitConstantRow">
-      <MemberSignature Language="C#" Value="public void VisitConstantRow (Mono.Cecil.Metadata.ConstantRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.ConstantRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitCustomAttributeRow">
-      <MemberSignature Language="C#" Value="public void VisitCustomAttributeRow (Mono.Cecil.Metadata.CustomAttributeRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.CustomAttributeRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitDeclSecurityRow">
-      <MemberSignature Language="C#" Value="public void VisitDeclSecurityRow (Mono.Cecil.Metadata.DeclSecurityRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.DeclSecurityRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitEventMapRow">
-      <MemberSignature Language="C#" Value="public void VisitEventMapRow (Mono.Cecil.Metadata.EventMapRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.EventMapRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitEventPtrRow">
-      <MemberSignature Language="C#" Value="public void VisitEventPtrRow (Mono.Cecil.Metadata.EventPtrRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.EventPtrRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitEventRow">
-      <MemberSignature Language="C#" Value="public void VisitEventRow (Mono.Cecil.Metadata.EventRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.EventRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitExportedTypeRow">
-      <MemberSignature Language="C#" Value="public void VisitExportedTypeRow (Mono.Cecil.Metadata.ExportedTypeRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.ExportedTypeRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFieldLayoutRow">
-      <MemberSignature Language="C#" Value="public void VisitFieldLayoutRow (Mono.Cecil.Metadata.FieldLayoutRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.FieldLayoutRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFieldMarshalRow">
-      <MemberSignature Language="C#" Value="public void VisitFieldMarshalRow (Mono.Cecil.Metadata.FieldMarshalRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.FieldMarshalRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFieldPtrRow">
-      <MemberSignature Language="C#" Value="public void VisitFieldPtrRow (Mono.Cecil.Metadata.FieldPtrRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.FieldPtrRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFieldRow">
-      <MemberSignature Language="C#" Value="public void VisitFieldRow (Mono.Cecil.Metadata.FieldRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.FieldRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFieldRVARow">
-      <MemberSignature Language="C#" Value="public void VisitFieldRVARow (Mono.Cecil.Metadata.FieldRVARow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.FieldRVARow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFileRow">
-      <MemberSignature Language="C#" Value="public void VisitFileRow (Mono.Cecil.Metadata.FileRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.FileRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitGenericParamConstraintRow">
-      <MemberSignature Language="C#" Value="public void VisitGenericParamConstraintRow (Mono.Cecil.Metadata.GenericParamConstraintRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.GenericParamConstraintRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitGenericParamRow">
-      <MemberSignature Language="C#" Value="public void VisitGenericParamRow (Mono.Cecil.Metadata.GenericParamRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.GenericParamRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitImplMapRow">
-      <MemberSignature Language="C#" Value="public void VisitImplMapRow (Mono.Cecil.Metadata.ImplMapRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.ImplMapRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitInterfaceImplRow">
-      <MemberSignature Language="C#" Value="public void VisitInterfaceImplRow (Mono.Cecil.Metadata.InterfaceImplRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.InterfaceImplRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitManifestResourceRow">
-      <MemberSignature Language="C#" Value="public void VisitManifestResourceRow (Mono.Cecil.Metadata.ManifestResourceRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.ManifestResourceRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMemberRefRow">
-      <MemberSignature Language="C#" Value="public void VisitMemberRefRow (Mono.Cecil.Metadata.MemberRefRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.MemberRefRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMethodImplRow">
-      <MemberSignature Language="C#" Value="public void VisitMethodImplRow (Mono.Cecil.Metadata.MethodImplRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.MethodImplRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMethodPtrRow">
-      <MemberSignature Language="C#" Value="public void VisitMethodPtrRow (Mono.Cecil.Metadata.MethodPtrRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.MethodPtrRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMethodRow">
-      <MemberSignature Language="C#" Value="public void VisitMethodRow (Mono.Cecil.Metadata.MethodRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.MethodRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMethodSemanticsRow">
-      <MemberSignature Language="C#" Value="public void VisitMethodSemanticsRow (Mono.Cecil.Metadata.MethodSemanticsRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.MethodSemanticsRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMethodSpecRow">
-      <MemberSignature Language="C#" Value="public void VisitMethodSpecRow (Mono.Cecil.Metadata.MethodSpecRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.MethodSpecRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitModuleRefRow">
-      <MemberSignature Language="C#" Value="public void VisitModuleRefRow (Mono.Cecil.Metadata.ModuleRefRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.ModuleRefRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitModuleRow">
-      <MemberSignature Language="C#" Value="public void VisitModuleRow (Mono.Cecil.Metadata.ModuleRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.ModuleRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitNestedClassRow">
-      <MemberSignature Language="C#" Value="public void VisitNestedClassRow (Mono.Cecil.Metadata.NestedClassRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.NestedClassRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitParamPtrRow">
-      <MemberSignature Language="C#" Value="public void VisitParamPtrRow (Mono.Cecil.Metadata.ParamPtrRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.ParamPtrRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitParamRow">
-      <MemberSignature Language="C#" Value="public void VisitParamRow (Mono.Cecil.Metadata.ParamRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.ParamRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitPropertyMapRow">
-      <MemberSignature Language="C#" Value="public void VisitPropertyMapRow (Mono.Cecil.Metadata.PropertyMapRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.PropertyMapRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitPropertyPtrRow">
-      <MemberSignature Language="C#" Value="public void VisitPropertyPtrRow (Mono.Cecil.Metadata.PropertyPtrRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.PropertyPtrRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitPropertyRow">
-      <MemberSignature Language="C#" Value="public void VisitPropertyRow (Mono.Cecil.Metadata.PropertyRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.PropertyRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitRowCollection">
-      <MemberSignature Language="C#" Value="public void VisitRowCollection (Mono.Cecil.Metadata.RowCollection coll);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="coll" Type="Mono.Cecil.Metadata.RowCollection" />
-      </Parameters>
-      <Docs>
-        <param name="coll">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitStandAloneSigRow">
-      <MemberSignature Language="C#" Value="public void VisitStandAloneSigRow (Mono.Cecil.Metadata.StandAloneSigRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.StandAloneSigRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitTypeDefRow">
-      <MemberSignature Language="C#" Value="public void VisitTypeDefRow (Mono.Cecil.Metadata.TypeDefRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.TypeDefRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitTypeRefRow">
-      <MemberSignature Language="C#" Value="public void VisitTypeRefRow (Mono.Cecil.Metadata.TypeRefRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.TypeRefRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitTypeSpecRow">
-      <MemberSignature Language="C#" Value="public void VisitTypeSpecRow (Mono.Cecil.Metadata.TypeSpecRow row);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="row" Type="Mono.Cecil.Metadata.TypeSpecRow" />
-      </Parameters>
-      <Docs>
-        <param name="row">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/IMetadataTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/IMetadataTable.xml
deleted file mode 100644
index 74137ce..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/IMetadataTable.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<Type Name="IMetadataTable" FullName="Mono.Cecil.Metadata.IMetadataTable">
-  <TypeSignature Language="C#" Value="public interface IMetadataTable : Mono.Cecil.Metadata.IMetadataTableVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTableVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/IMetadataTableVisitable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/IMetadataTableVisitable.xml
deleted file mode 100644
index 9e848f4..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/IMetadataTableVisitable.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<Type Name="IMetadataTableVisitable" FullName="Mono.Cecil.Metadata.IMetadataTableVisitable">
-  <TypeSignature Language="C#" Value="public interface IMetadataTableVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/IMetadataTableVisitor.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/IMetadataTableVisitor.xml
deleted file mode 100644
index 8ae7c03..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/IMetadataTableVisitor.xml
+++ /dev/null
@@ -1,840 +0,0 @@
-<Type Name="IMetadataTableVisitor" FullName="Mono.Cecil.Metadata.IMetadataTableVisitor">
-  <TypeSignature Language="C#" Value="public interface IMetadataTableVisitor" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="GetRowVisitor">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.IMetadataRowVisitor GetRowVisitor ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.IMetadataRowVisitor</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="TerminateTableCollection">
-      <MemberSignature Language="C#" Value="public void TerminateTableCollection (Mono.Cecil.Metadata.TableCollection coll);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="coll" Type="Mono.Cecil.Metadata.TableCollection" />
-      </Parameters>
-      <Docs>
-        <param name="coll">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyOSTable">
-      <MemberSignature Language="C#" Value="public void VisitAssemblyOSTable (Mono.Cecil.Metadata.AssemblyOSTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.AssemblyOSTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyProcessorTable">
-      <MemberSignature Language="C#" Value="public void VisitAssemblyProcessorTable (Mono.Cecil.Metadata.AssemblyProcessorTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.AssemblyProcessorTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyRefOSTable">
-      <MemberSignature Language="C#" Value="public void VisitAssemblyRefOSTable (Mono.Cecil.Metadata.AssemblyRefOSTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.AssemblyRefOSTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyRefProcessorTable">
-      <MemberSignature Language="C#" Value="public void VisitAssemblyRefProcessorTable (Mono.Cecil.Metadata.AssemblyRefProcessorTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.AssemblyRefProcessorTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyRefTable">
-      <MemberSignature Language="C#" Value="public void VisitAssemblyRefTable (Mono.Cecil.Metadata.AssemblyRefTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.AssemblyRefTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyTable">
-      <MemberSignature Language="C#" Value="public void VisitAssemblyTable (Mono.Cecil.Metadata.AssemblyTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.AssemblyTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitClassLayoutTable">
-      <MemberSignature Language="C#" Value="public void VisitClassLayoutTable (Mono.Cecil.Metadata.ClassLayoutTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.ClassLayoutTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitConstantTable">
-      <MemberSignature Language="C#" Value="public void VisitConstantTable (Mono.Cecil.Metadata.ConstantTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.ConstantTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitCustomAttributeTable">
-      <MemberSignature Language="C#" Value="public void VisitCustomAttributeTable (Mono.Cecil.Metadata.CustomAttributeTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.CustomAttributeTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitDeclSecurityTable">
-      <MemberSignature Language="C#" Value="public void VisitDeclSecurityTable (Mono.Cecil.Metadata.DeclSecurityTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.DeclSecurityTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitEventMapTable">
-      <MemberSignature Language="C#" Value="public void VisitEventMapTable (Mono.Cecil.Metadata.EventMapTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.EventMapTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitEventPtrTable">
-      <MemberSignature Language="C#" Value="public void VisitEventPtrTable (Mono.Cecil.Metadata.EventPtrTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.EventPtrTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitEventTable">
-      <MemberSignature Language="C#" Value="public void VisitEventTable (Mono.Cecil.Metadata.EventTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.EventTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitExportedTypeTable">
-      <MemberSignature Language="C#" Value="public void VisitExportedTypeTable (Mono.Cecil.Metadata.ExportedTypeTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.ExportedTypeTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFieldLayoutTable">
-      <MemberSignature Language="C#" Value="public void VisitFieldLayoutTable (Mono.Cecil.Metadata.FieldLayoutTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.FieldLayoutTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFieldMarshalTable">
-      <MemberSignature Language="C#" Value="public void VisitFieldMarshalTable (Mono.Cecil.Metadata.FieldMarshalTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.FieldMarshalTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFieldPtrTable">
-      <MemberSignature Language="C#" Value="public void VisitFieldPtrTable (Mono.Cecil.Metadata.FieldPtrTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.FieldPtrTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFieldRVATable">
-      <MemberSignature Language="C#" Value="public void VisitFieldRVATable (Mono.Cecil.Metadata.FieldRVATable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.FieldRVATable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFieldTable">
-      <MemberSignature Language="C#" Value="public void VisitFieldTable (Mono.Cecil.Metadata.FieldTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.FieldTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFileTable">
-      <MemberSignature Language="C#" Value="public void VisitFileTable (Mono.Cecil.Metadata.FileTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.FileTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitGenericParamConstraintTable">
-      <MemberSignature Language="C#" Value="public void VisitGenericParamConstraintTable (Mono.Cecil.Metadata.GenericParamConstraintTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.GenericParamConstraintTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitGenericParamTable">
-      <MemberSignature Language="C#" Value="public void VisitGenericParamTable (Mono.Cecil.Metadata.GenericParamTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.GenericParamTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitImplMapTable">
-      <MemberSignature Language="C#" Value="public void VisitImplMapTable (Mono.Cecil.Metadata.ImplMapTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.ImplMapTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitInterfaceImplTable">
-      <MemberSignature Language="C#" Value="public void VisitInterfaceImplTable (Mono.Cecil.Metadata.InterfaceImplTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.InterfaceImplTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitManifestResourceTable">
-      <MemberSignature Language="C#" Value="public void VisitManifestResourceTable (Mono.Cecil.Metadata.ManifestResourceTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.ManifestResourceTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMemberRefTable">
-      <MemberSignature Language="C#" Value="public void VisitMemberRefTable (Mono.Cecil.Metadata.MemberRefTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.MemberRefTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMethodImplTable">
-      <MemberSignature Language="C#" Value="public void VisitMethodImplTable (Mono.Cecil.Metadata.MethodImplTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.MethodImplTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMethodPtrTable">
-      <MemberSignature Language="C#" Value="public void VisitMethodPtrTable (Mono.Cecil.Metadata.MethodPtrTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.MethodPtrTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMethodSemanticsTable">
-      <MemberSignature Language="C#" Value="public void VisitMethodSemanticsTable (Mono.Cecil.Metadata.MethodSemanticsTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.MethodSemanticsTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMethodSpecTable">
-      <MemberSignature Language="C#" Value="public void VisitMethodSpecTable (Mono.Cecil.Metadata.MethodSpecTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.MethodSpecTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMethodTable">
-      <MemberSignature Language="C#" Value="public void VisitMethodTable (Mono.Cecil.Metadata.MethodTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.MethodTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitModuleRefTable">
-      <MemberSignature Language="C#" Value="public void VisitModuleRefTable (Mono.Cecil.Metadata.ModuleRefTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.ModuleRefTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitModuleTable">
-      <MemberSignature Language="C#" Value="public void VisitModuleTable (Mono.Cecil.Metadata.ModuleTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.ModuleTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitNestedClassTable">
-      <MemberSignature Language="C#" Value="public void VisitNestedClassTable (Mono.Cecil.Metadata.NestedClassTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.NestedClassTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitParamPtrTable">
-      <MemberSignature Language="C#" Value="public void VisitParamPtrTable (Mono.Cecil.Metadata.ParamPtrTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.ParamPtrTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitParamTable">
-      <MemberSignature Language="C#" Value="public void VisitParamTable (Mono.Cecil.Metadata.ParamTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.ParamTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitPropertyMapTable">
-      <MemberSignature Language="C#" Value="public void VisitPropertyMapTable (Mono.Cecil.Metadata.PropertyMapTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.PropertyMapTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitPropertyPtrTable">
-      <MemberSignature Language="C#" Value="public void VisitPropertyPtrTable (Mono.Cecil.Metadata.PropertyPtrTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.PropertyPtrTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitPropertyTable">
-      <MemberSignature Language="C#" Value="public void VisitPropertyTable (Mono.Cecil.Metadata.PropertyTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.PropertyTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitStandAloneSigTable">
-      <MemberSignature Language="C#" Value="public void VisitStandAloneSigTable (Mono.Cecil.Metadata.StandAloneSigTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.StandAloneSigTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitTableCollection">
-      <MemberSignature Language="C#" Value="public void VisitTableCollection (Mono.Cecil.Metadata.TableCollection coll);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="coll" Type="Mono.Cecil.Metadata.TableCollection" />
-      </Parameters>
-      <Docs>
-        <param name="coll">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitTypeDefTable">
-      <MemberSignature Language="C#" Value="public void VisitTypeDefTable (Mono.Cecil.Metadata.TypeDefTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.TypeDefTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitTypeRefTable">
-      <MemberSignature Language="C#" Value="public void VisitTypeRefTable (Mono.Cecil.Metadata.TypeRefTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.TypeRefTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitTypeSpecTable">
-      <MemberSignature Language="C#" Value="public void VisitTypeSpecTable (Mono.Cecil.Metadata.TypeSpecTable table);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.TypeSpecTable" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/IMetadataVisitable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/IMetadataVisitable.xml
deleted file mode 100644
index d84a2f0..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/IMetadataVisitable.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<Type Name="IMetadataVisitable" FullName="Mono.Cecil.Metadata.IMetadataVisitable">
-  <TypeSignature Language="C#" Value="public interface IMetadataVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/IMetadataVisitor.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/IMetadataVisitor.xml
deleted file mode 100644
index fe966ea..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/IMetadataVisitor.xml
+++ /dev/null
@@ -1,212 +0,0 @@
-<Type Name="IMetadataVisitor" FullName="Mono.Cecil.Metadata.IMetadataVisitor">
-  <TypeSignature Language="C#" Value="public interface IMetadataVisitor" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="TerminateMetadataRoot">
-      <MemberSignature Language="C#" Value="public void TerminateMetadataRoot (Mono.Cecil.Metadata.MetadataRoot root);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="root" Type="Mono.Cecil.Metadata.MetadataRoot" />
-      </Parameters>
-      <Docs>
-        <param name="root">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitBlobHeap">
-      <MemberSignature Language="C#" Value="public void VisitBlobHeap (Mono.Cecil.Metadata.BlobHeap heap);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="heap" Type="Mono.Cecil.Metadata.BlobHeap" />
-      </Parameters>
-      <Docs>
-        <param name="heap">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitGuidHeap">
-      <MemberSignature Language="C#" Value="public void VisitGuidHeap (Mono.Cecil.Metadata.GuidHeap heap);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="heap" Type="Mono.Cecil.Metadata.GuidHeap" />
-      </Parameters>
-      <Docs>
-        <param name="heap">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMetadataRoot">
-      <MemberSignature Language="C#" Value="public void VisitMetadataRoot (Mono.Cecil.Metadata.MetadataRoot root);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="root" Type="Mono.Cecil.Metadata.MetadataRoot" />
-      </Parameters>
-      <Docs>
-        <param name="root">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMetadataRootHeader">
-      <MemberSignature Language="C#" Value="public void VisitMetadataRootHeader (Mono.Cecil.Metadata.MetadataRoot.MetadataRootHeader header);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="header" Type="Mono.Cecil.Metadata.MetadataRoot+MetadataRootHeader" />
-      </Parameters>
-      <Docs>
-        <param name="header">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMetadataStream">
-      <MemberSignature Language="C#" Value="public void VisitMetadataStream (Mono.Cecil.Metadata.MetadataStream stream);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="stream" Type="Mono.Cecil.Metadata.MetadataStream" />
-      </Parameters>
-      <Docs>
-        <param name="stream">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMetadataStreamCollection">
-      <MemberSignature Language="C#" Value="public void VisitMetadataStreamCollection (Mono.Cecil.Metadata.MetadataStreamCollection streams);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="streams" Type="Mono.Cecil.Metadata.MetadataStreamCollection" />
-      </Parameters>
-      <Docs>
-        <param name="streams">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMetadataStreamHeader">
-      <MemberSignature Language="C#" Value="public void VisitMetadataStreamHeader (Mono.Cecil.Metadata.MetadataStream.MetadataStreamHeader header);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="header" Type="Mono.Cecil.Metadata.MetadataStream+MetadataStreamHeader" />
-      </Parameters>
-      <Docs>
-        <param name="header">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitStringsHeap">
-      <MemberSignature Language="C#" Value="public void VisitStringsHeap (Mono.Cecil.Metadata.StringsHeap heap);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="heap" Type="Mono.Cecil.Metadata.StringsHeap" />
-      </Parameters>
-      <Docs>
-        <param name="heap">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitTablesHeap">
-      <MemberSignature Language="C#" Value="public void VisitTablesHeap (Mono.Cecil.Metadata.TablesHeap heap);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="heap" Type="Mono.Cecil.Metadata.TablesHeap" />
-      </Parameters>
-      <Docs>
-        <param name="heap">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitUserStringsHeap">
-      <MemberSignature Language="C#" Value="public void VisitUserStringsHeap (Mono.Cecil.Metadata.UserStringsHeap heap);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="heap" Type="Mono.Cecil.Metadata.UserStringsHeap" />
-      </Parameters>
-      <Docs>
-        <param name="heap">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ImplMapRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ImplMapRow.xml
deleted file mode 100644
index febef33..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ImplMapRow.xml
+++ /dev/null
@@ -1,95 +0,0 @@
-<Type Name="ImplMapRow" FullName="Mono.Cecil.Metadata.ImplMapRow">
-  <TypeSignature Language="C#" Value="public sealed class ImplMapRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ImportName">
-      <MemberSignature Language="C#" Value="public uint ImportName;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ImportScope">
-      <MemberSignature Language="C#" Value="public uint ImportScope;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MappingFlags">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.PInvokeAttributes MappingFlags;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PInvokeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MemberForwarded">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken MemberForwarded;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ImplMapTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ImplMapTable.xml
deleted file mode 100644
index 9f68aa5..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ImplMapTable.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="ImplMapTable" FullName="Mono.Cecil.Metadata.ImplMapTable">
-  <TypeSignature Language="C#" Value="public sealed class ImplMapTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.ImplMapRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ImplMapRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 28;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>28</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/InterfaceImplRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/InterfaceImplRow.xml
deleted file mode 100644
index b521194..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/InterfaceImplRow.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-<Type Name="InterfaceImplRow" FullName="Mono.Cecil.Metadata.InterfaceImplRow">
-  <TypeSignature Language="C#" Value="public sealed class InterfaceImplRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Class">
-      <MemberSignature Language="C#" Value="public uint Class;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Interface">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken Interface;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/InterfaceImplTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/InterfaceImplTable.xml
deleted file mode 100644
index 00887a1..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/InterfaceImplTable.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="InterfaceImplTable" FullName="Mono.Cecil.Metadata.InterfaceImplTable">
-  <TypeSignature Language="C#" Value="public sealed class InterfaceImplTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.InterfaceImplRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.InterfaceImplRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 9;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>9</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ManifestResourceRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ManifestResourceRow.xml
deleted file mode 100644
index 71c7b8b..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ManifestResourceRow.xml
+++ /dev/null
@@ -1,95 +0,0 @@
-<Type Name="ManifestResourceRow" FullName="Mono.Cecil.Metadata.ManifestResourceRow">
-  <TypeSignature Language="C#" Value="public sealed class ManifestResourceRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Flags">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ManifestResourceAttributes Flags;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ManifestResourceAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Implementation">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken Implementation;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public uint Name;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Offset">
-      <MemberSignature Language="C#" Value="public uint Offset;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ManifestResourceTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ManifestResourceTable.xml
deleted file mode 100644
index f8f1811..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ManifestResourceTable.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="ManifestResourceTable" FullName="Mono.Cecil.Metadata.ManifestResourceTable">
-  <TypeSignature Language="C#" Value="public sealed class ManifestResourceTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.ManifestResourceRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ManifestResourceRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 40;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>40</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MemberRefRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MemberRefRow.xml
deleted file mode 100644
index 2fbedc1..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MemberRefRow.xml
+++ /dev/null
@@ -1,81 +0,0 @@
-<Type Name="MemberRefRow" FullName="Mono.Cecil.Metadata.MemberRefRow">
-  <TypeSignature Language="C#" Value="public sealed class MemberRefRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Class">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken Class;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public uint Name;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Signature">
-      <MemberSignature Language="C#" Value="public uint Signature;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MemberRefTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MemberRefTable.xml
deleted file mode 100644
index 9bdb34b..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MemberRefTable.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="MemberRefTable" FullName="Mono.Cecil.Metadata.MemberRefTable">
-  <TypeSignature Language="C#" Value="public sealed class MemberRefTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MemberRefRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MemberRefRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 10;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>10</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MetadataFormatException.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MetadataFormatException.xml
deleted file mode 100644
index 5adf049..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MetadataFormatException.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<Type Name="MetadataFormatException" FullName="Mono.Cecil.Metadata.MetadataFormatException">
-  <TypeSignature Language="C#" Value="public class MetadataFormatException : Mono.Cecil.Binary.ImageFormatException" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.Binary.ImageFormatException</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members />
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MetadataHeap.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MetadataHeap.xml
deleted file mode 100644
index 1eb5cd6..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MetadataHeap.xml
+++ /dev/null
@@ -1,137 +0,0 @@
-<Type Name="MetadataHeap" FullName="Mono.Cecil.Metadata.MetadataHeap">
-  <TypeSignature Language="C#" Value="public abstract class MetadataHeap : Mono.Cecil.Metadata.IMetadataVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public abstract void Accept (Mono.Cecil.Metadata.IMetadataVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Data">
-      <MemberSignature Language="C#" Value="public byte[] Data { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte[]</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetStream">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataStream GetStream ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataStream</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HeapFactory">
-      <MemberSignature Language="C#" Value="public static Mono.Cecil.Metadata.MetadataHeap HeapFactory (Mono.Cecil.Metadata.MetadataStream stream);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataHeap</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="stream" Type="Mono.Cecil.Metadata.MetadataStream" />
-      </Parameters>
-      <Docs>
-        <param name="stream">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexSize">
-      <MemberSignature Language="C#" Value="public int IndexSize;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public string Name { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ReadBytesFromStream">
-      <MemberSignature Language="C#" Value="protected virtual byte[] ReadBytesFromStream (uint pos);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte[]</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="pos" Type="System.UInt32" />
-      </Parameters>
-      <Docs>
-        <param name="pos">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MetadataRoot+MetadataRootHeader.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MetadataRoot+MetadataRootHeader.xml
deleted file mode 100644
index 182e553..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MetadataRoot+MetadataRootHeader.xml
+++ /dev/null
@@ -1,170 +0,0 @@
-<Type Name="MetadataRoot+MetadataRootHeader" FullName="Mono.Cecil.Metadata.MetadataRoot+MetadataRootHeader">
-  <TypeSignature Language="C#" Value="public sealed class MetadataRoot.MetadataRootHeader : Mono.Cecil.Binary.IHeader, Mono.Cecil.Metadata.IMetadataVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Binary.IHeader</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Flags">
-      <MemberSignature Language="C#" Value="public ushort Flags;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MajorVersion">
-      <MemberSignature Language="C#" Value="public ushort MajorVersion;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MinorVersion">
-      <MemberSignature Language="C#" Value="public ushort MinorVersion;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Reserved">
-      <MemberSignature Language="C#" Value="public uint Reserved;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SetDefaultValues">
-      <MemberSignature Language="C#" Value="public void SetDefaultValues ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Signature">
-      <MemberSignature Language="C#" Value="public uint Signature;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="StandardSignature">
-      <MemberSignature Language="C#" Value="public const uint StandardSignature = 1112167234;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <MemberValue>1112167234</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Streams">
-      <MemberSignature Language="C#" Value="public ushort Streams;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Version">
-      <MemberSignature Language="C#" Value="public string Version;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MetadataRoot.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MetadataRoot.xml
deleted file mode 100644
index 5f6f1e8..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MetadataRoot.xml
+++ /dev/null
@@ -1,85 +0,0 @@
-<Type Name="MetadataRoot" FullName="Mono.Cecil.Metadata.MetadataRoot">
-  <TypeSignature Language="C#" Value="public sealed class MetadataRoot : Mono.Cecil.Metadata.IMetadataVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetImage">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.Image GetImage ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.Image</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Header">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataRoot.MetadataRootHeader Header { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataRoot+MetadataRootHeader</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Streams">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataStreamCollection Streams { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataStreamCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MetadataStream+MetadataStreamHeader.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MetadataStream+MetadataStreamHeader.xml
deleted file mode 100644
index 72ec411..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MetadataStream+MetadataStreamHeader.xml
+++ /dev/null
@@ -1,96 +0,0 @@
-<Type Name="MetadataStream+MetadataStreamHeader" FullName="Mono.Cecil.Metadata.MetadataStream+MetadataStreamHeader">
-  <TypeSignature Language="C#" Value="public class MetadataStream.MetadataStreamHeader : Mono.Cecil.Metadata.IMetadataVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public string Name;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Offset">
-      <MemberSignature Language="C#" Value="public uint Offset;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Size">
-      <MemberSignature Language="C#" Value="public uint Size;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Stream">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataStream Stream { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataStream</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MetadataStream.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MetadataStream.xml
deleted file mode 100644
index 2030494..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MetadataStream.xml
+++ /dev/null
@@ -1,153 +0,0 @@
-<Type Name="MetadataStream" FullName="Mono.Cecil.Metadata.MetadataStream">
-  <TypeSignature Language="C#" Value="public class MetadataStream : Mono.Cecil.Metadata.IMetadataVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Blob">
-      <MemberSignature Language="C#" Value="public const string Blob;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GUID">
-      <MemberSignature Language="C#" Value="public const string GUID;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Header">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataStream.MetadataStreamHeader Header { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataStream+MetadataStreamHeader</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Heap">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataHeap Heap { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataHeap</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IncrementalTables">
-      <MemberSignature Language="C#" Value="public const string IncrementalTables;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Strings">
-      <MemberSignature Language="C#" Value="public const string Strings;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Tables">
-      <MemberSignature Language="C#" Value="public const string Tables;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="UserStrings">
-      <MemberSignature Language="C#" Value="public const string UserStrings;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MetadataStreamCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MetadataStreamCollection.xml
deleted file mode 100644
index 569d9ca..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MetadataStreamCollection.xml
+++ /dev/null
@@ -1,229 +0,0 @@
-<Type Name="MetadataStreamCollection" FullName="Mono.Cecil.Metadata.MetadataStreamCollection">
-  <TypeSignature Language="C#" Value="public class MetadataStreamCollection : Mono.Cecil.Metadata.IMetadataVisitable, System.Collections.ICollection" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataVisitable</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>System.Collections.ICollection</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public MetadataStreamCollection ();" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="BlobHeap">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.BlobHeap BlobHeap { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.BlobHeap</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CopyTo">
-      <MemberSignature Language="C#" Value="public void CopyTo (Array ary, int index);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="ary" Type="System.Array" />
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="ary">To be added.</param>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Count">
-      <MemberSignature Language="C#" Value="public int Count { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetEnumerator">
-      <MemberSignature Language="C#" Value="public System.Collections.IEnumerator GetEnumerator ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Collections.IEnumerator</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GuidHeap">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.GuidHeap GuidHeap { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.GuidHeap</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsSynchronized">
-      <MemberSignature Language="C#" Value="public bool IsSynchronized { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataStream this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataStream</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="StringsHeap">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.StringsHeap StringsHeap { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.StringsHeap</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SyncRoot">
-      <MemberSignature Language="C#" Value="public object SyncRoot { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Object</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="TablesHeap">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.TablesHeap TablesHeap { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TablesHeap</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="UserStringsHeap">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.UserStringsHeap UserStringsHeap { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.UserStringsHeap</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MetadataToken.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MetadataToken.xml
deleted file mode 100644
index 1579f2d..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MetadataToken.xml
+++ /dev/null
@@ -1,202 +0,0 @@
-<Type Name="MetadataToken" FullName="Mono.Cecil.Metadata.MetadataToken">
-  <TypeSignature Language="C#" Value="public struct MetadataToken" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.ValueType</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public MetadataToken (int token);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="token" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="token">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public MetadataToken (Mono.Cecil.Metadata.TokenType table, uint rid);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.TokenType" />
-        <Parameter Name="rid" Type="System.UInt32" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <param name="rid">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Equals">
-      <MemberSignature Language="C#" Value="public override bool Equals (object other);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="other" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="other">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetHashCode">
-      <MemberSignature Language="C#" Value="public override int GetHashCode ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="op_Equality">
-      <MemberSignature Language="C#" Value="public static bool op_Equality (Mono.Cecil.Metadata.MetadataToken one, Mono.Cecil.Metadata.MetadataToken other);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="one" Type="Mono.Cecil.Metadata.MetadataToken" />
-        <Parameter Name="other" Type="Mono.Cecil.Metadata.MetadataToken" />
-      </Parameters>
-      <Docs>
-        <param name="one">To be added.</param>
-        <param name="other">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="op_Inequality">
-      <MemberSignature Language="C#" Value="public static bool op_Inequality (Mono.Cecil.Metadata.MetadataToken one, Mono.Cecil.Metadata.MetadataToken other);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="one" Type="Mono.Cecil.Metadata.MetadataToken" />
-        <Parameter Name="other" Type="Mono.Cecil.Metadata.MetadataToken" />
-      </Parameters>
-      <Docs>
-        <param name="one">To be added.</param>
-        <param name="other">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RID">
-      <MemberSignature Language="C#" Value="public uint RID { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="TokenType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.TokenType TokenType { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TokenType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ToString">
-      <MemberSignature Language="C#" Value="public override string ToString ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ToUInt">
-      <MemberSignature Language="C#" Value="public uint ToUInt ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Zero">
-      <MemberSignature Language="C#" Value="public static readonly Mono.Cecil.Metadata.MetadataToken Zero;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodImplRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodImplRow.xml
deleted file mode 100644
index 1d06fb4..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodImplRow.xml
+++ /dev/null
@@ -1,81 +0,0 @@
-<Type Name="MethodImplRow" FullName="Mono.Cecil.Metadata.MethodImplRow">
-  <TypeSignature Language="C#" Value="public sealed class MethodImplRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Class">
-      <MemberSignature Language="C#" Value="public uint Class;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MethodBody">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken MethodBody;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MethodDeclaration">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken MethodDeclaration;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodImplTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodImplTable.xml
deleted file mode 100644
index 9935557..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodImplTable.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="MethodImplTable" FullName="Mono.Cecil.Metadata.MethodImplTable">
-  <TypeSignature Language="C#" Value="public sealed class MethodImplTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MethodImplRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MethodImplRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 25;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>25</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodPtrRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodPtrRow.xml
deleted file mode 100644
index 89a4239..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodPtrRow.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<Type Name="MethodPtrRow" FullName="Mono.Cecil.Metadata.MethodPtrRow">
-  <TypeSignature Language="C#" Value="public sealed class MethodPtrRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Method">
-      <MemberSignature Language="C#" Value="public uint Method;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodPtrTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodPtrTable.xml
deleted file mode 100644
index 6733d7f..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodPtrTable.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="MethodPtrTable" FullName="Mono.Cecil.Metadata.MethodPtrTable">
-  <TypeSignature Language="C#" Value="public sealed class MethodPtrTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MethodPtrRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MethodPtrRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 5;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>5</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodRow.xml
deleted file mode 100644
index 613b36c..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodRow.xml
+++ /dev/null
@@ -1,123 +0,0 @@
-<Type Name="MethodRow" FullName="Mono.Cecil.Metadata.MethodRow">
-  <TypeSignature Language="C#" Value="public sealed class MethodRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Flags">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodAttributes Flags;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ImplFlags">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodImplAttributes ImplFlags;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodImplAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public uint Name;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ParamList">
-      <MemberSignature Language="C#" Value="public uint ParamList;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RVA">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.RVA RVA;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Signature">
-      <MemberSignature Language="C#" Value="public uint Signature;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodSemanticsRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodSemanticsRow.xml
deleted file mode 100644
index ac68474..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodSemanticsRow.xml
+++ /dev/null
@@ -1,81 +0,0 @@
-<Type Name="MethodSemanticsRow" FullName="Mono.Cecil.Metadata.MethodSemanticsRow">
-  <TypeSignature Language="C#" Value="public sealed class MethodSemanticsRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Association">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken Association;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Method">
-      <MemberSignature Language="C#" Value="public uint Method;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Semantics">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodSemanticsAttributes Semantics;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodSemanticsAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodSemanticsTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodSemanticsTable.xml
deleted file mode 100644
index 9730c2b..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodSemanticsTable.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="MethodSemanticsTable" FullName="Mono.Cecil.Metadata.MethodSemanticsTable">
-  <TypeSignature Language="C#" Value="public sealed class MethodSemanticsTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MethodSemanticsRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MethodSemanticsRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 24;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>24</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodSpecRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodSpecRow.xml
deleted file mode 100644
index cc2db72..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodSpecRow.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-<Type Name="MethodSpecRow" FullName="Mono.Cecil.Metadata.MethodSpecRow">
-  <TypeSignature Language="C#" Value="public sealed class MethodSpecRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Instantiation">
-      <MemberSignature Language="C#" Value="public uint Instantiation;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Method">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken Method;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodSpecTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodSpecTable.xml
deleted file mode 100644
index 9f9899b..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodSpecTable.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="MethodSpecTable" FullName="Mono.Cecil.Metadata.MethodSpecTable">
-  <TypeSignature Language="C#" Value="public sealed class MethodSpecTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MethodSpecRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MethodSpecRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 43;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>43</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodTable.xml
deleted file mode 100644
index c6a20dc..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/MethodTable.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="MethodTable" FullName="Mono.Cecil.Metadata.MethodTable">
-  <TypeSignature Language="C#" Value="public sealed class MethodTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MethodRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MethodRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 6;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>6</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ModuleRefRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ModuleRefRow.xml
deleted file mode 100644
index 305ac24..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ModuleRefRow.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<Type Name="ModuleRefRow" FullName="Mono.Cecil.Metadata.ModuleRefRow">
-  <TypeSignature Language="C#" Value="public sealed class ModuleRefRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public uint Name;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ModuleRefTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ModuleRefTable.xml
deleted file mode 100644
index bea55ba..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ModuleRefTable.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="ModuleRefTable" FullName="Mono.Cecil.Metadata.ModuleRefTable">
-  <TypeSignature Language="C#" Value="public sealed class ModuleRefTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.ModuleRefRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ModuleRefRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 26;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>26</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ModuleRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ModuleRow.xml
deleted file mode 100644
index 747953b..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ModuleRow.xml
+++ /dev/null
@@ -1,109 +0,0 @@
-<Type Name="ModuleRow" FullName="Mono.Cecil.Metadata.ModuleRow">
-  <TypeSignature Language="C#" Value="public sealed class ModuleRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="EncBaseId">
-      <MemberSignature Language="C#" Value="public uint EncBaseId;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="EncId">
-      <MemberSignature Language="C#" Value="public uint EncId;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Generation">
-      <MemberSignature Language="C#" Value="public ushort Generation;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Mvid">
-      <MemberSignature Language="C#" Value="public uint Mvid;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public uint Name;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ModuleTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ModuleTable.xml
deleted file mode 100644
index 124022e..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ModuleTable.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="ModuleTable" FullName="Mono.Cecil.Metadata.ModuleTable">
-  <TypeSignature Language="C#" Value="public sealed class ModuleTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.ModuleRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ModuleRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 0;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>0</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/NestedClassRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/NestedClassRow.xml
deleted file mode 100644
index 7f1bdf1..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/NestedClassRow.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-<Type Name="NestedClassRow" FullName="Mono.Cecil.Metadata.NestedClassRow">
-  <TypeSignature Language="C#" Value="public sealed class NestedClassRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="EnclosingClass">
-      <MemberSignature Language="C#" Value="public uint EnclosingClass;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="NestedClass">
-      <MemberSignature Language="C#" Value="public uint NestedClass;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/NestedClassTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/NestedClassTable.xml
deleted file mode 100644
index ff3bebd..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/NestedClassTable.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="NestedClassTable" FullName="Mono.Cecil.Metadata.NestedClassTable">
-  <TypeSignature Language="C#" Value="public sealed class NestedClassTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.NestedClassRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.NestedClassRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 41;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>41</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ParamPtrRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ParamPtrRow.xml
deleted file mode 100644
index 556fc6a..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ParamPtrRow.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<Type Name="ParamPtrRow" FullName="Mono.Cecil.Metadata.ParamPtrRow">
-  <TypeSignature Language="C#" Value="public sealed class ParamPtrRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Param">
-      <MemberSignature Language="C#" Value="public uint Param;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ParamPtrTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ParamPtrTable.xml
deleted file mode 100644
index 680ebe2..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ParamPtrTable.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="ParamPtrTable" FullName="Mono.Cecil.Metadata.ParamPtrTable">
-  <TypeSignature Language="C#" Value="public sealed class ParamPtrTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.ParamPtrRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ParamPtrRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 7;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>7</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ParamRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ParamRow.xml
deleted file mode 100644
index b3d52f5..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ParamRow.xml
+++ /dev/null
@@ -1,81 +0,0 @@
-<Type Name="ParamRow" FullName="Mono.Cecil.Metadata.ParamRow">
-  <TypeSignature Language="C#" Value="public sealed class ParamRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Flags">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ParameterAttributes Flags;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ParameterAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public uint Name;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Sequence">
-      <MemberSignature Language="C#" Value="public ushort Sequence;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ParamTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ParamTable.xml
deleted file mode 100644
index 62f2ea4..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/ParamTable.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="ParamTable" FullName="Mono.Cecil.Metadata.ParamTable">
-  <TypeSignature Language="C#" Value="public sealed class ParamTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.ParamRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.ParamRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 8;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>8</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/PropertyMapRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/PropertyMapRow.xml
deleted file mode 100644
index c603a05..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/PropertyMapRow.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-<Type Name="PropertyMapRow" FullName="Mono.Cecil.Metadata.PropertyMapRow">
-  <TypeSignature Language="C#" Value="public sealed class PropertyMapRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Parent">
-      <MemberSignature Language="C#" Value="public uint Parent;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PropertyList">
-      <MemberSignature Language="C#" Value="public uint PropertyList;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/PropertyMapTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/PropertyMapTable.xml
deleted file mode 100644
index 515a378..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/PropertyMapTable.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="PropertyMapTable" FullName="Mono.Cecil.Metadata.PropertyMapTable">
-  <TypeSignature Language="C#" Value="public sealed class PropertyMapTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.PropertyMapRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.PropertyMapRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 21;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>21</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/PropertyPtrRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/PropertyPtrRow.xml
deleted file mode 100644
index 539af37..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/PropertyPtrRow.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<Type Name="PropertyPtrRow" FullName="Mono.Cecil.Metadata.PropertyPtrRow">
-  <TypeSignature Language="C#" Value="public sealed class PropertyPtrRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Property">
-      <MemberSignature Language="C#" Value="public uint Property;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/PropertyPtrTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/PropertyPtrTable.xml
deleted file mode 100644
index 3c7eb80..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/PropertyPtrTable.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="PropertyPtrTable" FullName="Mono.Cecil.Metadata.PropertyPtrTable">
-  <TypeSignature Language="C#" Value="public sealed class PropertyPtrTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.PropertyPtrRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.PropertyPtrRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 22;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>22</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/PropertyRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/PropertyRow.xml
deleted file mode 100644
index db1a4e9..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/PropertyRow.xml
+++ /dev/null
@@ -1,81 +0,0 @@
-<Type Name="PropertyRow" FullName="Mono.Cecil.Metadata.PropertyRow">
-  <TypeSignature Language="C#" Value="public sealed class PropertyRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Flags">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.PropertyAttributes Flags;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PropertyAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public uint Name;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Type">
-      <MemberSignature Language="C#" Value="public uint Type;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/PropertyTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/PropertyTable.xml
deleted file mode 100644
index 233921a..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/PropertyTable.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="PropertyTable" FullName="Mono.Cecil.Metadata.PropertyTable">
-  <TypeSignature Language="C#" Value="public sealed class PropertyTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.PropertyRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.PropertyRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 23;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>23</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/RowCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/RowCollection.xml
deleted file mode 100644
index 1dc1ebb..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/RowCollection.xml
+++ /dev/null
@@ -1,269 +0,0 @@
-<Type Name="RowCollection" FullName="Mono.Cecil.Metadata.RowCollection">
-  <TypeSignature Language="C#" Value="public class RowCollection : Mono.Cecil.Metadata.IMetadataRowVisitable, System.Collections.ICollection" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRowVisitable</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>System.Collections.ICollection</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Clear">
-      <MemberSignature Language="C#" Value="public void Clear ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.Metadata.IMetadataRow value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.Metadata.IMetadataRow" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CopyTo">
-      <MemberSignature Language="C#" Value="public void CopyTo (Array ary, int index);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="ary" Type="System.Array" />
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="ary">To be added.</param>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Count">
-      <MemberSignature Language="C#" Value="public int Count { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetEnumerator">
-      <MemberSignature Language="C#" Value="public System.Collections.IEnumerator GetEnumerator ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Collections.IEnumerator</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.Metadata.IMetadataRow value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.Metadata.IMetadataRow" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Insert">
-      <MemberSignature Language="C#" Value="public void Insert (int index, Mono.Cecil.Metadata.IMetadataRow value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="value" Type="Mono.Cecil.Metadata.IMetadataRow" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsSynchronized">
-      <MemberSignature Language="C#" Value="public bool IsSynchronized { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.IMetadataRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.IMetadataRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.Metadata.IMetadataRow value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.Metadata.IMetadataRow" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RemoveAt">
-      <MemberSignature Language="C#" Value="public void RemoveAt (int index);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Sort">
-      <MemberSignature Language="C#" Value="public void Sort (System.Collections.IComparer comp);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="comp" Type="System.Collections.IComparer" />
-      </Parameters>
-      <Docs>
-        <param name="comp">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SyncRoot">
-      <MemberSignature Language="C#" Value="public object SyncRoot { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Object</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/StandAloneSigRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/StandAloneSigRow.xml
deleted file mode 100644
index 93b5ec4..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/StandAloneSigRow.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<Type Name="StandAloneSigRow" FullName="Mono.Cecil.Metadata.StandAloneSigRow">
-  <TypeSignature Language="C#" Value="public sealed class StandAloneSigRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Signature">
-      <MemberSignature Language="C#" Value="public uint Signature;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/StandAloneSigTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/StandAloneSigTable.xml
deleted file mode 100644
index 3241362..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/StandAloneSigTable.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="StandAloneSigTable" FullName="Mono.Cecil.Metadata.StandAloneSigTable">
-  <TypeSignature Language="C#" Value="public sealed class StandAloneSigTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.StandAloneSigRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.StandAloneSigRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 17;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>17</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/StringsHeap.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/StringsHeap.xml
deleted file mode 100644
index e01e35a..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/StringsHeap.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<Type Name="StringsHeap" FullName="Mono.Cecil.Metadata.StringsHeap">
-  <TypeSignature Language="C#" Value="public class StringsHeap : Mono.Cecil.Metadata.MetadataHeap" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.Metadata.MetadataHeap</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public override void Accept (Mono.Cecil.Metadata.IMetadataVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public string this[uint index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.UInt32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TableCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TableCollection.xml
deleted file mode 100644
index b240822..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TableCollection.xml
+++ /dev/null
@@ -1,176 +0,0 @@
-<Type Name="TableCollection" FullName="Mono.Cecil.Metadata.TableCollection">
-  <TypeSignature Language="C#" Value="public class TableCollection : Mono.Cecil.Metadata.IMetadataTableVisitable, System.Collections.ICollection" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTableVisitable</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>System.Collections.ICollection</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.Metadata.IMetadataTable value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.Metadata.IMetadataTable" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CopyTo">
-      <MemberSignature Language="C#" Value="public void CopyTo (Array array, int index);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="array" Type="System.Array" />
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="array">To be added.</param>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Count">
-      <MemberSignature Language="C#" Value="public int Count { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetEnumerator">
-      <MemberSignature Language="C#" Value="public System.Collections.IEnumerator GetEnumerator ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Collections.IEnumerator</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Heap">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.TablesHeap Heap { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TablesHeap</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsSynchronized">
-      <MemberSignature Language="C#" Value="public bool IsSynchronized { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.IMetadataTable this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.IMetadataTable</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SyncRoot">
-      <MemberSignature Language="C#" Value="public object SyncRoot { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Object</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TablesHeap.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TablesHeap.xml
deleted file mode 100644
index 1a3a5af..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TablesHeap.xml
+++ /dev/null
@@ -1,201 +0,0 @@
-<Type Name="TablesHeap" FullName="Mono.Cecil.Metadata.TablesHeap">
-  <TypeSignature Language="C#" Value="public class TablesHeap : Mono.Cecil.Metadata.MetadataHeap" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.Metadata.MetadataHeap</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public override void Accept (Mono.Cecil.Metadata.IMetadataVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasTable">
-      <MemberSignature Language="C#" Value="public bool HasTable (int id);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="id" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="id">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HeapSizes">
-      <MemberSignature Language="C#" Value="public byte HeapSizes;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.IMetadataTable this[int id] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.IMetadataTable</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="id" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="id">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MajorVersion">
-      <MemberSignature Language="C#" Value="public byte MajorVersion;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MaxTableCount">
-      <MemberSignature Language="C#" Value="public const int MaxTableCount = 45;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>45</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MinorVersion">
-      <MemberSignature Language="C#" Value="public byte MinorVersion;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Reserved">
-      <MemberSignature Language="C#" Value="public uint Reserved;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Reserved2">
-      <MemberSignature Language="C#" Value="public byte Reserved2;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Sorted">
-      <MemberSignature Language="C#" Value="public long Sorted;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int64</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Tables">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.TableCollection Tables { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TableCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Valid">
-      <MemberSignature Language="C#" Value="public long Valid;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int64</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TokenType.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TokenType.xml
deleted file mode 100644
index 6466920..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TokenType.xml
+++ /dev/null
@@ -1,341 +0,0 @@
-<Type Name="TokenType" FullName="Mono.Cecil.Metadata.TokenType">
-  <TypeSignature Language="C#" Value="public enum TokenType" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Assembly">
-      <MemberSignature Language="C#" Value="Assembly" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TokenType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="AssemblyRef">
-      <MemberSignature Language="C#" Value="AssemblyRef" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TokenType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="BaseType">
-      <MemberSignature Language="C#" Value="BaseType" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TokenType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="CustomAttribute">
-      <MemberSignature Language="C#" Value="CustomAttribute" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TokenType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Event">
-      <MemberSignature Language="C#" Value="Event" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TokenType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ExportedType">
-      <MemberSignature Language="C#" Value="ExportedType" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TokenType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Field">
-      <MemberSignature Language="C#" Value="Field" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TokenType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="File">
-      <MemberSignature Language="C#" Value="File" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TokenType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="GenericParam">
-      <MemberSignature Language="C#" Value="GenericParam" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TokenType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="InterfaceImpl">
-      <MemberSignature Language="C#" Value="InterfaceImpl" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TokenType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ManifestResource">
-      <MemberSignature Language="C#" Value="ManifestResource" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TokenType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="MemberRef">
-      <MemberSignature Language="C#" Value="MemberRef" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TokenType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Method">
-      <MemberSignature Language="C#" Value="Method" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TokenType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="MethodSpec">
-      <MemberSignature Language="C#" Value="MethodSpec" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TokenType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Module">
-      <MemberSignature Language="C#" Value="Module" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TokenType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ModuleRef">
-      <MemberSignature Language="C#" Value="ModuleRef" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TokenType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="Name" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TokenType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Param">
-      <MemberSignature Language="C#" Value="Param" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TokenType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Permission">
-      <MemberSignature Language="C#" Value="Permission" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TokenType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Property">
-      <MemberSignature Language="C#" Value="Property" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TokenType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Signature">
-      <MemberSignature Language="C#" Value="Signature" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TokenType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="String">
-      <MemberSignature Language="C#" Value="String" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TokenType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="TypeDef">
-      <MemberSignature Language="C#" Value="TypeDef" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TokenType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="TypeRef">
-      <MemberSignature Language="C#" Value="TypeRef" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TokenType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="TypeSpec">
-      <MemberSignature Language="C#" Value="TypeSpec" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TokenType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TypeDefRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TypeDefRow.xml
deleted file mode 100644
index f8a494d..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TypeDefRow.xml
+++ /dev/null
@@ -1,123 +0,0 @@
-<Type Name="TypeDefRow" FullName="Mono.Cecil.Metadata.TypeDefRow">
-  <TypeSignature Language="C#" Value="public sealed class TypeDefRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Extends">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken Extends;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="FieldList">
-      <MemberSignature Language="C#" Value="public uint FieldList;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Flags">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeAttributes Flags;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MethodList">
-      <MemberSignature Language="C#" Value="public uint MethodList;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public uint Name;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Namespace">
-      <MemberSignature Language="C#" Value="public uint Namespace;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TypeDefTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TypeDefTable.xml
deleted file mode 100644
index f4eb04b..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TypeDefTable.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="TypeDefTable" FullName="Mono.Cecil.Metadata.TypeDefTable">
-  <TypeSignature Language="C#" Value="public sealed class TypeDefTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.TypeDefRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TypeDefRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 2;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>2</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TypeRefRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TypeRefRow.xml
deleted file mode 100644
index f55662e..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TypeRefRow.xml
+++ /dev/null
@@ -1,81 +0,0 @@
-<Type Name="TypeRefRow" FullName="Mono.Cecil.Metadata.TypeRefRow">
-  <TypeSignature Language="C#" Value="public sealed class TypeRefRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public uint Name;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Namespace">
-      <MemberSignature Language="C#" Value="public uint Namespace;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ResolutionScope">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken ResolutionScope;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TypeRefTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TypeRefTable.xml
deleted file mode 100644
index 4b55e0e..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TypeRefTable.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="TypeRefTable" FullName="Mono.Cecil.Metadata.TypeRefTable">
-  <TypeSignature Language="C#" Value="public sealed class TypeRefTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.TypeRefRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TypeRefRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 1;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>1</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TypeSpecRow.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TypeSpecRow.xml
deleted file mode 100644
index 17f7fad..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TypeSpecRow.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<Type Name="TypeSpecRow" FullName="Mono.Cecil.Metadata.TypeSpecRow">
-  <TypeSignature Language="C#" Value="public sealed class TypeSpecRow : Mono.Cecil.Metadata.IMetadataRow" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataRow</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataRowVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataRowVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Signature">
-      <MemberSignature Language="C#" Value="public uint Signature;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TypeSpecTable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TypeSpecTable.xml
deleted file mode 100644
index 975d7dd..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/TypeSpecTable.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<Type Name="TypeSpecTable" FullName="Mono.Cecil.Metadata.TypeSpecTable">
-  <TypeSignature Language="C#" Value="public sealed class TypeSpecTable : Mono.Cecil.Metadata.IMetadataTable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.Metadata.IMetadataTable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.Metadata.IMetadataTableVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataTableVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Id">
-      <MemberSignature Language="C#" Value="public int Id { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.TypeSpecRow this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.TypeSpecRow</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RId">
-      <MemberSignature Language="C#" Value="public const int RId = 27;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <MemberValue>27</MemberValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rows">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.RowCollection Rows { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.RowCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/UserStringsHeap.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/UserStringsHeap.xml
deleted file mode 100644
index 2c3af89..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil.Metadata/UserStringsHeap.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<Type Name="UserStringsHeap" FullName="Mono.Cecil.Metadata.UserStringsHeap">
-  <TypeSignature Language="C#" Value="public class UserStringsHeap : Mono.Cecil.Metadata.MetadataHeap" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.Metadata.MetadataHeap</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public override void Accept (Mono.Cecil.Metadata.IMetadataVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.Metadata.IMetadataVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public string this[uint offset] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="offset" Type="System.UInt32" />
-      </Parameters>
-      <Docs>
-        <param name="offset">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ArrayDimension.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ArrayDimension.xml
deleted file mode 100644
index c9829a2..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ArrayDimension.xml
+++ /dev/null
@@ -1,80 +0,0 @@
-<Type Name="ArrayDimension" FullName="Mono.Cecil.ArrayDimension">
-  <TypeSignature Language="C#" Value="public sealed class ArrayDimension" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ArrayDimension (int lb, int ub);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="lb" Type="System.Int32" />
-        <Parameter Name="ub" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="lb">To be added.</param>
-        <param name="ub">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="LowerBound">
-      <MemberSignature Language="C#" Value="public int LowerBound { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ToString">
-      <MemberSignature Language="C#" Value="public override string ToString ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="UpperBound">
-      <MemberSignature Language="C#" Value="public int UpperBound { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ArrayDimensionCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ArrayDimensionCollection.xml
deleted file mode 100644
index 8fd51bb..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ArrayDimensionCollection.xml
+++ /dev/null
@@ -1,178 +0,0 @@
-<Type Name="ArrayDimensionCollection" FullName="Mono.Cecil.ArrayDimensionCollection">
-  <TypeSignature Language="C#" Value="public sealed class ArrayDimensionCollection : System.Collections.CollectionBase" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ArrayDimensionCollection (Mono.Cecil.ArrayType container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.ArrayType" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Mono.Cecil.ArrayDimension value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.ArrayDimension" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ArrayType Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ArrayType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.ArrayDimension value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.ArrayDimension" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.ArrayDimension value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.ArrayDimension" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Insert">
-      <MemberSignature Language="C#" Value="public void Insert (int index, Mono.Cecil.ArrayDimension value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="value" Type="Mono.Cecil.ArrayDimension" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ArrayDimension this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ArrayDimension</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OnValidate">
-      <MemberSignature Language="C#" Value="protected override void OnValidate (object o);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="o" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="o">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.ArrayDimension value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.ArrayDimension" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ArrayMarshalSpec.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ArrayMarshalSpec.xml
deleted file mode 100644
index 6e4d7bc..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ArrayMarshalSpec.xml
+++ /dev/null
@@ -1,111 +0,0 @@
-<Type Name="ArrayMarshalSpec" FullName="Mono.Cecil.ArrayMarshalSpec">
-  <TypeSignature Language="C#" Value="public sealed class ArrayMarshalSpec : Mono.Cecil.MarshalSpec" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.MarshalSpec</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ArrayMarshalSpec (Mono.Cecil.IHasMarshalSpec container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.IHasMarshalSpec" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CloneInto">
-      <MemberSignature Language="C#" Value="public override Mono.Cecil.MarshalSpec CloneInto (Mono.Cecil.IHasMarshalSpec container);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MarshalSpec</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.IHasMarshalSpec" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ElemMult">
-      <MemberSignature Language="C#" Value="public int ElemMult { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ElemType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.NativeType ElemType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="NumElem">
-      <MemberSignature Language="C#" Value="public int NumElem { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ParamNum">
-      <MemberSignature Language="C#" Value="public int ParamNum { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ArrayType.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ArrayType.xml
deleted file mode 100644
index 35986b6..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ArrayType.xml
+++ /dev/null
@@ -1,124 +0,0 @@
-<Type Name="ArrayType" FullName="Mono.Cecil.ArrayType">
-  <TypeSignature Language="C#" Value="public sealed class ArrayType : Mono.Cecil.TypeSpecification" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.TypeSpecification</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ArrayType (Mono.Cecil.TypeReference elementType);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="elementType" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="elementType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ArrayType (Mono.Cecil.TypeReference elementType, int rank);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="elementType" Type="Mono.Cecil.TypeReference" />
-        <Parameter Name="rank" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="elementType">To be added.</param>
-        <param name="rank">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Dimensions">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ArrayDimensionCollection Dimensions { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ArrayDimensionCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="FullName">
-      <MemberSignature Language="C#" Value="public override string FullName { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsSizedArray">
-      <MemberSignature Language="C#" Value="public bool IsSizedArray { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public override string Name { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rank">
-      <MemberSignature Language="C#" Value="public int Rank { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyDefinition.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyDefinition.xml
deleted file mode 100644
index 62e5124..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyDefinition.xml
+++ /dev/null
@@ -1,259 +0,0 @@
-<Type Name="AssemblyDefinition" FullName="Mono.Cecil.AssemblyDefinition">
-  <TypeSignature Language="C#" Value="public class AssemblyDefinition : Mono.Cecil.IAnnotationProvider, Mono.Cecil.ICustomAttributeProvider, Mono.Cecil.IHasSecurity, Mono.Cecil.IReflectionStructureVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IAnnotationProvider</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.ICustomAttributeProvider</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IHasSecurity</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionStructureVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionStructureVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionStructureVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CustomAttributes">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.CustomAttributeCollection CustomAttributes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.CustomAttributeCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="EntryPoint">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodDefinition EntryPoint { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasCustomAttributes">
-      <MemberSignature Language="C#" Value="public bool HasCustomAttributes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasSecurityDeclarations">
-      <MemberSignature Language="C#" Value="public bool HasSecurityDeclarations { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Kind">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.AssemblyKind Kind { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyKind</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MainModule">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ModuleDefinition MainModule { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ModuleDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MetadataToken">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken MetadataToken { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Modules">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ModuleDefinitionCollection Modules { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ModuleDefinitionCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Mono.Cecil.IAnnotationProvider.Annotations">
-      <MemberSignature Language="C#" Value="System.Collections.IDictionary Mono.Cecil.IAnnotationProvider.Annotations { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Collections.IDictionary</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.AssemblyNameDefinition Name { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyNameDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resolver">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.IAssemblyResolver Resolver { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.IAssemblyResolver</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Runtime">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TargetRuntime Runtime { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TargetRuntime</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SecurityDeclarations">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.SecurityDeclarationCollection SecurityDeclarations { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.SecurityDeclarationCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ToString">
-      <MemberSignature Language="C#" Value="public override string ToString ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyFactory.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyFactory.xml
deleted file mode 100644
index 4626eb9..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyFactory.xml
+++ /dev/null
@@ -1,300 +0,0 @@
-<Type Name="AssemblyFactory" FullName="Mono.Cecil.AssemblyFactory">
-  <TypeSignature Language="C#" Value="public sealed class AssemblyFactory" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="CreateReflectionAssembly">
-      <MemberSignature Language="C#" Value="public static System.Reflection.Assembly CreateReflectionAssembly (Mono.Cecil.AssemblyDefinition asm);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Reflection.Assembly</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="asm" Type="Mono.Cecil.AssemblyDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="asm">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CreateReflectionAssembly">
-      <MemberSignature Language="C#" Value="public static System.Reflection.Assembly CreateReflectionAssembly (Mono.Cecil.AssemblyDefinition asm, AppDomain domain);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Reflection.Assembly</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="asm" Type="Mono.Cecil.AssemblyDefinition" />
-        <Parameter Name="domain" Type="System.AppDomain" />
-      </Parameters>
-      <Docs>
-        <param name="asm">To be added.</param>
-        <param name="domain">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="DefineAssembly">
-      <MemberSignature Language="C#" Value="public static Mono.Cecil.AssemblyDefinition DefineAssembly (string name, Mono.Cecil.AssemblyKind kind);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="kind" Type="Mono.Cecil.AssemblyKind" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="kind">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="DefineAssembly">
-      <MemberSignature Language="C#" Value="public static Mono.Cecil.AssemblyDefinition DefineAssembly (string name, Mono.Cecil.TargetRuntime rt, Mono.Cecil.AssemblyKind kind);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="rt" Type="Mono.Cecil.TargetRuntime" />
-        <Parameter Name="kind" Type="Mono.Cecil.AssemblyKind" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="rt">To be added.</param>
-        <param name="kind">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="DefineAssembly">
-      <MemberSignature Language="C#" Value="public static Mono.Cecil.AssemblyDefinition DefineAssembly (string assemblyName, string moduleName, Mono.Cecil.TargetRuntime rt, Mono.Cecil.AssemblyKind kind);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="assemblyName" Type="System.String" />
-        <Parameter Name="moduleName" Type="System.String" />
-        <Parameter Name="rt" Type="Mono.Cecil.TargetRuntime" />
-        <Parameter Name="kind" Type="Mono.Cecil.AssemblyKind" />
-      </Parameters>
-      <Docs>
-        <param name="assemblyName">To be added.</param>
-        <param name="moduleName">To be added.</param>
-        <param name="rt">To be added.</param>
-        <param name="kind">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetAssembly">
-      <MemberSignature Language="C#" Value="public static Mono.Cecil.AssemblyDefinition GetAssembly (byte[] assembly);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="assembly" Type="System.Byte[]" />
-      </Parameters>
-      <Docs>
-        <param name="assembly">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetAssembly">
-      <MemberSignature Language="C#" Value="public static Mono.Cecil.AssemblyDefinition GetAssembly (System.IO.Stream stream);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="stream" Type="System.IO.Stream" />
-      </Parameters>
-      <Docs>
-        <param name="stream">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetAssembly">
-      <MemberSignature Language="C#" Value="public static Mono.Cecil.AssemblyDefinition GetAssembly (string file);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="file" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="file">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetAssemblyManifest">
-      <MemberSignature Language="C#" Value="public static Mono.Cecil.AssemblyDefinition GetAssemblyManifest (byte[] assembly);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="assembly" Type="System.Byte[]" />
-      </Parameters>
-      <Docs>
-        <param name="assembly">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetAssemblyManifest">
-      <MemberSignature Language="C#" Value="public static Mono.Cecil.AssemblyDefinition GetAssemblyManifest (System.IO.Stream stream);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="stream" Type="System.IO.Stream" />
-      </Parameters>
-      <Docs>
-        <param name="stream">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetAssemblyManifest">
-      <MemberSignature Language="C#" Value="public static Mono.Cecil.AssemblyDefinition GetAssemblyManifest (string file);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="file" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="file">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SaveAssembly">
-      <MemberSignature Language="C#" Value="public static void SaveAssembly (Mono.Cecil.AssemblyDefinition asm, out byte[] assembly);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="asm" Type="Mono.Cecil.AssemblyDefinition" />
-        <Parameter Name="assembly" Type="System.Byte[]&" RefType="out" />
-      </Parameters>
-      <Docs>
-        <param name="asm">To be added.</param>
-        <param name="assembly">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SaveAssembly">
-      <MemberSignature Language="C#" Value="public static void SaveAssembly (Mono.Cecil.AssemblyDefinition asm, System.IO.Stream stream);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="asm" Type="Mono.Cecil.AssemblyDefinition" />
-        <Parameter Name="stream" Type="System.IO.Stream" />
-      </Parameters>
-      <Docs>
-        <param name="asm">To be added.</param>
-        <param name="stream">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SaveAssembly">
-      <MemberSignature Language="C#" Value="public static void SaveAssembly (Mono.Cecil.AssemblyDefinition asm, string file);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="asm" Type="Mono.Cecil.AssemblyDefinition" />
-        <Parameter Name="file" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="asm">To be added.</param>
-        <param name="file">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyFlags.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyFlags.xml
deleted file mode 100644
index 3d85a0a..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyFlags.xml
+++ /dev/null
@@ -1,86 +0,0 @@
-<Type Name="AssemblyFlags" FullName="Mono.Cecil.AssemblyFlags">
-  <TypeSignature Language="C#" Value="public enum AssemblyFlags" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Attributes>
-    <Attribute>
-      <AttributeName>System.Flags</AttributeName>
-    </Attribute>
-  </Attributes>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="DisableJITcompileOptimizer">
-      <MemberSignature Language="C#" Value="DisableJITcompileOptimizer" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyFlags</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="EnableJITcompileTracking">
-      <MemberSignature Language="C#" Value="EnableJITcompileTracking" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyFlags</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="PublicKey">
-      <MemberSignature Language="C#" Value="PublicKey" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyFlags</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Retargetable">
-      <MemberSignature Language="C#" Value="Retargetable" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyFlags</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="SideBySideCompatible">
-      <MemberSignature Language="C#" Value="SideBySideCompatible" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyFlags</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyHashAlgorithm.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyHashAlgorithm.xml
deleted file mode 100644
index e379ac1..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyHashAlgorithm.xml
+++ /dev/null
@@ -1,55 +0,0 @@
-<Type Name="AssemblyHashAlgorithm" FullName="Mono.Cecil.AssemblyHashAlgorithm">
-  <TypeSignature Language="C#" Value="public enum AssemblyHashAlgorithm" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="None">
-      <MemberSignature Language="C#" Value="None" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyHashAlgorithm</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Reserved">
-      <MemberSignature Language="C#" Value="Reserved" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyHashAlgorithm</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="SHA1">
-      <MemberSignature Language="C#" Value="SHA1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyHashAlgorithm</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyKind.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyKind.xml
deleted file mode 100644
index e5386d2..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyKind.xml
+++ /dev/null
@@ -1,55 +0,0 @@
-<Type Name="AssemblyKind" FullName="Mono.Cecil.AssemblyKind">
-  <TypeSignature Language="C#" Value="public enum AssemblyKind" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Console">
-      <MemberSignature Language="C#" Value="Console" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyKind</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Dll">
-      <MemberSignature Language="C#" Value="Dll" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyKind</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Windows">
-      <MemberSignature Language="C#" Value="Windows" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyKind</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyLinkedResource.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyLinkedResource.xml
deleted file mode 100644
index cb9d46f..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyLinkedResource.xml
+++ /dev/null
@@ -1,69 +0,0 @@
-<Type Name="AssemblyLinkedResource" FullName="Mono.Cecil.AssemblyLinkedResource">
-  <TypeSignature Language="C#" Value="public sealed class AssemblyLinkedResource : Mono.Cecil.Resource" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.Resource</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public AssemblyLinkedResource (string name, Mono.Cecil.ManifestResourceAttributes flags, Mono.Cecil.AssemblyNameReference asmRef);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="flags" Type="Mono.Cecil.ManifestResourceAttributes" />
-        <Parameter Name="asmRef" Type="Mono.Cecil.AssemblyNameReference" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="flags">To be added.</param>
-        <param name="asmRef">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public override void Accept (Mono.Cecil.IReflectionStructureVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionStructureVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Assembly">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.AssemblyNameReference Assembly { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyNameReference</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyNameDefinition.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyNameDefinition.xml
deleted file mode 100644
index 0d62caa..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyNameDefinition.xml
+++ /dev/null
@@ -1,81 +0,0 @@
-<Type Name="AssemblyNameDefinition" FullName="Mono.Cecil.AssemblyNameDefinition">
-  <TypeSignature Language="C#" Value="public sealed class AssemblyNameDefinition : Mono.Cecil.AssemblyNameReference" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.AssemblyNameReference</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public AssemblyNameDefinition ();" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public AssemblyNameDefinition (string name, string culture, Version version);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="culture" Type="System.String" />
-        <Parameter Name="version" Type="System.Version" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="culture">To be added.</param>
-        <param name="version">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public override void Accept (Mono.Cecil.IReflectionStructureVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionStructureVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Hash">
-      <MemberSignature Language="C#" Value="public override byte[] Hash { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte[]</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyNameReference.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyNameReference.xml
deleted file mode 100644
index 330c9c7..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyNameReference.xml
+++ /dev/null
@@ -1,321 +0,0 @@
-<Type Name="AssemblyNameReference" FullName="Mono.Cecil.AssemblyNameReference">
-  <TypeSignature Language="C#" Value="public class AssemblyNameReference : Mono.Cecil.IAnnotationProvider, Mono.Cecil.IMetadataScope, Mono.Cecil.IReflectionStructureVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IAnnotationProvider</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IMetadataScope</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionStructureVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public AssemblyNameReference ();" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public AssemblyNameReference (string name, string culture, Version version);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="culture" Type="System.String" />
-        <Parameter Name="version" Type="System.Version" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="culture">To be added.</param>
-        <param name="version">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public virtual void Accept (Mono.Cecil.IReflectionStructureVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionStructureVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Culture">
-      <MemberSignature Language="C#" Value="public string Culture { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Flags">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.AssemblyFlags Flags { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyFlags</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="FullName">
-      <MemberSignature Language="C#" Value="public string FullName { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Hash">
-      <MemberSignature Language="C#" Value="public virtual byte[] Hash { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte[]</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HashAlgorithm">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.AssemblyHashAlgorithm HashAlgorithm { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyHashAlgorithm</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasPublicKey">
-      <MemberSignature Language="C#" Value="public bool HasPublicKey { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsRetargetable">
-      <MemberSignature Language="C#" Value="public bool IsRetargetable { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsSideBySideCompatible">
-      <MemberSignature Language="C#" Value="public bool IsSideBySideCompatible { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MetadataToken">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken MetadataToken { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Mono.Cecil.IAnnotationProvider.Annotations">
-      <MemberSignature Language="C#" Value="System.Collections.IDictionary Mono.Cecil.IAnnotationProvider.Annotations { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Collections.IDictionary</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public string Name { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Parse">
-      <MemberSignature Language="C#" Value="public static Mono.Cecil.AssemblyNameReference Parse (string fullName);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyNameReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="fullName" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="fullName">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PublicKey">
-      <MemberSignature Language="C#" Value="public byte[] PublicKey { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte[]</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PublicKeyToken">
-      <MemberSignature Language="C#" Value="public byte[] PublicKeyToken { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte[]</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ToString">
-      <MemberSignature Language="C#" Value="public override string ToString ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Version">
-      <MemberSignature Language="C#" Value="public Version Version { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Version</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyNameReferenceCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyNameReferenceCollection.xml
deleted file mode 100644
index 56d1fdc..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/AssemblyNameReferenceCollection.xml
+++ /dev/null
@@ -1,200 +0,0 @@
-<Type Name="AssemblyNameReferenceCollection" FullName="Mono.Cecil.AssemblyNameReferenceCollection">
-  <TypeSignature Language="C#" Value="public sealed class AssemblyNameReferenceCollection : System.Collections.CollectionBase, Mono.Cecil.IReflectionStructureVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionStructureVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public AssemblyNameReferenceCollection (Mono.Cecil.ModuleDefinition container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.ModuleDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionStructureVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionStructureVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Mono.Cecil.AssemblyNameReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.AssemblyNameReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ModuleDefinition Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ModuleDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.AssemblyNameReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.AssemblyNameReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.AssemblyNameReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.AssemblyNameReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Insert">
-      <MemberSignature Language="C#" Value="public void Insert (int index, Mono.Cecil.AssemblyNameReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="value" Type="Mono.Cecil.AssemblyNameReference" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.AssemblyNameReference this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyNameReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OnValidate">
-      <MemberSignature Language="C#" Value="protected override void OnValidate (object o);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="o" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="o">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.AssemblyNameReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.AssemblyNameReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/BaseAssemblyResolver.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/BaseAssemblyResolver.xml
deleted file mode 100644
index 049045e..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/BaseAssemblyResolver.xml
+++ /dev/null
@@ -1,139 +0,0 @@
-<Type Name="BaseAssemblyResolver" FullName="Mono.Cecil.BaseAssemblyResolver">
-  <TypeSignature Language="C#" Value="public abstract class BaseAssemblyResolver : Mono.Cecil.IAssemblyResolver" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IAssemblyResolver</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public BaseAssemblyResolver ();" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="AddSearchDirectory">
-      <MemberSignature Language="C#" Value="public void AddSearchDirectory (string directory);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="directory" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="directory">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetSearchDirectories">
-      <MemberSignature Language="C#" Value="public string[] GetSearchDirectories ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String[]</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OnMono">
-      <MemberSignature Language="C#" Value="public static bool OnMono ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RemoveSearchDirectory">
-      <MemberSignature Language="C#" Value="public void RemoveSearchDirectory (string directory);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="directory" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="directory">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resolve">
-      <MemberSignature Language="C#" Value="public virtual Mono.Cecil.AssemblyDefinition Resolve (Mono.Cecil.AssemblyNameReference name);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="name" Type="Mono.Cecil.AssemblyNameReference" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resolve">
-      <MemberSignature Language="C#" Value="public virtual Mono.Cecil.AssemblyDefinition Resolve (string fullName);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="fullName" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="fullName">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/BaseReflectionVisitor.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/BaseReflectionVisitor.xml
deleted file mode 100644
index d954541..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/BaseReflectionVisitor.xml
+++ /dev/null
@@ -1,699 +0,0 @@
-<Type Name="BaseReflectionVisitor" FullName="Mono.Cecil.BaseReflectionVisitor">
-  <TypeSignature Language="C#" Value="public abstract class BaseReflectionVisitor : Mono.Cecil.IReflectionVisitor" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionVisitor</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="protected BaseReflectionVisitor ();" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="TerminateModuleDefinition">
-      <MemberSignature Language="C#" Value="public virtual void TerminateModuleDefinition (Mono.Cecil.ModuleDefinition module);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="module" Type="Mono.Cecil.ModuleDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="module">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitCollection">
-      <MemberSignature Language="C#" Value="protected void VisitCollection (System.Collections.ICollection coll);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="coll" Type="System.Collections.ICollection" />
-      </Parameters>
-      <Docs>
-        <param name="coll">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitConstructor">
-      <MemberSignature Language="C#" Value="public virtual void VisitConstructor (Mono.Cecil.MethodDefinition ctor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="ctor" Type="Mono.Cecil.MethodDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="ctor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitConstructorCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitConstructorCollection (Mono.Cecil.ConstructorCollection ctors);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="ctors" Type="Mono.Cecil.ConstructorCollection" />
-      </Parameters>
-      <Docs>
-        <param name="ctors">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitCustomAttribute">
-      <MemberSignature Language="C#" Value="public virtual void VisitCustomAttribute (Mono.Cecil.CustomAttribute customAttr);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="customAttr" Type="Mono.Cecil.CustomAttribute" />
-      </Parameters>
-      <Docs>
-        <param name="customAttr">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitCustomAttributeCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitCustomAttributeCollection (Mono.Cecil.CustomAttributeCollection customAttrs);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="customAttrs" Type="Mono.Cecil.CustomAttributeCollection" />
-      </Parameters>
-      <Docs>
-        <param name="customAttrs">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitEventDefinition">
-      <MemberSignature Language="C#" Value="public virtual void VisitEventDefinition (Mono.Cecil.EventDefinition evt);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="evt" Type="Mono.Cecil.EventDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="evt">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitEventDefinitionCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitEventDefinitionCollection (Mono.Cecil.EventDefinitionCollection events);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="events" Type="Mono.Cecil.EventDefinitionCollection" />
-      </Parameters>
-      <Docs>
-        <param name="events">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitExternType">
-      <MemberSignature Language="C#" Value="public virtual void VisitExternType (Mono.Cecil.TypeReference externType);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="externType" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="externType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitExternTypeCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitExternTypeCollection (Mono.Cecil.ExternTypeCollection externs);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="externs" Type="Mono.Cecil.ExternTypeCollection" />
-      </Parameters>
-      <Docs>
-        <param name="externs">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFieldDefinition">
-      <MemberSignature Language="C#" Value="public virtual void VisitFieldDefinition (Mono.Cecil.FieldDefinition field);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="field" Type="Mono.Cecil.FieldDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="field">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFieldDefinitionCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitFieldDefinitionCollection (Mono.Cecil.FieldDefinitionCollection fields);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="fields" Type="Mono.Cecil.FieldDefinitionCollection" />
-      </Parameters>
-      <Docs>
-        <param name="fields">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitGenericParameter">
-      <MemberSignature Language="C#" Value="public virtual void VisitGenericParameter (Mono.Cecil.GenericParameter genparam);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="genparam" Type="Mono.Cecil.GenericParameter" />
-      </Parameters>
-      <Docs>
-        <param name="genparam">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitGenericParameterCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitGenericParameterCollection (Mono.Cecil.GenericParameterCollection genparams);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="genparams" Type="Mono.Cecil.GenericParameterCollection" />
-      </Parameters>
-      <Docs>
-        <param name="genparams">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitInterface">
-      <MemberSignature Language="C#" Value="public virtual void VisitInterface (Mono.Cecil.TypeReference interf);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="interf" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="interf">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitInterfaceCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitInterfaceCollection (Mono.Cecil.InterfaceCollection interfaces);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="interfaces" Type="Mono.Cecil.InterfaceCollection" />
-      </Parameters>
-      <Docs>
-        <param name="interfaces">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMarshalSpec">
-      <MemberSignature Language="C#" Value="public virtual void VisitMarshalSpec (Mono.Cecil.MarshalSpec marshalSpec);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="marshalSpec" Type="Mono.Cecil.MarshalSpec" />
-      </Parameters>
-      <Docs>
-        <param name="marshalSpec">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMemberReference">
-      <MemberSignature Language="C#" Value="public virtual void VisitMemberReference (Mono.Cecil.MemberReference member);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="member" Type="Mono.Cecil.MemberReference" />
-      </Parameters>
-      <Docs>
-        <param name="member">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMemberReferenceCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitMemberReferenceCollection (Mono.Cecil.MemberReferenceCollection members);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="members" Type="Mono.Cecil.MemberReferenceCollection" />
-      </Parameters>
-      <Docs>
-        <param name="members">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMethodDefinition">
-      <MemberSignature Language="C#" Value="public virtual void VisitMethodDefinition (Mono.Cecil.MethodDefinition method);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="method" Type="Mono.Cecil.MethodDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="method">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMethodDefinitionCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitMethodDefinitionCollection (Mono.Cecil.MethodDefinitionCollection methods);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="methods" Type="Mono.Cecil.MethodDefinitionCollection" />
-      </Parameters>
-      <Docs>
-        <param name="methods">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitModuleDefinition">
-      <MemberSignature Language="C#" Value="public virtual void VisitModuleDefinition (Mono.Cecil.ModuleDefinition module);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="module" Type="Mono.Cecil.ModuleDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="module">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitNestedType">
-      <MemberSignature Language="C#" Value="public virtual void VisitNestedType (Mono.Cecil.TypeDefinition nestedType);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="nestedType" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="nestedType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitNestedTypeCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitNestedTypeCollection (Mono.Cecil.NestedTypeCollection nestedTypes);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="nestedTypes" Type="Mono.Cecil.NestedTypeCollection" />
-      </Parameters>
-      <Docs>
-        <param name="nestedTypes">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitOverride">
-      <MemberSignature Language="C#" Value="public virtual void VisitOverride (Mono.Cecil.MethodReference ov);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="ov" Type="Mono.Cecil.MethodReference" />
-      </Parameters>
-      <Docs>
-        <param name="ov">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitOverrideCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitOverrideCollection (Mono.Cecil.OverrideCollection meth);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="meth" Type="Mono.Cecil.OverrideCollection" />
-      </Parameters>
-      <Docs>
-        <param name="meth">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitParameterDefinition">
-      <MemberSignature Language="C#" Value="public virtual void VisitParameterDefinition (Mono.Cecil.ParameterDefinition parameter);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="parameter" Type="Mono.Cecil.ParameterDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="parameter">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitParameterDefinitionCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitParameterDefinitionCollection (Mono.Cecil.ParameterDefinitionCollection parameters);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="parameters" Type="Mono.Cecil.ParameterDefinitionCollection" />
-      </Parameters>
-      <Docs>
-        <param name="parameters">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitPInvokeInfo">
-      <MemberSignature Language="C#" Value="public virtual void VisitPInvokeInfo (Mono.Cecil.PInvokeInfo pinvk);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="pinvk" Type="Mono.Cecil.PInvokeInfo" />
-      </Parameters>
-      <Docs>
-        <param name="pinvk">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitPropertyDefinition">
-      <MemberSignature Language="C#" Value="public virtual void VisitPropertyDefinition (Mono.Cecil.PropertyDefinition property);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="property" Type="Mono.Cecil.PropertyDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="property">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitPropertyDefinitionCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitPropertyDefinitionCollection (Mono.Cecil.PropertyDefinitionCollection properties);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="properties" Type="Mono.Cecil.PropertyDefinitionCollection" />
-      </Parameters>
-      <Docs>
-        <param name="properties">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitSecurityDeclaration">
-      <MemberSignature Language="C#" Value="public virtual void VisitSecurityDeclaration (Mono.Cecil.SecurityDeclaration secDecl);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="secDecl" Type="Mono.Cecil.SecurityDeclaration" />
-      </Parameters>
-      <Docs>
-        <param name="secDecl">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitSecurityDeclarationCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitSecurityDeclarationCollection (Mono.Cecil.SecurityDeclarationCollection secDecls);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="secDecls" Type="Mono.Cecil.SecurityDeclarationCollection" />
-      </Parameters>
-      <Docs>
-        <param name="secDecls">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitTypeDefinition">
-      <MemberSignature Language="C#" Value="public virtual void VisitTypeDefinition (Mono.Cecil.TypeDefinition type);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="type" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="type">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitTypeDefinitionCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitTypeDefinitionCollection (Mono.Cecil.TypeDefinitionCollection types);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="types" Type="Mono.Cecil.TypeDefinitionCollection" />
-      </Parameters>
-      <Docs>
-        <param name="types">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitTypeReference">
-      <MemberSignature Language="C#" Value="public virtual void VisitTypeReference (Mono.Cecil.TypeReference type);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="type" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="type">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitTypeReferenceCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitTypeReferenceCollection (Mono.Cecil.TypeReferenceCollection refs);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="refs" Type="Mono.Cecil.TypeReferenceCollection" />
-      </Parameters>
-      <Docs>
-        <param name="refs">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/BaseStructureVisitor.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/BaseStructureVisitor.xml
deleted file mode 100644
index f2adf75..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/BaseStructureVisitor.xml
+++ /dev/null
@@ -1,285 +0,0 @@
-<Type Name="BaseStructureVisitor" FullName="Mono.Cecil.BaseStructureVisitor">
-  <TypeSignature Language="C#" Value="public abstract class BaseStructureVisitor : Mono.Cecil.IReflectionStructureVisitor" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionStructureVisitor</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="protected BaseStructureVisitor ();" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="TerminateAssemblyDefinition">
-      <MemberSignature Language="C#" Value="public virtual void TerminateAssemblyDefinition (Mono.Cecil.AssemblyDefinition asm);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="asm" Type="Mono.Cecil.AssemblyDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="asm">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyDefinition">
-      <MemberSignature Language="C#" Value="public virtual void VisitAssemblyDefinition (Mono.Cecil.AssemblyDefinition asm);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="asm" Type="Mono.Cecil.AssemblyDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="asm">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyLinkedResource">
-      <MemberSignature Language="C#" Value="public virtual void VisitAssemblyLinkedResource (Mono.Cecil.AssemblyLinkedResource res);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="res" Type="Mono.Cecil.AssemblyLinkedResource" />
-      </Parameters>
-      <Docs>
-        <param name="res">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyNameDefinition">
-      <MemberSignature Language="C#" Value="public virtual void VisitAssemblyNameDefinition (Mono.Cecil.AssemblyNameDefinition name);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="name" Type="Mono.Cecil.AssemblyNameDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyNameReference">
-      <MemberSignature Language="C#" Value="public virtual void VisitAssemblyNameReference (Mono.Cecil.AssemblyNameReference name);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="name" Type="Mono.Cecil.AssemblyNameReference" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyNameReferenceCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitAssemblyNameReferenceCollection (Mono.Cecil.AssemblyNameReferenceCollection names);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="names" Type="Mono.Cecil.AssemblyNameReferenceCollection" />
-      </Parameters>
-      <Docs>
-        <param name="names">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitCollection">
-      <MemberSignature Language="C#" Value="protected void VisitCollection (System.Collections.ICollection coll);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="coll" Type="System.Collections.ICollection" />
-      </Parameters>
-      <Docs>
-        <param name="coll">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitEmbeddedResource">
-      <MemberSignature Language="C#" Value="public virtual void VisitEmbeddedResource (Mono.Cecil.EmbeddedResource res);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="res" Type="Mono.Cecil.EmbeddedResource" />
-      </Parameters>
-      <Docs>
-        <param name="res">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitLinkedResource">
-      <MemberSignature Language="C#" Value="public virtual void VisitLinkedResource (Mono.Cecil.LinkedResource res);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="res" Type="Mono.Cecil.LinkedResource" />
-      </Parameters>
-      <Docs>
-        <param name="res">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitModuleDefinition">
-      <MemberSignature Language="C#" Value="public virtual void VisitModuleDefinition (Mono.Cecil.ModuleDefinition module);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="module" Type="Mono.Cecil.ModuleDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="module">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitModuleDefinitionCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitModuleDefinitionCollection (Mono.Cecil.ModuleDefinitionCollection modules);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="modules" Type="Mono.Cecil.ModuleDefinitionCollection" />
-      </Parameters>
-      <Docs>
-        <param name="modules">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitModuleReference">
-      <MemberSignature Language="C#" Value="public virtual void VisitModuleReference (Mono.Cecil.ModuleReference module);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="module" Type="Mono.Cecil.ModuleReference" />
-      </Parameters>
-      <Docs>
-        <param name="module">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitModuleReferenceCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitModuleReferenceCollection (Mono.Cecil.ModuleReferenceCollection modules);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="modules" Type="Mono.Cecil.ModuleReferenceCollection" />
-      </Parameters>
-      <Docs>
-        <param name="modules">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitResourceCollection">
-      <MemberSignature Language="C#" Value="public virtual void VisitResourceCollection (Mono.Cecil.ResourceCollection resources);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="resources" Type="Mono.Cecil.ResourceCollection" />
-      </Parameters>
-      <Docs>
-        <param name="resources">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/CallSite.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/CallSite.xml
deleted file mode 100644
index 6633385..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/CallSite.xml
+++ /dev/null
@@ -1,200 +0,0 @@
-<Type Name="CallSite" FullName="Mono.Cecil.CallSite">
-  <TypeSignature Language="C#" Value="public sealed class CallSite : Mono.Cecil.IAnnotationProvider, Mono.Cecil.IMetadataTokenProvider, Mono.Cecil.IMethodSignature" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IAnnotationProvider</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IMetadataTokenProvider</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IMethodSignature</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public CallSite (bool hasThis, bool explicitThis, Mono.Cecil.MethodCallingConvention callConv, Mono.Cecil.MethodReturnType retType);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="hasThis" Type="System.Boolean" />
-        <Parameter Name="explicitThis" Type="System.Boolean" />
-        <Parameter Name="callConv" Type="Mono.Cecil.MethodCallingConvention" />
-        <Parameter Name="retType" Type="Mono.Cecil.MethodReturnType" />
-      </Parameters>
-      <Docs>
-        <param name="hasThis">To be added.</param>
-        <param name="explicitThis">To be added.</param>
-        <param name="callConv">To be added.</param>
-        <param name="retType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CallingConvention">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodCallingConvention CallingConvention { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodCallingConvention</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ExplicitThis">
-      <MemberSignature Language="C#" Value="public bool ExplicitThis { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetSentinel">
-      <MemberSignature Language="C#" Value="public int GetSentinel ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasParameters">
-      <MemberSignature Language="C#" Value="public bool HasParameters { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasThis">
-      <MemberSignature Language="C#" Value="public bool HasThis { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MetadataToken">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken MetadataToken { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Mono.Cecil.IAnnotationProvider.Annotations">
-      <MemberSignature Language="C#" Value="System.Collections.IDictionary Mono.Cecil.IAnnotationProvider.Annotations { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Collections.IDictionary</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Parameters">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ParameterDefinitionCollection Parameters { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ParameterDefinitionCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ReturnType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodReturnType ReturnType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodReturnType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ToString">
-      <MemberSignature Language="C#" Value="public override string ToString ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/Constants.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/Constants.xml
deleted file mode 100644
index 3092bc6..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/Constants.xml
+++ /dev/null
@@ -1,367 +0,0 @@
-<Type Name="Constants" FullName="Mono.Cecil.Constants">
-  <TypeSignature Language="C#" Value="public class Constants" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Boolean">
-      <MemberSignature Language="C#" Value="public const string Boolean;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Byte">
-      <MemberSignature Language="C#" Value="public const string Byte;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Char">
-      <MemberSignature Language="C#" Value="public const string Char;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Corlib">
-      <MemberSignature Language="C#" Value="public const string Corlib;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Deleted">
-      <MemberSignature Language="C#" Value="public const string Deleted;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Double">
-      <MemberSignature Language="C#" Value="public const string Double;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Enum">
-      <MemberSignature Language="C#" Value="public const string Enum;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Int16">
-      <MemberSignature Language="C#" Value="public const string Int16;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Int32">
-      <MemberSignature Language="C#" Value="public const string Int32;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Int64">
-      <MemberSignature Language="C#" Value="public const string Int64;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IntPtr">
-      <MemberSignature Language="C#" Value="public const string IntPtr;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ModuleType">
-      <MemberSignature Language="C#" Value="public const string ModuleType;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Object">
-      <MemberSignature Language="C#" Value="public const string Object;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PrivateImplDetails">
-      <MemberSignature Language="C#" Value="public const string PrivateImplDetails;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SByte">
-      <MemberSignature Language="C#" Value="public const string SByte;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Single">
-      <MemberSignature Language="C#" Value="public const string Single;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="String">
-      <MemberSignature Language="C#" Value="public const string String;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Type">
-      <MemberSignature Language="C#" Value="public const string Type;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="TypedReference">
-      <MemberSignature Language="C#" Value="public const string TypedReference;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="UInt16">
-      <MemberSignature Language="C#" Value="public const string UInt16;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="UInt32">
-      <MemberSignature Language="C#" Value="public const string UInt32;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="UInt64">
-      <MemberSignature Language="C#" Value="public const string UInt64;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="UIntPtr">
-      <MemberSignature Language="C#" Value="public const string UIntPtr;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ValueType">
-      <MemberSignature Language="C#" Value="public const string ValueType;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Void">
-      <MemberSignature Language="C#" Value="public const string Void;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ConstraintCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ConstraintCollection.xml
deleted file mode 100644
index f21858f..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ConstraintCollection.xml
+++ /dev/null
@@ -1,178 +0,0 @@
-<Type Name="ConstraintCollection" FullName="Mono.Cecil.ConstraintCollection">
-  <TypeSignature Language="C#" Value="public sealed class ConstraintCollection : System.Collections.CollectionBase" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ConstraintCollection (Mono.Cecil.GenericParameter container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.GenericParameter" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Mono.Cecil.TypeReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.GenericParameter Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.GenericParameter</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.TypeReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.TypeReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Insert">
-      <MemberSignature Language="C#" Value="public void Insert (int index, Mono.Cecil.TypeReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="value" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OnValidate">
-      <MemberSignature Language="C#" Value="protected override void OnValidate (object o);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="o" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="o">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.TypeReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ConstructorCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ConstructorCollection.xml
deleted file mode 100644
index 6b697e9..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ConstructorCollection.xml
+++ /dev/null
@@ -1,296 +0,0 @@
-<Type Name="ConstructorCollection" FullName="Mono.Cecil.ConstructorCollection">
-  <TypeSignature Language="C#" Value="public sealed class ConstructorCollection : System.Collections.CollectionBase, Mono.Cecil.IReflectionVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ConstructorCollection (Mono.Cecil.TypeDefinition container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Mono.Cecil.MethodDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.MethodDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Clear">
-      <MemberSignature Language="C#" Value="public void Clear ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeDefinition Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.MethodDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.MethodDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetConstructor">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodDefinition GetConstructor (bool isStatic, Mono.Cecil.ParameterDefinitionCollection parameters);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="isStatic" Type="System.Boolean" />
-        <Parameter Name="parameters" Type="Mono.Cecil.ParameterDefinitionCollection" />
-      </Parameters>
-      <Docs>
-        <param name="isStatic">To be added.</param>
-        <param name="parameters">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetConstructor">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodDefinition GetConstructor (bool isStatic, Mono.Cecil.TypeReference[] parameters);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="isStatic" Type="System.Boolean" />
-        <Parameter Name="parameters" Type="Mono.Cecil.TypeReference[]" />
-      </Parameters>
-      <Docs>
-        <param name="isStatic">To be added.</param>
-        <param name="parameters">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetConstructor">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodDefinition GetConstructor (bool isStatic, Type[] parameters);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="isStatic" Type="System.Boolean" />
-        <Parameter Name="parameters" Type="System.Type[]" />
-      </Parameters>
-      <Docs>
-        <param name="isStatic">To be added.</param>
-        <param name="parameters">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.MethodDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.MethodDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Insert">
-      <MemberSignature Language="C#" Value="public void Insert (int index, Mono.Cecil.MethodDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="value" Type="Mono.Cecil.MethodDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodDefinition this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OnValidate">
-      <MemberSignature Language="C#" Value="protected override void OnValidate (object o);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="o" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="o">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.MethodDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.MethodDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RemoveAt">
-      <MemberSignature Language="C#" Value="public void RemoveAt (int index);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/CustomAttribute.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/CustomAttribute.xml
deleted file mode 100644
index 6455db2..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/CustomAttribute.xml
+++ /dev/null
@@ -1,292 +0,0 @@
-<Type Name="CustomAttribute" FullName="Mono.Cecil.CustomAttribute">
-  <TypeSignature Language="C#" Value="public sealed class CustomAttribute : Mono.Cecil.IAnnotationProvider, Mono.Cecil.IReflectionVisitable, Mono.Cecil.IRequireResolving" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IAnnotationProvider</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionVisitable</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IRequireResolving</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public CustomAttribute (Mono.Cecil.MethodReference ctor);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="ctor" Type="Mono.Cecil.MethodReference" />
-      </Parameters>
-      <Docs>
-        <param name="ctor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public CustomAttribute (Mono.Cecil.MethodReference ctor, byte[] blob);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="ctor" Type="Mono.Cecil.MethodReference" />
-        <Parameter Name="blob" Type="System.Byte[]" />
-      </Parameters>
-      <Docs>
-        <param name="ctor">To be added.</param>
-        <param name="blob">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Blob">
-      <MemberSignature Language="C#" Value="public byte[] Blob { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte[]</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Clone">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.CustomAttribute Clone ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.CustomAttribute</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Constructor">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodReference Constructor { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodReference</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ConstructorParameters">
-      <MemberSignature Language="C#" Value="public System.Collections.IList ConstructorParameters { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Collections.IList</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Fields">
-      <MemberSignature Language="C#" Value="public System.Collections.IDictionary Fields { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Collections.IDictionary</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetFieldType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference GetFieldType (string fieldName);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="fieldName" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="fieldName">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetPropertyType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference GetPropertyType (string propertyName);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="propertyName" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="propertyName">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Mono.Cecil.IAnnotationProvider.Annotations">
-      <MemberSignature Language="C#" Value="System.Collections.IDictionary Mono.Cecil.IAnnotationProvider.Annotations { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Collections.IDictionary</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Properties">
-      <MemberSignature Language="C#" Value="public System.Collections.IDictionary Properties { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Collections.IDictionary</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resolve">
-      <MemberSignature Language="C#" Value="public bool Resolve ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resolved">
-      <MemberSignature Language="C#" Value="public bool Resolved { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SetFieldType">
-      <MemberSignature Language="C#" Value="public void SetFieldType (string fieldName, Mono.Cecil.TypeReference type);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="fieldName" Type="System.String" />
-        <Parameter Name="type" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="fieldName">To be added.</param>
-        <param name="type">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SetPropertyType">
-      <MemberSignature Language="C#" Value="public void SetPropertyType (string propertyName, Mono.Cecil.TypeReference type);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="propertyName" Type="System.String" />
-        <Parameter Name="type" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="propertyName">To be added.</param>
-        <param name="type">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/CustomAttributeCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/CustomAttributeCollection.xml
deleted file mode 100644
index bea1fd0..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/CustomAttributeCollection.xml
+++ /dev/null
@@ -1,200 +0,0 @@
-<Type Name="CustomAttributeCollection" FullName="Mono.Cecil.CustomAttributeCollection">
-  <TypeSignature Language="C#" Value="public sealed class CustomAttributeCollection : System.Collections.CollectionBase, Mono.Cecil.IReflectionVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public CustomAttributeCollection (Mono.Cecil.ICustomAttributeProvider container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.ICustomAttributeProvider" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Mono.Cecil.CustomAttribute value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.CustomAttribute" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ICustomAttributeProvider Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ICustomAttributeProvider</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.CustomAttribute value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.CustomAttribute" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.CustomAttribute value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.CustomAttribute" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Insert">
-      <MemberSignature Language="C#" Value="public void Insert (int index, Mono.Cecil.CustomAttribute value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="value" Type="Mono.Cecil.CustomAttribute" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.CustomAttribute this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.CustomAttribute</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OnValidate">
-      <MemberSignature Language="C#" Value="protected override void OnValidate (object o);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="o" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="o">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.CustomAttribute value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.CustomAttribute" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/CustomMarshalerSpec.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/CustomMarshalerSpec.xml
deleted file mode 100644
index 608de3e..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/CustomMarshalerSpec.xml
+++ /dev/null
@@ -1,111 +0,0 @@
-<Type Name="CustomMarshalerSpec" FullName="Mono.Cecil.CustomMarshalerSpec">
-  <TypeSignature Language="C#" Value="public sealed class CustomMarshalerSpec : Mono.Cecil.MarshalSpec" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.MarshalSpec</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public CustomMarshalerSpec (Mono.Cecil.IHasMarshalSpec container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.IHasMarshalSpec" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CloneInto">
-      <MemberSignature Language="C#" Value="public override Mono.Cecil.MarshalSpec CloneInto (Mono.Cecil.IHasMarshalSpec container);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MarshalSpec</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.IHasMarshalSpec" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Cookie">
-      <MemberSignature Language="C#" Value="public string Cookie { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Guid">
-      <MemberSignature Language="C#" Value="public Guid Guid { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Guid</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ManagedType">
-      <MemberSignature Language="C#" Value="public string ManagedType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="UnmanagedType">
-      <MemberSignature Language="C#" Value="public string UnmanagedType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/DefaultAssemblyResolver.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/DefaultAssemblyResolver.xml
deleted file mode 100644
index f1eede8..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/DefaultAssemblyResolver.xml
+++ /dev/null
@@ -1,66 +0,0 @@
-<Type Name="DefaultAssemblyResolver" FullName="Mono.Cecil.DefaultAssemblyResolver">
-  <TypeSignature Language="C#" Value="public class DefaultAssemblyResolver : Mono.Cecil.BaseAssemblyResolver" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.BaseAssemblyResolver</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public DefaultAssemblyResolver ();" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RegisterAssembly">
-      <MemberSignature Language="C#" Value="protected void RegisterAssembly (Mono.Cecil.AssemblyDefinition assembly);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="assembly" Type="Mono.Cecil.AssemblyDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="assembly">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resolve">
-      <MemberSignature Language="C#" Value="public override Mono.Cecil.AssemblyDefinition Resolve (Mono.Cecil.AssemblyNameReference name);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="name" Type="Mono.Cecil.AssemblyNameReference" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/DefaultImporter.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/DefaultImporter.xml
deleted file mode 100644
index 74ec4e1..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/DefaultImporter.xml
+++ /dev/null
@@ -1,133 +0,0 @@
-<Type Name="DefaultImporter" FullName="Mono.Cecil.DefaultImporter">
-  <TypeSignature Language="C#" Value="public class DefaultImporter : Mono.Cecil.IImporter" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IImporter</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public DefaultImporter (Mono.Cecil.ModuleDefinition module);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="module" Type="Mono.Cecil.ModuleDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="module">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ImportAssembly">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.AssemblyNameReference ImportAssembly (Mono.Cecil.AssemblyNameReference asm);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyNameReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="asm" Type="Mono.Cecil.AssemblyNameReference" />
-      </Parameters>
-      <Docs>
-        <param name="asm">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ImportFieldReference">
-      <MemberSignature Language="C#" Value="public virtual Mono.Cecil.FieldReference ImportFieldReference (Mono.Cecil.FieldReference fr, Mono.Cecil.ImportContext context);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="fr" Type="Mono.Cecil.FieldReference" />
-        <Parameter Name="context" Type="Mono.Cecil.ImportContext" />
-      </Parameters>
-      <Docs>
-        <param name="fr">To be added.</param>
-        <param name="context">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ImportMethodReference">
-      <MemberSignature Language="C#" Value="public virtual Mono.Cecil.MethodReference ImportMethodReference (Mono.Cecil.MethodReference mr, Mono.Cecil.ImportContext context);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="mr" Type="Mono.Cecil.MethodReference" />
-        <Parameter Name="context" Type="Mono.Cecil.ImportContext" />
-      </Parameters>
-      <Docs>
-        <param name="mr">To be added.</param>
-        <param name="context">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ImportTypeReference">
-      <MemberSignature Language="C#" Value="public virtual Mono.Cecil.TypeReference ImportTypeReference (Mono.Cecil.TypeReference t, Mono.Cecil.ImportContext context);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="t" Type="Mono.Cecil.TypeReference" />
-        <Parameter Name="context" Type="Mono.Cecil.ImportContext" />
-      </Parameters>
-      <Docs>
-        <param name="t">To be added.</param>
-        <param name="context">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Module">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ModuleDefinition Module { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ModuleDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/EmbeddedResource.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/EmbeddedResource.xml
deleted file mode 100644
index f15d927..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/EmbeddedResource.xml
+++ /dev/null
@@ -1,86 +0,0 @@
-<Type Name="EmbeddedResource" FullName="Mono.Cecil.EmbeddedResource">
-  <TypeSignature Language="C#" Value="public sealed class EmbeddedResource : Mono.Cecil.Resource" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.Resource</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public EmbeddedResource (string name, Mono.Cecil.ManifestResourceAttributes flags);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="flags" Type="Mono.Cecil.ManifestResourceAttributes" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="flags">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public EmbeddedResource (string name, Mono.Cecil.ManifestResourceAttributes flags, byte[] data);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="flags" Type="Mono.Cecil.ManifestResourceAttributes" />
-        <Parameter Name="data" Type="System.Byte[]" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="flags">To be added.</param>
-        <param name="data">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public override void Accept (Mono.Cecil.IReflectionStructureVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionStructureVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Data">
-      <MemberSignature Language="C#" Value="public byte[] Data { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte[]</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/EventAttributes.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/EventAttributes.xml
deleted file mode 100644
index cad571e..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/EventAttributes.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<Type Name="EventAttributes" FullName="Mono.Cecil.EventAttributes">
-  <TypeSignature Language="C#" Value="public enum EventAttributes" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Attributes>
-    <Attribute>
-      <AttributeName>System.Flags</AttributeName>
-    </Attribute>
-  </Attributes>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="RTSpecialName">
-      <MemberSignature Language="C#" Value="RTSpecialName" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.EventAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="SpecialName">
-      <MemberSignature Language="C#" Value="SpecialName" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.EventAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/EventDefinition.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/EventDefinition.xml
deleted file mode 100644
index 4b07489..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/EventDefinition.xml
+++ /dev/null
@@ -1,282 +0,0 @@
-<Type Name="EventDefinition" FullName="Mono.Cecil.EventDefinition">
-  <TypeSignature Language="C#" Value="public sealed class EventDefinition : Mono.Cecil.EventReference, Mono.Cecil.IMemberDefinition" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.EventReference</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IMemberDefinition</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public EventDefinition (string name, Mono.Cecil.TypeReference eventType, Mono.Cecil.EventAttributes attrs);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="eventType" Type="Mono.Cecil.TypeReference" />
-        <Parameter Name="attrs" Type="Mono.Cecil.EventAttributes" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="eventType">To be added.</param>
-        <param name="attrs">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public override void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="AddMethod">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodDefinition AddMethod { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Attributes">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.EventAttributes Attributes { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.EventAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Clone">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.EventDefinition Clone ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.EventDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CreateAddMethod">
-      <MemberSignature Language="C#" Value="public static Mono.Cecil.MethodDefinition CreateAddMethod (Mono.Cecil.EventDefinition evt);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="evt" Type="Mono.Cecil.EventDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="evt">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CreateInvokeMethod">
-      <MemberSignature Language="C#" Value="public static Mono.Cecil.MethodDefinition CreateInvokeMethod (Mono.Cecil.EventDefinition evt);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="evt" Type="Mono.Cecil.EventDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="evt">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CreateRemoveMethod">
-      <MemberSignature Language="C#" Value="public static Mono.Cecil.MethodDefinition CreateRemoveMethod (Mono.Cecil.EventDefinition evt);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="evt" Type="Mono.Cecil.EventDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="evt">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CustomAttributes">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.CustomAttributeCollection CustomAttributes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.CustomAttributeCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="DeclaringType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeDefinition DeclaringType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasCustomAttributes">
-      <MemberSignature Language="C#" Value="public bool HasCustomAttributes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="InvokeMethod">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodDefinition InvokeMethod { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsRuntimeSpecialName">
-      <MemberSignature Language="C#" Value="public bool IsRuntimeSpecialName { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsSpecialName">
-      <MemberSignature Language="C#" Value="public bool IsSpecialName { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RemoveMethod">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodDefinition RemoveMethod { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resolve">
-      <MemberSignature Language="C#" Value="public override Mono.Cecil.EventDefinition Resolve ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.EventDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/EventDefinitionCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/EventDefinitionCollection.xml
deleted file mode 100644
index d8fbf7a..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/EventDefinitionCollection.xml
+++ /dev/null
@@ -1,252 +0,0 @@
-<Type Name="EventDefinitionCollection" FullName="Mono.Cecil.EventDefinitionCollection">
-  <TypeSignature Language="C#" Value="public sealed class EventDefinitionCollection : System.Collections.CollectionBase, Mono.Cecil.IReflectionVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public EventDefinitionCollection (Mono.Cecil.TypeDefinition container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Mono.Cecil.EventDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.EventDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Clear">
-      <MemberSignature Language="C#" Value="public void Clear ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeDefinition Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.EventDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.EventDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetEvent">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.EventDefinition GetEvent (string name);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.EventDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.EventDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.EventDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Insert">
-      <MemberSignature Language="C#" Value="public void Insert (int index, Mono.Cecil.EventDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="value" Type="Mono.Cecil.EventDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.EventDefinition this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.EventDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OnValidate">
-      <MemberSignature Language="C#" Value="protected override void OnValidate (object o);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="o" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="o">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.EventDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.EventDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RemoveAt">
-      <MemberSignature Language="C#" Value="public void RemoveAt (int index);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/EventReference.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/EventReference.xml
deleted file mode 100644
index e15158c..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/EventReference.xml
+++ /dev/null
@@ -1,81 +0,0 @@
-<Type Name="EventReference" FullName="Mono.Cecil.EventReference">
-  <TypeSignature Language="C#" Value="public abstract class EventReference : Mono.Cecil.MemberReference" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.MemberReference</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public EventReference (string name, Mono.Cecil.TypeReference eventType);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="eventType" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="eventType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="EventType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference EventType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resolve">
-      <MemberSignature Language="C#" Value="public abstract Mono.Cecil.EventDefinition Resolve ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.EventDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ToString">
-      <MemberSignature Language="C#" Value="public override string ToString ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ExternTypeCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ExternTypeCollection.xml
deleted file mode 100644
index 024d5ef..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ExternTypeCollection.xml
+++ /dev/null
@@ -1,446 +0,0 @@
-<Type Name="ExternTypeCollection" FullName="Mono.Cecil.ExternTypeCollection">
-  <TypeSignature Language="C#" Value="public sealed class ExternTypeCollection : System.Collections.Specialized.NameObjectCollectionBase, Mono.Cecil.IReflectionVisitable, System.Collections.IList" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.Specialized.NameObjectCollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionVisitable</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>System.Collections.IList</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ExternTypeCollection (Mono.Cecil.ModuleDefinition container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.ModuleDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Mono.Cecil.TypeReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Clear">
-      <MemberSignature Language="C#" Value="public void Clear ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ModuleDefinition Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ModuleDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.TypeReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (string fullName);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="fullName" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="fullName">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CopyTo">
-      <MemberSignature Language="C#" Value="public void CopyTo (Array ary, int index);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="ary" Type="System.Array" />
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="ary">To be added.</param>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetEnumerator">
-      <MemberSignature Language="C#" Value="public System.Collections.IEnumerator GetEnumerator ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Collections.IEnumerator</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.TypeReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsSynchronized">
-      <MemberSignature Language="C#" Value="public bool IsSynchronized { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference this[string fullName] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="fullName" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="fullName">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.TypeReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RemoveAt">
-      <MemberSignature Language="C#" Value="public void RemoveAt (int index);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SyncRoot">
-      <MemberSignature Language="C#" Value="public object SyncRoot { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Object</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="System.Collections.IList.Add">
-      <MemberSignature Language="C#" Value="int IList.Add (object value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="System.Collections.IList.Contains">
-      <MemberSignature Language="C#" Value="bool IList.Contains (object value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="System.Collections.IList.IndexOf">
-      <MemberSignature Language="C#" Value="int IList.IndexOf (object value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="System.Collections.IList.Insert">
-      <MemberSignature Language="C#" Value="void IList.Insert (int index, object value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="value" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="System.Collections.IList.IsFixedSize">
-      <MemberSignature Language="C#" Value="bool System.Collections.IList.IsFixedSize { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="System.Collections.IList.IsReadOnly">
-      <MemberSignature Language="C#" Value="bool System.Collections.IList.IsReadOnly { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="System.Collections.IList.Item">
-      <MemberSignature Language="C#" Value="object System.Collections.IList.Item[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Object</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="System.Collections.IList.Remove">
-      <MemberSignature Language="C#" Value="void IList.Remove (object value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/FieldAttributes.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/FieldAttributes.xml
deleted file mode 100644
index ad760f1..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/FieldAttributes.xml
+++ /dev/null
@@ -1,255 +0,0 @@
-<Type Name="FieldAttributes" FullName="Mono.Cecil.FieldAttributes">
-  <TypeSignature Language="C#" Value="public enum FieldAttributes" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Attributes>
-    <Attribute>
-      <AttributeName>System.Flags</AttributeName>
-    </Attribute>
-  </Attributes>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Assembly">
-      <MemberSignature Language="C#" Value="Assembly" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Compilercontrolled">
-      <MemberSignature Language="C#" Value="Compilercontrolled" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="FamANDAssem">
-      <MemberSignature Language="C#" Value="FamANDAssem" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Family">
-      <MemberSignature Language="C#" Value="Family" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="FamORAssem">
-      <MemberSignature Language="C#" Value="FamORAssem" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="FieldAccessMask">
-      <MemberSignature Language="C#" Value="FieldAccessMask" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="HasDefault">
-      <MemberSignature Language="C#" Value="HasDefault" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="HasFieldMarshal">
-      <MemberSignature Language="C#" Value="HasFieldMarshal" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="HasFieldRVA">
-      <MemberSignature Language="C#" Value="HasFieldRVA" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="InitOnly">
-      <MemberSignature Language="C#" Value="InitOnly" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Literal">
-      <MemberSignature Language="C#" Value="Literal" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="NotSerialized">
-      <MemberSignature Language="C#" Value="NotSerialized" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="PInvokeImpl">
-      <MemberSignature Language="C#" Value="PInvokeImpl" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Private">
-      <MemberSignature Language="C#" Value="Private" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Public">
-      <MemberSignature Language="C#" Value="Public" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="RTSpecialName">
-      <MemberSignature Language="C#" Value="RTSpecialName" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="SpecialName">
-      <MemberSignature Language="C#" Value="SpecialName" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Static">
-      <MemberSignature Language="C#" Value="Static" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/FieldDefinition.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/FieldDefinition.xml
deleted file mode 100644
index 8a5e5fd..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/FieldDefinition.xml
+++ /dev/null
@@ -1,486 +0,0 @@
-<Type Name="FieldDefinition" FullName="Mono.Cecil.FieldDefinition">
-  <TypeSignature Language="C#" Value="public sealed class FieldDefinition : Mono.Cecil.FieldReference, Mono.Cecil.IHasConstant, Mono.Cecil.IHasMarshalSpec, Mono.Cecil.IMemberDefinition" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.FieldReference</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IHasConstant</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IHasMarshalSpec</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IMemberDefinition</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public FieldDefinition (string name, Mono.Cecil.TypeReference fieldType, Mono.Cecil.FieldAttributes attrs);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="fieldType" Type="Mono.Cecil.TypeReference" />
-        <Parameter Name="attrs" Type="Mono.Cecil.FieldAttributes" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="fieldType">To be added.</param>
-        <param name="attrs">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public override void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Attributes">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.FieldAttributes Attributes { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Clone">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.FieldDefinition Clone ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Constant">
-      <MemberSignature Language="C#" Value="public object Constant { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Object</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CustomAttributes">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.CustomAttributeCollection CustomAttributes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.CustomAttributeCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="DeclaringType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeDefinition DeclaringType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasConstant">
-      <MemberSignature Language="C#" Value="public bool HasConstant { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasCustomAttributes">
-      <MemberSignature Language="C#" Value="public bool HasCustomAttributes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasDefault">
-      <MemberSignature Language="C#" Value="public bool HasDefault { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasLayoutInfo">
-      <MemberSignature Language="C#" Value="public bool HasLayoutInfo { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="InitialValue">
-      <MemberSignature Language="C#" Value="public byte[] InitialValue { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte[]</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsAssembly">
-      <MemberSignature Language="C#" Value="public bool IsAssembly { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsCompilerControlled">
-      <MemberSignature Language="C#" Value="public bool IsCompilerControlled { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsFamily">
-      <MemberSignature Language="C#" Value="public bool IsFamily { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsFamilyAndAssembly">
-      <MemberSignature Language="C#" Value="public bool IsFamilyAndAssembly { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsFamilyOrAssembly">
-      <MemberSignature Language="C#" Value="public bool IsFamilyOrAssembly { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsInitOnly">
-      <MemberSignature Language="C#" Value="public bool IsInitOnly { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsLiteral">
-      <MemberSignature Language="C#" Value="public bool IsLiteral { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsNotSerialized">
-      <MemberSignature Language="C#" Value="public bool IsNotSerialized { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsPInvokeImpl">
-      <MemberSignature Language="C#" Value="public bool IsPInvokeImpl { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsPrivate">
-      <MemberSignature Language="C#" Value="public bool IsPrivate { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsPublic">
-      <MemberSignature Language="C#" Value="public bool IsPublic { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsRuntimeSpecialName">
-      <MemberSignature Language="C#" Value="public bool IsRuntimeSpecialName { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsSpecialName">
-      <MemberSignature Language="C#" Value="public bool IsSpecialName { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsStatic">
-      <MemberSignature Language="C#" Value="public bool IsStatic { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MarshalSpec">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MarshalSpec MarshalSpec { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MarshalSpec</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Offset">
-      <MemberSignature Language="C#" Value="public uint Offset { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resolve">
-      <MemberSignature Language="C#" Value="public override Mono.Cecil.FieldDefinition Resolve ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RVA">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.RVA RVA { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/FieldDefinitionCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/FieldDefinitionCollection.xml
deleted file mode 100644
index 3116764..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/FieldDefinitionCollection.xml
+++ /dev/null
@@ -1,252 +0,0 @@
-<Type Name="FieldDefinitionCollection" FullName="Mono.Cecil.FieldDefinitionCollection">
-  <TypeSignature Language="C#" Value="public sealed class FieldDefinitionCollection : System.Collections.CollectionBase, Mono.Cecil.IReflectionVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public FieldDefinitionCollection (Mono.Cecil.TypeDefinition container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Mono.Cecil.FieldDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.FieldDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Clear">
-      <MemberSignature Language="C#" Value="public void Clear ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeDefinition Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.FieldDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.FieldDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetField">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.FieldDefinition GetField (string name);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.FieldDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.FieldDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Insert">
-      <MemberSignature Language="C#" Value="public void Insert (int index, Mono.Cecil.FieldDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="value" Type="Mono.Cecil.FieldDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.FieldDefinition this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OnValidate">
-      <MemberSignature Language="C#" Value="protected override void OnValidate (object o);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="o" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="o">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.FieldDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.FieldDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RemoveAt">
-      <MemberSignature Language="C#" Value="public void RemoveAt (int index);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/FieldReference.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/FieldReference.xml
deleted file mode 100644
index f6001bf..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/FieldReference.xml
+++ /dev/null
@@ -1,83 +0,0 @@
-<Type Name="FieldReference" FullName="Mono.Cecil.FieldReference">
-  <TypeSignature Language="C#" Value="public class FieldReference : Mono.Cecil.MemberReference" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.MemberReference</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public FieldReference (string name, Mono.Cecil.TypeReference declaringType, Mono.Cecil.TypeReference fieldType);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="declaringType" Type="Mono.Cecil.TypeReference" />
-        <Parameter Name="fieldType" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="declaringType">To be added.</param>
-        <param name="fieldType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="FieldType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference FieldType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resolve">
-      <MemberSignature Language="C#" Value="public virtual Mono.Cecil.FieldDefinition Resolve ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ToString">
-      <MemberSignature Language="C#" Value="public override string ToString ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/FileAttributes.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/FileAttributes.xml
deleted file mode 100644
index a25d391..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/FileAttributes.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<Type Name="FileAttributes" FullName="Mono.Cecil.FileAttributes">
-  <TypeSignature Language="C#" Value="public enum FileAttributes" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="ContainsMetaData">
-      <MemberSignature Language="C#" Value="ContainsMetaData" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FileAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ContainsNoMetaData">
-      <MemberSignature Language="C#" Value="ContainsNoMetaData" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FileAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/FixedArraySpec.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/FixedArraySpec.xml
deleted file mode 100644
index bc9262f..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/FixedArraySpec.xml
+++ /dev/null
@@ -1,81 +0,0 @@
-<Type Name="FixedArraySpec" FullName="Mono.Cecil.FixedArraySpec">
-  <TypeSignature Language="C#" Value="public sealed class FixedArraySpec : Mono.Cecil.MarshalSpec" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.MarshalSpec</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public FixedArraySpec (Mono.Cecil.IHasMarshalSpec container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.IHasMarshalSpec" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CloneInto">
-      <MemberSignature Language="C#" Value="public override Mono.Cecil.MarshalSpec CloneInto (Mono.Cecil.IHasMarshalSpec container);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MarshalSpec</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.IHasMarshalSpec" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ElemType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.NativeType ElemType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="NumElem">
-      <MemberSignature Language="C#" Value="public int NumElem { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/FixedSysStringSpec.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/FixedSysStringSpec.xml
deleted file mode 100644
index 4bf008c..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/FixedSysStringSpec.xml
+++ /dev/null
@@ -1,66 +0,0 @@
-<Type Name="FixedSysStringSpec" FullName="Mono.Cecil.FixedSysStringSpec">
-  <TypeSignature Language="C#" Value="public sealed class FixedSysStringSpec : Mono.Cecil.MarshalSpec" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.MarshalSpec</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public FixedSysStringSpec (Mono.Cecil.IHasMarshalSpec container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.IHasMarshalSpec" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CloneInto">
-      <MemberSignature Language="C#" Value="public override Mono.Cecil.MarshalSpec CloneInto (Mono.Cecil.IHasMarshalSpec container);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MarshalSpec</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.IHasMarshalSpec" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Size">
-      <MemberSignature Language="C#" Value="public int Size { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/FunctionPointerType.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/FunctionPointerType.xml
deleted file mode 100644
index 587dee6..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/FunctionPointerType.xml
+++ /dev/null
@@ -1,208 +0,0 @@
-<Type Name="FunctionPointerType" FullName="Mono.Cecil.FunctionPointerType">
-  <TypeSignature Language="C#" Value="public sealed class FunctionPointerType : Mono.Cecil.TypeSpecification, Mono.Cecil.IMethodSignature" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.TypeSpecification</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IMethodSignature</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public FunctionPointerType (bool hasThis, bool explicitThis, Mono.Cecil.MethodCallingConvention callConv, Mono.Cecil.MethodReturnType retType);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="hasThis" Type="System.Boolean" />
-        <Parameter Name="explicitThis" Type="System.Boolean" />
-        <Parameter Name="callConv" Type="Mono.Cecil.MethodCallingConvention" />
-        <Parameter Name="retType" Type="Mono.Cecil.MethodReturnType" />
-      </Parameters>
-      <Docs>
-        <param name="hasThis">To be added.</param>
-        <param name="explicitThis">To be added.</param>
-        <param name="callConv">To be added.</param>
-        <param name="retType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CallingConvention">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodCallingConvention CallingConvention { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodCallingConvention</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ExplicitThis">
-      <MemberSignature Language="C#" Value="public bool ExplicitThis { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="FullName">
-      <MemberSignature Language="C#" Value="public override string FullName { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetSentinel">
-      <MemberSignature Language="C#" Value="public int GetSentinel ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasParameters">
-      <MemberSignature Language="C#" Value="public bool HasParameters { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasThis">
-      <MemberSignature Language="C#" Value="public bool HasThis { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public override string Name { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Namespace">
-      <MemberSignature Language="C#" Value="public override string Namespace { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Parameters">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ParameterDefinitionCollection Parameters { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ParameterDefinitionCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ReturnType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodReturnType ReturnType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodReturnType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Scope">
-      <MemberSignature Language="C#" Value="public override Mono.Cecil.IMetadataScope Scope { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.IMetadataScope</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/GenericArgumentCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/GenericArgumentCollection.xml
deleted file mode 100644
index af480b9..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/GenericArgumentCollection.xml
+++ /dev/null
@@ -1,178 +0,0 @@
-<Type Name="GenericArgumentCollection" FullName="Mono.Cecil.GenericArgumentCollection">
-  <TypeSignature Language="C#" Value="public sealed class GenericArgumentCollection : System.Collections.CollectionBase" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public GenericArgumentCollection (Mono.Cecil.IGenericInstance container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.IGenericInstance" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Mono.Cecil.TypeReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.IGenericInstance Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.IGenericInstance</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.TypeReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.TypeReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Insert">
-      <MemberSignature Language="C#" Value="public void Insert (int index, Mono.Cecil.TypeReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="value" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OnValidate">
-      <MemberSignature Language="C#" Value="protected override void OnValidate (object o);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="o" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="o">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.TypeReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/GenericContext.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/GenericContext.xml
deleted file mode 100644
index edc5ff8..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/GenericContext.xml
+++ /dev/null
@@ -1,137 +0,0 @@
-<Type Name="GenericContext" FullName="Mono.Cecil.GenericContext">
-  <TypeSignature Language="C#" Value="public class GenericContext" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public GenericContext ();" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public GenericContext (Mono.Cecil.IGenericParameterProvider provider);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="provider" Type="Mono.Cecil.IGenericParameterProvider" />
-      </Parameters>
-      <Docs>
-        <param name="provider">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public GenericContext (Mono.Cecil.TypeReference type, Mono.Cecil.MethodReference meth);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="type" Type="Mono.Cecil.TypeReference" />
-        <Parameter Name="meth" Type="Mono.Cecil.MethodReference" />
-      </Parameters>
-      <Docs>
-        <param name="type">To be added.</param>
-        <param name="meth">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="AllowCreation">
-      <MemberSignature Language="C#" Value="public bool AllowCreation { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Clone">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.GenericContext Clone ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.GenericContext</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Method">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodReference Method { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodReference</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Null">
-      <MemberSignature Language="C#" Value="public bool Null { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Type">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference Type { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/GenericInstanceMethod.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/GenericInstanceMethod.xml
deleted file mode 100644
index 72f1ca7..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/GenericInstanceMethod.xml
+++ /dev/null
@@ -1,82 +0,0 @@
-<Type Name="GenericInstanceMethod" FullName="Mono.Cecil.GenericInstanceMethod">
-  <TypeSignature Language="C#" Value="public sealed class GenericInstanceMethod : Mono.Cecil.MethodSpecification, Mono.Cecil.IGenericInstance" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.MethodSpecification</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IGenericInstance</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public GenericInstanceMethod (Mono.Cecil.MethodReference elemMethod);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="elemMethod" Type="Mono.Cecil.MethodReference" />
-      </Parameters>
-      <Docs>
-        <param name="elemMethod">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GenericArguments">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.GenericArgumentCollection GenericArguments { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.GenericArgumentCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasGenericArguments">
-      <MemberSignature Language="C#" Value="public bool HasGenericArguments { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ToString">
-      <MemberSignature Language="C#" Value="public override string ToString ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/GenericInstanceType.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/GenericInstanceType.xml
deleted file mode 100644
index ebb3b9a..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/GenericInstanceType.xml
+++ /dev/null
@@ -1,96 +0,0 @@
-<Type Name="GenericInstanceType" FullName="Mono.Cecil.GenericInstanceType">
-  <TypeSignature Language="C#" Value="public sealed class GenericInstanceType : Mono.Cecil.TypeSpecification, Mono.Cecil.IGenericInstance" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.TypeSpecification</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IGenericInstance</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public GenericInstanceType (Mono.Cecil.TypeReference elementType);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="elementType" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="elementType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="FullName">
-      <MemberSignature Language="C#" Value="public override string FullName { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GenericArguments">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.GenericArgumentCollection GenericArguments { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.GenericArgumentCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasGenericArguments">
-      <MemberSignature Language="C#" Value="public bool HasGenericArguments { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsValueType">
-      <MemberSignature Language="C#" Value="public override bool IsValueType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/GenericParameter.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/GenericParameter.xml
deleted file mode 100644
index d485eff..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/GenericParameter.xml
+++ /dev/null
@@ -1,275 +0,0 @@
-<Type Name="GenericParameter" FullName="Mono.Cecil.GenericParameter">
-  <TypeSignature Language="C#" Value="public sealed class GenericParameter : Mono.Cecil.TypeReference" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.TypeReference</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public GenericParameter (string name, Mono.Cecil.IGenericParameterProvider owner);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="owner" Type="Mono.Cecil.IGenericParameterProvider" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="owner">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Attributes">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.GenericParameterAttributes Attributes { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.GenericParameterAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Constraints">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ConstraintCollection Constraints { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ConstraintCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="FullName">
-      <MemberSignature Language="C#" Value="public override string FullName { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasConstraints">
-      <MemberSignature Language="C#" Value="public bool HasConstraints { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasDefaultConstructorConstraint">
-      <MemberSignature Language="C#" Value="public bool HasDefaultConstructorConstraint { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasNotNullableValueTypeConstraint">
-      <MemberSignature Language="C#" Value="public bool HasNotNullableValueTypeConstraint { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasReferenceTypeConstraint">
-      <MemberSignature Language="C#" Value="public bool HasReferenceTypeConstraint { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsContravariant">
-      <MemberSignature Language="C#" Value="public bool IsContravariant { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsCovariant">
-      <MemberSignature Language="C#" Value="public bool IsCovariant { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsNonVariant">
-      <MemberSignature Language="C#" Value="public bool IsNonVariant { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public override string Name { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Namespace">
-      <MemberSignature Language="C#" Value="public override string Namespace { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Owner">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.IGenericParameterProvider Owner { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.IGenericParameterProvider</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Position">
-      <MemberSignature Language="C#" Value="public int Position { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resolve">
-      <MemberSignature Language="C#" Value="public override Mono.Cecil.TypeDefinition Resolve ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Scope">
-      <MemberSignature Language="C#" Value="public override Mono.Cecil.IMetadataScope Scope { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.IMetadataScope</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/GenericParameterAttributes.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/GenericParameterAttributes.xml
deleted file mode 100644
index 84bd79f..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/GenericParameterAttributes.xml
+++ /dev/null
@@ -1,125 +0,0 @@
-<Type Name="GenericParameterAttributes" FullName="Mono.Cecil.GenericParameterAttributes">
-  <TypeSignature Language="C#" Value="public enum GenericParameterAttributes" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Attributes>
-    <Attribute>
-      <AttributeName>System.Flags</AttributeName>
-    </Attribute>
-  </Attributes>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Contravariant">
-      <MemberSignature Language="C#" Value="Contravariant" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.GenericParameterAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Covariant">
-      <MemberSignature Language="C#" Value="Covariant" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.GenericParameterAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="DefaultConstructorConstraint">
-      <MemberSignature Language="C#" Value="DefaultConstructorConstraint" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.GenericParameterAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="NonVariant">
-      <MemberSignature Language="C#" Value="NonVariant" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.GenericParameterAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="NotNullableValueTypeConstraint">
-      <MemberSignature Language="C#" Value="NotNullableValueTypeConstraint" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.GenericParameterAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ReferenceTypeConstraint">
-      <MemberSignature Language="C#" Value="ReferenceTypeConstraint" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.GenericParameterAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="SpecialConstraintMask">
-      <MemberSignature Language="C#" Value="SpecialConstraintMask" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.GenericParameterAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="VarianceMask">
-      <MemberSignature Language="C#" Value="VarianceMask" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.GenericParameterAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/GenericParameterCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/GenericParameterCollection.xml
deleted file mode 100644
index 4c4c112..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/GenericParameterCollection.xml
+++ /dev/null
@@ -1,200 +0,0 @@
-<Type Name="GenericParameterCollection" FullName="Mono.Cecil.GenericParameterCollection">
-  <TypeSignature Language="C#" Value="public sealed class GenericParameterCollection : System.Collections.CollectionBase, Mono.Cecil.IReflectionVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public GenericParameterCollection (Mono.Cecil.IGenericParameterProvider container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.IGenericParameterProvider" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Mono.Cecil.GenericParameter value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.GenericParameter" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.IGenericParameterProvider Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.IGenericParameterProvider</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.GenericParameter value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.GenericParameter" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.GenericParameter value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.GenericParameter" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Insert">
-      <MemberSignature Language="C#" Value="public void Insert (int index, Mono.Cecil.GenericParameter value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="value" Type="Mono.Cecil.GenericParameter" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.GenericParameter this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.GenericParameter</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OnValidate">
-      <MemberSignature Language="C#" Value="protected override void OnValidate (object o);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="o" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="o">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.GenericParameter value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.GenericParameter" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IAnnotationProvider.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IAnnotationProvider.xml
deleted file mode 100644
index 37f3b22..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IAnnotationProvider.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<Type Name="IAnnotationProvider" FullName="Mono.Cecil.IAnnotationProvider">
-  <TypeSignature Language="C#" Value="public interface IAnnotationProvider" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Annotations">
-      <MemberSignature Language="C#" Value="public System.Collections.IDictionary Annotations { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Collections.IDictionary</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IAssemblyResolver.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IAssemblyResolver.xml
deleted file mode 100644
index da599a8..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IAssemblyResolver.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-<Type Name="IAssemblyResolver" FullName="Mono.Cecil.IAssemblyResolver">
-  <TypeSignature Language="C#" Value="public interface IAssemblyResolver" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Resolve">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.AssemblyDefinition Resolve (Mono.Cecil.AssemblyNameReference name);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="name" Type="Mono.Cecil.AssemblyNameReference" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resolve">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.AssemblyDefinition Resolve (string fullName);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="fullName" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="fullName">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ICustomAttributeProvider.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ICustomAttributeProvider.xml
deleted file mode 100644
index 321c2ed..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ICustomAttributeProvider.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<Type Name="ICustomAttributeProvider" FullName="Mono.Cecil.ICustomAttributeProvider">
-  <TypeSignature Language="C#" Value="public interface ICustomAttributeProvider" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="CustomAttributes">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.CustomAttributeCollection CustomAttributes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.CustomAttributeCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasCustomAttributes">
-      <MemberSignature Language="C#" Value="public bool HasCustomAttributes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IGenericInstance.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IGenericInstance.xml
deleted file mode 100644
index d24dc5a..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IGenericInstance.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<Type Name="IGenericInstance" FullName="Mono.Cecil.IGenericInstance">
-  <TypeSignature Language="C#" Value="public interface IGenericInstance : Mono.Cecil.IMetadataTokenProvider" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IMetadataTokenProvider</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="GenericArguments">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.GenericArgumentCollection GenericArguments { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.GenericArgumentCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasGenericArguments">
-      <MemberSignature Language="C#" Value="public bool HasGenericArguments { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IGenericParameterProvider.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IGenericParameterProvider.xml
deleted file mode 100644
index a5ef6d2..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IGenericParameterProvider.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<Type Name="IGenericParameterProvider" FullName="Mono.Cecil.IGenericParameterProvider">
-  <TypeSignature Language="C#" Value="public interface IGenericParameterProvider : Mono.Cecil.IMetadataTokenProvider" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IMetadataTokenProvider</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="GenericParameters">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.GenericParameterCollection GenericParameters { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.GenericParameterCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasGenericParameters">
-      <MemberSignature Language="C#" Value="public bool HasGenericParameters { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IHasConstant.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IHasConstant.xml
deleted file mode 100644
index 1f6f75c..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IHasConstant.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<Type Name="IHasConstant" FullName="Mono.Cecil.IHasConstant">
-  <TypeSignature Language="C#" Value="public interface IHasConstant : Mono.Cecil.IMetadataTokenProvider" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IMetadataTokenProvider</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Constant">
-      <MemberSignature Language="C#" Value="public object Constant { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Object</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasConstant">
-      <MemberSignature Language="C#" Value="public bool HasConstant { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IHasMarshalSpec.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IHasMarshalSpec.xml
deleted file mode 100644
index 0419803..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IHasMarshalSpec.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<Type Name="IHasMarshalSpec" FullName="Mono.Cecil.IHasMarshalSpec">
-  <TypeSignature Language="C#" Value="public interface IHasMarshalSpec : Mono.Cecil.IMetadataTokenProvider" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IMetadataTokenProvider</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="MarshalSpec">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MarshalSpec MarshalSpec { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MarshalSpec</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IHasSecurity.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IHasSecurity.xml
deleted file mode 100644
index 10f8af9..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IHasSecurity.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<Type Name="IHasSecurity" FullName="Mono.Cecil.IHasSecurity">
-  <TypeSignature Language="C#" Value="public interface IHasSecurity : Mono.Cecil.IMetadataTokenProvider" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IMetadataTokenProvider</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="HasSecurityDeclarations">
-      <MemberSignature Language="C#" Value="public bool HasSecurityDeclarations { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SecurityDeclarations">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.SecurityDeclarationCollection SecurityDeclarations { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.SecurityDeclarationCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IImporter.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IImporter.xml
deleted file mode 100644
index a47ec70..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IImporter.xml
+++ /dev/null
@@ -1,77 +0,0 @@
-<Type Name="IImporter" FullName="Mono.Cecil.IImporter">
-  <TypeSignature Language="C#" Value="public interface IImporter" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="ImportFieldReference">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.FieldReference ImportFieldReference (Mono.Cecil.FieldReference field, Mono.Cecil.ImportContext context);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="field" Type="Mono.Cecil.FieldReference" />
-        <Parameter Name="context" Type="Mono.Cecil.ImportContext" />
-      </Parameters>
-      <Docs>
-        <param name="field">To be added.</param>
-        <param name="context">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ImportMethodReference">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodReference ImportMethodReference (Mono.Cecil.MethodReference method, Mono.Cecil.ImportContext context);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="method" Type="Mono.Cecil.MethodReference" />
-        <Parameter Name="context" Type="Mono.Cecil.ImportContext" />
-      </Parameters>
-      <Docs>
-        <param name="method">To be added.</param>
-        <param name="context">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ImportTypeReference">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference ImportTypeReference (Mono.Cecil.TypeReference type, Mono.Cecil.ImportContext context);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="type" Type="Mono.Cecil.TypeReference" />
-        <Parameter Name="context" Type="Mono.Cecil.ImportContext" />
-      </Parameters>
-      <Docs>
-        <param name="type">To be added.</param>
-        <param name="context">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IMemberDefinition.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IMemberDefinition.xml
deleted file mode 100644
index cdbf4d4..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IMemberDefinition.xml
+++ /dev/null
@@ -1,66 +0,0 @@
-<Type Name="IMemberDefinition" FullName="Mono.Cecil.IMemberDefinition">
-  <TypeSignature Language="C#" Value="public interface IMemberDefinition : Mono.Cecil.ICustomAttributeProvider, Mono.Cecil.IMemberReference" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.ICustomAttributeProvider</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IMemberReference</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="DeclaringType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeDefinition DeclaringType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsRuntimeSpecialName">
-      <MemberSignature Language="C#" Value="public bool IsRuntimeSpecialName { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsSpecialName">
-      <MemberSignature Language="C#" Value="public bool IsSpecialName { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IMemberReference.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IMemberReference.xml
deleted file mode 100644
index 326a07f..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IMemberReference.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<Type Name="IMemberReference" FullName="Mono.Cecil.IMemberReference">
-  <TypeSignature Language="C#" Value="public interface IMemberReference : Mono.Cecil.IAnnotationProvider, Mono.Cecil.IMetadataTokenProvider, Mono.Cecil.IReflectionVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IAnnotationProvider</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IMetadataTokenProvider</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="DeclaringType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference DeclaringType { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public string Name { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IMetadataScope.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IMetadataScope.xml
deleted file mode 100644
index 8868513..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IMetadataScope.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<Type Name="IMetadataScope" FullName="Mono.Cecil.IMetadataScope">
-  <TypeSignature Language="C#" Value="public interface IMetadataScope : Mono.Cecil.IMetadataTokenProvider" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IMetadataTokenProvider</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public string Name { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IMetadataTokenProvider.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IMetadataTokenProvider.xml
deleted file mode 100644
index 0dfe95f..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IMetadataTokenProvider.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<Type Name="IMetadataTokenProvider" FullName="Mono.Cecil.IMetadataTokenProvider">
-  <TypeSignature Language="C#" Value="public interface IMetadataTokenProvider" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="MetadataToken">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken MetadataToken { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IMethodSignature.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IMethodSignature.xml
deleted file mode 100644
index f29a394..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IMethodSignature.xml
+++ /dev/null
@@ -1,120 +0,0 @@
-<Type Name="IMethodSignature" FullName="Mono.Cecil.IMethodSignature">
-  <TypeSignature Language="C#" Value="public interface IMethodSignature" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="CallingConvention">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodCallingConvention CallingConvention { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodCallingConvention</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ExplicitThis">
-      <MemberSignature Language="C#" Value="public bool ExplicitThis { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetSentinel">
-      <MemberSignature Language="C#" Value="public int GetSentinel ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasParameters">
-      <MemberSignature Language="C#" Value="public bool HasParameters { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasThis">
-      <MemberSignature Language="C#" Value="public bool HasThis { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Parameters">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ParameterDefinitionCollection Parameters { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ParameterDefinitionCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ReturnType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodReturnType ReturnType { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodReturnType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IReflectionStructureVisitable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IReflectionStructureVisitable.xml
deleted file mode 100644
index e26001c..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IReflectionStructureVisitable.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<Type Name="IReflectionStructureVisitable" FullName="Mono.Cecil.IReflectionStructureVisitable">
-  <TypeSignature Language="C#" Value="public interface IReflectionStructureVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionStructureVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionStructureVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IReflectionStructureVisitor.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IReflectionStructureVisitor.xml
deleted file mode 100644
index 923bf98..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IReflectionStructureVisitor.xml
+++ /dev/null
@@ -1,248 +0,0 @@
-<Type Name="IReflectionStructureVisitor" FullName="Mono.Cecil.IReflectionStructureVisitor">
-  <TypeSignature Language="C#" Value="public interface IReflectionStructureVisitor" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="TerminateAssemblyDefinition">
-      <MemberSignature Language="C#" Value="public void TerminateAssemblyDefinition (Mono.Cecil.AssemblyDefinition asm);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="asm" Type="Mono.Cecil.AssemblyDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="asm">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyDefinition">
-      <MemberSignature Language="C#" Value="public void VisitAssemblyDefinition (Mono.Cecil.AssemblyDefinition asm);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="asm" Type="Mono.Cecil.AssemblyDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="asm">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyLinkedResource">
-      <MemberSignature Language="C#" Value="public void VisitAssemblyLinkedResource (Mono.Cecil.AssemblyLinkedResource res);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="res" Type="Mono.Cecil.AssemblyLinkedResource" />
-      </Parameters>
-      <Docs>
-        <param name="res">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyNameDefinition">
-      <MemberSignature Language="C#" Value="public void VisitAssemblyNameDefinition (Mono.Cecil.AssemblyNameDefinition name);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="name" Type="Mono.Cecil.AssemblyNameDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyNameReference">
-      <MemberSignature Language="C#" Value="public void VisitAssemblyNameReference (Mono.Cecil.AssemblyNameReference name);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="name" Type="Mono.Cecil.AssemblyNameReference" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitAssemblyNameReferenceCollection">
-      <MemberSignature Language="C#" Value="public void VisitAssemblyNameReferenceCollection (Mono.Cecil.AssemblyNameReferenceCollection names);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="names" Type="Mono.Cecil.AssemblyNameReferenceCollection" />
-      </Parameters>
-      <Docs>
-        <param name="names">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitEmbeddedResource">
-      <MemberSignature Language="C#" Value="public void VisitEmbeddedResource (Mono.Cecil.EmbeddedResource res);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="res" Type="Mono.Cecil.EmbeddedResource" />
-      </Parameters>
-      <Docs>
-        <param name="res">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitLinkedResource">
-      <MemberSignature Language="C#" Value="public void VisitLinkedResource (Mono.Cecil.LinkedResource res);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="res" Type="Mono.Cecil.LinkedResource" />
-      </Parameters>
-      <Docs>
-        <param name="res">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitModuleDefinition">
-      <MemberSignature Language="C#" Value="public void VisitModuleDefinition (Mono.Cecil.ModuleDefinition module);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="module" Type="Mono.Cecil.ModuleDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="module">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitModuleDefinitionCollection">
-      <MemberSignature Language="C#" Value="public void VisitModuleDefinitionCollection (Mono.Cecil.ModuleDefinitionCollection modules);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="modules" Type="Mono.Cecil.ModuleDefinitionCollection" />
-      </Parameters>
-      <Docs>
-        <param name="modules">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitModuleReference">
-      <MemberSignature Language="C#" Value="public void VisitModuleReference (Mono.Cecil.ModuleReference module);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="module" Type="Mono.Cecil.ModuleReference" />
-      </Parameters>
-      <Docs>
-        <param name="module">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitModuleReferenceCollection">
-      <MemberSignature Language="C#" Value="public void VisitModuleReferenceCollection (Mono.Cecil.ModuleReferenceCollection modules);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="modules" Type="Mono.Cecil.ModuleReferenceCollection" />
-      </Parameters>
-      <Docs>
-        <param name="modules">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitResourceCollection">
-      <MemberSignature Language="C#" Value="public void VisitResourceCollection (Mono.Cecil.ResourceCollection resources);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="resources" Type="Mono.Cecil.ResourceCollection" />
-      </Parameters>
-      <Docs>
-        <param name="resources">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IReflectionVisitable.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IReflectionVisitable.xml
deleted file mode 100644
index 7894f17..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IReflectionVisitable.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<Type Name="IReflectionVisitable" FullName="Mono.Cecil.IReflectionVisitable">
-  <TypeSignature Language="C#" Value="public interface IReflectionVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IReflectionVisitor.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IReflectionVisitor.xml
deleted file mode 100644
index ddae454..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IReflectionVisitor.xml
+++ /dev/null
@@ -1,662 +0,0 @@
-<Type Name="IReflectionVisitor" FullName="Mono.Cecil.IReflectionVisitor">
-  <TypeSignature Language="C#" Value="public interface IReflectionVisitor" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="TerminateModuleDefinition">
-      <MemberSignature Language="C#" Value="public void TerminateModuleDefinition (Mono.Cecil.ModuleDefinition module);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="module" Type="Mono.Cecil.ModuleDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="module">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitConstructor">
-      <MemberSignature Language="C#" Value="public void VisitConstructor (Mono.Cecil.MethodDefinition ctor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="ctor" Type="Mono.Cecil.MethodDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="ctor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitConstructorCollection">
-      <MemberSignature Language="C#" Value="public void VisitConstructorCollection (Mono.Cecil.ConstructorCollection ctors);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="ctors" Type="Mono.Cecil.ConstructorCollection" />
-      </Parameters>
-      <Docs>
-        <param name="ctors">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitCustomAttribute">
-      <MemberSignature Language="C#" Value="public void VisitCustomAttribute (Mono.Cecil.CustomAttribute customAttr);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="customAttr" Type="Mono.Cecil.CustomAttribute" />
-      </Parameters>
-      <Docs>
-        <param name="customAttr">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitCustomAttributeCollection">
-      <MemberSignature Language="C#" Value="public void VisitCustomAttributeCollection (Mono.Cecil.CustomAttributeCollection customAttrs);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="customAttrs" Type="Mono.Cecil.CustomAttributeCollection" />
-      </Parameters>
-      <Docs>
-        <param name="customAttrs">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitEventDefinition">
-      <MemberSignature Language="C#" Value="public void VisitEventDefinition (Mono.Cecil.EventDefinition evt);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="evt" Type="Mono.Cecil.EventDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="evt">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitEventDefinitionCollection">
-      <MemberSignature Language="C#" Value="public void VisitEventDefinitionCollection (Mono.Cecil.EventDefinitionCollection events);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="events" Type="Mono.Cecil.EventDefinitionCollection" />
-      </Parameters>
-      <Docs>
-        <param name="events">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitExternType">
-      <MemberSignature Language="C#" Value="public void VisitExternType (Mono.Cecil.TypeReference externType);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="externType" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="externType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitExternTypeCollection">
-      <MemberSignature Language="C#" Value="public void VisitExternTypeCollection (Mono.Cecil.ExternTypeCollection externs);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="externs" Type="Mono.Cecil.ExternTypeCollection" />
-      </Parameters>
-      <Docs>
-        <param name="externs">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFieldDefinition">
-      <MemberSignature Language="C#" Value="public void VisitFieldDefinition (Mono.Cecil.FieldDefinition field);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="field" Type="Mono.Cecil.FieldDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="field">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitFieldDefinitionCollection">
-      <MemberSignature Language="C#" Value="public void VisitFieldDefinitionCollection (Mono.Cecil.FieldDefinitionCollection fields);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="fields" Type="Mono.Cecil.FieldDefinitionCollection" />
-      </Parameters>
-      <Docs>
-        <param name="fields">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitGenericParameter">
-      <MemberSignature Language="C#" Value="public void VisitGenericParameter (Mono.Cecil.GenericParameter genparam);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="genparam" Type="Mono.Cecil.GenericParameter" />
-      </Parameters>
-      <Docs>
-        <param name="genparam">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitGenericParameterCollection">
-      <MemberSignature Language="C#" Value="public void VisitGenericParameterCollection (Mono.Cecil.GenericParameterCollection genparams);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="genparams" Type="Mono.Cecil.GenericParameterCollection" />
-      </Parameters>
-      <Docs>
-        <param name="genparams">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitInterface">
-      <MemberSignature Language="C#" Value="public void VisitInterface (Mono.Cecil.TypeReference interf);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="interf" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="interf">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitInterfaceCollection">
-      <MemberSignature Language="C#" Value="public void VisitInterfaceCollection (Mono.Cecil.InterfaceCollection interfaces);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="interfaces" Type="Mono.Cecil.InterfaceCollection" />
-      </Parameters>
-      <Docs>
-        <param name="interfaces">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMarshalSpec">
-      <MemberSignature Language="C#" Value="public void VisitMarshalSpec (Mono.Cecil.MarshalSpec marshalSpec);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="marshalSpec" Type="Mono.Cecil.MarshalSpec" />
-      </Parameters>
-      <Docs>
-        <param name="marshalSpec">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMemberReference">
-      <MemberSignature Language="C#" Value="public void VisitMemberReference (Mono.Cecil.MemberReference member);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="member" Type="Mono.Cecil.MemberReference" />
-      </Parameters>
-      <Docs>
-        <param name="member">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMemberReferenceCollection">
-      <MemberSignature Language="C#" Value="public void VisitMemberReferenceCollection (Mono.Cecil.MemberReferenceCollection members);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="members" Type="Mono.Cecil.MemberReferenceCollection" />
-      </Parameters>
-      <Docs>
-        <param name="members">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMethodDefinition">
-      <MemberSignature Language="C#" Value="public void VisitMethodDefinition (Mono.Cecil.MethodDefinition method);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="method" Type="Mono.Cecil.MethodDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="method">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitMethodDefinitionCollection">
-      <MemberSignature Language="C#" Value="public void VisitMethodDefinitionCollection (Mono.Cecil.MethodDefinitionCollection methods);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="methods" Type="Mono.Cecil.MethodDefinitionCollection" />
-      </Parameters>
-      <Docs>
-        <param name="methods">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitModuleDefinition">
-      <MemberSignature Language="C#" Value="public void VisitModuleDefinition (Mono.Cecil.ModuleDefinition module);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="module" Type="Mono.Cecil.ModuleDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="module">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitNestedType">
-      <MemberSignature Language="C#" Value="public void VisitNestedType (Mono.Cecil.TypeDefinition nestedType);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="nestedType" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="nestedType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitNestedTypeCollection">
-      <MemberSignature Language="C#" Value="public void VisitNestedTypeCollection (Mono.Cecil.NestedTypeCollection nestedTypes);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="nestedTypes" Type="Mono.Cecil.NestedTypeCollection" />
-      </Parameters>
-      <Docs>
-        <param name="nestedTypes">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitOverride">
-      <MemberSignature Language="C#" Value="public void VisitOverride (Mono.Cecil.MethodReference ov);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="ov" Type="Mono.Cecil.MethodReference" />
-      </Parameters>
-      <Docs>
-        <param name="ov">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitOverrideCollection">
-      <MemberSignature Language="C#" Value="public void VisitOverrideCollection (Mono.Cecil.OverrideCollection meth);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="meth" Type="Mono.Cecil.OverrideCollection" />
-      </Parameters>
-      <Docs>
-        <param name="meth">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitParameterDefinition">
-      <MemberSignature Language="C#" Value="public void VisitParameterDefinition (Mono.Cecil.ParameterDefinition parameter);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="parameter" Type="Mono.Cecil.ParameterDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="parameter">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitParameterDefinitionCollection">
-      <MemberSignature Language="C#" Value="public void VisitParameterDefinitionCollection (Mono.Cecil.ParameterDefinitionCollection parameters);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="parameters" Type="Mono.Cecil.ParameterDefinitionCollection" />
-      </Parameters>
-      <Docs>
-        <param name="parameters">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitPInvokeInfo">
-      <MemberSignature Language="C#" Value="public void VisitPInvokeInfo (Mono.Cecil.PInvokeInfo pinvk);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="pinvk" Type="Mono.Cecil.PInvokeInfo" />
-      </Parameters>
-      <Docs>
-        <param name="pinvk">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitPropertyDefinition">
-      <MemberSignature Language="C#" Value="public void VisitPropertyDefinition (Mono.Cecil.PropertyDefinition property);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="property" Type="Mono.Cecil.PropertyDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="property">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitPropertyDefinitionCollection">
-      <MemberSignature Language="C#" Value="public void VisitPropertyDefinitionCollection (Mono.Cecil.PropertyDefinitionCollection properties);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="properties" Type="Mono.Cecil.PropertyDefinitionCollection" />
-      </Parameters>
-      <Docs>
-        <param name="properties">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitSecurityDeclaration">
-      <MemberSignature Language="C#" Value="public void VisitSecurityDeclaration (Mono.Cecil.SecurityDeclaration secDecl);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="secDecl" Type="Mono.Cecil.SecurityDeclaration" />
-      </Parameters>
-      <Docs>
-        <param name="secDecl">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitSecurityDeclarationCollection">
-      <MemberSignature Language="C#" Value="public void VisitSecurityDeclarationCollection (Mono.Cecil.SecurityDeclarationCollection secDecls);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="secDecls" Type="Mono.Cecil.SecurityDeclarationCollection" />
-      </Parameters>
-      <Docs>
-        <param name="secDecls">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitTypeDefinition">
-      <MemberSignature Language="C#" Value="public void VisitTypeDefinition (Mono.Cecil.TypeDefinition type);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="type" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="type">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitTypeDefinitionCollection">
-      <MemberSignature Language="C#" Value="public void VisitTypeDefinitionCollection (Mono.Cecil.TypeDefinitionCollection types);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="types" Type="Mono.Cecil.TypeDefinitionCollection" />
-      </Parameters>
-      <Docs>
-        <param name="types">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitTypeReference">
-      <MemberSignature Language="C#" Value="public void VisitTypeReference (Mono.Cecil.TypeReference type);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="type" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="type">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="VisitTypeReferenceCollection">
-      <MemberSignature Language="C#" Value="public void VisitTypeReferenceCollection (Mono.Cecil.TypeReferenceCollection refs);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="refs" Type="Mono.Cecil.TypeReferenceCollection" />
-      </Parameters>
-      <Docs>
-        <param name="refs">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IRequireResolving.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IRequireResolving.xml
deleted file mode 100644
index 445bafb..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/IRequireResolving.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-<Type Name="IRequireResolving" FullName="Mono.Cecil.IRequireResolving">
-  <TypeSignature Language="C#" Value="public interface IRequireResolving" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Blob">
-      <MemberSignature Language="C#" Value="public byte[] Blob { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte[]</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resolve">
-      <MemberSignature Language="C#" Value="public bool Resolve ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resolved">
-      <MemberSignature Language="C#" Value="public bool Resolved { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ImportContext.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ImportContext.xml
deleted file mode 100644
index 6ddeaff..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ImportContext.xml
+++ /dev/null
@@ -1,121 +0,0 @@
-<Type Name="ImportContext" FullName="Mono.Cecil.ImportContext">
-  <TypeSignature Language="C#" Value="public class ImportContext" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ImportContext (Mono.Cecil.IImporter importer);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="importer" Type="Mono.Cecil.IImporter" />
-      </Parameters>
-      <Docs>
-        <param name="importer">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ImportContext (Mono.Cecil.IImporter importer, Mono.Cecil.IGenericParameterProvider provider);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="importer" Type="Mono.Cecil.IImporter" />
-        <Parameter Name="provider" Type="Mono.Cecil.IGenericParameterProvider" />
-      </Parameters>
-      <Docs>
-        <param name="importer">To be added.</param>
-        <param name="provider">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GenericContext">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.GenericContext GenericContext { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.GenericContext</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Import">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.FieldReference Import (Mono.Cecil.FieldReference field);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="field" Type="Mono.Cecil.FieldReference" />
-      </Parameters>
-      <Docs>
-        <param name="field">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Import">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodReference Import (Mono.Cecil.MethodReference meth);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="meth" Type="Mono.Cecil.MethodReference" />
-      </Parameters>
-      <Docs>
-        <param name="meth">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Import">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference Import (Mono.Cecil.TypeReference type);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="type" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="type">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/InterfaceCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/InterfaceCollection.xml
deleted file mode 100644
index a6ddb7c..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/InterfaceCollection.xml
+++ /dev/null
@@ -1,200 +0,0 @@
-<Type Name="InterfaceCollection" FullName="Mono.Cecil.InterfaceCollection">
-  <TypeSignature Language="C#" Value="public sealed class InterfaceCollection : System.Collections.CollectionBase, Mono.Cecil.IReflectionVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public InterfaceCollection (Mono.Cecil.TypeDefinition container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Mono.Cecil.TypeReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeDefinition Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.TypeReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.TypeReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Insert">
-      <MemberSignature Language="C#" Value="public void Insert (int index, Mono.Cecil.TypeReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="value" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OnValidate">
-      <MemberSignature Language="C#" Value="protected override void OnValidate (object o);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="o" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="o">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.TypeReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/LinkedResource.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/LinkedResource.xml
deleted file mode 100644
index d046efb..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/LinkedResource.xml
+++ /dev/null
@@ -1,84 +0,0 @@
-<Type Name="LinkedResource" FullName="Mono.Cecil.LinkedResource">
-  <TypeSignature Language="C#" Value="public sealed class LinkedResource : Mono.Cecil.Resource" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.Resource</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public LinkedResource (string name, Mono.Cecil.ManifestResourceAttributes flags, string file);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="flags" Type="Mono.Cecil.ManifestResourceAttributes" />
-        <Parameter Name="file" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="flags">To be added.</param>
-        <param name="file">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public override void Accept (Mono.Cecil.IReflectionStructureVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionStructureVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="File">
-      <MemberSignature Language="C#" Value="public string File { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Hash">
-      <MemberSignature Language="C#" Value="public byte[] Hash { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte[]</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ManifestResourceAttributes.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ManifestResourceAttributes.xml
deleted file mode 100644
index 60163f7..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ManifestResourceAttributes.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-<Type Name="ManifestResourceAttributes" FullName="Mono.Cecil.ManifestResourceAttributes">
-  <TypeSignature Language="C#" Value="public enum ManifestResourceAttributes" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Attributes>
-    <Attribute>
-      <AttributeName>System.Flags</AttributeName>
-    </Attribute>
-  </Attributes>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Private">
-      <MemberSignature Language="C#" Value="Private" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ManifestResourceAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Public">
-      <MemberSignature Language="C#" Value="Public" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ManifestResourceAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="VisibilityMask">
-      <MemberSignature Language="C#" Value="VisibilityMask" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ManifestResourceAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MarshalSpec.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MarshalSpec.xml
deleted file mode 100644
index 4e8ad0b..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MarshalSpec.xml
+++ /dev/null
@@ -1,101 +0,0 @@
-<Type Name="MarshalSpec" FullName="Mono.Cecil.MarshalSpec">
-  <TypeSignature Language="C#" Value="public class MarshalSpec" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public MarshalSpec (Mono.Cecil.NativeType natIntr, Mono.Cecil.IHasMarshalSpec container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="natIntr" Type="Mono.Cecil.NativeType" />
-        <Parameter Name="container" Type="Mono.Cecil.IHasMarshalSpec" />
-      </Parameters>
-      <Docs>
-        <param name="natIntr">To be added.</param>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public virtual void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CloneInto">
-      <MemberSignature Language="C#" Value="public virtual Mono.Cecil.MarshalSpec CloneInto (Mono.Cecil.IHasMarshalSpec container);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MarshalSpec</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.IHasMarshalSpec" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.IHasMarshalSpec Container { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.IHasMarshalSpec</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="NativeIntrinsic">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.NativeType NativeIntrinsic { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MemberReference.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MemberReference.xml
deleted file mode 100644
index c3357d9..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MemberReference.xml
+++ /dev/null
@@ -1,130 +0,0 @@
-<Type Name="MemberReference" FullName="Mono.Cecil.MemberReference">
-  <TypeSignature Language="C#" Value="public abstract class MemberReference : Mono.Cecil.IMemberReference" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IMemberReference</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public MemberReference (string name);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public virtual void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="DeclaringType">
-      <MemberSignature Language="C#" Value="public virtual Mono.Cecil.TypeReference DeclaringType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MetadataToken">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken MetadataToken { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Mono.Cecil.IAnnotationProvider.Annotations">
-      <MemberSignature Language="C#" Value="System.Collections.IDictionary Mono.Cecil.IAnnotationProvider.Annotations { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Collections.IDictionary</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public virtual string Name { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ToString">
-      <MemberSignature Language="C#" Value="public override string ToString ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MemberReferenceCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MemberReferenceCollection.xml
deleted file mode 100644
index c880e8a..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MemberReferenceCollection.xml
+++ /dev/null
@@ -1,200 +0,0 @@
-<Type Name="MemberReferenceCollection" FullName="Mono.Cecil.MemberReferenceCollection">
-  <TypeSignature Language="C#" Value="public sealed class MemberReferenceCollection : System.Collections.CollectionBase, Mono.Cecil.IReflectionVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public MemberReferenceCollection (Mono.Cecil.ModuleDefinition container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.ModuleDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Mono.Cecil.MemberReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.MemberReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ModuleDefinition Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ModuleDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.MemberReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.MemberReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.MemberReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.MemberReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Insert">
-      <MemberSignature Language="C#" Value="public void Insert (int index, Mono.Cecil.MemberReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="value" Type="Mono.Cecil.MemberReference" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MemberReference this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MemberReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OnValidate">
-      <MemberSignature Language="C#" Value="protected override void OnValidate (object o);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="o" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="o">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.MemberReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.MemberReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodAttributes.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodAttributes.xml
deleted file mode 100644
index 5fda935..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodAttributes.xml
+++ /dev/null
@@ -1,320 +0,0 @@
-<Type Name="MethodAttributes" FullName="Mono.Cecil.MethodAttributes">
-  <TypeSignature Language="C#" Value="public enum MethodAttributes" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Attributes>
-    <Attribute>
-      <AttributeName>System.Flags</AttributeName>
-    </Attribute>
-  </Attributes>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Abstract">
-      <MemberSignature Language="C#" Value="Abstract" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Assem">
-      <MemberSignature Language="C#" Value="Assem" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Compilercontrolled">
-      <MemberSignature Language="C#" Value="Compilercontrolled" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="FamANDAssem">
-      <MemberSignature Language="C#" Value="FamANDAssem" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Family">
-      <MemberSignature Language="C#" Value="Family" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="FamORAssem">
-      <MemberSignature Language="C#" Value="FamORAssem" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Final">
-      <MemberSignature Language="C#" Value="Final" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="HasSecurity">
-      <MemberSignature Language="C#" Value="HasSecurity" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="HideBySig">
-      <MemberSignature Language="C#" Value="HideBySig" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="MemberAccessMask">
-      <MemberSignature Language="C#" Value="MemberAccessMask" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="NewSlot">
-      <MemberSignature Language="C#" Value="NewSlot" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="PInvokeImpl">
-      <MemberSignature Language="C#" Value="PInvokeImpl" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Private">
-      <MemberSignature Language="C#" Value="Private" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Public">
-      <MemberSignature Language="C#" Value="Public" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="RequireSecObject">
-      <MemberSignature Language="C#" Value="RequireSecObject" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ReuseSlot">
-      <MemberSignature Language="C#" Value="ReuseSlot" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="RTSpecialName">
-      <MemberSignature Language="C#" Value="RTSpecialName" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="SpecialName">
-      <MemberSignature Language="C#" Value="SpecialName" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Static">
-      <MemberSignature Language="C#" Value="Static" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Strict">
-      <MemberSignature Language="C#" Value="Strict" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="UnmanagedExport">
-      <MemberSignature Language="C#" Value="UnmanagedExport" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Virtual">
-      <MemberSignature Language="C#" Value="Virtual" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="VtableLayoutMask">
-      <MemberSignature Language="C#" Value="VtableLayoutMask" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodCallingConvention.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodCallingConvention.xml
deleted file mode 100644
index 49e47e1..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodCallingConvention.xml
+++ /dev/null
@@ -1,107 +0,0 @@
-<Type Name="MethodCallingConvention" FullName="Mono.Cecil.MethodCallingConvention">
-  <TypeSignature Language="C#" Value="public enum MethodCallingConvention" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="C">
-      <MemberSignature Language="C#" Value="C" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodCallingConvention</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Default">
-      <MemberSignature Language="C#" Value="Default" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodCallingConvention</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="FastCall">
-      <MemberSignature Language="C#" Value="FastCall" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodCallingConvention</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Generic">
-      <MemberSignature Language="C#" Value="Generic" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodCallingConvention</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="StdCall">
-      <MemberSignature Language="C#" Value="StdCall" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodCallingConvention</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ThisCall">
-      <MemberSignature Language="C#" Value="ThisCall" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodCallingConvention</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="VarArg">
-      <MemberSignature Language="C#" Value="VarArg" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodCallingConvention</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodDefinition.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodDefinition.xml
deleted file mode 100644
index c411788..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodDefinition.xml
+++ /dev/null
@@ -1,928 +0,0 @@
-<Type Name="MethodDefinition" FullName="Mono.Cecil.MethodDefinition">
-  <TypeSignature Language="C#" Value="public sealed class MethodDefinition : Mono.Cecil.MethodReference, Mono.Cecil.IHasSecurity, Mono.Cecil.IMemberDefinition" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.MethodReference</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IHasSecurity</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IMemberDefinition</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public MethodDefinition (string name, Mono.Cecil.MethodAttributes attrs, Mono.Cecil.TypeReference returnType);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="attrs" Type="Mono.Cecil.MethodAttributes" />
-        <Parameter Name="returnType" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="attrs">To be added.</param>
-        <param name="returnType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public MethodDefinition (string name, Mono.Cecil.Binary.RVA rva, Mono.Cecil.MethodAttributes attrs, Mono.Cecil.MethodImplAttributes implAttrs, bool hasThis, bool explicitThis, Mono.Cecil.MethodCallingConvention callConv);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="rva" Type="Mono.Cecil.Binary.RVA" />
-        <Parameter Name="attrs" Type="Mono.Cecil.MethodAttributes" />
-        <Parameter Name="implAttrs" Type="Mono.Cecil.MethodImplAttributes" />
-        <Parameter Name="hasThis" Type="System.Boolean" />
-        <Parameter Name="explicitThis" Type="System.Boolean" />
-        <Parameter Name="callConv" Type="Mono.Cecil.MethodCallingConvention" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="rva">To be added.</param>
-        <param name="attrs">To be added.</param>
-        <param name="implAttrs">To be added.</param>
-        <param name="hasThis">To be added.</param>
-        <param name="explicitThis">To be added.</param>
-        <param name="callConv">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public override void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Attributes">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodAttributes Attributes { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Body">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.MethodBody Body { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Cil.MethodBody</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Cctor">
-      <MemberSignature Language="C#" Value="public const string Cctor;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Clone">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodDefinition Clone ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Ctor">
-      <MemberSignature Language="C#" Value="public const string Ctor;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CustomAttributes">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.CustomAttributeCollection CustomAttributes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.CustomAttributeCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="DeclaringType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeDefinition DeclaringType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasBody">
-      <MemberSignature Language="C#" Value="public bool HasBody { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasCustomAttributes">
-      <MemberSignature Language="C#" Value="public bool HasCustomAttributes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasOverrides">
-      <MemberSignature Language="C#" Value="public bool HasOverrides { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasSecurity">
-      <MemberSignature Language="C#" Value="public bool HasSecurity { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasSecurityDeclarations">
-      <MemberSignature Language="C#" Value="public bool HasSecurityDeclarations { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ImplAttributes">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodImplAttributes ImplAttributes { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodImplAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsAbstract">
-      <MemberSignature Language="C#" Value="public bool IsAbstract { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsAddOn">
-      <MemberSignature Language="C#" Value="public bool IsAddOn { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsAssembly">
-      <MemberSignature Language="C#" Value="public bool IsAssembly { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsCompilerControlled">
-      <MemberSignature Language="C#" Value="public bool IsCompilerControlled { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsConstructor">
-      <MemberSignature Language="C#" Value="public bool IsConstructor { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsFamily">
-      <MemberSignature Language="C#" Value="public bool IsFamily { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsFamilyAndAssembly">
-      <MemberSignature Language="C#" Value="public bool IsFamilyAndAssembly { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsFamilyOrAssembly">
-      <MemberSignature Language="C#" Value="public bool IsFamilyOrAssembly { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsFinal">
-      <MemberSignature Language="C#" Value="public bool IsFinal { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsFire">
-      <MemberSignature Language="C#" Value="public bool IsFire { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsForwardRef">
-      <MemberSignature Language="C#" Value="public bool IsForwardRef { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsGetter">
-      <MemberSignature Language="C#" Value="public bool IsGetter { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsHideBySig">
-      <MemberSignature Language="C#" Value="public bool IsHideBySig { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsIL">
-      <MemberSignature Language="C#" Value="public bool IsIL { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsInternalCall">
-      <MemberSignature Language="C#" Value="public bool IsInternalCall { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsManaged">
-      <MemberSignature Language="C#" Value="public bool IsManaged { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsNative">
-      <MemberSignature Language="C#" Value="public bool IsNative { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsNewSlot">
-      <MemberSignature Language="C#" Value="public bool IsNewSlot { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsOther">
-      <MemberSignature Language="C#" Value="public bool IsOther { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsPInvokeImpl">
-      <MemberSignature Language="C#" Value="public bool IsPInvokeImpl { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsPreserveSig">
-      <MemberSignature Language="C#" Value="public bool IsPreserveSig { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsPrivate">
-      <MemberSignature Language="C#" Value="public bool IsPrivate { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsPublic">
-      <MemberSignature Language="C#" Value="public bool IsPublic { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsRemoveOn">
-      <MemberSignature Language="C#" Value="public bool IsRemoveOn { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsReuseSlot">
-      <MemberSignature Language="C#" Value="public bool IsReuseSlot { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsRuntime">
-      <MemberSignature Language="C#" Value="public bool IsRuntime { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsRuntimeSpecialName">
-      <MemberSignature Language="C#" Value="public bool IsRuntimeSpecialName { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsSetter">
-      <MemberSignature Language="C#" Value="public bool IsSetter { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsSpecialName">
-      <MemberSignature Language="C#" Value="public bool IsSpecialName { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsStatic">
-      <MemberSignature Language="C#" Value="public bool IsStatic { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsStrict">
-      <MemberSignature Language="C#" Value="public bool IsStrict { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsSynchronized">
-      <MemberSignature Language="C#" Value="public bool IsSynchronized { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsUnmanaged">
-      <MemberSignature Language="C#" Value="public bool IsUnmanaged { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsUnmanagedExport">
-      <MemberSignature Language="C#" Value="public bool IsUnmanagedExport { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsVirtual">
-      <MemberSignature Language="C#" Value="public bool IsVirtual { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="NoInlining">
-      <MemberSignature Language="C#" Value="public bool NoInlining { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Overrides">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.OverrideCollection Overrides { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.OverrideCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PInvokeInfo">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.PInvokeInfo PInvokeInfo { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PInvokeInfo</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resolve">
-      <MemberSignature Language="C#" Value="public override Mono.Cecil.MethodDefinition Resolve ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RVA">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.RVA RVA { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.RVA</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SecurityDeclarations">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.SecurityDeclarationCollection SecurityDeclarations { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.SecurityDeclarationCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SemanticsAttributes">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodSemanticsAttributes SemanticsAttributes { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodSemanticsAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="This">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ParameterDefinition This { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ParameterDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodDefinitionCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodDefinitionCollection.xml
deleted file mode 100644
index ae590c1..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodDefinitionCollection.xml
+++ /dev/null
@@ -1,315 +0,0 @@
-<Type Name="MethodDefinitionCollection" FullName="Mono.Cecil.MethodDefinitionCollection">
-  <TypeSignature Language="C#" Value="public sealed class MethodDefinitionCollection : System.Collections.CollectionBase, Mono.Cecil.IReflectionVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public MethodDefinitionCollection (Mono.Cecil.TypeDefinition container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Mono.Cecil.MethodDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.MethodDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Clear">
-      <MemberSignature Language="C#" Value="public void Clear ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeDefinition Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.MethodDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.MethodDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetMethod">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodDefinition[] GetMethod (string name);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition[]</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetMethod">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodDefinition GetMethod (string name, Mono.Cecil.ParameterDefinitionCollection parameters);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="parameters" Type="Mono.Cecil.ParameterDefinitionCollection" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="parameters">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetMethod">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodDefinition GetMethod (string name, Mono.Cecil.TypeReference[] parameters);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="parameters" Type="Mono.Cecil.TypeReference[]" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="parameters">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetMethod">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodDefinition GetMethod (string name, Type[] parameters);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="parameters" Type="System.Type[]" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="parameters">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.MethodDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.MethodDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Insert">
-      <MemberSignature Language="C#" Value="public void Insert (int index, Mono.Cecil.MethodDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="value" Type="Mono.Cecil.MethodDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodDefinition this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OnValidate">
-      <MemberSignature Language="C#" Value="protected override void OnValidate (object o);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="o" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="o">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.MethodDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.MethodDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RemoveAt">
-      <MemberSignature Language="C#" Value="public void RemoveAt (int index);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodImplAttributes.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodImplAttributes.xml
deleted file mode 100644
index 0811129..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodImplAttributes.xml
+++ /dev/null
@@ -1,203 +0,0 @@
-<Type Name="MethodImplAttributes" FullName="Mono.Cecil.MethodImplAttributes">
-  <TypeSignature Language="C#" Value="public enum MethodImplAttributes" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Attributes>
-    <Attribute>
-      <AttributeName>System.Flags</AttributeName>
-    </Attribute>
-  </Attributes>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="CodeTypeMask">
-      <MemberSignature Language="C#" Value="CodeTypeMask" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodImplAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ForwardRef">
-      <MemberSignature Language="C#" Value="ForwardRef" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodImplAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="IL">
-      <MemberSignature Language="C#" Value="IL" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodImplAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="InternalCall">
-      <MemberSignature Language="C#" Value="InternalCall" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodImplAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Managed">
-      <MemberSignature Language="C#" Value="Managed" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodImplAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ManagedMask">
-      <MemberSignature Language="C#" Value="ManagedMask" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodImplAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="MaxMethodImplVal">
-      <MemberSignature Language="C#" Value="MaxMethodImplVal" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodImplAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Native">
-      <MemberSignature Language="C#" Value="Native" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodImplAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="NoInlining">
-      <MemberSignature Language="C#" Value="NoInlining" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodImplAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="OPTIL">
-      <MemberSignature Language="C#" Value="OPTIL" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodImplAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="PreserveSig">
-      <MemberSignature Language="C#" Value="PreserveSig" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodImplAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Runtime">
-      <MemberSignature Language="C#" Value="Runtime" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodImplAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Synchronized">
-      <MemberSignature Language="C#" Value="Synchronized" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodImplAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Unmanaged">
-      <MemberSignature Language="C#" Value="Unmanaged" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodImplAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodReference.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodReference.xml
deleted file mode 100644
index 63fad7a..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodReference.xml
+++ /dev/null
@@ -1,233 +0,0 @@
-<Type Name="MethodReference" FullName="Mono.Cecil.MethodReference">
-  <TypeSignature Language="C#" Value="public class MethodReference : Mono.Cecil.MemberReference, Mono.Cecil.IGenericParameterProvider, Mono.Cecil.IMethodSignature" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.MemberReference</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IGenericParameterProvider</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IMethodSignature</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public MethodReference (string name, Mono.Cecil.TypeReference declaringType, Mono.Cecil.TypeReference returnType, bool hasThis, bool explicitThis, Mono.Cecil.MethodCallingConvention callConv);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="declaringType" Type="Mono.Cecil.TypeReference" />
-        <Parameter Name="returnType" Type="Mono.Cecil.TypeReference" />
-        <Parameter Name="hasThis" Type="System.Boolean" />
-        <Parameter Name="explicitThis" Type="System.Boolean" />
-        <Parameter Name="callConv" Type="Mono.Cecil.MethodCallingConvention" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="declaringType">To be added.</param>
-        <param name="returnType">To be added.</param>
-        <param name="hasThis">To be added.</param>
-        <param name="explicitThis">To be added.</param>
-        <param name="callConv">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CallingConvention">
-      <MemberSignature Language="C#" Value="public virtual Mono.Cecil.MethodCallingConvention CallingConvention { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodCallingConvention</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ExplicitThis">
-      <MemberSignature Language="C#" Value="public virtual bool ExplicitThis { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GenericParameters">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.GenericParameterCollection GenericParameters { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.GenericParameterCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetOriginalMethod">
-      <MemberSignature Language="C#" Value="public virtual Mono.Cecil.MethodReference GetOriginalMethod ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodReference</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetSentinel">
-      <MemberSignature Language="C#" Value="public int GetSentinel ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasGenericParameters">
-      <MemberSignature Language="C#" Value="public bool HasGenericParameters { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasParameters">
-      <MemberSignature Language="C#" Value="public virtual bool HasParameters { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasThis">
-      <MemberSignature Language="C#" Value="public virtual bool HasThis { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Parameters">
-      <MemberSignature Language="C#" Value="public virtual Mono.Cecil.ParameterDefinitionCollection Parameters { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ParameterDefinitionCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resolve">
-      <MemberSignature Language="C#" Value="public virtual Mono.Cecil.MethodDefinition Resolve ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ReturnType">
-      <MemberSignature Language="C#" Value="public virtual Mono.Cecil.MethodReturnType ReturnType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodReturnType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ToString">
-      <MemberSignature Language="C#" Value="public override string ToString ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodReturnType.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodReturnType.xml
deleted file mode 100644
index 57524fc..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodReturnType.xml
+++ /dev/null
@@ -1,178 +0,0 @@
-<Type Name="MethodReturnType" FullName="Mono.Cecil.MethodReturnType">
-  <TypeSignature Language="C#" Value="public sealed class MethodReturnType : Mono.Cecil.ICustomAttributeProvider, Mono.Cecil.IHasConstant, Mono.Cecil.IHasMarshalSpec" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.ICustomAttributeProvider</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IHasConstant</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IHasMarshalSpec</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public MethodReturnType (Mono.Cecil.TypeReference retType);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="retType" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="retType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Constant">
-      <MemberSignature Language="C#" Value="public object Constant { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Object</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CustomAttributes">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.CustomAttributeCollection CustomAttributes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.CustomAttributeCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasConstant">
-      <MemberSignature Language="C#" Value="public bool HasConstant { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasCustomAttributes">
-      <MemberSignature Language="C#" Value="public bool HasCustomAttributes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MarshalSpec">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MarshalSpec MarshalSpec { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MarshalSpec</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MetadataToken">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken MetadataToken { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Method">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodReference Method { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodReference</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ReturnType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference ReturnType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ToString">
-      <MemberSignature Language="C#" Value="public override string ToString ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodSemanticsAttributes.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodSemanticsAttributes.xml
deleted file mode 100644
index 47c6a6c..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodSemanticsAttributes.xml
+++ /dev/null
@@ -1,99 +0,0 @@
-<Type Name="MethodSemanticsAttributes" FullName="Mono.Cecil.MethodSemanticsAttributes">
-  <TypeSignature Language="C#" Value="public enum MethodSemanticsAttributes" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Attributes>
-    <Attribute>
-      <AttributeName>System.Flags</AttributeName>
-    </Attribute>
-  </Attributes>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="AddOn">
-      <MemberSignature Language="C#" Value="AddOn" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodSemanticsAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Fire">
-      <MemberSignature Language="C#" Value="Fire" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodSemanticsAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Getter">
-      <MemberSignature Language="C#" Value="Getter" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodSemanticsAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Other">
-      <MemberSignature Language="C#" Value="Other" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodSemanticsAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="RemoveOn">
-      <MemberSignature Language="C#" Value="RemoveOn" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodSemanticsAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Setter">
-      <MemberSignature Language="C#" Value="Setter" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodSemanticsAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodSpecification.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodSpecification.xml
deleted file mode 100644
index a5fa719..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/MethodSpecification.xml
+++ /dev/null
@@ -1,168 +0,0 @@
-<Type Name="MethodSpecification" FullName="Mono.Cecil.MethodSpecification">
-  <TypeSignature Language="C#" Value="public abstract class MethodSpecification : Mono.Cecil.MethodReference" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.MethodReference</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="CallingConvention">
-      <MemberSignature Language="C#" Value="public override Mono.Cecil.MethodCallingConvention CallingConvention { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodCallingConvention</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="DeclaringType">
-      <MemberSignature Language="C#" Value="public override Mono.Cecil.TypeReference DeclaringType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ElementMethod">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodReference ElementMethod { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodReference</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ExplicitThis">
-      <MemberSignature Language="C#" Value="public override bool ExplicitThis { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetOriginalMethod">
-      <MemberSignature Language="C#" Value="public override Mono.Cecil.MethodReference GetOriginalMethod ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodReference</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasParameters">
-      <MemberSignature Language="C#" Value="public override bool HasParameters { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasThis">
-      <MemberSignature Language="C#" Value="public override bool HasThis { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public override string Name { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Parameters">
-      <MemberSignature Language="C#" Value="public override Mono.Cecil.ParameterDefinitionCollection Parameters { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ParameterDefinitionCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ReturnType">
-      <MemberSignature Language="C#" Value="public override Mono.Cecil.MethodReturnType ReturnType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodReturnType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ModType.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ModType.xml
deleted file mode 100644
index 7ea99e7..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ModType.xml
+++ /dev/null
@@ -1,94 +0,0 @@
-<Type Name="ModType" FullName="Mono.Cecil.ModType">
-  <TypeSignature Language="C#" Value="public abstract class ModType : Mono.Cecil.TypeSpecification" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.TypeSpecification</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ModType (Mono.Cecil.TypeReference elemType, Mono.Cecil.TypeReference modType);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="elemType" Type="Mono.Cecil.TypeReference" />
-        <Parameter Name="modType" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="elemType">To be added.</param>
-        <param name="modType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="FullName">
-      <MemberSignature Language="C#" Value="public override string FullName { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ModifierName">
-      <MemberSignature Language="C#" Value="protected abstract string ModifierName { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ModifierType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference ModifierType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public override string Name { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ModifierOptional.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ModifierOptional.xml
deleted file mode 100644
index cd883a2..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ModifierOptional.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-<Type Name="ModifierOptional" FullName="Mono.Cecil.ModifierOptional">
-  <TypeSignature Language="C#" Value="public sealed class ModifierOptional : Mono.Cecil.ModType" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.ModType</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ModifierOptional (Mono.Cecil.TypeReference elemType, Mono.Cecil.TypeReference modType);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="elemType" Type="Mono.Cecil.TypeReference" />
-        <Parameter Name="modType" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="elemType">To be added.</param>
-        <param name="modType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ModifierName">
-      <MemberSignature Language="C#" Value="protected override string ModifierName { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ModifierRequired.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ModifierRequired.xml
deleted file mode 100644
index ac86ae0..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ModifierRequired.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-<Type Name="ModifierRequired" FullName="Mono.Cecil.ModifierRequired">
-  <TypeSignature Language="C#" Value="public sealed class ModifierRequired : Mono.Cecil.ModType" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.ModType</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ModifierRequired (Mono.Cecil.TypeReference elemType, Mono.Cecil.TypeReference modType);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="elemType" Type="Mono.Cecil.TypeReference" />
-        <Parameter Name="modType" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="elemType">To be added.</param>
-        <param name="modType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ModifierName">
-      <MemberSignature Language="C#" Value="protected override string ModifierName { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ModuleDefinition.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ModuleDefinition.xml
deleted file mode 100644
index 540bde6..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ModuleDefinition.xml
+++ /dev/null
@@ -1,1063 +0,0 @@
-<Type Name="ModuleDefinition" FullName="Mono.Cecil.ModuleDefinition">
-  <TypeSignature Language="C#" Value="public sealed class ModuleDefinition : Mono.Cecil.ModuleReference, Mono.Cecil.ICustomAttributeProvider, Mono.Cecil.IReflectionVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.ModuleReference</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.ICustomAttributeProvider</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ModuleDefinition (string name, Mono.Cecil.AssemblyDefinition asm);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="asm" Type="Mono.Cecil.AssemblyDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="asm">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ModuleDefinition (string name, Mono.Cecil.AssemblyDefinition asm, bool main);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="asm" Type="Mono.Cecil.AssemblyDefinition" />
-        <Parameter Name="main" Type="System.Boolean" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="asm">To be added.</param>
-        <param name="main">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public override void Accept (Mono.Cecil.IReflectionStructureVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionStructureVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Assembly">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.AssemblyDefinition Assembly { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="AssemblyReferences">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.AssemblyNameReferenceCollection AssemblyReferences { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyNameReferenceCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CustomAttributes">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.CustomAttributeCollection CustomAttributes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.CustomAttributeCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ExternTypes">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ExternTypeCollection ExternTypes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ExternTypeCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="FromByteArray">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.CustomAttribute FromByteArray (Mono.Cecil.MethodReference ctor, byte[] data);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.CustomAttribute</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="ctor" Type="Mono.Cecil.MethodReference" />
-        <Parameter Name="data" Type="System.Byte[]" />
-      </Parameters>
-      <Docs>
-        <param name="ctor">To be added.</param>
-        <param name="data">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="FromByteArray">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.SecurityDeclaration FromByteArray (Mono.Cecil.SecurityAction action, byte[] declaration);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.SecurityDeclaration</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="action" Type="Mono.Cecil.SecurityAction" />
-        <Parameter Name="declaration" Type="System.Byte[]" />
-      </Parameters>
-      <Docs>
-        <param name="action">To be added.</param>
-        <param name="declaration">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="FullLoad">
-      <MemberSignature Language="C#" Value="public void FullLoad ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetAsByteArray">
-      <MemberSignature Language="C#" Value="public byte[] GetAsByteArray (Mono.Cecil.CustomAttribute ca);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte[]</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="ca" Type="Mono.Cecil.CustomAttribute" />
-      </Parameters>
-      <Docs>
-        <param name="ca">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetAsByteArray">
-      <MemberSignature Language="C#" Value="public byte[] GetAsByteArray (Mono.Cecil.SecurityDeclaration dec);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte[]</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="dec" Type="Mono.Cecil.SecurityDeclaration" />
-      </Parameters>
-      <Docs>
-        <param name="dec">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasCustomAttributes">
-      <MemberSignature Language="C#" Value="public bool HasCustomAttributes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Image">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Binary.Image Image { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Binary.Image</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Import">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.FieldReference Import (Mono.Cecil.FieldReference field);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="field" Type="Mono.Cecil.FieldReference" />
-      </Parameters>
-      <Docs>
-        <param name="field">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Import">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodReference Import (Mono.Cecil.MethodReference meth);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="meth" Type="Mono.Cecil.MethodReference" />
-      </Parameters>
-      <Docs>
-        <param name="meth">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Import">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference Import (Mono.Cecil.TypeReference type);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="type" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="type">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Import">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.FieldReference Import (System.Reflection.FieldInfo field);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="field" Type="System.Reflection.FieldInfo" />
-      </Parameters>
-      <Docs>
-        <param name="field">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Import">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodReference Import (System.Reflection.MethodBase meth);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="meth" Type="System.Reflection.MethodBase" />
-      </Parameters>
-      <Docs>
-        <param name="meth">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Import">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference Import (Type type);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="type" Type="System.Type" />
-      </Parameters>
-      <Docs>
-        <param name="type">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Import">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.FieldReference Import (Mono.Cecil.FieldReference field, Mono.Cecil.MethodDefinition context);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="field" Type="Mono.Cecil.FieldReference" />
-        <Parameter Name="context" Type="Mono.Cecil.MethodDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="field">To be added.</param>
-        <param name="context">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Import">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.FieldReference Import (Mono.Cecil.FieldReference field, Mono.Cecil.TypeDefinition context);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="field" Type="Mono.Cecil.FieldReference" />
-        <Parameter Name="context" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="field">To be added.</param>
-        <param name="context">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Import">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodReference Import (Mono.Cecil.MethodReference meth, Mono.Cecil.MethodDefinition context);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="meth" Type="Mono.Cecil.MethodReference" />
-        <Parameter Name="context" Type="Mono.Cecil.MethodDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="meth">To be added.</param>
-        <param name="context">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Import">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodReference Import (Mono.Cecil.MethodReference meth, Mono.Cecil.TypeDefinition context);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="meth" Type="Mono.Cecil.MethodReference" />
-        <Parameter Name="context" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="meth">To be added.</param>
-        <param name="context">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Import">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference Import (Mono.Cecil.TypeReference type, Mono.Cecil.MethodDefinition context);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="type" Type="Mono.Cecil.TypeReference" />
-        <Parameter Name="context" Type="Mono.Cecil.MethodDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="type">To be added.</param>
-        <param name="context">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Import">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference Import (Mono.Cecil.TypeReference type, Mono.Cecil.TypeDefinition context);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="type" Type="Mono.Cecil.TypeReference" />
-        <Parameter Name="context" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="type">To be added.</param>
-        <param name="context">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Import">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.FieldReference Import (System.Reflection.FieldInfo field, Mono.Cecil.MethodDefinition context);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="field" Type="System.Reflection.FieldInfo" />
-        <Parameter Name="context" Type="Mono.Cecil.MethodDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="field">To be added.</param>
-        <param name="context">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Import">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.FieldReference Import (System.Reflection.FieldInfo field, Mono.Cecil.TypeDefinition context);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="field" Type="System.Reflection.FieldInfo" />
-        <Parameter Name="context" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="field">To be added.</param>
-        <param name="context">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Import">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodReference Import (System.Reflection.MethodBase meth, Mono.Cecil.TypeDefinition context);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="meth" Type="System.Reflection.MethodBase" />
-        <Parameter Name="context" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="meth">To be added.</param>
-        <param name="context">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Import">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference Import (Type type, Mono.Cecil.MethodDefinition context);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="type" Type="System.Type" />
-        <Parameter Name="context" Type="Mono.Cecil.MethodDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="type">To be added.</param>
-        <param name="context">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Import">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference Import (Type type, Mono.Cecil.TypeDefinition context);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="type" Type="System.Type" />
-        <Parameter Name="context" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="type">To be added.</param>
-        <param name="context">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Inject">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeDefinition Inject (Mono.Cecil.TypeDefinition type);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="type" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="type">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Inject">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.FieldDefinition Inject (Mono.Cecil.FieldDefinition field, Mono.Cecil.TypeDefinition context);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="field" Type="Mono.Cecil.FieldDefinition" />
-        <Parameter Name="context" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="field">To be added.</param>
-        <param name="context">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Inject">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodDefinition Inject (Mono.Cecil.MethodDefinition meth, Mono.Cecil.TypeDefinition context);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="meth" Type="Mono.Cecil.MethodDefinition" />
-        <Parameter Name="context" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="meth">To be added.</param>
-        <param name="context">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Inject">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeDefinition Inject (Mono.Cecil.TypeDefinition type, Mono.Cecil.IImporter importer);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="type" Type="Mono.Cecil.TypeDefinition" />
-        <Parameter Name="importer" Type="Mono.Cecil.IImporter" />
-      </Parameters>
-      <Docs>
-        <param name="type">To be added.</param>
-        <param name="importer">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Inject">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeDefinition Inject (Mono.Cecil.TypeDefinition type, Mono.Cecil.TypeDefinition context);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="type" Type="Mono.Cecil.TypeDefinition" />
-        <Parameter Name="context" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="type">To be added.</param>
-        <param name="context">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Inject">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.FieldDefinition Inject (Mono.Cecil.FieldDefinition field, Mono.Cecil.TypeDefinition context, Mono.Cecil.IImporter importer);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="field" Type="Mono.Cecil.FieldDefinition" />
-        <Parameter Name="context" Type="Mono.Cecil.TypeDefinition" />
-        <Parameter Name="importer" Type="Mono.Cecil.IImporter" />
-      </Parameters>
-      <Docs>
-        <param name="field">To be added.</param>
-        <param name="context">To be added.</param>
-        <param name="importer">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Inject">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodDefinition Inject (Mono.Cecil.MethodDefinition meth, Mono.Cecil.TypeDefinition context, Mono.Cecil.IImporter importer);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="meth" Type="Mono.Cecil.MethodDefinition" />
-        <Parameter Name="context" Type="Mono.Cecil.TypeDefinition" />
-        <Parameter Name="importer" Type="Mono.Cecil.IImporter" />
-      </Parameters>
-      <Docs>
-        <param name="meth">To be added.</param>
-        <param name="context">To be added.</param>
-        <param name="importer">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Inject">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeDefinition Inject (Mono.Cecil.TypeDefinition type, Mono.Cecil.TypeDefinition context, Mono.Cecil.IImporter importer);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="type" Type="Mono.Cecil.TypeDefinition" />
-        <Parameter Name="context" Type="Mono.Cecil.TypeDefinition" />
-        <Parameter Name="importer" Type="Mono.Cecil.IImporter" />
-      </Parameters>
-      <Docs>
-        <param name="type">To be added.</param>
-        <param name="context">To be added.</param>
-        <param name="importer">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="LoadSymbols">
-      <MemberSignature Language="C#" Value="public void LoadSymbols ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="LoadSymbols">
-      <MemberSignature Language="C#" Value="public void LoadSymbols (Mono.Cecil.Cil.ISymbolReader reader);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="reader" Type="Mono.Cecil.Cil.ISymbolReader" />
-      </Parameters>
-      <Docs>
-        <param name="reader">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="LookupByToken">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.IMetadataTokenProvider LookupByToken (Mono.Cecil.Metadata.MetadataToken token);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.IMetadataTokenProvider</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="token" Type="Mono.Cecil.Metadata.MetadataToken" />
-      </Parameters>
-      <Docs>
-        <param name="token">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="LookupByToken">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.IMetadataTokenProvider LookupByToken (Mono.Cecil.Metadata.TokenType table, int rid);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.IMetadataTokenProvider</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="table" Type="Mono.Cecil.Metadata.TokenType" />
-        <Parameter Name="rid" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="table">To be added.</param>
-        <param name="rid">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Main">
-      <MemberSignature Language="C#" Value="public bool Main { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MemberReferences">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MemberReferenceCollection MemberReferences { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MemberReferenceCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ModuleReferences">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ModuleReferenceCollection ModuleReferences { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ModuleReferenceCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Mvid">
-      <MemberSignature Language="C#" Value="public Guid Mvid { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Guid</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resources">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ResourceCollection Resources { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ResourceCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SaveSymbols">
-      <MemberSignature Language="C#" Value="public void SaveSymbols ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SaveSymbols">
-      <MemberSignature Language="C#" Value="public void SaveSymbols (Mono.Cecil.Cil.ISymbolWriter writer);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="writer" Type="Mono.Cecil.Cil.ISymbolWriter" />
-      </Parameters>
-      <Docs>
-        <param name="writer">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SaveSymbols">
-      <MemberSignature Language="C#" Value="public void SaveSymbols (string outputDirectory);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="outputDirectory" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="outputDirectory">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SaveSymbols">
-      <MemberSignature Language="C#" Value="public void SaveSymbols (string outputDirectory, Mono.Cecil.Cil.ISymbolWriter writer);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="outputDirectory" Type="System.String" />
-        <Parameter Name="writer" Type="Mono.Cecil.Cil.ISymbolWriter" />
-      </Parameters>
-      <Docs>
-        <param name="outputDirectory">To be added.</param>
-        <param name="writer">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ToString">
-      <MemberSignature Language="C#" Value="public override string ToString ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="TypeReferences">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReferenceCollection TypeReferences { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReferenceCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Types">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeDefinitionCollection Types { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeDefinitionCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ModuleDefinitionCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ModuleDefinitionCollection.xml
deleted file mode 100644
index 83e7303..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ModuleDefinitionCollection.xml
+++ /dev/null
@@ -1,200 +0,0 @@
-<Type Name="ModuleDefinitionCollection" FullName="Mono.Cecil.ModuleDefinitionCollection">
-  <TypeSignature Language="C#" Value="public sealed class ModuleDefinitionCollection : System.Collections.CollectionBase, Mono.Cecil.IReflectionStructureVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionStructureVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ModuleDefinitionCollection (Mono.Cecil.AssemblyDefinition container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.AssemblyDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionStructureVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionStructureVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Mono.Cecil.ModuleDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.ModuleDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.AssemblyDefinition Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.AssemblyDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.ModuleDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.ModuleDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.ModuleDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.ModuleDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Insert">
-      <MemberSignature Language="C#" Value="public void Insert (int index, Mono.Cecil.ModuleDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="value" Type="Mono.Cecil.ModuleDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ModuleDefinition this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ModuleDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OnValidate">
-      <MemberSignature Language="C#" Value="protected override void OnValidate (object o);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="o" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="o">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.ModuleDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.ModuleDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ModuleReference.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ModuleReference.xml
deleted file mode 100644
index fdea3f5..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ModuleReference.xml
+++ /dev/null
@@ -1,105 +0,0 @@
-<Type Name="ModuleReference" FullName="Mono.Cecil.ModuleReference">
-  <TypeSignature Language="C#" Value="public class ModuleReference : Mono.Cecil.IAnnotationProvider, Mono.Cecil.IMetadataScope, Mono.Cecil.IReflectionStructureVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IAnnotationProvider</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IMetadataScope</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionStructureVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ModuleReference (string name);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public virtual void Accept (Mono.Cecil.IReflectionStructureVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionStructureVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MetadataToken">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken MetadataToken { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Mono.Cecil.IAnnotationProvider.Annotations">
-      <MemberSignature Language="C#" Value="System.Collections.IDictionary Mono.Cecil.IAnnotationProvider.Annotations { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Collections.IDictionary</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public string Name { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ModuleReferenceCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ModuleReferenceCollection.xml
deleted file mode 100644
index a0e1dff..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ModuleReferenceCollection.xml
+++ /dev/null
@@ -1,200 +0,0 @@
-<Type Name="ModuleReferenceCollection" FullName="Mono.Cecil.ModuleReferenceCollection">
-  <TypeSignature Language="C#" Value="public sealed class ModuleReferenceCollection : System.Collections.CollectionBase, Mono.Cecil.IReflectionStructureVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionStructureVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ModuleReferenceCollection (Mono.Cecil.ModuleDefinition container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.ModuleDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionStructureVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionStructureVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Mono.Cecil.ModuleReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.ModuleReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ModuleDefinition Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ModuleDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.ModuleReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.ModuleReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.ModuleReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.ModuleReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Insert">
-      <MemberSignature Language="C#" Value="public void Insert (int index, Mono.Cecil.ModuleReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="value" Type="Mono.Cecil.ModuleReference" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ModuleReference this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ModuleReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OnValidate">
-      <MemberSignature Language="C#" Value="protected override void OnValidate (object o);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="o" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="o">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.ModuleReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.ModuleReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/NativeType.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/NativeType.xml
deleted file mode 100644
index 3855939..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/NativeType.xml
+++ /dev/null
@@ -1,497 +0,0 @@
-<Type Name="NativeType" FullName="Mono.Cecil.NativeType">
-  <TypeSignature Language="C#" Value="public enum NativeType" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="ANSIBSTR">
-      <MemberSignature Language="C#" Value="ANSIBSTR" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ARRAY">
-      <MemberSignature Language="C#" Value="ARRAY" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ASANY">
-      <MemberSignature Language="C#" Value="ASANY" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="BOOLEAN">
-      <MemberSignature Language="C#" Value="BOOLEAN" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="BSTR">
-      <MemberSignature Language="C#" Value="BSTR" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="BYVALSTR">
-      <MemberSignature Language="C#" Value="BYVALSTR" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="CURRENCY">
-      <MemberSignature Language="C#" Value="CURRENCY" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="CUSTOMMARSHALER">
-      <MemberSignature Language="C#" Value="CUSTOMMARSHALER" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ERROR">
-      <MemberSignature Language="C#" Value="ERROR" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="FIXEDARRAY">
-      <MemberSignature Language="C#" Value="FIXEDARRAY" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="FIXEDSYSSTRING">
-      <MemberSignature Language="C#" Value="FIXEDSYSSTRING" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="FUNC">
-      <MemberSignature Language="C#" Value="FUNC" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="I1">
-      <MemberSignature Language="C#" Value="I1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="I2">
-      <MemberSignature Language="C#" Value="I2" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="I4">
-      <MemberSignature Language="C#" Value="I4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="I8">
-      <MemberSignature Language="C#" Value="I8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="IDISPATCH">
-      <MemberSignature Language="C#" Value="IDISPATCH" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="INT">
-      <MemberSignature Language="C#" Value="INT" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="INTF">
-      <MemberSignature Language="C#" Value="INTF" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="IUNKNOWN">
-      <MemberSignature Language="C#" Value="IUNKNOWN" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="LPSTR">
-      <MemberSignature Language="C#" Value="LPSTR" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="LPSTRUCT">
-      <MemberSignature Language="C#" Value="LPSTRUCT" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="LPTSTR">
-      <MemberSignature Language="C#" Value="LPTSTR" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="LPWSTR">
-      <MemberSignature Language="C#" Value="LPWSTR" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="MAX">
-      <MemberSignature Language="C#" Value="MAX" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="NONE">
-      <MemberSignature Language="C#" Value="NONE" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="R4">
-      <MemberSignature Language="C#" Value="R4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="R8">
-      <MemberSignature Language="C#" Value="R8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="SAFEARRAY">
-      <MemberSignature Language="C#" Value="SAFEARRAY" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="STRUCT">
-      <MemberSignature Language="C#" Value="STRUCT" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="TBSTR">
-      <MemberSignature Language="C#" Value="TBSTR" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="U1">
-      <MemberSignature Language="C#" Value="U1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="U2">
-      <MemberSignature Language="C#" Value="U2" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="U4">
-      <MemberSignature Language="C#" Value="U4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="U8">
-      <MemberSignature Language="C#" Value="U8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="UINT">
-      <MemberSignature Language="C#" Value="UINT" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="VARIANTBOOL">
-      <MemberSignature Language="C#" Value="VARIANTBOOL" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NativeType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/NestedTypeCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/NestedTypeCollection.xml
deleted file mode 100644
index 2f81fd2..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/NestedTypeCollection.xml
+++ /dev/null
@@ -1,233 +0,0 @@
-<Type Name="NestedTypeCollection" FullName="Mono.Cecil.NestedTypeCollection">
-  <TypeSignature Language="C#" Value="public sealed class NestedTypeCollection : System.Collections.CollectionBase, Mono.Cecil.IReflectionVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public NestedTypeCollection (Mono.Cecil.TypeDefinition container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Mono.Cecil.TypeDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Clear">
-      <MemberSignature Language="C#" Value="public void Clear ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeDefinition Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.TypeDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.TypeDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Insert">
-      <MemberSignature Language="C#" Value="public void Insert (int index, Mono.Cecil.TypeDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="value" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeDefinition this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OnValidate">
-      <MemberSignature Language="C#" Value="protected override void OnValidate (object o);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="o" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="o">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.TypeDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RemoveAt">
-      <MemberSignature Language="C#" Value="public void RemoveAt (int index);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/OverrideCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/OverrideCollection.xml
deleted file mode 100644
index b59434f..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/OverrideCollection.xml
+++ /dev/null
@@ -1,200 +0,0 @@
-<Type Name="OverrideCollection" FullName="Mono.Cecil.OverrideCollection">
-  <TypeSignature Language="C#" Value="public sealed class OverrideCollection : System.Collections.CollectionBase, Mono.Cecil.IReflectionVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public OverrideCollection (Mono.Cecil.MethodDefinition container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.MethodDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Mono.Cecil.MethodReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.MethodReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodDefinition Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.MethodReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.MethodReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.MethodReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.MethodReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Insert">
-      <MemberSignature Language="C#" Value="public void Insert (int index, Mono.Cecil.MethodReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="value" Type="Mono.Cecil.MethodReference" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodReference this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OnValidate">
-      <MemberSignature Language="C#" Value="protected override void OnValidate (object o);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="o" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="o">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.MethodReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.MethodReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/PInvokeAttributes.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/PInvokeAttributes.xml
deleted file mode 100644
index a11db21..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/PInvokeAttributes.xml
+++ /dev/null
@@ -1,190 +0,0 @@
-<Type Name="PInvokeAttributes" FullName="Mono.Cecil.PInvokeAttributes">
-  <TypeSignature Language="C#" Value="public enum PInvokeAttributes" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Attributes>
-    <Attribute>
-      <AttributeName>System.Flags</AttributeName>
-    </Attribute>
-  </Attributes>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="CallConvCdecl">
-      <MemberSignature Language="C#" Value="CallConvCdecl" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PInvokeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="CallConvFastcall">
-      <MemberSignature Language="C#" Value="CallConvFastcall" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PInvokeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="CallConvMask">
-      <MemberSignature Language="C#" Value="CallConvMask" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PInvokeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="CallConvStdCall">
-      <MemberSignature Language="C#" Value="CallConvStdCall" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PInvokeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="CallConvThiscall">
-      <MemberSignature Language="C#" Value="CallConvThiscall" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PInvokeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="CallConvWinapi">
-      <MemberSignature Language="C#" Value="CallConvWinapi" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PInvokeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="CharSetAnsi">
-      <MemberSignature Language="C#" Value="CharSetAnsi" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PInvokeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="CharSetAuto">
-      <MemberSignature Language="C#" Value="CharSetAuto" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PInvokeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="CharSetMask">
-      <MemberSignature Language="C#" Value="CharSetMask" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PInvokeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="CharSetNotSpec">
-      <MemberSignature Language="C#" Value="CharSetNotSpec" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PInvokeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="CharSetUnicode">
-      <MemberSignature Language="C#" Value="CharSetUnicode" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PInvokeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="NoMangle">
-      <MemberSignature Language="C#" Value="NoMangle" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PInvokeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="SupportsLastError">
-      <MemberSignature Language="C#" Value="SupportsLastError" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PInvokeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/PInvokeInfo.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/PInvokeInfo.xml
deleted file mode 100644
index f5627e3..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/PInvokeInfo.xml
+++ /dev/null
@@ -1,300 +0,0 @@
-<Type Name="PInvokeInfo" FullName="Mono.Cecil.PInvokeInfo">
-  <TypeSignature Language="C#" Value="public sealed class PInvokeInfo : Mono.Cecil.IReflectionVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public PInvokeInfo (Mono.Cecil.MethodDefinition meth);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="meth" Type="Mono.Cecil.MethodDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="meth">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public PInvokeInfo (Mono.Cecil.MethodDefinition meth, Mono.Cecil.PInvokeAttributes attrs, string entryPoint, Mono.Cecil.ModuleReference mod);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="meth" Type="Mono.Cecil.MethodDefinition" />
-        <Parameter Name="attrs" Type="Mono.Cecil.PInvokeAttributes" />
-        <Parameter Name="entryPoint" Type="System.String" />
-        <Parameter Name="mod" Type="Mono.Cecil.ModuleReference" />
-      </Parameters>
-      <Docs>
-        <param name="meth">To be added.</param>
-        <param name="attrs">To be added.</param>
-        <param name="entryPoint">To be added.</param>
-        <param name="mod">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Attributes">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.PInvokeAttributes Attributes { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PInvokeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="EntryPoint">
-      <MemberSignature Language="C#" Value="public string EntryPoint { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsCallConvCdecl">
-      <MemberSignature Language="C#" Value="public bool IsCallConvCdecl { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsCallConvFastcall">
-      <MemberSignature Language="C#" Value="public bool IsCallConvFastcall { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsCallConvStdCall">
-      <MemberSignature Language="C#" Value="public bool IsCallConvStdCall { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsCallConvThiscall">
-      <MemberSignature Language="C#" Value="public bool IsCallConvThiscall { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsCallConvWinapi">
-      <MemberSignature Language="C#" Value="public bool IsCallConvWinapi { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsCharSetAnsi">
-      <MemberSignature Language="C#" Value="public bool IsCharSetAnsi { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsCharSetAuto">
-      <MemberSignature Language="C#" Value="public bool IsCharSetAuto { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsCharSetNotSpec">
-      <MemberSignature Language="C#" Value="public bool IsCharSetNotSpec { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsCharSetUnicode">
-      <MemberSignature Language="C#" Value="public bool IsCharSetUnicode { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsNoMangle">
-      <MemberSignature Language="C#" Value="public bool IsNoMangle { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Method">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodDefinition Method { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Module">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ModuleReference Module { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ModuleReference</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SupportsLastError">
-      <MemberSignature Language="C#" Value="public bool SupportsLastError { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ParameterAttributes.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ParameterAttributes.xml
deleted file mode 100644
index deebc7c..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ParameterAttributes.xml
+++ /dev/null
@@ -1,138 +0,0 @@
-<Type Name="ParameterAttributes" FullName="Mono.Cecil.ParameterAttributes">
-  <TypeSignature Language="C#" Value="public enum ParameterAttributes" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Attributes>
-    <Attribute>
-      <AttributeName>System.Flags</AttributeName>
-    </Attribute>
-  </Attributes>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="HasDefault">
-      <MemberSignature Language="C#" Value="HasDefault" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ParameterAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="HasFieldMarshal">
-      <MemberSignature Language="C#" Value="HasFieldMarshal" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ParameterAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="In">
-      <MemberSignature Language="C#" Value="In" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ParameterAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Lcid">
-      <MemberSignature Language="C#" Value="Lcid" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ParameterAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="None">
-      <MemberSignature Language="C#" Value="None" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ParameterAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Optional">
-      <MemberSignature Language="C#" Value="Optional" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ParameterAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Out">
-      <MemberSignature Language="C#" Value="Out" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ParameterAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Retval">
-      <MemberSignature Language="C#" Value="Retval" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ParameterAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Unused">
-      <MemberSignature Language="C#" Value="Unused" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ParameterAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ParameterDefinition.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ParameterDefinition.xml
deleted file mode 100644
index 756a55c..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ParameterDefinition.xml
+++ /dev/null
@@ -1,308 +0,0 @@
-<Type Name="ParameterDefinition" FullName="Mono.Cecil.ParameterDefinition">
-  <TypeSignature Language="C#" Value="public sealed class ParameterDefinition : Mono.Cecil.ParameterReference, Mono.Cecil.ICustomAttributeProvider, Mono.Cecil.IHasConstant, Mono.Cecil.IHasMarshalSpec" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.ParameterReference</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.ICustomAttributeProvider</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IHasConstant</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IHasMarshalSpec</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ParameterDefinition (Mono.Cecil.TypeReference paramType);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="paramType" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="paramType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ParameterDefinition (string name, int seq, Mono.Cecil.ParameterAttributes attrs, Mono.Cecil.TypeReference paramType);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="seq" Type="System.Int32" />
-        <Parameter Name="attrs" Type="Mono.Cecil.ParameterAttributes" />
-        <Parameter Name="paramType" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="seq">To be added.</param>
-        <param name="attrs">To be added.</param>
-        <param name="paramType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public override void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Attributes">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ParameterAttributes Attributes { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ParameterAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Clone">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ParameterDefinition Clone ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ParameterDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Constant">
-      <MemberSignature Language="C#" Value="public object Constant { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Object</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CustomAttributes">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.CustomAttributeCollection CustomAttributes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.CustomAttributeCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasConstant">
-      <MemberSignature Language="C#" Value="public bool HasConstant { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasCustomAttributes">
-      <MemberSignature Language="C#" Value="public bool HasCustomAttributes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasDefault">
-      <MemberSignature Language="C#" Value="public bool HasDefault { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsIn">
-      <MemberSignature Language="C#" Value="public bool IsIn { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsLcid">
-      <MemberSignature Language="C#" Value="public bool IsLcid { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsOptional">
-      <MemberSignature Language="C#" Value="public bool IsOptional { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsOut">
-      <MemberSignature Language="C#" Value="public bool IsOut { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsRetval">
-      <MemberSignature Language="C#" Value="public bool IsRetval { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MarshalSpec">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MarshalSpec MarshalSpec { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MarshalSpec</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Method">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodReference Method { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodReference</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resolve">
-      <MemberSignature Language="C#" Value="public override Mono.Cecil.ParameterDefinition Resolve ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ParameterDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ParameterDefinitionCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ParameterDefinitionCollection.xml
deleted file mode 100644
index 9a824b5..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ParameterDefinitionCollection.xml
+++ /dev/null
@@ -1,200 +0,0 @@
-<Type Name="ParameterDefinitionCollection" FullName="Mono.Cecil.ParameterDefinitionCollection">
-  <TypeSignature Language="C#" Value="public sealed class ParameterDefinitionCollection : System.Collections.CollectionBase, Mono.Cecil.IReflectionVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ParameterDefinitionCollection (Mono.Cecil.IMemberReference container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.IMemberReference" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Mono.Cecil.ParameterDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.ParameterDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.IMemberReference Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.IMemberReference</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.ParameterDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.ParameterDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.ParameterDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.ParameterDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Insert">
-      <MemberSignature Language="C#" Value="public void Insert (int index, Mono.Cecil.ParameterDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="value" Type="Mono.Cecil.ParameterDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ParameterDefinition this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ParameterDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OnValidate">
-      <MemberSignature Language="C#" Value="protected override void OnValidate (object o);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="o" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="o">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.ParameterDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.ParameterDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ParameterReference.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ParameterReference.xml
deleted file mode 100644
index dad3222..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ParameterReference.xml
+++ /dev/null
@@ -1,171 +0,0 @@
-<Type Name="ParameterReference" FullName="Mono.Cecil.ParameterReference">
-  <TypeSignature Language="C#" Value="public abstract class ParameterReference : Mono.Cecil.IAnnotationProvider, Mono.Cecil.IMetadataTokenProvider, Mono.Cecil.IReflectionVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IAnnotationProvider</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IMetadataTokenProvider</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ParameterReference (string name, int sequence, Mono.Cecil.TypeReference parameterType);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="sequence" Type="System.Int32" />
-        <Parameter Name="parameterType" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="sequence">To be added.</param>
-        <param name="parameterType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public abstract void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MetadataToken">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Metadata.MetadataToken MetadataToken { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Metadata.MetadataToken</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Mono.Cecil.IAnnotationProvider.Annotations">
-      <MemberSignature Language="C#" Value="System.Collections.IDictionary Mono.Cecil.IAnnotationProvider.Annotations { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Collections.IDictionary</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public string Name { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ParameterType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference ParameterType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resolve">
-      <MemberSignature Language="C#" Value="public abstract Mono.Cecil.ParameterDefinition Resolve ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ParameterDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Sequence">
-      <MemberSignature Language="C#" Value="public int Sequence { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ToString">
-      <MemberSignature Language="C#" Value="public override string ToString ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/PinnedType.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/PinnedType.xml
deleted file mode 100644
index 8499be0..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/PinnedType.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<Type Name="PinnedType" FullName="Mono.Cecil.PinnedType">
-  <TypeSignature Language="C#" Value="public sealed class PinnedType : Mono.Cecil.TypeSpecification" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.TypeSpecification</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public PinnedType (Mono.Cecil.TypeReference pType);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="pType" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="pType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/PointerType.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/PointerType.xml
deleted file mode 100644
index 2766c65..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/PointerType.xml
+++ /dev/null
@@ -1,62 +0,0 @@
-<Type Name="PointerType" FullName="Mono.Cecil.PointerType">
-  <TypeSignature Language="C#" Value="public sealed class PointerType : Mono.Cecil.TypeSpecification" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.TypeSpecification</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public PointerType (Mono.Cecil.TypeReference pType);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="pType" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="pType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="FullName">
-      <MemberSignature Language="C#" Value="public override string FullName { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public override string Name { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/PropertyAttributes.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/PropertyAttributes.xml
deleted file mode 100644
index fa9dce9..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/PropertyAttributes.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<Type Name="PropertyAttributes" FullName="Mono.Cecil.PropertyAttributes">
-  <TypeSignature Language="C#" Value="public enum PropertyAttributes" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Attributes>
-    <Attribute>
-      <AttributeName>System.Flags</AttributeName>
-    </Attribute>
-  </Attributes>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="HasDefault">
-      <MemberSignature Language="C#" Value="HasDefault" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PropertyAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="RTSpecialName">
-      <MemberSignature Language="C#" Value="RTSpecialName" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PropertyAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="SpecialName">
-      <MemberSignature Language="C#" Value="SpecialName" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PropertyAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Unused">
-      <MemberSignature Language="C#" Value="Unused" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PropertyAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/PropertyDefinition.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/PropertyDefinition.xml
deleted file mode 100644
index 9742191..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/PropertyDefinition.xml
+++ /dev/null
@@ -1,342 +0,0 @@
-<Type Name="PropertyDefinition" FullName="Mono.Cecil.PropertyDefinition">
-  <TypeSignature Language="C#" Value="public sealed class PropertyDefinition : Mono.Cecil.PropertyReference, Mono.Cecil.IHasConstant, Mono.Cecil.IMemberDefinition" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.PropertyReference</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IHasConstant</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IMemberDefinition</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public PropertyDefinition (string name, Mono.Cecil.TypeReference propertyType, Mono.Cecil.PropertyAttributes attrs);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="propertyType" Type="Mono.Cecil.TypeReference" />
-        <Parameter Name="attrs" Type="Mono.Cecil.PropertyAttributes" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="propertyType">To be added.</param>
-        <param name="attrs">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public override void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Attributes">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.PropertyAttributes Attributes { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PropertyAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Clone">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.PropertyDefinition Clone ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PropertyDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Constant">
-      <MemberSignature Language="C#" Value="public object Constant { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Object</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CreateGetMethod">
-      <MemberSignature Language="C#" Value="public static Mono.Cecil.MethodDefinition CreateGetMethod (Mono.Cecil.PropertyDefinition prop);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="prop" Type="Mono.Cecil.PropertyDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="prop">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CreateSetMethod">
-      <MemberSignature Language="C#" Value="public static Mono.Cecil.MethodDefinition CreateSetMethod (Mono.Cecil.PropertyDefinition prop);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="prop" Type="Mono.Cecil.PropertyDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="prop">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CustomAttributes">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.CustomAttributeCollection CustomAttributes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.CustomAttributeCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="DeclaringType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeDefinition DeclaringType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetMethod">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodDefinition GetMethod { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasConstant">
-      <MemberSignature Language="C#" Value="public bool HasConstant { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasCustomAttributes">
-      <MemberSignature Language="C#" Value="public bool HasCustomAttributes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasDefault">
-      <MemberSignature Language="C#" Value="public bool HasDefault { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasParameters">
-      <MemberSignature Language="C#" Value="public override bool HasParameters { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsRuntimeSpecialName">
-      <MemberSignature Language="C#" Value="public bool IsRuntimeSpecialName { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsSpecialName">
-      <MemberSignature Language="C#" Value="public bool IsSpecialName { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Parameters">
-      <MemberSignature Language="C#" Value="public override Mono.Cecil.ParameterDefinitionCollection Parameters { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ParameterDefinitionCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resolve">
-      <MemberSignature Language="C#" Value="public override Mono.Cecil.PropertyDefinition Resolve ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PropertyDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SetMethod">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodDefinition SetMethod { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ToString">
-      <MemberSignature Language="C#" Value="public override string ToString ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/PropertyDefinitionCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/PropertyDefinitionCollection.xml
deleted file mode 100644
index 7e8b76b..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/PropertyDefinitionCollection.xml
+++ /dev/null
@@ -1,252 +0,0 @@
-<Type Name="PropertyDefinitionCollection" FullName="Mono.Cecil.PropertyDefinitionCollection">
-  <TypeSignature Language="C#" Value="public sealed class PropertyDefinitionCollection : System.Collections.CollectionBase, Mono.Cecil.IReflectionVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public PropertyDefinitionCollection (Mono.Cecil.TypeDefinition container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Mono.Cecil.PropertyDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.PropertyDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Clear">
-      <MemberSignature Language="C#" Value="public void Clear ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeDefinition Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.PropertyDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.PropertyDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetProperties">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.PropertyDefinition[] GetProperties (string name);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PropertyDefinition[]</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.PropertyDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.PropertyDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Insert">
-      <MemberSignature Language="C#" Value="public void Insert (int index, Mono.Cecil.PropertyDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="value" Type="Mono.Cecil.PropertyDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.PropertyDefinition this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PropertyDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OnValidate">
-      <MemberSignature Language="C#" Value="protected override void OnValidate (object o);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="o" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="o">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.PropertyDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.PropertyDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RemoveAt">
-      <MemberSignature Language="C#" Value="public void RemoveAt (int index);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/PropertyReference.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/PropertyReference.xml
deleted file mode 100644
index 1da1bbd..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/PropertyReference.xml
+++ /dev/null
@@ -1,109 +0,0 @@
-<Type Name="PropertyReference" FullName="Mono.Cecil.PropertyReference">
-  <TypeSignature Language="C#" Value="public abstract class PropertyReference : Mono.Cecil.MemberReference" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.MemberReference</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public PropertyReference (string name, Mono.Cecil.TypeReference propertyType);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="propertyType" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="propertyType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasParameters">
-      <MemberSignature Language="C#" Value="public abstract bool HasParameters { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="m_parameters">
-      <MemberSignature Language="C#" Value="protected Mono.Cecil.ParameterDefinitionCollection m_parameters;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ParameterDefinitionCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Parameters">
-      <MemberSignature Language="C#" Value="public abstract Mono.Cecil.ParameterDefinitionCollection Parameters { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ParameterDefinitionCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PropertyType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference PropertyType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resolve">
-      <MemberSignature Language="C#" Value="public abstract Mono.Cecil.PropertyDefinition Resolve ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PropertyDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ReferenceType.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ReferenceType.xml
deleted file mode 100644
index df6ff9f..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ReferenceType.xml
+++ /dev/null
@@ -1,62 +0,0 @@
-<Type Name="ReferenceType" FullName="Mono.Cecil.ReferenceType">
-  <TypeSignature Language="C#" Value="public sealed class ReferenceType : Mono.Cecil.TypeSpecification" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.TypeSpecification</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ReferenceType (Mono.Cecil.TypeReference type);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="type" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="type">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="FullName">
-      <MemberSignature Language="C#" Value="public override string FullName { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public override string Name { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ReflectionException.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ReflectionException.xml
deleted file mode 100644
index 6b151bf..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ReflectionException.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<Type Name="ReflectionException" FullName="Mono.Cecil.ReflectionException">
-  <TypeSignature Language="C#" Value="public sealed class ReflectionException : Mono.Cecil.Metadata.MetadataFormatException" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.Metadata.MetadataFormatException</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members />
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/Resource.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/Resource.xml
deleted file mode 100644
index 52543fc..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/Resource.xml
+++ /dev/null
@@ -1,117 +0,0 @@
-<Type Name="Resource" FullName="Mono.Cecil.Resource">
-  <TypeSignature Language="C#" Value="public abstract class Resource : Mono.Cecil.IAnnotationProvider, Mono.Cecil.IReflectionStructureVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IAnnotationProvider</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionStructureVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public abstract void Accept (Mono.Cecil.IReflectionStructureVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionStructureVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Flags">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ManifestResourceAttributes Flags { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ManifestResourceAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsPrivate">
-      <MemberSignature Language="C#" Value="public bool IsPrivate { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsPublic">
-      <MemberSignature Language="C#" Value="public bool IsPublic { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Mono.Cecil.IAnnotationProvider.Annotations">
-      <MemberSignature Language="C#" Value="System.Collections.IDictionary Mono.Cecil.IAnnotationProvider.Annotations { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Collections.IDictionary</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public string Name { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ResourceCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ResourceCollection.xml
deleted file mode 100644
index 1bdd077..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/ResourceCollection.xml
+++ /dev/null
@@ -1,200 +0,0 @@
-<Type Name="ResourceCollection" FullName="Mono.Cecil.ResourceCollection">
-  <TypeSignature Language="C#" Value="public sealed class ResourceCollection : System.Collections.CollectionBase, Mono.Cecil.IReflectionStructureVisitable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionStructureVisitable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public ResourceCollection (Mono.Cecil.ModuleDefinition container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.ModuleDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionStructureVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionStructureVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Mono.Cecil.Resource value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.Resource" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ModuleDefinition Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ModuleDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.Resource value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.Resource" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.Resource value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.Resource" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Insert">
-      <MemberSignature Language="C#" Value="public void Insert (int index, Mono.Cecil.Resource value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="value" Type="Mono.Cecil.Resource" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.Resource this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.Resource</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OnValidate">
-      <MemberSignature Language="C#" Value="protected override void OnValidate (object o);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="o" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="o">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.Resource value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.Resource" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/SafeArraySpec.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/SafeArraySpec.xml
deleted file mode 100644
index 2d3895d..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/SafeArraySpec.xml
+++ /dev/null
@@ -1,66 +0,0 @@
-<Type Name="SafeArraySpec" FullName="Mono.Cecil.SafeArraySpec">
-  <TypeSignature Language="C#" Value="public sealed class SafeArraySpec : Mono.Cecil.MarshalSpec" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.MarshalSpec</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public SafeArraySpec (Mono.Cecil.IHasMarshalSpec container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.IHasMarshalSpec" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CloneInto">
-      <MemberSignature Language="C#" Value="public override Mono.Cecil.MarshalSpec CloneInto (Mono.Cecil.IHasMarshalSpec container);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MarshalSpec</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.IHasMarshalSpec" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ElemType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.VariantType ElemType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.VariantType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/SecurityAction.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/SecurityAction.xml
deleted file mode 100644
index f19ef52..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/SecurityAction.xml
+++ /dev/null
@@ -1,211 +0,0 @@
-<Type Name="SecurityAction" FullName="Mono.Cecil.SecurityAction">
-  <TypeSignature Language="C#" Value="public enum SecurityAction" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Assert">
-      <MemberSignature Language="C#" Value="Assert" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.SecurityAction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Demand">
-      <MemberSignature Language="C#" Value="Demand" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.SecurityAction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Deny">
-      <MemberSignature Language="C#" Value="Deny" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.SecurityAction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="InheritDemand">
-      <MemberSignature Language="C#" Value="InheritDemand" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.SecurityAction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="LinkDemand">
-      <MemberSignature Language="C#" Value="LinkDemand" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.SecurityAction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="NonCasDemand">
-      <MemberSignature Language="C#" Value="NonCasDemand" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.SecurityAction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="NonCasInheritance">
-      <MemberSignature Language="C#" Value="NonCasInheritance" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.SecurityAction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="NonCasLinkDemand">
-      <MemberSignature Language="C#" Value="NonCasLinkDemand" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.SecurityAction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="PermitOnly">
-      <MemberSignature Language="C#" Value="PermitOnly" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.SecurityAction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="PreJitDeny">
-      <MemberSignature Language="C#" Value="PreJitDeny" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.SecurityAction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="PreJitGrant">
-      <MemberSignature Language="C#" Value="PreJitGrant" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.SecurityAction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Request">
-      <MemberSignature Language="C#" Value="Request" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.SecurityAction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="RequestMinimum">
-      <MemberSignature Language="C#" Value="RequestMinimum" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.SecurityAction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="RequestOptional">
-      <MemberSignature Language="C#" Value="RequestOptional" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.SecurityAction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="RequestRefuse">
-      <MemberSignature Language="C#" Value="RequestRefuse" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.SecurityAction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/SecurityDeclaration.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/SecurityDeclaration.xml
deleted file mode 100644
index e3473a7..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/SecurityDeclaration.xml
+++ /dev/null
@@ -1,167 +0,0 @@
-<Type Name="SecurityDeclaration" FullName="Mono.Cecil.SecurityDeclaration">
-  <TypeSignature Language="C#" Value="public sealed class SecurityDeclaration : Mono.Cecil.IAnnotationProvider, Mono.Cecil.IReflectionVisitable, Mono.Cecil.IRequireResolving" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IAnnotationProvider</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionVisitable</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IRequireResolving</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public SecurityDeclaration (Mono.Cecil.SecurityAction action);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="action" Type="Mono.Cecil.SecurityAction" />
-      </Parameters>
-      <Docs>
-        <param name="action">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Action">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.SecurityAction Action { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.SecurityAction</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Blob">
-      <MemberSignature Language="C#" Value="public byte[] Blob { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Byte[]</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Clone">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.SecurityDeclaration Clone ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.SecurityDeclaration</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Mono.Cecil.IAnnotationProvider.Annotations">
-      <MemberSignature Language="C#" Value="System.Collections.IDictionary Mono.Cecil.IAnnotationProvider.Annotations { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Collections.IDictionary</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PermissionSet">
-      <MemberSignature Language="C#" Value="public System.Security.PermissionSet PermissionSet { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Security.PermissionSet</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resolve">
-      <MemberSignature Language="C#" Value="public bool Resolve ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resolved">
-      <MemberSignature Language="C#" Value="public bool Resolved { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/SecurityDeclarationCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/SecurityDeclarationCollection.xml
deleted file mode 100644
index d62c36d..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/SecurityDeclarationCollection.xml
+++ /dev/null
@@ -1,280 +0,0 @@
-<Type Name="SecurityDeclarationCollection" FullName="Mono.Cecil.SecurityDeclarationCollection">
-  <TypeSignature Language="C#" Value="public sealed class SecurityDeclarationCollection : Mono.Cecil.IReflectionVisitable, System.Collections.IEnumerable" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionVisitable</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>System.Collections.IEnumerable</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public SecurityDeclarationCollection (Mono.Cecil.IHasSecurity container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.IHasSecurity" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Mono.Cecil.SecurityDeclaration value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.SecurityDeclaration" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Clear">
-      <MemberSignature Language="C#" Value="public void Clear ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.IHasSecurity Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.IHasSecurity</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.SecurityAction action);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="action" Type="Mono.Cecil.SecurityAction" />
-      </Parameters>
-      <Docs>
-        <param name="action">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.SecurityDeclaration value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.SecurityDeclaration" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CopyTo">
-      <MemberSignature Language="C#" Value="public void CopyTo (Array ary, int index);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="ary" Type="System.Array" />
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="ary">To be added.</param>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Count">
-      <MemberSignature Language="C#" Value="public int Count { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetEnumerator">
-      <MemberSignature Language="C#" Value="public System.Collections.IEnumerator GetEnumerator ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Collections.IEnumerator</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsSynchronized">
-      <MemberSignature Language="C#" Value="public bool IsSynchronized { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.SecurityDeclaration this[Mono.Cecil.SecurityAction action] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.SecurityDeclaration</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="action" Type="Mono.Cecil.SecurityAction" />
-      </Parameters>
-      <Docs>
-        <param name="action">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.SecurityDeclaration this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.SecurityDeclaration</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.SecurityAction action);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="action" Type="Mono.Cecil.SecurityAction" />
-      </Parameters>
-      <Docs>
-        <param name="action">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SyncRoot">
-      <MemberSignature Language="C#" Value="public object SyncRoot { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Object</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/SentinelType.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/SentinelType.xml
deleted file mode 100644
index cb2baf7..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/SentinelType.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<Type Name="SentinelType" FullName="Mono.Cecil.SentinelType">
-  <TypeSignature Language="C#" Value="public sealed class SentinelType : Mono.Cecil.TypeSpecification" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.TypeSpecification</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public SentinelType (Mono.Cecil.TypeReference elementType);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="elementType" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="elementType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/TargetRuntime.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/TargetRuntime.xml
deleted file mode 100644
index 66b2f8b..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/TargetRuntime.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-<Type Name="TargetRuntime" FullName="Mono.Cecil.TargetRuntime">
-  <TypeSignature Language="C#" Value="public enum TargetRuntime" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="NET_1_0">
-      <MemberSignature Language="C#" Value="NET_1_0" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TargetRuntime</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="NET_1_1">
-      <MemberSignature Language="C#" Value="NET_1_1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TargetRuntime</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="NET_2_0">
-      <MemberSignature Language="C#" Value="NET_2_0" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TargetRuntime</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="NET_4_0">
-      <MemberSignature Language="C#" Value="NET_4_0" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TargetRuntime</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/TypeAttributes.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/TypeAttributes.xml
deleted file mode 100644
index 791fc6a..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/TypeAttributes.xml
+++ /dev/null
@@ -1,385 +0,0 @@
-<Type Name="TypeAttributes" FullName="Mono.Cecil.TypeAttributes">
-  <TypeSignature Language="C#" Value="public enum TypeAttributes" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Attributes>
-    <Attribute>
-      <AttributeName>System.Flags</AttributeName>
-    </Attribute>
-  </Attributes>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="Abstract">
-      <MemberSignature Language="C#" Value="Abstract" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="AnsiClass">
-      <MemberSignature Language="C#" Value="AnsiClass" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="AutoClass">
-      <MemberSignature Language="C#" Value="AutoClass" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="AutoLayout">
-      <MemberSignature Language="C#" Value="AutoLayout" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="BeforeFieldInit">
-      <MemberSignature Language="C#" Value="BeforeFieldInit" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Class">
-      <MemberSignature Language="C#" Value="Class" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ClassSemanticMask">
-      <MemberSignature Language="C#" Value="ClassSemanticMask" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ExplicitLayout">
-      <MemberSignature Language="C#" Value="ExplicitLayout" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="HasSecurity">
-      <MemberSignature Language="C#" Value="HasSecurity" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Import">
-      <MemberSignature Language="C#" Value="Import" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Interface">
-      <MemberSignature Language="C#" Value="Interface" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="LayoutMask">
-      <MemberSignature Language="C#" Value="LayoutMask" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="NestedAssembly">
-      <MemberSignature Language="C#" Value="NestedAssembly" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="NestedFamANDAssem">
-      <MemberSignature Language="C#" Value="NestedFamANDAssem" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="NestedFamily">
-      <MemberSignature Language="C#" Value="NestedFamily" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="NestedFamORAssem">
-      <MemberSignature Language="C#" Value="NestedFamORAssem" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="NestedPrivate">
-      <MemberSignature Language="C#" Value="NestedPrivate" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="NestedPublic">
-      <MemberSignature Language="C#" Value="NestedPublic" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="NotPublic">
-      <MemberSignature Language="C#" Value="NotPublic" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Public">
-      <MemberSignature Language="C#" Value="Public" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="RTSpecialName">
-      <MemberSignature Language="C#" Value="RTSpecialName" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Sealed">
-      <MemberSignature Language="C#" Value="Sealed" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="SequentialLayout">
-      <MemberSignature Language="C#" Value="SequentialLayout" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Serializable">
-      <MemberSignature Language="C#" Value="Serializable" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="SpecialName">
-      <MemberSignature Language="C#" Value="SpecialName" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="StringFormatMask">
-      <MemberSignature Language="C#" Value="StringFormatMask" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="UnicodeClass">
-      <MemberSignature Language="C#" Value="UnicodeClass" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="VisibilityMask">
-      <MemberSignature Language="C#" Value="VisibilityMask" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/TypeDefinition.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/TypeDefinition.xml
deleted file mode 100644
index 21edcd2..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/TypeDefinition.xml
+++ /dev/null
@@ -1,815 +0,0 @@
-<Type Name="TypeDefinition" FullName="Mono.Cecil.TypeDefinition">
-  <TypeSignature Language="C#" Value="public sealed class TypeDefinition : Mono.Cecil.TypeReference, Mono.Cecil.IHasSecurity, Mono.Cecil.IMemberDefinition" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.TypeReference</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IHasSecurity</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IMemberDefinition</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public TypeDefinition (string name, string ns, Mono.Cecil.TypeAttributes attributes, Mono.Cecil.TypeReference baseType);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="ns" Type="System.String" />
-        <Parameter Name="attributes" Type="Mono.Cecil.TypeAttributes" />
-        <Parameter Name="baseType" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="ns">To be added.</param>
-        <param name="attributes">To be added.</param>
-        <param name="baseType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public override void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Attributes">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeAttributes Attributes { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeAttributes</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="BaseType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference BaseType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ClassSize">
-      <MemberSignature Language="C#" Value="public uint ClassSize { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Clone">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeDefinition Clone ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Constructors">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ConstructorCollection Constructors { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ConstructorCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="DeclaringType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeDefinition DeclaringType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Events">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.EventDefinitionCollection Events { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.EventDefinitionCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Fields">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.FieldDefinitionCollection Fields { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.FieldDefinitionCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasConstructors">
-      <MemberSignature Language="C#" Value="public bool HasConstructors { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasEvents">
-      <MemberSignature Language="C#" Value="public bool HasEvents { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasFields">
-      <MemberSignature Language="C#" Value="public bool HasFields { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasInterfaces">
-      <MemberSignature Language="C#" Value="public bool HasInterfaces { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasLayoutInfo">
-      <MemberSignature Language="C#" Value="public bool HasLayoutInfo { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasMethods">
-      <MemberSignature Language="C#" Value="public bool HasMethods { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasNestedTypes">
-      <MemberSignature Language="C#" Value="public bool HasNestedTypes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasProperties">
-      <MemberSignature Language="C#" Value="public bool HasProperties { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasSecurity">
-      <MemberSignature Language="C#" Value="public bool HasSecurity { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasSecurityDeclarations">
-      <MemberSignature Language="C#" Value="public bool HasSecurityDeclarations { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Interfaces">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.InterfaceCollection Interfaces { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.InterfaceCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsAbstract">
-      <MemberSignature Language="C#" Value="public bool IsAbstract { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsAnsiClass">
-      <MemberSignature Language="C#" Value="public bool IsAnsiClass { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsAutoClass">
-      <MemberSignature Language="C#" Value="public bool IsAutoClass { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsAutoLayout">
-      <MemberSignature Language="C#" Value="public bool IsAutoLayout { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsBeforeFieldInit">
-      <MemberSignature Language="C#" Value="public bool IsBeforeFieldInit { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsClass">
-      <MemberSignature Language="C#" Value="public bool IsClass { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsEnum">
-      <MemberSignature Language="C#" Value="public bool IsEnum { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsExplicitLayout">
-      <MemberSignature Language="C#" Value="public bool IsExplicitLayout { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsImport">
-      <MemberSignature Language="C#" Value="public bool IsImport { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsInterface">
-      <MemberSignature Language="C#" Value="public bool IsInterface { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsNestedAssembly">
-      <MemberSignature Language="C#" Value="public bool IsNestedAssembly { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsNestedFamily">
-      <MemberSignature Language="C#" Value="public bool IsNestedFamily { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsNestedFamilyAndAssembly">
-      <MemberSignature Language="C#" Value="public bool IsNestedFamilyAndAssembly { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsNestedFamilyOrAssembly">
-      <MemberSignature Language="C#" Value="public bool IsNestedFamilyOrAssembly { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsNestedPrivate">
-      <MemberSignature Language="C#" Value="public bool IsNestedPrivate { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsNestedPublic">
-      <MemberSignature Language="C#" Value="public bool IsNestedPublic { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsNotPublic">
-      <MemberSignature Language="C#" Value="public bool IsNotPublic { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsPublic">
-      <MemberSignature Language="C#" Value="public bool IsPublic { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsRuntimeSpecialName">
-      <MemberSignature Language="C#" Value="public bool IsRuntimeSpecialName { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsSealed">
-      <MemberSignature Language="C#" Value="public bool IsSealed { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsSequentialLayout">
-      <MemberSignature Language="C#" Value="public bool IsSequentialLayout { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsSerializable">
-      <MemberSignature Language="C#" Value="public bool IsSerializable { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsSpecialName">
-      <MemberSignature Language="C#" Value="public bool IsSpecialName { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsUnicodeClass">
-      <MemberSignature Language="C#" Value="public bool IsUnicodeClass { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsValueType">
-      <MemberSignature Language="C#" Value="public override bool IsValueType { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Methods">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.MethodDefinitionCollection Methods { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.MethodDefinitionCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="NestedTypes">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.NestedTypeCollection NestedTypes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.NestedTypeCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PackingSize">
-      <MemberSignature Language="C#" Value="public ushort PackingSize { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.UInt16</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Properties">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.PropertyDefinitionCollection Properties { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.PropertyDefinitionCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resolve">
-      <MemberSignature Language="C#" Value="public override Mono.Cecil.TypeDefinition Resolve ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SecurityDeclarations">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.SecurityDeclarationCollection SecurityDeclarations { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.SecurityDeclarationCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/TypeDefinitionCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/TypeDefinitionCollection.xml
deleted file mode 100644
index 36ce5a8..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/TypeDefinitionCollection.xml
+++ /dev/null
@@ -1,446 +0,0 @@
-<Type Name="TypeDefinitionCollection" FullName="Mono.Cecil.TypeDefinitionCollection">
-  <TypeSignature Language="C#" Value="public sealed class TypeDefinitionCollection : System.Collections.Specialized.NameObjectCollectionBase, Mono.Cecil.IReflectionVisitable, System.Collections.IList" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.Specialized.NameObjectCollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionVisitable</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>System.Collections.IList</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public TypeDefinitionCollection (Mono.Cecil.ModuleDefinition container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.ModuleDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Mono.Cecil.TypeDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Clear">
-      <MemberSignature Language="C#" Value="public void Clear ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ModuleDefinition Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ModuleDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.TypeDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (string fullName);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="fullName" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="fullName">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CopyTo">
-      <MemberSignature Language="C#" Value="public void CopyTo (Array ary, int index);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="ary" Type="System.Array" />
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="ary">To be added.</param>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetEnumerator">
-      <MemberSignature Language="C#" Value="public System.Collections.IEnumerator GetEnumerator ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Collections.IEnumerator</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.TypeDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsSynchronized">
-      <MemberSignature Language="C#" Value="public bool IsSynchronized { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeDefinition this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeDefinition this[string fullName] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="fullName" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="fullName">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.TypeDefinition value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RemoveAt">
-      <MemberSignature Language="C#" Value="public void RemoveAt (int index);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SyncRoot">
-      <MemberSignature Language="C#" Value="public object SyncRoot { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Object</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="System.Collections.IList.Add">
-      <MemberSignature Language="C#" Value="int IList.Add (object value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="System.Collections.IList.Contains">
-      <MemberSignature Language="C#" Value="bool IList.Contains (object value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="System.Collections.IList.IndexOf">
-      <MemberSignature Language="C#" Value="int IList.IndexOf (object value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="System.Collections.IList.Insert">
-      <MemberSignature Language="C#" Value="void IList.Insert (int index, object value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="value" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="System.Collections.IList.IsFixedSize">
-      <MemberSignature Language="C#" Value="bool System.Collections.IList.IsFixedSize { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="System.Collections.IList.IsReadOnly">
-      <MemberSignature Language="C#" Value="bool System.Collections.IList.IsReadOnly { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="System.Collections.IList.Item">
-      <MemberSignature Language="C#" Value="object System.Collections.IList.Item[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Object</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="System.Collections.IList.Remove">
-      <MemberSignature Language="C#" Value="void IList.Remove (object value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/TypeReference.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/TypeReference.xml
deleted file mode 100644
index 252f83f..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/TypeReference.xml
+++ /dev/null
@@ -1,307 +0,0 @@
-<Type Name="TypeReference" FullName="Mono.Cecil.TypeReference">
-  <TypeSignature Language="C#" Value="public class TypeReference : Mono.Cecil.MemberReference, Mono.Cecil.ICustomAttributeProvider, Mono.Cecil.IGenericParameterProvider" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.MemberReference</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.ICustomAttributeProvider</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IGenericParameterProvider</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="protected TypeReference (string name, string ns);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="ns" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="ns">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public TypeReference (string name, string ns, Mono.Cecil.IMetadataScope scope, bool valueType);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="ns" Type="System.String" />
-        <Parameter Name="scope" Type="Mono.Cecil.IMetadataScope" />
-        <Parameter Name="valueType" Type="System.Boolean" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="ns">To be added.</param>
-        <param name="scope">To be added.</param>
-        <param name="valueType">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public override void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CustomAttributes">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.CustomAttributeCollection CustomAttributes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.CustomAttributeCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="FullName">
-      <MemberSignature Language="C#" Value="public virtual string FullName { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GenericParameters">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.GenericParameterCollection GenericParameters { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.GenericParameterCollection</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetOriginalType">
-      <MemberSignature Language="C#" Value="public virtual Mono.Cecil.TypeReference GetOriginalType ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasCustomAttributes">
-      <MemberSignature Language="C#" Value="public bool HasCustomAttributes { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasGenericParameters">
-      <MemberSignature Language="C#" Value="public bool HasGenericParameters { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsNested">
-      <MemberSignature Language="C#" Value="public bool IsNested { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsValueType">
-      <MemberSignature Language="C#" Value="public virtual bool IsValueType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="m_isValueType">
-      <MemberSignature Language="C#" Value="protected bool m_isValueType;" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Module">
-      <MemberSignature Language="C#" Value="public virtual Mono.Cecil.ModuleDefinition Module { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ModuleDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public override string Name { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Namespace">
-      <MemberSignature Language="C#" Value="public virtual string Namespace { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Resolve">
-      <MemberSignature Language="C#" Value="public virtual Mono.Cecil.TypeDefinition Resolve ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeDefinition</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Scope">
-      <MemberSignature Language="C#" Value="public virtual Mono.Cecil.IMetadataScope Scope { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.IMetadataScope</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ToString">
-      <MemberSignature Language="C#" Value="public override string ToString ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/TypeReferenceCollection.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/TypeReferenceCollection.xml
deleted file mode 100644
index 5c037e7..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/TypeReferenceCollection.xml
+++ /dev/null
@@ -1,446 +0,0 @@
-<Type Name="TypeReferenceCollection" FullName="Mono.Cecil.TypeReferenceCollection">
-  <TypeSignature Language="C#" Value="public sealed class TypeReferenceCollection : System.Collections.Specialized.NameObjectCollectionBase, Mono.Cecil.IReflectionVisitable, System.Collections.IList" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.Specialized.NameObjectCollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Mono.Cecil.IReflectionVisitable</InterfaceName>
-    </Interface>
-    <Interface>
-      <InterfaceName>System.Collections.IList</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public TypeReferenceCollection (Mono.Cecil.ModuleDefinition container);" />
-      <MemberType>Constructor</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <Parameters>
-        <Parameter Name="container" Type="Mono.Cecil.ModuleDefinition" />
-      </Parameters>
-      <Docs>
-        <param name="container">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Accept">
-      <MemberSignature Language="C#" Value="public void Accept (Mono.Cecil.IReflectionVisitor visitor);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="visitor" Type="Mono.Cecil.IReflectionVisitor" />
-      </Parameters>
-      <Docs>
-        <param name="visitor">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Mono.Cecil.TypeReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Clear">
-      <MemberSignature Language="C#" Value="public void Clear ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Container">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.ModuleDefinition Container { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ModuleDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (Mono.Cecil.TypeReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contains">
-      <MemberSignature Language="C#" Value="public bool Contains (string fullName);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="fullName" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="fullName">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CopyTo">
-      <MemberSignature Language="C#" Value="public void CopyTo (Array ary, int index);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="ary" Type="System.Array" />
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="ary">To be added.</param>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetEnumerator">
-      <MemberSignature Language="C#" Value="public System.Collections.IEnumerator GetEnumerator ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Collections.IEnumerator</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IndexOf">
-      <MemberSignature Language="C#" Value="public int IndexOf (Mono.Cecil.TypeReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsSynchronized">
-      <MemberSignature Language="C#" Value="public bool IsSynchronized { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference this[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference this[string fullName] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="fullName" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="fullName">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Mono.Cecil.TypeReference value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="Mono.Cecil.TypeReference" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RemoveAt">
-      <MemberSignature Language="C#" Value="public void RemoveAt (int index);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SyncRoot">
-      <MemberSignature Language="C#" Value="public object SyncRoot { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Object</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="System.Collections.IList.Add">
-      <MemberSignature Language="C#" Value="int IList.Add (object value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="System.Collections.IList.Contains">
-      <MemberSignature Language="C#" Value="bool IList.Contains (object value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="System.Collections.IList.IndexOf">
-      <MemberSignature Language="C#" Value="int IList.IndexOf (object value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="System.Collections.IList.Insert">
-      <MemberSignature Language="C#" Value="void IList.Insert (int index, object value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-        <Parameter Name="value" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="System.Collections.IList.IsFixedSize">
-      <MemberSignature Language="C#" Value="bool System.Collections.IList.IsFixedSize { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="System.Collections.IList.IsReadOnly">
-      <MemberSignature Language="C#" Value="bool System.Collections.IList.IsReadOnly { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="System.Collections.IList.Item">
-      <MemberSignature Language="C#" Value="object System.Collections.IList.Item[int index] { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Object</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="index" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="index">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="System.Collections.IList.Remove">
-      <MemberSignature Language="C#" Value="void IList.Remove (object value);" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="value" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="value">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/TypeSpecification.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/TypeSpecification.xml
deleted file mode 100644
index 5778c29..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/TypeSpecification.xml
+++ /dev/null
@@ -1,138 +0,0 @@
-<Type Name="TypeSpecification" FullName="Mono.Cecil.TypeSpecification">
-  <TypeSignature Language="C#" Value="public abstract class TypeSpecification : Mono.Cecil.TypeReference" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Mono.Cecil.TypeReference</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="ElementType">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.TypeReference ElementType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="FullName">
-      <MemberSignature Language="C#" Value="public override string FullName { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetOriginalType">
-      <MemberSignature Language="C#" Value="public override Mono.Cecil.TypeReference GetOriginalType ();" />
-      <MemberType>Method</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.TypeReference</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsValueType">
-      <MemberSignature Language="C#" Value="public override bool IsValueType { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Module">
-      <MemberSignature Language="C#" Value="public override Mono.Cecil.ModuleDefinition Module { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.ModuleDefinition</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public override string Name { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Namespace">
-      <MemberSignature Language="C#" Value="public override string Namespace { set; get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Scope">
-      <MemberSignature Language="C#" Value="public override Mono.Cecil.IMetadataScope Scope { get; }" />
-      <MemberType>Property</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.IMetadataScope</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/VariantType.xml b/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/VariantType.xml
deleted file mode 100644
index ae4d673..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/Mono.Cecil/VariantType.xml
+++ /dev/null
@@ -1,263 +0,0 @@
-<Type Name="VariantType" FullName="Mono.Cecil.VariantType">
-  <TypeSignature Language="C#" Value="public enum VariantType" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Cecil</AssemblyName>
-    <AssemblyVersion>0.6.9.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="BOOL">
-      <MemberSignature Language="C#" Value="BOOL" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.VariantType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="BSTR">
-      <MemberSignature Language="C#" Value="BSTR" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.VariantType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="CY">
-      <MemberSignature Language="C#" Value="CY" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.VariantType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="DATE">
-      <MemberSignature Language="C#" Value="DATE" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.VariantType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="DECIMAL">
-      <MemberSignature Language="C#" Value="DECIMAL" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.VariantType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="DISPATCH">
-      <MemberSignature Language="C#" Value="DISPATCH" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.VariantType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ERROR">
-      <MemberSignature Language="C#" Value="ERROR" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.VariantType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="I1">
-      <MemberSignature Language="C#" Value="I1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.VariantType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="I2">
-      <MemberSignature Language="C#" Value="I2" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.VariantType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="I4">
-      <MemberSignature Language="C#" Value="I4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.VariantType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="INT">
-      <MemberSignature Language="C#" Value="INT" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.VariantType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="R4">
-      <MemberSignature Language="C#" Value="R4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.VariantType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="R8">
-      <MemberSignature Language="C#" Value="R8" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.VariantType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="UI1">
-      <MemberSignature Language="C#" Value="UI1" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.VariantType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="UI2">
-      <MemberSignature Language="C#" Value="UI2" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.VariantType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="UI4">
-      <MemberSignature Language="C#" Value="UI4" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.VariantType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="UINT">
-      <MemberSignature Language="C#" Value="UINT" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.VariantType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="UNKNOWN">
-      <MemberSignature Language="C#" Value="UNKNOWN" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.VariantType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="VARIANT">
-      <MemberSignature Language="C#" Value="VARIANT" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.6.9.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Cecil.VariantType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/index.xml b/mcs/class/Mono.Cecil/Documentation/en/index.xml
deleted file mode 100644
index 5c339a1..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/index.xml
+++ /dev/null
@@ -1,346 +0,0 @@
-<Overview>
-  <Assemblies>
-    <Assembly Name="Mono.Cecil" Version="0.6.9.0">
-      <Attributes>
-        <Attribute>
-          <AttributeName>System.CLSCompliant(false)</AttributeName>
-        </Attribute>
-        <Attribute>
-          <AttributeName>System.Reflection.AssemblyConfiguration("")</AttributeName>
-        </Attribute>
-        <Attribute>
-          <AttributeName>System.Reflection.AssemblyCopyright("(C) 2005 - 2007, Jb Evain")</AttributeName>
-        </Attribute>
-        <Attribute>
-          <AttributeName>System.Reflection.AssemblyDescription("Library for reading and writing CIL images")</AttributeName>
-        </Attribute>
-        <Attribute>
-          <AttributeName>System.Reflection.AssemblyProduct("Mono.Cecil")</AttributeName>
-        </Attribute>
-        <Attribute>
-          <AttributeName>System.Reflection.AssemblyTitle("Mono.Cecil")</AttributeName>
-        </Attribute>
-        <Attribute>
-          <AttributeName>System.Runtime.CompilerServices.RuntimeCompatibility(WrapNonExceptionThrows=true)</AttributeName>
-        </Attribute>
-        <Attribute>
-          <AttributeName>System.Runtime.InteropServices.ComVisible(false)</AttributeName>
-        </Attribute>
-      </Attributes>
-    </Assembly>
-  </Assemblies>
-  <Remarks>To be added.</Remarks>
-  <Copyright>To be added.</Copyright>
-  <Types>
-    <Namespace Name="Mono.Cecil">
-      <Type Name="ArrayDimension" Kind="Class" />
-      <Type Name="ArrayDimensionCollection" Kind="Class" />
-      <Type Name="ArrayMarshalSpec" Kind="Class" />
-      <Type Name="ArrayType" Kind="Class" />
-      <Type Name="AssemblyDefinition" Kind="Class" />
-      <Type Name="AssemblyFactory" Kind="Class" />
-      <Type Name="AssemblyFlags" Kind="Enumeration" />
-      <Type Name="AssemblyHashAlgorithm" Kind="Enumeration" />
-      <Type Name="AssemblyKind" Kind="Enumeration" />
-      <Type Name="AssemblyLinkedResource" Kind="Class" />
-      <Type Name="AssemblyNameDefinition" Kind="Class" />
-      <Type Name="AssemblyNameReference" Kind="Class" />
-      <Type Name="AssemblyNameReferenceCollection" Kind="Class" />
-      <Type Name="BaseAssemblyResolver" Kind="Class" />
-      <Type Name="BaseReflectionVisitor" Kind="Class" />
-      <Type Name="BaseStructureVisitor" Kind="Class" />
-      <Type Name="CallSite" Kind="Class" />
-      <Type Name="Constants" Kind="Class" />
-      <Type Name="ConstraintCollection" Kind="Class" />
-      <Type Name="ConstructorCollection" Kind="Class" />
-      <Type Name="CustomAttribute" Kind="Class" />
-      <Type Name="CustomAttributeCollection" Kind="Class" />
-      <Type Name="CustomMarshalerSpec" Kind="Class" />
-      <Type Name="DefaultAssemblyResolver" Kind="Class" />
-      <Type Name="DefaultImporter" Kind="Class" />
-      <Type Name="EmbeddedResource" Kind="Class" />
-      <Type Name="EventAttributes" Kind="Enumeration" />
-      <Type Name="EventDefinition" Kind="Class" />
-      <Type Name="EventDefinitionCollection" Kind="Class" />
-      <Type Name="EventReference" Kind="Class" />
-      <Type Name="ExternTypeCollection" Kind="Class" />
-      <Type Name="FieldAttributes" Kind="Enumeration" />
-      <Type Name="FieldDefinition" Kind="Class" />
-      <Type Name="FieldDefinitionCollection" Kind="Class" />
-      <Type Name="FieldReference" Kind="Class" />
-      <Type Name="FileAttributes" Kind="Enumeration" />
-      <Type Name="FixedArraySpec" Kind="Class" />
-      <Type Name="FixedSysStringSpec" Kind="Class" />
-      <Type Name="FunctionPointerType" Kind="Class" />
-      <Type Name="GenericArgumentCollection" Kind="Class" />
-      <Type Name="GenericContext" Kind="Class" />
-      <Type Name="GenericInstanceMethod" Kind="Class" />
-      <Type Name="GenericInstanceType" Kind="Class" />
-      <Type Name="GenericParameter" Kind="Class" />
-      <Type Name="GenericParameterAttributes" Kind="Enumeration" />
-      <Type Name="GenericParameterCollection" Kind="Class" />
-      <Type Name="IAnnotationProvider" Kind="Interface" />
-      <Type Name="IAssemblyResolver" Kind="Interface" />
-      <Type Name="ICustomAttributeProvider" Kind="Interface" />
-      <Type Name="IGenericInstance" Kind="Interface" />
-      <Type Name="IGenericParameterProvider" Kind="Interface" />
-      <Type Name="IHasConstant" Kind="Interface" />
-      <Type Name="IHasMarshalSpec" Kind="Interface" />
-      <Type Name="IHasSecurity" Kind="Interface" />
-      <Type Name="IImporter" Kind="Interface" />
-      <Type Name="IMemberDefinition" Kind="Interface" />
-      <Type Name="IMemberReference" Kind="Interface" />
-      <Type Name="IMetadataScope" Kind="Interface" />
-      <Type Name="IMetadataTokenProvider" Kind="Interface" />
-      <Type Name="IMethodSignature" Kind="Interface" />
-      <Type Name="ImportContext" Kind="Class" />
-      <Type Name="InterfaceCollection" Kind="Class" />
-      <Type Name="IReflectionStructureVisitable" Kind="Interface" />
-      <Type Name="IReflectionStructureVisitor" Kind="Interface" />
-      <Type Name="IReflectionVisitable" Kind="Interface" />
-      <Type Name="IReflectionVisitor" Kind="Interface" />
-      <Type Name="IRequireResolving" Kind="Interface" />
-      <Type Name="LinkedResource" Kind="Class" />
-      <Type Name="ManifestResourceAttributes" Kind="Enumeration" />
-      <Type Name="MarshalSpec" Kind="Class" />
-      <Type Name="MemberReference" Kind="Class" />
-      <Type Name="MemberReferenceCollection" Kind="Class" />
-      <Type Name="MethodAttributes" Kind="Enumeration" />
-      <Type Name="MethodCallingConvention" Kind="Enumeration" />
-      <Type Name="MethodDefinition" Kind="Class" />
-      <Type Name="MethodDefinitionCollection" Kind="Class" />
-      <Type Name="MethodImplAttributes" Kind="Enumeration" />
-      <Type Name="MethodReference" Kind="Class" />
-      <Type Name="MethodReturnType" Kind="Class" />
-      <Type Name="MethodSemanticsAttributes" Kind="Enumeration" />
-      <Type Name="MethodSpecification" Kind="Class" />
-      <Type Name="ModifierOptional" Kind="Class" />
-      <Type Name="ModifierRequired" Kind="Class" />
-      <Type Name="ModType" Kind="Class" />
-      <Type Name="ModuleDefinition" Kind="Class" />
-      <Type Name="ModuleDefinitionCollection" Kind="Class" />
-      <Type Name="ModuleReference" Kind="Class" />
-      <Type Name="ModuleReferenceCollection" Kind="Class" />
-      <Type Name="NativeType" Kind="Enumeration" />
-      <Type Name="NestedTypeCollection" Kind="Class" />
-      <Type Name="OverrideCollection" Kind="Class" />
-      <Type Name="ParameterAttributes" Kind="Enumeration" />
-      <Type Name="ParameterDefinition" Kind="Class" />
-      <Type Name="ParameterDefinitionCollection" Kind="Class" />
-      <Type Name="ParameterReference" Kind="Class" />
-      <Type Name="PinnedType" Kind="Class" />
-      <Type Name="PInvokeAttributes" Kind="Enumeration" />
-      <Type Name="PInvokeInfo" Kind="Class" />
-      <Type Name="PointerType" Kind="Class" />
-      <Type Name="PropertyAttributes" Kind="Enumeration" />
-      <Type Name="PropertyDefinition" Kind="Class" />
-      <Type Name="PropertyDefinitionCollection" Kind="Class" />
-      <Type Name="PropertyReference" Kind="Class" />
-      <Type Name="ReferenceType" Kind="Class" />
-      <Type Name="ReflectionException" Kind="Class" />
-      <Type Name="Resource" Kind="Class" />
-      <Type Name="ResourceCollection" Kind="Class" />
-      <Type Name="SafeArraySpec" Kind="Class" />
-      <Type Name="SecurityAction" Kind="Enumeration" />
-      <Type Name="SecurityDeclaration" Kind="Class" />
-      <Type Name="SecurityDeclarationCollection" Kind="Class" />
-      <Type Name="SentinelType" Kind="Class" />
-      <Type Name="TargetRuntime" Kind="Enumeration" />
-      <Type Name="TypeAttributes" Kind="Enumeration" />
-      <Type Name="TypeDefinition" Kind="Class" />
-      <Type Name="TypeDefinitionCollection" Kind="Class" />
-      <Type Name="TypeReference" Kind="Class" />
-      <Type Name="TypeReferenceCollection" Kind="Class" />
-      <Type Name="TypeSpecification" Kind="Class" />
-      <Type Name="VariantType" Kind="Enumeration" />
-    </Namespace>
-    <Namespace Name="Mono.Cecil.Binary">
-      <Type Name="BaseImageVisitor" Kind="Class" />
-      <Type Name="CLIHeader" Kind="Class" />
-      <Type Name="DataDirectory" Kind="Structure" />
-      <Type Name="DebugHeader" Kind="Class" />
-      <Type Name="DebugStoreType" Kind="Enumeration" />
-      <Type Name="DOSHeader" Kind="Class" />
-      <Type Name="ExportTable" Kind="Class" />
-      <Type Name="HintNameTable" Kind="Class" />
-      <Type Name="IBinaryVisitable" Kind="Interface" />
-      <Type Name="IBinaryVisitor" Kind="Interface" />
-      <Type Name="Image" Kind="Class" />
-      <Type Name="ImageCharacteristics" Kind="Enumeration" />
-      <Type Name="ImageFormatException" Kind="Class" />
-      <Type Name="ImportAddressTable" Kind="Class" />
-      <Type Name="ImportLookupTable" Kind="Class" />
-      <Type Name="ImportTable" Kind="Class" />
-      <Type Name="PEFileHeader" Kind="Class" />
-      <Type Name="PEOptionalHeader" Kind="Class" />
-      <Type Name="PEOptionalHeader+DataDirectoriesHeader" Kind="Class" />
-      <Type Name="PEOptionalHeader+NTSpecificFieldsHeader" Kind="Class" />
-      <Type Name="PEOptionalHeader+StandardFieldsHeader" Kind="Class" />
-      <Type Name="ResourceDataEntry" Kind="Class" />
-      <Type Name="ResourceDirectoryEntry" Kind="Class" />
-      <Type Name="ResourceDirectoryString" Kind="Class" />
-      <Type Name="ResourceDirectoryTable" Kind="Class" />
-      <Type Name="ResourceNode" Kind="Class" />
-      <Type Name="RuntimeImage" Kind="Enumeration" />
-      <Type Name="RVA" Kind="Structure" />
-      <Type Name="Section" Kind="Class" />
-      <Type Name="SectionCharacteristics" Kind="Enumeration" />
-      <Type Name="SectionCollection" Kind="Class" />
-      <Type Name="SubSystem" Kind="Enumeration" />
-    </Namespace>
-    <Namespace Name="Mono.Cecil.Cil">
-      <Type Name="BaseCodeVisitor" Kind="Class" />
-      <Type Name="CilWorker" Kind="Class" />
-      <Type Name="Code" Kind="Enumeration" />
-      <Type Name="Document" Kind="Class" />
-      <Type Name="DocumentHashAlgorithm" Kind="Enumeration" />
-      <Type Name="DocumentLanguage" Kind="Class" />
-      <Type Name="DocumentLanguageVendor" Kind="Class" />
-      <Type Name="DocumentType" Kind="Class" />
-      <Type Name="ExceptionHandler" Kind="Class" />
-      <Type Name="ExceptionHandlerCollection" Kind="Class" />
-      <Type Name="ExceptionHandlerType" Kind="Enumeration" />
-      <Type Name="FlowControl" Kind="Enumeration" />
-      <Type Name="GuidAttribute" Kind="Class" />
-      <Type Name="ICodeVisitable" Kind="Interface" />
-      <Type Name="ICodeVisitor" Kind="Interface" />
-      <Type Name="Instruction" Kind="Class" />
-      <Type Name="InstructionCollection" Kind="Class" />
-      <Type Name="IScopeProvider" Kind="Interface" />
-      <Type Name="ISymbolReader" Kind="Interface" />
-      <Type Name="ISymbolStoreFactory" Kind="Interface" />
-      <Type Name="ISymbolWriter" Kind="Interface" />
-      <Type Name="IVariableDefinitionProvider" Kind="Interface" />
-      <Type Name="MethodBody" Kind="Class" />
-      <Type Name="OpCode" Kind="Structure" />
-      <Type Name="OpCodes" Kind="Class" />
-      <Type Name="OpCodeType" Kind="Enumeration" />
-      <Type Name="OperandType" Kind="Enumeration" />
-      <Type Name="Scope" Kind="Class" />
-      <Type Name="ScopeCollection" Kind="Class" />
-      <Type Name="SequencePoint" Kind="Class" />
-      <Type Name="StackBehaviour" Kind="Enumeration" />
-      <Type Name="VariableDefinition" Kind="Class" />
-      <Type Name="VariableDefinitionCollection" Kind="Class" />
-      <Type Name="VariableReference" Kind="Class" />
-    </Namespace>
-    <Namespace Name="Mono.Cecil.Metadata">
-      <Type Name="AssemblyOSRow" Kind="Class" />
-      <Type Name="AssemblyOSTable" Kind="Class" />
-      <Type Name="AssemblyProcessorRow" Kind="Class" />
-      <Type Name="AssemblyProcessorTable" Kind="Class" />
-      <Type Name="AssemblyRefOSRow" Kind="Class" />
-      <Type Name="AssemblyRefOSTable" Kind="Class" />
-      <Type Name="AssemblyRefProcessorRow" Kind="Class" />
-      <Type Name="AssemblyRefProcessorTable" Kind="Class" />
-      <Type Name="AssemblyRefRow" Kind="Class" />
-      <Type Name="AssemblyRefTable" Kind="Class" />
-      <Type Name="AssemblyRow" Kind="Class" />
-      <Type Name="AssemblyTable" Kind="Class" />
-      <Type Name="BaseMetadataRowVisitor" Kind="Class" />
-      <Type Name="BaseMetadataTableVisitor" Kind="Class" />
-      <Type Name="BaseMetadataVisitor" Kind="Class" />
-      <Type Name="BlobHeap" Kind="Class" />
-      <Type Name="ClassLayoutRow" Kind="Class" />
-      <Type Name="ClassLayoutTable" Kind="Class" />
-      <Type Name="CodedIndex" Kind="Enumeration" />
-      <Type Name="ConstantRow" Kind="Class" />
-      <Type Name="ConstantTable" Kind="Class" />
-      <Type Name="CustomAttributeRow" Kind="Class" />
-      <Type Name="CustomAttributeTable" Kind="Class" />
-      <Type Name="DeclSecurityRow" Kind="Class" />
-      <Type Name="DeclSecurityTable" Kind="Class" />
-      <Type Name="ElementType" Kind="Enumeration" />
-      <Type Name="EventMapRow" Kind="Class" />
-      <Type Name="EventMapTable" Kind="Class" />
-      <Type Name="EventPtrRow" Kind="Class" />
-      <Type Name="EventPtrTable" Kind="Class" />
-      <Type Name="EventRow" Kind="Class" />
-      <Type Name="EventTable" Kind="Class" />
-      <Type Name="ExportedTypeRow" Kind="Class" />
-      <Type Name="ExportedTypeTable" Kind="Class" />
-      <Type Name="FieldLayoutRow" Kind="Class" />
-      <Type Name="FieldLayoutTable" Kind="Class" />
-      <Type Name="FieldMarshalRow" Kind="Class" />
-      <Type Name="FieldMarshalTable" Kind="Class" />
-      <Type Name="FieldPtrRow" Kind="Class" />
-      <Type Name="FieldPtrTable" Kind="Class" />
-      <Type Name="FieldRow" Kind="Class" />
-      <Type Name="FieldRVARow" Kind="Class" />
-      <Type Name="FieldRVATable" Kind="Class" />
-      <Type Name="FieldTable" Kind="Class" />
-      <Type Name="FileRow" Kind="Class" />
-      <Type Name="FileTable" Kind="Class" />
-      <Type Name="GenericParamConstraintRow" Kind="Class" />
-      <Type Name="GenericParamConstraintTable" Kind="Class" />
-      <Type Name="GenericParamRow" Kind="Class" />
-      <Type Name="GenericParamTable" Kind="Class" />
-      <Type Name="GuidHeap" Kind="Class" />
-      <Type Name="IMetadataRow" Kind="Interface" />
-      <Type Name="IMetadataRowVisitable" Kind="Interface" />
-      <Type Name="IMetadataRowVisitor" Kind="Interface" />
-      <Type Name="IMetadataTable" Kind="Interface" />
-      <Type Name="IMetadataTableVisitable" Kind="Interface" />
-      <Type Name="IMetadataTableVisitor" Kind="Interface" />
-      <Type Name="IMetadataVisitable" Kind="Interface" />
-      <Type Name="IMetadataVisitor" Kind="Interface" />
-      <Type Name="ImplMapRow" Kind="Class" />
-      <Type Name="ImplMapTable" Kind="Class" />
-      <Type Name="InterfaceImplRow" Kind="Class" />
-      <Type Name="InterfaceImplTable" Kind="Class" />
-      <Type Name="ManifestResourceRow" Kind="Class" />
-      <Type Name="ManifestResourceTable" Kind="Class" />
-      <Type Name="MemberRefRow" Kind="Class" />
-      <Type Name="MemberRefTable" Kind="Class" />
-      <Type Name="MetadataFormatException" Kind="Class" />
-      <Type Name="MetadataHeap" Kind="Class" />
-      <Type Name="MetadataRoot" Kind="Class" />
-      <Type Name="MetadataRoot+MetadataRootHeader" Kind="Class" />
-      <Type Name="MetadataStream" Kind="Class" />
-      <Type Name="MetadataStream+MetadataStreamHeader" Kind="Class" />
-      <Type Name="MetadataStreamCollection" Kind="Class" />
-      <Type Name="MetadataToken" Kind="Structure" />
-      <Type Name="MethodImplRow" Kind="Class" />
-      <Type Name="MethodImplTable" Kind="Class" />
-      <Type Name="MethodPtrRow" Kind="Class" />
-      <Type Name="MethodPtrTable" Kind="Class" />
-      <Type Name="MethodRow" Kind="Class" />
-      <Type Name="MethodSemanticsRow" Kind="Class" />
-      <Type Name="MethodSemanticsTable" Kind="Class" />
-      <Type Name="MethodSpecRow" Kind="Class" />
-      <Type Name="MethodSpecTable" Kind="Class" />
-      <Type Name="MethodTable" Kind="Class" />
-      <Type Name="ModuleRefRow" Kind="Class" />
-      <Type Name="ModuleRefTable" Kind="Class" />
-      <Type Name="ModuleRow" Kind="Class" />
-      <Type Name="ModuleTable" Kind="Class" />
-      <Type Name="NestedClassRow" Kind="Class" />
-      <Type Name="NestedClassTable" Kind="Class" />
-      <Type Name="ParamPtrRow" Kind="Class" />
-      <Type Name="ParamPtrTable" Kind="Class" />
-      <Type Name="ParamRow" Kind="Class" />
-      <Type Name="ParamTable" Kind="Class" />
-      <Type Name="PropertyMapRow" Kind="Class" />
-      <Type Name="PropertyMapTable" Kind="Class" />
-      <Type Name="PropertyPtrRow" Kind="Class" />
-      <Type Name="PropertyPtrTable" Kind="Class" />
-      <Type Name="PropertyRow" Kind="Class" />
-      <Type Name="PropertyTable" Kind="Class" />
-      <Type Name="RowCollection" Kind="Class" />
-      <Type Name="StandAloneSigRow" Kind="Class" />
-      <Type Name="StandAloneSigTable" Kind="Class" />
-      <Type Name="StringsHeap" Kind="Class" />
-      <Type Name="TableCollection" Kind="Class" />
-      <Type Name="TablesHeap" Kind="Class" />
-      <Type Name="TokenType" Kind="Enumeration" />
-      <Type Name="TypeDefRow" Kind="Class" />
-      <Type Name="TypeDefTable" Kind="Class" />
-      <Type Name="TypeRefRow" Kind="Class" />
-      <Type Name="TypeRefTable" Kind="Class" />
-      <Type Name="TypeSpecRow" Kind="Class" />
-      <Type Name="TypeSpecTable" Kind="Class" />
-      <Type Name="UserStringsHeap" Kind="Class" />
-    </Namespace>
-  </Types>
-  <Title>Mono.Cecil</Title>
-</Overview>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/ns-.xml b/mcs/class/Mono.Cecil/Documentation/en/ns-.xml
deleted file mode 100644
index 36dfeb3..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/ns-.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<Namespace Name="">
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-</Namespace>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/ns-Mono.Cecil.Binary.xml b/mcs/class/Mono.Cecil/Documentation/en/ns-Mono.Cecil.Binary.xml
deleted file mode 100644
index fc7c340..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/ns-Mono.Cecil.Binary.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<Namespace Name="Mono.Cecil.Binary">
-  <Docs>
-    <summary>Internal namespace used by Mono.Cecil.</summary>
-    <remarks>
-      <para>
-	The classes in this namespace are low-level routines to access
-	ECMA CLI images and deals mostly with PE headers and other
-	low-level components.   
-      </para>
-      <para>
-	The API exposed in this namespace is intended for use by
-	Mono.Cecil and is not in general useful for developers.
-      </para>
-    </remarks>
-  </Docs>
-</Namespace>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/ns-Mono.Cecil.Cil.xml b/mcs/class/Mono.Cecil/Documentation/en/ns-Mono.Cecil.Cil.xml
deleted file mode 100644
index 5cb1815..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/ns-Mono.Cecil.Cil.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<Namespace Name="Mono.Cecil.Cil">
-  <Docs>
-    <summary>Dealing with Method Bodies: the Common Language Infrastructure opcodes.</summary>
-    <remarks>
-      <para>
-	The classes in this namespace are used to consume or generate
-	bytecodes from the Common Intermediate Language (CIL) from the
-	ECMA Common Language Infrastructure (CLI).
-      </para>
-    </remarks>
-  </Docs>
-</Namespace>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/ns-Mono.Cecil.Metadata.xml b/mcs/class/Mono.Cecil/Documentation/en/ns-Mono.Cecil.Metadata.xml
deleted file mode 100644
index 3457668..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/ns-Mono.Cecil.Metadata.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<Namespace Name="Mono.Cecil.Metadata">
-  <Docs>
-    <summary>Internal namespace used by Mono.Cecil.</summary>
-    <remarks>
-      <para>
-	The classes in this namespace are low-level routines to access
-	ECMA CLI metadata tables and other low-level ECMA CLI constructs. 
-      </para>
-      <para>
-	The API exposed in this namespace is intended for use by
-	Mono.Cecil and is not in general useful for developers.
-      </para>
-    </remarks>
-  </Docs>
-</Namespace>
diff --git a/mcs/class/Mono.Cecil/Documentation/en/ns-Mono.Cecil.xml b/mcs/class/Mono.Cecil/Documentation/en/ns-Mono.Cecil.xml
deleted file mode 100644
index 61d4bd5..0000000
--- a/mcs/class/Mono.Cecil/Documentation/en/ns-Mono.Cecil.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<Namespace Name="Mono.Cecil">
-  <Docs>
-    <summary>Representation for ECMA CLI Images.</summary>
-    <remarks>
-      <para>
-	The classes in this namespace are used to represent ECMA
-	Common Language Infrastructure (CLI) binary images.  These
-	represent assemblies, modules, types, methods, resources and
-	every other component that makes up the ECMA 335 files.
-      </para>
-      <para>
-	You can use the classes in Mono.Cecil to read existing ECMA
-	CLI images, creating CLI images and to modify these images
-	through the exposed API.
-      </para>
-    </remarks>
-  </Docs>
-</Namespace>
diff --git a/mcs/class/Mono.Cecil/Makefile b/mcs/class/Mono.Cecil/Makefile
index f653b99..b29cadd 100644
--- a/mcs/class/Mono.Cecil/Makefile
+++ b/mcs/class/Mono.Cecil/Makefile
@@ -5,7 +5,11 @@ LIBRARY = Mono.Cecil.dll
 LIBRARY_SNK = ../mono.snk
 LIBRARY_PACKAGE = none
 
-LIB_MCS_FLAGS = /r:$(corlib) /r:System.dll -keyfile:$(LIBRARY_SNK)
+LIB_MCS_FLAGS = /r:$(corlib) -keyfile:$(LIBRARY_SNK) -r:System.Core.dll -d:NET_3_5
+
+ifeq (net_4_0, $(PROFILE))
+LIB_MCS_FLAGS += -d:NET_4_0
+endif
 
 NO_TEST = yes
 
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/BaseImageVisitor.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/BaseImageVisitor.cs
deleted file mode 100644
index 610c0be..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/BaseImageVisitor.cs
+++ /dev/null
@@ -1,101 +0,0 @@
-//
-// BaseImageVisitor.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 - 2007 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-	public abstract class BaseImageVisitor : IBinaryVisitor {
-
-		public virtual void VisitImage (Image img)
-		{
-		}
-
-		public virtual void VisitDOSHeader (DOSHeader header)
-		{
-		}
-
-		public virtual void VisitPEFileHeader (PEFileHeader header)
-		{
-		}
-
-		public virtual void VisitPEOptionalHeader (PEOptionalHeader header)
-		{
-		}
-
-		public virtual void VisitStandardFieldsHeader (PEOptionalHeader.StandardFieldsHeader header)
-		{
-		}
-
-		public virtual void VisitNTSpecificFieldsHeader (PEOptionalHeader.NTSpecificFieldsHeader header)
-		{
-		}
-
-		public virtual void VisitDataDirectoriesHeader (PEOptionalHeader.DataDirectoriesHeader header)
-		{
-		}
-
-		public virtual void VisitSectionCollection (SectionCollection coll)
-		{
-		}
-
-		public virtual void VisitSection (Section section)
-		{
-		}
-
-		public virtual void VisitImportAddressTable (ImportAddressTable iat)
-		{
-		}
-
-		public virtual void VisitDebugHeader (DebugHeader dh)
-		{
-		}
-
-		public virtual void VisitCLIHeader (CLIHeader header)
-		{
-		}
-
-		public virtual void VisitImportTable (ImportTable it)
-		{
-		}
-
-		public virtual void VisitImportLookupTable (ImportLookupTable ilt)
-		{
-		}
-
-		public virtual void VisitHintNameTable (HintNameTable hnt)
-		{
-		}
-
-		public virtual void VisitExportTable (ExportTable et)
-		{
-		}
-
-		public virtual void TerminateImage (Image img)
-		{
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/CLIHeader.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/CLIHeader.cs
deleted file mode 100644
index 200286d..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/CLIHeader.cs
+++ /dev/null
@@ -1,66 +0,0 @@
-//
-// CLIHeader.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-	public sealed class CLIHeader : IHeader, IBinaryVisitable {
-
-		public uint Cb;
-		public ushort MajorRuntimeVersion;
-		public ushort MinorRuntimeVersion;
-		public DataDirectory Metadata;
-		public RuntimeImage Flags;
-		public uint EntryPointToken;
-		public DataDirectory Resources;
-		public DataDirectory StrongNameSignature;
-		public DataDirectory CodeManagerTable;
-		public DataDirectory VTableFixups;
-		public DataDirectory ExportAddressTableJumps;
-		public DataDirectory ManagedNativeHeader;
-
-		public byte [] ImageHash;
-
-		internal CLIHeader ()
-		{
-		}
-
-		public void SetDefaultValues ()
-		{
-			Cb = 0x48;
-			Flags = RuntimeImage.ILOnly;
-			CodeManagerTable = DataDirectory.Zero;
-			ExportAddressTableJumps = DataDirectory.Zero;
-			ManagedNativeHeader = DataDirectory.Zero;
-		}
-
-		public void Accept (IBinaryVisitor visitor)
-		{
-			visitor.VisitCLIHeader (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/DOSHeader.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/DOSHeader.cs
deleted file mode 100644
index 8515433..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/DOSHeader.cs
+++ /dev/null
@@ -1,75 +0,0 @@
-//
-// DOSHeader.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-	public sealed class DOSHeader : IHeader, IBinaryVisitable {
-
-		public byte [] Start;
-		public byte [] End;
-
-		public uint Lfanew;
-
-		internal DOSHeader ()
-		{
-		}
-
-		public void SetDefaultValues ()
-		{
-			Start = new byte [60] {
-				0x4d, 0x5a, 0x90, 0x00, 0x03, 0x00, 0x00,
-				0x00, 0x04, 0x00, 0x00, 0x00, 0xff, 0xff,
-				0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x00,
-				0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
-				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-				0x00, 0x00, 0x00, 0x00
-			};
-			Lfanew = 128;
-			End = new byte [64] {
-				0x0e, 0x1f, 0xba, 0x0e, 0x00, 0xb4, 0x09,
-				0xcd, 0x21, 0xb8, 0x01, 0x4c, 0xcd, 0x21,
-				0x54, 0x68, 0x69, 0x73, 0x20, 0x70, 0x72,
-				0x6f, 0x67, 0x72, 0x61, 0x6d, 0x20, 0x63,
-				0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x20, 0x62,
-				0x65, 0x20, 0x72, 0x75, 0x6e, 0x20, 0x69,
-				0x6e, 0x20, 0x44, 0x4f, 0x53, 0x20, 0x6d,
-				0x6f, 0x64, 0x65, 0x2e, 0x0d, 0x0d, 0x0a,
-				0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-				0x00
-			};
-		}
-
-		public void Accept (IBinaryVisitor visitor)
-		{
-			visitor.VisitDOSHeader (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/DataDirectory.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/DataDirectory.cs
deleted file mode 100644
index 54cb2c1..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/DataDirectory.cs
+++ /dev/null
@@ -1,84 +0,0 @@
-//
-// DataDirectory.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-	public struct DataDirectory {
-
-		public static readonly DataDirectory Zero = new DataDirectory (RVA.Zero, 0);
-
-		RVA m_virtualAddress;
-		uint m_size;
-
-		public RVA VirtualAddress {
-			get { return m_virtualAddress; }
-			set { m_virtualAddress = value; }
-		}
-
-		public uint Size {
-			get { return m_size; }
-			set { m_size = value; }
-		}
-
-		public DataDirectory (RVA virtualAddress, uint size)
-		{
-			m_virtualAddress = virtualAddress;
-			m_size = size;
-		}
-
-		public override int GetHashCode ()
-		{
-			return (m_virtualAddress.GetHashCode () ^ (int) m_size << 1);
-		}
-
-		public override bool Equals (object other)
-		{
-			if (other is DataDirectory) {
-				DataDirectory odd = (DataDirectory) other;
-				return this.m_virtualAddress == odd.m_virtualAddress && this.m_size == odd.m_size;
-			}
-
-			return false;
-		}
-
-		public override string ToString ()
-		{
-			return string.Format ("{0} [{1}]", m_virtualAddress, m_size.ToString ("X"));
-		}
-
-		public static bool operator == (DataDirectory one, DataDirectory other)
-		{
-			return one.m_virtualAddress == other.m_virtualAddress && one.m_size == other.m_size;
-		}
-
-		public static bool operator != (DataDirectory one, DataDirectory other)
-		{
-			return one.m_virtualAddress != other.m_virtualAddress || one.m_size != other.m_size;
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/DebugHeader.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/DebugHeader.cs
deleted file mode 100644
index ae4d436..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/DebugHeader.cs
+++ /dev/null
@@ -1,73 +0,0 @@
-//
-// DebugHeader.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-	using System;
-
-	public sealed class DebugHeader : IHeader, IBinaryVisitable {
-
-		public uint Characteristics;
-		public uint TimeDateStamp;
-		public ushort MajorVersion;
-		public ushort MinorVersion;
-		public DebugStoreType Type;
-		public uint SizeOfData;
-		public RVA AddressOfRawData;
-		public uint PointerToRawData;
-
-		public uint Magic;
-		public Guid Signature;
-		public uint Age;
-		public string FileName;
-
-		internal DebugHeader ()
-		{
-		}
-
-		public void SetDefaultValues ()
-		{
-			Characteristics = 0;
-
-			this.Magic = 0x53445352;
-			this.Age = 0;
-			this.Type = DebugStoreType.CodeView;
-			this.FileName = string.Empty;
-		}
-
-		public uint GetSize ()
-		{
-			return 0x34 + (uint) FileName.Length + 1;
-		}
-
-		public void Accept (IBinaryVisitor visitor)
-		{
-			visitor.VisitDebugHeader (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/DebugStoreType.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/DebugStoreType.cs
deleted file mode 100644
index ad9ba97..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/DebugStoreType.cs
+++ /dev/null
@@ -1,45 +0,0 @@
-//
-// DebugStoreType.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-	public enum DebugStoreType : uint {
-		Unknown = 0x00000000,
-		COFF = 0x00000001,
-		CodeView = 0x00000002,
-		FPO = 0x00000003,
-		Misc = 0x00000004,
-		Exception = 0x00000005,
-		Fixup = 0x00000006,
-		OMAPToSrc = 0x00000007,
-		OMAPFromSrc = 0x00000008,
-		Borland = 0x00000009,
-		Reserved10 = 0x0000000a,
-		CLSID = 0x0000000b
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ExportTable.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ExportTable.cs
deleted file mode 100644
index 5032e55..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ExportTable.cs
+++ /dev/null
@@ -1,59 +0,0 @@
-//
-// ExportTable.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2007 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-	public sealed class ExportTable : IBinaryVisitable {
-
-		public uint Characteristics;
-		public uint TimeDateStamp;
-		public ushort MajorVersion;
-		public ushort MinorVersion;
-		public string Name;
-		public uint Base;
-		public uint NumberOfFunctions;
-		public uint NumberOfNames;
-		public RVA AddressOfFunctions;
-		public RVA AddressOfNames;
-		public RVA AddressOfNameOrdinals;
-
-		public RVA [] AddressesOfFunctions;
-		public RVA [] AddressesOfNames;
-		public ushort [] NameOrdinals;
-		public string [] Names;
-
-		internal ExportTable ()
-		{
-		}
-
-		public void Accept (IBinaryVisitor visitor)
-		{
-			visitor.VisitExportTable (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/IBinaryVisitable.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/IBinaryVisitable.cs
deleted file mode 100644
index 0d3729e..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/IBinaryVisitable.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-//
-// IBinaryVisitable.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-	public interface IBinaryVisitable {
-		void Accept (IBinaryVisitor visitor);
-	}
-}
-
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/IBinaryVisitor.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/IBinaryVisitor.cs
deleted file mode 100644
index 5b24836..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/IBinaryVisitor.cs
+++ /dev/null
@@ -1,51 +0,0 @@
-//
-// IBinaryVisitor.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 - 2007 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-	public interface IBinaryVisitor {
-		void VisitImage (Image img);
-		void VisitDOSHeader (DOSHeader header);
-		void VisitPEFileHeader (PEFileHeader header);
-		void VisitPEOptionalHeader (PEOptionalHeader header);
-		void VisitStandardFieldsHeader (PEOptionalHeader.StandardFieldsHeader header);
-		void VisitNTSpecificFieldsHeader (PEOptionalHeader.NTSpecificFieldsHeader header);
-		void VisitDataDirectoriesHeader (PEOptionalHeader.DataDirectoriesHeader header);
-		void VisitSectionCollection (SectionCollection coll);
-		void VisitSection (Section section);
-		void VisitImportAddressTable (ImportAddressTable iat);
-		void VisitDebugHeader (DebugHeader dh);
-		void VisitCLIHeader (CLIHeader header);
-		void VisitImportTable (ImportTable it);
-		void VisitImportLookupTable (ImportLookupTable ilt);
-		void VisitHintNameTable (HintNameTable hnt);
-		void VisitExportTable (ExportTable et);
-
-		void TerminateImage (Image img);
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/Image.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/Image.cs
deleted file mode 100644
index 5844b34..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/Image.cs
+++ /dev/null
@@ -1,243 +0,0 @@
-//
-// Image.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 - 2007 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-	using System;
-	using System.IO;
-
-	using Mono.Cecil.Metadata;
-
-	public sealed class Image : IBinaryVisitable {
-
-		DOSHeader m_dosHeader;
-		PEFileHeader m_peFileHeader;
-		PEOptionalHeader m_peOptionalHeader;
-
-		SectionCollection m_sections;
-		Section m_textSection;
-
-		ImportAddressTable m_importAddressTable;
-		CLIHeader m_cliHeader;
-		ImportTable m_importTable;
-		ImportLookupTable m_importLookupTable;
-		HintNameTable m_hintNameTable;
-		ExportTable m_exportTable;
-
-		DebugHeader m_debugHeader;
-		MetadataRoot m_mdRoot;
-
-		ResourceDirectoryTable m_rsrcRoot;
-
-		FileInfo m_img;
-
-		public DOSHeader DOSHeader {
-			get { return m_dosHeader; }
-		}
-
-		public PEFileHeader PEFileHeader {
-			get { return m_peFileHeader; }
-		}
-
-		public PEOptionalHeader PEOptionalHeader {
-			get { return m_peOptionalHeader; }
-		}
-
-		public SectionCollection Sections {
-			get { return m_sections; }
-		}
-
-		public Section TextSection {
-			get { return m_textSection; }
-			set { m_textSection = value; }
-		}
-
-		public ImportAddressTable ImportAddressTable {
-			get { return m_importAddressTable; }
-		}
-
-		public CLIHeader CLIHeader {
-			get { return m_cliHeader; }
-			set { m_cliHeader = value; }
-		}
-
-		public DebugHeader DebugHeader {
-			get { return m_debugHeader; }
-			set { m_debugHeader = value; }
-		}
-
-		public MetadataRoot MetadataRoot {
-			get { return m_mdRoot; }
-		}
-
-		public ImportTable ImportTable {
-			get { return m_importTable; }
-		}
-
-		public ImportLookupTable ImportLookupTable {
-			get { return m_importLookupTable; }
-		}
-
-		public HintNameTable HintNameTable {
-			get { return m_hintNameTable; }
-		}
-
-		public ExportTable ExportTable {
-			get { return m_exportTable; }
-			set { m_exportTable = value; }
-		}
-
-		internal ResourceDirectoryTable ResourceDirectoryRoot {
-			get { return m_rsrcRoot; }
-			set { m_rsrcRoot = value; }
-		}
-
-		public FileInfo FileInformation {
-			get { return m_img; }
-		}
-
-		internal Image ()
-		{
-			m_dosHeader = new DOSHeader ();
-			m_peFileHeader = new PEFileHeader ();
-			m_peOptionalHeader = new PEOptionalHeader ();
-			m_sections = new SectionCollection ();
-			m_importAddressTable = new ImportAddressTable ();
-			m_importTable = new ImportTable ();
-			m_importLookupTable = new ImportLookupTable ();
-			m_hintNameTable = new HintNameTable ();
-			m_mdRoot = new MetadataRoot (this);
-		}
-
-		internal Image (FileInfo img) : this ()
-		{
-			m_img = img;
-		}
-
-		public long ResolveVirtualAddress (RVA rva)
-		{
-			foreach (Section sect in this.Sections) {
-				if (rva >= sect.VirtualAddress &&
-					rva < sect.VirtualAddress + sect.SizeOfRawData)
-
-					return rva + sect.PointerToRawData - sect.VirtualAddress;
-			}
-
-			throw new ArgumentOutOfRangeException ("Cannot map the rva to any section");
-		}
-
-		internal Section GetSectionAtVirtualAddress (RVA rva)
-		{
-			foreach (Section sect in this.Sections) {
-				if (rva >= sect.VirtualAddress &&
-					rva < sect.VirtualAddress + sect.SizeOfRawData) {
-					return sect;
-				}
-			}
-			return null;
-		}
-
-		public BinaryReader GetReaderAtVirtualAddress (RVA rva)
-		{
-			Section sect = GetSectionAtVirtualAddress (rva);
-			if (sect == null)
-				return null;
-
-			BinaryReader br = new BinaryReader (new MemoryStream (sect.Data));
-			br.BaseStream.Position = rva - sect.VirtualAddress;
-			return br;
-		}
-
-		public void AddDebugHeader ()
-		{
-			m_debugHeader = new DebugHeader ();
-			m_debugHeader.SetDefaultValues ();
-		}
-
-		internal void SetFileInfo (FileInfo file)
-		{
-			m_img = file;
-		}
-
-		public void Accept (IBinaryVisitor visitor)
-		{
-			visitor.VisitImage (this);
-
-			m_dosHeader.Accept (visitor);
-			m_peFileHeader.Accept (visitor);
-			m_peOptionalHeader.Accept (visitor);
-
-			m_sections.Accept (visitor);
-
-			m_importAddressTable.Accept (visitor);
-
-			AcceptIfNotNull (m_cliHeader, visitor);
-			AcceptIfNotNull (m_debugHeader, visitor);
-
-			m_importTable.Accept (visitor);
-			m_importLookupTable.Accept (visitor);
-			m_hintNameTable.Accept (visitor);
-			AcceptIfNotNull (m_exportTable, visitor);
-
-			visitor.TerminateImage (this);
-		}
-
-		static void AcceptIfNotNull (IBinaryVisitable visitable, IBinaryVisitor visitor)
-		{
-			if (visitable == null)
-				return;
-
-			visitable.Accept (visitor);
-		}
-
-		public static Image CreateImage ()
-		{
-			Image img = new Image ();
-
-			ImageInitializer init = new ImageInitializer (img);
-			img.Accept (init);
-
-			return img;
-		}
-
-		public static Image GetImage (string file)
-		{
-			return ImageReader.Read (file).Image;
-		}
-
-		public static Image GetImage (byte [] image)
-		{
-			return ImageReader.Read (image).Image;
-		}
-
-		public static Image GetImage (Stream stream)
-		{
-			return ImageReader.Read (stream).Image;
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ImageCharacteristics.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ImageCharacteristics.cs
deleted file mode 100644
index 278b75d..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ImageCharacteristics.cs
+++ /dev/null
@@ -1,57 +0,0 @@
-//
-// ImageCharacteristics.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-	using System;
-
-	[Flags]
-	public enum ImageCharacteristics : ushort {
-		RelocsStripped = 0x0001,
-		ExecutableImage = 0x0002,
-		LineNumsStripped = 0x0004,
-		LocalSymsStripped = 0x0008,
-		AggressiveWSTrim = 0x0010,
-		LargeAddressAware = 0x0020,
-		ReservedForFutureUse = 0x0040,
-		BytesReversedLo = 0x0080,
-		_32BitsMachine = 0x0100,
-		DebugStripped = 0x0200,
-		RemovableRunFromSwap = 0x0400,
-		NetRunFromSwap = 0x0800,
-		System = 0x1000,
-		Dll = 0x2000,
-		UPSystemOnly = 0x4000,
-		BytesReversedHI = 0x8000,
-
-		__flags = 0x0002 | 0x0004 | 0x0008 | 0x0100,
-
-		CILOnlyDll = 0x2000 | (ushort) __flags,
-		CILOnlyExe = __flags
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ImageFormatException.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ImageFormatException.cs
deleted file mode 100644
index 1592233..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ImageFormatException.cs
+++ /dev/null
@@ -1,53 +0,0 @@
-//
-// ImageFormatException.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-	using System;
-
-	public class ImageFormatException : Exception {
-
-		internal ImageFormatException () : base()
-		{
-		}
-
-		internal ImageFormatException (string message) : base(message)
-		{
-		}
-
-		internal ImageFormatException (string message, params string[] parameters) :
-			base(string.Format(message, parameters))
-		{
-		}
-
-		internal ImageFormatException (string message, Exception inner) :
-			base(message, inner)
-		{
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/Imports.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/Imports.cs
deleted file mode 100644
index 021cb39..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/Imports.cs
+++ /dev/null
@@ -1,98 +0,0 @@
-//
-// Imports.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-	public sealed class ImportAddressTable : IBinaryVisitable {
-
-		public RVA HintNameTableRVA;
-
-		internal ImportAddressTable ()
-		{
-		}
-
-		public void Accept (IBinaryVisitor visitor)
-		{
-			visitor.VisitImportAddressTable (this);
-		}
-	}
-
-	public sealed class ImportTable : IBinaryVisitable {
-
-		public RVA ImportLookupTable;
-		public uint DateTimeStamp;
-		public uint ForwardChain;
-		public RVA Name;
-		public RVA ImportAddressTable;
-
-		internal ImportTable ()
-		{
-		}
-
-		public void Accept (IBinaryVisitor visitor)
-		{
-			visitor.VisitImportTable (this);
-		}
-	}
-
-	public sealed class ImportLookupTable : IBinaryVisitable {
-
-		public RVA HintNameRVA;
-
-		internal ImportLookupTable ()
-		{
-		}
-
-		public void Accept (IBinaryVisitor visitor)
-		{
-			visitor.VisitImportLookupTable (this);
-		}
-	}
-
-	public sealed class HintNameTable : IBinaryVisitable {
-
-		public const string RuntimeMainExe = "_CorExeMain";
-		public const string RuntimeMainDll = "_CorDllMain";
-		public const string RuntimeCorEE = "mscoree.dll";
-
-		public ushort Hint;
-		public string RuntimeMain;
-		public string RuntimeLibrary;
-		public ushort EntryPoint;
-		public RVA RVA;
-
-		internal HintNameTable ()
-		{
-		}
-
-		public void Accept (IBinaryVisitor visitor)
-		{
-			visitor.VisitHintNameTable (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/PEFileHeader.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/PEFileHeader.cs
deleted file mode 100644
index f38ee62..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/PEFileHeader.cs
+++ /dev/null
@@ -1,58 +0,0 @@
-//
-// PEFileHeader.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-	public sealed class PEFileHeader : IHeader, IBinaryVisitable {
-
-		public ushort Machine;
-		public ushort NumberOfSections;
-		public uint TimeDateStamp;
-		public uint PointerToSymbolTable;
-		public uint NumberOfSymbols;
-		public ushort OptionalHeaderSize;
-		public ImageCharacteristics Characteristics;
-
-		internal PEFileHeader ()
-		{
-		}
-
-		public void SetDefaultValues ()
-		{
-			Machine = 0x14c;
-			PointerToSymbolTable = 0;
-			NumberOfSymbols = 0;
-			OptionalHeaderSize = 0xe0;
-		}
-
-		public void Accept (IBinaryVisitor visitor)
-		{
-			visitor.VisitPEFileHeader (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/PEOptionalHeader.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/PEOptionalHeader.cs
deleted file mode 100644
index 0f27ff7..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/PEOptionalHeader.cs
+++ /dev/null
@@ -1,200 +0,0 @@
-//
-// PEOptionalHeader.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-	public sealed class PEOptionalHeader : IHeader, IBinaryVisitable {
-
-		public StandardFieldsHeader StandardFields;
-		public NTSpecificFieldsHeader NTSpecificFields;
-		public DataDirectoriesHeader DataDirectories;
-
-		internal PEOptionalHeader ()
-		{
-			StandardFields = new StandardFieldsHeader ();
-			NTSpecificFields = new NTSpecificFieldsHeader ();
-			DataDirectories = new DataDirectoriesHeader ();
-		}
-
-		public void SetDefaultValues ()
-		{
-		}
-
-		public void Accept (IBinaryVisitor visitor)
-		{
-			visitor.VisitPEOptionalHeader (this);
-
-			StandardFields.Accept (visitor);
-			NTSpecificFields.Accept (visitor);
-			DataDirectories.Accept (visitor);
-		}
-
-		public sealed class StandardFieldsHeader : IHeader, IBinaryVisitable {
-
-			public ushort Magic;
-			public byte LMajor;
-			public byte LMinor;
-			public uint CodeSize;
-			public uint InitializedDataSize;
-			public uint UninitializedDataSize;
-			public RVA EntryPointRVA;
-			public RVA BaseOfCode;
-			public RVA BaseOfData;
-
-			public bool IsPE64 {
-				get { return Magic == 0x20b; }
-				set {
-					if (value)
-						Magic = 0x20b;
-					else
-						Magic = 0x10b;
-				}
-			}
-
-			internal StandardFieldsHeader ()
-			{
-			}
-
-			public void SetDefaultValues ()
-			{
-				Magic = 0x10b;
-				LMajor = 6;
-				LMinor = 0;
-			}
-
-			public void Accept (IBinaryVisitor visitor)
-			{
-				visitor.VisitStandardFieldsHeader (this);
-			}
-		}
-
-		public sealed class NTSpecificFieldsHeader : IHeader, IBinaryVisitable {
-
-			public ulong ImageBase;
-			public uint SectionAlignment;
-			public uint FileAlignment;
-			public ushort OSMajor;
-			public ushort OSMinor;
-			public ushort UserMajor;
-			public ushort UserMinor;
-			public ushort SubSysMajor;
-			public ushort SubSysMinor;
-			public uint Reserved;
-			public uint ImageSize;
-			public uint HeaderSize;
-			public uint FileChecksum;
-			public SubSystem SubSystem;
-			public ushort DLLFlags;
-			public ulong StackReserveSize;
-			public ulong StackCommitSize;
-			public ulong HeapReserveSize;
-			public ulong HeapCommitSize;
-			public uint LoaderFlags;
-			public uint NumberOfDataDir;
-
-			internal NTSpecificFieldsHeader ()
-			{
-			}
-
-			public void SetDefaultValues ()
-			{
-				ImageBase = 0x400000;
-				SectionAlignment = 0x2000;
-				FileAlignment = 0x200;
-				OSMajor = 4;
-				OSMinor = 0;
-				UserMajor = 0;
-				UserMinor = 0;
-				SubSysMajor = 4;
-				SubSysMinor = 0;
-				Reserved = 0;
-				HeaderSize = 0x200;
-				FileChecksum = 0;
-				DLLFlags = 0;
-				StackReserveSize = 0x100000;
-				StackCommitSize = 0x1000;
-				HeapReserveSize = 0x100000;
-				HeapCommitSize = 0x1000;
-				LoaderFlags = 0;
-				NumberOfDataDir = 0x10;
-			}
-
-			public void Accept (IBinaryVisitor visitor)
-			{
-				visitor.VisitNTSpecificFieldsHeader (this);
-			}
-		}
-
-		public sealed class DataDirectoriesHeader : IHeader, IBinaryVisitable {
-
-			public DataDirectory ExportTable;
-			public DataDirectory ImportTable;
-			public DataDirectory ResourceTable;
-			public DataDirectory ExceptionTable;
-			public DataDirectory CertificateTable;
-			public DataDirectory BaseRelocationTable;
-			public DataDirectory Debug;
-			public DataDirectory Copyright;
-			public DataDirectory GlobalPtr;
-			public DataDirectory TLSTable;
-			public DataDirectory LoadConfigTable;
-			public DataDirectory BoundImport;
-			public DataDirectory IAT;
-			public DataDirectory DelayImportDescriptor;
-			public DataDirectory CLIHeader;
-			public DataDirectory Reserved;
-
-			internal DataDirectoriesHeader ()
-			{
-			}
-
-			public void SetDefaultValues ()
-			{
-				ExportTable = DataDirectory.Zero;
-				ResourceTable = DataDirectory.Zero;
-				ExceptionTable = DataDirectory.Zero;
-				CertificateTable = DataDirectory.Zero;
-				Debug = DataDirectory.Zero;
-				Copyright = DataDirectory.Zero;
-				GlobalPtr = DataDirectory.Zero;
-				TLSTable = DataDirectory.Zero;
-				LoadConfigTable = DataDirectory.Zero;
-				BoundImport = DataDirectory.Zero;
-				IAT = new DataDirectory (new RVA (0x2000), 8);
-				DelayImportDescriptor = DataDirectory.Zero;
-				CLIHeader = new DataDirectory (new RVA (0x2008), 0x48);
-				Reserved = DataDirectory.Zero;
-			}
-
-			public void Accept (IBinaryVisitor visitor)
-			{
-				visitor.VisitDataDirectoriesHeader (this);
-			}
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/RVA.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/RVA.cs
deleted file mode 100644
index 0c0370b..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/RVA.cs
+++ /dev/null
@@ -1,115 +0,0 @@
-//
-// RVA.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-	public struct RVA {
-
-		public static readonly RVA Zero = new RVA (0);
-
-		uint m_rva;
-
-		public uint Value {
-			get { return m_rva; }
-			set { m_rva = value; }
-		}
-
-		public RVA (uint rva)
-		{
-			m_rva = rva;
-		}
-
-		public override int GetHashCode ()
-		{
-			return (int) m_rva;
-		}
-
-		public override bool Equals (object other)
-		{
-			if (other is RVA)
-				return this.m_rva == ((RVA) other).m_rva;
-
-			return false;
-		}
-
-		public override string ToString ()
-		{
-			return string.Format ("0x{0}", m_rva.ToString ("X"));
-		}
-
-		public static bool operator == (RVA one, RVA other)
-		{
-			return one.m_rva == other.m_rva;
-		}
-
-		public static bool operator != (RVA one, RVA other)
-		{
-			return one.m_rva != other.m_rva;
-		}
-
-		public static bool operator < (RVA one, RVA other)
-		{
-			return one.m_rva < other.m_rva;
-		}
-
-		public static bool operator > (RVA one, RVA other)
-		{
-			return one.m_rva > other.m_rva;
-		}
-
-		public static bool operator <= (RVA one, RVA other)
-		{
-			return one.m_rva <= other.m_rva;
-		}
-
-		public static bool operator >= (RVA one, RVA other)
-		{
-			return one.m_rva >= other.m_rva;
-		}
-
-		public static RVA operator + (RVA rva, uint x)
-		{
-			return new RVA (rva.m_rva + x);
-		}
-
-		public static RVA operator - (RVA rva, uint x)
-		{
-			return new RVA (rva.m_rva - x);
-		}
-
-		public static implicit operator RVA (uint val)
-		{
-			return val == 0 ? Zero : new RVA (val);
-		}
-
-		public static implicit operator uint (RVA rva)
-		{
-			return rva.m_rva;
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ResourceDataEntry.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ResourceDataEntry.cs
deleted file mode 100644
index c2b3b3f..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ResourceDataEntry.cs
+++ /dev/null
@@ -1,48 +0,0 @@
-//
-// ResourceDataEntry.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2006 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-	public class ResourceDataEntry : ResourceNode {
-
-		public RVA Data;
-		public uint Size;
-		public uint Codepage;
-		public uint Reserved = 0;
-
-		public byte [] ResourceData;
-
-		public ResourceDataEntry (int offset) : base (offset)
-		{
-		}
-
-		public ResourceDataEntry ()
-		{
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ResourceDirectoryEntry.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ResourceDirectoryEntry.cs
deleted file mode 100644
index 5588b3c..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ResourceDirectoryEntry.cs
+++ /dev/null
@@ -1,66 +0,0 @@
-//
-// ResourceDirectoryEntry.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2006 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-	public class ResourceDirectoryEntry : ResourceNode {
-
-		private bool m_idByName;
-
-		public int ID;
-		public ResourceDirectoryString Name;
-
-		public bool IdentifiedByName {
-			get { return m_idByName; }
-		}
-
-		public ResourceNode Child;
-
-		public ResourceDirectoryEntry (ResourceDirectoryString name)
-		{
-			this.Name = name;
-			m_idByName = true;
-		}
-
-		public ResourceDirectoryEntry (ResourceDirectoryString name, int offset) : base (offset)
-		{
-			this.Name = name;
-			m_idByName = true;
-		}
-
-		public ResourceDirectoryEntry (int id)
-		{
-			this.ID = id;
-		}
-
-		public ResourceDirectoryEntry (int id, int offset) : base (offset)
-		{
-			this.ID = id;
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ResourceDirectoryString.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ResourceDirectoryString.cs
deleted file mode 100644
index 8c006e0..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ResourceDirectoryString.cs
+++ /dev/null
@@ -1,45 +0,0 @@
-//
-// ResourceDirectoryString.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2006 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-	public class ResourceDirectoryString : ResourceNode {
-
-		public string String;
-
-		public ResourceDirectoryString (string str)
-		{
-			this.String = str;
-		}
-
-		public ResourceDirectoryString (string str, int offset) : base (offset)
-		{
-			this.String = str;
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ResourceDirectoryTable.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ResourceDirectoryTable.cs
deleted file mode 100644
index 12517bf..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ResourceDirectoryTable.cs
+++ /dev/null
@@ -1,56 +0,0 @@
-//
-// ResourceDirectoryTable.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2006 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-	using System.Collections;
-
-	public class ResourceDirectoryTable : ResourceNode {
-
-		private ArrayList m_entries;
-
-		public uint Characteristics;
-		public uint TimeDateStamp;
-		public ushort MajorVersion;
-		public ushort MinorVersion;
-
-		public IList Entries {
-			get { return m_entries; }
-		}
-
-		public ResourceDirectoryTable (int offset) : base (offset)
-		{
-			m_entries = new ArrayList ();
-		}
-
-		public ResourceDirectoryTable ()
-		{
-			m_entries = new ArrayList ();
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ResourceNode.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ResourceNode.cs
deleted file mode 100644
index b51ebd5..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ResourceNode.cs
+++ /dev/null
@@ -1,44 +0,0 @@
-//
-// ResourceNode.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2006 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-	public abstract class ResourceNode {
-
-		public int Offset;
-
-		internal ResourceNode (int offset)
-		{
-			this.Offset = offset;
-		}
-
-		internal ResourceNode ()
-		{
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/RuntimeImage.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/RuntimeImage.cs
deleted file mode 100644
index 84afacf..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/RuntimeImage.cs
+++ /dev/null
@@ -1,40 +0,0 @@
-//
-// RuntimeImage.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Mono.Cecil.Binary {
-
-	[Flags]
-	public enum RuntimeImage : uint {
-		ILOnly = 0x0000001,
-		F32BitsRequired = 0x0000002,
-		StrongNameSigned = 0x0000008,
-		TrackDebugData = 0x00010000
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/Section.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/Section.cs
deleted file mode 100644
index a05714b..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/Section.cs
+++ /dev/null
@@ -1,66 +0,0 @@
-//
-// Section.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-	public sealed class Section : IHeader, IBinaryVisitable {
-
-		public const string Text = ".text";
-		public const string Resources = ".rsrc";
-		public const string Relocs = ".reloc";
-		public const string SData = ".sdata";
-
-		public uint VirtualSize;
-		public RVA VirtualAddress;
-		public uint SizeOfRawData;
-		public RVA PointerToRawData;
-		public RVA PointerToRelocations;
-		public RVA PointerToLineNumbers;
-		public ushort NumberOfRelocations;
-		public ushort NumberOfLineNumbers;
-		public SectionCharacteristics Characteristics;
-
-		public string Name;
-		public byte [] Data;
-
-		internal Section ()
-		{
-		}
-
-		public void SetDefaultValues ()
-		{
-			PointerToLineNumbers = RVA.Zero;
-			NumberOfLineNumbers = 0;
-		}
-
-		public void Accept (IBinaryVisitor visitor)
-		{
-			visitor.VisitSection (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/SectionCharacteristics.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/SectionCharacteristics.cs
deleted file mode 100644
index 66d97ed..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/SectionCharacteristics.cs
+++ /dev/null
@@ -1,70 +0,0 @@
-//
-// SectionCharacteristics.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-	using System;
-
-	[Flags]
-	public enum SectionCharacteristics : uint {
-		TypeNoPad = 0x0000008,
-		ContainsCode = 0x00000020,
-		ContainsInitializedData = 0x00000040,
-		ContainsUninitializedData = 0x00000080,
-		LnkOther = 0x0000100,
-		LnkInfo = 0x000200,
-		LnkRemove = 0x0000800,
-		LnkCOMDAT = 0x00001000,
-		GPRel = 0x00008000,
-		MemPurgeable = 0x00020000,
-		MemLocked = 0x00040000,
-		MemPreload = 0x00080000,
-		Align1Bytes = 0x00100000,
-		Align2Bytes = 0x00200000,
-		Align4Bytes = 0x00300000,
-		Align8Bytes = 0x00400000,
-		Align16Bytes = 0x00500000,
-		Align32Bytes = 0x00600000,
-		Align64Bytes = 0x00700000,
-		Align128Bytes = 0x00800000,
-		Align256Bytes = 0x00900000,
-		Align512Bytes = 0x00a00000,
-		Align1024Bytes = 0x00b00000,
-		Align2048Bytes = 0x00c00000,
-		Align4096Bytes = 0x00d00000,
-		Align8192Bytes = 0x00e00000,
-		LnkNRelocOvfl = 0x01000000,
-		MemDiscardable = 0x02000000,
-		MemNotCached = 0x04000000,
-		MemNotPaged = 0x08000000,
-		MemShared = 0x10000000,
-		MemExecute = 0x20000000,
-		MemoryRead = 0x40000000,
-		MemoryWrite = 0x80000000
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/SectionCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/SectionCollection.cs
deleted file mode 100644
index 2d90eee..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/SectionCollection.cs
+++ /dev/null
@@ -1,114 +0,0 @@
-//
-// SectionCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-	using System;
-	using System.Collections;
-
-	public sealed class SectionCollection : ICollection, IBinaryVisitable {
-
-		IList m_items;
-
-		public Section this [int index]
-		{
-			get { return m_items [index] as Section; }
-			set { m_items [index] = value; }
-		}
-
-		public int Count {
-			get { return m_items.Count; }
-		}
-
-		public bool IsSynchronized {
-			get { return false; }
-		}
-
-		public object SyncRoot {
-			get { return this; }
-		}
-
-		internal SectionCollection ()
-		{
-			m_items = new ArrayList (4);
-		}
-
-		internal void Add (Section value)
-		{
-			m_items.Add (value);
-		}
-
-		internal void Clear ()
-		{
-			m_items.Clear ();
-		}
-
-		public bool Contains (Section value)
-		{
-			return m_items.Contains (value);
-		}
-
-		public int IndexOf (Section value)
-		{
-			return m_items.IndexOf (value);
-		}
-
-		internal void Insert (int index, Section value)
-		{
-			m_items.Insert (index, value);
-		}
-
-		internal void Remove (Section value)
-		{
-			m_items.Remove (value);
-		}
-
-		internal void RemoveAt (int index)
-		{
-			m_items.Remove (index);
-		}
-
-		public void CopyTo (Array ary, int index)
-		{
-			m_items.CopyTo (ary, index);
-		}
-
-		public IEnumerator GetEnumerator ()
-		{
-			return m_items.GetEnumerator ();
-		}
-
-		public void Accept (IBinaryVisitor visitor)
-		{
-			visitor.VisitSectionCollection (this);
-
-			for (int i = 0; i < m_items.Count; i++)
-				this [i].Accept (visitor);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/SubSystem.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Binary/SubSystem.cs
deleted file mode 100644
index 2cab910..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/SubSystem.cs
+++ /dev/null
@@ -1,45 +0,0 @@
-//
-// SubSystem.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Binary {
-
-	public enum SubSystem : ushort {
-		Unknown = 0x0,
-		Native = 0x1,
-		WindowsGui = 0x2,
-		WindowsCui = 0x3,
-		PosixCui = 0x7,
-		WindowsCeGui = 0x9,
-		EfiApplication = 0x10,
-		EfiBootServiceDriver = 0x11,
-		EfiRuntimeDriver = 0x12,
-		EfiRom = 0x13,
-		Xbox = 0x14,
-		NexusAgent = 0x15
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/BaseCodeVisitor.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/BaseCodeVisitor.cs
deleted file mode 100644
index d6e5051..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/BaseCodeVisitor.cs
+++ /dev/null
@@ -1,73 +0,0 @@
-//
-// BaseCodeVisitor.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Cil {
-
-	public abstract class BaseCodeVisitor : ICodeVisitor {
-
-		public virtual void VisitMethodBody (MethodBody body)
-		{
-		}
-
-		public virtual void VisitInstructionCollection (InstructionCollection instructions)
-		{
-		}
-
-		public virtual void VisitInstruction (Instruction instr)
-		{
-		}
-
-		public virtual void VisitExceptionHandlerCollection (ExceptionHandlerCollection seh)
-		{
-		}
-
-		public virtual void VisitExceptionHandler (ExceptionHandler eh)
-		{
-		}
-
-		public virtual void VisitVariableDefinitionCollection (VariableDefinitionCollection variables)
-		{
-		}
-
-		public virtual void VisitVariableDefinition (VariableDefinition var)
-		{
-		}
-
-		public virtual void VisitScopeCollection (ScopeCollection scopes)
-		{
-		}
-
-		public virtual void VisitScope (Scope s)
-		{
-		}
-
-		public virtual void TerminateMethodBody (MethodBody body)
-		{
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/CilWorker.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/CilWorker.cs
deleted file mode 100644
index 7f70e24..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/CilWorker.cs
+++ /dev/null
@@ -1,402 +0,0 @@
-//
-// CilWorker.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Cil {
-
-	using System;
-	using SR = System.Reflection;
-
-	public sealed class CilWorker {
-
-		MethodBody m_mbody;
-		InstructionCollection m_instrs;
-
-		internal CilWorker (MethodBody body)
-		{
-			m_mbody = body;
-			m_instrs = m_mbody.Instructions;
-		}
-
-		public MethodBody GetBody ()
-		{
-			return m_mbody;
-		}
-
-		public Instruction Create (OpCode opcode)
-		{
-			if (opcode.OperandType != OperandType.InlineNone)
-				throw new ArgumentException ("opcode");
-
-			return FinalCreate (opcode);
-		}
-
-		public Instruction Create (OpCode opcode, TypeReference type)
-		{
-			if (type == null)
-				throw new ArgumentNullException ("type");
-			if (opcode.OperandType != OperandType.InlineType &&
-				opcode.OperandType != OperandType.InlineTok)
-				throw new ArgumentException ("opcode");
-
-			return FinalCreate (opcode, type);
-		}
-
-		public Instruction Create (OpCode opcode, CallSite site)
-		{
-			if (site == null)
-				throw new ArgumentNullException ("site");
-			if (opcode.Code != Code.Calli)
-				throw new ArgumentException ("code");
-
-			return FinalCreate (opcode, site);
-		}
-
-		public Instruction Create (OpCode opcode, MethodReference method)
-		{
-			if (method == null)
-				throw new ArgumentNullException ("method");
-			if (opcode.OperandType != OperandType.InlineMethod &&
-				opcode.OperandType != OperandType.InlineTok)
-				throw new ArgumentException ("opcode");
-
-			return FinalCreate (opcode, method);
-		}
-
-		public Instruction Create (OpCode opcode, FieldReference field)
-		{
-			if (field == null)
-				throw new ArgumentNullException ("field");
-			if (opcode.OperandType != OperandType.InlineField &&
-				opcode.OperandType != OperandType.InlineTok)
-				throw new ArgumentException ("opcode");
-
-			return FinalCreate (opcode, field);
-		}
-
-		public Instruction Create (OpCode opcode, string str)
-		{
-			if (str == null)
-				throw new ArgumentNullException ("str");
-			if (opcode.OperandType != OperandType.InlineString)
-				throw new ArgumentException ("opcode");
-
-			return FinalCreate (opcode, str);
-		}
-
-		public Instruction Create (OpCode opcode, sbyte b)
-		{
-			if (opcode.OperandType != OperandType.ShortInlineI &&
-				opcode != OpCodes.Ldc_I4_S)
-				throw new ArgumentException ("opcode");
-
-			return FinalCreate (opcode, b);
-		}
-
-		public Instruction Create (OpCode opcode, byte b)
-		{
-			if (opcode.OperandType == OperandType.ShortInlineVar)
-				return Create (opcode, m_mbody.Variables [b]);
-
-			if (opcode.OperandType == OperandType.ShortInlineParam)
-				return Create (opcode, CodeReader.GetParameter (m_mbody, b));
-
-			if (opcode.OperandType != OperandType.ShortInlineI ||
-				opcode == OpCodes.Ldc_I4_S)
-				throw new ArgumentException ("opcode");
-
-			return FinalCreate (opcode, b);
-		}
-
-		public Instruction Create (OpCode opcode, int i)
-		{
-			if (opcode.OperandType == OperandType.InlineVar)
-				return Create (opcode, m_mbody.Variables [i]);
-
-			if (opcode.OperandType == OperandType.InlineParam)
-				return Create (opcode, CodeReader.GetParameter (m_mbody, i));
-
-			if (opcode.OperandType != OperandType.InlineI)
-				throw new ArgumentException ("opcode");
-
-			return FinalCreate (opcode, i);
-		}
-
-		public Instruction Create (OpCode opcode, long l)
-		{
-			if (opcode.OperandType != OperandType.InlineI8)
-				throw new ArgumentException ("opcode");
-
-			return FinalCreate (opcode, l);
-		}
-
-		public Instruction Create (OpCode opcode, float f)
-		{
-			if (opcode.OperandType != OperandType.ShortInlineR)
-				throw new ArgumentException ("opcode");
-
-			return FinalCreate (opcode, f);
-		}
-
-		public Instruction Create (OpCode opcode, double d)
-		{
-			if (opcode.OperandType != OperandType.InlineR)
-				throw new ArgumentException ("opcode");
-
-			return FinalCreate (opcode, d);
-		}
-
-		public Instruction Create (OpCode opcode, Instruction label)
-		{
-			if (label == null)
-				throw new ArgumentNullException ("label");
-			if (opcode.OperandType != OperandType.InlineBrTarget &&
-				opcode.OperandType != OperandType.ShortInlineBrTarget)
-				throw new ArgumentException ("opcode");
-
-			return FinalCreate (opcode, label);
-		}
-
-		public Instruction Create (OpCode opcode, Instruction [] labels)
-		{
-			if (labels == null)
-				throw new ArgumentNullException ("labels");
-			if (opcode.OperandType != OperandType.InlineSwitch)
-				throw new ArgumentException ("opcode");
-
-			return FinalCreate (opcode, labels);
-		}
-
-		public Instruction Create (OpCode opcode, VariableDefinition var)
-		{
-			if (var == null)
-				throw new ArgumentNullException ("var");
-			if (opcode.OperandType != OperandType.ShortInlineVar &&
-				opcode.OperandType != OperandType.InlineVar)
-				throw new ArgumentException ("opcode");
-
-			return FinalCreate (opcode, var);
-		}
-
-		public Instruction Create (OpCode opcode, ParameterDefinition param)
-		{
-			if (param == null)
-				throw new ArgumentNullException ("param");
-			if (opcode.OperandType != OperandType.ShortInlineParam &&
-				opcode.OperandType != OperandType.InlineParam)
-				throw new ArgumentException ("opcode");
-
-			return FinalCreate (opcode, param);
-		}
-
-		static Instruction FinalCreate (OpCode opcode)
-		{
-			return FinalCreate (opcode, null);
-		}
-
-		static Instruction FinalCreate (OpCode opcode, object operand)
-		{
-			return new Instruction (opcode, operand);
-		}
-
-		public Instruction Emit (OpCode opcode)
-		{
-			Instruction instr = Create (opcode);
-			Append (instr);
-			return instr;
-		}
-
-		public Instruction Emit (OpCode opcode, TypeReference type)
-		{
-			Instruction instr = Create (opcode, type);
-			Append (instr);
-			return instr;
-		}
-
-		public Instruction Emit (OpCode opcode, MethodReference meth)
-		{
-			Instruction instr = Create (opcode, meth);
-			Append (instr);
-			return instr;
-		}
-
-		public Instruction Emit (OpCode opcode, CallSite site)
-		{
-			Instruction instr = Create (opcode, site);
-			Append (instr);
-			return instr;
-		}
-
-		public Instruction Emit (OpCode opcode, FieldReference field)
-		{
-			Instruction instr = Create (opcode, field);
-			Append (instr);
-			return instr;
-		}
-
-		public Instruction Emit (OpCode opcode, string str)
-		{
-			Instruction instr = Create (opcode, str);
-			Append (instr);
-			return instr;
-		}
-
-		public Instruction Emit (OpCode opcode, byte b)
-		{
-			Instruction instr = Create (opcode, b);
-			Append (instr);
-			return instr;
-		}
-
-		public Instruction Emit (OpCode opcode, sbyte b)
-		{
-			Instruction instr = Create (opcode, b);
-			Append (instr);
-			return instr;
-		}
-
-		public Instruction Emit (OpCode opcode, int i)
-		{
-			Instruction instr = Create (opcode, i);
-			Append (instr);
-			return instr;
-		}
-
-		public Instruction Emit (OpCode opcode, long l)
-		{
-			Instruction instr = Create (opcode, l);
-			Append (instr);
-			return instr;
-		}
-
-		public Instruction Emit (OpCode opcode, float f)
-		{
-			Instruction instr = Create (opcode, f);
-			Append (instr);
-			return instr;
-		}
-
-		public Instruction Emit (OpCode opcode, double d)
-		{
-			Instruction instr = Create (opcode, d);
-			Append (instr);
-			return instr;
-		}
-
-		public Instruction Emit (OpCode opcode, Instruction target)
-		{
-			Instruction instr = Create (opcode, target);
-			Append (instr);
-			return instr;
-		}
-
-		public Instruction Emit (OpCode opcode, Instruction [] targets)
-		{
-			Instruction instr = Create (opcode, targets);
-			Append (instr);
-			return instr;
-		}
-
-		public Instruction Emit (OpCode opcode, VariableDefinition var)
-		{
-			Instruction instr = Create (opcode, var);
-			Append (instr);
-			return instr;
-		}
-
-		public Instruction Emit (OpCode opcode, ParameterDefinition param)
-		{
-			Instruction instr = Create (opcode, param);
-			Append (instr);
-			return instr;
-		}
-
-		public void InsertBefore (Instruction target, Instruction instr)
-		{
-			int index = m_instrs.IndexOf (target);
-			if (index == -1)
-				throw new ArgumentOutOfRangeException ("Target instruction not in method body");
-
-			m_instrs.Insert (index, instr);
-			instr.Previous = target.Previous;
-			if (target.Previous != null)
-				target.Previous.Next = instr;
-			target.Previous = instr;
-			instr.Next = target;
-		}
-
-		public void InsertAfter (Instruction target, Instruction instr)
-		{
-			int index = m_instrs.IndexOf (target);
-			if (index == -1)
-				throw new ArgumentOutOfRangeException ("Target instruction not in method body");
-
-			m_instrs.Insert (index + 1, instr);
-			instr.Next = target.Next;
-			if (target.Next != null)
-				target.Next.Previous = instr;
-			target.Next = instr;
-			instr.Previous = target;
-		}
-
-		public void Append (Instruction instr)
-		{
-			Instruction last = null, current = instr;
-			if (m_instrs.Count > 0)
-				last = m_instrs [m_instrs.Count - 1];
-
-			if (last != null) {
-				last.Next = instr;
-				current.Previous = last;
-			}
-
-			m_instrs.Add (current);
-		}
-
-		public void Replace (Instruction old, Instruction instr)
-		{
-			int index = m_instrs.IndexOf (old);
-			if (index == -1)
-				throw new ArgumentOutOfRangeException ("Target instruction not in method body");
-
-			InsertAfter (old, instr);
-			Remove (old);
-		}
-
-		public void Remove (Instruction instr)
-		{
-			if (!m_instrs.Contains (instr))
-				throw new ArgumentException ("Instruction not in method body");
-
-			if (instr.Previous != null)
-				instr.Previous.Next = instr.Next;
-			if (instr.Next != null)
-				instr.Next.Previous = instr.Previous;
-			m_instrs.Remove (instr);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/Code.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/Code.cs
index af70ab5..bd18b84 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/Code.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/Code.cs
@@ -4,10 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Fri Mar 16 15:37:23 +0100 2007
-//
-// (C) 2007 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/CodeReader.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/CodeReader.cs
index 9fe965f..4cfc7db 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/CodeReader.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/CodeReader.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 - 2007 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,332 +26,579 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System;
+
+using Mono.Cecil.PE;
+using Mono.Collections.Generic;
+
+using RVA = System.UInt32;
+
 namespace Mono.Cecil.Cil {
 
-	using System;
-	using System.Collections;
-	using System.IO;
+	sealed class CodeReader : ByteBuffer {
+
+		readonly internal MetadataReader reader;
+
+		int start;
+		Section code_section;
 
-	using Mono.Cecil;
-	using Mono.Cecil.Metadata;
-	using Mono.Cecil.Signatures;
+		MethodDefinition method;
+		MethodBody body;
+
+		int Offset {
+			get { return base.position - start; }
+		}
+
+		CodeReader (Section section, MetadataReader reader)
+			: base (section.Data)
+		{
+			this.code_section = section;
+			this.reader = reader;
+		}
+
+		public static CodeReader CreateCodeReader (MetadataReader metadata)
+		{
+			return new CodeReader (metadata.image.MetadataSection, metadata);
+		}
+
+		public MethodBody ReadMethodBody (MethodDefinition method)
+		{
+			this.method = method;
+			this.body = new MethodBody (method);
+
+			reader.context = method;
+
+			ReadMethodBody ();
+
+			return this.body;
+		}
 
-	sealed class CodeReader : BaseCodeVisitor {
+		public void MoveTo (int rva)
+		{
+			if (!IsInSection (rva)) {
+				code_section = reader.image.GetSectionAtVirtualAddress ((uint) rva);
+				Reset (code_section.Data);
+			}
 
-		ReflectionReader m_reflectReader;
-		MetadataRoot m_root;
-		IDictionary m_instructions;
+			base.position = rva - (int) code_section.VirtualAddress;
+		}
 
-		public CodeReader (ReflectionReader reflectReader)
+		bool IsInSection (int rva)
 		{
-			m_reflectReader = reflectReader;
-			m_root = m_reflectReader.MetadataRoot;
-			m_instructions = new Hashtable ();
+			return code_section.VirtualAddress <= rva && rva < code_section.VirtualAddress + code_section.SizeOfRawData;
 		}
 
-		public override void VisitMethodBody (MethodBody body)
+		void ReadMethodBody ()
 		{
-			MethodDefinition meth = body.Method;
-			MethodBody methBody = body;
-			BinaryReader br = m_reflectReader.Module.ImageReader.MetadataReader.GetDataReader (meth.RVA);
+			MoveTo (method.RVA);
 
-			// lets read the method
-			int flags = br.ReadByte ();
+			var flags = ReadByte ();
 			switch (flags & 0x3) {
-			case (int) MethodHeader.TinyFormat :
-				methBody.CodeSize = flags >> 2;
-				methBody.MaxStack = 8;
-				ReadCilBody (methBody, br);
+			case 0x2: // tiny
+				body.code_size = flags >> 2;
+				body.MaxStackSize = 8;
+				ReadCode ();
 				break;
-			case (int) MethodHeader.FatFormat :
-				br.BaseStream.Position--;
-				int fatflags = br.ReadUInt16 ();
-				//int headersize = (fatflags >> 12) & 0xf;
-				methBody.MaxStack = br.ReadUInt16 ();
-				methBody.CodeSize = br.ReadInt32 ();
-				methBody.LocalVarToken = br.ReadInt32 ();
-				body.InitLocals = (fatflags & (int) MethodHeader.InitLocals) != 0;
-				if (methBody.LocalVarToken != 0)
-					VisitVariableDefinitionCollection (methBody.Variables);
-				ReadCilBody (methBody, br);
-				if ((fatflags & (int) MethodHeader.MoreSects) != 0)
-					ReadSection (methBody, br);
+			case 0x3: // fat
+				base.position--;
+				ReadFatMethod ();
 				break;
+			default:
+				throw new InvalidOperationException ();
+			}
+
+			var symbol_reader = reader.module.SymbolReader;
+
+			if (symbol_reader != null) {
+				var instructions = body.Instructions;
+				symbol_reader.Read (body, offset => GetInstruction (instructions, offset));
 			}
 		}
 
-		public static uint GetRid (int token)
+		void ReadFatMethod ()
 		{
-			return (uint) token & 0x00ffffff;
+			var flags = ReadUInt16 ();
+			body.max_stack_size = ReadUInt16 ();
+			body.code_size = (int) ReadUInt32 ();
+			body.local_var_token = new MetadataToken (ReadUInt32 ());
+			body.init_locals = (flags & 0x10) != 0;
+
+			if (body.local_var_token.RID != 0)
+				body.variables = ReadVariables (body.local_var_token);
+
+			ReadCode ();
+
+			if ((flags & 0x8) != 0)
+				ReadSection ();
 		}
 
-		public static ParameterDefinition GetParameter (MethodBody body, int index)
+		public VariableDefinitionCollection ReadVariables (MetadataToken local_var_token)
 		{
-			if (body.Method.HasThis) {
-				if (index == 0)
-					return body.Method.This;
-				index--;
-			}
+			var position = reader.position;
+			var variables = reader.ReadVariables (local_var_token);
+			reader.position = position;
 
-			return body.Method.Parameters [index];
+			return variables;
 		}
 
-		public static VariableDefinition GetVariable (MethodBody body, int index)
+		void ReadCode ()
 		{
-			return body.Variables [index];
+			start = position;
+			var code_size = body.code_size;
+
+			if (code_size < 0 || buffer.Length <= (uint) (code_size + position))
+				code_size = 0;
+
+			var end = start + code_size;
+			var instructions = body.instructions = new InstructionCollection (code_size / 3);
+
+			while (position < end) {
+				var offset = base.position - start;
+				var opcode = ReadOpCode ();
+				var current = new Instruction (offset, opcode);
+
+				if (opcode.OperandType != OperandType.InlineNone)
+					current.operand = ReadOperand (current);
+
+				instructions.Add (current);
+			}
+
+			ResolveBranches (instructions);
 		}
 
-		void ReadCilBody (MethodBody body, BinaryReader br)
+		OpCode ReadOpCode ()
 		{
-			long start = br.BaseStream.Position;
-			Instruction last = null;
-			m_instructions.Clear();
-			InstructionCollection code = body.Instructions;
-			GenericContext context = new GenericContext (body.Method);
+			var il_opcode = ReadByte ();
+			return il_opcode != 0xfe
+				? OpCodes.OneByteOpCode [il_opcode]
+				: OpCodes.TwoBytesOpCode [ReadByte ()];
+		}
 
-			while (br.BaseStream.Position < start + body.CodeSize) {
-				OpCode op;
-				long offset = br.BaseStream.Position - start;
-				int cursor = br.ReadByte ();
-				if (cursor == 0xfe)
-					op = OpCodes.TwoBytesOpCode [br.ReadByte ()];
-				else
-					op = OpCodes.OneByteOpCode [cursor];
+		object ReadOperand (Instruction instruction)
+		{
+			switch (instruction.opcode.OperandType) {
+			case OperandType.InlineSwitch:
+				var length = ReadInt32 ();
+				var base_offset = Offset + (4 * length);
+				var branches = new int [length];
+				for (int i = 0; i < length; i++)
+					branches [i] = base_offset + ReadInt32 ();
+				return branches;
+			case OperandType.ShortInlineBrTarget:
+				return ReadSByte () + Offset;
+			case OperandType.InlineBrTarget:
+				return ReadInt32 () + Offset;
+			case OperandType.ShortInlineI:
+				if (instruction.opcode == OpCodes.Ldc_I4_S)
+					return ReadSByte ();
+
+				return ReadByte ();
+			case OperandType.InlineI:
+				return ReadInt32 ();
+			case OperandType.ShortInlineR:
+				return ReadSingle ();
+			case OperandType.InlineR:
+				return ReadDouble ();
+			case OperandType.InlineI8:
+				return ReadInt64 ();
+			case OperandType.ShortInlineVar:
+				return GetVariable (ReadByte ());
+			case OperandType.InlineVar:
+				return GetVariable (ReadUInt16 ());
+			case OperandType.ShortInlineArg:
+				return GetParameter (ReadByte ());
+			case OperandType.InlineArg:
+				return GetParameter (ReadUInt16 ());
+			case OperandType.InlineSig:
+				return GetCallSite (ReadToken ());
+			case OperandType.InlineString:
+				return GetString (ReadToken ());
+			case OperandType.InlineTok:
+			case OperandType.InlineType:
+			case OperandType.InlineMethod:
+			case OperandType.InlineField:
+				return reader.LookupToken (ReadToken ());
+			default:
+				throw new NotSupportedException ();
+			}
+		}
 
-				Instruction instr = new Instruction ((int) offset, op);
-				switch (op.OperandType) {
-				case OperandType.InlineNone :
-					break;
-				case OperandType.InlineSwitch :
-					uint length = br.ReadUInt32 ();
-					int [] branches = new int [length];
-					int [] buf = new int [length];
-					for (int i = 0; i < length; i++)
-						buf [i] = br.ReadInt32 ();
-					for (int i = 0; i < length; i++)
-						branches [i] = Convert.ToInt32 (br.BaseStream.Position - start + buf [i]);
-					instr.Operand = branches;
-					break;
-				case OperandType.ShortInlineBrTarget :
-					sbyte sbrtgt = br.ReadSByte ();
-					instr.Operand = Convert.ToInt32 (br.BaseStream.Position - start + sbrtgt);
-					break;
-				case OperandType.InlineBrTarget :
-					int brtgt = br.ReadInt32 ();
-					instr.Operand = Convert.ToInt32 (br.BaseStream.Position - start + brtgt);
-					break;
-				case OperandType.ShortInlineI :
-					if (op == OpCodes.Ldc_I4_S)
-						instr.Operand = br.ReadSByte ();
-					else
-						instr.Operand = br.ReadByte ();
-					break;
-				case OperandType.ShortInlineVar :
-					instr.Operand = GetVariable (body, br.ReadByte ());
-					break;
-				case OperandType.ShortInlineParam :
-					instr.Operand = GetParameter (body, br.ReadByte ());
-					break;
-				case OperandType.InlineSig :
-					instr.Operand = GetCallSiteAt (br.ReadInt32 (), context);
-					break;
-				case OperandType.InlineI :
-					instr.Operand = br.ReadInt32 ();
-					break;
-				case OperandType.InlineVar :
-					instr.Operand = GetVariable (body, br.ReadInt16 ());
-					break;
-				case OperandType.InlineParam :
-					instr.Operand = GetParameter (body, br.ReadInt16 ());
-					break;
-				case OperandType.InlineI8 :
-					instr.Operand = br.ReadInt64 ();
-					break;
-				case OperandType.ShortInlineR :
-					instr.Operand = br.ReadSingle ();
-					break;
-				case OperandType.InlineR :
-					instr.Operand = br.ReadDouble ();
-					break;
-				case OperandType.InlineString :
-					instr.Operand = m_root.Streams.UserStringsHeap [GetRid (br.ReadInt32 ())];
-					break;
-				case OperandType.InlineField :
-				case OperandType.InlineMethod :
-				case OperandType.InlineType :
-				case OperandType.InlineTok :
-					MetadataToken token = new MetadataToken (br.ReadInt32 ());
-					switch (token.TokenType) {
-					case TokenType.TypeDef:
-						instr.Operand = m_reflectReader.GetTypeDefAt (token.RID);
-						break;
-					case TokenType.TypeRef:
-						instr.Operand = m_reflectReader.GetTypeRefAt (token.RID);
-						break;
-					case TokenType.TypeSpec:
-						instr.Operand = m_reflectReader.GetTypeSpecAt (token.RID, context);
-						break;
-					case TokenType.Field:
-						instr.Operand = m_reflectReader.GetFieldDefAt (token.RID);
-						break;
-					case TokenType.Method:
-						instr.Operand = m_reflectReader.GetMethodDefAt (token.RID);
-						break;
-					case TokenType.MethodSpec:
-						instr.Operand = m_reflectReader.GetMethodSpecAt (token.RID, context);
-						break;
-					case TokenType.MemberRef:
-						instr.Operand = m_reflectReader.GetMemberRefAt (token.RID, context);
-						break;
-					default:
-						throw new ReflectionException ("Wrong token: " + token);
-					}
-					break;
-				}
+		public string GetString (MetadataToken token)
+		{
+			return reader.image.UserStringHeap.Read (token.RID);
+		}
 
-				m_instructions.Add (instr.Offset, instr);
+		public ParameterDefinition GetParameter (int index)
+		{
+			return body.GetParameter (index);
+		}
 
-				if (last != null) {
-					last.Next = instr;
-					instr.Previous = last;
-				}
+		public VariableDefinition GetVariable (int index)
+		{
+			return body.GetVariable (index);
+		}
 
-				last = instr;
+		public CallSite GetCallSite (MetadataToken token)
+		{
+			return reader.ReadCallSite (token);
+		}
 
-				code.Add (instr);
-			}
+		void ResolveBranches (Collection<Instruction> instructions)
+		{
+			var items = instructions.items;
+			var size = instructions.size;
 
-			// resolve branches
-			foreach (Instruction i in code) {
-				switch (i.OpCode.OperandType) {
+			for (int i = 0; i < size; i++) {
+				var instruction = items [i];
+				switch (instruction.opcode.OperandType) {
 				case OperandType.ShortInlineBrTarget:
 				case OperandType.InlineBrTarget:
-					i.Operand = GetInstruction (body, (int) i.Operand);
+					instruction.operand = GetInstruction ((int) instruction.operand);
 					break;
 				case OperandType.InlineSwitch:
-					int [] lbls = (int []) i.Operand;
-					Instruction [] instrs = new Instruction [lbls.Length];
-					for (int j = 0; j < lbls.Length; j++)
-						instrs [j] = GetInstruction (body, lbls [j]);
-					i.Operand = instrs;
+					var offsets = (int []) instruction.operand;
+					var branches = new Instruction [offsets.Length];
+					for (int j = 0; j < offsets.Length; j++)
+						branches [j] = GetInstruction (offsets [j]);
+
+					instruction.operand = branches;
 					break;
 				}
 			}
+		}
 
-			if (m_reflectReader.SymbolReader != null)
-				m_reflectReader.SymbolReader.Read (body, m_instructions);
+		Instruction GetInstruction (int offset)
+		{
+			return GetInstruction (body.Instructions, offset);
 		}
 
-		Instruction GetInstruction (MethodBody body, int offset)
+		static Instruction GetInstruction (Collection<Instruction> instructions, int offset)
 		{
-			Instruction instruction = m_instructions [offset] as Instruction;
-			if (instruction != null)
-				return instruction;
+			var size = instructions.size;
+			var items = instructions.items;
+			if (offset < 0 || offset > items [size - 1].offset)
+				return null;
+
+			int min = 0;
+			int max = size - 1;
+			while (min <= max) {
+				int mid = min + ((max - min) / 2);
+				var instruction = items [mid];
+				var instruction_offset = instruction.offset;
+
+				if (offset == instruction_offset)
+					return instruction;
+
+				if (offset < instruction_offset)
+					max = mid - 1;
+				else
+					min = mid + 1;
+			}
 
-			return body.Instructions.Outside;
+			return null;
 		}
 
-		void ReadSection (MethodBody body, BinaryReader br)
+		void ReadSection ()
 		{
-			br.BaseStream.Position += 3;
-			br.BaseStream.Position &= ~3;
+			Align (4);
 
-			byte flags = br.ReadByte ();
-			if ((flags & (byte) MethodDataSection.FatFormat) == 0) {
-				int length = br.ReadByte () / 12;
-				br.ReadBytes (2);
+			const byte fat_format = 0x40;
+			const byte more_sects = 0x80;
 
-				for (int i = 0; i < length; i++) {
-					ExceptionHandler eh = new ExceptionHandler (
-						(ExceptionHandlerType) (br.ReadInt16 () & 0x7));
-					eh.TryStart = GetInstruction (body, Convert.ToInt32 (br.ReadInt16 ()));
-					eh.TryEnd = GetInstruction (body, eh.TryStart.Offset + Convert.ToInt32 (br.ReadByte ()));
-					eh.HandlerStart = GetInstruction (body, Convert.ToInt32 (br.ReadInt16 ()));
-					eh.HandlerEnd = GetInstruction (body, eh.HandlerStart.Offset + Convert.ToInt32 (br.ReadByte ()));
-					ReadExceptionHandlerEnd (eh, br, body);
-					body.ExceptionHandlers.Add (eh);
-				}
-			} else {
-				br.BaseStream.Position--;
-				int length = (br.ReadInt32 () >> 8) / 24;
-				if ((flags & (int) MethodDataSection.EHTable) == 0)
-					br.ReadBytes (length * 24);
-				for (int i = 0; i < length; i++) {
-					ExceptionHandler eh = new ExceptionHandler (
-						(ExceptionHandlerType) (br.ReadInt32 () & 0x7));
-					eh.TryStart = GetInstruction (body, br.ReadInt32 ());
-					eh.TryEnd = GetInstruction (body, eh.TryStart.Offset + br.ReadInt32 ());
-					eh.HandlerStart = GetInstruction (body, br.ReadInt32 ());
-					eh.HandlerEnd = GetInstruction (body, eh.HandlerStart.Offset + br.ReadInt32 ());
-					ReadExceptionHandlerEnd (eh, br, body);
-					body.ExceptionHandlers.Add (eh);
-				}
-			}
+			var flags = ReadByte ();
+			if ((flags & fat_format) == 0)
+				ReadSmallSection ();
+			else
+				ReadFatSection ();
+
+			if ((flags & more_sects) != 0)
+				ReadSection ();
+		}
+
+		void ReadSmallSection ()
+		{
+			var count = ReadByte () / 12;
+			Advance (2);
 
-			if ((flags & (byte) MethodDataSection.MoreSects) != 0)
-				ReadSection (body, br);
+			ReadExceptionHandlers (
+				count,
+				() => (int) ReadUInt16 (),
+				() => (int) ReadByte ());
 		}
 
-		void ReadExceptionHandlerEnd (ExceptionHandler eh, BinaryReader br, MethodBody body)
+		void ReadFatSection ()
 		{
-			switch (eh.Type) {
-			case ExceptionHandlerType.Catch :
-				MetadataToken token = new MetadataToken (br.ReadInt32 ());
-				eh.CatchType = m_reflectReader.GetTypeDefOrRef (token, new GenericContext (body.Method));
+			position--;
+			var count = (ReadInt32 () >> 8) / 24;
+
+			ReadExceptionHandlers (
+				count,
+				ReadInt32,
+				ReadInt32);
+		}
+
+		// inline ?
+		void ReadExceptionHandlers (int count, Func<int> read_entry, Func<int> read_length)
+		{
+			for (int i = 0; i < count; i++) {
+				var handler = new ExceptionHandler (
+					(ExceptionHandlerType) (read_entry () & 0x7));
+
+				handler.TryStart = GetInstruction (read_entry ());
+				handler.TryEnd = GetInstruction (handler.TryStart.Offset + read_length ());
+
+				handler.HandlerStart = GetInstruction (read_entry ());
+				handler.HandlerEnd = GetInstruction (handler.HandlerStart.Offset + read_length ());
+
+				ReadExceptionHandlerSpecific (handler);
+
+				this.body.ExceptionHandlers.Add (handler);
+			}
+		}
+
+		void ReadExceptionHandlerSpecific (ExceptionHandler handler)
+		{
+			switch (handler.HandlerType) {
+			case ExceptionHandlerType.Catch:
+				handler.CatchType = (TypeReference) reader.LookupToken (ReadToken ());
+				break;
+			case ExceptionHandlerType.Filter:
+				handler.FilterStart = GetInstruction (ReadInt32 ());
+				handler.FilterEnd = handler.HandlerStart.Previous;
+				break;
+			default:
+				Advance (4);
 				break;
-			case ExceptionHandlerType.Filter :
-				eh.FilterStart = GetInstruction (body, br.ReadInt32 ());
-				eh.FilterEnd = GetInstruction (body, eh.HandlerStart.Previous.Offset);
+			}
+		}
+
+		void Align (int align)
+		{
+			align--;
+			Advance (((position + align) & ~align) - position);
+		}
+
+		public MetadataToken ReadToken ()
+		{
+			return new MetadataToken (ReadUInt32 ());
+		}
+
+#if !READ_ONLY
+
+		public ByteBuffer PatchRawMethodBody (MethodDefinition method, CodeWriter writer, out MethodSymbols symbols)
+		{
+			var buffer = new ByteBuffer ();
+			symbols = new MethodSymbols (method.Name);
+
+			this.method = method;
+			reader.context = method;
+
+			MoveTo (method.RVA);
+
+			var flags = ReadByte ();
+
+			MetadataToken local_var_token;
+
+			switch (flags & 0x3) {
+			case 0x2: // tiny
+				buffer.WriteByte (flags);
+				local_var_token = MetadataToken.Zero;
+				symbols.code_size = flags >> 2;
+				PatchRawCode (buffer, symbols.code_size, writer);
 				break;
-			default :
-				br.ReadInt32 ();
+			case 0x3: // fat
+				base.position--;
+
+				PatchRawFatMethod (buffer, symbols, writer, out local_var_token);
 				break;
+			default:
+				throw new NotSupportedException ();
+			}
+
+			var symbol_reader = reader.module.SymbolReader;
+			if (symbol_reader != null && writer.metadata.write_symbols) {
+				symbols.method_token = GetOriginalToken (writer.metadata, method);
+				symbols.local_var_token = local_var_token;
+				symbol_reader.Read (symbols);
 			}
+
+			return buffer;
+		}
+
+		void PatchRawFatMethod (ByteBuffer buffer, MethodSymbols symbols, CodeWriter writer, out MetadataToken local_var_token)
+		{
+			var flags = ReadUInt16 ();
+			buffer.WriteUInt16 (flags);
+			buffer.WriteUInt16 (ReadUInt16 ());
+			symbols.code_size = ReadInt32 ();
+			buffer.WriteInt32 (symbols.code_size);
+			local_var_token = ReadToken ();
+
+			if (local_var_token.RID > 0) {
+				var variables = symbols.variables = ReadVariables (local_var_token);
+				buffer.WriteUInt32 (variables != null
+					? writer.GetStandAloneSignature (symbols.variables).ToUInt32 ()
+					: 0);
+			} else
+				buffer.WriteUInt32 (0);
+
+			PatchRawCode (buffer, symbols.code_size, writer);
+
+			if ((flags & 0x8) != 0)
+				PatchRawSection (buffer, writer.metadata);
 		}
 
-		CallSite GetCallSiteAt (int token, GenericContext context)
+		static MetadataToken GetOriginalToken (MetadataBuilder metadata, MethodDefinition method)
 		{
-			StandAloneSigTable sasTable = m_reflectReader.TableReader.GetStandAloneSigTable ();
-			MethodSig ms = m_reflectReader.SigReader.GetStandAloneMethodSig (
-				sasTable [(int) GetRid (token) - 1].Signature);
-			CallSite cs = new CallSite (ms.HasThis, ms.ExplicitThis,
-				ms.MethCallConv, m_reflectReader.GetMethodReturnType (ms, context));
-			cs.MetadataToken = new MetadataToken (token);
+			MetadataToken original;
+			if (metadata.TryGetOriginalMethodToken (method.token, out original))
+				return original;
+
+			return MetadataToken.Zero;
+		}
+
+		void PatchRawCode (ByteBuffer buffer, int code_size, CodeWriter writer)
+		{
+			var metadata = writer.metadata;
+			buffer.WriteBytes (ReadBytes (code_size));
+			var end = buffer.position;
+			buffer.position -= code_size;
+
+			while (buffer.position < end) {
+				OpCode opcode;
+				var il_opcode = buffer.ReadByte ();
+				if (il_opcode != 0xfe) {
+					opcode = OpCodes.OneByteOpCode [il_opcode];
+				} else {
+					var il_opcode2 = buffer.ReadByte ();
+					opcode = OpCodes.TwoBytesOpCode [il_opcode2];
+				}
 
-			for (int i = 0; i < ms.ParamCount; i++) {
-				Param p = ms.Parameters [i];
-				cs.Parameters.Add (m_reflectReader.BuildParameterDefinition (i, p, context));
+				switch (opcode.OperandType) {
+				case OperandType.ShortInlineI:
+				case OperandType.ShortInlineBrTarget:
+				case OperandType.ShortInlineVar:
+				case OperandType.ShortInlineArg:
+					buffer.position += 1;
+					break;
+				case OperandType.InlineVar:
+				case OperandType.InlineArg:
+					buffer.position += 2;
+					break;
+				case OperandType.InlineBrTarget:
+				case OperandType.ShortInlineR:
+				case OperandType.InlineI:
+					buffer.position += 4;
+					break;
+				case OperandType.InlineI8:
+				case OperandType.InlineR:
+					buffer.position += 8;
+					break;
+				case OperandType.InlineSwitch:
+					var length = buffer.ReadInt32 ();
+					buffer.position += length * 4;
+					break;
+				case OperandType.InlineString:
+					var @string = GetString (new MetadataToken (buffer.ReadUInt32 ()));
+					buffer.position -= 4;
+					buffer.WriteUInt32 (
+						new MetadataToken (
+							TokenType.String,
+							metadata.user_string_heap.GetStringIndex (@string)).ToUInt32 ());
+					break;
+				case OperandType.InlineSig:
+					var call_site = GetCallSite (new MetadataToken (buffer.ReadUInt32 ()));
+					buffer.position -= 4;
+					buffer.WriteUInt32 (writer.GetStandAloneSignature (call_site).ToUInt32 ());
+					break;
+				case OperandType.InlineTok:
+				case OperandType.InlineType:
+				case OperandType.InlineMethod:
+				case OperandType.InlineField:
+					var provider = reader.LookupToken (new MetadataToken (buffer.ReadUInt32 ()));
+					buffer.position -= 4;
+					buffer.WriteUInt32 (metadata.LookupToken (provider).ToUInt32 ());
+					break;
+				}
 			}
+		}
+
+		void PatchRawSection (ByteBuffer buffer, MetadataBuilder metadata)
+		{
+			var position = base.position;
+			Align (4);
+			buffer.WriteBytes (base.position - position);
+
+			const byte fat_format = 0x40;
+			const byte more_sects = 0x80;
+
+			var flags = ReadByte ();
+			if ((flags & fat_format) == 0) {
+				buffer.WriteByte (flags);
+				PatchRawSmallSection (buffer, metadata);
+			} else
+				PatchRawFatSection (buffer, metadata);
+
+			if ((flags & more_sects) != 0)
+				PatchRawSection (buffer, metadata);
+		}
+
+		void PatchRawSmallSection (ByteBuffer buffer, MetadataBuilder metadata)
+		{
+			var length = ReadByte ();
+			buffer.WriteByte (length);
+			Advance (2);
+
+			buffer.WriteUInt16 (0);
 
-			ReflectionReader.CreateSentinelIfNeeded (cs, ms);
+			var count = length / 12;
 
-			return cs;
+			PatchRawExceptionHandlers (buffer, metadata, count, false);
 		}
 
-		public override void VisitVariableDefinitionCollection (VariableDefinitionCollection variables)
+		void PatchRawFatSection (ByteBuffer buffer, MetadataBuilder metadata)
 		{
-			MethodBody body = variables.Container as MethodBody;
-			if (body == null || body.LocalVarToken == 0)
-				return;
+			position--;
+			var length = ReadInt32 ();
+			buffer.WriteInt32 (length);
 
-			StandAloneSigTable sasTable = m_reflectReader.TableReader.GetStandAloneSigTable ();
-			StandAloneSigRow sasRow = sasTable [(int) GetRid (body.LocalVarToken) - 1];
-			LocalVarSig sig = m_reflectReader.SigReader.GetLocalVarSig (sasRow.Signature);
-			for (int i = 0; i < sig.Count; i++) {
-				LocalVarSig.LocalVariable lv = sig.LocalVariables [i];
-				TypeReference varType = m_reflectReader.GetTypeRefFromSig (
-					lv.Type, new GenericContext (body.Method));
+			var count = (length >> 8) / 24;
 
-				if (lv.ByRef)
-					varType = new ReferenceType (varType);
-				if ((lv.Constraint & Constraint.Pinned) != 0)
-					varType = new PinnedType (varType);
+			PatchRawExceptionHandlers (buffer, metadata, count, true);
+		}
 
-				varType = m_reflectReader.GetModifierType (lv.CustomMods, varType);
+		void PatchRawExceptionHandlers (ByteBuffer buffer, MetadataBuilder metadata, int count, bool fat_entry)
+		{
+			const int fat_entry_size = 16;
+			const int small_entry_size = 6;
+
+			for (int i = 0; i < count; i++) {
+				ExceptionHandlerType handler_type;
+				if (fat_entry) {
+					var type = ReadUInt32 ();
+					handler_type = (ExceptionHandlerType) (type & 0x7);
+					buffer.WriteUInt32 (type);
+				} else {
+					var type = ReadUInt16 ();
+					handler_type = (ExceptionHandlerType) (type & 0x7);
+					buffer.WriteUInt16 (type);
+				}
 
-				body.Variables.Add (new VariableDefinition (
-						string.Concat ("V_", i), i, body.Method, varType));
+				buffer.WriteBytes (ReadBytes (fat_entry ? fat_entry_size : small_entry_size));
+
+				switch (handler_type) {
+				case ExceptionHandlerType.Catch:
+					var exception = reader.LookupToken (ReadToken ());
+					buffer.WriteUInt32 (metadata.LookupToken (exception).ToUInt32 ());
+					break;
+				default:
+					buffer.WriteUInt32 (ReadUInt32 ());
+					break;
+				}
 			}
 		}
+
+#endif
+
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/CodeWriter.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/CodeWriter.cs
index f6abc50..8bf0722 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/CodeWriter.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/CodeWriter.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 - 2007 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,510 +26,425 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil.Cil {
+using System;
+using System.Collections.Generic;
+
+using Mono.Collections.Generic;
 
-	using System;
-	using System.Collections;
+using Mono.Cecil.Metadata;
+using Mono.Cecil.PE;
 
-	using Mono.Cecil;
-	using Mono.Cecil.Binary;
-	using Mono.Cecil.Metadata;
-	using Mono.Cecil.Signatures;
+using RVA = System.UInt32;
 
-	sealed class CodeWriter : BaseCodeVisitor {
+#if !READ_ONLY
 
-		ReflectionWriter m_reflectWriter;
-		MemoryBinaryWriter m_binaryWriter;
-		MemoryBinaryWriter m_codeWriter;
+namespace Mono.Cecil.Cil {
 
-		IDictionary m_localSigCache;
-		IDictionary m_standaloneSigCache;
+	sealed class CodeWriter : ByteBuffer {
 
-		IDictionary m_stackSizes;
+		readonly RVA code_base;
+		internal readonly MetadataBuilder metadata;
+		readonly Dictionary<uint, MetadataToken> standalone_signatures;
 
-		bool stripped;
+		RVA current;
+		MethodBody body;
 
-		public bool Stripped {
-			get { return stripped; }
-			set { stripped = value; }
+		public CodeWriter (MetadataBuilder metadata)
+			: base (0)
+		{
+			this.code_base = metadata.text_map.GetNextRVA (TextSegment.CLIHeader);
+			this.current = code_base;
+			this.metadata = metadata;
+			this.standalone_signatures = new Dictionary<uint, MetadataToken> ();
 		}
 
-		public CodeWriter (ReflectionWriter reflectWriter, MemoryBinaryWriter writer)
+		public RVA WriteMethodBody (MethodDefinition method)
 		{
-			m_reflectWriter = reflectWriter;
-			m_binaryWriter = writer;
-			m_codeWriter = new MemoryBinaryWriter ();
+			var rva = BeginMethod ();
 
-			m_localSigCache = new Hashtable ();
-			m_standaloneSigCache = new Hashtable ();
+			if (IsUnresolved (method)) {
+				if (method.rva == 0)
+					return 0;
 
-			m_stackSizes = new Hashtable ();
-		}
+				WriteUnresolvedMethodBody (method);
+			} else {
+				if (IsEmptyMethodBody (method.Body))
+					return 0;
 
-		public RVA WriteMethodBody (MethodDefinition meth)
-		{
-			if (meth.Body == null)
-				return RVA.Zero;
+				WriteResolvedMethodBody (method);
+			}
 
-			RVA ret = m_reflectWriter.MetadataWriter.GetDataCursor ();
-			meth.Body.Accept (this);
-			return ret;
-		}
+			Align (4);
 
-		public override void VisitMethodBody (MethodBody body)
-		{
-			m_codeWriter.Empty ();
+			EndMethod ();
+			return rva;
 		}
 
-		void WriteToken (MetadataToken token)
+		static bool IsEmptyMethodBody (MethodBody body)
 		{
-			if (token.RID == 0)
-				m_codeWriter.Write (0);
-			else
-				m_codeWriter.Write (token.ToUInt ());
+			return body.instructions.IsNullOrEmpty ()
+				&& body.variables.IsNullOrEmpty ();
 		}
 
-		static int GetParameterIndex (MethodBody body, ParameterDefinition p)
+		static bool IsUnresolved (MethodDefinition method)
 		{
-			int idx = body.Method.Parameters.IndexOf (p);
-			if (idx == -1 && p == body.Method.This)
-				return 0;
-			if (body.Method.HasThis)
-				idx++;
-
-			return idx;
+			return method.HasBody && method.HasImage && method.body == null;
 		}
 
-		public override void VisitInstructionCollection (InstructionCollection instructions)
+		void WriteUnresolvedMethodBody (MethodDefinition method)
 		{
-			MethodBody body = instructions.Container;
-			long start = m_codeWriter.BaseStream.Position;
-
-			ComputeMaxStack (instructions);
+			var code_reader = metadata.module.Read (method, (_, reader) => reader.code);
 
-			foreach (Instruction instr in instructions) {
+			MethodSymbols symbols;
+			var buffer = code_reader.PatchRawMethodBody (method, this, out symbols);
 
-				instr.Offset = (int) (m_codeWriter.BaseStream.Position - start);
+			WriteBytes (buffer);
 
-				if (instr.OpCode.Size == 1)
-					m_codeWriter.Write (instr.OpCode.Op2);
-				else {
-					m_codeWriter.Write (instr.OpCode.Op1);
-					m_codeWriter.Write (instr.OpCode.Op2);
-				}
-
-				if (instr.OpCode.OperandType != OperandType.InlineNone &&
-					instr.Operand == null)
-					throw new ReflectionException ("OpCode {0} have null operand", instr.OpCode.Name);
-
-				switch (instr.OpCode.OperandType) {
-				case OperandType.InlineNone :
-					break;
-				case OperandType.InlineSwitch :
-					Instruction [] targets = (Instruction []) instr.Operand;
-					for (int i = 0; i < targets.Length + 1; i++)
-						m_codeWriter.Write ((uint) 0);
-					break;
-				case OperandType.ShortInlineBrTarget :
-					m_codeWriter.Write ((byte) 0);
-					break;
-				case OperandType.InlineBrTarget :
-					m_codeWriter.Write (0);
-					break;
-				case OperandType.ShortInlineI :
-					if (instr.OpCode == OpCodes.Ldc_I4_S)
-						m_codeWriter.Write ((sbyte) instr.Operand);
-					else
-						m_codeWriter.Write ((byte) instr.Operand);
-					break;
-				case OperandType.ShortInlineVar :
-					m_codeWriter.Write ((byte) body.Variables.IndexOf (
-						(VariableDefinition) instr.Operand));
-					break;
-				case OperandType.ShortInlineParam :
-					m_codeWriter.Write ((byte) GetParameterIndex (body, (ParameterDefinition) instr.Operand));
-					break;
-				case OperandType.InlineSig :
-					WriteToken (GetCallSiteToken ((CallSite) instr.Operand));
-					break;
-				case OperandType.InlineI :
-					m_codeWriter.Write ((int) instr.Operand);
-					break;
-				case OperandType.InlineVar :
-					m_codeWriter.Write ((short) body.Variables.IndexOf (
-						(VariableDefinition) instr.Operand));
-					break;
-				case OperandType.InlineParam :
-					m_codeWriter.Write ((short) GetParameterIndex (
-							body, (ParameterDefinition) instr.Operand));
-					break;
-				case OperandType.InlineI8 :
-					m_codeWriter.Write ((long) instr.Operand);
-					break;
-				case OperandType.ShortInlineR :
-					m_codeWriter.Write ((float) instr.Operand);
-					break;
-				case OperandType.InlineR :
-					m_codeWriter.Write ((double) instr.Operand);
-					break;
-				case OperandType.InlineString :
-					WriteToken (new MetadataToken (TokenType.String,
-							m_reflectWriter.MetadataWriter.AddUserString (instr.Operand as string)));
-					break;
-				case OperandType.InlineField :
-				case OperandType.InlineMethod :
-				case OperandType.InlineType :
-				case OperandType.InlineTok :
-					if (instr.Operand is TypeReference)
-						WriteToken (GetTypeToken ((TypeReference) instr.Operand));
-					else if (instr.Operand is GenericInstanceMethod)
-						WriteToken (m_reflectWriter.GetMethodSpecToken (instr.Operand as GenericInstanceMethod));
-					else if (instr.Operand is MemberReference)
-						WriteToken (m_reflectWriter.GetMemberRefToken ((MemberReference) instr.Operand));
-					else if (instr.Operand is IMetadataTokenProvider)
-						WriteToken (((IMetadataTokenProvider) instr.Operand).MetadataToken);
-					else
-						throw new ReflectionException (
-							string.Format ("Wrong operand for {0} OpCode: {1}",
-								instr.OpCode.OperandType,
-								instr.Operand.GetType ().FullName));
-					break;
-				}
-			}
+			if (symbols.instructions.IsNullOrEmpty ())
+				return;
 
-			// patch branches
-			long pos = m_codeWriter.BaseStream.Position;
-
-			foreach (Instruction instr in instructions) {
-				switch (instr.OpCode.OperandType) {
-				case OperandType.InlineSwitch :
-					m_codeWriter.BaseStream.Position = instr.Offset + instr.OpCode.Size;
-					Instruction [] targets = (Instruction []) instr.Operand;
-					m_codeWriter.Write ((uint) targets.Length);
-					foreach (Instruction tgt in targets)
-						m_codeWriter.Write ((tgt.Offset - (instr.Offset +
-							instr.OpCode.Size + (4 * (targets.Length + 1)))));
-					break;
-				case OperandType.ShortInlineBrTarget :
-					m_codeWriter.BaseStream.Position = instr.Offset + instr.OpCode.Size;
-					m_codeWriter.Write ((byte) (((Instruction) instr.Operand).Offset -
-						(instr.Offset + instr.OpCode.Size + 1)));
-					break;
-				case OperandType.InlineBrTarget :
-					m_codeWriter.BaseStream.Position = instr.Offset + instr.OpCode.Size;
-					m_codeWriter.Write(((Instruction) instr.Operand).Offset -
-						(instr.Offset + instr.OpCode.Size + 4));
-					break;
-				}
-			}
+			symbols.method_token = method.token;
+			symbols.local_var_token = GetLocalVarToken (buffer, symbols);
 
-			m_codeWriter.BaseStream.Position = pos;
+			var symbol_writer = metadata.symbol_writer;
+			if (symbol_writer != null)
+				symbol_writer.Write (symbols);
 		}
 
-		MetadataToken GetTypeToken (TypeReference type)
+		static MetadataToken GetLocalVarToken (ByteBuffer buffer, MethodSymbols symbols)
 		{
-			return m_reflectWriter.GetTypeDefOrRefToken (type);
+			if (symbols.variables.IsNullOrEmpty ())
+				return MetadataToken.Zero;
+
+			buffer.position = 8;
+			return new MetadataToken (buffer.ReadUInt32 ());
 		}
 
-		MetadataToken GetCallSiteToken (CallSite cs)
+		void WriteResolvedMethodBody (MethodDefinition method)
 		{
-			uint sig;
-			int sentinel = cs.GetSentinel ();
-			if (sentinel > 0)
-				sig = m_reflectWriter.SignatureWriter.AddMethodDefSig (
-					m_reflectWriter.GetMethodDefSig (cs));
+			body = method.Body;
+			ComputeHeader ();
+			if (RequiresFatHeader ())
+				WriteFatHeader ();
 			else
-				sig = m_reflectWriter.SignatureWriter.AddMethodRefSig (
-					m_reflectWriter.GetMethodRefSig (cs));
+				WriteByte ((byte) (0x2 | (body.CodeSize << 2))); // tiny
 
-			if (m_standaloneSigCache.Contains (sig))
-				return (MetadataToken) m_standaloneSigCache [sig];
+			WriteInstructions ();
 
-			StandAloneSigTable sasTable = m_reflectWriter.MetadataTableWriter.GetStandAloneSigTable ();
-			StandAloneSigRow sasRow = m_reflectWriter.MetadataRowWriter.CreateStandAloneSigRow (sig);
+			if (body.HasExceptionHandlers)
+				WriteExceptionHandlers ();
 
-			sasTable.Rows.Add(sasRow);
-
-			MetadataToken token = new MetadataToken (TokenType.Signature, (uint) sasTable.Rows.Count);
-			m_standaloneSigCache [sig] = token;
-			return token;
+			var symbol_writer = metadata.symbol_writer;
+			if (symbol_writer != null)
+				symbol_writer.Write (body);
 		}
 
-		static int GetLength (Instruction start, Instruction end, InstructionCollection instructions)
+		void WriteFatHeader ()
 		{
-			Instruction last = instructions [instructions.Count - 1];
-			return (end == instructions.Outside ? last.Offset + last.GetSize () : end.Offset) - start.Offset;
+			var body = this.body;
+			byte flags = 0x3;	// fat
+			if (body.InitLocals)
+				flags |= 0x10;	// init locals
+			if (body.HasExceptionHandlers)
+				flags |= 0x8;	// more sections
+
+			WriteByte (flags);
+			WriteByte (0x30);
+			WriteInt16 ((short) body.max_stack_size);
+			WriteInt32 (body.code_size);
+			body.local_var_token = body.HasVariables
+				? GetStandAloneSignature (body.Variables)
+				: MetadataToken.Zero;
+			WriteMetadataToken (body.local_var_token);
 		}
 
-		static bool IsRangeFat (Instruction start, Instruction end, InstructionCollection instructions)
+		void WriteInstructions ()
 		{
-			return GetLength (start, end, instructions) >= 256 ||
-				start.Offset >= 65536;
-		}
-
-		static bool IsFat (ExceptionHandlerCollection seh)
-		{
-			for (int i = 0; i < seh.Count; i++) {
-				ExceptionHandler eh = seh [i];
-				if (IsRangeFat (eh.TryStart, eh.TryEnd, seh.Container.Instructions))
-					return true;
-
-				if (IsRangeFat (eh.HandlerStart, eh.HandlerEnd, seh.Container.Instructions))
-					return true;
-
-				switch (eh.Type) {
-				case ExceptionHandlerType.Filter :
-					if (IsRangeFat (eh.FilterStart, eh.FilterEnd, seh.Container.Instructions))
-						return true;
-					break;
-				}
+			var instructions = body.Instructions;
+			var items = instructions.items;
+			var size = instructions.size;
+
+			for (int i = 0; i < size; i++) {
+				var instruction = items [i];
+				WriteOpCode (instruction.opcode);
+				WriteOperand (instruction);
 			}
-
-			return false;
 		}
 
-		void WriteExceptionHandlerCollection (ExceptionHandlerCollection seh)
+		void WriteOpCode (OpCode opcode)
 		{
-			m_codeWriter.QuadAlign ();
-
-			if (seh.Count < 0x15 && !IsFat (seh)) {
-				m_codeWriter.Write ((byte) MethodDataSection.EHTable);
-				m_codeWriter.Write ((byte) (seh.Count * 12 + 4));
-				m_codeWriter.Write (new byte [2]);
-				foreach (ExceptionHandler eh in seh) {
-					m_codeWriter.Write ((ushort) eh.Type);
-					m_codeWriter.Write ((ushort) eh.TryStart.Offset);
-					m_codeWriter.Write ((byte) (eh.TryEnd.Offset - eh.TryStart.Offset));
-					m_codeWriter.Write ((ushort) eh.HandlerStart.Offset);
-					m_codeWriter.Write ((byte) GetLength (eh.HandlerStart, eh.HandlerEnd, seh.Container.Instructions));
-					WriteHandlerSpecific (eh);
-				}
+			if (opcode.Size == 1) {
+				WriteByte (opcode.Op2);
 			} else {
-				m_codeWriter.Write ((byte) (MethodDataSection.FatFormat | MethodDataSection.EHTable));
-				WriteFatBlockSize (seh);
-				foreach (ExceptionHandler eh in seh) {
-					m_codeWriter.Write ((uint) eh.Type);
-					m_codeWriter.Write ((uint) eh.TryStart.Offset);
-					m_codeWriter.Write ((uint) (eh.TryEnd.Offset - eh.TryStart.Offset));
-					m_codeWriter.Write ((uint) eh.HandlerStart.Offset);
-					m_codeWriter.Write ((uint) GetLength (eh.HandlerStart, eh.HandlerEnd, seh.Container.Instructions));
-					WriteHandlerSpecific (eh);
-				}
+				WriteByte (opcode.Op1);
+				WriteByte (opcode.Op2);
 			}
 		}
 
-		void WriteFatBlockSize (ExceptionHandlerCollection seh)
+		void WriteOperand (Instruction instruction)
 		{
-			int size = seh.Count * 24 + 4;
-			m_codeWriter.Write ((byte) (size & 0xff));
-			m_codeWriter.Write ((byte) ((size >> 8) & 0xff));
-			m_codeWriter.Write ((byte) ((size >> 16) & 0xff));
-		}
+			var opcode = instruction.opcode;
+			var operand_type = opcode.OperandType;
+			if (operand_type == OperandType.InlineNone)
+				return;
 
-		void WriteHandlerSpecific (ExceptionHandler eh)
-		{
-			switch (eh.Type) {
-			case ExceptionHandlerType.Catch :
-				WriteToken (GetTypeToken (eh.CatchType));
+			var operand = instruction.operand;
+			if (operand == null)
+				throw new ArgumentException ();
+
+			switch (operand_type) {
+			case OperandType.InlineSwitch: {
+				var targets = (Instruction []) operand;
+				WriteInt32 (targets.Length);
+				var diff = instruction.Offset + opcode.Size + (4 * (targets.Length + 1));
+				for (int i = 0; i < targets.Length; i++)
+					WriteInt32 (GetTargetOffset (targets [i]) - diff);
 				break;
-			case ExceptionHandlerType.Filter :
-				m_codeWriter.Write ((uint) eh.FilterStart.Offset);
+			}
+			case OperandType.ShortInlineBrTarget: {
+				var target = (Instruction) operand;
+				WriteSByte ((sbyte) (GetTargetOffset (target) - (instruction.Offset + opcode.Size + 1)));
 				break;
-			default :
-				m_codeWriter.Write (0);
+			}
+			case OperandType.InlineBrTarget: {
+				var target = (Instruction) operand;
+				WriteInt32 (GetTargetOffset (target) - (instruction.Offset + opcode.Size + 4));
 				break;
 			}
+			case OperandType.ShortInlineVar:
+				WriteByte ((byte) GetVariableIndex ((VariableDefinition) operand));
+				break;
+			case OperandType.ShortInlineArg:
+				WriteByte ((byte) GetParameterIndex ((ParameterDefinition) operand));
+				break;
+			case OperandType.InlineVar:
+				WriteInt16 ((short) GetVariableIndex ((VariableDefinition) operand));
+				break;
+			case OperandType.InlineArg:
+				WriteInt16 ((short) GetParameterIndex ((ParameterDefinition) operand));
+				break;
+			case OperandType.InlineSig:
+				WriteMetadataToken (GetStandAloneSignature ((CallSite) operand));
+				break;
+			case OperandType.ShortInlineI:
+				if (opcode == OpCodes.Ldc_I4_S)
+					WriteSByte ((sbyte) operand);
+				else
+					WriteByte ((byte) operand);
+				break;
+			case OperandType.InlineI:
+				WriteInt32 ((int) operand);
+				break;
+			case OperandType.InlineI8:
+				WriteInt64 ((long) operand);
+				break;
+			case OperandType.ShortInlineR:
+				WriteSingle ((float) operand);
+				break;
+			case OperandType.InlineR:
+				WriteDouble ((double) operand);
+				break;
+			case OperandType.InlineString:
+				WriteMetadataToken (
+					new MetadataToken (
+						TokenType.String,
+						GetUserStringIndex ((string) operand)));
+				break;
+			case OperandType.InlineType:
+			case OperandType.InlineField:
+			case OperandType.InlineMethod:
+			case OperandType.InlineTok:
+				WriteMetadataToken (metadata.LookupToken ((IMetadataTokenProvider) operand));
+				break;
+			default:
+				throw new ArgumentException ();
+			}
 		}
 
-		public override void VisitVariableDefinitionCollection (VariableDefinitionCollection variables)
+		int GetTargetOffset (Instruction instruction)
 		{
-			MethodBody body = variables.Container as MethodBody;
-			if (body == null || stripped)
-				return;
-
-			uint sig = m_reflectWriter.SignatureWriter.AddLocalVarSig (
-					GetLocalVarSig (variables));
-
-			if (m_localSigCache.Contains (sig)) {
-				body.LocalVarToken = (int) m_localSigCache [sig];
-				return;
+			if (instruction == null) {
+				var last = body.instructions [body.instructions.size - 1];
+				return last.offset + last.GetSize ();
 			}
 
-			StandAloneSigTable sasTable = m_reflectWriter.MetadataTableWriter.GetStandAloneSigTable ();
-			StandAloneSigRow sasRow = m_reflectWriter.MetadataRowWriter.CreateStandAloneSigRow (
-				sig);
-
-			sasTable.Rows.Add (sasRow);
-			body.LocalVarToken = sasTable.Rows.Count;
-			m_localSigCache [sig] = body.LocalVarToken;
+			return instruction.offset;
 		}
 
-		public override void TerminateMethodBody (MethodBody body)
+		uint GetUserStringIndex (string @string)
 		{
-			long pos = m_binaryWriter.BaseStream.Position;
-
-			if (body.HasVariables || body.HasExceptionHandlers
-				|| m_codeWriter.BaseStream.Length >= 64 || body.MaxStack > 8) {
-
-				MethodHeader header = MethodHeader.FatFormat;
-				if (body.InitLocals)
-					header |= MethodHeader.InitLocals;
-				if (body.HasExceptionHandlers)
-					header |= MethodHeader.MoreSects;
-
-				m_binaryWriter.Write ((byte) header);
-				m_binaryWriter.Write ((byte) 0x30); // (header size / 4) << 4
-				m_binaryWriter.Write ((short) body.MaxStack);
-				m_binaryWriter.Write ((int) m_codeWriter.BaseStream.Length);
-				// the token should be zero if there are no variables
-				int token = body.HasVariables ? ((int) TokenType.Signature | body.LocalVarToken) : 0;
-				m_binaryWriter.Write (token);
-
-				if (body.HasExceptionHandlers)
-					WriteExceptionHandlerCollection (body.ExceptionHandlers);
-			} else
-				m_binaryWriter.Write ((byte) ((byte) MethodHeader.TinyFormat |
-					m_codeWriter.BaseStream.Length << 2));
-
-			m_binaryWriter.Write (m_codeWriter);
-			m_binaryWriter.QuadAlign ();
+			if (@string == null)
+				return 0;
 
-			m_reflectWriter.MetadataWriter.AddData (
-				(int) (m_binaryWriter.BaseStream.Position - pos));
+			return metadata.user_string_heap.GetStringIndex (@string);
 		}
 
-		public LocalVarSig.LocalVariable GetLocalVariableSig (VariableDefinition var)
+		static int GetVariableIndex (VariableDefinition variable)
 		{
-			LocalVarSig.LocalVariable lv = new LocalVarSig.LocalVariable ();
-			TypeReference type = var.VariableType;
-
-			lv.CustomMods = m_reflectWriter.GetCustomMods (type);
+			return variable.Index;
+		}
 
-			if (type is PinnedType) {
-				lv.Constraint |= Constraint.Pinned;
-				type = (type as PinnedType).ElementType;
-			}
+		int GetParameterIndex (ParameterDefinition parameter)
+		{
+			if (body.method.HasThis) {
+				if (parameter == body.this_parameter)
+					return 0;
 
-			if (type is ReferenceType) {
-				lv.ByRef = true;
-				type = (type as ReferenceType).ElementType;
+				return parameter.Index + 1;
 			}
 
-			lv.Type = m_reflectWriter.GetSigType (type);
+			return parameter.Index;
+		}
 
-			return lv;
+		bool RequiresFatHeader ()
+		{
+			var body = this.body;
+			return body.CodeSize >= 64
+				|| body.InitLocals
+				|| body.HasVariables
+				|| body.HasExceptionHandlers
+				|| body.MaxStackSize > 8;
 		}
 
-		public LocalVarSig GetLocalVarSig (VariableDefinitionCollection vars)
+		void ComputeHeader ()
 		{
-			LocalVarSig lvs = new LocalVarSig ();
-			lvs.CallingConvention |= 0x7;
-			lvs.Count = vars.Count;
-			lvs.LocalVariables = new LocalVarSig.LocalVariable [lvs.Count];
-			for (int i = 0; i < lvs.Count; i++) {
-				lvs.LocalVariables [i] = GetLocalVariableSig (vars [i]);
+			int offset = 0;
+			var instructions = body.instructions;
+			var items = instructions.items;
+			var count = instructions.size;
+			var stack_size = 0;
+			var max_stack = 0;
+			Dictionary<Instruction, int> stack_sizes = null;
+
+			if (body.HasExceptionHandlers)
+				ComputeExceptionHandlerStackSize (ref stack_sizes);
+
+			for (int i = 0; i < count; i++) {
+				var instruction = items [i];
+				instruction.offset = offset;
+				offset += instruction.GetSize ();
+
+				ComputeStackSize (instruction, ref stack_sizes, ref stack_size, ref max_stack);
 			}
 
-			return lvs;
+			body.code_size = offset;
+			body.max_stack_size = max_stack;
 		}
 
-		void ComputeMaxStack (InstructionCollection instructions)
+		void ComputeExceptionHandlerStackSize (ref Dictionary<Instruction, int> stack_sizes)
 		{
-			int current = 0;
-			int max = 0;
-			m_stackSizes.Clear ();
+			var exception_handlers = body.ExceptionHandlers;
 
-			foreach (ExceptionHandler eh in instructions.Container.ExceptionHandlers) {
-				switch (eh.Type) {
-				case ExceptionHandlerType.Catch :
-				case ExceptionHandlerType.Filter :
-					m_stackSizes [eh.HandlerStart] = 1;
-					max = 1;
+			for (int i = 0; i < exception_handlers.Count; i++) {
+				var exception_handler = exception_handlers [i];
+
+				switch (exception_handler.HandlerType) {
+				case ExceptionHandlerType.Catch:
+					AddExceptionStackSize (exception_handler.HandlerStart, ref stack_sizes);
+					break;
+				case ExceptionHandlerType.Filter:
+					AddExceptionStackSize (exception_handler.FilterStart, ref stack_sizes);
+					AddExceptionStackSize (exception_handler.HandlerStart, ref stack_sizes);
 					break;
 				}
 			}
+		}
 
-			foreach (Instruction instr in instructions) {
+		static void AddExceptionStackSize (Instruction handler_start, ref Dictionary<Instruction, int> stack_sizes)
+		{
+			if (handler_start == null)
+				return;
 
-				object savedSize = m_stackSizes [instr];
-				if (savedSize != null)
-					current = (int) savedSize;
+			if (stack_sizes == null)
+				stack_sizes = new Dictionary<Instruction, int> ();
 
-				current -= GetPopDelta (instructions.Container.Method, instr, current);
+			stack_sizes [handler_start] = 1;
+		}
 
-				if (current < 0)
-					current = 0;
+		static void ComputeStackSize (Instruction instruction, ref Dictionary<Instruction, int> stack_sizes, ref int stack_size, ref int max_stack)
+		{
+			int computed_size;
+			if (stack_sizes != null && stack_sizes.TryGetValue (instruction, out computed_size))
+				stack_size = computed_size;
 
-				current += GetPushDelta (instr);
+			max_stack = System.Math.Max (max_stack, stack_size);
+			ComputeStackDelta (instruction, ref stack_size);
+			max_stack = System.Math.Max (max_stack, stack_size);
 
-				if (current > max)
-					max = current;
+			CopyBranchStackSize (instruction, ref stack_sizes, stack_size);
+			ComputeStackSize (instruction, ref stack_size);
+		}
 
-				// for forward branches, copy the stack size for the instruction that is being branched to
-				switch (instr.OpCode.OperandType) {
-					case OperandType.InlineBrTarget:
-					case OperandType.ShortInlineBrTarget:
-						m_stackSizes [instr.Operand] = current;
-					break;
-					case OperandType.InlineSwitch:
-						foreach (Instruction target in (Instruction []) instr.Operand)
-							m_stackSizes [target] = current;
-					break;
-				}
+		static void CopyBranchStackSize (Instruction instruction, ref Dictionary<Instruction, int> stack_sizes, int stack_size)
+		{
+			if (stack_size == 0)
+				return;
 
-				switch (instr.OpCode.FlowControl) {
-				case FlowControl.Branch:
-				case FlowControl.Throw:
-				case FlowControl.Return:
-					// next statement is not reachable from this statement, so reset the stack depth to 0
-					current = 0;
-					break;
-				}
+			switch (instruction.opcode.OperandType) {
+			case OperandType.ShortInlineBrTarget:
+			case OperandType.InlineBrTarget:
+				CopyBranchStackSize (ref stack_sizes, (Instruction) instruction.operand, stack_size);
+				break;
+			case OperandType.InlineSwitch:
+				var targets = (Instruction[]) instruction.operand;
+				for (int i = 0; i < targets.Length; i++)
+					CopyBranchStackSize (ref stack_sizes, targets [i], stack_size);
+				break;
 			}
-
-			instructions.Container.MaxStack = max + 1; // you never know
 		}
 
-		static int GetPushDelta (Instruction instruction)
+		static void CopyBranchStackSize (ref Dictionary<Instruction, int> stack_sizes, Instruction target, int stack_size)
 		{
-			OpCode code = instruction.OpCode;
-			switch (code.StackBehaviourPush) {
-			case StackBehaviour.Push0:
-				return 0;
+			if (stack_sizes == null)
+				stack_sizes = new Dictionary<Instruction, int> ();
 
-			case StackBehaviour.Push1:
-			case StackBehaviour.Pushi:
-			case StackBehaviour.Pushi8:
-			case StackBehaviour.Pushr4:
-			case StackBehaviour.Pushr8:
-			case StackBehaviour.Pushref:
-				return 1;
+			int branch_stack_size = stack_size;
 
-			case StackBehaviour.Push1_push1:
-				return 2;
+			int computed_size;
+			if (stack_sizes.TryGetValue (target, out computed_size))
+				branch_stack_size = System.Math.Max (branch_stack_size, computed_size);
 
-			case StackBehaviour.Varpush:
-				if (code.FlowControl != FlowControl.Call)
-					break;
+			stack_sizes [target] = branch_stack_size;
+		}
 
-				IMethodSignature method = (IMethodSignature) instruction.Operand;
-				return IsVoid (method.ReturnType.ReturnType) ? 0 : 1;
+		static void ComputeStackSize (Instruction instruction, ref int stack_size)
+		{
+			switch (instruction.opcode.FlowControl) {
+			case FlowControl.Branch:
+			case FlowControl.Break:
+			case FlowControl.Throw:
+			case FlowControl.Return:
+				stack_size = 0;
+				break;
 			}
+		}
 
-			throw new NotSupportedException ();
+		static void ComputeStackDelta (Instruction instruction, ref int stack_size)
+		{
+			switch (instruction.opcode.FlowControl) {
+			case FlowControl.Call: {
+				var method = (IMethodSignature) instruction.operand;
+				stack_size -= (method.HasParameters ? method.Parameters.Count : 0)
+					+ (method.HasThis && instruction.opcode.Code != Code.Newobj ? 1 : 0);
+				stack_size += (method.ReturnType.etype == ElementType.Void ? 0 : 1)
+					+ (method.HasThis && instruction.opcode.Code == Code.Newobj ? 1 : 0);
+				break;
+			}
+			default:
+				ComputePopDelta (instruction.opcode.StackBehaviourPop, ref stack_size);
+				ComputePushDelta (instruction.opcode.StackBehaviourPush, ref stack_size);
+				break;
+			}
 		}
 
-		static int GetPopDelta (MethodDefinition current, Instruction instruction, int height)
+		static void ComputePopDelta (StackBehaviour pop_behavior, ref int stack_size)
 		{
-			OpCode code = instruction.OpCode;
-			switch (code.StackBehaviourPop) {
-			case StackBehaviour.Pop0:
-				return 0;
+			switch (pop_behavior) {
 			case StackBehaviour.Popi:
 			case StackBehaviour.Popref:
 			case StackBehaviour.Pop1:
-				return 1;
-
+				stack_size--;
+				break;
 			case StackBehaviour.Pop1_pop1:
 			case StackBehaviour.Popi_pop1:
 			case StackBehaviour.Popi_popi:
@@ -538,40 +453,186 @@ namespace Mono.Cecil.Cil {
 			case StackBehaviour.Popi_popr8:
 			case StackBehaviour.Popref_pop1:
 			case StackBehaviour.Popref_popi:
-				return 2;
-
+				stack_size -= 2;
+				break;
 			case StackBehaviour.Popi_popi_popi:
 			case StackBehaviour.Popref_popi_popi:
 			case StackBehaviour.Popref_popi_popi8:
 			case StackBehaviour.Popref_popi_popr4:
 			case StackBehaviour.Popref_popi_popr8:
 			case StackBehaviour.Popref_popi_popref:
-				return 3;
-
+				stack_size -= 3;
+				break;
 			case StackBehaviour.PopAll:
-				return height;
+				stack_size = 0;
+				break;
+			}
+		}
 
-			case StackBehaviour.Varpop:
-				if (code == OpCodes.Ret)
-					return IsVoid (current.ReturnType.ReturnType) ? 0 : 1;
+		static void ComputePushDelta (StackBehaviour push_behaviour, ref int stack_size)
+		{
+			switch (push_behaviour) {
+			case StackBehaviour.Push1:
+			case StackBehaviour.Pushi:
+			case StackBehaviour.Pushi8:
+			case StackBehaviour.Pushr4:
+			case StackBehaviour.Pushr8:
+			case StackBehaviour.Pushref:
+				stack_size++;
+				break;
+			case StackBehaviour.Push1_push1:
+				stack_size += 2;
+				break;
+			}
+		}
 
-				if (code.FlowControl != FlowControl.Call)
-					break;
+		void WriteExceptionHandlers ()
+		{
+			Align (4);
+
+			var handlers = body.ExceptionHandlers;
+
+			if (handlers.Count < 0x15 && !RequiresFatSection (handlers))
+				WriteSmallSection (handlers);
+			else
+				WriteFatSection (handlers);
+		}
+
+		static bool RequiresFatSection (Collection<ExceptionHandler> handlers)
+		{
+			for (int i = 0; i < handlers.Count; i++) {
+				var handler = handlers [i];
+
+				if (IsFatRange (handler.TryStart, handler.TryEnd))
+					return true;
+
+				if (IsFatRange (handler.HandlerStart, handler.HandlerEnd))
+					return true;
 
-				IMethodSignature method = (IMethodSignature) instruction.Operand;
-				int count = method.HasParameters ? method.Parameters.Count : 0;
-				if (method.HasThis && code != OpCodes.Newobj)
-					++count;
+				if (handler.HandlerType == ExceptionHandlerType.Filter
+					&& IsFatRange (handler.FilterStart, handler.FilterEnd))
+					return true;
+			}
+
+			return false;
+		}
+
+		static bool IsFatRange (Instruction start, Instruction end)
+		{
+			if (end == null)
+				return true;
+
+			return end.Offset - start.Offset > 255 || start.Offset > 65535;
+		}
+
+		void WriteSmallSection (Collection<ExceptionHandler> handlers)
+		{
+			const byte eh_table = 0x1;
+
+			WriteByte (eh_table);
+			WriteByte ((byte) (handlers.Count * 12 + 4));
+			WriteBytes (2);
+
+			WriteExceptionHandlers (
+				handlers,
+				i => WriteUInt16 ((ushort) i),
+				i => WriteByte ((byte) i));
+		}
+
+		void WriteFatSection (Collection<ExceptionHandler> handlers)
+		{
+			const byte eh_table = 0x1;
+			const byte fat_format = 0x40;
+
+			WriteByte (eh_table | fat_format);
+
+			int size = handlers.Count * 24 + 4;
+			WriteByte ((byte) (size & 0xff));
+			WriteByte ((byte) ((size >> 8) & 0xff));
+			WriteByte ((byte) ((size >> 16) & 0xff));
+
+			WriteExceptionHandlers (handlers, WriteInt32, WriteInt32);
+		}
+
+		void WriteExceptionHandlers (Collection<ExceptionHandler> handlers, Action<int> write_entry, Action<int> write_length)
+		{
+			for (int i = 0; i < handlers.Count; i++) {
+				var handler = handlers [i];
+
+				write_entry ((int) handler.HandlerType);
+
+				write_entry (handler.TryStart.Offset);
+				write_length (GetTargetOffset (handler.TryEnd) - handler.TryStart.Offset);
+
+				write_entry (handler.HandlerStart.Offset);
+				write_length (GetTargetOffset (handler.HandlerEnd) - handler.HandlerStart.Offset);
+
+				WriteExceptionHandlerSpecific (handler);
+			}
+		}
 
-				return count;
+		void WriteExceptionHandlerSpecific (ExceptionHandler handler)
+		{
+			switch (handler.HandlerType) {
+			case ExceptionHandlerType.Catch:
+				WriteMetadataToken (metadata.LookupToken (handler.CatchType));
+				break;
+			case ExceptionHandlerType.Filter:
+				WriteInt32 (handler.FilterStart.Offset);
+				break;
+			default:
+				WriteInt32 (0);
+				break;
 			}
+		}
+
+		public MetadataToken GetStandAloneSignature (Collection<VariableDefinition> variables)
+		{
+			var signature = metadata.GetLocalVariableBlobIndex (variables);
 
-			throw new NotSupportedException ();
+			return GetStandAloneSignatureToken (signature);
 		}
 
-		static bool IsVoid (TypeReference type)
+		public MetadataToken GetStandAloneSignature (CallSite call_site)
 		{
-			return type.FullName == Constants.Void;
+			var signature = metadata.GetCallSiteBlobIndex (call_site);
+			var token = GetStandAloneSignatureToken (signature);
+			call_site.MetadataToken = token;
+			return token;
+		}
+
+		MetadataToken GetStandAloneSignatureToken (uint signature)
+		{
+			MetadataToken token;
+			if (standalone_signatures.TryGetValue (signature, out token))
+				return token;
+
+			token = new MetadataToken (TokenType.Signature, metadata.AddStandAloneSignature (signature));
+			standalone_signatures.Add (signature, token);
+			return token;
+		}
+
+		RVA BeginMethod ()
+		{
+			return current;
+		}
+
+		void WriteMetadataToken (MetadataToken token)
+		{
+			WriteUInt32 (token.ToUInt32 ());
+		}
+
+		void Align (int align)
+		{
+			align--;
+			WriteBytes (((position + align) & ~align) - position);
+		}
+
+		void EndMethod ()
+		{
+			current = (RVA) (code_base + position);
 		}
 	}
 }
+
+#endif
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/Document.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/Document.cs
index 1b40c44..e46d2c1 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/Document.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/Document.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2006 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,55 +26,86 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System;
+
 namespace Mono.Cecil.Cil {
 
-	using System;
+	public enum DocumentType {
+		Other,
+		Text,
+	}
+
+	public enum DocumentHashAlgorithm {
+		None,
+		MD5,
+		SHA1,
+	}
+
+	public enum DocumentLanguage {
+		Other,
+		C,
+		Cpp,
+		CSharp,
+		Basic,
+		Java,
+		Cobol,
+		Pascal,
+		Cil,
+		JScript,
+		Smc,
+		MCpp,
+	}
+
+	public enum DocumentLanguageVendor {
+		Other,
+		Microsoft,
+	}
 
-	public class Document {
+	public sealed class Document {
 
-		string m_url;
+		string url;
 
-		Guid m_type;
-		DocumentHashAlgorithm m_hashAlgorithm;
-		Guid m_language;
-		Guid m_languageVendor;
+		byte type;
+		byte hash_algorithm;
+		byte language;
+		byte language_vendor;
 
-		byte [] m_hash;
+		byte [] hash;
 
 		public string Url {
-			get { return m_url; }
-			set { m_url = value; }
+			get { return url; }
+			set { url = value; }
 		}
 
-		public Guid Type {
-			get { return m_type; }
-			set { m_type = value; }
+		public DocumentType Type {
+			get { return (DocumentType) type; }
+			set { type = (byte) value; }
 		}
 
 		public DocumentHashAlgorithm HashAlgorithm {
-			get { return m_hashAlgorithm; }
-			set { m_hashAlgorithm = value; }
+			get { return (DocumentHashAlgorithm) hash_algorithm; }
+			set { hash_algorithm = (byte) value; }
 		}
 
-		public Guid Language {
-			get { return m_language; }
-			set { m_language = value; }
+		public DocumentLanguage Language {
+			get { return (DocumentLanguage) language; }
+			set { language = (byte) value; }
 		}
 
-		public Guid LanguageVendor {
-			get { return m_languageVendor; }
-			set { m_languageVendor = value; }
+		public DocumentLanguageVendor LanguageVendor {
+			get { return (DocumentLanguageVendor) language_vendor; }
+			set { language_vendor = (byte) value; }
 		}
 
 		public byte [] Hash {
-			get { return m_hash; }
-			set { m_hash = value; }
+			get { return hash; }
+			set { hash = value; }
 		}
 
 		public Document (string url)
 		{
-			m_url = url;
-			m_hash = new byte [0];
+			this.url = url;
+			this.hash = Empty<byte>.Array;
 		}
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/DocumentHashAlgorithm.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/DocumentHashAlgorithm.cs
deleted file mode 100644
index cd5791f..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/DocumentHashAlgorithm.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-//
-// DocumentHashAlgorithm.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2006 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Cil {
-
-	public enum DocumentHashAlgorithm {
-		[Guid (0x00000000, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00)] None,
-		[Guid (0x406ea660, 0x64cf, 0x4c82, 0xb6, 0xf0, 0x42, 0xd4, 0x81, 0x72, 0xa7, 0x99)] MD5,
-		[Guid (0xff1816ec, 0xaa5e, 0x4d10, 0x87, 0xf7, 0x6f, 0x49, 0x63, 0x83, 0x34, 0x60)] SHA1
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/DocumentLanguage.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/DocumentLanguage.cs
deleted file mode 100644
index cc7defc..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/DocumentLanguage.cs
+++ /dev/null
@@ -1,62 +0,0 @@
-//
-// DocumentLanguage.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2006 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Cil {
-
-	using System;
-
-	public abstract class DocumentLanguage {
-#if CF_2_0
-		public static readonly Guid None = new Guid ("00000000-0000-0000-0000-000000000000");
-		public static readonly Guid C = new Guid ("63a08714-fc37-11d2-904c-00c04fa302a1");
-		public static readonly Guid Cpp = new Guid ("3a12d0b7-c26c-11d0-b442-00a0244a1dd2");
-		public static readonly Guid CSharp = new Guid ("3f5162f8-07c6-11d3-9053-00c04fa302a1");
-		public static readonly Guid Basic = new Guid ("3a12d0b8-c26c-11d0-b442-00a0244a1dd2");
-		public static readonly Guid Java = new Guid ("3a12d0b4-c26c-11d0-b442-00a0244a1dd2");
-		public static readonly Guid Cobol = new Guid ("af046cd1-d0e1-11d2-977c-00a0c9b4d50c");
-		public static readonly Guid Pascal = new Guid ("af046cd2-d0e1-11d2-977c-00a0c9b4d50c");
-		public static readonly Guid CIL = new Guid ("af046cd3-d0e1-11d2-977c-00a0c9b4d50c");
-		public static readonly Guid JScript = new Guid ("3a12d0b6-c26c-11d0-b442-00a0244a1dd2");
-		public static readonly Guid SMC = new Guid ("0d9b9f7b-6611-11d3-bd2a-0000f80849bd");
-		public static readonly Guid MCpp = new Guid ("4b35fde8-07c6-11d3-9053-00c04fa302a1");
-#else
-		public static readonly Guid None = new Guid (0x00000000, 0x0000, 0x0000, 0x00, 0x00, 0x0, 0x00, 0x00, 0x00, 0x00, 0x00);
-		public static readonly Guid C = new Guid (0x63a08714, 0xfc37, 0x11d2, 0x90, 0x4c, 0x0, 0xc0, 0x4f, 0xa3, 0x02, 0xa1);
-		public static readonly Guid Cpp = new Guid (0x3a12d0b7, 0xc26c, 0x11d0, 0xb4, 0x42, 0x0, 0xa0, 0x24, 0x4a, 0x1d, 0xd2);
-		public static readonly Guid CSharp = new Guid (0x3f5162f8, 0x07c6, 0x11d3, 0x90, 0x53, 0x0, 0xc0, 0x4f, 0xa3, 0x02, 0xa1);
-		public static readonly Guid Basic = new Guid (0x3a12d0b8, 0xc26c, 0x11d0, 0xb4, 0x42, 0x0, 0xa0, 0x24, 0x4a, 0x1d, 0xd2);
-		public static readonly Guid Java = new Guid (0x3a12d0b4, 0xc26c, 0x11d0, 0xb4, 0x42, 0x0, 0xa0, 0x24, 0x4a, 0x1d, 0xd2);
-		public static readonly Guid Cobol = new Guid (0xaf046cd1, 0xd0e1, 0x11d2, 0x97, 0x7c, 0x0, 0xa0, 0xc9, 0xb4, 0xd5, 0xc);
-		public static readonly Guid Pascal = new Guid (0xaf046cd2, 0xd0e1, 0x11d2, 0x97, 0x7c, 0x0, 0xa0, 0xc9, 0xb4, 0xd5, 0xc);
-		public static readonly Guid CIL = new Guid (0xaf046cd3, 0xd0e1, 0x11d2, 0x97, 0x7c, 0x0, 0xa0, 0xc9, 0xb4, 0xd5, 0xc);
-		public static readonly Guid JScript = new Guid (0x3a12d0b6, 0xc26c, 0x11d0, 0xb4, 0x42, 0x0, 0xa0, 0x24, 0x4a, 0x1d, 0xd2);
-		public static readonly Guid SMC = new Guid (0xd9b9f7b, 0x6611, 0x11d3, 0xbd, 0x2a, 0x0, 0x0, 0xf8, 0x8, 0x49, 0xbd);
-		public static readonly Guid MCpp = new Guid (0x4b35fde8, 0x07c6, 0x11d3, 0x90, 0x53, 0x0, 0xc0, 0x4f, 0xa3, 0x02, 0xa1);
-#endif
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/DocumentLanguageVendor.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/DocumentLanguageVendor.cs
deleted file mode 100644
index d070abb..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/DocumentLanguageVendor.cs
+++ /dev/null
@@ -1,42 +0,0 @@
-//
-// DocumentLanguageVendor.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2006 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Cil {
-
-	using System;
-
-	public abstract class DocumentLanguageVendor {
-#if CF_2_0
-		public static readonly Guid Other = new Guid ("00000000-0000-0000-0000-000000000000");
-		public static readonly Guid Microsoft = new Guid ("994b45c4-e6e9-11d2-903f-00c04fa302a1");
-#else
-		public static readonly Guid Other = new Guid (0x00000000, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00);
-		public static readonly Guid Microsoft = new Guid (0x994b45c4, 0xe6e9, 0x11d2, 0x90, 0x3f, 0x00, 0xc0, 0x4f, 0xa3, 0x02, 0xa1);
-#endif
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/DocumentType.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/DocumentType.cs
deleted file mode 100644
index 9df7764..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/DocumentType.cs
+++ /dev/null
@@ -1,38 +0,0 @@
-//
-// DocumentType.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2006 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Cil {
-
-	using System;
-
-	public abstract class DocumentType {
-
-		public static readonly Guid Other = new Guid (0x00000000, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00);
-		public static readonly Guid Text = new Guid (0x5a869d0b, 0x6611, 0x11d3, 0xbd, 0x2a, 0x00, 0x00, 0xf8, 0x08, 0x49, 0xbd);
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/ExceptionHandler.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/ExceptionHandler.cs
index d1ee7bf..a76f8f3 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/ExceptionHandler.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/ExceptionHandler.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -28,68 +28,68 @@
 
 namespace Mono.Cecil.Cil {
 
-	using Mono.Cecil;
+	public enum ExceptionHandlerType {
+		Catch = 0,
+		Filter = 1,
+		Finally = 2,
+		Fault = 4,
+	}
 
-	public sealed class ExceptionHandler : ICodeVisitable {
+	public sealed class ExceptionHandler {
 
-		Instruction m_tryStart;
-		Instruction m_tryEnd;
-		Instruction m_filterStart;
-		Instruction m_filterEnd;
-		Instruction m_handlerStart;
-		Instruction m_handlerEnd;
+		Instruction try_start;
+		Instruction try_end;
+		Instruction filter_start;
+		Instruction filter_end;
+		Instruction handler_start;
+		Instruction handler_end;
 
-		TypeReference m_catchType;
-		ExceptionHandlerType m_type;
+		TypeReference catch_type;
+		ExceptionHandlerType handler_type;
 
 		public Instruction TryStart {
-			get { return m_tryStart; }
-			set { m_tryStart = value; }
+			get { return try_start; }
+			set { try_start = value; }
 		}
 
 		public Instruction TryEnd {
-			get { return m_tryEnd; }
-			set { m_tryEnd = value; }
+			get { return try_end; }
+			set { try_end = value; }
 		}
 
 		public Instruction FilterStart {
-			get { return m_filterStart; }
-			set { m_filterStart = value; }
+			get { return filter_start; }
+			set { filter_start = value; }
 		}
 
 		public Instruction FilterEnd {
-			get { return m_filterEnd; }
-			set { m_filterEnd = value; }
+			get { return filter_end; }
+			set { filter_end = value; }
 		}
 
 		public Instruction HandlerStart {
-			get { return m_handlerStart; }
-			set { m_handlerStart = value; }
+			get { return handler_start; }
+			set { handler_start = value; }
 		}
 
 		public Instruction HandlerEnd {
-			get { return m_handlerEnd; }
-			set { m_handlerEnd = value; }
+			get { return handler_end; }
+			set { handler_end = value; }
 		}
 
 		public TypeReference CatchType {
-			get { return m_catchType; }
-			set { m_catchType = value; }
-		}
-
-		public ExceptionHandlerType Type {
-			get { return m_type; }
-			set { m_type = value; }
+			get { return catch_type; }
+			set { catch_type = value; }
 		}
 
-		public ExceptionHandler (ExceptionHandlerType type)
-		{
-			m_type = type;
+		public ExceptionHandlerType HandlerType {
+			get { return handler_type; }
+			set { handler_type = value; }
 		}
 
-		public void Accept (ICodeVisitor visitor)
+		public ExceptionHandler (ExceptionHandlerType handlerType)
 		{
-			visitor.VisitExceptionHandler (this);
+			this.handler_type = handlerType;
 		}
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/ExceptionHandlerCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/ExceptionHandlerCollection.cs
deleted file mode 100644
index dd2b11a..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/ExceptionHandlerCollection.cs
+++ /dev/null
@@ -1,93 +0,0 @@
-//
-// ExceptionHandlerCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Wed Sep 27 12:46:53 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Cil {
-
-	using System;
-	using System.Collections;
-
-	using Mono.Cecil.Cil;
-
-	public sealed class ExceptionHandlerCollection : CollectionBase, ICodeVisitable {
-
-		MethodBody m_container;
-
-		public ExceptionHandler this [int index] {
-			get { return List [index] as ExceptionHandler; }
-			set { List [index] = value; }
-		}
-
-		public MethodBody Container {
-			get { return m_container; }
-		}
-
-		public ExceptionHandlerCollection (MethodBody container)
-		{
-			m_container = container;
-		}
-
-		public void Add (ExceptionHandler value)
-		{
-			List.Add (value);
-		}
-
-		public bool Contains (ExceptionHandler value)
-		{
-			return List.Contains (value);
-		}
-
-		public int IndexOf (ExceptionHandler value)
-		{
-			return List.IndexOf (value);
-		}
-
-		public void Insert (int index, ExceptionHandler value)
-		{
-			List.Insert (index, value);
-		}
-
-		public void Remove (ExceptionHandler value)
-		{
-			List.Remove (value);
-		}
-
-		protected override void OnValidate (object o)
-		{
-			if (! (o is ExceptionHandler))
-				throw new ArgumentException ("Must be of type " + typeof (ExceptionHandler).FullName);
-		}
-
-		public void Accept (ICodeVisitor visitor)
-		{
-			visitor.VisitExceptionHandlerCollection (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/ExceptionHandlerType.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/ExceptionHandlerType.cs
deleted file mode 100644
index 28b8b7c..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/ExceptionHandlerType.cs
+++ /dev/null
@@ -1,37 +0,0 @@
-//
-// ExceptionHandlerType.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Cil {
-
-	public enum ExceptionHandlerType {
-		Catch = 0x0000,
-		Filter = 0x0001,
-		Finally = 0x0002,
-		Fault = 0x0004
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/FlowControl.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/FlowControl.cs
deleted file mode 100644
index e08104d..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/FlowControl.cs
+++ /dev/null
@@ -1,42 +0,0 @@
-//
-// FlowControl.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Cil {
-
-	public enum FlowControl {
-		Branch,
-		Break,
-		Call,
-		Cond_Branch,
-		Meta,
-		Next,
-		Phi,
-		Return,
-		Throw
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/GuidAttribute.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/GuidAttribute.cs
deleted file mode 100644
index 7755dee..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/GuidAttribute.cs
+++ /dev/null
@@ -1,91 +0,0 @@
-//
-// GuidAttribute.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2006 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Cil {
-
-	using System;
-	using System.Reflection;
-
-	[AttributeUsage (AttributeTargets.Field)]
-	public sealed class GuidAttribute : Attribute {
-
-		private Guid m_guid;
-
-		public Guid Guid {
-			get { return m_guid; }
-		}
-
-		GuidAttribute ()
-		{
-			m_guid = new Guid ();
-		}
-
-		public GuidAttribute (
-			uint a,
-			ushort b,
-			ushort c,
-			byte d,
-			byte e,
-			byte f,
-			byte g,
-			byte h,
-			byte i,
-			byte j,
-			byte k)
-		{
-			m_guid = new Guid ((int) a, (short) b, (short) c, d, e, f, g, h, i, j, k);
-		}
-
-		public static int GetValueFromGuid (Guid id, Type enumeration)
-		{
-			foreach (FieldInfo fi in enumeration.GetFields (BindingFlags.Static | BindingFlags.Public))
-				if (id == GetGuidAttribute (fi).Guid)
-					return (int) fi.GetValue (null);
-
-			return -1;
-		}
-
-		public static Guid GetGuidFromValue (int value, Type enumeration)
-		{
-			foreach (FieldInfo fi in enumeration.GetFields (BindingFlags.Static | BindingFlags.Public))
-				if (value == (int) fi.GetValue (null))
-					return GetGuidAttribute (fi).Guid;
-
-			return new Guid ();
-		}
-
-		static GuidAttribute GetGuidAttribute (FieldInfo fi)
-		{
-			GuidAttribute [] attributes = fi.GetCustomAttributes (typeof (GuidAttribute), false) as GuidAttribute [];
-			if (attributes == null || attributes.Length != 1)
-				return new GuidAttribute ();
-
-			return attributes [0];
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/ICodeVisitable.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/ICodeVisitable.cs
deleted file mode 100644
index 91571d8..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/ICodeVisitable.cs
+++ /dev/null
@@ -1,34 +0,0 @@
-//
-// ICodeVisitable.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Cil {
-
-	public interface ICodeVisitable {
-		void Accept (ICodeVisitor visitor);
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/ICodeVisitor.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/ICodeVisitor.cs
deleted file mode 100644
index c02335e..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/ICodeVisitor.cs
+++ /dev/null
@@ -1,45 +0,0 @@
-//
-// ICodeVisitor.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Cil {
-
-	public interface ICodeVisitor {
-
-		void VisitMethodBody (MethodBody body);
-		void VisitInstructionCollection (InstructionCollection instructions);
-		void VisitInstruction (Instruction instr);
-		void VisitExceptionHandlerCollection (ExceptionHandlerCollection seh);
-		void VisitExceptionHandler (ExceptionHandler eh);
-		void VisitVariableDefinitionCollection (VariableDefinitionCollection variables);
-		void VisitVariableDefinition (VariableDefinition var);
-		void VisitScopeCollection (ScopeCollection scopes);
-		void VisitScope (Scope scope);
-
-		void TerminateMethodBody (MethodBody body);
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/ILProcessor.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/ILProcessor.cs
new file mode 100644
index 0000000..1300b3e
--- /dev/null
+++ b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/ILProcessor.cs
@@ -0,0 +1,278 @@
+//
+// ILProcessor.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+using Mono.Collections.Generic;
+
+namespace Mono.Cecil.Cil {
+
+	public sealed class ILProcessor {
+
+		readonly MethodBody body;
+		readonly Collection<Instruction> instructions;
+
+		public MethodBody Body {
+			get { return body; }
+		}
+
+		internal ILProcessor (MethodBody body)
+		{
+			this.body = body;
+			this.instructions = body.Instructions;
+		}
+
+		public Instruction Create (OpCode opcode)
+		{
+			return Instruction.Create (opcode);
+		}
+
+		public Instruction Create (OpCode opcode, TypeReference type)
+		{
+			return Instruction.Create (opcode, type);
+		}
+
+		public Instruction Create (OpCode opcode, CallSite site)
+		{
+			return Instruction.Create (opcode, site);
+		}
+
+		public Instruction Create (OpCode opcode, MethodReference method)
+		{
+			return Instruction.Create (opcode, method);
+		}
+
+		public Instruction Create (OpCode opcode, FieldReference field)
+		{
+			return Instruction.Create (opcode, field);
+		}
+
+		public Instruction Create (OpCode opcode, string value)
+		{
+			return Instruction.Create (opcode, value);
+		}
+
+		public Instruction Create (OpCode opcode, sbyte value)
+		{
+			return Instruction.Create (opcode, value);
+		}
+
+		public Instruction Create (OpCode opcode, byte value)
+		{
+			if (opcode.OperandType == OperandType.ShortInlineVar)
+				return Instruction.Create (opcode, body.Variables [value]);
+
+			if (opcode.OperandType == OperandType.ShortInlineArg)
+				return Instruction.Create (opcode, body.GetParameter (value));
+
+			return Instruction.Create (opcode, value);
+		}
+
+		public Instruction Create (OpCode opcode, int value)
+		{
+			if (opcode.OperandType == OperandType.InlineVar)
+				return Instruction.Create (opcode, body.Variables [value]);
+
+			if (opcode.OperandType == OperandType.InlineArg)
+				return Instruction.Create (opcode, body.GetParameter (value));
+
+			return Instruction.Create (opcode, value);
+		}
+
+		public Instruction Create (OpCode opcode, long value)
+		{
+			return Instruction.Create (opcode, value);
+		}
+
+		public Instruction Create (OpCode opcode, float value)
+		{
+			return Instruction.Create (opcode, value);
+		}
+
+		public Instruction Create (OpCode opcode, double value)
+		{
+			return Instruction.Create (opcode, value);
+		}
+
+		public Instruction Create (OpCode opcode, Instruction target)
+		{
+			return Instruction.Create (opcode, target);
+		}
+
+		public Instruction Create (OpCode opcode, Instruction [] targets)
+		{
+			return Instruction.Create (opcode, targets);
+		}
+
+		public Instruction Create (OpCode opcode, VariableDefinition variable)
+		{
+			return Instruction.Create (opcode, variable);
+		}
+
+		public Instruction Create (OpCode opcode, ParameterDefinition parameter)
+		{
+			return Instruction.Create (opcode, parameter);
+		}
+
+		public void Emit (OpCode opcode)
+		{
+			Append (Create (opcode));
+		}
+
+		public void Emit (OpCode opcode, TypeReference type)
+		{
+			Append (Create (opcode, type));
+		}
+
+		public void Emit (OpCode opcode, MethodReference method)
+		{
+			Append (Create (opcode, method));
+		}
+
+		public void Emit (OpCode opcode, CallSite site)
+		{
+			Append (Create (opcode, site));
+		}
+
+		public void Emit (OpCode opcode, FieldReference field)
+		{
+			Append (Create (opcode, field));
+		}
+
+		public void Emit (OpCode opcode, string value)
+		{
+			Append (Create (opcode, value));
+		}
+
+		public void Emit (OpCode opcode, byte value)
+		{
+			Append (Create (opcode, value));
+		}
+
+		public void Emit (OpCode opcode, sbyte value)
+		{
+			Append (Create (opcode, value));
+		}
+
+		public void Emit (OpCode opcode, int value)
+		{
+			Append (Create (opcode, value));
+		}
+
+		public void Emit (OpCode opcode, long value)
+		{
+			Append (Create (opcode, value));
+		}
+
+		public void Emit (OpCode opcode, float value)
+		{
+			Append (Create (opcode, value));
+		}
+
+		public void Emit (OpCode opcode, double value)
+		{
+			Append (Create (opcode, value));
+		}
+
+		public void Emit (OpCode opcode, Instruction target)
+		{
+			Append (Create (opcode, target));
+		}
+
+		public void Emit (OpCode opcode, Instruction [] targets)
+		{
+			Append (Create (opcode, targets));
+		}
+
+		public void Emit (OpCode opcode, VariableDefinition variable)
+		{
+			Append (Create (opcode, variable));
+		}
+
+		public void Emit (OpCode opcode, ParameterDefinition parameter)
+		{
+			Append (Create (opcode, parameter));
+		}
+
+		public void InsertBefore (Instruction target, Instruction instruction)
+		{
+			if (target == null)
+				throw new ArgumentNullException ("target");
+			if (instruction == null)
+				throw new ArgumentNullException ("instruction");
+
+			var index = instructions.IndexOf (target);
+			if (index == -1)
+				throw new ArgumentOutOfRangeException ("target");
+
+			instructions.Insert (index, instruction);
+		}
+
+		public void InsertAfter (Instruction target, Instruction instruction)
+		{
+			if (target == null)
+				throw new ArgumentNullException ("target");
+			if (instruction == null)
+				throw new ArgumentNullException ("instruction");
+
+			var index = instructions.IndexOf (target);
+			if (index == -1)
+				throw new ArgumentOutOfRangeException ("target");
+
+			instructions.Insert (index + 1, instruction);
+		}
+
+		public void Append (Instruction instruction)
+		{
+			if (instruction == null)
+				throw new ArgumentNullException ("instruction");
+
+			instructions.Add (instruction);
+		}
+
+		public void Replace (Instruction target, Instruction instruction)
+		{
+			if (target == null)
+				throw new ArgumentNullException ("target");
+			if (instruction == null)
+				throw new ArgumentNullException ("instruction");
+
+			InsertAfter (target, instruction);
+			Remove (target);
+		}
+
+		public void Remove (Instruction instruction)
+		{
+			if (instruction == null)
+				throw new ArgumentNullException ("instruction");
+
+			if (!instructions.Remove (instruction))
+				throw new ArgumentOutOfRangeException ("instruction");
+		}
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/IScopeProvider.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/IScopeProvider.cs
deleted file mode 100644
index f7db241..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/IScopeProvider.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-//
-// Document.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2006 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Cil {
-
-	public interface IScopeProvider {
-
-		ScopeCollection Scopes { get; }
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/ISymbolReader.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/ISymbolReader.cs
deleted file mode 100644
index 646e62e..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/ISymbolReader.cs
+++ /dev/null
@@ -1,38 +0,0 @@
-//
-// ISymbolReader.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2006 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-
-namespace Mono.Cecil.Cil {
-
-	public interface ISymbolReader : IDisposable {
-
-		void Read (MethodBody body, IDictionary instructions);
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/ISymbolStoreFactory.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/ISymbolStoreFactory.cs
deleted file mode 100644
index 945c7a0..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/ISymbolStoreFactory.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-//
-// ISymbolStoreFactory.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2006 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Cil {
-
-	public interface ISymbolStoreFactory {
-
-		ISymbolReader CreateReader (ModuleDefinition module, string assemblyFileName);
-		ISymbolWriter CreateWriter (ModuleDefinition module, string assemblyFileName);
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/ISymbolWriter.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/ISymbolWriter.cs
deleted file mode 100644
index 3e28bf0..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/ISymbolWriter.cs
+++ /dev/null
@@ -1,37 +0,0 @@
-//
-// ISymbolWriter.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2006 - 2007 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Cil {
-
-	using System;
-
-	public interface ISymbolWriter : IDisposable {
-
-		void Write (MethodBody body);
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/IVariableDefinitionProvider.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/IVariableDefinitionProvider.cs
deleted file mode 100644
index 9f64797..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/IVariableDefinitionProvider.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-//
-// IVariableDefinitionProvider.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2006 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Cil {
-
-	public interface IVariableDefinitionProvider {
-
-		VariableDefinitionCollection Variables { get; }
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/Instruction.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/Instruction.cs
index 7e9a5de..e8d36c4 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/Instruction.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/Instruction.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,80 +26,74 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System;
+using System.Text;
+
 namespace Mono.Cecil.Cil {
 
-	public sealed class Instruction : ICodeVisitable {
+	public sealed class Instruction {
 
-		int m_offset;
-		OpCode m_opCode;
-		object m_operand;
+		internal int offset;
+		internal OpCode opcode;
+		internal object operand;
 
-		Instruction m_previous;
-		Instruction m_next;
+		internal Instruction previous;
+		internal Instruction next;
 
-		SequencePoint m_sequencePoint;
+		SequencePoint sequence_point;
 
 		public int Offset {
-			get { return m_offset; }
-			set { m_offset = value; }
+			get { return offset; }
+			set { offset = value; }
 		}
 
 		public OpCode OpCode {
-			get { return m_opCode; }
-			set { m_opCode = value; }
+			get { return opcode; }
+			set { opcode = value; }
 		}
 
 		public object Operand {
-			get { return m_operand; }
-			set { m_operand = value; }
+			get { return operand; }
+			set { operand = value; }
 		}
 
 		public Instruction Previous {
-			get { return m_previous; }
-			set { m_previous = value; }
+			get { return previous; }
+			set { previous = value; }
 		}
 
 		public Instruction Next {
-			get { return m_next; }
-			set { m_next = value; }
+			get { return next; }
+			set { next = value; }
 		}
 
 		public SequencePoint SequencePoint {
-			get { return m_sequencePoint; }
-			set { m_sequencePoint = value; }
-		}
-
-		internal Instruction (int offset, OpCode opCode, object operand) : this (offset, opCode)
-		{
-			m_operand = operand;
+			get { return sequence_point; }
+			set { sequence_point = value; }
 		}
 
 		internal Instruction (int offset, OpCode opCode)
 		{
-			m_offset = offset;
-			m_opCode = opCode;
-		}
-
-		internal Instruction (OpCode opCode, object operand) : this (0, opCode, operand)
-		{
+			this.offset = offset;
+			this.opcode = opCode;
 		}
 
-		internal Instruction (OpCode opCode) : this (0, opCode)
+		internal Instruction (OpCode opcode, object operand)
 		{
+			this.opcode = opcode;
+			this.operand = operand;
 		}
 
 		public int GetSize ()
 		{
-			int size = m_opCode.Size;
+			int size = opcode.Size;
 
-			switch (m_opCode.OperandType) {
+			switch (opcode.OperandType) {
 			case OperandType.InlineSwitch:
-				size += (1 + ((Instruction []) m_operand).Length) * 4;
-				break;
+				return size + (1 + ((Instruction []) operand).Length) * 4;
 			case OperandType.InlineI8:
 			case OperandType.InlineR:
-				size += 8;
-				break;
+				return size + 8;
 			case OperandType.InlineBrTarget:
 			case OperandType.InlineField:
 			case OperandType.InlineI:
@@ -108,26 +102,220 @@ namespace Mono.Cecil.Cil {
 			case OperandType.InlineTok:
 			case OperandType.InlineType:
 			case OperandType.ShortInlineR:
-				size += 4;
-				break;
-			case OperandType.InlineParam:
+			case OperandType.InlineSig:
+				return size + 4;
+			case OperandType.InlineArg:
 			case OperandType.InlineVar:
-				size += 2;
-				break;
+				return size + 2;
 			case OperandType.ShortInlineBrTarget:
 			case OperandType.ShortInlineI:
-			case OperandType.ShortInlineParam:
+			case OperandType.ShortInlineArg:
 			case OperandType.ShortInlineVar:
-				size += 1;
+				return size + 1;
+			default:
+				return size;
+			}
+		}
+
+		public override string ToString ()
+		{
+			var instruction = new StringBuilder ();
+
+			AppendLabel (instruction, this);
+			instruction.Append (':');
+			instruction.Append (' ');
+			instruction.Append (opcode.Name);
+
+			if (operand == null)
+				return instruction.ToString ();
+
+			instruction.Append (' ');
+
+			switch (opcode.OperandType) {
+			case OperandType.ShortInlineBrTarget:
+			case OperandType.InlineBrTarget:
+				AppendLabel (instruction, (Instruction) operand);
+				break;
+			case OperandType.InlineSwitch:
+				var labels = (Instruction []) operand;
+				for (int i = 0; i < labels.Length; i++) {
+					if (i > 0)
+						instruction.Append (',');
+
+					AppendLabel (instruction, labels [i]);
+				}
+				break;
+			case OperandType.InlineString:
+				instruction.Append ('\"');
+				instruction.Append (operand);
+				instruction.Append ('\"');
+				break;
+			default:
+				instruction.Append (operand);
 				break;
 			}
 
-			return size;
+			return instruction.ToString ();
+		}
+
+		static void AppendLabel (StringBuilder builder, Instruction instruction)
+		{
+			builder.Append ("IL_");
+			builder.Append (instruction.offset.ToString ("x4"));
+		}
+
+		public static Instruction Create (OpCode opcode)
+		{
+			if (opcode.OperandType != OperandType.InlineNone)
+				throw new ArgumentException ("opcode");
+
+			return new Instruction (opcode, null);
+		}
+
+		public static Instruction Create (OpCode opcode, TypeReference type)
+		{
+			if (type == null)
+				throw new ArgumentNullException ("type");
+			if (opcode.OperandType != OperandType.InlineType &&
+				opcode.OperandType != OperandType.InlineTok)
+				throw new ArgumentException ("opcode");
+
+			return new Instruction (opcode, type);
+		}
+
+		public static Instruction Create (OpCode opcode, CallSite site)
+		{
+			if (site == null)
+				throw new ArgumentNullException ("site");
+			if (opcode.Code != Code.Calli)
+				throw new ArgumentException ("code");
+
+			return new Instruction (opcode, site);
+		}
+
+		public static Instruction Create (OpCode opcode, MethodReference method)
+		{
+			if (method == null)
+				throw new ArgumentNullException ("method");
+			if (opcode.OperandType != OperandType.InlineMethod &&
+				opcode.OperandType != OperandType.InlineTok)
+				throw new ArgumentException ("opcode");
+
+			return new Instruction (opcode, method);
 		}
 
-		public void Accept (ICodeVisitor visitor)
+		public static Instruction Create (OpCode opcode, FieldReference field)
 		{
-			visitor.VisitInstruction (this);
+			if (field == null)
+				throw new ArgumentNullException ("field");
+			if (opcode.OperandType != OperandType.InlineField &&
+				opcode.OperandType != OperandType.InlineTok)
+				throw new ArgumentException ("opcode");
+
+			return new Instruction (opcode, field);
+		}
+
+		public static Instruction Create (OpCode opcode, string value)
+		{
+			if (value == null)
+				throw new ArgumentNullException ("value");
+			if (opcode.OperandType != OperandType.InlineString)
+				throw new ArgumentException ("opcode");
+
+			return new Instruction (opcode, value);
+		}
+
+		public static Instruction Create (OpCode opcode, sbyte value)
+		{
+			if (opcode.OperandType != OperandType.ShortInlineI &&
+				opcode != OpCodes.Ldc_I4_S)
+				throw new ArgumentException ("opcode");
+
+			return new Instruction (opcode, value);
+		}
+
+		public static Instruction Create (OpCode opcode, byte value)
+		{
+			if (opcode.OperandType != OperandType.ShortInlineI ||
+				opcode == OpCodes.Ldc_I4_S)
+				throw new ArgumentException ("opcode");
+
+			return new Instruction (opcode, value);
+		}
+
+		public static Instruction Create (OpCode opcode, int value)
+		{
+			if (opcode.OperandType != OperandType.InlineI)
+				throw new ArgumentException ("opcode");
+
+			return new Instruction (opcode, value);
+		}
+
+		public static Instruction Create (OpCode opcode, long value)
+		{
+			if (opcode.OperandType != OperandType.InlineI8)
+				throw new ArgumentException ("opcode");
+
+			return new Instruction (opcode, value);
+		}
+
+		public static Instruction Create (OpCode opcode, float value)
+		{
+			if (opcode.OperandType != OperandType.ShortInlineR)
+				throw new ArgumentException ("opcode");
+
+			return new Instruction (opcode, value);
+		}
+
+		public static Instruction Create (OpCode opcode, double value)
+		{
+			if (opcode.OperandType != OperandType.InlineR)
+				throw new ArgumentException ("opcode");
+
+			return new Instruction (opcode, value);
+		}
+
+		public static Instruction Create (OpCode opcode, Instruction target)
+		{
+			if (target == null)
+				throw new ArgumentNullException ("target");
+			if (opcode.OperandType != OperandType.InlineBrTarget &&
+				opcode.OperandType != OperandType.ShortInlineBrTarget)
+				throw new ArgumentException ("opcode");
+
+			return new Instruction (opcode, target);
+		}
+
+		public static Instruction Create (OpCode opcode, Instruction [] targets)
+		{
+			if (targets == null)
+				throw new ArgumentNullException ("targets");
+			if (opcode.OperandType != OperandType.InlineSwitch)
+				throw new ArgumentException ("opcode");
+
+			return new Instruction (opcode, targets);
+		}
+
+		public static Instruction Create (OpCode opcode, VariableDefinition variable)
+		{
+			if (variable == null)
+				throw new ArgumentNullException ("variable");
+			if (opcode.OperandType != OperandType.ShortInlineVar &&
+				opcode.OperandType != OperandType.InlineVar)
+				throw new ArgumentException ("opcode");
+
+			return new Instruction (opcode, variable);
+		}
+
+		public static Instruction Create (OpCode opcode, ParameterDefinition parameter)
+		{
+			if (parameter == null)
+				throw new ArgumentNullException ("parameter");
+			if (opcode.OperandType != OperandType.ShortInlineArg &&
+				opcode.OperandType != OperandType.InlineArg)
+				throw new ArgumentException ("opcode");
+
+			return new Instruction (opcode, parameter);
 		}
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/InstructionCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/InstructionCollection.cs
deleted file mode 100644
index 190750b..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/InstructionCollection.cs
+++ /dev/null
@@ -1,94 +0,0 @@
-//
-// InstructionCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Thu Sep 28 17:54:43 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Cil {
-
-	using System;
-	using System.Collections;
-
-	using Mono.Cecil.Cil;
-
-	public sealed class InstructionCollection : CollectionBase, ICodeVisitable {
-
-		MethodBody m_container;
-		public readonly Instruction Outside = new Instruction (int.MaxValue, OpCodes.Nop);
-
-		public Instruction this [int index] {
-			get { return List [index] as Instruction; }
-			set { List [index] = value; }
-		}
-
-		public MethodBody Container {
-			get { return m_container; }
-		}
-
-		public InstructionCollection (MethodBody container)
-		{
-			m_container = container;
-		}
-
-		internal void Add (Instruction value)
-		{
-			List.Add (value);
-		}
-
-		public bool Contains (Instruction value)
-		{
-			return List.Contains (value);
-		}
-
-		public int IndexOf (Instruction value)
-		{
-			return List.IndexOf (value);
-		}
-
-		internal void Insert (int index, Instruction value)
-		{
-			List.Insert (index, value);
-		}
-
-		internal void Remove (Instruction value)
-		{
-			List.Remove (value);
-		}
-
-		protected override void OnValidate (object o)
-		{
-			if (! (o is Instruction))
-				throw new ArgumentException ("Must be of type " + typeof (Instruction).FullName);
-		}
-
-		public void Accept (ICodeVisitor visitor)
-		{
-			visitor.VisitInstructionCollection (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/MethodBody.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/MethodBody.cs
index 70a7049..b57900e 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/MethodBody.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/MethodBody.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,598 +26,205 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil.Cil {
+using System;
+
+using Mono.Collections.Generic;
 
-	using Mono.Cecil;
+namespace Mono.Cecil.Cil {
 
-	public sealed class MethodBody : IVariableDefinitionProvider, IScopeProvider, ICodeVisitable {
+	public sealed class MethodBody : IVariableDefinitionProvider {
 
-		MethodDefinition m_method;
-		int m_maxStack;
-		int m_codeSize;
-		bool m_initLocals;
-		int m_localVarToken;
+		readonly internal MethodDefinition method;
 
-		InstructionCollection m_instructions;
-		ExceptionHandlerCollection m_exceptions;
-		VariableDefinitionCollection m_variables;
-		ScopeCollection m_scopes;
+		internal ParameterDefinition this_parameter;
+		internal int max_stack_size;
+		internal int code_size;
+		internal bool init_locals;
+		internal MetadataToken local_var_token;
 
-		private CilWorker m_cilWorker;
+		internal Collection<Instruction> instructions;
+		internal Collection<ExceptionHandler> exceptions;
+		internal Collection<VariableDefinition> variables;
+		Scope scope;
 
 		public MethodDefinition Method {
-			get { return m_method; }
+			get { return method; }
 		}
 
-		public int MaxStack {
-			get { return m_maxStack; }
-			set { m_maxStack = value; }
+		public int MaxStackSize {
+			get { return max_stack_size; }
+			set { max_stack_size = value; }
 		}
 
 		public int CodeSize {
-			get { return m_codeSize; }
-			set { m_codeSize = value; }
+			get { return code_size; }
 		}
 
 		public bool InitLocals {
-			get { return m_initLocals; }
-			set { m_initLocals = value; }
+			get { return init_locals; }
+			set { init_locals = value; }
 		}
 
-		public int LocalVarToken {
-			get { return m_localVarToken; }
-			set { m_localVarToken = value; }
+		public MetadataToken LocalVarToken {
+			get { return local_var_token; }
+			set { local_var_token = value; }
 		}
 
-		public CilWorker CilWorker {
-			get {
-				if (m_cilWorker == null)
-					m_cilWorker = new CilWorker (this);
-				return m_cilWorker;
-			}
-			set { m_cilWorker = value; }
-		}
-
-		public InstructionCollection Instructions {
-			get { return m_instructions; }
+		public Collection<Instruction> Instructions {
+			get { return instructions ?? (instructions = new InstructionCollection ()); }
 		}
 
 		public bool HasExceptionHandlers {
-			get { return m_exceptions != null && m_exceptions.Count > 0; }
+			get { return !exceptions.IsNullOrEmpty (); }
 		}
 
-		public ExceptionHandlerCollection ExceptionHandlers {
-			get {
-				if (m_exceptions == null)
-					m_exceptions = new ExceptionHandlerCollection (this);
-				return m_exceptions;
-			}
+		public Collection<ExceptionHandler> ExceptionHandlers {
+			get { return exceptions ?? (exceptions = new Collection<ExceptionHandler> ()); }
 		}
 
 		public bool HasVariables {
-			get { return m_variables != null && m_variables.Count > 0; }
+			get { return !variables.IsNullOrEmpty (); }
 		}
 
-		public VariableDefinitionCollection Variables {
-			get {
-				if (m_variables == null)
-					m_variables = new VariableDefinitionCollection (this);
-				return m_variables;
-			}
+		public Collection<VariableDefinition> Variables {
+			get { return variables ?? (variables = new VariableDefinitionCollection ()); }
 		}
 
-		public bool HasScopes {
-			get { return m_scopes != null && m_scopes.Count > 0; }
+		public Scope Scope {
+			get { return scope; }
+			set { scope = value; }
 		}
 
-		public ScopeCollection Scopes {
+		public ParameterDefinition ThisParameter {
 			get {
-				if (m_scopes == null)
-					m_scopes = new ScopeCollection (this);
-				return m_scopes;
+				if (method == null || method.DeclaringType == null)
+					throw new NotSupportedException ();
+
+				return this_parameter ?? (this_parameter = new ParameterDefinition ("0", ParameterAttributes.None, method.DeclaringType));
 			}
 		}
 
-		public MethodBody (MethodDefinition meth)
+		public MethodBody (MethodDefinition method)
 		{
-			m_method = meth;
-			// there is always a RET instruction (if a body is present)
-			m_instructions = new InstructionCollection (this);
+			this.method = method;
 		}
 
-		internal static Instruction GetInstruction (MethodBody oldBody, MethodBody newBody, Instruction i)
+		public ILProcessor GetILProcessor ()
 		{
-			int pos = oldBody.Instructions.IndexOf (i);
-			if (pos > -1 && pos < newBody.Instructions.Count)
-				return newBody.Instructions [pos];
-
-			return newBody.Instructions.Outside;
+			return new ILProcessor (this);
 		}
+	}
 
-		internal static MethodBody Clone (MethodBody body, MethodDefinition parent, ImportContext context)
-		{
-			MethodBody nb = new MethodBody (parent);
-			nb.MaxStack = body.MaxStack;
-			nb.InitLocals = body.InitLocals;
-			nb.CodeSize = body.CodeSize;
-
-			CilWorker worker = nb.CilWorker;
-
-			if (body.HasVariables) {
-				foreach (VariableDefinition var in body.Variables)
-					nb.Variables.Add (new VariableDefinition (
-						var.Name, var.Index, parent,
-						context.Import (var.VariableType)));
-			}
-
-			foreach (Instruction instr in body.Instructions) {
-				Instruction ni = new Instruction (instr.OpCode);
-
-				switch (instr.OpCode.OperandType) {
-				case OperandType.InlineParam :
-				case OperandType.ShortInlineParam :
-					if (instr.Operand == body.Method.This)
-						ni.Operand = nb.Method.This;
-					else {
-						int param = body.Method.Parameters.IndexOf ((ParameterDefinition) instr.Operand);
-						ni.Operand = parent.Parameters [param];
-					}
-					break;
-				case OperandType.InlineVar :
-				case OperandType.ShortInlineVar :
-					int var = body.Variables.IndexOf ((VariableDefinition) instr.Operand);
-					ni.Operand = nb.Variables [var];
-					break;
-				case OperandType.InlineField :
-					ni.Operand = context.Import ((FieldReference) instr.Operand);
-					break;
-				case OperandType.InlineMethod :
-					ni.Operand = context.Import ((MethodReference) instr.Operand);
-					break;
-				case OperandType.InlineType :
-					ni.Operand = context.Import ((TypeReference) instr.Operand);
-					break;
-				case OperandType.InlineTok :
-					if (instr.Operand is TypeReference)
-						ni.Operand = context.Import ((TypeReference) instr.Operand);
-					else if (instr.Operand is FieldReference)
-						ni.Operand = context.Import ((FieldReference) instr.Operand);
-					else if (instr.Operand is MethodReference)
-						ni.Operand = context.Import ((MethodReference) instr.Operand);
-					break;
-				case OperandType.ShortInlineBrTarget :
-				case OperandType.InlineBrTarget :
-				case OperandType.InlineSwitch :
-					break;
-				default :
-					ni.Operand = instr.Operand;
-					break;
-				}
-
-				worker.Append (ni);
-			}
+	public interface IVariableDefinitionProvider {
+		bool HasVariables { get; }
+		Collection<VariableDefinition> Variables { get; }
+	}
 
-			for (int i = 0; i < body.Instructions.Count; i++) {
-				Instruction instr = nb.Instructions [i];
-				Instruction oldi = body.Instructions [i];
+	class VariableDefinitionCollection : Collection<VariableDefinition> {
 
-				if (instr.OpCode.OperandType == OperandType.InlineSwitch) {
-					Instruction [] olds = (Instruction []) oldi.Operand;
-					Instruction [] targets = new Instruction [olds.Length];
+		internal VariableDefinitionCollection ()
+		{
+		}
 
-					for (int j = 0; j < targets.Length; j++)
-						targets [j] = GetInstruction (body, nb, olds [j]);
+		internal VariableDefinitionCollection (int capacity)
+			: base (capacity)
+		{
+		}
 
-					instr.Operand = targets;
-				} else if (instr.OpCode.OperandType == OperandType.ShortInlineBrTarget || instr.OpCode.OperandType == OperandType.InlineBrTarget)
-					instr.Operand = GetInstruction (body, nb, (Instruction) oldi.Operand);
-			}
+		protected override void OnAdd (VariableDefinition item, int index)
+		{
+			item.index = index;
+		}
 
-			if (!body.HasExceptionHandlers)
-				return nb;
-
-			foreach (ExceptionHandler eh in body.ExceptionHandlers) {
-				ExceptionHandler neh = new ExceptionHandler (eh.Type);
-				neh.TryStart = GetInstruction (body, nb, eh.TryStart);
-				neh.TryEnd = GetInstruction (body, nb, eh.TryEnd);
-				neh.HandlerStart = GetInstruction (body, nb, eh.HandlerStart);
-				neh.HandlerEnd = GetInstruction (body, nb, eh.HandlerEnd);
-
-				switch (eh.Type) {
-				case ExceptionHandlerType.Catch :
-					neh.CatchType = context.Import (eh.CatchType);
-					break;
-				case ExceptionHandlerType.Filter :
-					neh.FilterStart = GetInstruction (body, nb, eh.FilterStart);
-					neh.FilterEnd = GetInstruction (body, nb, eh.FilterEnd);
-					break;
-				}
-
-				nb.ExceptionHandlers.Add (neh);
-			}
+		protected override void OnInsert (VariableDefinition item, int index)
+		{
+			item.index = index;
 
-			return nb;
+			for (int i = index; i < size; i++)
+				items [i].index = i + 1;
 		}
 
-		public void Simplify ()
+		protected override void OnSet (VariableDefinition item, int index)
 		{
-			foreach (Instruction i in this.Instructions) {
-				if (i.OpCode.OpCodeType != OpCodeType.Macro)
-					continue;
-
-				switch (i.OpCode.Code) {
-				case Code.Ldarg_0 :
-					Modify (i, OpCodes.Ldarg,
-						CodeReader.GetParameter (this, 0));
-					break;
-				case Code.Ldarg_1 :
-					Modify (i, OpCodes.Ldarg,
-						CodeReader.GetParameter (this, 1));
-					break;
-				case Code.Ldarg_2 :
-					Modify (i, OpCodes.Ldarg,
-						CodeReader.GetParameter (this, 2));
-					break;
-				case Code.Ldarg_3 :
-					Modify (i, OpCodes.Ldarg,
-						CodeReader.GetParameter (this, 3));
-					break;
-				case Code.Ldloc_0 :
-					Modify (i, OpCodes.Ldloc,
-						CodeReader.GetVariable (this, 0));
-					break;
-				case Code.Ldloc_1 :
-					Modify (i, OpCodes.Ldloc,
-						CodeReader.GetVariable (this, 1));
-					break;
-				case Code.Ldloc_2 :
-					Modify (i, OpCodes.Ldloc,
-						CodeReader.GetVariable (this, 2));
-					break;
-				case Code.Ldloc_3 :
-					Modify (i, OpCodes.Ldloc,
-						CodeReader.GetVariable (this, 3));
-					break;
-				case Code.Stloc_0 :
-					Modify (i, OpCodes.Stloc,
-						CodeReader.GetVariable (this, 0));
-					break;
-				case Code.Stloc_1 :
-					Modify (i, OpCodes.Stloc,
-						CodeReader.GetVariable (this, 1));
-					break;
-				case Code.Stloc_2 :
-					Modify (i, OpCodes.Stloc,
-						CodeReader.GetVariable (this, 2));
-					break;
-				case Code.Stloc_3 :
-					Modify (i, OpCodes.Stloc,
-						CodeReader.GetVariable (this, 3));
-					break;
-				case Code.Ldarg_S :
-					i.OpCode = OpCodes.Ldarg;
-					break;
-				case Code.Ldarga_S :
-					i.OpCode = OpCodes.Ldarga;
-					break;
-				case Code.Starg_S :
-					i.OpCode = OpCodes.Starg;
-					break;
-				case Code.Ldloc_S :
-					i.OpCode = OpCodes.Ldloc;
-					break;
-				case Code.Ldloca_S :
-					i.OpCode = OpCodes.Ldloca;
-					break;
-				case Code.Stloc_S :
-					i.OpCode = OpCodes.Stloc;
-					break;
-				case Code.Ldc_I4_M1 :
-					Modify (i, OpCodes.Ldc_I4, -1);
-					break;
-				case Code.Ldc_I4_0 :
-					Modify (i, OpCodes.Ldc_I4, 0);
-					break;
-				case Code.Ldc_I4_1 :
-					Modify (i, OpCodes.Ldc_I4, 1);
-					break;
-				case Code.Ldc_I4_2 :
-					Modify (i, OpCodes.Ldc_I4, 2);
-					break;
-				case Code.Ldc_I4_3 :
-					Modify (i, OpCodes.Ldc_I4, 3);
-					break;
-				case Code.Ldc_I4_4 :
-					Modify (i, OpCodes.Ldc_I4, 4);
-					break;
-				case Code.Ldc_I4_5 :
-					Modify (i, OpCodes.Ldc_I4, 5);
-					break;
-				case Code.Ldc_I4_6 :
-					Modify (i, OpCodes.Ldc_I4, 6);
-					break;
-				case Code.Ldc_I4_7 :
-					Modify (i, OpCodes.Ldc_I4, 7);
-					break;
-				case Code.Ldc_I4_8 :
-					Modify (i, OpCodes.Ldc_I4, 8);
-					break;
-				case Code.Ldc_I4_S :
-					i.OpCode = OpCodes.Ldc_I4;
-					i.Operand = (int) (sbyte) i.Operand;
-					break;
-				case Code.Br_S :
-					i.OpCode = OpCodes.Br;
-					break;
-				case Code.Brfalse_S :
-					i.OpCode = OpCodes.Brfalse;
-					break;
-				case Code.Brtrue_S :
-					i.OpCode = OpCodes.Brtrue;
-					break;
-				case Code.Beq_S :
-					i.OpCode = OpCodes.Beq;
-					break;
-				case Code.Bge_S :
-					i.OpCode = OpCodes.Bge;
-					break;
-				case Code.Bgt_S :
-					i.OpCode = OpCodes.Bgt;
-					break;
-				case Code.Ble_S :
-					i.OpCode = OpCodes.Ble;
-					break;
-				case Code.Blt_S :
-					i.OpCode = OpCodes.Blt;
-					break;
-				case Code.Bne_Un_S :
-					i.OpCode = OpCodes.Bne_Un;
-					break;
-				case Code.Bge_Un_S :
-					i.OpCode = OpCodes.Bge_Un;
-					break;
-				case Code.Bgt_Un_S :
-					i.OpCode = OpCodes.Bgt_Un;
-					break;
-				case Code.Ble_Un_S :
-					i.OpCode = OpCodes.Ble_Un;
-					break;
-				case Code.Blt_Un_S :
-					i.OpCode = OpCodes.Blt_Un;
-					break;
-				case Code.Leave_S :
-					i.OpCode = OpCodes.Leave;
-					break;
-				}
-			}
+			item.index = index;
 		}
 
-		public void Optimize ()
+		protected override void OnRemove (VariableDefinition item, int index)
 		{
-			foreach (Instruction instr in m_instructions) {
-				int index;
-				switch (instr.OpCode.Code) {
-				case Code.Ldarg:
-					index = m_method.Parameters.IndexOf ((ParameterDefinition) instr.Operand);
-					if (index == -1 && instr.Operand == m_method.This)
-						index = 0;
-					else if (m_method.HasThis)
-						index++;
-
-					switch (index) {
-					case 0:
-						Modify (instr, OpCodes.Ldarg_0, null);
-						break;
-					case 1:
-						Modify (instr, OpCodes.Ldarg_1, null);
-						break;
-					case 2:
-						Modify (instr, OpCodes.Ldarg_2, null);
-						break;
-					case 3:
-						Modify (instr, OpCodes.Ldarg_3, null);
-						break;
-					default:
-						if (index < 256)
-							Modify (instr, OpCodes.Ldarg_S, instr.Operand);
-						break;
-					}
-					break;
-				case Code.Ldloc:
-					index = m_variables.IndexOf ((VariableDefinition) instr.Operand);
-					switch (index) {
-					case 0:
-						Modify (instr, OpCodes.Ldloc_0, null);
-						break;
-					case 1:
-						Modify (instr, OpCodes.Ldloc_1, null);
-						break;
-					case 2:
-						Modify (instr, OpCodes.Ldloc_2, null);
-						break;
-					case 3:
-						Modify (instr, OpCodes.Ldloc_3, null);
-						break;
-					default:
-						if (index < 256)
-							Modify (instr, OpCodes.Ldloc_S, instr.Operand);
-						break;
-					}
-					break;
-				case Code.Stloc:
-					index = m_variables.IndexOf ((VariableDefinition) instr.Operand);
-					switch (index) {
-					case 0:
-						Modify (instr, OpCodes.Stloc_0, null);
-						break;
-					case 1:
-						Modify (instr, OpCodes.Stloc_1, null);
-						break;
-					case 2:
-						Modify (instr, OpCodes.Stloc_2, null);
-						break;
-					case 3:
-						Modify (instr, OpCodes.Stloc_3, null);
-						break;
-					default:
-						if (index < 256)
-							Modify (instr, OpCodes.Stloc_S, instr.Operand);
-						break;
-					}
-					break;
-				case Code.Ldarga:
-					index = m_method.Parameters.IndexOf ((ParameterDefinition) instr.Operand);
-					if (index == -1 && instr.Operand == m_method.This)
-						index = 0;
-					else if (m_method.HasThis)
-						index++;
-					if (index < 256)
-						Modify (instr, OpCodes.Ldarga_S, instr.Operand);
-					break;
-				case Code.Ldloca:
-					if (m_variables.IndexOf ((VariableDefinition) instr.Operand) < 256)
-						Modify (instr, OpCodes.Ldloca_S, instr.Operand);
-					break;
-				case Code.Ldc_I4:
-					int i = (int) instr.Operand;
-					switch (i) {
-					case -1:
-						Modify (instr, OpCodes.Ldc_I4_M1, null);
-						break;
-					case 0:
-						Modify (instr, OpCodes.Ldc_I4_0, null);
-						break;
-					case 1:
-						Modify (instr, OpCodes.Ldc_I4_1, null);
-						break;
-					case 2:
-						Modify (instr, OpCodes.Ldc_I4_2, null);
-						break;
-					case 3:
-						Modify (instr, OpCodes.Ldc_I4_3, null);
-						break;
-					case 4:
-						Modify (instr, OpCodes.Ldc_I4_4, null);
-						break;
-					case 5:
-						Modify (instr, OpCodes.Ldc_I4_5, null);
-						break;
-					case 6:
-						Modify (instr, OpCodes.Ldc_I4_6, null);
-						break;
-					case 7:
-						Modify (instr, OpCodes.Ldc_I4_7, null);
-						break;
-					case 8:
-						Modify (instr, OpCodes.Ldc_I4_8, null);
-						break;
-					default:
-						if (i >= -128 && i < 128)
-							Modify (instr, OpCodes.Ldc_I4_S, (sbyte) i);
-						break;
-					}
-					break;
-				}
-			}
+			item.index = -1;
 
-			OptimizeBranches ();
+			for (int i = index + 1; i < size; i++)
+				items [i].index = i - 1;
 		}
+	}
 
-		void OptimizeBranches ()
-		{
-			ComputeOffsets ();
+	class InstructionCollection : Collection<Instruction> {
 
-			foreach (Instruction instr in m_instructions) {
-				if (instr.OpCode.OperandType != OperandType.InlineBrTarget)
-					continue;
+		internal InstructionCollection ()
+		{
+		}
 
-				if (OptimizeBranch (instr))
-					ComputeOffsets ();
-			}
+		internal InstructionCollection (int capacity)
+			: base (capacity)
+		{
 		}
 
-		static bool OptimizeBranch (Instruction instr)
+		protected override void OnAdd (Instruction item, int index)
 		{
-			int offset = ((Instruction) instr.Operand).Offset - (instr.Offset + instr.OpCode.Size + 4);
-			if (! (offset >= -128 && offset <= 127))
-				return false;
-
-			switch (instr.OpCode.Code) {
-			case Code.Br:
-				instr.OpCode = OpCodes.Br_S;
-				break;
-			case Code.Brfalse:
-				instr.OpCode = OpCodes.Brfalse_S;
-				break;
-			case Code.Brtrue:
-				instr.OpCode = OpCodes.Brtrue_S;
-				break;
-			case Code.Beq:
-				instr.OpCode = OpCodes.Beq_S;
-				break;
-			case Code.Bge:
-				instr.OpCode = OpCodes.Bge_S;
-				break;
-			case Code.Bgt:
-				instr.OpCode = OpCodes.Bgt_S;
-				break;
-			case Code.Ble:
-				instr.OpCode = OpCodes.Ble_S;
-				break;
-			case Code.Blt:
-				instr.OpCode = OpCodes.Blt_S;
-				break;
-			case Code.Bne_Un:
-				instr.OpCode = OpCodes.Bne_Un_S;
-				break;
-			case Code.Bge_Un:
-				instr.OpCode = OpCodes.Bge_Un_S;
-				break;
-			case Code.Bgt_Un:
-				instr.OpCode = OpCodes.Bgt_Un_S;
-				break;
-			case Code.Ble_Un:
-				instr.OpCode = OpCodes.Ble_Un_S;
-				break;
-			case Code.Blt_Un:
-				instr.OpCode = OpCodes.Blt_Un_S;
-				break;
-			case Code.Leave:
-				instr.OpCode = OpCodes.Leave_S;
-				break;
-			}
+			if (index == 0)
+				return;
 
-			return true;
+			var previous = items [index - 1];
+			previous.next = item;
+			item.previous = previous;
 		}
 
-		void ComputeOffsets ()
+		protected override void OnInsert (Instruction item, int index)
 		{
-			int offset = 0;
+			if (size == 0)
+				return;
+
+			var current = items [index];
+			if (current == null) {
+				var last = items [index - 1];
+				last.next = item;
+				item.previous = last;
+				return;
+			}
 
-			foreach (Instruction instr in m_instructions) {
-				instr.Offset = offset;
-				offset += instr.GetSize ();
+			var previous = current.previous;
+			if (previous != null) {
+				previous.next = item;
+				item.previous = previous;
 			}
+
+			current.previous = item;
+			item.next = current;
 		}
 
-		static void Modify (Instruction i, OpCode op, object operand)
+		protected override void OnSet (Instruction item, int index)
 		{
-			i.OpCode = op;
-			i.Operand = operand;
+			var current = items [index];
+
+			item.previous = current.previous;
+			item.next = current.next;
+
+			current.previous = null;
+			current.next = null;
 		}
 
-		public void Accept (ICodeVisitor visitor)
+		protected override void OnRemove (Instruction item, int index)
 		{
-			visitor.VisitMethodBody (this);
-			if (HasVariables)
-				m_variables.Accept (visitor);
-			m_instructions.Accept (visitor);
-			if (HasExceptionHandlers)
-				m_exceptions.Accept (visitor);
-			if (HasScopes)
-				m_scopes.Accept (visitor);
-
-			visitor.TerminateMethodBody (this);
+			var previous = item.previous;
+			if (previous != null)
+				previous.next = item.next;
+
+			var next = item.next;
+			if (next != null)
+				next.previous = item.previous;
+
+			item.previous = null;
+			item.next = null;
 		}
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/OpCode.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/OpCode.cs
index 829fc2f..aad4ba4 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/OpCode.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/OpCode.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -28,74 +28,148 @@
 
 namespace Mono.Cecil.Cil {
 
+	public enum FlowControl {
+		Branch,
+		Break,
+		Call,
+		Cond_Branch,
+		Meta,
+		Next,
+		Phi,
+		Return,
+		Throw,
+	}
+
+	public enum OpCodeType {
+		Annotation,
+		Macro,
+		Nternal,
+		Objmodel,
+		Prefix,
+		Primitive,
+	}
+
+	public enum OperandType {
+		InlineBrTarget,
+		InlineField,
+		InlineI,
+		InlineI8,
+		InlineMethod,
+		InlineNone,
+		InlinePhi,
+		InlineR,
+		InlineSig,
+		InlineString,
+		InlineSwitch,
+		InlineTok,
+		InlineType,
+		InlineVar,
+		InlineArg,
+		ShortInlineBrTarget,
+		ShortInlineI,
+		ShortInlineR,
+		ShortInlineVar,
+		ShortInlineArg,
+	}
+
+	public enum StackBehaviour {
+		Pop0,
+		Pop1,
+		Pop1_pop1,
+		Popi,
+		Popi_pop1,
+		Popi_popi,
+		Popi_popi8,
+		Popi_popi_popi,
+		Popi_popr4,
+		Popi_popr8,
+		Popref,
+		Popref_pop1,
+		Popref_popi,
+		Popref_popi_popi,
+		Popref_popi_popi8,
+		Popref_popi_popr4,
+		Popref_popi_popr8,
+		Popref_popi_popref,
+		PopAll,
+		Push0,
+		Push1,
+		Push1_push1,
+		Pushi,
+		Pushi8,
+		Pushr4,
+		Pushr8,
+		Pushref,
+		Varpop,
+		Varpush,
+	}
+
 	public struct OpCode {
-		short m_value;
-		byte m_code;
-		byte m_flowControl;
-		byte m_opCodeType;
-		byte m_operandType;
-		byte m_stackBehaviourPop;
-		byte m_stackBehaviourPush;
+
+		readonly byte op1;
+		readonly byte op2;
+		readonly byte code;
+		readonly byte flow_control;
+		readonly byte opcode_type;
+		readonly byte operand_type;
+		readonly byte stack_behavior_pop;
+		readonly byte stack_behavior_push;
 
 		public string Name {
-			get {
-				int index = (Size == 1) ? Op2 : (Op2 + 256);
-				return OpCodeNames.names [index];
-			}
+			get { return OpCodeNames.names [op1 == 0xff ? op2 : op2 + 256]; }
 		}
 
 		public int Size {
-			get { return ((m_value & 0xff00) == 0xff00) ? 1 : 2; }
+			get { return op1 == 0xff ? 1 : 2; }
 		}
 
 		public byte Op1 {
-			get { return (byte) (m_value >> 8); }
+			get { return op1; }
 		}
 
 		public byte Op2 {
-			get { return (byte) m_value; }
+			get { return op2; }
 		}
 
 		public short Value {
-			get { return (Size == 1) ? Op2 : m_value; }
+			get { return (short) ((op1 << 8) | op2); }
 		}
 
 		public Code Code {
-			get { return (Code) m_code; }
+			get { return (Code) code; }
 		}
 
 		public FlowControl FlowControl {
-			get { return (FlowControl) m_flowControl; }
+			get { return (FlowControl) flow_control; }
 		}
 
 		public OpCodeType OpCodeType {
-			get { return (OpCodeType) m_opCodeType; }
+			get { return (OpCodeType) opcode_type; }
 		}
 
 		public OperandType OperandType {
-			get { return (OperandType) m_operandType; }
+			get { return (OperandType) operand_type; }
 		}
 
 		public StackBehaviour StackBehaviourPop {
-			get { return (StackBehaviour) m_stackBehaviourPop; }
+			get { return (StackBehaviour) stack_behavior_pop; }
 		}
 
 		public StackBehaviour StackBehaviourPush {
-			get { return (StackBehaviour) m_stackBehaviourPush; }
+			get { return (StackBehaviour) stack_behavior_push; }
 		}
 
-		internal OpCode (byte op1, byte op2,
-			Code code, FlowControl flowControl,
-			OpCodeType opCodeType, OperandType operandType,
-			StackBehaviour pop, StackBehaviour push)
+		internal OpCode (int x, int y)
 		{
-			m_value = (short) ((op1 << 8) | op2);
-			m_code = (byte) code;
-			m_flowControl = (byte) flowControl;
-			m_opCodeType = (byte) opCodeType;
-			m_operandType = (byte) operandType;
-			m_stackBehaviourPop = (byte) pop;
-			m_stackBehaviourPush = (byte) push;
+			this.op1 = (byte) ((x >> 0) & 0xff);
+			this.op2 = (byte) ((x >> 8) & 0xff);
+			this.code = (byte) ((x >> 16) & 0xff);
+			this.flow_control = (byte) ((x >> 24) & 0xff);
+
+			this.opcode_type = (byte) ((y >> 0) & 0xff);
+			this.operand_type = (byte) ((y >> 8) & 0xff);
+			this.stack_behavior_pop = (byte) ((y >> 16) & 0xff);
+			this.stack_behavior_push = (byte) ((y >> 24) & 0xff);
 
 			if (op1 == 0xff)
 				OpCodes.OneByteOpCode [op2] = this;
@@ -105,30 +179,31 @@ namespace Mono.Cecil.Cil {
 
 		public override int GetHashCode ()
 		{
-			return m_value;
+			return Value;
 		}
 
 		public override bool Equals (object obj)
 		{
 			if (!(obj is OpCode))
 				return false;
-			OpCode v = (OpCode) obj;
-			return v.m_value == m_value;
+
+			var opcode = (OpCode) obj;
+			return op1 == opcode.op1 && op2 == opcode.op2;
 		}
 
 		public bool Equals (OpCode opcode)
 		{
-			return (m_value == opcode.m_value);
+			return op1 == opcode.op1 && op2 == opcode.op2;
 		}
 
 		public static bool operator == (OpCode one, OpCode other)
 		{
-			return (one.m_value == other.m_value);
+			return one.op1 == other.op1 && one.op2 == other.op2;
 		}
 
 		public static bool operator != (OpCode one, OpCode other)
 		{
-			return (one.m_value != other.m_value);
+			return one.op1 != other.op1 || one.op2 != other.op2;
 		}
 
 		public override string ToString ()
@@ -136,4 +211,314 @@ namespace Mono.Cecil.Cil {
 			return Name;
 		}
 	}
+
+	static class OpCodeNames {
+
+		internal static readonly string [] names = {
+			"nop",
+			"break",
+			"ldarg.0",
+			"ldarg.1",
+			"ldarg.2",
+			"ldarg.3",
+			"ldloc.0",
+			"ldloc.1",
+			"ldloc.2",
+			"ldloc.3",
+			"stloc.0",
+			"stloc.1",
+			"stloc.2",
+			"stloc.3",
+			"ldarg.s",
+			"ldarga.s",
+			"starg.s",
+			"ldloc.s",
+			"ldloca.s",
+			"stloc.s",
+			"ldnull",
+			"ldc.i4.m1",
+			"ldc.i4.0",
+			"ldc.i4.1",
+			"ldc.i4.2",
+			"ldc.i4.3",
+			"ldc.i4.4",
+			"ldc.i4.5",
+			"ldc.i4.6",
+			"ldc.i4.7",
+			"ldc.i4.8",
+			"ldc.i4.s",
+			"ldc.i4",
+			"ldc.i8",
+			"ldc.r4",
+			"ldc.r8",
+			null,
+			"dup",
+			"pop",
+			"jmp",
+			"call",
+			"calli",
+			"ret",
+			"br.s",
+			"brfalse.s",
+			"brtrue.s",
+			"beq.s",
+			"bge.s",
+			"bgt.s",
+			"ble.s",
+			"blt.s",
+			"bne.un.s",
+			"bge.un.s",
+			"bgt.un.s",
+			"ble.un.s",
+			"blt.un.s",
+			"br",
+			"brfalse",
+			"brtrue",
+			"beq",
+			"bge",
+			"bgt",
+			"ble",
+			"blt",
+			"bne.un",
+			"bge.un",
+			"bgt.un",
+			"ble.un",
+			"blt.un",
+			"switch",
+			"ldind.i1",
+			"ldind.u1",
+			"ldind.i2",
+			"ldind.u2",
+			"ldind.i4",
+			"ldind.u4",
+			"ldind.i8",
+			"ldind.i",
+			"ldind.r4",
+			"ldind.r8",
+			"ldind.ref",
+			"stind.ref",
+			"stind.i1",
+			"stind.i2",
+			"stind.i4",
+			"stind.i8",
+			"stind.r4",
+			"stind.r8",
+			"add",
+			"sub",
+			"mul",
+			"div",
+			"div.un",
+			"rem",
+			"rem.un",
+			"and",
+			"or",
+			"xor",
+			"shl",
+			"shr",
+			"shr.un",
+			"neg",
+			"not",
+			"conv.i1",
+			"conv.i2",
+			"conv.i4",
+			"conv.i8",
+			"conv.r4",
+			"conv.r8",
+			"conv.u4",
+			"conv.u8",
+			"callvirt",
+			"cpobj",
+			"ldobj",
+			"ldstr",
+			"newobj",
+			"castclass",
+			"isinst",
+			"conv.r.un",
+			null,
+			null,
+			"unbox",
+			"throw",
+			"ldfld",
+			"ldflda",
+			"stfld",
+			"ldsfld",
+			"ldsflda",
+			"stsfld",
+			"stobj",
+			"conv.ovf.i1.un",
+			"conv.ovf.i2.un",
+			"conv.ovf.i4.un",
+			"conv.ovf.i8.un",
+			"conv.ovf.u1.un",
+			"conv.ovf.u2.un",
+			"conv.ovf.u4.un",
+			"conv.ovf.u8.un",
+			"conv.ovf.i.un",
+			"conv.ovf.u.un",
+			"box",
+			"newarr",
+			"ldlen",
+			"ldelema",
+			"ldelem.i1",
+			"ldelem.u1",
+			"ldelem.i2",
+			"ldelem.u2",
+			"ldelem.i4",
+			"ldelem.u4",
+			"ldelem.i8",
+			"ldelem.i",
+			"ldelem.r4",
+			"ldelem.r8",
+			"ldelem.ref",
+			"stelem.i",
+			"stelem.i1",
+			"stelem.i2",
+			"stelem.i4",
+			"stelem.i8",
+			"stelem.r4",
+			"stelem.r8",
+			"stelem.ref",
+			"ldelem.any",
+			"stelem.any",
+			"unbox.any",
+			null,
+			null,
+			null,
+			null,
+			null,
+			null,
+			null,
+			null,
+			null,
+			null,
+			null,
+			null,
+			null,
+			"conv.ovf.i1",
+			"conv.ovf.u1",
+			"conv.ovf.i2",
+			"conv.ovf.u2",
+			"conv.ovf.i4",
+			"conv.ovf.u4",
+			"conv.ovf.i8",
+			"conv.ovf.u8",
+			null,
+			null,
+			null,
+			null,
+			null,
+			null,
+			null,
+			"refanyval",
+			"ckfinite",
+			null,
+			null,
+			"mkrefany",
+			null,
+			null,
+			null,
+			null,
+			null,
+			null,
+			null,
+			null,
+			null,
+			"ldtoken",
+			"conv.u2",
+			"conv.u1",
+			"conv.i",
+			"conv.ovf.i",
+			"conv.ovf.u",
+			"add.ovf",
+			"add.ovf.un",
+			"mul.ovf",
+			"mul.ovf.un",
+			"sub.ovf",
+			"sub.ovf.un",
+			"endfinally",
+			"leave",
+			"leave.s",
+			"stind.i",
+			"conv.u",
+			null,
+			null,
+			null,
+			null,
+			null,
+			null,
+			null,
+			null,
+			null,
+			null,
+			null,
+			null,
+			null,
+			null,
+			null,
+			null,
+			null,
+			null,
+			null,
+			null,
+			null,
+			null,
+			null,
+			"prefix7",
+			"prefix6",
+			"prefix5",
+			"prefix4",
+			"prefix3",
+			"prefix2",
+			"prefix1",
+			"prefixref",
+			"arglist",
+			"ceq",
+			"cgt",
+			"cgt.un",
+			"clt",
+			"clt.un",
+			"ldftn",
+			"ldvirtftn",
+			null,
+			"ldarg",
+			"ldarga",
+			"starg",
+			"ldloc",
+			"ldloca",
+			"stloc",
+			"localloc",
+			null,
+			"endfilter",
+			"unaligned.",
+			"volatile.",
+			"tail.",
+			"initobj",
+			"constrained.",
+			"cpblk",
+			"initblk",
+			"no.",		// added by spouliot to match Cecil existing definitions
+			"rethrow",
+			null,
+			"sizeof",
+			"refanytype",
+			"readonly.",	// added by spouliot to match Cecil existing definitions
+			null,
+			null,
+			null,
+			null,
+			null,
+			null,
+			null,
+			null,
+			null,
+			null,
+			null,
+			null,
+			null,
+			null,
+			null,
+			null,
+			null,
+		};
+	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/OpCodeType.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/OpCodeType.cs
deleted file mode 100644
index c6106d9..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/OpCodeType.cs
+++ /dev/null
@@ -1,39 +0,0 @@
-//
-// OpCodeType.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Cil {
-
-	public enum OpCodeType {
-		Annotation,
-		Macro,
-		Nternal,
-		Objmodel,
-		Prefix,
-		Primitive
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/OpCodes.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/OpCodes.cs
index 1e5a99c..ce468a1 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/OpCodes.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/OpCodes.cs
@@ -4,10 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Fri Jun 06 13:04:02 +0200 2008
-//
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -31,1553 +28,885 @@
 
 namespace Mono.Cecil.Cil {
 
-	public sealed class OpCodes {
+	public static class OpCodes {
 
 		internal static readonly OpCode [] OneByteOpCode = new OpCode [0xe0 + 1];
 		internal static readonly OpCode [] TwoBytesOpCode = new OpCode [0x1e + 1];
 
 		public static readonly OpCode Nop = new OpCode (
-			0xff, 0x00,
-			Code.Nop, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop0, StackBehaviour.Push0);
+			0xff << 0 | 0x00 << 8 | (byte) Code.Nop << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Break = new OpCode (
-			0xff, 0x01,
-			Code.Break, FlowControl.Break,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop0, StackBehaviour.Push0);
+			0xff << 0 | 0x01 << 8 | (byte) Code.Break << 16 | (byte) FlowControl.Break << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Ldarg_0 = new OpCode (
-			0xff, 0x02,
-			Code.Ldarg_0, FlowControl.Next,
-			OpCodeType.Macro, OperandType.InlineNone,
-			StackBehaviour.Pop0, StackBehaviour.Push1);
+			0xff << 0 | 0x02 << 8 | (byte) Code.Ldarg_0 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Push1 << 24);
 
 		public static readonly OpCode Ldarg_1 = new OpCode (
-			0xff, 0x03,
-			Code.Ldarg_1, FlowControl.Next,
-			OpCodeType.Macro, OperandType.InlineNone,
-			StackBehaviour.Pop0, StackBehaviour.Push1);
+			0xff << 0 | 0x03 << 8 | (byte) Code.Ldarg_1 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Push1 << 24);
 
 		public static readonly OpCode Ldarg_2 = new OpCode (
-			0xff, 0x04,
-			Code.Ldarg_2, FlowControl.Next,
-			OpCodeType.Macro, OperandType.InlineNone,
-			StackBehaviour.Pop0, StackBehaviour.Push1);
+			0xff << 0 | 0x04 << 8 | (byte) Code.Ldarg_2 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Push1 << 24);
 
 		public static readonly OpCode Ldarg_3 = new OpCode (
-			0xff, 0x05,
-			Code.Ldarg_3, FlowControl.Next,
-			OpCodeType.Macro, OperandType.InlineNone,
-			StackBehaviour.Pop0, StackBehaviour.Push1);
+			0xff << 0 | 0x05 << 8 | (byte) Code.Ldarg_3 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Push1 << 24);
 
 		public static readonly OpCode Ldloc_0 = new OpCode (
-			0xff, 0x06,
-			Code.Ldloc_0, FlowControl.Next,
-			OpCodeType.Macro, OperandType.InlineNone,
-			StackBehaviour.Pop0, StackBehaviour.Push1);
+			0xff << 0 | 0x06 << 8 | (byte) Code.Ldloc_0 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Push1 << 24);
 
 		public static readonly OpCode Ldloc_1 = new OpCode (
-			0xff, 0x07,
-			Code.Ldloc_1, FlowControl.Next,
-			OpCodeType.Macro, OperandType.InlineNone,
-			StackBehaviour.Pop0, StackBehaviour.Push1);
+			0xff << 0 | 0x07 << 8 | (byte) Code.Ldloc_1 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Push1 << 24);
 
 		public static readonly OpCode Ldloc_2 = new OpCode (
-			0xff, 0x08,
-			Code.Ldloc_2, FlowControl.Next,
-			OpCodeType.Macro, OperandType.InlineNone,
-			StackBehaviour.Pop0, StackBehaviour.Push1);
+			0xff << 0 | 0x08 << 8 | (byte) Code.Ldloc_2 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Push1 << 24);
 
 		public static readonly OpCode Ldloc_3 = new OpCode (
-			0xff, 0x09,
-			Code.Ldloc_3, FlowControl.Next,
-			OpCodeType.Macro, OperandType.InlineNone,
-			StackBehaviour.Pop0, StackBehaviour.Push1);
+			0xff << 0 | 0x09 << 8 | (byte) Code.Ldloc_3 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Push1 << 24);
 
 		public static readonly OpCode Stloc_0 = new OpCode (
-			0xff, 0x0a,
-			Code.Stloc_0, FlowControl.Next,
-			OpCodeType.Macro, OperandType.InlineNone,
-			StackBehaviour.Pop1, StackBehaviour.Push0);
+			0xff << 0 | 0x0a << 8 | (byte) Code.Stloc_0 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Stloc_1 = new OpCode (
-			0xff, 0x0b,
-			Code.Stloc_1, FlowControl.Next,
-			OpCodeType.Macro, OperandType.InlineNone,
-			StackBehaviour.Pop1, StackBehaviour.Push0);
+			0xff << 0 | 0x0b << 8 | (byte) Code.Stloc_1 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Stloc_2 = new OpCode (
-			0xff, 0x0c,
-			Code.Stloc_2, FlowControl.Next,
-			OpCodeType.Macro, OperandType.InlineNone,
-			StackBehaviour.Pop1, StackBehaviour.Push0);
+			0xff << 0 | 0x0c << 8 | (byte) Code.Stloc_2 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Stloc_3 = new OpCode (
-			0xff, 0x0d,
-			Code.Stloc_3, FlowControl.Next,
-			OpCodeType.Macro, OperandType.InlineNone,
-			StackBehaviour.Pop1, StackBehaviour.Push0);
+			0xff << 0 | 0x0d << 8 | (byte) Code.Stloc_3 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Ldarg_S = new OpCode (
-			0xff, 0x0e,
-			Code.Ldarg_S, FlowControl.Next,
-			OpCodeType.Macro, OperandType.ShortInlineParam,
-			StackBehaviour.Pop0, StackBehaviour.Push1);
+			0xff << 0 | 0x0e << 8 | (byte) Code.Ldarg_S << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Macro << 0 | (byte) OperandType.ShortInlineArg << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Push1 << 24);
 
 		public static readonly OpCode Ldarga_S = new OpCode (
-			0xff, 0x0f,
-			Code.Ldarga_S, FlowControl.Next,
-			OpCodeType.Macro, OperandType.ShortInlineParam,
-			StackBehaviour.Pop0, StackBehaviour.Pushi);
+			0xff << 0 | 0x0f << 8 | (byte) Code.Ldarga_S << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Macro << 0 | (byte) OperandType.ShortInlineArg << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Starg_S = new OpCode (
-			0xff, 0x10,
-			Code.Starg_S, FlowControl.Next,
-			OpCodeType.Macro, OperandType.ShortInlineParam,
-			StackBehaviour.Pop1, StackBehaviour.Push0);
+			0xff << 0 | 0x10 << 8 | (byte) Code.Starg_S << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Macro << 0 | (byte) OperandType.ShortInlineArg << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Ldloc_S = new OpCode (
-			0xff, 0x11,
-			Code.Ldloc_S, FlowControl.Next,
-			OpCodeType.Macro, OperandType.ShortInlineVar,
-			StackBehaviour.Pop0, StackBehaviour.Push1);
+			0xff << 0 | 0x11 << 8 | (byte) Code.Ldloc_S << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Macro << 0 | (byte) OperandType.ShortInlineVar << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Push1 << 24);
 
 		public static readonly OpCode Ldloca_S = new OpCode (
-			0xff, 0x12,
-			Code.Ldloca_S, FlowControl.Next,
-			OpCodeType.Macro, OperandType.ShortInlineVar,
-			StackBehaviour.Pop0, StackBehaviour.Pushi);
+			0xff << 0 | 0x12 << 8 | (byte) Code.Ldloca_S << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Macro << 0 | (byte) OperandType.ShortInlineVar << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Stloc_S = new OpCode (
-			0xff, 0x13,
-			Code.Stloc_S, FlowControl.Next,
-			OpCodeType.Macro, OperandType.ShortInlineVar,
-			StackBehaviour.Pop1, StackBehaviour.Push0);
+			0xff << 0 | 0x13 << 8 | (byte) Code.Stloc_S << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Macro << 0 | (byte) OperandType.ShortInlineVar << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Ldnull = new OpCode (
-			0xff, 0x14,
-			Code.Ldnull, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop0, StackBehaviour.Pushref);
+			0xff << 0 | 0x14 << 8 | (byte) Code.Ldnull << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Pushref << 24);
 
 		public static readonly OpCode Ldc_I4_M1 = new OpCode (
-			0xff, 0x15,
-			Code.Ldc_I4_M1, FlowControl.Next,
-			OpCodeType.Macro, OperandType.InlineNone,
-			StackBehaviour.Pop0, StackBehaviour.Pushi);
+			0xff << 0 | 0x15 << 8 | (byte) Code.Ldc_I4_M1 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Ldc_I4_0 = new OpCode (
-			0xff, 0x16,
-			Code.Ldc_I4_0, FlowControl.Next,
-			OpCodeType.Macro, OperandType.InlineNone,
-			StackBehaviour.Pop0, StackBehaviour.Pushi);
+			0xff << 0 | 0x16 << 8 | (byte) Code.Ldc_I4_0 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Ldc_I4_1 = new OpCode (
-			0xff, 0x17,
-			Code.Ldc_I4_1, FlowControl.Next,
-			OpCodeType.Macro, OperandType.InlineNone,
-			StackBehaviour.Pop0, StackBehaviour.Pushi);
+			0xff << 0 | 0x17 << 8 | (byte) Code.Ldc_I4_1 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Ldc_I4_2 = new OpCode (
-			0xff, 0x18,
-			Code.Ldc_I4_2, FlowControl.Next,
-			OpCodeType.Macro, OperandType.InlineNone,
-			StackBehaviour.Pop0, StackBehaviour.Pushi);
+			0xff << 0 | 0x18 << 8 | (byte) Code.Ldc_I4_2 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Ldc_I4_3 = new OpCode (
-			0xff, 0x19,
-			Code.Ldc_I4_3, FlowControl.Next,
-			OpCodeType.Macro, OperandType.InlineNone,
-			StackBehaviour.Pop0, StackBehaviour.Pushi);
+			0xff << 0 | 0x19 << 8 | (byte) Code.Ldc_I4_3 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Ldc_I4_4 = new OpCode (
-			0xff, 0x1a,
-			Code.Ldc_I4_4, FlowControl.Next,
-			OpCodeType.Macro, OperandType.InlineNone,
-			StackBehaviour.Pop0, StackBehaviour.Pushi);
+			0xff << 0 | 0x1a << 8 | (byte) Code.Ldc_I4_4 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Ldc_I4_5 = new OpCode (
-			0xff, 0x1b,
-			Code.Ldc_I4_5, FlowControl.Next,
-			OpCodeType.Macro, OperandType.InlineNone,
-			StackBehaviour.Pop0, StackBehaviour.Pushi);
+			0xff << 0 | 0x1b << 8 | (byte) Code.Ldc_I4_5 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Ldc_I4_6 = new OpCode (
-			0xff, 0x1c,
-			Code.Ldc_I4_6, FlowControl.Next,
-			OpCodeType.Macro, OperandType.InlineNone,
-			StackBehaviour.Pop0, StackBehaviour.Pushi);
+			0xff << 0 | 0x1c << 8 | (byte) Code.Ldc_I4_6 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Ldc_I4_7 = new OpCode (
-			0xff, 0x1d,
-			Code.Ldc_I4_7, FlowControl.Next,
-			OpCodeType.Macro, OperandType.InlineNone,
-			StackBehaviour.Pop0, StackBehaviour.Pushi);
+			0xff << 0 | 0x1d << 8 | (byte) Code.Ldc_I4_7 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Ldc_I4_8 = new OpCode (
-			0xff, 0x1e,
-			Code.Ldc_I4_8, FlowControl.Next,
-			OpCodeType.Macro, OperandType.InlineNone,
-			StackBehaviour.Pop0, StackBehaviour.Pushi);
+			0xff << 0 | 0x1e << 8 | (byte) Code.Ldc_I4_8 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Ldc_I4_S = new OpCode (
-			0xff, 0x1f,
-			Code.Ldc_I4_S, FlowControl.Next,
-			OpCodeType.Macro, OperandType.ShortInlineI,
-			StackBehaviour.Pop0, StackBehaviour.Pushi);
+			0xff << 0 | 0x1f << 8 | (byte) Code.Ldc_I4_S << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Macro << 0 | (byte) OperandType.ShortInlineI << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Ldc_I4 = new OpCode (
-			0xff, 0x20,
-			Code.Ldc_I4, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineI,
-			StackBehaviour.Pop0, StackBehaviour.Pushi);
+			0xff << 0 | 0x20 << 8 | (byte) Code.Ldc_I4 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineI << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Ldc_I8 = new OpCode (
-			0xff, 0x21,
-			Code.Ldc_I8, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineI8,
-			StackBehaviour.Pop0, StackBehaviour.Pushi8);
+			0xff << 0 | 0x21 << 8 | (byte) Code.Ldc_I8 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineI8 << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Pushi8 << 24);
 
 		public static readonly OpCode Ldc_R4 = new OpCode (
-			0xff, 0x22,
-			Code.Ldc_R4, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.ShortInlineR,
-			StackBehaviour.Pop0, StackBehaviour.Pushr4);
+			0xff << 0 | 0x22 << 8 | (byte) Code.Ldc_R4 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.ShortInlineR << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Pushr4 << 24);
 
 		public static readonly OpCode Ldc_R8 = new OpCode (
-			0xff, 0x23,
-			Code.Ldc_R8, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineR,
-			StackBehaviour.Pop0, StackBehaviour.Pushr8);
+			0xff << 0 | 0x23 << 8 | (byte) Code.Ldc_R8 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineR << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Pushr8 << 24);
 
 		public static readonly OpCode Dup = new OpCode (
-			0xff, 0x25,
-			Code.Dup, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1, StackBehaviour.Push1_push1);
+			0xff << 0 | 0x25 << 8 | (byte) Code.Dup << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Push1_push1 << 24);
 
 		public static readonly OpCode Pop = new OpCode (
-			0xff, 0x26,
-			Code.Pop, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1, StackBehaviour.Push0);
+			0xff << 0 | 0x26 << 8 | (byte) Code.Pop << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Jmp = new OpCode (
-			0xff, 0x27,
-			Code.Jmp, FlowControl.Call,
-			OpCodeType.Primitive, OperandType.InlineMethod,
-			StackBehaviour.Pop0, StackBehaviour.Push0);
+			0xff << 0 | 0x27 << 8 | (byte) Code.Jmp << 16 | (byte) FlowControl.Call << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineMethod << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Call = new OpCode (
-			0xff, 0x28,
-			Code.Call, FlowControl.Call,
-			OpCodeType.Primitive, OperandType.InlineMethod,
-			StackBehaviour.Varpop, StackBehaviour.Varpush);
+			0xff << 0 | 0x28 << 8 | (byte) Code.Call << 16 | (byte) FlowControl.Call << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineMethod << 8 | (byte) StackBehaviour.Varpop << 16 | (byte) StackBehaviour.Varpush << 24);
 
 		public static readonly OpCode Calli = new OpCode (
-			0xff, 0x29,
-			Code.Calli, FlowControl.Call,
-			OpCodeType.Primitive, OperandType.InlineSig,
-			StackBehaviour.Varpop, StackBehaviour.Varpush);
+			0xff << 0 | 0x29 << 8 | (byte) Code.Calli << 16 | (byte) FlowControl.Call << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineSig << 8 | (byte) StackBehaviour.Varpop << 16 | (byte) StackBehaviour.Varpush << 24);
 
 		public static readonly OpCode Ret = new OpCode (
-			0xff, 0x2a,
-			Code.Ret, FlowControl.Return,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Varpop, StackBehaviour.Push0);
+			0xff << 0 | 0x2a << 8 | (byte) Code.Ret << 16 | (byte) FlowControl.Return << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Varpop << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Br_S = new OpCode (
-			0xff, 0x2b,
-			Code.Br_S, FlowControl.Branch,
-			OpCodeType.Macro, OperandType.ShortInlineBrTarget,
-			StackBehaviour.Pop0, StackBehaviour.Push0);
+			0xff << 0 | 0x2b << 8 | (byte) Code.Br_S << 16 | (byte) FlowControl.Branch << 24,
+			(byte) OpCodeType.Macro << 0 | (byte) OperandType.ShortInlineBrTarget << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Brfalse_S = new OpCode (
-			0xff, 0x2c,
-			Code.Brfalse_S, FlowControl.Cond_Branch,
-			OpCodeType.Macro, OperandType.ShortInlineBrTarget,
-			StackBehaviour.Popi, StackBehaviour.Push0);
+			0xff << 0 | 0x2c << 8 | (byte) Code.Brfalse_S << 16 | (byte) FlowControl.Cond_Branch << 24,
+			(byte) OpCodeType.Macro << 0 | (byte) OperandType.ShortInlineBrTarget << 8 | (byte) StackBehaviour.Popi << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Brtrue_S = new OpCode (
-			0xff, 0x2d,
-			Code.Brtrue_S, FlowControl.Cond_Branch,
-			OpCodeType.Macro, OperandType.ShortInlineBrTarget,
-			StackBehaviour.Popi, StackBehaviour.Push0);
+			0xff << 0 | 0x2d << 8 | (byte) Code.Brtrue_S << 16 | (byte) FlowControl.Cond_Branch << 24,
+			(byte) OpCodeType.Macro << 0 | (byte) OperandType.ShortInlineBrTarget << 8 | (byte) StackBehaviour.Popi << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Beq_S = new OpCode (
-			0xff, 0x2e,
-			Code.Beq_S, FlowControl.Cond_Branch,
-			OpCodeType.Macro, OperandType.ShortInlineBrTarget,
-			StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+			0xff << 0 | 0x2e << 8 | (byte) Code.Beq_S << 16 | (byte) FlowControl.Cond_Branch << 24,
+			(byte) OpCodeType.Macro << 0 | (byte) OperandType.ShortInlineBrTarget << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Bge_S = new OpCode (
-			0xff, 0x2f,
-			Code.Bge_S, FlowControl.Cond_Branch,
-			OpCodeType.Macro, OperandType.ShortInlineBrTarget,
-			StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+			0xff << 0 | 0x2f << 8 | (byte) Code.Bge_S << 16 | (byte) FlowControl.Cond_Branch << 24,
+			(byte) OpCodeType.Macro << 0 | (byte) OperandType.ShortInlineBrTarget << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Bgt_S = new OpCode (
-			0xff, 0x30,
-			Code.Bgt_S, FlowControl.Cond_Branch,
-			OpCodeType.Macro, OperandType.ShortInlineBrTarget,
-			StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+			0xff << 0 | 0x30 << 8 | (byte) Code.Bgt_S << 16 | (byte) FlowControl.Cond_Branch << 24,
+			(byte) OpCodeType.Macro << 0 | (byte) OperandType.ShortInlineBrTarget << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Ble_S = new OpCode (
-			0xff, 0x31,
-			Code.Ble_S, FlowControl.Cond_Branch,
-			OpCodeType.Macro, OperandType.ShortInlineBrTarget,
-			StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+			0xff << 0 | 0x31 << 8 | (byte) Code.Ble_S << 16 | (byte) FlowControl.Cond_Branch << 24,
+			(byte) OpCodeType.Macro << 0 | (byte) OperandType.ShortInlineBrTarget << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Blt_S = new OpCode (
-			0xff, 0x32,
-			Code.Blt_S, FlowControl.Cond_Branch,
-			OpCodeType.Macro, OperandType.ShortInlineBrTarget,
-			StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+			0xff << 0 | 0x32 << 8 | (byte) Code.Blt_S << 16 | (byte) FlowControl.Cond_Branch << 24,
+			(byte) OpCodeType.Macro << 0 | (byte) OperandType.ShortInlineBrTarget << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Bne_Un_S = new OpCode (
-			0xff, 0x33,
-			Code.Bne_Un_S, FlowControl.Cond_Branch,
-			OpCodeType.Macro, OperandType.ShortInlineBrTarget,
-			StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+			0xff << 0 | 0x33 << 8 | (byte) Code.Bne_Un_S << 16 | (byte) FlowControl.Cond_Branch << 24,
+			(byte) OpCodeType.Macro << 0 | (byte) OperandType.ShortInlineBrTarget << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Bge_Un_S = new OpCode (
-			0xff, 0x34,
-			Code.Bge_Un_S, FlowControl.Cond_Branch,
-			OpCodeType.Macro, OperandType.ShortInlineBrTarget,
-			StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+			0xff << 0 | 0x34 << 8 | (byte) Code.Bge_Un_S << 16 | (byte) FlowControl.Cond_Branch << 24,
+			(byte) OpCodeType.Macro << 0 | (byte) OperandType.ShortInlineBrTarget << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Bgt_Un_S = new OpCode (
-			0xff, 0x35,
-			Code.Bgt_Un_S, FlowControl.Cond_Branch,
-			OpCodeType.Macro, OperandType.ShortInlineBrTarget,
-			StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+			0xff << 0 | 0x35 << 8 | (byte) Code.Bgt_Un_S << 16 | (byte) FlowControl.Cond_Branch << 24,
+			(byte) OpCodeType.Macro << 0 | (byte) OperandType.ShortInlineBrTarget << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Ble_Un_S = new OpCode (
-			0xff, 0x36,
-			Code.Ble_Un_S, FlowControl.Cond_Branch,
-			OpCodeType.Macro, OperandType.ShortInlineBrTarget,
-			StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+			0xff << 0 | 0x36 << 8 | (byte) Code.Ble_Un_S << 16 | (byte) FlowControl.Cond_Branch << 24,
+			(byte) OpCodeType.Macro << 0 | (byte) OperandType.ShortInlineBrTarget << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Blt_Un_S = new OpCode (
-			0xff, 0x37,
-			Code.Blt_Un_S, FlowControl.Cond_Branch,
-			OpCodeType.Macro, OperandType.ShortInlineBrTarget,
-			StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+			0xff << 0 | 0x37 << 8 | (byte) Code.Blt_Un_S << 16 | (byte) FlowControl.Cond_Branch << 24,
+			(byte) OpCodeType.Macro << 0 | (byte) OperandType.ShortInlineBrTarget << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Br = new OpCode (
-			0xff, 0x38,
-			Code.Br, FlowControl.Branch,
-			OpCodeType.Primitive, OperandType.InlineBrTarget,
-			StackBehaviour.Pop0, StackBehaviour.Push0);
+			0xff << 0 | 0x38 << 8 | (byte) Code.Br << 16 | (byte) FlowControl.Branch << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineBrTarget << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Brfalse = new OpCode (
-			0xff, 0x39,
-			Code.Brfalse, FlowControl.Cond_Branch,
-			OpCodeType.Primitive, OperandType.InlineBrTarget,
-			StackBehaviour.Popi, StackBehaviour.Push0);
+			0xff << 0 | 0x39 << 8 | (byte) Code.Brfalse << 16 | (byte) FlowControl.Cond_Branch << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineBrTarget << 8 | (byte) StackBehaviour.Popi << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Brtrue = new OpCode (
-			0xff, 0x3a,
-			Code.Brtrue, FlowControl.Cond_Branch,
-			OpCodeType.Primitive, OperandType.InlineBrTarget,
-			StackBehaviour.Popi, StackBehaviour.Push0);
+			0xff << 0 | 0x3a << 8 | (byte) Code.Brtrue << 16 | (byte) FlowControl.Cond_Branch << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineBrTarget << 8 | (byte) StackBehaviour.Popi << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Beq = new OpCode (
-			0xff, 0x3b,
-			Code.Beq, FlowControl.Cond_Branch,
-			OpCodeType.Macro, OperandType.InlineBrTarget,
-			StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+			0xff << 0 | 0x3b << 8 | (byte) Code.Beq << 16 | (byte) FlowControl.Cond_Branch << 24,
+			(byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineBrTarget << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Bge = new OpCode (
-			0xff, 0x3c,
-			Code.Bge, FlowControl.Cond_Branch,
-			OpCodeType.Macro, OperandType.InlineBrTarget,
-			StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+			0xff << 0 | 0x3c << 8 | (byte) Code.Bge << 16 | (byte) FlowControl.Cond_Branch << 24,
+			(byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineBrTarget << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Bgt = new OpCode (
-			0xff, 0x3d,
-			Code.Bgt, FlowControl.Cond_Branch,
-			OpCodeType.Macro, OperandType.InlineBrTarget,
-			StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+			0xff << 0 | 0x3d << 8 | (byte) Code.Bgt << 16 | (byte) FlowControl.Cond_Branch << 24,
+			(byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineBrTarget << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Ble = new OpCode (
-			0xff, 0x3e,
-			Code.Ble, FlowControl.Cond_Branch,
-			OpCodeType.Macro, OperandType.InlineBrTarget,
-			StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+			0xff << 0 | 0x3e << 8 | (byte) Code.Ble << 16 | (byte) FlowControl.Cond_Branch << 24,
+			(byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineBrTarget << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Blt = new OpCode (
-			0xff, 0x3f,
-			Code.Blt, FlowControl.Cond_Branch,
-			OpCodeType.Macro, OperandType.InlineBrTarget,
-			StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+			0xff << 0 | 0x3f << 8 | (byte) Code.Blt << 16 | (byte) FlowControl.Cond_Branch << 24,
+			(byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineBrTarget << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Bne_Un = new OpCode (
-			0xff, 0x40,
-			Code.Bne_Un, FlowControl.Cond_Branch,
-			OpCodeType.Macro, OperandType.InlineBrTarget,
-			StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+			0xff << 0 | 0x40 << 8 | (byte) Code.Bne_Un << 16 | (byte) FlowControl.Cond_Branch << 24,
+			(byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineBrTarget << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Bge_Un = new OpCode (
-			0xff, 0x41,
-			Code.Bge_Un, FlowControl.Cond_Branch,
-			OpCodeType.Macro, OperandType.InlineBrTarget,
-			StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+			0xff << 0 | 0x41 << 8 | (byte) Code.Bge_Un << 16 | (byte) FlowControl.Cond_Branch << 24,
+			(byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineBrTarget << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Bgt_Un = new OpCode (
-			0xff, 0x42,
-			Code.Bgt_Un, FlowControl.Cond_Branch,
-			OpCodeType.Macro, OperandType.InlineBrTarget,
-			StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+			0xff << 0 | 0x42 << 8 | (byte) Code.Bgt_Un << 16 | (byte) FlowControl.Cond_Branch << 24,
+			(byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineBrTarget << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Ble_Un = new OpCode (
-			0xff, 0x43,
-			Code.Ble_Un, FlowControl.Cond_Branch,
-			OpCodeType.Macro, OperandType.InlineBrTarget,
-			StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+			0xff << 0 | 0x43 << 8 | (byte) Code.Ble_Un << 16 | (byte) FlowControl.Cond_Branch << 24,
+			(byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineBrTarget << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Blt_Un = new OpCode (
-			0xff, 0x44,
-			Code.Blt_Un, FlowControl.Cond_Branch,
-			OpCodeType.Macro, OperandType.InlineBrTarget,
-			StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+			0xff << 0 | 0x44 << 8 | (byte) Code.Blt_Un << 16 | (byte) FlowControl.Cond_Branch << 24,
+			(byte) OpCodeType.Macro << 0 | (byte) OperandType.InlineBrTarget << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Switch = new OpCode (
-			0xff, 0x45,
-			Code.Switch, FlowControl.Cond_Branch,
-			OpCodeType.Primitive, OperandType.InlineSwitch,
-			StackBehaviour.Popi, StackBehaviour.Push0);
+			0xff << 0 | 0x45 << 8 | (byte) Code.Switch << 16 | (byte) FlowControl.Cond_Branch << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineSwitch << 8 | (byte) StackBehaviour.Popi << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Ldind_I1 = new OpCode (
-			0xff, 0x46,
-			Code.Ldind_I1, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Popi, StackBehaviour.Pushi);
+			0xff << 0 | 0x46 << 8 | (byte) Code.Ldind_I1 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popi << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Ldind_U1 = new OpCode (
-			0xff, 0x47,
-			Code.Ldind_U1, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Popi, StackBehaviour.Pushi);
+			0xff << 0 | 0x47 << 8 | (byte) Code.Ldind_U1 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popi << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Ldind_I2 = new OpCode (
-			0xff, 0x48,
-			Code.Ldind_I2, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Popi, StackBehaviour.Pushi);
+			0xff << 0 | 0x48 << 8 | (byte) Code.Ldind_I2 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popi << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Ldind_U2 = new OpCode (
-			0xff, 0x49,
-			Code.Ldind_U2, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Popi, StackBehaviour.Pushi);
+			0xff << 0 | 0x49 << 8 | (byte) Code.Ldind_U2 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popi << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Ldind_I4 = new OpCode (
-			0xff, 0x4a,
-			Code.Ldind_I4, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Popi, StackBehaviour.Pushi);
+			0xff << 0 | 0x4a << 8 | (byte) Code.Ldind_I4 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popi << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Ldind_U4 = new OpCode (
-			0xff, 0x4b,
-			Code.Ldind_U4, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Popi, StackBehaviour.Pushi);
+			0xff << 0 | 0x4b << 8 | (byte) Code.Ldind_U4 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popi << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Ldind_I8 = new OpCode (
-			0xff, 0x4c,
-			Code.Ldind_I8, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Popi, StackBehaviour.Pushi8);
+			0xff << 0 | 0x4c << 8 | (byte) Code.Ldind_I8 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popi << 16 | (byte) StackBehaviour.Pushi8 << 24);
 
 		public static readonly OpCode Ldind_I = new OpCode (
-			0xff, 0x4d,
-			Code.Ldind_I, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Popi, StackBehaviour.Pushi);
+			0xff << 0 | 0x4d << 8 | (byte) Code.Ldind_I << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popi << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Ldind_R4 = new OpCode (
-			0xff, 0x4e,
-			Code.Ldind_R4, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Popi, StackBehaviour.Pushr4);
+			0xff << 0 | 0x4e << 8 | (byte) Code.Ldind_R4 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popi << 16 | (byte) StackBehaviour.Pushr4 << 24);
 
 		public static readonly OpCode Ldind_R8 = new OpCode (
-			0xff, 0x4f,
-			Code.Ldind_R8, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Popi, StackBehaviour.Pushr8);
+			0xff << 0 | 0x4f << 8 | (byte) Code.Ldind_R8 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popi << 16 | (byte) StackBehaviour.Pushr8 << 24);
 
 		public static readonly OpCode Ldind_Ref = new OpCode (
-			0xff, 0x50,
-			Code.Ldind_Ref, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Popi, StackBehaviour.Pushref);
+			0xff << 0 | 0x50 << 8 | (byte) Code.Ldind_Ref << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popi << 16 | (byte) StackBehaviour.Pushref << 24);
 
 		public static readonly OpCode Stind_Ref = new OpCode (
-			0xff, 0x51,
-			Code.Stind_Ref, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Popi_popi, StackBehaviour.Push0);
+			0xff << 0 | 0x51 << 8 | (byte) Code.Stind_Ref << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popi_popi << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Stind_I1 = new OpCode (
-			0xff, 0x52,
-			Code.Stind_I1, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Popi_popi, StackBehaviour.Push0);
+			0xff << 0 | 0x52 << 8 | (byte) Code.Stind_I1 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popi_popi << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Stind_I2 = new OpCode (
-			0xff, 0x53,
-			Code.Stind_I2, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Popi_popi, StackBehaviour.Push0);
+			0xff << 0 | 0x53 << 8 | (byte) Code.Stind_I2 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popi_popi << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Stind_I4 = new OpCode (
-			0xff, 0x54,
-			Code.Stind_I4, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Popi_popi, StackBehaviour.Push0);
+			0xff << 0 | 0x54 << 8 | (byte) Code.Stind_I4 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popi_popi << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Stind_I8 = new OpCode (
-			0xff, 0x55,
-			Code.Stind_I8, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Popi_popi8, StackBehaviour.Push0);
+			0xff << 0 | 0x55 << 8 | (byte) Code.Stind_I8 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popi_popi8 << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Stind_R4 = new OpCode (
-			0xff, 0x56,
-			Code.Stind_R4, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Popi_popr4, StackBehaviour.Push0);
+			0xff << 0 | 0x56 << 8 | (byte) Code.Stind_R4 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popi_popr4 << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Stind_R8 = new OpCode (
-			0xff, 0x57,
-			Code.Stind_R8, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Popi_popr8, StackBehaviour.Push0);
+			0xff << 0 | 0x57 << 8 | (byte) Code.Stind_R8 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popi_popr8 << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Add = new OpCode (
-			0xff, 0x58,
-			Code.Add, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+			0xff << 0 | 0x58 << 8 | (byte) Code.Add << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push1 << 24);
 
 		public static readonly OpCode Sub = new OpCode (
-			0xff, 0x59,
-			Code.Sub, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+			0xff << 0 | 0x59 << 8 | (byte) Code.Sub << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push1 << 24);
 
 		public static readonly OpCode Mul = new OpCode (
-			0xff, 0x5a,
-			Code.Mul, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+			0xff << 0 | 0x5a << 8 | (byte) Code.Mul << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push1 << 24);
 
 		public static readonly OpCode Div = new OpCode (
-			0xff, 0x5b,
-			Code.Div, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+			0xff << 0 | 0x5b << 8 | (byte) Code.Div << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push1 << 24);
 
 		public static readonly OpCode Div_Un = new OpCode (
-			0xff, 0x5c,
-			Code.Div_Un, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+			0xff << 0 | 0x5c << 8 | (byte) Code.Div_Un << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push1 << 24);
 
 		public static readonly OpCode Rem = new OpCode (
-			0xff, 0x5d,
-			Code.Rem, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+			0xff << 0 | 0x5d << 8 | (byte) Code.Rem << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push1 << 24);
 
 		public static readonly OpCode Rem_Un = new OpCode (
-			0xff, 0x5e,
-			Code.Rem_Un, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+			0xff << 0 | 0x5e << 8 | (byte) Code.Rem_Un << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push1 << 24);
 
 		public static readonly OpCode And = new OpCode (
-			0xff, 0x5f,
-			Code.And, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+			0xff << 0 | 0x5f << 8 | (byte) Code.And << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push1 << 24);
 
 		public static readonly OpCode Or = new OpCode (
-			0xff, 0x60,
-			Code.Or, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+			0xff << 0 | 0x60 << 8 | (byte) Code.Or << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push1 << 24);
 
 		public static readonly OpCode Xor = new OpCode (
-			0xff, 0x61,
-			Code.Xor, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+			0xff << 0 | 0x61 << 8 | (byte) Code.Xor << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push1 << 24);
 
 		public static readonly OpCode Shl = new OpCode (
-			0xff, 0x62,
-			Code.Shl, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+			0xff << 0 | 0x62 << 8 | (byte) Code.Shl << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push1 << 24);
 
 		public static readonly OpCode Shr = new OpCode (
-			0xff, 0x63,
-			Code.Shr, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+			0xff << 0 | 0x63 << 8 | (byte) Code.Shr << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push1 << 24);
 
 		public static readonly OpCode Shr_Un = new OpCode (
-			0xff, 0x64,
-			Code.Shr_Un, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+			0xff << 0 | 0x64 << 8 | (byte) Code.Shr_Un << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push1 << 24);
 
 		public static readonly OpCode Neg = new OpCode (
-			0xff, 0x65,
-			Code.Neg, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1, StackBehaviour.Push1);
+			0xff << 0 | 0x65 << 8 | (byte) Code.Neg << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Push1 << 24);
 
 		public static readonly OpCode Not = new OpCode (
-			0xff, 0x66,
-			Code.Not, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1, StackBehaviour.Push1);
+			0xff << 0 | 0x66 << 8 | (byte) Code.Not << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Push1 << 24);
 
 		public static readonly OpCode Conv_I1 = new OpCode (
-			0xff, 0x67,
-			Code.Conv_I1, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1, StackBehaviour.Pushi);
+			0xff << 0 | 0x67 << 8 | (byte) Code.Conv_I1 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Conv_I2 = new OpCode (
-			0xff, 0x68,
-			Code.Conv_I2, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1, StackBehaviour.Pushi);
+			0xff << 0 | 0x68 << 8 | (byte) Code.Conv_I2 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Conv_I4 = new OpCode (
-			0xff, 0x69,
-			Code.Conv_I4, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1, StackBehaviour.Pushi);
+			0xff << 0 | 0x69 << 8 | (byte) Code.Conv_I4 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Conv_I8 = new OpCode (
-			0xff, 0x6a,
-			Code.Conv_I8, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1, StackBehaviour.Pushi8);
+			0xff << 0 | 0x6a << 8 | (byte) Code.Conv_I8 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi8 << 24);
 
 		public static readonly OpCode Conv_R4 = new OpCode (
-			0xff, 0x6b,
-			Code.Conv_R4, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1, StackBehaviour.Pushr4);
+			0xff << 0 | 0x6b << 8 | (byte) Code.Conv_R4 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushr4 << 24);
 
 		public static readonly OpCode Conv_R8 = new OpCode (
-			0xff, 0x6c,
-			Code.Conv_R8, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1, StackBehaviour.Pushr8);
+			0xff << 0 | 0x6c << 8 | (byte) Code.Conv_R8 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushr8 << 24);
 
 		public static readonly OpCode Conv_U4 = new OpCode (
-			0xff, 0x6d,
-			Code.Conv_U4, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1, StackBehaviour.Pushi);
+			0xff << 0 | 0x6d << 8 | (byte) Code.Conv_U4 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Conv_U8 = new OpCode (
-			0xff, 0x6e,
-			Code.Conv_U8, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1, StackBehaviour.Pushi8);
+			0xff << 0 | 0x6e << 8 | (byte) Code.Conv_U8 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi8 << 24);
 
 		public static readonly OpCode Callvirt = new OpCode (
-			0xff, 0x6f,
-			Code.Callvirt, FlowControl.Call,
-			OpCodeType.Objmodel, OperandType.InlineMethod,
-			StackBehaviour.Varpop, StackBehaviour.Varpush);
+			0xff << 0 | 0x6f << 8 | (byte) Code.Callvirt << 16 | (byte) FlowControl.Call << 24,
+			(byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineMethod << 8 | (byte) StackBehaviour.Varpop << 16 | (byte) StackBehaviour.Varpush << 24);
 
 		public static readonly OpCode Cpobj = new OpCode (
-			0xff, 0x70,
-			Code.Cpobj, FlowControl.Next,
-			OpCodeType.Objmodel, OperandType.InlineType,
-			StackBehaviour.Popi_popi, StackBehaviour.Push0);
+			0xff << 0 | 0x70 << 8 | (byte) Code.Cpobj << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineType << 8 | (byte) StackBehaviour.Popi_popi << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Ldobj = new OpCode (
-			0xff, 0x71,
-			Code.Ldobj, FlowControl.Next,
-			OpCodeType.Objmodel, OperandType.InlineType,
-			StackBehaviour.Popi, StackBehaviour.Push1);
+			0xff << 0 | 0x71 << 8 | (byte) Code.Ldobj << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineType << 8 | (byte) StackBehaviour.Popi << 16 | (byte) StackBehaviour.Push1 << 24);
 
 		public static readonly OpCode Ldstr = new OpCode (
-			0xff, 0x72,
-			Code.Ldstr, FlowControl.Next,
-			OpCodeType.Objmodel, OperandType.InlineString,
-			StackBehaviour.Pop0, StackBehaviour.Pushref);
+			0xff << 0 | 0x72 << 8 | (byte) Code.Ldstr << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineString << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Pushref << 24);
 
 		public static readonly OpCode Newobj = new OpCode (
-			0xff, 0x73,
-			Code.Newobj, FlowControl.Call,
-			OpCodeType.Objmodel, OperandType.InlineMethod,
-			StackBehaviour.Varpop, StackBehaviour.Pushref);
+			0xff << 0 | 0x73 << 8 | (byte) Code.Newobj << 16 | (byte) FlowControl.Call << 24,
+			(byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineMethod << 8 | (byte) StackBehaviour.Varpop << 16 | (byte) StackBehaviour.Pushref << 24);
 
 		public static readonly OpCode Castclass = new OpCode (
-			0xff, 0x74,
-			Code.Castclass, FlowControl.Next,
-			OpCodeType.Objmodel, OperandType.InlineType,
-			StackBehaviour.Popref, StackBehaviour.Pushref);
+			0xff << 0 | 0x74 << 8 | (byte) Code.Castclass << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineType << 8 | (byte) StackBehaviour.Popref << 16 | (byte) StackBehaviour.Pushref << 24);
 
 		public static readonly OpCode Isinst = new OpCode (
-			0xff, 0x75,
-			Code.Isinst, FlowControl.Next,
-			OpCodeType.Objmodel, OperandType.InlineType,
-			StackBehaviour.Popref, StackBehaviour.Pushi);
+			0xff << 0 | 0x75 << 8 | (byte) Code.Isinst << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineType << 8 | (byte) StackBehaviour.Popref << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Conv_R_Un = new OpCode (
-			0xff, 0x76,
-			Code.Conv_R_Un, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1, StackBehaviour.Pushr8);
+			0xff << 0 | 0x76 << 8 | (byte) Code.Conv_R_Un << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushr8 << 24);
 
 		public static readonly OpCode Unbox = new OpCode (
-			0xff, 0x79,
-			Code.Unbox, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineType,
-			StackBehaviour.Popref, StackBehaviour.Pushi);
+			0xff << 0 | 0x79 << 8 | (byte) Code.Unbox << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineType << 8 | (byte) StackBehaviour.Popref << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Throw = new OpCode (
-			0xff, 0x7a,
-			Code.Throw, FlowControl.Throw,
-			OpCodeType.Objmodel, OperandType.InlineNone,
-			StackBehaviour.Popref, StackBehaviour.Push0);
+			0xff << 0 | 0x7a << 8 | (byte) Code.Throw << 16 | (byte) FlowControl.Throw << 24,
+			(byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popref << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Ldfld = new OpCode (
-			0xff, 0x7b,
-			Code.Ldfld, FlowControl.Next,
-			OpCodeType.Objmodel, OperandType.InlineField,
-			StackBehaviour.Popref, StackBehaviour.Push1);
+			0xff << 0 | 0x7b << 8 | (byte) Code.Ldfld << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineField << 8 | (byte) StackBehaviour.Popref << 16 | (byte) StackBehaviour.Push1 << 24);
 
 		public static readonly OpCode Ldflda = new OpCode (
-			0xff, 0x7c,
-			Code.Ldflda, FlowControl.Next,
-			OpCodeType.Objmodel, OperandType.InlineField,
-			StackBehaviour.Popref, StackBehaviour.Pushi);
+			0xff << 0 | 0x7c << 8 | (byte) Code.Ldflda << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineField << 8 | (byte) StackBehaviour.Popref << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Stfld = new OpCode (
-			0xff, 0x7d,
-			Code.Stfld, FlowControl.Next,
-			OpCodeType.Objmodel, OperandType.InlineField,
-			StackBehaviour.Popref_pop1, StackBehaviour.Push0);
+			0xff << 0 | 0x7d << 8 | (byte) Code.Stfld << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineField << 8 | (byte) StackBehaviour.Popref_pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Ldsfld = new OpCode (
-			0xff, 0x7e,
-			Code.Ldsfld, FlowControl.Next,
-			OpCodeType.Objmodel, OperandType.InlineField,
-			StackBehaviour.Pop0, StackBehaviour.Push1);
+			0xff << 0 | 0x7e << 8 | (byte) Code.Ldsfld << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineField << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Push1 << 24);
 
 		public static readonly OpCode Ldsflda = new OpCode (
-			0xff, 0x7f,
-			Code.Ldsflda, FlowControl.Next,
-			OpCodeType.Objmodel, OperandType.InlineField,
-			StackBehaviour.Pop0, StackBehaviour.Pushi);
+			0xff << 0 | 0x7f << 8 | (byte) Code.Ldsflda << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineField << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Stsfld = new OpCode (
-			0xff, 0x80,
-			Code.Stsfld, FlowControl.Next,
-			OpCodeType.Objmodel, OperandType.InlineField,
-			StackBehaviour.Pop1, StackBehaviour.Push0);
+			0xff << 0 | 0x80 << 8 | (byte) Code.Stsfld << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineField << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Stobj = new OpCode (
-			0xff, 0x81,
-			Code.Stobj, FlowControl.Next,
-			OpCodeType.Objmodel, OperandType.InlineType,
-			StackBehaviour.Popi_pop1, StackBehaviour.Push0);
+			0xff << 0 | 0x81 << 8 | (byte) Code.Stobj << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineType << 8 | (byte) StackBehaviour.Popi_pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Conv_Ovf_I1_Un = new OpCode (
-			0xff, 0x82,
-			Code.Conv_Ovf_I1_Un, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1, StackBehaviour.Pushi);
+			0xff << 0 | 0x82 << 8 | (byte) Code.Conv_Ovf_I1_Un << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Conv_Ovf_I2_Un = new OpCode (
-			0xff, 0x83,
-			Code.Conv_Ovf_I2_Un, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1, StackBehaviour.Pushi);
+			0xff << 0 | 0x83 << 8 | (byte) Code.Conv_Ovf_I2_Un << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Conv_Ovf_I4_Un = new OpCode (
-			0xff, 0x84,
-			Code.Conv_Ovf_I4_Un, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1, StackBehaviour.Pushi);
+			0xff << 0 | 0x84 << 8 | (byte) Code.Conv_Ovf_I4_Un << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Conv_Ovf_I8_Un = new OpCode (
-			0xff, 0x85,
-			Code.Conv_Ovf_I8_Un, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1, StackBehaviour.Pushi8);
+			0xff << 0 | 0x85 << 8 | (byte) Code.Conv_Ovf_I8_Un << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi8 << 24);
 
 		public static readonly OpCode Conv_Ovf_U1_Un = new OpCode (
-			0xff, 0x86,
-			Code.Conv_Ovf_U1_Un, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1, StackBehaviour.Pushi);
+			0xff << 0 | 0x86 << 8 | (byte) Code.Conv_Ovf_U1_Un << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Conv_Ovf_U2_Un = new OpCode (
-			0xff, 0x87,
-			Code.Conv_Ovf_U2_Un, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1, StackBehaviour.Pushi);
+			0xff << 0 | 0x87 << 8 | (byte) Code.Conv_Ovf_U2_Un << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Conv_Ovf_U4_Un = new OpCode (
-			0xff, 0x88,
-			Code.Conv_Ovf_U4_Un, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1, StackBehaviour.Pushi);
+			0xff << 0 | 0x88 << 8 | (byte) Code.Conv_Ovf_U4_Un << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Conv_Ovf_U8_Un = new OpCode (
-			0xff, 0x89,
-			Code.Conv_Ovf_U8_Un, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1, StackBehaviour.Pushi8);
+			0xff << 0 | 0x89 << 8 | (byte) Code.Conv_Ovf_U8_Un << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi8 << 24);
 
 		public static readonly OpCode Conv_Ovf_I_Un = new OpCode (
-			0xff, 0x8a,
-			Code.Conv_Ovf_I_Un, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1, StackBehaviour.Pushi);
+			0xff << 0 | 0x8a << 8 | (byte) Code.Conv_Ovf_I_Un << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Conv_Ovf_U_Un = new OpCode (
-			0xff, 0x8b,
-			Code.Conv_Ovf_U_Un, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1, StackBehaviour.Pushi);
+			0xff << 0 | 0x8b << 8 | (byte) Code.Conv_Ovf_U_Un << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Box = new OpCode (
-			0xff, 0x8c,
-			Code.Box, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineType,
-			StackBehaviour.Pop1, StackBehaviour.Pushref);
+			0xff << 0 | 0x8c << 8 | (byte) Code.Box << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineType << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushref << 24);
 
 		public static readonly OpCode Newarr = new OpCode (
-			0xff, 0x8d,
-			Code.Newarr, FlowControl.Next,
-			OpCodeType.Objmodel, OperandType.InlineType,
-			StackBehaviour.Popi, StackBehaviour.Pushref);
+			0xff << 0 | 0x8d << 8 | (byte) Code.Newarr << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineType << 8 | (byte) StackBehaviour.Popi << 16 | (byte) StackBehaviour.Pushref << 24);
 
 		public static readonly OpCode Ldlen = new OpCode (
-			0xff, 0x8e,
-			Code.Ldlen, FlowControl.Next,
-			OpCodeType.Objmodel, OperandType.InlineNone,
-			StackBehaviour.Popref, StackBehaviour.Pushi);
+			0xff << 0 | 0x8e << 8 | (byte) Code.Ldlen << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popref << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Ldelema = new OpCode (
-			0xff, 0x8f,
-			Code.Ldelema, FlowControl.Next,
-			OpCodeType.Objmodel, OperandType.InlineType,
-			StackBehaviour.Popref_popi, StackBehaviour.Pushi);
+			0xff << 0 | 0x8f << 8 | (byte) Code.Ldelema << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineType << 8 | (byte) StackBehaviour.Popref_popi << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Ldelem_I1 = new OpCode (
-			0xff, 0x90,
-			Code.Ldelem_I1, FlowControl.Next,
-			OpCodeType.Objmodel, OperandType.InlineNone,
-			StackBehaviour.Popref_popi, StackBehaviour.Pushi);
+			0xff << 0 | 0x90 << 8 | (byte) Code.Ldelem_I1 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popref_popi << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Ldelem_U1 = new OpCode (
-			0xff, 0x91,
-			Code.Ldelem_U1, FlowControl.Next,
-			OpCodeType.Objmodel, OperandType.InlineNone,
-			StackBehaviour.Popref_popi, StackBehaviour.Pushi);
+			0xff << 0 | 0x91 << 8 | (byte) Code.Ldelem_U1 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popref_popi << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Ldelem_I2 = new OpCode (
-			0xff, 0x92,
-			Code.Ldelem_I2, FlowControl.Next,
-			OpCodeType.Objmodel, OperandType.InlineNone,
-			StackBehaviour.Popref_popi, StackBehaviour.Pushi);
+			0xff << 0 | 0x92 << 8 | (byte) Code.Ldelem_I2 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popref_popi << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Ldelem_U2 = new OpCode (
-			0xff, 0x93,
-			Code.Ldelem_U2, FlowControl.Next,
-			OpCodeType.Objmodel, OperandType.InlineNone,
-			StackBehaviour.Popref_popi, StackBehaviour.Pushi);
+			0xff << 0 | 0x93 << 8 | (byte) Code.Ldelem_U2 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popref_popi << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Ldelem_I4 = new OpCode (
-			0xff, 0x94,
-			Code.Ldelem_I4, FlowControl.Next,
-			OpCodeType.Objmodel, OperandType.InlineNone,
-			StackBehaviour.Popref_popi, StackBehaviour.Pushi);
+			0xff << 0 | 0x94 << 8 | (byte) Code.Ldelem_I4 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popref_popi << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Ldelem_U4 = new OpCode (
-			0xff, 0x95,
-			Code.Ldelem_U4, FlowControl.Next,
-			OpCodeType.Objmodel, OperandType.InlineNone,
-			StackBehaviour.Popref_popi, StackBehaviour.Pushi);
+			0xff << 0 | 0x95 << 8 | (byte) Code.Ldelem_U4 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popref_popi << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Ldelem_I8 = new OpCode (
-			0xff, 0x96,
-			Code.Ldelem_I8, FlowControl.Next,
-			OpCodeType.Objmodel, OperandType.InlineNone,
-			StackBehaviour.Popref_popi, StackBehaviour.Pushi8);
+			0xff << 0 | 0x96 << 8 | (byte) Code.Ldelem_I8 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popref_popi << 16 | (byte) StackBehaviour.Pushi8 << 24);
 
 		public static readonly OpCode Ldelem_I = new OpCode (
-			0xff, 0x97,
-			Code.Ldelem_I, FlowControl.Next,
-			OpCodeType.Objmodel, OperandType.InlineNone,
-			StackBehaviour.Popref_popi, StackBehaviour.Pushi);
+			0xff << 0 | 0x97 << 8 | (byte) Code.Ldelem_I << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popref_popi << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Ldelem_R4 = new OpCode (
-			0xff, 0x98,
-			Code.Ldelem_R4, FlowControl.Next,
-			OpCodeType.Objmodel, OperandType.InlineNone,
-			StackBehaviour.Popref_popi, StackBehaviour.Pushr4);
+			0xff << 0 | 0x98 << 8 | (byte) Code.Ldelem_R4 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popref_popi << 16 | (byte) StackBehaviour.Pushr4 << 24);
 
 		public static readonly OpCode Ldelem_R8 = new OpCode (
-			0xff, 0x99,
-			Code.Ldelem_R8, FlowControl.Next,
-			OpCodeType.Objmodel, OperandType.InlineNone,
-			StackBehaviour.Popref_popi, StackBehaviour.Pushr8);
+			0xff << 0 | 0x99 << 8 | (byte) Code.Ldelem_R8 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popref_popi << 16 | (byte) StackBehaviour.Pushr8 << 24);
 
 		public static readonly OpCode Ldelem_Ref = new OpCode (
-			0xff, 0x9a,
-			Code.Ldelem_Ref, FlowControl.Next,
-			OpCodeType.Objmodel, OperandType.InlineNone,
-			StackBehaviour.Popref_popi, StackBehaviour.Pushref);
+			0xff << 0 | 0x9a << 8 | (byte) Code.Ldelem_Ref << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popref_popi << 16 | (byte) StackBehaviour.Pushref << 24);
 
 		public static readonly OpCode Stelem_I = new OpCode (
-			0xff, 0x9b,
-			Code.Stelem_I, FlowControl.Next,
-			OpCodeType.Objmodel, OperandType.InlineNone,
-			StackBehaviour.Popref_popi_popi, StackBehaviour.Push0);
+			0xff << 0 | 0x9b << 8 | (byte) Code.Stelem_I << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popref_popi_popi << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Stelem_I1 = new OpCode (
-			0xff, 0x9c,
-			Code.Stelem_I1, FlowControl.Next,
-			OpCodeType.Objmodel, OperandType.InlineNone,
-			StackBehaviour.Popref_popi_popi, StackBehaviour.Push0);
+			0xff << 0 | 0x9c << 8 | (byte) Code.Stelem_I1 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popref_popi_popi << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Stelem_I2 = new OpCode (
-			0xff, 0x9d,
-			Code.Stelem_I2, FlowControl.Next,
-			OpCodeType.Objmodel, OperandType.InlineNone,
-			StackBehaviour.Popref_popi_popi, StackBehaviour.Push0);
+			0xff << 0 | 0x9d << 8 | (byte) Code.Stelem_I2 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popref_popi_popi << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Stelem_I4 = new OpCode (
-			0xff, 0x9e,
-			Code.Stelem_I4, FlowControl.Next,
-			OpCodeType.Objmodel, OperandType.InlineNone,
-			StackBehaviour.Popref_popi_popi, StackBehaviour.Push0);
+			0xff << 0 | 0x9e << 8 | (byte) Code.Stelem_I4 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popref_popi_popi << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Stelem_I8 = new OpCode (
-			0xff, 0x9f,
-			Code.Stelem_I8, FlowControl.Next,
-			OpCodeType.Objmodel, OperandType.InlineNone,
-			StackBehaviour.Popref_popi_popi8, StackBehaviour.Push0);
+			0xff << 0 | 0x9f << 8 | (byte) Code.Stelem_I8 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popref_popi_popi8 << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Stelem_R4 = new OpCode (
-			0xff, 0xa0,
-			Code.Stelem_R4, FlowControl.Next,
-			OpCodeType.Objmodel, OperandType.InlineNone,
-			StackBehaviour.Popref_popi_popr4, StackBehaviour.Push0);
+			0xff << 0 | 0xa0 << 8 | (byte) Code.Stelem_R4 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popref_popi_popr4 << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Stelem_R8 = new OpCode (
-			0xff, 0xa1,
-			Code.Stelem_R8, FlowControl.Next,
-			OpCodeType.Objmodel, OperandType.InlineNone,
-			StackBehaviour.Popref_popi_popr8, StackBehaviour.Push0);
+			0xff << 0 | 0xa1 << 8 | (byte) Code.Stelem_R8 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popref_popi_popr8 << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Stelem_Ref = new OpCode (
-			0xff, 0xa2,
-			Code.Stelem_Ref, FlowControl.Next,
-			OpCodeType.Objmodel, OperandType.InlineNone,
-			StackBehaviour.Popref_popi_popref, StackBehaviour.Push0);
+			0xff << 0 | 0xa2 << 8 | (byte) Code.Stelem_Ref << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popref_popi_popref << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Ldelem_Any = new OpCode (
-			0xff, 0xa3,
-			Code.Ldelem_Any, FlowControl.Next,
-			OpCodeType.Objmodel, OperandType.InlineType,
-			StackBehaviour.Popref_popi, StackBehaviour.Push1);
+			0xff << 0 | 0xa3 << 8 | (byte) Code.Ldelem_Any << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineType << 8 | (byte) StackBehaviour.Popref_popi << 16 | (byte) StackBehaviour.Push1 << 24);
 
 		public static readonly OpCode Stelem_Any = new OpCode (
-			0xff, 0xa4,
-			Code.Stelem_Any, FlowControl.Next,
-			OpCodeType.Objmodel, OperandType.InlineType,
-			StackBehaviour.Popref_popi_popref, StackBehaviour.Push0);
+			0xff << 0 | 0xa4 << 8 | (byte) Code.Stelem_Any << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineType << 8 | (byte) StackBehaviour.Popref_popi_popref << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Unbox_Any = new OpCode (
-			0xff, 0xa5,
-			Code.Unbox_Any, FlowControl.Next,
-			OpCodeType.Objmodel, OperandType.InlineType,
-			StackBehaviour.Popref, StackBehaviour.Push1);
+			0xff << 0 | 0xa5 << 8 | (byte) Code.Unbox_Any << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineType << 8 | (byte) StackBehaviour.Popref << 16 | (byte) StackBehaviour.Push1 << 24);
 
 		public static readonly OpCode Conv_Ovf_I1 = new OpCode (
-			0xff, 0xb3,
-			Code.Conv_Ovf_I1, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1, StackBehaviour.Pushi);
+			0xff << 0 | 0xb3 << 8 | (byte) Code.Conv_Ovf_I1 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Conv_Ovf_U1 = new OpCode (
-			0xff, 0xb4,
-			Code.Conv_Ovf_U1, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1, StackBehaviour.Pushi);
+			0xff << 0 | 0xb4 << 8 | (byte) Code.Conv_Ovf_U1 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Conv_Ovf_I2 = new OpCode (
-			0xff, 0xb5,
-			Code.Conv_Ovf_I2, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1, StackBehaviour.Pushi);
+			0xff << 0 | 0xb5 << 8 | (byte) Code.Conv_Ovf_I2 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Conv_Ovf_U2 = new OpCode (
-			0xff, 0xb6,
-			Code.Conv_Ovf_U2, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1, StackBehaviour.Pushi);
+			0xff << 0 | 0xb6 << 8 | (byte) Code.Conv_Ovf_U2 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Conv_Ovf_I4 = new OpCode (
-			0xff, 0xb7,
-			Code.Conv_Ovf_I4, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1, StackBehaviour.Pushi);
+			0xff << 0 | 0xb7 << 8 | (byte) Code.Conv_Ovf_I4 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Conv_Ovf_U4 = new OpCode (
-			0xff, 0xb8,
-			Code.Conv_Ovf_U4, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1, StackBehaviour.Pushi);
+			0xff << 0 | 0xb8 << 8 | (byte) Code.Conv_Ovf_U4 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Conv_Ovf_I8 = new OpCode (
-			0xff, 0xb9,
-			Code.Conv_Ovf_I8, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1, StackBehaviour.Pushi8);
+			0xff << 0 | 0xb9 << 8 | (byte) Code.Conv_Ovf_I8 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi8 << 24);
 
 		public static readonly OpCode Conv_Ovf_U8 = new OpCode (
-			0xff, 0xba,
-			Code.Conv_Ovf_U8, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1, StackBehaviour.Pushi8);
+			0xff << 0 | 0xba << 8 | (byte) Code.Conv_Ovf_U8 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi8 << 24);
 
 		public static readonly OpCode Refanyval = new OpCode (
-			0xff, 0xc2,
-			Code.Refanyval, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineType,
-			StackBehaviour.Pop1, StackBehaviour.Pushi);
+			0xff << 0 | 0xc2 << 8 | (byte) Code.Refanyval << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineType << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Ckfinite = new OpCode (
-			0xff, 0xc3,
-			Code.Ckfinite, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1, StackBehaviour.Pushr8);
+			0xff << 0 | 0xc3 << 8 | (byte) Code.Ckfinite << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushr8 << 24);
 
 		public static readonly OpCode Mkrefany = new OpCode (
-			0xff, 0xc6,
-			Code.Mkrefany, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineType,
-			StackBehaviour.Popi, StackBehaviour.Push1);
+			0xff << 0 | 0xc6 << 8 | (byte) Code.Mkrefany << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineType << 8 | (byte) StackBehaviour.Popi << 16 | (byte) StackBehaviour.Push1 << 24);
 
 		public static readonly OpCode Ldtoken = new OpCode (
-			0xff, 0xd0,
-			Code.Ldtoken, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineTok,
-			StackBehaviour.Pop0, StackBehaviour.Pushi);
+			0xff << 0 | 0xd0 << 8 | (byte) Code.Ldtoken << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineTok << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Conv_U2 = new OpCode (
-			0xff, 0xd1,
-			Code.Conv_U2, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1, StackBehaviour.Pushi);
+			0xff << 0 | 0xd1 << 8 | (byte) Code.Conv_U2 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Conv_U1 = new OpCode (
-			0xff, 0xd2,
-			Code.Conv_U1, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1, StackBehaviour.Pushi);
+			0xff << 0 | 0xd2 << 8 | (byte) Code.Conv_U1 << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Conv_I = new OpCode (
-			0xff, 0xd3,
-			Code.Conv_I, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1, StackBehaviour.Pushi);
+			0xff << 0 | 0xd3 << 8 | (byte) Code.Conv_I << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Conv_Ovf_I = new OpCode (
-			0xff, 0xd4,
-			Code.Conv_Ovf_I, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1, StackBehaviour.Pushi);
+			0xff << 0 | 0xd4 << 8 | (byte) Code.Conv_Ovf_I << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Conv_Ovf_U = new OpCode (
-			0xff, 0xd5,
-			Code.Conv_Ovf_U, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1, StackBehaviour.Pushi);
+			0xff << 0 | 0xd5 << 8 | (byte) Code.Conv_Ovf_U << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Add_Ovf = new OpCode (
-			0xff, 0xd6,
-			Code.Add_Ovf, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+			0xff << 0 | 0xd6 << 8 | (byte) Code.Add_Ovf << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push1 << 24);
 
 		public static readonly OpCode Add_Ovf_Un = new OpCode (
-			0xff, 0xd7,
-			Code.Add_Ovf_Un, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+			0xff << 0 | 0xd7 << 8 | (byte) Code.Add_Ovf_Un << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push1 << 24);
 
 		public static readonly OpCode Mul_Ovf = new OpCode (
-			0xff, 0xd8,
-			Code.Mul_Ovf, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+			0xff << 0 | 0xd8 << 8 | (byte) Code.Mul_Ovf << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push1 << 24);
 
 		public static readonly OpCode Mul_Ovf_Un = new OpCode (
-			0xff, 0xd9,
-			Code.Mul_Ovf_Un, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+			0xff << 0 | 0xd9 << 8 | (byte) Code.Mul_Ovf_Un << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push1 << 24);
 
 		public static readonly OpCode Sub_Ovf = new OpCode (
-			0xff, 0xda,
-			Code.Sub_Ovf, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+			0xff << 0 | 0xda << 8 | (byte) Code.Sub_Ovf << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push1 << 24);
 
 		public static readonly OpCode Sub_Ovf_Un = new OpCode (
-			0xff, 0xdb,
-			Code.Sub_Ovf_Un, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+			0xff << 0 | 0xdb << 8 | (byte) Code.Sub_Ovf_Un << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Push1 << 24);
 
 		public static readonly OpCode Endfinally = new OpCode (
-			0xff, 0xdc,
-			Code.Endfinally, FlowControl.Return,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop0, StackBehaviour.Push0);
+			0xff << 0 | 0xdc << 8 | (byte) Code.Endfinally << 16 | (byte) FlowControl.Return << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Leave = new OpCode (
-			0xff, 0xdd,
-			Code.Leave, FlowControl.Branch,
-			OpCodeType.Primitive, OperandType.InlineBrTarget,
-			StackBehaviour.PopAll, StackBehaviour.Push0);
+			0xff << 0 | 0xdd << 8 | (byte) Code.Leave << 16 | (byte) FlowControl.Branch << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineBrTarget << 8 | (byte) StackBehaviour.PopAll << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Leave_S = new OpCode (
-			0xff, 0xde,
-			Code.Leave_S, FlowControl.Branch,
-			OpCodeType.Macro, OperandType.ShortInlineBrTarget,
-			StackBehaviour.PopAll, StackBehaviour.Push0);
+			0xff << 0 | 0xde << 8 | (byte) Code.Leave_S << 16 | (byte) FlowControl.Branch << 24,
+			(byte) OpCodeType.Macro << 0 | (byte) OperandType.ShortInlineBrTarget << 8 | (byte) StackBehaviour.PopAll << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Stind_I = new OpCode (
-			0xff, 0xdf,
-			Code.Stind_I, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Popi_popi, StackBehaviour.Push0);
+			0xff << 0 | 0xdf << 8 | (byte) Code.Stind_I << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popi_popi << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Conv_U = new OpCode (
-			0xff, 0xe0,
-			Code.Conv_U, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1, StackBehaviour.Pushi);
+			0xff << 0 | 0xe0 << 8 | (byte) Code.Conv_U << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Arglist = new OpCode (
-			0xfe, 0x00,
-			Code.Arglist, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop0, StackBehaviour.Pushi);
+			0xfe << 0 | 0x00 << 8 | (byte) Code.Arglist << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Ceq = new OpCode (
-			0xfe, 0x01,
-			Code.Ceq, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1_pop1, StackBehaviour.Pushi);
+			0xfe << 0 | 0x01 << 8 | (byte) Code.Ceq << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Cgt = new OpCode (
-			0xfe, 0x02,
-			Code.Cgt, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1_pop1, StackBehaviour.Pushi);
+			0xfe << 0 | 0x02 << 8 | (byte) Code.Cgt << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Cgt_Un = new OpCode (
-			0xfe, 0x03,
-			Code.Cgt_Un, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1_pop1, StackBehaviour.Pushi);
+			0xfe << 0 | 0x03 << 8 | (byte) Code.Cgt_Un << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Clt = new OpCode (
-			0xfe, 0x04,
-			Code.Clt, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1_pop1, StackBehaviour.Pushi);
+			0xfe << 0 | 0x04 << 8 | (byte) Code.Clt << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Clt_Un = new OpCode (
-			0xfe, 0x05,
-			Code.Clt_Un, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1_pop1, StackBehaviour.Pushi);
+			0xfe << 0 | 0x05 << 8 | (byte) Code.Clt_Un << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1_pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Ldftn = new OpCode (
-			0xfe, 0x06,
-			Code.Ldftn, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineMethod,
-			StackBehaviour.Pop0, StackBehaviour.Pushi);
+			0xfe << 0 | 0x06 << 8 | (byte) Code.Ldftn << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineMethod << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Ldvirtftn = new OpCode (
-			0xfe, 0x07,
-			Code.Ldvirtftn, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineMethod,
-			StackBehaviour.Popref, StackBehaviour.Pushi);
+			0xfe << 0 | 0x07 << 8 | (byte) Code.Ldvirtftn << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineMethod << 8 | (byte) StackBehaviour.Popref << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Ldarg = new OpCode (
-			0xfe, 0x09,
-			Code.Ldarg, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineParam,
-			StackBehaviour.Pop0, StackBehaviour.Push1);
+			0xfe << 0 | 0x09 << 8 | (byte) Code.Ldarg << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineArg << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Push1 << 24);
 
 		public static readonly OpCode Ldarga = new OpCode (
-			0xfe, 0x0a,
-			Code.Ldarga, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineParam,
-			StackBehaviour.Pop0, StackBehaviour.Pushi);
+			0xfe << 0 | 0x0a << 8 | (byte) Code.Ldarga << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineArg << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Starg = new OpCode (
-			0xfe, 0x0b,
-			Code.Starg, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineParam,
-			StackBehaviour.Pop1, StackBehaviour.Push0);
+			0xfe << 0 | 0x0b << 8 | (byte) Code.Starg << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineArg << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Ldloc = new OpCode (
-			0xfe, 0x0c,
-			Code.Ldloc, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineVar,
-			StackBehaviour.Pop0, StackBehaviour.Push1);
+			0xfe << 0 | 0x0c << 8 | (byte) Code.Ldloc << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineVar << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Push1 << 24);
 
 		public static readonly OpCode Ldloca = new OpCode (
-			0xfe, 0x0d,
-			Code.Ldloca, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineVar,
-			StackBehaviour.Pop0, StackBehaviour.Pushi);
+			0xfe << 0 | 0x0d << 8 | (byte) Code.Ldloca << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineVar << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Stloc = new OpCode (
-			0xfe, 0x0e,
-			Code.Stloc, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineVar,
-			StackBehaviour.Pop1, StackBehaviour.Push0);
+			0xfe << 0 | 0x0e << 8 | (byte) Code.Stloc << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineVar << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Localloc = new OpCode (
-			0xfe, 0x0f,
-			Code.Localloc, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Popi, StackBehaviour.Pushi);
+			0xfe << 0 | 0x0f << 8 | (byte) Code.Localloc << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popi << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Endfilter = new OpCode (
-			0xfe, 0x11,
-			Code.Endfilter, FlowControl.Return,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Popi, StackBehaviour.Push0);
+			0xfe << 0 | 0x11 << 8 | (byte) Code.Endfilter << 16 | (byte) FlowControl.Return << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popi << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Unaligned = new OpCode (
-			0xfe, 0x12,
-			Code.Unaligned, FlowControl.Meta,
-			OpCodeType.Prefix, OperandType.ShortInlineI,
-			StackBehaviour.Pop0, StackBehaviour.Push0);
+			0xfe << 0 | 0x12 << 8 | (byte) Code.Unaligned << 16 | (byte) FlowControl.Meta << 24,
+			(byte) OpCodeType.Prefix << 0 | (byte) OperandType.ShortInlineI << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Volatile = new OpCode (
-			0xfe, 0x13,
-			Code.Volatile, FlowControl.Meta,
-			OpCodeType.Prefix, OperandType.InlineNone,
-			StackBehaviour.Pop0, StackBehaviour.Push0);
+			0xfe << 0 | 0x13 << 8 | (byte) Code.Volatile << 16 | (byte) FlowControl.Meta << 24,
+			(byte) OpCodeType.Prefix << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Tail = new OpCode (
-			0xfe, 0x14,
-			Code.Tail, FlowControl.Meta,
-			OpCodeType.Prefix, OperandType.InlineNone,
-			StackBehaviour.Pop0, StackBehaviour.Push0);
+			0xfe << 0 | 0x14 << 8 | (byte) Code.Tail << 16 | (byte) FlowControl.Meta << 24,
+			(byte) OpCodeType.Prefix << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Initobj = new OpCode (
-			0xfe, 0x15,
-			Code.Initobj, FlowControl.Next,
-			OpCodeType.Objmodel, OperandType.InlineType,
-			StackBehaviour.Popi, StackBehaviour.Push0);
+			0xfe << 0 | 0x15 << 8 | (byte) Code.Initobj << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineType << 8 | (byte) StackBehaviour.Popi << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Constrained = new OpCode (
-			0xfe, 0x16,
-			Code.Constrained, FlowControl.Next,
-			OpCodeType.Prefix, OperandType.InlineType,
-			StackBehaviour.Pop0, StackBehaviour.Push0);
+			0xfe << 0 | 0x16 << 8 | (byte) Code.Constrained << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Prefix << 0 | (byte) OperandType.InlineType << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Cpblk = new OpCode (
-			0xfe, 0x17,
-			Code.Cpblk, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Popi_popi_popi, StackBehaviour.Push0);
+			0xfe << 0 | 0x17 << 8 | (byte) Code.Cpblk << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popi_popi_popi << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Initblk = new OpCode (
-			0xfe, 0x18,
-			Code.Initblk, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Popi_popi_popi, StackBehaviour.Push0);
+			0xfe << 0 | 0x18 << 8 | (byte) Code.Initblk << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Popi_popi_popi << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode No = new OpCode (
-			0xfe, 0x19,
-			Code.No, FlowControl.Next,
-			OpCodeType.Prefix, OperandType.ShortInlineI,
-			StackBehaviour.Pop0, StackBehaviour.Push0);
+			0xfe << 0 | 0x19 << 8 | (byte) Code.No << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Prefix << 0 | (byte) OperandType.ShortInlineI << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Rethrow = new OpCode (
-			0xfe, 0x1a,
-			Code.Rethrow, FlowControl.Throw,
-			OpCodeType.Objmodel, OperandType.InlineNone,
-			StackBehaviour.Pop0, StackBehaviour.Push0);
+			0xfe << 0 | 0x1a << 8 | (byte) Code.Rethrow << 16 | (byte) FlowControl.Throw << 24,
+			(byte) OpCodeType.Objmodel << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Push0 << 24);
 
 		public static readonly OpCode Sizeof = new OpCode (
-			0xfe, 0x1c,
-			Code.Sizeof, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineType,
-			StackBehaviour.Pop0, StackBehaviour.Pushi);
+			0xfe << 0 | 0x1c << 8 | (byte) Code.Sizeof << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineType << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Refanytype = new OpCode (
-			0xfe, 0x1d,
-			Code.Refanytype, FlowControl.Next,
-			OpCodeType.Primitive, OperandType.InlineNone,
-			StackBehaviour.Pop1, StackBehaviour.Pushi);
+			0xfe << 0 | 0x1d << 8 | (byte) Code.Refanytype << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Primitive << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop1 << 16 | (byte) StackBehaviour.Pushi << 24);
 
 		public static readonly OpCode Readonly = new OpCode (
-			0xfe, 0x1e,
-			Code.Readonly, FlowControl.Next,
-			OpCodeType.Prefix, OperandType.InlineNone,
-			StackBehaviour.Pop0, StackBehaviour.Push0);
-
-		OpCodes ()
-		{
-		}
-
-		public static OpCode GetOpCode (Code code)
-		{
-			switch (code) {
-			case Code.Nop : return OpCodes.Nop;
-			case Code.Break : return OpCodes.Break;
-			case Code.Ldarg_0 : return OpCodes.Ldarg_0;
-			case Code.Ldarg_1 : return OpCodes.Ldarg_1;
-			case Code.Ldarg_2 : return OpCodes.Ldarg_2;
-			case Code.Ldarg_3 : return OpCodes.Ldarg_3;
-			case Code.Ldloc_0 : return OpCodes.Ldloc_0;
-			case Code.Ldloc_1 : return OpCodes.Ldloc_1;
-			case Code.Ldloc_2 : return OpCodes.Ldloc_2;
-			case Code.Ldloc_3 : return OpCodes.Ldloc_3;
-			case Code.Stloc_0 : return OpCodes.Stloc_0;
-			case Code.Stloc_1 : return OpCodes.Stloc_1;
-			case Code.Stloc_2 : return OpCodes.Stloc_2;
-			case Code.Stloc_3 : return OpCodes.Stloc_3;
-			case Code.Ldarg_S : return OpCodes.Ldarg_S;
-			case Code.Ldarga_S : return OpCodes.Ldarga_S;
-			case Code.Starg_S : return OpCodes.Starg_S;
-			case Code.Ldloc_S : return OpCodes.Ldloc_S;
-			case Code.Ldloca_S : return OpCodes.Ldloca_S;
-			case Code.Stloc_S : return OpCodes.Stloc_S;
-			case Code.Ldnull : return OpCodes.Ldnull;
-			case Code.Ldc_I4_M1 : return OpCodes.Ldc_I4_M1;
-			case Code.Ldc_I4_0 : return OpCodes.Ldc_I4_0;
-			case Code.Ldc_I4_1 : return OpCodes.Ldc_I4_1;
-			case Code.Ldc_I4_2 : return OpCodes.Ldc_I4_2;
-			case Code.Ldc_I4_3 : return OpCodes.Ldc_I4_3;
-			case Code.Ldc_I4_4 : return OpCodes.Ldc_I4_4;
-			case Code.Ldc_I4_5 : return OpCodes.Ldc_I4_5;
-			case Code.Ldc_I4_6 : return OpCodes.Ldc_I4_6;
-			case Code.Ldc_I4_7 : return OpCodes.Ldc_I4_7;
-			case Code.Ldc_I4_8 : return OpCodes.Ldc_I4_8;
-			case Code.Ldc_I4_S : return OpCodes.Ldc_I4_S;
-			case Code.Ldc_I4 : return OpCodes.Ldc_I4;
-			case Code.Ldc_I8 : return OpCodes.Ldc_I8;
-			case Code.Ldc_R4 : return OpCodes.Ldc_R4;
-			case Code.Ldc_R8 : return OpCodes.Ldc_R8;
-			case Code.Dup : return OpCodes.Dup;
-			case Code.Pop : return OpCodes.Pop;
-			case Code.Jmp : return OpCodes.Jmp;
-			case Code.Call : return OpCodes.Call;
-			case Code.Calli : return OpCodes.Calli;
-			case Code.Ret : return OpCodes.Ret;
-			case Code.Br_S : return OpCodes.Br_S;
-			case Code.Brfalse_S : return OpCodes.Brfalse_S;
-			case Code.Brtrue_S : return OpCodes.Brtrue_S;
-			case Code.Beq_S : return OpCodes.Beq_S;
-			case Code.Bge_S : return OpCodes.Bge_S;
-			case Code.Bgt_S : return OpCodes.Bgt_S;
-			case Code.Ble_S : return OpCodes.Ble_S;
-			case Code.Blt_S : return OpCodes.Blt_S;
-			case Code.Bne_Un_S : return OpCodes.Bne_Un_S;
-			case Code.Bge_Un_S : return OpCodes.Bge_Un_S;
-			case Code.Bgt_Un_S : return OpCodes.Bgt_Un_S;
-			case Code.Ble_Un_S : return OpCodes.Ble_Un_S;
-			case Code.Blt_Un_S : return OpCodes.Blt_Un_S;
-			case Code.Br : return OpCodes.Br;
-			case Code.Brfalse : return OpCodes.Brfalse;
-			case Code.Brtrue : return OpCodes.Brtrue;
-			case Code.Beq : return OpCodes.Beq;
-			case Code.Bge : return OpCodes.Bge;
-			case Code.Bgt : return OpCodes.Bgt;
-			case Code.Ble : return OpCodes.Ble;
-			case Code.Blt : return OpCodes.Blt;
-			case Code.Bne_Un : return OpCodes.Bne_Un;
-			case Code.Bge_Un : return OpCodes.Bge_Un;
-			case Code.Bgt_Un : return OpCodes.Bgt_Un;
-			case Code.Ble_Un : return OpCodes.Ble_Un;
-			case Code.Blt_Un : return OpCodes.Blt_Un;
-			case Code.Switch : return OpCodes.Switch;
-			case Code.Ldind_I1 : return OpCodes.Ldind_I1;
-			case Code.Ldind_U1 : return OpCodes.Ldind_U1;
-			case Code.Ldind_I2 : return OpCodes.Ldind_I2;
-			case Code.Ldind_U2 : return OpCodes.Ldind_U2;
-			case Code.Ldind_I4 : return OpCodes.Ldind_I4;
-			case Code.Ldind_U4 : return OpCodes.Ldind_U4;
-			case Code.Ldind_I8 : return OpCodes.Ldind_I8;
-			case Code.Ldind_I : return OpCodes.Ldind_I;
-			case Code.Ldind_R4 : return OpCodes.Ldind_R4;
-			case Code.Ldind_R8 : return OpCodes.Ldind_R8;
-			case Code.Ldind_Ref : return OpCodes.Ldind_Ref;
-			case Code.Stind_Ref : return OpCodes.Stind_Ref;
-			case Code.Stind_I1 : return OpCodes.Stind_I1;
-			case Code.Stind_I2 : return OpCodes.Stind_I2;
-			case Code.Stind_I4 : return OpCodes.Stind_I4;
-			case Code.Stind_I8 : return OpCodes.Stind_I8;
-			case Code.Stind_R4 : return OpCodes.Stind_R4;
-			case Code.Stind_R8 : return OpCodes.Stind_R8;
-			case Code.Add : return OpCodes.Add;
-			case Code.Sub : return OpCodes.Sub;
-			case Code.Mul : return OpCodes.Mul;
-			case Code.Div : return OpCodes.Div;
-			case Code.Div_Un : return OpCodes.Div_Un;
-			case Code.Rem : return OpCodes.Rem;
-			case Code.Rem_Un : return OpCodes.Rem_Un;
-			case Code.And : return OpCodes.And;
-			case Code.Or : return OpCodes.Or;
-			case Code.Xor : return OpCodes.Xor;
-			case Code.Shl : return OpCodes.Shl;
-			case Code.Shr : return OpCodes.Shr;
-			case Code.Shr_Un : return OpCodes.Shr_Un;
-			case Code.Neg : return OpCodes.Neg;
-			case Code.Not : return OpCodes.Not;
-			case Code.Conv_I1 : return OpCodes.Conv_I1;
-			case Code.Conv_I2 : return OpCodes.Conv_I2;
-			case Code.Conv_I4 : return OpCodes.Conv_I4;
-			case Code.Conv_I8 : return OpCodes.Conv_I8;
-			case Code.Conv_R4 : return OpCodes.Conv_R4;
-			case Code.Conv_R8 : return OpCodes.Conv_R8;
-			case Code.Conv_U4 : return OpCodes.Conv_U4;
-			case Code.Conv_U8 : return OpCodes.Conv_U8;
-			case Code.Callvirt : return OpCodes.Callvirt;
-			case Code.Cpobj : return OpCodes.Cpobj;
-			case Code.Ldobj : return OpCodes.Ldobj;
-			case Code.Ldstr : return OpCodes.Ldstr;
-			case Code.Newobj : return OpCodes.Newobj;
-			case Code.Castclass : return OpCodes.Castclass;
-			case Code.Isinst : return OpCodes.Isinst;
-			case Code.Conv_R_Un : return OpCodes.Conv_R_Un;
-			case Code.Unbox : return OpCodes.Unbox;
-			case Code.Throw : return OpCodes.Throw;
-			case Code.Ldfld : return OpCodes.Ldfld;
-			case Code.Ldflda : return OpCodes.Ldflda;
-			case Code.Stfld : return OpCodes.Stfld;
-			case Code.Ldsfld : return OpCodes.Ldsfld;
-			case Code.Ldsflda : return OpCodes.Ldsflda;
-			case Code.Stsfld : return OpCodes.Stsfld;
-			case Code.Stobj : return OpCodes.Stobj;
-			case Code.Conv_Ovf_I1_Un : return OpCodes.Conv_Ovf_I1_Un;
-			case Code.Conv_Ovf_I2_Un : return OpCodes.Conv_Ovf_I2_Un;
-			case Code.Conv_Ovf_I4_Un : return OpCodes.Conv_Ovf_I4_Un;
-			case Code.Conv_Ovf_I8_Un : return OpCodes.Conv_Ovf_I8_Un;
-			case Code.Conv_Ovf_U1_Un : return OpCodes.Conv_Ovf_U1_Un;
-			case Code.Conv_Ovf_U2_Un : return OpCodes.Conv_Ovf_U2_Un;
-			case Code.Conv_Ovf_U4_Un : return OpCodes.Conv_Ovf_U4_Un;
-			case Code.Conv_Ovf_U8_Un : return OpCodes.Conv_Ovf_U8_Un;
-			case Code.Conv_Ovf_I_Un : return OpCodes.Conv_Ovf_I_Un;
-			case Code.Conv_Ovf_U_Un : return OpCodes.Conv_Ovf_U_Un;
-			case Code.Box : return OpCodes.Box;
-			case Code.Newarr : return OpCodes.Newarr;
-			case Code.Ldlen : return OpCodes.Ldlen;
-			case Code.Ldelema : return OpCodes.Ldelema;
-			case Code.Ldelem_I1 : return OpCodes.Ldelem_I1;
-			case Code.Ldelem_U1 : return OpCodes.Ldelem_U1;
-			case Code.Ldelem_I2 : return OpCodes.Ldelem_I2;
-			case Code.Ldelem_U2 : return OpCodes.Ldelem_U2;
-			case Code.Ldelem_I4 : return OpCodes.Ldelem_I4;
-			case Code.Ldelem_U4 : return OpCodes.Ldelem_U4;
-			case Code.Ldelem_I8 : return OpCodes.Ldelem_I8;
-			case Code.Ldelem_I : return OpCodes.Ldelem_I;
-			case Code.Ldelem_R4 : return OpCodes.Ldelem_R4;
-			case Code.Ldelem_R8 : return OpCodes.Ldelem_R8;
-			case Code.Ldelem_Ref : return OpCodes.Ldelem_Ref;
-			case Code.Stelem_I : return OpCodes.Stelem_I;
-			case Code.Stelem_I1 : return OpCodes.Stelem_I1;
-			case Code.Stelem_I2 : return OpCodes.Stelem_I2;
-			case Code.Stelem_I4 : return OpCodes.Stelem_I4;
-			case Code.Stelem_I8 : return OpCodes.Stelem_I8;
-			case Code.Stelem_R4 : return OpCodes.Stelem_R4;
-			case Code.Stelem_R8 : return OpCodes.Stelem_R8;
-			case Code.Stelem_Ref : return OpCodes.Stelem_Ref;
-			case Code.Ldelem_Any : return OpCodes.Ldelem_Any;
-			case Code.Stelem_Any : return OpCodes.Stelem_Any;
-			case Code.Unbox_Any : return OpCodes.Unbox_Any;
-			case Code.Conv_Ovf_I1 : return OpCodes.Conv_Ovf_I1;
-			case Code.Conv_Ovf_U1 : return OpCodes.Conv_Ovf_U1;
-			case Code.Conv_Ovf_I2 : return OpCodes.Conv_Ovf_I2;
-			case Code.Conv_Ovf_U2 : return OpCodes.Conv_Ovf_U2;
-			case Code.Conv_Ovf_I4 : return OpCodes.Conv_Ovf_I4;
-			case Code.Conv_Ovf_U4 : return OpCodes.Conv_Ovf_U4;
-			case Code.Conv_Ovf_I8 : return OpCodes.Conv_Ovf_I8;
-			case Code.Conv_Ovf_U8 : return OpCodes.Conv_Ovf_U8;
-			case Code.Refanyval : return OpCodes.Refanyval;
-			case Code.Ckfinite : return OpCodes.Ckfinite;
-			case Code.Mkrefany : return OpCodes.Mkrefany;
-			case Code.Ldtoken : return OpCodes.Ldtoken;
-			case Code.Conv_U2 : return OpCodes.Conv_U2;
-			case Code.Conv_U1 : return OpCodes.Conv_U1;
-			case Code.Conv_I : return OpCodes.Conv_I;
-			case Code.Conv_Ovf_I : return OpCodes.Conv_Ovf_I;
-			case Code.Conv_Ovf_U : return OpCodes.Conv_Ovf_U;
-			case Code.Add_Ovf : return OpCodes.Add_Ovf;
-			case Code.Add_Ovf_Un : return OpCodes.Add_Ovf_Un;
-			case Code.Mul_Ovf : return OpCodes.Mul_Ovf;
-			case Code.Mul_Ovf_Un : return OpCodes.Mul_Ovf_Un;
-			case Code.Sub_Ovf : return OpCodes.Sub_Ovf;
-			case Code.Sub_Ovf_Un : return OpCodes.Sub_Ovf_Un;
-			case Code.Endfinally : return OpCodes.Endfinally;
-			case Code.Leave : return OpCodes.Leave;
-			case Code.Leave_S : return OpCodes.Leave_S;
-			case Code.Stind_I : return OpCodes.Stind_I;
-			case Code.Conv_U : return OpCodes.Conv_U;
-			case Code.Arglist : return OpCodes.Arglist;
-			case Code.Ceq : return OpCodes.Ceq;
-			case Code.Cgt : return OpCodes.Cgt;
-			case Code.Cgt_Un : return OpCodes.Cgt_Un;
-			case Code.Clt : return OpCodes.Clt;
-			case Code.Clt_Un : return OpCodes.Clt_Un;
-			case Code.Ldftn : return OpCodes.Ldftn;
-			case Code.Ldvirtftn : return OpCodes.Ldvirtftn;
-			case Code.Ldarg : return OpCodes.Ldarg;
-			case Code.Ldarga : return OpCodes.Ldarga;
-			case Code.Starg : return OpCodes.Starg;
-			case Code.Ldloc : return OpCodes.Ldloc;
-			case Code.Ldloca : return OpCodes.Ldloca;
-			case Code.Stloc : return OpCodes.Stloc;
-			case Code.Localloc : return OpCodes.Localloc;
-			case Code.Endfilter : return OpCodes.Endfilter;
-			case Code.Unaligned : return OpCodes.Unaligned;
-			case Code.Volatile : return OpCodes.Volatile;
-			case Code.Tail : return OpCodes.Tail;
-			case Code.Initobj : return OpCodes.Initobj;
-			case Code.Constrained : return OpCodes.Constrained;
-			case Code.Cpblk : return OpCodes.Cpblk;
-			case Code.Initblk : return OpCodes.Initblk;
-			case Code.No : return OpCodes.No;
-			case Code.Rethrow : return OpCodes.Rethrow;
-			case Code.Sizeof : return OpCodes.Sizeof;
-			case Code.Refanytype : return OpCodes.Refanytype;
-			case Code.Readonly : return OpCodes.Readonly;
-			default : return OpCodes.Nop;
-			}
-		}
+			0xfe << 0 | 0x1e << 8 | (byte) Code.Readonly << 16 | (byte) FlowControl.Next << 24,
+			(byte) OpCodeType.Prefix << 0 | (byte) OperandType.InlineNone << 8 | (byte) StackBehaviour.Pop0 << 16 | (byte) StackBehaviour.Push0 << 24);
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/OperandType.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/OperandType.cs
deleted file mode 100644
index 938b2b9..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/OperandType.cs
+++ /dev/null
@@ -1,53 +0,0 @@
-//
-// OperandType.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Cil {
-
-	public enum OperandType {
-		InlineBrTarget,
-		InlineField,
-		InlineI,
-		InlineI8,
-		InlineMethod,
-		InlineNone,
-		InlinePhi,
-		InlineR,
-		InlineSig,
-		InlineString,
-		InlineSwitch,
-		InlineTok,
-		InlineType,
-		InlineVar,
-		InlineParam,
-		ShortInlineBrTarget,
-		ShortInlineI,
-		ShortInlineR,
-		ShortInlineVar,
-		ShortInlineParam
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/Scope.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/Scope.cs
deleted file mode 100644
index ce4068c..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/Scope.cs
+++ /dev/null
@@ -1,79 +0,0 @@
-//
-// Scope.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2006 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Cil {
-
-	public class Scope : IScopeProvider, IVariableDefinitionProvider, ICodeVisitable {
-
-		Instruction m_start;
-		Instruction m_end;
-
-		Scope m_parent;
-		ScopeCollection m_scopes;
-
-		VariableDefinitionCollection m_variables;
-
-		public Instruction Start {
-			get { return m_start; }
-			set { m_start = value; }
-		}
-
-		public Instruction End {
-			get { return m_end; }
-			set { m_end = value; }
-		}
-
-		public Scope Parent {
-			get { return m_parent; }
-			set { m_parent = value; }
-		}
-
-		public ScopeCollection Scopes {
-			get {
-				if (m_scopes == null)
-					m_scopes = new ScopeCollection (this);
-
-				return m_scopes;
-			}
-		}
-
-		public VariableDefinitionCollection Variables {
-			get {
-				if (m_variables == null)
-					m_variables = new VariableDefinitionCollection (this);
-
-				return m_variables;
-			}
-		}
-
-		public void Accept (ICodeVisitor visitor)
-		{
-			visitor.VisitScope (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/ScopeCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/ScopeCollection.cs
deleted file mode 100644
index 6872e70..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/ScopeCollection.cs
+++ /dev/null
@@ -1,93 +0,0 @@
-//
-// ScopeCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Wed Sep 27 12:46:54 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Cil {
-
-	using System;
-	using System.Collections;
-
-	using Mono.Cecil.Cil;
-
-	public sealed class ScopeCollection : CollectionBase, ICodeVisitable {
-
-		IScopeProvider m_container;
-
-		public Scope this [int index] {
-			get { return List [index] as Scope; }
-			set { List [index] = value; }
-		}
-
-		public IScopeProvider Container {
-			get { return m_container; }
-		}
-
-		public ScopeCollection (IScopeProvider container)
-		{
-			m_container = container;
-		}
-
-		public void Add (Scope value)
-		{
-			List.Add (value);
-		}
-
-		public bool Contains (Scope value)
-		{
-			return List.Contains (value);
-		}
-
-		public int IndexOf (Scope value)
-		{
-			return List.IndexOf (value);
-		}
-
-		public void Insert (int index, Scope value)
-		{
-			List.Insert (index, value);
-		}
-
-		public void Remove (Scope value)
-		{
-			List.Remove (value);
-		}
-
-		protected override void OnValidate (object o)
-		{
-			if (! (o is Scope))
-				throw new ArgumentException ("Must be of type " + typeof (Scope).FullName);
-		}
-
-		public void Accept (ICodeVisitor visitor)
-		{
-			visitor.VisitScopeCollection (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/SequencePoint.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/SequencePoint.cs
index 81dc110..189b5f5 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/SequencePoint.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/SequencePoint.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2006 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -28,51 +28,43 @@
 
 namespace Mono.Cecil.Cil {
 
-	public class SequencePoint {
+	public sealed class SequencePoint {
 
-		Document m_document;
+		Document document;
 
-		int m_startLine;
-		int m_startColumn;
-		int m_endLine;
-		int m_endColumn;
+		int start_line;
+		int start_column;
+		int end_line;
+		int end_column;
 
 		public int StartLine {
-			get { return m_startLine; }
-			set { m_startLine = value; }
+			get { return start_line; }
+			set { start_line = value; }
 		}
 
 		public int StartColumn {
-			get { return m_startColumn; }
-			set { m_startColumn = value; }
+			get { return start_column; }
+			set { start_column = value; }
 		}
 
 		public int EndLine {
-			get { return m_endLine; }
-			set { m_endLine = value; }
+			get { return end_line; }
+			set { end_line = value; }
 		}
 
 		public int EndColumn {
-			get { return m_endColumn; }
-			set { m_endColumn = value; }
+			get { return end_column; }
+			set { end_column = value; }
 		}
 
 		public Document Document {
-			get { return m_document; }
-			set { m_document = value; }
+			get { return document; }
+			set { document = value; }
 		}
 
 		public SequencePoint (Document document)
 		{
-			m_document = document;
-		}
-
-		public SequencePoint (Document doc, int startLine, int startCol, int endLine, int endCol) : this (doc)
-		{
-			m_startLine = startLine;
-			m_startColumn = startCol;
-			m_endLine = endLine;
-			m_endColumn = endCol;
+			this.document = document;
 		}
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/StackBehaviour.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/StackBehaviour.cs
deleted file mode 100644
index edab8aa..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/StackBehaviour.cs
+++ /dev/null
@@ -1,62 +0,0 @@
-//
-// StackBehaviour.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Cil {
-
-	public enum StackBehaviour {
-		Pop0,
-		Pop1,
-		Pop1_pop1,
-		Popi,
-		Popi_pop1,
-		Popi_popi,
-		Popi_popi8,
-		Popi_popi_popi,
-		Popi_popr4,
-		Popi_popr8,
-		Popref,
-		Popref_pop1,
-		Popref_popi,
-		Popref_popi_popi,
-		Popref_popi_popi8,
-		Popref_popi_popr4,
-		Popref_popi_popr8,
-		Popref_popi_popref,
-		PopAll,
-		Push0,
-		Push1,
-		Push1_push1,
-		Pushi,
-		Pushi8,
-		Pushr4,
-		Pushr8,
-		Pushref,
-		Varpop,
-		Varpush
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/Symbols.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/Symbols.cs
new file mode 100644
index 0000000..ba2e694
--- /dev/null
+++ b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/Symbols.cs
@@ -0,0 +1,272 @@
+//
+// Symbols.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.IO;
+using System.Runtime.InteropServices;
+using SR = System.Reflection;
+
+using Mono.Collections.Generic;
+
+namespace Mono.Cecil.Cil {
+
+	[StructLayout (LayoutKind.Sequential)]
+	public struct ImageDebugDirectory {
+		public int Characteristics;
+		public int TimeDateStamp;
+		public short MajorVersion;
+		public short MinorVersion;
+		public int Type;
+		public int SizeOfData;
+		public int AddressOfRawData;
+		public int PointerToRawData;
+	}
+
+	public sealed class Scope : IVariableDefinitionProvider {
+
+		Instruction start;
+		Instruction end;
+
+		Collection<Scope> scopes;
+		Collection<VariableDefinition> variables;
+
+		public Instruction Start {
+			get { return start; }
+			set { start = value; }
+		}
+
+		public Instruction End {
+			get { return end; }
+			set { end = value; }
+		}
+
+		public bool HasScopes {
+			get { return !scopes.IsNullOrEmpty (); }
+		}
+
+		public Collection<Scope> Scopes {
+			get {
+				if (scopes == null)
+					scopes = new Collection<Scope> ();
+
+				return scopes;
+			}
+		}
+
+		public bool HasVariables {
+			get { return !variables.IsNullOrEmpty (); }
+		}
+
+		public Collection<VariableDefinition> Variables {
+			get {
+				if (variables == null)
+					variables = new Collection<VariableDefinition> ();
+
+				return variables;
+			}
+		}
+	}
+
+	public struct InstructionSymbol {
+
+		public readonly int Offset;
+		public readonly SequencePoint SequencePoint;
+
+		public InstructionSymbol (int offset, SequencePoint sequencePoint)
+		{
+			this.Offset = offset;
+			this.SequencePoint = sequencePoint;
+		}
+	}
+
+	public sealed class MethodSymbols {
+
+		internal int code_size;
+		internal string method_name;
+		internal MetadataToken method_token;
+		internal MetadataToken local_var_token;
+		internal Collection<VariableDefinition> variables;
+		internal Collection<InstructionSymbol> instructions;
+
+		public bool HasVariables {
+			get { return !variables.IsNullOrEmpty (); }
+		}
+
+		public Collection<VariableDefinition> Variables {
+			get {
+				if (variables == null)
+					variables = new Collection<VariableDefinition> ();
+
+				return variables;
+			}
+		}
+
+		public Collection<InstructionSymbol> Instructions {
+			get {
+				if (instructions == null)
+					instructions = new Collection<InstructionSymbol> ();
+
+				return instructions;
+			}
+		}
+
+		public int CodeSize {
+			get { return code_size; }
+		}
+
+		public string MethodName {
+			get { return method_name; }
+		}
+
+		public MetadataToken MethodToken {
+			get { return method_token; }
+		}
+
+		public MetadataToken LocalVarToken {
+			get { return local_var_token; }
+		}
+
+		public MethodSymbols (string methodName)
+		{
+			this.method_name = methodName;
+		}
+	}
+
+	public delegate Instruction InstructionMapper (int offset);
+
+	public interface ISymbolReader : IDisposable {
+
+		bool ProcessDebugHeader (ImageDebugDirectory directory, byte [] header);
+		void Read (MethodBody body, InstructionMapper mapper);
+		void Read (MethodSymbols symbols);
+	}
+
+	public interface ISymbolReaderProvider {
+
+		ISymbolReader GetSymbolReader (ModuleDefinition module, string fileName);
+		ISymbolReader GetSymbolReader (ModuleDefinition module, Stream symbolStream);
+	}
+
+	static class SymbolProvider {
+
+		static readonly string symbol_kind = Type.GetType ("Mono.Runtime") != null ? "Mdb" : "Pdb";
+
+		static SR.AssemblyName GetPlatformSymbolAssemblyName ()
+		{
+			var cecil_name = typeof (SymbolProvider).Assembly.GetName ();
+
+			var name = new SR.AssemblyName {
+				Name = "Mono.Cecil." + symbol_kind,
+				Version = cecil_name.Version,
+			};
+
+			name.SetPublicKeyToken (cecil_name.GetPublicKeyToken ());
+
+			return name;
+		}
+
+		static Type GetPlatformType (string fullname)
+		{
+			var type = Type.GetType (fullname);
+			if (type != null)
+				return type;
+
+			var assembly_name = GetPlatformSymbolAssemblyName ();
+
+			type = Type.GetType (fullname + ", " + assembly_name.FullName);
+			if (type != null)
+				return type;
+
+			try {
+				var assembly = SR.Assembly.Load (assembly_name);
+				if (assembly != null)
+					return assembly.GetType (fullname);
+			} catch (FileNotFoundException) {
+#if !CF
+			} catch (FileLoadException) {
+#endif
+			}
+
+			return null;
+		}
+
+		static ISymbolReaderProvider reader_provider;
+
+		public static ISymbolReaderProvider GetPlatformReaderProvider ()
+		{
+			if (reader_provider != null)
+				return reader_provider;
+
+			var type = GetPlatformType (GetProviderTypeName ("ReaderProvider"));
+			if (type == null)
+				return null;
+
+			return reader_provider = (ISymbolReaderProvider) Activator.CreateInstance (type);
+		}
+
+		static string GetProviderTypeName (string name)
+		{
+			return "Mono.Cecil." + symbol_kind + "." + symbol_kind + name;
+		}
+
+#if !READ_ONLY
+
+		static ISymbolWriterProvider writer_provider;
+
+		public static ISymbolWriterProvider GetPlatformWriterProvider ()
+		{
+			if (writer_provider != null)
+				return writer_provider;
+
+			var type = GetPlatformType (GetProviderTypeName ("WriterProvider"));
+			if (type == null)
+				return null;
+
+			return writer_provider = (ISymbolWriterProvider) Activator.CreateInstance (type);
+		}
+
+#endif
+	}
+
+#if !READ_ONLY
+
+	public interface ISymbolWriter : IDisposable {
+
+		bool GetDebugHeader (out ImageDebugDirectory directory, out byte [] header);
+		void Write (MethodBody body);
+		void Write (MethodSymbols symbols);
+	}
+
+	public interface ISymbolWriterProvider {
+
+		ISymbolWriter GetSymbolWriter (ModuleDefinition module, string fileName);
+		ISymbolWriter GetSymbolWriter (ModuleDefinition module, Stream symbolStream);
+	}
+
+#endif
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/VariableDefinition.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/VariableDefinition.cs
index 6ce68af..690543e 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/VariableDefinition.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/VariableDefinition.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -30,31 +30,23 @@ namespace Mono.Cecil.Cil {
 
 	public sealed class VariableDefinition : VariableReference {
 
-		MethodDefinition m_method;
-
-		public MethodDefinition Method {
-			get { return m_method; }
-			set { m_method = value; }
+		public bool IsPinned {
+			get { return variable_type.IsPinned; }
 		}
 
-		public VariableDefinition (TypeReference variableType) : base (variableType)
+		public VariableDefinition (TypeReference variableType)
+			: base (variableType)
 		{
 		}
 
-		public VariableDefinition (string name, int index, MethodDefinition method, TypeReference variableType) :
-			base (name, index, variableType)
+		public VariableDefinition (string name, TypeReference variableType)
+			: base (name, variableType)
 		{
-			m_method = method;
 		}
 
 		public override VariableDefinition Resolve ()
 		{
 			return this;
 		}
-
-		public override void Accept (ICodeVisitor visitor)
-		{
-			visitor.VisitVariableDefinition (this);
-		}
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/VariableDefinitionCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/VariableDefinitionCollection.cs
deleted file mode 100644
index 3bd8446..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/VariableDefinitionCollection.cs
+++ /dev/null
@@ -1,93 +0,0 @@
-//
-// VariableDefinitionCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Wed Sep 27 12:46:53 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Cil {
-
-	using System;
-	using System.Collections;
-
-	using Mono.Cecil.Cil;
-
-	public sealed class VariableDefinitionCollection : CollectionBase, ICodeVisitable {
-
-		IVariableDefinitionProvider m_container;
-
-		public VariableDefinition this [int index] {
-			get { return List [index] as VariableDefinition; }
-			set { List [index] = value; }
-		}
-
-		public IVariableDefinitionProvider Container {
-			get { return m_container; }
-		}
-
-		public VariableDefinitionCollection (IVariableDefinitionProvider container)
-		{
-			m_container = container;
-		}
-
-		public void Add (VariableDefinition value)
-		{
-			List.Add (value);
-		}
-
-		public bool Contains (VariableDefinition value)
-		{
-			return List.Contains (value);
-		}
-
-		public int IndexOf (VariableDefinition value)
-		{
-			return List.IndexOf (value);
-		}
-
-		public void Insert (int index, VariableDefinition value)
-		{
-			List.Insert (index, value);
-		}
-
-		public void Remove (VariableDefinition value)
-		{
-			List.Remove (value);
-		}
-
-		protected override void OnValidate (object o)
-		{
-			if (! (o is VariableDefinition))
-				throw new ArgumentException ("Must be of type " + typeof (VariableDefinition).FullName);
-		}
-
-		public void Accept (ICodeVisitor visitor)
-		{
-			visitor.VisitVariableDefinitionCollection (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/VariableReference.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/VariableReference.cs
index 06b3041..5453845 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/VariableReference.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil.Cil/VariableReference.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -28,48 +28,48 @@
 
 namespace Mono.Cecil.Cil {
 
-	public abstract class VariableReference : ICodeVisitable {
+	public abstract class VariableReference {
 
-		string m_name;
-		int m_index;
-		TypeReference m_variableType;
+		string name;
+		internal int index = -1;
+		protected TypeReference variable_type;
 
 		public string Name {
-			get { return m_name; }
-			set { m_name = value; }
+			get { return name; }
+			set { name = value; }
 		}
 
-		public int Index {
-			get { return m_index; }
-			set { m_index = value; }
+		public TypeReference VariableType {
+			get { return variable_type; }
+			set { variable_type = value; }
 		}
 
-		public TypeReference VariableType {
-			get { return m_variableType; }
-			set { m_variableType = value; }
+		public int Index {
+			get { return index; }
 		}
 
-		public VariableReference (TypeReference variableType)
+		internal VariableReference (TypeReference variable_type)
+			: this (string.Empty, variable_type)
 		{
-			m_variableType = variableType;
 		}
 
-		public VariableReference (string name, int index, TypeReference variableType) : this (variableType)
+		internal VariableReference (string name, TypeReference variable_type)
 		{
-			m_name = name;
-			m_index = index;
+			this.name = name;
+			this.variable_type = variable_type;
 		}
 
 		public abstract VariableDefinition Resolve ();
 
 		public override string ToString ()
 		{
-			if (m_name != null && m_name.Length > 0)
-				return m_name;
+			if (!string.IsNullOrEmpty (name))
+				return name;
 
-			return string.Concat ("V_", m_index);
-		}
+			if (index >= 0)
+				return "V_" + index;
 
-		public abstract void Accept (ICodeVisitor visitor);
+			return string.Empty;
+		}
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Assembly.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Assembly.cs
deleted file mode 100644
index 72da5c2..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Assembly.cs
+++ /dev/null
@@ -1,88 +0,0 @@
-//
-// AssemblyTable.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:25 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	using Mono.Cecil;
-
-	public sealed class AssemblyTable : IMetadataTable {
-
-		public const int RId = 0x20;
-
-		RowCollection m_rows;
-
-		public AssemblyRow this [int index] {
-			get { return m_rows [index] as AssemblyRow; }
-			set { m_rows [index] = value; }
-		}
-
-		public RowCollection Rows {
-			get { return m_rows; }
-			set { m_rows = value; }
-		}
-
-		public int Id {
-			get { return RId; }
-		}
-
-		internal AssemblyTable ()
-		{
-		}
-
-		public void Accept (IMetadataTableVisitor visitor)
-		{
-			visitor.VisitAssemblyTable (this);
-			this.Rows.Accept (visitor.GetRowVisitor ());
-		}
-	}
-
-	public sealed class AssemblyRow : IMetadataRow {
-
-		public AssemblyHashAlgorithm HashAlgId;
-		public ushort MajorVersion;
-		public ushort MinorVersion;
-		public ushort BuildNumber;
-		public ushort RevisionNumber;
-		public AssemblyFlags Flags;
-		public uint PublicKey;
-		public uint Name;
-		public uint Culture;
-
-		internal AssemblyRow ()
-		{
-		}
-
-		public void Accept (IMetadataRowVisitor visitor)
-		{
-			visitor.VisitAssemblyRow (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/AssemblyOS.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/AssemblyOS.cs
deleted file mode 100644
index b6b193b..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/AssemblyOS.cs
+++ /dev/null
@@ -1,80 +0,0 @@
-//
-// AssemblyOSTable.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:25 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	public sealed class AssemblyOSTable : IMetadataTable {
-
-		public const int RId = 0x22;
-
-		RowCollection m_rows;
-
-		public AssemblyOSRow this [int index] {
-			get { return m_rows [index] as AssemblyOSRow; }
-			set { m_rows [index] = value; }
-		}
-
-		public RowCollection Rows {
-			get { return m_rows; }
-			set { m_rows = value; }
-		}
-
-		public int Id {
-			get { return RId; }
-		}
-
-		internal AssemblyOSTable ()
-		{
-		}
-
-		public void Accept (IMetadataTableVisitor visitor)
-		{
-			visitor.VisitAssemblyOSTable (this);
-			this.Rows.Accept (visitor.GetRowVisitor ());
-		}
-	}
-
-	public sealed class AssemblyOSRow : IMetadataRow {
-
-		public uint OSPlatformID;
-		public uint OSMajorVersion;
-		public uint OSMinorVersion;
-
-		internal AssemblyOSRow ()
-		{
-		}
-
-		public void Accept (IMetadataRowVisitor visitor)
-		{
-			visitor.VisitAssemblyOSRow (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/AssemblyProcessor.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/AssemblyProcessor.cs
deleted file mode 100644
index ca7c7a9..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/AssemblyProcessor.cs
+++ /dev/null
@@ -1,78 +0,0 @@
-//
-// AssemblyProcessorTable.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:25 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	public sealed class AssemblyProcessorTable : IMetadataTable {
-
-		public const int RId = 0x21;
-
-		RowCollection m_rows;
-
-		public AssemblyProcessorRow this [int index] {
-			get { return m_rows [index] as AssemblyProcessorRow; }
-			set { m_rows [index] = value; }
-		}
-
-		public RowCollection Rows {
-			get { return m_rows; }
-			set { m_rows = value; }
-		}
-
-		public int Id {
-			get { return RId; }
-		}
-
-		internal AssemblyProcessorTable ()
-		{
-		}
-
-		public void Accept (IMetadataTableVisitor visitor)
-		{
-			visitor.VisitAssemblyProcessorTable (this);
-			this.Rows.Accept (visitor.GetRowVisitor ());
-		}
-	}
-
-	public sealed class AssemblyProcessorRow : IMetadataRow {
-
-		public uint Processor;
-
-		internal AssemblyProcessorRow ()
-		{
-		}
-
-		public void Accept (IMetadataRowVisitor visitor)
-		{
-			visitor.VisitAssemblyProcessorRow (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/AssemblyRef.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/AssemblyRef.cs
deleted file mode 100644
index 06b5006..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/AssemblyRef.cs
+++ /dev/null
@@ -1,88 +0,0 @@
-//
-// AssemblyRefTable.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:25 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	using Mono.Cecil;
-
-	public sealed class AssemblyRefTable : IMetadataTable {
-
-		public const int RId = 0x23;
-
-		RowCollection m_rows;
-
-		public AssemblyRefRow this [int index] {
-			get { return m_rows [index] as AssemblyRefRow; }
-			set { m_rows [index] = value; }
-		}
-
-		public RowCollection Rows {
-			get { return m_rows; }
-			set { m_rows = value; }
-		}
-
-		public int Id {
-			get { return RId; }
-		}
-
-		internal AssemblyRefTable ()
-		{
-		}
-
-		public void Accept (IMetadataTableVisitor visitor)
-		{
-			visitor.VisitAssemblyRefTable (this);
-			this.Rows.Accept (visitor.GetRowVisitor ());
-		}
-	}
-
-	public sealed class AssemblyRefRow : IMetadataRow {
-
-		public ushort MajorVersion;
-		public ushort MinorVersion;
-		public ushort BuildNumber;
-		public ushort RevisionNumber;
-		public AssemblyFlags Flags;
-		public uint PublicKeyOrToken;
-		public uint Name;
-		public uint Culture;
-		public uint HashValue;
-
-		internal AssemblyRefRow ()
-		{
-		}
-
-		public void Accept (IMetadataRowVisitor visitor)
-		{
-			visitor.VisitAssemblyRefRow (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/AssemblyRefOS.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/AssemblyRefOS.cs
deleted file mode 100644
index db794e9..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/AssemblyRefOS.cs
+++ /dev/null
@@ -1,81 +0,0 @@
-//
-// AssemblyRefOSTable.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:25 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	public sealed class AssemblyRefOSTable : IMetadataTable {
-
-		public const int RId = 0x25;
-
-		RowCollection m_rows;
-
-		public AssemblyRefOSRow this [int index] {
-			get { return m_rows [index] as AssemblyRefOSRow; }
-			set { m_rows [index] = value; }
-		}
-
-		public RowCollection Rows {
-			get { return m_rows; }
-			set { m_rows = value; }
-		}
-
-		public int Id {
-			get { return RId; }
-		}
-
-		internal AssemblyRefOSTable ()
-		{
-		}
-
-		public void Accept (IMetadataTableVisitor visitor)
-		{
-			visitor.VisitAssemblyRefOSTable (this);
-			this.Rows.Accept (visitor.GetRowVisitor ());
-		}
-	}
-
-	public sealed class AssemblyRefOSRow : IMetadataRow {
-
-		public uint OSPlatformID;
-		public uint OSMajorVersion;
-		public uint OSMinorVersion;
-		public uint AssemblyRef;
-
-		internal AssemblyRefOSRow ()
-		{
-		}
-
-		public void Accept (IMetadataRowVisitor visitor)
-		{
-			visitor.VisitAssemblyRefOSRow (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/AssemblyRefProcessor.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/AssemblyRefProcessor.cs
deleted file mode 100644
index 80cef8b..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/AssemblyRefProcessor.cs
+++ /dev/null
@@ -1,79 +0,0 @@
-//
-// AssemblyRefProcessorTable.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:25 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	public sealed class AssemblyRefProcessorTable : IMetadataTable {
-
-		public const int RId = 0x24;
-
-		RowCollection m_rows;
-
-		public AssemblyRefProcessorRow this [int index] {
-			get { return m_rows [index] as AssemblyRefProcessorRow; }
-			set { m_rows [index] = value; }
-		}
-
-		public RowCollection Rows {
-			get { return m_rows; }
-			set { m_rows = value; }
-		}
-
-		public int Id {
-			get { return RId; }
-		}
-
-		internal AssemblyRefProcessorTable ()
-		{
-		}
-
-		public void Accept (IMetadataTableVisitor visitor)
-		{
-			visitor.VisitAssemblyRefProcessorTable (this);
-			this.Rows.Accept (visitor.GetRowVisitor ());
-		}
-	}
-
-	public sealed class AssemblyRefProcessorRow : IMetadataRow {
-
-		public uint Processor;
-		public uint AssemblyRef;
-
-		internal AssemblyRefProcessorRow ()
-		{
-		}
-
-		public void Accept (IMetadataRowVisitor visitor)
-		{
-			visitor.VisitAssemblyRefProcessorRow (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/BaseMetadataVisitor.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/BaseMetadataVisitor.cs
deleted file mode 100644
index fd6ac0f..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/BaseMetadataVisitor.cs
+++ /dev/null
@@ -1,448 +0,0 @@
-//
-// BaseMetadataVisitor.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Thu Feb 22 14:39:38 CET 2007
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	public abstract class BaseMetadataVisitor : IMetadataVisitor {
-
-		public virtual void VisitMetadataRoot (MetadataRoot root)
-		{
-		}
-
-		public virtual void VisitMetadataRootHeader (MetadataRoot.MetadataRootHeader header)
-		{
-		}
-
-		public virtual void VisitMetadataStreamCollection (MetadataStreamCollection streams)
-		{
-		}
-
-		public virtual void VisitMetadataStream (MetadataStream stream)
-		{
-		}
-
-		public virtual void VisitMetadataStreamHeader (MetadataStream.MetadataStreamHeader header)
-		{
-		}
-
-		public virtual void VisitGuidHeap (GuidHeap heap)
-		{
-		}
-
-		public virtual void VisitStringsHeap (StringsHeap heap)
-		{
-		}
-
-		public virtual void VisitTablesHeap (TablesHeap heap)
-		{
-		}
-
-		public virtual void VisitBlobHeap (BlobHeap heap)
-		{
-		}
-
-		public virtual void VisitUserStringsHeap (UserStringsHeap heap)
-		{
-		}
-
-		public virtual void TerminateMetadataRoot (MetadataRoot root)
-		{
-		}
-	}
-
-	public abstract class BaseMetadataTableVisitor : IMetadataTableVisitor {
-
-		public virtual void VisitTableCollection (TableCollection coll)
-		{
-		}
-
-		public virtual void VisitAssemblyTable (AssemblyTable table)
-		{
-		}
-
-		public virtual void VisitAssemblyOSTable (AssemblyOSTable table)
-		{
-		}
-
-		public virtual void VisitAssemblyProcessorTable (AssemblyProcessorTable table)
-		{
-		}
-
-		public virtual void VisitAssemblyRefTable (AssemblyRefTable table)
-		{
-		}
-
-		public virtual void VisitAssemblyRefOSTable (AssemblyRefOSTable table)
-		{
-		}
-
-		public virtual void VisitAssemblyRefProcessorTable (AssemblyRefProcessorTable table)
-		{
-		}
-
-		public virtual void VisitClassLayoutTable (ClassLayoutTable table)
-		{
-		}
-
-		public virtual void VisitConstantTable (ConstantTable table)
-		{
-		}
-
-		public virtual void VisitCustomAttributeTable (CustomAttributeTable table)
-		{
-		}
-
-		public virtual void VisitDeclSecurityTable (DeclSecurityTable table)
-		{
-		}
-
-		public virtual void VisitEventTable (EventTable table)
-		{
-		}
-
-		public virtual void VisitEventMapTable (EventMapTable table)
-		{
-		}
-
-		public virtual void VisitEventPtrTable (EventPtrTable table)
-		{
-		}
-
-		public virtual void VisitExportedTypeTable (ExportedTypeTable table)
-		{
-		}
-
-		public virtual void VisitFieldTable (FieldTable table)
-		{
-		}
-
-		public virtual void VisitFieldLayoutTable (FieldLayoutTable table)
-		{
-		}
-
-		public virtual void VisitFieldMarshalTable (FieldMarshalTable table)
-		{
-		}
-
-		public virtual void VisitFieldPtrTable (FieldPtrTable table)
-		{
-		}
-
-		public virtual void VisitFieldRVATable (FieldRVATable table)
-		{
-		}
-
-		public virtual void VisitFileTable (FileTable table)
-		{
-		}
-
-		public virtual void VisitGenericParamTable (GenericParamTable table)
-		{
-		}
-
-		public virtual void VisitGenericParamConstraintTable (GenericParamConstraintTable table)
-		{
-		}
-
-		public virtual void VisitImplMapTable (ImplMapTable table)
-		{
-		}
-
-		public virtual void VisitInterfaceImplTable (InterfaceImplTable table)
-		{
-		}
-
-		public virtual void VisitManifestResourceTable (ManifestResourceTable table)
-		{
-		}
-
-		public virtual void VisitMemberRefTable (MemberRefTable table)
-		{
-		}
-
-		public virtual void VisitMethodTable (MethodTable table)
-		{
-		}
-
-		public virtual void VisitMethodImplTable (MethodImplTable table)
-		{
-		}
-
-		public virtual void VisitMethodPtrTable (MethodPtrTable table)
-		{
-		}
-
-		public virtual void VisitMethodSemanticsTable (MethodSemanticsTable table)
-		{
-		}
-
-		public virtual void VisitMethodSpecTable (MethodSpecTable table)
-		{
-		}
-
-		public virtual void VisitModuleTable (ModuleTable table)
-		{
-		}
-
-		public virtual void VisitModuleRefTable (ModuleRefTable table)
-		{
-		}
-
-		public virtual void VisitNestedClassTable (NestedClassTable table)
-		{
-		}
-
-		public virtual void VisitParamTable (ParamTable table)
-		{
-		}
-
-		public virtual void VisitParamPtrTable (ParamPtrTable table)
-		{
-		}
-
-		public virtual void VisitPropertyTable (PropertyTable table)
-		{
-		}
-
-		public virtual void VisitPropertyMapTable (PropertyMapTable table)
-		{
-		}
-
-		public virtual void VisitPropertyPtrTable (PropertyPtrTable table)
-		{
-		}
-
-		public virtual void VisitStandAloneSigTable (StandAloneSigTable table)
-		{
-		}
-
-		public virtual void VisitTypeDefTable (TypeDefTable table)
-		{
-		}
-
-		public virtual void VisitTypeRefTable (TypeRefTable table)
-		{
-		}
-
-		public virtual void VisitTypeSpecTable (TypeSpecTable table)
-		{
-		}
-
-		public virtual void TerminateTableCollection (TableCollection coll)
-		{
-		}
-
-		public abstract IMetadataRowVisitor GetRowVisitor();
-	}
-
-	public abstract class BaseMetadataRowVisitor : IMetadataRowVisitor {
-
-		public virtual void VisitRowCollection (RowCollection coll)
-		{
-		}
-
-		public virtual void VisitAssemblyRow (AssemblyRow row)
-		{
-		}
-
-		public virtual void VisitAssemblyOSRow (AssemblyOSRow row)
-		{
-		}
-
-		public virtual void VisitAssemblyProcessorRow (AssemblyProcessorRow row)
-		{
-		}
-
-		public virtual void VisitAssemblyRefRow (AssemblyRefRow row)
-		{
-		}
-
-		public virtual void VisitAssemblyRefOSRow (AssemblyRefOSRow row)
-		{
-		}
-
-		public virtual void VisitAssemblyRefProcessorRow (AssemblyRefProcessorRow row)
-		{
-		}
-
-		public virtual void VisitClassLayoutRow (ClassLayoutRow row)
-		{
-		}
-
-		public virtual void VisitConstantRow (ConstantRow row)
-		{
-		}
-
-		public virtual void VisitCustomAttributeRow (CustomAttributeRow row)
-		{
-		}
-
-		public virtual void VisitDeclSecurityRow (DeclSecurityRow row)
-		{
-		}
-
-		public virtual void VisitEventRow (EventRow row)
-		{
-		}
-
-		public virtual void VisitEventMapRow (EventMapRow row)
-		{
-		}
-
-		public virtual void VisitEventPtrRow (EventPtrRow row)
-		{
-		}
-
-		public virtual void VisitExportedTypeRow (ExportedTypeRow row)
-		{
-		}
-
-		public virtual void VisitFieldRow (FieldRow row)
-		{
-		}
-
-		public virtual void VisitFieldLayoutRow (FieldLayoutRow row)
-		{
-		}
-
-		public virtual void VisitFieldMarshalRow (FieldMarshalRow row)
-		{
-		}
-
-		public virtual void VisitFieldPtrRow (FieldPtrRow row)
-		{
-		}
-
-		public virtual void VisitFieldRVARow (FieldRVARow row)
-		{
-		}
-
-		public virtual void VisitFileRow (FileRow row)
-		{
-		}
-
-		public virtual void VisitGenericParamRow (GenericParamRow row)
-		{
-		}
-
-		public virtual void VisitGenericParamConstraintRow (GenericParamConstraintRow row)
-		{
-		}
-
-		public virtual void VisitImplMapRow (ImplMapRow row)
-		{
-		}
-
-		public virtual void VisitInterfaceImplRow (InterfaceImplRow row)
-		{
-		}
-
-		public virtual void VisitManifestResourceRow (ManifestResourceRow row)
-		{
-		}
-
-		public virtual void VisitMemberRefRow (MemberRefRow row)
-		{
-		}
-
-		public virtual void VisitMethodRow (MethodRow row)
-		{
-		}
-
-		public virtual void VisitMethodImplRow (MethodImplRow row)
-		{
-		}
-
-		public virtual void VisitMethodPtrRow (MethodPtrRow row)
-		{
-		}
-
-		public virtual void VisitMethodSemanticsRow (MethodSemanticsRow row)
-		{
-		}
-
-		public virtual void VisitMethodSpecRow (MethodSpecRow row)
-		{
-		}
-
-		public virtual void VisitModuleRow (ModuleRow row)
-		{
-		}
-
-		public virtual void VisitModuleRefRow (ModuleRefRow row)
-		{
-		}
-
-		public virtual void VisitNestedClassRow (NestedClassRow row)
-		{
-		}
-
-		public virtual void VisitParamRow (ParamRow row)
-		{
-		}
-
-		public virtual void VisitParamPtrRow (ParamPtrRow row)
-		{
-		}
-
-		public virtual void VisitPropertyRow (PropertyRow row)
-		{
-		}
-
-		public virtual void VisitPropertyMapRow (PropertyMapRow row)
-		{
-		}
-
-		public virtual void VisitPropertyPtrRow (PropertyPtrRow row)
-		{
-		}
-
-		public virtual void VisitStandAloneSigRow (StandAloneSigRow row)
-		{
-		}
-
-		public virtual void VisitTypeDefRow (TypeDefRow row)
-		{
-		}
-
-		public virtual void VisitTypeRefRow (TypeRefRow row)
-		{
-		}
-
-		public virtual void VisitTypeSpecRow (TypeSpecRow row)
-		{
-		}
-
-		public virtual void TerminateRowCollection (RowCollection coll)
-		{
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/BlobHeap.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/BlobHeap.cs
index 7c6d81b..81c775e 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/BlobHeap.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/BlobHeap.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,65 +26,34 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil.Metadata {
-
-	using System;
-	using System.Collections;
-	using System.IO;
+using System;
 
-	public class BlobHeap : MetadataHeap {
+using Mono.Cecil.PE;
 
-		internal BlobHeap (MetadataStream stream) : base (stream, MetadataStream.Blob)
-		{
-		}
+namespace Mono.Cecil.Metadata {
 
-		public byte [] Read (uint index)
-		{
-			return ReadBytesFromStream (index);
-		}
+	sealed class BlobHeap : Heap {
 
-		public BinaryReader GetReader (uint index)
+		public BlobHeap (Section section, uint start, uint size)
+			: base (section, start, size)
 		{
-			return new BinaryReader (new MemoryStream (Read (index)));
 		}
 
-		public override void Accept (IMetadataVisitor visitor)
-		{
-			visitor.VisitBlobHeap (this);
-		}
-	}
-
-	class ByteArrayEqualityComparer : IHashCodeProvider, IComparer {
-
-		public static readonly ByteArrayEqualityComparer Instance = new ByteArrayEqualityComparer ();
-
-		public int GetHashCode (object obj)
+		public byte [] Read (uint index)
 		{
-			byte [] array = (byte []) obj;
+			if (index == 0 || index > Size - 1)
+				return Empty<byte>.Array;
 
-			int hash = 0;
-			for (int i = 0; i < array.Length; i++)
-				hash = (hash * 37) ^ array [i];
-
-			return hash;
-		}
-
-		public int Compare (object a, object b)
-		{
-			byte [] x = (byte []) a;
-			byte [] y = (byte []) b;
+			var data = Section.Data;
 
-			if (x == null || y == null)
-				return x == y ? 0 : 1;
+			int position = (int) (index + Offset);
+			int length = (int) data.ReadCompressedUInt32 (ref position);
 
-			if (x.Length != y.Length)
-				return 1;
+			var buffer = new byte [length];
 
-			for (int i = 0; i < x.Length; i++)
-				if (x [i] != y [i])
-					return 1;
+			Buffer.BlockCopy (data, position, buffer, 0, length);
 
-			return 0;
+			return buffer;
 		}
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Buffers.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Buffers.cs
new file mode 100644
index 0000000..e8759d7
--- /dev/null
+++ b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Buffers.cs
@@ -0,0 +1,373 @@
+//
+// TableHeapBuffer.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+using Mono.Cecil.PE;
+
+using RVA = System.UInt32;
+
+#if !READ_ONLY
+
+namespace Mono.Cecil.Metadata {
+
+	sealed class TableHeapBuffer : HeapBuffer {
+
+		readonly ModuleDefinition module;
+		readonly MetadataBuilder metadata;
+
+		internal MetadataTable [] tables = new MetadataTable [45];
+
+		bool large_string;
+		bool large_blob;
+		readonly int [] coded_index_sizes = new int [13];
+		readonly Func<Table, int> counter;
+
+		public override bool IsEmpty {
+			get { return false; }
+		}
+
+		public TableHeapBuffer (ModuleDefinition module, MetadataBuilder metadata)
+			: base (24)
+		{
+			this.module = module;
+			this.metadata = metadata;
+			this.counter = GetTableLength;
+		}
+
+		int GetTableLength (Table table)
+		{
+			var md_table = tables [(int) table];
+			return md_table != null ? md_table.Length : 0;
+		}
+
+		public TTable GetTable<TTable> (Table table) where TTable : MetadataTable, new ()
+		{
+			var md_table = (TTable) tables [(int) table];
+			if (md_table != null)
+				return md_table;
+
+			md_table = new TTable ();
+			tables [(int) table] = md_table;
+			return md_table;
+		}
+
+		public void WriteBySize (uint value, int size)
+		{
+			if (size == 4)
+				WriteUInt32 (value);
+			else
+				WriteUInt16 ((ushort) value);
+		}
+
+		public void WriteBySize (uint value, bool large)
+		{
+			if (large)
+				WriteUInt32 (value);
+			else
+				WriteUInt16 ((ushort) value);
+		}
+
+		public void WriteString (uint @string)
+		{
+			WriteBySize (@string, large_string);
+		}
+
+		public void WriteBlob (uint blob)
+		{
+			WriteBySize (blob, large_blob);
+		}
+
+		public void WriteRID (uint rid, Table table)
+		{
+			var md_table = tables [(int) table];
+			WriteBySize (rid, md_table == null ? false : md_table.IsLarge);
+		}
+
+		int GetCodedIndexSize (CodedIndex coded_index)
+		{
+			var index = (int) coded_index;
+			var size = coded_index_sizes [index];
+			if (size != 0)
+				return size;
+
+			return coded_index_sizes [index] = coded_index.GetSize (counter);
+		}
+
+		public void WriteCodedRID (uint rid, CodedIndex coded_index)
+		{
+			WriteBySize (rid, GetCodedIndexSize (coded_index));
+		}
+
+		public void WriteTableHeap ()
+		{
+			WriteUInt32 (0);					// Reserved
+			WriteByte (GetTableHeapVersion ());	// MajorVersion
+			WriteByte (0);						// MinorVersion
+			WriteByte (GetHeapSizes ());		// HeapSizes
+			WriteByte (10);						// Reserved2
+			WriteUInt64 (GetValid ());			// Valid
+			WriteUInt64 (0x0016003301fa00);		// Sorted
+
+			WriteRowCount ();
+			WriteTables ();
+		}
+
+		void WriteRowCount ()
+		{
+			for (int i = 0; i < tables.Length; i++) {
+				var table = tables [i];
+				if (table == null || table.Length == 0)
+					continue;
+
+				WriteUInt32 ((uint) table.Length);
+			}
+		}
+
+		void WriteTables ()
+		{
+			for (int i = 0; i < tables.Length; i++) {
+				var table = tables [i];
+				if (table == null || table.Length == 0)
+					continue;
+
+				table.Write (this);
+			}
+		}
+
+		ulong GetValid ()
+		{
+			ulong valid = 0;
+
+			for (int i = 0; i < tables.Length; i++) {
+				var table = tables [i];
+				if (table == null || table.Length == 0)
+					continue;
+
+				table.Sort ();
+				valid |= (1UL << i);
+			}
+
+			return valid;
+		}
+
+		byte GetHeapSizes ()
+		{
+			byte heap_sizes = 0;
+
+			if (metadata.string_heap.IsLarge) {
+				large_string = true;
+				heap_sizes |= 0x01;
+			}
+
+			if (metadata.blob_heap.IsLarge) {
+				large_blob = true;
+				heap_sizes |= 0x04;
+			}
+
+			return heap_sizes;
+		}
+
+		byte GetTableHeapVersion ()
+		{
+			switch (module.Runtime) {
+			case TargetRuntime.Net_1_0:
+			case TargetRuntime.Net_1_1:
+				return 1;
+			default:
+				return 2;
+			}
+		}
+
+		public void FixupData (RVA data_rva)
+		{
+			var table = GetTable<FieldRVATable> (Table.FieldRVA);
+			if (table.length == 0)
+				return;
+
+			var field_idx_size = GetTable<FieldTable> (Table.Field).IsLarge ? 4 : 2;
+			var previous = this.position;
+
+			base.position = table.position;
+			for (int i = 0; i < table.length; i++) {
+				var rva = ReadUInt32 ();
+				base.position -= 4;
+				WriteUInt32 (rva + data_rva);
+				base.position += field_idx_size;
+			}
+
+			base.position = previous;
+		}
+	}
+
+	sealed class ResourceBuffer : ByteBuffer {
+
+		public ResourceBuffer ()
+			: base (0)
+		{
+		}
+
+		public uint AddResource (byte [] resource)
+		{
+			var offset = (uint) this.position;
+			WriteInt32 (resource.Length);
+			WriteBytes (resource);
+			return offset;
+		}
+	}
+
+	sealed class DataBuffer : ByteBuffer {
+
+		public DataBuffer ()
+			: base (0)
+		{
+		}
+
+		public RVA AddData (byte [] data)
+		{
+			var rva = (RVA) position;
+			WriteBytes (data);
+			return rva;
+		}
+	}
+
+	abstract class HeapBuffer : ByteBuffer {
+
+		public bool IsLarge {
+			get { return base.length > 65536; }
+		}
+
+		public abstract bool IsEmpty { get; }
+
+		protected HeapBuffer (int length)
+			: base (length)
+		{
+		}
+	}
+
+	class StringHeapBuffer : HeapBuffer {
+
+		readonly Dictionary<string, uint> strings = new Dictionary<string, uint> ();
+
+		public sealed override bool IsEmpty {
+			get { return length <= 1; }
+		}
+
+		public StringHeapBuffer ()
+			: base (1)
+		{
+			WriteByte (0);
+		}
+
+		public uint GetStringIndex (string @string)
+		{
+			uint index;
+			if (strings.TryGetValue (@string, out index))
+				return index;
+
+			index = (uint) base.position;
+			WriteString (@string);
+			strings.Add (@string, index);
+			return index;
+		}
+
+		protected virtual void WriteString (string @string)
+		{
+			WriteBytes (Encoding.UTF8.GetBytes (@string));
+			WriteByte (0);
+		}
+	}
+
+	sealed class BlobHeapBuffer : HeapBuffer {
+
+		readonly Dictionary<ByteBuffer, uint> blobs = new Dictionary<ByteBuffer, uint> (new ByteBufferEqualityComparer ());
+
+		public override bool IsEmpty {
+			get { return length <= 1; }
+		}
+
+		public BlobHeapBuffer ()
+			: base (1)
+		{
+			WriteByte (0);
+		}
+
+		public uint GetBlobIndex (ByteBuffer blob)
+		{
+			uint index;
+			if (blobs.TryGetValue (blob, out index))
+				return index;
+
+			index = (uint) base.position;
+			WriteBlob (blob);
+			blobs.Add (blob, index);
+			return index;
+		}
+
+		void WriteBlob (ByteBuffer blob)
+		{
+			WriteCompressedUInt32 ((uint) blob.length);
+			WriteBytes (blob);
+		}
+	}
+
+	sealed class UserStringHeapBuffer : StringHeapBuffer {
+
+		protected override void WriteString (string @string)
+		{
+			WriteCompressedUInt32 ((uint) @string.Length * 2 + 1);
+
+			byte special = 0;
+
+			for (int i = 0; i < @string.Length; i++) {
+				var @char = @string [i];
+				WriteUInt16 (@char);
+
+				if (special == 1)
+					continue;
+
+				if (@char < 0x20 || @char > 0x7e) {
+					if (@char > 0x7e
+						|| (@char >= 0x01 && @char <= 0x08)
+						|| (@char >= 0x0e && @char <= 0x1f)
+						|| @char == 0x27
+						|| @char == 0x2d) {
+
+						special = 1;
+					}
+				}
+			}
+
+			WriteByte (special);
+		}
+	}
+}
+
+#endif
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/ClassLayout.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/ClassLayout.cs
deleted file mode 100644
index cb83be4..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/ClassLayout.cs
+++ /dev/null
@@ -1,80 +0,0 @@
-//
-// ClassLayoutTable.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:25 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	public sealed class ClassLayoutTable : IMetadataTable {
-
-		public const int RId = 0x0f;
-
-		RowCollection m_rows;
-
-		public ClassLayoutRow this [int index] {
-			get { return m_rows [index] as ClassLayoutRow; }
-			set { m_rows [index] = value; }
-		}
-
-		public RowCollection Rows {
-			get { return m_rows; }
-			set { m_rows = value; }
-		}
-
-		public int Id {
-			get { return RId; }
-		}
-
-		internal ClassLayoutTable ()
-		{
-		}
-
-		public void Accept (IMetadataTableVisitor visitor)
-		{
-			visitor.VisitClassLayoutTable (this);
-			this.Rows.Accept (visitor.GetRowVisitor ());
-		}
-	}
-
-	public sealed class ClassLayoutRow : IMetadataRow {
-
-		public ushort PackingSize;
-		public uint ClassSize;
-		public uint Parent;
-
-		internal ClassLayoutRow ()
-		{
-		}
-
-		public void Accept (IMetadataRowVisitor visitor)
-		{
-			visitor.VisitClassLayoutRow (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/CodedIndex.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/CodedIndex.cs
index 2cf5578..6267726 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/CodedIndex.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/CodedIndex.cs
@@ -4,10 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Mar 20 16:02:16 +0100 2007
-//
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -31,7 +28,7 @@
 
 namespace Mono.Cecil.Metadata {
 
-	public enum CodedIndex {
+	enum CodedIndex {
 		TypeDefOrRef,
 		HasConstant,
 		HasCustomAttribute,
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Constant.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Constant.cs
deleted file mode 100644
index 3ca867d..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Constant.cs
+++ /dev/null
@@ -1,80 +0,0 @@
-//
-// ConstantTable.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:25 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	public sealed class ConstantTable : IMetadataTable {
-
-		public const int RId = 0x0b;
-
-		RowCollection m_rows;
-
-		public ConstantRow this [int index] {
-			get { return m_rows [index] as ConstantRow; }
-			set { m_rows [index] = value; }
-		}
-
-		public RowCollection Rows {
-			get { return m_rows; }
-			set { m_rows = value; }
-		}
-
-		public int Id {
-			get { return RId; }
-		}
-
-		internal ConstantTable ()
-		{
-		}
-
-		public void Accept (IMetadataTableVisitor visitor)
-		{
-			visitor.VisitConstantTable (this);
-			this.Rows.Accept (visitor.GetRowVisitor ());
-		}
-	}
-
-	public sealed class ConstantRow : IMetadataRow {
-
-		public ElementType Type;
-		public MetadataToken Parent;
-		public uint Value;
-
-		internal ConstantRow ()
-		{
-		}
-
-		public void Accept (IMetadataRowVisitor visitor)
-		{
-			visitor.VisitConstantRow (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/CustomAttribute.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/CustomAttribute.cs
deleted file mode 100644
index 21a0d0c..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/CustomAttribute.cs
+++ /dev/null
@@ -1,80 +0,0 @@
-//
-// CustomAttributeTable.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:25 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	public sealed class CustomAttributeTable : IMetadataTable {
-
-		public const int RId = 0x0c;
-
-		RowCollection m_rows;
-
-		public CustomAttributeRow this [int index] {
-			get { return m_rows [index] as CustomAttributeRow; }
-			set { m_rows [index] = value; }
-		}
-
-		public RowCollection Rows {
-			get { return m_rows; }
-			set { m_rows = value; }
-		}
-
-		public int Id {
-			get { return RId; }
-		}
-
-		internal CustomAttributeTable ()
-		{
-		}
-
-		public void Accept (IMetadataTableVisitor visitor)
-		{
-			visitor.VisitCustomAttributeTable (this);
-			this.Rows.Accept (visitor.GetRowVisitor ());
-		}
-	}
-
-	public sealed class CustomAttributeRow : IMetadataRow {
-
-		public MetadataToken Parent;
-		public MetadataToken Type;
-		public uint Value;
-
-		internal CustomAttributeRow ()
-		{
-		}
-
-		public void Accept (IMetadataRowVisitor visitor)
-		{
-			visitor.VisitCustomAttributeRow (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/DeclSecurity.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/DeclSecurity.cs
deleted file mode 100644
index 1b2fbdc..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/DeclSecurity.cs
+++ /dev/null
@@ -1,82 +0,0 @@
-//
-// DeclSecurityTable.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	using Mono.Cecil;
-
-	public sealed class DeclSecurityTable : IMetadataTable {
-
-		public const int RId = 0x0e;
-
-		RowCollection m_rows;
-
-		public DeclSecurityRow this [int index] {
-			get { return m_rows [index] as DeclSecurityRow; }
-			set { m_rows [index] = value; }
-		}
-
-		public RowCollection Rows {
-			get { return m_rows; }
-			set { m_rows = value; }
-		}
-
-		public int Id {
-			get { return RId; }
-		}
-
-		internal DeclSecurityTable ()
-		{
-		}
-
-		public void Accept (IMetadataTableVisitor visitor)
-		{
-			visitor.VisitDeclSecurityTable (this);
-			this.Rows.Accept (visitor.GetRowVisitor ());
-		}
-	}
-
-	public sealed class DeclSecurityRow : IMetadataRow {
-
-		public SecurityAction Action;
-		public MetadataToken Parent;
-		public uint PermissionSet;
-
-		internal DeclSecurityRow ()
-		{
-		}
-
-		public void Accept (IMetadataRowVisitor visitor)
-		{
-			visitor.VisitDeclSecurityRow (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/ElementType.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/ElementType.cs
index 4d78f43..1ede042 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/ElementType.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/ElementType.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -28,46 +28,46 @@
 
 namespace Mono.Cecil.Metadata {
 
-	public enum ElementType {
-		End		 = 0x00,   // Marks end of a list
-		Void		= 0x01,
-		Boolean	 = 0x02,
-		Char		= 0x03,
-		I1		  = 0x04,
-		U1		  = 0x05,
-		I2		  = 0x06,
-		U2		  = 0x07,
-		I4		  = 0x08,
-		U4		  = 0x09,
-		I8		  = 0x0a,
-		U8		  = 0x0b,
-		R4		  = 0x0c,
-		R8		  = 0x0d,
-		String	  = 0x0e,
-		Ptr		 = 0x0f,   // Followed by <type> token
-		ByRef	   = 0x10,   // Followed by <type> token
-		ValueType   = 0x11,   // Followed by <type> token
-		Class	   = 0x12,   // Followed by <type> token
-		Var        = 0x13,   // Followed by generic parameter number
-		Array	   = 0x14,   // <type> <rank> <boundsCount> <bound1>  <loCount> <lo1>
+	enum ElementType : byte {
+		None = 0x00,
+		Void = 0x01,
+		Boolean = 0x02,
+		Char = 0x03,
+		I1 = 0x04,
+		U1 = 0x05,
+		I2 = 0x06,
+		U2 = 0x07,
+		I4 = 0x08,
+		U4 = 0x09,
+		I8 = 0x0a,
+		U8 = 0x0b,
+		R4 = 0x0c,
+		R8 = 0x0d,
+		String = 0x0e,
+		Ptr = 0x0f,   // Followed by <type> token
+		ByRef = 0x10,   // Followed by <type> token
+		ValueType = 0x11,   // Followed by <type> token
+		Class = 0x12,   // Followed by <type> token
+		Var = 0x13,   // Followed by generic parameter number
+		Array = 0x14,   // <type> <rank> <boundsCount> <bound1>  <loCount> <lo1>
 		GenericInst = 0x15,   // <type> <type-arg-count> <type-1> ... <type-n> */
-		TypedByRef  = 0x16,
-		I		   = 0x18,   // System.IntPtr
-		U		   = 0x19,   // System.UIntPtr
-		FnPtr	   = 0x1b,   // Followed by full method signature
-		Object	  = 0x1c,   // System.Object
-		SzArray	 = 0x1d,   // Single-dim array with 0 lower bound
-		MVar       = 0x1e,   // Followed by generic parameter number
-		CModReqD	= 0x1f,   // Required modifier : followed by a TypeDef or TypeRef token
-		CModOpt	 = 0x20,   // Optional modifier : followed by a TypeDef or TypeRef token
-		Internal	= 0x21,   // Implemented within the CLI
-		Modifier	= 0x40,   // Or'd with following element types
-		Sentinel	= 0x41,   // Sentinel for varargs method signature
-		Pinned	  = 0x45,   // Denotes a local variable that points at a pinned object
+		TypedByRef = 0x16,
+		I = 0x18,   // System.IntPtr
+		U = 0x19,   // System.UIntPtr
+		FnPtr = 0x1b,   // Followed by full method signature
+		Object = 0x1c,   // System.Object
+		SzArray = 0x1d,   // Single-dim array with 0 lower bound
+		MVar = 0x1e,   // Followed by generic parameter number
+		CModReqD = 0x1f,   // Required modifier : followed by a TypeDef or TypeRef token
+		CModOpt = 0x20,   // Optional modifier : followed by a TypeDef or TypeRef token
+		Internal = 0x21,   // Implemented within the CLI
+		Modifier = 0x40,   // Or'd with following element types
+		Sentinel = 0x41,   // Sentinel for varargs method signature
+		Pinned = 0x45,   // Denotes a local variable that points at a pinned object
 
 		// special undocumented constants
-		Type		= 0x50,
-		Boxed	   = 0x51,
-		Enum		= 0x55
+		Type = 0x50,
+		Boxed = 0x51,
+		Enum = 0x55
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Event.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Event.cs
deleted file mode 100644
index a60fedb..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Event.cs
+++ /dev/null
@@ -1,82 +0,0 @@
-//
-// EventTable.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	using Mono.Cecil;
-
-	public sealed class EventTable : IMetadataTable {
-
-		public const int RId = 0x14;
-
-		RowCollection m_rows;
-
-		public EventRow this [int index] {
-			get { return m_rows [index] as EventRow; }
-			set { m_rows [index] = value; }
-		}
-
-		public RowCollection Rows {
-			get { return m_rows; }
-			set { m_rows = value; }
-		}
-
-		public int Id {
-			get { return RId; }
-		}
-
-		internal EventTable ()
-		{
-		}
-
-		public void Accept (IMetadataTableVisitor visitor)
-		{
-			visitor.VisitEventTable (this);
-			this.Rows.Accept (visitor.GetRowVisitor ());
-		}
-	}
-
-	public sealed class EventRow : IMetadataRow {
-
-		public EventAttributes EventFlags;
-		public uint Name;
-		public MetadataToken EventType;
-
-		internal EventRow ()
-		{
-		}
-
-		public void Accept (IMetadataRowVisitor visitor)
-		{
-			visitor.VisitEventRow (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/EventMap.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/EventMap.cs
deleted file mode 100644
index c3be845..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/EventMap.cs
+++ /dev/null
@@ -1,79 +0,0 @@
-//
-// EventMapTable.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	public sealed class EventMapTable : IMetadataTable {
-
-		public const int RId = 0x12;
-
-		RowCollection m_rows;
-
-		public EventMapRow this [int index] {
-			get { return m_rows [index] as EventMapRow; }
-			set { m_rows [index] = value; }
-		}
-
-		public RowCollection Rows {
-			get { return m_rows; }
-			set { m_rows = value; }
-		}
-
-		public int Id {
-			get { return RId; }
-		}
-
-		internal EventMapTable ()
-		{
-		}
-
-		public void Accept (IMetadataTableVisitor visitor)
-		{
-			visitor.VisitEventMapTable (this);
-			this.Rows.Accept (visitor.GetRowVisitor ());
-		}
-	}
-
-	public sealed class EventMapRow : IMetadataRow {
-
-		public uint Parent;
-		public uint EventList;
-
-		internal EventMapRow ()
-		{
-		}
-
-		public void Accept (IMetadataRowVisitor visitor)
-		{
-			visitor.VisitEventMapRow (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/EventPtr.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/EventPtr.cs
deleted file mode 100644
index 094fe5c..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/EventPtr.cs
+++ /dev/null
@@ -1,78 +0,0 @@
-//
-// EventPtrTable.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Thu Feb 22 14:39:38 CET 2007
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	public sealed class EventPtrTable : IMetadataTable {
-
-		public const int RId = 0x13;
-
-		RowCollection m_rows;
-
-		public EventPtrRow this [int index] {
-			get { return m_rows [index] as EventPtrRow; }
-			set { m_rows [index] = value; }
-		}
-
-		public RowCollection Rows {
-			get { return m_rows; }
-			set { m_rows = value; }
-		}
-
-		public int Id {
-			get { return RId; }
-		}
-
-		internal EventPtrTable ()
-		{
-		}
-
-		public void Accept (IMetadataTableVisitor visitor)
-		{
-			visitor.VisitEventPtrTable (this);
-			this.Rows.Accept (visitor.GetRowVisitor ());
-		}
-	}
-
-	public sealed class EventPtrRow : IMetadataRow {
-
-		public uint Event;
-
-		internal EventPtrRow ()
-		{
-		}
-
-		public void Accept (IMetadataRowVisitor visitor)
-		{
-			visitor.VisitEventPtrRow (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/ExportedType.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/ExportedType.cs
deleted file mode 100644
index bca827f..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/ExportedType.cs
+++ /dev/null
@@ -1,84 +0,0 @@
-//
-// ExportedTypeTable.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	using Mono.Cecil;
-
-	public sealed class ExportedTypeTable : IMetadataTable {
-
-		public const int RId = 0x27;
-
-		RowCollection m_rows;
-
-		public ExportedTypeRow this [int index] {
-			get { return m_rows [index] as ExportedTypeRow; }
-			set { m_rows [index] = value; }
-		}
-
-		public RowCollection Rows {
-			get { return m_rows; }
-			set { m_rows = value; }
-		}
-
-		public int Id {
-			get { return RId; }
-		}
-
-		internal ExportedTypeTable ()
-		{
-		}
-
-		public void Accept (IMetadataTableVisitor visitor)
-		{
-			visitor.VisitExportedTypeTable (this);
-			this.Rows.Accept (visitor.GetRowVisitor ());
-		}
-	}
-
-	public sealed class ExportedTypeRow : IMetadataRow {
-
-		public TypeAttributes Flags;
-		public uint TypeDefId;
-		public uint TypeName;
-		public uint TypeNamespace;
-		public MetadataToken Implementation;
-
-		internal ExportedTypeRow ()
-		{
-		}
-
-		public void Accept (IMetadataRowVisitor visitor)
-		{
-			visitor.VisitExportedTypeRow (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Field.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Field.cs
deleted file mode 100644
index 65b7998..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Field.cs
+++ /dev/null
@@ -1,82 +0,0 @@
-//
-// FieldTable.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	using Mono.Cecil;
-
-	public sealed class FieldTable : IMetadataTable {
-
-		public const int RId = 0x04;
-
-		RowCollection m_rows;
-
-		public FieldRow this [int index] {
-			get { return m_rows [index] as FieldRow; }
-			set { m_rows [index] = value; }
-		}
-
-		public RowCollection Rows {
-			get { return m_rows; }
-			set { m_rows = value; }
-		}
-
-		public int Id {
-			get { return RId; }
-		}
-
-		internal FieldTable ()
-		{
-		}
-
-		public void Accept (IMetadataTableVisitor visitor)
-		{
-			visitor.VisitFieldTable (this);
-			this.Rows.Accept (visitor.GetRowVisitor ());
-		}
-	}
-
-	public sealed class FieldRow : IMetadataRow {
-
-		public FieldAttributes Flags;
-		public uint Name;
-		public uint Signature;
-
-		internal FieldRow ()
-		{
-		}
-
-		public void Accept (IMetadataRowVisitor visitor)
-		{
-			visitor.VisitFieldRow (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/FieldLayout.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/FieldLayout.cs
deleted file mode 100644
index 5cf1563..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/FieldLayout.cs
+++ /dev/null
@@ -1,79 +0,0 @@
-//
-// FieldLayoutTable.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	public sealed class FieldLayoutTable : IMetadataTable {
-
-		public const int RId = 0x10;
-
-		RowCollection m_rows;
-
-		public FieldLayoutRow this [int index] {
-			get { return m_rows [index] as FieldLayoutRow; }
-			set { m_rows [index] = value; }
-		}
-
-		public RowCollection Rows {
-			get { return m_rows; }
-			set { m_rows = value; }
-		}
-
-		public int Id {
-			get { return RId; }
-		}
-
-		internal FieldLayoutTable ()
-		{
-		}
-
-		public void Accept (IMetadataTableVisitor visitor)
-		{
-			visitor.VisitFieldLayoutTable (this);
-			this.Rows.Accept (visitor.GetRowVisitor ());
-		}
-	}
-
-	public sealed class FieldLayoutRow : IMetadataRow {
-
-		public uint Offset;
-		public uint Field;
-
-		internal FieldLayoutRow ()
-		{
-		}
-
-		public void Accept (IMetadataRowVisitor visitor)
-		{
-			visitor.VisitFieldLayoutRow (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/FieldMarshal.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/FieldMarshal.cs
deleted file mode 100644
index f5c6936..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/FieldMarshal.cs
+++ /dev/null
@@ -1,79 +0,0 @@
-//
-// FieldMarshalTable.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	public sealed class FieldMarshalTable : IMetadataTable {
-
-		public const int RId = 0x0d;
-
-		RowCollection m_rows;
-
-		public FieldMarshalRow this [int index] {
-			get { return m_rows [index] as FieldMarshalRow; }
-			set { m_rows [index] = value; }
-		}
-
-		public RowCollection Rows {
-			get { return m_rows; }
-			set { m_rows = value; }
-		}
-
-		public int Id {
-			get { return RId; }
-		}
-
-		internal FieldMarshalTable ()
-		{
-		}
-
-		public void Accept (IMetadataTableVisitor visitor)
-		{
-			visitor.VisitFieldMarshalTable (this);
-			this.Rows.Accept (visitor.GetRowVisitor ());
-		}
-	}
-
-	public sealed class FieldMarshalRow : IMetadataRow {
-
-		public MetadataToken Parent;
-		public uint NativeType;
-
-		internal FieldMarshalRow ()
-		{
-		}
-
-		public void Accept (IMetadataRowVisitor visitor)
-		{
-			visitor.VisitFieldMarshalRow (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/FieldPtr.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/FieldPtr.cs
deleted file mode 100644
index b0d0c8a..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/FieldPtr.cs
+++ /dev/null
@@ -1,78 +0,0 @@
-//
-// FieldPtrTable.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Thu Feb 22 14:39:38 CET 2007
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	public sealed class FieldPtrTable : IMetadataTable {
-
-		public const int RId = 0x03;
-
-		RowCollection m_rows;
-
-		public FieldPtrRow this [int index] {
-			get { return m_rows [index] as FieldPtrRow; }
-			set { m_rows [index] = value; }
-		}
-
-		public RowCollection Rows {
-			get { return m_rows; }
-			set { m_rows = value; }
-		}
-
-		public int Id {
-			get { return RId; }
-		}
-
-		internal FieldPtrTable ()
-		{
-		}
-
-		public void Accept (IMetadataTableVisitor visitor)
-		{
-			visitor.VisitFieldPtrTable (this);
-			this.Rows.Accept (visitor.GetRowVisitor ());
-		}
-	}
-
-	public sealed class FieldPtrRow : IMetadataRow {
-
-		public uint Field;
-
-		internal FieldPtrRow ()
-		{
-		}
-
-		public void Accept (IMetadataRowVisitor visitor)
-		{
-			visitor.VisitFieldPtrRow (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/FieldRVA.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/FieldRVA.cs
deleted file mode 100644
index e4e9fce..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/FieldRVA.cs
+++ /dev/null
@@ -1,81 +0,0 @@
-//
-// FieldRVATable.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	using Mono.Cecil.Binary;
-
-	public sealed class FieldRVATable : IMetadataTable {
-
-		public const int RId = 0x1d;
-
-		RowCollection m_rows;
-
-		public FieldRVARow this [int index] {
-			get { return m_rows [index] as FieldRVARow; }
-			set { m_rows [index] = value; }
-		}
-
-		public RowCollection Rows {
-			get { return m_rows; }
-			set { m_rows = value; }
-		}
-
-		public int Id {
-			get { return RId; }
-		}
-
-		internal FieldRVATable ()
-		{
-		}
-
-		public void Accept (IMetadataTableVisitor visitor)
-		{
-			visitor.VisitFieldRVATable (this);
-			this.Rows.Accept (visitor.GetRowVisitor ());
-		}
-	}
-
-	public sealed class FieldRVARow : IMetadataRow {
-
-		public RVA RVA;
-		public uint Field;
-
-		internal FieldRVARow ()
-		{
-		}
-
-		public void Accept (IMetadataRowVisitor visitor)
-		{
-			visitor.VisitFieldRVARow (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/File.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/File.cs
deleted file mode 100644
index de10919..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/File.cs
+++ /dev/null
@@ -1,82 +0,0 @@
-//
-// FileTable.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	using Mono.Cecil;
-
-	public sealed class FileTable : IMetadataTable {
-
-		public const int RId = 0x26;
-
-		RowCollection m_rows;
-
-		public FileRow this [int index] {
-			get { return m_rows [index] as FileRow; }
-			set { m_rows [index] = value; }
-		}
-
-		public RowCollection Rows {
-			get { return m_rows; }
-			set { m_rows = value; }
-		}
-
-		public int Id {
-			get { return RId; }
-		}
-
-		internal FileTable ()
-		{
-		}
-
-		public void Accept (IMetadataTableVisitor visitor)
-		{
-			visitor.VisitFileTable (this);
-			this.Rows.Accept (visitor.GetRowVisitor ());
-		}
-	}
-
-	public sealed class FileRow : IMetadataRow {
-
-		public FileAttributes Flags;
-		public uint Name;
-		public uint HashValue;
-
-		internal FileRow ()
-		{
-		}
-
-		public void Accept (IMetadataRowVisitor visitor)
-		{
-			visitor.VisitFileRow (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/GenericParam.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/GenericParam.cs
deleted file mode 100644
index 219ca60..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/GenericParam.cs
+++ /dev/null
@@ -1,83 +0,0 @@
-//
-// GenericParamTable.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	using Mono.Cecil;
-
-	public sealed class GenericParamTable : IMetadataTable {
-
-		public const int RId = 0x2a;
-
-		RowCollection m_rows;
-
-		public GenericParamRow this [int index] {
-			get { return m_rows [index] as GenericParamRow; }
-			set { m_rows [index] = value; }
-		}
-
-		public RowCollection Rows {
-			get { return m_rows; }
-			set { m_rows = value; }
-		}
-
-		public int Id {
-			get { return RId; }
-		}
-
-		internal GenericParamTable ()
-		{
-		}
-
-		public void Accept (IMetadataTableVisitor visitor)
-		{
-			visitor.VisitGenericParamTable (this);
-			this.Rows.Accept (visitor.GetRowVisitor ());
-		}
-	}
-
-	public sealed class GenericParamRow : IMetadataRow {
-
-		public ushort Number;
-		public GenericParameterAttributes Flags;
-		public MetadataToken Owner;
-		public uint Name;
-
-		internal GenericParamRow ()
-		{
-		}
-
-		public void Accept (IMetadataRowVisitor visitor)
-		{
-			visitor.VisitGenericParamRow (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/GenericParamConstraint.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/GenericParamConstraint.cs
deleted file mode 100644
index f6aa328..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/GenericParamConstraint.cs
+++ /dev/null
@@ -1,79 +0,0 @@
-//
-// GenericParamConstraintTable.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	public sealed class GenericParamConstraintTable : IMetadataTable {
-
-		public const int RId = 0x2c;
-
-		RowCollection m_rows;
-
-		public GenericParamConstraintRow this [int index] {
-			get { return m_rows [index] as GenericParamConstraintRow; }
-			set { m_rows [index] = value; }
-		}
-
-		public RowCollection Rows {
-			get { return m_rows; }
-			set { m_rows = value; }
-		}
-
-		public int Id {
-			get { return RId; }
-		}
-
-		internal GenericParamConstraintTable ()
-		{
-		}
-
-		public void Accept (IMetadataTableVisitor visitor)
-		{
-			visitor.VisitGenericParamConstraintTable (this);
-			this.Rows.Accept (visitor.GetRowVisitor ());
-		}
-	}
-
-	public sealed class GenericParamConstraintRow : IMetadataRow {
-
-		public uint Owner;
-		public MetadataToken Constraint;
-
-		internal GenericParamConstraintRow ()
-		{
-		}
-
-		public void Accept (IMetadataRowVisitor visitor)
-		{
-			visitor.VisitGenericParamConstraintRow (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/GuidHeap.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/GuidHeap.cs
index ade00ec..19acdab 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/GuidHeap.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/GuidHeap.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,55 +26,34 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil.Metadata {
+using System;
 
-	using System;
-	using System.Collections;
+using Mono.Cecil.PE;
 
-	public class GuidHeap : MetadataHeap {
+namespace Mono.Cecil.Metadata {
 
-		readonly IDictionary m_guids;
+	sealed class GuidHeap : Heap {
 
-		public IDictionary Guids {
-			get { return m_guids; }
+		public GuidHeap (Section section, uint start, uint size)
+			: base (section, start, size)
+		{
 		}
 
-		public GuidHeap (MetadataStream stream) : base (stream, MetadataStream.GUID)
+		public Guid Read (uint index)
 		{
-			int capacity = (int)(stream.Header.Size / 16);
-			m_guids = new Hashtable (capacity);
-		}
+			if (index == 0)
+				return new Guid ();
 
-		public Guid this [uint index] {
-			get {
-				if (index == 0)
-					return new Guid (new byte [16]);
+			const int guid_size = 16;
 
-				int idx = (int) index - 1;
+			var buffer = new byte [guid_size];
 
-				if (m_guids.Contains (idx))
-					return (Guid) m_guids [idx];
+			index--;
 
-				if (idx + 16 > this.Data.Length)
-					throw new IndexOutOfRangeException ();
+			Buffer.BlockCopy (Section.Data, (int) (Offset + index), buffer, 0, guid_size);
 
-				byte [] buffer = null;
-				if (this.Data.Length == 16) {
-					buffer = this.Data;
-				} else {
-					buffer = new byte [16];
-					Buffer.BlockCopy (this.Data, idx, buffer, 0, 16);
-				}
-				Guid res = new Guid (buffer);
-				m_guids [idx] = res;
-				return res;
-			}
-			set { m_guids [index] = value; }
-		}
+			return new Guid (buffer);
 
-		public override void Accept (IMetadataVisitor visitor)
-		{
-			visitor.VisitGuidHeap (this);
 		}
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Heap.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Heap.cs
new file mode 100644
index 0000000..e7ff720
--- /dev/null
+++ b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Heap.cs
@@ -0,0 +1,48 @@
+//
+// Heap.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using Mono.Cecil.PE;
+
+namespace Mono.Cecil.Metadata {
+
+	abstract class Heap {
+
+		public int IndexSize;
+
+		public readonly Section Section;
+		public readonly uint Offset;
+		public readonly uint Size;
+
+		protected Heap (Section section, uint offset, uint size)
+		{
+			this.Section = section;
+			this.Offset = offset;
+			this.Size = size;
+		}
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/IMetadataRow.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/IMetadataRow.cs
deleted file mode 100644
index 012d5bf..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/IMetadataRow.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-//
-// IMetadataRow.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	public interface IMetadataRow : IMetadataRowVisitable {
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/IMetadataTable.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/IMetadataTable.cs
deleted file mode 100644
index 2fdf849..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/IMetadataTable.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-//
-// IMetadataTable.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	public interface IMetadataTable : IMetadataTableVisitable {
-		int Id { get; }
-		RowCollection Rows { get; set; }
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/IMetadataVisitable.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/IMetadataVisitable.cs
deleted file mode 100644
index 09ce018..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/IMetadataVisitable.cs
+++ /dev/null
@@ -1,42 +0,0 @@
-//
-// IMetadataVisitable.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	public interface IMetadataVisitable {
-		void Accept (IMetadataVisitor visitor);
-	}
-
-	public interface IMetadataTableVisitable {
-		void Accept (IMetadataTableVisitor visitor);
-	}
-
-	public interface IMetadataRowVisitable {
-		void Accept (IMetadataRowVisitor visitor);
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/IMetadataVisitor.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/IMetadataVisitor.cs
deleted file mode 100644
index 3bbea3a..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/IMetadataVisitor.cs
+++ /dev/null
@@ -1,149 +0,0 @@
-//
-// IMetadataVisitor.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Thu Feb 22 14:39:38 CET 2007
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	public interface IMetadataVisitor {
-		void VisitMetadataRoot (MetadataRoot root);
-		void VisitMetadataRootHeader (MetadataRoot.MetadataRootHeader header);
-		void VisitMetadataStreamCollection (MetadataStreamCollection streams);
-		void VisitMetadataStream (MetadataStream stream);
-		void VisitMetadataStreamHeader (MetadataStream.MetadataStreamHeader header);
-		void VisitGuidHeap (GuidHeap heap);
-		void VisitStringsHeap (StringsHeap heap);
-		void VisitTablesHeap (TablesHeap heap);
-		void VisitBlobHeap (BlobHeap heap);
-		void VisitUserStringsHeap (UserStringsHeap heap);
-
-		void TerminateMetadataRoot (MetadataRoot root);
-	}
-
-	public interface IMetadataTableVisitor {
-		void VisitTableCollection (TableCollection coll);
-
-		void VisitAssemblyTable (AssemblyTable table);
-		void VisitAssemblyOSTable (AssemblyOSTable table);
-		void VisitAssemblyProcessorTable (AssemblyProcessorTable table);
-		void VisitAssemblyRefTable (AssemblyRefTable table);
-		void VisitAssemblyRefOSTable (AssemblyRefOSTable table);
-		void VisitAssemblyRefProcessorTable (AssemblyRefProcessorTable table);
-		void VisitClassLayoutTable (ClassLayoutTable table);
-		void VisitConstantTable (ConstantTable table);
-		void VisitCustomAttributeTable (CustomAttributeTable table);
-		void VisitDeclSecurityTable (DeclSecurityTable table);
-		void VisitEventTable (EventTable table);
-		void VisitEventMapTable (EventMapTable table);
-		void VisitEventPtrTable (EventPtrTable table);
-		void VisitExportedTypeTable (ExportedTypeTable table);
-		void VisitFieldTable (FieldTable table);
-		void VisitFieldLayoutTable (FieldLayoutTable table);
-		void VisitFieldMarshalTable (FieldMarshalTable table);
-		void VisitFieldPtrTable (FieldPtrTable table);
-		void VisitFieldRVATable (FieldRVATable table);
-		void VisitFileTable (FileTable table);
-		void VisitGenericParamTable (GenericParamTable table);
-		void VisitGenericParamConstraintTable (GenericParamConstraintTable table);
-		void VisitImplMapTable (ImplMapTable table);
-		void VisitInterfaceImplTable (InterfaceImplTable table);
-		void VisitManifestResourceTable (ManifestResourceTable table);
-		void VisitMemberRefTable (MemberRefTable table);
-		void VisitMethodTable (MethodTable table);
-		void VisitMethodImplTable (MethodImplTable table);
-		void VisitMethodPtrTable (MethodPtrTable table);
-		void VisitMethodSemanticsTable (MethodSemanticsTable table);
-		void VisitMethodSpecTable (MethodSpecTable table);
-		void VisitModuleTable (ModuleTable table);
-		void VisitModuleRefTable (ModuleRefTable table);
-		void VisitNestedClassTable (NestedClassTable table);
-		void VisitParamTable (ParamTable table);
-		void VisitParamPtrTable (ParamPtrTable table);
-		void VisitPropertyTable (PropertyTable table);
-		void VisitPropertyMapTable (PropertyMapTable table);
-		void VisitPropertyPtrTable (PropertyPtrTable table);
-		void VisitStandAloneSigTable (StandAloneSigTable table);
-		void VisitTypeDefTable (TypeDefTable table);
-		void VisitTypeRefTable (TypeRefTable table);
-		void VisitTypeSpecTable (TypeSpecTable table);
-
-		void TerminateTableCollection (TableCollection coll);
-		IMetadataRowVisitor GetRowVisitor();
-}
-
-	public interface IMetadataRowVisitor {
-		void VisitRowCollection (RowCollection coll);
-
-		void VisitAssemblyRow (AssemblyRow row);
-		void VisitAssemblyOSRow (AssemblyOSRow row);
-		void VisitAssemblyProcessorRow (AssemblyProcessorRow row);
-		void VisitAssemblyRefRow (AssemblyRefRow row);
-		void VisitAssemblyRefOSRow (AssemblyRefOSRow row);
-		void VisitAssemblyRefProcessorRow (AssemblyRefProcessorRow row);
-		void VisitClassLayoutRow (ClassLayoutRow row);
-		void VisitConstantRow (ConstantRow row);
-		void VisitCustomAttributeRow (CustomAttributeRow row);
-		void VisitDeclSecurityRow (DeclSecurityRow row);
-		void VisitEventRow (EventRow row);
-		void VisitEventMapRow (EventMapRow row);
-		void VisitEventPtrRow (EventPtrRow row);
-		void VisitExportedTypeRow (ExportedTypeRow row);
-		void VisitFieldRow (FieldRow row);
-		void VisitFieldLayoutRow (FieldLayoutRow row);
-		void VisitFieldMarshalRow (FieldMarshalRow row);
-		void VisitFieldPtrRow (FieldPtrRow row);
-		void VisitFieldRVARow (FieldRVARow row);
-		void VisitFileRow (FileRow row);
-		void VisitGenericParamRow (GenericParamRow row);
-		void VisitGenericParamConstraintRow (GenericParamConstraintRow row);
-		void VisitImplMapRow (ImplMapRow row);
-		void VisitInterfaceImplRow (InterfaceImplRow row);
-		void VisitManifestResourceRow (ManifestResourceRow row);
-		void VisitMemberRefRow (MemberRefRow row);
-		void VisitMethodRow (MethodRow row);
-		void VisitMethodImplRow (MethodImplRow row);
-		void VisitMethodPtrRow (MethodPtrRow row);
-		void VisitMethodSemanticsRow (MethodSemanticsRow row);
-		void VisitMethodSpecRow (MethodSpecRow row);
-		void VisitModuleRow (ModuleRow row);
-		void VisitModuleRefRow (ModuleRefRow row);
-		void VisitNestedClassRow (NestedClassRow row);
-		void VisitParamRow (ParamRow row);
-		void VisitParamPtrRow (ParamPtrRow row);
-		void VisitPropertyRow (PropertyRow row);
-		void VisitPropertyMapRow (PropertyMapRow row);
-		void VisitPropertyPtrRow (PropertyPtrRow row);
-		void VisitStandAloneSigRow (StandAloneSigRow row);
-		void VisitTypeDefRow (TypeDefRow row);
-		void VisitTypeRefRow (TypeRefRow row);
-		void VisitTypeSpecRow (TypeSpecRow row);
-
-		void TerminateRowCollection (RowCollection coll);
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/ImplMap.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/ImplMap.cs
deleted file mode 100644
index 3548312..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/ImplMap.cs
+++ /dev/null
@@ -1,83 +0,0 @@
-//
-// ImplMapTable.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	using Mono.Cecil;
-
-	public sealed class ImplMapTable : IMetadataTable {
-
-		public const int RId = 0x1c;
-
-		RowCollection m_rows;
-
-		public ImplMapRow this [int index] {
-			get { return m_rows [index] as ImplMapRow; }
-			set { m_rows [index] = value; }
-		}
-
-		public RowCollection Rows {
-			get { return m_rows; }
-			set { m_rows = value; }
-		}
-
-		public int Id {
-			get { return RId; }
-		}
-
-		internal ImplMapTable ()
-		{
-		}
-
-		public void Accept (IMetadataTableVisitor visitor)
-		{
-			visitor.VisitImplMapTable (this);
-			this.Rows.Accept (visitor.GetRowVisitor ());
-		}
-	}
-
-	public sealed class ImplMapRow : IMetadataRow {
-
-		public PInvokeAttributes MappingFlags;
-		public MetadataToken MemberForwarded;
-		public uint ImportName;
-		public uint ImportScope;
-
-		internal ImplMapRow ()
-		{
-		}
-
-		public void Accept (IMetadataRowVisitor visitor)
-		{
-			visitor.VisitImplMapRow (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/InterfaceImpl.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/InterfaceImpl.cs
deleted file mode 100644
index fc527c5..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/InterfaceImpl.cs
+++ /dev/null
@@ -1,79 +0,0 @@
-//
-// InterfaceImplTable.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	public sealed class InterfaceImplTable : IMetadataTable {
-
-		public const int RId = 0x09;
-
-		RowCollection m_rows;
-
-		public InterfaceImplRow this [int index] {
-			get { return m_rows [index] as InterfaceImplRow; }
-			set { m_rows [index] = value; }
-		}
-
-		public RowCollection Rows {
-			get { return m_rows; }
-			set { m_rows = value; }
-		}
-
-		public int Id {
-			get { return RId; }
-		}
-
-		internal InterfaceImplTable ()
-		{
-		}
-
-		public void Accept (IMetadataTableVisitor visitor)
-		{
-			visitor.VisitInterfaceImplTable (this);
-			this.Rows.Accept (visitor.GetRowVisitor ());
-		}
-	}
-
-	public sealed class InterfaceImplRow : IMetadataRow {
-
-		public uint Class;
-		public MetadataToken Interface;
-
-		internal InterfaceImplRow ()
-		{
-		}
-
-		public void Accept (IMetadataRowVisitor visitor)
-		{
-			visitor.VisitInterfaceImplRow (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/ManifestResource.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/ManifestResource.cs
deleted file mode 100644
index 07caf51..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/ManifestResource.cs
+++ /dev/null
@@ -1,83 +0,0 @@
-//
-// ManifestResourceTable.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	using Mono.Cecil;
-
-	public sealed class ManifestResourceTable : IMetadataTable {
-
-		public const int RId = 0x28;
-
-		RowCollection m_rows;
-
-		public ManifestResourceRow this [int index] {
-			get { return m_rows [index] as ManifestResourceRow; }
-			set { m_rows [index] = value; }
-		}
-
-		public RowCollection Rows {
-			get { return m_rows; }
-			set { m_rows = value; }
-		}
-
-		public int Id {
-			get { return RId; }
-		}
-
-		internal ManifestResourceTable ()
-		{
-		}
-
-		public void Accept (IMetadataTableVisitor visitor)
-		{
-			visitor.VisitManifestResourceTable (this);
-			this.Rows.Accept (visitor.GetRowVisitor ());
-		}
-	}
-
-	public sealed class ManifestResourceRow : IMetadataRow {
-
-		public uint Offset;
-		public ManifestResourceAttributes Flags;
-		public uint Name;
-		public MetadataToken Implementation;
-
-		internal ManifestResourceRow ()
-		{
-		}
-
-		public void Accept (IMetadataRowVisitor visitor)
-		{
-			visitor.VisitManifestResourceRow (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MemberRef.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MemberRef.cs
deleted file mode 100644
index 7a51aaa..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MemberRef.cs
+++ /dev/null
@@ -1,80 +0,0 @@
-//
-// MemberRefTable.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	public sealed class MemberRefTable : IMetadataTable {
-
-		public const int RId = 0x0a;
-
-		RowCollection m_rows;
-
-		public MemberRefRow this [int index] {
-			get { return m_rows [index] as MemberRefRow; }
-			set { m_rows [index] = value; }
-		}
-
-		public RowCollection Rows {
-			get { return m_rows; }
-			set { m_rows = value; }
-		}
-
-		public int Id {
-			get { return RId; }
-		}
-
-		internal MemberRefTable ()
-		{
-		}
-
-		public void Accept (IMetadataTableVisitor visitor)
-		{
-			visitor.VisitMemberRefTable (this);
-			this.Rows.Accept (visitor.GetRowVisitor ());
-		}
-	}
-
-	public sealed class MemberRefRow : IMetadataRow {
-
-		public MetadataToken Class;
-		public uint Name;
-		public uint Signature;
-
-		internal MemberRefRow ()
-		{
-		}
-
-		public void Accept (IMetadataRowVisitor visitor)
-		{
-			visitor.VisitMemberRefRow (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataFormatException.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataFormatException.cs
deleted file mode 100644
index dd91790..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataFormatException.cs
+++ /dev/null
@@ -1,55 +0,0 @@
-//
-// MetadataFormatException.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	using System;
-
-	using Mono.Cecil.Binary;
-
-	public class MetadataFormatException : ImageFormatException {
-
-		internal MetadataFormatException () : base ()
-		{
-		}
-
-		internal MetadataFormatException (string message) : base (message)
-		{
-		}
-
-		internal MetadataFormatException (string message, params string [] parameters) :
-			base (string.Format (message, parameters))
-		{
-		}
-
-		internal MetadataFormatException (string message, Exception inner) :
-			base (message, inner)
-		{
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataHeap.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataHeap.cs
deleted file mode 100644
index 7ce2d28..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataHeap.cs
+++ /dev/null
@@ -1,92 +0,0 @@
-//
-// MetadataHeap.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	using System;
-
-	using Mono.Cecil;
-
-	public abstract class MetadataHeap : IMetadataVisitable  {
-
-		MetadataStream m_stream;
-		string m_name;
-		byte [] m_data;
-
-		public string Name {
-			get { return m_name; }
-		}
-
-		public byte [] Data {
-			get { return m_data; }
-			set { m_data = value; }
-		}
-
-		public int IndexSize;
-
-		internal MetadataHeap (MetadataStream stream, string name)
-		{
-			m_name = name;
-			m_stream = stream;
-		}
-
-		public static MetadataHeap HeapFactory (MetadataStream stream)
-		{
-			switch (stream.Header.Name) {
-			case MetadataStream.Tables :
-			case MetadataStream.IncrementalTables :
-				return new TablesHeap (stream);
-			case MetadataStream.GUID :
-				return new GuidHeap (stream);
-			case MetadataStream.Strings :
-				return new StringsHeap (stream);
-			case MetadataStream.UserStrings :
-				return new UserStringsHeap (stream);
-			case MetadataStream.Blob :
-				return new BlobHeap (stream);
-			default :
-				return null;
-			}
-		}
-
-		public MetadataStream GetStream ()
-		{
-			return m_stream;
-		}
-
-		protected virtual byte [] ReadBytesFromStream (uint pos)
-		{
-			int start, length = Utilities.ReadCompressedInteger (m_data, (int) pos, out start);
-			byte [] buffer = new byte [length];
-			Buffer.BlockCopy (m_data, start, buffer, 0, length);
-			return buffer;
-		}
-
-		public abstract void Accept (IMetadataVisitor visitor);
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataRoot.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataRoot.cs
deleted file mode 100644
index 9305149..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataRoot.cs
+++ /dev/null
@@ -1,99 +0,0 @@
-//
-// MetadataRoot.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	using Mono.Cecil.Binary;
-
-	public sealed class MetadataRoot : IMetadataVisitable {
-
-		MetadataRootHeader m_header;
-		Image m_image;
-
-		MetadataStreamCollection m_streams;
-
-		public MetadataRootHeader Header {
-			get { return m_header; }
-			set { m_header = value; }
-		}
-
-		public MetadataStreamCollection Streams {
-			get { return m_streams; }
-			set { m_streams = value; }
-		}
-
-		internal MetadataRoot (Image img)
-		{
-			m_image = img;
-		}
-
-		public Image GetImage ()
-		{
-			return m_image;
-		}
-
-		public void Accept (IMetadataVisitor visitor)
-		{
-			visitor.VisitMetadataRoot (this);
-
-			m_header.Accept (visitor);
-			m_streams.Accept (visitor);
-
-			visitor.TerminateMetadataRoot (this);
-		}
-
-		public sealed class MetadataRootHeader : IHeader, IMetadataVisitable {
-
-			public const uint StandardSignature = 0x424a5342;
-
-			public uint Signature;
-			public ushort MinorVersion;
-			public ushort MajorVersion;
-			public uint Reserved;
-			public string Version;
-			public ushort Flags;
-			public ushort Streams;
-
-			internal MetadataRootHeader ()
-			{
-			}
-
-			public void SetDefaultValues ()
-			{
-				Signature = StandardSignature;
-				Reserved = 0;
-				Flags = 0;
-			}
-
-			public void Accept (IMetadataVisitor visitor)
-			{
-				visitor.VisitMetadataRootHeader (this);
-			}
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataStream.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataStream.cs
deleted file mode 100644
index 96ba0b4..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataStream.cs
+++ /dev/null
@@ -1,90 +0,0 @@
-//
-// MetadataStream.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	public class MetadataStream : IMetadataVisitable {
-
-		public const string Strings = "#Strings";
-		public const string Tables = "#~";
-		public const string IncrementalTables = "#-";
-		public const string Blob = "#Blob";
-		public const string GUID = "#GUID";
-		public const string UserStrings = "#US";
-
-		MetadataStreamHeader m_header;
-		MetadataHeap m_heap;
-
-		public MetadataStreamHeader Header {
-			get { return m_header; }
-			set { m_header = value; }
-		}
-
-		public MetadataHeap Heap {
-			get { return m_heap; }
-			set { m_heap = value; }
-		}
-
-		internal MetadataStream ()
-		{
-			m_header = new MetadataStreamHeader (this);
-		}
-
-		public void Accept (IMetadataVisitor visitor)
-		{
-			visitor.VisitMetadataStream (this);
-
-			m_header.Accept (visitor);
-			if (m_heap != null)
-				m_heap.Accept (visitor);
-		}
-
-		public class MetadataStreamHeader : IMetadataVisitable {
-
-			public uint Offset;
-			public uint Size;
-			public string Name;
-
-			private MetadataStream m_stream;
-
-			public MetadataStream Stream {
-				get { return m_stream; }
-			}
-
-			internal MetadataStreamHeader (MetadataStream stream)
-			{
-				m_stream = stream;
-			}
-
-			public void Accept (IMetadataVisitor visitor)
-			{
-				visitor.VisitMetadataStreamHeader (this);
-			}
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataStreamCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataStreamCollection.cs
deleted file mode 100644
index b602f17..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataStreamCollection.cs
+++ /dev/null
@@ -1,145 +0,0 @@
-//
-// MetadataStreamCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	using System;
-	using System.Collections;
-
-	public class MetadataStreamCollection : ICollection, IMetadataVisitable {
-
-		IList m_items;
-
-		BlobHeap m_blobHeap;
-		GuidHeap m_guidHeap;
-		StringsHeap m_stringsHeap;
-		UserStringsHeap m_usHeap;
-		TablesHeap m_tablesHeap;
-
-		public MetadataStream this [int index] {
-			get { return m_items [index] as MetadataStream; }
-			set { m_items [index] = value; }
-		}
-
-		public int Count {
-			get { return m_items.Count; }
-		}
-
-		public bool IsSynchronized {
-			get { return false; }
-		}
-
-		public object SyncRoot {
-			get { return this; }
-		}
-
-		public BlobHeap BlobHeap {
-			get {
-				if (m_blobHeap == null)
-					m_blobHeap = GetHeap (MetadataStream.Blob) as BlobHeap;
-				return m_blobHeap;
-			}
-		}
-
-		public GuidHeap GuidHeap {
-			get {
-				if (m_guidHeap == null)
-					m_guidHeap = GetHeap (MetadataStream.GUID) as GuidHeap;
-				return m_guidHeap;
-			}
-		}
-
-		public StringsHeap StringsHeap {
-			get {
-				if (m_stringsHeap == null)
-					m_stringsHeap = GetHeap (MetadataStream.Strings) as StringsHeap;
-				return m_stringsHeap;
-			}
-		}
-
-		public TablesHeap TablesHeap {
-			get {
-				if (m_tablesHeap == null)
-					m_tablesHeap = GetHeap (MetadataStream.Tables) as TablesHeap;
-				return m_tablesHeap;
-			}
-		}
-
-		public UserStringsHeap UserStringsHeap {
-			get {
-				if (m_usHeap == null)
-					m_usHeap = GetHeap (MetadataStream.UserStrings) as UserStringsHeap;
-				return m_usHeap;
-			}
-		}
-
-		public MetadataStreamCollection ()
-		{
-			m_items = new ArrayList (5);
-		}
-
-		private MetadataHeap GetHeap (string name)
-		{
-			for (int i = 0; i < m_items.Count; i++) {
-				MetadataStream stream = m_items [i] as MetadataStream;
-				if (stream.Heap.Name == name)
-					return stream.Heap;
-			}
-
-			return null;
-		}
-
-		internal void Add (MetadataStream value)
-		{
-			m_items.Add (value);
-		}
-
-		internal void Remove (MetadataStream value)
-		{
-			m_items.Remove (value);
-		}
-
-		public void CopyTo (Array ary, int index)
-		{
-			m_items.CopyTo (ary, index);
-		}
-
-		public IEnumerator GetEnumerator ()
-		{
-			return m_items.GetEnumerator ();
-		}
-
-		public void Accept (IMetadataVisitor visitor)
-		{
-			visitor.VisitMetadataStreamCollection (this);
-
-			for (int i = 0; i < m_items.Count; i++)
-				this [i].Accept (visitor);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataToken.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataToken.cs
index a771bad..8c1338e 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataToken.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataToken.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,77 +26,80 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil.Metadata {
+namespace Mono.Cecil {
 
 	public struct MetadataToken {
 
-		uint m_rid;
-		TokenType m_type;
+		readonly uint token;
 
-		public uint RID {
-			get { return m_rid; }
+		public uint RID	{
+			get { return token & 0x00ffffff; }
 		}
 
 		public TokenType TokenType {
-			get { return m_type; }
+			get { return (TokenType) (token & 0xff000000); }
 		}
 
-		public static readonly MetadataToken Zero = new MetadataToken ((TokenType) 0, 0);
+		public static readonly MetadataToken Zero = new MetadataToken ((uint) 0);
 
-		public MetadataToken (int token)
+		public MetadataToken (uint token)
 		{
-			m_type = (TokenType) (token & 0xff000000);
-			m_rid = (uint) token & 0x00ffffff;
+			this.token = token;
 		}
 
-		public MetadataToken (TokenType table, uint rid)
+		public MetadataToken (TokenType type)
+			: this (type, 0)
 		{
-			m_type = table;
-			m_rid = rid;
 		}
 
-		internal static MetadataToken FromMetadataRow (TokenType table, int rowIndex)
+		public MetadataToken (TokenType type, uint rid)
 		{
-			return new MetadataToken (table, (uint) rowIndex + 1);
+			token = (uint) type | rid;
 		}
 
-		public uint ToUInt ()
+		public MetadataToken (TokenType type, int rid)
 		{
-			return (uint) m_type | m_rid;
+			token = (uint) type | (uint) rid;
 		}
 
-		public override int GetHashCode ()
+		public int ToInt32 ()
 		{
-			return (int) ToUInt ();
+			return (int) token;
 		}
 
-		public override bool Equals (object other)
+		public uint ToUInt32 ()
 		{
-			if (other is MetadataToken)
-				return Equals ((MetadataToken) other);
+			return token;
+		}
 
-			return false;
+		public override int GetHashCode ()
+		{
+			return (int) token;
 		}
 
-		private bool Equals (MetadataToken other)
+		public override bool Equals (object obj)
 		{
-			return other.m_rid == m_rid && other.m_type == m_type;
+			if (obj is MetadataToken) {
+				var other = (MetadataToken) obj;
+				return other.token == token;
+			}
+
+			return false;
 		}
 
 		public static bool operator == (MetadataToken one, MetadataToken other)
 		{
-			return one.Equals (other);
+			return one.token == other.token;
 		}
 
 		public static bool operator != (MetadataToken one, MetadataToken other)
 		{
-			return !one.Equals (other);
+			return one.token != other.token;
 		}
 
 		public override string ToString ()
 		{
-			return string.Format ("{0} [0x{1}]",
-				m_type, m_rid.ToString ("x4"));
+			return string.Format ("[{0}:0x{1}]", TokenType, RID.ToString ("x4"));
 		}
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Method.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Method.cs
deleted file mode 100644
index 3d195bc..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Method.cs
+++ /dev/null
@@ -1,87 +0,0 @@
-//
-// MethodTable.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	using Mono.Cecil;
-
-	using Mono.Cecil.Binary;
-
-	public sealed class MethodTable : IMetadataTable {
-
-		public const int RId = 0x06;
-
-		RowCollection m_rows;
-
-		public MethodRow this [int index] {
-			get { return m_rows [index] as MethodRow; }
-			set { m_rows [index] = value; }
-		}
-
-		public RowCollection Rows {
-			get { return m_rows; }
-			set { m_rows = value; }
-		}
-
-		public int Id {
-			get { return RId; }
-		}
-
-		internal MethodTable ()
-		{
-		}
-
-		public void Accept (IMetadataTableVisitor visitor)
-		{
-			visitor.VisitMethodTable (this);
-			this.Rows.Accept (visitor.GetRowVisitor ());
-		}
-	}
-
-	public sealed class MethodRow : IMetadataRow {
-
-		public RVA RVA;
-		public MethodImplAttributes ImplFlags;
-		public MethodAttributes Flags;
-		public uint Name;
-		public uint Signature;
-		public uint ParamList;
-
-		internal MethodRow ()
-		{
-		}
-
-		public void Accept (IMetadataRowVisitor visitor)
-		{
-			visitor.VisitMethodRow (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MethodImpl.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MethodImpl.cs
deleted file mode 100644
index fa9a9d2..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MethodImpl.cs
+++ /dev/null
@@ -1,80 +0,0 @@
-//
-// MethodImplTable.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	public sealed class MethodImplTable : IMetadataTable {
-
-		public const int RId = 0x19;
-
-		RowCollection m_rows;
-
-		public MethodImplRow this [int index] {
-			get { return m_rows [index] as MethodImplRow; }
-			set { m_rows [index] = value; }
-		}
-
-		public RowCollection Rows {
-			get { return m_rows; }
-			set { m_rows = value; }
-		}
-
-		public int Id {
-			get { return RId; }
-		}
-
-		internal MethodImplTable ()
-		{
-		}
-
-		public void Accept (IMetadataTableVisitor visitor)
-		{
-			visitor.VisitMethodImplTable (this);
-			this.Rows.Accept (visitor.GetRowVisitor ());
-		}
-	}
-
-	public sealed class MethodImplRow : IMetadataRow {
-
-		public uint Class;
-		public MetadataToken MethodBody;
-		public MetadataToken MethodDeclaration;
-
-		internal MethodImplRow ()
-		{
-		}
-
-		public void Accept (IMetadataRowVisitor visitor)
-		{
-			visitor.VisitMethodImplRow (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MethodPtr.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MethodPtr.cs
deleted file mode 100644
index 7a81b88..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MethodPtr.cs
+++ /dev/null
@@ -1,78 +0,0 @@
-//
-// MethodPtrTable.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Thu Feb 22 14:39:38 CET 2007
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	public sealed class MethodPtrTable : IMetadataTable {
-
-		public const int RId = 0x05;
-
-		RowCollection m_rows;
-
-		public MethodPtrRow this [int index] {
-			get { return m_rows [index] as MethodPtrRow; }
-			set { m_rows [index] = value; }
-		}
-
-		public RowCollection Rows {
-			get { return m_rows; }
-			set { m_rows = value; }
-		}
-
-		public int Id {
-			get { return RId; }
-		}
-
-		internal MethodPtrTable ()
-		{
-		}
-
-		public void Accept (IMetadataTableVisitor visitor)
-		{
-			visitor.VisitMethodPtrTable (this);
-			this.Rows.Accept (visitor.GetRowVisitor ());
-		}
-	}
-
-	public sealed class MethodPtrRow : IMetadataRow {
-
-		public uint Method;
-
-		internal MethodPtrRow ()
-		{
-		}
-
-		public void Accept (IMetadataRowVisitor visitor)
-		{
-			visitor.VisitMethodPtrRow (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MethodSemantics.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MethodSemantics.cs
deleted file mode 100644
index c1dd175..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MethodSemantics.cs
+++ /dev/null
@@ -1,82 +0,0 @@
-//
-// MethodSemanticsTable.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	using Mono.Cecil;
-
-	public sealed class MethodSemanticsTable : IMetadataTable {
-
-		public const int RId = 0x18;
-
-		RowCollection m_rows;
-
-		public MethodSemanticsRow this [int index] {
-			get { return m_rows [index] as MethodSemanticsRow; }
-			set { m_rows [index] = value; }
-		}
-
-		public RowCollection Rows {
-			get { return m_rows; }
-			set { m_rows = value; }
-		}
-
-		public int Id {
-			get { return RId; }
-		}
-
-		internal MethodSemanticsTable ()
-		{
-		}
-
-		public void Accept (IMetadataTableVisitor visitor)
-		{
-			visitor.VisitMethodSemanticsTable (this);
-			this.Rows.Accept (visitor.GetRowVisitor ());
-		}
-	}
-
-	public sealed class MethodSemanticsRow : IMetadataRow {
-
-		public MethodSemanticsAttributes Semantics;
-		public uint Method;
-		public MetadataToken Association;
-
-		internal MethodSemanticsRow ()
-		{
-		}
-
-		public void Accept (IMetadataRowVisitor visitor)
-		{
-			visitor.VisitMethodSemanticsRow (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MethodSpec.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MethodSpec.cs
deleted file mode 100644
index dc5a61d..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MethodSpec.cs
+++ /dev/null
@@ -1,79 +0,0 @@
-//
-// MethodSpecTable.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	public sealed class MethodSpecTable : IMetadataTable {
-
-		public const int RId = 0x2b;
-
-		RowCollection m_rows;
-
-		public MethodSpecRow this [int index] {
-			get { return m_rows [index] as MethodSpecRow; }
-			set { m_rows [index] = value; }
-		}
-
-		public RowCollection Rows {
-			get { return m_rows; }
-			set { m_rows = value; }
-		}
-
-		public int Id {
-			get { return RId; }
-		}
-
-		internal MethodSpecTable ()
-		{
-		}
-
-		public void Accept (IMetadataTableVisitor visitor)
-		{
-			visitor.VisitMethodSpecTable (this);
-			this.Rows.Accept (visitor.GetRowVisitor ());
-		}
-	}
-
-	public sealed class MethodSpecRow : IMetadataRow {
-
-		public MetadataToken Method;
-		public uint Instantiation;
-
-		internal MethodSpecRow ()
-		{
-		}
-
-		public void Accept (IMetadataRowVisitor visitor)
-		{
-			visitor.VisitMethodSpecRow (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Module.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Module.cs
deleted file mode 100644
index be06b96..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Module.cs
+++ /dev/null
@@ -1,82 +0,0 @@
-//
-// ModuleTable.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	public sealed class ModuleTable : IMetadataTable {
-
-		public const int RId = 0x00;
-
-		RowCollection m_rows;
-
-		public ModuleRow this [int index] {
-			get { return m_rows [index] as ModuleRow; }
-			set { m_rows [index] = value; }
-		}
-
-		public RowCollection Rows {
-			get { return m_rows; }
-			set { m_rows = value; }
-		}
-
-		public int Id {
-			get { return RId; }
-		}
-
-		internal ModuleTable ()
-		{
-		}
-
-		public void Accept (IMetadataTableVisitor visitor)
-		{
-			visitor.VisitModuleTable (this);
-			this.Rows.Accept (visitor.GetRowVisitor ());
-		}
-	}
-
-	public sealed class ModuleRow : IMetadataRow {
-
-		public ushort Generation;
-		public uint Name;
-		public uint Mvid;
-		public uint EncId;
-		public uint EncBaseId;
-
-		internal ModuleRow ()
-		{
-		}
-
-		public void Accept (IMetadataRowVisitor visitor)
-		{
-			visitor.VisitModuleRow (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/ModuleRef.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/ModuleRef.cs
deleted file mode 100644
index fd88991..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/ModuleRef.cs
+++ /dev/null
@@ -1,78 +0,0 @@
-//
-// ModuleRefTable.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	public sealed class ModuleRefTable : IMetadataTable {
-
-		public const int RId = 0x1a;
-
-		RowCollection m_rows;
-
-		public ModuleRefRow this [int index] {
-			get { return m_rows [index] as ModuleRefRow; }
-			set { m_rows [index] = value; }
-		}
-
-		public RowCollection Rows {
-			get { return m_rows; }
-			set { m_rows = value; }
-		}
-
-		public int Id {
-			get { return RId; }
-		}
-
-		internal ModuleRefTable ()
-		{
-		}
-
-		public void Accept (IMetadataTableVisitor visitor)
-		{
-			visitor.VisitModuleRefTable (this);
-			this.Rows.Accept (visitor.GetRowVisitor ());
-		}
-	}
-
-	public sealed class ModuleRefRow : IMetadataRow {
-
-		public uint Name;
-
-		internal ModuleRefRow ()
-		{
-		}
-
-		public void Accept (IMetadataRowVisitor visitor)
-		{
-			visitor.VisitModuleRefRow (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/NestedClass.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/NestedClass.cs
deleted file mode 100644
index 9920a64..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/NestedClass.cs
+++ /dev/null
@@ -1,79 +0,0 @@
-//
-// NestedClassTable.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	public sealed class NestedClassTable : IMetadataTable {
-
-		public const int RId = 0x29;
-
-		RowCollection m_rows;
-
-		public NestedClassRow this [int index] {
-			get { return m_rows [index] as NestedClassRow; }
-			set { m_rows [index] = value; }
-		}
-
-		public RowCollection Rows {
-			get { return m_rows; }
-			set { m_rows = value; }
-		}
-
-		public int Id {
-			get { return RId; }
-		}
-
-		internal NestedClassTable ()
-		{
-		}
-
-		public void Accept (IMetadataTableVisitor visitor)
-		{
-			visitor.VisitNestedClassTable (this);
-			this.Rows.Accept (visitor.GetRowVisitor ());
-		}
-	}
-
-	public sealed class NestedClassRow : IMetadataRow {
-
-		public uint NestedClass;
-		public uint EnclosingClass;
-
-		internal NestedClassRow ()
-		{
-		}
-
-		public void Accept (IMetadataRowVisitor visitor)
-		{
-			visitor.VisitNestedClassRow (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Param.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Param.cs
deleted file mode 100644
index 5704ce6..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Param.cs
+++ /dev/null
@@ -1,82 +0,0 @@
-//
-// ParamTable.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	using Mono.Cecil;
-
-	public sealed class ParamTable : IMetadataTable {
-
-		public const int RId = 0x08;
-
-		RowCollection m_rows;
-
-		public ParamRow this [int index] {
-			get { return m_rows [index] as ParamRow; }
-			set { m_rows [index] = value; }
-		}
-
-		public RowCollection Rows {
-			get { return m_rows; }
-			set { m_rows = value; }
-		}
-
-		public int Id {
-			get { return RId; }
-		}
-
-		internal ParamTable ()
-		{
-		}
-
-		public void Accept (IMetadataTableVisitor visitor)
-		{
-			visitor.VisitParamTable (this);
-			this.Rows.Accept (visitor.GetRowVisitor ());
-		}
-	}
-
-	public sealed class ParamRow : IMetadataRow {
-
-		public ParameterAttributes Flags;
-		public ushort Sequence;
-		public uint Name;
-
-		internal ParamRow ()
-		{
-		}
-
-		public void Accept (IMetadataRowVisitor visitor)
-		{
-			visitor.VisitParamRow (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/ParamPtr.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/ParamPtr.cs
deleted file mode 100644
index ffba322..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/ParamPtr.cs
+++ /dev/null
@@ -1,78 +0,0 @@
-//
-// ParamPtrTable.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Thu Feb 22 14:39:38 CET 2007
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	public sealed class ParamPtrTable : IMetadataTable {
-
-		public const int RId = 0x07;
-
-		RowCollection m_rows;
-
-		public ParamPtrRow this [int index] {
-			get { return m_rows [index] as ParamPtrRow; }
-			set { m_rows [index] = value; }
-		}
-
-		public RowCollection Rows {
-			get { return m_rows; }
-			set { m_rows = value; }
-		}
-
-		public int Id {
-			get { return RId; }
-		}
-
-		internal ParamPtrTable ()
-		{
-		}
-
-		public void Accept (IMetadataTableVisitor visitor)
-		{
-			visitor.VisitParamPtrTable (this);
-			this.Rows.Accept (visitor.GetRowVisitor ());
-		}
-	}
-
-	public sealed class ParamPtrRow : IMetadataRow {
-
-		public uint Param;
-
-		internal ParamPtrRow ()
-		{
-		}
-
-		public void Accept (IMetadataRowVisitor visitor)
-		{
-			visitor.VisitParamPtrRow (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Property.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Property.cs
deleted file mode 100644
index 5f3bcc9..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Property.cs
+++ /dev/null
@@ -1,82 +0,0 @@
-//
-// PropertyTable.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	using Mono.Cecil;
-
-	public sealed class PropertyTable : IMetadataTable {
-
-		public const int RId = 0x17;
-
-		RowCollection m_rows;
-
-		public PropertyRow this [int index] {
-			get { return m_rows [index] as PropertyRow; }
-			set { m_rows [index] = value; }
-		}
-
-		public RowCollection Rows {
-			get { return m_rows; }
-			set { m_rows = value; }
-		}
-
-		public int Id {
-			get { return RId; }
-		}
-
-		internal PropertyTable ()
-		{
-		}
-
-		public void Accept (IMetadataTableVisitor visitor)
-		{
-			visitor.VisitPropertyTable (this);
-			this.Rows.Accept (visitor.GetRowVisitor ());
-		}
-	}
-
-	public sealed class PropertyRow : IMetadataRow {
-
-		public PropertyAttributes Flags;
-		public uint Name;
-		public uint Type;
-
-		internal PropertyRow ()
-		{
-		}
-
-		public void Accept (IMetadataRowVisitor visitor)
-		{
-			visitor.VisitPropertyRow (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/PropertyMap.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/PropertyMap.cs
deleted file mode 100644
index 5a3b13c..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/PropertyMap.cs
+++ /dev/null
@@ -1,79 +0,0 @@
-//
-// PropertyMapTable.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	public sealed class PropertyMapTable : IMetadataTable {
-
-		public const int RId = 0x15;
-
-		RowCollection m_rows;
-
-		public PropertyMapRow this [int index] {
-			get { return m_rows [index] as PropertyMapRow; }
-			set { m_rows [index] = value; }
-		}
-
-		public RowCollection Rows {
-			get { return m_rows; }
-			set { m_rows = value; }
-		}
-
-		public int Id {
-			get { return RId; }
-		}
-
-		internal PropertyMapTable ()
-		{
-		}
-
-		public void Accept (IMetadataTableVisitor visitor)
-		{
-			visitor.VisitPropertyMapTable (this);
-			this.Rows.Accept (visitor.GetRowVisitor ());
-		}
-	}
-
-	public sealed class PropertyMapRow : IMetadataRow {
-
-		public uint Parent;
-		public uint PropertyList;
-
-		internal PropertyMapRow ()
-		{
-		}
-
-		public void Accept (IMetadataRowVisitor visitor)
-		{
-			visitor.VisitPropertyMapRow (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/PropertyPtr.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/PropertyPtr.cs
deleted file mode 100644
index f767757..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/PropertyPtr.cs
+++ /dev/null
@@ -1,78 +0,0 @@
-//
-// PropertyPtrTable.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Thu Feb 22 14:39:38 CET 2007
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	public sealed class PropertyPtrTable : IMetadataTable {
-
-		public const int RId = 0x16;
-
-		RowCollection m_rows;
-
-		public PropertyPtrRow this [int index] {
-			get { return m_rows [index] as PropertyPtrRow; }
-			set { m_rows [index] = value; }
-		}
-
-		public RowCollection Rows {
-			get { return m_rows; }
-			set { m_rows = value; }
-		}
-
-		public int Id {
-			get { return RId; }
-		}
-
-		internal PropertyPtrTable ()
-		{
-		}
-
-		public void Accept (IMetadataTableVisitor visitor)
-		{
-			visitor.VisitPropertyPtrTable (this);
-			this.Rows.Accept (visitor.GetRowVisitor ());
-		}
-	}
-
-	public sealed class PropertyPtrRow : IMetadataRow {
-
-		public uint Property;
-
-		internal PropertyPtrRow ()
-		{
-		}
-
-		public void Accept (IMetadataRowVisitor visitor)
-		{
-			visitor.VisitPropertyPtrRow (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Row.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Row.cs
new file mode 100644
index 0000000..ab491a6
--- /dev/null
+++ b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Row.cs
@@ -0,0 +1,170 @@
+//
+// Row.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System.Collections.Generic;
+
+namespace Mono.Cecil.Metadata {
+
+	struct Row<T1, T2> {
+		internal T1 Col1;
+		internal T2 Col2;
+
+		public Row (T1 col1, T2 col2)
+		{
+			Col1 = col1;
+			Col2 = col2;
+		}
+	}
+
+	struct Row<T1, T2, T3> {
+		internal T1 Col1;
+		internal T2 Col2;
+		internal T3 Col3;
+
+		public Row (T1 col1, T2 col2, T3 col3)
+		{
+			Col1 = col1;
+			Col2 = col2;
+			Col3 = col3;
+		}
+	}
+
+	struct Row<T1, T2, T3, T4> {
+		internal T1 Col1;
+		internal T2 Col2;
+		internal T3 Col3;
+		internal T4 Col4;
+
+		public Row (T1 col1, T2 col2, T3 col3, T4 col4)
+		{
+			Col1 = col1;
+			Col2 = col2;
+			Col3 = col3;
+			Col4 = col4;
+		}
+	}
+
+	struct Row<T1, T2, T3, T4, T5> {
+		internal T1 Col1;
+		internal T2 Col2;
+		internal T3 Col3;
+		internal T4 Col4;
+		internal T5 Col5;
+
+		public Row (T1 col1, T2 col2, T3 col3, T4 col4, T5 col5)
+		{
+			Col1 = col1;
+			Col2 = col2;
+			Col3 = col3;
+			Col4 = col4;
+			Col5 = col5;
+		}
+	}
+
+	struct Row<T1, T2, T3, T4, T5, T6> {
+		internal T1 Col1;
+		internal T2 Col2;
+		internal T3 Col3;
+		internal T4 Col4;
+		internal T5 Col5;
+		internal T6 Col6;
+
+		public Row (T1 col1, T2 col2, T3 col3, T4 col4, T5 col5, T6 col6)
+		{
+			Col1 = col1;
+			Col2 = col2;
+			Col3 = col3;
+			Col4 = col4;
+			Col5 = col5;
+			Col6 = col6;
+		}
+	}
+
+	struct Row<T1, T2, T3, T4, T5, T6, T7, T8, T9> {
+		internal T1 Col1;
+		internal T2 Col2;
+		internal T3 Col3;
+		internal T4 Col4;
+		internal T5 Col5;
+		internal T6 Col6;
+		internal T7 Col7;
+		internal T8 Col8;
+		internal T9 Col9;
+
+		public Row (T1 col1, T2 col2, T3 col3, T4 col4, T5 col5, T6 col6, T7 col7, T8 col8, T9 col9)
+		{
+			Col1 = col1;
+			Col2 = col2;
+			Col3 = col3;
+			Col4 = col4;
+			Col5 = col5;
+			Col6 = col6;
+			Col7 = col7;
+			Col8 = col8;
+			Col9 = col9;
+		}
+	}
+
+	sealed class RowEqualityComparer : IEqualityComparer<Row<string, string>>, IEqualityComparer<Row<uint, uint>>, IEqualityComparer<Row<uint, uint, uint>> {
+
+		public bool Equals (Row<string, string> x, Row<string, string> y)
+		{
+			return x.Col1 == y.Col1
+				&& x.Col2 == y.Col2;
+		}
+
+		public int GetHashCode (Row<string, string> obj)
+		{
+			string x = obj.Col1, y = obj.Col2;
+			return (x != null ? x.GetHashCode () : 0) ^ (y != null ? y.GetHashCode () : 0);
+		}
+
+		public bool Equals (Row<uint, uint> x, Row<uint, uint> y)
+		{
+			return x.Col1 == y.Col1
+				&& x.Col2 == y.Col2;
+		}
+
+		public int GetHashCode (Row<uint, uint> obj)
+		{
+			return (int) (obj.Col1 ^ obj.Col2);
+		}
+
+		public bool Equals (Row<uint, uint, uint> x, Row<uint, uint, uint> y)
+		{
+			return x.Col1 == y.Col1
+				&& x.Col2 == y.Col2
+				&& x.Col3 == y.Col3;
+		}
+
+		public int GetHashCode (Row<uint, uint, uint> obj)
+		{
+			return (int) (obj.Col1 ^ obj.Col2 ^ obj.Col3);
+		}
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/RowCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/RowCollection.cs
deleted file mode 100644
index 4da8c4e..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/RowCollection.cs
+++ /dev/null
@@ -1,125 +0,0 @@
-//
-// RowCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	using System;
-	using System.Collections;
-
-	public class RowCollection : ICollection, IMetadataRowVisitable {
-
-		ArrayList m_items;
-
-		public IMetadataRow this [int index] {
-			get { return m_items [index] as IMetadataRow; }
-			set { m_items [index] = value; }
-		}
-
-		public int Count {
-			get { return m_items.Count; }
-		}
-
-		public bool IsSynchronized {
-			get { return false; }
-		}
-
-		public object SyncRoot {
-			get { return this; }
-		}
-
-		internal RowCollection (int size)
-		{
-			m_items = new ArrayList (size);
-		}
-
-		internal RowCollection ()
-		{
-			m_items = new ArrayList ();
-		}
-
-		internal void Add (IMetadataRow value)
-		{
-			m_items.Add (value);
-		}
-
-		public void Clear ()
-		{
-			m_items.Clear ();
-		}
-
-		public bool Contains (IMetadataRow value)
-		{
-			return m_items.Contains (value);
-		}
-
-		public int IndexOf (IMetadataRow value)
-		{
-			return m_items.IndexOf (value);
-		}
-
-		public void Insert (int index, IMetadataRow value)
-		{
-			m_items.Insert (index, value);
-		}
-
-		public void Remove (IMetadataRow value)
-		{
-			m_items.Remove (value);
-		}
-
-		public void RemoveAt (int index)
-		{
-			m_items.Remove (index);
-		}
-
-		public void CopyTo (Array ary, int index)
-		{
-			m_items.CopyTo (ary, index);
-		}
-
-		public void Sort (IComparer comp)
-		{
-			m_items.Sort (comp);
-		}
-
-		public IEnumerator GetEnumerator ()
-		{
-			return m_items.GetEnumerator ();
-		}
-
-		public void Accept (IMetadataRowVisitor visitor)
-		{
-			visitor.VisitRowCollection (this);
-
-			for (int i = 0; i < m_items.Count; i++)
-				this [i].Accept (visitor);
-
-			visitor.TerminateRowCollection (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/StandAloneSig.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/StandAloneSig.cs
deleted file mode 100644
index cb3c7f9..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/StandAloneSig.cs
+++ /dev/null
@@ -1,78 +0,0 @@
-//
-// StandAloneSigTable.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	public sealed class StandAloneSigTable : IMetadataTable {
-
-		public const int RId = 0x11;
-
-		RowCollection m_rows;
-
-		public StandAloneSigRow this [int index] {
-			get { return m_rows [index] as StandAloneSigRow; }
-			set { m_rows [index] = value; }
-		}
-
-		public RowCollection Rows {
-			get { return m_rows; }
-			set { m_rows = value; }
-		}
-
-		public int Id {
-			get { return RId; }
-		}
-
-		internal StandAloneSigTable ()
-		{
-		}
-
-		public void Accept (IMetadataTableVisitor visitor)
-		{
-			visitor.VisitStandAloneSigTable (this);
-			this.Rows.Accept (visitor.GetRowVisitor ());
-		}
-	}
-
-	public sealed class StandAloneSigRow : IMetadataRow {
-
-		public uint Signature;
-
-		internal StandAloneSigRow ()
-		{
-		}
-
-		public void Accept (IMetadataRowVisitor visitor)
-		{
-			visitor.VisitStandAloneSigRow (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/StringHeap.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/StringHeap.cs
new file mode 100644
index 0000000..85a2892
--- /dev/null
+++ b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/StringHeap.cs
@@ -0,0 +1,81 @@
+//
+// StringHeap.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+using Mono.Cecil.PE;
+
+namespace Mono.Cecil.Metadata {
+
+	class StringHeap : Heap {
+
+		readonly Dictionary<uint, string> strings = new Dictionary<uint, string> ();
+
+		public StringHeap (Section section, uint start, uint size)
+			: base (section, start, size)
+		{
+		}
+
+		public string Read (uint index)
+		{
+			if (index == 0)
+				return string.Empty;
+
+			string @string;
+			if (strings.TryGetValue (index, out @string))
+				return @string;
+
+			if (index > Size - 1)
+				return string.Empty;
+
+			@string = ReadStringAt (index);
+			if (@string.Length != 0)
+				strings.Add (index, @string);
+
+			return @string;
+		}
+
+		protected virtual string ReadStringAt (uint index)
+		{
+			int length = 0;
+			byte [] data = Section.Data;
+			int start = (int) (index + Offset);
+
+			for (int i = start; ; i++) {
+				if (data [i] == 0)
+					break;
+
+				length++;
+			}
+
+			return Encoding.UTF8.GetString (data, start, length);
+		}
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/StringsHeap.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/StringsHeap.cs
deleted file mode 100644
index 608faf8..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/StringsHeap.cs
+++ /dev/null
@@ -1,79 +0,0 @@
-//
-// StringsHeap.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	using System.Collections;
-	using System.Text;
-
-	public class StringsHeap : MetadataHeap {
-
-		IDictionary m_strings;
-
-		public string this [uint index] {
-			get {
-				string str = m_strings [index] as string;
-				if (str == null) {
-					str = ReadStringAt (index);
-					m_strings [index] = str;
-				}
-				return str;
-			}
-			set { m_strings [index] = value; }
-		}
-
-		internal StringsHeap (MetadataStream stream) : base (stream, MetadataStream.Strings)
-		{
-			m_strings = new Hashtable ();
-		}
-
-		string ReadStringAt (uint index)
-		{
-			byte [] data = this.Data;
-			int heap_length = data.Length;
-
-			if (index > heap_length - 1)
-				return string.Empty;
-
-			int length = 0;
-			for (int i = (int) index; i < heap_length; i++) {
-				if (data [i] == 0)
-					break;
-
-				length++;
-			}
-
-			return Encoding.UTF8.GetString (data, (int) index, length);
-		}
-
-		public override void Accept (IMetadataVisitor visitor)
-		{
-			visitor.VisitStringsHeap (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/TableCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/TableCollection.cs
deleted file mode 100644
index 817ccb0..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/TableCollection.cs
+++ /dev/null
@@ -1,115 +0,0 @@
-//
-// TableCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	using System;
-	using System.Collections;
-
-	public class TableCollection : ICollection, IMetadataTableVisitable	{
-
-		IMetadataTable [] m_tables = new IMetadataTable [TablesHeap.MaxTableCount];
-
-		TablesHeap m_heap;
-
-		public IMetadataTable this [int index] {
-			get { return m_tables [index]; }
-			set { m_tables [index] = value; }
-		}
-
-		public int Count {
-			get {
-				return GetList ().Count;
-			}
-		}
-
-		public bool IsSynchronized {
-			get { return false; }
-		}
-
-		public object SyncRoot {
-			get { return this; }
-		}
-
-		public TablesHeap Heap {
-			get { return m_heap; }
-		}
-
-		internal TableCollection (TablesHeap heap)
-		{
-			m_heap = heap;
-		}
-
-		internal void Add (IMetadataTable value)
-		{
-			m_tables [value.Id] = value;
-		}
-
-		public bool Contains (IMetadataTable value)
-		{
-			return m_tables [value.Id] != null;
-		}
-
-		internal void Remove (IMetadataTable value)
-		{
-			m_tables [value.Id] = null;
-		}
-
-		public void CopyTo (Array array, int index)
-		{
-			GetList ().CopyTo (array, index);
-		}
-
-		internal IList GetList ()
-		{
-			IList tables = new ArrayList ();
-			for (int i = 0; i < m_tables.Length; i++) {
-				IMetadataTable table = m_tables [i];
-				if (table != null)
-					tables.Add (table);
-			}
-
-			return tables;
-		}
-
-		public IEnumerator GetEnumerator ()
-		{
-			return GetList ().GetEnumerator ();
-		}
-
-		public void Accept (IMetadataTableVisitor visitor)
-		{
-			visitor.VisitTableCollection (this);
-
-			foreach (IMetadataTable table in GetList ())
-				table.Accept (visitor);
-
-			visitor.TerminateTableCollection (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/TableHeap.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/TableHeap.cs
new file mode 100644
index 0000000..cc441db
--- /dev/null
+++ b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/TableHeap.cs
@@ -0,0 +1,153 @@
+//
+// TableHeap.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using Mono.Cecil.PE;
+
+namespace Mono.Cecil.Metadata {
+
+	enum Table : byte {
+		Module = 0x00,
+		TypeRef = 0x01,
+		TypeDef = 0x02,
+		FieldPtr = 0x03,
+		Field = 0x04,
+		MethodPtr = 0x05,
+		Method = 0x06,
+		ParamPtr = 0x07,
+		Param = 0x08,
+		InterfaceImpl = 0x09,
+		MemberRef = 0x0a,
+		Constant = 0x0b,
+		CustomAttribute = 0x0c,
+		FieldMarshal = 0x0d,
+		DeclSecurity = 0x0e,
+		ClassLayout = 0x0f,
+		FieldLayout = 0x10,
+		StandAloneSig = 0x11,
+		EventMap = 0x12,
+		EventPtr = 0x13,
+		Event = 0x14,
+		PropertyMap = 0x15,
+		PropertyPtr = 0x16,
+		Property = 0x17,
+		MethodSemantics = 0x18,
+		MethodImpl = 0x19,
+		ModuleRef = 0x1a,
+		TypeSpec = 0x1b,
+		ImplMap = 0x1c,
+		FieldRVA = 0x1d,
+		Assembly = 0x20,
+		AssemblyProcessor = 0x21,
+		AssemblyOS = 0x22,
+		AssemblyRef = 0x23,
+		AssemblyRefProcessor = 0x24,
+		AssemblyRefOS = 0x25,
+		File = 0x26,
+		ExportedType = 0x27,
+		ManifestResource = 0x28,
+		NestedClass = 0x29,
+		GenericParam = 0x2a,
+		MethodSpec = 0x2b,
+		GenericParamConstraint = 0x2c,
+	}
+
+	struct TableInformation {
+		public uint Offset;
+		public uint Length;
+		public uint RowSize;
+	}
+
+	sealed class TableHeap : Heap {
+
+		public long Valid;
+		public long Sorted;
+
+		public static readonly Table [] TableIdentifiers = new [] {
+			Table.Module,
+			Table.TypeRef,
+			Table.TypeDef,
+			Table.FieldPtr,
+			Table.Field,
+			Table.MethodPtr,
+			Table.Method,
+			Table.ParamPtr,
+			Table.Param,
+			Table.InterfaceImpl,
+			Table.MemberRef,
+			Table.Constant,
+			Table.CustomAttribute,
+			Table.FieldMarshal,
+			Table.DeclSecurity,
+			Table.ClassLayout,
+			Table.FieldLayout,
+			Table.StandAloneSig,
+			Table.EventMap,
+			Table.EventPtr,
+			Table.Event,
+			Table.PropertyMap,
+			Table.PropertyPtr,
+			Table.Property,
+			Table.MethodSemantics,
+			Table.MethodImpl,
+			Table.ModuleRef,
+			Table.TypeSpec,
+			Table.ImplMap,
+			Table.FieldRVA,
+			Table.Assembly,
+			Table.AssemblyProcessor,
+			Table.AssemblyOS,
+			Table.AssemblyRef,
+			Table.AssemblyRefProcessor,
+			Table.AssemblyRefOS,
+			Table.File,
+			Table.ExportedType,
+			Table.ManifestResource,
+			Table.NestedClass,
+			Table.GenericParam,
+			Table.MethodSpec,
+			Table.GenericParamConstraint,
+		};
+
+		public readonly TableInformation [] Tables = new TableInformation [45];
+
+		public TableInformation this [Table table] {
+			get { return Tables [(int) table]; }
+		}
+
+		public TableHeap (Section section, uint start, uint size)
+			: base (section, start, size)
+		{
+		}
+
+		public bool HasTable (Table table)
+		{
+			return (Valid & (1L << (int) table)) != 0;
+		}
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/TablesHeap.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/TablesHeap.cs
deleted file mode 100644
index 583ac7e..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/TablesHeap.cs
+++ /dev/null
@@ -1,73 +0,0 @@
-//
-// TablesHeap.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	using System;
-	using System.Collections;
-
-	public class TablesHeap : MetadataHeap {
-
-		public uint Reserved;
-		public byte MajorVersion;
-		public byte MinorVersion;
-		public byte HeapSizes;
-		public byte Reserved2;
-		public long Valid;
-		public long Sorted;
-
-		TableCollection m_tables;
-
-		public const int MaxTableCount = 45;
-
-		public TableCollection Tables {
-			get { return m_tables; }
-			set { m_tables = value; }
-		}
-
-		public IMetadataTable this [int id]
-		{
-			get { return m_tables [id]; }
-			set { m_tables [id] = value; }
-		}
-
-		internal TablesHeap (MetadataStream stream) : base(stream, MetadataStream.Tables)
-		{
-		}
-
-		public bool HasTable (int id)
-		{
-			return (Valid & (1L << id)) != 0;
-		}
-
-		public override void Accept (IMetadataVisitor visitor)
-		{
-			visitor.VisitTablesHeap (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/TokenType.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/TokenType.cs
index 44de804..f822b6d 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/TokenType.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/TokenType.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,33 +26,31 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil.Metadata {
+namespace Mono.Cecil {
 
 	public enum TokenType : uint {
-		Module			  = 0x00000000,
-		TypeRef			 = 0x01000000,
-		TypeDef			 = 0x02000000,
-		Field			   = 0x04000000,
-		Method			  = 0x06000000,
-		Param			   = 0x08000000,
-		InterfaceImpl	   = 0x09000000,
-		MemberRef		   = 0x0a000000,
-		CustomAttribute	 = 0x0c000000,
-		Permission		  = 0x0e000000,
-		Signature		   = 0x11000000,
-		Event			   = 0x14000000,
-		Property			= 0x17000000,
-		ModuleRef		   = 0x1a000000,
-		TypeSpec			= 0x1b000000,
-		Assembly			= 0x20000000,
-		AssemblyRef		 = 0x23000000,
-		File				= 0x26000000,
-		ExportedType		= 0x27000000,
-		ManifestResource	= 0x28000000,
-		GenericParam			= 0x2a000000,
-		MethodSpec			= 0x2b000000,
-		String			  = 0x70000000,
-		Name				= 0x71000000,
-		BaseType			= 0x72000000
+		Module = 0x00000000,
+		TypeRef = 0x01000000,
+		TypeDef = 0x02000000,
+		Field = 0x04000000,
+		Method = 0x06000000,
+		Param = 0x08000000,
+		InterfaceImpl = 0x09000000,
+		MemberRef = 0x0a000000,
+		CustomAttribute = 0x0c000000,
+		Permission = 0x0e000000,
+		Signature = 0x11000000,
+		Event = 0x14000000,
+		Property = 0x17000000,
+		ModuleRef = 0x1a000000,
+		TypeSpec = 0x1b000000,
+		Assembly = 0x20000000,
+		AssemblyRef = 0x23000000,
+		File = 0x26000000,
+		ExportedType = 0x27000000,
+		ManifestResource = 0x28000000,
+		GenericParam = 0x2a000000,
+		MethodSpec = 0x2b000000,
+		String = 0x70000000,
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/TypeDef.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/TypeDef.cs
deleted file mode 100644
index d611ac9..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/TypeDef.cs
+++ /dev/null
@@ -1,85 +0,0 @@
-//
-// TypeDefTable.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	using Mono.Cecil;
-
-	public sealed class TypeDefTable : IMetadataTable {
-
-		public const int RId = 0x02;
-
-		RowCollection m_rows;
-
-		public TypeDefRow this [int index] {
-			get { return m_rows [index] as TypeDefRow; }
-			set { m_rows [index] = value; }
-		}
-
-		public RowCollection Rows {
-			get { return m_rows; }
-			set { m_rows = value; }
-		}
-
-		public int Id {
-			get { return RId; }
-		}
-
-		internal TypeDefTable ()
-		{
-		}
-
-		public void Accept (IMetadataTableVisitor visitor)
-		{
-			visitor.VisitTypeDefTable (this);
-			this.Rows.Accept (visitor.GetRowVisitor ());
-		}
-	}
-
-	public sealed class TypeDefRow : IMetadataRow {
-
-		public TypeAttributes Flags;
-		public uint Name;
-		public uint Namespace;
-		public MetadataToken Extends;
-		public uint FieldList;
-		public uint MethodList;
-
-		internal TypeDefRow ()
-		{
-		}
-
-		public void Accept (IMetadataRowVisitor visitor)
-		{
-			visitor.VisitTypeDefRow (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/TypeRef.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/TypeRef.cs
deleted file mode 100644
index d27d72e..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/TypeRef.cs
+++ /dev/null
@@ -1,80 +0,0 @@
-//
-// TypeRefTable.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	public sealed class TypeRefTable : IMetadataTable {
-
-		public const int RId = 0x01;
-
-		RowCollection m_rows;
-
-		public TypeRefRow this [int index] {
-			get { return m_rows [index] as TypeRefRow; }
-			set { m_rows [index] = value; }
-		}
-
-		public RowCollection Rows {
-			get { return m_rows; }
-			set { m_rows = value; }
-		}
-
-		public int Id {
-			get { return RId; }
-		}
-
-		internal TypeRefTable ()
-		{
-		}
-
-		public void Accept (IMetadataTableVisitor visitor)
-		{
-			visitor.VisitTypeRefTable (this);
-			this.Rows.Accept (visitor.GetRowVisitor ());
-		}
-	}
-
-	public sealed class TypeRefRow : IMetadataRow {
-
-		public MetadataToken ResolutionScope;
-		public uint Name;
-		public uint Namespace;
-
-		internal TypeRefRow ()
-		{
-		}
-
-		public void Accept (IMetadataRowVisitor visitor)
-		{
-			visitor.VisitTypeRefRow (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/TypeSpec.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/TypeSpec.cs
deleted file mode 100644
index 5c20402..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/TypeSpec.cs
+++ /dev/null
@@ -1,78 +0,0 @@
-//
-// TypeSpecTable.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Tue Oct 10 23:08:26 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	public sealed class TypeSpecTable : IMetadataTable {
-
-		public const int RId = 0x1b;
-
-		RowCollection m_rows;
-
-		public TypeSpecRow this [int index] {
-			get { return m_rows [index] as TypeSpecRow; }
-			set { m_rows [index] = value; }
-		}
-
-		public RowCollection Rows {
-			get { return m_rows; }
-			set { m_rows = value; }
-		}
-
-		public int Id {
-			get { return RId; }
-		}
-
-		internal TypeSpecTable ()
-		{
-		}
-
-		public void Accept (IMetadataTableVisitor visitor)
-		{
-			visitor.VisitTypeSpecTable (this);
-			this.Rows.Accept (visitor.GetRowVisitor ());
-		}
-	}
-
-	public sealed class TypeSpecRow : IMetadataRow {
-
-		public uint Signature;
-
-		internal TypeSpecRow ()
-		{
-		}
-
-		public void Accept (IMetadataRowVisitor visitor)
-		{
-			visitor.VisitTypeSpecRow (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/UserStringHeap.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/UserStringHeap.cs
new file mode 100644
index 0000000..7353cb7
--- /dev/null
+++ b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/UserStringHeap.cs
@@ -0,0 +1,59 @@
+//
+// UserStringHeap.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+using Mono.Cecil.PE;
+
+namespace Mono.Cecil.Metadata {
+
+	sealed class UserStringHeap : StringHeap {
+
+		public UserStringHeap (Section section, uint start, uint size)
+			: base (section, start, size)
+		{
+		}
+
+		protected override string ReadStringAt (uint index)
+		{
+			byte [] data = Section.Data;
+			int start = (int) (index + Offset);
+
+			uint length = (uint) (data.ReadCompressedUInt32 (ref start) & ~1);
+			if (length < 1)
+				return string.Empty;
+
+			var chars = new char [length / 2];
+
+			for (int i = start, j = 0; i < start + length; i += 2)
+				chars [j++] = (char) (data [i] | (data [i + 1] << 8));
+
+			return new string (chars);
+		}
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/UserStringsHeap.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/UserStringsHeap.cs
deleted file mode 100644
index dcf776a..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/UserStringsHeap.cs
+++ /dev/null
@@ -1,77 +0,0 @@
-//
-// UserStringsHeap.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Metadata {
-
-	using System.Collections;
-	using System.Text;
-
-	public class UserStringsHeap : MetadataHeap {
-
-		readonly IDictionary m_strings;
-
-		public string this [uint offset] {
-			get {
-				string us = m_strings [offset] as string;
-				if (us != null)
-					return us;
-
-				us = ReadStringAt ((int) offset);
-				if (us != null && us.Length != 0)
-					m_strings [offset] = us;
-
-				return us;
-			}
-			set { m_strings [offset] = value; }
-		}
-
-		internal UserStringsHeap (MetadataStream stream) : base (stream, MetadataStream.UserStrings)
-		{
-			m_strings = new Hashtable ();
-		}
-
-		string ReadStringAt (int offset)
-		{
-			int length = Utilities.ReadCompressedInteger (this.Data, offset, out offset) - 1;
-			if (length < 1)
-				return string.Empty;
-
-			char [] chars = new char [length / 2];
-
-			for (int i = offset, j = 0; i < offset + length; i += 2)
-				chars [j++] = (char) (Data [i] | (Data [i + 1] << 8));
-
-			return new string (chars);
-		}
-
-		public override void Accept (IMetadataVisitor visitor)
-		{
-			visitor.VisitUserStringsHeap (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Utilities.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Utilities.cs
index 7f76252..496c61b 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Utilities.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Utilities.cs
@@ -4,10 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Sat Feb 16 23:23:29 +0100 2008
-//
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -29,635 +26,504 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil.Metadata {
+using System;
 
-	using System;
-	using System.Collections;
-	using System.IO;
+using Mono.Cecil.Metadata;
 
-	sealed class Utilities {
+namespace Mono.Cecil {
 
-		Utilities ()
-		{
-		}
+	static partial class Mixin {
 
-		public static int ReadCompressedInteger (byte [] data, int pos, out int start)
+		public static uint ReadCompressedUInt32 (this byte [] data, ref int position)
 		{
-			int integer;
-			start = pos;
-			if ((data [pos] & 0x80) == 0) {
-				integer = data [pos];
-				start++;
-			} else if ((data [pos] & 0x40) == 0) {
-				integer = (data [start] & ~0x80) << 8;
-				integer |= data [pos + 1];
-				start += 2;
+			uint integer;
+			if ((data [position] & 0x80) == 0) {
+				integer = data [position];
+				position++;
+			} else if ((data [position] & 0x40) == 0) {
+				integer = (uint) (data [position] & ~0x80) << 8;
+				integer |= data [position + 1];
+				position += 2;
 			} else {
-				integer = (data [start] & ~0xc0) << 24;
-				integer |= data [pos + 1] << 16;
-				integer |= data [pos + 2] << 8;
-				integer |= data [pos + 3];
-				start += 4;
+				integer = (uint) (data [position] & ~0xc0) << 24;
+				integer |= (uint) data [position + 1] << 16;
+				integer |= (uint) data [position + 2] << 8;
+				integer |= (uint) data [position + 3];
+				position += 4;
 			}
 			return integer;
 		}
 
-		public static int ReadCompressedSignedInteger (byte [] data, int pos, out int start)
+		public static MetadataToken GetMetadataToken (this CodedIndex self, uint data)
 		{
-			int integer = ReadCompressedInteger (data, pos, out start) >> 1;
-			if ((integer & 1) == 0)
-				return integer;
-
-			if (integer < 0x40)
-				return integer - 0x40;
-
-			if (integer < 0x2000)
-				return integer - 0x2000;
-
-			if (integer < 0x10000000)
-				return integer - 0x10000000;
-
-			return integer - 0x20000000;
-		}
-
-		public static int WriteCompressedInteger (BinaryWriter writer, int value)
-		{
-			if (value < 0x80)
-				writer.Write ((byte) value);
-			else if (value < 0x4000) {
-				writer.Write ((byte) (0x80 | (value >> 8)));
-				writer.Write ((byte) (value & 0xff));
-			} else {
-				writer.Write ((byte) ((value >> 24) | 0xc0));
-				writer.Write ((byte) ((value >> 16) & 0xff));
-				writer.Write ((byte) ((value >> 8) & 0xff));
-				writer.Write ((byte) (value & 0xff));
-			}
-			return (int) writer.BaseStream.Position;
-		}
-
-		public static MetadataToken GetMetadataToken (CodedIndex cidx, uint data)
-		{
-			uint rid = 0;
-			switch (cidx) {
-			case CodedIndex.TypeDefOrRef :
+			uint rid;
+			TokenType token_type;
+			switch (self) {
+			case CodedIndex.TypeDefOrRef:
 				rid = data >> 2;
 				switch (data & 3) {
-				case 0 :
-					return new MetadataToken (TokenType.TypeDef, rid);
-				case 1 :
-					return new MetadataToken (TokenType.TypeRef, rid);
-				case 2 :
-					return new MetadataToken (TokenType.TypeSpec, rid);
-				default :
-					return MetadataToken.Zero;
+				case 0:
+					token_type = TokenType.TypeDef; goto ret;
+				case 1:
+					token_type = TokenType.TypeRef; goto ret;
+				case 2:
+					token_type = TokenType.TypeSpec; goto ret;
+				default:
+					goto exit;
 				}
-			case CodedIndex.HasConstant :
+			case CodedIndex.HasConstant:
 				rid = data >> 2;
 				switch (data & 3) {
-				case 0 :
-					return new MetadataToken (TokenType.Field, rid);
-				case 1 :
-					return new MetadataToken (TokenType.Param, rid);
-				case 2 :
-					return new MetadataToken (TokenType.Property, rid);
-				default :
-					return MetadataToken.Zero;
+				case 0:
+					token_type = TokenType.Field; goto ret;
+				case 1:
+					token_type = TokenType.Param; goto ret;
+				case 2:
+					token_type = TokenType.Property; goto ret;
+				default:
+					goto exit;
 				}
-			case CodedIndex.HasCustomAttribute :
+			case CodedIndex.HasCustomAttribute:
 				rid = data >> 5;
 				switch (data & 31) {
-				case 0 :
-					return new MetadataToken (TokenType.Method, rid);
-				case 1 :
-					return new MetadataToken (TokenType.Field, rid);
-				case 2 :
-					return new MetadataToken (TokenType.TypeRef, rid);
-				case 3 :
-					return new MetadataToken (TokenType.TypeDef, rid);
-				case 4 :
-					return new MetadataToken (TokenType.Param, rid);
-				case 5 :
-					return new MetadataToken (TokenType.InterfaceImpl, rid);
-				case 6 :
-					return new MetadataToken (TokenType.MemberRef, rid);
-				case 7 :
-					return new MetadataToken (TokenType.Module, rid);
-				case 8 :
-					return new MetadataToken (TokenType.Permission, rid);
-				case 9 :
-					return new MetadataToken (TokenType.Property, rid);
-				case 10 :
-					return new MetadataToken (TokenType.Event, rid);
-				case 11 :
-					return new MetadataToken (TokenType.Signature, rid);
-				case 12 :
-					return new MetadataToken (TokenType.ModuleRef, rid);
-				case 13 :
-					return new MetadataToken (TokenType.TypeSpec, rid);
-				case 14 :
-					return new MetadataToken (TokenType.Assembly, rid);
-				case 15 :
-					return new MetadataToken (TokenType.AssemblyRef, rid);
-				case 16 :
-					return new MetadataToken (TokenType.File, rid);
-				case 17 :
-					return new MetadataToken (TokenType.ExportedType, rid);
-				case 18 :
-					return new MetadataToken (TokenType.ManifestResource, rid);
-				case 19 :
-					return new MetadataToken (TokenType.GenericParam, rid);
-				default :
-					return MetadataToken.Zero;
+				case 0:
+					token_type = TokenType.Method; goto ret;
+				case 1:
+					token_type = TokenType.Field; goto ret;
+				case 2:
+					token_type = TokenType.TypeRef; goto ret;
+				case 3:
+					token_type = TokenType.TypeDef; goto ret;
+				case 4:
+					token_type = TokenType.Param; goto ret;
+				case 5:
+					token_type = TokenType.InterfaceImpl; goto ret;
+				case 6:
+					token_type = TokenType.MemberRef; goto ret;
+				case 7:
+					token_type = TokenType.Module; goto ret;
+				case 8:
+					token_type = TokenType.Permission; goto ret;
+				case 9:
+					token_type = TokenType.Property; goto ret;
+				case 10:
+					token_type = TokenType.Event; goto ret;
+				case 11:
+					token_type = TokenType.Signature; goto ret;
+				case 12:
+					token_type = TokenType.ModuleRef; goto ret;
+				case 13:
+					token_type = TokenType.TypeSpec; goto ret;
+				case 14:
+					token_type = TokenType.Assembly; goto ret;
+				case 15:
+					token_type = TokenType.AssemblyRef; goto ret;
+				case 16:
+					token_type = TokenType.File; goto ret;
+				case 17:
+					token_type = TokenType.ExportedType; goto ret;
+				case 18:
+					token_type = TokenType.ManifestResource; goto ret;
+				case 19:
+					token_type = TokenType.GenericParam; goto ret;
+				default:
+					goto exit;
 				}
-			case CodedIndex.HasFieldMarshal :
+			case CodedIndex.HasFieldMarshal:
 				rid = data >> 1;
 				switch (data & 1) {
-				case 0 :
-					return new MetadataToken (TokenType.Field, rid);
-				case 1 :
-					return new MetadataToken (TokenType.Param, rid);
-				default :
-					return MetadataToken.Zero;
+				case 0:
+					token_type = TokenType.Field; goto ret;
+				case 1:
+					token_type = TokenType.Param; goto ret;
+				default:
+					goto exit;
 				}
-			case CodedIndex.HasDeclSecurity :
+			case CodedIndex.HasDeclSecurity:
 				rid = data >> 2;
 				switch (data & 3) {
-				case 0 :
-					return new MetadataToken (TokenType.TypeDef, rid);
-				case 1 :
-					return new MetadataToken (TokenType.Method, rid);
-				case 2 :
-					return new MetadataToken (TokenType.Assembly, rid);
-				default :
-					return MetadataToken.Zero;
+				case 0:
+					token_type = TokenType.TypeDef; goto ret;
+				case 1:
+					token_type = TokenType.Method; goto ret;
+				case 2:
+					token_type = TokenType.Assembly; goto ret;
+				default:
+					goto exit;
 				}
-			case CodedIndex.MemberRefParent :
+			case CodedIndex.MemberRefParent:
 				rid = data >> 3;
 				switch (data & 7) {
-				case 0 :
-					return new MetadataToken (TokenType.TypeDef, rid);
-				case 1 :
-					return new MetadataToken (TokenType.TypeRef, rid);
-				case 2 :
-					return new MetadataToken (TokenType.ModuleRef, rid);
-				case 3 :
-					return new MetadataToken (TokenType.Method, rid);
-				case 4 :
-					return new MetadataToken (TokenType.TypeSpec, rid);
-				default :
-					return MetadataToken.Zero;
+				case 0:
+					token_type = TokenType.TypeDef; goto ret;
+				case 1:
+					token_type = TokenType.TypeRef; goto ret;
+				case 2:
+					token_type = TokenType.ModuleRef; goto ret;
+				case 3:
+					token_type = TokenType.Method; goto ret;
+				case 4:
+					token_type = TokenType.TypeSpec; goto ret;
+				default:
+					goto exit;
 				}
-			case CodedIndex.HasSemantics :
+			case CodedIndex.HasSemantics:
 				rid = data >> 1;
 				switch (data & 1) {
-				case 0 :
-					return new MetadataToken (TokenType.Event, rid);
-				case 1 :
-					return new MetadataToken (TokenType.Property, rid);
-				default :
-					return MetadataToken.Zero;
+				case 0:
+					token_type = TokenType.Event; goto ret;
+				case 1:
+					token_type = TokenType.Property; goto ret;
+				default:
+					goto exit;
 				}
-			case CodedIndex.MethodDefOrRef :
+			case CodedIndex.MethodDefOrRef:
 				rid = data >> 1;
 				switch (data & 1) {
-				case 0 :
-					return new MetadataToken (TokenType.Method, rid);
-				case 1 :
-					return new MetadataToken (TokenType.MemberRef, rid);
-				default :
-					return MetadataToken.Zero;
+				case 0:
+					token_type = TokenType.Method; goto ret;
+				case 1:
+					token_type = TokenType.MemberRef; goto ret;
+				default:
+					goto exit;
 				}
-			case CodedIndex.MemberForwarded :
+			case CodedIndex.MemberForwarded:
 				rid = data >> 1;
 				switch (data & 1) {
-				case 0 :
-					return new MetadataToken (TokenType.Field, rid);
-				case 1 :
-					return new MetadataToken (TokenType.Method, rid);
-				default :
-					return MetadataToken.Zero;
+				case 0:
+					token_type = TokenType.Field; goto ret;
+				case 1:
+					token_type = TokenType.Method; goto ret;
+				default:
+					goto exit;
 				}
-			case CodedIndex.Implementation :
+			case CodedIndex.Implementation:
 				rid = data >> 2;
 				switch (data & 3) {
-				case 0 :
-					return new MetadataToken (TokenType.File, rid);
-				case 1 :
-					return new MetadataToken (TokenType.AssemblyRef, rid);
-				case 2 :
-					return new MetadataToken (TokenType.ExportedType, rid);
-				default :
-					return MetadataToken.Zero;
+				case 0:
+					token_type = TokenType.File; goto ret;
+				case 1:
+					token_type = TokenType.AssemblyRef; goto ret;
+				case 2:
+					token_type = TokenType.ExportedType; goto ret;
+				default:
+					goto exit;
 				}
-			case CodedIndex.CustomAttributeType :
+			case CodedIndex.CustomAttributeType:
 				rid = data >> 3;
 				switch (data & 7) {
-				case 2 :
-					return new MetadataToken (TokenType.Method, rid);
-				case 3 :
-					return new MetadataToken (TokenType.MemberRef, rid);
-				default :
-					return MetadataToken.Zero;
+				case 2:
+					token_type = TokenType.Method; goto ret;
+				case 3:
+					token_type = TokenType.MemberRef; goto ret;
+				default:
+					goto exit;
 				}
-			case CodedIndex.ResolutionScope :
+			case CodedIndex.ResolutionScope:
 				rid = data >> 2;
 				switch (data & 3) {
-				case 0 :
-					return new MetadataToken (TokenType.Module, rid);
-				case 1 :
-					return new MetadataToken (TokenType.ModuleRef, rid);
-				case 2 :
-					return new MetadataToken (TokenType.AssemblyRef, rid);
-				case 3 :
-					return new MetadataToken (TokenType.TypeRef, rid);
-				default :
-					return MetadataToken.Zero;
+				case 0:
+					token_type = TokenType.Module; goto ret;
+				case 1:
+					token_type = TokenType.ModuleRef; goto ret;
+				case 2:
+					token_type = TokenType.AssemblyRef; goto ret;
+				case 3:
+					token_type = TokenType.TypeRef; goto ret;
+				default:
+					goto exit;
 				}
-			case CodedIndex.TypeOrMethodDef :
+			case CodedIndex.TypeOrMethodDef:
 				rid = data >> 1;
 				switch (data & 1) {
-				case 0 :
-					return new MetadataToken (TokenType.TypeDef, rid);
-				case 1 :
-					return new MetadataToken (TokenType.Method, rid);
-				default :
-					return MetadataToken.Zero;
+				case 0:
+					token_type = TokenType.TypeDef; goto ret;
+				case 1:
+					token_type = TokenType.Method; goto ret;
+				default: goto exit;
 				}
-			default :
-				return MetadataToken.Zero;
+			default:
+				goto exit;
 			}
+		ret:
+			return new MetadataToken (token_type, rid);
+		exit:
+			return MetadataToken.Zero;
 		}
 
-		public static uint CompressMetadataToken (CodedIndex cidx, MetadataToken token)
+#if !READ_ONLY
+		public static uint CompressMetadataToken (this CodedIndex self, MetadataToken token)
 		{
 			uint ret = 0;
 			if (token.RID == 0)
 				return ret;
-			switch (cidx) {
-			case CodedIndex.TypeDefOrRef :
+			switch (self) {
+			case CodedIndex.TypeDefOrRef:
 				ret = token.RID << 2;
 				switch (token.TokenType) {
-				case TokenType.TypeDef :
+				case TokenType.TypeDef:
 					return ret | 0;
-				case TokenType.TypeRef :
+				case TokenType.TypeRef:
 					return ret | 1;
-				case TokenType.TypeSpec :
+				case TokenType.TypeSpec:
 					return ret | 2;
-				default :
-					throw new MetadataFormatException("Non valid Token for TypeDefOrRef");
+				default:
+					goto exit;
 				}
-			case CodedIndex.HasConstant :
+			case CodedIndex.HasConstant:
 				ret = token.RID << 2;
 				switch (token.TokenType) {
-				case TokenType.Field :
+				case TokenType.Field:
 					return ret | 0;
-				case TokenType.Param :
+				case TokenType.Param:
 					return ret | 1;
-				case TokenType.Property :
+				case TokenType.Property:
 					return ret | 2;
-				default :
-					throw new MetadataFormatException("Non valid Token for HasConstant");
+				default:
+					goto exit;
 				}
-			case CodedIndex.HasCustomAttribute :
+			case CodedIndex.HasCustomAttribute:
 				ret = token.RID << 5;
 				switch (token.TokenType) {
-				case TokenType.Method :
+				case TokenType.Method:
 					return ret | 0;
-				case TokenType.Field :
+				case TokenType.Field:
 					return ret | 1;
-				case TokenType.TypeRef :
+				case TokenType.TypeRef:
 					return ret | 2;
-				case TokenType.TypeDef :
+				case TokenType.TypeDef:
 					return ret | 3;
-				case TokenType.Param :
+				case TokenType.Param:
 					return ret | 4;
-				case TokenType.InterfaceImpl :
+				case TokenType.InterfaceImpl:
 					return ret | 5;
-				case TokenType.MemberRef :
+				case TokenType.MemberRef:
 					return ret | 6;
-				case TokenType.Module :
+				case TokenType.Module:
 					return ret | 7;
-				case TokenType.Permission :
+				case TokenType.Permission:
 					return ret | 8;
-				case TokenType.Property :
+				case TokenType.Property:
 					return ret | 9;
-				case TokenType.Event :
+				case TokenType.Event:
 					return ret | 10;
-				case TokenType.Signature :
+				case TokenType.Signature:
 					return ret | 11;
-				case TokenType.ModuleRef :
+				case TokenType.ModuleRef:
 					return ret | 12;
-				case TokenType.TypeSpec :
+				case TokenType.TypeSpec:
 					return ret | 13;
-				case TokenType.Assembly :
+				case TokenType.Assembly:
 					return ret | 14;
-				case TokenType.AssemblyRef :
+				case TokenType.AssemblyRef:
 					return ret | 15;
-				case TokenType.File :
+				case TokenType.File:
 					return ret | 16;
-				case TokenType.ExportedType :
+				case TokenType.ExportedType:
 					return ret | 17;
-				case TokenType.ManifestResource :
+				case TokenType.ManifestResource:
 					return ret | 18;
-				case TokenType.GenericParam :
+				case TokenType.GenericParam:
 					return ret | 19;
-				default :
-					throw new MetadataFormatException("Non valid Token for HasCustomAttribute");
+				default:
+					goto exit;
 				}
-			case CodedIndex.HasFieldMarshal :
+			case CodedIndex.HasFieldMarshal:
 				ret = token.RID << 1;
 				switch (token.TokenType) {
-				case TokenType.Field :
+				case TokenType.Field:
 					return ret | 0;
-				case TokenType.Param :
+				case TokenType.Param:
 					return ret | 1;
-				default :
-					throw new MetadataFormatException("Non valid Token for HasFieldMarshal");
+				default:
+					goto exit;
 				}
-			case CodedIndex.HasDeclSecurity :
+			case CodedIndex.HasDeclSecurity:
 				ret = token.RID << 2;
 				switch (token.TokenType) {
-				case TokenType.TypeDef :
+				case TokenType.TypeDef:
 					return ret | 0;
-				case TokenType.Method :
+				case TokenType.Method:
 					return ret | 1;
-				case TokenType.Assembly :
+				case TokenType.Assembly:
 					return ret | 2;
-				default :
-					throw new MetadataFormatException("Non valid Token for HasDeclSecurity");
+				default:
+					goto exit;
 				}
-			case CodedIndex.MemberRefParent :
+			case CodedIndex.MemberRefParent:
 				ret = token.RID << 3;
 				switch (token.TokenType) {
-				case TokenType.TypeDef :
+				case TokenType.TypeDef:
 					return ret | 0;
-				case TokenType.TypeRef :
+				case TokenType.TypeRef:
 					return ret | 1;
-				case TokenType.ModuleRef :
+				case TokenType.ModuleRef:
 					return ret | 2;
-				case TokenType.Method :
+				case TokenType.Method:
 					return ret | 3;
-				case TokenType.TypeSpec :
+				case TokenType.TypeSpec:
 					return ret | 4;
-				default :
-					throw new MetadataFormatException("Non valid Token for MemberRefParent");
+				default:
+					goto exit;
 				}
-			case CodedIndex.HasSemantics :
+			case CodedIndex.HasSemantics:
 				ret = token.RID << 1;
 				switch (token.TokenType) {
-				case TokenType.Event :
+				case TokenType.Event:
 					return ret | 0;
-				case TokenType.Property :
+				case TokenType.Property:
 					return ret | 1;
-				default :
-					throw new MetadataFormatException("Non valid Token for HasSemantics");
+				default:
+					goto exit;
 				}
-			case CodedIndex.MethodDefOrRef :
+			case CodedIndex.MethodDefOrRef:
 				ret = token.RID << 1;
 				switch (token.TokenType) {
-				case TokenType.Method :
+				case TokenType.Method:
 					return ret | 0;
-				case TokenType.MemberRef :
+				case TokenType.MemberRef:
 					return ret | 1;
-				default :
-					throw new MetadataFormatException("Non valid Token for MethodDefOrRef");
+				default:
+					goto exit;
 				}
-			case CodedIndex.MemberForwarded :
+			case CodedIndex.MemberForwarded:
 				ret = token.RID << 1;
 				switch (token.TokenType) {
-				case TokenType.Field :
+				case TokenType.Field:
 					return ret | 0;
-				case TokenType.Method :
+				case TokenType.Method:
 					return ret | 1;
-				default :
-					throw new MetadataFormatException("Non valid Token for MemberForwarded");
+				default:
+					goto exit;
 				}
-			case CodedIndex.Implementation :
+			case CodedIndex.Implementation:
 				ret = token.RID << 2;
 				switch (token.TokenType) {
-				case TokenType.File :
+				case TokenType.File:
 					return ret | 0;
-				case TokenType.AssemblyRef :
+				case TokenType.AssemblyRef:
 					return ret | 1;
-				case TokenType.ExportedType :
+				case TokenType.ExportedType:
 					return ret | 2;
-				default :
-					throw new MetadataFormatException("Non valid Token for Implementation");
+				default:
+					goto exit;
 				}
-			case CodedIndex.CustomAttributeType :
+			case CodedIndex.CustomAttributeType:
 				ret = token.RID << 3;
 				switch (token.TokenType) {
-				case TokenType.Method :
+				case TokenType.Method:
 					return ret | 2;
-				case TokenType.MemberRef :
+				case TokenType.MemberRef:
 					return ret | 3;
-				default :
-					throw new MetadataFormatException("Non valid Token for CustomAttributeType");
+				default:
+					goto exit;
 				}
-			case CodedIndex.ResolutionScope :
+			case CodedIndex.ResolutionScope:
 				ret = token.RID << 2;
 				switch (token.TokenType) {
-				case TokenType.Module :
+				case TokenType.Module:
 					return ret | 0;
-				case TokenType.ModuleRef :
+				case TokenType.ModuleRef:
 					return ret | 1;
-				case TokenType.AssemblyRef :
+				case TokenType.AssemblyRef:
 					return ret | 2;
-				case TokenType.TypeRef :
+				case TokenType.TypeRef:
 					return ret | 3;
-				default :
-					throw new MetadataFormatException("Non valid Token for ResolutionScope");
+				default:
+					goto exit;
 				}
-			case CodedIndex.TypeOrMethodDef :
+			case CodedIndex.TypeOrMethodDef:
 				ret = token.RID << 1;
 				switch (token.TokenType) {
-				case TokenType.TypeDef :
+				case TokenType.TypeDef:
 					return ret | 0;
-				case TokenType.Method :
+				case TokenType.Method:
 					return ret | 1;
-				default :
-					throw new MetadataFormatException("Non valid Token for TypeOrMethodDef");
+				default:
+					goto exit;
 				}
-			default :
-				throw new MetadataFormatException ("Non valid CodedIndex");
-			}
-		}
-
-		internal static Type GetCorrespondingTable (TokenType t)
-		{
-			switch (t) {
-			case TokenType.Assembly :
-				return typeof (AssemblyTable);
-			case TokenType.AssemblyRef :
-				return typeof (AssemblyRefTable);
-			case TokenType.CustomAttribute :
-				return typeof (CustomAttributeTable);
-			case TokenType.Event :
-				return typeof (EventTable);
-			case TokenType.ExportedType :
-				return typeof (ExportedTypeTable);
-			case TokenType.Field :
-				return typeof (FieldTable);
-			case TokenType.File :
-				return typeof (FileTable);
-			case TokenType.InterfaceImpl :
-				return typeof (InterfaceImplTable);
-			case TokenType.MemberRef :
-				return typeof (MemberRefTable);
-			case TokenType.Method :
-				return typeof (MethodTable);
-			case TokenType.Module :
-				return typeof (ModuleTable);
-			case TokenType.ModuleRef :
-				return typeof (ModuleRefTable);
-			case TokenType.Param :
-				return typeof (ParamTable);
-			case TokenType.Permission :
-				return typeof (DeclSecurityTable);
-			case TokenType.Property :
-				return typeof (PropertyTable);
-			case TokenType.Signature :
-				return typeof (StandAloneSigTable);
-			case TokenType.TypeDef :
-				return typeof (TypeDefTable);
-			case TokenType.TypeRef :
-				return typeof (TypeRefTable);
-			case TokenType.TypeSpec :
-				return typeof (TypeSpecTable);
-			default :
-				return null;
+			default:
+				goto exit;
 			}
+		exit:
+			throw new ArgumentException ();
 		}
+#endif
 
-		internal delegate int TableRowCounter (int rid);
-
-		internal static int GetCodedIndexSize (CodedIndex ci, TableRowCounter rowCounter, int [] codedIndexCache)
+		public static int GetSize (this CodedIndex self, Func<Table, int> counter)
 		{
-			int bits = 0, max = 0, index = (int) ci;
-			if (codedIndexCache [index] != 0)
-				return codedIndexCache [index];
+			int bits;
+			Table [] tables;
 
-			int res = 0;
-			int [] rids;
-			switch (ci) {
-			case CodedIndex.TypeDefOrRef :
+			switch (self) {
+			case CodedIndex.TypeDefOrRef:
 				bits = 2;
-				rids = new int [3];
-				rids [0] = TypeDefTable.RId;
-				rids [1] = TypeRefTable.RId;
-				rids [2] = TypeSpecTable.RId;
+				tables = new [] { Table.TypeDef, Table.TypeRef, Table.TypeSpec };
 				break;
-			case CodedIndex.HasConstant :
+			case CodedIndex.HasConstant:
 				bits = 2;
-				rids = new int [3];
-				rids [0] = FieldTable.RId;
-				rids [1] = ParamTable.RId;
-				rids [2] = PropertyTable.RId;
+				tables = new [] { Table.Field, Table.Param, Table.Property };
 				break;
-			case CodedIndex.HasCustomAttribute :
+			case CodedIndex.HasCustomAttribute:
 				bits = 5;
-				rids = new int [20];
-				rids [0] = MethodTable.RId;
-				rids [1] = FieldTable.RId;
-				rids [2] = TypeRefTable.RId;
-				rids [3] = TypeDefTable.RId;
-				rids [4] = ParamTable.RId;
-				rids [5] = InterfaceImplTable.RId;
-				rids [6] = MemberRefTable.RId;
-				rids [7] = ModuleTable.RId;
-				rids [8] = DeclSecurityTable.RId;
-				rids [9] = PropertyTable.RId;
-				rids [10] = EventTable.RId;
-				rids [11] = StandAloneSigTable.RId;
-				rids [12] = ModuleRefTable.RId;
-				rids [13] = TypeSpecTable.RId;
-				rids [14] = AssemblyTable.RId;
-				rids [15] = AssemblyRefTable.RId;
-				rids [16] = FileTable.RId;
-				rids [17] = ExportedTypeTable.RId;
-				rids [18] = ManifestResourceTable.RId;
-				rids [19] = GenericParamTable.RId;
+				tables = new [] {
+					Table.Method, Table.Field, Table.TypeRef, Table.TypeDef, Table.Param, Table.InterfaceImpl, Table.MemberRef,
+					Table.Module, Table.DeclSecurity, Table.Property, Table.Event, Table.StandAloneSig, Table.ModuleRef,
+					Table.TypeSpec, Table.Assembly, Table.AssemblyRef, Table.File, Table.ExportedType,
+					Table.ManifestResource, Table.GenericParam
+				};
 				break;
-			case CodedIndex.HasFieldMarshal :
+			case CodedIndex.HasFieldMarshal:
 				bits = 1;
-				rids = new int [2];
-				rids [0] = FieldTable.RId;
-				rids [1] = ParamTable.RId;
+				tables = new [] { Table.Field, Table.Param };
 				break;
-			case CodedIndex.HasDeclSecurity :
+			case CodedIndex.HasDeclSecurity:
 				bits = 2;
-				rids = new int [3];
-				rids [0] = TypeDefTable.RId;
-				rids [1] = MethodTable.RId;
-				rids [2] = AssemblyTable.RId;
+				tables = new [] { Table.TypeDef, Table.Method, Table.Assembly };
 				break;
-			case CodedIndex.MemberRefParent :
+			case CodedIndex.MemberRefParent:
 				bits = 3;
-				rids = new int [5];
-				rids [0] = TypeDefTable.RId;
-				rids [1] = TypeRefTable.RId;
-				rids [2] = ModuleRefTable.RId;
-				rids [3] = MethodTable.RId;
-				rids [4] = TypeSpecTable.RId;
+				tables = new [] { Table.TypeDef, Table.TypeRef, Table.ModuleRef, Table.Method, Table.TypeSpec };
 				break;
-			case CodedIndex.HasSemantics :
+			case CodedIndex.HasSemantics:
 				bits = 1;
-				rids = new int [2];
-				rids [0] = EventTable.RId;
-				rids [1] = PropertyTable.RId;
+				tables = new [] { Table.Event, Table.Property };
 				break;
-			case CodedIndex.MethodDefOrRef :
+			case CodedIndex.MethodDefOrRef:
 				bits = 1;
-				rids = new int [2];
-				rids [0] = MethodTable.RId;
-				rids [1] = MemberRefTable.RId;
+				tables = new [] { Table.Method, Table.MemberRef };
 				break;
-			case CodedIndex.MemberForwarded :
+			case CodedIndex.MemberForwarded:
 				bits = 1;
-				rids = new int [2];
-				rids [0] = FieldTable.RId;
-				rids [1] = MethodTable.RId;
+				tables = new [] { Table.Field, Table.Method };
 				break;
-			case CodedIndex.Implementation :
+			case CodedIndex.Implementation:
 				bits = 2;
-				rids = new int [3];
-				rids [0] = FileTable.RId;
-				rids [1] = AssemblyRefTable.RId;
-				rids [2] = ExportedTypeTable.RId;
+				tables = new [] { Table.File, Table.AssemblyRef, Table.ExportedType };
 				break;
-			case CodedIndex.CustomAttributeType :
+			case CodedIndex.CustomAttributeType:
 				bits = 3;
-				rids = new int [2];
-				rids [0] = MethodTable.RId;
-				rids [1] = MemberRefTable.RId;
+				tables = new [] { Table.Method, Table.MemberRef };
 				break;
-			case CodedIndex.ResolutionScope :
+			case CodedIndex.ResolutionScope:
 				bits = 2;
-				rids = new int [4];
-				rids [0] = ModuleTable.RId;
-				rids [1] = ModuleRefTable.RId;
-				rids [2] = AssemblyRefTable.RId;
-				rids [3] = TypeRefTable.RId;
+				tables = new [] { Table.Module, Table.ModuleRef, Table.AssemblyRef, Table.TypeRef };
 				break;
-			case CodedIndex.TypeOrMethodDef :
+			case CodedIndex.TypeOrMethodDef:
 				bits = 1;
-				rids = new int [2];
-				rids [0] = TypeDefTable.RId;
-				rids [1] = MethodTable.RId;
+				tables = new [] { Table.TypeDef, Table.Method };
 				break;
-			default :
-				throw new MetadataFormatException ("Non valid CodedIndex");
+			default:
+				throw new ArgumentException ();
 			}
 
-			for (int i = 0; i < rids.Length; i++) {
-				int rows = rowCounter (rids [i]);
-				if (rows > max) max = rows;
+			int max = 0;
+
+			for (int i = 0; i < tables.Length; i++) {
+				max = System.Math.Max (counter (tables [i]), max);
 			}
 
-			res = max < (1 << (16 - bits)) ? 2 : 4;
-			codedIndexCache [index] = res;
-			return res;
+			return max < (1 << (16 - bits)) ? 2 : 4;
 		}
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.PE/BinaryStreamReader.cs b/mcs/class/Mono.Cecil/Mono.Cecil.PE/BinaryStreamReader.cs
new file mode 100644
index 0000000..8f5b38e
--- /dev/null
+++ b/mcs/class/Mono.Cecil/Mono.Cecil.PE/BinaryStreamReader.cs
@@ -0,0 +1,51 @@
+//
+// BinaryStreamReader.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.IO;
+
+namespace Mono.Cecil.PE {
+
+	class BinaryStreamReader : BinaryReader {
+
+		public BinaryStreamReader (Stream stream)
+			: base (stream)
+		{
+		}
+
+		protected void Advance (int bytes)
+		{
+			BaseStream.Seek (bytes, SeekOrigin.Current);
+		}
+
+		protected DataDirectory ReadDataDirectory ()
+		{
+			return new DataDirectory (ReadUInt32 (), ReadUInt32 ());
+		}
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.PE/BinaryStreamWriter.cs b/mcs/class/Mono.Cecil/Mono.Cecil.PE/BinaryStreamWriter.cs
new file mode 100644
index 0000000..37189cb
--- /dev/null
+++ b/mcs/class/Mono.Cecil/Mono.Cecil.PE/BinaryStreamWriter.cs
@@ -0,0 +1,96 @@
+//
+// BinaryStreamWriter.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.IO;
+
+#if !READ_ONLY
+
+namespace Mono.Cecil.PE {
+
+	class BinaryStreamWriter : BinaryWriter {
+
+		public BinaryStreamWriter (Stream stream)
+			: base (stream)
+		{
+		}
+
+		public void WriteByte (byte value)
+		{
+			Write (value);
+		}
+
+		public void WriteUInt16 (ushort value)
+		{
+			Write (value);
+		}
+
+		public void WriteInt16 (short value)
+		{
+			Write (value);
+		}
+
+		public void WriteUInt32 (uint value)
+		{
+			Write (value);
+		}
+
+		public void WriteInt32 (int value)
+		{
+			Write (value);
+		}
+
+		public void WriteUInt64 (ulong value)
+		{
+			Write (value);
+		}
+
+		public void WriteBytes (byte [] bytes)
+		{
+			Write (bytes);
+		}
+
+		public void WriteDataDirectory (DataDirectory directory)
+		{
+			Write (directory.VirtualAddress);
+			Write (directory.Size);
+		}
+
+		public void WriteBuffer (ByteBuffer buffer)
+		{
+			Write (buffer.buffer, 0, buffer.length);
+		}
+
+		protected void Advance (int bytes)
+		{
+			BaseStream.Seek (bytes, SeekOrigin.Current);
+		}
+	}
+}
+
+#endif
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.PE/ByteBuffer.cs b/mcs/class/Mono.Cecil/Mono.Cecil.PE/ByteBuffer.cs
new file mode 100644
index 0000000..4303b6d
--- /dev/null
+++ b/mcs/class/Mono.Cecil/Mono.Cecil.PE/ByteBuffer.cs
@@ -0,0 +1,342 @@
+//
+// ByteBuffer.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+namespace Mono.Cecil.PE {
+
+	class ByteBuffer {
+
+		internal byte [] buffer;
+		internal int length;
+		internal int position;
+
+		public ByteBuffer ()
+		{
+			this.buffer = Empty<byte>.Array;
+		}
+
+		public ByteBuffer (int length)
+		{
+			this.buffer = new byte [length];
+		}
+
+		public ByteBuffer (byte [] buffer)
+		{
+			this.buffer = buffer ?? Empty<byte>.Array;
+			this.length = this.buffer.Length;
+		}
+
+		public void Reset (byte [] buffer)
+		{
+			this.buffer = buffer ?? Empty<byte>.Array;
+			this.length = this.buffer.Length;
+		}
+
+		public void Advance (int length)
+		{
+			position += length;
+		}
+
+		public byte ReadByte ()
+		{
+			return buffer [position++];
+		}
+
+		public sbyte ReadSByte ()
+		{
+			return (sbyte) ReadByte ();
+		}
+
+		public byte [] ReadBytes (int length)
+		{
+			var bytes = new byte [length];
+			Buffer.BlockCopy (buffer, position, bytes, 0, length);
+			position += length;
+			return bytes;
+		}
+
+		public ushort ReadUInt16 ()
+		{
+			ushort value = (ushort) (buffer [position]
+				| (buffer [position + 1] << 8));
+			position += 2;
+			return value;
+		}
+
+		public short ReadInt16 ()
+		{
+			return (short) ReadUInt16 ();
+		}
+
+		public uint ReadUInt32 ()
+		{
+			uint value = (uint) (buffer [position]
+				| (buffer [position + 1] << 8)
+				| (buffer [position + 2] << 16)
+				| (buffer [position + 3] << 24));
+			position += 4;
+			return value;
+		}
+
+		public int ReadInt32 ()
+		{
+			return (int) ReadUInt32 ();
+		}
+
+		public ulong ReadUInt64 ()
+		{
+			uint low = ReadUInt32 ();
+			uint high = ReadUInt32 ();
+
+			return (((ulong) high) << 32) | low;
+		}
+
+		public long ReadInt64 ()
+		{
+			return (long) ReadUInt64 ();
+		}
+
+		public uint ReadCompressedUInt32 ()
+		{
+			byte first = ReadByte ();
+			if ((first & 0x80) == 0)
+				return first;
+
+			if ((first & 0x40) == 0)
+				return ((uint) (first & ~0x80) << 8)
+					| ReadByte ();
+
+			return ((uint) (first & ~0xc0) << 24)
+				| (uint) ReadByte () << 16
+				| (uint) ReadByte () << 8
+				| ReadByte ();
+		}
+
+		public int ReadCompressedInt32 ()
+		{
+			var value = (int) ReadCompressedUInt32 ();
+
+			return (value & 1) != 0
+				? -(value >> 1)
+				: value >> 1;
+		}
+
+		public float ReadSingle ()
+		{
+			if (!BitConverter.IsLittleEndian) {
+				var bytes = ReadBytes (4);
+				Array.Reverse (bytes);
+				return BitConverter.ToSingle (bytes, 0);
+			}
+
+			float value = BitConverter.ToSingle (buffer, position);
+			position += 4;
+			return value;
+		}
+
+		public double ReadDouble ()
+		{
+			if (!BitConverter.IsLittleEndian) {
+				var bytes = ReadBytes (8);
+				Array.Reverse (bytes);
+				return BitConverter.ToDouble (bytes, 0);
+			}
+
+			double value = BitConverter.ToDouble (buffer, position);
+			position += 8;
+			return value;
+		}
+
+#if !READ_ONLY
+
+		public void WriteByte (byte value)
+		{
+			if (position == buffer.Length)
+				Grow (1);
+
+			buffer [position++] = value;
+
+			if (position > length)
+				length = position;
+		}
+
+		public void WriteSByte (sbyte value)
+		{
+			WriteByte ((byte) value);
+		}
+
+		public void WriteUInt16 (ushort value)
+		{
+			if (position + 2 > buffer.Length)
+				Grow (2);
+
+			buffer [position++] = (byte) value;
+			buffer [position++] = (byte) (value >> 8);
+
+			if (position > length)
+				length = position;
+		}
+
+		public void WriteInt16 (short value)
+		{
+			WriteUInt16 ((ushort) value);
+		}
+
+		public void WriteUInt32 (uint value)
+		{
+			if (position + 4 > buffer.Length)
+				Grow (4);
+
+			buffer [position++] = (byte) value;
+			buffer [position++] = (byte) (value >> 8);
+			buffer [position++] = (byte) (value >> 16);
+			buffer [position++] = (byte) (value >> 24);
+
+			if (position > length)
+				length = position;
+		}
+
+		public void WriteInt32 (int value)
+		{
+			WriteUInt32 ((uint) value);
+		}
+
+		public void WriteUInt64 (ulong value)
+		{
+			if (position + 8 > buffer.Length)
+				Grow (8);
+
+			buffer [position++] = (byte) value;
+			buffer [position++] = (byte) (value >> 8);
+			buffer [position++] = (byte) (value >> 16);
+			buffer [position++] = (byte) (value >> 24);
+			buffer [position++] = (byte) (value >> 32);
+			buffer [position++] = (byte) (value >> 40);
+			buffer [position++] = (byte) (value >> 48);
+			buffer [position++] = (byte) (value >> 56);
+
+			if (position > length)
+				length = position;
+		}
+
+		public void WriteInt64 (long value)
+		{
+			WriteUInt64 ((ulong) value);
+		}
+
+		public void WriteCompressedUInt32 (uint value)
+		{
+			if (value < 0x80)
+				WriteByte ((byte) value);
+			else if (value < 0x4000) {
+				WriteByte ((byte) (0x80 | (value >> 8)));
+				WriteByte ((byte) (value & 0xff));
+			} else {
+				WriteByte ((byte) ((value >> 24) | 0xc0));
+				WriteByte ((byte) ((value >> 16) & 0xff));
+				WriteByte ((byte) ((value >> 8) & 0xff));
+				WriteByte ((byte) (value & 0xff));
+			}
+		}
+
+		public void WriteCompressedInt32 (int value)
+		{
+			WriteCompressedUInt32 ((uint) ((value < 0) ? ((-value) << 1) | 1 : value << 1));
+		}
+
+		public void WriteBytes (byte [] bytes)
+		{
+			var length = bytes.Length;
+			if (position + length > buffer.Length)
+				Grow (length);
+
+			Buffer.BlockCopy (bytes, 0, buffer, position, length);
+			position += length;
+
+			if (position > this.length)
+				this.length = position;
+		}
+
+		public void WriteBytes (int length)
+		{
+			if (position + length > buffer.Length)
+				Grow (length);
+
+			position += length;
+
+			if (position > this.length)
+				this.length = position;
+		}
+
+		public void WriteBytes (ByteBuffer buffer)
+		{
+			if (position + buffer.length > this.buffer.Length)
+				Grow (buffer.length);
+
+			Buffer.BlockCopy (buffer.buffer, 0, this.buffer, position, buffer.length);
+			position += buffer.length;
+
+			if (position > this.length)
+				this.length = position;
+		}
+
+		public void WriteSingle (float value)
+		{
+			var bytes = BitConverter.GetBytes (value);
+
+			if (!BitConverter.IsLittleEndian)
+				Array.Reverse (bytes);
+
+			WriteBytes (bytes);
+		}
+
+		public void WriteDouble (double value)
+		{
+			var bytes = BitConverter.GetBytes (value);
+
+			if (!BitConverter.IsLittleEndian)
+				Array.Reverse (bytes);
+
+			WriteBytes (bytes);
+		}
+
+		void Grow (int desired)
+		{
+			var current = this.buffer;
+			var current_length = current.Length;
+
+			var buffer = new byte [System.Math.Max (current_length + desired, current_length * 2)];
+			Buffer.BlockCopy (current, 0, buffer, 0, current_length);
+			this.buffer = buffer;
+		}
+
+#endif
+
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.PE/ByteBufferEqualityComparer.cs b/mcs/class/Mono.Cecil/Mono.Cecil.PE/ByteBufferEqualityComparer.cs
new file mode 100644
index 0000000..fe56a6f
--- /dev/null
+++ b/mcs/class/Mono.Cecil/Mono.Cecil.PE/ByteBufferEqualityComparer.cs
@@ -0,0 +1,78 @@
+//
+// ByteBufferEqualityComparer.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections.Generic;
+
+namespace Mono.Cecil.PE {
+
+	sealed class ByteBufferEqualityComparer : IEqualityComparer<ByteBuffer> {
+
+		public bool Equals (ByteBuffer x, ByteBuffer y)
+		{
+			if (x.length != y.length)
+				return false;
+
+			var x_buffer = x.buffer;
+			var y_buffer = y.buffer;
+
+			for (int i = 0; i < x.length; i++)
+				if (x_buffer [i] != y_buffer [i])
+					return false;
+
+			return true;
+		}
+
+		public int GetHashCode (ByteBuffer buffer)
+		{
+#if !BYTE_BUFFER_WELL_DISTRIBUTED_HASH
+			var hash = 0;
+			var bytes = buffer.buffer;
+			for (int i = 0; i < buffer.length; i++)
+				hash = (hash * 37) ^ bytes [i];
+
+			return hash;
+#else
+			const uint p = 16777619;
+			uint hash = 2166136261;
+
+			var bytes = buffer.buffer;
+			for (int i = 0; i < buffer.length; i++)
+			    hash = (hash ^ bytes [i]) * p;
+
+			hash += hash << 13;
+			hash ^= hash >> 7;
+			hash += hash << 3;
+			hash ^= hash >> 17;
+			hash += hash << 5;
+
+			return (int) hash;
+#endif
+		}
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.PE/DataDirectory.cs b/mcs/class/Mono.Cecil/Mono.Cecil.PE/DataDirectory.cs
new file mode 100644
index 0000000..5ba2d2d
--- /dev/null
+++ b/mcs/class/Mono.Cecil/Mono.Cecil.PE/DataDirectory.cs
@@ -0,0 +1,50 @@
+//
+// DataDirectory.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+using RVA = System.UInt32;
+
+namespace Mono.Cecil.PE {
+
+	struct DataDirectory {
+
+		public readonly RVA VirtualAddress;
+		public readonly uint Size;
+
+		public bool IsZero {
+			get { return VirtualAddress == 0 && Size == 0; }
+		}
+
+		public DataDirectory (RVA rva, uint size)
+		{
+			this.VirtualAddress = rva;
+			this.Size = size;
+		}
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.PE/Image.cs b/mcs/class/Mono.Cecil/Mono.Cecil.PE/Image.cs
new file mode 100644
index 0000000..11aba8f
--- /dev/null
+++ b/mcs/class/Mono.Cecil/Mono.Cecil.PE/Image.cs
@@ -0,0 +1,159 @@
+//
+// Image.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+using Mono;
+using Mono.Cecil.Cil;
+using Mono.Cecil.Metadata;
+
+using RVA = System.UInt32;
+
+namespace Mono.Cecil.PE {
+
+	sealed class Image {
+
+		public ModuleKind Kind;
+		public TargetRuntime Runtime;
+		public TargetArchitecture Architecture;
+		public string FileName;
+
+		public Section [] Sections;
+
+		public Section MetadataSection;
+
+		public uint EntryPointToken;
+		public ModuleAttributes Attributes;
+
+		public DataDirectory Debug;
+		public DataDirectory Resources;
+
+		public StringHeap StringHeap;
+		public BlobHeap BlobHeap;
+		public UserStringHeap UserStringHeap;
+		public GuidHeap GuidHeap;
+		public TableHeap TableHeap;
+
+		readonly int [] coded_index_sizes = new int [13];
+
+		readonly Func<Table, int> counter;
+
+		public Image ()
+		{
+			counter = GetTableLength;
+		}
+
+		public bool HasTable (Table table)
+		{
+			return GetTableLength (table) > 0;
+		}
+
+		public int GetTableLength (Table table)
+		{
+			return (int) TableHeap [table].Length;
+		}
+
+		public int GetTableIndexSize (Table table)
+		{
+			return GetTableLength (table) < 65536 ? 2 : 4;
+		}
+
+		public int GetCodedIndexSize (CodedIndex coded_index)
+		{
+			var index = (int) coded_index;
+			var size = coded_index_sizes [index];
+			if (size != 0)
+				return size;
+
+			return coded_index_sizes [index] = coded_index.GetSize (counter);
+		}
+
+		public uint ResolveVirtualAddress (RVA rva)
+		{
+			var section = GetSectionAtVirtualAddress (rva);
+			if (section == null)
+				throw new ArgumentOutOfRangeException ();
+
+			return ResolveVirtualAddressInSection (rva, section);
+		}
+
+		public uint ResolveVirtualAddressInSection (RVA rva, Section section)
+		{
+			return rva + section.PointerToRawData - section.VirtualAddress;
+		}
+
+		public Section GetSection (string name)
+		{
+			var sections = this.Sections;
+			for (int i = 0; i < sections.Length; i++) {
+				var section = sections [i];
+				if (section.Name == name)
+					return section;
+			}
+
+			return null;
+		}
+
+		public Section GetSectionAtVirtualAddress (RVA rva)
+		{
+			var sections = this.Sections;
+			for (int i = 0; i < sections.Length; i++) {
+				var section = sections [i];
+				if (rva >= section.VirtualAddress && rva < section.VirtualAddress + section.SizeOfRawData)
+					return section;
+			}
+
+			return null;
+		}
+
+		public ImageDebugDirectory GetDebugHeader (out byte [] header)
+		{
+			var section = GetSectionAtVirtualAddress (Debug.VirtualAddress);
+			var buffer = new ByteBuffer (section.Data);
+			buffer.position = (int) (Debug.VirtualAddress - section.VirtualAddress);
+
+			var directory = new ImageDebugDirectory {
+				Characteristics = buffer.ReadInt32 (),
+				TimeDateStamp = buffer.ReadInt32 (),
+				MajorVersion = buffer.ReadInt16 (),
+				MinorVersion = buffer.ReadInt16 (),
+				Type = buffer.ReadInt32 (),
+				SizeOfData = buffer.ReadInt32 (),
+				AddressOfRawData = buffer.ReadInt32 (),
+				PointerToRawData = buffer.ReadInt32 (),
+			};
+
+			buffer.position = (int) (directory.PointerToRawData - section.PointerToRawData);
+
+			header = new byte [directory.SizeOfData];
+			Buffer.BlockCopy (buffer.buffer, buffer.position, header, 0, header.Length);
+
+			return directory;
+		}
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.PE/ImageReader.cs b/mcs/class/Mono.Cecil/Mono.Cecil.PE/ImageReader.cs
new file mode 100644
index 0000000..a228c1f
--- /dev/null
+++ b/mcs/class/Mono.Cecil/Mono.Cecil.PE/ImageReader.cs
@@ -0,0 +1,678 @@
+//
+// ImageReader.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.IO;
+
+using Mono.Cecil.Metadata;
+
+using RVA = System.UInt32;
+
+namespace Mono.Cecil.PE {
+
+	sealed class ImageReader : BinaryStreamReader {
+
+		readonly Image image;
+
+		DataDirectory cli;
+		DataDirectory metadata;
+
+		public ImageReader (Stream stream)
+			: base (stream)
+		{
+			image = new Image ();
+
+			image.FileName = stream.GetFullyQualifiedName ();
+		}
+
+		void MoveTo (DataDirectory directory)
+		{
+			BaseStream.Position = image.ResolveVirtualAddress (directory.VirtualAddress);
+		}
+
+		void MoveTo (uint position)
+		{
+			BaseStream.Position = position;
+		}
+
+		void ReadImage ()
+		{
+			if (BaseStream.Length < 128)
+				throw new BadImageFormatException ();
+
+			// - DOSHeader
+
+			// PE					2
+			// Start				58
+			// Lfanew				4
+			// End					64
+
+			if (ReadUInt16 () != 0x5a4d)
+				throw new BadImageFormatException ();
+
+			Advance (58);
+
+			MoveTo (ReadUInt32 ());
+
+			if (ReadUInt32 () != 0x00004550)
+				throw new BadImageFormatException ();
+
+			// - PEFileHeader
+
+			// Machine				2
+			image.Architecture = ReadArchitecture ();
+
+			// NumberOfSections		2
+			ushort sections = ReadUInt16 ();
+
+			// TimeDateStamp		4
+			// PointerToSymbolTable	4
+			// NumberOfSymbols		4
+			// OptionalHeaderSize	2
+			Advance (14);
+
+			// Characteristics		2
+			ushort characteristics = ReadUInt16 ();
+
+			ushort subsystem;
+			ReadOptionalHeaders (out subsystem);
+			ReadSections (sections);
+			ReadCLIHeader ();
+			ReadMetadata ();
+
+			image.Kind = GetModuleKind (characteristics, subsystem);
+		}
+
+		TargetArchitecture ReadArchitecture ()
+		{
+			var machine = ReadUInt16 ();
+			switch (machine) {
+			case 0x014c:
+				return TargetArchitecture.I386;
+			case 0x8664:
+				return TargetArchitecture.AMD64;
+			case 0x0200:
+				return TargetArchitecture.IA64;
+			}
+
+			throw new NotSupportedException ();
+		}
+
+		static ModuleKind GetModuleKind (ushort characteristics, ushort subsystem)
+		{
+			if ((characteristics & 0x2000) != 0) // ImageCharacteristics.Dll
+				return ModuleKind.Dll;
+
+			if (subsystem == 0x2 || subsystem == 0x9) // SubSystem.WindowsGui || SubSystem.WindowsCeGui
+				return ModuleKind.Windows;
+
+			return ModuleKind.Console;
+		}
+
+		void ReadOptionalHeaders (out ushort subsystem)
+		{
+			// - PEOptionalHeader
+			//   - StandardFieldsHeader
+
+			// Magic				2
+			bool pe64 = ReadUInt16 () == 0x20b;
+
+			//						pe32 || pe64
+
+			// LMajor				1
+			// LMinor				1
+			// CodeSize				4
+			// InitializedDataSize	4
+			// UninitializedDataSize4
+			// EntryPointRVA		4
+			// BaseOfCode			4
+			// BaseOfData			4 || 0
+
+			//   - NTSpecificFieldsHeader
+
+			// ImageBase			4 || 8
+			// SectionAlignment		4
+			// FileAlignement		4
+			// OSMajor				2
+			// OSMinor				2
+			// UserMajor			2
+			// UserMinor			2
+			// SubSysMajor			2
+			// SubSysMinor			2
+			// Reserved				4
+			// ImageSize			4
+			// HeaderSize			4
+			// FileChecksum			4
+			Advance (66);
+
+			// SubSystem			2
+			subsystem = ReadUInt16 ();
+
+			// DLLFlags				2
+			// StackReserveSize		4 || 8
+			// StackCommitSize		4 || 8
+			// HeapReserveSize		4 || 8
+			// HeapCommitSize		4 || 8
+			// LoaderFlags			4
+			// NumberOfDataDir		4
+
+			//   - DataDirectoriesHeader
+
+			// ExportTable			8
+			// ImportTable			8
+			// ResourceTable		8
+			// ExceptionTable		8
+			// CertificateTable		8
+			// BaseRelocationTable	8
+
+			Advance (pe64 ? 90 : 74);
+
+			// Debug				8
+			image.Debug = ReadDataDirectory ();
+
+			// Copyright			8
+			// GlobalPtr			8
+			// TLSTable				8
+			// LoadConfigTable		8
+			// BoundImport			8
+			// IAT					8
+			// DelayImportDescriptor8
+			Advance (56);
+
+			// CLIHeader			8
+			cli = ReadDataDirectory ();
+
+			if (cli.IsZero)
+				throw new BadImageFormatException ();
+
+			// Reserved				8
+			Advance (8);
+		}
+
+		string ReadAlignedString (int length)
+		{
+			int read = 0;
+			var buffer = new char [length];
+			while (read < length) {
+				var current = ReadByte ();
+				if (current == 0)
+					break;
+
+				buffer [read++] = (char) current;
+			}
+
+			Advance (-1 + ((read + 4) & ~3) - read);
+
+			return new string (buffer, 0, read);
+		}
+
+		string ReadZeroTerminatedString (int length)
+		{
+			int read = 0;
+			var buffer = new char [length];
+			var bytes = ReadBytes (length);
+			while (read < length) {
+				var current = bytes [read];
+				if (current == 0)
+					break;
+
+				buffer [read++] = (char) current;
+			}
+
+			return new string (buffer, 0, read);
+		}
+
+		void ReadSections (ushort count)
+		{
+			var sections = new Section [count];
+
+			for (int i = 0; i < count; i++) {
+				var section = new Section ();
+
+				// Name
+				section.Name = ReadZeroTerminatedString (8);
+
+				// VirtualSize		4
+				Advance (4);
+
+				// VirtualAddress	4
+				section.VirtualAddress = ReadUInt32 ();
+				// SizeOfRawData	4
+				section.SizeOfRawData = ReadUInt32 ();
+				// PointerToRawData	4
+				section.PointerToRawData = ReadUInt32 ();
+
+				// PointerToRelocations		4
+				// PointerToLineNumbers		4
+				// NumberOfRelocations		2
+				// NumberOfLineNumbers		2
+				// Characteristics			4
+				Advance (16);
+
+				sections [i] = section;
+
+				if (section.Name == ".reloc")
+					continue;
+
+				ReadSectionData (section);
+			}
+
+			image.Sections = sections;
+		}
+
+		void ReadSectionData (Section section)
+		{
+			var position = BaseStream.Position;
+
+			MoveTo (section.PointerToRawData);
+
+			var length = (int) section.SizeOfRawData;
+			var data = new byte [length];
+			int offset = 0, read;
+
+			while ((read = Read (data, offset, length - offset)) > 0)
+				offset += read;
+
+			section.Data = data;
+
+			BaseStream.Position = position;
+		}
+
+		void ReadCLIHeader ()
+		{
+			MoveTo (cli);
+
+			// - CLIHeader
+
+			// Cb						4
+			// MajorRuntimeVersion		2
+			// MinorRuntimeVersion		2
+			Advance (8);
+
+			// Metadata					8
+			metadata = ReadDataDirectory ();
+			// Flags					4
+			image.Attributes = (ModuleAttributes) ReadUInt32 ();
+			// EntryPointToken			4
+			image.EntryPointToken = ReadUInt32 ();
+			// Resources				8
+			image.Resources = ReadDataDirectory ();
+			// StrongNameSignature		8
+			// CodeManagerTable			8
+			// VTableFixups				8
+			// ExportAddressTableJumps	8
+			// ManagedNativeHeader		8
+		}
+
+		void ReadMetadata ()
+		{
+			MoveTo (metadata);
+
+			if (ReadUInt32 () != 0x424a5342)
+				throw new BadImageFormatException ();
+
+			// MajorVersion			2
+			// MinorVersion			2
+			// Reserved				4
+			Advance (8);
+
+			var version = ReadZeroTerminatedString (ReadInt32 ());
+			image.Runtime = version.ParseRuntime ();
+
+			// Flags		2
+			Advance (2);
+
+			var streams = ReadUInt16 ();
+
+			var section = image.GetSectionAtVirtualAddress (metadata.VirtualAddress);
+			if (section == null)
+				throw new BadImageFormatException ();
+
+			image.MetadataSection = section;
+
+			for (int i = 0; i < streams; i++)
+				ReadMetadataStream (section);
+
+			if (image.TableHeap != null)
+				ReadTableHeap ();
+		}
+
+		void ReadMetadataStream (Section section)
+		{
+			// Offset		4
+			uint start = metadata.VirtualAddress - section.VirtualAddress + ReadUInt32 (); // relative to the section start
+
+			// Size			4
+			uint size = ReadUInt32 ();
+
+			var name = ReadAlignedString (16);
+			switch (name) {
+			case "#~":
+			case "#-":
+				image.TableHeap = new TableHeap (section, start, size);
+				break;
+			case "#Strings":
+				image.StringHeap = new StringHeap (section, start, size);
+				break;
+			case "#Blob":
+				image.BlobHeap = new BlobHeap (section, start, size);
+				break;
+			case "#GUID":
+				image.GuidHeap = new GuidHeap (section, start, size);
+				break;
+			case "#US":
+				image.UserStringHeap = new UserStringHeap (section, start, size);
+				break;
+			}
+		}
+
+		void ReadTableHeap ()
+		{
+			var heap = image.TableHeap;
+
+			uint start = heap.Section.PointerToRawData;
+
+			MoveTo (heap.Offset + start);
+
+			// Reserved			4
+			// MajorVersion		1
+			// MinorVersion		1
+			Advance (6);
+
+			// HeapSizes		1
+			var sizes = ReadByte ();
+
+			// Reserved2		1
+			Advance (1);
+
+			// Valid			8
+			heap.Valid = ReadInt64 ();
+
+			// Sorted			8
+			heap.Sorted = ReadInt64 ();
+
+			for (int i = 0; i < TableHeap.TableIdentifiers.Length; i++) {
+				var table = TableHeap.TableIdentifiers [i];
+				if (!heap.HasTable (table))
+					continue;
+
+				heap.Tables [(int) table].Length = ReadUInt32 ();
+			}
+
+			SetIndexSize (image.StringHeap, sizes, 0x1);
+			SetIndexSize (image.GuidHeap, sizes, 0x2);
+			SetIndexSize (image.BlobHeap, sizes, 0x4);
+
+			ComputeTableInformations ();
+		}
+
+		static void SetIndexSize (Heap heap, uint sizes, byte flag)
+		{
+			if (heap == null)
+				return;
+
+			heap.IndexSize = (sizes & flag) > 0 ? 4 : 2;
+		}
+
+		int GetTableIndexSize (Table table)
+		{
+			return image.GetTableIndexSize (table);
+		}
+
+		int GetCodedIndexSize (CodedIndex index)
+		{
+			return image.GetCodedIndexSize (index);
+		}
+
+		void ComputeTableInformations ()
+		{
+			uint offset = (uint) BaseStream.Position - image.MetadataSection.PointerToRawData; // header
+
+			int stridx_size = image.StringHeap.IndexSize;
+			int blobidx_size = image.BlobHeap != null ? image.BlobHeap.IndexSize : 2;
+
+			var heap = image.TableHeap;
+			var tables = heap.Tables;
+
+			for (int i = 0; i < TableHeap.TableIdentifiers.Length; i++) {
+				var table = TableHeap.TableIdentifiers [i];
+				if (!heap.HasTable (table))
+					continue;
+
+				int size;
+				switch (table) {
+				case Table.Module:
+					size = 2	// Generation
+						+ stridx_size	// Name
+						+ (image.GuidHeap.IndexSize * 3);	// Mvid, EncId, EncBaseId
+					break;
+				case Table.TypeRef:
+					size = GetCodedIndexSize (CodedIndex.ResolutionScope)	// ResolutionScope
+						+ (stridx_size * 2);	// Name, Namespace
+					break;
+				case Table.TypeDef:
+					size = 4	// Flags
+						+ (stridx_size * 2)	// Name, Namespace
+						+ GetCodedIndexSize (CodedIndex.TypeDefOrRef)	// BaseType
+						+ GetTableIndexSize (Table.Field)	// FieldList
+						+ GetTableIndexSize (Table.Method);	// MethodList
+					break;
+				case Table.FieldPtr:
+					size = GetTableIndexSize (Table.Field);	// Field
+					break;
+				case Table.Field:
+					size = 2	// Flags
+						+ stridx_size	// Name
+						+ blobidx_size;	// Signature
+					break;
+				case Table.MethodPtr:
+					size = GetTableIndexSize (Table.Method);	// Method
+					break;
+				case Table.Method:
+					size = 8	// Rva 4, ImplFlags 2, Flags 2
+						+ stridx_size	// Name
+						+ blobidx_size	// Signature
+						+ GetTableIndexSize (Table.Param); // ParamList
+					break;
+				case Table.ParamPtr:
+					size = GetTableIndexSize (Table.Param); // Param
+					break;
+				case Table.Param:
+					size = 4	// Flags 2, Sequence 2
+						+ stridx_size;	// Name
+					break;
+				case Table.InterfaceImpl:
+					size = GetTableIndexSize (Table.TypeDef)	// Class
+						+ GetCodedIndexSize (CodedIndex.TypeDefOrRef);	// Interface
+					break;
+				case Table.MemberRef:
+					size = GetCodedIndexSize (CodedIndex.MemberRefParent)	// Class
+						+ stridx_size	// Name
+						+ blobidx_size;	// Signature
+					break;
+				case Table.Constant:
+					size = 2	// Type
+						+ GetCodedIndexSize (CodedIndex.HasConstant)	// Parent
+						+ blobidx_size;	// Value
+					break;
+				case Table.CustomAttribute:
+					size = GetCodedIndexSize (CodedIndex.HasCustomAttribute)	// Parent
+						+ GetCodedIndexSize (CodedIndex.CustomAttributeType)	// Type
+						+ blobidx_size;	// Value
+					break;
+				case Table.FieldMarshal:
+					size = GetCodedIndexSize (CodedIndex.HasFieldMarshal)	// Parent
+						+ blobidx_size;	// NativeType
+					break;
+				case Table.DeclSecurity:
+					size = 2	// Action
+						+ GetCodedIndexSize (CodedIndex.HasDeclSecurity)	// Parent
+						+ blobidx_size;	// PermissionSet
+					break;
+				case Table.ClassLayout:
+					size = 6	// PackingSize 2, ClassSize 4
+						+ GetTableIndexSize (Table.TypeDef);	// Parent
+					break;
+				case Table.FieldLayout:
+					size = 4	// Offset
+						+ GetTableIndexSize (Table.Field);	// Field
+					break;
+				case Table.StandAloneSig:
+					size = blobidx_size;	// Signature
+					break;
+				case Table.EventMap:
+					size = GetTableIndexSize (Table.TypeDef)	// Parent
+						+ GetTableIndexSize (Table.Event);	// EventList
+					break;
+				case Table.EventPtr:
+					size = GetTableIndexSize (Table.Event);	// Event
+					break;
+				case Table.Event:
+					size = 2	// Flags
+						+ stridx_size // Name
+						+ GetCodedIndexSize (CodedIndex.TypeDefOrRef);	// EventType
+					break;
+				case Table.PropertyMap:
+					size = GetTableIndexSize (Table.TypeDef)	// Parent
+						+ GetTableIndexSize (Table.Property);	// PropertyList
+					break;
+				case Table.PropertyPtr:
+					size = GetTableIndexSize (Table.Property);	// Property
+					break;
+				case Table.Property:
+					size = 2	// Flags
+						+ stridx_size	// Name
+						+ blobidx_size;	// Type
+					break;
+				case Table.MethodSemantics:
+					size = 2	// Semantics
+						+ GetTableIndexSize (Table.Method)	// Method
+						+ GetCodedIndexSize (CodedIndex.HasSemantics);	// Association
+					break;
+				case Table.MethodImpl:
+					size = GetTableIndexSize (Table.TypeDef)	// Class
+						+ GetCodedIndexSize (CodedIndex.MethodDefOrRef)	// MethodBody
+						+ GetCodedIndexSize (CodedIndex.MethodDefOrRef);	// MethodDeclaration
+					break;
+				case Table.ModuleRef:
+					size = stridx_size;	// Name
+					break;
+				case Table.TypeSpec:
+					size = blobidx_size;	// Signature
+					break;
+				case Table.ImplMap:
+					size = 2	// MappingFlags
+						+ GetCodedIndexSize (CodedIndex.MemberForwarded)	// MemberForwarded
+						+ stridx_size	// ImportName
+						+ GetTableIndexSize (Table.ModuleRef);	// ImportScope
+					break;
+				case Table.FieldRVA:
+					size = 4	// RVA
+						+ GetTableIndexSize (Table.Field);	// Field
+					break;
+				case Table.Assembly:
+					size = 16 // HashAlgId 4, Version 4 * 2, Flags 4
+						+ blobidx_size	// PublicKey
+						+ (stridx_size * 2);	// Name, Culture
+					break;
+				case Table.AssemblyProcessor:
+					size = 4;	// Processor
+					break;
+				case Table.AssemblyOS:
+					size = 12;	// Platform 4, Version 2 * 4
+					break;
+				case Table.AssemblyRef:
+					size = 12	// Version 2 * 4 + Flags 4
+						+ (blobidx_size * 2)	// PublicKeyOrToken, HashValue
+						+ (stridx_size * 2);	// Name, Culture
+					break;
+				case Table.AssemblyRefProcessor:
+					size = 4	// Processor
+						+ GetTableIndexSize (Table.AssemblyRef);	// AssemblyRef
+					break;
+				case Table.AssemblyRefOS:
+					size = 12	// Platform 4, Version 2 * 4
+						+ GetTableIndexSize (Table.AssemblyRef);	// AssemblyRef
+					break;
+				case Table.File:
+					size = 4	// Flags
+						+ stridx_size	// Name
+						+ blobidx_size;	// HashValue
+					break;
+				case Table.ExportedType:
+					size = 8	// Flags 4, TypeDefId 4
+						+ (stridx_size * 2)	// Name, Namespace
+						+ GetCodedIndexSize (CodedIndex.Implementation);	// Implementation
+					break;
+				case Table.ManifestResource:
+					size = 8	// Offset, Flags
+						+ stridx_size	// Name
+						+ GetCodedIndexSize (CodedIndex.Implementation);	// Implementation
+					break;
+				case Table.NestedClass:
+					size = GetTableIndexSize (Table.TypeDef)	// NestedClass
+						+ GetTableIndexSize (Table.TypeDef);	// EnclosingClass
+					break;
+				case Table.GenericParam:
+					size = 4	// Number, Flags
+						+ GetCodedIndexSize (CodedIndex.TypeOrMethodDef)	// Owner
+						+ stridx_size;	// Name
+					break;
+				case Table.MethodSpec:
+					size = GetCodedIndexSize (CodedIndex.MethodDefOrRef)	// Method
+						+ blobidx_size;	// Instantiation
+					break;
+				case Table.GenericParamConstraint:
+					size = GetTableIndexSize (Table.GenericParam)	// Owner
+						+ GetCodedIndexSize (CodedIndex.TypeDefOrRef);	// Constraint
+					break;
+				default:
+					throw new NotSupportedException ();
+				}
+
+				int index = (int) table;
+
+				tables [index].RowSize = (uint) size;
+				tables [index].Offset = offset;
+
+				offset += (uint) size * tables [index].Length;
+			}
+		}
+
+		public static Image ReadImageFrom (Stream stream)
+		{
+			try {
+				var reader = new ImageReader (stream);
+				reader.ReadImage ();
+				return reader.image;
+			} catch (EndOfStreamException e) {
+				throw new BadImageFormatException (stream.GetFullyQualifiedName (), e);
+			}
+		}
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.PE/ImageWriter.cs b/mcs/class/Mono.Cecil/Mono.Cecil.PE/ImageWriter.cs
new file mode 100644
index 0000000..939de6b
--- /dev/null
+++ b/mcs/class/Mono.Cecil/Mono.Cecil.PE/ImageWriter.cs
@@ -0,0 +1,820 @@
+//
+// ImageWriter.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.IO;
+
+#if !READ_ONLY
+
+using Mono.Cecil.Cil;
+using Mono.Cecil.Metadata;
+
+using RVA = System.UInt32;
+
+namespace Mono.Cecil.PE {
+
+	sealed class ImageWriter : BinaryStreamWriter {
+
+		readonly ModuleDefinition module;
+		readonly MetadataBuilder metadata;
+		readonly TextMap text_map;
+
+		ImageDebugDirectory debug_directory;
+		byte [] debug_data;
+
+		ByteBuffer win32_resources;
+
+		const uint pe_header_size = 0x178u;
+		const uint section_header_size = 0x28u;
+		const uint file_alignment = 0x200;
+		const uint section_alignment = 0x2000;
+		const ulong image_base = 0x00400000;
+
+		internal const RVA text_rva = 0x2000;
+
+		readonly bool pe64;
+		readonly uint time_stamp;
+
+		internal Section text;
+		internal Section rsrc;
+		internal Section reloc;
+
+		ushort sections;
+
+		ImageWriter (ModuleDefinition module, MetadataBuilder metadata, Stream stream)
+			: base (stream)
+		{
+			this.module = module;
+			this.metadata = metadata;
+			this.GetDebugHeader ();
+			this.GetWin32Resources ();
+			this.text_map = BuildTextMap ();
+			this.sections = 2; // text + reloc
+			this.pe64 = module.Architecture != TargetArchitecture.I386;
+			this.time_stamp = (uint) DateTime.UtcNow.Subtract (new DateTime (1970, 1, 1)).TotalSeconds;
+		}
+
+		void GetDebugHeader ()
+		{
+			var symbol_writer = metadata.symbol_writer;
+			if (symbol_writer == null)
+				return;
+
+			if (!symbol_writer.GetDebugHeader (out debug_directory, out debug_data))
+				debug_data = Empty<byte>.Array;
+		}
+
+		void GetWin32Resources ()
+		{
+			var rsrc = GetImageResourceSection ();
+			if (rsrc == null)
+				return;
+
+			var raw_resources = new byte [rsrc.Data.Length];
+			Buffer.BlockCopy (rsrc.Data, 0, raw_resources, 0, rsrc.Data.Length);
+			win32_resources = new ByteBuffer (raw_resources);
+		}
+
+		Section GetImageResourceSection ()
+		{
+			if (!module.HasImage)
+				return null;
+
+			const string rsrc_section = ".rsrc";
+
+			return module.Image.GetSection (rsrc_section);
+		}
+
+		public static ImageWriter CreateWriter (ModuleDefinition module, MetadataBuilder metadata, Stream stream)
+		{
+			var writer = new ImageWriter (module, metadata, stream);
+			writer.BuildSections ();
+			return writer;
+		}
+
+		void BuildSections ()
+		{
+			var has_win32_resources = win32_resources != null;
+			if (has_win32_resources)
+				sections++;
+
+			text = CreateSection (".text", text_map.GetLength (), null);
+			var previous = text;
+
+			if (has_win32_resources) {
+				rsrc = CreateSection (".rsrc", (uint) win32_resources.length, previous);
+
+				PatchWin32Resources (win32_resources);
+				previous = rsrc;
+			}
+
+			reloc = CreateSection (".reloc", 12u, previous);
+		}
+
+		Section CreateSection (string name, uint size, Section previous)
+		{
+			return new Section {
+				Name = name,
+				VirtualAddress = previous != null
+					? previous.VirtualAddress + Align (previous.VirtualSize, section_alignment)
+					: text_rva,
+				VirtualSize = size,
+				PointerToRawData = previous != null
+					? previous.PointerToRawData + previous.SizeOfRawData
+					: Align (GetHeaderSize (), file_alignment),
+				SizeOfRawData = Align (size, file_alignment)
+			};
+		}
+
+		static uint Align (uint value, uint align)
+		{
+			align--;
+			return (value + align) & ~align;
+		}
+
+		void WriteDOSHeader ()
+		{
+			Write (new byte [] {
+				// dos header start
+				0x4d, 0x5a, 0x90, 0x00, 0x03, 0x00, 0x00,
+				0x00, 0x04, 0x00, 0x00, 0x00, 0xff, 0xff,
+				0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x00,
+				0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
+				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+				0x00, 0x00, 0x00, 0x00,
+				// lfanew
+				0x80, 0x00, 0x00, 0x00,
+				// dos header end
+				0x0e, 0x1f, 0xba, 0x0e, 0x00, 0xb4, 0x09,
+				0xcd, 0x21, 0xb8, 0x01, 0x4c, 0xcd, 0x21,
+				0x54, 0x68, 0x69, 0x73, 0x20, 0x70, 0x72,
+				0x6f, 0x67, 0x72, 0x61, 0x6d, 0x20, 0x63,
+				0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x20, 0x62,
+				0x65, 0x20, 0x72, 0x75, 0x6e, 0x20, 0x69,
+				0x6e, 0x20, 0x44, 0x4f, 0x53, 0x20, 0x6d,
+				0x6f, 0x64, 0x65, 0x2e, 0x0d, 0x0d, 0x0a,
+				0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+				0x00
+			});
+		}
+
+		void WritePEFileHeader ()
+		{
+			WriteUInt32 (0x00004550);		// Magic
+			WriteUInt16 (GetMachine ());	// Machine
+			WriteUInt16 (sections);			// NumberOfSections
+			WriteUInt32 (time_stamp);
+			WriteUInt32 (0);	// PointerToSymbolTable
+			WriteUInt32 (0);	// NumberOfSymbols
+			WriteUInt16 ((ushort) (!pe64 ? 0xe0 : 0xf0));	// SizeOfOptionalHeader
+
+			// ExecutableImage | (pe64 ? 32BitsMachine : LargeAddressAware)
+			var characteristics = (ushort) (0x0002 | (!pe64 ? 0x0100 : 0x0020));
+			if (module.Kind == ModuleKind.Dll || module.Kind == ModuleKind.NetModule)
+				characteristics |= 0x2000;
+			WriteUInt16 (characteristics);	// Characteristics
+		}
+
+		ushort GetMachine ()
+		{
+			switch (module.Architecture) {
+			case TargetArchitecture.I386:
+				return 0x014c;
+			case TargetArchitecture.AMD64:
+				return 0x8664;
+			case TargetArchitecture.IA64:
+				return 0x0200;
+			}
+
+			throw new NotSupportedException ();
+		}
+
+		void WriteOptionalHeaders ()
+		{
+			WriteUInt16 ((ushort) (!pe64 ? 0x10b : 0x20b));	// Magic
+			WriteByte (8);	// LMajor
+			WriteByte (0);	// LMinor
+			WriteUInt32 (text.SizeOfRawData);	// CodeSize
+			WriteUInt32 (reloc.SizeOfRawData
+				+ (rsrc != null ? rsrc.SizeOfRawData : 0));	// InitializedDataSize
+			WriteUInt32 (0);	// UninitializedDataSize
+
+			var entry_point_rva = text_map.GetRVA (TextSegment.StartupStub);
+			if (module.Architecture == TargetArchitecture.IA64)
+				entry_point_rva += 0x20;
+			WriteUInt32 (entry_point_rva); // EntryPointRVA
+			WriteUInt32 (text_rva);	// BaseOfCode
+
+			if (!pe64) {
+				WriteUInt32 (0);	// BaseOfData
+				WriteUInt32 ((uint) image_base);	// ImageBase
+			} else {
+				WriteUInt64 (image_base);	// ImageBase
+			}
+
+			WriteUInt32 (section_alignment);	// SectionAlignment
+			WriteUInt32 (file_alignment);		// FileAlignment
+
+			WriteUInt16 (4);	// OSMajor
+			WriteUInt16 (0);	// OSMinor
+			WriteUInt16 (0);	// UserMajor
+			WriteUInt16 (0);	// UserMinor
+			WriteUInt16 (4);	// SubSysMajor
+			WriteUInt16 (0);	// SubSysMinor
+			WriteUInt32 (0);	// Reserved
+
+			WriteUInt32 (reloc.VirtualAddress + Align (reloc.VirtualSize, section_alignment));	// ImageSize
+			WriteUInt32 (text.PointerToRawData);	// HeaderSize
+
+			WriteUInt32 (0);	// Checksum
+			WriteUInt16 (GetSubSystem ());	// SubSystem
+			WriteUInt16 (0x8540);	// DLLFlags
+
+			const ulong stack_reserve = 0x100000;
+			const ulong stack_commit = 0x1000;
+			const ulong heap_reserve = 0x100000;
+			const ulong heap_commit = 0x1000;
+
+			if (!pe64) {
+				WriteUInt32 ((uint) stack_reserve);
+				WriteUInt32 ((uint) stack_commit);
+				WriteUInt32 ((uint) heap_reserve);
+				WriteUInt32 ((uint) heap_commit);
+			} else {
+				WriteUInt64 (stack_reserve);
+				WriteUInt64 (stack_commit);
+				WriteUInt64 (heap_reserve);
+				WriteUInt64 (heap_commit);
+			}
+
+			WriteUInt32 (0);	// LoaderFlags
+			WriteUInt32 (16);	// NumberOfDataDir
+
+			WriteZeroDataDirectory ();	// ExportTable
+			WriteDataDirectory (text_map.GetDataDirectory (TextSegment.ImportDirectory));	// ImportTable
+			if (rsrc != null) {							// ResourceTable
+				WriteUInt32 (rsrc.VirtualAddress);
+				WriteUInt32 (rsrc.VirtualSize);
+			} else
+				WriteZeroDataDirectory ();
+
+			WriteZeroDataDirectory ();	// ExceptionTable
+			WriteZeroDataDirectory ();	// CertificateTable
+			WriteUInt32 (reloc.VirtualAddress);			// BaseRelocationTable
+			WriteUInt32 (reloc.VirtualSize);
+
+			if (text_map.GetLength (TextSegment.DebugDirectory) > 0) {
+				WriteUInt32 (text_map.GetRVA (TextSegment.DebugDirectory));
+				WriteUInt32 (28u);
+			} else
+				WriteZeroDataDirectory ();
+
+			WriteZeroDataDirectory ();	// Copyright
+			WriteZeroDataDirectory ();	// GlobalPtr
+			WriteZeroDataDirectory ();	// TLSTable
+			WriteZeroDataDirectory ();	// LoadConfigTable
+			WriteZeroDataDirectory ();	// BoundImport
+			WriteDataDirectory (text_map.GetDataDirectory (TextSegment.ImportAddressTable));	// IAT
+			WriteZeroDataDirectory ();	// DelayImportDesc
+			WriteDataDirectory (text_map.GetDataDirectory (TextSegment.CLIHeader));	// CLIHeader
+			WriteZeroDataDirectory ();	// Reserved
+		}
+
+		void WriteZeroDataDirectory ()
+		{
+			WriteUInt32 (0);
+			WriteUInt32 (0);
+		}
+
+		ushort GetSubSystem ()
+		{
+			switch (module.Kind) {
+			case ModuleKind.Console:
+			case ModuleKind.Dll:
+			case ModuleKind.NetModule:
+				return 0x3;
+			case ModuleKind.Windows:
+				return 0x2;
+			default:
+				throw new ArgumentOutOfRangeException ();
+			}
+		}
+
+		void WriteSectionHeaders ()
+		{
+			WriteSection (text, 0x60000020);
+
+			if (rsrc != null)
+				WriteSection (rsrc, 0x40000040);
+
+			WriteSection (reloc, 0x42000040);
+		}
+
+		void WriteSection (Section section, uint characteristics)
+		{
+			var name = new byte [8];
+			var sect_name = section.Name;
+			for (int i = 0; i < sect_name.Length; i++)
+				name [i] = (byte) sect_name [i];
+
+			WriteBytes (name);
+			WriteUInt32 (section.VirtualSize);
+			WriteUInt32 (section.VirtualAddress);
+			WriteUInt32 (section.SizeOfRawData);
+			WriteUInt32 (section.PointerToRawData);
+			WriteUInt32 (0);	// PointerToRelocations
+			WriteUInt32 (0);	// PointerToLineNumbers
+			WriteUInt16 (0);	// NumberOfRelocations
+			WriteUInt16 (0);	// NumberOfLineNumbers
+			WriteUInt32 (characteristics);
+		}
+
+		void MoveTo (uint pointer)
+		{
+			BaseStream.Seek (pointer, SeekOrigin.Begin);
+		}
+
+		void MoveToRVA (Section section, RVA rva)
+		{
+			BaseStream.Seek (section.PointerToRawData + rva - section.VirtualAddress, SeekOrigin.Begin);
+		}
+
+		void MoveToRVA (TextSegment segment)
+		{
+			MoveToRVA (text, text_map.GetRVA (segment));
+		}
+
+		void WriteRVA (RVA rva)
+		{
+			if (!pe64)
+				WriteUInt32 (rva);
+			else
+				WriteUInt64 (rva);
+		}
+
+		void WriteText ()
+		{
+			MoveTo (text.PointerToRawData);
+
+			// ImportAddressTable
+
+			WriteRVA (text_map.GetRVA (TextSegment.ImportHintNameTable));
+			WriteRVA (0);
+
+			// CLIHeader
+
+			WriteUInt32 (0x48);
+			WriteUInt16 (2);
+			WriteUInt16 ((ushort) ((module.Runtime <= TargetRuntime.Net_1_1) ? 0 : 5));
+
+			WriteUInt32 (text_map.GetRVA (TextSegment.MetadataHeader));
+			WriteUInt32 (GetMetadataLength ());
+			WriteUInt32 ((uint) module.Attributes);
+			WriteUInt32 (metadata.entry_point.ToUInt32 ());
+			WriteDataDirectory (text_map.GetDataDirectory (TextSegment.Resources));
+			WriteDataDirectory (text_map.GetDataDirectory (TextSegment.StrongNameSignature));
+			WriteZeroDataDirectory ();	// CodeManagerTable
+			WriteZeroDataDirectory ();	// VTableFixups
+			WriteZeroDataDirectory ();	// ExportAddressTableJumps
+			WriteZeroDataDirectory ();	// ManagedNativeHeader
+
+			// Code
+
+			MoveToRVA (TextSegment.Code);
+			WriteBuffer (metadata.code);
+
+			// Resources
+
+			MoveToRVA (TextSegment.Resources);
+			WriteBuffer (metadata.resources);
+
+			// Data
+
+			if (metadata.data.length > 0) {
+				MoveToRVA (TextSegment.Data);
+				WriteBuffer (metadata.data);
+			}
+
+			// StrongNameSignature
+			// stays blank
+
+			// MetadataHeader
+
+			MoveToRVA (TextSegment.MetadataHeader);
+			WriteMetadataHeader ();
+
+			WriteMetadata ();
+
+			// DebugDirectory
+			if (text_map.GetLength (TextSegment.DebugDirectory) > 0) {
+				MoveToRVA (TextSegment.DebugDirectory);
+				WriteDebugDirectory ();
+			}
+
+			// ImportDirectory
+			MoveToRVA (TextSegment.ImportDirectory);
+			WriteImportDirectory ();
+
+			// StartupStub
+			MoveToRVA (TextSegment.StartupStub);
+			WriteStartupStub ();
+		}
+
+		uint GetMetadataLength ()
+		{
+			return text_map.GetRVA (TextSegment.DebugDirectory) - text_map.GetRVA (TextSegment.MetadataHeader);
+		}
+
+		void WriteMetadataHeader ()
+		{
+			WriteUInt32 (0x424a5342);	// Signature
+			WriteUInt16 (1);	// MajorVersion
+			WriteUInt16 (1);	// MinorVersion
+			WriteUInt32 (0);	// Reserved
+
+			var version = GetZeroTerminatedString (GetVersion ());
+			WriteUInt32 ((uint) version.Length);
+			WriteBytes (version);
+			WriteUInt16 (0);	// Flags
+			WriteUInt16 (GetStreamCount ());
+
+			uint offset = text_map.GetRVA (TextSegment.TableHeap) - text_map.GetRVA (TextSegment.MetadataHeader);
+
+			WriteStreamHeader (ref offset, TextSegment.TableHeap, "#~");
+			WriteStreamHeader (ref offset, TextSegment.StringHeap, "#Strings");
+			WriteStreamHeader (ref offset, TextSegment.UserStringHeap, "#US");
+			WriteStreamHeader (ref offset, TextSegment.GuidHeap, "#GUID");
+			WriteStreamHeader (ref offset, TextSegment.BlobHeap, "#Blob");
+		}
+
+		string GetVersion ()
+		{
+			switch (module.Runtime) {
+			case TargetRuntime.Net_1_0:
+				return "v1.0.3705";
+			case TargetRuntime.Net_1_1:
+				return "v1.1.4322";
+			case TargetRuntime.Net_2_0:
+				return "v2.0.50727";
+			case TargetRuntime.Net_4_0:
+			default:
+				return "v4.0.30319";
+			}
+		}
+
+		ushort GetStreamCount ()
+		{
+			return (ushort) (
+				1	// #~
+				+ 1	// #Strings
+				+ (metadata.user_string_heap.IsEmpty ? 0 : 1)	// #US
+				+ 1	// GUID
+				+ (metadata.blob_heap.IsEmpty ? 0 : 1));	// #Blob
+		}
+
+		void WriteStreamHeader (ref uint offset, TextSegment heap, string name)
+		{
+			var length = (uint) text_map.GetLength (heap);
+			if (length == 0)
+				return;
+
+			WriteUInt32 (offset);
+			WriteUInt32 (length);
+			WriteBytes (GetZeroTerminatedString (name));
+			offset += length;
+		}
+
+		static byte [] GetZeroTerminatedString (string @string)
+		{
+			return GetString (@string, (@string.Length + 1 + 3) & ~3);
+		}
+
+		static byte [] GetSimpleString (string @string)
+		{
+			return GetString (@string, @string.Length);
+		}
+
+		static byte [] GetString (string @string, int length)
+		{
+			var bytes = new byte [length];
+			for (int i = 0; i < @string.Length; i++)
+				bytes [i] = (byte) @string [i];
+
+			return bytes;
+		}
+
+		void WriteMetadata ()
+		{
+			WriteHeap (TextSegment.TableHeap, metadata.table_heap);
+			WriteHeap (TextSegment.StringHeap, metadata.string_heap);
+			WriteHeap (TextSegment.UserStringHeap, metadata.user_string_heap);
+			WriteGuidHeap ();
+			WriteHeap (TextSegment.BlobHeap, metadata.blob_heap);
+		}
+
+		void WriteHeap (TextSegment heap, HeapBuffer buffer)
+		{
+			if (buffer.IsEmpty)
+				return;
+
+			MoveToRVA (heap);
+			WriteBuffer (buffer);
+		}
+
+		void WriteGuidHeap ()
+		{
+			MoveToRVA (TextSegment.GuidHeap);
+			WriteBytes (module.Mvid.ToByteArray ());
+		}
+
+		void WriteDebugDirectory ()
+		{
+			WriteInt32 (debug_directory.Characteristics);
+			WriteUInt32 (time_stamp);
+			WriteInt16 (debug_directory.MajorVersion);
+			WriteInt16 (debug_directory.MinorVersion);
+			WriteInt32 (debug_directory.Type);
+			WriteInt32 (debug_directory.SizeOfData);
+			WriteInt32 (debug_directory.AddressOfRawData);
+			WriteInt32 ((int) BaseStream.Position + 4);
+
+			WriteBytes (debug_data);
+		}
+
+		void WriteImportDirectory ()
+		{
+			WriteUInt32 (text_map.GetRVA (TextSegment.ImportDirectory) + 40);	// ImportLookupTable
+			WriteUInt32 (0);	// DateTimeStamp
+			WriteUInt32 (0);	// ForwarderChain
+			WriteUInt32 (text_map.GetRVA (TextSegment.ImportHintNameTable) + 14);
+			WriteUInt32 (text_map.GetRVA (TextSegment.ImportAddressTable));
+			Advance (20);
+
+			// ImportLookupTable
+			WriteUInt32 (text_map.GetRVA (TextSegment.ImportHintNameTable));
+
+			// ImportHintNameTable
+			MoveToRVA (TextSegment.ImportHintNameTable);
+
+			WriteUInt16 (0);	// Hint
+			WriteBytes (GetRuntimeMain ());
+			WriteByte (0);
+			WriteBytes (GetSimpleString ("mscoree.dll"));
+			WriteUInt16 (0);
+		}
+
+		byte [] GetRuntimeMain ()
+		{
+			return module.Kind == ModuleKind.Dll || module.Kind == ModuleKind.NetModule
+				? GetSimpleString ("_CorDllMain")
+				: GetSimpleString ("_CorExeMain");
+		}
+
+		void WriteStartupStub ()
+		{
+			switch (module.Architecture) {
+			case TargetArchitecture.I386:
+				WriteUInt16 (0x25ff);
+				WriteUInt32 ((uint) image_base + text_map.GetRVA (TextSegment.ImportAddressTable));
+				return;
+			case TargetArchitecture.AMD64:
+				WriteUInt16 (0xa148);
+				WriteUInt32 ((uint) image_base + text_map.GetRVA (TextSegment.ImportAddressTable));
+				WriteUInt16 (0xe0ff);
+				return;
+			case TargetArchitecture.IA64:
+				WriteBytes (new byte [] {
+					0x0b, 0x48, 0x00, 0x02, 0x18, 0x10, 0xa0, 0x40, 0x24, 0x30, 0x28, 0x00, 0x00, 0x00, 0x04, 0x00,
+					0x10, 0x08, 0x00, 0x12, 0x18, 0x10, 0x60, 0x50, 0x04, 0x80, 0x03, 0x00, 0x60, 0x00, 0x80, 0x00
+				});
+				WriteUInt32 ((uint) image_base + text_map.GetRVA (TextSegment.StartupStub));
+				WriteUInt32 ((uint) image_base + text_rva);
+				return;
+			}
+		}
+
+		void WriteRsrc ()
+		{
+			MoveTo (rsrc.PointerToRawData);
+			WriteBuffer (win32_resources);
+		}
+
+		void WriteReloc ()
+		{
+			MoveTo (reloc.PointerToRawData);
+
+			var reloc_rva = text_map.GetRVA (TextSegment.StartupStub);
+			reloc_rva += module.Architecture == TargetArchitecture.IA64 ? 0x20u : 2;
+			var page_rva = reloc_rva & ~0xfffu;
+
+			WriteUInt32 (page_rva);	// PageRVA
+			WriteUInt32 (0x000c);	// Block Size
+
+			switch (module.Architecture) {
+			case TargetArchitecture.I386:
+				WriteUInt32 (0x3000 + reloc_rva - page_rva);
+				break;
+			case TargetArchitecture.AMD64:
+				WriteUInt32 (0xa000 + reloc_rva - page_rva);
+				break;
+			case TargetArchitecture.IA64:
+				WriteUInt16 ((ushort) (0xa000 + reloc_rva - page_rva));
+				WriteUInt16 ((ushort) (0xa000 + reloc_rva - page_rva + 8));
+				break;
+			}
+
+			WriteBytes (new byte [file_alignment - reloc.VirtualSize]);
+		}
+
+		public void WriteImage ()
+		{
+			WriteDOSHeader ();
+			WritePEFileHeader ();
+			WriteOptionalHeaders ();
+			WriteSectionHeaders ();
+			WriteText ();
+			if (rsrc != null)
+				WriteRsrc ();
+			WriteReloc ();
+		}
+
+		TextMap BuildTextMap ()
+		{
+			var map = metadata.text_map;
+
+			map.AddMap (TextSegment.Code, metadata.code.length, !pe64 ? 4 : 16);
+			map.AddMap (TextSegment.Resources, metadata.resources.length, 8);
+			map.AddMap (TextSegment.Data, metadata.data.length, 4);
+			if (metadata.data.length > 0)
+				metadata.table_heap.FixupData (map.GetRVA (TextSegment.Data));
+			map.AddMap (TextSegment.StrongNameSignature, GetStrongNameLength (), 4);
+
+			map.AddMap (TextSegment.MetadataHeader, GetMetadataHeaderLength ());
+			map.AddMap (TextSegment.TableHeap, metadata.table_heap.length, 4);
+			map.AddMap (TextSegment.StringHeap, metadata.string_heap.length, 4);
+			map.AddMap (TextSegment.UserStringHeap, metadata.user_string_heap.IsEmpty ? 0 : metadata.user_string_heap.length, 4);
+			map.AddMap (TextSegment.GuidHeap, 16);
+			map.AddMap (TextSegment.BlobHeap, metadata.blob_heap.IsEmpty ? 0 : metadata.blob_heap.length, 4);
+
+			int debug_dir_len = 0;
+			if (!debug_data.IsNullOrEmpty ()) {
+				const int debug_dir_header_len = 28;
+
+				debug_directory.AddressOfRawData = (int) map.GetNextRVA (TextSegment.BlobHeap) + debug_dir_header_len;
+				debug_dir_len = debug_data.Length + debug_dir_header_len;
+			}
+
+			map.AddMap (TextSegment.DebugDirectory, debug_dir_len, 4);
+
+			RVA import_dir_rva = map.GetNextRVA (TextSegment.DebugDirectory);
+			RVA import_hnt_rva = import_dir_rva + (!pe64 ? 48u : 52u);
+			import_hnt_rva = (import_hnt_rva + 15u) & ~15u;
+			uint import_dir_len = (import_hnt_rva - import_dir_rva) + 27u;
+
+			RVA startup_stub_rva = import_dir_rva + import_dir_len;
+			startup_stub_rva = module.Architecture == TargetArchitecture.IA64
+				? (startup_stub_rva + 15u) & ~15u
+				: 2 + ((startup_stub_rva + 3u) & ~3u);
+
+			map.AddMap (TextSegment.ImportDirectory, new Range (import_dir_rva, import_dir_len));
+			map.AddMap (TextSegment.ImportHintNameTable, new Range (import_hnt_rva, 0));
+			map.AddMap (TextSegment.StartupStub, new Range (startup_stub_rva, GetStartupStubLength ()));
+
+			return map;
+		}
+
+		uint GetStartupStubLength ()
+		{
+			switch (module.Architecture) {
+			case TargetArchitecture.I386:
+				return 6;
+			case TargetArchitecture.AMD64:
+				return 12;
+			case TargetArchitecture.IA64:
+				return 48;
+			default:
+				throw new InvalidOperationException ();
+			}
+		}
+
+		int GetMetadataHeaderLength ()
+		{
+			return
+				// MetadataHeader
+				40
+				// #~ header
+				+ 12
+				// #Strings header
+				+ 20
+				// #US header
+				+ (metadata.user_string_heap.IsEmpty ? 0 : 12)
+				// #GUID header
+				+ 16
+				// #Blob header
+				+ (metadata.blob_heap.IsEmpty ? 0 : 16);
+		}
+
+		int GetStrongNameLength ()
+		{
+			if ((module.Attributes & ModuleAttributes.StrongNameSigned) == 0)
+				return 0;
+
+			if (module.Assembly == null)
+				throw new InvalidOperationException ();
+
+			var public_key = module.Assembly.Name.PublicKey;
+
+			if (public_key != null) {
+				// in fx 2.0 the key may be from 384 to 16384 bits
+				// so we must calculate the signature size based on
+				// the size of the public key (minus the 32 byte header)
+				int size = public_key.Length;
+				if (size > 32)
+					return size - 32;
+				// note: size == 16 for the ECMA "key" which is replaced
+				// by the runtime with a 1024 bits key (128 bytes)
+			}
+
+			return 128; // default strongname signature size
+		}
+
+		public DataDirectory GetStrongNameSignatureDirectory ()
+		{
+			return text_map.GetDataDirectory (TextSegment.StrongNameSignature);
+		}
+
+		public uint GetHeaderSize ()
+		{
+			return pe_header_size + (sections * section_header_size);
+		}
+
+		void PatchWin32Resources (ByteBuffer resources)
+		{
+			PatchResourceDirectoryTable (resources);
+		}
+
+		void PatchResourceDirectoryTable (ByteBuffer resources)
+		{
+			resources.Advance (12);
+
+			var entries = resources.ReadUInt16 () + resources.ReadUInt16 ();
+
+			for (int i = 0; i < entries; i++)
+				PatchResourceDirectoryEntry (resources);
+		}
+
+		void PatchResourceDirectoryEntry (ByteBuffer resources)
+		{
+			resources.Advance (4);
+			var child = resources.ReadUInt32 ();
+
+			var position = resources.position;
+			resources.position = (int) child & 0x7fffffff;
+
+			if ((child & 0x80000000) != 0)
+				PatchResourceDirectoryTable (resources);
+			else
+				PatchResourceDataEntry (resources);
+
+			resources.position = position;
+		}
+
+		void PatchResourceDataEntry (ByteBuffer resources)
+		{
+			var old_rsrc = GetImageResourceSection ();
+			var rva = resources.ReadUInt32 ();
+			resources.position -= 4;
+			resources.WriteUInt32 (rva - old_rsrc.VirtualAddress + rsrc.VirtualAddress);
+		}
+	}
+}
+
+#endif
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.PE/Section.cs b/mcs/class/Mono.Cecil/Mono.Cecil.PE/Section.cs
new file mode 100644
index 0000000..54935f9
--- /dev/null
+++ b/mcs/class/Mono.Cecil/Mono.Cecil.PE/Section.cs
@@ -0,0 +1,43 @@
+//
+// Section.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+using RVA = System.UInt32;
+
+namespace Mono.Cecil.PE {
+
+	sealed class Section {
+		public string Name;
+		public RVA VirtualAddress;
+		public uint VirtualSize;
+		public uint SizeOfRawData;
+		public uint PointerToRawData;
+		public byte [] Data;
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.PE/TextMap.cs b/mcs/class/Mono.Cecil/Mono.Cecil.PE/TextMap.cs
new file mode 100644
index 0000000..daeda0c
--- /dev/null
+++ b/mcs/class/Mono.Cecil/Mono.Cecil.PE/TextMap.cs
@@ -0,0 +1,129 @@
+//
+// TextMap.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+#if !READ_ONLY
+
+using RVA = System.UInt32;
+
+namespace Mono.Cecil.PE {
+
+	enum TextSegment {
+		ImportAddressTable,
+		CLIHeader,
+		Code,
+		Resources,
+		Data,
+		StrongNameSignature,
+
+		// Metadata
+		MetadataHeader,
+		TableHeap,
+		StringHeap,
+		UserStringHeap,
+		GuidHeap,
+		BlobHeap,
+		// End Metadata
+
+		DebugDirectory,
+		ImportDirectory,
+		ImportHintNameTable,
+		StartupStub,
+	}
+
+	sealed class TextMap {
+
+		readonly Range [] map = new Range [16 /*Enum.GetValues (typeof (TextSegment)).Length*/];
+
+		public void AddMap (TextSegment segment, int length)
+		{
+			map [(int) segment] = new Range (GetStart (segment), (uint) length);
+		}
+
+		public void AddMap (TextSegment segment, int length, int align)
+		{
+			align--;
+
+			AddMap (segment, (length + align) & ~align);
+		}
+
+		public void AddMap (TextSegment segment, Range range)
+		{
+			map [(int) segment] = range;
+		}
+
+		public Range GetRange (TextSegment segment)
+		{
+			return map [(int) segment];
+		}
+
+		public DataDirectory GetDataDirectory (TextSegment segment)
+		{
+			var range = map [(int) segment];
+
+			return new DataDirectory (range.Length == 0 ? 0 : range.Start, range.Length);
+		}
+
+		public RVA GetRVA (TextSegment segment)
+		{
+			return map [(int) segment].Start;
+		}
+
+		public RVA GetNextRVA (TextSegment segment)
+		{
+			var i = (int) segment;
+			return map [i].Start + map [i].Length;
+		}
+
+		public int GetLength (TextSegment segment)
+		{
+			return (int) map [(int) segment].Length;
+		}
+
+		RVA GetStart (TextSegment segment)
+		{
+			var index = (int) segment;
+			return index == 0 ? ImageWriter.text_rva : ComputeStart (index);
+		}
+
+		RVA ComputeStart (int index)
+		{
+			index--;
+			return map [index].Start + map [index].Length;
+		}
+
+		public uint GetLength ()
+		{
+			var range = map [(int) TextSegment.StartupStub];
+			return range.Start - ImageWriter.text_rva + range.Length;
+		}
+	}
+}
+
+#endif
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/CustomAttrib.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/CustomAttrib.cs
deleted file mode 100644
index cb38a30..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/CustomAttrib.cs
+++ /dev/null
@@ -1,84 +0,0 @@
-//
-// CustomAttrib.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Signatures {
-
-	using Mono.Cecil.Metadata;
-
-	internal sealed class CustomAttrib {
-
-		public const ushort StdProlog = 0x0001;
-
-		public MethodReference Constructor;
-
-		public ushort Prolog;
-		public FixedArg [] FixedArgs;
-		public ushort NumNamed;
-		public NamedArg [] NamedArgs;
-		public bool Read;
-
-		public CustomAttrib (MethodReference ctor)
-		{
-			Constructor = ctor;
-		}
-
-		public struct FixedArg {
-
-			public bool SzArray;
-			public uint NumElem;
-			public Elem [] Elems;
-
-			internal static FixedArg [] Empty = new FixedArg [0];
-		}
-
-		public struct Elem {
-
-			public bool Simple;
-			public bool String;
-			public bool Type;
-			public bool BoxedValueType;
-
-			public ElementType FieldOrPropType;
-			public object Value;
-
-			public TypeReference ElemType;
-		}
-
-		public struct NamedArg {
-
-			public bool Field;
-			public bool Property;
-
-			public ElementType FieldOrPropType;
-			public string FieldOrPropName;
-			public FixedArg FixedArg;
-
-			internal static NamedArg [] Empty = new NamedArg [0];
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/CustomMod.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/CustomMod.cs
deleted file mode 100644
index 1b26e7f..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/CustomMod.cs
+++ /dev/null
@@ -1,50 +0,0 @@
-//
-// CustomMod.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Signatures {
-
-	using Mono.Cecil.Metadata;
-
-	internal sealed class CustomMod {
-
-		public static CustomMod [] EmptyCustomMod = new CustomMod [0];
-
-		public enum CMODType : byte {
-			None = 0x0,
-			OPT = (byte) ElementType.CModOpt,
-			REQD = (byte) ElementType.CModReqD
-		}
-
-		public CMODType CMOD;
-		public MetadataToken TypeDefOrRef;
-
-		public CustomMod ()
-		{
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/LocalVarSig.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/LocalVarSig.cs
deleted file mode 100644
index 071c90c..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/LocalVarSig.cs
+++ /dev/null
@@ -1,58 +0,0 @@
-//
-// LocalVarSig.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Signatures {
-
-	internal sealed class LocalVarSig : Signature {
-
-		public bool Local;
-		public int Count;
-		public LocalVariable [] LocalVariables;
-
-		public LocalVarSig () : base ()
-		{
-		}
-
-		public LocalVarSig (uint blobIndex) : base (blobIndex)
-		{
-		}
-
-		public override void Accept (ISignatureVisitor visitor)
-		{
-			visitor.VisitLocalVarSig (this);
-		}
-
-		public struct LocalVariable {
-
-			public CustomMod [] CustomMods;
-			public Constraint Constraint;
-			public bool ByRef;
-			public SigType Type;
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/MarshalSig.cs b/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/MarshalSig.cs
deleted file mode 100644
index 4b99c57..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/MarshalSig.cs
+++ /dev/null
@@ -1,93 +0,0 @@
-//
-// MarshalSig.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil.Signatures {
-
-	using System;
-
-	using Mono.Cecil;
-
-	internal sealed class MarshalSig {
-
-		public NativeType NativeInstrinsic;
-		public IMarshalSigSpec Spec;
-
-		public MarshalSig (NativeType nt)
-		{
-			this.NativeInstrinsic = nt;
-		}
-
-		public interface IMarshalSigSpec {
-		}
-
-		public sealed class Array : IMarshalSigSpec {
-
-			public NativeType ArrayElemType;
-			public int ParamNum;
-			public int ElemMult;
-			public int NumElem;
-
-			public Array ()
-			{
-				this.ParamNum = 0;
-				this.ElemMult = 0;
-				this.NumElem = 0;
-			}
-		}
-
-		public sealed class CustomMarshaler : IMarshalSigSpec {
-
-			public string Guid;
-			public string UnmanagedType;
-			public string ManagedType;
-			public string Cookie;
-		}
-
-		public sealed class FixedArray : IMarshalSigSpec {
-
-			public int NumElem;
-			public NativeType ArrayElemType;
-
-			public FixedArray ()
-			{
-				this.NumElem = 0;
-				this.ArrayElemType = NativeType.NONE;
-			}
-		}
-
-		public sealed class SafeArray : IMarshalSigSpec {
-
-			public VariantType ArrayElemType;
-		}
-
-		public sealed class FixedSysString : IMarshalSigSpec {
-
-			public int Size;
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.dll.sources b/mcs/class/Mono.Cecil/Mono.Cecil.dll.sources
index bb313af..95bb7f3 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil.dll.sources
+++ b/mcs/class/Mono.Cecil/Mono.Cecil.dll.sources
@@ -1,313 +1,127 @@
-./Mono.Cecil/AggressiveReflectionReader.cs
-./Mono.Cecil/ArrayDimension.cs
-./Mono.Cecil/ArrayDimensionCollection.cs
-./Mono.Cecil/ArrayType.cs
-./Mono.Cecil/AssemblyDefinition.cs
-./Mono.Cecil/AssemblyFactory.cs
-./Mono.Cecil/AssemblyFlags.cs
-./Mono.Cecil/AssemblyHashAlgorithm.cs
-./Mono.Cecil/AssemblyInfo.cs
-./Mono.Cecil/AssemblyKind.cs
-./Mono.Cecil/AssemblyLinkedResource.cs
-./Mono.Cecil/AssemblyNameDefinition.cs
-./Mono.Cecil/AssemblyNameReference.cs
-./Mono.Cecil/AssemblyNameReferenceCollection.cs
-./Mono.Cecil/AssemblyStripper.cs
-./Mono.Cecil/BaseAssemblyResolver.cs
-./Mono.Cecil/BaseReflectionReader.cs
-./Mono.Cecil/BaseReflectionVisitor.cs
-./Mono.Cecil/BaseStructureVisitor.cs
-./Mono.Cecil/CallSite.cs
-./Mono.Cecil/CompactFrameworkCompatibility.cs
-./Mono.Cecil/Constants.cs
-./Mono.Cecil/ConstraintCollection.cs
-./Mono.Cecil/ConstructorCollection.cs
-./Mono.Cecil/CustomAttribute.cs
-./Mono.Cecil/CustomAttributeCollection.cs
-./Mono.Cecil/DefaultAssemblyResolver.cs
-./Mono.Cecil/DefaultImporter.cs
-./Mono.Cecil/EmbeddedResource.cs
+./Mono.Collections.Generic/Collection.cs
+./Mono.Collections.Generic/ReadOnlyCollection.cs
+./Mono.Cecil.PE/ImageWriter.cs
+./Mono.Cecil.PE/BinaryStreamWriter.cs
+./Mono.Cecil.PE/BinaryStreamReader.cs
+./Mono.Cecil.PE/DataDirectory.cs
+./Mono.Cecil.PE/ByteBuffer.cs
+./Mono.Cecil.PE/ByteBufferEqualityComparer.cs
+./Mono.Cecil.PE/TextMap.cs
+./Mono.Cecil.PE/Section.cs
+./Mono.Cecil.PE/Image.cs
+./Mono.Cecil.PE/ImageReader.cs
+./Mono.Cecil.Metadata/TableHeap.cs
+./Mono.Cecil.Metadata/GuidHeap.cs
+./Mono.Cecil.Metadata/Heap.cs
+./Mono.Cecil.Metadata/TokenType.cs
+./Mono.Cecil.Metadata/CodedIndex.cs
+./Mono.Cecil.Metadata/ElementType.cs
+./Mono.Cecil.Metadata/BlobHeap.cs
+./Mono.Cecil.Metadata/Row.cs
+./Mono.Cecil.Metadata/MetadataToken.cs
+./Mono.Cecil.Metadata/UserStringHeap.cs
+./Mono.Cecil.Metadata/Utilities.cs
+./Mono.Cecil.Metadata/StringHeap.cs
+./Mono.Cecil.Metadata/Buffers.cs
+./System.Runtime.CompilerServices/ExtensionAttribute.cs
+./Mono.Security.Cryptography/CryptoService.cs
+./Mono.Security.Cryptography/CryptoConvert.cs
+./Mono/Empty.cs
+./Mono/Funcs.cs
+./Mono/Actions.cs
+./Mono.Cecil.Cil/ILProcessor.cs
+./Mono.Cecil.Cil/VariableReference.cs
+./Mono.Cecil.Cil/OpCodes.cs
+./Mono.Cecil.Cil/MethodBody.cs
+./Mono.Cecil.Cil/Instruction.cs
+./Mono.Cecil.Cil/Code.cs
+./Mono.Cecil.Cil/Symbols.cs
+./Mono.Cecil.Cil/CodeWriter.cs
+./Mono.Cecil.Cil/CodeReader.cs
+./Mono.Cecil.Cil/SequencePoint.cs
+./Mono.Cecil.Cil/Document.cs
+./Mono.Cecil.Cil/OpCode.cs
+./Mono.Cecil.Cil/ExceptionHandler.cs
+./Mono.Cecil.Cil/VariableDefinition.cs
+./Mono.Cecil/ModuleReference.cs
+./Mono.Cecil/TypeParser.cs
+./Mono.Cecil/LinkedResource.cs
+./Mono.Cecil/IMemberDefinition.cs
+./Mono.Cecil/Resource.cs
+./Mono.Cecil/ICustomAttributeProvider.cs
+./Mono.Cecil/MethodReference.cs
 ./Mono.Cecil/EventAttributes.cs
-./Mono.Cecil/EventDefinition.cs
-./Mono.Cecil/EventDefinitionCollection.cs
-./Mono.Cecil/EventReference.cs
-./Mono.Cecil/ExternTypeCollection.cs
-./Mono.Cecil/FieldAttributes.cs
-./Mono.Cecil/FieldDefinition.cs
-./Mono.Cecil/FieldDefinitionCollection.cs
 ./Mono.Cecil/FieldReference.cs
-./Mono.Cecil/FileAttributes.cs
-./Mono.Cecil/FunctionPointerType.cs
-./Mono.Cecil/GenericArgumentCollection.cs
-./Mono.Cecil/GenericContext.cs
-./Mono.Cecil/GenericInstanceMethod.cs
-./Mono.Cecil/GenericInstanceType.cs
+./Mono.Cecil/SentinelType.cs
+./Mono.Cecil/MemberReference.cs
+./Mono.Cecil/AssemblyReader.cs
+./Mono.Cecil/TargetRuntime.cs
+./Mono.Cecil/TypeAttributes.cs
 ./Mono.Cecil/GenericParameter.cs
-./Mono.Cecil/GenericParameterAttributes.cs
-./Mono.Cecil/GenericParameterCollection.cs
-./Mono.Cecil/HashCodeProvider.cs
-./Mono.Cecil/IAnnotationProvider.cs
-./Mono.Cecil/IAssemblyResolver.cs
-./Mono.Cecil/ICustomAttributeProvider.cs
-./Mono.Cecil/IDetailReader.cs
-./Mono.Cecil/IGenericInstance.cs
+./Mono.Cecil/MethodImplAttributes.cs
+./Mono.Cecil/FileAttributes.cs
+./Mono.Cecil/ManifestResourceAttributes.cs
+./Mono.Cecil/SecurityDeclaration.cs
+./Mono.Cecil/NativeType.cs
+./Mono.Cecil/EventReference.cs
+./Mono.Cecil/AssemblyWriter.cs
+./Mono.Cecil/Modifiers.cs
 ./Mono.Cecil/IGenericParameterProvider.cs
-./Mono.Cecil/IHasConstant.cs
-./Mono.Cecil/IHasMarshalSpec.cs
-./Mono.Cecil/IHasSecurity.cs
-./Mono.Cecil/IImporter.cs
-./Mono.Cecil/IMemberDefinition.cs
-./Mono.Cecil/IMemberReference.cs
+./Mono.Cecil/ParameterDefinition.cs
 ./Mono.Cecil/IMetadataScope.cs
+./Mono.Cecil/AssemblyNameReference.cs
+./Mono.Cecil/ParameterAttributes.cs
+./Mono.Cecil/TypeSpecification.cs
 ./Mono.Cecil/IMetadataTokenProvider.cs
-./Mono.Cecil/IMethodSignature.cs
-./Mono.Cecil/ImportContext.cs
-./Mono.Cecil/InterfaceCollection.cs
-./Mono.Cecil/IReflectionStructureVisitable.cs
-./Mono.Cecil/IReflectionStructureVisitor.cs
-./Mono.Cecil/IReflectionVisitable.cs
-./Mono.Cecil/IReflectionVisitor.cs
-./Mono.Cecil/IRequireResolving.cs
-./Mono.Cecil/LinkedResource.cs
-./Mono.Cecil/ManifestResourceAttributes.cs
-./Mono.Cecil/MarshalSpec.cs
-./Mono.Cecil/MemberReference.cs
-./Mono.Cecil/MemberReferenceCollection.cs
-./Mono.Cecil/MetadataResolver.cs
 ./Mono.Cecil/MethodAttributes.cs
-./Mono.Cecil/MethodCallingConvention.cs
-./Mono.Cecil/MethodDefinition.cs
-./Mono.Cecil/MethodDefinitionCollection.cs
-./Mono.Cecil/MethodImplAttributes.cs
-./Mono.Cecil/MethodReference.cs
+./Mono.Cecil/AssemblyInfo.cs
+./Mono.Cecil/IMarshalInfoProvider.cs
+./Mono.Cecil/PointerType.cs
+./Mono.Cecil/ArrayType.cs
+./Mono.Cecil/TypeDefinition.cs
+./Mono.Cecil/FunctionPointerType.cs
+./Mono.Cecil/MetadataResolver.cs
+./Mono.Cecil/Import.cs
+./Mono.Cecil/IGenericInstance.cs
+./Mono.Cecil/ExportedType.cs
+./Mono.Cecil/PInvokeAttributes.cs
+./Mono.Cecil/AssemblyHashAlgorithm.cs
 ./Mono.Cecil/MethodReturnType.cs
+./Mono.Cecil/ParameterReference.cs
+./Mono.Cecil/AssemblyLinkedResource.cs
+./Mono.Cecil/EventDefinition.cs
+./Mono.Cecil/FieldAttributes.cs
+./Mono.Cecil/AssemblyNameDefinition.cs
+./Mono.Cecil/ParameterDefinitionCollection.cs
+./Mono.Cecil/ModuleDefinition.cs
+./Mono.Cecil/MetadataSystem.cs
+./Mono.Cecil/AssemblyFlags.cs
+./Mono.Cecil/TypeDefinitionCollection.cs
+./Mono.Cecil/CustomAttribute.cs
+./Mono.Cecil/MemberDefinitionCollection.cs
+./Mono.Cecil/PropertyDefinition.cs
+./Mono.Cecil/GenericInstanceType.cs
+./Mono.Cecil/ModuleKind.cs
+./Mono.Cecil/DefaultAssemblyResolver.cs
 ./Mono.Cecil/MethodSemanticsAttributes.cs
+./Mono.Cecil/EmbeddedResource.cs
+./Mono.Cecil/PropertyAttributes.cs
 ./Mono.Cecil/MethodSpecification.cs
-./Mono.Cecil/Modifiers.cs
-./Mono.Cecil/ModuleDefinition.cs
-./Mono.Cecil/ModuleDefinitionCollection.cs
-./Mono.Cecil/ModuleReference.cs
-./Mono.Cecil/ModuleReferenceCollection.cs
-./Mono.Cecil/NativeType.cs
-./Mono.Cecil/NestedTypeCollection.cs
-./Mono.Cecil/NullReferenceImporter.cs
-./Mono.Cecil/OverrideCollection.cs
-./Mono.Cecil/ParameterAttributes.cs
-./Mono.Cecil/ParameterDefinition.cs
-./Mono.Cecil/ParameterDefinitionCollection.cs
-./Mono.Cecil/ParameterReference.cs
+./Mono.Cecil/TypeReference.cs
+./Mono.Cecil/IConstantProvider.cs
+./Mono.Cecil/MethodDefinition.cs
 ./Mono.Cecil/PinnedType.cs
-./Mono.Cecil/PInvokeAttributes.cs
-./Mono.Cecil/PInvokeInfo.cs
-./Mono.Cecil/PointerType.cs
-./Mono.Cecil/PropertyAttributes.cs
-./Mono.Cecil/PropertyDefinition.cs
-./Mono.Cecil/PropertyDefinitionCollection.cs
+./Mono.Cecil/VariantType.cs
+./Mono.Cecil/MethodCallingConvention.cs
+./Mono.Cecil/TypeSystem.cs
+./Mono.Cecil/IMethodSignature.cs
+./Mono.Cecil/FieldDefinition.cs
+./Mono.Cecil/BaseAssemblyResolver.cs
 ./Mono.Cecil/PropertyReference.cs
+./Mono.Cecil/MarshalInfo.cs
+./Mono.Cecil/GenericInstanceMethod.cs
 ./Mono.Cecil/ReferenceType.cs
-./Mono.Cecil/ReflectionController.cs
-./Mono.Cecil/ReflectionException.cs
-./Mono.Cecil/ReflectionHelper.cs
-./Mono.Cecil/ReflectionReader.cs
-./Mono.Cecil/ReflectionWriter.cs
-./Mono.Cecil/Resource.cs
-./Mono.Cecil/ResourceCollection.cs
-./Mono.Cecil/SecurityAction.cs
-./Mono.Cecil/SecurityDeclaration.cs
-./Mono.Cecil/SecurityDeclarationCollection.cs
-./Mono.Cecil/SecurityDeclarationReader.cs
-./Mono.Cecil/SentinelType.cs
-./Mono.Cecil/StructureReader.cs
-./Mono.Cecil/StructureWriter.cs
-./Mono.Cecil/TableComparers.cs
-./Mono.Cecil/TargetRuntime.cs
-./Mono.Cecil/TypeAttributes.cs
-./Mono.Cecil/TypeDefinition.cs
-./Mono.Cecil/TypeDefinitionCollection.cs
-./Mono.Cecil/TypeReference.cs
-./Mono.Cecil/TypeReferenceCollection.cs
-./Mono.Cecil/TypeSpecification.cs
-./Mono.Cecil/VariantType.cs
-./Mono.Cecil.Binary/BaseImageVisitor.cs
-./Mono.Cecil.Binary/CLIHeader.cs
-./Mono.Cecil.Binary/CopyImageVisitor.cs
-./Mono.Cecil.Binary/DataDirectory.cs
-./Mono.Cecil.Binary/DebugHeader.cs
-./Mono.Cecil.Binary/DebugStoreType.cs
-./Mono.Cecil.Binary/DOSHeader.cs
-./Mono.Cecil.Binary/ExportTable.cs
-./Mono.Cecil.Binary/IBinaryVisitable.cs
-./Mono.Cecil.Binary/IBinaryVisitor.cs
-./Mono.Cecil.Binary/IHeader.cs
-./Mono.Cecil.Binary/Image.cs
-./Mono.Cecil.Binary/ImageCharacteristics.cs
-./Mono.Cecil.Binary/ImageFormatException.cs
-./Mono.Cecil.Binary/ImageInitializer.cs
-./Mono.Cecil.Binary/ImageReader.cs
-./Mono.Cecil.Binary/ImageWriter.cs
-./Mono.Cecil.Binary/Imports.cs
-./Mono.Cecil.Binary/MemoryBinaryWriter.cs
-./Mono.Cecil.Binary/PEFileHeader.cs
-./Mono.Cecil.Binary/PEOptionalHeader.cs
-./Mono.Cecil.Binary/ResourceDataEntry.cs
-./Mono.Cecil.Binary/ResourceDirectoryEntry.cs
-./Mono.Cecil.Binary/ResourceDirectoryString.cs
-./Mono.Cecil.Binary/ResourceDirectoryTable.cs
-./Mono.Cecil.Binary/ResourceNode.cs
-./Mono.Cecil.Binary/ResourceReader.cs
-./Mono.Cecil.Binary/ResourceWriter.cs
-./Mono.Cecil.Binary/RuntimeImage.cs
-./Mono.Cecil.Binary/RVA.cs
-./Mono.Cecil.Binary/Section.cs
-./Mono.Cecil.Binary/SectionCharacteristics.cs
-./Mono.Cecil.Binary/SectionCollection.cs
-./Mono.Cecil.Binary/SubSystem.cs
-./Mono.Cecil.Metadata/Assembly.cs
-./Mono.Cecil.Metadata/AssemblyOS.cs
-./Mono.Cecil.Metadata/AssemblyProcessor.cs
-./Mono.Cecil.Metadata/AssemblyRef.cs
-./Mono.Cecil.Metadata/AssemblyRefOS.cs
-./Mono.Cecil.Metadata/AssemblyRefProcessor.cs
-./Mono.Cecil.Metadata/BaseMetadataVisitor.cs
-./Mono.Cecil.Metadata/BlobHeap.cs
-./Mono.Cecil.Metadata/ClassLayout.cs
-./Mono.Cecil.Metadata/CodedIndex.cs
-./Mono.Cecil.Metadata/Constant.cs
-./Mono.Cecil.Metadata/CultureUtils.cs
-./Mono.Cecil.Metadata/CustomAttribute.cs
-./Mono.Cecil.Metadata/DeclSecurity.cs
-./Mono.Cecil.Metadata/ElementType.cs
-./Mono.Cecil.Metadata/Event.cs
-./Mono.Cecil.Metadata/EventMap.cs
-./Mono.Cecil.Metadata/EventPtr.cs
-./Mono.Cecil.Metadata/ExportedType.cs
-./Mono.Cecil.Metadata/Field.cs
-./Mono.Cecil.Metadata/FieldLayout.cs
-./Mono.Cecil.Metadata/FieldMarshal.cs
-./Mono.Cecil.Metadata/FieldPtr.cs
-./Mono.Cecil.Metadata/FieldRVA.cs
-./Mono.Cecil.Metadata/File.cs
-./Mono.Cecil.Metadata/GenericParam.cs
-./Mono.Cecil.Metadata/GenericParamConstraint.cs
-./Mono.Cecil.Metadata/GuidHeap.cs
-./Mono.Cecil.Metadata/IMetadataRow.cs
-./Mono.Cecil.Metadata/IMetadataTable.cs
-./Mono.Cecil.Metadata/IMetadataVisitable.cs
-./Mono.Cecil.Metadata/IMetadataVisitor.cs
-./Mono.Cecil.Metadata/ImplMap.cs
-./Mono.Cecil.Metadata/InterfaceImpl.cs
-./Mono.Cecil.Metadata/ManifestResource.cs
-./Mono.Cecil.Metadata/MemberRef.cs
-./Mono.Cecil.Metadata/MetadataFormatException.cs
-./Mono.Cecil.Metadata/MetadataHeap.cs
-./Mono.Cecil.Metadata/MetadataInitializer.cs
-./Mono.Cecil.Metadata/MetadataReader.cs
-./Mono.Cecil.Metadata/MetadataRoot.cs
-./Mono.Cecil.Metadata/MetadataRowReader.cs
-./Mono.Cecil.Metadata/MetadataRowWriter.cs
-./Mono.Cecil.Metadata/MetadataStream.cs
-./Mono.Cecil.Metadata/MetadataStreamCollection.cs
-./Mono.Cecil.Metadata/MetadataTableReader.cs
-./Mono.Cecil.Metadata/MetadataTableWriter.cs
-./Mono.Cecil.Metadata/MetadataToken.cs
-./Mono.Cecil.Metadata/MetadataWriter.cs
-./Mono.Cecil.Metadata/Method.cs
-./Mono.Cecil.Metadata/MethodImpl.cs
-./Mono.Cecil.Metadata/MethodPtr.cs
-./Mono.Cecil.Metadata/MethodSemantics.cs
-./Mono.Cecil.Metadata/MethodSpec.cs
-./Mono.Cecil.Metadata/Module.cs
-./Mono.Cecil.Metadata/ModuleRef.cs
-./Mono.Cecil.Metadata/NestedClass.cs
-./Mono.Cecil.Metadata/Param.cs
-./Mono.Cecil.Metadata/ParamPtr.cs
-./Mono.Cecil.Metadata/Property.cs
-./Mono.Cecil.Metadata/PropertyMap.cs
-./Mono.Cecil.Metadata/PropertyPtr.cs
-./Mono.Cecil.Metadata/RowCollection.cs
-./Mono.Cecil.Metadata/StandAloneSig.cs
-./Mono.Cecil.Metadata/StringsHeap.cs
-./Mono.Cecil.Metadata/TableCollection.cs
-./Mono.Cecil.Metadata/TablesHeap.cs
-./Mono.Cecil.Metadata/TokenType.cs
-./Mono.Cecil.Metadata/TypeDef.cs
-./Mono.Cecil.Metadata/TypeRef.cs
-./Mono.Cecil.Metadata/TypeSpec.cs
-./Mono.Cecil.Metadata/UserStringsHeap.cs
-./Mono.Cecil.Metadata/Utilities.cs
-./Mono.Cecil.Cil/BaseCodeVisitor.cs
-./Mono.Cecil.Cil/CilWorker.cs
-./Mono.Cecil.Cil/Code.cs
-./Mono.Cecil.Cil/CodeReader.cs
-./Mono.Cecil.Cil/CodeWriter.cs
-./Mono.Cecil.Cil/Document.cs
-./Mono.Cecil.Cil/DocumentHashAlgorithm.cs
-./Mono.Cecil.Cil/DocumentLanguage.cs
-./Mono.Cecil.Cil/DocumentLanguageVendor.cs
-./Mono.Cecil.Cil/DocumentType.cs
-./Mono.Cecil.Cil/ExceptionHandler.cs
-./Mono.Cecil.Cil/ExceptionHandlerCollection.cs
-./Mono.Cecil.Cil/ExceptionHandlerType.cs
-./Mono.Cecil.Cil/FlowControl.cs
-./Mono.Cecil.Cil/GuidAttribute.cs
-./Mono.Cecil.Cil/ICodeVisitable.cs
-./Mono.Cecil.Cil/ICodeVisitor.cs
-./Mono.Cecil.Cil/Instruction.cs
-./Mono.Cecil.Cil/InstructionCollection.cs
-./Mono.Cecil.Cil/IScopeProvider.cs
-./Mono.Cecil.Cil/ISymbolReader.cs
-./Mono.Cecil.Cil/ISymbolStoreFactory.cs
-./Mono.Cecil.Cil/ISymbolWriter.cs
-./Mono.Cecil.Cil/IVariableDefinitionProvider.cs
-./Mono.Cecil.Cil/MethodBody.cs
-./Mono.Cecil.Cil/MethodDataSection.cs
-./Mono.Cecil.Cil/MethodHeader.cs
-./Mono.Cecil.Cil/OpCode.cs
-./Mono.Cecil.Cil/OpCodes.cs
-./Mono.Cecil.Cil/OpCodeNames.cs
-./Mono.Cecil.Cil/OpCodeType.cs
-./Mono.Cecil.Cil/OperandType.cs
-./Mono.Cecil.Cil/Scope.cs
-./Mono.Cecil.Cil/ScopeCollection.cs
-./Mono.Cecil.Cil/SequencePoint.cs
-./Mono.Cecil.Cil/StackBehaviour.cs
-./Mono.Cecil.Cil/SymbolStoreHelper.cs
-./Mono.Cecil.Cil/VariableDefinition.cs
-./Mono.Cecil.Cil/VariableDefinitionCollection.cs
-./Mono.Cecil.Cil/VariableReference.cs
-./Mono.Cecil.Signatures/Array.cs
-./Mono.Cecil.Signatures/ArrayShape.cs
-./Mono.Cecil.Signatures/BaseSignatureVisitor.cs
-./Mono.Cecil.Signatures/Class.cs
-./Mono.Cecil.Signatures/Constraint.cs
-./Mono.Cecil.Signatures/CustomAttrib.cs
-./Mono.Cecil.Signatures/CustomMod.cs
-./Mono.Cecil.Signatures/FieldSig.cs
-./Mono.Cecil.Signatures/FnPtr.cs
-./Mono.Cecil.Signatures/GenericArg.cs
-./Mono.Cecil.Signatures/GenericInst.cs
-./Mono.Cecil.Signatures/GenericInstSignature.cs
-./Mono.Cecil.Signatures/InputOutputItem.cs
-./Mono.Cecil.Signatures/ISignatureVisitable.cs
-./Mono.Cecil.Signatures/ISignatureVisitor.cs
-./Mono.Cecil.Signatures/LocalVarSig.cs
-./Mono.Cecil.Signatures/MarshalSig.cs
-./Mono.Cecil.Signatures/MethodDefSig.cs
-./Mono.Cecil.Signatures/MethodRefSig.cs
-./Mono.Cecil.Signatures/MethodSig.cs
-./Mono.Cecil.Signatures/MethodSpec.cs
-./Mono.Cecil.Signatures/MVar.cs
-./Mono.Cecil.Signatures/Param.cs
-./Mono.Cecil.Signatures/PropertySig.cs
-./Mono.Cecil.Signatures/Ptr.cs
-./Mono.Cecil.Signatures/RetType.cs
-./Mono.Cecil.Signatures/Signature.cs
-./Mono.Cecil.Signatures/SignatureReader.cs
-./Mono.Cecil.Signatures/SignatureWriter.cs
-./Mono.Cecil.Signatures/SigType.cs
-./Mono.Cecil.Signatures/SzArray.cs
-./Mono.Cecil.Signatures/TypeSpec.cs
-./Mono.Cecil.Signatures/ValueType.cs
-./Mono.Cecil.Signatures/Var.cs
-./Mono.Xml/SecurityParser.cs
-./Mono.Xml/SmallXmlParser.cs
+./Mono.Cecil/PInvokeInfo.cs
+./Mono.Cecil/CallSite.cs
+./Mono.Cecil/AssemblyDefinition.cs
+./Mono.Cecil/GenericParameterAttributes.cs
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/ArrayDimension.cs b/mcs/class/Mono.Cecil/Mono.Cecil/ArrayDimension.cs
deleted file mode 100644
index e7dafbb..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil/ArrayDimension.cs
+++ /dev/null
@@ -1,59 +0,0 @@
-//
-// ArrayDimension.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-	public sealed class ArrayDimension {
-
-		int m_lowerBound;
-		int m_upperBound;
-
-		public int LowerBound {
-			get { return m_lowerBound; }
-			set { m_lowerBound = value; }
-		}
-
-		public int UpperBound {
-			get { return m_upperBound; }
-			set { m_upperBound = value; }
-		}
-
-		public ArrayDimension (int lb, int ub)
-		{
-			m_lowerBound = lb;
-			m_upperBound = ub;
-		}
-
-		public override string ToString ()
-		{
-			if (m_upperBound == 0)
-				return string.Empty;
-			return string.Concat (m_lowerBound, "...", m_upperBound);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/ArrayDimensionCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil/ArrayDimensionCollection.cs
deleted file mode 100644
index c31cfb1..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil/ArrayDimensionCollection.cs
+++ /dev/null
@@ -1,88 +0,0 @@
-//
-// ArrayDimensionCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Wed Sep 27 12:46:53 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-	using System;
-	using System.Collections;
-
-	using Mono.Cecil.Cil;
-
-	public sealed class ArrayDimensionCollection : CollectionBase {
-
-		ArrayType m_container;
-
-		public ArrayDimension this [int index] {
-			get { return List [index] as ArrayDimension; }
-			set { List [index] = value; }
-		}
-
-		public ArrayType Container {
-			get { return m_container; }
-		}
-
-		public ArrayDimensionCollection (ArrayType container)
-		{
-			m_container = container;
-		}
-
-		public void Add (ArrayDimension value)
-		{
-			List.Add (value);
-		}
-
-		public bool Contains (ArrayDimension value)
-		{
-			return List.Contains (value);
-		}
-
-		public int IndexOf (ArrayDimension value)
-		{
-			return List.IndexOf (value);
-		}
-
-		public void Insert (int index, ArrayDimension value)
-		{
-			List.Insert (index, value);
-		}
-
-		public void Remove (ArrayDimension value)
-		{
-			List.Remove (value);
-		}
-
-		protected override void OnValidate (object o)
-		{
-			if (! (o is ArrayDimension))
-				throw new ArgumentException ("Must be of type " + typeof (ArrayDimension).FullName);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/ArrayType.cs b/mcs/class/Mono.Cecil/Mono.Cecil/ArrayType.cs
index 87456d2..e3a060f 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/ArrayType.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/ArrayType.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,84 +26,134 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System;
+using System.Text;
+using Mono.Collections.Generic;
+using MD = Mono.Cecil.Metadata;
+
 namespace Mono.Cecil {
 
-	using System.Text;
+	public struct ArrayDimension {
+
+		int? lower_bound;
+		int? upper_bound;
 
-	using Mono.Cecil.Signatures;
+		public int? LowerBound {
+			get { return lower_bound; }
+			set { lower_bound = value; }
+		}
+
+		public int? UpperBound {
+			get { return upper_bound; }
+			set { upper_bound = value; }
+		}
+
+		public bool IsSized {
+			get { return lower_bound.HasValue || upper_bound.HasValue; }
+		}
+
+		public ArrayDimension (int? lowerBound, int? upperBound)
+		{
+			this.lower_bound = lowerBound;
+			this.upper_bound = upperBound;
+		}
+
+		public override string ToString ()
+		{
+			return !IsSized
+				? string.Empty
+				: lower_bound + "..." + upper_bound;
+		}
+	}
 
 	public sealed class ArrayType : TypeSpecification {
 
-		private ArrayDimensionCollection m_dimensions;
+		Collection<ArrayDimension> dimensions;
+
+		public Collection<ArrayDimension> Dimensions {
+			get {
+				if (dimensions != null)
+					return dimensions;
 
-		public ArrayDimensionCollection Dimensions {
-			get { return m_dimensions; }
+				dimensions = new Collection<ArrayDimension> ();
+				dimensions.Add (new ArrayDimension ());
+				return dimensions;
+			}
 		}
 
 		public int Rank {
-			get { return m_dimensions.Count; }
+			get { return dimensions == null ? 1 : dimensions.Count; }
 		}
 
-		public bool IsSizedArray {
+		public bool IsVector {
 			get {
-				if (this.Rank != 1)
+				if (dimensions == null)
+					return true;
+
+				if (dimensions.Count > 1)
 					return false;
-				ArrayDimension dim = m_dimensions [0];
-				return dim.UpperBound == 0;
+
+				var dimension = dimensions [0];
+
+				return !dimension.IsSized;
 			}
 		}
 
+		public override bool IsValueType {
+			get { return false; }
+			set { throw new InvalidOperationException (); }
+		}
+
 		public override string Name {
-			get { return string.Concat (base.Name, Suffix ()); }
+			get { return base.Name + Suffix; }
 		}
 
 		public override string FullName {
-			get { return string.Concat (base.FullName, Suffix ()); }
+			get { return base.FullName + Suffix; }
 		}
 
-		string Suffix ()
-		{
-			StringBuilder sb = new StringBuilder ();
-			sb.Append ("[");
-			for (int i = 0; i < m_dimensions.Count; i++) {
-				ArrayDimension dim = m_dimensions [i];
-				string rank = dim.ToString ();
-				if (i < m_dimensions.Count - 1)
-					sb.Append (",");
-				if (rank.Length > 0) {
-					sb.Append (" ");
-					sb.Append (rank);
+		string Suffix {
+			get {
+				if (IsVector)
+					return "[]";
+
+				var suffix = new StringBuilder ();
+				suffix.Append ("[");
+				for (int i = 0; i < dimensions.Count; i++) {
+					if (i > 0)
+						suffix.Append (",");
+
+					suffix.Append (dimensions [i].ToString ());
 				}
+				suffix.Append ("]");
+
+				return suffix.ToString ();
 			}
-			sb.Append ("]");
-			return sb.ToString ();
 		}
 
-		internal ArrayType (TypeReference elementType, ArrayShape shape) : base (elementType)
-		{
-			m_dimensions = new ArrayDimensionCollection (this);
-			for (int i = 0; i < shape.Rank; i++) {
-				int lower = 0, upper = 0;
-				if (i < shape.NumSizes)
-					if (i < shape.NumLoBounds) {
-						lower = shape.LoBounds [i];
-						upper = shape.LoBounds [i] + shape.Sizes [i] - 1;
-					} else
-						upper = shape.Sizes [i] - 1;
-
-				m_dimensions.Add (new ArrayDimension (lower, upper));
-			}
+		public override bool IsArray {
+			get { return true; }
 		}
 
-		public ArrayType (TypeReference elementType, int rank) : base (elementType)
+		public ArrayType (TypeReference type)
+			: base (type)
 		{
-			m_dimensions = new ArrayDimensionCollection (this);
-			for (int i = 0; i < rank; i++)
-				m_dimensions.Add (new ArrayDimension (0, 0));
+			Mixin.CheckType (type);
+			this.etype = MD.ElementType.Array;
 		}
 
-		public ArrayType (TypeReference elementType) : this (elementType, 1)
+		public ArrayType (TypeReference type, int rank)
+			: this (type)
 		{
+			Mixin.CheckType (type);
+
+			if (rank == 1)
+				return;
+
+			dimensions = new Collection<ArrayDimension> (rank);
+			for (int i = 0; i < rank; i++)
+				dimensions.Add (new ArrayDimension ());
+			this.etype = MD.ElementType.Array;
 		}
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyDefinition.cs b/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyDefinition.cs
index 11373af..bb757d3 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyDefinition.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyDefinition.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,144 +26,164 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
+using System;
+using System.IO;
+
+using Mono.Collections.Generic;
 
-	using System;
-	using System.Collections;
+namespace Mono.Cecil {
 
-	using Mono.Cecil.Metadata;
+	public sealed class AssemblyDefinition : ICustomAttributeProvider, ISecurityDeclarationProvider {
 
-	public class AssemblyDefinition : ICustomAttributeProvider,
-		IHasSecurity, IAnnotationProvider, IReflectionStructureVisitable {
+		AssemblyNameDefinition name;
 
-		MetadataToken m_token;
-		AssemblyNameDefinition m_asmName;
-		ModuleDefinitionCollection m_modules;
-		SecurityDeclarationCollection m_secDecls;
-		CustomAttributeCollection m_customAttrs;
-		MethodDefinition m_ep;
-		TargetRuntime m_runtime;
-		AssemblyKind m_kind;
+		internal ModuleDefinition main_module;
+		Collection<ModuleDefinition> modules;
+		Collection<CustomAttribute> custom_attributes;
+		Collection<SecurityDeclaration> security_declarations;
 
-		ModuleDefinition m_mainModule;
-		StructureReader m_reader;
+		public AssemblyNameDefinition Name {
+			get { return name; }
+			set { name = value; }
+		}
 
-		IAssemblyResolver m_resolver;
-		IDictionary m_annotations;
+		public string FullName {
+			get { return name != null ? name.FullName : string.Empty; }
+		}
 
 		public MetadataToken MetadataToken {
-			get { return m_token; }
-			set { m_token = value; }
+			get { return new MetadataToken (TokenType.Assembly, 1); }
+			set { }
 		}
 
-		public AssemblyNameDefinition Name {
-			get { return m_asmName; }
+		public Collection<ModuleDefinition> Modules {
+			get {
+				if (modules != null)
+					return modules;
+
+				if (main_module.HasImage)
+					return modules = main_module.Read (this, (_, reader) => reader.ReadModules ());
+
+				return modules = new Collection<ModuleDefinition> { main_module };
+			}
 		}
 
-		public ModuleDefinitionCollection Modules {
-			get { return m_modules; }
+		public ModuleDefinition MainModule {
+			get { return main_module; }
 		}
 
-		public bool HasSecurityDeclarations {
-			get { return (m_secDecls == null) ? false : (m_secDecls.Count > 0); }
+		public MethodDefinition EntryPoint {
+			get { return main_module.EntryPoint; }
+			set { main_module.EntryPoint = value; }
 		}
 
-		public SecurityDeclarationCollection SecurityDeclarations {
+		public bool HasCustomAttributes {
 			get {
-				if (m_secDecls == null)
-					m_secDecls = new SecurityDeclarationCollection (this);
+				if (custom_attributes != null)
+					return custom_attributes.Count > 0;
 
-				return m_secDecls;
+				return this.GetHasCustomAttributes (main_module);
 			}
 		}
 
-		public bool HasCustomAttributes {
-			get { return (m_customAttrs == null) ? false : (m_customAttrs.Count > 0); }
+		public Collection<CustomAttribute> CustomAttributes {
+			get { return custom_attributes ?? (custom_attributes = this.GetCustomAttributes (main_module)); }
 		}
 
-		public CustomAttributeCollection CustomAttributes {
+		public bool HasSecurityDeclarations {
 			get {
-				if (m_customAttrs == null)
-					m_customAttrs = new CustomAttributeCollection (this);
+				if (security_declarations != null)
+					return security_declarations.Count > 0;
 
-				return m_customAttrs;
+				return this.GetHasSecurityDeclarations (main_module);
 			}
 		}
 
-		public MethodDefinition EntryPoint {
-			get { return m_ep; }
-			set { m_ep = value; }
+		public Collection<SecurityDeclaration> SecurityDeclarations {
+			get { return security_declarations ?? (security_declarations = this.GetSecurityDeclarations (main_module)); }
+		}
+
+		internal AssemblyDefinition ()
+		{
 		}
 
-		public TargetRuntime Runtime {
-			get { return m_runtime; }
-			set { m_runtime = value; }
+#if !READ_ONLY
+		public static AssemblyDefinition CreateAssembly (AssemblyNameDefinition assemblyName, string moduleName, ModuleKind kind)
+		{
+			return CreateAssembly (assemblyName, moduleName, new ModuleParameters { Kind = kind });
 		}
 
-		public AssemblyKind Kind {
-			get { return m_kind; }
-			set { m_kind = value; }
+		public static AssemblyDefinition CreateAssembly (AssemblyNameDefinition assemblyName, string moduleName, ModuleParameters parameters)
+		{
+			if (assemblyName == null)
+				throw new ArgumentNullException ("assemblyName");
+			if (moduleName == null)
+				throw new ArgumentNullException ("moduleName");
+			Mixin.CheckParameters (parameters);
+			if (parameters.Kind == ModuleKind.NetModule)
+				throw new ArgumentException ("kind");
+
+			var assembly = ModuleDefinition.CreateModule (moduleName, parameters).Assembly;
+			assembly.Name = assemblyName;
+
+			return assembly;
 		}
+#endif
 
-		public ModuleDefinition MainModule {
-			get {
-				if (m_mainModule == null) {
-					foreach (ModuleDefinition module in m_modules) {
-						if (module.Main) {
-							m_mainModule = module;
-							break;
-						}
-					}
-				}
-				return m_mainModule;
-			}
+		public static AssemblyDefinition ReadAssembly (string fileName)
+		{
+			return ReadAssembly (ModuleDefinition.ReadModule (fileName));
 		}
 
-		internal StructureReader Reader {
-			get { return m_reader; }
+		public static AssemblyDefinition ReadAssembly (string fileName, ReaderParameters parameters)
+		{
+			return ReadAssembly (ModuleDefinition.ReadModule (fileName, parameters));
 		}
 
-		public IAssemblyResolver Resolver {
-			get { return m_resolver; }
-			set { m_resolver = value; }
+		public static AssemblyDefinition ReadAssembly (Stream stream)
+		{
+			return ReadAssembly (ModuleDefinition.ReadModule (stream));
 		}
 
-		IDictionary IAnnotationProvider.Annotations {
-			get {
-				if (m_annotations == null)
-					m_annotations = new Hashtable ();
-				return m_annotations;
-			}
+		public static AssemblyDefinition ReadAssembly (Stream stream, ReaderParameters parameters)
+		{
+			return ReadAssembly (ModuleDefinition.ReadModule (stream, parameters));
 		}
 
-		internal AssemblyDefinition (AssemblyNameDefinition name)
+		static AssemblyDefinition ReadAssembly (ModuleDefinition module)
 		{
-			if (name == null)
-				throw new ArgumentNullException ("name");
+			var assembly = module.Assembly;
+			if (assembly == null)
+				throw new ArgumentException ();
 
-			m_asmName = name;
-			m_modules = new ModuleDefinitionCollection (this);
-			m_resolver = new DefaultAssemblyResolver ();
+			return assembly;
 		}
 
-		internal AssemblyDefinition (AssemblyNameDefinition name, StructureReader reader) : this (name)
+#if !READ_ONLY
+		public void Write (string fileName)
 		{
-			m_reader = reader;
+			Write (fileName, new WriterParameters ());
 		}
 
-		public void Accept (IReflectionStructureVisitor visitor)
+		public void Write (Stream stream)
 		{
-			visitor.VisitAssemblyDefinition (this);
+			Write (stream, new WriterParameters ());
+		}
 
-			m_asmName.Accept (visitor);
-			m_modules.Accept (visitor);
+		public void Write (string fileName, WriterParameters parameters)
+		{
+			main_module.Write (fileName, parameters);
+		}
 
-			visitor.TerminateAssemblyDefinition (this);
+		public void Write (Stream stream, WriterParameters parameters)
+		{
+			main_module.Write (stream, parameters);
 		}
+#endif
 
 		public override string ToString ()
 		{
-			return m_asmName.FullName;
+			return this.FullName;
 		}
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyFactory.cs b/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyFactory.cs
deleted file mode 100644
index 1317c31..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyFactory.cs
+++ /dev/null
@@ -1,183 +0,0 @@
-//
-// AssemblyFactory.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-	using System;
-	using System.IO;
-	using SR = System.Reflection;
-
-	using Mono.Cecil.Binary;
-
-	public sealed class AssemblyFactory {
-
-		AssemblyFactory ()
-		{
-		}
-
-		static AssemblyDefinition GetAssembly (ImageReader irv, bool manifestOnly)
-		{
-			StructureReader srv = new StructureReader (irv, manifestOnly);
-			AssemblyDefinition asm = new AssemblyDefinition (
-				new AssemblyNameDefinition (), srv);
-
-			asm.Accept (srv);
-			return asm;
-		}
-
-		static AssemblyDefinition GetAssembly (ImageReader reader)
-		{
-			return GetAssembly (reader, false);
-		}
-
-		static AssemblyDefinition GetAssemblyManifest (ImageReader reader)
-		{
-			return GetAssembly (reader, true);
-		}
-
-		public static AssemblyDefinition GetAssembly (string file)
-		{
-			return GetAssembly (ImageReader.Read (file));
-		}
-
-		public static AssemblyDefinition GetAssembly (byte [] assembly)
-		{
-			return GetAssembly (ImageReader.Read (assembly));
-		}
-
-		public static AssemblyDefinition GetAssembly (Stream stream)
-		{
-			return GetAssembly (ImageReader.Read (stream));
-		}
-
-		public static AssemblyDefinition GetAssemblyManifest (string file)
-		{
-			return GetAssemblyManifest (ImageReader.Read (file));
-		}
-
-		public static AssemblyDefinition GetAssemblyManifest (byte [] assembly)
-		{
-			return GetAssemblyManifest (ImageReader.Read (assembly));
-		}
-
-		public static AssemblyDefinition GetAssemblyManifest (Stream stream)
-		{
-			return GetAssemblyManifest (ImageReader.Read (stream));
-		}
-
-		static TargetRuntime CurrentRuntime ()
-		{
-			Version corlib = typeof (object).Assembly.GetName ().Version;
-
-			switch (corlib.Major) {
-			case 1:
-				return corlib.Minor == 0 ? TargetRuntime.NET_1_0 : TargetRuntime.NET_1_1;
-			case 2:
-				return TargetRuntime.NET_2_0;
-			case 4:
-				return TargetRuntime.NET_4_0;
-			default:
-				throw new NotSupportedException ();
-			}
-		}
-
-		public static AssemblyDefinition DefineAssembly (string name, AssemblyKind kind)
-		{
-			return DefineAssembly (name, name, CurrentRuntime (), kind);
-		}
-
-		public static AssemblyDefinition DefineAssembly (string name, TargetRuntime rt, AssemblyKind kind)
-		{
-			return DefineAssembly (name, name, rt, kind);
-		}
-
-		public static AssemblyDefinition DefineAssembly (string assemblyName, string moduleName, TargetRuntime rt, AssemblyKind kind)
-		{
-			AssemblyNameDefinition asmName = new AssemblyNameDefinition ();
-			asmName.Name = assemblyName;
-			AssemblyDefinition asm = new AssemblyDefinition (asmName);
-			asm.Runtime = rt;
-			asm.Kind = kind;
-			ModuleDefinition main = new ModuleDefinition (moduleName, asm, true);
-			asm.Modules.Add (main);
-			return asm;
-		}
-
-		static void WriteAssembly (AssemblyDefinition asm, BinaryWriter bw)
-		{
-			asm.Accept (new StructureWriter (asm, bw));
-		}
-
-		public static void SaveAssembly (AssemblyDefinition asm, string file)
-		{
-			using (FileStream fs = new FileStream (
-				file, FileMode.Create, FileAccess.Write, FileShare.None)) {
-
-				SaveAssembly (asm, fs);
-				asm.MainModule.Image.SetFileInfo (new FileInfo (file));
-			}
-		}
-
-		public static void SaveAssembly (AssemblyDefinition asm, out byte [] assembly)
-		{
-			MemoryBinaryWriter bw = new MemoryBinaryWriter ();
-			SaveAssembly (asm, bw.BaseStream);
-			assembly = bw.ToArray ();
-		}
-
-		public static void SaveAssembly (AssemblyDefinition asm, Stream stream)
-		{
-			BinaryWriter bw = new BinaryWriter (stream);
-			try {
-				WriteAssembly (asm, bw);
-			} finally {
-				bw.Close ();
-			}
-
-			foreach (ModuleDefinition module in asm.Modules)
-				if (module.Controller.Writer.SaveSymbols)
-					module.Controller.Writer.WriteSymbols (module);
-		}
-
-#if !CF_1_0 && !CF_2_0
-		public static SR.Assembly CreateReflectionAssembly (AssemblyDefinition asm, AppDomain domain)
-		{
-			using (MemoryBinaryWriter writer = new MemoryBinaryWriter ()) {
-
-				WriteAssembly (asm, writer);
-				return domain.Load (writer.ToArray ());
-			}
-		}
-
-		public static SR.Assembly CreateReflectionAssembly (AssemblyDefinition asm)
-		{
-			return CreateReflectionAssembly (asm, AppDomain.CurrentDomain);
-		}
-#endif
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyFlags.cs b/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyFlags.cs
index 9231fc8..6d04c59 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyFlags.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyFlags.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,16 +26,16 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
+using System;
 
-	using System;
+namespace Mono.Cecil {
 
 	[Flags]
-	public enum AssemblyFlags : uint {
+	public enum AssemblyAttributes : uint {
 		PublicKey					 	= 0x0001,
 		SideBySideCompatible			= 0x0000,
 		Retargetable					= 0x0100,
-		EnableJITcompileTracking		= 0x8000,
-		DisableJITcompileOptimizer	  	= 0x4000
+		DisableJITCompileOptimizer		= 0x4000,
+		EnableJITCompileTracking		= 0x8000,
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyHashAlgorithm.cs b/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyHashAlgorithm.cs
index e32c2ec..0e7bf83 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyHashAlgorithm.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyHashAlgorithm.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -34,4 +34,3 @@ namespace Mono.Cecil {
 		SHA1		= 0x8004
 	}
 }
-
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyInfo.cs b/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyInfo.cs
index cd77a32..b701981 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyInfo.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyInfo.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,37 +26,24 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-using System;
 using System.Reflection;
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
 
-#if !EMBEDDED
-
 [assembly: AssemblyTitle ("Mono.Cecil")]
-[assembly: AssemblyDescription ("Library for reading and writing CIL images")]
-[assembly: AssemblyConfiguration ("")]
 [assembly: AssemblyProduct ("Mono.Cecil")]
-[assembly: AssemblyCopyright ("(C) 2005 - 2007, Jb Evain")]
-[assembly: AssemblyCulture ("")]
+[assembly: AssemblyCopyright ("Copyright © 2008 - 2010 Jb Evain")]
 
-[assembly: CLSCompliant (false)]
 [assembly: ComVisible (false)]
 
-[assembly: AssemblyVersion (
-	//
-	// DO NOT MODIFY THE STRING BELOWS WITOUT UPDATING cecil.pc.in in mono/data
-	//
-	"0.6.9.0"
-	//
-	// DO NOT MODIFY THE STRING ABOVE WITHOUT UPDATING cecil.pc.in in mono/data
-)]
-
-#if KEYFILE
-[assembly: AssemblyKeyFile("../../mono.snk")]
-#endif
+[assembly: Guid ("fd225bb4-fa53-44b2-a6db-85f5e48dcb54")]
 
+[assembly: AssemblyVersion ("0.9.4.0")]
+#if !CF
+[assembly: AssemblyFileVersion ("0.9.4.0")]
 #endif
 
-
-
+[assembly: InternalsVisibleTo ("Mono.Cecil.Pdb, PublicKey=002400000480000094000000060200000024000052534131000400000100010079159977d2d03a8e6bea7a2e74e8d1afcc93e8851974952bb480a12c9134474d04062447c37e0e68c080536fcf3c3fbe2ff9c979ce998475e506e8ce82dd5b0f350dc10e93bf2eeecf874b24770c5081dbea7447fddafa277b22de47d6ffea449674a4f9fccf84d15069089380284dbdd35f46cdff12a1bd78e4ef0065d016df")]
+[assembly: InternalsVisibleTo ("Mono.Cecil.Mdb, PublicKey=002400000480000094000000060200000024000052534131000400000100010079159977d2d03a8e6bea7a2e74e8d1afcc93e8851974952bb480a12c9134474d04062447c37e0e68c080536fcf3c3fbe2ff9c979ce998475e506e8ce82dd5b0f350dc10e93bf2eeecf874b24770c5081dbea7447fddafa277b22de47d6ffea449674a4f9fccf84d15069089380284dbdd35f46cdff12a1bd78e4ef0065d016df")]
+[assembly: InternalsVisibleTo ("Mono.Cecil.Rocks, PublicKey=002400000480000094000000060200000024000052534131000400000100010079159977d2d03a8e6bea7a2e74e8d1afcc93e8851974952bb480a12c9134474d04062447c37e0e68c080536fcf3c3fbe2ff9c979ce998475e506e8ce82dd5b0f350dc10e93bf2eeecf874b24770c5081dbea7447fddafa277b22de47d6ffea449674a4f9fccf84d15069089380284dbdd35f46cdff12a1bd78e4ef0065d016df")]
+[assembly: InternalsVisibleTo ("Mono.Cecil.Tests, PublicKey=002400000480000094000000060200000024000052534131000400000100010079159977d2d03a8e6bea7a2e74e8d1afcc93e8851974952bb480a12c9134474d04062447c37e0e68c080536fcf3c3fbe2ff9c979ce998475e506e8ce82dd5b0f350dc10e93bf2eeecf874b24770c5081dbea7447fddafa277b22de47d6ffea449674a4f9fccf84d15069089380284dbdd35f46cdff12a1bd78e4ef0065d016df")]
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyKind.cs b/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyKind.cs
deleted file mode 100644
index 7d5e7c0..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyKind.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-//
-// AssemblyKind.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-	public enum AssemblyKind {
-		Dll,
-		Console,
-		Windows
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyLinkedResource.cs b/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyLinkedResource.cs
index 0ff9ff1..68e44f8 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyLinkedResource.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyLinkedResource.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,26 +26,32 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System;
+
 namespace Mono.Cecil {
 
 	public sealed class AssemblyLinkedResource : Resource {
 
-		private AssemblyNameReference m_asmRef;
+		AssemblyNameReference reference;
 
 		public AssemblyNameReference Assembly {
-			get { return m_asmRef; }
-			set { m_asmRef = value; }
+			get { return reference; }
+			set { reference = value; }
+		}
+
+		public override ResourceType ResourceType {
+			get { return ResourceType.AssemblyLinked; }
 		}
 
-		public AssemblyLinkedResource (string name, ManifestResourceAttributes flags,
-			AssemblyNameReference asmRef) : base (name, flags)
+		public AssemblyLinkedResource (string name, ManifestResourceAttributes flags)
+			: base (name, flags)
 		{
-			m_asmRef = asmRef;
 		}
 
-		public override void Accept (IReflectionStructureVisitor visitor)
+		public AssemblyLinkedResource (string name, ManifestResourceAttributes flags, AssemblyNameReference reference)
+			: base (name, flags)
 		{
-			visitor.VisitAssemblyLinkedResource (this);
+			this.reference = reference;
 		}
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyNameDefinition.cs b/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyNameDefinition.cs
index bf54fb5..4756cb8 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyNameDefinition.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyNameDefinition.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,27 +26,25 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
+using System;
 
-	using System;
+namespace Mono.Cecil {
 
 	public sealed class AssemblyNameDefinition : AssemblyNameReference {
 
 		public override byte [] Hash {
-			get { return new byte [0]; }
-		}
-
-		public AssemblyNameDefinition () : base()
-		{
+			get { return Empty<byte>.Array; }
 		}
 
-		public AssemblyNameDefinition (string name, string culture, Version version) : base (name, culture, version)
+		internal AssemblyNameDefinition ()
 		{
+			this.token = new MetadataToken (TokenType.Assembly, 1);
 		}
 
-		public override void Accept (IReflectionStructureVisitor visitor)
+		public AssemblyNameDefinition (string name, Version version)
+			: base (name, version)
 		{
-			visitor.VisitAssemblyNameDefinition (this);
+			this.token = new MetadataToken (TokenType.Assembly, 1);
 		}
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyNameReference.cs b/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyNameReference.cs
index 6b99de9..2798082 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyNameReference.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyNameReference.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,155 +26,158 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
+using System;
+using System.Globalization;
+using System.Security.Cryptography;
+using System.Text;
 
-	using System;
-	using System.Collections;
-	using System.Globalization;
-	using System.Security.Cryptography;
-	using System.Text;
+namespace Mono.Cecil {
 
-	using Mono.Cecil.Metadata;
+	public class AssemblyNameReference : IMetadataScope {
 
-	public class AssemblyNameReference : IMetadataScope, IAnnotationProvider, IReflectionStructureVisitable {
+		string name;
+		string culture;
+		Version version;
+		uint attributes;
+		byte [] public_key;
+		byte [] public_key_token;
+		AssemblyHashAlgorithm hash_algorithm;
+		byte [] hash;
 
-		string m_name;
-		string m_culture;
-		Version m_version;
-		AssemblyFlags m_flags;
-		byte [] m_publicKey;
-		byte [] m_publicKeyToken;
-		AssemblyHashAlgorithm m_hashAlgo;
-		byte [] m_hash;
-		MetadataToken m_token;
-		IDictionary m_annotations;
+		internal MetadataToken token;
 
-		bool m_fullNameDiscarded = true;
-		string m_fullName;
+		string full_name;
 
 		public string Name {
-			get { return m_name; }
+			get { return name; }
 			set {
-				m_name = value;
-				m_fullNameDiscarded = true;
+				name = value;
+				full_name = null;
 			}
 		}
 
 		public string Culture {
-			get { return m_culture; }
+			get { return culture; }
 			set {
-				m_culture = value;
-				m_fullNameDiscarded = true;
+				culture = value;
+				full_name = null;
 			}
 		}
 
 		public Version Version {
-			get { return m_version; }
+			get { return version; }
 			set {
-				 m_version = value;
-				 m_fullNameDiscarded = true;
+				 version = value;
+				 full_name = null;
 			}
 		}
 
-		public AssemblyFlags Flags {
-			get { return m_flags; }
-			set { m_flags = value; }
+		public AssemblyAttributes Attributes {
+			get { return (AssemblyAttributes) attributes; }
+			set { attributes = (uint) value; }
 		}
 
 		public bool HasPublicKey {
-			get { return (m_flags & AssemblyFlags.PublicKey) != 0; }
-			set {
-				if (value)
-					m_flags |= AssemblyFlags.PublicKey;
-				else
-					m_flags &= ~AssemblyFlags.PublicKey;
-			}
+			get { return attributes.GetAttributes ((uint) AssemblyAttributes.PublicKey); }
+			set { attributes = attributes.SetAttributes ((uint) AssemblyAttributes.PublicKey, value); }
 		}
 
 		public bool IsSideBySideCompatible {
-			get { return (m_flags & AssemblyFlags.SideBySideCompatible) != 0; }
-			set {
-				if (value)
-					m_flags |= AssemblyFlags.SideBySideCompatible;
-				else
-					m_flags &= ~AssemblyFlags.SideBySideCompatible;
-			}
+			get { return attributes.GetAttributes ((uint) AssemblyAttributes.SideBySideCompatible); }
+			set { attributes = attributes.SetAttributes ((uint) AssemblyAttributes.SideBySideCompatible, value); }
 		}
 
 		public bool IsRetargetable {
-			get { return (m_flags & AssemblyFlags.Retargetable) != 0; }
-			set {
-				if (value)
-					m_flags |= AssemblyFlags.Retargetable;
-				else
-					m_flags &= ~AssemblyFlags.Retargetable;
-			}
+			get { return attributes.GetAttributes ((uint) AssemblyAttributes.Retargetable); }
+			set { attributes = attributes.SetAttributes ((uint) AssemblyAttributes.Retargetable, value); }
 		}
 
 		public byte [] PublicKey {
-			get { return m_publicKey; }
+			get { return public_key; }
 			set {
-				m_publicKey = value;
-				m_publicKeyToken = null;
-				m_fullNameDiscarded = true;
+				public_key = value;
+				HasPublicKey = !public_key.IsNullOrEmpty ();
+				public_key_token = Empty<byte>.Array;
+				full_name = null;
 			}
 		}
 
 		public byte [] PublicKeyToken {
 			get {
-#if !CF_1_0
-				if ((m_publicKeyToken == null || m_publicKeyToken.Length == 0) && (m_publicKey != null && m_publicKey.Length > 0)) {
-					HashAlgorithm ha;
-					switch (m_hashAlgo) {
-					case AssemblyHashAlgorithm.Reserved:
-						ha = MD5.Create (); break;
-					default:
-						// None default to SHA1
-						ha = SHA1.Create (); break;
-					}
-					byte [] hash = ha.ComputeHash (m_publicKey);
+				if (public_key_token.IsNullOrEmpty () && !public_key.IsNullOrEmpty ()) {
+					var hash = HashPublicKey ();
 					// we need the last 8 bytes in reverse order
-					m_publicKeyToken = new byte [8];
-					Array.Copy (hash, (hash.Length - 8), m_publicKeyToken, 0, 8);
-					Array.Reverse (m_publicKeyToken, 0, 8);
+					public_key_token = new byte [8];
+					Array.Copy (hash, (hash.Length - 8), public_key_token, 0, 8);
+					Array.Reverse (public_key_token, 0, 8);
 				}
-#endif
-				return m_publicKeyToken;
+				return public_key_token;
 			}
 			set {
-				m_publicKeyToken = value;
-				m_fullNameDiscarded = true;
+				public_key_token = value;
+				full_name = null;
+			}
+		}
+
+		byte [] HashPublicKey ()
+		{
+			HashAlgorithm algorithm;
+
+			switch (hash_algorithm) {
+			case AssemblyHashAlgorithm.Reserved:
+#if SILVERLIGHT
+				throw new NotSupportedException ();
+#else
+				algorithm = MD5.Create ();
+				break;
+#endif
+			default:
+				// None default to SHA1
+#if SILVERLIGHT
+				algorithm = new SHA1Managed ();
+				break;
+#else
+				algorithm = SHA1.Create ();
+				break;
+#endif
 			}
+
+			using (algorithm)
+				return algorithm.ComputeHash (public_key);
+		}
+
+		public virtual MetadataScopeType MetadataScopeType {
+			get { return MetadataScopeType.AssemblyNameReference; }
 		}
 
 		public string FullName {
 			get {
-				if (m_fullName != null && !m_fullNameDiscarded)
-					return m_fullName;
-
-				StringBuilder sb = new StringBuilder ();
-				string sep = ", ";
-				sb.Append (m_name);
-				if (m_version != null) {
-					sb.Append (sep);
-					sb.Append ("Version=");
-					sb.Append (m_version.ToString ());
+				if (full_name != null)
+					return full_name;
+
+				const string sep = ", ";
+
+				var builder = new StringBuilder ();
+				builder.Append (name);
+				if (version != null) {
+					builder.Append (sep);
+					builder.Append ("Version=");
+					builder.Append (version.ToString ());
 				}
-				sb.Append (sep);
-				sb.Append ("Culture=");
-				sb.Append (m_culture == null || m_culture.Length == 0 ? "neutral" : m_culture);
-				sb.Append (sep);
-				sb.Append ("PublicKeyToken=");
-				if (this.PublicKeyToken != null && m_publicKeyToken.Length > 0) {
-					for (int i = 0 ; i < m_publicKeyToken.Length ; i++) {
-						sb.Append (m_publicKeyToken [i].ToString ("x2"));
+				builder.Append (sep);
+				builder.Append ("Culture=");
+				builder.Append (string.IsNullOrEmpty (culture) ? "neutral" : culture);
+				builder.Append (sep);
+				builder.Append ("PublicKeyToken=");
+
+				if (this.PublicKeyToken != null && public_key_token.Length > 0) {
+					for (int i = 0 ; i < public_key_token.Length ; i++) {
+						builder.Append (public_key_token [i].ToString ("x2"));
 					}
-				} else {
-					sb.Append ("null");
-				}
-				m_fullName = sb.ToString ();
-				m_fullNameDiscarded = false;
-				return m_fullName;
+				} else
+					builder.Append ("null");
+
+				return full_name = builder.ToString ();
 			}
 		}
 
@@ -185,17 +188,17 @@ namespace Mono.Cecil {
 			if (fullName.Length == 0)
 				throw new ArgumentException ("Name can not be empty");
 
-			AssemblyNameReference name = new AssemblyNameReference ();
-			string [] tokens = fullName.Split (',');
+			var name = new AssemblyNameReference ();
+			var tokens = fullName.Split (',');
 			for (int i = 0; i < tokens.Length; i++) {
-				string token = tokens [i].Trim ();
+				var token = tokens [i].Trim ();
 
 				if (i == 0) {
 					name.Name = token;
 					continue;
 				}
 
-				string [] parts = token.Split ('=');
+				var parts = token.Split ('=');
 				if (parts.Length != 2)
 					throw new ArgumentException ("Malformed name");
 
@@ -207,13 +210,13 @@ namespace Mono.Cecil {
 					name.Culture = parts [1];
 					break;
 				case "PublicKeyToken":
-					string pkToken = parts [1];
-					if (pkToken == "null")
+					string pk_token = parts [1];
+					if (pk_token == "null")
 						break;
 
-					name.PublicKeyToken = new byte [pkToken.Length / 2];
+					name.PublicKeyToken = new byte [pk_token.Length / 2];
 					for (int j = 0; j < name.PublicKeyToken.Length; j++) {
-						name.PublicKeyToken [j] = Byte.Parse (pkToken.Substring (j * 2, 2), NumberStyles.HexNumber);
+						name.PublicKeyToken [j] = Byte.Parse (pk_token.Substring (j * 2, 2), NumberStyles.HexNumber);
 					}
 					break;
 				}
@@ -222,54 +225,39 @@ namespace Mono.Cecil {
 			return name;
 		}
 
-		public AssemblyHashAlgorithm HashAlgorithm
-		{
-			get { return m_hashAlgo; }
-			set { m_hashAlgo = value; }
+		public AssemblyHashAlgorithm HashAlgorithm {
+			get { return hash_algorithm; }
+			set { hash_algorithm = value; }
 		}
 
 		public virtual byte [] Hash {
-			get { return m_hash; }
-			set { m_hash = value; }
+			get { return hash; }
+			set { hash = value; }
 		}
 
 		public MetadataToken MetadataToken {
-			get { return m_token; }
-			set { m_token = value; }
+			get { return token; }
+			set { token = value; }
 		}
 
-		IDictionary IAnnotationProvider.Annotations {
-			get {
-				if (m_annotations == null)
-					m_annotations = new Hashtable ();
-				return m_annotations;
-			}
-		}
-
-		public AssemblyNameReference () : this (string.Empty, string.Empty, new Version (0, 0, 0, 0))
+		internal AssemblyNameReference ()
 		{
 		}
 
-		public AssemblyNameReference (string name, string culture, Version version)
+		public AssemblyNameReference (string name, Version version)
 		{
 			if (name == null)
 				throw new ArgumentNullException ("name");
-			if (culture == null)
-				throw new ArgumentNullException ("culture");
-			m_name = name;
-			m_culture = culture;
-			m_version = version;
-			m_hashAlgo = AssemblyHashAlgorithm.None;
+
+			this.name = name;
+			this.version = version;
+			this.hash_algorithm = AssemblyHashAlgorithm.None;
+			this.token = new MetadataToken (TokenType.AssemblyRef);
 		}
 
 		public override string ToString ()
 		{
 			return this.FullName;
 		}
-
-		public virtual void Accept (IReflectionStructureVisitor visitor)
-		{
-			visitor.VisitAssemblyNameReference (this);
-		}
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyNameReferenceCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyNameReferenceCollection.cs
deleted file mode 100644
index be2b3b9..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyNameReferenceCollection.cs
+++ /dev/null
@@ -1,93 +0,0 @@
-//
-// AssemblyNameReferenceCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Wed Sep 27 12:46:52 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-	using System;
-	using System.Collections;
-
-	using Mono.Cecil.Cil;
-
-	public sealed class AssemblyNameReferenceCollection : CollectionBase, IReflectionStructureVisitable {
-
-		ModuleDefinition m_container;
-
-		public AssemblyNameReference this [int index] {
-			get { return List [index] as AssemblyNameReference; }
-			set { List [index] = value; }
-		}
-
-		public ModuleDefinition Container {
-			get { return m_container; }
-		}
-
-		public AssemblyNameReferenceCollection (ModuleDefinition container)
-		{
-			m_container = container;
-		}
-
-		public void Add (AssemblyNameReference value)
-		{
-			List.Add (value);
-		}
-
-		public bool Contains (AssemblyNameReference value)
-		{
-			return List.Contains (value);
-		}
-
-		public int IndexOf (AssemblyNameReference value)
-		{
-			return List.IndexOf (value);
-		}
-
-		public void Insert (int index, AssemblyNameReference value)
-		{
-			List.Insert (index, value);
-		}
-
-		public void Remove (AssemblyNameReference value)
-		{
-			List.Remove (value);
-		}
-
-		protected override void OnValidate (object o)
-		{
-			if (! (o is AssemblyNameReference))
-				throw new ArgumentException ("Must be of type " + typeof (AssemblyNameReference).FullName);
-		}
-
-		public void Accept (IReflectionStructureVisitor visitor)
-		{
-			visitor.VisitAssemblyNameReferenceCollection (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyReader.cs b/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyReader.cs
new file mode 100644
index 0000000..57c3c15
--- /dev/null
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyReader.cs
@@ -0,0 +1,3027 @@
+//
+// AssemblyReader.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Text;
+
+using Mono.Collections.Generic;
+using Mono.Cecil.Cil;
+using Mono.Cecil.Metadata;
+using Mono.Cecil.PE;
+
+using RVA = System.UInt32;
+
+namespace Mono.Cecil {
+
+	abstract class ModuleReader {
+
+		readonly protected Image image;
+		readonly protected ModuleDefinition module;
+
+		protected ModuleReader (Image image, ReadingMode mode)
+		{
+			this.image = image;
+			this.module = new ModuleDefinition (image);
+			this.module.ReadingMode = mode;
+		}
+
+		protected abstract void ReadModule ();
+
+		protected void ReadModuleManifest (MetadataReader reader)
+		{
+			reader.Populate (module);
+
+			ReadAssembly (reader);
+		}
+
+		void ReadAssembly (MetadataReader reader)
+		{
+			var name = reader.ReadAssemblyNameDefinition ();
+			if (name == null) {
+				module.kind = ModuleKind.NetModule;
+				return;
+			}
+
+			var assembly = new AssemblyDefinition ();
+			assembly.Name = name;
+
+			module.assembly = assembly;
+			assembly.main_module = module;
+		}
+
+		public static ModuleDefinition CreateModuleFrom (Image image, ReaderParameters parameters)
+		{
+			var module = ReadModule (image, parameters);
+
+			ReadSymbols (module, parameters);
+
+			if (parameters.AssemblyResolver != null)
+				module.assembly_resolver = parameters.AssemblyResolver;
+
+			return module;
+		}
+
+		static void ReadSymbols (ModuleDefinition module, ReaderParameters parameters)
+		{
+			var symbol_reader_provider = parameters.SymbolReaderProvider;
+
+			if (symbol_reader_provider == null && parameters.ReadSymbols)
+				symbol_reader_provider = SymbolProvider.GetPlatformReaderProvider ();
+
+			if (symbol_reader_provider != null) {
+				module.SymbolReaderProvider = symbol_reader_provider;
+
+				var reader = parameters.SymbolStream != null
+					? symbol_reader_provider.GetSymbolReader (module, parameters.SymbolStream)
+					: symbol_reader_provider.GetSymbolReader (module, module.FullyQualifiedName);
+
+				module.ReadSymbols (reader);
+			}
+		}
+
+		static ModuleDefinition ReadModule (Image image, ReaderParameters parameters)
+		{
+			var reader = CreateModuleReader (image, parameters.ReadingMode);
+			reader.ReadModule ();
+			return reader.module;
+		}
+
+		static ModuleReader CreateModuleReader (Image image, ReadingMode mode)
+		{
+			switch (mode) {
+			case ReadingMode.Immediate:
+				return new ImmediateModuleReader (image);
+			case ReadingMode.Deferred:
+				return new DeferredModuleReader (image);
+			default:
+				throw new ArgumentException ();
+			}
+		}
+	}
+
+	sealed class ImmediateModuleReader : ModuleReader {
+
+		public ImmediateModuleReader (Image image)
+			: base (image, ReadingMode.Immediate)
+		{
+		}
+
+		protected override void ReadModule ()
+		{
+			this.module.Read (this.module, (module, reader) => {
+				ReadModuleManifest (reader);
+				ReadModule (module);
+				return module;
+			});
+		}
+
+		public static void ReadModule (ModuleDefinition module)
+		{
+			if (module.HasAssemblyReferences)
+				Read (module.AssemblyReferences);
+			if (module.HasResources)
+				Read (module.Resources);
+			if (module.HasModuleReferences)
+				Read (module.ModuleReferences);
+			if (module.HasTypes)
+				ReadTypes (module.Types);
+			if (module.HasExportedTypes)
+				Read (module.ExportedTypes);
+			if (module.HasCustomAttributes)
+				Read (module.CustomAttributes);
+
+			var assembly = module.Assembly;
+			if (assembly == null)
+				return;
+
+			if (assembly.HasCustomAttributes)
+				Read (assembly.CustomAttributes);
+			if (assembly.HasSecurityDeclarations)
+				Read (assembly.SecurityDeclarations);
+		}
+
+		static void ReadTypes (Collection<TypeDefinition> types)
+		{
+			for (int i = 0; i < types.Count; i++)
+				ReadType (types [i]);
+		}
+
+		static void ReadType (TypeDefinition type)
+		{
+			ReadGenericParameters (type);
+
+			if (type.HasInterfaces)
+				Read (type.Interfaces);
+
+			if (type.HasNestedTypes)
+				ReadTypes (type.NestedTypes);
+
+			if (type.HasLayoutInfo)
+				Read (type.ClassSize);
+
+			if (type.HasFields)
+				ReadFields (type);
+
+			if (type.HasMethods)
+				ReadMethods (type);
+
+			if (type.HasProperties)
+				ReadProperties (type);
+
+			if (type.HasEvents)
+				ReadEvents (type);
+
+			ReadSecurityDeclarations (type);
+			ReadCustomAttributes (type);
+		}
+
+		static void ReadGenericParameters (IGenericParameterProvider provider)
+		{
+			if (!provider.HasGenericParameters)
+				return;
+
+			var parameters = provider.GenericParameters;
+
+			for (int i = 0; i < parameters.Count; i++) {
+				var parameter = parameters [i];
+
+				if (parameter.HasConstraints)
+					Read (parameter.Constraints);
+
+				if (parameter.HasCustomAttributes)
+					Read (parameter.CustomAttributes);
+			}
+		}
+
+		static void ReadSecurityDeclarations (ISecurityDeclarationProvider provider)
+		{
+			if (provider.HasSecurityDeclarations)
+				Read (provider.SecurityDeclarations);
+		}
+
+		static void ReadCustomAttributes (ICustomAttributeProvider provider)
+		{
+			if (provider.HasCustomAttributes)
+				Read (provider.CustomAttributes);
+		}
+
+		static void ReadFields (TypeDefinition type)
+		{
+			var fields = type.Fields;
+
+			for (int i = 0; i < fields.Count; i++) {
+				var field = fields [i];
+
+				if (field.HasConstant)
+					Read (field.Constant);
+
+				if (field.HasLayoutInfo)
+					Read (field.Offset);
+
+				if (field.RVA > 0)
+					Read (field.InitialValue);
+
+				if (field.HasMarshalInfo)
+					Read (field.MarshalInfo);
+
+				ReadCustomAttributes (field);
+			}
+		}
+
+		static void ReadMethods (TypeDefinition type)
+		{
+			var methods = type.Methods;
+
+			for (int i = 0; i < methods.Count; i++) {
+				var method = methods [i];
+
+				ReadGenericParameters (method);
+
+				if (method.HasParameters)
+					ReadParameters (method);
+
+				if (method.HasOverrides)
+					Read (method.Overrides);
+
+				if (method.IsPInvokeImpl)
+					Read (method.PInvokeInfo);
+
+				ReadSecurityDeclarations (method);
+				ReadCustomAttributes (method);
+
+				var return_type = method.MethodReturnType;
+				if (return_type.HasConstant)
+					Read (return_type.Constant);
+
+				if (return_type.HasMarshalInfo)
+					Read (return_type.MarshalInfo);
+
+				ReadCustomAttributes (return_type);
+			}
+		}
+
+		static void ReadParameters (MethodDefinition method)
+		{
+			var parameters = method.Parameters;
+
+			for (int i = 0; i < parameters.Count; i++) {
+				var parameter = parameters [i];
+
+				if (parameter.HasConstant)
+					Read (parameter.Constant);
+
+				if (parameter.HasMarshalInfo)
+					Read (parameter.MarshalInfo);
+
+				ReadCustomAttributes (parameter);
+			}
+		}
+
+		static void ReadProperties (TypeDefinition type)
+		{
+			var properties = type.Properties;
+
+			for (int i = 0; i < properties.Count; i++) {
+				var property = properties [i];
+
+				Read (property.GetMethod);
+
+				if (property.HasConstant)
+					Read (property.Constant);
+
+				ReadCustomAttributes (property);
+			}
+		}
+
+		static void ReadEvents (TypeDefinition type)
+		{
+			var events = type.Events;
+
+			for (int i = 0; i < events.Count; i++) {
+				var @event = events [i];
+
+				Read (@event.AddMethod);
+
+				ReadCustomAttributes (@event);
+			}
+		}
+
+		static void Read (object collection)
+		{
+		}
+	}
+
+	sealed class DeferredModuleReader : ModuleReader {
+
+		public DeferredModuleReader (Image image)
+			: base (image, ReadingMode.Deferred)
+		{
+		}
+
+		protected override void ReadModule ()
+		{
+			this.module.Read (this.module, (module, reader) => {
+				ReadModuleManifest (reader);
+				return module;
+			});
+		}
+	}
+
+	sealed class MetadataReader : ByteBuffer {
+
+		readonly internal Image image;
+		readonly internal ModuleDefinition module;
+		readonly internal MetadataSystem metadata;
+
+		internal IGenericContext context;
+		internal CodeReader code;
+
+		uint Position {
+			get { return (uint) base.position; }
+			set { base.position = (int) value; }
+		}
+
+		public MetadataReader (ModuleDefinition module)
+			: base (module.Image.MetadataSection.Data)
+		{
+			this.image = module.Image;
+			this.module = module;
+			this.metadata = module.MetadataSystem;
+			this.code = CodeReader.CreateCodeReader (this);
+		}
+
+		int GetCodedIndexSize (CodedIndex index)
+		{
+			return image.GetCodedIndexSize (index);
+		}
+
+		uint ReadByIndexSize (int size)
+		{
+			if (size == 4)
+				return ReadUInt32 ();
+			else
+				return ReadUInt16 ();
+		}
+
+		byte [] ReadBlob ()
+		{
+			var blob_heap = image.BlobHeap;
+			if (blob_heap == null) {
+				position += 2;
+				return Empty<byte>.Array;
+			}
+
+			return blob_heap.Read (ReadBlobIndex ());
+		}
+
+		byte [] ReadBlob (uint signature)
+		{
+			var blob_heap = image.BlobHeap;
+			if (blob_heap == null)
+				return Empty<byte>.Array;
+
+			return blob_heap.Read (signature);
+		}
+
+		uint ReadBlobIndex ()
+		{
+			var blob_heap = image.BlobHeap;
+			return ReadByIndexSize (blob_heap != null ? blob_heap.IndexSize : 2);
+		}
+
+		string ReadString ()
+		{
+			return image.StringHeap.Read (ReadByIndexSize (image.StringHeap.IndexSize));
+		}
+
+		uint ReadStringIndex ()
+		{
+			return ReadByIndexSize (image.StringHeap.IndexSize);
+		}
+
+		uint ReadTableIndex (Table table)
+		{
+			return ReadByIndexSize (image.GetTableIndexSize (table));
+		}
+
+		MetadataToken ReadMetadataToken (CodedIndex index)
+		{
+			return index.GetMetadataToken (ReadByIndexSize (GetCodedIndexSize (index)));
+		}
+
+		int MoveTo (Table table)
+		{
+			var info = image.TableHeap [table];
+			if (info.Length != 0)
+				Position = info.Offset;
+
+			return (int) info.Length;
+		}
+
+		bool MoveTo (Table table, uint row)
+		{
+			var info = image.TableHeap [table];
+			var length = info.Length;
+			if (length == 0 || row > length)
+				return false;
+
+			Position = info.Offset + (info.RowSize * (row - 1));
+			return true;
+		}
+
+		public AssemblyNameDefinition ReadAssemblyNameDefinition ()
+		{
+			if (MoveTo (Table.Assembly) == 0)
+				return null;
+
+			var name = new AssemblyNameDefinition ();
+
+			name.HashAlgorithm = (AssemblyHashAlgorithm) ReadUInt32 ();
+
+			PopulateVersionAndFlags (name);
+
+			name.PublicKey = ReadBlob ();
+
+			PopulateNameAndCulture (name);
+
+			return name;
+		}
+
+		public ModuleDefinition Populate (ModuleDefinition module)
+		{
+			if (MoveTo (Table.Module) == 0)
+				return module;
+
+			Advance (2); // Generation
+
+			module.Name = ReadString ();
+			module.Mvid = image.GuidHeap.Read (ReadByIndexSize (image.GuidHeap.IndexSize));
+
+			return module;
+		}
+
+		public Collection<AssemblyNameReference> ReadAssemblyReferences ()
+		{
+			int length = MoveTo (Table.AssemblyRef);
+			var references = new Collection<AssemblyNameReference> (length);
+
+			for (uint i = 1; i <= length; i++) {
+				var reference = new AssemblyNameReference ();
+				reference.token = new MetadataToken (TokenType.AssemblyRef, i);
+
+				PopulateVersionAndFlags (reference);
+
+				reference.PublicKeyToken = ReadBlob ();
+
+				PopulateNameAndCulture (reference);
+
+				reference.Hash = ReadBlob ();
+
+				references.Add (reference);
+			}
+
+			return references;
+		}
+
+		public MethodDefinition ReadEntryPoint ()
+		{
+			if (module.Kind != ModuleKind.Console && module.Kind != ModuleKind.Windows)
+				return null;
+
+			var token = new MetadataToken (module.Image.EntryPointToken);
+
+			return GetMethodDefinition (token.RID);
+		}
+
+		public Collection<ModuleDefinition> ReadModules ()
+		{
+			var modules = new Collection<ModuleDefinition> (1);
+			modules.Add (this.module);
+
+			int length = MoveTo (Table.File);
+			for (uint i = 1; i <= length; i++) {
+				var attributes = (FileAttributes) ReadUInt32 ();
+				var name = ReadString ();
+				ReadBlobIndex ();
+
+				if (attributes != FileAttributes.ContainsMetaData)
+					continue;
+
+				var parameters = new ReaderParameters {
+					ReadingMode = module.ReadingMode,
+					SymbolReaderProvider = module.SymbolReaderProvider,
+				};
+
+				modules.Add (ModuleDefinition.ReadModule (
+					GetModuleFileName (name), parameters));
+			}
+
+			return modules;
+		}
+
+		string GetModuleFileName (string name)
+		{
+			if (module.FullyQualifiedName == null)
+				throw new NotSupportedException ();
+
+			var path = Path.GetDirectoryName (module.FullyQualifiedName);
+			return Path.Combine (path, name);
+		}
+
+		public Collection<ModuleReference> ReadModuleReferences ()
+		{
+			int length = MoveTo (Table.ModuleRef);
+			var references = new Collection<ModuleReference> (length);
+
+			for (uint i = 1; i <= length; i++) {
+				var reference = new ModuleReference (ReadString ());
+				reference.token = new MetadataToken (TokenType.ModuleRef, i);
+
+				references.Add (reference);
+			}
+
+			return references;
+		}
+
+		public bool HasFileResource ()
+		{
+			int length = MoveTo (Table.File);
+			if (length == 0)
+				return false;
+
+			for (uint i = 1; i <= length; i++)
+				if (ReadFileRecord (i).Col1 == FileAttributes.ContainsNoMetaData)
+					return true;
+
+			return false;
+		}
+
+		public Collection<Resource> ReadResources ()
+		{
+			int length = MoveTo (Table.ManifestResource);
+			var resources = new Collection<Resource> (length);
+
+			for (int i = 1; i <= length; i++) {
+				var offset = ReadUInt32 ();
+				var flags = (ManifestResourceAttributes) ReadUInt32 ();
+				var name = ReadString ();
+				var implementation = ReadMetadataToken (CodedIndex.Implementation);
+
+				Resource resource;
+
+				if (implementation.RID == 0) {
+					resource = new EmbeddedResource (name, flags, offset, this);
+				} else if (implementation.TokenType == TokenType.AssemblyRef) {
+					resource = new AssemblyLinkedResource (name, flags) {
+						Assembly = (AssemblyNameReference) GetTypeReferenceScope (implementation),
+					};
+				} else if (implementation.TokenType == TokenType.File) {
+					var file_record = ReadFileRecord (implementation.RID);
+
+					resource = new LinkedResource (name, flags) {
+						File = file_record.Col2,
+						hash = ReadBlob (file_record.Col3)
+					};
+				} else
+					throw new NotSupportedException ();
+
+				resources.Add (resource);
+			}
+
+			return resources;
+		}
+
+		Row<FileAttributes, string, uint> ReadFileRecord (uint rid)
+		{
+			var position = this.position;
+
+			if (!MoveTo (Table.File, rid))
+				throw new ArgumentException ();
+
+			var record = new Row<FileAttributes, string, uint> (
+				(FileAttributes) ReadUInt32 (),
+				ReadString (),
+				ReadBlobIndex ());
+
+			this.position = position;
+
+			return record;
+		}
+
+		public MemoryStream GetManagedResourceStream (uint offset)
+		{
+			var rva = image.Resources.VirtualAddress;
+			var section = image.GetSectionAtVirtualAddress (rva);
+			var position = (rva - section.VirtualAddress) + offset;
+			var buffer = section.Data;
+
+			var length = buffer [position]
+				| (buffer [position + 1] << 8)
+				| (buffer [position + 2] << 16)
+				| (buffer [position + 3] << 24);
+
+			return new MemoryStream (buffer, (int) position + 4, length);
+		}
+
+		void PopulateVersionAndFlags (AssemblyNameReference name)
+		{
+			name.Version = new Version (
+				ReadUInt16 (),
+				ReadUInt16 (),
+				ReadUInt16 (),
+				ReadUInt16 ());
+
+			name.Attributes = (AssemblyAttributes) ReadUInt32 ();
+		}
+
+		void PopulateNameAndCulture (AssemblyNameReference name)
+		{
+			name.Name = ReadString ();
+			name.Culture = ReadString ();
+		}
+
+		public TypeDefinitionCollection ReadTypes ()
+		{
+			InitializeTypeDefinitions ();
+			var mtypes = metadata.Types;
+			var type_count = mtypes.Length - metadata.NestedTypes.Count;
+			var types = new TypeDefinitionCollection (module, type_count);
+
+			for (int i = 0; i < mtypes.Length; i++) {
+				var type = mtypes [i];
+				if (IsNested (type.Attributes))
+					continue;
+
+				types.Add (type);
+			}
+
+			return types;
+		}
+
+		void InitializeTypeDefinitions ()
+		{
+			if (metadata.Types != null)
+				return;
+
+			InitializeNestedTypes ();
+			InitializeFields ();
+			InitializeMethods ();
+
+			int length = MoveTo (Table.TypeDef);
+			var types = metadata.Types = new TypeDefinition [length];
+
+			for (uint i = 0; i < length; i++) {
+				if (types [i] != null)
+					continue;
+
+				types [i] = ReadType (i + 1);
+			}
+		}
+
+		static bool IsNested (TypeAttributes attributes)
+		{
+			switch (attributes & TypeAttributes.VisibilityMask) {
+			case TypeAttributes.NestedAssembly:
+			case TypeAttributes.NestedFamANDAssem:
+			case TypeAttributes.NestedFamily:
+			case TypeAttributes.NestedFamORAssem:
+			case TypeAttributes.NestedPrivate:
+			case TypeAttributes.NestedPublic:
+				return true;
+			default:
+				return false;
+			}
+		}
+
+		public bool HasNestedTypes (TypeDefinition type)
+		{
+			uint [] mapping;
+			InitializeNestedTypes ();
+
+			if (!metadata.TryGetNestedTypeMapping (type, out mapping))
+				return false;
+
+			return mapping.Length > 0;
+		}
+
+		public Collection<TypeDefinition> ReadNestedTypes (TypeDefinition type)
+		{
+			InitializeNestedTypes ();
+			uint [] mapping;
+			if (!metadata.TryGetNestedTypeMapping (type, out mapping))
+				return new MemberDefinitionCollection<TypeDefinition> (type);
+
+			var nested_types = new MemberDefinitionCollection<TypeDefinition> (type, mapping.Length);
+
+			for (int i = 0; i < mapping.Length; i++)
+				nested_types.Add (GetTypeDefinition (mapping [i]));
+
+			metadata.RemoveNestedTypeMapping (type);
+
+			return nested_types;
+		}
+
+		void InitializeNestedTypes ()
+		{
+			if (metadata.NestedTypes != null)
+				return;
+
+			var length = MoveTo (Table.NestedClass);
+
+			metadata.NestedTypes = new Dictionary<uint, uint []> (length);
+			metadata.ReverseNestedTypes = new Dictionary<uint, uint> (length);
+
+			if (length == 0)
+				return;
+
+			for (int i = 1; i <= length; i++) {
+				var nested = ReadTableIndex (Table.TypeDef);
+				var declaring = ReadTableIndex (Table.TypeDef);
+
+				AddNestedMapping (declaring, nested);
+			}
+		}
+
+		void AddNestedMapping (uint declaring, uint nested)
+		{
+			metadata.SetNestedTypeMapping (declaring, AddMapping (metadata.NestedTypes, declaring, nested));
+			metadata.SetReverseNestedTypeMapping (nested, declaring);
+		}
+
+		static TValue [] AddMapping<TKey, TValue> (Dictionary<TKey, TValue []> cache, TKey key, TValue value)
+		{
+			TValue [] mapped;
+			if (!cache.TryGetValue (key, out mapped)) {
+				mapped = new [] { value };
+				return mapped;
+			}
+
+			var new_mapped = new TValue [mapped.Length + 1];
+			Array.Copy (mapped, new_mapped, mapped.Length);
+			new_mapped [mapped.Length] = value;
+			return new_mapped;
+		}
+
+		TypeDefinition ReadType (uint rid)
+		{
+			if (!MoveTo (Table.TypeDef, rid))
+				return null;
+
+			var attributes = (TypeAttributes) ReadUInt32 ();
+			var name = ReadString ();
+			var @namespace = ReadString ();
+			var type = new TypeDefinition (@namespace, name, attributes);
+			type.token = new MetadataToken (TokenType.TypeDef, rid);
+			type.scope = module;
+			type.module = module;
+
+			metadata.AddTypeDefinition (type);
+
+			this.context = type;
+
+			type.BaseType = GetTypeDefOrRef (ReadMetadataToken (CodedIndex.TypeDefOrRef));
+
+			type.fields_range = ReadFieldsRange (rid);
+			type.methods_range = ReadMethodsRange (rid);
+
+			if (IsNested (attributes))
+				type.DeclaringType = GetNestedTypeDeclaringType (type);
+
+			return type;
+		}
+
+		TypeDefinition GetNestedTypeDeclaringType (TypeDefinition type)
+		{
+			uint declaring_rid;
+			if (!metadata.TryGetReverseNestedTypeMapping (type, out declaring_rid))
+				return null;
+
+			metadata.RemoveReverseNestedTypeMapping (type);
+			return GetTypeDefinition (declaring_rid);
+		}
+
+		Range ReadFieldsRange (uint type_index)
+		{
+			return ReadListRange (type_index, Table.TypeDef, Table.Field);
+		}
+
+		Range ReadMethodsRange (uint type_index)
+		{
+			return ReadListRange (type_index, Table.TypeDef, Table.Method);
+		}
+
+		Range ReadListRange (uint current_index, Table current, Table target)
+		{
+			var list = new Range ();
+
+			list.Start = ReadTableIndex (target);
+
+			uint next_index;
+			var current_table = image.TableHeap [current];
+
+			if (current_index == current_table.Length)
+				next_index = image.TableHeap [target].Length + 1;
+			else {
+				var position = Position;
+				Position += (uint) (current_table.RowSize - image.GetTableIndexSize (target));
+				next_index = ReadTableIndex (target);
+				Position = position;
+			}
+
+			list.Length = next_index - list.Start;
+
+			return list;
+		}
+
+		public Row<short, int> ReadTypeLayout (TypeDefinition type)
+		{
+			InitializeTypeLayouts ();
+			Row<ushort, uint> class_layout;
+			var rid = type.token.RID;
+			if (!metadata.ClassLayouts.TryGetValue (rid, out class_layout))
+				return new Row<short, int> (Mixin.NoDataMarker, Mixin.NoDataMarker);
+
+			type.PackingSize = (short) class_layout.Col1;
+			type.ClassSize = (int) class_layout.Col2;
+
+			metadata.ClassLayouts.Remove (rid);
+
+			return new Row<short, int> ((short) class_layout.Col1, (int) class_layout.Col2);
+		}
+
+		void InitializeTypeLayouts ()
+		{
+			if (metadata.ClassLayouts != null)
+				return;
+
+			int length = MoveTo (Table.ClassLayout);
+
+			var class_layouts = metadata.ClassLayouts = new Dictionary<uint, Row<ushort, uint>> (length);
+
+			for (uint i = 0; i < length; i++) {
+				var packing_size = ReadUInt16 ();
+				var class_size = ReadUInt32 ();
+
+				var parent = ReadTableIndex (Table.TypeDef);
+
+				class_layouts.Add (parent, new Row<ushort, uint> (packing_size, class_size));
+			}
+		}
+
+		public TypeReference GetTypeDefOrRef (MetadataToken token)
+		{
+			return (TypeReference) LookupToken (token);
+		}
+
+		public TypeDefinition GetTypeDefinition (uint rid)
+		{
+			InitializeTypeDefinitions ();
+
+			var type = metadata.GetTypeDefinition (rid);
+			if (type != null)
+				return type;
+
+			return ReadTypeDefinition (rid);
+		}
+
+		TypeDefinition ReadTypeDefinition (uint rid)
+		{
+			if (!MoveTo (Table.TypeDef, rid))
+				return null;
+
+			return ReadType (rid);
+		}
+
+		void InitializeTypeReferences ()
+		{
+			if (metadata.TypeReferences != null)
+				return;
+
+			metadata.TypeReferences = new TypeReference [image.GetTableLength (Table.TypeRef)];
+		}
+
+		public TypeReference GetTypeReference (string scope, string full_name)
+		{
+			InitializeTypeReferences ();
+
+			var length = metadata.TypeReferences.Length;
+
+			for (uint i = 1; i <= length; i++) {
+				var type = GetTypeReference (i);
+
+				if (type.FullName != full_name)
+					continue;
+
+				if (string.IsNullOrEmpty (scope))
+					return type;
+
+				if (type.Scope.Name == scope)
+					return type;
+			}
+
+			return null;
+		}
+
+		TypeReference GetTypeReference (uint rid)
+		{
+			InitializeTypeReferences ();
+
+			var type = metadata.GetTypeReference (rid);
+			if (type != null)
+				return type;
+
+			return ReadTypeReference (rid);
+		}
+
+		TypeReference ReadTypeReference (uint rid)
+		{
+			if (!MoveTo (Table.TypeRef, rid))
+				return null;
+
+			TypeReference declaring_type = null;
+			IMetadataScope scope;
+
+			var scope_token = ReadMetadataToken (CodedIndex.ResolutionScope);
+
+			var name = ReadString ();
+			var @namespace = ReadString ();
+
+			var type = new TypeReference (
+				@namespace,
+				name,
+				module,
+				null);
+
+			type.token = new MetadataToken (TokenType.TypeRef, rid);
+
+			metadata.AddTypeReference (type);
+
+			if (scope_token.TokenType == TokenType.TypeRef) {
+				declaring_type = GetTypeDefOrRef (scope_token);
+
+				scope = declaring_type != null
+					? declaring_type.Scope
+					: module;
+			} else
+				scope = GetTypeReferenceScope (scope_token);
+
+			type.scope = scope;
+			type.DeclaringType = declaring_type;
+
+			MetadataSystem.TryProcessPrimitiveType (type);
+
+			return type;
+		}
+
+		IMetadataScope GetTypeReferenceScope (MetadataToken scope)
+		{
+			switch (scope.TokenType) {
+			// FIXME: both assembly refs and module refs should be in their
+			// own arrays, in case of someone modify the collections before
+			// this code is called
+			case TokenType.AssemblyRef:
+				return module.AssemblyReferences [(int) scope.RID - 1];
+			case TokenType.ModuleRef:
+				return module.ModuleReferences [(int) scope.RID - 1];
+			case TokenType.Module:
+				return module;
+			default:
+				throw new NotSupportedException ();
+			}
+		}
+
+		public IEnumerable<TypeReference> GetTypeReferences ()
+		{
+			InitializeTypeReferences ();
+
+			var length = image.GetTableLength (Table.TypeRef);
+
+			var type_references = new TypeReference [length];
+
+			for (uint i = 1; i <= length; i++)
+				type_references [i - 1] = GetTypeReference (i);
+
+			return type_references;
+		}
+
+		TypeReference GetTypeSpecification (uint rid)
+		{
+			if (!MoveTo (Table.TypeSpec, rid))
+				return null;
+
+			var reader = ReadSignature (ReadBlobIndex ());
+			var type = reader.ReadTypeSignature ();
+			if (type.token.RID == 0)
+				type.token = new MetadataToken (TokenType.TypeSpec, rid);
+
+			return type;
+		}
+
+		SignatureReader ReadSignature (uint signature)
+		{
+			return new SignatureReader (signature, this);
+		}
+
+		public bool HasInterfaces (TypeDefinition type)
+		{
+			InitializeInterfaces ();
+			MetadataToken [] mapping;
+
+			return metadata.TryGetInterfaceMapping (type, out mapping);
+		}
+
+		public Collection<TypeReference> ReadInterfaces (TypeDefinition type)
+		{
+			InitializeInterfaces ();
+			MetadataToken [] mapping;
+
+			if (!metadata.TryGetInterfaceMapping (type, out mapping))
+				return new Collection<TypeReference> ();
+
+			var interfaces = new Collection<TypeReference> (mapping.Length);
+
+			this.context = type;
+
+			for (int i = 0; i < mapping.Length; i++)
+				interfaces.Add (GetTypeDefOrRef (mapping [i]));
+
+			metadata.RemoveInterfaceMapping (type);
+
+			return interfaces;
+		}
+
+		void InitializeInterfaces ()
+		{
+			if (metadata.Interfaces != null)
+				return;
+
+			int length = MoveTo (Table.InterfaceImpl);
+
+			metadata.Interfaces = new Dictionary<uint, MetadataToken []> (length);
+
+			for (int i = 0; i < length; i++) {
+				var type = ReadTableIndex (Table.TypeDef);
+				var @interface = ReadMetadataToken (CodedIndex.TypeDefOrRef);
+
+				AddInterfaceMapping (type, @interface);
+			}
+		}
+
+		void AddInterfaceMapping (uint type, MetadataToken @interface)
+		{
+			metadata.SetInterfaceMapping (type, AddMapping (metadata.Interfaces, type, @interface));
+		}
+
+		public Collection<FieldDefinition> ReadFields (TypeDefinition type)
+		{
+			var fields_range = type.fields_range;
+			if (fields_range.Length == 0)
+				return new MemberDefinitionCollection<FieldDefinition> (type);
+
+			var fields = new MemberDefinitionCollection<FieldDefinition> (type, (int) fields_range.Length);
+			this.context = type;
+
+			MoveTo (Table.Field, fields_range.Start);
+			for (uint i = 0; i < fields_range.Length; i++)
+				fields.Add (ReadField (fields_range.Start + i));
+
+			return fields;
+		}
+
+		FieldDefinition ReadField (uint field_rid)
+		{
+			var attributes = (FieldAttributes) ReadUInt16 ();
+			var name = ReadString ();
+			var signature = ReadBlobIndex ();
+
+			var field = new FieldDefinition (name, attributes, ReadFieldType (signature));
+			field.token = new MetadataToken (TokenType.Field, field_rid);
+			metadata.AddFieldDefinition (field);
+
+			return field;
+		}
+
+		void InitializeFields ()
+		{
+			if (metadata.Fields != null)
+				return;
+
+			metadata.Fields = new FieldDefinition [image.GetTableLength (Table.Field)];
+		}
+
+		TypeReference ReadFieldType (uint signature)
+		{
+			var reader = ReadSignature (signature);
+
+			const byte field_sig = 0x6;
+
+			if (reader.ReadByte () != field_sig)
+				throw new NotSupportedException ();
+
+			return reader.ReadTypeSignature ();
+		}
+
+		public int ReadFieldRVA (FieldDefinition field)
+		{
+			InitializeFieldRVAs ();
+			var rid = field.token.RID;
+
+			RVA rva;
+			if (!metadata.FieldRVAs.TryGetValue (rid, out rva))
+				return 0;
+
+			var size = GetFieldTypeSize (field.FieldType);
+
+			if (size == 0 || rva == 0)
+				return 0;
+
+			metadata.FieldRVAs.Remove (rid);
+
+			field.InitialValue = GetFieldInitializeValue (size, rva);
+
+			return (int) rva;
+		}
+
+		byte [] GetFieldInitializeValue (int size, RVA rva)
+		{
+			var section = image.GetSectionAtVirtualAddress (rva);
+			if (section == null)
+				return Empty<byte>.Array;
+
+			var value = new byte [size];
+			Buffer.BlockCopy (section.Data, (int) (rva - section.VirtualAddress), value, 0, size);
+			return value;
+		}
+
+		static int GetFieldTypeSize (TypeReference type)
+		{
+			int size = 0;
+
+			switch (type.etype) {
+			case ElementType.Boolean:
+			case ElementType.U1:
+			case ElementType.I1:
+				size = 1;
+				break;
+			case ElementType.U2:
+			case ElementType.I2:
+			case ElementType.Char:
+				size = 2;
+				break;
+			case ElementType.U4:
+			case ElementType.I4:
+			case ElementType.R4:
+				size = 4;
+				break;
+			case ElementType.U8:
+			case ElementType.I8:
+			case ElementType.R8:
+				size = 8;
+				break;
+			case ElementType.Ptr:
+			case ElementType.FnPtr:
+				size = IntPtr.Size;
+				break;
+			case ElementType.CModOpt:
+			case ElementType.CModReqD:
+				return GetFieldTypeSize (((IModifierType) type).ElementType);
+			default:
+				var field_type = type.CheckedResolve ();
+				if (field_type.HasLayoutInfo)
+					size = field_type.ClassSize;
+
+				break;
+			}
+
+			return size;
+		}
+
+		void InitializeFieldRVAs ()
+		{
+			if (metadata.FieldRVAs != null)
+				return;
+
+			int length = MoveTo (Table.FieldRVA);
+
+			var field_rvas = metadata.FieldRVAs = new Dictionary<uint, uint> (length);
+
+			for (int i = 0; i < length; i++) {
+				var rva = ReadUInt32 ();
+				var field = ReadTableIndex (Table.Field);
+
+				field_rvas.Add (field, rva);
+			}
+		}
+
+		public int ReadFieldLayout (FieldDefinition field)
+		{
+			InitializeFieldLayouts ();
+			var rid = field.token.RID;
+			uint offset;
+			if (!metadata.FieldLayouts.TryGetValue (rid, out offset))
+				return Mixin.NoDataMarker;
+
+			metadata.FieldLayouts.Remove (rid);
+
+			return (int) offset;
+		}
+
+		void InitializeFieldLayouts ()
+		{
+			if (metadata.FieldLayouts != null)
+				return;
+
+			int length = MoveTo (Table.FieldLayout);
+
+			var field_layouts = metadata.FieldLayouts = new Dictionary<uint, uint> (length);
+
+			for (int i = 0; i < length; i++) {
+				var offset = ReadUInt32 ();
+				var field = ReadTableIndex (Table.Field);
+
+				field_layouts.Add (field, offset);
+			}
+		}
+
+		public bool HasEvents (TypeDefinition type)
+		{
+			InitializeEvents ();
+
+			Range range;
+			if (!metadata.TryGetEventsRange (type, out range))
+				return false;
+
+			return range.Length > 0;
+		}
+
+		public Collection<EventDefinition> ReadEvents (TypeDefinition type)
+		{
+			InitializeEvents ();
+			Range range;
+
+			if (!metadata.TryGetEventsRange (type, out range))
+				return new MemberDefinitionCollection<EventDefinition> (type);
+
+			var events = new MemberDefinitionCollection<EventDefinition> (type, (int) range.Length);
+
+			metadata.RemoveEventsRange (type);
+
+			if (range.Length == 0 || !MoveTo (Table.Event, range.Start))
+				return events;
+
+			this.context = type;
+
+			for (uint i = 0; i < range.Length; i++)
+				events.Add (ReadEvent (range.Start + i));
+
+			return events;
+		}
+
+		EventDefinition ReadEvent (uint event_rid)
+		{
+			var attributes = (EventAttributes) ReadUInt16 ();
+			var name = ReadString ();
+			var event_type = GetTypeDefOrRef (ReadMetadataToken (CodedIndex.TypeDefOrRef));
+
+			var @event = new EventDefinition (name, attributes, event_type);
+			@event.token = new MetadataToken (TokenType.Event, event_rid);
+			return @event;
+		}
+
+		void InitializeEvents ()
+		{
+			if (metadata.Events != null)
+				return;
+
+			int length = MoveTo (Table.EventMap);
+
+			metadata.Events = new Dictionary<uint, Range> (length);
+
+			for (uint i = 1; i <= length; i++) {
+				var type_rid = ReadTableIndex (Table.TypeDef);
+				Range events_range = ReadEventsRange (i);
+				metadata.AddEventsRange (type_rid, events_range);
+			}
+		}
+
+		Range ReadEventsRange (uint rid)
+		{
+			return ReadListRange (rid, Table.EventMap, Table.Event);
+		}
+
+		public bool HasProperties (TypeDefinition type)
+		{
+			InitializeProperties ();
+
+			Range range;
+			if (!metadata.TryGetPropertiesRange (type, out range))
+				return false;
+
+			return range.Length > 0;
+		}
+
+		public Collection<PropertyDefinition> ReadProperties (TypeDefinition type)
+		{
+			InitializeProperties ();
+
+			Range range;
+
+			if (!metadata.TryGetPropertiesRange (type, out range))
+				return new MemberDefinitionCollection<PropertyDefinition> (type);
+
+			metadata.RemovePropertiesRange (type);
+
+			var properties = new MemberDefinitionCollection<PropertyDefinition> (type, (int) range.Length);
+
+			if (range.Length == 0 || !MoveTo (Table.Property, range.Start))
+				return properties;
+
+			this.context = type;
+
+			for (uint i = 0; i < range.Length; i++)
+				properties.Add (ReadProperty (range.Start + i));
+
+			return properties;
+		}
+
+		PropertyDefinition ReadProperty (uint property_rid)
+		{
+			var attributes = (PropertyAttributes) ReadUInt16 ();
+			var name = ReadString ();
+			var signature = ReadBlobIndex ();
+
+			var reader = ReadSignature (signature);
+			const byte property_signature = 0x8;
+
+			var calling_convention = reader.ReadByte ();
+
+			if ((calling_convention & property_signature) == 0)
+				throw new NotSupportedException ();
+
+			var has_this = (calling_convention & 0x20) != 0;
+
+			reader.ReadCompressedUInt32 (); // count
+
+			var property = new PropertyDefinition (name, attributes, reader.ReadTypeSignature ());
+			property.HasThis = has_this;
+			property.token = new MetadataToken (TokenType.Property, property_rid);
+
+			return property;
+		}
+
+		void InitializeProperties ()
+		{
+			if (metadata.Properties != null)
+				return;
+
+			int length = MoveTo (Table.PropertyMap);
+
+			metadata.Properties = new Dictionary<uint, Range> (length);
+
+			for (uint i = 1; i <= length; i++) {
+				var type_rid = ReadTableIndex (Table.TypeDef);
+				var properties_range = ReadPropertiesRange (i);
+				metadata.AddPropertiesRange (type_rid, properties_range);
+			}
+		}
+
+		Range ReadPropertiesRange (uint rid)
+		{
+			return ReadListRange (rid, Table.PropertyMap, Table.Property);
+		}
+
+		MethodSemanticsAttributes ReadMethodSemantics (MethodDefinition method)
+		{
+			InitializeMethodSemantics ();
+			Row<MethodSemanticsAttributes, MetadataToken> row;
+			if (!metadata.Semantics.TryGetValue (method.token.RID, out row))
+				return MethodSemanticsAttributes.None;
+
+			var type = method.DeclaringType;
+
+			switch (row.Col1) {
+			case MethodSemanticsAttributes.AddOn:
+				GetEvent (type, row.Col2).add_method = method;
+				break;
+			case MethodSemanticsAttributes.Fire:
+				GetEvent (type, row.Col2).invoke_method = method;
+				break;
+			case MethodSemanticsAttributes.RemoveOn:
+				GetEvent (type, row.Col2).remove_method = method;
+				break;
+			case MethodSemanticsAttributes.Getter:
+				GetProperty (type, row.Col2).get_method = method;
+				break;
+			case MethodSemanticsAttributes.Setter:
+				GetProperty (type, row.Col2).set_method = method;
+				break;
+			case MethodSemanticsAttributes.Other:
+				switch (row.Col2.TokenType) {
+				case TokenType.Event: {
+					var @event = GetEvent (type, row.Col2);
+					if (@event.other_methods == null)
+						@event.other_methods = new Collection<MethodDefinition> ();
+
+					@event.other_methods.Add (method);
+					break;
+				}
+				case TokenType.Property: {
+					var property = GetProperty (type, row.Col2);
+					if (property.other_methods == null)
+						property.other_methods = new Collection<MethodDefinition> ();
+
+					property.other_methods.Add (method);
+
+					break;
+				}
+				default:
+					throw new NotSupportedException ();
+				}
+				break;
+			default:
+				throw new NotSupportedException ();
+			}
+
+			metadata.Semantics.Remove (method.token.RID);
+
+			return row.Col1;
+		}
+
+		static EventDefinition GetEvent (TypeDefinition type, MetadataToken token)
+		{
+			if (token.TokenType != TokenType.Event)
+				throw new ArgumentException ();
+
+			return GetMember (type.Events, token);
+		}
+
+		static PropertyDefinition GetProperty (TypeDefinition type, MetadataToken token)
+		{
+			if (token.TokenType != TokenType.Property)
+				throw new ArgumentException ();
+
+			return GetMember (type.Properties, token);
+		}
+
+		static TMember GetMember<TMember> (Collection<TMember> members, MetadataToken token) where TMember : IMemberDefinition
+		{
+			for (int i = 0; i < members.Count; i++) {
+				var member = members [i];
+				if (member.MetadataToken == token)
+					return member;
+			}
+
+			throw new ArgumentException ();
+		}
+
+		void InitializeMethodSemantics ()
+		{
+			if (metadata.Semantics != null)
+				return;
+
+			int length = MoveTo (Table.MethodSemantics);
+
+			var semantics = metadata.Semantics = new Dictionary<uint, Row<MethodSemanticsAttributes, MetadataToken>> (0);
+
+			for (uint i = 0; i < length; i++) {
+				var attributes = (MethodSemanticsAttributes) ReadUInt16 ();
+				var method_rid = ReadTableIndex (Table.Method);
+				var association = ReadMetadataToken (CodedIndex.HasSemantics);
+
+				semantics [method_rid] = new Row<MethodSemanticsAttributes, MetadataToken> (attributes, association);
+			}
+		}
+
+		public PropertyDefinition ReadMethods (PropertyDefinition property)
+		{
+			ReadAllSemantics (property.DeclaringType);
+			return property;
+		}
+
+		public EventDefinition ReadMethods (EventDefinition @event)
+		{
+			ReadAllSemantics (@event.DeclaringType);
+			return @event;
+		}
+
+		public MethodSemanticsAttributes ReadAllSemantics (MethodDefinition method)
+		{
+			ReadAllSemantics (method.DeclaringType);
+
+			return method.SemanticsAttributes;
+		}
+
+		void ReadAllSemantics (TypeDefinition type)
+		{
+			var methods = type.Methods;
+			for (int i = 0; i < methods.Count; i++) {
+				var method = methods [i];
+				if (method.sem_attrs.HasValue)
+					continue;
+
+				method.sem_attrs = ReadMethodSemantics (method);
+			}
+		}
+
+		Range ReadParametersRange (uint method_rid)
+		{
+			return ReadListRange (method_rid, Table.Method, Table.Param);
+		}
+
+		public Collection<MethodDefinition> ReadMethods (TypeDefinition type)
+		{
+			var methods_range = type.methods_range;
+			if (methods_range.Length == 0)
+				return new MemberDefinitionCollection<MethodDefinition> (type);
+
+			var methods = new MemberDefinitionCollection<MethodDefinition> (type, (int) methods_range.Length);
+
+			MoveTo (Table.Method, methods_range.Start);
+			for (uint i = 0; i < methods_range.Length; i++)
+				ReadMethod (methods_range.Start + i, methods);
+
+			return methods;
+		}
+
+		void InitializeMethods ()
+		{
+			if (metadata.Methods != null)
+				return;
+
+			metadata.Methods = new MethodDefinition [image.GetTableLength (Table.Method)];
+		}
+
+		void ReadMethod (uint method_rid, Collection<MethodDefinition> methods)
+		{
+			var method = new MethodDefinition ();
+			method.rva = ReadUInt32 ();
+			method.ImplAttributes = (MethodImplAttributes) ReadUInt16 ();
+			method.Attributes = (MethodAttributes) ReadUInt16 ();
+			method.Name = ReadString ();
+			method.token = new MetadataToken (TokenType.Method, method_rid);
+
+			methods.Add (method); // attach method
+
+			var signature = ReadBlobIndex ();
+			var param_range = ReadParametersRange (method_rid);
+
+			this.context = method;
+
+			ReadMethodSignature (signature, method);
+			metadata.AddMethodDefinition (method);
+
+			if (param_range.Length == 0)
+				return;
+
+			var position = base.position;
+			ReadParameters (method, param_range);
+			base.position = position;
+		}
+
+		void ReadParameters (MethodDefinition method, Range param_range)
+		{
+			MoveTo (Table.Param, param_range.Start);
+			for (uint i = 0; i < param_range.Length; i++) {
+				var attributes = (ParameterAttributes) ReadUInt16 ();
+				var sequence = ReadUInt16 ();
+				var name = ReadString ();
+
+				var parameter = sequence == 0
+					? method.MethodReturnType.Parameter
+					: method.Parameters [sequence - 1];
+
+				parameter.token = new MetadataToken (TokenType.Param, param_range.Start + i);
+				parameter.Name = name;
+				parameter.Attributes = attributes;
+			}
+		}
+
+		void ReadMethodSignature (uint signature, IMethodSignature method)
+		{
+			var reader = ReadSignature (signature);
+			reader.ReadMethodSignature (method);
+		}
+
+		public PInvokeInfo ReadPInvokeInfo (MethodDefinition method)
+		{
+			InitializePInvokes ();
+			Row<PInvokeAttributes, uint, uint> row;
+
+			var rid = method.token.RID;
+
+			if (!metadata.PInvokes.TryGetValue (rid, out row))
+				return null;
+
+			metadata.PInvokes.Remove (rid);
+
+			return new PInvokeInfo (
+				row.Col1,
+				image.StringHeap.Read (row.Col2),
+				module.ModuleReferences [(int) row.Col3 - 1]);
+		}
+
+		void InitializePInvokes ()
+		{
+			if (metadata.PInvokes != null)
+				return;
+
+			int length = MoveTo (Table.ImplMap);
+
+			var pinvokes = metadata.PInvokes = new Dictionary<uint, Row<PInvokeAttributes, uint, uint>> (length);
+
+			for (int i = 1; i <= length; i++) {
+				var attributes = (PInvokeAttributes) ReadUInt16 ();
+				var method = ReadMetadataToken (CodedIndex.MemberForwarded);
+				var name = ReadStringIndex ();
+				var scope = ReadTableIndex (Table.File);
+
+				if (method.TokenType != TokenType.Method)
+					continue;
+
+				pinvokes.Add (method.RID, new Row<PInvokeAttributes, uint, uint> (attributes, name, scope));
+			}
+		}
+
+		public bool HasGenericParameters (IGenericParameterProvider provider)
+		{
+			InitializeGenericParameters ();
+
+			Range range;
+			if (!metadata.TryGetGenericParameterRange (provider, out range))
+				return false;
+
+			return range.Length > 0;
+		}
+
+		public Collection<GenericParameter> ReadGenericParameters (IGenericParameterProvider provider)
+		{
+			InitializeGenericParameters ();
+
+			Range range;
+			if (!metadata.TryGetGenericParameterRange (provider, out range)
+				|| !MoveTo (Table.GenericParam, range.Start))
+				return new Collection<GenericParameter> ();
+
+			metadata.RemoveGenericParameterRange (provider);
+
+			var generic_parameters = new Collection<GenericParameter> ((int) range.Length);
+
+			for (uint i = 0; i < range.Length; i++) {
+				ReadUInt16 (); // index
+				var flags = (GenericParameterAttributes) ReadUInt16 ();
+				ReadMetadataToken (CodedIndex.TypeOrMethodDef);
+				var name = ReadString ();
+
+				var parameter = new GenericParameter (name, provider);
+				parameter.token = new MetadataToken (TokenType.GenericParam, range.Start + i);
+				parameter.Attributes = flags;
+
+				generic_parameters.Add (parameter);
+			}
+
+			return generic_parameters;
+		}
+
+		void InitializeGenericParameters ()
+		{
+			if (metadata.GenericParameters != null)
+				return;
+
+			metadata.GenericParameters = InitializeRanges (
+				Table.GenericParam, () => {
+					Advance (4);
+					var next = ReadMetadataToken (CodedIndex.TypeOrMethodDef);
+					ReadStringIndex ();
+					return next;
+			});
+		}
+
+		Dictionary<MetadataToken, Range> InitializeRanges (Table table, Func<MetadataToken> get_next)
+		{
+			int length = MoveTo (table);
+			var ranges = new Dictionary<MetadataToken, Range> (length);
+
+			if (length == 0)
+				return ranges;
+
+			MetadataToken owner = MetadataToken.Zero;
+			Range range = new Range (1, 0);
+
+			for (uint i = 1; i <= length; i++) {
+				var next = get_next ();
+
+				if (i == 1) {
+					owner = next;
+					range.Length++;
+				} else if (next != owner) {
+					if (owner.RID != 0)
+						ranges.Add (owner, range);
+					range = new Range (i, 1);
+					owner = next;
+				} else
+					range.Length++;
+			}
+
+			if (owner != MetadataToken.Zero)
+				ranges.Add (owner, range);
+
+			return ranges;
+		}
+
+		public bool HasGenericConstraints (GenericParameter generic_parameter)
+		{
+			InitializeGenericConstraints ();
+
+			MetadataToken [] mapping;
+			if (!metadata.TryGetGenericConstraintMapping (generic_parameter, out mapping))
+				return false;
+
+			return mapping.Length > 0;
+		}
+
+		public Collection<TypeReference> ReadGenericConstraints (GenericParameter generic_parameter)
+		{
+			InitializeGenericConstraints ();
+
+			MetadataToken [] mapping;
+			if (!metadata.TryGetGenericConstraintMapping (generic_parameter, out mapping))
+				return new Collection<TypeReference> ();
+
+			var constraints = new Collection<TypeReference> (mapping.Length);
+
+			this.context = (IGenericContext) generic_parameter.Owner;
+
+			for (int i = 0; i < mapping.Length; i++)
+				constraints.Add (GetTypeDefOrRef (mapping [i]));
+
+			metadata.RemoveGenericConstraintMapping (generic_parameter);
+
+			return constraints;
+		}
+
+		void InitializeGenericConstraints ()
+		{
+			if (metadata.GenericConstraints != null)
+				return;
+
+			var length = MoveTo (Table.GenericParamConstraint);
+
+			metadata.GenericConstraints = new Dictionary<uint, MetadataToken []> (length);
+
+			for (int i = 1; i <= length; i++)
+				AddGenericConstraintMapping (
+					ReadTableIndex (Table.GenericParam),
+					ReadMetadataToken (CodedIndex.TypeDefOrRef));
+		}
+
+		void AddGenericConstraintMapping (uint generic_parameter, MetadataToken constraint)
+		{
+			metadata.SetGenericConstraintMapping (
+				generic_parameter,
+				AddMapping (metadata.GenericConstraints, generic_parameter, constraint));
+		}
+
+		public bool HasOverrides (MethodDefinition method)
+		{
+			InitializeOverrides ();
+			MetadataToken [] mapping;
+
+			if (!metadata.TryGetOverrideMapping (method, out mapping))
+				return false;
+
+			return mapping.Length > 0;
+		}
+
+		public Collection<MethodReference> ReadOverrides (MethodDefinition method)
+		{
+			InitializeOverrides ();
+
+			MetadataToken [] mapping;
+			if (!metadata.TryGetOverrideMapping (method, out mapping))
+				return new Collection<MethodReference> ();
+
+			var overrides = new Collection<MethodReference> (mapping.Length);
+
+			this.context = method;
+
+			for (int i = 0; i < mapping.Length; i++)
+				overrides.Add ((MethodReference) LookupToken (mapping [i]));
+
+			metadata.RemoveOverrideMapping (method);
+
+			return overrides;
+		}
+
+		void InitializeOverrides ()
+		{
+			if (metadata.Overrides != null)
+				return;
+
+			var length = MoveTo (Table.MethodImpl);
+
+			metadata.Overrides = new Dictionary<uint, MetadataToken []> (length);
+
+			for (int i = 1; i <= length; i++) {
+				ReadTableIndex (Table.TypeDef);
+
+				var method = ReadMetadataToken (CodedIndex.MethodDefOrRef);
+				if (method.TokenType != TokenType.Method)
+					throw new NotSupportedException ();
+
+				var @override = ReadMetadataToken (CodedIndex.MethodDefOrRef);
+
+				AddOverrideMapping (method.RID, @override);
+			}
+		}
+
+		void AddOverrideMapping (uint method_rid, MetadataToken @override)
+		{
+			metadata.SetOverrideMapping (
+				method_rid,
+				AddMapping (metadata.Overrides, method_rid, @override));
+		}
+
+		public MethodBody ReadMethodBody (MethodDefinition method)
+		{
+			return code.ReadMethodBody (method);
+		}
+
+		public CallSite ReadCallSite (MetadataToken token)
+		{
+			if (!MoveTo (Table.StandAloneSig, token.RID))
+				return null;
+
+			var signature = ReadBlobIndex ();
+
+			var call_site = new CallSite ();
+
+			ReadMethodSignature (signature, call_site);
+
+			call_site.MetadataToken = token;
+
+			return call_site;
+		}
+
+		public VariableDefinitionCollection ReadVariables (MetadataToken local_var_token)
+		{
+			if (!MoveTo (Table.StandAloneSig, local_var_token.RID))
+				return null;
+
+			var reader = ReadSignature (ReadBlobIndex ());
+			const byte local_sig = 0x7;
+
+			if (reader.ReadByte () != local_sig)
+				throw new NotSupportedException ();
+
+			var count = reader.ReadCompressedUInt32 ();
+			if (count == 0)
+				return null;
+
+			var variables = new VariableDefinitionCollection ((int) count);
+
+			for (int i = 0; i < count; i++)
+				variables.Add (new VariableDefinition (reader.ReadTypeSignature ()));
+
+			return variables;
+		}
+
+		public IMetadataTokenProvider LookupToken (MetadataToken token)
+		{
+			var rid = token.RID;
+
+			if (rid == 0)
+				return null;
+
+			IMetadataTokenProvider element;
+			var position = this.position;
+			var context = this.context;
+
+			switch (token.TokenType) {
+			case TokenType.TypeDef:
+				element = GetTypeDefinition (rid);
+				break;
+			case TokenType.TypeRef:
+				element = GetTypeReference (rid);
+				break;
+			case TokenType.TypeSpec:
+				element = GetTypeSpecification (rid);
+				break;
+			case TokenType.Field:
+				element = GetFieldDefinition (rid);
+				break;
+			case TokenType.Method:
+				element = GetMethodDefinition (rid);
+				break;
+			case TokenType.MemberRef:
+				element = GetMemberReference (rid);
+				break;
+			case TokenType.MethodSpec:
+				element = GetMethodSpecification (rid);
+				break;
+			default:
+				return null;
+			}
+
+			this.position = position;
+			this.context = context;
+
+			return element;
+		}
+
+		public FieldDefinition GetFieldDefinition (uint rid)
+		{
+			InitializeTypeDefinitions ();
+
+			var field = metadata.GetFieldDefinition (rid);
+			if (field != null)
+				return field;
+
+			return LookupField (rid);
+		}
+
+		FieldDefinition LookupField (uint rid)
+		{
+			var type = metadata.GetFieldDeclaringType (rid);
+			if (type == null)
+				return null;
+
+			InitializeCollection (type.Fields);
+
+			return metadata.GetFieldDefinition (rid);
+		}
+
+		public MethodDefinition GetMethodDefinition (uint rid)
+		{
+			InitializeTypeDefinitions ();
+
+			var method = metadata.GetMethodDefinition (rid);
+			if (method != null)
+				return method;
+
+			return LookupMethod (rid);
+		}
+
+		MethodDefinition LookupMethod (uint rid)
+		{
+			var type = metadata.GetMethodDeclaringType (rid);
+			if (type == null)
+				return null;
+
+			InitializeCollection (type.Methods);
+
+			return metadata.GetMethodDefinition (rid);
+		}
+
+		MethodSpecification GetMethodSpecification (uint rid)
+		{
+			if (!MoveTo (Table.MethodSpec, rid))
+				return null;
+
+			var element_method = (MethodReference) LookupToken (
+				ReadMetadataToken (CodedIndex.MethodDefOrRef));
+			var signature = ReadBlobIndex ();
+
+			var method_spec = ReadMethodSpecSignature (signature, element_method);
+			method_spec.token = new MetadataToken (TokenType.MethodSpec, rid);
+			return method_spec;
+		}
+
+		MethodSpecification ReadMethodSpecSignature (uint signature, MethodReference method)
+		{
+			var reader = ReadSignature (signature);
+			const byte methodspec_sig = 0x0a;
+
+			var call_conv = reader.ReadByte ();
+
+			if (call_conv != methodspec_sig)
+				throw new NotSupportedException ();
+
+			var instance = new GenericInstanceMethod (method);
+
+			reader.ReadGenericInstanceSignature (method, instance);
+
+			return instance;
+		}
+
+		MemberReference GetMemberReference (uint rid)
+		{
+			InitializeMemberReferences ();
+
+			var member = metadata.GetMemberReference (rid);
+			if (member != null)
+				return member;
+
+			member = ReadMemberReference (rid);
+			if (member != null && !member.ContainsGenericParameter)
+				metadata.AddMemberReference (member);
+			return member;
+		}
+
+		MemberReference ReadMemberReference (uint rid)
+		{
+			if (!MoveTo (Table.MemberRef, rid))
+				return null;
+
+			var token = ReadMetadataToken (CodedIndex.MemberRefParent);
+			var name = ReadString ();
+			var signature = ReadBlobIndex ();
+
+			MemberReference member;
+
+			switch (token.TokenType) {
+			case TokenType.TypeDef:
+			case TokenType.TypeRef:
+			case TokenType.TypeSpec:
+				member = ReadTypeMemberReference (token, name, signature);
+				break;
+			case TokenType.Method:
+				member = ReadMethodMemberReference (token, name, signature);
+				break;
+			default:
+				throw new NotSupportedException ();
+			}
+
+			member.token = new MetadataToken (TokenType.MemberRef, rid);
+
+			return member;
+		}
+
+		MemberReference ReadTypeMemberReference (MetadataToken type, string name, uint signature)
+		{
+			var declaring_type = GetTypeDefOrRef (type);
+
+			this.context = declaring_type;
+
+			var member = ReadMemberReferenceSignature (signature, declaring_type);
+			member.Name = name;
+
+			return member;
+		}
+
+		MemberReference ReadMemberReferenceSignature (uint signature, TypeReference declaring_type)
+		{
+			var reader = ReadSignature (signature);
+			const byte field_sig = 0x6;
+
+			if (reader.buffer [reader.position] == field_sig) {
+				reader.position++;
+				var field = new FieldReference ();
+				field.DeclaringType = declaring_type;
+				field.FieldType = reader.ReadTypeSignature ();
+				return field;
+			} else {
+				var method = new MethodReference ();
+				method.DeclaringType = declaring_type;
+				reader.ReadMethodSignature (method);
+				return method;
+			}
+		}
+
+		MemberReference ReadMethodMemberReference (MetadataToken token, string name, uint signature)
+		{
+			var method = GetMethodDefinition (token.RID);
+
+			this.context = method;
+
+			var member = ReadMemberReferenceSignature (signature, method.DeclaringType);
+			member.Name = name;
+
+			return member;
+		}
+
+		void InitializeMemberReferences ()
+		{
+			if (metadata.MemberReferences != null)
+				return;
+
+			metadata.MemberReferences = new MemberReference [image.GetTableLength (Table.MemberRef)];
+		}
+
+		public IEnumerable<MemberReference> GetMemberReferences ()
+		{
+			InitializeMemberReferences ();
+
+			var length = image.GetTableLength (Table.MemberRef);
+
+			var type_system = module.TypeSystem;
+
+			var context = new MethodReference (string.Empty, type_system.Void);
+			context.DeclaringType = new TypeReference (string.Empty, string.Empty, module, type_system.Corlib);
+
+			var member_references = new MemberReference [length];
+
+			for (uint i = 1; i <= length; i++) {
+				this.context = context;
+				member_references [i - 1] = GetMemberReference (i);
+			}
+
+			return member_references;
+		}
+
+		void InitializeConstants ()
+		{
+			if (metadata.Constants != null)
+				return;
+
+			var length = MoveTo (Table.Constant);
+
+			var constants = metadata.Constants = new Dictionary<MetadataToken, Row<ElementType, uint>> (length);
+
+			for (uint i = 1; i <= length; i++) {
+				var type = (ElementType) ReadUInt16 ();
+				var owner = ReadMetadataToken (CodedIndex.HasConstant);
+				var signature = ReadBlobIndex ();
+
+				constants.Add (owner, new Row<ElementType, uint> (type, signature));
+			}
+		}
+
+		public object ReadConstant (IConstantProvider owner)
+		{
+			InitializeConstants ();
+
+			Row<ElementType, uint> row;
+			if (!metadata.Constants.TryGetValue (owner.MetadataToken, out row))
+				return Mixin.NoValue;
+
+			metadata.Constants.Remove (owner.MetadataToken);
+
+			switch (row.Col1) {
+			case ElementType.Class:
+			case ElementType.Object:
+				return null;
+			case ElementType.String:
+				return ReadConstantString (ReadBlob (row.Col2));
+			default:
+				return ReadConstantPrimitive (row.Col1, row.Col2);
+			}
+		}
+
+		static string ReadConstantString (byte [] blob)
+		{
+			var length = blob.Length;
+			if ((length & 1) == 1)
+				length--;
+
+			return Encoding.Unicode.GetString (blob, 0, length);
+		}
+
+		object ReadConstantPrimitive (ElementType type, uint signature)
+		{
+			var reader = ReadSignature (signature);
+			return reader.ReadConstantSignature (type);
+		}
+
+		void InitializeCustomAttributes ()
+		{
+			if (metadata.CustomAttributes != null)
+				return;
+
+			metadata.CustomAttributes = InitializeRanges (
+				Table.CustomAttribute, () => {
+					var next = ReadMetadataToken (CodedIndex.HasCustomAttribute);
+					ReadMetadataToken (CodedIndex.CustomAttributeType);
+					ReadBlobIndex ();
+					return next;
+			});
+		}
+
+		public bool HasCustomAttributes (ICustomAttributeProvider owner)
+		{
+			InitializeCustomAttributes ();
+
+			Range range;
+			if (!metadata.TryGetCustomAttributeRange (owner, out range))
+				return false;
+
+			return range.Length > 0;
+		}
+
+		public Collection<CustomAttribute> ReadCustomAttributes (ICustomAttributeProvider owner)
+		{
+			InitializeCustomAttributes ();
+
+			Range range;
+			if (!metadata.TryGetCustomAttributeRange (owner, out range)
+				|| !MoveTo (Table.CustomAttribute, range.Start))
+				return new Collection<CustomAttribute> ();
+
+			var custom_attributes = new Collection<CustomAttribute> ((int) range.Length);
+
+			for (int i = 0; i < range.Length; i++) {
+				ReadMetadataToken (CodedIndex.HasCustomAttribute);
+
+				var constructor = (MethodReference) LookupToken (
+					ReadMetadataToken (CodedIndex.CustomAttributeType));
+
+				var signature = ReadBlobIndex ();
+
+				custom_attributes.Add (new CustomAttribute (signature, constructor));
+			}
+
+			metadata.RemoveCustomAttributeRange (owner);
+
+			return custom_attributes;
+		}
+
+		public byte [] ReadCustomAttributeBlob (uint signature)
+		{
+			return ReadBlob (signature);
+		}
+
+		public void ReadCustomAttributeSignature (CustomAttribute attribute)
+		{
+			var reader = ReadSignature (attribute.signature);
+			if (reader.ReadUInt16 () != 0x0001)
+			    throw new InvalidOperationException ();
+
+			var constructor = attribute.Constructor;
+			if (constructor.HasParameters)
+				reader.ReadCustomAttributeConstructorArguments (attribute, constructor.Parameters);
+
+			if (!reader.CanReadMore ())
+				return;
+
+			var named = reader.ReadUInt16 ();
+
+			if (named == 0)
+				return;
+
+			reader.ReadCustomAttributeNamedArguments (named, ref attribute.fields, ref attribute.properties);
+		}
+
+		void InitializeMarshalInfos ()
+		{
+			if (metadata.FieldMarshals != null)
+				return;
+
+			var length = MoveTo (Table.FieldMarshal);
+
+			var marshals = metadata.FieldMarshals = new Dictionary<MetadataToken, uint> (length);
+
+			for (int i = 0; i < length; i++) {
+				var token = ReadMetadataToken (CodedIndex.HasFieldMarshal);
+				var signature = ReadBlobIndex ();
+				if (token.RID == 0)
+					continue;
+
+				marshals.Add (token, signature);
+			}
+		}
+
+		public bool HasMarshalInfo (IMarshalInfoProvider owner)
+		{
+			InitializeMarshalInfos ();
+
+			return metadata.FieldMarshals.ContainsKey (owner.MetadataToken);
+		}
+
+		public MarshalInfo ReadMarshalInfo (IMarshalInfoProvider owner)
+		{
+			InitializeMarshalInfos ();
+
+			uint signature;
+			if (!metadata.FieldMarshals.TryGetValue (owner.MetadataToken, out signature))
+				return null;
+
+			var reader = ReadSignature (signature);
+
+			metadata.FieldMarshals.Remove (owner.MetadataToken);
+
+			return reader.ReadMarshalInfo ();
+		}
+
+		void InitializeSecurityDeclarations ()
+		{
+			if (metadata.SecurityDeclarations != null)
+				return;
+
+			metadata.SecurityDeclarations = InitializeRanges (
+				Table.DeclSecurity, () => {
+					ReadUInt16 ();
+					var next = ReadMetadataToken (CodedIndex.HasDeclSecurity);
+					ReadBlobIndex ();
+					return next;
+			});
+		}
+
+		public bool HasSecurityDeclarations (ISecurityDeclarationProvider owner)
+		{
+			InitializeSecurityDeclarations ();
+
+			Range range;
+			if (!metadata.TryGetSecurityDeclarationRange (owner, out range))
+				return false;
+
+			return range.Length > 0;
+		}
+
+		public Collection<SecurityDeclaration> ReadSecurityDeclarations (ISecurityDeclarationProvider owner)
+		{
+			InitializeSecurityDeclarations ();
+
+			Range range;
+			if (!metadata.TryGetSecurityDeclarationRange (owner, out range)
+				|| !MoveTo (Table.DeclSecurity, range.Start))
+				return new Collection<SecurityDeclaration> ();
+
+			var security_declarations = new Collection<SecurityDeclaration> ((int) range.Length);
+
+			for (int i = 0; i < range.Length; i++) {
+				var action = (SecurityAction) ReadUInt16 ();
+				ReadMetadataToken (CodedIndex.HasDeclSecurity);
+				var signature = ReadBlobIndex ();
+
+				security_declarations.Add (new SecurityDeclaration (action, signature, module));
+			}
+
+			metadata.RemoveSecurityDeclarationRange (owner);
+
+			return security_declarations;
+		}
+
+		public byte [] ReadSecurityDeclarationBlob (uint signature)
+		{
+			return ReadBlob (signature);
+		}
+
+		public void ReadSecurityDeclarationSignature (SecurityDeclaration declaration)
+		{
+			var signature = declaration.signature;
+			var reader = ReadSignature (signature);
+
+			if (reader.buffer [reader.position] != '.') {
+				ReadXmlSecurityDeclaration (signature, declaration);
+				return;
+			}
+
+			reader.ReadByte ();
+			var count = reader.ReadCompressedUInt32 ();
+			var attributes = new Collection<SecurityAttribute> ((int) count);
+
+			for (int i = 0; i < count; i++)
+				attributes.Add (reader.ReadSecurityAttribute ());
+
+			declaration.security_attributes = attributes;
+		}
+
+		void ReadXmlSecurityDeclaration (uint signature, SecurityDeclaration declaration)
+		{
+			var blob = ReadBlob (signature);
+			var attributes = new Collection<SecurityAttribute> (1);
+
+			var attribute = new SecurityAttribute (
+				module.TypeSystem.LookupType ("System.Security.Permissions", "PermissionSetAttribute"));
+
+			attribute.properties = new Collection<CustomAttributeNamedArgument> (1);
+			attribute.properties.Add (
+				new CustomAttributeNamedArgument (
+					"XML",
+					new CustomAttributeArgument (
+						module.TypeSystem.String,
+						Encoding.Unicode.GetString (blob, 0, blob.Length))));
+
+			attributes.Add (attribute);
+
+			declaration.security_attributes = attributes;
+		}
+
+		public Collection<ExportedType> ReadExportedTypes ()
+		{
+			var length = MoveTo (Table.ExportedType);
+			if (length == 0)
+				return new Collection<ExportedType> ();
+
+			var exported_types = new Collection<ExportedType> (length);
+
+			for (int i = 1; i <= length; i++) {
+				var attributes = (TypeAttributes) ReadUInt32 ();
+				var identifier = ReadUInt32 ();
+				var name = ReadString ();
+				var @namespace = ReadString ();
+				var implementation = ReadMetadataToken (CodedIndex.Implementation);
+
+				ExportedType declaring_type = null;
+				IMetadataScope scope = null;
+
+				switch (implementation.TokenType) {
+				case TokenType.AssemblyRef:
+				case TokenType.File:
+					scope = GetExportedTypeScope (implementation);
+					break;
+				case TokenType.ExportedType:
+					// FIXME: if the table is not properly sorted
+					declaring_type = exported_types [(int) implementation.RID - 1];
+					break;
+				}
+
+				var exported_type = new ExportedType (@namespace, name, scope) {
+					Attributes = attributes,
+					Identifier = (int) identifier,
+					DeclaringType = declaring_type,
+				};
+				exported_type.token = new MetadataToken (TokenType.ExportedType, i);
+
+				exported_types.Add (exported_type);
+			}
+
+			return exported_types;
+		}
+
+		IMetadataScope GetExportedTypeScope (MetadataToken token)
+		{
+			switch (token.TokenType) {
+			case TokenType.AssemblyRef:
+				return module.AssemblyReferences [(int) token.RID - 1];
+			case TokenType.File:
+				var position = this.position;
+				var reference = GetModuleReferenceFromFile (token);
+				this.position = position;
+
+				if (reference == null)
+					throw new NotSupportedException ();
+
+				return reference;
+			default:
+				throw new NotSupportedException ();
+			}
+		}
+
+		ModuleReference GetModuleReferenceFromFile (MetadataToken token)
+		{
+			if (!MoveTo (Table.File, token.RID))
+				return null;
+
+			ReadUInt32 ();
+			var file_name = ReadString ();
+			var modules = module.ModuleReferences;
+
+			ModuleReference reference = null;
+			for (int i = 0; i < modules.Count; i++) {
+				var module_reference = modules [i];
+				if (module_reference.Name != file_name)
+					continue;
+
+				reference = module_reference;
+				break;
+			}
+
+			return reference;
+		}
+
+		static void InitializeCollection (object o)
+		{
+		}
+	}
+
+	sealed class SignatureReader : ByteBuffer {
+
+		readonly MetadataReader reader;
+		readonly uint start, sig_length;
+
+		TypeSystem TypeSystem {
+			get { return reader.module.TypeSystem; }
+		}
+
+		public SignatureReader (uint blob, MetadataReader reader)
+			: base (reader.buffer)
+		{
+			this.reader = reader;
+
+			MoveToBlob (blob);
+
+			this.sig_length = ReadCompressedUInt32 ();
+			this.start = (uint) position;
+		}
+
+		void MoveToBlob (uint blob)
+		{
+			position = (int) (reader.image.BlobHeap.Offset + blob);
+		}
+
+		MetadataToken ReadTypeTokenSignature ()
+		{
+			return CodedIndex.TypeDefOrRef.GetMetadataToken (ReadCompressedUInt32 ());
+		}
+
+		GenericParameter GetGenericParameter (GenericParameterType type, uint var)
+		{
+			var context = reader.context;
+
+			if (context == null)
+				throw new NotSupportedException ();
+
+			IGenericParameterProvider provider;
+
+			switch (type) {
+			case GenericParameterType.Type:
+				provider = context.Type;
+				break;
+			case GenericParameterType.Method:
+				provider = context.Method;
+				break;
+			default:
+				throw new NotSupportedException ();
+			}
+
+			int index = (int) var;
+
+			if (!context.IsDefinition)
+				CheckGenericContext (provider, index);
+
+			return provider.GenericParameters [index];
+		}
+
+		static void CheckGenericContext (IGenericParameterProvider owner, int index)
+		{
+			var owner_parameters = owner.GenericParameters;
+
+			for (int i = owner_parameters.Count; i <= index; i++)
+				owner_parameters.Add (new GenericParameter (owner));
+		}
+
+		public void ReadGenericInstanceSignature (IGenericParameterProvider provider, IGenericInstance instance)
+		{
+			var arity = ReadCompressedUInt32 ();
+
+			if (!provider.IsDefinition)
+				CheckGenericContext (provider, (int) arity - 1);
+
+			var instance_arguments = instance.GenericArguments;
+
+			for (int i = 0; i < arity; i++)
+				instance_arguments.Add (ReadTypeSignature ());
+		}
+
+		ArrayType ReadArrayTypeSignature ()
+		{
+			var array = new ArrayType (ReadTypeSignature ());
+
+			var rank = ReadCompressedUInt32 ();
+
+			var sizes = new uint [ReadCompressedUInt32 ()];
+			for (int i = 0; i < sizes.Length; i++)
+				sizes [i] = ReadCompressedUInt32 ();
+
+			var low_bounds = new int [ReadCompressedUInt32 ()];
+			for (int i = 0; i < low_bounds.Length; i++)
+				low_bounds [i] = ReadCompressedInt32 ();
+
+			array.Dimensions.Clear ();
+
+			for (int i = 0; i < rank; i++) {
+				int? lower = null, upper = null;
+
+				if (i < low_bounds.Length)
+					lower = low_bounds [i];
+
+				if (i < sizes.Length)
+					upper = lower + (int) sizes [i] - 1;
+
+				array.Dimensions.Add (new ArrayDimension (lower, upper));
+			}
+
+			return array;
+		}
+
+		TypeReference GetTypeDefOrRef (MetadataToken token)
+		{
+			return reader.GetTypeDefOrRef (token);
+		}
+
+		public TypeReference ReadTypeSignature ()
+		{
+			return ReadTypeSignature ((ElementType) ReadByte ());
+		}
+
+		TypeReference ReadTypeSignature (ElementType etype)
+		{
+			switch (etype) {
+			case ElementType.ValueType: {
+				var value_type = GetTypeDefOrRef (ReadTypeTokenSignature ());
+				value_type.IsValueType = true;
+				return value_type;
+			}
+			case ElementType.Class:
+				return GetTypeDefOrRef (ReadTypeTokenSignature ());
+			case ElementType.Ptr:
+				return new PointerType (ReadTypeSignature ());
+			case ElementType.FnPtr: {
+				var fptr = new FunctionPointerType ();
+				ReadMethodSignature (fptr);
+				return fptr;
+			}
+			case ElementType.ByRef:
+				return new ByReferenceType (ReadTypeSignature ());
+			case ElementType.Pinned:
+				return new PinnedType (ReadTypeSignature ());
+			case ElementType.SzArray:
+				return new ArrayType (ReadTypeSignature ());
+			case ElementType.Array:
+				return ReadArrayTypeSignature ();
+			case ElementType.CModOpt:
+				return new OptionalModifierType (
+					GetTypeDefOrRef (ReadTypeTokenSignature ()), ReadTypeSignature ());
+			case ElementType.CModReqD:
+				return new RequiredModifierType (
+					GetTypeDefOrRef (ReadTypeTokenSignature ()), ReadTypeSignature ());
+			case ElementType.Sentinel:
+				return new SentinelType (ReadTypeSignature ());
+			case ElementType.Var:
+				return GetGenericParameter (GenericParameterType.Type, ReadCompressedUInt32 ());
+			case ElementType.MVar:
+				return GetGenericParameter (GenericParameterType.Method, ReadCompressedUInt32 ());
+			case ElementType.GenericInst: {
+				var is_value_type = ReadByte () == (byte) ElementType.ValueType;
+				var element_type = GetTypeDefOrRef (ReadTypeTokenSignature ());
+				var generic_instance = new GenericInstanceType (element_type);
+
+				ReadGenericInstanceSignature (element_type, generic_instance);
+
+				if (is_value_type) {
+					generic_instance.IsValueType = true;
+					element_type.GetElementType ().IsValueType = true;
+				}
+
+				return generic_instance;
+			}
+			case ElementType.Object: return TypeSystem.Object;
+			case ElementType.Void: return TypeSystem.Void;
+			case ElementType.TypedByRef: return TypeSystem.TypedReference;
+			case ElementType.I: return TypeSystem.IntPtr;
+			case ElementType.U: return TypeSystem.UIntPtr;
+			default: return GetPrimitiveType (etype);
+			}
+		}
+
+		public void ReadMethodSignature (IMethodSignature method)
+		{
+			var calling_convention = ReadByte ();
+			method.CallingConvention = (MethodCallingConvention) calling_convention;
+			method.HasThis = (calling_convention & 0x20) != 0;
+			method.ExplicitThis = (calling_convention & 0x40) != 0;
+
+			var generic_context = method as MethodReference;
+			if (generic_context != null)
+				reader.context = generic_context;
+
+			if ((calling_convention & 0x10) != 0) {
+				var arity = ReadCompressedUInt32 ();
+
+				if (generic_context != null && !generic_context.IsDefinition)
+					CheckGenericContext (generic_context, (int) arity -1 );
+			}
+
+			// TODO: more call_conv
+
+			var param_count = ReadCompressedUInt32 ();
+
+			method.MethodReturnType.ReturnType = ReadTypeSignature ();
+
+			if (param_count == 0)
+				return;
+
+			Collection<ParameterDefinition> parameters;
+
+			var method_ref = method as MethodReference;
+			if (method_ref != null)
+				parameters = method_ref.parameters = new ParameterDefinitionCollection (method, (int) param_count);
+			else
+				parameters = method.Parameters;
+
+			for (int i = 0; i < param_count; i++)
+				parameters.Add (new ParameterDefinition (ReadTypeSignature ()));
+		}
+
+		public object ReadConstantSignature (ElementType type)
+		{
+			return ReadPrimitiveValue (type);
+		}
+
+		public void ReadCustomAttributeConstructorArguments (CustomAttribute attribute, Collection<ParameterDefinition> parameters)
+		{
+			var count = parameters.Count;
+			if (count == 0)
+				return;
+
+			attribute.arguments = new Collection<CustomAttributeArgument> (count);
+
+			for (int i = 0; i < count; i++)
+				attribute.arguments.Add (
+					ReadCustomAttributeFixedArgument (parameters [i].ParameterType));
+		}
+
+		CustomAttributeArgument ReadCustomAttributeFixedArgument (TypeReference type)
+		{
+			if (type.IsArray)
+				return ReadCustomAttributeFixedArrayArgument ((ArrayType) type);
+
+			return ReadCustomAttributeElement (type);
+		}
+
+		public void ReadCustomAttributeNamedArguments (ushort count, ref Collection<CustomAttributeNamedArgument> fields, ref Collection<CustomAttributeNamedArgument> properties)
+		{
+			for (int i = 0; i < count; i++)
+				ReadCustomAttributeNamedArgument (ref fields, ref properties);
+		}
+
+		void ReadCustomAttributeNamedArgument (ref Collection<CustomAttributeNamedArgument> fields, ref Collection<CustomAttributeNamedArgument> properties)
+		{
+			var kind = ReadByte ();
+			var type = ReadCustomAttributeFieldOrPropType ();
+			var name = ReadUTF8String ();
+
+			Collection<CustomAttributeNamedArgument> container;
+			switch (kind) {
+			case 0x53:
+				container = GetCustomAttributeNamedArgumentCollection (ref fields);
+				break;
+			case 0x54:
+				container = GetCustomAttributeNamedArgumentCollection (ref properties);
+				break;
+			default:
+				throw new NotSupportedException ();
+			}
+
+			container.Add (new CustomAttributeNamedArgument (name, ReadCustomAttributeFixedArgument (type)));
+		}
+
+		static Collection<CustomAttributeNamedArgument> GetCustomAttributeNamedArgumentCollection (ref Collection<CustomAttributeNamedArgument> collection)
+		{
+			if (collection != null)
+				return collection;
+
+			return collection = new Collection<CustomAttributeNamedArgument> ();
+		}
+
+		CustomAttributeArgument ReadCustomAttributeFixedArrayArgument (ArrayType type)
+		{
+			var length = ReadUInt32 ();
+
+			if (length == 0xffffffff)
+				return new CustomAttributeArgument (type, null);
+
+			if (length == 0)
+				return new CustomAttributeArgument (type, Empty<CustomAttributeArgument>.Array);
+
+			var arguments = new CustomAttributeArgument [length];
+			var element_type = type.ElementType;
+
+			for (int i = 0; i < length; i++)
+				arguments [i] = ReadCustomAttributeElement (element_type);
+
+			return new CustomAttributeArgument (type, arguments);
+		}
+
+		CustomAttributeArgument ReadCustomAttributeElement (TypeReference type)
+		{
+			if (type.IsArray)
+				return ReadCustomAttributeFixedArrayArgument ((ArrayType) type);
+
+			return new CustomAttributeArgument (
+				type,
+				type.etype == ElementType.Object
+					? ReadCustomAttributeElement (ReadCustomAttributeFieldOrPropType ())
+					: ReadCustomAttributeElementValue (type));
+		}
+
+		object ReadCustomAttributeElementValue (TypeReference type)
+		{
+			var etype = type.etype;
+
+			switch (etype) {
+			case ElementType.String:
+				return ReadUTF8String ();
+			case ElementType.None:
+				if (type.IsTypeOf ("System", "Type"))
+					return ReadTypeReference ();
+
+				return ReadCustomAttributeEnum (type);
+			default:
+				return ReadPrimitiveValue (etype);
+			}
+		}
+
+		object ReadPrimitiveValue (ElementType type)
+		{
+			switch (type) {
+			case ElementType.Boolean:
+				return ReadByte () == 1;
+			case ElementType.I1:
+				return (sbyte) ReadByte ();
+			case ElementType.U1:
+				return ReadByte ();
+			case ElementType.Char:
+				return (char) ReadUInt16 ();
+			case ElementType.I2:
+				return ReadInt16 ();
+			case ElementType.U2:
+				return ReadUInt16 ();
+			case ElementType.I4:
+				return ReadInt32 ();
+			case ElementType.U4:
+				return ReadUInt32 ();
+			case ElementType.I8:
+				return ReadInt64 ();
+			case ElementType.U8:
+				return ReadUInt64 ();
+			case ElementType.R4:
+				return ReadSingle ();
+			case ElementType.R8:
+				return ReadDouble ();
+			default:
+				throw new NotImplementedException (type.ToString ());
+			}
+		}
+
+		TypeReference GetPrimitiveType (ElementType etype)
+		{
+			switch (etype) {
+			case ElementType.Boolean:
+				return TypeSystem.Boolean;
+			case ElementType.Char:
+				return TypeSystem.Char;
+			case ElementType.I1:
+				return TypeSystem.SByte;
+			case ElementType.U1:
+				return TypeSystem.Byte;
+			case ElementType.I2:
+				return TypeSystem.Int16;
+			case ElementType.U2:
+				return TypeSystem.UInt16;
+			case ElementType.I4:
+				return TypeSystem.Int32;
+			case ElementType.U4:
+				return TypeSystem.UInt32;
+			case ElementType.I8:
+				return TypeSystem.Int64;
+			case ElementType.U8:
+				return TypeSystem.UInt64;
+			case ElementType.R4:
+				return TypeSystem.Single;
+			case ElementType.R8:
+				return TypeSystem.Double;
+			case ElementType.String:
+				return TypeSystem.String;
+			default:
+				throw new NotImplementedException (etype.ToString ());
+			}
+		}
+
+		TypeReference ReadCustomAttributeFieldOrPropType ()
+		{
+			var etype = (ElementType) ReadByte ();
+
+			switch (etype) {
+			case ElementType.Boxed:
+				return TypeSystem.Object;
+			case ElementType.SzArray:
+				return new ArrayType (ReadCustomAttributeFieldOrPropType ());
+			case ElementType.Enum:
+				return ReadTypeReference ();
+			case ElementType.Type:
+				return TypeSystem.LookupType ("System", "Type");
+			default:
+				return GetPrimitiveType (etype);
+			}
+		}
+
+		public TypeReference ReadTypeReference ()
+		{
+			return TypeParser.ParseType (reader.module, ReadUTF8String ());
+		}
+
+		object ReadCustomAttributeEnum (TypeReference enum_type)
+		{
+			var type = enum_type.CheckedResolve ();
+			if (!type.IsEnum)
+				throw new ArgumentException ();
+
+			return ReadCustomAttributeElementValue (type.GetEnumUnderlyingType ());
+		}
+
+		public SecurityAttribute ReadSecurityAttribute ()
+		{
+			var attribute = new SecurityAttribute (ReadTypeReference ());
+
+			ReadCompressedUInt32 ();
+
+			ReadCustomAttributeNamedArguments (
+				(ushort) ReadCompressedUInt32 (),
+				ref attribute.fields,
+				ref attribute.properties);
+
+			return attribute;
+		}
+
+		public MarshalInfo ReadMarshalInfo ()
+		{
+			var native = ReadNativeType ();
+			switch (native) {
+			case NativeType.Array: {
+				var array = new ArrayMarshalInfo ();
+				if (CanReadMore ())
+					array.element_type = ReadNativeType ();
+				if (CanReadMore ())
+					array.size_parameter_index = (int) ReadCompressedUInt32 ();
+				if (CanReadMore ())
+					array.size = (int) ReadCompressedUInt32 ();
+				if (CanReadMore ())
+					array.size_parameter_multiplier = (int) ReadCompressedUInt32 ();
+				return array;
+			}
+			case NativeType.SafeArray: {
+				var array = new SafeArrayMarshalInfo ();
+				if (CanReadMore ())
+					array.element_type = ReadVariantType ();
+				return array;
+			}
+			case NativeType.FixedArray: {
+				var array = new FixedArrayMarshalInfo ();
+				if (CanReadMore ())
+					array.size = (int) ReadCompressedUInt32 ();
+				if (CanReadMore ())
+					array.element_type = ReadNativeType ();
+				return array;
+			}
+			case NativeType.FixedSysString: {
+				var sys_string = new FixedSysStringMarshalInfo ();
+				if (CanReadMore ())
+					sys_string.size = (int) ReadCompressedUInt32 ();
+				return sys_string;
+			}
+			case NativeType.CustomMarshaler: {
+				var marshaler = new CustomMarshalInfo ();
+				var guid_value = ReadUTF8String ();
+				marshaler.guid = !string.IsNullOrEmpty (guid_value) ? new Guid (guid_value) : Guid.Empty;
+				marshaler.unmanaged_type = ReadUTF8String ();
+				marshaler.managed_type = ReadTypeReference ();
+				marshaler.cookie = ReadUTF8String ();
+				return marshaler;
+			}
+			default:
+				return new MarshalInfo (native);
+			}
+		}
+
+		NativeType ReadNativeType ()
+		{
+			return (NativeType) ReadByte ();
+		}
+
+		VariantType ReadVariantType ()
+		{
+			return (VariantType) ReadByte ();
+		}
+
+		string ReadUTF8String ()
+		{
+			if (buffer [position] == 0xff) {
+				position++;
+				return null;
+			}
+
+			var length = (int) ReadCompressedUInt32 ();
+			if (length == 0)
+				return string.Empty;
+
+			var @string = Encoding.UTF8.GetString (buffer, position,
+				buffer [position + length - 1] == 0 ? length - 1 : length);
+
+			position += length;
+			return @string;
+		}
+
+		public bool CanReadMore ()
+		{
+			return position - start < sig_length;
+		}
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyStripper.cs b/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyStripper.cs
deleted file mode 100644
index 4bd08e9..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyStripper.cs
+++ /dev/null
@@ -1,220 +0,0 @@
-//
-// AssemblyStripper.cs
-//
-// Author:
-//   Jb Evain (jbevain at novell.com)
-//
-// (C) 2008 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Collections;
-using System.IO;
-
-using Mono.Cecil.Binary;
-using Mono.Cecil.Cil;
-using Mono.Cecil.Metadata;
-
-namespace Mono.Cecil {
-
-	class AssemblyStripper {
-
-		AssemblyDefinition assembly;
-		BinaryWriter writer;
-
-		Image original;
-		Image stripped;
-
-		ReflectionWriter reflection_writer;
-		MetadataWriter metadata_writer;
-
-		TablesHeap original_tables;
-		TablesHeap stripped_tables;
-
-		AssemblyStripper (AssemblyDefinition assembly, BinaryWriter writer)
-		{
-			this.assembly = assembly;
-			this.writer = writer;
-		}
-
-		void Strip ()
-		{
-			FullLoad ();
-			ClearMethodBodies ();
-			CopyOriginalImage ();
-			PatchMethods ();
-			PatchFields ();
-			PatchResources ();
-			Write ();
-		}
-
-		void FullLoad ()
-		{
-			assembly.MainModule.FullLoad ();
-		}
-
-		void ClearMethodBodies ()
-		{
-			foreach (TypeDefinition type in assembly.MainModule.Types) {
-				ClearMethodBodies (type.Constructors);
-				ClearMethodBodies (type.Methods);
-			}
-		}
-
-		static void ClearMethodBodies (ICollection methods)
-		{
-			foreach (MethodDefinition method in methods) {
-				if (!method.HasBody)
-					continue;
-
-				MethodBody body = new MethodBody (method);
-				body.CilWorker.Emit (OpCodes.Ret);
-
-				method.Body = body;
-			}
-		}
-
-		void CopyOriginalImage ()
-		{
-			original = assembly.MainModule.Image;
-			stripped = Image.CreateImage();
-
-			stripped.Accept (new CopyImageVisitor (original));
-
-			assembly.MainModule.Image = stripped;
-
-			original_tables = original.MetadataRoot.Streams.TablesHeap;
-			stripped_tables = stripped.MetadataRoot.Streams.TablesHeap;
-
-			TableCollection tables = original_tables.Tables;
-			foreach (IMetadataTable table in tables)
-				stripped_tables.Tables.Add(table);
-
-			stripped_tables.Valid = original_tables.Valid;
-			stripped_tables.Sorted = original_tables.Sorted;
-
-			reflection_writer = new ReflectionWriter (assembly.MainModule);
-			reflection_writer.StructureWriter = new StructureWriter (assembly, writer);
-			reflection_writer.CodeWriter.Stripped = true;
-
-			metadata_writer = reflection_writer.MetadataWriter;
-
-			PatchHeap (metadata_writer.StringWriter, original.MetadataRoot.Streams.StringsHeap);
-			PatchHeap (metadata_writer.GuidWriter, original.MetadataRoot.Streams.GuidHeap);
-			PatchHeap (metadata_writer.UserStringWriter, original.MetadataRoot.Streams.UserStringsHeap);
-			PatchHeap (metadata_writer.BlobWriter, original.MetadataRoot.Streams.BlobHeap);
-
-			if (assembly.EntryPoint != null)
-				metadata_writer.EntryPointToken = assembly.EntryPoint.MetadataToken.ToUInt ();
-		}
-
-		static void PatchHeap (MemoryBinaryWriter heap_writer, MetadataHeap heap)
-		{
-			if (heap == null)
-				return;
-
-			heap_writer.BaseStream.Position = 0;
-			heap_writer.Write (heap.Data);
-		}
-
-		void PatchMethods ()
-		{
-			MethodTable methodTable = (MethodTable) stripped_tables [MethodTable.RId];
-			if (methodTable == null)
-				return;
-
-			RVA method_rva = RVA.Zero;
-
-			for (int i = 0; i < methodTable.Rows.Count; i++) {
-				MethodRow methodRow = methodTable[i];
-
-				MetadataToken methodToken = MetadataToken.FromMetadataRow (TokenType.Method, i);
-
-				MethodDefinition method = (MethodDefinition) assembly.MainModule.LookupByToken (methodToken);
-
-				if (method.HasBody) {
-					method_rva = method_rva != RVA.Zero
-						? method_rva
-						: reflection_writer.CodeWriter.WriteMethodBody (method);
-
-					methodRow.RVA = method_rva;
-				} else
-					methodRow.RVA = RVA.Zero;
-			}
-		}
-
-		void PatchFields ()
-		{
-			FieldRVATable fieldRvaTable = (FieldRVATable) stripped_tables [FieldRVATable.RId];
-			if (fieldRvaTable == null)
-				return;
-
-			for (int i = 0; i < fieldRvaTable.Rows.Count; i++) {
-				FieldRVARow fieldRvaRow = fieldRvaTable [i];
-
-				MetadataToken fieldToken = new MetadataToken (TokenType.Field, fieldRvaRow.Field);
-
-				FieldDefinition field = (FieldDefinition) assembly.MainModule.LookupByToken (fieldToken);
-
-				fieldRvaRow.RVA = metadata_writer.GetDataCursor ();
-				metadata_writer.AddData (field.InitialValue.Length + 3 & (~3));
-				metadata_writer.AddFieldInitData (field.InitialValue);
-			}
-		}
-
-		void PatchResources ()
-		{
-			ManifestResourceTable resourceTable = (ManifestResourceTable) stripped_tables [ManifestResourceTable.RId];
-			if (resourceTable == null)
-				return;
-
-			for (int i = 0; i < resourceTable.Rows.Count; i++) {
-				ManifestResourceRow resourceRow = resourceTable [i];
-
-				if (resourceRow.Implementation.RID != 0)
-					continue;
-
-				foreach (Resource resource in assembly.MainModule.Resources) {
-					EmbeddedResource er = resource as EmbeddedResource;
-					if (er == null)
-						continue;
-
-					if (resource.Name != original.MetadataRoot.Streams.StringsHeap [resourceRow.Name])
-						continue;
-
-					resourceRow.Offset = metadata_writer.AddResource (er.Data);
-				}
-			}
-		}
-
-		void Write ()
-		{
-			stripped.MetadataRoot.Accept (metadata_writer);
-		}
-
-		public static void StripAssembly (AssemblyDefinition assembly, string file)
-		{
-			using (FileStream fs = new FileStream (file, FileMode.Create, FileAccess.Write, FileShare.None)) {
-				new AssemblyStripper (assembly, new BinaryWriter (fs)).Strip ();
-			}
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyWriter.cs b/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyWriter.cs
new file mode 100644
index 0000000..8dd9145
--- /dev/null
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyWriter.cs
@@ -0,0 +1,2536 @@
+//
+// AssemblyWriter.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Text;
+
+using Mono.Collections.Generic;
+using Mono.Cecil.Cil;
+using Mono.Cecil.Metadata;
+using Mono.Cecil.PE;
+
+using RVA = System.UInt32;
+using RID = System.UInt32;
+using CodedRID = System.UInt32;
+using StringIndex = System.UInt32;
+using BlobIndex = System.UInt32;
+
+namespace Mono.Cecil {
+
+#if !READ_ONLY
+
+	using TypeRefRow     = Row<CodedRID, StringIndex, StringIndex>;
+	using TypeDefRow     = Row<TypeAttributes, StringIndex, StringIndex, CodedRID, RID, RID>;
+	using FieldRow       = Row<FieldAttributes, StringIndex, BlobIndex>;
+	using MethodRow      = Row<RVA, MethodImplAttributes, MethodAttributes, StringIndex, BlobIndex, RID>;
+	using ParamRow       = Row<ParameterAttributes, ushort, StringIndex>;
+	using InterfaceImplRow = Row<uint, CodedRID>;
+	using MemberRefRow   = Row<CodedRID, StringIndex, BlobIndex>;
+	using ConstantRow    = Row<ElementType, CodedRID, BlobIndex>;
+	using CustomAttributeRow = Row<CodedRID, CodedRID, BlobIndex>;
+	using FieldMarshalRow = Row<CodedRID, BlobIndex>;
+	using DeclSecurityRow = Row<SecurityAction, CodedRID, BlobIndex>;
+	using ClassLayoutRow = Row<ushort, uint, RID>;
+	using FieldLayoutRow = Row<uint, RID>;
+	using EventMapRow    = Row<RID, RID>;
+	using EventRow       = Row<EventAttributes, StringIndex, CodedRID>;
+	using PropertyMapRow = Row<RID, RID>;
+	using PropertyRow    = Row<PropertyAttributes, StringIndex, BlobIndex>;
+	using MethodSemanticsRow = Row<MethodSemanticsAttributes, RID, CodedRID>;
+	using MethodImplRow  = Row<RID, CodedRID, CodedRID>;
+	using ImplMapRow     = Row<PInvokeAttributes, CodedRID, StringIndex, RID>;
+	using FieldRVARow    = Row<RVA, RID>;
+	using AssemblyRow    = Row<AssemblyHashAlgorithm, ushort, ushort, ushort, ushort, AssemblyAttributes, uint, uint, uint>;
+	using AssemblyRefRow = Row<ushort, ushort, ushort, ushort, AssemblyAttributes, uint, uint, uint, uint>;
+	using FileRow        = Row<FileAttributes, StringIndex, BlobIndex>;
+	using ExportedTypeRow = Row<TypeAttributes, uint, StringIndex, StringIndex, CodedRID>;
+	using ManifestResourceRow = Row<uint, ManifestResourceAttributes, StringIndex, CodedRID>;
+	using NestedClassRow = Row<RID, RID>;
+	using GenericParamRow = Row<ushort, GenericParameterAttributes, CodedRID, StringIndex>;
+	using MethodSpecRow = Row<CodedRID, BlobIndex>;
+	using GenericParamConstraintRow = Row<RID, CodedRID>;
+
+	static class ModuleWriter {
+
+		public static void WriteModuleTo (ModuleDefinition module, Stream stream, WriterParameters parameters)
+		{
+			if ((module.Attributes & ModuleAttributes.ILOnly) == 0)
+				throw new ArgumentException ();
+
+			if (module.HasImage && module.ReadingMode == ReadingMode.Deferred)
+				ImmediateModuleReader.ReadModule (module);
+
+			module.MetadataSystem.Clear ();
+
+			var name = module.assembly != null ? module.assembly.Name : null;
+			var fq_name = stream.GetFullyQualifiedName ();
+			var symbol_writer_provider = parameters.SymbolWriterProvider;
+			if (symbol_writer_provider == null && parameters.WriteSymbols)
+				symbol_writer_provider = SymbolProvider.GetPlatformWriterProvider ();
+			var symbol_writer = GetSymbolWriter (module, fq_name, symbol_writer_provider);
+
+#if !SILVERLIGHT && !CF
+			if (parameters.StrongNameKeyPair != null && name != null)
+				name.PublicKey = parameters.StrongNameKeyPair.PublicKey;
+#endif
+
+			if (name != null && name.HasPublicKey)
+				module.Attributes |= ModuleAttributes.StrongNameSigned;
+
+			var metadata = new MetadataBuilder (module, fq_name,
+				symbol_writer_provider, symbol_writer);
+
+			BuildMetadata (module, metadata);
+
+			if (module.SymbolReader != null)
+				module.SymbolReader.Dispose ();
+
+			var writer = ImageWriter.CreateWriter (module, metadata, stream);
+
+			writer.WriteImage ();
+
+#if !SILVERLIGHT && !CF
+			if (parameters.StrongNameKeyPair != null)
+				CryptoService.StrongName (stream, writer, parameters.StrongNameKeyPair);
+#endif
+			if (symbol_writer != null)
+				symbol_writer.Dispose ();
+		}
+
+		static void BuildMetadata (ModuleDefinition module, MetadataBuilder metadata)
+		{
+			if (!module.HasImage) {
+				metadata.BuildMetadata ();
+				return;
+			}
+
+			module.Read (metadata, (builder, _) => {
+				builder.BuildMetadata ();
+				return builder;
+			});
+		}
+
+		static ISymbolWriter GetSymbolWriter (ModuleDefinition module, string fq_name, ISymbolWriterProvider symbol_writer_provider)
+		{
+			if (symbol_writer_provider == null)
+				return null;
+
+			return symbol_writer_provider.GetSymbolWriter (module, fq_name);
+		}
+	}
+
+	abstract class MetadataTable {
+
+		public abstract int Length { get; }
+
+		public bool IsLarge {
+			get { return Length > 65535; }
+		}
+
+		public abstract void Write (TableHeapBuffer buffer);
+		public abstract void Sort ();
+	}
+
+	abstract class OneRowTable<TRow> : MetadataTable where TRow : struct {
+
+		internal TRow row;
+
+		public sealed override int Length {
+			get { return 1; }
+		}
+
+		public sealed override void Sort ()
+		{
+		}
+	}
+
+	abstract class MetadataTable<TRow> : MetadataTable where TRow : struct {
+
+		internal TRow [] rows = new TRow [2];
+		internal int length;
+
+		public sealed override int Length {
+			get { return length; }
+		}
+
+		public int AddRow (TRow row)
+		{
+			if (rows.Length == length)
+				Grow ();
+
+			rows [length++] = row;
+			return length;
+		}
+
+		void Grow ()
+		{
+			var rows = new TRow [this.rows.Length * 2];
+			Array.Copy (this.rows, rows, this.rows.Length);
+			this.rows = rows;
+		}
+
+		public override void Sort ()
+		{
+		}
+	}
+
+	abstract class SortedTable<TRow> : MetadataTable<TRow>, IComparer<TRow> where TRow : struct {
+
+		public sealed override void Sort ()
+		{
+			Array.Sort (rows, 0, length, this);
+		}
+
+		protected int Compare (uint x, uint y)
+		{
+			return x == y ? 0 : x > y ? 1 : -1;
+		}
+
+		public abstract int Compare (TRow x, TRow y);
+	}
+
+	sealed class ModuleTable : OneRowTable<uint> {
+
+		public override void Write (TableHeapBuffer buffer)
+		{
+			buffer.WriteUInt16 (0);		// Generation
+			buffer.WriteString (row);	// Name
+			buffer.WriteUInt16 (1);		// Mvid
+			buffer.WriteUInt16 (0);		// EncId
+			buffer.WriteUInt16 (0);		// EncBaseId
+		}
+	}
+
+	sealed class TypeRefTable : MetadataTable<TypeRefRow> {
+
+		public override void Write (TableHeapBuffer buffer)
+		{
+			for (int i = 0; i < length; i++) {
+				buffer.WriteCodedRID (
+					rows [i].Col1, CodedIndex.ResolutionScope);	// Scope
+				buffer.WriteString (rows [i].Col2);			// Name
+				buffer.WriteString (rows [i].Col3);			// Namespace
+			}
+		}
+	}
+
+	sealed class TypeDefTable : MetadataTable<TypeDefRow> {
+
+		public override void Write (TableHeapBuffer buffer)
+		{
+			for (int i = 0; i < length; i++) {
+				buffer.WriteUInt32 ((uint) rows [i].Col1);	// Attributes
+				buffer.WriteString (rows [i].Col2);			// Name
+				buffer.WriteString (rows [i].Col3);			// Namespace
+				buffer.WriteCodedRID (
+					rows [i].Col4, CodedIndex.TypeDefOrRef);	// Extends
+				buffer.WriteRID (rows [i].Col5, Table.Field);	// FieldList
+				buffer.WriteRID (rows [i].Col6, Table.Method);	// MethodList
+			}
+		}
+	}
+
+	sealed class FieldTable : MetadataTable<FieldRow> {
+
+		public override void Write (TableHeapBuffer buffer)
+		{
+			for (int i = 0; i < length; i++) {
+				buffer.WriteUInt16 ((ushort) rows [i].Col1);	// Attributes
+				buffer.WriteString (rows [i].Col2);			// Name
+				buffer.WriteBlob (rows [i].Col3);			// Signature
+			}
+		}
+	}
+
+	sealed class MethodTable : MetadataTable<MethodRow> {
+
+		public override void Write (TableHeapBuffer buffer)
+		{
+			for (int i = 0; i < length; i++) {
+				buffer.WriteUInt32 (rows [i].Col1);		// RVA
+				buffer.WriteUInt16 ((ushort) rows [i].Col2);	// ImplFlags
+				buffer.WriteUInt16 ((ushort) rows [i].Col3);	// Flags
+				buffer.WriteString (rows [i].Col4);		// Name
+				buffer.WriteBlob (rows [i].Col5);		// Signature
+				buffer.WriteRID (rows [i].Col6, Table.Param);	// ParamList
+			}
+		}
+	}
+
+	sealed class ParamTable : MetadataTable<ParamRow> {
+
+		public override void Write (TableHeapBuffer buffer)
+		{
+			for (int i = 0; i < length; i++) {
+				buffer.WriteUInt16 ((ushort) rows [i].Col1);	// Attributes
+				buffer.WriteUInt16 (rows [i].Col2);		// Sequence
+				buffer.WriteString (rows [i].Col3);		// Name
+			}
+		}
+	}
+
+	sealed class InterfaceImplTable : MetadataTable<InterfaceImplRow> {
+
+		public override void Write (TableHeapBuffer buffer)
+		{
+			for (int i = 0; i < length; i++) {
+				buffer.WriteRID (rows [i].Col1, Table.TypeDef);		// Class
+				buffer.WriteCodedRID (rows [i].Col2, CodedIndex.TypeDefOrRef);	// Interface
+			}
+		}
+
+		/*public override int Compare (InterfaceImplRow x, InterfaceImplRow y)
+		{
+			return (int) (x.Col1 == y.Col1 ? y.Col2 - x.Col2 : x.Col1 - y.Col1);
+		}*/
+	}
+
+	sealed class MemberRefTable : MetadataTable<MemberRefRow> {
+
+		public override void Write (TableHeapBuffer buffer)
+		{
+			for (int i = 0; i < length; i++) {
+				buffer.WriteCodedRID (rows [i].Col1, CodedIndex.MemberRefParent);
+				buffer.WriteString (rows [i].Col2);
+				buffer.WriteBlob (rows [i].Col3);
+			}
+		}
+	}
+
+	sealed class ConstantTable : SortedTable<ConstantRow> {
+
+		public override void Write (TableHeapBuffer buffer)
+		{
+			for (int i = 0; i < length; i++) {
+				buffer.WriteUInt16 ((ushort) rows [i].Col1);
+				buffer.WriteCodedRID (rows [i].Col2, CodedIndex.HasConstant);
+				buffer.WriteBlob (rows [i].Col3);
+			}
+		}
+
+		public override int Compare (ConstantRow x, ConstantRow y)
+		{
+			return Compare (x.Col2, y.Col2);
+		}
+	}
+
+	sealed class CustomAttributeTable : SortedTable<CustomAttributeRow> {
+
+		public override void Write (TableHeapBuffer buffer)
+		{
+			for (int i = 0; i < length; i++) {
+				buffer.WriteCodedRID (rows [i].Col1, CodedIndex.HasCustomAttribute);	// Parent
+				buffer.WriteCodedRID (rows [i].Col2, CodedIndex.CustomAttributeType);	// Type
+				buffer.WriteBlob (rows [i].Col3);
+			}
+		}
+
+		public override int Compare (CustomAttributeRow x, CustomAttributeRow y)
+		{
+			return Compare (x.Col1, y.Col1);
+		}
+	}
+
+	sealed class FieldMarshalTable : SortedTable<FieldMarshalRow> {
+
+		public override void Write (TableHeapBuffer buffer)
+		{
+			for (int i = 0; i < length; i++) {
+				buffer.WriteCodedRID (rows [i].Col1, CodedIndex.HasFieldMarshal);
+				buffer.WriteBlob (rows [i].Col2);
+			}
+		}
+
+		public override int Compare (FieldMarshalRow x, FieldMarshalRow y)
+		{
+			return Compare (x.Col1, y.Col1);
+		}
+	}
+
+	sealed class DeclSecurityTable : SortedTable<DeclSecurityRow> {
+
+		public override void Write (TableHeapBuffer buffer)
+		{
+			for (int i = 0; i < length; i++) {
+				buffer.WriteUInt16 ((ushort) rows [i].Col1);
+				buffer.WriteCodedRID (rows [i].Col2, CodedIndex.HasDeclSecurity);
+				buffer.WriteBlob (rows [i].Col3);
+			}
+		}
+
+		public override int Compare (DeclSecurityRow x, DeclSecurityRow y)
+		{
+			return Compare (x.Col2, y.Col2);
+		}
+	}
+
+	sealed class ClassLayoutTable : SortedTable<ClassLayoutRow> {
+
+		public override void Write (TableHeapBuffer buffer)
+		{
+			for (int i = 0; i < length; i++) {
+				buffer.WriteUInt16 (rows [i].Col1);		// PackingSize
+				buffer.WriteUInt32 (rows [i].Col2);		// ClassSize
+				buffer.WriteRID (rows [i].Col3, Table.TypeDef);	// Parent
+			}
+		}
+
+		public override int Compare (ClassLayoutRow x, ClassLayoutRow y)
+		{
+			return Compare (x.Col3, y.Col3);
+		}
+	}
+
+	sealed class FieldLayoutTable : SortedTable<FieldLayoutRow> {
+
+		public override void Write (TableHeapBuffer buffer)
+		{
+			for (int i = 0; i < length; i++) {
+				buffer.WriteUInt32 (rows [i].Col1);		// Offset
+				buffer.WriteRID (rows [i].Col2, Table.Field);	// Parent
+			}
+		}
+
+		public override int Compare (FieldLayoutRow x, FieldLayoutRow y)
+		{
+			return Compare (x.Col2, y.Col2);
+		}
+	}
+
+	sealed class StandAloneSigTable : MetadataTable<uint> {
+
+		public override void Write (TableHeapBuffer buffer)
+		{
+			for (int i = 0; i < length; i++)
+				buffer.WriteBlob (rows [i]);
+		}
+	}
+
+	sealed class EventMapTable : MetadataTable<EventMapRow> {
+
+		public override void Write (TableHeapBuffer buffer)
+		{
+			for (int i = 0; i < length; i++) {
+				buffer.WriteRID (rows [i].Col1, Table.TypeDef);		// Parent
+				buffer.WriteRID (rows [i].Col2, Table.Event);		// EventList
+			}
+		}
+	}
+
+	sealed class EventTable : MetadataTable<EventRow> {
+
+		public override void Write (TableHeapBuffer buffer)
+		{
+			for (int i = 0; i < length; i++) {
+				buffer.WriteUInt16 ((ushort) rows [i].Col1);	// Flags
+				buffer.WriteString (rows [i].Col2);		// Name
+				buffer.WriteCodedRID (rows [i].Col3, CodedIndex.TypeDefOrRef);	// EventType
+			}
+		}
+	}
+
+	sealed class PropertyMapTable : MetadataTable<PropertyMapRow> {
+
+		public override void Write (TableHeapBuffer buffer)
+		{
+			for (int i = 0; i < length; i++) {
+				buffer.WriteRID (rows [i].Col1, Table.TypeDef);		// Parent
+				buffer.WriteRID (rows [i].Col2, Table.Property);	// PropertyList
+			}
+		}
+	}
+
+	sealed class PropertyTable : MetadataTable<PropertyRow> {
+
+		public override void Write (TableHeapBuffer buffer)
+		{
+			for (int i = 0; i < length; i++) {
+				buffer.WriteUInt16 ((ushort) rows [i].Col1);	// Flags
+				buffer.WriteString (rows [i].Col2);		// Name
+				buffer.WriteBlob (rows [i].Col3);		// Type
+			}
+		}
+	}
+
+	sealed class MethodSemanticsTable : SortedTable<MethodSemanticsRow> {
+
+		public override void Write (TableHeapBuffer buffer)
+		{
+			for (int i = 0; i < length; i++) {
+				buffer.WriteUInt16 ((ushort) rows [i].Col1);	// Flags
+				buffer.WriteRID (rows [i].Col2, Table.Method);	// Method
+				buffer.WriteCodedRID (rows [i].Col3, CodedIndex.HasSemantics);	// Association
+			}
+		}
+
+		public override int Compare (MethodSemanticsRow x, MethodSemanticsRow y)
+		{
+			return Compare (x.Col3, y.Col3);
+		}
+	}
+
+	sealed class MethodImplTable : MetadataTable<MethodImplRow> {
+
+		public override void Write (TableHeapBuffer buffer)
+		{
+			for (int i = 0; i < length; i++) {
+				buffer.WriteRID (rows [i].Col1, Table.TypeDef);	// Class
+				buffer.WriteCodedRID (rows [i].Col2, CodedIndex.MethodDefOrRef);	// MethodBody
+				buffer.WriteCodedRID (rows [i].Col3, CodedIndex.MethodDefOrRef);	// MethodDeclaration
+			}
+		}
+	}
+
+	sealed class ModuleRefTable : MetadataTable<uint> {
+
+		public override void Write (TableHeapBuffer buffer)
+		{
+			for (int i = 0; i < length; i++)
+				buffer.WriteString (rows [i]);	// Name
+		}
+	}
+
+	sealed class TypeSpecTable : MetadataTable<uint> {
+
+		public override void Write (TableHeapBuffer buffer)
+		{
+			for (int i = 0; i < length; i++)
+				buffer.WriteBlob (rows [i]);	// Signature
+		}
+	}
+
+	sealed class ImplMapTable : SortedTable<ImplMapRow> {
+
+		public override void Write (TableHeapBuffer buffer)
+		{
+			for (int i = 0; i < length; i++) {
+				buffer.WriteUInt16 ((ushort) rows [i].Col1);	// Flags
+				buffer.WriteCodedRID (rows [i].Col2, CodedIndex.MemberForwarded);	// MemberForwarded
+				buffer.WriteString (rows [i].Col3);		// ImportName
+				buffer.WriteRID (rows [i].Col4, Table.ModuleRef);	// ImportScope
+			}
+		}
+
+		public override int Compare (ImplMapRow x, ImplMapRow y)
+		{
+			return Compare (x.Col2, y.Col2);
+		}
+	}
+
+	sealed class FieldRVATable : SortedTable<FieldRVARow> {
+
+		internal int position;
+
+		public override void Write (TableHeapBuffer buffer)
+		{
+			position = buffer.position;
+			for (int i = 0; i < length; i++) {
+				buffer.WriteUInt32 (rows [i].Col1);		// RVA
+				buffer.WriteRID (rows [i].Col2, Table.Field);	// Field
+			}
+		}
+
+		public override int Compare (FieldRVARow x, FieldRVARow y)
+		{
+			return Compare (x.Col2, y.Col2);
+		}
+	}
+
+	sealed class AssemblyTable : OneRowTable<AssemblyRow> {
+
+		public override void Write (TableHeapBuffer buffer)
+		{
+			buffer.WriteUInt32 ((uint) row.Col1);	// AssemblyHashAlgorithm
+			buffer.WriteUInt16 (row.Col2);			// MajorVersion
+			buffer.WriteUInt16 (row.Col3);			// MinorVersion
+			buffer.WriteUInt16 (row.Col4);			// Build
+			buffer.WriteUInt16 (row.Col5);			// Revision
+			buffer.WriteUInt32 ((uint) row.Col6);	// Flags
+			buffer.WriteBlob (row.Col7);			// PublicKey
+			buffer.WriteString (row.Col8);			// Name
+			buffer.WriteString (row.Col9);			// Culture
+		}
+	}
+
+	sealed class AssemblyRefTable : MetadataTable<AssemblyRefRow> {
+
+		public override void Write (TableHeapBuffer buffer)
+		{
+			for (int i = 0; i < length; i++) {
+				buffer.WriteUInt16 (rows [i].Col1);		// MajorVersion
+				buffer.WriteUInt16 (rows [i].Col2);		// MinorVersion
+				buffer.WriteUInt16 (rows [i].Col3);		// Build
+				buffer.WriteUInt16 (rows [i].Col4);		// Revision
+				buffer.WriteUInt32 ((uint) rows [i].Col5);	// Flags
+				buffer.WriteBlob (rows [i].Col6);		// PublicKeyOrToken
+				buffer.WriteString (rows [i].Col7);		// Name
+				buffer.WriteString (rows [i].Col8);		// Culture
+				buffer.WriteBlob (rows [i].Col9);		// Hash
+			}
+		}
+	}
+
+	sealed class FileTable : MetadataTable<FileRow> {
+
+		public override void Write (TableHeapBuffer buffer)
+		{
+			for (int i = 0; i < length; i++) {
+				buffer.WriteUInt32 ((uint) rows [i].Col1);
+				buffer.WriteString (rows [i].Col2);
+				buffer.WriteBlob (rows [i].Col3);
+			}
+		}
+	}
+
+	sealed class ExportedTypeTable : MetadataTable<ExportedTypeRow> {
+
+		public override void Write (TableHeapBuffer buffer)
+		{
+			for (int i = 0; i < length; i++) {
+				buffer.WriteUInt32 ((uint) rows [i].Col1);
+				buffer.WriteUInt32 (rows [i].Col2);
+				buffer.WriteString (rows [i].Col3);
+				buffer.WriteString (rows [i].Col4);
+				buffer.WriteCodedRID (rows [i].Col5, CodedIndex.Implementation);
+			}
+		}
+	}
+
+	sealed class ManifestResourceTable : MetadataTable<ManifestResourceRow> {
+
+		public override void Write (TableHeapBuffer buffer)
+		{
+			for (int i = 0; i < length; i++) {
+				buffer.WriteUInt32 (rows [i].Col1);
+				buffer.WriteUInt32 ((uint) rows [i].Col2);
+				buffer.WriteString (rows [i].Col3);
+				buffer.WriteCodedRID (rows [i].Col4, CodedIndex.Implementation);
+			}
+		}
+	}
+
+	sealed class NestedClassTable : SortedTable<NestedClassRow> {
+
+		public override void Write (TableHeapBuffer buffer)
+		{
+			for (int i = 0; i < length; i++) {
+				buffer.WriteRID (rows [i].Col1, Table.TypeDef);		// NestedClass
+				buffer.WriteRID (rows [i].Col2, Table.TypeDef);		// EnclosingClass
+			}
+		}
+
+		public override int Compare (NestedClassRow x, NestedClassRow y)
+		{
+			return Compare (x.Col1, y.Col1);
+		}
+	}
+
+	sealed class GenericParamTable : MetadataTable<GenericParamRow> {
+
+		public override void Write (TableHeapBuffer buffer)
+		{
+			for (int i = 0; i < length; i++) {
+				buffer.WriteUInt16 (rows [i].Col1);		// Number
+				buffer.WriteUInt16 ((ushort) rows [i].Col2);	// Flags
+				buffer.WriteCodedRID (rows [i].Col3, CodedIndex.TypeOrMethodDef);	// Owner
+				buffer.WriteString (rows [i].Col4);		// Name
+			}
+		}
+	}
+
+	sealed class MethodSpecTable : MetadataTable<MethodSpecRow> {
+
+		public override void Write (TableHeapBuffer buffer)
+		{
+			for (int i = 0; i < length; i++) {
+				buffer.WriteCodedRID (rows [i].Col1, CodedIndex.MethodDefOrRef);	// Method
+				buffer.WriteBlob (rows [i].Col2);	// Instantiation
+			}
+		}
+	}
+
+	sealed class GenericParamConstraintTable : MetadataTable<GenericParamConstraintRow> {
+
+		public override void Write (TableHeapBuffer buffer)
+		{
+			for (int i = 0; i < length; i++) {
+				buffer.WriteRID (rows [i].Col1, Table.GenericParam);	// Owner
+				buffer.WriteCodedRID (rows [i].Col2, CodedIndex.TypeDefOrRef);	// Constraint
+			}
+		}
+	}
+
+	sealed class MetadataBuilder {
+
+		readonly internal ModuleDefinition module;
+		readonly internal ISymbolWriterProvider symbol_writer_provider;
+		readonly internal ISymbolWriter symbol_writer;
+		readonly internal TextMap text_map;
+		readonly internal string fq_name;
+
+		readonly Dictionary<TypeRefRow, MetadataToken> type_ref_map;
+		readonly Dictionary<uint, MetadataToken> type_spec_map;
+		readonly Dictionary<MemberRefRow, MetadataToken> member_ref_map;
+		readonly Dictionary<MethodSpecRow, MetadataToken> method_spec_map;
+		readonly Collection<GenericParameter> generic_parameters;
+		readonly Dictionary<MetadataToken, MetadataToken> method_def_map;
+
+		readonly internal CodeWriter code;
+		readonly internal DataBuffer data;
+		readonly internal ResourceBuffer resources;
+		readonly internal StringHeapBuffer string_heap;
+		readonly internal UserStringHeapBuffer user_string_heap;
+		readonly internal BlobHeapBuffer blob_heap;
+		readonly internal TableHeapBuffer table_heap;
+
+		internal MetadataToken entry_point;
+
+		RID type_rid = 1;
+		RID field_rid = 1;
+		RID method_rid = 1;
+		RID param_rid = 1;
+		RID property_rid = 1;
+		RID event_rid = 1;
+
+		readonly TypeRefTable type_ref_table;
+		readonly TypeDefTable type_def_table;
+		readonly FieldTable field_table;
+		readonly MethodTable method_table;
+		readonly ParamTable param_table;
+		readonly InterfaceImplTable iface_impl_table;
+		readonly MemberRefTable member_ref_table;
+		readonly ConstantTable constant_table;
+		readonly CustomAttributeTable custom_attribute_table;
+		readonly DeclSecurityTable declsec_table;
+		readonly StandAloneSigTable standalone_sig_table;
+		readonly EventMapTable event_map_table;
+		readonly EventTable event_table;
+		readonly PropertyMapTable property_map_table;
+		readonly PropertyTable property_table;
+		readonly TypeSpecTable typespec_table;
+		readonly MethodSpecTable method_spec_table;
+
+		readonly internal bool write_symbols;
+
+		public MetadataBuilder (ModuleDefinition module, string fq_name, ISymbolWriterProvider symbol_writer_provider, ISymbolWriter symbol_writer)
+		{
+			this.module = module;
+			this.text_map = CreateTextMap ();
+			this.fq_name = fq_name;
+			this.symbol_writer_provider = symbol_writer_provider;
+			this.symbol_writer = symbol_writer;
+			this.write_symbols = symbol_writer != null;
+			this.code = new CodeWriter (this);
+			this.data = new DataBuffer ();
+			this.resources = new ResourceBuffer ();
+			this.string_heap = new StringHeapBuffer ();
+			this.user_string_heap = new UserStringHeapBuffer ();
+			this.blob_heap = new BlobHeapBuffer ();
+			this.table_heap = new TableHeapBuffer (module, this);
+
+			this.type_ref_table = GetTable<TypeRefTable> (Table.TypeRef);
+			this.type_def_table = GetTable<TypeDefTable> (Table.TypeDef);
+			this.field_table = GetTable<FieldTable> (Table.Field);
+			this.method_table = GetTable<MethodTable> (Table.Method);
+			this.param_table = GetTable<ParamTable> (Table.Param);
+			this.iface_impl_table = GetTable<InterfaceImplTable> (Table.InterfaceImpl);
+			this.member_ref_table = GetTable<MemberRefTable> (Table.MemberRef);
+			this.constant_table = GetTable<ConstantTable> (Table.Constant);
+			this.custom_attribute_table = GetTable<CustomAttributeTable> (Table.CustomAttribute);
+			this.declsec_table = GetTable<DeclSecurityTable> (Table.DeclSecurity);
+			this.standalone_sig_table = GetTable<StandAloneSigTable> (Table.StandAloneSig);
+			this.event_map_table = GetTable<EventMapTable> (Table.EventMap);
+			this.event_table = GetTable<EventTable> (Table.Event);
+			this.property_map_table = GetTable<PropertyMapTable> (Table.PropertyMap);
+			this.property_table = GetTable<PropertyTable> (Table.Property);
+			this.typespec_table = GetTable<TypeSpecTable> (Table.TypeSpec);
+			this.method_spec_table = GetTable<MethodSpecTable> (Table.MethodSpec);
+
+			var row_equality_comparer = new RowEqualityComparer ();
+			type_ref_map = new Dictionary<TypeRefRow, MetadataToken> (row_equality_comparer);
+			type_spec_map = new Dictionary<uint, MetadataToken> ();
+			member_ref_map = new Dictionary<MemberRefRow, MetadataToken> (row_equality_comparer);
+			method_spec_map = new Dictionary<MethodSpecRow, MetadataToken> (row_equality_comparer);
+			generic_parameters = new Collection<GenericParameter> ();
+			if (write_symbols)
+				method_def_map = new Dictionary<MetadataToken, MetadataToken> ();
+		}
+
+		TextMap CreateTextMap ()
+		{
+			var map = new TextMap ();
+			map.AddMap (TextSegment.ImportAddressTable, module.Architecture == TargetArchitecture.I386 ? 8 : 16);
+			map.AddMap (TextSegment.CLIHeader, 0x48, 8);
+			return map;
+		}
+
+		TTable GetTable<TTable> (Table table) where TTable : MetadataTable, new ()
+		{
+			return table_heap.GetTable<TTable> (table);
+		}
+
+		uint GetStringIndex (string @string)
+		{
+			if (string.IsNullOrEmpty (@string))
+				return 0;
+
+			return string_heap.GetStringIndex (@string);
+		}
+
+		uint GetBlobIndex (ByteBuffer blob)
+		{
+			if (blob.length == 0)
+				return 0;
+
+			return blob_heap.GetBlobIndex (blob);
+		}
+
+		uint GetBlobIndex (byte [] blob)
+		{
+			if (blob.IsNullOrEmpty ())
+				return 0;
+
+			return GetBlobIndex (new ByteBuffer (blob));
+		}
+
+		public void BuildMetadata ()
+		{
+			BuildModule ();
+
+			table_heap.WriteTableHeap ();
+		}
+
+		void BuildModule ()
+		{
+			var table = GetTable<ModuleTable> (Table.Module);
+			table.row = GetStringIndex (module.Name);
+
+			var assembly = module.Assembly;
+
+			if (assembly != null)
+				BuildAssembly ();
+
+			if (module.HasAssemblyReferences)
+				AddAssemblyReferences ();
+
+			if (module.HasModuleReferences)
+				AddModuleReferences ();
+
+			if (module.HasResources)
+				AddResources ();
+
+			if (module.HasExportedTypes)
+				AddExportedTypes ();
+
+			BuildTypes ();
+
+			if (assembly != null) {
+				if (assembly.HasCustomAttributes)
+					AddCustomAttributes (assembly);
+
+				if (assembly.HasSecurityDeclarations)
+					AddSecurityDeclarations (assembly);
+			}
+
+			if (module.HasCustomAttributes)
+				AddCustomAttributes (module);
+
+			if (module.EntryPoint != null)
+				entry_point = LookupToken (module.EntryPoint);
+		}
+
+		void BuildAssembly ()
+		{
+			var assembly = module.Assembly;
+			var name = assembly.Name;
+
+			var table = GetTable<AssemblyTable> (Table.Assembly);
+
+			table.row = new AssemblyRow (
+				name.HashAlgorithm,
+				(ushort) name.Version.Major,
+				(ushort) name.Version.Minor,
+				(ushort) name.Version.Build,
+				(ushort) name.Version.Revision,
+				name.Attributes,
+				GetBlobIndex (name.PublicKey),
+				GetStringIndex (name.Name),
+				GetStringIndex (name.Culture));
+
+			if (assembly.Modules.Count > 1)
+				BuildModules ();
+		}
+
+		void BuildModules ()
+		{
+			var modules = this.module.Assembly.Modules;
+			var table = GetTable<FileTable> (Table.File);
+
+			for (int i = 0; i < modules.Count; i++) {
+				var module = modules [i];
+				if (module.IsMain)
+					continue;
+
+				var parameters = new WriterParameters {
+					SymbolWriterProvider = symbol_writer_provider,
+				};
+
+				var file_name = GetModuleFileName (module.Name);
+				module.Write (file_name, parameters);
+
+				var hash = CryptoService.ComputeHash (file_name);
+
+				table.AddRow (new FileRow (
+					FileAttributes.ContainsMetaData,
+					GetStringIndex (module.Name),
+					GetBlobIndex (hash)));
+			}
+		}
+
+		string GetModuleFileName (string name)
+		{
+			if (string.IsNullOrEmpty (name))
+				throw new NotSupportedException ();
+
+			var path = Path.GetDirectoryName (fq_name);
+			return Path.Combine (path, name);
+		}
+
+		void AddAssemblyReferences ()
+		{
+			var references = module.AssemblyReferences;
+			var table = GetTable<AssemblyRefTable> (Table.AssemblyRef);
+
+			for (int i = 0; i < references.Count; i++) {
+				var reference = references [i];
+
+				var key_or_token = reference.PublicKey.IsNullOrEmpty ()
+					? reference.PublicKeyToken
+					: reference.PublicKey;
+
+				var rid = table.AddRow (new AssemblyRefRow (
+					(ushort) reference.Version.Major,
+					(ushort) reference.Version.Minor,
+					(ushort) reference.Version.Build,
+					(ushort) reference.Version.Revision,
+					reference.Attributes,
+					GetBlobIndex (key_or_token),
+					GetStringIndex (reference.Name),
+					GetStringIndex (reference.Culture),
+					GetBlobIndex (reference.Hash)));
+
+				reference.token = new MetadataToken (TokenType.AssemblyRef, rid);
+			}
+		}
+
+		void AddModuleReferences ()
+		{
+			var references = module.ModuleReferences;
+			var table = GetTable<ModuleRefTable> (Table.ModuleRef);
+
+			for (int i = 0; i < references.Count; i++) {
+				var reference = references [i];
+
+				reference.token = new MetadataToken (
+					TokenType.ModuleRef,
+					table.AddRow (GetStringIndex (reference.Name)));
+			}
+		}
+
+		void AddResources ()
+		{
+			var resources = module.Resources;
+			var table = GetTable<ManifestResourceTable> (Table.ManifestResource);
+
+			for (int i = 0; i < resources.Count; i++) {
+				var resource = resources [i];
+
+				var row = new ManifestResourceRow (
+					0,
+					resource.Attributes,
+					GetStringIndex (resource.Name),
+					0);
+
+				switch (resource.ResourceType) {
+				case ResourceType.Embedded:
+					row.Col1 = AddEmbeddedResource ((EmbeddedResource) resource);
+					break;
+				case ResourceType.Linked:
+					row.Col4 = CodedIndex.Implementation.CompressMetadataToken (
+						new MetadataToken (
+							TokenType.File,
+							AddLinkedResource ((LinkedResource) resource)));
+					break;
+				case ResourceType.AssemblyLinked:
+					row.Col4 = CodedIndex.Implementation.CompressMetadataToken (
+						((AssemblyLinkedResource) resource).Assembly.MetadataToken);
+					break;
+				default:
+					throw new NotSupportedException ();
+				}
+
+				table.AddRow (row);
+			}
+		}
+
+		uint AddLinkedResource (LinkedResource resource)
+		{
+			var table = GetTable<FileTable> (Table.File);
+
+			var hash = resource.Hash.IsNullOrEmpty ()
+				? CryptoService.ComputeHash (resource.File)
+				: resource.Hash;
+
+			return (uint) table.AddRow (new FileRow (
+				FileAttributes.ContainsNoMetaData,
+				GetStringIndex (resource.File),
+				GetBlobIndex (hash)));
+		}
+
+		uint AddEmbeddedResource (EmbeddedResource resource)
+		{
+			return resources.AddResource (resource.GetResourceData ());
+		}
+
+		void AddExportedTypes ()
+		{
+			var exported_types = module.ExportedTypes;
+			var table = GetTable<ExportedTypeTable> (Table.ExportedType);
+
+			for (int i = 0; i < exported_types.Count; i++) {
+				var exported_type = exported_types [i];
+
+				var rid = table.AddRow (new ExportedTypeRow (
+					exported_type.Attributes,
+					(uint) exported_type.Identifier,
+					GetStringIndex (exported_type.Name),
+					GetStringIndex (exported_type.Namespace),
+					MakeCodedRID (GetExportedTypeScope (exported_type), CodedIndex.Implementation)));
+
+				exported_type.token = new MetadataToken (TokenType.ExportedType, rid);
+			}
+		}
+
+		MetadataToken GetExportedTypeScope (ExportedType exported_type)
+		{
+			if (exported_type.DeclaringType != null)
+				return exported_type.DeclaringType.MetadataToken;
+
+			var scope = exported_type.Scope;
+			switch (scope.MetadataToken.TokenType) {
+			case TokenType.AssemblyRef:
+				return scope.MetadataToken;
+			case TokenType.ModuleRef:
+				var file_table = GetTable<FileTable> (Table.File);
+				for (int i = 0; i < file_table.length; i++)
+					if (file_table.rows [i].Col2 == GetStringIndex (scope.Name))
+						return new MetadataToken (TokenType.File, i + 1);
+
+				break;
+			}
+
+			throw new NotSupportedException ();
+		}
+
+		void BuildTypes ()
+		{
+			if (!module.HasTypes)
+				return;
+
+			AttachTokens ();
+			AddTypeDefs ();
+			AddGenericParameters ();
+		}
+
+		void AttachTokens ()
+		{
+			var types = module.Types;
+
+			for (int i = 0; i < types.Count; i++)
+				AttachTypeDefToken (types [i]);
+		}
+
+		void AttachTypeDefToken (TypeDefinition type)
+		{
+			type.token = new MetadataToken (TokenType.TypeDef, type_rid++);
+			type.fields_range.Start = field_rid;
+			type.methods_range.Start = method_rid;
+
+			if (type.HasFields)
+				AttachFieldsDefToken (type);
+
+			if (type.HasMethods)
+				AttachMethodsDefToken (type);
+
+			if (type.HasNestedTypes)
+				AttachNestedTypesDefToken (type);
+		}
+
+		void AttachNestedTypesDefToken (TypeDefinition type)
+		{
+			var nested_types = type.NestedTypes;
+			for (int i = 0; i < nested_types.Count; i++)
+				AttachTypeDefToken (nested_types [i]);
+		}
+
+		void AttachFieldsDefToken (TypeDefinition type)
+		{
+			var fields = type.Fields;
+			type.fields_range.Length = (uint) fields.Count;
+			for (int i = 0; i < fields.Count; i++)
+				fields [i].token = new MetadataToken (TokenType.Field, field_rid++);
+		}
+
+		void AttachMethodsDefToken (TypeDefinition type)
+		{
+			var methods = type.Methods;
+			type.methods_range.Length = (uint) methods.Count;
+			for (int i = 0; i < methods.Count; i++) {
+				var method = methods [i];
+				var new_token = new MetadataToken (TokenType.Method, method_rid++);
+
+				if (write_symbols && method.token != MetadataToken.Zero)
+					method_def_map.Add (new_token, method.token);
+
+				method.token = new_token;
+			}
+		}
+
+		public bool TryGetOriginalMethodToken (MetadataToken new_token, out MetadataToken original)
+		{
+			return method_def_map.TryGetValue (new_token, out original);
+		}
+
+		MetadataToken GetTypeToken (TypeReference type)
+		{
+			if (type == null)
+				return MetadataToken.Zero;
+
+			if (type.IsDefinition)
+				return type.token;
+
+			if (type.IsTypeSpecification ())
+				return GetTypeSpecToken (type);
+
+			return GetTypeRefToken (type);
+		}
+
+		MetadataToken GetTypeSpecToken (TypeReference type)
+		{
+			var row = GetBlobIndex (GetTypeSpecSignature (type));
+
+			MetadataToken token;
+			if (type_spec_map.TryGetValue (row, out token))
+				return token;
+
+			return AddTypeSpecification (type, row);
+		}
+
+		MetadataToken AddTypeSpecification (TypeReference type, uint row)
+		{
+			type.token = new MetadataToken (TokenType.TypeSpec, typespec_table.AddRow (row));
+
+			var token = type.token;
+			type_spec_map.Add (row, token);
+			return token;
+		}
+
+		MetadataToken GetTypeRefToken (TypeReference type)
+		{
+			var row = CreateTypeRefRow (type);
+
+			MetadataToken token;
+			if (type_ref_map.TryGetValue (row, out token))
+				return token;
+
+			return AddTypeReference (type, row);
+		}
+
+		TypeRefRow CreateTypeRefRow (TypeReference type)
+		{
+			var scope_token = type.IsNested
+				? GetTypeRefToken (type.DeclaringType)
+				: type.Scope.MetadataToken;
+
+			return new TypeRefRow (
+				MakeCodedRID (scope_token, CodedIndex.ResolutionScope),
+				GetStringIndex (type.Name),
+				GetStringIndex (type.Namespace));
+		}
+
+		static CodedRID MakeCodedRID (IMetadataTokenProvider provider, CodedIndex index)
+		{
+			return MakeCodedRID (provider.MetadataToken, index);
+		}
+
+		static CodedRID MakeCodedRID (MetadataToken token, CodedIndex index)
+		{
+			return index.CompressMetadataToken (token);
+		}
+
+		MetadataToken AddTypeReference (TypeReference type, TypeRefRow row)
+		{
+			type.token = new MetadataToken (TokenType.TypeRef, type_ref_table.AddRow (row));
+
+			var token = type.token;
+			type_ref_map.Add (row, token);
+			return token;
+		}
+
+		void AddTypeDefs ()
+		{
+			var types = module.Types;
+
+			for (int i = 0; i < types.Count; i++)
+				AddType (types [i]);
+		}
+
+		void AddType (TypeDefinition type)
+		{
+			type_def_table.AddRow (new TypeDefRow (
+				type.Attributes,
+				GetStringIndex (type.Name),
+				GetStringIndex (type.Namespace),
+				MakeCodedRID (GetTypeToken (type.BaseType), CodedIndex.TypeDefOrRef),
+				type.fields_range.Start,
+				type.methods_range.Start));
+
+			if (type.HasGenericParameters)
+				AddGenericParameters (type);
+
+			if (type.HasInterfaces)
+				AddInterfaces (type);
+
+			if (type.HasLayoutInfo)
+				AddLayoutInfo (type);
+
+			if (type.HasFields)
+				AddFields (type);
+
+			if (type.HasMethods)
+				AddMethods (type);
+
+			if (type.HasProperties)
+				AddProperties (type);
+
+			if (type.HasEvents)
+				AddEvents (type);
+
+			if (type.HasCustomAttributes)
+				AddCustomAttributes (type);
+
+			if (type.HasSecurityDeclarations)
+				AddSecurityDeclarations (type);
+
+			if (type.HasNestedTypes)
+				AddNestedTypes (type);
+		}
+
+		void AddGenericParameters (IGenericParameterProvider owner)
+		{
+			var parameters = owner.GenericParameters;
+
+			for (int i = 0; i < parameters.Count; i++)
+				generic_parameters.Add (parameters [i]);
+		}
+
+		sealed class GenericParameterComparer : IComparer<GenericParameter> {
+
+			public int Compare (GenericParameter a, GenericParameter b)
+			{
+				var a_owner = MakeCodedRID (a.Owner, CodedIndex.TypeOrMethodDef);
+				var b_owner = MakeCodedRID (b.Owner, CodedIndex.TypeOrMethodDef);
+				if (a_owner == b_owner) {
+					var a_pos = a.Position;
+					var b_pos = b.Position;
+					return a_pos == b_pos ? 0 : a_pos > b_pos ? 1 : -1;
+				}
+
+				return a_owner > b_owner ? 1 : -1;
+			}
+		}
+
+		void AddGenericParameters ()
+		{
+			var items = this.generic_parameters.items;
+			var size = this.generic_parameters.size;
+			Array.Sort (items, 0, size, new GenericParameterComparer ());
+
+			var generic_param_table = GetTable<GenericParamTable> (Table.GenericParam);
+			var generic_param_constraint_table = GetTable<GenericParamConstraintTable> (Table.GenericParamConstraint);
+
+			for (int i = 0; i < size; i++) {
+				var generic_parameter = items [i];
+
+				var rid = generic_param_table.AddRow (new GenericParamRow (
+					(ushort) generic_parameter.Position,
+					generic_parameter.Attributes,
+					MakeCodedRID (generic_parameter.Owner, CodedIndex.TypeOrMethodDef),
+					GetStringIndex (generic_parameter.Name)));
+
+				generic_parameter.token = new MetadataToken (TokenType.GenericParam, rid);
+
+				if (generic_parameter.HasConstraints)
+					AddConstraints (generic_parameter, generic_param_constraint_table);
+
+				if (generic_parameter.HasCustomAttributes)
+					AddCustomAttributes (generic_parameter);
+			}
+		}
+
+		void AddConstraints (GenericParameter generic_parameter, GenericParamConstraintTable table)
+		{
+			var constraints = generic_parameter.Constraints;
+
+			var rid = generic_parameter.token.RID;
+
+			for (int i = 0; i < constraints.Count; i++)
+				table.AddRow (new GenericParamConstraintRow (
+					rid,
+					MakeCodedRID (GetTypeToken (constraints [i]), CodedIndex.TypeDefOrRef)));
+		}
+
+		void AddInterfaces (TypeDefinition type)
+		{
+			var interfaces = type.Interfaces;
+			var type_rid = type.token.RID;
+
+			for (int i = 0; i < interfaces.Count; i++)
+				iface_impl_table.AddRow (new InterfaceImplRow (
+					type_rid,
+					MakeCodedRID (GetTypeToken (interfaces [i]), CodedIndex.TypeDefOrRef)));
+		}
+
+		void AddLayoutInfo (TypeDefinition type)
+		{
+			var table = GetTable<ClassLayoutTable> (Table.ClassLayout);
+
+			table.AddRow (new ClassLayoutRow (
+				(ushort) type.PackingSize,
+				(uint) type.ClassSize,
+				type.token.RID));
+		}
+
+		void AddNestedTypes (TypeDefinition type)
+		{
+			var nested_types = type.NestedTypes;
+			var nested_table = GetTable<NestedClassTable> (Table.NestedClass);
+
+			for (int i = 0; i < nested_types.Count; i++) {
+				var nested = nested_types [i];
+				AddType (nested);
+				nested_table.AddRow (new NestedClassRow (nested.token.RID, type.token.RID));
+			}
+		}
+
+		void AddFields (TypeDefinition type)
+		{
+			var fields = type.Fields;
+
+			for (int i = 0; i < fields.Count; i++)
+				AddField (fields [i]);
+		}
+
+		void AddField (FieldDefinition field)
+		{
+			field_table.AddRow (new FieldRow (
+				field.Attributes,
+				GetStringIndex (field.Name),
+				GetBlobIndex (GetFieldSignature (field))));
+
+			if (!field.InitialValue.IsNullOrEmpty ())
+				AddFieldRVA (field);
+
+			if (field.HasLayoutInfo)
+				AddFieldLayout (field);
+
+			if (field.HasCustomAttributes)
+				AddCustomAttributes (field);
+
+			if (field.HasConstant)
+				AddConstant (field, field.FieldType);
+
+			if (field.HasMarshalInfo)
+				AddMarshalInfo (field);
+		}
+
+		void AddFieldRVA (FieldDefinition field)
+		{
+			var table = GetTable<FieldRVATable> (Table.FieldRVA);
+			table.AddRow (new FieldRVARow (
+				data.AddData (field.InitialValue),
+				field.token.RID));
+		}
+
+		void AddFieldLayout (FieldDefinition field)
+		{
+			var table = GetTable<FieldLayoutTable> (Table.FieldLayout);
+			table.AddRow (new FieldLayoutRow ((uint) field.Offset, field.token.RID));
+		}
+
+		void AddMethods (TypeDefinition type)
+		{
+			var methods = type.Methods;
+
+			for (int i = 0; i < methods.Count; i++)
+				AddMethod (methods [i]);
+		}
+
+		void AddMethod (MethodDefinition method)
+		{
+			method_table.AddRow (new MethodRow (
+				method.HasBody ? code.WriteMethodBody (method) : 0,
+				method.ImplAttributes,
+				method.Attributes,
+				GetStringIndex (method.Name),
+				GetBlobIndex (GetMethodSignature (method)),
+				param_rid));
+
+			AddParameters (method);
+
+			if (method.HasGenericParameters)
+				AddGenericParameters (method);
+
+			if (method.IsPInvokeImpl)
+				AddPInvokeInfo (method);
+
+			if (method.HasCustomAttributes)
+				AddCustomAttributes (method);
+
+			if (method.HasSecurityDeclarations)
+				AddSecurityDeclarations (method);
+
+			if (method.HasOverrides)
+				AddOverrides (method);
+		}
+
+		void AddParameters (MethodDefinition method)
+		{
+			var return_parameter = method.MethodReturnType.parameter;
+
+			if (return_parameter != null && RequiresParameterRow (return_parameter))
+				AddParameter (0, return_parameter, param_table);
+
+			if (!method.HasParameters)
+				return;
+
+			var parameters = method.Parameters;
+
+			for (int i = 0; i < parameters.Count; i++) {
+				var parameter = parameters [i];
+				if (!RequiresParameterRow (parameter))
+					continue;
+
+				AddParameter ((ushort) (i + 1), parameter, param_table);
+			}
+		}
+
+		void AddPInvokeInfo (MethodDefinition method)
+		{
+			var pinvoke = method.PInvokeInfo;
+			if (pinvoke == null)
+				throw new ArgumentException ();
+
+			var table = GetTable<ImplMapTable> (Table.ImplMap);
+			table.AddRow (new ImplMapRow (
+				pinvoke.Attributes,
+				MakeCodedRID (method, CodedIndex.MemberForwarded),
+				GetStringIndex (pinvoke.EntryPoint),
+				pinvoke.Module.MetadataToken.RID));
+		}
+
+		void AddOverrides (MethodDefinition method)
+		{
+			var overrides = method.Overrides;
+			var table = GetTable<MethodImplTable> (Table.MethodImpl);
+
+			for (int i = 0; i < overrides.Count; i++) {
+				table.AddRow (new MethodImplRow (
+					method.DeclaringType.token.RID,
+					MakeCodedRID (method, CodedIndex.MethodDefOrRef),
+					MakeCodedRID (LookupToken (overrides [i]), CodedIndex.MethodDefOrRef)));
+			}
+		}
+
+		static bool RequiresParameterRow (ParameterDefinition parameter)
+		{
+			return !string.IsNullOrEmpty (parameter.Name)
+				|| parameter.Attributes != ParameterAttributes.None
+				|| parameter.HasMarshalInfo
+				|| parameter.HasConstant
+				|| parameter.HasCustomAttributes;
+		}
+
+		void AddParameter (ushort sequence, ParameterDefinition parameter, ParamTable table)
+		{
+			table.AddRow (new ParamRow (
+				parameter.Attributes,
+				sequence,
+				GetStringIndex (parameter.Name)));
+
+			parameter.token = new MetadataToken (TokenType.Param, param_rid++);
+
+			if (parameter.HasCustomAttributes)
+				AddCustomAttributes (parameter);
+
+			if (parameter.HasConstant)
+				AddConstant (parameter, parameter.ParameterType);
+
+			if (parameter.HasMarshalInfo)
+				AddMarshalInfo (parameter);
+		}
+
+		void AddMarshalInfo (IMarshalInfoProvider owner)
+		{
+			var table = GetTable<FieldMarshalTable> (Table.FieldMarshal);
+
+			table.AddRow (new FieldMarshalRow (
+				MakeCodedRID (owner, CodedIndex.HasFieldMarshal),
+				GetBlobIndex (GetMarshalInfoSignature (owner))));
+		}
+
+		void AddProperties (TypeDefinition type)
+		{
+			var properties = type.Properties;
+
+			property_map_table.AddRow (new PropertyMapRow (type.token.RID, property_rid));
+
+			for (int i = 0; i < properties.Count; i++)
+				AddProperty (properties [i]);
+		}
+
+		void AddProperty (PropertyDefinition property)
+		{
+			property_table.AddRow (new PropertyRow (
+				property.Attributes,
+				GetStringIndex (property.Name),
+				GetBlobIndex (GetPropertySignature (property))));
+			property.token = new MetadataToken (TokenType.Property, property_rid++);
+
+			var method = property.GetMethod;
+			if (method != null)
+				AddSemantic (MethodSemanticsAttributes.Getter, property, method);
+
+			method = property.SetMethod;
+			if (method != null)
+				AddSemantic (MethodSemanticsAttributes.Setter, property, method);
+
+			if (property.HasOtherMethods)
+				AddOtherSemantic (property, property.OtherMethods);
+
+			if (property.HasCustomAttributes)
+				AddCustomAttributes (property);
+
+			if (property.HasConstant)
+				AddConstant (property, property.PropertyType);
+		}
+
+		void AddOtherSemantic (IMetadataTokenProvider owner, Collection<MethodDefinition> others)
+		{
+			for (int i = 0; i < others.Count; i++)
+				AddSemantic (MethodSemanticsAttributes.Other, owner, others [i]);
+		}
+
+		void AddEvents (TypeDefinition type)
+		{
+			var events = type.Events;
+
+			event_map_table.AddRow (new EventMapRow (type.token.RID, event_rid));
+
+			for (int i = 0; i < events.Count; i++)
+				AddEvent (events [i]);
+		}
+
+		void AddEvent (EventDefinition @event)
+		{
+			event_table.AddRow (new EventRow (
+				@event.Attributes,
+				GetStringIndex (@event.Name),
+				MakeCodedRID (GetTypeToken (@event.EventType), CodedIndex.TypeDefOrRef)));
+			@event.token = new MetadataToken (TokenType.Event, event_rid++);
+
+			var method = @event.AddMethod;
+			if (method != null)
+				AddSemantic (MethodSemanticsAttributes.AddOn, @event, method);
+
+			method = @event.InvokeMethod;
+			if (method != null)
+				AddSemantic (MethodSemanticsAttributes.Fire, @event, method);
+
+			method = @event.RemoveMethod;
+			if (method != null)
+				AddSemantic (MethodSemanticsAttributes.RemoveOn, @event, method);
+
+			if (@event.HasOtherMethods)
+				AddOtherSemantic (@event, @event.OtherMethods);
+
+			if (@event.HasCustomAttributes)
+				AddCustomAttributes (@event);
+		}
+
+		void AddSemantic (MethodSemanticsAttributes semantics, IMetadataTokenProvider provider, MethodDefinition method)
+		{
+			method.SemanticsAttributes = semantics;
+			var table = GetTable<MethodSemanticsTable> (Table.MethodSemantics);
+
+			table.AddRow (new MethodSemanticsRow (
+				semantics,
+				method.token.RID,
+				MakeCodedRID (provider, CodedIndex.HasSemantics)));
+		}
+
+		void AddConstant (IConstantProvider owner, TypeReference type)
+		{
+			var constant = owner.Constant;
+			var etype = GetConstantType (type, constant);
+
+			constant_table.AddRow (new ConstantRow (
+				etype,
+				MakeCodedRID (owner.MetadataToken, CodedIndex.HasConstant),
+				GetBlobIndex (GetConstantSignature (etype, constant))));
+		}
+
+		static ElementType GetConstantType (TypeReference constant_type, object constant)
+		{
+			if (constant == null)
+				return ElementType.Class;
+
+			var etype = constant_type.etype;
+			switch (etype) {
+			case ElementType.None:
+				var type = constant_type.CheckedResolve ();
+				if (type.IsEnum)
+					return GetConstantType (type.GetEnumUnderlyingType (), constant);
+
+				return ElementType.Class;
+			case ElementType.String:
+				return ElementType.String;
+			case ElementType.Object:
+				return GetConstantType (constant.GetType ());
+			case ElementType.Array:
+			case ElementType.SzArray:
+			case ElementType.MVar:
+			case ElementType.Var:
+				return ElementType.Class;
+			case ElementType.GenericInst:
+			case ElementType.CModOpt:
+			case ElementType.CModReqD:
+			case ElementType.ByRef:
+			case ElementType.Sentinel:
+				return GetConstantType (((TypeSpecification) constant_type).ElementType, constant);
+			case ElementType.Boolean:
+			case ElementType.Char:
+			case ElementType.I:
+			case ElementType.I1:
+			case ElementType.I2:
+			case ElementType.I4:
+			case ElementType.I8:
+			case ElementType.U:
+			case ElementType.U1:
+			case ElementType.U2:
+			case ElementType.U4:
+			case ElementType.U8:
+			case ElementType.R4:
+			case ElementType.R8:
+				return GetConstantType (constant.GetType ());
+			default:
+				return etype;
+			}
+		}
+
+		static ElementType GetConstantType (Type type)
+		{
+			switch (Type.GetTypeCode (type)) {
+			case TypeCode.Boolean:
+				return ElementType.Boolean;
+			case TypeCode.Byte:
+				return ElementType.U1;
+			case TypeCode.SByte:
+				return ElementType.I1;
+			case TypeCode.Char:
+				return ElementType.Char;
+			case TypeCode.Int16:
+				return ElementType.I2;
+			case TypeCode.UInt16:
+				return ElementType.U2;
+			case TypeCode.Int32:
+				return ElementType.I4;
+			case TypeCode.UInt32:
+				return ElementType.U4;
+			case TypeCode.Int64:
+				return ElementType.I8;
+			case TypeCode.UInt64:
+				return ElementType.U8;
+			case TypeCode.Single:
+				return ElementType.R4;
+			case TypeCode.Double:
+				return ElementType.R8;
+			case TypeCode.String:
+				return ElementType.String;
+			default:
+				throw new NotSupportedException (type.FullName);
+			}
+		}
+
+		void AddCustomAttributes (ICustomAttributeProvider owner)
+		{
+			var custom_attributes = owner.CustomAttributes;
+
+			for (int i = 0; i < custom_attributes.Count; i++) {
+				var attribute = custom_attributes [i];
+
+				custom_attribute_table.AddRow (new CustomAttributeRow (
+					MakeCodedRID (owner, CodedIndex.HasCustomAttribute),
+					MakeCodedRID (LookupToken (attribute.Constructor), CodedIndex.CustomAttributeType),
+					GetBlobIndex (GetCustomAttributeSignature (attribute))));
+			}
+		}
+
+		void AddSecurityDeclarations (ISecurityDeclarationProvider owner)
+		{
+			var declarations = owner.SecurityDeclarations;
+
+			for (int i = 0; i < declarations.Count; i++) {
+				var declaration = declarations [i];
+
+				declsec_table.AddRow (new DeclSecurityRow (
+					declaration.Action,
+					MakeCodedRID (owner, CodedIndex.HasDeclSecurity),
+					GetBlobIndex (GetSecurityDeclarationSignature (declaration))));
+			}
+		}
+
+		MetadataToken GetMemberRefToken (MemberReference member)
+		{
+			var row = CreateMemberRefRow (member);
+
+			MetadataToken token;
+			if (member_ref_map.TryGetValue (row, out token))
+				return token;
+
+			AddMemberReference (member, row);
+
+			return member.token;
+		}
+
+		MemberRefRow CreateMemberRefRow (MemberReference member)
+		{
+			return new MemberRefRow (
+				MakeCodedRID (GetTypeToken (member.DeclaringType), CodedIndex.MemberRefParent),
+				GetStringIndex (member.Name),
+				GetBlobIndex (GetMemberRefSignature (member)));
+		}
+
+		void AddMemberReference (MemberReference member, MemberRefRow row)
+		{
+			member.token = new MetadataToken (TokenType.MemberRef, member_ref_table.AddRow (row));
+			member_ref_map.Add (row, member.token);
+		}
+
+		MetadataToken GetMethodSpecToken (MethodSpecification method_spec)
+		{
+			var row = CreateMethodSpecRow (method_spec);
+
+			MetadataToken token;
+			if (method_spec_map.TryGetValue (row, out token))
+				return token;
+
+			AddMethodSpecification (method_spec, row);
+
+			return method_spec.token;
+		}
+
+		void AddMethodSpecification (MethodSpecification method_spec, MethodSpecRow row)
+		{
+			method_spec.token = new MetadataToken (TokenType.MethodSpec, method_spec_table.AddRow (row));
+			method_spec_map.Add (row, method_spec.token);
+		}
+
+		MethodSpecRow CreateMethodSpecRow (MethodSpecification method_spec)
+		{
+			return new MethodSpecRow (
+				MakeCodedRID (LookupToken (method_spec.ElementMethod), CodedIndex.MethodDefOrRef),
+				GetBlobIndex (GetMethodSpecSignature (method_spec)));
+		}
+
+		SignatureWriter CreateSignatureWriter ()
+		{
+			return new SignatureWriter (this);
+		}
+
+		SignatureWriter GetMethodSpecSignature (MethodSpecification method_spec)
+		{
+			if (!method_spec.IsGenericInstance)
+				throw new NotSupportedException ();
+
+			var generic_instance = (GenericInstanceMethod) method_spec;
+
+			var signature = CreateSignatureWriter ();
+			signature.WriteByte (0x0a);
+
+			signature.WriteGenericInstanceSignature (generic_instance);
+
+			return signature;
+		}
+
+		public uint AddStandAloneSignature (uint signature)
+		{
+			return (uint) standalone_sig_table.AddRow (signature);
+		}
+
+		public uint GetLocalVariableBlobIndex (Collection<VariableDefinition> variables)
+		{
+			return GetBlobIndex (GetVariablesSignature (variables));
+		}
+
+		public uint GetCallSiteBlobIndex (CallSite call_site)
+		{
+			return GetBlobIndex (GetMethodSignature (call_site));
+		}
+
+		SignatureWriter GetVariablesSignature (Collection<VariableDefinition> variables)
+		{
+			var signature = CreateSignatureWriter ();
+			signature.WriteByte (0x7);
+			signature.WriteCompressedUInt32 ((uint) variables.Count);
+			for (int i = 0; i < variables.Count; i++)
+				signature.WriteTypeSignature (variables [i].VariableType);
+			return signature;
+		}
+
+		SignatureWriter GetFieldSignature (FieldReference field)
+		{
+			var signature = CreateSignatureWriter ();
+			signature.WriteByte (0x6);
+			signature.WriteTypeSignature (field.FieldType);
+			return signature;
+		}
+
+		SignatureWriter GetMethodSignature (IMethodSignature method)
+		{
+			var signature = CreateSignatureWriter ();
+			signature.WriteMethodSignature (method);
+			return signature;
+		}
+
+		SignatureWriter GetMemberRefSignature (MemberReference member)
+		{
+			var field = member as FieldReference;
+			if (field != null)
+				return GetFieldSignature (field);
+
+			var method = member as MethodReference;
+			if (method != null)
+				return GetMethodSignature (method);
+
+			throw new NotSupportedException ();
+		}
+
+		SignatureWriter GetPropertySignature (PropertyDefinition property)
+		{
+			var signature = CreateSignatureWriter ();
+			byte calling_convention = 0x8;
+			if (property.HasThis)
+				calling_convention |= 0x20;
+
+			uint param_count = 0;
+			Collection<ParameterDefinition> parameters = null;
+
+			if (property.HasParameters) {
+				parameters = property.Parameters;
+				param_count = (uint) parameters.Count;
+			}
+
+			signature.WriteByte (calling_convention);
+			signature.WriteCompressedUInt32 (param_count);
+			signature.WriteTypeSignature (property.PropertyType);
+
+			if (param_count == 0)
+				return signature;
+
+			for (int i = 0; i < param_count; i++)
+				signature.WriteTypeSignature (parameters [i].ParameterType);
+
+			return signature;
+		}
+
+		SignatureWriter GetTypeSpecSignature (TypeReference type)
+		{
+			var signature = CreateSignatureWriter ();
+			signature.WriteTypeSignature (type);
+			return signature;
+		}
+
+		SignatureWriter GetConstantSignature (ElementType type, object value)
+		{
+			var signature = CreateSignatureWriter ();
+
+			switch (type) {
+			case ElementType.Array:
+			case ElementType.SzArray:
+			case ElementType.Class:
+			case ElementType.Object:
+			case ElementType.Var:
+			case ElementType.MVar:
+				signature.WriteInt32 (0);
+				break;
+			case ElementType.String:
+				signature.WriteConstantString ((string) value);
+				break;
+			default:
+				signature.WriteConstantPrimitive (value);
+				break;
+			}
+
+			return signature;
+		}
+
+		SignatureWriter GetCustomAttributeSignature (CustomAttribute attribute)
+		{
+			var signature = CreateSignatureWriter ();
+			if (!attribute.resolved) {
+				signature.WriteBytes (attribute.GetBlob ());
+				return signature;
+			}
+
+			signature.WriteUInt16 (0x0001);
+
+			signature.WriteCustomAttributeConstructorArguments (attribute);
+
+			signature.WriteCustomAttributeNamedArguments (attribute);
+
+			return signature;
+		}
+
+		SignatureWriter GetSecurityDeclarationSignature (SecurityDeclaration declaration)
+		{
+			var signature = CreateSignatureWriter ();
+			if (!declaration.resolved) {
+				signature.WriteBytes (declaration.GetBlob ());
+				return signature;
+			}
+
+			signature.WriteByte ((byte) '.');
+
+			var attributes = declaration.security_attributes;
+			if (attributes == null)
+				throw new NotSupportedException ();
+
+			signature.WriteCompressedUInt32 ((uint) attributes.Count);
+
+			for (int i = 0; i < attributes.Count; i++)
+				signature.WriteSecurityAttribute (attributes [i]);
+
+			return signature;
+		}
+
+		SignatureWriter GetMarshalInfoSignature (IMarshalInfoProvider owner)
+		{
+			var signature = CreateSignatureWriter ();
+
+			signature.WriteMarshalInfo (owner.MarshalInfo);
+
+			return signature;
+		}
+
+		static Exception CreateForeignMemberException (MemberReference member)
+		{
+			return new ArgumentException (string.Format ("Member '{0}' is declared in another module and needs to be imported", member));
+		}
+
+		public MetadataToken LookupToken (IMetadataTokenProvider provider)
+		{
+			if (provider == null)
+				throw new ArgumentNullException ();
+
+			var member = provider as MemberReference;
+			if (member == null || member.Module != module)
+				throw CreateForeignMemberException (member);
+
+			var token = provider.MetadataToken;
+
+			switch (token.TokenType) {
+			case TokenType.TypeDef:
+			case TokenType.Method:
+			case TokenType.Field:
+			case TokenType.Event:
+			case TokenType.Property:
+				return token;
+			case TokenType.TypeRef:
+			case TokenType.TypeSpec:
+			case TokenType.GenericParam:
+				return GetTypeToken ((TypeReference) provider);
+			case TokenType.MethodSpec:
+				return GetMethodSpecToken ((MethodSpecification) provider);
+			case TokenType.MemberRef:
+				return GetMemberRefToken (member);
+			default:
+				throw new NotSupportedException ();
+			}
+		}
+	}
+
+	sealed class SignatureWriter : ByteBuffer {
+
+		readonly MetadataBuilder metadata;
+
+		public SignatureWriter (MetadataBuilder metadata)
+			: base (6)
+		{
+			this.metadata = metadata;
+		}
+
+		public void WriteElementType (ElementType element_type)
+		{
+			WriteByte ((byte) element_type);
+		}
+
+		public void WriteUTF8String (string @string)
+		{
+			if (@string == null) {
+				WriteByte (0xff);
+				return;
+			}
+
+			var bytes = Encoding.UTF8.GetBytes (@string);
+			WriteCompressedUInt32 ((uint) bytes.Length);
+			WriteBytes (bytes);
+		}
+
+		public void WriteMethodSignature (IMethodSignature method)
+		{
+			byte calling_convention = (byte) method.CallingConvention;
+			if (method.HasThis)
+				calling_convention |= 0x20;
+			if (method.ExplicitThis)
+				calling_convention |= 0x40;
+
+			var generic_provider = method as IGenericParameterProvider;
+			var generic_arity = generic_provider != null && generic_provider.HasGenericParameters
+				? generic_provider.GenericParameters.Count
+				: 0;
+
+			if (generic_arity > 0)
+				calling_convention |= 0x10;
+
+			var param_count = method.HasParameters ? method.Parameters.Count : 0;
+
+			WriteByte (calling_convention);
+
+			if (generic_arity > 0)
+				WriteCompressedUInt32 ((uint) generic_arity);
+
+			WriteCompressedUInt32 ((uint) param_count);
+			WriteTypeSignature (method.ReturnType);
+
+			if (param_count == 0)
+				return;
+
+			var parameters = method.Parameters;
+
+			for (int i = 0; i < param_count; i++)
+				WriteTypeSignature (parameters [i].ParameterType);
+		}
+
+		uint MakeTypeDefOrRefCodedRID (TypeReference type)
+		{
+			return CodedIndex.TypeDefOrRef.CompressMetadataToken (metadata.LookupToken (type));
+		}
+
+		public void WriteTypeSignature (TypeReference type)
+		{
+			if (type == null)
+				throw new ArgumentNullException ();
+
+			var etype = type.etype;
+
+			switch (etype) {
+			case ElementType.MVar:
+			case ElementType.Var: {
+				var generic_parameter = (GenericParameter) type;
+
+				WriteElementType (etype);
+				var position = generic_parameter.Position;
+				if (position == -1)
+					throw new NotSupportedException ();
+
+				WriteCompressedUInt32 ((uint) position);
+				break;
+			}
+
+			case ElementType.GenericInst: {
+				var generic_instance = (GenericInstanceType) type;
+				WriteElementType (ElementType.GenericInst);
+				WriteElementType (generic_instance.IsValueType ? ElementType.ValueType : ElementType.Class);
+				WriteCompressedUInt32 (MakeTypeDefOrRefCodedRID (generic_instance.ElementType));
+
+				WriteGenericInstanceSignature (generic_instance);
+				break;
+			}
+
+			case ElementType.Ptr:
+			case ElementType.ByRef:
+			case ElementType.Pinned:
+			case ElementType.Sentinel: {
+				var type_spec = (TypeSpecification) type;
+				WriteElementType (etype);
+				WriteTypeSignature (type_spec.ElementType);
+				break;
+			}
+
+			case ElementType.FnPtr: {
+				var fptr = (FunctionPointerType) type;
+				WriteElementType (ElementType.FnPtr);
+				WriteMethodSignature (fptr);
+				break;
+			}
+
+			case ElementType.CModOpt:
+			case ElementType.CModReqD: {
+				var modifier = (IModifierType) type;
+				WriteModifierSignature (etype, modifier);
+				break;
+			}
+
+			case ElementType.Array: {
+				var array = (ArrayType) type;
+				if (!array.IsVector) {
+					WriteArrayTypeSignature (array);
+					break;
+				}
+
+				WriteElementType (ElementType.SzArray);
+				WriteTypeSignature (array.ElementType);
+				break;
+			}
+
+			case ElementType.None: {
+				WriteElementType (type.IsValueType ? ElementType.ValueType : ElementType.Class);
+				WriteCompressedUInt32 (MakeTypeDefOrRefCodedRID (type));
+				break;
+			}
+
+			default:
+				if (!TryWriteElementType (type))
+					throw new NotSupportedException ();
+
+				break;
+
+			}
+		}
+
+		void WriteArrayTypeSignature (ArrayType array)
+		{
+			WriteElementType (ElementType.Array);
+			WriteTypeSignature (array.ElementType);
+
+			var dimensions = array.Dimensions;
+			var rank = dimensions.Count;
+
+			WriteCompressedUInt32 ((uint) rank);
+
+			var sized = 0;
+			var lbounds = 0;
+
+			for (int i = 0; i < rank; i++) {
+				var dimension = dimensions [i];
+
+				if (dimension.UpperBound.HasValue) {
+					sized++;
+					lbounds++;
+				} else if (dimension.LowerBound.HasValue)
+					lbounds++;
+			}
+
+			var sizes = new int [sized];
+			var low_bounds = new int [lbounds];
+
+			for (int i = 0; i < lbounds; i++) {
+				var dimension = dimensions [i];
+				low_bounds [i] = dimension.LowerBound.GetValueOrDefault ();
+				if (dimension.UpperBound.HasValue)
+					sizes [i] = dimension.UpperBound.Value - low_bounds [i] + 1;
+			}
+
+			WriteCompressedUInt32 ((uint) sized);
+			for (int i = 0; i < sized; i++)
+				WriteCompressedUInt32 ((uint) sizes [i]);
+
+			WriteCompressedUInt32 ((uint) lbounds);
+			for (int i = 0; i < lbounds; i++)
+				WriteCompressedInt32 (low_bounds [i]);
+		}
+
+		public void WriteGenericInstanceSignature (IGenericInstance instance)
+		{
+			var generic_arguments = instance.GenericArguments;
+			var arity = generic_arguments.Count;
+
+			WriteCompressedUInt32 ((uint) arity);
+			for (int i = 0; i < arity; i++)
+				WriteTypeSignature (generic_arguments [i]);
+		}
+
+		void WriteModifierSignature (ElementType element_type, IModifierType type)
+		{
+			WriteElementType (element_type);
+			WriteCompressedUInt32 (MakeTypeDefOrRefCodedRID (type.ModifierType));
+			WriteTypeSignature (type.ElementType);
+		}
+
+		bool TryWriteElementType (TypeReference type)
+		{
+			var element = type.etype;
+
+			if (element == ElementType.None)
+				return false;
+
+			WriteElementType (element);
+			return true;
+		}
+
+		public void WriteConstantString (string value)
+		{
+			WriteBytes (Encoding.Unicode.GetBytes (value));
+		}
+
+		public void WriteConstantPrimitive (object value)
+		{
+			WritePrimitiveValue (value);
+		}
+
+		public void WriteCustomAttributeConstructorArguments (CustomAttribute attribute)
+		{
+			if (!attribute.HasConstructorArguments)
+				return;
+
+			var arguments = attribute.ConstructorArguments;
+			var parameters = attribute.Constructor.Parameters;
+
+			if (parameters.Count != arguments.Count)
+				throw new InvalidOperationException ();
+
+			for (int i = 0; i < arguments.Count; i++)
+				WriteCustomAttributeFixedArgument (parameters [i].ParameterType, arguments [i]);
+		}
+
+		void WriteCustomAttributeFixedArgument (TypeReference type, CustomAttributeArgument argument)
+		{
+			if (type.IsArray) {
+				WriteCustomAttributeFixedArrayArgument ((ArrayType) type, argument);
+				return;
+			}
+
+			WriteCustomAttributeElement (type, argument);
+		}
+
+		void WriteCustomAttributeFixedArrayArgument (ArrayType type, CustomAttributeArgument argument)
+		{
+			var values = argument.Value as CustomAttributeArgument [];
+
+			if (values == null) {
+				WriteUInt32 (0xffffffff);
+				return;
+			}
+
+			WriteInt32 (values.Length);
+
+			if (values.Length == 0)
+				return;
+
+			var element_type = type.ElementType;
+
+			for (int i = 0; i < values.Length; i++)
+				WriteCustomAttributeElement (element_type, values [i]);
+		}
+
+		void WriteCustomAttributeElement (TypeReference type, CustomAttributeArgument argument)
+		{
+			if (type.IsArray) {
+				WriteCustomAttributeFixedArrayArgument ((ArrayType) type, argument);
+				return;
+			}
+
+			if (type.etype == ElementType.Object) {
+				argument = (CustomAttributeArgument) argument.Value;
+				type = argument.Type;
+
+				WriteCustomAttributeFieldOrPropType (type);
+				WriteCustomAttributeElement (type, argument);
+				return;
+			}
+
+			WriteCustomAttributeValue (type, argument.Value);
+		}
+
+		void WriteCustomAttributeValue (TypeReference type, object value)
+		{
+			var etype = type.etype;
+
+			switch (etype) {
+			case ElementType.String:
+				var @string = (string) value;
+				if (@string == null)
+					WriteByte (0xff);
+				else
+					WriteUTF8String (@string);
+				break;
+			case ElementType.None:
+				if (type.IsTypeOf ("System", "Type"))
+					WriteTypeReference ((TypeReference) value);
+				else
+					WriteCustomAttributeEnumValue (type, value);
+				break;
+			default:
+				WritePrimitiveValue (value);
+				break;
+			}
+		}
+
+		void WritePrimitiveValue (object value)
+		{
+			if (value == null)
+				throw new ArgumentNullException ();
+
+			switch (Type.GetTypeCode (value.GetType ())) {
+			case TypeCode.Boolean:
+				WriteByte ((byte) (((bool) value) ? 1 : 0));
+				break;
+			case TypeCode.Byte:
+				WriteByte ((byte) value);
+				break;
+			case TypeCode.SByte:
+				WriteSByte ((sbyte) value);
+				break;
+			case TypeCode.Int16:
+				WriteInt16 ((short) value);
+				break;
+			case TypeCode.UInt16:
+				WriteUInt16 ((ushort) value);
+				break;
+			case TypeCode.Char:
+				WriteInt16 ((short) (char) value);
+				break;
+			case TypeCode.Int32:
+				WriteInt32 ((int) value);
+				break;
+			case TypeCode.UInt32:
+				WriteUInt32 ((uint) value);
+				break;
+			case TypeCode.Single:
+				WriteSingle ((float) value);
+				break;
+			case TypeCode.Int64:
+				WriteInt64 ((long) value);
+				break;
+			case TypeCode.UInt64:
+				WriteUInt64 ((ulong) value);
+				break;
+			case TypeCode.Double:
+				WriteDouble ((double) value);
+				break;
+			default:
+				throw new NotSupportedException (value.GetType ().FullName);
+			}
+		}
+
+		void WriteCustomAttributeEnumValue (TypeReference enum_type, object value)
+		{
+			var type = enum_type.CheckedResolve ();
+			if (!type.IsEnum)
+				throw new ArgumentException ();
+
+			WriteCustomAttributeValue (type.GetEnumUnderlyingType (), value);
+		}
+
+		void WriteCustomAttributeFieldOrPropType (TypeReference type)
+		{
+			if (type.IsArray) {
+				var array = (ArrayType) type;
+				WriteElementType (ElementType.SzArray);
+				WriteCustomAttributeFieldOrPropType (array.ElementType);
+				return;
+			}
+
+			var etype = type.etype;
+
+			switch (etype) {
+			case ElementType.Object:
+				WriteElementType (ElementType.Boxed);
+				return;
+			case ElementType.None:
+				if (type.IsTypeOf ("System", "Type"))
+					WriteElementType (ElementType.Type);
+				else {
+					WriteElementType (ElementType.Enum);
+					WriteTypeReference (type);
+				}
+				return;
+			default:
+				WriteElementType (etype);
+				return;
+			}
+		}
+
+		public void WriteCustomAttributeNamedArguments (CustomAttribute attribute)
+		{
+			var count = GetNamedArgumentCount (attribute);
+
+			WriteUInt16 ((ushort) count);
+
+			if (count == 0)
+				return;
+
+			WriteICustomAttributeNamedArguments (attribute);
+		}
+
+		static int GetNamedArgumentCount (ICustomAttribute attribute)
+		{
+			int count = 0;
+
+			if (attribute.HasFields)
+				count += attribute.Fields.Count;
+
+			if (attribute.HasProperties)
+				count += attribute.Properties.Count;
+
+			return count;
+		}
+
+		void WriteICustomAttributeNamedArguments (ICustomAttribute attribute)
+		{
+			if (attribute.HasFields)
+				WriteCustomAttributeNamedArguments (0x53, attribute.Fields);
+
+			if (attribute.HasProperties)
+				WriteCustomAttributeNamedArguments (0x54, attribute.Properties);
+		}
+
+		void WriteCustomAttributeNamedArguments (byte kind, Collection<CustomAttributeNamedArgument> named_arguments)
+		{
+			for (int i = 0; i < named_arguments.Count; i++)
+				WriteCustomAttributeNamedArgument (kind, named_arguments [i]);
+		}
+
+		void WriteCustomAttributeNamedArgument (byte kind, CustomAttributeNamedArgument named_argument)
+		{
+			var argument = named_argument.Argument;
+
+			WriteByte (kind);
+			WriteCustomAttributeFieldOrPropType (argument.Type);
+			WriteUTF8String (named_argument.Name);
+			WriteCustomAttributeFixedArgument (argument.Type, argument);
+		}
+
+		public void WriteSecurityAttribute (SecurityAttribute attribute)
+		{
+			WriteTypeReference (attribute.AttributeType);
+
+			var count = GetNamedArgumentCount (attribute);
+
+			if (count == 0) {
+				WriteCompressedUInt32 (0); // length
+				WriteCompressedUInt32 (0); // count
+				return;
+			}
+
+            var buffer = new SignatureWriter (metadata);
+			buffer.WriteCompressedUInt32 ((uint) count);
+			buffer.WriteICustomAttributeNamedArguments (attribute);
+
+			WriteCompressedUInt32 ((uint) buffer.length);
+			WriteBytes (buffer);
+		}
+
+		void WriteTypeReference (TypeReference type)
+		{
+			WriteUTF8String (TypeParser.ToParseable (type));
+		}
+
+		public void WriteMarshalInfo (MarshalInfo marshal_info)
+		{
+			WriteNativeType (marshal_info.native);
+
+			switch (marshal_info.native) {
+			case NativeType.Array: {
+				var array = (ArrayMarshalInfo) marshal_info;
+				if (array.element_type != NativeType.None)
+					WriteNativeType (array.element_type);
+				if (array.size_parameter_index > -1)
+					WriteCompressedUInt32 ((uint) array.size_parameter_index);
+				if (array.size > -1)
+					WriteCompressedUInt32 ((uint) array.size);
+				if (array.size_parameter_multiplier > -1)
+					WriteCompressedUInt32 ((uint) array.size_parameter_multiplier);
+				return;
+			}
+			case NativeType.SafeArray: {
+				var array = (SafeArrayMarshalInfo) marshal_info;
+				if (array.element_type != VariantType.None)
+					WriteVariantType (array.element_type);
+				return;
+			}
+			case NativeType.FixedArray: {
+				var array = (FixedArrayMarshalInfo) marshal_info;
+				if (array.size > -1)
+					WriteCompressedUInt32 ((uint) array.size);
+				if (array.element_type != NativeType.None)
+					WriteNativeType (array.element_type);
+				return;
+			}
+			case NativeType.FixedSysString:
+				var sys_string = (FixedSysStringMarshalInfo) marshal_info;
+				if (sys_string.size > -1)
+					WriteCompressedUInt32 ((uint) sys_string.size);
+				return;
+			case NativeType.CustomMarshaler:
+				var marshaler = (CustomMarshalInfo) marshal_info;
+				WriteUTF8String (marshaler.guid != Guid.Empty ? marshaler.guid.ToString () : string.Empty);
+				WriteUTF8String (marshaler.unmanaged_type);
+				WriteTypeReference (marshaler.managed_type);
+				WriteUTF8String (marshaler.cookie);
+				return;
+			}
+		}
+
+		void WriteNativeType (NativeType native)
+		{
+			WriteByte ((byte) native);
+		}
+
+		void WriteVariantType (VariantType variant)
+		{
+			WriteByte ((byte) variant);
+		}
+	}
+
+#endif
+
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/BaseAssemblyResolver.cs b/mcs/class/Mono.Cecil/Mono.Cecil/BaseAssemblyResolver.cs
index 99b5182..e449a03 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/BaseAssemblyResolver.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/BaseAssemblyResolver.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,89 +26,143 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Text;
+
+using Mono.Collections.Generic;
+
 namespace Mono.Cecil {
 
-	using System;
-	using System.Collections;
-	using System.IO;
-	using SR = System.Reflection;
-	using System.Text;
+	public delegate AssemblyDefinition AssemblyResolveEventHandler (object sender, AssemblyNameReference reference);
+
+	public sealed class AssemblyResolveEventArgs : EventArgs {
+
+		readonly AssemblyNameReference reference;
+
+		public AssemblyNameReference AssemblyReference {
+			get { return reference; }
+		}
+
+		public AssemblyResolveEventArgs (AssemblyNameReference reference)
+		{
+			this.reference = reference;
+		}
+	}
 
 	public abstract class BaseAssemblyResolver : IAssemblyResolver {
 
-		ArrayList m_directories;
-		string[] m_monoGacPaths;
+		static readonly bool on_mono = Type.GetType ("Mono.Runtime") != null;
+
+		readonly Collection<string> directories;
+
+#if !SILVERLIGHT && !CF
+		Collection<string> gac_paths;
+#endif
 
 		public void AddSearchDirectory (string directory)
 		{
-			m_directories.Add (directory);
+			directories.Add (directory);
 		}
 
 		public void RemoveSearchDirectory (string directory)
 		{
-			m_directories.Remove (directory);
+			directories.Remove (directory);
 		}
 
 		public string [] GetSearchDirectories ()
 		{
-			return (string []) m_directories.ToArray (typeof (string));
+			var directories = new string [this.directories.size];
+			Array.Copy (this.directories.items, directories, directories.Length);
+			return directories;
 		}
 
 		public virtual AssemblyDefinition Resolve (string fullName)
 		{
-			return Resolve (AssemblyNameReference.Parse (fullName));
+			return Resolve (fullName, new ReaderParameters ());
 		}
 
-		public BaseAssemblyResolver ()
+		public virtual AssemblyDefinition Resolve (string fullName, ReaderParameters parameters)
 		{
-			m_directories = new ArrayList ();
-			m_directories.Add (".");
-			m_directories.Add ("bin");
+			if (fullName == null)
+				throw new ArgumentNullException ("fullName");
+
+			return Resolve (AssemblyNameReference.Parse (fullName), parameters);
+		}
+
+		public event AssemblyResolveEventHandler ResolveFailure;
+
+		protected BaseAssemblyResolver ()
+		{
+			directories = new Collection<string> (2) { ".", "bin" };
+		}
+
+		AssemblyDefinition GetAssembly (string file, ReaderParameters parameters)
+		{
+			if (parameters.AssemblyResolver == null)
+				parameters.AssemblyResolver = this;
+
+			return ModuleDefinition.ReadModule (file, parameters).Assembly;
 		}
 
 		public virtual AssemblyDefinition Resolve (AssemblyNameReference name)
 		{
-			AssemblyDefinition assembly;
-			string frameworkdir = Path.GetDirectoryName (typeof (object).Module.FullyQualifiedName);
+			return Resolve (name, new ReaderParameters ());
+		}
+
+		public virtual AssemblyDefinition Resolve (AssemblyNameReference name, ReaderParameters parameters)
+		{
+			if (name == null)
+				throw new ArgumentNullException ("name");
+			if (parameters == null)
+				parameters = new ReaderParameters ();
 
-			assembly = SearchDirectory (name, m_directories);
+			var assembly = SearchDirectory (name, directories, parameters);
 			if (assembly != null)
 				return assembly;
 
+#if !SILVERLIGHT && !CF
+			var framework_dir = Path.GetDirectoryName (typeof (object).Module.FullyQualifiedName);
+
 			if (IsZero (name.Version)) {
-				assembly = SearchDirectory (name, new string [] {frameworkdir});
+				assembly = SearchDirectory (name, new [] { framework_dir }, parameters);
 				if (assembly != null)
 					return assembly;
 			}
 
-#if !CF_1_0 && !CF_2_0 && !NO_SYSTEM_DLL
 			if (name.Name == "mscorlib") {
-				assembly = GetCorlib (name);
+				assembly = GetCorlib (name, parameters);
 				if (assembly != null)
 					return assembly;
 			}
 
-			assembly = GetAssemblyInGac (name);
+			assembly = GetAssemblyInGac (name, parameters);
 			if (assembly != null)
 				return assembly;
-#endif
 
-			assembly = SearchDirectory (name, new string [] {frameworkdir});
+			assembly = SearchDirectory (name, new [] { framework_dir }, parameters);
 			if (assembly != null)
 				return assembly;
+#endif
+
+			if (ResolveFailure != null) {
+				assembly = ResolveFailure (this, name);
+				if (assembly != null)
+					return assembly;
+			}
 
 			throw new FileNotFoundException ("Could not resolve: " + name);
 		}
 
-		static readonly string [] _extentions = new string [] { ".dll", ".exe" };
-
-		static AssemblyDefinition SearchDirectory (AssemblyNameReference name, IEnumerable directories)
+		AssemblyDefinition SearchDirectory (AssemblyNameReference name, IEnumerable<string> directories, ReaderParameters parameters)
 		{
-			foreach (string dir in directories) {
-				foreach (string ext in _extentions) {
-					string file = Path.Combine (dir, name.Name + ext);
+			var extensions = new [] { ".exe", ".dll" };
+			foreach (var directory in directories) {
+				foreach (var extension in extensions) {
+					string file = Path.Combine (directory, name.Name + extension);
 					if (File.Exists (file))
-						return AssemblyFactory.GetAssembly (file);
+						return GetAssembly (file, parameters);
 				}
 			}
 
@@ -117,147 +171,164 @@ namespace Mono.Cecil {
 
 		static bool IsZero (Version version)
 		{
-			return version.Major == 0 && version.Minor == 0 && version.Build == 0 && version.Revision == 0;
+			return version == null || (version.Major == 0 && version.Minor == 0 && version.Build == 0 && version.Revision == 0);
 		}
 
-#if !CF_1_0 && !CF_2_0 && !NO_SYSTEM_DLL
-		static AssemblyDefinition GetCorlib (AssemblyNameReference reference)
+#if !SILVERLIGHT && !CF
+		AssemblyDefinition GetCorlib (AssemblyNameReference reference, ReaderParameters parameters)
 		{
-			SR.AssemblyName corlib = typeof (object).Assembly.GetName ();
-			if (corlib.Version == reference.Version || IsZero (reference.Version))
-				return AssemblyFactory.GetAssembly (typeof (object).Module.FullyQualifiedName);
+			var version = reference.Version;
+			var corlib = typeof (object).Assembly.GetName ();
 
-			string path = Directory.GetParent (
+			if (corlib.Version == version || IsZero (version))
+				return GetAssembly (typeof (object).Module.FullyQualifiedName, parameters);
+
+			var path = Directory.GetParent (
 				Directory.GetParent (
 					typeof (object).Module.FullyQualifiedName).FullName
 				).FullName;
 
-			string runtime_path = null;
-			if (OnMono ()) {
-				if (reference.Version.Major == 1)
-					runtime_path = "1.0";
-				else if (reference.Version.Major == 2) {
-					if (reference.Version.Minor == 1)
-						runtime_path = "2.1";
+			if (on_mono) {
+				if (version.Major == 1)
+					path = Path.Combine (path, "1.0");
+				else if (version.Major == 2) {
+					if (version.MajorRevision == 5)
+						path = Path.Combine (path, "2.1");
 					else
-						runtime_path = "2.0";
-				} else if (reference.Version.Major == 4)
-					runtime_path = "4.0";
+						path = Path.Combine (path, "2.0");
+				} else if (version.Major == 4)
+					path = Path.Combine (path, "4.0");
+				else
+					throw new NotSupportedException ("Version not supported: " + version);
 			} else {
-				switch (reference.Version.ToString ()) {
-				case "1.0.3300.0":
-					runtime_path = "v1.0.3705";
-					break;
-				case "1.0.5000.0":
-					runtime_path = "v1.1.4322";
+				switch (version.Major) {
+				case 1:
+					if (version.MajorRevision == 3300)
+						path = Path.Combine (path, "v1.0.3705");
+					else
+						path = Path.Combine (path, "v1.0.5000.0");
 					break;
-				case "2.0.0.0":
-					runtime_path = "v2.0.50727";
+				case 2:
+					path = Path.Combine (path, "v2.0.50727");
 					break;
-				case "4.0.0.0":
-					runtime_path = "v4.0.30319";
+				case 4:
+					path = Path.Combine (path, "v4.0.30319");
 					break;
+				default:
+					throw new NotSupportedException ("Version not supported: " + version);
 				}
 			}
 
-			if (runtime_path == null)
-				throw new NotSupportedException ("Version not supported: " + reference.Version);
-
-			path = Path.Combine (path, runtime_path);
-
-			if (File.Exists (Path.Combine (path, "mscorlib.dll")))
-				return AssemblyFactory.GetAssembly (Path.Combine (path, "mscorlib.dll"));
+			var file = Path.Combine (path, "mscorlib.dll");
+			if (File.Exists (file))
+				return GetAssembly (file, parameters);
 
 			return null;
 		}
 
-		public static bool OnMono ()
+		static Collection<string> GetGacPaths ()
 		{
-			return typeof (object).Assembly.GetType ("System.MonoType", false) != null;
+			if (on_mono)
+				return GetDefaultMonoGacPaths ();
+
+			var paths = new Collection<string> (2);
+			var windir = Environment.GetEnvironmentVariable ("WINDIR");
+			if (windir == null)
+				return paths;
+
+			paths.Add (Path.Combine (windir, "assembly"));
+			paths.Add (Path.Combine (windir, Path.Combine ("Microsoft.NET", "assembly")));
+			return paths;
 		}
 
-		string[] MonoGacPaths {
-			get {
-				if (m_monoGacPaths == null)
-					m_monoGacPaths = GetDefaultMonoGacPaths ();
-				return m_monoGacPaths;
+		static Collection<string> GetDefaultMonoGacPaths ()
+		{
+			var paths = new Collection<string> (1);
+			var gac = GetCurrentMonoGac ();
+			if (gac != null)
+				paths.Add (gac);
+
+			var gac_paths_env = Environment.GetEnvironmentVariable ("MONO_GAC_PREFIX");
+			if (string.IsNullOrEmpty (gac_paths_env))
+				return paths;
+
+			var prefixes = gac_paths_env.Split (Path.PathSeparator);
+			foreach (var prefix in prefixes) {
+				if (string.IsNullOrEmpty (prefix))
+					continue;
+
+				var gac_path = Path.Combine (Path.Combine (Path.Combine (prefix, "lib"), "mono"), "gac");
+				if (Directory.Exists (gac_path) && !paths.Contains (gac))
+					paths.Add (gac_path);
 			}
+
+			return paths;
 		}
 
-		static string[] GetDefaultMonoGacPaths ()
+		static string GetCurrentMonoGac ()
 		{
-			ArrayList paths = new ArrayList ();
-			string s = GetCurrentGacPath ();
-			if (s != null)
-				paths.Add (s);
-			string gacPathsEnv = Environment.GetEnvironmentVariable ("MONO_GAC_PREFIX");
-			if (gacPathsEnv != null && gacPathsEnv.Length > 0) {
-				string[] gacPrefixes = gacPathsEnv.Split (Path.PathSeparator);
-				foreach (string gacPrefix in gacPrefixes) {
-					if (gacPrefix != null && gacPrefix.Length > 0) {
-						string gac = Path.Combine (Path.Combine (Path.Combine (gacPrefix, "lib"), "mono"), "gac");
-						if (Directory.Exists (gac) && !paths.Contains (gac))
-							paths.Add (gac);
-					}
-				}
-			}
-			return (string[]) paths.ToArray (typeof (String));
+			return Path.Combine (
+				Directory.GetParent (
+					Path.GetDirectoryName (typeof (object).Module.FullyQualifiedName)).FullName,
+				"gac");
 		}
 
-		AssemblyDefinition GetAssemblyInGac (AssemblyNameReference reference)
+		AssemblyDefinition GetAssemblyInGac (AssemblyNameReference reference, ReaderParameters parameters)
 		{
 			if (reference.PublicKeyToken == null || reference.PublicKeyToken.Length == 0)
 				return null;
 
-			if (OnMono ()) {
-				foreach (string gacpath in MonoGacPaths) {
-					string s = GetAssemblyFile (reference, gacpath);
-					if (File.Exists (s))
-						return AssemblyFactory.GetAssembly (s);
-				}
-			} else {
-				string currentGac = GetCurrentGacPath ();
-				if (currentGac == null)
-					return null;
-
-				string [] gacs = new string [] {"GAC_MSIL", "GAC_32", "GAC"};
-				for (int i = 0; i < gacs.Length; i++) {
-					string gac = Path.Combine (Directory.GetParent (currentGac).FullName, gacs [i]);
-					string asm = GetAssemblyFile (reference, gac);
-					if (Directory.Exists (gac) && File.Exists (asm))
-						return AssemblyFactory.GetAssembly (asm);
-				}
+			if (gac_paths == null)
+				gac_paths = GetGacPaths ();
+
+			if (on_mono)
+				return GetAssemblyInMonoGac (reference, parameters);
+
+			return GetAssemblyInNetGac (reference, parameters);
+		}
+
+		AssemblyDefinition GetAssemblyInMonoGac (AssemblyNameReference reference, ReaderParameters parameters)
+		{
+			for (int i = 0; i < gac_paths.Count; i++) {
+				var gac_path = gac_paths [i];
+				var file = GetAssemblyFile (reference, string.Empty, gac_path);
+				if (File.Exists (file))
+					return GetAssembly (file, parameters);
 			}
 
 			return null;
 		}
 
-		static string GetAssemblyFile (AssemblyNameReference reference, string gac)
+		AssemblyDefinition GetAssemblyInNetGac (AssemblyNameReference reference, ReaderParameters parameters)
 		{
-			StringBuilder sb = new StringBuilder ();
-			sb.Append (reference.Version);
-			sb.Append ("__");
-			for (int i = 0; i < reference.PublicKeyToken.Length; i++)
-				sb.Append (reference.PublicKeyToken [i].ToString ("x2"));
+			var gacs = new [] { "GAC_MSIL", "GAC_32", "GAC" };
+			var prefixes = new [] { string.Empty, "v4.0_" };
+
+			for (int i = 0; i < 2; i++) {
+				for (int j = 0; j < gacs.Length; j++) {
+					var gac = Path.Combine (gac_paths [i], gacs [j]);
+					var file = GetAssemblyFile (reference, prefixes [i], gac);
+					if (Directory.Exists (gac) && File.Exists (file))
+						return GetAssembly (file, parameters);
+				}
+			}
 
-			return Path.Combine (
-				Path.Combine (
-					Path.Combine (gac, reference.Name), sb.ToString ()),
-					string.Concat (reference.Name, ".dll"));
+			return null;
 		}
 
-		static string GetCurrentGacPath ()
+		static string GetAssemblyFile (AssemblyNameReference reference, string prefix, string gac)
 		{
-			string file = typeof (Uri).Module.FullyQualifiedName;
-			if (!File.Exists (file))
-				return null;
+			var gac_folder = new StringBuilder ();
+			gac_folder.Append (prefix);
+			gac_folder.Append (reference.Version);
+			gac_folder.Append ("__");
+			for (int i = 0; i < reference.PublicKeyToken.Length; i++)
+				gac_folder.Append (reference.PublicKeyToken [i].ToString ("x2"));
 
-			return Directory.GetParent (
-				Directory.GetParent (
-					Path.GetDirectoryName (
-						file)
-					).FullName
-				).FullName;
+			return Path.Combine (
+				Path.Combine (
+					Path.Combine (gac, reference.Name), gac_folder.ToString ()),
+				reference.Name + ".dll");
 		}
 #endif
 	}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/BaseReflectionVisitor.cs b/mcs/class/Mono.Cecil/Mono.Cecil/BaseReflectionVisitor.cs
deleted file mode 100644
index 3d3a514..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil/BaseReflectionVisitor.cs
+++ /dev/null
@@ -1,188 +0,0 @@
-//
-// BaseReflectionVisitor.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-	using System.Collections;
-
-	public abstract class BaseReflectionVisitor : IReflectionVisitor {
-
-		public virtual void VisitModuleDefinition (ModuleDefinition module)
-		{
-		}
-
-		public virtual void VisitTypeDefinitionCollection (TypeDefinitionCollection types)
-		{
-		}
-
-		public virtual void VisitTypeDefinition (TypeDefinition type)
-		{
-		}
-
-		public virtual void VisitTypeReferenceCollection (TypeReferenceCollection refs)
-		{
-		}
-
-		public virtual void VisitTypeReference (TypeReference type)
-		{
-		}
-
-		public virtual void VisitMemberReferenceCollection (MemberReferenceCollection members)
-		{
-		}
-
-		public virtual void VisitMemberReference (MemberReference member)
-		{
-		}
-
-		public virtual void VisitInterfaceCollection (InterfaceCollection interfaces)
-		{
-		}
-
-		public virtual void VisitInterface (TypeReference interf)
-		{
-		}
-
-		public virtual void VisitExternTypeCollection (ExternTypeCollection externs)
-		{
-		}
-
-		public virtual void VisitExternType (TypeReference externType)
-		{
-		}
-
-		public virtual void VisitOverrideCollection (OverrideCollection meth)
-		{
-		}
-
-		public virtual void VisitOverride (MethodReference ov)
-		{
-		}
-
-		public virtual void VisitNestedTypeCollection (NestedTypeCollection nestedTypes)
-		{
-		}
-
-		public virtual void VisitNestedType (TypeDefinition nestedType)
-		{
-		}
-
-		public virtual void VisitParameterDefinitionCollection (ParameterDefinitionCollection parameters)
-		{
-		}
-
-		public virtual void VisitParameterDefinition (ParameterDefinition parameter)
-		{
-		}
-
-		public virtual void VisitMethodDefinitionCollection (MethodDefinitionCollection methods)
-		{
-		}
-
-		public virtual void VisitMethodDefinition (MethodDefinition method)
-		{
-		}
-
-		public virtual void VisitConstructorCollection (ConstructorCollection ctors)
-		{
-		}
-
-		public virtual void VisitConstructor (MethodDefinition ctor)
-		{
-		}
-
-		public virtual void VisitPInvokeInfo (PInvokeInfo pinvk)
-		{
-		}
-
-		public virtual void VisitEventDefinitionCollection (EventDefinitionCollection events)
-		{
-		}
-
-		public virtual void VisitEventDefinition (EventDefinition evt)
-		{
-		}
-
-		public virtual void VisitFieldDefinitionCollection (FieldDefinitionCollection fields)
-		{
-		}
-
-		public virtual void VisitFieldDefinition (FieldDefinition field)
-		{
-		}
-
-		public virtual void VisitPropertyDefinitionCollection (PropertyDefinitionCollection properties)
-		{
-		}
-
-		public virtual void VisitPropertyDefinition (PropertyDefinition property)
-		{
-		}
-
-		public virtual void VisitSecurityDeclarationCollection (SecurityDeclarationCollection secDecls)
-		{
-		}
-
-		public virtual void VisitSecurityDeclaration (SecurityDeclaration secDecl)
-		{
-		}
-
-		public virtual void VisitCustomAttributeCollection (CustomAttributeCollection customAttrs)
-		{
-		}
-
-		public virtual void VisitCustomAttribute (CustomAttribute customAttr)
-		{
-		}
-
-		public virtual void VisitGenericParameterCollection (GenericParameterCollection genparams)
-		{
-		}
-
-		public virtual void VisitGenericParameter (GenericParameter genparam)
-		{
-		}
-
-		public virtual void VisitMarshalSpec (MarshalSpec marshalSpec)
-		{
-		}
-
-		public virtual void TerminateModuleDefinition (ModuleDefinition module)
-		{
-		}
-
-		protected void VisitCollection (ICollection coll)
-		{
-			if (coll.Count == 0)
-				return;
-
-			foreach (IReflectionVisitable visitable in coll)
-				visitable.Accept (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/BaseStructureVisitor.cs b/mcs/class/Mono.Cecil/Mono.Cecil/BaseStructureVisitor.cs
deleted file mode 100644
index 1acec7d..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil/BaseStructureVisitor.cs
+++ /dev/null
@@ -1,96 +0,0 @@
-//
-// BaseStructureVisitor.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-	using System.Collections;
-
-	public abstract class BaseStructureVisitor : IReflectionStructureVisitor {
-
-		public virtual void VisitAssemblyDefinition (AssemblyDefinition asm)
-		{
-		}
-
-		public virtual void VisitAssemblyNameDefinition (AssemblyNameDefinition name)
-		{
-		}
-
-		public virtual void VisitAssemblyNameReferenceCollection (AssemblyNameReferenceCollection names)
-		{
-		}
-
-		public virtual void VisitAssemblyNameReference (AssemblyNameReference name)
-		{
-		}
-
-		public virtual void VisitResourceCollection (ResourceCollection resources)
-		{
-		}
-
-		public virtual void VisitEmbeddedResource (EmbeddedResource res)
-		{
-		}
-
-		public virtual void VisitLinkedResource (LinkedResource res)
-		{
-		}
-
-		public virtual void VisitAssemblyLinkedResource (AssemblyLinkedResource res)
-		{
-		}
-
-		public virtual void VisitModuleDefinition (ModuleDefinition module)
-		{
-		}
-
-		public virtual void VisitModuleDefinitionCollection (ModuleDefinitionCollection modules)
-		{
-		}
-
-		public virtual void VisitModuleReference (ModuleReference module)
-		{
-		}
-
-		public virtual void VisitModuleReferenceCollection (ModuleReferenceCollection modules)
-		{
-		}
-
-		public virtual void TerminateAssemblyDefinition (AssemblyDefinition asm)
-		{
-		}
-
-		protected void VisitCollection (ICollection coll)
-		{
-			if (coll.Count == 0)
-				return;
-
-			foreach (IReflectionStructureVisitable visitable in coll)
-				visitable.Accept (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/CallSite.cs b/mcs/class/Mono.Cecil/Mono.Cecil/CallSite.cs
index 7849cb8..4430bd8 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/CallSite.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/CallSite.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 - 2007 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,84 +26,29 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
-
-	using System.Collections;
-	using System.Text;
-
-	using Mono.Cecil.Metadata;
-
-	public sealed class CallSite : IMethodSignature, IAnnotationProvider, IMetadataTokenProvider {
-
-		MethodReference m_function;
-
-		public bool HasThis {
-			get { return m_function.HasThis; }
-			set { m_function.HasThis = value; }
-		}
-
-		public bool ExplicitThis {
-			get { return m_function.ExplicitThis; }
-			set { m_function.ExplicitThis = value; }
-		}
-
-		public MethodCallingConvention CallingConvention {
-			get { return m_function.CallingConvention; }
-			set { m_function.CallingConvention = value; }
-		}
-
-		public bool HasParameters {
-			get { return m_function.HasParameters; }
-		}
+using System;
+using System.Text;
 
-		public ParameterDefinitionCollection Parameters {
-			get { return m_function.Parameters; }
-		}
-
-		public MethodReturnType ReturnType {
-			get { return m_function.ReturnType; }
-			set { m_function.ReturnType = value; }
-		}
-
-		public MetadataToken MetadataToken {
-			get { return m_function.MetadataToken; }
-			set { m_function.MetadataToken = value; }
-		}
+namespace Mono.Cecil {
 
-		IDictionary IAnnotationProvider.Annotations {
-			get { return ((IAnnotationProvider) m_function).Annotations; }
-		}
+	public sealed class CallSite : MethodReference {
 
-		public CallSite (bool hasThis, bool explicitThis, MethodCallingConvention callConv, MethodReturnType retType)
-		{
-			m_function = new MethodReference (string.Empty, hasThis, explicitThis, callConv);
-			m_function.ReturnType = retType;
+		public override string FullName {
+			get {
+				var signature = new StringBuilder ();
+				signature.Append (ReturnType.FullName);
+				this.MethodSignatureFullName (signature);
+				return signature.ToString ();
+			}
 		}
 
-		public int GetSentinel ()
-		{
-			return m_function.GetSentinel ();
+		public override ModuleDefinition Module {
+			get { return ReturnType.Module; }
 		}
 
-		public override string ToString ()
+		public override MethodDefinition Resolve ()
 		{
-			int sentinel = GetSentinel ();
-			StringBuilder sb = new StringBuilder ();
-			sb.Append (m_function.ReturnType.ReturnType.FullName);
-			sb.Append ("(");
-			if (m_function.HasParameters) {
-				for (int i = 0; i < m_function.Parameters.Count; i++) {
-					if (i > 0)
-						sb.Append (",");
-
-					if (i == sentinel)
-						sb.Append ("...,");
-
-					sb.Append (m_function.Parameters [i].ParameterType.FullName);
-				}
-			}
-			sb.Append (")");
-			return sb.ToString ();
+			return null;
 		}
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/CompactFrameworkCompatibility.cs b/mcs/class/Mono.Cecil/Mono.Cecil/CompactFrameworkCompatibility.cs
deleted file mode 100644
index 85fde6e..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil/CompactFrameworkCompatibility.cs
+++ /dev/null
@@ -1,68 +0,0 @@
-//
-// FrameworkCompatibility.cs
-//
-// Author:
-//   Rodrigo B. de Oliveira (rodrigobamboo at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-#if CF_1_0
-namespace System {
-
-	internal class NotImplementedException : System.Exception {
-
-		public NotImplementedException (string message) : base (message)
-		{
-		}
-
-		public NotImplementedException ()
-		{
-		}
-	}
-}
-#endif
-
-#if CF_1_0 || CF_2_0
-namespace System.Security {
-
-	public class SecurityElement 	{
-
-		public SecurityElement (string tag)
-		{
-		}
-
-		public string Text
-		{
-			get { return string.Empty; }
-			set {}
-		}
-
-		public void AddChild (SecurityElement child)
-		{
-		}
-
-		public void AddAttribute (string name, string value)
-		{
-		}
-	}
-}
-#endif
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/Constants.cs b/mcs/class/Mono.Cecil/Mono.Cecil/Constants.cs
deleted file mode 100644
index 32491e6..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil/Constants.cs
+++ /dev/null
@@ -1,65 +0,0 @@
-//
-// Constants.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-	public class Constants {
-
-		Constants ()
-		{
-		}
-
-		public const string Corlib = "mscorlib";
-
-		public const string ModuleType = "<Module>";
-		public const string PrivateImplDetails = "<PrivateImplementationDetails>";
-		public const string Deleted = "_Deleted";
-
-		public const string Void = "System.Void";
-		public const string Object = "System.Object";
-		public const string String = "System.String";
-		public const string Boolean = "System.Boolean";
-		public const string Char = "System.Char";
-		public const string Single = "System.Single";
-		public const string Double = "System.Double";
-		public const string SByte = "System.SByte";
-		public const string Byte = "System.Byte";
-		public const string Int16 = "System.Int16";
-		public const string UInt16 = "System.UInt16";
-		public const string Int32 = "System.Int32";
-		public const string UInt32 = "System.UInt32";
-		public const string Int64 = "System.Int64";
-		public const string UInt64 = "System.UInt64";
-		public const string IntPtr = "System.IntPtr";
-		public const string UIntPtr = "System.UIntPtr";
-		public const string TypedReference = "System.TypedReference";
-		public const string Type = "System.Type";
-		public const string ValueType = "System.ValueType";
-		public const string Enum = "System.Enum";
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/ConstraintCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil/ConstraintCollection.cs
deleted file mode 100644
index 0c0f293..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil/ConstraintCollection.cs
+++ /dev/null
@@ -1,88 +0,0 @@
-//
-// ConstraintCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Wed Sep 27 12:46:54 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-	using System;
-	using System.Collections;
-
-	using Mono.Cecil.Cil;
-
-	public sealed class ConstraintCollection : CollectionBase {
-
-		GenericParameter m_container;
-
-		public TypeReference this [int index] {
-			get { return List [index] as TypeReference; }
-			set { List [index] = value; }
-		}
-
-		public GenericParameter Container {
-			get { return m_container; }
-		}
-
-		public ConstraintCollection (GenericParameter container)
-		{
-			m_container = container;
-		}
-
-		public void Add (TypeReference value)
-		{
-			List.Add (value);
-		}
-
-		public bool Contains (TypeReference value)
-		{
-			return List.Contains (value);
-		}
-
-		public int IndexOf (TypeReference value)
-		{
-			return List.IndexOf (value);
-		}
-
-		public void Insert (int index, TypeReference value)
-		{
-			List.Insert (index, value);
-		}
-
-		public void Remove (TypeReference value)
-		{
-			List.Remove (value);
-		}
-
-		protected override void OnValidate (object o)
-		{
-			if (! (o is TypeReference))
-				throw new ArgumentException ("Must be of type " + typeof (TypeReference).FullName);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/ConstructorCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil/ConstructorCollection.cs
deleted file mode 100644
index a0ebebc..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil/ConstructorCollection.cs
+++ /dev/null
@@ -1,182 +0,0 @@
-//
-// ConstructorCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Fri Mar 30 18:43:56 +0200 2007
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-	using System;
-	using System.Collections;
-
-	using Mono.Cecil.Cil;
-
-	public sealed class ConstructorCollection : CollectionBase, IReflectionVisitable {
-
-		TypeDefinition m_container;
-
-		public MethodDefinition this [int index] {
-			get { return List [index] as MethodDefinition; }
-			set { List [index] = value; }
-		}
-
-		public TypeDefinition Container {
-			get { return m_container; }
-		}
-
-		public ConstructorCollection (TypeDefinition container)
-		{
-			m_container = container;
-		}
-
-		public void Add (MethodDefinition value)
-		{
-			Attach (value);
-
-			List.Add (value);
-		}
-
-
-		public new void Clear ()
-		{
-			foreach (MethodDefinition item in this)
-				Detach (item);
-
-			base.Clear ();
-		}
-
-		public bool Contains (MethodDefinition value)
-		{
-			return List.Contains (value);
-		}
-
-		public int IndexOf (MethodDefinition value)
-		{
-			return List.IndexOf (value);
-		}
-
-		public void Insert (int index, MethodDefinition value)
-		{
-			Attach (value);
-
-			List.Insert (index, value);
-		}
-
-		public void Remove (MethodDefinition value)
-		{
-			List.Remove (value);
-
-			Detach (value);
-		}
-
-
-		public new void RemoveAt (int index)
-		{
-			MethodDefinition item = this [index];
-			Remove (item);
-		}
-
-		protected override void OnValidate (object o)
-		{
-			if (! (o is MethodDefinition))
-				throw new ArgumentException ("Must be of type " + typeof (MethodDefinition).FullName);
-		}
-
-		internal MethodDefinition GetConstructorInternal (bool isStatic, IList parameters)
-		{
-			if (parameters == null)
-#if CF_2_0 || CF_1_0
-				parameters = new Type[0];
-#else
-				parameters = Type.EmptyTypes;
-#endif
-
-			foreach (MethodDefinition ctor in this) {
-				if (ctor.IsStatic != isStatic || ctor.Parameters.Count != parameters.Count)
-					continue;
-
-				bool match = true;
-				for (int i = 0; i < parameters.Count; i++) {
-					string pname;
-					object param = parameters [i];
-					if (param is Type)
-						pname = ReflectionHelper.GetTypeSignature (param as Type);
-					else if (param is TypeReference)
-						pname = (param as TypeReference).FullName;
-					else if (param is ParameterDefinition)
-						pname = (param as ParameterDefinition).ParameterType.FullName;
-					else
-						throw new NotSupportedException ();
-
-					if (ctor.Parameters [i].ParameterType.FullName != pname) {
-						match = false;
-						break;
-					}
-				}
-
-				if (match)
-					return ctor;
-			}
-
-			return null;
-		}
-
-		public MethodDefinition GetConstructor (bool isStatic, Type [] parameters)
-		{
-			return GetConstructorInternal (isStatic, parameters);
-		}
-
-		public MethodDefinition GetConstructor (bool isStatic, TypeReference [] parameters)
-		{
-			return GetConstructorInternal (isStatic, parameters);
-		}
-
-		public MethodDefinition GetConstructor (bool isStatic, ParameterDefinitionCollection parameters)
-		{
-			return GetConstructorInternal (isStatic, parameters);
-		}
-
-		void Attach (MemberReference member)
-		{
-			if (member.DeclaringType != null)
-				throw new ReflectionException ("Member already attached, clone it instead");
-
-			member.DeclaringType = m_container;
-		}
-
-		void Detach (MemberReference member)
-		{
-			member.DeclaringType = null;
-		}
-
-		public void Accept (IReflectionVisitor visitor)
-		{
-			visitor.VisitConstructorCollection (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/CustomAttribute.cs b/mcs/class/Mono.Cecil/Mono.Cecil/CustomAttribute.cs
index e72957c..40b32eb 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/CustomAttribute.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/CustomAttribute.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,174 +26,207 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System;
+
+using Mono.Collections.Generic;
+
 namespace Mono.Cecil {
 
-	using System.Collections;
+	public struct CustomAttributeArgument {
+
+		readonly TypeReference type;
+		readonly object value;
+
+		public TypeReference Type {
+			get { return type; }
+		}
+
+		public object Value {
+			get { return value; }
+		}
+
+		public CustomAttributeArgument (TypeReference type, object value)
+		{
+			Mixin.CheckType (type);
+			this.type = type;
+			this.value = value;
+		}
+	}
+
+	public struct CustomAttributeNamedArgument {
 
-	public sealed class CustomAttribute : IRequireResolving, IAnnotationProvider, IReflectionVisitable {
+		readonly string name;
+		readonly CustomAttributeArgument argument;
+
+		public string Name {
+			get { return name; }
+		}
+
+		public CustomAttributeArgument Argument {
+			get { return argument; }
+		}
+
+		public CustomAttributeNamedArgument (string name, CustomAttributeArgument argument)
+		{
+			Mixin.CheckName (name);
+			this.name = name;
+			this.argument = argument;
+		}
+	}
+
+	public interface ICustomAttribute {
+
+		TypeReference AttributeType { get; }
+
+		bool HasFields { get; }
+		bool HasProperties { get; }
+		Collection<CustomAttributeNamedArgument> Fields { get; }
+		Collection<CustomAttributeNamedArgument> Properties { get; }
+	}
 
-		MethodReference m_ctor;
-		IList m_parameters;
-		IDictionary m_fields;
-		IDictionary m_properties;
-		IDictionary m_fieldTypes;
-		IDictionary m_propTypes;
-		IDictionary m_annotations;
+	public sealed class CustomAttribute : ICustomAttribute {
 
-		bool m_resolved;
-		byte [] m_blob;
+		readonly internal uint signature;
+		internal bool resolved;
+		MethodReference constructor;
+		byte [] blob;
+		internal Collection<CustomAttributeArgument> arguments;
+		internal Collection<CustomAttributeNamedArgument> fields;
+		internal Collection<CustomAttributeNamedArgument> properties;
 
 		public MethodReference Constructor {
-			get { return m_ctor; }
-			set { m_ctor = value; }
+			get { return constructor; }
+			set { constructor = value; }
 		}
 
-		public IList ConstructorParameters {
-			get {
-				if (m_parameters == null)
-					m_parameters = new ArrayList ();
-				return m_parameters;
-			}
+		public TypeReference AttributeType {
+			get { return constructor.DeclaringType; }
+		}
+
+		public bool IsResolved {
+			get { return resolved; }
 		}
 
-		public IDictionary Fields {
+		public bool HasConstructorArguments {
 			get {
-				if (m_fields == null)
-					m_fields = new Hashtable ();
+				Resolve ();
 
-				return m_fields;
+				return !arguments.IsNullOrEmpty ();
 			}
 		}
 
-		public IDictionary Properties {
+		public Collection<CustomAttributeArgument> ConstructorArguments {
 			get {
-				if (m_properties == null)
-					m_properties = new Hashtable ();
+				Resolve ();
 
-				return m_properties;
+				return arguments ?? (arguments = new Collection<CustomAttributeArgument> ());
 			}
 		}
 
-		internal IDictionary FieldTypes {
+		public bool HasFields {
 			get {
-				if (m_fieldTypes == null)
-					m_fieldTypes = new Hashtable ();
+				Resolve ();
 
-				return m_fieldTypes;
+				return !fields.IsNullOrEmpty ();
 			}
 		}
 
-		internal IDictionary PropertyTypes {
+		public Collection<CustomAttributeNamedArgument> Fields {
 			get {
-				if (m_propTypes == null)
-					m_propTypes = new Hashtable ();
+				Resolve ();
 
-				return m_propTypes;
+				return fields ?? (fields = new Collection<CustomAttributeNamedArgument> ());
 			}
 		}
 
-		public bool Resolved {
-			get { return m_resolved; }
-			set { m_resolved = value; }
-		}
+		public bool HasProperties {
+			get {
+				Resolve ();
 
-		public byte [] Blob {
-			get { return m_blob; }
-			set { m_blob = value; }
+				return !properties.IsNullOrEmpty ();
+			}
 		}
 
-		IDictionary IAnnotationProvider.Annotations {
+		public Collection<CustomAttributeNamedArgument> Properties {
 			get {
-				if (m_annotations == null)
-					m_annotations = new Hashtable ();
-				return m_annotations;
-			}
-		}
+				Resolve ();
 
-		public CustomAttribute (MethodReference ctor)
-		{
-			m_ctor = ctor;
-			m_resolved = true;
+				return properties ?? (properties = new Collection<CustomAttributeNamedArgument> ());
+			}
 		}
 
-		public CustomAttribute (MethodReference ctor, byte [] blob)
-		{
-			m_ctor = ctor;
-			m_blob = blob;
+		internal bool HasImage {
+			get { return constructor != null && constructor.HasImage; }
 		}
 
-		public TypeReference GetFieldType (string fieldName)
-		{
-			return (TypeReference) FieldTypes [fieldName];
+		internal ModuleDefinition Module {
+			get { return constructor.Module; }
 		}
 
-		public TypeReference GetPropertyType (string propertyName)
+		internal CustomAttribute (uint signature, MethodReference constructor)
 		{
-			return (TypeReference) PropertyTypes [propertyName];
+			this.signature = signature;
+			this.constructor = constructor;
+			this.resolved = false;
 		}
 
-		public void SetFieldType (string fieldName, TypeReference type)
+		public CustomAttribute (MethodReference constructor)
 		{
-			FieldTypes [fieldName] = type;
+			this.constructor = constructor;
+			this.resolved = true;
 		}
 
-		public void SetPropertyType (string propertyName, TypeReference type)
+		public CustomAttribute (MethodReference constructor, byte [] blob)
 		{
-			PropertyTypes [propertyName] = type;
+			this.constructor = constructor;
+			this.resolved = false;
+			this.blob = blob;
 		}
 
-		public CustomAttribute Clone ()
+		public byte [] GetBlob ()
 		{
-			return Clone (this, new ImportContext (NullReferenceImporter.Instance));
-		}
+			if (blob != null)
+				return blob;
 
-		static void Clone (IDictionary original, IDictionary target)
-		{
-			target.Clear ();
-			foreach (DictionaryEntry entry in original)
-				target.Add (entry.Key, entry.Value);
-		}
+			if (!HasImage || signature == 0)
+				throw new NotSupportedException ();
 
-		internal static CustomAttribute Clone (CustomAttribute custattr, ImportContext context)
-		{
-			CustomAttribute ca = new CustomAttribute (context.Import (custattr.Constructor));
-			custattr.CopyTo (ca);
-			return ca;
+			return blob = Module.Read (this, (attribute, reader) => reader.ReadCustomAttributeBlob (attribute.signature));
 		}
 
-		void CopyTo (CustomAttribute target)
+		void Resolve ()
 		{
-			target.Resolved = Resolved;
-			if (!Resolved) {
-				target.Blob = Blob;
+			if (resolved || !HasImage)
 				return;
-			}
 
-			foreach (object o in ConstructorParameters)
-				target.ConstructorParameters.Add (o);
-			Clone (Fields, target.Fields);
-			Clone (FieldTypes, target.FieldTypes);
-			Clone (Properties, target.Properties);
-			Clone (PropertyTypes, target.PropertyTypes);
+			try {
+				Module.Read (this, (attribute, reader) => {
+					reader.ReadCustomAttributeSignature (attribute);
+					return this;
+				});
+
+				resolved = true;
+			} catch (ResolutionException) {
+				if (arguments != null)
+					arguments.Clear ();
+				if (fields != null)
+					fields.Clear ();
+				if (properties != null)
+					properties.Clear ();
+
+				resolved = false;
+			}
 		}
+	}
 
-		public bool Resolve ()
-		{
-			if (Resolved)
-				return true;
-
-			ReflectionReader r = m_ctor.DeclaringType.Module.Controller.Reader;
-			CustomAttribute newCa = r.GetCustomAttribute (m_ctor, Blob, true);
-			if (!newCa.Resolved)
-				return false;
-
-			newCa.CopyTo (this);
-			return true;
-		}
+	static partial class Mixin {
 
-		public void Accept (IReflectionVisitor visitor)
+		public static void CheckName (string name)
 		{
-			visitor.VisitCustomAttribute (this);
+			if (name == null)
+				throw new ArgumentNullException ("name");
+			if (name.Length == 0)
+				throw new ArgumentException ("Empty name");
 		}
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/CustomAttributeCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil/CustomAttributeCollection.cs
deleted file mode 100644
index 023b35a..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil/CustomAttributeCollection.cs
+++ /dev/null
@@ -1,93 +0,0 @@
-//
-// CustomAttributeCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Wed Sep 27 12:46:53 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-	using System;
-	using System.Collections;
-
-	using Mono.Cecil.Cil;
-
-	public sealed class CustomAttributeCollection : CollectionBase, IReflectionVisitable {
-
-		ICustomAttributeProvider m_container;
-
-		public CustomAttribute this [int index] {
-			get { return List [index] as CustomAttribute; }
-			set { List [index] = value; }
-		}
-
-		public ICustomAttributeProvider Container {
-			get { return m_container; }
-		}
-
-		public CustomAttributeCollection (ICustomAttributeProvider container)
-		{
-			m_container = container;
-		}
-
-		public void Add (CustomAttribute value)
-		{
-			List.Add (value);
-		}
-
-		public bool Contains (CustomAttribute value)
-		{
-			return List.Contains (value);
-		}
-
-		public int IndexOf (CustomAttribute value)
-		{
-			return List.IndexOf (value);
-		}
-
-		public void Insert (int index, CustomAttribute value)
-		{
-			List.Insert (index, value);
-		}
-
-		public void Remove (CustomAttribute value)
-		{
-			List.Remove (value);
-		}
-
-		protected override void OnValidate (object o)
-		{
-			if (! (o is CustomAttribute))
-				throw new ArgumentException ("Must be of type " + typeof (CustomAttribute).FullName);
-		}
-
-		public void Accept (IReflectionVisitor visitor)
-		{
-			visitor.VisitCustomAttributeCollection (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/DefaultAssemblyResolver.cs b/mcs/class/Mono.Cecil/Mono.Cecil/DefaultAssemblyResolver.cs
index 95b8789..cac7974 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/DefaultAssemblyResolver.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/DefaultAssemblyResolver.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,37 +26,50 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System;
+using System.Collections.Generic;
+
 namespace Mono.Cecil {
 
-	using System.Collections;
+	public static class GlobalAssemblyResolver {
+
+		public static readonly IAssemblyResolver Instance = new DefaultAssemblyResolver ();
+	}
 
 	public class DefaultAssemblyResolver : BaseAssemblyResolver {
 
-		IDictionary m_cache;
+		readonly IDictionary<string, AssemblyDefinition> cache;
 
 		public DefaultAssemblyResolver ()
 		{
-			m_cache = new Hashtable ();
+			cache = new Dictionary<string, AssemblyDefinition> ();
 		}
 
 		public override AssemblyDefinition Resolve (AssemblyNameReference name)
 		{
-			AssemblyDefinition asm = (AssemblyDefinition) m_cache [name.FullName];
-			if (asm == null) {
-				asm = base.Resolve (name);
-				m_cache [name.FullName] = asm;
-			}
+			if (name == null)
+				throw new ArgumentNullException ("name");
 
-			return asm;
+			AssemblyDefinition assembly;
+			if (cache.TryGetValue (name.FullName, out assembly))
+				return assembly;
+
+			assembly = base.Resolve (name);
+			cache [name.FullName] = assembly;
+
+			return assembly;
 		}
 
 		protected void RegisterAssembly (AssemblyDefinition assembly)
 		{
-			string key = assembly.Name.FullName;
-			if (m_cache.Contains (key))
+			if (assembly == null)
+				throw new ArgumentNullException ("assembly");
+
+			var name = assembly.Name.FullName;
+			if (cache.ContainsKey (name))
 				return;
 
-			m_cache [key] = assembly;
+			cache [name] = assembly;
 		}
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/DefaultImporter.cs b/mcs/class/Mono.Cecil/Mono.Cecil/DefaultImporter.cs
deleted file mode 100644
index a4c2957..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil/DefaultImporter.cs
+++ /dev/null
@@ -1,266 +0,0 @@
-//
-// DefaultReferenceImporter.cs
-//
-// Author:
-//   Jb Evain (jbevain at novell.com)
-//
-// (C) 2007 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-	using System;
-
-	public class DefaultImporter : IImporter {
-
-		ModuleDefinition m_module;
-
-		public ModuleDefinition Module {
-			get { return m_module; }
-		}
-
-		public DefaultImporter (ModuleDefinition module)
-		{
-			m_module = module;
-		}
-
-		public AssemblyNameReference ImportAssembly (AssemblyNameReference asm)
-		{
-			AssemblyNameReference asmRef = GetAssemblyNameReference (asm);
-			if (asmRef != null)
-				return asmRef;
-
-			asmRef = new AssemblyNameReference (
-				asm.Name, asm.Culture, asm.Version);
-			asmRef.PublicKeyToken = asm.PublicKeyToken;
-			asmRef.HashAlgorithm = asm.HashAlgorithm;
-			m_module.AssemblyReferences.Add (asmRef);
-			return asmRef;
-		}
-
-		AssemblyNameReference GetAssemblyNameReference (AssemblyNameReference asm)
-		{
-			foreach (AssemblyNameReference reference in m_module.AssemblyReferences)
-				if (reference.FullName == asm.FullName)
-					return reference;
-
-			return null;
-		}
-
-		TypeSpecification GetTypeSpec (TypeSpecification original, ImportContext context)
-		{
-			TypeSpecification typeSpec;
-
-			TypeReference elementType = ImportTypeReference (original.ElementType, context);
-			if (original is PointerType) {
-				typeSpec = new PointerType (elementType);
-			} else if (original is ArrayType) { // deal with complex arrays
-				typeSpec = new ArrayType (elementType);
-			} else if (original is ReferenceType) {
-				typeSpec = new ReferenceType (elementType);
-			} else if (original is GenericInstanceType) {
-				GenericInstanceType git = original as GenericInstanceType;
-				GenericInstanceType genElemType = new GenericInstanceType (elementType);
-
-				context.GenericContext.CheckProvider (genElemType.GetOriginalType (), git.GenericArguments.Count);
-				foreach (TypeReference arg in git.GenericArguments)
-					genElemType.GenericArguments.Add (ImportTypeReference (arg, context));
-
-				typeSpec = genElemType;
-			} else if (original is ModifierOptional) {
-				TypeReference mt = (original as ModifierOptional).ModifierType;
-				typeSpec = new ModifierOptional (elementType, ImportTypeReference (mt, context));
-			} else if (original is ModifierRequired) {
-				TypeReference mt = (original as ModifierRequired).ModifierType;
-				typeSpec = new ModifierRequired (elementType, ImportTypeReference (mt, context));
-			} else if (original is SentinelType) {
-				typeSpec = new SentinelType (elementType);
-			} else if (original is FunctionPointerType) {
-				FunctionPointerType ori = original as FunctionPointerType;
-
-				FunctionPointerType fnptr = new FunctionPointerType (
-					ori.HasThis,
-					ori.ExplicitThis,
-					ori.CallingConvention,
-					new MethodReturnType (ImportTypeReference (ori.ReturnType.ReturnType, context)));
-
-				foreach (ParameterDefinition parameter in ori.Parameters)
-					fnptr.Parameters.Add (new ParameterDefinition (ImportTypeReference (parameter.ParameterType, context)));
-
-				typeSpec = fnptr;
-			} else
-				throw new ReflectionException ("Unknown element type: {0}", original.GetType ().Name);
-
-			return typeSpec;
-		}
-
-		static GenericParameter GetGenericParameter (GenericParameter gp, ImportContext context)
-		{
-			GenericParameter p;
-			if (gp.Owner is TypeReference)
-				p = context.GenericContext.Type.GenericParameters [gp.Position];
-			else if (gp.Owner is MethodReference)
-				p = context.GenericContext.Method.GenericParameters [gp.Position];
-			else
-				throw new NotSupportedException ();
-
-			return p;
-		}
-
-		TypeReference AdjustReference (TypeReference type, TypeReference reference)
-		{
-			if (type.IsValueType && !reference.IsValueType)
-				reference.IsValueType = true;
-
-			if (type.HasGenericParameters) {
-				for (int i = reference.GenericParameters.Count; i < type.GenericParameters.Count; i++)
-					reference.GenericParameters.Add (new GenericParameter (i, reference));
-			}
-
-			return reference;
-		}
-
-		public virtual TypeReference ImportTypeReference (TypeReference t, ImportContext context)
-		{
-			if (t.Module == m_module)
-				return t;
-
-			if (t is TypeSpecification)
-				return GetTypeSpec (t as TypeSpecification, context);
-
-			if (t is GenericParameter)
-				return GetGenericParameter (t as GenericParameter, context);
-
-			TypeReference type = m_module.TypeReferences [t.FullName];
-			if (type != null)
-				return AdjustReference (t, type);
-
-			AssemblyNameReference asm;
-			if (t.Scope is AssemblyNameReference)
-				asm = ImportAssembly ((AssemblyNameReference) t.Scope);
-			else if (t.Scope is ModuleDefinition)
-				asm = ImportAssembly (((ModuleDefinition) t.Scope).Assembly.Name);
-			else
-				throw new NotImplementedException ();
-
-			if (t.DeclaringType != null) {
-				type = new TypeReference (t.Name, string.Empty, asm, t.IsValueType);
-				type.DeclaringType = ImportTypeReference (t.DeclaringType, context);
-			} else
-				type = new TypeReference (t.Name, t.Namespace, asm, t.IsValueType);
-
-			TypeReference contextType = context.GenericContext.Type;
-
-			context.GenericContext.Type = type;
-
-			GenericParameter.CloneInto (t, type, context);
-
-			context.GenericContext.Type = contextType;
-
-			m_module.TypeReferences.Add (type);
-			return type;
-		}
-
-		public virtual FieldReference ImportFieldReference (FieldReference fr, ImportContext context)
-		{
-			if (fr.DeclaringType.Module == m_module)
-				return fr;
-
-			FieldReference field = (FieldReference) GetMemberReference (fr);
-			if (field != null)
-				return field;
-
-			field = new FieldReference (
-				fr.Name,
-				ImportTypeReference (fr.DeclaringType, context),
-				ImportTypeReference (fr.FieldType, context));
-
-			m_module.MemberReferences.Add (field);
-			return field;
-		}
-
-		MethodReference GetMethodSpec (MethodReference meth, ImportContext context)
-		{
-			if (!(meth is GenericInstanceMethod))
-				return null;
-
-			GenericInstanceMethod gim = meth as GenericInstanceMethod;
-			GenericInstanceMethod ngim = new GenericInstanceMethod (
-				ImportMethodReference (gim.ElementMethod, context));
-
-			context.GenericContext.CheckProvider (ngim.GetOriginalMethod (), gim.GenericArguments.Count);
-			foreach (TypeReference arg in gim.GenericArguments)
-				ngim.GenericArguments.Add (ImportTypeReference (arg, context));
-
-			return ngim;
-		}
-
-		public virtual MethodReference ImportMethodReference (MethodReference mr, ImportContext context)
-		{
-			if (mr.DeclaringType.Module == m_module)
-				return mr;
-
-			if (mr is MethodSpecification)
-				return GetMethodSpec (mr, context);
-
-			MethodReference meth = (MethodReference) GetMemberReference (mr);
-			if (meth != null)
-				return meth;
-
-			meth = new MethodReference (
-				mr.Name,
-				mr.HasThis,
-				mr.ExplicitThis,
-				mr.CallingConvention);
-			meth.DeclaringType = ImportTypeReference (mr.DeclaringType, context);
-
-			TypeReference contextType = context.GenericContext.Type;
-			MethodReference contextMethod = context.GenericContext.Method;
-
-			context.GenericContext.Method = meth;
-			context.GenericContext.Type = meth.DeclaringType.GetOriginalType();
-
-			GenericParameter.CloneInto (mr, meth, context);
-
-			meth.ReturnType.ReturnType = ImportTypeReference (mr.ReturnType.ReturnType, context);
-
-			foreach (ParameterDefinition param in mr.Parameters)
-				meth.Parameters.Add (new ParameterDefinition (
-					ImportTypeReference (param.ParameterType, context)));
-
-			context.GenericContext.Type = contextType;
-			context.GenericContext.Method = contextMethod;
-
-			m_module.MemberReferences.Add (meth);
-			return meth;
-		}
-
-		MemberReference GetMemberReference (MemberReference member)
-		{
-			foreach (MemberReference reference in m_module.MemberReferences)
-				if (reference.ToString () == member.ToString ())
-					return reference;
-
-			return null;
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/EmbeddedResource.cs b/mcs/class/Mono.Cecil/Mono.Cecil/EmbeddedResource.cs
index 7bd67be..bb9f1f9 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/EmbeddedResource.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/EmbeddedResource.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,31 +26,80 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System;
+using System.IO;
+
 namespace Mono.Cecil {
 
 	public sealed class EmbeddedResource : Resource {
 
-		byte [] m_data;
+		readonly MetadataReader reader;
+
+		uint? offset;
+		byte [] data;
+		Stream stream;
 
-		public byte [] Data {
-			get { return m_data; }
-			set { m_data = value; }
+		public override ResourceType ResourceType {
+			get { return ResourceType.Embedded; }
+		}
+
+		public EmbeddedResource (string name, ManifestResourceAttributes attributes, byte [] data) :
+			base (name, attributes)
+		{
+			this.data = data;
 		}
 
-		public EmbeddedResource (string name, ManifestResourceAttributes flags) :
-			base (name, flags)
+		public EmbeddedResource (string name, ManifestResourceAttributes attributes, Stream stream) :
+			base (name, attributes)
 		{
+			this.stream = stream;
 		}
 
-		public EmbeddedResource (string name, ManifestResourceAttributes flags, byte [] data) :
-			base (name, flags)
+		internal EmbeddedResource (string name, ManifestResourceAttributes attributes, uint offset, MetadataReader reader)
+			: base (name, attributes)
 		{
-			m_data = data;
+			this.offset = offset;
+			this.reader = reader;
 		}
 
-		public override void Accept (IReflectionStructureVisitor visitor)
+		public Stream GetResourceStream ()
 		{
-			visitor.VisitEmbeddedResource (this);
+			if (stream != null)
+				return stream;
+
+			if (data != null)
+				return new MemoryStream (data);
+
+			if (offset.HasValue)
+				return reader.GetManagedResourceStream (offset.Value);
+
+			throw new InvalidOperationException ();
+		}
+
+		public byte [] GetResourceData ()
+		{
+			if (stream != null)
+				return ReadStream (stream);
+
+			if (data != null)
+				return data;
+
+			if (offset.HasValue)
+				return reader.GetManagedResourceStream (offset.Value).ToArray ();
+
+			throw new InvalidOperationException ();
+		}
+
+		static byte [] ReadStream (Stream stream)
+		{
+			var length = (int) stream.Length;
+			var data = new byte [length];
+			int offset = 0, read;
+
+			while ((read = stream.Read (data, offset, length - offset)) > 0)
+				offset += read;
+
+			return data;
 		}
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/EventAttributes.cs b/mcs/class/Mono.Cecil/Mono.Cecil/EventAttributes.cs
index 2db3a3c..b5b097d 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/EventAttributes.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/EventAttributes.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,12 +26,13 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
+using System;
 
-	using System;
+namespace Mono.Cecil {
 
 	[Flags]
 	public enum EventAttributes : ushort {
+		None			= 0x0000,
 		SpecialName		= 0x0200,	// Event is special
 		RTSpecialName	= 0x0400	 // CLI provides 'special' behavior, depending upon the name of the event
 	}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/EventDefinition.cs b/mcs/class/Mono.Cecil/Mono.Cecil/EventDefinition.cs
index 9e837bd..7a80aa0 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/EventDefinition.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/EventDefinition.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,148 +26,138 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using Mono.Collections.Generic;
+
 namespace Mono.Cecil {
 
-	public sealed class EventDefinition : EventReference, IMemberDefinition, ICustomAttributeProvider {
+	public sealed class EventDefinition : EventReference, IMemberDefinition {
 
-		EventAttributes m_attributes;
+		ushort attributes;
 
-		CustomAttributeCollection m_customAttrs;
+		Collection<CustomAttribute> custom_attributes;
 
-		MethodDefinition m_addMeth;
-		MethodDefinition m_invMeth;
-		MethodDefinition m_remMeth;
+		internal MethodDefinition add_method;
+		internal MethodDefinition invoke_method;
+		internal MethodDefinition remove_method;
+		internal Collection<MethodDefinition> other_methods;
 
 		public EventAttributes Attributes {
-			get { return m_attributes; }
-			set { m_attributes = value; }
+			get { return (EventAttributes) attributes; }
+			set { attributes = (ushort) value; }
 		}
 
 		public MethodDefinition AddMethod {
-			get { return m_addMeth; }
-			set { m_addMeth = value; }
+			get {
+				if (add_method != null)
+					return add_method;
+
+				InitializeMethods ();
+				return add_method;
+			}
+			set { add_method = value; }
 		}
 
 		public MethodDefinition InvokeMethod {
-			get { return m_invMeth; }
-			set { m_invMeth = value; }
+			get {
+				if (invoke_method != null)
+					return invoke_method;
+
+				InitializeMethods ();
+				return invoke_method;
+			}
+			set { invoke_method = value; }
 		}
 
 		public MethodDefinition RemoveMethod {
-			get { return m_remMeth; }
-			set { m_remMeth = value; }
-		}
+			get {
+				if (remove_method != null)
+					return remove_method;
 
-		public bool HasCustomAttributes {
-			get { return (m_customAttrs == null) ? false : (m_customAttrs.Count > 0); }
+				InitializeMethods ();
+				return remove_method;
+			}
+			set { remove_method = value; }
 		}
 
-		public CustomAttributeCollection CustomAttributes {
+		public bool HasOtherMethods {
 			get {
-				if (m_customAttrs == null)
-					m_customAttrs = new CustomAttributeCollection (this);
+				if (other_methods != null)
+					return other_methods.Count > 0;
 
-				return m_customAttrs;
+				InitializeMethods ();
+				return !other_methods.IsNullOrEmpty ();
 			}
 		}
 
-		#region EventAttributes
+		public Collection<MethodDefinition> OtherMethods {
+			get {
+				if (other_methods != null)
+					return other_methods;
 
-		public bool IsSpecialName {
-			get { return (m_attributes & EventAttributes.SpecialName) != 0; }
-			set {
-				if (value)
-					m_attributes |= EventAttributes.SpecialName;
-				else
-					m_attributes &= ~EventAttributes.SpecialName;
-			}
-		}
+				InitializeMethods ();
 
-		public bool IsRuntimeSpecialName {
-			get { return (m_attributes & EventAttributes.RTSpecialName) != 0; }
-			set {
-				if (value)
-					m_attributes |= EventAttributes.RTSpecialName;
-				else
-					m_attributes &= ~EventAttributes.RTSpecialName;
+				if (other_methods != null)
+					return other_methods;
+
+				return other_methods = new Collection<MethodDefinition> ();
 			}
 		}
 
-		#endregion
+		public bool HasCustomAttributes {
+			get {
+				if (custom_attributes != null)
+					return custom_attributes.Count > 0;
 
-		public new TypeDefinition DeclaringType {
-			get { return (TypeDefinition) base.DeclaringType; }
-			set { base.DeclaringType = value; }
+				return this.GetHasCustomAttributes (Module);
+			}
 		}
 
-		public EventDefinition (string name, TypeReference eventType,
-			EventAttributes attrs) : base (name, eventType)
-		{
-			m_attributes = attrs;
+		public Collection<CustomAttribute> CustomAttributes {
+			get { return custom_attributes ?? (custom_attributes = this.GetCustomAttributes (Module)); }
 		}
 
-		public override EventDefinition Resolve ()
-		{
-			return this;
-		}
+		#region EventAttributes
 
-		public static MethodDefinition CreateAddMethod (EventDefinition evt)
-		{
-			MethodDefinition add = new MethodDefinition (
-				string.Concat ("add_", evt.Name), (MethodAttributes) 0, evt.EventType);
-			evt.AddMethod = add;
-			return add;
+		public bool IsSpecialName {
+			get { return attributes.GetAttributes ((ushort) EventAttributes.SpecialName); }
+			set { attributes = attributes.SetAttributes ((ushort) EventAttributes.SpecialName, value); }
 		}
 
-		public static MethodDefinition CreateRemoveMethod (EventDefinition evt)
-		{
-			MethodDefinition remove = new MethodDefinition (
-				string.Concat ("remove_", evt.Name), (MethodAttributes) 0, evt.EventType);
-			evt.RemoveMethod = remove;
-			return remove;
+		public bool IsRuntimeSpecialName {
+			get { return attributes.GetAttributes ((ushort) FieldAttributes.RTSpecialName); }
+			set { attributes = attributes.SetAttributes ((ushort) FieldAttributes.RTSpecialName, value); }
 		}
 
-		public static MethodDefinition CreateInvokeMethod (EventDefinition evt)
-		{
-			MethodDefinition raise = new MethodDefinition (
-				string.Concat ("raise_", evt.Name), (MethodAttributes) 0, evt.EventType);
-			evt.InvokeMethod = raise;
-			return raise;
+		#endregion
+
+		public new TypeDefinition DeclaringType {
+			get { return (TypeDefinition) base.DeclaringType; }
+			set { base.DeclaringType = value; }
 		}
 
-		public EventDefinition Clone ()
-		{
-			return Clone (this, new ImportContext (NullReferenceImporter.Instance, this.DeclaringType));
+		public override bool IsDefinition {
+			get { return true; }
 		}
 
-		internal static EventDefinition Clone (EventDefinition evt, ImportContext context)
+		public EventDefinition (string name, EventAttributes attributes, TypeReference eventType)
+			: base (name, eventType)
 		{
-			EventDefinition ne = new EventDefinition (
-				evt.Name,
-				context.Import (evt.EventType),
-				evt.Attributes);
-
-			if (context.GenericContext.Type is TypeDefinition) {
-				TypeDefinition type = context.GenericContext.Type as TypeDefinition;
-				if (evt.AddMethod != null)
-					ne.AddMethod = type.Methods.GetMethod (evt.AddMethod.Name) [0];
-				if (evt.InvokeMethod != null)
-					ne.InvokeMethod = type.Methods.GetMethod (evt.InvokeMethod.Name) [0];
-				if (evt.RemoveMethod != null)
-					ne.RemoveMethod = type.Methods.GetMethod (evt.RemoveMethod.Name) [0];
-			}
-
-			foreach (CustomAttribute ca in evt.CustomAttributes)
-				ne.CustomAttributes.Add (CustomAttribute.Clone (ca, context));
-
-			return ne;
+			this.attributes = (ushort) attributes;
+			this.token = new MetadataToken (TokenType.Event);
 		}
 
-		public override void Accept (IReflectionVisitor visitor)
+		void InitializeMethods ()
 		{
-			visitor.VisitEventDefinition (this);
+			if (add_method != null
+				|| invoke_method != null
+				|| remove_method != null)
+				return;
+
+			var module = this.Module;
+			if (!module.HasImage ())
+				return;
 
-			this.CustomAttributes.Accept (visitor);
+			module.Read (this, (@event, reader) => reader.ReadMethods (@event));
 		}
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/EventDefinitionCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil/EventDefinitionCollection.cs
deleted file mode 100644
index f646dfb..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil/EventDefinitionCollection.cs
+++ /dev/null
@@ -1,137 +0,0 @@
-//
-// EventDefinitionCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Fri Mar 30 18:43:57 +0200 2007
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-	using System;
-	using System.Collections;
-
-	using Mono.Cecil.Cil;
-
-	public sealed class EventDefinitionCollection : CollectionBase, IReflectionVisitable {
-
-		TypeDefinition m_container;
-
-		public EventDefinition this [int index] {
-			get { return List [index] as EventDefinition; }
-			set { List [index] = value; }
-		}
-
-		public TypeDefinition Container {
-			get { return m_container; }
-		}
-
-		public EventDefinitionCollection (TypeDefinition container)
-		{
-			m_container = container;
-		}
-
-		public void Add (EventDefinition value)
-		{
-			Attach (value);
-
-			List.Add (value);
-		}
-
-
-		public new void Clear ()
-		{
-			foreach (EventDefinition item in this)
-				Detach (item);
-
-			base.Clear ();
-		}
-
-		public bool Contains (EventDefinition value)
-		{
-			return List.Contains (value);
-		}
-
-		public int IndexOf (EventDefinition value)
-		{
-			return List.IndexOf (value);
-		}
-
-		public void Insert (int index, EventDefinition value)
-		{
-			Attach (value);
-
-			List.Insert (index, value);
-		}
-
-		public void Remove (EventDefinition value)
-		{
-			List.Remove (value);
-
-			Detach (value);
-		}
-
-
-		public new void RemoveAt (int index)
-		{
-			EventDefinition item = this [index];
-			Remove (item);
-		}
-
-		protected override void OnValidate (object o)
-		{
-			if (! (o is EventDefinition))
-				throw new ArgumentException ("Must be of type " + typeof (EventDefinition).FullName);
-		}
-
-		public EventDefinition GetEvent (string name)
-		{
-			foreach (EventDefinition evt in this)
-				if (evt.Name == name)
-					return evt;
-
-			return null;
-		}
-
-		void Attach (MemberReference member)
-		{
-			if (member.DeclaringType != null)
-				throw new ReflectionException ("Member already attached, clone it instead");
-
-			member.DeclaringType = m_container;
-		}
-
-		void Detach (MemberReference member)
-		{
-			member.DeclaringType = null;
-		}
-
-		public void Accept (IReflectionVisitor visitor)
-		{
-			visitor.VisitEventDefinitionCollection (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/EventReference.cs b/mcs/class/Mono.Cecil/Mono.Cecil/EventReference.cs
index 05ee21e..e1435da 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/EventReference.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/EventReference.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,27 +26,30 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System;
+
 namespace Mono.Cecil {
 
 	public abstract class EventReference : MemberReference {
 
-		TypeReference m_eventType;
+		TypeReference event_type;
 
 		public TypeReference EventType {
-			get { return m_eventType; }
-			set { m_eventType = value; }
+			get { return event_type; }
+			set { event_type = value; }
 		}
 
-		public EventReference (string name, TypeReference eventType) : base (name)
-		{
-			m_eventType = eventType;
+		public override string FullName {
+			get { return event_type.FullName + " " + MemberFullName (); }
 		}
 
-		public abstract EventDefinition Resolve ();
-
-		public override string ToString ()
+		protected EventReference (string name, TypeReference eventType)
+			: base (name)
 		{
-			return string.Concat (m_eventType.FullName, " ", base.ToString ());
+			if (eventType == null)
+				throw new ArgumentNullException ("eventType");
+
+			event_type = eventType;
 		}
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/ExportedType.cs b/mcs/class/Mono.Cecil/Mono.Cecil/ExportedType.cs
new file mode 100644
index 0000000..a1e793a
--- /dev/null
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/ExportedType.cs
@@ -0,0 +1,235 @@
+//
+// ExportedType.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+namespace Mono.Cecil {
+
+	public class ExportedType : IMetadataTokenProvider {
+
+		string @namespace;
+		string name;
+		uint attributes;
+		IMetadataScope scope;
+		int identifier;
+		ExportedType declaring_type;
+		internal MetadataToken token;
+
+		public string Namespace {
+			get { return @namespace; }
+			set { @namespace = value; }
+		}
+
+		public string Name {
+			get { return name; }
+			set { name = value; }
+		}
+
+		public TypeAttributes Attributes {
+			get { return (TypeAttributes) attributes; }
+			set { attributes = (uint) value; }
+		}
+
+		public IMetadataScope Scope {
+			get {
+				if (declaring_type != null)
+					return declaring_type.Scope;
+
+				return scope;
+			}
+		}
+
+		public ExportedType DeclaringType {
+			get { return declaring_type; }
+			set { declaring_type = value; }
+		}
+
+		public MetadataToken MetadataToken {
+			get { return token; }
+			set { token = value; }
+		}
+
+		public int Identifier {
+			get { return identifier; }
+			set { identifier = value; }
+		}
+
+		#region TypeAttributes
+
+		public bool IsNotPublic {
+			get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NotPublic); }
+			set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NotPublic, value); }
+		}
+
+		public bool IsPublic {
+			get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.Public); }
+			set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.Public, value); }
+		}
+
+		public bool IsNestedPublic {
+			get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NestedPublic); }
+			set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NestedPublic, value); }
+		}
+
+		public bool IsNestedPrivate {
+			get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NestedPrivate); }
+			set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NestedPrivate, value); }
+		}
+
+		public bool IsNestedFamily {
+			get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NestedFamily); }
+			set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NestedFamily, value); }
+		}
+
+		public bool IsNestedAssembly {
+			get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NestedAssembly); }
+			set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NestedAssembly, value); }
+		}
+
+		public bool IsNestedFamilyAndAssembly {
+			get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NestedFamANDAssem); }
+			set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NestedFamANDAssem, value); }
+		}
+
+		public bool IsNestedFamilyOrAssembly {
+			get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NestedFamORAssem); }
+			set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NestedFamORAssem, value); }
+		}
+
+		public bool IsAutoLayout {
+			get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.LayoutMask, (uint) TypeAttributes.AutoLayout); }
+			set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.LayoutMask, (uint) TypeAttributes.AutoLayout, value); }
+		}
+
+		public bool IsSequentialLayout {
+			get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.LayoutMask, (uint) TypeAttributes.SequentialLayout); }
+			set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.LayoutMask, (uint) TypeAttributes.SequentialLayout, value); }
+		}
+
+		public bool IsExplicitLayout {
+			get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.LayoutMask, (uint) TypeAttributes.ExplicitLayout); }
+			set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.LayoutMask, (uint) TypeAttributes.ExplicitLayout, value); }
+		}
+
+		public bool IsClass {
+			get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.ClassSemanticMask, (uint) TypeAttributes.Class); }
+			set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.ClassSemanticMask, (uint) TypeAttributes.Class, value); }
+		}
+
+		public bool IsInterface {
+			get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.ClassSemanticMask, (uint) TypeAttributes.Interface); }
+			set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.ClassSemanticMask, (uint) TypeAttributes.Interface, value); }
+		}
+
+		public bool IsAbstract {
+			get { return attributes.GetAttributes ((uint) TypeAttributes.Abstract); }
+			set { attributes = attributes.SetAttributes ((uint) TypeAttributes.Abstract, value); }
+		}
+
+		public bool IsSealed {
+			get { return attributes.GetAttributes ((uint) TypeAttributes.Sealed); }
+			set { attributes = attributes.SetAttributes ((uint) TypeAttributes.Sealed, value); }
+		}
+
+		public bool IsSpecialName {
+			get { return attributes.GetAttributes ((uint) TypeAttributes.SpecialName); }
+			set { attributes = attributes.SetAttributes ((uint) TypeAttributes.SpecialName, value); }
+		}
+
+		public bool IsImport {
+			get { return attributes.GetAttributes ((uint) TypeAttributes.Import); }
+			set { attributes = attributes.SetAttributes ((uint) TypeAttributes.Import, value); }
+		}
+
+		public bool IsSerializable {
+			get { return attributes.GetAttributes ((uint) TypeAttributes.Serializable); }
+			set { attributes = attributes.SetAttributes ((uint) TypeAttributes.Serializable, value); }
+		}
+
+		public bool IsAnsiClass {
+			get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.StringFormatMask, (uint) TypeAttributes.AnsiClass); }
+			set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.StringFormatMask, (uint) TypeAttributes.AnsiClass, value); }
+		}
+
+		public bool IsUnicodeClass {
+			get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.StringFormatMask, (uint) TypeAttributes.UnicodeClass); }
+			set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.StringFormatMask, (uint) TypeAttributes.UnicodeClass, value); }
+		}
+
+		public bool IsAutoClass {
+			get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.StringFormatMask, (uint) TypeAttributes.AutoClass); }
+			set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.StringFormatMask, (uint) TypeAttributes.AutoClass, value); }
+		}
+
+		public bool IsBeforeFieldInit {
+			get { return attributes.GetAttributes ((uint) TypeAttributes.BeforeFieldInit); }
+			set { attributes = attributes.SetAttributes ((uint) TypeAttributes.BeforeFieldInit, value); }
+		}
+
+		public bool IsRuntimeSpecialName {
+			get { return attributes.GetAttributes ((uint) TypeAttributes.RTSpecialName); }
+			set { attributes = attributes.SetAttributes ((uint) TypeAttributes.RTSpecialName, value); }
+		}
+
+		public bool HasSecurity {
+			get { return attributes.GetAttributes ((uint) TypeAttributes.HasSecurity); }
+			set { attributes = attributes.SetAttributes ((uint) TypeAttributes.HasSecurity, value); }
+		}
+
+		#endregion
+
+		public bool IsForwarder {
+			get { return attributes.GetAttributes ((uint) TypeAttributes.Forwarder); }
+			set { attributes = attributes.SetAttributes ((uint) TypeAttributes.Forwarder, value); }
+		}
+
+		public string FullName {
+			get {
+				if (declaring_type != null)
+					return declaring_type.FullName + "/" + name;
+
+				if (string.IsNullOrEmpty (@namespace))
+					return name;
+
+				return @namespace + "." + name;
+			}
+		}
+
+		public ExportedType (string @namespace, string name, IMetadataScope scope)
+		{
+			this. at namespace = @namespace;
+			this.name = name;
+			this.scope = scope;
+		}
+
+		public override string ToString ()
+		{
+			return FullName;
+		}
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/ExternTypeCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil/ExternTypeCollection.cs
deleted file mode 100644
index dfad548..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil/ExternTypeCollection.cs
+++ /dev/null
@@ -1,192 +0,0 @@
-//
-// ExternTypeCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Fri Mar 30 18:43:57 +0200 2007
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-	using System;
-	using System.Collections;
-	using System.Collections.Specialized;
-
-	using Mono.Cecil.Cil;
-
-	using Hcp = Mono.Cecil.HashCodeProvider;
-	using Cmp = System.Collections.Comparer;
-
-	public sealed class ExternTypeCollection : NameObjectCollectionBase, IList, IReflectionVisitable  {
-
-		ModuleDefinition m_container;
-
-		public TypeReference this [int index] {
-			get { return this.BaseGet (index) as TypeReference; }
-			set { this.BaseSet (index, value); }
-		}
-
-		public TypeReference this [string fullName] {
-			get { return this.BaseGet (fullName) as TypeReference; }
-			set { this.BaseSet (fullName, value); }
-		}
-
-		public ModuleDefinition Container {
-			get { return m_container; }
-		}
-
-		public bool IsSynchronized {
-			get { return false; }
-		}
-
-		public object SyncRoot {
-			get { return this; }
-		}
-
-		bool IList.IsReadOnly {
-			get { return false; }
-		}
-
-		bool IList.IsFixedSize {
-			get { return false; }
-		}
-
-		object IList.this [int index] {
-			get { return BaseGet (index); }
-			set {
-				Check (value);
-				BaseSet (index, value);
-			}
-		}
-
-		public ExternTypeCollection (ModuleDefinition container) :
-			base (Hcp.Instance, Cmp.Default)
-		{
-			m_container = container;
-		}
-
-		public void Add (TypeReference value)
-		{
-			if (value == null)
-				throw new ArgumentNullException ("value");
-
-			this.BaseAdd (value.FullName, value);
-		}
-
-		public void Clear ()
-		{
-			this.BaseClear ();
-		}
-
-		public bool Contains (TypeReference value)
-		{
-			return Contains (value.FullName);
-		}
-
-		public bool Contains (string fullName)
-		{
-			return this.BaseGet (fullName) != null;
-		}
-
-		public int IndexOf (TypeReference value)
-		{
-			string [] keys = this.BaseGetAllKeys ();
-			return Array.IndexOf (keys, value.FullName, 0, keys.Length);
-		}
-
-		public void Remove (TypeReference value)
-		{
-			this.BaseRemove (value.FullName);
-		}
-
-		public void RemoveAt (int index)
-		{
-			TypeReference item = this [index];
-			Remove (item);
-		}
-
-		public void CopyTo (Array ary, int index)
-		{
-			this.BaseGetAllValues ().CopyTo (ary, index);
-		}
-
-		public new IEnumerator GetEnumerator ()
-		{
-			return this.BaseGetAllValues ().GetEnumerator ();
-		}
-
-		public void Accept (IReflectionVisitor visitor)
-		{
-			visitor.VisitExternTypeCollection (this);
-		}
-
-#if CF_1_0 || CF_2_0
-		internal object [] BaseGetAllValues ()
-		{
-			object [] values = new object [this.Count];
-			for (int i=0; i < values.Length; ++i) {
-				values [i] = this.BaseGet (i);
-			}
-			return values;
-		}
-#endif
-
-		void Check (object value)
-		{
-			if (!(value is TypeReference))
-				throw new ArgumentException ();
-		}
-
-		int IList.Add (object value)
-		{
-			Check (value);
-			Add (value as TypeReference);
-			return 0;
-		}
-
-		bool IList.Contains (object value)
-		{
-			Check (value);
-			return Contains (value as TypeReference);
-		}
-
-		int IList.IndexOf (object value)
-		{
-			throw new NotSupportedException ();
-		}
-
-		void IList.Insert (int index, object value)
-		{
-			throw new NotSupportedException ();
-		}
-
-		void IList.Remove (object value)
-		{
-			Check (value);
-			Remove (value as TypeReference);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/FieldAttributes.cs b/mcs/class/Mono.Cecil/Mono.Cecil/FieldAttributes.cs
index b7e90f0..947a877 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/FieldAttributes.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/FieldAttributes.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,14 +26,14 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
+using System;
 
-	using System;
+namespace Mono.Cecil {
 
 	[Flags]
 	public enum FieldAttributes : ushort {
 		FieldAccessMask		= 0x0007,
-		Compilercontrolled	= 0x0000,	// Member not referenceable
+		CompilerControlled	= 0x0000,	// Member not referenceable
 		Private				= 0x0001,	// Accessible only by the parent type
 		FamANDAssem			= 0x0002,	// Accessible by sub-types only in this assembly
 		Assembly			= 0x0003,	// Accessible by anyone in the Assembly
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/FieldDefinition.cs b/mcs/class/Mono.Cecil/Mono.Cecil/FieldDefinition.cs
index d25380a..c60a940 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/FieldDefinition.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/FieldDefinition.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,306 +26,254 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using Mono.Collections.Generic;
+
 namespace Mono.Cecil {
 
-	using Mono.Cecil;
-	using Mono.Cecil.Binary;
+	public sealed class FieldDefinition : FieldReference, IMemberDefinition, IConstantProvider, IMarshalInfoProvider {
 
-	public sealed class FieldDefinition : FieldReference, IMemberDefinition,
-		ICustomAttributeProvider, IHasMarshalSpec, IHasConstant {
+		ushort attributes;
+		Collection<CustomAttribute> custom_attributes;
 
-		FieldAttributes m_attributes;
+		int offset = Mixin.NotResolvedMarker;
 
-		CustomAttributeCollection m_customAttrs;
+		internal int rva = Mixin.NotResolvedMarker;
+		byte [] initial_value;
 
-		bool m_hasInfo;
-		uint m_offset;
+		object constant = Mixin.NotResolved;
 
-		RVA m_rva;
-		byte [] m_initVal;
+		MarshalInfo marshal_info;
 
-		bool m_hasConstant;
-		object m_const;
+		void ResolveLayout ()
+		{
+			if (offset != Mixin.NotResolvedMarker)
+				return;
 
-		MarshalSpec m_marshalDesc;
+			if (!HasImage) {
+				offset = Mixin.NoDataMarker;
+				return;
+			}
+
+			offset = Module.Read (this, (field, reader) => reader.ReadFieldLayout (field));
+		}
 
 		public bool HasLayoutInfo {
-			get { return m_hasInfo; }
+			get {
+				if (offset >= 0)
+					return true;
+
+				ResolveLayout ();
+
+				return offset >= 0;
+			}
 		}
 
-		public uint Offset {
-			get { return m_offset; }
-			set {
-				m_hasInfo = true;
-				m_offset = value;
+		public int Offset {
+			get {
+				if (offset >= 0)
+					return offset;
+
+				ResolveLayout ();
+
+				return offset >= 0 ? offset : -1;
 			}
+			set { offset = value; }
 		}
 
-		public RVA RVA {
-			get { return m_rva; }
-			set { m_rva = value; }
+		void ResolveRVA ()
+		{
+			if (rva != Mixin.NotResolvedMarker)
+				return;
+
+			if (!HasImage)
+				return;
+
+			rva = Module.Read (this, (field, reader) => reader.ReadFieldRVA (field));
+		}
+
+		public int RVA {
+			get {
+				if (rva > 0)
+					return rva;
+
+				ResolveRVA ();
+
+				return rva > 0 ? rva : 0;
+			}
 		}
 
 		public byte [] InitialValue {
-			get { return m_initVal; }
-			set { m_initVal = value; }
+			get {
+				if (initial_value != null)
+					return initial_value;
+
+				ResolveRVA ();
+
+				if (initial_value == null)
+					initial_value = Empty<byte>.Array;
+
+				return initial_value;
+			}
+			set { initial_value = value; }
 		}
 
 		public FieldAttributes Attributes {
-			get { return m_attributes; }
-			set { m_attributes = value; }
+			get { return (FieldAttributes) attributes; }
+			set { attributes = (ushort) value; }
 		}
 
 		public bool HasConstant {
-			get { return m_hasConstant; }
+			get {
+				ResolveConstant ();
+
+				return constant != Mixin.NoValue;
+			}
+			set { if (!value) constant = Mixin.NoValue; }
 		}
 
 		public object Constant {
-			get { return m_const; }
-			set {
-				m_hasConstant = true;
-				m_const = value;
-			}
+			get { return HasConstant ? constant : null;	}
+			set { constant = value; }
 		}
 
-		public bool HasCustomAttributes {
-			get { return (m_customAttrs == null) ? false : (m_customAttrs.Count > 0); }
+		void ResolveConstant ()
+		{
+			if (constant != Mixin.NotResolved)
+				return;
+
+			this.ResolveConstant (ref constant, Module);
 		}
 
-		public CustomAttributeCollection CustomAttributes {
+		public bool HasCustomAttributes {
 			get {
-				if (m_customAttrs == null)
-					m_customAttrs = new CustomAttributeCollection (this);
+				if (custom_attributes != null)
+					return custom_attributes.Count > 0;
 
-				return m_customAttrs;
+				return this.GetHasCustomAttributes (Module);
 			}
 		}
 
-		public MarshalSpec MarshalSpec {
-			get { return m_marshalDesc; }
-			set {
-				m_marshalDesc = value;
-				if (value != null)
-					m_attributes |= FieldAttributes.HasFieldMarshal;
-				else
-					m_attributes &= FieldAttributes.HasFieldMarshal;
+		public Collection<CustomAttribute> CustomAttributes {
+			get { return custom_attributes ?? (custom_attributes = this.GetCustomAttributes (Module)); }
+		}
+
+		public bool HasMarshalInfo {
+			get {
+				if (marshal_info != null)
+					return true;
+
+				return this.GetHasMarshalInfo (Module);
 			}
 		}
 
+		public MarshalInfo MarshalInfo {
+			get { return marshal_info ?? (marshal_info = this.GetMarshalInfo (Module)); }
+			set { marshal_info = value; }
+		}
+
 		#region FieldAttributes
 
 		public bool IsCompilerControlled {
-			get { return (m_attributes & FieldAttributes.FieldAccessMask) == FieldAttributes.Compilercontrolled; }
-			set {
-				if (value) {
-					m_attributes &= ~FieldAttributes.FieldAccessMask;
-					m_attributes |= FieldAttributes.Compilercontrolled;
-				} else
-					m_attributes &= ~(FieldAttributes.FieldAccessMask & FieldAttributes.Compilercontrolled);
-			}
+			get { return attributes.GetMaskedAttributes ((ushort) FieldAttributes.FieldAccessMask, (ushort) FieldAttributes.CompilerControlled); }
+			set { attributes = attributes.SetMaskedAttributes ((ushort) FieldAttributes.FieldAccessMask, (ushort) FieldAttributes.CompilerControlled, value); }
 		}
 
 		public bool IsPrivate {
-			get { return (m_attributes & FieldAttributes.FieldAccessMask) == FieldAttributes.Private; }
-			set {
-				if (value) {
-					m_attributes &= ~FieldAttributes.FieldAccessMask;
-					m_attributes |= FieldAttributes.Private;
-				} else
-					m_attributes &= ~(FieldAttributes.FieldAccessMask & FieldAttributes.Private);
-			}
+			get { return attributes.GetMaskedAttributes ((ushort) FieldAttributes.FieldAccessMask, (ushort) FieldAttributes.Private); }
+			set { attributes = attributes.SetMaskedAttributes ((ushort) FieldAttributes.FieldAccessMask, (ushort) FieldAttributes.Private, value); }
 		}
 
 		public bool IsFamilyAndAssembly {
-			get { return (m_attributes & FieldAttributes.FieldAccessMask) == FieldAttributes.FamANDAssem; }
-			set {
-				if (value) {
-					m_attributes &= ~FieldAttributes.FieldAccessMask;
-					m_attributes |= FieldAttributes.FamANDAssem;
-				} else
-					m_attributes &= ~(FieldAttributes.FieldAccessMask & FieldAttributes.FamANDAssem);
-			}
+			get { return attributes.GetMaskedAttributes ((ushort) FieldAttributes.FieldAccessMask, (ushort) FieldAttributes.FamANDAssem); }
+			set { attributes = attributes.SetMaskedAttributes ((ushort) FieldAttributes.FieldAccessMask, (ushort) FieldAttributes.FamANDAssem, value); }
 		}
 
 		public bool IsAssembly {
-			get { return (m_attributes & FieldAttributes.FieldAccessMask) == FieldAttributes.Assembly; }
-			set {
-				if (value) {
-					m_attributes &= ~FieldAttributes.FieldAccessMask;
-					m_attributes |= FieldAttributes.Assembly;
-				} else
-					m_attributes &= ~(FieldAttributes.FieldAccessMask & FieldAttributes.Assembly);
-			}
+			get { return attributes.GetMaskedAttributes ((ushort) FieldAttributes.FieldAccessMask, (ushort) FieldAttributes.Assembly); }
+			set { attributes = attributes.SetMaskedAttributes ((ushort) FieldAttributes.FieldAccessMask, (ushort) FieldAttributes.Assembly, value); }
 		}
 
 		public bool IsFamily {
-			get { return (m_attributes & FieldAttributes.FieldAccessMask) == FieldAttributes.Family; }
-			set {
-				if (value) {
-					m_attributes &= ~FieldAttributes.FieldAccessMask;
-					m_attributes |= FieldAttributes.Family;
-				} else
-					m_attributes &= ~(FieldAttributes.FieldAccessMask & FieldAttributes.Family);
-			}
+			get { return attributes.GetMaskedAttributes ((ushort) FieldAttributes.FieldAccessMask, (ushort) FieldAttributes.Family); }
+			set { attributes = attributes.SetMaskedAttributes ((ushort) FieldAttributes.FieldAccessMask, (ushort) FieldAttributes.Family, value); }
 		}
 
 		public bool IsFamilyOrAssembly {
-			get { return (m_attributes & FieldAttributes.FieldAccessMask) == FieldAttributes.FamORAssem; }
-			set {
-				if (value) {
-					m_attributes &= ~FieldAttributes.FieldAccessMask;
-					m_attributes |= FieldAttributes.FamORAssem;
-				} else
-					m_attributes &= ~(FieldAttributes.FieldAccessMask & FieldAttributes.FamORAssem);
-			}
+			get { return attributes.GetMaskedAttributes ((ushort) FieldAttributes.FieldAccessMask, (ushort) FieldAttributes.FamORAssem); }
+			set { attributes = attributes.SetMaskedAttributes ((ushort) FieldAttributes.FieldAccessMask, (ushort) FieldAttributes.FamORAssem, value); }
 		}
 
 		public bool IsPublic {
-			get { return (m_attributes & FieldAttributes.FieldAccessMask) == FieldAttributes.Public; }
-			set {
-				if (value) {
-					m_attributes &= ~FieldAttributes.FieldAccessMask;
-					m_attributes |= FieldAttributes.Public;
-				} else
-					m_attributes &= ~(FieldAttributes.FieldAccessMask & FieldAttributes.Public);
-			}
+			get { return attributes.GetMaskedAttributes ((ushort) FieldAttributes.FieldAccessMask, (ushort) FieldAttributes.Public); }
+			set { attributes = attributes.SetMaskedAttributes ((ushort) FieldAttributes.FieldAccessMask, (ushort) FieldAttributes.Public, value); }
 		}
 
 		public bool IsStatic {
-			get { return (m_attributes & FieldAttributes.Static) != 0; }
-			set {
-				if (value)
-					m_attributes |= FieldAttributes.Static;
-				else
-					m_attributes &= ~FieldAttributes.Static;
-			}
+			get { return attributes.GetAttributes ((ushort) FieldAttributes.Static); }
+			set { attributes = attributes.SetAttributes ((ushort) FieldAttributes.Static, value); }
 		}
 
 		public bool IsInitOnly {
-			get { return (m_attributes & FieldAttributes.InitOnly) != 0; }
-			set {
-				if (value)
-					m_attributes |= FieldAttributes.InitOnly;
-				else
-					m_attributes &= ~FieldAttributes.InitOnly;
-			}
+			get { return attributes.GetAttributes ((ushort) FieldAttributes.InitOnly); }
+			set { attributes = attributes.SetAttributes ((ushort) FieldAttributes.InitOnly, value); }
 		}
 
 		public bool IsLiteral {
-			get { return (m_attributes & FieldAttributes.Literal) != 0; }
-			set {
-				if (value)
-					m_attributes |= FieldAttributes.Literal;
-				else
-					m_attributes &= ~FieldAttributes.Literal;
-			}
+			get { return attributes.GetAttributes ((ushort) FieldAttributes.Literal); }
+			set { attributes = attributes.SetAttributes ((ushort) FieldAttributes.Literal, value); }
 		}
 
 		public bool IsNotSerialized {
-			get { return (m_attributes & FieldAttributes.NotSerialized) != 0; }
-			set {
-				if (value)
-					m_attributes |= FieldAttributes.NotSerialized;
-				else
-					m_attributes &= ~FieldAttributes.NotSerialized;
-			}
+			get { return attributes.GetAttributes ((ushort) FieldAttributes.NotSerialized); }
+			set { attributes = attributes.SetAttributes ((ushort) FieldAttributes.NotSerialized, value); }
 		}
 
 		public bool IsSpecialName {
-			get { return (m_attributes & FieldAttributes.SpecialName) != 0; }
-			set {
-				if (value)
-					m_attributes |= FieldAttributes.SpecialName;
-				else
-					m_attributes &= ~FieldAttributes.SpecialName;
-			}
+			get { return attributes.GetAttributes ((ushort) FieldAttributes.SpecialName); }
+			set { attributes = attributes.SetAttributes ((ushort) FieldAttributes.SpecialName, value); }
 		}
 
 		public bool IsPInvokeImpl {
-			get { return (m_attributes & FieldAttributes.PInvokeImpl) != 0; }
-			set {
-				if (value)
-					m_attributes |= FieldAttributes.PInvokeImpl;
-				else
-					m_attributes &= ~FieldAttributes.PInvokeImpl;
-			}
+			get { return attributes.GetAttributes ((ushort) FieldAttributes.PInvokeImpl); }
+			set { attributes = attributes.SetAttributes ((ushort) FieldAttributes.PInvokeImpl, value); }
 		}
 
 		public bool IsRuntimeSpecialName {
-			get { return (m_attributes & FieldAttributes.RTSpecialName) != 0; }
-			set {
-				if (value)
-					m_attributes |= FieldAttributes.RTSpecialName;
-				else
-					m_attributes &= ~FieldAttributes.RTSpecialName;
-			}
+			get { return attributes.GetAttributes ((ushort) FieldAttributes.RTSpecialName); }
+			set { attributes = attributes.SetAttributes ((ushort) FieldAttributes.RTSpecialName, value); }
 		}
 
 		public bool HasDefault {
-			get { return (m_attributes & FieldAttributes.HasDefault) != 0; }
-			set {
-				if (value)
-					m_attributes |= FieldAttributes.HasDefault;
-				else
-					m_attributes &= ~FieldAttributes.HasDefault;
-			}
+			get { return attributes.GetAttributes ((ushort) FieldAttributes.HasDefault); }
+			set { attributes = attributes.SetAttributes ((ushort) FieldAttributes.HasDefault, value); }
 		}
 
 		#endregion
 
+		public override bool IsDefinition {
+			get { return true; }
+		}
+
 		public new TypeDefinition DeclaringType {
 			get { return (TypeDefinition) base.DeclaringType; }
 			set { base.DeclaringType = value; }
 		}
 
-		public FieldDefinition (string name, TypeReference fieldType,
-			FieldAttributes attrs) : base (name, fieldType)
+		public FieldDefinition (string name, FieldAttributes attributes, TypeReference fieldType)
+			: base (name, fieldType)
 		{
-			m_attributes = attrs;
+			this.attributes = (ushort) attributes;
 		}
 
 		public override FieldDefinition Resolve ()
 		{
 			return this;
 		}
+	}
 
-		public FieldDefinition Clone ()
-		{
-			return Clone (this, new ImportContext (NullReferenceImporter.Instance, this.DeclaringType));
-		}
-
-		internal static FieldDefinition Clone (FieldDefinition field, ImportContext context)
-		{
-			FieldDefinition nf = new FieldDefinition (
-				field.Name,
-				context.Import (field.FieldType),
-				field.Attributes);
-
-			if (field.HasConstant)
-				nf.Constant = field.Constant;
-			if (field.MarshalSpec != null)
-				nf.MarshalSpec = field.MarshalSpec.CloneInto (nf);
-			if (field.RVA != RVA.Zero)
-				nf.InitialValue = field.InitialValue;
-			else
-				nf.InitialValue = new byte [0];
-			if (field.HasLayoutInfo)
-				nf.Offset = field.Offset;
-
-			foreach (CustomAttribute ca in field.CustomAttributes)
-				nf.CustomAttributes.Add (CustomAttribute.Clone (ca, context));
-
-			return nf;
-		}
-
-		public override void Accept (IReflectionVisitor visitor)
-		{
-			visitor.VisitFieldDefinition (this);
-
-			if (this.MarshalSpec != null)
-				this.MarshalSpec.Accept (visitor);
+	static partial class Mixin {
 
-			this.CustomAttributes.Accept (visitor);
-		}
+		public const int NotResolvedMarker = -2;
+		public const int NoDataMarker = -1;
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/FieldDefinitionCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil/FieldDefinitionCollection.cs
deleted file mode 100644
index 366ec3d..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil/FieldDefinitionCollection.cs
+++ /dev/null
@@ -1,137 +0,0 @@
-//
-// FieldDefinitionCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Fri Mar 30 18:43:57 +0200 2007
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-	using System;
-	using System.Collections;
-
-	using Mono.Cecil.Cil;
-
-	public sealed class FieldDefinitionCollection : CollectionBase, IReflectionVisitable {
-
-		TypeDefinition m_container;
-
-		public FieldDefinition this [int index] {
-			get { return List [index] as FieldDefinition; }
-			set { List [index] = value; }
-		}
-
-		public TypeDefinition Container {
-			get { return m_container; }
-		}
-
-		public FieldDefinitionCollection (TypeDefinition container)
-		{
-			m_container = container;
-		}
-
-		public void Add (FieldDefinition value)
-		{
-			Attach (value);
-
-			List.Add (value);
-		}
-
-
-		public new void Clear ()
-		{
-			foreach (FieldDefinition item in this)
-				Detach (item);
-
-			base.Clear ();
-		}
-
-		public bool Contains (FieldDefinition value)
-		{
-			return List.Contains (value);
-		}
-
-		public int IndexOf (FieldDefinition value)
-		{
-			return List.IndexOf (value);
-		}
-
-		public void Insert (int index, FieldDefinition value)
-		{
-			Attach (value);
-
-			List.Insert (index, value);
-		}
-
-		public void Remove (FieldDefinition value)
-		{
-			List.Remove (value);
-
-			Detach (value);
-		}
-
-
-		public new void RemoveAt (int index)
-		{
-			FieldDefinition item = this [index];
-			Remove (item);
-		}
-
-		protected override void OnValidate (object o)
-		{
-			if (! (o is FieldDefinition))
-				throw new ArgumentException ("Must be of type " + typeof (FieldDefinition).FullName);
-		}
-
-		public FieldDefinition GetField (string name)
-		{
-			foreach (FieldDefinition field in this)
-				if (field.Name == name)
-					return field;
-
-			return null;
-		}
-
-		void Attach (MemberReference member)
-		{
-			if (member.DeclaringType != null)
-				throw new ReflectionException ("Member already attached, clone it instead");
-
-			member.DeclaringType = m_container;
-		}
-
-		void Detach (MemberReference member)
-		{
-			member.DeclaringType = null;
-		}
-
-		public void Accept (IReflectionVisitor visitor)
-		{
-			visitor.VisitFieldDefinitionCollection (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/FieldReference.cs b/mcs/class/Mono.Cecil/Mono.Cecil/FieldReference.cs
index 1913384..1c812bb 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/FieldReference.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/FieldReference.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,42 +26,58 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
+using System;
 
-	using Mono.Cecil;
+namespace Mono.Cecil {
 
 	public class FieldReference : MemberReference {
 
-		TypeReference m_fieldType;
+		TypeReference field_type;
 
 		public TypeReference FieldType {
-			get { return m_fieldType; }
-			set { m_fieldType = value; }
+			get { return field_type; }
+			set { field_type = value; }
+		}
+
+		public override string FullName {
+			get { return field_type.FullName + " " + MemberFullName (); }
+		}
+
+		internal override bool ContainsGenericParameter {
+			get { return field_type.ContainsGenericParameter || base.ContainsGenericParameter; }
 		}
 
-		internal FieldReference (string name, TypeReference fieldType) : base (name)
+		internal FieldReference ()
 		{
-			m_fieldType = fieldType;
+			this.token = new MetadataToken (TokenType.MemberRef);
 		}
 
-		public FieldReference (string name, TypeReference declaringType, TypeReference fieldType) :
-			this (name, fieldType)
+		public FieldReference (string name, TypeReference fieldType)
+			: base (name)
 		{
-			this.DeclaringType = declaringType;
+			if (fieldType == null)
+				throw new ArgumentNullException ("fieldType");
+
+			this.field_type = fieldType;
+			this.token = new MetadataToken (TokenType.MemberRef);
 		}
 
-		public virtual FieldDefinition Resolve ()
+		public FieldReference (string name, TypeReference fieldType, TypeReference declaringType)
+			: this (name, fieldType)
 		{
-			TypeReference declaringType = DeclaringType;
 			if (declaringType == null)
-				return null;
+				throw new ArgumentNullException("declaringType");
 
-			return declaringType.Module.Resolver.Resolve (this);
+			this.DeclaringType = declaringType;
 		}
 
-		public override string ToString ()
+		public virtual FieldDefinition Resolve ()
 		{
-			return string.Concat (m_fieldType.FullName, " ", base.ToString ());
+			var module = this.Module;
+			if (module == null)
+				throw new NotSupportedException ();
+
+			return module.Resolve (this);
 		}
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/FileAttributes.cs b/mcs/class/Mono.Cecil/Mono.Cecil/FileAttributes.cs
index 1379a86..6c2781c 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/FileAttributes.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/FileAttributes.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -28,7 +28,7 @@
 
 namespace Mono.Cecil {
 
-	public enum FileAttributes : uint {
+	enum FileAttributes : uint {
 		ContainsMetaData	= 0x0000,	// This is not a resource file
 		ContainsNoMetaData  = 0x0001,	// This is a resource file or other non-metadata-containing file
 	}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/FunctionPointerType.cs b/mcs/class/Mono.Cecil/Mono.Cecil/FunctionPointerType.cs
index 247f26c..f7bf08c 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/FunctionPointerType.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/FunctionPointerType.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 - 2007 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,45 +26,51 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
+using System;
+using System.Text;
+using Mono.Collections.Generic;
+using MD = Mono.Cecil.Metadata;
 
-	using System;
-	using System.Text;
+namespace Mono.Cecil {
 
 	public sealed class FunctionPointerType : TypeSpecification, IMethodSignature {
 
-		MethodReference m_function;
+		readonly MethodReference function;
 
 		public bool HasThis {
-			get { return m_function.HasThis; }
-			set { m_function.HasThis = value; }
+			get { return function.HasThis; }
+			set { function.HasThis = value; }
 		}
 
 		public bool ExplicitThis {
-			get { return m_function.ExplicitThis; }
-			set { m_function.ExplicitThis = value; }
+			get { return function.ExplicitThis; }
+			set { function.ExplicitThis = value; }
 		}
 
 		public MethodCallingConvention CallingConvention {
-			get { return m_function.CallingConvention; }
-			set { m_function.CallingConvention = value; }
+			get { return function.CallingConvention; }
+			set { function.CallingConvention = value; }
 		}
 
 		public bool HasParameters {
-			get { return m_function.HasParameters; }
+			get { return function.HasParameters; }
+		}
+
+		public Collection<ParameterDefinition> Parameters {
+			get { return function.Parameters; }
 		}
 
-		public ParameterDefinitionCollection Parameters {
-			get { return m_function.Parameters; }
+		public TypeReference ReturnType {
+			get { return function.MethodReturnType.ReturnType; }
+			set { function.MethodReturnType.ReturnType = value; }
 		}
 
-		public MethodReturnType ReturnType {
-			get { return m_function.ReturnType; }
-			set { m_function.ReturnType = value; }
+		public MethodReturnType MethodReturnType {
+			get { return function.MethodReturnType; }
 		}
 
 		public override string Name {
-			get { return m_function.Name; }
+			get { return function.Name; }
 			set { throw new InvalidOperationException (); }
 		}
 
@@ -73,44 +79,50 @@ namespace Mono.Cecil {
 			set { throw new InvalidOperationException (); }
 		}
 
+		public override ModuleDefinition Module {
+			get { return ReturnType.Module; }
+		}
+
 		public override IMetadataScope Scope {
-			get { return m_function.DeclaringType.Scope; }
+			get { return function.ReturnType.Scope; }
+		}
+
+		public override bool IsFunctionPointer {
+			get { return true; }
+		}
+
+		internal override bool ContainsGenericParameter {
+			get { return function.ContainsGenericParameter; }
 		}
 
 		public override string FullName {
 			get {
-				int sentinel = GetSentinel ();
-				StringBuilder sb = new StringBuilder ();
-				sb.Append (m_function.Name);
-				sb.Append (" ");
-				sb.Append (m_function.ReturnType.ReturnType.FullName);
-				sb.Append (" *(");
-				if (m_function.HasParameters) {
-					for (int i = 0; i < m_function.Parameters.Count; i++) {
-						if (i > 0)
-							sb.Append (",");
-
-						if (i == sentinel)
-							sb.Append ("...,");
-
-						sb.Append (m_function.Parameters [i].ParameterType.FullName);
-					}
-				}
-				sb.Append (")");
-				return sb.ToString ();
+				var signature = new StringBuilder ();
+				signature.Append (function.Name);
+				signature.Append (" ");
+				signature.Append (function.ReturnType.FullName);
+				signature.Append (" *");
+				this.MethodSignatureFullName (signature);
+				return signature.ToString ();
 			}
 		}
 
-		public FunctionPointerType (bool hasThis, bool explicitThis, MethodCallingConvention callConv, MethodReturnType retType) :
-			base (retType.ReturnType)
+		public FunctionPointerType ()
+			: base (null)
+		{
+			this.function = new MethodReference ();
+			this.function.Name = "method";
+			this.etype = MD.ElementType.FnPtr;
+		}
+
+		public override TypeDefinition Resolve ()
 		{
-			m_function = new MethodReference ("method", hasThis, explicitThis, callConv);
-			m_function.ReturnType = retType;
+			return null;
 		}
 
-		public int GetSentinel ()
+		public override TypeReference GetElementType ()
 		{
-			return m_function.GetSentinel ();
+			return this;
 		}
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/GenericArgumentCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil/GenericArgumentCollection.cs
deleted file mode 100644
index cdb82e9..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil/GenericArgumentCollection.cs
+++ /dev/null
@@ -1,88 +0,0 @@
-//
-// GenericArgumentCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Wed Sep 27 12:46:54 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-	using System;
-	using System.Collections;
-
-	using Mono.Cecil.Cil;
-
-	public sealed class GenericArgumentCollection : CollectionBase {
-
-		IGenericInstance m_container;
-
-		public TypeReference this [int index] {
-			get { return List [index] as TypeReference; }
-			set { List [index] = value; }
-		}
-
-		public IGenericInstance Container {
-			get { return m_container; }
-		}
-
-		public GenericArgumentCollection (IGenericInstance container)
-		{
-			m_container = container;
-		}
-
-		public void Add (TypeReference value)
-		{
-			List.Add (value);
-		}
-
-		public bool Contains (TypeReference value)
-		{
-			return List.Contains (value);
-		}
-
-		public int IndexOf (TypeReference value)
-		{
-			return List.IndexOf (value);
-		}
-
-		public void Insert (int index, TypeReference value)
-		{
-			List.Insert (index, value);
-		}
-
-		public void Remove (TypeReference value)
-		{
-			List.Remove (value);
-		}
-
-		protected override void OnValidate (object o)
-		{
-			if (! (o is TypeReference))
-				throw new ArgumentException ("Must be of type " + typeof (TypeReference).FullName);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/GenericContext.cs b/mcs/class/Mono.Cecil/Mono.Cecil/GenericContext.cs
deleted file mode 100644
index b3c198d..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil/GenericContext.cs
+++ /dev/null
@@ -1,92 +0,0 @@
-//
-// GenericContext.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-	public class GenericContext {
-
-		TypeReference m_type;
-		MethodReference m_method;
-
-		public TypeReference Type {
-			get { return m_type; }
-			set { m_type = value; }
-		}
-
-		public MethodReference Method {
-			get { return m_method; }
-			set { m_method = value; }
-		}
-
-		public bool AllowCreation {
-			get { return m_type != null && m_type.GetType () == typeof (TypeReference); }
-		}
-
-		public bool Null {
-			get { return m_type == null && m_method == null; }
-		}
-
-		public GenericContext ()
-		{
-		}
-
-		public GenericContext (TypeReference type, MethodReference meth)
-		{
-			m_type = type;
-			m_method = meth;
-		}
-
-		public GenericContext (IGenericParameterProvider provider)
-		{
-			if (provider is TypeReference)
-				m_type = provider as TypeReference;
-			else if (provider is MethodReference) {
-				MethodReference meth = provider as MethodReference;
-				m_method = meth;
-				m_type = meth.DeclaringType;
-			}
-		}
-
-		internal void CheckProvider (IGenericParameterProvider provider, int count)
-		{
-			if (!AllowCreation)
-				return;
-
-			for (int i = provider.GenericParameters.Count; i < count; i++)
-				provider.GenericParameters.Add (new GenericParameter (i, provider));
-		}
-
-		public GenericContext Clone ()
-		{
-			GenericContext ctx = new GenericContext ();
-			ctx.Type = m_type;
-			ctx.Method = m_method;
-			return ctx;
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/GenericInstanceMethod.cs b/mcs/class/Mono.Cecil/Mono.Cecil/GenericInstanceMethod.cs
index b88873e..d5d8d4e 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/GenericInstanceMethod.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/GenericInstanceMethod.cs
@@ -1,10 +1,10 @@
 //
-// IGenericInstanceMethod.cs
+// GenericInstanceMethod.cs
 //
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,56 +26,65 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System;
+using System.Text;
+
+using Mono.Collections.Generic;
+
 namespace Mono.Cecil {
 
-	using System.Text;
+	public sealed class GenericInstanceMethod : MethodSpecification, IGenericInstance, IGenericContext {
 
-	public sealed class GenericInstanceMethod : MethodSpecification, IGenericInstance {
+		Collection<TypeReference> arguments;
 
-		private GenericArgumentCollection m_genArgs;
+		public bool HasGenericArguments {
+			get { return !arguments.IsNullOrEmpty (); }
+		}
 
-		public GenericArgumentCollection GenericArguments {
+		public Collection<TypeReference> GenericArguments {
 			get {
-				if (m_genArgs == null)
-					m_genArgs = new GenericArgumentCollection (this);
-				return m_genArgs;
+				if (arguments == null)
+					arguments = new Collection<TypeReference> ();
+
+				return arguments;
 			}
 		}
 
-		public bool HasGenericArguments {
-			get { return m_genArgs == null ? false : m_genArgs.Count > 0; }
+		public override bool IsGenericInstance {
+			get { return true; }
 		}
 
-		public GenericInstanceMethod (MethodReference elemMethod) : base (elemMethod)
-		{
+		IGenericParameterProvider IGenericContext.Method {
+			get { return ElementMethod; }
 		}
 
-		public override string ToString ()
-		{
-			StringBuilder sb = new StringBuilder ();
-			MethodReference meth = this.ElementMethod;
-			sb.Append (meth.ReturnType.ReturnType.FullName);
-			sb.Append (" ");
-			sb.Append (meth.DeclaringType.FullName);
-			sb.Append ("::");
-			sb.Append (meth.Name);
-			sb.Append ("<");
-			for (int i = 0; i < this.GenericArguments.Count; i++) {
-				if (i > 0)
-					sb.Append (",");
-				sb.Append (this.GenericArguments [i].FullName);
-			}
-			sb.Append (">");
-			sb.Append ("(");
-			if (meth.HasParameters) {
-				for (int i = 0; i < meth.Parameters.Count; i++) {
-					sb.Append (meth.Parameters [i].ParameterType.FullName);
-					if (i < meth.Parameters.Count - 1)
-						sb.Append (",");
-				}
+		IGenericParameterProvider IGenericContext.Type {
+			get { return ElementMethod.DeclaringType; }
+		}
+
+		internal override bool ContainsGenericParameter {
+			get { return this.ContainsGenericParameter () || base.ContainsGenericParameter; }
+		}
+
+		public override string FullName {
+			get {
+				var signature = new StringBuilder ();
+				var method = this.ElementMethod;
+				signature.Append (method.ReturnType.FullName)
+					.Append (" ")
+					.Append (method.DeclaringType.FullName)
+					.Append ("::")
+					.Append (method.Name);
+				this.GenericInstanceFullName (signature);
+				this.MethodSignatureFullName (signature);
+				return signature.ToString ();
+
 			}
-			sb.Append (")");
-			return sb.ToString ();
+		}
+
+		public GenericInstanceMethod (MethodReference method)
+			: base (method)
+		{
 		}
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/GenericInstanceType.cs b/mcs/class/Mono.Cecil/Mono.Cecil/GenericInstanceType.cs
index e20ad67..46c048b 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/GenericInstanceType.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/GenericInstanceType.cs
@@ -2,10 +2,9 @@
 // GenericInstanceType.cs
 //
 // Author:
-//	Martin Baulig  <martin at ximian.com>
-//  Jb Evain  <jbevain at gmail.com>
+//   Jb Evain (jbevain at gmail.com)
 //
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -27,49 +26,63 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System;
+using System.Text;
+
+using Mono.Collections.Generic;
+
+using MD = Mono.Cecil.Metadata;
+
 namespace Mono.Cecil {
 
-	using System.Text;
+	public sealed class GenericInstanceType : TypeSpecification, IGenericInstance, IGenericContext {
 
-	public sealed class GenericInstanceType : TypeSpecification, IGenericInstance {
+		Collection<TypeReference> arguments;
 
-		private GenericArgumentCollection m_genArgs;
+		public bool HasGenericArguments {
+			get { return !arguments.IsNullOrEmpty (); }
+		}
 
-		public GenericArgumentCollection GenericArguments {
+		public Collection<TypeReference> GenericArguments {
 			get {
-				if (m_genArgs == null)
-					m_genArgs = new GenericArgumentCollection (this);
-				return m_genArgs;
-			}
-		}
+				if (arguments == null)
+					arguments = new Collection<TypeReference> ();
 
-		public bool HasGenericArguments {
-			get { return m_genArgs == null ? false : m_genArgs.Count > 0; }
+				return arguments;
+			}
 		}
 
-		public override bool IsValueType {
-			get { return m_isValueType; }
-			set { m_isValueType = value; }
+		public override TypeReference DeclaringType {
+			get { return ElementType.DeclaringType; }
+			set { throw new NotSupportedException (); }
 		}
 
 		public override string FullName {
 			get {
-				StringBuilder sb = new StringBuilder ();
-				sb.Append (base.FullName);
-				sb.Append ("<");
-				for (int i = 0; i < this.GenericArguments.Count; i++) {
-					if (i > 0)
-						sb.Append (",");
-					sb.Append (this.GenericArguments [i].FullName);
-				}
-				sb.Append (">");
-				return sb.ToString ();
+				var name = new StringBuilder ();
+				name.Append (base.FullName);
+				this.GenericInstanceFullName (name);
+				return name.ToString ();
 			}
 		}
 
-		public GenericInstanceType (TypeReference elementType) : base (elementType)
+		public override bool IsGenericInstance {
+			get { return true; }
+		}
+
+		internal override bool ContainsGenericParameter {
+			get { return this.ContainsGenericParameter () || base.ContainsGenericParameter; }
+		}
+
+		IGenericParameterProvider IGenericContext.Type {
+			get { return ElementType; }
+		}
+
+		public GenericInstanceType (TypeReference type)
+			: base (type)
 		{
-			m_isValueType = elementType.IsValueType;
+			base.IsValueType = type.IsValueType;
+			this.etype = MD.ElementType.GenericInst;
 		}
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/GenericParameter.cs b/mcs/class/Mono.Cecil/Mono.Cecil/GenericParameter.cs
index 88a5850..d3e5a15 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/GenericParameter.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/GenericParameter.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,80 +26,101 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System;
+
+using Mono.Collections.Generic;
+
+using Mono.Cecil.Metadata;
+
 namespace Mono.Cecil {
 
-	using System;
+	public sealed class GenericParameter : TypeReference, ICustomAttributeProvider {
 
-	public sealed class GenericParameter : TypeReference {
+		readonly IGenericParameterProvider owner;
 
-		int m_position;
-		string m_name;
-		GenericParameterAttributes m_attributes;
-		IGenericParameterProvider m_owner;
-		ConstraintCollection m_constraints;
+		ushort attributes;
+		Collection<TypeReference> constraints;
+		Collection<CustomAttribute> custom_attributes;
 
-		public int Position {
-			get { return m_position; }
-			set { m_position = value; }
+		public GenericParameterAttributes Attributes {
+			get { return (GenericParameterAttributes) attributes; }
+			set { attributes = (ushort) value; }
 		}
 
-		public GenericParameterAttributes Attributes {
-			get { return m_attributes; }
-			set { m_attributes = value; }
+		public int Position {
+			get {
+				if (owner == null)
+					return -1;
+
+				return owner.GenericParameters.IndexOf (this);
+			}
 		}
 
 		public IGenericParameterProvider Owner {
-			get { return m_owner; }
+			get { return owner; }
 		}
 
 		public bool HasConstraints {
-			get { return (m_constraints == null) ? false : (m_constraints.Count > 0); }
+			get {
+				if (constraints != null)
+					return constraints.Count > 0;
+
+				if (HasImage)
+					return Module.Read (this, (generic_parameter, reader) => reader.HasGenericConstraints (generic_parameter));
+
+				return false;
+			}
 		}
 
-		public ConstraintCollection Constraints {
+		public Collection<TypeReference> Constraints {
 			get {
-				if (m_constraints == null)
-					m_constraints = new ConstraintCollection (this);
+				if (constraints != null)
+					return constraints;
+
+				if (HasImage)
+					return constraints = Module.Read (this, (generic_parameter, reader) => reader.ReadGenericConstraints (generic_parameter));
 
-				return m_constraints;
+				return constraints = new Collection<TypeReference> ();
 			}
 		}
 
-		public override IMetadataScope Scope {
+		public bool HasCustomAttributes {
 			get {
-				if (m_owner is TypeReference)
-					return ((TypeReference) m_owner).Scope;
-				if (m_owner is MethodReference)
-					return ((MethodReference) m_owner).DeclaringType.Scope;
+				if (custom_attributes != null)
+					return custom_attributes.Count > 0;
 
-				throw new InvalidOperationException ();
+				return this.GetHasCustomAttributes (Module);
 			}
 		}
 
-		public override ModuleDefinition Module {
+		public Collection<CustomAttribute> CustomAttributes {
+			get { return custom_attributes ?? (custom_attributes = this.GetCustomAttributes (Module)); }
+		}
+
+		internal new bool HasImage {
+			get { return Module != null && Module.HasImage; }
+		}
+
+		public override IMetadataScope Scope {
 			get {
-				if (m_owner is TypeReference)
-					return ((TypeReference) m_owner).Module;
-				if (m_owner is MethodReference)
-					return ((MethodReference) m_owner).DeclaringType.Module;
+				if (owner.GenericParameterType == GenericParameterType.Method)
+					return ((MethodReference) owner).DeclaringType.Scope;
 
-				throw new InvalidOperationException ();
+				return ((TypeReference) owner).Scope;
 			}
 		}
 
+		public override ModuleDefinition Module {
+			get { return ((MemberReference) owner).Module; }
+		}
+
 		public override string Name {
 			get {
-				if (m_name != null)
-					return m_name;
-
-				if (m_owner is TypeReference)
-					return string.Concat ("!", m_position.ToString ());
-				else if (m_owner is MethodReference)
-					return string.Concat ("!!", m_position.ToString ());
-				else
-					throw new InvalidOperationException ();
+				if (!string.IsNullOrEmpty (base.Name))
+					return base.Name;
+
+				return base.Name = (owner.GenericParameterType == GenericParameterType.Type ? "!" : "!!") + Position;
 			}
-			set { m_name = value; }
 		}
 
 		public override string Namespace {
@@ -111,128 +132,70 @@ namespace Mono.Cecil {
 			get { return Name; }
 		}
 
+		public override bool IsGenericParameter {
+			get { return true; }
+		}
+
+		internal override bool ContainsGenericParameter {
+			get { return true; }
+		}
+
+		public override MetadataType MetadataType {
+			get { return (MetadataType) etype; }
+		}
+
 		#region GenericParameterAttributes
 
 		public bool IsNonVariant {
-			get { return (m_attributes & GenericParameterAttributes.VarianceMask) == GenericParameterAttributes.NonVariant; }
-			set {
-				if (value) {
-					m_attributes &= ~GenericParameterAttributes.VarianceMask;
-					m_attributes |= GenericParameterAttributes.NonVariant;
-				} else
-					m_attributes &= ~(GenericParameterAttributes.VarianceMask & GenericParameterAttributes.NonVariant);
-			}
+			get { return attributes.GetMaskedAttributes ((ushort) GenericParameterAttributes.VarianceMask, (ushort) GenericParameterAttributes.NonVariant); }
+			set { attributes = attributes.SetMaskedAttributes ((ushort) GenericParameterAttributes.VarianceMask, (ushort) GenericParameterAttributes.NonVariant, value); }
 		}
 
 		public bool IsCovariant {
-			get { return (m_attributes & GenericParameterAttributes.VarianceMask) == GenericParameterAttributes.Covariant; }
-			set {
-				if (value) {
-					m_attributes &= ~GenericParameterAttributes.VarianceMask;
-					m_attributes |= GenericParameterAttributes.Covariant;
-				} else
-					m_attributes &= ~(GenericParameterAttributes.VarianceMask & GenericParameterAttributes.Covariant);
-			}
+			get { return attributes.GetMaskedAttributes ((ushort) GenericParameterAttributes.VarianceMask, (ushort) GenericParameterAttributes.Covariant); }
+			set { attributes = attributes.SetMaskedAttributes ((ushort) GenericParameterAttributes.VarianceMask, (ushort) GenericParameterAttributes.Covariant, value); }
 		}
 
 		public bool IsContravariant {
-			get { return (m_attributes & GenericParameterAttributes.VarianceMask) == GenericParameterAttributes.Contravariant; }
-			set {
-				if (value) {
-					m_attributes &= ~GenericParameterAttributes.VarianceMask;
-					m_attributes |= GenericParameterAttributes.Contravariant;
-				} else
-					m_attributes &= ~(GenericParameterAttributes.VarianceMask & GenericParameterAttributes.Contravariant);
-			}
+			get { return attributes.GetMaskedAttributes ((ushort) GenericParameterAttributes.VarianceMask, (ushort) GenericParameterAttributes.Contravariant); }
+			set { attributes = attributes.SetMaskedAttributes ((ushort) GenericParameterAttributes.VarianceMask, (ushort) GenericParameterAttributes.Contravariant, value); }
 		}
 
 		public bool HasReferenceTypeConstraint {
-			get { return (m_attributes & GenericParameterAttributes.ReferenceTypeConstraint) != 0; }
-			set {
-				if (value) {
-					m_attributes |= GenericParameterAttributes.ReferenceTypeConstraint;
-				} else
-					m_attributes &= ~GenericParameterAttributes.ReferenceTypeConstraint;
-			}
+			get { return attributes.GetAttributes ((ushort) GenericParameterAttributes.ReferenceTypeConstraint); }
+			set { attributes = attributes.SetAttributes ((ushort) GenericParameterAttributes.ReferenceTypeConstraint, value); }
 		}
 
 		public bool HasNotNullableValueTypeConstraint {
-			get { return (m_attributes & GenericParameterAttributes.NotNullableValueTypeConstraint) != 0; }
-			set {
-				if (value) {
-					m_attributes |= GenericParameterAttributes.NotNullableValueTypeConstraint;
-				} else
-					m_attributes &= ~GenericParameterAttributes.NotNullableValueTypeConstraint;
-			}
+			get { return attributes.GetAttributes ((ushort) GenericParameterAttributes.NotNullableValueTypeConstraint); }
+			set { attributes = attributes.SetAttributes ((ushort) GenericParameterAttributes.NotNullableValueTypeConstraint, value); }
 		}
 
 		public bool HasDefaultConstructorConstraint {
-			get { return (m_attributes & GenericParameterAttributes.DefaultConstructorConstraint) != 0; }
-			set {
-				if (value) {
-					m_attributes |= GenericParameterAttributes.DefaultConstructorConstraint;
-				} else
-					m_attributes &= ~GenericParameterAttributes.DefaultConstructorConstraint;
-			}
+			get { return attributes.GetAttributes ((ushort) GenericParameterAttributes.DefaultConstructorConstraint); }
+			set { attributes = attributes.SetAttributes ((ushort) GenericParameterAttributes.DefaultConstructorConstraint, value); }
 		}
 
 		#endregion
 
-		internal GenericParameter (int pos, IGenericParameterProvider owner) :
-			base (string.Empty, string.Empty)
+		public GenericParameter (IGenericParameterProvider owner)
+			: this (string.Empty, owner)
 		{
-			m_position = pos;
-			m_owner = owner;
 		}
 
-		public GenericParameter (string name, IGenericParameterProvider owner) :
-			base (string.Empty, string.Empty)
+		public GenericParameter (string name, IGenericParameterProvider owner)
+			: base (string.Empty, name)
 		{
-			m_name = name;
-			m_owner = owner;
+			if (owner == null)
+				throw new ArgumentNullException ();
+
+			this.owner = owner;
+			this.etype = owner.GenericParameterType == GenericParameterType.Type ? ElementType.Var : ElementType.MVar;
 		}
 
 		public override TypeDefinition Resolve ()
 		{
 			return null;
 		}
-
-		internal static void CloneInto (IGenericParameterProvider old, IGenericParameterProvider np, ImportContext context)
-		{
-			foreach (GenericParameter gp in old.GenericParameters) {
-				GenericParameter ngp = Clone (gp, context);
-				np.GenericParameters.Add (ngp);
-				CloneConstraints (gp, ngp, context);
-			}
-		}
-
-		internal static GenericParameter Clone (GenericParameter gp, ImportContext context)
-		{
-			GenericParameter ngp;
-			if (gp.Owner is TypeReference)
-				ngp = new GenericParameter (gp.m_name, context.GenericContext.Type);
-			else if (gp.Owner is MethodReference)
-				ngp = new GenericParameter (gp.m_name, context.GenericContext.Method);
-			else
-				throw new NotSupportedException ();
-
-			ngp.Position = gp.Owner.GenericParameters.IndexOf (gp);
-			ngp.Attributes = gp.Attributes;
-
-			if (gp.HasCustomAttributes) {
-				foreach (CustomAttribute ca in gp.CustomAttributes)
-					ngp.CustomAttributes.Add (CustomAttribute.Clone (ca, context));
-			}
-
-			return ngp;
-		}
-
-		static void CloneConstraints (GenericParameter gp, GenericParameter ngp, ImportContext context)
-		{
-			if (gp.HasConstraints) {
-				foreach (TypeReference constraint in gp.Constraints)
-					ngp.Constraints.Add (context.Import (constraint));
-			}
-		}
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/GenericParameterAttributes.cs b/mcs/class/Mono.Cecil/Mono.Cecil/GenericParameterAttributes.cs
index d7d65c7..8999614 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/GenericParameterAttributes.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/GenericParameterAttributes.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,9 +26,9 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
+using System;
 
-	using System;
+namespace Mono.Cecil {
 
 	[Flags]
 	public enum GenericParameterAttributes : ushort {
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/GenericParameterCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil/GenericParameterCollection.cs
deleted file mode 100644
index fc00972..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil/GenericParameterCollection.cs
+++ /dev/null
@@ -1,93 +0,0 @@
-//
-// GenericParameterCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Wed Sep 27 12:46:53 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-	using System;
-	using System.Collections;
-
-	using Mono.Cecil.Cil;
-
-	public sealed class GenericParameterCollection : CollectionBase, IReflectionVisitable {
-
-		IGenericParameterProvider m_container;
-
-		public GenericParameter this [int index] {
-			get { return List [index] as GenericParameter; }
-			set { List [index] = value; }
-		}
-
-		public IGenericParameterProvider Container {
-			get { return m_container; }
-		}
-
-		public GenericParameterCollection (IGenericParameterProvider container)
-		{
-			m_container = container;
-		}
-
-		public void Add (GenericParameter value)
-		{
-			List.Add (value);
-		}
-
-		public bool Contains (GenericParameter value)
-		{
-			return List.Contains (value);
-		}
-
-		public int IndexOf (GenericParameter value)
-		{
-			return List.IndexOf (value);
-		}
-
-		public void Insert (int index, GenericParameter value)
-		{
-			List.Insert (index, value);
-		}
-
-		public void Remove (GenericParameter value)
-		{
-			List.Remove (value);
-		}
-
-		protected override void OnValidate (object o)
-		{
-			if (! (o is GenericParameter))
-				throw new ArgumentException ("Must be of type " + typeof (GenericParameter).FullName);
-		}
-
-		public void Accept (IReflectionVisitor visitor)
-		{
-			visitor.VisitGenericParameterCollection (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/IAnnotationProvider.cs b/mcs/class/Mono.Cecil/Mono.Cecil/IAnnotationProvider.cs
deleted file mode 100644
index bf5e249..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil/IAnnotationProvider.cs
+++ /dev/null
@@ -1,37 +0,0 @@
-//
-// AssemblyDefinition.cs
-//
-// Author:
-//   Jb Evain (jbevain at novell.com)
-//
-// (C) 2007 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-	using System.Collections;
-
-	public interface IAnnotationProvider {
-
-		IDictionary Annotations { get; }
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/IAssemblyResolver.cs b/mcs/class/Mono.Cecil/Mono.Cecil/IAssemblyResolver.cs
deleted file mode 100644
index 3619d4e..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil/IAssemblyResolver.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-//
-// IAssemblyResolver.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2006 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-	public interface IAssemblyResolver {
-
-		AssemblyDefinition Resolve (string fullName);
-		AssemblyDefinition Resolve (AssemblyNameReference name);
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/IConstantProvider.cs b/mcs/class/Mono.Cecil/Mono.Cecil/IConstantProvider.cs
new file mode 100644
index 0000000..e3338cf
--- /dev/null
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/IConstantProvider.cs
@@ -0,0 +1,52 @@
+//
+// IConstantProvider.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	public interface IConstantProvider : IMetadataTokenProvider {
+
+		bool HasConstant { get; set; }
+		object Constant { get; set; }
+	}
+
+	static partial class Mixin {
+
+		internal static object NoValue = new object ();
+		internal static object NotResolved = new object ();
+
+		public static void ResolveConstant (
+			this IConstantProvider self,
+			ref object constant,
+			ModuleDefinition module)
+		{
+			constant = module.HasImage ()
+				? module.Read (self, (provider, reader) => reader.ReadConstant (provider))
+				: Mixin.NoValue;
+		}
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/ICustomAttributeProvider.cs b/mcs/class/Mono.Cecil/Mono.Cecil/ICustomAttributeProvider.cs
index ae379a4..08e5f92 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/ICustomAttributeProvider.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/ICustomAttributeProvider.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,14 +26,37 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
+using System;
+
+using Mono.Collections.Generic;
 
-	using System.Reflection;
+namespace Mono.Cecil {
 
-	public interface ICustomAttributeProvider {
+	public interface ICustomAttributeProvider : IMetadataTokenProvider {
 
-		CustomAttributeCollection CustomAttributes { get; }
+		Collection<CustomAttribute> CustomAttributes { get; }
 
 		bool HasCustomAttributes { get; }
 	}
+
+	static partial class Mixin {
+
+		public static bool GetHasCustomAttributes (
+			this ICustomAttributeProvider self,
+			ModuleDefinition module)
+		{
+			return module.HasImage ()
+				? module.Read (self, (provider, reader) => reader.HasCustomAttributes (provider))
+				: false;
+		}
+
+		public static Collection<CustomAttribute> GetCustomAttributes (
+			this ICustomAttributeProvider self,
+			ModuleDefinition module)
+		{
+			return module.HasImage ()
+				? module.Read (self, (provider, reader) => reader.ReadCustomAttributes (provider))
+				: new Collection<CustomAttribute> ();
+		}
+	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/IGenericInstance.cs b/mcs/class/Mono.Cecil/Mono.Cecil/IGenericInstance.cs
index d1cd10f..2750ad0 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/IGenericInstance.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/IGenericInstance.cs
@@ -1,10 +1,10 @@
 //
-// IGenericInstanceMethod.cs
+// IGenericInstance.cs
 //
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,12 +26,41 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System.Text;
+
+using Mono.Collections.Generic;
+
 namespace Mono.Cecil {
 
 	public interface IGenericInstance : IMetadataTokenProvider {
 
-		GenericArgumentCollection GenericArguments { get; }
-
 		bool HasGenericArguments { get; }
+		Collection<TypeReference> GenericArguments { get; }
+	}
+
+	static partial class Mixin {
+
+		public static bool ContainsGenericParameter (this IGenericInstance self)
+		{
+			var arguments = self.GenericArguments;
+
+			for (int i = 0; i < arguments.Count; i++)
+				if (arguments [i].ContainsGenericParameter)
+					return true;
+
+			return false;
+		}
+
+		public static void GenericInstanceFullName (this IGenericInstance self, StringBuilder builder)
+		{
+			builder.Append ("<");
+			var arguments = self.GenericArguments;
+			for (int i = 0; i < arguments.Count; i++) {
+				if (i > 0)
+					builder.Append (",");
+				builder.Append (arguments [i].FullName);
+			}
+			builder.Append (">");
+		}
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/IGenericParameterProvider.cs b/mcs/class/Mono.Cecil/Mono.Cecil/IGenericParameterProvider.cs
index b58f602..27d1669 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/IGenericParameterProvider.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/IGenericParameterProvider.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,12 +26,50 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+
+using Mono.Collections.Generic;
+
 namespace Mono.Cecil {
 
 	public interface IGenericParameterProvider : IMetadataTokenProvider {
 
-		GenericParameterCollection GenericParameters { get; }
-
 		bool HasGenericParameters { get; }
+		bool IsDefinition { get; }
+		ModuleDefinition Module { get; }
+		Collection<GenericParameter> GenericParameters { get; }
+		GenericParameterType GenericParameterType { get; }
+	}
+
+	public enum GenericParameterType {
+		Type,
+		Method
+	}
+
+	interface IGenericContext {
+
+		bool IsDefinition { get; }
+		IGenericParameterProvider Type { get; }
+		IGenericParameterProvider Method { get; }
+	}
+
+	static partial class Mixin {
+
+		public static bool GetHasGenericParameters (
+			this IGenericParameterProvider self,
+			ModuleDefinition module)
+		{
+			return module.HasImage ()
+				? module.Read (self, (provider, reader) => reader.HasGenericParameters (provider))
+				: false;
+		}
+
+		public static Collection<GenericParameter> GetGenericParameters (
+			this IGenericParameterProvider self,
+			ModuleDefinition module)
+		{
+			return module.HasImage ()
+				? module.Read (self, (provider, reader) => reader.ReadGenericParameters (provider))
+				: new Collection<GenericParameter> ();
+		}
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/IHasConstant.cs b/mcs/class/Mono.Cecil/Mono.Cecil/IHasConstant.cs
deleted file mode 100644
index e2126b4..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil/IHasConstant.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-//
-// IHasConstant.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-	public interface IHasConstant : IMetadataTokenProvider {
-
-		bool HasConstant { get; }
-		object Constant { get; set; }
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/IHasMarshalSpec.cs b/mcs/class/Mono.Cecil/Mono.Cecil/IHasMarshalSpec.cs
deleted file mode 100644
index 69f69d6..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil/IHasMarshalSpec.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-//
-// IHasMarshalSpec.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-	public interface IHasMarshalSpec : IMetadataTokenProvider {
-
-		MarshalSpec MarshalSpec { get; set; }
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/IHasSecurity.cs b/mcs/class/Mono.Cecil/Mono.Cecil/IHasSecurity.cs
deleted file mode 100644
index 39466c3..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil/IHasSecurity.cs
+++ /dev/null
@@ -1,37 +0,0 @@
-//
-// IHasSecurity.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-	public interface IHasSecurity : IMetadataTokenProvider {
-
-		SecurityDeclarationCollection SecurityDeclarations { get; }
-
-		bool HasSecurityDeclarations { get; }
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/IImporter.cs b/mcs/class/Mono.Cecil/Mono.Cecil/IImporter.cs
deleted file mode 100644
index b9ee8b0..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil/IImporter.cs
+++ /dev/null
@@ -1,37 +0,0 @@
-//
-// IImporter.cs
-//
-// Author:
-//   Jb Evain (jbevain at novell.com)
-//
-// (C) 2007 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-	public interface IImporter {
-
-		TypeReference ImportTypeReference (TypeReference type, ImportContext context);
-		FieldReference ImportFieldReference (FieldReference field, ImportContext context);
-		MethodReference ImportMethodReference (MethodReference method, ImportContext context);
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/IMarshalInfoProvider.cs b/mcs/class/Mono.Cecil/Mono.Cecil/IMarshalInfoProvider.cs
new file mode 100644
index 0000000..a3bba6d
--- /dev/null
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/IMarshalInfoProvider.cs
@@ -0,0 +1,57 @@
+//
+// IMarshalInfoProvider.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	public interface IMarshalInfoProvider : IMetadataTokenProvider {
+
+		bool HasMarshalInfo { get; }
+		MarshalInfo MarshalInfo { get; set; }
+	}
+
+	static partial class Mixin {
+
+		public static bool GetHasMarshalInfo (
+			this IMarshalInfoProvider self,
+			ModuleDefinition module)
+		{
+			return module.HasImage ()
+				? module.Read (self, (provider, reader) => reader.HasMarshalInfo (provider))
+				: false;
+		}
+
+		public static MarshalInfo GetMarshalInfo (
+			this IMarshalInfoProvider self,
+			ModuleDefinition module)
+		{
+			return module.HasImage ()
+				? module.Read (self, (provider, reader) => reader.ReadMarshalInfo (provider))
+				: null;
+		}
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/IMemberDefinition.cs b/mcs/class/Mono.Cecil/Mono.Cecil/IMemberDefinition.cs
index e0ba517..09878f7 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/IMemberDefinition.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/IMemberDefinition.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -28,10 +28,73 @@
 
 namespace Mono.Cecil {
 
-	public interface IMemberDefinition : IMemberReference, ICustomAttributeProvider {
+	public interface IMemberDefinition : ICustomAttributeProvider {
+
+		string Name { get; set; }
+		string FullName { get; }
 
-		new TypeDefinition DeclaringType { get; set; }
 		bool IsSpecialName { get; set; }
 		bool IsRuntimeSpecialName { get; set; }
+
+		TypeDefinition DeclaringType { get; set; }
+	}
+
+	static partial class Mixin {
+
+		public static bool GetAttributes (this uint self, uint attributes)
+		{
+			return (self & attributes) != 0;
+		}
+
+		public static uint SetAttributes (this uint self, uint attributes, bool value)
+		{
+			if (value)
+				return self | attributes;
+
+			return self & ~attributes;
+		}
+
+		public static bool GetMaskedAttributes (this uint self, uint mask, uint attributes)
+		{
+			return (self & mask) == attributes;
+		}
+
+		public static uint SetMaskedAttributes (this uint self, uint mask, uint attributes, bool value)
+		{
+			if (value) {
+				self &= ~mask;
+				return self | attributes;
+			}
+
+			return self & ~(mask & attributes);
+		}
+
+		public static bool GetAttributes (this ushort self, ushort attributes)
+		{
+			return (self & attributes) != 0;
+		}
+
+		public static ushort SetAttributes (this ushort self, ushort attributes, bool value)
+		{
+			if (value)
+				return (ushort) (self | attributes);
+
+			return (ushort) (self & ~attributes);
+		}
+
+		public static bool GetMaskedAttributes (this ushort self, ushort mask, uint attributes)
+		{
+			return (self & mask) == attributes;
+		}
+
+		public static ushort SetMaskedAttributes (this ushort self, ushort mask, uint attributes, bool value)
+		{
+			if (value) {
+				self = (ushort) (self & ~mask);
+				return (ushort) (self | attributes);
+			}
+
+			return (ushort) (self & ~(mask & attributes));
+		}
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/IMemberReference.cs b/mcs/class/Mono.Cecil/Mono.Cecil/IMemberReference.cs
deleted file mode 100644
index 016565f..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil/IMemberReference.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-//
-// IMemberReference.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-	public interface IMemberReference : IMetadataTokenProvider, IAnnotationProvider, IReflectionVisitable {
-
-		string Name { get; set; }
-		TypeReference DeclaringType { get; }
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/IMetadataScope.cs b/mcs/class/Mono.Cecil/Mono.Cecil/IMetadataScope.cs
index d0a0eac..f0ab506 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/IMetadataScope.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/IMetadataScope.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -28,7 +28,14 @@
 
 namespace Mono.Cecil {
 
+	public enum MetadataScopeType {
+		AssemblyNameReference,
+		ModuleReference,
+		ModuleDefinition,
+	}
+
 	public interface IMetadataScope : IMetadataTokenProvider {
+		MetadataScopeType MetadataScopeType { get; }
 		string Name { get; set; }
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/IMetadataTokenProvider.cs b/mcs/class/Mono.Cecil/Mono.Cecil/IMetadataTokenProvider.cs
index 332f1af..ff77724 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/IMetadataTokenProvider.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/IMetadataTokenProvider.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -28,8 +28,6 @@
 
 namespace Mono.Cecil {
 
-	using Mono.Cecil.Metadata;
-
 	public interface IMetadataTokenProvider {
 
 		MetadataToken MetadataToken { get; set; }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/IMethodSignature.cs b/mcs/class/Mono.Cecil/Mono.Cecil/IMethodSignature.cs
index 4acb7e2..6bae56a 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/IMethodSignature.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/IMethodSignature.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 - 2007 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,18 +26,45 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System.Text;
+
+using Mono.Collections.Generic;
+
 namespace Mono.Cecil {
 
-	public interface IMethodSignature {
+	public interface IMethodSignature : IMetadataTokenProvider {
 
-		bool HasParameters { get; }
 		bool HasThis { get; set; }
 		bool ExplicitThis { get; set; }
 		MethodCallingConvention CallingConvention { get; set; }
 
-		ParameterDefinitionCollection Parameters { get; }
-		MethodReturnType ReturnType { get; }
+		bool HasParameters { get; }
+		Collection<ParameterDefinition> Parameters { get; }
+		TypeReference ReturnType { get; set; }
+		MethodReturnType MethodReturnType { get; }
+	}
+
+	static partial class Mixin {
+
+		public static void MethodSignatureFullName (this IMethodSignature self, StringBuilder builder)
+		{
+			builder.Append ("(");
+
+			if (self.HasParameters) {
+				var parameters = self.Parameters;
+				for (int i = 0; i < parameters.Count; i++) {
+					var parameter = parameters [i];
+					if (i > 0)
+						builder.Append (",");
+
+					if (parameter.ParameterType.IsSentinel)
+						builder.Append ("...,");
+
+					builder.Append (parameter.ParameterType.FullName);
+				}
+			}
 
-		int GetSentinel ();
+			builder.Append (")");
+		}
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/IReflectionStructureVisitable.cs b/mcs/class/Mono.Cecil/Mono.Cecil/IReflectionStructureVisitable.cs
deleted file mode 100644
index f522cf1..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil/IReflectionStructureVisitable.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-//
-// IReflectionStructureVisitable.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-	public interface IReflectionStructureVisitable {
-
-		void Accept (IReflectionStructureVisitor visitor);
-	}
-}
-
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/IReflectionStructureVisitor.cs b/mcs/class/Mono.Cecil/Mono.Cecil/IReflectionStructureVisitor.cs
deleted file mode 100644
index 81a6e3b..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil/IReflectionStructureVisitor.cs
+++ /dev/null
@@ -1,49 +0,0 @@
-//
-// IReflectionStructureVisitor.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-	public interface IReflectionStructureVisitor {
-
-		void VisitAssemblyDefinition (AssemblyDefinition asm);
-		void VisitAssemblyNameDefinition (AssemblyNameDefinition name);
-		void VisitAssemblyNameReferenceCollection (AssemblyNameReferenceCollection names);
-		void VisitAssemblyNameReference (AssemblyNameReference name);
-		void VisitResourceCollection (ResourceCollection resources);
-		void VisitEmbeddedResource (EmbeddedResource res);
-		void VisitLinkedResource (LinkedResource res);
-		void VisitAssemblyLinkedResource (AssemblyLinkedResource res);
-		void VisitModuleDefinition (ModuleDefinition module);
-		void VisitModuleDefinitionCollection (ModuleDefinitionCollection modules);
-		void VisitModuleReference (ModuleReference module);
-		void VisitModuleReferenceCollection (ModuleReferenceCollection modules);
-
-		void TerminateAssemblyDefinition (AssemblyDefinition asm);
-	}
-}
-
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/IReflectionVisitable.cs b/mcs/class/Mono.Cecil/Mono.Cecil/IReflectionVisitable.cs
deleted file mode 100644
index ac4f706..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil/IReflectionVisitable.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-//
-// IReflectionVisitable.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-	public interface IReflectionVisitable {
-
-		void Accept (IReflectionVisitor visitor);
-	}
-}
-
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/IReflectionVisitor.cs b/mcs/class/Mono.Cecil/Mono.Cecil/IReflectionVisitor.cs
deleted file mode 100644
index c85633b..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil/IReflectionVisitor.cs
+++ /dev/null
@@ -1,71 +0,0 @@
-//
-// IReflectionVisitor.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-	public interface IReflectionVisitor {
-
-		void VisitModuleDefinition (ModuleDefinition module);
-		void VisitTypeDefinitionCollection (TypeDefinitionCollection types);
-		void VisitTypeDefinition (TypeDefinition type);
-		void VisitTypeReferenceCollection (TypeReferenceCollection refs);
-		void VisitTypeReference (TypeReference type);
-		void VisitMemberReferenceCollection (MemberReferenceCollection members);
-		void VisitMemberReference (MemberReference member);
-		void VisitInterfaceCollection (InterfaceCollection interfaces);
-		void VisitInterface (TypeReference interf);
-		void VisitExternTypeCollection (ExternTypeCollection externs);
-		void VisitExternType (TypeReference externType);
-		void VisitOverrideCollection (OverrideCollection meth);
-		void VisitOverride (MethodReference ov);
-		void VisitNestedTypeCollection (NestedTypeCollection nestedTypes);
-		void VisitNestedType (TypeDefinition nestedType);
-		void VisitParameterDefinitionCollection (ParameterDefinitionCollection parameters);
-		void VisitParameterDefinition (ParameterDefinition parameter);
-		void VisitMethodDefinitionCollection (MethodDefinitionCollection methods);
-		void VisitMethodDefinition (MethodDefinition method);
-		void VisitConstructorCollection (ConstructorCollection ctors);
-		void VisitConstructor (MethodDefinition ctor);
-		void VisitPInvokeInfo (PInvokeInfo pinvk);
-		void VisitEventDefinitionCollection (EventDefinitionCollection events);
-		void VisitEventDefinition (EventDefinition evt);
-		void VisitFieldDefinitionCollection (FieldDefinitionCollection fields);
-		void VisitFieldDefinition (FieldDefinition field);
-		void VisitPropertyDefinitionCollection (PropertyDefinitionCollection properties);
-		void VisitPropertyDefinition (PropertyDefinition property);
-		void VisitSecurityDeclarationCollection (SecurityDeclarationCollection secDecls);
-		void VisitSecurityDeclaration (SecurityDeclaration secDecl);
-		void VisitCustomAttributeCollection (CustomAttributeCollection customAttrs);
-		void VisitCustomAttribute (CustomAttribute customAttr);
-		void VisitGenericParameterCollection (GenericParameterCollection genparams);
-		void VisitGenericParameter (GenericParameter genparam);
-		void VisitMarshalSpec (MarshalSpec marshalSpec);
-
-		void TerminateModuleDefinition (ModuleDefinition module);
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/IRequireResolving.cs b/mcs/class/Mono.Cecil/Mono.Cecil/IRequireResolving.cs
deleted file mode 100644
index 92eac83..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil/IRequireResolving.cs
+++ /dev/null
@@ -1,37 +0,0 @@
-//
-// IRequireResolving.cs
-//
-// Author:
-//	Jb Evain <jbevain at gmail.com>
-//
-// Copyright (C) 2006 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-	public interface IRequireResolving {
-
-		byte [] Blob { get; }
-		bool Resolved { get; }
-		bool Resolve ();
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/Import.cs b/mcs/class/Mono.Cecil/Mono.Cecil/Import.cs
new file mode 100644
index 0000000..93e700e
--- /dev/null
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/Import.cs
@@ -0,0 +1,566 @@
+//
+// Import.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections.Generic;
+using SR = System.Reflection;
+
+using Mono.Cecil.Metadata;
+
+namespace Mono.Cecil {
+
+	enum ImportGenericKind {
+		Definition,
+		Open,
+	}
+
+	class MetadataImporter {
+
+		readonly ModuleDefinition module;
+
+		public MetadataImporter (ModuleDefinition module)
+		{
+			this.module = module;
+		}
+
+#if !CF
+		static readonly Dictionary<Type, ElementType> type_etype_mapping = new Dictionary<Type, ElementType> (18) {
+			{ typeof (void), ElementType.Void },
+			{ typeof (bool), ElementType.Boolean },
+			{ typeof (char), ElementType.Char },
+			{ typeof (sbyte), ElementType.I1 },
+			{ typeof (byte), ElementType.U1 },
+			{ typeof (short), ElementType.I2 },
+			{ typeof (ushort), ElementType.U2 },
+			{ typeof (int), ElementType.I4 },
+			{ typeof (uint), ElementType.U4 },
+			{ typeof (long), ElementType.I8 },
+			{ typeof (ulong), ElementType.U8 },
+			{ typeof (float), ElementType.R4 },
+			{ typeof (double), ElementType.R8 },
+			{ typeof (string), ElementType.String },
+			{ typeof (TypedReference), ElementType.TypedByRef },
+			{ typeof (IntPtr), ElementType.I },
+			{ typeof (UIntPtr), ElementType.U },
+			{ typeof (object), ElementType.Object },
+		};
+
+		public TypeReference ImportType (Type type, IGenericContext context)
+		{
+			return ImportType (type, context, ImportGenericKind.Open);
+		}
+
+		public TypeReference ImportType (Type type, IGenericContext context, ImportGenericKind import_kind)
+		{
+			if (IsTypeSpecification (type) || ImportOpenGenericType (type, import_kind))
+				return ImportTypeSpecification (type, context);
+
+			var reference = new TypeReference (
+				string.Empty,
+				type.Name,
+				module,
+				ImportScope (type.Assembly),
+				type.IsValueType);
+
+			reference.etype = ImportElementType (type);
+
+			if (IsNestedType (type))
+				reference.DeclaringType = ImportType (type.DeclaringType, context, import_kind);
+			else
+				reference.Namespace = type.Namespace;
+
+			if (type.IsGenericType)
+				ImportGenericParameters (reference, type.GetGenericArguments ());
+
+			return reference;
+		}
+
+		static bool ImportOpenGenericType (Type type, ImportGenericKind import_kind)
+		{
+			return type.IsGenericType && type.IsGenericTypeDefinition && import_kind == ImportGenericKind.Open;
+		}
+
+		static bool ImportOpenGenericMethod (SR.MethodBase method, ImportGenericKind import_kind)
+		{
+			return method.IsGenericMethod && method.IsGenericMethodDefinition && import_kind == ImportGenericKind.Open;
+		}
+
+		static bool IsNestedType (Type type)
+		{
+#if !SILVERLIGHT
+			return type.IsNested;
+#else
+			return type.DeclaringType != null;
+#endif
+		}
+
+		TypeReference ImportTypeSpecification (Type type, IGenericContext context)
+		{
+			if (type.IsByRef)
+				return new ByReferenceType (ImportType (type.GetElementType (), context));
+
+			if (type.IsPointer)
+				return new PointerType (ImportType (type.GetElementType (), context));
+
+			if (type.IsArray)
+				return new ArrayType (ImportType (type.GetElementType (), context), type.GetArrayRank ());
+
+			if (type.IsGenericType)
+				return ImportGenericInstance (type, context);
+
+			if (type.IsGenericParameter)
+				return ImportGenericParameter (type, context);
+
+			throw new NotSupportedException (type.FullName);
+		}
+
+		static TypeReference ImportGenericParameter (Type type, IGenericContext context)
+		{
+			if (context == null)
+				throw new InvalidOperationException ();
+
+			var owner = type.DeclaringMethod != null
+				? context.Method
+				: context.Type;
+
+			if (owner == null)
+				throw new InvalidOperationException ();
+
+			return owner.GenericParameters [type.GenericParameterPosition];
+		}
+
+		TypeReference ImportGenericInstance (Type type, IGenericContext context)
+		{
+			var element_type = ImportType (type.GetGenericTypeDefinition (), context, ImportGenericKind.Definition);
+			var instance = new GenericInstanceType (element_type);
+			var arguments = type.GetGenericArguments ();
+			var instance_arguments = instance.GenericArguments;
+
+			for (int i = 0; i < arguments.Length; i++)
+				instance_arguments.Add (ImportType (arguments [i], context ?? element_type));
+
+			return instance;
+		}
+
+		static bool IsTypeSpecification (Type type)
+		{
+			return type.HasElementType
+				|| IsGenericInstance (type)
+				|| type.IsGenericParameter;
+		}
+
+		static bool IsGenericInstance (Type type)
+		{
+			return type.IsGenericType && !type.IsGenericTypeDefinition;
+		}
+
+		static ElementType ImportElementType (Type type)
+		{
+			ElementType etype;
+			if (!type_etype_mapping.TryGetValue (type, out etype))
+				return ElementType.None;
+
+			return etype;
+		}
+
+		AssemblyNameReference ImportScope (SR.Assembly assembly)
+		{
+			AssemblyNameReference scope;
+#if !SILVERLIGHT
+			var name = assembly.GetName ();
+
+			if (TryGetAssemblyNameReference (name, out scope))
+				return scope;
+
+			scope = new AssemblyNameReference (name.Name, name.Version) {
+				Culture = name.CultureInfo.Name,
+				PublicKeyToken = name.GetPublicKeyToken (),
+				HashAlgorithm = (AssemblyHashAlgorithm) name.HashAlgorithm,
+			};
+
+			module.AssemblyReferences.Add (scope);
+
+			return scope;
+#else
+			var name = AssemblyNameReference.Parse (assembly.FullName);
+
+			if (TryGetAssemblyNameReference (name, out scope))
+				return scope;
+
+			module.AssemblyReferences.Add (name);
+
+			return name;
+#endif
+		}
+
+#if !SILVERLIGHT
+		bool TryGetAssemblyNameReference (SR.AssemblyName name, out AssemblyNameReference assembly_reference)
+		{
+			var references = module.AssemblyReferences;
+
+			for (int i = 0; i < references.Count; i++) {
+				var reference = references [i];
+				if (name.FullName != reference.FullName) // TODO compare field by field
+					continue;
+
+				assembly_reference = reference;
+				return true;
+			}
+
+			assembly_reference = null;
+			return false;
+		}
+#endif
+
+		public FieldReference ImportField (SR.FieldInfo field, IGenericContext context)
+		{
+			var declaring_type = ImportType (field.DeclaringType, context);
+
+			if (IsGenericInstance (field.DeclaringType))
+				field = ResolveFieldDefinition (field);
+
+			return new FieldReference {
+				Name = field.Name,
+				DeclaringType = declaring_type,
+				FieldType = ImportType (field.FieldType, context ?? declaring_type),
+			};
+		}
+
+		static SR.FieldInfo ResolveFieldDefinition (SR.FieldInfo field)
+		{
+#if !SILVERLIGHT
+			return field.Module.ResolveField (field.MetadataToken);
+#else
+			return field.DeclaringType.GetGenericTypeDefinition ().GetField (field.Name,
+				SR.BindingFlags.Public
+				| SR.BindingFlags.NonPublic
+				| (field.IsStatic ? SR.BindingFlags.Static : SR.BindingFlags.Instance));
+#endif
+		}
+
+		public MethodReference ImportMethod (SR.MethodBase method, IGenericContext context, ImportGenericKind import_kind)
+		{
+			if (IsMethodSpecification (method) || ImportOpenGenericMethod (method, import_kind))
+				return ImportMethodSpecification (method, context);
+
+			var declaring_type = ImportType (method.DeclaringType, context);
+
+			if (IsGenericInstance (method.DeclaringType))
+				method = method.Module.ResolveMethod (method.MetadataToken);
+
+			var reference = new MethodReference {
+				Name = method.Name,
+				HasThis = HasCallingConvention (method, SR.CallingConventions.HasThis),
+				ExplicitThis = HasCallingConvention (method, SR.CallingConventions.ExplicitThis),
+				DeclaringType = ImportType (method.DeclaringType, context, ImportGenericKind.Definition),
+			};
+
+			if (HasCallingConvention (method, SR.CallingConventions.VarArgs))
+				reference.CallingConvention &= MethodCallingConvention.VarArg;
+
+			if (method.IsGenericMethod)
+				ImportGenericParameters (reference, method.GetGenericArguments ());
+
+			var method_info = method as SR.MethodInfo;
+			reference.ReturnType = method_info != null
+				? ImportType (method_info.ReturnType, context ?? reference)
+				: ImportType (typeof (void), null);
+
+			var parameters = method.GetParameters ();
+			var reference_parameters = reference.Parameters;
+
+			for (int i = 0; i < parameters.Length; i++)
+				reference_parameters.Add (
+					new ParameterDefinition (ImportType (parameters [i].ParameterType, context ?? reference)));
+
+			reference.DeclaringType = declaring_type;
+
+			return reference;
+		}
+
+		static void ImportGenericParameters (IGenericParameterProvider provider, Type [] arguments)
+		{
+			var provider_parameters = provider.GenericParameters;
+
+			for (int i = 0; i < arguments.Length; i++)
+				provider_parameters.Add (new GenericParameter (arguments [i].Name, provider));
+		}
+
+		static bool IsMethodSpecification (SR.MethodBase method)
+		{
+			return method.IsGenericMethod && !method.IsGenericMethodDefinition;
+		}
+
+		MethodReference ImportMethodSpecification (SR.MethodBase method, IGenericContext context)
+		{
+			var method_info = method as SR.MethodInfo;
+			if (method_info == null)
+				throw new InvalidOperationException ();
+
+			var element_method = ImportMethod (method_info.GetGenericMethodDefinition (), context, ImportGenericKind.Definition);
+			var instance = new GenericInstanceMethod (element_method);
+			var arguments = method.GetGenericArguments ();
+			var instance_arguments = instance.GenericArguments;
+
+			for (int i = 0; i < arguments.Length; i++)
+				instance_arguments.Add (ImportType (arguments [i], context ?? element_method));
+
+			return instance;
+		}
+
+		static bool HasCallingConvention (SR.MethodBase method, SR.CallingConventions conventions)
+		{
+			return (method.CallingConvention & conventions) != 0;
+		}
+#endif
+
+		public TypeReference ImportType (TypeReference type, IGenericContext context)
+		{
+			if (type.IsTypeSpecification ())
+				return ImportTypeSpecification (type, context);
+
+			var reference = new TypeReference (
+				type.Namespace,
+				type.Name,
+				module,
+				ImportScope (type.Scope),
+				type.IsValueType);
+
+			MetadataSystem.TryProcessPrimitiveType (reference);
+
+			if (type.IsNested)
+				reference.DeclaringType = ImportType (type.DeclaringType, context);
+
+			if (type.HasGenericParameters)
+				ImportGenericParameters (reference, type);
+
+			return reference;
+		}
+
+		IMetadataScope ImportScope (IMetadataScope scope)
+		{
+			switch (scope.MetadataScopeType) {
+			case MetadataScopeType.AssemblyNameReference:
+				return ImportAssemblyName ((AssemblyNameReference) scope);
+			case MetadataScopeType.ModuleDefinition:
+				return ImportAssemblyName (((ModuleDefinition) scope).Assembly.Name);
+			case MetadataScopeType.ModuleReference:
+				throw new NotImplementedException ();
+			}
+
+			throw new NotSupportedException ();
+		}
+
+		AssemblyNameReference ImportAssemblyName (AssemblyNameReference name)
+		{
+			AssemblyNameReference reference;
+			if (TryGetAssemblyNameReference (name, out reference))
+				return reference;
+
+			reference = new AssemblyNameReference (name.Name, name.Version) {
+				Culture = name.Culture,
+				HashAlgorithm = name.HashAlgorithm,
+			};
+
+			var pk_token = !name.PublicKeyToken.IsNullOrEmpty ()
+				? new byte [name.PublicKeyToken.Length]
+				: Empty<byte>.Array;
+
+			if (pk_token.Length > 0)
+				Buffer.BlockCopy (name.PublicKeyToken, 0, pk_token, 0, pk_token.Length);
+
+			reference.PublicKeyToken = pk_token;
+
+			module.AssemblyReferences.Add (reference);
+
+			return reference;
+		}
+
+		bool TryGetAssemblyNameReference (AssemblyNameReference name_reference, out AssemblyNameReference assembly_reference)
+		{
+			var references = module.AssemblyReferences;
+
+			for (int i = 0; i < references.Count; i++) {
+				var reference = references [i];
+				if (name_reference.FullName != reference.FullName) // TODO compare field by field
+					continue;
+
+				assembly_reference = reference;
+				return true;
+			}
+
+			assembly_reference = null;
+			return false;
+		}
+
+		static void ImportGenericParameters (IGenericParameterProvider imported, IGenericParameterProvider original)
+		{
+			var parameters = original.GenericParameters;
+			var imported_parameters = imported.GenericParameters;
+
+			for (int i = 0; i < parameters.Count; i++)
+				imported_parameters.Add (new GenericParameter (parameters [i].Name, imported));
+		}
+
+		TypeReference ImportTypeSpecification (TypeReference type, IGenericContext context)
+		{
+			switch (type.etype) {
+			case ElementType.SzArray:
+				var vector = (ArrayType) type;
+				return new ArrayType (ImportType (vector.ElementType, context));
+			case ElementType.Ptr:
+				var pointer = (PointerType) type;
+				return new PointerType (ImportType (pointer.ElementType, context));
+			case ElementType.ByRef:
+				var byref = (ByReferenceType) type;
+				return new ByReferenceType (ImportType (byref.ElementType, context));
+			case ElementType.Pinned:
+				var pinned = (PinnedType) type;
+				return new PinnedType (ImportType (pinned.ElementType, context));
+			case ElementType.Sentinel:
+				var sentinel = (SentinelType) type;
+				return new SentinelType (ImportType (sentinel.ElementType, context));
+			case ElementType.CModOpt:
+				var modopt = (OptionalModifierType) type;
+				return new OptionalModifierType (
+					ImportType (modopt.ModifierType, context),
+					ImportType (modopt.ElementType, context));
+			case ElementType.CModReqD:
+				var modreq = (RequiredModifierType) type;
+				return new RequiredModifierType (
+					ImportType (modreq.ModifierType, context),
+					ImportType (modreq.ElementType, context));
+			case ElementType.Array:
+				var array = (ArrayType) type;
+				var imported_array = new ArrayType (ImportType (array.ElementType, context));
+				if (array.IsVector)
+					return imported_array;
+
+				var dimensions = array.Dimensions;
+				var imported_dimensions = imported_array.Dimensions;
+
+				imported_dimensions.Clear ();
+
+				for (int i = 0; i < dimensions.Count; i++) {
+					var dimension = dimensions [i];
+
+					imported_dimensions.Add (new ArrayDimension (dimension.LowerBound, dimension.UpperBound));
+				}
+
+				return imported_array;
+			case ElementType.GenericInst:
+				var instance = (GenericInstanceType) type;
+				var element_type = ImportType (instance.ElementType, context);
+				var imported_instance = new GenericInstanceType (element_type);
+
+				var arguments = instance.GenericArguments;
+				var imported_arguments = imported_instance.GenericArguments;
+
+				for (int i = 0; i < arguments.Count; i++)
+					imported_arguments.Add (ImportType (arguments [i], context));
+
+				return imported_instance;
+			case ElementType.Var:
+				if (context == null || context.Type == null)
+					throw new InvalidOperationException ();
+
+				return ((TypeReference) context.Type).GetElementType ().GenericParameters [((GenericParameter) type).Position];
+			case ElementType.MVar:
+				if (context == null || context.Method == null)
+					throw new InvalidOperationException ();
+
+				return context.Method.GenericParameters [((GenericParameter) type).Position];
+			}
+
+			throw new NotSupportedException (type.etype.ToString ());
+		}
+
+		public FieldReference ImportField (FieldReference field, IGenericContext context)
+		{
+			var declaring_type = ImportType (field.DeclaringType, context);
+
+			return new FieldReference {
+				Name = field.Name,
+				DeclaringType = declaring_type,
+				FieldType = ImportType (field.FieldType, context ?? declaring_type),
+			};
+		}
+
+		public MethodReference ImportMethod (MethodReference method, IGenericContext context)
+		{
+			if (method.IsGenericInstance)
+				return ImportMethodSpecification (method, context);
+
+			var declaring_type = ImportType (method.DeclaringType, context);
+
+			var reference = new MethodReference {
+				Name = method.Name,
+				HasThis = method.HasThis,
+				ExplicitThis = method.ExplicitThis,
+				DeclaringType = declaring_type,
+			};
+
+			reference.CallingConvention = method.CallingConvention;
+
+			if (method.HasGenericParameters)
+				ImportGenericParameters (reference, method);
+
+			reference.ReturnType = ImportType (method.ReturnType, context ?? reference);
+
+			if (!method.HasParameters)
+				return reference;
+
+			var reference_parameters = reference.Parameters;
+
+			var parameters = method.Parameters;
+			for (int i = 0; i < parameters.Count; i++)
+				reference_parameters.Add (
+					new ParameterDefinition (ImportType (parameters [i].ParameterType, context ?? reference)));
+
+			return reference;
+		}
+
+		MethodSpecification ImportMethodSpecification (MethodReference method, IGenericContext context)
+		{
+			if (!method.IsGenericInstance)
+				throw new NotSupportedException ();
+
+			var instance = (GenericInstanceMethod) method;
+			var element_method = ImportMethod (instance.ElementMethod, context);
+			var imported_instance = new GenericInstanceMethod (element_method);
+
+			var arguments = instance.GenericArguments;
+			var imported_arguments = imported_instance.GenericArguments;
+
+			for (int i = 0; i < arguments.Count; i++)
+				imported_arguments.Add (ImportType (arguments [i], context));
+
+			return imported_instance;
+		}
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/ImportContext.cs b/mcs/class/Mono.Cecil/Mono.Cecil/ImportContext.cs
deleted file mode 100644
index 1bec14d..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil/ImportContext.cs
+++ /dev/null
@@ -1,68 +0,0 @@
-//
-// ImportContext.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2006 Evaluant RC S.A.
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-	public class ImportContext {
-
-		GenericContext m_genContext;
-		IImporter m_importer;
-
-		public GenericContext GenericContext {
-			get { return m_genContext; }
-			set { m_genContext = value; }
-		}
-
-		public ImportContext (IImporter importer)
-		{
-			m_genContext = new GenericContext ();
-			m_importer = importer;
-		}
-
-		public ImportContext (IImporter importer, IGenericParameterProvider provider)
-		{
-			m_importer = importer;
-			m_genContext = new GenericContext (provider);
-		}
-
-		public TypeReference Import (TypeReference type)
-		{
-			return m_importer.ImportTypeReference (type, this);
-		}
-
-		public MethodReference Import (MethodReference meth)
-		{
-			return m_importer.ImportMethodReference (meth, this);
-		}
-
-		public FieldReference Import (FieldReference field)
-		{
-			return m_importer.ImportFieldReference (field, this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/InterfaceCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil/InterfaceCollection.cs
deleted file mode 100644
index 9999680..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil/InterfaceCollection.cs
+++ /dev/null
@@ -1,93 +0,0 @@
-//
-// InterfaceCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Wed Sep 27 12:46:52 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-	using System;
-	using System.Collections;
-
-	using Mono.Cecil.Cil;
-
-	public sealed class InterfaceCollection : CollectionBase, IReflectionVisitable {
-
-		TypeDefinition m_container;
-
-		public TypeReference this [int index] {
-			get { return List [index] as TypeReference; }
-			set { List [index] = value; }
-		}
-
-		public TypeDefinition Container {
-			get { return m_container; }
-		}
-
-		public InterfaceCollection (TypeDefinition container)
-		{
-			m_container = container;
-		}
-
-		public void Add (TypeReference value)
-		{
-			List.Add (value);
-		}
-
-		public bool Contains (TypeReference value)
-		{
-			return List.Contains (value);
-		}
-
-		public int IndexOf (TypeReference value)
-		{
-			return List.IndexOf (value);
-		}
-
-		public void Insert (int index, TypeReference value)
-		{
-			List.Insert (index, value);
-		}
-
-		public void Remove (TypeReference value)
-		{
-			List.Remove (value);
-		}
-
-		protected override void OnValidate (object o)
-		{
-			if (! (o is TypeReference))
-				throw new ArgumentException ("Must be of type " + typeof (TypeReference).FullName);
-		}
-
-		public void Accept (IReflectionVisitor visitor)
-		{
-			visitor.VisitInterfaceCollection (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/LinkedResource.cs b/mcs/class/Mono.Cecil/Mono.Cecil/LinkedResource.cs
index 09d4588..a5530fc 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/LinkedResource.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/LinkedResource.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 - 2007 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -30,28 +30,31 @@ namespace Mono.Cecil {
 
 	public sealed class LinkedResource : Resource {
 
-		byte [] m_hash;
-		string m_file;
+		internal byte [] hash;
+		string file;
 
 		public byte [] Hash {
-			get { return m_hash; }
-			set { m_hash = value; }
+			get { return hash; }
 		}
 
 		public string File {
-			get { return m_file; }
-			set { m_file = value; }
+			get { return file; }
+			set { file = value; }
 		}
 
-		public LinkedResource (string name, ManifestResourceAttributes flags, string file) :
-			base (name, flags)
+		public override ResourceType ResourceType {
+			get { return ResourceType.Linked; }
+		}
+
+		public LinkedResource (string name, ManifestResourceAttributes flags)
+			: base (name, flags)
 		{
-			m_file = file;
 		}
 
-		public override void Accept (IReflectionStructureVisitor visitor)
+		public LinkedResource (string name, ManifestResourceAttributes flags, string file)
+			: base (name, flags)
 		{
-			visitor.VisitLinkedResource (this);
+			this.file = file;
 		}
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/ManifestResourceAttributes.cs b/mcs/class/Mono.Cecil/Mono.Cecil/ManifestResourceAttributes.cs
index 1d77f9f..d72d1d0 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/ManifestResourceAttributes.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/ManifestResourceAttributes.cs
@@ -1,10 +1,10 @@
 //
-// ManigestResourceAttributes.cs
+// ManifestResourceAttributes.cs
 //
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,12 +26,12 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
+using System;
 
-	using System;
+namespace Mono.Cecil {
 
 	[Flags]
-	public enum ManifestResourceAttributes {
+	public enum ManifestResourceAttributes : uint {
 		VisibilityMask	= 0x0007,
 		Public			= 0x0001,	// The resource is exported from the Assembly
 		Private			= 0x0002	 // The resource is private to the Assembly
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/MarshalInfo.cs b/mcs/class/Mono.Cecil/Mono.Cecil/MarshalInfo.cs
new file mode 100644
index 0000000..1fce23a
--- /dev/null
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/MarshalInfo.cs
@@ -0,0 +1,171 @@
+//
+// MarshalInfo.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+namespace Mono.Cecil {
+
+	public class MarshalInfo {
+
+		internal NativeType native;
+
+		public NativeType NativeType {
+			get { return native; }
+			set { native = value; }
+		}
+
+		public MarshalInfo (NativeType native)
+		{
+			this.native = native;
+		}
+	}
+
+	public sealed class ArrayMarshalInfo : MarshalInfo {
+
+		internal NativeType element_type;
+		internal int size_parameter_index;
+		internal int size;
+		internal int size_parameter_multiplier;
+
+		public NativeType ElementType {
+			get { return element_type; }
+			set { element_type = value; }
+		}
+
+		public int SizeParameterIndex {
+			get { return size_parameter_index; }
+			set { size_parameter_index = value; }
+		}
+
+		public int Size {
+			get { return size; }
+			set { size = value; }
+		}
+
+		public int SizeParameterMultiplier {
+			get { return size_parameter_multiplier; }
+			set { size_parameter_multiplier = value; }
+		}
+
+		public ArrayMarshalInfo ()
+			: base (NativeType.Array)
+		{
+			element_type = NativeType.None;
+			size_parameter_index = -1;
+			size = -1;
+			size_parameter_multiplier = -1;
+		}
+	}
+
+	public sealed class CustomMarshalInfo : MarshalInfo {
+
+		internal Guid guid;
+		internal string unmanaged_type;
+		internal TypeReference managed_type;
+		internal string cookie;
+
+		public Guid Guid {
+			get { return guid; }
+			set { guid = value; }
+		}
+
+		public string UnmanagedType {
+			get { return unmanaged_type; }
+			set { unmanaged_type = value; }
+		}
+
+		public TypeReference ManagedType {
+			get { return managed_type; }
+			set { managed_type = value; }
+		}
+
+		public string Cookie {
+			get { return cookie; }
+			set { cookie = value; }
+		}
+
+		public CustomMarshalInfo ()
+			: base (NativeType.CustomMarshaler)
+		{
+		}
+	}
+
+	public sealed class SafeArrayMarshalInfo : MarshalInfo {
+
+		internal VariantType element_type;
+
+		public VariantType ElementType {
+			get { return element_type; }
+			set { element_type = value; }
+		}
+
+		public SafeArrayMarshalInfo ()
+			: base (NativeType.SafeArray)
+		{
+			element_type = VariantType.None;
+		}
+	}
+
+	public sealed class FixedArrayMarshalInfo : MarshalInfo {
+
+		internal NativeType element_type;
+		internal int size;
+
+		public NativeType ElementType {
+			get { return element_type; }
+			set { element_type = value; }
+		}
+
+		public int Size {
+			get { return size; }
+			set { size = value; }
+		}
+
+		public FixedArrayMarshalInfo ()
+			: base (NativeType.FixedArray)
+		{
+			element_type = NativeType.None;
+		}
+	}
+
+	public sealed class FixedSysStringMarshalInfo : MarshalInfo {
+
+		internal int size;
+
+		public int Size {
+			get { return size; }
+			set { size = value; }
+		}
+
+		public FixedSysStringMarshalInfo ()
+			: base (NativeType.FixedSysString)
+		{
+			size = -1;
+		}
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/MarshalSpec.cs b/mcs/class/Mono.Cecil/Mono.Cecil/MarshalSpec.cs
deleted file mode 100644
index 0929446..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil/MarshalSpec.cs
+++ /dev/null
@@ -1,218 +0,0 @@
-//
-// MarshalDesc.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-	using System;
-
-	public class MarshalSpec {
-
-		NativeType m_natIntr;
-		IHasMarshalSpec m_container;
-
-		public NativeType NativeIntrinsic {
-			get { return m_natIntr; }
-			set { m_natIntr = value; }
-		}
-
-		public IHasMarshalSpec Container {
-			get { return m_container; }
-			set { m_container = value; }
-		}
-
-		public MarshalSpec (NativeType natIntr, IHasMarshalSpec container)
-		{
-			m_natIntr = natIntr;
-			m_container = container;
-		}
-
-		public virtual void Accept (IReflectionVisitor visitor)
-		{
-			visitor.VisitMarshalSpec (this);
-		}
-
-		public virtual MarshalSpec CloneInto (IHasMarshalSpec container)
-		{
-			return new MarshalSpec (m_natIntr, container);
-		}
-	}
-
-	public sealed class ArrayMarshalSpec : MarshalSpec {
-
-		NativeType m_elemType;
-		int m_paramNum;
-		int m_elemMult;
-		int m_numElem;
-
-		public NativeType ElemType {
-			get { return m_elemType; }
-			set { m_elemType = value; }
-		}
-
-		public int ParamNum {
-			get { return m_paramNum; }
-			set { m_paramNum = value; }
-		}
-
-		public int ElemMult {
-			get { return m_elemMult; }
-			set { m_elemMult = value; }
-		}
-
-		public int NumElem {
-			get { return m_numElem; }
-			set { m_numElem = value; }
-		}
-
-		public ArrayMarshalSpec (IHasMarshalSpec container) : base (NativeType.ARRAY, container)
-		{
-		}
-
-		public override MarshalSpec CloneInto (IHasMarshalSpec container)
-		{
-			ArrayMarshalSpec spec = new ArrayMarshalSpec (container);
-			spec.m_elemType = m_elemType;
-			spec.m_paramNum = m_paramNum;
-			spec.m_elemMult = m_elemMult;
-			spec.m_numElem = m_numElem;
-			return spec;
-		}
-	}
-
-	public sealed class CustomMarshalerSpec : MarshalSpec {
-
-		Guid m_guid;
-		string m_unmanagedType;
-		string m_managedType;
-		string m_cookie;
-
-		public Guid Guid {
-			get { return m_guid; }
-			set { m_guid = value; }
-		}
-
-		public String UnmanagedType {
-			get { return m_unmanagedType; }
-			set { m_unmanagedType = value; }
-		}
-
-		public string ManagedType {
-			get { return m_managedType; }
-			set { m_managedType = value; }
-		}
-
-		public string Cookie {
-			get { return m_cookie; }
-			set { m_cookie = value; }
-		}
-
-		public CustomMarshalerSpec (IHasMarshalSpec container) : base (NativeType.CUSTOMMARSHALER, container)
-		{
-		}
-
-		public override MarshalSpec CloneInto (IHasMarshalSpec container)
-		{
-			CustomMarshalerSpec spec = new CustomMarshalerSpec (container);
-			spec.m_guid = m_guid;
-			spec.m_unmanagedType = m_unmanagedType;
-			spec.m_managedType = m_managedType;
-			spec.m_cookie = m_cookie;
-			return spec;
-		}
-	}
-
-	public sealed class SafeArraySpec : MarshalSpec {
-
-		private VariantType m_elemType;
-
-		public VariantType ElemType {
-			get { return m_elemType; }
-			set { m_elemType = value; }
-		}
-
-		public SafeArraySpec (IHasMarshalSpec container) : base (NativeType.SAFEARRAY, container)
-		{
-		}
-
-		public override MarshalSpec CloneInto(IHasMarshalSpec container)
-		{
-			SafeArraySpec spec = new SafeArraySpec	(container);
-			spec.m_elemType = m_elemType;
-			return spec;
-		}
-	}
-
-	public sealed class FixedArraySpec : MarshalSpec {
-
-		private int m_numElem;
-		private NativeType m_elemType;
-
-		public int NumElem {
-			get { return m_numElem; }
-			set { m_numElem = value; }
-		}
-
-		public NativeType ElemType {
-			get { return m_elemType; }
-			set { m_elemType = value; }
-		}
-
-		public FixedArraySpec (IHasMarshalSpec container) : base (NativeType.FIXEDARRAY, container)
-		{
-		}
-
-		public override MarshalSpec CloneInto (IHasMarshalSpec container)
-		{
-			FixedArraySpec spec = new FixedArraySpec (container);
-			spec.m_numElem = m_numElem;
-			spec.m_elemType = m_elemType;
-			return spec;
-		}
-	}
-
-	public sealed class FixedSysStringSpec : MarshalSpec {
-
-		private int m_size;
-
-		public int Size {
-			get { return m_size; }
-			set { m_size = value; }
-		}
-
-		public FixedSysStringSpec (IHasMarshalSpec container) : base (NativeType.FIXEDSYSSTRING, container)
-		{
-		}
-
-		public override MarshalSpec CloneInto (IHasMarshalSpec container)
-		{
-			FixedSysStringSpec spec = new FixedSysStringSpec (container);
-			spec.m_size = m_size;
-			return spec;
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/MemberDefinitionCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil/MemberDefinitionCollection.cs
new file mode 100644
index 0000000..1e70302
--- /dev/null
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/MemberDefinitionCollection.cs
@@ -0,0 +1,92 @@
+//
+// MemberDefinitionCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+using Mono.Collections.Generic;
+
+namespace Mono.Cecil {
+
+	class MemberDefinitionCollection<T> : Collection<T> where T : IMemberDefinition {
+
+		TypeDefinition container;
+
+		internal MemberDefinitionCollection (TypeDefinition container)
+		{
+			this.container = container;
+		}
+
+		internal MemberDefinitionCollection (TypeDefinition container, int capacity)
+			: base (capacity)
+		{
+			this.container = container;
+		}
+
+		protected override void OnAdd (T item, int index)
+		{
+			Attach (item);
+		}
+
+		protected sealed override void OnSet (T item, int index)
+		{
+			Attach (item);
+		}
+
+		protected sealed override void OnInsert (T item, int index)
+		{
+			Attach (item);
+		}
+
+		protected sealed override void OnRemove (T item, int index)
+		{
+			Detach (item);
+		}
+
+		protected sealed override void OnClear ()
+		{
+			foreach (var definition in this)
+				Detach (definition);
+		}
+
+		void Attach (T element)
+		{
+			if (element.DeclaringType == container)
+				return;
+
+			if (element.DeclaringType != null)
+				throw new ArgumentException ("Member already attached");
+
+			element.DeclaringType = this.container;
+		}
+
+		static void Detach (T element)
+		{
+			element.DeclaringType = null;
+		}
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/MemberReference.cs b/mcs/class/Mono.Cecil/Mono.Cecil/MemberReference.cs
index 95fcb69..b3edf39 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/MemberReference.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/MemberReference.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -28,55 +28,74 @@
 
 namespace Mono.Cecil {
 
-	using System.Collections;
+	public abstract class MemberReference : IMetadataTokenProvider {
 
-	using Mono.Cecil.Metadata;
+		string name;
+		TypeReference declaring_type;
 
-	public abstract class MemberReference : IMemberReference {
-
-		string m_name;
-		TypeReference m_decType;
-		MetadataToken m_token;
-		IDictionary m_annotations;
+		internal MetadataToken token;
 
 		public virtual string Name {
-			get { return m_name; }
-			set { m_name = value; }
+			get { return name; }
+			set { name = value; }
+		}
+
+		public abstract string FullName {
+			get;
 		}
 
 		public virtual TypeReference DeclaringType {
-			get { return m_decType; }
-			set { m_decType = value; }
+			get { return declaring_type; }
+			set { declaring_type = value; }
 		}
 
 		public MetadataToken MetadataToken {
-			get { return m_token; }
-			set { m_token = value; }
+			get { return token; }
+			set { token = value; }
 		}
 
-		IDictionary IAnnotationProvider.Annotations {
+		internal bool HasImage {
 			get {
-				if (m_annotations == null)
-					m_annotations = new Hashtable ();
-				return m_annotations;
+				var module = Module;
+				if (module == null)
+					return false;
+
+				return module.HasImage;
 			}
 		}
 
-		public MemberReference (string name)
+		public virtual ModuleDefinition Module {
+			get { return declaring_type != null ? declaring_type.Module : null; }
+		}
+
+		public virtual bool IsDefinition {
+			get { return false; }
+		}
+
+		internal virtual bool ContainsGenericParameter {
+			get { return declaring_type != null && declaring_type.ContainsGenericParameter; }
+		}
+
+		internal MemberReference ()
 		{
-			m_name = name;
 		}
 
-		public override string ToString ()
+		internal MemberReference (string name)
 		{
-			if (m_decType == null)
-				return m_name;
+			this.name = name ?? string.Empty;
+		}
 
-			return string.Concat (m_decType.FullName, "::", m_name);
+		internal string MemberFullName ()
+		{
+			if (declaring_type == null)
+				return name;
+
+			return declaring_type.FullName + "::" + name;
 		}
 
-		public virtual void Accept (IReflectionVisitor visitor)
+		public override string ToString ()
 		{
+			return FullName;
 		}
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/MemberReferenceCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil/MemberReferenceCollection.cs
deleted file mode 100644
index fd69d6c..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil/MemberReferenceCollection.cs
+++ /dev/null
@@ -1,93 +0,0 @@
-//
-// MemberReferenceCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Wed Sep 27 12:46:53 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-	using System;
-	using System.Collections;
-
-	using Mono.Cecil.Cil;
-
-	public sealed class MemberReferenceCollection : CollectionBase, IReflectionVisitable {
-
-		ModuleDefinition m_container;
-
-		public MemberReference this [int index] {
-			get { return List [index] as MemberReference; }
-			set { List [index] = value; }
-		}
-
-		public ModuleDefinition Container {
-			get { return m_container; }
-		}
-
-		public MemberReferenceCollection (ModuleDefinition container)
-		{
-			m_container = container;
-		}
-
-		public void Add (MemberReference value)
-		{
-			List.Add (value);
-		}
-
-		public bool Contains (MemberReference value)
-		{
-			return List.Contains (value);
-		}
-
-		public int IndexOf (MemberReference value)
-		{
-			return List.IndexOf (value);
-		}
-
-		public void Insert (int index, MemberReference value)
-		{
-			List.Insert (index, value);
-		}
-
-		public void Remove (MemberReference value)
-		{
-			List.Remove (value);
-		}
-
-		protected override void OnValidate (object o)
-		{
-			if (! (o is MemberReference))
-				throw new ArgumentException ("Must be of type " + typeof (MemberReference).FullName);
-		}
-
-		public void Accept (IReflectionVisitor visitor)
-		{
-			visitor.VisitMemberReferenceCollection (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/MetadataResolver.cs b/mcs/class/Mono.Cecil/Mono.Cecil/MetadataResolver.cs
index af014bc..2ce1755 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/MetadataResolver.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/MetadataResolver.cs
@@ -1,11 +1,10 @@
-//
+//
 // MetadataResolver.cs
 //
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2008 Jb Evain (http://evain.net)
-// (C) 2008 Novell, Inc. (http://www.novell.com)
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -28,65 +27,110 @@
 //
 
 using System;
-using System.Collections;
+using System.Collections.Generic;
+
+using Mono.Collections.Generic;
 
 namespace Mono.Cecil {
 
-	class MetadataResolver {
+	public interface IAssemblyResolver {
+		AssemblyDefinition Resolve (AssemblyNameReference name);
+		AssemblyDefinition Resolve (AssemblyNameReference name, ReaderParameters parameters);
+
+		AssemblyDefinition Resolve (string fullName);
+		AssemblyDefinition Resolve (string fullName, ReaderParameters parameters);
+	}
+
+	public class ResolutionException : Exception {
 
-		AssemblyDefinition assembly;
+		readonly MemberReference member;
 
-		public IAssemblyResolver AssemblyResolver {
-			get { return assembly.Resolver; }
+		public MemberReference Member {
+			get { return member; }
 		}
 
-		public MetadataResolver (AssemblyDefinition assembly)
+		public ResolutionException (MemberReference member)
+			: base ("Failed to resolve " + member.FullName)
 		{
-			this.assembly = assembly;
+			this.member = member;
 		}
+	}
 
-		public TypeDefinition Resolve (TypeReference type)
-		{
-			type = type.GetOriginalType ();
+	static class MetadataResolver {
 
-			if (type is TypeDefinition)
-				return (TypeDefinition) type;
+		public static TypeDefinition Resolve (IAssemblyResolver resolver, TypeReference type)
+		{
+			type = type.GetElementType ();
 
-			AssemblyNameReference reference = type.Scope as AssemblyNameReference;
-			if (reference != null) {
-				AssemblyDefinition assembly = AssemblyResolver.Resolve (reference);
+			var scope = type.Scope;
+			switch (scope.MetadataScopeType) {
+			case MetadataScopeType.AssemblyNameReference:
+				var assembly = resolver.Resolve ((AssemblyNameReference) scope);
 				if (assembly == null)
 					return null;
 
-				return assembly.MainModule.Types [type.FullName];
+				return GetType (assembly.MainModule, type);
+			case MetadataScopeType.ModuleDefinition:
+				return GetType ((ModuleDefinition) scope, type);
+			case MetadataScopeType.ModuleReference:
+				var modules = type.Module.Assembly.Modules;
+				var module_ref = (ModuleReference) scope;
+				for (int i = 0; i < modules.Count; i++) {
+					var netmodule = modules [i];
+					if (netmodule.Name == module_ref.Name)
+						return GetType (netmodule, type);
+				}
+				break;
 			}
 
-			ModuleDefinition module = type.Scope as ModuleDefinition;
-			if (module != null)
-				return module.Types [type.FullName];
+			throw new NotSupportedException ();
+		}
 
-			ModuleReference mod_reference = type.Scope as ModuleReference;
-			if (mod_reference != null) {
-				foreach (ModuleDefinition netmodule in type.Module.Assembly.Modules)
-					if (netmodule.Name == mod_reference.Name)
-						return netmodule.Types [type.FullName];
-			}
+		static TypeDefinition GetType (ModuleDefinition module, TypeReference type)
+		{
+			if (!type.IsNested)
+				return module.GetType (type.Namespace, type.Name);
+
+			var declaring_type = type.DeclaringType.Resolve ();
+			if (declaring_type == null)
+				return null;
 
-			throw new NotImplementedException ();
+			return declaring_type.GetNestedType (type.Name);
 		}
 
-		public FieldDefinition Resolve (FieldReference field)
+		public static FieldDefinition Resolve (IAssemblyResolver resolver, FieldReference field)
 		{
-			TypeDefinition type = Resolve (field.DeclaringType);
+			var type = Resolve (resolver, field.DeclaringType);
 			if (type == null)
 				return null;
 
-			return type.HasFields ? GetField (type.Fields, field) : null;
+			if (!type.HasFields)
+				return null;
+
+			return GetField (resolver, type, field);
+		}
+
+		static FieldDefinition GetField (IAssemblyResolver resolver, TypeDefinition type, FieldReference reference)
+		{
+			while (type != null) {
+				var field = GetField (type.Fields, reference);
+				if (field != null)
+					return field;
+
+				if (type.BaseType == null)
+					return null;
+
+				type = Resolve (resolver, type.BaseType);
+			}
+
+			return null;
 		}
 
-		static FieldDefinition GetField (ICollection collection, FieldReference reference)
+		static FieldDefinition GetField (IList<FieldDefinition> fields, FieldReference reference)
 		{
-			foreach (FieldDefinition field in collection) {
+			for (int i = 0; i < fields.Count; i++) {
+				var field = fields [i];
+
 				if (field.Name != reference.Name)
 					continue;
 
@@ -99,104 +143,122 @@ namespace Mono.Cecil {
 			return null;
 		}
 
-		public MethodDefinition Resolve (MethodReference method)
+		public static MethodDefinition Resolve (IAssemblyResolver resolver, MethodReference method)
 		{
-			TypeDefinition type = Resolve (method.DeclaringType);
+			var type = Resolve (resolver, method.DeclaringType);
 			if (type == null)
 				return null;
 
-			method = method.GetOriginalMethod ();
-			if (method.Name == MethodDefinition.Cctor || method.Name == MethodDefinition.Ctor)
-				return type.HasConstructors ? GetMethod (type.Constructors, method) : null;
-			else
-				return type.HasMethods ? GetMethod (type, method) : null;
+			method = method.GetElementMethod ();
+
+			if (!type.HasMethods)
+				return null;
+
+			return GetMethod (resolver, type, method);
 		}
 
-		MethodDefinition GetMethod (TypeDefinition type, MethodReference reference)
+		static MethodDefinition GetMethod (IAssemblyResolver resolver, TypeDefinition type, MethodReference reference)
 		{
 			while (type != null) {
-				MethodDefinition method = GetMethod (type.Methods, reference);
-				if (method == null) {
-					if (type.BaseType == null)
-						return null;
-
-					type = Resolve (type.BaseType);
-				} else
+				var method = GetMethod (type.Methods, reference);
+				if (method != null)
 					return method;
+
+				if (type.BaseType == null)
+					return null;
+
+				type = Resolve (resolver, type.BaseType);
 			}
 
 			return null;
 		}
 
-		static MethodDefinition GetMethod (ICollection collection, MethodReference reference)
+		public static MethodDefinition GetMethod (IList<MethodDefinition> methods, MethodReference reference)
 		{
-			foreach (MethodDefinition meth in collection) {
-				if (meth.Name != reference.Name)
+			for (int i = 0; i < methods.Count; i++) {
+				var method = methods [i];
+
+				if (method.Name != reference.Name)
 					continue;
 
-				if (!AreSame (meth.ReturnType.ReturnType, reference.ReturnType.ReturnType))
+				if (!AreSame (method.ReturnType, reference.ReturnType))
 					continue;
 
-				if (meth.HasParameters != reference.HasParameters)
+				if (method.HasParameters != reference.HasParameters)
 					continue;
 
-				if (!meth.HasParameters && !reference.HasParameters)
-					return meth; //both have no parameters hence meth is the good one
+				if (!method.HasParameters && !reference.HasParameters)
+					return method;
 
-				if (!AreSame (meth.Parameters, reference.Parameters))
+				if (!AreSame (method.Parameters, reference.Parameters))
 					continue;
 
-				return meth;
+				return method;
 			}
 
 			return null;
 		}
 
-		static bool AreSame (ParameterDefinitionCollection a, ParameterDefinitionCollection b)
+		static bool AreSame (Collection<ParameterDefinition> a, Collection<ParameterDefinition> b)
 		{
-			if (a.Count != b.Count)
+			var count = a.Count;
+
+			if (count != b.Count)
 				return false;
 
-			if (a.Count == 0)
+			if (count == 0)
 				return true;
 
-			for (int i = 0; i < a.Count; i++)
+			for (int i = 0; i < count; i++)
 				if (!AreSame (a [i].ParameterType, b [i].ParameterType))
 					return false;
 
 			return true;
 		}
 
-		static bool AreSame (ModType a, ModType b)
+		static bool AreSame (TypeSpecification a, TypeSpecification b)
 		{
-			if (!AreSame (a.ModifierType, b.ModifierType))
+			if (!AreSame (a.ElementType, b.ElementType))
 				return false;
 
-			return AreSame (a.ElementType, b.ElementType);
+			if (a.IsGenericInstance)
+				return AreSame ((GenericInstanceType) a, (GenericInstanceType) b);
+
+			if (a.IsRequiredModifier || a.IsOptionalModifier)
+				return AreSame ((IModifierType) a, (IModifierType) b);
+
+			if (a.IsArray)
+				return AreSame ((ArrayType) a, (ArrayType) b);
+
+			return true;
 		}
 
-		static bool AreSame (TypeSpecification a, TypeSpecification b)
+		static bool AreSame (ArrayType a, ArrayType b)
 		{
-			if (a is GenericInstanceType)
-				return AreSame ((GenericInstanceType) a, (GenericInstanceType) b);
+			if (a.Rank != b.Rank)
+				return false;
 
-			if (a is ModType)
-				return AreSame ((ModType) a, (ModType) b);
+			// TODO: dimensions
+
+			return true;
+		}
 
-			return AreSame (a.ElementType, b.ElementType);
+		static bool AreSame (IModifierType a, IModifierType b)
+		{
+			return AreSame (a.ModifierType, b.ModifierType);
 		}
 
 		static bool AreSame (GenericInstanceType a, GenericInstanceType b)
 		{
-			if (!AreSame (a.ElementType, b.ElementType))
+			if (!a.HasGenericArguments)
+				return !b.HasGenericArguments;
+
+			if (!b.HasGenericArguments)
 				return false;
 
 			if (a.GenericArguments.Count != b.GenericArguments.Count)
 				return false;
 
-			if (a.GenericArguments.Count == 0)
-				return true;
-
 			for (int i = 0; i < a.GenericArguments.Count; i++)
 				if (!AreSame (a.GenericArguments [i], b.GenericArguments [i]))
 					return false;
@@ -211,19 +273,14 @@ namespace Mono.Cecil {
 
 		static bool AreSame (TypeReference a, TypeReference b)
 		{
-			if (a is TypeSpecification || b is TypeSpecification) {
-				if (a.GetType () != b.GetType ())
-					return false;
-
-				return AreSame ((TypeSpecification) a, (TypeSpecification) b);
-			}
-
-			if (a is GenericParameter || b is GenericParameter) {
-				if (a.GetType () != b.GetType ())
-					return false;
+			if (a.etype != b.etype)
+				return false;
 
+			if (a.IsGenericParameter)
 				return AreSame ((GenericParameter) a, (GenericParameter) b);
-			}
+
+			if (a.IsTypeSpecification ())
+				return AreSame ((TypeSpecification) a, (TypeSpecification) b);
 
 			return a.FullName == b.FullName;
 		}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/MetadataSystem.cs b/mcs/class/Mono.Cecil/Mono.Cecil/MetadataSystem.cs
new file mode 100644
index 0000000..e2196af
--- /dev/null
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/MetadataSystem.cs
@@ -0,0 +1,377 @@
+//
+// MetadataSystem.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections.Generic;
+
+using Mono.Cecil.Metadata;
+
+namespace Mono.Cecil {
+
+	struct Range {
+		public uint Start;
+		public uint Length;
+
+		public Range (uint index, uint length)
+		{
+			this.Start = index;
+			this.Length = length;
+		}
+	}
+
+	sealed class MetadataSystem {
+
+		internal TypeDefinition [] Types;
+		internal TypeReference [] TypeReferences;
+
+		internal FieldDefinition [] Fields;
+		internal MethodDefinition [] Methods;
+		internal MemberReference [] MemberReferences;
+
+		internal Dictionary<uint, uint []> NestedTypes;
+		internal Dictionary<uint, uint> ReverseNestedTypes;
+		internal Dictionary<uint, MetadataToken []> Interfaces;
+		internal Dictionary<uint, Row<ushort, uint>> ClassLayouts;
+		internal Dictionary<uint, uint> FieldLayouts;
+		internal Dictionary<uint, uint> FieldRVAs;
+		internal Dictionary<MetadataToken, uint> FieldMarshals;
+		internal Dictionary<MetadataToken, Row<ElementType, uint>> Constants;
+		internal Dictionary<uint, MetadataToken []> Overrides;
+		internal Dictionary<MetadataToken, Range> CustomAttributes;
+		internal Dictionary<MetadataToken, Range> SecurityDeclarations;
+		internal Dictionary<uint, Range> Events;
+		internal Dictionary<uint, Range> Properties;
+		internal Dictionary<uint, Row<MethodSemanticsAttributes, MetadataToken>> Semantics;
+		internal Dictionary<uint, Row<PInvokeAttributes, uint, uint>> PInvokes;
+		internal Dictionary<MetadataToken, Range> GenericParameters;
+		internal Dictionary<uint, MetadataToken []> GenericConstraints;
+
+		static Dictionary<string, Row<ElementType, bool>> primitive_value_types;
+
+		static void InitializePrimitives ()
+		{
+			primitive_value_types = new Dictionary<string, Row<ElementType, bool>> (18) {
+				{ "Void", new Row<ElementType, bool> (ElementType.Void, false) },
+				{ "Boolean", new Row<ElementType, bool> (ElementType.Boolean, true) },
+				{ "Char", new Row<ElementType, bool> (ElementType.Char, true) },
+				{ "SByte", new Row<ElementType, bool> (ElementType.I1, true) },
+				{ "Byte", new Row<ElementType, bool> (ElementType.U1, true) },
+				{ "Int16", new Row<ElementType, bool> (ElementType.I2, true) },
+				{ "UInt16", new Row<ElementType, bool> (ElementType.U2, true) },
+				{ "Int32", new Row<ElementType, bool> (ElementType.I4, true) },
+				{ "UInt32", new Row<ElementType, bool> (ElementType.U4, true) },
+				{ "Int64", new Row<ElementType, bool> (ElementType.I8, true) },
+				{ "UInt64", new Row<ElementType, bool> (ElementType.U8, true) },
+				{ "Single", new Row<ElementType, bool> (ElementType.R4, true) },
+				{ "Double", new Row<ElementType, bool> (ElementType.R8, true) },
+				{ "String", new Row<ElementType, bool> (ElementType.String, false) },
+				{ "TypedReference", new Row<ElementType, bool> (ElementType.TypedByRef, false) },
+				{ "IntPtr", new Row<ElementType, bool> (ElementType.I, true) },
+				{ "UIntPtr", new Row<ElementType, bool> (ElementType.U, true) },
+				{ "Object", new Row<ElementType, bool> (ElementType.Object, false) },
+			};
+		}
+
+		public static void TryProcessPrimitiveType (TypeReference type)
+		{
+			var scope = type.scope;
+			if (scope == null)
+				return;
+
+			if (scope.MetadataScopeType != MetadataScopeType.AssemblyNameReference)
+				return;
+
+			if (scope.Name != "mscorlib")
+				return;
+
+			if (type.Namespace != "System")
+				return;
+
+			if (primitive_value_types == null)
+				InitializePrimitives ();
+
+			Row<ElementType, bool> primitive_data;
+			if (!primitive_value_types.TryGetValue (type.Name, out primitive_data))
+				return;
+
+			type.etype = primitive_data.Col1;
+			type.IsValueType = primitive_data.Col2;
+		}
+
+		public void Clear ()
+		{
+			if (NestedTypes != null) NestedTypes.Clear ();
+			if (ReverseNestedTypes != null) ReverseNestedTypes.Clear ();
+			if (Interfaces != null) Interfaces.Clear ();
+			if (ClassLayouts != null) ClassLayouts.Clear ();
+			if (FieldLayouts != null) FieldLayouts.Clear ();
+			if (FieldRVAs != null) FieldRVAs.Clear ();
+			if (FieldMarshals != null) FieldMarshals.Clear ();
+			if (Constants != null) Constants.Clear ();
+			if (Overrides != null) Overrides.Clear ();
+			if (CustomAttributes != null) CustomAttributes.Clear ();
+			if (SecurityDeclarations != null) SecurityDeclarations.Clear ();
+			if (Events != null) Events.Clear ();
+			if (Properties != null) Properties.Clear ();
+			if (Semantics != null) Semantics.Clear ();
+			if (PInvokes != null) PInvokes.Clear ();
+			if (GenericParameters != null) GenericParameters.Clear ();
+			if (GenericConstraints != null) GenericConstraints.Clear ();
+		}
+
+		public TypeDefinition GetTypeDefinition (uint rid)
+		{
+			if (rid < 1 || rid > Types.Length)
+				return null;
+
+			return Types [rid - 1];
+		}
+
+		public void AddTypeDefinition (TypeDefinition type)
+		{
+			Types [type.token.RID - 1] = type;
+		}
+
+		public TypeReference GetTypeReference (uint rid)
+		{
+			if (rid < 1 || rid > TypeReferences.Length)
+				return null;
+
+			return TypeReferences [rid - 1];
+		}
+
+		public void AddTypeReference (TypeReference type)
+		{
+			TypeReferences [type.token.RID - 1] = type;
+		}
+
+		public FieldDefinition GetFieldDefinition (uint rid)
+		{
+			if (rid < 1 || rid > Fields.Length)
+				return null;
+
+			return Fields [rid - 1];
+		}
+
+		public void AddFieldDefinition (FieldDefinition field)
+		{
+			Fields [field.token.RID - 1] = field;
+		}
+
+		public MethodDefinition GetMethodDefinition (uint rid)
+		{
+			if (rid < 1 || rid > Methods.Length)
+				return null;
+
+			return Methods [rid - 1];
+		}
+
+		public void AddMethodDefinition (MethodDefinition method)
+		{
+			Methods [method.token.RID - 1] = method;
+		}
+
+		public MemberReference GetMemberReference (uint rid)
+		{
+			if (rid < 1 || rid > MemberReferences.Length)
+				return null;
+
+			return MemberReferences [rid - 1];
+		}
+
+		public void AddMemberReference (MemberReference member)
+		{
+			MemberReferences [member.token.RID - 1] = member;
+		}
+
+		public bool TryGetNestedTypeMapping (TypeDefinition type, out uint [] mapping)
+		{
+			return NestedTypes.TryGetValue (type.token.RID, out mapping);
+		}
+
+		public void SetNestedTypeMapping (uint type_rid, uint [] mapping)
+		{
+			NestedTypes [type_rid] = mapping;
+		}
+
+		public void RemoveNestedTypeMapping (TypeDefinition type)
+		{
+			NestedTypes.Remove (type.token.RID);
+		}
+
+		public bool TryGetReverseNestedTypeMapping (TypeDefinition type, out uint declaring)
+		{
+			return ReverseNestedTypes.TryGetValue (type.token.RID, out declaring);
+		}
+
+		public void SetReverseNestedTypeMapping (uint nested, uint declaring)
+		{
+			ReverseNestedTypes.Add (nested, declaring);
+		}
+
+		public void RemoveReverseNestedTypeMapping (TypeDefinition type)
+		{
+			ReverseNestedTypes.Remove (type.token.RID);
+		}
+
+		public bool TryGetInterfaceMapping (TypeDefinition type, out MetadataToken [] mapping)
+		{
+			return Interfaces.TryGetValue (type.token.RID, out mapping);
+		}
+
+		public void SetInterfaceMapping (uint type_rid, MetadataToken [] mapping)
+		{
+			Interfaces [type_rid] = mapping;
+		}
+
+		public void RemoveInterfaceMapping (TypeDefinition type)
+		{
+			Interfaces.Remove (type.token.RID);
+		}
+
+		public void AddPropertiesRange (uint type_rid, Range range)
+		{
+			Properties.Add (type_rid, range);
+		}
+
+		public bool TryGetPropertiesRange (TypeDefinition type, out Range range)
+		{
+			return Properties.TryGetValue (type.token.RID, out range);
+		}
+
+		public void RemovePropertiesRange (TypeDefinition type)
+		{
+			Properties.Remove (type.token.RID);
+		}
+
+		public void AddEventsRange (uint type_rid, Range range)
+		{
+			Events.Add (type_rid, range);
+		}
+
+		public bool TryGetEventsRange (TypeDefinition type, out Range range)
+		{
+			return Events.TryGetValue (type.token.RID, out range);
+		}
+
+		public void RemoveEventsRange (TypeDefinition type)
+		{
+			Events.Remove (type.token.RID);
+		}
+
+		public bool TryGetGenericParameterRange (IGenericParameterProvider owner, out Range range)
+		{
+			return GenericParameters.TryGetValue (owner.MetadataToken, out range);
+		}
+
+		public void RemoveGenericParameterRange (IGenericParameterProvider owner)
+		{
+			GenericParameters.Remove (owner.MetadataToken);
+		}
+
+		public bool TryGetCustomAttributeRange (ICustomAttributeProvider owner, out Range range)
+		{
+			return CustomAttributes.TryGetValue (owner.MetadataToken, out range);
+		}
+
+		public void RemoveCustomAttributeRange (ICustomAttributeProvider owner)
+		{
+			CustomAttributes.Remove (owner.MetadataToken);
+		}
+
+		public bool TryGetSecurityDeclarationRange (ISecurityDeclarationProvider owner, out Range range)
+		{
+			return SecurityDeclarations.TryGetValue (owner.MetadataToken, out range);
+		}
+
+		public void RemoveSecurityDeclarationRange (ISecurityDeclarationProvider owner)
+		{
+			SecurityDeclarations.Remove (owner.MetadataToken);
+		}
+
+		public bool TryGetGenericConstraintMapping (GenericParameter generic_parameter, out MetadataToken [] mapping)
+		{
+			return GenericConstraints.TryGetValue (generic_parameter.token.RID, out mapping);
+		}
+
+		public void SetGenericConstraintMapping (uint gp_rid, MetadataToken [] mapping)
+		{
+			GenericConstraints [gp_rid] = mapping;
+		}
+
+		public void RemoveGenericConstraintMapping (GenericParameter generic_parameter)
+		{
+			GenericConstraints.Remove (generic_parameter.token.RID);
+		}
+
+		public bool TryGetOverrideMapping (MethodDefinition method, out MetadataToken [] mapping)
+		{
+			return Overrides.TryGetValue (method.token.RID, out mapping);
+		}
+
+		public void SetOverrideMapping (uint rid, MetadataToken [] mapping)
+		{
+			Overrides [rid] = mapping;
+		}
+
+		public void RemoveOverrideMapping (MethodDefinition method)
+		{
+			Overrides.Remove (method.token.RID);
+		}
+
+		public TypeDefinition GetFieldDeclaringType (uint field_rid)
+		{
+			return BinaryRangeSearch (Types, field_rid, true);
+		}
+
+		public TypeDefinition GetMethodDeclaringType (uint method_rid)
+		{
+			return BinaryRangeSearch (Types, method_rid, false);
+		}
+
+		static TypeDefinition BinaryRangeSearch (TypeDefinition [] types, uint rid, bool field)
+		{
+			int min = 0;
+			int max = types.Length - 1;
+			while (min <= max) {
+				int mid = min + ((max - min) / 2);
+				var type = types [mid];
+				var range = field ? type.fields_range : type.methods_range;
+
+				if (rid < range.Start)
+					max = mid - 1;
+				else if (rid >= range.Start + range.Length)
+					min = mid + 1;
+				else
+					return type;
+			}
+
+			return null;
+		}
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/MethodAttributes.cs b/mcs/class/Mono.Cecil/Mono.Cecil/MethodAttributes.cs
index b04cbda..3446702 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/MethodAttributes.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/MethodAttributes.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,17 +26,17 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
+using System;
 
-	using System;
+namespace Mono.Cecil {
 
 	[Flags]
 	public enum MethodAttributes : ushort {
 		MemberAccessMask	= 0x0007,
-		Compilercontrolled	= 0x0000,	// Member not referenceable
+		CompilerControlled	= 0x0000,	// Member not referenceable
 		Private				= 0x0001,	// Accessible only by the parent type
 		FamANDAssem			= 0x0002,	// Accessible by sub-types only in this Assembly
-		Assem				= 0x0003,	// Accessibly by anyone in the Assembly
+		Assembly				= 0x0003,	// Accessibly by anyone in the Assembly
 		Family				= 0x0004,	// Accessible only by type and sub-types
 		FamORAssem			= 0x0005,	// Accessibly by sub-types anywhere, plus anyone in assembly
 		Public				= 0x0006,	// Accessibly by anyone who has visibility to this scope
@@ -50,7 +50,7 @@ namespace Mono.Cecil {
 		ReuseSlot			= 0x0000,	// Method reuses existing slot in vtable
 		NewSlot				= 0x0100,	// Method always gets a new slot in the vtable
 
-		Strict 				= 0x0200,   // Method can only be overriden if also accessible
+		CheckAccessOnOverride = 0x0200,   // Method can only be overriden if also accessible
 		Abstract			= 0x0400,	// Method does not provide an implementation
 		SpecialName			= 0x0800,	// Method is special
 
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/MethodCallingConvention.cs b/mcs/class/Mono.Cecil/Mono.Cecil/MethodCallingConvention.cs
index 0eb6088..c96dc1c 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/MethodCallingConvention.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/MethodCallingConvention.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -35,6 +35,6 @@ namespace Mono.Cecil {
 		ThisCall	= 0x3,
 		FastCall	= 0x4,
 		VarArg		= 0x5,
-		Generic		= 0x10
+		Generic		= 0x10,
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/MethodDefinition.cs b/mcs/class/Mono.Cecil/Mono.Cecil/MethodDefinition.cs
index 9b0f152..3b74e5a 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/MethodDefinition.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/MethodDefinition.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,314 +26,287 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
+using Mono.Cecil.Cil;
+using Mono.Collections.Generic;
+
+using RVA = System.UInt32;
 
-	using Mono.Cecil.Binary;
-	using Mono.Cecil.Cil;
+namespace Mono.Cecil {
 
-	public sealed class MethodDefinition : MethodReference, IMemberDefinition,
-		IHasSecurity, ICustomAttributeProvider {
+	public sealed class MethodDefinition : MethodReference, IMemberDefinition, ISecurityDeclarationProvider {
 
-		public const string Cctor = ".cctor";
-		public const string Ctor = ".ctor";
+		ushort attributes;
+		ushort impl_attributes;
+		internal MethodSemanticsAttributes? sem_attrs;
+		Collection<CustomAttribute> custom_attributes;
+		Collection<SecurityDeclaration> security_declarations;
 
-		MethodAttributes m_attributes;
-		MethodImplAttributes m_implAttrs;
-		MethodSemanticsAttributes m_semAttrs;
-		SecurityDeclarationCollection m_secDecls;
-		CustomAttributeCollection m_customAttrs;
+		internal RVA rva;
+		internal PInvokeInfo pinvoke;
+		Collection<MethodReference> overrides;
 
-		MethodBody m_body;
-		RVA m_rva;
-		OverrideCollection m_overrides;
-		PInvokeInfo m_pinvoke;
-		readonly ParameterDefinition m_this;
+		internal MethodBody body;
 
 		public MethodAttributes Attributes {
-			get { return m_attributes; }
-			set { m_attributes = value; }
+			get { return (MethodAttributes) attributes; }
+			set { attributes = (ushort) value; }
 		}
 
 		public MethodImplAttributes ImplAttributes {
-			get { return m_implAttrs; }
-			set { m_implAttrs = value; }
+			get { return (MethodImplAttributes) impl_attributes; }
+			set { impl_attributes = (ushort) value; }
 		}
 
 		public MethodSemanticsAttributes SemanticsAttributes {
-			get { return m_semAttrs; }
-			set { m_semAttrs = value; }
+			get {
+				if (sem_attrs.HasValue)
+					return sem_attrs.Value;
+
+				if (HasImage) {
+					ReadSemantics ();
+					return sem_attrs.Value;
+				}
+
+				sem_attrs = MethodSemanticsAttributes.None;
+				return sem_attrs.Value;
+			}
+			set { sem_attrs = value; }
 		}
 
-		public bool HasSecurityDeclarations {
-			get { return (m_secDecls == null) ? false : (m_secDecls.Count > 0); }
+		internal void ReadSemantics ()
+		{
+			if (sem_attrs.HasValue)
+				return;
+
+			var module = this.Module;
+			if (module == null)
+				return;
+
+			if (!module.HasImage)
+				return;
+
+			module.Read (this, (method, reader) => reader.ReadAllSemantics (method));
 		}
 
-		public SecurityDeclarationCollection SecurityDeclarations {
+		public bool HasSecurityDeclarations {
 			get {
-				if (m_secDecls == null)
-					m_secDecls = new SecurityDeclarationCollection (this);
+				if (security_declarations != null)
+					return security_declarations.Count > 0;
 
-				return m_secDecls;
+				return this.GetHasSecurityDeclarations (Module);
 			}
 		}
 
-		public bool HasCustomAttributes {
-			get { return (m_customAttrs == null) ? false : (m_customAttrs.Count > 0); }
+		public Collection<SecurityDeclaration> SecurityDeclarations {
+			get { return security_declarations ?? (security_declarations = this.GetSecurityDeclarations (Module)); }
 		}
 
-		public CustomAttributeCollection CustomAttributes {
+		public bool HasCustomAttributes {
 			get {
-				if (m_customAttrs == null)
-					m_customAttrs = new CustomAttributeCollection (this);
+				if (custom_attributes != null)
+					return custom_attributes.Count > 0;
 
-				return m_customAttrs;
+				return this.GetHasCustomAttributes (Module);
 			}
 		}
 
-		public RVA RVA {
-			get { return m_rva; }
-			set { m_rva = value; }
+		public Collection<CustomAttribute> CustomAttributes {
+			get { return custom_attributes ?? (custom_attributes = this.GetCustomAttributes (Module)); }
+		}
+
+		public int RVA {
+			get { return (int) rva; }
+		}
+
+		public bool HasBody {
+			get {
+				return (attributes & (ushort) MethodAttributes.Abstract) == 0 &&
+					(attributes & (ushort) MethodAttributes.PInvokeImpl) == 0 &&
+					(impl_attributes & (ushort) MethodImplAttributes.InternalCall) == 0 &&
+					(impl_attributes & (ushort) MethodImplAttributes.Native) == 0 &&
+					(impl_attributes & (ushort) MethodImplAttributes.Unmanaged) == 0 &&
+					(impl_attributes & (ushort) MethodImplAttributes.Runtime) == 0;
+			}
 		}
 
 		public MethodBody Body {
 			get {
-				LoadBody ();
-				return m_body;
+				if (body != null)
+					return body;
+
+				if (!HasBody)
+					return null;
+
+				if (HasImage && rva != 0)
+					return body = Module.Read (this, (method, reader) => reader.ReadMethodBody (method));
+
+				return body = new MethodBody (this);
+			}
+			set { body = value; }
+		}
+
+		public bool HasPInvokeInfo {
+			get {
+				if (pinvoke != null)
+					return true;
+
+				return IsPInvokeImpl;
 			}
-			set { m_body = value; }
 		}
 
 		public PInvokeInfo PInvokeInfo {
-			get { return m_pinvoke; }
-			set { m_pinvoke = value; }
+			get {
+				if (pinvoke != null)
+					return pinvoke;
+
+				if (HasImage && IsPInvokeImpl)
+					return pinvoke = Module.Read (this, (method, reader) => reader.ReadPInvokeInfo (method));
+
+				return null;
+			}
+			set {
+				IsPInvokeImpl = true;
+				pinvoke = value;
+			}
 		}
 
 		public bool HasOverrides {
-			get { return (m_overrides == null) ? false : (m_overrides.Count > 0); }
+			get {
+				if (overrides != null)
+					return overrides.Count > 0;
+
+				if (HasImage)
+					return Module.Read (this, (method, reader) => reader.HasOverrides (method));
+
+				return false;
+			}
 		}
 
-		public OverrideCollection Overrides {
+		public Collection<MethodReference> Overrides {
 			get {
-				if (m_overrides == null)
-					m_overrides = new OverrideCollection (this);
+				if (overrides != null)
+					return overrides;
 
-				return m_overrides;
+				if (HasImage)
+					return overrides = Module.Read (this, (method, reader) => reader.ReadOverrides (method));
+
+				return overrides = new Collection<MethodReference> ();
+			}
+		}
+
+		public override bool HasGenericParameters {
+			get {
+				if (generic_parameters != null)
+					return generic_parameters.Count > 0;
+
+				return this.GetHasGenericParameters (Module);
 			}
 		}
 
-		public ParameterDefinition This {
-			get { return m_this; }
+		public override Collection<GenericParameter> GenericParameters {
+			get { return generic_parameters ?? (generic_parameters = this.GetGenericParameters (Module)); }
 		}
 
 		#region MethodAttributes
 
 		public bool IsCompilerControlled {
-			get { return (m_attributes & MethodAttributes.MemberAccessMask) == MethodAttributes.Compilercontrolled; }
-			set {
-				if (value) {
-					m_attributes &= ~MethodAttributes.MemberAccessMask;
-					m_attributes |= MethodAttributes.Compilercontrolled;
-				} else
-					m_attributes &= ~(MethodAttributes.MemberAccessMask & MethodAttributes.Compilercontrolled);
-			}
+			get { return attributes.GetMaskedAttributes ((ushort) MethodAttributes.MemberAccessMask, (ushort) MethodAttributes.CompilerControlled); }
+			set { attributes = attributes.SetMaskedAttributes ((ushort) MethodAttributes.MemberAccessMask, (ushort) MethodAttributes.CompilerControlled, value); }
 		}
 
 		public bool IsPrivate {
-			get { return (m_attributes & MethodAttributes.MemberAccessMask) == MethodAttributes.Private; }
-			set {
-				if (value) {
-					m_attributes &= ~MethodAttributes.MemberAccessMask;
-					m_attributes |= MethodAttributes.Private;
-				} else
-					m_attributes &= ~(MethodAttributes.MemberAccessMask & MethodAttributes.Private);
-			}
+			get { return attributes.GetMaskedAttributes ((ushort) MethodAttributes.MemberAccessMask, (ushort) MethodAttributes.Private); }
+			set { attributes = attributes.SetMaskedAttributes ((ushort) MethodAttributes.MemberAccessMask, (ushort) MethodAttributes.Private, value); }
 		}
 
 		public bool IsFamilyAndAssembly {
-			get { return (m_attributes & MethodAttributes.MemberAccessMask) == MethodAttributes.FamANDAssem; }
-			set {
-				if (value) {
-					m_attributes &= ~MethodAttributes.MemberAccessMask;
-					m_attributes |= MethodAttributes.FamANDAssem;
-				} else
-					m_attributes &= ~(MethodAttributes.MemberAccessMask & MethodAttributes.FamANDAssem);
-			}
+			get { return attributes.GetMaskedAttributes ((ushort) MethodAttributes.MemberAccessMask, (ushort) MethodAttributes.FamANDAssem); }
+			set { attributes = attributes.SetMaskedAttributes ((ushort) MethodAttributes.MemberAccessMask, (ushort) MethodAttributes.FamANDAssem, value); }
 		}
 
 		public bool IsAssembly {
-			get { return (m_attributes & MethodAttributes.MemberAccessMask) == MethodAttributes.Assem; }
-			set {
-				if (value) {
-					m_attributes &= ~MethodAttributes.MemberAccessMask;
-					m_attributes |= MethodAttributes.Assem;
-				} else
-					m_attributes &= ~(MethodAttributes.MemberAccessMask & MethodAttributes.Assem);
-			}
+			get { return attributes.GetMaskedAttributes ((ushort) MethodAttributes.MemberAccessMask, (ushort) MethodAttributes.Assembly); }
+			set { attributes = attributes.SetMaskedAttributes ((ushort) MethodAttributes.MemberAccessMask, (ushort) MethodAttributes.Assembly, value); }
 		}
 
 		public bool IsFamily {
-			get { return (m_attributes & MethodAttributes.MemberAccessMask) == MethodAttributes.Family; }
-			set {
-				if (value) {
-					m_attributes &= ~MethodAttributes.MemberAccessMask;
-					m_attributes |= MethodAttributes.Family;
-				} else
-					m_attributes &= ~(MethodAttributes.MemberAccessMask & MethodAttributes.Family);
-			}
+			get { return attributes.GetMaskedAttributes ((ushort) MethodAttributes.MemberAccessMask, (ushort) MethodAttributes.Family); }
+			set { attributes = attributes.SetMaskedAttributes ((ushort) MethodAttributes.MemberAccessMask, (ushort) MethodAttributes.Family, value); }
 		}
 
 		public bool IsFamilyOrAssembly {
-			get { return (m_attributes & MethodAttributes.MemberAccessMask) == MethodAttributes.FamORAssem; }
-			set {
-				if (value) {
-					m_attributes &= ~MethodAttributes.MemberAccessMask;
-					m_attributes |= MethodAttributes.FamORAssem;
-				} else
-					m_attributes &= ~(MethodAttributes.MemberAccessMask & MethodAttributes.FamORAssem);
-			}
+			get { return attributes.GetMaskedAttributes ((ushort) MethodAttributes.MemberAccessMask, (ushort) MethodAttributes.FamORAssem); }
+			set { attributes = attributes.SetMaskedAttributes ((ushort) MethodAttributes.MemberAccessMask, (ushort) MethodAttributes.FamORAssem, value); }
 		}
 
 		public bool IsPublic {
-			get { return (m_attributes & MethodAttributes.MemberAccessMask) == MethodAttributes.Public; }
-			set {
-				if (value) {
-					m_attributes &= ~MethodAttributes.MemberAccessMask;
-					m_attributes |= MethodAttributes.Public;
-				} else
-					m_attributes &= ~(MethodAttributes.MemberAccessMask & MethodAttributes.Public);
-			}
+			get { return attributes.GetMaskedAttributes ((ushort) MethodAttributes.MemberAccessMask, (ushort) MethodAttributes.Public); }
+			set { attributes = attributes.SetMaskedAttributes ((ushort) MethodAttributes.MemberAccessMask, (ushort) MethodAttributes.Public, value); }
 		}
 
 		public bool IsStatic {
-			get { return (m_attributes & MethodAttributes.Static) != 0; }
-			set {
-				if (value)
-					m_attributes |= MethodAttributes.Static;
-				else
-					m_attributes &= ~MethodAttributes.Static;
-			}
+			get { return attributes.GetAttributes ((ushort) MethodAttributes.Static); }
+			set { attributes = attributes.SetAttributes ((ushort) MethodAttributes.Static, value); }
 		}
 
 		public bool IsFinal {
-			get { return (m_attributes & MethodAttributes.Final) != 0; }
-			set {
-				if (value)
-					m_attributes |= MethodAttributes.Final;
-				else
-					m_attributes &= ~MethodAttributes.Final;
-			}
+			get { return attributes.GetAttributes ((ushort) MethodAttributes.Final); }
+			set { attributes = attributes.SetAttributes ((ushort) MethodAttributes.Final, value); }
 		}
 
 		public bool IsVirtual {
-			get { return (m_attributes & MethodAttributes.Virtual) != 0; }
-			set {
-				if (value)
-					m_attributes |= MethodAttributes.Virtual;
-				else
-					m_attributes &= ~MethodAttributes.Virtual;
-			}
+			get { return attributes.GetAttributes ((ushort) MethodAttributes.Virtual); }
+			set { attributes = attributes.SetAttributes ((ushort) MethodAttributes.Virtual, value); }
 		}
 
 		public bool IsHideBySig {
-			get { return (m_attributes & MethodAttributes.HideBySig) != 0; }
-			set {
-				if (value)
-					m_attributes |= MethodAttributes.HideBySig;
-				else
-					m_attributes &= ~MethodAttributes.HideBySig;
-			}
+			get { return attributes.GetAttributes ((ushort) MethodAttributes.HideBySig); }
+			set { attributes = attributes.SetAttributes ((ushort) MethodAttributes.HideBySig, value); }
 		}
 
 		public bool IsReuseSlot {
-			get { return (m_attributes & MethodAttributes.VtableLayoutMask) == MethodAttributes.ReuseSlot; }
-			set {
-				if (value) {
-					m_attributes &= ~MethodAttributes.VtableLayoutMask;
-					m_attributes |= MethodAttributes.ReuseSlot;
-				} else
-					m_attributes &= ~(MethodAttributes.VtableLayoutMask & MethodAttributes.ReuseSlot);
-			}
+			get { return attributes.GetMaskedAttributes ((ushort) MethodAttributes.VtableLayoutMask, (ushort) MethodAttributes.ReuseSlot); }
+			set { attributes = attributes.SetMaskedAttributes ((ushort) MethodAttributes.VtableLayoutMask, (ushort) MethodAttributes.ReuseSlot, value); }
 		}
 
 		public bool IsNewSlot {
-			get { return (m_attributes & MethodAttributes.VtableLayoutMask) == MethodAttributes.NewSlot; }
-			set {
-				if (value) {
-					m_attributes &= ~MethodAttributes.VtableLayoutMask;
-					m_attributes |= MethodAttributes.NewSlot;
-				} else
-					m_attributes &= ~(MethodAttributes.VtableLayoutMask & MethodAttributes.NewSlot);
-			}
+			get { return attributes.GetMaskedAttributes ((ushort) MethodAttributes.VtableLayoutMask, (ushort) MethodAttributes.NewSlot); }
+			set { attributes = attributes.SetMaskedAttributes ((ushort) MethodAttributes.VtableLayoutMask, (ushort) MethodAttributes.NewSlot, value); }
 		}
 
-		public bool IsStrict {
-			get { return (m_attributes & MethodAttributes.Strict) != 0; }
-			set {
-				if (value)
-					m_attributes |= MethodAttributes.Strict;
-				else
-					m_attributes &= ~MethodAttributes.Strict;
-			}
+		public bool IsCheckAccessOnOverride {
+			get { return attributes.GetAttributes ((ushort) MethodAttributes.CheckAccessOnOverride); }
+			set { attributes = attributes.SetAttributes ((ushort) MethodAttributes.CheckAccessOnOverride, value); }
 		}
 
 		public bool IsAbstract {
-			get { return (m_attributes & MethodAttributes.Abstract) != 0; }
-			set {
-				if (value)
-					m_attributes |= MethodAttributes.Abstract;
-				else
-					m_attributes &= ~MethodAttributes.Abstract;
-			}
+			get { return attributes.GetAttributes ((ushort) MethodAttributes.Abstract); }
+			set { attributes = attributes.SetAttributes ((ushort) MethodAttributes.Abstract, value); }
 		}
 
 		public bool IsSpecialName {
-			get { return (m_attributes & MethodAttributes.SpecialName) != 0; }
-			set {
-				if (value)
-					m_attributes |= MethodAttributes.SpecialName;
-				else
-					m_attributes &= ~MethodAttributes.SpecialName;
-			}
+			get { return attributes.GetAttributes ((ushort) MethodAttributes.SpecialName); }
+			set { attributes = attributes.SetAttributes ((ushort) MethodAttributes.SpecialName, value); }
 		}
 
 		public bool IsPInvokeImpl {
-			get { return (m_attributes & MethodAttributes.PInvokeImpl) != 0; }
-			set {
-				if (value)
-					m_attributes |= MethodAttributes.PInvokeImpl;
-				else
-					m_attributes &= ~MethodAttributes.PInvokeImpl;
-			}
+			get { return attributes.GetAttributes ((ushort) MethodAttributes.PInvokeImpl); }
+			set { attributes = attributes.SetAttributes ((ushort) MethodAttributes.PInvokeImpl, value); }
 		}
 
 		public bool IsUnmanagedExport {
-			get { return (m_attributes & MethodAttributes.UnmanagedExport) != 0; }
-			set {
-				if (value)
-					m_attributes |= MethodAttributes.UnmanagedExport;
-				else
-					m_attributes &= ~MethodAttributes.UnmanagedExport;
-			}
+			get { return attributes.GetAttributes ((ushort) MethodAttributes.UnmanagedExport); }
+			set { attributes = attributes.SetAttributes ((ushort) MethodAttributes.UnmanagedExport, value); }
 		}
 
 		public bool IsRuntimeSpecialName {
-			get { return (m_attributes & MethodAttributes.RTSpecialName) != 0; }
-			set {
-				if (value)
-					m_attributes |= MethodAttributes.RTSpecialName;
-				else
-					m_attributes &= ~MethodAttributes.RTSpecialName;
-			}
+			get { return attributes.GetAttributes ((ushort) MethodAttributes.RTSpecialName); }
+			set { attributes = attributes.SetAttributes ((ushort) MethodAttributes.RTSpecialName, value); }
 		}
 
 		public bool HasSecurity {
-			get { return (m_attributes & MethodAttributes.HasSecurity) != 0; }
-			set {
-				if (value)
-					m_attributes |= MethodAttributes.HasSecurity;
-				else
-					m_attributes &= ~MethodAttributes.HasSecurity;
-			}
+			get { return attributes.GetAttributes ((ushort) MethodAttributes.HasSecurity); }
+			set { attributes = attributes.SetAttributes ((ushort) MethodAttributes.HasSecurity, value); }
 		}
 
 		#endregion
@@ -341,313 +314,174 @@ namespace Mono.Cecil {
 		#region MethodImplAttributes
 
 		public bool IsIL {
-			get { return (m_implAttrs & MethodImplAttributes.CodeTypeMask) == MethodImplAttributes.IL; }
-			set {
-				if (value) {
-					m_implAttrs &= ~MethodImplAttributes.CodeTypeMask;
-					m_implAttrs |= MethodImplAttributes.IL;
-				} else
-					m_implAttrs &= ~(MethodImplAttributes.CodeTypeMask & MethodImplAttributes.IL);
-			}
+			get { return impl_attributes.GetMaskedAttributes ((ushort) MethodImplAttributes.CodeTypeMask, (ushort) MethodImplAttributes.IL); }
+			set { impl_attributes = impl_attributes.SetMaskedAttributes ((ushort) MethodImplAttributes.CodeTypeMask, (ushort) MethodImplAttributes.IL, value); }
 		}
 
 		public bool IsNative {
-			get { return (m_implAttrs & MethodImplAttributes.CodeTypeMask) == MethodImplAttributes.Native; }
-			set {
-				if (value) {
-					m_implAttrs &= ~MethodImplAttributes.CodeTypeMask;
-					m_implAttrs |= MethodImplAttributes.Native;
-				} else
-					m_implAttrs &= ~(MethodImplAttributes.CodeTypeMask & MethodImplAttributes.Native);
-			}
+			get { return impl_attributes.GetMaskedAttributes ((ushort) MethodImplAttributes.CodeTypeMask, (ushort) MethodImplAttributes.Native); }
+			set { impl_attributes = impl_attributes.SetMaskedAttributes ((ushort) MethodImplAttributes.CodeTypeMask, (ushort) MethodImplAttributes.Native, value); }
 		}
 
 		public bool IsRuntime {
-			get { return (m_implAttrs & MethodImplAttributes.CodeTypeMask) == MethodImplAttributes.Runtime; }
-			set {
-				if (value) {
-					m_implAttrs &= ~MethodImplAttributes.CodeTypeMask;
-					m_implAttrs |= MethodImplAttributes.Runtime;
-				} else
-					m_implAttrs &= ~(MethodImplAttributes.CodeTypeMask & MethodImplAttributes.Runtime);
-			}
+			get { return impl_attributes.GetMaskedAttributes ((ushort) MethodImplAttributes.CodeTypeMask, (ushort) MethodImplAttributes.Runtime); }
+			set { impl_attributes = impl_attributes.SetMaskedAttributes ((ushort) MethodImplAttributes.CodeTypeMask, (ushort) MethodImplAttributes.Runtime, value); }
 		}
 
 		public bool IsUnmanaged {
-			get { return (m_implAttrs & MethodImplAttributes.ManagedMask) == MethodImplAttributes.Unmanaged; }
-			set {
-				if (value) {
-					m_implAttrs &= ~MethodImplAttributes.ManagedMask;
-					m_implAttrs |= MethodImplAttributes.Unmanaged;
-				} else
-					m_implAttrs &= ~(MethodImplAttributes.ManagedMask & MethodImplAttributes.Unmanaged);
-			}
+			get { return impl_attributes.GetMaskedAttributes ((ushort) MethodImplAttributes.ManagedMask, (ushort) MethodImplAttributes.Unmanaged); }
+			set { impl_attributes = impl_attributes.SetMaskedAttributes ((ushort) MethodImplAttributes.ManagedMask, (ushort) MethodImplAttributes.Unmanaged, value); }
 		}
 
 		public bool IsManaged {
-			get { return (m_implAttrs & MethodImplAttributes.ManagedMask) == MethodImplAttributes.Managed; }
-			set {
-				if (value) {
-					m_implAttrs &= ~MethodImplAttributes.ManagedMask;
-					m_implAttrs |= MethodImplAttributes.Managed;
-				} else
-					m_implAttrs &= ~(MethodImplAttributes.ManagedMask & MethodImplAttributes.Managed);
-			}
+			get { return impl_attributes.GetMaskedAttributes ((ushort) MethodImplAttributes.ManagedMask, (ushort) MethodImplAttributes.Managed); }
+			set { impl_attributes = impl_attributes.SetMaskedAttributes ((ushort) MethodImplAttributes.ManagedMask, (ushort) MethodImplAttributes.Managed, value); }
 		}
 
 		public bool IsForwardRef {
-			get { return (m_implAttrs & MethodImplAttributes.ForwardRef) != 0; }
-			set {
-				if (value)
-					m_implAttrs |= MethodImplAttributes.ForwardRef;
-				else
-					m_implAttrs &= ~MethodImplAttributes.ForwardRef;
-			}
+			get { return impl_attributes.GetAttributes ((ushort) MethodImplAttributes.ForwardRef); }
+			set { impl_attributes = impl_attributes.SetAttributes ((ushort) MethodImplAttributes.ForwardRef, value); }
 		}
 
 		public bool IsPreserveSig {
-			get { return (m_implAttrs & MethodImplAttributes.PreserveSig) != 0; }
-			set {
-				if (value)
-					m_implAttrs |= MethodImplAttributes.PreserveSig;
-				else
-					m_implAttrs &= ~MethodImplAttributes.PreserveSig;
-			}
+			get { return impl_attributes.GetAttributes ((ushort) MethodImplAttributes.PreserveSig); }
+			set { impl_attributes = impl_attributes.SetAttributes ((ushort) MethodImplAttributes.PreserveSig, value); }
 		}
 
 		public bool IsInternalCall {
-			get { return (m_implAttrs & MethodImplAttributes.InternalCall) != 0; }
-			set {
-				if (value)
-					m_implAttrs |= MethodImplAttributes.InternalCall;
-				else
-					m_implAttrs &= ~MethodImplAttributes.InternalCall;
-			}
+			get { return impl_attributes.GetAttributes ((ushort) MethodImplAttributes.InternalCall); }
+			set { impl_attributes = impl_attributes.SetAttributes ((ushort) MethodImplAttributes.InternalCall, value); }
 		}
 
 		public bool IsSynchronized {
-			get { return (m_implAttrs & MethodImplAttributes.Synchronized) != 0; }
-			set {
-				if (value)
-					m_implAttrs |= MethodImplAttributes.Synchronized;
-				else
-					m_implAttrs &= ~MethodImplAttributes.Synchronized;
-			}
+			get { return impl_attributes.GetAttributes ((ushort) MethodImplAttributes.Synchronized); }
+			set { impl_attributes = impl_attributes.SetAttributes ((ushort) MethodImplAttributes.Synchronized, value); }
 		}
 
 		public bool NoInlining {
-			get { return (m_implAttrs & MethodImplAttributes.NoInlining) != 0; }
-			set {
-				if (value)
-					m_implAttrs |= MethodImplAttributes.NoInlining;
-				else
-					m_implAttrs &= ~MethodImplAttributes.NoInlining;
-			}
+			get { return impl_attributes.GetAttributes ((ushort) MethodImplAttributes.NoInlining); }
+			set { impl_attributes = impl_attributes.SetAttributes ((ushort) MethodImplAttributes.NoInlining, value); }
+		}
+
+		public bool NoOptimization {
+			get { return impl_attributes.GetAttributes ((ushort) MethodImplAttributes.NoOptimization); }
+			set { impl_attributes = impl_attributes.SetAttributes ((ushort) MethodImplAttributes.NoOptimization, value); }
 		}
 
 		#endregion
 
 		#region MethodSemanticsAttributes
+
 		public bool IsSetter {
-			get { return (m_semAttrs & MethodSemanticsAttributes.Setter) != 0; }
-			set {
-				if (value)
-					m_semAttrs |= MethodSemanticsAttributes.Setter;
-				else
-					m_semAttrs &= ~MethodSemanticsAttributes.Setter;
-			}
+			get { return this.GetSemantics (MethodSemanticsAttributes.Setter); }
+			set { this.SetSemantics (MethodSemanticsAttributes.Setter, value); }
 		}
 
 		public bool IsGetter {
-			get { return (m_semAttrs & MethodSemanticsAttributes.Getter) != 0; }
-			set {
-				if (value)
-					m_semAttrs |= MethodSemanticsAttributes.Getter;
-				else
-					m_semAttrs &= ~MethodSemanticsAttributes.Getter;
-			}
+			get { return this.GetSemantics (MethodSemanticsAttributes.Getter); }
+			set { this.SetSemantics (MethodSemanticsAttributes.Getter, value); }
 		}
 
 		public bool IsOther {
-			get { return (m_semAttrs & MethodSemanticsAttributes.Other) != 0; }
-			set {
-				if (value)
-					m_semAttrs |= MethodSemanticsAttributes.Other;
-				else
-					m_semAttrs &= ~MethodSemanticsAttributes.Other;
-			}
+			get { return this.GetSemantics (MethodSemanticsAttributes.Other); }
+			set { this.SetSemantics (MethodSemanticsAttributes.Other, value); }
 		}
 
 		public bool IsAddOn {
-			get { return (m_semAttrs & MethodSemanticsAttributes.AddOn) != 0; }
-			set {
-				if (value)
-					m_semAttrs |= MethodSemanticsAttributes.AddOn;
-				else
-					m_semAttrs &= ~MethodSemanticsAttributes.AddOn;
-			}
+			get { return this.GetSemantics (MethodSemanticsAttributes.AddOn); }
+			set { this.SetSemantics (MethodSemanticsAttributes.AddOn, value); }
 		}
 
 		public bool IsRemoveOn {
-			get { return (m_semAttrs & MethodSemanticsAttributes.RemoveOn) != 0; }
-			set {
-				if (value)
-					m_semAttrs |= MethodSemanticsAttributes.RemoveOn;
-				else
-					m_semAttrs &= ~MethodSemanticsAttributes.RemoveOn;
-			}
+			get { return this.GetSemantics (MethodSemanticsAttributes.RemoveOn); }
+			set { this.SetSemantics (MethodSemanticsAttributes.RemoveOn, value); }
 		}
 
 		public bool IsFire {
-			get { return (m_semAttrs & MethodSemanticsAttributes.Fire) != 0; }
-			set {
-				if (value)
-					m_semAttrs |= MethodSemanticsAttributes.Fire;
-				else
-					m_semAttrs &= ~MethodSemanticsAttributes.Fire;
-			}
+			get { return this.GetSemantics (MethodSemanticsAttributes.Fire); }
+			set { this.SetSemantics (MethodSemanticsAttributes.Fire, value); }
 		}
 
 		#endregion
 
-		public bool IsConstructor {
-			get {
-				return this.IsRuntimeSpecialName && this.IsSpecialName &&
-					(this.Name == Cctor || this.Name == Ctor);
-			}
-		}
-
-		public bool HasBody {
-			get {
-				return (m_attributes & MethodAttributes.Abstract) == 0 &&
-					(m_attributes & MethodAttributes.PInvokeImpl) == 0 &&
-					(m_implAttrs & MethodImplAttributes.InternalCall) == 0 &&
-					(m_implAttrs & MethodImplAttributes.Native) == 0 &&
-					(m_implAttrs & MethodImplAttributes.Unmanaged) == 0 &&
-					(m_implAttrs & MethodImplAttributes.Runtime) == 0;
-			}
-		}
-
 		public new TypeDefinition DeclaringType {
 			get { return (TypeDefinition) base.DeclaringType; }
 			set { base.DeclaringType = value; }
 		}
 
-		public MethodDefinition (string name, RVA rva,
-			MethodAttributes attrs, MethodImplAttributes implAttrs,
-			bool hasThis, bool explicitThis, MethodCallingConvention callConv) :
-			base (name, hasThis, explicitThis, callConv)
-		{
-			m_rva = rva;
-			m_attributes = attrs;
-			m_implAttrs = implAttrs;
-
-			if (!IsStatic)
-				m_this = new ParameterDefinition ("this", 0, (ParameterAttributes) 0, null);
+		public bool IsConstructor {
+			get {
+				return this.IsRuntimeSpecialName
+					&& this.IsSpecialName
+					&& (this.Name == ".cctor" || this.Name == ".ctor");
+			}
 		}
 
-		internal MethodDefinition (string name, MethodAttributes attrs) : base (name)
-		{
-			m_attributes = attrs;
-
-			this.HasThis = !this.IsStatic;
-			if (!IsStatic)
-				m_this = new ParameterDefinition ("this", 0, (ParameterAttributes) 0, null);
+		public override bool IsDefinition {
+			get { return true; }
 		}
 
-		public MethodDefinition (string name, MethodAttributes attrs, TypeReference returnType) :
-			this (name, attrs)
+		internal MethodDefinition ()
 		{
-			this.ReturnType.ReturnType = returnType;
+			this.token = new MetadataToken (TokenType.Method);
 		}
 
-		internal void LoadBody ()
+		public MethodDefinition (string name, MethodAttributes attributes, TypeReference returnType)
+			: base (name, returnType)
 		{
-			if (m_body == null && this.HasBody) {
-				m_body = new MethodBody (this);
-
-				ModuleDefinition module = DeclaringType != null ? DeclaringType.Module : null;
-
-				if (module != null && m_rva != RVA.Zero)
-					module.Controller.Reader.Code.VisitMethodBody (m_body);
-			}
+			this.attributes = (ushort) attributes;
+			this.HasThis = !this.IsStatic;
+			this.token = new MetadataToken (TokenType.Method);
 		}
 
 		public override MethodDefinition Resolve ()
 		{
 			return this;
 		}
+	}
 
-		public MethodDefinition Clone ()
-		{
-			return Clone (this, new ImportContext (NullReferenceImporter.Instance, this));
-		}
+	static partial class Mixin {
 
-		internal static MethodDefinition Clone (MethodDefinition meth, ImportContext context)
+		public static ParameterDefinition GetParameter (this MethodBody self, int index)
 		{
-			MethodDefinition nm = new MethodDefinition (
-				meth.Name,
-				RVA.Zero,
-				meth.Attributes,
-				meth.ImplAttributes,
-				meth.HasThis,
-				meth.ExplicitThis,
-				meth.CallingConvention);
-
-			MethodReference contextMethod = context.GenericContext.Method;
-
-			context.GenericContext.Method = nm;
-
-			GenericParameter.CloneInto (meth, nm, context);
-
-			nm.ReturnType.ReturnType = context.Import (meth.ReturnType.ReturnType);
+			var method = self.method;
 
-			if (meth.ReturnType.Parameter != null) {
-				nm.ReturnType.Parameter = ParameterDefinition.Clone (meth.ReturnType.Parameter, context);
-				nm.ReturnType.Parameter.Method = nm;
-			}
-
-			if (meth.PInvokeInfo != null)
-				nm.PInvokeInfo = meth.PInvokeInfo; // TODO: import module ?
+			if (method.HasThis) {
+				if (index == 0)
+					return self.ThisParameter;
 
-			if (meth.HasParameters) {
-				foreach (ParameterDefinition param in meth.Parameters)
-					nm.Parameters.Add (ParameterDefinition.Clone (param, context));
-			}
-			if (meth.HasOverrides) {
-				foreach (MethodReference ov in meth.Overrides)
-					nm.Overrides.Add (context.Import (ov));
-			}
-			if (meth.HasCustomAttributes) {
-				foreach (CustomAttribute ca in meth.CustomAttributes)
-					nm.CustomAttributes.Add (CustomAttribute.Clone (ca, context));
-			}
-			if (meth.HasSecurityDeclarations) {
-				foreach (SecurityDeclaration sec in meth.SecurityDeclarations)
-					nm.SecurityDeclarations.Add (SecurityDeclaration.Clone (sec));
+				index--;
 			}
 
-			if (meth.Body != null)
-				nm.Body = MethodBody.Clone (meth.Body, nm, context);
+			var parameters = method.Parameters;
 
-			context.GenericContext.Method = contextMethod;
+			if (index < 0 || index >= parameters.size)
+				return null;
 
-			return nm;
+			return parameters [index];
 		}
 
-		public override void Accept (IReflectionVisitor visitor)
+		public static VariableDefinition GetVariable (this MethodBody self, int index)
 		{
-			visitor.VisitMethodDefinition (this);
+			var variables = self.Variables;
 
-			this.GenericParameters.Accept (visitor);
-			this.Parameters.Accept (visitor);
+			if (index < 0 || index >= variables.size)
+				return null;
 
-			if (this.PInvokeInfo != null)
-				this.PInvokeInfo.Accept (visitor);
+			return variables [index];
+		}
 
-			this.SecurityDeclarations.Accept (visitor);
-			this.Overrides.Accept (visitor);
-			this.CustomAttributes.Accept (visitor);
+		public static bool GetSemantics (this MethodDefinition self, MethodSemanticsAttributes semantics)
+		{
+			return (self.SemanticsAttributes & semantics) != 0;
+		}
+
+		public static void SetSemantics (this MethodDefinition self, MethodSemanticsAttributes semantics, bool value)
+		{
+			if (value)
+				self.SemanticsAttributes |= semantics;
+			else
+				self.SemanticsAttributes &= ~semantics;
 		}
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/MethodDefinitionCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil/MethodDefinitionCollection.cs
deleted file mode 100644
index ec0b1de..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil/MethodDefinitionCollection.cs
+++ /dev/null
@@ -1,185 +0,0 @@
-//
-// MethodDefinitionCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Fri Mar 30 18:43:56 +0200 2007
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-	using System;
-	using System.Collections;
-
-	using Mono.Cecil.Cil;
-
-	public sealed class MethodDefinitionCollection : CollectionBase, IReflectionVisitable {
-
-		TypeDefinition m_container;
-
-		public MethodDefinition this [int index] {
-			get { return List [index] as MethodDefinition; }
-			set { List [index] = value; }
-		}
-
-		public TypeDefinition Container {
-			get { return m_container; }
-		}
-
-		public MethodDefinitionCollection (TypeDefinition container)
-		{
-			m_container = container;
-		}
-
-		public void Add (MethodDefinition value)
-		{
-			Attach (value);
-
-			List.Add (value);
-		}
-
-
-		public new void Clear ()
-		{
-			foreach (MethodDefinition item in this)
-				Detach (item);
-
-			base.Clear ();
-		}
-
-		public bool Contains (MethodDefinition value)
-		{
-			return List.Contains (value);
-		}
-
-		public int IndexOf (MethodDefinition value)
-		{
-			return List.IndexOf (value);
-		}
-
-		public void Insert (int index, MethodDefinition value)
-		{
-			Attach (value);
-
-			List.Insert (index, value);
-		}
-
-		public void Remove (MethodDefinition value)
-		{
-			List.Remove (value);
-
-			Detach (value);
-		}
-
-
-		public new void RemoveAt (int index)
-		{
-			MethodDefinition item = this [index];
-			Remove (item);
-		}
-
-		protected override void OnValidate (object o)
-		{
-			if (! (o is MethodDefinition))
-				throw new ArgumentException ("Must be of type " + typeof (MethodDefinition).FullName);
-		}
-
-		public MethodDefinition [] GetMethod (string name)
-		{
-			ArrayList ret = new ArrayList ();
-			foreach (MethodDefinition meth in this)
-				if (meth.Name == name)
-					ret.Add (meth);
-
-			return ret.ToArray (typeof (MethodDefinition)) as MethodDefinition [];
-		}
-
-		internal MethodDefinition GetMethodInternal (string name, IList parameters)
-		{
-			foreach (MethodDefinition meth in this) {
-				if (meth.Name != name || meth.Parameters.Count != parameters.Count)
-					continue;
-
-				bool match = true;
-				for (int i = 0; i < parameters.Count; i++) {
-					string pname;
-					object param = parameters [i];
-					if (param is Type)
-						pname = ReflectionHelper.GetTypeSignature (param as Type);
-					else if (param is TypeReference)
-						pname = (param as TypeReference).FullName;
-					else if (param is ParameterDefinition)
-						pname = (param as ParameterDefinition).ParameterType.FullName;
-					else
-						throw new NotSupportedException ();
-
-					if (meth.Parameters [i].ParameterType.FullName != pname) {
-						match = false;
-						break;
-					}
-				}
-
-				if (match)
-					return meth;
-			}
-
-			return null;
-		}
-
-		public MethodDefinition GetMethod (string name, Type [] parameters)
-		{
-			return GetMethodInternal (name, parameters);
-		}
-
-		public MethodDefinition GetMethod (string name, TypeReference [] parameters)
-		{
-			return GetMethodInternal (name, parameters);
-		}
-
-		public MethodDefinition GetMethod (string name, ParameterDefinitionCollection parameters)
-		{
-			return GetMethodInternal (name, parameters);
-		}
-
-		void Attach (MemberReference member)
-		{
-			if (member.DeclaringType != null)
-				throw new ReflectionException ("Member already attached, clone it instead");
-
-			member.DeclaringType = m_container;
-		}
-
-		void Detach (MemberReference member)
-		{
-			member.DeclaringType = null;
-		}
-
-		public void Accept (IReflectionVisitor visitor)
-		{
-			visitor.VisitMethodDefinitionCollection (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/MethodImplAttributes.cs b/mcs/class/Mono.Cecil/Mono.Cecil/MethodImplAttributes.cs
index ed70118..8a2b422 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/MethodImplAttributes.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/MethodImplAttributes.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,9 +26,9 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
+using System;
 
-	using System;
+namespace Mono.Cecil {
 
 	[Flags]
 	public enum MethodImplAttributes : ushort {
@@ -47,6 +47,7 @@ namespace Mono.Cecil {
 		PreserveSig			= 0x0080,	// Reserved: conforming implementations may ignore
 		InternalCall		= 0x1000,	// Reserved: shall be zero in conforming implementations
 		Synchronized		= 0x0020,	// Method is single threaded through the body
+		NoOptimization		= 0x0040,	// Method is not optimized by the JIT.
 		NoInlining			= 0x0008,	// Method may not be inlined
 		MaxMethodImplVal	= 0xffff	 // Range check value
 	}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/MethodReference.cs b/mcs/class/Mono.Cecil/Mono.Cecil/MethodReference.cs
index 1e713bc..6a9dbe9 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/MethodReference.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/MethodReference.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 - 2007 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,133 +26,189 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
+using System;
+using System.Text;
+
+using Mono.Collections.Generic;
 
-	using System.Text;
+namespace Mono.Cecil {
 
-	public class MethodReference : MemberReference, IMethodSignature, IGenericParameterProvider {
+	public class MethodReference : MemberReference, IMethodSignature, IGenericParameterProvider, IGenericContext {
 
-		ParameterDefinitionCollection m_parameters;
-		MethodReturnType m_returnType;
+		internal ParameterDefinitionCollection parameters;
+		MethodReturnType return_type;
 
-		bool m_hasThis;
-		bool m_explicitThis;
-		MethodCallingConvention m_callConv;
-		GenericParameterCollection m_genparams;
+		bool has_this;
+		bool explicit_this;
+		MethodCallingConvention calling_convention;
+		internal Collection<GenericParameter> generic_parameters;
 
 		public virtual bool HasThis {
-			get { return m_hasThis; }
-			set { m_hasThis = value; }
+			get { return has_this; }
+			set { has_this = value; }
 		}
 
 		public virtual bool ExplicitThis {
-			get { return m_explicitThis; }
-			set { m_explicitThis = value; }
+			get { return explicit_this; }
+			set { explicit_this = value; }
 		}
 
 		public virtual MethodCallingConvention CallingConvention {
-			get { return m_callConv; }
-			set { m_callConv = value; }
+			get { return calling_convention; }
+			set { calling_convention = value; }
 		}
 
 		public virtual bool HasParameters {
-			get { return (m_parameters == null) ? false : (m_parameters.Count > 0); }
+			get { return !parameters.IsNullOrEmpty (); }
+		}
+
+		public virtual Collection<ParameterDefinition> Parameters {
+			get {
+				if (parameters == null)
+					parameters = new ParameterDefinitionCollection (this);
+
+				return parameters;
+			}
 		}
 
-		public virtual ParameterDefinitionCollection Parameters {
+		IGenericParameterProvider IGenericContext.Type {
 			get {
-				if (m_parameters == null)
-					m_parameters = new ParameterDefinitionCollection (this);
-				return m_parameters;
+				var declaring_type = this.DeclaringType;
+				var instance = declaring_type as GenericInstanceType;
+				if (instance != null)
+					return instance.ElementType;
+
+				return declaring_type;
 			}
 		}
 
-		public bool HasGenericParameters {
-			get { return (m_genparams == null) ? false : (m_genparams.Count > 0); }
+		IGenericParameterProvider IGenericContext.Method {
+			get { return this; }
+		}
+
+		GenericParameterType IGenericParameterProvider.GenericParameterType {
+			get { return GenericParameterType.Method; }
+		}
+
+		public virtual bool HasGenericParameters {
+			get { return !generic_parameters.IsNullOrEmpty (); }
 		}
 
-		public GenericParameterCollection GenericParameters {
+		public virtual Collection<GenericParameter> GenericParameters {
 			get {
-				if (m_genparams == null)
-					m_genparams = new GenericParameterCollection (this);
-				return m_genparams;
+				if (generic_parameters != null)
+					return generic_parameters;
+
+				return generic_parameters = new Collection<GenericParameter> ();
 			}
 		}
 
-		public virtual MethodReturnType ReturnType {
-			get { return m_returnType;}
-			set { m_returnType = value; }
+		public TypeReference ReturnType {
+			get {
+				var return_type = MethodReturnType;
+				return return_type != null ? return_type.ReturnType : null;
+			}
+			set {
+				var return_type = MethodReturnType;
+				if (return_type != null)
+					return_type.ReturnType = value;
+			}
 		}
 
-		internal MethodReference (string name, bool hasThis,
-			bool explicitThis, MethodCallingConvention callConv) : this (name)
-		{
-			m_parameters = new ParameterDefinitionCollection (this);
-			m_hasThis = hasThis;
-			m_explicitThis = explicitThis;
-			m_callConv = callConv;
+		public virtual MethodReturnType MethodReturnType {
+			get { return return_type; }
+			set { return_type = value; }
+		}
+
+		public override string FullName {
+			get {
+				var builder = new StringBuilder ();
+				builder.Append (ReturnType.FullName)
+					.Append (" ")
+					.Append (MemberFullName ());
+				this.MethodSignatureFullName (builder);
+				return builder.ToString ();
+			}
+		}
+
+		public virtual bool IsGenericInstance {
+			get { return false; }
 		}
 
-		internal MethodReference (string name) : base (name)
+		internal override bool ContainsGenericParameter {
+			get {
+				if (this.ReturnType.ContainsGenericParameter || base.ContainsGenericParameter)
+					return true;
+
+				var parameters = this.Parameters;
+
+				for (int i = 0; i < parameters.Count; i++)
+					if (parameters [i].ParameterType.ContainsGenericParameter)
+						return true;
+
+				return false;
+			}
+		}
+
+		internal MethodReference ()
 		{
-			m_returnType = new MethodReturnType (null);
+			this.return_type = new MethodReturnType (this);
+			this.token = new MetadataToken (TokenType.MemberRef);
 		}
 
-		public MethodReference (string name,
-			TypeReference declaringType, TypeReference returnType,
-			bool hasThis, bool explicitThis, MethodCallingConvention callConv) :
-			this (name, hasThis, explicitThis, callConv)
+		public MethodReference (string name, TypeReference returnType)
+			: base (name)
 		{
-			this.DeclaringType = declaringType;
-			this.ReturnType.ReturnType = returnType;
+			if (returnType == null)
+				throw new ArgumentNullException ("returnType");
+
+			this.return_type = new MethodReturnType (this);
+			this.return_type.ReturnType = returnType;
+			this.token = new MetadataToken (TokenType.MemberRef);
 		}
 
-		public virtual MethodDefinition Resolve ()
+		public MethodReference (string name, TypeReference returnType, TypeReference declaringType)
+			: this (name, returnType)
 		{
-			TypeReference declaringType = DeclaringType;
 			if (declaringType == null)
-				return null;
+				throw new ArgumentNullException ("declaringType");
 
-			return declaringType.Module.Resolver.Resolve (this);
+			this.DeclaringType = declaringType;
 		}
 
-		public virtual MethodReference GetOriginalMethod ()
+		public virtual MethodReference GetElementMethod ()
 		{
 			return this;
 		}
 
-		public int GetSentinel ()
+		public virtual MethodDefinition Resolve ()
+		{
+			var module = this.Module;
+			if (module == null)
+				throw new NotSupportedException ();
+
+			return module.Resolve (this);
+		}
+	}
+
+	static partial class Mixin {
+
+		public static bool IsVarArg (this IMethodSignature self)
 		{
-			if (HasParameters) {
-				for (int i = 0; i < Parameters.Count; i++)
-					if (Parameters [i].ParameterType is SentinelType)
-						return i;
-			}
-			return -1;
+			return (self.CallingConvention & MethodCallingConvention.VarArg) != 0;
 		}
 
-		public override string ToString ()
+		public static int GetSentinelPosition (this IMethodSignature self)
 		{
-			int sentinel = GetSentinel ();
-
-			StringBuilder sb = new StringBuilder ();
-			sb.Append (m_returnType.ReturnType.FullName);
-			sb.Append (" ");
-			sb.Append (base.ToString ());
-			sb.Append ("(");
-			if (this.HasParameters) {
-				for (int i = 0; i < this.Parameters.Count; i++) {
-					if (i > 0)
-						sb.Append (",");
-
-					if (i == sentinel)
-						sb.Append ("...,");
-
-					sb.Append (this.Parameters [i].ParameterType.FullName);
-				}
-			}
-			sb.Append (")");
-			return sb.ToString ();
+			if (!self.HasParameters)
+				return -1;
+
+			var parameters = self.Parameters;
+			for (int i = 0; i < parameters.Count; i++)
+				if (parameters [i].ParameterType.IsSentinel)
+					return i;
+
+			return -1;
 		}
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/MethodReturnType.cs b/mcs/class/Mono.Cecil/Mono.Cecil/MethodReturnType.cs
index b63ebbc..045b9a8 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/MethodReturnType.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/MethodReturnType.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,39 +26,28 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-using System;
-
-using Mono.Cecil.Metadata;
+using Mono.Collections.Generic;
 
 namespace Mono.Cecil {
 
-	public sealed class MethodReturnType : ICustomAttributeProvider, IHasMarshalSpec, IHasConstant {
-
-		MethodReference m_method;
-		ParameterDefinition m_param;
+	public sealed class MethodReturnType : IConstantProvider, ICustomAttributeProvider, IMarshalInfoProvider {
 
-		TypeReference m_returnType;
+		internal IMethodSignature method;
+		internal ParameterDefinition parameter;
+		TypeReference return_type;
 
-		public MethodReference Method {
-			get { return m_method; }
-			set { m_method = value; }
+		public IMethodSignature Method {
+			get { return method; }
 		}
 
 		public TypeReference ReturnType {
-			get { return m_returnType; }
-			set { m_returnType = value; }
+			get { return return_type; }
+			set { return_type = value; }
 		}
 
 		internal ParameterDefinition Parameter {
-			get {
-				if (m_param == null) {
-					m_param = new ParameterDefinition (m_returnType);
-					m_param.Method = m_method;
-				}
-
-				return m_param;
-			}
-			set { m_param = value; }
+			get { return parameter ?? (parameter = new ParameterDefinition (return_type)); }
+			set { parameter = value; }
 		}
 
 		public MetadataToken MetadataToken {
@@ -67,15 +56,21 @@ namespace Mono.Cecil {
 		}
 
 		public bool HasCustomAttributes {
-			get { return m_param != null && m_param.HasCustomAttributes; }
+			get { return parameter != null && parameter.HasCustomAttributes; }
 		}
 
-		public CustomAttributeCollection CustomAttributes {
+		public Collection<CustomAttribute> CustomAttributes {
 			get { return Parameter.CustomAttributes; }
 		}
 
+		public bool HasDefault {
+			get { return parameter != null && parameter.HasDefault; }
+			set { Parameter.HasDefault = value; }
+		}
+
 		public bool HasConstant {
-			get { return m_param != null && m_param.HasConstant; }
+			get { return parameter != null && parameter.HasConstant; }
+			set { Parameter.HasConstant = value; }
 		}
 
 		public object Constant {
@@ -83,19 +78,23 @@ namespace Mono.Cecil {
 			set { Parameter.Constant = value; }
 		}
 
-		public MarshalSpec MarshalSpec {
-			get { return Parameter.MarshalSpec; }
-			set { Parameter.MarshalSpec = value; }
+		public bool HasFieldMarshal {
+			get { return parameter != null && parameter.HasFieldMarshal; }
+			set { Parameter.HasFieldMarshal = value; }
 		}
 
-		public MethodReturnType (TypeReference retType)
-		{
-			m_returnType = retType;
+		public bool HasMarshalInfo {
+			get { return parameter != null && parameter.HasMarshalInfo; }
+		}
+
+		public MarshalInfo MarshalInfo {
+			get { return Parameter.MarshalInfo; }
+			set { Parameter.MarshalInfo = value; }
 		}
 
-		public override string ToString ()
+		public MethodReturnType (IMethodSignature method)
 		{
-			return String.Format ("[return: {0}]", m_returnType);
+			this.method = method;
 		}
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/MethodSemanticsAttributes.cs b/mcs/class/Mono.Cecil/Mono.Cecil/MethodSemanticsAttributes.cs
index 6db44b5..f44a3fa 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/MethodSemanticsAttributes.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/MethodSemanticsAttributes.cs
@@ -1,10 +1,10 @@
 //
-// MethodSemanticsAttributes.cs
+// MethodSemanticsattributes.cs
 //
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,12 +26,13 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
+using System;
 
-	using System;
+namespace Mono.Cecil {
 
 	[Flags]
 	public enum MethodSemanticsAttributes : ushort {
+		None		= 0x0000,
 		Setter		= 0x0001,	// Setter for property
 		Getter		= 0x0002,	// Getter for property
 		Other		= 0x0004,	// Other method for property or event
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/MethodSpecification.cs b/mcs/class/Mono.Cecil/Mono.Cecil/MethodSpecification.cs
index 31b45bb..e907d6c 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/MethodSpecification.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/MethodSpecification.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,65 +26,78 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
+using System;
+
+using Mono.Collections.Generic;
 
-	using System;
+namespace Mono.Cecil {
 
 	public abstract class MethodSpecification : MethodReference {
 
-		MethodReference m_elementMethod;
+		readonly MethodReference method;
 
 		public MethodReference ElementMethod {
-			get { return m_elementMethod; }
-			set { m_elementMethod = value; }
+			get { return method; }
 		}
 
 		public override string Name {
-			get { return m_elementMethod.Name; }
+			get { return method.Name; }
 			set { throw new InvalidOperationException (); }
 		}
 
 		public override MethodCallingConvention CallingConvention {
-			get { return m_elementMethod.CallingConvention; }
+			get { return method.CallingConvention; }
 			set { throw new InvalidOperationException (); }
 		}
 
 		public override bool HasThis {
-			get { return m_elementMethod.HasThis; }
+			get { return method.HasThis; }
 			set { throw new InvalidOperationException (); }
 		}
 
 		public override bool ExplicitThis {
-			get { return m_elementMethod.ExplicitThis; }
+			get { return method.ExplicitThis; }
 			set { throw new InvalidOperationException (); }
 		}
 
-		public override MethodReturnType ReturnType {
-			get { return m_elementMethod.ReturnType; }
+		public override MethodReturnType MethodReturnType {
+			get { return method.MethodReturnType; }
 			set { throw new InvalidOperationException (); }
 		}
 
 		public override TypeReference DeclaringType {
-			get { return m_elementMethod.DeclaringType; }
+			get { return method.DeclaringType; }
 			set { throw new InvalidOperationException (); }
 		}
 
+		public override ModuleDefinition Module {
+			get { return method.Module; }
+		}
+
 		public override bool HasParameters {
-			get { return m_elementMethod.HasParameters; }
+			get { return method.HasParameters; }
+		}
+
+		public override Collection<ParameterDefinition> Parameters {
+			get { return method.Parameters; }
 		}
 
-		public override ParameterDefinitionCollection Parameters {
-			get { return m_elementMethod.Parameters; }
+		internal override bool ContainsGenericParameter {
+			get { return method.ContainsGenericParameter; }
 		}
 
-		internal MethodSpecification (MethodReference elemMethod) : base (string.Empty)
+		internal MethodSpecification (MethodReference method)
 		{
-			m_elementMethod = elemMethod;
+			if (method == null)
+				throw new ArgumentNullException ("method");
+
+			this.method = method;
+			this.token = new MetadataToken (TokenType.MethodSpec);
 		}
 
-		public override MethodReference GetOriginalMethod()
+		public sealed override MethodReference GetElementMethod ()
 		{
-			return m_elementMethod.GetOriginalMethod ();
+			return method.GetElementMethod ();
 		}
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/Modifiers.cs b/mcs/class/Mono.Cecil/Mono.Cecil/Modifiers.cs
index 7007636..f7ff611 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/Modifiers.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/Modifiers.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,62 +26,112 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System;
+
+using MD = Mono.Cecil.Metadata;
+
 namespace Mono.Cecil {
 
-	public abstract class ModType : TypeSpecification {
+	public interface IModifierType {
+		TypeReference ModifierType { get; }
+		TypeReference ElementType { get; }
+	}
+
+	public sealed class OptionalModifierType : TypeSpecification, IModifierType {
 
-		TypeReference m_modifierType;
+		TypeReference modifier_type;
 
 		public TypeReference ModifierType {
-			get { return m_modifierType; }
-			set { m_modifierType = value; }
+			get { return modifier_type; }
+			set { modifier_type = value; }
 		}
 
-		public override string Name
-		{
-			get { return string.Concat (base.Name, Suffix ()); }
+		public override string Name {
+			get { return base.Name + Suffix; }
 		}
 
-		public override string FullName
-		{
-			get { return string.Concat (base.FullName, Suffix ()); }
+		public override string FullName {
+			get { return base.FullName + Suffix; }
 		}
 
-		string Suffix ()
-		{
-			return string.Concat (" ", ModifierName, "(", this.ModifierType.FullName, ")");
+		string Suffix {
+			get { return " modopt(" + modifier_type + ")"; }
 		}
 
-		protected abstract string ModifierName {
-			get;
+		public override bool IsValueType {
+			get { return false; }
+			set { throw new InvalidOperationException (); }
 		}
 
-		public ModType (TypeReference elemType, TypeReference modType) : base (elemType)
+		public override bool IsOptionalModifier {
+			get { return true; }
+		}
+
+		internal override bool ContainsGenericParameter {
+			get { return modifier_type.ContainsGenericParameter || base.ContainsGenericParameter; }
+		}
+
+		public OptionalModifierType (TypeReference modifierType, TypeReference type)
+			: base (type)
 		{
-			m_modifierType = modType;
+			Mixin.CheckModifier (modifierType, type);
+			this.modifier_type = modifierType;
+			this.etype = MD.ElementType.CModOpt;
 		}
 	}
 
-	public sealed class ModifierOptional : ModType {
+	public sealed class RequiredModifierType : TypeSpecification, IModifierType {
 
-		protected override string ModifierName {
-			get { return "modopt"; }
+		TypeReference modifier_type;
+
+		public TypeReference ModifierType {
+			get { return modifier_type; }
+			set { modifier_type = value; }
 		}
 
-		public ModifierOptional (TypeReference elemType, TypeReference modType) : base (elemType, modType)
-		{
+		public override string Name {
+			get { return base.Name + Suffix; }
 		}
 
-	}
+		public override string FullName {
+			get { return base.FullName + Suffix; }
+		}
+
+		string Suffix {
+			get { return " modreq(" + modifier_type + ")"; }
+		}
 
-	public sealed class ModifierRequired : ModType {
+		public override bool IsValueType {
+			get { return false; }
+			set { throw new InvalidOperationException (); }
+		}
+
+		public override bool IsRequiredModifier {
+			get { return true; }
+		}
 
-		protected override string ModifierName {
-			get { return "modreq"; }
+		internal override bool ContainsGenericParameter {
+			get { return modifier_type.ContainsGenericParameter || base.ContainsGenericParameter; }
 		}
 
-		public ModifierRequired (TypeReference elemType, TypeReference modType) : base (elemType, modType)
+		public RequiredModifierType (TypeReference modifierType, TypeReference type)
+			: base (type)
+		{
+			Mixin.CheckModifier (modifierType, type);
+			this.modifier_type = modifierType;
+			this.etype = MD.ElementType.CModReqD;
+		}
+
+	}
+
+	static partial class Mixin {
+
+		public static void CheckModifier (TypeReference modifierType, TypeReference type)
 		{
+			if (modifierType == null)
+				throw new ArgumentNullException ("modifierType");
+			if (type == null)
+				throw new ArgumentNullException ("type");
 		}
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/ModuleDefinition.cs b/mcs/class/Mono.Cecil/Mono.Cecil/ModuleDefinition.cs
index d4f7d0b..7c793f5 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/ModuleDefinition.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/ModuleDefinition.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,576 +26,940 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System;
+using System.Collections.Generic;
+using System.IO;
+using SR = System.Reflection;
+
+using Mono.Cecil.Cil;
+using Mono.Cecil.Metadata;
+using Mono.Cecil.PE;
+using Mono.Collections.Generic;
+
 namespace Mono.Cecil {
 
-	using System;
-	using SR = System.Reflection;
-	using SS = System.Security;
-	using SSP = System.Security.Permissions;
-	using System.Text;
+	public enum ReadingMode {
+		Immediate = 1,
+		Deferred = 2,
+	}
+
+	public sealed class ReaderParameters {
+
+		ReadingMode reading_mode;
+		IAssemblyResolver assembly_resolver;
+		Stream symbol_stream;
+		ISymbolReaderProvider symbol_reader_provider;
+		bool read_symbols;
+
+		public ReadingMode ReadingMode {
+			get { return reading_mode; }
+			set { reading_mode = value; }
+		}
+
+		public IAssemblyResolver AssemblyResolver {
+			get { return assembly_resolver; }
+			set { assembly_resolver = value; }
+		}
+
+		public Stream SymbolStream {
+			get { return symbol_stream; }
+			set { symbol_stream = value; }
+		}
+
+		public ISymbolReaderProvider SymbolReaderProvider {
+			get { return symbol_reader_provider; }
+			set { symbol_reader_provider = value; }
+		}
+
+		public bool ReadSymbols {
+			get { return read_symbols; }
+			set { read_symbols = value; }
+		}
+
+		public ReaderParameters ()
+			: this (ReadingMode.Deferred)
+		{
+		}
+
+		public ReaderParameters (ReadingMode readingMode)
+		{
+			this.reading_mode = readingMode;
+		}
+	}
+
+#if !READ_ONLY
+
+	public sealed class ModuleParameters {
+
+		ModuleKind kind;
+		TargetRuntime runtime;
+		TargetArchitecture architecture;
+		IAssemblyResolver assembly_resolver;
+
+		public ModuleKind Kind {
+			get { return kind; }
+			set { kind = value; }
+		}
+
+		public TargetRuntime Runtime {
+			get { return runtime; }
+			set { runtime = value; }
+		}
+
+		public TargetArchitecture Architecture {
+			get { return architecture; }
+			set { architecture = value; }
+		}
+
+		public IAssemblyResolver AssemblyResolver {
+			get { return assembly_resolver; }
+			set { assembly_resolver = value; }
+		}
+
+		public ModuleParameters ()
+		{
+			this.kind = ModuleKind.Dll;
+			this.runtime = GetCurrentRuntime ();
+			this.architecture = TargetArchitecture.I386;
+		}
+
+		static TargetRuntime GetCurrentRuntime ()
+		{
+#if !CF
+			return typeof (object).Assembly.ImageRuntimeVersion.ParseRuntime ();
+#else
+			var corlib_version = typeof (object).Assembly.GetName ().Version;
+			switch (corlib_version.Major) {
+			case 1:
+				return corlib_version.Minor == 0
+					? TargetRuntime.Net_1_0
+					: TargetRuntime.Net_1_1;
+			case 2:
+				return TargetRuntime.Net_2_0;
+			case 4:
+				return TargetRuntime.Net_4_0;
+			default:
+				throw new NotSupportedException ();
+			}
+#endif
+		}
+	}
+
+	public sealed class WriterParameters {
+
+		Stream symbol_stream;
+		ISymbolWriterProvider symbol_writer_provider;
+		bool write_symbols;
+#if !SILVERLIGHT && !CF
+		SR.StrongNameKeyPair key_pair;
+#endif
+		public Stream SymbolStream {
+			get { return symbol_stream; }
+			set { symbol_stream = value; }
+		}
+
+		public ISymbolWriterProvider SymbolWriterProvider {
+			get { return symbol_writer_provider; }
+			set { symbol_writer_provider = value; }
+		}
+
+		public bool WriteSymbols {
+			get { return write_symbols; }
+			set { write_symbols = value; }
+		}
+#if !SILVERLIGHT && !CF
+		public SR.StrongNameKeyPair StrongNameKeyPair {
+			get { return key_pair; }
+			set { key_pair = value; }
+		}
+#endif
+	}
+
+#endif
+
+	public sealed class ModuleDefinition : ModuleReference, ICustomAttributeProvider {
+
+		internal Image Image;
+		internal MetadataSystem MetadataSystem;
+		internal ReadingMode ReadingMode;
+		internal ISymbolReaderProvider SymbolReaderProvider;
+		internal ISymbolReader SymbolReader;
+
+		internal IAssemblyResolver assembly_resolver;
+		internal TypeSystem type_system;
+
+		readonly MetadataReader reader;
+		readonly string fq_name;
+
+		internal ModuleKind kind;
+		TargetRuntime runtime;
+		TargetArchitecture architecture;
+		ModuleAttributes attributes;
+		Guid mvid;
 
-	using Mono.Cecil.Cil;
-	using Mono.Cecil.Binary;
-	using Mono.Cecil.Metadata;
+		internal AssemblyDefinition assembly;
+		MethodDefinition entry_point;
 
-	public sealed class ModuleDefinition : ModuleReference, ICustomAttributeProvider, IMetadataScope,
-		IReflectionStructureVisitable, IReflectionVisitable {
+#if !READ_ONLY
+		MetadataImporter importer;
+#endif
+		Collection<CustomAttribute> custom_attributes;
+		Collection<AssemblyNameReference> references;
+		Collection<ModuleReference> modules;
+		Collection<Resource> resources;
+		Collection<ExportedType> exported_types;
+		TypeDefinitionCollection types;
+
+		public bool IsMain {
+			get { return kind != ModuleKind.NetModule; }
+		}
 
-		Guid m_mvid;
-		bool m_main;
-		bool m_manifestOnly;
+		public ModuleKind Kind {
+			get { return kind; }
+			set { kind = value; }
+		}
 
-		AssemblyNameReferenceCollection m_asmRefs;
-		ModuleReferenceCollection m_modRefs;
-		ResourceCollection m_res;
-		TypeDefinitionCollection m_types;
-		TypeReferenceCollection m_refs;
-		ExternTypeCollection m_externs;
-		MemberReferenceCollection m_members;
-		CustomAttributeCollection m_customAttrs;
+		public TargetRuntime Runtime {
+			get { return runtime; }
+			set { runtime = value; }
+		}
 
-		AssemblyDefinition m_asm;
-		Image m_image;
+		public TargetArchitecture Architecture {
+			get { return architecture; }
+			set { architecture = value; }
+		}
 
-		ImageReader m_imgReader;
-		ReflectionController m_controller;
-		MetadataResolver m_resolver;
-		SecurityDeclarationReader m_secReader;
+		public ModuleAttributes Attributes {
+			get { return attributes; }
+			set { attributes = value; }
+		}
+
+		public string FullyQualifiedName {
+			get { return fq_name; }
+		}
 
 		public Guid Mvid {
-			get { return m_mvid; }
-			set { m_mvid = value; }
+			get { return mvid; }
+			set { mvid = value; }
 		}
 
-		public bool Main {
-			get { return m_main; }
-			set { m_main = value; }
+		internal bool HasImage {
+			get { return Image != null; }
 		}
 
-		public AssemblyNameReferenceCollection AssemblyReferences {
-			get { return m_asmRefs; }
+		public bool HasSymbols {
+			get { return SymbolReader != null; }
 		}
 
-		public ModuleReferenceCollection ModuleReferences {
-			get { return m_modRefs; }
+		public override MetadataScopeType MetadataScopeType {
+			get { return MetadataScopeType.ModuleDefinition; }
 		}
 
-		public ResourceCollection Resources {
-			get { return m_res; }
+		public AssemblyDefinition Assembly {
+			get { return assembly; }
 		}
 
-		public TypeDefinitionCollection Types {
-			get { return m_types; }
+#if !READ_ONLY
+		internal MetadataImporter MetadataImporter {
+			get { return importer ?? (importer = new MetadataImporter (this)); }
 		}
+#endif
 
-		public TypeReferenceCollection TypeReferences {
-			get { return m_refs; }
+		public IAssemblyResolver AssemblyResolver {
+			get { return assembly_resolver; }
 		}
 
-		public MemberReferenceCollection MemberReferences {
-			get { return m_members; }
+		public TypeSystem TypeSystem {
+			get { return type_system ?? (type_system = TypeSystem.CreateTypeSystem (this)); }
 		}
 
-		public ExternTypeCollection ExternTypes {
+		public bool HasAssemblyReferences {
 			get {
-				if (m_externs == null)
-					m_externs = new ExternTypeCollection (this);
+				if (references != null)
+					return references.Count > 0;
 
-				return m_externs;
+				return HasImage && Image.HasTable (Table.AssemblyRef);
 			}
 		}
 
-		public bool HasCustomAttributes {
-			get { return (m_customAttrs == null) ? false : (m_customAttrs.Count > 0); }
+		public Collection<AssemblyNameReference> AssemblyReferences {
+			get {
+				if (references != null)
+					return references;
+
+				if (HasImage)
+					return references = Read (this, (_, reader) => reader.ReadAssemblyReferences ());
+
+				return references = new Collection<AssemblyNameReference> ();
+			}
 		}
 
-		public CustomAttributeCollection CustomAttributes {
+		public bool HasModuleReferences {
 			get {
-				if (m_customAttrs == null)
-					m_customAttrs = new CustomAttributeCollection (this);
+				if (modules != null)
+					return modules.Count > 0;
 
-				return m_customAttrs;
+				return HasImage && Image.HasTable (Table.ModuleRef);
 			}
 		}
 
-		public AssemblyDefinition Assembly {
-			get { return m_asm; }
-		}
+		public Collection<ModuleReference> ModuleReferences {
+			get {
+				if (modules != null)
+					return modules;
 
-		internal ReflectionController Controller {
-			get { return m_controller; }
+				if (HasImage)
+					return modules = Read (this, (_, reader) => reader.ReadModuleReferences ());
+
+				return modules = new Collection<ModuleReference> ();
+			}
 		}
 
-		internal MetadataResolver Resolver {
-			get { return m_resolver; }
+		public bool HasResources {
+			get {
+				if (resources != null)
+					return resources.Count > 0;
+
+				if (HasImage)
+					return Image.HasTable (Table.ManifestResource) || Read (this, (_, reader) => reader.HasFileResource ());
+
+				return false;
+			}
 		}
 
-		internal ImageReader ImageReader {
-			get { return m_imgReader; }
+		public Collection<Resource> Resources {
+			get {
+				if (resources != null)
+					return resources;
+
+				if (HasImage)
+					return resources = Read (this, (_, reader) => reader.ReadResources ());
+
+				return resources = new Collection<Resource> ();
+			}
 		}
 
-		public Image Image {
-			get { return m_image; }
-			set {
-				m_image = value;
-				m_secReader = null;
+		public bool HasCustomAttributes {
+			get {
+				if (custom_attributes != null)
+					return custom_attributes.Count > 0;
+
+				return this.GetHasCustomAttributes (this);
 			}
 		}
 
-		public ModuleDefinition (string name, AssemblyDefinition asm) :
-			this (name, asm, null, false)
-		{
+		public Collection<CustomAttribute> CustomAttributes {
+			get { return custom_attributes ?? (custom_attributes = this.GetCustomAttributes (this)); }
 		}
 
-		public ModuleDefinition (string name, AssemblyDefinition asm, bool main) :
-			this (name, asm, null, main)
-		{
+		public bool HasTypes {
+			get {
+				if (types != null)
+					return types.Count > 0;
+
+				return HasImage && Image.HasTable (Table.TypeDef);
+			}
 		}
 
-		internal ModuleDefinition (string name, AssemblyDefinition asm, StructureReader reader, bool main) : base (name)
-		{
-			if (asm == null)
-				throw new ArgumentNullException ("asm");
-			if (name == null || name.Length == 0)
-				throw new ArgumentNullException ("name");
+		public Collection<TypeDefinition> Types {
+			get {
+				if (types != null)
+					return types;
 
-			m_asm = asm;
-			m_main = main;
-#if !CF_1_0
-			m_mvid = Guid.NewGuid ();
-#endif
-			if (reader != null) {
-				m_image = reader.Image;
-				m_imgReader = reader.ImageReader;
-				m_manifestOnly = reader.ManifestOnly;
-			} else
-				m_image = Image.CreateImage ();
+				if (HasImage)
+					return types = Read (this, (_, reader) => reader.ReadTypes ());
+
+				return types = new TypeDefinitionCollection (this);
+			}
+		}
+
+		public bool HasExportedTypes {
+			get {
+				if (exported_types != null)
+					return exported_types.Count > 0;
 
-			m_modRefs = new ModuleReferenceCollection (this);
-			m_asmRefs = new AssemblyNameReferenceCollection (this);
-			m_res = new ResourceCollection (this);
-			m_types = new TypeDefinitionCollection (this);
-			m_refs = new TypeReferenceCollection (this);
-			m_members = new MemberReferenceCollection (this);
+				return HasImage && Image.HasTable (Table.ExportedType);
+			}
+		}
+
+		public Collection<ExportedType> ExportedTypes {
+			get {
+				if (exported_types != null)
+					return exported_types;
 
-			m_controller = new ReflectionController (this);
-			m_resolver = new MetadataResolver (asm);
+				if (HasImage)
+					return exported_types = Read (this, (_, reader) => reader.ReadExportedTypes ());
+
+				return exported_types = new Collection<ExportedType> ();
+			}
 		}
 
-		public IMetadataTokenProvider LookupByToken (MetadataToken token)
-		{
-			return m_controller.Reader.LookupByToken (token);
+		public MethodDefinition EntryPoint {
+			get {
+				if (entry_point != null)
+					return entry_point;
+
+				if (HasImage)
+					return entry_point = Read (this, (_, reader) => reader.ReadEntryPoint ());
+
+				return entry_point = null;
+			}
+			set { entry_point = value; }
 		}
 
-		public IMetadataTokenProvider LookupByToken (TokenType table, int rid)
+		internal ModuleDefinition ()
 		{
-			return LookupByToken (new MetadataToken (table, (uint) rid));
+			this.MetadataSystem = new MetadataSystem ();
+			this.token = new MetadataToken (TokenType.Module, 1);
+			this.assembly_resolver = GlobalAssemblyResolver.Instance;
 		}
 
-		void CheckContext (TypeDefinition context)
+		internal ModuleDefinition (Image image)
+			: this ()
 		{
-			if (context.Module != this)
-				throw new ArgumentException ("The context parameter does not belongs to this module");
+			this.Image = image;
+			this.kind = image.Kind;
+			this.runtime = image.Runtime;
+			this.architecture = image.Architecture;
+			this.attributes = image.Attributes;
+			this.fq_name = image.FileName;
 
-			CheckGenericParameterProvider (context);
+			this.reader = new MetadataReader (this);
 		}
 
-		void CheckContext (MethodDefinition context)
+		public bool HasTypeReference (string fullName)
 		{
-			CheckGenericParameterProvider (context);
+			return HasTypeReference (string.Empty, fullName);
 		}
 
-		static void CheckGenericParameterProvider (IGenericParameterProvider context)
+		public bool HasTypeReference (string scope, string fullName)
 		{
-			if (context == null)
-				throw new ArgumentNullException ("context");
-			if (context.GenericParameters.Count == 0)
-				throw new ArgumentException ("The context parameter is not a generic type");
+			CheckFullName (fullName);
+
+			if (!HasImage)
+				return false;
+
+			return Read (this, (_, reader) => reader.GetTypeReference (scope, fullName) != null);
 		}
 
-		ImportContext GetContext ()
+		public bool TryGetTypeReference (string fullName, out TypeReference type)
 		{
-			return new ImportContext (m_controller.Importer);
+			return TryGetTypeReference (string.Empty, fullName, out type);
 		}
 
-		static ImportContext GetContext (IImporter importer)
+		public bool TryGetTypeReference (string scope, string fullName, out TypeReference type)
 		{
-			return new ImportContext (importer);
+			CheckFullName (fullName);
+
+			if (!HasImage) {
+				type = null;
+				return false;
+			}
+
+			return (type = Read (this, (_, reader) => reader.GetTypeReference (scope, fullName))) != null;
 		}
 
-		ImportContext GetContext (TypeDefinition context)
+		public IEnumerable<TypeReference> GetTypeReferences ()
 		{
-			return new ImportContext (m_controller.Importer, context);
+			if (!HasImage)
+				return Empty<TypeReference>.Array;
+
+			return Read (this, (_, reader) => reader.GetTypeReferences ());
 		}
 
-		ImportContext GetContext (MethodDefinition context)
+		public IEnumerable<MemberReference> GetMemberReferences ()
 		{
-			return new ImportContext (m_controller.Importer, context);
+			if (!HasImage)
+				return Empty<MemberReference>.Array;
+
+			return Read (this, (_, reader) => reader.GetMemberReferences ());
 		}
 
-		static ImportContext GetContext (IImporter importer, TypeDefinition context)
+		public TypeDefinition GetType (string fullName)
 		{
-			return new ImportContext (importer, context);
+			CheckFullName (fullName);
+
+			var position = fullName.IndexOf ('/');
+			if (position > 0)
+				return GetNestedType (fullName);
+
+			return ((TypeDefinitionCollection) this.Types).GetType (fullName);
 		}
 
-		public TypeReference Import (Type type)
+		public TypeDefinition GetType (string @namespace, string name)
 		{
-			if (type == null)
-				throw new ArgumentNullException ("type");
+			Mixin.CheckName (name);
 
-			return m_controller.Helper.ImportSystemType (type, GetContext ());
+			return ((TypeDefinitionCollection) this.Types).GetType (@namespace ?? string.Empty, name);
 		}
 
-		public TypeReference Import (Type type, TypeDefinition context)
+		static void CheckFullName (string fullName)
 		{
-			if (type == null)
-				throw new ArgumentNullException ("type");
-			CheckContext (context);
-
-			return m_controller.Helper.ImportSystemType (type, GetContext (context));
+			if (fullName == null)
+				throw new ArgumentNullException ("fullName");
+			if (fullName.Length == 0)
+				throw new ArgumentException ();
 		}
 
-		public TypeReference Import (Type type, MethodDefinition context)
+		TypeDefinition GetNestedType (string fullname)
 		{
+			var names = fullname.Split ('/');
+			var type = GetType (names [0]);
+
 			if (type == null)
-				throw new ArgumentNullException ("type");
-			CheckContext (context);
+				return null;
+
+			for (int i = 1; i < names.Length; i++) {
+				var nested_type = type.GetNestedType (names [i]);
+				if (nested_type == null)
+					return null;
 
-			return m_controller.Helper.ImportSystemType (type, GetContext (context));
+				type = nested_type;
+			}
+
+			return type;
 		}
 
-		public MethodReference Import (SR.MethodBase meth)
+		internal FieldDefinition Resolve (FieldReference field)
 		{
-			if (meth == null)
-				throw new ArgumentNullException ("meth");
+			return MetadataResolver.Resolve (AssemblyResolver, field);
+		}
 
-			if (meth is SR.ConstructorInfo)
-				return m_controller.Helper.ImportConstructorInfo (
-					meth as SR.ConstructorInfo, GetContext ());
-			else
-				return m_controller.Helper.ImportMethodInfo (
-					meth as SR.MethodInfo, GetContext ());
+		internal MethodDefinition Resolve (MethodReference method)
+		{
+			return MetadataResolver.Resolve (AssemblyResolver, method);
 		}
 
-		public MethodReference Import (SR.MethodBase meth, TypeDefinition context)
+		internal TypeDefinition Resolve (TypeReference type)
 		{
-			if (meth == null)
-				throw new ArgumentNullException ("meth");
-			CheckContext (context);
+			return MetadataResolver.Resolve (AssemblyResolver, type);
+		}
 
-			ImportContext import_context = GetContext (context);
+#if !READ_ONLY
 
-			if (meth is SR.ConstructorInfo)
-				return m_controller.Helper.ImportConstructorInfo (
-					meth as SR.ConstructorInfo, import_context);
-			else
-				return m_controller.Helper.ImportMethodInfo (
-					meth as SR.MethodInfo, import_context);
+		static void CheckType (object type)
+		{
+			if (type == null)
+				throw new ArgumentNullException ("type");
 		}
 
-		public FieldReference Import (SR.FieldInfo field)
+		static void CheckField (object field)
 		{
 			if (field == null)
 				throw new ArgumentNullException ("field");
+		}
 
-			return m_controller.Helper.ImportFieldInfo (field, GetContext ());
+		static void CheckMethod (object method)
+		{
+			if (method == null)
+				throw new ArgumentNullException ("method");
 		}
 
-		public FieldReference Import (SR.FieldInfo field, TypeDefinition context)
+		static void CheckContext (IGenericParameterProvider context, ModuleDefinition module)
 		{
-			if (field == null)
-				throw new ArgumentNullException ("field");
-			CheckContext (context);
+			if (context == null)
+				return;
 
-			return m_controller.Helper.ImportFieldInfo (field, GetContext (context));
+			if (context.Module != module)
+				throw new ArgumentException ();
 		}
 
-		public FieldReference Import (SR.FieldInfo field, MethodDefinition context)
+#if !CF
+		public TypeReference Import (Type type)
 		{
-			if (field == null)
-				throw new ArgumentNullException ("field");
-			CheckContext (context);
+			CheckType (type);
 
-			return m_controller.Helper.ImportFieldInfo (field, GetContext (context));
+			return MetadataImporter.ImportType (type, null, ImportGenericKind.Definition);
 		}
 
-		public TypeReference Import (TypeReference type)
+		public TypeReference Import (Type type, TypeReference context)
 		{
-			if (type == null)
-				throw new ArgumentNullException ("type");
+			return Import (type, (IGenericParameterProvider) context);
+		}
 
-			return m_controller.Importer.ImportTypeReference (type, GetContext ());
+		public TypeReference Import (Type type, MethodReference context)
+		{
+			return Import (type, (IGenericParameterProvider) context);
 		}
 
-		public TypeReference Import (TypeReference type, TypeDefinition context)
+		TypeReference Import (Type type, IGenericParameterProvider context)
 		{
-			if (type == null)
-				throw new ArgumentNullException ("type");
-			CheckContext (context);
+			CheckType (type);
+			CheckContext (context, this);
 
-			return m_controller.Importer.ImportTypeReference (type, GetContext (context));
+			return MetadataImporter.ImportType (
+				type,
+				(IGenericContext) context,
+				context != null
+					? ImportGenericKind.Open
+					: ImportGenericKind.Definition);
 		}
 
-		public TypeReference Import (TypeReference type, MethodDefinition context)
+		public FieldReference Import (SR.FieldInfo field)
 		{
-			if (type == null)
-				throw new ArgumentNullException ("type");
-			CheckContext (context);
+			CheckField (field);
 
-			return m_controller.Importer.ImportTypeReference (type, GetContext (context));
+			return MetadataImporter.ImportField (field, null);
 		}
 
-		public MethodReference Import (MethodReference meth)
+		public FieldReference Import (SR.FieldInfo field, TypeReference context)
 		{
-			if (meth == null)
-				throw new ArgumentNullException ("meth");
+			return Import (field, (IGenericParameterProvider) context);
+		}
 
-			return m_controller.Importer.ImportMethodReference (meth, GetContext ());
+		public FieldReference Import (SR.FieldInfo field, MethodReference context)
+		{
+			return Import (field, (IGenericParameterProvider) context);
 		}
 
-		public MethodReference Import (MethodReference meth, TypeDefinition context)
+		FieldReference Import (SR.FieldInfo field, IGenericParameterProvider context)
 		{
-			if (meth == null)
-				throw new ArgumentNullException ("meth");
-			CheckContext (context);
+			CheckField (field);
+			CheckContext (context, this);
 
-			return m_controller.Importer.ImportMethodReference (meth, GetContext (context));
+			return MetadataImporter.ImportField (field, (IGenericContext) context);
 		}
 
-		public MethodReference Import (MethodReference meth, MethodDefinition context)
+		public MethodReference Import (SR.MethodBase method)
 		{
-			if (meth == null)
-				throw new ArgumentNullException ("meth");
-			CheckContext (context);
+			CheckMethod (method);
 
-			return m_controller.Importer.ImportMethodReference (meth, GetContext (context));
+			return MetadataImporter.ImportMethod (method, null, ImportGenericKind.Definition);
 		}
 
-		public FieldReference Import (FieldReference field)
+		public MethodReference Import (SR.MethodBase method, TypeReference context)
 		{
-			if (field == null)
-				throw new ArgumentNullException ("field");
+			return Import (method, (IGenericParameterProvider) context);
+		}
 
-			return m_controller.Importer.ImportFieldReference (field, GetContext ());
+		public MethodReference Import (SR.MethodBase method, MethodReference context)
+		{
+			return Import (method, (IGenericParameterProvider) context);
 		}
 
-		public FieldReference Import (FieldReference field, TypeDefinition context)
+		MethodReference Import (SR.MethodBase method, IGenericParameterProvider context)
 		{
-			if (field == null)
-				throw new ArgumentNullException ("field");
-			CheckContext (context);
+			CheckMethod (method);
+			CheckContext (context, this);
 
-			return m_controller.Importer.ImportFieldReference (field, GetContext (context));
+			return MetadataImporter.ImportMethod (method,
+				(IGenericContext) context,
+				context != null
+					? ImportGenericKind.Open
+					: ImportGenericKind.Definition);
 		}
+#endif
 
-		public FieldReference Import (FieldReference field, MethodDefinition context)
+		public TypeReference Import (TypeReference type)
 		{
-			if (field == null)
-				throw new ArgumentNullException ("field");
-			CheckContext (context);
+			CheckType (type);
+
+			if (type.Module == this)
+				return type;
 
-			return m_controller.Importer.ImportFieldReference (field, GetContext (context));
+			return MetadataImporter.ImportType (type, null);
 		}
 
-		static FieldDefinition ImportFieldDefinition (FieldDefinition field, ImportContext context)
+		public TypeReference Import (TypeReference type, TypeReference context)
 		{
-			return FieldDefinition.Clone (field, context);
+			return Import (type, (IGenericParameterProvider) context);
 		}
 
-		static MethodDefinition ImportMethodDefinition (MethodDefinition meth, ImportContext context)
+		public TypeReference Import (TypeReference type, MethodReference context)
 		{
-			return MethodDefinition.Clone (meth, context);
+			return Import (type, (IGenericParameterProvider) context);
 		}
 
-		static TypeDefinition ImportTypeDefinition (TypeDefinition type, ImportContext context)
+		TypeReference Import (TypeReference type, IGenericParameterProvider context)
 		{
-			return TypeDefinition.Clone (type, context);
+			CheckType (type);
+
+			if (type.Module == this)
+				return type;
+
+			CheckContext (context, this);
+
+			return MetadataImporter.ImportType (type, (IGenericContext) context);
 		}
 
-		public TypeDefinition Inject (TypeDefinition type)
+		public FieldReference Import (FieldReference field)
 		{
-			return Inject (type, m_controller.Importer);
+			CheckField (field);
+
+			if (field.Module == this)
+				return field;
+
+			return MetadataImporter.ImportField (field, null);
 		}
 
-		public TypeDefinition Inject (TypeDefinition type, IImporter importer)
+		public FieldReference Import (FieldReference field, TypeReference context)
 		{
-			if (type == null)
-				throw new ArgumentNullException ("type");
-			if (importer == null)
-				throw new ArgumentNullException ("importer");
+			return Import (field, (IGenericParameterProvider) context);
+		}
 
-			TypeDefinition definition = ImportTypeDefinition (type, GetContext (importer));
-			this.Types.Add (definition);
-			return definition;
+		public FieldReference Import (FieldReference field, MethodReference context)
+		{
+			return Import (field, (IGenericParameterProvider) context);
 		}
 
-		public TypeDefinition Inject (TypeDefinition type, TypeDefinition context)
+		FieldReference Import (FieldReference field, IGenericParameterProvider context)
 		{
-			return Inject (type, context, m_controller.Importer);
+			CheckField (field);
+
+			if (field.Module == this)
+				return field;
+
+			CheckContext (context, this);
+
+			return MetadataImporter.ImportField (field, (IGenericContext) context);
 		}
 
-		public TypeDefinition Inject (TypeDefinition type, TypeDefinition context, IImporter importer)
+		public MethodReference Import (MethodReference method)
 		{
-			Check (type, context, importer);
+			CheckMethod (method);
 
-			TypeDefinition definition = ImportTypeDefinition (type, GetContext (importer, context));
-			context.NestedTypes.Add (definition);
-			return definition;
+			if (method.Module == this)
+				return method;
+
+			return MetadataImporter.ImportMethod (method, null);
 		}
 
-		public MethodDefinition Inject (MethodDefinition meth, TypeDefinition context)
+		public MethodReference Import (MethodReference method, TypeReference context)
 		{
-			return Inject (meth, context, m_controller.Importer);
+			return Import (method, (IGenericParameterProvider) context);
 		}
 
-		void Check (IMemberDefinition definition, TypeDefinition context, IImporter importer)
+		public MethodReference Import (MethodReference method, MethodReference context)
 		{
-			if (definition == null)
-				throw new ArgumentNullException ("definition");
-			if (context == null)
-				throw new ArgumentNullException ("context");
-			if (importer == null)
-				throw new ArgumentNullException ("importer");
-			if (context.Module != this)
-				throw new ArgumentException ("The context parameter does not belongs to this module");
+			return Import (method, (IGenericParameterProvider) context);
+		}
+
+		MethodReference Import (MethodReference method, IGenericParameterProvider context)
+		{
+			CheckMethod (method);
+
+			if (method.Module == this)
+				return method;
+
+			CheckContext (context, this);
+
+			return MetadataImporter.ImportMethod (method, (IGenericContext) context);
 		}
 
-		public MethodDefinition Inject (MethodDefinition meth, TypeDefinition context, IImporter importer)
+#endif
+
+		public IMetadataTokenProvider LookupToken (int token)
 		{
-			Check (meth, context, importer);
+			return LookupToken (new MetadataToken ((uint) token));
+		}
 
-			MethodDefinition definition = ImportMethodDefinition (meth, GetContext (importer, context));
-			context.Methods.Add (definition);
-			return definition;
+		public IMetadataTokenProvider LookupToken (MetadataToken token)
+		{
+			return Read (this, (_, reader) => reader.LookupToken (token));
 		}
 
-		public FieldDefinition Inject (FieldDefinition field, TypeDefinition context)
+		internal TRet Read<TItem, TRet> (TItem item, Func<TItem, MetadataReader, TRet> read)
 		{
-			return Inject (field, context, m_controller.Importer);
+			var position = reader.position;
+			var context = reader.context;
+
+			var ret = read (item, reader);
+
+			reader.position = position;
+			reader.context = context;
+
+			return ret;
 		}
 
-		public FieldDefinition Inject (FieldDefinition field, TypeDefinition context, IImporter importer)
+		void ProcessDebugHeader ()
 		{
-			Check (field, context, importer);
+			if (Image == null || Image.Debug.IsZero)
+				return;
+
+			byte [] header;
+			var directory = Image.GetDebugHeader (out header);
+
+			if (!SymbolReader.ProcessDebugHeader (directory, header))
+				throw new InvalidOperationException ();
+		}
+
+#if !READ_ONLY
 
-			FieldDefinition definition = ImportFieldDefinition (field, GetContext (importer, context));
-			context.Fields.Add (definition);
-			return definition;
+		public static ModuleDefinition CreateModule (string name, ModuleKind kind)
+		{
+			return CreateModule (name, new ModuleParameters { Kind = kind });
 		}
 
-		public void FullLoad ()
+		public static ModuleDefinition CreateModule (string name, ModuleParameters parameters)
 		{
-			if (m_manifestOnly)
-				m_controller.Reader.VisitModuleDefinition (this);
+			Mixin.CheckName (name);
+			Mixin.CheckParameters (parameters);
+
+			var module = new ModuleDefinition {
+				Name = name,
+				kind = parameters.Kind,
+				runtime = parameters.Runtime,
+				architecture = parameters.Architecture,
+				mvid = Guid.NewGuid (),
+				Attributes = ModuleAttributes.ILOnly,
+			};
 
-			foreach (TypeDefinition type in this.Types) {
-				foreach (MethodDefinition meth in type.Methods)
-					meth.LoadBody ();
-				foreach (MethodDefinition ctor in type.Constructors)
-					ctor.LoadBody ();
+			if (parameters.AssemblyResolver != null)
+				module.assembly_resolver = parameters.AssemblyResolver;
+
+			if (parameters.Kind != ModuleKind.NetModule) {
+				var assembly = new AssemblyDefinition ();
+				module.assembly = assembly;
+				module.assembly.Name = new AssemblyNameDefinition (name, new Version (0, 0));
+				assembly.main_module = module;
 			}
 
-			if (m_controller.Reader.SymbolReader == null)
-				return;
+			module.Types.Add (new TypeDefinition (string.Empty, "<Module>", TypeAttributes.NotPublic));
 
-			m_controller.Reader.SymbolReader.Dispose ();
-			m_controller.Reader.SymbolReader = null;
+			return module;
 		}
 
-		public void LoadSymbols ()
+#endif
+
+		public void ReadSymbols ()
 		{
-			m_controller.Reader.SymbolReader = SymbolStoreHelper.GetReader (this);
+			if (string.IsNullOrEmpty (fq_name))
+				throw new InvalidOperationException ();
+
+			var provider = SymbolProvider.GetPlatformReaderProvider ();
+
+			SymbolReader = provider.GetSymbolReader (this, fq_name);
+
+			ProcessDebugHeader ();
 		}
 
-		public void LoadSymbols (ISymbolReader reader)
+		public void ReadSymbols (ISymbolReader reader)
 		{
-			m_controller.Reader.SymbolReader = reader;
+			if (reader == null)
+				throw new ArgumentNullException ("reader");
+
+			SymbolReader = reader;
+
+			ProcessDebugHeader ();
 		}
 
-		public void SaveSymbols ()
+		public static ModuleDefinition ReadModule (string fileName)
 		{
-			m_controller.Writer.SaveSymbols = true;
+			return ReadModule (fileName, new ReaderParameters (ReadingMode.Deferred));
 		}
 
-		public void SaveSymbols (ISymbolWriter writer)
+		public static ModuleDefinition ReadModule (Stream stream)
 		{
-			SaveSymbols ();
-			m_controller.Writer.SymbolWriter = writer;
+			return ReadModule (stream, new ReaderParameters (ReadingMode.Deferred));
 		}
 
-		public void SaveSymbols (string outputDirectory)
+		public static ModuleDefinition ReadModule (string fileName, ReaderParameters parameters)
 		{
-			SaveSymbols ();
-			m_controller.Writer.OutputFile = outputDirectory;
+			using (var stream = GetFileStream (fileName, FileMode.Open, FileAccess.Read, FileShare.Read)) {
+				return ReadModule (stream, parameters);
+			}
 		}
 
-		public void SaveSymbols (string outputDirectory, ISymbolWriter writer)
+		static void CheckStream (object stream)
 		{
-			SaveSymbols (outputDirectory);
-			m_controller.Writer.SymbolWriter = writer;
+			if (stream == null)
+				throw new ArgumentNullException ("stream");
 		}
 
-		public byte [] GetAsByteArray (CustomAttribute ca)
+		public static ModuleDefinition ReadModule (Stream stream, ReaderParameters parameters)
 		{
-			CustomAttribute customAttr = ca;
-			if (!ca.Resolved)
-				if (customAttr.Blob != null)
-					return customAttr.Blob;
-				else
-					return new byte [0];
+			CheckStream (stream);
+			if (!stream.CanRead || !stream.CanSeek)
+				throw new ArgumentException ();
+			Mixin.CheckParameters (parameters);
 
-			return m_controller.Writer.SignatureWriter.CompressCustomAttribute (
-				ReflectionWriter.GetCustomAttributeSig (ca), ca.Constructor);
+			return ModuleReader.CreateModuleFrom (
+				ImageReader.ReadImageFrom (stream),
+				parameters);
 		}
 
-		public byte [] GetAsByteArray (SecurityDeclaration dec)
+		static Stream GetFileStream (string fileName, FileMode mode, FileAccess access, FileShare share)
 		{
-			// TODO - add support for 2.0 format
-			// note: the 1.x format is still supported in 2.0 so this isn't an immediate problem
-			if (!dec.Resolved)
-				return dec.Blob;
+			if (fileName == null)
+				throw new ArgumentNullException ("fileName");
+			if (fileName.Length == 0)
+				throw new ArgumentException ();
 
-#if !CF_1_0 && !CF_2_0
-			if (dec.PermissionSet != null)
-				return Encoding.Unicode.GetBytes (dec.PermissionSet.ToXml ().ToString ());
-#endif
+			return new FileStream (fileName, mode, access, share);
+		}
+
+#if !READ_ONLY
 
-			return new byte [0];
+		public void Write (string fileName)
+		{
+			Write (fileName, new WriterParameters ());
 		}
 
-		public CustomAttribute FromByteArray (MethodReference ctor, byte [] data)
+		public void Write (Stream stream)
 		{
-			return m_controller.Reader.GetCustomAttribute (ctor, data);
+			Write (stream, new WriterParameters ());
 		}
 
-		public SecurityDeclaration FromByteArray (SecurityAction action, byte [] declaration)
+		public void Write (string fileName, WriterParameters parameters)
 		{
-			if (m_secReader == null)
-				m_secReader = new SecurityDeclarationReader (Image.MetadataRoot, m_controller.Reader);
-			return m_secReader.FromByteArray (action, declaration);
+			using (var stream = GetFileStream (fileName, FileMode.Create, FileAccess.ReadWrite, FileShare.None)) {
+				Write (stream, parameters);
+			}
 		}
 
-		public override void Accept (IReflectionStructureVisitor visitor)
+		public void Write (Stream stream, WriterParameters parameters)
 		{
-			visitor.VisitModuleDefinition (this);
+			CheckStream (stream);
+			if (!stream.CanWrite || !stream.CanSeek)
+				throw new ArgumentException ();
+			Mixin.CheckParameters (parameters);
 
-			this.AssemblyReferences.Accept (visitor);
-			this.ModuleReferences.Accept (visitor);
-			this.Resources.Accept (visitor);
+			ModuleWriter.WriteModuleTo (this, stream, parameters);
 		}
 
-		public void Accept (IReflectionVisitor visitor)
+#endif
+
+	}
+
+	static partial class Mixin {
+
+		public static void CheckParameters (object parameters)
 		{
-			visitor.VisitModuleDefinition (this);
+			if (parameters == null)
+				throw new ArgumentNullException ("parameters");
+		}
 
-			this.Types.Accept (visitor);
-			this.TypeReferences.Accept (visitor);
+		public static bool HasImage (this ModuleDefinition self)
+		{
+			return self != null && self.HasImage;
 		}
 
-		public override string ToString ()
+		public static string GetFullyQualifiedName (this Stream self)
 		{
-			string s = (m_main ? "(main), Mvid=" : "Mvid=");
-			return s + m_mvid;
+#if !SILVERLIGHT
+			var file_stream = self as FileStream;
+			if (file_stream == null)
+				return string.Empty;
+
+			return Path.GetFullPath (file_stream.Name);
+#else
+			return string.Empty;
+#endif
+		}
+
+		public static TargetRuntime ParseRuntime (this string self)
+		{
+			switch (self [1]) {
+			case '1':
+				return self [3] == '0'
+					? TargetRuntime.Net_1_0
+					: TargetRuntime.Net_1_1;
+			case '2':
+				return TargetRuntime.Net_2_0;
+			case '4':
+			default:
+				return TargetRuntime.Net_4_0;
+			}
 		}
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/ModuleDefinitionCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil/ModuleDefinitionCollection.cs
deleted file mode 100644
index 71d1619..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil/ModuleDefinitionCollection.cs
+++ /dev/null
@@ -1,93 +0,0 @@
-//
-// ModuleDefinitionCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Wed Sep 27 12:46:54 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-	using System;
-	using System.Collections;
-
-	using Mono.Cecil.Cil;
-
-	public sealed class ModuleDefinitionCollection : CollectionBase, IReflectionStructureVisitable {
-
-		AssemblyDefinition m_container;
-
-		public ModuleDefinition this [int index] {
-			get { return List [index] as ModuleDefinition; }
-			set { List [index] = value; }
-		}
-
-		public AssemblyDefinition Container {
-			get { return m_container; }
-		}
-
-		public ModuleDefinitionCollection (AssemblyDefinition container)
-		{
-			m_container = container;
-		}
-
-		public void Add (ModuleDefinition value)
-		{
-			List.Add (value);
-		}
-
-		public bool Contains (ModuleDefinition value)
-		{
-			return List.Contains (value);
-		}
-
-		public int IndexOf (ModuleDefinition value)
-		{
-			return List.IndexOf (value);
-		}
-
-		public void Insert (int index, ModuleDefinition value)
-		{
-			List.Insert (index, value);
-		}
-
-		public void Remove (ModuleDefinition value)
-		{
-			List.Remove (value);
-		}
-
-		protected override void OnValidate (object o)
-		{
-			if (! (o is ModuleDefinition))
-				throw new ArgumentException ("Must be of type " + typeof (ModuleDefinition).FullName);
-		}
-
-		public void Accept (IReflectionStructureVisitor visitor)
-		{
-			visitor.VisitModuleDefinitionCollection (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/ModuleKind.cs b/mcs/class/Mono.Cecil/Mono.Cecil/ModuleKind.cs
new file mode 100644
index 0000000..eb57890
--- /dev/null
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/ModuleKind.cs
@@ -0,0 +1,52 @@
+//
+// ModuleKind.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+namespace Mono.Cecil {
+
+	public enum ModuleKind {
+		Dll,
+		Console,
+		Windows,
+		NetModule,
+	}
+
+	public enum TargetArchitecture {
+		I386,
+		AMD64,
+		IA64,
+	}
+
+	[Flags]
+	public enum ModuleAttributes {
+		ILOnly = 1,
+		Required32Bit = 2,
+		StrongNameSigned = 8,
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/ModuleReference.cs b/mcs/class/Mono.Cecil/Mono.Cecil/ModuleReference.cs
index 713b96a..0b6e49a 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/ModuleReference.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/ModuleReference.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -28,44 +28,40 @@
 
 namespace Mono.Cecil {
 
-	using System.Collections;
+	public class ModuleReference : IMetadataScope {
 
-	using Mono.Cecil;
-	using Mono.Cecil.Metadata;
+		string name;
 
-	public class ModuleReference : IMetadataScope, IAnnotationProvider, IReflectionStructureVisitable {
-
-		string m_name;
-		MetadataToken m_token;
-		IDictionary m_annotations;
+		internal MetadataToken token;
 
 		public string Name {
-			get { return m_name; }
-			set { m_name = value; }
+			get { return name; }
+			set { name = value; }
+		}
+
+		public virtual MetadataScopeType MetadataScopeType {
+			get { return MetadataScopeType.ModuleReference; }
 		}
 
 		public MetadataToken MetadataToken {
-			get { return m_token; }
-			set { m_token = value; }
+			get { return token; }
+			set { token = value; }
 		}
 
-		IDictionary IAnnotationProvider.Annotations {
-			get {
-				if (m_annotations == null)
-					m_annotations = new Hashtable ();
-				return m_annotations;
-			}
+		internal ModuleReference ()
+		{
+			this.token = new MetadataToken (TokenType.ModuleRef);
 		}
 
 		public ModuleReference (string name)
+			: this ()
 		{
-			m_name = name;
+			this.name = name;
 		}
 
-		public virtual void Accept (IReflectionStructureVisitor visitor)
+		public override string ToString ()
 		{
-			visitor.VisitModuleReference (this);
+			return name;
 		}
 	}
 }
-
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/ModuleReferenceCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil/ModuleReferenceCollection.cs
deleted file mode 100644
index 03057b3..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil/ModuleReferenceCollection.cs
+++ /dev/null
@@ -1,93 +0,0 @@
-//
-// ModuleReferenceCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Wed Sep 27 12:46:53 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-	using System;
-	using System.Collections;
-
-	using Mono.Cecil.Cil;
-
-	public sealed class ModuleReferenceCollection : CollectionBase, IReflectionStructureVisitable {
-
-		ModuleDefinition m_container;
-
-		public ModuleReference this [int index] {
-			get { return List [index] as ModuleReference; }
-			set { List [index] = value; }
-		}
-
-		public ModuleDefinition Container {
-			get { return m_container; }
-		}
-
-		public ModuleReferenceCollection (ModuleDefinition container)
-		{
-			m_container = container;
-		}
-
-		public void Add (ModuleReference value)
-		{
-			List.Add (value);
-		}
-
-		public bool Contains (ModuleReference value)
-		{
-			return List.Contains (value);
-		}
-
-		public int IndexOf (ModuleReference value)
-		{
-			return List.IndexOf (value);
-		}
-
-		public void Insert (int index, ModuleReference value)
-		{
-			List.Insert (index, value);
-		}
-
-		public void Remove (ModuleReference value)
-		{
-			List.Remove (value);
-		}
-
-		protected override void OnValidate (object o)
-		{
-			if (! (o is ModuleReference))
-				throw new ArgumentException ("Must be of type " + typeof (ModuleReference).FullName);
-		}
-
-		public void Accept (IReflectionStructureVisitor visitor)
-		{
-			visitor.VisitModuleReferenceCollection (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/NativeType.cs b/mcs/class/Mono.Cecil/Mono.Cecil/NativeType.cs
index c0df049..afa107f 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/NativeType.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/NativeType.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -29,9 +29,9 @@
 namespace Mono.Cecil {
 
 	public enum NativeType {
-		NONE = 0x66,
+		None = 0x66,
 
-		BOOLEAN = 0x02,
+		Boolean = 0x02,
 		I1 = 0x03,
 		U1 = 0x04,
 		I2 = 0x05,
@@ -42,32 +42,32 @@ namespace Mono.Cecil {
 		U8 = 0x0a,
 		R4 = 0x0b,
 		R8 = 0x0c,
-		LPSTR = 0x14,
-		INT = 0x1f,
-		UINT = 0x20,
-		FUNC = 0x26,
-		ARRAY = 0x2a,
+		LPStr = 0x14,
+		Int = 0x1f,
+		UInt = 0x20,
+		Func = 0x26,
+		Array = 0x2a,
 
 		// Msft specific
-		CURRENCY = 0x0f,
-		BSTR = 0x13,
-		LPWSTR = 0x15,
-		LPTSTR = 0x16,
-		FIXEDSYSSTRING = 0x17,
-		IUNKNOWN = 0x19,
-		IDISPATCH = 0x1a,
-		STRUCT = 0x1b,
-		INTF = 0x1c,
-		SAFEARRAY = 0x1d,
-		FIXEDARRAY = 0x1e,
-		BYVALSTR = 0x22,
-		ANSIBSTR = 0x23,
-		TBSTR = 0x24,
-		VARIANTBOOL = 0x25,
-		ASANY = 0x28,
-		LPSTRUCT = 0x2b,
-		CUSTOMMARSHALER = 0x2c,
-		ERROR = 0x2d,
-		MAX = 0x50
+		Currency = 0x0f,
+		BStr = 0x13,
+		LPWStr = 0x15,
+		LPTStr = 0x16,
+		FixedSysString = 0x17,
+		IUnknown = 0x19,
+		IDispatch = 0x1a,
+		Struct = 0x1b,
+		IntF = 0x1c,
+		SafeArray = 0x1d,
+		FixedArray = 0x1e,
+		ByValStr = 0x22,
+		ANSIBStr = 0x23,
+		TBStr = 0x24,
+		VariantBool = 0x25,
+		ASAny = 0x28,
+		LPStruct = 0x2b,
+		CustomMarshaler = 0x2c,
+		Error = 0x2d,
+		Max = 0x50
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/NestedTypeCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil/NestedTypeCollection.cs
deleted file mode 100644
index 9e0ee29..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil/NestedTypeCollection.cs
+++ /dev/null
@@ -1,128 +0,0 @@
-//
-// NestedTypeCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Fri Mar 30 18:43:57 +0200 2007
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-	using System;
-	using System.Collections;
-
-	using Mono.Cecil.Cil;
-
-	public sealed class NestedTypeCollection : CollectionBase, IReflectionVisitable {
-
-		TypeDefinition m_container;
-
-		public TypeDefinition this [int index] {
-			get { return List [index] as TypeDefinition; }
-			set { List [index] = value; }
-		}
-
-		public TypeDefinition Container {
-			get { return m_container; }
-		}
-
-		public NestedTypeCollection (TypeDefinition container)
-		{
-			m_container = container;
-		}
-
-		public void Add (TypeDefinition value)
-		{
-			Attach (value);
-
-			List.Add (value);
-		}
-
-
-		public new void Clear ()
-		{
-			foreach (TypeDefinition item in this)
-				Detach (item);
-
-			base.Clear ();
-		}
-
-		public bool Contains (TypeDefinition value)
-		{
-			return List.Contains (value);
-		}
-
-		public int IndexOf (TypeDefinition value)
-		{
-			return List.IndexOf (value);
-		}
-
-		public void Insert (int index, TypeDefinition value)
-		{
-			Attach (value);
-
-			List.Insert (index, value);
-		}
-
-		public void Remove (TypeDefinition value)
-		{
-			List.Remove (value);
-
-			Detach (value);
-		}
-
-
-		public new void RemoveAt (int index)
-		{
-			TypeDefinition item = this [index];
-			Remove (item);
-		}
-
-		protected override void OnValidate (object o)
-		{
-			if (! (o is TypeDefinition))
-				throw new ArgumentException ("Must be of type " + typeof (TypeDefinition).FullName);
-		}
-
-		void Attach (MemberReference member)
-		{
-			if (member.DeclaringType != null)
-				throw new ReflectionException ("Member already attached, clone it instead");
-
-			member.DeclaringType = m_container;
-		}
-
-		void Detach (MemberReference member)
-		{
-			member.DeclaringType = null;
-		}
-
-		public void Accept (IReflectionVisitor visitor)
-		{
-			visitor.VisitNestedTypeCollection (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/OverrideCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil/OverrideCollection.cs
deleted file mode 100644
index 77341af..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil/OverrideCollection.cs
+++ /dev/null
@@ -1,93 +0,0 @@
-//
-// OverrideCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Wed Sep 27 12:46:53 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-	using System;
-	using System.Collections;
-
-	using Mono.Cecil.Cil;
-
-	public sealed class OverrideCollection : CollectionBase, IReflectionVisitable {
-
-		MethodDefinition m_container;
-
-		public MethodReference this [int index] {
-			get { return List [index] as MethodReference; }
-			set { List [index] = value; }
-		}
-
-		public MethodDefinition Container {
-			get { return m_container; }
-		}
-
-		public OverrideCollection (MethodDefinition container)
-		{
-			m_container = container;
-		}
-
-		public void Add (MethodReference value)
-		{
-			List.Add (value);
-		}
-
-		public bool Contains (MethodReference value)
-		{
-			return List.Contains (value);
-		}
-
-		public int IndexOf (MethodReference value)
-		{
-			return List.IndexOf (value);
-		}
-
-		public void Insert (int index, MethodReference value)
-		{
-			List.Insert (index, value);
-		}
-
-		public void Remove (MethodReference value)
-		{
-			List.Remove (value);
-		}
-
-		protected override void OnValidate (object o)
-		{
-			if (! (o is MethodReference))
-				throw new ArgumentException ("Must be of type " + typeof (MethodReference).FullName);
-		}
-
-		public void Accept (IReflectionVisitor visitor)
-		{
-			visitor.VisitOverrideCollection (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/PInvokeAttributes.cs b/mcs/class/Mono.Cecil/Mono.Cecil/PInvokeAttributes.cs
index 30d3935..fc94692 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/PInvokeAttributes.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/PInvokeAttributes.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,9 +26,9 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
+using System;
 
-	using System;
+namespace Mono.Cecil {
 
 	[Flags]
 	public enum PInvokeAttributes : ushort {
@@ -40,6 +40,7 @@ namespace Mono.Cecil {
 		CharSetAnsi			= 0x0002,
 		CharSetUnicode		= 0x0004,
 		CharSetAuto			= 0x0006,
+
 		SupportsLastError	= 0x0040,	// Information about target function. Not relevant for fields
 
 		// Calling convetion
@@ -48,6 +49,14 @@ namespace Mono.Cecil {
 		CallConvCdecl		= 0x0200,
 		CallConvStdCall		= 0x0300,
 		CallConvThiscall	= 0x0400,
-		CallConvFastcall	= 0x0500
+		CallConvFastcall	= 0x0500,
+
+		BestFitMask			= 0x0030,
+		BestFitEnabled		= 0x0010,
+		BestFidDisabled		= 0x0020,
+
+		ThrowOnUnmappableCharMask = 0x3000,
+		ThrowOnUnmappableCharEnabled = 0x1000,
+		ThrowOnUnmappableCharDisabled = 0x2000,
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/PInvokeInfo.cs b/mcs/class/Mono.Cecil/Mono.Cecil/PInvokeInfo.cs
index 40c1551..53aae2c 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/PInvokeInfo.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/PInvokeInfo.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -28,173 +28,111 @@
 
 namespace Mono.Cecil {
 
-	public sealed class PInvokeInfo : IReflectionVisitable {
+	public sealed class PInvokeInfo {
 
-		MethodDefinition m_meth;
-
-		PInvokeAttributes m_attributes;
-		string m_entryPoint;
-		ModuleReference m_module;
-
-		public MethodDefinition Method {
-			get { return m_meth; }
-		}
+		ushort attributes;
+		string entry_point;
+		ModuleReference module;
 
 		public PInvokeAttributes Attributes {
-			get { return m_attributes; }
-			set { m_attributes = value; }
+			get { return (PInvokeAttributes) attributes; }
+			set { attributes = (ushort) value; }
 		}
 
 		public string EntryPoint {
-			get { return m_entryPoint; }
-			set { m_entryPoint = value; }
+			get { return entry_point; }
+			set { entry_point = value; }
 		}
 
 		public ModuleReference Module {
-			get { return m_module; }
-			set { m_module = value; }
+			get { return module; }
+			set { module = value; }
 		}
 
 		#region PInvokeAttributes
 
 		public bool IsNoMangle {
-			get { return (m_attributes & PInvokeAttributes.NoMangle) != 0; }
-			set {
-				if (value)
-					m_attributes |= PInvokeAttributes.NoMangle;
-				else
-					m_attributes &= ~PInvokeAttributes.NoMangle;
-			}
+			get { return attributes.GetAttributes ((ushort) PInvokeAttributes.NoMangle); }
+			set { attributes = attributes.SetAttributes ((ushort) PInvokeAttributes.NoMangle, value); }
 		}
 
 		public bool IsCharSetNotSpec {
-			get { return (m_attributes & PInvokeAttributes.CharSetMask) == PInvokeAttributes.CharSetNotSpec; }
-			set {
-				if (value) {
-					m_attributes &= ~PInvokeAttributes.CharSetMask;
-					m_attributes |= PInvokeAttributes.CharSetNotSpec;
-				} else
-					m_attributes &= ~(PInvokeAttributes.CharSetMask & PInvokeAttributes.CharSetNotSpec);
-			}
+			get { return attributes.GetMaskedAttributes((ushort) PInvokeAttributes.CharSetMask, (ushort) PInvokeAttributes.CharSetNotSpec); }
+			set { attributes = attributes.SetMaskedAttributes ((ushort) PInvokeAttributes.CharSetMask, (ushort) PInvokeAttributes.CharSetNotSpec, value); }
 		}
 
 		public bool IsCharSetAnsi {
-			get { return (m_attributes & PInvokeAttributes.CharSetMask) == PInvokeAttributes.CharSetAnsi; }
-			set {
-				if (value) {
-					m_attributes &= ~PInvokeAttributes.CharSetMask;
-					m_attributes |= PInvokeAttributes.CharSetAnsi;
-				} else
-					m_attributes &= ~(PInvokeAttributes.CharSetMask & PInvokeAttributes.CharSetAnsi);
-			}
+			get { return attributes.GetMaskedAttributes ((ushort) PInvokeAttributes.CharSetMask, (ushort) PInvokeAttributes.CharSetAnsi); }
+			set { attributes = attributes.SetMaskedAttributes ((ushort) PInvokeAttributes.CharSetMask, (ushort) PInvokeAttributes.CharSetAnsi, value); }
 		}
 
 		public bool IsCharSetUnicode {
-			get { return (m_attributes & PInvokeAttributes.CharSetMask) == PInvokeAttributes.CharSetUnicode; }
-			set {
-				if (value) {
-					m_attributes &= ~PInvokeAttributes.CharSetMask;
-					m_attributes |= PInvokeAttributes.CharSetUnicode;
-				} else
-					m_attributes &= ~(PInvokeAttributes.CharSetMask & PInvokeAttributes.CharSetUnicode);
-			}
+			get { return attributes.GetMaskedAttributes ((ushort) PInvokeAttributes.CharSetMask, (ushort) PInvokeAttributes.CharSetUnicode); }
+			set { attributes = attributes.SetMaskedAttributes ((ushort) PInvokeAttributes.CharSetMask, (ushort) PInvokeAttributes.CharSetUnicode, value); }
 		}
 
 		public bool IsCharSetAuto {
-			get { return (m_attributes & PInvokeAttributes.CharSetMask) == PInvokeAttributes.CharSetAuto; }
-			set {
-				if (value) {
-					m_attributes &= ~PInvokeAttributes.CharSetMask;
-					m_attributes |= PInvokeAttributes.CharSetAuto;
-				} else
-					m_attributes &= ~(PInvokeAttributes.CharSetMask & PInvokeAttributes.CharSetAuto);
-			}
+			get { return attributes.GetMaskedAttributes ((ushort) PInvokeAttributes.CharSetMask, (ushort) PInvokeAttributes.CharSetAuto); }
+			set { attributes = attributes.SetMaskedAttributes ((ushort) PInvokeAttributes.CharSetMask, (ushort) PInvokeAttributes.CharSetAuto, value); }
 		}
 
 		public bool SupportsLastError {
-			get { return (m_attributes & PInvokeAttributes.CharSetMask) == PInvokeAttributes.SupportsLastError; }
-			set {
-				if (value) {
-					m_attributes &= ~PInvokeAttributes.CharSetMask;
-					m_attributes |= PInvokeAttributes.SupportsLastError;
-				} else
-					m_attributes &= ~(PInvokeAttributes.CharSetMask & PInvokeAttributes.SupportsLastError);
-			}
+			get { return attributes.GetAttributes ((ushort) PInvokeAttributes.SupportsLastError); }
+			set { attributes = attributes.SetAttributes ((ushort) PInvokeAttributes.SupportsLastError, value); }
 		}
 
 		public bool IsCallConvWinapi {
-			get { return (m_attributes & PInvokeAttributes.CallConvMask) == PInvokeAttributes.CallConvWinapi; }
-			set {
-				if (value) {
-					m_attributes &= ~PInvokeAttributes.CallConvMask;
-					m_attributes |= PInvokeAttributes.CallConvWinapi;
-				} else
-					m_attributes &= ~(PInvokeAttributes.CallConvMask & PInvokeAttributes.CallConvWinapi);
-			}
+			get { return attributes.GetMaskedAttributes((ushort) PInvokeAttributes.CallConvMask, (ushort) PInvokeAttributes.CallConvWinapi); }
+			set { attributes = attributes.SetMaskedAttributes ((ushort) PInvokeAttributes.CallConvMask, (ushort) PInvokeAttributes.CallConvWinapi, value); }
 		}
 
 		public bool IsCallConvCdecl {
-			get { return (m_attributes & PInvokeAttributes.CallConvMask) == PInvokeAttributes.CallConvCdecl; }
-			set {
-				if (value) {
-					m_attributes &= ~PInvokeAttributes.CallConvMask;
-					m_attributes |= PInvokeAttributes.CallConvCdecl;
-				} else
-					m_attributes &= ~(PInvokeAttributes.CallConvMask & PInvokeAttributes.CallConvCdecl);
-			}
+			get { return attributes.GetMaskedAttributes ((ushort) PInvokeAttributes.CallConvMask, (ushort) PInvokeAttributes.CallConvCdecl); }
+			set { attributes = attributes.SetMaskedAttributes ((ushort) PInvokeAttributes.CallConvMask, (ushort) PInvokeAttributes.CallConvCdecl, value); }
 		}
 
 		public bool IsCallConvStdCall {
-			get { return (m_attributes & PInvokeAttributes.CallConvMask) == PInvokeAttributes.CallConvStdCall; }
-			set {
-				if (value) {
-					m_attributes &= ~PInvokeAttributes.CallConvMask;
-					m_attributes |= PInvokeAttributes.CallConvStdCall;
-				} else
-					m_attributes &= ~(PInvokeAttributes.CallConvMask & PInvokeAttributes.CallConvStdCall);
-			}
+			get { return attributes.GetMaskedAttributes ((ushort) PInvokeAttributes.CallConvMask, (ushort) PInvokeAttributes.CallConvStdCall); }
+			set { attributes = attributes.SetMaskedAttributes ((ushort) PInvokeAttributes.CallConvMask, (ushort) PInvokeAttributes.CallConvStdCall, value); }
 		}
 
 		public bool IsCallConvThiscall {
-			get { return (m_attributes & PInvokeAttributes.CallConvMask) == PInvokeAttributes.CallConvThiscall; }
-			set {
-				if (value) {
-					m_attributes &= ~PInvokeAttributes.CallConvMask;
-					m_attributes |= PInvokeAttributes.CallConvThiscall;
-				} else
-					m_attributes &= ~(PInvokeAttributes.CallConvMask & PInvokeAttributes.CallConvThiscall);
-			}
+			get { return attributes.GetMaskedAttributes ((ushort) PInvokeAttributes.CallConvMask, (ushort) PInvokeAttributes.CallConvThiscall); }
+			set { attributes = attributes.SetMaskedAttributes ((ushort) PInvokeAttributes.CallConvMask, (ushort) PInvokeAttributes.CallConvThiscall, value); }
 		}
 
 		public bool IsCallConvFastcall {
-			get { return (m_attributes & PInvokeAttributes.CallConvMask) == PInvokeAttributes.CallConvFastcall; }
-			set {
-				if (value) {
-					m_attributes &= ~PInvokeAttributes.CallConvMask;
-					m_attributes |= PInvokeAttributes.CallConvFastcall;
-				} else
-					m_attributes &= ~(PInvokeAttributes.CallConvMask & PInvokeAttributes.CallConvFastcall);
-			}
+			get { return attributes.GetMaskedAttributes ((ushort) PInvokeAttributes.CallConvMask, (ushort) PInvokeAttributes.CallConvFastcall); }
+			set { attributes = attributes.SetMaskedAttributes ((ushort) PInvokeAttributes.CallConvMask, (ushort) PInvokeAttributes.CallConvFastcall, value); }
 		}
 
-		#endregion
+		public bool IsBestFistEnabled {
+			get { return attributes.GetMaskedAttributes ((ushort) PInvokeAttributes.BestFitMask, (ushort) PInvokeAttributes.BestFitEnabled); }
+			set { attributes = attributes.SetMaskedAttributes ((ushort) PInvokeAttributes.BestFitMask, (ushort) PInvokeAttributes.BestFitEnabled, value); }
+		}
 
-		public PInvokeInfo (MethodDefinition meth)
-		{
-			m_meth = meth;
+		public bool IsBestFistDisabled {
+			get { return attributes.GetMaskedAttributes ((ushort) PInvokeAttributes.BestFitMask, (ushort) PInvokeAttributes.BestFidDisabled); }
+			set { attributes = attributes.SetMaskedAttributes ((ushort) PInvokeAttributes.BestFitMask, (ushort) PInvokeAttributes.BestFidDisabled, value); }
 		}
 
-		public PInvokeInfo (MethodDefinition meth, PInvokeAttributes attrs,
-			string entryPoint, ModuleReference mod) : this (meth)
-		{
-			m_attributes = attrs;
-			m_entryPoint = entryPoint;
-			m_module = mod;
+		public bool IsThrowOnUnmappableCharEnabled {
+			get { return attributes.GetMaskedAttributes ((ushort) PInvokeAttributes.ThrowOnUnmappableCharMask, (ushort) PInvokeAttributes.ThrowOnUnmappableCharEnabled); }
+			set { attributes = attributes.SetMaskedAttributes ((ushort) PInvokeAttributes.ThrowOnUnmappableCharMask, (ushort) PInvokeAttributes.ThrowOnUnmappableCharEnabled, value); }
+		}
+
+		public bool IsThrowOnUnmappableCharDisabled {
+			get { return attributes.GetMaskedAttributes ((ushort) PInvokeAttributes.ThrowOnUnmappableCharMask, (ushort) PInvokeAttributes.ThrowOnUnmappableCharDisabled); }
+			set { attributes = attributes.SetMaskedAttributes ((ushort) PInvokeAttributes.ThrowOnUnmappableCharMask, (ushort) PInvokeAttributes.ThrowOnUnmappableCharDisabled, value); }
 		}
 
-		public void Accept (IReflectionVisitor visitor)
+		#endregion
+
+		public PInvokeInfo (PInvokeAttributes attributes, string entryPoint, ModuleReference module)
 		{
-			visitor.VisitPInvokeInfo (this);
+			this.attributes = (ushort) attributes;
+			this.entry_point = entryPoint;
+			this.module = module;
 		}
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/ParameterAttributes.cs b/mcs/class/Mono.Cecil/Mono.Cecil/ParameterAttributes.cs
index c6097f8..8c12b54 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/ParameterAttributes.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/ParameterAttributes.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,9 +26,9 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
+using System;
 
-	using System;
+namespace Mono.Cecil {
 
 	[Flags]
 	public enum ParameterAttributes : ushort {
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/ParameterDefinition.cs b/mcs/class/Mono.Cecil/Mono.Cecil/ParameterDefinition.cs
index 8d31f42..059f257 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/ParameterDefinition.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/ParameterDefinition.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 - 2007 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,179 +26,132 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
+using Mono.Collections.Generic;
 
-	public sealed class ParameterDefinition : ParameterReference, IHasMarshalSpec,
-		IMetadataTokenProvider, ICustomAttributeProvider, IHasConstant {
+namespace Mono.Cecil {
 
-		ParameterAttributes m_attributes;
+	public sealed class ParameterDefinition : ParameterReference, ICustomAttributeProvider, IConstantProvider, IMarshalInfoProvider {
 
-		bool m_hasConstant;
-		object m_const;
+		ushort attributes;
 
-		MethodReference m_method;
-		CustomAttributeCollection m_customAttrs;
+		internal IMethodSignature method;
 
-		MarshalSpec m_marshalDesc;
+		object constant = Mixin.NotResolved;
+		Collection<CustomAttribute> custom_attributes;
+		MarshalInfo marshal_info;
 
 		public ParameterAttributes Attributes {
-			get { return m_attributes; }
-			set { m_attributes = value; }
+			get { return (ParameterAttributes) attributes; }
+			set { attributes = (ushort) value; }
+		}
+
+		public IMethodSignature Method {
+			get { return method; }
 		}
 
 		public bool HasConstant {
-			get { return m_hasConstant; }
+			get {
+				ResolveConstant ();
+
+				return constant != Mixin.NoValue;
+			}
+			set { if (!value) constant = Mixin.NoValue; }
 		}
 
 		public object Constant {
-			get { return m_const; }
-			set {
-				m_hasConstant = true;
-				m_const = value;
-			}
+			get { return HasConstant ? constant : null;	}
+			set { constant = value; }
 		}
 
-		public MethodReference Method {
-			get { return m_method; }
-			set { m_method = value; }
+		void ResolveConstant ()
+		{
+			if (constant != Mixin.NotResolved)
+				return;
+
+			this.ResolveConstant (ref constant, parameter_type.Module);
 		}
 
 		public bool HasCustomAttributes {
-			get { return (m_customAttrs == null) ? false : (m_customAttrs.Count > 0); }
+			get {
+				if (custom_attributes != null)
+					return custom_attributes.Count > 0;
+
+				return this.GetHasCustomAttributes (parameter_type.Module);
+			}
+		}
+
+		public Collection<CustomAttribute> CustomAttributes {
+			get { return custom_attributes ?? (custom_attributes = this.GetCustomAttributes (parameter_type.Module)); }
 		}
 
-		public CustomAttributeCollection CustomAttributes {
+		public bool HasMarshalInfo {
 			get {
-				if (m_customAttrs == null)
-					m_customAttrs = new CustomAttributeCollection (this);
+				if (marshal_info != null)
+					return true;
 
-				return m_customAttrs;
+				return this.GetHasMarshalInfo (parameter_type.Module);
 			}
 		}
 
-		public MarshalSpec MarshalSpec {
-			get { return m_marshalDesc; }
-			set {
-				m_marshalDesc = value;
-				if (value != null)
-					m_attributes |= ParameterAttributes.HasFieldMarshal;
-				else
-					m_attributes &= ~ParameterAttributes.HasFieldMarshal;
-			}
+		public MarshalInfo MarshalInfo {
+			get { return marshal_info ?? (marshal_info = this.GetMarshalInfo (parameter_type.Module)); }
+			set { marshal_info = value; }
 		}
 
 		#region ParameterAttributes
 
 		public bool IsIn {
-			get { return (m_attributes & ParameterAttributes.In) != 0; }
-			set {
-				if (value)
-					m_attributes |= ParameterAttributes.In;
-				else
-					m_attributes &= ~ParameterAttributes.In;
-			}
+			get { return attributes.GetAttributes ((ushort) ParameterAttributes.In); }
+			set { attributes = attributes.SetAttributes ((ushort) ParameterAttributes.In, value); }
 		}
 
 		public bool IsOut {
-			get { return (m_attributes & ParameterAttributes.Out) != 0; }
-			set {
-				if (value)
-					m_attributes |= ParameterAttributes.Out;
-				else
-					m_attributes &= ~ParameterAttributes.Out;
-			}
+			get { return attributes.GetAttributes ((ushort) ParameterAttributes.Out); }
+			set { attributes = attributes.SetAttributes ((ushort) ParameterAttributes.Out, value); }
 		}
 
-		public bool IsRetval {
-			get { return (m_attributes & ParameterAttributes.Retval) != 0; }
-			set {
-				if (value)
-					m_attributes |= ParameterAttributes.Retval;
-				else
-					m_attributes &= ~ParameterAttributes.Retval;
-			}
+		public bool IsLcid {
+			get { return attributes.GetAttributes ((ushort) ParameterAttributes.Lcid); }
+			set { attributes = attributes.SetAttributes ((ushort) ParameterAttributes.Lcid, value); }
 		}
 
-		public bool IsLcid {
-			get { return (m_attributes & ParameterAttributes.Lcid) != 0; }
-			set {
-				if (value)
-					m_attributes |= ParameterAttributes.Lcid;
-				else
-					m_attributes &= ~ParameterAttributes.Lcid;
-			}
+		public bool IsReturnValue {
+			get { return attributes.GetAttributes ((ushort) ParameterAttributes.Retval); }
+			set { attributes = attributes.SetAttributes ((ushort) ParameterAttributes.Retval, value); }
 		}
 
 		public bool IsOptional {
-			get { return (m_attributes & ParameterAttributes.Optional) != 0; }
-			set {
-				if (value)
-					m_attributes |= ParameterAttributes.Optional;
-				else
-					m_attributes &= ~ParameterAttributes.Optional;
-			}
+			get { return attributes.GetAttributes ((ushort) ParameterAttributes.Optional); }
+			set { attributes = attributes.SetAttributes ((ushort) ParameterAttributes.Optional, value); }
 		}
 
 		public bool HasDefault {
-			get { return (m_attributes & ParameterAttributes.HasDefault) != 0; }
-			set {
-				if (value)
-					m_attributes |= ParameterAttributes.HasDefault;
-				else
-					m_attributes &= ~ParameterAttributes.HasDefault;
-			}
+			get { return attributes.GetAttributes ((ushort) ParameterAttributes.HasDefault); }
+			set { attributes = attributes.SetAttributes ((ushort) ParameterAttributes.HasDefault, value); }
 		}
 
-		#endregion
-
-		public ParameterDefinition (TypeReference paramType) :
-			this (string.Empty, -1, (ParameterAttributes) 0, paramType)
-		{
+		public bool HasFieldMarshal {
+			get { return attributes.GetAttributes ((ushort) ParameterAttributes.HasFieldMarshal); }
+			set { attributes = attributes.SetAttributes ((ushort) ParameterAttributes.HasFieldMarshal, value); }
 		}
 
-		public override ParameterDefinition Resolve ()
-		{
-			return this;
-		}
-
-		public ParameterDefinition (string name, int seq, ParameterAttributes attrs, TypeReference paramType) : base (name, seq, paramType)
-		{
-			m_attributes = attrs;
-		}
+		#endregion
 
-		public ParameterDefinition Clone ()
+		public ParameterDefinition (TypeReference parameterType)
+			: this (string.Empty, ParameterAttributes.None, parameterType)
 		{
-			return Clone (this, new ImportContext (NullReferenceImporter.Instance, m_method));
 		}
 
-		internal static ParameterDefinition Clone (ParameterDefinition param, ImportContext context)
+		public ParameterDefinition (string name, ParameterAttributes attributes, TypeReference parameterType)
+			: base (name, parameterType)
 		{
-			ParameterDefinition np = new ParameterDefinition (
-				param.Name,
-				param.Sequence,
-				param.Attributes,
-				context.Import (param.ParameterType));
-
-			if (param.HasConstant)
-				np.Constant = param.Constant;
-
-			if (param.MarshalSpec != null)
-				np.MarshalSpec = param.MarshalSpec.CloneInto (np);
-
-			foreach (CustomAttribute ca in param.CustomAttributes)
-				np.CustomAttributes.Add (CustomAttribute.Clone (ca, context));
-
-			return np;
+			this.attributes = (ushort) attributes;
+			this.token = new MetadataToken (TokenType.Param);
 		}
 
-		public override void Accept (IReflectionVisitor visitor)
+		public override ParameterDefinition Resolve ()
 		{
-			visitor.VisitParameterDefinition (this);
-
-			if (this.MarshalSpec != null)
-				this.MarshalSpec.Accept (visitor);
-
-			this.CustomAttributes.Accept (visitor);
+			return this;
 		}
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/ParameterDefinitionCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil/ParameterDefinitionCollection.cs
index 5fa2229..86538bb 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/ParameterDefinitionCollection.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/ParameterDefinitionCollection.cs
@@ -4,10 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Wed Sep 27 12:46:52 CEST 2006
-//
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -29,65 +26,55 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
-
-	using System;
-	using System.Collections;
+using System;
 
-	using Mono.Cecil.Cil;
+using Mono.Collections.Generic;
 
-	public sealed class ParameterDefinitionCollection : CollectionBase, IReflectionVisitable {
+namespace Mono.Cecil {
 
-		IMemberReference m_container;
+	sealed class ParameterDefinitionCollection : Collection<ParameterDefinition> {
 
-		public ParameterDefinition this [int index] {
-			get { return List [index] as ParameterDefinition; }
-			set { List [index] = value; }
-		}
+		readonly IMethodSignature method;
 
-		public IMemberReference Container {
-			get { return m_container; }
-		}
-
-		public ParameterDefinitionCollection (IMemberReference container)
+		internal ParameterDefinitionCollection (IMethodSignature method)
 		{
-			m_container = container;
+			this.method = method;
 		}
 
-		public void Add (ParameterDefinition value)
+		internal ParameterDefinitionCollection (IMethodSignature method, int capacity)
+			: base (capacity)
 		{
-			List.Add (value);
+			this.method = method;
 		}
 
-		public bool Contains (ParameterDefinition value)
+		protected override void OnAdd (ParameterDefinition item, int index)
 		{
-			return List.Contains (value);
+			item.method = method;
+			item.index = index;
 		}
 
-		public int IndexOf (ParameterDefinition value)
+		protected override void OnInsert (ParameterDefinition item, int index)
 		{
-			return List.IndexOf (value);
-		}
+			item.method = method;
+			item.index = index;
 
-		public void Insert (int index, ParameterDefinition value)
-		{
-			List.Insert (index, value);
+			for (int i = index; i < size; i++)
+				items [i].index = i + 1;
 		}
 
-		public void Remove (ParameterDefinition value)
+		protected override void OnSet (ParameterDefinition item, int index)
 		{
-			List.Remove (value);
+			item.method = method;
+			item.index = index;
 		}
 
-		protected override void OnValidate (object o)
+		protected override void OnRemove (ParameterDefinition item, int index)
 		{
-			if (! (o is ParameterDefinition))
-				throw new ArgumentException ("Must be of type " + typeof (ParameterDefinition).FullName);
-		}
+			item.method = null;
+			item.index = -1;
 
-		public void Accept (IReflectionVisitor visitor)
-		{
-			visitor.VisitParameterDefinitionCollection (this);
+			for (int i = index + 1; i < size; i++)
+				items [i].index = i - 1;
 		}
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/ParameterReference.cs b/mcs/class/Mono.Cecil/Mono.Cecil/ParameterReference.cs
index 8626fde..cfe648f 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/ParameterReference.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/ParameterReference.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,65 +26,50 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
-
-	using System.Collections;
+using System;
 
-	using Mono.Cecil.Metadata;
+namespace Mono.Cecil {
 
-	public abstract class ParameterReference : IMetadataTokenProvider, IAnnotationProvider, IReflectionVisitable {
+	public abstract class ParameterReference : IMetadataTokenProvider {
 
-		string m_name;
-		int m_sequence;
-		TypeReference m_paramType;
-		MetadataToken m_token;
-		IDictionary m_annotations;
+		string name;
+		internal int index = -1;
+		protected TypeReference parameter_type;
+		internal MetadataToken token;
 
 		public string Name {
-			get { return m_name; }
-			set { m_name = value; }
+			get { return name; }
+			set { name = value; }
 		}
 
-		public int Sequence {
-			get { return m_sequence; }
-			set { m_sequence = value; }
+		public int Index {
+			get { return index; }
 		}
 
 		public TypeReference ParameterType {
-			get { return m_paramType; }
-			set { m_paramType = value; }
+			get { return parameter_type; }
+			set { parameter_type = value; }
 		}
 
 		public MetadataToken MetadataToken {
-			get { return m_token; }
-			set { m_token = value; }
-		}
-
-		IDictionary IAnnotationProvider.Annotations {
-			get {
-				if (m_annotations == null)
-					m_annotations = new Hashtable ();
-				return m_annotations;
-			}
+			get { return token; }
+			set { token = value; }
 		}
 
-		public ParameterReference (string name, int sequence, TypeReference parameterType)
+		internal ParameterReference (string name, TypeReference parameterType)
 		{
-			m_name = name;
-			m_sequence = sequence;
-			m_paramType = parameterType;
-		}
+			if (parameterType == null)
+				throw new ArgumentNullException ("parameterType");
 
-		public abstract ParameterDefinition Resolve ();
+			this.name = name ?? string.Empty;
+			this.parameter_type = parameterType;
+		}
 
 		public override string ToString ()
 		{
-			if (m_name != null && m_name.Length > 0)
-				return m_name;
-
-			return string.Concat ("A_", m_sequence);
+			return name;
 		}
 
-		public abstract void Accept (IReflectionVisitor visitor);
+		public abstract ParameterDefinition Resolve ();
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/PinnedType.cs b/mcs/class/Mono.Cecil/Mono.Cecil/PinnedType.cs
index f62a6bd..d5e7a80 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/PinnedType.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/PinnedType.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,12 +26,28 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System;
+
+using MD = Mono.Cecil.Metadata;
+
 namespace Mono.Cecil {
 
 	public sealed class PinnedType : TypeSpecification {
 
-		public PinnedType (TypeReference pType) : base (pType)
+		public override bool IsValueType {
+			get { return false; }
+			set { throw new InvalidOperationException (); }
+		}
+
+		public override bool IsPinned {
+			get { return true; }
+		}
+
+		public PinnedType (TypeReference type)
+			: base (type)
 		{
+			Mixin.CheckType (type);
+			this.etype = MD.ElementType.Pinned;
 		}
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/PointerType.cs b/mcs/class/Mono.Cecil/Mono.Cecil/PointerType.cs
index 1228733..54ab775 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/PointerType.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/PointerType.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,20 +26,36 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System;
+
+using MD = Mono.Cecil.Metadata;
+
 namespace Mono.Cecil {
 
 	public sealed class PointerType : TypeSpecification {
 
 		public override string Name {
-			get { return string.Concat (base.Name, "*"); }
+			get { return base.Name + "*"; }
 		}
 
 		public override string FullName {
-			get { return string.Concat (base.FullName, "*"); }
+			get { return base.FullName + "*"; }
+		}
+
+		public override bool IsValueType {
+			get { return false; }
+			set { throw new InvalidOperationException (); }
+		}
+
+		public override bool IsPointer {
+			get { return true; }
 		}
 
-		public PointerType (TypeReference pType) : base (pType)
+		public PointerType (TypeReference type)
+			: base (type)
 		{
+			Mixin.CheckType (type);
+			this.etype = MD.ElementType.Ptr;
 		}
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/PropertyAttributes.cs b/mcs/class/Mono.Cecil/Mono.Cecil/PropertyAttributes.cs
index f11468f..ad6fd9e 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/PropertyAttributes.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/PropertyAttributes.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,12 +26,13 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
+using System;
 
-	using System;
+namespace Mono.Cecil {
 
 	[Flags]
 	public enum PropertyAttributes : ushort {
+		None			= 0x0000,
 		SpecialName		= 0x0200,	// Property is special
 		RTSpecialName	= 0x0400,	// Runtime(metadata internal APIs) should check name encoding
 		HasDefault		= 0x1000,	// Property has default
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/PropertyDefinition.cs b/mcs/class/Mono.Cecil/Mono.Cecil/PropertyDefinition.cs
index e4d0f74..835a929 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/PropertyDefinition.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/PropertyDefinition.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,135 +26,183 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
+using System.Text;
+
+using Mono.Collections.Generic;
 
-	using System;
-	using System.Text;
+namespace Mono.Cecil {
 
-	public sealed class PropertyDefinition : PropertyReference,
-		IMemberDefinition, ICustomAttributeProvider, IHasConstant {
+	public sealed class PropertyDefinition : PropertyReference, IMemberDefinition, IConstantProvider {
 
-		PropertyAttributes m_attributes;
+		bool? has_this;
+		ushort attributes;
 
-		CustomAttributeCollection m_customAttrs;
+		Collection<CustomAttribute> custom_attributes;
 
-		MethodDefinition m_getMeth;
-		MethodDefinition m_setMeth;
+		internal MethodDefinition get_method;
+		internal MethodDefinition set_method;
+		internal Collection<MethodDefinition> other_methods;
 
-		bool m_hasConstant;
-		object m_const;
+		object constant = Mixin.NotResolved;
 
 		public PropertyAttributes Attributes {
-			get { return m_attributes; }
-			set { m_attributes = value; }
+			get { return (PropertyAttributes) attributes; }
+			set { attributes = (ushort) value; }
+		}
+
+		public bool HasThis {
+			get {
+				if (has_this.HasValue)
+					return has_this.Value;
+
+				if (GetMethod != null)
+					return get_method.HasThis;
+
+				if (SetMethod != null)
+					return set_method.HasThis;
+
+				return false;
+			}
+			set { has_this = value; }
 		}
 
 		public bool HasCustomAttributes {
-			get { return (m_customAttrs == null) ? false : (m_customAttrs.Count > 0); }
+			get {
+				if (custom_attributes != null)
+					return custom_attributes.Count > 0;
+
+				return this.GetHasCustomAttributes (Module);
+			}
+		}
+
+		public Collection<CustomAttribute> CustomAttributes {
+			get { return custom_attributes ?? (custom_attributes = this.GetCustomAttributes (Module)); }
 		}
 
-		public CustomAttributeCollection CustomAttributes {
+		public MethodDefinition GetMethod {
 			get {
-				if (m_customAttrs == null)
-					m_customAttrs = new CustomAttributeCollection (this);
+				if (get_method != null)
+					return get_method;
 
-				return m_customAttrs;
+				InitializeMethods ();
+				return get_method;
 			}
+			set { get_method = value; }
 		}
 
-		public override bool HasParameters {
+		public MethodDefinition SetMethod {
 			get {
-				if (m_getMeth != null)
-					return m_getMeth.HasParameters;
-				else if (m_setMeth != null)
-					return m_setMeth.HasParameters;
-				else if (m_parameters == null)
-					return false;
-				else
-					return m_parameters.Count > 0;
+				if (set_method != null)
+					return set_method;
+
+				InitializeMethods ();
+				return set_method;
 			}
+			set { set_method = value; }
 		}
 
-		public override ParameterDefinitionCollection Parameters {
+		public bool HasOtherMethods {
 			get {
-				if (this.GetMethod != null)
-					return CloneParameterCollection (this.GetMethod.Parameters);
-				else if (this.SetMethod != null) {
-					ParameterDefinitionCollection parameters =
-						CloneParameterCollection (this.SetMethod.Parameters);
-					if (parameters.Count > 0)
-						parameters.RemoveAt (parameters.Count - 1);
-					return parameters;
-				}
+				if (other_methods != null)
+					return other_methods.Count > 0;
 
-				if (m_parameters == null)
-					m_parameters = new ParameterDefinitionCollection (this);
+				InitializeMethods ();
+				return !other_methods.IsNullOrEmpty ();
+			}
+		}
+
+		public Collection<MethodDefinition> OtherMethods {
+			get {
+				if (other_methods != null)
+					return other_methods;
+
+				InitializeMethods ();
 
-				return m_parameters;
+				if (other_methods != null)
+					return other_methods;
+
+				return other_methods = new Collection<MethodDefinition> ();
 			}
 		}
 
-		public MethodDefinition GetMethod {
-			get { return m_getMeth; }
-			set { m_getMeth = value; }
+		public bool HasParameters {
+			get {
+				if (get_method != null)
+					return get_method.HasParameters;
+
+				if (set_method != null)
+					return set_method.HasParameters && set_method.Parameters.Count > 1;
+
+				return false;
+			}
 		}
 
-		public MethodDefinition SetMethod {
-			get { return m_setMeth; }
-			set { m_setMeth = value; }
+		public override Collection<ParameterDefinition> Parameters {
+			get {
+				InitializeMethods ();
+
+				if (get_method != null)
+					return MirrorParameters (get_method, 0);
+
+				if (set_method != null)
+					return MirrorParameters (set_method, 1);
+
+				return new Collection<ParameterDefinition> ();
+			}
 		}
 
-		ParameterDefinitionCollection CloneParameterCollection (ParameterDefinitionCollection original)
+		static Collection<ParameterDefinition> MirrorParameters (MethodDefinition method, int bound)
 		{
-			ParameterDefinitionCollection clone = new ParameterDefinitionCollection (
-				original.Container);
-			foreach (ParameterDefinition param in original)
-				clone.Add (param);
-			return clone;
+			var parameters = new Collection<ParameterDefinition> ();
+			if (!method.HasParameters)
+				return parameters;
+
+			var original_parameters = method.Parameters;
+			var end = original_parameters.Count - bound;
+
+			for (int i = 0; i < end; i++)
+				parameters.Add (original_parameters [i]);
+
+			return parameters;
 		}
 
 		public bool HasConstant {
-			get { return m_hasConstant; }
+			get {
+				ResolveConstant ();
+
+				return constant != Mixin.NoValue;
+			}
+			set { if (!value) constant = Mixin.NoValue; }
 		}
 
 		public object Constant {
-			get { return m_const; }
-			set {
-				m_hasConstant = true;
-				m_const = value;
-			}
+			get { return HasConstant ? constant : null;	}
+			set { constant = value; }
+		}
+
+		void ResolveConstant ()
+		{
+			if (constant != Mixin.NotResolved)
+				return;
+
+			this.ResolveConstant (ref constant, Module);
 		}
 
 		#region PropertyAttributes
 
 		public bool IsSpecialName {
-			get { return (m_attributes & PropertyAttributes.SpecialName) != 0; }
-			set {
-				if (value)
-					m_attributes |= PropertyAttributes.SpecialName;
-				else
-					m_attributes &= ~PropertyAttributes.SpecialName;
-			}
+			get { return attributes.GetAttributes ((ushort) PropertyAttributes.SpecialName); }
+			set { attributes = attributes.SetAttributes ((ushort) PropertyAttributes.SpecialName, value); }
 		}
 
 		public bool IsRuntimeSpecialName {
-			get { return (m_attributes & PropertyAttributes.RTSpecialName) != 0; }
-			set {
-				if (value)
-					m_attributes |= PropertyAttributes.RTSpecialName;
-				else
-					m_attributes &= ~PropertyAttributes.RTSpecialName;
-			}
+			get { return attributes.GetAttributes ((ushort) PropertyAttributes.RTSpecialName); }
+			set { attributes = attributes.SetAttributes ((ushort) PropertyAttributes.RTSpecialName, value); }
 		}
 
 		public bool HasDefault {
-			get { return (m_attributes & PropertyAttributes.HasDefault) != 0; }
-			set {
-				if (value)
-					m_attributes |= PropertyAttributes.HasDefault;
-				else
-					m_attributes &= ~PropertyAttributes.HasDefault;
-			}
+			get { return attributes.GetAttributes ((ushort) PropertyAttributes.HasDefault); }
+			set { attributes = attributes.SetAttributes ((ushort) PropertyAttributes.HasDefault, value); }
 		}
 
 		#endregion
@@ -164,89 +212,47 @@ namespace Mono.Cecil {
 			set { base.DeclaringType = value; }
 		}
 
-		public PropertyDefinition (string name, TypeReference propertyType, PropertyAttributes attrs) : base (name, propertyType)
-		{
-			m_attributes = attrs;
-		}
-
-		public override PropertyDefinition Resolve ()
-		{
-			return this;
-		}
-
-		public static MethodDefinition CreateGetMethod (PropertyDefinition prop)
-		{
-			MethodDefinition get = new MethodDefinition (
-				string.Concat ("get_", prop.Name), (MethodAttributes) 0, prop.PropertyType);
-			prop.GetMethod = get;
-			return get;
-		}
-
-		public static MethodDefinition CreateSetMethod (PropertyDefinition prop)
-		{
-			MethodDefinition set = new MethodDefinition (
-				string.Concat ("set_", prop.Name), (MethodAttributes) 0, prop.PropertyType);
-			prop.SetMethod = set;
-			return set;
+		public override bool IsDefinition {
+			get { return true; }
 		}
 
-		public PropertyDefinition Clone ()
-		{
-			return Clone (this, new ImportContext (NullReferenceImporter.Instance, this.DeclaringType));
-		}
-
-		internal static PropertyDefinition Clone (PropertyDefinition prop, ImportContext context)
-		{
-			PropertyDefinition np = new PropertyDefinition (
-				prop.Name,
-				context.Import (prop.PropertyType),
-				prop.Attributes);
-
-			if (prop.HasConstant)
-				np.Constant = prop.Constant;
-
-			if (context.GenericContext.Type is TypeDefinition) {
-				TypeDefinition type = context.GenericContext.Type as TypeDefinition;
-				if (prop.SetMethod != null)
-					np.SetMethod = type.Methods.GetMethod (prop.SetMethod.Name, prop.SetMethod.Parameters);
-				if (prop.GetMethod != null)
-					np.GetMethod = type.Methods.GetMethod (prop.GetMethod.Name, prop.GetMethod.Parameters);
+		public override string FullName {
+			get {
+				var builder = new StringBuilder ();
+				builder.Append (PropertyType.ToString ());
+				builder.Append (' ');
+				builder.Append (MemberFullName ());
+				builder.Append ('(');
+				if (HasParameters) {
+					var parameters = Parameters;
+					for (int i = 0; i < parameters.Count; i++) {
+						if (i > 0)
+							builder.Append (',');
+						builder.Append (parameters [i].ParameterType.FullName);
+					}
+				}
+				builder.Append (')');
+				return builder.ToString ();
 			}
-
-			foreach (CustomAttribute ca in prop.CustomAttributes)
-				np.CustomAttributes.Add (CustomAttribute.Clone (ca, context));
-
-			return np;
 		}
 
-		public override string ToString ()
+		public PropertyDefinition (string name, PropertyAttributes attributes, TypeReference propertyType)
+			: base (name, propertyType)
 		{
-			StringBuilder sb = new StringBuilder ();
-			sb.Append (PropertyType.ToString ());
-			sb.Append (' ');
-
-			if (this.DeclaringType != null) {
-				sb.Append (this.DeclaringType.ToString ());
-				sb.Append ("::");
-			}
-
-			sb.Append (this.Name);
-			sb.Append ('(');
-			ParameterDefinitionCollection parameters = this.Parameters;
-			for (int i = 0; i < parameters.Count; i++) {
-				if (i > 0)
-					sb.Append (',');
-				sb.Append (parameters [i].ParameterType.ToString ());
-			}
-			sb.Append (')');
-			return sb.ToString ();
+			this.attributes = (ushort) attributes;
+			this.token = new MetadataToken (TokenType.Property);
 		}
 
-		public override void Accept (IReflectionVisitor visitor)
+		void InitializeMethods ()
 		{
-			visitor.VisitPropertyDefinition (this);
+			if (get_method != null || set_method != null)
+				return;
+
+			var module = this.Module;
+			if (!module.HasImage ())
+				return;
 
-			this.CustomAttributes.Accept (visitor);
+			module.Read (this, (property, reader) => reader.ReadMethods (property));
 		}
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/PropertyDefinitionCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil/PropertyDefinitionCollection.cs
deleted file mode 100644
index 7860b6c..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil/PropertyDefinitionCollection.cs
+++ /dev/null
@@ -1,138 +0,0 @@
-//
-// PropertyDefinitionCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Fri Mar 30 18:43:57 +0200 2007
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-	using System;
-	using System.Collections;
-
-	using Mono.Cecil.Cil;
-
-	public sealed class PropertyDefinitionCollection : CollectionBase, IReflectionVisitable {
-
-		TypeDefinition m_container;
-
-		public PropertyDefinition this [int index] {
-			get { return List [index] as PropertyDefinition; }
-			set { List [index] = value; }
-		}
-
-		public TypeDefinition Container {
-			get { return m_container; }
-		}
-
-		public PropertyDefinitionCollection (TypeDefinition container)
-		{
-			m_container = container;
-		}
-
-		public void Add (PropertyDefinition value)
-		{
-			Attach (value);
-
-			List.Add (value);
-		}
-
-
-		public new void Clear ()
-		{
-			foreach (PropertyDefinition item in this)
-				Detach (item);
-
-			base.Clear ();
-		}
-
-		public bool Contains (PropertyDefinition value)
-		{
-			return List.Contains (value);
-		}
-
-		public int IndexOf (PropertyDefinition value)
-		{
-			return List.IndexOf (value);
-		}
-
-		public void Insert (int index, PropertyDefinition value)
-		{
-			Attach (value);
-
-			List.Insert (index, value);
-		}
-
-		public void Remove (PropertyDefinition value)
-		{
-			List.Remove (value);
-
-			Detach (value);
-		}
-
-
-		public new void RemoveAt (int index)
-		{
-			PropertyDefinition item = this [index];
-			Remove (item);
-		}
-
-		protected override void OnValidate (object o)
-		{
-			if (! (o is PropertyDefinition))
-				throw new ArgumentException ("Must be of type " + typeof (PropertyDefinition).FullName);
-		}
-
-		public PropertyDefinition [] GetProperties (string name)
-		{
-			ArrayList ret = new ArrayList ();
-			foreach (PropertyDefinition prop in this)
-				if (prop.Name == name)
-					ret.Add (prop);
-
-			return ret.ToArray (typeof (PropertyDefinition)) as PropertyDefinition [];
-		}
-
-		void Attach (MemberReference member)
-		{
-			if (member.DeclaringType != null)
-				throw new ReflectionException ("Member already attached, clone it instead");
-
-			member.DeclaringType = m_container;
-		}
-
-		void Detach (MemberReference member)
-		{
-			member.DeclaringType = null;
-		}
-
-		public void Accept (IReflectionVisitor visitor)
-		{
-			visitor.VisitPropertyDefinitionCollection (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/PropertyReference.cs b/mcs/class/Mono.Cecil/Mono.Cecil/PropertyReference.cs
index 5dfd926..5022cd3 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/PropertyReference.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/PropertyReference.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,31 +26,32 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System;
+
+using Mono.Collections.Generic;
+
 namespace Mono.Cecil {
 
 	public abstract class PropertyReference : MemberReference {
 
-		TypeReference m_propertyType;
-		protected ParameterDefinitionCollection m_parameters;
+		TypeReference property_type;
 
 		public TypeReference PropertyType {
-			get { return m_propertyType; }
-			set { m_propertyType = value; }
+			get { return property_type; }
+			set { property_type = value; }
 		}
 
-		public abstract bool HasParameters {
+		public abstract Collection<ParameterDefinition> Parameters {
 			get;
 		}
 
-		public abstract ParameterDefinitionCollection Parameters {
-			get;
-		}
-
-		public PropertyReference (string name, TypeReference propertyType) : base (name)
+		internal PropertyReference (string name, TypeReference propertyType)
+			: base (name)
 		{
-			m_propertyType = propertyType;
-		}
+			if (propertyType == null)
+				throw new ArgumentNullException ("propertyType");
 
-		public abstract PropertyDefinition Resolve ();
+			property_type = propertyType;
+		}
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/ReferenceType.cs b/mcs/class/Mono.Cecil/Mono.Cecil/ReferenceType.cs
index 6d1e0e8..3a6b326 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/ReferenceType.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/ReferenceType.cs
@@ -1,10 +1,10 @@
 //
-// ReferenceType.cs
+// ByReferenceType.cs
 //
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,20 +26,36 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System;
+
+using MD = Mono.Cecil.Metadata;
+
 namespace Mono.Cecil {
 
-	public sealed class ReferenceType : TypeSpecification {
+	public sealed class ByReferenceType : TypeSpecification {
 
 		public override string Name {
-			get { return string.Concat (base.Name, "&"); }
+			get { return base.Name + "&"; }
 		}
 
 		public override string FullName {
-			get { return string.Concat (base.FullName, "&"); }
+			get { return base.FullName + "&"; }
+		}
+
+		public override bool IsValueType {
+			get { return false; }
+			set { throw new InvalidOperationException (); }
+		}
+
+		public override bool IsByReference {
+			get { return true; }
 		}
 
-		public ReferenceType (TypeReference type) : base (type)
+		public ByReferenceType (TypeReference type)
+			: base (type)
 		{
+			Mixin.CheckType (type);
+			this.etype = MD.ElementType.ByRef;
 		}
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/ReflectionException.cs b/mcs/class/Mono.Cecil/Mono.Cecil/ReflectionException.cs
deleted file mode 100644
index 4027313..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil/ReflectionException.cs
+++ /dev/null
@@ -1,55 +0,0 @@
-//
-// ReflectionException.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-	using System;
-
-	using Mono.Cecil.Metadata;
-
-	public sealed class ReflectionException : MetadataFormatException {
-
-		internal ReflectionException () : base ()
-		{
-		}
-
-		internal ReflectionException (string message) : base (message)
-		{
-		}
-
-		internal ReflectionException (string message, params string [] parameters) :
-			base (string.Format (message, parameters))
-		{
-		}
-
-		internal ReflectionException (string message, Exception inner) :
-			base (message, inner)
-		{
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/Resource.cs b/mcs/class/Mono.Cecil/Mono.Cecil/Resource.cs
index 9790803..0432ae7 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/Resource.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/Resource.cs
@@ -1,10 +1,10 @@
 //
-// Resource.cs
+// ResourceType.cs
 //
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -28,64 +28,49 @@
 
 namespace Mono.Cecil {
 
-	using System.Collections;
+	public enum ResourceType {
+		Linked,
+		Embedded,
+		AssemblyLinked,
+	}
 
-	public abstract class Resource : IAnnotationProvider, IReflectionStructureVisitable {
+	public abstract class Resource {
 
-		string m_name;
-		ManifestResourceAttributes m_attributes;
-		IDictionary m_annotations;
+		string name;
+		uint attributes;
 
 		public string Name {
-			get { return m_name; }
-			set { m_name = value; }
+			get { return name; }
+			set { name = value; }
 		}
 
-		public ManifestResourceAttributes Flags {
-			get { return m_attributes; }
-			set { m_attributes = value; }
+		public ManifestResourceAttributes Attributes {
+			get { return (ManifestResourceAttributes) attributes; }
+			set { attributes = (uint) value; }
 		}
 
-		IDictionary IAnnotationProvider.Annotations {
-			get {
-				if (m_annotations == null)
-					m_annotations = new Hashtable ();
-				return m_annotations;
-			}
+		public abstract ResourceType ResourceType {
+			get;
 		}
 
 		#region ManifestResourceAttributes
 
 		public bool IsPublic {
-			get { return (m_attributes & ManifestResourceAttributes.VisibilityMask) == ManifestResourceAttributes.Public; }
-			set {
-				if (value) {
-					m_attributes &= ~ManifestResourceAttributes.VisibilityMask;
-					m_attributes |= ManifestResourceAttributes.Public;
-				} else
-					m_attributes &= ~(ManifestResourceAttributes.VisibilityMask & ManifestResourceAttributes.Public);
-			}
+			get { return attributes.GetMaskedAttributes ((uint) ManifestResourceAttributes.VisibilityMask, (uint) ManifestResourceAttributes.Public); }
+			set { attributes = attributes.SetMaskedAttributes ((uint) ManifestResourceAttributes.VisibilityMask, (uint) ManifestResourceAttributes.Public, value); }
 		}
 
 		public bool IsPrivate {
-			get { return (m_attributes & ManifestResourceAttributes.VisibilityMask) == ManifestResourceAttributes.Private; }
-			set {
-				if (value) {
-					m_attributes &= ~ManifestResourceAttributes.VisibilityMask;
-					m_attributes |= ManifestResourceAttributes.Private;
-				} else
-					m_attributes &= ~(ManifestResourceAttributes.VisibilityMask & ManifestResourceAttributes.Private);
-			}
+			get { return attributes.GetMaskedAttributes ((uint) ManifestResourceAttributes.VisibilityMask, (uint) ManifestResourceAttributes.Private); }
+			set { attributes = attributes.SetMaskedAttributes ((uint) ManifestResourceAttributes.VisibilityMask, (uint) ManifestResourceAttributes.Private, value); }
 		}
 
 		#endregion
 
 		internal Resource (string name, ManifestResourceAttributes attributes)
 		{
-			m_name = name;
-			m_attributes = attributes;
+			this.name = name;
+			this.attributes = (uint) attributes;
 		}
-
-		public abstract void Accept (IReflectionStructureVisitor visitor);
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/ResourceCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil/ResourceCollection.cs
deleted file mode 100644
index 5a9696a..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil/ResourceCollection.cs
+++ /dev/null
@@ -1,93 +0,0 @@
-//
-// ResourceCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Wed Sep 27 12:46:54 CEST 2006
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-	using System;
-	using System.Collections;
-
-	using Mono.Cecil.Cil;
-
-	public sealed class ResourceCollection : CollectionBase, IReflectionStructureVisitable {
-
-		ModuleDefinition m_container;
-
-		public Resource this [int index] {
-			get { return List [index] as Resource; }
-			set { List [index] = value; }
-		}
-
-		public ModuleDefinition Container {
-			get { return m_container; }
-		}
-
-		public ResourceCollection (ModuleDefinition container)
-		{
-			m_container = container;
-		}
-
-		public void Add (Resource value)
-		{
-			List.Add (value);
-		}
-
-		public bool Contains (Resource value)
-		{
-			return List.Contains (value);
-		}
-
-		public int IndexOf (Resource value)
-		{
-			return List.IndexOf (value);
-		}
-
-		public void Insert (int index, Resource value)
-		{
-			List.Insert (index, value);
-		}
-
-		public void Remove (Resource value)
-		{
-			List.Remove (value);
-		}
-
-		protected override void OnValidate (object o)
-		{
-			if (! (o is Resource))
-				throw new ArgumentException ("Must be of type " + typeof (Resource).FullName);
-		}
-
-		public void Accept (IReflectionStructureVisitor visitor)
-		{
-			visitor.VisitResourceCollection (this);
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/SecurityAction.cs b/mcs/class/Mono.Cecil/Mono.Cecil/SecurityAction.cs
deleted file mode 100644
index b1ac330..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil/SecurityAction.cs
+++ /dev/null
@@ -1,48 +0,0 @@
-//
-// SecurityAction.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-	public enum SecurityAction : short {
-		Request = 1,
-		Demand = 2,
-		Assert = 3,
-		Deny = 4,
-		PermitOnly = 5,
-		LinkDemand = 6,
-		InheritDemand = 7,
-		RequestMinimum = 8,
-		RequestOptional = 9,
-		RequestRefuse = 10,
-		PreJitGrant = 11,
-		PreJitDeny = 12,
-		NonCasDemand = 13,
-		NonCasLinkDemand = 14,
-		NonCasInheritance = 15
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/SecurityDeclaration.cs b/mcs/class/Mono.Cecil/Mono.Cecil/SecurityDeclaration.cs
index aa7b93c..4e57ada 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/SecurityDeclaration.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/SecurityDeclaration.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,111 +26,157 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System;
+
+using Mono.Collections.Generic;
+
 namespace Mono.Cecil {
 
-	using System;
-	using System.Collections;
-	using System.Security;
+	public enum SecurityAction : ushort {
+		Request = 1,
+		Demand = 2,
+		Assert = 3,
+		Deny = 4,
+		PermitOnly = 5,
+		LinkDemand = 6,
+		InheritDemand = 7,
+		RequestMinimum = 8,
+		RequestOptional = 9,
+		RequestRefuse = 10,
+		PreJitGrant = 11,
+		PreJitDeny = 12,
+		NonCasDemand = 13,
+		NonCasLinkDemand = 14,
+		NonCasInheritance = 15
+	}
+
+	public interface ISecurityDeclarationProvider : IMetadataTokenProvider {
 
-	public sealed class SecurityDeclaration : IRequireResolving, IAnnotationProvider, IReflectionVisitable {
+		bool HasSecurityDeclarations { get; }
+		Collection<SecurityDeclaration> SecurityDeclarations { get; }
+	}
 
-		SecurityAction m_action;
-		SecurityDeclarationReader m_reader;
-		IDictionary m_annotations;
+	public sealed class SecurityAttribute : ICustomAttribute {
 
-#if !CF_1_0 && !CF_2_0
-		PermissionSet m_permSet;
-#endif
+		TypeReference attribute_type;
 
-		bool m_resolved;
-		byte [] m_blob;
+		internal Collection<CustomAttributeNamedArgument> fields;
+		internal Collection<CustomAttributeNamedArgument> properties;
 
-		public SecurityAction Action {
-			get { return m_action; }
-			set { m_action = value; }
+		public TypeReference AttributeType {
+			get { return attribute_type; }
+			set { attribute_type = value; }
+		}
+
+		public bool HasFields {
+			get { return !fields.IsNullOrEmpty (); }
 		}
 
-#if !CF_1_0 && !CF_2_0
-		public PermissionSet PermissionSet {
-			get { return m_permSet; }
-			set { m_permSet = value; }
+		public Collection<CustomAttributeNamedArgument> Fields {
+			get { return fields ?? (fields = new Collection<CustomAttributeNamedArgument> ()); }
 		}
-#endif
 
-		public bool Resolved {
-			get { return m_resolved; }
-			set { m_resolved = value; }
+		public bool HasProperties {
+			get { return !properties.IsNullOrEmpty (); }
+		}
+
+		public Collection<CustomAttributeNamedArgument> Properties {
+			get { return properties ?? (properties = new Collection<CustomAttributeNamedArgument> ()); }
+		}
+
+		public SecurityAttribute (TypeReference attributeType)
+		{
+			this.attribute_type = attributeType;
+		}
+	}
+
+	public sealed class SecurityDeclaration {
+
+		readonly internal uint signature;
+		readonly ModuleDefinition module;
+
+		internal bool resolved;
+		SecurityAction action;
+		internal Collection<SecurityAttribute> security_attributes;
+
+		public SecurityAction Action {
+			get { return action; }
+			set { action = value; }
 		}
 
-		public byte [] Blob {
-			get { return m_blob; }
-			set { m_blob = value; }
+		public bool HasSecurityAttributes {
+			get {
+				Resolve ();
+
+				return !security_attributes.IsNullOrEmpty ();
+			}
 		}
 
-		IDictionary IAnnotationProvider.Annotations {
+		public Collection<SecurityAttribute> SecurityAttributes {
 			get {
-				if (m_annotations == null)
-					m_annotations = new Hashtable ();
-				return m_annotations;
+				Resolve ();
+
+				return security_attributes ?? (security_attributes = new Collection<SecurityAttribute> ());
 			}
 		}
 
-		public SecurityDeclaration (SecurityAction action)
-		{
-			m_action = action;
+		internal bool HasImage {
+			get { return module != null && module.HasImage; }
 		}
 
-		internal SecurityDeclaration (SecurityAction action, SecurityDeclarationReader reader)
+		internal SecurityDeclaration (SecurityAction action, uint signature, ModuleDefinition module)
 		{
-			m_action = action;
-			m_reader = reader;
+			this.action = action;
+			this.signature = signature;
+			this.module = module;
 		}
 
-		public SecurityDeclaration Clone ()
+		public SecurityDeclaration (SecurityAction action)
 		{
-			return Clone (this);
+			this.action = action;
+			this.resolved = true;
 		}
 
-		internal static SecurityDeclaration Clone (SecurityDeclaration sec)
+		public byte [] GetBlob ()
 		{
-			SecurityDeclaration sd = new SecurityDeclaration (sec.Action);
-			if (!sec.Resolved) {
-				sd.Resolved = false;
-				sd.Blob = sec.Blob;
-				return sd;
-			}
+			if (!HasImage || signature == 0)
+				throw new NotSupportedException ();
 
-#if !CF_1_0 && !CF_2_0
-            sd.PermissionSet = sec.PermissionSet.Copy ();
-#endif
-			return sd;
+			return module.Read (this, (declaration, reader) => reader.ReadSecurityDeclarationBlob (declaration.signature)); ;
 		}
 
-		public bool Resolve ()
+		void Resolve ()
 		{
-			if (m_resolved)
-				return true;
+			if (resolved || !HasImage)
+				return;
 
-			if (m_reader == null)
-				return false;
+			module.Read (this, (declaration, reader) => {
+				reader.ReadSecurityDeclarationSignature (declaration);
+				return this;
+			});
 
-			SecurityDeclaration clone = m_reader.FromByteArray (m_action, m_blob, true);
-			if (!clone.Resolved)
-				return false;
+			resolved = true;
+		}
+	}
 
-			m_action = clone.Action;
-#if !CF_1_0 && !CF_2_0
-			m_permSet = clone.PermissionSet.Copy ();
-#endif
-			m_resolved = true;
+	static partial class Mixin {
 
-			return true;
+		public static bool GetHasSecurityDeclarations (
+			this ISecurityDeclarationProvider self,
+			ModuleDefinition module)
+		{
+			return module.HasImage ()
+				? module.Read (self, (provider, reader) => reader.HasSecurityDeclarations (provider))
+				: false;
 		}
 
-		public void Accept (IReflectionVisitor visitor)
+		public static Collection<SecurityDeclaration> GetSecurityDeclarations (
+			this ISecurityDeclarationProvider self,
+			ModuleDefinition module)
 		{
-			visitor.VisitSecurityDeclaration (this);
+			return module.HasImage ()
+				? module.Read (self, (provider, reader) => reader.ReadSecurityDeclarations (provider))
+				: new Collection<SecurityDeclaration> ();
 		}
 	}
 }
-
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/SecurityDeclarationCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil/SecurityDeclarationCollection.cs
deleted file mode 100644
index a5fa166..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil/SecurityDeclarationCollection.cs
+++ /dev/null
@@ -1,157 +0,0 @@
-//
-// SecurityDeclarationCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-	using System;
-	using System.Collections;
-
-	public sealed class SecurityDeclarationCollection : IReflectionVisitable, IEnumerable {
-
-		IDictionary m_items;
-		IHasSecurity m_container;
-
-		public SecurityDeclaration this [int index] {
-			get { return m_items [index] as SecurityDeclaration; }
-			set { m_items [index] = value; }
-		}
-
-		public SecurityDeclaration this [SecurityAction action] {
-			get { return m_items [action] as SecurityDeclaration; }
-			set { m_items [action] = value; }
-		}
-
-		public IHasSecurity Container {
-			get { return m_container; }
-		}
-
-		public int Count {
-			get { return m_items.Count; }
-		}
-
-		public bool IsSynchronized {
-			get { return false; }
-		}
-
-		public object SyncRoot {
-			get { return this; }
-		}
-
-		public SecurityDeclarationCollection (IHasSecurity container)
-		{
-			m_container = container;
-			m_items = new Hashtable ();
-		}
-
-		public void Add (SecurityDeclaration value)
-		{
-			if (value == null)
-				throw new ArgumentNullException ("value");
-
-			// Each action can only be added once so...
-			SecurityDeclaration current = (SecurityDeclaration) m_items[value.Action];
-			if (current != null) {
-				// ... further additions are transformed into unions
-#if !CF_1_0 && !CF_2_0
-                current.PermissionSet = current.PermissionSet.Union (value.PermissionSet);
-#endif
-			} else {
-				m_items.Add (value.Action, value);
-				SetHasSecurity (true);
-			}
-		}
-
-		public void Clear ()
-		{
-			m_items.Clear ();
-			SetHasSecurity (false);
-		}
-
-		public bool Contains (SecurityAction action)
-		{
-			return (m_items [action] != null);
-		}
-
-		public bool Contains (SecurityDeclaration value)
-		{
-			if (value == null)
-				return (m_items.Count == 0);
-
-			SecurityDeclaration item = (SecurityDeclaration) m_items[value.Action];
-			if (item == null)
-				return false;
-
-#if !CF_1_0 && !CF_2_0
-			return value.PermissionSet.IsSubsetOf (item.PermissionSet);
-#else
-            // XXX For CF, this concept does not exist--so always be true
-            return true;
-#endif
-		}
-
-		public void Remove (SecurityAction action)
-		{
-			m_items.Remove (action);
-			SetHasSecurity (this.Count > 0);
-		}
-
-		public void CopyTo (Array ary, int index)
-		{
-			m_items.Values.CopyTo (ary, index);
-		}
-
-		public IEnumerator GetEnumerator ()
-		{
-			return m_items.Values.GetEnumerator ();
-		}
-
-		public void Accept (IReflectionVisitor visitor)
-		{
-			visitor.VisitSecurityDeclarationCollection (this);
-		}
-
-		private void SetHasSecurity (bool value)
-		{
-			TypeDefinition td = (m_container as TypeDefinition);
-			if (td != null) {
-				if (value)
-					td.Attributes |= TypeAttributes.HasSecurity;
-				else
-					td.Attributes &= ~TypeAttributes.HasSecurity;
-				return;
-			}
-			MethodDefinition md = (m_container as MethodDefinition);
-			if (md != null) {
-				if (value)
-					md.Attributes |= MethodAttributes.HasSecurity;
-				else
-					md.Attributes &= ~MethodAttributes.HasSecurity;
-			}
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/SentinelType.cs b/mcs/class/Mono.Cecil/Mono.Cecil/SentinelType.cs
index 1aed160..d0d5a1d 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/SentinelType.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/SentinelType.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2007 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,12 +26,28 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System;
+
+using MD = Mono.Cecil.Metadata;
+
 namespace Mono.Cecil {
 
 	public sealed class SentinelType : TypeSpecification {
 
-		public SentinelType (TypeReference elementType) : base (elementType)
+		public override bool IsValueType {
+			get { return false; }
+			set { throw new InvalidOperationException (); }
+		}
+
+		public override bool IsSentinel {
+			get { return true; }
+		}
+
+		public SentinelType (TypeReference type)
+			: base (type)
 		{
+			Mixin.CheckType (type);
+			this.etype = MD.ElementType.Sentinel;
 		}
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/TableComparers.cs b/mcs/class/Mono.Cecil/Mono.Cecil/TableComparers.cs
deleted file mode 100644
index 81bbffc..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil/TableComparers.cs
+++ /dev/null
@@ -1,276 +0,0 @@
-//
-// TableComparers.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-	using System;
-	using System.Collections;
-
-	using Mono.Cecil.Metadata;
-
-	sealed class TableComparers {
-
-		public sealed class TypeDef : IComparer {
-
-			public static readonly TypeDef Instance = new TypeDef ();
-
-			public int Compare (object x, object y)
-			{
-				TypeDefinition a = x as TypeDefinition;
-				TypeDefinition b = y as TypeDefinition;
-
-				if (a == null || b == null)
-					throw new ReflectionException ("TypeDefComparer can only compare TypeDefinition");
-
-				if (a.Name == Constants.ModuleType && b.Name == Constants.ModuleType)
-					return 0;
-				else if (a.Name == Constants.ModuleType)
-					return -1;
-				else if (b.Name == Constants.ModuleType)
-					return 1;
-
-				return Comparer.Default.Compare (a.FullName, b.FullName);
-			}
-		}
-
-		public sealed class TypeRef : IComparer {
-
-			public static readonly TypeRef Instance = new TypeRef ();
-
-			public int Compare (object x, object y)
-			{
-				TypeReference a = x as TypeReference;
-				TypeReference b = y as TypeReference;
-
-				if (a == null || b == null)
-					throw new ReflectionException ("TypeRefComparer can only compare TypeReference");
-
-				if (b.DeclaringType == a)
-					return -1;
-				else if (a.DeclaringType == b)
-					return 1;
-
-				return Comparer.Default.Compare (a.FullName, b.FullName);
-			}
-		}
-
-		public sealed class NestedClass : IComparer {
-
-			public static readonly NestedClass Instance = new NestedClass ();
-
-			public int Compare (object x, object y)
-			{
-				NestedClassRow a = x as NestedClassRow;
-				NestedClassRow b = y as NestedClassRow;
-
-				return Comparer.Default.Compare (a.NestedClass, b.NestedClass);
-			}
-		}
-
-		public sealed class Constant : IComparer {
-
-			public static readonly Constant Instance = new Constant ();
-
-			public int Compare (object x, object y)
-			{
-				ConstantRow a = x as ConstantRow;
-				ConstantRow b = y as ConstantRow;
-
-				return Comparer.Default.Compare (
-					Utilities.CompressMetadataToken (CodedIndex.HasConstant, a.Parent),
-					Utilities.CompressMetadataToken (CodedIndex.HasConstant, b.Parent));
-			}
-
-		}
-
-		public sealed class InterfaceImpl : IComparer {
-
-			public static readonly InterfaceImpl Instance = new InterfaceImpl ();
-
-			public int Compare (object x, object y)
-			{
-				InterfaceImplRow a = x as InterfaceImplRow;
-				InterfaceImplRow b = y as InterfaceImplRow;
-
-				int klass = Comparer.Default.Compare (a.Class, b.Class);
-
-				if (klass == 0)
-					return Comparer.Default.Compare (
-						Utilities.CompressMetadataToken (CodedIndex.TypeDefOrRef, a.Interface),
-						Utilities.CompressMetadataToken (CodedIndex.TypeDefOrRef, b.Interface));
-
-				return klass;
-			}
-		}
-
-		public sealed class MethodSem : IComparer {
-
-			public static readonly MethodSem Instance = new MethodSem ();
-
-			public int Compare (object x, object y)
-			{
-				MethodSemanticsRow a = x as MethodSemanticsRow;
-				MethodSemanticsRow b = y as MethodSemanticsRow;
-
-				return Comparer.Default.Compare (
-					Utilities.CompressMetadataToken (CodedIndex.HasSemantics, a.Association),
-					Utilities.CompressMetadataToken (CodedIndex.HasSemantics, b.Association));
-			}
-		}
-
-		public sealed class CustomAttribute : IComparer {
-
-			public static readonly CustomAttribute Instance = new CustomAttribute ();
-
-			public int Compare (object x, object y)
-			{
-				CustomAttributeRow a = x as CustomAttributeRow;
-				CustomAttributeRow b = y as CustomAttributeRow;
-
-				return Comparer.Default.Compare (
-					Utilities.CompressMetadataToken (CodedIndex.HasCustomAttribute, a.Parent),
-					Utilities.CompressMetadataToken (CodedIndex.HasCustomAttribute, b.Parent));
-			}
-		}
-
-		public sealed class SecurityDeclaration : IComparer {
-
-			public static readonly SecurityDeclaration Instance = new SecurityDeclaration ();
-
-			public int Compare (object x, object y)
-			{
-				DeclSecurityRow a = x as DeclSecurityRow;
-				DeclSecurityRow b = y as DeclSecurityRow;
-
-				return Comparer.Default.Compare (
-					Utilities.CompressMetadataToken (CodedIndex.HasDeclSecurity, a.Parent),
-					Utilities.CompressMetadataToken (CodedIndex.HasDeclSecurity, b.Parent));
-			}
-		}
-
-		public sealed class Override : IComparer {
-
-			public static readonly Override Instance = new Override ();
-
-			public int Compare (object x, object y)
-			{
-				MethodImplRow a = x as MethodImplRow;
-				MethodImplRow b = y as MethodImplRow;
-
-				return Comparer.Default.Compare (a.Class, b.Class);
-			}
-		}
-
-		public sealed class PInvoke : IComparer {
-
-			public static readonly PInvoke Instance = new PInvoke ();
-
-			public int Compare (object x, object y)
-			{
-				ImplMapRow a = x as ImplMapRow;
-				ImplMapRow b = y as ImplMapRow;
-
-				return Comparer.Default.Compare (a.MemberForwarded.RID, b.MemberForwarded.RID);
-			}
-		}
-
-		public sealed class FieldRVA : IComparer {
-
-			public static readonly FieldRVA Instance = new FieldRVA ();
-
-			public int Compare (object x, object y)
-			{
-				FieldRVARow a = x as FieldRVARow;
-				FieldRVARow b = y as FieldRVARow;
-
-				return Comparer.Default.Compare (a.Field, b.Field);
-			}
-		}
-
-		public sealed class FieldLayout : IComparer {
-
-			public static readonly FieldLayout Instance = new FieldLayout ();
-
-			public int Compare (object x, object y)
-			{
-				FieldLayoutRow a = x as FieldLayoutRow;
-				FieldLayoutRow b = y as FieldLayoutRow;
-
-				return Comparer.Default.Compare (a.Field, b.Field);
-			}
-		}
-
-		public sealed class FieldMarshal : IComparer {
-
-			public static readonly FieldMarshal Instance = new FieldMarshal ();
-
-			public int Compare (object x, object y)
-			{
-				FieldMarshalRow a = x as FieldMarshalRow;
-				FieldMarshalRow b = y as FieldMarshalRow;
-
-				return Comparer.Default.Compare (
-					Utilities.CompressMetadataToken (CodedIndex.HasFieldMarshal, a.Parent),
-					Utilities.CompressMetadataToken (CodedIndex.HasFieldMarshal, b.Parent));
-			}
-		}
-
-		public sealed class TypeLayout : IComparer {
-
-			public static readonly TypeLayout Instance = new TypeLayout ();
-
-			public int Compare (object x, object y)
-			{
-				ClassLayoutRow a = x as ClassLayoutRow;
-				ClassLayoutRow b = y as ClassLayoutRow;
-
-				return Comparer.Default.Compare (a.Parent, b.Parent);
-			}
-		}
-
-		public sealed class GenericParam : IComparer {
-
-			public static readonly GenericParam Instance = new GenericParam ();
-
-			public int Compare (object x, object y)
-			{
-				GenericParameter a = x as GenericParameter;
-				GenericParameter b = y as GenericParameter;
-
-				int token = Comparer.Default.Compare (
-					Utilities.CompressMetadataToken (CodedIndex.TypeOrMethodDef, a.Owner.MetadataToken),
-					Utilities.CompressMetadataToken (CodedIndex.TypeOrMethodDef, b.Owner.MetadataToken));
-
-				if (token == 0)
-					return Comparer.Default.Compare (a.Position, b.Position);
-
-				return token;
-			}
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/TargetRuntime.cs b/mcs/class/Mono.Cecil/Mono.Cecil/TargetRuntime.cs
index d7856f5..9931fc6 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/TargetRuntime.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/TargetRuntime.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -29,9 +29,9 @@
 namespace Mono.Cecil {
 
 	public enum TargetRuntime {
-		NET_1_0,
-		NET_1_1,
-		NET_2_0,
-		NET_4_0,
+		Net_1_0,
+		Net_1_1,
+		Net_2_0,
+		Net_4_0,
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/TypeAttributes.cs b/mcs/class/Mono.Cecil/Mono.Cecil/TypeAttributes.cs
index 2e1ef50..6e263e8 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/TypeAttributes.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/TypeAttributes.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,9 +26,9 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
+using System;
 
-	using System;
+namespace Mono.Cecil {
 
 	[Flags]
 	public enum TypeAttributes : uint {
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/TypeDefinition.cs b/mcs/class/Mono.Cecil/Mono.Cecil/TypeDefinition.cs
index 3694306..c83531a 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/TypeDefinition.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/TypeDefinition.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,446 +26,435 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System;
+
+using Mono.Collections.Generic;
+
 namespace Mono.Cecil {
 
-	public sealed class TypeDefinition : TypeReference, IMemberDefinition, IHasSecurity {
+	public sealed class TypeDefinition : TypeReference, IMemberDefinition, ISecurityDeclarationProvider {
 
-		TypeAttributes m_attributes;
-		TypeReference m_baseType;
+		uint attributes;
+		TypeReference base_type;
+		internal Range fields_range;
+		internal Range methods_range;
 
-		bool m_hasInfo;
-		ushort m_packingSize;
-		uint m_classSize;
+		short packing_size = Mixin.NotResolvedMarker;
+		int class_size = Mixin.NotResolvedMarker;
 
-		InterfaceCollection m_interfaces;
-		NestedTypeCollection m_nestedTypes;
-		MethodDefinitionCollection m_methods;
-		ConstructorCollection m_ctors;
-		FieldDefinitionCollection m_fields;
-		EventDefinitionCollection m_events;
-		PropertyDefinitionCollection m_properties;
-		SecurityDeclarationCollection m_secDecls;
+		Collection<TypeReference> interfaces;
+		Collection<TypeDefinition> nested_types;
+		Collection<MethodDefinition> methods;
+		Collection<FieldDefinition> fields;
+		Collection<EventDefinition> events;
+		Collection<PropertyDefinition> properties;
+		Collection<CustomAttribute> custom_attributes;
+		Collection<SecurityDeclaration> security_declarations;
 
 		public TypeAttributes Attributes {
-			get { return m_attributes; }
-			set { m_attributes = value; }
+			get { return (TypeAttributes) attributes; }
+			set { attributes = (uint) value; }
 		}
 
 		public TypeReference BaseType {
-			get { return m_baseType; }
-			set { m_baseType = value; }
+			get { return base_type; }
+			set { base_type = value; }
+		}
+
+		void ResolveLayout ()
+		{
+			if (packing_size != Mixin.NotResolvedMarker || class_size != Mixin.NotResolvedMarker)
+				return;
+
+			if (!HasImage) {
+				packing_size = Mixin.NoDataMarker;
+				class_size = Mixin.NoDataMarker;
+				return;
+			}
+
+			var row = Module.Read (this, (type, reader) => reader.ReadTypeLayout (type));
+
+			packing_size = row.Col1;
+			class_size = row.Col2;
 		}
 
 		public bool HasLayoutInfo {
-			get { return m_hasInfo; }
+			get {
+				if (packing_size >= 0 || class_size >= 0)
+					return true;
+
+				ResolveLayout ();
+
+				return packing_size >= 0 || class_size >= 0;
+			}
 		}
 
-		public ushort PackingSize {
-			get { return m_packingSize; }
-			set {
-				m_hasInfo = true;
-				m_packingSize = value;
+		public short PackingSize {
+			get {
+				if (packing_size >= 0)
+					return packing_size;
+
+				ResolveLayout ();
+
+				return packing_size >= 0 ? packing_size : (short) -1;
 			}
+			set { packing_size = value; }
 		}
 
-		public uint ClassSize {
-			get { return m_classSize; }
-			set {
-				m_hasInfo = true;
-				m_classSize = value;
+		public int ClassSize {
+			get {
+				if (class_size >= 0)
+					return class_size;
+
+				ResolveLayout ();
+
+				return class_size >= 0 ? class_size : -1;
 			}
+			set { class_size = value; }
 		}
 
 		public bool HasInterfaces {
-			get { return (m_interfaces == null) ? false : (m_interfaces.Count > 0); }
+			get {
+				if (interfaces != null)
+					return interfaces.Count > 0;
+
+				if (HasImage)
+					return Module.Read (this, (type, reader) => reader.HasInterfaces (type));
+
+				return false;
+			}
 		}
 
-		public InterfaceCollection Interfaces {
+		public Collection<TypeReference> Interfaces {
 			get {
-				if (m_interfaces == null)
-					m_interfaces = new InterfaceCollection (this);
+				if (interfaces != null)
+					return interfaces;
 
-				return m_interfaces;
+				if (HasImage)
+					return interfaces = Module.Read (this, (type, reader) => reader.ReadInterfaces (type));
+
+				return interfaces = new Collection<TypeReference> ();
 			}
 		}
 
 		public bool HasNestedTypes {
-			get { return (m_nestedTypes == null) ? false : (m_nestedTypes.Count > 0); }
+			get {
+				if (nested_types != null)
+					return nested_types.Count > 0;
+
+				if (HasImage)
+					return Module.Read (this, (type, reader) => reader.HasNestedTypes (type));
+
+				return false;
+			}
 		}
 
-		public NestedTypeCollection NestedTypes {
+		public Collection<TypeDefinition> NestedTypes {
 			get {
-				if (m_nestedTypes == null)
-					m_nestedTypes = new NestedTypeCollection (this);
+				if (nested_types != null)
+					return nested_types;
 
-				return m_nestedTypes;
+				if (HasImage)
+					return nested_types = Module.Read (this, (type, reader) => reader.ReadNestedTypes (type));
+
+				return nested_types = new MemberDefinitionCollection<TypeDefinition> (this);
 			}
 		}
 
-		public bool HasMethods {
-			get { return (m_methods == null) ? false : (m_methods.Count > 0); }
+		internal new bool HasImage {
+			get { return Module != null && Module.HasImage; }
 		}
 
-		public MethodDefinitionCollection Methods {
+		public bool HasMethods {
 			get {
-				if (m_methods == null)
-					m_methods = new MethodDefinitionCollection (this);
+				if (methods != null)
+					return methods.Count > 0;
 
-				return m_methods;
-			}
-		}
+				if (HasImage)
+					return methods_range.Length > 0;
 
-		public bool HasConstructors {
-			get { return (m_ctors == null) ? false : (m_ctors.Count > 0); }
+				return false;
+			}
 		}
 
-		public ConstructorCollection Constructors {
+		public Collection<MethodDefinition> Methods {
 			get {
-				if (m_ctors == null)
-					m_ctors = new ConstructorCollection (this);
+				if (methods != null)
+					return methods;
+
+				if (HasImage)
+					return methods = Module.Read (this, (type, reader) => reader.ReadMethods (type));
 
-				return m_ctors;
+				return methods = new MemberDefinitionCollection<MethodDefinition> (this);
 			}
 		}
 
 		public bool HasFields {
-			get { return (m_fields == null) ? false : (m_fields.Count > 0); }
+			get {
+				if (fields != null)
+					return fields.Count > 0;
+
+				if (HasImage)
+					return fields_range.Length > 0;
+
+				return false;
+			}
 		}
 
-		public FieldDefinitionCollection Fields {
+		public Collection<FieldDefinition> Fields {
 			get {
-				if (m_fields == null)
-					m_fields = new FieldDefinitionCollection (this);
+				if (fields != null)
+					return fields;
 
-				return m_fields;
+				if (HasImage)
+					return fields = Module.Read (this, (type, reader) => reader.ReadFields (type));
+
+				return fields = new MemberDefinitionCollection<FieldDefinition> (this);
 			}
 		}
 
 		public bool HasEvents {
-			get { return (m_events == null) ? false : (m_events.Count > 0); }
+			get {
+				if (events != null)
+					return events.Count > 0;
+
+				if (HasImage)
+					return Module.Read (this, (type, reader) => reader.HasEvents (type));
+
+				return false;
+			}
 		}
 
-		public EventDefinitionCollection Events {
+		public Collection<EventDefinition> Events {
 			get {
-				if (m_events == null)
-					m_events = new EventDefinitionCollection (this);
+				if (events != null)
+					return events;
 
-				return m_events;
+				if (HasImage)
+					return events = Module.Read (this, (type, reader) => reader.ReadEvents (type));
+
+				return events = new MemberDefinitionCollection<EventDefinition> (this);
 			}
 		}
 
 		public bool HasProperties {
-			get { return (m_properties == null) ? false : (m_properties.Count > 0); }
+			get {
+				if (properties != null)
+					return properties.Count > 0;
+
+				if (HasImage)
+					return Module.Read (this, (type, reader) => reader.HasProperties (type));
+
+				return false;
+			}
 		}
 
-		public PropertyDefinitionCollection Properties {
+		public Collection<PropertyDefinition> Properties {
 			get {
-				if (m_properties == null)
-					m_properties = new PropertyDefinitionCollection (this);
+				if (properties != null)
+					return properties;
 
-				return m_properties;
+				if (HasImage)
+					return properties = Module.Read (this, (type, reader) => reader.ReadProperties (type));
+
+				return properties = new MemberDefinitionCollection<PropertyDefinition> (this);
 			}
 		}
 
 		public bool HasSecurityDeclarations {
-			get { return (m_secDecls == null) ? false : (m_secDecls.Count > 0); }
+			get {
+				if (security_declarations != null)
+					return security_declarations.Count > 0;
+
+				return this.GetHasSecurityDeclarations (Module);
+			}
 		}
 
-		public SecurityDeclarationCollection SecurityDeclarations {
+		public Collection<SecurityDeclaration> SecurityDeclarations {
+			get { return security_declarations ?? (security_declarations = this.GetSecurityDeclarations (Module)); }
+		}
+
+		public bool HasCustomAttributes {
 			get {
-				if (m_secDecls == null)
-					m_secDecls = new SecurityDeclarationCollection (this);
+				if (custom_attributes != null)
+					return custom_attributes.Count > 0;
 
-				return m_secDecls;
+				return this.GetHasCustomAttributes (Module);
 			}
 		}
 
+		public Collection<CustomAttribute> CustomAttributes {
+			get { return custom_attributes ?? (custom_attributes = this.GetCustomAttributes (Module)); }
+		}
+
+		public override bool HasGenericParameters {
+			get {
+				if (generic_parameters != null)
+					return generic_parameters.Count > 0;
+
+				return this.GetHasGenericParameters (Module);
+			}
+		}
+
+		public override Collection<GenericParameter> GenericParameters {
+			get { return generic_parameters ?? (generic_parameters = this.GetGenericParameters (Module)); }
+		}
+
 		#region TypeAttributes
 
 		public bool IsNotPublic {
-			get { return (m_attributes & TypeAttributes.VisibilityMask) == TypeAttributes.NotPublic; }
-			set {
-				if (value) {
-					m_attributes &= ~TypeAttributes.VisibilityMask;
-					m_attributes |= TypeAttributes.NotPublic;
-				} else
-					m_attributes &= ~(TypeAttributes.VisibilityMask & TypeAttributes.NotPublic);
-			}
+			get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NotPublic); }
+			set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NotPublic, value); }
 		}
 
 		public bool IsPublic {
-			get { return (m_attributes & TypeAttributes.VisibilityMask) == TypeAttributes.Public; }
-			set {
-				if (value) {
-					m_attributes &= ~TypeAttributes.VisibilityMask;
-					m_attributes |= TypeAttributes.Public;
-				} else
-					m_attributes &= ~(TypeAttributes.VisibilityMask & TypeAttributes.Public);
-			}
+			get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.Public); }
+			set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.Public, value); }
 		}
 
 		public bool IsNestedPublic {
-			get { return (m_attributes & TypeAttributes.VisibilityMask) == TypeAttributes.NestedPublic; }
-			set {
-				if (value) {
-					m_attributes &= ~TypeAttributes.VisibilityMask;
-					m_attributes |= TypeAttributes.NestedPublic;
-				} else
-					m_attributes &= ~(TypeAttributes.VisibilityMask & TypeAttributes.NestedPublic);
-			}
+			get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NestedPublic); }
+			set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NestedPublic, value); }
 		}
 
 		public bool IsNestedPrivate {
-			get { return (m_attributes & TypeAttributes.VisibilityMask) == TypeAttributes.NestedPrivate; }
-			set {
-				if (value) {
-					m_attributes &= ~TypeAttributes.VisibilityMask;
-					m_attributes |= TypeAttributes.NestedPrivate;
-				} else
-					m_attributes &= ~(TypeAttributes.VisibilityMask & TypeAttributes.NestedPrivate);
-			}
+			get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NestedPrivate); }
+			set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NestedPrivate, value); }
 		}
 
 		public bool IsNestedFamily {
-			get { return (m_attributes & TypeAttributes.VisibilityMask) == TypeAttributes.NestedFamily; }
-			set {
-				if (value) {
-					m_attributes &= ~TypeAttributes.VisibilityMask;
-					m_attributes |= TypeAttributes.NestedFamily;
-				} else
-					m_attributes &= ~(TypeAttributes.VisibilityMask & TypeAttributes.NestedFamily);
-			}
+			get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NestedFamily); }
+			set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NestedFamily, value); }
 		}
 
 		public bool IsNestedAssembly {
-			get { return (m_attributes & TypeAttributes.VisibilityMask) == TypeAttributes.NestedAssembly; }
-			set {
-				if (value) {
-					m_attributes &= ~TypeAttributes.VisibilityMask;
-					m_attributes |= TypeAttributes.NestedAssembly;
-				} else
-					m_attributes &= ~(TypeAttributes.VisibilityMask & TypeAttributes.NestedAssembly);
-			}
+			get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NestedAssembly); }
+			set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NestedAssembly, value); }
 		}
 
 		public bool IsNestedFamilyAndAssembly {
-			get { return (m_attributes & TypeAttributes.VisibilityMask) == TypeAttributes.NestedFamANDAssem; }
-			set {
-				if (value) {
-					m_attributes &= ~TypeAttributes.VisibilityMask;
-					m_attributes |= TypeAttributes.NestedFamANDAssem;
-				} else
-					m_attributes &= ~(TypeAttributes.VisibilityMask & TypeAttributes.NestedFamANDAssem);
-			}
+			get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NestedFamANDAssem); }
+			set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NestedFamANDAssem, value); }
 		}
 
 		public bool IsNestedFamilyOrAssembly {
-			get { return (m_attributes & TypeAttributes.VisibilityMask) == TypeAttributes.NestedFamORAssem; }
-			set {
-				if (value) {
-					m_attributes &= ~TypeAttributes.VisibilityMask;
-					m_attributes |= TypeAttributes.NestedFamORAssem;
-				} else
-					m_attributes &= ~(TypeAttributes.VisibilityMask & TypeAttributes.NestedFamORAssem);
-			}
+			get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NestedFamORAssem); }
+			set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.VisibilityMask, (uint) TypeAttributes.NestedFamORAssem, value); }
 		}
 
 		public bool IsAutoLayout {
-			get { return (m_attributes & TypeAttributes.LayoutMask) == TypeAttributes.AutoLayout; }
-			set {
-				if (value) {
-					m_attributes &= ~TypeAttributes.LayoutMask;
-					m_attributes |= TypeAttributes.AutoLayout;
-				} else
-					m_attributes &= ~(TypeAttributes.LayoutMask & TypeAttributes.AutoLayout);
-			}
+			get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.LayoutMask, (uint) TypeAttributes.AutoLayout); }
+			set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.LayoutMask, (uint) TypeAttributes.AutoLayout, value); }
 		}
 
 		public bool IsSequentialLayout {
-			get { return (m_attributes & TypeAttributes.LayoutMask) == TypeAttributes.SequentialLayout; }
-			set {
-				if (value) {
-					m_attributes &= ~TypeAttributes.LayoutMask;
-					m_attributes |= TypeAttributes.SequentialLayout;
-				} else
-					m_attributes &= ~(TypeAttributes.LayoutMask & TypeAttributes.SequentialLayout);
-			}
+			get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.LayoutMask, (uint) TypeAttributes.SequentialLayout); }
+			set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.LayoutMask, (uint) TypeAttributes.SequentialLayout, value); }
 		}
 
 		public bool IsExplicitLayout {
-			get { return (m_attributes & TypeAttributes.LayoutMask) == TypeAttributes.ExplicitLayout; }
-			set {
-				if (value) {
-					m_attributes &= ~TypeAttributes.LayoutMask;
-					m_attributes |= TypeAttributes.ExplicitLayout;
-				} else
-					m_attributes &= ~(TypeAttributes.LayoutMask & TypeAttributes.ExplicitLayout);
-			}
+			get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.LayoutMask, (uint) TypeAttributes.ExplicitLayout); }
+			set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.LayoutMask, (uint) TypeAttributes.ExplicitLayout, value); }
 		}
 
 		public bool IsClass {
-			get { return (m_attributes & TypeAttributes.ClassSemanticMask) == TypeAttributes.Class; }
-			set {
-				if (value) {
-					m_attributes &= ~TypeAttributes.ClassSemanticMask;
-					m_attributes |= TypeAttributes.Class;
-				} else
-					m_attributes &= ~(TypeAttributes.ClassSemanticMask & TypeAttributes.Class);
-			}
+			get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.ClassSemanticMask, (uint) TypeAttributes.Class); }
+			set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.ClassSemanticMask, (uint) TypeAttributes.Class, value); }
 		}
 
 		public bool IsInterface {
-			get { return (m_attributes & TypeAttributes.ClassSemanticMask) == TypeAttributes.Interface; }
-			set {
-				if (value) {
-					m_attributes &= ~TypeAttributes.ClassSemanticMask;
-					m_attributes |= TypeAttributes.Interface;
-				} else
-					m_attributes &= ~(TypeAttributes.ClassSemanticMask & TypeAttributes.Interface);
-			}
+			get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.ClassSemanticMask, (uint) TypeAttributes.Interface); }
+			set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.ClassSemanticMask, (uint) TypeAttributes.Interface, value); }
 		}
 
 		public bool IsAbstract {
-			get { return (m_attributes & TypeAttributes.Abstract) != 0; }
-			set {
-				if (value)
-					m_attributes |= TypeAttributes.Abstract;
-				else
-					m_attributes &= ~TypeAttributes.Abstract;
-			}
+			get { return attributes.GetAttributes ((uint) TypeAttributes.Abstract); }
+			set { attributes = attributes.SetAttributes ((uint) TypeAttributes.Abstract, value); }
 		}
 
 		public bool IsSealed {
-			get { return (m_attributes & TypeAttributes.Sealed) != 0; }
-			set {
-				if (value)
-					m_attributes |= TypeAttributes.Sealed;
-				else
-					m_attributes &= ~TypeAttributes.Sealed;
-			}
+			get { return attributes.GetAttributes ((uint) TypeAttributes.Sealed); }
+			set { attributes = attributes.SetAttributes ((uint) TypeAttributes.Sealed, value); }
 		}
 
 		public bool IsSpecialName {
-			get { return (m_attributes & TypeAttributes.SpecialName) != 0; }
-			set {
-				if (value)
-					m_attributes |= TypeAttributes.SpecialName;
-				else
-					m_attributes &= ~TypeAttributes.SpecialName;
-			}
+			get { return attributes.GetAttributes ((uint) TypeAttributes.SpecialName); }
+			set { attributes = attributes.SetAttributes ((uint) TypeAttributes.SpecialName, value); }
 		}
 
 		public bool IsImport {
-			get { return (m_attributes & TypeAttributes.Import) != 0; }
-			set {
-				if (value)
-					m_attributes |= TypeAttributes.Import;
-				else
-					m_attributes &= ~TypeAttributes.Import;
-			}
+			get { return attributes.GetAttributes ((uint) TypeAttributes.Import); }
+			set { attributes = attributes.SetAttributes ((uint) TypeAttributes.Import, value); }
 		}
 
 		public bool IsSerializable {
-			get { return (m_attributes & TypeAttributes.Serializable) != 0; }
-			set {
-				if (value)
-					m_attributes |= TypeAttributes.Serializable;
-				else
-					m_attributes &= ~TypeAttributes.Serializable;
-			}
+			get { return attributes.GetAttributes ((uint) TypeAttributes.Serializable); }
+			set { attributes = attributes.SetAttributes ((uint) TypeAttributes.Serializable, value); }
 		}
 
 		public bool IsAnsiClass {
-			get { return (m_attributes & TypeAttributes.StringFormatMask) == TypeAttributes.AnsiClass; }
-			set {
-				if (value) {
-					m_attributes &= ~TypeAttributes.StringFormatMask;
-					m_attributes |= TypeAttributes.AnsiClass;
-				} else
-					m_attributes &= ~(TypeAttributes.StringFormatMask & TypeAttributes.AnsiClass);
-			}
+			get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.StringFormatMask, (uint) TypeAttributes.AnsiClass); }
+			set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.StringFormatMask, (uint) TypeAttributes.AnsiClass, value); }
 		}
 
 		public bool IsUnicodeClass {
-			get { return (m_attributes & TypeAttributes.StringFormatMask) == TypeAttributes.UnicodeClass; }
-			set {
-				if (value) {
-					m_attributes &= ~TypeAttributes.StringFormatMask;
-					m_attributes |= TypeAttributes.UnicodeClass;
-				} else
-					m_attributes &= ~(TypeAttributes.StringFormatMask & TypeAttributes.UnicodeClass);
-			}
+			get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.StringFormatMask, (uint) TypeAttributes.UnicodeClass); }
+			set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.StringFormatMask, (uint) TypeAttributes.UnicodeClass, value); }
 		}
 
 		public bool IsAutoClass {
-			get { return (m_attributes & TypeAttributes.StringFormatMask) == TypeAttributes.AutoClass; }
-			set {
-				if (value) {
-					m_attributes &= ~TypeAttributes.StringFormatMask;
-					m_attributes |= TypeAttributes.AutoClass;
-				} else
-					m_attributes &= ~(TypeAttributes.StringFormatMask & TypeAttributes.AutoClass);
-			}
+			get { return attributes.GetMaskedAttributes ((uint) TypeAttributes.StringFormatMask, (uint) TypeAttributes.AutoClass); }
+			set { attributes = attributes.SetMaskedAttributes ((uint) TypeAttributes.StringFormatMask, (uint) TypeAttributes.AutoClass, value); }
 		}
 
 		public bool IsBeforeFieldInit {
-			get { return (m_attributes & TypeAttributes.BeforeFieldInit) != 0; }
-			set {
-				if (value)
-					m_attributes |= TypeAttributes.BeforeFieldInit;
-				else
-					m_attributes &= ~TypeAttributes.BeforeFieldInit;
-			}
+			get { return attributes.GetAttributes ((uint) TypeAttributes.BeforeFieldInit); }
+			set { attributes = attributes.SetAttributes ((uint) TypeAttributes.BeforeFieldInit, value); }
 		}
 
 		public bool IsRuntimeSpecialName {
-			get { return (m_attributes & TypeAttributes.RTSpecialName) != 0; }
-			set {
-				if (value)
-					m_attributes |= TypeAttributes.RTSpecialName;
-				else
-					m_attributes &= ~TypeAttributes.RTSpecialName;
-			}
+			get { return attributes.GetAttributes ((uint) TypeAttributes.RTSpecialName); }
+			set { attributes = attributes.SetAttributes ((uint) TypeAttributes.RTSpecialName, value); }
 		}
 
 		public bool HasSecurity {
-			get { return (m_attributes & TypeAttributes.HasSecurity) != 0; }
-			set {
-				if (value)
-					m_attributes |= TypeAttributes.HasSecurity;
-				else
-					m_attributes &= ~TypeAttributes.HasSecurity;
-			}
+			get { return attributes.GetAttributes ((uint) TypeAttributes.HasSecurity); }
+			set { attributes = attributes.SetAttributes ((uint) TypeAttributes.HasSecurity, value); }
 		}
 
 		#endregion
 
 		public bool IsEnum {
-			get { return m_baseType != null && m_baseType.FullName == Constants.Enum; }
+			get { return base_type != null && base_type.IsTypeOf ("System", "Enum"); }
 		}
 
 		public override bool IsValueType {
 			get {
-				return m_baseType != null && ((m_baseType.FullName == Constants.Enum) ||
-					(m_baseType.FullName == Constants.ValueType && this.FullName != Constants.Enum));
+				if (base_type == null)
+					return false;
+
+				return base_type.IsTypeOf ("System", "Enum") || (base_type.IsTypeOf ("System", "ValueType") && !this.IsTypeOf ("System", "Enum"));
 			}
 		}
 
+		public override bool IsDefinition {
+			get { return true; }
+		}
+
 		public new TypeDefinition DeclaringType {
 			get { return (TypeDefinition) base.DeclaringType; }
 			set { base.DeclaringType = value; }
 		}
 
-		internal TypeDefinition (string name, string ns, TypeAttributes attrs) :
-			base (name, ns)
+		public TypeDefinition (string @namespace, string name, TypeAttributes attributes)
+			: base (@namespace, name)
 		{
-			m_hasInfo = false;
-			m_attributes = attrs;
+			this.attributes = (uint) attributes;
+			this.token = new MetadataToken (TokenType.TypeDef);
 		}
 
-		public TypeDefinition (string name, string ns,
-			TypeAttributes attributes, TypeReference baseType) :
-			this (name, ns, attributes)
+		public TypeDefinition (string @namespace, string name, TypeAttributes attributes, TypeReference baseType) :
+			this (@namespace, name, attributes)
 		{
 			this.BaseType = baseType;
 		}
@@ -474,89 +463,37 @@ namespace Mono.Cecil {
 		{
 			return this;
 		}
+	}
 
-		public TypeDefinition Clone ()
-		{
-			return Clone (this, new ImportContext (NullReferenceImporter.Instance, this));
-		}
+	static partial class Mixin {
 
-		internal static TypeDefinition Clone (TypeDefinition type, ImportContext context)
+		public static TypeReference GetEnumUnderlyingType (this TypeDefinition self)
 		{
-			TypeDefinition nt = new TypeDefinition (
-				type.Name,
-				type.Namespace,
-				type.Attributes);
+			var fields = self.Fields;
 
-			TypeReference contextType = context.GenericContext.Type;
+			for (int i = 0; i < fields.Count; i++) {
+				var field = fields [i];
+				if (!field.IsStatic)
+					return field.FieldType;
+			}
 
-			context.GenericContext.Type = nt;
+			throw new ArgumentException ();
+		}
 
-			GenericParameter.CloneInto (type, nt, context);
+		public static TypeDefinition GetNestedType (this TypeDefinition self, string name)
+		{
+			if (!self.HasNestedTypes)
+				return null;
 
-			if (type.BaseType != null)
-				nt.BaseType = context.Import (type.BaseType);
+			var nested_types = self.NestedTypes;
 
-			if (type.HasLayoutInfo) {
-				nt.ClassSize = type.ClassSize;
-				nt.PackingSize = type.PackingSize;
+			for (int i = 0; i < nested_types.Count; i++) {
+				var nested_type = nested_types [i];
+				if (nested_type.Name == name)
+					return nested_type;
 			}
 
-			if (type.HasFields) {
-				foreach (FieldDefinition field in type.Fields)
-					nt.Fields.Add (FieldDefinition.Clone (field, context));
-			}
-			if (type.HasConstructors) {
-				foreach (MethodDefinition ctor in type.Constructors)
-					nt.Constructors.Add (MethodDefinition.Clone (ctor, context));
-			}
-			if (type.HasMethods) {
-				foreach (MethodDefinition meth in type.Methods)
-					nt.Methods.Add (MethodDefinition.Clone (meth, context));
-			}
-			if (type.HasEvents) {
-				foreach (EventDefinition evt in type.Events)
-					nt.Events.Add (EventDefinition.Clone (evt, context));
-			}
-			if (type.HasProperties) {
-				foreach (PropertyDefinition prop in type.Properties)
-					nt.Properties.Add (PropertyDefinition.Clone (prop, context));
-			}
-			if (type.HasInterfaces) {
-				foreach (TypeReference intf in type.Interfaces)
-					nt.Interfaces.Add (context.Import (intf));
-			}
-			if (type.HasNestedTypes) {
-				foreach (TypeDefinition nested in type.NestedTypes)
-					nt.NestedTypes.Add (Clone (nested, context));
-			}
-			if (type.HasCustomAttributes) {
-				foreach (CustomAttribute ca in type.CustomAttributes)
-					nt.CustomAttributes.Add (CustomAttribute.Clone (ca, context));
-			}
-			if (type.HasSecurityDeclarations) {
-				foreach (SecurityDeclaration dec in type.SecurityDeclarations)
-					nt.SecurityDeclarations.Add (SecurityDeclaration.Clone (dec));
-			}
-
-			context.GenericContext.Type = contextType;
-
-			return nt;
-		}
-
-		public override void Accept (IReflectionVisitor visitor)
-		{
-			visitor.VisitTypeDefinition (this);
-
-			this.GenericParameters.Accept (visitor);
-			this.Interfaces.Accept (visitor);
-			this.Constructors.Accept (visitor);
-			this.Methods.Accept (visitor);
-			this.Fields.Accept (visitor);
-			this.Properties.Accept (visitor);
-			this.Events.Accept (visitor);
-			this.NestedTypes.Accept (visitor);
-			this.CustomAttributes.Accept (visitor);
-			this.SecurityDeclarations.Accept (visitor);
+			return null;
 		}
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/TypeDefinitionCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil/TypeDefinitionCollection.cs
index 6bd233b..702fe27 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/TypeDefinitionCollection.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/TypeDefinitionCollection.cs
@@ -4,10 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Fri Mar 30 18:43:56 +0200 2007
-//
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -29,188 +26,93 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
-
-	using System;
-	using System.Collections;
-	using System.Collections.Specialized;
-
-	using Mono.Cecil.Cil;
+using System;
+using System.Collections.Generic;
 
-	using Hcp = Mono.Cecil.HashCodeProvider;
-	using Cmp = System.Collections.Comparer;
+using Mono.Cecil.Metadata;
 
-	public sealed class TypeDefinitionCollection : NameObjectCollectionBase, IList, IReflectionVisitable  {
-
-		ModuleDefinition m_container;
-
-		public TypeDefinition this [int index] {
-			get { return this.BaseGet (index) as TypeDefinition; }
-			set { this.BaseSet (index, value); }
-		}
-
-		public TypeDefinition this [string fullName] {
-			get { return this.BaseGet (fullName) as TypeDefinition; }
-			set { this.BaseSet (fullName, value); }
-		}
-
-		public ModuleDefinition Container {
-			get { return m_container; }
-		}
-
-		public bool IsSynchronized {
-			get { return false; }
-		}
+using Mono.Collections.Generic;
 
-		public object SyncRoot {
-			get { return this; }
-		}
-
-		bool IList.IsReadOnly {
-			get { return false; }
-		}
+namespace Mono.Cecil {
 
-		bool IList.IsFixedSize {
-			get { return false; }
-		}
+	using Slot = Row<string, string>;
 
-		object IList.this [int index] {
-			get { return BaseGet (index); }
-			set {
-				Check (value);
-				BaseSet (index, value);
-			}
-		}
+	sealed class TypeDefinitionCollection : Collection<TypeDefinition> {
 
-		public TypeDefinitionCollection (ModuleDefinition container) :
-			base (Hcp.Instance, Cmp.Default)
-		{
-			m_container = container;
-		}
+		readonly ModuleDefinition container;
+		readonly Dictionary<Slot, TypeDefinition> name_cache;
 
-		public void Add (TypeDefinition value)
+		internal TypeDefinitionCollection (ModuleDefinition container)
 		{
-			if (value == null)
-				throw new ArgumentNullException ("value");
-
-			Attach (value);
-
-			this.BaseAdd (value.FullName, value);
+			this.container = container;
+			this.name_cache = new Dictionary<Slot, TypeDefinition> (new RowEqualityComparer ());
 		}
 
-		public void Clear ()
+		internal TypeDefinitionCollection (ModuleDefinition container, int capacity)
+			: base (capacity)
 		{
-			foreach (TypeDefinition item in this)
-				Detach (item);
-
-			this.BaseClear ();
+			this.container = container;
+			this.name_cache = new Dictionary<Slot, TypeDefinition> (capacity, new RowEqualityComparer ());
 		}
 
-		public bool Contains (TypeDefinition value)
+		protected override void OnAdd (TypeDefinition item, int index)
 		{
-			return Contains (value.FullName);
+			Attach (item);
 		}
 
-		public bool Contains (string fullName)
+		protected override void OnSet (TypeDefinition item, int index)
 		{
-			return this.BaseGet (fullName) != null;
+			Attach (item);
 		}
 
-		public int IndexOf (TypeDefinition value)
+		protected override void OnInsert (TypeDefinition item, int index)
 		{
-			string [] keys = this.BaseGetAllKeys ();
-			return Array.IndexOf (keys, value.FullName, 0, keys.Length);
+			Attach (item);
 		}
 
-		public void Remove (TypeDefinition value)
+		protected override void OnRemove (TypeDefinition item, int index)
 		{
-			this.BaseRemove (value.FullName);
-
-			Detach (value);
-		}
-
-		public void RemoveAt (int index)
-		{
-			TypeDefinition item = this [index];
-			Remove (item);
-
 			Detach (item);
 		}
 
-		public void CopyTo (Array ary, int index)
-		{
-			this.BaseGetAllValues ().CopyTo (ary, index);
-		}
-
-		public new IEnumerator GetEnumerator ()
-		{
-			return this.BaseGetAllValues ().GetEnumerator ();
-		}
-
-		public void Accept (IReflectionVisitor visitor)
-		{
-			visitor.VisitTypeDefinitionCollection (this);
-		}
-
-#if CF_1_0 || CF_2_0
-		internal object [] BaseGetAllValues ()
-		{
-			object [] values = new object [this.Count];
-			for (int i=0; i < values.Length; ++i) {
-				values [i] = this.BaseGet (i);
-			}
-			return values;
-		}
-#endif
-
-		void Check (object value)
-		{
-			if (!(value is TypeDefinition))
-				throw new ArgumentException ();
-		}
-
-		int IList.Add (object value)
+		protected override void OnClear ()
 		{
-			Check (value);
-			Add (value as TypeDefinition);
-			return 0;
+			foreach (var type in this)
+				Detach (type);
 		}
 
-		bool IList.Contains (object value)
+		void Attach (TypeDefinition type)
 		{
-			Check (value);
-			return Contains (value as TypeDefinition);
-		}
+			if (type.Module != null && type.Module != container)
+				throw new ArgumentException ("Type already attached");
 
-		int IList.IndexOf (object value)
-		{
-			throw new NotSupportedException ();
+			type.module = container;
+			type.scope = container;
+			name_cache [new Slot (type.Namespace, type.Name)] = type;
 		}
 
-		void IList.Insert (int index, object value)
+		void Detach (TypeDefinition type)
 		{
-			throw new NotSupportedException ();
+			type.module = null;
+			type.scope = null;
+			name_cache.Remove (new Slot (type.Namespace, type.Name));
 		}
 
-		void IList.Remove (object value)
+		public TypeDefinition GetType (string fullname)
 		{
-			Check (value);
-			Remove (value as TypeDefinition);
-		}
+			string @namespace, name;
+			TypeParser.SplitFullName (fullname, out @namespace, out name);
 
-		void Detach (TypeReference type)
-		{
-			type.Module = null;
+			return GetType (@namespace, name);
 		}
 
-		void Attach (TypeReference type)
+		public TypeDefinition GetType (string @namespace, string name)
 		{
-			if (type.Module != null)
-				throw new ReflectionException ("Type is already attached, clone it instead");
-
-			type.Module = m_container;
-			type.AttachToScope (m_container);
+			TypeDefinition type;
+			if (name_cache.TryGetValue (new Slot (@namespace, name), out type))
+				return type;
 
+			return null;
 		}
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/TypeParser.cs b/mcs/class/Mono.Cecil/Mono.Cecil/TypeParser.cs
new file mode 100644
index 0000000..df6acf3
--- /dev/null
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/TypeParser.cs
@@ -0,0 +1,554 @@
+//
+// TypeParser.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Text;
+
+using Mono.Cecil.Metadata;
+
+namespace Mono.Cecil {
+
+	class TypeParser {
+
+		class Type {
+			public const int Ptr = -1;
+			public const int ByRef = -2;
+			public const int SzArray = -3;
+
+			public string type_fullname;
+			public string [] nested_names;
+			public int arity;
+			public int [] specs;
+			public Type [] generic_arguments;
+			public string assembly;
+		}
+
+		readonly string fullname;
+		readonly int length;
+
+		int position;
+
+		TypeParser (string fullname)
+		{
+			this.fullname = fullname;
+			this.length = fullname.Length;
+		}
+
+		Type ParseType (bool fq_name)
+		{
+			var type = new Type ();
+			type.type_fullname = ParsePart ();
+
+			type.nested_names = ParseNestedNames ();
+
+			if (TryGetArity (type))
+				type.generic_arguments = ParseGenericArguments (type.arity);
+
+			type.specs = ParseSpecs ();
+
+			if (fq_name)
+				type.assembly = ParseAssemblyName ();
+
+			return type;
+		}
+
+		static bool TryGetArity (Type type)
+		{
+			int arity = 0;
+
+			TryAddArity (type.type_fullname, ref arity);
+
+			var nested_names = type.nested_names;
+			if (!nested_names.IsNullOrEmpty ()) {
+				for (int i = 0; i < nested_names.Length; i++)
+					TryAddArity (nested_names [i], ref arity);
+			}
+
+			type.arity = arity;
+			return arity > 0;
+		}
+
+		static bool TryGetArity (string name, out int arity)
+		{
+			arity = 0;
+			var index = name.LastIndexOf ('`');
+			if (index == -1)
+				return false;
+
+			return ParseInt32 (name.Substring (index + 1), out arity);
+		}
+
+		static bool ParseInt32 (string value, out int result)
+		{
+#if CF
+			try {
+				result = int.Parse (value);
+				return true;
+			} catch {
+				result = 0;
+				return false;
+			}
+#else
+			return int.TryParse (value, out result);
+#endif
+		}
+
+		static void TryAddArity (string name, ref int arity)
+		{
+			int type_arity;
+			if (!TryGetArity (name, out type_arity))
+				return;
+
+			arity += type_arity;
+		}
+
+		string ParsePart ()
+		{
+			int start = position;
+			while (position < length && !IsDelimiter (fullname [position]))
+				position++;
+
+			return fullname.Substring (start, position - start);
+		}
+
+		static bool IsDelimiter (char chr)
+		{
+			return "+,[]*&".IndexOf (chr) != -1;
+		}
+
+		void TryParseWhiteSpace ()
+		{
+			while (position < length && Char.IsWhiteSpace (fullname [position]))
+				position++;
+		}
+
+		string [] ParseNestedNames ()
+		{
+			string [] nested_names = null;
+			while (TryParse ('+'))
+				Add (ref nested_names, ParsePart ());
+
+			return nested_names;
+		}
+
+		bool TryParse (char chr)
+		{
+			if (position < length && fullname [position] == chr) {
+				position++;
+				return true;
+			}
+
+			return false;
+		}
+
+		static void Add<T> (ref T [] array, T item)
+		{
+			if (array == null) {
+				array = new [] { item };
+				return;
+			}
+
+#if !CF
+			Array.Resize (ref array, array.Length + 1);
+#else
+			var copy = new T [array.Length + 1];
+			Array.Copy (array, copy, array.Length);
+			array = copy;
+#endif
+			array [array.Length - 1] = item;
+		}
+
+		int [] ParseSpecs ()
+		{
+			int [] specs = null;
+
+			while (position < length) {
+				switch (fullname [position]) {
+				case '*':
+					position++;
+					Add (ref specs, Type.Ptr);
+					break;
+				case '&':
+					position++;
+					Add (ref specs, Type.ByRef);
+					break;
+				case '[':
+					position++;
+					switch (fullname [position]) {
+					case ']':
+						position++;
+						Add (ref specs, Type.SzArray);
+						break;
+					case '*':
+						position++;
+						Add (ref specs, 1);
+						break;
+					default:
+						var rank = 1;
+						while (TryParse (','))
+							rank++;
+
+						Add (ref specs, rank);
+
+						TryParse (']');
+						break;
+					}
+					break;
+				default:
+					return specs;
+				}
+			}
+
+			return specs;
+		}
+
+		Type [] ParseGenericArguments (int arity)
+		{
+			Type [] generic_arguments = null;
+
+			if (position == length || fullname [position] != '[')
+				return generic_arguments;
+
+			TryParse ('[');
+
+			for (int i = 0; i < arity; i++) {
+				var fq_argument = TryParse ('[');
+				Add (ref generic_arguments, ParseType (fq_argument));
+				if (fq_argument)
+					TryParse (']');
+
+				TryParse (',');
+				TryParseWhiteSpace ();
+			}
+
+			TryParse (']');
+
+			return generic_arguments;
+		}
+
+		string ParseAssemblyName ()
+		{
+			if (!TryParse (','))
+				return string.Empty;
+
+			TryParseWhiteSpace ();
+
+			var start = position;
+			while (position < length) {
+				var chr = fullname [position];
+				if (chr == '[' || chr == ']')
+					break;
+
+				position++;
+			}
+
+			return fullname.Substring (start, position - start);
+		}
+
+		public static TypeReference ParseType (ModuleDefinition module, string fullname)
+		{
+			if (fullname == null)
+				return null;
+
+			var parser = new TypeParser (fullname);
+			return GetTypeReference (module, parser.ParseType (true));
+		}
+
+		static TypeReference GetTypeReference (ModuleDefinition module, Type type_info)
+		{
+			TypeReference type;
+			if (!TryGetDefinition (module, type_info, out type))
+				type = CreateReference (type_info, module, GetMetadataScope (module, type_info));
+
+			return CreateSpecs (type, type_info);
+		}
+
+		static TypeReference CreateSpecs (TypeReference type, Type type_info)
+		{
+			type = TryCreateGenericInstanceType (type, type_info);
+
+			var specs = type_info.specs;
+			if (specs.IsNullOrEmpty ())
+				return type;
+
+			for (int i = 0; i < specs.Length; i++) {
+				switch (specs [i]) {
+				case Type.Ptr:
+					type = new PointerType (type);
+					break;
+				case Type.ByRef:
+					type = new ByReferenceType (type);
+					break;
+				case Type.SzArray:
+					type = new ArrayType (type);
+					break;
+				default:
+					var array = new ArrayType (type);
+					array.Dimensions.Clear ();
+
+					for (int j = 0; j < specs [i]; j++)
+						array.Dimensions.Add (new ArrayDimension ());
+
+					type = array;
+					break;
+				}
+			}
+
+			return type;
+		}
+
+		static TypeReference TryCreateGenericInstanceType (TypeReference type, Type type_info)
+		{
+			var generic_arguments = type_info.generic_arguments;
+			if (generic_arguments.IsNullOrEmpty ())
+				return type;
+
+			var instance = new GenericInstanceType (type);
+			var instance_arguments = instance.GenericArguments;
+
+			for (int i = 0; i < generic_arguments.Length; i++)
+				instance_arguments.Add (GetTypeReference (type.Module, generic_arguments [i]));
+
+			return instance;
+		}
+
+		public static void SplitFullName (string fullname, out string @namespace, out string name)
+		{
+			var last_dot = fullname.LastIndexOf ('.');
+
+			if (last_dot == -1) {
+				@namespace = string.Empty;
+				name = fullname;
+			} else {
+				@namespace = fullname.Substring (0, last_dot);
+				name = fullname.Substring (last_dot + 1);
+			}
+		}
+
+		static TypeReference CreateReference (Type type_info, ModuleDefinition module, IMetadataScope scope)
+		{
+			string @namespace, name;
+			SplitFullName (type_info.type_fullname, out @namespace, out name);
+
+			var type = new TypeReference (@namespace, name, module, scope);
+
+			AdjustGenericParameters (type);
+
+			var nested_names = type_info.nested_names;
+			if (nested_names.IsNullOrEmpty ())
+				return type;
+
+			for (int i = 0; i < nested_names.Length; i++) {
+				type = new TypeReference (string.Empty, nested_names [i], module, null) {
+					DeclaringType = type,
+				};
+
+				AdjustGenericParameters (type);
+			}
+
+			return type;
+		}
+
+		static void AdjustGenericParameters (TypeReference type)
+		{
+			int arity;
+			if (!TryGetArity (type.Name, out arity))
+				return;
+
+			for (int i = 0; i < arity; i++)
+				type.GenericParameters.Add (new GenericParameter (type));
+		}
+
+		static IMetadataScope GetMetadataScope (ModuleDefinition module, Type type_info)
+		{
+			if (string.IsNullOrEmpty (type_info.assembly))
+				return module.TypeSystem.Corlib;
+
+			return MatchReference (module, AssemblyNameReference.Parse (type_info.assembly));
+		}
+
+		static AssemblyNameReference MatchReference (ModuleDefinition module, AssemblyNameReference pattern)
+		{
+			var references = module.AssemblyReferences;
+
+			for (int i = 0; i < references.Count; i++) {
+				var reference = references [i];
+				if (reference.FullName == pattern.FullName)
+					return reference;
+			}
+
+			return pattern;
+		}
+
+		static bool TryGetDefinition (ModuleDefinition module, Type type_info, out TypeReference type)
+		{
+			type = null;
+			if (!TryCurrentModule (module, type_info))
+				return false;
+
+			var typedef = module.GetType (type_info.type_fullname);
+			if (typedef == null)
+				return false;
+
+			var nested_names = type_info.nested_names;
+			if (!nested_names.IsNullOrEmpty ()) {
+				for (int i = 0; i < nested_names.Length; i++)
+					typedef = typedef.GetNestedType (nested_names [i]);
+			}
+
+			type = typedef;
+			return true;
+		}
+
+		static bool TryCurrentModule (ModuleDefinition module, Type type_info)
+		{
+			if (string.IsNullOrEmpty (type_info.assembly))
+				return true;
+
+			if (module.assembly != null && module.assembly.Name.FullName == type_info.assembly)
+				return true;
+
+			return false;
+		}
+
+		public static string ToParseable (TypeReference type)
+		{
+			if (type == null)
+				return null;
+
+			var name = new StringBuilder ();
+			AppendType (type, name, true, true);
+			return name.ToString ();
+		}
+
+		static void AppendType (TypeReference type, StringBuilder name, bool fq_name, bool top_level)
+		{
+			var declaring_type = type.DeclaringType;
+			if (declaring_type != null) {
+				AppendType (declaring_type, name, false, top_level);
+				name.Append ('+');
+			}
+
+			var @namespace = type.Namespace;
+			if (!string.IsNullOrEmpty (@namespace)) {
+				name.Append (@namespace);
+				name.Append ('.');
+			}
+
+			name.Append (type.GetElementType ().Name);
+
+			if (!fq_name)
+				return;
+
+			if (type.IsTypeSpecification ())
+				AppendTypeSpecification ((TypeSpecification) type, name);
+
+			if (RequiresFullyQualifiedName (type, top_level)) {
+				name.Append (", ");
+				name.Append (GetScopeFullName (type));
+			}
+		}
+
+		static string GetScopeFullName (TypeReference type)
+		{
+			var scope = type.Scope;
+			switch (scope.MetadataScopeType) {
+			case MetadataScopeType.AssemblyNameReference:
+				return ((AssemblyNameReference) scope).FullName;
+			case MetadataScopeType.ModuleDefinition:
+				return ((ModuleDefinition) scope).Assembly.Name.FullName;
+			}
+
+			throw new ArgumentException ();
+		}
+
+		static void AppendTypeSpecification (TypeSpecification type, StringBuilder name)
+		{
+			if (type.ElementType.IsTypeSpecification ())
+				AppendTypeSpecification ((TypeSpecification) type.ElementType, name);
+
+			switch (type.etype) {
+			case ElementType.Ptr:
+				name.Append ('*');
+				break;
+			case ElementType.ByRef:
+				name.Append ('&');
+				break;
+			case ElementType.SzArray:
+			case ElementType.Array:
+				var array = (ArrayType) type;
+				if (array.IsVector) {
+					name.Append ("[]");
+				} else {
+					name.Append ('[');
+					for (int i = 1; i < array.Rank; i++)
+						name.Append (',');
+					name.Append (']');
+				}
+				break;
+			case ElementType.GenericInst:
+				var instance = (GenericInstanceType) type;
+				var arguments = instance.GenericArguments;
+
+				name.Append ('[');
+
+				for (int i = 0; i < arguments.Count; i++) {
+					if (i > 0)
+						name.Append (',');
+
+					var argument = arguments [i];
+					var requires_fqname = argument.Scope != argument.Module;
+
+					if (requires_fqname)
+						name.Append ('[');
+
+					AppendType (argument, name, true, false);
+
+					if (requires_fqname)
+						name.Append (']');
+				}
+
+				name.Append (']');
+				break;
+			default:
+				return;
+			}
+		}
+
+		static bool RequiresFullyQualifiedName (TypeReference type, bool top_level)
+		{
+			if (type.Scope == type.Module)
+				return false;
+
+			if (type.Scope.Name == "mscorlib" && top_level)
+				return false;
+
+			return true;
+		}
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/TypeReference.cs b/mcs/class/Mono.Cecil/Mono.Cecil/TypeReference.cs
index ae863f7..596ae69 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/TypeReference.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/TypeReference.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,77 +26,126 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System;
+
+using Mono.Cecil.Metadata;
+using Mono.Collections.Generic;
+
 namespace Mono.Cecil {
 
-	public class TypeReference : MemberReference, IGenericParameterProvider, ICustomAttributeProvider {
+	public enum MetadataType : byte {
+		Void = ElementType.Void,
+		Boolean = ElementType.Boolean,
+		Char = ElementType.Char,
+		SByte = ElementType.I1,
+		Byte = ElementType.U1,
+		Int16 = ElementType.I2,
+		UInt16 = ElementType.U2,
+		Int32 = ElementType.I4,
+		UInt32 = ElementType.U4,
+		Int64 = ElementType.I8,
+		UInt64 = ElementType.U8,
+		Single = ElementType.R4,
+		Double = ElementType.R8,
+		String = ElementType.String,
+		Pointer = ElementType.Ptr,
+		ByReference = ElementType.ByRef,
+		ValueType = ElementType.ValueType,
+		Class = ElementType.Class,
+		Var = ElementType.Var,
+		Array = ElementType.Array,
+		GenericInstance = ElementType.GenericInst,
+		TypedByReference = ElementType.TypedByRef,
+		IntPtr = ElementType.I,
+		UIntPtr = ElementType.U,
+		FunctionPointer = ElementType.FnPtr,
+		Object = ElementType.Object,
+		MVar = ElementType.MVar,
+		RequiredModifier = ElementType.CModReqD,
+		OptionalModifier = ElementType.CModOpt,
+		Sentinel = ElementType.Sentinel,
+		Pinned = ElementType.Pinned,
+	}
+
+	public class TypeReference : MemberReference, IGenericParameterProvider, IGenericContext {
 
-		string m_namespace;
-		bool m_fullNameDiscarded;
-		string m_fullName;
-		protected bool m_isValueType;
-		IMetadataScope m_scope;
-		ModuleDefinition m_module;
+		string @namespace;
+		bool value_type;
+		internal IMetadataScope scope;
+		internal ModuleDefinition module;
 
-		CustomAttributeCollection m_customAttrs;
-		GenericParameterCollection m_genparams;
+		internal ElementType etype = ElementType.None;
+
+		string fullname;
+
+		protected Collection<GenericParameter> generic_parameters;
 
 		public override string Name {
 			get { return base.Name; }
 			set {
 				base.Name = value;
-				m_fullNameDiscarded = true;
+				fullname = null;
 			}
 		}
 
 		public virtual string Namespace {
-			get { return m_namespace; }
+			get { return @namespace; }
 			set {
-				m_namespace = value;
-				m_fullNameDiscarded = true;
+				@namespace = value;
+				fullname = null;
 			}
 		}
 
 		public virtual bool IsValueType {
-			get { return m_isValueType; }
-			set { m_isValueType = value; }
+			get { return value_type; }
+			set { value_type = value; }
 		}
 
-		public virtual ModuleDefinition Module {
-			get { return m_module; }
-			set { m_module = value; }
+		public override ModuleDefinition Module {
+			get {
+				if (module != null)
+					return module;
+
+				var declaring_type = this.DeclaringType;
+				if (declaring_type != null)
+					return declaring_type.Module;
+
+				return null;
+			}
 		}
 
-		public bool HasCustomAttributes {
-			get { return (m_customAttrs == null) ? false : (m_customAttrs.Count > 0); }
+		IGenericParameterProvider IGenericContext.Type {
+			get { return this; }
 		}
 
-		public CustomAttributeCollection CustomAttributes {
-			get {
-				if (m_customAttrs == null)
-					m_customAttrs = new CustomAttributeCollection (this);
+		IGenericParameterProvider IGenericContext.Method {
+			get { return null; }
+		}
 
-				return m_customAttrs;
-			}
+		GenericParameterType IGenericParameterProvider.GenericParameterType {
+			get { return GenericParameterType.Type; }
 		}
 
-		public bool HasGenericParameters {
-			get { return (m_genparams == null) ? false : (m_genparams.Count > 0); }
+		public virtual bool HasGenericParameters {
+			get { return !generic_parameters.IsNullOrEmpty (); }
 		}
 
-		public GenericParameterCollection GenericParameters {
+		public virtual Collection<GenericParameter> GenericParameters {
 			get {
-				if (m_genparams == null)
-					m_genparams = new GenericParameterCollection (this);
-				return m_genparams;
+				if (generic_parameters != null)
+					return generic_parameters;
+
+				return generic_parameters = new Collection<GenericParameter> ();
 			}
 		}
 
 		public virtual IMetadataScope Scope {
 			get {
-				if (this.DeclaringType != null)
-					return this.DeclaringType.Scope;
+				var declaring_type = this.DeclaringType;
+				if (declaring_type != null)
+					return declaring_type.Scope;
 
-				return m_scope;
+				return scope;
 			}
 		}
 
@@ -104,67 +153,175 @@ namespace Mono.Cecil {
 			get { return this.DeclaringType != null; }
 		}
 
-		public virtual string FullName {
+		public override TypeReference DeclaringType {
+			get { return base.DeclaringType; }
+			set {
+				base.DeclaringType = value;
+				fullname = null;
+			}
+		}
+
+		public override string FullName {
 			get {
-				if (m_fullName != null && !m_fullNameDiscarded)
-					return m_fullName;
+				if (fullname != null)
+					return fullname;
 
-				if (this.IsNested)
-					return string.Concat (this.DeclaringType.FullName, "/", this.Name);
+				if (IsNested)
+					return fullname = DeclaringType.FullName + "/" + Name;
 
-				if (m_namespace == null || m_namespace.Length == 0)
-					return this.Name;
+				if (string.IsNullOrEmpty (@namespace))
+					return fullname = Name;
 
-				m_fullName = string.Concat (m_namespace, ".", this.Name);
-				m_fullNameDiscarded = false;
-				return m_fullName;
+				return fullname = @namespace + "." + Name;
 			}
 		}
 
-		protected TypeReference (string name, string ns) : base (name)
+		public virtual bool IsByReference {
+			get { return false; }
+		}
+
+		public virtual bool IsPointer {
+			get { return false; }
+		}
+
+		public virtual bool IsSentinel {
+			get { return false; }
+		}
+
+		public virtual bool IsArray {
+			get { return false; }
+		}
+
+		public virtual bool IsGenericParameter {
+			get { return false; }
+		}
+
+		public virtual bool IsGenericInstance {
+			get { return false; }
+		}
+
+		public virtual bool IsRequiredModifier {
+			get { return false; }
+		}
+
+		public virtual bool IsOptionalModifier {
+			get { return false; }
+		}
+
+		public virtual bool IsPinned {
+			get { return false; }
+		}
+
+		public virtual bool IsFunctionPointer {
+			get { return false; }
+		}
+
+		public bool IsPrimitive {
+			get {
+				switch (etype) {
+				case ElementType.Boolean:
+				case ElementType.Char:
+				case ElementType.I:
+				case ElementType.U:
+				case ElementType.I1:
+				case ElementType.U1:
+				case ElementType.I2:
+				case ElementType.U2:
+				case ElementType.I4:
+				case ElementType.U4:
+				case ElementType.I8:
+				case ElementType.U8:
+				case ElementType.R4:
+				case ElementType.R8:
+					return true;
+				default:
+					return false;
+				}
+			}
+		}
+
+		public virtual MetadataType MetadataType {
+			get {
+				switch (etype) {
+				case ElementType.None:
+					return IsValueType ? MetadataType.ValueType : MetadataType.Class;
+				default:
+					return (MetadataType) etype;
+				}
+			}
+		}
+
+		protected TypeReference (string @namespace, string name)
+			: base (name)
 		{
-			m_namespace = ns;
-			m_fullNameDiscarded = false;
+			this. at namespace = @namespace ?? string.Empty;
+			this.token = new MetadataToken (TokenType.TypeRef, 0);
 		}
 
-		internal TypeReference (string name, string ns, IMetadataScope scope) : this (name, ns)
+		public TypeReference (string @namespace, string name, ModuleDefinition module, IMetadataScope scope)
+			: this (@namespace, name)
 		{
-			m_scope = scope;
+			this.module = module;
+			this.scope = scope;
 		}
 
-		public TypeReference (string name, string ns, IMetadataScope scope, bool valueType) :
-			this (name, ns, scope)
+		public TypeReference (string @namespace, string name, ModuleDefinition module, IMetadataScope scope, bool valueType) :
+			this (@namespace, name, module, scope)
 		{
-			m_isValueType = valueType;
+			value_type = valueType;
+		}
+
+		public virtual TypeReference GetElementType ()
+		{
+			return this;
 		}
 
 		public virtual TypeDefinition Resolve ()
 		{
-			ModuleDefinition module = Module;
+			var module = this.Module;
 			if (module == null)
-				return null;
+				throw new NotSupportedException ();
 
-			return module.Resolver.Resolve (this);
+			return module.Resolve (this);
 		}
+	}
 
-		public virtual TypeReference GetOriginalType ()
-		{
-			return this;
-		}
+	static partial class Mixin {
 
-		internal void AttachToScope (IMetadataScope scope)
+		public static bool IsTypeOf (this TypeReference self, string @namespace, string name)
 		{
-			m_scope = scope;
+			return self.Name == name
+				&& self.Namespace == @namespace;
 		}
 
-		public override void Accept (IReflectionVisitor visitor)
+		public static bool IsTypeSpecification (this TypeReference type)
 		{
-			visitor.VisitTypeReference (this);
+			switch (type.etype) {
+			case ElementType.Array:
+			case ElementType.ByRef:
+			case ElementType.CModOpt:
+			case ElementType.CModReqD:
+			case ElementType.FnPtr:
+			case ElementType.GenericInst:
+			case ElementType.MVar:
+			case ElementType.Pinned:
+			case ElementType.Ptr:
+			case ElementType.SzArray:
+			case ElementType.Sentinel:
+			case ElementType.Var:
+				return true;
+			}
+
+			return false;
 		}
 
-		public override string ToString ()
+		public static TypeDefinition CheckedResolve (this TypeReference self)
 		{
-			return this.FullName;
+			var type = self.Resolve ();
+			if (type == null)
+				throw new ResolutionException (self);
+
+			return type;
 		}
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/TypeReferenceCollection.cs b/mcs/class/Mono.Cecil/Mono.Cecil/TypeReferenceCollection.cs
deleted file mode 100644
index 2482e38..0000000
--- a/mcs/class/Mono.Cecil/Mono.Cecil/TypeReferenceCollection.cs
+++ /dev/null
@@ -1,214 +0,0 @@
-//
-// TypeReferenceCollection.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Generated by /CodeGen/cecil-gen.rb do not edit
-// Fri Mar 30 18:43:56 +0200 2007
-//
-// (C) 2005 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Cecil {
-
-	using System;
-	using System.Collections;
-	using System.Collections.Specialized;
-
-	using Mono.Cecil.Cil;
-
-	using Hcp = Mono.Cecil.HashCodeProvider;
-	using Cmp = System.Collections.Comparer;
-
-	public sealed class TypeReferenceCollection : NameObjectCollectionBase, IList, IReflectionVisitable  {
-
-		ModuleDefinition m_container;
-
-		public TypeReference this [int index] {
-			get { return this.BaseGet (index) as TypeReference; }
-			set { this.BaseSet (index, value); }
-		}
-
-		public TypeReference this [string fullName] {
-			get { return this.BaseGet (fullName) as TypeReference; }
-			set { this.BaseSet (fullName, value); }
-		}
-
-		public ModuleDefinition Container {
-			get { return m_container; }
-		}
-
-		public bool IsSynchronized {
-			get { return false; }
-		}
-
-		public object SyncRoot {
-			get { return this; }
-		}
-
-		bool IList.IsReadOnly {
-			get { return false; }
-		}
-
-		bool IList.IsFixedSize {
-			get { return false; }
-		}
-
-		object IList.this [int index] {
-			get { return BaseGet (index); }
-			set {
-				Check (value);
-				BaseSet (index, value);
-			}
-		}
-
-		public TypeReferenceCollection (ModuleDefinition container) :
-			base (Hcp.Instance, Cmp.Default)
-		{
-			m_container = container;
-		}
-
-		public void Add (TypeReference value)
-		{
-			if (value == null)
-				throw new ArgumentNullException ("value");
-
-			Attach (value);
-
-			this.BaseAdd (value.FullName, value);
-		}
-
-		public void Clear ()
-		{
-			foreach (TypeReference item in this)
-				Detach (item);
-
-			this.BaseClear ();
-		}
-
-		public bool Contains (TypeReference value)
-		{
-			return Contains (value.FullName);
-		}
-
-		public bool Contains (string fullName)
-		{
-			return this.BaseGet (fullName) != null;
-		}
-
-		public int IndexOf (TypeReference value)
-		{
-			string [] keys = this.BaseGetAllKeys ();
-			return Array.IndexOf (keys, value.FullName, 0, keys.Length);
-		}
-
-		public void Remove (TypeReference value)
-		{
-			this.BaseRemove (value.FullName);
-
-			Detach (value);
-		}
-
-		public void RemoveAt (int index)
-		{
-			TypeReference item = this [index];
-			Remove (item);
-
-			Detach (item);
-		}
-
-		public void CopyTo (Array ary, int index)
-		{
-			this.BaseGetAllValues ().CopyTo (ary, index);
-		}
-
-		public new IEnumerator GetEnumerator ()
-		{
-			return this.BaseGetAllValues ().GetEnumerator ();
-		}
-
-		public void Accept (IReflectionVisitor visitor)
-		{
-			visitor.VisitTypeReferenceCollection (this);
-		}
-
-#if CF_1_0 || CF_2_0
-		internal object [] BaseGetAllValues ()
-		{
-			object [] values = new object [this.Count];
-			for (int i=0; i < values.Length; ++i) {
-				values [i] = this.BaseGet (i);
-			}
-			return values;
-		}
-#endif
-
-		void Check (object value)
-		{
-			if (!(value is TypeReference))
-				throw new ArgumentException ();
-		}
-
-		int IList.Add (object value)
-		{
-			Check (value);
-			Add (value as TypeReference);
-			return 0;
-		}
-
-		bool IList.Contains (object value)
-		{
-			Check (value);
-			return Contains (value as TypeReference);
-		}
-
-		int IList.IndexOf (object value)
-		{
-			throw new NotSupportedException ();
-		}
-
-		void IList.Insert (int index, object value)
-		{
-			throw new NotSupportedException ();
-		}
-
-		void IList.Remove (object value)
-		{
-			Check (value);
-			Remove (value as TypeReference);
-		}
-
-		void Detach (TypeReference type)
-		{
-			type.Module = null;
-		}
-
-		void Attach (TypeReference type)
-		{
-			if (type.Module != null)
-				throw new ReflectionException ("Type is already attached, clone it instead");
-
-			type.Module = m_container;
-		}
-	}
-}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/TypeSpecification.cs b/mcs/class/Mono.Cecil/Mono.Cecil/TypeSpecification.cs
index 9648a4b..da4e726 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/TypeSpecification.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/TypeSpecification.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -26,55 +26,69 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Mono.Cecil {
+using System;
+
+using Mono.Cecil.Metadata;
 
-	using System;
+namespace Mono.Cecil {
 
 	public abstract class TypeSpecification : TypeReference {
 
-		private TypeReference m_elementType;
+		readonly TypeReference element_type;
+
+		public TypeReference ElementType {
+			get { return element_type; }
+		}
 
 		public override string Name {
-			get { return m_elementType.Name; }
+			get { return element_type.Name; }
 			set { throw new NotSupportedException (); }
 		}
 
 		public override string Namespace {
-			get { return m_elementType.Namespace; }
+			get { return element_type.Namespace; }
 			set { throw new NotSupportedException (); }
 		}
 
-		public override bool IsValueType {
-			get { return m_elementType.IsValueType; }
-			set { throw new InvalidOperationException (); }
-		}
-
 		public override IMetadataScope Scope {
-			get { return m_elementType.Scope; }
+			get { return element_type.Scope; }
 		}
 
 		public override ModuleDefinition Module {
-			get { return m_elementType.Module; }
-			set { throw new InvalidOperationException (); }
+			get { return element_type.Module; }
 		}
 
-		public TypeReference ElementType {
-			get { return m_elementType; }
-			set { m_elementType = value; }
+		public override string FullName {
+			get { return element_type.FullName; }
 		}
 
-		public override string FullName {
-			get { return m_elementType.FullName; }
+		internal override bool ContainsGenericParameter {
+			get { return element_type.ContainsGenericParameter; }
 		}
 
-		internal TypeSpecification (TypeReference elementType) : base (string.Empty, string.Empty)
+		public override MetadataType MetadataType {
+			get { return (MetadataType) etype; }
+		}
+
+		internal TypeSpecification (TypeReference type)
+			: base (null, null)
 		{
-			m_elementType = elementType;
+			this.element_type = type;
+			this.token = new MetadataToken (TokenType.TypeSpec);
 		}
 
-		public override TypeReference GetOriginalType ()
+		public override TypeReference GetElementType ()
+		{
+			return element_type.GetElementType ();
+		}
+	}
+
+	static partial class Mixin {
+
+		public static void CheckType (TypeReference type)
 		{
-			return m_elementType.GetOriginalType ();
+			if (type == null)
+				throw new ArgumentNullException ("type");
 		}
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/TypeSystem.cs b/mcs/class/Mono.Cecil/Mono.Cecil/TypeSystem.cs
new file mode 100644
index 0000000..0b0ba91
--- /dev/null
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/TypeSystem.cs
@@ -0,0 +1,273 @@
+//
+// TypeSystem.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+using Mono.Cecil.Metadata;
+
+namespace Mono.Cecil {
+
+	public abstract class TypeSystem {
+
+		sealed class CorlibTypeSystem : TypeSystem {
+
+			public CorlibTypeSystem (ModuleDefinition module)
+				: base (module)
+			{
+			}
+
+			internal override TypeReference LookupType (string @namespace, string name)
+			{
+				var metadata = module.MetadataSystem;
+				if (metadata.Types == null)
+					Initialize (module.Types);
+
+				return module.Read (this, (_, reader) => {
+					var types = reader.metadata.Types;
+
+					for (int i = 0; i < types.Length; i++) {
+						if (types [i] == null)
+							types [i] = reader.GetTypeDefinition ((uint) i + 1);
+
+						var type = types [i];
+
+						if (type.Name == name && type.Namespace == @namespace)
+							return type;
+					}
+
+					return null;
+				});
+			}
+
+			static void Initialize (object obj)
+			{
+			}
+		}
+
+		sealed class CommonTypeSystem : TypeSystem {
+
+			AssemblyNameReference corlib;
+
+			public CommonTypeSystem (ModuleDefinition module)
+				: base (module)
+			{
+			}
+
+			internal override TypeReference LookupType (string @namespace, string name)
+			{
+				return CreateTypeReference (@namespace, name);
+			}
+
+			public AssemblyNameReference GetCorlibReference ()
+			{
+				if (corlib != null)
+					return corlib;
+
+				const string mscorlib = "mscorlib";
+
+				var references = module.AssemblyReferences;
+
+				for (int i = 0; i < references.Count; i++) {
+					var reference = references [i];
+					if (reference.Name == mscorlib)
+						return corlib = reference;
+				}
+
+				corlib = new AssemblyNameReference {
+					Name = mscorlib,
+					Version = GetCorlibVersion (),
+					PublicKeyToken = new byte [] { 0xb7, 0x7a, 0x5c, 0x56, 0x19, 0x34, 0xe0, 0x89 },
+				};
+
+				references.Add (corlib);
+
+				return corlib;
+			}
+
+			Version GetCorlibVersion ()
+			{
+				switch (module.Runtime) {
+				case TargetRuntime.Net_1_0:
+				case TargetRuntime.Net_1_1:
+					return new Version (1, 0, 0, 0);
+				case TargetRuntime.Net_2_0:
+					return new Version (2, 0, 0, 0);
+				case TargetRuntime.Net_4_0:
+					return new Version (4, 0, 0, 0);
+				default:
+					throw new NotSupportedException ();
+				}
+			}
+
+			TypeReference CreateTypeReference (string @namespace, string name)
+			{
+				return new TypeReference (@namespace, name, module, GetCorlibReference ());
+			}
+		}
+
+		readonly ModuleDefinition module;
+
+		TypeReference type_object;
+		TypeReference type_void;
+		TypeReference type_bool;
+		TypeReference type_char;
+		TypeReference type_sbyte;
+		TypeReference type_byte;
+		TypeReference type_int16;
+		TypeReference type_uint16;
+		TypeReference type_int32;
+		TypeReference type_uint32;
+		TypeReference type_int64;
+		TypeReference type_uint64;
+		TypeReference type_single;
+		TypeReference type_double;
+		TypeReference type_intptr;
+		TypeReference type_uintptr;
+		TypeReference type_string;
+		TypeReference type_typedref;
+
+		TypeSystem (ModuleDefinition module)
+		{
+			this.module = module;
+		}
+
+		internal static TypeSystem CreateTypeSystem (ModuleDefinition module)
+		{
+			if (IsCorlib (module))
+				return new CorlibTypeSystem (module);
+
+			return new CommonTypeSystem (module);
+		}
+
+		static bool IsCorlib (ModuleDefinition module)
+		{
+			if (module.Assembly == null)
+				return false;
+
+			return module.Assembly.Name.Name == "mscorlib";
+		}
+
+		internal abstract TypeReference LookupType (string @namespace, string name);
+
+		TypeReference LookupSystemType (string name, ElementType element_type)
+		{
+			var type = LookupType ("System", name);
+			type.etype = element_type;
+			return type;
+		}
+
+		TypeReference LookupSystemValueType (string name, ElementType element_type)
+		{
+			var type = LookupSystemType (name, element_type);
+			type.IsValueType = true;
+			return type;
+		}
+
+		public IMetadataScope Corlib {
+			get {
+				var common = this as CommonTypeSystem;
+				if (common == null)
+					return module;
+
+				return common.GetCorlibReference ();
+			}
+		}
+
+		public TypeReference Object {
+			get { return type_object ?? (type_object = LookupSystemType ("Object", ElementType.Object)); }
+		}
+
+		public TypeReference Void {
+			get { return type_void ?? (type_void = LookupSystemType ("Void", ElementType.Void)); }
+		}
+
+		public TypeReference Boolean {
+			get { return type_bool ?? (type_bool = LookupSystemValueType ("Boolean", ElementType.Boolean)); }
+		}
+
+		public TypeReference Char {
+			get { return type_char ?? (type_char = LookupSystemValueType ("Char", ElementType.Char)); }
+		}
+
+		public TypeReference SByte {
+			get { return type_sbyte ?? (type_sbyte = LookupSystemValueType ("SByte", ElementType.I1)); }
+		}
+
+		public TypeReference Byte {
+			get { return type_byte ?? (type_byte = LookupSystemValueType ("Byte", ElementType.U1)); }
+		}
+
+		public TypeReference Int16 {
+			get { return type_int16 ?? (type_int16 = LookupSystemValueType ("Int16", ElementType.I2)); }
+		}
+
+		public TypeReference UInt16 {
+			get { return type_uint16 ?? (type_uint16 = LookupSystemValueType ("UInt16", ElementType.U2)); }
+		}
+
+		public TypeReference Int32 {
+			get { return type_int32 ?? (type_int32 = LookupSystemValueType ("Int32", ElementType.I4)); }
+		}
+
+		public TypeReference UInt32 {
+			get { return type_uint32 ?? (type_uint32 = LookupSystemValueType ("UInt32", ElementType.U4)); }
+		}
+
+		public TypeReference Int64 {
+			get { return type_int64 ?? (type_int64 = LookupSystemValueType ("Int64", ElementType.I8)); }
+		}
+
+		public TypeReference UInt64 {
+			get { return type_uint64 ?? (type_uint64 = LookupSystemValueType ("UInt64", ElementType.U8)); }
+		}
+
+		public TypeReference Single {
+			get { return type_single ?? (type_single = LookupSystemValueType ("Single", ElementType.R4)); }
+		}
+
+		public TypeReference Double {
+			get { return type_double ?? (type_double = LookupSystemValueType ("Double", ElementType.R8)); }
+		}
+
+		public TypeReference IntPtr {
+			get { return type_intptr ?? (type_intptr = LookupSystemValueType ("IntPtr", ElementType.I)); }
+		}
+
+		public TypeReference UIntPtr {
+			get { return type_uintptr ?? (type_uintptr = LookupSystemValueType ("UIntPtr", ElementType.U)); }
+		}
+
+		public TypeReference String {
+			get { return type_string ?? (type_string = LookupSystemType ("String", ElementType.String)); }
+		}
+
+		public TypeReference TypedReference {
+			get { return type_typedref ?? (type_typedref = LookupSystemValueType ("TypedReference", ElementType.TypedByRef)); }
+		}
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/VariantType.cs b/mcs/class/Mono.Cecil/Mono.Cecil/VariantType.cs
index eeeff2a..86d6daa 100644
--- a/mcs/class/Mono.Cecil/Mono.Cecil/VariantType.cs
+++ b/mcs/class/Mono.Cecil/Mono.Cecil/VariantType.cs
@@ -4,7 +4,7 @@
 // Author:
 //   Jb Evain (jbevain at gmail.com)
 //
-// (C) 2005 Jb Evain
+// Copyright (c) 2008 - 2010 Jb Evain
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -29,24 +29,25 @@
 namespace Mono.Cecil {
 
 	public enum VariantType {
+		None = 0,
 		I2 = 2,
 		I4 = 3,
 		R4 = 4,
 		R8 = 5,
 		CY = 6,
-		DATE = 7,
-		BSTR = 8,
-		DISPATCH = 9,
-		ERROR = 10,
-		BOOL = 11,
-		VARIANT = 12,
-		UNKNOWN = 13,
-		DECIMAL = 14,
+		Date = 7,
+		BStr = 8,
+		Dispatch = 9,
+		Error = 10,
+		Bool = 11,
+		Variant = 12,
+		Unknown = 13,
+		Decimal = 14,
 		I1 = 16,
 		UI1 = 17,
 		UI2 = 18,
 		UI4 = 19,
-		INT = 22,
-		UINT = 23
+		Int = 22,
+		UInt = 23
 	}
 }
diff --git a/mcs/class/Mono.Cecil/Mono.Collections.Generic/Collection.cs b/mcs/class/Mono.Cecil/Mono.Collections.Generic/Collection.cs
new file mode 100644
index 0000000..1137978
--- /dev/null
+++ b/mcs/class/Mono.Cecil/Mono.Collections.Generic/Collection.cs
@@ -0,0 +1,417 @@
+//
+// Collection.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+
+namespace Mono.Collections.Generic {
+
+	public class Collection<T> : IList<T>, IList {
+
+		internal T [] items;
+		internal int size;
+		int version;
+
+		public int Count {
+			get { return size; }
+		}
+
+		public T this [int index] {
+			get {
+				if (index >= size)
+					throw new ArgumentOutOfRangeException ();
+
+				return items [index];
+			}
+			set {
+				CheckIndex (index);
+				if (index == size)
+					throw new ArgumentOutOfRangeException ();
+
+				OnSet (value, index);
+
+				items [index] = value;
+			}
+		}
+
+		bool ICollection<T>.IsReadOnly {
+			get { return false; }
+		}
+
+		bool IList.IsFixedSize {
+			get { return false; }
+		}
+
+		bool IList.IsReadOnly {
+			get { return false; }
+		}
+
+		object IList.this [int index] {
+			get { return this [index]; }
+			set {
+				CheckIndex (index);
+
+				try {
+					this [index] = (T) value;
+					return;
+				} catch (InvalidCastException) {
+				} catch (NullReferenceException) {
+				}
+
+				throw new ArgumentException ();
+			}
+		}
+
+		int ICollection.Count {
+			get { return Count; }
+		}
+
+		bool ICollection.IsSynchronized {
+			get { return false; }
+		}
+
+		object ICollection.SyncRoot {
+			get { return this; }
+		}
+
+		public Collection ()
+		{
+			items = Empty<T>.Array;
+		}
+
+		public Collection (int capacity)
+		{
+			if (capacity < 0)
+				throw new ArgumentOutOfRangeException ();
+
+			items = new T [capacity];
+		}
+
+		public Collection (ICollection<T> items)
+		{
+			this.items = new T [items.Count];
+			items.CopyTo (this.items, 0);
+			this.size = this.items.Length;
+		}
+
+		public void Add (T item)
+		{
+			if (size == items.Length)
+				Grow (1);
+
+			OnAdd (item, size);
+
+			items [size++] = item;
+			version++;
+		}
+
+		public bool Contains (T item)
+		{
+			return IndexOf (item) != -1;
+		}
+
+		public int IndexOf (T item)
+		{
+			return Array.IndexOf (items, item, 0, size);
+		}
+
+		public void Insert (int index, T item)
+		{
+			CheckIndex (index);
+			if (size == items.Length)
+				Grow (1);
+
+			OnInsert (item, index);
+
+			Shift (index, 1);
+			items [index] = item;
+			version++;
+		}
+
+		public void RemoveAt (int index)
+		{
+			if (index < 0 || index >= size)
+				throw new ArgumentOutOfRangeException ();
+
+			var item = items [index];
+
+			OnRemove (item, index);
+
+			Shift (index, -1);
+			Array.Clear (items, size, 1);
+			version++;
+		}
+
+		public bool Remove (T item)
+		{
+			var index = IndexOf (item);
+			if (index == -1)
+				return false;
+
+			OnRemove (item, index);
+
+			Shift (index, -1);
+			Array.Clear (items, size, 1);
+			version++;
+
+			return true;
+		}
+
+		public void Clear ()
+		{
+			OnClear ();
+
+			Array.Clear (items, 0, size);
+			size = 0;
+			version++;
+		}
+
+		public void CopyTo (T [] array, int arrayIndex)
+		{
+			Array.Copy (items, 0, array, arrayIndex, size);
+		}
+
+		public T [] ToArray ()
+		{
+			var array = new T [size];
+			Array.Copy (items, 0, array, 0, size);
+			return array;
+		}
+
+		void CheckIndex (int index)
+		{
+			if (index < 0 || index > size)
+				throw new ArgumentOutOfRangeException ();
+		}
+
+		void Shift (int start, int delta)
+		{
+			if (delta < 0)
+				start -= delta;
+
+			if (start < size)
+				Array.Copy (items, start, items, start + delta, size - start);
+
+			size += delta;
+
+			if (delta < 0)
+				Array.Clear (items, size, -delta);
+		}
+
+		protected virtual void OnAdd (T item, int index)
+		{
+		}
+
+		protected virtual void OnInsert (T item, int index)
+		{
+		}
+
+		protected virtual void OnSet (T item, int index)
+		{
+		}
+
+		protected virtual void OnRemove (T item, int index)
+		{
+		}
+
+		protected virtual void OnClear ()
+		{
+		}
+
+		internal virtual void Grow (int desired)
+		{
+			int new_size = size + desired;
+			if (new_size <= items.Length)
+				return;
+
+			const int default_capacity = 4;
+
+			new_size = System.Math.Max (
+				System.Math.Max (items.Length * 2, default_capacity),
+				new_size);
+
+#if !CF
+			Array.Resize (ref items, new_size);
+#else
+			var array = new T [new_size];
+			Array.Copy (items, array, size);
+			items = array;
+#endif
+		}
+
+		int IList.Add (object value)
+		{
+			try {
+				Add ((T) value);
+				return size - 1;
+			} catch (InvalidCastException) {
+			} catch (NullReferenceException) {
+			}
+
+			throw new ArgumentException ();
+		}
+
+		void IList.Clear ()
+		{
+			Clear ();
+		}
+
+		bool IList.Contains (object value)
+		{
+			return ((IList) this).IndexOf (value) > -1;
+		}
+
+		int IList.IndexOf (object value)
+		{
+			try {
+				return IndexOf ((T) value);
+			} catch (InvalidCastException) {
+			} catch (NullReferenceException) {
+			}
+
+			return -1;
+		}
+
+		void IList.Insert (int index, object value)
+		{
+			CheckIndex (index);
+
+			try {
+				Insert (index, (T) value);
+				return;
+			} catch (InvalidCastException) {
+			} catch (NullReferenceException) {
+			}
+
+			throw new ArgumentException ();
+		}
+
+		void IList.Remove (object value)
+		{
+			try {
+				Remove ((T) value);
+			} catch (InvalidCastException) {
+			} catch (NullReferenceException) {
+			}
+		}
+
+		void IList.RemoveAt (int index)
+		{
+			RemoveAt (index);
+		}
+
+		void ICollection.CopyTo (Array array, int index)
+		{
+			Array.Copy (items, 0, array, index, size);
+		}
+
+		public Enumerator GetEnumerator ()
+		{
+			return new Enumerator (this);
+		}
+
+		IEnumerator IEnumerable.GetEnumerator ()
+		{
+			return new Enumerator (this);
+		}
+
+		IEnumerator<T> IEnumerable<T>.GetEnumerator ()
+		{
+			return new Enumerator (this);
+		}
+
+		public struct Enumerator : IEnumerator<T>, IDisposable {
+
+			Collection<T> collection;
+			T current;
+
+			int next;
+			readonly int version;
+
+			public T Current {
+				get { return current; }
+			}
+
+			object IEnumerator.Current {
+				get {
+					CheckState ();
+
+					if (next <= 0)
+						throw new InvalidOperationException ();
+
+					return current;
+				}
+			}
+
+			internal Enumerator (Collection<T> collection)
+				: this ()
+			{
+				this.collection = collection;
+				this.version = collection.version;
+			}
+
+			public bool MoveNext ()
+			{
+				CheckState ();
+
+				if (next < 0)
+					return false;
+
+				if (next < collection.size) {
+					current = collection.items [next++];
+					return true;
+				}
+
+				next = -1;
+				return false;
+			}
+
+			public void Reset ()
+			{
+				CheckState ();
+
+				next = 0;
+			}
+
+			void CheckState ()
+			{
+				if (collection == null)
+					throw new ObjectDisposedException (GetType ().FullName);
+
+				if (version != collection.version)
+					throw new InvalidOperationException ();
+			}
+
+			public void Dispose ()
+			{
+				collection = null;
+			}
+		}
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Collections.Generic/ReadOnlyCollection.cs b/mcs/class/Mono.Cecil/Mono.Collections.Generic/ReadOnlyCollection.cs
new file mode 100644
index 0000000..35c9cd8
--- /dev/null
+++ b/mcs/class/Mono.Cecil/Mono.Collections.Generic/ReadOnlyCollection.cs
@@ -0,0 +1,98 @@
+//
+// ReadOnlyCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections;
+
+namespace Mono.Collections.Generic {
+
+	public sealed class ReadOnlyCollection<T> : Collection<T>, IList {
+
+		static ReadOnlyCollection<T> empty;
+
+		public static ReadOnlyCollection<T> Empty {
+			get { return empty ?? (empty = new ReadOnlyCollection<T> ()); }
+		}
+
+		bool IList.IsReadOnly {
+			get { return true; }
+		}
+
+		private ReadOnlyCollection ()
+		{
+		}
+
+		public ReadOnlyCollection (T [] array)
+		{
+			if (array == null)
+				throw new ArgumentNullException ();
+
+			this.items = array;
+			this.size = array.Length;
+		}
+
+		public ReadOnlyCollection (Collection<T> collection)
+		{
+			if (collection == null)
+				throw new ArgumentNullException ();
+
+			this.items = collection.items;
+			this.size = collection.size;
+		}
+
+		internal override void Grow (int desired)
+		{
+			throw new InvalidOperationException ();
+		}
+
+		protected override void OnAdd (T item, int index)
+		{
+			throw new InvalidOperationException ();
+		}
+
+		protected override void OnClear ()
+		{
+			throw new InvalidOperationException ();
+		}
+
+		protected override void OnInsert (T item, int index)
+		{
+			throw new InvalidOperationException ();
+		}
+
+		protected override void OnRemove (T item, int index)
+		{
+			throw new InvalidOperationException ();
+		}
+
+		protected override void OnSet (T item, int index)
+		{
+			throw new InvalidOperationException ();
+		}
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Security.Cryptography/CryptoConvert.cs b/mcs/class/Mono.Cecil/Mono.Security.Cryptography/CryptoConvert.cs
new file mode 100644
index 0000000..26a4ba2
--- /dev/null
+++ b/mcs/class/Mono.Cecil/Mono.Security.Cryptography/CryptoConvert.cs
@@ -0,0 +1,243 @@
+//
+// CryptoConvert.cs - Crypto Convertion Routines
+//
+// Author:
+//	Sebastien Pouliot  <sebastien at ximian.com>
+//
+// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
+// Copyright (C) 2004-2006 Novell Inc. (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Security.Cryptography;
+
+#if !(SILVERLIGHT || READ_ONLY)
+
+namespace Mono.Security.Cryptography {
+
+	static class CryptoConvert {
+
+		static private int ToInt32LE (byte [] bytes, int offset)
+		{
+			return (bytes [offset+3] << 24) | (bytes [offset+2] << 16) | (bytes [offset+1] << 8) | bytes [offset];
+		}
+
+		static private uint ToUInt32LE (byte [] bytes, int offset)
+		{
+			return (uint)((bytes [offset+3] << 24) | (bytes [offset+2] << 16) | (bytes [offset+1] << 8) | bytes [offset]);
+		}
+
+		static private byte[] Trim (byte[] array)
+		{
+			for (int i=0; i < array.Length; i++) {
+				if (array [i] != 0x00) {
+					byte[] result = new byte [array.Length - i];
+					Buffer.BlockCopy (array, i, result, 0, result.Length);
+					return result;
+				}
+			}
+			return null;
+		}
+
+		static RSA FromCapiPrivateKeyBlob (byte[] blob, int offset)
+		{
+			RSAParameters rsap = new RSAParameters ();
+			try {
+				if ((blob [offset]   != 0x07) ||				// PRIVATEKEYBLOB (0x07)
+				    (blob [offset+1] != 0x02) ||				// Version (0x02)
+				    (blob [offset+2] != 0x00) ||				// Reserved (word)
+				    (blob [offset+3] != 0x00) ||
+				    (ToUInt32LE (blob, offset+8) != 0x32415352))	// DWORD magic = RSA2
+					throw new CryptographicException ("Invalid blob header");
+
+				// ALGID (CALG_RSA_SIGN, CALG_RSA_KEYX, ...)
+				// int algId = ToInt32LE (blob, offset+4);
+
+				// DWORD bitlen
+				int bitLen = ToInt32LE (blob, offset+12);
+
+				// DWORD public exponent
+				byte[] exp = new byte [4];
+				Buffer.BlockCopy (blob, offset+16, exp, 0, 4);
+				Array.Reverse (exp);
+				rsap.Exponent = Trim (exp);
+
+				int pos = offset+20;
+				// BYTE modulus[rsapubkey.bitlen/8];
+				int byteLen = (bitLen >> 3);
+				rsap.Modulus = new byte [byteLen];
+				Buffer.BlockCopy (blob, pos, rsap.Modulus, 0, byteLen);
+				Array.Reverse (rsap.Modulus);
+				pos += byteLen;
+
+				// BYTE prime1[rsapubkey.bitlen/16];
+				int byteHalfLen = (byteLen >> 1);
+				rsap.P = new byte [byteHalfLen];
+				Buffer.BlockCopy (blob, pos, rsap.P, 0, byteHalfLen);
+				Array.Reverse (rsap.P);
+				pos += byteHalfLen;
+
+				// BYTE prime2[rsapubkey.bitlen/16];
+				rsap.Q = new byte [byteHalfLen];
+				Buffer.BlockCopy (blob, pos, rsap.Q, 0, byteHalfLen);
+				Array.Reverse (rsap.Q);
+				pos += byteHalfLen;
+
+				// BYTE exponent1[rsapubkey.bitlen/16];
+				rsap.DP = new byte [byteHalfLen];
+				Buffer.BlockCopy (blob, pos, rsap.DP, 0, byteHalfLen);
+				Array.Reverse (rsap.DP);
+				pos += byteHalfLen;
+
+				// BYTE exponent2[rsapubkey.bitlen/16];
+				rsap.DQ = new byte [byteHalfLen];
+				Buffer.BlockCopy (blob, pos, rsap.DQ, 0, byteHalfLen);
+				Array.Reverse (rsap.DQ);
+				pos += byteHalfLen;
+
+				// BYTE coefficient[rsapubkey.bitlen/16];
+				rsap.InverseQ = new byte [byteHalfLen];
+				Buffer.BlockCopy (blob, pos, rsap.InverseQ, 0, byteHalfLen);
+				Array.Reverse (rsap.InverseQ);
+				pos += byteHalfLen;
+
+				// ok, this is hackish but CryptoAPI support it so...
+				// note: only works because CRT is used by default
+				// http://bugzilla.ximian.com/show_bug.cgi?id=57941
+				rsap.D = new byte [byteLen]; // must be allocated
+				if (pos + byteLen + offset <= blob.Length) {
+					// BYTE privateExponent[rsapubkey.bitlen/8];
+					Buffer.BlockCopy (blob, pos, rsap.D, 0, byteLen);
+					Array.Reverse (rsap.D);
+				}
+			}
+			catch (Exception e) {
+				throw new CryptographicException ("Invalid blob.", e);
+			}
+
+			RSA rsa = null;
+			try {
+				rsa = RSA.Create ();
+				rsa.ImportParameters (rsap);
+			}
+			catch (CryptographicException ce) {
+				// this may cause problem when this code is run under
+				// the SYSTEM identity on Windows (e.g. ASP.NET). See
+				// http://bugzilla.ximian.com/show_bug.cgi?id=77559
+				try {
+					CspParameters csp = new CspParameters ();
+					csp.Flags = CspProviderFlags.UseMachineKeyStore;
+					rsa = new RSACryptoServiceProvider (csp);
+					rsa.ImportParameters (rsap);
+				}
+				catch {
+					// rethrow original, not the later, exception if this fails
+					throw ce;
+				}
+			}
+			return rsa;
+		}
+
+		static RSA FromCapiPublicKeyBlob (byte[] blob, int offset)
+		{
+			try {
+				if ((blob [offset]   != 0x06) ||				// PUBLICKEYBLOB (0x06)
+				    (blob [offset+1] != 0x02) ||				// Version (0x02)
+				    (blob [offset+2] != 0x00) ||				// Reserved (word)
+				    (blob [offset+3] != 0x00) ||
+				    (ToUInt32LE (blob, offset+8) != 0x31415352))	// DWORD magic = RSA1
+					throw new CryptographicException ("Invalid blob header");
+
+				// ALGID (CALG_RSA_SIGN, CALG_RSA_KEYX, ...)
+				// int algId = ToInt32LE (blob, offset+4);
+
+				// DWORD bitlen
+				int bitLen = ToInt32LE (blob, offset+12);
+
+				// DWORD public exponent
+				RSAParameters rsap = new RSAParameters ();
+				rsap.Exponent = new byte [3];
+				rsap.Exponent [0] = blob [offset+18];
+				rsap.Exponent [1] = blob [offset+17];
+				rsap.Exponent [2] = blob [offset+16];
+
+				int pos = offset+20;
+				// BYTE modulus[rsapubkey.bitlen/8];
+				int byteLen = (bitLen >> 3);
+				rsap.Modulus = new byte [byteLen];
+				Buffer.BlockCopy (blob, pos, rsap.Modulus, 0, byteLen);
+				Array.Reverse (rsap.Modulus);
+
+				RSA rsa = null;
+				try {
+					rsa = RSA.Create ();
+					rsa.ImportParameters (rsap);
+				}
+				catch (CryptographicException) {
+					// this may cause problem when this code is run under
+					// the SYSTEM identity on Windows (e.g. ASP.NET). See
+					// http://bugzilla.ximian.com/show_bug.cgi?id=77559
+					CspParameters csp = new CspParameters ();
+					csp.Flags = CspProviderFlags.UseMachineKeyStore;
+					rsa = new RSACryptoServiceProvider (csp);
+					rsa.ImportParameters (rsap);
+				}
+				return rsa;
+			}
+			catch (Exception e) {
+				throw new CryptographicException ("Invalid blob.", e);
+			}
+		}
+
+		// PRIVATEKEYBLOB
+		// PUBLICKEYBLOB
+		static public RSA FromCapiKeyBlob (byte[] blob)
+		{
+			return FromCapiKeyBlob (blob, 0);
+		}
+
+		static public RSA FromCapiKeyBlob (byte[] blob, int offset)
+		{
+			if (blob == null)
+				throw new ArgumentNullException ("blob");
+			if (offset >= blob.Length)
+				throw new ArgumentException ("blob is too small.");
+
+			switch (blob [offset]) {
+				case 0x00:
+					// this could be a public key inside an header
+					// like "sn -e" would produce
+					if (blob [offset + 12] == 0x06) {
+						return FromCapiPublicKeyBlob (blob, offset + 12);
+					}
+					break;
+				case 0x06:
+					return FromCapiPublicKeyBlob (blob, offset);
+				case 0x07:
+					return FromCapiPrivateKeyBlob (blob, offset);
+			}
+			throw new CryptographicException ("Unknown blob format.");
+		}
+	}
+}
+
+#endif
diff --git a/mcs/class/Mono.Cecil/Mono.Security.Cryptography/CryptoService.cs b/mcs/class/Mono.Cecil/Mono.Security.Cryptography/CryptoService.cs
new file mode 100644
index 0000000..f504f5e
--- /dev/null
+++ b/mcs/class/Mono.Cecil/Mono.Security.Cryptography/CryptoService.cs
@@ -0,0 +1,177 @@
+//
+// CryptoService.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.IO;
+using System.Reflection;
+using System.Security.Cryptography;
+
+#if !READ_ONLY
+
+#if !SILVERLIGHT && !CF
+using System.Runtime.Serialization;
+using Mono.Security.Cryptography;
+#endif
+
+using Mono.Cecil.PE;
+
+namespace Mono.Cecil {
+
+	// Most of this code has been adapted
+	// from Jeroen Frijters' fantastic work
+	// in IKVM.Reflection.Emit. Thanks!
+
+	static class CryptoService {
+
+#if !SILVERLIGHT && !CF
+		public static void StrongName (Stream stream, ImageWriter writer, StrongNameKeyPair key_pair)
+		{
+			int strong_name_pointer;
+
+			var strong_name = CreateStrongName (key_pair, HashStream (stream, writer, out strong_name_pointer));
+			PatchStrongName (stream, strong_name_pointer, strong_name);
+		}
+
+		static void PatchStrongName (Stream stream, int strong_name_pointer, byte [] strong_name)
+		{
+			stream.Seek (strong_name_pointer, SeekOrigin.Begin);
+			stream.Write (strong_name, 0, strong_name.Length);
+		}
+
+		static byte [] CreateStrongName (StrongNameKeyPair key_pair, byte [] hash)
+		{
+			const string hash_algo = "SHA1";
+
+			using (var rsa = key_pair.CreateRSA ()) {
+				var formatter = new RSAPKCS1SignatureFormatter (rsa);
+				formatter.SetHashAlgorithm (hash_algo);
+
+				byte [] signature = formatter.CreateSignature (hash);
+				Array.Reverse (signature);
+
+				return signature;
+			}
+		}
+
+		static byte [] HashStream (Stream stream, ImageWriter writer, out int strong_name_pointer)
+		{
+			const int buffer_size = 8192;
+
+			var text = writer.text;
+			var header_size = (int) writer.GetHeaderSize ();
+			var text_section_pointer = (int) text.PointerToRawData;
+			var strong_name_directory = writer.GetStrongNameSignatureDirectory ();
+
+			if (strong_name_directory.Size == 0)
+				throw new InvalidOperationException ();
+
+			strong_name_pointer = (int) (text_section_pointer
+				+ (strong_name_directory.VirtualAddress - text.VirtualAddress));
+			var strong_name_length = (int) strong_name_directory.Size;
+
+			var sha1 = new SHA1Managed ();
+			var buffer = new byte [buffer_size];
+			using (var crypto_stream = new CryptoStream (Stream.Null, sha1, CryptoStreamMode.Write)) {
+
+				stream.Seek (0, SeekOrigin.Begin);
+				CopyStreamChunk (stream, crypto_stream, buffer, header_size);
+
+				stream.Seek (text_section_pointer, SeekOrigin.Begin);
+				CopyStreamChunk (stream, crypto_stream, buffer, (int) strong_name_pointer - text_section_pointer);
+
+				stream.Seek (strong_name_length, SeekOrigin.Current);
+				CopyStreamChunk (stream, crypto_stream, buffer, (int) (stream.Length - (strong_name_pointer + strong_name_length)));
+			}
+
+			return sha1.Hash;
+		}
+#endif
+		static void CopyStreamChunk (Stream stream, Stream dest_stream, byte [] buffer, int length)
+		{
+			while (length > 0) {
+				int read = stream.Read (buffer, 0, System.Math.Min (buffer.Length, length));
+				dest_stream.Write (buffer, 0, read);
+				length -= read;
+			}
+		}
+
+		public static byte [] ComputeHash (string file)
+		{
+			if (!File.Exists (file))
+				return Empty<byte>.Array;
+
+			const int buffer_size = 8192;
+
+			var sha1 = new SHA1Managed ();
+
+			using (var stream = new FileStream (file, FileMode.Open, FileAccess.Read, FileShare.Read)) {
+
+				var buffer = new byte [buffer_size];
+
+				using (var crypto_stream = new CryptoStream (Stream.Null, sha1, CryptoStreamMode.Write))
+					CopyStreamChunk (stream, crypto_stream, buffer, (int) stream.Length);
+			}
+
+			return sha1.Hash;
+		}
+	}
+
+#if !SILVERLIGHT && !CF
+	static partial class Mixin {
+
+		public static RSA CreateRSA (this StrongNameKeyPair key_pair)
+		{
+			byte [] key;
+			string key_container;
+
+			if (!TryGetKeyContainer (key_pair, out key, out key_container))
+				return CryptoConvert.FromCapiKeyBlob (key);
+
+			var parameters = new CspParameters {
+				Flags = CspProviderFlags.UseMachineKeyStore,
+				KeyContainerName = key_container,
+				KeyNumber = 2,
+			};
+
+			return new RSACryptoServiceProvider (parameters);
+		}
+
+		static bool TryGetKeyContainer (ISerializable key_pair, out byte [] key, out string key_container)
+		{
+			var info = new SerializationInfo (typeof (StrongNameKeyPair), new FormatterConverter ());
+			key_pair.GetObjectData (info, new StreamingContext ());
+
+			key = (byte []) info.GetValue ("_keyPairArray", typeof (byte []));
+			key_container = info.GetString ("_keyPairContainer");
+			return key_container != null;
+		}
+	}
+#endif
+}
+
+#endif
diff --git a/mcs/class/Mono.Cecil/Mono.Xml/SmallXmlParser.cs b/mcs/class/Mono.Cecil/Mono.Xml/SmallXmlParser.cs
deleted file mode 100644
index 1766708..0000000
--- a/mcs/class/Mono.Cecil/Mono.Xml/SmallXmlParser.cs
+++ /dev/null
@@ -1,637 +0,0 @@
-//
-// SmallXmlParser.cs
-//
-// Author:
-//	Atsushi Enomoto  <atsushi at ximian.com>
-//
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-//
-// small xml parser that is mostly compatible with
-//
-
-using System;
-using System.Collections;
-using System.Globalization;
-using System.IO;
-using System.Text;
-
-namespace Mono.Xml
-{
-	internal sealed class DefaultHandler : SmallXmlParser.IContentHandler
-	{
-		public void OnStartParsing (SmallXmlParser parser)
-		{
-		}
-
-		public void OnEndParsing (SmallXmlParser parser)
-		{
-		}
-
-		public void OnStartElement (string name, SmallXmlParser.IAttrList attrs)
-		{
-		}
-
-		public void OnEndElement (string name)
-		{
-		}
-
-		public void OnChars (string s)
-		{
-		}
-
-		public void OnIgnorableWhitespace (string s)
-		{
-		}
-
-		public void OnProcessingInstruction (string name, string text)
-		{
-		}
-	}
-
-	internal class SmallXmlParser
-	{
-		public interface IContentHandler
-		{
-			void OnStartParsing (SmallXmlParser parser);
-			void OnEndParsing (SmallXmlParser parser);
-			void OnStartElement (string name, IAttrList attrs);
-			void OnEndElement (string name);
-			void OnProcessingInstruction (string name, string text);
-			void OnChars (string text);
-			void OnIgnorableWhitespace (string text);
-		}
-
-		public interface IAttrList
-		{
-			int Length { get; }
-			bool IsEmpty { get; }
-			string GetName (int i);
-			string GetValue (int i);
-			string GetValue (string name);
-			string [] Names { get; }
-			string [] Values { get; }
-		}
-
-		sealed class AttrListImpl : IAttrList
-		{
-			public int Length {
-				get { return attrNames.Count; }
-			}
-			public bool IsEmpty {
-				get { return attrNames.Count == 0; }
-			}
-			public string GetName (int i)
-			{
-				return (string) attrNames [i];
-			}
-			public string GetValue (int i)
-			{
-				return (string) attrValues [i];
-			}
-			public string GetValue (string name)
-			{
-				for (int i = 0; i < attrNames.Count; i++)
-					if ((string) attrNames [i] == name)
-						return (string) attrValues [i];
-				return null;
-			}
-			public string [] Names {
-				get { return (string []) attrNames.ToArray (typeof (string)); }
-			}
-			public string [] Values {
-				get { return (string []) attrValues.ToArray (typeof (string)); }
-			}
-
-			ArrayList attrNames = new ArrayList ();
-			ArrayList attrValues = new ArrayList ();
-
-			internal void Clear ()
-			{
-				attrNames.Clear ();
-				attrValues.Clear ();
-			}
-
-			internal void Add (string name, string value)
-			{
-				attrNames.Add (name);
-				attrValues.Add (value);
-			}
-		}
-
-		IContentHandler handler;
-		TextReader reader;
-		Stack elementNames = new Stack ();
-		Stack xmlSpaces = new Stack ();
-		string xmlSpace;
-		StringBuilder buffer = new StringBuilder (200);
-		char [] nameBuffer = new char [30];
-		bool isWhitespace;
-
-		AttrListImpl attributes = new AttrListImpl ();
-		int line = 1, column;
-		bool resetColumn;
-
-		public SmallXmlParser ()
-		{
-		}
-
-		private Exception Error (string msg)
-		{
-			return new SmallXmlParserException (msg, line, column);
-		}
-
-		private Exception UnexpectedEndError ()
-		{
-			string [] arr = new string [elementNames.Count];
-			// COMPACT FRAMEWORK NOTE: CopyTo is not visible through the Stack class
-			(elementNames as ICollection).CopyTo (arr, 0);
-			return Error (String.Format (
-							  "Unexpected end of stream. Element stack content is {0}", String.Join (",", arr)));
-		}
-
-
-		private bool IsNameChar (char c, bool start)
-		{
-			switch (c) {
-			case ':':
-			case '_':
-				return true;
-			case '-':
-			case '.':
-				return !start;
-			}
-			if (c > 0x100) { // optional condition for optimization
-				switch (c) {
-				case '\u0559':
-				case '\u06E5':
-				case '\u06E6':
-					return true;
-				}
-				if ('\u02BB' <= c && c <= '\u02C1')
-					return true;
-			}
-			switch (Char.GetUnicodeCategory (c)) {
-			case UnicodeCategory.LowercaseLetter:
-			case UnicodeCategory.UppercaseLetter:
-			case UnicodeCategory.OtherLetter:
-			case UnicodeCategory.TitlecaseLetter:
-			case UnicodeCategory.LetterNumber:
-				return true;
-			case UnicodeCategory.SpacingCombiningMark:
-			case UnicodeCategory.EnclosingMark:
-			case UnicodeCategory.NonSpacingMark:
-			case UnicodeCategory.ModifierLetter:
-			case UnicodeCategory.DecimalDigitNumber:
-				return !start;
-			default:
-				return false;
-			}
-		}
-
-		private bool IsWhitespace (int c)
-		{
-			switch (c) {
-			case ' ':
-			case '\r':
-			case '\t':
-			case '\n':
-				return true;
-			default:
-				return false;
-			}
-		}
-
-
-		public void SkipWhitespaces ()
-		{
-			SkipWhitespaces (false);
-		}
-
-		private void HandleWhitespaces ()
-		{
-			while (IsWhitespace (Peek ()))
-				buffer.Append ((char) Read ());
-			if (Peek () != '<' && Peek () >= 0)
-				isWhitespace = false;
-		}
-
-		public void SkipWhitespaces (bool expected)
-		{
-			while (true) {
-				switch (Peek ()) {
-				case ' ':
-				case '\r':
-				case '\t':
-				case '\n':
-					Read ();
-					if (expected)
-						expected = false;
-					continue;
-				}
-				if (expected)
-					throw Error ("Whitespace is expected.");
-				return;
-			}
-		}
-
-
-		private int Peek ()
-		{
-			return reader.Peek ();
-		}
-
-		private int Read ()
-		{
-			int i = reader.Read ();
-			if (i == '\n')
-				resetColumn = true;
-			if (resetColumn) {
-				line++;
-				resetColumn = false;
-				column = 1;
-			}
-			else
-				column++;
-			return i;
-		}
-
-		public void Expect (int c)
-		{
-			int p = Read ();
-			if (p < 0)
-				throw UnexpectedEndError ();
-			else if (p != c)
-				throw Error (String.Format ("Expected '{0}' but got {1}", (char) c, (char) p));
-		}
-
-		private string ReadUntil (char until, bool handleReferences)
-		{
-			while (true) {
-				if (Peek () < 0)
-					throw UnexpectedEndError ();
-				char c = (char) Read ();
-				if (c == until)
-					break;
-				else if (handleReferences && c == '&')
-					ReadReference ();
-				else
-					buffer.Append (c);
-			}
-			string ret = buffer.ToString ();
-			buffer.Length = 0;
-			return ret;
-		}
-
-		public string ReadName ()
-		{
-			int idx = 0;
-			if (Peek () < 0 || !IsNameChar ((char) Peek (), true))
-				throw Error ("XML name start character is expected.");
-			for (int i = Peek (); i >= 0; i = Peek ()) {
-				char c = (char) i;
-				if (!IsNameChar (c, false))
-					break;
-				if (idx == nameBuffer.Length) {
-					char [] tmp = new char [idx * 2];
-					// COMPACT FRAMEWORK NOTE: Array.Copy(sourceArray, destinationArray, count) is not available.
-					Array.Copy (nameBuffer, 0, tmp, 0, idx);
-					nameBuffer = tmp;
-				}
-				nameBuffer [idx++] = c;
-				Read ();
-			}
-			if (idx == 0)
-				throw Error ("Valid XML name is expected.");
-			return new string (nameBuffer, 0, idx);
-		}
-
-
-		public void Parse (TextReader input, IContentHandler handler)
-		{
-			this.reader = input;
-			this.handler = handler;
-
-			handler.OnStartParsing (this);
-
-			while (Peek () >= 0)
-				ReadContent ();
-			HandleBufferedContent ();
-			if (elementNames.Count > 0)
-				throw Error (String.Format ("Insufficient close tag: {0}", elementNames.Peek ()));
-
-			handler.OnEndParsing (this);
-
-			Cleanup ();
-		}
-
-		private void Cleanup ()
-		{
-			line = 1;
-			column = 0;
-			handler = null;
-			reader = null;
-#if CF_1_0
-			elementNames = new Stack ();
-			xmlSpaces = new Stack ();
-#else
-			elementNames.Clear ();
-			xmlSpaces.Clear ();
-#endif
-			attributes.Clear ();
-			buffer.Length = 0;
-			xmlSpace = null;
-			isWhitespace = false;
-		}
-
-		public void ReadContent ()
-		{
-			string name;
-			if (IsWhitespace (Peek ())) {
-				if (buffer.Length == 0)
-					isWhitespace = true;
-				HandleWhitespaces ();
-			}
-			if (Peek () == '<') {
-				Read ();
-				switch (Peek ()) {
-				case '!': // declarations
-					Read ();
-					if (Peek () == '[') {
-						Read ();
-						if (ReadName () != "CDATA")
-							throw Error ("Invalid declaration markup");
-						Expect ('[');
-						ReadCDATASection ();
-						return;
-					}
-					else if (Peek () == '-') {
-						ReadComment ();
-						return;
-					}
-					else if (ReadName () != "DOCTYPE")
-						throw Error ("Invalid declaration markup.");
-					else
-						throw Error ("This parser does not support document type.");
-				case '?': // PIs
-					HandleBufferedContent ();
-					Read ();
-					name = ReadName ();
-					SkipWhitespaces ();
-					string text = String.Empty;
-					if (Peek () != '?') {
-						while (true) {
-							text += ReadUntil ('?', false);
-							if (Peek () == '>')
-								break;
-							text += "?";
-						}
-					}
-					handler.OnProcessingInstruction (
-						name, text);
-					Expect ('>');
-					return;
-				case '/': // end tags
-					HandleBufferedContent ();
-					if (elementNames.Count == 0)
-						throw UnexpectedEndError ();
-					Read ();
-					name = ReadName ();
-					SkipWhitespaces ();
-					string expected = (string) elementNames.Pop ();
-					xmlSpaces.Pop ();
-					if (xmlSpaces.Count > 0)
-						xmlSpace = (string) xmlSpaces.Peek ();
-					else
-						xmlSpace = null;
-					if (name != expected)
-						throw Error (String.Format ("End tag mismatch: expected {0} but found {1}", expected, name));
-					handler.OnEndElement (name);
-					Expect ('>');
-					return;
-				default: // start tags (including empty tags)
-					HandleBufferedContent ();
-					name = ReadName ();
-					while (Peek () != '>' && Peek () != '/')
-						ReadAttribute (attributes);
-					handler.OnStartElement (name, attributes);
-					attributes.Clear ();
-					SkipWhitespaces ();
-					if (Peek () == '/') {
-						Read ();
-						handler.OnEndElement (name);
-					}
-					else {
-						elementNames.Push (name);
-						xmlSpaces.Push (xmlSpace);
-					}
-					Expect ('>');
-					return;
-				}
-			}
-			else
-				ReadCharacters ();
-		}
-
-		private void HandleBufferedContent ()
-		{
-			if (buffer.Length == 0)
-				return;
-			if (isWhitespace)
-				handler.OnIgnorableWhitespace (buffer.ToString ());
-			else
-				handler.OnChars (buffer.ToString ());
-			buffer.Length = 0;
-			isWhitespace = false;
-		}
-
-		private void ReadCharacters ()
-		{
-			isWhitespace = false;
-			while (true) {
-				int i = Peek ();
-				switch (i) {
-				case -1:
-					return;
-				case '<':
-					return;
-				case '&':
-					Read ();
-					ReadReference ();
-					continue;
-				default:
-					buffer.Append ((char) Read ());
-					continue;
-				}
-			}
-		}
-
-		private void ReadReference ()
-		{
-			if (Peek () == '#') {
-				// character reference
-				Read ();
-				ReadCharacterReference ();
-			} else {
-				string name = ReadName ();
-				Expect (';');
-				switch (name) {
-				case "amp":
-					buffer.Append ('&');
-					break;
-				case "quot":
-					buffer.Append ('"');
-					break;
-				case "apos":
-					buffer.Append ('\'');
-					break;
-				case "lt":
-					buffer.Append ('<');
-					break;
-				case "gt":
-					buffer.Append ('>');
-					break;
-				default:
-					throw Error ("General non-predefined entity reference is not supported in this parser.");
-				}
-			}
-		}
-
-		private int ReadCharacterReference ()
-		{
-			int n = 0;
-			if (Peek () == 'x') { // hex
-				Read ();
-				for (int i = Peek (); i >= 0; i = Peek ()) {
-					if ('0' <= i && i <= '9')
-						n = n << 4 + i - '0';
-					else if ('A' <= i && i <='F')
-						n = n << 4 + i - 'A' + 10;
-					else if ('a' <= i && i <='f')
-						n = n << 4 + i - 'a' + 10;
-					else
-						break;
-					Read ();
-				}
-			} else {
-				for (int i = Peek (); i >= 0; i = Peek ()) {
-					if ('0' <= i && i <= '9')
-						n = n << 4 + i - '0';
-					else
-						break;
-					Read ();
-				}
-			}
-			return n;
-		}
-
-		private void ReadAttribute (AttrListImpl a)
-		{
-			SkipWhitespaces (true);
-			if (Peek () == '/' || Peek () == '>')
-			// came here just to spend trailing whitespaces
-				return;
-
-			string name = ReadName ();
-			string value;
-			SkipWhitespaces ();
-			Expect ('=');
-			SkipWhitespaces ();
-			switch (Read ()) {
-			case '\'':
-				value = ReadUntil ('\'', true);
-				break;
-			case '"':
-				value = ReadUntil ('"', true);
-				break;
-			default:
-				throw Error ("Invalid attribute value markup.");
-			}
-			if (name == "xml:space")
-				xmlSpace = value;
-			a.Add (name, value);
-		}
-
-		private void ReadCDATASection ()
-		{
-			int nBracket = 0;
-			while (true) {
-				if (Peek () < 0)
-					throw UnexpectedEndError ();
-				char c = (char) Read ();
-				if (c == ']')
-					nBracket++;
-				else if (c == '>' && nBracket > 1) {
-					for (int i = nBracket; i > 2; i--)
-						buffer.Append (']');
-					break;
-				}
-				else {
-					for (int i = 0; i < nBracket; i++)
-						buffer.Append (']');
-					nBracket = 0;
-					buffer.Append (c);
-				}
-			}
-		}
-
-		private void ReadComment ()
-		{
-			Expect ('-');
-			Expect ('-');
-			while (true) {
-				if (Read () != '-')
-					continue;
-				if (Read () != '-')
-					continue;
-				if (Read () != '>')
-					throw Error ("'--' is not allowed inside comment markup.");
-				break;
-			}
-		}
-	}
-
-	internal sealed class SmallXmlParserException : SystemException
-	{
-		int line;
-		int column;
-
-		public SmallXmlParserException (string msg, int line, int column)
-		: base (String.Format ("{0}. At ({1},{2})", msg, line, column))
-		{
-			this.line = line;
-			this.column = column;
-		}
-
-		public int Line {
-			get { return line; }
-		}
-
-		public int Column {
-			get { return column; }
-		}
-	}
-}
-
-
-
diff --git a/mcs/class/Mono.Cecil/Mono/Actions.cs b/mcs/class/Mono.Cecil/Mono/Actions.cs
new file mode 100644
index 0000000..071b149
--- /dev/null
+++ b/mcs/class/Mono.Cecil/Mono/Actions.cs
@@ -0,0 +1,38 @@
+//
+// Actions.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if !NET_3_5 && !NET_4_0
+
+namespace Mono {
+	//delegate void Action ();
+	//delegate void Action<T1, T2> (T1 arg1, T2 arg2);
+	//delegate void Action<T1, T2, T3> (T1 arg1, T2 arg2, T3 arg3);
+	//delegate void Action<T1, T2, T3, T4> (T1 arg1, T2 arg2, T3 arg3, T4 arg4);
+}
+
+#endif
diff --git a/mcs/class/Mono.Cecil/Mono/Empty.cs b/mcs/class/Mono.Cecil/Mono/Empty.cs
new file mode 100644
index 0000000..70739af
--- /dev/null
+++ b/mcs/class/Mono.Cecil/Mono/Empty.cs
@@ -0,0 +1,55 @@
+//
+// Empty.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+
+namespace Mono {
+
+	static class Empty<T> {
+
+		public static readonly T [] Array = new T [0];
+	}
+}
+
+namespace Mono.Cecil {
+
+	static partial class Mixin {
+
+		public static bool IsNullOrEmpty<T> (this T [] self)
+		{
+			return self == null || self.Length == 0;
+		}
+
+		public static bool IsNullOrEmpty<T> (this ICollection<T> self)
+		{
+			return self == null || self.Count == 0;
+		}
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono/Funcs.cs b/mcs/class/Mono.Cecil/Mono/Funcs.cs
new file mode 100644
index 0000000..40f2225
--- /dev/null
+++ b/mcs/class/Mono.Cecil/Mono/Funcs.cs
@@ -0,0 +1,39 @@
+//
+// Funcs.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if !NET_3_5 && !NET_4_0
+
+namespace Mono {
+	delegate TResult Func<TResult> ();
+	delegate TResult Func<T, TResult> (T arg1);
+	delegate TResult Func<T1, T2, TResult> (T1 arg1, T2 arg2);
+	//delegate TResult Func<T1, T2, T3, TResult> (T1 arg1, T2 arg2, T3 arg3);
+	//delegate TResult Func<T1, T2, T3, T4, TResult> (T1 arg1, T2 arg2, T3 arg3, T4 arg4);
+}
+
+#endif
diff --git a/mcs/class/Mono.Cecil/System.Runtime.CompilerServices/ExtensionAttribute.cs b/mcs/class/Mono.Cecil/System.Runtime.CompilerServices/ExtensionAttribute.cs
new file mode 100644
index 0000000..ae79cda
--- /dev/null
+++ b/mcs/class/Mono.Cecil/System.Runtime.CompilerServices/ExtensionAttribute.cs
@@ -0,0 +1,40 @@
+//
+// ExtensionAttribute.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Copyright (c) 2008 - 2010 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+#if !NET_3_5 && !NET_4_0
+
+namespace System.Runtime.CompilerServices {
+
+	[AttributeUsage (AttributeTargets.Method | AttributeTargets.Class | AttributeTargets.Assembly)]
+	sealed class ExtensionAttribute : Attribute {
+	}
+}
+
+#endif
diff --git a/mcs/class/Mono.CodeContracts/Mono.CodeContracts.Rewrite.Ast/ExprCall.cs b/mcs/class/Mono.CodeContracts/Mono.CodeContracts.Rewrite.Ast/ExprCall.cs
index d36a878..0b97d87 100644
--- a/mcs/class/Mono.CodeContracts/Mono.CodeContracts.Rewrite.Ast/ExprCall.cs
+++ b/mcs/class/Mono.CodeContracts/Mono.CodeContracts.Rewrite.Ast/ExprCall.cs
@@ -50,7 +50,7 @@ namespace Mono.CodeContracts.Rewrite.Ast {
 		}
 
 		public override TypeReference ReturnType {
-			get { return this.Method.ReturnType.ReturnType; }
+			get { return this.Method.ReturnType; }
 		}
 
 	}
diff --git a/mcs/class/Mono.CodeContracts/Mono.CodeContracts.Rewrite.AstVisitors/CompileVisitor.cs b/mcs/class/Mono.CodeContracts/Mono.CodeContracts.Rewrite.AstVisitors/CompileVisitor.cs
index 130cfef..6533555 100644
--- a/mcs/class/Mono.CodeContracts/Mono.CodeContracts.Rewrite.AstVisitors/CompileVisitor.cs
+++ b/mcs/class/Mono.CodeContracts/Mono.CodeContracts.Rewrite.AstVisitors/CompileVisitor.cs
@@ -36,19 +36,19 @@ using Mono.CodeContracts.Rewrite.Ast;
 namespace Mono.CodeContracts.Rewrite.AstVisitors {
 	class CompileVisitor : ExprVisitor {
 
-		public CompileVisitor (CilWorker il, Dictionary<Expr, Instruction> instructionLookup)
+		public CompileVisitor (ILProcessor il, Dictionary<Expr, Instruction> instructionLookup)
 			: this (il, instructionLookup, il.Append)
 		{
 		}
 
-		public CompileVisitor (CilWorker il, Dictionary<Expr, Instruction> instructionLookup, Action<Instruction> fnEmit)
+		public CompileVisitor (ILProcessor il, Dictionary<Expr, Instruction> instructionLookup, Action<Instruction> fnEmit)
 		{
 			this.il = il;
 			this.instructionLookup = instructionLookup;
 			this.fnEmit = fnEmit;
 		}
 
-		private CilWorker il;
+		private ILProcessor il;
 		private Dictionary<Expr, Instruction> instructionLookup;
 		private Action<Instruction> fnEmit;
 
diff --git a/mcs/class/Mono.CodeContracts/Mono.CodeContracts.Rewrite/ContractsRuntime.cs b/mcs/class/Mono.CodeContracts/Mono.CodeContracts.Rewrite/ContractsRuntime.cs
index 984e8bf..914f704 100644
--- a/mcs/class/Mono.CodeContracts/Mono.CodeContracts.Rewrite/ContractsRuntime.cs
+++ b/mcs/class/Mono.CodeContracts/Mono.CodeContracts.Rewrite/ContractsRuntime.cs
@@ -106,13 +106,13 @@ namespace Mono.CodeContracts.Rewrite {
 				this.module.Types.Add(type);
 				// Create constructor
 				MethodDefinition cons = new MethodDefinition (".ctor",
-					MethodAttributes.Assem | MethodAttributes.SpecialName | MethodAttributes.RTSpecialName, typeVoid);
-				cons.Parameters.Add (new ParameterDefinition ("kind", 1, ParameterAttributes.None, typeContractFailureKind));
-				cons.Parameters.Add (new ParameterDefinition ("failure", 2, ParameterAttributes.None, typeString));
-				cons.Parameters.Add (new ParameterDefinition ("usermsg", 3, ParameterAttributes.None, typeString));
-				cons.Parameters.Add (new ParameterDefinition ("condition", 4, ParameterAttributes.None, typeString));
-				cons.Parameters.Add (new ParameterDefinition ("inner", 5, ParameterAttributes.None, typeException));
-				var il = cons.Body.CilWorker;
+					MethodAttributes.Assembly | MethodAttributes.SpecialName | MethodAttributes.RTSpecialName, typeVoid);
+				cons.Parameters.Add (new ParameterDefinition ("kind", ParameterAttributes.None, typeContractFailureKind));
+				cons.Parameters.Add (new ParameterDefinition ("failure", ParameterAttributes.None, typeString));
+				cons.Parameters.Add (new ParameterDefinition ("usermsg", ParameterAttributes.None, typeString));
+				cons.Parameters.Add (new ParameterDefinition ("condition", ParameterAttributes.None, typeString));
+				cons.Parameters.Add (new ParameterDefinition ("inner", ParameterAttributes.None, typeException));
+				var il = cons.Body.GetILProcessor ();
 				il.Emit (OpCodes.Ldarg_0);
 				il.Emit (OpCodes.Ldarg_2);
 				il.Emit (OpCodes.Ldarg_S, cons.Parameters [4]);
@@ -152,13 +152,13 @@ namespace Mono.CodeContracts.Rewrite {
 				TypeReference typeException = this.module.Import (typeof (Exception));
 				// Create method
 				MethodDefinition method = new MethodDefinition ("TriggerFailure",
-					MethodAttributes.Assem | MethodAttributes.Static, typeVoid);
-				method.Parameters.Add (new ParameterDefinition ("kind", 1, ParameterAttributes.None, typeContractFailureKind));
-				method.Parameters.Add (new ParameterDefinition ("message", 2, ParameterAttributes.None, typeString));
-				method.Parameters.Add (new ParameterDefinition ("userMessage", 3, ParameterAttributes.None, typeString));
-				method.Parameters.Add (new ParameterDefinition ("conditionText", 4, ParameterAttributes.None, typeString));
-				method.Parameters.Add (new ParameterDefinition ("inner", 5, ParameterAttributes.None, typeException));
-				var il = method.Body.CilWorker;
+					MethodAttributes.Assembly | MethodAttributes.Static, typeVoid);
+				method.Parameters.Add (new ParameterDefinition ("kind", ParameterAttributes.None, typeContractFailureKind));
+				method.Parameters.Add (new ParameterDefinition ("message", ParameterAttributes.None, typeString));
+				method.Parameters.Add (new ParameterDefinition ("userMessage", ParameterAttributes.None, typeString));
+				method.Parameters.Add (new ParameterDefinition ("conditionText", ParameterAttributes.None, typeString));
+				method.Parameters.Add (new ParameterDefinition ("inner", ParameterAttributes.None, typeException));
+				var il = method.Body.GetILProcessor ();
 				if (this.options.ThrowOnFailure) {
 					il.Emit (OpCodes.Ldarg_0);
 					il.Emit (OpCodes.Ldarg_1);
@@ -199,15 +199,15 @@ namespace Mono.CodeContracts.Rewrite {
 				MethodReference mRaiseContractFailedEvent = this.module.Import (typeof (ContractHelper).GetMethod ("RaiseContractFailedEvent"));
 				// Create method
 				MethodDefinition method = new MethodDefinition ("ReportFailure",
-					MethodAttributes.Assem | MethodAttributes.Static, typeVoid);
-				method.Parameters.Add (new ParameterDefinition ("kind", 1, ParameterAttributes.None, typeContractFailureKind));
-				method.Parameters.Add (new ParameterDefinition ("message", 2, ParameterAttributes.None, typeString));
-				method.Parameters.Add (new ParameterDefinition ("conditionText", 3, ParameterAttributes.None, typeString));
-				method.Parameters.Add (new ParameterDefinition ("inner", 4, ParameterAttributes.None, typeException));
-				VariableDefinition vMsg = new VariableDefinition ("sMsg", 0, method, typeString);
+					MethodAttributes.Assembly | MethodAttributes.Static, typeVoid);
+				method.Parameters.Add (new ParameterDefinition ("kind", ParameterAttributes.None, typeContractFailureKind));
+				method.Parameters.Add (new ParameterDefinition ("message", ParameterAttributes.None, typeString));
+				method.Parameters.Add (new ParameterDefinition ("conditionText", ParameterAttributes.None, typeString));
+				method.Parameters.Add (new ParameterDefinition ("inner", ParameterAttributes.None, typeException));
+				VariableDefinition vMsg = new VariableDefinition ("sMsg", typeString);
 				method.Body.Variables.Add (vMsg);
 				method.Body.InitLocals = true;
-				var il = method.Body.CilWorker;
+				var il = method.Body.GetILProcessor ();
 				il.Emit (OpCodes.Ldarg_0);
 				il.Emit (OpCodes.Ldarg_1);
 				il.Emit (OpCodes.Ldarg_2);
@@ -256,11 +256,11 @@ namespace Mono.CodeContracts.Rewrite {
 				TypeReference typeString = this.module.Import (typeof (string));
 				// Create method
 				MethodDefinition method = new MethodDefinition ("Requires",
-				    MethodAttributes.Assem | MethodAttributes.Static, typeVoid);
-				method.Parameters.Add (new ParameterDefinition ("condition", 1, ParameterAttributes.None, typeBoolean));
-				method.Parameters.Add (new ParameterDefinition ("message", 2, ParameterAttributes.None, typeString));
-				method.Parameters.Add (new ParameterDefinition ("conditionText", 3, ParameterAttributes.None, typeString));
-				var il = method.Body.CilWorker;
+				    MethodAttributes.Assembly | MethodAttributes.Static, typeVoid);
+				method.Parameters.Add (new ParameterDefinition ("condition", ParameterAttributes.None, typeBoolean));
+				method.Parameters.Add (new ParameterDefinition ("message", ParameterAttributes.None, typeString));
+				method.Parameters.Add (new ParameterDefinition ("conditionText", ParameterAttributes.None, typeString));
+				var il = method.Body.GetILProcessor ();
 				il.Emit (OpCodes.Ldarg_0);
 				var instRet = il.Create(OpCodes.Ret);
 				il.Emit (OpCodes.Brtrue_S, instRet);
diff --git a/mcs/class/Mono.CodeContracts/Mono.CodeContracts.Rewrite/ExprGen.cs b/mcs/class/Mono.CodeContracts/Mono.CodeContracts.Rewrite/ExprGen.cs
index e4399d6..5fba3c0 100644
--- a/mcs/class/Mono.CodeContracts/Mono.CodeContracts.Rewrite/ExprGen.cs
+++ b/mcs/class/Mono.CodeContracts/Mono.CodeContracts.Rewrite/ExprGen.cs
@@ -70,7 +70,7 @@ namespace Mono.CodeContracts.Rewrite {
 
 		public ExprLoadArg LoadArg (ParameterDefinition parameterDefinition)
 		{
-			return this.LoadArg (parameterDefinition.Sequence);
+			return this.LoadArg (parameterDefinition.Index + 1);
 		}
 
 		public ExprLoadConstant LoadConstant (object value)
diff --git a/mcs/class/Mono.CodeContracts/Mono.CodeContracts.Rewrite/PerformRewrite.cs b/mcs/class/Mono.CodeContracts/Mono.CodeContracts.Rewrite/PerformRewrite.cs
index dcba332..f739db4 100644
--- a/mcs/class/Mono.CodeContracts/Mono.CodeContracts.Rewrite/PerformRewrite.cs
+++ b/mcs/class/Mono.CodeContracts/Mono.CodeContracts.Rewrite/PerformRewrite.cs
@@ -38,13 +38,11 @@ using Mono.CodeContracts.Rewrite.AstVisitors;
 namespace Mono.CodeContracts.Rewrite {
 	class PerformRewrite {
 
-		public PerformRewrite (ISymbolWriter sym, RewriterOptions options)
+		public PerformRewrite (RewriterOptions options)
 		{
-			this.sym = sym;
 			this.options = options;
 		}
 
-		private ISymbolWriter sym;
 		private RewriterOptions options;
 		private Dictionary<MethodDefinition, TransformContractsVisitor> rewrittenMethods = new Dictionary<MethodDefinition, TransformContractsVisitor> ();
 
@@ -54,8 +52,8 @@ namespace Mono.CodeContracts.Rewrite {
 				ContractsRuntime contractsRuntime = new ContractsRuntime(module, this.options);
 
 				var allMethods =
-					from type in module.Types.Cast<TypeDefinition> ()
-					from method in type.Methods.Cast<MethodDefinition> ()
+					from type in module.Types
+					from method in type.Methods
 					select method;
 
 				foreach (MethodDefinition method in allMethods.ToArray ()) {
@@ -93,9 +91,6 @@ namespace Mono.CodeContracts.Rewrite {
 			TransformContractsVisitor vTransform = null;
 			if (method.HasBody) {
 				vTransform = this.TransformContracts (module, method, contractsRuntime);
-				if (this.sym != null) {
-					this.sym.Write (method.Body);
-				}
 				if (vTransform.ContractRequiresInfo.Any ()) {
 					anyRewrites = true;
 				}
@@ -127,7 +122,7 @@ namespace Mono.CodeContracts.Rewrite {
 
 		private void RewriteIL (MethodBody body, Dictionary<Expr,Instruction> instructionLookup, Expr remove, Expr insert)
 		{
-			var il = body.CilWorker;
+			var il = body.GetILProcessor ();
 			Instruction instInsertBefore;
 			if (remove != null) {
 				var vInstExtent = new InstructionExtentVisitor (instructionLookup);
@@ -154,7 +149,7 @@ namespace Mono.CodeContracts.Rewrite {
 			if (baseType == null) {
 				return null;
 			}
-			var overridden = baseType.Resolve ().Methods.Cast<MethodDefinition> ().FirstOrDefault (x => x.Name == method.Name);
+			var overridden = baseType.Resolve ().Methods.FirstOrDefault (x => x.Name == method.Name);
 			return overridden;
 		}
 
diff --git a/mcs/class/Mono.CodeContracts/Mono.CodeContracts.Rewrite/Rewriter.cs b/mcs/class/Mono.CodeContracts/Mono.CodeContracts.Rewrite/Rewriter.cs
index c2bd64c..15a353c 100644
--- a/mcs/class/Mono.CodeContracts/Mono.CodeContracts.Rewrite/Rewriter.cs
+++ b/mcs/class/Mono.CodeContracts/Mono.CodeContracts.Rewrite/Rewriter.cs
@@ -54,43 +54,6 @@ namespace Mono.CodeContracts.Rewrite {
 		private List<string> errors = new List<string> ();
 		private bool usingMdb = false;
 		private bool usingPdb = false;
-		
-		private void LoadSymbolReader (AssemblyDefinition assembly) {
-			if (this.options.Assembly.IsStream && this.options.Assembly.Streams.Symbols == null) {
-				this.warnings.Add ("-debug specified, but no symbol stream provided.");
-			} else {
-				try {
-					foreach (ModuleDefinition module in assembly.Modules) {
-						module.LoadSymbols ();
-					}
-					this.usingMdb = true;
-				} catch {
-				}
-				if (!this.usingMdb && !this.usingPdb) {
-					this.warnings.Add ("-debug specified, but no MDB or PDB symbol file found.");
-				}
-			}
-		}
-		
-		private ISymbolWriter LoadSymbolWriter(AssemblyDefinition assembly, AssemblyRef output)
-		{
-			// TODO: Get symbol writing to work.
-//			ISymbolWriterProvider symProv = null;
-//			if (this.usingMdb) {
-//				symProv = new Mono.Cecil.Mdb.MdbWriterProvider ();
-//			} else if (this.usingPdb) {
-//				symProv = new Mono.Cecil.Pdb.PdbWriterProvider ();
-//			} else {
-//				this.warnings.Add ("-writePDBFile specified, but no symbol file found, cannot write symbols.");
-//			}
-//			if (symProv != null) {
-//				return output.IsFilename ?
-//					symProv.GetSymbolWriter (assembly.MainModule, output.Filename) :
-//					symProv.GetSymbolWriter (assembly.MainModule, output.Streams.Symbols);
-//			}
-			return null;
-		}
-
 
 		private RewriterResults RewriteImpl ()
 		{
@@ -101,9 +64,15 @@ namespace Mono.CodeContracts.Rewrite {
 			if (!this.options.Assembly.IsSet) {
 				return RewriterResults.Error ("No assembly given to rewrite");
 			}
-			AssemblyDefinition assembly = this.options.Assembly.IsFilename ?
-				AssemblyFactory.GetAssembly (this.options.Assembly.Filename) :
-				AssemblyFactory.GetAssembly (this.options.Assembly.Streams.Assembly);
+
+			var readerParameters = new ReaderParameters ();
+
+			if (options.Debug)
+				readerParameters.ReadSymbols = true;
+
+			var assembly = this.options.Assembly.IsFilename ?
+				AssemblyDefinition.ReadAssembly (options.Assembly.Filename, readerParameters) :
+				AssemblyDefinition.ReadAssembly (options.Assembly.Streams.Assembly, readerParameters);
 			
 			if (this.options.ForceAssemblyRename != null) {
 				assembly.Name.Name = this.options.ForceAssemblyRename;
@@ -111,37 +80,25 @@ namespace Mono.CodeContracts.Rewrite {
 				assembly.Name.Name = Path.GetFileNameWithoutExtension(this.options.OutputFile.Filename);
 			}
 
-			if (options.Debug) {
-				this.LoadSymbolReader (assembly);
-			}
-
 			var output = this.options.OutputFile.IsSet ? this.options.OutputFile : this.options.Assembly;
-			ISymbolWriter symWriter = null;
+			var writerParameters = new WriterParameters ();
 			if (options.WritePdbFile) {
 				if (!options.Debug) {
 					return RewriterResults.Error ("Must specify -debug if using -writePDBFile.");
 				}
-				if (output.IsStream && output.Streams.Symbols==null){
-					return RewriterResults.Error ("-writePDFFile specified, but no output symbol stream provided.");
-				}
-				symWriter = this.LoadSymbolWriter (assembly, output);
+				
+				writerParameters.WriteSymbols = true;
 			}
 			
-			try {
-				PerformRewrite rewriter = new PerformRewrite (symWriter, this.options);
-				rewriter.Rewrite (assembly);
+			PerformRewrite rewriter = new PerformRewrite (this.options);
+			rewriter.Rewrite (assembly);
 
-				if (output.IsFilename) {
-					AssemblyFactory.SaveAssembly(assembly, output.Filename);
-				} else {
-					AssemblyFactory.SaveAssembly(assembly, output.Streams.Assembly);
-				}
-			} finally {
-				if (symWriter != null) {
-					symWriter.Dispose ();
-				}
+			if (output.IsFilename) {
+				assembly.Write (output.Filename, writerParameters);
+			} else {
+				assembly.Write (output.Streams.Assembly, writerParameters);
 			}
-
+		
 			return new RewriterResults (warnings, errors);
 		}
 		
diff --git a/mcs/class/Mono.CompilerServices.SymbolWriter/ChangeLog b/mcs/class/Mono.CompilerServices.SymbolWriter/ChangeLog
index 63e1457..e8e2474 100644
--- a/mcs/class/Mono.CompilerServices.SymbolWriter/ChangeLog
+++ b/mcs/class/Mono.CompilerServices.SymbolWriter/ChangeLog
@@ -1,3 +1,11 @@
+2010-12-16  Marek Safar  <marek.safar at gmail.com>
+
+	Switch to single mcs compiler for all managed code build
+
+2010-11-26  Marek Safar  <marek.safar at gmail.com>
+
+	Switch symbol writer to public api
+
 2010-08-02  Marek Safar  <marek.safar at gmail.com>
 
 	Replace MOONLIGHT with NET_2_1
diff --git a/mcs/class/Mono.CompilerServices.SymbolWriter/Makefile b/mcs/class/Mono.CompilerServices.SymbolWriter/Makefile
index 4e8f2ab..db8e873 100644
--- a/mcs/class/Mono.CompilerServices.SymbolWriter/Makefile
+++ b/mcs/class/Mono.CompilerServices.SymbolWriter/Makefile
@@ -5,7 +5,7 @@ include ../../build/rules.make
 LIBRARY = Mono.CompilerServices.SymbolWriter.dll
 LIBRARY_USE_INTERMEDIATE_FILE = yes
 
-LIB_MCS_FLAGS = /r:$(corlib) /r:System.dll
+LIB_MCS_FLAGS = /r:System.dll
 NO_TEST = yes
 
 ifneq (basic, $(PROFILE))
diff --git a/mcs/class/Mono.CompilerServices.SymbolWriter/MonoSymbolFile.cs b/mcs/class/Mono.CompilerServices.SymbolWriter/MonoSymbolFile.cs
index 8c2ee40..465f4c7 100644
--- a/mcs/class/Mono.CompilerServices.SymbolWriter/MonoSymbolFile.cs
+++ b/mcs/class/Mono.CompilerServices.SymbolWriter/MonoSymbolFile.cs
@@ -110,15 +110,14 @@ namespace Mono.CompilerServices.SymbolWriter
 	}
 
 #if !CECIL
+	// TODO: Obsolete under .net 4
 	internal class MonoDebuggerSupport
 	{
 		static GetMethodTokenFunc get_method_token;
 		static GetGuidFunc get_guid;
-		static GetLocalIndexFunc get_local_index;
 
 		delegate int GetMethodTokenFunc (MethodBase method);
 		delegate Guid GetGuidFunc (Module module);
-		delegate int GetLocalIndexFunc (SRE.LocalBuilder local);
 
 		static Delegate create_delegate (Type type, Type delegate_type, string name)
 		{
@@ -138,10 +137,6 @@ namespace Mono.CompilerServices.SymbolWriter
 
 			get_guid = (GetGuidFunc) create_delegate (
 				typeof (Module), typeof (GetGuidFunc), "Mono_GetGuid");
-
-			get_local_index = (GetLocalIndexFunc) create_delegate (
-				typeof (SRE.LocalBuilder), typeof (GetLocalIndexFunc),
-				"Mono_GetLocalIndex");
 		}
 
 		public static int GetMethodToken (MethodBase method)
@@ -153,11 +148,6 @@ namespace Mono.CompilerServices.SymbolWriter
 		{
 			return get_guid (module);
 		}
-
-		public static int GetLocalIndex (SRE.LocalBuilder local)
-		{
-			return get_local_index (local);
-		}
 	}
 #endif
 
@@ -443,18 +433,22 @@ namespace Mono.CompilerServices.SymbolWriter
 		}
 
 #if CECIL
-		protected MonoSymbolFile (string filename, Mono.Cecil.AssemblyDefinition assembly) : this (filename)
+		protected MonoSymbolFile (string filename, Mono.Cecil.ModuleDefinition module)
+			: this (filename)
 		{
-			Guid mvid = assembly.MainModule.Mvid;
+			CheckGuidMatch (module.Mvid, filename, module.FullyQualifiedName);
+		}
 
-			CheckGuidMatch (mvid, filename, assembly.MainModule.Image.FileInformation.FullName);
+		public static MonoSymbolFile ReadSymbolFile (Mono.Cecil.ModuleDefinition module)
+		{
+			return ReadSymbolFile (module, module.FullyQualifiedName);
 		}
 
-		public static MonoSymbolFile ReadSymbolFile (Mono.Cecil.AssemblyDefinition assembly, string filename)
+		public static MonoSymbolFile ReadSymbolFile (Mono.Cecil.ModuleDefinition module, string filename)
 		{
 			string name = filename + ".mdb";
 
-			return new MonoSymbolFile (name, assembly);
+			return new MonoSymbolFile (name, module);
 		}
 #else
 		protected MonoSymbolFile (string filename, Assembly assembly) : this (filename)
diff --git a/mcs/class/Mono.Data.Sqlite/Assembly/AssemblyInfo.cs b/mcs/class/Mono.Data.Sqlite/Assembly/AssemblyInfo.cs
index b167e8f..101e4b9 100644
--- a/mcs/class/Mono.Data.Sqlite/Assembly/AssemblyInfo.cs
+++ b/mcs/class/Mono.Data.Sqlite/Assembly/AssemblyInfo.cs
@@ -47,15 +47,15 @@ using System.Runtime.ConstrainedExecution;
 //
 // You can specify all the values or you can default the Revision and Build Numbers 
 // by using the '*' as shown below:
-#if !MONOTOUCH
+#if !MOBILE
   #if NET_4_0
     [assembly: AssemblyVersion("4.0.0.0")]
   #else // NET_4_0
     [assembly: AssemblyVersion("2.0.0.0")]
   #endif // NET_4_0
-#else   // !MONOTOUCH
+#else
 [assembly: AssemblyVersion(Consts.FxVersion)]
-#endif  // !MONOTOUCH
+#endif
 #if !PLATFORM_COMPACTFRAMEWORK
 [assembly: AssemblyFileVersion("1.0.61.0")]
 #endif
diff --git a/mcs/class/Mono.Data.Sqlite/Assembly/AssemblyInfo_1.1.cs b/mcs/class/Mono.Data.Sqlite/Assembly/AssemblyInfo_1.1.cs
deleted file mode 100644
index e06154c..0000000
--- a/mcs/class/Mono.Data.Sqlite/Assembly/AssemblyInfo_1.1.cs
+++ /dev/null
@@ -1,31 +0,0 @@
-//
-// AssemblyInfo.cs
-//
-// Author:
-//   Andreas Nahr (ClassDevelopment at A-SoftTech.com)
-//
-// (C) 2003 Ximian, Inc.  http://www.ximian.com
-// (C) 2004 Novell (http://www.novell.com)
-//
-
-using System;
-using System.Reflection;
-using System.Runtime.InteropServices;
-
-[assembly: AssemblyVersion (Consts.FxVersion)]
-
-/* TODO COMPLETE INFORMATION
-
-[assembly: AssemblyTitle ("")]
-[assembly: AssemblyDescription ("")]
-
-[assembly: CLSCompliant (true)]
-[assembly: AssemblyFileVersion ("0.0.0.1")]
-
-[assembly: ComVisible (false)]
-
-*/
-
-[assembly: AssemblyDelaySign (true)]
-[assembly: AssemblyKeyFile ("../mono.pub")]
-
diff --git a/mcs/class/Mono.Data.Sqlite/Assembly/ChangeLog b/mcs/class/Mono.Data.Sqlite/Assembly/ChangeLog
index f87e36f..d6cfa9e 100644
--- a/mcs/class/Mono.Data.Sqlite/Assembly/ChangeLog
+++ b/mcs/class/Mono.Data.Sqlite/Assembly/ChangeLog
@@ -1,3 +1,7 @@
+2010-09-08  Jb Evain  <jbevain at gmail.com>
+
+	Enable the Mono.Data.Sqlite build for monodroid
+
 2009-12-14  Marek Habersack  <mhabersack at novell.com>
 
 	* AssemblyInfo.cs: 4.0 assembly must have a different version than 2.0
diff --git a/mcs/class/Mono.Data.Sqlite/Assembly/ChangeLog b/mcs/class/Mono.Data.Sqlite/Assembly/ChangeLog.old
similarity index 100%
copy from mcs/class/Mono.Data.Sqlite/Assembly/ChangeLog
copy to mcs/class/Mono.Data.Sqlite/Assembly/ChangeLog.old
diff --git a/mcs/class/Mono.Data.Sqlite/ChangeLog b/mcs/class/Mono.Data.Sqlite/ChangeLog
index f854a09..db58942 100644
--- a/mcs/class/Mono.Data.Sqlite/ChangeLog
+++ b/mcs/class/Mono.Data.Sqlite/ChangeLog
@@ -1,3 +1,7 @@
+2010-12-29  Marek Safar  <marek.safar at gmail.com>
+
+	Fixed Mono.Data.Sqlite dependencies
+
 2009-06-04  Jb Evain  <jbevain at novell.com>
 
 	* resources/SR.resx: adjust file names.
diff --git a/mcs/class/Mono.Data.Sqlite/ChangeLog b/mcs/class/Mono.Data.Sqlite/ChangeLog.old
similarity index 100%
copy from mcs/class/Mono.Data.Sqlite/ChangeLog
copy to mcs/class/Mono.Data.Sqlite/ChangeLog.old
diff --git a/mcs/class/Mono.Data.Sqlite/Makefile b/mcs/class/Mono.Data.Sqlite/Makefile
index b59b114..50bf887 100644
--- a/mcs/class/Mono.Data.Sqlite/Makefile
+++ b/mcs/class/Mono.Data.Sqlite/Makefile
@@ -2,17 +2,13 @@ thisdir = class/Mono.Data.Sqlite
 SUBDIRS =
 include ../../build/rules.make
 
-ifneq (1, $(FRAMEWORK_VERSION_MAJOR))
-OTHER_LIB_MCS_FLAGS = /r:System.Transactions.dll
-
 RESX_RESOURCES = resources/SR.resources
 OTHER_RESOURCES = $(wildcard resources/*.bmp)
 
 RESOURCES = $(RESX_RESOURCES) $(OTHER_RESOURCES)
-endif
 
 LIBRARY = Mono.Data.Sqlite.dll
-LIB_MCS_FLAGS = /unsafe /r:System.dll /r:System.Data.dll $(OTHER_LIB_MCS_FLAGS) \
+LIB_MCS_FLAGS = /unsafe /r:System.dll /r:System.Data.dll /r:System.Transactions.dll /r:System.Xml.dll \
 	$(RESOURCES:%=-resource:%) -d:SQLITE_STANDARD
 
 TEST_MCS_FLAGS = $(LIB_MCS_FLAGS) /nowarn:618
@@ -32,10 +28,8 @@ test.db: Test/test.sql
 	sqlite3 $@ < $< || :
 
 include ../../build/library.make
-ifeq (2, $(FRAMEWORK_VERSION_MAJOR))
+
 $(the_lib): $(RESOURCES)
 
 $(RESX_RESOURCES): %.resources: %.resx
 	$(RESGEN) $<
-endif
-
diff --git a/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite/ChangeLog b/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite/ChangeLog
deleted file mode 100644
index 9a6fdc7..0000000
--- a/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite/ChangeLog
+++ /dev/null
@@ -1,260 +0,0 @@
-2007-02-03  Marek Habersack  <grendello at gmail.com>
-
-	* SqliteTransaction.cs: Use in the 1.x profile only.
-
-	* SqliteParameter.cs: Use in the 1.x profile only.
-
-	* SqliteParameterCollection.cs: Use in the 1.x profile only.
-
-	* SqliteDataReader.cs: Use in the 1.x profile only.
-
-	* SqliteDataAdapter.cs: Use in the 1.x profile only.
-
-	* Sqlite.cs: Use in the 1.x profile only.
-
-	* SqliteConnection.cs: Use in the 1.x profile only.
-
-	* SqliteCommand.cs: Use in the 1.x profile only.
-	
-
-2007-01-26  Miguel de Icaza  <miguel at novell.com>
-
-	* SqliteParameterCollection.cs: If the parameter is prefixed,
-	ignore the prefix when we do the lookup.   Replicates the behavior
-	in GetParameter 
-
-	The code paths changed recently with the 2.0-ification of
-	Mono.Data.SqliteClient 
-
-2007-01-16  Marek Habersack  <grendello at gmail.com>
-
-	* SqliteCommandBuilder.cs: Nothing-to-do implementation of the
-	ApplyParameterInfo method.
-
-	* SqliteDataReader.cs: Implemented the GetChars, GetData, GetGuid
-	methods.
-
-	* SqliteConnection.cs: Support the DataSource in addition to Uri
-	field in the connection string for 2.0.
-	Use non-variant, case insensitive Uri/DataSource value
-	comparisons.
-	Implemented the ChangeDatabase method.
-
-	* SqliteConnectionStringBuilder.cs: Implementation
-
-	* SqliteClientFactory.cs: Added the CreateConnectionStringBuilder
-	method.
-
-2007-01-15  Marek Habersack  <grendello at gmail.com>
-
-	* SqliteCommandBuilder.cs: new file, ADO.NET 2.0 command builder
-	for generic Db* support
-
-	* SqliteTransaction.cs: ADO.NET 2.0 support
-
-	* SqliteParameter.cs: ADO.NET 2.0 support
-	Implement SourceColumnNullMapping.
-	Implement ResetDbType.
-
-	* SqliteCommand.cs: ADO.NET 2.0 support
-	Implement the ICloneable interface.
-	Implement parameterless ExecuteReader.
-	Implement the DesignTimeVisible property.
-
-	* SqliteDataAdapter.cs: ADO.NET 2.0 support
-
-	* SqliteConnection.cs: ADO.NET 2.0 support
-	Implement ServerVersion.
-	Implement the ICloneable interface.
-
-	* SqliteDataReader.cs: ADO.NET 2.0 support
-	Add a few interfaces to the class signature.
-
-	* SqliteParameterCollection.cs: ADO.NET 2.0 support
-	Implement AddRange.
-
-	* SqliteDataSourceEnumerator.cs: ADO.NET 2.0 data support.
-
-	* SqliteClientFactory.cs: new file, ADO.NET 2.0 factory for
-	generic Db* support.
-
-2007-01-07  Miguel de Icaza  <miguel at novell.com>
-
-	* SqliteConnection.cs: Automatically try version 3 if this fails.
-
-2006-09-14  Mart Roosmaa <roosmaa at gmail.com> 
-
-	* SqliteCommand.cs: Handle enums by their underliying type.
-
-2006-09-13  Mart Roosmaa <roosmaa at gmail.com> 
-
-	* SqliteDataReader.cs: Implemented GetBytes ().
-	* SqliteCommand.cs: Automatically convert enums to Int32.
-
-2006-08-20  Joshua Tauberer  <jt at occams.info>
-
-	* SqliteConnection.cs: Changed Version property (which is
-	  read-only) from internal to public so users can know
-	  which version of Sqlite was actually connected to.
-
-2006-05-25  Joshua Tauberer  <tauberer at for.net>
-
-	* SqliteCommand.cs: Unnamed parameters by index weren't
-	  implemented.
-
-2006-05-13  Joshua Tauberer  <tauberer at for.net>
-
-	Reported by Sebastian Dröge <slomo at ubuntu.com>.
-	* Sqlite.cs: The binding for sqlite3_last_insert_rowid had
-	  the wrong type for the return (int vs long).
-	* SqliteConnection: LastInsertRowId: I didn't want to break
-	  the public API, so it casts the long return from that
-	  to an int.
-	* SqliteCommand: LastInsertRowID(): Wrap the above property.
-
-2006-03-14  Kamil Skalski  <nazgul at nemerle.org>
-
-	* SqliteConnection.cs, Sqlite.cs: Add option for specifying busy
-	timeout in underlying sqlite structure. It allows enabling
-	automatic waiting for lock cleanup in multithreaded usage.
-	
-
-2006-03-11  Joshua Tauberer  <tauberer at for.net>
-
-	* Use HGlobal rather than CoTaskMem String-To-Ptr functions in
-	  Marshal class.  StringToCoTaskMemAnsi is broken (pending it
-	  being fixed): it actually uses Ansi, instead of UTF-8.  Now,
-	  Sqlite2 with no encoding parameter uses UTF-8 encoding.  Any
-	  Sqlite2 DB since Jan. 20 was encoded in ANSI but unreadable
-	  back.
-
-2006-03-07  Kamil Skalski  <nazgul at nemerle.org>
-
-	* SqliteDataReader.cs: Handle null values in result as having
-	string type
-
-2006-02-10  Joshua Tauberer  <tauberer at for.net>
-
-	* SqliteDataReader: Made 64bit clean.  Patch from
-	  Joe Shaw <joeshaw at novell.com>.
-
-2006-01-22  Joshua Tauberer  <tauberer at for.net>
-
-	Most of the below fixes (in previous changes too) are thanks
-	to Thomas Zoechling and Tom Surace, and the byte[]->blob
-	parameter binding is thanks to <pablosantosluac at terra.es>.
-	
-	* SqliteCommand.cs:
-	  - Don't use a regex for finding parameters in v2.
-	  It didn't work when there were no parameters in
-	  the query (infinite loop of some sort -- should be filed
-	  as a Mono bug I guess).  Just scan for parameters names
-	  that aren't within quotes.
-	  - That wasn't even being called.  Now it is.
-	  - Marshaling for sqlite3_bind_parameter_name was wrong, as
-	  was the unicode call to bind_text16 which was looking for
-	  byte length of string while we were providing char length.
-	  - Bind byte[] parameters as blobs.
-	  - Trim the SQL string.  Trailing spaces makes it think
-	  another statement is coming along.
-	* SqliteDataReader.cs: When DATE/DATETIME columns come
-	  back as Int64s, return them using DateTime.FromFileTime.
-	  And don't return Int64s as ints if they aren't in the
-	  range of an int.
-	  - Check column names case-insensitively (bug 77272).
-	* SqliteParameter.cs: Public parameter names made nicer.
-	* SqliteParameterCollection.cs: Allow users to set parameter
-	  names with or without the : prefix that Sqlite wants.
-	* Sqlite.cs: Supporting changes.
-	* SqliteDataReader, SqliteConnection: ToLower with the
-	  invariant culture (bug 77372).
-
-2006-01-20  Joshua Tauberer  <tauberer at for.net>
-
-	* Sqlite3 calls now use unicode encoding.  Sqlite2
-	  calls use ANSI encoding (a superset of the default
-	  expected encoding ISO8859-1), unless the new
-	  encoding= connection string argument is used,
-	  in which case that encoding is used.  But that encoding
-	  must use a single-byte null terminator, so only
-	  UTF-8 is recommended.  This removes the dependency
-	  on Mono.Posix.  If UTF-8 encoding is used, Sqlite2's
-	  LIKE, GLOB, LENGTH, and SUBSTR aren't going to respect
-	  multibyte chars unless Sqlite was specifically compiled
-	  to do so.
-	* SqliteDataReader.this[] is fixed to wrap GetValue.
-
-2006-01-06  Joshua Tauberer  <tauberer at for.net>
-
-	* SqliteDataReader.cs: GetFieldType can be called
-	  before the reader is positioned on a row.  In that
-	  case, return the types for the first row.
-
-2006-01-02  Joshua Tauberer  <tauberer at for.net>
-
-	* SqliteCommand.cs: It was revealed that preparing
-	  statements ahead of time was not possible as table
-	  schema changes lead to errors.  This needed serious
-	  reorganization.  SQL syntax errors and BUSY errors
-	  are now raised in nice exceptions.
-	* SqliteDataReader.cs:
-		* Use object[] in place of ArrayList for each row.
-		* For Sqlite3, which remembers whether a value was
-		  an integer, text, real, or blob, actually return
-		  longs, strings, doubles, and byte[]s.
-		* GetDataTypeName() works where possible (Sqlite3).
-		* INT/INTEGER columns are now returned as ints,
-		  rather than longs, for Sqlite3.  Similarly for
-		  DATE and DATETIME columns, now returning DateTimes.
-	* SqliteConnection.cs.cs: BeginTransaction(IsolationLevel)
-	  throws InvalidOperationException per the MS docs.
-	* SqliteExceptions.cs: New file with SqliteSyntaxException,
-	  SqliteExecutionException, and its subclass SqliteBusyException.
-
-2005-12-27  Jonathan Pryor  <jonpryor at vt.edu>
-
-	* SqliteCommand.cs: Use non-obsolete UnixMarshal members.
-
-2005-10-06  Chris Lahey  <clahey at localhost.localdomain>
-
-	* SqliteCommand.cs (Prepare): Use UnixMarshal here to get proper
-	utf8 behavior.
-
-2005-07-28  Joshua Tauberer <tauberer at for.net>
-
-	* Sqlite.cs, SqliteCommand.cs: Report string error messages
-	in prepare, for version 3.
-
-2005-07-26  Joshua Tauberer <tauberer at for.net>
-
-	SQL commands can have multiple statements within them (i.e.
-	separated by semicolons).  Sqlite has to be instructed to
-	process each command.
-	
-	* Sqlite.cs: Pass the sql command as an IntPtr so we can
-	  see where pzTail takes us.
-	* SqliteCommand.cs: Lazily load sql_params for good measure.
-	  Iterate compile/prepare until each statement in the string
-	  has been processed, and retain pointers to each compiled
-	  statement.  When executing, run all of the statements.
-
-2005-06-14  Thomas Zoechling <thomas.zoechling at gmx.at>
-
-	* Sqlite.cs:
-	- Added sqlite3_bind_* for native Sqlite3 Parameters
-	* SqliteCommand.cs
-	- Added methods for parameter processing/binding (sqlite3 uses bind / sqlite2 uses regEx to extract parameters)
-	- Sqlite uses ':' as delimeter!
-	* SqliteParameterCollection.cs
-	- Chris Turchin fixed a problem in the Parameter Hashmap
-	* SqliteTransaction.cs
-	- The CommandText for the Rollback Command was "COMMIT" ! ->changed :)
-
-2005-05-20  Sureshkumar T  <tsureshkumar at novell.com>
-
-	* SqliteConnection.cs:
-	- SetConnectionString: trim white spaces, ignore empty connection
-	string options.
-	- SetConnectionString: if file://,db_file starts from pos 7 not 6.
-
-
diff --git a/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite/Sqlite.cs b/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite/Sqlite.cs
deleted file mode 100644
index ece0ec2..0000000
--- a/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite/Sqlite.cs
+++ /dev/null
@@ -1,286 +0,0 @@
-//
-// Mono.Data.Sqlite.Sqlite.cs
-//
-// Provides C# bindings to the library sqlite.dll
-//
-//            	Everaldo Canuto  <everaldo_canuto at yahoo.com.br>
-//			Chris Turchin <chris at turchin.net>
-//			Jeroen Zwartepoorte <jeroen at xs4all.nl>
-//			Thomas Zoechling <thomas.zoechling at gmx.at>
-//
-// Copyright (C) 2004  Everaldo Canuto
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-#if !NET_2_0
-using System;
-using System.Security;
-using System.Runtime.InteropServices;
-using System.Text;
-
-namespace Mono.Data.Sqlite
-{
-	/// <summary>
-	/// Represents the return values for sqlite_exec() and sqlite_step()
-	/// </summary>
-	internal enum SqliteError : int {
-		/// <value>Successful result</value>
-		OK        =  0,
-		/// <value>SQL error or missing database</value>
-		ERROR     =  1,
-		/// <value>An internal logic error in SQLite</value>
-		INTERNAL  =  2,
-		/// <value>Access permission denied</value>
-		PERM      =  3,
-		/// <value>Callback routine requested an abort</value>
-		ABORT     =  4,
-		/// <value>The database file is locked</value>
-		BUSY      =  5,
-		/// <value>A table in the database is locked</value>
-		LOCKED    =  6,
-		/// <value>A malloc() failed</value>
-		NOMEM     =  7,
-		/// <value>Attempt to write a readonly database</value>
-		READONLY  =  8,
-		/// <value>Operation terminated by public const int interrupt()</value>
-		INTERRUPT =  9,
-		/// <value>Some kind of disk I/O error occurred</value>
-		IOERR     = 10,
-		/// <value>The database disk image is malformed</value>
-		CORRUPT   = 11,
-		/// <value>(Internal Only) Table or record not found</value>
-		NOTFOUND  = 12,
-		/// <value>Insertion failed because database is full</value>
-		FULL      = 13,
-		/// <value>Unable to open the database file</value>
-		CANTOPEN  = 14,
-		/// <value>Database lock protocol error</value>
-		PROTOCOL  = 15,
-		/// <value>(Internal Only) Database table is empty</value>
-		EMPTY     = 16,
-		/// <value>The database schema changed</value>
-		SCHEMA    = 17,
-		/// <value>Too much data for one row of a table</value>
-		TOOBIG    = 18,
-		/// <value>Abort due to contraint violation</value>
-		CONSTRAINT= 19,
-		/// <value>Data type mismatch</value>
-		MISMATCH  = 20,
-		/// <value>Library used incorrectly</value>
-		MISUSE    = 21,
-		/// <value>Uses OS features not supported on host</value>
-		NOLFS     = 22,
-		/// <value>Authorization denied</value>
-		AUTH      = 23,
-		/// <value>Auxiliary database format error</value>
-		FORMAT    = 24,
-		/// <value>2nd parameter to sqlite_bind out of range</value>
-		RANGE     = 25,
-		/// <value>File opened that is not a database file</value>
-		NOTADB    = 26,
-		/// <value>sqlite_step() has another row ready</value>
-		ROW       = 100,
-		/// <value>sqlite_step() has finished executing</value>
-		DONE      = 101
-	}
-
-	/// <summary>
-	/// Provides the core of C# bindings to the library sqlite.dll
-	/// </summary>
-	internal sealed class Sqlite {
-
-		#region PInvoke Functions
-		
-		[DllImport("sqlite")]
-		internal static extern IntPtr sqlite_open (string dbname, int db_mode, out IntPtr errstr);
-
-		[DllImport("sqlite")]
-		internal static extern void sqlite_close (IntPtr sqlite_handle);
-
-		[DllImport("sqlite")]
-		internal static extern int sqlite_changes (IntPtr handle);
-
-		[DllImport("sqlite")]
-		internal static extern int sqlite_last_insert_rowid (IntPtr sqlite_handle);
-
-		[DllImport ("sqlite")]
-		internal static extern void sqliteFree (IntPtr ptr);
-		
-		[DllImport ("sqlite")]
-		internal static extern SqliteError sqlite_compile (IntPtr sqlite_handle, IntPtr zSql, out IntPtr pzTail, out IntPtr pVm, out IntPtr errstr);
-
-		[DllImport ("sqlite")]
-		internal static extern SqliteError sqlite_step (IntPtr pVm, out int pN, out IntPtr pazValue, out IntPtr pazColName);
-
-		[DllImport ("sqlite")]
-		internal static extern SqliteError sqlite_finalize (IntPtr pVm, out IntPtr pzErrMsg);
-
-		[DllImport ("sqlite")]
-		internal static extern SqliteError sqlite_exec (IntPtr handle, string sql, IntPtr callback, IntPtr user_data, out IntPtr errstr_ptr);
-		
-		[DllImport ("sqlite")]
-		internal static extern void sqlite_busy_timeout (IntPtr handle, int ms);
-
-		[DllImport("sqlite3", CharSet = CharSet.Unicode)]
-		internal static extern int sqlite3_open16 (string dbname, out IntPtr handle);
-
-		[DllImport("sqlite3")]
-		internal static extern void sqlite3_close (IntPtr sqlite_handle);
-
-		[DllImport("sqlite3")]
-		internal static extern IntPtr sqlite3_errmsg16 (IntPtr sqlite_handle);
-
-		[DllImport("sqlite3")]
-		internal static extern int sqlite3_changes (IntPtr handle);
-
-		[DllImport("sqlite3")]
-		internal static extern long sqlite3_last_insert_rowid (IntPtr sqlite_handle);
-
-		[DllImport ("sqlite3")]
-		internal static extern SqliteError sqlite3_prepare16 (IntPtr sqlite_handle, IntPtr zSql, int zSqllen, out IntPtr pVm, out IntPtr pzTail);
-
-		[DllImport ("sqlite3")]
-		internal static extern SqliteError sqlite3_step (IntPtr pVm);
-
-		[DllImport ("sqlite3")]
-		internal static extern SqliteError sqlite3_finalize (IntPtr pVm);
-
-		[DllImport ("sqlite3")]
-		internal static extern SqliteError sqlite3_exec (IntPtr handle, string sql, IntPtr callback, IntPtr user_data, out IntPtr errstr_ptr);
-	
-		[DllImport ("sqlite3")]
-		internal static extern IntPtr sqlite3_column_name16 (IntPtr pVm, int col);
-		
-		[DllImport ("sqlite3")]
-		internal static extern IntPtr sqlite3_column_text16 (IntPtr pVm, int col);
-		
-		[DllImport ("sqlite3")]
-		internal static extern IntPtr sqlite3_column_blob (IntPtr pVm, int col);
-		
-		[DllImport ("sqlite3")]
-		internal static extern int sqlite3_column_bytes16 (IntPtr pVm, int col);
-		
-		[DllImport ("sqlite3")]
-		internal static extern int sqlite3_column_count (IntPtr pVm);
-		
-		[DllImport ("sqlite3")]
-		internal static extern int sqlite3_column_type (IntPtr pVm, int col);
-		
-		[DllImport ("sqlite3")]
-		internal static extern Int64 sqlite3_column_int64 (IntPtr pVm, int col);
-		
-		[DllImport ("sqlite3")]
-		internal static extern double sqlite3_column_double (IntPtr pVm, int col);
-		
-		[DllImport ("sqlite3")]
-		internal static extern IntPtr sqlite3_column_decltype16 (IntPtr pVm, int col);
-
- 		[DllImport ("sqlite3")]
-		internal static extern int sqlite3_bind_parameter_count (IntPtr pStmt);
-
-		[DllImport ("sqlite3")]
-		internal static extern IntPtr sqlite3_bind_parameter_name (IntPtr pStmt, int n); // UTF-8 encoded return
-
-		[DllImport ("sqlite3")]
-		internal static extern SqliteError sqlite3_bind_blob (IntPtr pStmt, int n, byte[] blob, int length, IntPtr freetype);
-
-		[DllImport ("sqlite3")]
-		internal static extern SqliteError sqlite3_bind_double (IntPtr pStmt, int n, double value);
-
-		[DllImport ("sqlite3")]
-		internal static extern SqliteError sqlite3_bind_int (IntPtr pStmt, int n, int value);
-
-		[DllImport ("sqlite3")]
-		internal static extern SqliteError sqlite3_bind_int64 (IntPtr pStmt, int n, long value);
-
-		[DllImport ("sqlite3")]
-		internal static extern SqliteError sqlite3_bind_null (IntPtr pStmt, int n);
-
-		[DllImport ("sqlite3", CharSet = CharSet.Unicode)]
-		internal static extern SqliteError sqlite3_bind_text16 (IntPtr pStmt, int n, string value, int length, IntPtr freetype);
-		
-		[DllImport ("sqlite3")]
-		internal static extern void sqlite3_busy_timeout (IntPtr handle, int ms);
-
-		#endregion
-		
-		// These are adapted from Mono.Unix.  When encoding is null,
-		// use Ansi encoding, which is a superset of the default
-		// expected encoding (ISO-8859-1).
-
-		public static IntPtr StringToHeap (string s, Encoding encoding)
-		{
-			if (encoding == null)
-				return Marshal.StringToHGlobalAnsi (s);
-				
-			int min_byte_count = encoding.GetMaxByteCount(1);
-			char[] copy = s.ToCharArray ();
-			byte[] marshal = new byte [encoding.GetByteCount (copy) + min_byte_count];
-
-			int bytes_copied = encoding.GetBytes (copy, 0, copy.Length, marshal, 0);
-
-			if (bytes_copied != (marshal.Length-min_byte_count))
-				throw new NotSupportedException ("encoding.GetBytes() doesn't equal encoding.GetByteCount()!");
-
-			IntPtr mem = Marshal.AllocHGlobal (marshal.Length);
-			if (mem == IntPtr.Zero)
-				throw new OutOfMemoryException ();
-
-			bool copied = false;
-			try {
-				Marshal.Copy (marshal, 0, mem, marshal.Length);
-				copied = true;
-			}
-			finally {
-				if (!copied)
-					Marshal.FreeHGlobal (mem);
-			}
-
-			return mem;
-		}
-
-		public static unsafe string HeapToString (IntPtr p, Encoding encoding)
-		{
-			if (encoding == null)
-				return Marshal.PtrToStringAnsi (p);
-		
-			if (p == IntPtr.Zero)
-				return null;
-				
-			// This assumes a single byte terminates the string.
-
-			int len = 0;
-			while (Marshal.ReadByte (p, len) != 0)
-				checked {++len;}
-
-			string s = new string ((sbyte*) p, 0, len, encoding);
-			len = s.Length;
-			while (len > 0 && s [len-1] == 0)
-				--len;
-			if (len == s.Length) 
-				return s;
-			return s.Substring (0, len);
-		}
-
-
-
-	}
-}
-#endif
diff --git a/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite/SqliteCommand.cs b/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite/SqliteCommand.cs
deleted file mode 100644
index 54c4e11..0000000
--- a/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite/SqliteCommand.cs
+++ /dev/null
@@ -1,539 +0,0 @@
-//
-// Mono.Data.Sqlite.SqliteCommand.cs
-//
-// Represents a Transact-SQL statement or stored procedure to execute against 
-// a Sqlite database file.
-//
-// Author(s): 	Vladimir Vukicevic  <vladimir at pobox.com>
-//		Everaldo Canuto  <everaldo_canuto at yahoo.com.br>
-//		Chris Turchin <chris at turchin.net>
-//		Jeroen Zwartepoorte <jeroen at xs4all.nl>
-//		Thomas Zoechling <thomas.zoechling at gmx.at>
-//		Joshua Tauberer <tauberer at for.net>
-//
-// Copyright (C) 2002  Vladimir Vukicevic
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-#if !NET_2_0
-using System;
-using System.Collections;
-using System.Text;
-using System.Runtime.InteropServices;
-using System.Text.RegularExpressions;
-using System.Data;
-using System.Diagnostics; 
-using Group = System.Text.RegularExpressions.Group;
-
-namespace Mono.Data.Sqlite 
-{
-	public class SqliteCommand : IDbCommand, ICloneable
-	{
-		#region Fields
-		
-		private SqliteConnection parent_conn;
-		//private SqliteTransaction transaction;
-		private IDbTransaction transaction;
-		private string sql;
-		private int timeout;
-		private CommandType type;
-		private UpdateRowSource upd_row_source;
-		private SqliteParameterCollection sql_params;
-		private bool prepared = false;
-		private bool _designTimeVisible = true;
-		
-		#endregion
-
-		#region Constructors and destructors
-		
-		public SqliteCommand ()
-		{
-			sql = "";
-		}
-				
-		public SqliteCommand (string sqlText)
-		{
-			sql = sqlText;
-		}
-		
-		public SqliteCommand (string sqlText, SqliteConnection dbConn)
-		{
-			sql = sqlText;
-			parent_conn = dbConn;
-		}
-		
-		public SqliteCommand (string sqlText, SqliteConnection dbConn, IDbTransaction trans)
-		{
-			sql = sqlText;
-			parent_conn = dbConn;
-			transaction = trans;
-		}
-		
-		public void Dispose ()
-		{
-		}
-		
-		#endregion
-
-		#region Properties
-		public string CommandText 
-		{
-			get { return sql; }
-			set { sql = value; prepared = false; }
-		}	
-
-		public int CommandTimeout
-		{
-			get { return timeout; }
-			set { timeout = value; }
-		}
-		
-		public CommandType CommandType 
-		{
-			get { return type; }
-			set { type = value; }
-		}		
-
-		public SqliteConnection Connection
-		{
-			get { return parent_conn; }
-			set { parent_conn = (SqliteConnection)value; }
-		}
-		
-		IDbConnection IDbCommand.Connection 
-		{
-			get 
-			{ 
-				return parent_conn; 
-			}
-			set 
-			{
-				if (!(value is SqliteConnection)) 
-				{
-					throw new InvalidOperationException ("Can't set Connection to something other than a SqliteConnection");
-				}
-				parent_conn = (SqliteConnection) value;
-			}
-		}
-
-		public SqliteParameterCollection Parameters {
-			get {
-				if (sql_params == null)
-					sql_params = new SqliteParameterCollection();
-				return sql_params;
-			}
-		}
-		
-		IDataParameterCollection IDbCommand.Parameters  {
-			get { return Parameters; }
-		}		
-
-		public IDbTransaction Transaction {
-			get { return transaction; }
-			set { transaction = value; }
-		}		
-
-		public UpdateRowSource UpdatedRowSource 
-		{
-			get { return upd_row_source; }
-			set { upd_row_source = value; }
-		}               
-		#endregion
-
-		#region Internal Methods
-		
-		internal int NumChanges () 
-		{
-			if (parent_conn.Version == 3)
-				return Sqlite.sqlite3_changes(parent_conn.Handle);
-			else
-				return Sqlite.sqlite_changes(parent_conn.Handle);
-		}
-		
-		private void BindParameters3 (IntPtr pStmt)
-		{
-			if (sql_params == null) return;
-			if (sql_params.Count == 0) return;
-			int pcount = Sqlite.sqlite3_bind_parameter_count (pStmt);
-			for (int i = 1; i <= pcount; i++) 
-			{
-				String name = Sqlite.HeapToString (Sqlite.sqlite3_bind_parameter_name (pStmt, i), Encoding.UTF8);
-				SqliteParameter param = null;
-				if (name != null)
-					param = sql_params[name] as SqliteParameter;
-				else
-					param = sql_params[i-1] as SqliteParameter;
-				
-				if (param.Value == null) {
-					Sqlite.sqlite3_bind_null (pStmt, i);
-					continue;
-				}
-					
-				Type ptype = param.Value.GetType ();
-				if (ptype.IsEnum)
-					ptype = Enum.GetUnderlyingType (ptype);
-				
-				SqliteError err;
-				
-				if (ptype.Equals (typeof (String))) 
-				{
-					String s = (String)param.Value;
-					err = Sqlite.sqlite3_bind_text16 (pStmt, i, s, -1, (IntPtr)(-1));
-				} 
-				else if (ptype.Equals (typeof (DBNull))) 
-				{
-					err = Sqlite.sqlite3_bind_null (pStmt, i);
-				}
-				else if (ptype.Equals (typeof (Boolean))) 
-				{
-					bool b = (bool)param.Value;
-					err = Sqlite.sqlite3_bind_int (pStmt, i, b ? 1 : 0);
-				} else if (ptype.Equals (typeof (Byte))) 
-				{
-					err = Sqlite.sqlite3_bind_int (pStmt, i, (Byte)param.Value);
-				}
-				else if (ptype.Equals (typeof (Char))) 
-				{
-					err = Sqlite.sqlite3_bind_int (pStmt, i, (Char)param.Value);
-				} 
-				else if (ptype.IsEnum) 
-				{
-					err = Sqlite.sqlite3_bind_int (pStmt, i, (Int32)param.Value);
-				}
-				else if (ptype.Equals (typeof (Int16))) 
-				{
-					err = Sqlite.sqlite3_bind_int (pStmt, i, (Int16)param.Value);
-				} 
-				else if (ptype.Equals (typeof (Int32))) 
-				{
-					err = Sqlite.sqlite3_bind_int (pStmt, i, (Int32)param.Value);
-				}
-				else if (ptype.Equals (typeof (SByte))) 
-				{
-					err = Sqlite.sqlite3_bind_int (pStmt, i, (SByte)param.Value);
-				} 
-				else if (ptype.Equals (typeof (UInt16))) 
-				{
-					err = Sqlite.sqlite3_bind_int (pStmt, i, (UInt16)param.Value);
-				}
-				else if (ptype.Equals (typeof (DateTime))) 
-				{
-					DateTime dt = (DateTime)param.Value;
-					err = Sqlite.sqlite3_bind_int64 (pStmt, i, dt.ToFileTime ());
-				} 
-				else if (ptype.Equals (typeof (Double))) 
-				{
-					err = Sqlite.sqlite3_bind_double (pStmt, i, (Double)param.Value);
-				}
-				else if (ptype.Equals (typeof (Single))) 
-				{
-					err = Sqlite.sqlite3_bind_double (pStmt, i, (Single)param.Value);
-				} 
-				else if (ptype.Equals (typeof (UInt32))) 
-				{
-					err = Sqlite.sqlite3_bind_int64 (pStmt, i, (UInt32)param.Value);
-				}
-				else if (ptype.Equals (typeof (Int64))) 
-				{
-					err = Sqlite.sqlite3_bind_int64 (pStmt, i, (Int64)param.Value);
-				} 
-				else if (ptype.Equals (typeof (Byte[]))) 
-				{
-					err = Sqlite.sqlite3_bind_blob (pStmt, i, (Byte[])param.Value, ((Byte[])param.Value).Length, (IntPtr)(-1));
-				} 
-				else 
-				{
-					throw new ApplicationException("Unkown Parameter Type");
-				}
-				if (err != SqliteError.OK) 
-				{
-					throw new ApplicationException ("Sqlite error in bind " + err);
-				}
-			}
-		}
-
-		private void GetNextStatement (IntPtr pzStart, out IntPtr pzTail, out IntPtr pStmt)
-		{
-			if (parent_conn.Version == 3)
-			{
-				SqliteError err = Sqlite.sqlite3_prepare16 (parent_conn.Handle, pzStart, -1, out pStmt, out pzTail);
-				if (err != SqliteError.OK)
-					throw new SqliteSyntaxException (GetError3());
-			} else {
-				IntPtr errMsg;
-				SqliteError err = Sqlite.sqlite_compile (parent_conn.Handle, pzStart, out pzTail, out pStmt, out errMsg);
-				
-				if (err != SqliteError.OK) 
-				{
-					string msg = "unknown error";
-					if (errMsg != IntPtr.Zero) {
-						msg = Marshal.PtrToStringAnsi (errMsg);
-						Sqlite.sqliteFree (errMsg);
-					}
-					throw new SqliteSyntaxException (msg);
-				}
-			}
-		}
-		
-		// Executes a statement and ignores its result.
-		private void ExecuteStatement (IntPtr pStmt) {
-			int cols;
-			IntPtr pazValue, pazColName;
-			ExecuteStatement (pStmt, out cols, out pazValue, out pazColName);
-		}
-
-		// Executes a statement and returns whether there is more data available.
-		internal bool ExecuteStatement (IntPtr pStmt, out int cols, out IntPtr pazValue, out IntPtr pazColName) {
-			SqliteError err;
-			
-			if (parent_conn.Version == 3) 
-			{
-				err = Sqlite.sqlite3_step (pStmt);
-				if (err == SqliteError.ERROR)
-					throw new SqliteExecutionException (GetError3());
-				pazValue = IntPtr.Zero; pazColName = IntPtr.Zero; // not used for v=3
-				cols = Sqlite.sqlite3_column_count (pStmt);
-			}
-			else 
-			{
-				err = Sqlite.sqlite_step (pStmt, out cols, out pazValue, out pazColName);
-				if (err == SqliteError.ERROR)
-					throw new SqliteExecutionException ();
-			}
-			
-			if (err == SqliteError.BUSY)
-				throw new SqliteBusyException();
-			
-			if (err == SqliteError.MISUSE)
-				throw new SqliteExecutionException();
-				
-			// err is either ROW or DONE.
-			return err == SqliteError.ROW;
-		}
-		
-		#endregion
-
-		#region Public Methods
-		
-		object ICloneable.Clone ()
-		{
-			return new SqliteCommand (sql, parent_conn, transaction);
-		}
-
-		public void Cancel ()
-		{
-		}
-		
-		public string BindParameters2()
-		{
-			string text = sql;
-			
-			// There used to be a crazy regular expression here, but it caused Mono
-			// to go into an infinite loop of some sort when there were no parameters
-			// in the SQL string.  That was too complicated anyway.
-			
-			// Here we search for substrings of the form [:?]wwwww where w is a letter or digit
-			// (not sure what a legitimate Sqlite3 identifier is), except those within quotes.
-			
-			char inquote = (char)0;
-			int counter = 0;
-			for (int i = 0; i < text.Length; i++) {
-				char c = text[i];
-				if (c == inquote) {
-					inquote = (char)0;
-				} else if (inquote == (char)0 && (c == '\'' || c == '"')) {
-					inquote = c;
-				} else if (inquote == (char)0 && (c == ':' || c == '?')) {
-					int start = i;
-					while (++i < text.Length && char.IsLetterOrDigit(text[i])) { } // scan to end
-					string name = text.Substring(start, i-start);
-					SqliteParameter p;
-					if (name.Length > 1)
-						p = Parameters[name] as SqliteParameter;
-					else
-						p = Parameters[counter] as SqliteParameter;
-					string value = "'" + Convert.ToString(p.Value).Replace("'", "''") + "'";
-					text = text.Remove(start, name.Length).Insert(start, value);
-					i += value.Length - name.Length - 1;
-					counter++;
-				}
-			}
-			
-			return text;
-		}		
-
-		public void Prepare ()
-		{
-			// There isn't much we can do here.  If a table schema
-			// changes after preparing a statement, Sqlite bails,
-			// so we can only compile statements right before we
-			// want to run them.		
-	
-			if (prepared) return;
-		
-			if (Parameters.Count > 0 && parent_conn.Version == 2)
-			{
-				sql = BindParameters2();
-			}
-			prepared = true;
-		}
-		
-		IDbDataParameter IDbCommand.CreateParameter()
-		{
-			return CreateParameter ();
-		}		
-
-		public SqliteParameter CreateParameter ()
-		{
-			return new SqliteParameter ();
-		}		
-
-		public int ExecuteNonQuery ()
-		{
-			int rows_affected;
-			ExecuteReader (CommandBehavior.Default, false, out rows_affected);
-			return rows_affected;
-		}		
-
-		public object ExecuteScalar ()
-		{
-			SqliteDataReader r = (SqliteDataReader)ExecuteReader ();
-			if (r == null || !r.Read ()) {
-				return null;
-			}
-			object o = r[0];
-			r.Close ();
-			return o;
-		}
-		
-		IDataReader IDbCommand.ExecuteReader ()
-		{
-			return ExecuteReader ();
-		}
-		
-		IDataReader IDbCommand.ExecuteReader (CommandBehavior behavior)
-		{
-			return ExecuteReader (behavior);
-		}
-		
-		public SqliteDataReader ExecuteReader ()
-		{
-			return ExecuteReader (CommandBehavior.Default);
-		}
-		
-		public new SqliteDataReader ExecuteReader (CommandBehavior behavior)
-		{
-			int r;
-			return ExecuteReader (behavior, true, out r);
-		}		
-
-		public SqliteDataReader ExecuteReader (CommandBehavior behavior, bool want_results, out int rows_affected)
-		{
-			Prepare ();
-			
-			// The SQL string may contain multiple sql commands, so the main
-			// thing to do is have Sqlite iterate through the commands.
-			// If want_results, only the last command is returned as a
-			// DataReader.  Otherwise, no command is returned as a
-			// DataReader.
-		
-			IntPtr psql; // pointer to SQL command
-			
-			// Sqlite 2 docs say this: By default, SQLite assumes that all data uses a fixed-size 8-bit 
-			// character (iso8859).  But if you give the --enable-utf8 option to the configure script, then the 
-			// library assumes UTF-8 variable sized characters. This makes a difference for the LIKE and GLOB 
-			// operators and the LENGTH() and SUBSTR() functions. The static string sqlite_encoding will be set 
-			// to either "UTF-8" or "iso8859" to indicate how the library was compiled. In addition, the sqlite.h 
-			// header file will define one of the macros SQLITE_UTF8 or SQLITE_ISO8859, as appropriate.
-			// 
-			// We have no way of knowing whether Sqlite 2 expects ISO8859 or UTF-8, but ISO8859 seems to be the
-			// default.  Therefore, we need to use an ISO8859(-1) compatible encoding, like ANSI.
-			// OTOH, the user may want to specify the encoding of the bytes stored in the database, regardless
-			// of what Sqlite is treating them as, 
-			
-			// For Sqlite 3, we use the UTF-16 prepare function, so we need a UTF-16 string.
-			
-			if (parent_conn.Version == 2)
-				psql = Sqlite.StringToHeap (sql.Trim(), parent_conn.Encoding);
-			else
-				psql = Marshal.StringToHGlobalUni (sql.Trim());
-
-			IntPtr pzTail = psql;
-			IntPtr errMsgPtr;
-			
-			parent_conn.StartExec ();
-
-			rows_affected = 0;
-			
-			try {
-				while (true) {
-					IntPtr pStmt;
-					 
-					GetNextStatement(pzTail, out pzTail, out pStmt);
-					
-					if (pStmt == IntPtr.Zero)
-						throw new Exception();
-					
-					// pzTail is positioned after the last byte in the
-					// statement, which will be the NULL character if
-					// this was the last statement.
-					bool last = Marshal.ReadByte(pzTail) == 0;
-
-					try {
-						if (parent_conn.Version == 3)
-							BindParameters3 (pStmt);
-						
-						if (last && want_results)
-							return new SqliteDataReader (this, pStmt, parent_conn.Version);
-
-						ExecuteStatement(pStmt);
-						
-						if (last) // rows_affected is only used if !want_results
-							rows_affected = NumChanges ();
-						
-					} finally {
-						if (parent_conn.Version == 3) 
-							Sqlite.sqlite3_finalize (pStmt);
-						else
-							Sqlite.sqlite_finalize (pStmt, out errMsgPtr);
-					}
-					
-					if (last) break;
-				}
-
-				return null;
-			} finally {
-				parent_conn.EndExec ();
-				Marshal.FreeHGlobal (psql);
-			}
-		}
-
-		public int LastInsertRowID () 
-		{
-			return parent_conn.LastInsertRowId;
-		}
-		
-		private string GetError3() {
-			return Marshal.PtrToStringUni (Sqlite.sqlite3_errmsg16 (parent_conn.Handle));
-		}
-	#endregion
-	}
-}
-#endif
diff --git a/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite/SqliteConnection.cs b/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite/SqliteConnection.cs
deleted file mode 100644
index b5c65ae..0000000
--- a/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite/SqliteConnection.cs
+++ /dev/null
@@ -1,314 +0,0 @@
-//
-// Mono.Data.Sqlite.SqliteConnection.cs
-//
-// Represents an open connection to a Sqlite database file.
-//
-// Author(s): Vladimir Vukicevic  <vladimir at pobox.com>
-//            Everaldo Canuto  <everaldo_canuto at yahoo.com.br>
-//
-// Copyright (C) 2002  Vladimir Vukicevic
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-#if !NET_2_0
-using System;
-using System.Runtime.InteropServices;
-using System.Data;
-using System.IO;
-using System.Text;
-
-namespace Mono.Data.Sqlite
-{
-	public class SqliteConnection : IDbConnection, ICloneable
-	{
-
-#region Fields
-		
-		private string conn_str;
-		private string db_file;
-		private int db_mode;
-		private int db_version;
-		private IntPtr sqlite_handle;
-		private ConnectionState state;
-		private Encoding encoding;
-		private int busy_timeout;
-
-#endregion
-
-#region Constructors and destructors
-		
-		public SqliteConnection ()
-		{
-			db_file = null;
-			db_mode = 0644;
-			db_version = 2;
-			state = ConnectionState.Closed;
-			sqlite_handle = IntPtr.Zero;
-			encoding = null;
-			busy_timeout = 0;
-		}
-		
-		public SqliteConnection (string connstring) : this ()
-		{
-			ConnectionString = connstring;
-		}
-
-		public void Dispose ()
-		{
-			Close ();
-		}
-		                
-#endregion
-
-#region Properties
-
-		public string ConnectionString {
-			get { return conn_str; }
-			set { SetConnectionString(value); }
-		}		
-
-		public int ConnectionTimeout {
-			get { return 0; }
-		}	
-
-		public string Database {
-			get { return db_file; }
-		}		
-
-		public ConnectionState State {
-			get { return state; }
-		}
-		
-		public Encoding Encoding {
-			get { return encoding; }
-		}
-
-		public int Version {
-			get { return db_version; }
-		}
-
-		internal IntPtr Handle {
-			get { return sqlite_handle; }
-		}		
-
-		public int LastInsertRowId {
-			get {
-				if (Version == 3)
-					return (int)Sqlite.sqlite3_last_insert_rowid (Handle);
-				else
-					return Sqlite.sqlite_last_insert_rowid (Handle);
-			}
-		}
-
-		public int BusyTimeout {
-			get {
-				return busy_timeout;  
-			}
-			set {
-			  	busy_timeout = value < 0 ? 0 : value;
-			}
-		}
-		
-#endregion
-
-#region Private Methods
-		
-		private void SetConnectionString(string connstring)
-		{
-			if (connstring == null) {
-				Close ();
-				conn_str = null;
-				return;
-			}
-			
-			if (connstring != conn_str) {
-				Close ();
-				conn_str = connstring;
-				
-				db_file = null;
-				db_mode = 0644;
-				
-				string[] conn_pieces = connstring.Split (',');
-				for (int i = 0; i < conn_pieces.Length; i++) {
-					string piece = conn_pieces [i].Trim ();
-					if (piece.Length == 0) { // ignore empty elements
-                                                continue;
-					}
-					string[] arg_pieces = piece.Split ('=');
-					if (arg_pieces.Length != 2) {
-						throw new InvalidOperationException ("Invalid connection string");
-					}
-					string token = arg_pieces[0].ToLower (System.Globalization.CultureInfo.InvariantCulture).Trim ();
-					string tvalue = arg_pieces[1].Trim ();
-					string tvalue_lc = arg_pieces[1].ToLower (System.Globalization.CultureInfo.InvariantCulture).Trim ();
-					switch (token) {
-						case "uri": 
-							if (tvalue_lc.StartsWith ("file://")) {
-								db_file = tvalue.Substring (7);
-							} else if (tvalue_lc.StartsWith ("file:")) {
-								db_file = tvalue.Substring (5);
-							} else if (tvalue_lc.StartsWith ("/")) {
-								db_file = tvalue;
-							} else {
-								throw new InvalidOperationException ("Invalid connection string: invalid URI");
-							}
-							break;
-
-						case "mode": 
-							db_mode = Convert.ToInt32 (tvalue);
-							break;
-
-						case "version":
-							db_version = Convert.ToInt32 (tvalue);
-							break;
-
-						case "encoding": // only for sqlite2
-							encoding = Encoding.GetEncoding (tvalue);
-							break;
-
-						case "busy_timeout":
-							busy_timeout = Convert.ToInt32 (tvalue);
-							break;
-					}
-				}
-				
-				if (db_file == null) {
-					throw new InvalidOperationException ("Invalid connection string: no URI");
-				}
-			}
-		}		
-#endregion
-
-#region Internal Methods
-		
-		internal void StartExec ()
-		{
-			// use a mutex here
-			state = ConnectionState.Executing;
-		}
-		
-		internal void EndExec ()
-		{
-			state = ConnectionState.Open;
-		}
-		
-#endregion
-
-#region Public Methods
-
-		object ICloneable.Clone ()
-		{
-			return new SqliteConnection (ConnectionString);
-		}
-		
-
-		public IDbTransaction BeginTransaction ()
-		{
-			if (state != ConnectionState.Open)
-				throw new InvalidOperationException("Invalid operation: The connection is closed");
-			
-			SqliteTransaction t = new SqliteTransaction();
-			t.Connection = this;
-			SqliteCommand cmd = (SqliteCommand)this.CreateCommand();
-			cmd.CommandText = "BEGIN";
-			cmd.ExecuteNonQuery();
-			return t;
-		}
-
-		public IDbTransaction BeginTransaction (IsolationLevel il)
-		{
-			throw new InvalidOperationException();
-		}		
-
-		public void Close ()
-		{
-			if (state != ConnectionState.Open) {
-				return;
-			}
-			
-			state = ConnectionState.Closed;
-		
-			if (Version == 3)
-				Sqlite.sqlite3_close (sqlite_handle);
-			else 
-				Sqlite.sqlite_close (sqlite_handle);
-			sqlite_handle = IntPtr.Zero;
-		}		
-
-		public void ChangeDatabase (string databaseName)
-		{
-			Close ();
-			db_file = databaseName;
-			Open ();
-		}
-		
-		IDbCommand IDbConnection.CreateCommand ()
-		{
-			return CreateCommand ();
-		}
-
-		public SqliteCommand CreateCommand ()
-		{
-			return new SqliteCommand (null, this);
-		}		
-
-		public void Open ()
-		{
-			if (conn_str == null) {
-				throw new InvalidOperationException ("No database specified");
-			}
-			
-			if (state != ConnectionState.Closed) {
-				return;
-			}
-			
-			IntPtr errmsg = IntPtr.Zero;
-
-			if (Version == 2){
-				try {
-					sqlite_handle = Sqlite.sqlite_open(db_file, db_mode, out errmsg);
-					if (errmsg != IntPtr.Zero) {
-						string msg = Marshal.PtrToStringAnsi (errmsg);
-						Sqlite.sqliteFree (errmsg);
-						throw new ApplicationException (msg);
-					}
-				} catch (DllNotFoundException) {
-					db_version = 3;
-				} catch (EntryPointNotFoundException) {
-					db_version = 3;
-				}
-				
-				if (busy_timeout != 0)
-					Sqlite.sqlite_busy_timeout (sqlite_handle, busy_timeout);
-			}
-			if (Version == 3) {
-				int err = Sqlite.sqlite3_open16(db_file, out sqlite_handle);
-				if (err == (int)SqliteError.ERROR)
-					throw new ApplicationException (Marshal.PtrToStringUni( Sqlite.sqlite3_errmsg16 (sqlite_handle)));
-				if (busy_timeout != 0)
-					Sqlite.sqlite3_busy_timeout (sqlite_handle, busy_timeout);
-			} else {
-			}
-			state = ConnectionState.Open;
-		}
-#endregion
-	}
-}
-#endif
diff --git a/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite/SqliteDataAdapter.cs b/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite/SqliteDataAdapter.cs
deleted file mode 100644
index ea21ed9..0000000
--- a/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite/SqliteDataAdapter.cs
+++ /dev/null
@@ -1,209 +0,0 @@
-//
-// Mono.Data.Sqlite.SqliteDataAdapter.cs
-//
-// Represents a set of data commands and a database connection that are used 
-// to fill the DataSet and update the data source.
-//
-// Author(s): Everaldo Canuto  <everaldo_canuto at yahoo.com.br>
-//
-// Copyright (C) 2004  Everaldo Canuto
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-#if !NET_2_0
-using System;
-using System.Data;
-using System.Data.Common;
-using System.Collections;
-using System.Text;
-
-namespace Mono.Data.Sqlite
-{
-	/// <summary>
-	/// Represents a set of data commands and a database connection that are used 
-	/// to fill the <see cref="DataSet">DataSet</see> and update the data source.
-	/// </summary>
-	public class SqliteDataAdapter : DbDataAdapter, IDbDataAdapter
-	{
-		#region Fields
-		
-		private IDbCommand _deleteCommand;
-		private IDbCommand _insertCommand;
-		private IDbCommand _selectCommand;
-		private IDbCommand _updateCommand;
-		
-		#endregion
-
-		#region Public Events
-		
-		/// <summary>
-		/// Occurs during <see cref="DbDataAdapter.Update">Update</see> after a 
-		/// command is executed against the data source. The attempt to update 
-		/// is made, so the event fires.
-		/// </summary>
-		public event SqliteRowUpdatedEventHandler RowUpdated;
-		
-		/// <summary>
-		/// Occurs during <see cref="DbDataAdapter.Update">Update</see> before a 
-		/// command is executed against the data source. The attempt to update 
-		/// is made, so the event fires.
-		/// </summary>
-		public event SqliteRowUpdatingEventHandler RowUpdating;
-		
-		#endregion
-
-		#region Contructors
-		
-		/// <summary>
-		/// Initializes a new instance of the <see cref="SqliteDataAdapter">SqliteDataAdapter</see> class.
-		/// </summary>
-		public SqliteDataAdapter() 
-		{
-		}
-		
-		/// <summary>
-		/// Initializes a new instance of the <see cref="SqliteDataAdapter">SqliteDataAdapter</see> class 
-		/// with the specified SqliteCommand as the SelectCommand property.
-		/// </summary>
-		/// <param name="selectCommand"></param>
-		public SqliteDataAdapter(IDbCommand selectCommand)
-		{
-			SelectCommand = selectCommand;
-		}
-		
-		/// <summary>
-		/// Initializes a new instance of the <see cref="SqliteDataAdapter">SqliteDataAdapter</see> class 
-		/// with a SelectCommand and a SqliteConnection object.
-		/// </summary>
-		/// <param name="selectCommandText"></param>
-		/// <param name="connection"></param>
-		public SqliteDataAdapter(string selectCommandText, SqliteConnection connection)
-		{
-			IDbCommand cmd;
-
-			cmd = connection.CreateCommand();
-			cmd.CommandText = selectCommandText;
-			SelectCommand = cmd;
-		}
-		
-		/// <summary>
-		/// Initializes a new instance of the <see cref="SqliteDataAdapter">SqliteDataAdapter</see> class 
-		/// with a SelectCommand and a connection string.
-		/// </summary>
-		/// <param name="selectCommandText"></param>
-		/// <param name="connectionString"></param>
-		public SqliteDataAdapter(string selectCommandText, string connectionString) : this(selectCommandText ,new SqliteConnection(connectionString))
-		{
-		}
-		
-		#endregion
-
-		#region Public Properties
-		
-		/// <summary>
-		/// Gets or sets a Transact-SQL statement or stored procedure to delete 
-		/// records from the data set.
-		/// </summary>
-		public IDbCommand DeleteCommand {
-			get { return _deleteCommand; }
-			set { _deleteCommand = value; }
-		}
-		
-		/// <summary>
-		/// Gets or sets a Transact-SQL statement or stored procedure to insert 
-		/// new records into the data source.
-		/// </summary>
-		public IDbCommand InsertCommand {
-			get { return _insertCommand; }
-			set { _insertCommand = value; }
-		}
-		
-		/// <summary>
-		/// Gets or sets a Transact-SQL statement or stored procedure used to 
-		/// select records in the data source.
-		/// </summary>
-		public IDbCommand SelectCommand {
-			get { return _selectCommand; }
-			set { _selectCommand = value; }
-		}
-		
-		/// <summary>
-		/// Gets or sets a Transact-SQL statement or stored procedure used to 
-		/// update records in the data source.
-		/// </summary>
-		public IDbCommand UpdateCommand {
-			get { return _updateCommand; }
-			set { _updateCommand = value; }
-		}
-
-		#endregion
-
-		#region Protected Methods
-		
-		/// <summary>
-		/// Initializes a new instance of the <see cref="RowUpdatedEventArgs">RowUpdatedEventArgs</see> class.
-		/// </summary>
-		/// <param name="dataRow">The DataRow used to update the data source.</param>
-		/// <param name="command">The IDbCommand executed during the Update.</param>
-		/// <param name="statementType">Whether the command is an UPDATE, INSERT, DELETE, or SELECT statement.</param>
-		/// <param name="tableMapping">A DataTableMapping object.</param>
-		/// <returns></returns>
-		protected override RowUpdatedEventArgs CreateRowUpdatedEvent(DataRow dataRow, IDbCommand command, StatementType statementType, DataTableMapping tableMapping)
-		{
-			return new SqliteRowUpdatedEventArgs (dataRow, command, statementType, tableMapping);
-		}
-		
-		/// <summary>
-		/// 
-		/// </summary>
-		/// <param name="dataRow">The DataRow used to update the data source.</param>
-		/// <param name="command">The IDbCommand executed during the Update.</param>
-		/// <param name="statementType">Whether the command is an UPDATE, INSERT, DELETE, or SELECT statement.</param>
-		/// <param name="tableMapping">A DataTableMapping object.</param>
-		/// <returns></returns>
-		protected override RowUpdatingEventArgs CreateRowUpdatingEvent(DataRow dataRow, IDbCommand command, StatementType statementType, DataTableMapping tableMapping)
-		{
-			return new SqliteRowUpdatingEventArgs(dataRow, command, statementType, tableMapping);
-		}
-		
-		/// <summary>
-		/// Raises the RowUpdated event of a Sqlite data provider.
-		/// </summary>
-		/// <param name="args">A RowUpdatedEventArgs that contains the event data.</param>
-		protected override void OnRowUpdating (RowUpdatingEventArgs args)
-		{
-			if (RowUpdating != null)
-				RowUpdating(this, args);
-		}
-		
-		/// <summary>
-		/// Raises the RowUpdating event of Sqlite data provider.
-		/// </summary>
-		/// <param name="args">An RowUpdatingEventArgs that contains the event data.</param>
-		protected override void OnRowUpdated (RowUpdatedEventArgs args)
-		{
-			if (RowUpdated != null)
-				RowUpdated(this, args);
-		}
-		
-		#endregion
-	}
-}
-#endif
diff --git a/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite/SqliteDataReader.cs b/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite/SqliteDataReader.cs
deleted file mode 100644
index 1dd0e83..0000000
--- a/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite/SqliteDataReader.cs
+++ /dev/null
@@ -1,466 +0,0 @@
-//
-// Mono.Data.Sqlite.SqliteDataReader.cs
-//
-// Provides a means of reading a forward-only stream of rows from a Sqlite 
-// database file.
-//
-// Author(s): Vladimir Vukicevic  <vladimir at pobox.com>
-//            Everaldo Canuto  <everaldo_canuto at yahoo.com.br>
-//	      Joshua Tauberer <tauberer at for.net>
-//
-// Copyright (C) 2002  Vladimir Vukicevic
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-#if !NET_2_0
-using System;
-using System.Runtime.InteropServices;
-using System.Collections;
-using System.Data;
-using System.Data.Common;
-
-namespace Mono.Data.Sqlite
-{
-	public class SqliteDataReader : MarshalByRefObject, IEnumerable, IDataReader, IDisposable, IDataRecord
-	{
-
-		#region Fields
-		
-		private SqliteCommand command;
-		private ArrayList rows;
-		private string[] columns;
-		private Hashtable column_names_sens, column_names_insens;
-		private int current_row;
-		private bool closed;
-		private bool reading;
-		private int records_affected;
-		private string[] decltypes;
-		
-		#endregion
-
-		#region Constructors and destructors
-		
-		internal SqliteDataReader (SqliteCommand cmd, IntPtr pVm, int version)
-		{
-			command = cmd;
-			rows = new ArrayList ();
-			column_names_sens = new Hashtable ();
-			column_names_insens = new Hashtable (CaseInsensitiveHashCodeProvider.DefaultInvariant,
-							     CaseInsensitiveComparer.DefaultInvariant);
-			closed = false;
-			current_row = -1;
-			reading = true;
-			ReadpVm (pVm, version, cmd);
-			ReadingDone ();
-		}
-		
-		#endregion
-
-		#region Properties		
-
-		public int Depth {
-			get { return 0; }
-		}		
-
-		public int FieldCount {
-			get { return columns.Length; }
-		}		
-
-		public object this[string name] {
-			get {
-				return GetValue (GetOrdinal (name));
-			}
-		}
-		
-		public object this[int i] {
-			get { return GetValue (i); }
-		}		
-
-		public bool IsClosed {
-			get { return closed; }
-		}		
-
-		public int RecordsAffected {
-			get { return records_affected; }
-		}
-		
-		#endregion
-
-		#region Internal Methods
-		
-		internal void ReadpVm (IntPtr pVm, int version, SqliteCommand cmd)
-		{
-			int pN;
-			IntPtr pazValue;
-			IntPtr pazColName;
-			bool first = true;
-			
-			int[] declmode = null;
-
-			while (true) {
-				bool hasdata = cmd.ExecuteStatement(pVm, out pN, out pazValue, out pazColName);
-			
-				// For the first row, get the column information
-				if (first) {
-					first = false;
-					
-					if (version == 3) {
-						// A decltype might be null if the type is unknown to sqlite.
-						decltypes = new string[pN];
-						declmode = new int[pN]; // 1 == integer, 2 == datetime
-						for (int i = 0; i < pN; i++) {
-							IntPtr decl = Sqlite.sqlite3_column_decltype16 (pVm, i);
-							if (decl != IntPtr.Zero) {
-								decltypes[i] = Marshal.PtrToStringUni (decl).ToLower(System.Globalization.CultureInfo.InvariantCulture);
-								if (decltypes[i] == "int" || decltypes[i] == "integer")
-									declmode[i] = 1;
-								else if (decltypes[i] == "date" || decltypes[i] == "datetime")
-									declmode[i] = 2;
-							}
-						}
-					}
-					
-					columns = new string[pN];	
-					for (int i = 0; i < pN; i++) {
-						string colName;
-						if (version == 2) {
-							IntPtr fieldPtr = Marshal.ReadIntPtr (pazColName, i*IntPtr.Size);
-							colName = Sqlite.HeapToString (fieldPtr, ((SqliteConnection)cmd.Connection).Encoding);
-						} else {
-							colName = Marshal.PtrToStringUni (Sqlite.sqlite3_column_name16 (pVm, i));
-						}
-						columns[i] = colName;
-						column_names_sens [colName] = i;
-						column_names_insens [colName] = i;
-					}
-				}
-
-				if (!hasdata) break;
-				
-				object[] data_row = new object [pN];
-				for (int i = 0; i < pN; i++) {
-					if (version == 2) {
-						IntPtr fieldPtr = Marshal.ReadIntPtr (pazValue, i*IntPtr.Size);
-						data_row[i] = Sqlite.HeapToString (fieldPtr, ((SqliteConnection)cmd.Connection).Encoding);
-					} else {
-						switch (Sqlite.sqlite3_column_type (pVm, i)) {
-							case 1:
-								long val = Sqlite.sqlite3_column_int64 (pVm, i);
-							
-								// If the column was declared as an 'int' or 'integer', let's play
-								// nice and return an int (version 3 only).
-								if (declmode[i] == 1 && val >= int.MinValue && val <= int.MaxValue)
-									data_row[i] = (int)val;
-								
-								// Or if it was declared a date or datetime, do the reverse of what we
-								// do for DateTime parameters.
-								else if (declmode[i] == 2)
-									data_row[i] = DateTime.FromFileTime(val);
-								
-								else
-									data_row[i] = val;
-									
-								break;
-							case 2:
-								data_row[i] = Sqlite.sqlite3_column_double (pVm, i);
-								break;
-							case 3:
-								data_row[i] = Marshal.PtrToStringUni (Sqlite.sqlite3_column_text16 (pVm, i));
-								
-								// If the column was declared as a 'date' or 'datetime', let's play
-								// nice and return a DateTime (version 3 only).
-								if (declmode[i] == 2)
-									data_row[i] = DateTime.Parse((string)data_row[i]);
-								break;
-							case 4:
-								int blobbytes = Sqlite.sqlite3_column_bytes16 (pVm, i);
-								IntPtr blobptr = Sqlite.sqlite3_column_blob (pVm, i);
-								byte[] blob = new byte[blobbytes];
-								Marshal.Copy (blobptr, blob, 0, blobbytes);
-								data_row[i] = blob;
-								break;
-							case 5:
-								data_row[i] = null;
-								break;
-							default:
-								throw new ApplicationException ("FATAL: Unknown sqlite3_column_type");
-						}
-					}
-				}
-				
-				rows.Add (data_row);
-			}
-		}
-		internal void ReadingDone ()
-		{
-			records_affected = command.NumChanges ();
-			reading = false;
-		}
-		
-		#endregion
-
-		#region  Public Methods		
-
-		public void Close ()
-		{
-			closed = true;
-		}		
-
-		public void Dispose ()
-		{
-			Close ();
-		}
-
-		IEnumerator IEnumerable.GetEnumerator () 
-		{
-			return new DbEnumerator (this);
-		}
-		
-		public DataTable GetSchemaTable () 
-		{
-			DataTable dataTableSchema = new DataTable ();
-			
-			dataTableSchema.Columns.Add ("ColumnName", typeof (String));
-			dataTableSchema.Columns.Add ("ColumnOrdinal", typeof (Int32));
-			dataTableSchema.Columns.Add ("ColumnSize", typeof (Int32));
-			dataTableSchema.Columns.Add ("NumericPrecision", typeof (Int32));
-			dataTableSchema.Columns.Add ("NumericScale", typeof (Int32));
-			dataTableSchema.Columns.Add ("IsUnique", typeof (Boolean));
-			dataTableSchema.Columns.Add ("IsKey", typeof (Boolean));
-			dataTableSchema.Columns.Add ("BaseCatalogName", typeof (String));
-			dataTableSchema.Columns.Add ("BaseColumnName", typeof (String));
-			dataTableSchema.Columns.Add ("BaseSchemaName", typeof (String));
-			dataTableSchema.Columns.Add ("BaseTableName", typeof (String));
-			dataTableSchema.Columns.Add ("DataType", typeof(Type));
-			dataTableSchema.Columns.Add ("AllowDBNull", typeof (Boolean));
-			dataTableSchema.Columns.Add ("ProviderType", typeof (Int32));
-			dataTableSchema.Columns.Add ("IsAliased", typeof (Boolean));
-			dataTableSchema.Columns.Add ("IsExpression", typeof (Boolean));
-			dataTableSchema.Columns.Add ("IsIdentity", typeof (Boolean));
-			dataTableSchema.Columns.Add ("IsAutoIncrement", typeof (Boolean));
-			dataTableSchema.Columns.Add ("IsRowVersion", typeof (Boolean));
-			dataTableSchema.Columns.Add ("IsHidden", typeof (Boolean));
-			dataTableSchema.Columns.Add ("IsLong", typeof (Boolean));
-			dataTableSchema.Columns.Add ("IsReadOnly", typeof (Boolean));
-			
-			dataTableSchema.BeginLoadData();
-			for (int i = 0; i < this.FieldCount; i += 1 ) {
-				
-				DataRow schemaRow = dataTableSchema.NewRow ();
-				
-				schemaRow["ColumnName"] = columns[i];
-				schemaRow["ColumnOrdinal"] = i;
-				schemaRow["ColumnSize"] = 0;
-				schemaRow["NumericPrecision"] = 0;
-				schemaRow["NumericScale"] = 0;
-				schemaRow["IsUnique"] = false;
-				schemaRow["IsKey"] = false;
-				schemaRow["BaseCatalogName"] = "";
-				schemaRow["BaseColumnName"] = columns[i];
-				schemaRow["BaseSchemaName"] = "";
-				schemaRow["BaseTableName"] = "";
-				schemaRow["DataType"] = typeof(string);
-				schemaRow["AllowDBNull"] = true;
-				schemaRow["ProviderType"] = 0;
-				schemaRow["IsAliased"] = false;
-				schemaRow["IsExpression"] = false;
-				schemaRow["IsIdentity"] = false;
-				schemaRow["IsAutoIncrement"] = false;
-				schemaRow["IsRowVersion"] = false;
-				schemaRow["IsHidden"] = false;
-				schemaRow["IsLong"] = false;
-				schemaRow["IsReadOnly"] = false;
-				
-				dataTableSchema.Rows.Add (schemaRow);
-				schemaRow.AcceptChanges();
-			}
-			dataTableSchema.EndLoadData();
-			
-			return dataTableSchema;
-		}
-		
-		public bool NextResult ()
-		{
-			current_row++;
-			
-			return (current_row < rows.Count);
-		}
-		
-		public bool Read ()
-		{
-			return NextResult ();
-		}
-
-		#endregion
-		
-		#region IDataRecord getters
-		
-		public bool GetBoolean (int i)
-		{
-			return Convert.ToBoolean (((object[]) rows[current_row])[i]);
-		}
-		
-		public byte GetByte (int i)
-		{
-			return Convert.ToByte (((object[]) rows[current_row])[i]);
-		}
-		
-		public long GetBytes (int i, long fieldOffset, byte[] buffer, int bufferOffset, int length)
-		{
-			byte[] data = (byte[])(((object[]) rows[current_row])[i]);
-			if (buffer != null)
-				Array.Copy (data, fieldOffset, buffer, bufferOffset, length);
-			return data.LongLength - fieldOffset;
-		}
-		
-		public char GetChar (int i)
-		{
-			return Convert.ToChar (((object[]) rows[current_row])[i]);
-		}
-		
-		public long GetChars (int i, long fieldOffset, char[] buffer, int bufferOffset, int length)
-		{
-			char[] data = (char[])(((object[]) rows[current_row])[i]);
-			if (buffer != null)
-				Array.Copy (data, fieldOffset, buffer, bufferOffset, length);
-			return data.LongLength - fieldOffset;
-		}
-		
-		public IDataReader GetData (int i)
-		{
-			return ((IDataReader) this [i]);
-		}
-
-		public string GetDataTypeName (int i)
-		{
-			if (decltypes != null && decltypes[i] != null)
-				return decltypes[i];
-			return "text"; // SQL Lite data type
-		}
-		
-		public DateTime GetDateTime (int i)
-		{
-			return Convert.ToDateTime (((object[]) rows[current_row])[i]);
-		}
-		
-		public decimal GetDecimal (int i)
-		{
-			return Convert.ToDecimal (((object[]) rows[current_row])[i]);
-		}
-		
-		public double GetDouble (int i)
-		{
-			return Convert.ToDouble (((object[]) rows[current_row])[i]);
-		}
-		
-		public Type GetFieldType (int i)
-		{
-			int row = current_row;
-			if (row == -1 && rows.Count == 0) return typeof(string);
-			if (row == -1) row = 0;
-			object element = ((object[]) rows[row])[i];
-			if (element != null)
-				return element.GetType();
-			else
-				return typeof (string);
-
-			// Note that the return value isn't guaranteed to
-			// be the same as the rows are read if different
-			// types of information are stored in the column.
-		}
-		
-		public float GetFloat (int i)
-		{
-			return Convert.ToSingle (((object[]) rows[current_row])[i]);
-		}
-		
-		public Guid GetGuid (int i)
-		{
-			object value = GetValue (i);
-			if (!(value is Guid)) {
-				if (value is DBNull)
-					throw new SqliteExecutionException ("Column value must not be null");
-				throw new InvalidCastException ("Type is " + value.GetType ().ToString ());
-			}
-			return ((Guid) value);
-		}
-		
-		public short GetInt16 (int i)
-		{
-			return Convert.ToInt16 (((object[]) rows[current_row])[i]);
-		}
-		
-		public int GetInt32 (int i)
-		{
-			return Convert.ToInt32 (((object[]) rows[current_row])[i]);
-		}
-		
-		public long GetInt64 (int i)
-		{
-			return Convert.ToInt64 (((object[]) rows[current_row])[i]);
-		}
-		
-		public string GetName (int i)
-		{
-			return columns[i];
-		}
-		
-		public int GetOrdinal (string name)
-		{
-			object v = column_names_sens[name];
-			if (v == null)
-				v = column_names_insens[name];
-			if (v == null)
-				throw new ArgumentException("Column does not exist.");
-			return (int) v;
-		}
-		
-		public string GetString (int i)
-		{
-			return (((object[]) rows[current_row])[i]).ToString();
-		}
-		
-		public object GetValue (int i)
-		{
-			return ((object[]) rows[current_row])[i];
-		}
-		
-		public int GetValues (object[] values)
-		{
-			int num_to_fill = System.Math.Min (values.Length, columns.Length);
-			for (int i = 0; i < num_to_fill; i++) {
-				if (((object[]) rows[current_row])[i] != null) {
-					values[i] = ((object[]) rows[current_row])[i];
-				} else {
-					values[i] = DBNull.Value;
-				}
-			}
-			return num_to_fill;
-		}
-		
-		public bool IsDBNull (int i)
-		{
-			return (((object[]) rows[current_row])[i] == null);
-		}
-
-		#endregion
-	}
-}
-#endif
diff --git a/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite/SqliteExceptions.cs b/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite/SqliteExceptions.cs
deleted file mode 100644
index de15b0c..0000000
--- a/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite/SqliteExceptions.cs
+++ /dev/null
@@ -1,56 +0,0 @@
-using System;
-using System.Data;
-
-namespace Mono.Data.Sqlite 
-{
-	// This exception is raised whenever a statement cannot be compiled.
-	public class SqliteSyntaxException : ApplicationException
-	{
-		public SqliteSyntaxException() : this("An error occurred compiling the Sqlite command.")
-		{
-		}
-		
-		public SqliteSyntaxException(string message) : base(message)
-		{
-		}
-
-		public SqliteSyntaxException(string message, Exception cause) : base(message, cause)
-		{
-		}
-	}
-
-	// This exception is raised whenever the execution
-	// of a statement fails.
-	public class SqliteExecutionException : ApplicationException
-	{
-		public SqliteExecutionException() : this("An error occurred executing the Sqlite command.")
-		{
-		}
-		
-		public SqliteExecutionException(string message) : base(message)
-		{
-		}
-
-		public SqliteExecutionException(string message, Exception cause) : base(message, cause)
-		{
-		}
-	}
-
-	// This exception is raised whenever Sqlite says it
-	// cannot run a command because something is busy.
-	public class SqliteBusyException : SqliteExecutionException
-	{
-		public SqliteBusyException() : this("The database is locked.")
-		{
-		}
-		
-		public SqliteBusyException(string message) : base(message)
-		{
-		}
-
-		public SqliteBusyException(string message, Exception cause) : base(message, cause)
-		{
-		}
-	}
-
-}
\ No newline at end of file
diff --git a/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite/SqliteParameter.cs b/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite/SqliteParameter.cs
deleted file mode 100644
index 3e464b3..0000000
--- a/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite/SqliteParameter.cs
+++ /dev/null
@@ -1,157 +0,0 @@
-//
-// Mono.Data.Sqlite.SqliteParameter.cs
-//
-// Represents a parameter to a SqliteCommand, and optionally, its mapping to 
-// DataSet columns.
-//
-// Author(s): Vladimir Vukicevic  <vladimir at pobox.com>
-//            Everaldo Canuto  <everaldo_canuto at yahoo.com.br>
-//
-// Copyright (C) 2002  Vladimir Vukicevic
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-#if !NET_2_0
-using System;
-using System.Data;
-
-namespace Mono.Data.Sqlite
-{
-	public class SqliteParameter : IDbDataParameter
-	{
-
-		#region Fields
-		
-		private string name;
-		private DbType type;
-		private DbType originalType;
-		private bool typeSet;
-		private string source_column;
-		private ParameterDirection direction;
-		private DataRowVersion row_version;
-		private object param_value;
-		private byte precision;
-		private byte scale;
-		private int size;
-		private bool isNullable;
-		private bool sourceColumnNullMapping;
-		
-		#endregion
-
-		#region Constructors and destructors
-		
-		public SqliteParameter ()
-		{
-			type = DbType.String;
-			direction = ParameterDirection.Input;
-			isNullable = true;
-		}
-		
-		public SqliteParameter (string name, DbType type)
-		{
-			this.name = name;
-			this.type = type;
-			isNullable = true;
-		}
-		
-		public SqliteParameter (string name, object value)
-		{
-			this.name = name;
-			type = DbType.String;
-			param_value = value;
-			direction = ParameterDirection.Input;
-			isNullable = true;
-		}
-		
-		public SqliteParameter (string name, DbType type, int size) : this (name, type)
-		{
-			this.size = size;
-		}
-		
-		public SqliteParameter (string name, DbType type, int size, string src_column) : this (name ,type, size)
-		{
-			source_column = src_column;
-		}
-		
-		#endregion
-
-		#region Properties
-		
-		public DbType DbType {
-			get { return type; }
-			set {
-				if (!typeSet) {
-					originalType = type;
-					typeSet = true;
-				}
-				type = value;
-				if (!typeSet)
-					originalType = type;
-			}
-		}
-	
-		public ParameterDirection Direction {
-			get { return direction; }
-			set { direction = value; }
-		}
-	
-		public bool IsNullable {
-			get { return isNullable; }
-		}
-
-		public string ParameterName {
-			get { return name; }
-			set { name = value; }
-		}
-	
-		public byte Precision {
-			get { return precision; }
-			set { precision = value; }
-		}
-		
-		public byte Scale {
-			get { return scale; }
-			set { scale = value; }
-		}
-
-		public int Size {
-			get { return size; }
-			set { size = value; }
-		}
-		
-		public string SourceColumn {
-			get { return source_column; }
-			set { source_column = value; }
-		}
-
-		public DataRowVersion SourceVersion {
-			get { return row_version; }
-			set { row_version = value; }
-		}
-		
-		public object Value {
-			get { return param_value; }
-			set { param_value = value; }
-		}
-		
-		#endregion
-	}
-}
-#endif
diff --git a/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite/SqliteParameterCollection.cs b/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite/SqliteParameterCollection.cs
deleted file mode 100644
index a1b069e..0000000
--- a/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite/SqliteParameterCollection.cs
+++ /dev/null
@@ -1,320 +0,0 @@
-//
-// Mono.Data.Sqlite.SqliteParameterCollection.cs
-//
-// Represents a collection of parameters relevant to a SqliteCommand as well as 
-// their respective mappings to columns in a DataSet.
-//
-//Author(s):		Vladimir Vukicevic  <vladimir at pobox.com>
-//			Everaldo Canuto  <everaldo_canuto at yahoo.com.br>
-//			Chris Turchin <chris at turchin.net>
-//			Jeroen Zwartepoorte <jeroen at xs4all.nl>
-//			Thomas Zoechling <thomas.zoechling at gmx.at>
-//
-// Copyright (C) 2002  Vladimir Vukicevic
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-#if !NET_2_0
-using System;
-using System.Data;
-using System.Collections;
-
-namespace Mono.Data.Sqlite
-{
-	public class SqliteParameterCollection : IDataParameterCollection, IList
-	{
-	
-		#region Fields
-		
-		ArrayList numeric_param_list = new ArrayList();
-		Hashtable named_param_hash = new Hashtable();
-		
-		#endregion
-
-		#region Private Methods
-
-		private void CheckSqliteParam (object value)
-		{
-			if (!(value is SqliteParameter))
-				throw new InvalidCastException ("Can only use SqliteParameter objects");
-			SqliteParameter sqlp = value as SqliteParameter;
-			if (sqlp.ParameterName == null || sqlp.ParameterName.Length == 0)
-				sqlp.ParameterName = this.GenerateParameterName();
-                 }
-
-		private void RecreateNamedHash ()
-		{
-			for (int i = 0; i < numeric_param_list.Count; i++) 
-			{
-				named_param_hash[((SqliteParameter) numeric_param_list[i]).ParameterName] = i;
-			}
-		}
-
-		//FIXME: if the user is calling Insert at various locations with unnamed parameters, this is not going to work....
-		private string GenerateParameterName()
-		{
-			int		index	= this.Count + 1;
-			string	name	= String.Empty;
-
-			while (index > 0)
-			{
-				name = ":" + index.ToString();
-					if (this.IndexOf(name) == -1)
-					index = -1;
-				else
-				index++;
-			}
-			return name;
-		}
-
-		#endregion
-
-		#region Properties
-		
-		object IList.this[int index] {
-			get 
-			{
-				return this[index];
-			}
-			set 
-			{
-				CheckSqliteParam (value);
-				this[index] = (SqliteParameter) value;
-			}
-		}
-
-		object IDataParameterCollection.this[string parameterName] {
-			get 
-			{
-				return this[parameterName];
-			}
-			set 
-			{
-				CheckSqliteParam (value);
-				this[parameterName] = (SqliteParameter) value;
-			}
-		}
-		
-		private bool isPrefixed (string parameterName)
-		{
-			return parameterName.Length > 1 && (parameterName[0] == ':' || parameterName[0] == '$');
-		}
-
-		SqliteParameter GetParameter (int parameterIndex)
-		{
-			if (this.Count >= parameterIndex+1)
-				return (SqliteParameter) numeric_param_list[parameterIndex];
-			else          
-				throw new IndexOutOfRangeException("The specified parameter index does not exist: " + parameterIndex.ToString());
-		}
-
-		SqliteParameter GetParameter (string parameterName)
-		{
-			if (this.Contains(parameterName))
-				return this[(int) named_param_hash[parameterName]];
-			else if (isPrefixed(parameterName) && this.Contains(parameterName.Substring(1)))
-				return this[(int) named_param_hash[parameterName.Substring(1)]];
-			else
-				throw new IndexOutOfRangeException("The specified name does not exist: " + parameterName);
-		}
-
-		void SetParameter (int parameterIndex, SqliteParameter parameter)
-		{
-			if (this.Count >= parameterIndex+1)
-				numeric_param_list[parameterIndex] = parameter;
-			else          
-				throw new IndexOutOfRangeException("The specified parameter index does not exist: " + parameterIndex.ToString());
-		}
-
-		void SetParameter (string parameterName, SqliteParameter parameter)
-		{
-			if (this.Contains(parameterName))
-				numeric_param_list[(int) named_param_hash[parameterName]] = parameter;
-			else if (parameterName.Length > 1 && this.Contains(parameterName.Substring(1)))
-				numeric_param_list[(int) named_param_hash[parameterName.Substring(1)]] = parameter;
-			else
-				throw new IndexOutOfRangeException("The specified name does not exist: " + parameterName);
-		}
-
-		public SqliteParameter this[string parameterName] 
-		{
-			get { return GetParameter (parameterName); }
-			set { SetParameter (parameterName, value); }
-		}
-
-		public SqliteParameter this[int parameterIndex]
-		{
-			get { return GetParameter (parameterIndex); }
-			set { SetParameter (parameterIndex, value); }
-		}
-
-		public int Count {
-			get { return this.numeric_param_list.Count; }
-		}
-
-		bool IList.IsFixedSize
-		{
-			get
-			{
-				return this.numeric_param_list.IsFixedSize;
-			}
-		}
-
-		bool IList.IsReadOnly {
-			get { return this.numeric_param_list.IsReadOnly; }
-		}
-
-
-		bool ICollection.IsSynchronized {
-			get { return this.numeric_param_list.IsSynchronized; }
-		}		
-
-		object ICollection.SyncRoot {
-			get { return this.numeric_param_list.SyncRoot; }
-		}
-
-		#endregion
-
-		#region Public Methods
-
-		public int Add (object value)
-		{
-			CheckSqliteParam (value);
-			SqliteParameter sqlp = value as SqliteParameter;
-			if (named_param_hash.Contains (sqlp.ParameterName))
-				throw new DuplicateNameException ("Parameter collection already contains the a SqliteParameter with the given ParameterName.");
-			named_param_hash[sqlp.ParameterName] = numeric_param_list.Add(value);
-				return (int) named_param_hash[sqlp.ParameterName];
-		}
-
-		public SqliteParameter Add (SqliteParameter param)
-		{
-			Add ((object)param);
-			return param;
-		}
-		
-		public SqliteParameter Add (string name, object value)
-		{
-			return Add (new SqliteParameter (name, value));
-		}
-		
-		public SqliteParameter Add (string name, DbType type)
-		{
-			return Add (new SqliteParameter (name, type));
-		}
-		
-		public void Clear ()
-		{
-			numeric_param_list.Clear ();
-			named_param_hash.Clear ();
-		}
-	
-		public void CopyTo (Array array, int index)
-		{
-			this.numeric_param_list.CopyTo(array, index);
-		}
-		
-		bool IList.Contains (object value)
-		{
-			return Contains ((SqliteParameter) value);
-		}
-		
-		public bool Contains (string parameterName)
-		{
-			return named_param_hash.Contains (parameterName);
-		}
-		
-		public bool Contains (SqliteParameter param)
-		{
-			return Contains (param.ParameterName);
-		}
-		
-		public IEnumerator GetEnumerator ()
-		{
-			return this.numeric_param_list.GetEnumerator();
-		}
-		
-		int IList.IndexOf (object param)
-		{
-			return IndexOf ((SqliteParameter) param);
-		}
-		
-		public int IndexOf (string parameterName)
-		{
-			if (isPrefixed (parameterName)){
-				string sub = parameterName.Substring (1);
-				if (named_param_hash.Contains(sub))
-					return (int) named_param_hash [sub];
-			}
-			if (named_param_hash.Contains(parameterName))
-				return (int) named_param_hash[parameterName];
-			else 
-				return -1;
-		}
-		
-		public int IndexOf (SqliteParameter param)
-		{
-			return IndexOf (param.ParameterName);
-		}
-		
-		public void Insert (int index, object value)
-		{
-			CheckSqliteParam (value);
-			if (numeric_param_list.Count == index) 
-			{
-				Add (value);
-				return;
-			}
-			
-			numeric_param_list.Insert (index, value);
-			RecreateNamedHash ();
-		}
-		
-		public void Remove (object value)
-		{
-			CheckSqliteParam (value);
-			RemoveAt ((SqliteParameter) value);
-		}
-		
-		public void RemoveAt (int index)
-		{
-			RemoveAt (((SqliteParameter) numeric_param_list[index]).ParameterName);
-		}
-		
-		public void RemoveAt (string parameterName)
-		{
-			if (!named_param_hash.Contains (parameterName))
-				throw new ApplicationException ("Parameter " + parameterName + " not found");
-			
-			numeric_param_list.RemoveAt ((int) named_param_hash[parameterName]);
-			named_param_hash.Remove (parameterName);
-			
-			RecreateNamedHash ();
-		}
-		
-		public void RemoveAt (SqliteParameter param)
-		{
-			RemoveAt (param.ParameterName);
-		}
-
-		#endregion
-	}
-}
-#endif
diff --git a/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite/SqliteRowUpdatedEventArgs.cs b/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite/SqliteRowUpdatedEventArgs.cs
deleted file mode 100644
index 8d822c4..0000000
--- a/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite/SqliteRowUpdatedEventArgs.cs
+++ /dev/null
@@ -1,48 +0,0 @@
-//
-// Mono.Data.Sqlite.SqliteRowUpdatedEventArgs.cs
-//
-// Provides data for the RowUpdated event.
-//
-// Author(s): Everaldo Canuto  <everaldo_canuto at yahoo.com.br>
-//
-// Copyright (C) 2004  Everaldo Canuto
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Data;
-using System.Data.Common;
-
-namespace Mono.Data.Sqlite
-{
-	/// <summary>
-	/// Provides data for the <see cref="SqliteDataAdapter.RowUpdated"/> event.
-	/// </summary>
-	public sealed class SqliteRowUpdatedEventArgs : RowUpdatedEventArgs
-	{
-		/// <summary>
-		/// Initializes a new instance of the <see cref="SqliteRowUpdatedEventArgs"/> class.
-		/// </summary>
-		public SqliteRowUpdatedEventArgs(DataRow row, IDbCommand command, StatementType statementType, DataTableMapping tableMapping) : base(row, command, statementType, tableMapping)
-		{
-		}
-	}
-}
diff --git a/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite/SqliteRowUpdatedEventHandler.cs b/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite/SqliteRowUpdatedEventHandler.cs
deleted file mode 100644
index 89d68de..0000000
--- a/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite/SqliteRowUpdatedEventHandler.cs
+++ /dev/null
@@ -1,42 +0,0 @@
-//
-// Mono.Data.Sqlite.SqliteRowUpdatedEventHandler.cs
-//
-// Represents the method that will handle the RowUpdated event of a 
-// SqliteDataAdapter.
-//
-// Author(s): Everaldo Canuto  <everaldo_canuto at yahoo.com.br>
-//
-// Copyright (C) 2004  Everaldo Canuto
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Data;
-using System.Data.Common;
-
-namespace Mono.Data.Sqlite
-{
-	/// <summary>
-	/// Represents the method that will handle the <see cref="SqliteDataAdapter.RowUpdated"/> event 
-	/// of a <see cref="SqliteDataAdapter"/>.
-	/// </summary>
-	public delegate void SqliteRowUpdatedEventHandler(Object sender, RowUpdatedEventArgs e);
-}
diff --git a/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite/SqliteRowUpdatingEventArgs.cs b/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite/SqliteRowUpdatingEventArgs.cs
deleted file mode 100644
index 0cc610b..0000000
--- a/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite/SqliteRowUpdatingEventArgs.cs
+++ /dev/null
@@ -1,48 +0,0 @@
-//
-// Mono.Data.Sqlite.SqliteRowUpdatingEventArgs.cs
-//
-// Provides data for the RowUpdating event.
-//
-// Author(s): Everaldo Canuto  <everaldo_canuto at yahoo.com.br>
-//
-// Copyright (C) 2004  Everaldo Canuto
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Data;
-using System.Data.Common;
-
-namespace Mono.Data.Sqlite
-{
-	/// <summary>
-	/// Provides data for the <see cref="SqliteDataAdapter.RowUpdating"/> event. 
-	/// </summary>
-	public sealed class SqliteRowUpdatingEventArgs : RowUpdatingEventArgs
-	{
-		/// <summary>
-		/// Initializes a new instance of the <see cref="SqliteRowUpdatingEventArgs"/> class.
-		/// </summary>
-		public SqliteRowUpdatingEventArgs(DataRow row, IDbCommand command, StatementType statementType, DataTableMapping tableMapping) : base(row, command, statementType, tableMapping)
-		{
-		}
-	}
-}
diff --git a/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite/SqliteRowUpdatingEventHandler.cs b/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite/SqliteRowUpdatingEventHandler.cs
deleted file mode 100644
index 5c24e32..0000000
--- a/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite/SqliteRowUpdatingEventHandler.cs
+++ /dev/null
@@ -1,42 +0,0 @@
-//
-// Mono.Data.Sqlite.SqliteRowUpdatingEventHandler.cs
-//
-// Represents the method that will handle the RowUpdating event of a 
-// SqliteDataAdapter.
-//
-// Author(s): Everaldo Canuto  <everaldo_canuto at yahoo.com.br>
-//
-// Copyright (C) 2004  Everaldo Canuto
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Data;
-using System.Data.Common;
-
-namespace Mono.Data.Sqlite
-{
-	/// <summary>
-	/// Represents the method that will handle the <see cref="SqliteDataAdapter.RowUpdating"/> event 
-	/// of a <see cref="SqliteDataAdapter"/>.
-	/// </summary>
-	public delegate void SqliteRowUpdatingEventHandler(Object sender, RowUpdatingEventArgs e);
-}
diff --git a/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite/SqliteTransaction.cs b/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite/SqliteTransaction.cs
deleted file mode 100644
index 5e6ef34..0000000
--- a/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite/SqliteTransaction.cs
+++ /dev/null
@@ -1,116 +0,0 @@
-//
-// Mono.Data.Sqlite.SqliteTransaction.cs
-//
-// Mono.Data.Sqlite data access components for .Net
-// Derived from ByteFX.Data
-// With permission from Reggie Burnett to relicense under MIT/X11
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-#if !NET_2_0
-using System;
-using System.Data;
-
-namespace Mono.Data.Sqlite
-{
-	public sealed class SqliteTransaction : IDbTransaction
-	{
-	
-		#region Fields
-		
-		private IsolationLevel _isolationLevel;
-		private SqliteConnection _connection;
-		private bool _open;
-		
-		#endregion
-
-		#region Contructors and destructors
-		
-		internal SqliteTransaction() 
-		{
-			_open = true;
-		}
-
-		void System.IDisposable.Dispose()
-		{
-		}
-
-		#endregion
-
-		#region Public Properties
-
-		public IDbConnection Connection
-		{
-			get { return _connection; } 
-			set { _connection = (SqliteConnection)value; }
-		}
-
-		public IsolationLevel IsolationLevel
-		{
-			get { return _isolationLevel; }
-			set { _isolationLevel = value; }
-		}
-
-		#endregion
-		
-		#region Public Methods
-
-		public void Commit()
-		{
-			if (_connection == null || _connection.State != ConnectionState.Open)
-				throw new InvalidOperationException("Connection must be valid and open to commit transaction");
-			if (!_open)
-				throw new InvalidOperationException("Transaction has already been committed or is not pending");
-			try 
-			{
-				SqliteCommand cmd = (SqliteCommand)_connection.CreateCommand();
-				cmd.CommandText = "COMMIT";
-				cmd.ExecuteNonQuery();
-				_open = false;
-			}
-			catch (Exception ex) 
-			{
-				throw ex;
-			}
-		}
-
-		public void Rollback()
-		{
-			if (_connection == null || _connection.State != ConnectionState.Open)
-				throw new InvalidOperationException("Connection must be valid and open to commit transaction");
-			if (!_open)
-				throw new InvalidOperationException("Transaction has already been rolled back or is not pending");
-			try 
-			{
-				SqliteCommand cmd = (SqliteCommand)_connection.CreateCommand();
-				cmd.CommandText = "ROLLBACK";
-				cmd.ExecuteNonQuery();
-				_open = false;
-			}
-			catch (Exception ex) 
-			{
-				throw ex;
-			}
-		}
-		
-		#endregion
-	}
-}
-#endif
\ No newline at end of file
diff --git a/mcs/class/Mono.Data.Sqlite/net_1_1_Mono.Data.Sqlite.dll.sources b/mcs/class/Mono.Data.Sqlite/net_1_1_Mono.Data.Sqlite.dll.sources
deleted file mode 100644
index 1c03178..0000000
--- a/mcs/class/Mono.Data.Sqlite/net_1_1_Mono.Data.Sqlite.dll.sources
+++ /dev/null
@@ -1,17 +0,0 @@
-Assembly/AssemblyInfo_1.1.cs
-../../build/common/Consts.cs
-../../build/common/Locale.cs
-../../build/common/MonoTODOAttribute.cs
-Mono.Data.Sqlite/SqliteCommand.cs
-Mono.Data.Sqlite/SqliteConnection.cs
-Mono.Data.Sqlite/Sqlite.cs
-Mono.Data.Sqlite/SqliteDataAdapter.cs
-Mono.Data.Sqlite/SqliteDataReader.cs
-Mono.Data.Sqlite/SqliteExceptions.cs
-Mono.Data.Sqlite/SqliteParameterCollection.cs
-Mono.Data.Sqlite/SqliteParameter.cs
-Mono.Data.Sqlite/SqliteRowUpdatedEventArgs.cs
-Mono.Data.Sqlite/SqliteRowUpdatedEventHandler.cs
-Mono.Data.Sqlite/SqliteRowUpdatingEventArgs.cs
-Mono.Data.Sqlite/SqliteRowUpdatingEventHandler.cs
-Mono.Data.Sqlite/SqliteTransaction.cs
diff --git a/mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/ChangeLog b/mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/ChangeLog
index 9dac79c..77275fa 100644
--- a/mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/ChangeLog
+++ b/mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/ChangeLog
@@ -1,3 +1,8 @@
+2010-09-29  Veerapuram Varadhan  <vvaradhan at novell.com>
+
+	** Fixes failed test for smallmoney
+	* Tds70.cs (WriteParameterInfo): Round money values to 4 decimals, for smallmoney too.
+	
 2010-07-13  Veerapuram Varadhan  <vvaradhan at novell.com>
 
 	** Fixes #613845
diff --git a/mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/Tds70.cs b/mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/Tds70.cs
index 3bba914..08b29f6 100644
--- a/mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/Tds70.cs
+++ b/mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/Tds70.cs
@@ -645,7 +645,8 @@ namespace Mono.Data.Tds.Protocol
 					break;
 				}
 				case "smallmoney": {
-					Decimal val = (decimal) param.Value;
+					// 4 == SqlMoney::MoneyFormat.NumberDecimalDigits
+					Decimal val = Decimal.Round ((decimal) param.Value, 4);
 					if (val < SMALLMONEY_MIN || val > SMALLMONEY_MAX)
 						throw new OverflowException (string.Format (
 							CultureInfo.InvariantCulture,
diff --git a/mcs/class/Mono.Debugger.Soft/ChangeLog b/mcs/class/Mono.Debugger.Soft/ChangeLog
index d539839..b9ba549 100644
--- a/mcs/class/Mono.Debugger.Soft/ChangeLog
+++ b/mcs/class/Mono.Debugger.Soft/ChangeLog
@@ -1,3 +1,20 @@
+2011-01-04  Zoltan Varga  <vargaz at gmail.com>
+
+	Add AssemblyLoadEventRequest () type to the sdb api, and use it to
+	fix the test suite.
+
+2010-12-26  Zoltan Varga  <vargaz at gmail.com>
+
+	Update sdb API documentation.
+
+2010-12-16  Martin Baulig  <martin at novell.com>
+
+	Improve support for exception filters.
+
+2010-10-25  Zoltan Varga  <vargaz at gmail.com>
+
+	Add a test for #632224. Fix dtest-app.exe dependencies.
+
 2010-06-15  Zoltan Varga  <vargaz at gmail.com>
 
 	* *: Add testing infrastructure by moving the tests from mono/tests.
diff --git a/mcs/class/Mono.Debugger.Soft/ChangeLog b/mcs/class/Mono.Debugger.Soft/ChangeLog.old
similarity index 100%
copy from mcs/class/Mono.Debugger.Soft/ChangeLog
copy to mcs/class/Mono.Debugger.Soft/ChangeLog.old
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/AbsentInformationException.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/AbsentInformationException.xml
new file mode 100644
index 0000000..8c3a000
--- /dev/null
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/AbsentInformationException.xml
@@ -0,0 +1,31 @@
+<Type Name="AbsentInformationException" FullName="Mono.Debugger.Soft.AbsentInformationException">
+  <TypeSignature Language="C#" Value="public class AbsentInformationException : Exception" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit AbsentInformationException extends System.Exception" />
+  <AssemblyInfo>
+    <AssemblyName>Mono.Debugger.Soft</AssemblyName>
+    <AssemblyVersion>0.0.0.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>System.Exception</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public AbsentInformationException ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+      <MemberType>Constructor</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <Parameters />
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/AppDomainCreateEvent.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/AppDomainCreateEvent.xml
new file mode 100644
index 0000000..68c0582
--- /dev/null
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/AppDomainCreateEvent.xml
@@ -0,0 +1,34 @@
+<Type Name="AppDomainCreateEvent" FullName="Mono.Debugger.Soft.AppDomainCreateEvent">
+  <TypeSignature Language="C#" Value="public class AppDomainCreateEvent : Mono.Debugger.Soft.Event" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit AppDomainCreateEvent extends Mono.Debugger.Soft.Event" />
+  <AssemblyInfo>
+    <AssemblyName>Mono.Debugger.Soft</AssemblyName>
+    <AssemblyVersion>0.0.0.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>Mono.Debugger.Soft.Event</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Members>
+    <Member MemberName="Domain">
+      <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.AppDomainMirror Domain { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.AppDomainMirror Domain" />
+      <MemberType>Property</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Debugger.Soft.AppDomainMirror</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/AppDomainMirror.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/AppDomainMirror.xml
index 069f94f..8cac528 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/AppDomainMirror.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/AppDomainMirror.xml
@@ -1,5 +1,6 @@
 <Type Name="AppDomainMirror" FullName="Mono.Debugger.Soft.AppDomainMirror">
   <TypeSignature Language="C#" Value="public class AppDomainMirror : Mono.Debugger.Soft.Mirror" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit AppDomainMirror extends Mono.Debugger.Soft.Mirror" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -15,6 +16,7 @@
   <Members>
     <Member MemberName="Corlib">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.AssemblyMirror Corlib { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.AssemblyMirror Corlib" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -28,8 +30,29 @@
         <remarks>To be added.</remarks>
       </Docs>
     </Member>
+    <Member MemberName="CreateBoxedValue">
+      <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.ObjectMirror CreateBoxedValue (Mono.Debugger.Soft.Value value);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.ObjectMirror CreateBoxedValue(class Mono.Debugger.Soft.Value value) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Debugger.Soft.ObjectMirror</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="value" Type="Mono.Debugger.Soft.Value" />
+      </Parameters>
+      <Docs>
+        <param name="value">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
     <Member MemberName="CreateString">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.StringMirror CreateString (string s);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.StringMirror CreateString(string s) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -49,6 +72,7 @@
     </Member>
     <Member MemberName="FriendlyName">
       <MemberSignature Language="C#" Value="public string FriendlyName { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance string FriendlyName" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -64,6 +88,7 @@
     </Member>
     <Member MemberName="GetAssemblies">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.AssemblyMirror[] GetAssemblies ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.AssemblyMirror[] GetAssemblies() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -78,8 +103,29 @@
         <remarks>To be added.</remarks>
       </Docs>
     </Member>
+    <Member MemberName="GetCorrespondingType">
+      <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.TypeMirror GetCorrespondingType (Type t);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.TypeMirror GetCorrespondingType(class System.Type t) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Debugger.Soft.TypeMirror</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="t" Type="System.Type" />
+      </Parameters>
+      <Docs>
+        <param name="t">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
     <Member MemberName="GetEntryAssembly">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.AssemblyMirror GetEntryAssembly ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.AssemblyMirror GetEntryAssembly() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/AppDomainUnloadEvent.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/AppDomainUnloadEvent.xml
new file mode 100644
index 0000000..1468a7f
--- /dev/null
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/AppDomainUnloadEvent.xml
@@ -0,0 +1,34 @@
+<Type Name="AppDomainUnloadEvent" FullName="Mono.Debugger.Soft.AppDomainUnloadEvent">
+  <TypeSignature Language="C#" Value="public class AppDomainUnloadEvent : Mono.Debugger.Soft.Event" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit AppDomainUnloadEvent extends Mono.Debugger.Soft.Event" />
+  <AssemblyInfo>
+    <AssemblyName>Mono.Debugger.Soft</AssemblyName>
+    <AssemblyVersion>0.0.0.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>Mono.Debugger.Soft.Event</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Members>
+    <Member MemberName="Domain">
+      <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.AppDomainMirror Domain { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.AppDomainMirror Domain" />
+      <MemberType>Property</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Debugger.Soft.AppDomainMirror</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/ArrayMirror.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/ArrayMirror.xml
index 4a903b1..8bcdb4f 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/ArrayMirror.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/ArrayMirror.xml
@@ -1,5 +1,6 @@
 <Type Name="ArrayMirror" FullName="Mono.Debugger.Soft.ArrayMirror">
   <TypeSignature Language="C#" Value="public class ArrayMirror : Mono.Debugger.Soft.ObjectMirror, System.Collections.IEnumerable" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit ArrayMirror extends Mono.Debugger.Soft.ObjectMirror implements class System.Collections.IEnumerable" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -20,6 +21,7 @@
   <Members>
     <Member MemberName="GetLength">
       <MemberSignature Language="C#" Value="public int GetLength (int dimension);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance int32 GetLength(int32 dimension) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -39,6 +41,7 @@
     </Member>
     <Member MemberName="GetLowerBound">
       <MemberSignature Language="C#" Value="public int GetLowerBound (int dimension);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance int32 GetLowerBound(int32 dimension) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -58,6 +61,7 @@
     </Member>
     <Member MemberName="GetValues">
       <MemberSignature Language="C#" Value="public System.Collections.Generic.IList<Mono.Debugger.Soft.Value> GetValues (int index, int length);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class System.Collections.Generic.IList`1<class Mono.Debugger.Soft.Value> GetValues(int32 index, int32 length) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -78,7 +82,8 @@
       </Docs>
     </Member>
     <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.Value this[int index] { set; get; }" />
+      <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.Value this[int index] { get; set; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.Value Item(int32)" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -98,6 +103,7 @@
     </Member>
     <Member MemberName="Length">
       <MemberSignature Language="C#" Value="public int Length { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance int32 Length" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -113,6 +119,7 @@
     </Member>
     <Member MemberName="lengths">
       <MemberSignature Language="C#" Value="public int[] lengths;" />
+      <MemberSignature Language="ILAsm" Value=".field public int32[] lengths" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -127,6 +134,7 @@
     </Member>
     <Member MemberName="lower_bounds">
       <MemberSignature Language="C#" Value="public int[] lower_bounds;" />
+      <MemberSignature Language="ILAsm" Value=".field public int32[] lower_bounds" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -141,6 +149,7 @@
     </Member>
     <Member MemberName="rank">
       <MemberSignature Language="C#" Value="public int rank;" />
+      <MemberSignature Language="ILAsm" Value=".field public int32 rank" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -155,6 +164,7 @@
     </Member>
     <Member MemberName="Rank">
       <MemberSignature Language="C#" Value="public int Rank { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance int32 Rank" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -170,6 +180,7 @@
     </Member>
     <Member MemberName="SetValues">
       <MemberSignature Language="C#" Value="public void SetValues (int index, Mono.Debugger.Soft.Value[] values);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void SetValues(int32 index, class Mono.Debugger.Soft.Value[] values) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -190,6 +201,7 @@
     </Member>
     <Member MemberName="System.Collections.IEnumerable.GetEnumerator">
       <MemberSignature Language="C#" Value="System.Collections.IEnumerator IEnumerable.GetEnumerator ();" />
+      <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance class System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/AssemblyLoadEvent.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/AssemblyLoadEvent.xml
index 9545264..3a5808b 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/AssemblyLoadEvent.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/AssemblyLoadEvent.xml
@@ -1,5 +1,6 @@
 <Type Name="AssemblyLoadEvent" FullName="Mono.Debugger.Soft.AssemblyLoadEvent">
   <TypeSignature Language="C#" Value="public class AssemblyLoadEvent : Mono.Debugger.Soft.Event" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit AssemblyLoadEvent extends Mono.Debugger.Soft.Event" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -16,6 +17,7 @@
   <Members>
     <Member MemberName="Assembly">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.AssemblyMirror Assembly { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.AssemblyMirror Assembly" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/AssemblyMirror.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/AssemblyMirror.xml
index 439aa9b..eeaaa30 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/AssemblyMirror.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/AssemblyMirror.xml
@@ -1,5 +1,6 @@
 <Type Name="AssemblyMirror" FullName="Mono.Debugger.Soft.AssemblyMirror">
   <TypeSignature Language="C#" Value="public class AssemblyMirror : Mono.Debugger.Soft.Mirror" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit AssemblyMirror extends Mono.Debugger.Soft.Mirror" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -16,6 +17,7 @@
   <Members>
     <Member MemberName="EntryPoint">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.MethodMirror EntryPoint { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.MethodMirror EntryPoint" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -31,6 +33,7 @@
     </Member>
     <Member MemberName="GetAssemblyObject">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.ObjectMirror GetAssemblyObject ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.ObjectMirror GetAssemblyObject() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -45,8 +48,68 @@
         <remarks>To be added.</remarks>
       </Docs>
     </Member>
+    <Member MemberName="GetName">
+      <MemberSignature Language="C#" Value="public virtual System.Reflection.AssemblyName GetName ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class System.Reflection.AssemblyName GetName() cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.Reflection.AssemblyName</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="GetType">
+      <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.TypeMirror GetType (string name);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.TypeMirror GetType(string name) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Debugger.Soft.TypeMirror</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="name" Type="System.String" />
+      </Parameters>
+      <Docs>
+        <param name="name">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="GetType">
+      <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.TypeMirror GetType (string name, bool throwOnError);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.TypeMirror GetType(string name, bool throwOnError) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Debugger.Soft.TypeMirror</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="name" Type="System.String" />
+        <Parameter Name="throwOnError" Type="System.Boolean" />
+      </Parameters>
+      <Docs>
+        <param name="name">To be added.</param>
+        <param name="throwOnError">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
     <Member MemberName="GetType">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.TypeMirror GetType (string name, bool throwOnError, bool ignoreCase);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.TypeMirror GetType(string name, bool throwOnError, bool ignoreCase) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -70,6 +133,7 @@
     </Member>
     <Member MemberName="Location">
       <MemberSignature Language="C#" Value="public string Location { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance string Location" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -85,6 +149,7 @@
     </Member>
     <Member MemberName="ManifestModule">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.ModuleMirror ManifestModule { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.ModuleMirror ManifestModule" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -99,7 +164,8 @@
       </Docs>
     </Member>
     <Member MemberName="Metadata">
-      <MemberSignature Language="C#" Value="public Mono.Cecil.AssemblyDefinition Metadata { set; get; }" />
+      <MemberSignature Language="C#" Value="public Mono.Cecil.AssemblyDefinition Metadata { get; set; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Cecil.AssemblyDefinition Metadata" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/AssemblyUnloadEvent.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/AssemblyUnloadEvent.xml
new file mode 100644
index 0000000..def2ec4
--- /dev/null
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/AssemblyUnloadEvent.xml
@@ -0,0 +1,34 @@
+<Type Name="AssemblyUnloadEvent" FullName="Mono.Debugger.Soft.AssemblyUnloadEvent">
+  <TypeSignature Language="C#" Value="public class AssemblyUnloadEvent : Mono.Debugger.Soft.Event" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit AssemblyUnloadEvent extends Mono.Debugger.Soft.Event" />
+  <AssemblyInfo>
+    <AssemblyName>Mono.Debugger.Soft</AssemblyName>
+    <AssemblyVersion>0.0.0.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>Mono.Debugger.Soft.Event</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Members>
+    <Member MemberName="Assembly">
+      <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.AssemblyMirror Assembly { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.AssemblyMirror Assembly" />
+      <MemberType>Property</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Debugger.Soft.AssemblyMirror</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/BreakpointEvent.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/BreakpointEvent.xml
index a427cb9..f04aea6 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/BreakpointEvent.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/BreakpointEvent.xml
@@ -1,5 +1,6 @@
 <Type Name="BreakpointEvent" FullName="Mono.Debugger.Soft.BreakpointEvent">
   <TypeSignature Language="C#" Value="public class BreakpointEvent : Mono.Debugger.Soft.Event" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit BreakpointEvent extends Mono.Debugger.Soft.Event" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -16,6 +17,7 @@
   <Members>
     <Member MemberName="Method">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.MethodMirror Method { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.MethodMirror Method" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/BreakpointEventRequest.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/BreakpointEventRequest.xml
index 46410b6..db23d0d 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/BreakpointEventRequest.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/BreakpointEventRequest.xml
@@ -1,5 +1,6 @@
 <Type Name="BreakpointEventRequest" FullName="Mono.Debugger.Soft.BreakpointEventRequest">
   <TypeSignature Language="C#" Value="public sealed class BreakpointEventRequest : Mono.Debugger.Soft.EventRequest" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed beforefieldinit BreakpointEventRequest extends Mono.Debugger.Soft.EventRequest" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -15,6 +16,7 @@
   <Members>
     <Member MemberName="Enable">
       <MemberSignature Language="C#" Value="public override void Enable ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig virtual instance void Enable() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/CustomAttributeDataMirror.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/CustomAttributeDataMirror.xml
index c5c7948..44efb78 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/CustomAttributeDataMirror.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/CustomAttributeDataMirror.xml
@@ -1,5 +1,6 @@
 <Type Name="CustomAttributeDataMirror" FullName="Mono.Debugger.Soft.CustomAttributeDataMirror">
   <TypeSignature Language="C#" Value="public sealed class CustomAttributeDataMirror" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed beforefieldinit CustomAttributeDataMirror extends System.Object" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -15,6 +16,7 @@
   <Members>
     <Member MemberName="Constructor">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.MethodMirror Constructor { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.MethodMirror Constructor" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -35,6 +37,7 @@
     </Member>
     <Member MemberName="ConstructorArguments">
       <MemberSignature Language="C#" Value="public System.Collections.Generic.IList<Mono.Debugger.Soft.CustomAttributeTypedArgumentMirror> ConstructorArguments { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class System.Collections.Generic.IList`1<valuetype Mono.Debugger.Soft.CustomAttributeTypedArgumentMirror> ConstructorArguments" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -55,6 +58,7 @@
     </Member>
     <Member MemberName="NamedArguments">
       <MemberSignature Language="C#" Value="public System.Collections.Generic.IList<Mono.Debugger.Soft.CustomAttributeNamedArgumentMirror> NamedArguments { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class System.Collections.Generic.IList`1<valuetype Mono.Debugger.Soft.CustomAttributeNamedArgumentMirror> NamedArguments" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -70,6 +74,7 @@
     </Member>
     <Member MemberName="ToString">
       <MemberSignature Language="C#" Value="public override string ToString ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig virtual instance string ToString() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/CustomAttributeNamedArgumentMirror.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/CustomAttributeNamedArgumentMirror.xml
index de945e9..e048ec6 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/CustomAttributeNamedArgumentMirror.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/CustomAttributeNamedArgumentMirror.xml
@@ -1,5 +1,6 @@
 <Type Name="CustomAttributeNamedArgumentMirror" FullName="Mono.Debugger.Soft.CustomAttributeNamedArgumentMirror">
   <TypeSignature Language="C#" Value="public struct CustomAttributeNamedArgumentMirror" />
+  <TypeSignature Language="ILAsm" Value=".class public sequential ansi sealed beforefieldinit CustomAttributeNamedArgumentMirror extends System.ValueType" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -15,6 +16,7 @@
   <Members>
     <Member MemberName="Field">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.FieldInfoMirror Field { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.FieldInfoMirror Field" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -30,6 +32,7 @@
     </Member>
     <Member MemberName="Property">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.PropertyInfoMirror Property { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.PropertyInfoMirror Property" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -45,6 +48,7 @@
     </Member>
     <Member MemberName="TypedValue">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.CustomAttributeTypedArgumentMirror TypedValue { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance valuetype Mono.Debugger.Soft.CustomAttributeTypedArgumentMirror TypedValue" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/CustomAttributeTypedArgumentMirror.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/CustomAttributeTypedArgumentMirror.xml
index 55270f0..b52a11a 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/CustomAttributeTypedArgumentMirror.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/CustomAttributeTypedArgumentMirror.xml
@@ -1,5 +1,6 @@
 <Type Name="CustomAttributeTypedArgumentMirror" FullName="Mono.Debugger.Soft.CustomAttributeTypedArgumentMirror">
   <TypeSignature Language="C#" Value="public struct CustomAttributeTypedArgumentMirror" />
+  <TypeSignature Language="ILAsm" Value=".class public sequential ansi sealed beforefieldinit CustomAttributeTypedArgumentMirror extends System.ValueType" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -15,6 +16,7 @@
   <Members>
     <Member MemberName="ArgumentType">
       <MemberSignature Language="C#" Value="public Type ArgumentType { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class System.Type ArgumentType" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -30,6 +32,7 @@
     </Member>
     <Member MemberName="ToString">
       <MemberSignature Language="C#" Value="public override string ToString ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig virtual instance string ToString() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -46,6 +49,7 @@
     </Member>
     <Member MemberName="Value">
       <MemberSignature Language="C#" Value="public object Value { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance object Value" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/EnumMirror.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/EnumMirror.xml
index 008935f..cb6a86a 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/EnumMirror.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/EnumMirror.xml
@@ -1,5 +1,6 @@
 <Type Name="EnumMirror" FullName="Mono.Debugger.Soft.EnumMirror">
   <TypeSignature Language="C#" Value="public class EnumMirror : Mono.Debugger.Soft.StructMirror" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit EnumMirror extends Mono.Debugger.Soft.StructMirror" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -16,6 +17,7 @@
   <Members>
     <Member MemberName="StringValue">
       <MemberSignature Language="C#" Value="public string StringValue { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance string StringValue" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -30,7 +32,8 @@
       </Docs>
     </Member>
     <Member MemberName="Value">
-      <MemberSignature Language="C#" Value="public object Value { get; }" />
+      <MemberSignature Language="C#" Value="public object Value { get; set; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance object Value" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/ErrorCode.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/ErrorCode.xml
index e71dc98..82e6f2e 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/ErrorCode.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/ErrorCode.xml
@@ -1,5 +1,6 @@
 <Type Name="ErrorCode" FullName="Mono.Debugger.Soft.ErrorCode">
   <TypeSignature Language="C#" Value="public enum ErrorCode" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed ErrorCode extends System.Enum" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -13,8 +14,51 @@
     </remarks>
   </Docs>
   <Members>
+    <Member MemberName="ABSENT_INFORMATION">
+      <MemberSignature Language="C#" Value="ABSENT_INFORMATION" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.Debugger.Soft.ErrorCode ABSENT_INFORMATION = int32(105)" />
+      <MemberType>Field</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Debugger.Soft.ErrorCode</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+      </Docs>
+    </Member>
+    <Member MemberName="ERR_NO_INVOCATION">
+      <MemberSignature Language="C#" Value="ERR_NO_INVOCATION" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.Debugger.Soft.ErrorCode ERR_NO_INVOCATION = int32(104)" />
+      <MemberType>Field</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Debugger.Soft.ErrorCode</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+      </Docs>
+    </Member>
+    <Member MemberName="ERR_UNLOADED">
+      <MemberSignature Language="C#" Value="ERR_UNLOADED" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.Debugger.Soft.ErrorCode ERR_UNLOADED = int32(103)" />
+      <MemberType>Field</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Debugger.Soft.ErrorCode</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+      </Docs>
+    </Member>
     <Member MemberName="INVALID_ARGUMENT">
       <MemberSignature Language="C#" Value="INVALID_ARGUMENT" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.Debugger.Soft.ErrorCode INVALID_ARGUMENT = int32(102)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -28,6 +72,7 @@
     </Member>
     <Member MemberName="INVALID_FIELDID">
       <MemberSignature Language="C#" Value="INVALID_FIELDID" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.Debugger.Soft.ErrorCode INVALID_FIELDID = int32(25)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -41,6 +86,7 @@
     </Member>
     <Member MemberName="INVALID_FRAMEID">
       <MemberSignature Language="C#" Value="INVALID_FRAMEID" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.Debugger.Soft.ErrorCode INVALID_FRAMEID = int32(30)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -54,6 +100,21 @@
     </Member>
     <Member MemberName="INVALID_OBJECT">
       <MemberSignature Language="C#" Value="INVALID_OBJECT" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.Debugger.Soft.ErrorCode INVALID_OBJECT = int32(20)" />
+      <MemberType>Field</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Debugger.Soft.ErrorCode</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+      </Docs>
+    </Member>
+    <Member MemberName="NO_SEQ_POINT_AT_IL_OFFSET">
+      <MemberSignature Language="C#" Value="NO_SEQ_POINT_AT_IL_OFFSET" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.Debugger.Soft.ErrorCode NO_SEQ_POINT_AT_IL_OFFSET = int32(106)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -67,6 +128,7 @@
     </Member>
     <Member MemberName="NONE">
       <MemberSignature Language="C#" Value="NONE" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.Debugger.Soft.ErrorCode NONE = int32(0)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -80,6 +142,7 @@
     </Member>
     <Member MemberName="NOT_IMPLEMENTED">
       <MemberSignature Language="C#" Value="NOT_IMPLEMENTED" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.Debugger.Soft.ErrorCode NOT_IMPLEMENTED = int32(100)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -93,6 +156,7 @@
     </Member>
     <Member MemberName="NOT_SUSPENDED">
       <MemberSignature Language="C#" Value="NOT_SUSPENDED" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.Debugger.Soft.ErrorCode NOT_SUSPENDED = int32(101)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/ErrorHandlerEventArgs.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/ErrorHandlerEventArgs.xml
index 9386c27..969f6b7 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/ErrorHandlerEventArgs.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/ErrorHandlerEventArgs.xml
@@ -1,5 +1,6 @@
 <Type Name="ErrorHandlerEventArgs" FullName="Mono.Debugger.Soft.ErrorHandlerEventArgs">
   <TypeSignature Language="C#" Value="public class ErrorHandlerEventArgs : EventArgs" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit ErrorHandlerEventArgs extends System.EventArgs" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -16,6 +17,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public ErrorHandlerEventArgs ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -27,7 +29,8 @@
       </Docs>
     </Member>
     <Member MemberName="ErrorCode">
-      <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.ErrorCode ErrorCode { set; get; }" />
+      <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.ErrorCode ErrorCode { get; set; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance valuetype Mono.Debugger.Soft.ErrorCode ErrorCode" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/Event.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/Event.xml
index efdbdc8..fefebe4 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/Event.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/Event.xml
@@ -1,5 +1,6 @@
 <Type Name="Event" FullName="Mono.Debugger.Soft.Event">
   <TypeSignature Language="C#" Value="public abstract class Event" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi abstract beforefieldinit Event extends System.Object" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -19,6 +20,7 @@
   <Members>
     <Member MemberName="EventType">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.EventType EventType { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance valuetype Mono.Debugger.Soft.EventType EventType" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -34,6 +36,7 @@
     </Member>
     <Member MemberName="Request">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.EventRequest Request { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.EventRequest Request" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -49,6 +52,7 @@
     </Member>
     <Member MemberName="Thread">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.ThreadMirror Thread { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.ThreadMirror Thread" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -64,6 +68,7 @@
     </Member>
     <Member MemberName="ToString">
       <MemberSignature Language="C#" Value="public override string ToString ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig virtual instance string ToString() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -80,6 +85,7 @@
     </Member>
     <Member MemberName="vm">
       <MemberSignature Language="C#" Value="protected Mono.Debugger.Soft.VirtualMachine vm;" />
+      <MemberSignature Language="ILAsm" Value=".field family class Mono.Debugger.Soft.VirtualMachine vm" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/EventRequest.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/EventRequest.xml
index 9adc526..cb2e480 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/EventRequest.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/EventRequest.xml
@@ -1,5 +1,6 @@
 <Type Name="EventRequest" FullName="Mono.Debugger.Soft.EventRequest">
   <TypeSignature Language="C#" Value="public abstract class EventRequest" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi abstract beforefieldinit EventRequest extends System.Object" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -14,8 +15,40 @@
     </remarks>
   </Docs>
   <Members>
+    <Member MemberName="assembly_filter">
+      <MemberSignature Language="C#" Value="protected System.Collections.Generic.IList<Mono.Debugger.Soft.AssemblyMirror> assembly_filter;" />
+      <MemberSignature Language="ILAsm" Value=".field family class System.Collections.Generic.IList`1<class Mono.Debugger.Soft.AssemblyMirror> assembly_filter" />
+      <MemberType>Field</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.Collections.Generic.IList<Mono.Debugger.Soft.AssemblyMirror></ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="AssemblyFilter">
+      <MemberSignature Language="C#" Value="public System.Collections.Generic.IList<Mono.Debugger.Soft.AssemblyMirror> AssemblyFilter { get; set; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class System.Collections.Generic.IList`1<class Mono.Debugger.Soft.AssemblyMirror> AssemblyFilter" />
+      <MemberType>Property</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.Collections.Generic.IList<Mono.Debugger.Soft.AssemblyMirror></ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
     <Member MemberName="CheckDisabled">
       <MemberSignature Language="C#" Value="protected void CheckDisabled ();" />
+      <MemberSignature Language="ILAsm" Value=".method familyhidebysig instance void CheckDisabled() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -31,6 +64,7 @@
     </Member>
     <Member MemberName="CheckMirror">
       <MemberSignature Language="C#" Value="protected void CheckMirror (Mono.Debugger.Soft.VirtualMachine vm, Mono.Debugger.Soft.Mirror m);" />
+      <MemberSignature Language="ILAsm" Value=".method familyhidebysig instance void CheckMirror(class Mono.Debugger.Soft.VirtualMachine vm, class Mono.Debugger.Soft.Mirror m) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -51,6 +85,7 @@
     </Member>
     <Member MemberName="count">
       <MemberSignature Language="C#" Value="protected int count;" />
+      <MemberSignature Language="ILAsm" Value=".field family int32 count" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -64,7 +99,8 @@
       </Docs>
     </Member>
     <Member MemberName="Count">
-      <MemberSignature Language="C#" Value="public int Count { set; get; }" />
+      <MemberSignature Language="C#" Value="public int Count { get; set; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance int32 Count" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -80,6 +116,7 @@
     </Member>
     <Member MemberName="Disable">
       <MemberSignature Language="C#" Value="public void Disable ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Disable() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -95,6 +132,7 @@
     </Member>
     <Member MemberName="Enable">
       <MemberSignature Language="C#" Value="public virtual void Enable ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void Enable() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -110,6 +148,7 @@
     </Member>
     <Member MemberName="enabled">
       <MemberSignature Language="C#" Value="protected bool enabled;" />
+      <MemberSignature Language="ILAsm" Value=".field family bool enabled" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -123,7 +162,8 @@
       </Docs>
     </Member>
     <Member MemberName="Enabled">
-      <MemberSignature Language="C#" Value="public bool Enabled { set; get; }" />
+      <MemberSignature Language="C#" Value="public bool Enabled { get; set; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool Enabled" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -139,6 +179,7 @@
     </Member>
     <Member MemberName="etype">
       <MemberSignature Language="C#" Value="protected Mono.Debugger.Soft.EventType etype;" />
+      <MemberSignature Language="ILAsm" Value=".field family valuetype Mono.Debugger.Soft.EventType etype" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -153,6 +194,7 @@
     </Member>
     <Member MemberName="EventType">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.EventType EventType { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance valuetype Mono.Debugger.Soft.EventType EventType" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -168,6 +210,7 @@
     </Member>
     <Member MemberName="id">
       <MemberSignature Language="C#" Value="protected int id;" />
+      <MemberSignature Language="ILAsm" Value=".field family int32 id" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -182,6 +225,7 @@
     </Member>
     <Member MemberName="SetEnabled">
       <MemberSignature Language="C#" Value="protected void SetEnabled (int id);" />
+      <MemberSignature Language="ILAsm" Value=".method familyhidebysig instance void SetEnabled(int32 id) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -200,6 +244,7 @@
     </Member>
     <Member MemberName="suspend">
       <MemberSignature Language="C#" Value="protected Mono.Debugger.Soft.SuspendPolicy suspend;" />
+      <MemberSignature Language="ILAsm" Value=".field family valuetype Mono.Debugger.Soft.SuspendPolicy suspend" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -214,6 +259,7 @@
     </Member>
     <Member MemberName="thread">
       <MemberSignature Language="C#" Value="protected Mono.Debugger.Soft.ThreadMirror thread;" />
+      <MemberSignature Language="ILAsm" Value=".field family class Mono.Debugger.Soft.ThreadMirror thread" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -227,7 +273,8 @@
       </Docs>
     </Member>
     <Member MemberName="Thread">
-      <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.ThreadMirror Thread { set; get; }" />
+      <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.ThreadMirror Thread { get; set; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.ThreadMirror Thread" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -243,6 +290,7 @@
     </Member>
     <Member MemberName="vm">
       <MemberSignature Language="C#" Value="protected Mono.Debugger.Soft.VirtualMachine vm;" />
+      <MemberSignature Language="ILAsm" Value=".field family class Mono.Debugger.Soft.VirtualMachine vm" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/EventSet.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/EventSet.xml
new file mode 100644
index 0000000..1f8910e
--- /dev/null
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/EventSet.xml
@@ -0,0 +1,85 @@
+<Type Name="EventSet" FullName="Mono.Debugger.Soft.EventSet">
+  <TypeSignature Language="C#" Value="public class EventSet" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit EventSet extends System.Object" />
+  <AssemblyInfo>
+    <AssemblyName>Mono.Debugger.Soft</AssemblyName>
+    <AssemblyVersion>0.0.0.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>System.Object</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Members>
+    <Member MemberName="Events">
+      <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.Event[] Events { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.Event[] Events" />
+      <MemberType>Property</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Debugger.Soft.Event[]</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Item">
+      <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.Event this[int index] { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.Event Item(int32)" />
+      <MemberType>Property</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Debugger.Soft.Event</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="index" Type="System.Int32" />
+      </Parameters>
+      <Docs>
+        <param name="index">To be added.</param>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="SuspendPolicy">
+      <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.SuspendPolicy SuspendPolicy { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance valuetype Mono.Debugger.Soft.SuspendPolicy SuspendPolicy" />
+      <MemberType>Property</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Debugger.Soft.SuspendPolicy</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="vm">
+      <MemberSignature Language="C#" Value="protected Mono.Debugger.Soft.VirtualMachine vm;" />
+      <MemberSignature Language="ILAsm" Value=".field family class Mono.Debugger.Soft.VirtualMachine vm" />
+      <MemberType>Field</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Debugger.Soft.VirtualMachine</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/EventType.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/EventType.xml
index 876a063..150ca73 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/EventType.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/EventType.xml
@@ -1,5 +1,6 @@
 <Type Name="EventType" FullName="Mono.Debugger.Soft.EventType">
   <TypeSignature Language="C#" Value="public enum EventType" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed EventType extends System.Enum" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -15,6 +16,7 @@
   <Members>
     <Member MemberName="AppDomainCreate">
       <MemberSignature Language="C#" Value="AppDomainCreate" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.Debugger.Soft.EventType AppDomainCreate = int32(4)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -28,6 +30,7 @@
     </Member>
     <Member MemberName="AppDomainUnload">
       <MemberSignature Language="C#" Value="AppDomainUnload" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.Debugger.Soft.EventType AppDomainUnload = int32(5)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -41,6 +44,7 @@
     </Member>
     <Member MemberName="AssemblyLoad">
       <MemberSignature Language="C#" Value="AssemblyLoad" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.Debugger.Soft.EventType AssemblyLoad = int32(8)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -54,6 +58,7 @@
     </Member>
     <Member MemberName="AssemblyUnload">
       <MemberSignature Language="C#" Value="AssemblyUnload" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.Debugger.Soft.EventType AssemblyUnload = int32(9)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -67,6 +72,21 @@
     </Member>
     <Member MemberName="Breakpoint">
       <MemberSignature Language="C#" Value="Breakpoint" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.Debugger.Soft.EventType Breakpoint = int32(10)" />
+      <MemberType>Field</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Debugger.Soft.EventType</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+      </Docs>
+    </Member>
+    <Member MemberName="Exception">
+      <MemberSignature Language="C#" Value="Exception" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.Debugger.Soft.EventType Exception = int32(13)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -80,6 +100,7 @@
     </Member>
     <Member MemberName="MethodEntry">
       <MemberSignature Language="C#" Value="MethodEntry" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.Debugger.Soft.EventType MethodEntry = int32(6)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -93,6 +114,7 @@
     </Member>
     <Member MemberName="MethodExit">
       <MemberSignature Language="C#" Value="MethodExit" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.Debugger.Soft.EventType MethodExit = int32(7)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -106,6 +128,7 @@
     </Member>
     <Member MemberName="Step">
       <MemberSignature Language="C#" Value="Step" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.Debugger.Soft.EventType Step = int32(11)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -119,6 +142,7 @@
     </Member>
     <Member MemberName="ThreadDeath">
       <MemberSignature Language="C#" Value="ThreadDeath" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.Debugger.Soft.EventType ThreadDeath = int32(3)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -132,6 +156,7 @@
     </Member>
     <Member MemberName="ThreadStart">
       <MemberSignature Language="C#" Value="ThreadStart" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.Debugger.Soft.EventType ThreadStart = int32(2)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -145,6 +170,7 @@
     </Member>
     <Member MemberName="TypeLoad">
       <MemberSignature Language="C#" Value="TypeLoad" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.Debugger.Soft.EventType TypeLoad = int32(12)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -158,6 +184,7 @@
     </Member>
     <Member MemberName="VMDeath">
       <MemberSignature Language="C#" Value="VMDeath" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.Debugger.Soft.EventType VMDeath = int32(1)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -171,6 +198,7 @@
     </Member>
     <Member MemberName="VMDisconnect">
       <MemberSignature Language="C#" Value="VMDisconnect" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.Debugger.Soft.EventType VMDisconnect = int32(99)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -184,6 +212,7 @@
     </Member>
     <Member MemberName="VMStart">
       <MemberSignature Language="C#" Value="VMStart" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.Debugger.Soft.EventType VMStart = int32(0)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/ExceptionEvent.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/ExceptionEvent.xml
new file mode 100644
index 0000000..43d5d04
--- /dev/null
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/ExceptionEvent.xml
@@ -0,0 +1,34 @@
+<Type Name="ExceptionEvent" FullName="Mono.Debugger.Soft.ExceptionEvent">
+  <TypeSignature Language="C#" Value="public class ExceptionEvent : Mono.Debugger.Soft.Event" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit ExceptionEvent extends Mono.Debugger.Soft.Event" />
+  <AssemblyInfo>
+    <AssemblyName>Mono.Debugger.Soft</AssemblyName>
+    <AssemblyVersion>0.0.0.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>Mono.Debugger.Soft.Event</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Members>
+    <Member MemberName="Exception">
+      <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.ObjectMirror Exception { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.ObjectMirror Exception" />
+      <MemberType>Property</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Debugger.Soft.ObjectMirror</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/ExceptionEventRequest.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/ExceptionEventRequest.xml
new file mode 100644
index 0000000..ae877e9
--- /dev/null
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/ExceptionEventRequest.xml
@@ -0,0 +1,50 @@
+<Type Name="ExceptionEventRequest" FullName="Mono.Debugger.Soft.ExceptionEventRequest">
+  <TypeSignature Language="C#" Value="public sealed class ExceptionEventRequest : Mono.Debugger.Soft.EventRequest" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed beforefieldinit ExceptionEventRequest extends Mono.Debugger.Soft.EventRequest" />
+  <AssemblyInfo>
+    <AssemblyName>Mono.Debugger.Soft</AssemblyName>
+    <AssemblyVersion>0.0.0.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>Mono.Debugger.Soft.EventRequest</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Members>
+    <Member MemberName="Enable">
+      <MemberSignature Language="C#" Value="public override void Enable ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig virtual instance void Enable() cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="ExceptionType">
+      <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.TypeMirror ExceptionType { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.TypeMirror ExceptionType" />
+      <MemberType>Property</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Debugger.Soft.TypeMirror</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/FieldInfoMirror.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/FieldInfoMirror.xml
index 75e4782..8d64527 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/FieldInfoMirror.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/FieldInfoMirror.xml
@@ -1,5 +1,6 @@
 <Type Name="FieldInfoMirror" FullName="Mono.Debugger.Soft.FieldInfoMirror">
   <TypeSignature Language="C#" Value="public class FieldInfoMirror : Mono.Debugger.Soft.Mirror" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit FieldInfoMirror extends Mono.Debugger.Soft.Mirror" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -16,6 +17,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public FieldInfoMirror (Mono.Debugger.Soft.TypeMirror parent, long id, string name, Mono.Debugger.Soft.TypeMirror type, System.Reflection.FieldAttributes attrs);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(class Mono.Debugger.Soft.TypeMirror parent, int64 id, string name, class Mono.Debugger.Soft.TypeMirror type, valuetype System.Reflection.FieldAttributes attrs) cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -39,6 +41,7 @@
     </Member>
     <Member MemberName="Attributes">
       <MemberSignature Language="C#" Value="public System.Reflection.FieldAttributes Attributes { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance valuetype System.Reflection.FieldAttributes Attributes" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -54,6 +57,7 @@
     </Member>
     <Member MemberName="DeclaringType">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.TypeMirror DeclaringType { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.TypeMirror DeclaringType" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -69,6 +73,7 @@
     </Member>
     <Member MemberName="FieldType">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.TypeMirror FieldType { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.TypeMirror FieldType" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -84,6 +89,7 @@
     </Member>
     <Member MemberName="GetCustomAttributes">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.CustomAttributeDataMirror[] GetCustomAttributes (bool inherit);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.CustomAttributeDataMirror[] GetCustomAttributes(bool inherit) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -103,6 +109,7 @@
     </Member>
     <Member MemberName="GetCustomAttributes">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.CustomAttributeDataMirror[] GetCustomAttributes (Mono.Debugger.Soft.TypeMirror attributeType, bool inherit);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.CustomAttributeDataMirror[] GetCustomAttributes(class Mono.Debugger.Soft.TypeMirror attributeType, bool inherit) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -124,6 +131,7 @@
     </Member>
     <Member MemberName="IsAssembly">
       <MemberSignature Language="C#" Value="public bool IsAssembly { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsAssembly" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -139,6 +147,7 @@
     </Member>
     <Member MemberName="IsFamily">
       <MemberSignature Language="C#" Value="public bool IsFamily { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsFamily" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -154,6 +163,7 @@
     </Member>
     <Member MemberName="IsFamilyAndAssembly">
       <MemberSignature Language="C#" Value="public bool IsFamilyAndAssembly { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsFamilyAndAssembly" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -169,6 +179,7 @@
     </Member>
     <Member MemberName="IsFamilyOrAssembly">
       <MemberSignature Language="C#" Value="public bool IsFamilyOrAssembly { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsFamilyOrAssembly" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -184,6 +195,7 @@
     </Member>
     <Member MemberName="IsInitOnly">
       <MemberSignature Language="C#" Value="public bool IsInitOnly { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsInitOnly" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -199,6 +211,7 @@
     </Member>
     <Member MemberName="IsLiteral">
       <MemberSignature Language="C#" Value="public bool IsLiteral { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsLiteral" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -214,6 +227,7 @@
     </Member>
     <Member MemberName="IsNotSerialized">
       <MemberSignature Language="C#" Value="public bool IsNotSerialized { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsNotSerialized" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -229,6 +243,7 @@
     </Member>
     <Member MemberName="IsPinvokeImpl">
       <MemberSignature Language="C#" Value="public bool IsPinvokeImpl { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsPinvokeImpl" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -244,6 +259,7 @@
     </Member>
     <Member MemberName="IsPrivate">
       <MemberSignature Language="C#" Value="public bool IsPrivate { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsPrivate" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -259,6 +275,7 @@
     </Member>
     <Member MemberName="IsPublic">
       <MemberSignature Language="C#" Value="public bool IsPublic { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsPublic" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -274,6 +291,7 @@
     </Member>
     <Member MemberName="IsSpecialName">
       <MemberSignature Language="C#" Value="public bool IsSpecialName { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsSpecialName" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -289,6 +307,7 @@
     </Member>
     <Member MemberName="IsStatic">
       <MemberSignature Language="C#" Value="public bool IsStatic { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsStatic" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -304,6 +323,7 @@
     </Member>
     <Member MemberName="Name">
       <MemberSignature Language="C#" Value="public string Name { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance string Name" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/IInvokeAsyncResult.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/IInvokeAsyncResult.xml
new file mode 100644
index 0000000..f57b292
--- /dev/null
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/IInvokeAsyncResult.xml
@@ -0,0 +1,35 @@
+<Type Name="IInvokeAsyncResult" FullName="Mono.Debugger.Soft.IInvokeAsyncResult">
+  <TypeSignature Language="C#" Value="public interface IInvokeAsyncResult : IAsyncResult" />
+  <TypeSignature Language="ILAsm" Value=".class public interface auto ansi abstract IInvokeAsyncResult implements class System.IAsyncResult" />
+  <AssemblyInfo>
+    <AssemblyName>Mono.Debugger.Soft</AssemblyName>
+    <AssemblyVersion>0.0.0.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Interfaces>
+    <Interface>
+      <InterfaceName>System.IAsyncResult</InterfaceName>
+    </Interface>
+  </Interfaces>
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Members>
+    <Member MemberName="Abort">
+      <MemberSignature Language="C#" Value="public void Abort ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void Abort() cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/ILInstruction.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/ILInstruction.xml
index 6bc7e9f..a682e72 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/ILInstruction.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/ILInstruction.xml
@@ -1,5 +1,6 @@
 <Type Name="ILInstruction" FullName="Mono.Debugger.Soft.ILInstruction">
   <TypeSignature Language="C#" Value="public class ILInstruction" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit ILInstruction extends System.Object" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -15,7 +16,8 @@
   </Docs>
   <Members>
     <Member MemberName="Next">
-      <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.ILInstruction Next { set; get; }" />
+      <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.ILInstruction Next { get; set; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.ILInstruction Next" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -31,6 +33,7 @@
     </Member>
     <Member MemberName="Offset">
       <MemberSignature Language="C#" Value="public int Offset { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance int32 Offset" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -46,6 +49,7 @@
     </Member>
     <Member MemberName="OpCode">
       <MemberSignature Language="C#" Value="public Mono.Cecil.Cil.OpCode OpCode { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance valuetype Mono.Cecil.Cil.OpCode OpCode" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -60,7 +64,8 @@
       </Docs>
     </Member>
     <Member MemberName="Operand">
-      <MemberSignature Language="C#" Value="public object Operand { set; get; }" />
+      <MemberSignature Language="C#" Value="public object Operand { get; set; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance object Operand" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -75,7 +80,8 @@
       </Docs>
     </Member>
     <Member MemberName="Previous">
-      <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.ILInstruction Previous { set; get; }" />
+      <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.ILInstruction Previous { get; set; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.ILInstruction Previous" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/IMirror.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/IMirror.xml
index 2fe2359..9e5d87e 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/IMirror.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/IMirror.xml
@@ -1,5 +1,6 @@
 <Type Name="IMirror" FullName="Mono.Debugger.Soft.IMirror">
   <TypeSignature Language="C#" Value="public interface IMirror" />
+  <TypeSignature Language="ILAsm" Value=".class public interface auto ansi abstract IMirror" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -16,6 +17,7 @@
   <Members>
     <Member MemberName="VirtualMachine">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.VirtualMachine VirtualMachine { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.VirtualMachine VirtualMachine" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/ITargetProcess.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/ITargetProcess.xml
new file mode 100644
index 0000000..99dca29
--- /dev/null
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/ITargetProcess.xml
@@ -0,0 +1,126 @@
+<Type Name="ITargetProcess" FullName="Mono.Debugger.Soft.ITargetProcess">
+  <TypeSignature Language="C#" Value="public interface ITargetProcess" />
+  <TypeSignature Language="ILAsm" Value=".class public interface auto ansi abstract ITargetProcess" />
+  <AssemblyInfo>
+    <AssemblyName>Mono.Debugger.Soft</AssemblyName>
+    <AssemblyVersion>0.0.0.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Interfaces />
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Members>
+    <Member MemberName="Exited">
+      <MemberSignature Language="C#" Value="public event EventHandler Exited;" />
+      <MemberSignature Language="ILAsm" Value=".event class System.EventHandler Exited" />
+      <MemberType>Event</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.EventHandler</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="HasExited">
+      <MemberSignature Language="C#" Value="public bool HasExited { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool HasExited" />
+      <MemberType>Property</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.Boolean</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Id">
+      <MemberSignature Language="C#" Value="public int Id { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance int32 Id" />
+      <MemberType>Property</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.Int32</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Kill">
+      <MemberSignature Language="C#" Value="public void Kill ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void Kill() cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="ProcessName">
+      <MemberSignature Language="C#" Value="public string ProcessName { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance string ProcessName" />
+      <MemberType>Property</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="StandardError">
+      <MemberSignature Language="C#" Value="public System.IO.StreamReader StandardError { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class System.IO.StreamReader StandardError" />
+      <MemberType>Property</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.IO.StreamReader</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="StandardOutput">
+      <MemberSignature Language="C#" Value="public System.IO.StreamReader StandardOutput { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class System.IO.StreamReader StandardOutput" />
+      <MemberType>Property</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.IO.StreamReader</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/InvalidStackFrameException.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/InvalidStackFrameException.xml
index aeae698..2dc7f0a 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/InvalidStackFrameException.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/InvalidStackFrameException.xml
@@ -1,5 +1,6 @@
 <Type Name="InvalidStackFrameException" FullName="Mono.Debugger.Soft.InvalidStackFrameException">
   <TypeSignature Language="C#" Value="public class InvalidStackFrameException : Exception" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit InvalidStackFrameException extends System.Exception" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -16,6 +17,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public InvalidStackFrameException ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/InvocationException.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/InvocationException.xml
index adb31f8..7699666 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/InvocationException.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/InvocationException.xml
@@ -1,5 +1,6 @@
 <Type Name="InvocationException" FullName="Mono.Debugger.Soft.InvocationException">
   <TypeSignature Language="C#" Value="public class InvocationException : Exception" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit InvocationException extends System.Exception" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -15,6 +16,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public InvocationException (Mono.Debugger.Soft.ObjectMirror exception);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(class Mono.Debugger.Soft.ObjectMirror exception) cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -30,6 +32,7 @@
     </Member>
     <Member MemberName="Exception">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.ObjectMirror Exception { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.ObjectMirror Exception" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/InvokeOptions.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/InvokeOptions.xml
new file mode 100644
index 0000000..7cb64cf
--- /dev/null
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/InvokeOptions.xml
@@ -0,0 +1,64 @@
+<Type Name="InvokeOptions" FullName="Mono.Debugger.Soft.InvokeOptions">
+  <TypeSignature Language="C#" Value="public enum InvokeOptions" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed InvokeOptions extends System.Enum" />
+  <AssemblyInfo>
+    <AssemblyName>Mono.Debugger.Soft</AssemblyName>
+    <AssemblyVersion>0.0.0.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>System.Enum</BaseTypeName>
+  </Base>
+  <Attributes>
+    <Attribute>
+      <AttributeName>System.Flags</AttributeName>
+    </Attribute>
+  </Attributes>
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Members>
+    <Member MemberName="DisableBreakpoints">
+      <MemberSignature Language="C#" Value="DisableBreakpoints" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.Debugger.Soft.InvokeOptions DisableBreakpoints = int32(1)" />
+      <MemberType>Field</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Debugger.Soft.InvokeOptions</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+      </Docs>
+    </Member>
+    <Member MemberName="None">
+      <MemberSignature Language="C#" Value="None" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.Debugger.Soft.InvokeOptions None = int32(0)" />
+      <MemberType>Field</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Debugger.Soft.InvokeOptions</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+      </Docs>
+    </Member>
+    <Member MemberName="SingleThreaded">
+      <MemberSignature Language="C#" Value="SingleThreaded" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.Debugger.Soft.InvokeOptions SingleThreaded = int32(2)" />
+      <MemberType>Field</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Debugger.Soft.InvokeOptions</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/LaunchOptions+ProcessLauncher.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/LaunchOptions+ProcessLauncher.xml
new file mode 100644
index 0000000..330983d
--- /dev/null
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/LaunchOptions+ProcessLauncher.xml
@@ -0,0 +1,23 @@
+<Type Name="LaunchOptions+ProcessLauncher" FullName="Mono.Debugger.Soft.LaunchOptions+ProcessLauncher">
+  <TypeSignature Language="C#" Value="public delegate System.Diagnostics.Process LaunchOptions.ProcessLauncher(ProcessStartInfo info);" />
+  <TypeSignature Language="ILAsm" Value=".class nested public auto ansi sealed LaunchOptions/ProcessLauncher extends System.MulticastDelegate" />
+  <AssemblyInfo>
+    <AssemblyName>Mono.Debugger.Soft</AssemblyName>
+    <AssemblyVersion>0.0.0.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>System.Delegate</BaseTypeName>
+  </Base>
+  <Parameters>
+    <Parameter Name="info" Type="System.Diagnostics.ProcessStartInfo" />
+  </Parameters>
+  <ReturnValue>
+    <ReturnType>System.Diagnostics.Process</ReturnType>
+  </ReturnValue>
+  <Docs>
+    <param name="info">To be added.</param>
+    <summary>To be added.</summary>
+    <returns>To be added.</returns>
+    <remarks>To be added.</remarks>
+  </Docs>
+</Type>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/LaunchOptions+TargetProcessLauncher.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/LaunchOptions+TargetProcessLauncher.xml
new file mode 100644
index 0000000..d42954c
--- /dev/null
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/LaunchOptions+TargetProcessLauncher.xml
@@ -0,0 +1,23 @@
+<Type Name="LaunchOptions+TargetProcessLauncher" FullName="Mono.Debugger.Soft.LaunchOptions+TargetProcessLauncher">
+  <TypeSignature Language="C#" Value="public delegate Mono.Debugger.Soft.ITargetProcess LaunchOptions.TargetProcessLauncher(ProcessStartInfo info);" />
+  <TypeSignature Language="ILAsm" Value=".class nested public auto ansi sealed LaunchOptions/TargetProcessLauncher extends System.MulticastDelegate" />
+  <AssemblyInfo>
+    <AssemblyName>Mono.Debugger.Soft</AssemblyName>
+    <AssemblyVersion>0.0.0.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>System.Delegate</BaseTypeName>
+  </Base>
+  <Parameters>
+    <Parameter Name="info" Type="System.Diagnostics.ProcessStartInfo" />
+  </Parameters>
+  <ReturnValue>
+    <ReturnType>Mono.Debugger.Soft.ITargetProcess</ReturnType>
+  </ReturnValue>
+  <Docs>
+    <param name="info">To be added.</param>
+    <summary>To be added.</summary>
+    <returns>To be added.</returns>
+    <remarks>To be added.</remarks>
+  </Docs>
+</Type>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/LaunchOptions.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/LaunchOptions.xml
index 54cc7d8..f8279b9 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/LaunchOptions.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/LaunchOptions.xml
@@ -1,5 +1,6 @@
 <Type Name="LaunchOptions" FullName="Mono.Debugger.Soft.LaunchOptions">
   <TypeSignature Language="C#" Value="public class LaunchOptions" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit LaunchOptions extends System.Object" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -15,6 +16,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public LaunchOptions ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -26,7 +28,8 @@
       </Docs>
     </Member>
     <Member MemberName="AgentArgs">
-      <MemberSignature Language="C#" Value="public string AgentArgs { set; get; }" />
+      <MemberSignature Language="C#" Value="public string AgentArgs { get; set; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance string AgentArgs" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -40,29 +43,31 @@
         <remarks>A comma separate list of arguments, run mono with --debugger-agent=help for more information. Defaults to null.</remarks>
       </Docs>
     </Member>
-    <Member MemberName="RedirectStandardOutput">
-      <MemberSignature Language="C#" Value="public bool RedirectStandardOutput { set; get; }" />
+    <Member MemberName="CustomProcessLauncher">
+      <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.LaunchOptions.ProcessLauncher CustomProcessLauncher { get; set; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.LaunchOptions/ProcessLauncher CustomProcessLauncher" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
+        <ReturnType>Mono.Debugger.Soft.LaunchOptions+ProcessLauncher</ReturnType>
       </ReturnValue>
       <Docs>
-        <summary>Sets the ProcessStartInfo.RedirectStandardOutput option when launching the process.</summary>
+        <summary>To be added.</summary>
         <value>To be added.</value>
-        <remarks>Defaults to false.</remarks>
+        <remarks>To be added.</remarks>
       </Docs>
     </Member>
-    <Member MemberName="Runtime">
-      <MemberSignature Language="C#" Value="public string Runtime { set; get; }" />
+    <Member MemberName="CustomTargetProcessLauncher">
+      <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.LaunchOptions.TargetProcessLauncher CustomTargetProcessLauncher { get; set; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.LaunchOptions/TargetProcessLauncher CustomTargetProcessLauncher" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
-        <ReturnType>System.String</ReturnType>
+        <ReturnType>Mono.Debugger.Soft.LaunchOptions+TargetProcessLauncher</ReturnType>
       </ReturnValue>
       <Docs>
         <summary>To be added.</summary>
@@ -71,7 +76,8 @@
       </Docs>
     </Member>
     <Member MemberName="Valgrind">
-      <MemberSignature Language="C#" Value="public bool Valgrind { set; get; }" />
+      <MemberSignature Language="C#" Value="public bool Valgrind { get; set; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool Valgrind" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/LocalVariable.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/LocalVariable.xml
index ec614b0..df7b16d 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/LocalVariable.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/LocalVariable.xml
@@ -1,5 +1,6 @@
 <Type Name="LocalVariable" FullName="Mono.Debugger.Soft.LocalVariable">
   <TypeSignature Language="C#" Value="public class LocalVariable : Mono.Debugger.Soft.Mirror" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit LocalVariable extends Mono.Debugger.Soft.Mirror" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -16,6 +17,7 @@
   <Members>
     <Member MemberName="Index">
       <MemberSignature Language="C#" Value="public int Index { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance int32 Index" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -31,6 +33,7 @@
     </Member>
     <Member MemberName="IsArg">
       <MemberSignature Language="C#" Value="public bool IsArg { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsArg" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -46,6 +49,7 @@
     </Member>
     <Member MemberName="Method">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.MethodMirror Method { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.MethodMirror Method" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -61,6 +65,7 @@
     </Member>
     <Member MemberName="Name">
       <MemberSignature Language="C#" Value="public string Name { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance string Name" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -76,6 +81,7 @@
     </Member>
     <Member MemberName="Type">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.TypeMirror Type { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.TypeMirror Type" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/Location.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/Location.xml
index 20edfe1..8606470 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/Location.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/Location.xml
@@ -1,5 +1,6 @@
 <Type Name="Location" FullName="Mono.Debugger.Soft.Location">
   <TypeSignature Language="C#" Value="public class Location : Mono.Debugger.Soft.Mirror" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit Location extends Mono.Debugger.Soft.Mirror" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -16,6 +17,7 @@
   <Members>
     <Member MemberName="ILOffset">
       <MemberSignature Language="C#" Value="public int ILOffset { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance int32 ILOffset" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -31,6 +33,7 @@
     </Member>
     <Member MemberName="LineNumber">
       <MemberSignature Language="C#" Value="public int LineNumber { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance int32 LineNumber" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -46,6 +49,7 @@
     </Member>
     <Member MemberName="Method">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.MethodMirror Method { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.MethodMirror Method" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -61,6 +65,7 @@
     </Member>
     <Member MemberName="SourceFile">
       <MemberSignature Language="C#" Value="public string SourceFile { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance string SourceFile" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -74,5 +79,22 @@
         <remarks>To be added.</remarks>
       </Docs>
     </Member>
+    <Member MemberName="ToString">
+      <MemberSignature Language="C#" Value="public override string ToString ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig virtual instance string ToString() cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
   </Members>
 </Type>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/MethodBodyMirror.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/MethodBodyMirror.xml
index e30700e..e4c746a 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/MethodBodyMirror.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/MethodBodyMirror.xml
@@ -1,5 +1,6 @@
 <Type Name="MethodBodyMirror" FullName="Mono.Debugger.Soft.MethodBodyMirror">
   <TypeSignature Language="C#" Value="public class MethodBodyMirror : Mono.Debugger.Soft.Mirror" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit MethodBodyMirror extends Mono.Debugger.Soft.Mirror" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -16,6 +17,7 @@
   <Members>
     <Member MemberName="GetILAsByteArray">
       <MemberSignature Language="C#" Value="public byte[] GetILAsByteArray ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance unsigned int8[] GetILAsByteArray() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -32,6 +34,7 @@
     </Member>
     <Member MemberName="Instructions">
       <MemberSignature Language="C#" Value="public System.Collections.Generic.List<Mono.Debugger.Soft.ILInstruction> Instructions { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class System.Collections.Generic.List`1<class Mono.Debugger.Soft.ILInstruction> Instructions" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -47,6 +50,7 @@
     </Member>
     <Member MemberName="Method">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.MethodMirror Method { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.MethodMirror Method" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/MethodEntryEvent.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/MethodEntryEvent.xml
index a050e81..432c36e 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/MethodEntryEvent.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/MethodEntryEvent.xml
@@ -1,5 +1,6 @@
 <Type Name="MethodEntryEvent" FullName="Mono.Debugger.Soft.MethodEntryEvent">
   <TypeSignature Language="C#" Value="public class MethodEntryEvent : Mono.Debugger.Soft.Event" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit MethodEntryEvent extends Mono.Debugger.Soft.Event" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -16,6 +17,7 @@
   <Members>
     <Member MemberName="Method">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.MethodMirror Method { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.MethodMirror Method" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/MethodEntryEventRequest.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/MethodEntryEventRequest.xml
index 0033fe6..e9cd0c7 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/MethodEntryEventRequest.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/MethodEntryEventRequest.xml
@@ -1,5 +1,6 @@
 <Type Name="MethodEntryEventRequest" FullName="Mono.Debugger.Soft.MethodEntryEventRequest">
   <TypeSignature Language="C#" Value="public sealed class MethodEntryEventRequest : Mono.Debugger.Soft.EventRequest" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed beforefieldinit MethodEntryEventRequest extends Mono.Debugger.Soft.EventRequest" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/MethodExitEvent.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/MethodExitEvent.xml
index 39a0b1c..ab846e8 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/MethodExitEvent.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/MethodExitEvent.xml
@@ -1,5 +1,6 @@
 <Type Name="MethodExitEvent" FullName="Mono.Debugger.Soft.MethodExitEvent">
   <TypeSignature Language="C#" Value="public class MethodExitEvent : Mono.Debugger.Soft.Event" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit MethodExitEvent extends Mono.Debugger.Soft.Event" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -16,6 +17,7 @@
   <Members>
     <Member MemberName="Method">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.MethodMirror Method { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.MethodMirror Method" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/MethodExitEventRequest.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/MethodExitEventRequest.xml
index 6de0ddf..df4e1eb 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/MethodExitEventRequest.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/MethodExitEventRequest.xml
@@ -1,5 +1,6 @@
 <Type Name="MethodExitEventRequest" FullName="Mono.Debugger.Soft.MethodExitEventRequest">
   <TypeSignature Language="C#" Value="public sealed class MethodExitEventRequest : Mono.Debugger.Soft.EventRequest" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed beforefieldinit MethodExitEventRequest extends Mono.Debugger.Soft.EventRequest" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/MethodMirror.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/MethodMirror.xml
index 544b29d..d23b32b 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/MethodMirror.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/MethodMirror.xml
@@ -1,5 +1,6 @@
 <Type Name="MethodMirror" FullName="Mono.Debugger.Soft.MethodMirror">
   <TypeSignature Language="C#" Value="public class MethodMirror : Mono.Debugger.Soft.Mirror" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit MethodMirror extends Mono.Debugger.Soft.Mirror" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -16,6 +17,7 @@
   <Members>
     <Member MemberName="Attributes">
       <MemberSignature Language="C#" Value="public System.Reflection.MethodAttributes Attributes { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance valuetype System.Reflection.MethodAttributes Attributes" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -31,6 +33,7 @@
     </Member>
     <Member MemberName="DeclaringType">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.TypeMirror DeclaringType { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.TypeMirror DeclaringType" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -46,6 +49,7 @@
     </Member>
     <Member MemberName="FullName">
       <MemberSignature Language="C#" Value="public string FullName { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance string FullName" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -61,6 +65,7 @@
     </Member>
     <Member MemberName="GetLocal">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.LocalVariable GetLocal (string name);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.LocalVariable GetLocal(string name) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -80,6 +85,7 @@
     </Member>
     <Member MemberName="GetLocals">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.LocalVariable[] GetLocals ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.LocalVariable[] GetLocals() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -96,6 +102,7 @@
     </Member>
     <Member MemberName="GetMethodBody">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.MethodBodyMirror GetMethodBody ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.MethodBodyMirror GetMethodBody() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -112,6 +119,7 @@
     </Member>
     <Member MemberName="GetParameters">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.ParameterInfoMirror[] GetParameters ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.ParameterInfoMirror[] GetParameters() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -128,6 +136,7 @@
     </Member>
     <Member MemberName="ILOffsets">
       <MemberSignature Language="C#" Value="public System.Collections.Generic.IList<int> ILOffsets { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class System.Collections.Generic.IList`1<int32> ILOffsets" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -143,6 +152,7 @@
     </Member>
     <Member MemberName="IsAbstract">
       <MemberSignature Language="C#" Value="public bool IsAbstract { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsAbstract" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -158,6 +168,7 @@
     </Member>
     <Member MemberName="IsAssembly">
       <MemberSignature Language="C#" Value="public bool IsAssembly { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsAssembly" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -173,6 +184,7 @@
     </Member>
     <Member MemberName="IsConstructor">
       <MemberSignature Language="C#" Value="public bool IsConstructor { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsConstructor" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -188,6 +200,7 @@
     </Member>
     <Member MemberName="IsFamily">
       <MemberSignature Language="C#" Value="public bool IsFamily { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsFamily" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -203,6 +216,7 @@
     </Member>
     <Member MemberName="IsFamilyAndAssembly">
       <MemberSignature Language="C#" Value="public bool IsFamilyAndAssembly { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsFamilyAndAssembly" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -218,6 +232,7 @@
     </Member>
     <Member MemberName="IsFamilyOrAssembly">
       <MemberSignature Language="C#" Value="public bool IsFamilyOrAssembly { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsFamilyOrAssembly" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -233,6 +248,7 @@
     </Member>
     <Member MemberName="IsFinal">
       <MemberSignature Language="C#" Value="public bool IsFinal { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsFinal" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -248,6 +264,7 @@
     </Member>
     <Member MemberName="IsHideBySig">
       <MemberSignature Language="C#" Value="public bool IsHideBySig { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsHideBySig" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -263,6 +280,7 @@
     </Member>
     <Member MemberName="IsPrivate">
       <MemberSignature Language="C#" Value="public bool IsPrivate { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsPrivate" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -278,6 +296,7 @@
     </Member>
     <Member MemberName="IsPublic">
       <MemberSignature Language="C#" Value="public bool IsPublic { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsPublic" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -293,6 +312,7 @@
     </Member>
     <Member MemberName="IsSpecialName">
       <MemberSignature Language="C#" Value="public bool IsSpecialName { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsSpecialName" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -308,6 +328,7 @@
     </Member>
     <Member MemberName="IsStatic">
       <MemberSignature Language="C#" Value="public bool IsStatic { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsStatic" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -323,6 +344,7 @@
     </Member>
     <Member MemberName="IsVirtual">
       <MemberSignature Language="C#" Value="public bool IsVirtual { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsVirtual" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -338,6 +360,7 @@
     </Member>
     <Member MemberName="LineNumbers">
       <MemberSignature Language="C#" Value="public System.Collections.Generic.IList<int> LineNumbers { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class System.Collections.Generic.IList`1<int32> LineNumbers" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -353,6 +376,7 @@
     </Member>
     <Member MemberName="LocationAtILOffset">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.Location LocationAtILOffset (int il_offset);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.Location LocationAtILOffset(int32 il_offset) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -372,6 +396,7 @@
     </Member>
     <Member MemberName="Locations">
       <MemberSignature Language="C#" Value="public System.Collections.Generic.IList<Mono.Debugger.Soft.Location> Locations { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class System.Collections.Generic.IList`1<class Mono.Debugger.Soft.Location> Locations" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -387,6 +412,7 @@
     </Member>
     <Member MemberName="Metadata">
       <MemberSignature Language="C#" Value="public Mono.Cecil.MethodDefinition Metadata { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Cecil.MethodDefinition Metadata" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -402,6 +428,7 @@
     </Member>
     <Member MemberName="MetadataToken">
       <MemberSignature Language="C#" Value="public int MetadataToken { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance int32 MetadataToken" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -417,6 +444,7 @@
     </Member>
     <Member MemberName="Name">
       <MemberSignature Language="C#" Value="public string Name { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance string Name" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -432,6 +460,7 @@
     </Member>
     <Member MemberName="ReturnParameter">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.ParameterInfoMirror ReturnParameter { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.ParameterInfoMirror ReturnParameter" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -447,6 +476,7 @@
     </Member>
     <Member MemberName="ReturnType">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.TypeMirror ReturnType { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.TypeMirror ReturnType" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -462,6 +492,7 @@
     </Member>
     <Member MemberName="SourceFile">
       <MemberSignature Language="C#" Value="public string SourceFile { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance string SourceFile" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/Mirror.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/Mirror.xml
index ea39681..0d185f8 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/Mirror.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/Mirror.xml
@@ -1,5 +1,6 @@
 <Type Name="Mirror" FullName="Mono.Debugger.Soft.Mirror">
   <TypeSignature Language="C#" Value="public abstract class Mirror : Mono.Debugger.Soft.IMirror" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi abstract beforefieldinit Mirror extends System.Object implements class Mono.Debugger.Soft.IMirror" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -20,6 +21,7 @@
   <Members>
     <Member MemberName="CheckMirror">
       <MemberSignature Language="C#" Value="protected void CheckMirror (Mono.Debugger.Soft.Mirror m);" />
+      <MemberSignature Language="ILAsm" Value=".method familyhidebysig instance void CheckMirror(class Mono.Debugger.Soft.Mirror m) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -38,6 +40,7 @@
     </Member>
     <Member MemberName="id">
       <MemberSignature Language="C#" Value="protected long id;" />
+      <MemberSignature Language="ILAsm" Value=".field family int64 id" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -52,6 +55,7 @@
     </Member>
     <Member MemberName="SetVirtualMachine">
       <MemberSignature Language="C#" Value="protected void SetVirtualMachine (Mono.Debugger.Soft.VirtualMachine vm);" />
+      <MemberSignature Language="ILAsm" Value=".method familyhidebysig instance void SetVirtualMachine(class Mono.Debugger.Soft.VirtualMachine vm) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -70,6 +74,7 @@
     </Member>
     <Member MemberName="VirtualMachine">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.VirtualMachine VirtualMachine { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.VirtualMachine VirtualMachine" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -85,6 +90,7 @@
     </Member>
     <Member MemberName="vm">
       <MemberSignature Language="C#" Value="protected Mono.Debugger.Soft.VirtualMachine vm;" />
+      <MemberSignature Language="ILAsm" Value=".field family class Mono.Debugger.Soft.VirtualMachine vm" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/ModuleMirror.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/ModuleMirror.xml
index df3845d..aadc349 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/ModuleMirror.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/ModuleMirror.xml
@@ -1,5 +1,6 @@
 <Type Name="ModuleMirror" FullName="Mono.Debugger.Soft.ModuleMirror">
   <TypeSignature Language="C#" Value="public class ModuleMirror : Mono.Debugger.Soft.Mirror" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit ModuleMirror extends Mono.Debugger.Soft.Mirror" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -16,6 +17,7 @@
   <Members>
     <Member MemberName="Assembly">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.AssemblyMirror Assembly { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.AssemblyMirror Assembly" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -31,6 +33,7 @@
     </Member>
     <Member MemberName="FullyQualifiedName">
       <MemberSignature Language="C#" Value="public string FullyQualifiedName { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance string FullyQualifiedName" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -46,6 +49,7 @@
     </Member>
     <Member MemberName="ModuleVersionId">
       <MemberSignature Language="C#" Value="public Guid ModuleVersionId { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance valuetype System.Guid ModuleVersionId" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -61,6 +65,7 @@
     </Member>
     <Member MemberName="Name">
       <MemberSignature Language="C#" Value="public string Name { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance string Name" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -76,6 +81,7 @@
     </Member>
     <Member MemberName="ScopeName">
       <MemberSignature Language="C#" Value="public string ScopeName { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance string ScopeName" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/ObjectCollectedException.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/ObjectCollectedException.xml
index 348c3db..46dc46a 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/ObjectCollectedException.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/ObjectCollectedException.xml
@@ -1,5 +1,6 @@
 <Type Name="ObjectCollectedException" FullName="Mono.Debugger.Soft.ObjectCollectedException">
   <TypeSignature Language="C#" Value="public class ObjectCollectedException : Exception" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit ObjectCollectedException extends System.Exception" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -16,6 +17,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public ObjectCollectedException ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/ObjectMirror.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/ObjectMirror.xml
index ed5d156..765fe04 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/ObjectMirror.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/ObjectMirror.xml
@@ -1,5 +1,6 @@
 <Type Name="ObjectMirror" FullName="Mono.Debugger.Soft.ObjectMirror">
   <TypeSignature Language="C#" Value="public class ObjectMirror : Mono.Debugger.Soft.Value" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit ObjectMirror extends Mono.Debugger.Soft.Value" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -16,6 +17,7 @@
   <Members>
     <Member MemberName="Address">
       <MemberSignature Language="C#" Value="public long Address { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance int64 Address" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -29,8 +31,76 @@
         <remarks>To be added.</remarks>
       </Docs>
     </Member>
+    <Member MemberName="BeginInvokeMethod">
+      <MemberSignature Language="C#" Value="public IAsyncResult BeginInvokeMethod (Mono.Debugger.Soft.ThreadMirror thread, Mono.Debugger.Soft.MethodMirror method, System.Collections.Generic.IList<Mono.Debugger.Soft.Value> arguments, Mono.Debugger.Soft.InvokeOptions options, AsyncCallback callback, object state);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class System.IAsyncResult BeginInvokeMethod(class Mono.Debugger.Soft.ThreadMirror thread, class Mono.Debugger.Soft.MethodMirror method, class System.Collections.Generic.IList`1<class Mono.Debugger.Soft.Value> arguments, valuetype Mono.Debugger.Soft.InvokeOptions options, class System.AsyncCallback callback, object state) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.IAsyncResult</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="thread" Type="Mono.Debugger.Soft.ThreadMirror" />
+        <Parameter Name="method" Type="Mono.Debugger.Soft.MethodMirror" />
+        <Parameter Name="arguments" Type="System.Collections.Generic.IList<Mono.Debugger.Soft.Value>" />
+        <Parameter Name="options" Type="Mono.Debugger.Soft.InvokeOptions" />
+        <Parameter Name="callback" Type="System.AsyncCallback" />
+        <Parameter Name="state" Type="System.Object" />
+      </Parameters>
+      <Docs>
+        <param name="thread">To be added.</param>
+        <param name="method">To be added.</param>
+        <param name="arguments">To be added.</param>
+        <param name="options">To be added.</param>
+        <param name="callback">To be added.</param>
+        <param name="state">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="BeginInvokeMethod">
+      <MemberSignature Language="C#" Value="public IAsyncResult BeginInvokeMethod (Mono.Debugger.Soft.VirtualMachine vm, Mono.Debugger.Soft.ThreadMirror thread, Mono.Debugger.Soft.MethodMirror method, System.Collections.Generic.IList<Mono.Debugger.Soft.Value> arguments, Mono.Debugger.Soft.InvokeOptions options, AsyncCallback callback, object state);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class System.IAsyncResult BeginInvokeMethod(class Mono.Debugger.Soft.VirtualMachine vm, class Mono.Debugger.Soft.ThreadMirror thread, class Mono.Debugger.Soft.MethodMirror method, class System.Collections.Generic.IList`1<class Mono.Debugger.Soft.Value> arguments, valuetype Mono.Debugger.Soft.InvokeOptions options, class System.AsyncCallback callback, object state) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <Attributes>
+        <Attribute>
+          <AttributeName>System.Obsolete("Use the overload without the 'vm' argument")</AttributeName>
+        </Attribute>
+      </Attributes>
+      <ReturnValue>
+        <ReturnType>System.IAsyncResult</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="vm" Type="Mono.Debugger.Soft.VirtualMachine" />
+        <Parameter Name="thread" Type="Mono.Debugger.Soft.ThreadMirror" />
+        <Parameter Name="method" Type="Mono.Debugger.Soft.MethodMirror" />
+        <Parameter Name="arguments" Type="System.Collections.Generic.IList<Mono.Debugger.Soft.Value>" />
+        <Parameter Name="options" Type="Mono.Debugger.Soft.InvokeOptions" />
+        <Parameter Name="callback" Type="System.AsyncCallback" />
+        <Parameter Name="state" Type="System.Object" />
+      </Parameters>
+      <Docs>
+        <param name="vm">To be added.</param>
+        <param name="thread">To be added.</param>
+        <param name="method">To be added.</param>
+        <param name="arguments">To be added.</param>
+        <param name="options">To be added.</param>
+        <param name="callback">To be added.</param>
+        <param name="state">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
     <Member MemberName="Domain">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.AppDomainMirror Domain { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.AppDomainMirror Domain" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -44,8 +114,29 @@
         <remarks>To be added.</remarks>
       </Docs>
     </Member>
+    <Member MemberName="EndInvokeMethod">
+      <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.Value EndInvokeMethod (IAsyncResult asyncResult);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.Value EndInvokeMethod(class System.IAsyncResult asyncResult) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Debugger.Soft.Value</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="asyncResult" Type="System.IAsyncResult" />
+      </Parameters>
+      <Docs>
+        <param name="asyncResult">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
     <Member MemberName="GetValue">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.Value GetValue (Mono.Debugger.Soft.FieldInfoMirror field);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.Value GetValue(class Mono.Debugger.Soft.FieldInfoMirror field) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -65,6 +156,7 @@
     </Member>
     <Member MemberName="GetValues">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.Value[] GetValues (System.Collections.Generic.IList<Mono.Debugger.Soft.FieldInfoMirror> fields);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.Value[] GetValues(class System.Collections.Generic.IList`1<class Mono.Debugger.Soft.FieldInfoMirror> fields) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -84,6 +176,31 @@
     </Member>
     <Member MemberName="InvokeMethod">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.Value InvokeMethod (Mono.Debugger.Soft.ThreadMirror thread, Mono.Debugger.Soft.MethodMirror method, System.Collections.Generic.IList<Mono.Debugger.Soft.Value> arguments);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.Value InvokeMethod(class Mono.Debugger.Soft.ThreadMirror thread, class Mono.Debugger.Soft.MethodMirror method, class System.Collections.Generic.IList`1<class Mono.Debugger.Soft.Value> arguments) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Debugger.Soft.Value</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="thread" Type="Mono.Debugger.Soft.ThreadMirror" />
+        <Parameter Name="method" Type="Mono.Debugger.Soft.MethodMirror" />
+        <Parameter Name="arguments" Type="System.Collections.Generic.IList<Mono.Debugger.Soft.Value>" />
+      </Parameters>
+      <Docs>
+        <param name="thread">To be added.</param>
+        <param name="method">To be added.</param>
+        <param name="arguments">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="InvokeMethod">
+      <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.Value InvokeMethod (Mono.Debugger.Soft.ThreadMirror thread, Mono.Debugger.Soft.MethodMirror method, System.Collections.Generic.IList<Mono.Debugger.Soft.Value> arguments, Mono.Debugger.Soft.InvokeOptions options);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.Value InvokeMethod(class Mono.Debugger.Soft.ThreadMirror thread, class Mono.Debugger.Soft.MethodMirror method, class System.Collections.Generic.IList`1<class Mono.Debugger.Soft.Value> arguments, valuetype Mono.Debugger.Soft.InvokeOptions options) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -95,11 +212,13 @@
         <Parameter Name="thread" Type="Mono.Debugger.Soft.ThreadMirror" />
         <Parameter Name="method" Type="Mono.Debugger.Soft.MethodMirror" />
         <Parameter Name="arguments" Type="System.Collections.Generic.IList<Mono.Debugger.Soft.Value>" />
+        <Parameter Name="options" Type="Mono.Debugger.Soft.InvokeOptions" />
       </Parameters>
       <Docs>
         <param name="thread">To be added.</param>
         <param name="method">To be added.</param>
         <param name="arguments">To be added.</param>
+        <param name="options">To be added.</param>
         <summary>To be added.</summary>
         <returns>To be added.</returns>
         <remarks>To be added.</remarks>
@@ -107,6 +226,7 @@
     </Member>
     <Member MemberName="IsCollected">
       <MemberSignature Language="C#" Value="public bool IsCollected { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsCollected" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -122,6 +242,7 @@
     </Member>
     <Member MemberName="SetValue">
       <MemberSignature Language="C#" Value="public void SetValue (Mono.Debugger.Soft.FieldInfoMirror field, Mono.Debugger.Soft.Value value);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void SetValue(class Mono.Debugger.Soft.FieldInfoMirror field, class Mono.Debugger.Soft.Value value) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -142,6 +263,7 @@
     </Member>
     <Member MemberName="SetValues">
       <MemberSignature Language="C#" Value="public void SetValues (System.Collections.Generic.IList<Mono.Debugger.Soft.FieldInfoMirror> fields, Mono.Debugger.Soft.Value[] values);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void SetValues(class System.Collections.Generic.IList`1<class Mono.Debugger.Soft.FieldInfoMirror> fields, class Mono.Debugger.Soft.Value[] values) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -162,6 +284,7 @@
     </Member>
     <Member MemberName="Type">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.TypeMirror Type { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.TypeMirror Type" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/ParameterInfoMirror.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/ParameterInfoMirror.xml
index 97e1315..f75d9b6 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/ParameterInfoMirror.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/ParameterInfoMirror.xml
@@ -1,5 +1,6 @@
 <Type Name="ParameterInfoMirror" FullName="Mono.Debugger.Soft.ParameterInfoMirror">
   <TypeSignature Language="C#" Value="public class ParameterInfoMirror : Mono.Debugger.Soft.Mirror" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit ParameterInfoMirror extends Mono.Debugger.Soft.Mirror" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -16,6 +17,7 @@
   <Members>
     <Member MemberName="Attributes">
       <MemberSignature Language="C#" Value="public System.Reflection.ParameterAttributes Attributes { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance valuetype System.Reflection.ParameterAttributes Attributes" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -31,6 +33,7 @@
     </Member>
     <Member MemberName="IsRetval">
       <MemberSignature Language="C#" Value="public bool IsRetval { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsRetval" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -46,6 +49,7 @@
     </Member>
     <Member MemberName="Method">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.MethodMirror Method { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.MethodMirror Method" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -61,6 +65,7 @@
     </Member>
     <Member MemberName="Name">
       <MemberSignature Language="C#" Value="public string Name { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance string Name" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -76,6 +81,7 @@
     </Member>
     <Member MemberName="ParameterType">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.TypeMirror ParameterType { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.TypeMirror ParameterType" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -91,6 +97,7 @@
     </Member>
     <Member MemberName="Position">
       <MemberSignature Language="C#" Value="public int Position { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance int32 Position" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -106,6 +113,7 @@
     </Member>
     <Member MemberName="ToString">
       <MemberSignature Language="C#" Value="public override string ToString ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig virtual instance string ToString() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/PrimitiveValue.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/PrimitiveValue.xml
index 5f04819..e4d0ebd 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/PrimitiveValue.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/PrimitiveValue.xml
@@ -1,5 +1,6 @@
 <Type Name="PrimitiveValue" FullName="Mono.Debugger.Soft.PrimitiveValue">
   <TypeSignature Language="C#" Value="public class PrimitiveValue : Mono.Debugger.Soft.Value" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit PrimitiveValue extends Mono.Debugger.Soft.Value" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -15,6 +16,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public PrimitiveValue (Mono.Debugger.Soft.VirtualMachine vm, object value);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(class Mono.Debugger.Soft.VirtualMachine vm, object value) cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -32,6 +34,7 @@
     </Member>
     <Member MemberName="Equals">
       <MemberSignature Language="C#" Value="public override bool Equals (object obj);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig virtual instance bool Equals(object obj) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -51,6 +54,7 @@
     </Member>
     <Member MemberName="GetHashCode">
       <MemberSignature Language="C#" Value="public override int GetHashCode ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig virtual instance int32 GetHashCode() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -67,6 +71,7 @@
     </Member>
     <Member MemberName="ToString">
       <MemberSignature Language="C#" Value="public override string ToString ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig virtual instance string ToString() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -83,6 +88,7 @@
     </Member>
     <Member MemberName="Value">
       <MemberSignature Language="C#" Value="public object Value { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance object Value" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/PropertyInfoMirror.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/PropertyInfoMirror.xml
index 62a31c6..d259631 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/PropertyInfoMirror.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/PropertyInfoMirror.xml
@@ -1,5 +1,6 @@
 <Type Name="PropertyInfoMirror" FullName="Mono.Debugger.Soft.PropertyInfoMirror">
   <TypeSignature Language="C#" Value="public class PropertyInfoMirror : Mono.Debugger.Soft.Mirror" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit PropertyInfoMirror extends Mono.Debugger.Soft.Mirror" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -15,6 +16,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public PropertyInfoMirror (Mono.Debugger.Soft.TypeMirror parent, long id, string name, Mono.Debugger.Soft.MethodMirror get_method, Mono.Debugger.Soft.MethodMirror set_method, System.Reflection.PropertyAttributes attrs);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(class Mono.Debugger.Soft.TypeMirror parent, int64 id, string name, class Mono.Debugger.Soft.MethodMirror get_method, class Mono.Debugger.Soft.MethodMirror set_method, valuetype System.Reflection.PropertyAttributes attrs) cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -40,6 +42,7 @@
     </Member>
     <Member MemberName="Attributes">
       <MemberSignature Language="C#" Value="public System.Reflection.PropertyAttributes Attributes { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance valuetype System.Reflection.PropertyAttributes Attributes" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -55,6 +58,7 @@
     </Member>
     <Member MemberName="DeclaringType">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.TypeMirror DeclaringType { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.TypeMirror DeclaringType" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -70,6 +74,7 @@
     </Member>
     <Member MemberName="GetCustomAttributes">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.CustomAttributeDataMirror[] GetCustomAttributes (bool inherit);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.CustomAttributeDataMirror[] GetCustomAttributes(bool inherit) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -89,6 +94,7 @@
     </Member>
     <Member MemberName="GetCustomAttributes">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.CustomAttributeDataMirror[] GetCustomAttributes (Mono.Debugger.Soft.TypeMirror attributeType, bool inherit);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.CustomAttributeDataMirror[] GetCustomAttributes(class Mono.Debugger.Soft.TypeMirror attributeType, bool inherit) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -110,6 +116,7 @@
     </Member>
     <Member MemberName="GetGetMethod">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.MethodMirror GetGetMethod ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.MethodMirror GetGetMethod() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -126,6 +133,7 @@
     </Member>
     <Member MemberName="GetGetMethod">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.MethodMirror GetGetMethod (bool nonPublic);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.MethodMirror GetGetMethod(bool nonPublic) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -145,6 +153,7 @@
     </Member>
     <Member MemberName="GetIndexParameters">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.ParameterInfoMirror[] GetIndexParameters ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.ParameterInfoMirror[] GetIndexParameters() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -161,6 +170,7 @@
     </Member>
     <Member MemberName="GetSetMethod">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.MethodMirror GetSetMethod ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.MethodMirror GetSetMethod() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -177,6 +187,7 @@
     </Member>
     <Member MemberName="GetSetMethod">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.MethodMirror GetSetMethod (bool nonPublic);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.MethodMirror GetSetMethod(bool nonPublic) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -196,6 +207,7 @@
     </Member>
     <Member MemberName="IsSpecialName">
       <MemberSignature Language="C#" Value="public bool IsSpecialName { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsSpecialName" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -211,6 +223,7 @@
     </Member>
     <Member MemberName="Name">
       <MemberSignature Language="C#" Value="public string Name { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance string Name" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -226,6 +239,7 @@
     </Member>
     <Member MemberName="PropertyType">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.TypeMirror PropertyType { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.TypeMirror PropertyType" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/StackFrame.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/StackFrame.xml
index c29e98b..fd636f1 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/StackFrame.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/StackFrame.xml
@@ -1,5 +1,6 @@
 <Type Name="StackFrame" FullName="Mono.Debugger.Soft.StackFrame">
   <TypeSignature Language="C#" Value="public class StackFrame : Mono.Debugger.Soft.Mirror" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit StackFrame extends Mono.Debugger.Soft.Mirror" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -16,6 +17,7 @@
   <Members>
     <Member MemberName="FileName">
       <MemberSignature Language="C#" Value="public string FileName { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance string FileName" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -31,6 +33,7 @@
     </Member>
     <Member MemberName="GetArgument">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.Value GetArgument (int pos);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.Value GetArgument(int32 pos) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -50,6 +53,7 @@
     </Member>
     <Member MemberName="GetThis">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.Value GetThis ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.Value GetThis() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -66,6 +70,7 @@
     </Member>
     <Member MemberName="GetValue">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.Value GetValue (Mono.Debugger.Soft.LocalVariable var);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.Value GetValue(class Mono.Debugger.Soft.LocalVariable var) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -85,6 +90,7 @@
     </Member>
     <Member MemberName="GetValue">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.Value GetValue (Mono.Debugger.Soft.ParameterInfoMirror param);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.Value GetValue(class Mono.Debugger.Soft.ParameterInfoMirror param) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -104,6 +110,7 @@
     </Member>
     <Member MemberName="GetValues">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.Value[] GetValues (Mono.Debugger.Soft.LocalVariable[] vars);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.Value[] GetValues(class Mono.Debugger.Soft.LocalVariable[] vars) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -121,8 +128,46 @@
         <remarks>To be added.</remarks>
       </Docs>
     </Member>
+    <Member MemberName="GetVisibleVariableByName">
+      <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.LocalVariable GetVisibleVariableByName (string name);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.LocalVariable GetVisibleVariableByName(string name) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Debugger.Soft.LocalVariable</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="name" Type="System.String" />
+      </Parameters>
+      <Docs>
+        <param name="name">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="GetVisibleVariables">
+      <MemberSignature Language="C#" Value="public System.Collections.Generic.IList<Mono.Debugger.Soft.LocalVariable> GetVisibleVariables ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class System.Collections.Generic.IList`1<class Mono.Debugger.Soft.LocalVariable> GetVisibleVariables() cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.Collections.Generic.IList<Mono.Debugger.Soft.LocalVariable></ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
     <Member MemberName="ILOffset">
       <MemberSignature Language="C#" Value="public int ILOffset { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance int32 ILOffset" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -138,6 +183,7 @@
     </Member>
     <Member MemberName="IsDebuggerInvoke">
       <MemberSignature Language="C#" Value="public bool IsDebuggerInvoke { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsDebuggerInvoke" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -147,11 +193,13 @@
       </ReturnValue>
       <Docs>
         <summary>Returns whenever this stack frame represents the first frame of a method invocation done by the debugger itself using the InvokeMethod () methods.</summary>
+        <value>To be added.</value>
         <remarks>Not in JDI.</remarks>
       </Docs>
     </Member>
     <Member MemberName="LineNumber">
       <MemberSignature Language="C#" Value="public int LineNumber { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance int32 LineNumber" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -167,6 +215,7 @@
     </Member>
     <Member MemberName="Location">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.Location Location { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.Location Location" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -182,6 +231,7 @@
     </Member>
     <Member MemberName="Method">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.MethodMirror Method { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.MethodMirror Method" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -197,6 +247,7 @@
     </Member>
     <Member MemberName="SetValue">
       <MemberSignature Language="C#" Value="public void SetValue (Mono.Debugger.Soft.LocalVariable var, Mono.Debugger.Soft.Value value);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void SetValue(class Mono.Debugger.Soft.LocalVariable var, class Mono.Debugger.Soft.Value value) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -217,6 +268,7 @@
     </Member>
     <Member MemberName="SetValue">
       <MemberSignature Language="C#" Value="public void SetValue (Mono.Debugger.Soft.ParameterInfoMirror param, Mono.Debugger.Soft.Value value);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void SetValue(class Mono.Debugger.Soft.ParameterInfoMirror param, class Mono.Debugger.Soft.Value value) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -237,6 +289,7 @@
     </Member>
     <Member MemberName="Thread">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.ThreadMirror Thread { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.ThreadMirror Thread" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/StackFrameType.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/StackFrameType.xml
deleted file mode 100644
index 6603f69..0000000
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/StackFrameType.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<Type Name="StackFrameType" FullName="Mono.Debugger.Soft.StackFrameType">
-  <TypeSignature Language="C#" Value="public enum StackFrameType" />
-  <AssemblyInfo>
-    <AssemblyName>Mono.Debugger.Soft</AssemblyName>
-    <AssemblyVersion>0.0.0.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Docs>
-    <summary>Represents the type of a stack frame.</summary>
-    <remarks>Not in JDI</remarks>
-  </Docs>
-  <Members>
-    <Member MemberName="DebuggerInvoke">
-      <MemberSignature Language="C#" Value="DebuggerInvoke" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.0.0.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Debugger.Soft.StackFrameType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>This is a pseudo stack frame marking the location in the stack where a method invocation started by the debugger itself begins.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Normal">
-      <MemberSignature Language="C#" Value="Normal" />
-      <MemberType>Field</MemberType>
-      <AssemblyInfo>
-        <AssemblyVersion>0.0.0.0</AssemblyVersion>
-      </AssemblyInfo>
-      <ReturnValue>
-        <ReturnType>Mono.Debugger.Soft.StackFrameType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>The stack frame is for a normal managed method call.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/StepDepth.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/StepDepth.xml
index c8261eb..d0d8371 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/StepDepth.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/StepDepth.xml
@@ -1,5 +1,6 @@
 <Type Name="StepDepth" FullName="Mono.Debugger.Soft.StepDepth">
   <TypeSignature Language="C#" Value="public enum StepDepth" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed StepDepth extends System.Enum" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -15,6 +16,7 @@
   <Members>
     <Member MemberName="Into">
       <MemberSignature Language="C#" Value="Into" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.Debugger.Soft.StepDepth Into = int32(0)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -28,6 +30,7 @@
     </Member>
     <Member MemberName="Out">
       <MemberSignature Language="C#" Value="Out" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.Debugger.Soft.StepDepth Out = int32(2)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -41,6 +44,7 @@
     </Member>
     <Member MemberName="Over">
       <MemberSignature Language="C#" Value="Over" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.Debugger.Soft.StepDepth Over = int32(1)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/StepEvent.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/StepEvent.xml
index 187b786..d922227 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/StepEvent.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/StepEvent.xml
@@ -1,5 +1,6 @@
 <Type Name="StepEvent" FullName="Mono.Debugger.Soft.StepEvent">
   <TypeSignature Language="C#" Value="public class StepEvent : Mono.Debugger.Soft.Event" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit StepEvent extends Mono.Debugger.Soft.Event" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -16,6 +17,7 @@
   <Members>
     <Member MemberName="Location">
       <MemberSignature Language="C#" Value="public long Location { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance int64 Location" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -31,6 +33,7 @@
     </Member>
     <Member MemberName="Method">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.MethodMirror Method { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.MethodMirror Method" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/StepEventRequest.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/StepEventRequest.xml
index 1a7199a..b653c0a 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/StepEventRequest.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/StepEventRequest.xml
@@ -1,5 +1,6 @@
 <Type Name="StepEventRequest" FullName="Mono.Debugger.Soft.StepEventRequest">
   <TypeSignature Language="C#" Value="public sealed class StepEventRequest : Mono.Debugger.Soft.EventRequest" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed beforefieldinit StepEventRequest extends Mono.Debugger.Soft.EventRequest" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -15,7 +16,8 @@
   </Docs>
   <Members>
     <Member MemberName="Depth">
-      <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.StepDepth Depth { set; get; }" />
+      <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.StepDepth Depth { get; set; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance valuetype Mono.Debugger.Soft.StepDepth Depth" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -31,6 +33,7 @@
     </Member>
     <Member MemberName="Enable">
       <MemberSignature Language="C#" Value="public override void Enable ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig virtual instance void Enable() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -45,7 +48,8 @@
       </Docs>
     </Member>
     <Member MemberName="Size">
-      <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.StepSize Size { set; get; }" />
+      <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.StepSize Size { get; set; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance valuetype Mono.Debugger.Soft.StepSize Size" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -61,6 +65,7 @@
     </Member>
     <Member MemberName="Thread">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.ThreadMirror Thread { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.ThreadMirror Thread" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/StepSize.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/StepSize.xml
index 41964ba..b13b0a7 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/StepSize.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/StepSize.xml
@@ -1,5 +1,6 @@
 <Type Name="StepSize" FullName="Mono.Debugger.Soft.StepSize">
   <TypeSignature Language="C#" Value="public enum StepSize" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed StepSize extends System.Enum" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -15,6 +16,7 @@
   <Members>
     <Member MemberName="Line">
       <MemberSignature Language="C#" Value="Line" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.Debugger.Soft.StepSize Line = int32(1)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -28,6 +30,7 @@
     </Member>
     <Member MemberName="Min">
       <MemberSignature Language="C#" Value="Min" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.Debugger.Soft.StepSize Min = int32(0)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/StringMirror.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/StringMirror.xml
index ccb1ce3..082f362 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/StringMirror.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/StringMirror.xml
@@ -1,5 +1,6 @@
 <Type Name="StringMirror" FullName="Mono.Debugger.Soft.StringMirror">
   <TypeSignature Language="C#" Value="public class StringMirror : Mono.Debugger.Soft.ObjectMirror" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit StringMirror extends Mono.Debugger.Soft.ObjectMirror" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -16,6 +17,7 @@
   <Members>
     <Member MemberName="Value">
       <MemberSignature Language="C#" Value="public string Value { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance string Value" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/StructMirror.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/StructMirror.xml
index 8ffe57a..bd8f6d2 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/StructMirror.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/StructMirror.xml
@@ -1,5 +1,6 @@
 <Type Name="StructMirror" FullName="Mono.Debugger.Soft.StructMirror">
   <TypeSignature Language="C#" Value="public class StructMirror : Mono.Debugger.Soft.Value" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit StructMirror extends Mono.Debugger.Soft.Value" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -14,8 +15,96 @@
     </remarks>
   </Docs>
   <Members>
+    <Member MemberName="BeginInvokeMethod">
+      <MemberSignature Language="C#" Value="public IAsyncResult BeginInvokeMethod (Mono.Debugger.Soft.ThreadMirror thread, Mono.Debugger.Soft.MethodMirror method, System.Collections.Generic.IList<Mono.Debugger.Soft.Value> arguments, Mono.Debugger.Soft.InvokeOptions options, AsyncCallback callback, object state);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class System.IAsyncResult BeginInvokeMethod(class Mono.Debugger.Soft.ThreadMirror thread, class Mono.Debugger.Soft.MethodMirror method, class System.Collections.Generic.IList`1<class Mono.Debugger.Soft.Value> arguments, valuetype Mono.Debugger.Soft.InvokeOptions options, class System.AsyncCallback callback, object state) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.IAsyncResult</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="thread" Type="Mono.Debugger.Soft.ThreadMirror" />
+        <Parameter Name="method" Type="Mono.Debugger.Soft.MethodMirror" />
+        <Parameter Name="arguments" Type="System.Collections.Generic.IList<Mono.Debugger.Soft.Value>" />
+        <Parameter Name="options" Type="Mono.Debugger.Soft.InvokeOptions" />
+        <Parameter Name="callback" Type="System.AsyncCallback" />
+        <Parameter Name="state" Type="System.Object" />
+      </Parameters>
+      <Docs>
+        <param name="thread">To be added.</param>
+        <param name="method">To be added.</param>
+        <param name="arguments">To be added.</param>
+        <param name="options">To be added.</param>
+        <param name="callback">To be added.</param>
+        <param name="state">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="BeginInvokeMethod">
+      <MemberSignature Language="C#" Value="public IAsyncResult BeginInvokeMethod (Mono.Debugger.Soft.VirtualMachine vm, Mono.Debugger.Soft.ThreadMirror thread, Mono.Debugger.Soft.MethodMirror method, System.Collections.Generic.IList<Mono.Debugger.Soft.Value> arguments, Mono.Debugger.Soft.InvokeOptions options, AsyncCallback callback, object state);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class System.IAsyncResult BeginInvokeMethod(class Mono.Debugger.Soft.VirtualMachine vm, class Mono.Debugger.Soft.ThreadMirror thread, class Mono.Debugger.Soft.MethodMirror method, class System.Collections.Generic.IList`1<class Mono.Debugger.Soft.Value> arguments, valuetype Mono.Debugger.Soft.InvokeOptions options, class System.AsyncCallback callback, object state) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <Attributes>
+        <Attribute>
+          <AttributeName>System.Obsolete("Use the overload without the 'vm' argument")</AttributeName>
+        </Attribute>
+      </Attributes>
+      <ReturnValue>
+        <ReturnType>System.IAsyncResult</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="vm" Type="Mono.Debugger.Soft.VirtualMachine" />
+        <Parameter Name="thread" Type="Mono.Debugger.Soft.ThreadMirror" />
+        <Parameter Name="method" Type="Mono.Debugger.Soft.MethodMirror" />
+        <Parameter Name="arguments" Type="System.Collections.Generic.IList<Mono.Debugger.Soft.Value>" />
+        <Parameter Name="options" Type="Mono.Debugger.Soft.InvokeOptions" />
+        <Parameter Name="callback" Type="System.AsyncCallback" />
+        <Parameter Name="state" Type="System.Object" />
+      </Parameters>
+      <Docs>
+        <param name="vm">To be added.</param>
+        <param name="thread">To be added.</param>
+        <param name="method">To be added.</param>
+        <param name="arguments">To be added.</param>
+        <param name="options">To be added.</param>
+        <param name="callback">To be added.</param>
+        <param name="state">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="EndInvokeMethod">
+      <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.Value EndInvokeMethod (IAsyncResult asyncResult);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.Value EndInvokeMethod(class System.IAsyncResult asyncResult) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Debugger.Soft.Value</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="asyncResult" Type="System.IAsyncResult" />
+      </Parameters>
+      <Docs>
+        <param name="asyncResult">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
     <Member MemberName="Fields">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.Value[] Fields { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.Value[] Fields" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -31,6 +120,31 @@
     </Member>
     <Member MemberName="InvokeMethod">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.Value InvokeMethod (Mono.Debugger.Soft.ThreadMirror thread, Mono.Debugger.Soft.MethodMirror method, System.Collections.Generic.IList<Mono.Debugger.Soft.Value> arguments);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.Value InvokeMethod(class Mono.Debugger.Soft.ThreadMirror thread, class Mono.Debugger.Soft.MethodMirror method, class System.Collections.Generic.IList`1<class Mono.Debugger.Soft.Value> arguments) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Debugger.Soft.Value</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="thread" Type="Mono.Debugger.Soft.ThreadMirror" />
+        <Parameter Name="method" Type="Mono.Debugger.Soft.MethodMirror" />
+        <Parameter Name="arguments" Type="System.Collections.Generic.IList<Mono.Debugger.Soft.Value>" />
+      </Parameters>
+      <Docs>
+        <param name="thread">To be added.</param>
+        <param name="method">To be added.</param>
+        <param name="arguments">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="InvokeMethod">
+      <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.Value InvokeMethod (Mono.Debugger.Soft.ThreadMirror thread, Mono.Debugger.Soft.MethodMirror method, System.Collections.Generic.IList<Mono.Debugger.Soft.Value> arguments, Mono.Debugger.Soft.InvokeOptions options);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.Value InvokeMethod(class Mono.Debugger.Soft.ThreadMirror thread, class Mono.Debugger.Soft.MethodMirror method, class System.Collections.Generic.IList`1<class Mono.Debugger.Soft.Value> arguments, valuetype Mono.Debugger.Soft.InvokeOptions options) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -42,11 +156,13 @@
         <Parameter Name="thread" Type="Mono.Debugger.Soft.ThreadMirror" />
         <Parameter Name="method" Type="Mono.Debugger.Soft.MethodMirror" />
         <Parameter Name="arguments" Type="System.Collections.Generic.IList<Mono.Debugger.Soft.Value>" />
+        <Parameter Name="options" Type="Mono.Debugger.Soft.InvokeOptions" />
       </Parameters>
       <Docs>
         <param name="thread">To be added.</param>
         <param name="method">To be added.</param>
         <param name="arguments">To be added.</param>
+        <param name="options">To be added.</param>
         <summary>To be added.</summary>
         <returns>To be added.</returns>
         <remarks>To be added.</remarks>
@@ -54,6 +170,7 @@
     </Member>
     <Member MemberName="Item">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.Value this[string field] { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.Value Item(string)" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -73,6 +190,7 @@
     </Member>
     <Member MemberName="Type">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.TypeMirror Type { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.TypeMirror Type" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/SuspendPolicy.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/SuspendPolicy.xml
index d68af57..91f3606 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/SuspendPolicy.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/SuspendPolicy.xml
@@ -1,5 +1,6 @@
 <Type Name="SuspendPolicy" FullName="Mono.Debugger.Soft.SuspendPolicy">
   <TypeSignature Language="C#" Value="public enum SuspendPolicy" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed SuspendPolicy extends System.Enum" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -15,6 +16,7 @@
   <Members>
     <Member MemberName="All">
       <MemberSignature Language="C#" Value="All" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.Debugger.Soft.SuspendPolicy All = int32(2)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -28,6 +30,7 @@
     </Member>
     <Member MemberName="EventThread">
       <MemberSignature Language="C#" Value="EventThread" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.Debugger.Soft.SuspendPolicy EventThread = int32(1)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -41,6 +44,7 @@
     </Member>
     <Member MemberName="None">
       <MemberSignature Language="C#" Value="None" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.Debugger.Soft.SuspendPolicy None = int32(0)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/ThreadDeathEvent.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/ThreadDeathEvent.xml
index 88b19a9..67db021 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/ThreadDeathEvent.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/ThreadDeathEvent.xml
@@ -1,5 +1,6 @@
 <Type Name="ThreadDeathEvent" FullName="Mono.Debugger.Soft.ThreadDeathEvent">
   <TypeSignature Language="C#" Value="public class ThreadDeathEvent : Mono.Debugger.Soft.Event" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit ThreadDeathEvent extends Mono.Debugger.Soft.Event" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/ThreadMirror.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/ThreadMirror.xml
index 95697f9..1a60a13 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/ThreadMirror.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/ThreadMirror.xml
@@ -1,5 +1,6 @@
 <Type Name="ThreadMirror" FullName="Mono.Debugger.Soft.ThreadMirror">
   <TypeSignature Language="C#" Value="public class ThreadMirror : Mono.Debugger.Soft.ObjectMirror" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit ThreadMirror extends Mono.Debugger.Soft.ObjectMirror" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -16,6 +17,7 @@
   <Members>
     <Member MemberName="GetFrames">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.StackFrame[] GetFrames ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.StackFrame[] GetFrames() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -32,6 +34,7 @@
     </Member>
     <Member MemberName="Id">
       <MemberSignature Language="C#" Value="public long Id { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance int64 Id" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -45,8 +48,25 @@
         <remarks>To be added.</remarks>
       </Docs>
     </Member>
+    <Member MemberName="IsThreadPoolThread">
+      <MemberSignature Language="C#" Value="public bool IsThreadPoolThread { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsThreadPoolThread" />
+      <MemberType>Property</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.Boolean</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
     <Member MemberName="Name">
       <MemberSignature Language="C#" Value="public string Name { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance string Name" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -60,5 +80,37 @@
         <remarks>To be added.</remarks>
       </Docs>
     </Member>
+    <Member MemberName="ThreadId">
+      <MemberSignature Language="C#" Value="public long ThreadId { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance int64 ThreadId" />
+      <MemberType>Property</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.Int64</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="ThreadState">
+      <MemberSignature Language="C#" Value="public System.Threading.ThreadState ThreadState { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance valuetype System.Threading.ThreadState ThreadState" />
+      <MemberType>Property</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.Threading.ThreadState</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
   </Members>
 </Type>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/ThreadStartEvent.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/ThreadStartEvent.xml
index 265ab41..034ab4d 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/ThreadStartEvent.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/ThreadStartEvent.xml
@@ -1,5 +1,6 @@
 <Type Name="ThreadStartEvent" FullName="Mono.Debugger.Soft.ThreadStartEvent">
   <TypeSignature Language="C#" Value="public class ThreadStartEvent : Mono.Debugger.Soft.Event" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit ThreadStartEvent extends Mono.Debugger.Soft.Event" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/TypeLoadEvent.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/TypeLoadEvent.xml
index 8295b43..947e4e5 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/TypeLoadEvent.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/TypeLoadEvent.xml
@@ -1,5 +1,6 @@
 <Type Name="TypeLoadEvent" FullName="Mono.Debugger.Soft.TypeLoadEvent">
   <TypeSignature Language="C#" Value="public class TypeLoadEvent : Mono.Debugger.Soft.Event" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit TypeLoadEvent extends Mono.Debugger.Soft.Event" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -16,6 +17,7 @@
   <Members>
     <Member MemberName="Type">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.TypeMirror Type { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.TypeMirror Type" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/TypeMirror.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/TypeMirror.xml
index 0c52165..25c5774 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/TypeMirror.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/TypeMirror.xml
@@ -1,5 +1,6 @@
 <Type Name="TypeMirror" FullName="Mono.Debugger.Soft.TypeMirror">
   <TypeSignature Language="C#" Value="public class TypeMirror : Mono.Debugger.Soft.Mirror" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit TypeMirror extends Mono.Debugger.Soft.Mirror" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -16,6 +17,7 @@
   <Members>
     <Member MemberName="Assembly">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.AssemblyMirror Assembly { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.AssemblyMirror Assembly" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -31,6 +33,7 @@
     </Member>
     <Member MemberName="Attributes">
       <MemberSignature Language="C#" Value="public System.Reflection.TypeAttributes Attributes { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance valuetype System.Reflection.TypeAttributes Attributes" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -46,6 +49,7 @@
     </Member>
     <Member MemberName="BaseType">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.TypeMirror BaseType { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.TypeMirror BaseType" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -59,8 +63,76 @@
         <remarks>To be added.</remarks>
       </Docs>
     </Member>
+    <Member MemberName="BeginInvokeMethod">
+      <MemberSignature Language="C#" Value="public IAsyncResult BeginInvokeMethod (Mono.Debugger.Soft.ThreadMirror thread, Mono.Debugger.Soft.MethodMirror method, System.Collections.Generic.IList<Mono.Debugger.Soft.Value> arguments, Mono.Debugger.Soft.InvokeOptions options, AsyncCallback callback, object state);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class System.IAsyncResult BeginInvokeMethod(class Mono.Debugger.Soft.ThreadMirror thread, class Mono.Debugger.Soft.MethodMirror method, class System.Collections.Generic.IList`1<class Mono.Debugger.Soft.Value> arguments, valuetype Mono.Debugger.Soft.InvokeOptions options, class System.AsyncCallback callback, object state) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.IAsyncResult</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="thread" Type="Mono.Debugger.Soft.ThreadMirror" />
+        <Parameter Name="method" Type="Mono.Debugger.Soft.MethodMirror" />
+        <Parameter Name="arguments" Type="System.Collections.Generic.IList<Mono.Debugger.Soft.Value>" />
+        <Parameter Name="options" Type="Mono.Debugger.Soft.InvokeOptions" />
+        <Parameter Name="callback" Type="System.AsyncCallback" />
+        <Parameter Name="state" Type="System.Object" />
+      </Parameters>
+      <Docs>
+        <param name="thread">To be added.</param>
+        <param name="method">To be added.</param>
+        <param name="arguments">To be added.</param>
+        <param name="options">To be added.</param>
+        <param name="callback">To be added.</param>
+        <param name="state">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="BeginInvokeMethod">
+      <MemberSignature Language="C#" Value="public IAsyncResult BeginInvokeMethod (Mono.Debugger.Soft.VirtualMachine vm, Mono.Debugger.Soft.ThreadMirror thread, Mono.Debugger.Soft.MethodMirror method, System.Collections.Generic.IList<Mono.Debugger.Soft.Value> arguments, Mono.Debugger.Soft.InvokeOptions options, AsyncCallback callback, object state);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class System.IAsyncResult BeginInvokeMethod(class Mono.Debugger.Soft.VirtualMachine vm, class Mono.Debugger.Soft.ThreadMirror thread, class Mono.Debugger.Soft.MethodMirror method, class System.Collections.Generic.IList`1<class Mono.Debugger.Soft.Value> arguments, valuetype Mono.Debugger.Soft.InvokeOptions options, class System.AsyncCallback callback, object state) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <Attributes>
+        <Attribute>
+          <AttributeName>System.Obsolete("Use the overload without the 'vm' argument")</AttributeName>
+        </Attribute>
+      </Attributes>
+      <ReturnValue>
+        <ReturnType>System.IAsyncResult</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="vm" Type="Mono.Debugger.Soft.VirtualMachine" />
+        <Parameter Name="thread" Type="Mono.Debugger.Soft.ThreadMirror" />
+        <Parameter Name="method" Type="Mono.Debugger.Soft.MethodMirror" />
+        <Parameter Name="arguments" Type="System.Collections.Generic.IList<Mono.Debugger.Soft.Value>" />
+        <Parameter Name="options" Type="Mono.Debugger.Soft.InvokeOptions" />
+        <Parameter Name="callback" Type="System.AsyncCallback" />
+        <Parameter Name="state" Type="System.Object" />
+      </Parameters>
+      <Docs>
+        <param name="vm">To be added.</param>
+        <param name="thread">To be added.</param>
+        <param name="method">To be added.</param>
+        <param name="arguments">To be added.</param>
+        <param name="options">To be added.</param>
+        <param name="callback">To be added.</param>
+        <param name="state">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
     <Member MemberName="CSharpName">
       <MemberSignature Language="C#" Value="public string CSharpName { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance string CSharpName" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -74,8 +146,45 @@
         <remarks>To be added.</remarks>
       </Docs>
     </Member>
+    <Member MemberName="EndInvokeMethod">
+      <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.Value EndInvokeMethod (IAsyncResult asyncResult);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.Value EndInvokeMethod(class System.IAsyncResult asyncResult) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Debugger.Soft.Value</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="asyncResult" Type="System.IAsyncResult" />
+      </Parameters>
+      <Docs>
+        <param name="asyncResult">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="EnumUnderlyingType">
+      <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.TypeMirror EnumUnderlyingType { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.TypeMirror EnumUnderlyingType" />
+      <MemberType>Property</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Debugger.Soft.TypeMirror</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
     <Member MemberName="FullName">
       <MemberSignature Language="C#" Value="public string FullName { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance string FullName" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -91,6 +200,7 @@
     </Member>
     <Member MemberName="GetArrayRank">
       <MemberSignature Language="C#" Value="public int GetArrayRank ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance int32 GetArrayRank() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -107,6 +217,7 @@
     </Member>
     <Member MemberName="GetAttributeFlagsImpl">
       <MemberSignature Language="C#" Value="protected virtual System.Reflection.TypeAttributes GetAttributeFlagsImpl ();" />
+      <MemberSignature Language="ILAsm" Value=".method familyhidebysig newslot virtual instance valuetype System.Reflection.TypeAttributes GetAttributeFlagsImpl() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -123,6 +234,7 @@
     </Member>
     <Member MemberName="GetCustomAttributes">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.CustomAttributeDataMirror[] GetCustomAttributes (bool inherit);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.CustomAttributeDataMirror[] GetCustomAttributes(bool inherit) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -142,6 +254,7 @@
     </Member>
     <Member MemberName="GetCustomAttributes">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.CustomAttributeDataMirror[] GetCustomAttributes (Mono.Debugger.Soft.TypeMirror attributeType, bool inherit);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.CustomAttributeDataMirror[] GetCustomAttributes(class Mono.Debugger.Soft.TypeMirror attributeType, bool inherit) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -163,6 +276,7 @@
     </Member>
     <Member MemberName="GetElementType">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.TypeMirror GetElementType ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.TypeMirror GetElementType() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -179,6 +293,7 @@
     </Member>
     <Member MemberName="GetField">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.FieldInfoMirror GetField (string name);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.FieldInfoMirror GetField(string name) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -198,6 +313,7 @@
     </Member>
     <Member MemberName="GetFields">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.FieldInfoMirror[] GetFields ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.FieldInfoMirror[] GetFields() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -214,6 +330,7 @@
     </Member>
     <Member MemberName="GetMethod">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.MethodMirror GetMethod (string name);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.MethodMirror GetMethod(string name) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -233,6 +350,7 @@
     </Member>
     <Member MemberName="GetMethods">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.MethodMirror[] GetMethods ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.MethodMirror[] GetMethods() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -249,6 +367,7 @@
     </Member>
     <Member MemberName="GetNestedTypes">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.TypeMirror[] GetNestedTypes ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.TypeMirror[] GetNestedTypes() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -265,6 +384,7 @@
     </Member>
     <Member MemberName="GetNestedTypes">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.TypeMirror[] GetNestedTypes (System.Reflection.BindingFlags bindingAttr);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.TypeMirror[] GetNestedTypes(valuetype System.Reflection.BindingFlags bindingAttr) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -284,6 +404,7 @@
     </Member>
     <Member MemberName="GetProperties">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.PropertyInfoMirror[] GetProperties ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.PropertyInfoMirror[] GetProperties() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -300,6 +421,7 @@
     </Member>
     <Member MemberName="GetProperties">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.PropertyInfoMirror[] GetProperties (System.Reflection.BindingFlags bindingAttr);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.PropertyInfoMirror[] GetProperties(valuetype System.Reflection.BindingFlags bindingAttr) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -319,6 +441,7 @@
     </Member>
     <Member MemberName="GetProperty">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.PropertyInfoMirror GetProperty (string name);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.PropertyInfoMirror GetProperty(string name) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -338,6 +461,7 @@
     </Member>
     <Member MemberName="GetSourceFiles">
       <MemberSignature Language="C#" Value="public string[] GetSourceFiles ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance string[] GetSourceFiles() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -352,8 +476,29 @@
         <remarks>To be added.</remarks>
       </Docs>
     </Member>
+    <Member MemberName="GetSourceFiles">
+      <MemberSignature Language="C#" Value="public string[] GetSourceFiles (bool return_full_paths);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance string[] GetSourceFiles(bool return_full_paths) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.String[]</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="return_full_paths" Type="System.Boolean" />
+      </Parameters>
+      <Docs>
+        <param name="return_full_paths">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
     <Member MemberName="GetTypeObject">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.ObjectMirror GetTypeObject ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.ObjectMirror GetTypeObject() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -370,6 +515,7 @@
     </Member>
     <Member MemberName="GetValue">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.Value GetValue (Mono.Debugger.Soft.FieldInfoMirror field);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.Value GetValue(class Mono.Debugger.Soft.FieldInfoMirror field) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -387,8 +533,51 @@
         <remarks>To be added.</remarks>
       </Docs>
     </Member>
+    <Member MemberName="GetValue">
+      <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.Value GetValue (Mono.Debugger.Soft.FieldInfoMirror field, Mono.Debugger.Soft.ThreadMirror thread);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.Value GetValue(class Mono.Debugger.Soft.FieldInfoMirror field, class Mono.Debugger.Soft.ThreadMirror thread) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Debugger.Soft.Value</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="field" Type="Mono.Debugger.Soft.FieldInfoMirror" />
+        <Parameter Name="thread" Type="Mono.Debugger.Soft.ThreadMirror" />
+      </Parameters>
+      <Docs>
+        <param name="field">To be added.</param>
+        <param name="thread">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
     <Member MemberName="GetValues">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.Value[] GetValues (System.Collections.Generic.IList<Mono.Debugger.Soft.FieldInfoMirror> fields);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.Value[] GetValues(class System.Collections.Generic.IList`1<class Mono.Debugger.Soft.FieldInfoMirror> fields) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Debugger.Soft.Value[]</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="fields" Type="System.Collections.Generic.IList<Mono.Debugger.Soft.FieldInfoMirror>" />
+      </Parameters>
+      <Docs>
+        <param name="fields">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="GetValues">
+      <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.Value[] GetValues (System.Collections.Generic.IList<Mono.Debugger.Soft.FieldInfoMirror> fields, Mono.Debugger.Soft.ThreadMirror thread);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.Value[] GetValues(class System.Collections.Generic.IList`1<class Mono.Debugger.Soft.FieldInfoMirror> fields, class Mono.Debugger.Soft.ThreadMirror thread) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -398,9 +587,11 @@
       </ReturnValue>
       <Parameters>
         <Parameter Name="fields" Type="System.Collections.Generic.IList<Mono.Debugger.Soft.FieldInfoMirror>" />
+        <Parameter Name="thread" Type="Mono.Debugger.Soft.ThreadMirror" />
       </Parameters>
       <Docs>
         <param name="fields">To be added.</param>
+        <param name="thread">To be added.</param>
         <summary>To be added.</summary>
         <returns>To be added.</returns>
         <remarks>To be added.</remarks>
@@ -408,6 +599,7 @@
     </Member>
     <Member MemberName="HasElementType">
       <MemberSignature Language="C#" Value="public bool HasElementType { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool HasElementType" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -423,6 +615,7 @@
     </Member>
     <Member MemberName="HasElementTypeImpl">
       <MemberSignature Language="C#" Value="protected virtual bool HasElementTypeImpl ();" />
+      <MemberSignature Language="ILAsm" Value=".method familyhidebysig newslot virtual instance bool HasElementTypeImpl() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -439,6 +632,31 @@
     </Member>
     <Member MemberName="InvokeMethod">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.Value InvokeMethod (Mono.Debugger.Soft.ThreadMirror thread, Mono.Debugger.Soft.MethodMirror method, System.Collections.Generic.IList<Mono.Debugger.Soft.Value> arguments);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.Value InvokeMethod(class Mono.Debugger.Soft.ThreadMirror thread, class Mono.Debugger.Soft.MethodMirror method, class System.Collections.Generic.IList`1<class Mono.Debugger.Soft.Value> arguments) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Debugger.Soft.Value</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="thread" Type="Mono.Debugger.Soft.ThreadMirror" />
+        <Parameter Name="method" Type="Mono.Debugger.Soft.MethodMirror" />
+        <Parameter Name="arguments" Type="System.Collections.Generic.IList<Mono.Debugger.Soft.Value>" />
+      </Parameters>
+      <Docs>
+        <param name="thread">To be added.</param>
+        <param name="method">To be added.</param>
+        <param name="arguments">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="InvokeMethod">
+      <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.Value InvokeMethod (Mono.Debugger.Soft.ThreadMirror thread, Mono.Debugger.Soft.MethodMirror method, System.Collections.Generic.IList<Mono.Debugger.Soft.Value> arguments, Mono.Debugger.Soft.InvokeOptions options);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.Value InvokeMethod(class Mono.Debugger.Soft.ThreadMirror thread, class Mono.Debugger.Soft.MethodMirror method, class System.Collections.Generic.IList`1<class Mono.Debugger.Soft.Value> arguments, valuetype Mono.Debugger.Soft.InvokeOptions options) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -450,11 +668,13 @@
         <Parameter Name="thread" Type="Mono.Debugger.Soft.ThreadMirror" />
         <Parameter Name="method" Type="Mono.Debugger.Soft.MethodMirror" />
         <Parameter Name="arguments" Type="System.Collections.Generic.IList<Mono.Debugger.Soft.Value>" />
+        <Parameter Name="options" Type="Mono.Debugger.Soft.InvokeOptions" />
       </Parameters>
       <Docs>
         <param name="thread">To be added.</param>
         <param name="method">To be added.</param>
         <param name="arguments">To be added.</param>
+        <param name="options">To be added.</param>
         <summary>To be added.</summary>
         <returns>To be added.</returns>
         <remarks>To be added.</remarks>
@@ -462,6 +682,7 @@
     </Member>
     <Member MemberName="IsAbstract">
       <MemberSignature Language="C#" Value="public bool IsAbstract { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsAbstract" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -477,6 +698,7 @@
     </Member>
     <Member MemberName="IsAnsiClass">
       <MemberSignature Language="C#" Value="public bool IsAnsiClass { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsAnsiClass" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -492,6 +714,7 @@
     </Member>
     <Member MemberName="IsArray">
       <MemberSignature Language="C#" Value="public bool IsArray { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsArray" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -507,6 +730,7 @@
     </Member>
     <Member MemberName="IsArrayImpl">
       <MemberSignature Language="C#" Value="protected virtual bool IsArrayImpl ();" />
+      <MemberSignature Language="ILAsm" Value=".method familyhidebysig newslot virtual instance bool IsArrayImpl() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -523,6 +747,7 @@
     </Member>
     <Member MemberName="IsAssignableFrom">
       <MemberSignature Language="C#" Value="public virtual bool IsAssignableFrom (Mono.Debugger.Soft.TypeMirror c);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance bool IsAssignableFrom(class Mono.Debugger.Soft.TypeMirror c) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -542,6 +767,7 @@
     </Member>
     <Member MemberName="IsAutoClass">
       <MemberSignature Language="C#" Value="public bool IsAutoClass { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsAutoClass" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -557,6 +783,7 @@
     </Member>
     <Member MemberName="IsAutoLayout">
       <MemberSignature Language="C#" Value="public bool IsAutoLayout { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsAutoLayout" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -572,6 +799,7 @@
     </Member>
     <Member MemberName="IsByRef">
       <MemberSignature Language="C#" Value="public bool IsByRef { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsByRef" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -587,6 +815,7 @@
     </Member>
     <Member MemberName="IsByRefImpl">
       <MemberSignature Language="C#" Value="protected virtual bool IsByRefImpl ();" />
+      <MemberSignature Language="ILAsm" Value=".method familyhidebysig newslot virtual instance bool IsByRefImpl() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -603,6 +832,7 @@
     </Member>
     <Member MemberName="IsClass">
       <MemberSignature Language="C#" Value="public bool IsClass { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsClass" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -618,6 +848,7 @@
     </Member>
     <Member MemberName="IsCOMObject">
       <MemberSignature Language="C#" Value="public bool IsCOMObject { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsCOMObject" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -633,6 +864,7 @@
     </Member>
     <Member MemberName="IsCOMObjectImpl">
       <MemberSignature Language="C#" Value="protected virtual bool IsCOMObjectImpl ();" />
+      <MemberSignature Language="ILAsm" Value=".method familyhidebysig newslot virtual instance bool IsCOMObjectImpl() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -649,6 +881,7 @@
     </Member>
     <Member MemberName="IsContextful">
       <MemberSignature Language="C#" Value="public bool IsContextful { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsContextful" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -664,6 +897,7 @@
     </Member>
     <Member MemberName="IsContextfulImpl">
       <MemberSignature Language="C#" Value="protected virtual bool IsContextfulImpl ();" />
+      <MemberSignature Language="ILAsm" Value=".method familyhidebysig newslot virtual instance bool IsContextfulImpl() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -680,6 +914,7 @@
     </Member>
     <Member MemberName="IsEnum">
       <MemberSignature Language="C#" Value="public bool IsEnum { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsEnum" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -695,6 +930,7 @@
     </Member>
     <Member MemberName="IsExplicitLayout">
       <MemberSignature Language="C#" Value="public bool IsExplicitLayout { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsExplicitLayout" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -710,6 +946,7 @@
     </Member>
     <Member MemberName="IsImport">
       <MemberSignature Language="C#" Value="public bool IsImport { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsImport" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -725,6 +962,7 @@
     </Member>
     <Member MemberName="IsInterface">
       <MemberSignature Language="C#" Value="public bool IsInterface { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsInterface" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -740,6 +978,7 @@
     </Member>
     <Member MemberName="IsLayoutSequential">
       <MemberSignature Language="C#" Value="public bool IsLayoutSequential { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsLayoutSequential" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -755,6 +994,7 @@
     </Member>
     <Member MemberName="IsMarshalByRef">
       <MemberSignature Language="C#" Value="public bool IsMarshalByRef { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsMarshalByRef" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -770,6 +1010,7 @@
     </Member>
     <Member MemberName="IsMarshalByRefImpl">
       <MemberSignature Language="C#" Value="protected virtual bool IsMarshalByRefImpl ();" />
+      <MemberSignature Language="ILAsm" Value=".method familyhidebysig newslot virtual instance bool IsMarshalByRefImpl() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -786,6 +1027,7 @@
     </Member>
     <Member MemberName="IsNestedAssembly">
       <MemberSignature Language="C#" Value="public bool IsNestedAssembly { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsNestedAssembly" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -801,6 +1043,7 @@
     </Member>
     <Member MemberName="IsNestedFamANDAssem">
       <MemberSignature Language="C#" Value="public bool IsNestedFamANDAssem { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsNestedFamANDAssem" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -816,6 +1059,7 @@
     </Member>
     <Member MemberName="IsNestedFamily">
       <MemberSignature Language="C#" Value="public bool IsNestedFamily { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsNestedFamily" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -831,6 +1075,7 @@
     </Member>
     <Member MemberName="IsNestedFamORAssem">
       <MemberSignature Language="C#" Value="public bool IsNestedFamORAssem { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsNestedFamORAssem" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -846,6 +1091,7 @@
     </Member>
     <Member MemberName="IsNestedPrivate">
       <MemberSignature Language="C#" Value="public bool IsNestedPrivate { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsNestedPrivate" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -861,6 +1107,7 @@
     </Member>
     <Member MemberName="IsNestedPublic">
       <MemberSignature Language="C#" Value="public bool IsNestedPublic { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsNestedPublic" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -876,6 +1123,7 @@
     </Member>
     <Member MemberName="IsNotPublic">
       <MemberSignature Language="C#" Value="public bool IsNotPublic { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsNotPublic" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -891,6 +1139,7 @@
     </Member>
     <Member MemberName="IsPointer">
       <MemberSignature Language="C#" Value="public bool IsPointer { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsPointer" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -906,6 +1155,7 @@
     </Member>
     <Member MemberName="IsPointerImpl">
       <MemberSignature Language="C#" Value="protected virtual bool IsPointerImpl ();" />
+      <MemberSignature Language="ILAsm" Value=".method familyhidebysig newslot virtual instance bool IsPointerImpl() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -922,6 +1172,7 @@
     </Member>
     <Member MemberName="IsPrimitive">
       <MemberSignature Language="C#" Value="public bool IsPrimitive { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsPrimitive" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -937,6 +1188,7 @@
     </Member>
     <Member MemberName="IsPrimitiveImpl">
       <MemberSignature Language="C#" Value="protected virtual bool IsPrimitiveImpl ();" />
+      <MemberSignature Language="ILAsm" Value=".method familyhidebysig newslot virtual instance bool IsPrimitiveImpl() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -953,6 +1205,7 @@
     </Member>
     <Member MemberName="IsPublic">
       <MemberSignature Language="C#" Value="public bool IsPublic { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsPublic" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -968,6 +1221,7 @@
     </Member>
     <Member MemberName="IsSealed">
       <MemberSignature Language="C#" Value="public bool IsSealed { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsSealed" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -983,6 +1237,7 @@
     </Member>
     <Member MemberName="IsSerializable">
       <MemberSignature Language="C#" Value="public bool IsSerializable { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsSerializable" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -998,6 +1253,7 @@
     </Member>
     <Member MemberName="IsSpecialName">
       <MemberSignature Language="C#" Value="public bool IsSpecialName { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsSpecialName" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -1013,6 +1269,7 @@
     </Member>
     <Member MemberName="IsUnicodeClass">
       <MemberSignature Language="C#" Value="public bool IsUnicodeClass { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsUnicodeClass" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -1028,6 +1285,7 @@
     </Member>
     <Member MemberName="IsValueType">
       <MemberSignature Language="C#" Value="public bool IsValueType { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsValueType" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -1043,6 +1301,7 @@
     </Member>
     <Member MemberName="IsValueTypeImpl">
       <MemberSignature Language="C#" Value="protected virtual bool IsValueTypeImpl ();" />
+      <MemberSignature Language="ILAsm" Value=".method familyhidebysig newslot virtual instance bool IsValueTypeImpl() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -1059,6 +1318,7 @@
     </Member>
     <Member MemberName="Metadata">
       <MemberSignature Language="C#" Value="public Mono.Cecil.TypeDefinition Metadata { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Cecil.TypeDefinition Metadata" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -1074,6 +1334,7 @@
     </Member>
     <Member MemberName="MetadataToken">
       <MemberSignature Language="C#" Value="public int MetadataToken { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance int32 MetadataToken" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -1089,6 +1350,7 @@
     </Member>
     <Member MemberName="Module">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.ModuleMirror Module { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.ModuleMirror Module" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -1104,6 +1366,7 @@
     </Member>
     <Member MemberName="Name">
       <MemberSignature Language="C#" Value="public string Name { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance string Name" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -1119,6 +1382,7 @@
     </Member>
     <Member MemberName="Namespace">
       <MemberSignature Language="C#" Value="public string Namespace { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance string Namespace" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -1134,6 +1398,31 @@
     </Member>
     <Member MemberName="NewInstance">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.Value NewInstance (Mono.Debugger.Soft.ThreadMirror thread, Mono.Debugger.Soft.MethodMirror method, System.Collections.Generic.IList<Mono.Debugger.Soft.Value> arguments);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.Value NewInstance(class Mono.Debugger.Soft.ThreadMirror thread, class Mono.Debugger.Soft.MethodMirror method, class System.Collections.Generic.IList`1<class Mono.Debugger.Soft.Value> arguments) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Debugger.Soft.Value</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="thread" Type="Mono.Debugger.Soft.ThreadMirror" />
+        <Parameter Name="method" Type="Mono.Debugger.Soft.MethodMirror" />
+        <Parameter Name="arguments" Type="System.Collections.Generic.IList<Mono.Debugger.Soft.Value>" />
+      </Parameters>
+      <Docs>
+        <param name="thread">To be added.</param>
+        <param name="method">To be added.</param>
+        <param name="arguments">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="NewInstance">
+      <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.Value NewInstance (Mono.Debugger.Soft.ThreadMirror thread, Mono.Debugger.Soft.MethodMirror method, System.Collections.Generic.IList<Mono.Debugger.Soft.Value> arguments, Mono.Debugger.Soft.InvokeOptions options);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.Value NewInstance(class Mono.Debugger.Soft.ThreadMirror thread, class Mono.Debugger.Soft.MethodMirror method, class System.Collections.Generic.IList`1<class Mono.Debugger.Soft.Value> arguments, valuetype Mono.Debugger.Soft.InvokeOptions options) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -1145,11 +1434,13 @@
         <Parameter Name="thread" Type="Mono.Debugger.Soft.ThreadMirror" />
         <Parameter Name="method" Type="Mono.Debugger.Soft.MethodMirror" />
         <Parameter Name="arguments" Type="System.Collections.Generic.IList<Mono.Debugger.Soft.Value>" />
+        <Parameter Name="options" Type="Mono.Debugger.Soft.InvokeOptions" />
       </Parameters>
       <Docs>
         <param name="thread">To be added.</param>
         <param name="method">To be added.</param>
         <param name="arguments">To be added.</param>
+        <param name="options">To be added.</param>
         <summary>To be added.</summary>
         <returns>To be added.</returns>
         <remarks>To be added.</remarks>
@@ -1157,6 +1448,7 @@
     </Member>
     <Member MemberName="SetValue">
       <MemberSignature Language="C#" Value="public void SetValue (Mono.Debugger.Soft.FieldInfoMirror field, Mono.Debugger.Soft.Value value);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void SetValue(class Mono.Debugger.Soft.FieldInfoMirror field, class Mono.Debugger.Soft.Value value) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -1177,6 +1469,7 @@
     </Member>
     <Member MemberName="SetValues">
       <MemberSignature Language="C#" Value="public void SetValues (System.Collections.Generic.IList<Mono.Debugger.Soft.FieldInfoMirror> fields, Mono.Debugger.Soft.Value[] values);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void SetValues(class System.Collections.Generic.IList`1<class Mono.Debugger.Soft.FieldInfoMirror> fields, class Mono.Debugger.Soft.Value[] values) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/VMDeathEvent.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/VMDeathEvent.xml
index 3b498d0..ab6b5a4 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/VMDeathEvent.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/VMDeathEvent.xml
@@ -1,5 +1,6 @@
 <Type Name="VMDeathEvent" FullName="Mono.Debugger.Soft.VMDeathEvent">
   <TypeSignature Language="C#" Value="public class VMDeathEvent : Mono.Debugger.Soft.Event" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit VMDeathEvent extends Mono.Debugger.Soft.Event" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -16,6 +17,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public VMDeathEvent (Mono.Debugger.Soft.VirtualMachine vm, int req_id);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(class Mono.Debugger.Soft.VirtualMachine vm, int32 req_id) cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/VMDisconnectEvent.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/VMDisconnectEvent.xml
index b078dfa..73492e2 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/VMDisconnectEvent.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/VMDisconnectEvent.xml
@@ -1,5 +1,6 @@
 <Type Name="VMDisconnectEvent" FullName="Mono.Debugger.Soft.VMDisconnectEvent">
   <TypeSignature Language="C#" Value="public class VMDisconnectEvent : Mono.Debugger.Soft.Event" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit VMDisconnectEvent extends Mono.Debugger.Soft.Event" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -16,6 +17,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public VMDisconnectEvent (Mono.Debugger.Soft.VirtualMachine vm, int req_id);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(class Mono.Debugger.Soft.VirtualMachine vm, int32 req_id) cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/VMDisconnectedException.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/VMDisconnectedException.xml
index f2b5920..3cd701d 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/VMDisconnectedException.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/VMDisconnectedException.xml
@@ -1,5 +1,6 @@
 <Type Name="VMDisconnectedException" FullName="Mono.Debugger.Soft.VMDisconnectedException">
   <TypeSignature Language="C#" Value="public class VMDisconnectedException : Exception" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit VMDisconnectedException extends System.Exception" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -16,6 +17,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public VMDisconnectedException ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/VMMismatchException.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/VMMismatchException.xml
index 3b28939..0dae1c7 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/VMMismatchException.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/VMMismatchException.xml
@@ -1,5 +1,6 @@
 <Type Name="VMMismatchException" FullName="Mono.Debugger.Soft.VMMismatchException">
   <TypeSignature Language="C#" Value="public class VMMismatchException : Exception" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit VMMismatchException extends System.Exception" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -16,6 +17,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public VMMismatchException ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/VMStartEvent.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/VMStartEvent.xml
index c3b9e3b..8909f20 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/VMStartEvent.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/VMStartEvent.xml
@@ -1,5 +1,6 @@
 <Type Name="VMStartEvent" FullName="Mono.Debugger.Soft.VMStartEvent">
   <TypeSignature Language="C#" Value="public class VMStartEvent : Mono.Debugger.Soft.Event" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit VMStartEvent extends Mono.Debugger.Soft.Event" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -16,6 +17,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public VMStartEvent (Mono.Debugger.Soft.VirtualMachine vm, int req_id, long thread_id);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(class Mono.Debugger.Soft.VirtualMachine vm, int32 req_id, int64 thread_id) cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/Value.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/Value.xml
index 48556ab..8d000f8 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/Value.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/Value.xml
@@ -1,5 +1,6 @@
 <Type Name="Value" FullName="Mono.Debugger.Soft.Value">
   <TypeSignature Language="C#" Value="public abstract class Value : Mono.Debugger.Soft.Mirror" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi abstract beforefieldinit Value extends Mono.Debugger.Soft.Mirror" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/VersionInfo.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/VersionInfo.xml
new file mode 100644
index 0000000..793a323
--- /dev/null
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/VersionInfo.xml
@@ -0,0 +1,79 @@
+<Type Name="VersionInfo" FullName="Mono.Debugger.Soft.VersionInfo">
+  <TypeSignature Language="C#" Value="public class VersionInfo" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit VersionInfo extends System.Object" />
+  <AssemblyInfo>
+    <AssemblyName>Mono.Debugger.Soft</AssemblyName>
+    <AssemblyVersion>0.0.0.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>System.Object</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public VersionInfo ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+      <MemberType>Constructor</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <Parameters />
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="MajorVersion">
+      <MemberSignature Language="C#" Value="public int MajorVersion { get; set; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance int32 MajorVersion" />
+      <MemberType>Property</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.Int32</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="MinorVersion">
+      <MemberSignature Language="C#" Value="public int MinorVersion { get; set; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance int32 MinorVersion" />
+      <MemberType>Property</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.Int32</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="VMVersion">
+      <MemberSignature Language="C#" Value="public string VMVersion { get; set; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance string VMVersion" />
+      <MemberType>Property</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/VirtualMachine.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/VirtualMachine.xml
index d55240b..314152b 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/VirtualMachine.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/VirtualMachine.xml
@@ -1,5 +1,6 @@
 <Type Name="VirtualMachine" FullName="Mono.Debugger.Soft.VirtualMachine">
   <TypeSignature Language="C#" Value="public class VirtualMachine : Mono.Debugger.Soft.Mirror" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit VirtualMachine extends Mono.Debugger.Soft.Mirror" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -19,6 +20,7 @@
   <Members>
     <Member MemberName="ClearAllBreakpoints">
       <MemberSignature Language="C#" Value="public void ClearAllBreakpoints ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void ClearAllBreakpoints() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -32,8 +34,46 @@
         <remarks>To be added.</remarks>
       </Docs>
     </Member>
+    <Member MemberName="CreateAssemblyLoadRequest">
+      <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.AssemblyLoadEventRequest CreateAssemblyLoadRequest ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.AssemblyLoadEventRequest CreateAssemblyLoadRequest() cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Debugger.Soft.AssemblyLoadEventRequest</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="CreateBreakpointRequest">
+      <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.BreakpointEventRequest CreateBreakpointRequest (Mono.Debugger.Soft.Location loc);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.BreakpointEventRequest CreateBreakpointRequest(class Mono.Debugger.Soft.Location loc) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Debugger.Soft.BreakpointEventRequest</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="loc" Type="Mono.Debugger.Soft.Location" />
+      </Parameters>
+      <Docs>
+        <param name="loc">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
     <Member MemberName="CreateBreakpointRequest">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.BreakpointEventRequest CreateBreakpointRequest (Mono.Debugger.Soft.MethodMirror method, long il_offset);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.BreakpointEventRequest CreateBreakpointRequest(class Mono.Debugger.Soft.MethodMirror method, int64 il_offset) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -49,8 +89,72 @@
         <param name="method">
         </param>
         <param name="il_offset">To be added.</param>
-        <param name="location">
-        </param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="CreateEnumMirror">
+      <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.EnumMirror CreateEnumMirror (Mono.Debugger.Soft.TypeMirror type, Mono.Debugger.Soft.PrimitiveValue value);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.EnumMirror CreateEnumMirror(class Mono.Debugger.Soft.TypeMirror type, class Mono.Debugger.Soft.PrimitiveValue value) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Debugger.Soft.EnumMirror</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="type" Type="Mono.Debugger.Soft.TypeMirror" />
+        <Parameter Name="value" Type="Mono.Debugger.Soft.PrimitiveValue" />
+      </Parameters>
+      <Docs>
+        <param name="type">To be added.</param>
+        <param name="value">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="CreateExceptionRequest">
+      <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.ExceptionEventRequest CreateExceptionRequest (Mono.Debugger.Soft.TypeMirror exc_type);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.ExceptionEventRequest CreateExceptionRequest(class Mono.Debugger.Soft.TypeMirror exc_type) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Debugger.Soft.ExceptionEventRequest</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="exc_type" Type="Mono.Debugger.Soft.TypeMirror" />
+      </Parameters>
+      <Docs>
+        <param name="exc_type">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="CreateExceptionRequest">
+      <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.ExceptionEventRequest CreateExceptionRequest (Mono.Debugger.Soft.TypeMirror exc_type, bool caught, bool uncaught);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.ExceptionEventRequest CreateExceptionRequest(class Mono.Debugger.Soft.TypeMirror exc_type, bool caught, bool uncaught) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Debugger.Soft.ExceptionEventRequest</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="exc_type" Type="Mono.Debugger.Soft.TypeMirror" />
+        <Parameter Name="caught" Type="System.Boolean" />
+        <Parameter Name="uncaught" Type="System.Boolean" />
+      </Parameters>
+      <Docs>
+        <param name="exc_type">To be added.</param>
+        <param name="caught">To be added.</param>
+        <param name="uncaught">To be added.</param>
         <summary>To be added.</summary>
         <returns>To be added.</returns>
         <remarks>To be added.</remarks>
@@ -58,6 +162,7 @@
     </Member>
     <Member MemberName="CreateMethodEntryRequest">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.MethodEntryEventRequest CreateMethodEntryRequest ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.MethodEntryEventRequest CreateMethodEntryRequest() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -74,6 +179,7 @@
     </Member>
     <Member MemberName="CreateMethodExitRequest">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.MethodExitEventRequest CreateMethodExitRequest ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.MethodExitEventRequest CreateMethodExitRequest() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -93,6 +199,7 @@
     </Member>
     <Member MemberName="CreateStepRequest">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.StepEventRequest CreateStepRequest (Mono.Debugger.Soft.ThreadMirror thread);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.StepEventRequest CreateStepRequest(class Mono.Debugger.Soft.ThreadMirror thread) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -116,6 +223,7 @@
     </Member>
     <Member MemberName="CreateValue">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.PrimitiveValue CreateValue (object value);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.PrimitiveValue CreateValue(object value) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -135,6 +243,7 @@
     </Member>
     <Member MemberName="Dispose">
       <MemberSignature Language="C#" Value="public void Dispose ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Dispose() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -152,6 +261,7 @@
     </Member>
     <Member MemberName="EnableEvents">
       <MemberSignature Language="C#" Value="public void EnableEvents (Mono.Debugger.Soft.EventType[] events);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void EnableEvents(valuetype Mono.Debugger.Soft.EventType[] events) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -179,6 +289,7 @@
     </Member>
     <Member MemberName="EndPoint">
       <MemberSignature Language="C#" Value="public System.Net.EndPoint EndPoint { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class System.Net.EndPoint EndPoint" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -197,6 +308,7 @@
     </Member>
     <Member MemberName="Exit">
       <MemberSignature Language="C#" Value="public void Exit (int exitCode);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Exit(int32 exitCode) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -218,6 +330,7 @@
     </Member>
     <Member MemberName="GetNextEvent">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.Event GetNextEvent ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.Event GetNextEvent() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -237,6 +350,7 @@
     </Member>
     <Member MemberName="GetNextEvent">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.Event GetNextEvent (int timeout);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.Event GetNextEvent(int32 timeout) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -260,6 +374,7 @@
     </Member>
     <Member MemberName="GetNextEvent<T>">
       <MemberSignature Language="C#" Value="public T GetNextEvent<T> () where T : Mono.Debugger.Soft.Event;" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance !!T GetNextEvent<(class Mono.Debugger.Soft.Event) T>() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -286,8 +401,26 @@
         </remarks>
       </Docs>
     </Member>
+    <Member MemberName="GetNextEventSet">
+      <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.EventSet GetNextEventSet ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.EventSet GetNextEventSet() cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Debugger.Soft.EventSet</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
     <Member MemberName="GetThreads">
       <MemberSignature Language="C#" Value="public System.Collections.Generic.IList<Mono.Debugger.Soft.ThreadMirror> GetThreads ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class System.Collections.Generic.IList`1<class Mono.Debugger.Soft.ThreadMirror> GetThreads() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -304,6 +437,7 @@
     </Member>
     <Member MemberName="Process">
       <MemberSignature Language="C#" Value="public System.Diagnostics.Process Process { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class System.Diagnostics.Process Process" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -322,6 +456,7 @@
     </Member>
     <Member MemberName="Resume">
       <MemberSignature Language="C#" Value="public void Resume ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Resume() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -339,6 +474,7 @@
     </Member>
     <Member MemberName="RootDomain">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.AppDomainMirror RootDomain { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.AppDomainMirror RootDomain" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -357,6 +493,7 @@
     </Member>
     <Member MemberName="SetBreakpoint">
       <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.BreakpointEventRequest SetBreakpoint (Mono.Debugger.Soft.MethodMirror method, long il_offset);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Debugger.Soft.BreakpointEventRequest SetBreakpoint(class Mono.Debugger.Soft.MethodMirror method, int64 il_offset) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -381,8 +518,41 @@
         </remarks>
       </Docs>
     </Member>
+    <Member MemberName="StandardError">
+      <MemberSignature Language="C#" Value="public System.IO.StreamReader StandardError { get; set; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class System.IO.StreamReader StandardError" />
+      <MemberType>Property</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.IO.StreamReader</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="StandardOutput">
+      <MemberSignature Language="C#" Value="public System.IO.StreamReader StandardOutput { get; set; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class System.IO.StreamReader StandardOutput" />
+      <MemberType>Property</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.IO.StreamReader</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
     <Member MemberName="Suspend">
       <MemberSignature Language="C#" Value="public void Suspend ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Suspend() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -398,5 +568,37 @@
         </remarks>
       </Docs>
     </Member>
+    <Member MemberName="TargetProcess">
+      <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.ITargetProcess TargetProcess { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.ITargetProcess TargetProcess" />
+      <MemberType>Property</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Debugger.Soft.ITargetProcess</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Version">
+      <MemberSignature Language="C#" Value="public Mono.Debugger.Soft.VersionInfo Version { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Debugger.Soft.VersionInfo Version" />
+      <MemberType>Property</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Debugger.Soft.VersionInfo</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
   </Members>
 </Type>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/VirtualMachineManager.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/VirtualMachineManager.xml
index ffe8c9a..e02db4a 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/VirtualMachineManager.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/Mono.Debugger.Soft/VirtualMachineManager.xml
@@ -1,5 +1,6 @@
 <Type Name="VirtualMachineManager" FullName="Mono.Debugger.Soft.VirtualMachineManager">
   <TypeSignature Language="C#" Value="public class VirtualMachineManager" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit VirtualMachineManager extends System.Object" />
   <AssemblyInfo>
     <AssemblyName>Mono.Debugger.Soft</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -13,8 +14,356 @@
     <remarks>This class implements the functionality of the classes in the <format type="text/html"><a href="http://java.sun.com/j2se/1.5.0/docs/guide/jpda/jdi/com/sun/jdi/connect/package-frame.html">com.sun.kdi.connect</a></format> package in JDI.</remarks>
   </Docs>
   <Members>
+    <Member MemberName="BeginConnect">
+      <MemberSignature Language="C#" Value="public static IAsyncResult BeginConnect (System.Net.IPEndPoint dbg_ep, AsyncCallback callback);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig class System.IAsyncResult BeginConnect(class System.Net.IPEndPoint dbg_ep, class System.AsyncCallback callback) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.IAsyncResult</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="dbg_ep" Type="System.Net.IPEndPoint" />
+        <Parameter Name="callback" Type="System.AsyncCallback" />
+      </Parameters>
+      <Docs>
+        <param name="dbg_ep">To be added.</param>
+        <param name="callback">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="BeginConnect">
+      <MemberSignature Language="C#" Value="public static IAsyncResult BeginConnect (System.Net.IPEndPoint dbg_ep, System.Net.IPEndPoint con_ep, AsyncCallback callback);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig class System.IAsyncResult BeginConnect(class System.Net.IPEndPoint dbg_ep, class System.Net.IPEndPoint con_ep, class System.AsyncCallback callback) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.IAsyncResult</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="dbg_ep" Type="System.Net.IPEndPoint" />
+        <Parameter Name="con_ep" Type="System.Net.IPEndPoint" />
+        <Parameter Name="callback" Type="System.AsyncCallback" />
+      </Parameters>
+      <Docs>
+        <param name="dbg_ep">To be added.</param>
+        <param name="con_ep">To be added.</param>
+        <param name="callback">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="BeginLaunch">
+      <MemberSignature Language="C#" Value="public static IAsyncResult BeginLaunch (System.Diagnostics.ProcessStartInfo info, AsyncCallback callback);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig class System.IAsyncResult BeginLaunch(class System.Diagnostics.ProcessStartInfo info, class System.AsyncCallback callback) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.IAsyncResult</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="info" Type="System.Diagnostics.ProcessStartInfo" />
+        <Parameter Name="callback" Type="System.AsyncCallback" />
+      </Parameters>
+      <Docs>
+        <param name="info">To be added.</param>
+        <param name="callback">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="BeginLaunch">
+      <MemberSignature Language="C#" Value="public static IAsyncResult BeginLaunch (System.Diagnostics.ProcessStartInfo info, AsyncCallback callback, Mono.Debugger.Soft.LaunchOptions options);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig class System.IAsyncResult BeginLaunch(class System.Diagnostics.ProcessStartInfo info, class System.AsyncCallback callback, class Mono.Debugger.Soft.LaunchOptions options) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.IAsyncResult</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="info" Type="System.Diagnostics.ProcessStartInfo" />
+        <Parameter Name="callback" Type="System.AsyncCallback" />
+        <Parameter Name="options" Type="Mono.Debugger.Soft.LaunchOptions" />
+      </Parameters>
+      <Docs>
+        <param name="info">To be added.</param>
+        <param name="callback">To be added.</param>
+        <param name="options">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="BeginListen">
+      <MemberSignature Language="C#" Value="public static IAsyncResult BeginListen (System.Net.IPEndPoint dbg_ep, AsyncCallback callback);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig class System.IAsyncResult BeginListen(class System.Net.IPEndPoint dbg_ep, class System.AsyncCallback callback) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.IAsyncResult</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="dbg_ep" Type="System.Net.IPEndPoint" />
+        <Parameter Name="callback" Type="System.AsyncCallback" />
+      </Parameters>
+      <Docs>
+        <param name="dbg_ep">To be added.</param>
+        <param name="callback">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="BeginListen">
+      <MemberSignature Language="C#" Value="public static IAsyncResult BeginListen (System.Net.IPEndPoint dbg_ep, System.Net.IPEndPoint con_ep, AsyncCallback callback);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig class System.IAsyncResult BeginListen(class System.Net.IPEndPoint dbg_ep, class System.Net.IPEndPoint con_ep, class System.AsyncCallback callback) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.IAsyncResult</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="dbg_ep" Type="System.Net.IPEndPoint" />
+        <Parameter Name="con_ep" Type="System.Net.IPEndPoint" />
+        <Parameter Name="callback" Type="System.AsyncCallback" />
+      </Parameters>
+      <Docs>
+        <param name="dbg_ep">To be added.</param>
+        <param name="con_ep">To be added.</param>
+        <param name="callback">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="CancelConnection">
+      <MemberSignature Language="C#" Value="public static void CancelConnection (IAsyncResult asyncResult);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig void CancelConnection(class System.IAsyncResult asyncResult) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="asyncResult" Type="System.IAsyncResult" />
+      </Parameters>
+      <Docs>
+        <param name="asyncResult">To be added.</param>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Connect">
+      <MemberSignature Language="C#" Value="public static Mono.Debugger.Soft.VirtualMachine Connect (System.Net.IPEndPoint endpoint);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig class Mono.Debugger.Soft.VirtualMachine Connect(class System.Net.IPEndPoint endpoint) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Debugger.Soft.VirtualMachine</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="endpoint" Type="System.Net.IPEndPoint" />
+      </Parameters>
+      <Docs>
+        <param name="endpoint">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Connect">
+      <MemberSignature Language="C#" Value="public static Mono.Debugger.Soft.VirtualMachine Connect (System.Net.IPEndPoint endpoint, System.Net.IPEndPoint consoleEndpoint);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig class Mono.Debugger.Soft.VirtualMachine Connect(class System.Net.IPEndPoint endpoint, class System.Net.IPEndPoint consoleEndpoint) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Debugger.Soft.VirtualMachine</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="endpoint" Type="System.Net.IPEndPoint" />
+        <Parameter Name="consoleEndpoint" Type="System.Net.IPEndPoint" />
+      </Parameters>
+      <Docs>
+        <param name="endpoint">To be added.</param>
+        <param name="consoleEndpoint">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="ConnectInternal">
+      <MemberSignature Language="C#" Value="public static Mono.Debugger.Soft.VirtualMachine ConnectInternal (System.Net.Sockets.Socket dbg_sock, System.Net.Sockets.Socket con_sock, System.Net.IPEndPoint dbg_ep, System.Net.IPEndPoint con_ep);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig class Mono.Debugger.Soft.VirtualMachine ConnectInternal(class System.Net.Sockets.Socket dbg_sock, class System.Net.Sockets.Socket con_sock, class System.Net.IPEndPoint dbg_ep, class System.Net.IPEndPoint con_ep) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Debugger.Soft.VirtualMachine</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="dbg_sock" Type="System.Net.Sockets.Socket" />
+        <Parameter Name="con_sock" Type="System.Net.Sockets.Socket" />
+        <Parameter Name="dbg_ep" Type="System.Net.IPEndPoint" />
+        <Parameter Name="con_ep" Type="System.Net.IPEndPoint" />
+      </Parameters>
+      <Docs>
+        <param name="dbg_sock">To be added.</param>
+        <param name="con_sock">To be added.</param>
+        <param name="dbg_ep">To be added.</param>
+        <param name="con_ep">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="EndConnect">
+      <MemberSignature Language="C#" Value="public static Mono.Debugger.Soft.VirtualMachine EndConnect (IAsyncResult asyncResult);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig class Mono.Debugger.Soft.VirtualMachine EndConnect(class System.IAsyncResult asyncResult) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Debugger.Soft.VirtualMachine</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="asyncResult" Type="System.IAsyncResult" />
+      </Parameters>
+      <Docs>
+        <param name="asyncResult">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="EndLaunch">
+      <MemberSignature Language="C#" Value="public static Mono.Debugger.Soft.VirtualMachine EndLaunch (IAsyncResult asyncResult);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig class Mono.Debugger.Soft.VirtualMachine EndLaunch(class System.IAsyncResult asyncResult) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Debugger.Soft.VirtualMachine</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="asyncResult" Type="System.IAsyncResult" />
+      </Parameters>
+      <Docs>
+        <param name="asyncResult">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="EndListen">
+      <MemberSignature Language="C#" Value="public static Mono.Debugger.Soft.VirtualMachine EndListen (IAsyncResult asyncResult);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig class Mono.Debugger.Soft.VirtualMachine EndListen(class System.IAsyncResult asyncResult) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Debugger.Soft.VirtualMachine</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="asyncResult" Type="System.IAsyncResult" />
+      </Parameters>
+      <Docs>
+        <param name="asyncResult">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Launch">
+      <MemberSignature Language="C#" Value="public static Mono.Debugger.Soft.VirtualMachine Launch (System.Diagnostics.ProcessStartInfo info);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig class Mono.Debugger.Soft.VirtualMachine Launch(class System.Diagnostics.ProcessStartInfo info) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Debugger.Soft.VirtualMachine</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="info" Type="System.Diagnostics.ProcessStartInfo" />
+      </Parameters>
+      <Docs>
+        <param name="info">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Launch">
+      <MemberSignature Language="C#" Value="public static Mono.Debugger.Soft.VirtualMachine Launch (string[] args);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig class Mono.Debugger.Soft.VirtualMachine Launch(string[] args) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Debugger.Soft.VirtualMachine</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="args" Type="System.String[]" />
+      </Parameters>
+      <Docs>
+        <param name="args">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Launch">
+      <MemberSignature Language="C#" Value="public static Mono.Debugger.Soft.VirtualMachine Launch (System.Diagnostics.ProcessStartInfo info, Mono.Debugger.Soft.LaunchOptions options);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig class Mono.Debugger.Soft.VirtualMachine Launch(class System.Diagnostics.ProcessStartInfo info, class Mono.Debugger.Soft.LaunchOptions options) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Debugger.Soft.VirtualMachine</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="info" Type="System.Diagnostics.ProcessStartInfo" />
+        <Parameter Name="options" Type="Mono.Debugger.Soft.LaunchOptions" />
+      </Parameters>
+      <Docs>
+        <param name="info">To be added.</param>
+        <param name="options">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
     <Member MemberName="Launch">
       <MemberSignature Language="C#" Value="public static Mono.Debugger.Soft.VirtualMachine Launch (string[] args, Mono.Debugger.Soft.LaunchOptions options);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig class Mono.Debugger.Soft.VirtualMachine Launch(string[] args, class Mono.Debugger.Soft.LaunchOptions options) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -34,8 +383,57 @@
         <remarks>To be added.</remarks>
       </Docs>
     </Member>
+    <Member MemberName="LaunchInternal">
+      <MemberSignature Language="C#" Value="public static Mono.Debugger.Soft.VirtualMachine LaunchInternal (Mono.Debugger.Soft.ITargetProcess p, System.Diagnostics.ProcessStartInfo info, System.Net.Sockets.Socket socket);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig class Mono.Debugger.Soft.VirtualMachine LaunchInternal(class Mono.Debugger.Soft.ITargetProcess p, class System.Diagnostics.ProcessStartInfo info, class System.Net.Sockets.Socket socket) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Debugger.Soft.VirtualMachine</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="p" Type="Mono.Debugger.Soft.ITargetProcess" />
+        <Parameter Name="info" Type="System.Diagnostics.ProcessStartInfo" />
+        <Parameter Name="socket" Type="System.Net.Sockets.Socket" />
+      </Parameters>
+      <Docs>
+        <param name="p">To be added.</param>
+        <param name="info">To be added.</param>
+        <param name="socket">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="LaunchInternal">
+      <MemberSignature Language="C#" Value="public static Mono.Debugger.Soft.VirtualMachine LaunchInternal (System.Diagnostics.Process p, System.Diagnostics.ProcessStartInfo info, System.Net.Sockets.Socket socket);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig class Mono.Debugger.Soft.VirtualMachine LaunchInternal(class System.Diagnostics.Process p, class System.Diagnostics.ProcessStartInfo info, class System.Net.Sockets.Socket socket) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Debugger.Soft.VirtualMachine</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="p" Type="System.Diagnostics.Process" />
+        <Parameter Name="info" Type="System.Diagnostics.ProcessStartInfo" />
+        <Parameter Name="socket" Type="System.Net.Sockets.Socket" />
+      </Parameters>
+      <Docs>
+        <param name="p">To be added.</param>
+        <param name="info">To be added.</param>
+        <param name="socket">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
     <Member MemberName="Listen">
-      <MemberSignature Language="C#" Value="public static Mono.Debugger.Soft.VirtualMachine Listen (System.Net.IPEndPoint endpoint);" />
+      <MemberSignature Language="C#" Value="public static Mono.Debugger.Soft.VirtualMachine Listen (System.Net.IPEndPoint dbg_ep);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig class Mono.Debugger.Soft.VirtualMachine Listen(class System.Net.IPEndPoint dbg_ep) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -44,14 +442,58 @@
         <ReturnType>Mono.Debugger.Soft.VirtualMachine</ReturnType>
       </ReturnValue>
       <Parameters>
-        <Parameter Name="endpoint" Type="System.Net.IPEndPoint" />
+        <Parameter Name="dbg_ep" Type="System.Net.IPEndPoint" />
       </Parameters>
       <Docs>
-        <param name="endpoint">The TCP/IP endpoint to listen at.</param>
+        <param name="dbg_ep">The TCP/IP endpoint to listen at.</param>
         <summary>Wait for a virtual machine to connect at the specified address.</summary>
         <returns>To be added.</returns>
         <remarks>To be added.</remarks>
       </Docs>
     </Member>
+    <Member MemberName="Listen">
+      <MemberSignature Language="C#" Value="public static Mono.Debugger.Soft.VirtualMachine Listen (System.Net.IPEndPoint dbg_ep, System.Net.IPEndPoint con_ep);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig class Mono.Debugger.Soft.VirtualMachine Listen(class System.Net.IPEndPoint dbg_ep, class System.Net.IPEndPoint con_ep) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Debugger.Soft.VirtualMachine</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="dbg_ep" Type="System.Net.IPEndPoint" />
+        <Parameter Name="con_ep" Type="System.Net.IPEndPoint" />
+      </Parameters>
+      <Docs>
+        <param name="dbg_ep">To be added.</param>
+        <param name="con_ep">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="ListenInternal">
+      <MemberSignature Language="C#" Value="public static Mono.Debugger.Soft.VirtualMachine ListenInternal (System.Net.Sockets.Socket dbg_sock, System.Net.Sockets.Socket con_sock);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig class Mono.Debugger.Soft.VirtualMachine ListenInternal(class System.Net.Sockets.Socket dbg_sock, class System.Net.Sockets.Socket con_sock) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Debugger.Soft.VirtualMachine</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="dbg_sock" Type="System.Net.Sockets.Socket" />
+        <Parameter Name="con_sock" Type="System.Net.Sockets.Socket" />
+      </Parameters>
+      <Docs>
+        <param name="dbg_sock">To be added.</param>
+        <param name="con_sock">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
   </Members>
 </Type>
diff --git a/mcs/class/Mono.Debugger.Soft/Documentation/en/index.xml b/mcs/class/Mono.Debugger.Soft/Documentation/en/index.xml
index 0e514e8..a2636fd 100644
--- a/mcs/class/Mono.Debugger.Soft/Documentation/en/index.xml
+++ b/mcs/class/Mono.Debugger.Soft/Documentation/en/index.xml
@@ -1,6 +1,7 @@
 <Overview>
   <Assemblies>
-    <Assembly Name="Mono.Debugger" Version="0.0.0.0">
+    <Assembly Name="Mono.Debugger.Soft" Version="0.0.0.0">
+      <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 d2 d0 3a 8e 6b ea 7a 2e 74 e8 d1 af cc 93 e8 85 19 74 95 2b b4 80 a1 2c 91 34 47 4d 04 06 24 47 c3 7e 0e 68 c0 80 53 6f cf 3c 3f be 2f f9 c9 79 ce 99 84 75 e5 06 e8 ce 82 dd 5b 0f 35 0d c1 0e 93 bf 2e ee cf 87 4b 24 77 0c 50 81 db ea 74 47 fd da fa 27 7b 22 de 47 d6 ff ea 44 96 74 a4 f9 fc cf 84 d1 50 69 08 93 80 28 4d bd d3 5f 46 cd ff 12 a1 bd 78 e4 ef 00 65 d0 16 df ]</AssemblyPublicKey>
       <Attributes>
         <Attribute>
           <AttributeName>System.Runtime.CompilerServices.RuntimeCompatibility(WrapNonExceptionThrows=true)</AttributeName>
@@ -11,10 +12,15 @@
   <Copyright>(C) 2009 Novell, Inc.</Copyright>
   <Types>
     <Namespace Name="Mono.Debugger.Soft">
+      <Type Name="AbsentInformationException" Kind="Class" />
+      <Type Name="AppDomainCreateEvent" Kind="Class" />
       <Type Name="AppDomainMirror" Kind="Class" />
+      <Type Name="AppDomainUnloadEvent" Kind="Class" />
       <Type Name="ArrayMirror" Kind="Class" />
       <Type Name="AssemblyLoadEvent" Kind="Class" />
+      <Type Name="AssemblyLoadEventRequest" Kind="Class" />
       <Type Name="AssemblyMirror" Kind="Class" />
+      <Type Name="AssemblyUnloadEvent" Kind="Class" />
       <Type Name="BreakpointEvent" Kind="Class" />
       <Type Name="BreakpointEventRequest" Kind="Class" />
       <Type Name="CustomAttributeDataMirror" Kind="Class" />
@@ -25,13 +31,21 @@
       <Type Name="ErrorHandlerEventArgs" Kind="Class" />
       <Type Name="Event" Kind="Class" />
       <Type Name="EventRequest" Kind="Class" />
+      <Type Name="EventSet" Kind="Class" />
       <Type Name="EventType" Kind="Enumeration" />
+      <Type Name="ExceptionEvent" Kind="Class" />
+      <Type Name="ExceptionEventRequest" Kind="Class" />
       <Type Name="FieldInfoMirror" Kind="Class" />
+      <Type Name="IInvokeAsyncResult" Kind="Interface" />
       <Type Name="ILInstruction" Kind="Class" />
       <Type Name="IMirror" Kind="Interface" />
       <Type Name="InvalidStackFrameException" Kind="Class" />
       <Type Name="InvocationException" Kind="Class" />
+      <Type Name="InvokeOptions" Kind="Enumeration" />
+      <Type Name="ITargetProcess" Kind="Interface" />
       <Type Name="LaunchOptions" Kind="Class" />
+      <Type Name="LaunchOptions+ProcessLauncher" Kind="Delegate" />
+      <Type Name="LaunchOptions+TargetProcessLauncher" Kind="Delegate" />
       <Type Name="LocalVariable" Kind="Class" />
       <Type Name="Location" Kind="Class" />
       <Type Name="MethodBodyMirror" Kind="Class" />
@@ -48,7 +62,6 @@
       <Type Name="PrimitiveValue" Kind="Class" />
       <Type Name="PropertyInfoMirror" Kind="Class" />
       <Type Name="StackFrame" Kind="Class" />
-      <Type Name="StackFrameType" Kind="Enumeration" />
       <Type Name="StepDepth" Kind="Enumeration" />
       <Type Name="StepEvent" Kind="Class" />
       <Type Name="StepEventRequest" Kind="Class" />
@@ -62,6 +75,7 @@
       <Type Name="TypeLoadEvent" Kind="Class" />
       <Type Name="TypeMirror" Kind="Class" />
       <Type Name="Value" Kind="Class" />
+      <Type Name="VersionInfo" Kind="Class" />
       <Type Name="VirtualMachine" Kind="Class" />
       <Type Name="VirtualMachineManager" Kind="Class" />
       <Type Name="VMDeathEvent" Kind="Class" />
diff --git a/mcs/class/Mono.Debugger.Soft/Makefile b/mcs/class/Mono.Debugger.Soft/Makefile
index b07afb6..607d352 100644
--- a/mcs/class/Mono.Debugger.Soft/Makefile
+++ b/mcs/class/Mono.Debugger.Soft/Makefile
@@ -8,11 +8,15 @@ LIB_MCS_FLAGS = /r:$(corlib) /r:System.dll /r:Mono.Cecil.dll /r:System.Core.dll
 
 TEST_MCS_FLAGS = /r:Mono.Cecil.dll
 
-check: dtest-app.exe
+test: dtest-app.exe dtest-excfilter.exe
+check: dtest-app.exe dtest-excfilter.exe
 
-dtest-app.exe:
+dtest-app.exe: Test/dtest-app.cs
 	$(CSCOMPILE) -out:$@ -unsafe -debug Test/dtest-app.cs
 
+dtest-excfilter.exe: Test/dtest-excfilter.il
+	$(INTERNAL_ILASM) -out:$@ /exe /debug Test/dtest-excfilter.il
+
 CLEAN_FILES = dtest-app.exe dtest-app.exe.mdb
 
 #NO_TEST = yes
diff --git a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft.dll.sources b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft.dll.sources
index abe2861..2cbc642 100644
--- a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft.dll.sources
+++ b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft.dll.sources
@@ -32,6 +32,7 @@ Mono.Debugger.Soft/MethodEntryEvent.cs
 Mono.Debugger.Soft/MethodMirror.cs
 Mono.Debugger.Soft/BreakpointEventRequest.cs
 Mono.Debugger.Soft/MethodEntryEventRequest.cs
+Mono.Debugger.Soft/AssemblyLoadEventRequest.cs
 Mono.Debugger.Soft/LocalVariable.cs
 Mono.Debugger.Soft/ParameterInfoMirror.cs
 Mono.Debugger.Soft/Event.cs
diff --git a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/AssemblyLoadEventRequest.cs b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/AssemblyLoadEventRequest.cs
new file mode 100644
index 0000000..0ecc1b1
--- /dev/null
+++ b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/AssemblyLoadEventRequest.cs
@@ -0,0 +1,11 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace Mono.Debugger.Soft
+{
+	public sealed class AssemblyLoadEventRequest : EventRequest {		
+		internal AssemblyLoadEventRequest (VirtualMachine vm) : base (vm, EventType.AssemblyLoad) {
+		}
+	}
+}
diff --git a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/ChangeLog b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/ChangeLog
index 0994bcf..d876510 100644
--- a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/ChangeLog
+++ b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/ChangeLog
@@ -1,8 +1,62 @@
+2011-01-04  Zoltan Varga  <vargaz at gmail.com>
+
+	Add AssemblyLoadEventRequest () type to the sdb api, and use it to
+	fix the test suite.
+
+2010-12-19  Zoltan Varga  <vargaz at gmail.com>
+
+	Add support for accessing ThreadStatic fields in sdb. Fixes
+	#645217.
+
+2010-12-17  Zoltan Varga  <vargaz at gmail.com>
+
+	Convert the new NO_SEQ_POINT_AT_IL_OFFSET sdb error code into an
+	exception.
+
+2010-12-13  Michael Hutchinson  <mhutchinson at novell.com>
+
+	Fixi soft debugger dll crash on Windows w/redirected console
+
+	Windows socket behaviour seems to be slightly different from
+	Linux/Mac, and Mono.Debugger.Soft was trying to disconnect a
+	socket that that doesn't get connected, causing an exception at
+	launch.
+
+	For some reason it did check the main debugger socket before
+	trying to disconnect it, but not the console socket, so only apps
+	with redirected console output would crash.
+
+2010-12-13  Michael Hutchinson  <mhutchinson at novell.com>
+
+	Remove default arg usage from sdb dll so it can be compiled with
+	csc 3.5
+
 2010-11-03  Zoltan Varga  <vargaz at gmail.com>
 
 	Fix encoding of large strings in the soft debugger api. Fixes
 	#648832.
 
+2010-10-23  Michael Hutchinson  <mhutchinson at novell.com>
+
+	[SDB] Add BeginConnect/EndConnect to VirtualMachineManager
+
+	Launch and Listen methods had async version but Connect did not.
+
+2010-10-19  Tak  <levi at unity3d.com>
+
+	* Mono.Debugger.Soft/VirtualMachineManager.cs: Don't disconnect an
+	unconnected socket. Fixes #606809.
+
+	This patch is licensed MIT/X11.
+
+2010-10-05  Jb Evain  <jbevain at gmail.com>
+
+	Port Mono.Debugger.Soft to cecil-light
+
+2010-09-23  Zoltan Varga  <vargaz at gmail.com>
+
+	Don't allow EventType.Breakpoint in vm.EnableEvents ().
+
 2010-09-13  Zoltan Varga  <vargaz at gmail.com>
 
 	Bump minor version to 2 to be compatible with the runtime.
diff --git a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/Connection.cs b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/Connection.cs
index 0a1999a..8bd711f 100644
--- a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/Connection.cs
+++ b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/Connection.cs
@@ -103,6 +103,48 @@ namespace Mono.Debugger.Soft
 		SINGLE_THREADED = 0x2
 	}
 
+	enum ElementType {
+		End		 = 0x00,
+		Void		= 0x01,
+		Boolean	 = 0x02,
+		Char		= 0x03,
+		I1		  = 0x04,
+		U1		  = 0x05,
+		I2		  = 0x06,
+		U2		  = 0x07,
+		I4		  = 0x08,
+		U4		  = 0x09,
+		I8		  = 0x0a,
+		U8		  = 0x0b,
+		R4		  = 0x0c,
+		R8		  = 0x0d,
+		String	  = 0x0e,
+		Ptr		 = 0x0f,
+		ByRef	   = 0x10,
+		ValueType   = 0x11,
+		Class	   = 0x12,
+		Var        = 0x13,
+		Array	   = 0x14,
+		GenericInst = 0x15,
+		TypedByRef  = 0x16,
+		I		   = 0x18,
+		U		   = 0x19,
+		FnPtr	   = 0x1b,
+		Object	  = 0x1c,
+		SzArray	 = 0x1d,
+		MVar       = 0x1e,
+		CModReqD	= 0x1f,
+		CModOpt	 = 0x20,
+		Internal	= 0x21,
+		Modifier	= 0x40,
+		Sentinel	= 0x41,
+		Pinned	  = 0x45,
+
+		Type		= 0x50,
+		Boxed	   = 0x51,
+		Enum		= 0x55
+	}
+
 	class ValueImpl {
 		public ElementType Type; /* or one of the VALUE_TYPE_ID constants */
 		public long Objid;
@@ -234,7 +276,8 @@ namespace Mono.Debugger.Soft
 		INVALID_ARGUMENT = 102,
 		ERR_UNLOADED = 103,
 		ERR_NO_INVOCATION = 104,
-		ABSENT_INFORMATION = 105
+		ABSENT_INFORMATION = 105,
+		NO_SEQ_POINT_AT_IL_OFFSET = 106
 	}
 
 	public class ErrorHandlerEventArgs : EventArgs {
@@ -394,7 +437,9 @@ namespace Mono.Debugger.Soft
 			GET_FIELD_CATTRS = 11,
 			GET_PROPERTY_CATTRS = 12,
 			/* FIXME: Merge into GET_SOURCE_FILES when the major protocol version is increased */
-			GET_SOURCE_FILES_2 = 13
+			GET_SOURCE_FILES_2 = 13,
+			/* FIXME: Merge into GET_VALUES when the major protocol version is increased */
+			GET_VALUES_2 = 14
 		}
 
 		enum CmdStackFrame {
@@ -1629,9 +1674,13 @@ namespace Mono.Debugger.Soft
 			return SendReceive (CommandSet.TYPE, (int)CmdType.GET_OBJECT, new PacketWriter ().WriteId (id)).ReadId ();
 		}
 
-		public ValueImpl[] Type_GetValues (long id, long[] fields) {
+		public ValueImpl[] Type_GetValues (long id, long[] fields, long thread_id) {
 			int len = fields.Length;
-			PacketReader r = SendReceive (CommandSet.TYPE, (int)CmdType.GET_VALUES, new PacketWriter ().WriteId (id).WriteInt (len).WriteIds (fields));
+			PacketReader r;
+			if (thread_id != 0)
+				r = SendReceive (CommandSet.TYPE, (int)CmdType.GET_VALUES_2, new PacketWriter ().WriteId (id).WriteId (thread_id).WriteInt (len).WriteIds (fields));
+			else
+				r = SendReceive (CommandSet.TYPE, (int)CmdType.GET_VALUES, new PacketWriter ().WriteId (id).WriteInt (len).WriteIds (fields));
 
 			ValueImpl[] res = new ValueImpl [len];
 			for (int i = 0; i < len; ++i)
diff --git a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/MethodBodyMirror.cs b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/MethodBodyMirror.cs
index 77cd5d5..20ec9aa 100644
--- a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/MethodBodyMirror.cs
+++ b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/MethodBodyMirror.cs
@@ -108,7 +108,7 @@ namespace Mono.Debugger.Soft
 					br.ReadByte ();
 					//instr.Operand = GetVariable (body, br.ReadByte ());
 					break;
-				case OperandType.ShortInlineParam :
+				case OperandType.ShortInlineArg :
 					br.ReadByte ();
 					//instr.Operand = GetParameter (body, br.ReadByte ());
 					break;
@@ -124,7 +124,7 @@ namespace Mono.Debugger.Soft
 					br.ReadInt16 ();
 					//instr.Operand = GetVariable (body, br.ReadInt16 ());
 					break;
-				case OperandType.InlineParam :
+				case OperandType.InlineArg :
 					br.ReadInt16 ();
 					//instr.Operand = GetParameter (body, br.ReadInt16 ());
 					break;
diff --git a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/MethodMirror.cs b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/MethodMirror.cs
index 71d3ba3..5a0385b 100644
--- a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/MethodMirror.cs
+++ b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/MethodMirror.cs
@@ -282,7 +282,7 @@ namespace Mono.Debugger.Soft
 		public C.MethodDefinition Metadata {
 			get {
 				if (meta == null)
-					meta = (C.MethodDefinition)DeclaringType.Assembly.Metadata.MainModule.LookupByToken (new MetadataToken (MetadataToken));
+					meta = (C.MethodDefinition)DeclaringType.Assembly.Metadata.MainModule.LookupToken (MetadataToken);
 				return meta;
 			}
 		}
diff --git a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/TypeMirror.cs b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/TypeMirror.cs
index 1b9de53..d17fac5 100644
--- a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/TypeMirror.cs
+++ b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/TypeMirror.cs
@@ -442,7 +442,7 @@ namespace Mono.Debugger.Soft
 			return GetValues (new FieldInfoMirror [] { field }) [0];
 		}
 
-		public Value[] GetValues (IList<FieldInfoMirror> fields) {
+		public Value[] GetValues (IList<FieldInfoMirror> fields, ThreadMirror thread) {
 			if (fields == null)
 				throw new ArgumentNullException ("fields");
 			foreach (FieldInfoMirror f in fields) {
@@ -454,7 +454,7 @@ namespace Mono.Debugger.Soft
 			for (int i = 0; i < fields.Count; ++i)
 				ids [i] = fields [i].Id;
 			try {
-				return vm.DecodeValues (vm.conn.Type_GetValues (id, ids));
+				return vm.DecodeValues (vm.conn.Type_GetValues (id, ids, thread !=  null ? thread.Id : 0));
 			} catch (CommandException ex) {
 				if (ex.ErrorCode == ErrorCode.INVALID_FIELDID)
 					throw new ArgumentException ("One of the fields is not valid for this type.", "fields");
@@ -463,6 +463,20 @@ namespace Mono.Debugger.Soft
 			}
 		}
 
+		public Value[] GetValues (IList<FieldInfoMirror> fields) {
+			return GetValues (fields, null);
+		}
+
+		/*
+		 * Return the value of the [ThreadStatic] field FIELD on the thread THREAD.
+		 */
+		public Value GetValue (FieldInfoMirror field, ThreadMirror thread) {
+			if (thread == null)
+				throw new ArgumentNullException ("thread");
+			CheckMirror (thread);
+			return GetValues (new FieldInfoMirror [] { field }, thread) [0];
+		}
+
 		public void SetValues (IList<FieldInfoMirror> fields, Value[] values) {
 			if (fields == null)
 				throw new ArgumentNullException ("fields");
@@ -520,7 +534,7 @@ namespace Mono.Debugger.Soft
 				if (meta == null) {
 					if (Assembly.Metadata == null || MetadataToken == 0)
 						return null;
-					meta = (C.TypeDefinition)Assembly.Metadata.MainModule.LookupByToken (new MetadataToken (MetadataToken));
+					meta = (C.TypeDefinition)Assembly.Metadata.MainModule.LookupToken (MetadataToken);
 				}
 				return meta;
 			}
diff --git a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/VirtualMachine.cs b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/VirtualMachine.cs
index 0571fa2..2e0e622 100644
--- a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/VirtualMachine.cs
+++ b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/VirtualMachine.cs
@@ -188,9 +188,16 @@ namespace Mono.Debugger.Soft
 			return new ExceptionEventRequest (this, exc_type, caught, uncaught);
 		}
 
+		public AssemblyLoadEventRequest CreateAssemblyLoadRequest () {
+			return new AssemblyLoadEventRequest (this);
+		}
+
 		public void EnableEvents (params EventType[] events) {
-			foreach (EventType etype in events)
+			foreach (EventType etype in events) {
+				if (etype == EventType.Breakpoint)
+					throw new ArgumentException ("Breakpoint events cannot be requested using EnableEvents", "events");
 				conn.EnableEvent (etype, SuspendPolicy.All, null);
+			}
 		}
 
 		public BreakpointEventRequest SetBreakpoint (MethodMirror method, long il_offset) {
@@ -224,6 +231,8 @@ namespace Mono.Debugger.Soft
 				throw new NotSupportedException ("This request is not supported by the protocol version implemented by the debuggee.");
 			case ErrorCode.ABSENT_INFORMATION:
 				throw new AbsentInformationException ();
+			case ErrorCode.NO_SEQ_POINT_AT_IL_OFFSET:
+				throw new ArgumentException ("Cannot set breakpoint on the specified IL offset.");
 			default:
 				throw new CommandException (args.ErrorCode);
 			}
diff --git a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/VirtualMachineManager.cs b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/VirtualMachineManager.cs
index 506b6ae..d537cbf 100644
--- a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/VirtualMachineManager.cs
+++ b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/VirtualMachineManager.cs
@@ -33,6 +33,7 @@ namespace Mono.Debugger.Soft
 	{
 		private delegate VirtualMachine LaunchCallback (ITargetProcess p, ProcessStartInfo info, Socket socket);
 		private delegate VirtualMachine ListenCallback (Socket dbg_sock, Socket con_sock); 
+		private delegate VirtualMachine ConnectCallback (Socket dbg_sock, Socket con_sock, IPEndPoint dbg_ep, IPEndPoint con_ep); 
 
 		internal VirtualMachineManager () {
 		}
@@ -67,7 +68,13 @@ namespace Mono.Debugger.Soft
 			return vm;
 		}
 
-		public static IAsyncResult BeginLaunch (ProcessStartInfo info, AsyncCallback callback, LaunchOptions options = null) {
+		public static IAsyncResult BeginLaunch (ProcessStartInfo info, AsyncCallback callback)
+		{
+			return BeginLaunch (info, callback, null);
+		}
+
+		public static IAsyncResult BeginLaunch (ProcessStartInfo info, AsyncCallback callback, LaunchOptions options)
+		{
 			if (info == null)
 				throw new ArgumentNullException ("info");
 
@@ -115,11 +122,23 @@ namespace Mono.Debugger.Soft
 			return cb.EndInvoke (asyncResult);
 		}
 
-		public static VirtualMachine Launch (ProcessStartInfo info, LaunchOptions options = null) {
+		public static VirtualMachine Launch (ProcessStartInfo info)
+		{
+			return Launch (info, null);
+		}
+
+		public static VirtualMachine Launch (ProcessStartInfo info, LaunchOptions options)
+		{
 			return EndLaunch (BeginLaunch (info, null, options));
 		}
 
-		public static VirtualMachine Launch (string[] args, LaunchOptions options = null) {
+		public static VirtualMachine Launch (string[] args)
+		{
+			return Launch (args, null);
+		}
+
+		public static VirtualMachine Launch (string[] args, LaunchOptions options)
+		{
 			ProcessStartInfo pi = new ProcessStartInfo ("mono");
 			pi.Arguments = String.Join (" ", args);
 
@@ -154,11 +173,13 @@ namespace Mono.Debugger.Soft
 			}
 
 			if (con_sock != null) {
-				con_sock.Disconnect (false);
+				if (con_sock.Connected)
+					con_sock.Disconnect (false);
 				con_sock.Close ();
 			}
 
-			dbg_sock.Disconnect (false);
+			if (dbg_sock.Connected)
+				dbg_sock.Disconnect (false);
 			dbg_sock.Close ();
 
 			Connection conn = new Connection (dbg_acc);
@@ -211,7 +232,13 @@ namespace Mono.Debugger.Soft
 			return cb.EndInvoke (asyncResult);
 		}
 
-		public static VirtualMachine Listen (IPEndPoint dbg_ep, IPEndPoint con_ep = null) { 
+		public static VirtualMachine Listen (IPEndPoint dbg_ep)
+		{
+			return Listen (dbg_ep, null);
+		}
+
+		public static VirtualMachine Listen (IPEndPoint dbg_ep, IPEndPoint con_ep)
+		{
 			return EndListen (BeginListen (dbg_ep, con_ep, null));
 		}
 
@@ -219,21 +246,88 @@ namespace Mono.Debugger.Soft
 		 * Connect to a virtual machine listening at the specified address.
 		 */
 		public static VirtualMachine Connect (IPEndPoint endpoint) {
+			return Connect (endpoint, null);
+		}
+
+		public static VirtualMachine Connect (IPEndPoint endpoint, IPEndPoint consoleEndpoint) { 
 			if (endpoint == null)
 				throw new ArgumentNullException ("endpoint");
 
-			Socket socket = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
-			socket.Connect (endpoint);
+			return EndConnect (BeginConnect (endpoint, consoleEndpoint, null));
+		}
+
+		public static VirtualMachine ConnectInternal (Socket dbg_sock, Socket con_sock, IPEndPoint dbg_ep, IPEndPoint con_ep) {
+			if (con_sock != null) {
+				try {
+					con_sock.Connect (con_ep);
+				} catch (Exception) {
+					try {
+						dbg_sock.Close ();
+					} catch {}
+					throw;
+				}
+			}
+						
+			try {
+				dbg_sock.Connect (dbg_ep);
+			} catch (Exception) {
+				if (con_sock != null) {
+					try {
+						con_sock.Close ();
+					} catch {}
+				}
+				throw;
+			}
 
-			Connection conn = new Connection (socket);
+			Connection conn = new Connection (dbg_sock);
 
 			VirtualMachine vm = new VirtualMachine (null, conn);
 
+			if (con_sock != null) {
+				vm.StandardOutput = new StreamReader (new NetworkStream (con_sock));
+				vm.StandardError = null;
+			}
+
 			conn.EventHandler = new EventHandler (vm);
 
 			vm.connect ();
 
 			return vm;
 		}
+
+		public static IAsyncResult BeginConnect (IPEndPoint dbg_ep, AsyncCallback callback) {
+			return BeginConnect (dbg_ep, null, callback);
+		}
+
+		public static IAsyncResult BeginConnect (IPEndPoint dbg_ep, IPEndPoint con_ep, AsyncCallback callback) {
+			Socket dbg_sock = null;
+			Socket con_sock = null;
+
+			dbg_sock = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
+
+			if (con_ep != null) {
+				con_sock = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
+			}
+			
+			ConnectCallback c = new ConnectCallback (ConnectInternal);
+			return c.BeginInvoke (dbg_sock, con_sock, dbg_ep, con_ep, callback, con_sock ?? dbg_sock);
+		}
+
+		public static VirtualMachine EndConnect (IAsyncResult asyncResult) {
+			if (asyncResult == null)
+				throw new ArgumentNullException ("asyncResult");
+
+			if (!asyncResult.IsCompleted)
+				asyncResult.AsyncWaitHandle.WaitOne ();
+
+			AsyncResult async = (AsyncResult) asyncResult;
+			ConnectCallback cb = (ConnectCallback) async.AsyncDelegate;
+			return cb.EndInvoke (asyncResult);
+		}
+
+		public static void CancelConnection (IAsyncResult asyncResult)
+		{
+			((Socket)asyncResult.AsyncState).Close ();
+		}
 	}
 }
diff --git a/mcs/class/Mono.Debugger.Soft/Test/ChangeLog b/mcs/class/Mono.Debugger.Soft/Test/ChangeLog
index 0ef327b..3b52a4a 100644
--- a/mcs/class/Mono.Debugger.Soft/Test/ChangeLog
+++ b/mcs/class/Mono.Debugger.Soft/Test/ChangeLog
@@ -1,3 +1,22 @@
+2011-01-04  Zoltan Varga  <vargaz at gmail.com>
+
+	Add AssemblyLoadEventRequest () type to the sdb api, and use it to
+	fix the test suite.
+
+2010-12-19  Zoltan Varga  <vargaz at gmail.com>
+
+	Add support for accessing ThreadStatic fields in sdb. Fixes
+	#645217.
+
+2010-12-16  Martin Baulig  <martin at novell.com>
+
+	Improve support for exception filters.
+
+2010-11-18  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix an assert in single stepping if an IL offset doesn't
+	correspond to a seq point. Fixes #654694.
+
 2010-11-10  Zoltan Varga  <vargaz at gmail.com>
 
 	When single stepping from a exception throw site, single step to
@@ -12,6 +31,14 @@
 	Fix encoding of large strings in the soft debugger api. Fixes
 	#648832.
 
+2010-10-25  Zoltan Varga  <vargaz at gmail.com>
+
+	Add a test for #632224. Fix dtest-app.exe dependencies.
+
+2010-09-23  Zoltan Varga  <vargaz at gmail.com>
+
+	Don't allow EventType.Breakpoint in vm.EnableEvents ().
+
 2010-06-17  Zoltan Varga  <vargaz at gmail.com>
 
 	* dtest.cs: Add an EventSet test.
diff --git a/mcs/class/Mono.Debugger.Soft/Test/dtest.cs b/mcs/class/Mono.Debugger.Soft/Test/dtest.cs
index 8647a96..8734297 100644
--- a/mcs/class/Mono.Debugger.Soft/Test/dtest.cs
+++ b/mcs/class/Mono.Debugger.Soft/Test/dtest.cs
@@ -51,7 +51,8 @@ public class DebuggerTests
 			vm = VirtualMachineManager.Listen (new IPEndPoint (IPAddress.Any, 10000));
 		}
 
-		vm.EnableEvents (EventType.AssemblyLoad);
+		var load_req = vm.CreateAssemblyLoadRequest ();
+		load_req.Enable ();
 
 		Event vmstart = vm.GetNextEvent ();
 		Assert.AreEqual (EventType.VMStart, vmstart.EventType);
@@ -76,6 +77,8 @@ public class DebuggerTests
 
 			vm.Resume ();
 		}
+
+		load_req.Disable ();
 	}
 
 	BreakpointEvent run_until (string name) {
@@ -1086,6 +1089,7 @@ public class DebuggerTests
 	}
 
 	[Test]
+	[Category ("only5")]
 	public void Type_GetValue () {
 		Event e = run_until ("o1");
 		StackFrame frame = e.Thread.GetFrames () [0];
@@ -1118,6 +1122,10 @@ public class DebuggerTests
 		f = t.GetValue (parent.GetField ("base_static_s"));
 		AssertValue ("C", f);
 
+		// thread static field
+		f = t.GetValue (t.GetField ("tls_i"), e.Thread);
+		AssertValue (42, f);
+
 		// Argument checking
 		AssertThrows<ArgumentNullException> (delegate () {
 			t.GetValue (null);
@@ -1624,6 +1632,9 @@ public class DebuggerTests
 	public void AssemblyLoad () {
 		Event e = run_until ("assembly_load");
 
+		var load_req = vm.CreateAssemblyLoadRequest ();
+		load_req.Enable ();
+
 		vm.Resume ();
 
 		e = vm.GetNextEvent ();
@@ -1920,6 +1931,24 @@ public class DebuggerTests
 	}
 
 	[Test]
+	public void DisabledExceptionDuringInvoke () {
+		Event e = run_until ("invoke_ex");
+
+		MethodMirror m = entry_point.DeclaringType.GetMethod ("invoke_ex_inner");
+
+		StackFrame frame = e.Thread.GetFrames () [0];
+		var o = frame.GetThis () as ObjectMirror;
+
+		var req = vm.CreateExceptionRequest (null);
+		req.Enable ();
+
+		// Check InvokeOptions.DisableBreakpoints flag
+		o.InvokeMethod (e.Thread, m, null, InvokeOptions.DisableBreakpoints);
+
+		req.Disable ();
+	}
+
+	[Test]
 	public void InvokeSingleThreaded () {
 		vm.Dispose ();
 
@@ -2167,6 +2196,85 @@ public class DebuggerTests
 	}
 
 	[Test]
+	public void ExceptionFilter () {
+		Event e = run_until ("exception_filter");
+
+		MethodMirror m = entry_point.DeclaringType.GetMethod ("exception_filter_filter");
+		Assert.IsNotNull (m);
+
+		vm.SetBreakpoint (m, 0);
+
+		vm.Resume ();
+
+		e = vm.GetNextEvent ();
+		Assert.AreEqual (EventType.Breakpoint, e.EventType);
+		Assert.IsTrue (e is BreakpointEvent);
+		Assert.AreEqual (m.Name, (e as BreakpointEvent).Method.Name);
+
+		var frames = e.Thread.GetFrames ();
+
+		Assert.IsTrue (frames [0].Location.SourceFile.IndexOf ("dtest-app.cs") != -1);
+		Assert.AreEqual ("exception_filter_filter", frames [0].Location.Method.Name);
+
+		Assert.AreEqual (0, frames [1].Location.Method.MetadataToken);
+		Assert.AreEqual (0x0f, frames [1].Location.ILOffset);
+
+		Assert.AreEqual ("exception_filter_method", frames [2].Location.Method.Name);
+		Assert.AreEqual (0x05, frames [2].Location.ILOffset);
+
+		Assert.AreEqual (0, frames [3].Location.Method.MetadataToken, 0);
+		Assert.AreEqual (0, frames [3].Location.ILOffset);
+
+		Assert.AreEqual ("exception_filter", frames [4].Location.Method.Name);
+	}
+
+	[Test]
+	public void ExceptionFilter2 () {
+		vm.Dispose ();
+
+		Start (new string [] { "dtest-excfilter.exe" });
+
+		MethodMirror filter_method = entry_point.DeclaringType.GetMethod ("Filter");
+		Assert.IsNotNull (filter_method);
+
+		MethodMirror test_method = entry_point.DeclaringType.GetMethod ("Test");
+		Assert.IsNotNull (test_method);
+
+		vm.SetBreakpoint (filter_method, 0);
+
+		vm.Resume ();
+
+		var e = vm.GetNextEvent ();
+		Assert.AreEqual (EventType.Breakpoint, e.EventType);
+		Assert.IsTrue (e is BreakpointEvent);
+		Assert.AreEqual (filter_method.Name, (e as BreakpointEvent).Method.Name);
+
+		var frames = e.Thread.GetFrames ();
+
+		Assert.AreEqual (4, frames.Count ());
+
+		Assert.AreEqual (filter_method.Name, frames [0].Location.Method.Name);
+		Assert.AreEqual (20, frames [0].Location.LineNumber);
+		Assert.AreEqual (0, frames [0].Location.ILOffset);
+
+		Assert.AreEqual (test_method.Name, frames [1].Location.Method.Name);
+		Assert.AreEqual (37, frames [1].Location.LineNumber);
+		Assert.AreEqual (0x0b, frames [1].Location.ILOffset);
+
+		Assert.AreEqual (test_method.Name, frames [2].Location.Method.Name);
+		Assert.AreEqual (33, frames [2].Location.LineNumber);
+		Assert.AreEqual (0x05, frames [2].Location.ILOffset);
+
+		Assert.AreEqual (entry_point.Name, frames [3].Location.Method.Name);
+		Assert.AreEqual (14, frames [3].Location.LineNumber);
+		Assert.AreEqual (0x00, frames [3].Location.ILOffset);
+
+		vm.Exit (0);
+
+		vm = null;
+	}
+
+	[Test]
 	public void EventSets () {
 		//
 		// Create two filter which both match the same exception
@@ -2428,4 +2536,43 @@ public class DebuggerTests
 				vm.CreateEnumMirror (enumType, vm.CreateValue ((long)1));
 			});
 	}
-}
\ No newline at end of file
+
+	[Test]
+	public void VirtualMachine_EnableEvents_Breakpoint () {
+		AssertThrows<ArgumentException> (delegate () {
+				vm.EnableEvents (EventType.Breakpoint);
+			});
+	}
+
+	[Test]
+	public void SingleStepRegress654694 () {
+		int il_offset = -1;
+
+		MethodMirror m = entry_point.DeclaringType.GetMethod ("ss_regress_654694");
+		foreach (Location l in m.Locations) {
+			if (l.ILOffset > 0 && il_offset == -1)
+				il_offset = l.ILOffset;
+		}
+
+		Event e = run_until ("ss_regress_654694");
+
+		Assert.IsNotNull (m);
+		vm.SetBreakpoint (m, il_offset);
+
+		vm.Resume ();
+
+		e = vm.GetNextEvent ();
+		Assert.IsTrue (e is BreakpointEvent);
+
+		var req = vm.CreateStepRequest (e.Thread);
+		req.Depth = StepDepth.Over;
+		req.Size = StepSize.Line;
+		req.Enable ();
+
+		vm.Resume ();
+
+		e = vm.GetNextEvent ();
+		Assert.IsTrue (e is StepEvent);
+	}
+
+}
diff --git a/mcs/class/Mono.Messaging.RabbitMQ/Mono.Messaging.RabbitMQ/ChangeLog b/mcs/class/Mono.Messaging.RabbitMQ/Mono.Messaging.RabbitMQ/ChangeLog
index d977d8d..913de0c 100644
--- a/mcs/class/Mono.Messaging.RabbitMQ/Mono.Messaging.RabbitMQ/ChangeLog
+++ b/mcs/class/Mono.Messaging.RabbitMQ/Mono.Messaging.RabbitMQ/ChangeLog
@@ -1,3 +1,7 @@
+2011-01-03  barkerm  <michael.barker at lmax.com>
+
+	Fix for running against RabbitMQ 2.2
+
 2010-06-23  Michael Barker  <mike at middlesoft.co.uk>
 
 	* RabbitMQMessageQueue.cs: Modified to support RabbitMQ 1.8
diff --git a/mcs/class/Mono.Messaging.RabbitMQ/Mono.Messaging.RabbitMQ/ChangeLog b/mcs/class/Mono.Messaging.RabbitMQ/Mono.Messaging.RabbitMQ/ChangeLog.old
similarity index 100%
copy from mcs/class/Mono.Messaging.RabbitMQ/Mono.Messaging.RabbitMQ/ChangeLog
copy to mcs/class/Mono.Messaging.RabbitMQ/Mono.Messaging.RabbitMQ/ChangeLog.old
diff --git a/mcs/class/Mono.Messaging.RabbitMQ/Mono.Messaging.RabbitMQ/RabbitMQMessageQueue.cs b/mcs/class/Mono.Messaging.RabbitMQ/Mono.Messaging.RabbitMQ/RabbitMQMessageQueue.cs
index 588ceca..5c742d1 100644
--- a/mcs/class/Mono.Messaging.RabbitMQ/Mono.Messaging.RabbitMQ/RabbitMQMessageQueue.cs
+++ b/mcs/class/Mono.Messaging.RabbitMQ/Mono.Messaging.RabbitMQ/RabbitMQMessageQueue.cs
@@ -282,7 +282,7 @@ namespace Mono.Messaging.RabbitMQ {
 		
 		private void Send (IModel model, IMessage msg)
 		{
-			string finalName = model.QueueDeclare (QRef.Queue, true);
+			string finalName = model.QueueDeclare (QRef.Queue, false);
 			IMessageBuilder mb = helper.WriteMessage (model, msg);
 
 			model.BasicPublish ("", finalName,
diff --git a/mcs/class/Mono.Messaging/Mono.Messaging/MessagingProviderLocator.cs b/mcs/class/Mono.Messaging/Mono.Messaging/MessagingProviderLocator.cs
index 61c9430..0075732 100644
--- a/mcs/class/Mono.Messaging/Mono.Messaging/MessagingProviderLocator.cs
+++ b/mcs/class/Mono.Messaging/Mono.Messaging/MessagingProviderLocator.cs
@@ -66,7 +66,7 @@ namespace Mono.Messaging
 			return Instance.provider;
 		}
 		
-#if NET_2_0 || BOOTSTRAP_NET_2_0 || NET_3_0 || NET_2_1 || NET_3_0 || NET_3_5 || NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_2_1 || NET_3_0 || NET_3_5 || NET_4_0
 		private string GetProviderClassName ()
 		{
 			string className = System.Configuration.ConfigurationManager.AppSettings[MESSAGING_PROVIDER_KEY];
diff --git a/mcs/class/Mono.Options/Assembly/AssemblyInfo.cs b/mcs/class/Mono.Options/Assembly/AssemblyInfo.cs
index 183af76..281d53b 100644
--- a/mcs/class/Mono.Options/Assembly/AssemblyInfo.cs
+++ b/mcs/class/Mono.Options/Assembly/AssemblyInfo.cs
@@ -41,7 +41,7 @@ using System.Security.Permissions;
 	//
 	// DO NOT MODIFY STRINGS BELOW WITHOUT UPDATING mono/data/mono-options.pc.in
 	//
-	"0.2.1.0"
+	"0.2.2.0"
 	//
 	// DO NOT MODIFY STRINGS ABOVE WITHOUT UPDATING mono/data/mono-options.pc.in
 	//
diff --git a/mcs/class/Mono.Options/Assembly/ChangeLog b/mcs/class/Mono.Options/Assembly/ChangeLog
index 15147cc..67e9002 100644
--- a/mcs/class/Mono.Options/Assembly/ChangeLog
+++ b/mcs/class/Mono.Options/Assembly/ChangeLog
@@ -1,3 +1,17 @@
+2010-12-01  Jonathan Pryor  <jonpryor at vt.edu>
+
+	Add response file suport to Mono.Options.
+
+	Response file support is an "opt-in" feature, performed by adding
+	a ResponseFileSource to the OptionSet initialization logic:
+
+	var p = new OptionSet () { // normal options here... new
+	ResponseFileSource (), };
+
+	Response files make use of the new "ArgumentSource" support, which
+	acts as a low-level argument pre-processor, allowing processing of
+	arguments _before_ Option processing is performed.
+
 2008-10-13  Jonathan Pryor  <jpryor at novell.com>
 
 	* ChangeLog: Started.
diff --git a/mcs/class/Mono.Options/Assembly/ChangeLog b/mcs/class/Mono.Options/Assembly/ChangeLog.old
similarity index 100%
copy from mcs/class/Mono.Options/Assembly/ChangeLog
copy to mcs/class/Mono.Options/Assembly/ChangeLog.old
diff --git a/mcs/class/Mono.Options/ChangeLog b/mcs/class/Mono.Options/ChangeLog
index 199d5fe..2a2f540 100644
--- a/mcs/class/Mono.Options/ChangeLog
+++ b/mcs/class/Mono.Options/ChangeLog
@@ -1,3 +1,17 @@
+2010-12-01  Jonathan Pryor  <jonpryor at vt.edu>
+
+	Add response file suport to Mono.Options.
+
+	Response file support is an "opt-in" feature, performed by adding
+	a ResponseFileSource to the OptionSet initialization logic:
+
+	var p = new OptionSet () { // normal options here... new
+	ResponseFileSource (), };
+
+	Response files make use of the new "ArgumentSource" support, which
+	acts as a low-level argument pre-processor, allowing processing of
+	arguments _before_ Option processing is performed.
+
 2010-06-09  Jonathan Pryor  <jpryor at novell.com>
 
 	* Mono.Options_test.dll.sources: Add additional sources.
diff --git a/mcs/class/Mono.Options/ChangeLog b/mcs/class/Mono.Options/ChangeLog.old
similarity index 100%
copy from mcs/class/Mono.Options/ChangeLog
copy to mcs/class/Mono.Options/ChangeLog.old
diff --git a/mcs/class/Mono.Options/Documentation/en/Mono.Options/ArgumentSource.xml b/mcs/class/Mono.Options/Documentation/en/Mono.Options/ArgumentSource.xml
new file mode 100644
index 0000000..83d9206
--- /dev/null
+++ b/mcs/class/Mono.Options/Documentation/en/Mono.Options/ArgumentSource.xml
@@ -0,0 +1,238 @@
+<Type Name="ArgumentSource" FullName="Mono.Options.ArgumentSource">
+  <TypeSignature Language="C#" Value="public abstract class ArgumentSource" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi abstract beforefieldinit ArgumentSource extends System.Object" />
+  <AssemblyInfo>
+    <AssemblyName>Mono.Options</AssemblyName>
+    <AssemblyVersion>0.2.2.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>System.Object</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Docs>
+    <summary>
+      Support for inserting additional arguments during 
+      <see cref="M:Mono.Options.OptionSet.Parse(System.Collections.Generic.IEnumerable{System.String})" />
+      processing.
+    </summary>
+    <remarks>
+      <para>
+        The <see cref="T:Mono.Options.ArgumentSource" /> type is an
+        abstraction to allow "insertion" of additional values for option
+        processing while processing arguments.
+      </para>
+      <para>
+        The principal use case is for <i>response files</i>, as used by
+        <c>CSC.EXE</c>, <c>CL.EXE</c>, and numerous other
+        compilers.  A response file contains additional options for the tool,
+        and the contents of the response file should be "inserted" as if
+        entered on the command line.  Response files are useful for bypassing
+        command-line length limitations, among other things.
+      </para>
+      <para>
+        Applications must opt-in to response file support by calling 
+        <see cref="M:Mono.Options.OptionSet.Add(Mono.Options.ArgumentSource)" />
+        before calling 
+        <see cref="M:Mono.Options.OptionSet.Parse(System.Collections.Generic.IEnumerable{System.String})" />.
+      </para>
+      <block subset="none" type="overrides">
+        Inheriting classes must override the following abstract methods:
+        <list type="bullet"><item><term><see cref="M:Mono.Options.ArgumentSource.GetNames" /></term></item><item><term><see cref="P:Mono.Options.ArgumentSource.Description" /></term></item><item><term><see cref="M:Mono.Options.ArgumentSource.GetArguments(System.Int32, System.Collections.Generic.IEnumerable{System.String}@)" /></term></item></list></block>
+    </remarks>
+    <altmember cref="T:Mono.Options.ResponseFileSource" />
+  </Docs>
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="protected ArgumentSource ();" />
+      <MemberSignature Language="ILAsm" Value=".method familyhidebysig specialname rtspecialname instance void .ctor() cil managed" />
+      <MemberType>Constructor</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
+      </AssemblyInfo>
+      <Parameters />
+      <Docs>
+        <summary>
+          Construct and initialize a
+          <see cref="T:Mono.Options.ArgumentSource" /> instance.
+        </summary>
+        <remarks>
+        </remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Description">
+      <MemberSignature Language="C#" Value="public abstract string Description { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance string Description" />
+      <MemberType>Property</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>
+          The description to provide for the argument source within 
+          <see cref="M:Mono.Options.OptionSet.WriteOptionDescriptions(System.IO.TextWriter)" />.
+        </summary>
+        <value>
+          A <see cref="T:System.String" /> containing
+          the description to provide for the argument source within 
+          <see cref="M:Mono.Options.OptionSet.WriteOptionDescriptions(System.IO.TextWriter)" />.
+        </value>
+        <remarks>
+        </remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="GetArguments">
+      <MemberSignature Language="C#" Value="public static System.Collections.Generic.IEnumerable<string> GetArguments (System.IO.TextReader reader);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig class System.Collections.Generic.IEnumerable`1<string> GetArguments(class System.IO.TextReader reader) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.Collections.Generic.IEnumerable<System.String></ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="reader" Type="System.IO.TextReader" />
+      </Parameters>
+      <Docs>
+        <param name="reader">
+          A <see cref="T:System.IO.TextReader" /> to extract arguments from.
+        </param>
+        <summary>
+          Extract arguments from a <see cref="T:System.IO.TextReader" />.
+        </summary>
+        <returns>
+          A <see cref="T:System.Collections.Generic.IEnumerable{System.String}" />
+          which will provide arguments extracted from <paramref name="reader" />.
+        </returns>
+        <remarks>
+          <para>
+            Arguments are extracted from <paramref name="reader" /> by
+            splitting on newlines and spaces but maintaining the contents of
+            single-quoted and double-quoted strings.  Thus, <c>A B</c> will be
+            split as the separate strings <c>"A", "B"</c>, while 
+            <c>"A B"</c> will be returned as-is.
+          </para>
+          <block subset="none" type="note">
+            <paramref name="reader" /> is not 
+            <see cref="M:System.IO>TextReader.Close" />d.
+          </block>
+        </remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="GetArguments">
+      <MemberSignature Language="C#" Value="public abstract bool GetArguments (string value, out System.Collections.Generic.IEnumerable<string> replacement);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance bool GetArguments(string value, class System.Collections.Generic.IEnumerable`1<string> replacement) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.Boolean</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="value" Type="System.String" />
+        <Parameter Name="replacement" Type="System.Collections.Generic.IEnumerable<System.String>&" RefType="out" />
+      </Parameters>
+      <Docs>
+        <param name="value">
+          A <see cref="T:System.String" /> containing the argument to replace
+          with additional arguments.
+        </param>
+        <param name="replacement">
+          A <see cref="T:System.Collections.Generic.IEnumerable{System.String}" />
+          which will refer to teh replacement arguments if this method returns
+          <see langword="true" />; otherwise, this value should be ignored by
+          callers.
+        </param>
+        <summary>
+          Replace the argument <paramref name="value" /> with a set of
+          replacement arguments.
+        </summary>
+        <returns>
+          <see langword="true" /> if this 
+          <see cref="T:Mono.Options.ArgumentSource" /> will replace 
+          <paramref name="value" /> with a set of replacement strings and
+          <paramref name="replacement" /> contains the replacement strings;
+          otherwise, <see langword="false" />.
+        </returns>
+        <remarks>
+          <para>
+            Before
+            <see cref="M:Mono.Options.OptionSet.Parse(System.Collections.Generic.IEnumerable{System.String})" />
+            attempts to parse an argument as an option (or option value), all
+            registered <see cref="T:Mono.Options.OptionSet.ArgumentSources" />
+            are consulted in registration order to see if 
+            <see cref="T:Mono.Options.ArgumentSource" /> "supports" the
+            argument via 
+            <see cref="M:Mono.Options.ArgumentSource.GetArguments(System.Int32, System.Collections.Generic.IEnumerable{System.String}@)" />.
+            The first <c>ArgumentSource</c> to return <see langword="true" />
+            from <c>GetArguments()</c> may provide the replacement tokens, and
+            no later <c>ArgumentSource</c>es are consulted.
+          </para>
+        </remarks>
+        <altmember cref="M:Mono.Options.OptionSet.Parse(System.Collections.Generic.IEnumerable{System.String})" />
+      </Docs>
+    </Member>
+    <Member MemberName="GetArgumentsFromFile">
+      <MemberSignature Language="C#" Value="public static System.Collections.Generic.IEnumerable<string> GetArgumentsFromFile (string file);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig class System.Collections.Generic.IEnumerable`1<string> GetArgumentsFromFile(string file) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.Collections.Generic.IEnumerable<System.String></ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="file" Type="System.String" />
+      </Parameters>
+      <Docs>
+        <param name="file">
+          A <see cref="T:System.String" /> containing the file to extract
+          arguments from.
+        </param>
+        <summary>
+          Extract arguments from the specified filename.
+        </summary>
+        <returns>
+          A <see cref="T:System.Collections.Generic.IEnumerable{System.String}" />
+          which will provide arguments extracted from <paramref name="file" />.
+        </returns>
+        <remarks>
+        </remarks>
+        <exception cref="T:System.IO.IOException">
+          <paramref name="file" /> could not be read.
+        </exception>
+        <altmember cref="M:Mono.Options.ArgumentSource.GetArguments(System.IO.TextReader)" />
+      </Docs>
+    </Member>
+    <Member MemberName="GetNames">
+      <MemberSignature Language="C#" Value="public abstract string[] GetNames ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance string[] GetNames() cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.String[]</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>
+          The names to provide for the argument source within 
+          <see cref="M:Mono.Options.OptionSet.WriteOptionDescriptions(System.IO.TextWriter)" />.
+        </summary>
+        <returns>
+          A <see cref="T:System.String" /> array containing
+          the names to provide for the argument source within 
+          <see cref="M:Mono.Options.OptionSet.WriteOptionDescriptions(System.IO.TextWriter)" />.
+        </returns>
+        <remarks>
+        </remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
diff --git a/mcs/class/Mono.Options/Documentation/en/Mono.Options/Option.xml b/mcs/class/Mono.Options/Documentation/en/Mono.Options/Option.xml
index 859bb4b..f3e7e54 100644
--- a/mcs/class/Mono.Options/Documentation/en/Mono.Options/Option.xml
+++ b/mcs/class/Mono.Options/Documentation/en/Mono.Options/Option.xml
@@ -1,9 +1,11 @@
 <Type Name="Option" FullName="Mono.Options.Option">
   <TypeSignature Language="C#" Value="public abstract class Option" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi abstract beforefieldinit Option extends System.Object" />
   <AssemblyInfo>
     <AssemblyName>Mono.Options</AssemblyName>
     <AssemblyVersion>0.2.0.0</AssemblyVersion>
     <AssemblyVersion>0.2.1.0</AssemblyVersion>
+    <AssemblyVersion>0.2.2.0</AssemblyVersion>
   </AssemblyInfo>
   <ThreadingSafetyStatement>
     All members of this type are safe for multithreaded operations.
@@ -86,10 +88,12 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="protected Option (string prototype, string description);" />
+      <MemberSignature Language="ILAsm" Value=".method familyhidebysig specialname rtspecialname instance void .ctor(string prototype, string description) cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <Parameters>
         <Parameter Name="prototype" Type="System.String" />
@@ -154,10 +158,12 @@
     </Member>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="protected Option (string prototype, string description, int maxValueCount);" />
+      <MemberSignature Language="ILAsm" Value=".method familyhidebysig specialname rtspecialname instance void .ctor(string prototype, string description, int32 maxValueCount) cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <Parameters>
         <Parameter Name="prototype" Type="System.String" />
@@ -348,10 +354,12 @@
     </Member>
     <Member MemberName="Description">
       <MemberSignature Language="C#" Value="public string Description { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance string Description" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>System.String</ReturnType>
@@ -379,10 +387,12 @@
     </Member>
     <Member MemberName="GetNames">
       <MemberSignature Language="C#" Value="public string[] GetNames ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance string[] GetNames() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>System.String[]</ReturnType>
@@ -407,10 +417,12 @@
     </Member>
     <Member MemberName="GetValueSeparators">
       <MemberSignature Language="C#" Value="public string[] GetValueSeparators ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance string[] GetValueSeparators() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>System.String[]</ReturnType>
@@ -456,10 +468,12 @@
     </Member>
     <Member MemberName="Invoke">
       <MemberSignature Language="C#" Value="public void Invoke (Mono.Options.OptionContext c);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Invoke(class Mono.Options.OptionContext c) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>System.Void</ReturnType>
@@ -507,10 +521,12 @@
     </Member>
     <Member MemberName="MaxValueCount">
       <MemberSignature Language="C#" Value="public int MaxValueCount { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance int32 MaxValueCount" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>System.Int32</ReturnType>
@@ -544,10 +560,12 @@
     </Member>
     <Member MemberName="OnParseComplete">
       <MemberSignature Language="C#" Value="protected abstract void OnParseComplete (Mono.Options.OptionContext c);" />
+      <MemberSignature Language="ILAsm" Value=".method familyhidebysig newslot virtual instance void OnParseComplete(class Mono.Options.OptionContext c) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>System.Void</ReturnType>
@@ -587,7 +605,7 @@
           <code lang="C#" src="examples/subclass.cs">// Case-Insensitive and Concatenating OptionSet
 using System;
 using System.Collections.Generic;
-using Mono.Options;
+using NDesk.Options;
 
 class DemoOptionSet : OptionSet {
 	protected override void InsertItem (int index, Option item)
@@ -730,10 +748,12 @@ class Demo {
     </Member>
     <Member MemberName="OptionValueType">
       <MemberSignature Language="C#" Value="public Mono.Options.OptionValueType OptionValueType { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance valuetype Mono.Options.OptionValueType OptionValueType" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>Mono.Options.OptionValueType</ReturnType>
@@ -758,14 +778,19 @@ class Demo {
     </Member>
     <Member MemberName="Parse<T>">
       <MemberSignature Language="C#" Value="protected static T Parse<T> (string value, Mono.Options.OptionContext c);" />
+      <MemberSignature Language="ILAsm" Value=".method familystatic hidebysig !!T Parse<T>(string value, class Mono.Options.OptionContext c) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>T</ReturnType>
       </ReturnValue>
+      <TypeParameters>
+        <TypeParameter Name="T" />
+      </TypeParameters>
       <Parameters>
         <Parameter Name="value" Type="System.String" />
         <Parameter Name="c" Type="Mono.Options.OptionContext" />
@@ -811,16 +836,15 @@ class Demo {
           <paramref name="value" />.
         </exception>
       </Docs>
-      <TypeParameters>
-        <TypeParameter Name="T" />
-      </TypeParameters>
     </Member>
     <Member MemberName="Prototype">
       <MemberSignature Language="C#" Value="public string Prototype { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance string Prototype" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>System.String</ReturnType>
@@ -850,10 +874,12 @@ class Demo {
     </Member>
     <Member MemberName="ToString">
       <MemberSignature Language="C#" Value="public override string ToString ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig virtual instance string ToString() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>System.String</ReturnType>
diff --git a/mcs/class/Mono.Options/Documentation/en/Mono.Options/OptionAction`2.xml b/mcs/class/Mono.Options/Documentation/en/Mono.Options/OptionAction`2.xml
index ab8ffdb..0fbd6ce 100644
--- a/mcs/class/Mono.Options/Documentation/en/Mono.Options/OptionAction`2.xml
+++ b/mcs/class/Mono.Options/Documentation/en/Mono.Options/OptionAction`2.xml
@@ -1,9 +1,11 @@
 <Type Name="OptionAction<TKey,TValue>" FullName="Mono.Options.OptionAction<TKey,TValue>">
   <TypeSignature Language="C#" Value="public delegate void OptionAction<TKey,TValue>(TKey key, TValue value);" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed OptionAction`2<TKey, TValue> extends System.MulticastDelegate" />
   <AssemblyInfo>
     <AssemblyName>Mono.Options</AssemblyName>
     <AssemblyVersion>0.2.0.0</AssemblyVersion>
     <AssemblyVersion>0.2.1.0</AssemblyVersion>
+    <AssemblyVersion>0.2.2.0</AssemblyVersion>
   </AssemblyInfo>
   <TypeParameters>
     <TypeParameter Name="TKey" />
diff --git a/mcs/class/Mono.Options/Documentation/en/Mono.Options/OptionContext.xml b/mcs/class/Mono.Options/Documentation/en/Mono.Options/OptionContext.xml
index d75832d..87abd3c 100644
--- a/mcs/class/Mono.Options/Documentation/en/Mono.Options/OptionContext.xml
+++ b/mcs/class/Mono.Options/Documentation/en/Mono.Options/OptionContext.xml
@@ -1,9 +1,11 @@
 <Type Name="OptionContext" FullName="Mono.Options.OptionContext">
   <TypeSignature Language="C#" Value="public class OptionContext" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit OptionContext extends System.Object" />
   <AssemblyInfo>
     <AssemblyName>Mono.Options</AssemblyName>
     <AssemblyVersion>0.2.0.0</AssemblyVersion>
     <AssemblyVersion>0.2.1.0</AssemblyVersion>
+    <AssemblyVersion>0.2.2.0</AssemblyVersion>
   </AssemblyInfo>
   <Base>
     <BaseTypeName>System.Object</BaseTypeName>
@@ -22,10 +24,12 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public OptionContext (Mono.Options.OptionSet set);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(class Mono.Options.OptionSet set) cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <Parameters>
         <Parameter Name="set" Type="Mono.Options.OptionSet" />
@@ -46,10 +50,12 @@
     </Member>
     <Member MemberName="Option">
       <MemberSignature Language="C#" Value="public Mono.Options.Option Option { set; get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Options.Option Option" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>Mono.Options.Option</ReturnType>
@@ -63,10 +69,12 @@
     </Member>
     <Member MemberName="OptionIndex">
       <MemberSignature Language="C#" Value="public int OptionIndex { set; get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance int32 OptionIndex" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>System.Int32</ReturnType>
@@ -88,10 +96,12 @@
     </Member>
     <Member MemberName="OptionName">
       <MemberSignature Language="C#" Value="public string OptionName { set; get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance string OptionName" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>System.String</ReturnType>
@@ -109,10 +119,12 @@
     </Member>
     <Member MemberName="OptionSet">
       <MemberSignature Language="C#" Value="public Mono.Options.OptionSet OptionSet { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Options.OptionSet OptionSet" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>Mono.Options.OptionSet</ReturnType>
@@ -137,10 +149,12 @@
     </Member>
     <Member MemberName="OptionValues">
       <MemberSignature Language="C#" Value="public Mono.Options.OptionValueCollection OptionValues { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class Mono.Options.OptionValueCollection OptionValues" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>Mono.Options.OptionValueCollection</ReturnType>
diff --git a/mcs/class/Mono.Options/Documentation/en/Mono.Options/OptionException.xml b/mcs/class/Mono.Options/Documentation/en/Mono.Options/OptionException.xml
index 3b65e47..5ebfb68 100644
--- a/mcs/class/Mono.Options/Documentation/en/Mono.Options/OptionException.xml
+++ b/mcs/class/Mono.Options/Documentation/en/Mono.Options/OptionException.xml
@@ -1,9 +1,11 @@
 <Type Name="OptionException" FullName="Mono.Options.OptionException">
   <TypeSignature Language="C#" Value="public class OptionException : Exception" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi serializable beforefieldinit OptionException extends System.Exception" />
   <AssemblyInfo>
     <AssemblyName>Mono.Options</AssemblyName>
     <AssemblyVersion>0.2.0.0</AssemblyVersion>
     <AssemblyVersion>0.2.1.0</AssemblyVersion>
+    <AssemblyVersion>0.2.2.0</AssemblyVersion>
   </AssemblyInfo>
   <Base>
     <BaseTypeName>System.Exception</BaseTypeName>
@@ -44,9 +46,11 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public OptionException ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <Parameters />
       <Docs>
@@ -56,10 +60,12 @@
     </Member>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="protected OptionException (System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context);" />
+      <MemberSignature Language="ILAsm" Value=".method familyhidebysig specialname rtspecialname instance void .ctor(class System.Runtime.Serialization.SerializationInfo info, valuetype System.Runtime.Serialization.StreamingContext context) cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <Parameters>
         <Parameter Name="info" Type="System.Runtime.Serialization.SerializationInfo" />
@@ -90,10 +96,12 @@
     </Member>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public OptionException (string message, string optionName);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(string message, string optionName) cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <Parameters>
         <Parameter Name="message" Type="System.String" />
@@ -122,10 +130,12 @@
     </Member>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public OptionException (string message, string optionName, Exception innerException);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(string message, string optionName, class System.Exception innerException) cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <Parameters>
         <Parameter Name="message" Type="System.String" />
@@ -163,10 +173,12 @@
     </Member>
     <Member MemberName="GetObjectData">
       <MemberSignature Language="C#" Value="public override void GetObjectData (System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig virtual instance void GetObjectData(class System.Runtime.Serialization.SerializationInfo info, valuetype System.Runtime.Serialization.StreamingContext context) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>System.Void</ReturnType>
@@ -201,10 +213,12 @@
     </Member>
     <Member MemberName="OptionName">
       <MemberSignature Language="C#" Value="public string OptionName { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance string OptionName" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>System.String</ReturnType>
diff --git a/mcs/class/Mono.Options/Documentation/en/Mono.Options/OptionSet.xml b/mcs/class/Mono.Options/Documentation/en/Mono.Options/OptionSet.xml
index 0be30b5..6f0707a 100644
--- a/mcs/class/Mono.Options/Documentation/en/Mono.Options/OptionSet.xml
+++ b/mcs/class/Mono.Options/Documentation/en/Mono.Options/OptionSet.xml
@@ -1,9 +1,11 @@
 <Type Name="OptionSet" FullName="Mono.Options.OptionSet">
   <TypeSignature Language="C#" Value="public class OptionSet : System.Collections.ObjectModel.KeyedCollection<string,Mono.Options.Option>" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit OptionSet extends System.Collections.ObjectModel.KeyedCollection`2<string, class Mono.Options.Option>" />
   <AssemblyInfo>
     <AssemblyName>Mono.Options</AssemblyName>
     <AssemblyVersion>0.2.0.0</AssemblyVersion>
     <AssemblyVersion>0.2.1.0</AssemblyVersion>
+    <AssemblyVersion>0.2.2.0</AssemblyVersion>
   </AssemblyInfo>
   <ThreadingSafetyStatement>
     All public static members of this type are safe for multithreaded
@@ -18,8 +20,8 @@
   <Base>
     <BaseTypeName>System.Collections.ObjectModel.KeyedCollection<System.String,Mono.Options.Option></BaseTypeName>
     <BaseTypeArguments>
-      <BaseTypeArgument TypeParamName="TKey">System.String</BaseTypeArgument>
-      <BaseTypeArgument TypeParamName="TItem">Mono.Options.Option</BaseTypeArgument>
+      <BaseTypeArgument TypeParamName="!0">System.String</BaseTypeArgument>
+      <BaseTypeArgument TypeParamName="!1">Mono.Options.Option</BaseTypeArgument>
     </BaseTypeArguments>
   </Base>
   <Interfaces />
@@ -49,6 +51,10 @@
         <see cref="T:Mono.Options.Option" />.
       </para>
       <para>
+        Response files, as used by <c>mcs</c> and other compiler tools, may be
+        supported by using <see cref="T:Mono.Options.ResponseFileSource" />.
+      </para>
+      <para>
         Three conditions must be met for a sequence of arguments to be
         considered as a match for an <see cref="T:Mono.Options.Option" />:
       </para>
@@ -290,7 +296,7 @@
       </para>
       <code lang="C#" src="examples/greet.cs">using System;
 using System.Collections.Generic;
-using Mono.Options;
+using NDesk.Options;
 
 class Test {
 	static int verbosity;
@@ -437,7 +443,7 @@ Try `greet --help' for more information.
       <code lang="C#" src="examples/bundling.cs">using System;
 using System.Linq;
 using System.Collections.Generic;
-using Mono.Options;
+using NDesk.Options;
 
 class Test {
 	public static void Main (string[] args)
@@ -630,7 +636,7 @@ Options:
       <code lang="C#" src="examples/subclass.cs">// Case-Insensitive and Concatenating OptionSet
 using System;
 using System.Collections.Generic;
-using Mono.Options;
+using NDesk.Options;
 
 class DemoOptionSet : OptionSet {
 	protected override void InsertItem (int index, Option item)
@@ -813,14 +819,17 @@ Key: a\b\c=d\e\f
         </item>
       </list>
     </example>
+    <altmember cref="T:Mono.Options.ResponseFileSource" />
   </Docs>
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public OptionSet ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <Parameters />
       <Docs>
@@ -841,10 +850,12 @@ Key: a\b\c=d\e\f
     </Member>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public OptionSet (Converter<string,string> localizer);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(class System.Converter`2<string, string> localizer) cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <Parameters>
         <Parameter Name="localizer" Type="System.Converter<System.String,System.String>" />
@@ -890,14 +901,14 @@ Key: a\b\c=d\e\f
             See the following example, which demonstrates how different
             localizers alter the program output.
           </para>
-          <code lang="C#" src="examples/localization.cs">// Localization with Mono.Options.OptionSet.
+          <code lang="C#" src="examples/localization.cs">// Localization with NDesk.Options.OptionSet.
 //
 // Compile as:
-//   gmcs -r:Mono.Posix.dll -r:Mono.Options.dll code-localization.cs
+//   gmcs -r:Mono.Posix.dll -r:NDesk.Options.dll code-localization.cs
 using System;
 using System.IO;
 using Mono.Unix;
-using Mono.Options;
+using NDesk.Options;
 
 class LocalizationDemo {
 	public static void Main (string[] args)
@@ -948,7 +959,7 @@ class LocalizationDemo {
 		if (help)
 			p.WriteOptionDescriptions (Console.Out);
 		if (version)
-			Console.WriteLine ("Mono.Options Localizer Demo 1.0");
+			Console.WriteLine ("NDesk.Options Localizer Demo 1.0");
 		if (verbose > 0)
 			Console.WriteLine ("Message level: {0}", verbose);
 	}
@@ -961,21 +972,21 @@ class LocalizationDemo {
   -v, --verbose              increase message verbosity.
   -n=VALUE                   must be an int
   -V, --version              output version information and exit.
-Mono.Options Localizer Demo 1.0
+NDesk.Options Localizer Demo 1.0
 
 $ LANGUAGE=es mono localization.exe --with-gettext --help --version
   -h, -?, --help             A mostrar este mensaje y salir.
   -v, --verbose              Aumento mensaje verbosidad.
   -n=VALUE                   Debe ser un int
   -V, --version              Salida de información de versión y sale.
-Mono.Options Localizer Demo 1.0
+NDesk.Options Localizer Demo 1.0
 
 $ mono localization.exe --with-hello --help --version
   -h, -?, --help             hello:show this message and exit.
   -v, --verbose              hello:increase message verbosity.
   -nhello:=VALUE             hello:must be an int
   -V, --version              hello:output version information and exit.
-Mono.Options Localizer Demo 1.0
+NDesk.Options Localizer Demo 1.0
 
 $ mono localization.exe -n not-an-int
 localization: Could not convert string `not-an-int' to type Int32 for option `-n'.
@@ -1010,11 +1021,47 @@ localization: hello:Could not convert string `not-an-int' to type Int32 for opti
       </Docs>
     </Member>
     <Member MemberName="Add">
+      <MemberSignature Language="C#" Value="public Mono.Options.OptionSet Add (Mono.Options.ArgumentSource source);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Options.OptionSet Add(class Mono.Options.ArgumentSource source) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>Mono.Options.OptionSet</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="source" Type="Mono.Options.ArgumentSource" />
+      </Parameters>
+      <Docs>
+        <param name="source">
+          A <see cref="T:Mono.Options.ArgumentSource" /> to register for
+          argument processing.
+        </param>
+        <summary>
+          Registers <paramref name="source" /> so that it may be consulted
+          during argument processing within
+          <see cref="M:Mono.Options.OptionSet.Parse(System.Collections.Generic.IEnumerable{System.String})" />.
+        </summary>
+        <returns>
+          The current <see cref="T:Mono.Options.OptionSet" /> instance.
+          This is to permit method chaining.
+        </returns>
+        <remarks>
+        </remarks>
+        <exception cref="T:System.ArgumentNullException">
+          <paramref name="option" /> is <see langword="null" />.
+        </exception>
+      </Docs>
+    </Member>
+    <Member MemberName="Add">
       <MemberSignature Language="C#" Value="public Mono.Options.OptionSet Add (Mono.Options.Option option);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Options.OptionSet Add(class Mono.Options.Option option) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>Mono.Options.OptionSet</ReturnType>
@@ -1054,10 +1101,12 @@ localization: hello:Could not convert string `not-an-int' to type Int32 for opti
     </Member>
     <Member MemberName="Add">
       <MemberSignature Language="C#" Value="public Mono.Options.OptionSet Add (string prototype, Mono.Options.OptionAction<string,string> action);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Options.OptionSet Add(string prototype, class Mono.Options.OptionAction`2<string, string> action) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>Mono.Options.OptionSet</ReturnType>
@@ -1113,10 +1162,12 @@ localization: hello:Could not convert string `not-an-int' to type Int32 for opti
     </Member>
     <Member MemberName="Add">
       <MemberSignature Language="C#" Value="public Mono.Options.OptionSet Add (string prototype, Action<string> action);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Options.OptionSet Add(string prototype, class System.Action`1<string> action) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>Mono.Options.OptionSet</ReturnType>
@@ -1172,10 +1223,12 @@ localization: hello:Could not convert string `not-an-int' to type Int32 for opti
     </Member>
     <Member MemberName="Add">
       <MemberSignature Language="C#" Value="public Mono.Options.OptionSet Add (string prototype, string description, Mono.Options.OptionAction<string,string> action);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Options.OptionSet Add(string prototype, string description, class Mono.Options.OptionAction`2<string, string> action) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>Mono.Options.OptionSet</ReturnType>
@@ -1241,10 +1294,12 @@ localization: hello:Could not convert string `not-an-int' to type Int32 for opti
     </Member>
     <Member MemberName="Add">
       <MemberSignature Language="C#" Value="public Mono.Options.OptionSet Add (string prototype, string description, Action<string> action);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Options.OptionSet Add(string prototype, string description, class System.Action`1<string> action) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>Mono.Options.OptionSet</ReturnType>
@@ -1300,14 +1355,19 @@ localization: hello:Could not convert string `not-an-int' to type Int32 for opti
     </Member>
     <Member MemberName="Add<T>">
       <MemberSignature Language="C#" Value="public Mono.Options.OptionSet Add<T> (string prototype, Action<T> action);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Options.OptionSet Add<T>(string prototype, class System.Action`1<!!T> action) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>Mono.Options.OptionSet</ReturnType>
       </ReturnValue>
+      <TypeParameters>
+        <TypeParameter Name="T" />
+      </TypeParameters>
       <Parameters>
         <Parameter Name="prototype" Type="System.String" />
         <Parameter Name="action" Type="System.Action<T>" />
@@ -1353,20 +1413,22 @@ localization: hello:Could not convert string `not-an-int' to type Int32 for opti
           a previously registered <see cref="T:Mono.Options.Option" />.
         </exception>
       </Docs>
-      <TypeParameters>
-        <TypeParameter Name="T" />
-      </TypeParameters>
     </Member>
     <Member MemberName="Add<T>">
       <MemberSignature Language="C#" Value="public Mono.Options.OptionSet Add<T> (string prototype, string description, Action<T> action);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Options.OptionSet Add<T>(string prototype, string description, class System.Action`1<!!T> action) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>Mono.Options.OptionSet</ReturnType>
       </ReturnValue>
+      <TypeParameters>
+        <TypeParameter Name="T" />
+      </TypeParameters>
       <Parameters>
         <Parameter Name="prototype" Type="System.String" />
         <Parameter Name="description" Type="System.String" />
@@ -1446,20 +1508,23 @@ localization: hello:Could not convert string `not-an-int' to type Int32 for opti
             <paramref name="action" /> is <see langword="null" /></para>
         </exception>
       </Docs>
-      <TypeParameters>
-        <TypeParameter Name="T" />
-      </TypeParameters>
     </Member>
     <Member MemberName="Add<TKey,TValue>">
       <MemberSignature Language="C#" Value="public Mono.Options.OptionSet Add<TKey,TValue> (string prototype, Mono.Options.OptionAction<TKey,TValue> action);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Options.OptionSet Add<TKey, TValue>(string prototype, class Mono.Options.OptionAction`2<!!TKey, !!TValue> action) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>Mono.Options.OptionSet</ReturnType>
       </ReturnValue>
+      <TypeParameters>
+        <TypeParameter Name="TKey" />
+        <TypeParameter Name="TValue" />
+      </TypeParameters>
       <Parameters>
         <Parameter Name="prototype" Type="System.String" />
         <Parameter Name="action" Type="Mono.Options.OptionAction<TKey,TValue>" />
@@ -1516,21 +1581,23 @@ localization: hello:Could not convert string `not-an-int' to type Int32 for opti
             <paramref name="action" /> is <see langword="null" /></para>
         </exception>
       </Docs>
-      <TypeParameters>
-        <TypeParameter Name="TKey" />
-        <TypeParameter Name="TValue" />
-      </TypeParameters>
     </Member>
     <Member MemberName="Add<TKey,TValue>">
       <MemberSignature Language="C#" Value="public Mono.Options.OptionSet Add<TKey,TValue> (string prototype, string description, Mono.Options.OptionAction<TKey,TValue> action);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.Options.OptionSet Add<TKey, TValue>(string prototype, string description, class Mono.Options.OptionAction`2<!!TKey, !!TValue> action) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>Mono.Options.OptionSet</ReturnType>
       </ReturnValue>
+      <TypeParameters>
+        <TypeParameter Name="TKey" />
+        <TypeParameter Name="TValue" />
+      </TypeParameters>
       <Parameters>
         <Parameter Name="prototype" Type="System.String" />
         <Parameter Name="description" Type="System.String" />
@@ -1600,17 +1667,42 @@ localization: hello:Could not convert string `not-an-int' to type Int32 for opti
             <paramref name="action" /> is <see langword="null" /></para>
         </exception>
       </Docs>
-      <TypeParameters>
-        <TypeParameter Name="TKey" />
-        <TypeParameter Name="TValue" />
-      </TypeParameters>
+    </Member>
+    <Member MemberName="ArgumentSources">
+      <MemberSignature Language="C#" Value="public System.Collections.ObjectModel.ReadOnlyCollection<Mono.Options.ArgumentSource> ArgumentSources { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class System.Collections.ObjectModel.ReadOnlyCollection`1<class Mono.Options.ArgumentSource> ArgumentSources" />
+      <MemberType>Property</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.Collections.ObjectModel.ReadOnlyCollection<Mono.Options.ArgumentSource></ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>
+          A collection of all
+          <see cref="T:Mono.Options.ArgumentSource" />s which will be consulted during 
+          <see cref="M:Mono.Options.OptionSet.Parse(System.Collections.Generic.IEnumerable{System.String})" />
+          processing.
+        </summary>
+        <value>
+          A <see cref="T:System.Collections.ObjectModel.ReadOnlyCollection{Mono.Options.ArgumentSource}" />
+          containing all <see cref="T:Mono.Options.ArgumentSource" />s which
+          have been 
+          <see cref="M:Mono.Options.OptionSet.Add(Mono.Options.ArgumentSource)" />ed.
+        </value>
+        <remarks>
+        </remarks>
+      </Docs>
     </Member>
     <Member MemberName="CreateOptionContext">
       <MemberSignature Language="C#" Value="protected virtual Mono.Options.OptionContext CreateOptionContext ();" />
+      <MemberSignature Language="ILAsm" Value=".method familyhidebysig newslot virtual instance class Mono.Options.OptionContext CreateOptionContext() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>Mono.Options.OptionContext</ReturnType>
@@ -1645,9 +1737,11 @@ localization: hello:Could not convert string `not-an-int' to type Int32 for opti
     </Member>
     <Member MemberName="GetKeyForItem">
       <MemberSignature Language="C#" Value="protected override string GetKeyForItem (Mono.Options.Option item);" />
+      <MemberSignature Language="ILAsm" Value=".method familyhidebysig virtual instance string GetKeyForItem(class Mono.Options.Option item) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>System.String</ReturnType>
@@ -1694,22 +1788,24 @@ localization: hello:Could not convert string `not-an-int' to type Int32 for opti
     </Member>
     <Member MemberName="GetOptionForName">
       <MemberSignature Language="C#" Value="protected Mono.Options.Option GetOptionForName (string option);" />
+      <MemberSignature Language="ILAsm" Value=".method familyhidebysig instance class Mono.Options.Option GetOptionForName(string option) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
+      <Attributes>
+        <Attribute>
+          <AttributeName>System.Obsolete("Use KeyedCollection.this[string]")</AttributeName>
+        </Attribute>
+      </Attributes>
       <ReturnValue>
         <ReturnType>Mono.Options.Option</ReturnType>
       </ReturnValue>
       <Parameters>
         <Parameter Name="option" Type="System.String" />
       </Parameters>
-      <Attributes>
-        <Attribute>
-          <AttributeName>System.Obsolete("Use KeyedCollection.this[string]")</AttributeName>
-        </Attribute>
-      </Attributes>
       <Docs>
         <param name="option">
           A <see cref="T:System.String" /> containing the option name to
@@ -1740,10 +1836,12 @@ localization: hello:Could not convert string `not-an-int' to type Int32 for opti
     </Member>
     <Member MemberName="GetOptionParts">
       <MemberSignature Language="C#" Value="protected bool GetOptionParts (string argument, out string flag, out string name, out string sep, out string value);" />
+      <MemberSignature Language="ILAsm" Value=".method familyhidebysig instance bool GetOptionParts(string argument, string flag, string name, string sep, string value) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>System.Boolean</ReturnType>
@@ -1832,10 +1930,12 @@ localization: hello:Could not convert string `not-an-int' to type Int32 for opti
     </Member>
     <Member MemberName="InsertItem">
       <MemberSignature Language="C#" Value="protected override void InsertItem (int index, Mono.Options.Option item);" />
+      <MemberSignature Language="ILAsm" Value=".method familyhidebysig virtual instance void InsertItem(int32 index, class Mono.Options.Option item) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>System.Void</ReturnType>
@@ -1862,10 +1962,12 @@ localization: hello:Could not convert string `not-an-int' to type Int32 for opti
     </Member>
     <Member MemberName="MessageLocalizer">
       <MemberSignature Language="C#" Value="public Converter<string,string> MessageLocalizer { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class System.Converter`2<string, string> MessageLocalizer" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>System.Converter<System.String,System.String></ReturnType>
@@ -1891,10 +1993,12 @@ localization: hello:Could not convert string `not-an-int' to type Int32 for opti
     </Member>
     <Member MemberName="Parse">
       <MemberSignature Language="C#" Value="public System.Collections.Generic.List<string> Parse (System.Collections.Generic.IEnumerable<string> arguments);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class System.Collections.Generic.List`1<string> Parse(class System.Collections.Generic.IEnumerable`1<string> arguments) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>System.Collections.Generic.List<System.String></ReturnType>
@@ -1918,6 +2022,16 @@ localization: hello:Could not convert string `not-an-int' to type Int32 for opti
         </returns>
         <remarks>
           <para>
+            <c>Parse</c> looks at each argument from <paramref name="arguments" /> in order, passing each argument to each
+            <see cref="T:Mono.Options.ArgumentSource" /> within
+            <see cref="P:Mono.Options.OptionSet.ArgumentSources" /> using
+            <see cref="M:Mono.Options.ArgumentSource.GetArguments(System.Int32, System.Collections.Generic.IEnumerable{System.String}@)" />
+            until a source returns <see langword="true" /> (and the
+            replacement sequence is used) or no <c>ArgumentSource</c> supports
+            the argument.  <c>Parse</c> then attempts to process argument as
+            an option.
+          </para>
+          <para>
             An argument is unhandled if:
           </para>
           <list type="bullet">
@@ -1978,7 +2092,7 @@ localization: hello:Could not convert string `not-an-int' to type Int32 for opti
           </para>
           <code lang="C#" src="examples/greet.cs">using System;
 using System.Collections.Generic;
-using Mono.Options;
+using NDesk.Options;
 
 class Test {
 	static int verbosity;
@@ -2059,10 +2173,12 @@ class Test {
     </Member>
     <Member MemberName="Parse">
       <MemberSignature Language="C#" Value="protected virtual bool Parse (string argument, Mono.Options.OptionContext c);" />
+      <MemberSignature Language="ILAsm" Value=".method familyhidebysig newslot virtual instance bool Parse(string argument, class Mono.Options.OptionContext c) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>System.Boolean</ReturnType>
@@ -2154,10 +2270,12 @@ class Test {
     </Member>
     <Member MemberName="RemoveItem">
       <MemberSignature Language="C#" Value="protected override void RemoveItem (int index);" />
+      <MemberSignature Language="ILAsm" Value=".method familyhidebysig virtual instance void RemoveItem(int32 index) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>System.Void</ReturnType>
@@ -2180,10 +2298,12 @@ class Test {
     </Member>
     <Member MemberName="SetItem">
       <MemberSignature Language="C#" Value="protected override void SetItem (int index, Mono.Options.Option item);" />
+      <MemberSignature Language="ILAsm" Value=".method familyhidebysig virtual instance void SetItem(int32 index, class Mono.Options.Option item) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>System.Void</ReturnType>
@@ -2212,10 +2332,12 @@ class Test {
     </Member>
     <Member MemberName="WriteOptionDescriptions">
       <MemberSignature Language="C#" Value="public void WriteOptionDescriptions (System.IO.TextWriter o);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void WriteOptionDescriptions(class System.IO.TextWriter o) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>System.Void</ReturnType>
@@ -2261,6 +2383,12 @@ class Test {
             more than one value, the leading number is used to specify which
             value the string is for.
           </para>
+          <para>
+            Once all <see cref="T:Mono.Options.Option" />s have been written,
+            all <see cref="T:Mono.Options.ArgumentSource" />s are printed out
+            using <see cref="M:Mono.Options.ArgumentSource.GetNames" /> and
+            <see cref="P:Mono.Options.ArgumentSource.Description" />.
+          </para>
         </remarks>
         <example>
           <para>
@@ -2271,7 +2399,7 @@ class Test {
           </para>
           <code lang="C#" src="examples/greet.cs">using System;
 using System.Collections.Generic;
-using Mono.Options;
+using NDesk.Options;
 
 class Test {
 	static int verbosity;
diff --git a/mcs/class/Mono.Options/Documentation/en/Mono.Options/OptionValueCollection.xml b/mcs/class/Mono.Options/Documentation/en/Mono.Options/OptionValueCollection.xml
index b4dcf59..66caf4e 100644
--- a/mcs/class/Mono.Options/Documentation/en/Mono.Options/OptionValueCollection.xml
+++ b/mcs/class/Mono.Options/Documentation/en/Mono.Options/OptionValueCollection.xml
@@ -1,15 +1,23 @@
 <Type Name="OptionValueCollection" FullName="Mono.Options.OptionValueCollection">
-  <TypeSignature Language="C#" Value="public class OptionValueCollection : System.Collections.Generic.IList<string>, System.Collections.IList" />
+  <TypeSignature Language="C#" Value="public class OptionValueCollection : System.Collections.Generic.ICollection<string>, System.Collections.Generic.IEnumerable<string>, System.Collections.Generic.IList<string>, System.Collections.IList" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit OptionValueCollection extends System.Object implements class System.Collections.Generic.ICollection`1<string>, class System.Collections.Generic.IEnumerable`1<string>, class System.Collections.Generic.IList`1<string>, class System.Collections.ICollection, class System.Collections.IEnumerable, class System.Collections.IList" />
   <AssemblyInfo>
     <AssemblyName>Mono.Options</AssemblyName>
     <AssemblyVersion>0.2.0.0</AssemblyVersion>
     <AssemblyVersion>0.2.1.0</AssemblyVersion>
+    <AssemblyVersion>0.2.2.0</AssemblyVersion>
   </AssemblyInfo>
   <Base>
     <BaseTypeName>System.Object</BaseTypeName>
   </Base>
   <Interfaces>
     <Interface>
+      <InterfaceName>System.Collections.Generic.ICollection<System.String></InterfaceName>
+    </Interface>
+    <Interface>
+      <InterfaceName>System.Collections.Generic.IEnumerable<System.String></InterfaceName>
+    </Interface>
+    <Interface>
       <InterfaceName>System.Collections.Generic.IList<System.String></InterfaceName>
     </Interface>
     <Interface>
@@ -50,10 +58,12 @@
   <Members>
     <Member MemberName="Add">
       <MemberSignature Language="C#" Value="public void Add (string item);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void Add(string item) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>System.Void</ReturnType>
@@ -69,10 +79,12 @@
     </Member>
     <Member MemberName="Clear">
       <MemberSignature Language="C#" Value="public void Clear ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void Clear() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>System.Void</ReturnType>
@@ -85,10 +97,12 @@
     </Member>
     <Member MemberName="Contains">
       <MemberSignature Language="C#" Value="public bool Contains (string item);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance bool Contains(string item) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>System.Boolean</ReturnType>
@@ -105,10 +119,12 @@
     </Member>
     <Member MemberName="CopyTo">
       <MemberSignature Language="C#" Value="public void CopyTo (string[] array, int arrayIndex);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void CopyTo(string[] array, int32 arrayIndex) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>System.Void</ReturnType>
@@ -126,10 +142,12 @@
     </Member>
     <Member MemberName="Count">
       <MemberSignature Language="C#" Value="public int Count { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance int32 Count" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>System.Int32</ReturnType>
@@ -142,10 +160,12 @@
     </Member>
     <Member MemberName="GetEnumerator">
       <MemberSignature Language="C#" Value="public System.Collections.Generic.IEnumerator<string> GetEnumerator ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class System.Collections.Generic.IEnumerator`1<string> GetEnumerator() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>System.Collections.Generic.IEnumerator<System.String></ReturnType>
@@ -159,10 +179,12 @@
     </Member>
     <Member MemberName="IndexOf">
       <MemberSignature Language="C#" Value="public int IndexOf (string item);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance int32 IndexOf(string item) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>System.Int32</ReturnType>
@@ -179,10 +201,12 @@
     </Member>
     <Member MemberName="Insert">
       <MemberSignature Language="C#" Value="public void Insert (int index, string item);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void Insert(int32 index, string item) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>System.Void</ReturnType>
@@ -200,10 +224,12 @@
     </Member>
     <Member MemberName="IsReadOnly">
       <MemberSignature Language="C#" Value="public bool IsReadOnly { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool IsReadOnly" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>System.Boolean</ReturnType>
@@ -216,10 +242,12 @@
     </Member>
     <Member MemberName="Item">
       <MemberSignature Language="C#" Value="public string this[int index] { set; get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance string Item(int32)" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>System.String</ReturnType>
@@ -236,10 +264,12 @@
     </Member>
     <Member MemberName="Remove">
       <MemberSignature Language="C#" Value="public bool Remove (string item);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance bool Remove(string item) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>System.Boolean</ReturnType>
@@ -256,10 +286,12 @@
     </Member>
     <Member MemberName="RemoveAt">
       <MemberSignature Language="C#" Value="public void RemoveAt (int index);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void RemoveAt(int32 index) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>System.Void</ReturnType>
@@ -275,10 +307,12 @@
     </Member>
     <Member MemberName="System.Collections.ICollection.CopyTo">
       <MemberSignature Language="C#" Value="void ICollection.CopyTo (Array array, int index);" />
+      <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance void System.Collections.ICollection.CopyTo(class System.Array array, int32 index) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>System.Void</ReturnType>
@@ -296,10 +330,12 @@
     </Member>
     <Member MemberName="System.Collections.ICollection.IsSynchronized">
       <MemberSignature Language="C#" Value="bool System.Collections.ICollection.IsSynchronized { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool System.Collections.ICollection.IsSynchronized" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>System.Boolean</ReturnType>
@@ -312,10 +348,12 @@
     </Member>
     <Member MemberName="System.Collections.ICollection.SyncRoot">
       <MemberSignature Language="C#" Value="object System.Collections.ICollection.SyncRoot { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance object System.Collections.ICollection.SyncRoot" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>System.Object</ReturnType>
@@ -328,10 +366,12 @@
     </Member>
     <Member MemberName="System.Collections.IEnumerable.GetEnumerator">
       <MemberSignature Language="C#" Value="System.Collections.IEnumerator IEnumerable.GetEnumerator ();" />
+      <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance class System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>System.Collections.IEnumerator</ReturnType>
@@ -345,10 +385,12 @@
     </Member>
     <Member MemberName="System.Collections.IList.Add">
       <MemberSignature Language="C#" Value="int IList.Add (object value);" />
+      <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance int32 System.Collections.IList.Add(object value) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>System.Int32</ReturnType>
@@ -365,10 +407,12 @@
     </Member>
     <Member MemberName="System.Collections.IList.Contains">
       <MemberSignature Language="C#" Value="bool IList.Contains (object value);" />
+      <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance bool System.Collections.IList.Contains(object value) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>System.Boolean</ReturnType>
@@ -385,10 +429,12 @@
     </Member>
     <Member MemberName="System.Collections.IList.IndexOf">
       <MemberSignature Language="C#" Value="int IList.IndexOf (object value);" />
+      <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance int32 System.Collections.IList.IndexOf(object value) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>System.Int32</ReturnType>
@@ -405,10 +451,12 @@
     </Member>
     <Member MemberName="System.Collections.IList.Insert">
       <MemberSignature Language="C#" Value="void IList.Insert (int index, object value);" />
+      <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance void System.Collections.IList.Insert(int32 index, object value) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>System.Void</ReturnType>
@@ -426,10 +474,12 @@
     </Member>
     <Member MemberName="System.Collections.IList.IsFixedSize">
       <MemberSignature Language="C#" Value="bool System.Collections.IList.IsFixedSize { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool System.Collections.IList.IsFixedSize" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>System.Boolean</ReturnType>
@@ -442,10 +492,12 @@
     </Member>
     <Member MemberName="System.Collections.IList.Item">
       <MemberSignature Language="C#" Value="object System.Collections.IList.Item[int index] { set; get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance object System.Collections.IList.Item(int32)" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>System.Object</ReturnType>
@@ -462,10 +514,12 @@
     </Member>
     <Member MemberName="System.Collections.IList.Remove">
       <MemberSignature Language="C#" Value="void IList.Remove (object value);" />
+      <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance void System.Collections.IList.Remove(object value) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>System.Void</ReturnType>
@@ -481,10 +535,12 @@
     </Member>
     <Member MemberName="System.Collections.IList.RemoveAt">
       <MemberSignature Language="C#" Value="void IList.RemoveAt (int index);" />
+      <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance void System.Collections.IList.RemoveAt(int32 index) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>System.Void</ReturnType>
@@ -500,10 +556,12 @@
     </Member>
     <Member MemberName="ToArray">
       <MemberSignature Language="C#" Value="public string[] ToArray ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance string[] ToArray() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>System.String[]</ReturnType>
@@ -517,10 +575,12 @@
     </Member>
     <Member MemberName="ToList">
       <MemberSignature Language="C#" Value="public System.Collections.Generic.List<string> ToList ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class System.Collections.Generic.List`1<string> ToList() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>System.Collections.Generic.List<System.String></ReturnType>
@@ -534,10 +594,12 @@
     </Member>
     <Member MemberName="ToString">
       <MemberSignature Language="C#" Value="public override string ToString ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig virtual instance string ToString() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>System.String</ReturnType>
diff --git a/mcs/class/Mono.Options/Documentation/en/Mono.Options/OptionValueType.xml b/mcs/class/Mono.Options/Documentation/en/Mono.Options/OptionValueType.xml
index 6f6f62c..aa035c5 100644
--- a/mcs/class/Mono.Options/Documentation/en/Mono.Options/OptionValueType.xml
+++ b/mcs/class/Mono.Options/Documentation/en/Mono.Options/OptionValueType.xml
@@ -1,9 +1,11 @@
 <Type Name="OptionValueType" FullName="Mono.Options.OptionValueType">
   <TypeSignature Language="C#" Value="public enum OptionValueType" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed OptionValueType extends System.Enum" />
   <AssemblyInfo>
     <AssemblyName>Mono.Options</AssemblyName>
     <AssemblyVersion>0.2.0.0</AssemblyVersion>
     <AssemblyVersion>0.2.1.0</AssemblyVersion>
+    <AssemblyVersion>0.2.2.0</AssemblyVersion>
   </AssemblyInfo>
   <Base>
     <BaseTypeName>System.Enum</BaseTypeName>
@@ -20,10 +22,12 @@
   <Members>
     <Member MemberName="None">
       <MemberSignature Language="C#" Value="None" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.Options.OptionValueType None = int32(0)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>Mono.Options.OptionValueType</ReturnType>
@@ -41,10 +45,12 @@
     </Member>
     <Member MemberName="Optional">
       <MemberSignature Language="C#" Value="Optional" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.Options.OptionValueType Optional = int32(1)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>Mono.Options.OptionValueType</ReturnType>
@@ -67,10 +73,12 @@
     </Member>
     <Member MemberName="Required">
       <MemberSignature Language="C#" Value="Required" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.Options.OptionValueType Required = int32(2)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.2.0.0</AssemblyVersion>
         <AssemblyVersion>0.2.1.0</AssemblyVersion>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
       </AssemblyInfo>
       <ReturnValue>
         <ReturnType>Mono.Options.OptionValueType</ReturnType>
diff --git a/mcs/class/Mono.Options/Documentation/en/Mono.Options/ResponseFileSource.xml b/mcs/class/Mono.Options/Documentation/en/Mono.Options/ResponseFileSource.xml
new file mode 100644
index 0000000..f97cb57
--- /dev/null
+++ b/mcs/class/Mono.Options/Documentation/en/Mono.Options/ResponseFileSource.xml
@@ -0,0 +1,134 @@
+<Type Name="ResponseFileSource" FullName="Mono.Options.ResponseFileSource">
+  <TypeSignature Language="C#" Value="public class ResponseFileSource : Mono.Options.ArgumentSource" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit ResponseFileSource extends Mono.Options.ArgumentSource" />
+  <AssemblyInfo>
+    <AssemblyName>Mono.Options</AssemblyName>
+    <AssemblyVersion>0.2.2.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>Mono.Options.ArgumentSource</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Docs>
+    <summary>
+      Inserts the contents of a file during argument processing.
+    </summary>
+    <remarks>
+      <para>
+        <c>ResponseFileSource</c> looks for arguments which start with
+        <c>@</c>, assumes that what follows the <c>@</c> is a valid filename,
+        and reads the contents of the filename as the replacement text.
+      </para>
+    </remarks>
+  </Docs>
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public ResponseFileSource ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+      <MemberType>Constructor</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
+      </AssemblyInfo>
+      <Parameters />
+      <Docs>
+        <summary>
+          Constructs and initializes a
+          <see cref="T:Mono.Options.ResponseFileSource" /> instance.
+        </summary>
+        <remarks>
+        </remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Description">
+      <MemberSignature Language="C#" Value="public override string Description { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance string Description" />
+      <MemberType>Property</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>
+          The description to provide for the argument source within
+          <see cref="M:Mono.Options.OptionSet.WriteOptionDescriptions(System.IO.TextWriter)" />.
+        </summary>
+        <value>
+          <c>"Read response file for more options."</c>.
+        </value>
+        <remarks>
+        </remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="GetArguments">
+      <MemberSignature Language="C#" Value="public override bool GetArguments (string value, out System.Collections.Generic.IEnumerable<string> replacement);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig virtual instance bool GetArguments(string value, class System.Collections.Generic.IEnumerable`1<string> replacement) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.Boolean</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="value" Type="System.String" />
+        <Parameter Name="replacement" Type="System.Collections.Generic.IEnumerable<System.String>&" RefType="out" />
+      </Parameters>
+      <Docs>
+        <param name="value">
+          A <see cref="T:System.String" /> containing the argument to replace
+          with additional arguments.
+        </param>
+        <param name="replacement">
+          A <see cref="T:System.Collections.Generic.IEnumerable{System.String}" />
+          which will refer to teh replacement arguments if this method returns
+          <see langword="true" />; otherwise, this value should be ignored by
+          callers.
+        </param>
+        <summary>
+          Replace the argument <paramref name="value" /> with the contents of
+          the specified file.
+        </summary>
+        <returns>
+          If <paramref name="value" /> starts with <c>@</c>, then
+          <paramref name="replacement" /> will contain the parsed contents of
+          the filename resulting from <c><paramref name="value" />.Substring(1)</c>
+          and <see langword="true" /> is returned; otherwise, 
+          <see langword="false" /> is returned.
+        </returns>
+        <remarks>
+        </remarks>
+        <exception cref="T:System.IO.IOException">
+          <paramref name="value" /> starts with <c>@</c> and 
+          <c><paramref name="value" />.Substring(1)</c> doees not exist.
+        </exception>
+        <altmember cref="M:Mono.Options.ArgumentSource.GetArgumentsFromFile(System.String)" />
+      </Docs>
+    </Member>
+    <Member MemberName="GetNames">
+      <MemberSignature Language="C#" Value="public override string[] GetNames ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig virtual instance string[] GetNames() cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.2.2.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.String[]</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>
+          The names to provide for the argument source within 
+          <see cref="M:Mono.Options.OptionSet.WriteOptionDescriptions(System.IO.TextWriter)" />.
+        </summary>
+        <returns>
+          A <see cref="T:System.String" /> array containing
+          an element with the value <c>"@file"</c>.
+        </returns>
+        <remarks>
+        </remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
diff --git a/mcs/class/Mono.Options/Documentation/en/index.xml b/mcs/class/Mono.Options/Documentation/en/index.xml
index f02c239..81b2053 100644
--- a/mcs/class/Mono.Options/Documentation/en/index.xml
+++ b/mcs/class/Mono.Options/Documentation/en/index.xml
@@ -3,28 +3,30 @@
   <Remarks>Program option parser.</Remarks>
   <Copyright>2008 Novell, Inc.</Copyright>
   <Assemblies>
-    <Assembly Name="Mono.Options" Version="0.2.1.0">
+    <Assembly Name="Mono.Options" Version="0.2.2.0">
+      <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 d2 d0 3a 8e 6b ea 7a 2e 74 e8 d1 af cc 93 e8 85 19 74 95 2b b4 80 a1 2c 91 34 47 4d 04 06 24 47 c3 7e 0e 68 c0 80 53 6f cf 3c 3f be 2f f9 c9 79 ce 99 84 75 e5 06 e8 ce 82 dd 5b 0f 35 0d c1 0e 93 bf 2e ee cf 87 4b 24 77 0c 50 81 db ea 74 47 fd da fa 27 7b 22 de 47 d6 ff ea 44 96 74 a4 f9 fc cf 84 d1 50 69 08 93 80 28 4d bd d3 5f 46 cd ff 12 a1 bd 78 e4 ef 00 65 d0 16 df ]</AssemblyPublicKey>
       <Attributes>
         <Attribute>
-          <AttributeName>System.Runtime.CompilerServices.RuntimeCompatibility(WrapNonExceptionThrows=true)</AttributeName>
+          <AttributeName>System.CLSCompliant(true)</AttributeName>
         </Attribute>
         <Attribute>
-          <AttributeName>System.Runtime.InteropServices.ComVisible(false)</AttributeName>
+          <AttributeName>System.Reflection.AssemblyDescription("Command Line Parsing Utilities")</AttributeName>
         </Attribute>
         <Attribute>
-          <AttributeName>System.CLSCompliant(true)</AttributeName>
+          <AttributeName>System.Reflection.AssemblyTitle("Mono.Options.dll")</AttributeName>
         </Attribute>
         <Attribute>
-          <AttributeName>System.Reflection.AssemblyDescription("Command Line Parsing Utilities")</AttributeName>
+          <AttributeName>System.Runtime.CompilerServices.RuntimeCompatibility(WrapNonExceptionThrows=true)</AttributeName>
         </Attribute>
         <Attribute>
-          <AttributeName>System.Reflection.AssemblyTitle("Mono.Options.dll")</AttributeName>
+          <AttributeName>System.Runtime.InteropServices.ComVisible(false)</AttributeName>
         </Attribute>
       </Attributes>
     </Assembly>
   </Assemblies>
   <Types>
     <Namespace Name="Mono.Options">
+      <Type Name="ArgumentSource" Kind="Class" />
       <Type Name="Option" Kind="Class" />
       <Type Name="OptionAction`2" DisplayName="OptionAction<TKey,TValue>" Kind="Delegate" />
       <Type Name="OptionContext" Kind="Class" />
@@ -32,6 +34,7 @@
       <Type Name="OptionSet" Kind="Class" />
       <Type Name="OptionValueCollection" Kind="Class" />
       <Type Name="OptionValueType" Kind="Enumeration" />
+      <Type Name="ResponseFileSource" Kind="Class" />
     </Namespace>
   </Types>
 </Overview>
diff --git a/mcs/class/Mono.Options/Mono.Options/ChangeLog b/mcs/class/Mono.Options/Mono.Options/ChangeLog
index a9b6be1..1d0890f 100644
--- a/mcs/class/Mono.Options/Mono.Options/ChangeLog
+++ b/mcs/class/Mono.Options/Mono.Options/ChangeLog
@@ -1,3 +1,29 @@
+2010-12-06  Jonathan Pryor  <jonpryor at vt.edu>
+
+	[mono.options] Ensure that IEnumerators are disposed.
+
+	It's possible that the IEnumerable<string> that
+	OptionSet.ArgumentEnumerator is enumerating may be generated via
+	'yield return', in which case any method `finally` blocks are
+	moved into the IDisposable.Dispose() method.
+
+	To ensure proper resource cleanup, we need to make sure that
+	Dispose() is called on the IEnumerator<string>s.
+
+2010-12-01  Jonathan Pryor  <jonpryor at vt.edu>
+
+	Add response file suport to Mono.Options.
+
+	Response file support is an "opt-in" feature, performed by adding
+	a ResponseFileSource to the OptionSet initialization logic:
+
+	var p = new OptionSet () { // normal options here... new
+	ResponseFileSource (), };
+
+	Response files make use of the new "ArgumentSource" support, which
+	acts as a low-level argument pre-processor, allowing processing of
+	arguments _before_ Option processing is performed.
+
 2010-06-09  Jonathan Pryor  <jpryor at novell.com>
 
 	* Options.cs: Remove use of 'var' so that C# 2.0 can be used.
diff --git a/mcs/class/Mono.Options/Mono.Options/ChangeLog b/mcs/class/Mono.Options/Mono.Options/ChangeLog.old
similarity index 100%
copy from mcs/class/Mono.Options/Mono.Options/ChangeLog
copy to mcs/class/Mono.Options/Mono.Options/ChangeLog.old
diff --git a/mcs/class/Mono.Options/Mono.Options/Options.cs b/mcs/class/Mono.Options/Mono.Options/Options.cs
index 6c2df9a..ecba10b 100644
--- a/mcs/class/Mono.Options/Mono.Options/Options.cs
+++ b/mcs/class/Mono.Options/Mono.Options/Options.cs
@@ -544,6 +544,92 @@ namespace Mono.Options
 		}
 	}
 
+	public abstract class ArgumentSource {
+
+		protected ArgumentSource ()
+		{
+		}
+
+		public abstract string[] GetNames ();
+		public abstract string Description { get; }
+		public abstract bool GetArguments (string value, out IEnumerable<string> replacement);
+
+		public static IEnumerable<string> GetArgumentsFromFile (string file)
+		{
+			return GetArguments (File.OpenText (file), true);
+		}
+
+		public static IEnumerable<string> GetArguments (TextReader reader)
+		{
+			return GetArguments (reader, false);
+		}
+
+		// Cribbed from mcs/driver.cs:LoadArgs(string)
+		static IEnumerable<string> GetArguments (TextReader reader, bool close)
+		{
+			try {
+				StringBuilder arg = new StringBuilder ();
+
+				string line;
+				while ((line = reader.ReadLine ()) != null) {
+					int t = line.Length;
+
+					for (int i = 0; i < t; i++) {
+						char c = line [i];
+						
+						if (c == '"' || c == '\'') {
+							char end = c;
+							
+							for (i++; i < t; i++){
+								c = line [i];
+
+								if (c == end)
+									break;
+								arg.Append (c);
+							}
+						} else if (c == ' ') {
+							if (arg.Length > 0) {
+								yield return arg.ToString ();
+								arg.Length = 0;
+							}
+						} else
+							arg.Append (c);
+					}
+					if (arg.Length > 0) {
+						yield return arg.ToString ();
+						arg.Length = 0;
+					}
+				}
+			}
+			finally {
+				if (close)
+					reader.Close ();
+			}
+		}
+	}
+
+	public class ResponseFileSource : ArgumentSource {
+
+		public override string[] GetNames ()
+		{
+			return new string[]{"@file"};
+		}
+
+		public override string Description {
+			get {return "Read response file for more options.";}
+		}
+
+		public override bool GetArguments (string value, out IEnumerable<string> replacement)
+		{
+			if (string.IsNullOrEmpty (value) || !value.StartsWith ("@")) {
+				replacement = null;
+				return false;
+			}
+			replacement = ArgumentSource.GetArgumentsFromFile (value.Substring (1));
+			return true;
+		}
+	}
+
 	[Serializable]
 	public class OptionException : Exception {
 		private string option;
@@ -594,6 +680,7 @@ namespace Mono.Options
 		public OptionSet (Converter<string, string> localizer)
 		{
 			this.localizer = localizer;
+			this.roSources = new ReadOnlyCollection<ArgumentSource>(sources);
 		}
 
 		Converter<string, string> localizer;
@@ -602,6 +689,14 @@ namespace Mono.Options
 			get {return localizer;}
 		}
 
+		List<ArgumentSource> sources = new List<ArgumentSource> ();
+		ReadOnlyCollection<ArgumentSource> roSources;
+
+		public ReadOnlyCollection<ArgumentSource> ArgumentSources {
+			get {return roSources;}
+		}
+
+
 		protected override string GetKeyForItem (Option item)
 		{
 			if (item == null)
@@ -776,48 +871,30 @@ namespace Mono.Options
 			return Add (new ActionOption<TKey, TValue> (prototype, description, action));
 		}
 
-		protected virtual OptionContext CreateOptionContext ()
+		public OptionSet Add (ArgumentSource source)
 		{
-			return new OptionContext (this);
+			if (source == null)
+				throw new ArgumentNullException ("source");
+			sources.Add (source);
+			return this;
 		}
 
-#if LINQ
-		public List<string> Parse (IEnumerable<string> arguments)
+		protected virtual OptionContext CreateOptionContext ()
 		{
-			bool process = true;
-			OptionContext c = CreateOptionContext ();
-			c.OptionIndex = -1;
-			var def = GetOptionForName ("<>");
-			var unprocessed = 
-				from argument in arguments
-				where ++c.OptionIndex >= 0 && (process || def != null)
-					? process
-						? argument == "--" 
-							? (process = false)
-							: !Parse (argument, c)
-								? def != null 
-									? Unprocessed (null, def, c, argument) 
-									: true
-								: false
-						: def != null 
-							? Unprocessed (null, def, c, argument)
-							: true
-					: true
-				select argument;
-			List<string> r = unprocessed.ToList ();
-			if (c.Option != null)
-				c.Option.Invoke (c);
-			return r;
+			return new OptionContext (this);
 		}
-#else
+
 		public List<string> Parse (IEnumerable<string> arguments)
 		{
+			if (arguments == null)
+				throw new ArgumentNullException ("arguments");
 			OptionContext c = CreateOptionContext ();
 			c.OptionIndex = -1;
 			bool process = true;
 			List<string> unprocessed = new List<string> ();
 			Option def = Contains ("<>") ? this ["<>"] : null;
-			foreach (string argument in arguments) {
+			ArgumentEnumerator ae = new ArgumentEnumerator (arguments);
+			foreach (string argument in ae) {
 				++c.OptionIndex;
 				if (argument == "--") {
 					process = false;
@@ -827,6 +904,8 @@ namespace Mono.Options
 					Unprocessed (unprocessed, def, c, argument);
 					continue;
 				}
+				if (AddSource (ae, argument))
+					continue;
 				if (!Parse (argument, c))
 					Unprocessed (unprocessed, def, c, argument);
 			}
@@ -834,7 +913,50 @@ namespace Mono.Options
 				c.Option.Invoke (c);
 			return unprocessed;
 		}
-#endif
+
+		class ArgumentEnumerator : IEnumerable<string> {
+			List<IEnumerator<string>> sources = new List<IEnumerator<string>> ();
+
+			public ArgumentEnumerator (IEnumerable<string> arguments)
+			{
+				sources.Add (arguments.GetEnumerator ());
+			}
+
+			public void Add (IEnumerable<string> arguments)
+			{
+				sources.Add (arguments.GetEnumerator ());
+			}
+
+			public IEnumerator<string> GetEnumerator ()
+			{
+				do {
+					IEnumerator<string> c = sources [sources.Count-1];
+					if (c.MoveNext ())
+						yield return c.Current;
+					else {
+						c.Dispose ();
+						sources.RemoveAt (sources.Count-1);
+					}
+				} while (sources.Count > 0);
+			}
+
+			IEnumerator IEnumerable.GetEnumerator ()
+			{
+				return GetEnumerator ();
+			}
+		}
+
+		bool AddSource (ArgumentEnumerator ae, string argument)
+		{
+			foreach (ArgumentSource source in sources) {
+				IEnumerable<string> replacement;
+				if (!source.GetArguments (argument, out replacement))
+					continue;
+				ae.Add (replacement);
+				return true;
+			}
+			return false;
+		}
 
 		private static bool Unprocessed (ICollection<string> extra, Option def, OptionContext c, string argument)
 		{
@@ -1011,6 +1133,37 @@ namespace Mono.Options
 					indent = true;
 				}
 			}
+
+			foreach (ArgumentSource s in sources) {
+				string[] names = s.GetNames ();
+				if (names == null || names.Length == 0)
+					continue;
+
+				int written = 0;
+
+				Write (o, ref written, "  ");
+				Write (o, ref written, names [0]);
+				for (int i = 1; i < names.Length; ++i) {
+					Write (o, ref written, ", ");
+					Write (o, ref written, names [i]);
+				}
+
+				if (written < OptionWidth)
+					o.Write (new string (' ', OptionWidth - written));
+				else {
+					o.WriteLine ();
+					o.Write (new string (' ', OptionWidth));
+				}
+
+				bool indent = false;
+				string prefix = new string (' ', OptionWidth+2);
+				foreach (string line in GetLines (localizer (GetDescription (s.Description)))) {
+					if (indent) 
+						o.Write (prefix);
+					o.WriteLine (line);
+					indent = true;
+				}
+			}
 		}
 
 		bool WriteOptionPrototype (TextWriter o, Option p, ref int written)
diff --git a/mcs/class/Mono.Options/Test/Mono.Options/ChangeLog b/mcs/class/Mono.Options/Test/Mono.Options/ChangeLog
index 550a209..9079efd 100644
--- a/mcs/class/Mono.Options/Test/Mono.Options/ChangeLog
+++ b/mcs/class/Mono.Options/Test/Mono.Options/ChangeLog
@@ -1,3 +1,17 @@
+2010-12-01  Jonathan Pryor  <jonpryor at vt.edu>
+
+	Add response file suport to Mono.Options.
+
+	Response file support is an "opt-in" feature, performed by adding
+	a ResponseFileSource to the OptionSet initialization logic:
+
+	var p = new OptionSet () { // normal options here... new
+	ResponseFileSource (), };
+
+	Response files make use of the new "ArgumentSource" support, which
+	acts as a low-level argument pre-processor, allowing processing of
+	arguments _before_ Option processing is performed.
+
 2010-06-09  Jonathan Pryor  <jpryor at novell.com>
 
 	* OptionSetTest.cs: Make OptionSetTest inherit from ListContract so
diff --git a/mcs/class/Mono.Options/Test/Mono.Options/ChangeLog b/mcs/class/Mono.Options/Test/Mono.Options/ChangeLog.old
similarity index 100%
copy from mcs/class/Mono.Options/Test/Mono.Options/ChangeLog
copy to mcs/class/Mono.Options/Test/Mono.Options/ChangeLog.old
diff --git a/mcs/class/Mono.Options/Test/Mono.Options/OptionSetTest.cs b/mcs/class/Mono.Options/Test/Mono.Options/OptionSetTest.cs
index 0d9af0b..0d1433c 100644
--- a/mcs/class/Mono.Options/Test/Mono.Options/OptionSetTest.cs
+++ b/mcs/class/Mono.Options/Test/Mono.Options/OptionSetTest.cs
@@ -27,6 +27,7 @@
 //
 
 using System;
+using System.Collections;
 using System.Collections.Generic;
 using System.ComponentModel;
 using System.Globalization;
@@ -80,6 +81,52 @@ namespace Tests.Mono.Options
 		public override string ToString () {return s;}
 	}
 
+	class TestArgumentSource : ArgumentSource, IEnumerable {
+		string[] names;
+		string desc;
+
+		public TestArgumentSource (string[] names, string desc)
+		{
+			this.names  = names;
+			this.desc   = desc;
+		}
+
+		Dictionary<string, string[]> args = new Dictionary<string, string[]>();
+
+		public void Add (string key, params string[] values)
+		{
+			args.Add (key, values);
+		}
+
+		public override string[] GetNames ()
+		{
+			return names;
+		}
+
+		public override string Description {
+			get {return desc;}
+		}
+
+		public override bool GetArguments (string value, out IEnumerable<string> replacement)
+		{
+			replacement = null;
+
+			string[] values;
+			if (args.TryGetValue (value, out values)) {
+				replacement = values;
+				return true;
+			}
+
+			return false;
+		}
+
+
+		IEnumerator IEnumerable.GetEnumerator ()
+		{
+			return args.GetEnumerator ();
+		}
+	}
+
 	[TestFixture]
 	public class OptionSetTest : ListContract<Option> {
 
@@ -114,6 +161,12 @@ namespace Tests.Mono.Options
 		[Test]
 		public void BundledValues ()
 		{
+			BundledValues (_("-DNAME", "-D", "NAME2", "-Debug", "-L/foo", "-L", "/bar", "-EDNAME3"));
+			BundledValues (_("@s1", "-D", "@s2", "-L/foo", "@s4"));
+		}
+
+		public void BundledValues (IEnumerable<string> args)
+		{
 			var defines = new List<string> ();
 			var libs    = new List<string> ();
 			bool debug  = false;
@@ -122,8 +175,14 @@ namespace Tests.Mono.Options
 				{ "L|library:", v => libs.Add (v) },
 				{ "Debug",      v => debug = v != null },
 				{ "E",          v => { /* ignore */ } },
+				new TestArgumentSource (null, null) {
+					{ "@s1", "-DNAME" },
+					{ "@s2", "NAME2", "@s3" },
+					{ "@s3", "-Debug" },
+					{ "@s4", "-L", "/bar", "-EDNAME3" },
+				},
 			};
-			p.Parse (_("-DNAME", "-D", "NAME2", "-Debug", "-L/foo", "-L", "/bar", "-EDNAME3"));
+			p.Parse (args);
 			Assert.AreEqual (defines.Count, 3);
 			Assert.AreEqual (defines [0], "NAME");
 			Assert.AreEqual (defines [1], "NAME2");
@@ -141,13 +200,23 @@ namespace Tests.Mono.Options
 		[Test]
 		public void RequiredValues ()
 		{
+			RequiredValues (_("a", "-a", "s", "-n=42", "n"));
+			RequiredValues (_("@s1", "s", "@s2", "n"));
+		}
+
+		void RequiredValues (IEnumerable<string> args)
+		{
 			string a = null;
 			int n = 0;
 			OptionSet p = new OptionSet () {
 				{ "a=", v => a = v },
 				{ "n=", (int v) => n = v },
+				new TestArgumentSource (null, null) {
+					{ "@s1", "a", "-a" },
+					{ "@s2", "-n=42" },
+				},
 			};
-			List<string> extra = p.Parse (_("a", "-a", "s", "-n=42", "n"));
+			List<string> extra = p.Parse (args);
 			Assert.AreEqual (extra.Count, 2);
 			Assert.AreEqual (extra [0], "a");
 			Assert.AreEqual (extra [1], "n");
@@ -218,6 +287,13 @@ namespace Tests.Mono.Options
 		[Test]
 		public void CombinationPlatter ()
 		{
+			CombinationPlatter (new string[]{"foo", "-v", "-a=42", "/b-",
+				"-a", "64", "bar", "--f", "B", "/h", "-?", "--help", "-v"});
+			CombinationPlatter (_("@s1", "-a=42", "@s3", "-a", "64", "bar", "@s4"));
+		}
+
+		void CombinationPlatter (IEnumerable<string> args)
+		{
 			int a = -1, b = -1;
 			string av = null, bv = null;
 			Foo f = null;
@@ -233,9 +309,14 @@ namespace Tests.Mono.Options
 					case "?": help |= 0x2; break;
 					case "help": help |= 0x4; break;
 				} } },
+				new TestArgumentSource (null, null) {
+					{ "@s1", "foo", "-v", "@s2" },
+					{ "@s2" },
+					{ "@s3", "/b-" },
+					{ "@s4", "--f", "B", "/h", "-?", "--help", "-v" },
+				},
 			};
-			List<string> e = p.Parse (new string[]{"foo", "-v", "-a=42", "/b-",
-				"-a", "64", "bar", "--f", "B", "/h", "-?", "--help", "-v"});
+			List<string> e = p.Parse (args);
 
 			Assert.AreEqual (e.Count, 2);
 			Assert.AreEqual (e[0], "foo");
@@ -274,7 +355,7 @@ namespace Tests.Mono.Options
 			Assert.AreEqual (a, "-b");
 			Utils.AssertException (typeof(ArgumentNullException),
 					"Argument cannot be null.\nParameter name: option",
-					p, v => { v.Add (null); });
+					p, v => { v.Add ((Option) null); });
 
 			// bad type
 			Utils.AssertException (typeof(OptionException),
@@ -333,6 +414,7 @@ namespace Tests.Mono.Options
 				{ "h|?|help",           "show help text",                       v => {} },
 				{ "version",            "output version information and exit",  v => {} },
 				{ "<>", v => {} },
+				new TestArgumentSource (new[]{"@s1", "@s2"}, "Read Response File for More Options"),
 			};
 
 			StringWriter expected = new StringWriter ();
@@ -366,6 +448,7 @@ namespace Tests.Mono.Options
  			expected.WriteLine ("                               `dirname FILE`/cache/`basename FILE .tree`.");
 			expected.WriteLine ("  -h, -?, --help             show help text");
 			expected.WriteLine ("      --version              output version information and exit");
+			expected.WriteLine ("  @s1, @s2                   Read Response File for More Options");
 
 			StringWriter actual = new StringWriter ();
 			p.WriteOptionDescriptions (actual);
@@ -376,6 +459,12 @@ namespace Tests.Mono.Options
 		[Test]
 		public void OptionBundling ()
 		{
+			OptionBundling (_ ("-abcf", "foo", "bar"));
+			OptionBundling (_ ("@s1", "foo", "bar"));
+		}
+
+		void OptionBundling (IEnumerable<string> args)
+		{
 			string a, b, c, f;
 			a = b = c = f = null;
 			var p = new OptionSet () {
@@ -383,8 +472,11 @@ namespace Tests.Mono.Options
 				{ "b", v => b = "b" },
 				{ "c", v => c = "c" },
 				{ "f=", v => f = v },
+				new TestArgumentSource (null, null) {
+					{ "@s1", "-abcf" },
+				},
 			};
-			List<string> extra = p.Parse (_ ("-abcf", "foo", "bar"));
+			List<string> extra = p.Parse (args);
 			Assert.AreEqual (extra.Count, 1);
 			Assert.AreEqual (extra [0], "bar");
 			Assert.AreEqual (a, "a");
@@ -399,11 +491,18 @@ namespace Tests.Mono.Options
 			var p = new OptionSet () {
 				{ "a", v => {} },
 				{ "b", v => {} },
+				new TestArgumentSource (null, null) {
+					{ "@s1", "-a", "-b" },
+				},
 			};
 			List<string> e = p.Parse (_ ("-a", "-b", "--", "-a", "-b"));
 			Assert.AreEqual (e.Count, 2);
 			Assert.AreEqual (e [0], "-a");
 			Assert.AreEqual (e [1], "-b");
+
+			e = p.Parse (_ ("@s1", "--", "@s1"));
+			Assert.AreEqual (e.Count, 1);
+			Assert.AreEqual (e [0], "@s1");
 		}
 
 		[Test]
@@ -418,19 +517,42 @@ namespace Tests.Mono.Options
 				{ "d={=>}{-->}", (k, v) => a.Add (k, v) },
 				{ "e={}", (k, v) => a.Add (k, v) },
 				{ "f=+/", (k, v) => a.Add (k, v) },
+				new TestArgumentSource (null, null) {
+					{ "@s1", "-a", "A" },
+					{ "@s2", @"C:\tmp", "-a" },
+					{ "@s3", "C=D", @"-a=E=F:\tmp" },
+					{ "@s4", "-a:G:H", "-aI=J" },
+					{ "@s5", "-b", "1" },
+					{ "@s6", "a", "-b" },
+					{ "@s7", "2", "b" },
+					{ "@s8", "-dA=>B", "-d" },
+					{ "@s9", "C-->D", "-d:E" },
+					{ "@s10", "F", "-d" },
+					{ "@s11", "G", "H" },
+					{ "@s12", "-dJ-->K" }
+				},
 			};
 			p.Parse (_("-a", "A", @"C:\tmp", "-a", "C=D", @"-a=E=F:\tmp", "-a:G:H", "-aI=J", "-b", "1", "a", "-b", "2", "b"));
-			AssertDictionary (a, 
-					"A", @"C:\tmp", 
-					"C", "D", 
-					"E", @"F:\tmp", 
-					"G", "H", 
-					"I", "J");
-			AssertDictionary (b,
-					"1", "a",
-					"2", "b");
+			Action assert = () => {
+				AssertDictionary (a, 
+						"A", @"C:\tmp", 
+						"C", "D", 
+						"E", @"F:\tmp", 
+						"G", "H", 
+						"I", "J");
+				AssertDictionary (b,
+						"1", "a",
+						"2", "b");
+			};
+			assert ();
+			a.Clear ();
+			b.Clear ();
 
+			p.Parse (_("@s1", "@s2", "@s3", "@s4", "@s5", "@s6", "@s7"));
+			assert ();
 			a.Clear ();
+			b.Clear ();
+
 			p.Parse (_("-c"));
 			Assert.AreEqual (a.Count, 0);
 			p.Parse (_("-c", "a"));
@@ -443,14 +565,21 @@ namespace Tests.Mono.Options
 
 			a.Clear ();
 			p.Parse (_("-dA=>B", "-d", "C-->D", "-d:E", "F", "-d", "G", "H", "-dJ-->K"));
-			AssertDictionary (a,
-					"A", "B",
-					"C", "D", 
-					"E", "F",
-					"G", "H",
-					"J", "K");
+			assert = () => {
+				AssertDictionary (a,
+						"A", "B",
+						"C", "D", 
+						"E", "F",
+						"G", "H",
+						"J", "K");
+			};
+			assert ();
+			a.Clear ();
 
+			p.Parse (_("@s8", "@s9", "@s10", "@s11", "@s12"));
+			assert ();
 			a.Clear ();
+
 			p.Parse (_("-eA=B", "-eC=D", "-eE", "F", "-e:G", "H"));
 			AssertDictionary (a,
 					"A=B", "-eC=D",
diff --git a/mcs/class/Mono.Posix/Mono.Unix.Native/ChangeLog b/mcs/class/Mono.Posix/Mono.Unix.Native/ChangeLog
index 65872ae..638cbfc 100644
--- a/mcs/class/Mono.Posix/Mono.Unix.Native/ChangeLog
+++ b/mcs/class/Mono.Posix/Mono.Unix.Native/ChangeLog
@@ -1,4 +1,14 @@
-2010-09-24  Jackson Harper  <jacksonh at gmail.com>
+2010-10-22  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Update mappings after latest changes to Mono.Posix
+
+	New mappings created for the epoll code.
+
+2010-10-15  Marek Safar  <marek.safar at gmail.com>
+
+	Clean up few more warnings
+
+2010-09-23  Jackson Harper  <jacksonh at gmail.com>
 
 	On 64bit this is turning into a 16 byte struct, this works around
 	the issue.
diff --git a/mcs/class/Mono.Posix/Mono.Unix.Native/NativeConvert.generated.cs b/mcs/class/Mono.Posix/Mono.Unix.Native/NativeConvert.generated.cs
index 960b5c2..be846a8 100644
--- a/mcs/class/Mono.Posix/Mono.Unix.Native/NativeConvert.generated.cs
+++ b/mcs/class/Mono.Posix/Mono.Unix.Native/NativeConvert.generated.cs
@@ -118,6 +118,70 @@ namespace Mono.Unix.Native {
 			return rval;
 		}
 
+		[DllImport (LIB, EntryPoint="Mono_Posix_FromEpollEvents")]
+		private static extern int FromEpollEvents (EpollEvents value, out UInt32 rval);
+
+		public static bool TryFromEpollEvents (EpollEvents value, out UInt32 rval)
+		{
+			return FromEpollEvents (value, out rval) == 0;
+		}
+
+		public static UInt32 FromEpollEvents (EpollEvents value)
+		{
+			UInt32 rval;
+			if (FromEpollEvents (value, out rval) == -1)
+				ThrowArgumentException (value);
+			return rval;
+		}
+
+		[DllImport (LIB, EntryPoint="Mono_Posix_ToEpollEvents")]
+		private static extern int ToEpollEvents (UInt32 value, out EpollEvents rval);
+
+		public static bool TryToEpollEvents (UInt32 value, out EpollEvents rval)
+		{
+			return ToEpollEvents (value, out rval) == 0;
+		}
+
+		public static EpollEvents ToEpollEvents (UInt32 value)
+		{
+			EpollEvents rval;
+			if (ToEpollEvents (value, out rval) == -1)
+				ThrowArgumentException (value);
+			return rval;
+		}
+
+		[DllImport (LIB, EntryPoint="Mono_Posix_FromEpollFlags")]
+		private static extern int FromEpollFlags (EpollFlags value, out Int32 rval);
+
+		public static bool TryFromEpollFlags (EpollFlags value, out Int32 rval)
+		{
+			return FromEpollFlags (value, out rval) == 0;
+		}
+
+		public static Int32 FromEpollFlags (EpollFlags value)
+		{
+			Int32 rval;
+			if (FromEpollFlags (value, out rval) == -1)
+				ThrowArgumentException (value);
+			return rval;
+		}
+
+		[DllImport (LIB, EntryPoint="Mono_Posix_ToEpollFlags")]
+		private static extern int ToEpollFlags (Int32 value, out EpollFlags rval);
+
+		public static bool TryToEpollFlags (Int32 value, out EpollFlags rval)
+		{
+			return ToEpollFlags (value, out rval) == 0;
+		}
+
+		public static EpollFlags ToEpollFlags (Int32 value)
+		{
+			EpollFlags rval;
+			if (ToEpollFlags (value, out rval) == -1)
+				ThrowArgumentException (value);
+			return rval;
+		}
+
 		[DllImport (LIB, EntryPoint="Mono_Posix_FromErrno")]
 		private static extern int FromErrno (Errno value, out Int32 rval);
 
diff --git a/mcs/class/Mono.Posix/Mono.Unix.Native/Syscall.cs b/mcs/class/Mono.Posix/Mono.Unix.Native/Syscall.cs
index 9edf9d3..a95c5ee 100644
--- a/mcs/class/Mono.Posix/Mono.Unix.Native/Syscall.cs
+++ b/mcs/class/Mono.Posix/Mono.Unix.Native/Syscall.cs
@@ -1143,6 +1143,7 @@ namespace Mono.Unix.Native {
 	}
 
 	[Flags][Map]
+	[CLSCompliant (false)]
 	public enum EpollEvents : uint {
 		EPOLLIN = 0x001,
 		EPOLLPRI = 0x002,
@@ -1166,6 +1167,7 @@ namespace Mono.Unix.Native {
 	}
 
 	[StructLayout (LayoutKind.Explicit, Size=12, Pack=1)]
+	[CLSCompliant (false)]
 	public struct EpollEvent {
 		[FieldOffset (0)]
 		public EpollEvents events;
diff --git a/mcs/class/Mono.Posix/Mono.Unix/ChangeLog b/mcs/class/Mono.Posix/Mono.Unix/ChangeLog
index d1b975c..0e46462 100644
--- a/mcs/class/Mono.Posix/Mono.Unix/ChangeLog
+++ b/mcs/class/Mono.Posix/Mono.Unix/ChangeLog
@@ -1,3 +1,46 @@
+2010-12-07  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Delete end local endpoint when stopping the server
+
+	Fixes bug #647204.
+
+2010-11-24  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	[Sockets] Support Remote/LocalEndPoint for AF_UNIX
+
+	We were not handling correctly the AF_UNIX family when getting the
+	socket name or the peer name.
+
+	Fixes bug #655637.
+
+2010-09-16  Miguel de Icaza  <miguel at gnome.org>
+
+	Reuse the same delegate for checking if the runtime is shutting
+	down.
+
+	Instead of creating a new delegate every time that WaitAny is
+	invoked, reuse the same delegate. We also keep a permanent
+	reference to prevent this delegate being collected.
+
+	Thsi should fix 592981
+
+2010-09-15  Jonathan Pryor  <jonpryor at vt.edu>
+
+	Ensure that the GC doesn't collect the delegate we pass off to
+	native code.
+
+	(Hopefully) Fixes #592981.
+
+	This is esoteric, with no test case, so I can only assume that the
+	cause for the crash reported in #592981 is that Boehm is
+	collecting the shutting_down delegate reference while we're still
+	in native code (which sounds more like a Boehm bug, as it
+	shouldn't be collecting memory while we're in a P/Invoke).
+
+	Hopefully making the delegate more explicit and using
+	GC.KeepAlive() will keep the delegate from being collected by the
+	GC during the P/Invoke call.
+
 2010-04-15  Jonathan Pryor  <jpryor at novell.com>
 
 	* UnixSignal.cs: Change the native WaitAny() method to accept a
diff --git a/mcs/class/Mono.Posix/Mono.Unix/ChangeLog b/mcs/class/Mono.Posix/Mono.Unix/ChangeLog.old
similarity index 100%
copy from mcs/class/Mono.Posix/Mono.Unix/ChangeLog
copy to mcs/class/Mono.Posix/Mono.Unix/ChangeLog.old
diff --git a/mcs/class/Mono.Posix/Mono.Unix/UnixEndPoint.cs b/mcs/class/Mono.Posix/Mono.Unix/UnixEndPoint.cs
index 06a1ce7..d86dd7c 100644
--- a/mcs/class/Mono.Posix/Mono.Unix/UnixEndPoint.cs
+++ b/mcs/class/Mono.Posix/Mono.Unix/UnixEndPoint.cs
@@ -75,6 +75,13 @@ namespace Mono.Unix
 				throw new ArgumentException ("socketAddress is not a unix socket address.");
 			 */
 
+			if (socketAddress.Size == 2) {
+				// Empty filename.
+				// Probably from RemoteEndPoint which on linux does not return the file name.
+				UnixEndPoint uep = new UnixEndPoint ("a");
+				uep.filename = "";
+				return uep;
+			}
 			byte [] bytes = new byte [socketAddress.Size - 2 - 1];
 			for (int i = 0; i < bytes.Length; i++) {
 				bytes [i] = socketAddress [i + 2];
diff --git a/mcs/class/Mono.Posix/Mono.Unix/UnixListener.cs b/mcs/class/Mono.Posix/Mono.Unix/UnixListener.cs
index baab8a7..d766af6 100644
--- a/mcs/class/Mono.Posix/Mono.Unix/UnixListener.cs
+++ b/mcs/class/Mono.Posix/Mono.Unix/UnixListener.cs
@@ -150,6 +150,10 @@ namespace Mono.Unix {
 				return;
 
 			if (disposing) {
+				try {
+					File.Delete (((UnixEndPoint) savedEP).Filename);
+				} catch {
+				}
 				if (server != null)
 					server.Close ();
 
diff --git a/mcs/class/Mono.Posix/Mono.Unix/UnixSignal.cs b/mcs/class/Mono.Posix/Mono.Unix/UnixSignal.cs
index 86a855a..883e044 100644
--- a/mcs/class/Mono.Posix/Mono.Unix/UnixSignal.cs
+++ b/mcs/class/Mono.Posix/Mono.Unix/UnixSignal.cs
@@ -96,6 +96,12 @@ namespace Mono.Unix {
 
 		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
 		delegate int Mono_Posix_RuntimeIsShuttingDown ();
+		static Mono_Posix_RuntimeIsShuttingDown ShuttingDown = RuntimeShuttingDownCallback;
+		
+		static int RuntimeShuttingDownCallback ()
+		{
+			return Environment.HasShutdownStarted ? 1 : 0;
+		}
 
 		[DllImport (Stdlib.MPH, CallingConvention=CallingConvention.Cdecl,
 				EntryPoint="Mono_Unix_UnixSignal_WaitAny")]
@@ -190,6 +196,7 @@ namespace Mono.Unix {
 			return WaitAny (signals, (int) ms);
 		}
 
+			
 		public static unsafe int WaitAny (UnixSignal[] signals, int millisecondsTimeout)
 		{
 			if (signals == null)
@@ -202,7 +209,7 @@ namespace Mono.Unix {
 				if (infos [i] == IntPtr.Zero)
 					throw new InvalidOperationException ("Disposed UnixSignal");
 			}
-			return WaitAny (infos, infos.Length, millisecondsTimeout, () => Environment.HasShutdownStarted ? 1 : 0);
+			return WaitAny (infos, infos.Length, millisecondsTimeout, ShuttingDown);
 		}
 	}
 }
diff --git a/mcs/class/Mono.Security/Assembly/AssemblyInfo.cs b/mcs/class/Mono.Security/Assembly/AssemblyInfo.cs
index be89ba6..85244bc 100644
--- a/mcs/class/Mono.Security/Assembly/AssemblyInfo.cs
+++ b/mcs/class/Mono.Security/Assembly/AssemblyInfo.cs
@@ -60,6 +60,6 @@ using System.Runtime.InteropServices;
 [assembly: AssemblyDelaySign (true)]
 [assembly: AssemblyKeyFile ("../mono.pub")]
 
-#if MONOTOUCH
+#if MOBILE
 [assembly: InternalsVisibleTo ("System, PublicKey=00240000048000009400000006020000002400005253413100040000010001008D56C76F9E8649383049F383C44BE0EC204181822A6C31CF5EB7EF486944D032188EA1D3920763712CCB12D75FB77E9811149E6148E5D32FBAAB37611C1878DDC19E20EF135D0CB2CFF2BFEC3D115810C3D9069638FE4BE215DBF795861920E5AB6F7DB2E2CEEF136AC23D5DD2BF031700AEC232F6C6B1C785B4305C123B37AB")]
 #endif
diff --git a/mcs/class/Mono.Security/Assembly/ChangeLog b/mcs/class/Mono.Security/Assembly/ChangeLog
index f53f82d..86e7fb7 100644
--- a/mcs/class/Mono.Security/Assembly/ChangeLog
+++ b/mcs/class/Mono.Security/Assembly/ChangeLog
@@ -1,3 +1,7 @@
+2010-09-08  Jb Evain  <jbevain at gmail.com>
+
+	Enable the Mono.Security build for monodroid
+
 2004-04-28  Sebastien Pouliot <sebastien at ximian.com>
 
 	* AssemblyInfo.cs: Re-activated ClsCompliant(true).
diff --git a/mcs/class/Mono.Security/Assembly/ChangeLog b/mcs/class/Mono.Security/Assembly/ChangeLog.old
similarity index 100%
copy from mcs/class/Mono.Security/Assembly/ChangeLog
copy to mcs/class/Mono.Security/Assembly/ChangeLog.old
diff --git a/mcs/class/Mono.Security/Mono.Math/BigInteger.cs b/mcs/class/Mono.Security/Mono.Math/BigInteger.cs
index c4bb85b..3d69872 100644
--- a/mcs/class/Mono.Security/Mono.Math/BigInteger.cs
+++ b/mcs/class/Mono.Security/Mono.Math/BigInteger.cs
@@ -1558,92 +1558,6 @@ namespace Mono.Math {
 			#endregion
 		}
 
-		internal sealed class Montgomery {
-
-			private Montgomery () 
-			{
-			}
-
-			public static uint Inverse (uint n)
-			{
-				uint y = n, z;
-
-				while ((z = n * y) != 1)
-					y *= 2 - z;
-
-				return (uint)-y;
-			}
-
-			public static BigInteger ToMont (BigInteger n, BigInteger m)
-			{
-				n.Normalize (); m.Normalize ();
-
-				n <<= (int)m.length * 32;
-				n %= m;
-				return n;
-			}
-
-			public static unsafe BigInteger Reduce (BigInteger n, BigInteger m, uint mPrime)
-			{
-				BigInteger A = n;
-				fixed (uint* a = A.data, mm = m.data) {
-					for (uint i = 0; i < m.length; i++) {
-						// The mod here is taken care of by the CPU,
-						// since the multiply will overflow.
-						uint u_i = a [0] * mPrime /* % 2^32 */;
-
-						//
-						// A += u_i * m;
-						// A >>= 32
-						//
-
-						// mP = Position in mod
-						// aSP = the source of bits from a
-						// aDP = destination for bits
-						uint* mP = mm, aSP = a, aDP = a;
-
-						ulong c = (ulong)u_i * ((ulong)*(mP++)) + *(aSP++);
-						c >>= 32;
-						uint j = 1;
-
-						// Multiply and add
-						for (; j < m.length; j++) {
-							c += (ulong)u_i * (ulong)*(mP++) + *(aSP++);
-							*(aDP++) = (uint)c;
-							c >>= 32;
-						}
-
-						// Account for carry
-						// TODO: use a better loop here, we dont need the ulong stuff
-						for (; j < A.length; j++) {
-							c += *(aSP++);
-							*(aDP++) = (uint)c;
-							c >>= 32;
-							if (c == 0) {j++; break;}
-						}
-						// Copy the rest
-						for (; j < A.length; j++) {
-							*(aDP++) = *(aSP++);
-						}
-
-						*(aDP++) = (uint)c;
-					}
-
-					while (A.length > 1 && a [A.length-1] == 0) A.length--;
-
-				}
-				if (A >= m) Kernel.MinusEq (A, m);
-
-				return A;
-			}
-#if _NOT_USED_
-			public static BigInteger Reduce (BigInteger n, BigInteger m)
-			{
-				return Reduce (n, m, Inverse (m.data [0]));
-			}
-#endif
-		}
-
 		/// <summary>
 		/// Low level functions for the BigInteger
 		/// </summary>
diff --git a/mcs/class/Mono.Security/Mono.Math/ChangeLog b/mcs/class/Mono.Security/Mono.Math/ChangeLog
index e73d2ab..b10e769 100644
--- a/mcs/class/Mono.Security/Mono.Math/ChangeLog
+++ b/mcs/class/Mono.Security/Mono.Math/ChangeLog
@@ -1,3 +1,7 @@
+2010-10-18  Sebastien Pouliot  <sebastien at ximian.com>
+
+	Remove dead code from BigInteger since it confuse some people
+
 2007-07-30  Sebastien Pouliot  <sebastien at ximian.com> 
 
 	* BigInteger.cs: Applied Miguel's r82915 patch for Equals.
diff --git a/mcs/class/Mono.Security/Mono.Math/ChangeLog b/mcs/class/Mono.Security/Mono.Math/ChangeLog.old
similarity index 100%
copy from mcs/class/Mono.Security/Mono.Math/ChangeLog
copy to mcs/class/Mono.Security/Mono.Math/ChangeLog.old
diff --git a/mcs/class/Mono.Security/Mono.Security.Cryptography/ChangeLog b/mcs/class/Mono.Security/Mono.Security.Cryptography/ChangeLog
index bc4e1e9..3623ce6 100644
--- a/mcs/class/Mono.Security/Mono.Security.Cryptography/ChangeLog
+++ b/mcs/class/Mono.Security/Mono.Security.Cryptography/ChangeLog
@@ -1,3 +1,7 @@
+2010-09-08  Jb Evain  <jbevain at gmail.com>
+
+	Simplify ifdefs specifics to MOONLIGHT
+
 2010-07-16  Sebastien Pouliot  <sebastien at ximian.com>
 
 	* MD2Managed.cs:
diff --git a/mcs/class/Mono.Security/Mono.Security.Cryptography/ChangeLog b/mcs/class/Mono.Security/Mono.Security.Cryptography/ChangeLog.old
similarity index 100%
copy from mcs/class/Mono.Security/Mono.Security.Cryptography/ChangeLog
copy to mcs/class/Mono.Security/Mono.Security.Cryptography/ChangeLog.old
diff --git a/mcs/class/Mono.Security/Mono.Security.Cryptography/CryptoTools.cs b/mcs/class/Mono.Security/Mono.Security.Cryptography/CryptoTools.cs
index e79dc6f..a39cd48 100644
--- a/mcs/class/Mono.Security/Mono.Security.Cryptography/CryptoTools.cs
+++ b/mcs/class/Mono.Security/Mono.Security.Cryptography/CryptoTools.cs
@@ -48,7 +48,7 @@ namespace Mono.Security.Cryptography {
 
 		static RandomNumberGenerator Rng {
 			get {
-#if NET_2_1 && !MONOTOUCH
+#if MOONLIGHT
 				if (rng == null)
 					rng = new RNGCryptoServiceProvider ();
 #else
diff --git a/mcs/class/Mono.Security/Mono.Security.Cryptography/SymmetricTransform.cs b/mcs/class/Mono.Security/Mono.Security.Cryptography/SymmetricTransform.cs
index 2fd4694..028f5f0 100644
--- a/mcs/class/Mono.Security/Mono.Security.Cryptography/SymmetricTransform.cs
+++ b/mcs/class/Mono.Security/Mono.Security.Cryptography/SymmetricTransform.cs
@@ -50,7 +50,7 @@ namespace Mono.Security.Cryptography {
 		private byte[] temp2;
 		private byte[] workBuff;
 		private byte[] workout;
-#if !NET_2_1 || MONOTOUCH
+#if !MOONLIGHT
 		// Silverlight 2.0 does not support any feedback mode
 		private int FeedBackByte;
 		private int FeedBackIter;
@@ -80,7 +80,7 @@ namespace Mono.Security.Cryptography {
 			temp = new byte [BlockSizeByte];
 			Buffer.BlockCopy (rgbIV, 0, temp, 0, System.Math.Min (BlockSizeByte, rgbIV.Length));
 			temp2 = new byte [BlockSizeByte];
-#if !NET_2_1 || MONOTOUCH
+#if !MOONLIGHT
 			FeedBackByte = (algo.FeedbackSize >> 3);
 			if (FeedBackByte != 0)
 				FeedBackIter = (int) BlockSizeByte / FeedBackByte;
@@ -137,7 +137,7 @@ namespace Mono.Security.Cryptography {
 		// i.e. Any padding must be done before calling this method
 		protected virtual void Transform (byte[] input, byte[] output) 
 		{
-#if NET_2_1 && !MONOTOUCH
+#if MOONLIGHT
 			// Silverlight 2.0 only supports CBC
 			CBC (input, output);
 #else
@@ -184,7 +184,7 @@ namespace Mono.Security.Cryptography {
 			}
 		}
 
-#if !NET_2_1 || MONOTOUCH
+#if !MOONLIGHT
 		// Cipher-FeedBack (CFB)
 		protected virtual void CFB (byte[] input, byte[] output) 
 		{
@@ -255,7 +255,7 @@ namespace Mono.Security.Cryptography {
 
 			// ordered to avoid possible integer overflow
 			int len = outputBuffer.Length - inputCount - outputOffset;
-#if NET_2_1 && !MONOTOUCH
+#if MOONLIGHT
 			// only PKCS7 is supported Silverlight 2.0
 			if (KeepLastBlock) {
 #else
@@ -280,7 +280,7 @@ namespace Mono.Security.Cryptography {
 
 		private bool KeepLastBlock {
 			get {
-#if NET_2_1 && !MONOTOUCH
+#if MOONLIGHT
 				// only PKCS7 is supported Silverlight 2.0
 				return !encrypt;
 #else
@@ -335,7 +335,7 @@ namespace Mono.Security.Cryptography {
 			return total;
 		}
 
-#if (!NET_2_1 || MONOTOUCH)
+#if !MOONLIGHT
 		RandomNumberGenerator _rng;
 
 		private void Random (byte[] buffer, int start, int length)
@@ -366,7 +366,7 @@ namespace Mono.Security.Cryptography {
 			int rem = inputCount - full;
 			int total = full;
 
-#if NET_2_1 && !MONOTOUCH
+#if MOONLIGHT
 			// only PKCS7 is supported Silverlight 2.0
 			total += BlockSizeByte;
 #else
@@ -408,7 +408,7 @@ namespace Mono.Security.Cryptography {
 
 			// now we only have a single last block to encrypt
 			byte padding = (byte) (BlockSizeByte - rem);
-#if NET_2_1 && !MONOTOUCH
+#if MOONLIGHT
 			// only PKCS7 is supported Silverlight 2.0
 			for (int i = res.Length; --i >= (res.Length - padding);) 
 				res [i] = padding;
@@ -475,7 +475,7 @@ namespace Mono.Security.Cryptography {
 
 			// total may be 0 (e.g. PaddingMode.None)
 			byte padding = ((total > 0) ? res [total - 1] : (byte) 0);
-#if NET_2_1 && !MONOTOUCH
+#if MOONLIGHT
 			// only PKCS7 is supported Silverlight 2.0
 			if ((padding == 0) || (padding > BlockSizeByte))
 				throw new CryptographicException (Locale.GetText ("Bad padding length."));
diff --git a/mcs/class/Mono.Security/Mono.Security.X509/ChangeLog b/mcs/class/Mono.Security/Mono.Security.X509/ChangeLog
index 4e20301..7a8082b 100644
--- a/mcs/class/Mono.Security/Mono.Security.X509/ChangeLog
+++ b/mcs/class/Mono.Security/Mono.Security.X509/ChangeLog
@@ -1,3 +1,47 @@
+2010-11-03  Sebastien Pouliot  <sebastien at ximian.com>
+
+	Fix condition so the new feature is available outside NET_2_1
+
+2010-11-03  Marek Habersack  <grendel at twistedcode.net>
+
+	Fix mixed newlines
+
+2010-11-02  Sebastien Pouliot  <sebastien at ximian.com>
+
+	Fix bootstrapping issue wrt moonlight profile
+
+2010-10-20  Pablo Ruiz Garcia  <pablo.ruiz at gmail.com>
+
+	[API] X509 related enhacemnts to allow 1) associating keystore's
+	private keys with their corresponding public certificates found at
+	X509Stores, and 2) importing private keys to X509Stores along with
+	certificates.
+
+	mcs/class/corlib/Mono.Security.X509/X509Store.cs:
+	mcs/class/Mono.Security/Mono.Security.X509/X509Store.cs:
+	mcs/class/corlib/Mono.Security.X509/X509StoreManager.cs:
+	mcs/class/Mono.Security/Mono.Security.X509/X509StoreManager.cs:
+	Modified MSX.X509Store to allow importing privateKeys along
+	certificates (by using RSACryptoServiceProvider and
+	KeyPairPersister). Fixed X509Store to use certificate's hash as
+	CspParameters.KeyContainerName.
+
+	mcs/tools/security/certmgr.cs: Added a new -importKey action to
+	certmgr, which allows importing a PKCS12 contained key into our
+	KeyPair store. Added a more (verbose) output to certmgr's -list
+	action.
+
+	man/certmgr.1: Updated certmgr man page ti reflect -importKey
+	addition.
+
+	mcs/class/corlib/System.Security.Cryptography/CspParameters.cs:
+	mcs/class/corlib/System.Security.Cryptography/RSACryptoServiceProvider.cs:
+	Implemented RSACryptoServiceProvider.CspKeyContainerInfo getter
+	RSACryptoServiceProvider will not take into account
+	CspParameterFlags.UseExistingKey by throwing a
+	CryptographicException if keyset identified by KeyContainerName
+	does not exists.
+
 2010-03-11 Gonzalo Paniagua Javier <gonzalo at novell.com>
 
 	* OSX509Certificates.cs: moved to System.dll.
diff --git a/mcs/class/Mono.Security/Mono.Security.X509/ChangeLog b/mcs/class/Mono.Security/Mono.Security.X509/ChangeLog.old
similarity index 100%
copy from mcs/class/Mono.Security/Mono.Security.X509/ChangeLog
copy to mcs/class/Mono.Security/Mono.Security.X509/ChangeLog.old
diff --git a/mcs/class/Mono.Security/Mono.Security.X509/X509Store.cs b/mcs/class/Mono.Security/Mono.Security.X509/X509Store.cs
index 1acd57d..df9c8cb 100644
--- a/mcs/class/Mono.Security/Mono.Security.X509/X509Store.cs
+++ b/mcs/class/Mono.Security/Mono.Security.X509/X509Store.cs
@@ -3,8 +3,10 @@
 //
 // Author:
 //	Sebastien Pouliot  <sebastien at ximian.com>
+//	Pablo Ruiz <pruiz at netway.org>
 //
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
+// (C) 2010 Pablo Ruiz.
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -31,7 +33,9 @@ using System.Collections;
 using System.Globalization;
 using System.IO;
 using System.Text;
+using System.Security.Cryptography;
 
+using Mono.Security.Cryptography;
 using Mono.Security.X509.Extensions;
 
 namespace Mono.Security.X509 {
@@ -114,6 +118,17 @@ namespace Mono.Security.X509 {
 					fs.Close ();
 				}
 			}
+#if !NET_2_1
+			// Try to save privateKey if available..
+			CspParameters cspParams = new CspParameters ();
+			cspParams.KeyContainerName = CryptoConvert.ToHex (certificate.Hash);
+
+			// Right now this seems to be the best way to know if we should use LM store.. ;)
+			if (_storePath.StartsWith (X509StoreManager.LocalMachinePath))
+				cspParams.Flags = CspProviderFlags.UseMachineKeyStore;
+
+			ImportPrivateKey (certificate, cspParams);
+#endif
 		}
 
 		public void Import (X509Crl crl) 
@@ -188,6 +203,7 @@ namespace Mono.Security.X509 {
 		private string GetUniqueName (string method, byte[] name, string fileExtension) 
 		{
 			StringBuilder sb = new StringBuilder (method);
+			
 			sb.Append ("-");
 			foreach (byte b in name) {
 				sb.Append (b.ToString ("X2", CultureInfo.InvariantCulture));
@@ -212,6 +228,21 @@ namespace Mono.Security.X509 {
 		{
 			byte[] data = Load (filename);
 			X509Certificate cert = new X509Certificate (data);
+#if !NET_2_1
+			// If privateKey it's available, load it too..
+			CspParameters cspParams = new CspParameters ();
+			cspParams.KeyContainerName = CryptoConvert.ToHex (cert.Hash);
+			cspParams.Flags = CspProviderFlags.UseMachineKeyStore;
+			KeyPairPersistence kpp = new KeyPairPersistence (cspParams);
+
+			if (!kpp.Load ())
+				return cert;
+
+			if (cert.RSA != null)
+				cert.RSA = new RSACryptoServiceProvider (cspParams);
+			else if (cert.DSA != null)
+				cert.DSA = new DSACryptoServiceProvider (cspParams);
+#endif
 			return cert;
 		}
 
@@ -283,5 +314,41 @@ namespace Mono.Security.X509 {
 			}
 			return list;
 		}
+#if !INSIDE_CORLIB
+		private void ImportPrivateKey (X509Certificate certificate, CspParameters cspParams)
+		{
+			RSACryptoServiceProvider rsaCsp = certificate.RSA as RSACryptoServiceProvider;
+			if (rsaCsp != null) {
+				if (rsaCsp.PublicOnly)
+					return;
+
+				RSACryptoServiceProvider csp = new RSACryptoServiceProvider(cspParams);
+				csp.ImportParameters(rsaCsp.ExportParameters(true));
+				csp.PersistKeyInCsp = true;
+				return;
+			}
+
+			RSAManaged rsaMng = certificate.RSA as RSAManaged;
+			if (rsaMng != null) {
+				if (rsaMng.PublicOnly)
+					return;
+
+				RSACryptoServiceProvider csp = new RSACryptoServiceProvider(cspParams);
+				csp.ImportParameters(rsaMng.ExportParameters(true));
+				csp.PersistKeyInCsp = true;
+				return;
+			}
+
+			DSACryptoServiceProvider dsaCsp = certificate.DSA as DSACryptoServiceProvider;
+			if (dsaCsp != null) {
+				if (dsaCsp.PublicOnly)
+					return;
+
+				DSACryptoServiceProvider csp = new DSACryptoServiceProvider(cspParams);
+				csp.ImportParameters(dsaCsp.ExportParameters(true));
+				csp.PersistKeyInCsp = true;
+			}
+		}
+#endif
 	}
 }
diff --git a/mcs/class/Mono.Security/Mono.Security.X509/X509StoreManager.cs b/mcs/class/Mono.Security/Mono.Security.X509/X509StoreManager.cs
index 50f45b4..db73583 100644
--- a/mcs/class/Mono.Security/Mono.Security.X509/X509StoreManager.cs
+++ b/mcs/class/Mono.Security/Mono.Security.X509/X509StoreManager.cs
@@ -43,6 +43,8 @@ namespace Mono.Security.X509 {
 #endif
 	sealed class X509StoreManager {
 
+		static private string _userPath;
+		static private string _localMachinePath;
 		static private X509Stores _userStore;
 		static private X509Stores _machineStore;
 
@@ -50,30 +52,44 @@ namespace Mono.Security.X509 {
 		{
 		}
 
-		static public X509Stores CurrentUser {
-			get { 
-				if (_userStore == null) {
-					string _userPath = Path.Combine (
-						Environment.GetFolderPath (Environment.SpecialFolder.ApplicationData),
-						".mono");
-					_userPath = Path.Combine (_userPath, "certs");
+		internal static string CurrentUserPath {
+			get {
+				if (_userPath == null) {
+					_userPath = Path.Combine(
+							Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
+							".mono");
+					_userPath = Path.Combine(_userPath, "certs");
+				}
+				return _userPath;
+			}
+		}
 
-					_userStore = new X509Stores (_userPath);
+		internal static string LocalMachinePath {
+			get {
+				if (_localMachinePath == null) {
+					_localMachinePath = Path.Combine (
+						Environment.GetFolderPath (Environment.SpecialFolder.CommonApplicationData),
+						".mono");
+					_localMachinePath = Path.Combine (_localMachinePath, "certs");
 				}
+				return _localMachinePath;
+			}
+		}
+
+		static public X509Stores CurrentUser {
+			get { 
+				if (_userStore == null)
+					_userStore = new X509Stores(CurrentUserPath);
+				
 				return _userStore;
 			}
 		}
 
 		static public X509Stores LocalMachine {
 			get {
-				if (_machineStore == null) {
-					string _machinePath = Path.Combine (
-						Environment.GetFolderPath (Environment.SpecialFolder.CommonApplicationData),
-						".mono");
-					_machinePath = Path.Combine (_machinePath, "certs");
+				if (_machineStore == null) 
+					_machineStore = new X509Stores (LocalMachinePath);
 
-					_machineStore = new X509Stores (_machinePath);
-				}
 				return _machineStore;
 			}
 		}
diff --git a/mcs/class/Mono.Simd/Mono.Simd/ChangeLog b/mcs/class/Mono.Simd/Mono.Simd/ChangeLog
index e508f04..3d5372f 100644
--- a/mcs/class/Mono.Simd/Mono.Simd/ChangeLog
+++ b/mcs/class/Mono.Simd/Mono.Simd/ChangeLog
@@ -1,3 +1,26 @@
+2011-01-10  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Implement a few conversion operations.
+
+	Add conversion operations between 4f, 2d and 4i. Implemented only
+	on x86 for now.
+
+2011-01-09  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Fix 64bits Shuffle/3 when simd intrinsics are disabled
+
+2011-01-06  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* VectorOperations.cs: Add new methods.
+
+2011-01-06  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Implement Shuffle/3
+
+2010-10-15  Marek Safar  <marek.safar at gmail.com>
+
+	Clean up few more warnings
+
 2010-03-24 Rodrigo Kumpera  <rkumpera at novell.com>
 
 	* Vector4f.cs: Add vector x scalar multiply.
diff --git a/mcs/class/Mono.Simd/Mono.Simd/ChangeLog b/mcs/class/Mono.Simd/Mono.Simd/ChangeLog.old
similarity index 100%
copy from mcs/class/Mono.Simd/Mono.Simd/ChangeLog
copy to mcs/class/Mono.Simd/Mono.Simd/ChangeLog.old
diff --git a/mcs/class/Mono.Simd/Mono.Simd/VectorOperations.cs b/mcs/class/Mono.Simd/Mono.Simd/VectorOperations.cs
index 19ca312..0886b07 100644
--- a/mcs/class/Mono.Simd/Mono.Simd/VectorOperations.cs
+++ b/mcs/class/Mono.Simd/Mono.Simd/VectorOperations.cs
@@ -61,6 +61,7 @@ namespace Mono.Simd
 		}
 
 		[Acceleration (AccelMode.SSE2)]
+		[CLSCompliant (false)]
 		public static unsafe Vector4ui ArithmeticRightShift (this Vector4ui v1, int amount)
 		{
 			Vector4ui res = new Vector4ui ();
@@ -72,6 +73,7 @@ namespace Mono.Simd
 		}
 
 		[Acceleration (AccelMode.SSE2)]
+		[CLSCompliant (false)]
 		public static unsafe Vector8us ArithmeticRightShift (this Vector8us va, int amount)
 		{
 			Vector8us res = new Vector8us ();
@@ -111,6 +113,7 @@ namespace Mono.Simd
 		}
 
 		[Acceleration (AccelMode.SSE2)]
+		[CLSCompliant (false)]
 		public static unsafe int ExtractByteMask (this Vector16sb va) {
 			int res = 0;
 			sbyte *a = (sbyte*)&va;
@@ -143,6 +146,7 @@ namespace Mono.Simd
 		}
 
 		[Acceleration (AccelMode.SSE2)]
+		[CLSCompliant (false)]
 		public static unsafe Vector8us AddWithSaturation (this Vector8us va, Vector8us vb) {
 			Vector8us res = new Vector8us ();
 			ushort *a = &va.v0;
@@ -154,6 +158,7 @@ namespace Mono.Simd
 		}
 
 		[Acceleration (AccelMode.SSE2)]
+		[CLSCompliant (false)]
 		public static unsafe Vector16sb AddWithSaturation (this Vector16sb va, Vector16sb vb) {
 			Vector16sb res = new Vector16sb ();
 			sbyte *a = &va.v0;
@@ -187,6 +192,7 @@ namespace Mono.Simd
 		}
 
 		[Acceleration (AccelMode.SSE2)]
+		[CLSCompliant (false)]
 		public static unsafe Vector8us SubtractWithSaturation (this Vector8us va, Vector8us vb) {
 			Vector8us res = new Vector8us ();
 			ushort *a = &va.v0;
@@ -198,6 +204,7 @@ namespace Mono.Simd
 		}
 
 		[Acceleration (AccelMode.SSE2)]
+		[CLSCompliant (false)]
 		public static unsafe Vector16sb SubtractWithSaturation (this Vector16sb va, Vector16sb vb) {
 			Vector16sb res = new Vector16sb ();
 			sbyte *a = &va.v0;
@@ -231,6 +238,7 @@ namespace Mono.Simd
 		}
 
 		[Acceleration (AccelMode.SSE2)]
+		[CLSCompliant (false)]
 		public static unsafe Vector8us MultiplyStoreHigh (this Vector8us va, Vector8us vb) {
 			Vector8us res = new Vector8us ();
 			ushort *a = &va.v0;
@@ -293,6 +301,7 @@ namespace Mono.Simd
 		}
 
 		[Acceleration (AccelMode.SSE2)]
+		[CLSCompliant (false)]
 		public static unsafe Vector8us Average (this Vector8us va, Vector8us vb) {
 			Vector8us res = new Vector8us ();
 			ushort *a = &va.v0;
@@ -337,6 +346,7 @@ namespace Mono.Simd
 		}
 
 		[Acceleration (AccelMode.SSE41)]
+		[CLSCompliant (false)]
 		public static Vector4ui Max (this Vector4ui v1, Vector4ui v2)
 		{
 			return new Vector4ui (System.Math.Max (v1.x, v2.x), System.Math.Max (v1.y, v2.y), System.Math.Max (v1.z, v2.z), System.Math.Max (v1.w, v2.w));
@@ -354,6 +364,7 @@ namespace Mono.Simd
 		}
 
 		[Acceleration (AccelMode.SSE41)]
+		[CLSCompliant (false)]
 		public static unsafe Vector8us Max (this Vector8us va, Vector8us vb) {
 			Vector8us res = new Vector8us ();
 			ushort *a = &va.v0;
@@ -374,6 +385,7 @@ namespace Mono.Simd
 		}
 
 		[Acceleration (AccelMode.SSE41)]
+		[CLSCompliant (false)]
 		public static unsafe Vector16sb Max (this Vector16sb va, Vector16sb vb) {
 			Vector16sb res = new Vector16sb ();
 			sbyte *a = &va.v0;
@@ -409,6 +421,7 @@ namespace Mono.Simd
 		}
 
 		[Acceleration (AccelMode.SSE41)]
+		[CLSCompliant (false)]
 		public static Vector4ui Min (this Vector4ui v1, Vector4ui v2)
 		{
 			return new Vector4ui (System.Math.Min (v1.x, v2.x), System.Math.Min (v1.y, v2.y), System.Math.Min (v1.z, v2.z), System.Math.Min (v1.w, v2.w));
@@ -426,6 +439,7 @@ namespace Mono.Simd
 		}
 
 		[Acceleration (AccelMode.SSE41)]
+		[CLSCompliant (false)]
 		public static unsafe Vector8us Min (this Vector8us va, Vector8us vb) {
 			Vector8us res = new Vector8us ();
 			ushort *a = &va.v0;
@@ -437,6 +451,7 @@ namespace Mono.Simd
 		}
 
 		[Acceleration (AccelMode.SSE41)]
+		[CLSCompliant (false)]
 		public static unsafe Vector16sb Min (this Vector16sb va, Vector16sb vb) {
 			Vector16sb res = new Vector16sb ();
 			sbyte *a = &va.v0;
@@ -529,6 +544,7 @@ namespace Mono.Simd
 		}
 
 		[Acceleration (AccelMode.SSE41)]
+		[CLSCompliant (false)]
 		public static Vector2ul CompareEqual (this Vector2ul v1, Vector2ul v2)
 		{
 			return new Vector2ul ((ulong)(v1.x ==  v2.x ? -1 : 0), (ulong)(v1.y ==  v2.y ? -1 : 0));
@@ -541,6 +557,7 @@ namespace Mono.Simd
 		}
 
 		[Acceleration (AccelMode.SSE2)]
+		[CLSCompliant (false)]
 		public static Vector4ui CompareEqual (this Vector4ui v1, Vector4ui v2)
 		{
 			return new Vector4ui ((uint)(v1.x ==  v2.x ? -1 : 0), (uint)(v1.y ==  v2.y ? -1 : 0), (uint)(v1.z ==  v2.z ? -1 : 0), (uint)(v1.w ==  v2.w ? -1 : 0));
@@ -558,6 +575,7 @@ namespace Mono.Simd
 		}
 
 		[Acceleration (AccelMode.SSE2)]
+		[CLSCompliant (false)]
 		public static unsafe Vector8us CompareEqual (this Vector8us va, Vector8us vb) {
 			Vector8us res = new Vector8us ();
 			ushort *a = &va.v0;
@@ -569,6 +587,7 @@ namespace Mono.Simd
 		}
 
 		[Acceleration (AccelMode.SSE2)]
+		[CLSCompliant (false)]
 		public static unsafe Vector16sb CompareEqual (this Vector16sb va, Vector16sb vb) {
 			Vector16sb res = new Vector16sb ();
 			sbyte *a = &va.v0;
@@ -662,6 +681,7 @@ namespace Mono.Simd
 		}
 
 		[Acceleration (AccelMode.SSE2)]
+		[CLSCompliant (false)]
 		public static unsafe Vector16sb CompareGreaterThan (this Vector16sb va, Vector16sb vb) {
 			Vector16sb res = new Vector16sb ();
 			sbyte *a = &va.v0;
@@ -844,6 +864,7 @@ namespace Mono.Simd
 		}
 
 		[Acceleration (AccelMode.SSE2)]
+		[CLSCompliant (false)]
 		public static Vector2ul UnpackLow (this Vector2ul v1, Vector2ul v2)
 		{
 			return new Vector2ul (v1.x, v2.x);
@@ -856,6 +877,7 @@ namespace Mono.Simd
 		}
 
 		[Acceleration (AccelMode.SSE2)]
+		[CLSCompliant (false)]
 		public static Vector4ui UnpackLow (this Vector4ui v1, Vector4ui v2)
 		{
 			return new Vector4ui (v1.x, v2.x, v1.y, v2.y);
@@ -868,12 +890,14 @@ namespace Mono.Simd
 		}
 
 		[Acceleration (AccelMode.SSE2)]
+		[CLSCompliant (false)]
 		public static unsafe Vector8us UnpackLow (this Vector8us va, Vector8us vb)
 		{
 			return new Vector8us (va.v0, vb.v0, va.v1, vb.v1, va.v2, vb.v2, va.v3, vb.v3);
 		}
 
 		[Acceleration (AccelMode.SSE2)]
+		[CLSCompliant (false)]
 		public static unsafe Vector16sb UnpackLow (this Vector16sb va, Vector16sb vb)
 		{
 			return new Vector16sb (va.v0, vb.v0, va.v1, vb.v1, va.v2, vb.v2, va.v3, vb.v3, va.v4, vb.v4, va.v5, vb.v5, va.v6, vb.v6, va.v7, vb.v7);
@@ -892,6 +916,7 @@ namespace Mono.Simd
 		}
 
 		[Acceleration (AccelMode.SSE2)]
+		[CLSCompliant (false)]
 		public static Vector2ul UnpackHigh (this Vector2ul v1, Vector2ul v2)
 		{
 			return new Vector2ul (v1.y, v2.y);
@@ -904,6 +929,7 @@ namespace Mono.Simd
 		}
 
 		[Acceleration (AccelMode.SSE2)]
+		[CLSCompliant (false)]
 		public static Vector4ui UnpackHigh (this Vector4ui v1, Vector4ui v2)
 		{
 			return new Vector4ui (v1.z, v2.z, v1.w, v2.w);
@@ -916,12 +942,14 @@ namespace Mono.Simd
 		}
 
 		[Acceleration (AccelMode.SSE2)]
+		[CLSCompliant (false)]
 		public static unsafe Vector8us UnpackHigh (this Vector8us va, Vector8us vb)
 		{
 			return new Vector8us (va.v4, vb.v4, va.v5, vb.v5, va.v6, vb.v6, va.v7, vb.v7);
 		}
 
 		[Acceleration (AccelMode.SSE2)]
+		[CLSCompliant (false)]
 		public static unsafe Vector16sb UnpackHigh (this Vector16sb va, Vector16sb vb)
 		{
 			return new Vector16sb (va.v8, vb.v8, va.v9, vb.v9, va.v10, vb.v10, va.v11, vb.v11, va.v12, vb.v12, va.v13, vb.v13, va.v14, vb.v14, va.v15, vb.v15);
@@ -934,6 +962,57 @@ namespace Mono.Simd
 		}
 
 		[Acceleration (AccelMode.SSE2)]
+		public static unsafe Vector4f Shuffle (this Vector4f v1, Vector4f v2, ShuffleSel sel)
+		{
+			float *p1 = (float*)&v1;
+			float *p2 = (float*)&v2;
+			int idx = (int)sel;
+			return new Vector4f (*(p1 + ((idx >> 0) & 0x3)), *(p1 + ((idx >> 2) & 0x3)), *(p2 + ((idx >> 4) & 0x3)), *(p2 + ((idx >> 6) & 0x3))); 
+		}
+
+		[Acceleration (AccelMode.SSE2)]
+		public static unsafe Vector4i Shuffle (this Vector4i v1, Vector4i v2, ShuffleSel sel)
+		{
+			int *p1 = (int*)&v1;
+			int *p2 = (int*)&v2;
+			int idx = (int)sel;
+			return new Vector4i (*(p1 + ((idx >> 0) & 0x3)), *(p1 + ((idx >> 2) & 0x3)), *(p2 + ((idx >> 4) & 0x3)), *(p2 + ((idx >> 6) & 0x3))); 
+		}
+
+		[Acceleration (AccelMode.SSE2)]
+		public static unsafe Vector4ui Shuffle (this Vector4ui v1, Vector4ui v2, ShuffleSel sel)
+		{
+			uint *p1 = (uint*)&v1;
+			uint *p2 = (uint*)&v2;
+			int idx = (int)sel;
+			return new Vector4ui (*(p1 + ((idx >> 0) & 0x3)), *(p1 + ((idx >> 2) & 0x3)), *(p2 + ((idx >> 4) & 0x3)), *(p2 + ((idx >> 6) & 0x3))); 
+		}
+
+		[Acceleration (AccelMode.SSE2)]
+		public static unsafe Vector2d Shuffle (this Vector2d v1, Vector2d v2, int sel)
+		{
+			double *p1 = (double*)&v1;
+			double *p2 = (double*)&v2;
+			return new Vector2d (*(p1 + ((sel >> 0) & 0x1)), *(p2 + ((sel >> 1) & 0x1))); 
+		}
+
+		[Acceleration (AccelMode.SSE2)]
+		public static unsafe Vector2l Shuffle (this Vector2l v1, Vector2l v2, int sel)
+		{
+			long *p1 = (long*)&v1;
+			long *p2 = (long*)&v2;
+			return new Vector2l (*(p1 + ((sel >> 0) & 0x1)), *(p2 + ((sel >> 1) & 0x1)));
+		}
+
+		[Acceleration (AccelMode.SSE2)]
+		public static unsafe Vector2ul Shuffle (this Vector2ul v1, Vector2ul v2, int sel)
+		{
+			ulong *p1 = (ulong*)&v1;
+			ulong *p2 = (ulong*)&v2;
+			return new Vector2ul (*(p1 + ((sel >> 0) & 0x1)), *(p2 + ((sel >> 1) & 0x1))); 
+		}
+
+		[Acceleration (AccelMode.SSE2)]
 		public static unsafe Vector4f Shuffle (this Vector4f v1, ShuffleSel sel)
 		{
 			float *ptr = (float*)&v1;
@@ -950,6 +1029,7 @@ namespace Mono.Simd
 		}
 
 		[Acceleration (AccelMode.SSE2)]
+		[CLSCompliant (false)]
 		public static unsafe Vector4ui Shuffle (this Vector4ui v1, ShuffleSel sel)
 		{
 			uint *ptr = (uint*)&v1;
@@ -966,6 +1046,7 @@ namespace Mono.Simd
 		}
 
 		[Acceleration (AccelMode.SSE2)]
+		[CLSCompliant (false)]
 		public static unsafe Vector8us ShuffleHigh (this Vector8us va, ShuffleSel sel)
 		{
 			ushort *ptr = ((ushort*)&va) + 4;
@@ -982,6 +1063,7 @@ namespace Mono.Simd
 		}
 
 		[Acceleration (AccelMode.SSE2)]
+		[CLSCompliant (false)]
 		public static unsafe Vector8us ShuffleLow (this Vector8us va, ShuffleSel sel)
 		{
 			ushort *ptr = ((ushort*)&va);
@@ -1046,6 +1128,7 @@ namespace Mono.Simd
 
 		/* This function performs a packusdw, which treats the source as a signed value */
 		[Acceleration (AccelMode.SSE41)]
+		[CLSCompliant (false)]
 		public static unsafe Vector8us SignedPackWithUnsignedSaturation (this Vector4ui va, Vector4ui vb) {
 			Vector8us res = new Vector8us ();
 			int *a = (int*)&va;
@@ -1060,6 +1143,7 @@ namespace Mono.Simd
 
 		/*This function performs a packuswb, which treats the source as a signed value */
 		[Acceleration (AccelMode.SSE2)]
+		[CLSCompliant (false)]
 		public static unsafe Vector16b SignedPackWithUnsignedSaturation (this Vector8us va, Vector8us vb) {
 			Vector16b res = new Vector16b ();
 			short *a = (short*)&va;
@@ -1074,6 +1158,7 @@ namespace Mono.Simd
 		
 		/* This function performs a packssdw, which treats the source as a signed value*/
 		[Acceleration (AccelMode.SSE2)]
+		[CLSCompliant (false)]
 		public static unsafe Vector8s SignedPackWithSignedSaturation (this Vector4ui va, Vector4ui vb) {
 			Vector8s res = new Vector8s ();
 			int *a = (int*)&va;
@@ -1088,6 +1173,7 @@ namespace Mono.Simd
 
 		/*This function performs a packsswb, which treats the source as a signed value */
 		[Acceleration (AccelMode.SSE2)]
+		[CLSCompliant (false)]
 		public static unsafe Vector16sb SignedPackWithSignedSaturation (this Vector8us va, Vector8us vb) {
 			Vector16sb res = new Vector16sb ();
 			short *a = (short*)&va;
@@ -1099,5 +1185,45 @@ namespace Mono.Simd
 				*c++ = (sbyte)System.Math.Max (System.Math.Min ((int)*b++, sbyte.MaxValue), sbyte.MinValue);
 			return res;
 		}
+
+		[Acceleration (AccelMode.SSE2)]
+		public static unsafe Vector4f ConvertToFloat (this Vector4i v0) {
+			return new Vector4f (v0.X, v0.Y, v0.Z, v0.W);
+		}
+
+		[Acceleration (AccelMode.SSE2)]
+		public static unsafe Vector2d ConvertToDouble (this Vector4i v0) {
+			return new Vector2d (v0.X, v0.Y);
+		}
+
+		[Acceleration (AccelMode.SSE2)]
+		public static unsafe Vector4i ConvertToInt (this Vector2d v0) {
+			return new Vector4i ((int)System.Math.Round (v0.X), (int)System.Math.Round (v0.Y), 0, 0);
+		}
+
+		[Acceleration (AccelMode.SSE2)]
+		public static unsafe Vector4i ConvertToIntTruncated (this Vector2d v0) {
+			return new Vector4i ((int) (v0.X), (int) (v0.Y), 0, 0);
+		}
+
+		[Acceleration (AccelMode.SSE2)]
+		public static unsafe Vector4f ConvertToFloat (this Vector2d v0) {
+			return new Vector4f ((float)v0.X, (float)v0.Y, 0, 0);
+		}
+
+		[Acceleration (AccelMode.SSE2)]
+		public static unsafe Vector4i ConvertToInt (this Vector4f v0) {
+			return new Vector4i ((int)System.Math.Round (v0.X), (int)System.Math.Round (v0.Y), (int)System.Math.Round (v0.Z), (int)System.Math.Round (v0.W));
+		}
+
+		[Acceleration (AccelMode.SSE2)]
+		public static unsafe Vector4i ConvertToIntTruncated (this Vector4f v0) {
+			return new Vector4i ((int)v0.X, (int)v0.Y, (int)v0.Z, (int)v0.W);
+		}
+
+		[Acceleration (AccelMode.SSE2)]
+		public static unsafe Vector2d ConvertToDouble (this Vector4f v0) {
+			return new Vector2d (v0.X, v0.Y);
+		}
 	}
 }
diff --git a/mcs/class/Mono.WebBrowser/ChangeLog b/mcs/class/Mono.WebBrowser/ChangeLog
index 04d3e92..7999e9a 100644
--- a/mcs/class/Mono.WebBrowser/ChangeLog
+++ b/mcs/class/Mono.WebBrowser/ChangeLog
@@ -1,3 +1,8 @@
+2010-12-12  Bojan Rajkovic  <bojan at airpoweranalytics.com>
+
+	Update build-csproj2k5 script to use /bin/sh, since there are no
+	obvious bash-isms in the script.
+
 2008-11-23  Andreia Gaita <shana at jitted.com>
 
 	* Mono.Mozilla/Callback.cs: Catch redirecting and update url accordingly. 
diff --git a/mcs/class/Mono.WebBrowser/ChangeLog b/mcs/class/Mono.WebBrowser/ChangeLog.old
similarity index 100%
copy from mcs/class/Mono.WebBrowser/ChangeLog
copy to mcs/class/Mono.WebBrowser/ChangeLog.old
diff --git a/mcs/class/Mono.WebBrowser/build-csproj2k5 b/mcs/class/Mono.WebBrowser/build-csproj2k5
index 6d9973b..9e7a613 100755
--- a/mcs/class/Mono.WebBrowser/build-csproj2k5
+++ b/mcs/class/Mono.WebBrowser/build-csproj2k5
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
 #
 # This script will generate SWF.cs.target from our System.Windows.Forms.dll.sources
 #
diff --git a/mcs/class/PEAPI/ChangeLog b/mcs/class/PEAPI/ChangeLog
index bcc5824..7bbc7ff 100644
--- a/mcs/class/PEAPI/ChangeLog
+++ b/mcs/class/PEAPI/ChangeLog
@@ -1,3 +1,7 @@
+2010-12-02  Jb Evain  <jbevain at gmail.com>
+
+	[ilasm] fix the metadata version for v4 assemblies
+
 2009-03-31  Rodrigo Kumpera  <rkumpera at novell.com>
 
 	* Code.cs (CILLabel): Add new constructor to signal that
diff --git a/mcs/class/PEAPI/ChangeLog b/mcs/class/PEAPI/ChangeLog.old
similarity index 100%
copy from mcs/class/PEAPI/ChangeLog
copy to mcs/class/PEAPI/ChangeLog.old
diff --git a/mcs/class/PEAPI/Metadata.cs b/mcs/class/PEAPI/Metadata.cs
index 49ed4dc..e67f296 100644
--- a/mcs/class/PEAPI/Metadata.cs
+++ b/mcs/class/PEAPI/Metadata.cs
@@ -4934,7 +4934,9 @@ namespace PEAPI {
 		private static readonly uint max3BitSmlIx = 0x1FFF;
 		private static readonly uint max5BitSmlIx = 0x7FF;
 		// NOTE: version and stream name strings MUST always be quad padded
-#if NET_2_0 || BOOTSTRAP_NET_2_0
+#if NET_4_0
+		private static readonly string version = "v4.0.30319\0\0";
+#elif NET_2_0
 		private static readonly string version = "v2.0.50727\0\0";
 #else
 		private static readonly string version = "v1.1.4322\0\0\0";
@@ -5343,7 +5345,7 @@ namespace PEAPI {
 		{
 			long startTilde = output.Seek(0,SeekOrigin.Current);
 			output.Write((uint)0); // Reserved
-#if NET_2_0 || BOOTSTRAP_NET_2_0
+#if NET_2_0
 			output.Write((byte)2); // MajorVersion
 			output.Write((byte)0); // MinorVersion
 #else
@@ -5398,7 +5400,7 @@ namespace PEAPI {
 			BuildTable(metaDataTables[(int)MDTable.TypeDef]);
 			BuildTable(metaDataTables[(int)MDTable.TypeSpec]);
 			BuildTable(metaDataTables[(int)MDTable.MemberRef]);
-#if NET_2_0 || BOOTSTRAP_NET_2_0
+#if NET_2_0
 			BuildTable(metaDataTables[(int)MDTable.GenericParam]);
 			BuildTable(metaDataTables[(int)MDTable.MethodSpec]);
 			BuildTable(metaDataTables[(int)MDTable.GenericParamConstraint]);
@@ -5447,7 +5449,7 @@ namespace PEAPI {
 			SortTable(metaDataTables[(int)MDTable.DeclSecurity]);
 			SortTable(metaDataTables[(int)MDTable.MethodSemantics]);
 			SortTable(metaDataTables[(int)MDTable.ImplMap]);
-#if NET_2_0 || BOOTSTRAP_NET_2_0
+#if NET_2_0
 			if (metaDataTables[(int)MDTable.GenericParam] != null) {
 				SortTable(metaDataTables[(int)MDTable.GenericParam]);
 				// Now add GenericParamConstraints
diff --git a/mcs/class/RabbitMQ.Client/ChangeLog b/mcs/class/RabbitMQ.Client/ChangeLog
index 9969467..008b327 100644
--- a/mcs/class/RabbitMQ.Client/ChangeLog
+++ b/mcs/class/RabbitMQ.Client/ChangeLog
@@ -1,3 +1,7 @@
+2010-10-15  Marek Safar  <marek.safar at gmail.com>
+
+	Clean up few more warnings
+
 2010-07-09  Andrew Jorgensen  <ajorgensen at novell.com>
 
 	* Makefile: Fix make dist again (IntAllocator.cs)
diff --git a/mcs/class/RabbitMQ.Client/ChangeLog b/mcs/class/RabbitMQ.Client/ChangeLog.old
similarity index 100%
copy from mcs/class/RabbitMQ.Client/ChangeLog
copy to mcs/class/RabbitMQ.Client/ChangeLog.old
diff --git a/mcs/class/RabbitMQ.Client/src/client/AssemblyInfo.cs b/mcs/class/RabbitMQ.Client/src/client/AssemblyInfo.cs
index c275f21..e575e78 100644
--- a/mcs/class/RabbitMQ.Client/src/client/AssemblyInfo.cs
+++ b/mcs/class/RabbitMQ.Client/src/client/AssemblyInfo.cs
@@ -53,19 +53,9 @@ using System.Runtime.InteropServices;
 
 [assembly: ComVisible (false)]
 
-[assembly: CLSCompliant (true)]
+//[assembly: CLSCompliant (true)]
 [assembly: AssemblyDelaySign (true)]
 [assembly: AssemblyKeyFile("../../../msfinal.pub")]
 
-#if NET_2_0
-	[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
-	[assembly: CompilationRelaxations (CompilationRelaxations.NoStringInterning)]
-	[assembly: Debuggable (DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
-	[assembly: RuntimeCompatibility (WrapNonExceptionThrows = true)]
-#elif NET_1_1
-	[assembly: AssemblyTrademark ("")]
-	[assembly: AssemblyConfiguration ("")]
-#elif NET_1_0
-	[assembly: AssemblyTrademark ("")]
-	[assembly: AssemblyConfiguration ("")]
-#endif
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: CompilationRelaxations (CompilationRelaxations.NoStringInterning)]
diff --git a/mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations/ChangeLog b/mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations/ChangeLog
index 59552de..6bf2343 100644
--- a/mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations/ChangeLog
+++ b/mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations/ChangeLog
@@ -1,3 +1,16 @@
+2011-01-13  Marek Habersack  <grendel at twistedcode.net>
+
+	[data-annotations] Added some missing 4.0 members
+
+2010-12-10  Marek Safar  <marek.safar at gmail.com>
+
+	Base constructor method calls have to be static
+
+2010-10-25  Pablo Ruiz Garcia  <pablo.ruiz at gmail.com>
+
+	[API] Fix for bug:
+	https://bugzilla.novell.com/show_bug.cgi?id=648888
+
 2010-08-21  Marek Habersack  <grendel at twistedcode.net>
 
 	Implemented the StringLengthAttribute
diff --git a/mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations/DataType.cs b/mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations/DataType.cs
index 461a089..2385e15 100644
--- a/mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations/DataType.cs
+++ b/mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations/DataType.cs
@@ -4,7 +4,7 @@
 // Author:
 //	Atsushi Enomoto <atsushi at ximian.com>
 //
-// Copyright (C) 2008 Novell Inc. http://novell.com
+// Copyright (C) 2008-2011 Novell Inc. http://novell.com
 //
 
 //
@@ -44,6 +44,9 @@ namespace System.ComponentModel.DataAnnotations
 		MultilineText,
 		EmailAddress,
 		Password,
-		Url
+		Url,
+#if NET_4_0
+		ImageUrl
+#endif
 	}
 }
diff --git a/mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations/DataTypeAttribute.cs b/mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations/DataTypeAttribute.cs
index edf06cf..cfc7225 100644
--- a/mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations/DataTypeAttribute.cs
+++ b/mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations/DataTypeAttribute.cs
@@ -74,10 +74,11 @@ namespace System.ComponentModel.DataAnnotations
 			return dt.ToString ();
 		}
 
-		[MonoTODO]
 		public override bool IsValid (object value)
 		{
-			throw new NotImplementedException ();
+			// Returns alwasy true 	
+			// See: http://msdn.microsoft.com/en-us/library/cc679235.aspx
+			return true;
 		}
 	}
 }
diff --git a/mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations/DisplayFormatAttribute.cs b/mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations/DisplayFormatAttribute.cs
index 33f274c..4c48a83 100644
--- a/mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations/DisplayFormatAttribute.cs
+++ b/mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations/DisplayFormatAttribute.cs
@@ -39,5 +39,8 @@ namespace System.ComponentModel.DataAnnotations
 		public bool ConvertEmptyStringToNull { get; set; }
 		public string DataFormatString { get; set; }
 		public string NullDisplayText { get; set; }
+#if NET_4_0
+		public bool HtmlEncode { get; set; }
+#endif
 	}
 }
diff --git a/mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations/RangeAttribute.cs b/mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations/RangeAttribute.cs
index dd0244d..0ae1fca 100644
--- a/mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations/RangeAttribute.cs
+++ b/mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations/RangeAttribute.cs
@@ -83,7 +83,7 @@ namespace System.ComponentModel.DataAnnotations
 #endif
 		}
 
-		string GetDefaultErrorMessage ()
+		static string GetDefaultErrorMessage ()
 		{
 			return "The field {0} must be between {1} and {2}.";
 		}
@@ -140,8 +140,8 @@ namespace System.ComponentModel.DataAnnotations
 				throw new InvalidOperationException ("The OperandType must be set when strings are used for minimum and maximum values.");
 			
 			if (!typeof(IComparable).IsAssignableFrom (ot)) {
-				string message = String.Format ("The type {0} must implement System.IComparable", ot.FullName);
 #if NET_4_0
+				string message = String.Format ("The type {0} must implement System.IComparable", ot.FullName);
 				throw new InvalidOperationException (message);
 #else
 				throw new ArgumentException ("object");
diff --git a/mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations/StringLengthAttribute.cs b/mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations/StringLengthAttribute.cs
index f6b2ae1..2a1f9d4 100644
--- a/mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations/StringLengthAttribute.cs
+++ b/mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations/StringLengthAttribute.cs
@@ -50,7 +50,7 @@ namespace System.ComponentModel.DataAnnotations
 			MaximumLength = maximumLength;
 		}
 
-		string GetDefaultErrorMessage ()
+		static string GetDefaultErrorMessage ()
 		{
 			return "The field {0} must be a string with a maximum length of {1}.";
 		}
diff --git a/mcs/class/System.Configuration/ChangeLog b/mcs/class/System.Configuration/ChangeLog
index 03c2dac..4f66aec 100644
--- a/mcs/class/System.Configuration/ChangeLog
+++ b/mcs/class/System.Configuration/ChangeLog
@@ -1,3 +1,7 @@
+2010-12-29  Marek Safar  <marek.safar at gmail.com>
+
+	Remove no longer used bootstrap profiles
+
 2009-07-14  Marek Habersack  <mhabersack at novell.com>
 
 	* System.Configuration.dll.sources: added
diff --git a/mcs/class/System.Configuration/ChangeLog b/mcs/class/System.Configuration/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Configuration/ChangeLog
copy to mcs/class/System.Configuration/ChangeLog.old
diff --git a/mcs/class/System.Configuration/Makefile b/mcs/class/System.Configuration/Makefile
index c85675d..a6a6439 100644
--- a/mcs/class/System.Configuration/Makefile
+++ b/mcs/class/System.Configuration/Makefile
@@ -9,7 +9,7 @@ LIB_MCS_FLAGS = -r:$(corlib) -r:System.dll -r:System.Xml.dll -r:System.Security.
 TEST_MCS_FLAGS = $(LIB_MCS_FLAGS)
 
 # This is a .NET 2.0+ only assembly
-VALID_PROFILE := $(filter net_2_0_bootstrap net_2_0 net_4_0_bootstrap net_4_0, $(PROFILE))
+VALID_PROFILE := $(filter net_2_0 net_4_0_bootstrap net_4_0, $(PROFILE))
 ifndef VALID_PROFILE
 LIBRARY_NAME = dummy-System.Configuration.dll
 NO_INSTALL = yes
diff --git a/mcs/class/System.Configuration/System.Configuration/ChangeLog b/mcs/class/System.Configuration/System.Configuration/ChangeLog
index c4f69c9..7d6a1e2 100644
--- a/mcs/class/System.Configuration/System.Configuration/ChangeLog
+++ b/mcs/class/System.Configuration/System.Configuration/ChangeLog
@@ -1,3 +1,14 @@
+2010-12-14  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Fix for bug #467221. Properly match location sub-paths
+	for security trimming
+
+	When security trimming is requested for sub-path of a location
+	specified in the config file, make sure that we match such a
+	request to its parent location.
+
+	Based on patch from Mike Morano <mmorano at mikeandwan.us>, thanks!
+
 2010-10-04  Marek Habersack  <grendel at twistedcode.net>
 
 	[configuration] Part of fix for bug #579837.
diff --git a/mcs/class/System.Configuration/System.Configuration/Configuration.cs b/mcs/class/System.Configuration/System.Configuration/Configuration.cs
index b8a3df7..6f80617 100644
--- a/mcs/class/System.Configuration/System.Configuration/Configuration.cs
+++ b/mcs/class/System.Configuration/System.Configuration/Configuration.cs
@@ -100,7 +100,7 @@ namespace System.Configuration {
 			if (relativePath.StartsWith (relConfigPath, StringComparison.Ordinal))
 				relativePath = relativePath.Substring (relConfigPath.Length);
 
-			ConfigurationLocation loc = Locations.Find (relativePath);
+			ConfigurationLocation loc = Locations.FindBest (relativePath);
 			if (loc == null)
 				return parentConfig;
 			
diff --git a/mcs/class/System.Configuration/System.Configuration/ConfigurationLocation.cs b/mcs/class/System.Configuration/System.Configuration/ConfigurationLocation.cs
index f796569..e966900 100644
--- a/mcs/class/System.Configuration/System.Configuration/ConfigurationLocation.cs
+++ b/mcs/class/System.Configuration/System.Configuration/ConfigurationLocation.cs
@@ -107,6 +107,9 @@ namespace System.Configuration {
 		
 		internal void SetParentConfiguration (Configuration parent)
 		{
+			if (parentResolved)
+				return;
+
 			parentResolved = true;
 			this.parent = parent;
 			if (configuration != null)
diff --git a/mcs/class/System.Configuration/System.Configuration/ConfigurationLocationCollection.cs b/mcs/class/System.Configuration/System.Configuration/ConfigurationLocationCollection.cs
index c5a439b..3a68ae6 100644
--- a/mcs/class/System.Configuration/System.Configuration/ConfigurationLocationCollection.cs
+++ b/mcs/class/System.Configuration/System.Configuration/ConfigurationLocationCollection.cs
@@ -54,7 +54,42 @@ namespace System.Configuration {
 					return loc;
 			return null;
 		}
+
+		internal ConfigurationLocation FindBest (string location)
+		{
+			if(String.IsNullOrEmpty (location))
+				return null;
+			
+			ConfigurationLocation bestMatch = null;
+			int locationlen = location.Length;
+			int bestmatchlen = 0;
+			
+			foreach (ConfigurationLocation loc in InnerList) {
+				string lpath = loc.Path;
+				if (String.IsNullOrEmpty (lpath))
+					continue;
+				
+				int lpathlen = lpath.Length;
+				if (location.StartsWith (lpath, StringComparison.OrdinalIgnoreCase)) {
+					// Exact match always takes precedence
+					if (locationlen == lpathlen)
+						return loc;
+					
+					// ensure path based comparisons consider full directory names (i.e. so 'admin' does not match an 'administration' path)
+					if(locationlen > lpathlen && location [lpathlen] != '/')
+						continue;
+
+					if(bestMatch == null)
+						bestMatch = loc;
+					else if (bestmatchlen < lpathlen) {
+						bestMatch = loc;
+						bestmatchlen = lpathlen;
+					}
+				}
+			}
+
+			return bestMatch;
+		}
 	}
 }
-
 #endif
diff --git a/mcs/class/System.Configuration/Test/System.Configuration/ChangeLog b/mcs/class/System.Configuration/Test/System.Configuration/ChangeLog
index 0381f79..3804985 100644
--- a/mcs/class/System.Configuration/Test/System.Configuration/ChangeLog
+++ b/mcs/class/System.Configuration/Test/System.Configuration/ChangeLog
@@ -1,3 +1,13 @@
+2010-12-17  Jonathan Pobst  <monkey at jpobst.com>
+
+	Reverse #elif check since 4.0 profile defines NET_2_0. Fixes
+	broken test.
+
+2010-12-16  Jonathan Pobst  <monkey at jpobst.com>
+
+	Fix some broken tests that check for assembly version 2.0.0.0 on
+	the 4.0 profile.
+
 2010-01-15 Jonathan Pobst  <monkey at jpobst.com>
 
 	* ConfigurationErrorsExceptionTest.cs: Mark 4 failing tests as NotWorking.
diff --git a/mcs/class/System.Configuration/Test/System.Configuration/ChangeLog b/mcs/class/System.Configuration/Test/System.Configuration/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Configuration/Test/System.Configuration/ChangeLog
copy to mcs/class/System.Configuration/Test/System.Configuration/ChangeLog.old
diff --git a/mcs/class/System.Configuration/Test/System.Configuration/ConfigurationManagerTest.cs b/mcs/class/System.Configuration/Test/System.Configuration/ConfigurationManagerTest.cs
index dafab36..abe9fdc 100644
--- a/mcs/class/System.Configuration/Test/System.Configuration/ConfigurationManagerTest.cs
+++ b/mcs/class/System.Configuration/Test/System.Configuration/ConfigurationManagerTest.cs
@@ -28,8 +28,6 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if NET_2_0
-
 using System;
 using System.Collections;
 using System.Collections.Specialized;
@@ -147,6 +145,8 @@ namespace MonoTests.System.Configuration {
 			FileInfo fi = new FileInfo (config.FilePath);
 #if TARGET_JVM
 			Assert.AreEqual ("nunit-console.jar.config", fi.Name);
+#elif NET_4_0
+			Assert.AreEqual ("System.Configuration_test_net_4_0.dll.config", fi.Name);
 #else
 			Assert.AreEqual ("System.Configuration_test_net_2_0.dll.config", fi.Name);
 #endif
@@ -492,5 +492,3 @@ namespace MonoTests.System.Configuration {
 		}
 	}
 }
-
-#endif
diff --git a/mcs/class/System.Configuration/Test/System.Configuration/ConfigurationPermissionTest.cs b/mcs/class/System.Configuration/Test/System.Configuration/ConfigurationPermissionTest.cs
index 5f99446..3ba5d99 100644
--- a/mcs/class/System.Configuration/Test/System.Configuration/ConfigurationPermissionTest.cs
+++ b/mcs/class/System.Configuration/Test/System.Configuration/ConfigurationPermissionTest.cs
@@ -27,7 +27,6 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if NET_2_0
 
 using System;
 using System.Configuration;
@@ -153,18 +152,28 @@ namespace MonoTests.System.Configuration {
 		{
 			ConfigurationPermission p = new ConfigurationPermission (PermissionState.Unrestricted);
 
+#if NET_4_0
 			Assert.AreEqual(
-					"<IPermission class=\"System.Configuration.ConfigurationPermission, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\"\nversion=\"1\"\nUnrestricted=\"true\"/>\n",
+					"<IPermission class=\"System.Configuration.ConfigurationPermission, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\"\nversion=\"1\"\nUnrestricted=\"true\"/>\n",
 					p.ToString().Replace ("\r\n", "\n"), "A1");
-
+#else
+			Assert.AreEqual (
+					"<IPermission class=\"System.Configuration.ConfigurationPermission, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\"\nversion=\"1\"\nUnrestricted=\"true\"/>\n",
+					p.ToString ().Replace ("\r\n", "\n"), "A1");
+#endif
 
 			p = new ConfigurationPermission (PermissionState.None);
 
+#if NET_4_0
 			Assert.AreEqual (
-					 "<IPermission class=\"System.Configuration.ConfigurationPermission, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\"\nversion=\"1\"/>\n",
+					 "<IPermission class=\"System.Configuration.ConfigurationPermission, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\"\nversion=\"1\"/>\n",
 					 p.ToString().Replace ("\r\n", "\n"), "A2");
+#else
+			Assert.AreEqual (
+					 "<IPermission class=\"System.Configuration.ConfigurationPermission, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\"\nversion=\"1\"/>\n",
+					 p.ToString ().Replace ("\r\n", "\n"), "A2");
+#endif
 		}
 	}
 }
 
-#endif
diff --git a/mcs/class/System.Core/Assembly/AssemblyInfo.cs b/mcs/class/System.Core/Assembly/AssemblyInfo.cs
index d2adf2c..79c719c 100644
--- a/mcs/class/System.Core/Assembly/AssemblyInfo.cs
+++ b/mcs/class/System.Core/Assembly/AssemblyInfo.cs
@@ -74,7 +74,7 @@ using System.Runtime.InteropServices;
 
 [assembly: SecurityPermission (SecurityAction.RequestMinimum, SkipVerification = true)]
 
-#if NET_4_0
+#if NET_4_0 || MOONLIGHT
 [assembly: TypeForwardedTo (typeof (System.Security.Cryptography.Aes))]
 #endif
 
diff --git a/mcs/class/System.Core/Assembly/ChangeLog b/mcs/class/System.Core/Assembly/ChangeLog
index 640ce64..1ca0ed1 100644
--- a/mcs/class/System.Core/Assembly/ChangeLog
+++ b/mcs/class/System.Core/Assembly/ChangeLog
@@ -1,3 +1,7 @@
+2010-12-14  Jeffrey Stedfast  <fejj at gnome.org>
+
+	Add TypeForwardedTo for Aes on MOONLIGHT and BOOTSTRAP_NET_4_0
+
 2010-03-18  Sebastien Pouliot  <sebastien at ximian.com>
 
 	* AssemblyInfo.cs: Add TypeForwardTo for Aes on NET_4_0
diff --git a/mcs/class/System.Core/Assembly/ChangeLog b/mcs/class/System.Core/Assembly/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Core/Assembly/ChangeLog
copy to mcs/class/System.Core/Assembly/ChangeLog.old
diff --git a/mcs/class/System.Core/ChangeLog b/mcs/class/System.Core/ChangeLog
index ca57254..640e60e 100644
--- a/mcs/class/System.Core/ChangeLog
+++ b/mcs/class/System.Core/ChangeLog
@@ -1,3 +1,69 @@
+2011-01-07  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Directly use ConcurrentDictionary with PLinq set operations
+
+2010-12-29  Marek Safar  <marek.safar at gmail.com>
+
+	Remove no longer used bootstrap profiles
+
+2010-12-16  Jonathan Pryor  <jonpryor at vt.edu>
+
+	[monodroid] Add support for the Android TimeZone file format.
+
+	Fixes #657609.
+
+	Android uses "ye standard" timezone file format, but instead of
+	using a directory + file structure as libc uses, they throw
+	everything into two files, a "zoneinfo.dat" and a "zoneinfo.idx",
+	where "zoneinfo.dat" is the concatenation of all the TZIF files
+	and "zoneinfo.idx" contains the timezone names and offsets into
+	"zoneinfo.dat". From the ZoneInfoDB documentation:
+
+	However, to conserve disk space the data for all time zones are
+	concatenated into a single file, and a second file is used to
+	indicate the starting position of each time zone record. A third
+	file indicates the version of the zoneinfo databse used to
+	generate the data.
+
+	TimeZoneInfo.Android.cs is a C# port of the corresponding Android
+	ZoneInfoDB type so that Mono can use Android's timezone DB.
+
+2010-12-16  Marek Safar  <marek.safar at gmail.com>
+
+	Switch to single mcs compiler for all managed code build
+
+2010-12-15  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Sys.Core parameters fixup
+
+2010-11-02  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Add TaskExtensions class and Unwrap extension methods
+
+2010-10-13  Jb Evain  <jbevain at gmail.com>
+
+	Add support for hoisted variables in the ET interpreter
+
+	This fixes #645765.
+
+2010-09-09  Jb Evain  <jbevain at gmail.com>
+
+	Fix System.Core usage of bootstrap .sources from the normal
+	.sources
+
+2010-09-08  Jb Evain  <jbevain at gmail.com>
+
+	Factorize the System.Core monotouch and monodroid sources into a
+	mobile.sources
+
+2010-09-08  Jb Evain  <jbevain at gmail.com>
+
+	Enable the System.Core build for monodroid
+
+2010-09-01  Jb Evain  <jbevain at gmail.com>
+
+	Fix the System.Core build for the monotouch profile
+
 2010-09-01  Jérémie Laval  <jeremie.laval at gmail.com>
 
 	Split ReaderWriterLockSlim helper classes into their own files
diff --git a/mcs/class/System.Core/Makefile b/mcs/class/System.Core/Makefile
index dfb4322..ffc843a 100644
--- a/mcs/class/System.Core/Makefile
+++ b/mcs/class/System.Core/Makefile
@@ -4,7 +4,7 @@ include ../../build/rules.make
 
 LIBRARY = System.Core.dll
 
-LIB_MCS_FLAGS = -d:INSIDE_SYSCORE -d:LIBC /r:$(corlib) /r:System
+LIB_MCS_FLAGS = -d:INSIDE_SYSCORE -d:LIBC /r:$(corlib) /r:System.dll
 
 ifneq (2.1, $(FRAMEWORK_VERSION))
 LIB_MCS_FLAGS += -d:NET_3_5 -nowarn:1720
@@ -18,17 +18,12 @@ ifeq (4.0, $(FRAMEWORK_VERSION))
 LIB_MCS_FLAGS += -d:CODEPLEX_40
 endif
 
-FULL_PROFILE := $(filter net_2_0 net_4_0 moonlight_raw monotouch, $(PROFILE))
-ifdef FULL_PROFILE
-LIBRARY_COMPILE = $(BOOT_COMPILE)
-endif
-
 ifneq (basic, $(PROFILE))
 CLR_PROFILE := $(filter 2.0 4.0, $(FRAMEWORK_VERSION))
 endif
 
 ifdef CLR_PROFILE
-LIB_MCS_FLAGS += -r:../lib/$(PROFILE)/Mono.Posix -unsafe
+LIB_MCS_FLAGS += -r:Mono.Posix.dll -unsafe
 endif
 
 TEST_MCS_FLAGS = $(LIB_MCS_FLAGS)
diff --git a/mcs/class/System.Core/System.Collections.Generic/ChangeLog b/mcs/class/System.Core/System.Collections.Generic/ChangeLog
index fb84c76..e675eb2 100644
--- a/mcs/class/System.Core/System.Collections.Generic/ChangeLog
+++ b/mcs/class/System.Core/System.Collections.Generic/ChangeLog
@@ -1,3 +1,15 @@
+2010-12-15  Marek Safar  <marek.safar at gmail.com>
+
+	Some .net 4.0 api compatibility fixes
+
+2010-12-09  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Implement CreateSetComparer method in HashSet
+
+2010-10-15  Marek Safar  <marek.safar at gmail.com>
+
+	Clean up few more warnings
+
 2010-08-19  Jb Evain  <jbevain at gmail.com>
 
 	[Fix] HashSet: fix different sets operations. Fixes #572084
diff --git a/mcs/class/System.Core/System.Collections.Generic/HashSet.cs b/mcs/class/System.Core/System.Collections.Generic/HashSet.cs
index c31134f..579a154 100644
--- a/mcs/class/System.Core/System.Collections.Generic/HashSet.cs
+++ b/mcs/class/System.Core/System.Collections.Generic/HashSet.cs
@@ -176,26 +176,26 @@ namespace System.Collections.Generic {
 		{
 			CopyTo (array, 0, count);
 		}
-
-		public void CopyTo (T [] array, int index)
+		
+		public void CopyTo (T [] array, int arrayIndex)
 		{
-			CopyTo (array, index, count);
+			CopyTo (array, arrayIndex, count);
 		}
 
-		public void CopyTo (T [] array, int index, int count)
+		public void CopyTo (T [] array, int arrayIndex, int count)
 		{
 			if (array == null)
 				throw new ArgumentNullException ("array");
-			if (index < 0)
-				throw new ArgumentOutOfRangeException ("index");
-			if (index > array.Length)
+			if (arrayIndex < 0)
+				throw new ArgumentOutOfRangeException ("arrayIndex");
+			if (arrayIndex > array.Length)
 				throw new ArgumentException ("index larger than largest valid index of array");
-			if (array.Length - index < count)
+			if (array.Length - arrayIndex < count)
 				throw new ArgumentException ("Destination array cannot hold the requested elements!");
 
 			for (int i = 0, items = 0; i < touched && items < count; i++) {
 				if (GetLinkHashCode (i) != 0)
-					array [index++] = slots [i];
+					array [arrayIndex++] = slots [i];
 			}
 		}
 
@@ -352,17 +352,15 @@ namespace System.Collections.Generic {
 			return true;
 		}
 
-		public int RemoveWhere (Predicate<T> predicate)
+		public int RemoveWhere (Predicate<T> match)
 		{
-			if (predicate == null)
-				throw new ArgumentNullException ("predicate");
-
-			int counter = 0;
+			if (match == null)
+				throw new ArgumentNullException ("match");
 
 			var candidates = new List<T> ();
 
 			foreach (var item in this)
-				if (predicate (item)) 
+				if (match (item)) 
 					candidates.Add (item);
 
 			foreach (var item in candidates)
@@ -536,10 +534,42 @@ namespace System.Collections.Generic {
 			return CheckIsSupersetOf (other_set);
 		}
 
-		[MonoTODO]
+		class HashSetEqualityComparer : IEqualityComparer<HashSet<T>>
+		{
+			public bool Equals (HashSet<T> lhs, HashSet<T> rhs)
+			{
+				if (lhs == rhs)
+					return true;
+
+				if (lhs == null || rhs == null || lhs.Count != rhs.Count)
+					return false;
+
+				foreach (var item in lhs)
+					if (!rhs.Contains (item))
+						return false;
+
+				return true;
+			}
+
+			public int GetHashCode (HashSet<T> hashset)
+			{
+				if (hashset == null)
+					return 0;
+
+				IEqualityComparer<T> comparer = EqualityComparer<T>.Default;
+				int hash = 0;
+				foreach (var item in hashset)
+					hash ^= comparer.GetHashCode (item);
+
+				return hash;
+			}
+		}
+
+		static readonly HashSetEqualityComparer setComparer = new HashSetEqualityComparer ();
+
 		public static IEqualityComparer<HashSet<T>> CreateSetComparer ()
 		{
-			throw new NotImplementedException ();
+			return setComparer;
 		}
 
 		[MonoTODO]
@@ -567,11 +597,6 @@ namespace System.Collections.Generic {
 			get { return false; }
 		}
 
-		void ICollection<T>.CopyTo (T [] array, int index)
-		{
-			CopyTo (array, index);
-		}
-
 		void ICollection<T>.Add (T item)
 		{
 			Add (item);
diff --git a/mcs/class/System.Core/System.Core_test.dll.sources b/mcs/class/System.Core/System.Core_test.dll.sources
index 58a8fac..a24d40f 100644
--- a/mcs/class/System.Core/System.Core_test.dll.sources
+++ b/mcs/class/System.Core/System.Core_test.dll.sources
@@ -80,3 +80,4 @@ System.Security.Cryptography/SHA512CryptoServiceProviderTest.cs
 System.Runtime.CompilerServices/DynamicAttributeTest.cs
 System.Linq/ParallelEnumerableTests.cs
 System.Linq/ParallelTestHelper.cs
+System.Threading.Tasks/TaskExtensionsTests.cs
diff --git a/mcs/class/System.Core/System.IO.MemoryMappedFiles/ChangeLog b/mcs/class/System.Core/System.IO.MemoryMappedFiles/ChangeLog
index bece051..da07be7 100644
--- a/mcs/class/System.Core/System.IO.MemoryMappedFiles/ChangeLog
+++ b/mcs/class/System.Core/System.IO.MemoryMappedFiles/ChangeLog
@@ -1,3 +1,11 @@
+2010-12-15  Marek Safar  <marek.safar at gmail.com>
+
+	Some .net 4.0 api compatibility fixes
+
+2010-10-15  Marek Safar  <marek.safar at gmail.com>
+
+	Clean up few more warnings
+
 2010-05-25  Jb Evain  <jbevain at novell.com>
 
 	* MemoryMappedViewAccessor.cs: fix API.
diff --git a/mcs/class/System.Core/System.IO.MemoryMappedFiles/ChangeLog b/mcs/class/System.Core/System.IO.MemoryMappedFiles/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Core/System.IO.MemoryMappedFiles/ChangeLog
copy to mcs/class/System.Core/System.IO.MemoryMappedFiles/ChangeLog.old
diff --git a/mcs/class/System.Core/System.IO.MemoryMappedFiles/MemoryMappedFile.cs b/mcs/class/System.Core/System.IO.MemoryMappedFiles/MemoryMappedFile.cs
index 713d92d..94ac3a4 100644
--- a/mcs/class/System.Core/System.IO.MemoryMappedFiles/MemoryMappedFile.cs
+++ b/mcs/class/System.Core/System.IO.MemoryMappedFiles/MemoryMappedFile.cs
@@ -327,12 +327,9 @@ namespace System.IO.MemoryMappedFiles
 
 		static MmapProts ToUnixProts (MemoryMappedFileAccess access)
 		{
-			MmapProts prots;
-			
 			switch (access){
 			case MemoryMappedFileAccess.ReadWrite:
 				return MmapProts.PROT_WRITE | MmapProts.PROT_READ;
-				break;
 				
 			case MemoryMappedFileAccess.Write:
 				return MmapProts.PROT_WRITE;
@@ -393,4 +390,4 @@ namespace System.IO.MemoryMappedFiles
 	}
 }
 
-#endif
\ No newline at end of file
+#endif
diff --git a/mcs/class/System.Core/System.IO.MemoryMappedFiles/MemoryMappedFileRights.cs b/mcs/class/System.Core/System.IO.MemoryMappedFiles/MemoryMappedFileRights.cs
index d634860..517ed6c 100644
--- a/mcs/class/System.Core/System.IO.MemoryMappedFiles/MemoryMappedFileRights.cs
+++ b/mcs/class/System.Core/System.IO.MemoryMappedFiles/MemoryMappedFileRights.cs
@@ -35,7 +35,6 @@ namespace System.IO.MemoryMappedFiles
 {
 	[Flags]
 	public enum MemoryMappedFileRights {
-		None = 0,
 		CopyOnWrite = 1,
 		Write = 2,
 		Read  = 4,
@@ -48,8 +47,7 @@ namespace System.IO.MemoryMappedFiles
 		ChangePermissions = 0x40000,
 		TakeOwnership = 0x80000,
 		FullControl = 0xf000f,
-		AccessSystemSecurity = 0x1000000,
-		DelayAllocatePages = 0x4000000
+		AccessSystemSecurity = 0x1000000
 	}
 }
 
diff --git a/mcs/class/System.Core/System.IO.MemoryMappedFiles/MemoryMappedFileSecurity.cs b/mcs/class/System.Core/System.IO.MemoryMappedFiles/MemoryMappedFileSecurity.cs
index 961e2c8..47299e2 100644
--- a/mcs/class/System.Core/System.IO.MemoryMappedFiles/MemoryMappedFileSecurity.cs
+++ b/mcs/class/System.Core/System.IO.MemoryMappedFiles/MemoryMappedFileSecurity.cs
@@ -1,8 +1,39 @@
+//
+// MemoryMappedFileSecurity.cs
+//
+// Authors:
+//	Marek Safar (marek.safar at gmail.com)
+//
+// Copyright (C) 2009, Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
 #if NET_4_0
 
-namespace System.IO.MemoryMappedFiles {
+using System.Security.AccessControl;
 
-	public class MemoryMappedFileSecurity {
+namespace System.IO.MemoryMappedFiles
+{
+	public class MemoryMappedFileSecurity : ObjectSecurity<MemoryMappedFileRights>
+	{
 	}
 }
 
diff --git a/mcs/class/System.Core/System.IO.MemoryMappedFiles/MemoryMappedViewAccessor.cs b/mcs/class/System.Core/System.IO.MemoryMappedFiles/MemoryMappedViewAccessor.cs
index 4bbf140..02453c8 100644
--- a/mcs/class/System.Core/System.IO.MemoryMappedFiles/MemoryMappedViewAccessor.cs
+++ b/mcs/class/System.Core/System.IO.MemoryMappedFiles/MemoryMappedViewAccessor.cs
@@ -57,7 +57,6 @@ namespace System.IO.MemoryMappedFiles
 			case MemoryMappedFileAccess.ReadWrite:
 			case MemoryMappedFileAccess.ReadWriteExecute:
 				return FileAccess.ReadWrite;
-				break;
 				
 			case MemoryMappedFileAccess.Write:
 				return FileAccess.Write;
@@ -104,4 +103,4 @@ namespace System.IO.MemoryMappedFiles
 	}
 }
 
-#endif
\ No newline at end of file
+#endif
diff --git a/mcs/class/System.Core/System.IO.Pipes/ChangeLog b/mcs/class/System.Core/System.IO.Pipes/ChangeLog
old mode 100755
new mode 100644
index 5cb283c..ebd7833
--- a/mcs/class/System.Core/System.IO.Pipes/ChangeLog
+++ b/mcs/class/System.Core/System.IO.Pipes/ChangeLog
@@ -1,3 +1,7 @@
+2010-10-15  Marek Safar  <marek.safar at gmail.com>
+
+	Clean up few more warnings
+
 2009-08-27  Atsushi Enomoto  <atsushi at ximian.com>
 
 	* PipeStream.cs : add set_Stream.
diff --git a/mcs/class/System.Core/System.IO.Pipes/ChangeLog b/mcs/class/System.Core/System.IO.Pipes/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Core/System.IO.Pipes/ChangeLog
copy to mcs/class/System.Core/System.IO.Pipes/ChangeLog.old
diff --git a/mcs/class/System.Core/System.IO.Pipes/PipeUnix.cs b/mcs/class/System.Core/System.IO.Pipes/PipeUnix.cs
index a9f1996..2f06df8 100644
--- a/mcs/class/System.Core/System.IO.Pipes/PipeUnix.cs
+++ b/mcs/class/System.Core/System.IO.Pipes/PipeUnix.cs
@@ -162,7 +162,6 @@ namespace System.IO.Pipes
 		
 		protected FileAccess RightsToFileAccess (PipeAccessRights rights)
 		{
-			string access = null;
 			if ((rights & PipeAccessRights.ReadData) != 0) {
 				if ((rights & PipeAccessRights.WriteData) != 0)
 					return FileAccess.ReadWrite;
@@ -197,7 +196,7 @@ namespace System.IO.Pipes
 			var name = Path.Combine ("/var/tmp/", pipeName);
 			EnsureTargetFile (name);
 			
-			string access = RightsToAccess (desiredAccessRights);
+			RightsToAccess (desiredAccessRights);
 			
 			ValidateOptions (options, owner.TransmissionMode);
 			
@@ -211,7 +210,6 @@ namespace System.IO.Pipes
 		}
 
 		NamedPipeClientStream owner;
-		bool is_async;
 		SafePipeHandle handle;
 		Action opener;
 
@@ -239,7 +237,7 @@ namespace System.IO.Pipes
 		}
 
 		public bool IsAsync {
-			get { return is_async; }
+			get { return false; }
 		}
 
 		public int NumberOfServerInstances {
@@ -266,7 +264,7 @@ namespace System.IO.Pipes
 			string name = Path.Combine ("/var/tmp/", pipeName);
 			EnsureTargetFile (name);
 
-			string access = RightsToAccess (rights);
+			RightsToAccess (rights);
 
 			ValidateOptions (options, owner.TransmissionMode);
 
diff --git a/mcs/class/System.Core/System.Linq.Expressions/ChangeLog b/mcs/class/System.Core/System.Linq.Expressions/ChangeLog
index f78f6c1..fc25385 100644
--- a/mcs/class/System.Core/System.Linq.Expressions/ChangeLog
+++ b/mcs/class/System.Core/System.Linq.Expressions/ChangeLog
@@ -1,3 +1,21 @@
+2010-12-30  Jb Evain  <jbevain at gmail.com>
+
+	[LINQ] Fix non generic AsQueryable issue #661462
+
+2010-11-29  Daniel Sell  <dredd422 at gmail.com>
+
+	Fix Expression.MakeBinary so it can return ArrayIndex nodes
+
+2010-10-15  Marek Safar  <marek.safar at gmail.com>
+
+	Clean up few more warnings
+
+2010-10-13  Jb Evain  <jbevain at gmail.com>
+
+	Add support for hoisted variables in the ET interpreter
+
+	This fixes #645765.
+
 2010-07-26  Jb Evain  <jbevain at novell.com>
 
 	* EmitContext.cs: Properly call methods on enumerations.
diff --git a/mcs/class/System.Core/System.Linq.Expressions/ChangeLog b/mcs/class/System.Core/System.Linq.Expressions/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Core/System.Linq.Expressions/ChangeLog
copy to mcs/class/System.Core/System.Linq.Expressions/ChangeLog.old
diff --git a/mcs/class/System.Core/System.Linq.Expressions/ConstantExpression.cs b/mcs/class/System.Core/System.Linq.Expressions/ConstantExpression.cs
index 37d4544..dd45bdc 100644
--- a/mcs/class/System.Core/System.Linq.Expressions/ConstantExpression.cs
+++ b/mcs/class/System.Core/System.Linq.Expressions/ConstantExpression.cs
@@ -63,7 +63,6 @@ namespace System.Linq.Expressions {
 		void EmitNullableConstant (EmitContext ec, Type type, object value)
 		{
 			if (value == null) {
-				var ig = ec.ig;
 				var local = ec.ig.DeclareLocal (type);
 				ec.EmitNullableInitialize (local);
 			} else {
diff --git a/mcs/class/System.Core/System.Linq.Expressions/Expression.cs b/mcs/class/System.Core/System.Linq.Expressions/Expression.cs
index b87a634..ed9af3c 100644
--- a/mcs/class/System.Core/System.Linq.Expressions/Expression.cs
+++ b/mcs/class/System.Core/System.Linq.Expressions/Expression.cs
@@ -871,6 +871,8 @@ namespace System.Linq.Expressions {
 				return AddChecked (left, right, method);
 			case ExpressionType.AndAlso:
 				return AndAlso (left, right);
+			case ExpressionType.ArrayIndex:
+				return ArrayIndex (left, right);
 			case ExpressionType.Coalesce:
 				return Coalesce (left, right, conversion);
 			case ExpressionType.Divide:
diff --git a/mcs/class/System.Core/System.Linq.Expressions/Extensions.cs b/mcs/class/System.Core/System.Linq.Expressions/Extensions.cs
index 28fb99a..3af0f52 100644
--- a/mcs/class/System.Core/System.Linq.Expressions/Extensions.cs
+++ b/mcs/class/System.Core/System.Linq.Expressions/Extensions.cs
@@ -53,11 +53,17 @@ namespace System.Linq.Expressions {
 			return self == typeof (Expression) || self.IsSubclassOf (typeof (Expression));
 		}
 
-		public static bool IsGenericImplementationOf (this Type self, Type type)
+		public static bool IsGenericImplementationOf (this Type self, Type type, out Type generic_iface)
 		{
-			foreach (Type iface in self.GetInterfaces ())
-				if (iface.IsGenericInstanceOf (type))
-					return true;
+			foreach (var iface in self.GetInterfaces ()) {
+				if (!iface.IsGenericInstanceOf (type))
+					continue;
+
+				generic_iface = iface;
+				return true;
+			}
+
+			generic_iface = null;
 			return false;
 		}
 
diff --git a/mcs/class/System.Core/System.Linq.Expressions/LambdaExpression.cs b/mcs/class/System.Core/System.Linq.Expressions/LambdaExpression.cs
index e2934fb..96d3ed8 100644
--- a/mcs/class/System.Core/System.Linq.Expressions/LambdaExpression.cs
+++ b/mcs/class/System.Core/System.Linq.Expressions/LambdaExpression.cs
@@ -81,15 +81,19 @@ namespace System.Linq.Expressions {
 		public Delegate Compile ()
 		{
 #if TARGET_JVM || MONOTOUCH
-			System.Linq.jvm.Interpreter inter =
-				new System.Linq.jvm.Interpreter (this);
-			inter.Validate ();
-			return inter.CreateDelegate ();
+			return new System.Linq.jvm.Runner (this).CreateDelegate ();
 #else
 			var context = new CompilationContext ();
 			context.AddCompilationUnit (this);
 			return context.CreateDelegate ();
 #endif
 		}
+
+#if TARGET_JVM || MONOTOUCH
+		internal Delegate Compile (System.Linq.jvm.ExpressionInterpreter interpreter)
+		{
+			return new System.Linq.jvm.Runner (this, interpreter).CreateDelegate ();
+		}
+#endif
 	}
 }
diff --git a/mcs/class/System.Core/System.Linq.Parallel.QueryNodes/ChangeLog b/mcs/class/System.Core/System.Linq.Parallel.QueryNodes/ChangeLog
index 8bf1531..928202a 100644
--- a/mcs/class/System.Core/System.Linq.Parallel.QueryNodes/ChangeLog
+++ b/mcs/class/System.Core/System.Linq.Parallel.QueryNodes/ChangeLog
@@ -1,3 +1,31 @@
+2011-01-07  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Directly use ConcurrentDictionary with PLinq set operations
+
+2010-12-02  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	[PLinq] Cleanup and prettify code from earlier commit
+
+2010-11-26  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	[PLinq] Remove double delegate cost when non indexed in SelectMany
+	query node
+
+2010-11-24  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	[PLinq] Fix the mess out of SelectMany node and speed it up (avoid
+	Tuples creation)
+
+2010-11-24  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	[PLinq] Improve Where query node speed by avoiding creation of
+	dozen of Tuples everytime and instead use static struct
+
+2010-09-02  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	[PLinq] Add the plumbery for checking source data size when
+	possible and setting ShouldBeSequential appropriately
+
 2010-08-26  Jérémie Laval  <jeremie.laval at gmail.com>
 
 	[PLinq] Add Cancellation checks even deeper. Introduce merge
diff --git a/mcs/class/System.Core/System.Linq.Parallel.QueryNodes/QuerySelectManyNode.cs b/mcs/class/System.Core/System.Linq.Parallel.QueryNodes/QuerySelectManyNode.cs
index 5b1a555..815cb5f 100644
--- a/mcs/class/System.Core/System.Linq.Parallel.QueryNodes/QuerySelectManyNode.cs
+++ b/mcs/class/System.Core/System.Linq.Parallel.QueryNodes/QuerySelectManyNode.cs
@@ -86,23 +86,17 @@ namespace System.Linq.Parallel.QueryNodes
 		internal override IList<IEnumerable<KeyValuePair<long, TResult>>> GetOrderedEnumerables (QueryOptions options)
 		{
 			var source = Parent.GetOrderedEnumerables (options);
-			var sizeRequests = new Tuple<long, int, IEnumerable<TCollection>> [options.PartitionCount];
-			if (collectionSelectorIndexed == null)
-				collectionSelectorIndexed = (e, i) => collectionSelector (e);
+			var sizeRequests = new SizeRequest[source.Count];
 			long deviation = 0;
 
-			Barrier barrier = new Barrier (options.PartitionCount, delegate {
-					Array.Sort (sizeRequests, (e1, e2) => e1.Item1.CompareTo (e2.Item1));
-					long newDeviation = deviation;
-					for (int i = sizeRequests.Length - 1; i >= 0; i--) {
-						var reqi = sizeRequests[i];
-						long newIndex = reqi.Item1 + deviation;
-						newDeviation += reqi.Item2 - 1;
-						for (int j = i - 1; j >= 0; j--)
-							newIndex += sizeRequests[j].Item2 - 1;
-						sizeRequests[i] = Tuple.Create (newIndex, reqi.Item2, reqi.Item3);
+			Barrier barrier = new Barrier (source.Count, delegate (Barrier b) {
+					Array.Sort (sizeRequests, KeyComparator);
+					for (int i = 0; i < b.ParticipantCount; ++i) {
+						if (sizeRequests[i].Key == -1)
+							continue;
+						sizeRequests[i].Key = deviation;
+						deviation += sizeRequests[i].Size;
 					}
-					deviation = newDeviation;
 				});
 
 			return source
@@ -120,25 +114,46 @@ namespace System.Linq.Parallel.QueryNodes
 		}
 		
 		IEnumerable<KeyValuePair<long, TResult>> GetOrderedEnumerableInternal (IEnumerable<KeyValuePair<long, TSource>> source,
-		                                                                       Tuple<long, int, IEnumerable<TCollection>>[] sizeRequests,
+		                                                                       SizeRequest[] sizeRequests,
 		                                                                       int index,
 		                                                                       Barrier barrier)
 		{
+			IEnumerator<KeyValuePair<long, TSource>> enumerator = source.GetEnumerator ();
+			bool isIndexed = IsIndexed;
+
 			try {
-				foreach (KeyValuePair<long, TSource> element in source) {
-					IEnumerable<TCollection> collection = collectionSelectorIndexed (element.Value, (int)element.Key);
-					sizeRequests[index] = Tuple.Create (element.Key, GetCount (ref collection), collection);
+				while (true) {
+					KeyValuePair<long, TSource> element;
+					IEnumerable<TCollection> collection;
+
+					if (enumerator.MoveNext ()) {
+						element = enumerator.Current;
+						collection = isIndexed ?
+							collectionSelectorIndexed (element.Value, (int)element.Key) :
+							collectionSelector (element.Value);
+
+						var count = GetCount (ref collection);
+
+						sizeRequests[index].Update (element.Key, count, collection, element.Value);
+					}
 
 					barrier.SignalAndWait ();
 
-					long i = sizeRequests[index].Item1;
-					collection = sizeRequests[index].Item3;
+					long i = sizeRequests[index].Key;
+					collection = sizeRequests[index].Collection;
+					var elementValue = sizeRequests[index].ElementValue;
+
+					sizeRequests[index].Clear ();
+
+					if (i == -1)
+						break;
 
 					foreach (TCollection item in collection)
-						yield return new KeyValuePair<long, TResult> (i++, resultSelector (element.Value, item));
+						yield return new KeyValuePair<long, TResult> (i++, resultSelector (elementValue, item));
 				}
 			} finally {
 				barrier.RemoveParticipant ();
+				enumerator.Dispose ();
 			}
 		}
 
@@ -157,6 +172,35 @@ namespace System.Linq.Parallel.QueryNodes
 
 			return foo.Count;
 		}
+
+		static int KeyComparator (SizeRequest e1, SizeRequest e2)
+		{
+			return e1.Key.CompareTo (e2.Key);
+		}
+
+		struct SizeRequest
+		{
+			public long Key;
+			public int Size;
+			public IEnumerable<TCollection> Collection;
+			public TSource ElementValue;
+
+			public void Update (long k, int s, IEnumerable<TCollection> c, TSource ev)
+			{
+				Key = k;
+				Size = s;
+				Collection = c;
+				ElementValue = ev;
+			}
+
+			public void Clear ()
+			{
+				Key = -1;
+				Size = 0;
+				Collection = null;
+				ElementValue = default (TSource);
+			}
+		}
 	}
 }
 
diff --git a/mcs/class/System.Core/System.Linq.Parallel.QueryNodes/QuerySetNode.cs b/mcs/class/System.Core/System.Linq.Parallel.QueryNodes/QuerySetNode.cs
index 66d5f16..7e3d18b 100644
--- a/mcs/class/System.Core/System.Linq.Parallel.QueryNodes/QuerySetNode.cs
+++ b/mcs/class/System.Core/System.Linq.Parallel.QueryNodes/QuerySetNode.cs
@@ -71,8 +71,8 @@ namespace System.Linq.Parallel.QueryNodes
 			var first = Parent.GetEnumerables (options);
 			var second = Second.GetEnumerables (options);
 			
-			var checker = new ConcurrentSkipList<TSource> (comparer);
-			InitConcurrentSkipList (checker, second, (e) => e);
+			var checker = new ConcurrentDictionary<TSource, object> (comparer);
+			InitConcurrentDictionary (checker, second, (e) => e);
 
 			return first
 				.Select ((f, i) => GetEnumerable<TSource> (f, second[i], checker, (e) => e))
@@ -84,29 +84,29 @@ namespace System.Linq.Parallel.QueryNodes
 			var first = Parent.GetOrderedEnumerables (options);
 			var second = Second.GetOrderedEnumerables (options);
 
-			var checker = new ConcurrentSkipList<TSource> (comparer);			
-			InitConcurrentSkipList (checker, second, (e) => e.Value);
+			var checker = new ConcurrentDictionary<TSource, object> (comparer);
+			InitConcurrentDictionary (checker, second, (e) => e.Value);
 
 			return first
 				.Select ((f, i) => GetEnumerable<KeyValuePair<long, TSource>> (f, second[i], checker, (e) => e.Value))
 				.ToList ();
 		}
 				
-		void InitConcurrentSkipList<TExtract> (ConcurrentSkipList<TSource> checker,
-		                                       IList<IEnumerable<TExtract>> feeds,
-		                                       Func<TExtract, TSource> extractor)
+		void InitConcurrentDictionary<TExtract> (ConcurrentDictionary<TSource, object> checker,
+		                                         IList<IEnumerable<TExtract>> feeds,
+		                                         Func<TExtract, TSource> extractor)
 		{
 			if ((setInclusion & SetInclusion.Preload) == 0)
 				return;
 			
 			foreach (IEnumerable<TExtract> feed in feeds)
 				foreach (TExtract item in feed)
-					checker.TryAdd (extractor (item));
+					checker.TryAdd (extractor (item), null);
 		}
 
 		IEnumerable<TExtract> GetEnumerable<TExtract> (IEnumerable<TExtract> first,
 		                                               IEnumerable<TExtract> second,
-		                                               ConcurrentSkipList<TSource> checker,
+		                                               ConcurrentDictionary<TSource, object> checker,
 		                                               Func<TExtract, TSource> extractor)
 		{
 			IEnumerator<TExtract> eFirst = first.GetEnumerator ();
@@ -121,7 +121,7 @@ namespace System.Linq.Parallel.QueryNodes
 				while (current != null) {
 					while (current.MoveNext ()) {
 						bool result = relaxed ?
-							checker.Contains (extractor (current.Current)) : checker.TryAdd (extractor (current.Current));
+							checker.ContainsKey (extractor (current.Current)) : checker.TryAdd (extractor (current.Current), null);
 
 						if ((result && outInclusion)
 						    || (!result && !outInclusion))
diff --git a/mcs/class/System.Core/System.Linq.Parallel.QueryNodes/QueryStartNode.cs b/mcs/class/System.Core/System.Linq.Parallel.QueryNodes/QueryStartNode.cs
index db835b6..fe68467 100644
--- a/mcs/class/System.Core/System.Linq.Parallel.QueryNodes/QueryStartNode.cs
+++ b/mcs/class/System.Core/System.Linq.Parallel.QueryNodes/QueryStartNode.cs
@@ -55,6 +55,19 @@ namespace System.Linq.Parallel.QueryNodes
 			this.customPartitioner = custom;
 		}
 
+		// If possible, this property will return the number of element the query
+		// is going to process. If that number if pretty low, executing the query
+		// sequentially is better
+		internal int Count {
+			get {
+				if (source == null)
+					return -1;
+
+				ICollection coll = source as ICollection;
+				return coll == null ? -1 : coll.Count;
+			}
+		}
+
 		public override void Visit (INodeVisitor visitor)
 		{
 			visitor.Visit<T> (this);
diff --git a/mcs/class/System.Core/System.Linq.Parallel.QueryNodes/QueryWhereNode.cs b/mcs/class/System.Core/System.Linq.Parallel.QueryNodes/QueryWhereNode.cs
index fc6e007..d3f16a5 100644
--- a/mcs/class/System.Core/System.Linq.Parallel.QueryNodes/QueryWhereNode.cs
+++ b/mcs/class/System.Core/System.Linq.Parallel.QueryNodes/QueryWhereNode.cs
@@ -63,14 +63,14 @@ namespace System.Linq.Parallel.QueryNodes
 		internal override IList<IEnumerable<TSource>> GetEnumerablesIndexed (QueryOptions options)
 		{
 			return Parent.GetOrderedEnumerables (options)
-				.Select ((i) => i.Where ((e) => indexedPredicate (e.Value, (int)e.Key)).Select ((e) => e.Value))
+				.Select (i => i.Where (e => indexedPredicate (e.Value, (int)e.Key)).Select (e => e.Value))
 				.ToList ();
 		}
 
 		internal override IList<IEnumerable<TSource>> GetEnumerablesNonIndexed (QueryOptions options)
 		{
 			return Parent.GetEnumerables (options)
-				.Select ((i) => i.Where (predicate))
+				.Select (i => i.Where (predicate))
 				.ToList ();
 		}
 
@@ -78,7 +78,7 @@ namespace System.Linq.Parallel.QueryNodes
 		{
 			IList<IEnumerable<KeyValuePair<long, TSource>>> sources = Parent.GetOrderedEnumerables (options);
 
-			Tuple<TSource, long, bool>[] store = new Tuple<TSource, long, bool>[sources.Count];
+			ProcessingSlot[] store = new ProcessingSlot[sources.Count];
 			long lastIndex = 0;
 
 			Barrier barrier = new Barrier (sources.Count, delegate (Barrier b) {
@@ -87,11 +87,8 @@ namespace System.Linq.Parallel.QueryNodes
 
 				// Reassign a good index
 				int i = 0;
-
-				for (i = 0; i < store.Length && store[i].Item3; i++) {
-					Tuple<TSource, long, bool> old = store[i];
-					store[i] = Tuple.Create (old.Item1, lastIndex + i, old.Item3);
-				}
+				for (i = 0; i < store.Length && store[i].IsValid; ++i)
+					store[i].Index = lastIndex + i;
 
 				// Update lastIndex for next round
 				lastIndex += i;
@@ -102,43 +99,42 @@ namespace System.Linq.Parallel.QueryNodes
 				.ToList ();
 		}
 
-		static int ArraySortMethod (Tuple<TSource, long, bool> lhs, Tuple<TSource, long, bool> rhs)
+		static int ArraySortMethod (ProcessingSlot lhs, ProcessingSlot rhs)
 		{
-			if (lhs.Item3 && !rhs.Item3)
+			if (lhs.IsValid && !rhs.IsValid)
 				return -1;
-			if (!lhs.Item3 && rhs.Item3)
+			if (!lhs.IsValid && rhs.IsValid)
 				return 1;
-			if (!lhs.Item3 && !rhs.Item3)
+			if (!lhs.IsValid && !rhs.IsValid)
 				return 0;
 
-			return (lhs.Item2 < rhs.Item2) ? -1 : 1;
+			return lhs.Index < rhs.Index ? -1 : 1;
 		}
 
 		IEnumerable<KeyValuePair<long, TSource>> GetEnumerator (IEnumerable<KeyValuePair<long, TSource>> source,
 		                                                        Barrier barrier,
 		                                                        CancellationToken token,
-		                                                        Tuple<TSource, long, bool>[] store, int index)
+		                                                        ProcessingSlot[] store, int index)
 		{
 			IEnumerator<KeyValuePair<long, TSource>> current = source.GetEnumerator ();
-			bool result;
-			Tuple<TSource, long, bool> reset = Tuple.Create (default (TSource), long.MaxValue, false);
+			bool isIndexed = IsIndexed;
 
 			try {
 				while (current.MoveNext ()) {
 					KeyValuePair<long, TSource> curr = current.Current;
 
-					result = IsIndexed ? indexedPredicate (curr.Value, (int)curr.Key) : predicate (curr.Value);
-					store[index] = Tuple.Create (curr.Value, curr.Key, result);
+					bool result = isIndexed ? indexedPredicate (curr.Value, (int)curr.Key) : predicate (curr.Value);
+					store[index].Update (curr.Value, curr.Key, result);
 
 					barrier.SignalAndWait (token);
 
-					Tuple<TSource, long, bool> value = store [index];
+					var value = store [index];
 
-					if (value.Item3)
-						yield return new KeyValuePair<long, TSource> (value.Item2, value.Item1);
+					if (value.IsValid)
+						yield return new KeyValuePair<long, TSource> (value.Index, value.Value);
 
 					// Reset
-					store[index] = reset;
+					store[index].Clear ();
 				}
 			} finally {
 				// Remove our participation
@@ -146,6 +142,25 @@ namespace System.Linq.Parallel.QueryNodes
 				current.Dispose ();
 			}
 		}
+
+		struct ProcessingSlot
+		{
+			public TSource Value;
+			public long Index;
+			public bool IsValid;
+
+			public void Update (TSource v, long i, bool t)
+			{
+				Value = v;
+				Index = i;
+				IsValid = t;
+			}
+
+			public void Clear ()
+			{
+				Update (default (TSource), long.MaxValue, false);
+			}
+		}
 	}
 }
 #endif
diff --git a/mcs/class/System.Core/System.Linq.Parallel/ChangeLog b/mcs/class/System.Core/System.Linq.Parallel/ChangeLog
index a74d14b..aa589e3 100644
--- a/mcs/class/System.Core/System.Linq.Parallel/ChangeLog
+++ b/mcs/class/System.Core/System.Linq.Parallel/ChangeLog
@@ -1,3 +1,65 @@
+2010-12-02  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	[PLinq] Wrap PLinq processing task body in a try/finally so that
+	endAction is always called no matter what happen.
+
+2010-12-02  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	[PLinq] Cleanup and prettify code from earlier commit
+
+2010-11-26  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Remove debugging spew wrongly introduced by earlier commit
+
+2010-11-24  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	[PLinq] Remove layer of unneeded indirections in
+	OrderingEnumerator
+
+2010-11-19  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Use a custom-wrapper for Aggregate operation invocation
+
+2010-11-12  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	[PLinq] Use a custom loop for iterating in ProcessAndAggregate to
+	avoid the if cost at each round.
+
+2010-10-15  Marek Safar  <marek.safar at gmail.com>
+
+	Clean up few more warnings
+
+2010-09-02  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	[PLinq] Check ExecutionMode before executing sequentially
+
+2010-09-02  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	[PLinq] Add automatic sequential processing of query
+
+2010-09-02  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	[PLinq] Add the plumbery for checking source data size when
+	possible and setting ShouldBeSequential appropriately
+
+2010-09-02  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	[PLinq] Sanitize QueryOptions to use property everywhere and add
+	ShouldBeSequential option.
+
+2010-09-01  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Revert "[PLinq] Honor WithDegreeOfParallelism if present"
+
+	This reverts commit 59260b1df7d7ddfeb38cd616b883755d49e150c2.
+
+	The degree of parallelism value was actually already registered
+	somewhere else.
+
+2010-09-01  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	[PLinq] Honor WithDegreeOfParallelism if present
+
 2010-08-26  Jérémie Laval  <jeremie.laval at gmail.com>
 
 	[PLinq] Add Cancellation checks even deeper. Introduce merge
diff --git a/mcs/class/System.Core/System.Linq.Parallel/OrderingEnumerator.cs b/mcs/class/System.Core/System.Linq.Parallel/OrderingEnumerator.cs
index 4ebbc49..8561d4c 100644
--- a/mcs/class/System.Core/System.Linq.Parallel/OrderingEnumerator.cs
+++ b/mcs/class/System.Core/System.Linq.Parallel/OrderingEnumerator.cs
@@ -37,13 +37,15 @@ namespace System.Linq.Parallel
 	{
 		internal class SlotBucket
 		{
-			ConcurrentDictionary<long, T> temporaryArea = new ConcurrentDictionary<long, T> ();
-			KeyValuePair<long, T>?[] stagingArea;
+			readonly ConcurrentDictionary<long, T> temporaryArea = new ConcurrentDictionary<long, T> ();
+			readonly KeyValuePair<long, T>[] stagingArea;
 			
 			long currentIndex;
 			readonly int count;
+
 			CountdownEvent stagingCount;
 			CountdownEvent participantCount;
+
 			CancellationTokenSource src = new CancellationTokenSource ();
 			CancellationToken mergedToken;
 
@@ -52,7 +54,7 @@ namespace System.Linq.Parallel
 				this.count = count;
 				stagingCount = new CountdownEvent (count);
 				participantCount = new CountdownEvent (count);
-				stagingArea = new KeyValuePair<long, T>?[count];
+				stagingArea = new KeyValuePair<long, T>[count];
 				currentIndex = -count;
 				mergedToken = CancellationTokenSource.CreateLinkedTokenSource (src.Token, token).Token;
 			}
@@ -89,31 +91,36 @@ namespace System.Linq.Parallel
 				src.Cancel ();
 			}
 
-			void Skim ()
+			bool Skim ()
 			{
+				bool result = false;
+
 				for (int i = 0; i < count; i++) {
 					T temp;
 					int index = i + (int)currentIndex;
 					
-					if (stagingArea[index % count].HasValue)
+					if (stagingArea[i].Key != -1)
 						continue;
 
 					if (!temporaryArea.TryRemove (index, out temp))
 						continue;
-					
-					stagingArea [index % count] = new KeyValuePair<long, T> (index, temp);
+
+					result = true;
+					stagingArea [i] = new KeyValuePair<long, T> (index, temp);
 					if (stagingCount.Signal ())
 						break;
 				}
+
+				return result;
 			}
 			
 			void Clean ()
 			{
 				for (int i = 0; i < stagingArea.Length; i++)
-					stagingArea[i] = new Nullable<KeyValuePair<long, T>> ();
+					stagingArea[i] = new KeyValuePair<long, T> (-1, default (T));
 			}
 
-			public IEnumerator<KeyValuePair<long, T>?> Wait ()
+			public KeyValuePair<long, T>[] Wait ()
 			{
 				Clean ();
 				stagingCount.Reset ();
@@ -123,35 +130,36 @@ namespace System.Linq.Parallel
 				Skim ();
 
 				while (!stagingCount.IsSet) {
-					if (!participantCount.IsSet)
+					if (!participantCount.IsSet) {
 						try {
 							stagingCount.Wait (mergedToken);
 						} catch {
 							Skim ();
 						}
+					}
 
 					if (participantCount.IsSet) {
+						if (Skim ())
+							continue;
 						// Totally finished
-						if (stagingArea[0].HasValue)
+						if (stagingArea[0].Key != -1)
 							break;
 						else
 							return null;
 					}
 				}
-				
-				return ((IEnumerable<KeyValuePair<long, T>?>)stagingArea).GetEnumerator ();
+
+				return stagingArea;
 			}
 		}
 
-		readonly int num;
 		SlotBucket slotBucket;
 		
-		IEnumerator<KeyValuePair<long, T>?> currEnum;
-		KeyValuePair<long, T> curr;
+		KeyValuePair<long, T>[] slot;
+		int current;
 
 		internal OrderingEnumerator (int num, CancellationToken token)
 		{
-			this.num = num;
 			slotBucket = new SlotBucket (num, token);
 		}
 
@@ -168,28 +176,25 @@ namespace System.Linq.Parallel
 		public bool MoveNext ()
 		{
 			do {
-				while (currEnum == null || !currEnum.MoveNext ()) {
-					if (currEnum != null)
-						currEnum.Dispose ();
-					if ((currEnum = slotBucket.Wait ()) == null)
+				if (slot == null || ++current >= slot.Length) {
+					if ((slot = slotBucket.Wait ()) == null)
 						return false;
+					current = 0;
 				}
-			} while (!currEnum.Current.HasValue);
-
-			curr = currEnum.Current.Value;
+			} while (slot[current].Key == -1);
 
 			return true;
 		}
 
 		public T Current {
 			get {
-				return curr.Value;
+				return slot[current].Value;
 			}
 		}
 
 		object IEnumerator.Current {
 			get {
-				return curr.Value;
+				return slot[current].Value;
 			}
 		}
 		
diff --git a/mcs/class/System.Core/System.Linq.Parallel/ParallelExecuter.cs b/mcs/class/System.Core/System.Linq.Parallel/ParallelExecuter.cs
index ea10e9c..380f68c 100644
--- a/mcs/class/System.Core/System.Linq.Parallel/ParallelExecuter.cs
+++ b/mcs/class/System.Core/System.Linq.Parallel/ParallelExecuter.cs
@@ -93,26 +93,30 @@ namespace System.Linq.Parallel
 		                                                   Action endAction,
 		                                                   QueryOptions options)
 		{
+			CancellationTokenSource src
+				= CancellationTokenSource.CreateLinkedTokenSource (options.ImplementerToken, options.Token);
+
 			IList<IEnumerable<TElement>> enumerables = acquisitionFunc (node, options);
 
 			Task[] tasks = new Task[enumerables.Count];
-			CancellationTokenSource src
-				= CancellationTokenSource.CreateLinkedTokenSource (options.ImplementerToken, options.Token);
 
 			for (int i = 0; i < tasks.Length; i++) {
 				int index = i;
 				tasks[i] = Task.Factory.StartNew (() => {
-					foreach (TElement item in enumerables[index]) {
-						// This is from specific operators
-						if (options.ImplementerToken.IsCancellationRequested)
-							break;
-						if (options.Token.IsCancellationRequested)
-							throw new OperationCanceledException (options.Token);
-
-						call (item, src.Token);
+					try {
+						foreach (TElement item in enumerables[index]) {
+							// This is from specific operators
+							if (options.ImplementerToken.IsCancellationRequested)
+								break;
+							if (options.Token.IsCancellationRequested)
+								throw new OperationCanceledException (options.Token);
+
+							call (item, src.Token);
+						}
+					} finally {
+						if (endAction != null)
+							endAction ();
 					}
-					if (endAction != null)
-						endAction ();
 				  }, options.Token);
 			}
 
@@ -165,28 +169,14 @@ namespace System.Linq.Parallel
 			}
 
 			for (int i = 0; i < tasks.Length; i++) {
-				int index = i;
-				bool firstRun = true;
-
-				tasks[i] = Task.Factory.StartNew (() => {
-					foreach (T item in enumerables[index]) {
-						// This is from specific operators
-						if (options.ImplementerToken.IsCancellationRequested)
-							break;
-						if (options.Token.IsCancellationRequested)
-							throw new OperationCanceledException (options.Token);
-
-						if (firstRun && seedFunc == null) {
-							firstRun = false;
-							// HACK: TODO: omgwtfitsuckssomuch
-							locals[index] = (U)(object)item;
-							continue;
-						}
-						
-						U acc = locals[index];
-						locals[index] = localCall (acc, item);
-					}
-				}, options.Token);
+				var procSlot = new AggregateProcessSlot<T, U> (options,
+				                                               i,
+				                                               enumerables[i].GetEnumerator (),
+				                                               locals,
+				                                               localCall,
+				                                               seedFunc);
+
+				tasks[i] = Task.Factory.StartNew (procSlot.Process, options.Token);
 			}
 
 			Task.WaitAll (tasks, options.Token);
@@ -194,6 +184,54 @@ namespace System.Linq.Parallel
 			if (call != null)
 				call (locals);
 		}
+
+		class AggregateProcessSlot<T, U>
+		{
+			readonly QueryOptions options;
+			readonly int index;
+			readonly IEnumerator<T> enumerator;
+			readonly U[] locals;
+			readonly Func<U, T, U> localCall;
+			readonly Func<U> seedFunc;
+
+			public AggregateProcessSlot (QueryOptions options,
+			                             int index,
+			                             IEnumerator<T> enumerator,
+			                             U[] locals,
+			                             Func<U, T, U> localCall,
+			                             Func<U> seedFunc)
+			{
+				this.options = options;
+				this.index = index;
+				this.enumerator = enumerator;
+				this.locals = locals;
+				this.localCall = localCall;
+				this.seedFunc = seedFunc;
+			}
+
+			public void Process ()
+			{
+				var token = options.Token;
+				var implementerToken = options.ImplementerToken;
+
+				try {
+					if (seedFunc == null) {
+						if (!enumerator.MoveNext ())
+							return;
+						locals[index] = (U)(object)enumerator.Current;
+					}
+
+					while (enumerator.MoveNext ()) {
+						if (implementerToken.IsCancellationRequested)
+							break;
+						token.ThrowIfCancellationRequested ();
+						locals[index] = localCall (locals[index], enumerator.Current);
+					}
+				} finally {
+					enumerator.Dispose ();
+				}
+			}
+		}
 	}
 }
 #endif
\ No newline at end of file
diff --git a/mcs/class/System.Core/System.Linq.Parallel/ParallelPartitioner.cs b/mcs/class/System.Core/System.Linq.Parallel/ParallelPartitioner.cs
index 8f182f2..e9bf2f8 100644
--- a/mcs/class/System.Core/System.Linq.Parallel/ParallelPartitioner.cs
+++ b/mcs/class/System.Core/System.Linq.Parallel/ParallelPartitioner.cs
@@ -24,11 +24,12 @@
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
 
+#if NET_4_0
+
 using System;
 using System.Collections.Generic;
 using System.Collections.Concurrent;
-
-#if NET_4_0
+using System.Collections.Concurrent.Partitioners;
 
 namespace System.Linq.Parallel
 {
diff --git a/mcs/class/System.Core/System.Linq.Parallel/ParallelQueryEnumerator.cs b/mcs/class/System.Core/System.Linq.Parallel/ParallelQueryEnumerator.cs
index b75d4a2..a3d1752 100644
--- a/mcs/class/System.Core/System.Linq.Parallel/ParallelQueryEnumerator.cs
+++ b/mcs/class/System.Core/System.Linq.Parallel/ParallelQueryEnumerator.cs
@@ -50,24 +50,30 @@ namespace System.Linq.Parallel
 		internal ParallelQueryEnumerator (QueryBaseNode<T> node)
 		{
 			this.options = ParallelExecuter.CheckQuery (node);
-			Setup ();
-
-			// Launch adding to the buffer asynchronously via Tasks
-			if (options.BehindOrderGuard.Value) {
-				waitAction = ParallelExecuter.ProcessAndCallback (node,
-				                                                  ordEnumerator.Add,
-				                                                  ordEnumerator.EndParticipation,
-				                                                  ordEnumerator.Stop,
-				                                                  options);
+
+			if (options.ShouldBeSequential && options.Mode != ParallelExecutionMode.ForceParallelism) {
+				IEnumerable<T> buffer = node.GetSequential ();
+				loader = buffer.GetEnumerator ();
 			} else {
-				waitAction = ParallelExecuter.ProcessAndCallback (node,
-				                                                  buffer.Add,
-				                                                  buffer.CompleteAdding,
-				                                                  options);
-			}
+				Setup ();
+
+				// Launch adding to the buffer asynchronously via Tasks
+				if (options.BehindOrderGuard.Value) {
+					waitAction = ParallelExecuter.ProcessAndCallback (node,
+					                                                  ordEnumerator.Add,
+					                                                  ordEnumerator.EndParticipation,
+					                                                  ordEnumerator.Stop,
+					                                                  options);
+				} else {
+					waitAction = ParallelExecuter.ProcessAndCallback (node,
+					                                                  buffer.Add,
+					                                                  buffer.CompleteAdding,
+					                                                  options);
+				}
 
-			if (options.Options.HasValue && options.Options.Value == ParallelMergeOptions.FullyBuffered)
-				waitAction ();
+				if (options.Options.HasValue && options.Options.Value == ParallelMergeOptions.FullyBuffered)
+					waitAction ();
+			}
 		}
 
 		void Setup ()
diff --git a/mcs/class/System.Core/System.Linq.Parallel/QueryCheckerVisitor.cs b/mcs/class/System.Core/System.Linq.Parallel/QueryCheckerVisitor.cs
index b346ae2..ae175fa 100644
--- a/mcs/class/System.Core/System.Linq.Parallel/QueryCheckerVisitor.cs
+++ b/mcs/class/System.Core/System.Linq.Parallel/QueryCheckerVisitor.cs
@@ -35,6 +35,8 @@ namespace System.Linq.Parallel
 
 	internal class QueryCheckerVisitor : INodeVisitor
 	{
+		const int minSequentialThreshold = 20;
+
 		// Information gathering
 		ParallelMergeOptions? options = null;
 		ParallelExecutionMode? mode = null;
@@ -75,6 +77,10 @@ namespace System.Linq.Parallel
 				behindOrderGuard = false;
 			if (degreeOfParallelism != null)
 				partitionCount = degreeOfParallelism.Value;
+
+			int count;
+			if ((count = node.Count) != -1 && count < minSequentialThreshold)
+				ShouldBeSequential = true;
 		}
 
 		public void Visit<T, TParent> (QueryStreamNode<T, TParent> node)
@@ -117,7 +123,7 @@ namespace System.Linq.Parallel
 		internal QueryOptions Options {
 			get {
 				return new QueryOptions (options, mode, token == null ? CancellationToken.None : token.Value,
-				                         UseStrip, behindOrderGuard, partitionCount, implementerToken);
+				                         UseStrip, behindOrderGuard, partitionCount, implementerToken, ShouldBeSequential);
 			}
 		}
 
diff --git a/mcs/class/System.Core/System.Linq.Parallel/QueryOptions.cs b/mcs/class/System.Core/System.Linq.Parallel/QueryOptions.cs
index 44c354d..7ca9a85 100644
--- a/mcs/class/System.Core/System.Linq.Parallel/QueryOptions.cs
+++ b/mcs/class/System.Core/System.Linq.Parallel/QueryOptions.cs
@@ -32,9 +32,20 @@ namespace System.Linq.Parallel
 {
 	internal class QueryOptions
 	{
-		public ParallelMergeOptions? Options;
-		public ParallelExecutionMode? Mode;
-		public CancellationToken Token;
+		public ParallelMergeOptions? Options {
+			get;
+			private set;
+		}
+
+		public ParallelExecutionMode? Mode {
+			get;
+			private set;
+		}
+
+		public CancellationToken Token {
+			get;
+			private set;
+		}
 		/* This token is to be used by some operator (like Take) to tell that
 		 * the execution of the query can be prematurly stopped
 		 *
@@ -43,11 +54,40 @@ namespace System.Linq.Parallel
 		 * set. Operator may chain up multiple cancellation token that way.
 		 * When checking for this token, the task body should simply return.
 		 */
-		public CancellationToken ImplementerToken;
-		public bool UseStrip;
-		public bool? BehindOrderGuard;
-		public int PartitionCount;
-		public Tuple<bool, bool, bool> PartitionerSettings;
+		public CancellationToken ImplementerToken {
+			get;
+			private set;
+		}
+
+		public bool UseStrip {
+			get;
+			private set;
+		}
+
+		public bool? BehindOrderGuard {
+			get;
+			private set;
+		}
+
+		public int PartitionCount {
+			get;
+			private set;
+		}
+
+		public Tuple<bool, bool, bool> PartitionerSettings {
+			get;
+			internal set;
+		}
+
+		public CancellationToken MergedToken {
+			get;
+			private set;
+		}
+
+		public bool ShouldBeSequential {
+			get;
+			private set;
+		}
 
 		public QueryOptions (ParallelMergeOptions? options,
 		                     ParallelExecutionMode? mode,
@@ -55,7 +95,8 @@ namespace System.Linq.Parallel
 		                     bool useStrip,
 		                     bool? behindOrderGuard,
 		                     int partitionCount,
-		                     CancellationToken implementerToken)
+		                     CancellationToken implementerToken,
+		                     bool shouldBeSequential)
 		{
 			Options = options;
 			Mode = mode;
@@ -65,6 +106,7 @@ namespace System.Linq.Parallel
 			PartitionCount = partitionCount;
 			PartitionerSettings = null;
 			ImplementerToken = implementerToken;
+			ShouldBeSequential = shouldBeSequential;
 
 			MergeTokens (token, implementerToken);
 		}
@@ -82,11 +124,6 @@ namespace System.Linq.Parallel
 			else
 				MergedToken = CancellationToken.None;
 		}
-
-		public CancellationToken MergedToken {
-			get;
-			private set;
-		}
 	}
 }
 #endif
diff --git a/mcs/class/System.Core/System.Linq.jvm/ChangeLog b/mcs/class/System.Core/System.Linq.jvm/ChangeLog
index 24d4b5a..778573d 100644
--- a/mcs/class/System.Core/System.Linq.jvm/ChangeLog
+++ b/mcs/class/System.Core/System.Linq.jvm/ChangeLog
@@ -1,3 +1,21 @@
+2010-10-13  Jb Evain  <jbevain at gmail.com>
+
+	Add support for hoisted variables in the ET interpreter
+
+	This fixes #645765.
+
+2010-10-12  Jb Evain  <jbevain at gmail.com>
+
+	Fix parameterless Action case
+
+2010-10-12  Jb Evain  <jbevain at gmail.com>
+
+	[Fix] fix the ET interpreter to deal with user defined delegates.
+
+	The Expression Tree interpreter was previously limited to lambda
+	expression for either an Action or a Func delegate. This fix
+	removes this limitation. Fixes #645770.
+
 2008-09-23  Jb Evain  <jbevain at novell.com>
 
 	* ExpressionInterpreter.cs
diff --git a/mcs/class/System.Core/System.Linq.jvm/ChangeLog b/mcs/class/System.Core/System.Linq.jvm/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Core/System.Linq.jvm/ChangeLog
copy to mcs/class/System.Core/System.Linq.jvm/ChangeLog.old
diff --git a/mcs/class/System.Core/System.Linq.jvm/ExpressionInterpreter.cs b/mcs/class/System.Core/System.Linq.jvm/ExpressionInterpreter.cs
index f46e177..4d550d1 100644
--- a/mcs/class/System.Core/System.Linq.jvm/ExpressionInterpreter.cs
+++ b/mcs/class/System.Core/System.Linq.jvm/ExpressionInterpreter.cs
@@ -3,6 +3,7 @@
 //
 // (C) 2008 Mainsoft, Inc. (http://www.mainsoft.com)
 // (C) 2008 db4objects, Inc. (http://www.db4o.com)
+// (C) 2010 Novell, Inc. (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -24,8 +25,6 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-using System;
-using System.Collections;
 using System.Collections.Generic;
 using System.Collections.ObjectModel;
 using System.Linq.Expressions;
@@ -33,11 +32,75 @@ using System.Reflection;
 
 namespace System.Linq.jvm {
 
-	class ExpressionInterpreter : ExpressionVisitor {
+	struct LambdaInfo {
+		public readonly LambdaExpression Lambda;
+		public readonly object [] Arguments;
+
+		public LambdaInfo (LambdaExpression lambda, object [] arguments)
+		{
+			this.Lambda = lambda;
+			this.Arguments = arguments;
+		}
+	}
+
+	class HoistedVariableDetector : ExpressionVisitor {
+
+		readonly Dictionary<ParameterExpression, LambdaExpression> parameter_to_lambda =
+			new Dictionary<ParameterExpression, LambdaExpression> ();
+
+		Dictionary<LambdaExpression, List<ParameterExpression>> hoisted_map;
 
 		LambdaExpression lambda;
-		object [] arguments;
-		Stack<object> stack = new Stack<object> ();
+
+		public Dictionary<LambdaExpression, List<ParameterExpression>> Process (LambdaExpression lambda)
+		{
+			Visit (lambda);
+			return hoisted_map;
+		}
+
+		protected override void VisitLambda (LambdaExpression lambda)
+		{
+			this.lambda = lambda;
+			foreach (var parameter in lambda.Parameters)
+				parameter_to_lambda [parameter] = lambda;
+			base.VisitLambda (lambda);
+		}
+
+		protected override void VisitParameter (ParameterExpression parameter)
+		{
+			if (lambda.Parameters.Contains (parameter))
+				return;
+
+			Hoist (parameter);
+		}
+
+		void Hoist (ParameterExpression parameter)
+		{
+			LambdaExpression lambda;
+			if (!parameter_to_lambda.TryGetValue (parameter, out lambda))
+				return;
+
+			if (hoisted_map == null)
+				hoisted_map = new Dictionary<LambdaExpression, List<ParameterExpression>> ();
+
+			List<ParameterExpression> hoisted;
+			if (!hoisted_map.TryGetValue (lambda, out hoisted)) {
+				hoisted = new List<ParameterExpression> ();
+				hoisted_map [lambda] = hoisted;
+			}
+
+			hoisted.Add (parameter);
+		}
+	}
+
+
+	class ExpressionInterpreter : ExpressionVisitor {
+
+		readonly Stack<LambdaInfo> lambdas = new Stack<LambdaInfo> ();
+		readonly Stack<object> stack = new Stack<object> ();
+
+		readonly Dictionary<LambdaExpression, List<ParameterExpression>> hoisted_map;
+		readonly Dictionary<ParameterExpression, object> hoisted_values;
 
 		void Push (object value)
 		{
@@ -49,10 +112,12 @@ namespace System.Linq.jvm {
 			return stack.Pop ();
 		}
 
-		public ExpressionInterpreter (LambdaExpression lambda, object [] arguments)
+		public ExpressionInterpreter (LambdaExpression lambda)
 		{
-			this.lambda = lambda;
-			this.arguments = arguments;
+			hoisted_map = new HoistedVariableDetector ().Process (lambda);
+
+			if (hoisted_map != null)
+				hoisted_values = new Dictionary<ParameterExpression, object> ();
 		}
 
 		private void VisitCoalesce (BinaryExpression binary)
@@ -71,7 +136,7 @@ namespace System.Linq.jvm {
 				return;
 			}
 
-			Push (Invoke (binary.Conversion.Compile (), new [] { left }));
+			Push (Invoke (binary.Conversion.Compile (this), new [] { left }));
 		}
 
 		void VisitAndAlso (BinaryExpression binary)
@@ -262,16 +327,16 @@ namespace System.Linq.jvm {
 				Push (BinaryNotEqual (binary, left, right));
 				return;
 			case ExpressionType.LessThan:
-				Push (Comparer.Default.Compare (left, right) < 0);
+				Push (Comparer<object>.Default.Compare (left, right) < 0);
 				return;
 			case ExpressionType.LessThanOrEqual:
-				Push (Comparer.Default.Compare (left, right) <= 0);
+				Push (Comparer<object>.Default.Compare (left, right) <= 0);
 				return;
 			case ExpressionType.GreaterThan:
-				Push (Comparer.Default.Compare (left, right) > 0);
+				Push (Comparer<object>.Default.Compare (left, right) > 0);
 				return;
 			case ExpressionType.GreaterThanOrEqual:
-				Push (Comparer.Default.Compare (left, right) >= 0);
+				Push (Comparer<object>.Default.Compare (left, right) >= 0);
 				return;
 			}
 		}
@@ -702,11 +767,20 @@ namespace System.Linq.jvm {
 
 		protected override void VisitParameter (ParameterExpression parameter)
 		{
-			for (int i = 0; i < lambda.Parameters.Count; i++) {
-				if (lambda.Parameters [i] != parameter)
-					continue;
+			var info = lambdas.Peek ();
+
+			var lambda = info.Lambda;
+			var arguments = info.Arguments;
 
-				Push (arguments [i]);
+			var index = GetParameterIndex (lambda, parameter);
+			if (index >= 0) {
+				Push (arguments [index]);
+				return;
+			}
+
+			object value;
+			if (hoisted_values.TryGetValue (parameter, out value)) {
+				Push (value);
 				return;
 			}
 
@@ -803,7 +877,7 @@ namespace System.Linq.jvm {
 
 		protected override void VisitLambda (LambdaExpression lambda)
 		{
-			Push (lambda.Compile ());
+			Push (lambda.Compile (this));
 		}
 
 		private object [] VisitListExpressions (ReadOnlyCollection<Expression> collection)
@@ -817,13 +891,45 @@ namespace System.Linq.jvm {
 			return results;
 		}
 
-		public static object Interpret (LambdaExpression lambda, object [] arguments)
+		void StoreHoistedVariables (LambdaExpression lambda, object [] arguments)
+		{
+			if (hoisted_map == null)
+				return;
+
+			List<ParameterExpression> variables;
+			if (!hoisted_map.TryGetValue (lambda, out variables))
+				return;
+
+			foreach (var variable in variables)
+				StoreHoistedVariable (variable, lambda, arguments);
+		}
+
+		void StoreHoistedVariable (ParameterExpression variable, LambdaExpression lambda, object [] arguments)
 		{
-			var interpreter = new ExpressionInterpreter (lambda, arguments);
-			interpreter.Visit (lambda.Body);
+			var index = GetParameterIndex (lambda, variable);
+			if (index < 0)
+				return;
+
+			hoisted_values [variable] = arguments [index];
+		}
+
+		static int GetParameterIndex (LambdaExpression lambda, ParameterExpression parameter)
+		{
+			return lambda.Parameters.IndexOf (parameter);
+		}
+
+		public object Interpret (LambdaExpression lambda, object [] arguments)
+		{
+			lambdas.Push (new LambdaInfo (lambda, arguments));
+
+			StoreHoistedVariables (lambda, arguments);
+
+			Visit (lambda.Body);
+
+			lambdas.Pop ();
 
 			if (lambda.GetReturnType () != typeof (void))
-				return interpreter.Pop ();
+				return Pop ();
 
 			return null;
 		}
diff --git a/mcs/class/System.Core/System.Linq.jvm/ExpressionValidator.cs b/mcs/class/System.Core/System.Linq.jvm/ExpressionValidator.cs
deleted file mode 100644
index a81df48..0000000
--- a/mcs/class/System.Core/System.Linq.jvm/ExpressionValidator.cs
+++ /dev/null
@@ -1,54 +0,0 @@
-//
-// ExpressionValidator.cs
-//
-// (C) 2008 Mainsoft, Inc. (http://www.mainsoft.com)
-// (C) 2008 db4objects, Inc. (http://www.db4o.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Linq.Expressions;
-
-namespace System.Linq.jvm {
-
-	class ExpressionValidator : ExpressionVisitor
-	{
-		LambdaExpression lambda;
-
-		public ExpressionValidator (LambdaExpression lambda)
-		{
-			this.lambda = lambda;
-		}
-
-		protected override void VisitParameter (ParameterExpression parameter)
-		{
-			foreach (var param in lambda.Parameters) {
-				if (param.Name == parameter.Name && param != parameter)
-					throw new InvalidOperationException ("Lambda Parameter not in scope");
-			}
-		}
-
-		public void Validate()
-		{
-			Visit (lambda);
-		}
-    }
-}
diff --git a/mcs/class/System.Core/System.Linq.jvm/Interpreter.cs b/mcs/class/System.Core/System.Linq.jvm/Interpreter.cs
deleted file mode 100644
index dc3df8e..0000000
--- a/mcs/class/System.Core/System.Linq.jvm/Interpreter.cs
+++ /dev/null
@@ -1,185 +0,0 @@
-//
-// Interpreter.cs
-//
-// (C) 2008 Mainsoft, Inc. (http://www.mainsoft.com)
-// (C) 2008 db4objects, Inc. (http://www.db4o.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Linq;
-using System.Linq.Expressions;
-using System.Reflection;
-
-namespace System.Linq.jvm {
-
-	class Interpreter {
-
-		class VoidTypeMarker {
-		}
-
-		static readonly Type VoidMarker = typeof (VoidTypeMarker);
-		static readonly MethodInfo [] delegates = new MethodInfo [5];
-
-		LambdaExpression lambda;
-
-		static Interpreter ()
-		{
-			var methods = from method in typeof (Interpreter).GetMethods (
-							  BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance)
-						  where method.Name == "GetDelegate"
-						  select method;
-
-			foreach (var method in methods)
-				delegates [method.GetGenericArguments ().Length - 1] = method;
-		}
-
-		public Interpreter (LambdaExpression lambda)
-		{
-			this.lambda = lambda;
-		}
-
-		public Delegate CreateDelegate ()
-		{
-			var types = GetGenericSignature ();
-			var creator = delegates [types.Length - 1].MakeGenericMethod (types);
-
-			return (Delegate) creator.Invoke (this, new object [0]);
-		}
-
-		public void Validate ()
-		{
-			new ExpressionValidator (lambda).Validate ();
-		}
-
-		Type [] GetGenericSignature ()
-		{
-			var count = lambda.Parameters.Count;
-			var types = new Type [count + 1];
-
-			var return_type = lambda.GetReturnType ();
-			if (return_type == typeof (void))
-				return_type = VoidMarker;
-
-			types [count] = return_type;
-			for (int i = 0; i < count; i++) {
-				types [i] = lambda.Parameters [i].Type;
-			}
-
-			return types;
-		}
-
-		object Run (object [] arg)
-		{
-			return ExpressionInterpreter.Interpret (lambda, arg);
-		}
-
-		Delegate GetDelegate<TResult> ()
-		{
-			if (typeof (TResult) == VoidMarker)
-				return new Action (ActionRunner);
-
-			return new Func<TResult> (FuncRunner<TResult>);
-		}
-
-		TResult FuncRunner<TResult> ()
-		{
-			return (TResult) Run (new object [0]);
-		}
-
-		void ActionRunner ()
-		{
-			Run (new object [0]);
-		}
-
-		Delegate GetDelegate<T, TResult> ()
-		{
-			if (typeof (TResult) == VoidMarker)
-				return new Action<T> (ActionRunner<T>);
-
-			return new Func<T, TResult> (FuncRunner<T, TResult>);
-		}
-
-		TResult FuncRunner<T, TResult> (T arg)
-		{
-			return (TResult) Run (new object [] { arg });
-		}
-
-		void ActionRunner<T> (T arg)
-		{
-			Run (new object [] { arg });
-		}
-
-		Delegate GetDelegate<T1, T2, TResult> ()
-		{
-			if (typeof (TResult) == VoidMarker)
-				return new Action<T1, T2> (ActionRunner<T1, T2>);
-
-			return new Func<T1, T2, TResult> (FuncRunner<T1, T2, TResult>);
-		}
-
-		TResult FuncRunner<T1, T2, TResult> (T1 arg1, T2 arg2)
-		{
-			return (TResult) Run (new object [] { arg1, arg2 });
-		}
-
-		void ActionRunner<T1, T2> (T1 arg1, T2 arg2)
-		{
-			Run (new object [] { arg1, arg2 });
-		}
-
-		Delegate GetDelegate<T1, T2, T3, TResult> ()
-		{
-			if (typeof (TResult) == VoidMarker)
-				return new Action<T1, T2, T3> (ActionRunner<T1, T2, T3>);
-
-			return new Func<T1, T2, T3, TResult> (FuncRunner<T1, T2, T3, TResult>);
-		}
-
-		TResult FuncRunner<T1, T2, T3, TResult> (T1 arg1, T2 arg2, T3 arg3)
-		{
-			return (TResult) Run (new object [] { arg1, arg2, arg3 });
-		}
-
-		void ActionRunner<T1, T2, T3> (T1 arg1, T2 arg2, T3 arg3)
-		{
-			Run (new object [] { arg1, arg2, arg3 });
-		}
-
-		Delegate GetDelegate<T1, T2, T3, T4, TResult> ()
-		{
-			if (typeof (TResult) == VoidMarker)
-				return new Action<T1, T2, T3, T4> (ActionRunner<T1, T2, T3, T4>);
-
-			return new Func<T1, T2, T3, T4, TResult> (FuncRunner<T1, T2, T3, T4, TResult>);
-		}
-
-		TResult FuncRunner<T1, T2, T3, T4, TResult> (T1 arg1, T2 arg2, T3 arg3, T4 arg4)
-		{
-			return (TResult) Run (new object [] { arg1, arg2, arg3, arg4 });
-		}
-
-		void ActionRunner<T1, T2, T3, T4> (T1 arg1, T2 arg2, T3 arg3, T4 arg4)
-		{
-			Run (new object [] { arg1, arg2, arg3, arg4 });
-		}
-	}
-}
diff --git a/mcs/class/System.Core/System.Linq.jvm/Runner.cs b/mcs/class/System.Core/System.Linq.jvm/Runner.cs
new file mode 100644
index 0000000..31f0210
--- /dev/null
+++ b/mcs/class/System.Core/System.Linq.jvm/Runner.cs
@@ -0,0 +1,227 @@
+//
+// Runner.cs
+//
+// (C) 2008 Mainsoft, Inc. (http://www.mainsoft.com)
+// (C) 2008 db4objects, Inc. (http://www.db4o.com)
+// (C) 2010 Novell, Inc. (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System.Linq.Expressions;
+using System.Reflection;
+
+namespace System.Linq.jvm {
+
+	sealed class Runner {
+
+		sealed class VoidTypeMarker {}
+
+		static readonly Type VoidMarker = typeof (VoidTypeMarker);
+		static readonly MethodInfo [] delegates = new MethodInfo [5];
+		const BindingFlags method_flags = BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance;
+
+		readonly LambdaExpression lambda;
+		readonly ExpressionInterpreter interpreter;
+
+		static Runner ()
+		{
+			foreach (var method in typeof (Runner).GetMethods (method_flags).Where (m => m.Name == "GetDelegate"))
+				delegates [method.GetGenericArguments ().Length - 1] = method;
+		}
+
+		public Runner (LambdaExpression lambda)
+		{
+			this.lambda = lambda;
+		}
+
+		public Runner (LambdaExpression lambda, ExpressionInterpreter interpreter)
+		{
+			this.lambda = lambda;
+			this.interpreter = interpreter;
+		}
+
+		public Delegate CreateDelegate ()
+		{
+			var types = GetGenericSignature ();
+			var creator = delegates [types.Length - 1].MakeGenericMethod (types);
+
+			return (Delegate) creator.Invoke (this, new object [0]);
+		}
+
+		Type [] GetGenericSignature ()
+		{
+			var count = lambda.Parameters.Count;
+			var types = new Type [count + 1];
+
+			var return_type = lambda.GetReturnType ();
+			if (return_type == typeof (void))
+				return_type = VoidMarker;
+
+			types [count] = return_type;
+			for (int i = 0; i < count; i++) {
+				types [i] = lambda.Parameters [i].Type;
+			}
+
+			return types;
+		}
+
+		object Run (object [] arguments)
+		{
+			var interpreter = this.interpreter ?? new ExpressionInterpreter (lambda);
+
+			return interpreter.Interpret (lambda, arguments);
+		}
+
+		MethodInfo GetActionRunner (params Type [] types)
+		{
+			return GetRunner ("ActionRunner", types);
+		}
+
+		MethodInfo GetFuncRunner (params Type [] types)
+		{
+			return GetRunner ("FuncRunner", types);
+		}
+
+		MethodInfo GetRunner (string name, Type [] type_arguments)
+		{
+			var method = GetMethod (name, type_arguments.Length);
+			if (method == null)
+				throw new InvalidOperationException ();
+
+			if (type_arguments.Length == 0)
+				return method;
+
+			return method.MakeGenericMethod (type_arguments);
+		}
+
+		MethodInfo GetMethod (string name, int parameters)
+		{
+			foreach (var method in GetType ().GetMethods (method_flags)) {
+				if (method.Name != name)
+					continue;
+
+				if (method.GetGenericArguments ().Length != parameters)
+					continue;
+
+				return method;
+			}
+
+			return null;
+		}
+
+		Delegate CreateDelegate (MethodInfo runner)
+		{
+			return Delegate.CreateDelegate (lambda.Type, this, runner);
+		}
+
+		// all methods below are called through reflection
+
+		Delegate GetDelegate<TResult> ()
+		{
+			if (typeof (TResult) == VoidMarker)
+				return CreateDelegate (GetActionRunner (Type.EmptyTypes));
+
+			return CreateDelegate (GetFuncRunner (typeof (TResult)));
+		}
+
+		public TResult FuncRunner<TResult> ()
+		{
+			return (TResult) Run (new object [0]);
+		}
+
+		public void ActionRunner ()
+		{
+			Run (new object [0]);
+		}
+
+		Delegate GetDelegate<T, TResult> ()
+		{
+			if (typeof (TResult) == VoidMarker)
+				return CreateDelegate (GetActionRunner (typeof (T)));
+
+			return CreateDelegate (GetFuncRunner (typeof (T), typeof (TResult)));
+		}
+
+		public TResult FuncRunner<T, TResult> (T arg)
+		{
+			return (TResult) Run (new object [] { arg });
+		}
+
+		public void ActionRunner<T> (T arg)
+		{
+			Run (new object [] { arg });
+		}
+
+		public Delegate GetDelegate<T1, T2, TResult> ()
+		{
+			if (typeof (TResult) == VoidMarker)
+				return CreateDelegate (GetActionRunner (typeof (T1), typeof (T2)));
+
+			return CreateDelegate (GetFuncRunner (typeof (T1), typeof (T2), typeof (TResult)));
+		}
+
+		public TResult FuncRunner<T1, T2, TResult> (T1 arg1, T2 arg2)
+		{
+			return (TResult) Run (new object [] { arg1, arg2 });
+		}
+
+		public void ActionRunner<T1, T2> (T1 arg1, T2 arg2)
+		{
+			Run (new object [] { arg1, arg2 });
+		}
+
+		Delegate GetDelegate<T1, T2, T3, TResult> ()
+		{
+			if (typeof (TResult) == VoidMarker)
+				return CreateDelegate (GetActionRunner (typeof (T1), typeof (T2), typeof (T3)));
+
+			return CreateDelegate (GetFuncRunner (typeof (T1), typeof (T2), typeof (T3), typeof (TResult)));
+		}
+
+		public TResult FuncRunner<T1, T2, T3, TResult> (T1 arg1, T2 arg2, T3 arg3)
+		{
+			return (TResult) Run (new object [] { arg1, arg2, arg3 });
+		}
+
+		public void ActionRunner<T1, T2, T3> (T1 arg1, T2 arg2, T3 arg3)
+		{
+			Run (new object [] { arg1, arg2, arg3 });
+		}
+
+		Delegate GetDelegate<T1, T2, T3, T4, TResult> ()
+		{
+			if (typeof (TResult) == VoidMarker)
+				return CreateDelegate (GetActionRunner (typeof (T1), typeof (T2), typeof (T3), typeof (T4)));
+
+			return CreateDelegate (GetFuncRunner (typeof (T1), typeof (T2), typeof (T3), typeof (T4), typeof (TResult)));
+		}
+
+		public TResult FuncRunner<T1, T2, T3, T4, TResult> (T1 arg1, T2 arg2, T3 arg3, T4 arg4)
+		{
+			return (TResult) Run (new object [] { arg1, arg2, arg3, arg4 });
+		}
+
+		public void ActionRunner<T1, T2, T3, T4> (T1 arg1, T2 arg2, T3 arg3, T4 arg4)
+		{
+			Run (new object [] { arg1, arg2, arg3, arg4 });
+		}
+	}
+}
diff --git a/mcs/class/System.Core/System.Linq/ChangeLog b/mcs/class/System.Core/System.Linq/ChangeLog
index 7278e4d..0768dcc 100644
--- a/mcs/class/System.Core/System.Linq/ChangeLog
+++ b/mcs/class/System.Core/System.Linq/ChangeLog
@@ -1,3 +1,20 @@
+2010-12-30  Jb Evain  <jbevain at gmail.com>
+
+	[LINQ] Fix non generic AsQueryable issue #661462
+
+2010-12-15  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Sys.Core parameters fixup
+
+2010-12-15  Marek Safar  <marek.safar at gmail.com>
+
+	Some .net 4.0 api compatibility fixes
+
+2010-12-09  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	[PLinq] Detect when AsParallel is called multiple time in a query
+	and simply reuse the existing ParallelQuery object
+
 2010-08-26  Jérémie Laval  <jeremie.laval at gmail.com>
 
 	[PLinq] Add dummy GetEnumerator override in OrderedParallelQuery
diff --git a/mcs/class/System.Core/System.Linq/Enumerable.cs b/mcs/class/System.Core/System.Linq/Enumerable.cs
index 5d8e892..d0a4c77 100644
--- a/mcs/class/System.Core/System.Linq/Enumerable.cs
+++ b/mcs/class/System.Core/System.Linq/Enumerable.cs
@@ -642,13 +642,13 @@ namespace System.Linq
 			return counter;
 		}
 
-		public static int Count<TSource> (this IEnumerable<TSource> source, Func<TSource, bool> selector)
+		public static int Count<TSource> (this IEnumerable<TSource> source, Func<TSource, bool> predicate)
 		{
-			Check.SourceAndSelector (source, selector);
+			Check.SourceAndSelector (source, predicate);
 
 			int counter = 0;
 			foreach (var element in source)
-				if (selector (element))
+				if (predicate (element))
 					counter++;
 
 			return counter;
@@ -1262,13 +1262,13 @@ namespace System.Linq
 			return counter;
 		}
 
-		public static long LongCount<TSource> (this IEnumerable<TSource> source, Func<TSource, bool> selector)
+		public static long LongCount<TSource> (this IEnumerable<TSource> source, Func<TSource, bool> predicate)
 		{
-			Check.SourceAndSelector (source, selector);
+			Check.SourceAndSelector (source, predicate);
 
 			long counter = 0;
 			foreach (TSource element in source)
-				if (selector (element))
+				if (predicate (element))
 					counter++;
 
 			return counter;
@@ -2285,11 +2285,11 @@ namespace System.Linq
 		}
 
 		public static IEnumerable<TResult> SelectMany<TSource, TCollection, TResult> (this IEnumerable<TSource> source,
-			Func<TSource, IEnumerable<TCollection>> collectionSelector, Func<TSource, TCollection, TResult> selector)
+			Func<TSource, IEnumerable<TCollection>> collectionSelector, Func<TSource, TCollection, TResult> resultSelector)
 		{
-			Check.SourceAndCollectionSelectors (source, collectionSelector, selector);
+			Check.SourceAndCollectionSelectors (source, collectionSelector, resultSelector);
 
-			return CreateSelectManyIterator (source, collectionSelector, selector);
+			return CreateSelectManyIterator (source, collectionSelector, resultSelector);
 		}
 
 		static IEnumerable<TResult> CreateSelectManyIterator<TSource, TCollection, TResult> (IEnumerable<TSource> source,
@@ -2301,11 +2301,11 @@ namespace System.Linq
 		}
 
 		public static IEnumerable<TResult> SelectMany<TSource, TCollection, TResult> (this IEnumerable<TSource> source,
-			Func<TSource, int, IEnumerable<TCollection>> collectionSelector, Func<TSource, TCollection, TResult> selector)
+			Func<TSource, int, IEnumerable<TCollection>> collectionSelector, Func<TSource, TCollection, TResult> resultSelector)
 		{
-			Check.SourceAndCollectionSelectors (source, collectionSelector, selector);
+			Check.SourceAndCollectionSelectors (source, collectionSelector, resultSelector);
 
-			return CreateSelectManyIterator (source, collectionSelector, selector);
+			return CreateSelectManyIterator (source, collectionSelector, resultSelector);
 		}
 
 		static IEnumerable<TResult> CreateSelectManyIterator<TSource, TCollection, TResult> (IEnumerable<TSource> source,
diff --git a/mcs/class/System.Core/System.Linq/EnumerableQuery_T.cs b/mcs/class/System.Core/System.Linq/EnumerableQuery_T.cs
index 1a97dad..77562b4 100644
--- a/mcs/class/System.Core/System.Linq/EnumerableQuery_T.cs
+++ b/mcs/class/System.Core/System.Linq/EnumerableQuery_T.cs
@@ -37,17 +37,17 @@ namespace System.Linq
 {
 	public class EnumerableQuery<T> : EnumerableQuery, IOrderedQueryable<T>, IQueryable<T>, IQueryProvider
 	{
-		QueryableEnumerable<T> queryable;
+		readonly QueryableEnumerable<T> queryable;
 
-		public Type ElementType {
+		Type IQueryable.ElementType {
 			get { return queryable.ElementType; }
 		}
 
-		public Expression Expression {
+		Expression IQueryable.Expression {
 			get { return queryable.Expression; }
 		}
 
-		public IQueryProvider Provider {
+		IQueryProvider IQueryable.Provider {
 			get { return queryable; }
 		}
 
@@ -61,37 +61,32 @@ namespace System.Linq
 			queryable = new QueryableEnumerable<T> (enumerable);
 		}
 
-		public IEnumerable GetEnumerable ()
-		{
-			return queryable.GetEnumerable ();
-		}
-
 		IEnumerator IEnumerable.GetEnumerator ()
 		{
 			return queryable.GetEnumerator ();
 		}
 
-		public IEnumerator<T> GetEnumerator ()
+		IEnumerator<T> IEnumerable<T>.GetEnumerator ()
 		{
 			return queryable.GetEnumerator ();
 		}
 
-		public IQueryable CreateQuery (Expression expression)
+		IQueryable IQueryProvider.CreateQuery (Expression expression)
 		{
 			return queryable.CreateQuery (expression);
 		}
 
-		public object Execute (Expression expression)
+		object IQueryProvider.Execute (Expression expression)
 		{
 			return queryable.Execute (expression);
 		}
 
-		public IQueryable<TElem> CreateQuery<TElem> (Expression expression)
+		IQueryable<TElem> IQueryProvider.CreateQuery<TElem> (Expression expression)
 		{
 			return new EnumerableQuery<TElem> (expression);
 		}
 
-		public TResult Execute<TResult> (Expression expression)
+		TResult IQueryProvider.Execute<TResult> (Expression expression)
 		{
 			return queryable.Execute<TResult> (expression);
 		}
diff --git a/mcs/class/System.Core/System.Linq/IOrderedEnumerable_T.cs b/mcs/class/System.Core/System.Linq/IOrderedEnumerable_T.cs
index d874170..6d9d229 100644
--- a/mcs/class/System.Core/System.Linq/IOrderedEnumerable_T.cs
+++ b/mcs/class/System.Core/System.Linq/IOrderedEnumerable_T.cs
@@ -30,7 +30,8 @@ using System.Collections.Generic;
 
 namespace System.Linq {
 
-	public interface IOrderedEnumerable<TElement> : IEnumerable<TElement> {
-		IOrderedEnumerable<TElement> CreateOrderedEnumerable<TKey> (Func<TElement, TKey> selector, IComparer<TKey> comparer, bool descending);
+	public interface IOrderedEnumerable<TElement> : IEnumerable<TElement>
+	{
+		IOrderedEnumerable<TElement> CreateOrderedEnumerable<TKey> (Func<TElement, TKey> keySelector, IComparer<TKey> comparer, bool descending);
 	}
 }
diff --git a/mcs/class/System.Core/System.Linq/Lookup.cs b/mcs/class/System.Core/System.Linq/Lookup.cs
index 116814f..0191a6b 100644
--- a/mcs/class/System.Core/System.Linq/Lookup.cs
+++ b/mcs/class/System.Core/System.Linq/Lookup.cs
@@ -69,13 +69,13 @@ namespace System.Linq {
 				nullGrouping = new Grouping<TKey, TElement> (default (TKey), nullKeyElements);
 		}
 
-		public IEnumerable<TResult> ApplyResultSelector<TResult> (Func<TKey, IEnumerable<TElement>, TResult> selector)
+		public IEnumerable<TResult> ApplyResultSelector<TResult> (Func<TKey, IEnumerable<TElement>, TResult> resultSelector)
 		{
 			if (nullGrouping != null)
-				yield return selector (nullGrouping.Key, nullGrouping);
+				yield return resultSelector (nullGrouping.Key, nullGrouping);
 			
 			foreach (var group in groups.Values)
-				yield return selector (group.Key, group);
+				yield return resultSelector (group.Key, group);
 		}
 
 		public bool Contains (TKey key)
diff --git a/mcs/class/System.Core/System.Linq/ParallelEnumerable.cs b/mcs/class/System.Core/System.Linq/ParallelEnumerable.cs
index 0f02818..ae1845b 100644
--- a/mcs/class/System.Core/System.Linq/ParallelEnumerable.cs
+++ b/mcs/class/System.Core/System.Linq/ParallelEnumerable.cs
@@ -48,12 +48,12 @@ namespace System.Linq
 			return (new RangeList (start, count)).AsParallel ();
 		}
 
-		public static ParallelQuery<TResult> Repeat<TResult> (TResult obj, int count)
+		public static ParallelQuery<TResult> Repeat<TResult> (TResult element, int count)
 		{
 			if (count < 0)
 				throw new ArgumentOutOfRangeException ("count", "count is less than 0");
 
-			return (new RepeatList<TResult> (obj, count)).AsParallel ();
+			return (new RepeatList<TResult> (element, count)).AsParallel ();
 		}
 		#endregion
 
@@ -70,7 +70,12 @@ namespace System.Linq
 			if (source == null)
 				throw new ArgumentNullException ("source");
 
-			return new ParallelQuery<TSource> (new QueryStartNode<TSource> (source));
+			/* Someone might be trying to use AsParallel a bit too much, if the query was in fact
+			 * already a ParallelQuery, just cast it
+			 */
+			ParallelQuery<TSource> query = source as ParallelQuery<TSource>;
+
+			return query ?? new ParallelQuery<TSource> (new QueryStartNode<TSource> (source));
 		}
 
 		public static ParallelQuery<TSource> AsParallel<TSource> (this Partitioner<TSource> source)
@@ -78,7 +83,12 @@ namespace System.Linq
 			if (source == null)
 				throw new ArgumentNullException ("source");
 
-			return new ParallelQuery<TSource> (new QueryStartNode<TSource> (source));
+			/* Someone might be trying to use AsParallel a bit too much, if the query was in fact
+			 * already a ParallelQuery, just cast it
+			 */
+			ParallelQuery<TSource> query = source as ParallelQuery<TSource>;
+
+			return query ?? new ParallelQuery<TSource> (new QueryStartNode<TSource> (source));
 		}
 
 		public static ParallelQuery AsParallel (this IEnumerable source)
@@ -86,7 +96,12 @@ namespace System.Linq
 			if (source == null)
 				throw new ArgumentNullException ("source");
 
-			return new ParallelQuery<object> (new QueryStartNode<object> (source.Cast<object> ()));
+			/* Someone might be trying to use AsParallel a bit too much, if the query was in fact
+			 * already a ParallelQuery, just cast it
+			 */
+			ParallelQuery query = source as ParallelQuery;
+
+			return query ?? new ParallelQuery<object> (new QueryStartNode<object> (source.Cast<object> ()));
 		}
 
 		public static IEnumerable<TSource> AsEnumerable<TSource> (this ParallelQuery<TSource> source)
@@ -161,14 +176,14 @@ namespace System.Linq
 		}
 
 		public static ParallelQuery<TSource> WithDegreeOfParallelism<TSource> (this ParallelQuery<TSource> source,
-		                                                                       int degreeParallelism)
+		                                                                       int degreeOfParallelism)
 		{
-			if (degreeParallelism < 1 || degreeParallelism > 63)
-				throw new ArgumentException ("degreeOfParallelism is less than 1 or greater than 63", "degreeParallelism");
+			if (degreeOfParallelism < 1 || degreeOfParallelism > 63)
+				throw new ArgumentException ("degreeOfParallelism is less than 1 or greater than 63", "degreeOfParallelism");
 			if (source == null)
 				throw new ArgumentNullException ("source");
 
-			return new ParallelQuery<TSource> (new DegreeOfParallelismNode<TSource> (degreeParallelism, source.Node));
+			return new ParallelQuery<TSource> (new DegreeOfParallelismNode<TSource> (degreeOfParallelism, source.Node));
 		}
 
 		internal static ParallelQuery<TSource> WithImplementerToken<TSource> (this ParallelQuery<TSource> source,
@@ -319,15 +334,15 @@ namespace System.Linq
 		}
 
 		public static TResult Aggregate<TSource, TAccumulate, TResult> (this ParallelQuery<TSource> source,
-		                                                                  Func<TAccumulate> seedFunc,
+		                                                                  Func<TAccumulate> seedFactory,
 		                                                                  Func<TAccumulate, TSource, TAccumulate> updateAccumulatorFunc,
 		                                                                  Func<TAccumulate, TAccumulate, TAccumulate> combineAccumulatorsFunc,
 		                                                                  Func<TAccumulate, TResult> resultSelector)
 		{
 			if (source == null)
 				throw new ArgumentNullException ("source");
-			if (seedFunc == null)
-				throw new ArgumentNullException ("seedFunc");
+			if (seedFactory == null)
+				throw new ArgumentNullException ("seedFactory");
 			if (updateAccumulatorFunc == null)
 				throw new ArgumentNullException ("updateAccumulatorFunc");
 			if (combineAccumulatorsFunc == null)
@@ -337,7 +352,7 @@ namespace System.Linq
 
 			TAccumulate accumulator = default (TAccumulate);
 
-			ParallelExecuter.ProcessAndAggregate<TSource, TAccumulate> (source.Node, seedFunc, updateAccumulatorFunc, (list) => {
+			ParallelExecuter.ProcessAndAggregate<TSource, TAccumulate> (source.Node, seedFactory, updateAccumulatorFunc, (list) => {
 				accumulator = list [0];
 				for (int i = 1; i < list.Count; i++)
 					accumulator = combineAccumulatorsFunc (accumulator, list[i]);
@@ -1200,104 +1215,104 @@ namespace System.Linq
 			return source.Select ((e) => e.HasValue ? e.Value : 0).Average ();
 		}
 
-		public static double Average<TSource> (this ParallelQuery<TSource> source, Func<TSource, int> func)
+		public static double Average<TSource> (this ParallelQuery<TSource> source, Func<TSource, int> selector)
 		{
 			if (source == null)
 				throw new ArgumentNullException ("source");
-			if (func == null)
-				throw new ArgumentNullException ("func");
+			if (selector == null)
+				throw new ArgumentNullException ("selector");
 
-			return source.Select (func).Average ();
+			return source.Select (selector).Average ();
 		}
 
-		public static double Average<TSource> (this ParallelQuery<TSource> source, Func<TSource, long> func)
+		public static double Average<TSource> (this ParallelQuery<TSource> source, Func<TSource, long> selector)
 		{
 			if (source == null)
 				throw new ArgumentNullException ("source");
-			if (func == null)
-				throw new ArgumentNullException ("func");
+			if (selector == null)
+				throw new ArgumentNullException ("selector");
 
-			return source.Select (func).Average ();
+			return source.Select (selector).Average ();
 		}
 
-		public static float Average<TSource> (this ParallelQuery<TSource> source, Func<TSource, float> func)
+		public static float Average<TSource> (this ParallelQuery<TSource> source, Func<TSource, float> selector)
 		{
 			if (source == null)
 				throw new ArgumentNullException ("source");
-			if (func == null)
-				throw new ArgumentNullException ("func");
+			if (selector == null)
+				throw new ArgumentNullException ("selector");
 
-			return source.Select (func).Average ();
+			return source.Select (selector).Average ();
 		}
 
-		public static double Average<TSource> (this ParallelQuery<TSource> source, Func<TSource, double> func)
+		public static double Average<TSource> (this ParallelQuery<TSource> source, Func<TSource, double> selector)
 		{
 			if (source == null)
 				throw new ArgumentNullException ("source");
-			if (func == null)
-				throw new ArgumentNullException ("func");
+			if (selector == null)
+				throw new ArgumentNullException ("selector");
 
-			return source.Select (func).Average ();
+			return source.Select (selector).Average ();
 		}
 
-		public static decimal Average<TSource> (this ParallelQuery<TSource> source, Func<TSource, decimal> func)
+		public static decimal Average<TSource> (this ParallelQuery<TSource> source, Func<TSource, decimal> selector)
 		{
 			if (source == null)
 				throw new ArgumentNullException ("source");
-			if (func == null)
-				throw new ArgumentNullException ("func");
+			if (selector == null)
+				throw new ArgumentNullException ("selector");
 
-			return source.Select (func).Average ();
+			return source.Select (selector).Average ();
 		}
 
-		public static double? Average<TSource> (this ParallelQuery<TSource> source, Func<TSource, int?> func)
+		public static double? Average<TSource> (this ParallelQuery<TSource> source, Func<TSource, int?> selector)
 		{
 			if (source == null)
 				throw new ArgumentNullException ("source");
-			if (func == null)
-				throw new ArgumentNullException ("func");
+			if (selector == null)
+				throw new ArgumentNullException ("selector");
 
-			return source.Select (func).Average ();
+			return source.Select (selector).Average ();
 		}
 
-		public static double? Average<TSource> (this ParallelQuery<TSource> source, Func<TSource, long?> func)
+		public static double? Average<TSource> (this ParallelQuery<TSource> source, Func<TSource, long?> selector)
 		{
 			if (source == null)
 				throw new ArgumentNullException ("source");
-			if (func == null)
-				throw new ArgumentNullException ("func");
+			if (selector == null)
+				throw new ArgumentNullException ("selector");
 
-			return source.Select (func).Average ();
+			return source.Select (selector).Average ();
 		}
 
-		public static float? Average<TSource> (this ParallelQuery<TSource> source, Func<TSource, float?> func)
+		public static float? Average<TSource> (this ParallelQuery<TSource> source, Func<TSource, float?> selector)
 		{
 			if (source == null)
 				throw new ArgumentNullException ("source");
-			if (func == null)
-				throw new ArgumentNullException ("func");
+			if (selector == null)
+				throw new ArgumentNullException ("selector");
 
-			return source.Select (func).Average ();
+			return source.Select (selector).Average ();
 		}
 
-		public static double? Average<TSource> (this ParallelQuery<TSource> source, Func<TSource, double?> func)
+		public static double? Average<TSource> (this ParallelQuery<TSource> source, Func<TSource, double?> selector)
 		{
 			if (source == null)
 				throw new ArgumentNullException ("source");
-			if (func == null)
-				throw new ArgumentNullException ("func");
+			if (selector == null)
+				throw new ArgumentNullException ("selector");
 
-			return source.Select (func).Average ();
+			return source.Select (selector).Average ();
 		}
 
-		public static decimal? Average<TSource> (this ParallelQuery<TSource> source, Func<TSource, decimal?> func)
+		public static decimal? Average<TSource> (this ParallelQuery<TSource> source, Func<TSource, decimal?> selector)
 		{
 			if (source == null)
 				throw new ArgumentNullException ("source");
-			if (func == null)
-				throw new ArgumentNullException ("func");
+			if (selector == null)
+				throw new ArgumentNullException ("selector");
 
-			return source.Select (func).Average ();
+			return source.Select (selector).Average ();
 		}
 		#endregion
 
@@ -1379,104 +1394,104 @@ namespace System.Linq
 			return source.Select ((e) => e.HasValue ? e.Value : 0).Sum ();
 		}
 
-		public static int Sum<TSource> (this ParallelQuery<TSource> source, Func<TSource, int> func)
+		public static int Sum<TSource> (this ParallelQuery<TSource> source, Func<TSource, int> selector)
 		{
 			if (source == null)
 				throw new ArgumentNullException ("source");
-			if (func == null)
-				throw new ArgumentNullException ("func");
+			if (selector == null)
+				throw new ArgumentNullException ("selector");
 
-			return source.Select (func).Sum ();
+			return source.Select (selector).Sum ();
 		}
 
-		public static long Sum<TSource> (this ParallelQuery<TSource> source, Func<TSource, long> func)
+		public static long Sum<TSource> (this ParallelQuery<TSource> source, Func<TSource, long> selector)
 		{
 			if (source == null)
 				throw new ArgumentNullException ("source");
-			if (func == null)
-				throw new ArgumentNullException ("func");
+			if (selector == null)
+				throw new ArgumentNullException ("selector");
 
-			return source.Select (func).Sum ();
+			return source.Select (selector).Sum ();
 		}
 
-		public static decimal Sum<TSource> (this ParallelQuery<TSource> source, Func<TSource, decimal> func)
+		public static decimal Sum<TSource> (this ParallelQuery<TSource> source, Func<TSource, decimal> selector)
 		{
 			if (source == null)
 				throw new ArgumentNullException ("source");
-			if (func == null)
-				throw new ArgumentNullException ("func");
+			if (selector == null)
+				throw new ArgumentNullException ("selector");
 
-			return source.Select (func).Sum ();
+			return source.Select (selector).Sum ();
 		}
 
-		public static float Sum<TSource> (this ParallelQuery<TSource> source, Func<TSource, float> func)
+		public static float Sum<TSource> (this ParallelQuery<TSource> source, Func<TSource, float> selector)
 		{
 			if (source == null)
 				throw new ArgumentNullException ("source");
-			if (func == null)
-				throw new ArgumentNullException ("func");
+			if (selector == null)
+				throw new ArgumentNullException ("selector");
 
-			return source.Select (func).Sum ();
+			return source.Select (selector).Sum ();
 		}
 
-		public static double Sum<TSource> (this ParallelQuery<TSource> source, Func<TSource, double> func)
+		public static double Sum<TSource> (this ParallelQuery<TSource> source, Func<TSource, double> selector)
 		{
 			if (source == null)
 				throw new ArgumentNullException ("source");
-			if (func == null)
-				throw new ArgumentNullException ("func");
+			if (selector == null)
+				throw new ArgumentNullException ("selector");
 
-			return source.Select (func).Sum ();
+			return source.Select (selector).Sum ();
 		}
 
-		public static int? Sum<TSource> (this ParallelQuery<TSource> source, Func<TSource, int?> func)
+		public static int? Sum<TSource> (this ParallelQuery<TSource> source, Func<TSource, int?> selector)
 		{
 			if (source == null)
 				throw new ArgumentNullException ("source");
-			if (func == null)
-				throw new ArgumentNullException ("func");
+			if (selector == null)
+				throw new ArgumentNullException ("selector");
 
-			return source.Select (func).Sum ();
+			return source.Select (selector).Sum ();
 		}
 
-		public static long? Sum<TSource> (this ParallelQuery<TSource> source, Func<TSource, long?> func)
+		public static long? Sum<TSource> (this ParallelQuery<TSource> source, Func<TSource, long?> selector)
 		{
 			if (source == null)
 				throw new ArgumentNullException ("source");
-			if (func == null)
-				throw new ArgumentNullException ("func");
+			if (selector == null)
+				throw new ArgumentNullException ("selector");
 
-			return source.Select (func).Sum ();
+			return source.Select (selector).Sum ();
 		}
 
-		public static decimal? Sum<TSource> (this ParallelQuery<TSource> source, Func<TSource, decimal?> func)
+		public static decimal? Sum<TSource> (this ParallelQuery<TSource> source, Func<TSource, decimal?> selector)
 		{
 			if (source == null)
 				throw new ArgumentNullException ("source");
-			if (func == null)
-				throw new ArgumentNullException ("func");
+			if (selector == null)
+				throw new ArgumentNullException ("selector");
 
-			return source.Select (func).Sum ();
+			return source.Select (selector).Sum ();
 		}
 
-		public static float? Sum<TSource> (this ParallelQuery<TSource> source, Func<TSource, float?> func)
+		public static float? Sum<TSource> (this ParallelQuery<TSource> source, Func<TSource, float?> selector)
 		{
 			if (source == null)
 				throw new ArgumentNullException ("source");
-			if (func == null)
-				throw new ArgumentNullException ("func");
+			if (selector == null)
+				throw new ArgumentNullException ("selector");
 
-			return source.Select (func).Sum ();
+			return source.Select (selector).Sum ();
 		}
 
-		public static double? Sum<TSource> (this ParallelQuery<TSource> source, Func<TSource, double?> func)
+		public static double? Sum<TSource> (this ParallelQuery<TSource> source, Func<TSource, double?> selector)
 		{
 			if (source == null)
 				throw new ArgumentNullException ("source");
-			if (func == null)
-				throw new ArgumentNullException ("func");
+			if (selector == null)
+				throw new ArgumentNullException ("selector");
 
-			return source.Select (func).Sum ();
+			return source.Select (selector).Sum ();
 		}
 		#endregion
 
@@ -1527,14 +1542,14 @@ namespace System.Linq
 			return BestOrder (source, (first, second) => comparer.Compare (first, second) < 0, default (TSource));
 		}
 
-		public static TResult Min<TSource, TResult> (this ParallelQuery<TSource> source, Func<TSource, TResult> func)
+		public static TResult Min<TSource, TResult> (this ParallelQuery<TSource> source, Func<TSource, TResult> selector)
 		{
 			if (source == null)
 				throw new ArgumentNullException ("source");
-			if (func == null)
-				throw new ArgumentNullException ("func");
+			if (selector == null)
+				throw new ArgumentNullException ("selector");
 
-			return source.Select (func).Min ();
+			return source.Select (selector).Min ();
 		}
 
 		public static int? Min (this ParallelQuery<int?> source)
@@ -1577,104 +1592,104 @@ namespace System.Linq
 			return source.Select ((e) => e.HasValue ? e.Value : decimal.MaxValue).Min ();
 		}
 
-		public static int Min<TSource> (this ParallelQuery<TSource> source, Func<TSource, int> func)
+		public static int Min<TSource> (this ParallelQuery<TSource> source, Func<TSource, int> selector)
 		{
 			if (source == null)
 				throw new ArgumentNullException ("source");
-			if (func == null)
-				throw new ArgumentNullException ("func");
+			if (selector == null)
+				throw new ArgumentNullException ("selector");
 
-			return source.Select (func).Min ();
+			return source.Select (selector).Min ();
 		}
 
-		public static long Min<TSource> (this ParallelQuery<TSource> source, Func<TSource, long> func)
+		public static long Min<TSource> (this ParallelQuery<TSource> source, Func<TSource, long> selector)
 		{
 			if (source == null)
 				throw new ArgumentNullException ("source");
-			if (func == null)
-				throw new ArgumentNullException ("func");
+			if (selector == null)
+				throw new ArgumentNullException ("selector");
 
-			return source.Select (func).Min ();
+			return source.Select (selector).Min ();
 		}
 
-		public static float Min<TSource> (this ParallelQuery<TSource> source, Func<TSource, float> func)
+		public static float Min<TSource> (this ParallelQuery<TSource> source, Func<TSource, float> selector)
 		{
 			if (source == null)
 				throw new ArgumentNullException ("source");
-			if (func == null)
-				throw new ArgumentNullException ("func");
+			if (selector == null)
+				throw new ArgumentNullException ("selector");
 
-			return source.Select (func).Min ();
+			return source.Select (selector).Min ();
 		}
 
-		public static double Min<TSource> (this ParallelQuery<TSource> source, Func<TSource, double> func)
+		public static double Min<TSource> (this ParallelQuery<TSource> source, Func<TSource, double> selector)
 		{
 			if (source == null)
 				throw new ArgumentNullException ("source");
-			if (func == null)
-				throw new ArgumentNullException ("func");
+			if (selector == null)
+				throw new ArgumentNullException ("selector");
 
-			return source.Select (func).Min ();
+			return source.Select (selector).Min ();
 		}
 
-		public static decimal Min<TSource> (this ParallelQuery<TSource> source, Func<TSource, decimal> func)
+		public static decimal Min<TSource> (this ParallelQuery<TSource> source, Func<TSource, decimal> selector)
 		{
 			if (source == null)
 				throw new ArgumentNullException ("source");
-			if (func == null)
-				throw new ArgumentNullException ("func");
+			if (selector == null)
+				throw new ArgumentNullException ("selector");
 
-			return source.Select (func).Min ();
+			return source.Select (selector).Min ();
 		}
 
-		public static int? Min<TSource> (this ParallelQuery<TSource> source, Func<TSource, int?> func)
+		public static int? Min<TSource> (this ParallelQuery<TSource> source, Func<TSource, int?> selector)
 		{
 			if (source == null)
 				throw new ArgumentNullException ("source");
-			if (func == null)
-				throw new ArgumentNullException ("func");
+			if (selector == null)
+				throw new ArgumentNullException ("selector");
 
-			return source.Select (func).Min ();
+			return source.Select (selector).Min ();
 		}
 
-		public static long? Min<TSource> (this ParallelQuery<TSource> source, Func<TSource, long?> func)
+		public static long? Min<TSource> (this ParallelQuery<TSource> source, Func<TSource, long?> selector)
 		{
 			if (source == null)
 				throw new ArgumentNullException ("source");
-			if (func == null)
-				throw new ArgumentNullException ("func");
+			if (selector == null)
+				throw new ArgumentNullException ("selector");
 
-			return source.Select (func).Min ();
+			return source.Select (selector).Min ();
 		}
 
-		public static float? Min<TSource> (this ParallelQuery<TSource> source, Func<TSource, float?> func)
+		public static float? Min<TSource> (this ParallelQuery<TSource> source, Func<TSource, float?> selector)
 		{
 			if (source == null)
 				throw new ArgumentNullException ("source");
-			if (func == null)
-				throw new ArgumentNullException ("func");
+			if (selector == null)
+				throw new ArgumentNullException ("selector");
 
-			return source.Select (func).Min ();
+			return source.Select (selector).Min ();
 		}
 
-		public static double? Min<TSource> (this ParallelQuery<TSource> source, Func<TSource, double?> func)
+		public static double? Min<TSource> (this ParallelQuery<TSource> source, Func<TSource, double?> selector)
 		{
 			if (source == null)
 				throw new ArgumentNullException ("source");
-			if (func == null)
-				throw new ArgumentNullException ("func");
+			if (selector == null)
+				throw new ArgumentNullException ("selector");
 
-			return source.Select (func).Min ();
+			return source.Select (selector).Min ();
 		}
 
-		public static decimal? Min<TSource> (this ParallelQuery<TSource> source, Func<TSource, decimal?> func)
+		public static decimal? Min<TSource> (this ParallelQuery<TSource> source, Func<TSource, decimal?> selector)
 		{
 			if (source == null)
 				throw new ArgumentNullException ("source");
-			if (func == null)
-				throw new ArgumentNullException ("func");
+			if (selector == null)
+				throw new ArgumentNullException ("selector");
 
-			return source.Select (func).Min ();
+			return source.Select (selector).Min ();
 		}
 
 		public static int Max (this ParallelQuery<int> source)
@@ -1709,14 +1724,14 @@ namespace System.Linq
 			return BestOrder (source, (first, second) => comparer.Compare (first, second) > 0, default (TSource));
 		}
 
-		public static TResult Max<TSource, TResult> (this ParallelQuery<TSource> source, Func<TSource, TResult> func)
+		public static TResult Max<TSource, TResult> (this ParallelQuery<TSource> source, Func<TSource, TResult> selector)
 		{
 			if (source == null)
 				throw new ArgumentNullException ("source");
-			if (func == null)
-				throw new ArgumentNullException ("func");
+			if (selector == null)
+				throw new ArgumentNullException ("selector");
 
-			return source.Select (func).Max ();
+			return source.Select (selector).Max ();
 		}
 
 		public static int? Max (this ParallelQuery<int?> source)
@@ -1759,104 +1774,104 @@ namespace System.Linq
 			return source.Select ((e) => e.HasValue ? e.Value : decimal.MinValue).Max ();
 		}
 
-		public static int Max<TSource> (this ParallelQuery<TSource> source, Func<TSource, int> func)
+		public static int Max<TSource> (this ParallelQuery<TSource> source, Func<TSource, int> selector)
 		{
 			if (source == null)
 				throw new ArgumentNullException ("source");
-			if (func == null)
-				throw new ArgumentNullException ("func");
+			if (selector == null)
+				throw new ArgumentNullException ("selector");
 
-			return source.Select (func).Max ();
+			return source.Select (selector).Max ();
 		}
 
-		public static long Max<TSource> (this ParallelQuery<TSource> source, Func<TSource, long> func)
+		public static long Max<TSource> (this ParallelQuery<TSource> source, Func<TSource, long> selector)
 		{
 			if (source == null)
 				throw new ArgumentNullException ("source");
-			if (func == null)
-				throw new ArgumentNullException ("func");
+			if (selector == null)
+				throw new ArgumentNullException ("selector");
 
-			return source.Select (func).Max ();
+			return source.Select (selector).Max ();
 		}
 
-		public static float Max<TSource> (this ParallelQuery<TSource> source, Func<TSource, float> func)
+		public static float Max<TSource> (this ParallelQuery<TSource> source, Func<TSource, float> selector)
 		{
 			if (source == null)
 				throw new ArgumentNullException ("source");
-			if (func == null)
-				throw new ArgumentNullException ("func");
+			if (selector == null)
+				throw new ArgumentNullException ("selector");
 
-			return source.Select (func).Max ();
+			return source.Select (selector).Max ();
 		}
 
-		public static double Max<TSource> (this ParallelQuery<TSource> source, Func<TSource, double> func)
+		public static double Max<TSource> (this ParallelQuery<TSource> source, Func<TSource, double> selector)
 		{
 			if (source == null)
 				throw new ArgumentNullException ("source");
-			if (func == null)
-				throw new ArgumentNullException ("func");
+			if (selector == null)
+				throw new ArgumentNullException ("selector");
 
-			return source.Select (func).Max ();
+			return source.Select (selector).Max ();
 		}
 
-		public static decimal Max<TSource> (this ParallelQuery<TSource> source, Func<TSource, decimal> func)
+		public static decimal Max<TSource> (this ParallelQuery<TSource> source, Func<TSource, decimal> selector)
 		{
 			if (source == null)
 				throw new ArgumentNullException ("source");
-			if (func == null)
-				throw new ArgumentNullException ("func");
+			if (selector == null)
+				throw new ArgumentNullException ("selector");
 
-			return source.Select (func).Max ();
+			return source.Select (selector).Max ();
 		}
 
-		public static int? Max<TSource> (this ParallelQuery<TSource> source, Func<TSource, int?> func)
+		public static int? Max<TSource> (this ParallelQuery<TSource> source, Func<TSource, int?> selector)
 		{
 			if (source == null)
 				throw new ArgumentNullException ("source");
-			if (func == null)
-				throw new ArgumentNullException ("func");
+			if (selector == null)
+				throw new ArgumentNullException ("selector");
 
-			return source.Select (func).Max ();
+			return source.Select (selector).Max ();
 		}
 
-		public static long? Max<TSource> (this ParallelQuery<TSource> source, Func<TSource, long?> func)
+		public static long? Max<TSource> (this ParallelQuery<TSource> source, Func<TSource, long?> selector)
 		{
 			if (source == null)
 				throw new ArgumentNullException ("source");
-			if (func == null)
-				throw new ArgumentNullException ("func");
+			if (selector == null)
+				throw new ArgumentNullException ("selector");
 
-			return source.Select (func).Max ();
+			return source.Select (selector).Max ();
 		}
 
-		public static float? Max<TSource> (this ParallelQuery<TSource> source, Func<TSource, float?> func)
+		public static float? Max<TSource> (this ParallelQuery<TSource> source, Func<TSource, float?> selector)
 		{
 			if (source == null)
 				throw new ArgumentNullException ("source");
-			if (func == null)
-				throw new ArgumentNullException ("func");
+			if (selector == null)
+				throw new ArgumentNullException ("selector");
 
-			return source.Select (func).Max ();
+			return source.Select (selector).Max ();
 		}
 
-		public static double? Max<TSource> (this ParallelQuery<TSource> source, Func<TSource, double?> func)
+		public static double? Max<TSource> (this ParallelQuery<TSource> source, Func<TSource, double?> selector)
 		{
 			if (source == null)
 				throw new ArgumentNullException ("source");
-			if (func == null)
-				throw new ArgumentNullException ("func");
+			if (selector == null)
+				throw new ArgumentNullException ("selector");
 
-			return source.Select (func).Max ();
+			return source.Select (selector).Max ();
 		}
 
-		public static decimal? Max<TSource> (this ParallelQuery<TSource> source, Func<TSource, decimal?> func)
+		public static decimal? Max<TSource> (this ParallelQuery<TSource> source, Func<TSource, decimal?> selector)
 		{
 			if (source == null)
 				throw new ArgumentNullException ("source");
-			if (func == null)
-				throw new ArgumentNullException ("func");
+			if (selector == null)
+				throw new ArgumentNullException ("selector");
 
-			return source.Select (func).Max ();
+			return source.Select (selector).Max ();
 		}
 		#endregion
 
diff --git a/mcs/class/System.Core/System.Linq/Queryable.cs b/mcs/class/System.Core/System.Linq/Queryable.cs
index 8c4a68f..b2fedba 100644
--- a/mcs/class/System.Core/System.Linq/Queryable.cs
+++ b/mcs/class/System.Core/System.Linq/Queryable.cs
@@ -158,13 +158,12 @@ namespace System.Linq {
 			if (queryable != null)
 				return queryable;
 
-			var type = source.GetType ();
-
-			if (!type.IsGenericImplementationOf (typeof (IEnumerable<>)))
+			Type ienumerable;
+			if (!source.GetType ().IsGenericImplementationOf (typeof (IEnumerable<>), out ienumerable))
 				throw new ArgumentException ("source is not IEnumerable<>");
 
 			return (IQueryable) Activator.CreateInstance (
-				typeof (QueryableEnumerable<>).MakeGenericType (type.GetFirstGenericArgument ()), source);
+				typeof (QueryableEnumerable<>).MakeGenericType (ienumerable.GetFirstGenericArgument ()), source);
 		}
 
 		#endregion
diff --git a/mcs/class/System.Core/System.Runtime.CompilerServices/DynamicAttribute.cs b/mcs/class/System.Core/System.Runtime.CompilerServices/DynamicAttribute.cs
index 2f0e485..dfe8283 100644
--- a/mcs/class/System.Core/System.Runtime.CompilerServices/DynamicAttribute.cs
+++ b/mcs/class/System.Core/System.Runtime.CompilerServices/DynamicAttribute.cs
@@ -26,7 +26,7 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0 || MOONLIGHT
+#if NET_4_0 || MOONLIGHT
 
 using System;
 using System.Collections.Generic;
diff --git a/mcs/class/System.Core/System.Runtime.CompilerServices/StrongBox_T.cs b/mcs/class/System.Core/System.Runtime.CompilerServices/StrongBox_T.cs
index 47d7678..dd75189 100644
--- a/mcs/class/System.Core/System.Runtime.CompilerServices/StrongBox_T.cs
+++ b/mcs/class/System.Core/System.Runtime.CompilerServices/StrongBox_T.cs
@@ -32,7 +32,7 @@ namespace System.Runtime.CompilerServices {
 
 		public T Value;
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0 || MOONLIGHT
+#if NET_4_0 || MOONLIGHT
 		public StrongBox ()
 		{
 		}
diff --git a/mcs/class/System.Core/System.Security.Cryptography/Aes.cs b/mcs/class/System.Core/System.Security.Cryptography/Aes.cs
index eaee476..e21627b 100644
--- a/mcs/class/System.Core/System.Security.Cryptography/Aes.cs
+++ b/mcs/class/System.Core/System.Security.Cryptography/Aes.cs
@@ -31,7 +31,7 @@
 //
 
 // Since 4.0 (both FX and SL) this type is defined in mscorlib - before 4.0 it was in System.Core.dll
-#if (INSIDE_CORLIB && (NET_4_0 || BOOTSTRAP_NET_4_0 || MOONLIGHT)) || (!INSIDE_CORLIB && !NET_4_0 && !BOOTSTRAP_NET_4_0 && !MOONLIGHT)
+#if (INSIDE_CORLIB && (NET_4_0 || MOONLIGHT)) || (!INSIDE_CORLIB && !NET_4_0 && !MOONLIGHT)
 
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
@@ -47,7 +47,7 @@ namespace System.Security.Cryptography {
 	#if MOONLIGHT
 	// version has not changed between SL3 (System.Core) and SL4
 	[TypeForwardedFrom (Consts.AssemblySystem_Core)]
-	#elif NET_4_0 || BOOTSTRAP_NET_4_0
+	#elif NET_4_0
 	// use 3.5 version
 	[TypeForwardedFrom ("System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089")]
 	#endif
diff --git a/mcs/class/System.Core/System.Security.Cryptography/AesManaged.cs b/mcs/class/System.Core/System.Security.Cryptography/AesManaged.cs
index 817053b..8a9c561 100644
--- a/mcs/class/System.Core/System.Security.Cryptography/AesManaged.cs
+++ b/mcs/class/System.Core/System.Security.Cryptography/AesManaged.cs
@@ -60,14 +60,14 @@ namespace System.Security.Cryptography {
 			KeyValue = KeyBuilder.Key (KeySizeValue >> 3);
 		}
 		
-		public override ICryptoTransform CreateDecryptor (byte[] rgbKey, byte[] rgbIV) 
+		public override ICryptoTransform CreateDecryptor (byte[] key, byte[] iv) 
 		{
-			return new AesTransform (this, false, rgbKey, rgbIV);
+			return new AesTransform (this, false, key, iv);
 		}
 		
-		public override ICryptoTransform CreateEncryptor (byte[] rgbKey, byte[] rgbIV) 
+		public override ICryptoTransform CreateEncryptor (byte[] key, byte[] iv) 
 		{
-			return new AesTransform (this, true, rgbKey, rgbIV);
+			return new AesTransform (this, true, key, iv);
 		}
 
 		// I suppose some attributes differs ?!? because this does not look required
diff --git a/mcs/class/System.Core/System.Security.Cryptography/ChangeLog b/mcs/class/System.Core/System.Security.Cryptography/ChangeLog
index aef59b4..6468676 100644
--- a/mcs/class/System.Core/System.Security.Cryptography/ChangeLog
+++ b/mcs/class/System.Core/System.Security.Cryptography/ChangeLog
@@ -1,3 +1,7 @@
+2010-12-14  Jeffrey Stedfast  <fejj at gnome.org>
+
+	Fixed AesManaged parameter names to make gui-compare happy
+
 2010-03-18  Sebastien Pouliot  <sebastien at ximian.com>
 
 	* Aes.cs: Build here before NET_4_0 (or MOONLIGHT) otherwise 
diff --git a/mcs/class/System.Core/System.Security.Cryptography/ChangeLog b/mcs/class/System.Core/System.Security.Cryptography/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Core/System.Security.Cryptography/ChangeLog
copy to mcs/class/System.Core/System.Security.Cryptography/ChangeLog.old
diff --git a/mcs/class/System.Core/System.Threading.Tasks/TaskExtensions.cs b/mcs/class/System.Core/System.Threading.Tasks/TaskExtensions.cs
new file mode 100644
index 0000000..3045468
--- /dev/null
+++ b/mcs/class/System.Core/System.Threading.Tasks/TaskExtensions.cs
@@ -0,0 +1,78 @@
+//
+// TaskExtensions.cs
+//
+// Author:
+//       Jérémie "Garuma" Laval <jeremie.laval at gmail.com>
+//
+// Copyright (c) 2010 Jérémie "Garuma" Laval
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if NET_4_0
+
+using System;
+using System.Threading.Tasks;
+
+namespace System.Threading.Tasks 
+{
+	public static class TaskExtensions
+	{
+		const TaskContinuationOptions opt = TaskContinuationOptions.ExecuteSynchronously;
+
+		public static Task<TResult> Unwrap<TResult> (this Task<Task<TResult>> task)
+		{
+			if (task == null)
+				throw new ArgumentNullException ("task");
+
+			TaskCompletionSource<TResult> src = new TaskCompletionSource<TResult> ();
+
+			task.ContinueWith (t1 => CopyCat (t1, src, () => t1.Result.ContinueWith (t2 => CopyCat (t2, src, () => src.SetResult (t2.Result)), opt)), opt);
+
+			return src.Task;
+		}
+
+		public static Task Unwrap (this Task<Task> task)
+		{
+			if (task == null)
+				throw new ArgumentNullException ("task");
+
+			TaskCompletionSource<object> src = new TaskCompletionSource<object> ();
+
+			task.ContinueWith (t1 => CopyCat (t1, src, () => t1.Result.ContinueWith (t2 => CopyCat (t2, src, () => src.SetResult (null)), opt)), opt);
+
+			return src.Task;
+		}
+
+		static void CopyCat<TResult> (Task source,
+		                              TaskCompletionSource<TResult> dest,
+		                              Action normalAction)
+		{
+			if (source.IsCanceled)
+				dest.SetCanceled ();
+			else if (source.IsFaulted)
+				dest.SetException (source.Exception.InnerExceptions);
+			else
+				normalAction ();
+		}
+	}
+}
+
+#endif
diff --git a/mcs/class/System.Core/System.Threading/ChangeLog b/mcs/class/System.Core/System.Threading/ChangeLog
index d3fec24..c335b0b 100644
--- a/mcs/class/System.Core/System.Threading/ChangeLog
+++ b/mcs/class/System.Core/System.Threading/ChangeLog
@@ -1,3 +1,70 @@
+2010-12-01  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	[ReaderWriterLockSlim] Fix for #656353. Add corresponding unit
+	test.
+
+	When in SupportsRecursion mode, a test was not including proper
+	state check for short-circuiting.
+
+2010-11-23  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Fix ReaderWriterLockSlim Exit methods in SupportsRecursion mode
+	and add corresponding unit tests
+
+2010-11-12  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Another fix related to the rebase
+
+2010-11-12  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Fix compile error introduced by rebasing
+
+2010-10-22  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Protect ExitUpgradeable part of ReaderWriterLockSlim against
+	asynchronous exception.
+
+	This ensure that the lock state remains consistent even when it's
+	interrupted by an async exception (such as ThreadAbortException).
+
+2010-10-22  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Protect Enter/Exit write part of ReaderWriterLockSlim against
+	asynchronous exception.
+
+	This ensure that the lock state remains consistent even when it's
+	interrupted by an async exception (such as ThreadAbortException).
+
+2010-10-22  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Protect Enter/Exit read part of ReaderWriterLockSlim against
+	asynchronous exception.
+
+	This ensure that the lock state remains consistent even when it's
+	interrupted by an async exception (such as ThreadAbortException).
+
+2010-11-10  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Final performance improvement on ReaderWriterLockSlim
+
+2010-11-09  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Remove CurrentLockState in ReaderWriterLockSlim and reuse
+	ThreadLockState instance more often.
+
+2010-11-08  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Small condition fix in ReaderWriterLockSlim, avoid an extra loop
+	pass.
+
+2010-11-04  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	ReaderWriterLockSlim performance improvements
+
+2010-11-03  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Add tiny bit of doc on ReaderWriterLockSlim.
+
 2010-09-29  Jérémie Laval  <jeremie.laval at gmail.com>
 
 	[ReaderWriterLockSlim] Fix state corruption and race in a special
@@ -9,10 +76,6 @@
 	step in the middle of Upgradeable actually upgrading to write
 	mode.
 
-	Conflicts:
-
-	mcs/class/System.Core/System.Threading/ReaderWriterLockSlim.cs
-
 2010-09-28  Jérémie Laval  <jeremie.laval at gmail.com>
 
 	Turn Is*LockHeld properties into thread-specific values in
@@ -20,6 +83,10 @@
 
 2010-09-22  Jérémie Laval  <jeremie.laval at gmail.com>
 
+	Add tidbits of documentation to ReaderWriterLockSlim.
+
+2010-09-22  Jérémie Laval  <jeremie.laval at gmail.com>
+
 	Also set readerDoneEvent when exiting an upgradeable lock and
 	reader condition is correct.
 
@@ -27,10 +94,6 @@
 	before RwRead was removed and another Upgradeable operation
 	happened at the same time.
 
-2010-09-14  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
-
-	From master
-
 2010-09-01  Jérémie Laval  <jeremie.laval at gmail.com>
 
 	Allow recursive Write + n * Read lock pattern for
@@ -43,6 +106,14 @@
 
 2010-09-01  Jérémie Laval  <jeremie.laval at gmail.com>
 
+	Change the key of the inner dictionary to an int id instead of the
+	instance itself
+
+	It prevents object references to the rwlslim to be kept and thus
+	not GC'ed
+
+2010-09-01  Jérémie Laval  <jeremie.laval at gmail.com>
+
 	Split ReaderWriterLockSlim helper classes into their own files
 
 2010-08-31  Jérémie Laval  <jeremie.laval at gmail.com>
diff --git a/mcs/class/System.Core/System.Threading/LockRecursionException.cs b/mcs/class/System.Core/System.Threading/LockRecursionException.cs
index f6e06ce..974f737 100644
--- a/mcs/class/System.Core/System.Threading/LockRecursionException.cs
+++ b/mcs/class/System.Core/System.Threading/LockRecursionException.cs
@@ -24,7 +24,7 @@
  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
 
 using System;
 using System.Runtime.CompilerServices;
diff --git a/mcs/class/System.Core/System.Threading/ReaderWriterLockSlim.cs b/mcs/class/System.Core/System.Threading/ReaderWriterLockSlim.cs
index 5d1eb6a..32696c2 100644
--- a/mcs/class/System.Core/System.Threading/ReaderWriterLockSlim.cs
+++ b/mcs/class/System.Core/System.Threading/ReaderWriterLockSlim.cs
@@ -32,6 +32,7 @@ using System.Collections.Generic;
 using System.Security.Permissions;
 using System.Diagnostics;
 using System.Threading;
+using System.Runtime.CompilerServices;
 
 namespace System.Threading {
 
@@ -44,16 +45,30 @@ namespace System.Threading {
 		 */
 		const int RwReadBit = 3;
 
+		/* These values are used to manipulate the corresponding flags in rwlock field
+		 */
 		const int RwWait = 1;
 		const int RwWaitUpgrade = 2;
 		const int RwWrite = 4;
 		const int RwRead = 8;
 
+		/* Some explanations: this field is the central point of the lock and keep track of all the requests
+		 * that are being made. The 3 lowest bits are used as flag to track "destructive" lock entries
+		 * (i.e attempting to take the write lock with or without having acquired an upgradeable lock beforehand).
+		 * All the remaining bits are intepreted as the actual number of reader currently using the lock
+		 * (which mean the lock is limited to 4294967288 concurrent readers but since it's a high number there
+		 * is no overflow safe guard to remain simple).
+		 */
 		int rwlock;
 		
 		readonly LockRecursionPolicy recursionPolicy;
+		readonly bool noRecursion;
 
 		AtomicBoolean upgradableTaken = new AtomicBoolean ();
+
+		/* These events are just here for the sake of having a CPU-efficient sleep
+		 * when the wait for acquiring the lock is too long
+		 */
 #if NET_4_0
 		ManualResetEventSlim upgradableEvent = new ManualResetEventSlim (true);
 		ManualResetEventSlim writerDoneEvent = new ManualResetEventSlim (true);
@@ -64,15 +79,34 @@ namespace System.Threading {
 		ManualResetEvent readerDoneEvent = new ManualResetEvent (true);
 #endif
 
+		// This Stopwatch instance is used for all threads since .Elapsed is thread-safe
+		readonly static Stopwatch sw = Stopwatch.StartNew ();
+
+		/* For performance sake, these numbers are manipulated via classic increment and
+		 * decrement operations and thus are (as hinted by MSDN) not meant to be precise
+		 */
 		int numReadWaiters, numUpgradeWaiters, numWriteWaiters;
 		bool disposed;
 
 		static int idPool = int.MinValue;
 		readonly int id = Interlocked.Increment (ref idPool);
 
+		/* This dictionary is instanciated per thread for all existing ReaderWriterLockSlim instance.
+		 * Each instance is defined by an internal integer id value used as a key in the dictionary.
+		 * to avoid keeping unneeded reference to the instance and getting in the way of the GC.
+		 * Since there is no LockCookie type here, all the useful per-thread infos concerning each
+		 * instance are kept here.
+		 */
 		[ThreadStatic]
 		static IDictionary<int, ThreadLockState> currentThreadState;
 
+		/* Rwls tries to use this array as much as possible to quickly retrieve the thread-local
+		 * informations so that it ends up being only an array lookup. When the number of thread
+		 * using the instance goes past the length of the array, the code fallback to the normal
+		 * dictionary
+		 */
+		ThreadLockState[] fastStateCache = new ThreadLockState[64];
+
 		public ReaderWriterLockSlim () : this (LockRecursionPolicy.NoRecursion)
 		{
 		}
@@ -80,6 +114,7 @@ namespace System.Threading {
 		public ReaderWriterLockSlim (LockRecursionPolicy recursionPolicy)
 		{
 			this.recursionPolicy = recursionPolicy;
+			this.noRecursion = recursionPolicy == LockRecursionPolicy.NoRecursion;
 		}
 
 		public void EnterReadLock ()
@@ -91,8 +126,8 @@ namespace System.Threading {
 		{
 			ThreadLockState ctstate = CurrentThreadState;
 
-			if (CheckState (millisecondsTimeout, LockState.Read)) {
-				ctstate.ReaderRecursiveCount++;
+			if (CheckState (ctstate, millisecondsTimeout, LockState.Read)) {
+				++ctstate.ReaderRecursiveCount;
 				return true;
 			}
 
@@ -101,22 +136,30 @@ namespace System.Threading {
 			// after user calls ExitUpgradeableReadLock.
 			// Same idea when recursion is allowed and a write thread wants to
 			// go for a Read too.
-			if (CurrentLockState.Has (LockState.Upgradable)
-			    || recursionPolicy == LockRecursionPolicy.SupportsRecursion) {
-				Interlocked.Add (ref rwlock, RwRead);
-				ctstate.LockState ^= LockState.Read;
-				ctstate.ReaderRecursiveCount++;
+			if (ctstate.LockState.Has (LockState.Upgradable)
+			    || (!noRecursion && ctstate.LockState.Has (LockState.Write))) {
+				RuntimeHelpers.PrepareConstrainedRegions ();
+				try {}
+				finally {
+					Interlocked.Add (ref rwlock, RwRead);
+					ctstate.LockState ^= LockState.Read;
+					++ctstate.ReaderRecursiveCount;
+				}
 
 				return true;
 			}
 			
-			Stopwatch sw = Stopwatch.StartNew ();
-			Interlocked.Increment (ref numReadWaiters);
+			++numReadWaiters;
 			int val = 0;
+			long start = millisecondsTimeout == -1 ? 0 : sw.ElapsedMilliseconds;
+			bool success = false;
 
-			while (millisecondsTimeout == -1 || sw.ElapsedMilliseconds < millisecondsTimeout) {
-				if ((rwlock & 0x7) > 0) {
-					writerDoneEvent.Wait (ComputeTimeout (millisecondsTimeout, sw));
+			do {
+				/* Check if a writer is present (RwWrite) or if there is someone waiting to
+				 * acquire a writer lock in the queue (RwWait | RwWaitUpgrade).
+				 */
+				if ((rwlock & (RwWrite | RwWait | RwWaitUpgrade)) > 0) {
+					writerDoneEvent.Wait (ComputeTimeout (millisecondsTimeout, start));
 					continue;
 				}
 
@@ -124,25 +167,31 @@ namespace System.Threading {
 				 * if the adding was too late and another writer came in between
 				 * we revert the operation.
 				 */
-				if (((val = Interlocked.Add (ref rwlock, RwRead)) & 0x7) == 0) {
-					/* If we are the first reader, reset the event to let other threads
-					 * sleep correctly if they try to acquire write lock
-					 */
-					if (val >> RwReadBit == 1)
-						readerDoneEvent.Reset ();
-
-					ctstate.LockState ^= LockState.Read;
-					ctstate.ReaderRecursiveCount++;
-					Interlocked.Decrement (ref numReadWaiters);
-					return true;
+				RuntimeHelpers.PrepareConstrainedRegions ();
+				try {}
+				finally {
+					if (((val = Interlocked.Add (ref rwlock, RwRead)) & (RwWrite | RwWait | RwWaitUpgrade)) == 0) {
+						/* If we are the first reader, reset the event to let other threads
+						 * sleep correctly if they try to acquire write lock
+						 */
+						if (val >> RwReadBit == 1)
+							readerDoneEvent.Reset ();
+
+						ctstate.LockState ^= LockState.Read;
+						++ctstate.ReaderRecursiveCount;
+						--numReadWaiters;
+						success = true;
+					} else {
+						Interlocked.Add (ref rwlock, -RwRead);
+					}
 				}
+				if (success)
+					return true;
 
-				Interlocked.Add (ref rwlock, -RwRead);
-
-				writerDoneEvent.Wait (ComputeTimeout (millisecondsTimeout, sw));
-			}
+				writerDoneEvent.Wait (ComputeTimeout (millisecondsTimeout, start));
+			} while (millisecondsTimeout == -1 || (sw.ElapsedMilliseconds - start) < millisecondsTimeout);
 
-			Interlocked.Decrement (ref numReadWaiters);
+			--numReadWaiters;
 			return false;
 		}
 
@@ -153,15 +202,20 @@ namespace System.Threading {
 
 		public void ExitReadLock ()
 		{
-			ThreadLockState ctstate = CurrentThreadState;
+			RuntimeHelpers.PrepareConstrainedRegions ();
+			try {}
+			finally {
+				ThreadLockState ctstate = CurrentThreadState;
 
-			if (!ctstate.LockState.Has (LockState.Read))
-				throw new SynchronizationLockException ("The current thread has not entered the lock in read mode");
+				if (!ctstate.LockState.Has (LockState.Read))
+					throw new SynchronizationLockException ("The current thread has not entered the lock in read mode");
 
-			ctstate.LockState ^= LockState.Read;
-			ctstate.ReaderRecursiveCount--;
-			if (Interlocked.Add (ref rwlock, -RwRead) >> RwReadBit == 0)
-				readerDoneEvent.Set ();
+				if (--ctstate.ReaderRecursiveCount == 0) {
+					ctstate.LockState ^= LockState.Read;
+					if (Interlocked.Add (ref rwlock, -RwRead) >> RwReadBit == 0)
+						readerDoneEvent.Set ();
+				}
+			}
 		}
 
 		public void EnterWriteLock ()
@@ -173,55 +227,87 @@ namespace System.Threading {
 		{
 			ThreadLockState ctstate = CurrentThreadState;
 
-			if (CheckState (millisecondsTimeout, LockState.Write)) {
-				ctstate.WriterRecursiveCount++;
+			if (CheckState (ctstate, millisecondsTimeout, LockState.Write)) {
+				++ctstate.WriterRecursiveCount;
 				return true;
 			}
 
-			Stopwatch sw = Stopwatch.StartNew ();
-			Interlocked.Increment (ref numWriteWaiters);
+			++numWriteWaiters;
 			bool isUpgradable = ctstate.LockState.Has (LockState.Upgradable);
+			bool registered = false;
+			bool success = false;
 
-			/* If the code goes there that means we had a read lock beforehand
-			 * that need to be suppressed, we also take the opportunity to register
-			 * our interest in the write lock to avoid other write wannabe process
-			 * coming in the middle
-			 */
-			if (isUpgradable && rwlock >= RwRead)
-				if (Interlocked.Add (ref rwlock, RwWaitUpgrade - RwRead) >> RwReadBit == 0)
-					readerDoneEvent.Set ();
-
-			int stateCheck = isUpgradable ? RwWaitUpgrade : RwWait;
-
-			while (millisecondsTimeout < 0 || sw.ElapsedMilliseconds < millisecondsTimeout) {
-				int state = rwlock;
-
-				if (state <= stateCheck) {
-					if (Interlocked.CompareExchange (ref rwlock, RwWrite, state) == state) {
-						writerDoneEvent.Reset ();
-						ctstate.LockState ^= LockState.Write;
-						ctstate.WriterRecursiveCount++;
-						Interlocked.Decrement (ref numWriteWaiters);
-						return true;
+			RuntimeHelpers.PrepareConstrainedRegions ();
+			try {
+				/* If the code goes there that means we had a read lock beforehand
+				 * that need to be suppressed, we also take the opportunity to register
+				 * our interest in the write lock to avoid other write wannabe process
+				 * coming in the middle
+				 */
+				if (isUpgradable && rwlock >= RwRead) {
+					try {}
+					finally {
+						if (Interlocked.Add (ref rwlock, RwWaitUpgrade - RwRead) >> RwReadBit == 0)
+							readerDoneEvent.Set ();
+						registered = true;
 					}
-					state = rwlock;
 				}
 
-				// We register our interest in taking the Write lock (if upgradeable it's already done)
-				if (!isUpgradable)
-					while ((state & RwWait) == 0 && Interlocked.CompareExchange (ref rwlock, state | RwWait, state) == state)
-						state = rwlock;
-
-				// Before falling to sleep
-				while (rwlock > stateCheck && (millisecondsTimeout < 0 || sw.ElapsedMilliseconds < millisecondsTimeout)) {
-					if ((rwlock & RwWrite) != 0)
-						writerDoneEvent.Wait (ComputeTimeout (millisecondsTimeout, sw));
-					else if ((rwlock >> RwReadBit) > 0)
-						readerDoneEvent.Wait (ComputeTimeout (millisecondsTimeout, sw));
-				}
+				int stateCheck = isUpgradable ? RwWaitUpgrade : RwWait;
+				long start = millisecondsTimeout == -1 ? 0 : sw.ElapsedMilliseconds;
+
+				do {
+					int state = rwlock;
+
+					if (state <= stateCheck) {
+						try {}
+						finally {
+							if (Interlocked.CompareExchange (ref rwlock, RwWrite, state) == state) {
+								writerDoneEvent.Reset ();
+								ctstate.LockState ^= LockState.Write;
+								++ctstate.WriterRecursiveCount;
+								--numWriteWaiters;
+								registered = false;
+								success = true;
+							}
+						}
+						if (success)
+							return true;
+					}
+
+					state = rwlock;
+
+					// We register our interest in taking the Write lock (if upgradeable it's already done)
+					if (!isUpgradable) {
+						while ((state & RwWait) == 0) {
+							try {}
+							finally {
+								if (Interlocked.CompareExchange (ref rwlock, state | RwWait, state) == state)
+									registered = true;
+							}
+							if (registered)
+								break;
+							state = rwlock;
+						}
+					}
+
+					// Before falling to sleep
+					do {
+						if (rwlock <= stateCheck)
+							break;
+						if ((rwlock & RwWrite) != 0)
+							writerDoneEvent.Wait (ComputeTimeout (millisecondsTimeout, start));
+						else if ((rwlock >> RwReadBit) > 0)
+							readerDoneEvent.Wait (ComputeTimeout (millisecondsTimeout, start));
+					} while (millisecondsTimeout < 0 || (sw.ElapsedMilliseconds - start) < millisecondsTimeout);
+				} while (millisecondsTimeout < 0 || (sw.ElapsedMilliseconds - start) < millisecondsTimeout);
+
+				--numWriteWaiters;
+			} finally {
+				if (registered)
+					Interlocked.Add (ref rwlock, isUpgradable ? -RwWaitUpgrade : -RwWait);
 			}
 
-			Interlocked.Decrement (ref numWriteWaiters);
 			return false;
 		}
 
@@ -232,19 +318,24 @@ namespace System.Threading {
 
 		public void ExitWriteLock ()
 		{
-			ThreadLockState ctstate = CurrentThreadState;
+			RuntimeHelpers.PrepareConstrainedRegions ();
+			try {}
+			finally {
+				ThreadLockState ctstate = CurrentThreadState;
 
-			if (!ctstate.LockState.Has (LockState.Write))
-				throw new SynchronizationLockException ("The current thread has not entered the lock in write mode");
+				if (!ctstate.LockState.Has (LockState.Write))
+					throw new SynchronizationLockException ("The current thread has not entered the lock in write mode");
 			
-			bool isUpgradable = ctstate.LockState.Has (LockState.Upgradable);
-			ctstate.LockState ^= LockState.Write;
-			ctstate.WriterRecursiveCount--;
+				if (--ctstate.WriterRecursiveCount == 0) {
+					bool isUpgradable = ctstate.LockState.Has (LockState.Upgradable);
+					ctstate.LockState ^= LockState.Write;
 
-			int value = Interlocked.Add (ref rwlock, isUpgradable ? RwRead - RwWrite : -RwWrite);
-			writerDoneEvent.Set ();
-			if (isUpgradable && value >> RwReadBit == 1)
-				readerDoneEvent.Reset ();
+					int value = Interlocked.Add (ref rwlock, isUpgradable ? RwRead - RwWrite : -RwWrite);
+					writerDoneEvent.Set ();
+					if (isUpgradable && value >> RwReadBit == 1)
+						readerDoneEvent.Reset ();
+				}
+			}
 		}
 
 		public void EnterUpgradeableReadLock ()
@@ -260,40 +351,42 @@ namespace System.Threading {
 		{
 			ThreadLockState ctstate = CurrentThreadState;
 
-			if (CheckState (millisecondsTimeout, LockState.Upgradable)) {
-				ctstate.UpgradeableRecursiveCount++;
+			if (CheckState (ctstate, millisecondsTimeout, LockState.Upgradable)) {
+				++ctstate.UpgradeableRecursiveCount;
 				return true;
 			}
 
 			if (ctstate.LockState.Has (LockState.Read))
 				throw new LockRecursionException ("The current thread has already entered read mode");
 
-			Stopwatch sw = Stopwatch.StartNew ();
-			Interlocked.Increment (ref numUpgradeWaiters);
+			++numUpgradeWaiters;
+			long start = millisecondsTimeout == -1 ? 0 : sw.ElapsedMilliseconds;
 
+			// We first try to obtain the upgradeable right
 			while (!upgradableEvent.IsSet () || !upgradableTaken.TryRelaxedSet ()) {
-				if (millisecondsTimeout != -1 && sw.ElapsedMilliseconds > millisecondsTimeout) {
-					Interlocked.Decrement (ref numUpgradeWaiters);
+				if (millisecondsTimeout != -1 && (sw.ElapsedMilliseconds - start) > millisecondsTimeout) {
+					--numUpgradeWaiters;
 					return false;
 				}
 
-				upgradableEvent.Wait (ComputeTimeout (millisecondsTimeout, sw));
+				upgradableEvent.Wait (ComputeTimeout (millisecondsTimeout, start));
 			}
 
 			upgradableEvent.Reset ();
 
-			if (TryEnterReadLock (ComputeTimeout (millisecondsTimeout, sw))) {
+			// Then it's a simple reader lock acquiring
+			if (TryEnterReadLock (ComputeTimeout (millisecondsTimeout, start))) {
 				ctstate.LockState = LockState.Upgradable;
-				Interlocked.Decrement (ref numUpgradeWaiters);
-				ctstate.ReaderRecursiveCount--;
-				ctstate.UpgradeableRecursiveCount++;
+				--numUpgradeWaiters;
+				--ctstate.ReaderRecursiveCount;
+				++ctstate.UpgradeableRecursiveCount;
 				return true;
 			}
 
 			upgradableTaken.Value = false;
 			upgradableEvent.Set ();
 
-			Interlocked.Decrement (ref numUpgradeWaiters);
+			--numUpgradeWaiters;
 
 			return false;
 		}
@@ -305,18 +398,23 @@ namespace System.Threading {
 	       
 		public void ExitUpgradeableReadLock ()
 		{
-			ThreadLockState ctstate = CurrentThreadState;
+			RuntimeHelpers.PrepareConstrainedRegions ();
+			try {}
+			finally {
+				ThreadLockState ctstate = CurrentThreadState;
 
-			if (!ctstate.LockState.Has (LockState.Upgradable | LockState.Read))
-				throw new SynchronizationLockException ("The current thread has not entered the lock in upgradable mode");
-			
-			upgradableTaken.Value = false;
-			upgradableEvent.Set ();
+				if (!ctstate.LockState.Has (LockState.Upgradable | LockState.Read))
+					throw new SynchronizationLockException ("The current thread has not entered the lock in upgradable mode");
 
-			ctstate.LockState ^= LockState.Upgradable;
-			ctstate.UpgradeableRecursiveCount--;
-			if (Interlocked.Add (ref rwlock, -RwRead) >> RwReadBit == 0)
-				readerDoneEvent.Set ();
+				if (--ctstate.UpgradeableRecursiveCount == 0) {
+					upgradableTaken.Value = false;
+					upgradableEvent.Set ();
+
+					ctstate.LockState ^= LockState.Upgradable;
+					if (Interlocked.Add (ref rwlock, -RwRead) >> RwReadBit == 0)
+						readerDoneEvent.Set ();
+				}
+			}
 		}
 
 		public void Dispose ()
@@ -390,17 +488,13 @@ namespace System.Threading {
 			}
 		}
 
-		LockState CurrentLockState {
-			get {
-				return CurrentThreadState.LockState;
-			}
-			set {
-				CurrentThreadState.LockState = value;
-			}
-		}
-
 		ThreadLockState CurrentThreadState {
 			get {
+				int tid = Thread.CurrentThread.ManagedThreadId;
+
+				if (tid < fastStateCache.Length)
+					return fastStateCache[tid] == null ? (fastStateCache[tid] = new ThreadLockState ()) : fastStateCache[tid];
+
 				if (currentThreadState == null)
 					currentThreadState = new Dictionary<int, ThreadLockState> ();
 
@@ -412,21 +506,22 @@ namespace System.Threading {
 			}
 		}
 
-		bool CheckState (int millisecondsTimeout, LockState validState)
+		bool CheckState (ThreadLockState state, int millisecondsTimeout, LockState validState)
 		{
 			if (disposed)
 				throw new ObjectDisposedException ("ReaderWriterLockSlim");
 
-			if (millisecondsTimeout < Timeout.Infinite)
+			if (millisecondsTimeout < -1)
 				throw new ArgumentOutOfRangeException ("millisecondsTimeout");
 
 			// Detect and prevent recursion
-			LockState ctstate = CurrentLockState;
+			LockState ctstate = state.LockState;
+
+			if (ctstate != LockState.None && noRecursion && (ctstate != LockState.Upgradable || validState == LockState.Upgradable))
+				throw new LockRecursionException ("The current thread has already a lock and recursion isn't supported");
 
-			if (recursionPolicy == LockRecursionPolicy.NoRecursion)
-				if ((ctstate != LockState.None && ctstate != LockState.Upgradable)
-				    || (ctstate == LockState.Upgradable && validState == LockState.Upgradable))
-					throw new LockRecursionException ("The current thread has already a lock and recursion isn't supported");
+			if (noRecursion)
+				return false;
 
 			// If we already had right lock state, just return
 			if (ctstate.Has (validState))
@@ -453,9 +548,9 @@ namespace System.Threading {
 			}
 		}
 
-		static int ComputeTimeout (int millisecondsTimeout, Stopwatch sw)
+		static int ComputeTimeout (int millisecondsTimeout, long start)
 		{
-			return millisecondsTimeout == -1 ? -1 : (int)Math.Max (sw.ElapsedMilliseconds - millisecondsTimeout, 1);
+			return millisecondsTimeout == -1 ? -1 : (int)Math.Max (sw.ElapsedMilliseconds - start - millisecondsTimeout, 1);
 		}
 	}
 }
diff --git a/mcs/class/System.Core/System.Threading/ReaderWriterLockSlimExtensions.cs b/mcs/class/System.Core/System.Threading/ReaderWriterLockSlimExtensions.cs
index b7d8524..18d6f6e 100644
--- a/mcs/class/System.Core/System.Threading/ReaderWriterLockSlimExtensions.cs
+++ b/mcs/class/System.Core/System.Threading/ReaderWriterLockSlimExtensions.cs
@@ -37,7 +37,7 @@ namespace System.Threading
 			return (state & value) > 0;
 		}
 
-#if !NET_4_0 && !NET_4_0_BOOTSTRAP
+#if !NET_4_0
 		internal static bool Wait (this ManualResetEvent self, int timeout)
 		{
 			return self.WaitOne (timeout);
diff --git a/mcs/class/System.Core/System.Threading/ThreadLockState.cs b/mcs/class/System.Core/System.Threading/ThreadLockState.cs
index f4dacc9..be03e1f 100644
--- a/mcs/class/System.Core/System.Threading/ThreadLockState.cs
+++ b/mcs/class/System.Core/System.Threading/ThreadLockState.cs
@@ -34,9 +34,9 @@ namespace System.Threading
 	internal enum LockState
 	{
 		None = 0,
-		Read = 1,
-		Write = 2,
-		Upgradable = 4,
+		Upgradable = 1,
+		Read = 2,
+		Write = 4,
 		UpgradedRead = Upgradable | Read,
 		UpgradedWrite = Upgradable | Write
 	}
diff --git a/mcs/class/System.Core/System/Actions.cs b/mcs/class/System.Core/System/Actions.cs
index 69b3458..0d09183 100644
--- a/mcs/class/System.Core/System/Actions.cs
+++ b/mcs/class/System.Core/System/Actions.cs
@@ -29,7 +29,7 @@
 using System;
 using System.Runtime.CompilerServices;
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
 [assembly:TypeForwardedTo (typeof(Action<>))]
 [assembly:TypeForwardedTo (typeof(Action<,>))]
 [assembly:TypeForwardedTo (typeof(Action<,,>))]
@@ -41,7 +41,7 @@ using System.Runtime.CompilerServices;
 
 namespace System
 {
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
 	public delegate void Action<in T1, in T2, in T3, in T4, in T5, in T6, in T7, in T8, in T9> (
 		T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9);
 
diff --git a/mcs/class/System.Core/System/ChangeLog b/mcs/class/System.Core/System/ChangeLog
index 87d176c..1a97f56 100644
--- a/mcs/class/System.Core/System/ChangeLog
+++ b/mcs/class/System.Core/System/ChangeLog
@@ -1,3 +1,37 @@
+2010-12-16  Jonathan Pryor  <jonpryor at vt.edu>
+
+	[monodroid] Add support for the Android TimeZone file format.
+
+	Fixes #657609.
+
+	Android uses "ye standard" timezone file format, but instead of
+	using a directory + file structure as libc uses, they throw
+	everything into two files, a "zoneinfo.dat" and a "zoneinfo.idx",
+	where "zoneinfo.dat" is the concatenation of all the TZIF files
+	and "zoneinfo.idx" contains the timezone names and offsets into
+	"zoneinfo.dat". From the ZoneInfoDB documentation:
+
+	However, to conserve disk space the data for all time zones are
+	concatenated into a single file, and a second file is used to
+	indicate the starting position of each time zone record. A third
+	file indicates the version of the zoneinfo databse used to
+	generate the data.
+
+	TimeZoneInfo.Android.cs is a C# port of the corresponding Android
+	ZoneInfoDB type so that Mono can use Android's timezone DB.
+
+2010-12-15  Marek Safar  <marek.safar at gmail.com>
+
+	Some .net 4.0 api compatibility fixes
+
+2010-12-08  Marek Safar  <marek.safar at gmail.com>
+
+	Fix parameter name
+
+2010-09-08  Jb Evain  <jbevain at gmail.com>
+
+	Enable the System.Core build for monodroid
+
 2010-08-23  Marek Safar  <marek.safar at gmail.com>
 
 	Fixed typo in T14 argument
diff --git a/mcs/class/System.Core/System/Funcs.cs b/mcs/class/System.Core/System/Funcs.cs
index 2bd1797..621bd63 100644
--- a/mcs/class/System.Core/System/Funcs.cs
+++ b/mcs/class/System.Core/System/Funcs.cs
@@ -25,7 +25,7 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 //
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
 using System;
 using System.Runtime.CompilerServices;
 
@@ -38,7 +38,7 @@ using System.Runtime.CompilerServices;
 
 namespace System
 {
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
 	public delegate TResult Func<in T1, in T2, in T3, in T4, in T5, in T6, in T7, in T8, in T9, out TResult> (
 		T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9);
 
@@ -64,7 +64,7 @@ namespace System
 		T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, T13 arg13, T14 arg14, T15 arg15, T16 arg16);
 #else
 	public delegate TResult Func<TResult> ();
-	public delegate TResult Func<T, TResult> (T arg1);
+	public delegate TResult Func<T, TResult> (T arg);
 	public delegate TResult Func<T1, T2, TResult> (T1 arg1, T2 arg2);
 	public delegate TResult Func<T1, T2, T3, TResult> (T1 arg1, T2 arg2, T3 arg3);
 	public delegate TResult Func<T1, T2, T3, T4, TResult> (T1 arg1, T2 arg2, T3 arg3, T4 arg4);
diff --git a/mcs/class/System.Core/System/InvalidTimeZoneException.cs b/mcs/class/System.Core/System/InvalidTimeZoneException.cs
index 50ff757..cb9e438 100644
--- a/mcs/class/System.Core/System/InvalidTimeZoneException.cs
+++ b/mcs/class/System.Core/System/InvalidTimeZoneException.cs
@@ -24,7 +24,7 @@
  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0 || MOONLIGHT
+#if NET_4_0 || MOONLIGHT
 
 using System;
 using System.Runtime.CompilerServices;
diff --git a/mcs/class/System.Core/System/TimeZoneInfo.AdjustmentRule.cs b/mcs/class/System.Core/System/TimeZoneInfo.AdjustmentRule.cs
index 1ec0e11..c597a18 100644
--- a/mcs/class/System.Core/System/TimeZoneInfo.AdjustmentRule.cs
+++ b/mcs/class/System.Core/System/TimeZoneInfo.AdjustmentRule.cs
@@ -24,7 +24,7 @@
  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
 
-#if (INSIDE_CORLIB && (NET_4_0 || MOONLIGHT)) || (MONOTOUCH && !INSIDE_CORLIB) || (NET_3_5 && !NET_4_0 && !BOOTSTRAP_NET_4_0)
+#if (INSIDE_CORLIB && (NET_4_0 || MOONLIGHT)) || (MOBILE && !INSIDE_CORLIB) || (NET_3_5 && !NET_4_0)
 
 using System.Runtime.CompilerServices;
 using System.Runtime.Serialization;
@@ -33,7 +33,7 @@ namespace System
 {
 	public sealed partial class TimeZoneInfo {
 		[SerializableAttribute]
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
 		[TypeForwardedFrom (Consts.AssemblySystemCore_3_5)]
 #elif MOONLIGHT
 		[TypeForwardedFrom (Consts.AssemblySystem_Core)]
diff --git a/mcs/class/System.Core/System/TimeZoneInfo.Android.cs b/mcs/class/System.Core/System/TimeZoneInfo.Android.cs
new file mode 100644
index 0000000..c95bb1e
--- /dev/null
+++ b/mcs/class/System.Core/System/TimeZoneInfo.Android.cs
@@ -0,0 +1,299 @@
+/*
+ * System.TimeZoneInfo Android Support
+ *
+ * Author(s)
+ * 	Jonathan Pryor  <jpryor at novell.com>
+ * 	The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#if MONODROID
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using System.Text;
+
+namespace System {
+
+	partial class TimeZoneInfo {
+
+		/*
+		 * Android Timezone support infrastructure.
+		 *
+		 * This is a C# port of org.apache.harmony.luni.internal.util.ZoneInfoDB:
+		 *
+		 *    http://android.git.kernel.org/?p=platform/libcore.git;a=blob;f=luni/src/main/java/org/apache/harmony/luni/internal/util/ZoneInfoDB.java;h=3e7bdc3a952b24da535806d434a3a27690feae26;hb=HEAD
+		 *
+		 * From the ZoneInfoDB source:
+		 *
+		 *    However, to conserve disk space the data for all time zones are 
+		 *    concatenated into a single file, and a second file is used to indicate 
+		 *    the starting position of each time zone record.  A third file indicates
+		 *    the version of the zoneinfo databse used to generate the data.
+		 *
+		 * which succinctly describes why we can't just use the LIBC implementation in
+		 * TimeZoneInfo.cs -- the "standard Unixy" directory structure is NOT used.
+		 */
+		static class ZoneInfoDB {
+			const int TimeZoneNameLength  = 40;
+			const int TimeZoneIntSize     = 4;
+
+			static readonly string ZoneDirectoryName  = Environment.GetEnvironmentVariable ("ANDROID_ROOT") + "/usr/share/zoneinfo/";
+			static readonly string ZoneFileName       = ZoneDirectoryName + "zoneinfo.dat";
+			static readonly string IndexFileName      = ZoneDirectoryName + "zoneinfo.idx";
+			const           string DefaultVersion     = "2007h";
+			static readonly string VersionFileName    = ZoneDirectoryName + "zoneinfo.version";
+
+			static readonly object _lock = new object ();
+
+			static readonly string    version;
+			static readonly string[]  names;
+			static readonly int[]     starts;
+			static readonly int[]     lengths;
+			static readonly int[]     offsets;
+
+			static ZoneInfoDB ()
+			{
+				try {
+					version = ReadVersion ();
+				} catch {
+					version = DefaultVersion;
+				}
+
+				try {
+					ReadDatabase (out names, out starts, out lengths, out offsets);
+				} catch {
+					names   = new string [0];
+					starts  = new int [0];
+					lengths = new int [0];
+					offsets = new int [0];
+				}
+			}
+
+			static string ReadVersion ()
+			{
+				using (var file = new StreamReader (VersionFileName, Encoding.GetEncoding ("iso-8859-1"))) {
+					return file.ReadToEnd ().Trim ();
+				}
+			}
+
+			static void ReadDatabase (out string[] names, out int[] starts, out int[] lengths, out int[] offsets)
+			{
+				using (var file = File.OpenRead (IndexFileName)) {
+					var nbuf = new byte [TimeZoneNameLength];
+
+					int numEntries = (int) (file.Length / (TimeZoneNameLength + 3*TimeZoneIntSize));
+
+					char[]  namebuf = new char [TimeZoneNameLength];
+
+					names   = new string [numEntries];
+					starts  = new int [numEntries];
+					lengths = new int [numEntries];
+					offsets = new int [numEntries];
+
+					for (int i = 0; i < numEntries; ++i) {
+						Fill (file, nbuf, nbuf.Length);
+						int namelen;
+						for (namelen = 0; namelen < nbuf.Length; ++namelen) {
+							if (nbuf [namelen] == '\0')
+								break;
+							namebuf [namelen] = (char) (nbuf [namelen] & 0xFF);
+						}
+
+						names   [i] = new string (namebuf, 0, namelen);
+						starts  [i] = ReadInt32 (file, nbuf);
+						lengths [i] = ReadInt32 (file, nbuf);
+						offsets [i] = ReadInt32 (file, nbuf);
+					}
+				}
+			}
+
+			static void Fill (Stream stream, byte[] nbuf, int required)
+			{
+				int read, offset = 0;
+				while (offset < required && (read = stream.Read (nbuf, offset, required - offset)) > 0)
+					offset += read;
+				if (read != required)
+					throw new EndOfStreamException ("Needed to read " + required + " bytes; read " + read + " bytes");
+			}
+
+			// From java.io.RandomAccessFioe.readInt(), as we need to use the same
+			// byte ordering as Java uses.
+			static int ReadInt32 (Stream stream, byte[] nbuf)
+			{
+				Fill (stream, nbuf, 4);
+				return ((nbuf [0] & 0xff) << 24) + ((nbuf [1] & 0xff) << 16) +
+					((nbuf [2] & 0xff) << 8) + (nbuf [3] & 0xff);
+			}
+
+			internal static string Version {
+				get {return version;}
+			}
+
+			internal static IEnumerable<string> GetAvailableIds ()
+			{
+				return GetAvailableIds (0, false);
+			}
+
+			internal static IEnumerable<string> GetAvailableIds (int rawOffset)
+			{
+				return GetAvailableIds (rawOffset, true);
+			}
+
+			static IEnumerable<string> GetAvailableIds (int rawOffset, bool checkOffset)
+			{
+				for (int i = 0; i < offsets.Length; ++i) {
+					if (!checkOffset || offsets [i] == rawOffset)
+						yield return names [i];
+				}
+			}
+
+			static TimeZoneInfo _GetTimeZone (string name)
+			{
+				int start, length;
+				using (var stream = GetTimeZoneData (name, out start, out length)) {
+					if (stream == null)
+						return null;
+					byte[] buf = new byte [length];
+					Fill (stream, buf, buf.Length);
+					return TimeZoneInfo.ParseTZBuffer (name, buf, length);
+				}
+			}
+
+			static FileStream GetTimeZoneData (string name, out int start, out int length)
+			{
+				var f = new FileInfo (Path.Combine (ZoneDirectoryName, name));
+				if (f.Exists) {
+					start   = 0;
+					length  = (int) f.Length;
+					return f.OpenRead ();
+				}
+
+				start = length = 0;
+
+				int i = Array.BinarySearch (names, name);
+				if (i < 0)
+					return null;
+
+				start   = starts [i];
+				length  = lengths [i];
+
+				var stream = File.OpenRead (ZoneFileName);
+				stream.Seek (start, SeekOrigin.Begin);
+
+				return stream;
+			}
+
+			internal static TimeZoneInfo GetTimeZone (string id)
+			{
+				if (id != null) {
+					if (id == "GMT" || id == "UTC")
+						return new TimeZoneInfo (id, TimeSpan.FromSeconds (0), id, id, id, null, true);
+					if (id.StartsWith ("GMT"))
+						return new TimeZoneInfo (id,
+								TimeSpan.FromSeconds (ParseNumericZone (id)),
+								id, id, id, null, true);
+				}
+
+				try {
+					return _GetTimeZone (id);
+				} catch (Exception e) {
+					return null;
+				}
+			}
+
+			static int ParseNumericZone (string name)
+			{
+				if (name == null || !name.StartsWith ("GMT") || name.Length <= 3)
+					return 0;
+
+				int sign;
+				if (name [3] == '+')
+					sign = 1;
+				else if (name [3] == '-')
+					sign = -1;
+				else
+					return 0;
+
+				int where;
+				int hour = 0;
+				bool colon = false;
+				for (where = 4; where < name.Length; where++) {
+					char c = name [where];
+
+					if (c == ':') {
+						where++;
+						colon = true;
+						break;
+					}
+
+					if (c >= '0' && c <= '9')
+						hour = hour * 10 + c - '0';
+					else
+						return 0;
+				}
+
+				int min = 0;
+				for (; where < name.Length; where++) {
+					char c = name [where];
+
+					if (c >= '0' && c <= '9')
+						min = min * 10 + c - '0';
+					else
+						return 0;
+				}
+
+				if (colon)
+					return sign * (hour * 60 + min) * 60;
+				else if (hour >= 100)
+					return sign * ((hour / 100) * 60 + (hour % 100)) * 60;
+				else
+					return sign * (hour * 60) * 60;
+			}
+
+			static TimeZoneInfo defaultZone;
+			internal static TimeZoneInfo Default {
+				get {
+					lock (_lock) {
+						if (defaultZone != null)
+							return defaultZone;
+						return defaultZone = GetTimeZone (GetDefaultTimeZoneName ());
+					}
+				}
+			}
+
+			// <sys/system_properties.h>
+			[DllImport ("/system/lib/libc.so")]
+			static extern int __system_property_get (string name, StringBuilder value);
+
+			const int MaxPropertyNameLength   = 32; // <sys/system_properties.h>
+			const int MaxPropertyValueLength  = 92; // <sys/system_properties.h>
+
+			static string GetDefaultTimeZoneName ()
+			{
+				var buf = new StringBuilder (MaxPropertyValueLength + 1);
+				int n = __system_property_get ("persist.sys.timezone", buf);
+				if (n > 0)
+					return buf.ToString ();
+				return null;
+			}
+		}
+	}
+}
+
+#endif // MONODROID
+
diff --git a/mcs/class/System.Core/System/TimeZoneInfo.TransitionTime.cs b/mcs/class/System.Core/System/TimeZoneInfo.TransitionTime.cs
index 72eca19..615bf2e 100644
--- a/mcs/class/System.Core/System/TimeZoneInfo.TransitionTime.cs
+++ b/mcs/class/System.Core/System/TimeZoneInfo.TransitionTime.cs
@@ -24,7 +24,7 @@
  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
 
-#if (INSIDE_CORLIB && (NET_4_0 || BOOTSTRAP_NET_4_0 || MOONLIGHT)) || (MONOTOUCH && !INSIDE_CORLIB) || (NET_3_5 && !NET_4_0 && !BOOTSTRAP_NET_4_0)
+#if (INSIDE_CORLIB && (NET_4_0 || MOONLIGHT)) || (MOBILE && !INSIDE_CORLIB) || (NET_3_5 && !NET_4_0)
 
 using System.Runtime.CompilerServices;
 using System.Runtime.Serialization;
@@ -34,7 +34,7 @@ namespace System
 	public sealed partial class TimeZoneInfo 
 	{
 		[SerializableAttribute]
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
 		[TypeForwardedFrom (Consts.AssemblySystemCore_3_5)]
 #elif MOONLIGHT
 		[TypeForwardedFrom (Consts.AssemblySystem_Core)]
@@ -193,10 +193,10 @@ namespace System
 				throw new NotImplementedException ();
 			}
 	
-			public override bool Equals (object other)
+			public override bool Equals (object obj)
 			{
-				if (other is TransitionTime)
-					return this == (TransitionTime) other;
+				if (obj is TransitionTime)
+					return this == (TransitionTime) obj;
 				return false;
 			}
 
diff --git a/mcs/class/System.Core/System/TimeZoneInfo.cs b/mcs/class/System.Core/System/TimeZoneInfo.cs
index 6be3f8f..8742194 100644
--- a/mcs/class/System.Core/System/TimeZoneInfo.cs
+++ b/mcs/class/System.Core/System/TimeZoneInfo.cs
@@ -27,18 +27,19 @@
 using System;
 using System.Runtime.CompilerServices;
 
-#if !INSIDE_CORLIB && (NET_4_0 || BOOTSTRAP_NET_4_0 || MOONLIGHT)
+#if !INSIDE_CORLIB && (NET_4_0 || MOONLIGHT)
 
 [assembly:TypeForwardedTo (typeof(TimeZoneInfo))]
 
-#elif NET_3_5 || (MONOTOUCH && !INSIDE_CORLIB) || (MOONLIGHT && INSIDE_CORLIB)
+#elif NET_3_5 || (MOBILE && !INSIDE_CORLIB) || (MOONLIGHT && INSIDE_CORLIB)
 
 using System.Collections.Generic;
 using System.Collections.ObjectModel;
+using System.Linq;
 using System.Runtime.Serialization;
 using System.Text;
 
-#if LIBC
+#if LIBC || MONODROID
 using System.IO;
 using Mono;
 #endif
@@ -47,7 +48,7 @@ using Microsoft.Win32;
 
 namespace System
 {
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
 	[TypeForwardedFrom (Consts.AssemblySystemCore_3_5)]
 #elif MOONLIGHT
 	[TypeForwardedFrom (Consts.AssemblySystem_Core)]
@@ -83,7 +84,9 @@ namespace System
 		public static TimeZoneInfo Local {
 			get { 
 				if (local == null) {
-#if LIBC
+#if MONODROID
+					local = ZoneInfoDB.Default;
+#elif LIBC
 					try {
 						local = FindSystemTimeZoneByFileName ("Local", "/etc/localtime");	
 					} catch {
@@ -320,7 +323,9 @@ namespace System
 				return FromRegistryKey(id, key);
 			}
 #endif
-#if LIBC	
+#if MONODROID
+			return ZoneInfoDB.GetTimeZone (id);
+#elif LIBC
 			string filepath = Path.Combine (TimeZoneDirectory, id);
 			return FindSystemTimeZoneByFileName (id, filepath);
 #else
@@ -522,7 +527,10 @@ namespace System
 					return new ReadOnlyCollection<TimeZoneInfo> (systemTimeZones);
 				}
 #endif
-#if LIBC
+#if MONODROID
+			systemTimeZones.AddRange (ZoneInfoDB.GetAvailableIds ()
+					.Select (id => ZoneInfoDB.GetTimeZone (id)));
+#elif LIBC
 				string[] continents = new string [] {"Africa", "America", "Antarctica", "Arctic", "Asia", "Atlantic", "Brazil", "Canada", "Chile", "Europe", "Indian", "Mexico", "Mideast", "Pacific", "US"};
 				foreach (string continent in continents) {
 					try {
@@ -782,7 +790,7 @@ namespace System
 			return adjustmentRules;
 		}
 
-#if LIBC
+#if LIBC || MONODROID
 		private static bool ValidTZFile (byte [] buffer, int length)
 		{
 			StringBuilder magic = new StringBuilder ();
diff --git a/mcs/class/System.Core/System/TimeZoneNotFoundException.cs b/mcs/class/System.Core/System/TimeZoneNotFoundException.cs
index 8691e73..4903ff1 100644
--- a/mcs/class/System.Core/System/TimeZoneNotFoundException.cs
+++ b/mcs/class/System.Core/System/TimeZoneNotFoundException.cs
@@ -24,7 +24,7 @@
  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0 || MOONLIGHT
+#if NET_4_0 || MOONLIGHT
 
 using System;
 using System.Runtime.CompilerServices;
diff --git a/mcs/class/System.Core/Test/System.Collections.Generic/ChangeLog b/mcs/class/System.Core/Test/System.Collections.Generic/ChangeLog
index ce27d3f..06020fd 100644
--- a/mcs/class/System.Core/Test/System.Collections.Generic/ChangeLog
+++ b/mcs/class/System.Core/Test/System.Collections.Generic/ChangeLog
@@ -1,3 +1,7 @@
+2010-12-09  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Implement CreateSetComparer method in HashSet
+
 2010-08-19  Jb Evain  <jbevain at gmail.com>
 
 	Add test for #572084, issue with SymmetricWith and duplicate items
diff --git a/mcs/class/System.Core/Test/System.Collections.Generic/HashSetTest.cs b/mcs/class/System.Core/Test/System.Collections.Generic/HashSetTest.cs
index 7b0972f..1e51516 100644
--- a/mcs/class/System.Core/Test/System.Collections.Generic/HashSetTest.cs
+++ b/mcs/class/System.Core/Test/System.Collections.Generic/HashSetTest.cs
@@ -345,6 +345,31 @@ namespace MonoTests.System.Collections.Generic {
 			Assert.AreEqual (1, set.Count);
 		}
 
+		[Test]
+		public void TestHashSetEqualityComparer ()
+		{
+			var data = new string[] { "foo", "bar", "foobar" };
+			var set1 = new HashSet<string> (data, StringComparer.Ordinal);
+			var set2 = new HashSet<string> (data, StringComparer.OrdinalIgnoreCase);
+
+			var comparer = HashSet<string>.CreateSetComparer ();
+			Assert.IsTrue (comparer.Equals (set1, set1));
+			Assert.IsTrue (comparer.Equals (set1, set2));
+			Assert.AreEqual (comparer.GetHashCode (set1), comparer.GetHashCode (set2));
+
+			var set3 = new HashSet<string> (new [] { "foobar", "foo", "bar" });
+			Assert.IsTrue (comparer.Equals (set1, set3));
+			Assert.AreEqual (comparer.GetHashCode (set1), comparer.GetHashCode (set3));
+
+			var set4 = new HashSet<string> (new [] { "oh", "hai", "folks" });
+			Assert.IsFalse (comparer.Equals (set2, set4));
+			Assert.AreNotEqual (comparer.GetHashCode (set2), comparer.GetHashCode (set4));
+
+			Assert.IsTrue (comparer.Equals (null, null));
+			Assert.AreEqual (0, comparer.GetHashCode (null));
+			Assert.IsFalse (comparer.Equals (set1, null));
+		}
+
 		static void AssertContainsOnly<T> (IEnumerable<T> result, IEnumerable<T> data)
 		{
 			Assert.AreEqual (result.Count (), data.Count ());
diff --git a/mcs/class/System.Core/Test/System.Linq.Expressions/ChangeLog b/mcs/class/System.Core/Test/System.Linq.Expressions/ChangeLog
index b529a71..3af4699 100644
--- a/mcs/class/System.Core/Test/System.Linq.Expressions/ChangeLog
+++ b/mcs/class/System.Core/Test/System.Linq.Expressions/ChangeLog
@@ -1,3 +1,7 @@
+2010-11-29  Jb Evain  <jbevain at gmail.com>
+
+	Add MakeBinary test for ArrayIndex expressions
+
 2010-05-19  Jb Evain  <jbevain at novell.com>
 
 	* ExpressionTest_Constant.cs: add tests for nullable constants.
diff --git a/mcs/class/System.Core/Test/System.Linq.Expressions/ChangeLog b/mcs/class/System.Core/Test/System.Linq.Expressions/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Core/Test/System.Linq.Expressions/ChangeLog
copy to mcs/class/System.Core/Test/System.Linq.Expressions/ChangeLog.old
diff --git a/mcs/class/System.Core/Test/System.Linq.Expressions/ExpressionTest_MakeBinary.cs b/mcs/class/System.Core/Test/System.Linq.Expressions/ExpressionTest_MakeBinary.cs
index ea73b57..a4114de 100644
--- a/mcs/class/System.Core/Test/System.Linq.Expressions/ExpressionTest_MakeBinary.cs
+++ b/mcs/class/System.Core/Test/System.Linq.Expressions/ExpressionTest_MakeBinary.cs
@@ -284,5 +284,18 @@ namespace MonoTests.System.Linq.Expressions
 
 		}
 
+		[Test]
+		public void MakeArrayIndex ()
+		{
+			var array = Expression.Constant (new int [] { 1, 2 }, typeof (int []));
+			var index = Expression.Constant (1);
+
+			var array_index = Expression.MakeBinary (
+				ExpressionType.ArrayIndex,
+				array,
+				index);
+
+			Assert.AreEqual (ExpressionType.ArrayIndex, array_index.NodeType);
+		}
 	}
 }
diff --git a/mcs/class/System.Core/Test/System.Linq/ChangeLog b/mcs/class/System.Core/Test/System.Linq/ChangeLog
index bb06232..f672dff 100644
--- a/mcs/class/System.Core/Test/System.Linq/ChangeLog
+++ b/mcs/class/System.Core/Test/System.Linq/ChangeLog
@@ -1,3 +1,23 @@
+2011-01-07  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Add bigger unit test for Intersect and Union
+
+2010-12-30  Jb Evain  <jbevain at gmail.com>
+
+	Add test for bug #661462
+
+2010-12-03  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Fixicate some unit test
+
+2010-11-26  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	[PLinq] Split long running test in two
+
+2010-09-02  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	[Plinq] Force strict parallelism in all PLinq unit tests
+
 2010-08-27  Jérémie Laval  <jeremie.laval at gmail.com>
 
 	[PLinq] Remove the scwl noise in ParallelEnumerable
diff --git a/mcs/class/System.Core/Test/System.Linq/EnumerableAsQueryableTest.cs b/mcs/class/System.Core/Test/System.Linq/EnumerableAsQueryableTest.cs
index 375bbf6..39d8c15 100644
--- a/mcs/class/System.Core/Test/System.Linq/EnumerableAsQueryableTest.cs
+++ b/mcs/class/System.Core/Test/System.Linq/EnumerableAsQueryableTest.cs
@@ -402,6 +402,28 @@ namespace MonoTests.System.Linq {
 			IEnumerable<int> nonGen = new int[] { 1, 2, 3 };
 			Assert.IsTrue (nonGen.AsQueryable () is IQueryable<int>);
 		}
+
+		class Bar<T1, T2> : IEnumerable<T2> {
+
+			public IEnumerator<T2> GetEnumerator ()
+			{
+				yield break;
+			}
+
+			IEnumerator IEnumerable.GetEnumerator ()
+			{
+				return GetEnumerator ();
+			}
+		}
+
+		[Test]
+		public void NonGenericAsQueryableInstantiateProperQueryable ()
+		{
+			IEnumerable bar = new Bar<int, string> ();
+			IQueryable queryable = bar.AsQueryable ();
+
+			Assert.IsInstanceOfType (typeof (IQueryable<string>), queryable);
+		}
 	}
 
 	class MyEnum : IEnumerable
diff --git a/mcs/class/System.Core/Test/System.Linq/ParallelEnumerableTests.cs b/mcs/class/System.Core/Test/System.Linq/ParallelEnumerableTests.cs
index b98cf36..686bca8 100644
--- a/mcs/class/System.Core/Test/System.Linq/ParallelEnumerableTests.cs
+++ b/mcs/class/System.Core/Test/System.Linq/ParallelEnumerableTests.cs
@@ -37,6 +37,14 @@ using NUnit.Framework;
 
 namespace MonoTests.System.Linq
 {
+	internal static class AsParallelHelper
+	{
+		internal static ParallelQuery<T> AsReallyParallel<T> (this IEnumerable<T> source)
+		{
+			return source.AsParallel ().WithExecutionMode (ParallelExecutionMode.ForceParallelism);
+		}
+	}
+
 	[TestFixtureAttribute]
 	public class ParallelEnumerableTests
 	{
@@ -243,7 +251,7 @@ namespace MonoTests.System.Linq
 				int [] second = {2, 4, 6};
 				int [] result = {0, 1, 3, 5};
 	
-				AreEquivalent (result, first.AsParallel ().Except (second.AsParallel ()), 1);
+				AreEquivalent (result, first.AsReallyParallel ().Except (second.AsParallel ()), 1);
 			});
 		}
 
@@ -255,7 +263,7 @@ namespace MonoTests.System.Linq
 				int [] second = {2, 4, 6};
 				int [] result = {2, 4};
 	
-				AreEquivalent (result, first.AsParallel ().Intersect (second.AsParallel ()), 1);
+				AreEquivalent (result, first.AsReallyParallel ().Intersect (second.AsParallel ()), 1);
 			});
 		}
 
@@ -267,9 +275,31 @@ namespace MonoTests.System.Linq
 				int [] second = {2, 4, 6};
 				int [] result = {0, 1, 2, 3, 4, 5, 6};
 				
-				AreEquivalent (result, first.AsParallel ().Union (second.AsParallel ()), 1);
+				AreEquivalent (result, first.AsReallyParallel ().Union (second.AsParallel ()), 1);
 			});
 		}
+
+		[Test]
+		public void TestBigUnion ()
+		{
+			ParallelTestHelper.Repeat (() => {
+				int [] first = Enumerable.Range (1, 10000).ToArray ();
+				int [] second = Enumerable.Range (323, 757).ToArray ();
+
+				AreEquivalent (first, first.AsReallyParallel ().Union (second.AsParallel ()), 1);
+			}, 10);
+		}
+
+		[Test]
+		public void TestBigIntersect ()
+		{
+			ParallelTestHelper.Repeat (() => {
+				int [] first = Enumerable.Range (1, 10000).ToArray ();
+				int [] second = Enumerable.Range (323, 757).ToArray ();
+
+				AreEquivalent (second, first.AsReallyParallel ().Intersect (second.AsParallel ()), 1);
+			}, 10);
+		}
 		
 		class Foo {}
 		class Bar : Foo {}
@@ -284,7 +314,7 @@ namespace MonoTests.System.Linq
 			Foo [] foos = new Foo [] {a, b, c};
 			Bar [] result = new Bar [] {a, b, c};
 
-			AreEquivalent (result, foos.AsParallel ().Cast<Bar> (), 1);
+			AreEquivalent (result, foos.AsReallyParallel ().Cast<Bar> (), 1);
 		}
 		
 		[Test]
@@ -293,7 +323,7 @@ namespace MonoTests.System.Linq
 			int [] data = {0, 1, 2, 3, 4, 5};
 			int [] result = {3, 4, 5};
 
-			AssertAreSame (result, data.AsParallel ().AsOrdered ().Skip (3).ToArray ());
+			AssertAreSame (result, data.AsReallyParallel ().AsOrdered ().Skip (3).ToArray ());
 		}
 		
 		[Test]
@@ -302,7 +332,7 @@ namespace MonoTests.System.Linq
 			int [] data = {0, 1, 2, 3, 4, 5};
 			int [] result = {3, 4, 5};
 
-			AssertAreSame (result, data.AsParallel ().AsOrdered ().Skip (3));
+			AssertAreSame (result, data.AsReallyParallel ().AsOrdered ().Skip (3));
 		}
 
 		[Test]
@@ -311,7 +341,7 @@ namespace MonoTests.System.Linq
 			int [] data = {0, 1, 2, 3, 4, 5};
 			int [] result = {3, 4, 5};
 
-			AssertAreSame (result, data.AsParallel ().AsOrdered ().SkipWhile (i => i < 3));
+			AssertAreSame (result, data.AsReallyParallel ().AsOrdered ().SkipWhile (i => i < 3));
 		}
 
 		[Test]
@@ -320,7 +350,7 @@ namespace MonoTests.System.Linq
 			int [] data = {0, 1, 2, 3, 4, 5};
 			int [] result = {0, 1, 2};
 
-			AssertAreSame (result, data.AsParallel ().AsOrdered ().Take (3));
+			AssertAreSame (result, data.AsReallyParallel ().AsOrdered ().Take (3));
 		}
 
 		[Test]
@@ -329,7 +359,7 @@ namespace MonoTests.System.Linq
 			int [] data = {0, 1, 2, 3, 4, 5};
 			int [] result = {0, 1, 2};
 
-			AssertAreSame (result, data.AsParallel ().AsOrdered ().TakeWhile (i => i < 3));
+			AssertAreSame (result, data.AsReallyParallel ().AsOrdered ().TakeWhile (i => i < 3));
 		}
 
 		[Test]
@@ -339,7 +369,7 @@ namespace MonoTests.System.Linq
 			IEnumerable<int> expected = initial.SelectMany ((i) => Enumerable.Range (1, i));
 
 			ParallelTestHelper.Repeat (() => {
-					var actual = initial.AsParallel ().SelectMany ((i) => Enumerable.Range (1, i));
+					var actual = initial.AsReallyParallel ().SelectMany ((i) => Enumerable.Range (1, i));
 					AreEquivalent (expected, actual, 1);
 				});
 		}
@@ -351,7 +381,7 @@ namespace MonoTests.System.Linq
 			IEnumerable<int> expected = initial.SelectMany ((i) => Enumerable.Range (1, i));
 
 			ParallelTestHelper.Repeat (() => {
-					var actual = initial.AsParallel ().AsOrdered ().SelectMany ((i) => Enumerable.Range (1, i));
+					var actual = initial.AsReallyParallel ().AsOrdered ().SelectMany ((i) => Enumerable.Range (1, i));
 					AssertAreSame (expected, actual);
 				});
 		}
@@ -361,7 +391,7 @@ namespace MonoTests.System.Linq
 		{
 			int [] data = {1, 2, 3};
 
-			Assert.AreEqual (3, data.AsParallel ().AsOrdered ().Last ());
+			Assert.AreEqual (3, data.AsReallyParallel ().AsOrdered ().Last ());
 		}
 
 		[Test]
@@ -369,7 +399,7 @@ namespace MonoTests.System.Linq
 		{
 			int [] data = {};
 
-			Assert.AreEqual (default (int), data.AsParallel ().AsOrdered ().LastOrDefault ());
+			Assert.AreEqual (default (int), data.AsReallyParallel ().AsOrdered ().LastOrDefault ());
 		}
 
 		[Test]
@@ -377,7 +407,7 @@ namespace MonoTests.System.Linq
 		{
 			int [] data = {1, 2, 3};
 
-			Assert.AreEqual (1, data.AsParallel ().AsOrdered ().First ());
+			Assert.AreEqual (1, data.AsReallyParallel ().AsOrdered ().First ());
 		}
 
 		[Test]
@@ -385,7 +415,7 @@ namespace MonoTests.System.Linq
 		{
 			int [] data = {};
 
-			Assert.AreEqual (default (int), data.AsParallel ().AsOrdered ().FirstOrDefault ());
+			Assert.AreEqual (default (int), data.AsReallyParallel ().AsOrdered ().FirstOrDefault ());
 		}
 		
 		[Test]
@@ -394,8 +424,8 @@ namespace MonoTests.System.Linq
 			int [] data = {0, 1, 2, 3, 4};
 			int [] result = {4, 3, 2, 1, 0};
 
-			AssertAreSame (result, ((IEnumerable<int>)data).Select ((i) => i).AsParallel ().AsOrdered ().Reverse ());
-			AssertAreSame (result, ParallelEnumerable.Range (0, 5).AsOrdered ().Reverse ());
+			AssertAreSame (result, ((IEnumerable<int>)data).Select ((i) => i).AsReallyParallel ().AsOrdered ().Reverse ());
+			AssertAreSame (result, ParallelEnumerable.Range (0, 5).WithExecutionMode (ParallelExecutionMode.ForceParallelism).AsOrdered ().Reverse ());
 		}
 		
 		[Test]
@@ -404,7 +434,7 @@ namespace MonoTests.System.Linq
 			ParallelTestHelper.Repeat (() => {
 				int [] array = { 14, 53, 3, 9, 11, 14, 5, 32, 2 };
 				
-				var q = array.AsParallel ().OrderBy ((i) => i);
+				var q = array.AsReallyParallel ().OrderBy ((i) => i);
 				AssertIsOrdered (q, array.Length);
 			});
 		}
@@ -469,7 +499,7 @@ namespace MonoTests.System.Linq
 		public void TestOrderByAgeAscendingTheByNameDescending ()
 		{
 			ParallelTestHelper.Repeat (() => {
-				var q = from b in CreateBazCollection ().AsParallel()
+				var q = from b in CreateBazCollection ().AsReallyParallel ()
 						orderby b.Age ascending, b.Name descending
 						select b;
 	
@@ -509,7 +539,7 @@ namespace MonoTests.System.Linq
 		public void TestOrderByIdDescendingThenByNameAscending ()
 		{
 			ParallelTestHelper.Repeat (() => {
-				var q = from d in CreateData ().AsParallel()
+				var q = from d in CreateData ().AsReallyParallel ()
 					orderby d.ID descending, d.Name ascending
 						select d;
 				
@@ -541,9 +571,9 @@ namespace MonoTests.System.Linq
 		public void ElementAtTestCase()
 		{
 			//ParallelTestHelper.Repeat (() => {
-					Assert.AreEqual(1, baseEnumerable.AsParallel ().AsOrdered ().ElementAt(0), "#1");
-					Assert.AreEqual(51, baseEnumerable.AsParallel ().AsOrdered ().ElementAt(50), "#2");
-					Assert.AreEqual(489, baseEnumerable.AsParallel ().AsOrdered ().ElementAt(488), "#3");
+					Assert.AreEqual(1, baseEnumerable.AsReallyParallel ().AsOrdered ().ElementAt(0), "#1");
+					Assert.AreEqual(51, baseEnumerable.AsReallyParallel ().AsOrdered ().ElementAt(50), "#2");
+					Assert.AreEqual(489, baseEnumerable.AsReallyParallel ().AsOrdered ().ElementAt(488), "#3");
 			//});
 		}
 
@@ -557,7 +587,7 @@ namespace MonoTests.System.Linq
 			IEnumerable<int> expected = outer.Join (inner, (e) => e.Item1, (e) => e.Item1, (e1, e2) => e1.Item2 + e2.Item2, EqualityComparer<int>.Default);
 
 			ParallelTestHelper.Repeat (() => {
-					ParallelQuery<int> actual = outer.AsParallel ().Join (inner.AsParallel (), (e) => e.Item1, (e) => e.Item1, (e1, e2) => e1.Item2 + e2.Item2, EqualityComparer<int>.Default);
+					ParallelQuery<int> actual = outer.AsReallyParallel ().Join (inner.AsParallel (), (e) => e.Item1, (e) => e.Item1, (e1, e2) => e1.Item2 + e2.Item2, EqualityComparer<int>.Default);
 
 					AreEquivalent (expected, actual, 1);
 				});
@@ -570,7 +600,7 @@ namespace MonoTests.System.Linq
 			Tuple<int, int>[] source = Enumerable.Range (0, num).Select ((i) => Tuple.Create (i / 10, i)).ToArray ();
 
 			ParallelTestHelper.Repeat (() => {
-					ParallelQuery<IGrouping<int, int>> actual = source.AsParallel ().GroupBy ((e) => e.Item1, (e) => e.Item2, EqualityComparer<int>.Default);
+					ParallelQuery<IGrouping<int, int>> actual = source.AsReallyParallel ().GroupBy ((e) => e.Item1, (e) => e.Item2, EqualityComparer<int>.Default);
 
 					foreach (var group in actual) {
 						Assert.GreaterOrEqual (group.Key, 0);
@@ -592,12 +622,12 @@ namespace MonoTests.System.Linq
 		public void TakeTestCase()
 		{
 			ParallelTestHelper.Repeat (() => {
-					ParallelQuery<int> async = baseEnumerable.AsParallel().AsOrdered ().Take(2000);
+					ParallelQuery<int> async = baseEnumerable.AsReallyParallel ().AsOrdered ().Take(2000);
 					IEnumerable<int> sync = baseEnumerable.Take(2000);
 
 					AreEquivalent(sync, async, 1);
 
-					async = baseEnumerable.AsParallel().AsOrdered ().Take(100);
+					async = baseEnumerable.AsReallyParallel ().AsOrdered ().Take(100);
 					sync = baseEnumerable.Take(100);
 
 					AreEquivalent(sync, async, 2);
@@ -608,12 +638,12 @@ namespace MonoTests.System.Linq
 		public void UnorderedTakeTestCase()
 		{
 			ParallelTestHelper.Repeat (() => {
-					ParallelQuery<int> async = baseEnumerable.AsParallel().Take(2000);
+					ParallelQuery<int> async = baseEnumerable.AsReallyParallel ().Take(2000);
 					IEnumerable<int> sync = baseEnumerable.Take (2000);
 
 					Assert.AreEqual (sync.Count (), async.Count (), "#1");
 
-					async = baseEnumerable.AsParallel().Take(100);
+					async = baseEnumerable.AsReallyParallel ().Take(100);
 					sync = baseEnumerable.Take(100);
 
 					Assert.AreEqual (sync.Count (), async.Count (), "#2");
@@ -624,15 +654,21 @@ namespace MonoTests.System.Linq
 		public void SkipTestCase()
 		{
 			ParallelTestHelper.Repeat (() => {
-				ParallelQuery<int> async = baseEnumerable.AsParallel().AsOrdered().Skip(2000);
+				ParallelQuery<int> async = baseEnumerable.AsReallyParallel ().AsOrdered().Skip(2000);
 				IEnumerable<int> sync = baseEnumerable.Skip(2000);
 				
 				AreEquivalent(sync, async, 1);
+			}, 20);
+		}
+
+		[Test]
+		public void SkipTestCaseSmall ()
+		{
+			ParallelTestHelper.Repeat (() => {
+				var async = baseEnumerable.AsReallyParallel ().Skip(100);
+				var sync = baseEnumerable.Skip(100);
 				
-				async = baseEnumerable.AsParallel().Skip(100);
-				sync = baseEnumerable.Skip(100);
-				
-				Assert.AreEqual(sync.Count(), async.Count(), "#2");
+				Assert.AreEqual (sync.Count (), async.Count ());
 			}, 20);
 		}
 
@@ -675,7 +711,7 @@ namespace MonoTests.System.Linq
 		{
 			int [] data = {1, 2, 3, 4};
 
-			Assert.AreEqual (10, data.AsParallel().Sum ());
+			Assert.AreEqual (10, data.AsReallyParallel ().Sum ());
 		}
 
 		[Test]
@@ -683,7 +719,7 @@ namespace MonoTests.System.Linq
 		{
 			int [] data = {};
 
-			Assert.AreEqual (0, data.AsParallel().Sum ());
+			Assert.AreEqual (0, data.AsReallyParallel ().Sum ());
 		}
 
 		[Test]
@@ -691,7 +727,7 @@ namespace MonoTests.System.Linq
 		{
 			int [] data = {1, 3, 5, 2};
 
-			Assert.AreEqual (5, data.AsParallel().Max ());
+			Assert.AreEqual (5, data.AsReallyParallel ().Max ());
 		}
 
 		[Test]
@@ -699,7 +735,7 @@ namespace MonoTests.System.Linq
 		{
 			int [] data = {3, 5, 2, 6, 1, 7};
 
-			Assert.AreEqual (1, data.AsParallel().Min ());
+			Assert.AreEqual (1, data.AsReallyParallel ().Min ());
 		}
 		
 		[Test]
@@ -707,7 +743,7 @@ namespace MonoTests.System.Linq
 		{
 			int [] data = { 2, 3, 5 };
 
-			var list = data.AsParallel().AsOrdered().ToList ();
+			var list = data.AsParallel().AsOrdered().WithExecutionMode (ParallelExecutionMode.ForceParallelism).ToList ();
 
 			AssertAreSame (data, list);
 			AssertIsOrdered (list, data.Length);
@@ -725,14 +761,14 @@ namespace MonoTests.System.Linq
 
 			int [] result = {0, 1, 2};
 
-			var array = coll.AsParallel().AsOrdered().ToArray ();
+			var array = coll.AsReallyParallel ().AsOrdered().ToArray ();
 
 			AssertAreSame (result, array);
 			AssertIsOrdered (array, result.Length);
 
 			Assert.AreEqual (typeof (int []), array.GetType ());
 
-			array = Enumerable.Range (1, 100).Select ((i) => i).AsParallel().AsOrdered().ToArray ();
+			array = Enumerable.Range (1, 100).Select ((i) => i).AsReallyParallel ().AsOrdered().ToArray ();
 			result = Enumerable.Range (1, 100).ToArray ();
 
 			AssertAreSame (result, array);
@@ -747,7 +783,7 @@ namespace MonoTests.System.Linq
 		{
 			int [] data = {3, 5, 2};
 
-			var list = data.AsParallel().ToList ();
+			var list = data.AsReallyParallel ().ToList ();
 
 			CollectionAssert.AreEquivalent (data, list);
 
@@ -764,7 +800,7 @@ namespace MonoTests.System.Linq
 
 			int [] result = {0, 1, 2};
 
-			var array = coll.AsParallel().ToArray ();
+			var array = coll.AsReallyParallel ().ToArray ();
 
 			CollectionAssert.AreEquivalent (result, array);
 
@@ -792,11 +828,11 @@ namespace MonoTests.System.Linq
 
 
 			// Any<TSource> ()
-			AssertException<ArgumentNullException> (delegate () { ((IEnumerable<string>) null).AsParallel ().Any (); });
+			AssertException<ArgumentNullException> (delegate () { ((IEnumerable<string>) null).AsReallyParallel ().Any (); });
 
 			// Any<TSource> (Func<TSource, bool>)
-			AssertException<ArgumentNullException> (delegate () { ((IEnumerable<string>) null).AsParallel ().Any (x => true); });
-			AssertException<ArgumentNullException> (delegate () { data.AsParallel ().Any ((Func<string, bool>) null); });
+			AssertException<ArgumentNullException> (delegate () { ((IEnumerable<string>) null).AsReallyParallel ().Any (x => true); });
+			AssertException<ArgumentNullException> (delegate () { data.AsReallyParallel ().Any ((Func<string, bool>) null); });
 		}
 
 		[Test]
@@ -807,13 +843,13 @@ namespace MonoTests.System.Linq
 
 
 			// Any<TSource> ()
-			Assert.IsTrue (data.AsParallel ().Any ());
-			Assert.IsFalse (empty.AsParallel ().Any ());
+			Assert.IsTrue (data.AsReallyParallel ().Any ());
+			Assert.IsFalse (empty.AsReallyParallel ().Any ());
 
 			// Any<TSource> (Func<TSource, bool>)
-			Assert.IsTrue (data.AsParallel ().Any (x => x == 5));
-			Assert.IsFalse (data.AsParallel ().Any (x => x == 9));
-			Assert.IsFalse (empty.AsParallel ().Any (x => true));
+			Assert.IsTrue (data.AsReallyParallel ().Any (x => x == 5));
+			Assert.IsFalse (data.AsReallyParallel ().Any (x => x == 9));
+			Assert.IsFalse (empty.AsReallyParallel ().Any (x => true));
 		}
 
 		
@@ -822,8 +858,8 @@ namespace MonoTests.System.Linq
 		{
 			string [] data = { "2", "1", "5", "3", "4" };
 
-			AssertException<ArgumentNullException> (delegate () { ((IEnumerable<string>) null).AsParallel ().All (x => true); });
-			AssertException<ArgumentNullException> (delegate () { data.AsParallel ().All ((Func<string, bool>) null); });
+			AssertException<ArgumentNullException> (delegate () { ((IEnumerable<string>) null).AsReallyParallel ().All (x => true); });
+			AssertException<ArgumentNullException> (delegate () { data.AsReallyParallel ().All ((Func<string, bool>) null); });
 		}
 
 		[Test]
@@ -832,9 +868,9 @@ namespace MonoTests.System.Linq
 			int [] data = { 5, 2, 3, 1, 6 };
 			int [] empty = { };
 
-			Assert.IsTrue (data.AsParallel ().All (x => true));
-			Assert.IsFalse (data.AsParallel ().All (x => x != 1));
-			Assert.IsTrue (empty.AsParallel ().All (x => false));
+			Assert.IsTrue (data.AsReallyParallel ().All (x => true));
+			Assert.IsFalse (data.AsReallyParallel ().All (x => x != 1));
+			Assert.IsTrue (empty.AsReallyParallel ().All (x => false));
 		}
 	}
 }
diff --git a/mcs/class/System.Core/Test/System.Threading.Tasks/TaskExtensionsTests.cs b/mcs/class/System.Core/Test/System.Threading.Tasks/TaskExtensionsTests.cs
new file mode 100644
index 0000000..1d5c1e4
--- /dev/null
+++ b/mcs/class/System.Core/Test/System.Threading.Tasks/TaskExtensionsTests.cs
@@ -0,0 +1,59 @@
+// 
+// TaskExtensionsTests.cs
+//  
+// Author:
+//       Jérémie "Garuma" Laval <jeremie.laval at gmail.com>
+// 
+// Copyright (c) 2010 Jérémie "Garuma" Laval
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+#if NET_4_0
+
+using System;
+using System.Threading;
+using System.Threading.Tasks;
+
+using NUnit.Framework;
+
+namespace MonoTests.System.Threading.Tasks
+{
+	[TestFixture]
+	public class TaskExtensionsTests
+	{	
+		[Test]
+		public void TaskUnwrapingBehavioralTest ()
+		{
+			Task<int> t2 = Increment(4)
+				.ContinueWith((t) => Increment(t.Result))
+				.Unwrap().ContinueWith((t) => Increment(t.Result))
+				.Unwrap().ContinueWith((t) => Increment(t.Result))
+                .Unwrap();
+
+			t2.Wait ();
+			Assert.AreEqual (8, t2.Result);
+		}
+
+		static Task<int> Increment (int num)
+		{
+			return Task<int>.Factory.StartNew (() => num + 1);
+		}
+	}
+}
+#endif
diff --git a/mcs/class/System.Core/Test/System.Threading/ChangeLog b/mcs/class/System.Core/Test/System.Threading/ChangeLog
index bdfb17d..52d06b8 100644
--- a/mcs/class/System.Core/Test/System.Threading/ChangeLog
+++ b/mcs/class/System.Core/Test/System.Threading/ChangeLog
@@ -1,3 +1,20 @@
+2010-12-01  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	[ReaderWriterLockSlim] Fix for #656353. Add corresponding unit
+	test.
+
+	When in SupportsRecursion mode, a test was not including proper
+	state check for short-circuiting.
+
+2010-11-23  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Fix ReaderWriterLockSlim Exit methods in SupportsRecursion mode
+	and add corresponding unit tests
+
+2010-10-22  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Fix a dodgy ReaderWriterLockSlim unit test
+
 2010-09-28  Jérémie Laval  <jeremie.laval at gmail.com>
 
 	Turn Is*LockHeld properties into thread-specific values in
@@ -8,6 +25,10 @@
 	Allow recursive Write + n * Read lock pattern for
 	ReaderWriterLockSlim and add corresponding unit test
 
+2010-09-01  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Check Recursive counts for ReaderWriterLockSlim in unit tests
+
 2010-08-31  Jérémie Laval  <jeremie.laval at gmail.com>
 
 	Add unit tests for recursive acquire of a Write or Upgradeable
diff --git a/mcs/class/System.Core/Test/System.Threading/ReaderWriterLockSlimTest.cs b/mcs/class/System.Core/Test/System.Threading/ReaderWriterLockSlimTest.cs
index 3bc6515..d5d52de 100644
--- a/mcs/class/System.Core/Test/System.Threading/ReaderWriterLockSlimTest.cs
+++ b/mcs/class/System.Core/Test/System.Threading/ReaderWriterLockSlimTest.cs
@@ -34,7 +34,7 @@ using System.Linq;
 namespace MonoTests.System.Threading
 {
 	[TestFixture]
-	public class ReaderWriterLockSlim2Test
+	public class ReaderWriterLockSlimTests
 	{
 		[Test]
 		public void DefaultValues ()
@@ -351,8 +351,8 @@ namespace MonoTests.System.Threading
 			ev2.WaitOne ();
 
 			Assert.IsFalse (v.TryEnterWriteLock (100));
-			Assert.IsFalse (v.TryEnterReadLock (100));
 			ev.Set ();
+			t1.Join ();
 
 			Assert.IsTrue (v.TryEnterWriteLock (100));
 		}
@@ -412,6 +412,8 @@ namespace MonoTests.System.Threading
 			Assert.IsTrue (v.TryEnterReadLock (100), "#1");
 			Assert.IsTrue (v.TryEnterReadLock (100), "#2");
 			Assert.IsTrue (v.TryEnterReadLock (100), "#3");
+
+			Assert.AreEqual (3, v.RecursiveReadCount);
 		}
 
 		[Test]
@@ -450,6 +452,8 @@ namespace MonoTests.System.Threading
 			Assert.IsTrue (v.TryEnterWriteLock (100), "#1");
 			Assert.IsTrue (v.TryEnterWriteLock (100), "#2");
 			Assert.IsTrue (v.TryEnterWriteLock (100), "#3");
+
+			Assert.AreEqual (3, v.RecursiveWriteCount);
 		}
 
 		[Test]
@@ -482,6 +486,8 @@ namespace MonoTests.System.Threading
 			Assert.IsTrue (v.TryEnterUpgradeableReadLock (100), "#1");
 			Assert.IsTrue (v.TryEnterUpgradeableReadLock (100), "#2");
 			Assert.IsTrue (v.TryEnterUpgradeableReadLock (100), "#3");
+
+			Assert.AreEqual (3, v.RecursiveUpgradeCount);
 		}
 
 		[Test]
@@ -570,5 +576,85 @@ namespace MonoTests.System.Threading
 			Assert.AreEqual (false, wLock, "#1b");
 			Assert.AreEqual (0, rWrite, "#3b");
 		}
+
+		[Test]
+		public void RecursiveEnterExitReadTest ()
+		{
+			var v = new ReaderWriterLockSlim (LockRecursionPolicy.SupportsRecursion);
+
+			v.EnterReadLock ();
+			v.EnterReadLock ();
+			v.EnterReadLock ();
+
+			Assert.IsTrue (v.IsReadLockHeld);
+			Assert.AreEqual (3, v.RecursiveReadCount);
+
+			v.ExitReadLock ();
+
+			Assert.IsTrue (v.IsReadLockHeld);
+			Assert.AreEqual (2, v.RecursiveReadCount);
+		}
+
+		[Test]
+		public void RecursiveEnterExitWriteTest ()
+		{
+			var v = new ReaderWriterLockSlim (LockRecursionPolicy.SupportsRecursion);
+
+			v.EnterWriteLock ();
+			v.EnterWriteLock ();
+			v.EnterWriteLock ();
+
+			Assert.IsTrue (v.IsWriteLockHeld);
+			Assert.AreEqual (3, v.RecursiveWriteCount);
+
+			v.ExitWriteLock ();
+			v.ExitWriteLock ();
+
+			Assert.IsTrue (v.IsWriteLockHeld);
+			Assert.AreEqual (1, v.RecursiveWriteCount);
+		}
+
+		[Test]
+		public void RecursiveEnterExitUpgradableTest ()
+		{
+			var v = new ReaderWriterLockSlim (LockRecursionPolicy.SupportsRecursion);
+
+			v.EnterUpgradeableReadLock ();
+			v.EnterUpgradeableReadLock ();
+			v.EnterUpgradeableReadLock ();
+
+			Assert.IsTrue (v.IsUpgradeableReadLockHeld);
+			Assert.AreEqual (3, v.RecursiveUpgradeCount);
+
+			v.ExitUpgradeableReadLock ();
+
+			Assert.IsTrue (v.IsUpgradeableReadLockHeld);
+			Assert.AreEqual (2, v.RecursiveUpgradeCount);
+		}
+
+		[Test]
+		public void RecursiveWriteReadAcquisitionInterleaving ()
+		{
+			var v = new ReaderWriterLockSlim (LockRecursionPolicy.SupportsRecursion);
+
+			v.EnterWriteLock ();
+			Assert.IsTrue (v.IsWriteLockHeld, "#1");
+
+			bool result = true;
+			var t = new Thread (delegate () {
+					result = v.TryEnterReadLock (100);
+				});
+			t.Start ();
+			t.Join ();
+			Assert.IsFalse (result, "#2");
+
+			v.ExitWriteLock ();
+			t = new Thread (delegate () {
+					result = v.TryEnterReadLock (100);
+				});
+			t.Start ();
+			t.Join ();
+			Assert.IsTrue (result, "#3");
+		}
 	}
 }
diff --git a/mcs/class/System.Core/mobile_System.Core.dll.sources b/mcs/class/System.Core/mobile_System.Core.dll.sources
new file mode 100644
index 0000000..62438d6
--- /dev/null
+++ b/mcs/class/System.Core/mobile_System.Core.dll.sources
@@ -0,0 +1,77 @@
+../../build/common/Consts.cs
+../../build/common/Locale.cs
+../../build/common/MonoTODOAttribute.cs
+../corlib/Mono.Security.Cryptography/CryptoTools.cs
+../corlib/Mono.Security.Cryptography/SymmetricTransform.cs
+Assembly/AssemblyInfo.cs
+System/Actions.cs
+System/Funcs.cs
+System/InvalidTimeZoneException.cs
+System/TimeZoneInfo.AdjustmentRule.cs
+System/TimeZoneInfo.cs
+System/TimeZoneInfo.TransitionTime.cs
+System/TimeZoneNotFoundException.cs
+System.Runtime.CompilerServices/ExecutionScope.cs
+System.Runtime.CompilerServices/ExtensionAttribute.cs
+System.Runtime.CompilerServices/IStrongBox.cs
+System.Runtime.CompilerServices/StrongBox_T.cs
+System.Linq/Check.cs
+System.Linq/Enumerable.cs
+System.Linq/QueryableEnumerable.cs
+System.Linq/QueryableTransformer.cs
+System.Linq/Grouping.cs
+System.Linq/IGrouping.cs
+System.Linq/IOrderedQueryable.cs
+System.Linq/IOrderedQueryable_T.cs
+System.Linq/IOrderedEnumerable_T.cs
+System.Linq/IQueryable.cs
+System.Linq/IQueryable_T.cs
+System.Linq/Lookup.cs
+System.Linq/ILookup_T.cs
+System.Linq/OrderedEnumerable.cs
+System.Linq/OrderedSequence.cs
+System.Linq/Queryable.cs
+System.Linq/QuickSort.cs
+System.Linq/SortContext.cs
+System.Linq/SortDirection.cs
+System.Linq/SortSequenceContext.cs
+System.Linq/IQueryProvider.cs
+System.Linq.Expressions/BinaryExpression.cs
+System.Linq.Expressions/ConditionalExpression.cs
+System.Linq.Expressions/ConstantExpression.cs
+System.Linq.Expressions/ElementInit.cs
+System.Linq.Expressions/EmitContext.cs
+System.Linq.Expressions/Expression.cs
+System.Linq.Expressions/Expression_T.cs
+System.Linq.Expressions/ExpressionPrinter.cs
+System.Linq.Expressions/ExpressionType.cs
+System.Linq.Expressions/ExpressionVisitor.cs
+System.Linq.Expressions/ExpressionTransformer.cs
+System.Linq.Expressions/Extensions.cs
+System.Linq.Expressions/InvocationExpression.cs
+System.Linq.Expressions/LambdaExpression.cs
+System.Linq.Expressions/ListInitExpression.cs
+System.Linq.Expressions/MemberAssignment.cs
+System.Linq.Expressions/MemberBinding.cs
+System.Linq.Expressions/MemberBindingType.cs
+System.Linq.Expressions/MemberExpression.cs
+System.Linq.Expressions/MemberInitExpression.cs
+System.Linq.Expressions/MemberListBinding.cs
+System.Linq.Expressions/MemberMemberBinding.cs
+System.Linq.Expressions/MethodCallExpression.cs
+System.Linq.Expressions/NewArrayExpression.cs
+System.Linq.Expressions/NewExpression.cs
+System.Linq.Expressions/ParameterExpression.cs
+System.Linq.Expressions/TypeBinaryExpression.cs
+System.Linq.Expressions/UnaryExpression.cs
+System.Collections.Generic/HashSet.cs
+../corlib/System.Collections.Generic/CollectionDebuggerView.cs
+System.Security.Cryptography/Aes.cs
+System.Security.Cryptography/AesManaged.cs
+System.Security.Cryptography/AesTransform.cs
+System.Threading/LockRecursionException.cs
+System.Threading/LockRecursionPolicy.cs
+System.Threading/ReaderWriterLockSlim.cs
+System.Threading/ThreadLockState.cs
+System.Threading/ReaderWriterLockSlimExtensions.cs
+../corlib/System.Threading/AtomicBoolean.cs
diff --git a/mcs/class/System.Core/monodroid_System.Core.dll.sources b/mcs/class/System.Core/monodroid_System.Core.dll.sources
new file mode 100644
index 0000000..36b78e4
--- /dev/null
+++ b/mcs/class/System.Core/monodroid_System.Core.dll.sources
@@ -0,0 +1,2 @@
+#include mobile_System.Core.dll.sources
+System/TimeZoneInfo.Android.cs
diff --git a/mcs/class/System.Core/monotouch_System.Core.dll.sources b/mcs/class/System.Core/monotouch_System.Core.dll.sources
index f4ad265..f8de2aa 100644
--- a/mcs/class/System.Core/monotouch_System.Core.dll.sources
+++ b/mcs/class/System.Core/monotouch_System.Core.dll.sources
@@ -1 +1,5 @@
-#include monotouch_bootstrap_System.Core.dll.sources
+#include mobile_System.Core.dll.sources
+System.Linq.jvm/Conversion.cs
+System.Linq.jvm/ExpressionInterpreter.cs
+System.Linq.jvm/Runner.cs
+System.Linq.jvm/Math.cs
diff --git a/mcs/class/System.Core/monotouch_bootstrap_System.Core.dll.sources b/mcs/class/System.Core/monotouch_bootstrap_System.Core.dll.sources
deleted file mode 100644
index 5908496..0000000
--- a/mcs/class/System.Core/monotouch_bootstrap_System.Core.dll.sources
+++ /dev/null
@@ -1,79 +0,0 @@
-../../build/common/Consts.cs
-../../build/common/Locale.cs
-../../build/common/MonoTODOAttribute.cs
-../corlib/Mono.Security.Cryptography/CryptoTools.cs
-../corlib/Mono.Security.Cryptography/SymmetricTransform.cs
-Assembly/AssemblyInfo.cs
-System/Actions.cs
-System/Funcs.cs
-System/InvalidTimeZoneException.cs
-System/TimeZoneInfo.AdjustmentRule.cs
-System/TimeZoneInfo.cs
-System/TimeZoneInfo.TransitionTime.cs
-System/TimeZoneNotFoundException.cs
-System.Runtime.CompilerServices/ExecutionScope.cs
-System.Runtime.CompilerServices/ExtensionAttribute.cs
-System.Runtime.CompilerServices/IStrongBox.cs
-System.Runtime.CompilerServices/StrongBox_T.cs
-System.Linq/Check.cs
-System.Linq/Enumerable.cs
-System.Linq/QueryableEnumerable.cs
-System.Linq/QueryableTransformer.cs
-System.Linq/Grouping.cs
-System.Linq/IGrouping.cs
-System.Linq/IOrderedQueryable.cs
-System.Linq/IOrderedQueryable_T.cs
-System.Linq/IOrderedEnumerable_T.cs
-System.Linq/IQueryable.cs
-System.Linq/IQueryable_T.cs
-System.Linq/Lookup.cs
-System.Linq/ILookup_T.cs
-System.Linq/OrderedEnumerable.cs
-System.Linq/OrderedSequence.cs
-System.Linq/Queryable.cs
-System.Linq/QuickSort.cs
-System.Linq/SortContext.cs
-System.Linq/SortDirection.cs
-System.Linq/SortSequenceContext.cs
-System.Linq/IQueryProvider.cs
-System.Linq.Expressions/BinaryExpression.cs
-System.Linq.Expressions/ConditionalExpression.cs
-System.Linq.Expressions/ConstantExpression.cs
-System.Linq.Expressions/ElementInit.cs
-System.Linq.Expressions/EmitContext.cs
-System.Linq.Expressions/Expression.cs
-System.Linq.Expressions/Expression_T.cs
-System.Linq.Expressions/ExpressionPrinter.cs
-System.Linq.Expressions/ExpressionType.cs
-System.Linq.Expressions/ExpressionVisitor.cs
-System.Linq.Expressions/ExpressionTransformer.cs
-System.Linq.Expressions/Extensions.cs
-System.Linq.Expressions/InvocationExpression.cs
-System.Linq.Expressions/LambdaExpression.cs
-System.Linq.Expressions/ListInitExpression.cs
-System.Linq.Expressions/MemberAssignment.cs
-System.Linq.Expressions/MemberBinding.cs
-System.Linq.Expressions/MemberBindingType.cs
-System.Linq.Expressions/MemberExpression.cs
-System.Linq.Expressions/MemberInitExpression.cs
-System.Linq.Expressions/MemberListBinding.cs
-System.Linq.Expressions/MemberMemberBinding.cs
-System.Linq.Expressions/MethodCallExpression.cs
-System.Linq.Expressions/NewArrayExpression.cs
-System.Linq.Expressions/NewExpression.cs
-System.Linq.Expressions/ParameterExpression.cs
-System.Linq.Expressions/TypeBinaryExpression.cs
-System.Linq.Expressions/UnaryExpression.cs
-System.Collections.Generic/HashSet.cs
-../corlib/System.Collections.Generic/CollectionDebuggerView.cs
-System.Security.Cryptography/Aes.cs
-System.Security.Cryptography/AesManaged.cs
-System.Security.Cryptography/AesTransform.cs
-System.Linq.jvm/Conversion.cs
-System.Linq.jvm/ExpressionInterpreter.cs
-System.Linq.jvm/ExpressionValidator.cs
-System.Linq.jvm/Interpreter.cs
-System.Linq.jvm/Math.cs
-System.Threading/LockRecursionException.cs
-System.Threading/LockRecursionPolicy.cs
-System.Threading/ReaderWriterLockSlim.cs
diff --git a/mcs/class/System.Core/moonlight_bootstrap_System.Core.dll.sources b/mcs/class/System.Core/moonlight_bootstrap_System.Core.dll.sources
deleted file mode 100644
index 82f86b0..0000000
--- a/mcs/class/System.Core/moonlight_bootstrap_System.Core.dll.sources
+++ /dev/null
@@ -1 +0,0 @@
-#include moonlight_raw_System.Core.dll.sources
diff --git a/mcs/class/System.Core/net_4_0_System.Core.dll.sources b/mcs/class/System.Core/net_4_0_System.Core.dll.sources
index 601ef4a..dec843b 100644
--- a/mcs/class/System.Core/net_4_0_System.Core.dll.sources
+++ b/mcs/class/System.Core/net_4_0_System.Core.dll.sources
@@ -68,6 +68,7 @@ System.Threading/LockRecursionPolicy.cs
 System.Threading/ReaderWriterLockSlim.cs
 System.Threading/ThreadLockState.cs
 System.Threading/ReaderWriterLockSlimExtensions.cs
+System.Threading.Tasks/TaskExtensions.cs
 
 System.Linq.Expressions/Extensions.cs
 System.Linq.Expressions/ExpressionTransformer.cs
@@ -256,7 +257,5 @@ System.Linq.Parallel/IVisitableNode.cs
 System.Linq.Parallel/QueryCheckerVisitor.cs
 System.Linq.Parallel/QueryIsOrderedVisitor.cs
 System.Linq.Parallel/QueryOptions.cs
-../corlib/System.Collections.Concurrent/Partitioners/EnumerablePartitioner.cs
-../corlib/System.Collections.Concurrent/ConcurrentSkipList.cs
+../corlib/System.Collections.Concurrent.Partitioners/EnumerablePartitioner.cs
 ../corlib/System.Threading/AtomicBoolean.cs
-
diff --git a/mcs/class/System.Core/net_4_0_bootstrap_System.Core.dll.sources b/mcs/class/System.Core/net_4_0_bootstrap_System.Core.dll.sources
deleted file mode 100644
index 7406bcc..0000000
--- a/mcs/class/System.Core/net_4_0_bootstrap_System.Core.dll.sources
+++ /dev/null
@@ -1 +0,0 @@
-#include net_4_0_System.Core.dll.sources
diff --git a/mcs/class/System.Data.Linq/ChangeLog b/mcs/class/System.Data.Linq/ChangeLog
old mode 100755
new mode 100644
index 3bc8156..cdb0942
--- a/mcs/class/System.Data.Linq/ChangeLog
+++ b/mcs/class/System.Data.Linq/ChangeLog
@@ -1,3 +1,22 @@
+2010-09-14  Jonathan Pryor  <jonpryor at vt.edu>
+
+	Distribute DbmlSchema.xsd so that tarball builds work.
+
+2010-09-13  Jonathan Pryor  <jonpryor at vt.edu>
+
+	[sqlmetal] Fix /code from DBML file.
+
+	sqlmetal.exe is supposed to allow generating source code from a
+	.dbml file:
+
+	sqlmetal /code:foo.cs foo.dbml
+
+	However, this failed because the DbmlSchema.xsd file couldn't be
+	found (so that the DBML file could be validated).
+
+	Embed the DbmlSchema.xsd file so that the above `sqlmetal` command
+	works.
+
 2010-04-13  Jonathan Pryor  <jpryor at novell.com>
 
 	* src/**/*: Sync with DbLinq r1403.  This is DbLinq 0.20 + fixes.
diff --git a/mcs/class/System.Data.Linq/ChangeLog b/mcs/class/System.Data.Linq/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Data.Linq/ChangeLog
copy to mcs/class/System.Data.Linq/ChangeLog.old
diff --git a/mcs/class/System.Data.Linq/Makefile b/mcs/class/System.Data.Linq/Makefile
index b3e19b2..aeb7c34 100755
--- a/mcs/class/System.Data.Linq/Makefile
+++ b/mcs/class/System.Data.Linq/Makefile
@@ -9,6 +9,7 @@ LIB_MCS_FLAGS = \
 	        /r:System.Xml.dll \
 	        /r:System.Data.dll \
 	        /r:System.Runtime.Serialization.dll \
+	        /resource:./src/DbLinq/Schema/Dbml/DbmlSchema.xsd,DbLinq.Schema.Dbml.DbmlSchema.xsd \
 		/d:MONO_STRICT /d:MONO_DEPLOY
 
 ifeq (2.0, $(FRAMEWORK_VERSION))
@@ -18,7 +19,7 @@ endif
 
 TEST_MCS_FLAGS = $(LIB_MCS_FLAGS)
 
-EXTRA_DISTFILES =
+EXTRA_DISTFILES = src/DbLinq/Schema/Dbml/DbmlSchema.xsd
 
 # This is a .NET 3.5+ assembly
 VALID_PROFILE := $(filter net_2_0 net_4_0, $(PROFILE))
diff --git a/mcs/class/System.Data.Linq/src/DbLinq/Schema/Dbml/DbmlSchema.xsd b/mcs/class/System.Data.Linq/src/DbLinq/Schema/Dbml/DbmlSchema.xsd
new file mode 100644
index 0000000..1d15b21
Binary files /dev/null and b/mcs/class/System.Data.Linq/src/DbLinq/Schema/Dbml/DbmlSchema.xsd differ
diff --git a/mcs/class/System.Data.Services.Client/Assembly/AssemblyInfo.cs b/mcs/class/System.Data.Services.Client/Assembly/AssemblyInfo.cs
index 0a3ca4d..2d625fb 100644
--- a/mcs/class/System.Data.Services.Client/Assembly/AssemblyInfo.cs
+++ b/mcs/class/System.Data.Services.Client/Assembly/AssemblyInfo.cs
@@ -40,5 +40,47 @@ using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
 using System.Runtime.Versioning;
 
+[assembly: AssemblyDelaySign (true)]
+
+#if NET_4_0
+[assembly: AssemblyKeyFile ("../ecma.pub")]
+[assembly: System.Security.SecurityCritical]
+[assembly: ComVisible(false)]
+[assembly: CLSCompliant(false)]
+[assembly: AllowPartiallyTrustedCallers]
+[assembly: AssemblyTitle("System.Data.Services.Client.dll")]
+[assembly: AssemblyDescription("System.Data.Services.Client.dll")]
+[assembly: AssemblyDefaultAlias("System.Data.Services.Client.dll")]
+[assembly: AssemblyCompany(Consts.MonoCompany)]
+[assembly: AssemblyProduct(Consts.MonoProduct)]
+[assembly: AssemblyCopyright(Consts.MonoCopyright)]
+[assembly: AssemblyVersion(Consts.FxVersion)]
+[assembly: SatelliteContractVersion(Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion(Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion(Consts.FxFileVersion)]
+
+[assembly: Debuggable (DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
+[assembly: NeutralResourcesLanguage ("en-US")]
+[assembly: AssemblyTargetedPatchBand ("1.0.21-0")]
+[assembly: CompilationRelaxations (CompilationRelaxations.NoStringInterning)]
+[assembly: SecurityRules (SecurityRuleSet.Level1, SkipVerificationInFullTrust=true)]
+
+internal static class FX35Assembly
+{
+    internal const string Version = "4.0.0.0";
+}
+
+internal static class ThisAssembly
+{
+
+}
+
+internal static class AssemblyRef
+{
+    internal const string MicrosoftPublicKeyToken = "b03f5f7f11d50a3a";
+
+    internal const string EcmaPublicKeyToken = "b77a5c561934e089";
+}
+#else
 [assembly: AssemblyKeyFile ("../msfinal.pub")]
-[assembly: AssemblyDelaySign (true)]
\ No newline at end of file
+#endif
diff --git a/mcs/class/System.Data.Services.Client/System.Data.Services.Client.dll.sources b/mcs/class/System.Data.Services.Client/System.Data.Services.Client.dll.sources
index a96c137..80cd1dc 100644
--- a/mcs/class/System.Data.Services.Client/System.Data.Services.Client.dll.sources
+++ b/mcs/class/System.Data.Services.Client/System.Data.Services.Client.dll.sources
@@ -1,6 +1,5 @@
 ./Assembly/AssemblyInfo.cs
 
-./Client/AssemblyAttributes.cs
 ./Client/Parameterized.System.Data.Services.Client.cs
 ./Client/System/Data/Services/Client/ALinq/DataServiceExpressionVisitor.cs
 ./Client/System/Data/Services/Client/ALinq/DataServiceQueryProvider.cs
diff --git a/mcs/class/System.Data.Services.Client/net_2_0_System.Data.Services.Client.dll.sources b/mcs/class/System.Data.Services.Client/net_2_0_System.Data.Services.Client.dll.sources
new file mode 100644
index 0000000..4b95987
--- /dev/null
+++ b/mcs/class/System.Data.Services.Client/net_2_0_System.Data.Services.Client.dll.sources
@@ -0,0 +1,3 @@
+#include System.Data.Services.Client.dll.sources
+
+./Client/AssemblyAttributes.cs
diff --git a/mcs/class/System.Data.Services.Client/net_4_0_System.Data.Services.Client.dll.sources b/mcs/class/System.Data.Services.Client/net_4_0_System.Data.Services.Client.dll.sources
new file mode 100644
index 0000000..675d388
--- /dev/null
+++ b/mcs/class/System.Data.Services.Client/net_4_0_System.Data.Services.Client.dll.sources
@@ -0,0 +1,5 @@
+#include System.Data.Services.Client.dll.sources
+
+../../build/common/Consts.cs
+../../build/common/Locale.cs
+../../build/common/MonoTODOAttribute.cs
diff --git a/mcs/class/System.Data.Services/Assembly/AssemblyInfo.cs b/mcs/class/System.Data.Services/Assembly/AssemblyInfo.cs
old mode 100755
new mode 100644
diff --git a/mcs/class/System.Data.Services/Assembly/ChangeLog b/mcs/class/System.Data.Services/Assembly/ChangeLog
index 50b8131..35d1d2b 100644
--- a/mcs/class/System.Data.Services/Assembly/ChangeLog
+++ b/mcs/class/System.Data.Services/Assembly/ChangeLog
@@ -1,3 +1,7 @@
+2010-09-17  Marek Habersack  <grendel at twistedcode.net>
+
+	Changed mode of a few files from 755 to 644
+
 2009-11-06  Eric Maupin  <me at ermau.com>
 
 	* Added
diff --git a/mcs/class/System.Data.Services/Assembly/ChangeLog b/mcs/class/System.Data.Services/Assembly/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Data.Services/Assembly/ChangeLog
copy to mcs/class/System.Data.Services/Assembly/ChangeLog.old
diff --git a/mcs/class/System.Data.Services/ChangeLog b/mcs/class/System.Data.Services/ChangeLog
index 87a970f..d074ce9 100644
--- a/mcs/class/System.Data.Services/ChangeLog
+++ b/mcs/class/System.Data.Services/ChangeLog
@@ -1,3 +1,7 @@
+2010-09-17  Marek Habersack  <grendel at twistedcode.net>
+
+	Changed mode of a few files from 755 to 644
+
 2010-06-11  Pete Johanson  <peter at peterjohanson.com>
 
 	* Makefile: Don't use the mono key for signing.
diff --git a/mcs/class/System.Data.Services/ChangeLog b/mcs/class/System.Data.Services/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Data.Services/ChangeLog
copy to mcs/class/System.Data.Services/ChangeLog.old
diff --git a/mcs/class/System.Data.Services/System.Data.Services/ChangeInterceptorAttribute.cs b/mcs/class/System.Data.Services/System.Data.Services/ChangeInterceptorAttribute.cs
old mode 100755
new mode 100644
diff --git a/mcs/class/System.Data.Services/System.Data.Services/DataService.cs b/mcs/class/System.Data.Services/System.Data.Services/DataService.cs
old mode 100755
new mode 100644
diff --git a/mcs/class/System.Data.Services/System.Data.Services/DataServiceException.cs b/mcs/class/System.Data.Services/System.Data.Services/DataServiceException.cs
old mode 100755
new mode 100644
diff --git a/mcs/class/System.Data.Services/System.Data.Services/DataServiceHost.cs b/mcs/class/System.Data.Services/System.Data.Services/DataServiceHost.cs
old mode 100755
new mode 100644
diff --git a/mcs/class/System.Data.Services/System.Data.Services/DataServiceHostFactory.cs b/mcs/class/System.Data.Services/System.Data.Services/DataServiceHostFactory.cs
old mode 100755
new mode 100644
diff --git a/mcs/class/System.Data.Services/System.Data.Services/ETagAttribute.cs b/mcs/class/System.Data.Services/System.Data.Services/ETagAttribute.cs
old mode 100755
new mode 100644
diff --git a/mcs/class/System.Data.Services/System.Data.Services/EntitySetRights.cs b/mcs/class/System.Data.Services/System.Data.Services/EntitySetRights.cs
old mode 100755
new mode 100644
diff --git a/mcs/class/System.Data.Services/System.Data.Services/ExpandSegment.cs b/mcs/class/System.Data.Services/System.Data.Services/ExpandSegment.cs
old mode 100755
new mode 100644
diff --git a/mcs/class/System.Data.Services/System.Data.Services/ExpandSegmentCollection.cs b/mcs/class/System.Data.Services/System.Data.Services/ExpandSegmentCollection.cs
old mode 100755
new mode 100644
diff --git a/mcs/class/System.Data.Services/System.Data.Services/HandleExceptionArgs.cs b/mcs/class/System.Data.Services/System.Data.Services/HandleExceptionArgs.cs
old mode 100755
new mode 100644
diff --git a/mcs/class/System.Data.Services/System.Data.Services/IDataServiceConfiguration.cs b/mcs/class/System.Data.Services/System.Data.Services/IDataServiceConfiguration.cs
old mode 100755
new mode 100644
diff --git a/mcs/class/System.Data.Services/System.Data.Services/IDataServiceHost.cs b/mcs/class/System.Data.Services/System.Data.Services/IDataServiceHost.cs
old mode 100755
new mode 100644
diff --git a/mcs/class/System.Data.Services/System.Data.Services/IExpandProvider.cs b/mcs/class/System.Data.Services/System.Data.Services/IExpandProvider.cs
old mode 100755
new mode 100644
diff --git a/mcs/class/System.Data.Services/System.Data.Services/IExpandedResult.cs b/mcs/class/System.Data.Services/System.Data.Services/IExpandedResult.cs
old mode 100755
new mode 100644
diff --git a/mcs/class/System.Data.Services/System.Data.Services/IRequestHandler.cs b/mcs/class/System.Data.Services/System.Data.Services/IRequestHandler.cs
old mode 100755
new mode 100644
diff --git a/mcs/class/System.Data.Services/System.Data.Services/IUpdatable.cs b/mcs/class/System.Data.Services/System.Data.Services/IUpdatable.cs
old mode 100755
new mode 100644
diff --git a/mcs/class/System.Data.Services/System.Data.Services/IgnorePropertiesAttribute.cs b/mcs/class/System.Data.Services/System.Data.Services/IgnorePropertiesAttribute.cs
old mode 100755
new mode 100644
diff --git a/mcs/class/System.Data.Services/System.Data.Services/MimeTypeAttribute.cs b/mcs/class/System.Data.Services/System.Data.Services/MimeTypeAttribute.cs
old mode 100755
new mode 100644
diff --git a/mcs/class/System.Data.Services/System.Data.Services/ProcessRequestArgs.cs b/mcs/class/System.Data.Services/System.Data.Services/ProcessRequestArgs.cs
old mode 100755
new mode 100644
diff --git a/mcs/class/System.Data.Services/System.Data.Services/QueryInterceptorAttribute.cs b/mcs/class/System.Data.Services/System.Data.Services/QueryInterceptorAttribute.cs
old mode 100755
new mode 100644
diff --git a/mcs/class/System.Data.Services/System.Data.Services/ServiceOperationRights.cs b/mcs/class/System.Data.Services/System.Data.Services/ServiceOperationRights.cs
old mode 100755
new mode 100644
diff --git a/mcs/class/System.Data.Services/System.Data.Services/SingleResultAttribute.cs b/mcs/class/System.Data.Services/System.Data.Services/SingleResultAttribute.cs
old mode 100755
new mode 100644
diff --git a/mcs/class/System.Data.Services/System.Data.Services/UpdateOperations.cs b/mcs/class/System.Data.Services/System.Data.Services/UpdateOperations.cs
old mode 100755
new mode 100644
diff --git a/mcs/class/System.Data.Services/Test/ChangeInterceptorAttributeTests.cs b/mcs/class/System.Data.Services/Test/ChangeInterceptorAttributeTests.cs
old mode 100755
new mode 100644
diff --git a/mcs/class/System.Data.Services/Test/ChangeLog b/mcs/class/System.Data.Services/Test/ChangeLog
index 50b8131..35d1d2b 100644
--- a/mcs/class/System.Data.Services/Test/ChangeLog
+++ b/mcs/class/System.Data.Services/Test/ChangeLog
@@ -1,3 +1,7 @@
+2010-09-17  Marek Habersack  <grendel at twistedcode.net>
+
+	Changed mode of a few files from 755 to 644
+
 2009-11-06  Eric Maupin  <me at ermau.com>
 
 	* Added
diff --git a/mcs/class/System.Data.Services/Assembly/ChangeLog b/mcs/class/System.Data.Services/Test/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Data.Services/Assembly/ChangeLog
copy to mcs/class/System.Data.Services/Test/ChangeLog.old
diff --git a/mcs/class/System.Data.Services/Test/DataServiceExceptionTests.cs b/mcs/class/System.Data.Services/Test/DataServiceExceptionTests.cs
old mode 100755
new mode 100644
diff --git a/mcs/class/System.Data.Services/Test/DataServiceTests.cs b/mcs/class/System.Data.Services/Test/DataServiceTests.cs
old mode 100755
new mode 100644
diff --git a/mcs/class/System.Data.Services/Test/ETagAttributeTests.cs b/mcs/class/System.Data.Services/Test/ETagAttributeTests.cs
old mode 100755
new mode 100644
diff --git a/mcs/class/System.Data.Services/Test/ExpandSegmentCollectionTests.cs b/mcs/class/System.Data.Services/Test/ExpandSegmentCollectionTests.cs
old mode 100755
new mode 100644
diff --git a/mcs/class/System.Data.Services/Test/ExpandSegmentTests.cs b/mcs/class/System.Data.Services/Test/ExpandSegmentTests.cs
old mode 100755
new mode 100644
diff --git a/mcs/class/System.Data.Services/Test/IgnorePropertiesAttributeTests.cs b/mcs/class/System.Data.Services/Test/IgnorePropertiesAttributeTests.cs
old mode 100755
new mode 100644
diff --git a/mcs/class/System.Data.Services/Test/MimeTypeAttributeTests.cs b/mcs/class/System.Data.Services/Test/MimeTypeAttributeTests.cs
old mode 100755
new mode 100644
diff --git a/mcs/class/System.Data.Services/Test/QueryInterceptorAttributeTests.cs b/mcs/class/System.Data.Services/Test/QueryInterceptorAttributeTests.cs
old mode 100755
new mode 100644
diff --git a/mcs/class/System.Data/ChangeLog b/mcs/class/System.Data/ChangeLog
index 8525330..15adab4 100644
--- a/mcs/class/System.Data/ChangeLog
+++ b/mcs/class/System.Data/ChangeLog
@@ -1,3 +1,20 @@
+2010-09-08  Jb Evain  <jbevain at gmail.com>
+
+	Fix the monodroid and monotouch profile builds
+
+2010-09-08  Jb Evain  <jbevain at gmail.com>
+
+	Fix the mobile_System.Data include
+
+2010-09-08  Jb Evain  <jbevain at gmail.com>
+
+	Factorize the System.Data monotouch and monodroid sources into a
+	mobile.sources
+
+2010-09-08  Jb Evain  <jbevain at gmail.com>
+
+	Enable the System.Data build for monodroid
+
 2009-12-03  Jonathan Pobst  <monkey at jpobst.com>
 
 	* System.Data.dll.sources: Add SortOrder.cs.
diff --git a/mcs/class/System.Data/ChangeLog b/mcs/class/System.Data/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Data/ChangeLog
copy to mcs/class/System.Data/ChangeLog.old
diff --git a/mcs/class/System.Data/Makefile b/mcs/class/System.Data/Makefile
index 78e7c33..0a307fa 100644
--- a/mcs/class/System.Data/Makefile
+++ b/mcs/class/System.Data/Makefile
@@ -31,7 +31,8 @@ LIB_MCS_FLAGS +=	\
 	-r:J2SE.Helpers.dll			\
 	$(OTHER_LIB_MCS_FLAGS)
 else 
-ifeq (monotouch, $(PROFILE))
+MOBILE := $(filter monotouch monodroid, $(PROFILE))
+ifdef MOBILE
 LIB_MCS_FLAGS += \
 	-r:Mono.Data.Tds.dll \
 	-r:System.Transactions.dll
diff --git a/mcs/class/System.Data/System.Data.Common/ChangeLog b/mcs/class/System.Data/System.Data.Common/ChangeLog
index c2d0a74..f309de4 100644
--- a/mcs/class/System.Data/System.Data.Common/ChangeLog
+++ b/mcs/class/System.Data/System.Data.Common/ChangeLog
@@ -1,3 +1,7 @@
+2010-09-08  Jb Evain  <jbevain at gmail.com>
+
+	Enable the System.Data build for monodroid
+
 2010-07-23  Veerapuram Varadhan  <v.varadhan at gmail.com>
 
 	** Fixes #565616 - Based on Patch by Hubert FONGARNAND
diff --git a/mcs/class/System.Data/System.Data.Common/ChangeLog b/mcs/class/System.Data/System.Data.Common/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Data/System.Data.Common/ChangeLog
copy to mcs/class/System.Data/System.Data.Common/ChangeLog.old
diff --git a/mcs/class/System.Data/System.Data.Common/DbConnection.cs b/mcs/class/System.Data/System.Data.Common/DbConnection.cs
index ca186c3..1bbc679 100644
--- a/mcs/class/System.Data/System.Data.Common/DbConnection.cs
+++ b/mcs/class/System.Data/System.Data.Common/DbConnection.cs
@@ -718,11 +718,11 @@ namespace System.Data.Common {
 		}
 
 		protected virtual DbProviderFactory DbProviderFactory {
-#if MONOTOUCH
+#if MOBILE
 			get {throw new NotImplementedException();}
-#else   // MONOTOUCH
+#else
 			get { return DbProviderFactories.GetFactory (this.GetType (). ToString ()); }
-#endif  // MONOTOUCH
+#endif
 		}
 #endif
 
diff --git a/mcs/class/System.Data/System.Data.Odbc/ChangeLog b/mcs/class/System.Data/System.Data.Odbc/ChangeLog
index 3297792..4df827a 100644
--- a/mcs/class/System.Data/System.Data.Odbc/ChangeLog
+++ b/mcs/class/System.Data/System.Data.Odbc/ChangeLog
@@ -1,3 +1,9 @@
+2010-12-07  Veerapuram Varadhan  <vvaradhan at novell.com>
+
+	** Fixes #456234 - Patch by amc1999 at gmail.com
+	* OdbcDataReader.cs (GetValue): Handle SQL_NO_TOTAL sanely and 
+	use corresponding Decoder.GetChars instead of Encoding.GetString.
+	
 2010-06-15 Jonathan Chambers  <joncham at gmail.com>
 
 	* OdbcDataReader.cs: Remove unneeded cast on ref parameter
diff --git a/mcs/class/System.Data/System.Data.Odbc/OdbcDataReader.cs b/mcs/class/System.Data/System.Data.Odbc/OdbcDataReader.cs
index 0541d2b..9cc5e5c 100644
--- a/mcs/class/System.Data/System.Data.Odbc/OdbcDataReader.cs
+++ b/mcs/class/System.Data/System.Data.Odbc/OdbcDataReader.cs
@@ -732,6 +732,8 @@ namespace System.Data.Odbc
 					bufsize = (col.MaxLength < 127 ? (col.MaxLength*2+1) : 255);
 					buffer = new byte[bufsize];  // According to sqlext.h, use SQL_CHAR for both char and varchar
 					StringBuilder sb = new StringBuilder ();
+					char[] charBuffer = new char[bufsize];
+					Decoder unicodeDecoder = Encoding.Unicode.GetDecoder ();
 					do {
 						ret = libodbc.SQLGetData (hstmt, ColIndex, col.SqlCType, buffer, bufsize, ref outsize);
 						if (ret == OdbcReturn.Error)
@@ -740,24 +742,24 @@ namespace System.Data.Odbc
 						if (ret == OdbcReturn.Success && outsize==-1)
 							ret = OdbcReturn.NoData;
 
-						if (ret != OdbcReturn.NoData && outsize > 0) {
-							string value = null;
-
-							if (outsize < bufsize)
-								value = Encoding.Unicode.GetString (buffer, 0, outsize);
-							else
-								value = Encoding.Unicode.GetString (buffer, 0, bufsize);
-
-							sb.Append (RemoveTrailingNullChar (value));
+						if (ret == OdbcReturn.Success || ret == OdbcReturn.SuccessWithInfo) {
+							if (outsize >= bufsize || outsize == (int)OdbcLengthIndicator.NoTotal)
+								outsize = bufsize;
+							int charCount = unicodeDecoder.GetChars (buffer, 0, outsize, charBuffer, 0);
+							string strValue = new String (charBuffer, 0, charCount);
+							sb.Append (RemoveTrailingNullChar (strValue));
 						}
 					} while (ret != OdbcReturn.NoData);
 					DataValue = sb.ToString ();
+					charBuffer = null;
 					break;
 				case OdbcType.Text:
 				case OdbcType.VarChar:
 					bufsize = (col.MaxLength < 255 ? (col.MaxLength+1) : 255);
 					buffer = new byte[bufsize];  // According to sqlext.h, use SQL_CHAR for both char and varchar
 					StringBuilder sb1 = new StringBuilder ();
+					charBuffer = new char[bufsize];
+					Decoder defaultDecoder = Encoding.Default.GetDecoder();
 					do { 
 						ret = libodbc.SQLGetData (hstmt, ColIndex, col.SqlCType, buffer, bufsize, ref outsize);
 						if (ret == OdbcReturn.Error)
@@ -765,11 +767,11 @@ namespace System.Data.Odbc
 						// Fix for strance ODBC drivers (like psqlODBC)
 						if (ret == OdbcReturn.Success && outsize==-1)
 							ret = OdbcReturn.NoData;
-						if (ret != OdbcReturn.NoData && outsize > 0) {
-							if (outsize < bufsize)
-								sb1.Append (Encoding.Default.GetString (buffer, 0, outsize));
-							else
-								sb1.Append (Encoding.Default.GetString (buffer, 0, bufsize - 1));
+						if (ret == OdbcReturn.Success || ret == OdbcReturn.SuccessWithInfo) {
+							if (outsize >= bufsize || outsize == (int)OdbcLengthIndicator.NoTotal)
+								outsize = bufsize - 1;
+							int charCount = defaultDecoder.GetChars(buffer, 0, outsize, charBuffer, 0);
+							sb1.Append(charBuffer, 0, charCount);
 						}
 					} while (ret != OdbcReturn.NoData);
 					DataValue = sb1.ToString ();
diff --git a/mcs/class/System.Data/System.Data.SqlClient/ChangeLog b/mcs/class/System.Data/System.Data.SqlClient/ChangeLog
index 675a72a..bffc4c7 100644
--- a/mcs/class/System.Data/System.Data.SqlClient/ChangeLog
+++ b/mcs/class/System.Data/System.Data.SqlClient/ChangeLog
@@ -1,3 +1,13 @@
+2010-09-08  Jb Evain  <jbevain at gmail.com>
+
+	Enable the System.Data build for monodroid
+
+2010-10-01  Veerapuram Varadhan  <vvaradhan at novell.com>
+
+	** Fixes #561667
+	* SqlCommand.cs (Dispose): While Disposing, set connection's datareader 
+	to null so as the connection can be reused with another datareader.
+	
 2010-07-28  Veerapuram Varadhan  <vvaradhan at novell.com>
 
 	** Fixes #584833
diff --git a/mcs/class/System.Data/System.Data.SqlClient/ChangeLog.old b/mcs/class/System.Data/System.Data.SqlClient/ChangeLog.old
new file mode 100644
index 0000000..c43bf95
--- /dev/null
+++ b/mcs/class/System.Data/System.Data.SqlClient/ChangeLog.old
@@ -0,0 +1,1577 @@
+2010-10-01  Veerapuram Varadhan  <vvaradhan at novell.com>
+
+	** Fixes #561667
+	* SqlCommand.cs (Dispose): While Disposing, set connection's datareader 
+	to null so as the connection can be reused with another datareader.
+	
+2010-07-28  Veerapuram Varadhan  <vvaradhan at novell.com>
+
+	** Fixes #584833
+	* SqlCommand.cs (DeriveParameters): Support procedure name nomenclature 
+	of the form <database>.<user>.<procname> .
+	
+2010-06-15  Veerapuram Varadhan  <vvaradhan at novell.com> 
+	** Fixes #613087
+	* SqlDataReader.cs (GetSqlValue): Tds70 returns decimal (18,0) 
+	and beyond as System.Int64.
+	
+2010-03-26  Veerapuram Varadhan  <vvaradhan at novell.com>
+
+	* SqlDataAdapter.cs: 2.0 profile changes
+	
+2009-12-03  Jonathan Pobst  <monkey at jpobst.com>
+
+	* SortOrder.cs: Add enum.
+
+2009-10-28  Veerapuram Varadhan <vvaradhan at novell.com>
+
+	* SqlCommandBuilder.cs (RowUpdatingHandler): Use base version for 2.0 profile.
+	
+2009-10-14  Jonathan Pryor  <jpryor at novell.com>
+
+	* SqlConnection.cs: Remove EnterpriseServices dependency from the
+	  MonoTouch profile.
+
+2009-08-17  Veerapuram Varadhan  <vvaradhan at novell.com>
+
+	** Fixes #525306
+	* SqlConnection.cs (Open): Use Tds80 also in case of non-pooling 
+	connections.
+
+2009-08-01  Gert Driesen  <drieseng at users.sourceforge.net>
+
+	* SqlParameter.cs (ConvertToFrameworkType): Only wrap FormatException
+	on 2.0 profile.
+
+2009-07-30  Gert Driesen  <drieseng at users.sourceforge.net>
+
+	* SqlParameter.cs: Modified ConvertToFrameworkType to only perform
+	conversion if type of value is different from "system type". Make
+	DbTypeMapping hashtable available on 1.0 profile, and add missing
+	mappings. Wrap FormatException adding information on conversion
+	that failed.
+
+2009-07-30  Veerapuram Varadhan  <vvaradhan at novell.com>
+
+	* SqlDataAdapter.cs (*Command): Build fix for 1.x profile.
+	
+2009-07-30  Veerapuram Varadhan  <vvaradhan at novell.com>
+
+	** Fixes the issue reported by Scott <Scott.Fluto at cmgl.ca> in Mono-list
+	* SqlParameter.cs (ConvertToFrameworkType): Return String.Empty 
+	in case of zero-length strings.
+	
+2009-07-30  Veerapuram Varadhan  <vvaradhan at novell.com>
+
+	* SqlDataAdapter.cs (IDbDataAdapter.*Command): Remove over-engineered 
+	checks as the base implementation is changed.
+	
+2009-07-29  Veerapuram Varadhan  <vvaradhan at novell.com>
+
+	* SqlDataAdapter.cs (IDbDataAdapter.*Command): Revert some of my earlier
+	changes.  Validate the incoming value as we use bases' implementation now.
+	Fixes failing tests.
+
+	* SqlParameter.cs (GetSqlValue): Simplify handling of SqlValue and SqlTypes.
+	(SqlTypeToFramworkType): Added support for SqlChars and SqlBytes types.
+
+2009-07-28  Gert Driesen  <drieseng at users.sourceforge.net>
+
+	* SqlCommand.cs: Ensure connection is closed if CloseConnection
+	behavior is set, and reader could not be created.
+
+2009-07-28  Gert Driesen  <drieseng at users.sourceforge.net>
+
+	* More clean up of fix for #522624/#507663
+	* SqlCommandBuilder.cs: Appropriately handle rowUpdatingHandler and
+	more cleanup for 2.0 profile.
+
+2009-07-26  Veerapuram Varadhan  <vvaradhan at novell.com>
+
+	* SqlParameter.cs (get/set_SqlValue, GetSqlValue): Return the appropriately 
+	SQL-typed param value.  Fixes failing provider tests.
+	
+2009-07-28  Gert Driesen  <drieseng at users.sourceforge.net>
+
+       * SqlCommand.cs: Ensure connection is closed if CloseConnection
+       behavior is set, and reader could not be created.
+	
+2009-07-26  Gert Driesen  <drieseng at users.sourceforge.net>
+
+	* SqlParameter.cs: Improved support for SqlValue and SqlTypes.
+
+2009-07-25  Veerapuram Varadhan  <vvaradhan at novell.com>
+
+	* SqlDataReader.cs: Added new schema fields to the schema row. 
+	Fixes a failing provider test.
+
+2009-07-25  Veerapuram Varadhan  <vvaradhan at novell.com>
+
+	* Fixes #507663
+	* SqlCommandBuilder.cs: From 2.0 onwards, use base's 
+	implementation for handling auto-generated commands.
+	* SqlDataAdapter.cs: -- ditto --
+	
+2009-07-15  Veerapuram Varadhan  <vvaradhan at novell.com>
+
+	* SqlParameter.cs: Implement the "internal" FrameworkDbType, 
+	DbTypeMapping and SystemType properties.
+	
+2009-05-08  Veerapuram Varadhan  <vvaradhan at novell.com>
+
+	** Fixes #497715 - based on a patch by Jonas Larsson 
+	<jonas.larsson at manodo.se>
+	
+	* SqlDataReader.cs: (GetSqlXml): Handle Xml types for TDS 8/8.1 
+	clients as well.
+	* SqlParameter.cs: Map XML type properly.
+	
+2009-04-28 Gonzalo Paniagua Javier <gonzalo at novell.com>
+
+	* SqlConnection.cs: if the error causes a disconnection from the
+	server, close the data stream.
+
+2009-03-23  Veerapuram Varadhan  <vvaradhan at novell.com>
+
+	* SqlDataReader.cs (GetSchemaRowType): Correctly handle Tds 8 BigInt type.
+	
+2009-02-02  Veerapuram Varadhan  <vvaradhan at novell.com>
+
+	* SqlConnection.cs: Use TDS 8 instead of TDS 7
+	
+2009-01-24 Gonzalo Paniagua Javier <gonzalo at novell.com>
+
+	* SqlConnection.cs: adapt to changes in TdsConnectionPool.
+	Don't Close() on every error.
+
+2009-01-17  Gert Driesen  <drieseng at users.sourceforge.net>
+
+	* SqlParameter.cs: Renamed isDirty to typeChanged; it is now now only
+	used to indicate whether the type of the parameter has been updated.
+	Changed signature of 'updated' argument in GetFrameworkValue to ref
+	to match delegate in Mono.Data.Tds, and convert value if either the
+	type has been changed or if the 'updated' argument is true (which -
+	for now - means the value or size changed in TdsMetaParameter).
+	Various fixes for derived parameters:
+	- parameter_type 2 means InputOutput parameter, while 3 means Output;
+	- Only set precision and scale is type is decimal.
+	- When type has variable size, then also set Size.
+
+2009-01-04  Gert Driesen  <drieseng at users.sourceforge.net>
+
+	* SqlDataReader.cs: Added GetSchemaRowDbType overload for
+	getting sql type of a given column (identified using its
+	ordinal). Modified GetBytes to throw SqlNullValueException
+	(2.0 profile) or return 0 (1.0 profile) when reading bytes
+	sequentially. Added support for non-sequentially reading
+	text and ntext columns using GetBytes. Modified GetChar
+	to throw a NotSupportedException to match MS.
+
+2009-01-04  Gert Driesen  <drieseng at users.sourceforge.net>
+
+	* SqlCommandBuilder.cs (RefreshSchema): Clear commands.
+
+2009-01-03  Gert Driesen  <drieseng at users.sourceforge.net>
+
+	* SqlDataReader.cs: Removed unused dataTypeNames, and
+	unnecessary initializations. Added missing reader state
+	and row state checks. Fixed implementation of HasRows.
+	Modified type of DataType to object on 1.0 profile for
+	compatibility with .NET 1.x. Do not mark (Big)VarBinary
+	or ((Big)Binary as long, as unit tests show that IsLong
+	is for wide (unicode) data types. Fixed type data for
+	SmallDateTime and SmallMoney data types. Improved support
+	for bigint data type (using TDS 7.0).
+
+2009-01-03  Gert Driesen  <drieseng at users.sourceforge.net>
+
+	* SqlCommand.cs: Moved connection reset before the throw.
+	Improved exception message.
+
+2009-01-03  Gert Driesen  <drieseng at users.sourceforge.net>
+
+	* SqlCommandBuilder.cs: Only set SourceColumn for null check
+	parameters on the 2.0 profile, and set SourceVersion to
+	Current on 1.0 profile. Changed accessibility of RefreshSchema
+	to public, and do not immediately create commands. Removed
+	CWL.
+
+2009-01-03  Gert Driesen  <drieseng at users.sourceforge.net>
+
+	* SqlParameter.cs: When setting ParameterName or sourceName to
+	null, use a zero-length string instead. On 1.0 profile, only
+	infer type from value if value is not null or DBNull. Store
+	raw value in TdsMetadataParameter, and use delegate to convert
+	it to framework type (when necessary). Improve implementation
+	of SqlValue (still needs lots of work).
+
+2009-01-03  Gert Driesen  <drieseng at users.sourceforge.net>
+
+	* SqlCommandBuilder.cs: Added missing checks for QuotePrefix and
+	QuoteSuffix on 2.0 profile, and return a zero-length string if
+	not set (or set to null) on 1.0 profile. Do not allow the value
+	of CatalogSeparator and SchemaSeparator to be changed from '.'.
+	Modified generated SQL to match MS. Added implementation for
+	QuoteIdenfifier. Modified parameters to match MS.
+	* SqlParameter.cs (SqlValue): Keep Value in sync.
+
+2008-12-20 Gonzalo Paniagua Javier <gonzalo at novell.com>
+
+	* SqlParameter.cs: I removed these 2 lines I added 2 patches ago in
+	the previous patch...
+
+2008-12-20 Gonzalo Paniagua Javier <gonzalo at novell.com>
+
+	* SqlConnection.cs: close the connection on error.
+
+2008-12-16 Gonzalo Paniagua Javier <gonzalo at novell.com>
+
+	* SqlParameter.cs: don't allocate error strings until the error
+	actually happens. Compare types instead of strings. Use a Hashtable
+	for type mappings.
+
+2008-12-12 Gonzalo Paniagua Javier <gonzalo at novell.com>
+
+	* SqlParameter.cs: use the underlying type when inferring the type for
+	enumerations.
+
+2008-11-13  Veerapuram Varadhan  <vvaradhan at novell.com>
+
+	* SqlCommand.cs: When a timeout exception occurs, reset the
+	connection before re-using it.  Fixes connection corrupted errors
+	on timeout exception.
+	
+2008-11-09  Gert Driesen  <drieseng at users.sourceforge.net>
+
+	* SqlConnection.cs (ClearPool): Added null check.
+
+2008-11-09  Gert Driesen  <drieseng at users.sourceforge.net>
+
+	* SqlConnection.cs: In Close, also remove reference to pool. In Open,
+	set TdsConnection.Pooling to false for a non-pooled connection.
+	Fixed ClearAllPools to no longer create a new connection for each
+	pool. In ClearPool, perform a lookup of the pool to clear using
+	the connectionstring as the pool field may refer to another pool
+	(as the connectionstring may have changed).
+
+2008-09-30  Veerapuram Varadhan  <vvaradhan at novell.com>
+
+	* SqlDataReader.cs (GetSqlXml): Handle the scenario when Sql
+	Server 2005 returns Xml column type as NTEXT when called from
+	clients that use < TDS 8.0 protocol.
+	
+2008-09-20  Veerapuram Varadhan  <vvaradhan at novell.com>
+
+	* SqlCommand.cs (DeriveParameters): Simplification of the if-else loop.
+	
+2008-09-20  Veerapuram Varadhan  <vvaradhan at novell.com>
+
+	* SqlCommand.cs (DeriveParameters): Handle no square brackets 
+	case in schema/procedure names.
+	
+2008-09-17  Veerapuram Varadhan  <vvaradhan at novell.com>
+
+	* SqlCommand.cs (DeriveParameters): Escape/trim both
+	schema/procedure names before passing as parameter values.
+	
+2008-09-13  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* SqlDependency.cs : wrong namespace.
+
+2008-08-14  Gert Driesen  <drieseng at users.sourceforge.net>
+
+	* SqlConnection.cs: Use constants for min/max values. When value is
+	zero-length string, then fallback to default value for boolean and
+	integer backed properties. Throw ArgumentException when min pool size
+	exceeds max pool size. Check whether value for 'MARS' is a bool.
+	The 'user instance' property is 2.0 only.
+
+2008-08-14  Gert Driesen  <drieseng at users.sourceforge.net>
+
+	* SqlConnection.cs: Convert keywords to lowercase instead of uppercase
+	to avoid further case changes in exception messages.
+
+2008-07-28  Gert Driesen  <drieseng at users.sourceforge.net>
+
+	* SqlCommand.cs (ExecuteReader): When behavior includes SingleRow,
+	then only return a single result. Fixes bug #412569.
+
+2008-07-28  Gert Driesen  <drieseng at users.sourceforge.net>
+
+	* SqlCommand.cs: Fixed order of arguments for ArgumentException in
+	CommandTimeout.
+	* SqlConnection.cs (ChangePassword): Do not allow empty connection
+	string. Updated exception messages.
+
+2008-07-28  Gert Driesen  <drieseng at users.sourceforge.net>
+
+	* SqlCommand.cs: Fixed param name in ArgumentException for negative
+	CommandTimeout to match MS. On 2.0 profile, throw NRE in Prepare
+	when connection is NULL. In Prepare, return immediately after
+	connection check (2.0 only) for stored procedures, or when no
+	parameters are added. Added check to see if transaction is
+	associated with same connection as the command and updated
+	exception messages.
+
+2008-07-28  Gert Driesen  <drieseng at users.sourceforge.net>
+
+	* SqlCommand.cs: Added bool argument to ValidateCommand to specify
+	whether an async method is being executed. Minor changes to exception
+	messages to match MS.
+
+2008-07-28  Gert Driesen  <drieseng at users.sourceforge.net>
+
+	* SqlCommand.cs: Avoid NRE in CloseDataReader when connection is NULL.
+	Fixes bug #412584. Removed unused moreResults eargument from
+	CloseDataReader. Removed behavior argument from Execute, and have it
+	use the behavior field instead. In ValidateCommand, throw
+	InvalidOperationException instead of NRE when Connection is NULL.
+	* SqlDataReader.cs: Sync with SqlCommand's CloseDataReader signature
+	change.
+
+2008-07-28  Gert Driesen  <drieseng at users.sourceforge.net>
+
+	* SqlCommand.cs: (Transaction): On the 1.0 profile, do not allow
+	Transaction to be set when a reader is open for the current connection. 
+	Fixes bug #412579. 
+
+2008-07-28  Gert Driesen  <drieseng at users.sourceforge.net>
+
+	* SqlCommand.cs (Connection): Do not throw InvalidOperationException
+	if transaction is in progress. Fixes bug #412576. On 1.0 profile, throw
+	InvalidOperationException when a reader is open for the current
+	connection. Do not set transaction to NULL when changing connection,
+	instead set it to null in Transaction when transaction is no longer
+	open.
+
+2008-07-28  Gert Driesen  <drieseng at users.sourceforge.net>
+
+	* SqlConnection.cs: Use null as default value for connectionString
+	field. Remove Init method, as initialization is done in
+	SetDefaultConnectionParameters. Initialize parms in
+	SetDefaultConnectionParameters to avoid calling Reset on newly
+	initialized collection. In Dispose (bool), also invoke base.Dispose if
+	SqlConnection was already disposed. Fixes bug #412571. 
+
+2008-07-28  Gert Driesen  <drieseng at users.sourceforge.net>
+
+	* SqlConnection.cs (ChangeState): Return immediately when new state
+	equals original state. Fixes bug #412574. Removed extra whitespace.
+
+2008-07-23  Veerapuram Varadhan  <vvaradhan at novell.com>
+
+	* SqlDataReader.cs (NextResult): Memleak fix - mark datatypeNames
+	array to be GCed along with schemaTable.
+	
+2008-07-23  Veerapuram Varadhan  <vvaradhan at novell.com>
+
+	* SqlDataReader.cs: Do not generate schemaTable unless otherwise
+	asked for; use command.Tds.Columns instead.  Improves performance
+	of the DataReader.
+	
+2008-07-10  Veerapuram Varadhan  <vvaradhan at novell.com>
+
+	** Fixes #326182
+	* SqlCommand.cs (GetOutputParameters): Update parameter values iff 
+	parameter direction is InputOutput or Output.
+	
+2008-07-06  Gert Driesen  <drieseng at users.sourceforge.net>
+
+	* SqlException.cs: Modified HResult/ErrorCode to match MS. Removed
+	unused FromTdsInternalException overload. Removed unnecessary check
+	for Errors.Count. Minor code formatting.
+
+2008-07-03  Rodrigo Kumpera  <rkumpera at novell.com>
+
+	* SqlConnection.cs: Remove connStringParameters as nobody uses it.
+	
+2008-07-01  Rodrigo Kumpera  <rkumpera at novell.com>
+
+	* SqlDataReader.cs: Do all column accesses with int indexes.	
+
+2008-07-01  Rodrigo Kumpera  <rkumpera at novell.com>
+
+	* SqlDataReader.cs (GetSchemaTable): All column index are constants,
+	extract them.
+
+2008-07-01  Rodrigo Kumpera  <rkumpera at novell.com>
+
+	* SqlDataReader.cs (GetSchemaTable): Calculate column indexes
+	outside of the row loop.
+
+2008-07-01  Marek Habersack  <mhabersack at novell.com>
+
+	* SqlDataReader.cs: use named properties in TdsDataColumn for the
+        2.0 profile.
+
+2008-06-30  Zoltan Varga  <vargaz at gmail.com>
+
+	* SqlDataReader.cs: Allocate 'schemaTable' lazily. 
+	(GetSchemaValue): Avoid some hash table lookups
+
+2008-06-27  Zoltan Varga  <vargaz at gmail.com>
+
+	* SqlDataReader.cs (ConstructSchemaTable): Avoid unneccessary reflection calls.
+
+2008-06-23  Veerapuram Varadhan  <vvaradhan at novell.com>
+
+	* SqlDependency.cs: New
+	
+2008-06-12  Veerapuram Varadhan  <vvaradhan at novell.com>
+	
+	Patch by Christian Hergert <christian.hergert at gmail.com>
+	* SqlConnection.cs (Open): Do not reset the connection as it is already 
+	done in the TdsConnectionPool itself.
+	
+2008-06-12  Marek Habersack  <mhabersack at novell.com>
+
+	* SqlParameterCollection.cs: this [int] must check the range and
+	throw an exception if necessary.
+	
+	* SqlCommand.cs: throw IOEX when stored procedure is not found in
+	DeriveParameters. All procedures in MS SQL will report at least
+	one parameter - the return value.
+
+2008-06-10  Veerapuram Varadhan  <vvaradhan at novell.com>
+	
+	* SqlConnection.cs: TdsConnectionPool.GetConnectionPool() now returns 
+	IDictionary<TKey, TValue>. 
+	
+2008-06-09  Ankit Jain  <jankit at novell.com>
+
+	* SqlCommand.cs: Use Tds instead of ITds now.
+	* SqlConnection.cs:  Likewise.
+
+2008-05-27  Gert Driesen  <drieseng at users.sourceforge.net>
+
+	* SqlConnection.cs: Added support for '.' as alias for localhost.
+	Improve exception message when TCP/IP protocol is not enabled.
+
+2008-05-17  Gert Driesen  <drieseng at users.sourceforge.net>
+
+	* SqlDataReader.cs (GetInt64): Removed workaround for TDS 7.0 handling
+	of bigint column type as this is handled in Mono.Data.Tds.
+
+2008-05-14  Marek Habersack  <mhabersack at novell.com>
+
+	* SqlConnection.cs: added support for USER INSTANCE keyword in the
+	connection string.
+
+2008-04-22  Veerapuram Varadhan  <vvaradhan at novell.com>
+
+	** Fixes Bug#381151
+	* SqlCommand.cs: Handle exceptions sanely and do not close
+	connection on TdsTimeoutException.
+	
+2008-04-21  Gert Driesen  <drieseng at users.sourceforge.net>
+
+	* SqlBulkCopyColumnMappingCollection.cs: Changed argument names to
+	match MS. Code formatting.
+	* SqlCommand.cs: Changed argument names to match MS. Code formatting.
+	Do not include explicit IDbCommand implementation on 2.0 profile.
+	* SqlCommandBuilder.cs: Changed argument names to match MS. Code
+	formatting.
+	* SqlDataReader.cs: Changed argument names to match MS. Code
+	formatting.
+	* SqlParameterCollection.cs: Do not include IList, ICollection and
+	IDataParameterCollection explicit interface implementation on 2.0
+	profile. Code formatting.
+ 	* SqlConnection.cs: Changed argument names to match MS.
+	* SqlDataAdapter.cs: Changed argument names to match MS.
+	* SqlTransaction.cs: Do not include explicit interface implementation
+	of IDbTransaction.Connection on 2.0 profile. Code formatting.
+
+2008-04-19  Robert Jordan  <robertj at gmx.net>
+
+	* SqlParameterCollection.cs (AddRange(SqlParameter[])):
+	Fix endless recursion.
+
+2008-04-08  Marek Habersack  <mhabersack at novell.com>
+
+	* SqlConnection.cs: TCP port discovery via UDP port 1434 should
+	honor the timeout specified in the connection string (or the
+	default one). In some environments 100 microseconds might not be
+	enough to discover the port.
+
+2008-04-01  Marek Habersack  <mhabersack at novell.com>
+
+	* SqlParameter.cs: ConvertToFrameworkType must handle empty
+	strings gracefully - a DBNull.Value must be returned in this
+	case.
+
+	* SqlCommand.cs: DeriveParameters should split the stored
+	procedure name into the schema name and procedure name before
+	querying its parameters.
+
+2008-03-03  Ankit Jain  <jankit at novell.com>
+
+	* SqlClientMetaDataCollectionNames.cs: Set the field values.
+
+2007-10-21  Gert Driesen  <drieseng at users.sourceforge.net>
+
+	* SqlCommand.cs: Use ExceptionHelper.CheckEnumValue for enum checks.
+
+2007-10-20  Gert Driesen  <drieseng at users.sourceforge.net>
+
+	* SqlCommand.cs: Added constant for default CommandTimeout, instead
+	of using a magic number. Avoid unnecessary initialization. Fixed
+	default value for DesignTimeVisible. Return zero-length string if
+	CommandText is null. Use ExceptionHelper.InvalidEnumValueException
+	to avoid code duplication. Spaces to tabs and code formatting.
+	* SqlConnection.cs: Use different default package size on 2.0 profile.
+	Added constants for default values, instead of using magic numbers.
+	Avoid unnecessary initialization. In PacketSize, return default or
+	configured packet size when connection is not open. Use
+	ExceptionHelper.ConnectionClosed instead of local method. Removed
+	use of some hardcoded values in SetDefaultConnectionParameters, and
+	use Environment.MachineName as default WorkstationId instead of
+	DNS host name. Code formatting.
+	* SqlDataAdapter.cs: In default ctor, set SelectCommand to null.
+	Avoid unnecessary initializations. Use direct assignment in
+	IDbDataAdapter implementation. Fixed exception message for negative
+	UpdateBatchSize. In Dispose override, make sure to invoke base
+	method.
+
+2007-10-19  Gert Driesen  <drieseng at users.sourceforge.net>
+
+	* SqlTransaction.cs: Clear connection in commit. In IsolationLevel,
+	throw IOE if transaction is no longer open.
+
+2007-10-19  Gert Driesen  <drieseng at users.sourceforge.net>
+
+	* SqlTransaction.cs: Avoid unnecessary initialization. Remove 
+	isRolledBack since its essentially the same as isOpen. Use
+	ExceptionHelper.TransactionNotUsable instead of duplicating code.
+	On 2.0 profile, ignore call to Rollback when transaction was already
+	disposed.
+
+2007-10-18  Gert Driesen  <drieseng at users.sourceforge.net>
+
+	* SqlConnection.cs: Avoid unnecessary initialization. Use string.Empty
+	for assigning zero-length string, and use String.Length to check for
+	zero-length string. Added support for IsolationLevel.Snapshot.
+	Added StructuredTypeMembers schema collection and restrictions. Fixed
+	table name for MetaDataCollections collection. Implemented
+	DataSourceInformation collection. Added missing data types (probably
+	introduced in 2.0 SP1). In GetSchema, throw InvalidOperationException
+	if connection is closed and throw NotImplementedException for
+	StructuredTypeMembers collection.
+
+2007-10-18  Gert Driesen  <drieseng at users.sourceforge.net>
+
+	* SqlConnection.cs: On 1.0 profile, IsolationLevel.Unspecified is
+	not valid. On 2.0 profile, when IsolationLevel.Unspecified is passed
+	make sure to also set SqlTransaction.IsolationLevel to
+	ReadCommitted. Modified exceptions to match MS.
+
+2007-10-17  Nagappan <anagappan at novell.com> 
+
+	* SqlParameter.cs (ConvertToFrameworkType): Added SqlDbType.Image.
+
+2007-10-17  Nagappan <anagappan at novell.com> 
+
+	* SqlConnection.cs: BeginTransaction does not handle
+	  IsolationLevel.Unspecified, so the default is set as ReadCommited.
+	  Thanks to Jerome Haltom <wasabi at larvalstage.net> for this patch. Fixes
+	  bug # 333082.
+	* SqlTransaction.cs: If transaction count is greater then 0 then roll back.
+	  Thanks to Jerome Haltom <wasabi at larvalstage.net> for this patch. Fixes
+	  bug # 331953.
+
+2007-10-15  Gert Driesen  <drieseng at users.sourceforge.net>
+
+	* SqlException.cs: Do not hide Message on 2.0 profile. Fixes bug
+	#333901.
+
+2007-10-08  Marek Safar <marek.safar at gmail.com> 
+
+	* SqlParameterCollection.cs (SetParameter): Fixed missing cast.
+	
+2007-09-27  Nagappan A <anagappan at novell.com> 
+
+	* SqlConnection.cs: Added MonoTODO appropriately.
+
+2007-09-26  Nagappan A <anagappan at novell.com> 
+
+	* SqlCommandBuilder.cs: Code alignment.
+
+2007-09-25  Nagappan A  <anagappan at novell.com>
+
+	* SqlInitialCatalogConverter.cs, SqlDataSourceConverter.cs:
+	NetworkLibraryConverter.cs: Added new files.
+
+	* SqlParameter.cs: 2.0 attribute changes.
+
+	* SqlDataAdapter.cs: 2.0 attribute changes.
+
+	* SqlConnectionStringBuilder.cs: 2.0 attribute changes.
+
+	* SqlConnection.cs (ClearAllPools, ClearPool): Implemented 2.0
+	APIs, other 2.0 attribute changes.
+
+	* SqlCommandBuilder.cs (GetSchemaTable, InitializeCommand):
+	Implemented 2.0 APIs, other 2.0 attribute changes.
+
+	* SqlBulkCopyColumnMappingCollection.cs: Added constructor, 2.0
+	API compatibility changes.
+
+	* SqlException.cs: 2.0 attribute changes.
+
+2007-08-13  Nagappan A  <anagappan at novell.com>
+
+	* SqlConnection.cs (ConnectionString): 2.0 compatibility changes.
+
+	* SqlDataReader.cs (IsCommandBehavior): Fixed spelling mistake of
+	the method name.
+	(Dispose): 2.0 compatibility changes.
+
+	* SqlBulkCopy.cs (SqlRowsCopied): Fixed spelling mistake of the
+	event name.
+	(RowsCopied): Generates event when NotifyAfter is set.
+
+	* SqlCommandBuilder.cs (Dispose, RefreshSchema): 2.0 compatibility
+	changes.
+
+	* SqlClientFactory.cs (CreateDataSourceEnumerator): Removed bogus
+	TODO.
+
+	* SqlException.cs (Message): 2.0 compatibility changes.
+
+2007-08-06  Nagappan A  <anagappan at novell.com>
+
+	* SqlCommand.cs, SqlDataReader.cs, SqlConnection.cs: When the
+	server resets the connection, now the client code also disconnects
+	the session and remove the instance from pool. Fixes bug # 81933.
+
+2007-07-31  Nagappan A  <anagappan at novell.com>
+
+	* SqlCommand.cs (Transaction, Connection): IDbCommand Transaction
+	and Connection can be set to null. Fixes bug 82189.
+
+2007-07-23  Nagappan A  <anagappan at novell.com>
+
+	* SqlCommandBuilder.cs (ApplyParameterInfo, GetParameterName):
+	(GetParameterPlaceholder): Implemented 2.0 missing APIs.
+
+2007-07-22  Nagappan A  <anagappan at novell.com>
+
+	* SqlBulkCopy.cs (NotifyAfter): Implemented 2.0 property.
+	(GetColumnMetaData, GenerateColumnMetaData):
+	(ValidateColumnMapping): Implemented private method's to generate
+	and validate SqlBulkCopy headers.
+	(BulkCopyToServer): Private method to actually do the bulk copy
+	processing.
+	(WriteToServer): Implemented 2.0 missing overloaded methods.
+	(IDisposable.Dispose): Implemented 2.0 missing method.
+
+	* SqlBulkCopyColumnMappingCollection.cs (Add, CopyTo): Implemented
+	missing API.
+	(Item): Implemented missing property.
+
+	* SqlBulkCopyColumnMapping.cs: Modified the implementation of
+	Constructors to use property.
+
+	* SqlDataReader.cs (GetSqlXml, IsCommandBehaviour): Added 2.0
+	missing method.
+	(Connection): Added missing property.
+
+	* SqlParameter.cs (SetSqlDbType, ConvertToFrameworkType): Modified
+	method as internal from private.
+
+	* SqlConnection.cs: Fixed 2.0 missing feature.
+
+	* SqlException.cs: Fixed 2.0 missing feature.
+
+	* SqlClientPermission.cs: Fixed 2.0 missing feature.
+
+2007-07-01  Gert Driesen  <drieseng at users.sourceforge.net>
+
+	* ISqlNotificationReceiver.cs: Removed.
+	* SqlClientFactory.cs: Use SqlDataSourceEnumerator from S.D.Sql and
+	marked method todo. Avoid unnessary casts. Code formatting.
+	* SqlCommand.cs: Explicit interface implementation of IDbCommand not
+	necessary on 2.0 profile. Fixes API mismatches. Avoid unnecessary
+	casts. Code formatting.
+	* SqlConnection.cs: Also use RecommendAsConfigurable instead of
+	SettingBindableAttribute on 2.0. Use StateChange event from base class
+	on 2.0. Only explicitly implement IDbConnection methods on 1.0, since
+	these are implemented by base class on 2.0 profile. Removed extra
+	explicit implementation of IDisposable since the base class implements
+	this. Code formatting.
+	* SqlDataAdapter.cs: Dispose (bool) override not necessary on 2.0
+	profile. Stubbed ICloneable.Clone. Fixes API mismatches.
+	* SqlDataReader.cs: On 2.0, IDisposable.Dispose is implemented by
+	DbDataReader. Only 1.0 profile, explicitly implemented IEnumerable
+	GetEnumerator. Code formatting.
+	* SqlDataSourceEnumerator.cs: Removed.
+	* SQLDebugging.cs: Marked sealed on 2.0. Code formatting.
+	* SqlNotificationAuthType.cs: Removed.
+	* SqlNotificationInfo.cs: Added missing fields. Code formatting.
+	* SqlNotificationSource.cs: Added missing fields. Code formatting.
+	* SqlNotificationTransports.cs: Removed.
+	* SqlNotificationType.cs: Added missing Unknown field. Code formatting.
+	* SqlParameter.cs: Removed Browsable and EditorBrowsable attributes
+	from Precision and Scale. Fixes API mismatches. Code formatting fixes.
+	* SqlTransaction.cs: On 2.0 profile, Dispose method is exposed by
+	base class. Fixes API mismatches. Code formatting fixes.
+
+2007-06-21  Nagappan A  <anagappan at novell.com>
+
+	* SqlConnection.cs: Fixed compiler warning.
+
+2007-06-11  Nagappan A  <anagappan at novell.com>
+
+	* SqlConnection.cs (ParseDataSource): Adds tcp support in
+	connection string. Fixes bug # 80975.
+
+	* SqlCommand.cs (Dispose): On disposing the command object, don't
+	dispose connection and transaction.
+
+2007-06-06  Nagappan A  <anagappan at novell.com>
+
+	* SqlCommand.cs, SqlConnectionStringBuilder.cs, SqlConnection.cs:
+	Fixed 1.0 and 2.0 extras, errors as stated in class status page.
+
+	* SqlDataAdapter.cs, SqlParameter.cs:Fixed 1.0 and 2.0 extras,
+	errors as stated in class status page.
+
+	* SqlBulkCopyColumnMappingCollection.cs: Fixed 1.0 and 2.0 extras,
+	errors as stated in class status page.
+
+2007-05-30  Nagappan A  <anagappan at novell.com>
+
+	* SqlParameter.cs (SqlParameter): Updated constructor to use the
+	new TDS RPC implementation.
+	Fixed missing attributes.
+	(SetDbType): Added new case for sql_variant type.
+	(ConvertToFrameworkType): Implemented new private method to
+	convert the data type to framework type.
+
+	* SqlParameterCollection.cs: Fixed missing attributes and
+	implemented missing methods.
+
+	* SqlConnection.cs: Fixed missing attributes.
+
+	* SqlConnectionStringBuilder.cs: Certain attributes are missing or
+	its value or they are not appropriate. Fixed them.
+
+	* SqlDataReader.cs (GetData): Method is available only under 1.0
+	profile.
+	
+	* SqlCommandBuilder.cs: Certain attributes are available only
+	under 2.0 profile, so moved them inside ifdef.
+
+	* SqlCommand.cs: Certain attributes are available only under 2.0
+	profile, so moved them inside ifdef.
+
+	* SqlBulkCopy.cs: Added new stubs.
+
+	* SqlBulkCopyColumnMappingCollection.cs: Added new stubs.
+
+2007-05-29  Nagappan A  <anagappan at novell.com>
+
+	* SqlCommand.cs (Dispose): Command.Dispose closing
+	connection. Fixes bug # 81710. Thanks to AMC <amc1999 at gmail.com>
+	for the fix.
+
+2007-05-10  Nagappan A  <anagappan at novell.com>
+
+	* SqlClientMetaDataCollectionNames.cs: Fixed incorrect constructor
+	type.
+
+	* SqlConnectionStringBuilder.cs: Fixed missing attributes.
+
+2007-05-09 Igor Zelmanovich <igorz at mainsoft.com>
+
+	* SqlConnectionStringBuilder.cs: added MonoNotSupported attribute.
+
+2007-04-03  Amit Biswas  <amit at amitbiswas.com>
+
+	* SqlDataReader.cs (GetSqlBytes, GetProviderSpecificFieldType)
+	(GetProviderSpecificValue, GetProviderSpecificValues): Implemented
+	missing API.
+
+	* SqlParameter.cs (XmlSchemaCollectionDatabase): Implemented missing property
+	(XmlSchemaCollectionName): Implemented missing property
+	(XmlSchemaCollectionOwningSchema): Implemented missing property
+	(SourceColumnNullMapping): Existing implementation was not correct, Replaced the implementation
+	(.ctor): Implemented mising constructor new in .net 2.0
+
+	* SqlErrorCollection.cs (CopyTo): Implemented missing API
+
+	* SqlParameter.cs (InferSqlType): Corrected bug related to default values of
+	SqlDbType and DbType
+	(ResetSqlDbType): Implemented missing API
+	(ResetDbType): Implemented missing API	
+
+2007-03-09  Amit Biswas  <amit at amitbiswas.com>
+
+	* SqlParameterCollection.cs (CopyTo): Implemented missing API
+
+2007-04-02  Nagappan A  <anagappan at novell.com>
+
+	* SqlParameter.cs: Variable name fix.
+
+2007-03-20  Nidhi Rawal  <rawalnidhi_rawal at yahoo.com>
+
+	* SqlClientFactory.cs: Added two using directives.
+	(CreateConnectionStringBuilder): Implemented the method.
+	(CreatePermission): Implemented the property.
+	
+	* SqlCommand.cs: Added one using directive.
+	(Clone): Implemented the method.
+	(Dispose): Implemented the method.
+	(BeginExecuteXmlReader): Implemented the method.
+	
+	* SqlCommandBuilder.cs (QuoteIdentifier): Implemented the method.
+	(UnquoteIdentifier): Implemented the method.
+	
+	* SqlConnection.cs (ChangePassword): Implemented the method.
+
+2007-03-19  Nidhi Rawal  <rawalnidhi_rawal at yahoo.com>
+
+	* SqlClientFactory.cs (CanCreateDataSourceEnumerator): Implemented
+	the property.
+
+	* SqlCommand.cs (Notification): Implemented the property.
+	(NotificationAutoEnlist): Implemented the property.
+
+	* SqlDataReader.cs (VisibleFieldCount): Implemented the property.
+
+	* SqlConnectionStringBuilder.cs (TrustServerCertificate): Implemented
+	the property.
+	(TypeSystemVersion): Implemented the property.
+	(UserInstance): Implemented the property.
+	(ContextConnection): Implemented the property.
+
+	* SqlConnection.cs (FireInfoMessageEventOnUserErrors): Implemented
+	the property.
+	(StatisticsEnabled): Implemented the property.
+	
+	* SqlDataAdapter.cs (UpdateBatchSize): Implemented the property.
+
+	* SqlParameter.cs: Implemented one attribute.
+
+2007-03-16  Andreia Gaita  <avidigal at novell.com>
+	
+	* SqlParameter.cs: Move isVariableSizeType flag to TdsMetaParameter
+	so that the TdsMetaParameter can validate itself for valid size / values.
+	* SqlCommand.cs (Execute): Call Validate on TdsMetaParameter.
+
+2007-03-14  Nagappan A  <anagappan at novell.com>
+
+	* SqlCommand.cs (CommandType): Exception type thrown in 2.0
+	profile is different than 1.0, ArgumentOutOfRangeException.
+	(Connection): Exception type thrown in 2.0 profile is different
+	than 1.0, ArgumentOutOfRangeException.
+	(Execute): If Size property is 0 for String and Binary type, then
+	throw InvalidOperationException.
+	(ValidateCommand): Exception type thrown in 2.0 profile is
+	different than 1.0, NullReferenceException.
+
+2007-03-09  Nagappan A  <anagappan at novell.com>
+
+	* SqlDataReader.cs: Fixed syntax erros reported in class status
+	page.
+
+2007-03-09  Andreia Gaita  <avidigal at novell.com>
+
+	* SqlCommand.cs (ExecuteScalar): Fix returned value for 
+	stored procedure calls to return the first column of the
+	first row produced by the proc.
+
+2007-03-08  Nagappan A  <anagappan at novell.com>
+
+	* SqlCommand.cs (CloseDataReader): Checks whether the SQL
+	connection is created or not.
+
+2007-03-07  Andreia Gaita <avidigal at novell.com>
+
+	* SqlCommand.cs (ExecuteScalar): when calling stored procedures,
+	implement support for return of output values in the parameter
+	collection.
+
+2007-02-16  Nidhi Rawal  <rawalnidhi_rawal at yahoo.com>
+
+	* SqlParameter.cs (CompareInfo): Implemented the property
+	CompareInfo.
+	(LocaleId): Written the property LocaleId.
+	(SqlValue): Written the propert SqlValue.
+
+2007-02-15  Nidhi Rawal  <rawalnidhi_rawal at yahoo.com>
+
+	* SqlCommand.cs: Added some attributes which were not implemented
+	for .NET 2.0 and removed extra attribute which are not there in
+	.NET 2.0.
+
+	* SqlCommandBuilder.cs: Added some attributes that were not 
+	implemented for .NET 2.0.
+
+	* SqlParameterCollection.cs: Added some attributes that were 
+	not implemented for .NET 2.0.
+
+	* SqlConnectionStringBuilder.cs: Added some attributes that
+	 were not implemented for .NET 2.0.
+	
+	* SqlConnection.cs: Added attribute that was not implemented
+	for .NET 2.0.
+
+	* SqlParameter.cs: Added some attributes which were not
+	implemented for .NET 2.0 and removed some extra attributes which
+	are not there in .NET 2.0
+
+2007-02-09  Nagappan A  <anagappan at novell.com>
+
+	* SqlConnection.cs (SetConnectionString): Fixes bug # 80712. A
+	small typo.
+
+2007-01-08  Nagappan A  <anagappan at novell.com>
+
+	* SqlTransaction.cs (Dispose): Fixed compliation warning.
+
+	* SqlDataReader.cs (GetValues): Length of elements to be copied was
+	decided based on the argument array passed, which caused a bug, if
+	the length of given array is more than actual column values.
+
+	* SqlCommandBuilder.cs (CatalogSeparator, SchemaSeparator)
+	(CatalogLocation): Implemented missing properties.
+	(CreateDeleteCommand, CreateInsertCommand, CreateUpdateCommand):
+	Modified private methods to take bool flag. If true, add actual
+	parameter name instead of p1, p2 etc.
+	(CreateParameter): Added overloaded private method to create
+	parameter with the actual column name.
+	(GetUpdateCommand, GetDeleteCommand, GetInsertCommand):
+	Implemented missing overloaded methods.
+	(SetRowUpdatingHandler): Implemented missing protected method.
+
+	* SqlCommand.cs: Fixed compilation warning. Removed bogus
+	MonoTODO's.
+
+2006-12-05  Nagappan A  <anagappan at novell.com>
+
+	* SqlCommand.cs (Execute): If sql2 length is greater than 0, then
+	add ';' and the respective sql2 string and then execute the
+	string. Fixes bug # 79880.
+
+2006-08-30  Nagappan A  <anagappan at novell.com>
+
+	* SqlConnection.cs: Implemented SqlConnection.GetSchema ().
+
+2006-09-08  Konstantin Triger <kostat at mainsoft.com>
+
+	* SqlClientFactory.cs: implemented SqlClientFactory.CreateConnection ().
+
+2006-07-13  Senganal T  <tsenganal at novell.com>
+
+	* SqlClientFactory.cs SqlCommand.cs SqlConnectionFactory.cs 
+	SqlClientPermission.cs SqlParameterCollection.cs SqlDataReader.cs 
+	SqlConnection.cs SqlParameter.cs SqlTransaction.cs :
+		2.0 Api fixes
+
+2006-05-31  Gert Driesen  <drieseng at users.sourceforge.net>
+
+	* SqlConnection.cs: Removed extra destructor, as destructor on 
+	System.ComponentModel.Component already calls Dispose.
+	* SqlParameter.cs: Removed explicit interface implementation of
+	IDataParameter.ParameterName.
+
+2006-05-26  Senganal T  <tsenganal at novell.com>
+
+	* SqlParameter.cs :
+		- InferSqlType : if value is null or DBNull.Value, retain the
+		current parameter type.
+
+2006-04-18  Senganal T  <tsenganal at novell.com>
+
+	* SqlConnection.cs :
+		- SetConnectionString : set the pareameter to default values
+		if connection string is empty or null
+		- Open : Raise InvalidOperationException if Connection String
+		is empty or null
+		- Dispose : Test exception not raised if dispose called on a
+		connection with empty connection string
+
+	slight modification of the patch by Jonel Rienton
+
+2006-04-07  Senganal T  <tsenganal at novell.com>
+
+	* SqlCommandBuilder.cs :
+		* CreateDeleteCommand () 
+		* CreateUpdateCommand () 
+		* CreateInsertCommand () 
+			- Changed the signature. Do not need DataRow parameter 
+			as the Query generated is parametric.
+			- Correct the null-check term in the WhereClause, set the
+			correct properties for null-check parameter
+			fixes #78027
+			- Modified the generated query to match the query as
+			generated by 2.0. We now ignore null-check in the
+			whereclause if the Column does not allow nulls.
+		* ctor () : Set QuotePrefix and QuoteSuffix for 2.0 profile
+		* GetUpdateCommand ()
+		* GetInsertCommand ()
+		* GetDeleteCommand ()
+			- Do not create new command everytime. Create only if
+			not already created.
+		* RefreshSchema : Reset the commands.
+
+2006-02-17  Chris Toshok  <toshok at ximian.com>
+
+	* SqlCommand.cs, SqlCommandBuilder.cs, SqlConnection.cs,
+	SqlDataAdapter.cs: remove DataSysDescription attributes for >= 2.0
+
+2006-02-17  Chris Toshok  <toshok at ximian.com>
+
+	* SqlDataReader.cs: remove VisibleFieldCount property.
+
+2006-02-10  Senganal T  <tsenganal at novell.com>
+	* SqlDataReader.cs :
+		- GetBytes : Read binary/blob/clob data sequentially when
+		CommandBehavior is set to SequentialAcccess
+		- GetChars : Read String/clob data sequentially when CommandBehavior
+		is set to SequentialAccess
+	* SqlCommand.cs :
+		- ExecuteReader : set SequentialAccess property on TDS
+		- CloseDataReader : Reset the command behavior
+
+2006-01-27  Senganal T  <tsenganal at novell.com>
+
+	* SqlCommandBuilder.cs :
+		- Modified  CreateUpdateCommand,CreateDeleteCommand , to not include
+		column name in the query if its a expression col.
+		Also, modified the queries to match the generated queries in ms.net
+	* SqlCommand.cs :
+		- Modifed Prepare, to check if Parameter is explicitly initialized
+	* SqlParameter.cs :
+		- Added CheckIfInitialized : Checks if datatype is explicitly set and
+		non-zero size is set for variable datatypes.
+	* SqlDataReader.cs :
+		- Added code for GetSqlBinary ()
+		- Fixed GetFieldCount ()
+		- Added more checks and exceptions. 
+
+2006-01-17  Senganal T  <tsenganal at novell.com>
+
+	* SqlCommandBuilder.cs
+		- Modified CreateNewCommand () : Clean up any existing parameter list
+		before reusing the command.Fixes #77225
+
+2005-11-24  Senganal T  <tsenganal at novell.com>
+
+	* SqlConnection.cs 
+		- Modifications to get the correct Packet Size
+
+2005-11-21  Senganal T  <tsenganal at novell.com>
+
+	* SqlClientFactory.cs
+	* SqlCommandBuilder.cs
+	* SqlParameterCollection.cs
+	* SqlDataReader.cs
+	* SqlDataAdapter.cs
+	* SqlParameter.cs
+	* SqlTransaction.cs
+
+	Added stubs and other changes for ADO.NET 2.0 compatibility
+	
+2005-11-12 Gonzalo Paniagua Javier <gonzalo at ximian.com>
+
+	* SqlConnection.cs: don't throw NotImplementedException when using
+	'PERSIST SECUTIRY INFO'. Just do nothing.
+
+2005-10-27  Senganal T  <tsenganal at novell.com>
+
+	* SqlCommand.cs 
+	* SqlDataReader.cs 
+	
+	Made changes so that the number of rows affected can be got directly from 
+	Tds regardsless of the type of query.Fixes bug #75698
+
+2005-10-19  Senganal T  <tsenganal at novell.com>
+
+	* SqlConnection.cs (SetProperties) :
+		- Added support for AttachDBFileName
+
+2005-10-19  Senganal T  <tsenganal at novell.com>
+	
+	* SqlException.cs (Constructor)
+		- Modified the constructor, so that the message parameter
+		of base class is not the same as that of the Exception message.
+		fixes bug #76468
+		
+2005-09-24  Sureshkumar T  <tsureshkumar at novell.com>
+
+	* SqlParameterCollection.cs (AddWithValue): added method. patch
+	from awaddell at fnfr.com (Andy Waddell).
+
+2005-09-21 Senganal T <tsenganal at novell.com>
+
+
+	* SqlConnection.cs : 
+		- Set the correct Default Values for Parameters.
+		- Added Argument Checks (where missing) for the Properties and 
+		throw the correct exception on error.
+		- Modified SetDefaultParameters() to make sure that the parameters
+		are all reset to default values everytime it is called.
+		- Modified SetProperties() to take into account the order of the 
+		keywords in the ConnectionString.
+
+	SqlConnection Fixes for the failing sqlserver connected-mode testcases 
+	in ProviderTest/System.Data.SqlClient/SqlConnectionTest.cs
+
+2005-09-21 Senganal T <tsenganal at novell.com>
+
+	* SqlTransaction.cs : Modifed the Rollback() method, so that
+	connection can be used for another transaction after the previous
+	transaction is rolled back. fixes bug 75904
+
+2005-09-02 Umadevi S <sumadevi at novell.com>
+	
+	* Removed SqlResultSet.cs file
+
+2005-08-26  Sureshkumar T  <tsureshkumar at novell.com>
+
+	* SqlConnection.cs (Open): enable sp_reset_connection.
+
+2005-08-25  Sureshkumar T  <tsureshkumar at novell.com>
+
+	* SqlCommandBuilder.cs: BuildInformation (): continue on columns
+	who don't have basetablename.
+
+2005-08-12  Daniel Morgan <danielmorgan at verizon.net>
+
+	* SqlCommandBuilder.cs: update command builder based on
+	OdbcCommandBuilder latest changes to fix regression 
+	of bug 75552
+	
+2005-08-05  Sureshkumar T  <tsureshkumar at novell.com>
+
+	* SqlCommandBuilder.cs: Set SourceVersion property to the created
+	parameters as it is used by the Adapter's Update method.
+
+2005-07-22  Sureshkumar T  <tsureshkumar at novell.com>
+
+	* SqlCommandBuilder.cs, SqlParameterCollection.cs,
+	SqlConnection.cs, SqlParameter.cs:
+	- updated attributes & attribute descriptions to match with
+	masterinfos.
+
+2005-07-16  Daniel Morgan <danielmorgan at verizon.net>
+
+	* SqlCommandBuilder.cs: CreateUpdateCommand should get the current value, not
+	the orginal value when setting one of the SET variables
+
+2005-07-15  Sureshkumar T  <tsureshkumar at novell.com>
+
+	* SqlCommandBuilder.cs:
+	- set_DataAdapter: unsubscribe event if DataAdapter is reset.
+	- CreateInsertCommand, CreateUpdateCommand, CreateDeleteCommand:
+	if column mapping is missing, use the source column name. use
+	proper version to get the data. 
+	- RowUpdatingHandler: set status to continue to actually process
+	the query.
+
+2005-07-04  Ben Maurer  <bmaurer at ximian.com>
+
+	* SqlError.cs: Patch from dezelin at gmail.com to fix serialization.
+
+2005-06-29  Sureshkumar T  <tsureshkumar at novell.com>
+
+	* SqlConnection.cs: Open (): catch TdsInternalException and throw
+	SqlException.
+	* SqlException.cs: code re-organised to pass message as well with
+	the exception.
+
+2005-06-23  Sureshkumar T  <tsureshkumar at novell.com>
+
+	* SqlConnectionStringBuilder.cs: simplified multiple keyword
+	mappings and allowed-key checking. fixed Item, Remove,
+	ContainsKey, ShoudSerialize, TryGetValue implementations.
+
+2005-06-21  Sureshkumar T  <tsureshkumar at novell.com>
+
+	* SqlConnectionStringBuilder.cs: Connection String Builder class
+	for SqlClient Data Provider.
+
+2005-06-01 Gonzalo Paniagua Javier <gonzalo at ximian.com>
+
+	* SqlParameter.cs: moved the 'using S.D.SqlTypes' out of NET_2_0. Fixes
+	the build.
+
+2005-06-01  Sureshkumar T  <tsureshkumar at novell.com>
+
+	* SqlParameter.cs: Parameter's value can be SqlTypes. Convert to
+	framework type to pass to TDS layer. Fixes bug #75044.
+
+2005-05-24 Umadevi S <sumadevi at novell.com>
+	* fixed some 2.0 and 1.0 specific fields/attributes for various classes.
+	* Added SqlClientMetaDataCollectionNames.cs, Implemented some 2.0
+	properties for SqlParameterCollection for the bulkcopy feature.
+	
+
+2005-05-20 Kornél Pál <http://www.kornelpal.hu/>
+	
+	* Fixed Bug #53169 - SqlDataReader incorrectly returns bigint as decimal
+		Note: The fix works around the limitations of TDS 7.0 to avoid this
+		difference between Mono and .NET Framework TDS 8.0 should be used instead.
+
+2005-05-20 Umadevi S <sumadevi at novell.com>
+	
+	* Fixed Bug 74948 - SqlParameter also takes DBNull Value.
+		Correct some attributes stuff of 1.1 and 2.0 for SqlParameter.cs
+
+2005-05-20 Umadevi S <sumadevi at novell.com>
+
+	* Continuing on implementation for bulkcopy and notification
+		Added files SqlNotificationEventArgs.cs, OnChangeEventHandler.cs
+		Modified SqlRowUpdatingEventArgs.cs
+
+2005-05-19 Umadevi S <sumadevi at novell.com>
+	
+	* For implementation of bulkcopy and notifications added files
+		SqlBulkCopyOptions.cs,SqlBulkCopyColumnMapping.cs,SqlNotificationAuthType.cs
+		SqlNotificationTransports.cs,SqlRowsCopiedEventArgs.cs, SqlRowsCopiedEventHandler.cs
+
+2005-05-19  Umadevi S <sumadevi at novell.com>
+
+	*  Corrected types,enum values of SqlNotificationType,SqlNotificationSource,
+		SqlNotificationInfo and added new method in SqlRowUpdatingEventArgs.cs
+	(For implementation of bulkcopy/notifications)
+
+2005-04-19  Sureshkumar T  <tsureshkumar at novell.com>
+
+	* SqlDataReader.cs: NextResult (): Re-create schema table for each
+	result set. don't re-use, as it may be referenced from somewhere.
+
+2005-04-07  Sureshkumar T  <tsureshkumar at novell.com>
+	    Ankit Jain     <radical at corewars.org>
+
+	* SqlConnection.cs: Implemented additional connection string
+	property "Asynchronous Processing".
+
+	* SqlCommand.cs: Implemented Asynchronous command execution API.
+
+	* SqlAsyncState.cs: A internal state object for asynchronous
+	operations.
+
+	* SqlAsyncResult.cs: Added. Class to hold result for asynchronous
+	queries.
+
+2005-03-28  Sureshkumar T  <tsureshkumar at novell.com>
+
+	* SqlCommand.cs: Execute: Add a semicolon at the end of
+	CommandText. Multiple semicolon's are not being complained.
+
+	fixes bug #74134.
+
+2005-03-11 Gonzalo Paniagua Javier <gonzalo at ximian.com>
+
+	* SqlConnection.cs: added a finalizer for correct implementation of the
+	IDisposable pattern.
+
+2005-03-11 Gonzalo Paniagua Javier <gonzalo at ximian.com>
+
+	* SqlException.cs: make it serialization-compatible with MS. Patch by
+	Aleksandar Dezelin. Closes bug #73596.
+
+2005-03-08  Sureshkumar T  <tsureshkumar at novell.com>
+
+	* SqlDataReader.cs: Call base constructor with CommandBehavior
+	parameter instead of passing DbCommand object. The internal base
+	class with DbCommand Parameter is removed.
+
+2005-03-07  Sureshkumar T  <tsureshkumar at novell.com>
+
+	* SqlCommand.cs : Set CommandBehavior on
+	ExecuteReader,ExecuteScalar,ExecuteNonQuery. This is used in
+	CloseDataReader.
+
+	This fixes bug #73252.
+
+2005-03-03  Sureshkumar T  <tsureshkumar at novell.com>
+
+	* SqlClientFactory.cs: While creating command, create using
+	DbConnectionFactory as DbConnectionBase.CreateDbCommand needs to
+	have a connection factory.
+
+	* SqlConnection.cs: Added an internal constructor which takes
+	DbConnectionFactory.
+
+	* SqlConnectionFactory.cs: Added. Concrete class for abstract
+	factory DbConnectionFactory.
+
+2005-02-22  Sureshkumar T  <tsureshkumar at novell.com>
+
+	* SqlDataReader.cs: GetBytes: return the length of the data if
+        output buffer is null. if not, copy the values to buffer and
+        return the bytes actually read.
+
+2005-02-02  Sureshkumar T  <tsureshkumar at novell.com>
+
+	* SqlConnection.cs: 
+	- Database: return db name from database if connection open,
+	otherwise take from connection string.
+	- Set default values for parameters in the constructor itself.
+	- Dangling else problem with Close method.
+	- reset values of parms (TdsConnectionParameters) rather setting
+	to null.
+	- set disposed to false in Open method
+	- finally call base.Dispose in Dispose (bool)
+
+	Fixes nunit regressions SqlConnectionTest:DefaultConnectionValues
+	and SqlConnectionTest:DatabaseSynonyms.	
+
+2005-01-27  Sureshkumar T  <tsureshkumar at novell.com>
+
+	* SqlCommand.cs (DeriveParameters): Change parameter name to
+	"procedure_name".
+	* SqlParameter.cs (SqlParameter (object [])) : call default
+	constructor to create Tds.Metaparameter.
+
+	fixes bug #63122.
+
+2005-01-03  Sureshkumar T  <tsureshkumar at novell.com>
+
+	* SqlCommand.cs: Fixed bug #68973. Reset Tds.RecordsAffected to 0
+	for each execute statement.
+	
+2004-11-25  Sureshkumar T  <tsureshkumar at novell.com>
+
+	These changes are for 2.0 profile only. These changes implement
+	the generic data base access technique using Provider Factory
+	Implementation. These classes need to be dervided from abstract
+	base classes so that the corresponding factory classes are
+	created when calling CreateCommand, CreateParameter, etc.
+	
+	* SqlClientFactory.cs: Provider Factory class  Implementaion for SqlServer
+	* SqlParameter.cs: Change base classes and override methods.
+	* SqlParameterCollection.cs:  Change base classes and override methods.
+	* SqlTransaction.cs:  Change base classes and override methods.
+	* SqlDataSourceEnumerator.cs: DataSource Enumerator stubs.
+	* SqlDataReader.cs: Change base classes and override methods.
+	* SqlConnection.cs: Change base classes and override methods.
+	* SqlCommandBuilder.cs: Change base classes and override methods.
+	* SqlCommand.cs: Change base classes and override necessary methods.
+
+2004-10-14 Umadevi S <sumadevi at novell.com>
+	* SqlCommand.cs - Implemented the clone method correctly.
+	 (fixed bug 67301)
+
+2004-10-06 Umadevi S <sumadevi at novell.com>
+	* ISqlNoticationReceiver.cs - changed namespace
+	* Added files SqlNotificationType.cs, SqlNotificationInfo.cs, SqlNotificationSource.cs
+
+2004-09-24  Umadevi S <sumadevi at novell.com>
+	* SqlTransaction.cs - Dispose will not call rollback incase the transaction is not open.
+
+2004-09-14  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* SqlClientPermission.cs: Added internal constructor accepting an Sql
+	ClientPermissionAttribute parameter (using base class protected ctor).
+	* SqlClientPermissionAttribute.cs: Copy now use the new SqlClient
+	Permission constructor.
+
+2004-09-13  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* SqlClientPermission.cs: Mostly completed (needs tests).
+	* SqlClientPermissionAttribute.cs: Completed.
+
+2004-09-02 Umadevi S <sumadevi at novell.com>
+	* SqlCommand.cs - ExecuteNonQuery to return -1 incase of executing a storedprocedure
+
+2004-08-16  Gert Driesen <drieseng at users.sourceforge.net>
+
+	* SqlConnection.cs: added TODO on ConnectionString for keywords
+	that are not yet implemented. check value of Integrated Security
+	keyword, check value of bool keywords, improve error reporting
+	for int keywords, added support for the following keyword 
+	synonyms : APP, TIMEOUT, NETWORK, PERSISTSECURITYINFO, WSID,
+	LANGUAGE, USER. Throw NotImplementedException when encrypt keyword
+	is set to true, enlist keyword is set to false or attachdbfilename
+	keyword (or one of its synonyms) is set. Added FIXME for PERSIST
+	SECURITY INFO keyword, throwing a NotImplementedException here
+	would break lots of apps
+
+2004-08-16  Gert Driesen <drieseng at users.sourceforge.net>
+
+	* SqlConnection.cs - spaces to tabs
+
+2004-08-12  Sureshkumar T <tsureshkumar at novell.com>
+	* SqlDataReader.cs - In Close method, the remaining resultsets are drained
+			     out, to read output parameters & to avoid stream overlap
+
+2004-06-30 Umadevi S <sumadevi at novell.com>
+        * SqlCommand.cs : In the Execute Method the commandbehavior parameters were ignored correct
+these
+
+2004-06-22  Atsushi Enomoto <atsushi at ximian.com>
+
+	* SqlCommandBuilder.cs : Avoid cast exception caused by DbNull.
+
+2004-06-18 Umadevi S <sumadevi at novell.com>
+	* SqlCommand.cs - ExecuteNonQuery returns -1 in all cases except
+		insert,update or delete.
+
+2004-06-18 Umadevi S <sumadevi at novell.com>
+	* SqlConnection.cs - handled null being passed as a connectionstring
+	  - checked for minimal set of parameters in connectionstring.
+	  - handled unrecogonized keywords similar to MS.NET
+
+2004-06-17 Umadevi S <sumadevi at novell.com>
+	* SqlTransaction.cs - fixed  multiple rollbacks being called causes invalidoperationexception
+
+2004-06-04  Gert Driesen <drieseng at users.sourceforge.net>
+
+	* SqlClientPermission.cs: removed extra CreateInstance
+	method
+
+2004-06-02  Gert Driesen <drieseng at users.sourceforge.net>
+
+        * SQLDebugging.cs: added missing attributes, marked ctor
+        public to match MS.NET
+
+2004-05-22  Atsushi Enomoto <atsushi at ximian.com>
+
+	* SqlClientPermission.cs : don't use chained obsolete .ctor.
+
+2004-05-20  Gert Driesen (drieseng at users.sourceforge.net)
+
+	*  SqlClientPermissionAttribute.cs: change AllowMultiple and
+	Inherited to match .NET
+
+2004-05-20 Umadevi S <sumadevi at novell.com>
+
+        * Fixed bug 58406- implemented the hasrow method, test program used
+        to test with the bug report                                                        
+
+2004-05-13  Umadevi S  <sumadevi at novell.com>
+	
+	*  SqlClientPermission.cs, SqlDataReader.cs - added missing methods with TODO tags
+	*  SqlCommand.cs, SqlDataAdapter.cs - implemented ToolboxItemAttribute
+	*  SQLDebugging.cs - Added new file with a TODO tag	
+	
+2004-04-05  Lluis Sanchez Gual  <lluis at ximian.com>
+
+	* SqlConnection.cs: Use connection pool implemented in Mono.Data.Tds.
+
+2004-04-01  Lluis Sanchez Gual  <lluis at ximian.com>
+
+	* SqlDataReader.cs: Null values are now represented with DBNull instances.
+	  Deal with this.
+
+2004-03-14  Tim Coleman <tim at timcoleman.com>
+	* SqlCommand.cs SqlConnection.cs:
+		Changes from two patches by Andres Taylor
+		<andres at rotselleri.com>
+
+2004-03-12  Andreas Nahr <ClassDevelopment at A-SoftTech.com>
+
+	* SqlParameter.cs: DO NOT USE the consts scheme if types can be referenced directly!
+
+2004-01-10  Atsushi Enomoto <atsushi at ximian.com>
+
+	* SqlClientPermission.cs : Fixed NET_2_0 build related to 
+	  obsolete attribute problem (see DbDataPermission.cs)
+
+2003-12-28  Tim Coleman <tim at timcoleman.com>
+	* SqlResultSet.cs:
+		Stubbed out this class.
+
+2003-12-23  Tim Coleman <tim at timcoleman.com>
+	* SqlConnection.cs:
+		Improved connection string parsing.  See
+		System.Data.Common.DbConnectionString for source.
+
+2003-12-21  Tim Coleman <tim at timcoleman.com>
+	* SqlConnection.cs:
+		Enable Integrated Security
+
+2003-12-19  Tim Coleman <tim at timcoleman.com>
+	* ISqlNotificationReceiver.cs SqlResultSet.cs:
+		New stubs added
+	* SqlClientPermission.cs:
+		Fix constructor for 1.2
+
+2003-12-04  John Luke  <jluke at cfl.rr.com>
+
+	* SqlXmlTextReader.cs: applied patch from Chris Masters <neeeeeep at bigpond.com>
+	fix peek so it checks if it is at the end and also to make sure that if Read()
+	advances the position past the end of the localBuffer array, it makes
+	a call to GetNextBuffer(). fixes bug #40253 System.IndexOutOfRangeException when
+	using SqlCommand.ExecuteXmlReader()
+
+2003-11-20  Joerg Rosenkranz  <JoergR at voelcker.com>
+
+	* SqlConnection (SetDefaultConnectionParameters):
+	Changed default value of WORKSTATION ID to reflect real
+	host name instead of "localhost".
+
+2003-11-16 Ben Maurer  <bmaurer at users.sourceforge.net>
+
+	* SqlParameterCollection.cs (Clear): Clear needs to take
+	the parameter out of the collection so that it can be used
+	again.
+	(Remove):
+	(RemoveAt): Ditto.
+
+2003-10-03  Diego Caravana  <diego at toth.it>
+
+	* SqlCommand.cs: no change.
+
+	* SqlConnection.cs (Close): Added checks for null instance
+	variables.
+
+	* SqlParameter.cs (Direction): Now handles parameters of type
+	ReturnValue and InputOutput.
+
+	* SqlParameterCollection.cs (IndexOf(string)): Search for
+	SqlParameter object in list is done by obtaining ParameterName
+	attribute, not directly through list.IndexOf().
+	
+2003-08-22  Duncan Mak  <duncan at ximian.com>
+
+	* SqlCommand.cs (ExecuteNonQuery): Return
+	Connection.Tds.RecordsAffected if it is successful.  Patch from
+	Jörg Rosenkranz <joergr at voelcker.com>.
+
+	This is part of a fix to bug #40315.
+
+2003-08-20  Duncan Mak  <duncan at ximian.com>
+
+	* SqlConnectionPool.cs (ReleaseConnection): A patch from Joerg
+	Rosenkranz <JoergR at voelcker.com>. Currently, if a connection is
+	closed by an external event (network problem, etc.) it is pushed
+	back into the connection pool. The next Open call retrieves this
+	invalid connection which leads to exceptions when executing
+	statements.
+
+	This patch fixes this problem. This closes bug #47429.
+
+2003-07-04  Miguel de Icaza  <miguel at ximian.com>
+
+	* SqlDataReader.cs: Added extra information to the exceptions
+	thrown by all the GetXXXX methods.
+
+2003-03-15  Daniel Morgan <danmorg at sc.rr.com>
+
+	* SqlConnection.cs: if Server in the ConnectionString
+	is set to "(local", use "localhost" as the hostname
+	to connect
+
+2003-03-04  Gonzalo Paniagua Javier <gonzalo at ximian.com>
+
+	* SqlException.cs: implemented GetObjectData ().
+
+2003-02-16  Daniel Morgan <danmorg at sc.rr.com>
+
+	* ChangeLog: added this file
+
+	* SqlConnection.cs: - parse data source for 3 possible uses:
+	"Server=hostname", 
+	"Server=hostname\\instancename", 
+	"Server=hostname,port" and open the connection based on the
+	resulting server name and port.  
+	- Added support for named instances
+	by discovery of the sql server tcp port via the sql monitor (udp port 1434)
+	thanks to Phillip Jerkins (Phillip.Jerkins at morgankeegan.com) contribution.
+	Also, thanks to Gonzalo and Tim for their help with timeouts.
+	
diff --git a/mcs/class/System.Data/System.Data.SqlClient/SqlCommand.cs b/mcs/class/System.Data/System.Data.SqlClient/SqlCommand.cs
index e9cf8c1..b096235 100644
--- a/mcs/class/System.Data/System.Data.SqlClient/SqlCommand.cs
+++ b/mcs/class/System.Data/System.Data.SqlClient/SqlCommand.cs
@@ -706,6 +706,8 @@ namespace System.Data.SqlClient {
 			if (disposed) return;
 			if (disposing) {
 				parameters.Clear();
+				if (Connection != null)
+					Connection.DataReader = null;
 			}
 			base.Dispose (disposing);
 			disposed = true;
diff --git a/mcs/class/System.Data/System.Data.SqlClient/SqlConnection.cs b/mcs/class/System.Data/System.Data.SqlClient/SqlConnection.cs
index c6cb08f..ef5a4fc 100644
--- a/mcs/class/System.Data/System.Data.SqlClient/SqlConnection.cs
+++ b/mcs/class/System.Data/System.Data.SqlClient/SqlConnection.cs
@@ -45,9 +45,9 @@ using System.Collections.Specialized;
 using System.ComponentModel;
 using System.Data;
 using System.Data.Common;
-#if !MONOTOUCH
+#if !MOBILE
 using System.EnterpriseServices;
-#endif // !MONOTOUCH
+#endif
 using System.Globalization;
 using System.Net;
 using System.Net.Sockets;
@@ -482,13 +482,13 @@ namespace System.Data.SqlClient
 			}
 		}
 
-#if !MONOTOUCH
+#if !MOBILE
 		[MonoTODO ("Not sure what this means at present.")]
 		public void EnlistDistributedTransaction (ITransaction transaction)
 		{
 			throw new NotImplementedException ();
 		}
-#endif // !MONOTOUCH
+#endif
 
 		object ICloneable.Clone ()
 		{
diff --git a/mcs/class/System.Data/System.Data/ChangeLog b/mcs/class/System.Data/System.Data/ChangeLog
index df742a1..d9d4273 100644
--- a/mcs/class/System.Data/System.Data/ChangeLog
+++ b/mcs/class/System.Data/System.Data/ChangeLog
@@ -1,3 +1,15 @@
+2010-09-08  Jb Evain  <jbevain at gmail.com>
+
+	Enable the System.Data build for monodroid
+
+2010-10-01  Veerapuram Varadhan  <v.varadhan at gmail.com>
+
+	** Fixes #582732 - Patch by Jeffrey Alvarez <kuritsu at gmail.com>
+	* DataColumn.cs (Clone): Deep copy the ExtendedProperties collection.
+	* XmlSchemaDataImporter.cs: Support import of extended properties.
+	* XmlSchemaWriter.cs: Fix exception by writing the extended properties 
+	before simpletype element.
+	
 2010-07-23  Veerapuram Varadhan  <v.varadhan at gmail.com>
 
 	** Fixes #623451
diff --git a/mcs/class/System.Data/System.Data/ChangeLog.old b/mcs/class/System.Data/System.Data/ChangeLog.old
new file mode 100644
index 0000000..6b08b52
--- /dev/null
+++ b/mcs/class/System.Data/System.Data/ChangeLog.old
@@ -0,0 +1,4180 @@
+2010-10-01  Veerapuram Varadhan  <v.varadhan at gmail.com>
+
+	** Fixes #582732 - Patch by Jeffrey Alvarez <kuritsu at gmail.com>
+	* DataColumn.cs (Clone): Deep copy the ExtendedProperties collection.
+	* XmlSchemaDataImporter.cs: Support import of extended properties.
+	* XmlSchemaWriter.cs: Fix exception by writing the extended properties 
+	before simpletype element.
+	
+2010-07-23  Veerapuram Varadhan  <v.varadhan at gmail.com>
+
+	** Fixes #623451
+	* DataColumnCollection.cs (MoveColumn): Fix shifting of DataColumn  
+	according to the direction of movement.
+	
+2010-06-23  Veerapuram Varadhan  <vvaradhan at novell.com>
+
+	** Fixes #581679
+	* DataRelationCollection.cs (Add, Remove): Use DataRelation obj instead 
+	of this when raising OnCollectionChang(ing, ed) events.
+	
+2010-04-11  Veerapuram Varadhan  <vvaradhan at novell.com>
+
+	** Fixes #591443
+	* DataColumn.cs (Clone): Use propert to clone Expression as it builds 
+	compiled expression also, if any. 
+	
+2010-04-10  Veerapuram Varadhan  <vvaradhan at novell.com>
+	
+	** Fixes #589482
+	* DataColumn.cs (set_DataType): Preserve autoIncrement value 
+	for Decimal types as well.
+	
+2010-04-09  Veerapuram Varadhan  <vvaradhan at novell.com>
+
+	** Fixes #576520 - Based on a patch by Greg SIROU <gspam at secway.fr>
+	* DataSet.cs (WriteColumnAsElement): Handle system.object types sanely.
+
+2010-04-09  Veerapuram Varadhan  <vvaradhan at novell.com>
+
+	** Fixes #590232
+	* DataColumn.cs (Clone): Clone extended properties as well
+	
+2010-02-10  Marek Habersack  <mhabersack at novell.com>
+
+	* XmlSchemaDataImporter.cs: the <connections> element might be
+	empty - make sure FirstChild of the element is not null before
+	attempting to use it. Fixes bug #578587
+
+2009-10-30  Veerapuram Varadhan  <vvaradhan at novell.com>
+
+	* DataTable.cs: Reuse old utility methods for raising DataTable 
+	clearing/cleared events.
+	* DataRowCollection.cs (Clear): Raise DataTable clearing/cleared 
+	events only for non 1.x profiles.  Fixes broken 1.x build.
+	
+2009-10-30  Veerapuram Varadhan  <vvaradhan at novell.com>
+
+	** Fixes 448296
+	* DataTable.cs (Clear): Do not raise TableClearing/Cleared events as 
+	they will be raised from DataRowCollection.Clear().  New utility methods 
+	for raising TableClearing/TableCleared events from outside DataTable.  
+	Don't manually reset indexes as ResetIndexes is called from 
+	DataRowCollection.Clear
+	* DataRowCollection.cs (Clear): Raise TableClearing/Cleared events accordingly.
+	
+2009-10-29  Veerapuram Varadhan  <vvaradhan at novell.com>
+
+	** Fixes 332875 - based on analysis by Ben Martin <ben at trustorm.com.au>
+	* XmlSchemaDataImporter.cs (AddParentKeyColumn): If a table already has a 
+	PrimaryKey column defined, when called again, fill the PKCol data into the 
+	passed DataColumn and return.
+	
+2009-10-29  Veerapuram Varadhan  <vvaradhan at novell.com>
+
+	** Fixes #550960 - Patch by Stefano <stefano.sapienti at apsystems.it>
+	* DataTable.cs (BinarySerialize): Use datatype from DataColumn 
+	instead of value of the column.
+	
+2009-10-14  Jonathan Pryor  <jpryor at novell.com>
+
+	* XmlSchemaDataImporter.cs: Remove DbProviderFactories dependency in
+	  the MonoTouch profile.
+
+2009-10-13  Veerapuram Varadhan  <vvaradhan at novell.com>
+
+	** Fixes #537229
+	* XmlDiffLoader (LoadColumnAttributes/Children): Decode column names in 
+	case if they are encoded.
+	
+2009-09-26  Veerapuram Varadhan  <vvaradhan at novell.com>
+
+	** Fixes part of #427769 - Patch by John Lenz <jlenz2 at math.uiuc.edu>
+	* DataSet.cs: XML serialization improvements to be compatible with MS impl.
+	
+2009-09-15  Veerapuram Varadhan  <vvaradhan at novell.com>
+	
+	** Fixes #536194 - Patch by Andrew Kurochk <aaki.viper at gmail.com>
+	* MergeManager.cs (Merge*): Do nothing when source and target 
+	datasets are same.
+	
+2009-09-10  Veerapuram Varadhan  <vvaradhan at novell.com>
+
+	** Fixes #510176
+	* DataView.cs (OnRowChanged/OnRowDeleted): Raise appropriate events iff 
+	view is affected. This silence of the numerous Add/Change events that were
+	getting raised from DataView.
+	(ToTable): Use appropriate index to generated DataTable in case of 
+	RowFilter / Sort conditions.
+	
+	* DataRow.cs (AcceptChanges/RejectChanges): Raise appropriate Changing events
+	
+2009-09-03  Ivan N. Zlatev  <contact at i-nz.net>
+
+	* DataColumnPropertyDescriptor.cs, DataView.cs: Not browsable if Hidden.
+	[Fixes the second part of bug #536547]
+
+2009-08-25  Veerapuram Varadhan  <vvaradhan at novell.com>
+
+	** Fixes #521951
+	* DataViewManager.cs (CollectionToListChangeEventArgs) : Use a corresponding 
+	DataTable/DataRelation obj instead of only DataRelation.
+	
+2009-07-30  Veerapuram Varadhan  <vvaradhan at novell.com>
+
+	* CustomDataClassGenerator.cs (MakeSafeName): Throw NRE instead of 
+	ArgumentNullException - fixes failing tests.
+	
+2009-07-23  Veerapuram Varadhan  <vvaradhan at novell.com>
+
+	* XmlSchemaDataImporter.cs (HandleDataSourceAnnotation): Don't rely 
+	on the order of elements.
+	
+2009-07-23  Veerapuram Varadhan  <vvaradhan at novell.com>
+
+	* XmlSchemaDataImporter.cs: String.IsNullOrEmpty changes
+	
+2009-07-23  Veerapuram Varadhan  <vvaradhan at novell.com>
+
+	* XmlSchemaDataImporter.cs: Added null checks.
+	
+2009-07-22  Veerapuram Varadhan  <vvaradhan at novell.com>
+
+	* XmlSchemaDataImporter.cs:
+	CustomDataClassGenerator.cs: Silence off CWLs.
+	
+2009-07-22  Veerapuram Varadhan  <vvaradhan at novell.com>
+	
+	* CustomDataClassGenerator.cs (CreateCommandCollectionInitializeMethod):
+	Fix generation of DbCommand[] instead of DbCommand()[].  Fix IndexRef to 
+	ref proper index.
+	Avoid using SourceColumnNullMapping property in the constructor 
+	of DbParameter while creating the code.
+	
+2009-07-18  Veerapuram Varadhan  <vvaradhan at novell.com>
+
+	* CustomDataClassGenerator.cs (CreateDbSourceMethods): Handle cases of Scalar 
+	and NoData QueryTypes.
+	
+2009-07-17  Veerapuram Varadhan  <vvaradhan at novell.com>
+	
+	* TableAdapterSchemaInfo.cs: Wrap DbCommand within DbCommandInfo and 
+	define MethodInfo to hold method properties common to both Get and Fill.
+	
+	* CustomDataClassGenerator.cs (CreateDbSourceMethods): Handle cases of Fill 
+	and Get appropriately.
+	
+2009-07-16  Veerapuram Varadhan  <vvaradhan at novell.com>
+
+	* CustomDataClassGenerator.cs (CreateDbSourceMethods):  Handle 
+	methods of type "Fill".
+	
+	* XmlSchemaDataImporter.cs (ProcessDbParameters): Handle empty strings 
+	while setting parameter properties.
+	
+2009-07-15  Veerapuram Varadhan  <vvaradhan at novell.com>
+
+	** Part of fix for #325464
+	* CustomDataClassGenerator.cs: Add implementation to generate 
+	TableAdapter code.
+	
+	* DataSet.cs (TableAdapterSchemaData): New internal property that 
+	holds TableAdapter details to generate code from.
+	
+	* XmlConstants.cs: Add Msdatasource constant to handle 
+	<...:xml-msdatasource> elements.
+	
+	* XmlSchemaDataImporter.cs: Implement handling of <TableAdapter ...>
+	* TableAdapterSchemaInfo.cs: New 
+	
+2009-05-16  Veerapuram Varadhan  <vvaradhan at novell.com>
+
+	** Fixes #325464 - ToolItems.xsd
+	* CustomDataClassGenerator.cs (CreateDataSetTableMembers): Prefix a "_" to 
+	member names when it is same as that of the dataset.  Fixes the CS0542 error
+	during compilation of the generated source.
+	
+2009-03-25  Ivan N. Zlatev  <contact at i-nz.net>
+
+	* DataView.cs: Fire ListChanged when the RowFilter changes.
+	[Fixes bug #479405]
+
+2009-02-24  Veerapuram Varadhan  <vvaradhan at novell.com>
+
+	* *Fixes #377146 - in a better way
+	* XmlDataReader.cs (ReadElementElement): For reference types that
+	implement IXmlSerializable, call the corresponding ReadXml.
+	* DataSet.cs (WriteColumnAsElement): For reference types that implement 
+	IXmlSerializable, call the corresponding WriteXml.
+	
+2009-02-24  Veerapuram Varadhan  <vvaradhan at novell.com>
+
+	* Fixes #476523
+	* DbType.cs: Add DateTime2 and DateTimeOffset - 3.5 additions
+	Patch by Jay Wren <jrwren at xmtp.net>
+	
+2009-01-05  Raja R Harinath  <harinath at hurrynot.org>
+
+	* DataRelationCollection.cs (BinarySerialize): New.  Carved out of ...
+	* DataSet.cs (BinarySerialize): ... this.
+
+2009-01-04  Raja R Harinath  <harinath at hurrynot.org>
+
+	* DataRelationCollection.cs: Sequester NET_2_0 and NET_1_1
+	specific code into separate parts.
+
+	* DataTableCollection.cs (BinarySerialize_Schema): New.
+	(BinarySerialize_Data): Likewise.  Carved out of ...
+	* DataSet.cs (BinarySerialize): ... this.
+
+2009-01-04  Raja R Harinath  <harinath at hurrynot.org>
+
+	* DataTableCollection.cs: Sequester NET_2_0 and NET_1_1 specific
+	code into separate parts.
+
+2009-01-02  Ivan N. Zlatev  <contact at i-nz.net>
+
+	* DataViewManager.cs: Implement all MonoTODO. Fixes the WinForms 
+	DataBinding unit tests.
+
+2009-01-01  Ivan N. Zlatev  <contact at i-nz.net>
+
+	* DataViewManager.cs: Hookup to the table/relations changed events and 
+	raise ListChanged events accordingly.
+
+2008-12-30  Gert Driesen  <drieseng at users.sourceforge.net>
+
+	* DBConcurrencyException.cs: Marked .ctor taking DataRow [] as
+	internal so we can use it on the 1.0 profile (internally). Implemented
+	RowCount.
+
+2008-12-29  Gert Driesen  <drieseng at users.sourceforge.net>
+
+	* SqlDbType: Added Date and Time (2.0 only).
+
+2008-11-18  Raja R Harinath  <harinath at hurrynot.org>
+
+	Fix #420862
+	* XmlConstants.cs (QnUnsignedShort): Rename from QnUsigned short
+	and fix the value too.
+	* XmlSchemaWriter.cs (XmlQualifiedName): Update to changes.
+
+2008-09-27  Raja R Harinath  <harinath at hurrynot.org>
+
+	* DataView.cs: Convert into a partial class and sequester
+	interface-implementations and NET_2_0 pieces into separate parts.
+
+2008-09-16  brandin claar  <brandin.claar at gmail.com>
+	    Raja R Harinath  <harinath at hurrynot.org>
+
+	* DataTable.cs (BinarySerialize): Handle empty DataTables.
+	(DeserializeRecords): Likewise.
+	(BinaryDeserializeTable): Allow DefaultValue to be set to any value.
+
+2008-09-12  Raja R Harinath  <harinath at hurrynot.org>
+
+	* DataTable.cs (NewRowAdded): Make into partial method.
+	(DataTableClearing, DataTableCleared): New partial methods.
+	(Clear): Use them.
+
+	* DataTable.cs: Sequester ISupportInitializationNotification
+	pieces into separate part.
+	(DataTableInitialized): Turn into a 'partial method' to avoid #ifs.
+
+	* DataTable.cs (AssertNotNullConstraints): Hoist out a more useful
+	loop-invariant by inverting loops.
+	(RowExists): Outdent.  Rewrite for slightly better clarity.
+	(BeginLoadData): Outdent.
+	(GetChanges): Outdent.  Replace GetEnumerator/while with foreach.
+
+	* DataTable.cs: Convert to a partial class, sequester NET_2_0
+	specific and IXmlSerializable specific pieces into separate parts.
+
+2008-09-07  Raja R Harinath  <harinath at hurrynot.org>
+
+	* DataSet.cs: Convert to a partial class and sequester NET_2_0
+	pieces into a separate part.
+
+	* DataRowView.cs: Convert to a partial class, and sequester
+	NET_2_0 parts into a separate part.  Use partial classes instead
+	of ugly #region directives.
+	(Item): Remove redundant attributes.  Cleanup slightly.
+
+2008-09-05  Raja R Harinath  <harinath at hurrynot.org>
+
+	* DataRowCollection.cs (RemoveInternal): Update RowIDs of rows
+	after the deleted row.
+	(IndexOf): Avoid loop to search for a row, since we already know
+	where a row is: its RowID.
+	(Remove): Use IndexOf rather than List.Contains.
+
+	* DataRowCollection.cs (InsertRow): Delegate setting of RowId
+	to the row itself.  Use 'row.AttachAt' instead of 'row.AttachRow'.
+	(AddInternal): Likewise.  Also delegate handling of
+	ChangeCurrentAndOriginal to AttachAt.
+	* DataRow.cs (AttachAt): Rename from AttachRow.  Set rowId from
+	passed-in id.  Handle ChangeCurrentAndOriginal and ChangeOriginal
+	actions.
+
+	* DataRow.cs (_hasParentCollection): Remove.  Implied by _rowId >= 0.
+	(HasParentCollection): Remove.
+	* DataRowCollection.cs (AddInternal, InsertAt): Update to changes.
+
+	* DataTable.cs (NewRowArray): Special case size == 0 to avoid
+	creating a lot of garbage.
+
+	* DataRow.cs (Detach): Rename from DetachRow.  Make private.
+	Simplify code to be more uniform.  Move common prefix code here ...
+	(AcceptChanges) [Deleted]: ... from here ...
+	(Delete) [Added]: ... and here ...
+	(RejectChanges) [Added]: ... and here.
+
+2008-09-04  Raja R Harinath  <harinath at hurrynot.org>
+
+	* DataRow.cs (CheckChildRows) <1-arg variant>: Remove excessive
+	indentation.
+	(CheckChildRows) <3-arg variant>: Likewise.  Move/split loop
+	inside a switch.
+	(EndEdit): Out-dent some code.
+	(IsNullColumns): Simplify slightly.
+
+	* DataRelationCollection.cs (CanRemove): Simplify slightly.
+
+	* DataRelation.cs (CheckStateForProperty): Use the childColumn to
+	get the child table.
+
+	* DataColumn.cs (AllowDBNull.set): Rearrange code to be more readable.
+	(AutoIncrement.set): Likewise.
+	(Caption): Likewise.
+	(SetDefaultValue): Likewise.
+
+2008-08-28  Raja R Harinath  <harinath at hurrynot.org>
+
+	* Constraint.cs (SetExtendedProperties): New internal method.
+	Move here from ...
+	(ExtendedProperties.set): ... here.  Kill a #ifdef.
+	* DataTable.cs (DeserializeConstraints): Update to changes.
+
+2008-08-27  Raja R Harinath  <harinath at hurrynot.org>
+
+	* ConstraintCollection.cs (Item) <string variant>: Don't incur
+	additional check for index that's returned by 'IndexOf'.
+	(_createNewConstraintName): Improve readability of code.
+	(_isDuplicateConstraintName): Perform cheaper test first.
+
+	* ConstraintCollection.cs: Reduce some #ifdef by using partial
+	classes.  Move 'sealed' and '[Serializable]' to appropriate
+	partial class declarations.
+	* DataRowCollection.cs: Likewise.
+
+2008-08-13  Marek Habersack  <mhabersack at novell.com>
+
+	* DataRow.cs: do not check whether a column is read-only when
+	importing a record.
+
+2008-08-08  Raja R Harinath  <harinath at hurrynot.org>
+
+	* DataColumn.cs: Update to changes in DataCollection.
+
+2008-07-29  Veerapuram Varadhan  <vvaradhan at novell.com>
+
+	Fixes ##377146
+	* XmlDataReader.cs (ReadElementElement): Handle custom reference types sanely.
+
+2008-07-20  Gert Driesen  <drieseng at users.sourceforge.net>
+
+	* DataColumnCollection.cs (IndexOf): Include name of column - for which
+	there are multiple matches in a different case - in the exception
+	message.
+	* DataRow.cs (this [int]): On 2.0 profile, throw ArgumentException if
+	value is null and datatype of column is a value type. On 1.0 profile,
+	only allow null value if datatype of column is string. Do not replace
+	value with DBNull.Value if value is null.
+
+2008-07-04  Gert Driesen  <drieseng at users.sourceforge.net>
+
+	* DataRow.cs: Use indexer of DataColumnCollection instead of IndexOf.
+	Cosmetic changes to exception message.
+	* DataColumnCollection.cs: Fixed off by one error in index check. Added
+	null check in name indexer. In Clear, also reset columnNameCount and
+	defaultColumnIndex.
+
+2008-07-03  Gert Driesen  <drieseng at users.sourceforge.net>
+
+	* DataRow.cs: Added missing null checks. Cosmetic changes to exception
+	messages.
+
+2008-07-03  Marek Habersack  <mhabersack at novell.com>
+
+	* DataRow.cs (this []): Use DBNull instead of throwing an exception
+	
+2008-07-01  Rodrigo Kumpera  <rkumpera at novell.com>
+
+	* DataTable.cs: Kill some foreach loops.
+	
+	* DataRow.cs: Same.
+
+2008-07-01  Marek Safar  <marek.safar at gmail.com>
+
+	* DataColumnCollection.cs: Made few simple optimizations.
+
+2008-06-28  Zoltan Varga  <vargaz at gmail.com>
+
+	* DataTable.cs (NewRowArray): Avoid using reflection if possible.
+
+2008-06-19  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataRelation.cs : keep createConstraints flag for cloning in
+	  DataSet.Merge(). Use different flag for initialization instead.
+	* MergeManager.cs : When cloning DataRelation, createConstraints
+	  flag should depend on the source.
+	* XmlSchemaDataImporter.cs : create constraints when creating
+	  DataRelation.
+
+2008-06-18  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataSet.cs : when InferSchema mode, ReadXml() should do "merging
+	  inference".
+	* XmlDataInferenceLoader.cs : fixed primary key processing in
+	  merging inference mode. Reuse existing one, instead of rejecting
+	  such a table.
+
+2008-06-17  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* XmlSchemaWriter.cs, DataSet.cs, XmlTableWriter.cs, DataTable.cs,
+	  XmlDataInferenceLoader.cs, XmlSchemaDataImporter.cs:
+	  fix xsd output on msdata:Locale and msdata.UseCurrentCulture.
+	  Output explicit Locale only when it is explicitly specified.
+	  On the other hand, ReadXml/ReadXmlSchema fills Locale as en-US
+	  by default (on .NET).
+	  Some code unification in DataTable.WriteXmlSchema() overloads.
+
+2008-06-16  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataColumn.cs : replaced Activator.CreateInstance() with
+	  returning explicit Null member for each SqlXxx type.
+
+2008-06-13  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataColumn.cs
+	  DefaultValue can be non-DBNull. For SqlXxx type, it becomes
+	  SqlXxx.Null. Also, changing DataType may change DefaultValue
+	  to be consistent with the new type (say, having int DefaultValue
+	  for new string DataType is wrong).
+
+	* XmlSchemaWriter.cs
+	  This should be fixed to take non-DBNull default value into
+	  consideration.
+
+2008-06-12  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataSet.cs, DataTable.cs, XmlSchemaDataImporter.cs : constraints
+	  on missing tables are ignored when reading a DataTable schema.
+	  Fixes part of DataTableTest.ReadXmlSchema() test.
+
+2008-05-30  Marek Habersack  <mhabersack at novell.com>
+
+	* Constraint.cs: do not use synthetized event accessors (to avoid
+	locks).
+
+2008-05-29  Marek Habersack  <mhabersack at novell.com>
+
+	* DataColumn.cs: do not use synthetic methods for events - this
+	avoids unnecessary locking, especially for internal events.
+
+2008-04-21  Gert Driesen  <drieseng at users.sourceforge.net>
+
+	* DataRowView.cs: Modified argument names to match MS. Use 
+	String.Empty instead of "". Code formatting.
+
+2008-04-16  Veerapuram Varadhan <vvaradhan at novell.com>
+
+	* XmlDataInferenceLoader.cs (ReadXml): Make sure the name of
+	reference key column(s) in child tables are unique.
+
+	* XmlSchemaWriter.cs (WriteSchema, WriteDataSetElement,
+	WriteTableType, WriteChildRelations): Handle the scenario wherein
+	we have a relation and only one table.  This can occur when we
+	have an XML with same parent/child table names. 
+	
+2008-03-31  Veerapuram Varadhan <vvaradhan at novell.com>
+
+	* DataView.cs: Reverting rev#98474 changes - as it broke quite a
+	few test profiles.
+	
+2008-03-23  Gert Driesen  <drieseng at users.sourceforge.net>
+
+	* DataSet.cs: Corcompare fix.
+	* IDataRecord.cs: Corcompare fix.
+
+2008-03-22  Gert Driesen  <drieseng at users.sourceforge.net>
+
+	* DataViewSettingCollection.cs: Corcompare fixes and code formatting.
+	* SyntaxErrorException.cs: Corcompare fixes and code formatting.
+	* EvaluateException.cs: Corcompare fixes and code formatting.
+	* StrongTypingException.cs: Coecompare fixes and code formatting.
+	* ReadOnlyException.cs: Corcompare fixes and code formatting.
+	* DataTableCollection.cs: Corcompare fixes and code formatting.
+	* MissingPrimaryKeyException.cs: Corcompare fixes and code formatting.
+	* DeletedRowInaccesibleException.cs: Corcompare fixes and code
+	formatting.
+	* DataSet.cs: Corcompare fixes and code formatting.
+	* DuplicateNameException.cs: Corcompare fixes and code formatting.
+	* DataView.cs: Corcompare fixes and code formatting.
+	* VersionNotFoundException.cs: Corcompare fixes and code formatting.
+	* MergeFailedEventArgs.cs: Corcomare fixes and code formatting.
+	* InvalidExpressionException.cs: Corcompare fixes and code formatting.
+	* DBConcurrencyException.cs: Corcompare fixes and code formatting.
+	* DataRowView.cs: Corcompare fixes and code formatting.
+	* DataViewManager.cs: Corcompare fixes and code formatting.
+	* ConstraintException.cs: Corcompare fixes and code formatting.
+	* InvalidConstraintException.cs: Corcompare fixes and code formatting.
+	* IDataRecord.cs: Corcompare fixes.
+	* RowNotInTableException.cs: Corcompare fixes and code formatting.
+	* TypeDataSetGeneratorException.cs: Corcompare fixes and code
+	formatting.
+	* InRowChangingEventException.cs: Corcompare fixes and code formatting.
+	* NoNullAllowedException.cs: Corcompare fixes and code formatting.
+	* DataException.cs: Corcompare fixes and code formatting.
+
+2008-03-17  Veerapuram Varadhan <vvaradhan at novell.com>
+	
+	** Fixes part1 of #357947
+	* DataView.cs: (OnRowDeleted): Don't call update, instead delete the row 
+	directly from Index.  Peformance fix submitted by Hubert FONGARNAND 
+	<informatique.internet at fiducial.fr>.
+
+2008-02-04 Arina Itkes <arinai at mainsoft.com>
+	
+	* DataTable.cs: Fix for IXmlSerializable.ReadXml.
+
+2008-01-28 Arina Itkes <arinai at mainsoft.com>
+	
+	* DataTable.cs: Fix for IXmlSerializable.WriteXml.
+
+2007-10-21  Gert Driesen  <drieseng at users.sourceforge.net>
+
+	* DataColumn.cs: Fixed ParamName of ArgumentNullException. Modified
+	exception message for invalid DateTimeMode value to match MS. Code
+	formatting.
+
+2007-10-19  Nagappan <anagappan at novell.com> 
+
+	* DataRelation.cs: Removed bogus TODO.
+
+2007-09-27  Nagappan A <anagappan at novell.com> 
+
+	* DataRelationCollection.cs: Added LAME spec comment as there is no
+	  relevant event. Removed MonoTODO too.
+
+2007-09-26  Nagappan A <anagappan at novell.com> 
+
+	* DataView.cs (ToTable): Added params keyword.
+	
+	* DataTable.cs: Added XmlSchemaProvider attribute.
+
+2007-09-25  Konstantin Triger <kostat at mainsoft.com>
+
+	* DataSet.cs: correct WriteAttributeString while writing xml with
+		XmlWriteMode.WriteSchema.
+
+2007-09-25  Nagappan A  <anagappan at novell.com>
+
+	* DataTable.cs: Code alignment.
+
+2007-08-14  Vladimir Krasnov <vladimirk at mainsoft.com>
+
+	* DataColumnCollection.cs: refactoring, fixed columnNameCount comparer
+	to remove culture sensitive ToLower() calls
+
+2007-07-22  Nagappan A  <anagappan at novell.com>
+
+	* DataRow.cs: Added internal set property for Table in 2.0
+	profile.
+
+	* DataColumn.cs: Added internal set property for Table in 2.0
+	profile.
+
+2007-07-01  Gert Driesen  <drieseng at users.sourceforge.net>
+
+	* DataRowCollection.cs: Only override Count on 2.0 profile.
+	* RelatedDataView.cs: Fixed line endings.
+	* XmlDataInferenceLoader.cs: Fixed line endings.
+
+2007-06-30  Gert Driesen  <drieseng at users.sourceforge.net>
+
+	* DataTableCollection.cs: CopyTo is 2.0 only. Removed extra tabs,
+	and changed spaces to tabs.
+
+2007-06-06  Nagappan A  <anagappan at novell.com>
+
+	* DataTable.cs (Select): Removed ununsed variable.
+
+2007-05-30  Nagappan A  <anagappan at novell.com>
+
+	* DataColumnCollection.cs (CopyTo): Method specific to 2.0
+	profile.
+
+	* DataRowCollection.cs (Count): Property is overridden in 2.0
+	profile.
+
+	* TypedDataSetGenerator.cs: Class is obsolete in 2.0 profile.
+
+	* DataRelationCollection.cs (CopyTo): Method specific to 2.0
+	profile.
+
+2007-05-18  Rolf Bjarne Kvinge  <RKvinge at novell.com>
+
+	* CustomDataClassGenerator.cs: Misc fixes in order to emit correct VB code.
+	CreateDataSetDefaultCtor: we're creating a delegate, not an object, so use a DelegateCreateExpression.
+	CreateDataSetSchemaChanged: we're comparing value types, use the correct equality operator.
+	CreateTableGetEnumerator: explicity state that the method is an implementation of IEnumerable.GetEnumerator.
+	CreateTableEventStarter: we're invoking a delegate, so use a DelegateInvokeExpression.
+	Several changes to not generate members with names that only differ by case.
+
+2007-05-18  Chris Toshok  <toshok at ximian.com>
+
+	* DataColumnCollection.cs (Add ()): handle the default name case
+	in Add(DataColumn).
+	(Add (string)): same - let Add(DataColumn) handle the default name
+	setting.
+	(Add (DataColumn)): in the 1.1 case, we need to add the column's
+	PropertyChanged handler *before* possibly setting the column name
+	to the default so we emit the right events (Changed/Added).  In
+	the 2.0 case, we add the event handler after the name is set, and
+	therefore only emit the Added event.
+
+2007-05-07  Adar Wesley <adarw at mainsoft.com>
+
+	* ConstraintCollection.cs: added CopyTo method with strongly typed Constraint[] 
+	parameter.
+
+	* DataTable.cs: added implementation of IXmlSerializable. Added missing
+	method ReadXmlSerializable.
+
+2007-04-19  Chris Toshok  <toshok at ximian.com>
+
+	* DataColumnCollection.cs (Add): the Element in our
+	CollectionChangedEventArgs should be the column, not the
+	collection.  Also, add an event handler for the column's
+	PropertyChanged event so we can propagate metadata changes.
+	(Remove): Analogous change to the CollectionChangedEventArgs as in
+	Add.  Also, unhook the column's PropertyChanged event.
+	(OnCollectionmetaDataChanged): emit our new event.
+	(ColumnPropertyChanged): called when the column's ColumnName
+	property changes.  Emit the proper CollectionChangeEvent.
+
+	* DataView.cs (ColumnCollectionChanged): fix up the comment about
+	CollectionChangeAction.Refresh, and make explicit what generates
+	it.
+	(RegisterEventHandlers): hook up
+	DataColumnCollectoin.CollectionMetaDataChanged.
+	(RegisterEventHandlers): unhook
+	DataColumnCollectoin.CollectionMetaDataChanged.
+
+2007-02-23  Nagappan A  <anagappan at novell.com>
+
+	* DataRow.cs (Item): Checks whether this DataRow exist in the
+	DataRowCollection, then compute the expression. Fixes bug #
+	80505.
+
+	* DataRowCollection.cs (IndexOf): Modified as internal method for
+	1.0 profile.
+
+	* XmlDataReader.cs (StringToObject): DataTables containing
+	System.Type throw exception on deserializing. Fixes bug # 80596.
+
+	* XmlDataLoader.cs (StringToObject): DataTables containing
+	System.Type throw exception on deserializing. Fixes bug # 80596.
+
+2007-02-20  Konstantin Triger <kostat at mainsoft.com>
+
+	* XmlSchemaDataImporter.cs: ensure the tables are created in document order.
+
+2007-02-19  Konstantin Triger <kostat at mainsoft.com>
+
+	* XmlDataReader.cs, XmlDataInferenceLoader.cs, XmlDiffLoader.cs:
+		ignore attributes from "http://www.w3.org/XML/1998/namespace".
+	* XmlConstants.cs: add constant for "http://www.w3.org/XML/1998/namespace".
+	* XmlDataInferenceLoader.cs: track the added elements index to fix the
+		added column ordinal.
+
+2006-12-11  Chris Toshok  <toshok at ximian.com>
+
+	* DataView.cs: GetItemProperties should return an empty collection
+	if we have no data table.  Presently we NRE.
+
+2006-12-08  Nagappan A  <anagappan at novell.com>
+
+	* DataTable.cs (ReadXml): Removed if condition, as it should not
+	check the exception string.
+
+2006-12-07  Chris Toshok  <toshok at ximian.com>
+
+	* DataView.cs: add CollectionChangeEventHandler's on the
+	ChildRelations and ParentRelations collections, and emit
+	ListChanged events with PropertyDescriptor.Added/Deleted/Changed
+	in response.
+
+2006-12-07  Nagappan A  <anagappan at novell.com>
+
+	* DataTable.cs (ReadXml): Integrated the implementation of
+	ReadXml, patch provided by deepak_2603 at yahoo.com.
+
+2006-12-05  Nagappan A  <anagappan at novell.com>
+
+	* DataTable.cs (WriteXmlSchema): Using XmlTextWriter instead of
+	XmlWriter, solved the File Sharing IO Exception.
+
+2006-11-28 	Hubert FONGARNAND, FrAcdAcric Mestayer <informatique.internet at fiducial.fr>
+
+	* DataColumnCollection.cs : Improved Column searching when not
+	using exact column name (case sensitivity). Fixes bug # 80075.
+
+2006-11-28  Nagappan A  <anagappan at novell.com>
+
+	* XmlSchemaDataImporter.cs: Fixed 2.0 profile compilation
+	warnings. Using AttributeSchemaType instead of AttributeType and
+	ElementSchemaType instead of ElementType.
+
+	* TypedDataSetGenerator.cs: Modified the profile check from
+	!NET_1_1 to !NET_1_0, as this class is obsolete from 1.1 profile.
+
+	* DataRelationCollection.cs (Item): Modified the property Item as
+	abstract and implemented it in DataSetRelationCollection and
+	DataTableRelationCollection classes.
+
+	* DataRowView.cs: Remove bogus MonoTODOs.
+
+	* ForeignKeyConstraint.cs (ForeignKeyConstraint): Implemented
+	2.0 profile's missing constructor.
+
+	* XmlDataLoader.cs (StringToObject): Modify XmlConvert.ToDateTime
+	to use XmlDateTimeSerializationMode, as the default ToDataTime
+	method id obsolete.
+
+	* XmlDataReader.cs (StringToObject): Modify XmlConvert.ToDateTime
+	to use XmlDateTimeSerializationMode, as the default ToDataTime
+	method id obsolete.
+
+	* DataView.cs (IsInitialized): Added browsable attribute. 
+
+	* DataViewSettingCollection.cs (CopyTo): Implemented missing 2.0
+	API.
+
+	* DataRelation.cs (DataRelation): Added 2.0 profile constructor to
+	take parentTableNameSpace and childTableNameSpace as argument.
+	(FinishInit): Update parentTableNameSpace and childTableNameSpace,
+	when the string is not empty in 2.0 profile.
+
+	* DataRowCollection.cs: Implemented Count public property.
+	Added !NET_2_0 for List protected property, as it has been removed
+	in 2.0 prifle.
+	(IndexOf): Implemented new public method.
+	(CopyTo): Implemented new public override method.
+	(GetEnumerator): Implemented new public override method.
+
+	* DataTable.cs (Load): Throw ArgumentNullException, when reader
+	argument is null.
+	(WriteXmlSchema): Throw InvalidOperationException, when table name
+	is empty. When DataSet Namespace is set, append that with '_x003A_'
+	and table name.
+	(IsInitialized): Added browsable attribute.
+
+	* DataSet.cs (Load): Throw ArgumentNullException, when reader
+	argument is null.
+	(IsInitialized): Added browsable attribute.
+	(WriteObjectXml): Modify XmlConvert.ToDateTime to use
+	XmlDateTimeSerializationMode, as the default ToDataTime method id
+	obsolete.
+
+	* XmlSchemaWriter.cs (WriteSchema): Modified UseCurrentCulture to
+	UseCurrentLocale.
+	(WriteDataSetElement): Added minOccurs attribute.
+	(WriteConstraints): Check for tables length, if > 1 then add the
+	relations to XmlSchema.
+
+2006-11-21  Nagappan A  <anagappan at novell.com>
+
+	* DataView.cs: Added public event Initialized.
+	(IsInitialized): Implemented public function to check whether a
+	dataview is initialized or not.
+
+	* DataSet.cs: Added ISupportInitializeNotification for .NET 2.0
+	profile.
+	(RemotingFormat): Set the default value attribute as
+	SerializationFormat.Xml.
+	(IsInitialized): Implemented public function to check whether a
+	table is initialized or not.
+	(CreateDataReader): Added params keyword in argument.
+	(Load): Implemented all Load overloaded functions.
+	(GetObjectData): Modified to public for .NET 2.0 implementation.
+	(IsBinarySerialized): Implemented the public API to check whether
+	the given stream is binary serialized or not.
+	* DataTable.cs: Added ISupportInitializeNotification for .NET 2.0
+	profile.
+
+2006-11-15  Nagappan A  <anagappan at novell.com>
+
+	* DataTable.cs (RemotingFormat): Set the default value attribute
+	as SerializationFormat.Xml.
+	(OnTableNewRow, NewRowAdded): Implemented new function to raise an
+	event when a new row is added to the table.
+	(DataTableInitialized, OnTableInitialized): Implemented new
+	function to raise an event when a table is initialized.
+	(IsInitialized): Implemented public function to check whether a
+	table is initialized or not.
+	(OnTableClearing): Raise an event before the table is cleared.
+	(GetObjectData): Modified to public for .NET 2.0 implementation.
+	(Load): Implemented missing API to call the registered delegate
+	function on load exception.
+	(WriteXmlSchema): Implemented overloaded function to write the
+	hierarchy with XML Schema.
+
+2006-11-15  Konstantin Triger <kostat at mainsoft.com>
+
+	* DataTable.cs: Fixed LoadDataRow scenarios.
+	* DataRowCollection.cs: Added override for AddInternal taking DataRowAction parameter.
+
+2006-11-14  Konstantin Triger <kostat at mainsoft.com>
+
+	* DataColumn.cs: consider row version wen checking row.IsNull().
+
+2006-10-18  Nagappan A  <anagappan at novell.com>
+
+	* ForeignKeyConstraint.cs (_validateColumns): Parent and child
+	columns can't be the same column - Exception, bug # 79689
+
+2006-10-13  Nagappan A  <anagappan at novell.com>
+
+	* DataTable.cs (DeserializeConstraints): Fine tuned the
+	serialization and deserialization of constraints.
+
+	* DataRelationCollection.cs (Contains): Fixes bug
+	#79233. DuplicateNameException when two relations for different
+	DataTables in DataSet are defined
+
+2006-10-06  Patrick Earl <mono at patearl.net>
+
+	* DataTable.cs, XmlTableWriter.cs, XmlSchemaWriter.cs, DataSet.cs:
+	Implemented DataTable.WriteXml
+
+2006-09-26  Nagappan A  <anagappan at novell.com>
+
+	* DataTable.cs, DataSet.cs, DataColumn.cs, Constraint.cs,
+	DataRow.cs: Implementation of Binary Serialization /
+	Deserialization.
+
+	* DataTable.cs (RowsExist): Check rows based on version.
+
+	* DataRow.cs: Raise exception same as MS.NET. Thanks to
+	Hubert FONGARNAND <informatique.internet at fiducial.fr> for
+	providing this patch.
+
+2006-09-07  Vladimir Krasnov <vladimirk at mainsoft.com>
+
+	* DataSet.cs: added 2.0 stubs to solve typed dataset porting issues
+
+2006-08-30  Nagappan A  <anagappan at novell.com>
+
+	* DataRow.cs (EndEdit): DataRow.EndEdit emits RowChanged too
+	often. Fixes bug # 78885.
+
+2006-08-14  Konstantin Triger <kostat at mainsoft.com>
+
+	* DataTableCollection.cs, DataRelationCollection.cs, DataRowCollection.cs,
+		DataColumnCollection.cs: implemented specialized CopyTo() method.
+
+2006-07-26  Nagappan A  <anagappan at novell.com>
+
+	* DataTable.cs (GetIndex): Fixes memory explode on
+	DataTable.Select - Bug # 77691.
+
+2006-07-25  Nagappan A  <anagappan at novell.com>
+
+	* DataView.cs (OnRowCollectionChanged): On DataTable.Clear,
+	setting rowCache to empty DataRowView. Fixes bug # 78610.
+
+	* DataTable.cs (AcceptChanges): Raises Reset event. Fixes bug #
+	78610.
+
+2006-07-20  Senganal T  <tsenganal at novell.com>
+
+	* MergeManager.cs :
+		- Merge : moved the columntypecheck to AdjustSchema,
+		Remove the unncessary calls to Table.ResetIndexes.
+		- AdjustSchema : check for columntypes
+	Thanks to Deepak Kr Valechha for the patch
+
+2006-07-17  Senganal T  <tsenganal at novell.com>
+
+	* DataView.cs :
+		- ToTable : Implemented all the overloads
+		- Equals : Implemented 
+		- IBindingListView : Implemented the interface
+
+2006-07-15  Senganal T  <tsenganal at novell.com>
+
+	* DataTableCollection.cs :
+		- Contain,IndexOf,Remove,Add,Indexer : support for table
+		namespace. Remove redundant checks in Remove/Add.
+
+2006-07-14  Senganal T  <tsenganal at novell.com>
+	
+	* DataColumn.cs :
+		- SetOrdinal : Implemented
+		- Ordinal : added internal set
+	* DataColumnCollection.cs : 
+		- Add : Set the column ordinals
+		- MoveColumn : Changes the position of column in the
+		collection
+
+2006-07-14  Senganal T  <tsenganal at novell.com>
+
+	* DataTable.cs :
+		- Merge - Implement the merge methods
+		- Clone - Ensure column's DateTimeMode property is also copied
+	* DataColumn.cs :
+		- DateTimeMode : Implemement
+		- DataTypeMatches : Added. In 2.0 profile, test DateTime
+		property when verifying column types.
+	* DataRelation.cs :
+		- ctr :  For DateTime columns, check DateTimeMode property
+	* ForeignKeyConstraint.cs :
+		- _validateColumns : For DateTime columns, check DateTimeMode
+		property
+	* MergeManager : 
+		- Merge : Added. Overload to merge two tables
+		- ResolveColumns : Change the method to use a table instead of
+		a DataSet
+		- Renamed AdjustSchema to AdjustSchemaRelations
+
+2006-07-13  Senganal T  <tsenganal at novell.com>
+
+	* DataSet.cs :
+		- WriteTables : Remove some commented out code
+		- WriteTable : Fix the logic to skip the table data when the
+		table has a nested relation.
+		fixes bug #78842
+
+2006-07-12  Senganal T  <tsenganal at novell.com>
+
+	* ConstraintCollection.cs : 
+		- Remove (string): If constraint name is not found, throw exception
+		- Remove (Constraint): Set the ConstraintCollection of the removed
+		Constraint to null.
+	Thanks to Deepak Kr Velachha for reporting the bug.
+
+2006-07-12  Senganal T  <tsenganal at novell.com>
+
+	* XmlDiffLoader.cs : 
+		- LoadColumnChildren : If schema name is missing, skip the
+		element.
+	Thanks to Deepak Kr Velachha for identifying the bug.
+
+2006-07-11  Senganal T  <tsenganal at novell.com>
+	
+	* XmlSchemaWriter.cs :
+		- WriteTableType : If Relation.Nested is true, then nest the 
+		table schemas. Correct the xml to add the table element within
+		the <Sequence> element.
+		- WriteChildRelations : Correct the Xml element name and
+		attributes. Close the attribute correctly.
+
+	* XmlSchemaDataImporter.cs :
+		- GenerateRelationship : When creating the relations, if
+		ParentColumn exists but Corr ChildCol is null, create a child
+		Column with the same name and type as the parent column.
+		- Renamed DataSetDefinesPrimaryKey to DataSetDefinesKey
+		- DataSetDefinesKey : if either xsd:key or xsd:keyref is
+		defined for the dataset, do not manually create the relations.
+		- AddParentKeyColumn : if Columnname already exists, use
+		colname_0 instead of throwing an exception.
+		- FillDataColumnRepeatedSimpleElement : Do not set the Unique
+		value as it creates a constraint by default. The unique value
+		is automatically set when pk is set.
+		- CreateChildColumns : Added. Creates a ChildColumn duplicating 
+		ParentColumn properties.
+
+2006-06-30  Senganal T  <tsenganal at novell.com>
+
+	* DataRow.cs : 
+		- SetAdded, SetModified : new methods in 2.0
+
+2006-06-30  Senganal T  <tsenganal at novell.com>
+	* SerializationFormat.cs, DataSetDateTime.cs, DataTableNewRowEventArgs.cs,
+	DataTableNewRowEventHandler.cs : Added 
+	* SyntaxErrorException.cs EvaluateException.cs StrongTypingException.cs 
+	IsolationLevel.cs ReadOnlyException.cs DataTableCollection.cs 
+	DataRowState.cs MissingPrimaryKeyException.cs DeletedRowInaccessibleException.cs 
+	DuplicateNameException.cs PropertyAttributes.cs StatementType.cs 
+	VersionNotFoundException.cs FillErrorEventHandler.cs DataRowChangeEventHandler.cs 
+	XmlWriteMode.cs InvalidExpressionException.cs StateChangeEventHandler.cs 
+	DbType.cs DataColumnChangeEventHandler.cs KeyRestrictionBehavior.cs 
+	ConnectionState.cs SchemaType.cs MergeFailedEventHandler.cs SqlDbType.cs 
+	DataRowVersion.cs ForeignKeyConstraint.cs DBConcurrencyException.cs 
+	OperationAbortedException.cs MissingSchemaAction.cs DataTableClearEventHandler.cs 
+	DataRowView.cs DataRowAction.cs ConstraintCollection.cs DataTableReader.cs 
+	LoadOption.cs InvalidConstraintException.cs InternalDataCollectionBase.cs 
+	ParameterDirection.cs AcceptRejectRule.cs UpdateRowSource.cs XmlReadMode.cs 
+	TypedDataSetGenerator.cs RowNotInTableException.cs TypeDataSetGeneratorException.cs
+	InRowChangingEventException.cs  MissingMappingAction.cs NoNullAllowedException.cs 
+	CommandBehavior.cs PropertyCollection.cs CommandType.cs 
+	UpdateStatus.cs ConflictOption.cs DataViewRowState.cs  Rule.cs 
+	DataColumnCollection.cs :
+		2.0 api fixes.
+
+2006-06-27  Senganal T  <tsenganal at novell.com>
+
+	* DataSet.cs, DataTable.cs : implement CreateDataReader methods 
+	* InternalDataCollectionBase.cs
+		- ToArray () : helper method
+	* DataTableReader.cs : 
+		- GetSchemaTable : set the schema info correctly
+		- GetProvider*, GetChars, GetBytes, GetValues :
+			Implemented the methods
+		- GetName : return the name of corresponding schema.
+		- ValidateSchemaIntact, OnColumnCollectionChanged, 
+		OnColumnChanged :
+			Listen and raise expception if schema changes
+
+2006-06-21  Chris Toshok  <toshok at ximian.com>
+
+	* DataView.cs: update the index after we successfully add the new
+	row.  This keeps the dataview's row view count in sync with the
+	table.
+
+2006-06-20  Chris Toshok  <toshok at ximian.com>
+
+	* DataView.cs: the PropertyDescriptorCollection returned by
+	ITyepdList.GetItemProperties should include the child relations of
+	our table, in order to match MS's behavior.
+
+	* DataViewManager.cs: ICollection.Count property is always 1.
+
+2006-06-15  Senganal T  <tsenganal at novell.com>
+
+	* DataTable.cs :
+		- Select : If Sort String is not provided, sort the result
+		DataRows in Ascending Order of the Columns used in the filter
+
+2006-06-15  Senganal T  <tsenganal at novell.com>
+
+	* DataSet.cs :
+		- InternalEnforceConstraints : Check if any null constraints 
+		are violated. Throw ConstraintException only after all the errors
+		are filled.
+	* DataTable.cs :
+		- EnforceConstraints : Move away the logic to check for 
+		NullConstraintViolation.
+		- AssertNotNullConstraint : Checks for Null Constraint
+		Violation.
+		- EndLoadData : Do not throw any exceptions here. All the
+		errors have to be found and RowErrors set before throwing the
+		exception.
+	* DataRow.cs :
+		- ImportRecrod : Check the values of the row for any null
+		values.
+		- SetColumnError : If the error for column is already set,
+		do not add a new error but edit the existing error. 
+		- CheckValue : Set the NullConstraintViolation flag if either
+		table is being loaded or if EnforceConstraints is set to
+		false.
+	* Constraint.cs : Do not throw exception when EnforceConstraints is
+	set to false or table is being loaded.
+	* UniqueConstraint.cs : Correct the error message. Set ColumnErrors
+	along with the RowError.
+
+2006-05-31  Gert Driesen  <drieseng at users.sourceforge.net>
+
+	* DataTable.cs: Renamed initInProgress to fInitInProgress. BeginInit
+	and EndInit must only be virtual in 2.0 profile. Set eol-style to CRLF.
+
+2006-05-31  Senganal T  <tsenganal at novell.com>
+
+	* XmlDataInferenceLoader.cs :
+		- InferTableElement : Repeated element should result in a single
+		inferred table.
+	Patch from Deepak Kr Velachha 
+
+2006-04-21  Senganal T  <tsenganal at novell.com>
+
+	* DataRowCollection.cs :
+		- Find : If search on the table using PrimaryKey fails and if
+		index is not being maintained (during table load), search the 
+		entire table.
+		- Find (int) : Removed. Deadcode. 
+		- Clear :
+			- Not necessary to delete each row from the Index.
+			Just reset the Indexes after cleaning up the row
+			collection.
+			- Simplify dependency check for child tables
+	* DataTable.cs :
+		- LoadDataRow : 
+			- Do not use DataRowCollection.Find to search for
+			existing records as this wud check even newly loaded rows.
+			Use Index.Find.
+			- Do not add new records to Index. Update Index only
+			if an existing record is modified. New records will be
+			taken care by EndLoadData.
+
+2006-04-19  Senganal T  <tsenganal at novell.com>
+
+	* XmlHelper.cs : A helper class for encoding/decoding schema names.
+	Caches the Schema names to minimize encoding/decoding operations and
+	duplicate strings created.
+	* XmlSchemaWriter : 
+		- Use XmlHelper for encoding/decoding schema names.
+		- Encode ConstraintNames when writing as xml.
+	* DataSet.cs
+	* XmlDataReader.cs
+	* XmlDataInferenceLoader.cs
+	* XmlSchemaDataImporter.cs
+		- Use XmlHelper for encoding/decoding schema names.
+	* DataTableCollections : Minor code refactor.
+	* DataRow.cs : Create XmlElement only if required.
+
+2006-04-07  Senganal T  <tsenganal at novell.com>
+
+	* DataSet.cs :
+		- InternalEnforceConstraints() : Reset Indexes of all tables
+		before validating constraints. Fixes #78010
+
+2006-03-04	Boris Kirzner <borisk at mainsoft.com>
+	* TypeDataSetGeneratorException.cs: fix .Net Soap serialization compatibility.
+
+2006-03-25  Senganal T  <tsenganal at novell.com>
+
+	* DataRow.cs : 
+		- RejectChanges : When row is in Deleted state, add the row back to
+		Indexes and Validate the row.
+
+
+2006-03-23  Senganal T  <tsenganal at novell.com>
+
+	* DataTable.cs : 
+		- LoadDataRow : Add the row to the indexes, when loading a new row.
+
+2006-03-22  Senganal T  <tsenganal at novell.com>
+
+	* DataTable.cs :
+		- PrimaryKey : Set the IsPrimaryKey attribute before Removing from collection.
+		- RemoveUniqueConstraints : Removed. dead code.
+	* DataColumn.cs :
+		- Unique : 
+			- If adding/removing constraint fails, retain Unique value
+			- Remove redundant code
+	* UniqueConstraint.cs :
+		- SetIsPrimaryKey : Added. Sets the value of IsPrimaryKey.
+		- RemoveFromConstraintCollectionCleanup : If constraint is on a single column, then
+		set Unique for that column to false.
+		- CanRemoveFromCollection : Do not remove constraint, if its a PrimaryKey
+
+2006-03-20  Senganal T  <tsenganal at novell.com>
+
+	* DataSet.cs :
+		- CopyRelations () : When copying the relation, do not add constraints
+		automatically for the relation.
+		- OnMergeFailed () : If merge fails and no handler is set for the MergeFailedEvent,
+		then throw DataException 
+	* ConstraintCollection.cs :
+		- Add () : Check if a constraint already exists on the Columns that are being 
+		constrained.
+		- IndexOf () : Do not check for equivalent constraints, check for the exact instance.
+	* MergeManager.cs (): 
+		-  AdjustSchema () : 
+			- Handle the MissingSchemaAction.Error case, 
+			- Do not create constraints when mergin the DataRelation
+			- Follow the semantics for schema merge/validation  when constraints are already present
+			in the target DataSet.
+		- AdjustPrimaryKeys () :
+			- Code cleanup
+			- Verify Order of Columns in the PrimaryKey when merging.
+		- ResolveColumns : Changed the arument to DataSet. Simplifies code elsewhere.
+		- CompareColumnArrays, CompareColumnArrays : Helper funtions.
+		
+2006-03-09  Senganal T  <tsenganal at novell.com>
+
+	* DataRow.cs :
+		- RejectChanges () :  Add the row to index, if it was in deleted state and
+		Update the index if in Modified State.
+		- AcceptChanges () : Do not update the Indexes.
+		- EndEdit () : Update the indexes even if BeginLoadData has been called
+		on the table. Ideally, indexes should not be maintained during DataLoad,
+		but this needs to handled in multiple places correctly. For now, just maintain
+		the index to ensure correct operation.
+	
+2006-03-05  Senganal T  <tsenganal at novell.com>
+
+ 	* DataSet.cs :
+ 		- BeginInit (), EndInit () : Implemented methods
+ 		- InitInProgress : Added.
+ 	* DataTable.cs
+ 		- EndInit () : Move the adding of columns and constraints
+ 		to FinishInit.
+ 		- FinishInit () : Added. Adds the Constraints and Columns
+ 		to the collection.
+ 		- InitInProgress : Added.
+ 	* Constraint.cs
+ 		- FinishInit () : Added. Virtual method
+ 		- InitInProgress : Added. Virtual property
+ 	* UniqueConstraint.cs
+ 	* ForeignKeyConstraint.cs
+ 		- FinishInit () : Added.
+ 		- InitInProgress : Added.
+ 		- DataColsNotValidated : Removed.
+ 	* ConstraintCollection.cs
+ 		- PostAddRange : Removed event
+ 		- PostEndEdit () : Renamed to PostAddRange
+ 		- Add () : Simplified the testing if constraint is initialized
+ 		- AddRange () : Simplified initializing the constraints
+ 	* DataTableCollection.cs
+ 		- PostAddRange () : Added. Adds the tables to the collection
+ 	* DataColumnColletion.cs
+ 		- PostEndInit () : Renamed to PostAddRange.Also, add column to
+ 		the collection only if not null.
+ 
+ 	Added/Implemented methods for design time support. Renamed some methods for consistency
+ 	in naming across classes for methods serving the same purpose. 
+
+2006-02-24  Senganal T  <tsenganal at novell.com>
+
+ 	* UniqueConstraint.cs :
+ 		- ChildConstraint : Added. Simplifies verifying if constraints are
+ 		related.
+ 		- CanRemoveFromCollection : Fixed the check to verify if constraints is
+ 		linked to a ForeignKeyConstraint. Fixes #77630
+ 	* ForeignKeyConstraint.cs :
+ 		- _validateRemoveParentConstraint : Removed. Not used anymore
+ 		- ParentConstraint : Added. Simplifies verifying if constraints are
+
+2006-02-22  Senganal T  <tsenganal at novell.com>
+
+	* DataRow.cs 
+		- RejectChanges : Do not remove Row from Indexes when state is Deleted.
+		- CheckChildRows : When checking for the ChildRows, use the current value
+		and not the original value.
+
+2006-02-18  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* CustomDataClassGenerator.cs : Patch by Marek Habersack. xsd now
+	  outputs AutoIncrement, AutoIncrementSeed, AutoIncrementStep and
+	  ReadOnly properties. This fixes bug #77576.
+
+2006-02-17  Chris Toshok  <toshok at ximian.com>
+
+	* System.Data/DataSet.cs, System.Data/DataView.cs,
+	System.Data/ForeignKeyConstraint.cs,
+	System.Data/DataViewManager.cs, System.Data/DataRow.cs,
+	System.Data/DataSysDescriptionAttribute.cs,
+	System.Data/UniqueConstraint.cs, System.Data/DataTable.cs,
+	System.Data/DataRelation.cs: lots of attribute work, removing
+	DataSysDescription atributes (and marking the class obsolete) for
+	2.0.
+
+2006-02-17  Chris Toshok  <toshok at ximian.com>
+
+	* DataAdapterException.cs: remove this file.
+	
+2006-02-17  Chris Toshok  <toshok at ximian.com>
+
+	* DataTableReader.cs: Switch to the (bool) form of Dispose to
+	override, as the no-arg form isn't virtual.
+
+	* Constraint.cs: #ifdef out more DataSysDescriptions.
+
+	* ConstraintException.cs: add ..ctor (string, Exception) for 2.0.
+
+2006-02-17  Chris Toshok  <toshok at ximian.com>
+
+	* DataColumn.cs: #ifdef all the DataSysDescriptions !NET_2_0.
+
+	* AdapterMappingException.cs: nuke this file.
+
+	* IDbAsyncConnection.cs, IDbAsyncCommand.cs, IGetTypedData.cs,
+	ISetTypedData.cs, IDataReader2.cs, IDataSources.cs,
+	IDbExecutionContext.cs, IDataRecord2.cs, IDataUpdatableRecord.cs:
+	remove these 2.0 files.
+
+2006-02-17  Chris Toshok  <toshok at ximian.com>
+
+	* ConstraintCollection.cs: in 2.0, class is not serializable and
+	is sealed.  make all the "virtuals" #if !NET_2_0 as well.
+
+	* Constraint.cs: not serializable in 2.0.
+
+	* DataColumnCollection.cs: in 2.0, class is not serializable and
+	is sealed.  make all the "virtuals" #if !NET_2_0 as well.
+
+	* DataRelationCollection.cs: not serializable in 2.0.
+
+	* DataRelation.cs: not serializable in 2.0.
+
+	* DataRowBuilder.cs: class is sealed in 2.0.
+
+	* DataRowCollection.cs: in 2.0, class is not serialized and is
+	sealed.  Also, Add isn't virtual in 2.0 (as the class is sealed).
+
+	* DataRow.cs: not serializable in 2.0.
+
+	* DataSet.cs: remove some DataSysDescriptions from the 2.0 build,
+	and s/GetDataReader/CreateDataReader.
+
+	* DataTableCollection.cs: in 2.0, class is not serializable and is
+	sealed.  make all the "virtuals" #if !NET_2_0 as well.
+
+	* DataTableReader.cs: remove VisibleFieldCount property.
+
+	* DataViewSettingCollection.cs: not serializable in 2.0.
+
+	* DataViewSetting.cs: not serializable in 2.0.
+
+	* ForeignKeyConstraint.cs: serializable in 2.0.
+
+	* OperationAbortedException.cs: class is sealed and serializable.
+
+	* PropertyCollection.cs: serializable in 2.0.
+
+	* StatementCompletedEventArgs.cs: class is sealed.
+
+	* UniqueConstraint.cs: not serializable in 2.0.
+
+2006-02-16  Senganal T  <tsenganal at novell.com>
+
+	* XmlSchemaWriter :
+		WriteDataSetElement : Add an annotation element if exists.
+		WriteDataRelationAnnotation : New. Write a DataRelation as an annotation.
+		WriteConstraints : Write ForeignKeyConstraint even when not associated with
+			a DataRelation and add a "ConstraintOnly=true" attribute for such constraints.
+	* XmlConstants.cs : Add a new constant - ConstraintOnly
+	* XmlSchemaImporter.cs :
+		- ConstraintStructure : Add field ,IsConstraintOnly, to distinguish if a foreignkeyconstraint
+			is related to relation or not.
+		- GenerateRelation : Handle the case when parentkey and childkey contain multiple columnnames.
+
+2006-02-11  Senganal T  <tsenganal at novell.com>
+	
+	* UniqueConstraint.cs :
+		- PostAddRange : Check PrimaryKey is not already set for the table
+	* DataTable.cs :
+		- PrimaryKey : follow ms.net behavior when BeginInit , EndInit is used.
+			- Add new priamry key only when EndInit is called.
+			- Incase of an error, retain old primarykey 
+		- EndInit :
+			- Add Constraints after columns are added.
+			- If both PrimaryKey Property and PrimaryKey Constraint are set,
+			then the Constraint takes precedence.
+		fixes bug #77404
+
+2006-02-03  Senganal T  <tsenganal at novell.com>
+
+	* DataTableCollection.cs : 
+		- Remove () : Check for invalid TableName
+		- Add () : Verify the table doesn't belong to another dataset
+	* DataView.cs :
+		- CompleteLastAdded () : Do not raise ItemAdded Event as it is
+			already raised in AddNew().
+	* DataColumn.cs :
+		- Expression : Verify that the Column names in the expression are valid 
+		- ResetCollectionInfo : Renamed to ResetColumnInfo
+	* DataRow.cs :
+		- RejectChanges () : Reorganized the code to do the Right thing.
+		- Item  : Dont check for detached and deleted rows as these are
+			done elsewhere.
+	* DataRowCollection.cs :
+		- Add () : Check for null value
+	* DataTable.cs :
+		- PrimaryKey : Set AllowDBNull=false for all the key columns
+		- ImportRow : Import the row only if it is not in Detached state. if in Deleted
+			state, perform the validation when AcceptChanges/RejectChanges is called.
+	* DataColumnCollection.cs :
+		- Add : Validate the column expression before adding it to the collection.
+		- GetColumnDependency () : New. Get the dependencies on the column 
+		- CanRemove : Move checks to GetColumnDependency
+		- Clear () : Simplified code. Remove unncessary checks.Also, dont check Expression col.
+		- IndexOf - Check argument.
+		Overall , appropriate error msg's are thrown if Remove/Clear fails. Removed a few
+		redundant checks performed and moved the common code to GetColumnDependency.
+
+2006-01-31  Senganal T  <tsenganal at novell.com>
+
+	* DataSet.cs : Modified CopyRelations ()
+		- Added code to copy ForeignKeyConstraints. Fixes #77411.
+	
+2006-01-18 Boris Kirzner <borisk at mainsoft.com>
+	* DataColumn.cs: added PropertyCchangedEvent handling.
+
+2006-01-17  Senganal T  <tsenganal at novell.com>
+	
+	* DataRow.cs:
+		ItemArray : Modified to raise RowInTableException only if
+		the concerned row has been removed from the table.Fixes 
+		bug #77267
+
+2006-01-16 Boris Kirzner <borisk at mainsoft.com>
+	* DataTable.cs: Drop dependend indexes on column removal.
+
+2006-01-16  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* CustomDataClassGenerator.cs :
+	  When a DataRelation connects the same table as parent and child,
+	  generate parent row property as BlahRowParent. Fixed bug #77248.
+
+2006-01-10  Senganal T <tsenganal at novell.com>
+	* DataRowCollection.cs
+		- Added ListChangedEvent to notify reset of the collection.
+	* DataView.cs
+		- Subscribes to the ListChangedEvent of DataRowCollection
+		Fixes bug #77188
+
+2006-01-09  Senganal T <tsenganal at novell.com>
+	* RelatedDataView.cs
+	* DataColumn.cs
+		- Resolving a name clash in IExpression
+
+2006-01-06  Senganal T <tsenganal at novell.com>
+	
+	* DataColumn.cs
+	* DataColumnCollection.cs
+		- Reset the Parameters of DataColumn to Default Values when 
+		column is removed from the Table's Collection
+
+2006-01-03  Senganal T <tsenganal at novell.com>
+
+	* DataTable.cs :
+		- ParseSortString() : Changed the way the sort string is parsed.
+		Using a regex to parse the string.Fixes bug #77104
+
+2005-12-12  Konstantin Triger <kostat at mainsoft.com>
+
+	* DataRow.cs: Added index Updates.
+		EndEdit() fixed to first update indices and then AssertConstraints
+		based on those indices.
+		Added Validate() and AssertConstraints() functions.
+	* DataRowCollection.cs: Removed ValidateDataRowInternal().
+	* DataTable: Fixed Clear().
+
+2005-12-06  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* CustomDataClassGenerator.cs : (InitializeFields) handle AllowDBNull
+	  and DefaultValue as well. Patch by Marek Habersack (bug #76709).
+
+2005-12-01  Miguel de Icaza  <miguel at novell.com>
+
+	* DataSet.cs: Apply patch from Robert Jordan, to fix #76817
+
+2005-11-26  Konstantin Triger <kostat at mainsoft.com>
+
+	* ConflictOption.cs: TARGET_JVM include.
+
+2005-11-11  Senganal T <tsenganal at novell.com>
+	
+	* ConflictOption.cs (new file)
+		- Added ConflictOption Enumeration 
+	* DataTableReader.cs
+	* IDataRecord2.cs 
+		- GetProviderSpecificFieldType : Corrected the method name
+
+2005-11-11  Senganal T <tsenganal at novell.com>
+
+	* DataSet.cs : Added the SchemaSerializationMode Property for NET_2_0
+	compatibility.
+	* SchemaSerializationMode.cs : Added SchemaSerializationMode Enumeration
+	for NET_2_0 compatibility.
+
+	Fixes bug #76517
+
+2005-10-20  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* XmlSchemaWriter.cs : escape names in the schema with XmlConvert.
+	  Fixed bug #76480.
+
+2005-10-14  Sureshkumar T  <tsureshkumar at novell.com>
+
+	* DataView.cs: Correct multiple throwing of events. Patch from
+	Marc Haisenko.
+	(RowStateFilter): Fire ListChangedEvent.
+	(ApplyDefaultSort): Fire ListChangedEvent.
+	(CompleteLastAdded): call UpdateIndex to remove the row from rowCache.
+	(IBindingList.Find): Implemented.
+
+2005-10-11  Sureshkumar T  <tsureshkumar at novell.com>
+
+	* DataView.cs (IBindingList): Implemented methods for IBindingList interface.
+
+2005-09-26  Lluis Sanchez Gual <lluis at novell.com>
+
+	* DataSet.cs: In IXmlSerializable.GetSchema, return null again for
+	untyped datasets. Fixes bug #76101.
+
+2005-09-21 Boris Kirzner <borisk at mainsoft.com>
+	* DataRow.cs: Fixes for index updating.
+	* DataTable.cs: 
+		- Reset case-sensitive indexes also if their filter contains columns 
+		of type string.
+		- Use GetIndex instead of FindIndex, so the indexes created in Select()
+		are reused. 
+	* RelatedDataView.cs: implement IExpression.Equals() and GetHashCode().
+	
+2005-09-20  Sureshkumar T  <tsureshkumar at novell.com>
+
+	* DataView.cs (Sort): Apply default Sorting Order if Sort property
+	is reset to null. Sort property handles this. Patch from Marc.
+
+	* DataTable.cs (ParseSortString): Patch from  Marc Haisenko for
+	allowing [ & ] in DataView.Sort string.
+
+2005-09-01 Boris Kirzner <borisk at mainsoft.com>
+	* System.Data/DataRowCollection.cs: indexes should be updated even if 
+	EnforceConstraints is false. Check for EnforceConstraints in
+	ValidateDataRowInternal.
+
+2005-08-08  Gert Driesen  <drieseng at users.sourceforge.net>
+
+	* DataView.cs: Changed accessibility of dataTable, rowState and
+	rowCache field to internal to fix public API. Assigned TypeConverter
+	to Table property.
+	* ForeignKeyConstraint.cs: IsConstraintViolated is now internal.
+	* Constraint.cs: IsConstraintViolated is now internal.
+	* UniqueConstraint.cs: IsConstraintViolated is now internal.
+
+2005-08-05  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* XmlSchemaDataImporter.cs : When "dataset element" has identity
+	  constraints, then first reserve constraints room for them and then
+	  process elements, skipping pkey creation if there is already
+	  reserved one. Fixed bug #75711.
+
+2005-08-05  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* XmlDataInferenceLoader.cs : in GetElementMappingType(), don't guess
+	  the same (QNamed) element again when it was already evaluated as
+	  not simple type. Fixed one part of bug #75711.
+
+2005-08-02 Boris Kirzner <borisk at mainsoft.com>
+	* XmlSchemaDataImporter.cs : Data relations should be processed after the
+	keys, so no redundant constraints created while relations processing.
+
+2005-07-25 Boris Kirzner <borisk at mainsoft.com>
+	* FillOptions.cs, ConflictOptions.cs, UpdateOptions.cs: 
+	added ifdef TARGET_JVM.
+
+2005-07-22  Sureshkumar T  <tsureshkumar at novell.com>
+
+	* DataViewSettingCollection.cs, DataTableCollection.cs,
+	DataSet.cs, DataView.cs, DataColumn.cs, ForeignKeyConstraint.cs,
+	DataRelationCollection.cs, UniqueConstraint.cs, DataTable.cs,
+	DataColumnCollection.cs, DataRelation.cs, DataSet.cs:
+	- updated attributes & attribute descriptions to match with
+	masterinfos.
+
+	* DataView.cs: changed protected members
+	rowstate,rowcache,dataTable to protected internal.
+	* Constraint.cs, ForeignKeyConstraint.cs, UniqueConstraint.cs:
+	changed InConstraintViolated to protected internal.
+	* ConflictOptions.cs, UpdateOptions.cs, FillOptions.cs: enclosed
+	with NET_2_0 define.
+
+2005-07-21  Sureshkumar T  <tsureshkumar at novell.com>
+
+	* ForeignKeyConstraint.cs: 
+	- IsConstraintViolated (): no matter what EnforceConstraints is,
+	this function now honestly validates. It is upto the caller to run
+	this or not.
+	- AddToConstraintCollectionSetup (): AssertConstraint according to
+	EnforceConstraints.
+	
+2005-07-21 Boris Kirzner <borisk at mainsoft.com>
+	* ForeignKeyConstraint.cs - IsConstraintViolated() should check also for Table.EnforceConstraints.
+	* DataTable.cs - EnforceConstraints becomes internal so it can be used by ForeignKeyConstraint.
+
+2005-07-19  Sureshkumar T  <tsureshkumar at novell.com>
+
+	* DataTable.cs - CopyConstraints (): copy constraints only if it
+	does not exist.
+
+	* DataSet.cs - Copy ():
+	- use activator.CreateInstance to create a typed dataset.
+	- copy tables if target does not exist, otherwise, just add rows.
+	- add relation only if it does not exists.
+
+	Typed datasets create the constraints & relations through
+	constructors. Fixes bug #75211.
+
+2005-07-14  Sureshkumar T  <tsureshkumar at novell.com>
+
+	* DataView.cs: Patch from Marc Haisenko to throw descriptive error
+	message when accessing Item, with invalid index.
+
+2005-07-14  Sureshkumar T  <tsureshkumar at novell.com>
+
+	reapplied patch from Marc Haisenko.
+	* DataView.cs: Patch from Marc Haisenko that ensures that rowCache
+	is never null.
+
+2005-07-13  Sureshkumar T  <tsureshkumar at novell.com>
+
+	* DataRelationCollection.cs: adding a relation with same set of
+	parent columns & child columns, should not be allowed.
+
+2005-07-08  Sureshkumar T  <tsureshkumar at novell.com>
+
+	* DataTableReader.cs: GetSchemaTable: DataType column should be
+	passed a type of Type.
+
+	* DataRow.cs: Load : Fired necessary events.
+
+	* DataTable.cs: LoadDataRow (object [], LoadOption): Fired
+	necessary events.
+
+2005-06-28  Sureshkumar T  <tsureshkumar at novell.com>
+
+	* DataRow.cs: Delete (): if row is detached, do nothing.
+	fixes bug #75388.
+
+2005-06-22  Sureshkumar T  <tsureshkumar at novell.com>
+
+	* DataRow.cs: Added method MergeValuesToRow copy merge two rows
+	according to the merge rules.
+
+	* MergeManager.cs: (MergeRow): use MergeValuesToRow
+	API. CopyValuesToRow simply makes the target row same as source
+	row. Rather, MergeValuesToRow merges with the target row according
+	to the merge rules.
+
+2005-06-19  Konstantin Triger <kostat at mainsoft.com>
+
+	* DataSet.cs: Fixed ReadXml to work with IXmlSerializable
+
+2005-06-17  Jordi Mas i Hernandez <jordi at ximian.com>
+
+	* DataViewManager.cs: fixes exception and creates DataView
+
+2005-06-15  Sureshkumar T  <tsureshkumar at novell.com>
+
+	* DataRow.cs: CheckChildRows: cascade parent changes to child rows
+	only if there is a change in columns of the fk constraint.
+
+2005-06-14  Sureshkumar T  <tsureshkumar at novell.com>
+
+	* DataSet.cs: GetChanges: if row is deleted, get parent rows based
+	on original version. fixes bug #75227.
+
+2005-06-13  Sureshkumar T  <tsureshkumar at novell.com>
+
+	* DataRowCollection.cs: Find (keys, version): Added an overload to
+	find keys matching given DataViewRowState filter. Used in
+	DataSet.Merge and DataTable.LoadDataRow.
+
+	* DataTable.cs: LoadDataRow (values, LoadOption): Use
+	DataRowCollection.Find (object [], DataViewRowState) overload.
+
+	* DataRow.cs:
+	- CopyValuesToRow: Create target "records" out of loop. Records
+	should be created once, not for each column. Dispose Unused target
+	records.
+
+	* MergeManager.cs:
+	- MergeRow: Find rows with matching original records. If not,
+	select with current values.
+	- MergeRow: While adding new row, use NewNotInitializedRow.
+
+	* ForeignKeyConstraint.cs: IsConstraintViolated: should not check
+	if EnforceConstraints is false.
+
+2005-06-10  Sureshkumar T  <tsureshkumar at novell.com>
+
+	* DataRow.cs: CopyValuesToRow: if orginal == current, don't create
+	a new current record.
+
+	* DataSet.cs: GetChanges :Temporarily disable EnforceConstraints.
+
+	* MergeManager.cs: Merge: Temporarily disable
+	EnforceConstraints. Patch from george.barbarosie at gmail.com (George
+	Barbarosie).
+
+2005-06-09  Jordi Mas i Hernandez <jordi at ximian.com>
+
+	* DataView.cs: fixes GetListName
+
+2005-06-02  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* XmlSchemaConstants.cs,
+	  XmlSchemaDataImporter.cs,
+	  XmlSchemaWriter.cs : AutoIncrementStep support. Patch partly by
+	  George Barbarosie. Fixed bug #75121.
+	* XmlSchemaMapper.cs : it is not used anymore, so just removed.
+
+2005-05-31 Boris Kirzner <borisk at mainsoft.com>
+	* DataRow.cs : SetParentRow on Detached row with no Default version throws an exception.
+	
+2005-05-29 Konstantin Triger <kostat at mainsoft.com>
+
+	* This patch fixes #74813
+	* DataView.cs: rework the CreateChildView to receive the index into the indexed row array, rowState became protected to be initialized from RelatedDataView
+	* DataRowView.cs: movo the logic of creating the child view to the DataView
+	* RelatedDataView.cs: perform correct init.
+
+2005-05-25  Sureshkumar T  <tsureshkumar at novell.com>
+
+	* DataTable.cs: Reworked DataTable.LoadDataRow method after
+	regressions caused by Index redesign.
+	* DataRow.cs: Load : reworked.
+
+2005-05-25 Konstantin Triger <kostat at mainsoft.com>
+
+	* ISafeDataRecord.cs: Added GetDateTimeSafe method, the interface was made derived from IDataRecord
+
+2005-05-22 Konstantin Triger <kostat at mainsoft.com>
+
+	* DataTable.cs, DataColumn.cs: in continuation to the previous fix - moving the common logic to 1 function and throwing the correct exception in any flow
+
+2005-05-20  Sureshkumar T  <tsureshkumar at novell.com>
+
+	* DataTable.cs: CreateRecord :value should be set to auto
+	increment value or default value if the given value is null.
+
+2005-05-16 Konstantin Triger <kostat at mainsoft.com>
+
+	* DataTable.cs: In DataTable.LoadDataRow with LoadOption - reverting the search order back to Original -> Current (by Suresh request)
+
+2005-05-16 Konstantin Triger <kostat at mainsoft.com>
+
+        * DataRow.cs, DataTable.cs: code under net_2_0 changed to use the new interface
+        * DataTable.cs: Added CompareRecords, which compares records in column order
+
+
+2005-05-16  Sureshkumar T  <tsureshkumar at novell.com>
+
+	* DataRow.cs:
+	* DataTable.cs: quick fix to make build 2.0 profile (follow up for
+	check in 2005-05-16). Merge with previous changes.
+
+2005-05-11  Sureshkumar T  <tsureshkumar at novell.com>
+
+	fix for "import row does not import deleted records"
+
+	* UniqueConstraint.cs: Make a way to access value even from a
+	deleted record. deleted records are added to the collection by
+	ImportRow method.
+
+	* DataRow.cs:
+	- Added restriction-less methods GetValue to fetch a
+	value even if it is in deleted state.
+	- If a row is detached, don't try to delete it from indexes.
+	- sanity check for record_index in CopyValuesToRow method
+
+2005-05-05  Sureshkumar T  <tsureshkumar at novell.com>
+
+	* DataTableReader.cs: Implemented Delete handler and move the
+	current pointer accordingly.
+
+2005-05-04  Sureshkumar T  <tsureshkumar at novell.com>
+
+	* DataTableReader.cs: Added event handlers to make reader stable
+	when the datasource is modified. Thanks to Umadevi for giving the
+	review comments for this implementation.
+
+	* DataTable.cs: Clear (): Raise TableCleared event.
+
+	* DataTableClearEventArgs.cs: Args for DataTableClearEventHandler.
+
+	* DataTableClearEventHandler.cs: Handler for DataTable.TableClear
+	event.
+
+	* DataRow.cs: AcceptChanges: raise row changing & row changed
+	events.
+
+	* DataRowCollection.cs: Clear : remove rows from indexes
+
+2005-05-02  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* XmlSchemaDataImporter.cs : XmlSchemaParicle might be XmlSchemaAny.
+	  This fixes bug #74784.
+
+2005-04-29  Sureshkumar T  <tsureshkumar at novell.com>
+
+	* DataTableReader.cs: removed use of _first. throw if given index
+	is out of range of columns. Copy DataTable [] to local array so
+	that not to be disturbed.
+
+2005-04-27  Sureshkumar T  <tsureshkumar at novell.com>
+
+	* DataTableReader.cs: Implemented most of the TODO.
+
+2005-04-22  Sureshkumar T  <tsureshkumar at novell.com>
+
+	* LoadOption.cs: Changed the enums. Keeping old values for
+	migration.
+
+	* DataTable.cs: Implemented methods Load and its overloads. Also
+	implemented LoadDataRow.
+
+	* DataRowCollection.cs: Added a variation of the Find method to
+	return a row even if it is of state Deleted. This is required for
+	DataTable.LoadDataRow method.
+
+	* DataRow.cs: Implemented internal helper method Load for loading
+	values from an object array and given an LoadOption (2.0 feature).
+
+	* DataRowAction.cs: Added few more enums for .net 2.0. Sorted
+	alphabetically.
+
+2005-05-16 Konstantin Triger <kostat at mainsoft.com>
+
+	* UniqueConstraint.cs : IsNull check is relevant for rows having default row version.
+	* DataTable.cs : The row should be validated when imported
+	* DataRowCollection.cs : if the row does not contain Proposed neither Current version, it's irrelevant for validation
+
+2005-04-26 Boris Kirzner <borisk at mainsoft.com>
+
+	* UniqueConstraint.cs :
+		- Add indication whenever the constraint belongs to collection. 
+		- Calculation of IsPrimaryKey simplified.
+		- If constraint is based on single column, the column becomes unique.
+		- Use boolean IsConstraintViolated() instead of AssertConstraint().
+		- Use Index.Duplicates to proper exception message formatting.
+		- AssertConstraint(DataRow) changed to suite new indexes interface.
+		- Added CanRemoveFromCollection method.
+		- Contains() method renamed to IsColumnContained().
+	* RelatedDataView.cs : added new class.
+	* MergeManager.cs :
+		- Reset indexes after merge.
+		- Add new tables when row array is merged into dataset.
+		- Clean proposed record in MergeRow.
+		- Inherit nesting on creating new relations in target data set.
+		- Avoid double loop on constraints collection.
+	* Locale.cs : added new class.
+	* ISafeDataRecord.cs : added new interface.
+	* Index.cs : commented out. Index implementation moved to System.Data.Common.
+	* ForeignKeyConstraint.cs : 
+		- No more use of childColumnsExtended since new indexes allow duplicate records.
+		- Constraints can not be created on expression columns.
+		- Removed unnecessary delegation.
+		- Use boolean IsConstraintViolated() instead of AssertConstraint(). 
+		- Use proper exception message formatting.
+		- Contains() method renamed to IsColumnContained().
+	* DataViewRowState.cs : use enum members to simplify notation.
+	* MergeManager.cs : implemented RelationCollectionChanged().
+	* DataView.cs :  new implementation.
+	* DataTableCollection.cs : 
+		- Added boundary check in indexer.
+		- More accurate handling in AddRange().
+		- Raise event in Remove().
+	* DataTable.cs :
+		- Hold primary key as constraint.
+		- Added accurate handling of DefaultView.
+		- Hold DataRowBuilder per table.
+		- Proper exception messages if enforce Constraints is violated.
+		- If there is no rows, Compute() returns DBNull.
+		- Use DataRow properties instead of private members.
+		- CopyProperties() fixed.
+		- Raise proper events in EndInit().
+		- Proper order of violation checks in EndLoadData().
+		- Create array of rows using NewRowArray().
+		- ImportRow handles rows according to their versions.
+		- LoadDataRow make use of records (instead of raw object array).
+		- Added and implemented LoadDataRow() that gets IDataRecord as a parameter (used in Fill)
+		- Select() uses indexes filtering and sorting ability (instead of "loop-throw-sort" approach).
+		- Removed redundant RowSorter and Sortable column classes.
+		- ParseSortString() fixed to threat bracketed column names.
+		- Table holds collection of property descriptors.
+	* DataSet.cs :
+		- Reset table case sensitive indexes on CaseSensitive change.
+		- EnforceConstraints update logic moved to internal method (used by DataTable).
+		- InAddChangedRow first add row and than copy values for proper handling of default values.
+	* DataRowView.cs :
+		- Changed private member names to suite name convention.
+		- CancelEdit() fixed.
+		- CreateChildView() delegates to DataView.
+		- IsNew fixed.
+		- Proper exception messages in indexers.
+		- RowVersion uses DataView.
+		- GetProperties() delegates to corresponding table if needed.
+	* DataRowCollection.cs :
+		- Common Add() logic moved to AddInternal() (used also by DataTable).
+		- Removed redundant check from Contains().
+		- Dalegate Find() calls when possible.
+		- Remove() fixed.
+		- RomoveAt() delegates to Remove().
+		- Optimized constraints check in row validation.
+	* DataRelationPropertyDescriptor.cs : added new class.
+	* DataRelationCollection.cs :
+		- Indexers fixed.
+		- Fixed order of actions in AddCore().
+		- RemoveCore() also delegates to base.
+		- Add relation to dataset also in AddCore().
+		- Remove relation from dataset also in RemoveCore().
+		- InTransition hold a data relation so we can properly identify the "in transition" state.
+		- Added threat of parent and child table s property descriptors in Add().
+		- Common Add() logic moved to AddCore().
+		- Clear() fixed.
+		- Remove() threats "in transition" state properly.
+		- Remove methods delegate to single implementation.
+	* DataColumnPropertyDescriptior.cs :
+		- Added new constructor.
+		- Commented out redundant method.
+	* DataColumnCollection.cs :
+		- Boundary check in indexer.
+		- RegisterName and UnregisterName become internal (used also by DataColumn).
+		- Fixed AddRange().
+		- Fixed CanRemove().
+		- Rethrow correct exception in Clear();
+		- Change in collection resets parent table property descriptors.
+		- Added PostEndEdit() helper method (used by DataTable).
+	* DataColumn.cs :
+		- Private member names changed to suite name convention.
+		- Created method for CanAutoIncrement() logic.
+		- Proper handling of column name update.
+		- Proper exception messages on expression update.
+		- Proper namespace handling (delegates to table when needed).
+		- Removed redundant check in Unique update.
+		- Implemented internal Clone().
+		- GetParentRalation() and GetChildRelation() become private.
+	* Constraint.cs :
+		- Added abstract methods (implemented in UniqueConstraint and ForeignKeyConstraint).
+		- Simplified index update.
+	* ConstraintCollection.cs :
+		- Use Locale instead of CaseSensitive in column names comparison.
+		- Removed #ifdef
+		- Rethrow correct exception type in Add().
+		- Proper update of table primary key in Add().
+		- Delegate CanRemove() to constraint.
+		- Remove table primary key in Clear();
+		- Delegate "can remove" check to constraint in Remove().
+		- Removed unnecessary methods and properties.
+	* DataRow.cs :
+		- RowSate becomes calculated property.
+		- Use properties instead of private members where possible.
+		- Fixed indexer.
+		- Fixed order of actions in ItemArray update.
+		- Fixed DetachRow().
+		- Added ImportRecord() method.
+		- Removed redundant SetValuesFromDataRecord().
+		- Fixed IndexFromVersion().
+		- Added VersionFromIndex() method. Returns row version the passed record index corresponds to.
+		- Fixed AcceptChanges().
+		- Fixed creating proposed version in BeginEdit();
+		- Added record disposal in Delete().
+		- Fixed CheckChildRows().
+		- EndEdit() fixed. Checks for readonly. Uses straight flow instead of "try and fix if fail" approach.
+		- GetChildRows() and GetPrarentRows() rewrited. Use records and indexes for rows lookup.
+		- GetColumnError() delegates to another implementation.
+		- HasVersion() fixed.
+		- RejectCahnges checks on child rows before passing through.
+		- SetParentRow() fixed. Create relation collection if needed. Use typed data container value copy.
+		- CopyErrors() logic moved to separate method (used also by DataTable).
+	* ExpressionElement.cs : added new class.
+	* Res.cs : added new class.
+
+2005-04-20  Jordi Mas i Hernandez <jordi at ximian.com>
+
+	* DataViewManager.cs: implements TypedList.GetListName used in SWF
+
+2005-04-19  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataRowView.cs : indexer should access to DataRow with proper
+	  DataRowVersion. Fixed bug #74650.
+
+2005-04-18  Sureshkumar T  <tsureshkumar at novell.com>
+
+        * DataRow.cs: if there are no mapping fields, fill with default
+	  value.
+
+2005-04-17  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataView.cs : Delete() should not try to remove row twice.
+	  Fixed bug #74631.
+
+2005-04-13  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataTable.cs : Use GetRowType() for the base of the returning array 
+	  type of Select(). Fix by Gerhard Rittweger.
+	* CustomDataClassGenerator.cs : Fixed slightly harmless wrong code.
+
+2005-04-13  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* CustomDataClassGenerator.cs : custom relation was not added to
+	  Relations property. The second entry of bug #69276 was fixed.
+	  Patch by Daniel Rodriguez.
+
+2005-04-07  Lluis Sanchez Gual <lluis at novell.com>
+
+	* DataRowCollection.cs: Fix the signature of the Add method
+	for NET_2_0.
+
+2005-03-16  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataRow.cs : on importing row, it was copying data from incorrect
+	  DataRow. This fixes bug #73288.
+
+2005-03-07  Jackson Harper  <jackson at ximian.com>
+
+	* DataViewManagerListItemTypeDescriptor.cs: Implement missing
+	features. These are needed for System.Windows.Forms databinding.
+
+2005-02-25  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataColumn.cs : setting negative value on MaxLength of SimpleContent
+	  column is still valid.
+
+2005-02-15  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* XmlSchemaWriter.cs : new file for outputting XmlSchema.
+	* DataSet.cs : removed rewritten code in XmlSchemaWriter.
+	* XmlConstants.cs : added UseCurrentCulture constant.
+	* DataTable.cs :
+	  Use new Xml Schema writer.
+	  Use XmlSchemaDataImporter as we use in DataSet.
+
+2005-02-10  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataView.cs, DataRowView.cs : Fixed bug #72421. CreateChildView()
+	  should target only child rows.
+
+2005-02-03  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataViewManager.cs: misuse of ReadStartElement(string).
+	* DataRowView.cs : removed some MonoTODO.
+
+2005-02-02  Sureshkumar T  <tsureshkumar at novell.com>
+	    Ankit Jain     <radical at corewars.org>
+
+	* DataColumn.cs: throw exception if the column is part of a
+	relationship, when chaning the data type. Added methods
+	"GetParentRelation ()" and "GetChildRelation ()" get the relation
+	which contains the current column
+	* DataRelation.cs: Added method "Contains (DataColumn)" to check
+	whether the relation contains the given column.
+
+	fixes nunit failure: DataRelationTest.InvalidConstraintException2.
+
+2005-02-02  Sureshkumar T  <tsureshkumar at novell.com>
+
+	* DataColumnCollection.cs: implemented todo item "check for
+	constraints" when removing columns from table.
+	* DataRowCollection.cs: Clear (): don't have to throw child key
+	constraint exception when the child table does not have any
+	rows. safe to remove parent rows.
+	* UniqueConstraint.cs: added method "Contains (DataColumn)" to
+	check whether a column is part of UniqueConstraint.
+	* ForeignKeyConstraint.cs: added method "Contains (DataColumn,
+	lookInParent)" to check whether a column is part of foreignkey.
+
+	fixes nunit failure: DataTableTest.ClearTest ()
+
+2005-02-02  Sureshkumar T  <tsureshkumar at novell.com>
+
+	* ForeignKeyConstraint.cs: validating columns: move checking
+	"tables are of same dataset" before "checking column types".
+
+	fixes nunit failure: ForeignKeyConstraint.CtorExceptions.
+	
+2005-02-02  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataViewManager.cs : let's just use StringWriter instead of 
+	  XmlTextWriter (to avoid empty tag string mismatch annoyance.)
+	* DataView.cs : implemented BeginInit() and EndInit(). Don't update
+	  rows during init phase until EndInit() is invoked. During init phase,
+	  just hold properties such as Sort that affects on rows.
+
+2005-02-02  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataTableCollection.cs : (RemoveAt) just use IndexOutOfRangeException.
+
+2005-02-02  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataView.cs : DataRowView.EndEdit() raises ItemMoved event.
+	  set_Table clears Sort and RowFilter.
+
+2005-02-02  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataView.cs :
+	  - Clear() should clear AddNew cache.
+	  - Open() invokes Reset().
+	  - ConstraintCollectionChanged() itself does not invoke OnListChanged().
+	  - Reset() does not Open, Close and Update Index.
+	  - UpdateIndex() can be invoked even if it has no table.
+	  - Reset event is invoked always after actual query to table.
+	  - set_Table should raise PropertyDescriptorChanged event.
+
+2005-02-02  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataView.cs : ColumnCollectionChanged() is the event invoker (i.e.
+	  when overriden, no column change events are fired).
+
+2005-02-02  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataView.cs : CancelEditRowView() and DeleteRowView() was incorrectly
+	  checking target tables. They also should raise events if required.
+
+2005-02-02  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataView.cs : simplify code with UnsortedList.
+
+2005-02-01  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataView.cs : Mostly reimplemented.
+	  - UpdateIndex() is invoked only when it is required (results in 
+	    significant performance improvement).
+	  - Use SortedList and wrapper OptionalSortedList which switches
+	    between SortedList (with Sort) and UnsortedList (without Sort).
+	  - DataView itself now contains two collections for rowviews:
+	    Table rows based pool and AddNew() based cache. Consider those
+	    two collections in every members.
+	  - Reset() does not clear rows. Just invokes UpdateIndex().
+	  - Hook RowDeleting, ColumnChanging and ColumnChanged events in table
+	    which is required to handle state changes.
+	  - Reimplemented Find() and FindRows() because of internal changes.
+
+2005-02-01  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataTable.cs : Fixed row comparer. Even if every of the sort target
+	  columns are identical for two rows, they should not be regarded as
+	  the same unless they are Object.ReferenceEquals.
+
+2005-02-01  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataRowCollection.cs : on adding a row, should raise
+	  ChangingDataRow() as well as ChangedDataRow().
+
+2005-01-31  Sureshkumar T  <tsureshkumar at novell.com>
+
+	* DataRow.cs: SetParentRow (): use relation.ParentColumns &
+	relation.ChildColumns instead of relation.ChildKeyConstraint.*
+	because createConstrains flag may be false when creating data
+	relations. Hack along with Ankit Jain.
+	
+2005-01-31  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataView.cs :some interface implementations.
+
+2005-01-28  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataView.cs : Add to table only when the row is not in the table.
+
+2005-01-28  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataView.cs : implemented FindRows() (btw we should not use
+	  DataTable since there are detached rows by AddNew().)
+
+2005-01-28  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataView.cs :
+	  Code cleanup: privatify some members, remove unused methods.
+	  Some event-based invocation methods should not raise NotImplemented.
+
+2005-01-28  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataSet.cs : ReadXml() became closer to MS behavior, being hacky.
+
+2005-01-28  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* XmlSchemaDataImporter.cs : empty element is not regarded as a column.
+
+2005-01-28  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* UniqueConstraint.cs : mostly reverted the previous patch + check
+	  IsPrimaryKey before validation.
+
+2005-01-28  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataView.cs : Fixed duplicate insertion to Hashtable.
+	* UniqueConstraint.cs : Unique constrained pair of columns could be
+	  nullable.
+
+2005-01-27  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataView.cs :
+	  Don't do anything for Sort/ApplyDefaultSort/RowFilter/RowStateFilter
+	  when the same value is being set.
+	  Examined UpdateIndex() and marked FIXME where MS does not invoke it.
+	  Removed unused OnColumnChanged().
+	  Now store rowViewPool and reuse DataRowView objects.
+	  Optimized UpdateIndex() - avoid ArrayList. Avoid Haashtable.Rehash().
+
+2005-01-27  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataViewSettings.cs : no MonoTODO anymore.
+	* DataViewManager.cs : pass itself to new DataView() (new ctor).
+	* DataRowView.cs : GetHashCode() returns its Row's hash.
+	* DataTablePropertyDescriptor.cs : use new ctor().
+	* DataView.cs : added new ctor()s that accept DataViewManager.
+
+2005-01-27  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataView.cs, DataRowView.cs : AddNew() should not add the row to table
+	  (it is still detached). So handle those rows differntly.
+	  CancelEdit(), EndEdit() and Delete() propagates those events to
+	  DataView (and handle row collection).
+	  Eliminate "throw new Exception()".
+	  Don't catch all the exception thrown in ListChanged event.
+	* DataTable.cs : made RowSorter as internal and use it in DataView.
+	  no need to pass DataRow[] to .ctor().
+
+2005-01-27  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataTable.cs : don't create DefaultView unless it is required. It
+	  significantly improves performance. (i.e. DataView perf. is sick ;-)
+
+2005-01-27  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataViewSetting.cs,
+	  DataViewSettingCollection.cs,
+	  DataViewManager.cs : implemented basic members.
+
+2005-01-26  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* Node.cs, DataColumnPropertyDescriptor.cs, DataTable.cs :
+	  Eliminate "throw new Exception".
+
+2005-01-25  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataRow.cs : (set_Item) RowNotInTableExeption check should be done
+	  regardless of index existence.
+
+2005-01-25  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataTable.cs : use new IExpression.EvalBoolean() to avoid extraneous
+	  boxing.
+
+2005-01-25  Sureshkumar T  <tsureshkumar at novell.com>
+
+	* DataTable.cs: ImportRow :Do not add to rows collection if the
+	import row is in detached state.
+
+2005-01-25  Sureshkumar T  <tsureshkumar at novell.com>
+
+	* DataRow.cs: CopyValuesToRow : set the column value with the
+	default version of the given row.
+	* DataTable.cs: ImportRow: Copy values before adding row.
+	* DataSet.cs: AddChangedRow: Add the row to the table after
+	copying values.
+	
+	Fixes bug #67317. Patch by Ankit Jain.
+
+2005-01-25  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataRowView.cs : Fixed IsEdit to reflect correct status of DataRow.
+	* DataRow.cs : Expose editing status internally.
+
+2005-01-25  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataView.cs : missing attributes.
+
+2005-01-24  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataRowView.cs : implemented CreateChildView().
+
+2005-01-24  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataTable.cs, DataView.cs :
+	  Optimized DataView to compile only once RowFilter and Sort when 
+	  those properties are set. To make it possible, extracted 
+	  SortableColumn out of DataTable and added internal DataTable.Select()
+	  that accepts precompiled IExpression and SortableColumns[].
+
+2005-01-24  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataColumn.cs : set_MaxLength is not allowed when it is mapped to
+	  SimpleContent. (However, it is weird but it never fails when we set
+	  ColumnMapping = MappingType.SimpleContent when we fhave MaxLength.)
+
+2005-01-21  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataRow.cs : more Current -> Default fixes. Check if it should throw
+	  VersionNotFoundException. Patch by Ankit Jain.
+
+2005-01-21  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataRow.cs : Default selects the right version for the current
+	  state of the row. Current is not always available. Also change
+	  that for GetParentRow(). Patch by Ankit Jain.
+
+2005-01-21  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataTable.cs : CopyColumn() should copy AutoIncrement after
+	  DefaultValue, or it will raise an error in some cases.
+
+2005-01-20  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* ConstraintCollection.cs : Add() should throw ArgumentException when
+	  the argument constraint fails validation.
+	  DataTable.cs : set_PrimaryKey should throw ArgumentException when
+	  the argument contains constraints which fail validation.
+
+2005-01-19  Sureshkumar T  <tsureshkumar at novell.com>
+
+	* DataRelationCollection.cs: 
+
+	Method Remove : Donot throw exception if DataRelation argument is
+	null in DataRelationCollection.Remove method.
+
+	Method RemoveAt : Exception should be IndexOutOfRangeException if
+	row index is not in list range.
+
+	Fixes nunit failures DataRelationCollection.Remove and
+	DataRelationCollection.RemoveAt.
+
+2005-01-19  Sureshkumar T  <tsureshkumar at novell.com>	
+
+	* ConstraintCollection.cs: Donot throw exception if constraints
+	are null in AddRange method. Check for null before using the
+	argument.
+
+	fixes bug #69381.
+
+2004-01-19  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* XmlDataInferenceLoader.cs,
+	  XmlDataReader.cs : Check if the XmlReader (node) represents DataSet
+	  or a table, reusing code block in XmlDataInferenceLoader.
+	  This fixes bug #60118.
+
+2004-01-19  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* XmlDiffLoader.cs : Ankit Jain <radical at imt.ac.in> has a conflicting
+	  patches and some good catches. Some attributes should be skipped,
+	  and loaded value must be typed.
+
+2004-01-19  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* XmlConstants.cs,
+	  XmlDataInferenceLoader.cs, 
+	  XmlDataReader.cs : use common const for http://www.w3.org/2000/xmlns/.
+	* XmlDiffLoader.cs : It was not handling attributes. Fixed bug #70961.
+
+2005-01-18  Sureshkumar T  <tsureshkumar at novell.com>
+
+	Fix for bug #66838. This patch is submitted by "Ankit Jain"
+	<radical at corewars.org> and refactored.
+
+	* DataRow.cs: Allows to set a parent row even if the row is in
+	detached state.
+
+	* DataRelation.cs: method "UpdateConstraints" is added to check
+	and create missing keys when adding a relation. This is refactored
+	approach from DataRelationCollection.Add method.
+
+	* DataRelationCollection.cs: AddCore methods of all relation types
+	are synchronized. A Check for existing constraints is
+	done. Relation is added to the list only if all checks are passed.
+
+2004-01-18  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataColumnCollection.cs : Clear() throws ArgumentException that
+	  wraps thrown innerException.
+	* XmlSchemaDataImporter.cs : removed FIXMEs.
+
+2004-01-12  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataSet.cs : When serializing DataTable, BuildSchema() is passed
+	  null relation collections.
+	  Quick fix for XmlSerializer deserialization. It does not require
+	  XML Schema included.
+
+2004-01-11  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataSet.cs,
+	  CustomDataClassGenerator.cs :
+	  In DataSet class, IXmlSerializable.GetSchema() returns null.
+	  In strongly-typed class, it returns schema.
+
+2004-01-07  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* XmlDataInferenceLoader.cs : test driver class should be excluded.
+
+2004-12-01  Miguel de Icaza  <miguel at ximian.com>
+
+	* DataView.cs: Patch from Marc Haisenko that ensures that rowCache
+	is never null.
+
+2004-11-10  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* CustomDataClassGenerator.cs : generated foreign key constraint
+	  construction code was creating empty child columns and thus it
+	  was invalid. This fixes bug #69276 (patch by Martin Voelkle).
+
+2004-11-02  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* CustomDataClassGenerator.cs : custom DataTable ctor should call
+	  InitializeFields(), and those DataColumns created by that method
+	  should take data type. This should fix bug #68972.
+
+2004-10-15  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataSet.cs : Also clear UnhandledAttributes ArrayList before 
+	  generating next attribute column schema. This fixes bug #68432.
+
+2004-10-14 Umadevi S <sumadevi at novell.com>
+        * DataTable.cs : Corrected the Clone method to use  Activator.CreateInstance so that the
+        correct subclass is returned. This fixes bug #67631
+                                                                                        
+2004-10-14 Umadevi S <sumadevi at novell.com>
+	* DataSet.cs : Corrected the Clone method to use  Activator.CreateInstance so that the 	
+	correct subclass is returned. This fixes bug #67627
+
+2004-10-13  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataSet.cs : clear UnhandledAttributes ArrayList before generating
+	  next element column schema. This fixes bug #68256.
+
+2004-10-12  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataSet.cs : now xs:schema contains xmlns="".
+	  This fixes bug #68008.
+
+2004-10-12  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataSet.cs : DBNull attribute column should not be written as
+	  empty attribute. This fixes bug #68007.
+
+2004-10-12  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataSet.cs, XmlConstant.cs, XmlSchemaDataImporter.cs:
+	  DataColumn.ReadOnly was not handled. This fixes bug #68005.
+	  Attribute defaultValue was not handled too.
+
+2004-10-07  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataSet.cs :
+	  - When AllowDBNull is false on attribute DataColumn, its schema
+	    should contain use="required". This fixes bug #66792.
+	  - If MaxLength is set on attribute DataColumn, the mapped schema
+	    type should contain maxLength facet. This fixes bug #66793.
+
+2004-10-04  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataSet.cs : For a row, when a relation is not nested, then it is
+	  still output target since it won't be written as a child of its
+	  parent. It fixes bug #66379.
+
+2004-10-03  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataSet.cs : Attribute constraint field XPath must be written as
+	  @blah. This fixes bug #66366.
+
+2004-09-28 Umadevi S <sumadevi at novell.com>
+	* DataRow.cs - checked for Enforceconstraints, while using indices to search for related rows
+
+2004-09-24  Sureshkumar T  <tsureshkumar at novell.com>
+
+	* DataSet.cs : Don't check constraints for dataset clear
+	* DataRowCollection.cs : check for EnforceConstraints flag 
+	before checking foriegn key constraints in Clear method
+	* DataTable.cs : Redundant checking removed in Clear method as it is
+	checked in DataRowCollection.Clear method. 
+
+
+2004-09-19  Sureshkumar T <tsureshkumar at novell.com>
+	* DataRow.cs : while deserialization of dataset, adding a current row precedes the original row.
+		       hence, adding a row cache is necessary if the original row happens to be current.
+		       fixed bug #63097
+
+2004-08-23  Martin Baulig  <martin at ximian.com>
+
+	* XmlDataInferenceLoader.cs (Driver): Make this class internal,
+	not public.
+
+2004-08-18 Umadevi S <sumadevi at novell.com>
+	* DataView.cs - Completed most of the event handling. 
+	Thanks to Punit Todi <punit_todi at da-iict.org> for implementing most of it.
+	Thanks to Boris Kirzner <borisk at mainsoft.com> for commenting and suggesting changes to the implementation.
+	* DataTable.cs - Changed Access modifiers of class/methods since it was used by DataView.
+
+2004-08-06  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataSet.cs : DataSet's ExtendedProperties were not XmlConverted.
+
+2004-08-05  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* XmlConstants.cs : Added constants for "msprop" support.
+	* DataSet.cs : ExtendedProperties should be written in the schema.
+	  This fixes bug #61233.
+
+2004-07-27  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataSet.cs : on serialization to XmlWriter, XmlConvert should be
+	  used. There were also some culture dependency problems to write int.
+
+2004-06-27  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* XmlDataInferenceLoader.cs : It was not always filling relation
+	  child table information correctly. This fixes bug #60742.
+
+2004-06-23 Umadevi S <sumadevi at novell.com>
+	* UniqueConstraint.cs :changed a ifdef true to ifdef NET_1_1
+
+2004-06-22  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataSet.cs : Fixed ReadXml(). When ReadMode is ReadSchema and the
+	  schema is inside the document element (as created in XmlWriteMode
+	  .WriteSchema), it should read schema from that non-document element.
+	  This fixes one case reported in bug #60470.
+
+2004-06-20  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* XmlDataInferenceLoader.cs : Kindly reject xml schema document as a
+	  inference target. For bug #60470. (MS does not support schema
+	  document inference and results in unconsistent dataset structure.)
+
+2004-06-20  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataTableCollection.cs : reset the table's DataSet to null when
+	  removing a table from this collection.
+	* DataTable.cs : When Namespace is not specified explicitly, its
+	  Namespace property reflects DataSet's Namespace if exist.
+	  This fixes bug #60469.
+
+2004-06-18  Gert Driesen <drieseng at users.sourceforge.net>
+
+	* DBConcurrentcyException.cs: CRLF to LF
+	* DataViewSetting.cs: CRLF to LF
+
+2004-06-18  Gert Driesen <drieseng at users.sourceforge.net>
+
+        * DataViewSetting.cs: renamed fields to match MS.NET
+
+2004-06-18  Gert Driesen <drieseng at users.sourceforge.net>
+
+        * DBConcurrencyException.cs: fixed serialization compatibility with
+        MS.NET
+
+2004-06-17  Boris Kirzner  <borisk at mainsoft.com>
+
+	* ChangeLog : Fix for misspelled words.
+
+2004-06-17  Boris Kirzner  <borisk at mainsoft.com>
+
+	* DataRowCollection.cs : Removed onColumnRemoved since it is not in use.
+	
+2004-06-17  Boris Kirzner  <borisk at mainsoft.com>
+
+	* DataTable.cs :
+	  - Table stores default values for columns in special default values row. 
+	  It is allocated once (in NewRow).
+	  - DataTable.Copy rewrited. It works with uninitialized rows for better perfomance.
+	  - OnRemoveColumn has nothing to perform by now.
+
+2004-06-17  Boris Kirzner  <borisk at mainsoft.com>
+
+	* DataRow.cs : 
+	  - Changed access of original, current and proposed indexes to internal.
+	  - ColumnErrors reviewed : now column errors stored in ArrayList and allocated on demand only.
+	  - Added new DataRow constructor that creates uninitialized DataRow (used in DataTable.Copy).
+	  - Use DataContainer.CopyValue and default values row for faster set of default values in row.
+	  - SetColumnValue become CheckValue. Now it does not changes the value, but only checks for its correctness.
+	  Care about Null and DBNull values is now in DataContainer.
+	  - Use DataColumn.AutoIncrementValue and GetInt64 for faster set of autoincrement value.
+	  - Use Datacontainer.CopyValue and default values row to speed up CheckChildRows.
+	  - Fix in CopyState : clone column errors.
+	  - Removed CollectionChanged and onColumnRemoved since we are not using both of them anymore.
+
+2004-06-17  Boris Kirzner  <borisk at mainsoft.com>
+
+	* DataColumnCollection.cs : 
+	  - Fix : Add()	now delegates to Add(DataColumn).
+	  - autoIncrement list holds DataColumn objects, and not just column names.
+
+2004-06-17  Boris Kirzner  <borisk at mainsoft.com>
+
+	* DataColumn.cs : 
+	  - AutoIncrementValue fixes. Now AutoIncrement uses DataContainer.GetInt64 to avoid boxing.
+	  - DefaultValue fixes. Default value from now on is also stored in special record in 
+	  DataTable, so we're able to set default value for the column faster (typed).
+	
+	
+2004-06-15  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataSet.cs : children of non-root rows were not properly written.
+	  Fixed bug #53959.
+
+2004-06-10 Umadevi S <sumadevi at novell.com>
+	* DataRelation.cs - Constructor
+	- The datatypes of the parentcolumn(s) and the childcolumn(s) should match
+
+2004-06-06  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* XmlSchemaDataImporter.cs : We should fill Namespace for DataTable.
+
+2004-06-04  Gert Driesen <drieseng at users.sourceforge.net>
+
+	* Constraint.cs: marked methods internal to fix public API
+	* ConstraintCollection.cs: to fix public API, use 
+	DataTable.fInitInProgress to check whether initialization 
+	of DataTable is in progress
+	* DataColumn.cs: added stubs for missing methods
+	* DataRowBuilder.cs: marked Table property internal to
+	fix public API
+	* DataSet.cs: removed extra empty destructor, marked 
+	OnMergeFailed internal to fix public API
+	* DataTable.cs: use fInitInProgress field to hold init
+	status, to match MS.NET
+	* DataView.cs: added missing attributes on IsOpen
+
+2004-06-03  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataSet.cs : Use NameTable.Get() before calling LookupNamespace()
+	  in XmlNamespaceManager.
+
+2004-06-03  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataSet.cs : complex table content child was not properly added
+	  when it is the only one child in the parent table. Fixed bug #53959.
+
+2004-06-02  Gert Driesen <drieseng at users.sourceforge.net>
+       * DataTableTypeConverter.cs: added
+       * DataView.cs: added missing attribute on Table property
+       * DataViewManager.cs: moved attribute to correct property
+       * UniqueConstraint.cs: removed extra ReadOnly attribute from
+        IsPrimaryKey property
+
+2004-06-01  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataRow.cs : ColumnsChanged event is not required in .ctor().
+
+2004-06-01  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* XmlDataReader.cs : type change is required before setting value
+	  string to row item.
+
+2004-05-31  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataSet.cs : Loop-break of the last fix was incorrect.
+
+2004-05-31  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataSet.cs : When a row has no parent row but the table has parent
+	  relation(s), that row had been always ignored.
+
+2004-05-31  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* XmlDataInferenceLoader.cs : Fixed GetMappedTable() that incorrectly
+	  rejected same-named tables in different hierarchy. Thanks to Boris.
+
+2004-05-31  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* XmlDiffLoader.cs : Added some Skip() that is required not to go to
+	  infinite loop. Thanks to Boris for this fix.
+
+2004-05-31  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* XmlDataInferenceLoader.cs : XmlSchema elements should not be infered.
+	  Thanks to Boris for this fix.
+
+2004-05-30  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataTable.cs : serialization .ctor() should use XmlReadMode.DiffGram
+	  for ReadXml(). Thanks to Boris.
+
+2004-05-27  Boris Kirzner  <borisk at mainsoft.com>
+	* DataRow.cs : 
+		- CheckReadOnlyStatus : use typed (and faster comparing).
+		- EndEdit : bug fix - do not dispose record if it holds original version.
+		- SetValuesFromDataRecord : Take care about autoincrement columns.
+		
+
+2004-05-27  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* MergeManager.cs : don't output debug message to Console.
+
+2004-05-27  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* XmlDataInferenceLoader.cs : Namespace are not imported to the table
+	  structure. Thanks to Boris Kirzner for the fix.
+
+2004-05-27  Umadevi S <sumadevi at novell.com>
+         * DataRelationCollection.cs - fixed nunit test errors
+
+2004-05-27  Umadevi S <sumadevi at novell.com>
+	 * DataTableCollection.cs - fixed nunit test errors
+
+2004-05-21  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataColumnCollection.cs : NullReferenceException was thrown when
+	  the table was not found.
+	* DataRowCollection.cs :
+	  Find() just returns null for null value under MS.NET 1.1.
+	  RemoveAt() should also avoid to call AcceptChanges() like Remove().
+	* UniqueConstraint.cs : in AssertConstraint() throw ConstraintException
+	  directly under MS.NET (for nunit test).
+
+2004-05-21  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* XmlSchemaDataImporter.cs : Setting startindex in LastIndexOf() 
+	  caused problem on qualified name to get schema Field name.
+
+2004-05-21  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* XmlDataReader.cs : Now data reader is namespace aware in all places.
+	  When table's namespace is different, it entered to infinite loop.
+
+2004-05-19  Boris Kirzner  <borisk at mainsoft.com>
+	* MergeManager.cs : AdjustSchema now updates by reference new created table,
+	so in Merge you do not need to lookup for it (were unable to do this for unnamed tables).
+	Code styling.
+	
+2004-05-19  Boris Kirzner  <borisk at mainsoft.com>
+
+	* DataColumn.cs : In set_Item[int] - if autoincrement, adjust next autoincrement value.
+	* DataColumnCollection.cs : fixed parantethes.
+	* DataRow.cs : 
+		- AcceptChanges : do nothing if row state is unchanged.
+		- GetChildRows, GetParentRows  : bug fix (use correct index).
+	* DataRowCollection.cs : bug fix (compare all row's values).
+	* DataTable.cs : bug fix (use correct row version).
+	
+2004-05-20  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* XmlSchemaDataImporter.cs : xs:positiveInteger is mapped to ulong.
+	  When content type is Mixed, text column is not required (it is
+	  required only when the complex type has no particle). 
+	  "Repeated element" column is also created (considering maxOccurs=0 
+	  and complex content extension).
+
+2004-05-20  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* XmlSchemaDataImporter.cs : XmlSchemaGroupBase was not handled 
+	  properly.
+
+2004-05-20  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* XmlSchemaDataImporter.cs : Removed unused code and extra MonoTODO.
+	  Fixed relation inference to consider attribute XPath.
+
+2004-05-19  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataColumn.cs : Fixed set_Item[int]. Convert.ToInt64(DBNull.Value)
+	  always fails.
+
+2004-05-19  Boris Kirzner  <borisk at mainsoft.com>
+
+	* DataColumn.cs - removed default member attribute.
+
+2004-05-19  Boris Kirzner  <borisk at mainsoft.com>
+
+	* DataColumn.cs,
+	  DataColumnChangeEventArgs.cs,
+	  DataColumnCollection.cs,
+	  DataRow.cs,
+	  DataRowCollection.cs,
+	  DataTable.cs,
+	  Index.cs : Data storage in the row is redesigned. Now data is stored in 
+	  typed containers inside DataColumn. Row holds its versions as indexes inside
+	  each of data container, accessed through the row that holds it.
+
+2004-05-19  Boris Kirzner  <borisk at mainsoft.com>
+
+	* UniqueConstraint.cs - added comment.
+	
+2004-05-19  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* XmlDataInferenceLoader.cs : Don't add already-existing DataTable to
+	  DataSet.
+
+2004-05-17  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataSet.cs,
+	  XmlDataInferenceLoader.cs,
+	  XmlDataReader.cs,
+	  XmlSchemaDataImporter.cs : XmlDecode every local name to read and
+	  XmlEncode every local name to write. This should fix bug #58268.
+
+2004-05-17  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataSet.cs : Implemented ignored namespaces in InferXmlSchema().
+	  Supported repeated elements. Removed MonoTODOs.
+	* XmlDataInferenceLoader.cs : Design change to support ignored
+	  namespace and repeated elements.
+	* XmlSchemaDataImporter.cs : Added mapping support classes.
+
+2004-05-15  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* CustomDataClassGenerator.cs :
+	  Added property parent "[foo]Row" and children "Get[foo]Row" support
+	  for custom DataRow classes.
+	  Fixed DataColumn property accessibility (public --> internal).
+
+2004-05-14  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* CustomDataClassGenerator.cs :
+	  - Put classes inside custom DataSet class.
+	  - Added automatic DataRelation creation support.
+	  - Added Constraints creation support. That is done separate from
+	    relations, since they might be independently created.
+	  - Added non-MS public DataRelation fields.
+	  - Removed extraneous "DataRelation type generation" code.
+	  - Fixed custom_dataset.Initialize() not to create "c" field that
+	    was created more than once.
+	  - Implemented AddxxxRow() that takes parameters for every column.
+
+2004-05-14  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* XmlSchemaDataImporter.cs : When primary key is used more than once,
+	  DataRelation borked because of empty parent column name.
+
+2004-05-14  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* XmlSchemaDataImporter.cs : When Creating constraints with related
+	  to DataRelation creation, also set PrimaryKey to the parent table.
+
+2004-05-14  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* XmlSchemaDataImporter.cs : 
+	  Design change to add indirect table and relation structures.
+	  Support for "relation" annotation for local element.
+	  Support for repeatable simple element column (maxOccurs > 1).
+	  Fixed handling of Nested property on DataRelation (for globally
+	  annotated relation, Nested is false).
+
+2004-05-13  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataRow.cs : Added DataElement property to avoid storing every row-
+	  element mapping. It stored even for nodes that should be removed.
+
+2004-05-13  Umadevi S <sumadevi at novell.com>
+
+	* RelationshipConverter.cs - Stubbed this class
+	* DataRelation.cs - added TypeConveterAttribute
+
+2004-05-13  Umadevi S  <sumadevi at novell.com>
+
+	* DataColumnCollection.cs - Added ResDescriptionAttribute
+	* DataRelation.cs - Added TypeConverterAttribute
+	* DataRelationCollection.cs - Added DefaultPropertyAttribute
+	* DataRowView.cs - Added GetHashCode method with a TODO tag
+        * DataSet.cs - Added DesignerAttribute
+	* DataView.cs - Added DesignerAttribute
+        * DataViewManager.cs - Added DesignerAttribute
+ 	* DataViewSetting.cs - Added TypeConverterAttribute
+	
+2004-05-12  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataRow.cs : Added XmlDataElement initialization code.
+
+2004-05-11  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* XmlDataInferenceLoader.cs :
+	  It now requires XmlDocument as input.  Improved identification of
+	  DataSet element.  Removed extra lines.
+	  Moved boresome design notes to bottom of the source and
+	  added standalone runnable driver (not included on build).
+	* DataSet.cs :
+	  Update with related to the change above.
+	  WriteXml() should call Flush() after writing. This fixes bug #58327.
+	* XmlSchemaDataImporter.cs :
+	  Improved indentification of DataSet element.
+
+2004-05-11  Gert Driesen (drieseng at users.sourceforge.net)
+	* DataTable: marked initStatus enum internal
+
+2004-05-09  Gert Driesen (drieseng at users.sourceforge.net)
+	* DataTable.cs: removed TypeConverterAttribute, marked RowsExist
+	methods internal
+	* DataRowView.cs: removed extra Error property
+	* DataRow.cs: reduced accessibility of CollectionChanged method 
+	to private
+	* DataColumnPropertyDescriptor.cs: made class internal
+	* DataColumn.cs: removed extra TypeConvertorAttribute
+	* ConstrainCollection.cs: marked PostEndInit method internal
+
+2004-05-07  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataSet.cs : 
+	  In WriteXmlSchema(), when complex type contains simple type content
+	  attributes must not added to XmlSchemaComplexType directly. It
+	  causes schema compilation error.
+	  DataRelation should not be output when related columns are hidden.
+
+2004-05-07  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* XmlDataInferenceReader.cs : Added. It does InferXmlSchema() (it is
+	  also expected to do ReadXml(), but I will remove that feature and
+	  support column reordering).
+	* XmlSchemaDataImporter.cs : Always initialize dataset name.
+	  Always set Nested and primary key for parent table.
+	* XmlDataReader.cs : Now it is used.
+	  Top level element might not match to dataset name nor any table 
+	  name, but still possible to read content tables.
+	  Handle empty element correctly in some places.
+	  Handle Fragment mode (read up XmlReader to the end).
+	* DataSet.cs : Modified InferXmlSchema() and ReadXml() to use
+	  XmlDataInferenceLoader and XmlDataReader.
+
+2004-05-06  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataSet.cs :
+	  Eliminated CRLF injection.
+	  More clear message in Clear().
+	  Updates reflecting XmlSchemaDataImporter change.
+	  Added duplicate check for XmlSerializerNamespaces in BuildSchema().
+	  Don't use xmlns attribute for UnhandledAttributes (its not mandatory
+	  but that depends on different behavior from ms.net).
+	  Set locale also for DataTable.
+	  Add xs:element only when target namespace matches to the
+	  element's namespace. Otherwise, add xs:import for external namespace.
+	  Put xs:sequence for dataset element's particle _only when_ actual
+	  contents exist.
+
+2004-05-06  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* XmlDataReader.cs : Added. This class will work better when our
+	  schema inference and schema read engine gets improved. (It contains
+	  standalone testable Driver class.)
+
+2004-05-06  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* ForeignKeyConstraint.cs : Check step change. Existence then column
+	  validity. just for tests.
+	* XmlSchemaDataImporter.cs : code simplification. reduced extraneous
+	  fields.
+
+2004-05-05  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataSet.cs : Ignore empty content only when output type is diffgram.
+
+2004-05-05  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* CustomDataClassGenerator.cs : Modified that DataSet contains each
+	  DataTable field so that each table property can access them directly.
+	  (plus, modified standalone code driver code: shouldn't affect)
+
+2004-05-05  Boris Kirzner  <borisk at mainsoft.com>
+
+	* DataView.cs , DataRowView.cs : Added implementation to basic methods and properties.
+	  
+2004-05-05  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* XmlSchemaDataImporter.cs : 
+	  SimpleContent column support.
+	  Annotated relation support.
+	  Top-level element is counted only when its type is complex.
+	  xs:anyType is no longer treated as complex type.
+	  dataset existence is mandatory now. 
+	  Improved DataType and DefaultValue support.
+	  Attribute namespace is properly handled now.
+	  Prohibited attribute is now treated as hidden column.
+	  Reject list or union simple type.
+
+	  Still incomplete 1) to read relationship in some cases, 2) to 
+	  determine whether an element is dataset or table, 3) thus to
+	  exclude extraneous column, 4) to remove extraneous *_Id column.
+
+2004-05-05  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataTable.cs :
+	  We had better reuse DataSet's ReadXmlSchema() and ReadXml() in
+	  serialization .ctor() (thus schema read/inference should be easier).
+	  DataRowSorter should consider Table's Locale.
+
+2004-05-05  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataColumnCollection.cs : We already had AutoIncrementValue(), so
+	  use it instead of duplicating logic.
+
+2004-05-05  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* ConstraintCollection.cs :
+	  Use Table.CaseSensitive and Table.Locale to compare strings.
+	  Duplicate constraint name exception does not occur under .NET 1.1.
+
+2004-05-04  Lluis Sanchez Gual  <lluis at ximian.com>
+
+	* XmlSchemaDataImporter.cs: Added little type check.
+
+2004-05-04  Lluis Sanchez Gual  <lluis at ximian.com>
+
+	* DataSet.cs: Implemented support for runtime serialization. Fixed support
+	  for xml serialization.
+	* XmlDiffLoader.cs: Skip diffgram element when it is empty.
+
+2004-04-30  Umadevi S  <sumadevi at novell.com>
+	* DataColumnCollection.cs : Fixed nunit test errors, removed TODOs
+	* DataTableCollection.cs  : Tested and removed TODO
+	* TypedDataSetGeneratorException.cs : Fixed a couple of TODOs	
+
+2004-04-29  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataRow.cs : My previous patch unintentionally reverted Boris patch.
+
+2004-04-29  Boris Kirzner <borisk at mainsoft.com>
+
+	* UniqueConstraint.cs : Constraint columns becaomes unique after adding constraint ifand only if 
+	constraint is defined on single column.
+
+2004-04-29  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataRowCollection.cs : .NET 1.1 throws InvalidConstaintException,
+	  not ArgumentException (maybe changed after 1.1).
+
+2004-04-29  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataRow.cs : When Column was added and it was AutoIncrement column,
+	  it extended the item object array incorrectly.
+	  (Plus tiny comment and incorrect indentation fix.)
+
+2004-04-29  Boris Kirzner <borisk at mainsoft.com>
+
+	* MergeManager.cs : added ( incomplete yet ) support for merging DataSet schema.
+
+2004-04-29  Boris Kirzner <borisk at mainsoft.com>
+
+	* DataRow.cs : Bug fix in CopyValuesToRow().
+	
+2004-04-29  Boris Kirzner <borisk at mainsoft.com>
+
+	* UniqueConstraint.cs : There is no reason to mark constraint's columns as unique, because
+	  each of the columns should not be unique, but only all the constraint's columns together.
+	
+2004-04-28  Boris Kirzner <borisk at mainsoft.com>
+	* DataRow.cs :
+	  - Perfomance fixes: 
+		- Added using of list of autoIncrement columns
+		- SetColumnValue receives also DataColumn to avoid duplicate lookup in DatacolumnCollection
+	  - Fix in CheckNullConstraints
+	  - Fix in this[] and HasVersion() : when evaluating an expression deleted rows values can be accessed.
+	  - Fix in SetColumnValue() , added CanAccess() method to avoid case of accessing internal array values berore it actually allocated.
+	  - Added onColumnRemoved() method to threat column removal accurately.
+	
+	* DataRowCollection.cs :
+	  - Added using of DataRow._nullConstraintViolation (for perfomance fix in EndLoadData())
+	  - Added method onColumnRemoved() - calls each row's onColumnRemoved() (to ensure column removal is treated accurately)
+	
+	* DataTable.cs :
+	  - Call DataRowCollection.onColumnRemoved() in OnRemoveColumn() (to ensure column removal is treated accurately)
+	
+	* DataColumnCollection.cs :
+	  - Perfomance fixes :
+		- collection holds a list of its autoIncrement columns (avoids unnesessary lookup through whole collection)
+		- collection holds mapping from column names to DataColumn objects (avoids lookup through whole collection).
+		- automatic creation of column names rewrited (bug fixes + perfomance improvement)
+	
+	* DataColumn.cs :
+	  - Uses autoincrement list of a table
+
+2004-04-27  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* XmlDataLoader.cs : Even when it should ignore schema, it was 
+	  infering schema.
+	* XmlSchemaDataImporter.cs : DataRelation creation support.
+	  Improved "DataSet" element handing. When attributes are on the
+	  element, it is not a "DataSet" element.
+	  Fixed parent key column name.
+	  Unique name creation is not required. Just raise an error.
+	  Fill facet also for attribute types.
+
+2004-04-27  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataRow.cs : Null check for CheckReadOnlyStatus() and
+	  CheckNullConstraints(), with some coding guideline fixes.
+	  Type check should be done by Type instance comparison.
+
+2004-04-27  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataColumnCollection.cs : When add a column to the collection, fill
+	  auto-increment column.
+
+2004-04-26  Boris Kirzner <borisk at mainsoft.com>
+
+	* DataColumn.cs : Small perfomance fix (avoid unnesessary string concatenation).
+	
+2004-04-26  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* CustomDataClassGenerator.cs : Added.
+	* TypedDataSetGenerator.cs : Implemented Generate().
+	  Changed GenerateIdName() to call CustomDataClassGenerator.MakeSafeName
+	* XmlSchemaDataImporter.cs : Table Locale should be supplied.
+
+2004-04-25  Boris Kirzner <borisk at mainsoft.com>
+
+	* DataTable.cs : Small perfomance fix (avoid unnesessary string concatenation).
+	
+2004-04-25  Boris Kirzner <borisk at mainsoft.com>
+
+	* Constraint.cs : Small perfomance fix (avoid unnesessary string concatenation).
+
+2004-04-23 Umadevi S (sumadevi at novell.com)
+	*  DataRow.cs: Checked BeginEdit,EndEdit,CancelEdit and Delete methods
+	   - Added error handling to the above methods
+
+2004-04-22  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataSet.cs : Data should be read when mode is IgnoreSchema (well,
+	  the support is incomplete yet).
+	* XmlDataLoader.cs : 
+	  Reverted ReadModeSchema() argument change. XmlReadMode would be 
+	  useful to handle IgnoreSchema.
+	  Don't overwrite DataSetName when mode is not such kind.
+	  Set Prefix and Namespace as well as DataSetName.
+	  AllowDBNull looks set false by default for element column.
+	  Set unique constraint as primary key when infering the table schema.
+
+2004-04-21  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataSet.cs : 
+	  Never set null string for Prefix and Namespace.
+	  In InferXmlSchema() when null XmlReader is passed, just do nothing.
+	  In WriteXmlSchema(string), earlier try block.
+	  In BuildSchema(), try to add serialization namespaces for each
+	  namespaces in DataSet/DataTable/DataColumn.
+	  Removed namespace argument from WriteColumnAsElement() and don't
+	  overwrite when namespace is "". This fixes bug #57330.
+	* DataColumn.cs : For Namespace and Prefix, never set null.
+
+2004-04-21  Boris Kirzner <borisk at mainsoft.com>
+
+	* XmlSchemaMapper.cs : Check for not null unique constraint in ReadXmlSchemaKeyref()
+	  before creating and adding foreign key constraint and relation. 
+
+2004-04-21  Boris Kirzner <borisk at mainsoft.com>
+
+	* MergeManager.cs : In AdjustSchema() source table clone should be added
+	  and not the table itself. 
+
+2004-04-21  Boris Kirzner <borisk at mainsoft.com>
+
+	* DataSet.cs : 
+	  - CaseSensitive : Additional fix (removed unnesessary assignment).
+	  - CopyProperties : Do not try to copy ExtendedProperties if the collection is empty.
+
+2004-04-21  Boris Kirzner <borisk at mainsoft.com>
+
+	* DataTable.cs : Ensure that DataSet property is not null before using it in Clear().
+	  
+2004-04-20  Boris Kirzner <borisk at mainsoft.com>
+
+	* DataTable.cs : 
+	  - EndLoadData() : perfomance fix in case of null constraint violation
+	    during data load (also in DataRow.cs).
+	  - CaseSensitive : If DataTable belongs to DataSet it should always use
+	    DataSet.CaseSensitive untill explicitly changed.
+	  - CopyProperties() : do not try to copy ExtendedProperties if the collection is empty.
+	  
+	* DataRow.cs :
+	  - Pefromance fix in case of null constraint violation
+	    during data load (also in DataTable.cs).
+	  - CollectionChanged() : use correct column number after new DataColumn was added
+	    (differs in case some DataColumn was previosly removed).
+	  - EndEdit() - throw away  proposed values only after CheckChildRows() complete.
+
+2004-04-20  Boris Kirzner <borisk at mainsoft.com>
+
+	* DataColumnCollection.cs : Since unique constraint is added now
+	  in DataColumn.SetTable() the additional creation of constraint in 
+	  DataColumnCollection.Add() is redundant and causes exception - fixed.
+	  
+2004-04-19  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* XmlDataLoader.cs : Added "never add data rows" mode.
+	  Removed unused code. However, it is temporary fixes to unify
+	  ReadXml() and InferXmlSchema().
+	* DataSet.cs : Implemented InferXmlSchema(), though it is incomplete.
+
+	  I'll create another XmlDataLoader since there are many problems
+	  such that 1) it is too waste to read the entire xml into an
+	  XmlDocument, 2) it does not handle attributes correctly, and 3) it
+	  must handle "ignored namespaces".
+
+2004-04-19  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* Added XmlSchemaDataImporter.cs (new schema reader).
+	* DataSet.cs : Use XmlSchemaDataImporter (right now for DataSet only)
+	  for ReadXmlSchema().
+	  Let schema reading work to ReadXmlSchema().
+	  Don't return ReadSchema when argument read mode was DiffGram.
+
+2004-04-15 Umadevi S (sumadevi at novell.com)
+	*  Updated Clone/Copy methods in DataSet along with Testcase
+	*  ForeignKeyConstraint.cs - special ctor implemented 
+	    Logic : ParentTable in the ctor - Since only name is given (not the DataTable object), we cannot associate any DataTable or DataSet right now.  So, only possible way is to do it when AddRange() is called. The ParentTable is searched in the DataSet  to which the calling DataTable belongs. And make the calling DataTable as ChildTable. In the PostAddRange() method check is addedd to perform the assignment of parent and child data columns once the information becomes available (When AddRange is called).
+	* Changes in  ConstraintCollection.cs for the above
+        Add (Constraint) - A check is performed to see if the constraint is ForeignKeyConstraint and whether data columns  are validated.  If no, whether it is called with AddRange(), If no, an Exception is thrown. AddRange() - PostAddRange() is called on the ForeignKeyConstraint object with the "table" as argument. Thanks to Deepak for the patch.
+	
+
+2004-04-15  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* XmlSchemaMapper.cs : set parent key and foreign key info to 
+	  DataRelation when reading refkey constraints.
+	  Supply constraint name for fkey.
+
+2004-04-15  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* XmlDataLoader.cs : Don't overwrite existing DataSetName. When read
+	  mode is Auto, just ignore the schema if there is already schema info.
+	* DataSet.cs : Similarly ignore schema info for XmlReadMode = Auto.
+
+2004-04-14  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataSet.cs :
+	  - In MS output, XML declaration looks to have standalone decl (yes).
+	  - ReadXml(reader) just calls to ReadXml(reader, XmlReadMode.Auto)
+	  - ReadXml(reader, mode)
+	    1) return originally specified mode, instead of (always) Auto. 
+	    2) Check empty reader.
+	    3) Check diffgram schema and content separately.
+	    4) When diffgram exists, remaining (the same-level) contents 
+	       won't be consumed. 
+	    5) Similar fact should be applied, but somewhat different. 
+	       InferSchema and IgnoreSchema just skips, Fragment reads both
+	       schema and content, others just reads schema.
+	  - Removed unused code.
+	* XmlDataLoader.cs :
+	  - Read() should skip in some ReadMode.
+	  - Don't compare schema element name as case-insensitive (well,
+	    should schemas be checked here?)
+	  - Avoided BuildDocument() not to create confusing DataSet
+	    document element.
+	  - Don't add any tables when reader has single element.
+	* XmlDiffLoader.cs :
+	  When target table was not found, MS.NET doesn't raise an error.
+	* XmlSchemaMapper.cs :
+	  When XmlSchema.Read() left xml reader at </xs:schema>, read once.
+
+2004-04-13  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* DataSet.cs :
+	  - InferXmlSchema(): Throw explicit NotImplementedException now.
+	  - Don't put XML declaration everywhere. Write just for filename arg.
+	  - xmlns="" should not be written. Maybe WebService problem is 
+	    because default namespace is overwritten. This patch will keep
+	    the WS problem away and actually fixes some unit tests (i.e. use
+	    explicit String.Empty for null namespace in WriteStartElement()).
+	  - MoveToContent() should always be called, not only when 
+	    LocalName="xml". It will ignore prolog (DTD, PI, comment etc.).
+	  - Even XmlReadMode is DiffGram, reader might not be "diffgram"
+	    element. As to MSDN, diffgram does not contain schema.
+
+2004-04-13  Gonzalo Paniagua Javier <gonzalo at ximian.com>
+
+	* DataTable.cs: made _initStatus private so that System.Data is CLS
+	compliant.
+
+2004-04-13 Umadevi S   <sumadevi at novell.com>
+	*  UniqueConstraint.cs:
+	*  ConstraintCollection.cs:
+	*  DataTable.cs:
+	- Implemented a Constructor for UniqueConstraint.cs
+	- Used  EndInit on DataTable  to call a delegate which adds the
+	  constraints passed to the most recent call of AddRange().Used
+	  AddRange() on ConstraintCollection to check whether
+	  DataTable.BeginInit has occurred.  If yes, save the argument
+	  constraint collection passed, then return.  If no, Check whether the
+	  constraints are of type UniqueConstraint and initialized with the
+	  special constructor  If yes Initialized the table property of this
+	  UniqueConstraint object with table assosciated with the current
+	  instance of ConstraintCollection class.
+
+2004-04-07  Marek Safar  <marek.safar at seznam.cz>
+
+	* Constraint.cs: changed ClsCompliant to CLSCompliant, build fix.
+
+2004-04-06  Gonzalo Paniagua Javier <gonzalo at ximian.com>
+
+	* Constraint.cs:
+	* DataColumnCollection.cs:
+	* DataRelationCollection.cs:
+	* DataRowCollection.cs:
+	* DataTableCollection.cs:
+	* InternalDataCollectionBase.cs:
+	* Node.cs: CLS compliance for System.Data. Patch by Gert Driesen.
+	Fixes bug #56557.
+
+2004-04-05  Jackson Harper  <jackson at ximian.com>
+
+	* DataTable.cs: Add rows to the row list if there is no filter.
+	
+2004-03-31  Juraj Skripsky <juraj at hotfeet.ch>
+
+	* DataColumn.cs : Setting Caption to null sets it to the empty string
+	(ms.net behaviour, testcase is in DataColumnTest).
+	
+	* DataRow.cs : Evaluate DataColumn.Expression when such a column's
+	value is requested.
+
+2004-03-30 Lluis Sanchez Gual <lluis at ximian.com>
+
+	* DataColumn.cs: In Expression setter, set the expression member even if 
+	  it is an empty string.
+	* DataSet.cs: Support serialization of byte[] columns.
+	* XmlDataLoader.cs: Support deserialization  of Guid columns. 
+	  Set MappingType.Attribute to columns infered from attributes.
+
+2004-03-29  Juraj Skripsky <juraj at hotfeet.ch>
+
+	* ExpressionElements.cs : remove
+	* DataColumn.cs, DataRelationCollection.cs, DataTable.cs :
+	Integration of new Mono.Data.SqlExpressions classes used in
+	DataTable.{Select, Compute}.
+	Fixes bug #55503 and lots of failures in DataTableTest.cs.
+
+2004-03-28  Juraj Skripsky <juraj at hotfeet.ch>
+
+	* Index.cs: Simple fix in ComparePartialRowNonUnique.
+	This fixes bugs #56129 and #56014.
+
+2004-03-25 Lluis Sanchez Gual <lluis at ximian.com>
+
+	* DataSet.cs: In WriteXml (string filename, XmlWriteMode mode), close the
+	  stream after writing the dataset. This fixes bug #52581.
+	  Also added several writer.Close into finally blocks, so writers are properly
+	  closed in case of an exception.
+
+2004-03-12  Andreas Nahr <ClassDevelopment at A-SoftTech.com>
+
+	* Constraint.cs: DO NOT USE the consts scheme if types can be referenced directly!
+	* DataColumn.cs: DO NOT USE the consts scheme if types can be referenced directly!
+	* ColumnTypeConverter.cs: Added stub
+	* DefaultValueTypeConverter: Added stub
+	* ConstraintConverter.cs: Added stub
+
+2004-03-04 Eran Domb <erand at mainsoft.com>
+
+	* XmlDataLoader.cs : Xml reading reviewed. Added support for additional xml formats as described
+	in MS.NET documentation (missing DataSet element etc).
+
+2004-03-04 Eran Domb <erand at mainsoft.com>
+
+	* Node.cs : Added.
+	* Index.cs : Rollback last changes.
+	
+2004-03-03  Atsushi Enomoto <atsushi at ximian.com>
+
+	* Index.cs : justa build fix.
+
+2004-03-03 Eran Domb <erand at mainsoft.com>
+	
+	* Index.cs : Added.
+	* Constraint.cs, ForeignKeyConstraint.cs, UniqueConstraint, ConstraintCollection.cs, DataColumn.cs,
+	DataRow.cs, DataRowCollection.cs, DataSet.cs, DataTable.cs : Changes made for using indexes on tables.
+	This changes made for performance improvement.
+
+2004-02-08 Eran Domb <erand at mainsoft.com>
+
+	* XmlSchemaMapper.cs : Read columns is they were written as SimpleContent or as Attributes.
+
+2004-02-08 Eran Domb <erand at mainsoft.com>
+
+	* DataSet.cs: Fix some bugs in ReadXml().
+
+2004-02-04 Lluis Sanchez Gual <lluis at ximian.com>
+
+	* DataSet.cs: Added missing method that broke the build.
+
+2004-02-04 Eran Domb <erand at mainsoft.com>
+
+	* DataRowCollection.cs (InsertAt): Add a check for null row. Replace check of IndexOf with RowId for
+	better performance.
+	* DataSet.cs (GetTableSchema) : Add supprot for simple content columns. Change the condition for a case
+	when all column are attributes (elements count is 0), we still want to add the relations. No relations
+	can be on simple contents.
+	(AddUniqueConstraints) Check that the column of the constraint are not hidden.
+	(AddForeignKeys) Check that the relation has constraints attach to it.
+	* XmlConstants.cs : Added constant.
+
+2004-02-04 Eran Domb <erand at mainsoft.com>
+	
+	* DataSet.cs : GetSchemaSerializable() return null and not BuildSchema().
+	DoWriteXmlSchema calls BuildSchema ().
+
+2004-02-04 Lluis Sanchez Gual <lluis at ximian.com>
+
+	* DataRow.cs: Added SetOriginalValue(), which is used to set the original
+	  value of a column.
+	* DataRowCollection.cs: In InsertAt(), perform the correct checks and
+	  attach the row.
+	* DataSet.cs: Fixed method GetChanges(): Parent rows of modified rows must
+	  also be added to the dataset.
+	  In WriteTable(), do not write unchanged rows when writing the original
+	  version of the table.
+	  Added WriteIndividualTableContent(), for writing the contents of a single
+	  table.
+	  Changed BuildSchema and related methods, so it can generate a schema for
+	  any set of tables, not just the tables of the dataset (needed for 
+	  single datatable serialization).
+	* DataTable.cs: Implemented serialization constructor and GetObjectData method.
+	  Also implemented some ReadXmlSchema methods.
+	* XmlDiffLoader.cs: Read and process the xml document directly from XmlReader,
+	  instead of loading the full dataset in an XmlDocument. It is faster and
+	  saves memory. Also fixed several problems when generating the changes.
+	* XmlSchemaMapper.cs: Support reading schemas for single tables (used by
+	  table serialization).
+
+2004-02-02 Eran Domb <erand at mainsoft.com>
+
+	* DataSet.cs : Add indentation to the xml serialization only if we create the XmlWriter.
+	Add the namespace attribute even if namespace is an empty string for inteoperability with MS.NET.
+	* DataTable.cs (NewRow): Create only one DataRowBuilder.
+	Initiate new row with row id -1.
+	* DataRow.cs : Add RowId property.
+	* DataRowBuilder.cs : Add _rowId member.
+	* DataRowCollection.cs (Add) : Use the RowId property of the new row to check if it is already exists in the collection.
+
+2004-01-26 Eran Domb <erand at mainsoft.com>
+
+	* XmlConstants.cs : Added some constants.
+	* DataColumn.cs : Added a method to retrive AutoIncrement value.
+	* XmlDataLoader.cs : Set the value of the foriegn key column, according to the value of the
+	parent table column.
+	* XmlDiffLoader.cs : Convert the value comming from the xml.
+	* XmlSchemaMapper.cs (Read) : Set the DataSet namespace.
+	 (ReadXmlSchemaSequence) : Change the logic that decides if this element is a column or a table.
+	 (ReadXmlSchemaElement) : Set the locale of the dataset.
+	 (ReadColumn) : Set the column type. Find if the column is AutoIncrement.
+	 (GetColumnType) : New method to get the column type from the attribute value.
+	 (ReadXmlSchemaUnique) : Improve parsing of XPath. Set the constraint as a PK if needed,
+	 and add the constraint to the table.
+	 (ReadXmlSchemaKeyref) : Improve parsing of XPath. Create the FK constraint and add it to
+	 the table.
+	* DataSet.cs : Improving writing of unique constraints, and foriegn key constraint. Givving them the correct names.
+	 Writing more information to the schema for interoperability with ms.net.
+	 Improve diffgarm writing mode.
+	 
+
+2004-01-21 Atsushi Enomoto <atsushi at ximian.com>
+
+	* TypedDataSetGenerator.cs : Implemented GenerateIdName().
+
+2004-01-21 Eran Domb <erand at mainsoft.com>
+
+	* XmlDataLoader.cs (AddRowToTable) : Give thre new relation correct name.
+	Do not set the child column to be AutoIncrement.
+	Create the new column for the relation as MappingType.Hidden so they will not be serialized
+	when writing the dataset to xml.
+
+2004-01-20 Atsushi Enomoto <atsushi at ximian.com>
+
+	* Added missing TypedDataSetGenerator.cs.
+
+2004-01-08 Eran Domb <erand at mainsoft.com>
+
+	* XmlSchemaMapper.cs : Fix a bug. Check if table already in DataSet before adding it.
+	* DataSet.cs (ReadXml) : Fix bugs. Read correctly the xml file with XmlReadMode of DiffGram, 
+	InferSchema, ReadSchema and IgnoreSchema.
+	* XmlDataLoader.cs : All modes use the same logic.
+	* XmlDiffLoader.cs : Adding BuildXmlDocument method to the class.
+
+2004-01-06 Eran Domb <erand at mainsoft.com>
+
+	* DataRelationCollection.cs : Use IndexOf in indexer.
+	* DataSet.cs : Adding support for WriteXml with diffgram. Code style changes.
+	* XmlDataLoader.cs : Set the DataSet.enforceConstraints to false before loading the tables.
+	* XmlDiffLoader.cs : Reading nested tables.
+	* XmlSchemaMapper.cs : Reading the relation.
+	* XmlConstants.cs : Adding some constants.
+
+2004-01-05  Jackson Harper <jackson at ximian.com>
+
+	* DataView.cs: Set readonly property of property descriptor. This
+	fixes bug #52598.
+	
+2004-01-01  Sanjay Gupta <gsanjay at novell.com>
+
+	* DataRelationCollection.cs : Fixed incorrect generation of default 
+	  Relation name.
+	* DataSet.cs : Added missing functionality in WriteXml().
+        * XmlConstants.cs : Added new constants.
+ 
+2003-12-27  Atsushi Enomoto <atsushi at ximian.com>
+
+	* DataSet.cs : Fixed incorrect WriteXml() signature.
+
+2003-12-18  Jackson Harper <jackson at ximian.com>
+
+	* DataView.cs: Implement AddNew, Delete, and OnListChanged.
+	
+2003-12-17  Atsushi Enomoto <atsushi at ximian.com>
+
+	* DataSet.cs, XmlDataLoader.cs : Table name should be encoded before
+	  they take shape of xml. This fixed bug #52240
+
+2003-12-16  Tim Coleman <tim at timcoleman.com>
+	* KeyRestrictionBehavior.cs:
+		New stubs added for .NET 1.2
+	* DataTable.cs:
+		Changes for 1.2
+
+2003-12-08 Eran Domb <erand at mainsoft.com>
+	* DataColumn.cs (Expression) : Validate the expression.
+	
+	* DataRelationCollection.cs (IndexOf) : Added new method sensetive to case differences in relation name.
+	(Contains, IndexOf, this[], Add) : Call new IndexOf when needed.
+	
+	* DataRow.cs (this[]) : Fix the condition for throwing RowNotInTableException.
+	(RejectChanges) : Detach row when state was Added.
+	(CollectionChanged) : Fix a bug.
+	
+	* ExpressionElement (ValidateExpression) : Fix a bug.
+	
+	* ForeignKeyConstraint.cs (AssertConstraint) : Added implementation. Check all rows from child table have
+	a parent row in the parent table.
+	(_validateColumns) : Fix bugs.
+	
+	* MergeManager.cs (AdjustSchema) : Fix a bug.
+	
+	* XmlDataLoader.cs (ReadModeInferSchema) : Change implementation. Now we can read nested xml, and we generate the relations
+	between the tables.
+
+2003-11-30 Eran Domb <erand at mainsoft.com>
+	* DataColumnCollection.cs (this[string name]) : Use IndexOf to find the column.
+	(Add) : Find if the new column name is the same as the one found in IndexOf.
+	(IndexOf) : New method.
+	(Contains) : Use new IndexOf.
+	(IndexOf) : Use new IndexOf.
+	
+	* DataRelationCollection.cs (DataRelationCollection.AddCore) : Add The Relation to the collection.
+	(DataSetRelationCollection.AddCore) : First add the UniqueConstraint.
+	
+	* DataRow.cs (this[int columnIndex, DataRowVersion version]) : Change exceptions.
+	(Delete) : Detach row if the RowState was Added.
+	(GetChildRows) : Get the array form the ChildTable.
+	(GetParentRows) : Get the array from the ParenTable.
+	
+	* DataRowCollection.cs (Remove) : Check if row state is Detached to avoid exception.
+	
+	* DataSet.cs (IXmlSerializable.ReadXml) : Do not call MoveToContent and ReadEndElement - the XmlSerializationReader does it.
+	
+	* DataTable.cs (PrimaryKey) : Fix bugs.
+	(Compute) : First call Select. Then create ExpressionAggregate to aggregate the Select result.
+	
+	* DataTableCollection.cs (Add) : Fix a bug.
+	
+	* ExpressionElement.cs (ValidateExpression) : Turning ValidateExpression to static.
+	(Result) : Added new interface to AggregateExpression that get DataRow[] as a param.
+	Some code style changes (tab instead of whit spaces, alignment, etc...).
+	
+	* ForeignKeyConstraint.cs (_validateColumns) : Throw correct exception.
+	
+	* MergeManager.cs (AdjustSchema) : Fix a bug.
+	
+	
+
+2003-11-26  Miguel de Icaza  <miguel at ximian.com>
+
+	* DataSet.cs: Add a few more missing methods, code style updated
+	to Mono style.
+
+2003-11-26  Tim Coleman <tim at timcoleman.com>
+	
+	* ConflictOptions.cs DataAdapterException.cs DataTableReader.cs
+	* DbMetaData.cs FillOptions.cs IDataReader2.cs IDataRecord2.cs
+	* IDataUpdatableRecord.cs IDbAsyncCommand.cs IDbAsyncConnection.cs
+	* IDbExecutionContext.cs IGetTypedData.cs ISetTypedData.cs
+	* LoadOption.cs OperationAbortedException.cs ResultSetOptions.cs
+	* ResultSetSensitivity.cs StatementCompletedEventArgs.cs 
+	* StatementCompletedEventHandler.cs UpdateOptions.cs:
+		New classes added for NET_2_0
+	* DBConcurrencyException.cs DataRelation.cs DataSet.cs DataTable.cs
+	* DataTableCollection.cs DataView.cs ForeignKeyConstraint.cs:
+		Modifications to add new NET_2_0 functions
+
+2003-11-25  Tim Coleman <tim at timcoleman.com>
+	* IDataSources.cs:
+		New 1.2 class added
+
+2003-11-21  Pedro Martinez Julia  <yoros at wanadoo.es>
+
+	* DataRow.cs: Detached row can be accesible (new rows from data
+	table are detached). Closes but #51263.
+
+2003-11-19  Eran Domb  <erand at mainsoft.com>
+	* DataRow.cs : Throw exceptions if Row is Detached. 
+	(EndEdit) : Check that we are not in middle of ChangeEvent.
+	(AcceptChanges) : Detach the row.
+	
+	* DataRelation.cs : throw correct exception.
+	*UniqueConstraint.cs : throw correct exception.
+	
+
+2003-11-09  Pedro Martinez Julia  <yoros at wanadoo.es>
+
+	* DataRow.cs: Use RemoveInternal instead of Remove because the last
+	one uses Delete and AcceptChanges.
+
+	* DataRowCollection.cs: When removing, Delete and AcceptChanges
+	method from the row are called. Added an internal method that will
+	be used by DataRow to "physically" remove the row from the list.
+
+2003-11-09  Pedro Martinez Julia  <yoros at wanadoo.es>
+
+	* DataRowCollection.cs: To follow the specification: Remove and
+	RemoveAt should remove the row. But needed to call DeletingDataRow
+	to prepare the deleting.
+
+	* DataRow.cs: Don't call DeletingDataRow when it is called by the
+	method Table.Rows.Remove.
+
+2003-11-09  Pedro Martinez Julia  <yoros at wanadoo.es>
+
+	* DataRowCollection.cs: Make the row be deleted by itself. If not,
+	it fails because we need to call OnRowDeleting and OnRowDeleted. It
+	is full implemented inside DataRow.
+
+2003-11-05  Eran Domb  <erand at mainsoft.com>
+	* DataView.cs (ctor) : Changing default RowStateFilter to CurrentRow.
+
+2003-11-04  Eran Domb  <erand at mainsoft.com>
+	* DataRow.cs (CheckChildRows) : Improving the implementation - checking child for all FK, and not
+	on all Relations.
+	(GetChildRows) : Adding some checks.
+	(GetParentRows) : Adding some checks. Fix a bug in implementation.
+	(SetParentRow) : Added implementation.
+	
+	* DataRowCollection.cs (Add) : Added more checks on the row added to the collection.
+	* DataTable.cs (Copy) : Set the During Loading flag to save unnecessary assertions.
+	* ForeignKeyConstraint.cs (AssertConstraint) : Fixing bugs in implementation. Checking for DBNull values in the row.
+	* MergeManager.cs : Check that the target table is not null.
+
+2003-10-27  Eran Domb  <erand at mainsoft.com>
+	* DataColumn.cs (DefaultValue) : Changing null value to DBNull. Checking that the type of the new default value 
+	can be converted to the column type.
+	
+	* DataRelationCollection.cs (AddCore) : Give the new FK the name of the relation.
+	
+	* DataRow.cs (EndEdit) : Check if we need to validate the constraints.
+	(GetParentRows, GetChildRows) : Checking that the row has the wanted version, before accessing the row's value.
+	
+	* DataRowCollection.cs (Add) : Fixing a bug. 
+	(Clear) : Before clearing the array check that there is no violation of FK constraint.
+	
+	* DataSet.cs (Prefix) : If value is null chage it to empty string.
+	(GetXml) : Removing the Processing Instructions from the xml string as in MS ADO.NET.
+	
+	* ExpressionElement : Adding support for IN expresion.
+	
+	* DataTable (CopyConstraints) : New method that copy the tables constraints to the copy table.
+	(Select) : Adding support for DataViewwRowState.
+	
+	* ForeignKeyConstraint.cs (AssertConstraint) : Adding implementation.
+	
+	* MergeManager.cs (MergeRow) : Fix bugs.
+	
+2003-10-27  Eran Domb  <erand at mainsoft.com>
+	* DataRow.cs (SetColumnValue): Donot check null value when in midle of loading data.
+	check null values when ending loading data.
+	
+	* DataSet.cs (RejectChanges) : Imlementation.
+	(Prefix) : If prefix was changed fire event. Check that the prefix is not null - if null, 
+	change it to empty string.
+	
+	* DataTable.cs (BeginLoadData, EndLoadData) : Impemantation.
+	
+2003-10-22  Eran Domb  <erand at mainsoft.com>
+	* MergeManager.cs : Fixing bugs. Adding check for PrimaryKey matching.
+	
+	* ConstraintCollection.cs (RamoveAt): Change implemntation.
+	
+	* DataTableCollection (CanRemove): Removing cast to Constraint.
+
+2003-10-22  Eran Domb  <erand at mainsoft.com>
+	* DataRelationCollection.cs (AddCore): The unique constraint was added even if the createConstraints flag was false.
+	(Clear): The collection was cleared without removing the relation from the parent and child tables.
+	
+	* DataSet.cs (Copy, Clone): The Relations of the DataSet were not copy.
+	(HasChanges, Reset): Imlementation.
+	
+	* DataTable.cs (HasErrors): There is no flag for errors, instead the table ask her row if they have any errors.
+	This is because the we do not no when to turn off the flag.
+	(Locale): Changing implementation to behave like ADO.NET.
+	(AcceptChanges): Fix bug.
+	(Clear): Check that this table is not referenced from a foreign key constraint.
+	(Copy): Do not try to access a deleted row.
+	(CopyProperties): Copy the PrimaryKey.
+	(GetChanges, ImportRow): Implementation.
+	(LoadDataRow): Adding implementation if the table has PrimaryKey.
+	(ToString): Changing implementation to behave like ADO.NET.
+	
+	* UniqueConstraint.cs (AssertConstraint): support for Multiple DataColumns in the constraint.
+	
+	* DataRow.cs (Ctor): In the constructor we initiate the current array, but we should initiate only the proposed array for new rows.
+	(HasErrors): Implementation.
+	(Delete): Added checking for child rows of the deleted row.
+	(EndEdit): Added checking for child row and firing events.
+	(GetColumnError): Added a check that the method will not return null, as in ADO.NET(an empty string is returned).
+	(GetColumnsInError): Added a check for null values in column error.
+	(HasVersion): Added special treatment for special RowState.
+	(CollectionChanged): More checks to avoid NullReferenceException.
+	
+	* DataRowCollection.cs (Remove): Fix a bug.
+
+
+2003-10-01  Duncan Mak  <duncan at ximian.com>
+
+	More patches from Eran Domb <erand at mainsoft.com>.
+
+	* MergeManager.cs: New file.
+
+	* DataRelationCollection.cs (AddCore): Check that a
+	UniqueConstraint is already exists. It loops over the Relations
+	instead of the Constraints.
+	(Add, AddCore): The relation was added twice.
+
+	* DataSet.cs (Merge, GetChanges, HasChanges): Implemented.	
+
+2003-09-30  Duncan Mak  <duncan at ximian.com>        
+
+	Patches from Eran Domb <erand at mainsoft.com>.
+
+	* DataRelation.cs (constructor): When the name of the relation is
+	null, it should return an empty, not "Relation".
+	
+	* DataRow.cs (AcceptChanges): Added special case for
+	RowState.Detached.
+	(CancelEdit): Set editing flag to false.
+	(IsNull): Check that the value is DBNull.
+
+	* DataRowCollection.cs (Add): There was no check that the table of
+	the collection is owned by a DataSet.
+
+	* DataSet.cs (OnMergeFailed): Added.	
+
+	* UniqueConstraint.cs (AssertConstraint): There was no check that
+	values in the row are not null, where it is a primary key
+	column. Also check that the row has a proposed version, if not,
+	get the current version when we compare the rows.
+
+2003-09-25  Duncan Mak  <duncan at ximian.com>
+
+        Patches from Eran Domb <erand at mainsoft.com>.
+
+	* DataColumn.cs (Unique): Implemented.
+	
+	* DataTable.cs:
+	* ConstraintCollection.cs:
+	* ForeignKeyConstraint.cs (_ensureUniqueConstraintExists): Fixes
+	an Exception thrown. Details:
+	http://lists.ximian.com/archives/public/mono-devel-list/2003-September/002130.html
+	
+	* DataRowCollection.cs (Add): There is no checking that there is
+	no violation of the unique constrains.
+
+	* UniqueConstraint.cs (AssertConstraint): There is no checking on
+	all columns in the constraint.
+
+	* DataTableCollection (Add): Correctly throw an Exception, more
+	details here:
+	http://lists.ximian.com/archives/public/mono-devel-list/2003-September/002117.html
+	(Remove, RemoveAt): Implemented.
+
+2003-07-31  Duncan Mak  <duncan at ximian.com>
+
+	* DBConcurrencyException.cs: Added new NET_1_1 no-param constructor.
+
+2003-07-25  Ravi Pratap  <ravi at ximian.com>
+
+	* DataRelation.cs (OnPropertyChanging): Calling the 'Invoke'
+	method on a delegate is disallowed - fix this.
+
+2003-07-22  Lluis Sanchez Gual  <lluis at ximian.com>
+
+	* DataSet.cs: Implemented IXmlSerializable interface. Added basic support for
+	  xml serialization. Modified method of writing schema. Now it creates
+	  a XmlSchema object and serializes it using XmlSerializer.
+	* XmlConstants.cs: Added constants for data type names.
+	* XmlDataLoader.cs: Fixed deserialization of data. Now converts data to the
+	  type specified in the column.
+
+2003-04-20  Alan Tam <Tam at SiuLung.com>
+
+	* DataRelationCollection.cs: Fix a bug that prevent relations
+	from being added via DataSet.
+
+2003-04-12  Ville Palo <vi64pa at kolumbus.fi>
+
+	* UniqueConstraint.cs: one tiny fix.
+	
+2003-04-05  Ville Palo <vi64pa at kolumbus.fi>
+
+	* DataTable.cs: Remove UniqueConstraints when adding new ones
+	
+2003-04-04  Ville Palo <vi64pa at kolumbus.fi>
+
+	* DataColumnCollection.cs: Little 'case sensitive' fix
+	
+2003-04-04  Ville Palo <vi64pa at kolumbus.fi>
+
+	* DataRow.cs: AutoIncrement handling to Constructor
+	* DataRowCollection.cs: This doesnt need anymore AutoIncrements
+	
+2003-03-27  Ville Palo <vi64pa at kolumbus.fi>
+
+	* DataTable.cs: Some fixes to PrimaryKey etc...
+	* UniqueConstraint.cs: Little clean up
+	
+2003-03-27  Ville Palo <vi64pa at kolumbus.fi>
+
+	* DataTable.cs: Tiny fix to ToString () -method
+	
+2003-03-27  Ville Palo <vi64pa at kolumbus.fi>
+
+	* ConstraintCollection.cs: Little fix.
+	* DataColumn.cs: Added new internal method SetUnique()
+	* UniqueConstraint.cs: some little fixes
+	
+2003-03-26  Ville Palo <vi64pa at kolumbus.fi>
+
+	* DataRowCollection.cs: Bugfixes, implementation,...
+	
+2003-03-26  Ville Palo <vi64pa at kolumbus.fi>
+
+	* DataColumn.cs: If DataType if set to something else than short, int
+	or long and AutoIncrement is true, AutoIncrement is must set to false.
+	
+2003-03-26  Gonzalo Paniagua Javier <gonzalo at ximian.com>
+
+	* DataRow.cs:
+	(BeginEdit): fixed array bound problem when a column has been added.
+	(EndEdit): just assign proposed to current as proposed is set to null.
+	This also fixes another array boudn problem.
+
+2003-03-21  Alan Tam <Tam at SiuLung.com>
+
+	* DataRow.cs: Fixed problems in accessers, BeginEdit, CancelEdit,
+	EndEdit and AcceptChanges to act correctly according to DataRowState
+	and DataRowVersion.
+	* DataRowCollection.cs: Call AttachRow and DetachRow when a row is
+	attached and detached from the collection.
+
+2003-03-20  Alan Tam <Tam at SiuLung.com>
+
+	* DataColumn.cs: Store empty string for Expression when null is passed in.
+	Classes generated by XSD.exe passes null by default.
+
+2003-03-16  Ville Palo <vi64pa at kolumbus.fi>
+
+	* DataColumnCollection.cs: Tiny clean up
+
+2003-03-16  Ville Palo <vi64pa at kolumbus.fi>
+
+	* DataColumn.cs: little fixes.
+	* DataColumnCollection.cs: Lots of little fixes and improvments.
+	
+2003-03-12  Alan Tam <Tam at SiuLung.com>
+
+	* DataSet.cs: Fixed a bug that the file written does not close correctly.
+
+2003-03-08  Alan Tam <Tam at SiuLung.com>
+
+	* DataRelationCollection.cs: Removed the mis-overridden methods
+	* DataRow.cs: Fixed an attribute
+	* DataSet.cs: Fixed the modifiers
+
+2003-03-06  Aleksey Demakov <avd at openlinksw.com>
+
+	* DataTableCollection.cs: The Contains (string name),
+	IndexOf (string name) methods, and item[string name] indexer
+	now behave more like .NET with respect to case-sensitivity.
+	That is if there is an exactly matching item then this one is used.
+	If there is only one item differing in case then it used.
+	If there are more than one item differing in case then
+	Contains returns false, IndexOf returns -1, and item[]
+	throws an ArgumentException.
+
+2003-02-28  Ville Palo <vi64pa at kolumbus.fi>
+
+	* ExpressionElement.cs: More implementation. 
+	
+2003-02-28  Alan Tam <Tam at SiuLung.com>
+	* DataSet.cs: Changed WriteTable so that it now calls the newly written
+	WriteObjectXml to direct the call to the respective XmlConvert method.
+	This fixes the wrong format written to XML files of bool, float,
+	double, DateTime and TimeSpan types.
+
+2003-02-25  Alan Tam <Tam at SiuLung.com>
+
+	* DataRelation.cs: Added SetDataSet for DataSetRelationCollection to use.
+	* DataRelationCollection.cs: Implemented AddRange and Contains.
+	Implemented AddRange, Clear, List and RemoveCore for DataSetRelationColletion.
+	Implemented AddCore, List and RemoveCore for DataTableRelationCollection.
+	Reimplemented most Add methods to eliminate duplicated checks.
+	Centralized RelationName generation procedure in GetNextDefaultRelationName.
+
+2003-02-25  Alan Tam <Tam at SiuLung.com>
+
+	* DataColumn.cs: Fixed wrong storage representation of Expression
+	(using empty string instead of null) so that ToString() returns nothing.
+	* DataColumnCollection.cs: Reimplemented GetNextDefaultColumnName so that
+	auto column naming now works as expected. Reimplemented some Add methods
+	to eliminate code duplication.
+
+2003-02-19  Ville Palo <vi64pa at kolumbus.fi>
+
+	* DataTable.cs: DataTable.CaseSensitive follows parent 
+	DataSet.CaseSensitive property if DataTable.CaseSensitive has never
+	been changed directly from DataTable
+	
+2003-02-19  Ville Palo <vi64pa at kolumbus.fi>
+
+	* DataSet.cs: When CaseSensitive property is changed all of the Tables
+	of DataSet have to change too
+	
+2003-02-19  Daniel Morgan <danmorg at sc.rr.com>
+
+	* InternalDataCollectionBase.cs: revert change to field
+	to fix build
+	
+	* DataViewManager.cs
+	* DataView.cs
+	* DataTable.cs
+	* DataSet.cs: commented use of DesignerAttribute
+	because it broke the build.  According to MSDN,
+	DesignerAttribute does not have a zero-argument constructor
+
+2003-02-18  Ville Palo <vi64pa at kolumbus.fi>
+
+	* DataColumnCollectin.cs: Little fix for indexer and case sensitivity
+	
+2003-02-18  Alan Tam <Tam at SiuLung.com>
+
+	* DataRow.cs: Implemented GetParentRow and GetParentRows.
+	* DataSet.cs: Added stub for HasChanges, InferXmlSchema,
+		      OnPropertyChanging, OnRemoveRelation, OnRemoveTable,
+		      RaisePropertyChanging.
+	* DataTable.cs: Implemented NewRowArray.
+	* DataTablePropertyDescriptor: Fixed a modifier.
+	* InternalDataCollectionBase.cs: Fixed modifiers. Implemented SyncRoot.
+	* PropertyCollection.cs: Minor fix.
+	* ConstraintCollection.cs DataColumn.cs DataColumnCollection.cs 
+	* DataRelation.cs DataRelationCollection.cs DataRow.cs
+	* DataRowCollection.cs DataRowState.cs DataSet.cs DataTable.cs
+	* DataTableCollection.cs DataTablePropertyDescriptor.cs DataView.cs
+	* DataViewManager.cs DataViewRowState.cs DataViewSettingCollection.cs
+	* ForeignKeyConstraint.cs InternalDataCollectionBase.cs
+	* PropertyCollection.cs UniqueConstraint.cs: Added missing attributes
+	
+2003-02-08  Ville Palo <vi64pa at koti.soon.fi>
+
+	* ExpressionElement.cs: More implementation
+	
+2003-02-05  Alan Tam <Tam at SiuLung.com>
+
+	* DataSet.cs: Added framework for DataSet.Update Implemented missing 
+	methods GetSchemaSerializable, GetSerializationData, 
+	ReadXmlSerializable, ShouldSerializeRelations and ShouldSerializeTables
+	for DataSet
+	* DataTable.cs: Implemented missing methods CreateInstance and 
+	GetRowType for DataTable
+	
+2003-02-03  Ville Palo <vi64pa at koti.soon.fi>
+
+	* DataSet.cs: Implemented private method MapType for 
+	mapping datatypes for XmlSchema
+	
+2003-02-03  Gonzalo Paniagua Javier <gonzalo at ximian.com>
+
+	* DataView.cs: implemented Dispose.
+
+2003-01-30  Ville Palo <vi64pa at koti.soon.fi>
+
+	* ExpressionElement.cs: Added new file. This file is for parsing
+	  and DataData.Select () -methods and DataColumn.Expression -property
+	* DataTable.cs: Implemented Select(string) -method	
+	
+2003-01-28  Ville Palo <vi64pa at koti.soon.fi>
+
+	* DataSet.cs: One little fix to writing xml
+	
+2003-01-27  Ville Palo <vi64pa at koti.soon.fi>
+
+	* XmlSchemaMapper.cs: Some fixes.
+	* DatSet.cs: Some XmlFixes and BeginInit ()/ EndInit () -fix
+
+		
+2003-01-24  Ville Palo <vi64pa at koti.soon.fi>
+
+	* UniqueConstraint.cs: Do not set columns Unique property true 
+	as a default.
+	* ForeignKeyConstraint.cs: Add UniqueConstraint to parent Table
+	
+2003-01-18  Ville Palo <vi64pa at koti.soon.fi>
+
+	* DataTableCollection.cs: Now names new DataTable if it doesn't 
+	already have a name.
+	
+2003-01-17  Ville Palo <vi64pa at koti.soon.fi>
+
+	* XmlSchemaMapper.cs: Improvments.
+	* XmlConstaints.cs: Added more constants.
+	* DataSet.cs: Improvments of reading and writing xml
+	* DataColumn.cs: Added default values of properties.
+		
+2003-01-14  Ville Palo <vi64pa at koti.soon.fi>
+
+	* XmlSchemaMapper.cs: Some improvments
+	
+2003-01-13  Ville Palo <vi64pa at koti.soon.fi>
+
+	* DataRowCollection.cs: Added IndexOutOfRangeException
+	* DataTableCollection.cs: Added OnCollectionChanging and 
+	OnCollectionChanged events.
+	* DataSet.cs: Many fixes. Implemented Clone () and Copy () -methods
+	* DataTable.cs: Implemented Copy () and Clone () methods.
+	* XmlDataLoader.cs: some fixes.
+	* XmlSchemaMapper.cs: comments.
+	
+2003-01-08  Gonzalo Paniagua Javier <gonzalo at ximian.com>
+
+	* DataColumnPropertyDescriptor.cs: store columnIndex in the .ctor.
+
+2003-01-08  Gonzalo Paniagua Javier <gonzalo at ximian.com>
+
+	* DataColumnPropertyDescriptor.cs: fixed typo.
+	* DataViewManagerListItemTypeDescriptor.cs: added new internal property
+	to get the DataViewManager and removed TablePD class.
+	* DataTablePropertyDescriptor.cs: TablePD class is now this one as
+	suggested by danmorg.
+
+2003-01-06  Ville Palo <vi64pa at koti.soon.fi>
+
+	* XmlDataLoader.cs: Moved diffgram stuff to new internal class
+	XmlDiffLoader.
+	* XmlDiffLoader.cs: new class for diffgrams. Added handling of 
+	diffgr:Errors and some fixes and changed XmlReader to XPathNavigator.
+	
+2003-01-06  Gonzalo Paniagua Javier <gonzalo at ximian.com>
+
+	* DataView.cs: made dataViewManager internal.
+	* DataViewManager.cs: use ICustomTypeDescriptor. We don't want the
+	properties of the object, but the values of the columns present in a
+	row.
+	
+	* DataViewManagerListItemTypeDescriptor.cs: implemented GetProperties,
+	which returns a PropertyDescriptorCollection. Created a new class
+	derived from PropertyDescriptor that treats Table as an object whose
+	properties are DataRowView.
+
+2003-01-04  Ville Palo <vi64pa at koti.soon.fi>
+
+	* XmlSchemaMapper.cs: Added handling for Constraints, Attributes.
+	
+2003-01-04  Ville Palo <vi64pa at koti.soon.fi>
+
+	* DataColumn.cs: ExtendedProperties is by default !null-
+	
+2003-01-04  Ville Palo <vi64pa at koti.soon.fi>
+
+	* DataColumnCollection.cs: Add (DataColumn Column) -method didn't 
+	set column's ordinal.
+	
+2003-01-02  Ville Palo <vi64pa at koti.soon.fi>
+
+	* DataSet.cs: 
+	* XmlDataLoader.cs: XmlReader closing fixes.
+	* XmlSchemaReader.cs: Added support for ref=
+	
+2003-01-01  Ville Palo <vi64pa at koti.soon.fi>
+
+	* DataSet.cs: 
+	  - Added XmlReader and XmlWriter Closing.
+	  - Moved ReadXmlSchema stuff to new internal class XmlSchemaMapper.
+	* XmlSchemaMapper.cs
+	  - Much better way IMHO  to map xmlschema than the old one in 
+	    DataSet.cs. Its, more flexible, cleaner, ...
+	   		
+2002-12-29  Ville Palo <vi64pa at koti.soon.fi>
+
+	* XmlDataLoader.cs: Reading diffgrams.
+	
+2002-12-29  Ville Palo <vi64pa at koti.soon.fi>
+
+	* DataRow.cs: Little fix to indexer and DataColumnCang* trigger fixes.
+	* DataTable.cs: Added ChanginDataColumn () for triggering 
+	DataColumnChanging event
+	
+2002-12-28  Ville Palo <vi64pa at koti.soon.fi>
+
+	* DataSet.cs: Indentations to WriteXmlSchema () and one little fix
+	
+2002-12-28  Ville Palo <vi64pa at koti.soon.fi>
+
+	* DataSet.cs: Indentations to WriteXml ()
+	
+2002-12-27  Ville Palo <vi64pa at koti.soon.fi>
+
+	* DataSet.cs:
+	* XmlDataLoader.cs: Moved ReadXml -stuff from DataSet.cs to new
+	class XmlDataLoader.cs
+	
+2002-12-19  Ville Palo <vi64pa at koti.soon.fi>
+
+	* DataSet.cs Implemented ReadXml with XmlReadMode.ReadSchema
+	
+2002-12-18  Ville Palo <vi64pa at koti.soon.fi>
+
+	* DataSet.cs: Started to implement ReadXml-methods.
+	
+2002-12-17  Gonzalo Paniagua Javier <gonzalo at ximian.com>
+
+	* DataSet.cs: implemented DefaultViewManager and GetList.
+
+	* DataViewManager.cs: a bit of work on IList and ITypedList needed by
+	DataList in System.Web.
+
+	* DataViewManagerListItemTypeDescriptor.cs: custom type descriptor for
+	DataViewManager.
+
+2002-12-16  Ville Palo <vi64pa at koti.soon.fi>
+
+	* DataRow.cs
+	* DataTable.cs: Fixed NullException (rollback -event)
+	* DataSet.cs: WriteXml -method does not anymore write <?xml... row.
+	
+2002-12-15  Ville Palo <vi64pa at koti.soon.fi>
+
+	* DataRow.cs:
+	* DataRowCollection.cs: Moved event triggering from DataRow to
+	DataRowCollection.
+	
+2002-12-09  Ville Palo <vi64pa at koti.soon.fi>
+
+	* DataSet.cs: Little fix to WriteTable () -method 
+	and DoReadXmlSchema () -method.
+	
+2002-12-06  Ville Palo <vi64pa at koti.soon.fi>
+
+	* DataSet.cs: Clean up to reading xmlschema. This looks much better 
+	now (work better too), but it not working correctly yet.
+	
+2002-12-04  Ville Palo <vi64pa at koti.soon.fi>
+
+	* DataRow.cs: 
+	* DataRowCollection.cs: Added some event handlins stuff.
+	* DataSet.cs: Some fixes.
+	* DataTable.cs: Added event handlers.
+	
+2002-11-30  Ville Palo <vi64pa at koti.soon.fi>
+
+	* DataRowChangeEventArgs.cs: Implemented Action and Row properties 
+	
+2002-11-30  Ville Palo <vi64pa at koti.soon.fi>
+
+	* System.Data/DataRow.cs: Added internal property XmlDataID
+	
+2002-11-29  Ville Palo <vi64pa at koti.soon.fi>
+
+	* DataSystem.Data.DataTableCollection.cs:
+	Removed HashTable. There could be situations where DataTable
+	is added to collection before it hava TableName. So using 
+	HashTable is impossible.
+	
+2002-11-19  Carlos Guzman Alvarez <carlosga at telefonica.net>
+
+	* DataRow.cs: an object that is equal to null 
+	should be allowed to be set in this indexer too
+	to be like .NET
+
+2002-11-06  Daniel Morgan <danmorg at sc.rr.com>
+
+	* DataColumnPropertyDescriptor.cs: added file
+	
+	* System.Data/DataRowView.cs: started implementation
+	
+	* DataTable.cs: stubbed more interfaces.  Implemented
+	IListSource.GetList()
+	
+	* DataView.cs: stubbed more interfaces.  Implemented
+	some properties and methods: GetEnumerator(), 
+	ITypedList.GetItemProperties, Item indexer, CopyTo()
+
+2002-05-18  Nick Drochak  <ndrochak at gol.com>
+
+	* DataRow.cs: Fix typo.
diff --git a/mcs/class/System.Data/System.Data/DataColumn.cs b/mcs/class/System.Data/System.Data/DataColumn.cs
index f5d84c5..95667fc 100644
--- a/mcs/class/System.Data/System.Data/DataColumn.cs
+++ b/mcs/class/System.Data/System.Data/DataColumn.cs
@@ -704,6 +704,13 @@ namespace System.Data {
 			// Use the property to set the expression as it updates compiledExpression, if any.
 			copy.Expression = _expression;
 			//Copy.ExtendedProperties
+			if (_extendedProperties.Count > 0) {
+				Array extPropArray = Array.CreateInstance (typeof (object), _extendedProperties.Count);
+				_extendedProperties.CopyTo (extPropArray, 0);
+				for (var i = 0; i < _extendedProperties.Count; i++)
+					copy.ExtendedProperties.Add (extPropArray.GetValue(i), 
+					                             ExtendedProperties[extPropArray.GetValue(i)]);
+			}
 			copy._maxLength = _maxLength;
 			copy._nameSpace = _nameSpace;
 			copy._prefix = _prefix;
@@ -715,7 +722,6 @@ namespace System.Data {
 			if (DataType == typeof (DateTime))
 				copy.DateTimeMode = _datetimeMode;
 #endif
-			copy._extendedProperties = _extendedProperties;
 
 			return copy;
 		}
diff --git a/mcs/class/System.Data/System.Data/XmlSchemaDataImporter.cs b/mcs/class/System.Data/System.Data/XmlSchemaDataImporter.cs
index f151afa..829cf13 100644
--- a/mcs/class/System.Data/System.Data/XmlSchemaDataImporter.cs
+++ b/mcs/class/System.Data/System.Data/XmlSchemaDataImporter.cs
@@ -535,6 +535,14 @@ namespace System.Data
 						attr.NamespaceURI == XmlConstants.MsdataNamespace)
 						useCurrent = true;
 #endif
+
+					if (attr.NamespaceURI == XmlConstants.MspropNamespace && 
+					    !dataset.ExtendedProperties.ContainsKey(attr.Name))
+					{
+						dataset.ExtendedProperties.Add (attr.Name, attr.Value);
+						continue;
+					}
+					
 					if (attr.LocalName == "Locale" &&
 						attr.NamespaceURI == XmlConstants.MsdataNamespace) {
 						CultureInfo ci = new CultureInfo (attr.Value);
@@ -593,6 +601,13 @@ namespace System.Data
 			// Find Locale
 			if (el.UnhandledAttributes != null) {
 				foreach (XmlAttribute attr in el.UnhandledAttributes) {
+
+					if (attr.NamespaceURI == XmlConstants.MspropNamespace)
+					{
+						table.ExtendedProperties.Add (attr.Name, attr.Value);
+						continue;
+					}
+
 					if (attr.LocalName == "Locale" &&
 						attr.NamespaceURI == XmlConstants.MsdataNamespace)
 						table.Locale = new CultureInfo (attr.Value);
@@ -783,6 +798,12 @@ namespace System.Data
 		{
 			if (obj.UnhandledAttributes != null) {
 				foreach (XmlAttribute attr in obj.UnhandledAttributes) {
+					if (attr.NamespaceURI == XmlConstants.MspropNamespace)
+					{
+						col.ExtendedProperties.Add (attr.Name, attr.Value);
+						continue;
+					}
+
 					if (attr.NamespaceURI != XmlConstants.MsdataNamespace)
 						continue;
 					switch (attr.LocalName) {
@@ -1265,14 +1286,14 @@ namespace System.Data
 				if (e == null)
 					continue;
 				
-#if !MONOTOUCH
+#if !MOBILE
 				if (e.LocalName == "Connections" && (firstChild = e.FirstChild as XmlElement) != null) {
 					providerName = firstChild.GetAttribute ("Provider");
 					connString = firstChild.GetAttribute ("AppSettingsPropertyName");
 					provider = DbProviderFactories.GetFactory (providerName);
 					continue;
 				}
-#endif // !MONOTOUCH
+#endif
 				// #325464 debugging
 				//Console.WriteLine ("ProviderName: " + providerName + "Connstr: " + connString);
 				
diff --git a/mcs/class/System.Data/System.Data/XmlSchemaWriter.cs b/mcs/class/System.Data/System.Data/XmlSchemaWriter.cs
index 4a94e6e..ae107ef 100644
--- a/mcs/class/System.Data/System.Data/XmlSchemaWriter.cs
+++ b/mcs/class/System.Data/System.Data/XmlSchemaWriter.cs
@@ -734,12 +734,12 @@ namespace System.Data
 			//                            XmlConstants.MsdataNamespace, 
 			//                            col.Ordinal.ToString ());
 
+			AddExtendedPropertyAttributes (col.ExtendedProperties);
+
 			// Write SimpleType if column have MaxLength
 			if (col.MaxLength > -1)
 				WriteSimpleType (col);
 
-			AddExtendedPropertyAttributes (col.ExtendedProperties);
-
 			w.WriteEndElement (); // sequence
 		}
 
diff --git a/mcs/class/System.Data/Test/System.Data/ChangeLog b/mcs/class/System.Data/Test/System.Data/ChangeLog
index 8efa86e..da23a8f 100644
--- a/mcs/class/System.Data/Test/System.Data/ChangeLog
+++ b/mcs/class/System.Data/Test/System.Data/ChangeLog
@@ -1,3 +1,7 @@
+2010-10-01  Veerapuram Varadhan  <v.varadhan at gmail.com>
+	
+	* DataSetReadXmlTest.cs: Added new test for #582732.
+	
 2010-07-23  Veerapuram Varadhan  <v.varadhan at gmail.com>
 
 	* DataColumnTest.cs (B623451_SetOrdinalTest): Added new.
diff --git a/mcs/class/System.Data/Test/System.Data/DataSetReadXmlTest.cs b/mcs/class/System.Data/Test/System.Data/DataSetReadXmlTest.cs
index dd050fc..6a63a23 100644
--- a/mcs/class/System.Data/Test/System.Data/DataSetReadXmlTest.cs
+++ b/mcs/class/System.Data/Test/System.Data/DataSetReadXmlTest.cs
@@ -784,5 +784,45 @@ namespace MonoTests.System.Data
 				XmlReadMode.Auto, XmlReadMode.IgnoreSchema,
 				"NewDataSet", 1);
 		}
+		
+		[Test]
+		public void DataSetExtendedPropertiesTest()
+		{
+			DataSet dataSet1 = new DataSet();
+			dataSet1.ExtendedProperties.Add("DS1", "extended0");
+			DataTable table = new DataTable("TABLE1");
+			table.ExtendedProperties.Add("T1", "extended1");
+			table.Columns.Add("C1", typeof(int));
+			table.Columns[0].MaxLength = 10;
+			table.Columns.Add("C2", typeof(string));
+			table.Columns[0].MaxLength = 20;
+			table.Columns[0].ExtendedProperties.Add("C1Ext1", "extended2");
+			table.Columns[1].ExtendedProperties.Add("C2Ext1", "extended3");
+			dataSet1.Tables.Add(table);
+			table.LoadDataRow(new object[]{1, "One"}, false);
+			table.LoadDataRow(new object[]{2, "Two"}, false);
+			try {
+				dataSet1.WriteXml("Test/System.Data/schemas/test.xml", XmlWriteMode.WriteSchema);
+			}
+			catch (Exception ex) {
+				Assert.Fail ("DSExtPropTest failed: WriteXml failed with : "+ex.Message);
+			} finally {
+				File.Delete ("Test/System.Data/schemas/test.xml");
+			}
+			
+			DataSet dataSet2 = new DataSet();
+			dataSet2.ReadXml("Test/System.Data/schemas/b582732.xml", XmlReadMode.ReadSchema);
+			Assert.AreEqual (dataSet1.ExtendedProperties["DS1"], dataSet2.ExtendedProperties["DS1"],
+			                 "DSExtProp#1: DS extended properties mismatch");
+						
+			Assert.AreEqual (dataSet1.Tables[0].ExtendedProperties["T1"], dataSet2.Tables[0].ExtendedProperties["T1"],
+			                 "DSExtProp#2: DS Table extended properties mismatch");
+			Assert.AreEqual (dataSet1.Tables[0].Columns[0].ExtendedProperties["C1Ext1"], 
+			                 dataSet2.Tables[0].Columns[0].ExtendedProperties["C1Ext1"],
+			                 "DSExtProp#3: DS Table Column 1 extended properties mismatch");
+			Assert.AreEqual (dataSet1.Tables[0].Columns[1].ExtendedProperties["C2Ext1"], 
+			                 dataSet2.Tables[0].Columns[1].ExtendedProperties["C2Ext1"],
+			                 "DSExtProp#4: DS Table Column 2 extended properties mismatch");
+		}
 	}
 }
diff --git a/mcs/class/System.Data/monotouch_System.Data.dll.sources b/mcs/class/System.Data/mobile_System.Data.dll.sources
similarity index 100%
copy from mcs/class/System.Data/monotouch_System.Data.dll.sources
copy to mcs/class/System.Data/mobile_System.Data.dll.sources
diff --git a/mcs/class/System.Data/monodroid_System.Data.dll.sources b/mcs/class/System.Data/monodroid_System.Data.dll.sources
new file mode 100644
index 0000000..bbc860b
--- /dev/null
+++ b/mcs/class/System.Data/monodroid_System.Data.dll.sources
@@ -0,0 +1 @@
+#include mobile_System.Data.dll.sources
diff --git a/mcs/class/System.Data/monotouch_System.Data.dll.sources b/mcs/class/System.Data/monotouch_System.Data.dll.sources
index 64ad3df..bbc860b 100644
--- a/mcs/class/System.Data/monotouch_System.Data.dll.sources
+++ b/mcs/class/System.Data/monotouch_System.Data.dll.sources
@@ -1,274 +1 @@
-Assembly/AssemblyInfo.cs
-../../build/common/Consts.cs.in
-../../build/common/Locale.cs
-System.Data/AcceptRejectRule.cs
-System.Data/ColumnTypeConverter.cs
-System.Data/CommandBehavior.cs
-System.Data/CommandType.cs
-System.Data/ConnectionState.cs
-System.Data/ConflictOption.cs
-System.Data/Constraint.cs
-System.Data/ConstraintCollection.cs
-System.Data/ConstraintConverter.cs
-System.Data/ConstraintException.cs
-System.Data/DataCategoryAttribute.cs
-System.Data/DataColumn.cs
-System.Data/DataColumnChangeEventArgs.cs
-System.Data/DataColumnChangeEventHandler.cs
-System.Data/DataColumnCollection.cs
-System.Data/DataColumnPropertyDescriptor.cs
-System.Data/DataException.cs
-System.Data/RelatedDataView.cs
-System.Data/RelationshipConverter.cs
-System.Data/DataRelation.cs
-System.Data/DataRelationCollection.cs
-System.Data/DataRelationPropertyDescriptor.cs
-System.Data/DataRow.cs
-System.Data/DataRowAction.cs
-System.Data/DataRowBuilder.cs
-System.Data/DataRowChangeEventArgs.cs
-System.Data/DataRowChangeEventHandler.cs
-System.Data/DataRowCollection.cs
-System.Data/DataRowState.cs
-System.Data/DataRowVersion.cs
-System.Data/DataRowView.cs
-System.Data/DataSet.cs
-System.Data/DataSetDateTime.cs
-System.Data/DataSysDescriptionAttribute.cs
-System.Data/DataTable.cs
-System.Data/DataTableCollection.cs
-System.Data/DataTableClearEventArgs.cs
-System.Data/DataTableClearEventHandler.cs
-System.Data/DataTableTypeConverter.cs
-System.Data/DataTablePropertyDescriptor.cs
-System.Data/DataTableReader.cs
-System.Data/DataTableNewRowEventArgs.cs
-System.Data/DataTableNewRowEventHandler.cs
-System.Data/DataView.cs
-System.Data/DataViewManager.cs
-System.Data/DataViewManagerListItemTypeDescriptor.cs
-System.Data/DataViewRowState.cs
-System.Data/DataViewSetting.cs
-System.Data/DataViewSettingCollection.cs
-System.Data/DBConcurrencyException.cs
-System.Data/DbType.cs
-System.Data/DefaultValueTypeConverter.cs
-System.Data/DeletedRowInaccessibleException.cs
-System.Data/DuplicateNameException.cs
-System.Data/EvaluateException.cs
-System.Data/FillErrorEventArgs.cs
-System.Data/FillErrorEventHandler.cs
-System.Data/ForeignKeyConstraint.cs
-System.Data/IColumnMapping.cs
-System.Data/IColumnMappingCollection.cs
-System.Data/IDataAdapter.cs
-System.Data/IDataParameter.cs
-System.Data/IDataParameterCollection.cs
-System.Data/IDataReader.cs
-System.Data/IDataRecord.cs
-System.Data/IDbCommand.cs
-System.Data/IDbConnection.cs
-System.Data/IDbDataAdapter.cs
-System.Data/IDbDataParameter.cs
-System.Data/IDbTransaction.cs
-System.Data/InRowChangingEventException.cs
-System.Data/InternalDataCollectionBase.cs
-System.Data/InvalidConstraintException.cs
-System.Data/InvalidExpressionException.cs
-System.Data/ISafeDataRecord.cs
-System.Data/IsolationLevel.cs
-System.Data/ITableMapping.cs
-System.Data/ITableMappingCollection.cs
-System.Data/KeyRestrictionBehavior.cs
-System.Data/LoadOption.cs
-System.Data/MappingType.cs
-System.Data/MergeFailedEventArgs.cs
-System.Data/MergeFailedEventHandler.cs
-System.Data/MergeManager.cs
-System.Data/MissingMappingAction.cs
-System.Data/MissingPrimaryKeyException.cs
-System.Data/MissingSchemaAction.cs
-System.Data/Node.cs
-System.Data/NoNullAllowedException.cs
-System.Data/OperationAbortedException.cs
-System.Data/ParameterDirection.cs
-System.Data/PropertyAttributes.cs
-System.Data/PropertyCollection.cs
-System.Data/ReadOnlyException.cs
-System.Data/ResDescriptionAttribute.cs
-System.Data/RowNotInTableException.cs
-System.Data/Rule.cs
-System.Data/SchemaType.cs
-System.Data/SerializationFormat.cs
-System.Data/SchemaSerializationMode.cs
-System.Data/SqlDbType.cs
-System.Data/StateChangeEventArgs.cs
-System.Data/StateChangeEventHandler.cs
-System.Data/StatementCompletedEventArgs.cs
-System.Data/StatementCompletedEventHandler.cs
-System.Data/StatementType.cs
-System.Data/StrongTypingException.cs
-System.Data/SyntaxErrorException.cs
-../../build/common/MonoTODOAttribute.cs
-System.Data/TableAdapterSchemaInfo.cs
-System.Data/TypeDataSetGeneratorException.cs
-System.Data/UniqueConstraint.cs
-System.Data/UpdateRowSource.cs
-System.Data/UpdateStatus.cs
-System.Data/VersionNotFoundException.cs
-System.Data/XmlDataInferenceLoader.cs
-System.Data/XmlHelper.cs
-System.Data/XmlDataReader.cs
-System.Data/XmlReadMode.cs
-System.Data/XmlWriteMode.cs
-System.Data/XmlConstants.cs
-System.Data/XmlDiffLoader.cs
-System.Data.Common/CatalogLocation.cs
-System.Data.Common/ComparerFactory.cs
-System.Data.Common/DataAdapter.cs
-System.Data.Common/DataColumnMappingCollection.cs
-System.Data.Common/DataColumnMapping.cs
-System.Data.Common/DataColumnMappingConverter.cs
-System.Data.Common/DataContainer.cs
-System.Data.Common/DataTableMappingCollection.cs
-System.Data.Common/DataTableMapping.cs
-System.Data.Common/DataTableMappingConverter.cs
-System.Data.Common/DbCommandBuilder.cs
-System.Data.Common/DbConnectionStringBuilder.cs
-System.Data.Common/DbConnectionStringBuilderHelper.cs
-System.Data.Common/DbCommand.cs
-System.Data.Common/DbConnection.cs
-System.Data.Common/DbConnectionOptions.cs
-System.Data.Common/DbConnectionString.cs
-System.Data.Common/DbDataAdapter.cs
-System.Data.Common/DbDataPermissionAttribute.cs
-System.Data.Common/DbDataPermission.cs
-System.Data.Common/DbDataReader.cs
-System.Data.Common/DbDataRecord.cs
-System.Data.Common/DbDataSourceEnumerator.cs
-System.Data.Common/DbEnumerator.cs
-System.Data.Common/DbException.cs
-System.Data.Common/DbMetaDataCollectionNames.cs
-System.Data.Common/DbMetaDataColumnNames.cs
-System.Data.Common/DbParameterCollection.cs
-System.Data.Common/DbParameter.cs
-System.Data.Common/DbProviderFactory.cs
-System.Data.Common/DbProviderSpecificTypePropertyAttribute.cs
-System.Data.Common/DbTable.cs
-System.Data.Common/DbTransaction.cs
-System.Data.Common/DbTypes.cs
-System.Data.Common/ExceptionHelper.cs
-System.Data.Common/FieldNameLookup.cs
-System.Data.Common/GroupByBehavior.cs
-System.Data.Common/IdentifierCase.cs
-System.Data.Common/Index.cs
-System.Data.Common/Key.cs
-System.Data.Common/PermissionHelper.cs
-System.Data.Common/RecordCache.cs
-System.Data.Common/RowUpdatedEventArgs.cs
-System.Data.Common/RowUpdatingEventArgs.cs
-System.Data.Common/SchemaInfo.cs
-System.Data.Common/SchemaTableColumn.cs
-System.Data.Common/SchemaTableOptionalColumn.cs
-System.Data.Common/SupportedJoinOperators.cs
-System.Data.SqlTypes/INullable.cs
-System.Data.SqlTypes/SqlBinary.cs
-System.Data.SqlTypes/SqlBoolean.cs
-System.Data.SqlTypes/SqlByte.cs
-System.Data.SqlTypes/SqlBytes.cs
-System.Data.SqlTypes/SqlChars.cs
-System.Data.SqlTypes/SqlCompareOptions.cs
-System.Data.SqlTypes/SqlDateTime.cs
-System.Data.SqlTypes/SqlDecimal.cs
-System.Data.SqlTypes/SqlDouble.cs
-System.Data.SqlTypes/SqlGuid.cs
-System.Data.SqlTypes/SqlInt16.cs
-System.Data.SqlTypes/SqlInt32.cs
-System.Data.SqlTypes/SqlInt64.cs
-System.Data.SqlTypes/SqlMoney.cs
-System.Data.SqlTypes/SqlNullValueException.cs
-System.Data.SqlTypes/SqlSingle.cs
-System.Data.SqlTypes/SqlString.cs
-System.Data.SqlTypes/SqlTruncateException.cs
-System.Data.SqlTypes/SqlTypeException.cs
-System.Data.SqlTypes/StorageState.cs
-System.Data.SqlTypes/SqlAlreadyFilledException.cs
-System.Data.SqlTypes/SqlNotFilledException.cs
-System.Data.SqlTypes/SqlXml.cs
-System.Data.Sql/SqlDataSourceEnumerator.cs
-System.Data.Sql/SqlNotificationRequest.cs
-Microsoft.SqlServer.Server/Format.cs
-Microsoft.SqlServer.Server/DataAccessKind.cs
-Microsoft.SqlServer.Server/IBinarySerialize.cs
-Microsoft.SqlServer.Server/InvalidUdtException.cs
-Microsoft.SqlServer.Server/SqlFunctionAttribute.cs
-Microsoft.SqlServer.Server/SqlMetaData.cs
-Microsoft.SqlServer.Server/SqlMethodAttribute.cs
-Microsoft.SqlServer.Server/SqlUserDefinedAggregateAttribute.cs
-Microsoft.SqlServer.Server/SqlUserDefinedTypeAttribute.cs
-Microsoft.SqlServer.Server/SystemDataAccessKind.cs
-Microsoft.SqlServer.Server/SqlFacetAttribute.cs
-Microsoft.SqlServer.Server/TriggerAction.cs
-Microsoft.SqlServer.Server/SqlTriggerContext.cs
-Microsoft.SqlServer.Server/SqlProcedureAttribute.cs
-Microsoft.SqlServer.Server/SqlTriggerAttribute.cs
-System.Data.SqlClient/SqlNotificationType.cs
-System.Data.SqlClient/SqlNotificationInfo.cs
-System.Data.SqlClient/SqlNotificationSource.cs
-System.Data.SqlClient/SqlAsyncState.cs
-System.Data.SqlClient/SqlAsyncResult.cs
-System.Data.SqlClient/SqlClientMetaDataCollectionNames.cs
-System.Data.SqlClient/SqlClientPermission.cs
-System.Data.SqlClient/SqlClientPermissionAttribute.cs
-System.Data.SqlClient/SqlCommand.cs
-System.Data.SqlClient/SqlCommandBuilder.cs
-System.Data.SqlClient/SqlConnection.cs
-System.Data.SqlClient/SqlConnectionStringBuilder.cs
-System.Data.SqlClient/SqlDataAdapter.cs
-System.Data.SqlClient/SqlDataReader.cs
-System.Data.SqlClient/SqlDataSourceConverter.cs
-System.Data.SqlClient/SqlDependency.cs
-System.Data.SqlClient/SqlError.cs
-System.Data.SqlClient/SqlErrorCollection.cs
-System.Data.SqlClient/SqlException.cs
-System.Data.SqlClient/SqlInfoMessageEventArgs.cs
-System.Data.SqlClient/SqlInfoMessageEventHandler.cs
-System.Data.SqlClient/SqlInitialCatalogConverter.cs
-System.Data.SqlClient/NetworkLibraryConverter.cs
-System.Data.SqlClient/SqlParameter.cs
-System.Data.SqlClient/SqlParameterCollection.cs
-System.Data.SqlClient/SqlParameterConverter.cs
-System.Data.SqlClient/SqlRowUpdatedEventArgs.cs
-System.Data.SqlClient/SqlRowUpdatedEventHandler.cs
-System.Data.SqlClient/SqlRowUpdatingEventArgs.cs
-System.Data.SqlClient/SqlRowUpdatingEventHandler.cs
-System.Data.SqlClient/SqlTransaction.cs
-System.Data.SqlClient/SqlXmlTextReader.cs
-System.Data.SqlClient/SQLDebugging.cs
-System.Data.SqlClient/SqlClientFactory.cs
-System.Data.SqlClient/SqlBulkCopy.cs
-System.Data.SqlClient/SqlBulkCopyOptions.cs
-System.Data.SqlClient/SqlBulkCopyColumnMapping.cs
-System.Data.SqlClient/SqlBulkCopyColumnMappingCollection.cs
-System.Data.SqlClient/SqlRowsCopiedEventHandler.cs
-System.Data.SqlClient/SqlRowsCopiedEventArgs.cs
-System.Data.SqlClient/SqlNotificationEventArgs.cs
-System.Data.SqlClient/OnChangeEventHandler.cs
-System.Data/XmlDataLoader.cs
-System.Data/XmlSchemaDataImporter.cs
-System.Data/XmlSchemaWriter.cs
-System.Data/XmlTableWriter.cs
-System.Xml/XmlDataDocument.cs
-Mono.Data.SqlExpressions/Tokenizer.cs
-Mono.Data.SqlExpressions/Numeric.cs
-Mono.Data.SqlExpressions/Expressions.cs
-Mono.Data.SqlExpressions/Literal.cs
-Mono.Data.SqlExpressions/ColumnReference.cs
-Mono.Data.SqlExpressions/ArithmeticExpressions.cs
-Mono.Data.SqlExpressions/BooleanExpressions.cs
-Mono.Data.SqlExpressions/Comparison.cs
-Mono.Data.SqlExpressions/StringFunctions.cs
-Mono.Data.SqlExpressions/Functions.cs
-Mono.Data.SqlExpressions/Like.cs
-Mono.Data.SqlExpressions/In.cs
-Mono.Data.SqlExpressions/Aggregation.cs
+#include mobile_System.Data.dll.sources
diff --git a/mcs/class/System.Drawing/System.Drawing/ChangeLog b/mcs/class/System.Drawing/System.Drawing/ChangeLog
index 7da80be..175caec 100644
--- a/mcs/class/System.Drawing/System.Drawing/ChangeLog
+++ b/mcs/class/System.Drawing/System.Drawing/ChangeLog
@@ -1,3 +1,36 @@
+2010-12-10  Ralph Leckett  <rleckett at gmail.com>
+
+	[System.Drawing] Remove unnecessary verbosity
+
+2010-12-10  Ralph Leckett  <rleckett at gmail.com>
+
+	[System.Drawing] On image load from stream errors, return null,
+	not an exception
+
+2010-12-09  Geoff Norton  <grompf at sublimeintervention.com>
+
+	Ensure we always save the GState, not just when the context is
+	flipped
+
+2010-12-06  Geoff Norton  <grompf at sublimeintervention.com>
+
+	Ensure we save and restore the gstate
+
+2010-12-05  Geoff Norton  <grompf at sublimeintervention.com>
+
+	Ensure we properly translate the CTM for NSView's when dealing
+	with flipped views
+
+	Patch from James Clancey <james.clancey at gmail.com>
+
+2010-11-19  Geoff Norton  <grompf at sublimeintervention.com>
+
+	Fix a potential NRE when using bitmap contexts
+
+2010-11-08  Marek Safar  <marek.safar at gmail.com>
+
+	API compatibility work
+
 2010-10-29  Geoff Norton  <grompf at sublimeintervention.com>
 
 	[OSX] Reintroduce Cocoa System.Drawing support
diff --git a/mcs/class/System.Drawing/System.Drawing/ComIStreamMarshaler.cs b/mcs/class/System.Drawing/System.Drawing/ComIStreamMarshaler.cs
index 4842d15..1abe9af 100644
--- a/mcs/class/System.Drawing/System.Drawing/ComIStreamMarshaler.cs
+++ b/mcs/class/System.Drawing/System.Drawing/ComIStreamMarshaler.cs
@@ -38,12 +38,8 @@ using System;
 using System.IO;
 using System.Reflection;
 using System.Runtime.InteropServices;
-#if NET_2_0
 using System.Runtime.InteropServices.ComTypes;
 using STATSTG = System.Runtime.InteropServices.ComTypes.STATSTG;
-#else
-using IStream = System.Runtime.InteropServices.UCOMIStream;
-#endif
 
 namespace System.Drawing
 {
@@ -717,4 +713,4 @@ namespace System.Drawing
 			return -1;
 		}
 	}
-}
\ No newline at end of file
+}
diff --git a/mcs/class/System.Drawing/System.Drawing/Graphics.cs b/mcs/class/System.Drawing/System.Drawing/Graphics.cs
index b3153d8..b600c04 100644
--- a/mcs/class/System.Drawing/System.Drawing/Graphics.cs
+++ b/mcs/class/System.Drawing/System.Drawing/Graphics.cs
@@ -297,7 +297,8 @@ namespace System.Drawing
 			if (! disposed) {
 				if (GDIPlus.UseCarbonDrawable || GDIPlus.UseCocoaDrawable) {
 					Flush ();
-					maccontext.Release ();
+					if (maccontext != null)
+						maccontext.Release ();
 				}
 
 				status = GDIPlus.GdipDeleteGraphics (nativeObject);
diff --git a/mcs/class/System.Drawing/System.Drawing/Image.cs b/mcs/class/System.Drawing/System.Drawing/Image.cs
index 0c9a069..1985691 100644
--- a/mcs/class/System.Drawing/System.Drawing/Image.cs
+++ b/mcs/class/System.Drawing/System.Drawing/Image.cs
@@ -300,8 +300,7 @@ public abstract class Image : MarshalByRefObject, IDisposable , ICloneable, ISer
 			st = GDIPlus.GdipLoadImageFromStream (new ComIStreamWrapper (stream), out imagePtr);
 		}
 
-		GDIPlus.CheckStatus (st);
-		return imagePtr;
+		return st == Status.Ok ? imagePtr : IntPtr.Zero;
 	}
 
 	// non-static	
@@ -786,7 +785,7 @@ public abstract class Image : MarshalByRefObject, IDisposable , ICloneable, ISer
 	public void Dispose ()
 	{
 		Dispose (true);
-		System.GC.SuppressFinalize (this);
+		GC.SuppressFinalize (this);
 	}
 
 	~Image ()
diff --git a/mcs/class/System.Drawing/System.Drawing/macFunctions.cs b/mcs/class/System.Drawing/System.Drawing/macFunctions.cs
index 5860968..929837d 100644
--- a/mcs/class/System.Drawing/System.Drawing/macFunctions.cs
+++ b/mcs/class/System.Drawing/System.Drawing/macFunctions.cs
@@ -68,8 +68,16 @@ namespace System.Drawing {
 			IntPtr ctx = objc_msgSend (graphicsContext, sel_registerName ("graphicsPort"));
 			Rect bounds = new Rect ();
 
+			CGContextSaveGState (ctx);
+
 			objc_msgSend_stret (ref bounds, handle, sel_registerName ("bounds"));
 
+			var isFlipped = bool_objc_msgSend (handle, sel_registerName ("isFlipped"));
+			if (isFlipped) {
+				CGContextTranslateCTM (ctx, bounds.origin.x, bounds.size.height);
+				CGContextScaleCTM (ctx,1.0f,-1.0f);
+			}
+
 			return new CocoaContext (ctx, (int) bounds.size.width, (int) bounds.size.height);
 		}
 
@@ -191,6 +199,8 @@ namespace System.Drawing {
 		public static extern IntPtr objc_msgSend(IntPtr basePtr, IntPtr selector);        
 		[DllImport("libobjc.dylib")]
 		public static extern void objc_msgSend_stret(ref Rect arect, IntPtr basePtr, IntPtr selector);        
+		[DllImport ("libobjc.dylib", EntryPoint = "objc_msgSend")]
+		public static extern bool bool_objc_msgSend (IntPtr handle, IntPtr selector);
 		[DllImport("libobjc.dylib")]
 		public static extern IntPtr sel_registerName(string selectorName);         
 		#endregion
@@ -345,6 +355,7 @@ namespace System.Drawing {
 
 		public void Release ()
 		{
+			MacSupport.CGContextRestoreGState(ctx);
 		}
 	}
 
diff --git a/mcs/class/System.IdentityModel/ChangeLog b/mcs/class/System.IdentityModel/ChangeLog
old mode 100755
new mode 100644
index 699a7c9..7486c75
--- a/mcs/class/System.IdentityModel/ChangeLog
+++ b/mcs/class/System.IdentityModel/ChangeLog
@@ -1,3 +1,7 @@
+2010-12-29  Marek Safar  <marek.safar at gmail.com>
+
+	Add few more missing references
+
 2010-04-28  Marek Habersack  <mhabersack at novell.com>
 
 	* Makefile (OTHER_LIB_MCS_FLAGS): added a reference to
diff --git a/mcs/class/System.IdentityModel/ChangeLog b/mcs/class/System.IdentityModel/ChangeLog.old
similarity index 100%
copy from mcs/class/System.IdentityModel/ChangeLog
copy to mcs/class/System.IdentityModel/ChangeLog.old
diff --git a/mcs/class/System.IdentityModel/Makefile b/mcs/class/System.IdentityModel/Makefile
index 3390d52..480e0ea 100644
--- a/mcs/class/System.IdentityModel/Makefile
+++ b/mcs/class/System.IdentityModel/Makefile
@@ -8,11 +8,12 @@ endif
 
 LIBRARY = System.IdentityModel.dll
 LIB_MCS_FLAGS = \
-			/d:NET_3_0	\
+		/d:NET_3_0	\
 	        /r:System.dll \
 	        /r:System.Xml.dll \
 	        /r:System.Security.dll \
 		/r:System.Web.dll \
+		/r:System.Configuration.dll \
 		/r:Mono.Security.dll \
 	        /r:System.Runtime.Serialization.dll \
 	        $(OTHER_LIB_MCS_FLAGS)
diff --git a/mcs/class/System.Json/Assembly/AssemblyInfo.cs b/mcs/class/System.Json/Assembly/AssemblyInfo.cs
index 101feee..6ea79b9 100755
--- a/mcs/class/System.Json/Assembly/AssemblyInfo.cs
+++ b/mcs/class/System.Json/Assembly/AssemblyInfo.cs
@@ -51,20 +51,10 @@ using System.Runtime.InteropServices;
 [assembly: AssemblyFileVersion (Consts.FxFileVersion)]
 
 [assembly: NeutralResourcesLanguage ("en-US")]
-#if !NET_2_1
-[assembly: CLSCompliant (true)]
-#endif
 [assembly: AssemblyDelaySign (true)]
-#if NET_2_1
-	[assembly: AssemblyKeyFile ("../silverlight.pub")]
-#else
-	[assembly: AssemblyKeyFile ("../silverlight.pub")] // easing InternalVisibleTo use.
-#endif
+[assembly: AssemblyKeyFile ("../winfx.pub")]
 
 [assembly: ComVisible (false)]
-#if !NET_2_1
-[assembly: AllowPartiallyTrustedCallers]
-#endif
 
 [assembly: CompilationRelaxations (CompilationRelaxations.NoStringInterning)]
 [assembly: Debuggable (DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
diff --git a/mcs/class/System.Json/Assembly/ChangeLog b/mcs/class/System.Json/Assembly/ChangeLog
old mode 100755
new mode 100644
index 1fcfb76..86e7dcb
--- a/mcs/class/System.Json/Assembly/ChangeLog
+++ b/mcs/class/System.Json/Assembly/ChangeLog
@@ -1,3 +1,7 @@
+2010-09-01  Jb Evain  <jbevain at gmail.com>
+
+	Fix the NET_2_1 build of System.Json
+
 2010-03-10  Atsushi Enomoto  <atsushi at ximian.com>
 
 	* AssemblyInfo.cs : use the same pub key in 2.0 (dummy), to ease
diff --git a/mcs/class/System.Json/Assembly/ChangeLog b/mcs/class/System.Json/Assembly/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Json/Assembly/ChangeLog
copy to mcs/class/System.Json/Assembly/ChangeLog.old
diff --git a/mcs/class/System.Json/ChangeLog b/mcs/class/System.Json/ChangeLog
index de7df40..04f6c43 100644
--- a/mcs/class/System.Json/ChangeLog
+++ b/mcs/class/System.Json/ChangeLog
@@ -1,3 +1,7 @@
+2010-09-01  Jb Evain  <jbevain at gmail.com>
+
+	Fix the NET_2_1 build of System.Json
+
 2010-08-11  Jb Evain  <jbevain at gmail.com>
 
 	[hygiene] simplify the code dealing with internal collections
diff --git a/mcs/class/System.Json/Makefile b/mcs/class/System.Json/Makefile
index da8a9b7..e881a7b 100644
--- a/mcs/class/System.Json/Makefile
+++ b/mcs/class/System.Json/Makefile
@@ -13,8 +13,7 @@ TEST_MCS_FLAGS = $(LIB_MCS_FLAGS)
 
 EXTRA_DISTFILES =
 
-VALID_PROFILE := $(filter 2.1 4.0, $(FRAMEWORK_VERSION))
-ifndef VALID_PROFILE
+ifneq (2.1, $(FRAMEWORK_VERSION))
 LIBRARY_NAME = dummy-System.Json.dll
 NO_INSTALL = yes
 NO_SIGN_ASSEMBLY = yes
diff --git a/mcs/class/System.Messaging/ChangeLog b/mcs/class/System.Messaging/ChangeLog
index d9e3baf..afe4e2b 100644
--- a/mcs/class/System.Messaging/ChangeLog
+++ b/mcs/class/System.Messaging/ChangeLog
@@ -1,3 +1,13 @@
+2010-09-26  Marek Habersack  <grendel at twistedcode.net>
+
+	[Messaging] Conditionally drop dependency on Wnforms
+
+	If you pass the option MESSAGING_NO_WINFORMS=1 to make,
+	System.Messaging will be compiled without the dependency to
+	System.Windows.Forms. The dependency is needed just by the
+	System.Messaging.Design.QueuePathDialog class which is both a stub
+	and not used anywhere by Mono.
+
 2008-09-28  Michael Barker <mike at middlesoft.co.uk>
 
 	* Makefile: Adding additional libraries for tests.
diff --git a/mcs/class/System.Messaging/ChangeLog b/mcs/class/System.Messaging/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Messaging/ChangeLog
copy to mcs/class/System.Messaging/ChangeLog.old
diff --git a/mcs/class/System.Messaging/Makefile b/mcs/class/System.Messaging/Makefile
index a2eb993..681b883 100644
--- a/mcs/class/System.Messaging/Makefile
+++ b/mcs/class/System.Messaging/Makefile
@@ -15,4 +15,8 @@ TEST_MCS_FLAGS = $(LIB_MCS_FLAGS) -nowarn:0618 -nowarn:219 -nowarn:169 \
 
 EXTRA_DISTFILES = System.Messaging/MessageQueue.resx
 
+ifdef MESSAGING_NO_WINFORMS
+LIB_MCS_FLAGS += -d:NO_WINFORMS_DEPENDENCY
+endif
+
 include ../../build/library.make
diff --git a/mcs/class/System.Messaging/System.Messaging.Design/ChangeLog b/mcs/class/System.Messaging/System.Messaging.Design/ChangeLog
index ccf4ac0..023b3c3 100644
--- a/mcs/class/System.Messaging/System.Messaging.Design/ChangeLog
+++ b/mcs/class/System.Messaging/System.Messaging.Design/ChangeLog
@@ -1,3 +1,17 @@
+2010-11-12  Marek Safar  <marek.safar at gmail.com>
+
+	Fix QueuePathDialog signature
+
+2010-09-26  Marek Habersack  <grendel at twistedcode.net>
+
+	[Messaging] Conditionally drop dependency on Wnforms
+
+	If you pass the option MESSAGING_NO_WINFORMS=1 to make,
+	System.Messaging will be compiled without the dependency to
+	System.Windows.Forms. The dependency is needed just by the
+	System.Messaging.Design.QueuePathDialog class which is both a stub
+	and not used anywhere by Mono.
+
 2004-06-02  Gert Driesen <drieseng at users.sourceforge.net>
 
 	* MessageFormatterConverter.cs: added file
diff --git a/mcs/class/System.Messaging/System.Messaging.Design/ChangeLog b/mcs/class/System.Messaging/System.Messaging.Design/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Messaging/System.Messaging.Design/ChangeLog
copy to mcs/class/System.Messaging/System.Messaging.Design/ChangeLog.old
diff --git a/mcs/class/System.Messaging/System.Messaging.Design/QueuePathDialog.cs b/mcs/class/System.Messaging/System.Messaging.Design/QueuePathDialog.cs
index 147a43f..52c11c4 100644
--- a/mcs/class/System.Messaging/System.Messaging.Design/QueuePathDialog.cs
+++ b/mcs/class/System.Messaging/System.Messaging.Design/QueuePathDialog.cs
@@ -27,11 +27,10 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-
+#if !NO_WINFORMS_DEPENDENCY
 using System.ComponentModel;
 using System.Drawing.Design;
 using System.Windows.Forms;
-//using System.Windows.Forms.Design;
 
 namespace System.Messaging.Design
 {
@@ -45,7 +44,7 @@ namespace System.Messaging.Design
 		}
 
 		[MonoTODO]
-		public QueuePathDialog ()//IUIService uiService)
+		public QueuePathDialog (System.Windows.Forms.Design.IUIService uiService)
 		{
 			throw new NotImplementedException ();
 		}
@@ -76,3 +75,4 @@ namespace System.Messaging.Design
 		}
 	}
 }
+#endif
diff --git a/mcs/class/System.Messaging/System.Messaging/AccessControlEntry.cs b/mcs/class/System.Messaging/System.Messaging/AccessControlEntry.cs
index 5b45f1d..aedc24a 100644
--- a/mcs/class/System.Messaging/System.Messaging/AccessControlEntry.cs
+++ b/mcs/class/System.Messaging/System.Messaging/AccessControlEntry.cs
@@ -1,94 +1,94 @@
-//
-// System.Messaging
-//
-// Authors:
-//      Peter Van Isacker (sclytrack at planetinternet.be)
-//
-// (C) 2003 Peter Van Isacker
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Messaging 
-{
-	public class AccessControlEntry 
-	{
-		#region Constructor
-		
-		[MonoTODO]
-		public AccessControlEntry()
-		{
-		}
-		[MonoTODO]
-		public AccessControlEntry(Trustee trustee)
-		{
-			throw new NotImplementedException();
-		}
-		[MonoTODO]
-		public AccessControlEntry(Trustee trustee,
-			GenericAccessRights genericAccessRights,
-			StandardAccessRights standardAccessRights,
-			AccessControlEntryType entryType)
-		{
-			throw new NotImplementedException();
-		}
-		
-		#endregion //Constructor
-		
-		
-		#region Properties
-		
-		public AccessControlEntryType EntryType {
-			[MonoTODO]
-			get {throw new NotImplementedException();}
-			[MonoTODO]
-			set {throw new NotImplementedException();}
-		}
-		public GenericAccessRights GenericAccessRights {
-			[MonoTODO]
-			get {throw new NotImplementedException(); }
-			[MonoTODO]
-			set {throw new NotImplementedException(); }
-		}
-		public StandardAccessRights StandardAccessRights {
-			[MonoTODO]
-			get { throw new NotImplementedException();}
-			[MonoTODO]
-			set { throw new NotImplementedException();}
-		}
-		public Trustee Trustee {
-			[MonoTODO]
-			get { throw new NotImplementedException();}
-			[MonoTODO]
-			set { throw new NotImplementedException();}
-		}
-		protected int CustomAccessRights {
-			[MonoTODO]
-			get { throw new NotImplementedException(); }
-			[MonoTODO]
-			set { throw new NotImplementedException(); }
-		}
-		
-		#endregion //Properties
-	}
-}
+//
+// System.Messaging
+//
+// Authors:
+//      Peter Van Isacker (sclytrack at planetinternet.be)
+//
+// (C) 2003 Peter Van Isacker
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+
+namespace System.Messaging 
+{
+	public class AccessControlEntry 
+	{
+		#region Constructor
+		
+		[MonoTODO]
+		public AccessControlEntry()
+		{
+		}
+		[MonoTODO]
+		public AccessControlEntry(Trustee trustee)
+		{
+			throw new NotImplementedException();
+		}
+		[MonoTODO]
+		public AccessControlEntry(Trustee trustee,
+			GenericAccessRights genericAccessRights,
+			StandardAccessRights standardAccessRights,
+			AccessControlEntryType entryType)
+		{
+			throw new NotImplementedException();
+		}
+		
+		#endregion //Constructor
+		
+		
+		#region Properties
+		
+		public AccessControlEntryType EntryType {
+			[MonoTODO]
+			get {throw new NotImplementedException();}
+			[MonoTODO]
+			set {throw new NotImplementedException();}
+		}
+		public GenericAccessRights GenericAccessRights {
+			[MonoTODO]
+			get {throw new NotImplementedException(); }
+			[MonoTODO]
+			set {throw new NotImplementedException(); }
+		}
+		public StandardAccessRights StandardAccessRights {
+			[MonoTODO]
+			get { throw new NotImplementedException();}
+			[MonoTODO]
+			set { throw new NotImplementedException();}
+		}
+		public Trustee Trustee {
+			[MonoTODO]
+			get { throw new NotImplementedException();}
+			[MonoTODO]
+			set { throw new NotImplementedException();}
+		}
+		protected int CustomAccessRights {
+			[MonoTODO]
+			get { throw new NotImplementedException(); }
+			[MonoTODO]
+			set { throw new NotImplementedException(); }
+		}
+		
+		#endregion //Properties
+	}
+}
diff --git a/mcs/class/System.Messaging/System.Messaging/AccessControlEntryType.cs b/mcs/class/System.Messaging/System.Messaging/AccessControlEntryType.cs
index d70c86c..30a380c 100644
--- a/mcs/class/System.Messaging/System.Messaging/AccessControlEntryType.cs
+++ b/mcs/class/System.Messaging/System.Messaging/AccessControlEntryType.cs
@@ -1,11 +1,11 @@
-//
-// System.Messaging
-//
-// Authors:
-//      Peter Van Isacker (sclytrack at planetinternet.be)
-//
-//	(C) 2003 Peter Van Isacker
-//
+//
+// System.Messaging
+//
+// Authors:
+//      Peter Van Isacker (sclytrack at planetinternet.be)
+//
+//	(C) 2003 Peter Van Isacker
+//
 
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -27,16 +27,16 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-using System;
-
-namespace System.Messaging 
-{
-	[Serializable]
-	public enum AccessControlEntryType 
-	{
-		Allow = 1,
-		Deny = 3,
-		Revoke = 4,
-		Set = 2
-	}
-}
+using System;
+
+namespace System.Messaging 
+{
+	[Serializable]
+	public enum AccessControlEntryType 
+	{
+		Allow = 1,
+		Deny = 3,
+		Revoke = 4,
+		Set = 2
+	}
+}
diff --git a/mcs/class/System.Messaging/System.Messaging/AccessControlList.cs b/mcs/class/System.Messaging/System.Messaging/AccessControlList.cs
index cb72d49..ebc8567 100644
--- a/mcs/class/System.Messaging/System.Messaging/AccessControlList.cs
+++ b/mcs/class/System.Messaging/System.Messaging/AccessControlList.cs
@@ -19,53 +19,53 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-
-//
-// System.Messaging
-//
-// Authors:
-//      Peter Van Isacker (sclytrack at planetinternet.be)
-//
-// (C) 2003 Peter Van Isacker
-//
-using System;
-using System.Collections;
-
-namespace System.Messaging 
-{
-	public class AccessControlList: CollectionBase 
-	{
-		[MonoTODO]
-		public AccessControlList()
-		{
-		}
-		[MonoTODO]
-		public int Add(AccessControlEntry entry) {
-			throw new NotImplementedException();	
-		}
-		[MonoTODO]
-		public bool Contains(AccessControlEntry entry) {
-			throw new NotImplementedException();
-		}
-		[MonoTODO]
-		public void CopyTo(AccessControlEntry[] array, int index) {
-			if (array == null) 
-				throw new ArgumentNullException();
-			if (index < 0) 
-				throw new ArgumentOutOfRangeException();
-			throw new NotImplementedException();		
-		}
-		[MonoTODO]
-		public int IndexOf(AccessControlEntry entry) {
-			throw new NotImplementedException();
-		}
-		[MonoTODO]
-		public void Insert(int index, AccessControlEntry entry) {
-			throw new NotImplementedException();		
-		}
-		[MonoTODO]
-		public void Remove(AccessControlEntry entry) {
-			throw new NotImplementedException();
-		}
-	}
-}
+
+//
+// System.Messaging
+//
+// Authors:
+//      Peter Van Isacker (sclytrack at planetinternet.be)
+//
+// (C) 2003 Peter Van Isacker
+//
+using System;
+using System.Collections;
+
+namespace System.Messaging 
+{
+	public class AccessControlList: CollectionBase 
+	{
+		[MonoTODO]
+		public AccessControlList()
+		{
+		}
+		[MonoTODO]
+		public int Add(AccessControlEntry entry) {
+			throw new NotImplementedException();	
+		}
+		[MonoTODO]
+		public bool Contains(AccessControlEntry entry) {
+			throw new NotImplementedException();
+		}
+		[MonoTODO]
+		public void CopyTo(AccessControlEntry[] array, int index) {
+			if (array == null) 
+				throw new ArgumentNullException();
+			if (index < 0) 
+				throw new ArgumentOutOfRangeException();
+			throw new NotImplementedException();		
+		}
+		[MonoTODO]
+		public int IndexOf(AccessControlEntry entry) {
+			throw new NotImplementedException();
+		}
+		[MonoTODO]
+		public void Insert(int index, AccessControlEntry entry) {
+			throw new NotImplementedException();		
+		}
+		[MonoTODO]
+		public void Remove(AccessControlEntry entry) {
+			throw new NotImplementedException();
+		}
+	}
+}
diff --git a/mcs/class/System.Messaging/System.Messaging/AcknowledgeTypes.cs b/mcs/class/System.Messaging/System.Messaging/AcknowledgeTypes.cs
index 96c4e03..e6b88c4 100644
--- a/mcs/class/System.Messaging/System.Messaging/AcknowledgeTypes.cs
+++ b/mcs/class/System.Messaging/System.Messaging/AcknowledgeTypes.cs
@@ -1,11 +1,11 @@
-//
-// System.Messaging
-//
-// Authors:
-//      Peter Van Isacker (sclytrack at planetinternet.be)
-//
-//	(C) 2003 Peter Van Isacker
-//
+//
+// System.Messaging
+//
+// Authors:
+//      Peter Van Isacker (sclytrack at planetinternet.be)
+//
+//	(C) 2003 Peter Van Isacker
+//
 
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -27,21 +27,21 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-using System;
-
-namespace System.Messaging 
-{
-	[Flags]
-	[Serializable]
-	public enum AcknowledgeTypes 
-	{
-		FullReachQueue = 5,
-		FullReceive = 14,
-		NegativeReceive = 8,
-		None = 0, 
-		NotAcknowledgeReachQueue = 4,
-		NotAcknowledgeReceive = 12,
-		PositiveArrival = 1,
-		PositiveReceive = 2
-	}
-}
+using System;
+
+namespace System.Messaging 
+{
+	[Flags]
+	[Serializable]
+	public enum AcknowledgeTypes 
+	{
+		FullReachQueue = 5,
+		FullReceive = 14,
+		NegativeReceive = 8,
+		None = 0, 
+		NotAcknowledgeReachQueue = 4,
+		NotAcknowledgeReceive = 12,
+		PositiveArrival = 1,
+		PositiveReceive = 2
+	}
+}
diff --git a/mcs/class/System.Messaging/System.Messaging/Acknowledgment.cs b/mcs/class/System.Messaging/System.Messaging/Acknowledgment.cs
index 29bfeba..a3b3344 100644
--- a/mcs/class/System.Messaging/System.Messaging/Acknowledgment.cs
+++ b/mcs/class/System.Messaging/System.Messaging/Acknowledgment.cs
@@ -1,11 +1,11 @@
-//
-// System.Messaging
-//
-// Authors:
-//      Peter Van Isacker (sclytrack at planetinternet.be)
-//
-//	(C) Ximian, Inc.  http://www.ximian.com
-//
+//
+// System.Messaging
+//
+// Authors:
+//      Peter Van Isacker (sclytrack at planetinternet.be)
+//
+//	(C) Ximian, Inc.  http://www.ximian.com
+//
 
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -27,29 +27,29 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-using System;
-
-namespace System.Messaging 
-{
-	[Serializable]
-	public enum Acknowledgment 
-	{
-		AccessDenied = 32772,
-		BadDestinationQueue = 32768,
-		BadEncryption = 32775,
-		BadSignature = 32774,
-		CouldNotEncrypt = 32776,
-		HopCountExceeded = 32773,
-		None = 0,
-		NotTransactionalMessage = 32778,
-		NotTransactionalQueue = 32777,
-		Purged = 32769,
-		QueueDeleted = 49152,
-		QueueExceedMaximumSize = 32771,
-		QueuePurged = 49153,
-		ReachQueue = 2,
-		ReachQueueTimeout = 32770,
-		Receive = 16384,
-		ReceiveTimeout = 49154
-	}
-}
+using System;
+
+namespace System.Messaging 
+{
+	[Serializable]
+	public enum Acknowledgment 
+	{
+		AccessDenied = 32772,
+		BadDestinationQueue = 32768,
+		BadEncryption = 32775,
+		BadSignature = 32774,
+		CouldNotEncrypt = 32776,
+		HopCountExceeded = 32773,
+		None = 0,
+		NotTransactionalMessage = 32778,
+		NotTransactionalQueue = 32777,
+		Purged = 32769,
+		QueueDeleted = 49152,
+		QueueExceedMaximumSize = 32771,
+		QueuePurged = 49153,
+		ReachQueue = 2,
+		ReachQueueTimeout = 32770,
+		Receive = 16384,
+		ReceiveTimeout = 49154
+	}
+}
diff --git a/mcs/class/System.Messaging/System.Messaging/ActiveXMessageFormatter.cs b/mcs/class/System.Messaging/System.Messaging/ActiveXMessageFormatter.cs
index c6dc809..8ac7c50 100644
--- a/mcs/class/System.Messaging/System.Messaging/ActiveXMessageFormatter.cs
+++ b/mcs/class/System.Messaging/System.Messaging/ActiveXMessageFormatter.cs
@@ -19,55 +19,55 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-
-//
-// System.Messaging
-//
-// Authors:
-//      Peter Van Isacker (sclytrack at planetinternet.be)
-//
-// (C) 2003 Peter Van Isacker
-//
-
-using System;
-
-namespace System.Messaging 
-{
-	public class ActiveXMessageFormatter: IMessageFormatter, ICloneable 
-	{
-		[MonoTODO]
-		public ActiveXMessageFormatter()
-		{
-		}
-		
-		[MonoTODO]
-		public bool CanRead(Message message)
-		{
-			throw new NotImplementedException();
-		}
-		
-		[MonoTODO]
-		public object Clone()
-		{
-			throw new NotImplementedException();
-		}
-		
-		[MonoTODO]
-		public static void InitStreamedObject(object streamedObject)
-		{
-			throw new NotImplementedException();
-		}
-		
-		[MonoTODO]
-		public object Read(Message message)
-		{
-			throw new NotImplementedException();
-		}
-		
-		[MonoTODO]
-		public void Write(Message message, object obj)
-		{
-			throw new NotImplementedException();
-		}
-	}
-}
+
+//
+// System.Messaging
+//
+// Authors:
+//      Peter Van Isacker (sclytrack at planetinternet.be)
+//
+// (C) 2003 Peter Van Isacker
+//
+
+using System;
+
+namespace System.Messaging 
+{
+	public class ActiveXMessageFormatter: IMessageFormatter, ICloneable 
+	{
+		[MonoTODO]
+		public ActiveXMessageFormatter()
+		{
+		}
+		
+		[MonoTODO]
+		public bool CanRead(Message message)
+		{
+			throw new NotImplementedException();
+		}
+		
+		[MonoTODO]
+		public object Clone()
+		{
+			throw new NotImplementedException();
+		}
+		
+		[MonoTODO]
+		public static void InitStreamedObject(object streamedObject)
+		{
+			throw new NotImplementedException();
+		}
+		
+		[MonoTODO]
+		public object Read(Message message)
+		{
+			throw new NotImplementedException();
+		}
+		
+		[MonoTODO]
+		public void Write(Message message, object obj)
+		{
+			throw new NotImplementedException();
+		}
+	}
+}
diff --git a/mcs/class/System.Messaging/System.Messaging/ChangeLog b/mcs/class/System.Messaging/System.Messaging/ChangeLog
index 9f22980..cc5aa77 100644
--- a/mcs/class/System.Messaging/System.Messaging/ChangeLog
+++ b/mcs/class/System.Messaging/System.Messaging/ChangeLog
@@ -1,3 +1,11 @@
+2010-11-12  Marek Safar  <marek.safar at gmail.com>
+
+	Add MessageQueue::GetMessageEnumerator2
+
+2010-11-12  Marek Safar  <marek.safar at gmail.com>
+
+	CRLF->LF conversion
+
 2010-02-09  Chris Toshok  <toshok at ximian.com>
 
 	* MessageQueue.cs: stub out the ctor that takes a QueueAccessMode.
diff --git a/mcs/class/System.Messaging/System.Messaging/ChangeLog b/mcs/class/System.Messaging/System.Messaging/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Messaging/System.Messaging/ChangeLog
copy to mcs/class/System.Messaging/System.Messaging/ChangeLog.old
diff --git a/mcs/class/System.Messaging/System.Messaging/CryptographicProviderType.cs b/mcs/class/System.Messaging/System.Messaging/CryptographicProviderType.cs
index df453e9..afa23db 100644
--- a/mcs/class/System.Messaging/System.Messaging/CryptographicProviderType.cs
+++ b/mcs/class/System.Messaging/System.Messaging/CryptographicProviderType.cs
@@ -1,11 +1,11 @@
-//
-// System.Messaging
-//
-// Authors:
-//      Peter Van Isacker (sclytrack at planetinternet.be)
-//
-//	(C) Ximian, Inc.  http://www.ximian.com
-//
+//
+// System.Messaging
+//
+// Authors:
+//      Peter Van Isacker (sclytrack at planetinternet.be)
+//
+//	(C) Ximian, Inc.  http://www.ximian.com
+//
 
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -27,24 +27,24 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-using System;
-
-namespace System.Messaging 
-{
-	[Serializable]
-	public enum CryptographicProviderType 
-	{
-		Dss = 3,
-		Fortezza = 4,
-		MicrosoftExchange = 5,
-		None = 0,
-		RsaFull = 1,
-		RsqSig = 2,
-		Ssl = 6,
-		SttAcq = 8,
-		SttBrnd = 9,
-		SttIss = 11,
-		SttMer = 7,
-		SttRoot = 10
-	}
-}
+using System;
+
+namespace System.Messaging 
+{
+	[Serializable]
+	public enum CryptographicProviderType 
+	{
+		Dss = 3,
+		Fortezza = 4,
+		MicrosoftExchange = 5,
+		None = 0,
+		RsaFull = 1,
+		RsqSig = 2,
+		Ssl = 6,
+		SttAcq = 8,
+		SttBrnd = 9,
+		SttIss = 11,
+		SttMer = 7,
+		SttRoot = 10
+	}
+}
diff --git a/mcs/class/System.Messaging/System.Messaging/DefaultPropertiesToSend.cs b/mcs/class/System.Messaging/System.Messaging/DefaultPropertiesToSend.cs
index 8048e58..eaa9a78 100644
--- a/mcs/class/System.Messaging/System.Messaging/DefaultPropertiesToSend.cs
+++ b/mcs/class/System.Messaging/System.Messaging/DefaultPropertiesToSend.cs
@@ -1,216 +1,216 @@
-//
-// System.Messaging
-//
-// Authors:
-//      Peter Van Isacker (sclytrack at planetinternet.be)
-//
-// (C) 2003 Peter Van Isacker
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.ComponentModel;
-using System.ComponentModel.Design;
-
-namespace System.Messaging 
-{
-	[TypeConverter (typeof(ExpandableObjectConverter))]
-	public class DefaultPropertiesToSend 
-	{
-		[MonoTODO]
-		public DefaultPropertiesToSend()
-		{
-		}
-
-		[DefaultValue (AcknowledgeTypes.None)]
-		[MessagingDescription ("MsgAcknowledgeType")]
-		public AcknowledgeTypes AcknowledgeType {
-			[MonoTODO]
-			get {throw new NotImplementedException();}
-			[MonoTODO]
-			set {throw new NotImplementedException();}
-		}
-
-		[DefaultValue (null)]
-		[MessagingDescription ("MsgAdministrationQueue")]
-		public MessageQueue AdministrationQueue {
-			[MonoTODO]
-			get {throw new NotImplementedException();}
-			[MonoTODO]
-			set {throw new NotImplementedException();}
-		}
-
-		[DefaultValue (0)]
-		[MessagingDescription ("MsgAppSpecific")]
-		public int AppSpecific {
-			[MonoTODO]
-			get {throw new NotImplementedException();}
-			[MonoTODO]
-			set {throw new NotImplementedException();}
-		}
-
-		[DefaultValue (true)]
-		[MessagingDescription ("MsgAttachSenderId")]
-		public bool AttachSenderId {
-			[MonoTODO]
-			get {throw new NotImplementedException();}
-			[MonoTODO]
-			set {throw new NotImplementedException();}
-		}
-
-		[DefaultValue (EncryptionAlgorithm.Rc2)]
-		[MessagingDescription ("MsgEncryptionAlgorithm")]
-		public EncryptionAlgorithm EncryptionAlgorithm {
-			[MonoTODO]
-			get {throw new NotImplementedException();}
-			[MonoTODO]
-			set {throw new NotImplementedException();}
-		}
-
-		[Editor ("System.ComponentModel.Design.ArrayEditor, " + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
-		[MessagingDescription ("MsgExtension")]
-		public byte[] Extension {
-			[MonoTODO]
-			get {throw new NotImplementedException();}
-			[MonoTODO]
-			set {throw new NotImplementedException();}
-		}
-
-		[DefaultValue (HashAlgorithm.Md5)]
-		[MessagingDescription ("MsgHashAlgorithm")]
-		public HashAlgorithm HashAlgorithm {
-			[MonoTODO]
-			get {throw new NotImplementedException();}
-			[MonoTODO]
-			set {throw new NotImplementedException();}
-		}
-
-		[DefaultValue ("")]
-		[MessagingDescription ("MsgLabel")]
-		public string Label {
-			[MonoTODO]
-			get {throw new NotImplementedException();}
-			[MonoTODO]
-			set {throw new NotImplementedException();}
-		}
-
-		[DefaultValue (MessagePriority.Normal)]
-		[MessagingDescription ("MsgPriority")]
-		public MessagePriority Priority {
-			[MonoTODO]
-			get {throw new NotImplementedException();}
-			[MonoTODO]
-			set {throw new NotImplementedException();}
-		}
-
-		[DefaultValue (false)]
-		[MessagingDescription ("MsgRecoverable")]
-		public bool Recoverable {
-			[MonoTODO]
-			get {throw new NotImplementedException();}
-			[MonoTODO]
-			set {throw new NotImplementedException();}
-		}
-
-		[DefaultValue (null)]
-		[MessagingDescription ("MsgResponseQueue")]
-		public MessageQueue ResponseQueue {
-			[MonoTODO]
-			get {throw new NotImplementedException();}
-			[MonoTODO]
-			set {throw new NotImplementedException();}
-		}
-
-		[TypeConverter (typeof(TimeoutConverter))]
-		[MessagingDescription ("MsgTimeToBeReceived")]
-		public TimeSpan TimeToBeReceived {
-			[MonoTODO]
-			get {throw new NotImplementedException();}
-			[MonoTODO]
-			set {throw new NotImplementedException();}
-		}
-
-		[TypeConverter (typeof(TimeoutConverter))]
-		[MessagingDescription ("MsgTimeToReachQueue")]
-		public TimeSpan TimeToReachQueue {
-			[MonoTODO]
-			get {throw new NotImplementedException();}
-			[MonoTODO]
-			set {throw new NotImplementedException();}
-		}
-
-		[DefaultValue (null)]
-		[MessagingDescription ("MsgTransactionStatusQueue")]
-		public MessageQueue TransactionStatusQueue {
-			[MonoTODO]
-			get {throw new NotImplementedException();}
-			[MonoTODO]
-			set {throw new NotImplementedException();}
-		}
-
-		[DefaultValue (false)]
-		[MessagingDescription ("MsgUseAuthentication")]
-		public bool UseAuthentication {
-			[MonoTODO]
-			get {throw new NotImplementedException();}
-			[MonoTODO]
-			set {throw new NotImplementedException();}
-		}
-
-		[DefaultValue (false)]
-		[MessagingDescription ("MsgUseDeadLetterQueue")]
-		public bool UseDeadLetterQueue {
-			[MonoTODO]
-			get {throw new NotImplementedException();}
-			[MonoTODO]
-			set {throw new NotImplementedException();}
-		}
-
-		[DefaultValue (false)]
-		[MessagingDescription ("MsgUseEncryption")]
-		public bool UseEncryption {
-			[MonoTODO]
-			get {throw new NotImplementedException();}
-			[MonoTODO]
-			set {throw new NotImplementedException();}
-		}
-
-		[DefaultValue (false)]
-		[MessagingDescription ("MsgUseJournalQueue")]
-		public bool UseJournalQueue {
-			[MonoTODO]
-			get {throw new NotImplementedException();}
-			[MonoTODO]
-			set {throw new NotImplementedException();}
-		}
-
-		[DefaultValue (false)]
-		[MessagingDescription ("MsgUseTracing")]
-		public bool UseTracing {
-			[MonoTODO]
-			get {throw new NotImplementedException();}
-			[MonoTODO]
-			set {throw new NotImplementedException();}
-		}
-	}
-}
+//
+// System.Messaging
+//
+// Authors:
+//      Peter Van Isacker (sclytrack at planetinternet.be)
+//
+// (C) 2003 Peter Van Isacker
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.ComponentModel;
+using System.ComponentModel.Design;
+
+namespace System.Messaging 
+{
+	[TypeConverter (typeof(ExpandableObjectConverter))]
+	public class DefaultPropertiesToSend 
+	{
+		[MonoTODO]
+		public DefaultPropertiesToSend()
+		{
+		}
+
+		[DefaultValue (AcknowledgeTypes.None)]
+		[MessagingDescription ("MsgAcknowledgeType")]
+		public AcknowledgeTypes AcknowledgeType {
+			[MonoTODO]
+			get {throw new NotImplementedException();}
+			[MonoTODO]
+			set {throw new NotImplementedException();}
+		}
+
+		[DefaultValue (null)]
+		[MessagingDescription ("MsgAdministrationQueue")]
+		public MessageQueue AdministrationQueue {
+			[MonoTODO]
+			get {throw new NotImplementedException();}
+			[MonoTODO]
+			set {throw new NotImplementedException();}
+		}
+
+		[DefaultValue (0)]
+		[MessagingDescription ("MsgAppSpecific")]
+		public int AppSpecific {
+			[MonoTODO]
+			get {throw new NotImplementedException();}
+			[MonoTODO]
+			set {throw new NotImplementedException();}
+		}
+
+		[DefaultValue (true)]
+		[MessagingDescription ("MsgAttachSenderId")]
+		public bool AttachSenderId {
+			[MonoTODO]
+			get {throw new NotImplementedException();}
+			[MonoTODO]
+			set {throw new NotImplementedException();}
+		}
+
+		[DefaultValue (EncryptionAlgorithm.Rc2)]
+		[MessagingDescription ("MsgEncryptionAlgorithm")]
+		public EncryptionAlgorithm EncryptionAlgorithm {
+			[MonoTODO]
+			get {throw new NotImplementedException();}
+			[MonoTODO]
+			set {throw new NotImplementedException();}
+		}
+
+		[Editor ("System.ComponentModel.Design.ArrayEditor, " + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
+		[MessagingDescription ("MsgExtension")]
+		public byte[] Extension {
+			[MonoTODO]
+			get {throw new NotImplementedException();}
+			[MonoTODO]
+			set {throw new NotImplementedException();}
+		}
+
+		[DefaultValue (HashAlgorithm.Md5)]
+		[MessagingDescription ("MsgHashAlgorithm")]
+		public HashAlgorithm HashAlgorithm {
+			[MonoTODO]
+			get {throw new NotImplementedException();}
+			[MonoTODO]
+			set {throw new NotImplementedException();}
+		}
+
+		[DefaultValue ("")]
+		[MessagingDescription ("MsgLabel")]
+		public string Label {
+			[MonoTODO]
+			get {throw new NotImplementedException();}
+			[MonoTODO]
+			set {throw new NotImplementedException();}
+		}
+
+		[DefaultValue (MessagePriority.Normal)]
+		[MessagingDescription ("MsgPriority")]
+		public MessagePriority Priority {
+			[MonoTODO]
+			get {throw new NotImplementedException();}
+			[MonoTODO]
+			set {throw new NotImplementedException();}
+		}
+
+		[DefaultValue (false)]
+		[MessagingDescription ("MsgRecoverable")]
+		public bool Recoverable {
+			[MonoTODO]
+			get {throw new NotImplementedException();}
+			[MonoTODO]
+			set {throw new NotImplementedException();}
+		}
+
+		[DefaultValue (null)]
+		[MessagingDescription ("MsgResponseQueue")]
+		public MessageQueue ResponseQueue {
+			[MonoTODO]
+			get {throw new NotImplementedException();}
+			[MonoTODO]
+			set {throw new NotImplementedException();}
+		}
+
+		[TypeConverter (typeof(TimeoutConverter))]
+		[MessagingDescription ("MsgTimeToBeReceived")]
+		public TimeSpan TimeToBeReceived {
+			[MonoTODO]
+			get {throw new NotImplementedException();}
+			[MonoTODO]
+			set {throw new NotImplementedException();}
+		}
+
+		[TypeConverter (typeof(TimeoutConverter))]
+		[MessagingDescription ("MsgTimeToReachQueue")]
+		public TimeSpan TimeToReachQueue {
+			[MonoTODO]
+			get {throw new NotImplementedException();}
+			[MonoTODO]
+			set {throw new NotImplementedException();}
+		}
+
+		[DefaultValue (null)]
+		[MessagingDescription ("MsgTransactionStatusQueue")]
+		public MessageQueue TransactionStatusQueue {
+			[MonoTODO]
+			get {throw new NotImplementedException();}
+			[MonoTODO]
+			set {throw new NotImplementedException();}
+		}
+
+		[DefaultValue (false)]
+		[MessagingDescription ("MsgUseAuthentication")]
+		public bool UseAuthentication {
+			[MonoTODO]
+			get {throw new NotImplementedException();}
+			[MonoTODO]
+			set {throw new NotImplementedException();}
+		}
+
+		[DefaultValue (false)]
+		[MessagingDescription ("MsgUseDeadLetterQueue")]
+		public bool UseDeadLetterQueue {
+			[MonoTODO]
+			get {throw new NotImplementedException();}
+			[MonoTODO]
+			set {throw new NotImplementedException();}
+		}
+
+		[DefaultValue (false)]
+		[MessagingDescription ("MsgUseEncryption")]
+		public bool UseEncryption {
+			[MonoTODO]
+			get {throw new NotImplementedException();}
+			[MonoTODO]
+			set {throw new NotImplementedException();}
+		}
+
+		[DefaultValue (false)]
+		[MessagingDescription ("MsgUseJournalQueue")]
+		public bool UseJournalQueue {
+			[MonoTODO]
+			get {throw new NotImplementedException();}
+			[MonoTODO]
+			set {throw new NotImplementedException();}
+		}
+
+		[DefaultValue (false)]
+		[MessagingDescription ("MsgUseTracing")]
+		public bool UseTracing {
+			[MonoTODO]
+			get {throw new NotImplementedException();}
+			[MonoTODO]
+			set {throw new NotImplementedException();}
+		}
+	}
+}
diff --git a/mcs/class/System.Messaging/System.Messaging/EncryptionAlgorithm.cs b/mcs/class/System.Messaging/System.Messaging/EncryptionAlgorithm.cs
index fd3ab54..b9d111d 100644
--- a/mcs/class/System.Messaging/System.Messaging/EncryptionAlgorithm.cs
+++ b/mcs/class/System.Messaging/System.Messaging/EncryptionAlgorithm.cs
@@ -1,11 +1,11 @@
-//
-// System.Messaging
-//
-// Authors:
-//      Peter Van Isacker (sclytrack at planetinternet.be)
-//
-//	(C) Ximian, Inc.  http://www.ximian.com
-//
+//
+// System.Messaging
+//
+// Authors:
+//      Peter Van Isacker (sclytrack at planetinternet.be)
+//
+//	(C) Ximian, Inc.  http://www.ximian.com
+//
 
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -27,15 +27,15 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-using System;
-
-namespace System.Messaging 
-{
-	[Serializable]
-	public enum EncryptionAlgorithm 
-	{
-		None = 0,
-		Rc2 = 26114,
-		Rc4 = 26625
-	}
-}
+using System;
+
+namespace System.Messaging 
+{
+	[Serializable]
+	public enum EncryptionAlgorithm 
+	{
+		None = 0,
+		Rc2 = 26114,
+		Rc4 = 26625
+	}
+}
diff --git a/mcs/class/System.Messaging/System.Messaging/EncryptionRequired.cs b/mcs/class/System.Messaging/System.Messaging/EncryptionRequired.cs
index 6051436..1349696 100644
--- a/mcs/class/System.Messaging/System.Messaging/EncryptionRequired.cs
+++ b/mcs/class/System.Messaging/System.Messaging/EncryptionRequired.cs
@@ -1,11 +1,11 @@
-//
-// System.Messaging
-//
-// Authors:
-//      Peter Van Isacker (sclytrack at planetinternet.be)
-//
-//	(C) Ximian, Inc.  http://www.ximian.com
-//
+//
+// System.Messaging
+//
+// Authors:
+//      Peter Van Isacker (sclytrack at planetinternet.be)
+//
+//	(C) Ximian, Inc.  http://www.ximian.com
+//
 
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -27,15 +27,15 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-using System;
-
-namespace System.Messaging 
-{
-	[Serializable]
-	public enum EncryptionRequired 
-	{
-		Body = 2,
-		None = 0,
-		Optional = 1
-	}
-}
+using System;
+
+namespace System.Messaging 
+{
+	[Serializable]
+	public enum EncryptionRequired 
+	{
+		Body = 2,
+		None = 0,
+		Optional = 1
+	}
+}
diff --git a/mcs/class/System.Messaging/System.Messaging/GenericAccessRights.cs b/mcs/class/System.Messaging/System.Messaging/GenericAccessRights.cs
index 1bed420..ce33468 100644
--- a/mcs/class/System.Messaging/System.Messaging/GenericAccessRights.cs
+++ b/mcs/class/System.Messaging/System.Messaging/GenericAccessRights.cs
@@ -1,11 +1,11 @@
-//
-// System.Messaging
-//
-// Authors:
-//      Peter Van Isacker (sclytrack at planetinternet.be)
-//
-//	(C) Ximian, Inc.  http://www.ximian.com
-//
+//
+// System.Messaging
+//
+// Authors:
+//      Peter Van Isacker (sclytrack at planetinternet.be)
+//
+//	(C) Ximian, Inc.  http://www.ximian.com
+//
 
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -27,18 +27,18 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-using System;
-
-namespace System.Messaging 
-{
-	[Flags]
-	[Serializable]
-	public enum GenericAccessRights 
-	{
-		All = 268435456,
-		Execute = 536870912,
-		None = 0,
-		Read = -2147483648,
-		Write = 1073741824
-	}
-}
+using System;
+
+namespace System.Messaging 
+{
+	[Flags]
+	[Serializable]
+	public enum GenericAccessRights 
+	{
+		All = 268435456,
+		Execute = 536870912,
+		None = 0,
+		Read = -2147483648,
+		Write = 1073741824
+	}
+}
diff --git a/mcs/class/System.Messaging/System.Messaging/HashAlgorithm.cs b/mcs/class/System.Messaging/System.Messaging/HashAlgorithm.cs
index dc10d8c..f28f5ce 100644
--- a/mcs/class/System.Messaging/System.Messaging/HashAlgorithm.cs
+++ b/mcs/class/System.Messaging/System.Messaging/HashAlgorithm.cs
@@ -1,11 +1,11 @@
-//
-// System.Messaging
-//
-// Authors:
-//      Peter Van Isacker (sclytrack at planetinternet.be)
-//
-//	(C) Ximian, Inc.  http://www.ximian.com
-//
+//
+// System.Messaging
+//
+// Authors:
+//      Peter Van Isacker (sclytrack at planetinternet.be)
+//
+//	(C) Ximian, Inc.  http://www.ximian.com
+//
 
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -27,18 +27,18 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-using System;
-
-namespace System.Messaging
-{
-	[Serializable]
-	public enum HashAlgorithm
-	{
-		Mac = 32773,
-		Md2 = 32769,
-		Md4 = 32770,
-		Md5 = 32771,
-		None = 0,
-		Sha = 32772
-	}
-}
+using System;
+
+namespace System.Messaging
+{
+	[Serializable]
+	public enum HashAlgorithm
+	{
+		Mac = 32773,
+		Md2 = 32769,
+		Md4 = 32770,
+		Md5 = 32771,
+		None = 0,
+		Sha = 32772
+	}
+}
diff --git a/mcs/class/System.Messaging/System.Messaging/MessagePriority.cs b/mcs/class/System.Messaging/System.Messaging/MessagePriority.cs
index 6a53bbd..5ba1325 100644
--- a/mcs/class/System.Messaging/System.Messaging/MessagePriority.cs
+++ b/mcs/class/System.Messaging/System.Messaging/MessagePriority.cs
@@ -1,11 +1,11 @@
-//
-// System.Messaging
-//
-// Authors:
-//      Peter Van Isacker (sclytrack at planetinternet.be)
-//
-//	(C) Ximian, Inc.  http://www.ximian.com
-//
+//
+// System.Messaging
+//
+// Authors:
+//      Peter Van Isacker (sclytrack at planetinternet.be)
+//
+//	(C) Ximian, Inc.  http://www.ximian.com
+//
 
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -27,20 +27,20 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-using System;
-
-namespace System.Messaging 
-{
-	[Serializable]
-	public enum MessagePriority 
-	{
-		AboveNormal = 4,
-		High = 5,
-		Highest = 7,
-		Low = 2,
-		Lowest = 0,
-		Normal = 3,
-		VeryHigh = 6,
-		VeryLow = 1
-	}
-}
+using System;
+
+namespace System.Messaging 
+{
+	[Serializable]
+	public enum MessagePriority 
+	{
+		AboveNormal = 4,
+		High = 5,
+		Highest = 7,
+		Low = 2,
+		Lowest = 0,
+		Normal = 3,
+		VeryHigh = 6,
+		VeryLow = 1
+	}
+}
diff --git a/mcs/class/System.Messaging/System.Messaging/MessagePropertyFilter.cs b/mcs/class/System.Messaging/System.Messaging/MessagePropertyFilter.cs
index 716927a..0589e25 100644
--- a/mcs/class/System.Messaging/System.Messaging/MessagePropertyFilter.cs
+++ b/mcs/class/System.Messaging/System.Messaging/MessagePropertyFilter.cs
@@ -1,583 +1,583 @@
-//
-// System.Messaging
-//
-// Authors:
-//      Peter Van Isacker (sclytrack at planetinternet.be)
-//
-// (C) 2003 Peter Van Isacker
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.ComponentModel;
-
-namespace System.Messaging
-{
-	[TypeConverter (typeof(ExpandableObjectConverter))]
-	public class MessagePropertyFilter
-	{
-		private bool acknowledgeType = false;
-		private bool acknowledgment = false;
-		private bool administrationQueue = false;
-		private bool appSpecific = false;
-		private bool arrivedTime = false;
-		private bool attachSenderId = false;
-		private bool authenticated = false;
-		private bool authenticationProviderName = false;
-		private bool authenticationProviderType = false;
-		private bool body = false;
-		private bool connectorType = false;
-		private bool correlationId = false;
-		private int defaultBodySize = 1024;
-		private int defaultExtensionSize = 255;
-		private int defaultLabelSize = 255;
-		private bool destinationQueue = false;
-		private bool destinationSymmetricKey = false;
-		private bool digitalSignature = false;
-		private bool encryptionAlgorithm = false;
-		private bool extension = false;
-		private bool hashAlgorithm = false;
-		private bool id = false;
-		private bool isFirstInTransaction = false;
-		private bool isLastInTransaction = false;
-		private bool label = false;
-		private bool messageType = false;
-		private bool priority = false;
-		private bool recoverable = false;
-		private bool responseQueue = false;
-		private bool senderCertificate = false;
-		private bool senderId = false;
-		private bool senderVersion = false;
-		private bool sentTime = false;
-		private bool sourceMachine = false;
-		private bool timeToBeReceived = false;
-		private bool timeToReachQueue = false;
-		private bool transactionId = false;
-		private bool transactionStatusQueue = false;
-		private bool useAuthentication = false;
-		private bool useDeadLetterQueue = false;
-		private bool useEncryption = false;
-		private bool useJournalQueue = false;
-		private bool useTracing = false;
-
-		[MonoTODO]
-		public MessagePropertyFilter ()
-		{
-
-		}
-
-		[DefaultValue (true)]
-		[MessagingDescription ("MsgAcknowledgeType")]
-		public bool AcknowledgeType
-		{
-			get { return acknowledgeType; }
-			set { acknowledgeType = value; }
-		}
-
-		[DefaultValue (true)]
-		[MessagingDescription ("MsgAcknowledgement")]
-		public bool Acknowledgment
-		{
-			get { return acknowledgment; }
-			set { acknowledgment = value; }
-		}
-
-		[DefaultValue (true)]
-		[MessagingDescription ("MsgAdministrationQueue")]
-		public bool AdministrationQueue
-		{
-			get { return administrationQueue; }
-			set { administrationQueue = value; }
-		}
-
-		[DefaultValue (false)]
-		[MessagingDescription ("MsgAppSpecific")]
-		public bool AppSpecific
-		{
-			get { return appSpecific; }
-			set { appSpecific = value; }
-		}
-
-		[DefaultValue (false)]
-		[MessagingDescription ("MsgArrivedTime")]
-		public bool ArrivedTime
-		{
-			get { return arrivedTime; }
-			set { arrivedTime = value; }
-		}
-
-		[DefaultValue (false)]
-		[MessagingDescription ("MsgAttachSenderId")]
-		public bool AttachSenderId
-		{
-			get { return attachSenderId; }
-			set { attachSenderId = value; }
-		}
-
-		[DefaultValue (false)]
-		[MessagingDescription ("MsgAuthenticated")]
-		public bool Authenticated
-		{
-			get { return authenticated; }
-			set { authenticated = value; }
-		}
-
-		[DefaultValue (false)]
-		[MessagingDescription ("MsgAuthenticationProviderName")]
-		public bool AuthenticationProviderName
-		{
-			get { return authenticationProviderName; }
-			set { authenticationProviderName = value; }
-		}
-
-		[DefaultValue (false)]
-		[MessagingDescription ("MsgAuthenticationProviderType")]
-		public bool AuthenticationProviderType
-		{
-			get { return authenticationProviderType; }
-			set { authenticationProviderType = value; }
-		}
-
-		[DefaultValue (true)]
-		[MessagingDescription ("MsgBody")]
-		public bool Body
-		{
-			get { return body; }
-			set { body = value; }
-		}
-
-		[DefaultValue (false)]
-		[MessagingDescription ("MsgConnectorType")]
-		public bool ConnectorType
-		{
-			get { return connectorType; }
-			set { connectorType = value; }
-		}
-
-		[DefaultValue (false)]
-		[MessagingDescription ("MsgCorrelationId")]
-		public bool CorrelationId
-		{
-			get { return correlationId; }
-			set { correlationId = value; }
-		}
-
-		[DefaultValue (1024)]
-		[MessagingDescription ("MsgDefaultBodySize")]
-		public int DefaultBodySize
-		{
-			get { return defaultBodySize; }
-			set
-			{
-				if (value < 0) 
-					throw new ArgumentException ("DefaultBodySize");
-				defaultBodySize = value;
-			}
-		}
-
-		[DefaultValue (255)]
-		[MessagingDescription ("MsgDefaultExtensionSize")]
-		public int DefaultExtensionSize
-		{
-			get { return defaultExtensionSize; }
-			set
-			{
-				if (value < 0) 
-					throw new ArgumentException ("DefaultExtensionSize");
-				defaultExtensionSize = value;
-			}
-		}
-
-		[DefaultValue (255)]
-		[MessagingDescription ("MsgDefaultLabelSize")]
-		public int DefaultLabelSize
-		{
-			get { return defaultLabelSize; }
-			set
-			{
-				if (value < 0) throw new ArgumentException ("DefaultLabelSize");
-				defaultLabelSize = value;
-			}
-		}
-
-		[DefaultValue (false)]
-		[MessagingDescription ("MsgDestinationQueue")]
-		public bool DestinationQueue
-		{
-			get { return destinationQueue; }
-			set { destinationQueue = value; }
-		}
-
-		[DefaultValue (false)]
-		[MessagingDescription ("MsgDestinationSymmetricKey")]
-		public bool DestinationSymmetricKey
-		{
-			get { return destinationSymmetricKey; }
-			set { destinationSymmetricKey = value; }
-		}
-
-		[DefaultValue (false)]
-		[MessagingDescription ("MsgDigitalSignature")]
-		public bool DigitalSignature
-		{
-			get { return digitalSignature; }
-			set { digitalSignature = value; }
-		}
-
-		[DefaultValue (false)]
-		[MessagingDescription ("MsgEncryptionAlgorithm")]
-		public bool EncryptionAlgorithm
-		{
-			get { return encryptionAlgorithm; }
-			set { encryptionAlgorithm = value; }
-		}
-
-		[DefaultValue (false)]
-		[MessagingDescription ("MsgExtension")]
-		public bool Extension
-		{
-			get { return extension; }
-			set { extension = value; }
-		}
-
-		[DefaultValue (false)]
-		[MessagingDescription ("MsgHashAlgorithm")]
-		public bool HashAlgorithm
-		{
-			get { return hashAlgorithm; }
-			set { hashAlgorithm = value; }
-		}
-
-		[DefaultValue (false)]
-		[MessagingDescription ("MsgId")]
-		public bool Id
-		{
-			get { return id; }
-			set { id = value; }
-		}
-
-		[DefaultValue (false)]
-		[MessagingDescription ("MsgIsFirstInTransaction")]
-		public bool IsFirstInTransaction
-		{
-			get { return isFirstInTransaction; }
-			set { isFirstInTransaction = value; }
-		}
-
-		[DefaultValue (false)]
-		[MessagingDescription ("MsgIsLastInTransaction")]
-		public bool IsLastInTransaction
-		{
-			get { return isLastInTransaction; }
-			set { isLastInTransaction = value; }
-		}
-
-		[DefaultValue (true)]
-		[MessagingDescription ("MsgLabel")]
-		public bool Label
-		{
-			get { return label; }
-			set { label = value; }
-		}
-
-		[DefaultValue (true)]
-		[MessagingDescription ("MsgMessageType")]
-		public bool MessageType
-		{
-			get { return messageType; }
-			set { messageType = value; }
-		}
-
-		[DefaultValue (false)]
-		[MessagingDescription ("MsgPriority")]
-		public bool Priority
-		{
-			get { return priority; }
-			set { priority = value; }
-		}
-
-		[DefaultValue (false)]
-		[MessagingDescription ("MsgRecoverable")]
-		public bool Recoverable
-		{
-			get { return recoverable; }
-			set { recoverable = value; }
-		}
-
-		[DefaultValue (true)]
-		[MessagingDescription ("MsgResponseQueue")]
-		public bool ResponseQueue
-		{
-			get { return responseQueue; }
-			set { responseQueue = value; }
-		}
-
-		[DefaultValue (false)]
-		[MessagingDescription ("MsgSenderCertificate")]
-		public bool SenderCertificate
-		{
-			get { return senderCertificate; }
-			set { senderCertificate = value; }
-		}
-
-		[DefaultValue (false)]
-		[MessagingDescription ("MsgSenderId")]
-		public bool SenderId
-		{
-			get { return senderId; }
-			set { senderId = value; }
-		}
-
-		[DefaultValue (false)]
-		[MessagingDescription ("MsgSenderVersion")]
-		public bool SenderVersion
-		{
-			get { return senderVersion; }
-			set { senderVersion = value; }
-		}
-
-		[DefaultValue (false)]
-		[MessagingDescription ("MsgSentTime")]
-		public bool SentTime
-		{
-			get { return sentTime; }
-			set { sentTime = value; }
-		}
-
-		[DefaultValue (false)]
-		[MessagingDescription ("MsgSourceMachine")]
-		public bool SourceMachine
-		{
-			get { return sourceMachine; }
-			set { sourceMachine = value; }
-		}
-
-		[DefaultValue (false)]
-		[MessagingDescription ("MsgTimeToBeReceived")]
-		public bool TimeToBeReceived
-		{
-			get { return timeToBeReceived; }
-			set { timeToBeReceived = value; }
-		}
-
-		[DefaultValue (false)]
-		[MessagingDescription ("MsgTimeToReachQueue")]
-		public bool TimeToReachQueue
-		{
-			get { return timeToReachQueue; }
-			set { timeToReachQueue = value; }
-		}
-
-		[DefaultValue (false)]
-		[MessagingDescription ("MsgTransactionId")]
-		public bool TransactionId
-		{
-			get { return transactionId; }
-			set { transactionId = value; }
-		}
-
-		[DefaultValue (false)]
-		[MessagingDescription ("MsgTransactionStatusQueue")]
-		public bool TransactionStatusQueue
-		{
-			get { return transactionStatusQueue; }
-			set { transactionStatusQueue = value; }
-		}
-
-		[DefaultValue (false)]
-		[MessagingDescription ("MsgUseAuthentication")]
-		public bool UseAuthentication
-		{
-			get { return useAuthentication; }
-			set { useAuthentication = value; }
-		}
-
-		[DefaultValue (true)]
-		[MessagingDescription ("MsgUseDeadLetterQueue")]
-		public bool UseDeadLetterQueue
-		{
-			get { return useDeadLetterQueue; }
-			set { useDeadLetterQueue = value; }
-		}
-
-		[DefaultValue (false)]
-		[MessagingDescription ("MsgUseEncryption")]
-		public bool UseEncryption
-		{
-			get { return useEncryption; }
-			set { useEncryption = value; }
-		}
-
-		[DefaultValue (true)]
-		[MessagingDescription ("MsgUseJournalQueue")]
-		public bool UseJournalQueue
-		{
-			get { return useJournalQueue; }
-			set { useJournalQueue = value; }
-		}
-
-		[DefaultValue (false)]
-		[MessagingDescription ("MsgUseTracing")]
-		public bool UseTracing
-		{
-			get { return useTracing; }
-			set { useTracing = value; }
-		}
-
-		public void ClearAll ()
-		{
-			acknowledgeType = false;
-			acknowledgment = false;
-			administrationQueue = false;
-			appSpecific = false;
-			arrivedTime = false;
-			attachSenderId = false;
-			authenticated = false;
-			authenticationProviderName = false;
-			authenticationProviderType = false;
-			body = false;
-			connectorType = false;
-			correlationId = false;
-			destinationQueue = false;
-			destinationSymmetricKey = false;
-			digitalSignature = false;
-			encryptionAlgorithm = false;
-			extension = false;
-			hashAlgorithm = false;
-			id = false;
-			isFirstInTransaction = false;
-			isLastInTransaction = false;
-			label = false;
-			messageType = false;
-			priority = false;
-			recoverable = false;
-			responseQueue = false;
-			senderCertificate = false;
-			senderId = false;
-			senderVersion = false;
-			sentTime = false;
-			sourceMachine = false;
-			timeToBeReceived = false;
-			timeToReachQueue = false;
-			transactionId = false;
-			transactionStatusQueue = false;
-			useAuthentication = false;
-			useDeadLetterQueue = false;
-			useEncryption = false;
-			useJournalQueue = false;
-			useTracing = false;
-		}
-
-		public void SetAll ()
-		{
-			acknowledgeType = true;
-			acknowledgment = true;
-			administrationQueue = true;
-			appSpecific = true;
-			arrivedTime = true;
-			attachSenderId = true;
-			authenticated = true;
-			authenticationProviderName = true;
-			authenticationProviderType = true;
-			body = true;
-			connectorType = true;
-			correlationId = true;
-			destinationQueue = true;
-			destinationSymmetricKey = true;
-			digitalSignature = true;
-			encryptionAlgorithm = true;
-			extension = true;
-			hashAlgorithm = true;
-			id = true;
-			isFirstInTransaction = true;
-			isLastInTransaction = true;
-			label = true;
-			messageType = true;
-			priority = true;
-			recoverable = true;
-			responseQueue = true;
-			senderCertificate = true;
-			senderId = true;
-			senderVersion = true;
-			sentTime = true;
-			sourceMachine = true;
-			timeToBeReceived = true;
-			timeToReachQueue = true;
-			transactionId = true;
-			transactionStatusQueue = true;
-			useAuthentication = true;
-			useDeadLetterQueue = true;
-			useEncryption = true;
-			useJournalQueue = true;
-			useTracing = true;
-		}
-
-		[MonoTODO]
-		public void SetDefaults ()
-		{
-			acknowledgeType = false;
-			acknowledgment = false;
-			administrationQueue = true;			//
-			appSpecific = false;
-			arrivedTime = true; 				//
-			attachSenderId = false;
-			authenticated = false;
-			authenticationProviderName = false;
-			authenticationProviderType = false;
-			body = true;						//
-			connectorType = false;
-			correlationId = true;				//
-			defaultBodySize = 1024;
-			defaultExtensionSize = 255;
-			defaultLabelSize = 255;
-			destinationQueue = false;
-			destinationSymmetricKey = false;
-			digitalSignature = false;
-			encryptionAlgorithm = false;
-			extension = false;
-			hashAlgorithm = false;
-			id = true;							//
-			isFirstInTransaction = false;
-			isLastInTransaction = false;
-			label = true;						//
-			messageType = false;
-			priority = false;
-			recoverable = false;
-			responseQueue = true;				//
-			senderCertificate = false;
-			senderId = false;
-			senderVersion = false;
-			sentTime = true;					//
-			sourceMachine = false;
-			timeToBeReceived = false;
-			timeToReachQueue = false;
-			transactionId = false;
-			transactionStatusQueue = false;
-			useAuthentication = false;
-			useDeadLetterQueue = false;
-			useEncryption = false;
-			useJournalQueue = false;
-			useTracing = false;
-		}
-	}
-}
+//
+// System.Messaging
+//
+// Authors:
+//      Peter Van Isacker (sclytrack at planetinternet.be)
+//
+// (C) 2003 Peter Van Isacker
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.ComponentModel;
+
+namespace System.Messaging
+{
+	[TypeConverter (typeof(ExpandableObjectConverter))]
+	public class MessagePropertyFilter
+	{
+		private bool acknowledgeType = false;
+		private bool acknowledgment = false;
+		private bool administrationQueue = false;
+		private bool appSpecific = false;
+		private bool arrivedTime = false;
+		private bool attachSenderId = false;
+		private bool authenticated = false;
+		private bool authenticationProviderName = false;
+		private bool authenticationProviderType = false;
+		private bool body = false;
+		private bool connectorType = false;
+		private bool correlationId = false;
+		private int defaultBodySize = 1024;
+		private int defaultExtensionSize = 255;
+		private int defaultLabelSize = 255;
+		private bool destinationQueue = false;
+		private bool destinationSymmetricKey = false;
+		private bool digitalSignature = false;
+		private bool encryptionAlgorithm = false;
+		private bool extension = false;
+		private bool hashAlgorithm = false;
+		private bool id = false;
+		private bool isFirstInTransaction = false;
+		private bool isLastInTransaction = false;
+		private bool label = false;
+		private bool messageType = false;
+		private bool priority = false;
+		private bool recoverable = false;
+		private bool responseQueue = false;
+		private bool senderCertificate = false;
+		private bool senderId = false;
+		private bool senderVersion = false;
+		private bool sentTime = false;
+		private bool sourceMachine = false;
+		private bool timeToBeReceived = false;
+		private bool timeToReachQueue = false;
+		private bool transactionId = false;
+		private bool transactionStatusQueue = false;
+		private bool useAuthentication = false;
+		private bool useDeadLetterQueue = false;
+		private bool useEncryption = false;
+		private bool useJournalQueue = false;
+		private bool useTracing = false;
+
+		[MonoTODO]
+		public MessagePropertyFilter ()
+		{
+
+		}
+
+		[DefaultValue (true)]
+		[MessagingDescription ("MsgAcknowledgeType")]
+		public bool AcknowledgeType
+		{
+			get { return acknowledgeType; }
+			set { acknowledgeType = value; }
+		}
+
+		[DefaultValue (true)]
+		[MessagingDescription ("MsgAcknowledgement")]
+		public bool Acknowledgment
+		{
+			get { return acknowledgment; }
+			set { acknowledgment = value; }
+		}
+
+		[DefaultValue (true)]
+		[MessagingDescription ("MsgAdministrationQueue")]
+		public bool AdministrationQueue
+		{
+			get { return administrationQueue; }
+			set { administrationQueue = value; }
+		}
+
+		[DefaultValue (false)]
+		[MessagingDescription ("MsgAppSpecific")]
+		public bool AppSpecific
+		{
+			get { return appSpecific; }
+			set { appSpecific = value; }
+		}
+
+		[DefaultValue (false)]
+		[MessagingDescription ("MsgArrivedTime")]
+		public bool ArrivedTime
+		{
+			get { return arrivedTime; }
+			set { arrivedTime = value; }
+		}
+
+		[DefaultValue (false)]
+		[MessagingDescription ("MsgAttachSenderId")]
+		public bool AttachSenderId
+		{
+			get { return attachSenderId; }
+			set { attachSenderId = value; }
+		}
+
+		[DefaultValue (false)]
+		[MessagingDescription ("MsgAuthenticated")]
+		public bool Authenticated
+		{
+			get { return authenticated; }
+			set { authenticated = value; }
+		}
+
+		[DefaultValue (false)]
+		[MessagingDescription ("MsgAuthenticationProviderName")]
+		public bool AuthenticationProviderName
+		{
+			get { return authenticationProviderName; }
+			set { authenticationProviderName = value; }
+		}
+
+		[DefaultValue (false)]
+		[MessagingDescription ("MsgAuthenticationProviderType")]
+		public bool AuthenticationProviderType
+		{
+			get { return authenticationProviderType; }
+			set { authenticationProviderType = value; }
+		}
+
+		[DefaultValue (true)]
+		[MessagingDescription ("MsgBody")]
+		public bool Body
+		{
+			get { return body; }
+			set { body = value; }
+		}
+
+		[DefaultValue (false)]
+		[MessagingDescription ("MsgConnectorType")]
+		public bool ConnectorType
+		{
+			get { return connectorType; }
+			set { connectorType = value; }
+		}
+
+		[DefaultValue (false)]
+		[MessagingDescription ("MsgCorrelationId")]
+		public bool CorrelationId
+		{
+			get { return correlationId; }
+			set { correlationId = value; }
+		}
+
+		[DefaultValue (1024)]
+		[MessagingDescription ("MsgDefaultBodySize")]
+		public int DefaultBodySize
+		{
+			get { return defaultBodySize; }
+			set
+			{
+				if (value < 0) 
+					throw new ArgumentException ("DefaultBodySize");
+				defaultBodySize = value;
+			}
+		}
+
+		[DefaultValue (255)]
+		[MessagingDescription ("MsgDefaultExtensionSize")]
+		public int DefaultExtensionSize
+		{
+			get { return defaultExtensionSize; }
+			set
+			{
+				if (value < 0) 
+					throw new ArgumentException ("DefaultExtensionSize");
+				defaultExtensionSize = value;
+			}
+		}
+
+		[DefaultValue (255)]
+		[MessagingDescription ("MsgDefaultLabelSize")]
+		public int DefaultLabelSize
+		{
+			get { return defaultLabelSize; }
+			set
+			{
+				if (value < 0) throw new ArgumentException ("DefaultLabelSize");
+				defaultLabelSize = value;
+			}
+		}
+
+		[DefaultValue (false)]
+		[MessagingDescription ("MsgDestinationQueue")]
+		public bool DestinationQueue
+		{
+			get { return destinationQueue; }
+			set { destinationQueue = value; }
+		}
+
+		[DefaultValue (false)]
+		[MessagingDescription ("MsgDestinationSymmetricKey")]
+		public bool DestinationSymmetricKey
+		{
+			get { return destinationSymmetricKey; }
+			set { destinationSymmetricKey = value; }
+		}
+
+		[DefaultValue (false)]
+		[MessagingDescription ("MsgDigitalSignature")]
+		public bool DigitalSignature
+		{
+			get { return digitalSignature; }
+			set { digitalSignature = value; }
+		}
+
+		[DefaultValue (false)]
+		[MessagingDescription ("MsgEncryptionAlgorithm")]
+		public bool EncryptionAlgorithm
+		{
+			get { return encryptionAlgorithm; }
+			set { encryptionAlgorithm = value; }
+		}
+
+		[DefaultValue (false)]
+		[MessagingDescription ("MsgExtension")]
+		public bool Extension
+		{
+			get { return extension; }
+			set { extension = value; }
+		}
+
+		[DefaultValue (false)]
+		[MessagingDescription ("MsgHashAlgorithm")]
+		public bool HashAlgorithm
+		{
+			get { return hashAlgorithm; }
+			set { hashAlgorithm = value; }
+		}
+
+		[DefaultValue (false)]
+		[MessagingDescription ("MsgId")]
+		public bool Id
+		{
+			get { return id; }
+			set { id = value; }
+		}
+
+		[DefaultValue (false)]
+		[MessagingDescription ("MsgIsFirstInTransaction")]
+		public bool IsFirstInTransaction
+		{
+			get { return isFirstInTransaction; }
+			set { isFirstInTransaction = value; }
+		}
+
+		[DefaultValue (false)]
+		[MessagingDescription ("MsgIsLastInTransaction")]
+		public bool IsLastInTransaction
+		{
+			get { return isLastInTransaction; }
+			set { isLastInTransaction = value; }
+		}
+
+		[DefaultValue (true)]
+		[MessagingDescription ("MsgLabel")]
+		public bool Label
+		{
+			get { return label; }
+			set { label = value; }
+		}
+
+		[DefaultValue (true)]
+		[MessagingDescription ("MsgMessageType")]
+		public bool MessageType
+		{
+			get { return messageType; }
+			set { messageType = value; }
+		}
+
+		[DefaultValue (false)]
+		[MessagingDescription ("MsgPriority")]
+		public bool Priority
+		{
+			get { return priority; }
+			set { priority = value; }
+		}
+
+		[DefaultValue (false)]
+		[MessagingDescription ("MsgRecoverable")]
+		public bool Recoverable
+		{
+			get { return recoverable; }
+			set { recoverable = value; }
+		}
+
+		[DefaultValue (true)]
+		[MessagingDescription ("MsgResponseQueue")]
+		public bool ResponseQueue
+		{
+			get { return responseQueue; }
+			set { responseQueue = value; }
+		}
+
+		[DefaultValue (false)]
+		[MessagingDescription ("MsgSenderCertificate")]
+		public bool SenderCertificate
+		{
+			get { return senderCertificate; }
+			set { senderCertificate = value; }
+		}
+
+		[DefaultValue (false)]
+		[MessagingDescription ("MsgSenderId")]
+		public bool SenderId
+		{
+			get { return senderId; }
+			set { senderId = value; }
+		}
+
+		[DefaultValue (false)]
+		[MessagingDescription ("MsgSenderVersion")]
+		public bool SenderVersion
+		{
+			get { return senderVersion; }
+			set { senderVersion = value; }
+		}
+
+		[DefaultValue (false)]
+		[MessagingDescription ("MsgSentTime")]
+		public bool SentTime
+		{
+			get { return sentTime; }
+			set { sentTime = value; }
+		}
+
+		[DefaultValue (false)]
+		[MessagingDescription ("MsgSourceMachine")]
+		public bool SourceMachine
+		{
+			get { return sourceMachine; }
+			set { sourceMachine = value; }
+		}
+
+		[DefaultValue (false)]
+		[MessagingDescription ("MsgTimeToBeReceived")]
+		public bool TimeToBeReceived
+		{
+			get { return timeToBeReceived; }
+			set { timeToBeReceived = value; }
+		}
+
+		[DefaultValue (false)]
+		[MessagingDescription ("MsgTimeToReachQueue")]
+		public bool TimeToReachQueue
+		{
+			get { return timeToReachQueue; }
+			set { timeToReachQueue = value; }
+		}
+
+		[DefaultValue (false)]
+		[MessagingDescription ("MsgTransactionId")]
+		public bool TransactionId
+		{
+			get { return transactionId; }
+			set { transactionId = value; }
+		}
+
+		[DefaultValue (false)]
+		[MessagingDescription ("MsgTransactionStatusQueue")]
+		public bool TransactionStatusQueue
+		{
+			get { return transactionStatusQueue; }
+			set { transactionStatusQueue = value; }
+		}
+
+		[DefaultValue (false)]
+		[MessagingDescription ("MsgUseAuthentication")]
+		public bool UseAuthentication
+		{
+			get { return useAuthentication; }
+			set { useAuthentication = value; }
+		}
+
+		[DefaultValue (true)]
+		[MessagingDescription ("MsgUseDeadLetterQueue")]
+		public bool UseDeadLetterQueue
+		{
+			get { return useDeadLetterQueue; }
+			set { useDeadLetterQueue = value; }
+		}
+
+		[DefaultValue (false)]
+		[MessagingDescription ("MsgUseEncryption")]
+		public bool UseEncryption
+		{
+			get { return useEncryption; }
+			set { useEncryption = value; }
+		}
+
+		[DefaultValue (true)]
+		[MessagingDescription ("MsgUseJournalQueue")]
+		public bool UseJournalQueue
+		{
+			get { return useJournalQueue; }
+			set { useJournalQueue = value; }
+		}
+
+		[DefaultValue (false)]
+		[MessagingDescription ("MsgUseTracing")]
+		public bool UseTracing
+		{
+			get { return useTracing; }
+			set { useTracing = value; }
+		}
+
+		public void ClearAll ()
+		{
+			acknowledgeType = false;
+			acknowledgment = false;
+			administrationQueue = false;
+			appSpecific = false;
+			arrivedTime = false;
+			attachSenderId = false;
+			authenticated = false;
+			authenticationProviderName = false;
+			authenticationProviderType = false;
+			body = false;
+			connectorType = false;
+			correlationId = false;
+			destinationQueue = false;
+			destinationSymmetricKey = false;
+			digitalSignature = false;
+			encryptionAlgorithm = false;
+			extension = false;
+			hashAlgorithm = false;
+			id = false;
+			isFirstInTransaction = false;
+			isLastInTransaction = false;
+			label = false;
+			messageType = false;
+			priority = false;
+			recoverable = false;
+			responseQueue = false;
+			senderCertificate = false;
+			senderId = false;
+			senderVersion = false;
+			sentTime = false;
+			sourceMachine = false;
+			timeToBeReceived = false;
+			timeToReachQueue = false;
+			transactionId = false;
+			transactionStatusQueue = false;
+			useAuthentication = false;
+			useDeadLetterQueue = false;
+			useEncryption = false;
+			useJournalQueue = false;
+			useTracing = false;
+		}
+
+		public void SetAll ()
+		{
+			acknowledgeType = true;
+			acknowledgment = true;
+			administrationQueue = true;
+			appSpecific = true;
+			arrivedTime = true;
+			attachSenderId = true;
+			authenticated = true;
+			authenticationProviderName = true;
+			authenticationProviderType = true;
+			body = true;
+			connectorType = true;
+			correlationId = true;
+			destinationQueue = true;
+			destinationSymmetricKey = true;
+			digitalSignature = true;
+			encryptionAlgorithm = true;
+			extension = true;
+			hashAlgorithm = true;
+			id = true;
+			isFirstInTransaction = true;
+			isLastInTransaction = true;
+			label = true;
+			messageType = true;
+			priority = true;
+			recoverable = true;
+			responseQueue = true;
+			senderCertificate = true;
+			senderId = true;
+			senderVersion = true;
+			sentTime = true;
+			sourceMachine = true;
+			timeToBeReceived = true;
+			timeToReachQueue = true;
+			transactionId = true;
+			transactionStatusQueue = true;
+			useAuthentication = true;
+			useDeadLetterQueue = true;
+			useEncryption = true;
+			useJournalQueue = true;
+			useTracing = true;
+		}
+
+		[MonoTODO]
+		public void SetDefaults ()
+		{
+			acknowledgeType = false;
+			acknowledgment = false;
+			administrationQueue = true;			//
+			appSpecific = false;
+			arrivedTime = true; 				//
+			attachSenderId = false;
+			authenticated = false;
+			authenticationProviderName = false;
+			authenticationProviderType = false;
+			body = true;						//
+			connectorType = false;
+			correlationId = true;				//
+			defaultBodySize = 1024;
+			defaultExtensionSize = 255;
+			defaultLabelSize = 255;
+			destinationQueue = false;
+			destinationSymmetricKey = false;
+			digitalSignature = false;
+			encryptionAlgorithm = false;
+			extension = false;
+			hashAlgorithm = false;
+			id = true;							//
+			isFirstInTransaction = false;
+			isLastInTransaction = false;
+			label = true;						//
+			messageType = false;
+			priority = false;
+			recoverable = false;
+			responseQueue = true;				//
+			senderCertificate = false;
+			senderId = false;
+			senderVersion = false;
+			sentTime = true;					//
+			sourceMachine = false;
+			timeToBeReceived = false;
+			timeToReachQueue = false;
+			transactionId = false;
+			transactionStatusQueue = false;
+			useAuthentication = false;
+			useDeadLetterQueue = false;
+			useEncryption = false;
+			useJournalQueue = false;
+			useTracing = false;
+		}
+	}
+}
diff --git a/mcs/class/System.Messaging/System.Messaging/MessageQueue.cs b/mcs/class/System.Messaging/System.Messaging/MessageQueue.cs
index 4fc9403..8b3481b 100644
--- a/mcs/class/System.Messaging/System.Messaging/MessageQueue.cs
+++ b/mcs/class/System.Messaging/System.Messaging/MessageQueue.cs
@@ -42,7 +42,7 @@ namespace System.Messaging
 {
 	[TypeConverter (typeof(MessageQueueConverter))]
 	[Editor ("System.Messaging.Design.QueuePathEditor", "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
-	[Designer ("Microsoft.VisualStudio.Install.MessageQueueInstallableComponentDesigner, " + Consts.AssemblyMicrosoft_VisualStudio)]
+//	[Designer ("Microsoft.VisualStudio.Install.MessageQueueInstallableComponentDesigner, " + Consts.AssemblyMicrosoft_VisualStudio)]
 	[InstallerType (typeof(MessageQueueInstaller))]
 	[DefaultEvent ("ReceiveCompleted")]
 	public class MessageQueue : Component, IEnumerable
@@ -293,7 +293,6 @@ namespace System.Messaging
 			}
 		}
 
-		[RecommendedAsConfigurable (true)]
 		[Editor ("System.Messaging.Design.QueuePathEditor", "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
 		[Browsable (false)]
 		[DefaultValue ("")]
@@ -504,6 +503,7 @@ namespace System.Messaging
 			throw new NotImplementedException ();
 		}
 
+		[Obsolete]
 		public IEnumerator GetEnumerator ()
 		{
 			return GetMessageEnumerator ();
@@ -514,15 +514,24 @@ namespace System.Messaging
 			throw new NotImplementedException ();
 		}
 
+		[Obsolete]
 		public MessageEnumerator GetMessageEnumerator ()
 		{
 			return new MessageEnumerator (delegateQueue.GetMessageEnumerator (), Formatter);
 		}
+		
 		[MonoTODO]
 		public static MessageQueueEnumerator GetMessageQueueEnumerator ()
 		{
 			throw new NotImplementedException ();
 		}
+		
+		[MonoTODO]
+		public MessageEnumerator GetMessageEnumerator2 ()
+		{
+			throw new NotImplementedException ();
+		}
+		
 		[MonoTODO]
 		private static ArrayList filteredQueueList (MessageQueueCriteria criteria)
 		{
diff --git a/mcs/class/System.Messaging/System.Messaging/MessageQueueAccessControlEntry.cs b/mcs/class/System.Messaging/System.Messaging/MessageQueueAccessControlEntry.cs
index 4dbd414..426ee7a 100644
--- a/mcs/class/System.Messaging/System.Messaging/MessageQueueAccessControlEntry.cs
+++ b/mcs/class/System.Messaging/System.Messaging/MessageQueueAccessControlEntry.cs
@@ -1,11 +1,11 @@
-//
-// System.Messaging
-//
-// Authors:
-//      Peter Van Isacker (sclytrack at planetinternet.be)
-//
-// (C) 2003 Peter Van Isacker
-//
+//
+// System.Messaging
+//
+// Authors:
+//      Peter Van Isacker (sclytrack at planetinternet.be)
+//
+// (C) 2003 Peter Van Isacker
+//
 
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -27,27 +27,27 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-using System;
-
-namespace System.Messaging 
-{
-	public class MessageQueueAccessControlEntry: AccessControlEntry 
-	{
-		[MonoTODO]
-		public MessageQueueAccessControlEntry(Trustee trustee, MessageQueueAccessRights rights)
-		{
-		}
-		
-		[MonoTODO]
-		public MessageQueueAccessControlEntry(Trustee trustee, MessageQueueAccessRights rights, AccessControlEntryType entryType)
-		{
-		}
-		
-		public MessageQueueAccessRights MessageQueueAccessRights {
-			[MonoTODO]
-			get {throw new NotImplementedException();}
-			[MonoTODO]
-			set {throw new NotImplementedException();}
-		}
-	}
-}
+using System;
+
+namespace System.Messaging 
+{
+	public class MessageQueueAccessControlEntry: AccessControlEntry 
+	{
+		[MonoTODO]
+		public MessageQueueAccessControlEntry(Trustee trustee, MessageQueueAccessRights rights)
+		{
+		}
+		
+		[MonoTODO]
+		public MessageQueueAccessControlEntry(Trustee trustee, MessageQueueAccessRights rights, AccessControlEntryType entryType)
+		{
+		}
+		
+		public MessageQueueAccessRights MessageQueueAccessRights {
+			[MonoTODO]
+			get {throw new NotImplementedException();}
+			[MonoTODO]
+			set {throw new NotImplementedException();}
+		}
+	}
+}
diff --git a/mcs/class/System.Messaging/System.Messaging/MessageQueueAccessRights.cs b/mcs/class/System.Messaging/System.Messaging/MessageQueueAccessRights.cs
index 2318bcb..77d9271 100644
--- a/mcs/class/System.Messaging/System.Messaging/MessageQueueAccessRights.cs
+++ b/mcs/class/System.Messaging/System.Messaging/MessageQueueAccessRights.cs
@@ -1,11 +1,11 @@
-//
-// System.Messaging
-//
-// Authors:
-//      Peter Van Isacker (sclytrack at planetinternet.be)
-//
-//	(C) Ximian, Inc.  http://www.ximian.com
-//
+//
+// System.Messaging
+//
+// Authors:
+//      Peter Van Isacker (sclytrack at planetinternet.be)
+//
+//	(C) Ximian, Inc.  http://www.ximian.com
+//
 
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -27,28 +27,28 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-using System;
-
-namespace System.Messaging 
-{
-	[Flags]
-	[Serializable]
-	public enum MessageQueueAccessRights
-	{
-		ChangeQueuePermissions = 262144,
-		DeleteJournalMessage = 8, 
-		DeleteMessage = 1,
-		DeleteQueue = 65536,
-		FullControl = 983103,
-		GenericRead = 131115,
-		GenericWrite = 131108, 
-		GetQueuePermissions = 131072, 
-		GetQueueProperties = 32,
-		PeekMessage = 2, 
-		ReceiveJournalMessage = 10, 
-		ReceiveMessage = 3,
-		SetQueueProperties = 16, 
-		TakeQueueOwnership = 524288,
-		WriteMessage = 4
-	}
-}
+using System;
+
+namespace System.Messaging 
+{
+	[Flags]
+	[Serializable]
+	public enum MessageQueueAccessRights
+	{
+		ChangeQueuePermissions = 262144,
+		DeleteJournalMessage = 8, 
+		DeleteMessage = 1,
+		DeleteQueue = 65536,
+		FullControl = 983103,
+		GenericRead = 131115,
+		GenericWrite = 131108, 
+		GetQueuePermissions = 131072, 
+		GetQueueProperties = 32,
+		PeekMessage = 2, 
+		ReceiveJournalMessage = 10, 
+		ReceiveMessage = 3,
+		SetQueueProperties = 16, 
+		TakeQueueOwnership = 524288,
+		WriteMessage = 4
+	}
+}
diff --git a/mcs/class/System.Messaging/System.Messaging/MessageQueueCriteria.cs b/mcs/class/System.Messaging/System.Messaging/MessageQueueCriteria.cs
index 885edc8..676e48f 100644
--- a/mcs/class/System.Messaging/System.Messaging/MessageQueueCriteria.cs
+++ b/mcs/class/System.Messaging/System.Messaging/MessageQueueCriteria.cs
@@ -1,206 +1,206 @@
-//
-// System.Messaging
-//
-// Authors:
-//      Peter Van Isacker (sclytrack at planetinternet.be)
-//      Rafael Teixeira   (rafaelteixeirabr at hotmail.com)
-//
-// (C) 2003 Peter Van Isacker, Rafael Teixeira
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Messaging 
-{
-	public class MessageQueueCriteria 
-	{
-		public MessageQueueCriteria()
-		{
-			ClearAll();
-		}
-		
-		private bool setCategory;
-		private Guid category;
-		public Guid Category 
-		{
-			get 
-			{ 
-				if (!setCategory) 
-					throw new InvalidOperationException();
-				return category;
-			}
-			set 
-			{ 
-				category = value; 
-				setCategory = true; 
-			}
-		}
-		
-		private bool setCreatedAfter;
-		private DateTime createdAfter;
-		public DateTime CreatedAfter 
-		{
-			get 
-			{ 
-				if (!setCreatedAfter) 
-					throw new InvalidOperationException();
-				return createdAfter;
-			}
-			set 
-			{ 
-				createdAfter = value; 
-				setCreatedAfter = true; 
-			}
-		}
-		
-		private bool setCreatedBefore;
-		private DateTime createdBefore;
-		public DateTime CreatedBefore 
-		{
-			get 
-			{ 
-				if (!setCreatedBefore) 
-					throw new InvalidOperationException();
-				return createdBefore;
-			}
-			set 
-			{ 
-				createdBefore = value; 
-				setCreatedBefore = true; 
-			}
-		}
-		
-		private bool setLabel;
-		private string label; 
-		public string Label 
-		{
-			get 
-			{ 
-				if (!setLabel) 
-					throw new InvalidOperationException();
-				return label;
-			}
-			set 
-			{ 
-				label = value; 
-				setLabel = true; 
-			}
-		}
-		
-		[MonoTODO]
-		private bool invalidMachineName(string name)
-		{
-			return false;
-		}
-		
-		private bool setMachineName;
-		private string machineName; 
-		public string MachineName 
-		{
-			get 
-			{ 
-				if (!setMachineName) 
-					throw new InvalidOperationException();
-				return machineName;
-			}
-			set 
-			{ 
-				if (invalidMachineName(value)) 
-					throw new InvalidOperationException();
-				machineName = value; 
-				setMachineName = true; 
-			}
-		}
-		
-		private bool setModifiedAfter;
-		private DateTime modifiedAfter; 
-		public DateTime ModifiedAfter 
-		{
-			get 
-			{ 
-				if (!setModifiedAfter) 
-					throw new InvalidOperationException();
-				return modifiedAfter;
-			}
-			set 
-			{ 
-				modifiedAfter = value; 
-				setModifiedAfter = true; 
-			}
-		}
-		
-		private bool setModifiedBefore;
-		private DateTime modifiedBefore; 
-		public DateTime ModifiedBefore 
-		{
-			get 
-			{ 
-				if (!setModifiedBefore) 
-					throw new InvalidOperationException();
-				return modifiedBefore;
-			}
-			set 
-			{ 
-				modifiedBefore = value; 
-				setModifiedBefore = true; 
-			}
-		}
-		
-		public void ClearAll()
-		{
-			setCategory = false;
-			setCreatedAfter = false;
-			setCreatedBefore = false;
-			setLabel = false;
-			setMachineName = false;
-			setModifiedAfter = false;
-			setModifiedBefore = false;
-		}
-		
-		// To be called by the MessageQueue.GetPublicQueues(MessageQueueCriteria criteria) method
-		internal bool Match(
-			Guid category,
-			DateTime created,
-			string label,
-			string machineName,
-			DateTime modified)
-		{
-			if (setCategory && this.category != category)
-				return false;
-			if (setCreatedAfter && created < createdAfter)
-				return false;
-			if (setCreatedBefore && created > createdBefore)
-				return false;
-			if (setLabel && this.label != label)
-				return false;			
-			if (setMachineName && this.machineName != machineName)
-				return false;			
-			if (setModifiedAfter && modified < modifiedAfter)
-				return false;
-			if (setModifiedBefore && modified > modifiedBefore)
-				return false;
-			return true;
-		}	
-		
-	}
-}
+//
+// System.Messaging
+//
+// Authors:
+//      Peter Van Isacker (sclytrack at planetinternet.be)
+//      Rafael Teixeira   (rafaelteixeirabr at hotmail.com)
+//
+// (C) 2003 Peter Van Isacker, Rafael Teixeira
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+
+namespace System.Messaging 
+{
+	public class MessageQueueCriteria 
+	{
+		public MessageQueueCriteria()
+		{
+			ClearAll();
+		}
+		
+		private bool setCategory;
+		private Guid category;
+		public Guid Category 
+		{
+			get 
+			{ 
+				if (!setCategory) 
+					throw new InvalidOperationException();
+				return category;
+			}
+			set 
+			{ 
+				category = value; 
+				setCategory = true; 
+			}
+		}
+		
+		private bool setCreatedAfter;
+		private DateTime createdAfter;
+		public DateTime CreatedAfter 
+		{
+			get 
+			{ 
+				if (!setCreatedAfter) 
+					throw new InvalidOperationException();
+				return createdAfter;
+			}
+			set 
+			{ 
+				createdAfter = value; 
+				setCreatedAfter = true; 
+			}
+		}
+		
+		private bool setCreatedBefore;
+		private DateTime createdBefore;
+		public DateTime CreatedBefore 
+		{
+			get 
+			{ 
+				if (!setCreatedBefore) 
+					throw new InvalidOperationException();
+				return createdBefore;
+			}
+			set 
+			{ 
+				createdBefore = value; 
+				setCreatedBefore = true; 
+			}
+		}
+		
+		private bool setLabel;
+		private string label; 
+		public string Label 
+		{
+			get 
+			{ 
+				if (!setLabel) 
+					throw new InvalidOperationException();
+				return label;
+			}
+			set 
+			{ 
+				label = value; 
+				setLabel = true; 
+			}
+		}
+		
+		[MonoTODO]
+		private bool invalidMachineName(string name)
+		{
+			return false;
+		}
+		
+		private bool setMachineName;
+		private string machineName; 
+		public string MachineName 
+		{
+			get 
+			{ 
+				if (!setMachineName) 
+					throw new InvalidOperationException();
+				return machineName;
+			}
+			set 
+			{ 
+				if (invalidMachineName(value)) 
+					throw new InvalidOperationException();
+				machineName = value; 
+				setMachineName = true; 
+			}
+		}
+		
+		private bool setModifiedAfter;
+		private DateTime modifiedAfter; 
+		public DateTime ModifiedAfter 
+		{
+			get 
+			{ 
+				if (!setModifiedAfter) 
+					throw new InvalidOperationException();
+				return modifiedAfter;
+			}
+			set 
+			{ 
+				modifiedAfter = value; 
+				setModifiedAfter = true; 
+			}
+		}
+		
+		private bool setModifiedBefore;
+		private DateTime modifiedBefore; 
+		public DateTime ModifiedBefore 
+		{
+			get 
+			{ 
+				if (!setModifiedBefore) 
+					throw new InvalidOperationException();
+				return modifiedBefore;
+			}
+			set 
+			{ 
+				modifiedBefore = value; 
+				setModifiedBefore = true; 
+			}
+		}
+		
+		public void ClearAll()
+		{
+			setCategory = false;
+			setCreatedAfter = false;
+			setCreatedBefore = false;
+			setLabel = false;
+			setMachineName = false;
+			setModifiedAfter = false;
+			setModifiedBefore = false;
+		}
+		
+		// To be called by the MessageQueue.GetPublicQueues(MessageQueueCriteria criteria) method
+		internal bool Match(
+			Guid category,
+			DateTime created,
+			string label,
+			string machineName,
+			DateTime modified)
+		{
+			if (setCategory && this.category != category)
+				return false;
+			if (setCreatedAfter && created < createdAfter)
+				return false;
+			if (setCreatedBefore && created > createdBefore)
+				return false;
+			if (setLabel && this.label != label)
+				return false;			
+			if (setMachineName && this.machineName != machineName)
+				return false;			
+			if (setModifiedAfter && modified < modifiedAfter)
+				return false;
+			if (setModifiedBefore && modified > modifiedBefore)
+				return false;
+			return true;
+		}	
+		
+	}
+}
diff --git a/mcs/class/System.Messaging/System.Messaging/MessageQueueEnumerator.cs b/mcs/class/System.Messaging/System.Messaging/MessageQueueEnumerator.cs
index 5492309..31eff30 100644
--- a/mcs/class/System.Messaging/System.Messaging/MessageQueueEnumerator.cs
+++ b/mcs/class/System.Messaging/System.Messaging/MessageQueueEnumerator.cs
@@ -1,110 +1,110 @@
-//
-// System.Messaging
-//
-// Authors:
-//      Peter Van Isacker (sclytrack at planetinternet.be)
-//      Rafael Teixeira   (rafaelteixeirabr at hotmail.com)
-//
-// (C) 2003 Peter Van Isacker
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections;
-
-namespace System.Messaging
-{
-	public class MessageQueueEnumerator : MarshalByRefObject, IEnumerator, IDisposable
-	{
-		private bool disposed;
-		private ArrayList queueList;
-		private int currentIndex;
-
-		internal MessageQueueEnumerator (ArrayList queueList)
-		{
-			this.queueList = queueList;
-			this.currentIndex = -1;
-		}
-
-		public MessageQueue Current
-		{
-			get
-			{
-				if (currentIndex < 0 || currentIndex >= queueList.Count)
-					return null;
-				return (MessageQueue) queueList[currentIndex];
-			}
-		}
-
-		object IEnumerator.Current
-		{
-			get
-			{
-				if (currentIndex < 0 || currentIndex >= queueList.Count)
-					return null;
-				return queueList[currentIndex];
-			}
-		}
-
-		public IntPtr LocatorHandle
-		{
-			[MonoTODO]
-			get
-			{
-				throw new NotImplementedException ();
-			}
-		}
-
-		[MonoTODO]
-		public void Close ()
-		{
-		}
-
-		public void Dispose ()
-		{
-			Dispose (true);
-			GC.SuppressFinalize (this);
-		}
-
-		protected virtual void Dispose (bool disposing)
-		{
-			Close ();
-			disposed = true;
-		}
-
-		public bool MoveNext ()
-		{
-			return (++currentIndex) < queueList.Count;
-		}
-
-		public void Reset ()
-		{
-			currentIndex = -1;
-		}
-
-		~MessageQueueEnumerator ()
-		{
-			if (!disposed)
-				Dispose (false);
-		}
-	}
-}
+//
+// System.Messaging
+//
+// Authors:
+//      Peter Van Isacker (sclytrack at planetinternet.be)
+//      Rafael Teixeira   (rafaelteixeirabr at hotmail.com)
+//
+// (C) 2003 Peter Van Isacker
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Collections;
+
+namespace System.Messaging
+{
+	public class MessageQueueEnumerator : MarshalByRefObject, IEnumerator, IDisposable
+	{
+		private bool disposed;
+		private ArrayList queueList;
+		private int currentIndex;
+
+		internal MessageQueueEnumerator (ArrayList queueList)
+		{
+			this.queueList = queueList;
+			this.currentIndex = -1;
+		}
+
+		public MessageQueue Current
+		{
+			get
+			{
+				if (currentIndex < 0 || currentIndex >= queueList.Count)
+					return null;
+				return (MessageQueue) queueList[currentIndex];
+			}
+		}
+
+		object IEnumerator.Current
+		{
+			get
+			{
+				if (currentIndex < 0 || currentIndex >= queueList.Count)
+					return null;
+				return queueList[currentIndex];
+			}
+		}
+
+		public IntPtr LocatorHandle
+		{
+			[MonoTODO]
+			get
+			{
+				throw new NotImplementedException ();
+			}
+		}
+
+		[MonoTODO]
+		public void Close ()
+		{
+		}
+
+		public void Dispose ()
+		{
+			Dispose (true);
+			GC.SuppressFinalize (this);
+		}
+
+		protected virtual void Dispose (bool disposing)
+		{
+			Close ();
+			disposed = true;
+		}
+
+		public bool MoveNext ()
+		{
+			return (++currentIndex) < queueList.Count;
+		}
+
+		public void Reset ()
+		{
+			currentIndex = -1;
+		}
+
+		~MessageQueueEnumerator ()
+		{
+			if (!disposed)
+				Dispose (false);
+		}
+	}
+}
diff --git a/mcs/class/System.Messaging/System.Messaging/MessageQueueErrorCode.cs b/mcs/class/System.Messaging/System.Messaging/MessageQueueErrorCode.cs
index 04b00db..6b21365 100644
--- a/mcs/class/System.Messaging/System.Messaging/MessageQueueErrorCode.cs
+++ b/mcs/class/System.Messaging/System.Messaging/MessageQueueErrorCode.cs
@@ -1,147 +1,147 @@
-//
-// System.Messaging
-//
-// Authors:
-//      Peter Van Isacker (sclytrack at planetinternet.be)
-//
-//	(C) 2003 Peter Van Isacker
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Messaging
-{
-	[Serializable]
-	public enum MessageQueueErrorCode
-	{
-		AccessDenied = -1072824283,
-		BadSecurityContext = -1072824267,
-		Base = -1072824320,
-		BufferOverflow = -1072824294,
-		CannotCreateCertificateStore = -1072824209,
-		CannotCreateHashEx = -1072824191,
-		CannotCreateOnGlobalCatalog = -1072824201,
-		CannotGetDistinguishedName = -1072824194,
-		CannotGrantAddGuid = -1072824206,
-		CannotHashDataEx = -1072824193,
-		CannotImpersonateClient = -1072824284,
-		CannotJoinDomain = -1072824202,
-		CannotLoadMsmqOcm = -1072824205,
-		CannotOpenCertificateStore = -1072824208,
-		CannotSetCryptographicSecurityDescriptor = -1072824212,
-		CannotSignDataEx = -1072824192,
-		CertificateNotProvided = -1072824211,
-		ComputerDoesNotSupportEncryption = -1072824269,
-		CorruptedInternalCertificate = -1072824275,
-		CorruptedPersonalCertStore = -1072824271,
-		CorruptedQueueWasDeleted = -1072824216,
-		CorruptedSecurityData = -1072824272,
-		CouldNotGetAccountInfo = -1072824265,
-		CouldNotGetUserSid = -1072824266,
-		DeleteConnectedNetworkInUse = -1072824248,
-		DependentClientLicenseOverflow = -1072824217,
-		DsError = -1072824253,
-		DsIsFull = -1072824254,
-		DtcConnect = -1072824244,
-		EncryptionProviderNotSupported = -1072824213,
-		FailVerifySignatureEx = -1072824190,
-		FormatNameBufferTooSmall = -1072824289,
-		Generic = -1072824319,
-		GuidNotMatching = -1072824200,
-		IllegalContext = -1072824229,
-		IllegalCriteriaColumns = -1072824264,
-		IllegalCursorAction = -1072824292,
-		IllegalEnterpriseOperation = -1072824207,
-		IllegalFormatName = -1072824290,
-		IllegalMessageProperties = -1072824255,
-		IllegalOperation = -1072824220,
-		IllegalPrivateProperties = -1072824197,
-		IllegalPropertyId = -1072824263,
-		IllegalPropertySize = -1072824261,
-		IllegalPropertyValue = -1072824296,
-		IllegalPropertyVt = -1072824295,
-		IllegalQueuePathName = -1072824300,
-		IllegalQueueProperties = -1072824259,
-		IllegalRelation = -1072824262,
-		IllegalRestrictionPropertyId = -1072824260,
-		IllegalSecurityDescriptor = -1072824287,
-		IllegalSort = -1072824304,
-		IllegalSortPropertyId = -1072824228,
-		IllegalUser = -1072824303,
-		InsufficientProperties = -1072824257,
-		InsufficientResources = -1072824281,
-		InvalidCertificate = -1072824276,
-		InvalidHandle = -1072824313,
-		InvalidOwner = -1072824252,
-		InvalidParameter = -1072824314,
-		IOTimeout = -1072824293,
-		LabelBufferTooSmall = -1072824226,
-		MachineExists = -1072824256,
-		MachineNotFound = -1072824307,
-		MessageAlreadyReceived = -1072824291,
-		MessageStorageFailed = -1072824278,
-		MissingConnectorType = -1072824235,
-		MqisReadOnlyMode = -1072824224,
-		MqisServerEmpty = -1072824225,
-		NoDs = -1072824301,
-		NoEntryPointMsmqOcm = -1072824204,
-		NoGlobalCatalogInDomain = -1072824196,
-		NoInternalUserCertificate = -1072824273,
-		NoMsmqServersOnDc = -1072824203,
-		NoMsmqServersOnGlobalCatalog = -1072824195,
-		NoResponseFromObjectServer = -1072824247,
-		ObjectServerNotAvailable = -1072824246,
-		OperationCanceled = -1072824312,
-		PrivilegeNotHeld = -1072824282,
-		Property = -1072824318,
-		PropertyNotAllowed = -1072824258,
-		ProviderNameBufferTooSmall = -1072824221,
-		PublicKeyDoesNotExist = -1072824198,
-		PublicKeyNotFound = -1072824199,
-		QDnsPropertyNotSupported = -1072824210,
-		QueueDeleted = -1072824230,
-		QueueExists = -1072824315,
-		QueueNotAvailable = -1072824245,
-		QueueNotFound = -1072824317,
-		RemoteMachineNotAvailable = -1072824215,
-		ResultBufferTooSmall = -1072824250,
-		SecurityDescriptorBufferTooSmall = -1072824285,
-		SenderCertificateBufferTooSmall = -1072824277,
-		SenderIdBufferTooSmall = -1072824286,
-		ServiceNotAvailable = -1072824309,
-		SharingViolation = -1072824311,
-		SignatureBufferTooSmall = -1072824222,
-		StaleHandle = -1072824234,
-		SymmetricKeyBufferTooSmall = -1072824223,
-		TransactionEnlist = -1072824232,
-		TransactionImport = -1072824242,
-		TransactionSequence = -1072824239,
-		TransactionUsage = -1072824240,
-		UnsupportedAccessMode = -1072824251,
-		UnsupportedFormatNameOperation = -1072824288,
-		UnsupportedOperation = -1072824214,
-		UserBufferTooSmall = -1072824280,
-		WksCantServeClient = -1072824218,
-		WriteNotAllowed = -1072824219
-	}
-}
+//
+// System.Messaging
+//
+// Authors:
+//      Peter Van Isacker (sclytrack at planetinternet.be)
+//
+//	(C) 2003 Peter Van Isacker
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+
+namespace System.Messaging
+{
+	[Serializable]
+	public enum MessageQueueErrorCode
+	{
+		AccessDenied = -1072824283,
+		BadSecurityContext = -1072824267,
+		Base = -1072824320,
+		BufferOverflow = -1072824294,
+		CannotCreateCertificateStore = -1072824209,
+		CannotCreateHashEx = -1072824191,
+		CannotCreateOnGlobalCatalog = -1072824201,
+		CannotGetDistinguishedName = -1072824194,
+		CannotGrantAddGuid = -1072824206,
+		CannotHashDataEx = -1072824193,
+		CannotImpersonateClient = -1072824284,
+		CannotJoinDomain = -1072824202,
+		CannotLoadMsmqOcm = -1072824205,
+		CannotOpenCertificateStore = -1072824208,
+		CannotSetCryptographicSecurityDescriptor = -1072824212,
+		CannotSignDataEx = -1072824192,
+		CertificateNotProvided = -1072824211,
+		ComputerDoesNotSupportEncryption = -1072824269,
+		CorruptedInternalCertificate = -1072824275,
+		CorruptedPersonalCertStore = -1072824271,
+		CorruptedQueueWasDeleted = -1072824216,
+		CorruptedSecurityData = -1072824272,
+		CouldNotGetAccountInfo = -1072824265,
+		CouldNotGetUserSid = -1072824266,
+		DeleteConnectedNetworkInUse = -1072824248,
+		DependentClientLicenseOverflow = -1072824217,
+		DsError = -1072824253,
+		DsIsFull = -1072824254,
+		DtcConnect = -1072824244,
+		EncryptionProviderNotSupported = -1072824213,
+		FailVerifySignatureEx = -1072824190,
+		FormatNameBufferTooSmall = -1072824289,
+		Generic = -1072824319,
+		GuidNotMatching = -1072824200,
+		IllegalContext = -1072824229,
+		IllegalCriteriaColumns = -1072824264,
+		IllegalCursorAction = -1072824292,
+		IllegalEnterpriseOperation = -1072824207,
+		IllegalFormatName = -1072824290,
+		IllegalMessageProperties = -1072824255,
+		IllegalOperation = -1072824220,
+		IllegalPrivateProperties = -1072824197,
+		IllegalPropertyId = -1072824263,
+		IllegalPropertySize = -1072824261,
+		IllegalPropertyValue = -1072824296,
+		IllegalPropertyVt = -1072824295,
+		IllegalQueuePathName = -1072824300,
+		IllegalQueueProperties = -1072824259,
+		IllegalRelation = -1072824262,
+		IllegalRestrictionPropertyId = -1072824260,
+		IllegalSecurityDescriptor = -1072824287,
+		IllegalSort = -1072824304,
+		IllegalSortPropertyId = -1072824228,
+		IllegalUser = -1072824303,
+		InsufficientProperties = -1072824257,
+		InsufficientResources = -1072824281,
+		InvalidCertificate = -1072824276,
+		InvalidHandle = -1072824313,
+		InvalidOwner = -1072824252,
+		InvalidParameter = -1072824314,
+		IOTimeout = -1072824293,
+		LabelBufferTooSmall = -1072824226,
+		MachineExists = -1072824256,
+		MachineNotFound = -1072824307,
+		MessageAlreadyReceived = -1072824291,
+		MessageStorageFailed = -1072824278,
+		MissingConnectorType = -1072824235,
+		MqisReadOnlyMode = -1072824224,
+		MqisServerEmpty = -1072824225,
+		NoDs = -1072824301,
+		NoEntryPointMsmqOcm = -1072824204,
+		NoGlobalCatalogInDomain = -1072824196,
+		NoInternalUserCertificate = -1072824273,
+		NoMsmqServersOnDc = -1072824203,
+		NoMsmqServersOnGlobalCatalog = -1072824195,
+		NoResponseFromObjectServer = -1072824247,
+		ObjectServerNotAvailable = -1072824246,
+		OperationCanceled = -1072824312,
+		PrivilegeNotHeld = -1072824282,
+		Property = -1072824318,
+		PropertyNotAllowed = -1072824258,
+		ProviderNameBufferTooSmall = -1072824221,
+		PublicKeyDoesNotExist = -1072824198,
+		PublicKeyNotFound = -1072824199,
+		QDnsPropertyNotSupported = -1072824210,
+		QueueDeleted = -1072824230,
+		QueueExists = -1072824315,
+		QueueNotAvailable = -1072824245,
+		QueueNotFound = -1072824317,
+		RemoteMachineNotAvailable = -1072824215,
+		ResultBufferTooSmall = -1072824250,
+		SecurityDescriptorBufferTooSmall = -1072824285,
+		SenderCertificateBufferTooSmall = -1072824277,
+		SenderIdBufferTooSmall = -1072824286,
+		ServiceNotAvailable = -1072824309,
+		SharingViolation = -1072824311,
+		SignatureBufferTooSmall = -1072824222,
+		StaleHandle = -1072824234,
+		SymmetricKeyBufferTooSmall = -1072824223,
+		TransactionEnlist = -1072824232,
+		TransactionImport = -1072824242,
+		TransactionSequence = -1072824239,
+		TransactionUsage = -1072824240,
+		UnsupportedAccessMode = -1072824251,
+		UnsupportedFormatNameOperation = -1072824288,
+		UnsupportedOperation = -1072824214,
+		UserBufferTooSmall = -1072824280,
+		WksCantServeClient = -1072824218,
+		WriteNotAllowed = -1072824219
+	}
+}
diff --git a/mcs/class/System.Messaging/System.Messaging/MessageQueuePermission.cs b/mcs/class/System.Messaging/System.Messaging/MessageQueuePermission.cs
index f0a1806..ac39e8c 100644
--- a/mcs/class/System.Messaging/System.Messaging/MessageQueuePermission.cs
+++ b/mcs/class/System.Messaging/System.Messaging/MessageQueuePermission.cs
@@ -1,11 +1,11 @@
-//
-// System.Messaging.MessageQueuePermission.cs
-//
-// Authors:
-//      Peter Van Isacker (sclytrack at planetinternet.be)
+//
+// System.Messaging.MessageQueuePermission.cs
+//
+// Authors:
+//      Peter Van Isacker (sclytrack at planetinternet.be)
 //	Sebastien Pouliot  <sebastien at ximian.com>
-//
-// (C) 2003 Peter Van Isacker
+//
+// (C) 2003 Peter Van Isacker
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -29,56 +29,56 @@
 //
 
 using System.Globalization;
-using System.Security;
-using System.Security.Permissions;
-
+using System.Security;
+using System.Security.Permissions;
+
 namespace System.Messaging {
-
-	[Serializable]
+
+	[Serializable]
 	public sealed class MessageQueuePermission: CodeAccessPermission, IUnrestrictedPermission {
 
 		private const int version = 1;
 
 		private MessageQueuePermissionEntryCollection _list;
 		private bool _unrestricted;
-
-		public MessageQueuePermission ()
+
+		public MessageQueuePermission ()
 		{
-			_list = new MessageQueuePermissionEntryCollection (this);
-		}
-		
+			_list = new MessageQueuePermissionEntryCollection (this);
+		}
+		
 		public MessageQueuePermission (MessageQueuePermissionEntry[] permissionAccessEntries)
-			: this ()
+			: this ()
 		{
 			foreach (MessageQueuePermissionEntry entry in permissionAccessEntries)
-				_list.Add (entry);
-		}
-		
-		public MessageQueuePermission (PermissionState state)
-			: this ()
-		{
+				_list.Add (entry);
+		}
+		
+		public MessageQueuePermission (PermissionState state)
+			: this ()
+		{
 			_unrestricted = (state == PermissionState.Unrestricted);
-		}
-		
-		public MessageQueuePermission (MessageQueuePermissionAccess permissionAccess, string path)
-			: this ()
-		{
+		}
+		
+		public MessageQueuePermission (MessageQueuePermissionAccess permissionAccess, string path)
+			: this ()
+		{
 			MessageQueuePermissionEntry entry = new MessageQueuePermissionEntry (permissionAccess, path);
 			_list.Add (entry);
-		}
-		
-		public MessageQueuePermission (MessageQueuePermissionAccess permissionAccess,
-			string machineName, string label, string category) : this ()
+		}
+		
+		public MessageQueuePermission (MessageQueuePermissionAccess permissionAccess,
+			string machineName, string label, string category) : this ()
 		{
 			MessageQueuePermissionEntry entry = new MessageQueuePermissionEntry (permissionAccess, machineName, label, category);
 			_list.Add (entry);
-		}
-		
-		public MessageQueuePermissionEntryCollection PermissionEntries {
-			get { return _list; }
-		}
-		
-		public override IPermission Copy ()
+		}
+		
+		public MessageQueuePermissionEntryCollection PermissionEntries {
+			get { return _list; }
+		}
+		
+		public override IPermission Copy ()
 		{
 			if (_unrestricted)
 				return new MessageQueuePermission (PermissionState.Unrestricted);
@@ -87,17 +87,17 @@ namespace System.Messaging {
 				foreach (MessageQueuePermissionEntry entry in _list)
 					copy._list.Add (entry);
 				return copy;
-			}
-		}
+			}
+		}
 
-		public bool IsUnrestricted () 
-		{
-			return _unrestricted;
-		}
-
-		[MonoTODO]
-		public override void FromXml (SecurityElement securityElement)
-		{
+		public bool IsUnrestricted () 
+		{
+			return _unrestricted;
+		}
+
+		[MonoTODO]
+		public override void FromXml (SecurityElement securityElement)
+		{
 			CheckSecurityElement (securityElement, "securityElement", version, version);
 			// Note: we do not (yet) care about the return value 
 			// as we only accept version 1 (min/max values)
@@ -105,39 +105,39 @@ namespace System.Messaging {
 			_unrestricted = (IsUnrestricted (securityElement));
 
 			// TODO read elements
-		}
-		
-		[MonoTODO]
-		public override IPermission Intersect (IPermission target)
+		}
+		
+		[MonoTODO]
+		public override IPermission Intersect (IPermission target)
 		{
-			MessageQueuePermission mqp = Cast (target);
-			return null;
-		}
-		
-		[MonoTODO]
-		public override bool IsSubsetOf (IPermission target)
-		{
-			MessageQueuePermission mqp = Cast (target);
-			return false;
-		}
-		
-		[MonoTODO]
-		public override SecurityElement ToXml ()
+			MessageQueuePermission mqp = Cast (target);
+			return null;
+		}
+		
+		[MonoTODO]
+		public override bool IsSubsetOf (IPermission target)
+		{
+			MessageQueuePermission mqp = Cast (target);
+			return false;
+		}
+		
+		[MonoTODO]
+		public override SecurityElement ToXml ()
 		{
 			SecurityElement se = Element (version);
 			if (_unrestricted)
 				se.AddAttribute ("Unrestricted", "true");
 			else {
 				// TODO
-			}
-			return se;
-		}
-		
-		[MonoTODO]
-		public override IPermission Union (IPermission target)
-		{
-			MessageQueuePermission mqp = Cast (target);
-			return null;
+			}
+			return se;
+		}
+		
+		[MonoTODO]
+		public override IPermission Union (IPermission target)
+		{
+			MessageQueuePermission mqp = Cast (target);
+			return null;
 		}
 
 		// helpers
@@ -265,5 +265,5 @@ namespace System.Messaging {
 			msg = String.Format (msg, target.GetType (), expected);
 			throw new ArgumentException (msg, "target");
 		}
-	}
-}
+	}
+}
diff --git a/mcs/class/System.Messaging/System.Messaging/MessageQueuePermissionAccess.cs b/mcs/class/System.Messaging/System.Messaging/MessageQueuePermissionAccess.cs
index 71cab60..a7b8a62 100644
--- a/mcs/class/System.Messaging/System.Messaging/MessageQueuePermissionAccess.cs
+++ b/mcs/class/System.Messaging/System.Messaging/MessageQueuePermissionAccess.cs
@@ -1,11 +1,11 @@
-//
-// System.Messaging
-//
-// Authors:
-//      Peter Van Isacker (sclytrack at planetinternet.be)
-//
-//	(C) Ximian, Inc.  http://www.ximian.com
-//
+//
+// System.Messaging
+//
+// Authors:
+//      Peter Van Isacker (sclytrack at planetinternet.be)
+//
+//	(C) Ximian, Inc.  http://www.ximian.com
+//
 
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -27,19 +27,19 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-using System;
-
-namespace System.Messaging
-{
-	[Flags]
-	[Serializable]
-	public enum MessageQueuePermissionAccess 
-	{
-		Administer = 62,
-		Browse = 2,
-		None = 0,
-		Peek = 10,
-		Receive = 26,
-		Send = 6
-	}
-}
+using System;
+
+namespace System.Messaging
+{
+	[Flags]
+	[Serializable]
+	public enum MessageQueuePermissionAccess 
+	{
+		Administer = 62,
+		Browse = 2,
+		None = 0,
+		Peek = 10,
+		Receive = 26,
+		Send = 6
+	}
+}
diff --git a/mcs/class/System.Messaging/System.Messaging/MessageQueuePermissionAttribute.cs b/mcs/class/System.Messaging/System.Messaging/MessageQueuePermissionAttribute.cs
index 07c0c20..c319f94 100644
--- a/mcs/class/System.Messaging/System.Messaging/MessageQueuePermissionAttribute.cs
+++ b/mcs/class/System.Messaging/System.Messaging/MessageQueuePermissionAttribute.cs
@@ -1,11 +1,11 @@
-//
-// System.Messaging.MessageQueuePermissionAttribute.cs
-//
-// Authors:
-//      Peter Van Isacker (sclytrack at planetinternet.be)
+//
+// System.Messaging.MessageQueuePermissionAttribute.cs
+//
+// Authors:
+//      Peter Van Isacker (sclytrack at planetinternet.be)
 //	Sebastien Pouliot  <sebastien at ximian.com>
-//
-// (C) 2003 Peter Van Isacker
+//
+// (C) 2003 Peter Van Isacker
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -28,15 +28,15 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-using System.Security;
-using System.Security.Permissions;
-
-namespace System.Messaging {
-	
-	[AttributeUsage (AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct |
+using System.Security;
+using System.Security.Permissions;
+
+namespace System.Messaging {
+	
+	[AttributeUsage (AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct |
 		AttributeTargets.Constructor | AttributeTargets.Method | AttributeTargets.Event,
-		AllowMultiple=true, Inherited=false)]
-	[Serializable]
+		AllowMultiple=true, Inherited=false)]
+	[Serializable]
 	public class MessageQueuePermissionAttribute: CodeAccessSecurityAttribute {
 
 		private MessageQueuePermissionAccess _permissionAccess;
@@ -44,61 +44,61 @@ namespace System.Messaging {
 		private string _label;
 		private string _category;
 		private string _path;
-
+
 		public MessageQueuePermissionAttribute (SecurityAction action)
-			:base (action)
-		{
-		}
-		
-		public string Category {
-			get { return _category; }
+			:base (action)
+		{
+		}
+		
+		public string Category {
+			get { return _category; }
 			set {
 				if (value == null)
 					throw new InvalidOperationException ("null");
 				_category = value;
-			}
-		}
-		
-		public string Label {
-			get { return _label; }
+			}
+		}
+		
+		public string Label {
+			get { return _label; }
 			set {
 				if (value == null)
 					throw new InvalidOperationException ("null");
 				_label = value;
-			}
-		}
-		
-		public string MachineName {
-			get { return _machineName; }
+			}
+		}
+		
+		public string MachineName {
+			get { return _machineName; }
 			set {
 				if (value == null)
 					throw new InvalidOperationException ("null");
 				MessageQueuePermission.ValidateMachineName (value);
 				_machineName = value;
-			}
-		}
-		
-		public string Path {
-			get { return _path; }
+			}
+		}
+		
+		public string Path {
+			get { return _path; }
 			set {
 				if (value == null)
 					throw new InvalidOperationException ("null");
 				MessageQueuePermission.ValidatePath (value);
 				_path = value;
-			}
-		}
-		
-		public MessageQueuePermissionAccess PermissionAccess {
-			get { return _permissionAccess; }
-			set { _permissionAccess = value; }
-		}
-		
-		public override IPermission CreatePermission ()
+			}
+		}
+		
+		public MessageQueuePermissionAccess PermissionAccess {
+			get { return _permissionAccess; }
+			set { _permissionAccess = value; }
+		}
+		
+		public override IPermission CreatePermission ()
 		{
 			if (base.Unrestricted)
 				return new MessageQueuePermission (PermissionState.Unrestricted);
-			else
+			else
 				return new MessageQueuePermission (_permissionAccess, _machineName, _label, _category);
-		}
-	}
-}
+		}
+	}
+}
diff --git a/mcs/class/System.Messaging/System.Messaging/MessageQueuePermissionEntry.cs b/mcs/class/System.Messaging/System.Messaging/MessageQueuePermissionEntry.cs
index df74099..c9c96af 100644
--- a/mcs/class/System.Messaging/System.Messaging/MessageQueuePermissionEntry.cs
+++ b/mcs/class/System.Messaging/System.Messaging/MessageQueuePermissionEntry.cs
@@ -1,11 +1,11 @@
-//
-// System.Messaging.MessageQueuePermissionEntry.cs
-//
-// Authors:
-//      Peter Van Isacker (sclytrack at planetinternet.be)
+//
+// System.Messaging.MessageQueuePermissionEntry.cs
+//
+// Authors:
+//      Peter Van Isacker (sclytrack at planetinternet.be)
 //	Sebastien Pouliot  <sebastien at ximian.com>
-//
-// (C) 2003 Peter Van Isacker
+//
+// (C) 2003 Peter Van Isacker
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -29,8 +29,8 @@
 //
 
 namespace System.Messaging {
-
-	[Serializable]
+
+	[Serializable]
 	public class MessageQueuePermissionEntry {
 
 		private MessageQueuePermissionAccess _permissionAccess;
@@ -38,47 +38,47 @@ namespace System.Messaging {
 		private string _label;
 		private string _category;
 		private string _path;
-
-		public MessageQueuePermissionEntry (MessageQueuePermissionAccess permissionAccess, string path)
+
+		public MessageQueuePermissionEntry (MessageQueuePermissionAccess permissionAccess, string path)
 		{
 			if (path == null)
-				throw new ArgumentNullException ("path");
+				throw new ArgumentNullException ("path");
 			MessageQueuePermission.ValidatePath (path);
 
 			_permissionAccess = permissionAccess;
-			_path = path;
-		}
-		
-		public MessageQueuePermissionEntry (MessageQueuePermissionAccess permissionAccess, string machineName, string label, string category)
+			_path = path;
+		}
+		
+		public MessageQueuePermissionEntry (MessageQueuePermissionAccess permissionAccess, string machineName, string label, string category)
 		{
 			if (machineName == null)
-				throw new ArgumentNullException ("machineName");
+				throw new ArgumentNullException ("machineName");
 			MessageQueuePermission.ValidateMachineName (machineName);
 
 			_permissionAccess = permissionAccess;
 			_machineName = machineName;
 			_label = label;
 			_category = category;
-		}
-		
-		public string Category {
-			get { return _category; }
-		}
-		
-		public string Label {
-			get { return _label; }
-		}
-
-		public string MachineName {
-			get { return _machineName; }
-		}
-		
-		public string Path {
-			get { return _path; }
-		}
-		
-		public MessageQueuePermissionAccess PermissionAccess {
-			get { return _permissionAccess; }
-		}
-	}
-}
+		}
+		
+		public string Category {
+			get { return _category; }
+		}
+		
+		public string Label {
+			get { return _label; }
+		}
+
+		public string MachineName {
+			get { return _machineName; }
+		}
+		
+		public string Path {
+			get { return _path; }
+		}
+		
+		public MessageQueuePermissionAccess PermissionAccess {
+			get { return _permissionAccess; }
+		}
+	}
+}
diff --git a/mcs/class/System.Messaging/System.Messaging/MessageQueuePermissionEntryCollection.cs b/mcs/class/System.Messaging/System.Messaging/MessageQueuePermissionEntryCollection.cs
index d89042e..f11c967 100644
--- a/mcs/class/System.Messaging/System.Messaging/MessageQueuePermissionEntryCollection.cs
+++ b/mcs/class/System.Messaging/System.Messaging/MessageQueuePermissionEntryCollection.cs
@@ -1,135 +1,135 @@
-//
-// System.Messaging
-//
-// Authors:
-//      Peter Van Isacker (sclytrack at planetinternet.be)
-//
-// (C) 2003 Peter Van Isacker
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections;
-
-namespace System.Messaging 
-{
-	[Serializable]
-	public class MessageQueuePermissionEntryCollection: CollectionBase 
-	{
-		private MessageQueuePermission owner;
-
-		internal MessageQueuePermissionEntryCollection (MessageQueuePermission owner)
-		{
-			this.owner = owner;
-		}
-
-		public MessageQueuePermissionEntry this[int index] 
-		{
-			get
-			{
-				return ((MessageQueuePermissionEntry) base.List[index]);
-			}
-			set
-			{
-				base.List[index] = value;
-			}
-		}
-		
-		public int Add(MessageQueuePermissionEntry value)
-		{
-			return base.List.Add (value);
-		}
-		
-		public void AddRange(MessageQueuePermissionEntry[] value)
-		{
-			if (value == null)
-			{
-				throw new ArgumentNullException ("value");
-
-			}
-			for (int counter = 0; counter < value.Length; counter++)
-			{
-				this.Add (value[counter]);
-			}
-		}
-		
-		public void AddRange(MessageQueuePermissionEntryCollection value)
-		{
-			if (value == null)
-			{
-				throw new ArgumentNullException ("value");
-
-			}
-			int entryCount = value.Count;
-			for (int counter = 0; counter < entryCount; counter++)
-			{
-				this.Add (value[counter]);
-			}
-		}
-		
-		public bool Contains(MessageQueuePermissionEntry value)
-		{
-			return base.List.Contains (value);
-		}
-		
-		public void CopyTo(MessageQueuePermissionEntry[] array,int index)
-		{
-			base.List.CopyTo (array, index);
-		}
-		
-		[MonoTODO]
-		public int IndexOf(MessageQueuePermissionEntry value)
-		{
-			return base.List.IndexOf (value);
-		}
-		
-		public void Insert(int index, MessageQueuePermissionEntry value)
-		{
-			base.List.Insert (index, value);
-		}
-		
-		public void Remove(MessageQueuePermissionEntry value)
-		{
-			base.List.Remove (value);
-		}
-		
-		[MonoTODO]
-		protected override void OnClear()
-		{
-		}
-		
-		[MonoTODO]
-		protected override void OnInsert(int index,object value)
-		{
-		}
-		
-		[MonoTODO]
-		protected override void OnRemove(int index,object value)
-		{
-		}
-		
-		[MonoTODO]
-		protected override void OnSet(int index,object oldValue,object newValue)
-		{
-		}
-	}
-}
+//
+// System.Messaging
+//
+// Authors:
+//      Peter Van Isacker (sclytrack at planetinternet.be)
+//
+// (C) 2003 Peter Van Isacker
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Collections;
+
+namespace System.Messaging 
+{
+	[Serializable]
+	public class MessageQueuePermissionEntryCollection: CollectionBase 
+	{
+		private MessageQueuePermission owner;
+
+		internal MessageQueuePermissionEntryCollection (MessageQueuePermission owner)
+		{
+			this.owner = owner;
+		}
+
+		public MessageQueuePermissionEntry this[int index] 
+		{
+			get
+			{
+				return ((MessageQueuePermissionEntry) base.List[index]);
+			}
+			set
+			{
+				base.List[index] = value;
+			}
+		}
+		
+		public int Add(MessageQueuePermissionEntry value)
+		{
+			return base.List.Add (value);
+		}
+		
+		public void AddRange(MessageQueuePermissionEntry[] value)
+		{
+			if (value == null)
+			{
+				throw new ArgumentNullException ("value");
+
+			}
+			for (int counter = 0; counter < value.Length; counter++)
+			{
+				this.Add (value[counter]);
+			}
+		}
+		
+		public void AddRange(MessageQueuePermissionEntryCollection value)
+		{
+			if (value == null)
+			{
+				throw new ArgumentNullException ("value");
+
+			}
+			int entryCount = value.Count;
+			for (int counter = 0; counter < entryCount; counter++)
+			{
+				this.Add (value[counter]);
+			}
+		}
+		
+		public bool Contains(MessageQueuePermissionEntry value)
+		{
+			return base.List.Contains (value);
+		}
+		
+		public void CopyTo(MessageQueuePermissionEntry[] array,int index)
+		{
+			base.List.CopyTo (array, index);
+		}
+		
+		[MonoTODO]
+		public int IndexOf(MessageQueuePermissionEntry value)
+		{
+			return base.List.IndexOf (value);
+		}
+		
+		public void Insert(int index, MessageQueuePermissionEntry value)
+		{
+			base.List.Insert (index, value);
+		}
+		
+		public void Remove(MessageQueuePermissionEntry value)
+		{
+			base.List.Remove (value);
+		}
+		
+		[MonoTODO]
+		protected override void OnClear()
+		{
+		}
+		
+		[MonoTODO]
+		protected override void OnInsert(int index,object value)
+		{
+		}
+		
+		[MonoTODO]
+		protected override void OnRemove(int index,object value)
+		{
+		}
+		
+		[MonoTODO]
+		protected override void OnSet(int index,object oldValue,object newValue)
+		{
+		}
+	}
+}
diff --git a/mcs/class/System.Messaging/System.Messaging/MessageQueueTransaction.cs b/mcs/class/System.Messaging/System.Messaging/MessageQueueTransaction.cs
index 122a26f..58df50e 100644
--- a/mcs/class/System.Messaging/System.Messaging/MessageQueueTransaction.cs
+++ b/mcs/class/System.Messaging/System.Messaging/MessageQueueTransaction.cs
@@ -1,12 +1,12 @@
-//
-// System.Messaging
-//
-// Authors:
-//      Peter Van Isacker (sclytrack at planetinternet.be)
-//      Rafael Teixeira   (rafaelteixeirabr at hotmail.com)
-//
-// (C) 2003 Peter Van Isacker
-//
+//
+// System.Messaging
+//
+// Authors:
+//      Peter Van Isacker (sclytrack at planetinternet.be)
+//      Rafael Teixeira   (rafaelteixeirabr at hotmail.com)
+//
+// (C) 2003 Peter Van Isacker
+//
 
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -30,32 +30,32 @@
 //
 using System;
 
-using Mono.Messaging;
-
-namespace System.Messaging 
-{
-
-	// TODO: have to comply with 'This type is safe for multithreaded operations'
-	public class MessageQueueTransaction : IDisposable 
-	{
+using Mono.Messaging;
+
+namespace System.Messaging 
+{
+
+	// TODO: have to comply with 'This type is safe for multithreaded operations'
+	public class MessageQueueTransaction : IDisposable 
+	{
 		private readonly IMessageQueueTransaction delegateTx;
 		private readonly object syncObj = new object ();
-		private bool isDisposed = false;
-
-		public MessageQueueTransaction () : this (GetMessageQueueTransaction ())
-		{
+		private bool isDisposed = false;
+
+		public MessageQueueTransaction () : this (GetMessageQueueTransaction ())
+		{
 		}
 		
 		internal MessageQueueTransaction (IMessageQueueTransaction delegateTx)
 		{
 			this.delegateTx = delegateTx;
-		}
-		
-		public MessageQueueTransactionStatus Status 
-		{
+		}
+		
+		public MessageQueueTransactionStatus Status 
+		{
 			get { 
 				return (MessageQueueTransactionStatus) delegateTx.Status;
-			}
+			}
 		}
 		
 		internal IMessageQueueTransaction DelegateTx {
@@ -65,23 +65,23 @@ namespace System.Messaging
 		private static IMessageQueueTransaction GetMessageQueueTransaction ()
 		{
 			return MessagingProviderLocator.GetProvider ().CreateMessageQueueTransaction ();
-		}
-			
-		public void Abort ()
+		}
+			
+		public void Abort ()
 		{
-			delegateTx.Abort ();
-		}
-		
-		public void Begin ()
+			delegateTx.Abort ();
+		}
+		
+		public void Begin ()
 		{
-			delegateTx.Begin ();
-		}
-		
-		public void Commit ()
+			delegateTx.Begin ();
+		}
+		
+		public void Commit ()
 		{
-			delegateTx.Commit ();
-		}
-
+			delegateTx.Commit ();
+		}
+
 		public void Dispose ()
 		{
 			Dispose (true);
@@ -96,10 +96,10 @@ namespace System.Messaging
 				}
 			}
 		}
-		
-		~MessageQueueTransaction()
+		
+		~MessageQueueTransaction()
 		{
-			Dispose ();
-		}
-	}
-}
+			Dispose ();
+		}
+	}
+}
diff --git a/mcs/class/System.Messaging/System.Messaging/MessageQueueTransactionStatus.cs b/mcs/class/System.Messaging/System.Messaging/MessageQueueTransactionStatus.cs
index e00eab2..b653fbd 100644
--- a/mcs/class/System.Messaging/System.Messaging/MessageQueueTransactionStatus.cs
+++ b/mcs/class/System.Messaging/System.Messaging/MessageQueueTransactionStatus.cs
@@ -1,11 +1,11 @@
-//
-// System.Messaging
-//
-// Authors:
-//      Peter Van Isacker (sclytrack at planetinternet.be)
-//
-//	(C) Ximian, Inc.  http://www.ximian.com
-//
+//
+// System.Messaging
+//
+// Authors:
+//      Peter Van Isacker (sclytrack at planetinternet.be)
+//
+//	(C) Ximian, Inc.  http://www.ximian.com
+//
 
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -27,16 +27,16 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-using System;
-
-namespace System.Messaging
-{
-	[Serializable]
-	public enum MessageQueueTransactionStatus
-	{
-		Aborted = 0,
-		Committed = 1,
-		Initialized = 2,
-		Pending = 3
-	}
-}
+using System;
+
+namespace System.Messaging
+{
+	[Serializable]
+	public enum MessageQueueTransactionStatus
+	{
+		Aborted = 0,
+		Committed = 1,
+		Initialized = 2,
+		Pending = 3
+	}
+}
diff --git a/mcs/class/System.Messaging/System.Messaging/MessageQueueTransactionType.cs b/mcs/class/System.Messaging/System.Messaging/MessageQueueTransactionType.cs
index b77099b..f56b591 100644
--- a/mcs/class/System.Messaging/System.Messaging/MessageQueueTransactionType.cs
+++ b/mcs/class/System.Messaging/System.Messaging/MessageQueueTransactionType.cs
@@ -1,11 +1,11 @@
-//
-// System.Messaging
-//
-// Authors:
-//      Peter Van Isacker (sclytrack at planetinternet.be)
-//
-//	(C) Ximian, Inc.  http://www.ximian.com
-//
+//
+// System.Messaging
+//
+// Authors:
+//      Peter Van Isacker (sclytrack at planetinternet.be)
+//
+//	(C) Ximian, Inc.  http://www.ximian.com
+//
 
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -27,15 +27,15 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-using System;
-
-namespace System.Messaging 
-{
-	[Serializable]
-	public enum MessageQueueTransactionType 
-	{
-		Automatic = 1,
-		None = 0,
-		Single = 3
-	}
-}
+using System;
+
+namespace System.Messaging 
+{
+	[Serializable]
+	public enum MessageQueueTransactionType 
+	{
+		Automatic = 1,
+		None = 0,
+		Single = 3
+	}
+}
diff --git a/mcs/class/System.Messaging/System.Messaging/MessageType.cs b/mcs/class/System.Messaging/System.Messaging/MessageType.cs
index 1e6d98a..478dc01 100644
--- a/mcs/class/System.Messaging/System.Messaging/MessageType.cs
+++ b/mcs/class/System.Messaging/System.Messaging/MessageType.cs
@@ -1,11 +1,11 @@
-//
-// System.Messaging
-//
-// Authors:
-//      Peter Van Isacker (sclytrack at planetinternet.be)
-//
-//	(C) Ximian, Inc.  http://www.ximian.com
-//
+//
+// System.Messaging
+//
+// Authors:
+//      Peter Van Isacker (sclytrack at planetinternet.be)
+//
+//	(C) Ximian, Inc.  http://www.ximian.com
+//
 
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -27,15 +27,15 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-using System;
-
-namespace System.Messaging 
-{
-	[Serializable]
-	public enum MessageType 
-	{
-		Acknowledgment = 1,
-		Normal = 2,
-		Report = 3
-	}
-}
+using System;
+
+namespace System.Messaging 
+{
+	[Serializable]
+	public enum MessageType 
+	{
+		Acknowledgment = 1,
+		Normal = 2,
+		Report = 3
+	}
+}
diff --git a/mcs/class/System.Messaging/System.Messaging/MessagingDescriptionAttribute.cs b/mcs/class/System.Messaging/System.Messaging/MessagingDescriptionAttribute.cs
index 9e3eae9..589080f 100644
--- a/mcs/class/System.Messaging/System.Messaging/MessagingDescriptionAttribute.cs
+++ b/mcs/class/System.Messaging/System.Messaging/MessagingDescriptionAttribute.cs
@@ -1,12 +1,12 @@
-//
-// System.Messaging
-//
-// Authors:
-//      Peter Van Isacker (sclytrack at planetinternet.be)
-//      Rafael Teixeira   (rafaelteixeirabr at hotmail.com)
-//
-// (C) 2003 Peter Van Isacker
-//
+//
+// System.Messaging
+//
+// Authors:
+//      Peter Van Isacker (sclytrack at planetinternet.be)
+//      Rafael Teixeira   (rafaelteixeirabr at hotmail.com)
+//
+// (C) 2003 Peter Van Isacker
+//
 
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -28,26 +28,26 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-using System;
-using System.ComponentModel;
-
-namespace System.Messaging 
-{
-	[AttributeUsage(AttributeTargets.All)]
-	public class MessagingDescriptionAttribute:  DescriptionAttribute 
-	{
-		[MonoTODO ("localization")]
-		public MessagingDescriptionAttribute(string description) : base(description) 
-		{
-		}
-
-		[MonoTODO ("localization")]
-		public override string Description
-		{
-			get
-			{
-				return base.Description;
-			}
-		}
-	}
-}
+using System;
+using System.ComponentModel;
+
+namespace System.Messaging 
+{
+	[AttributeUsage(AttributeTargets.All)]
+	public class MessagingDescriptionAttribute:  DescriptionAttribute 
+	{
+		[MonoTODO ("localization")]
+		public MessagingDescriptionAttribute(string description) : base(description) 
+		{
+		}
+
+		[MonoTODO ("localization")]
+		public override string Description
+		{
+			get
+			{
+				return base.Description;
+			}
+		}
+	}
+}
diff --git a/mcs/class/System.Messaging/System.Messaging/PeekCompletedEventArgs.cs b/mcs/class/System.Messaging/System.Messaging/PeekCompletedEventArgs.cs
index f282296..70472ee 100644
--- a/mcs/class/System.Messaging/System.Messaging/PeekCompletedEventArgs.cs
+++ b/mcs/class/System.Messaging/System.Messaging/PeekCompletedEventArgs.cs
@@ -1,12 +1,12 @@
-//
-// System.Messaging
-//
-// Authors:
-//      Peter Van Isacker (sclytrack at planetinternet.be)
-//      Rafael Teixeira   (rafaelteixeirabr at hotmail.com)
-//
-// (C) 2003 Peter Van Isacker
-//
+//
+// System.Messaging
+//
+// Authors:
+//      Peter Van Isacker (sclytrack at planetinternet.be)
+//      Rafael Teixeira   (rafaelteixeirabr at hotmail.com)
+//
+// (C) 2003 Peter Van Isacker
+//
 
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -28,40 +28,40 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-
-using System;
-using System.Runtime.Remoting.Messaging;
-
-namespace System.Messaging 
-{
-	public class PeekCompletedEventArgs : EventArgs 
-	{
-		private MessageQueue _sender;
-		private IAsyncResult _result;
-		private Message _message;
-
-		internal PeekCompletedEventArgs(MessageQueue sender, IAsyncResult result)
-		{
-			_sender = sender;
-			_result = result;
-		}
-
-		public IAsyncResult AsyncResult
-		{
-			get { return _result; }
-			set { _result = value; }
-		}
-
-		public Message Message
-		{
-			get
-			{
-				if (_message == null)
-				{
-					_message = _sender.EndPeek (_result);
-				}
-				return _message;
-			}
-		}
-	}
-}
+
+using System;
+using System.Runtime.Remoting.Messaging;
+
+namespace System.Messaging 
+{
+	public class PeekCompletedEventArgs : EventArgs 
+	{
+		private MessageQueue _sender;
+		private IAsyncResult _result;
+		private Message _message;
+
+		internal PeekCompletedEventArgs(MessageQueue sender, IAsyncResult result)
+		{
+			_sender = sender;
+			_result = result;
+		}
+
+		public IAsyncResult AsyncResult
+		{
+			get { return _result; }
+			set { _result = value; }
+		}
+
+		public Message Message
+		{
+			get
+			{
+				if (_message == null)
+				{
+					_message = _sender.EndPeek (_result);
+				}
+				return _message;
+			}
+		}
+	}
+}
diff --git a/mcs/class/System.Messaging/System.Messaging/PeekCompletedEventHandler.cs b/mcs/class/System.Messaging/System.Messaging/PeekCompletedEventHandler.cs
index a202b28..3ec55d1 100644
--- a/mcs/class/System.Messaging/System.Messaging/PeekCompletedEventHandler.cs
+++ b/mcs/class/System.Messaging/System.Messaging/PeekCompletedEventHandler.cs
@@ -1,11 +1,11 @@
-//
-// System.Messaging
-//
-// Authors:
-//      Peter Van Isacker (sclytrack at planetinternet.be)
-//
-// (C) 2003 Peter Van Isacker
-//
+//
+// System.Messaging
+//
+// Authors:
+//      Peter Van Isacker (sclytrack at planetinternet.be)
+//
+// (C) 2003 Peter Van Isacker
+//
 
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -27,11 +27,11 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-using System;
-
-namespace System.Messaging 
-{
-	[Serializable]
-	public delegate void PeekCompletedEventHandler(object sender, PeekCompletedEventArgs e);
-	
-}
+using System;
+
+namespace System.Messaging 
+{
+	[Serializable]
+	public delegate void PeekCompletedEventHandler(object sender, PeekCompletedEventArgs e);
+	
+}
diff --git a/mcs/class/System.Messaging/System.Messaging/ReceiveCompletedEventArgs.cs b/mcs/class/System.Messaging/System.Messaging/ReceiveCompletedEventArgs.cs
index 4d79c6e..6abe151 100644
--- a/mcs/class/System.Messaging/System.Messaging/ReceiveCompletedEventArgs.cs
+++ b/mcs/class/System.Messaging/System.Messaging/ReceiveCompletedEventArgs.cs
@@ -1,12 +1,12 @@
-//
-// System.Messaging
-//
-// Authors:
-//      Peter Van Isacker (sclytrack at planetinternet.be)
-//      Rafael Teixeira   (rafaelteixeirabr at hotmail.com)
-//
-// (C) 2003 Peter Van Isacker
-//
+//
+// System.Messaging
+//
+// Authors:
+//      Peter Van Isacker (sclytrack at planetinternet.be)
+//      Rafael Teixeira   (rafaelteixeirabr at hotmail.com)
+//
+// (C) 2003 Peter Van Isacker
+//
 
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -28,39 +28,39 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-using System;
-using System.Runtime.Remoting.Messaging;
-
-namespace System.Messaging 
-{
-	public class ReceiveCompletedEventArgs: EventArgs 
-	{
-		private MessageQueue _sender;
-		private IAsyncResult _result;
-		private Message _message;
-
-		internal ReceiveCompletedEventArgs (MessageQueue sender, IAsyncResult result)
-		{
-			_sender = sender;
-			_result = result;
-		}
-
-		public IAsyncResult AsyncResult
-		{
-			get { return _result; }
-			set { _result = value; }
-		}
-
-		public Message Message
-		{
-			get
-			{
-				if (_message == null)
-				{
-					_message = _sender.EndPeek (_result);
-				}
-				return _message;
-			}
-		}
-	}
-}
+using System;
+using System.Runtime.Remoting.Messaging;
+
+namespace System.Messaging 
+{
+	public class ReceiveCompletedEventArgs: EventArgs 
+	{
+		private MessageQueue _sender;
+		private IAsyncResult _result;
+		private Message _message;
+
+		internal ReceiveCompletedEventArgs (MessageQueue sender, IAsyncResult result)
+		{
+			_sender = sender;
+			_result = result;
+		}
+
+		public IAsyncResult AsyncResult
+		{
+			get { return _result; }
+			set { _result = value; }
+		}
+
+		public Message Message
+		{
+			get
+			{
+				if (_message == null)
+				{
+					_message = _sender.EndPeek (_result);
+				}
+				return _message;
+			}
+		}
+	}
+}
diff --git a/mcs/class/System.Messaging/System.Messaging/ReceiveCompletedEventHandler.cs b/mcs/class/System.Messaging/System.Messaging/ReceiveCompletedEventHandler.cs
index a006258..75e07d9 100644
--- a/mcs/class/System.Messaging/System.Messaging/ReceiveCompletedEventHandler.cs
+++ b/mcs/class/System.Messaging/System.Messaging/ReceiveCompletedEventHandler.cs
@@ -1,11 +1,11 @@
-//
-// System.Messaging
-//
-// Authors:
-//      Peter Van Isacker (sclytrack at planetinternet.be)
-//
-// (C) 2003 Peter Van Isacker
-//
+//
+// System.Messaging
+//
+// Authors:
+//      Peter Van Isacker (sclytrack at planetinternet.be)
+//
+// (C) 2003 Peter Van Isacker
+//
 
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -27,11 +27,11 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-using System;
-
-namespace System.Messaging 
-{
-	[Serializable]
-	public delegate void ReceiveCompletedEventHandler(object sender, ReceiveCompletedEventArgs e);
-	
-}
+using System;
+
+namespace System.Messaging 
+{
+	[Serializable]
+	public delegate void ReceiveCompletedEventHandler(object sender, ReceiveCompletedEventArgs e);
+	
+}
diff --git a/mcs/class/System.Messaging/System.Messaging/StandardAccessRights.cs b/mcs/class/System.Messaging/System.Messaging/StandardAccessRights.cs
index 2d59fca..55a6ce2 100644
--- a/mcs/class/System.Messaging/System.Messaging/StandardAccessRights.cs
+++ b/mcs/class/System.Messaging/System.Messaging/StandardAccessRights.cs
@@ -1,11 +1,11 @@
-//
-// System.Messaging
-//
-// Authors:
-//      Peter Van Isacker (sclytrack at planetinternet.be)
-//
-// (C) 2003 Peter Van Isacker
-//
+//
+// System.Messaging
+//
+// Authors:
+//      Peter Van Isacker (sclytrack at planetinternet.be)
+//
+// (C) 2003 Peter Van Isacker
+//
 
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -27,24 +27,24 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-using System;
-
-namespace System.Messaging 
-{
-	[Flags]
-	[Serializable]
-	public enum StandardAccessRights 
-	{
-		All = 2031616,
-		Delete = 65536,
-		Execute = 131072,
-		ModifyOwner = 524288,
-		None = 0,
-		Read = 131072,
-		ReadSecurity = 131072,
-		Required = 851968,
-		Synchronize = 1048576,
-		Write = 131072,
-		WriteSecurity = 262144
-	}
-}
+using System;
+
+namespace System.Messaging 
+{
+	[Flags]
+	[Serializable]
+	public enum StandardAccessRights 
+	{
+		All = 2031616,
+		Delete = 65536,
+		Execute = 131072,
+		ModifyOwner = 524288,
+		None = 0,
+		Read = 131072,
+		ReadSecurity = 131072,
+		Required = 851968,
+		Synchronize = 1048576,
+		Write = 131072,
+		WriteSecurity = 262144
+	}
+}
diff --git a/mcs/class/System.Messaging/System.Messaging/Trustee.cs b/mcs/class/System.Messaging/System.Messaging/Trustee.cs
index 981e526..08837e8 100644
--- a/mcs/class/System.Messaging/System.Messaging/Trustee.cs
+++ b/mcs/class/System.Messaging/System.Messaging/Trustee.cs
@@ -1,89 +1,89 @@
-//
-// System.Messaging
-//
-// Authors:
-//      Peter Van Isacker (sclytrack at planetinternet.be)
-//      Rafael Teixeira   (rafaelteixeirabr at hotmail.com)
-//
-// (C) 2003 Peter Van Isacker
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Messaging 
-{
-	public class Trustee 
-	{
-		[MonoTODO]
-		public Trustee()
-		{
-			this.name = null;
-			this.systemName = null;
-			this.trusteeType = TrusteeType.Unknown;
-		}
-		
-		[MonoTODO("What about systemName?")]
-		public Trustee(string name)
-		{
-			this.name = name;
-			this.systemName = null;
-			this.trusteeType = TrusteeType.Unknown;
-		}
-		
-		private string name;
-		private string systemName;
-		private TrusteeType trusteeType;
-		
-		public Trustee(string name, string systemName)
-		{
-			this.name = name;
-			this.systemName = systemName;
-			this.trusteeType = TrusteeType.Unknown;
-		}
-		
-		public Trustee(string name, string systemName, TrusteeType trusteeType)
-		{
-			this.name = name;
-			this.systemName = systemName;
-			this.trusteeType = trusteeType;
-		}
-		
-		public string Name 
-		{
-			get { return name; }
-			set { name = value;}
-		}
-		
-		public string SystemName 
-		{
-			get { return systemName; }
-			set { systemName = value;}
-		}
-
-		public TrusteeType TrusteeType
-		{
-			get { return trusteeType; }
-			set { trusteeType = value;}
-		}
-	}
-}
+//
+// System.Messaging
+//
+// Authors:
+//      Peter Van Isacker (sclytrack at planetinternet.be)
+//      Rafael Teixeira   (rafaelteixeirabr at hotmail.com)
+//
+// (C) 2003 Peter Van Isacker
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+
+namespace System.Messaging 
+{
+	public class Trustee 
+	{
+		[MonoTODO]
+		public Trustee()
+		{
+			this.name = null;
+			this.systemName = null;
+			this.trusteeType = TrusteeType.Unknown;
+		}
+		
+		[MonoTODO("What about systemName?")]
+		public Trustee(string name)
+		{
+			this.name = name;
+			this.systemName = null;
+			this.trusteeType = TrusteeType.Unknown;
+		}
+		
+		private string name;
+		private string systemName;
+		private TrusteeType trusteeType;
+		
+		public Trustee(string name, string systemName)
+		{
+			this.name = name;
+			this.systemName = systemName;
+			this.trusteeType = TrusteeType.Unknown;
+		}
+		
+		public Trustee(string name, string systemName, TrusteeType trusteeType)
+		{
+			this.name = name;
+			this.systemName = systemName;
+			this.trusteeType = trusteeType;
+		}
+		
+		public string Name 
+		{
+			get { return name; }
+			set { name = value;}
+		}
+		
+		public string SystemName 
+		{
+			get { return systemName; }
+			set { systemName = value;}
+		}
+
+		public TrusteeType TrusteeType
+		{
+			get { return trusteeType; }
+			set { trusteeType = value;}
+		}
+	}
+}
diff --git a/mcs/class/System.Messaging/System.Messaging/TrusteeType.cs b/mcs/class/System.Messaging/System.Messaging/TrusteeType.cs
index 62bacb7..d87cebb 100644
--- a/mcs/class/System.Messaging/System.Messaging/TrusteeType.cs
+++ b/mcs/class/System.Messaging/System.Messaging/TrusteeType.cs
@@ -1,11 +1,11 @@
-//
-// System.Messaging
-//
-// Authors:
-//      Peter Van Isacker (sclytrack at planetinternet.be)
-//
-//	(C) Ximian, Inc.  http://www.ximian.com
-//
+//
+// System.Messaging
+//
+// Authors:
+//      Peter Van Isacker (sclytrack at planetinternet.be)
+//
+//	(C) Ximian, Inc.  http://www.ximian.com
+//
 
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -27,18 +27,18 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-using System;
-
-namespace System.Messaging 
-{
-	[Serializable]
-	public enum TrusteeType 
-	{
-		Alias = 4,
-		Computer = 5,
-		Domain = 3,
-		Group = 2,
-		Unknown = 0,
-		User = 1
-	}
-}
+using System;
+
+namespace System.Messaging 
+{
+	[Serializable]
+	public enum TrusteeType 
+	{
+		Alias = 4,
+		Computer = 5,
+		Domain = 3,
+		Group = 2,
+		Unknown = 0,
+		User = 1
+	}
+}
diff --git a/mcs/class/System.Net/ChangeLog b/mcs/class/System.Net/ChangeLog
index b6f43ac..9298028 100644
--- a/mcs/class/System.Net/ChangeLog
+++ b/mcs/class/System.Net/ChangeLog
@@ -1,3 +1,12 @@
+2010-12-15  Marek Safar  <marek.safar at gmail.com>
+
+	Add existing class to System.Net build
+
+2010-11-05  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* moonlight_raw_System.Net.dll.sources: Add new CookieParser to
+	the build
+
 2010-04-21  Sebastien Pouliot  <sebastien at ximian.com>
 
 	* moonlight_raw_System.Net.dll.sources: Add System.Net.Sockets/
diff --git a/mcs/class/System.Net/ChangeLog b/mcs/class/System.Net/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Net/ChangeLog
copy to mcs/class/System.Net/ChangeLog.old
diff --git a/mcs/class/System.Net/System.Net.Policy/ChangeLog b/mcs/class/System.Net/System.Net.Policy/ChangeLog
index d73a06b..eb0d7f6 100644
--- a/mcs/class/System.Net/System.Net.Policy/ChangeLog
+++ b/mcs/class/System.Net/System.Net.Policy/ChangeLog
@@ -1,3 +1,28 @@
+2010-12-16  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* ClientAccessPolicy.cs: Remove special case for scheme *
+	ClientAccessPolicyParser.cs: Add scheme-only entries like full URI
+
+2010-09-27  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* System.Net.Policy/CrossDomainPolicyManager.cs: Use same socket
+	family as the endpoint when retrieving the policy. Also do not try
+	to create a policy out of an empty stream (avoid misleading
+	exceptions in logs)
+
+2010-09-23  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* System.Net.Policy/CrossDomainPolicyManager.cs: Use
+	InternalHeaders, instead of Headers, since we always use the
+	browser stack to download the security policies.
+
+2010-09-02  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* mcs/class/System.Net/System.Net.Policy/ClientAccessPolicy.cs: Do
+	not throw a NotSupportedException here since it regress some DRT
+	(like 656). The (hopefully) correct fix (for DRT3001) will be
+	committed inside moon
+
 2010-07-23  Sebastien Pouliot  <sebastien at ximian.com>
 
 	* BaseDomainPolicy.cs: Add internal setter for Exception property
diff --git a/mcs/class/System.Net/System.Net.Policy/ChangeLog b/mcs/class/System.Net/System.Net.Policy/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Net/System.Net.Policy/ChangeLog
copy to mcs/class/System.Net/System.Net.Policy/ChangeLog.old
diff --git a/mcs/class/System.Net/System.Net.Policy/ClientAccessPolicy.cs b/mcs/class/System.Net/System.Net.Policy/ClientAccessPolicy.cs
index 6cff0a0..ab6af6c 100644
--- a/mcs/class/System.Net/System.Net.Policy/ClientAccessPolicy.cs
+++ b/mcs/class/System.Net/System.Net.Policy/ClientAccessPolicy.cs
@@ -128,7 +128,6 @@ namespace System.Net.Policy {
 					// is the application (XAP) URI allowed by the policy ?
 					// check headers
 					if (!af.HttpRequestHeaders.IsAllowed (headerKeys)) {
-						Exception = new NotSupportedException ();
 						return false;
 					}
 
@@ -154,7 +153,6 @@ namespace System.Net.Policy {
 			{
 				Domains = new List<string> ();
 				HttpRequestHeaders = new Headers ();
-				Scheme = String.Empty;
 			}
 
 			public bool AllowAnyDomain { get; set; }
@@ -165,23 +163,8 @@ namespace System.Net.Policy {
 
 			public bool AllowAnyMethod { get; set; }
 
-			public string Scheme { get; internal set; }
-
 			public bool IsAllowed (Uri uri, string method)
 			{
-				// check scheme
-				if ((Scheme.Length > 0) && (Scheme == uri.Scheme)) {
-					switch (Scheme) {
-					case "http":
-						return (uri.Port == 80);
-					case "https":
-						return (uri.Port == 443);
-					case "file":
-						return true;
-					default:
-						return false;
-					}
-				}
 				// check methods
 				if (!AllowAnyMethod) {
 					// if not all methods are allowed (*) then only GET and POST request are possible
@@ -196,12 +179,16 @@ namespace System.Net.Policy {
 				if (AllowAnyDomain)
 					return true;
 
-				if (Domains.All (domain => !CheckDomainUri (domain)))
+				if (Domains.All (domain => !CheckDomainUri (uri, domain)))
 					return false;
 				return true;
 			}
 
-			static bool CheckDomainUri (string policy)
+			const string AllHttpScheme = "http://*";
+			const string AllHttpsScheme = "https://*";
+			const string AllFileScheme = "file:///";
+
+			static bool CheckDomainUri (Uri applicationUri, string policy)
 			{
 				Uri uri;
 				if (Uri.TryCreate (policy, UriKind.Absolute, out uri)) {
@@ -219,7 +206,22 @@ namespace System.Net.Policy {
 				// check for matching protocol
 				if (!policy.StartsWith (ApplicationUri.Scheme))
 					return false;
-				// check for the wirld card immediately after the scheme
+
+				switch (ApplicationUri.Scheme) {
+				case "http":
+					if (policy == AllHttpScheme)
+						return (applicationUri.Port == 80);
+					break;
+				case "https":
+					if (policy == AllHttpsScheme)
+						return (applicationUri.Port == 443);
+					break;
+				case "file":
+					if (policy == AllFileScheme)
+						return true;
+					break;
+				}
+
 				if (policy.IndexOf ("://*.", ApplicationUri.Scheme.Length) != ApplicationUri.Scheme.Length)
 					return false;
 				// remove *. from uri
diff --git a/mcs/class/System.Net/System.Net.Policy/ClientAccessPolicyParser.cs b/mcs/class/System.Net/System.Net.Policy/ClientAccessPolicyParser.cs
index f1cd5ed..365cef2 100644
--- a/mcs/class/System.Net/System.Net.Policy/ClientAccessPolicyParser.cs
+++ b/mcs/class/System.Net/System.Net.Policy/ClientAccessPolicyParser.cs
@@ -191,23 +191,10 @@ namespace System.Net.Policy {
 				switch (reader.LocalName) {
 				case "domain":
 					var d = reader.GetAttribute ("uri");
-					switch (d) {
-					case "*":
+					if (d == "*")
 						v.AllowAnyDomain = true;
-						break;
-					case "http://*":
-						v.Scheme = "http";
-						break;
-					case "https://*":
-						v.Scheme = "https";
-						break;
-					case "file:///":
-						v.Scheme = "file";
-						break;
-					default:
+					else
 						v.Domains.Add (d);
-						break;
-					}
 					reader.Skip ();
 					break;
 				default:
diff --git a/mcs/class/System.Net/System.Net.Policy/CrossDomainPolicyManager.cs b/mcs/class/System.Net/System.Net.Policy/CrossDomainPolicyManager.cs
index 87acfea..0319404 100644
--- a/mcs/class/System.Net/System.Net.Policy/CrossDomainPolicyManager.cs
+++ b/mcs/class/System.Net/System.Net.Policy/CrossDomainPolicyManager.cs
@@ -151,7 +151,7 @@ namespace System.Net.Policy {
 				}
 				if (policy != null) {
 					// see DRT# 864 and 865
-					string site_control = response.Headers ["X-Permitted-Cross-Domain-Policies"];
+					string site_control = response.InternalHeaders ["X-Permitted-Cross-Domain-Policies"];
 					if (!String.IsNullOrEmpty (site_control))
 						(policy as FlashCrossDomainPolicy).SiteControl = site_control;
 				}
@@ -178,23 +178,12 @@ namespace System.Net.Policy {
 		static byte [] socket_policy_file_request = Encoding.UTF8.GetBytes ("<policy-file-request/>");
 		const int PolicyPort = 943;
 
-		// make sure this work in a IPv6-only environment
-		static AddressFamily GetBestFamily ()
-		{
-			if (Socket.OSSupportsIPv4)
-				return AddressFamily.InterNetwork;
-			else if (Socket.OSSupportsIPv6)
-				return AddressFamily.InterNetworkV6;
-			else
-				return AddressFamily.Unspecified;
-		}
-
 		static Stream GetPolicyStream (IPEndPoint endpoint)
 		{
 			MemoryStream ms = new MemoryStream ();
 			ManualResetEvent mre = new ManualResetEvent (false);
 			// Silverlight only support TCP
-			Socket socket = new Socket (GetBestFamily (), SocketType.Stream, ProtocolType.Tcp);
+			Socket socket = new Socket (endpoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
 
 			// Application code can't connect to port 943, so we need a special/internal API/ctor to allow this
 			SocketAsyncEventArgs saea = new SocketAsyncEventArgs (true);
@@ -265,7 +254,7 @@ namespace System.Net.Policy {
 				break;
 			}
 
-			if (s == null)
+			if ((s == null) || (s.Length == 0))
 				return null;
 
 			ClientAccessPolicy policy = null;
diff --git a/mcs/class/System.Net/System.Net.dll.sources b/mcs/class/System.Net/System.Net.dll.sources
index 5af78ba..ce0df60 100644
--- a/mcs/class/System.Net/System.Net.dll.sources
+++ b/mcs/class/System.Net/System.Net.dll.sources
@@ -1,4 +1,4 @@
 Assembly/AssemblyInfo.cs
 ../../build/common/Consts.cs
 ../../build/common/MonoTODOAttribute.cs
-
+System.Net/IPEndPointCollection.cs
diff --git a/mcs/class/System.Net/System.Net/ChangeLog b/mcs/class/System.Net/System.Net/ChangeLog
index 52c89c3..28488a8 100644
--- a/mcs/class/System.Net/System.Net/ChangeLog
+++ b/mcs/class/System.Net/System.Net/ChangeLog
@@ -1,3 +1,26 @@
+2010-09-23  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* System.Net/WebRequest_2_1.cs: (Create) Find the prefix that is
+	the closest match to the specified Uri and use it's associated
+	creator. (RegisterPrefix) We cannot register 'http[s]:' even if
+	registering 'http[s]' is possible (but does not work as expected)
+	as are the (fully) valid 'http[s]:/[/]' values.
+
+2010-09-23  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* System.Net/WebClient_2_1.cs: Throw a NotImplementedException
+	from ResponseHeaders if the response does not support them. *
+	System.Net/WebResponse_2_1.cs: Make Headers property smart to
+	throw a NotImplementedException if SupportsHeaders return false.
+	Add a new InternalHeaders property since the response headers are
+	needed, internally (e.g. policies), even if not exposed to the
+	outside world.
+
+2010-09-02  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* mcs/class/System.Net/System.Net/WebClient_2_1.cs: Use
+	sync_context to post the call to OnUploadProgressChanged
+
 2010-08-31  Sebastien Pouliot  <sebastien at ximian.com>
 
 	*
diff --git a/mcs/class/System.Net/System.Net/IPEndPointCollection.cs b/mcs/class/System.Net/System.Net/IPEndPointCollection.cs
new file mode 100644
index 0000000..56f87ce
--- /dev/null
+++ b/mcs/class/System.Net/System.Net/IPEndPointCollection.cs
@@ -0,0 +1,57 @@
+// System.Net.IPEndPointCollection
+//
+// Author:
+//	Gonzalo Paniagua Javier (gonzalo at novell.com)
+//
+// Copyright (c) 2009 Novell, Inc. (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if NET_2_0
+
+using System;
+using System.Collections.ObjectModel;
+
+namespace System.Net {
+	public class IPEndPointCollection : Collection<IPEndPoint> {
+		public IPEndPointCollection ()
+		{
+		}
+
+		protected override void InsertItem (int index, IPEndPoint item)
+		{
+			if (item == null)
+				throw new ArgumentNullException ("item");
+
+			Items.Insert (index, item);
+		}
+
+		protected override void SetItem (int index, IPEndPoint item)
+		{
+			if (item == null)
+				throw new ArgumentNullException ("item");
+
+			Items [index] = item;
+		}
+	}
+}
+#endif
+
diff --git a/mcs/class/System.Net/System.Net/WebClient_2_1.cs b/mcs/class/System.Net/System.Net/WebClient_2_1.cs
index eadb8b5..ef76618 100644
--- a/mcs/class/System.Net/System.Net/WebClient_2_1.cs
+++ b/mcs/class/System.Net/System.Net/WebClient_2_1.cs
@@ -44,6 +44,7 @@ namespace System.Net {
 
 		WebHeaderCollection headers;
 		WebHeaderCollection responseHeaders;
+		bool response_supports_headers = true;	// will be set to false, if needed, when we get a response
 		string baseAddress;
 		Uri base_address_uri;
 		bool is_busy;
@@ -98,7 +99,11 @@ namespace System.Net {
 		}
 
 		public WebHeaderCollection ResponseHeaders {
-			get { return responseHeaders; }
+			get {
+				if (!response_supports_headers)
+					throw new NotImplementedException ();
+				return responseHeaders;
+			}
 		}
 
 		public Encoding Encoding {
@@ -196,7 +201,10 @@ namespace System.Net {
 
 		Stream ProcessResponse (WebResponse response)
 		{
-			responseHeaders = response.Headers;
+			response_supports_headers = response.SupportsHeaders;
+			if (response_supports_headers)
+				responseHeaders =  response.Headers;
+
 			HttpWebResponse hwr = (response as HttpWebResponse);
 			if (hwr == null)
 				throw new NotSupportedException ();
@@ -430,8 +438,10 @@ namespace System.Net {
 			finally {
 				// kind of dummy, 0% progress, that is always emitted
 				upload_length = length;
-				OnUploadProgressChanged (
-					new UploadProgressChangedEventArgs (0, -1, length, -1, 0, callback_data.user_token));
+				callback_data.sync_context.Post (delegate (object sender) {
+					OnUploadProgressChanged (
+						new UploadProgressChangedEventArgs (0, -1, length, -1, 0, callback_data.user_token));
+				}, null);
 			}
 		}
 
@@ -505,8 +515,10 @@ namespace System.Net {
 			finally {
 				// kind of dummy, 0% progress, that is always emitted
 				upload_length = callback_data.data.Length;
-				OnUploadProgressChanged (
-					new UploadProgressChangedEventArgs (0, -1, upload_length, -1, 0, callback_data.user_token));
+				callback_data.sync_context.Post (delegate (object sender) {
+					OnUploadProgressChanged (
+						new UploadProgressChangedEventArgs (0, -1, upload_length, -1, 0, callback_data.user_token));
+				}, "null");		
 			}
 		}
 
diff --git a/mcs/class/System.Net/System.Net/WebRequest_2_1.cs b/mcs/class/System.Net/System.Net/WebRequest_2_1.cs
index 8900a19..915ff1a 100644
--- a/mcs/class/System.Net/System.Net/WebRequest_2_1.cs
+++ b/mcs/class/System.Net/System.Net/WebRequest_2_1.cs
@@ -110,27 +110,22 @@ namespace System.Net {
 				throw new InvalidOperationException ("This operation is not supported for a relative URI.");
 
 			IWebRequestCreate creator = null;
-
-			// first we look if a domain is registred
-			string scheme = uri.Scheme + Uri.SchemeDelimiter;
-			string domain = scheme + uri.DnsSafeHost;
-			if (!registred_prefixes.TryGetValue (domain, out creator)) {
-				// next we look if the protocol is registred (the delimiter '://' is important)
-				if (!registred_prefixes.TryGetValue (scheme, out creator)) {
-					scheme = uri.Scheme; // without the delimiter
-					// then we default to SL
-					switch (scheme) {
-					case "http":
-					case "https":
-						creator = default_creator;
-						break;
-					default:
-						registred_prefixes.TryGetValue (scheme, out creator);
-						break;
-					}
+			int n = -1;
+			// look for the most promising match in the registred prefixes
+			foreach (KeyValuePair<string, IWebRequestCreate> kvp in registred_prefixes) {
+				string key = kvp.Key;
+				if ((key.Length > n) && uri.AbsoluteUri.StartsWith (key)) {
+					creator = kvp.Value;
+					n = key.Length;
 				}
 			}
 
+			// 'http:/[/]' or 'https:/[/]' needs to be registred otherwise it gets ignored
+			// note that this is unlike other protocols (e.g. 'ftp') - see unit tests
+			string scheme = uri.Scheme;
+			if ((scheme == "http" && n <= 5) || (scheme == "https" && n <= 6))
+				creator = default_creator;
+
 			if (creator == null)
 				throw new NotSupportedException (string.Format ("Scheme {0} not supported", scheme));
 
@@ -179,6 +174,11 @@ namespace System.Net {
 				prefix = uri.Scheme + Uri.SchemeDelimiter + uri.DnsSafeHost;
 			}
 
+			// registering 'http', 'http://' or even 'http:/' are all ok - but *never* would 'http:' be correct!
+			if ((String.Compare (prefix, "http:", StringComparison.OrdinalIgnoreCase) == 0) ||
+			    (String.Compare (prefix, "https:", StringComparison.OrdinalIgnoreCase) == 0))
+				return false;
+
 			if (registred_prefixes.ContainsKey (prefix))
 				return false;
 
diff --git a/mcs/class/System.Net/System.Net/WebResponse_2_1.cs b/mcs/class/System.Net/System.Net/WebResponse_2_1.cs
index 4431d2e..495069b 100644
--- a/mcs/class/System.Net/System.Net/WebResponse_2_1.cs
+++ b/mcs/class/System.Net/System.Net/WebResponse_2_1.cs
@@ -36,13 +36,23 @@ namespace System.Net {
 
 	public abstract class WebResponse : IDisposable {
 
+		private WebHeaderCollection headers;
+
 		public abstract long ContentLength { get; }
 		public abstract string ContentType { get; }
 		public abstract Uri ResponseUri { get; }
 
 		public virtual WebHeaderCollection Headers {
-			get { throw NotImplemented (); }
-			internal set { ; }
+			get {
+				if (!SupportsHeaders)
+					throw NotImplemented ();
+				return headers;
+			}
+		}
+
+		internal WebHeaderCollection InternalHeaders {
+			get { return headers; }
+			set { headers = value; }
 		}
 
 		public virtual bool SupportsHeaders {
diff --git a/mcs/class/System.Net/moonlight_raw_System.Net.dll.sources b/mcs/class/System.Net/moonlight_raw_System.Net.dll.sources
index 5a6bebc..6115b85 100644
--- a/mcs/class/System.Net/moonlight_raw_System.Net.dll.sources
+++ b/mcs/class/System.Net/moonlight_raw_System.Net.dll.sources
@@ -34,6 +34,7 @@ System.Net.Policy/SiteOfOriginPolicy.cs
 ../System/System.Net/CookieCollection.cs
 ../System/System.Net/CookieContainer.cs
 ../System/System.Net/CookieException.cs
+../System/System.Net/CookieParser.cs
 ../System/System.Net/DnsEndPoint.cs
 ../System/System.Net/EndPoint.cs
 ../System/System.Net/HttpRequestHeader.cs
diff --git a/mcs/class/System.Numerics/System.Numerics/ChangeLog b/mcs/class/System.Numerics/System.Numerics/ChangeLog
index 7871730..9e64b89 100644
--- a/mcs/class/System.Numerics/System.Numerics/ChangeLog
+++ b/mcs/class/System.Numerics/System.Numerics/ChangeLog
@@ -1,3 +1,7 @@
+2010-12-15  Marek Safar  <marek.safar at gmail.com>
+
+	Some .net 4.0 api compatibility fixes
+
 2010-07-12  Jb Evain  <jbevain at novell.com>
 
 	* Complex.cs: implement IFormattable.
diff --git a/mcs/class/System.Numerics/System.Numerics/ChangeLog b/mcs/class/System.Numerics/System.Numerics/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Numerics/System.Numerics/ChangeLog
copy to mcs/class/System.Numerics/System.Numerics/ChangeLog.old
diff --git a/mcs/class/System.Numerics/System.Numerics/Complex.cs b/mcs/class/System.Numerics/System.Numerics/Complex.cs
index 7762ae0..7f870fc 100644
--- a/mcs/class/System.Numerics/System.Numerics/Complex.cs
+++ b/mcs/class/System.Numerics/System.Numerics/Complex.cs
@@ -110,13 +110,13 @@ namespace System.Numerics {
 				(left.imaginary * right.real - left.real * right.imaginary) / rsri);
 		}
 
-		public static Complex Divide (Complex left, Complex right)
+		public static Complex Divide (Complex dividend, Complex divisor)
 		{
-			double rsri = right.real * right.real + right.imaginary * right.imaginary;
+			double rsri = divisor.real * divisor.real + divisor.imaginary * divisor.imaginary;
 			return new Complex (
-				(left.real * right.real + left.imaginary * right.imaginary) / rsri,
+				(dividend.real * divisor.real + dividend.imaginary * divisor.imaginary) / rsri,
 
-				(left.imaginary * right.real - left.real * right.imaginary) / rsri);
+				(dividend.imaginary * divisor.real - dividend.real * divisor.imaginary) / rsri);
 		}
 
 		public static bool operator == (Complex left, Complex right)
@@ -129,12 +129,12 @@ namespace System.Numerics {
 			return real == value.real && imaginary == value.imaginary;
 		}
 
-		public override bool Equals (object value)
+		public override bool Equals (object obj)
 		{
-			if (value == null || !(value is Complex))
+			if (obj == null || !(obj is Complex))
 				return false;
 
-			Complex r = (Complex) value;
+			Complex r = (Complex) obj;
 			return real == r.real && imaginary == r.imaginary;
 		}
 		
diff --git a/mcs/class/System.Runtime.Caching/System.Runtime.Caching/ChangeLog b/mcs/class/System.Runtime.Caching/System.Runtime.Caching/ChangeLog
index 3e5faff..211a32a 100644
--- a/mcs/class/System.Runtime.Caching/System.Runtime.Caching/ChangeLog
+++ b/mcs/class/System.Runtime.Caching/System.Runtime.Caching/ChangeLog
@@ -1,3 +1,7 @@
+2010-11-08  Marek Safar  <marek.safar at gmail.com>
+
+	Removed platform attributes
+
 2010-04-26  Marek Habersack  <mhabersack at novell.com>
 
 	* MemoryCacheLRU.cs: added
diff --git a/mcs/class/System.Runtime.Caching/System.Runtime.Caching/ChangeLog b/mcs/class/System.Runtime.Caching/System.Runtime.Caching/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Runtime.Caching/System.Runtime.Caching/ChangeLog
copy to mcs/class/System.Runtime.Caching/System.Runtime.Caching/ChangeLog.old
diff --git a/mcs/class/System.Runtime.Caching/System.Runtime.Caching/MemoryCache.cs b/mcs/class/System.Runtime.Caching/System.Runtime.Caching/MemoryCache.cs
index 272b006..8bad194 100644
--- a/mcs/class/System.Runtime.Caching/System.Runtime.Caching/MemoryCache.cs
+++ b/mcs/class/System.Runtime.Caching/System.Runtime.Caching/MemoryCache.cs
@@ -41,7 +41,7 @@ namespace System.Runtime.Caching
 	{
 		const long DEFAULT_TIMER_PERIOD = 20000; // .NET's default, ms
 
-		static long totalPhysicalMemory = 0;
+		static long totalPhysicalMemory;
 		static int numCPUs;
 		
 		string name;
@@ -74,13 +74,11 @@ namespace System.Runtime.Caching
 		}
 		
 		public override object this [string key] {
-			[TargetedPatchingOptOut ("Performance critical to inline this type of method across NGen image boundaries")]
 			get { return FindContainer (key).Get (key); }
 			set { Set (key, value, ObjectCache.InfiniteAbsoluteExpiration); }
 		}
 		
 		public override string Name {
-			[TargetedPatchingOptOut ("Performance critical to inline this type of method across NGen image boundaries")]
 			get { return name; }
 		}
 		
@@ -381,7 +379,6 @@ namespace System.Runtime.Caching
 			return containers [containerIdx];
 		}
 		
-		[TargetedPatchingOptOut ("Performance critical to inline this type of method across NGen image boundaries")]
 		public override object Get (string key, string regionName = null)
 		{
 			if (regionName != null)
diff --git a/mcs/class/System.Runtime.Caching/System.Runtime.Caching/ObjectCache.cs b/mcs/class/System.Runtime.Caching/System.Runtime.Caching/ObjectCache.cs
index 1182730..74bf9f5 100644
--- a/mcs/class/System.Runtime.Caching/System.Runtime.Caching/ObjectCache.cs
+++ b/mcs/class/System.Runtime.Caching/System.Runtime.Caching/ObjectCache.cs
@@ -42,7 +42,6 @@ namespace System.Runtime.Caching
 		public static readonly TimeSpan NoSlidingExpiration = TimeSpan.Zero;
 
 		public static IServiceProvider Host {
-			[TargetedPatchingOptOut ("Performance critical to inline this type of method across NGen image boundaries")]
 			get { return host; }
 			set {
 				if (value == null)
@@ -59,7 +58,6 @@ namespace System.Runtime.Caching
 		public abstract object this [string key] { get; set; }
 		public abstract string Name { get; }
 		
-		[TargetedPatchingOptOut ("Performance critical to inline this type of method across NGen image boundaries")]
 		protected ObjectCache ()
 		{
 		}
@@ -90,7 +88,6 @@ namespace System.Runtime.Caching
 		protected abstract IEnumerator <KeyValuePair <string, object>> GetEnumerator ();
 		public abstract IDictionary <string, object> GetValues (IEnumerable <string> keys, string regionName = null);
 		
-		[TargetedPatchingOptOut ("Performance critical to inline this type of method across NGen image boundaries")]
 		public virtual IDictionary <string, object> GetValues (string regionName = null, params string[] keys)
 		{
 			return GetValues (keys.AsEnumerable <string> (), regionName);
@@ -101,7 +98,6 @@ namespace System.Runtime.Caching
 		public abstract void Set (string key, object value, CacheItemPolicy policy, string regionName = null);
 		public abstract void Set (string key, object value, DateTimeOffset absoluteExpiration, string regionName = null);
 		
-		[TargetedPatchingOptOut ("Performance critical to inline this type of method across NGen image boundaries")]
 		IEnumerator <KeyValuePair <string,object>> IEnumerable<KeyValuePair<string, object>>.GetEnumerator ()
 		{
 			return GetEnumerator ();
diff --git a/mcs/class/System.Runtime.Serialization/ChangeLog b/mcs/class/System.Runtime.Serialization/ChangeLog
index 06bfd0b..009f31a 100644
--- a/mcs/class/System.Runtime.Serialization/ChangeLog
+++ b/mcs/class/System.Runtime.Serialization/ChangeLog
@@ -1,3 +1,26 @@
+2010-10-05  Atsushi Eno  <atsushi at ximian.com>
+
+	Implement DataContractResolver support. At least TryResolveType in
+	serializer should work.
+
+2010-10-01  Atsushi Eno  <atsushi at ximian.com>
+
+	rename source file.
+
+2010-09-30  Atsushi Eno  <atsushi at ximian.com>
+
+	Add DataContractResolver stuff (dummy), and fix Id reference from
+	inside the referenced object.
+
+2010-09-08  Jb Evain  <jbevain at gmail.com>
+
+	Factorize the System.Runtime.Serialization monotouch and monodroid
+	sources into a mobile.sources
+
+2010-09-08  Jb Evain  <jbevain at gmail.com>
+
+	Enable the System.Runtime.Serialization build for monodroid
+
 2010-03-16  Jb Evain  <jbevain at novell.com>
 
 	* net_2_1_*.dll.sources: rename to moonlight_*.dll.sources.
diff --git a/mcs/class/System.Runtime.Serialization/ChangeLog b/mcs/class/System.Runtime.Serialization/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Runtime.Serialization/ChangeLog
copy to mcs/class/System.Runtime.Serialization/ChangeLog.old
diff --git a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization.dll.sources b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization.dll.sources
index bd7f739..190b3d9 100644
--- a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization.dll.sources
+++ b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization.dll.sources
@@ -13,6 +13,7 @@ System.Runtime.Serialization.Configuration/TypeElementCollection.cs
 System.Runtime.Serialization/CollectionDataContractAttribute.cs
 System.Runtime.Serialization/ContractNamespaceAttribute.cs
 System.Runtime.Serialization/DataContractAttribute.cs
+System.Runtime.Serialization/DataContractResolver.cs
 System.Runtime.Serialization/DataContractSerializer.cs
 System.Runtime.Serialization/DataMemberAttribute.cs
 System.Runtime.Serialization/EnumMemberAttribute.cs
@@ -32,7 +33,7 @@ System.Runtime.Serialization/XmlFormatterDeserializer.cs
 System.Runtime.Serialization/XmlFormatterSerializer.cs
 System.Runtime.Serialization/XmlObjectSerializer.cs
 System.Runtime.Serialization/XmlSerializableServices.cs
-System.Runtime.Serialization/XsdDataContractExporter-new.cs
+System.Runtime.Serialization/XsdDataContractExporter.cs
 System.Runtime.Serialization/XsdDataContractImporter.cs
 System.Xml/IFragmentCapableXmlDictionaryWriter.cs
 System.Xml/IStreamProvider.cs
diff --git a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/ChangeLog b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/ChangeLog
index 92fba2b..7e783bf 100644
--- a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/ChangeLog
+++ b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/ChangeLog
@@ -1,3 +1,70 @@
+2010-12-14  Atsushi Eno  <atsushi at ximian.com>
+
+	Fix enum serialization too.
+
+2010-12-13  Lluis Sanchez  <lluis at novell.com>
+
+	Fix flags enum deserialization
+
+	Flag enums values can be a composition of several values separated
+	by spaces. The deserializer now properly handles this case.
+
+2010-10-22  Atsushi Eno  <atsushi at ximian.com>
+
+	Don't put KnownTypeAttributes on enums.
+
+2010-10-22  Atsushi Eno  <atsushi at ximian.com>
+
+	Make generated type names unique.
+
+2010-10-05  Atsushi Eno  <atsushi at ximian.com>
+
+	When finding SerializationMap for resolved type, use type as the
+	key rather than name.
+
+	Make the fixed WCF test show more specific failure details.
+
+2010-10-05  Atsushi Eno  <atsushi at ximian.com>
+
+	Fix DataContractResolver.ResolveName() support in deserializer.
+	Add roundtrip test.
+
+2010-10-05  Atsushi Eno  <atsushi at ximian.com>
+
+	Implement DataContractResolver support. At least TryResolveType in
+	serializer should work.
+
+2010-10-01  Atsushi Eno  <atsushi at ximian.com>
+
+	rename source file.
+
+2010-10-01  Atsushi Eno  <atsushi at ximian.com>
+
+	Remove old code.
+
+2010-10-01  Atsushi Eno  <atsushi at ximian.com>
+
+	[wcf] serialization member namespace was wrong when root namesp
+	ace is given. Fixed possible infinite loop during DefaultTypeMap
+	initialization.
+
+	MS Basic/Contract/Data/POCO sample got working fine.
+
+2010-09-30  Atsushi Eno  <atsushi at ximian.com>
+
+	Add DataContractResolver stuff (dummy), and fix Id reference from
+	inside the referenced object.
+
+2010-09-10  Rolf Bjarne Kvinge  <RKvinge at novell.com>
+
+	XmlFormatterDeserializer: handle ReflectionTypeLoadExceptions
+	better
+
+2010-09-01  Atsushi Eno  <atsushi at ximian.com>
+
+	Use CollectionDataContractAttribute.ItemName for collection item
+	serialization.
+
 2010-08-28  Atsushi Eno  <atsushi at ximian.com>
 
 	ISerializable type didn't iterate all base types to pick up all
diff --git a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/DataContractResolver.cs b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/DataContractResolver.cs
new file mode 100644
index 0000000..60a3e66
--- /dev/null
+++ b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/DataContractResolver.cs
@@ -0,0 +1,82 @@
+//
+// DataContractResolver.cs
+//
+// Author:
+//	Atsushi Enomoto <atsushi at ximian.com>
+//
+// Copyright (C) 2010 Novell, Inc.  http://www.novell.com
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Xml;
+
+namespace System.Runtime.Serialization
+{
+	// See http://msdn.microsoft.com/en-us/library/ee358759.aspx
+#if NET_4_0
+	public
+#else
+	internal
+#endif
+	abstract class DataContractResolver
+	{
+		public abstract Type ResolveName (string typeName, string typeNamespace, Type declaredType, DataContractResolver knownTypeResolver);
+
+		public abstract bool TryResolveType (Type type, Type declaredType, DataContractResolver knownTypeResolver, out XmlDictionaryString typeName, out XmlDictionaryString typeNamespace);
+	}
+
+	internal class DefaultDataContractResolver : DataContractResolver
+	{
+		public DefaultDataContractResolver (DataContractSerializer serializer)
+		{
+			this.serializer = serializer;
+		}
+
+		DataContractSerializer serializer;
+		XmlDictionary dictionary;
+
+		public override Type ResolveName (string typeName, string typeNamespace, Type declaredType, DataContractResolver knownTypeResolver)
+		{
+			var map = serializer.InternalKnownTypes.FindUserMap (new XmlQualifiedName (typeName, typeNamespace));
+			if (map == null)
+				serializer.InternalKnownTypes.Add (declaredType);
+			if (map != null)
+				return map.RuntimeType;
+			return null;
+		}
+
+		public override bool TryResolveType (Type type, Type declaredType, DataContractResolver knownTypeResolver, out XmlDictionaryString typeName, out XmlDictionaryString typeNamespace)
+		{
+			var map = serializer.InternalKnownTypes.FindUserMap (type);
+			if (map == null) {
+				typeName = null;
+				typeNamespace = null;
+				return false;
+			} else {
+				dictionary = dictionary ?? new XmlDictionary ();
+				typeName = dictionary.Add (map.XmlName.Name);
+				typeNamespace = dictionary.Add (map.XmlName.Namespace);
+				return true;
+			}
+		}
+	}
+}
diff --git a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/DataContractSerializer.cs b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/DataContractSerializer.cs
index b0adbce..d44a416 100755
--- a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/DataContractSerializer.cs
+++ b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/DataContractSerializer.cs
@@ -52,6 +52,7 @@ namespace System.Runtime.Serialization
 		ReadOnlyCollection<Type> returned_known_types;
 		KnownTypeCollection known_types;
 		IDataContractSurrogate surrogate;
+		DataContractResolver resolver, default_resolver;
 
 		int max_items = 0x10000; // FIXME: could be from config.
 
@@ -70,9 +71,8 @@ namespace System.Runtime.Serialization
 			if (type == null)
 				throw new ArgumentNullException ("type");
 			this.type = type;
-			known_types = new KnownTypeCollection ();
 			PopulateTypes (knownTypes);
-			known_types.TryRegister (type);
+			known_types.Add (type);
 			QName qname = known_types.GetQName (type);
 
 			FillDictionaryString (qname.Name, qname.Namespace);
@@ -171,6 +171,48 @@ namespace System.Runtime.Serialization
 				dataContractSurrogate);
 		}
 
+#if NET_4_0
+		public DataContractSerializer (Type type,
+			IEnumerable<Type> knownTypes,
+			int maxObjectsInGraph,
+			bool ignoreExtensionDataObject,
+			bool preserveObjectReferences,
+			IDataContractSurrogate dataContractSurrogate,
+			DataContractResolver dataContractResolver)
+			: this (type, knownTypes, maxObjectsInGraph, ignoreExtensionDataObject, preserveObjectReferences, dataContractSurrogate)
+		{
+			DataContractResolver = dataContractResolver;
+		}
+
+		public DataContractSerializer (Type type,
+			string rootName,
+			string rootNamespace,
+			IEnumerable<Type> knownTypes,
+			int maxObjectsInGraph,
+			bool ignoreExtensionDataObject,
+			bool preserveObjectReferences,
+			IDataContractSurrogate dataContractSurrogate,
+			DataContractResolver dataContractResolver)
+			: this (type, rootName, rootNamespace, knownTypes, maxObjectsInGraph, ignoreExtensionDataObject, preserveObjectReferences, dataContractSurrogate)
+		{
+			DataContractResolver = dataContractResolver;
+		}
+
+		public DataContractSerializer (Type type,
+			XmlDictionaryString rootName,
+			XmlDictionaryString rootNamespace,
+			IEnumerable<Type> knownTypes,
+			int maxObjectsInGraph,
+			bool ignoreExtensionDataObject,
+			bool preserveObjectReferences,
+			IDataContractSurrogate dataContractSurrogate,
+			DataContractResolver dataContractResolver)
+			: this (type, rootName, rootNamespace, knownTypes, maxObjectsInGraph, ignoreExtensionDataObject, preserveObjectReferences, dataContractSurrogate)
+		{
+			DataContractResolver = dataContractResolver;
+		}
+#endif
+
 		void PopulateTypes (IEnumerable<Type> knownTypes)
 		{
 			if (known_types == null)
@@ -178,7 +220,7 @@ namespace System.Runtime.Serialization
 
 			if (knownTypes != null) {
 				foreach (Type t in knownTypes)
-					known_types.TryRegister (t);
+					known_types.Add (t);
 			}
 
 			Type elementType = type;
@@ -189,7 +231,7 @@ namespace System.Runtime.Serialization
 			object [] attrs = elementType.GetCustomAttributes (typeof (KnownTypeAttribute), true);
 			for (int i = 0; i < attrs.Length; i ++) {
 				KnownTypeAttribute kt = (KnownTypeAttribute) attrs [i];
-				known_types.TryRegister (kt.Type);
+				known_types.Add (kt.Type);
 			}
 		}
 
@@ -213,8 +255,19 @@ namespace System.Runtime.Serialization
 			ignore_ext = ignoreExtensionDataObject;
 			preserve_refs = preserveObjectReferences;
 			surrogate = dataContractSurrogate;
+		}
 
-			PopulateTypes (Type.EmptyTypes);
+#if NET_4_0
+		public
+#else
+		internal
+#endif
+		DataContractResolver DataContractResolver {
+			get { return resolver; }
+			private set {
+				resolver = value;
+				default_resolver = default_resolver ?? new DefaultDataContractResolver (this);
+			}
 		}
 
 		public bool IgnoreExtensionDataObject {
@@ -229,6 +282,10 @@ namespace System.Runtime.Serialization
 			}
 		}
 
+		internal KnownTypeCollection InternalKnownTypes {
+			get { return known_types; }
+		}
+
 		public IDataContractSurrogate DataContractSurrogate {
 			get { return surrogate; }
 		}
@@ -266,7 +323,6 @@ namespace System.Runtime.Serialization
 			return ReadObject (XmlDictionaryReader.CreateDictionaryReader (reader), verifyObjectName);
 		}
 
-		[MonoTODO]
 		public override object ReadObject (XmlDictionaryReader reader, bool verifyObjectName)
 		{
 			int startTypeCount = known_types.Count;
@@ -275,7 +331,7 @@ namespace System.Runtime.Serialization
 			bool isEmpty = reader.IsEmptyElement;
 
 			object ret = XmlFormatterDeserializer.Deserialize (reader, type,
-				known_types, surrogate, root_name.Value, root_ns.Value, verifyObjectName);
+				known_types, surrogate, DataContractResolver, default_resolver, root_name.Value, root_ns.Value, verifyObjectName);
 
 			// remove temporarily-added known types for
 			// rootType and object graph type.
@@ -285,6 +341,19 @@ namespace System.Runtime.Serialization
 			return ret;
 		}
 
+#if NET_4_0
+		public object ReadObject (XmlDictionaryReader reader, bool verifyObjectName, DataContractResolver resolver)
+		{
+			var bak = DataContractResolver;
+			try {
+				DataContractResolver = resolver;
+				return ReadObject (reader, verifyObjectName);
+			} finally {
+				DataContractResolver = bak;
+			}
+		}
+#endif
+
 		private void ReadRootStartElement (XmlReader reader, Type type)
  		{
 			SerializationMap map =
@@ -304,6 +373,19 @@ namespace System.Runtime.Serialization
 			WriteObject (w, graph);
 		}
 
+#if NET_4_0
+		public void WriteObject (XmlDictionaryWriter writer, object graph, DataContractResolver resolver)
+		{
+			var bak = DataContractResolver;
+			try {
+				DataContractResolver = resolver;
+				WriteObject (writer, graph);
+			} finally {
+				DataContractResolver = bak;
+			}
+		}
+#endif
+
 		[MonoTODO ("support arrays; support Serializable; support SharedType; use DataContractSurrogate")]
 		/*
 			when writeContentOnly is true, then the input XmlWriter
@@ -325,8 +407,8 @@ namespace System.Runtime.Serialization
 			int startTypeCount = known_types.Count;
 
 			XmlFormatterSerializer.Serialize (writer, graph,
-				known_types,
-				ignore_ext, max_items, root_ns.Value, preserve_refs);
+				type, known_types,
+				ignore_ext, max_items, root_ns.Value, preserve_refs, DataContractResolver, default_resolver);
 
 			// remove temporarily-added known types for
 			// rootType and object graph type.
@@ -366,8 +448,21 @@ namespace System.Runtime.Serialization
 				return;
 			}
 
-			QName instName = null;
-			QName root_qname = known_types.GetQName (rootType);
+			QName rootQName = null;
+			XmlDictionaryString name, ns;
+			if (DataContractResolver != null && DataContractResolver.TryResolveType (graph.GetType (), type, default_resolver, out name, out ns))
+				rootQName = new QName (name.Value, ns.Value);
+
+			// It is error unless 1) TypeResolver resolved the type name, 2) the object is the exact type, 3) the object is known or 4) the type is primitive.
+
+			if (rootQName == null &&
+			    graph.GetType () != type &&
+			    !known_types.Contains (graph.GetType ()) &&
+			    KnownTypeCollection.GetPrimitiveTypeName (graph.GetType ()) == QName.Empty)
+				throw new SerializationException (String.Format ("Type '{0}' is unexpected. The type should either be registered as a known type, or DataContractResolver should be used.", graph.GetType ()));
+
+			QName instName = rootQName;
+			rootQName = rootQName ?? known_types.GetQName (rootType);
 			QName graph_qname = known_types.GetQName (graph.GetType ());
 
 			known_types.Add (graph.GetType ());
@@ -376,24 +471,23 @@ namespace System.Runtime.Serialization
 				writer.WriteStartElement (root_name.Value, root_ns.Value);
 			else
 				writer.WriteStartElement (root_name, root_ns);
-			if (root_ns.Value != root_qname.Namespace)
-				if (root_qname.Namespace != KnownTypeCollection.MSSimpleNamespace)
-					writer.WriteXmlnsAttribute (null, root_qname.Namespace);
 
-			if (root_qname == graph_qname) {
-				if (root_qname.Namespace != KnownTypeCollection.MSSimpleNamespace &&
-					!rootType.IsEnum)
-					//FIXME: Hack, when should the "i:type" be written?
-					//Not used in case of enums
-					writer.WriteXmlnsAttribute ("i", XmlSchema.InstanceNamespace);
+			if (rootQName != graph_qname || rootQName.Namespace != KnownTypeCollection.MSSimpleNamespace && !rootType.IsEnum)
+				//FIXME: Hack, when should the "i:type" be written?
+				//Not used in case of enums
+				writer.WriteXmlnsAttribute ("i", XmlSchema.InstanceNamespace);
+
+			if (root_ns.Value != rootQName.Namespace)
+				if (rootQName.Namespace != KnownTypeCollection.MSSimpleNamespace)
+					writer.WriteXmlnsAttribute (null, rootQName.Namespace);
 
+			if (rootQName == graph_qname)
 				return;
-			}
 
 			/* Different names */
 			known_types.Add (rootType);
 			
-			instName = KnownTypeCollection.GetPredefinedTypeName (graph.GetType ());
+			instName = instName ?? KnownTypeCollection.GetPredefinedTypeName (graph.GetType ());
 			if (instName == QName.Empty)
 				/* Not a primitive type */
 				instName = graph_qname;
@@ -401,10 +495,12 @@ namespace System.Runtime.Serialization
 				/* FIXME: Hack, .. see test WriteObject7 () */
 				instName = new QName (instName.Name, XmlSchema.Namespace);
 
+/* // disabled as it now generates extraneous i:type output.
 			// output xsi:type as rootType is not equivalent to the graph's type.
 			writer.WriteStartAttribute ("i", "type", XmlSchema.InstanceNamespace);
 			writer.WriteQualifiedName (instName.Name, instName.Namespace);
 			writer.WriteEndAttribute ();
+*/
 		}
 
 		public override void WriteEndObject (XmlDictionaryWriter writer)
diff --git a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/KnownTypeCollection.cs b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/KnownTypeCollection.cs
index c694f35..0b742de 100755
--- a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/KnownTypeCollection.cs
+++ b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/KnownTypeCollection.cs
@@ -386,7 +386,7 @@ namespace System.Runtime.Serialization
 
 		protected override void InsertItem (int index, Type type)
 		{
-			if (TryRegister (type))
+			if (!Contains (type) && TryRegister (type))
 				base.InsertItem (index, type);
 		}
 
@@ -407,21 +407,15 @@ namespace System.Runtime.Serialization
 
 		protected override void SetItem (int index, Type type)
 		{
-			if (index == Count)
-				InsertItem (index, type);
-			else {
+			if (index != Count)
 				RemoveItem (index);
-				if (TryRegister (type))
-					base.InsertItem (index - 1, type);
-			}
+			if (TryRegister (type))
+				base.InsertItem (index - 1, type);
 		}
 
 		internal SerializationMap FindUserMap (QName qname)
 		{
-			for (int i = 0; i < contracts.Count; i++)
-				if (qname == contracts [i].XmlName)
-					return contracts [i];
-			return null;
+			return contracts.FirstOrDefault (c => c.XmlName == qname);
 		}
 
 		internal Type GetSerializedType (Type type)
@@ -811,6 +805,7 @@ namespace System.Runtime.Serialization
 		{
 			DefaultTypeMap ret = new DefaultTypeMap (type, this);
 			contracts.Add (ret);
+			ret.Initialize ();
 			return ret;
 		}
 
diff --git a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/SerializationMap.cs b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/SerializationMap.cs
index 2327331..5f1f2ac 100644
--- a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/SerializationMap.cs
+++ b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/SerializationMap.cs
@@ -124,6 +124,17 @@ namespace System.Runtime.Serialization
 
 		public QName XmlName { get; set; }
 
+		protected void HandleId (XmlReader reader, XmlFormatterDeserializer deserializer, object instance)
+		{
+			HandleId (reader.GetAttribute ("Id", KnownTypeCollection.MSSimpleNamespace), deserializer, instance);
+		}
+		
+		protected void HandleId (string id, XmlFormatterDeserializer deserializer, object instance)
+		{
+			if (id != null)
+				deserializer.References.Add (id, instance);
+		}
+
 		public CollectionDataContractAttribute GetCollectionDataContractAttribute (Type type)
 		{
 			object [] atts = type.GetCustomAttributes (
@@ -146,110 +157,6 @@ namespace System.Runtime.Serialization
 			return (Type.GetTypeCode (type) != TypeCode.Object || type == typeof (object));
 		}
 
-#if !NET_2_1
-		/* Returns the XmlSchemaType AND adds it to @schemas */
-		public virtual XmlSchemaType GetSchemaType (XmlSchemaSet schemas, Dictionary<QName, XmlSchemaType> generated_schema_types)
-		{
-			if (IsPrimitive (RuntimeType))
-				return null;
-
-			if (generated_schema_types.ContainsKey (XmlName)) // Caching  
-				return generated_schema_types [XmlName] as XmlSchemaType;
-
-			XmlSchemaComplexType complex_type = null;
-
-			complex_type = new XmlSchemaComplexType ();
-			complex_type.Name = XmlName.Name;
-			generated_schema_types [XmlName] = complex_type;
-
-			if (RuntimeType.BaseType == typeof (object)) {
-				complex_type.Particle = GetSequence (schemas, generated_schema_types);
-			} else {
-				//Has a non-System.Object base class
-				XmlSchemaComplexContentExtension extension = new XmlSchemaComplexContentExtension ();
-				XmlSchemaComplexContent content = new XmlSchemaComplexContent ();
-
-				complex_type.ContentModel = content;
-				content.Content = extension;
-
-				KnownTypes.Add (RuntimeType.BaseType);
-				SerializationMap map = KnownTypes.FindUserMap (RuntimeType.BaseType);
-				//FIXME: map == null ?
-				map.GetSchemaType (schemas, generated_schema_types);
-
-				extension.Particle = GetSequence (schemas, generated_schema_types);
-				extension.BaseTypeName = GetQualifiedName (RuntimeType.BaseType);
-			}
-			
-			XmlSchemaElement schemaElement = GetSchemaElement (XmlName, complex_type);
-			XmlSchema schema = GetSchema (schemas, XmlName.Namespace);
-			schema.Items.Add (complex_type);
-			schema.Items.Add (schemaElement);
-			schemas.Reprocess (schema);
-
-			return complex_type;
-		}
-
-		/* Returns the <xs:sequence> for the data members */
-		XmlSchemaSequence GetSequence (XmlSchemaSet schemas,
-				Dictionary<QName, XmlSchemaType> generated_schema_types)
-		{
-			List<DataMemberInfo> members = GetMembers ();
-
-			XmlSchema schema = GetSchema (schemas, XmlName.Namespace);
-			XmlSchemaSequence sequence = new XmlSchemaSequence ();
-			foreach (DataMemberInfo dmi in members) {
-				// delegates are not supported.
-				if (!dmi.MemberType.IsAbstract && typeof (System.Delegate).IsAssignableFrom (dmi.MemberType))
-					continue;
-
-				XmlSchemaElement element = new XmlSchemaElement ();
-				element.Name = dmi.XmlName;
-
-				KnownTypes.Add (dmi.MemberType);
-				SerializationMap map = KnownTypes.FindUserMap (dmi.MemberType);
-				if (map != null) {
-					XmlSchemaType schema_type = map.GetSchemaType (schemas, generated_schema_types);
-					if (schema_type is XmlSchemaComplexType)
-						element.IsNillable = true;
-				} else {
-					//Primitive type
-					if (dmi.MemberType == typeof (string))
-						element.IsNillable = true;
-				}
-
-				element.MinOccurs = 0;
-
-				element.SchemaTypeName = GetQualifiedName (dmi.MemberType);
-				AddImport (schema, element.SchemaTypeName.Namespace);
-
-				sequence.Items.Add (element);
-			}
-
-			schemas.Reprocess (schema);
-			return sequence;
-		}
-
-		//FIXME: Replace with a dictionary ?
-		void AddImport (XmlSchema schema, string ns)
-		{
-			if (ns == XmlSchema.Namespace || schema.TargetNamespace == ns)
-				return;
-
-			foreach (XmlSchemaObject o in schema.Includes) {
-				XmlSchemaImport import = o as XmlSchemaImport;
-				if (import == null)
-					continue;
-				if (import.Namespace == ns)
-					return;
-			}
-
-			XmlSchemaImport imp = new XmlSchemaImport ();
-			imp.Namespace = ns;
-			schema.Includes.Add (imp);
-		}
-#endif
-
 		//Returns list of data members for this type ONLY
 		public virtual List<DataMemberInfo> GetMembers ()
 		{
@@ -343,15 +250,16 @@ namespace System.Runtime.Serialization
 		public virtual object DeserializeObject (XmlReader reader, XmlFormatterDeserializer deserializer)
 		{
 			bool isEmpty = reader.IsEmptyElement;
+			string id = reader.GetAttribute ("Id", KnownTypeCollection.MSSimpleNamespace);
 			reader.ReadStartElement ();
 			reader.MoveToContent ();
 
 			object res;
 
 			if (isEmpty)
-				res = DeserializeEmptyContent (reader, deserializer);
+				res = DeserializeEmptyContent (reader, deserializer, id);
 			else
-				res = DeserializeContent (reader, deserializer);
+				res = DeserializeContent (reader, deserializer, id);
 
 			reader.MoveToContent ();
 			if (!isEmpty && reader.NodeType == XmlNodeType.EndElement)
@@ -371,21 +279,21 @@ namespace System.Runtime.Serialization
 		// This is sort of hack. The argument reader already moved ahead of
 		// the actual empty element.It's just for historical consistency.
 		public virtual object DeserializeEmptyContent (XmlReader reader,
-			XmlFormatterDeserializer deserializer)
+			XmlFormatterDeserializer deserializer, string id)
 		{
-			return DeserializeContent (reader, deserializer, true);
+			return DeserializeContent (reader, deserializer, id, true);
 		}
 
 		public virtual object DeserializeContent (XmlReader reader,
-			XmlFormatterDeserializer deserializer)
+			XmlFormatterDeserializer deserializer, string id)
 		{
-			return DeserializeContent (reader, deserializer, false);
+			return DeserializeContent (reader, deserializer, id, false);
 		}
 
-		object DeserializeContent (XmlReader reader,
-			XmlFormatterDeserializer deserializer, bool empty)
+		object DeserializeContent (XmlReader reader, XmlFormatterDeserializer deserializer, string id, bool empty)
 		{
 			object instance = FormatterServices.GetUninitializedObject (RuntimeType);
+			HandleId (id, deserializer, instance);
 
 			if (OnDeserializing != null)
 				OnDeserializing.Invoke (instance, new object [] {new StreamingContext (StreamingContextStates.All)});
@@ -459,15 +367,15 @@ namespace System.Runtime.Serialization
 			}
 		}
 
-		protected DataMemberInfo CreateDataMemberInfo (DataMemberAttribute dma, MemberInfo mi, Type type)
+		protected DataMemberInfo CreateDataMemberInfo (DataMemberAttribute dma, MemberInfo mi, Type memberType, string ownerNamespace)
 		{
-			KnownTypes.Add (type);
-			QName qname = KnownTypes.GetQName (type);
-			string rootNamespace = KnownTypes.GetQName (mi.DeclaringType).Namespace;
+			KnownTypes.Add (memberType);
+			QName qname = KnownTypes.GetQName (memberType);
+			
 			if (KnownTypeCollection.GetPrimitiveTypeFromName (qname.Name) != null)
-				return new DataMemberInfo (mi, dma, rootNamespace, null);
+				return new DataMemberInfo (mi, dma, ownerNamespace, null);
 			else
-				return new DataMemberInfo (mi, dma, rootNamespace, qname.Namespace);
+				return new DataMemberInfo (mi, dma, ownerNamespace, qname.Namespace);
 		}
 	}
 
@@ -495,17 +403,12 @@ namespace System.Runtime.Serialization
 #else
 			IXmlSerializable ixs = (IXmlSerializable) Activator.CreateInstance (RuntimeType, true);
 #endif
+
+			HandleId (reader, deserializer, ixs);
+
 			ixs.ReadXml (reader);
 			return ixs;
 		}
-
-#if !NET_2_1
-		// FIXME: verify return value sanity.
-		public override XmlSchemaType GetSchemaType (XmlSchemaSet schemas, Dictionary<QName, XmlSchemaType> generated_schema_types)
-		{
-			return null;
-		}
-#endif
 	}
 
 	internal partial class SharedContractMap : SerializationMap
@@ -518,21 +421,21 @@ namespace System.Runtime.Serialization
 
 		internal void Initialize ()
 		{
-			Type baseType = RuntimeType;
+			Type type = RuntimeType;
 			List <DataMemberInfo> members = new List <DataMemberInfo> ();
-			object [] atts = baseType.GetCustomAttributes (
+			object [] atts = type.GetCustomAttributes (
 				typeof (DataContractAttribute), false);
 			IsReference = atts.Length > 0 ? (((DataContractAttribute) atts [0]).IsReference) : false;
 
-			while (baseType != null) {
-				QName bqname = KnownTypes.GetQName (baseType);
+			while (type != null) {
+				QName qname = KnownTypes.GetQName (type);
 					
-				members = GetMembers (baseType, bqname, true);
+				members = GetMembers (type, qname, true);
 				members.Sort (DataMemberInfo.DataMemberInfoComparer.Instance);
 				Members.InsertRange (0, members);
 				members.Clear ();
 
-				baseType = baseType.BaseType;
+				type = type.BaseType;
 			}
 		}
 
@@ -548,12 +451,12 @@ namespace System.Runtime.Serialization
 					GetDataMemberAttribute (pi);
 				if (dma == null)
 					continue;
-				KnownTypes.TryRegister (pi.PropertyType);
+				KnownTypes.Add (pi.PropertyType);
 				var map = KnownTypes.FindUserMap (pi.PropertyType);
 				if (!pi.CanRead || (!pi.CanWrite && !(map is ICollectionTypeMap)))
 					throw new InvalidDataContractException (String.Format (
 							"DataMember property '{0}' on type '{1}' must have both getter and setter.", pi, pi.DeclaringType));
-				data_members.Add (CreateDataMemberInfo (dma, pi, pi.PropertyType));
+				data_members.Add (CreateDataMemberInfo (dma, pi, pi.PropertyType, qname.Namespace));
 			}
 
 			foreach (FieldInfo fi in type.GetFields (flags)) {
@@ -561,7 +464,7 @@ namespace System.Runtime.Serialization
 					GetDataMemberAttribute (fi);
 				if (dma == null)
 					continue;
-				data_members.Add (CreateDataMemberInfo (dma, fi, fi.FieldType));
+				data_members.Add (CreateDataMemberInfo (dma, fi, fi.FieldType, qname.Namespace));
 			}
 
 			return data_members;
@@ -578,6 +481,10 @@ namespace System.Runtime.Serialization
 		public DefaultTypeMap (Type type, KnownTypeCollection knownTypes)
 			: base (type, KnownTypeCollection.GetStaticQName (type), knownTypes)
 		{
+		}
+
+		internal void Initialize ()
+		{
 			Members.AddRange (GetDefaultMembers ());
 		}
 
@@ -595,14 +502,14 @@ namespace System.Runtime.Serialization
 					continue;
 				if (mi.GetCustomAttributes (typeof (IgnoreDataMemberAttribute), false).Length != 0)
 					continue;
-				l.Add (new DataMemberInfo (mi, new DataMemberAttribute (), null, null));
+				l.Add (CreateDataMemberInfo (new DataMemberAttribute (), mi, mt, XmlName.Namespace));
 			}
 			l.Sort (DataMemberInfo.DataMemberInfoComparer.Instance);
 			return l;
 		}
 	}
 
-	// FIXME: it still needs to consider ItemName/KeyName/ValueName
+	// FIXME: it still needs to consider KeyName/ValueName
 	// (especially Dictionary collection is not likely considered yet.)
 	internal partial class CollectionContractTypeMap : CollectionTypeMap
 	{
@@ -615,6 +522,8 @@ namespace System.Runtime.Serialization
 		{
 			this.a = a;
 			IsReference = a.IsReference;
+			if (!String.IsNullOrEmpty (a.ItemName))
+				element_qname = new XmlQualifiedName (a.ItemName, a.Namespace ?? CurrentNamespace);
 		}
 
 		internal override string CurrentNamespace {
@@ -707,9 +616,10 @@ namespace System.Runtime.Serialization
 #endif
 		}
 
-		public override object DeserializeEmptyContent (XmlReader reader, XmlFormatterDeserializer deserializer)
+		public override object DeserializeEmptyContent (XmlReader reader, XmlFormatterDeserializer deserializer, string id)
 		{
 			var instance = CreateInstance ();
+			HandleId (id, deserializer, instance);
 			if (OnDeserializing != null)
 				OnDeserializing.Invoke (instance, new object [] {new StreamingContext (StreamingContextStates.All)});
 			try {
@@ -723,9 +633,10 @@ namespace System.Runtime.Serialization
 			}
 		}
 
-		public override object DeserializeContent (XmlReader reader, XmlFormatterDeserializer deserializer)
+		public override object DeserializeContent (XmlReader reader, XmlFormatterDeserializer deserializer, string id)
 		{
 			object instance = CreateInstance ();
+			HandleId (id, deserializer, instance);
 			if (OnDeserializing != null)
 				OnDeserializing.Invoke (instance, new object [] {new StreamingContext (StreamingContextStates.All)});
 			int depth = reader.NodeType == XmlNodeType.None ? reader.Depth : reader.Depth - 1;
@@ -754,50 +665,6 @@ namespace System.Runtime.Serialization
 			//Shouldn't come here at all!
 			throw new NotImplementedException ();
 		}
-		
-#if !NET_2_1
-		public override XmlSchemaType GetSchemaType (XmlSchemaSet schemas, Dictionary<QName, XmlSchemaType> generated_schema_types)
-		{
-			if (generated_schema_types.ContainsKey (XmlName))
-				return null;
-
-			if (generated_schema_types.ContainsKey (XmlName))
-				return generated_schema_types [XmlName];
-
-			QName element_qname = GetQualifiedName (element_type);
-
-			XmlSchemaComplexType complex_type = new XmlSchemaComplexType ();
-			complex_type.Name = XmlName.Name;
-
-			XmlSchemaSequence sequence = new XmlSchemaSequence ();
-			XmlSchemaElement element = new XmlSchemaElement ();
-
-			element.MinOccurs = 0;
-			element.MaxOccursString = "unbounded";
-			element.Name = element_qname.Name;
-
-			KnownTypes.Add (element_type);
-			SerializationMap map = KnownTypes.FindUserMap (element_type);
-			if (map != null) {// non-primitive type
-				map.GetSchemaType (schemas, generated_schema_types);
-				element.IsNillable = true;
-			}
-
-			element.SchemaTypeName = element_qname;
-
-			sequence.Items.Add (element);
-			complex_type.Particle = sequence;
-
-			XmlSchema schema = GetSchema (schemas, XmlName.Namespace);
-			schema.Items.Add (complex_type);
-			schema.Items.Add (GetSchemaElement (XmlName, complex_type));
-			schemas.Reprocess (schema);
-
-			generated_schema_types [XmlName] = complex_type;
-
-			return complex_type;
-		}
-#endif
 	}
 
 	internal partial class DictionaryTypeMap : SerializationMap, ICollectionTypeMap
@@ -959,14 +826,15 @@ namespace System.Runtime.Serialization
 #endif
 		}
 
-		public override object DeserializeEmptyContent (XmlReader reader, XmlFormatterDeserializer deserializer)
+		public override object DeserializeEmptyContent (XmlReader reader, XmlFormatterDeserializer deserializer, string id)
 		{
-			return DeserializeContent (reader, deserializer);
+			return DeserializeContent (reader, deserializer, id);
 		}
 
-		public override object DeserializeContent(XmlReader reader, XmlFormatterDeserializer deserializer)
+		public override object DeserializeContent(XmlReader reader, XmlFormatterDeserializer deserializer, string id)
 		{
 			object instance = CreateInstance ();
+			HandleId (id, deserializer, instance);
 			int depth = reader.NodeType == XmlNodeType.None ? reader.Depth : reader.Depth - 1;
 			while (reader.NodeType == XmlNodeType.Element && reader.Depth > depth) {
 				if (reader.IsEmptyElement)
@@ -994,13 +862,6 @@ namespace System.Runtime.Serialization
 			//Shouldn't come here at all!
 			throw new NotImplementedException ();
 		}
-		
-#if !NET_2_1
-		public override XmlSchemaType GetSchemaType (XmlSchemaSet schemas, Dictionary<QName, XmlSchemaType> generated_schema_types)
-		{
-			throw new NotImplementedException ();
-		}
-#endif
 	}
 
 	internal partial class SharedTypeMap : SerializationMap
@@ -1031,7 +892,7 @@ namespace System.Runtime.Serialization
 					if (fi.IsInitOnly)
 						throw new InvalidDataContractException (String.Format ("DataMember field {0} must not be read-only.", fi));
 					DataMemberAttribute dma = new DataMemberAttribute ();
-					data_members.Add (CreateDataMemberInfo (dma, fi, fi.FieldType));
+					data_members.Add (CreateDataMemberInfo (dma, fi, fi.FieldType, qname.Namespace));
 				}
 			}
 
@@ -1093,45 +954,26 @@ namespace System.Runtime.Serialization
 			return (EnumMemberAttribute) atts [0];
 		}
 
-#if !NET_2_1
-		public override XmlSchemaType GetSchemaType (XmlSchemaSet schemas, Dictionary<QName, XmlSchemaType> generated_schema_types)
-		{
-			if (generated_schema_types.ContainsKey (XmlName))
-				return generated_schema_types [XmlName];
-
-			XmlSchemaSimpleType simpleType = new XmlSchemaSimpleType ();
-			simpleType.Name = XmlName.Name;
-
-			XmlSchemaSimpleTypeRestriction simpleRestriction = new XmlSchemaSimpleTypeRestriction ();
-			simpleType.Content = simpleRestriction;
-			simpleRestriction.BaseTypeName = new XmlQualifiedName ("string", XmlSchema.Namespace);
-
-			foreach (EnumMemberInfo emi in enum_members) {
-				XmlSchemaEnumerationFacet e = new XmlSchemaEnumerationFacet ();
-				e.Value = emi.XmlName;
-				simpleRestriction.Facets.Add (e);
-			}
-
-			generated_schema_types [XmlName] = simpleType;
-			
-			XmlSchema schema = GetSchema (schemas, XmlName.Namespace);
-			XmlSchemaElement element = GetSchemaElement (XmlName, simpleType);
-			element.IsNillable = true;
-
-			schema.Items.Add (simpleType);
-			schema.Items.Add (element);
-
-			return simpleType;
-		}
-#endif
-
 		public override void Serialize (object graph,
 			XmlFormatterSerializer serializer)
 		{
-			foreach (EnumMemberInfo emi in enum_members) {
-				if (Enum.Equals (emi.Value, graph)) {
-					serializer.Writer.WriteString (emi.XmlName);
-					return;
+			if (flag_attr) {
+				long val = Convert.ToInt64 (graph);
+				string s = null;
+				foreach (EnumMemberInfo emi in enum_members) {
+					long f = Convert.ToInt64 (emi.Value);
+					if ((f & val) == f)
+						s += (s != null ? " " : String.Empty) + emi.XmlName;
+				}
+				if (s != null)
+					serializer.Writer.WriteString (s);
+				return;
+			} else {
+				foreach (EnumMemberInfo emi in enum_members) {
+					if (Enum.Equals (emi.Value, graph)) {
+						serializer.Writer.WriteString (emi.XmlName);
+						return;
+					}
 				}
 			}
 
@@ -1139,23 +981,38 @@ namespace System.Runtime.Serialization
 				"Enum value '{0}' is invalid for type '{1}' and cannot be serialized.", graph, RuntimeType));
 		}
 
-		public override object DeserializeEmptyContent (XmlReader reader,
-			XmlFormatterDeserializer deserializer)
+		public override object DeserializeEmptyContent (XmlReader reader, XmlFormatterDeserializer deserializer, string id)
 		{
 			if (!flag_attr)
 				throw new SerializationException (String.Format ("Enum value '' is invalid for type '{0}' and cannot be deserialized.", RuntimeType));
-			return Enum.ToObject (RuntimeType, 0);
+			var instance = Enum.ToObject (RuntimeType, 0);
+			HandleId (id, deserializer, instance);
+			return instance;
 		}
 
-		public override object DeserializeContent (XmlReader reader,
-			XmlFormatterDeserializer deserializer)
+		public override object DeserializeContent (XmlReader reader, XmlFormatterDeserializer deserializer, string id)
 		{
 			string value = reader.NodeType != XmlNodeType.Text ? String.Empty : reader.ReadContentAsString ();
+			HandleId (id, deserializer, value);
 
 			if (value != String.Empty) {
-				foreach (EnumMemberInfo emi in enum_members)
-					if (emi.XmlName == value)
-						return emi.Value;
+				if (flag_attr && value.IndexOf (' ') != -1) {
+					long flags = 0l;
+					foreach (string flag in value.Split (' ')) {
+						foreach (EnumMemberInfo emi in enum_members) {
+							if (emi.XmlName == flag) {
+								flags |= Convert.ToInt64 (emi.Value);
+								break;
+							}
+						}
+					}
+					return Enum.ToObject (RuntimeType, flags);
+				}
+				else {
+					foreach (EnumMemberInfo emi in enum_members)
+						if (emi.XmlName == value)
+							return emi.Value;
+				}
 			}
 
 			if (!flag_attr)
diff --git a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/XmlFormatterDeserializer.cs b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/XmlFormatterDeserializer.cs
index 4c6fdd9..cd0123a 100644
--- a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/XmlFormatterDeserializer.cs
+++ b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/XmlFormatterDeserializer.cs
@@ -27,7 +27,7 @@
 //
 #if NET_2_0
 using System;
-using System.Collections;
+using System.Collections.Generic;
 using System.IO;
 using System.Linq;
 using System.Reflection;
@@ -43,14 +43,16 @@ namespace System.Runtime.Serialization
 	{
 		KnownTypeCollection types;
 		IDataContractSurrogate surrogate;
+		DataContractResolver resolver, default_resolver; // new in 4.0.
 		// 3.5 SP1 supports deserialization by reference (id->obj).
 		// Though unlike XmlSerializer, it does not support forward-
 		// reference resolution i.e. a referenced object must appear
 		// before any references to it.
-		Hashtable references = new Hashtable ();
+		Dictionary<string,object> references = new Dictionary<string,object> ();
+		Dictionary<QName,Type> resolved_qnames = new Dictionary<QName,Type> ();
 
-		public static object Deserialize (XmlReader reader, Type type,
-			KnownTypeCollection knownTypes, IDataContractSurrogate surrogate,
+		public static object Deserialize (XmlReader reader, Type declaredType,
+			KnownTypeCollection knownTypes, IDataContractSurrogate surrogate, DataContractResolver resolver, DataContractResolver defaultResolver,
 			string name, string ns, bool verifyObjectName)
 		{
 			reader.MoveToContent ();
@@ -59,14 +61,14 @@ namespace System.Runtime.Serialization
 				    reader.LocalName != name ||
 				    reader.NamespaceURI != ns)
 					throw new SerializationException (String.Format ("Expected element '{0}' in namespace '{1}', but found {2} node '{3}' in namespace '{4}'", name, ns, reader.NodeType, reader.LocalName, reader.NamespaceURI));
-//				Verify (knownTypes, type, name, ns, reader);
-			return new XmlFormatterDeserializer (knownTypes, surrogate).Deserialize (type, reader);
+//				Verify (knownTypes, declaredType, name, ns, reader);
+			return new XmlFormatterDeserializer (knownTypes, surrogate, resolver, defaultResolver).Deserialize (declaredType, reader);
 		}
 
 		// Verify the top element name and namespace.
 		private static void Verify (KnownTypeCollection knownTypes, Type type, string name, string Namespace, XmlReader reader)
 		{
-			QName graph_qname = new QName (reader.Name, reader.NamespaceURI);
+			QName graph_qname = new QName (reader.LocalName, reader.NamespaceURI);
 			if (graph_qname.Name == name && graph_qname.Namespace == Namespace)
 				return;
 
@@ -88,31 +90,23 @@ namespace System.Runtime.Serialization
 
 		private XmlFormatterDeserializer (
 			KnownTypeCollection knownTypes,
-			IDataContractSurrogate surrogate)
+			IDataContractSurrogate surrogate,
+			DataContractResolver resolver,
+			DataContractResolver defaultResolver)
 		{
 			this.types = knownTypes;
 			this.surrogate = surrogate;
+			this.resolver = resolver;
+			this.default_resolver = defaultResolver;
 		}
 
-		public Hashtable References {
+		public Dictionary<string,object> References {
 			get { return references; }
 		}
 
-		// At the beginning phase, we still have to instantiate a new
-		// target object even if fromContent is true.
+		// This method handles z:Ref, xsi:nil and primitive types, and then delegates to DeserializeByMap() for anything else.
 		public object Deserialize (Type type, XmlReader reader)
 		{
-			string label = reader.GetAttribute ("Id", KnownTypeCollection.MSSimpleNamespace);
-			object o = DeserializeCore (type, reader);
-
-			if (label != null)
-				references.Add (label, o);
-
-			return o;
-		}
-
-		public object DeserializeCore (Type type, XmlReader reader)
-		{
 			QName graph_qname = types.GetQName (type);
 			string itype = reader.GetAttribute ("type", XmlSchema.InstanceNamespace);
 			if (itype != null) {
@@ -125,8 +119,8 @@ namespace System.Runtime.Serialization
 
 			string label = reader.GetAttribute ("Ref", KnownTypeCollection.MSSimpleNamespace);
 			if (label != null) {
-				object o = references [label];
-				if (o == null)
+				object o;
+				if (!references.TryGetValue (label, out o))
 					throw new SerializationException (String.Format ("Deserialized object with reference Id '{0}' was not found", label));
 				reader.Skip ();
 				return o;
@@ -144,7 +138,20 @@ namespace System.Runtime.Serialization
 					throw new SerializationException (String.Format ("Value type {0} cannot be null.", type));
 			}
 
+			if (resolver != null) {
+				Type t;
+				if (resolved_qnames.TryGetValue (graph_qname, out t))
+					type = t;
+				else { // i.e. resolve name only once.
+					type = resolver.ResolveName (graph_qname.Name, graph_qname.Namespace, type, default_resolver) ?? type;
+					resolved_qnames.Add (graph_qname, type);
+					types.Add (type);
+				}
+			}
+
 			if (KnownTypeCollection.GetPrimitiveTypeFromName (graph_qname.Name) != null) {
+				string id = reader.GetAttribute ("Id", KnownTypeCollection.MSSimpleNamespace);
+
 				string value;
 				if (reader.IsEmptyElement) {
 					reader.Read (); // advance
@@ -156,7 +163,13 @@ namespace System.Runtime.Serialization
 				}
 				else
 					value = reader.ReadElementContentAsString ();
-				return KnownTypeCollection.PredefinedTypeStringToObject (value, graph_qname.Name, reader);
+				object ret = KnownTypeCollection.PredefinedTypeStringToObject (value, graph_qname.Name, reader);
+				if (id != null) {
+					if (references.ContainsKey (id))
+						throw new InvalidOperationException (String.Format ("Object with Id '{0}' already exists as '{1}'", id, references [id]));
+					references.Add (id, ret);
+				}
+				return ret;
 			}
 
 			return DeserializeByMap (graph_qname, type, reader);
@@ -164,12 +177,12 @@ namespace System.Runtime.Serialization
 
 		object DeserializeByMap (QName name, Type type, XmlReader reader)
 		{
-			SerializationMap map = types.FindUserMap (name);
+			SerializationMap map = resolved_qnames.ContainsKey (name) ? types.FindUserMap (type) : types.FindUserMap (name); // use type when the name is "resolved" one. Otherwise use name (there are cases that type cannot be resolved by type).
 			if (map == null && (name.Name.StartsWith ("ArrayOf", StringComparison.Ordinal) ||
 			    name.Namespace == KnownTypeCollection.MSArraysNamespace ||
 			    name.Namespace.StartsWith (KnownTypeCollection.DefaultClrNamespaceBase, StringComparison.Ordinal))) {
 				var it = GetTypeFromNamePair (name.Name, name.Namespace);
-				types.TryRegister (it);
+				types.Add (it);
 				map = types.FindUserMap (name);
 			}
 			if (map == null)
@@ -195,7 +208,21 @@ namespace System.Runtime.Serialization
 			string clrns = ns.StartsWith (dnsb, StringComparison.Ordinal) ?  ns.Substring (dnsb.Length) : ns;
 
 			foreach (var ass in AppDomain.CurrentDomain.GetAssemblies ()) {
-				foreach (var t in ass.GetTypes ()) {
+				Type [] types;
+
+#if MOONLIGHT
+				try  {
+					types = ass.GetTypes ();
+				} catch (System.Reflection.ReflectionTypeLoadException rtle) {
+					types = rtle.Types;
+				}
+#else
+				types = ass.GetTypes ();
+#endif
+				if (types == null)
+					continue;
+
+				foreach (var t in types) {
 					// there can be null entries or exception throw to access the attribute - 
 					// at least when some referenced assemblies could not be loaded (affects moonlight)
 					if (t == null)
diff --git a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/XmlFormatterSerializer.cs b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/XmlFormatterSerializer.cs
index 3506f7e..a3964c6 100644
--- a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/XmlFormatterSerializer.cs
+++ b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/XmlFormatterSerializer.cs
@@ -27,7 +27,7 @@
 //
 #if NET_2_0
 using System;
-using System.Collections;
+using System.Collections.Generic;
 using System.IO;
 using System.Reflection;
 using System.Runtime.Serialization.Formatters.Binary;
@@ -47,40 +47,38 @@ namespace System.Runtime.Serialization
 		bool save_id;
 		bool ignore_unknown;
 		IDataContractSurrogate surrogate;
+		DataContractResolver resolver, default_resolver; // new in 4.0
 		int max_items;
 
-		ArrayList objects = new ArrayList ();
-		Hashtable references = new Hashtable (); // preserve possibly referenced objects to ids. (new in 3.5 SP1)
+		List<object> objects = new List<object> ();
+		Dictionary<object,string> references = new Dictionary<object,string> (); // preserve possibly referenced objects to ids. (new in 3.5 SP1)
 
-		public static void Serialize (XmlDictionaryWriter writer, object graph,
-			KnownTypeCollection types,
-			bool ignoreUnknown, int maxItems, string root_ns, bool preserveObjectReferences)
+		public static void Serialize (XmlDictionaryWriter writer, object graph, Type declaredType, KnownTypeCollection types,
+			bool ignoreUnknown, int maxItems, string root_ns, bool preserveObjectReferences, DataContractResolver resolver, DataContractResolver defaultResolver)
 		{
-			new XmlFormatterSerializer (writer, types, ignoreUnknown, maxItems, root_ns, preserveObjectReferences)
-				.Serialize (graph != null ? graph.GetType () : null, graph);
+			new XmlFormatterSerializer (writer, types, ignoreUnknown, maxItems, root_ns, preserveObjectReferences, resolver, defaultResolver)
+				.Serialize (/*graph != null ? graph.GetType () : */declaredType, graph); // FIXME: I believe it should always use declaredType, but such a change brings some test breakages.
 		}
 
-		public XmlFormatterSerializer (XmlDictionaryWriter writer,
-			KnownTypeCollection types,
-			bool ignoreUnknown, int maxItems, string root_ns, bool preserveObjectReferences)
+		public XmlFormatterSerializer (XmlDictionaryWriter writer, KnownTypeCollection types, bool ignoreUnknown,
+					       int maxItems, string root_ns, bool preserveObjectReferences,
+					       DataContractResolver resolver, DataContractResolver defaultResolver)
 		{
 			this.writer = writer;
 			this.types = types;
 			ignore_unknown = ignoreUnknown;
 			max_items = maxItems;
 			PreserveObjectReferences = preserveObjectReferences;
+			this.resolver = resolver;
+			this.default_resolver = defaultResolver;
 		}
 
 		public bool PreserveObjectReferences { get; private set; }
 
-		public ArrayList SerializingObjects {
+		public List<object> SerializingObjects {
 			get { return objects; }
 		}
 
-		public IDictionary References {
-			get { return references; }
-		}
-
 		public XmlDictionaryWriter Writer {
 			get { return writer; }
 		}
@@ -90,9 +88,17 @@ namespace System.Runtime.Serialization
 			if (graph == null)
 				writer.WriteAttributeString ("nil", XmlSchema.InstanceNamespace, "true");
 			else {
+				QName resolvedQName = null;
+				if (resolver != null) {
+					XmlDictionaryString rname, rns;
+					if (resolver.TryResolveType (graph != null ? graph.GetType () : typeof (object), type, default_resolver, out rname, out rns))
+						resolvedQName = new QName (rname.Value, rns.Value);
+				}
+
 				Type actualType = graph.GetType ();
 
-				SerializationMap map = types.FindUserMap (actualType);
+				SerializationMap map;
+				map = types.FindUserMap (actualType);
 				// For some collection types, the actual type does not matter. So get nominal serialization type instead.
 				// (The code below also covers the lines above, but I don't remove above lines to avoid extra search cost.)
 				if (map == null) {
@@ -106,7 +112,7 @@ namespace System.Runtime.Serialization
 				}
 
 				if (actualType != type && (map == null || map.OutputXsiType)) {
-					QName qname = types.GetXmlName (actualType);
+					QName qname = resolvedQName ?? types.GetXmlName (actualType);
 					string name = qname.Name;
 					string ns = qname.Namespace;
 					if (qname == QName.Empty) {
@@ -116,7 +122,7 @@ namespace System.Runtime.Serialization
 						ns = XmlSchema.Namespace;
 					if (writer.LookupPrefix (ns) == null) // it goes first (extraneous, but it makes att order compatible)
 						writer.WriteXmlnsAttribute (null, ns);
-					writer.WriteStartAttribute ("type", XmlSchema.InstanceNamespace);
+					writer.WriteStartAttribute ("i", "type", XmlSchema.InstanceNamespace);
 					writer.WriteQualifiedName (name, ns);
 					writer.WriteEndAttribute ();
 				}
@@ -142,11 +148,11 @@ namespace System.Runtime.Serialization
 			writer.WriteString (KnownTypeCollection.PredefinedTypeObjectToString (graph));
 		}
 
-		public void WriteStartElement (string rootName, string rootNamespace, string currentNamespace)
+		public void WriteStartElement (string memberName, string memberNamespace, string contentNamespace)
 		{
-			writer.WriteStartElement (rootName, rootNamespace);
-			if (!string.IsNullOrEmpty (currentNamespace) && currentNamespace != rootNamespace)
-				writer.WriteXmlnsAttribute (null, currentNamespace);
+			writer.WriteStartElement (memberName, memberNamespace);
+			if (!string.IsNullOrEmpty (contentNamespace) && contentNamespace != memberNamespace)
+				writer.WriteXmlnsAttribute (null, contentNamespace);
 		}
 
 		public void WriteEndElement ()
@@ -162,15 +168,14 @@ namespace System.Runtime.Serialization
 			if (!isMapReference && (!PreserveObjectReferences || graph == null || graph.GetType ().IsValueType))
 				return false;
 
-			label = (string) References [graph];
-			if (label != null) {
+			if (references.TryGetValue (graph, out label)) {
 				Writer.WriteAttributeString ("z", "Ref", KnownTypeCollection.MSSimpleNamespace, label);
 				label = null; // do not write label
 				return true;
 			}
 
-			label = "i" + (References.Count + 1);
-			References.Add (graph, label);
+			label = "i" + (references.Count + 1);
+			references.Add (graph, label);
 
 			return false;
 		}
diff --git a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/XsdDataContractExporter-new.cs b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/XsdDataContractExporter-new.cs
deleted file mode 100644
index 27bde11..0000000
--- a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/XsdDataContractExporter-new.cs
+++ /dev/null
@@ -1,499 +0,0 @@
-//
-// XsdDataContractExporter.cs
-//
-// Author:
-//	Atsushi Enomoto <atsushi at ximian.com>
-//
-// Copyright (C) 2010 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.CodeDom;
-using System.CodeDom.Compiler;
-using System.Collections;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using System.Reflection;
-using System.Xml;
-using System.Xml.Schema;
-using System.Xml.Serialization;
-
-using QName = System.Xml.XmlQualifiedName;
-
-//
-// .NET exports almost empty schema for "http://www.w3.org/2001/XMLSchema" that
-// contains only "schema" element which consists of a complexType with empty
-// definition (i.e. <complexType/> ).
-//
-
-namespace System.Runtime.Serialization
-{
-	static class TypeExtension
-	{
-		public static T GetCustomAttribute<T> (this MemberInfo mi, bool inherit)
-		{
-			foreach (T att in mi.GetCustomAttributes (typeof (T), inherit))
-				return att;
-			return default (T);
-		}
-	}
-
-	public class XsdDataContractExporter
-	{
-		class TypeImportInfo
-		{
-			public Type ClrType { get; set; }
-			public QName RootElementName { get; set; }
-			public XmlSchemaType SchemaType { get; set; }
-			public QName  SchemaTypeName { get; set; }
-		}
-
-		static readonly List<TypeImportInfo> predefined_types;
-
-		static XsdDataContractExporter ()
-		{
-			var l = new List<TypeImportInfo> ();
-			predefined_types = l;
-			if (!MSTypesSchema.IsCompiled)
-				MSTypesSchema.Compile (null);
-			foreach (XmlSchemaElement el in MSTypesSchema.Elements.Values) {
-				var typeName = el.ElementSchemaType.QualifiedName;
-				var info = new TypeImportInfo () {
-					RootElementName = el.QualifiedName,
-					SchemaType = typeName.Namespace == XmlSchema.Namespace ? null : el.ElementSchemaType,
-					SchemaTypeName = typeName,
-					ClrType = GetPredefinedTypeFromQName (typeName) };
-				l.Add (info);
-			}
-		}
-
-		static Type GetPredefinedTypeFromQName (QName qname)
-		{
-			switch (qname.Namespace) {
-			case XmlSchema.Namespace:
-				return KnownTypeCollection.GetPrimitiveTypeFromName (qname.Name);
-			case KnownTypeCollection.MSSimpleNamespace:
-				switch (qname.Name) {
-				case "char":
-					return typeof (char);
-				case "duration":
-					return typeof (TimeSpan);
-				case "guid":
-					return typeof (Guid);
-				}
-				break;
-			}
-			throw new Exception ("Should not happen");
-		}
-
-		static XmlSchema mstypes_schema;
-		static XmlSchema MSTypesSchema {
-			get {
-				if (mstypes_schema == null) {
-					Assembly a = Assembly.GetCallingAssembly ();
-					Stream s = a.GetManifestResourceStream ("mstypes.schema");
-					mstypes_schema= XmlSchema.Read (s, null);
-				}
-				return mstypes_schema;
-			}
-		}
-
-		KnownTypeCollection known_types = new KnownTypeCollection ();
-		List<TypeImportInfo> imported_types = new List<TypeImportInfo> ();
-
-		public XsdDataContractExporter ()
-			: this (new XmlSchemaSet ())
-		{
-		}
-		
-		public XsdDataContractExporter (XmlSchemaSet schemas)
-		{
-			if (schemas == null)
-				throw new ArgumentNullException ("schemas");
-#if false // by default this is the only added schema. But it is pointless...
-			var xs = new XmlSchema () { TargetNamespace = XmlSchema.Namespace };
-			xs.Items.Add (new XmlSchemaElement () { Name = "schema", SchemaType = new XmlSchemaComplexType () });
-			schemas.Add (xs);
-#else // FIXME: it is added only when the included items are in use.
-			schemas.Add (MSTypesSchema);
-#endif
-			Schemas = schemas;
-		}
-		
-		public ExportOptions Options { get; set; }
-		public XmlSchemaSet Schemas { get; private set; }
-
-		// CanExport implementation
-
-		public bool CanExport (ICollection<Assembly> assemblies)
-		{
-			if (assemblies == null)
-				throw new ArgumentNullException ("assemblies");
-			foreach (var ass in assemblies)
-				if (!CanExport (ass.GetTypes ()))
-					return false;
-			return true;
-		}
-		
-		public bool CanExport (ICollection<Type> types)
-		{
-			if (types == null)
-				throw new ArgumentNullException ("types");
-			foreach (var type in types)
-				if (!CanExport (type))
-					return false;
-			return true;
-		}
-		
-		public bool CanExport (Type type)
-		{
-			if (type == null)
-				throw new ArgumentNullException ("type");
-
-			if (predefined_types.FirstOrDefault (i => i.ClrType == type) != null)
-				return true;
-
-			known_types.TryRegister (type);
-			return known_types.FindUserMap (type) != null;
-		}
-
-		// Export implementation
-
-		public void Export (ICollection<Assembly> assemblies)
-		{
-			if (assemblies == null)
-				throw new ArgumentNullException ("assemblies");
-			foreach (var ass in assemblies)
-				Export (ass.GetTypes ());
-		}
-		
-		public void Export (ICollection<Type> types)
-		{
-			if (types == null)
-				throw new ArgumentNullException ("types");
-			foreach (var type in types)
-				Export (type);
-		}
-		
-		public void Export (Type type)
-		{
-			if (ExportCore (type, true)) {
-				// This reprocess is required to clean up compilation state.
-				foreach (XmlSchema xs in Schemas.Schemas ())
-					Schemas.Reprocess (xs);
-				Schemas.Compile ();
-			}
-		}
-
-		// returns true if it requires recompilcation
-		bool ExportCore (Type type, bool rejectNonContract)
-		{
-			if (type == null)
-				throw new ArgumentNullException ("type");
-
-			if (predefined_types.FirstOrDefault (i => i.ClrType == type) != null) {
-				if (Schemas.Contains (MSTypesSchema.TargetNamespace))
-					return false; // exists
-				Schemas.Add (MSTypesSchema);
-				return false;
-			}
-			if (imported_types.FirstOrDefault (i => i.ClrType == type) != null)
-				return false;
-
-			known_types.TryRegister (type);
-			var map = known_types.FindUserMap (type);
-			if (map == null)
-				return false;
-			map.ExportSchemaType (this);
-			return true;
-		}
-		
-		internal void ExportDictionaryContractType (CollectionDataContractAttribute attr, Type type, Type dicType)
-		{
-			var qname = GetSchemaTypeName (type);
-
-			var typeArgs = dicType.IsGenericType ? dicType.GetGenericArguments () : null;
-			var keyType = typeArgs != null ? typeArgs [0] : typeof (object);
-			var valueType = typeArgs != null ? typeArgs [1] : typeof (object);
-			ExportCore (keyType, false);
-			ExportCore (valueType, false);
-
-			string keyName = "Key", valueName = "Value";
-			if (attr != null) {
-				keyName = attr.KeyName ?? keyName;
-				valueName = attr.ValueName ?? valueName;
-			}
-			string itemName = attr != null && attr.ItemName != null ? attr.ItemName : "KeyValueOf" + keyName + valueName;
-
-			var ct = CreateComplexType (qname, type);
-			var appInfo = new XmlSchemaAppInfo ();
-			var node = new XmlDocument ().CreateElement ("IsDictionary", KnownTypeCollection.MSSimpleNamespace);
-			node.InnerText = "true";
-			appInfo.Markup = new XmlNode [] { node };
-			ct.Annotation = new XmlSchemaAnnotation ();
-			ct.Annotation.Items.Add (appInfo);
-
-			var seq = new XmlSchemaSequence ();
-			ct.Particle = seq;
-			var el = new XmlSchemaElement () { Name = itemName, MinOccurs = 0, MaxOccursString = "unbounded" };
-			seq.Items.Add (el);
-
-			var dictType = new XmlSchemaComplexType ();
-			el.SchemaType = dictType;
-			var dictSeq = new XmlSchemaSequence ();
-			dictType.Particle = dictSeq;
-			dictSeq.Items.Add (new XmlSchemaElement () { Name = keyName, SchemaTypeName = GetSchemaTypeName (keyType), IsNillable = true });
-			dictSeq.Items.Add (new XmlSchemaElement () { Name = valueName, SchemaTypeName = GetSchemaTypeName (valueType), IsNillable = true });
-		}
-		
-		internal void ExportListContractType (CollectionDataContractAttribute attr, Type type)
-		{
-			var qname = attr != null && attr.Name != null ? new QName (attr.Name, attr.Namespace ?? GetXmlNamespace (type)) : GetSchemaTypeName (type);
-
-			var typeArgs = type.IsGenericType ? type.GetGenericArguments () : null;
-			if (typeArgs != null && typeArgs.Length != 1)
-				throw new InvalidDataContractException ("CollectionDataContractAttribute is applied to non-collection type.");
-
-			var itemType = typeArgs != null ? typeArgs [0] : type.IsArray ? type.GetElementType () : typeof (object);
-			bool nullable = !itemType.IsValueType;
-			if (itemType.IsGenericType && itemType.GetGenericTypeDefinition () == typeof (Nullable<>)) {
-				itemType = itemType.GetGenericArguments () [0];
-				nullable = true;
-			}
-			ExportCore (itemType, false);
-
-			var itemQName = GetSchemaTypeName (itemType);
-			var itemName = attr != null && attr.ItemName != null ? attr.ItemName : itemQName.Name;
-
-			var ct = CreateComplexType (qname, type);
-			var seq = new XmlSchemaSequence ();
-			ct.Particle = seq;
-			var el = new XmlSchemaElement () { Name = itemName, MinOccurs = 0, MaxOccursString = "unbounded", SchemaTypeName = itemQName, IsNillable = nullable };
-			seq.Items.Add (el);
-
-			/*
-			var arrayType = new XmlSchemaComplexType ();
-			el.SchemaType = arrayType;
-			var arraySeq = new XmlSchemaSequence ();
-			arrayType.Particle = arraySeq;
-			arraySeq.Items.Add (new XmlSchemaElement () { Name = itemName, SchemaTypeName = itemQName, IsNillable = true });
-			*/
-		}
-
-		internal void ExportEnumContractType (DataContractAttribute attr, Type type)
-		{
-			var qname = attr != null && attr.Name != null ? new QName (attr.Name, attr.Namespace ?? GetXmlNamespace (type)) : GetSchemaTypeName (type);
-			var st = CreateSimpleType (qname, type);
-			if (type.GetCustomAttribute<FlagsAttribute> (false) != null) {
-				var list = new XmlSchemaSimpleTypeList ();
-				var sct = new XmlSchemaSimpleType ();
-				sct.Content = CreateEnumMembers (type, attr != null);
-				list.ItemType = sct;
-				st.Content = list;
-			}
-			else
-				st.Content = CreateEnumMembers (type, attr != null);
-		}
-
-		XmlSchemaSimpleTypeRestriction CreateEnumMembers (Type type, bool expectAttribute)
-		{
-			var r = new XmlSchemaSimpleTypeRestriction () { BaseTypeName = GetSchemaTypeName (typeof (string)) };
-			foreach (var mi in type.GetFields (BindingFlags.Public | BindingFlags.Static)) {
-				var ema = expectAttribute ? mi.GetCustomAttribute<EnumMemberAttribute> (false) : null;
-				if (expectAttribute && ema == null)
-					continue;
-				var xe = new XmlSchemaEnumerationFacet () { Value = ema != null && ema.Value != null ? ema.Value : mi.Name };
-				r.Facets.Add (xe);
-			}
-			return r;
-		}
-
-		internal void ExportStandardComplexType (DataContractAttribute attr, Type type, List<DataMemberInfo> members)
-		{
-			var qname = attr != null && attr.Name != null ? new QName (attr.Name, attr.Namespace ?? GetXmlNamespace (type)) : GetSchemaTypeName (type);
-			var ct = CreateComplexType (qname, type);
-
-			if (type.BaseType != null && type.BaseType != typeof (object)) {
-				ExportCore (type.BaseType, false);
-				var xcc = new XmlSchemaComplexContent ();
-				ct.ContentModel = xcc;
-				var xcce = new XmlSchemaComplexContentExtension ();
-				xcc.Content = xcce;
-				xcce.BaseTypeName = GetSchemaTypeName (type.BaseType);
-				xcce.Particle = CreateMembersSequence (type, members, attr != null);
-			}
-			else
-				ct.Particle = CreateMembersSequence (type, members, attr != null);
-		}
-
-		XmlSchemaSimpleType CreateSimpleType (QName qname, Type type)
-		{
-			var xs = GetSchema (qname.Namespace);
-
-			var el = new XmlSchemaElement () { Name = qname.Name, IsNillable = true };
-			el.SchemaTypeName = qname;
-			xs.Items.Add (el);
-			var st = new XmlSchemaSimpleType () { Name = qname.Name };
-			xs.Items.Add (st);
-			imported_types.Add (new TypeImportInfo () { RootElementName = qname, SchemaType = st, SchemaTypeName = qname,  ClrType = type });
-
-			return st;
-		}
-
-		XmlSchemaComplexType CreateComplexType (QName qname, Type type)
-		{
-			var xs = GetSchema (qname.Namespace);
-
-			var el = new XmlSchemaElement () { Name = qname.Name, IsNillable = true };
-			el.SchemaTypeName = qname;
-			xs.Items.Add (el);
-			var ct = new XmlSchemaComplexType () { Name = qname.Name };
-			xs.Items.Add (ct);
-			imported_types.Add (new TypeImportInfo () { RootElementName = qname, SchemaType = ct, SchemaTypeName = qname,  ClrType = type });
-
-			return ct;
-		}
-
-		static int CompareMembers (MemberInfo m1, MemberInfo m2)
-		{
-			var a1 = m1.GetCustomAttribute<DataMemberAttribute> (false);
-			var a2 = m2.GetCustomAttribute<DataMemberAttribute> (false);
-			return a1.Order == a2.Order ? String.CompareOrdinal (a1.Name ?? m1.Name, a2.Name ?? m2.Name) : a1.Order - a2.Order;
-		}
-
-		// FIXME: use members parameter to determine which members are to be exported.
-		XmlSchemaSequence CreateMembersSequence (Type type, List<DataMemberInfo> dataMembers, bool expectContract)
-		{
-			var seq = new XmlSchemaSequence ();
-			var members = new List<MemberInfo> ();
-			var flags = BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly;
-			if (expectContract)
-				flags |= BindingFlags.NonPublic;
-
-			foreach (var mi in type.GetFields (flags))
-				if (!expectContract || mi.GetCustomAttribute<DataMemberAttribute> (false) != null)
-					members.Add (mi);
-			foreach (var mi in type.GetProperties (flags))
-				if ((!expectContract || mi.GetCustomAttribute<DataMemberAttribute> (false) != null) && mi.GetIndexParameters ().Length == 0)
-					members.Add (mi);
-
-			if (expectContract)
-				members.Sort (CompareMembers);
-
-			foreach (var mi in members) {
-				var dma = mi.GetCustomAttribute<DataMemberAttribute> (false);
-				var fi = mi as FieldInfo;
-				var pi = mi as PropertyInfo;
-				var mt = fi != null ? fi.FieldType : pi.PropertyType;
-				bool nullable = !mt.IsValueType;
-				if (mt.IsGenericType && mt.GetGenericTypeDefinition () == typeof (Nullable<>)) {
-					mt = mt.GetGenericArguments () [0];
-					nullable = true;
-				}
-				ExportCore (mt, false);
-
-				var name = dma != null && dma.Name != null ? dma.Name : mi.Name;
-				var xe = new XmlSchemaElement () { Name = name, IsNillable = nullable };
-				xe.SchemaTypeName = GetSchemaTypeName (mt);
-				seq.Items.Add (xe);
-			}
-			return seq;
-		}
-
-		XmlSchema GetSchema (string ns)
-		{
-			foreach (XmlSchema xs in Schemas.Schemas (ns))
-				return xs;
-			var nxs = new XmlSchema () { ElementFormDefault = XmlSchemaForm.Qualified };
-			if (!String.IsNullOrEmpty (ns))
-				nxs.TargetNamespace = ns;
-			Schemas.Add (nxs);
-			return nxs;
-		}
-
-		string GetXmlTypeName (Type type)
-		{
-			var qname = KnownTypeCollection.GetPrimitiveTypeName (type);
-			return qname.Equals (QName.Empty) ? type.Name : qname.Name;
-		}
-
-		string GetXmlNamespace (Type type)
-		{
-			foreach (ContractNamespaceAttribute a in type.Assembly.GetCustomAttributes (typeof (ContractNamespaceAttribute), false))
-				if (a.ClrNamespace == type.Namespace)
-					return a.ContractNamespace;
-			return KnownTypeCollection.DefaultClrNamespaceBase + type.Namespace;
-		}
-
-		// get mapping info (either exported or predefined).
-
-		public QName GetRootElementName (Type type)
-		{
-			var info = predefined_types.FirstOrDefault (i => i.ClrType == type);
-			if (info != null)
-				return info.RootElementName;
-			info = imported_types.FirstOrDefault (i => i.ClrType == type);
-			if (info != null && info.RootElementName != null)
-				return info.RootElementName;
-
-			return GetSchemaTypeName (type);
-		}
-		
-		public XmlSchemaType GetSchemaType (Type type)
-		{
-			var info = predefined_types.FirstOrDefault (i => i.ClrType == type);
-			if (info != null)
-				return info.SchemaType;
-			info = imported_types.FirstOrDefault (i => i.ClrType == type);
-			if (info != null)
-				return info.SchemaType;
-
-			return null;
-		}
-		
-		public QName GetSchemaTypeName (Type type)
-		{
-			var info = predefined_types.FirstOrDefault (i => i.ClrType == type);
-			if (info != null)
-				return info.SchemaTypeName;
-			info = imported_types.FirstOrDefault (i => i.ClrType == type);
-			if (info != null && info.SchemaTypeName != null)
-				return info.SchemaTypeName;
-
-			var cdca = type.GetCustomAttribute<CollectionDataContractAttribute> (false);
-			if (cdca != null)
-				return new QName (cdca.Name ?? GetXmlTypeName (type), cdca.Namespace ?? GetXmlNamespace (type));
-			var dca = type.GetCustomAttribute<DataContractAttribute> (false);
-			if (dca != null)
-				return new QName (dca.Name ?? GetXmlTypeName (type), dca.Namespace ?? GetXmlNamespace (type));
-
-			if (type.IsArray) {
-				var item = GetSchemaTypeName (type.GetElementType ());
-				if (item.Namespace == XmlSchema.Namespace)
-					return new QName ("ArrayOf" + item.Name, KnownTypeCollection.MSArraysNamespace);
-				return new QName ("ArrayOf" + item.Name, item.Namespace);
-			}
-
-			return new QName (type.Name, KnownTypeCollection.DefaultClrNamespaceBase + type.Namespace);
-		}
-	}
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/XsdDataContractExporter.cs b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/XsdDataContractExporter.cs
new file mode 100644
index 0000000..d752a4a
--- /dev/null
+++ b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/XsdDataContractExporter.cs
@@ -0,0 +1,499 @@
+//
+// XsdDataContractExporter.cs
+//
+// Author:
+//	Atsushi Enomoto <atsushi at ximian.com>
+//
+// Copyright (C) 2010 Novell, Inc.  http://www.novell.com
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.CodeDom;
+using System.CodeDom.Compiler;
+using System.Collections;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+using System.Xml;
+using System.Xml.Schema;
+using System.Xml.Serialization;
+
+using QName = System.Xml.XmlQualifiedName;
+
+//
+// .NET exports almost empty schema for "http://www.w3.org/2001/XMLSchema" that
+// contains only "schema" element which consists of a complexType with empty
+// definition (i.e. <complexType/> ).
+//
+
+namespace System.Runtime.Serialization
+{
+	static class TypeExtension
+	{
+		public static T GetCustomAttribute<T> (this MemberInfo mi, bool inherit)
+		{
+			foreach (T att in mi.GetCustomAttributes (typeof (T), inherit))
+				return att;
+			return default (T);
+		}
+	}
+
+	public class XsdDataContractExporter
+	{
+		class TypeImportInfo
+		{
+			public Type ClrType { get; set; }
+			public QName RootElementName { get; set; }
+			public XmlSchemaType SchemaType { get; set; }
+			public QName  SchemaTypeName { get; set; }
+		}
+
+		static readonly List<TypeImportInfo> predefined_types;
+
+		static XsdDataContractExporter ()
+		{
+			var l = new List<TypeImportInfo> ();
+			predefined_types = l;
+			if (!MSTypesSchema.IsCompiled)
+				MSTypesSchema.Compile (null);
+			foreach (XmlSchemaElement el in MSTypesSchema.Elements.Values) {
+				var typeName = el.ElementSchemaType.QualifiedName;
+				var info = new TypeImportInfo () {
+					RootElementName = el.QualifiedName,
+					SchemaType = typeName.Namespace == XmlSchema.Namespace ? null : el.ElementSchemaType,
+					SchemaTypeName = typeName,
+					ClrType = GetPredefinedTypeFromQName (typeName) };
+				l.Add (info);
+			}
+		}
+
+		static Type GetPredefinedTypeFromQName (QName qname)
+		{
+			switch (qname.Namespace) {
+			case XmlSchema.Namespace:
+				return KnownTypeCollection.GetPrimitiveTypeFromName (qname.Name);
+			case KnownTypeCollection.MSSimpleNamespace:
+				switch (qname.Name) {
+				case "char":
+					return typeof (char);
+				case "duration":
+					return typeof (TimeSpan);
+				case "guid":
+					return typeof (Guid);
+				}
+				break;
+			}
+			throw new Exception ("Should not happen");
+		}
+
+		static XmlSchema mstypes_schema;
+		static XmlSchema MSTypesSchema {
+			get {
+				if (mstypes_schema == null) {
+					Assembly a = Assembly.GetCallingAssembly ();
+					Stream s = a.GetManifestResourceStream ("mstypes.schema");
+					mstypes_schema= XmlSchema.Read (s, null);
+				}
+				return mstypes_schema;
+			}
+		}
+
+		KnownTypeCollection known_types = new KnownTypeCollection ();
+		List<TypeImportInfo> imported_types = new List<TypeImportInfo> ();
+
+		public XsdDataContractExporter ()
+			: this (new XmlSchemaSet ())
+		{
+		}
+		
+		public XsdDataContractExporter (XmlSchemaSet schemas)
+		{
+			if (schemas == null)
+				throw new ArgumentNullException ("schemas");
+#if false // by default this is the only added schema. But it is pointless...
+			var xs = new XmlSchema () { TargetNamespace = XmlSchema.Namespace };
+			xs.Items.Add (new XmlSchemaElement () { Name = "schema", SchemaType = new XmlSchemaComplexType () });
+			schemas.Add (xs);
+#else // FIXME: it is added only when the included items are in use.
+			schemas.Add (MSTypesSchema);
+#endif
+			Schemas = schemas;
+		}
+		
+		public ExportOptions Options { get; set; }
+		public XmlSchemaSet Schemas { get; private set; }
+
+		// CanExport implementation
+
+		public bool CanExport (ICollection<Assembly> assemblies)
+		{
+			if (assemblies == null)
+				throw new ArgumentNullException ("assemblies");
+			foreach (var ass in assemblies)
+				if (!CanExport (ass.GetTypes ()))
+					return false;
+			return true;
+		}
+		
+		public bool CanExport (ICollection<Type> types)
+		{
+			if (types == null)
+				throw new ArgumentNullException ("types");
+			foreach (var type in types)
+				if (!CanExport (type))
+					return false;
+			return true;
+		}
+		
+		public bool CanExport (Type type)
+		{
+			if (type == null)
+				throw new ArgumentNullException ("type");
+
+			if (predefined_types.FirstOrDefault (i => i.ClrType == type) != null)
+				return true;
+
+			known_types.Add (type);
+			return known_types.FindUserMap (type) != null;
+		}
+
+		// Export implementation
+
+		public void Export (ICollection<Assembly> assemblies)
+		{
+			if (assemblies == null)
+				throw new ArgumentNullException ("assemblies");
+			foreach (var ass in assemblies)
+				Export (ass.GetTypes ());
+		}
+		
+		public void Export (ICollection<Type> types)
+		{
+			if (types == null)
+				throw new ArgumentNullException ("types");
+			foreach (var type in types)
+				Export (type);
+		}
+		
+		public void Export (Type type)
+		{
+			if (ExportCore (type, true)) {
+				// This reprocess is required to clean up compilation state.
+				foreach (XmlSchema xs in Schemas.Schemas ())
+					Schemas.Reprocess (xs);
+				Schemas.Compile ();
+			}
+		}
+
+		// returns true if it requires recompilcation
+		bool ExportCore (Type type, bool rejectNonContract)
+		{
+			if (type == null)
+				throw new ArgumentNullException ("type");
+
+			if (predefined_types.FirstOrDefault (i => i.ClrType == type) != null) {
+				if (Schemas.Contains (MSTypesSchema.TargetNamespace))
+					return false; // exists
+				Schemas.Add (MSTypesSchema);
+				return false;
+			}
+			if (imported_types.FirstOrDefault (i => i.ClrType == type) != null)
+				return false;
+
+			known_types.Add (type);
+			var map = known_types.FindUserMap (type);
+			if (map == null)
+				return false;
+			map.ExportSchemaType (this);
+			return true;
+		}
+		
+		internal void ExportDictionaryContractType (CollectionDataContractAttribute attr, Type type, Type dicType)
+		{
+			var qname = GetSchemaTypeName (type);
+
+			var typeArgs = dicType.IsGenericType ? dicType.GetGenericArguments () : null;
+			var keyType = typeArgs != null ? typeArgs [0] : typeof (object);
+			var valueType = typeArgs != null ? typeArgs [1] : typeof (object);
+			ExportCore (keyType, false);
+			ExportCore (valueType, false);
+
+			string keyName = "Key", valueName = "Value";
+			if (attr != null) {
+				keyName = attr.KeyName ?? keyName;
+				valueName = attr.ValueName ?? valueName;
+			}
+			string itemName = attr != null && attr.ItemName != null ? attr.ItemName : "KeyValueOf" + keyName + valueName;
+
+			var ct = CreateComplexType (qname, type);
+			var appInfo = new XmlSchemaAppInfo ();
+			var node = new XmlDocument ().CreateElement ("IsDictionary", KnownTypeCollection.MSSimpleNamespace);
+			node.InnerText = "true";
+			appInfo.Markup = new XmlNode [] { node };
+			ct.Annotation = new XmlSchemaAnnotation ();
+			ct.Annotation.Items.Add (appInfo);
+
+			var seq = new XmlSchemaSequence ();
+			ct.Particle = seq;
+			var el = new XmlSchemaElement () { Name = itemName, MinOccurs = 0, MaxOccursString = "unbounded" };
+			seq.Items.Add (el);
+
+			var dictType = new XmlSchemaComplexType ();
+			el.SchemaType = dictType;
+			var dictSeq = new XmlSchemaSequence ();
+			dictType.Particle = dictSeq;
+			dictSeq.Items.Add (new XmlSchemaElement () { Name = keyName, SchemaTypeName = GetSchemaTypeName (keyType), IsNillable = true });
+			dictSeq.Items.Add (new XmlSchemaElement () { Name = valueName, SchemaTypeName = GetSchemaTypeName (valueType), IsNillable = true });
+		}
+		
+		internal void ExportListContractType (CollectionDataContractAttribute attr, Type type)
+		{
+			var qname = attr != null && attr.Name != null ? new QName (attr.Name, attr.Namespace ?? GetXmlNamespace (type)) : GetSchemaTypeName (type);
+
+			var typeArgs = type.IsGenericType ? type.GetGenericArguments () : null;
+			if (typeArgs != null && typeArgs.Length != 1)
+				throw new InvalidDataContractException ("CollectionDataContractAttribute is applied to non-collection type.");
+
+			var itemType = typeArgs != null ? typeArgs [0] : type.IsArray ? type.GetElementType () : typeof (object);
+			bool nullable = !itemType.IsValueType;
+			if (itemType.IsGenericType && itemType.GetGenericTypeDefinition () == typeof (Nullable<>)) {
+				itemType = itemType.GetGenericArguments () [0];
+				nullable = true;
+			}
+			ExportCore (itemType, false);
+
+			var itemQName = GetSchemaTypeName (itemType);
+			var itemName = attr != null && attr.ItemName != null ? attr.ItemName : itemQName.Name;
+
+			var ct = CreateComplexType (qname, type);
+			var seq = new XmlSchemaSequence ();
+			ct.Particle = seq;
+			var el = new XmlSchemaElement () { Name = itemName, MinOccurs = 0, MaxOccursString = "unbounded", SchemaTypeName = itemQName, IsNillable = nullable };
+			seq.Items.Add (el);
+
+			/*
+			var arrayType = new XmlSchemaComplexType ();
+			el.SchemaType = arrayType;
+			var arraySeq = new XmlSchemaSequence ();
+			arrayType.Particle = arraySeq;
+			arraySeq.Items.Add (new XmlSchemaElement () { Name = itemName, SchemaTypeName = itemQName, IsNillable = true });
+			*/
+		}
+
+		internal void ExportEnumContractType (DataContractAttribute attr, Type type)
+		{
+			var qname = attr != null && attr.Name != null ? new QName (attr.Name, attr.Namespace ?? GetXmlNamespace (type)) : GetSchemaTypeName (type);
+			var st = CreateSimpleType (qname, type);
+			if (type.GetCustomAttribute<FlagsAttribute> (false) != null) {
+				var list = new XmlSchemaSimpleTypeList ();
+				var sct = new XmlSchemaSimpleType ();
+				sct.Content = CreateEnumMembers (type, attr != null);
+				list.ItemType = sct;
+				st.Content = list;
+			}
+			else
+				st.Content = CreateEnumMembers (type, attr != null);
+		}
+
+		XmlSchemaSimpleTypeRestriction CreateEnumMembers (Type type, bool expectAttribute)
+		{
+			var r = new XmlSchemaSimpleTypeRestriction () { BaseTypeName = GetSchemaTypeName (typeof (string)) };
+			foreach (var mi in type.GetFields (BindingFlags.Public | BindingFlags.Static)) {
+				var ema = expectAttribute ? mi.GetCustomAttribute<EnumMemberAttribute> (false) : null;
+				if (expectAttribute && ema == null)
+					continue;
+				var xe = new XmlSchemaEnumerationFacet () { Value = ema != null && ema.Value != null ? ema.Value : mi.Name };
+				r.Facets.Add (xe);
+			}
+			return r;
+		}
+
+		internal void ExportStandardComplexType (DataContractAttribute attr, Type type, List<DataMemberInfo> members)
+		{
+			var qname = attr != null && attr.Name != null ? new QName (attr.Name, attr.Namespace ?? GetXmlNamespace (type)) : GetSchemaTypeName (type);
+			var ct = CreateComplexType (qname, type);
+
+			if (type.BaseType != null && type.BaseType != typeof (object)) {
+				ExportCore (type.BaseType, false);
+				var xcc = new XmlSchemaComplexContent ();
+				ct.ContentModel = xcc;
+				var xcce = new XmlSchemaComplexContentExtension ();
+				xcc.Content = xcce;
+				xcce.BaseTypeName = GetSchemaTypeName (type.BaseType);
+				xcce.Particle = CreateMembersSequence (type, members, attr != null);
+			}
+			else
+				ct.Particle = CreateMembersSequence (type, members, attr != null);
+		}
+
+		XmlSchemaSimpleType CreateSimpleType (QName qname, Type type)
+		{
+			var xs = GetSchema (qname.Namespace);
+
+			var el = new XmlSchemaElement () { Name = qname.Name, IsNillable = true };
+			el.SchemaTypeName = qname;
+			xs.Items.Add (el);
+			var st = new XmlSchemaSimpleType () { Name = qname.Name };
+			xs.Items.Add (st);
+			imported_types.Add (new TypeImportInfo () { RootElementName = qname, SchemaType = st, SchemaTypeName = qname,  ClrType = type });
+
+			return st;
+		}
+
+		XmlSchemaComplexType CreateComplexType (QName qname, Type type)
+		{
+			var xs = GetSchema (qname.Namespace);
+
+			var el = new XmlSchemaElement () { Name = qname.Name, IsNillable = true };
+			el.SchemaTypeName = qname;
+			xs.Items.Add (el);
+			var ct = new XmlSchemaComplexType () { Name = qname.Name };
+			xs.Items.Add (ct);
+			imported_types.Add (new TypeImportInfo () { RootElementName = qname, SchemaType = ct, SchemaTypeName = qname,  ClrType = type });
+
+			return ct;
+		}
+
+		static int CompareMembers (MemberInfo m1, MemberInfo m2)
+		{
+			var a1 = m1.GetCustomAttribute<DataMemberAttribute> (false);
+			var a2 = m2.GetCustomAttribute<DataMemberAttribute> (false);
+			return a1.Order == a2.Order ? String.CompareOrdinal (a1.Name ?? m1.Name, a2.Name ?? m2.Name) : a1.Order - a2.Order;
+		}
+
+		// FIXME: use members parameter to determine which members are to be exported.
+		XmlSchemaSequence CreateMembersSequence (Type type, List<DataMemberInfo> dataMembers, bool expectContract)
+		{
+			var seq = new XmlSchemaSequence ();
+			var members = new List<MemberInfo> ();
+			var flags = BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly;
+			if (expectContract)
+				flags |= BindingFlags.NonPublic;
+
+			foreach (var mi in type.GetFields (flags))
+				if (!expectContract || mi.GetCustomAttribute<DataMemberAttribute> (false) != null)
+					members.Add (mi);
+			foreach (var mi in type.GetProperties (flags))
+				if ((!expectContract || mi.GetCustomAttribute<DataMemberAttribute> (false) != null) && mi.GetIndexParameters ().Length == 0)
+					members.Add (mi);
+
+			if (expectContract)
+				members.Sort (CompareMembers);
+
+			foreach (var mi in members) {
+				var dma = mi.GetCustomAttribute<DataMemberAttribute> (false);
+				var fi = mi as FieldInfo;
+				var pi = mi as PropertyInfo;
+				var mt = fi != null ? fi.FieldType : pi.PropertyType;
+				bool nullable = !mt.IsValueType;
+				if (mt.IsGenericType && mt.GetGenericTypeDefinition () == typeof (Nullable<>)) {
+					mt = mt.GetGenericArguments () [0];
+					nullable = true;
+				}
+				ExportCore (mt, false);
+
+				var name = dma != null && dma.Name != null ? dma.Name : mi.Name;
+				var xe = new XmlSchemaElement () { Name = name, IsNillable = nullable };
+				xe.SchemaTypeName = GetSchemaTypeName (mt);
+				seq.Items.Add (xe);
+			}
+			return seq;
+		}
+
+		XmlSchema GetSchema (string ns)
+		{
+			foreach (XmlSchema xs in Schemas.Schemas (ns))
+				return xs;
+			var nxs = new XmlSchema () { ElementFormDefault = XmlSchemaForm.Qualified };
+			if (!String.IsNullOrEmpty (ns))
+				nxs.TargetNamespace = ns;
+			Schemas.Add (nxs);
+			return nxs;
+		}
+
+		string GetXmlTypeName (Type type)
+		{
+			var qname = KnownTypeCollection.GetPrimitiveTypeName (type);
+			return qname.Equals (QName.Empty) ? type.Name : qname.Name;
+		}
+
+		string GetXmlNamespace (Type type)
+		{
+			foreach (ContractNamespaceAttribute a in type.Assembly.GetCustomAttributes (typeof (ContractNamespaceAttribute), false))
+				if (a.ClrNamespace == type.Namespace)
+					return a.ContractNamespace;
+			return KnownTypeCollection.DefaultClrNamespaceBase + type.Namespace;
+		}
+
+		// get mapping info (either exported or predefined).
+
+		public QName GetRootElementName (Type type)
+		{
+			var info = predefined_types.FirstOrDefault (i => i.ClrType == type);
+			if (info != null)
+				return info.RootElementName;
+			info = imported_types.FirstOrDefault (i => i.ClrType == type);
+			if (info != null && info.RootElementName != null)
+				return info.RootElementName;
+
+			return GetSchemaTypeName (type);
+		}
+		
+		public XmlSchemaType GetSchemaType (Type type)
+		{
+			var info = predefined_types.FirstOrDefault (i => i.ClrType == type);
+			if (info != null)
+				return info.SchemaType;
+			info = imported_types.FirstOrDefault (i => i.ClrType == type);
+			if (info != null)
+				return info.SchemaType;
+
+			return null;
+		}
+		
+		public QName GetSchemaTypeName (Type type)
+		{
+			var info = predefined_types.FirstOrDefault (i => i.ClrType == type);
+			if (info != null)
+				return info.SchemaTypeName;
+			info = imported_types.FirstOrDefault (i => i.ClrType == type);
+			if (info != null && info.SchemaTypeName != null)
+				return info.SchemaTypeName;
+
+			var cdca = type.GetCustomAttribute<CollectionDataContractAttribute> (false);
+			if (cdca != null)
+				return new QName (cdca.Name ?? GetXmlTypeName (type), cdca.Namespace ?? GetXmlNamespace (type));
+			var dca = type.GetCustomAttribute<DataContractAttribute> (false);
+			if (dca != null)
+				return new QName (dca.Name ?? GetXmlTypeName (type), dca.Namespace ?? GetXmlNamespace (type));
+
+			if (type.IsArray) {
+				var item = GetSchemaTypeName (type.GetElementType ());
+				if (item.Namespace == XmlSchema.Namespace)
+					return new QName ("ArrayOf" + item.Name, KnownTypeCollection.MSArraysNamespace);
+				return new QName ("ArrayOf" + item.Name, item.Namespace);
+			}
+
+			return new QName (type.Name, KnownTypeCollection.DefaultClrNamespaceBase + type.Namespace);
+		}
+	}
+}
diff --git a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/XsdDataContractImporter.cs b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/XsdDataContractImporter.cs
index 9683660..94a9d31 100644
--- a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/XsdDataContractImporter.cs
+++ b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/XsdDataContractImporter.cs
@@ -60,6 +60,7 @@ namespace System.Runtime.Serialization
 		public CodeCompileUnit CodeCompileUnit { get; private set; }
 
 		CodeDomProvider code_provider = CodeDomProvider.CreateProvider ("csharp");
+		Dictionary<CodeNamespace,CodeIdentifiers> identifiers_table = new Dictionary<CodeNamespace,CodeIdentifiers> ();
 		ImportOptions import_options;
 
 		public ImportOptions Options {
@@ -232,6 +233,16 @@ namespace System.Runtime.Serialization
 			DoImport (schemas, type, qname);
 		}
 
+		string GetUniqueName (string name, CodeNamespace cns)
+		{
+			CodeIdentifiers i;
+			if (!identifiers_table.TryGetValue (cns, out i)) {
+				i = new CodeIdentifiers ();
+				identifiers_table.Add (cns, i);
+			}
+			return i.AddUnique (name, null);
+		}
+
 		void DoImport (XmlSchemaSet schemas, XmlSchemaType type, XmlQualifiedName qname)
 		{
 			CodeNamespace cns = null;
@@ -240,7 +251,7 @@ namespace System.Runtime.Serialization
 			clrRef = new CodeTypeReference (cns.Name.Length > 0 ? cns.Name + "." + qname.Name : qname.Name);
 
 			var td = new CodeTypeDeclaration () {
-				Name = CodeIdentifier.MakeValid (qname.Name),
+				Name = GetUniqueName (CodeIdentifier.MakeValid (qname.Name), cns),
 				TypeAttributes = GenerateInternal ? TypeAttributes.NotPublic : TypeAttributes.Public };
 			cns.Types.Add (td);
 
@@ -262,13 +273,13 @@ namespace System.Runtime.Serialization
 					if (cns.Types.Count == 0)
 						CodeCompileUnit.Namespaces.Remove (cns);
 				}
-			}
 
-			foreach (var impinfo in imported_types)
-				for (; impinfo.KnownTypeOutputIndex < impinfo.KnownClrTypes.Count; impinfo.KnownTypeOutputIndex++)
-					td.CustomAttributes.Add (new CodeAttributeDeclaration (
-						new CodeTypeReference (typeof (KnownTypeAttribute)),
-						new CodeAttributeArgument (new CodeTypeOfExpression (impinfo.KnownClrTypes [impinfo.KnownTypeOutputIndex]))));
+				foreach (var impinfo in imported_types)
+					for (; impinfo.KnownTypeOutputIndex < impinfo.KnownClrTypes.Count; impinfo.KnownTypeOutputIndex++)
+						td.CustomAttributes.Add (new CodeAttributeDeclaration (
+							new CodeTypeReference (typeof (KnownTypeAttribute)),
+							new CodeAttributeArgument (new CodeTypeOfExpression (impinfo.KnownClrTypes [impinfo.KnownTypeOutputIndex]))));
+			}
 		}
 
 		static readonly string ass_name = typeof (DataContractAttribute).Assembly.GetName ().Name;
diff --git a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization_test.dll.sources b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization_test.dll.sources
index 9a705b8..3188183 100644
--- a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization_test.dll.sources
+++ b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization_test.dll.sources
@@ -1,3 +1,4 @@
+System.Runtime.Serialization/DataContractResolverTest.cs
 System.Runtime.Serialization/XmlObjectSerializerTest.cs
 System.Runtime.Serialization/XsdDataContractExporterTest.cs
 System.Runtime.Serialization/XsdDataContractImporterTest.cs
diff --git a/mcs/class/System.Runtime.Serialization/System.Xml/ChangeLog b/mcs/class/System.Runtime.Serialization/System.Xml/ChangeLog
old mode 100755
new mode 100644
index 25af315..90e69b4
--- a/mcs/class/System.Runtime.Serialization/System.Xml/ChangeLog
+++ b/mcs/class/System.Runtime.Serialization/System.Xml/ChangeLog
@@ -1,3 +1,13 @@
+2010-12-20  Atsushi Eno  <atsushi at ximian.com>
+
+	Use DateTime ToBinary() and FromBinary() for DateTime
+	serialization.
+
+2010-10-05  Atsushi Eno  <atsushi at ximian.com>
+
+	Adjust namespace prefix indexes as it is repeatedly used. (It
+	could result in duplicate prefix.)
+
 2010-06-02 Atsushi Enomoto  <atsushi at ximian.com>
 
 	 * XmlBinaryDictionaryReader.cs : reset name in Reset().
diff --git a/mcs/class/System.Runtime.Serialization/System.Xml/ChangeLog b/mcs/class/System.Runtime.Serialization/System.Xml/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Runtime.Serialization/System.Xml/ChangeLog
copy to mcs/class/System.Runtime.Serialization/System.Xml/ChangeLog.old
diff --git a/mcs/class/System.Runtime.Serialization/System.Xml/XmlBinaryDictionaryReader.cs b/mcs/class/System.Runtime.Serialization/System.Xml/XmlBinaryDictionaryReader.cs
index 3ac92d7..2a42dfa 100644
--- a/mcs/class/System.Runtime.Serialization/System.Xml/XmlBinaryDictionaryReader.cs
+++ b/mcs/class/System.Runtime.Serialization/System.Xml/XmlBinaryDictionaryReader.cs
@@ -911,7 +911,7 @@ namespace System.Xml
 				node.TypedValue = new Decimal (bits);
 				break;
 			case BF.DateTime:
-				node.TypedValue = new DateTime (source.Reader.ReadInt64 ());
+				node.TypedValue = DateTime.FromBinary (source.Reader.ReadInt64 ());
 				break;
 			//case BF.UniqueId: // identical to .Text
 			case BF.Bytes8:
diff --git a/mcs/class/System.Runtime.Serialization/System.Xml/XmlBinaryDictionaryWriter.cs b/mcs/class/System.Runtime.Serialization/System.Xml/XmlBinaryDictionaryWriter.cs
index 916411e..4f0674d 100644
--- a/mcs/class/System.Runtime.Serialization/System.Xml/XmlBinaryDictionaryWriter.cs
+++ b/mcs/class/System.Runtime.Serialization/System.Xml/XmlBinaryDictionaryWriter.cs
@@ -998,7 +998,7 @@ namespace System.Xml
 
 		void WriteValueContent (DateTime value)
 		{
-			writer.Write (value.Ticks);
+			writer.Write (value.ToBinary ());
 		}
 
 		public override void WriteValue (Guid value)
diff --git a/mcs/class/System.Runtime.Serialization/System.Xml/XmlDictionaryWriter.cs b/mcs/class/System.Runtime.Serialization/System.Xml/XmlDictionaryWriter.cs
index d73ccff..eb12694 100644
--- a/mcs/class/System.Runtime.Serialization/System.Xml/XmlDictionaryWriter.cs
+++ b/mcs/class/System.Runtime.Serialization/System.Xml/XmlDictionaryWriter.cs
@@ -36,16 +36,13 @@ namespace System.Xml
 	{
 		static readonly Encoding utf8_unmarked = new UTF8Encoding (false);
 
-		int depth;
-
 		protected XmlDictionaryWriter ()
 		{
 		}
 
-		internal int Depth {
-			get { return depth; }
-			set { depth = value; }
-		}
+		internal int Depth { get; set; }
+
+		internal int NSIndex { get; set; }
 
 		public virtual bool CanCanonicalize {
 			get { return false; }
@@ -138,6 +135,8 @@ namespace System.Xml
 			return CreateDictionaryWriter (XmlWriter.Create (stream, s));
 		}
 
+		
+
 		public virtual void EndCanonicalization ()
 		{
 			throw new NotSupportedException ();
@@ -388,8 +387,10 @@ namespace System.Xml
 			// writer how it is determined in the output. (When
 			// there is a duplicate, then it will be further 
 			// modified.)
-			if (prefix == null)
-				prefix = "d" + Depth + "p1";
+			if (prefix == null && String.IsNullOrEmpty (namespaceUri))
+				prefix = String.Empty;
+			else if (prefix == null)
+				prefix = "d" + Depth + "p" + (++NSIndex);
 
 			if (prefix == String.Empty)
 				WriteAttributeString ("xmlns", namespaceUri);
diff --git a/mcs/class/System.Runtime.Serialization/System.Xml/XmlSimpleDictionaryWriter.cs b/mcs/class/System.Runtime.Serialization/System.Xml/XmlSimpleDictionaryWriter.cs
index 9eb5d3a..2afb6bc 100644
--- a/mcs/class/System.Runtime.Serialization/System.Xml/XmlSimpleDictionaryWriter.cs
+++ b/mcs/class/System.Runtime.Serialization/System.Xml/XmlSimpleDictionaryWriter.cs
@@ -105,6 +105,7 @@ namespace System.Xml
 		public override void WriteEndElement ()
 		{
 			Depth--;
+			NSIndex = 0;
 			writer.WriteEndElement ();
 		}
 
@@ -171,6 +172,7 @@ namespace System.Xml
 		public override void WriteStartElement (string prefix, string localName, string ns)
 		{
 			Depth++;
+			NSIndex = 0;
 			writer.WriteStartElement (prefix, localName, ns);
 		}
 
diff --git a/mcs/class/System.Runtime.Serialization/Test/System.Runtime.Serialization/ChangeLog b/mcs/class/System.Runtime.Serialization/Test/System.Runtime.Serialization/ChangeLog
index aebcf4f..4ed2265 100644
--- a/mcs/class/System.Runtime.Serialization/Test/System.Runtime.Serialization/ChangeLog
+++ b/mcs/class/System.Runtime.Serialization/Test/System.Runtime.Serialization/ChangeLog
@@ -1,3 +1,18 @@
+2010-10-05  Atsushi Eno  <atsushi at ximian.com>
+
+	Fix DataContractResolver.ResolveName() support in deserializer.
+	Add roundtrip test.
+
+2010-10-05  Atsushi Eno  <atsushi at ximian.com>
+
+	Implement DataContractResolver support. At least TryResolveType in
+	serializer should work.
+
+2010-09-30  Atsushi Eno  <atsushi at ximian.com>
+
+	Add DataContractResolver stuff (dummy), and fix Id reference from
+	inside the referenced object.
+
 2010-08-06  Atsushi Eno  <atsushi at ximian.com>
 
 	KnownTypes should return the actual types.
diff --git a/mcs/class/System.Runtime.Serialization/Test/System.Runtime.Serialization/DataContractResolverTest.cs b/mcs/class/System.Runtime.Serialization/Test/System.Runtime.Serialization/DataContractResolverTest.cs
new file mode 100644
index 0000000..163d088
--- /dev/null
+++ b/mcs/class/System.Runtime.Serialization/Test/System.Runtime.Serialization/DataContractResolverTest.cs
@@ -0,0 +1,118 @@
+//
+// XmlObjectSerializerTest.cs
+//
+// Author:
+//	Atsushi Enomoto <atsushi at ximian.com>
+//	Ankit Jain <JAnkit at novell.com>
+//
+// Copyright (C) 2005 Novell, Inc.  http://www.novell.com
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if NET_4_0
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Data;
+using System.IO;
+using System.Net;
+using System.Runtime.Serialization;
+using System.Text;
+using System.Xml;
+using System.Xml.Schema;
+using System.Xml.Serialization;
+using NUnit.Framework;
+
+namespace MonoTests.System.Runtime.Serialization
+{
+	[TestFixture]
+	public class DataContractResolverTest
+	{
+		[Test]
+		public void UseCase1 ()
+		{
+			var ds = new DataContractSerializer (typeof (Colors), null, 10000, false, false, null, new MyResolver ());
+			var sw = new StringWriter ();
+			using (var xw = XmlWriter.Create (sw))
+				ds.WriteObject (xw, new ResolvedClass ());
+
+			// xml and xml2 are equivalent in infoset, except for prefixes and position of namespace nodes. So the difference should not matter.
+			string xml = @"<?xml version='1.0' encoding='utf-16'?><Colors xmlns:i='http://www.w3.org/2001/XMLSchema-instance' xmlns:d1p1='urn:dummy' i:type='d1p1:ResolvedClass' xmlns='http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization'><Baz xmlns='http://schemas.datacontract.org/2004/07/'>c74376f0-5517-4cb7-8a07-35026423f565</Baz></Colors>".Replace ('\'', '"');
+			string xml2 = @"<?xml version='1.0' encoding='utf-16'?><Colors xmlns:i='http://www.w3.org/2001/XMLSchema-instance' xmlns:d1p1='urn:dummy' xmlns:d1p2='http://schemas.datacontract.org/2004/07/' i:type='d1p2:ResolvedClass' xmlns='http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization'><d1p2:Baz>c74376f0-5517-4cb7-8a07-35026423f565</d1p2:Baz></Colors>".Replace ('\'', '"');
+			try {
+				Assert.AreEqual (xml, sw.ToString (), "#1");
+			} catch (AssertionException) {
+				Assert.AreEqual (xml2, sw.ToString (), "#2");
+			}
+			using (var xr = XmlReader.Create (new StringReader (xml)))
+				Assert.AreEqual (typeof (ResolvedClass), ds.ReadObject (xr).GetType (), "#3");
+			using (var xr = XmlReader.Create (new StringReader (xml)))
+				Assert.AreEqual (typeof (ResolvedClass), ds.ReadObject (xr).GetType (), "#4");
+		}
+	}
+
+	public class MyResolver : DataContractResolver
+	{
+		public override bool TryResolveType (Type type, Type declaredType, DataContractResolver knownTypeResolver, out XmlDictionaryString typeName, out XmlDictionaryString typeNamespace)
+		{
+			//Console.WriteLine ("TryResolveType: {0} {1}", type, declaredType);
+			if (knownTypeResolver.TryResolveType (type, declaredType, null, out typeName, out typeNamespace))
+				return true;
+			return SafeResolveType (type, out typeName, out typeNamespace);
+		}
+
+		XmlDictionary dic = new XmlDictionary ();
+
+		bool SafeResolveType (Type type, out XmlDictionaryString name, out XmlDictionaryString ns)
+		{
+			// Console.WriteLine ("SafeResolveType: {0}", type);
+			name = dic.Add (type.Name);
+			ns = dic.Add (type.Namespace ?? "urn:dummy");
+			return true;
+		}
+
+		public override Type ResolveName (string typeName, string typeNamespace, Type declaredType, DataContractResolver knownTypeResolver)
+		{
+			//Console.WriteLine ("ResolveName: {0} {1} {2}", typeName, typeNamespace, declaredType);
+			return knownTypeResolver.ResolveName (typeName, typeNamespace, declaredType, null) ?? RecoveringResolveName (typeName, typeNamespace);
+		}
+		
+		Type RecoveringResolveName (string typeName, string typeNamespace)
+		{
+			if (typeNamespace == "urn:dummy")
+				return Type.GetType (typeName);
+			else
+				return Type.GetType (typeNamespace + '.' + typeName);
+		}
+	}
+}
+
+[DataContract]
+public class ResolvedClass
+{
+	[DataMember]
+	public Guid Baz = Guid.Parse ("c74376f0-5517-4cb7-8a07-35026423f565");
+}
+
+#endif
diff --git a/mcs/class/System.Runtime.Serialization/Test/System.Runtime.Serialization/XmlObjectSerializerTest.cs b/mcs/class/System.Runtime.Serialization/Test/System.Runtime.Serialization/XmlObjectSerializerTest.cs
index 97b30da..30e8783 100755
--- a/mcs/class/System.Runtime.Serialization/Test/System.Runtime.Serialization/XmlObjectSerializerTest.cs
+++ b/mcs/class/System.Runtime.Serialization/Test/System.Runtime.Serialization/XmlObjectSerializerTest.cs
@@ -1429,6 +1429,27 @@ namespace MonoTests.System.Runtime.Serialization
 		}
 
 		[Test]
+		public void AncestralReference ()
+		{
+			// Reference to Parent comes inside the Parent itself.
+			// In this case, adding reference after complete deserialization won't work (but it should).
+			var ms = new MemoryStream ();
+			Type [] knownTypes = new Type [] { typeof (ParentClass), typeof (Foo), typeof (Bar) };
+
+            		var ds = new DataContractSerializer (typeof (Parent));
+
+			var org = new Parent ();
+			ds.WriteObject (ms, org);
+			string result = Encoding.UTF8.GetString (ms.ToArray ());
+			ms.Position = 0;
+
+			var parent = (Parent) ds.ReadObject (ms);
+
+			Assert.IsNotNull (parent.Child, "#1");
+			Assert.AreEqual (parent, parent.Child.Parent, "#2");
+		}
+
+		[Test]
 		public void IXmlSerializableCallConstructor ()
 		{
 			IXmlSerializableCallConstructor  (false);
@@ -1954,4 +1975,34 @@ public class Dict<T> : Dictionary<string, T> where T : ParentClass
 	}
 	
 }
+
+[DataContract (IsReference = true)]
+public class Parent
+{
+	//constructor
+	public Parent ()
+	{
+		Child = new Child (this);
+	}
+
+	[DataMember]
+	public Child Child;
+}
+
+[DataContract]
+public class Child
+{
+	public Child ()
+	{
+	}
+	
+	public Child (Parent parent)
+	{
+		this.Parent = parent;
+	}
+	
+	[DataMember]
+	public Parent Parent;
+}
+
 #endregion
diff --git a/mcs/class/System.Runtime.Serialization/monotouch_System.Runtime.Serialization.dll.sources b/mcs/class/System.Runtime.Serialization/mobile_System.Runtime.Serialization.dll.sources
similarity index 100%
copy from mcs/class/System.Runtime.Serialization/monotouch_System.Runtime.Serialization.dll.sources
copy to mcs/class/System.Runtime.Serialization/mobile_System.Runtime.Serialization.dll.sources
diff --git a/mcs/class/System.Runtime.Serialization/monodroid_System.Runtime.Serialization.dll.sources b/mcs/class/System.Runtime.Serialization/monodroid_System.Runtime.Serialization.dll.sources
new file mode 100644
index 0000000..6caafd4
--- /dev/null
+++ b/mcs/class/System.Runtime.Serialization/monodroid_System.Runtime.Serialization.dll.sources
@@ -0,0 +1 @@
+#include mobile_System.Runtime.Serialization.dll.sources
diff --git a/mcs/class/System.Runtime.Serialization/monotouch_System.Runtime.Serialization.dll.sources b/mcs/class/System.Runtime.Serialization/monotouch_System.Runtime.Serialization.dll.sources
index 7885b80..6caafd4 100644
--- a/mcs/class/System.Runtime.Serialization/monotouch_System.Runtime.Serialization.dll.sources
+++ b/mcs/class/System.Runtime.Serialization/monotouch_System.Runtime.Serialization.dll.sources
@@ -1,2 +1 @@
-#include moonlight_raw_System.Runtime.Serialization.dll.sources
-System.Xml/OnXmlDictionaryReaderClose.cs
+#include mobile_System.Runtime.Serialization.dll.sources
diff --git a/mcs/class/System.Runtime.Serialization/moonlight_raw_System.Runtime.Serialization.dll.sources b/mcs/class/System.Runtime.Serialization/moonlight_raw_System.Runtime.Serialization.dll.sources
index 59cd659..537804e 100644
--- a/mcs/class/System.Runtime.Serialization/moonlight_raw_System.Runtime.Serialization.dll.sources
+++ b/mcs/class/System.Runtime.Serialization/moonlight_raw_System.Runtime.Serialization.dll.sources
@@ -2,6 +2,7 @@ Assembly/AssemblyInfo.cs
 System.Runtime.Serialization/CollectionDataContractAttribute.cs
 System.Runtime.Serialization/ContractNamespaceAttribute.cs
 System.Runtime.Serialization/DataContractAttribute.cs
+System.Runtime.Serialization/DataContractResolver.cs
 System.Runtime.Serialization/DataContractSerializer.cs
 System.Runtime.Serialization/DataMemberAttribute.cs
 System.Runtime.Serialization/EnumMemberAttribute.cs
diff --git a/mcs/class/System.Security/System.Security.Cryptography.Xml/ChangeLog b/mcs/class/System.Security/System.Security.Cryptography.Xml/ChangeLog
index 8eb7ab3..eda991a 100644
--- a/mcs/class/System.Security/System.Security.Cryptography.Xml/ChangeLog
+++ b/mcs/class/System.Security/System.Security.Cryptography.Xml/ChangeLog
@@ -1,3 +1,7 @@
+2010-10-15  Marek Safar  <marek.safar at gmail.com>
+
+	Clean up few more warnings
+
 2010-07-09  Atsushi Enomoto  <atsushi at ximian.com>
 
 	* SignedXml.cs : avoid using LoadXml() to load xml element as in
diff --git a/mcs/class/System.Security/System.Security.Cryptography.Xml/ChangeLog b/mcs/class/System.Security/System.Security.Cryptography.Xml/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Security/System.Security.Cryptography.Xml/ChangeLog
copy to mcs/class/System.Security/System.Security.Cryptography.Xml/ChangeLog.old
diff --git a/mcs/class/System.Security/System.Security.Cryptography.Xml/EncryptedReference.cs b/mcs/class/System.Security/System.Security.Cryptography.Xml/EncryptedReference.cs
index 056bdef..942bd97 100644
--- a/mcs/class/System.Security/System.Security.Cryptography.Xml/EncryptedReference.cs
+++ b/mcs/class/System.Security/System.Security.Cryptography.Xml/EncryptedReference.cs
@@ -37,7 +37,6 @@ namespace System.Security.Cryptography.Xml {
 
 		#region Fields
 
-		bool cacheValid;
 		string referenceType;
 		string uri;
 		TransformChain tc;
@@ -68,9 +67,9 @@ namespace System.Security.Cryptography.Xml {
 
 		#region Properties
 
-		[MonoTODO()]
+		[MonoTODO("Always returns false")]
 		protected internal bool CacheValid {
-			get { return cacheValid; }
+			get { return false; }
 		}
 
 		protected string ReferenceType {
diff --git a/mcs/class/System.Security/System.Security.Cryptography.Xml/EncryptionProperty.cs b/mcs/class/System.Security/System.Security.Cryptography.Xml/EncryptionProperty.cs
index ac263b5..0dc8fc3 100644
--- a/mcs/class/System.Security/System.Security.Cryptography.Xml/EncryptionProperty.cs
+++ b/mcs/class/System.Security/System.Security.Cryptography.Xml/EncryptionProperty.cs
@@ -37,7 +37,6 @@ namespace System.Security.Cryptography.Xml {
 
 		#region Fields
 
-		XmlElement elemProp;
 		string id;
 		string target;
 
@@ -62,8 +61,9 @@ namespace System.Security.Cryptography.Xml {
 			get { return id; }
 		}
 
+		[MonoTODO ("Always returns null")]
 		public XmlElement PropertyElement {
-			get { return elemProp; }
+			get { return null; }
 			set { LoadXml (value); }
 		}
 
diff --git a/mcs/class/System.ServiceModel.Discovery/Assembly/AssemblyInfo.cs b/mcs/class/System.ServiceModel.Discovery/Assembly/AssemblyInfo.cs
index fb52359..f8ff5c3 100644
--- a/mcs/class/System.ServiceModel.Discovery/Assembly/AssemblyInfo.cs
+++ b/mcs/class/System.ServiceModel.Discovery/Assembly/AssemblyInfo.cs
@@ -33,7 +33,7 @@ using System.Security;
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
 
-// General Information about the System.ServiceModel assembly
+// General Information about the System.ServiceModel.Discovery assembly
 
 [assembly: AssemblyVersion (Consts.FxVersion)]
 [assembly: SatelliteContractVersion (Consts.FxVersion)]
@@ -44,11 +44,11 @@ using System.Runtime.InteropServices;
 [assembly: AssemblyCompany ("MONO development team")]
 [assembly: AssemblyProduct ("MONO CLI")]
 [assembly: AssemblyCopyright ("(c) 2003 Various Authors")]
-[assembly: AssemblyTrademark ("")]
 
 [assembly: CLSCompliant (true)]
 [assembly: AssemblyDefaultAlias ("System.ServiceModel.Discovery.dll")]
-[assembly: AssemblyInformationalVersion ("3.5.594.0")]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
 [assembly: NeutralResourcesLanguage ("en-US")]
 
 [assembly: ComVisible (false)]
diff --git a/mcs/class/System.ServiceModel.Discovery/Assembly/ChangeLog b/mcs/class/System.ServiceModel.Discovery/Assembly/ChangeLog
old mode 100755
new mode 100644
index ce289a8..6ea3843
--- a/mcs/class/System.ServiceModel.Discovery/Assembly/ChangeLog
+++ b/mcs/class/System.ServiceModel.Discovery/Assembly/ChangeLog
@@ -1,3 +1,7 @@
+2011-01-08  Marek Safar  <marek.safar at gmail.com>
+
+	Update System.ServiceModel.Discovery version info
+
 2010-03-19  Atsushi Enomoto  <atsushi at ximian.com>
 
 	* : initial checkin (mostly stubs).
diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionApril2005/ChangeLog.old b/mcs/class/System.ServiceModel.Discovery/Assembly/ChangeLog.old
similarity index 100%
copy from mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionApril2005/ChangeLog.old
copy to mcs/class/System.ServiceModel.Discovery/Assembly/ChangeLog.old
diff --git a/mcs/class/System.ServiceModel.Discovery/ChangeLog b/mcs/class/System.ServiceModel.Discovery/ChangeLog
index 30cb378..b5d6de9 100644
--- a/mcs/class/System.ServiceModel.Discovery/ChangeLog
+++ b/mcs/class/System.ServiceModel.Discovery/ChangeLog
@@ -1,3 +1,49 @@
+2010-09-29  Atsushi Eno  <atsushi at ximian.com>
+
+	[wcf-discovery] ExclusiveAddressUse won't work. AcceptChannel()
+	should nreturn null when it is being closed.
+
+2010-09-29  Atsushi Eno  <atsushi at ximian.com>
+
+	[wcf-discovery] Fix MessageEncoder retrieval, failure on
+	EndReceive and ExclusiveAddressUse.
+
+2010-09-24  Atsushi Eno  <atsushi at ximian.com>
+
+	Assign identical operation name for each contract version so that
+	they don't conflict each other.
+
+2010-09-21  Atsushi Eno  <atsushi at ximian.com>
+
+	Fix (isolate) internal namespace for Udp transport.
+
+2010-09-10  Atsushi Eno  <atsushi at ximian.com>
+
+	Remove unnecessary common types (as they are imported from
+	internal-visible ones).
+
+2010-09-10  Atsushi Eno  <atsushi at ximian.com>
+
+	Ongoing WCF discovery configuration implementation.
+
+2010-09-03  Atsushi Eno  <atsushi at ximian.com>
+
+	Ongoing Discovery duplex (UDP) implementation (not working yet).
+
+2010-09-03  Atsushi Eno  <atsushi at ximian.com>
+
+	Cosmetic exception type change and suppress test failures.
+
+2010-09-03  Atsushi Eno  <atsushi at ximian.com>
+
+	Repeat UDP message sending, and do not process duplicate messages
+	received. Makes UDP transmit robust.
+
+2010-09-02  Atsushi Eno  <atsushi at ximian.com>
+
+	Couple of fixes in FindCriteria and relevant contract types for
+	Find operation.
+
 2010-08-30  Atsushi Eno  <atsushi at ximian.com>
 
 	Fix a couple of Hello/Probe serialization issues.
diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/AnnouncementEndpointElement.cs b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/AnnouncementEndpointElement.cs
index 0de1b18..20d09f2 100644
--- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/AnnouncementEndpointElement.cs
+++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/AnnouncementEndpointElement.cs
@@ -56,7 +56,7 @@ namespace System.ServiceModel.Discovery.Configuration
 			set { base [discovery_version] = value; }
 		}
 
-		protected override Type EndpointType {
+		protected internal override Type EndpointType {
 			get { return typeof (AnnouncementEndpoint); }
 		}
 		
@@ -67,34 +67,61 @@ namespace System.ServiceModel.Discovery.Configuration
 			set { base [max_announcement_delay] = value; }
 		}
 		
-		protected override ServiceEndpoint CreateServiceEndpoint (ContractDescription contractDescription)
+		protected override ConfigurationPropertyCollection Properties {
+			get { return properties; }
+		}
+		
+		protected internal override ServiceEndpoint CreateServiceEndpoint (ContractDescription contractDescription)
 		{
-			throw new NotImplementedException ();
+			if (contractDescription == null)
+				throw new ArgumentNullException ("contractDescription");
+			var ret = new AnnouncementEndpoint (DiscoveryVersion) { MaxAnnouncementDelay = this.MaxAnnouncementDelay };
+			if (ret.Contract.ContractType != contractDescription.ContractType)
+				throw new ArgumentException ("The argument contractDescription does not represent the expected Announcement contract");
+			return ret;
 		}
 		
-		protected override void InitializeFrom (ServiceEndpoint endpoint)
+		protected internal override void InitializeFrom (ServiceEndpoint endpoint)
 		{
-			throw new NotImplementedException ();
+			if (endpoint == null)
+				throw new ArgumentNullException ("endpoint");
+			AnnouncementEndpoint ae = (AnnouncementEndpoint) endpoint;
+			DiscoveryVersion = ae.DiscoveryVersion;
+			MaxAnnouncementDelay = ae.MaxAnnouncementDelay;
 		}
 		
 		protected override void OnApplyConfiguration (ServiceEndpoint endpoint, ChannelEndpointElement serviceEndpointElement)
 		{
-			throw new NotImplementedException ();
+			if (endpoint == null)
+				throw new ArgumentNullException ("endpoint");
+			AnnouncementEndpoint ae = (AnnouncementEndpoint) endpoint;
+			if (!ae.DiscoveryVersion.Equals (DiscoveryVersion))
+				throw new ArgumentException ("Argument AnnouncementEndpoint is initialized with different DiscoveryVersion");
+			ae.MaxAnnouncementDelay = MaxAnnouncementDelay;
+			ae.Address = serviceEndpointElement.CreateEndpointAddress (); // it depends on InternalVisibleTo(System.ServiceModel)
+			ae.Binding = ConfigUtil.CreateBinding (serviceEndpointElement.Binding, serviceEndpointElement.BindingConfiguration); // it depends on InternalVisibleTo(System.ServiceModel)
 		}
 
 		protected override void OnApplyConfiguration (ServiceEndpoint endpoint, ServiceEndpointElement serviceEndpointElement)
 		{
-			throw new NotImplementedException ();
+			if (endpoint == null)
+				throw new ArgumentNullException ("endpoint");
+			AnnouncementEndpoint ae = (AnnouncementEndpoint) endpoint;
+			if (!ae.DiscoveryVersion.Equals (DiscoveryVersion))
+				throw new ArgumentException ("Argument AnnouncementEndpoint is initialized with different DiscoveryVersion");
+			ae.MaxAnnouncementDelay = MaxAnnouncementDelay;
+			ae.Address = serviceEndpointElement.CreateEndpointAddress (); // it depends on InternalVisibleTo(System.ServiceModel)
+			ae.Binding = ConfigUtil.CreateBinding (serviceEndpointElement.Binding, serviceEndpointElement.BindingConfiguration); // it depends on InternalVisibleTo(System.ServiceModel)
 		}
 		
 		protected override void OnInitializeAndValidate (ChannelEndpointElement channelEndpointElement)
 		{
-			throw new NotImplementedException ();
+			// It seems to do nothing.
 		}
 		
 		protected override void OnInitializeAndValidate (ServiceEndpointElement serviceEndpointElement)
 		{
-			throw new NotImplementedException ();
+			// It seems to do nothing.
 		}
 	}
 }
diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/ChangeLog b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/ChangeLog
index 2c41b18..4bcc279 100644
--- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/ChangeLog
+++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/ChangeLog
@@ -1,3 +1,36 @@
+2011-01-08  Marek Safar  <marek.safar at gmail.com>
+
+	Fixed missing protected internal modifier
+
+2010-09-21  Atsushi Eno  <atsushi at ximian.com>
+
+	Fix (isolate) internal namespace for Udp transport.
+
+2010-09-10  Atsushi Eno  <atsushi at ximian.com>
+
+	Flush ongoing WCF Discovery configuration work.
+
+2010-09-10  Atsushi Eno  <atsushi at ximian.com>
+
+	Cosmetic warning cleanups.
+
+2010-09-10  Atsushi Eno  <atsushi at ximian.com>
+
+	Implement discovery version converter.
+
+2010-09-10  Atsushi Eno  <atsushi at ximian.com>
+
+	Add lacking property initializer.
+
+2010-09-10  Atsushi Eno  <atsushi at ximian.com>
+
+	Ongoing WCF discovery configuration implementation.
+
+2010-09-01  Atsushi Eno  <atsushi at ximian.com>
+
+	Add a bunch of missing configuration members etc. based on
+	corcompare results.
+
 2010-08-11  Atsushi Eno  <atsushi at ximian.com>
 
 	flush ongoing hack. add UDP transport. Headers on configuration
diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/DiscoveryClientElement.cs b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/DiscoveryClientElement.cs
index 04bada8..e6079fb 100644
--- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/DiscoveryClientElement.cs
+++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/DiscoveryClientElement.cs
@@ -63,8 +63,56 @@ namespace System.ServiceModel.Discovery.Configuration
 			get { return (FindCriteriaElement) base [find_criteria]; }
 		}
 		
-		protected override BindingElement CreateBindingElement ()
+		protected override ConfigurationPropertyCollection Properties {
+			get { return properties; }
+		}
+		
+		public override void ApplyConfiguration (BindingElement bindingElement)
+		{
+			if (bindingElement == null)
+				throw new ArgumentNullException ("bindingElement");
+			if (DiscoveryEndpoint == null)
+				throw new ArgumentNullException ("'endpoint' configuration element is missing.");
+			var be = (DiscoveryClientBindingElement) bindingElement;
+
+			base.ApplyConfiguration (bindingElement);
+
+			if (FindCriteria != null)
+				be.FindCriteria = FindCriteria.CreateInstance ();
+
+			// FIXME: apply DiscoveryEndpoint
+			throw new NotImplementedException ();
+		}
+
+		public override void CopyFrom (ServiceModelExtensionElement from)
 		{
+			if (from == null)
+				throw new ArgumentNullException ("from");
+			var ce = (DiscoveryClientElement) from;
+			FindCriteria.CopyFrom (ce.FindCriteria);
+		}
+
+		protected internal override BindingElement CreateBindingElement ()
+		{
+			var be = new DiscoveryClientBindingElement ();
+			ApplyConfiguration (be);
+			return be;
+		}
+
+		protected internal override void InitializeFrom (BindingElement bindingElement)
+		{
+			if (bindingElement == null)
+				throw new ArgumentNullException ("bindingElement");
+			if (DiscoveryEndpoint == null)
+				throw new ArgumentNullException ("'endpoint' configuration element is missing.");
+			var be = (DiscoveryClientBindingElement) bindingElement;
+
+			base.InitializeFrom (be);
+
+			if (be.FindCriteria != null)
+				FindCriteria.InitializeFrom (be.FindCriteria);
+
+			// FIXME: initialize DiscoveryEndpoint
 			throw new NotImplementedException ();
 		}
 	}
diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/DiscoveryClientSettingsElement.cs b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/DiscoveryClientSettingsElement.cs
index ff520cd..5556659 100644
--- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/DiscoveryClientSettingsElement.cs
+++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/DiscoveryClientSettingsElement.cs
@@ -57,6 +57,10 @@ namespace System.ServiceModel.Discovery.Configuration
 		public FindCriteriaElement FindCriteria {
 			get { return (FindCriteriaElement) base [find_criteria]; }
 		}
+		
+		protected override ConfigurationPropertyCollection Properties {
+			get { return properties; }
+		}
 	}
 }
 
diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/DiscoveryEndpointElement.cs b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/DiscoveryEndpointElement.cs
index 6d7c679..a509d3c 100644
--- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/DiscoveryEndpointElement.cs
+++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/DiscoveryEndpointElement.cs
@@ -33,42 +33,103 @@ namespace System.ServiceModel.Discovery.Configuration
 {
 	public class DiscoveryEndpointElement : StandardEndpointElement
 	{
+		static ConfigurationPropertyCollection properties;
+		static ConfigurationProperty discovery_mode, discovery_version, max_response_delay;
+		
+		static DiscoveryEndpointElement ()
+		{
+			discovery_mode = new ConfigurationProperty ("discoveryMode", typeof (ServiceDiscoveryMode), ServiceDiscoveryMode.Managed, null, null, ConfigurationPropertyOptions.None);
+			discovery_version = new ConfigurationProperty ("discoveryVersion", typeof (DiscoveryVersion), "WSDiscovery11", new DiscoveryVersionConverter (), null, ConfigurationPropertyOptions.None);
+			max_response_delay = new ConfigurationProperty ("maxResponseDelay", typeof (TimeSpan), "00:00:00", new TimeSpanConverter (), null, ConfigurationPropertyOptions.None);
+			properties = new ConfigurationPropertyCollection ();
+			properties.Add (discovery_mode);
+			properties.Add (discovery_version);
+			properties.Add (max_response_delay);
+		}
+
 		public DiscoveryEndpointElement ()
 		{
 		}
+
+		[ConfigurationProperty ("discoveryMode", DefaultValue = ServiceDiscoveryMode.Managed)]
+		public ServiceDiscoveryMode DiscoveryMode {
+			get { return (ServiceDiscoveryMode) base [discovery_mode]; }
+			set { base [discovery_mode] = value; }
+		}
+
+		[TypeConverter (typeof (DiscoveryVersionConverter))]
+		[ConfigurationProperty ("discoveryVersion", DefaultValue = "WSDiscovery11")]
+		public DiscoveryVersion DiscoveryVersion {
+			get { return (DiscoveryVersion) base [discovery_version]; }
+			set { base [discovery_version] = value; }
+		}
+
+		[ConfigurationProperty ("maxResponseDelay", DefaultValue = "00:00:00")]
+		[TypeConverter (typeof (TimeSpanConverter))]
+		public TimeSpan MaxResponseDelay {
+			get { return (TimeSpan) base [max_response_delay]; }
+			set { base [max_response_delay] = value; }
+		}
 		
-		protected override Type EndpointType {
+		protected internal override Type EndpointType {
 			get { return typeof (DiscoveryEndpoint); }
 		}
-
-		protected override ServiceEndpoint CreateServiceEndpoint (ContractDescription contractDescription)
+		
+		protected override ConfigurationPropertyCollection Properties {
+			get { return properties; }
+		}
+		
+		protected internal override ServiceEndpoint CreateServiceEndpoint (ContractDescription contractDescription)
 		{
-			throw new NotImplementedException ();
+			if (contractDescription == null)
+				throw new ArgumentNullException ("contractDescription");
+			var ret = new DiscoveryEndpoint (DiscoveryVersion, DiscoveryMode) { MaxResponseDelay = this.MaxResponseDelay };
+			if (ret.Contract.ContractType != contractDescription.ContractType)
+				throw new ArgumentException ("The argument contractDescription does not represent the expected Discovery contract");
+			return ret;
 		}
-
-		protected override void InitializeFrom (ServiceEndpoint endpoint)
+		
+		protected internal override void InitializeFrom (ServiceEndpoint endpoint)
 		{
-			throw new NotImplementedException ();
+			if (endpoint == null)
+				throw new ArgumentNullException ("endpoint");
+			var de = (DiscoveryEndpoint) endpoint;
+			DiscoveryVersion = de.DiscoveryVersion;
+			MaxResponseDelay = de.MaxResponseDelay;
 		}
 		
 		protected override void OnApplyConfiguration (ServiceEndpoint endpoint, ChannelEndpointElement serviceEndpointElement)
 		{
-			throw new NotImplementedException ();
+			if (endpoint == null)
+				throw new ArgumentNullException ("endpoint");
+			var de = (DiscoveryEndpoint) endpoint;
+			if (!de.DiscoveryVersion.Equals (DiscoveryVersion))
+				throw new ArgumentException ("Argument DiscoveryEndpoint is initialized with different DiscoveryVersion");
+			de.MaxResponseDelay = MaxResponseDelay;
+			de.Address = serviceEndpointElement.CreateEndpointAddress (); // it depends on InternalVisibleTo(System.ServiceModel)
+			de.Binding = ConfigUtil.CreateBinding (serviceEndpointElement.Binding, serviceEndpointElement.BindingConfiguration); // it depends on InternalVisibleTo(System.ServiceModel)
 		}
-		
+
 		protected override void OnApplyConfiguration (ServiceEndpoint endpoint, ServiceEndpointElement serviceEndpointElement)
 		{
-			throw new NotImplementedException ();
+			if (endpoint == null)
+				throw new ArgumentNullException ("endpoint");
+			var de = (DiscoveryEndpoint) endpoint;
+			if (!de.DiscoveryVersion.Equals (DiscoveryVersion))
+				throw new ArgumentException ("Argument AnnouncementEndpoint is initialized with different DiscoveryVersion");
+			de.MaxResponseDelay = MaxResponseDelay;
+			de.Address = serviceEndpointElement.CreateEndpointAddress (); // it depends on InternalVisibleTo(System.ServiceModel)
+			de.Binding = ConfigUtil.CreateBinding (serviceEndpointElement.Binding, serviceEndpointElement.BindingConfiguration); // it depends on InternalVisibleTo(System.ServiceModel)
 		}
 		
 		protected override void OnInitializeAndValidate (ChannelEndpointElement channelEndpointElement)
 		{
-			throw new NotImplementedException ();
+			// It seems to do nothing.
 		}
 		
 		protected override void OnInitializeAndValidate (ServiceEndpointElement channelEndpointElement)
 		{
-			throw new NotImplementedException ();
+			// It seems to do nothing.
 		}
 	}
 }
diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/DiscoveryVersionConverter.cs b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/DiscoveryVersionConverter.cs
index 712b31e..c06c53d 100644
--- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/DiscoveryVersionConverter.cs
+++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/DiscoveryVersionConverter.cs
@@ -36,24 +36,79 @@ namespace System.ServiceModel.Discovery.Configuration
 		{
 		}
 		
+		private bool CanConvert (Type type)
+		{
+			if (type == typeof (string))
+				return true;
+			if (type == typeof (DiscoveryVersion))
+				return true;
+			return false;
+		}
+		
 		public override bool CanConvertFrom (ITypeDescriptorContext context, Type sourceType)
 		{
-			throw new NotImplementedException ();
+			if (sourceType == null)
+				throw new ArgumentNullException ("sourceType");
+
+			return CanConvert (sourceType);
 		}
 		
 		public override bool CanConvertTo (ITypeDescriptorContext context, Type destinationType)
 		{
-			throw new NotImplementedException ();
+			if (destinationType == null)
+				return false;
+
+			return CanConvert (destinationType);
 		}
 		
 		public override object ConvertFrom (ITypeDescriptorContext context, CultureInfo culture, object value)
 		{
-			throw new NotImplementedException ();
+			if (value == null)
+				throw new ArgumentNullException ("value");
+
+			if (!CanConvertFrom (context, value.GetType ()))
+				throw new NotSupportedException ("Cannot convert from value.");
+
+			if (value is DiscoveryVersion)
+				return value;
+
+			string s = (value as string);
+			if (s != null) {
+				switch (s) {
+				case "WSDiscovery11":
+					return DiscoveryVersion.WSDiscovery11;
+				case "WSDiscoveryApril2005":
+					return DiscoveryVersion.WSDiscoveryApril2005;
+				case "WSDiscoveryCD1":
+					return DiscoveryVersion.WSDiscoveryCD1;
+				}
+				throw new NotSupportedException ("Cannot convert from value.");
+			}
+
+			return base.ConvertFrom (context, culture, value);
 		}
 
 		public override object ConvertTo (ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
 		{
-			throw new NotImplementedException ();
+			if (!CanConvertTo (context, destinationType))
+				throw new NotSupportedException (Locale.GetText ("Cannot convert to destination type."));
+
+			var ver = (value as DiscoveryVersion);
+			if (ver != null) {
+				if (destinationType == typeof (DiscoveryVersion))
+					return ver;
+
+				if (destinationType == typeof (string)) {
+					if (ver.Equals (DiscoveryVersion.WSDiscovery11))
+						return "WSDiscovery11";
+					if (ver.Equals (DiscoveryVersion.WSDiscoveryApril2005))
+						return "WSDiscoveryApril2005";
+					if (ver.Equals (DiscoveryVersion.WSDiscoveryCD1))
+						return "WSDiscoveryCD1";
+				}
+				throw new NotSupportedException ("Cannot convert to destination type.");
+			}
+			return base.ConvertTo (context, culture, value, destinationType);
 		}
 	}
 }
diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/DynamicEndpointElement.cs b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/DynamicEndpointElement.cs
index d3f8343..b5a1233 100644
--- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/DynamicEndpointElement.cs
+++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/DynamicEndpointElement.cs
@@ -52,16 +52,15 @@ namespace System.ServiceModel.Discovery.Configuration
 			get { return (DiscoveryClientSettingsElement) base [discovery_client_settings]; }
 		}
 		
-		protected override Type EndpointType {
+		protected internal override Type EndpointType {
 			get { return typeof (DynamicEndpoint); }
 		}
 		
-		protected override ServiceEndpoint CreateServiceEndpoint (ContractDescription contractDescription)
-		{
-			throw new NotImplementedException ();
+		protected override ConfigurationPropertyCollection Properties {
+			get { return properties; }
 		}
 		
-		protected override void InitializeFrom (ServiceEndpoint endpoint)
+		protected internal override ServiceEndpoint CreateServiceEndpoint (ContractDescription contractDescription)
 		{
 			throw new NotImplementedException ();
 		}
@@ -78,12 +77,12 @@ namespace System.ServiceModel.Discovery.Configuration
 		
 		protected override void OnInitializeAndValidate (ChannelEndpointElement channelEndpointElement)
 		{
-			throw new NotImplementedException ();
+			// There seems nothing to do here.
 		}
 		
 		protected override void OnInitializeAndValidate (ServiceEndpointElement serviceEndpointElement)
 		{
-			throw new NotImplementedException ();
+			// There seems nothing to do here.
 		}
 	}
 }
diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/EndpointDiscoveryElement.cs b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/EndpointDiscoveryElement.cs
index 4022433..62896f2 100644
--- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/EndpointDiscoveryElement.cs
+++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/EndpointDiscoveryElement.cs
@@ -27,6 +27,8 @@ using System;
 using System.ComponentModel;
 using System.Configuration;
 using System.ServiceModel.Configuration;
+using System.Xml;
+using System.Xml.Linq;
 
 namespace System.ServiceModel.Discovery.Configuration
 {
@@ -77,9 +79,20 @@ namespace System.ServiceModel.Discovery.Configuration
 			get { return (ScopeElementCollection) base [scopes]; }
 		}
 		
-		protected override object CreateBehavior ()
+		protected override ConfigurationPropertyCollection Properties {
+			get { return properties; }
+		}
+		
+		protected internal override object CreateBehavior ()
 		{
-			throw new NotImplementedException ();
+			var ret = new EndpointDiscoveryBehavior () { Enabled = this.Enabled };
+			foreach (ContractTypeNameElement ctn in ContractTypeNames)
+				ret.ContractTypeNames.Add (new XmlQualifiedName (ctn.Name, ctn.Namespace));
+			foreach (XmlElementElement xee in Extensions)
+				ret.Extensions.Add (XElement.Load (new XmlNodeReader (xee.XmlElement)));
+			foreach (ScopeElement se in Scopes)
+				ret.Scopes.Add (se.Scope);
+			return ret;
 		}
 	}
 }
diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/FindCriteriaElement.cs b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/FindCriteriaElement.cs
index c138969..ed3659d 100644
--- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/FindCriteriaElement.cs
+++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/FindCriteriaElement.cs
@@ -27,6 +27,8 @@ using System;
 using System.ComponentModel;
 using System.Configuration;
 using System.ServiceModel.Configuration;
+using System.Xml;
+using System.Xml.Linq;
 
 namespace System.ServiceModel.Discovery.Configuration
 {
@@ -81,7 +83,6 @@ namespace System.ServiceModel.Discovery.Configuration
 		}
 		
 		[ConfigurationProperty ("scopeMatchBy")]
-		[TypeConverter (typeof (UriTypeConverter))]
 		public Uri ScopeMatchBy {
 			get { return (Uri) base [scope_match_by]; }
 			set { base [scope_match_by] = value; }
@@ -91,6 +92,55 @@ namespace System.ServiceModel.Discovery.Configuration
 		public ScopeElementCollection Scopes {
 			get { return (ScopeElementCollection) base [scopes]; }
 		}
+		
+		protected override ConfigurationPropertyCollection Properties {
+			get { return properties; }
+		}
+
+		internal FindCriteria CreateInstance ()
+		{
+			var fc = new FindCriteria ();
+			foreach (ContractTypeNameElement ctn in ContractTypeNames)
+				fc.ContractTypeNames.Add (new XmlQualifiedName (ctn.Name, ctn.Namespace));
+			fc.Duration = Duration;
+			foreach (XmlElementElement ext in Extensions)
+				fc.Extensions.Add (XElement.Load (new XmlNodeReader (ext.XmlElement)));
+			fc.MaxResults = MaxResults;
+			fc.ScopeMatchBy = ScopeMatchBy;
+			foreach (ScopeElement scope in Scopes)
+				fc.Scopes.Add (scope.Scope);
+			return fc;
+		}
+
+		internal void CopyFrom (FindCriteriaElement other)
+		{
+			foreach (ContractTypeNameElement ctn in other.ContractTypeNames)
+				ContractTypeNames.Add (new ContractTypeNameElement () { Name = ctn.Name, Namespace = ctn.Namespace });
+			Duration = other.Duration;
+			foreach (XmlElementElement ext in other.Extensions)
+				Extensions.Add (new XmlElementElement () { XmlElement = (XmlElement) ext.XmlElement.CloneNode (true) });
+			MaxResults = other.MaxResults;
+			ScopeMatchBy = other.ScopeMatchBy;
+			foreach (ScopeElement scope in other.Scopes)
+				Scopes.Add (new ScopeElement () { Scope = scope.Scope });
+		}
+
+		internal void InitializeFrom (FindCriteria fc)
+		{
+			foreach (var ctn in fc.ContractTypeNames)
+				ContractTypeNames.Add (new ContractTypeNameElement () { Name = ctn.Name, Namespace = ctn.Namespace});
+			Duration = fc.Duration;
+			var doc = new XmlDocument ();
+			foreach (var ext in fc.Extensions) {
+				var xr = ext.CreateReader ();
+				xr.MoveToContent ();
+				Extensions.Add (new XmlElementElement () { XmlElement = (XmlElement) doc.ReadNode (xr) });
+			}
+			MaxResults = fc.MaxResults;
+			ScopeMatchBy = fc.ScopeMatchBy;
+			foreach (var scope in fc.Scopes)
+				Scopes.Add (new ScopeElement () { Scope = scope});
+		}
 	}
 }
 
diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/ScopeElement.cs b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/ScopeElement.cs
index 3d105cd..0ef3629 100644
--- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/ScopeElement.cs
+++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/ScopeElement.cs
@@ -54,6 +54,10 @@ namespace System.ServiceModel.Discovery.Configuration
 			get { return (Uri) base [scope]; }
 			set { base [scope] = value; }
 		}
+		
+		protected override ConfigurationPropertyCollection Properties {
+			get { return properties; }
+		}
 	}
 }
 
diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/ServiceDiscoveryElement.cs b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/ServiceDiscoveryElement.cs
index 8ba6488..cb872d2 100644
--- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/ServiceDiscoveryElement.cs
+++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/ServiceDiscoveryElement.cs
@@ -55,7 +55,11 @@ namespace System.ServiceModel.Discovery.Configuration
 			get { return typeof (ServiceDiscoveryBehavior); }
 		}
 		
-		protected override object CreateBehavior ()
+		protected override ConfigurationPropertyCollection Properties {
+			get { return properties; }
+		}
+		
+		protected internal override object CreateBehavior ()
 		{
 			throw new NotImplementedException ();
 		}
diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/UdpAnnouncementEndpointElement.cs b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/UdpAnnouncementEndpointElement.cs
index 02c6b9f..dce0983 100644
--- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/UdpAnnouncementEndpointElement.cs
+++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/UdpAnnouncementEndpointElement.cs
@@ -26,8 +26,10 @@
 using System;
 using System.ComponentModel;
 using System.Configuration;
+using System.Linq;
 using System.ServiceModel.Configuration;
 using System.ServiceModel.Description;
+using System.ServiceModel.Discovery.Udp;
 
 namespace System.ServiceModel.Discovery.Configuration
 {
@@ -51,18 +53,17 @@ namespace System.ServiceModel.Discovery.Configuration
 		{
 		}
 		
-		protected override Type EndpointType {
+		protected internal override Type EndpointType {
 			get { return typeof (UdpAnnouncementEndpoint); }
 		}
 		
 		[TypeConverter (typeof (TimeSpanConverter))]
 		[ConfigurationPropertyAttribute("maxAnnouncementDelay", DefaultValue = "00:00:00.500")]
-		public TimeSpan MaxAnnouncementDelay {
+		public new TimeSpan MaxAnnouncementDelay {
 			get { return (TimeSpan) base [max_announcement_delay]; }
 			set { base [max_announcement_delay] = value; }
 		}
 		
-		[TypeConverter (typeof (UriTypeConverter))]
 		[ConfigurationPropertyAttribute("multicastAddress", DefaultValue = "soap.udp://239.255.255.250:3702")]
 		public Uri MulticastAddress {
 			get { return (Uri) base [multicast_address]; }
@@ -73,6 +74,80 @@ namespace System.ServiceModel.Discovery.Configuration
 		public UdpTransportSettingsElement TransportSettings {
 			get { return (UdpTransportSettingsElement) base [transport_settings]; }
 		}
+		
+		protected override ConfigurationPropertyCollection Properties {
+			get { return properties; }
+		}
+
+		protected internal override ServiceEndpoint CreateServiceEndpoint (ContractDescription contractDescription)
+		{
+			if (contractDescription == null)
+				throw new ArgumentNullException ("contractDescription");
+			DiscoveryVersion ver = null;
+			switch (contractDescription.ContractType.Namespace) {
+			case DiscoveryVersion.Namespace11:
+				ver = DiscoveryVersion.WSDiscovery11;
+				break;
+			case DiscoveryVersion.NamespaceApril2005:
+				ver = DiscoveryVersion.WSDiscoveryApril2005;
+				break;
+			case DiscoveryVersion.NamespaceCD1:
+				ver = DiscoveryVersion.WSDiscoveryCD1;
+				break;
+			}
+			var ret = new UdpAnnouncementEndpoint (ver, MulticastAddress);
+			ret.MaxAnnouncementDelay = MaxAnnouncementDelay;
+			TransportSettings.ApplyConfiguration (ret.TransportSettings);
+			return ret;
+		}
+
+		protected internal override void InitializeFrom (ServiceEndpoint endpoint)
+		{
+			if (endpoint == null)
+				throw new ArgumentNullException ("endpoint");
+			var e = (UdpAnnouncementEndpoint) endpoint;
+			MaxAnnouncementDelay = e.MaxAnnouncementDelay;
+			MulticastAddress = e.MulticastAddress;
+			TransportSettings.InitializeFrom (e.TransportSettings);
+		}
+
+		protected override void OnApplyConfiguration (ServiceEndpoint endpoint, ChannelEndpointElement serviceEndpointElement)
+		{
+			if (endpoint == null)
+				throw new ArgumentNullException ("endpoint");
+			var de = (AnnouncementEndpoint) endpoint;
+			if (!de.DiscoveryVersion.Equals (DiscoveryVersion))
+				throw new ArgumentException ("Argument AnnouncementEndpoint is initialized with different DiscoveryVersion");
+			de.MaxAnnouncementDelay = MaxAnnouncementDelay;
+			de.Address = serviceEndpointElement.CreateEndpointAddress (); // it depends on InternalVisibleTo(System.ServiceModel)
+			var be = (UdpTransportBindingElement) de.Binding.CreateBindingElements ().First (b => b is UdpTransportBindingElement);
+			TransportSettings.ApplyConfiguration (be.TransportSettings);
+		}
+
+		protected override void OnApplyConfiguration (ServiceEndpoint endpoint, ServiceEndpointElement serviceEndpointElement)
+		{
+			if (endpoint == null)
+				throw new ArgumentNullException ("endpoint");
+			var de = (AnnouncementEndpoint) endpoint;
+			if (!de.DiscoveryVersion.Equals (DiscoveryVersion))
+				throw new ArgumentException ("Argument AnnouncementEndpoint is initialized with different DiscoveryVersion");
+			de.MaxAnnouncementDelay = MaxAnnouncementDelay;
+			de.Address = serviceEndpointElement.CreateEndpointAddress (); // it depends on InternalVisibleTo(System.ServiceModel)
+			var be = (UdpTransportBindingElement) de.Binding.CreateBindingElements ().First (b => b is UdpTransportBindingElement);
+			TransportSettings.ApplyConfiguration (be.TransportSettings);
+		}
+
+		protected override void OnInitializeAndValidate (ChannelEndpointElement channelEndpointElement)
+		{
+			// It seems to do nothing.
+			base.OnInitializeAndValidate (channelEndpointElement);
+		}
+
+		protected override void OnInitializeAndValidate (ServiceEndpointElement channelEndpointElement)
+		{
+			// It seems to do nothing.
+			base.OnInitializeAndValidate (channelEndpointElement);
+		}
 	}
 }
 
diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/UdpDiscoveryEndpointElement.cs b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/UdpDiscoveryEndpointElement.cs
index cc3c7ab..f627ad1 100644
--- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/UdpDiscoveryEndpointElement.cs
+++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/UdpDiscoveryEndpointElement.cs
@@ -26,8 +26,10 @@
 using System;
 using System.ComponentModel;
 using System.Configuration;
+using System.Linq;
 using System.ServiceModel.Configuration;
 using System.ServiceModel.Description;
+using System.ServiceModel.Discovery.Udp;
 
 namespace System.ServiceModel.Discovery.Configuration
 {
@@ -54,17 +56,18 @@ namespace System.ServiceModel.Discovery.Configuration
 		}
 
 		[ConfigurationProperty ("discoveryMode", DefaultValue = ServiceDiscoveryMode.Adhoc)]
-		public ServiceDiscoveryMode DiscoveryMode {
+		public new ServiceDiscoveryMode DiscoveryMode {
 			get { return (ServiceDiscoveryMode) base [discovery_mode]; }
 			set { base [discovery_mode] = value; }
 		}
 
-		protected override Type EndpointType {
+		protected internal override Type EndpointType {
 			get { return typeof (UdpDiscoveryEndpoint); }
 		}
 
+		[TypeConverter (typeof (TimeSpanConverter))]
 		[ConfigurationProperty ("maxResponseDelay", DefaultValue = "00:00:00.500")]
-		public TimeSpan MaxResponseDelay {
+		public new TimeSpan MaxResponseDelay {
 			get { return (TimeSpan) base [max_response_delay]; }
 			set { base [max_response_delay] = value; }
 		}
@@ -79,30 +82,79 @@ namespace System.ServiceModel.Discovery.Configuration
 		public UdpTransportSettingsElement TransportSettings {
 			get { return (UdpTransportSettingsElement) base [transport_settings]; }
 		}
-			
-		protected override ServiceEndpoint CreateServiceEndpoint (ContractDescription contractDescription)
+		
+		protected override ConfigurationPropertyCollection Properties {
+			get { return properties; }
+		}
+		
+		protected internal override ServiceEndpoint CreateServiceEndpoint (ContractDescription contractDescription)
 		{
-			throw new NotImplementedException ();
+			if (contractDescription == null)
+				throw new ArgumentNullException ("contractDescription");
+			DiscoveryVersion ver = null;
+			switch (contractDescription.ContractType.Namespace) {
+			case DiscoveryVersion.Namespace11:
+				ver = DiscoveryVersion.WSDiscovery11;
+				break;
+			case DiscoveryVersion.NamespaceApril2005:
+				ver = DiscoveryVersion.WSDiscoveryApril2005;
+				break;
+			case DiscoveryVersion.NamespaceCD1:
+				ver = DiscoveryVersion.WSDiscoveryCD1;
+				break;
+			}
+			var ret = new UdpDiscoveryEndpoint (ver, MulticastAddress);
+			ret.MaxResponseDelay = MaxResponseDelay;
+			TransportSettings.ApplyConfiguration (ret.TransportSettings);
+			return ret;
 		}
-		protected override void InitializeFrom (ServiceEndpoint endpoint)
+
+		protected internal override void InitializeFrom (ServiceEndpoint endpoint)
 		{
-			throw new NotImplementedException ();
+			if (endpoint == null)
+				throw new ArgumentNullException ("endpoint");
+			var e = (UdpDiscoveryEndpoint) endpoint;
+			MaxResponseDelay = e.MaxResponseDelay;
+			MulticastAddress = e.MulticastAddress;
+			TransportSettings.InitializeFrom (e.TransportSettings);
 		}
+
 		protected override void OnApplyConfiguration (ServiceEndpoint endpoint, ChannelEndpointElement serviceEndpointElement)
 		{
-			throw new NotImplementedException ();
+			if (endpoint == null)
+				throw new ArgumentNullException ("endpoint");
+			var de = (DiscoveryEndpoint) endpoint;
+			if (!de.DiscoveryVersion.Equals (DiscoveryVersion))
+				throw new ArgumentException ("Argument AnnouncementEndpoint is initialized with different DiscoveryVersion");
+			de.MaxResponseDelay = MaxResponseDelay;
+			de.Address = serviceEndpointElement.CreateEndpointAddress (); // it depends on InternalVisibleTo(System.ServiceModel)
+			var be = (UdpTransportBindingElement) de.Binding.CreateBindingElements ().First (b => b is UdpTransportBindingElement);
+			TransportSettings.ApplyConfiguration (be.TransportSettings);
 		}
+
 		protected override void OnApplyConfiguration (ServiceEndpoint endpoint, ServiceEndpointElement serviceEndpointElement)
 		{
-			throw new NotImplementedException ();
+			if (endpoint == null)
+				throw new ArgumentNullException ("endpoint");
+			var de = (DiscoveryEndpoint) endpoint;
+			if (!de.DiscoveryVersion.Equals (DiscoveryVersion))
+				throw new ArgumentException ("Argument AnnouncementEndpoint is initialized with different DiscoveryVersion");
+			de.MaxResponseDelay = MaxResponseDelay;
+			de.Address = serviceEndpointElement.CreateEndpointAddress (); // it depends on InternalVisibleTo(System.ServiceModel)
+			var be = (UdpTransportBindingElement) de.Binding.CreateBindingElements ().First (b => b is UdpTransportBindingElement);
+			TransportSettings.ApplyConfiguration (be.TransportSettings);
 		}
+
 		protected override void OnInitializeAndValidate (ChannelEndpointElement channelEndpointElement)
 		{
-			throw new NotImplementedException ();
+			// It seems to do nothing.
+			base.OnInitializeAndValidate (channelEndpointElement);
 		}
+
 		protected override void OnInitializeAndValidate (ServiceEndpointElement channelEndpointElement)
 		{
-			throw new NotImplementedException ();
+			// It seems to do nothing.
+			base.OnInitializeAndValidate (channelEndpointElement);
 		}
 	}
 }
diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/UdpTransportSettingsElement.cs b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/UdpTransportSettingsElement.cs
index 4907b9c..8c9fee2 100644
--- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/UdpTransportSettingsElement.cs
+++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Configuration/UdpTransportSettingsElement.cs
@@ -32,9 +32,121 @@ namespace System.ServiceModel.Discovery.Configuration
 {
 	public sealed class UdpTransportSettingsElement : ConfigurationElement
 	{
+		static ConfigurationPropertyCollection properties;
+		static ConfigurationProperty duplicate_message_history_length, max_buffer_pool_size, max_multicast_retransmit_count, max_pending_message_count, max_received_message_size, max_unicast_retransmit_count, multicast_interface_id,socket_receive_buffer_size, ttl;
+		
+		static UdpTransportSettingsElement ()
+		{
+			duplicate_message_history_length = new ConfigurationProperty ("duplicateMessageHistoryLength", typeof (int), 4112, null, new IntegerValidator (0, int.MaxValue), ConfigurationPropertyOptions.None);
+			max_buffer_pool_size = new ConfigurationProperty ("maxBufferPoolSize", typeof (long), 0x80000, null, new LongValidator (0, long.MaxValue), ConfigurationPropertyOptions.None);
+			max_multicast_retransmit_count = new ConfigurationProperty ("maxMulticastRetransmitCount", typeof (int), 2, null, new IntegerValidator (0, int.MaxValue), ConfigurationPropertyOptions.None);
+			max_pending_message_count = new ConfigurationProperty ("maxPendingMessageCount", typeof (int), 32, null, new IntegerValidator (0, int.MaxValue), ConfigurationPropertyOptions.None);
+			max_received_message_size = new ConfigurationProperty ("maxReceivedMessageSize", typeof (long), 0xFFE7, null, new LongValidator (0, long.MaxValue), ConfigurationPropertyOptions.None);
+			max_unicast_retransmit_count = new ConfigurationProperty ("maxUnicastRetransmitCount", typeof (long), 1, null, new IntegerValidator (0, int.MaxValue), ConfigurationPropertyOptions.None);
+			multicast_interface_id = new ConfigurationProperty ("multicastInterfaceId", typeof (string), null, null, null, ConfigurationPropertyOptions.None);
+			socket_receive_buffer_size = new ConfigurationProperty ("socketReceiveBufferSize", typeof (int), 0x10000, null, new IntegerValidator (0, int.MaxValue), ConfigurationPropertyOptions.None);
+			ttl = new ConfigurationProperty ("timeToLive", typeof (int), 1, null, new IntegerValidator (0, int.MaxValue), ConfigurationPropertyOptions.None);
+			properties = new ConfigurationPropertyCollection ();
+			ConfigurationProperty [] props = {duplicate_message_history_length, max_buffer_pool_size, max_multicast_retransmit_count, max_pending_message_count, max_received_message_size, max_unicast_retransmit_count, multicast_interface_id, ttl};
+			foreach (var cp in props)
+				properties.Add (cp);
+		}
+
 		public UdpTransportSettingsElement ()
 		{
 		}
+
+		[ConfigurationProperty ("duplicateMessageHistoryLength", DefaultValue = 4112)]
+		[IntegerValidator (MinValue = 0, MaxValue = int.MaxValue)]
+		public int DuplicateMessageHistoryLength {
+			get { return (int) base [duplicate_message_history_length]; }
+			set { base [duplicate_message_history_length] = value; }
+		}
+
+		[LongValidator (MinValue = 0, MaxValue = long.MaxValue)]
+		[ConfigurationProperty ("maxBufferPoolSize", DefaultValue = 0x80000)]
+		public long MaxBufferPoolSize {
+			get { return (long) base [max_buffer_pool_size]; }
+			set { base [max_buffer_pool_size] = value; }
+		}
+
+		[ConfigurationProperty ("maxMulticastRetransmitCount", DefaultValue = 2)]
+		[IntegerValidator (MinValue = 0, MaxValue = int.MaxValue)]
+		public int MaxMulticastRetransmitCount {
+			get { return (int) base [max_multicast_retransmit_count]; }
+			set { base [max_multicast_retransmit_count] = value; }
+		}
+
+		[ConfigurationProperty ("maxPendingMessageCount", DefaultValue = 32)]
+		[IntegerValidator (MinValue = 0, MaxValue = int.MaxValue)]
+		public int MaxPendingMessageCount {
+			get { return (int) base [max_pending_message_count]; }
+			set { base [max_pending_message_count] = value; }
+		}
+
+		[LongValidator (MinValue = 0, MaxValue = long.MaxValue)]
+		[ConfigurationProperty ("maxReceivedMessageSize", DefaultValue = 0xFFE7)]
+		public long MaxReceivedMessageSize {
+			get { return (long) base [max_received_message_size]; }
+			set { base [max_received_message_size] = value; }
+		}
+
+		[ConfigurationProperty ("maxUnicastRetransmitCount", DefaultValue = 1)]
+		[IntegerValidator (MinValue = 0, MaxValue = int.MaxValue)]
+		public int MaxUnicastRetransmitCount {
+			get { return (int) base [max_unicast_retransmit_count]; }
+			set { base [max_unicast_retransmit_count] = value; }
+		}
+
+		[ConfigurationProperty ("multicastInterfaceId")]
+		public string MulticastInterfaceId {
+			get { return (string) base [multicast_interface_id]; }
+			set { base [multicast_interface_id] = value; }
+		}
+
+		[ConfigurationProperty ("socketReceiveBufferSize", DefaultValue = 0x10000)]
+		[IntegerValidator (MinValue = 0, MaxValue = int.MaxValue)]
+		public int SocketReceiveBufferSize {
+			get { return (int) base [socket_receive_buffer_size]; }
+			set { base [socket_receive_buffer_size] = value; }
+		}
+
+		[IntegerValidator (MinValue = 0, MaxValue = int.MaxValue)]
+		[ConfigurationProperty ("timeToLive", DefaultValue = 1)]
+		public int TimeToLive {
+			get { return (int) base [ttl]; }
+			set { base [ttl] = value; }
+		}
+
+		protected override ConfigurationPropertyCollection Properties {
+			get { return properties; }
+		}
+
+		internal void ApplyConfiguration (UdpTransportSettings t)
+		{
+			t.DuplicateMessageHistoryLength = DuplicateMessageHistoryLength;
+			t.MaxBufferPoolSize = MaxBufferPoolSize;
+			t.MaxMulticastRetransmitCount = MaxMulticastRetransmitCount;
+			t.MaxPendingMessageCount = MaxPendingMessageCount;
+			t.MaxReceivedMessageSize = MaxReceivedMessageSize;
+			t.MaxUnicastRetransmitCount = MaxUnicastRetransmitCount;
+			t.MulticastInterfaceId = MulticastInterfaceId;
+			t.SocketReceiveBufferSize = SocketReceiveBufferSize;
+			t.TimeToLive = TimeToLive;
+		}
+
+		internal void InitializeFrom (UdpTransportSettings t)
+		{
+			DuplicateMessageHistoryLength = t.DuplicateMessageHistoryLength;
+			MaxBufferPoolSize = t.MaxBufferPoolSize;
+			MaxMulticastRetransmitCount = t.MaxMulticastRetransmitCount;
+			MaxPendingMessageCount = t.MaxPendingMessageCount;
+			MaxReceivedMessageSize = t.MaxReceivedMessageSize;
+			MaxUnicastRetransmitCount = t.MaxUnicastRetransmitCount;
+			MulticastInterfaceId = t.MulticastInterfaceId;
+			SocketReceiveBufferSize = t.SocketReceiveBufferSize;
+			TimeToLive = t.TimeToLive;
+		}
 	}
 }
 
diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Udp/UdpChannelFactory.cs b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Udp/UdpChannelFactory.cs
index 1430cbf..84273bf 100644
--- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Udp/UdpChannelFactory.cs
+++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Udp/UdpChannelFactory.cs
@@ -27,8 +27,9 @@ using System.IO;
 using System.Net.Sockets;
 using System.ServiceModel;
 using System.ServiceModel.Channels;
+using System.ServiceModel.Discovery;
 
-namespace System.ServiceModel.Discovery
+namespace System.ServiceModel.Discovery.Udp
 {
 	internal class UdpChannelFactory : ChannelFactoryBase<IDuplexChannel>
 	{
diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Udp/UdpChannelListener.cs b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Udp/UdpChannelListener.cs
index a273155..77c0463 100644
--- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Udp/UdpChannelListener.cs
+++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Udp/UdpChannelListener.cs
@@ -27,9 +27,10 @@ using System.IO;
 using System.Net.Sockets;
 using System.ServiceModel;
 using System.ServiceModel.Channels;
+using System.ServiceModel.Discovery;
 using System.Threading;
 
-namespace System.ServiceModel.Discovery
+namespace System.ServiceModel.Discovery.Udp
 {
 	internal class UdpChannelListener : ChannelListenerBase<IDuplexChannel>
 	{
@@ -97,6 +98,8 @@ namespace System.ServiceModel.Discovery
 			if (!accept_wait_handle.WaitOne (timeout))
 				throw new TimeoutException ();
 			accept_wait_handle.Reset ();
+			if (State != CommunicationState.Opened)
+				return null; // happens during Close() or Abort().
 			channel = new UdpDuplexChannel (this);
 			channel.Closed += delegate {
 				accept_wait_handle.Set ();
diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Udp/UdpDuplexChannel.cs b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Udp/UdpDuplexChannel.cs
index 2f95652..4a97e90 100644
--- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Udp/UdpDuplexChannel.cs
+++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Udp/UdpDuplexChannel.cs
@@ -23,6 +23,7 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 using System;
+using System.Collections.Generic;
 using System.IO;
 using System.Linq;
 using System.Net;
@@ -30,9 +31,11 @@ using System.Net.NetworkInformation;
 using System.Net.Sockets;
 using System.ServiceModel;
 using System.ServiceModel.Channels;
+using System.ServiceModel.Discovery;
 using System.Threading;
+using System.Xml;
 
-namespace System.ServiceModel.Discovery
+namespace System.ServiceModel.Discovery.Udp
 {
 	internal class UdpDuplexChannel : ChannelBase, IDuplexChannel
 	{
@@ -75,7 +78,7 @@ namespace System.ServiceModel.Discovery
 
 		void FillMessageEncoder (BindingContext ctx)
 		{
-			var mbe = (MessageEncodingBindingElement) ctx.RemainingBindingElements.FirstOrDefault (be => be is MessageEncodingBindingElement);
+			var mbe = (MessageEncodingBindingElement) ctx.Binding.Elements.FirstOrDefault (be => be is MessageEncodingBindingElement);
 			if (mbe == null)
 				mbe = new TextMessageEncodingBindingElement ();
 			message_encoder = mbe.CreateMessageEncoderFactory ().Encoder;
@@ -88,16 +91,43 @@ namespace System.ServiceModel.Discovery
 
 		static readonly Random rnd = new Random ();
 
+		UdpClient GetSenderClient (Message message)
+		{
+			if (RemoteAddress != null)
+				return client;
+				
+			var rmp = message.Properties [RemoteEndpointMessageProperty.Name] as RemoteEndpointMessageProperty;
+			if (rmp == null)
+				throw new ArgumentException ("This duplex channel from the channel listener cannot send messages without RemoteEndpointMessageProperty");
+			var cli = new UdpClient ();
+			cli.Connect (IPAddress.Parse (rmp.Address), rmp.Port);
+			return cli;
+		}
+
 		public void Send (Message message, TimeSpan timeout)
 		{
 			if (State != CommunicationState.Opened)
 				throw new InvalidOperationException ("The UDP channel must be opened before sending a message.");
 
+			var cli = GetSenderClient (message);
+			try {
+				SendCore (cli, message, timeout);
+			} finally {
+				if (cli != client)
+					cli.Close ();
+			}
+		}
+
+		void SendCore (UdpClient cli, Message message, TimeSpan timeout)
+		{
 			var ms = new MemoryStream ();
 			message_encoder.WriteMessage (message, ms);
-			client.Send (ms.GetBuffer (), (int) ms.Length);
-			// FIXME: use MaxAnnouncementDelay. It is fixed now.
-			Thread.Sleep (rnd.Next (500, 500));
+			// It seems .NET sends the same Message a couple of times so that the receivers don't miss it. So, do the same hack.
+			for (int i = 0; i < 6; i++) {
+				// FIXME: use MaxAnnouncementDelay. It is fixed now.
+				Thread.Sleep (rnd.Next (50, 500));
+				cli.Send (ms.GetBuffer (), (int) ms.Length);
+			}
 		}
 
 		public bool WaitForMessage (TimeSpan timeout)
@@ -120,30 +150,55 @@ namespace System.ServiceModel.Discovery
 
 		public bool TryReceive (TimeSpan timeout, out Message msg)
 		{
+			DateTime start = DateTime.Now;
 			ThrowIfDisposedOrNotOpen ();
 			msg = null;
 
+			if (client == null) // could be invoked while being closed.
+				return false;
+
 			byte [] bytes = null;
 			IPEndPoint ip = new IPEndPoint (IPAddress.Any, 0);
 			var ar = client.BeginReceive (delegate (IAsyncResult result) {
-				bytes = client.EndReceive (result, ref ip);
-			}, null);
+if (result == null) throw new ArgumentNullException ("result");
+				UdpClient cli = (UdpClient) result.AsyncState;
+				try {
+					bytes = cli.EndReceive (result, ref ip);
+				} catch (ObjectDisposedException) {
+					if (State == CommunicationState.Opened)
+						throw;
+					// Otherwise, called during shutdown. Ignore it.
+				}
+			}, client);
 
 			if (!ar.IsCompleted && !ar.AsyncWaitHandle.WaitOne (timeout))
 				return false;
 			if (bytes == null || bytes.Length == 0)
 				return false;
 
+			// Clients will send the same message many times, and this receiver has to 
+
 			// FIXME: give maxSizeOfHeaders
 			msg = message_encoder.ReadMessage (new MemoryStream (bytes), int.MaxValue);
+			var id = msg.Headers.MessageId;
+			if (message_ids.Contains (id))
+				return TryReceive (timeout - (DateTime.Now - start), out msg);
+			if (id != null) {
+				message_ids.Enqueue (id);
+				if (message_ids.Count >= binding_element.TransportSettings.DuplicateMessageHistoryLength)
+					message_ids.Dequeue ();
+			}
+			msg.Properties.Add ("Via", LocalAddress.Uri);
+			msg.Properties.Add ("Encoder", message_encoder);
+			msg.Properties.Add (RemoteEndpointMessageProperty.Name, new RemoteEndpointMessageProperty (ip.Address.ToString (), ip.Port));
 			return true;
 		}
 
+		Queue<UniqueId> message_ids = new Queue<UniqueId> ();
+
 		protected override void OnAbort ()
 		{
-			if (client != null)
-				client.Close ();
-			client = null;
+			OnClose (TimeSpan.Zero);
 		}
 		
 		Action<TimeSpan> open_delegate, close_delegate;
diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Udp/UdpTransportBindingElement.cs b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Udp/UdpTransportBindingElement.cs
index c3c5078..bfb2674 100644
--- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Udp/UdpTransportBindingElement.cs
+++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Udp/UdpTransportBindingElement.cs
@@ -27,8 +27,9 @@ using System.IO;
 using System.Net.Sockets;
 using System.ServiceModel;
 using System.ServiceModel.Channels;
+using System.ServiceModel.Discovery;
 
-namespace System.ServiceModel.Discovery
+namespace System.ServiceModel.Discovery.Udp
 {
 	internal class UdpTransportBindingElement : TransportBindingElement
 	{
diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Version11/DiscoveryTargetClient11.cs b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Version11/DiscoveryTargetClient11.cs
index 136b3d3..2ccf435 100644
--- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Version11/DiscoveryTargetClient11.cs
+++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Version11/DiscoveryTargetClient11.cs
@@ -81,7 +81,7 @@ namespace System.ServiceModel.Discovery.Version11
 			}, null);
 			
 			if (!reply_find_handle.WaitOne (InnerChannel.OperationTimeout))
-				throw new TimeoutException ();
+				throw new EndpointNotFoundException ("The discovery client could not receive Find operation response within the operation timeout.");
 			try {
 				var ir = find_completed ();
 				var ret = new FindResponse ();
diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Version11/IDiscoveryProxyContract11.cs b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Version11/IDiscoveryProxyContract11.cs
index 8e0b9f2..9d0540e 100644
--- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Version11/IDiscoveryProxyContract11.cs
+++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Version11/IDiscoveryProxyContract11.cs
@@ -36,12 +36,12 @@ namespace System.ServiceModel.Discovery.Version11
 	[ServiceContract (Name = "DiscoveryProxy", Namespace = MessageContracts11.NS)]
 	internal interface IDiscoveryProxyContract11
 	{
-		[OperationContract (Name = "Probe", Action = MessageContracts11.ProbeAction, AsyncPattern = true, ReplyAction = MessageContracts11.ProbeMatchAction)]
+		[OperationContract (Name = "Probe11", Action = MessageContracts11.ProbeAction, AsyncPattern = true, ReplyAction = MessageContracts11.ProbeMatchAction)]
 		IAsyncResult BeginFind (MessageContracts11.FindRequest message, AsyncCallback callback, object state);
 
 		MessageContracts11.FindResponse EndFind (IAsyncResult result);
 
-		[OperationContract (Name = "Resolve", Action = MessageContracts11.ResolveAction, AsyncPattern = true, ReplyAction = MessageContracts11.ResolveMatchAction)]
+		[OperationContract (Name = "Resolve11", Action = MessageContracts11.ResolveAction, AsyncPattern = true, ReplyAction = MessageContracts11.ResolveMatchAction)]
 		IAsyncResult BeginResolve (MessageContracts11.ResolveRequest message, AsyncCallback callback, object state);
 
 		MessageContracts11.ResolveResponse EndResolve (IAsyncResult result);
diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Version11/IDiscoveryTargetContract11.cs b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Version11/IDiscoveryTargetContract11.cs
index bb59bc1..73eb013 100644
--- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Version11/IDiscoveryTargetContract11.cs
+++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Version11/IDiscoveryTargetContract11.cs
@@ -36,27 +36,27 @@ namespace System.ServiceModel.Discovery.Version11
 	[ServiceContract (Name = "TargetService", Namespace = MessageContracts11.NS, CallbackContract = typeof (IDiscoveryTargetCallbackContract11))]
 	internal interface IDiscoveryTargetContract11
 	{
-		[OperationContract (Name = "Probe", Action = MessageContracts11.ProbeAction, AsyncPattern = true, IsOneWay = true)]
+		[OperationContract (Name = "Probe11", Action = MessageContracts11.ProbeAction, AsyncPattern = true, IsOneWay = true)]
 		IAsyncResult BeginFind (MessageContracts11.FindRequest message, AsyncCallback callback, object state);
 
 		void EndFind (IAsyncResult result);
 
-		[OperationContract (Name = "ProbeMatches", Action = MessageContracts11.ProbeMatchAction, AsyncPattern = true, IsOneWay = true)]
+		[OperationContract (Name = "ProbeMatches11", Action = MessageContracts11.ProbeMatchAction, AsyncPattern = true, IsOneWay = true)]
 		IAsyncResult BeginReplyFind (MessageContracts11.FindResponse message, AsyncCallback callback, object state);
 
 		void EndReplyFind (IAsyncResult result);
 
-		[OperationContract (Name = "Resolve", Action = MessageContracts11.ResolveAction, AsyncPattern = true, IsOneWay = true)]
+		[OperationContract (Name = "Resolve11", Action = MessageContracts11.ResolveAction, AsyncPattern = true, IsOneWay = true)]
 		IAsyncResult BeginResolve (MessageContracts11.ResolveRequest message, AsyncCallback callback, object state);
 
 		void EndResolve (IAsyncResult result);
 
-		[OperationContract (Name = "ResolveMatches", Action = MessageContracts11.ResolveMatchAction, AsyncPattern = true, IsOneWay = true)]
+		[OperationContract (Name = "ResolveMatches11", Action = MessageContracts11.ResolveMatchAction, AsyncPattern = true, IsOneWay = true)]
 		IAsyncResult BeginReplyResolve (MessageContracts11.ResolveResponse message, AsyncCallback callback, object state);
 
 		void EndReplyResolve (IAsyncResult result);
 
-		[OperationContract (Name = "Hello", Action = MessageContracts11.HelloAction, IsOneWay = true, AsyncPattern = true)]
+		[OperationContract (Name = "Hello11", Action = MessageContracts11.HelloAction, IsOneWay = true, AsyncPattern = true)]
 		IAsyncResult BeginOnlineAnnouncement (MessageContracts11.OnlineAnnouncement message, AsyncCallback callback, object state);
 
 		void EndOnlineAnnouncement (IAsyncResult result);
@@ -64,10 +64,10 @@ namespace System.ServiceModel.Discovery.Version11
 
 	internal interface IDiscoveryTargetCallbackContract11
 	{
-		[OperationContract (Name = "ProbeMatches", Action = MessageContracts11.ProbeMatchAction, IsOneWay = true)]
+		[OperationContract (Name = "ProbeMatches11", Action = MessageContracts11.ProbeMatchAction, IsOneWay = true)]
 		void ReplyFind (MessageContracts11.FindResponse message);
 
-		[OperationContract (Name = "ResolveMatches", Action = MessageContracts11.ResolveMatchAction, IsOneWay = true)]
+		[OperationContract (Name = "ResolveMatches11", Action = MessageContracts11.ResolveMatchAction, IsOneWay = true)]
 		void ReplyResolve (MessageContracts11.ResolveResponse message);
 	}
 }
diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Version11/MessageContracts11.cs b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Version11/MessageContracts11.cs
index 7d27023..96ed805 100644
--- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Version11/MessageContracts11.cs
+++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.Version11/MessageContracts11.cs
@@ -78,6 +78,7 @@ namespace System.ServiceModel.Discovery.Version11
 			public FindResponse11 Body { get; set; }
 		}
 
+		[CollectionDataContract (Name = "ProbeMatches", ItemName = "ProbeMatch", Namespace = NS)]
 		public class FindResponse11 : List<EndpointDiscoveryMetadata11>
 		{
 		}
diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionApril2005/ChangeLog b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionApril2005/ChangeLog
index f1da45d..6265535 100644
--- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionApril2005/ChangeLog
+++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionApril2005/ChangeLog
@@ -1,3 +1,17 @@
+2010-09-24  Atsushi Eno  <atsushi at ximian.com>
+
+	Assign identical operation name for each contract version so that
+	they don't conflict each other.
+
+2010-09-03  Atsushi Eno  <atsushi at ximian.com>
+
+	Cosmetic exception type change and suppress test failures.
+
+2010-09-02  Atsushi Eno  <atsushi at ximian.com>
+
+	Couple of fixes in FindCriteria and relevant contract types for
+	Find operation.
+
 2010-08-30  Atsushi Eno  <atsushi at ximian.com>
 
 	Fix a couple of Hello/Probe serialization issues.
diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionApril2005/DiscoveryTargetClientApril2005.cs b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionApril2005/DiscoveryTargetClientApril2005.cs
index 2c616d3..1c640b1 100644
--- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionApril2005/DiscoveryTargetClientApril2005.cs
+++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionApril2005/DiscoveryTargetClientApril2005.cs
@@ -81,7 +81,7 @@ namespace System.ServiceModel.Discovery.VersionApril2005
 			}, null);
 			
 			if (!reply_find_handle.WaitOne (InnerChannel.OperationTimeout))
-				throw new TimeoutException ();
+				throw new EndpointNotFoundException ("The discovery client could not receive Find operation response within the operation timeout.");
 			try {
 				var ir = find_completed ();
 				var ret = new FindResponse ();
diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionApril2005/IDiscoveryProxyContractApril2005.cs b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionApril2005/IDiscoveryProxyContractApril2005.cs
index 154ab66..d58df98 100644
--- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionApril2005/IDiscoveryProxyContractApril2005.cs
+++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionApril2005/IDiscoveryProxyContractApril2005.cs
@@ -36,12 +36,12 @@ namespace System.ServiceModel.Discovery.VersionApril2005
 	[ServiceContract (Name = "DiscoveryProxy", Namespace = MessageContractsApril2005.NS)]
 	internal interface IDiscoveryProxyContractApril2005
 	{
-		[OperationContract (Name = "Probe", Action = MessageContractsApril2005.ProbeAction, AsyncPattern = true, ReplyAction = MessageContractsApril2005.ProbeMatchAction)]
+		[OperationContract (Name = "ProbeApril2005", Action = MessageContractsApril2005.ProbeAction, AsyncPattern = true, ReplyAction = MessageContractsApril2005.ProbeMatchAction)]
 		IAsyncResult BeginFind (MessageContractsApril2005.FindRequest message, AsyncCallback callback, object state);
 
 		MessageContractsApril2005.FindResponse EndFind (IAsyncResult result);
 
-		[OperationContract (Name = "Resolve", Action = MessageContractsApril2005.ResolveAction, AsyncPattern = true, ReplyAction = MessageContractsApril2005.ResolveMatchAction)]
+		[OperationContract (Name = "ResolveApril2005", Action = MessageContractsApril2005.ResolveAction, AsyncPattern = true, ReplyAction = MessageContractsApril2005.ResolveMatchAction)]
 		IAsyncResult BeginResolve (MessageContractsApril2005.ResolveRequest message, AsyncCallback callback, object state);
 
 		MessageContractsApril2005.ResolveResponse EndResolve (IAsyncResult result);
diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionApril2005/IDiscoveryTargetContractApril2005.cs b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionApril2005/IDiscoveryTargetContractApril2005.cs
index 32e359d..baf4051 100644
--- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionApril2005/IDiscoveryTargetContractApril2005.cs
+++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionApril2005/IDiscoveryTargetContractApril2005.cs
@@ -36,27 +36,27 @@ namespace System.ServiceModel.Discovery.VersionApril2005
 	[ServiceContract (Name = "TargetService", Namespace = MessageContractsApril2005.NS, CallbackContract = typeof (IDiscoveryTargetCallbackContractApril2005))]
 	internal interface IDiscoveryTargetContractApril2005
 	{
-		[OperationContract (Name = "Probe", Action = MessageContractsApril2005.ProbeAction, AsyncPattern = true, IsOneWay = true)]
+		[OperationContract (Name = "ProbeApril2005", Action = MessageContractsApril2005.ProbeAction, AsyncPattern = true, IsOneWay = true)]
 		IAsyncResult BeginFind (MessageContractsApril2005.FindRequest message, AsyncCallback callback, object state);
 
 		void EndFind (IAsyncResult result);
 
-		[OperationContract (Name = "ProbeMatches", Action = MessageContractsApril2005.ProbeMatchAction, AsyncPattern = true, IsOneWay = true)]
+		[OperationContract (Name = "ProbeMatchesApril2005", Action = MessageContractsApril2005.ProbeMatchAction, AsyncPattern = true, IsOneWay = true)]
 		IAsyncResult BeginReplyFind (MessageContractsApril2005.FindResponse message, AsyncCallback callback, object state);
 
 		void EndReplyFind (IAsyncResult result);
 
-		[OperationContract (Name = "Resolve", Action = MessageContractsApril2005.ResolveAction, AsyncPattern = true, IsOneWay = true)]
+		[OperationContract (Name = "ResolveApril2005", Action = MessageContractsApril2005.ResolveAction, AsyncPattern = true, IsOneWay = true)]
 		IAsyncResult BeginResolve (MessageContractsApril2005.ResolveRequest message, AsyncCallback callback, object state);
 
 		void EndResolve (IAsyncResult result);
 
-		[OperationContract (Name = "ResolveMatches", Action = MessageContractsApril2005.ResolveMatchAction, AsyncPattern = true, IsOneWay = true)]
+		[OperationContract (Name = "ResolveMatchesApril2005", Action = MessageContractsApril2005.ResolveMatchAction, AsyncPattern = true, IsOneWay = true)]
 		IAsyncResult BeginReplyResolve (MessageContractsApril2005.ResolveResponse message, AsyncCallback callback, object state);
 
 		void EndReplyResolve (IAsyncResult result);
 
-		[OperationContract (Name = "Hello", Action = MessageContractsApril2005.HelloAction, IsOneWay = true, AsyncPattern = true)]
+		[OperationContract (Name = "HelloApril2005", Action = MessageContractsApril2005.HelloAction, IsOneWay = true, AsyncPattern = true)]
 		IAsyncResult BeginOnlineAnnouncement (MessageContractsApril2005.OnlineAnnouncement message, AsyncCallback callback, object state);
 
 		void EndOnlineAnnouncement (IAsyncResult result);
@@ -64,10 +64,10 @@ namespace System.ServiceModel.Discovery.VersionApril2005
 
 	internal interface IDiscoveryTargetCallbackContractApril2005
 	{
-		[OperationContract (Name = "ProbeMatches", Action = MessageContractsApril2005.ProbeMatchAction, IsOneWay = true)]
+		[OperationContract (Name = "ProbeMatchesApril2005", Action = MessageContractsApril2005.ProbeMatchAction, IsOneWay = true)]
 		void ReplyFind (MessageContractsApril2005.FindResponse message);
 
-		[OperationContract (Name = "ResolveMatches", Action = MessageContractsApril2005.ResolveMatchAction, IsOneWay = true)]
+		[OperationContract (Name = "ResolveMatchesApril2005", Action = MessageContractsApril2005.ResolveMatchAction, IsOneWay = true)]
 		void ReplyResolve (MessageContractsApril2005.ResolveResponse message);
 	}
 }
diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionApril2005/MessageContractsApril2005.cs b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionApril2005/MessageContractsApril2005.cs
index 1af8c88..760202f 100644
--- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionApril2005/MessageContractsApril2005.cs
+++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionApril2005/MessageContractsApril2005.cs
@@ -78,6 +78,7 @@ namespace System.ServiceModel.Discovery.VersionApril2005
 			public FindResponseApril2005 Body { get; set; }
 		}
 
+		[CollectionDataContract (Name = "ProbeMatches", ItemName = "ProbeMatch", Namespace = NS)]
 		public class FindResponseApril2005 : List<EndpointDiscoveryMetadataApril2005>
 		{
 		}
diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionCD1/ChangeLog b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionCD1/ChangeLog
index 8dccf64..a843b27 100644
--- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionCD1/ChangeLog
+++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionCD1/ChangeLog
@@ -1,3 +1,17 @@
+2010-09-24  Atsushi Eno  <atsushi at ximian.com>
+
+	Assign identical operation name for each contract version so that
+	they don't conflict each other.
+
+2010-09-03  Atsushi Eno  <atsushi at ximian.com>
+
+	Cosmetic exception type change and suppress test failures.
+
+2010-09-02  Atsushi Eno  <atsushi at ximian.com>
+
+	Couple of fixes in FindCriteria and relevant contract types for
+	Find operation.
+
 2010-08-30  Atsushi Eno  <atsushi at ximian.com>
 
 	Fix a couple of Hello/Probe serialization issues.
diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionCD1/DiscoveryTargetClientCD1.cs b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionCD1/DiscoveryTargetClientCD1.cs
index 77931da..b36c7fc 100644
--- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionCD1/DiscoveryTargetClientCD1.cs
+++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionCD1/DiscoveryTargetClientCD1.cs
@@ -81,7 +81,7 @@ namespace System.ServiceModel.Discovery.VersionCD1
 			}, null);
 			
 			if (!reply_find_handle.WaitOne (InnerChannel.OperationTimeout))
-				throw new TimeoutException ();
+				throw new EndpointNotFoundException ("The discovery client could not receive Find operation response within the operation timeout.");
 			try {
 				var ir = find_completed ();
 				var ret = new FindResponse ();
diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionCD1/IDiscoveryProxyContractCD1.cs b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionCD1/IDiscoveryProxyContractCD1.cs
index 849ae8d..eb09386 100644
--- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionCD1/IDiscoveryProxyContractCD1.cs
+++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionCD1/IDiscoveryProxyContractCD1.cs
@@ -36,12 +36,12 @@ namespace System.ServiceModel.Discovery.VersionCD1
 	[ServiceContract (Name = "DiscoveryProxy", Namespace = MessageContractsCD1.NS)]
 	internal interface IDiscoveryProxyContractCD1
 	{
-		[OperationContract (Name = "Probe", Action = MessageContractsCD1.ProbeAction, AsyncPattern = true, ReplyAction = MessageContractsCD1.ProbeMatchAction)]
+		[OperationContract (Name = "ProbeCD1", Action = MessageContractsCD1.ProbeAction, AsyncPattern = true, ReplyAction = MessageContractsCD1.ProbeMatchAction)]
 		IAsyncResult BeginFind (MessageContractsCD1.FindRequest message, AsyncCallback callback, object state);
 
 		MessageContractsCD1.FindResponse EndFind (IAsyncResult result);
 
-		[OperationContract (Name = "Resolve", Action = MessageContractsCD1.ResolveAction, AsyncPattern = true, ReplyAction = MessageContractsCD1.ResolveMatchAction)]
+		[OperationContract (Name = "ResolveCD1", Action = MessageContractsCD1.ResolveAction, AsyncPattern = true, ReplyAction = MessageContractsCD1.ResolveMatchAction)]
 		IAsyncResult BeginResolve (MessageContractsCD1.ResolveRequest message, AsyncCallback callback, object state);
 
 		MessageContractsCD1.ResolveResponse EndResolve (IAsyncResult result);
diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionCD1/IDiscoveryTargetContractCD1.cs b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionCD1/IDiscoveryTargetContractCD1.cs
index ddccec6..a8f65de 100644
--- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionCD1/IDiscoveryTargetContractCD1.cs
+++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionCD1/IDiscoveryTargetContractCD1.cs
@@ -36,27 +36,27 @@ namespace System.ServiceModel.Discovery.VersionCD1
 	[ServiceContract (Name = "TargetService", Namespace = MessageContractsCD1.NS, CallbackContract = typeof (IDiscoveryTargetCallbackContractCD1))]
 	internal interface IDiscoveryTargetContractCD1
 	{
-		[OperationContract (Name = "Probe", Action = MessageContractsCD1.ProbeAction, AsyncPattern = true, IsOneWay = true)]
+		[OperationContract (Name = "ProbeCD1", Action = MessageContractsCD1.ProbeAction, AsyncPattern = true, IsOneWay = true)]
 		IAsyncResult BeginFind (MessageContractsCD1.FindRequest message, AsyncCallback callback, object state);
 
 		void EndFind (IAsyncResult result);
 
-		[OperationContract (Name = "ProbeMatches", Action = MessageContractsCD1.ProbeMatchAction, AsyncPattern = true, IsOneWay = true)]
+		[OperationContract (Name = "ProbeMatchesCD1", Action = MessageContractsCD1.ProbeMatchAction, AsyncPattern = true, IsOneWay = true)]
 		IAsyncResult BeginReplyFind (MessageContractsCD1.FindResponse message, AsyncCallback callback, object state);
 
 		void EndReplyFind (IAsyncResult result);
 
-		[OperationContract (Name = "Resolve", Action = MessageContractsCD1.ResolveAction, AsyncPattern = true, IsOneWay = true)]
+		[OperationContract (Name = "ResolveCD1", Action = MessageContractsCD1.ResolveAction, AsyncPattern = true, IsOneWay = true)]
 		IAsyncResult BeginResolve (MessageContractsCD1.ResolveRequest message, AsyncCallback callback, object state);
 
 		void EndResolve (IAsyncResult result);
 
-		[OperationContract (Name = "ResolveMatches", Action = MessageContractsCD1.ResolveMatchAction, AsyncPattern = true, IsOneWay = true)]
+		[OperationContract (Name = "ResolveMatchesCD1", Action = MessageContractsCD1.ResolveMatchAction, AsyncPattern = true, IsOneWay = true)]
 		IAsyncResult BeginReplyResolve (MessageContractsCD1.ResolveResponse message, AsyncCallback callback, object state);
 
 		void EndReplyResolve (IAsyncResult result);
 
-		[OperationContract (Name = "Hello", Action = MessageContractsCD1.HelloAction, IsOneWay = true, AsyncPattern = true)]
+		[OperationContract (Name = "HelloCD1", Action = MessageContractsCD1.HelloAction, IsOneWay = true, AsyncPattern = true)]
 		IAsyncResult BeginOnlineAnnouncement (MessageContractsCD1.OnlineAnnouncement message, AsyncCallback callback, object state);
 
 		void EndOnlineAnnouncement (IAsyncResult result);
@@ -64,10 +64,10 @@ namespace System.ServiceModel.Discovery.VersionCD1
 
 	internal interface IDiscoveryTargetCallbackContractCD1
 	{
-		[OperationContract (Name = "ProbeMatches", Action = MessageContractsCD1.ProbeMatchAction, IsOneWay = true)]
+		[OperationContract (Name = "ProbeMatchesCD1", Action = MessageContractsCD1.ProbeMatchAction, IsOneWay = true)]
 		void ReplyFind (MessageContractsCD1.FindResponse message);
 
-		[OperationContract (Name = "ResolveMatches", Action = MessageContractsCD1.ResolveMatchAction, IsOneWay = true)]
+		[OperationContract (Name = "ResolveMatchesCD1", Action = MessageContractsCD1.ResolveMatchAction, IsOneWay = true)]
 		void ReplyResolve (MessageContractsCD1.ResolveResponse message);
 	}
 }
diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionCD1/MessageContractsCD1.cs b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionCD1/MessageContractsCD1.cs
index a44281d..36b4bf8 100644
--- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionCD1/MessageContractsCD1.cs
+++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.VersionCD1/MessageContractsCD1.cs
@@ -78,6 +78,7 @@ namespace System.ServiceModel.Discovery.VersionCD1
 			public FindResponseCD1 Body { get; set; }
 		}
 
+		[CollectionDataContract (Name = "ProbeMatches", ItemName = "ProbeMatch", Namespace = NS)]
 		public class FindResponseCD1 : List<EndpointDiscoveryMetadataCD1>
 		{
 		}
diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.dll.sources b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.dll.sources
index 295aec9..72e9bc6 100644
--- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.dll.sources
+++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery.dll.sources
@@ -1,6 +1,3 @@
-../../build/common/Consts.cs
-../../build/common/Locale.cs
-../../build/common/MonoTODOAttribute.cs
 Assembly/AssemblyInfo.cs
 System.ServiceModel.Channels/DiscoveryChannelBase.cs
 System.ServiceModel.Channels/RequestChannelBase.cs
diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/ChangeLog b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/ChangeLog
index 984c369..b50b682 100644
--- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/ChangeLog
+++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/ChangeLog
@@ -1,3 +1,38 @@
+2011-01-08  Marek Safar  <marek.safar at gmail.com>
+
+	Fixed missing protected internal modifier
+
+2010-09-29  Atsushi Eno  <atsushi at ximian.com>
+
+	[wcf discovery] Use appropriate MessageVersion defined in
+	DiscoveryVersion.
+
+2010-09-21  Atsushi Eno  <atsushi at ximian.com>
+
+	Fix (isolate) internal namespace for Udp transport.
+
+2010-09-10  Atsushi Eno  <atsushi at ximian.com>
+
+	Cosmetic warning cleanups.
+
+2010-09-03  Atsushi Eno  <atsushi at ximian.com>
+
+	Ongoing Discovery duplex (UDP) implementation (not working yet).
+
+2010-09-02  Atsushi Eno  <atsushi at ximian.com>
+
+	Fill Duration value. Got managed mode use case working.
+
+2010-09-02  Atsushi Eno  <atsushi at ximian.com>
+
+	Couple of fixes in FindCriteria and relevant contract types for
+	Find operation.
+
+2010-09-01  Atsushi Eno  <atsushi at ximian.com>
+
+	Add a bunch of missing configuration members etc. based on
+	corcompare results.
+
 2010-09-01  Atsushi Eno  <atsushi at ximian.com>
 
 	implement Find operation in request-reply contract in Discovery
diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/DiscoveryChannelDispatcher.cs b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/DiscoveryChannelDispatcher.cs
index a88af07..82740e5 100644
--- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/DiscoveryChannelDispatcher.cs
+++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/DiscoveryChannelDispatcher.cs
@@ -60,22 +60,22 @@ namespace System.ServiceModel.Discovery
 		}
 
 		// might be different value
-		protected override TimeSpan DefaultOpenTimeout {
+		protected internal override TimeSpan DefaultOpenTimeout {
 			get { return client.Endpoint.Binding.OpenTimeout; }
 		}
 
 		// might be different value
-		protected override TimeSpan DefaultCloseTimeout {
+		protected internal override TimeSpan DefaultCloseTimeout {
 			get { return client.Endpoint.Binding.CloseTimeout; }
 		}
 
-		protected override void Attach (ServiceHostBase host)
+		protected internal override void Attach (ServiceHostBase host)
 		{
 			base.Attach (host);
 			this.host = host;
 		}
 
-		protected override void Detach (ServiceHostBase host)
+		protected internal override void Detach (ServiceHostBase host)
 		{
 			base.Detach (host);
 			this.host = null;
diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/DiscoveryEndpointProvider.cs b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/DiscoveryEndpointProvider.cs
index 65b1683..3c4c467 100755
--- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/DiscoveryEndpointProvider.cs
+++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/DiscoveryEndpointProvider.cs
@@ -29,6 +29,7 @@ using System.ServiceModel;
 using System.ServiceModel.Channels;
 using System.ServiceModel.Description;
 using System.ServiceModel.Dispatcher;
+using System.ServiceModel.Discovery.Udp;
 
 namespace System.ServiceModel.Discovery
 {
@@ -42,6 +43,21 @@ namespace System.ServiceModel.Discovery
 		public abstract DiscoveryEndpoint GetDiscoveryEndpoint ();
 	}
 
+	internal class SimpleDiscoveryEndpointProvider : DiscoveryEndpointProvider
+	{
+		public SimpleDiscoveryEndpointProvider (DiscoveryEndpoint value)
+		{
+			this.value = value;
+		}
+		
+		DiscoveryEndpoint value;
+		
+		public override DiscoveryEndpoint GetDiscoveryEndpoint ()
+		{
+			return value;
+		}
+	}
+
 	internal class UdpDiscoveryEndpointProvider : DiscoveryEndpointProvider
 	{
 		public override DiscoveryEndpoint GetDiscoveryEndpoint ()
diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/DiscoveryMessageSequenceGenerator.cs b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/DiscoveryMessageSequenceGenerator.cs
index 0e70f06..45db7db 100755
--- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/DiscoveryMessageSequenceGenerator.cs
+++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/DiscoveryMessageSequenceGenerator.cs
@@ -34,8 +34,6 @@ namespace System.ServiceModel.Discovery
 {
 	public class DiscoveryMessageSequenceGenerator
 	{
-		static readonly Random rnd = new Random ();
-
 		public DiscoveryMessageSequenceGenerator ()
 			: this (AppDomain.CurrentDomain.Id, null) // not sure what should be used for instanceId; multiple instances share the same Id
 		{
diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/DiscoveryService.cs b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/DiscoveryService.cs
index 168d61d..428de8c 100755
--- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/DiscoveryService.cs
+++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/DiscoveryService.cs
@@ -82,6 +82,11 @@ namespace System.ServiceModel.Discovery
 		MessageContracts11.FindResponse IDiscoveryProxyContract11.EndFind (IAsyncResult result)
 		{
 			OnEndFind (result);
+			return CreateFindResponse11 ();
+		}
+
+		MessageContracts11.FindResponse CreateFindResponse11 ()
+		{
 			var l = new MessageContracts11.FindResponse11 ();
 			foreach (var edm in find_context.Endpoints)
 				l.Add (new EndpointDiscoveryMetadata11 (edm));
@@ -112,6 +117,11 @@ namespace System.ServiceModel.Discovery
 		MessageContractsApril2005.FindResponse IDiscoveryProxyContractApril2005.EndFind (IAsyncResult result)
 		{
 			OnEndFind (result);
+			return CreateFindResponseApril2005 ();
+		}
+
+		MessageContractsApril2005.FindResponse CreateFindResponseApril2005 ()
+		{
 			var l = new MessageContractsApril2005.FindResponseApril2005 ();
 			foreach (var edm in find_context.Endpoints)
 				l.Add (new EndpointDiscoveryMetadataApril2005 (edm));
@@ -142,6 +152,11 @@ namespace System.ServiceModel.Discovery
 		MessageContractsCD1.FindResponse IDiscoveryProxyContractCD1.EndFind (IAsyncResult result)
 		{
 			OnEndFind (result);
+			return CreateFindResponseCD1 ();
+		}
+
+		MessageContractsCD1.FindResponse CreateFindResponseCD1 ()
+		{
 			var l = new MessageContractsCD1.FindResponseCD1 ();
 			foreach (var edm in find_context.Endpoints)
 				l.Add (new EndpointDiscoveryMetadataCD1 (edm));
@@ -163,13 +178,15 @@ namespace System.ServiceModel.Discovery
 		// IDiscoveryTargetContract11
 		IAsyncResult IDiscoveryTargetContract11.BeginFind (MessageContracts11.FindRequest message, AsyncCallback callback, object state)
 		{
+			find_context = new DefaultFindRequestContext (message.Body.ToFindCriteria ());
 			return OnBeginFind (new DefaultFindRequestContext (message.Body.ToFindCriteria ()), callback, state);
 		}
 
 		void IDiscoveryTargetContract11.EndFind (IAsyncResult result)
 		{
 			OnEndFind (result);
-			throw new NotImplementedException ();
+			var cb = OperationContext.Current.GetCallbackChannel<IDiscoveryTargetCallbackContract11> ();
+			cb.ReplyFind (CreateFindResponse11 ());
 		}
 
 		IAsyncResult IDiscoveryTargetContract11.BeginReplyFind (MessageContracts11.FindResponse message, AsyncCallback callback, object state)
@@ -221,12 +238,15 @@ namespace System.ServiceModel.Discovery
 		// IDiscoveryTargetContractApril2005
 		IAsyncResult IDiscoveryTargetContractApril2005.BeginFind (MessageContractsApril2005.FindRequest message, AsyncCallback callback, object state)
 		{
+			find_context = new DefaultFindRequestContext (message.Body.ToFindCriteria ());
 			return OnBeginFind (new DefaultFindRequestContext (message.Body.ToFindCriteria ()), callback, state);
 		}
 
 		void IDiscoveryTargetContractApril2005.EndFind (IAsyncResult result)
 		{
 			OnEndFind (result);
+			var cb = OperationContext.Current.GetCallbackChannel<IDiscoveryTargetCallbackContractApril2005> ();
+			cb.ReplyFind (CreateFindResponseApril2005 ());
 		}
 
 		IAsyncResult IDiscoveryTargetContractApril2005.BeginReplyFind (MessageContractsApril2005.FindResponse message, AsyncCallback callback, object state)
@@ -278,12 +298,15 @@ namespace System.ServiceModel.Discovery
 		// IDiscoveryTargetContractCD1
 		IAsyncResult IDiscoveryTargetContractCD1.BeginFind (MessageContractsCD1.FindRequest message, AsyncCallback callback, object state)
 		{
+			find_context = new DefaultFindRequestContext (message.Body.ToFindCriteria ());
 			return OnBeginFind (new DefaultFindRequestContext (message.Body.ToFindCriteria ()), callback, state);
 		}
 
 		void IDiscoveryTargetContractCD1.EndFind (IAsyncResult result)
 		{
 			OnEndFind (result);
+			var cb = OperationContext.Current.GetCallbackChannel<IDiscoveryTargetCallbackContractCD1> ();
+			cb.ReplyFind (CreateFindResponseCD1 ());
 		}
 
 		IAsyncResult IDiscoveryTargetContractCD1.BeginReplyFind (MessageContractsCD1.FindResponse message, AsyncCallback callback, object state)
@@ -369,6 +392,12 @@ namespace System.ServiceModel.Discovery
 			default:
 				break;
 			}
+
+			var oc = OperationContext.Current;
+			var rmp = oc.IncomingMessageProperties [RemoteEndpointMessageProperty.Name] as RemoteEndpointMessageProperty;
+			if (rmp != null)
+				// FIXME: use appropriate port. Client does not listen at the sending port.
+				oc.OutgoingMessageProperties.Add (RemoteEndpointMessageProperty.Name, new RemoteEndpointMessageProperty (rmp.Address, rmp.Port));
 		}
 
 		protected override IAsyncResult OnBeginResolve (ResolveCriteria resolveCriteria, AsyncCallback callback, object state)
diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/EndpointDiscoveryBehavior.cs b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/EndpointDiscoveryBehavior.cs
index 8fb8014..91069d2 100755
--- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/EndpointDiscoveryBehavior.cs
+++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/EndpointDiscoveryBehavior.cs
@@ -41,6 +41,7 @@ namespace System.ServiceModel.Discovery
 			Enabled = true;
 			ContractTypeNames = new Collection<XmlQualifiedName> ();
 			Extensions = new Collection<XElement> ();
+			Scopes = new Collection<Uri> ();
 		}
 
 		public Collection<XmlQualifiedName> ContractTypeNames { get; private set; }
@@ -49,6 +50,8 @@ namespace System.ServiceModel.Discovery
 
 		public Collection<XElement> Extensions { get; private set; }
 
+		public Collection<Uri> Scopes { get; private set; }
+
 		void IEndpointBehavior.AddBindingParameters (ServiceEndpoint endpoint, BindingParameterCollection bindingParameters)
 		{
 		}
diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/FindCriteria.cs b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/FindCriteria.cs
index 4d23634..c8104b1 100755
--- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/FindCriteria.cs
+++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/FindCriteria.cs
@@ -70,7 +70,9 @@ namespace System.ServiceModel.Discovery
 			ContractTypeNames = new Collection<XmlQualifiedName> ();
 			Extensions = new Collection<XElement> ();
 			Scopes = new Collection<Uri> ();
+			ScopeMatchBy = ScopeMatchByPrefix;
 			MaxResults = default_max_results;
+			Duration = TimeSpan.FromSeconds (20);
 		}
 
 		public FindCriteria (Type contractType)
@@ -93,22 +95,22 @@ namespace System.ServiceModel.Discovery
 			var edm = endpointDiscoveryMetadata;
 			if (edm == null)
 				throw new ArgumentNullException ("endpointDiscoveryMetadata");
-			if (edm.ContractTypeNames.Count > 0) {
+			if (ContractTypeNames.Count > 0) {
 				bool match = false;
-				foreach (var qn in edm.ContractTypeNames)
-					if (ContractTypeNames.Contains (qn))
+				foreach (var qn in ContractTypeNames)
+					if (edm.ContractTypeNames.Contains (qn))
 						match = true;
 				if (!match)
 					return false;
 			}
-			if (edm.Scopes.Count > 0) {
+			if (Scopes.Count > 0) {
 				bool match = false;
-				foreach (var scope in edm.Scopes) {
+				foreach (var scope in Scopes) {
 					if (ScopeMatchBy == null || ScopeMatchBy.Equals (ScopeMatchByPrefix)) {
-						if (Scopes.Contains (scope))
+						if (edm.Scopes.Contains (scope))
 							match = true;
 					} else if (ScopeMatchBy.Equals (ScopeMatchByExact)) {
-						if (Scopes.Any (s => s.AbsoluteUri == scope.AbsoluteUri))
+						if (edm.Scopes.Any (s => s.AbsoluteUri == scope.AbsoluteUri))
 							match = true;
 					}
 					else if (ScopeMatchBy.Equals (ScopeMatchByUuid))
@@ -124,7 +126,7 @@ namespace System.ServiceModel.Discovery
 					return false;
 			}
 			if (Extensions.Count > 0)
-				throw new NotImplementedException ();
+				throw new NotImplementedException (String.Format ("{0} extensions are found", Extensions.Count));
 
 			return true;
 		}
@@ -152,8 +154,9 @@ namespace System.ServiceModel.Discovery
 					ret.ScopeMatchBy = new Uri (reader.Value, UriKind.RelativeOrAbsolute);
 					reader.MoveToElement ();
 				}
-				ret.Scopes = new Collection<Uri> ((Uri []) reader.ReadElementContentAs (typeof (Uri []), null, "Scopes", version.Namespace));
 			}
+			if (reader.IsStartElement ("Scopes", version.Namespace))
+				ret.Scopes = new Collection<Uri> ((Uri []) reader.ReadElementContentAs (typeof (Uri []), null, "Scopes", version.Namespace));
 
 			// non-standard members
 			for (reader.MoveToContent (); !reader.EOF && reader.NodeType != XmlNodeType.EndElement; reader.MoveToContent ()) {
diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/UdpAnnouncementEndpoint.cs b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/UdpAnnouncementEndpoint.cs
index 6b7d003..14f0781 100755
--- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/UdpAnnouncementEndpoint.cs
+++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/UdpAnnouncementEndpoint.cs
@@ -30,6 +30,7 @@ using System.ServiceModel;
 using System.ServiceModel.Channels;
 using System.ServiceModel.Description;
 using System.ServiceModel.Dispatcher;
+using System.ServiceModel.Discovery.Udp;
 
 namespace System.ServiceModel.Discovery
 {
@@ -74,7 +75,7 @@ namespace System.ServiceModel.Discovery
 
 		// (6), everything falls to here
 		public UdpAnnouncementEndpoint (DiscoveryVersion discoveryVersion, Uri multicastAddress)
-			: base (discoveryVersion, CreateBinding (), new EndpointAddress (discoveryVersion.AdhocAddress))
+			: base (discoveryVersion, CreateBinding (discoveryVersion), new EndpointAddress (discoveryVersion.AdhocAddress))
 		{
 			ListenUri = multicastAddress;
 			TransportSettings = new UdpTransportSettings ();
@@ -83,9 +84,11 @@ namespace System.ServiceModel.Discovery
 			Behaviors.Add (new DiscoveryViaUriBehavior (multicastAddress));
 		}
 
-		static Binding CreateBinding ()
+		static Binding CreateBinding (DiscoveryVersion discoveryVersion)
 		{
-			return new CustomBinding (new TextMessageEncodingBindingElement (), new UdpTransportBindingElement ()) { SendTimeout = TimeSpan.FromMinutes (1), ReceiveTimeout = TimeSpan.FromMinutes (10) };
+			var mbe = new TextMessageEncodingBindingElement () {MessageVersion = discoveryVersion.MessageVersion};
+			var tbe = new UdpTransportBindingElement ();
+			return new CustomBinding (mbe, tbe) {SendTimeout = TimeSpan.FromMinutes (1), ReceiveTimeout = TimeSpan.FromMinutes (10)};
 		}
 
 		public Uri MulticastAddress { get; set; }
diff --git a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/UdpDiscoveryEndpoint.cs b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/UdpDiscoveryEndpoint.cs
index 2a80f94..582a4ca 100755
--- a/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/UdpDiscoveryEndpoint.cs
+++ b/mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery/UdpDiscoveryEndpoint.cs
@@ -30,6 +30,7 @@ using System.ServiceModel;
 using System.ServiceModel.Channels;
 using System.ServiceModel.Description;
 using System.ServiceModel.Dispatcher;
+using System.ServiceModel.Discovery.Udp;
 
 namespace System.ServiceModel.Discovery
 {
@@ -74,7 +75,7 @@ namespace System.ServiceModel.Discovery
 
 		// (6), everything falls to here.
 		public UdpDiscoveryEndpoint (DiscoveryVersion discoveryVersion, Uri multicastAddress)
-			: base (discoveryVersion, ServiceDiscoveryMode.Adhoc, CreateBinding (), new EndpointAddress (discoveryVersion.AdhocAddress))
+			: base (discoveryVersion, ServiceDiscoveryMode.Adhoc, CreateBinding (discoveryVersion), new EndpointAddress (discoveryVersion.AdhocAddress))
 		{
 			ListenUri = multicastAddress;
 			TransportSettings = new UdpTransportSettings ();
@@ -83,9 +84,11 @@ namespace System.ServiceModel.Discovery
 			Behaviors.Add (new DiscoveryViaUriBehavior (multicastAddress));
 		}
 
-		static Binding CreateBinding ()
+		static Binding CreateBinding (DiscoveryVersion discoveryVersion)
 		{
-			return new CustomBinding (new TextMessageEncodingBindingElement (), new UdpTransportBindingElement ()) { SendTimeout = TimeSpan.FromMinutes (1), ReceiveTimeout = TimeSpan.FromMinutes (10) };
+			var mbe = new TextMessageEncodingBindingElement () {MessageVersion = discoveryVersion.MessageVersion};
+			var tbe = new UdpTransportBindingElement ();
+			return new CustomBinding (mbe, tbe) {SendTimeout = TimeSpan.FromMinutes (1), ReceiveTimeout = TimeSpan.FromMinutes (10)};
 		}
 
 		public Uri MulticastAddress { get; set; }
diff --git a/mcs/class/System.ServiceModel.Discovery/Test/System.ServiceModel.Discovery/ChangeLog b/mcs/class/System.ServiceModel.Discovery/Test/System.ServiceModel.Discovery/ChangeLog
index ad7df01..17be62e 100644
--- a/mcs/class/System.ServiceModel.Discovery/Test/System.ServiceModel.Discovery/ChangeLog
+++ b/mcs/class/System.ServiceModel.Discovery/Test/System.ServiceModel.Discovery/ChangeLog
@@ -1,3 +1,21 @@
+2010-09-03  Atsushi Eno  <atsushi at ximian.com>
+
+	Ongoing Discovery duplex (UDP) implementation (not working yet).
+
+2010-09-02  Atsushi Eno  <atsushi at ximian.com>
+
+	Close AnnouncementService in the test cases. Assert that relevant
+	ports become available.
+
+2010-09-02  Atsushi Eno  <atsushi at ximian.com>
+
+	Fill Duration value. Got managed mode use case working.
+
+2010-09-02  Atsushi Eno  <atsushi at ximian.com>
+
+	Couple of fixes in FindCriteria and relevant contract types for
+	Find operation.
+
 2010-08-31  Atsushi Eno  <atsushi at ximian.com>
 
 	Avoid NRE when converting contract-based instances to
diff --git a/mcs/class/System.ServiceModel.Discovery/Test/System.ServiceModel.Discovery/FindCriteriaTest.cs b/mcs/class/System.ServiceModel.Discovery/Test/System.ServiceModel.Discovery/FindCriteriaTest.cs
index 53bf01b..cb2b271 100755
--- a/mcs/class/System.ServiceModel.Discovery/Test/System.ServiceModel.Discovery/FindCriteriaTest.cs
+++ b/mcs/class/System.ServiceModel.Discovery/Test/System.ServiceModel.Discovery/FindCriteriaTest.cs
@@ -23,5 +23,16 @@ namespace MonoTests.System.ServiceModel.Discovery
 			Assert.AreEqual ("http://docs.oasis-open.org/ws-dd/ns/discovery/2009/01/rfc3986", FindCriteria.ScopeMatchByPrefix.ToString (), "#4");
 			Assert.AreEqual ("http://docs.oasis-open.org/ws-dd/ns/discovery/2009/01/uuid", FindCriteria.ScopeMatchByUuid.ToString (), "#5");
 		}
+
+		[Test]
+		public void DefaultValues ()
+		{
+			var fc = new FindCriteria ();
+			Assert.AreEqual (int.MaxValue, fc.MaxResults, "#1");
+			Assert.IsNotNull (fc.ContractTypeNames, "#2");
+			Assert.IsNotNull (fc.Scopes, "#3");
+			Assert.AreEqual (FindCriteria.ScopeMatchByPrefix, fc.ScopeMatchBy, "#4");
+			Assert.AreEqual (TimeSpan.FromSeconds (20), fc.Duration, "#5");
+		}
 	}
 }
diff --git a/mcs/class/System.ServiceModel.Discovery/Test/System.ServiceModel.Discovery/IntegratedDiscoveryTest.cs b/mcs/class/System.ServiceModel.Discovery/Test/System.ServiceModel.Discovery/IntegratedDiscoveryTest.cs
index d4ca3fa..a7f6a87 100644
--- a/mcs/class/System.ServiceModel.Discovery/Test/System.ServiceModel.Discovery/IntegratedDiscoveryTest.cs
+++ b/mcs/class/System.ServiceModel.Discovery/Test/System.ServiceModel.Discovery/IntegratedDiscoveryTest.cs
@@ -26,6 +26,7 @@ using System;
 using System.Collections.Generic;
 using System.Collections.ObjectModel;
 using System.IO;
+using System.Net.Sockets;
 using System.ServiceModel;
 using System.ServiceModel.Channels;
 using System.ServiceModel.Description;
@@ -39,10 +40,24 @@ namespace MonoTests.System.ServiceModel.Discovery
 	[TestFixture]
 	public class IntegratedDiscoveryTest
 	{
+		void AssertTcpPortOpen (int port)
+		{
+			try {
+				var l = new TcpListener (port);
+				l.Start ();
+				l.Stop ();
+			} catch (Exception ex) {
+				Assert.Fail (String.Format ("TCP port {0} is not freed", port));
+			}
+		}
+
 		[Test]
 		public void UseCase1 ()
 		{
-			RunCodeUnderDiscoveryHost (new Uri ("http://localhost:37564"), new Uri ("http://localhost:4949"), new Uri ("http://localhost:4989"), UseCase1Core);
+			RunCodeUnderDiscoveryHost1 (new Uri ("http://localhost:37564"), new Uri ("http://localhost:4949"), new Uri ("http://localhost:4989"), UseCase1Core);
+			AssertTcpPortOpen (4949);
+			AssertTcpPortOpen (4989);
+			AssertTcpPortOpen (37564);
 		}
 
 		void UseCase1Core (Uri serviceUri, AnnouncementEndpoint aEndpoint, DiscoveryEndpoint dEndpoint)
@@ -56,42 +71,83 @@ namespace MonoTests.System.ServiceModel.Discovery
 			host.Open ();
 			// It does not start announcement very soon, so wait for a while.
 			Thread.Sleep (1000);
-			foreach (var edm in host.Extensions.Find<DiscoveryServiceExtension> ().PublishedEndpoints)
-				TextWriter.Null.WriteLine ("Published Endpoint: " + edm.Address);
 			try {
 				// actual client, with DiscoveryClientBindingElement
-				var be = new DiscoveryClientBindingElement () { DiscoveryEndpointProvider = new ManagedDiscoveryEndpointProvider (dEndpoint) };
+				var be = new DiscoveryClientBindingElement () { DiscoveryEndpointProvider = new SimpleDiscoveryEndpointProvider (dEndpoint) };
 				var clientBinding = new CustomBinding (new BasicHttpBinding ());
 				clientBinding.Elements.Insert (0, be);
 				var cf = new ChannelFactory<ITestService> (clientBinding, DiscoveryClientBindingElement.DiscoveryEndpointAddress);
 				var ch = cf.CreateChannel ();
 				Assert.AreEqual ("TEST", ch.Echo ("TEST"), "#1");
+				cf.Close ();
 			} finally {
 				host.Close ();
 			}
 		}
 
-		class ManagedDiscoveryEndpointProvider : DiscoveryEndpointProvider
+		void RunCodeUnderDiscoveryHost1 (Uri serviceUri, Uri dHostUri, Uri aHostUri, Action<Uri,AnnouncementEndpoint,DiscoveryEndpoint> action)
 		{
-			public ManagedDiscoveryEndpointProvider (DiscoveryEndpoint endpoint)
-			{
-				this.endpoint = endpoint;
-			}
-			
-			DiscoveryEndpoint endpoint;
+			// announcement service
+			var abinding = new CustomBinding (new HttpTransportBindingElement ());
+			var aAddress = new EndpointAddress (aHostUri);
+			var aEndpoint = new AnnouncementEndpoint (abinding, aAddress);
 			
-			public override DiscoveryEndpoint GetDiscoveryEndpoint ()
-			{
-				return endpoint;
+			// discovery service
+			var dbinding = new CustomBinding (new HttpTransportBindingElement ());
+			var dAddress = new EndpointAddress (dHostUri);
+			var dEndpoint = new DiscoveryEndpoint (dbinding, dAddress);
+			// Without this, .NET rejects the host as if it had no service.
+			dEndpoint.IsSystemEndpoint = false;
+
+			// it internally hosts an AnnouncementService
+			using (var inst = new AnnouncementBoundDiscoveryService (aEndpoint)) {
+				var host = new ServiceHost (inst);
+				host.AddServiceEndpoint (dEndpoint);
+				try {
+					host.Open ();
+					action (serviceUri, aEndpoint, dEndpoint);
+				} finally {
+					host.Close ();
+				}
 			}
 		}
 
-		void RunCodeUnderDiscoveryHost (Uri serviceUri, Uri dHostUri, Uri aHostUri, Action<Uri,AnnouncementEndpoint,DiscoveryEndpoint> action)
+		[Test] // Announcement: UDP, Discovery: HTTP
+		public void UseCase2 ()
+		{
+			RunCodeUnderDiscoveryHost2 (new Uri ("http://localhost:37564"), new Uri ("http://localhost:4949"), UseCase2Core);
+			AssertTcpPortOpen (4949);
+			AssertTcpPortOpen (37564);
+		}
+
+		void UseCase2Core (Uri serviceUri, AnnouncementEndpoint aEndpoint, DiscoveryEndpoint dEndpoint)
+		{
+			// actual service, announcing to UDP
+			var host = new ServiceHost (typeof (TestService));
+			var sdb = new ServiceDiscoveryBehavior ();
+			sdb.AnnouncementEndpoints.Add (aEndpoint);
+			host.Description.Behaviors.Add (sdb);
+			host.AddServiceEndpoint (typeof (ITestService), new BasicHttpBinding (), serviceUri);
+			host.Open ();
+			// It does not start announcement very soon, so wait for a while.
+			Thread.Sleep (1000);
+			try {
+				// actual client, with DiscoveryClientBindingElement
+				var be = new DiscoveryClientBindingElement () { DiscoveryEndpointProvider = new SimpleDiscoveryEndpointProvider (dEndpoint) };
+				var clientBinding = new CustomBinding (new BasicHttpBinding ());
+				clientBinding.Elements.Insert (0, be);
+				var cf = new ChannelFactory<ITestService> (clientBinding, DiscoveryClientBindingElement.DiscoveryEndpointAddress);
+				var ch = cf.CreateChannel ();
+				Assert.AreEqual ("TEST", ch.Echo ("TEST"), "#1");
+			} finally {
+				host.Close ();
+			}
+		}
+
+		void RunCodeUnderDiscoveryHost2 (Uri serviceUri, Uri dHostUri, Action<Uri,AnnouncementEndpoint,DiscoveryEndpoint> action)
 		{
 			// announcement service
-			var abinding = new CustomBinding (new HttpTransportBindingElement ());
-			var aAddress = new EndpointAddress (aHostUri);
-			var aEndpoint = new AnnouncementEndpoint (abinding, aAddress);
+			var aEndpoint = new UdpAnnouncementEndpoint (new Uri ("soap.udp://239.255.255.250:3802/"));
 			
 			// discovery service
 			var dbinding = new CustomBinding (new HttpTransportBindingElement ());
@@ -101,14 +157,89 @@ namespace MonoTests.System.ServiceModel.Discovery
 			dEndpoint.IsSystemEndpoint = false;
 
 			// it internally hosts an AnnouncementService
-			var host = new ServiceHost (new AnnouncementBoundDiscoveryService (aEndpoint));
-			host.AddServiceEndpoint (dEndpoint);
+			using (var inst = new AnnouncementBoundDiscoveryService (aEndpoint)) {
+				var host = new ServiceHost (inst);
+				host.AddServiceEndpoint (dEndpoint);
+				try {
+					host.Open ();
+					action (serviceUri, aEndpoint, dEndpoint);
+				} finally {
+					host.Close ();
+				}
+			}
+		}
+
+		[Test]
+		public void UseCase3 ()
+		{
+			RunCodeUnderDiscoveryHost3 (new Uri ("http://localhost:37564"), new Uri ("http://localhost:4989"), UseCase3Core);
+			AssertTcpPortOpen (4989);
+			AssertTcpPortOpen (37564);
+		}
+
+		void UseCase3Core (Uri serviceUri, AnnouncementEndpoint aEndpoint, DiscoveryEndpoint dEndpoint)
+		{
+			// actual service, announcing to 4989
+			var host = new ServiceHost (typeof (TestService));
+			var sdb = new ServiceDiscoveryBehavior ();
+			sdb.AnnouncementEndpoints.Add (aEndpoint);
+			host.Description.Behaviors.Add (sdb);
+			host.AddServiceEndpoint (typeof (ITestService), new BasicHttpBinding (), serviceUri);
 			host.Open ();
+			// It does not start announcement very soon, so wait for a while.
+			Thread.Sleep (1000);
 			try {
-				action (serviceUri, aEndpoint, dEndpoint);
+				// actual client, with DiscoveryClientBindingElement
+				var be = new DiscoveryClientBindingElement () { DiscoveryEndpointProvider = new SimpleDiscoveryEndpointProvider (dEndpoint) };
+				var clientBinding = new CustomBinding (new BasicHttpBinding ());
+				clientBinding.Elements.Insert (0, be);
+				var cf = new ChannelFactory<ITestService> (clientBinding, DiscoveryClientBindingElement.DiscoveryEndpointAddress);
+				var ch = cf.CreateChannel ();
+				Assert.AreEqual ("TEST", ch.Echo ("TEST"), "#1");
+				cf.Close ();
 			} finally {
 				host.Close ();
 			}
 		}
+
+		void RunCodeUnderDiscoveryHost3 (Uri serviceUri, Uri aHostUri, Action<Uri,AnnouncementEndpoint,DiscoveryEndpoint> action)
+		{
+			// announcement service
+			var abinding = new CustomBinding (new HttpTransportBindingElement ());
+			var aAddress = new EndpointAddress (aHostUri);
+			var aEndpoint = new AnnouncementEndpoint (abinding, aAddress);
+			
+			// discovery service
+			var dEndpoint = new UdpDiscoveryEndpoint (DiscoveryVersion.WSDiscovery11, new Uri ("soap.udp://239.255.255.250:3802/"));
+			// Without this, .NET rejects the host as if it had no service.
+			dEndpoint.IsSystemEndpoint = false;
+
+			// it internally hosts an AnnouncementService
+			using (var inst = new AnnouncementBoundDiscoveryService (aEndpoint)) {
+				var host = new ServiceHost (inst);
+				host.AddServiceEndpoint (dEndpoint);
+				try {
+					host.Open ();
+					action (serviceUri, aEndpoint, dEndpoint);
+				} finally {
+					host.Close ();
+				}
+			}
+		}
+
+		class SimpleDiscoveryEndpointProvider : DiscoveryEndpointProvider
+		{
+			public SimpleDiscoveryEndpointProvider (DiscoveryEndpoint endpoint)
+			{
+				this.endpoint = endpoint;
+			}
+			
+			DiscoveryEndpoint endpoint;
+			
+			public override DiscoveryEndpoint GetDiscoveryEndpoint ()
+			{
+				return endpoint;
+			}
+		}
 	}
 }
diff --git a/mcs/class/System.ServiceModel.Routing/System.ServiceModel.Routing.Configuration/ChangeLog b/mcs/class/System.ServiceModel.Routing/System.ServiceModel.Routing.Configuration/ChangeLog
index d83b00b..62fc406 100644
--- a/mcs/class/System.ServiceModel.Routing/System.ServiceModel.Routing.Configuration/ChangeLog
+++ b/mcs/class/System.ServiceModel.Routing/System.ServiceModel.Routing.Configuration/ChangeLog
@@ -1,3 +1,7 @@
+2011-01-08  Marek Safar  <marek.safar at gmail.com>
+
+	Fixed missing protected internal modifier
+
 2010-06-03  Atsushi Enomoto  <atsushi at ximian.com>
 
 	* BackupEndpointCollection.cs
diff --git a/mcs/class/System.ServiceModel.Routing/System.ServiceModel.Routing.Configuration/ChangeLog b/mcs/class/System.ServiceModel.Routing/System.ServiceModel.Routing.Configuration/ChangeLog.old
similarity index 100%
copy from mcs/class/System.ServiceModel.Routing/System.ServiceModel.Routing.Configuration/ChangeLog
copy to mcs/class/System.ServiceModel.Routing/System.ServiceModel.Routing.Configuration/ChangeLog.old
diff --git a/mcs/class/System.ServiceModel.Routing/System.ServiceModel.Routing.Configuration/RoutingExtensionElement.cs b/mcs/class/System.ServiceModel.Routing/System.ServiceModel.Routing.Configuration/RoutingExtensionElement.cs
index 2aca3ef..93666e2 100644
--- a/mcs/class/System.ServiceModel.Routing/System.ServiceModel.Routing.Configuration/RoutingExtensionElement.cs
+++ b/mcs/class/System.ServiceModel.Routing/System.ServiceModel.Routing.Configuration/RoutingExtensionElement.cs
@@ -34,7 +34,7 @@ namespace System.ServiceModel.Routing.Configuration
 			set { base ["soapProcessingEnabled"] = value; }
 		}
 
-		protected override object CreateBehavior ()
+		protected internal override object CreateBehavior ()
 		{
 			var table = RoutingSection.CreateFilterTable (FilterTableName);
 
diff --git a/mcs/class/System.ServiceModel.Routing/System.ServiceModel.Routing.Configuration/SoapProcessingExtensionElement.cs b/mcs/class/System.ServiceModel.Routing/System.ServiceModel.Routing.Configuration/SoapProcessingExtensionElement.cs
index 3694864..e21dbc9 100644
--- a/mcs/class/System.ServiceModel.Routing/System.ServiceModel.Routing.Configuration/SoapProcessingExtensionElement.cs
+++ b/mcs/class/System.ServiceModel.Routing/System.ServiceModel.Routing.Configuration/SoapProcessingExtensionElement.cs
@@ -22,7 +22,7 @@ namespace System.ServiceModel.Routing.Configuration
 			set { base ["processMessages"] = value; }
 		}
 
-		protected override object CreateBehavior ()
+		protected internal override object CreateBehavior ()
 		{
 			return new SoapProcessingBehavior () { ProcessMessages = this.ProcessMessages };
 		}
diff --git a/mcs/class/System.ServiceModel.Routing/System.ServiceModel.Routing/ChangeLog b/mcs/class/System.ServiceModel.Routing/System.ServiceModel.Routing/ChangeLog
index 99e1a1a..cba3652 100644
--- a/mcs/class/System.ServiceModel.Routing/System.ServiceModel.Routing/ChangeLog
+++ b/mcs/class/System.ServiceModel.Routing/System.ServiceModel.Routing/ChangeLog
@@ -1,3 +1,7 @@
+2010-10-15  Marek Safar  <marek.safar at gmail.com>
+
+	Clean up few more warnings
+
 2009-12-10  Atsushi Enomoto  <atsushi at ximian.com>
 
 	* IDuplexSessionRouter.cs
diff --git a/mcs/class/System.ServiceModel.Routing/System.ServiceModel.Routing/ChangeLog b/mcs/class/System.ServiceModel.Routing/System.ServiceModel.Routing/ChangeLog.old
similarity index 100%
copy from mcs/class/System.ServiceModel.Routing/System.ServiceModel.Routing/ChangeLog
copy to mcs/class/System.ServiceModel.Routing/System.ServiceModel.Routing/ChangeLog.old
diff --git a/mcs/class/System.ServiceModel.Routing/System.ServiceModel.Routing/RoutingService.cs b/mcs/class/System.ServiceModel.Routing/System.ServiceModel.Routing/RoutingService.cs
index 83e4b8c..984f9a3 100644
--- a/mcs/class/System.ServiceModel.Routing/System.ServiceModel.Routing/RoutingService.cs
+++ b/mcs/class/System.ServiceModel.Routing/System.ServiceModel.Routing/RoutingService.cs
@@ -91,7 +91,7 @@ namespace System.ServiceModel.Routing
 			return ret;
 		}
 
-		static readonly MethodInfo create_factory_method = typeof (ChannelFactory).GetMethod ("CreateFactory", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
+//		static readonly MethodInfo create_factory_method = typeof (ChannelFactory).GetMethod ("CreateFactory", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
 
 		void ProcessMessageDuplexSession (Message message)
 		{
diff --git a/mcs/class/System.ServiceModel.Web/Assembly/AssemblyInfo.cs b/mcs/class/System.ServiceModel.Web/Assembly/AssemblyInfo.cs
index 6f50d3b..d90adb2 100644
--- a/mcs/class/System.ServiceModel.Web/Assembly/AssemblyInfo.cs
+++ b/mcs/class/System.ServiceModel.Web/Assembly/AssemblyInfo.cs
@@ -63,6 +63,7 @@ using System.Runtime.InteropServices;
 #if NET_2_1
 [assembly: InternalsVisibleTo ("System.Json, PublicKey=0024000004800000940000000602000000240000525341310004000001000100b5fc90e7027f67871e773a8fde8938c81dd402ba65b9201d60593e96c492651e889cc13f1415ebb53fac1131ae0bd333c5ee6021672d9718ea31a8aebd0da0072f25d87dba6fc90ffd598ed4da35e44c398c454307e8e33b8426143daec9f596836f97c8f74750e5975c64e2189f45def46b2a2b1247adc3652bf5c308055da9")]
 [assembly: InternalsVisibleTo ("System.ServiceModel.Web.Extensions, PublicKey=0024000004800000940000000602000000240000525341310004000001000100b5fc90e7027f67871e773a8fde8938c81dd402ba65b9201d60593e96c492651e889cc13f1415ebb53fac1131ae0bd333c5ee6021672d9718ea31a8aebd0da0072f25d87dba6fc90ffd598ed4da35e44c398c454307e8e33b8426143daec9f596836f97c8f74750e5975c64e2189f45def46b2a2b1247adc3652bf5c308055da9")]
+[assembly: InternalsVisibleTo ("System.Windows.Browser, PublicKey=00240000048000009400000006020000002400005253413100040000010001008D56C76F9E8649383049F383C44BE0EC204181822A6C31CF5EB7EF486944D032188EA1D3920763712CCB12D75FB77E9811149E6148E5D32FBAAB37611C1878DDC19E20EF135D0CB2CFF2BFEC3D115810C3D9069638FE4BE215DBF795861920E5AB6F7DB2E2CEEF136AC23D5DD2BF031700AEC232F6C6B1C785B4305C123B37AB")]
 #else
 [assembly: InternalsVisibleTo ("dummy-System.Json, PublicKey=00240000048000009400000006020000002400005253413100040000010001008D56C76F9E8649383049F383C44BE0EC204181822A6C31CF5EB7EF486944D032188EA1D3920763712CCB12D75FB77E9811149E6148E5D32FBAAB37611C1878DDC19E20EF135D0CB2CFF2BFEC3D115810C3D9069638FE4BE215DBF795861920E5AB6F7DB2E2CEEF136AC23D5DD2BF031700AEC232F6C6B1C785B4305C123B37AB")]
 #endif
diff --git a/mcs/class/System.ServiceModel.Web/Assembly/ChangeLog b/mcs/class/System.ServiceModel.Web/Assembly/ChangeLog
index e699e90..b7c1cca 100644
--- a/mcs/class/System.ServiceModel.Web/Assembly/ChangeLog
+++ b/mcs/class/System.ServiceModel.Web/Assembly/ChangeLog
@@ -1,3 +1,17 @@
+2010-10-15  Andreia Gaita  <shana at jitted.com>
+
+	[Json] Add support for calling external json (de)serialization
+	methods
+
+	On Moonlight, ScriptObject types have custom (de)serialization
+	methods that need to be called whenever a user object includes
+	properties of that type. This patch creates a TypeMap subclass
+	(ExternalTypeMap) and exposes a method that can be called from
+	moon's System.Windows.Browser to register custom serialization and
+	deserialization methods, keyed by type. These are called whenever
+	a property is found with a type (or base type) that has custom
+	methods registered.
+
 2010-08-27  Sebastien Pouliot  <sebastien at ximian.com>
 
 	Fix public key in [InternalsVisibleTo] attribute
diff --git a/mcs/class/System.ServiceModel.Web/ChangeLog b/mcs/class/System.ServiceModel.Web/ChangeLog
index d0c6088..05ea02e 100644
--- a/mcs/class/System.ServiceModel.Web/ChangeLog
+++ b/mcs/class/System.ServiceModel.Web/ChangeLog
@@ -1,3 +1,35 @@
+2010-10-15  Andreia Gaita  <shana at jitted.com>
+
+	[Json] Add support for calling external json (de)serialization
+	methods
+
+	On Moonlight, ScriptObject types have custom (de)serialization
+	methods that need to be called whenever a user object includes
+	properties of that type. This patch creates a TypeMap subclass
+	(ExternalTypeMap) and exposes a method that can be called from
+	moon's System.Windows.Browser to register custom serialization and
+	deserialization methods, keyed by type. These are called whenever
+	a property is found with a type (or base type) that has custom
+	methods registered.
+
+2010-09-13  Atsushi Eno  <atsushi at ximian.com>
+
+	implemented large parts of WCF standard endpoints and
+	configuration support.
+
+2010-09-08  Jb Evain  <jbevain at gmail.com>
+
+	Fix the mobile_System.ServiceModel.Web include
+
+2010-09-08  Jb Evain  <jbevain at gmail.com>
+
+	Factorize the System.ServiceModel.Web monotouch and monodroid
+	sources into a mobile.sources
+
+2010-09-08  Jb Evain  <jbevain at gmail.com>
+
+	Enable the System.ServiceModel.Web build for monodroid
+
 2010-03-12  Atsushi Enomoto  <atsushi at ximian.com>
 
 	* net_2_0_System.ServiceModel.Web.dll.sources,
diff --git a/mcs/class/System.ServiceModel.Web/ChangeLog b/mcs/class/System.ServiceModel.Web/ChangeLog.old
similarity index 100%
copy from mcs/class/System.ServiceModel.Web/ChangeLog
copy to mcs/class/System.ServiceModel.Web/ChangeLog.old
diff --git a/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/ChangeLog b/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/ChangeLog
index e0d70bd..deaef73 100644
--- a/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/ChangeLog
+++ b/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/ChangeLog
@@ -1,3 +1,40 @@
+2010-10-29  Andreia Gaita  <shana at jitted.com>
+
+	[JsonWriter] Fix JsonWriter yet again. Behaviour of WriteRaw on
+	.net and sl is different, so ifdef to make everyone happy!
+
+2010-10-29  Atsushi Eno  <atsushi at ximian.com>
+
+	Fix JsonWriterTest.WriteRaw() regression. WriteRaw() is (looking)
+	almost identical to WriteString() here.
+
+2010-10-15  Andreia Gaita  <shana at jitted.com>
+
+	[Json] Add support for calling external json (de)serialization
+	methods
+
+	On Moonlight, ScriptObject types have custom (de)serialization
+	methods that need to be called whenever a user object includes
+	properties of that type. This patch creates a TypeMap subclass
+	(ExternalTypeMap) and exposes a method that can be called from
+	moon's System.Windows.Browser to register custom serialization and
+	deserialization methods, keyed by type. These are called whenever
+	a property is found with a type (or base type) that has custom
+	methods registered.
+
+2010-10-15  Andreia Gaita  <shana at jitted.com>
+
+	[Json] Fix decimal type serialization
+
+2010-09-30  Andreia Gaita  <shana at jitted.com>
+
+	[Json] Fix uint type conversion when reading, should be mapped to
+	long, not int
+
+2010-09-24  Rolf Bjarne Kvinge  <RKvinge at novell.com>
+
+	JsonSerializationWriter: handle char values
+
 2010-07-27  Andreia Gaita  <avidigal at novell.com>
 
 	* JsonSerializationReader.cs: Add Char type to the switch. Reads the
diff --git a/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/ChangeLog b/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/ChangeLog.old
similarity index 100%
copy from mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/ChangeLog
copy to mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/ChangeLog.old
diff --git a/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/ExternalTypeMap_2_1.cs b/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/ExternalTypeMap_2_1.cs
new file mode 100644
index 0000000..45dc3d3
--- /dev/null
+++ b/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/ExternalTypeMap_2_1.cs
@@ -0,0 +1,98 @@
+//
+// ExternalTypeHelpers.cs (for Moonlight profile)
+//
+// Authors:
+//	Andreia Gaita  <avidigal at novell.com>
+//
+// Copyright (C) 2010 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections.Generic;
+using System.Xml;
+using System.Text;
+
+namespace System.Runtime.Serialization.Json {
+
+	struct ExternalTypeFuncs {
+		public Func<object, string> Serialize;
+		public Func<string, object> Deserialize;
+	}
+
+	internal sealed class ExternalTypeMap : TypeMap {
+
+		static Dictionary<Type, ExternalTypeFuncs> types;
+		Type type;
+
+		static ExternalTypeMap ()
+		{
+			types = new Dictionary<Type, ExternalTypeFuncs>();
+		}
+
+		public ExternalTypeMap (Type type) : base(type, null, null)
+		{
+			this.type = type;
+		}
+
+		public static void AddExternalType (Type type, Func<object, string> ser, Func<string, object> deser)
+		{
+			if (!types.ContainsKey (type))
+				types[type] = new ExternalTypeFuncs () { Serialize=ser, Deserialize=deser };
+		}
+
+		public static bool HasType (Type type)
+		{
+			Type t = type;
+			while (t != typeof(object)) {
+				if (types.ContainsKey (t)) {
+					if (!types.ContainsKey (type))
+						types[type] = types[t];
+					return true;
+				}
+				t = t.BaseType;
+			}
+
+			return false;
+		}
+
+		public override void Serialize (JsonSerializationWriter jsw, object graph, string t)
+		{
+			string ret = types[type].Serialize (graph);
+			if (ret.Length > 0) {
+				if (ret[0] == '{') {
+					t = "object";
+					ret = ret.Substring (1, ret.Length - 2);
+				} else if (ret[0] == '[') {
+					t = "array";
+					ret = ret.Substring (1, ret.Length - 2);
+				}
+			}
+			jsw.Writer.WriteAttributeString ("type", t);
+			jsw.Writer.WriteRaw (ret);
+		}
+
+		public override object Deserialize (JsonSerializationReader jsr)
+		{
+			return types[type].Deserialize (jsr.Reader.ReadInnerXml ());
+		}
+	}
+}
\ No newline at end of file
diff --git a/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/JsonReader.cs b/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/JsonReader.cs
index 0f5d447..3c7a371 100644
--- a/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/JsonReader.cs
+++ b/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/JsonReader.cs
@@ -838,5 +838,51 @@ namespace System.Runtime.Serialization.Json
 		{
 			return new XmlException (String.Format ("{0} ({1},{2})", s, line, column));
 		}
+
+		// This reads the current element and all its content as a string,
+		// with no processing done except for advancing the reader.
+		public override string ReadInnerXml ()
+		{
+
+			if (NodeType != XmlNodeType.Element)
+				return base.ReadInnerXml ();
+
+			StringBuilder sb = new StringBuilder ();
+			bool isobject = elements.Peek ().Type == "object";
+			char end = isobject ? '}' : ']';
+			char start = isobject ? '{' : '[';
+			int count = 1;
+
+			sb.Append (start);
+
+			// add the first child manually, it's already been read
+			// but hasn't been processed yet
+			if (isobject && !String.IsNullOrEmpty (next_object_content_name))
+					sb.Append ("\"" + next_object_content_name + "\"");
+
+			// keep reading until we hit the end marker, no processing is
+			// done on anything
+			do {
+				char c = (char)ReadChar ();
+				sb.Append (c);
+				if (c == start)
+					++count;
+				else if (c == end)
+					--count;
+			} while (count > 0);
+
+			// Replace the content we've read with an empty object so it gets
+			// skipped on the following Read
+			reader.Pushback (end);
+			if (isobject) {
+				reader.Pushback ('"');
+				reader.Pushback ('"');
+				reader.Pushback (':');
+			}
+
+			// Skip the element
+			Read ();
+			return sb.ToString ();
+		}
 	}
 }
diff --git a/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/JsonSerializationReader.cs b/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/JsonSerializationReader.cs
index 833f223..35e88d7 100644
--- a/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/JsonSerializationReader.cs
+++ b/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/JsonSerializationReader.cs
@@ -102,12 +102,12 @@ namespace System.Runtime.Serialization.Json
 			case TypeCode.Int16:
 			case TypeCode.Int32:
 			case TypeCode.UInt16:
-			case TypeCode.UInt32:
 				int i = reader.ReadElementContentAsInt ();
 				if (type.IsEnum)
 					return Enum.ToObject (type, (object)i);
 				else
 					return Convert.ChangeType (i, type, null);
+			case TypeCode.UInt32:
 			case TypeCode.Int64:
 			case TypeCode.UInt64:
 				long l = reader.ReadElementContentAsLong ();
diff --git a/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/JsonSerializationWriter.cs b/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/JsonSerializationWriter.cs
index 6f2ac67..3ea5ad5 100644
--- a/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/JsonSerializationWriter.cs
+++ b/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/JsonSerializationWriter.cs
@@ -71,12 +71,12 @@ namespace System.Runtime.Serialization.Json
 				throw new SerializationException (String.Format ("The object graph exceeded the maximum object count '{0}' specified in the serializer", serializer.MaxItemsInObjectGraph));
 
 			switch (Type.GetTypeCode (graph.GetType ())) {
+			case TypeCode.Char:
 			case TypeCode.String:
 				writer.WriteString (graph.ToString ());
 				break;
 			case TypeCode.Single:
 			case TypeCode.Double:
-			case TypeCode.Decimal:
 				writer.WriteAttributeString ("type", "number");
 				writer.WriteString (((IFormattable) graph).ToString ("R", CultureInfo.InvariantCulture));
 				break;
@@ -88,6 +88,7 @@ namespace System.Runtime.Serialization.Json
 			case TypeCode.UInt16:
 			case TypeCode.UInt32:
 			case TypeCode.UInt64:
+			case TypeCode.Decimal:
 				writer.WriteAttributeString ("type", "number");
 				if (graph.GetType ().IsEnum)
 					graph = ((IConvertible) graph).ToType (Enum.GetUnderlyingType (graph.GetType ()), CultureInfo.InvariantCulture);
@@ -142,8 +143,7 @@ namespace System.Runtime.Serialization.Json
 						// FIXME: I'm not sure how it is determined whether __type is written or not...
 						if (outputTypeName || always_emit_type)
 							writer.WriteAttributeString ("__type", FormatTypeName (graph.GetType ()));
-						writer.WriteAttributeString ("type", "object");
-						tm.Serialize (this, graph);
+						tm.Serialize (this, graph, "object");
 					}
 					else
 						// it does not emit type="object" (as the graph is regarded as a string)
diff --git a/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/JsonWriter.cs b/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/JsonWriter.cs
index f78056d..2ccffac 100644
--- a/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/JsonWriter.cs
+++ b/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/JsonWriter.cs
@@ -460,7 +460,11 @@ namespace System.Runtime.Serialization.Json
 
 		public override void WriteRaw (string text)
 		{
+#if MOONLIGHT
+			OutputString (text);
+#else
 			WriteString (text);
+#endif
 		}
 
 		public override void WriteRaw (char [] chars, int start, int length)
diff --git a/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/TypeMap.cs b/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/TypeMap.cs
index 806c9ab..bfb26ba 100644
--- a/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/TypeMap.cs
+++ b/mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/TypeMap.cs
@@ -66,6 +66,10 @@ namespace System.Runtime.Serialization.Json
 			if (IsPrimitiveType (type))
 				return null;
 
+#if MOONLIGHT
+			if (ExternalTypeMap.HasType (type))
+				return new ExternalTypeMap (type);
+#endif
 			return CreateDefaultTypeMap (type);
 		}
 
@@ -169,8 +173,9 @@ namespace System.Runtime.Serialization.Json
 		public MethodInfo OnDeserializing { get; set; }
 		public MethodInfo OnDeserialized { get; set; }
 
-		public void Serialize (JsonSerializationWriter outputter, object graph)
+		public virtual void Serialize (JsonSerializationWriter outputter, object graph, string type)
 		{
+			outputter.Writer.WriteAttributeString ("type", type);
 			foreach (TypeMapMember member in members) {
 				object memberObj = member.GetMemberOf (graph);
 				// FIXME: consider EmitDefaultValue
@@ -180,7 +185,7 @@ namespace System.Runtime.Serialization.Json
 			}
 		}
 
-		public object Deserialize (JsonSerializationReader jsr)
+		public virtual object Deserialize (JsonSerializationReader jsr)
 		{
 			XmlReader reader = jsr.Reader;
 			bool isNull = reader.GetAttribute ("type") == "null";
diff --git a/mcs/class/System.ServiceModel.Web/System.ServiceModel.Activation/ChangeLog b/mcs/class/System.ServiceModel.Web/System.ServiceModel.Activation/ChangeLog
index 28906b3..3aeda40 100644
--- a/mcs/class/System.ServiceModel.Web/System.ServiceModel.Activation/ChangeLog
+++ b/mcs/class/System.ServiceModel.Web/System.ServiceModel.Activation/ChangeLog
@@ -1,3 +1,23 @@
+2010-11-10  Marek Habersack  <grendel at twistedcode.net>
+
+	[wcf] .NET allows for service contract methods to be decorated
+	only by Web{Get,Invoke}Attribute
+
+	Usually WCF requires that each service method is marked with the
+	OperationContract attribute with the exception of methods
+	decorated with the Web{Get,Invoke}Attribute attributes which are
+	defined in System.ServiceModel.Web. This patch adds a simple way
+	to extend the ContractDescriptionGenerator in order to provide
+	this functionality without circular dependency of
+	System.ServiceModel on System.ServiceModel.Web. Several extenders
+	can be registered with the description generator and they will be
+	invoked in the registration order until any of them returns
+	'true'. Extenders are passed a reference to the OperationContract
+	attribute with which the current method is decorated - if the
+	reference is null, the extender should create a default instance
+	of the attribute so that the description generator considers the
+	method as one to be included in the contract description.
+
 2010-05-21  Atsushi Enomoto  <atsushi at ximian.com>
 
 	* WebScriptServiceHostFactory.cs : similarly to ServiceDebugBehavior
diff --git a/mcs/class/System.ServiceModel.Web/System.ServiceModel.Activation/ChangeLog b/mcs/class/System.ServiceModel.Web/System.ServiceModel.Activation/ChangeLog.old
similarity index 100%
copy from mcs/class/System.ServiceModel.Web/System.ServiceModel.Activation/ChangeLog
copy to mcs/class/System.ServiceModel.Web/System.ServiceModel.Activation/ChangeLog.old
diff --git a/mcs/class/System.ServiceModel.Web/System.ServiceModel.Activation/WebScriptServiceHostFactory.cs b/mcs/class/System.ServiceModel.Web/System.ServiceModel.Activation/WebScriptServiceHostFactory.cs
index 153f9db..55fe2f4 100644
--- a/mcs/class/System.ServiceModel.Web/System.ServiceModel.Activation/WebScriptServiceHostFactory.cs
+++ b/mcs/class/System.ServiceModel.Web/System.ServiceModel.Activation/WebScriptServiceHostFactory.cs
@@ -26,6 +26,7 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 using System;
+using System.Reflection;
 using System.ServiceModel;
 using System.ServiceModel.Description;
 using System.ServiceModel.Web;
@@ -37,8 +38,41 @@ namespace System.ServiceModel.Activation
 	{
 		public WebScriptServiceHostFactory ()
 		{
+			ContractDescriptionGenerator.RegisterGetOperationContractAttributeExtender (WebAttributesOCEExtender);
 		}
 
+		static bool WebAttributesOCEExtender (MethodBase method, object[] customAttributes, ref OperationContractAttribute oca)
+		{
+			int caLength = customAttributes == null ? 0 : customAttributes.Length;
+			if (method == null && caLength == 0)
+				return false;
+
+			if (caLength == 0) {
+				customAttributes = method.GetCustomAttributes (false);
+
+				if (customAttributes.Length == 0)
+					return false;
+			}
+
+			bool foundWebAttribute = false;
+			foreach (object o in customAttributes) {
+				if (o is WebInvokeAttribute || o is WebGetAttribute) {
+					foundWebAttribute = true;
+					break;
+				}
+			}
+
+			if (!foundWebAttribute)
+				return false;
+
+			// LAMESPEC: .NET allows for contract methods decorated only with
+			// Web{Get,Invoke}Attribute and _without_ the OperationContractAttribute.
+			if (oca == null)
+				oca = new OperationContractAttribute ();
+			
+			return true;
+		}
+		
 		protected override ServiceHost CreateServiceHost (Type serviceType, Uri [] baseAddresses)
 		{
 			if (serviceType == null)
diff --git a/mcs/class/System.ServiceModel.Web/System.ServiceModel.Channels/ChangeLog b/mcs/class/System.ServiceModel.Web/System.ServiceModel.Channels/ChangeLog
index 1a39447..96931a3 100644
--- a/mcs/class/System.ServiceModel.Web/System.ServiceModel.Channels/ChangeLog
+++ b/mcs/class/System.ServiceModel.Web/System.ServiceModel.Channels/ChangeLog
@@ -1,3 +1,13 @@
+2010-09-24  Atsushi Eno  <atsushi at ximian.com>
+
+	Override IsContentTypeSupported() in per-encoding-binding-element
+	implementation to work as expected.
+
+2010-09-13  Atsushi Eno  <atsushi at ximian.com>
+
+	implemented large parts of WCF standard endpoints and
+	configuration support.
+
 2010-07-14  Atsushi Enomoto  <atsushi at ximian.com>
 
 	* WebMessageEncoder.cs : support Raw message in ReadMessage() too.
diff --git a/mcs/class/System.ServiceModel.Web/System.ServiceModel.Channels/ChangeLog b/mcs/class/System.ServiceModel.Web/System.ServiceModel.Channels/ChangeLog.old
similarity index 100%
copy from mcs/class/System.ServiceModel.Web/System.ServiceModel.Channels/ChangeLog
copy to mcs/class/System.ServiceModel.Web/System.ServiceModel.Channels/ChangeLog.old
diff --git a/mcs/class/System.ServiceModel.Web/System.ServiceModel.Channels/WebMessageEncoder.cs b/mcs/class/System.ServiceModel.Web/System.ServiceModel.Channels/WebMessageEncoder.cs
index 736ad0c..31d4eeb 100644
--- a/mcs/class/System.ServiceModel.Web/System.ServiceModel.Channels/WebMessageEncoder.cs
+++ b/mcs/class/System.ServiceModel.Web/System.ServiceModel.Channels/WebMessageEncoder.cs
@@ -64,6 +64,13 @@ namespace System.ServiceModel.Channels
 			get { return MessageVersion.None; }
 		}
 
+		public override bool IsContentTypeSupported (string contentType)
+		{
+			if (contentType == null)
+				throw new ArgumentNullException ("contentType");
+			return true; // anything is accepted.
+		}
+
 		public override Message ReadMessage (ArraySegment<byte> buffer, BufferManager bufferManager, string contentType)
 		{
 			throw new NotImplementedException ();
diff --git a/mcs/class/System.ServiceModel.Web/System.ServiceModel.Channels/WebMessageEncodingBindingElement.cs b/mcs/class/System.ServiceModel.Web/System.ServiceModel.Channels/WebMessageEncodingBindingElement.cs
index 83fee56..d1746b9 100644
--- a/mcs/class/System.ServiceModel.Web/System.ServiceModel.Channels/WebMessageEncodingBindingElement.cs
+++ b/mcs/class/System.ServiceModel.Web/System.ServiceModel.Channels/WebMessageEncodingBindingElement.cs
@@ -41,7 +41,6 @@ namespace System.ServiceModel.Channels
 #endif
 	{
 		Encoding write_encoding;
-		XmlDictionaryReaderQuotas reader_quotas;
 		WebContentTypeMapper content_type_mapper;
 		int max_read_pool_size = 0x10000, max_write_pool_size = 0x10000;
 
@@ -58,7 +57,7 @@ namespace System.ServiceModel.Channels
 				throw new ArgumentNullException ("writeEncoding");
 			WriteEncoding = writeEncoding;
 #if !NET_2_1
-			reader_quotas = new XmlDictionaryReaderQuotas ();
+			ReaderQuotas = new XmlDictionaryReaderQuotas ();
 #endif
 		}
 
@@ -91,9 +90,7 @@ namespace System.ServiceModel.Channels
 			}
 		}
 
-		public XmlDictionaryReaderQuotas ReaderQuotas {
-			get { return reader_quotas; }
-		}
+		public XmlDictionaryReaderQuotas ReaderQuotas { get; internal set; }
 
 		public Encoding WriteEncoding {
 			get { return write_encoding; }
diff --git a/mcs/class/System.ServiceModel.Web/System.ServiceModel.Configuration/ChangeLog b/mcs/class/System.ServiceModel.Web/System.ServiceModel.Configuration/ChangeLog
index 9721b8b..2fef274 100644
--- a/mcs/class/System.ServiceModel.Web/System.ServiceModel.Configuration/ChangeLog
+++ b/mcs/class/System.ServiceModel.Web/System.ServiceModel.Configuration/ChangeLog
@@ -1,3 +1,12 @@
+2011-01-08  Marek Safar  <marek.safar at gmail.com>
+
+	Fixed missing protected internal modifier
+
+2010-09-13  Atsushi Eno  <atsushi at ximian.com>
+
+	implemented large parts of WCF standard endpoints and
+	configuration support.
+
 2010-08-04  atsushieno  <atsushi at ximian.com>
 
 	implement missing configuration members in Sys.SM.Web.
diff --git a/mcs/class/System.ServiceModel.Web/System.ServiceModel.Configuration/WebHttpBindingCollectionElement.cs b/mcs/class/System.ServiceModel.Web/System.ServiceModel.Configuration/WebHttpBindingCollectionElement.cs
index d506416..708bd58 100644
--- a/mcs/class/System.ServiceModel.Web/System.ServiceModel.Configuration/WebHttpBindingCollectionElement.cs
+++ b/mcs/class/System.ServiceModel.Web/System.ServiceModel.Configuration/WebHttpBindingCollectionElement.cs
@@ -63,7 +63,7 @@ namespace System.ServiceModel.Configuration
 
 		// Methods
 
-		protected override Binding GetDefault ()
+		protected internal override Binding GetDefault ()
 		{
 			return new WebHttpBinding ();
 		}
diff --git a/mcs/class/System.ServiceModel.Web/System.ServiceModel.Configuration/WebHttpBindingElement.cs b/mcs/class/System.ServiceModel.Web/System.ServiceModel.Configuration/WebHttpBindingElement.cs
index ca61760..def682e 100644
--- a/mcs/class/System.ServiceModel.Web/System.ServiceModel.Configuration/WebHttpBindingElement.cs
+++ b/mcs/class/System.ServiceModel.Web/System.ServiceModel.Configuration/WebHttpBindingElement.cs
@@ -279,7 +279,7 @@ namespace System.ServiceModel.Configuration
 			Security.ApplyConfiguration (webBinding.Security);
 		}
 
-		protected override void InitializeFrom (Binding binding)
+		protected internal override void InitializeFrom (Binding binding)
 		{
 			WebHttpBinding b = (WebHttpBinding)binding;
 			
diff --git a/mcs/class/System.ServiceModel.Web/System.ServiceModel.Configuration/WebHttpEndpointCollectionElement.cs b/mcs/class/System.ServiceModel.Web/System.ServiceModel.Configuration/WebHttpEndpointCollectionElement.cs
new file mode 100644
index 0000000..8bf4c92
--- /dev/null
+++ b/mcs/class/System.ServiceModel.Web/System.ServiceModel.Configuration/WebHttpEndpointCollectionElement.cs
@@ -0,0 +1,40 @@
+//
+// Author:
+//	Atsushi Enomoto <atsushi at ximian.com>
+//
+// Copyright (C) 2010 Novell, Inc.  http://www.novell.com
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+#if NET_4_0
+
+using System;
+using System.ComponentModel;
+using System.ServiceModel.Description;
+
+namespace System.ServiceModel.Configuration
+{
+	public class WebHttpEndpointCollectionElement : StandardEndpointCollectionElement<WebHttpEndpoint, WebHttpEndpointElement>
+	{
+	}
+
+}
+
+#endif
diff --git a/mcs/class/System.ServiceModel.Web/System.ServiceModel.Configuration/WebHttpEndpointElement.cs b/mcs/class/System.ServiceModel.Web/System.ServiceModel.Configuration/WebHttpEndpointElement.cs
new file mode 100644
index 0000000..380ac8f
--- /dev/null
+++ b/mcs/class/System.ServiceModel.Web/System.ServiceModel.Configuration/WebHttpEndpointElement.cs
@@ -0,0 +1,206 @@
+//
+// Author:
+//	Atsushi Enomoto <atsushi at ximian.com>
+//
+// Copyright (C) 2010 Novell, Inc.  http://www.novell.com
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+#if NET_4_0
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.ComponentModel;
+using System.Configuration;
+using System.Reflection;
+using System.ServiceModel;
+using System.ServiceModel.Channels;
+using System.ServiceModel.Description;
+using System.ServiceModel.Diagnostics;
+using System.ServiceModel.Dispatcher;
+using System.ServiceModel.MsmqIntegration;
+using System.ServiceModel.PeerResolvers;
+using System.ServiceModel.Security;
+using System.ServiceModel.Web;
+using System.Runtime.Serialization;
+using System.Text;
+using System.Xml;
+
+namespace System.ServiceModel.Configuration
+{
+	public class WebHttpEndpointElement : StandardEndpointElement
+	{
+		static ConfigurationPropertyCollection properties = new ConfigurationPropertyCollection ();
+
+		static ConfigurationProperty content_type_mapper, cross_domain_script_access_enabled, host_name_comparison_mode, max_buffer_pool_size, max_buffer_size, max_received_message_size, reader_quotas, security, transfer_mode, write_encoding, automatic_format_selection_enabled, default_outgoing_response_format, fault_exception_enabled, help_enabled;
+
+		static WebHttpEndpointElement ()
+		{
+			content_type_mapper = new ConfigurationProperty ("contentTypeMapper", typeof (string), "", null, null, ConfigurationPropertyOptions.None);
+			cross_domain_script_access_enabled = new ConfigurationProperty ("crossDomainScriptAccessEnabled", typeof (bool), false, null, null, ConfigurationPropertyOptions.None);
+			host_name_comparison_mode = new ConfigurationProperty ("hostNameComparisonMode", typeof (HostNameComparisonMode), HostNameComparisonMode.StrongWildcard, null, null, ConfigurationPropertyOptions.None);
+			max_buffer_pool_size = new ConfigurationProperty ("maxBufferPoolSize", typeof (long), 0x80000, null, null, ConfigurationPropertyOptions.None);
+			max_buffer_size = new ConfigurationProperty ("maxBufferSize", typeof (int), 0x10000, null, null, ConfigurationPropertyOptions.None);
+			max_received_message_size = new ConfigurationProperty ("maxReceivedMessageSize", typeof (long), 0x10000, null, null, ConfigurationPropertyOptions.None);
+			reader_quotas = new ConfigurationProperty ("readerQuotas", typeof (XmlDictionaryReaderQuotas), null, null, null, ConfigurationPropertyOptions.None);
+			security = new ConfigurationProperty ("security", typeof (WebHttpSecurity), null, null, null, ConfigurationPropertyOptions.None);
+			transfer_mode = new ConfigurationProperty ("transferMode", typeof (TransferMode), TransferMode.Buffered, null, null, ConfigurationPropertyOptions.None);
+			write_encoding = new ConfigurationProperty ("writeEncoding", typeof (Encoding), "utf-8", new EncodingConverter (), null, ConfigurationPropertyOptions.None);
+			automatic_format_selection_enabled = new ConfigurationProperty ("automaticFormatSelectionEnabled", typeof (bool), false, null, null, ConfigurationPropertyOptions.None);
+			default_outgoing_response_format = new ConfigurationProperty ("defaultOutgoingResponseFormat", typeof (WebMessageFormat), WebMessageFormat.Xml, null, null, ConfigurationPropertyOptions.None);
+			fault_exception_enabled = new ConfigurationProperty ("faultExceptionEnabled", typeof (bool), false, null, null, ConfigurationPropertyOptions.None);
+			help_enabled = new ConfigurationProperty ("helpEnabled", typeof (bool), false, null, null, ConfigurationPropertyOptions.None);
+
+			foreach (var item in new ConfigurationProperty [] {content_type_mapper, cross_domain_script_access_enabled, host_name_comparison_mode, max_buffer_pool_size, max_buffer_size, max_received_message_size, reader_quotas, security, transfer_mode, write_encoding, automatic_format_selection_enabled, default_outgoing_response_format, fault_exception_enabled, help_enabled})
+				properties.Add (item);
+		}
+
+		protected internal override Type EndpointType {
+			get { return typeof (WebHttpEndpoint); }
+		}
+
+		protected override ConfigurationPropertyCollection Properties {
+			get { return properties; }
+		}
+
+		[ConfigurationProperty ("contentTypeMapper", DefaultValue = "")]
+		[StringValidator (MinLength = 0)]
+		public string ContentTypeMapper {
+			get { return (string) this ["contentTypeMapper"]; }
+			set { this ["contentTypeMapper"] = value; }
+		}
+
+		[ConfigurationProperty ("crossDomainScriptAccessEnabled", DefaultValue = false)]
+		public bool CrossDomainScriptAccessEnabled {
+			get { return (bool) this ["crossDomainScriptAccessEnabled"]; }
+			set { this ["crossDomainScriptAccessEnabled"] = value; }
+		}
+
+		[ConfigurationProperty ("hostNameComparisonMode", DefaultValue = HostNameComparisonMode.StrongWildcard)]
+		public HostNameComparisonMode HostNameComparisonMode {
+			get { return (HostNameComparisonMode) this ["hostNameComparisonMode"]; }
+			set { this ["hostNameComparisonMode"] = value; }
+		}
+
+		[LongValidator (MinValue = 0, MaxValue = long.MaxValue, ExcludeRange = false)]
+		[ConfigurationProperty ("maxBufferPoolSize", DefaultValue = 0x80000,
+			 Options = ConfigurationPropertyOptions.None)]
+		public long MaxBufferPoolSize {
+			get { return (long) this ["maxBufferPoolSize"]; }
+			set { this ["maxBufferPoolSize"] = value; }
+		}
+
+		[IntegerValidator ( MinValue = 1,
+			MaxValue = int.MaxValue,
+			ExcludeRange = false)]
+		[ConfigurationProperty ("maxBufferSize", DefaultValue = 0x10000,
+			 Options = ConfigurationPropertyOptions.None)]
+		public int MaxBufferSize {
+			get { return (int) this ["maxBufferSize"]; }
+			set { this ["maxBufferSize"] = value; }
+		}
+
+		[LongValidator ( MinValue = 1, MaxValue = long.MaxValue, ExcludeRange = false)]
+		[ConfigurationProperty ("maxReceivedMessageSize", DefaultValue = 0x10000,
+			 Options = ConfigurationPropertyOptions.None)]
+		public long MaxReceivedMessageSize {
+			get { return (long) this ["maxReceivedMessageSize"]; }
+			set { this ["maxReceivedMessageSize"] = value; }
+		}
+
+		[ConfigurationProperty ("readerQuotas")]
+		public XmlDictionaryReaderQuotasElement ReaderQuotas {
+			get { return (XmlDictionaryReaderQuotasElement) this ["readerQuotas"]; }
+		}
+
+		[ConfigurationProperty ("security")]
+		public WebHttpSecurityElement Security {
+			get { return (WebHttpSecurityElement) this ["security"]; }
+		}
+
+		[ConfigurationProperty ("transferMode", DefaultValue = TransferMode.Buffered)]
+		public TransferMode TransferMode {
+			get { return (TransferMode) this ["transferMode"]; }
+			set { this ["transferMode"] = value; }
+		}
+
+		[TypeConverter (typeof (EncodingConverter))]
+		[ConfigurationProperty ("writeEncoding", DefaultValue = "utf-8")]
+		public Encoding WriteEncoding {
+			get { return (Encoding) this ["writeEncoding"]; }
+			set { this ["writeEncoding"] = value; }
+		}
+
+
+		[ConfigurationProperty ("automaticFormatSelectionEnabled", DefaultValue = false)]
+		public bool AutomaticFormatSelectionEnabled {
+			get { return (bool) this ["automaticFormatSelectionEnabled"]; }
+			set { this ["automaticFormatSelectionEnabled"] = value; }
+		}
+
+		[ConfigurationProperty ("defaultOutgoingResponseFormat", DefaultValue = WebMessageFormat.Xml)]
+		public WebMessageFormat DefaultOutgoingResponseFormat {
+			get { return (WebMessageFormat) this ["defaultOutgoingResponseFormat"]; }
+			set { this ["defaultOutgoingResponseFormat"] = value; }
+		}
+
+		[ConfigurationProperty ("faultExceptionEnabled", DefaultValue = false)]
+		public bool FaultExceptionEnabled {
+			get { return (bool) this ["faultExceptionEnabled"]; }
+			set { this ["faultExceptionEnabled"] = value; }
+		}
+
+		[ConfigurationProperty ("helpEnabled", DefaultValue = false)]
+		public bool HelpEnabled {
+			get { return (bool) this ["helpEnabled"]; }
+			set { this ["helpEnabled"] = value; }
+		}
+
+
+		protected internal override ServiceEndpoint CreateServiceEndpoint (ContractDescription contractDescription)
+		{
+			throw new NotImplementedException ();
+		}
+
+		protected override void OnApplyConfiguration (ServiceEndpoint endpoint, ChannelEndpointElement serviceEndpointElement)
+		{
+			throw new NotImplementedException ();
+		}
+
+		protected override void OnApplyConfiguration (ServiceEndpoint endpoint, ServiceEndpointElement serviceEndpointElement)
+		{
+			throw new NotImplementedException ();
+		}
+
+		protected override void OnInitializeAndValidate (ChannelEndpointElement channelEndpointElement)
+		{
+			throw new NotImplementedException ();
+		}
+
+		protected override void OnInitializeAndValidate (ServiceEndpointElement serviceEndpointElement)
+		{
+			throw new NotImplementedException ();
+		}
+	}
+}
+
+#endif
diff --git a/mcs/class/System.ServiceModel.Web/System.ServiceModel.Configuration/WebScriptEndpointCollectionElement.cs b/mcs/class/System.ServiceModel.Web/System.ServiceModel.Configuration/WebScriptEndpointCollectionElement.cs
new file mode 100644
index 0000000..7a5a9ec
--- /dev/null
+++ b/mcs/class/System.ServiceModel.Web/System.ServiceModel.Configuration/WebScriptEndpointCollectionElement.cs
@@ -0,0 +1,40 @@
+//
+// Author:
+//	Atsushi Enomoto <atsushi at ximian.com>
+//
+// Copyright (C) 2010 Novell, Inc.  http://www.novell.com
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+#if NET_4_0
+
+using System;
+using System.ComponentModel;
+using System.ServiceModel.Description;
+
+namespace System.ServiceModel.Configuration
+{
+	public class WebScriptEndpointCollectionElement : StandardEndpointCollectionElement<WebScriptEndpoint, WebScriptEndpointElement>
+	{
+	}
+
+}
+
+#endif
diff --git a/mcs/class/System.ServiceModel.Web/System.ServiceModel.Configuration/WebScriptEndpointElement.cs b/mcs/class/System.ServiceModel.Web/System.ServiceModel.Configuration/WebScriptEndpointElement.cs
new file mode 100644
index 0000000..e12f1f0
--- /dev/null
+++ b/mcs/class/System.ServiceModel.Web/System.ServiceModel.Configuration/WebScriptEndpointElement.cs
@@ -0,0 +1,176 @@
+//
+// Author:
+//	Atsushi Enomoto <atsushi at ximian.com>
+//
+// Copyright (C) 2010 Novell, Inc.  http://www.novell.com
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+#if NET_4_0
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.ComponentModel;
+using System.Configuration;
+using System.Reflection;
+using System.ServiceModel;
+using System.ServiceModel.Channels;
+using System.ServiceModel.Description;
+using System.ServiceModel.Diagnostics;
+using System.ServiceModel.Dispatcher;
+using System.ServiceModel.MsmqIntegration;
+using System.ServiceModel.PeerResolvers;
+using System.ServiceModel.Security;
+using System.ServiceModel.Web;
+using System.Runtime.Serialization;
+using System.Text;
+using System.Xml;
+
+namespace System.ServiceModel.Configuration
+{
+	public class WebScriptEndpointElement : StandardEndpointElement
+	{
+		static ConfigurationPropertyCollection properties = new ConfigurationPropertyCollection ();
+
+		static ConfigurationProperty content_type_mapper, cross_domain_script_access_enabled, host_name_comparison_mode, max_buffer_pool_size, max_buffer_size, max_received_message_size, reader_quotas, security, transfer_mode, write_encoding;
+
+		static WebScriptEndpointElement ()
+		{
+			content_type_mapper = new ConfigurationProperty ("contentTypeMapper", typeof (string), "", null, null, ConfigurationPropertyOptions.None);
+			cross_domain_script_access_enabled = new ConfigurationProperty ("crossDomainScriptAccessEnabled", typeof (bool), false, null, null, ConfigurationPropertyOptions.None);
+			host_name_comparison_mode = new ConfigurationProperty ("hostNameComparisonMode", typeof (HostNameComparisonMode), HostNameComparisonMode.StrongWildcard, null, null, ConfigurationPropertyOptions.None);
+			max_buffer_pool_size = new ConfigurationProperty ("maxBufferPoolSize", typeof (long), 0x80000, null, null, ConfigurationPropertyOptions.None);
+			max_buffer_size = new ConfigurationProperty ("maxBufferSize", typeof (int), 0x10000, null, null, ConfigurationPropertyOptions.None);
+			max_received_message_size = new ConfigurationProperty ("maxReceivedMessageSize", typeof (long), 0x10000, null, null, ConfigurationPropertyOptions.None);
+			reader_quotas = new ConfigurationProperty ("readerQuotas", typeof (XmlDictionaryReaderQuotas), null, null, null, ConfigurationPropertyOptions.None);
+			security = new ConfigurationProperty ("security", typeof (WebHttpSecurity), null, null, null, ConfigurationPropertyOptions.None);
+			transfer_mode = new ConfigurationProperty ("transferMode", typeof (TransferMode), TransferMode.Buffered, null, null, ConfigurationPropertyOptions.None);
+			write_encoding = new ConfigurationProperty ("writeEncoding", typeof (Encoding), "utf-8", new EncodingConverter (), null, ConfigurationPropertyOptions.None);
+
+			foreach (var item in new ConfigurationProperty [] {content_type_mapper, cross_domain_script_access_enabled, host_name_comparison_mode, max_buffer_pool_size, max_buffer_size, max_received_message_size, reader_quotas, security, transfer_mode, write_encoding})
+				properties.Add (item);
+		}
+
+		protected internal override Type EndpointType {
+			get { return typeof (WebScriptEndpoint); }
+		}
+
+		protected override ConfigurationPropertyCollection Properties {
+			get { return properties; }
+		}
+
+		[ConfigurationProperty ("contentTypeMapper", DefaultValue = "")]
+		[StringValidator (MinLength = 0)]
+		public string ContentTypeMapper {
+			get { return (string) this ["contentTypeMapper"]; }
+			set { this ["contentTypeMapper"] = value; }
+		}
+
+		[ConfigurationProperty ("crossDomainScriptAccessEnabled", DefaultValue = false)]
+		public bool CrossDomainScriptAccessEnabled {
+			get { return (bool) this ["crossDomainScriptAccessEnabled"]; }
+			set { this ["crossDomainScriptAccessEnabled"] = value; }
+		}
+
+		[ConfigurationProperty ("hostNameComparisonMode", DefaultValue = HostNameComparisonMode.StrongWildcard)]
+		public HostNameComparisonMode HostNameComparisonMode {
+			get { return (HostNameComparisonMode) this ["hostNameComparisonMode"]; }
+			set { this ["hostNameComparisonMode"] = value; }
+		}
+
+		[LongValidator (MinValue = 0, MaxValue = long.MaxValue, ExcludeRange = false)]
+		[ConfigurationProperty ("maxBufferPoolSize", DefaultValue = 0x80000,
+			 Options = ConfigurationPropertyOptions.None)]
+		public long MaxBufferPoolSize {
+			get { return (long) this ["maxBufferPoolSize"]; }
+			set { this ["maxBufferPoolSize"] = value; }
+		}
+
+		[IntegerValidator ( MinValue = 1,
+			MaxValue = int.MaxValue,
+			ExcludeRange = false)]
+		[ConfigurationProperty ("maxBufferSize", DefaultValue = 0x10000,
+			 Options = ConfigurationPropertyOptions.None)]
+		public int MaxBufferSize {
+			get { return (int) this ["maxBufferSize"]; }
+			set { this ["maxBufferSize"] = value; }
+		}
+
+		[LongValidator ( MinValue = 1, MaxValue = long.MaxValue, ExcludeRange = false)]
+		[ConfigurationProperty ("maxReceivedMessageSize", DefaultValue = 0x10000,
+			 Options = ConfigurationPropertyOptions.None)]
+		public long MaxReceivedMessageSize {
+			get { return (long) this ["maxReceivedMessageSize"]; }
+			set { this ["maxReceivedMessageSize"] = value; }
+		}
+
+		[ConfigurationProperty ("readerQuotas")]
+		public XmlDictionaryReaderQuotasElement ReaderQuotas {
+			get { return (XmlDictionaryReaderQuotasElement) this ["readerQuotas"]; }
+		}
+
+		[ConfigurationProperty ("security")]
+		public WebHttpSecurityElement Security {
+			get { return (WebHttpSecurityElement) this ["security"]; }
+		}
+
+		[ConfigurationProperty ("transferMode", DefaultValue = TransferMode.Buffered)]
+		public TransferMode TransferMode {
+			get { return (TransferMode) this ["transferMode"]; }
+			set { this ["transferMode"] = value; }
+		}
+
+		[TypeConverter (typeof (EncodingConverter))]
+		[ConfigurationProperty ("writeEncoding", DefaultValue = "utf-8")]
+		public Encoding WriteEncoding {
+			get { return (Encoding) this ["writeEncoding"]; }
+			set { this ["writeEncoding"] = value; }
+		}
+
+		protected internal override ServiceEndpoint CreateServiceEndpoint (ContractDescription contractDescription)
+		{
+			throw new NotImplementedException ();
+		}
+
+		protected override void OnApplyConfiguration (ServiceEndpoint endpoint, ChannelEndpointElement serviceEndpointElement)
+		{
+			throw new NotImplementedException ();
+		}
+
+		protected override void OnApplyConfiguration (ServiceEndpoint endpoint, ServiceEndpointElement serviceEndpointElement)
+		{
+			throw new NotImplementedException ();
+		}
+
+		protected override void OnInitializeAndValidate (ChannelEndpointElement channelEndpointElement)
+		{
+			throw new NotImplementedException ();
+		}
+
+		protected override void OnInitializeAndValidate (ServiceEndpointElement serviceEndpointElement)
+		{
+			throw new NotImplementedException ();
+		}
+	}
+}
+
+#endif
diff --git a/mcs/class/System.ServiceModel.Web/System.ServiceModel.Description/ChangeLog b/mcs/class/System.ServiceModel.Web/System.ServiceModel.Description/ChangeLog
index 562b2d5..548f0f6 100644
--- a/mcs/class/System.ServiceModel.Web/System.ServiceModel.Description/ChangeLog
+++ b/mcs/class/System.ServiceModel.Web/System.ServiceModel.Description/ChangeLog
@@ -16,6 +16,16 @@
 	should first try to find one whose URL matches the current request
 	exactly.
 
+2010-10-15  Frank Wilhelm  <fwilhelm at nowisys.de>
+
+	Make Validate() less restrictive for contracts with explicit
+	UriTemplate.
+
+2010-09-13  Atsushi Eno  <atsushi at ximian.com>
+
+	implemented large parts of WCF standard endpoints and
+	configuration support.
+
 2010-08-11  Jb Evain  <jbevain at gmail.com>
 
 	fix the net_2_1 build
diff --git a/mcs/class/System.ServiceModel.Web/System.ServiceModel.Description/WebHttpBehavior.cs b/mcs/class/System.ServiceModel.Web/System.ServiceModel.Description/WebHttpBehavior.cs
index 4c62750..5905921 100644
--- a/mcs/class/System.ServiceModel.Web/System.ServiceModel.Description/WebHttpBehavior.cs
+++ b/mcs/class/System.ServiceModel.Web/System.ServiceModel.Description/WebHttpBehavior.cs
@@ -75,6 +75,14 @@ namespace System.ServiceModel.Description
 			DefaultOutgoingResponseFormat = WebMessageFormat.Xml;
 		}
 
+#if NET_4_0
+		public virtual bool AutomaticFormatSelectionEnabled { get; set; }
+
+		public virtual bool FaultExceptionEnabled { get; set; }
+
+		public virtual bool HelpEnabled { get; set; }
+#endif
+
 		public virtual WebMessageBodyStyle DefaultBodyStyle { get; set; }
 
 		public virtual WebMessageFormat DefaultOutgoingRequestFormat { get; set; }
@@ -214,6 +222,61 @@ namespace System.ServiceModel.Description
 		}
 #endif
 
+		WebMessageBodyStyle GetBodyStyle (WebAttributeInfo wai)
+		{
+			return wai != null && wai.IsBodyStyleSetExplicitly ? wai.BodyStyle : DefaultBodyStyle;
+		}
+
+		protected void ValidateOperation (OperationDescription operation)
+		{
+			var wai = operation.GetWebAttributeInfo ();
+			if (wai.Method == "GET")
+				return;
+			var style = GetBodyStyle (wai);
+
+			// if the style is wrapped there won't be problems
+			if (style == WebMessageBodyStyle.Wrapped)
+				return;
+
+			string [] parameters;
+			if (wai.UriTemplate != null) {
+				// find all variables in the URI
+				var uri = new UriTemplate (wai.UriTemplate);
+				parameters = new string [uri.PathSegmentVariableNames.Count + uri.QueryValueVariableNames.Count];
+				uri.PathSegmentVariableNames.CopyTo (parameters, 0);
+				uri.QueryValueVariableNames.CopyTo (parameters, uri.PathSegmentVariableNames.Count);
+
+				// sort because Array.BinarySearch is the easiest way for case-insensitive search
+				Array.Sort (parameters, StringComparer.InvariantCultureIgnoreCase);
+			} else
+				parameters = new string [0];
+
+			bool hasBody = false;
+
+			foreach (var msg in operation.Messages) {
+				if (msg.Direction == MessageDirection.Input) {
+					// the message is for a request
+					// if requests are wrapped there is nothing to check
+					if (style == WebMessageBodyStyle.WrappedRequest)
+						continue;
+
+					foreach (var part in msg.Body.Parts) {
+						if (Array.BinarySearch (parameters, part.Name, StringComparer.InvariantCultureIgnoreCase) < 0) {
+							// this part of the message is not covered by a variable in the URI
+							// so it must be passed in the body
+							if (hasBody)
+								throw new InvalidOperationException (String.Format ("Operation '{0}' has multiple message body parts. Add parameters to the UriTemplate or change the BodyStyle to 'Wrapped' or 'WrappedRequest' on the WebInvoke/WebGet attribute.", operation.Name));
+							hasBody = true;
+						}
+					}
+				} else {
+					// the message is for a response
+					if (style != WebMessageBodyStyle.WrappedResponse && msg.Body.Parts.Count > 0)
+						throw new InvalidOperationException (String.Format ("Operation '{0}' has output parameters. BodyStyle must be 'Wrapped' or 'WrappedResponse' on the operation WebInvoke/WebGet attribute.", operation.Name));
+				}
+			}
+		}
+		
 		[MonoTODO ("check UriTemplate validity")]
 		public virtual void Validate (ServiceEndpoint endpoint)
 		{
@@ -221,28 +284,7 @@ namespace System.ServiceModel.Description
 				throw new ArgumentNullException ("endpoint");
 
 			foreach (var oper in endpoint.Contract.Operations) {
-				var wai = oper.GetWebAttributeInfo ();
-				if (wai.Method == "GET")
-					continue;
-				var style = wai != null && wai.IsBodyStyleSetExplicitly ? wai.BodyStyle : DefaultBodyStyle;
-				foreach (var msg in oper.Messages)
-					switch (style) {
-					case WebMessageBodyStyle.Wrapped:
-						continue;
-					case WebMessageBodyStyle.WrappedRequest:
-						if (msg.Direction == MessageDirection.Output)
-							continue;
-						goto case WebMessageBodyStyle.Bare;
-					case WebMessageBodyStyle.WrappedResponse:
-						if (msg.Direction == MessageDirection.Input)
-							continue;
-						goto case WebMessageBodyStyle.Bare;
-					case WebMessageBodyStyle.Bare:
-					default:
-						if (msg.Body.Parts.Count > 1)
-							throw new InvalidOperationException (String.Format ("{0} message on operation '{1}' has multiple parameters which is not allowed when the operation indicates no wrapper element. BodyStyle must be 'wrapped' on the operation WebInvoke/WebGet attribute.", msg.Direction, oper.Name));
-						break;
-					}
+				ValidateOperation (oper);
 			}
 
 			ValidateBinding (endpoint);
diff --git a/mcs/class/System.ServiceModel.Web/System.ServiceModel.Description/WebHttpEndpoint.cs b/mcs/class/System.ServiceModel.Web/System.ServiceModel.Description/WebHttpEndpoint.cs
new file mode 100644
index 0000000..97d6ca0
--- /dev/null
+++ b/mcs/class/System.ServiceModel.Web/System.ServiceModel.Description/WebHttpEndpoint.cs
@@ -0,0 +1,86 @@
+//
+// Author:
+//	Atsushi Enomoto <atsushi at ximian.com>
+//
+// Copyright (C) 2010 Novell, Inc.  http://www.novell.com
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+#if NET_4_0
+using System;
+using System.Collections.ObjectModel;
+using System.Runtime.Serialization;
+using System.ServiceModel;
+using System.ServiceModel.Channels;
+using System.ServiceModel.Dispatcher;
+using System.ServiceModel.Web;
+using System.Text;
+using System.Xml;
+
+namespace System.ServiceModel.Description
+{
+	[MonoTODO]
+	public class WebHttpEndpoint : WebServiceEndpoint
+	{
+		public WebHttpEndpoint (ContractDescription contract)
+			: this (contract, null)
+		{
+		}
+
+		public WebHttpEndpoint (ContractDescription contract, EndpointAddress address)
+			: base (contract, address)
+		{
+		}
+
+		WebHttpBehavior wb {
+			get {
+				var b = Behaviors.Find<WebHttpBehavior> ();
+				if (b != null)
+					return b;
+				throw new InvalidOperationException ("The preset WebHttpBehavior was unexpectedly removed.");
+			}
+		}
+
+		public bool AutomaticFormatSelectionEnabled {
+			get { return wb.AutomaticFormatSelectionEnabled; }
+			set { wb.AutomaticFormatSelectionEnabled = value; }
+		}
+
+		public WebMessageFormat DefaultOutgoingResponseFormat {
+			get { return wb.DefaultOutgoingResponseFormat; }
+			set { wb.DefaultOutgoingResponseFormat = value; }
+		}
+
+		public bool FaultExceptionEnabled {
+			get { return wb.FaultExceptionEnabled; }
+			set { wb.FaultExceptionEnabled = value; }
+		}
+
+		public bool HelpEnabled {
+			get { return wb.HelpEnabled; }
+			set { wb.HelpEnabled = value; }
+		}
+
+		protected override Type WebEndpointType {
+			get { throw new NotImplementedException (); }
+		}
+	}
+}
+#endif
diff --git a/mcs/class/System.ServiceModel.Web/System.ServiceModel.Description/WebScriptEndpoint.cs b/mcs/class/System.ServiceModel.Web/System.ServiceModel.Description/WebScriptEndpoint.cs
new file mode 100644
index 0000000..4b37bce
--- /dev/null
+++ b/mcs/class/System.ServiceModel.Web/System.ServiceModel.Description/WebScriptEndpoint.cs
@@ -0,0 +1,53 @@
+//
+// Author:
+//	Atsushi Enomoto <atsushi at ximian.com>
+//
+// Copyright (C) 2010 Novell, Inc.  http://www.novell.com
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+#if NET_4_0
+using System;
+using System.Collections.ObjectModel;
+using System.Runtime.Serialization;
+using System.ServiceModel;
+using System.ServiceModel.Channels;
+
+namespace System.ServiceModel.Description
+{
+	[MonoTODO]
+	public class WebScriptEndpoint : WebServiceEndpoint
+	{
+		public WebScriptEndpoint (ContractDescription contract)
+			: this (contract, null)
+		{
+		}
+		
+		public WebScriptEndpoint (ContractDescription contract, EndpointAddress address)
+			: base (contract, address)
+		{
+		}
+
+		protected override Type WebEndpointType {
+			get { throw new NotImplementedException (); }
+		}
+	}
+}
+#endif
diff --git a/mcs/class/System.ServiceModel.Web/System.ServiceModel.Description/WebServiceEndpoint.cs b/mcs/class/System.ServiceModel.Web/System.ServiceModel.Description/WebServiceEndpoint.cs
new file mode 100644
index 0000000..9b2a9b6
--- /dev/null
+++ b/mcs/class/System.ServiceModel.Web/System.ServiceModel.Description/WebServiceEndpoint.cs
@@ -0,0 +1,107 @@
+//
+// Author:
+//	Atsushi Enomoto <atsushi at ximian.com>
+//
+// Copyright (C) 2010 Novell, Inc.  http://www.novell.com
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+#if NET_4_0
+using System;
+using System.Collections.ObjectModel;
+using System.Runtime.Serialization;
+using System.ServiceModel;
+using System.ServiceModel.Channels;
+using System.ServiceModel.Dispatcher;
+using System.ServiceModel.Web;
+using System.Text;
+using System.Xml;
+
+namespace System.ServiceModel.Description
+{
+	public abstract class WebServiceEndpoint : ServiceEndpoint
+	{
+		internal WebServiceEndpoint (ContractDescription contract, EndpointAddress address)
+			: base (contract, new WebHttpBinding (), address)
+		{
+			Behaviors.Add (new WebHttpBehavior ());
+		}
+
+		protected abstract Type WebEndpointType { get; }
+
+		WebHttpBinding wbind {
+			get {
+				if (Binding is WebHttpBinding)
+					return (WebHttpBinding) Binding;
+				throw new InvalidOperationException ("Binding on this standard endpoint is not supposed to be overwritten.");
+			}
+		}
+
+		public WebContentTypeMapper ContentTypeMapper {
+			get { return wbind.ContentTypeMapper; }
+			set { wbind.ContentTypeMapper = value; }
+		}
+
+		public bool CrossDomainScriptAccessEnabled {
+			get { return wbind.CrossDomainScriptAccessEnabled; }
+			set { wbind.CrossDomainScriptAccessEnabled = value; }
+		}
+
+		public HostNameComparisonMode HostNameComparisonMode {
+			get { return wbind.HostNameComparisonMode; }
+			set { wbind.HostNameComparisonMode = value; }
+		}
+
+		public long MaxBufferPoolSize {
+			get { return wbind.MaxBufferPoolSize; }
+			set { wbind.MaxBufferPoolSize = value; }
+		}
+
+		public int MaxBufferSize {
+			get { return wbind.MaxBufferSize; }
+			set { wbind.MaxBufferSize = value; }
+		}
+
+		public long MaxReceivedMessageSize {
+			get { return wbind.MaxReceivedMessageSize; }
+			set { wbind.MaxReceivedMessageSize = value; }
+		}
+
+		public XmlDictionaryReaderQuotas ReaderQuotas {
+			get { return wbind.ReaderQuotas; }
+			set { wbind.ReaderQuotas = value; }
+		}
+
+		public WebHttpSecurity Security {
+			get { return wbind.Security; }
+		}
+
+		public TransferMode TransferMode {
+			get { return wbind.TransferMode; }
+			set { wbind.TransferMode = value; }
+		}
+
+		public Encoding WriteEncoding {
+			get { return wbind.WriteEncoding; }
+			set { wbind.WriteEncoding = value; }
+		}
+	}
+}
+#endif
diff --git a/mcs/class/System.ServiceModel.Web/System.ServiceModel.Dispatcher/ChangeLog b/mcs/class/System.ServiceModel.Web/System.ServiceModel.Dispatcher/ChangeLog
index 7bb6761..40efbaf 100644
--- a/mcs/class/System.ServiceModel.Web/System.ServiceModel.Dispatcher/ChangeLog
+++ b/mcs/class/System.ServiceModel.Web/System.ServiceModel.Dispatcher/ChangeLog
@@ -1,3 +1,7 @@
+2010-10-15  Marek Safar  <marek.safar at gmail.com>
+
+	Clean up few more warnings
+
 2010-07-14  Atsushi Enomoto  <atsushi at ximian.com>
 
 	* WebMessageFormatter.cs : do not depend on WebOperationContext.
diff --git a/mcs/class/System.ServiceModel.Web/System.ServiceModel.Dispatcher/ChangeLog b/mcs/class/System.ServiceModel.Web/System.ServiceModel.Dispatcher/ChangeLog.old
similarity index 100%
copy from mcs/class/System.ServiceModel.Web/System.ServiceModel.Dispatcher/ChangeLog
copy to mcs/class/System.ServiceModel.Web/System.ServiceModel.Dispatcher/ChangeLog.old
diff --git a/mcs/class/System.ServiceModel.Web/System.ServiceModel.Dispatcher/JsonQueryStringConverter.cs b/mcs/class/System.ServiceModel.Web/System.ServiceModel.Dispatcher/JsonQueryStringConverter.cs
index 1820828..5d255ac 100644
--- a/mcs/class/System.ServiceModel.Web/System.ServiceModel.Dispatcher/JsonQueryStringConverter.cs
+++ b/mcs/class/System.ServiceModel.Web/System.ServiceModel.Dispatcher/JsonQueryStringConverter.cs
@@ -186,8 +186,6 @@ namespace System.ServiceModel.Dispatcher
 				}
 				return parameter.ToString ();
 			}
-
-			throw new NotImplementedException ();
 		}
 
 		Type ToActualType (Type t)
diff --git a/mcs/class/System.ServiceModel.Web/System.ServiceModel.Dispatcher/WebMessageFormatter.cs b/mcs/class/System.ServiceModel.Web/System.ServiceModel.Dispatcher/WebMessageFormatter.cs
index b633c9e..239fbb8 100644
--- a/mcs/class/System.ServiceModel.Web/System.ServiceModel.Dispatcher/WebMessageFormatter.cs
+++ b/mcs/class/System.ServiceModel.Web/System.ServiceModel.Dispatcher/WebMessageFormatter.cs
@@ -164,7 +164,7 @@ namespace System.ServiceModel.Dispatcher
 					return GetSerializer (ref xml_serializer, p => new DataContractSerializer (p.Type, p.Name, p.Namespace));
 				else
 					return GetSerializer (ref xml_serializer, p => new DataContractSerializer (p.Type));
-				break;
+
 			case WebContentFormat.Json:
 				// FIXME: after name argument they are hack
 #if !MOONLIGHT
@@ -173,7 +173,7 @@ namespace System.ServiceModel.Dispatcher
 				else
 #endif
 					return GetSerializer (ref json_serializer, p => new DataContractJsonSerializer (p.Type));
-				break;
+
 			default:
 				throw new NotImplementedException ();
 			}
diff --git a/mcs/class/System.ServiceModel.Web/System.ServiceModel.Web_test.dll.sources b/mcs/class/System.ServiceModel.Web/System.ServiceModel.Web_test.dll.sources
index 9194e24..e6db415 100644
--- a/mcs/class/System.ServiceModel.Web/System.ServiceModel.Web_test.dll.sources
+++ b/mcs/class/System.ServiceModel.Web/System.ServiceModel.Web_test.dll.sources
@@ -6,6 +6,7 @@ System.ServiceModel.Channels/WebBodyFormatMessagePropertyTest.cs
 System.ServiceModel.Channels/WebMessageEncodingBindingElementTest.cs
 System.ServiceModel.Configuration/WebHttpBindingElementTest.cs
 System.ServiceModel.Description/WebHttpBehaviorTest.cs
+System.ServiceModel.Description/WebHttpEndpointTest.cs
 System.ServiceModel.Description/WebScriptEnablingBehaviorTest.cs
 System.ServiceModel.Dispatcher/JsonQueryStringConverterTest.cs
 System.ServiceModel.Dispatcher/QueryStringConverterTest.cs
diff --git a/mcs/class/System.ServiceModel.Web/System.ServiceModel/ChangeLog b/mcs/class/System.ServiceModel.Web/System.ServiceModel/ChangeLog
index fc70ccb..0755ee2 100644
--- a/mcs/class/System.ServiceModel.Web/System.ServiceModel/ChangeLog
+++ b/mcs/class/System.ServiceModel.Web/System.ServiceModel/ChangeLog
@@ -1,3 +1,8 @@
+2010-09-13  Atsushi Eno  <atsushi at ximian.com>
+
+	implemented large parts of WCF standard endpoints and
+	configuration support.
+
 2008-10-23  Atsushi Enomoto  <atsushi at ximian.com>
 
 	* WebHttpSecurity.cs, WebHttpBinding.cs:
diff --git a/mcs/class/System.ServiceModel.Web/System.ServiceModel/ChangeLog b/mcs/class/System.ServiceModel.Web/System.ServiceModel/ChangeLog.old
similarity index 100%
copy from mcs/class/System.ServiceModel.Web/System.ServiceModel/ChangeLog
copy to mcs/class/System.ServiceModel.Web/System.ServiceModel/ChangeLog.old
diff --git a/mcs/class/System.ServiceModel.Web/System.ServiceModel/WebHttpBinding.cs b/mcs/class/System.ServiceModel.Web/System.ServiceModel/WebHttpBinding.cs
index 56e59ea..74035fc 100644
--- a/mcs/class/System.ServiceModel.Web/System.ServiceModel/WebHttpBinding.cs
+++ b/mcs/class/System.ServiceModel.Web/System.ServiceModel/WebHttpBinding.cs
@@ -60,12 +60,11 @@ namespace System.ServiceModel
 			throw new NotImplementedException ();
 		}
 
-		XmlDictionaryReaderQuotas quotas;
 		WebHttpSecurity security = new WebHttpSecurity ();
-		Encoding write_encoding = Encoding.UTF8;
 		HttpTransportBindingElement t;
 		// This can be changed only using <synchronousReceive> configuration element.
 		bool receive_synchronously;
+		WebMessageEncodingBindingElement msgenc = new WebMessageEncodingBindingElement ();
 
 		public EnvelopeVersion EnvelopeVersion {
 			get { return EnvelopeVersion.None; }
@@ -82,6 +81,16 @@ namespace System.ServiceModel
 			set { t.BypassProxyOnLocal = value; }
 		}
 
+#if NET_4_0
+		[MonoTODO]
+		public bool CrossDomainScriptAccessEnabled { get; set; }
+
+		public WebContentTypeMapper ContentTypeMapper {
+			get { return msgenc.ContentTypeMapper; }
+			set { msgenc.ContentTypeMapper = value; }
+		}
+#endif
+
 		public HostNameComparisonMode HostNameComparisonMode {
 			get { return t.HostNameComparisonMode; }
 			set { t.HostNameComparisonMode = value; }
@@ -120,8 +129,8 @@ namespace System.ServiceModel
 
 #if !NET_2_1
 		public XmlDictionaryReaderQuotas ReaderQuotas {
-			get { return quotas; }
-			set { quotas = value; }
+			get { return msgenc.ReaderQuotas; }
+			set { msgenc.ReaderQuotas = value; }
 		}
 #endif
 
@@ -134,23 +143,17 @@ namespace System.ServiceModel
 		}
 
 		public Encoding WriteEncoding {
-			get { return write_encoding; }
+			get { return msgenc.WriteEncoding; }
 			set {
 				if (value == null)
 					throw new ArgumentNullException ("value");
-				write_encoding = value; 
+				msgenc.WriteEncoding = value; 
 			}
 		}
 
 		public override BindingElementCollection CreateBindingElements ()
 		{
-			WebMessageEncodingBindingElement m = new WebMessageEncodingBindingElement (WriteEncoding);
-#if !NET_2_1
-			if (ReaderQuotas != null)
-				ReaderQuotas.CopyTo (m.ReaderQuotas);
-#endif
-
-			return new BindingElementCollection (new BindingElement [] { m, t.Clone () });
+			return new BindingElementCollection (new BindingElement [] { msgenc, t.Clone () });
 		}
 
 #if !NET_2_1
diff --git a/mcs/class/System.ServiceModel.Web/System/ChangeLog b/mcs/class/System.ServiceModel.Web/System/ChangeLog
index f4b7f24..35b5fde 100644
--- a/mcs/class/System.ServiceModel.Web/System/ChangeLog
+++ b/mcs/class/System.ServiceModel.Web/System/ChangeLog
@@ -1,3 +1,15 @@
+2011-01-04  Marek Habersack  <grendel at twistedcode.net>
+
+	[wcf] UriTemplate must trim the first leading slash in the
+	rendered template.
+
+	When using BindBy{Name,Position} UriTemplate must remove the the
+	first slash from the rendered URI. This fixes the 4 failing tests.
+
+2010-12-04  Joe Dluzen  <jdluzen at gmail.com>
+
+	Fix for #656021.
+
 2010-05-25  Atsushi Enomoto  <atsushi at ximian.com>
 
 	* UriTemplate.cs : safe-unescape template parameters.
diff --git a/mcs/class/System.ServiceModel.Web/System/ChangeLog b/mcs/class/System.ServiceModel.Web/System/ChangeLog.old
similarity index 100%
copy from mcs/class/System.ServiceModel.Web/System/ChangeLog
copy to mcs/class/System.ServiceModel.Web/System/ChangeLog.old
diff --git a/mcs/class/System.ServiceModel.Web/System/UriTemplate.cs b/mcs/class/System.ServiceModel.Web/System/UriTemplate.cs
index 7ea8192..410a9c4 100644
--- a/mcs/class/System.ServiceModel.Web/System/UriTemplate.cs
+++ b/mcs/class/System.ServiceModel.Web/System/UriTemplate.cs
@@ -128,6 +128,17 @@ namespace System
 			return BindByNameCommon (baseAddress, null, parameters, omitDefaults);
 		}
 
+		string TrimRenderedUri (StringBuilder sb)
+		{
+			if (sb.Length == 0)
+				return String.Empty;
+			
+			if (sb [0] == '/')
+				sb.Remove (0, 1);
+
+			return sb.ToString ();
+		}
+		
 		Uri BindByNameCommon (Uri baseAddress, NameValueCollection nvc, IDictionary<string,string> dic, bool omitDefaults)
 		{
 			CheckBaseAddress (baseAddress);
@@ -138,18 +149,17 @@ namespace System
 
 			int src = 0;
 			StringBuilder sb = new StringBuilder (template.Length);
-			BindByName (ref src, sb, path, nvc, dic, omitDefaults);
-			BindByName (ref src, sb, query, nvc, dic, omitDefaults);
+			BindByName (ref src, sb, path, nvc, dic, omitDefaults, false);
+			BindByName (ref src, sb, query, nvc, dic, omitDefaults, true);
 			sb.Append (template.Substring (src));
-			return new Uri (baseAddress.ToString () + sb.ToString ());
+			return new Uri (baseAddress.ToString () + TrimRenderedUri (sb));
 		}
 
-		void BindByName (ref int src, StringBuilder sb, ReadOnlyCollection<string> names, NameValueCollection nvc, IDictionary<string,string> dic, bool omitDefaults)
+		void BindByName (ref int src, StringBuilder sb, ReadOnlyCollection<string> names, NameValueCollection nvc, IDictionary<string,string> dic, bool omitDefaults, bool query)
 		{
 			foreach (string name in names) {
 				int s = template.IndexOf ('{', src);
 				int e = template.IndexOf ('}', s + 1);
-				sb.Append (template.Substring (src, s - src));
 #if NET_2_1
 				string value = null;
 #else
@@ -157,9 +167,18 @@ namespace System
 #endif
 				if (dic != null)
 					dic.TryGetValue (name, out value);
-				if (value == null && (omitDefaults || !Defaults.TryGetValue (name, out value)))
-					throw new ArgumentException (String.Format ("The argument name value collection does not contain non-null value for '{0}'", name), "parameters");
-				sb.Append (value);
+				if (query) {
+					if (value != null || (!omitDefaults && Defaults.TryGetValue (name, out value))) {
+						sb.Append (template.Substring (src, s - src));
+						sb.Append (value);
+					}
+				} else
+					if (value == null && (omitDefaults || !Defaults.TryGetValue(name, out value)))
+						throw new ArgumentException(string.Format("The argument name value collection does not contain non-nul vaalue for '{0}'", name), "parameters");
+					else {
+						sb.Append (template.Substring (src, s - src));
+						sb.Append (value);
+					}
 				src = e + 1;
 			}
 		}
@@ -176,7 +195,7 @@ namespace System
 			BindByPosition (ref src, sb, path, values, ref index);
 			BindByPosition (ref src, sb, query, values, ref index);
 			sb.Append (template.Substring (src));
-			return new Uri (baseAddress.ToString () + sb.ToString ());
+			return new Uri (baseAddress.ToString () + TrimRenderedUri (sb));
 		}
 
 		void BindByPosition (ref int src, StringBuilder sb, ReadOnlyCollection<string> names, string [] values, ref int index)
diff --git a/mcs/class/System.ServiceModel.Web/Test/System.Runtime.Serialization.Json/ChangeLog b/mcs/class/System.ServiceModel.Web/Test/System.Runtime.Serialization.Json/ChangeLog
index 532e123..28e0a9e 100644
--- a/mcs/class/System.ServiceModel.Web/Test/System.Runtime.Serialization.Json/ChangeLog
+++ b/mcs/class/System.ServiceModel.Web/Test/System.Runtime.Serialization.Json/ChangeLog
@@ -1,3 +1,7 @@
+2010-09-24  Rolf Bjarne Kvinge  <RKvinge at novell.com>
+
+	JsonSerializationWriter: handle char values
+
 2010-07-06  Atsushi Enomoto  <atsushi at ximian.com>
 
 	* DataContractJsonSerializerTest.cs : add test for bug #615800.
diff --git a/mcs/class/System.ServiceModel.Web/Test/System.Runtime.Serialization.Json/ChangeLog b/mcs/class/System.ServiceModel.Web/Test/System.Runtime.Serialization.Json/ChangeLog.old
similarity index 100%
copy from mcs/class/System.ServiceModel.Web/Test/System.Runtime.Serialization.Json/ChangeLog
copy to mcs/class/System.ServiceModel.Web/Test/System.Runtime.Serialization.Json/ChangeLog.old
diff --git a/mcs/class/System.ServiceModel.Web/Test/System.Runtime.Serialization.Json/DataContractJsonSerializerTest.cs b/mcs/class/System.ServiceModel.Web/Test/System.Runtime.Serialization.Json/DataContractJsonSerializerTest.cs
index 7076c6f..6b2aab9 100644
--- a/mcs/class/System.ServiceModel.Web/Test/System.Runtime.Serialization.Json/DataContractJsonSerializerTest.cs
+++ b/mcs/class/System.ServiceModel.Web/Test/System.Runtime.Serialization.Json/DataContractJsonSerializerTest.cs
@@ -1387,6 +1387,24 @@ namespace MonoTests.System.Runtime.Serialization.Json
 			Assert.IsTrue (GSPlayerListErg.B, "B");
 			Assert.IsTrue (GSPlayerListErg.C, "C");
 		}
+		
+		[Test]
+		public void WriteChar ()
+		{
+			DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof (CharTest));
+			using (MemoryStream ms = new MemoryStream()) {
+				serializer.WriteObject(ms, new CharTest ());
+				ms.Position = 0L;
+				using (StreamReader reader = new StreamReader(ms)) {
+					reader.ReadToEnd();
+				}
+			}
+		}
+	}
+	
+	public class CharTest
+	{
+		public char Foo;
 	}
 
 	public class TestData
diff --git a/mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Channels/ChangeLog b/mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Channels/ChangeLog
index ac11387..edd6f42 100644
--- a/mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Channels/ChangeLog
+++ b/mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Channels/ChangeLog
@@ -1,3 +1,8 @@
+2010-09-24  Atsushi Eno  <atsushi at ximian.com>
+
+	Override IsContentTypeSupported() in per-encoding-binding-element
+	implementation to work as expected.
+
 2010-07-14  Atsushi Enomoto  <atsushi at ximian.com>
 
 	* WebMessageEncodingBindingElementTest.cs : add test for null
diff --git a/mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Channels/ChangeLog b/mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Channels/ChangeLog.old
similarity index 100%
copy from mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Channels/ChangeLog
copy to mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Channels/ChangeLog.old
diff --git a/mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Channels/WebMessageEncodingBindingElementTest.cs b/mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Channels/WebMessageEncodingBindingElementTest.cs
index eabf1e3..3e98dfc 100644
--- a/mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Channels/WebMessageEncodingBindingElementTest.cs
+++ b/mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Channels/WebMessageEncodingBindingElementTest.cs
@@ -153,5 +153,17 @@ namespace MonoTests.System.ServiceModel
 			var e = CreateEncoder ();
 			e.ReadMessage (new MemoryStream (), 10, null);
 		}
+
+		[Test]
+		public void MessageEncoderIsContentTypeSupported ()
+		{
+			var enc = new WebMessageEncodingBindingElement ().CreateMessageEncoderFactory ().Encoder;
+			Assert.IsTrue (enc.IsContentTypeSupported ("application/xml"), "#1");
+			Assert.IsTrue (enc.IsContentTypeSupported ("text/xml"), "#2");
+			Assert.IsTrue (enc.IsContentTypeSupported ("application/soap+xml"), "#3");
+			Assert.IsTrue (enc.IsContentTypeSupported ("application/foobar+xml"), "#4"); // wow.
+			Assert.IsTrue (enc.IsContentTypeSupported ("application"), "#5"); // wow.
+			Assert.IsTrue (enc.IsContentTypeSupported (String.Empty), "#6"); // wow.
+		}
 	}
 }
diff --git a/mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Description/ChangeLog b/mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Description/ChangeLog
index b32d2fa..fabe6d7 100644
--- a/mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Description/ChangeLog
+++ b/mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Description/ChangeLog
@@ -1,3 +1,13 @@
+2010-10-15  Frank Wilhelm  <fwilhelm at nowisys.de>
+
+	Make Validate() less restrictive for contracts with explicit
+	UriTemplate.
+
+2010-09-13  Atsushi Eno  <atsushi at ximian.com>
+
+	implemented large parts of WCF standard endpoints and
+	configuration support.
+
 2010-07-14  Atsushi Enomoto  <atsushi at ximian.com>
 
 	* WebHttpBehaviorTest.cs : add test for deserializing Raw request
diff --git a/mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Description/ChangeLog b/mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Description/ChangeLog.old
similarity index 100%
copy from mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Description/ChangeLog
copy to mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Description/ChangeLog.old
diff --git a/mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Description/WebHttpBehaviorTest.cs b/mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Description/WebHttpBehaviorTest.cs
index 1267d08..7d4a9c1 100644
--- a/mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Description/WebHttpBehaviorTest.cs
+++ b/mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Description/WebHttpBehaviorTest.cs
@@ -53,6 +53,20 @@ namespace MonoTests.System.ServiceModel.Description
 		}
 
 		[Test]
+		public void DefaultValues ()
+		{
+			var b = new WebHttpBehavior ();
+			Assert.AreEqual (WebMessageBodyStyle.Bare, b.DefaultBodyStyle, "#1");
+			Assert.AreEqual (WebMessageFormat.Xml, b.DefaultOutgoingRequestFormat, "#2");
+			Assert.AreEqual (WebMessageFormat.Xml, b.DefaultOutgoingResponseFormat, "#3");
+#if NET_4_0
+			Assert.IsFalse (b.AutomaticFormatSelectionEnabled, "#11");
+			Assert.IsFalse (b.FaultExceptionEnabled, "#12");
+			Assert.IsFalse (b.HelpEnabled, "#13");
+#endif
+		}
+
+		[Test]
 		public void AddBiningParameters ()
 		{
 			var se = CreateEndpoint ();
@@ -234,6 +248,63 @@ namespace MonoTests.System.ServiceModel.Description
 			formatter.DeserializeRequest (msg, pars);
 			Assert.IsTrue (pars [0] is Stream, "ret");
 		}
+
+		[ServiceContract]
+		public interface IMultipleParametersGet
+		{
+			[OperationContract]
+			[WebGet (UriTemplate = "get")]
+			void Get (string p1, string p2);
+		}
+
+		[ServiceContract]
+		public interface IMultipleParameters
+		{
+			[OperationContract]
+			[WebInvoke (UriTemplate = "posturi?p1={p1}&p2={p2}")]
+			string PostUri (string p1, string p2);
+
+			[OperationContract]
+			[WebInvoke (UriTemplate = "postone?p1={p1}")]
+			string PostOne (string p1, string p2);
+
+			[OperationContract]
+			[WebInvoke (UriTemplate = "postwrapped", BodyStyle=WebMessageBodyStyle.WrappedRequest)]
+			string PostWrapped (string p1, string p2);
+
+			[OperationContract]
+			[WebInvoke (UriTemplate = "out?p1={p1}&p2={p2}", BodyStyle=WebMessageBodyStyle.WrappedResponse)]
+			void PostOut (string p1, string p2, out string ret);
+		}
+
+		[Test]
+		public void MultipleParameters ()
+		{
+			var behavior = new WebHttpBehaviorExt ();
+			var cd = ContractDescription.GetContract (typeof (IMultipleParameters));
+			var se = new ServiceEndpoint (cd, new WebHttpBinding (), new EndpointAddress ("http://localhost:8080/"));
+			behavior.Validate (se);
+
+			foreach (var od in cd.Operations)
+				behavior.DoGetRequestClientFormatter (od, se);
+		}
+
+		[Test]
+		[Category ("NotWorking")]
+		public void MultipleParameters2 ()
+		{
+			var behavior = new WebHttpBehaviorExt ();
+			var cd = ContractDescription.GetContract (typeof (IMultipleParametersGet));
+			var se = new ServiceEndpoint (cd, new WebHttpBinding (), new EndpointAddress ("http://localhost:8080/"));
+			behavior.Validate (se);
+
+			try {
+				foreach (var od in cd.Operations)
+					behavior.DoGetRequestClientFormatter (od, se);
+				Assert.Fail ("Should result in invalid operation");
+			} catch (InvalidOperationException) {
+			}
+		}
 	}
 
 	[ServiceContract]
diff --git a/mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Description/WebHttpEndpointTest.cs b/mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Description/WebHttpEndpointTest.cs
new file mode 100644
index 0000000..a3a64b5
--- /dev/null
+++ b/mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Description/WebHttpEndpointTest.cs
@@ -0,0 +1,35 @@
+#if NET_4_0
+using System;
+using System.IO;
+using System.Runtime.Serialization;
+using System.ServiceModel;
+using System.ServiceModel.Channels;
+using System.ServiceModel.Description;
+using System.ServiceModel.Dispatcher;
+using System.ServiceModel.Web;
+using System.Text;
+using NUnit.Framework;
+
+namespace MonoTests.System.ServiceModel.Description
+{
+	[TestFixture]
+	public class WebHttpEndpointTest
+	{
+		[Test]
+		public void ReplaceBinding1 ()
+		{
+			var se = new WebHttpEndpoint (ContractDescription.GetContract (typeof (IMetadataExchange)), null);
+			se.Binding = new NetTcpBinding (); // this does not throw exception yet.
+		}
+
+		[Test]
+		[ExpectedException (typeof (InvalidOperationException))]
+		public void ReplaceBinding2 ()
+		{
+			var se = new WebHttpEndpoint (ContractDescription.GetContract (typeof (IMetadataExchange)), null);
+			se.Binding = new NetTcpBinding ();
+			se.WriteEncoding = Encoding.UTF8;
+		}
+	}
+}
+#endif
diff --git a/mcs/class/System.ServiceModel.Web/Test/System/ChangeLog b/mcs/class/System.ServiceModel.Web/Test/System/ChangeLog
index 2232893..6a7751b 100644
--- a/mcs/class/System.ServiceModel.Web/Test/System/ChangeLog
+++ b/mcs/class/System.ServiceModel.Web/Test/System/ChangeLog
@@ -1,3 +1,11 @@
+2011-01-04  Marek Habersack  <grendel at twistedcode.net>
+
+	[wcf] UriTemplate must trim the first leading slash in the
+	rendered template.
+
+	When using BindBy{Name,Position} UriTemplate must remove the the
+	first slash from the rendered URI. This fixes the 4 failing tests.
+
 2009-09-22  Atsushi Enomoto  <atsushi at ximian.com>
 
 	* UriTemplateTest.cs : add test for case-insensitive comparison in
diff --git a/mcs/class/System.ServiceModel.Web/Test/System/ChangeLog b/mcs/class/System.ServiceModel.Web/Test/System/ChangeLog.old
similarity index 100%
copy from mcs/class/System.ServiceModel.Web/Test/System/ChangeLog
copy to mcs/class/System.ServiceModel.Web/Test/System/ChangeLog.old
diff --git a/mcs/class/System.ServiceModel.Web/Test/System/UriTemplateTest.cs b/mcs/class/System.ServiceModel.Web/Test/System/UriTemplateTest.cs
index 790198f..82105db 100644
--- a/mcs/class/System.ServiceModel.Web/Test/System/UriTemplateTest.cs
+++ b/mcs/class/System.ServiceModel.Web/Test/System/UriTemplateTest.cs
@@ -218,6 +218,28 @@ namespace MonoTests.System
 		}
 
 		[Test]
+		public void BindByNameManySlashes ()
+		{
+			var t = new UriTemplate ("////{foo}/{bar}/");
+			var n = new NameValueCollection ();
+			n.Add ("Bar", "value1"); // case insensitive
+			n.Add ("FOO", "value2"); // case insensitive
+			var u = t.BindByName (new Uri ("http://localhost/"), n);
+			Assert.AreEqual ("http://localhost////value2/value1/", u.ToString ());
+		}
+
+		[Test]
+		public void BindByNameManySlashes2 ()
+		{
+			var t = new UriTemplate ("////{foo}/{bar}/");
+			var n = new NameValueCollection ();
+			n.Add ("Bar", "value1"); // case insensitive
+			n.Add ("FOO", "value2"); // case insensitive
+			var u = t.BindByName (new Uri ("http://localhost//"), n);
+			Assert.AreEqual ("http://localhost/////value2/value1/", u.ToString ());
+		}
+		
+		[Test]
 		public void BindByNameWithDefaults ()
 		{
 			var d = new Dictionary<string,string> ();
diff --git a/mcs/class/System.ServiceModel.Web/Test/config/webHttpBinding.config b/mcs/class/System.ServiceModel.Web/Test/config/webHttpBinding.config
index d28218d..5e01695 100644
--- a/mcs/class/System.ServiceModel.Web/Test/config/webHttpBinding.config
+++ b/mcs/class/System.ServiceModel.Web/Test/config/webHttpBinding.config
@@ -12,15 +12,15 @@
           	maxReceivedMessageSize="16384"
           	proxyAddress="proxy"
           	writeEncoding="unicode"
-          	transferMode="streamed">
+          	transferMode="Streamed">
             <security mode="TransportCredentialOnly">
               <transport 
               	clientCredentialType="Basic"
-              	proxyCredentialType="NTLM"
+              	proxyCredentialType="Ntlm"
               	realm="realm" />
             </security>
           </binding>
         </webHttpBinding>
       </bindings>
     </system.serviceModel>
-</configuration>
\ No newline at end of file
+</configuration>
diff --git a/mcs/class/System.ServiceModel.Web/common_System.ServiceModel.Web.dll.sources b/mcs/class/System.ServiceModel.Web/common_System.ServiceModel.Web.dll.sources
index 04dbe4f..d9b9abc 100644
--- a/mcs/class/System.ServiceModel.Web/common_System.ServiceModel.Web.dll.sources
+++ b/mcs/class/System.ServiceModel.Web/common_System.ServiceModel.Web.dll.sources
@@ -13,11 +13,18 @@ System.ServiceModel.Channels/WebMessageEncodingBindingElement.cs
 System.ServiceModel.Configuration/WebHttpBindingCollectionElement.cs
 System.ServiceModel.Configuration/WebHttpBindingElement.cs
 System.ServiceModel.Configuration/WebHttpElement.cs
+System.ServiceModel.Configuration/WebHttpEndpointCollectionElement.cs
+System.ServiceModel.Configuration/WebHttpEndpointElement.cs
 System.ServiceModel.Configuration/WebHttpSecurityElement.cs
 System.ServiceModel.Configuration/WebMessageEncodingElement.cs
 System.ServiceModel.Configuration/WebScriptEnablingElement.cs
+System.ServiceModel.Configuration/WebScriptEndpointCollectionElement.cs
+System.ServiceModel.Configuration/WebScriptEndpointElement.cs
 System.ServiceModel.Description/WebHttpBehavior.cs
+System.ServiceModel.Description/WebHttpEndpoint.cs
 System.ServiceModel.Description/WebScriptEnablingBehavior.cs
+System.ServiceModel.Description/WebScriptEndpoint.cs
+System.ServiceModel.Description/WebServiceEndpoint.cs
 System.ServiceModel.Dispatcher/JsonQueryStringConverter.cs
 System.ServiceModel.Dispatcher/QueryStringConverter.cs
 System.ServiceModel.Dispatcher/WebHttpDispatchOperationSelector.cs
diff --git a/mcs/class/System.ServiceModel.Web/monotouch_System.ServiceModel.Web.dll.sources b/mcs/class/System.ServiceModel.Web/mobile_System.ServiceModel.Web.dll.sources
similarity index 100%
copy from mcs/class/System.ServiceModel.Web/monotouch_System.ServiceModel.Web.dll.sources
copy to mcs/class/System.ServiceModel.Web/mobile_System.ServiceModel.Web.dll.sources
diff --git a/mcs/class/System.ServiceModel.Web/monodroid_System.ServiceModel.Web.dll.sources b/mcs/class/System.ServiceModel.Web/monodroid_System.ServiceModel.Web.dll.sources
new file mode 100644
index 0000000..cbea0fa
--- /dev/null
+++ b/mcs/class/System.ServiceModel.Web/monodroid_System.ServiceModel.Web.dll.sources
@@ -0,0 +1 @@
+#include mobile_System.ServiceModel.Web.dll.sources
diff --git a/mcs/class/System.ServiceModel.Web/monotouch_System.ServiceModel.Web.dll.sources b/mcs/class/System.ServiceModel.Web/monotouch_System.ServiceModel.Web.dll.sources
index 464d623..cbea0fa 100644
--- a/mcs/class/System.ServiceModel.Web/monotouch_System.ServiceModel.Web.dll.sources
+++ b/mcs/class/System.ServiceModel.Web/monotouch_System.ServiceModel.Web.dll.sources
@@ -1,39 +1 @@
-Assembly/AssemblyInfo.cs
-System.Runtime.Serialization.Json/DataContractJsonSerializer.cs
-System.Runtime.Serialization.Json/IXmlJsonReaderInitializer.cs
-System.Runtime.Serialization.Json/IXmlJsonWriterInitializer.cs
-System.Runtime.Serialization.Json/JavaScriptObjectDeserializer.cs
-System.Runtime.Serialization.Json/JavaScriptReader.cs
-System.Runtime.Serialization.Json/JsonReader.cs
-System.Runtime.Serialization.Json/JsonReaderWriterFactory.cs
-System.Runtime.Serialization.Json/JsonSerializationReader.cs
-System.Runtime.Serialization.Json/JsonSerializationWriter.cs
-System.Runtime.Serialization.Json/JsonWriter.cs
-System.Runtime.Serialization.Json/TypeMap.cs
-System.ServiceModel.Channels/WebBodyFormatMessageProperty.cs
-System.ServiceModel.Channels/WebContentFormat.cs
-System.ServiceModel.Channels/WebContentTypeMapper.cs
-System.ServiceModel.Channels/WebMessageEncoder.cs
-System.ServiceModel.Channels/WebMessageEncoderFactory.cs
-System.ServiceModel.Channels/WebMessageEncodingBindingElement.cs
-System.ServiceModel.Description/WebHttpBehavior.cs
-System.ServiceModel.Dispatcher/JsonQueryStringConverter.cs
-System.ServiceModel.Dispatcher/QueryStringConverter.cs
-System.ServiceModel.Dispatcher/WebMessageFormatter.cs
-System.ServiceModel.Web/IncomingWebResponseContext.cs
-System.ServiceModel.Web/OutgoingWebRequestContext.cs
-System.ServiceModel.Web/WebAttributeInfo.cs
-System.ServiceModel.Web/WebChannelFactory.cs
-System.ServiceModel.Web/WebGetAttribute.cs
-System.ServiceModel.Web/WebInvokeAttribute.cs
-System.ServiceModel.Web/WebMessageBodyStyle.cs
-System.ServiceModel.Web/WebMessageFormat.cs
-System.ServiceModel.Web/WebOperationContext.cs
-System.ServiceModel/WebHttpBinding.cs
-System.ServiceModel/WebHttpSecurity.cs
-System.ServiceModel/WebHttpSecurityMode.cs
-System/UriTemplate.cs
-System/UriTemplateEquivalenceComparer.cs
-System/UriTemplateMatch.cs
-System/UriTemplateMatchException.cs
-System/UriTemplateTable.cs
+#include mobile_System.ServiceModel.Web.dll.sources
diff --git a/mcs/class/System.ServiceModel.Web/moonlight_raw_System.ServiceModel.Web.dll.sources b/mcs/class/System.ServiceModel.Web/moonlight_raw_System.ServiceModel.Web.dll.sources
index 07c6038..d2f6a2c 100644
--- a/mcs/class/System.ServiceModel.Web/moonlight_raw_System.ServiceModel.Web.dll.sources
+++ b/mcs/class/System.ServiceModel.Web/moonlight_raw_System.ServiceModel.Web.dll.sources
@@ -1,5 +1,6 @@
 Assembly/AssemblyInfo.cs
 System.Runtime.Serialization.Json/DataContractJsonSerializer_2_1.cs
+System.Runtime.Serialization.Json/ExternalTypeMap_2_1.cs
 System.Runtime.Serialization.Json/IXmlJsonReaderInitializer.cs
 System.Runtime.Serialization.Json/IXmlJsonWriterInitializer.cs
 System.Runtime.Serialization.Json/JavaScriptObjectDeserializer.cs
diff --git a/mcs/class/System.ServiceModel/Assembly/AssemblyInfo.cs b/mcs/class/System.ServiceModel/Assembly/AssemblyInfo.cs
index d09f9bb..de6e3ab 100644
--- a/mcs/class/System.ServiceModel/Assembly/AssemblyInfo.cs
+++ b/mcs/class/System.ServiceModel/Assembly/AssemblyInfo.cs
@@ -71,8 +71,8 @@ using System.Runtime.InteropServices;
 [assembly: RuntimeCompatibility (WrapNonExceptionThrows = true)]
 [assembly: SecurityPermission (SecurityAction.RequestMinimum, SkipVerification = true)]
 
+#if !MOONLIGHT && !NET_2_1
 [assembly: InternalsVisibleTo ("System.ServiceModel.Web, PublicKey=0024000004800000940000000602000000240000525341310004000001000100b5fc90e7027f67871e773a8fde8938c81dd402ba65b9201d60593e96c492651e889cc13f1415ebb53fac1131ae0bd333c5ee6021672d9718ea31a8aebd0da0072f25d87dba6fc90ffd598ed4da35e44c398c454307e8e33b8426143daec9f596836f97c8f74750e5975c64e2189f45def46b2a2b1247adc3652bf5c308055da9")]
-#if !MOONLIGHT
 [assembly: InternalsVisibleTo ("System.ServiceModel.Routing, PublicKey=0024000004800000940000000602000000240000525341310004000001000100b5fc90e7027f67871e773a8fde8938c81dd402ba65b9201d60593e96c492651e889cc13f1415ebb53fac1131ae0bd333c5ee6021672d9718ea31a8aebd0da0072f25d87dba6fc90ffd598ed4da35e44c398c454307e8e33b8426143daec9f596836f97c8f74750e5975c64e2189f45def46b2a2b1247adc3652bf5c308055da9")]
 [assembly: InternalsVisibleTo ("System.ServiceModel.Discovery, PublicKey=0024000004800000940000000602000000240000525341310004000001000100b5fc90e7027f67871e773a8fde8938c81dd402ba65b9201d60593e96c492651e889cc13f1415ebb53fac1131ae0bd333c5ee6021672d9718ea31a8aebd0da0072f25d87dba6fc90ffd598ed4da35e44c398c454307e8e33b8426143daec9f596836f97c8f74750e5975c64e2189f45def46b2a2b1247adc3652bf5c308055da9")] // AnnouncementChannelEndpointElementCollection requires it.
 #endif
diff --git a/mcs/class/System.ServiceModel/Assembly/ChangeLog b/mcs/class/System.ServiceModel/Assembly/ChangeLog
index d9de8d3..4651ce5 100644
--- a/mcs/class/System.ServiceModel/Assembly/ChangeLog
+++ b/mcs/class/System.ServiceModel/Assembly/ChangeLog
@@ -1,3 +1,26 @@
+2010-11-22  Jonathan Pryor  <jonpryor at vt.edu>
+
+	Remove IVT from System.ServiceModel on MonoDroid, MonoTouch
+	profiles.
+
+	This is ~identical to commit
+	a3ba2ab7a091b96c9e8917aab9bd9ad042a5d639, just applied to the
+	MonoDroid and MonoTouch profiles.
+
+	Furthermore, without this patch the MonoDroid & MonoTouch profiles
+	fail to build, as current versions of mcs (nicely) attempt to
+	verify that the output assembly name matches the IVT of a
+	referenced assembly, which isn't possible when System.Xml.dll has
+	an IVT entry for System.ServiceModel.Web.dll which differs from
+	System.ServiceModel.dll's IVT entry for
+	System.ServiceModel.Web.dll.
+
+2010-11-22  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* AssemblyInfo.cs: Remove IVT from System.ServiceModel on
+	Moonlight profile since SL use a different public key and it is
+	not required for the limited build provided by SL.
+
 2010-07-30  Atsushi Enomoto  <atsushi at ximian.com>
 
 	* AssemblyInfo.cs : add InternalVisibleTo(sys.sm.discovery).
diff --git a/mcs/class/System.ServiceModel/Assembly/ChangeLog b/mcs/class/System.ServiceModel/Assembly/ChangeLog.old
similarity index 100%
copy from mcs/class/System.ServiceModel/Assembly/ChangeLog
copy to mcs/class/System.ServiceModel/Assembly/ChangeLog.old
diff --git a/mcs/class/System.ServiceModel/ChangeLog b/mcs/class/System.ServiceModel/ChangeLog
index 3a1b24a..5a02813 100644
--- a/mcs/class/System.ServiceModel/ChangeLog
+++ b/mcs/class/System.ServiceModel/ChangeLog
@@ -1,3 +1,10 @@
+2010-11-04  Carlos Alberto Cortez  <calberto.cortez at gmail.com>
+
+	* System.ServiceModel_test.dll.sources: Add
+	MsmqTransportSecurityTest.cs, CustomPolicyConversionContext.cs,
+	ConnectionOrientedTransportBindingElementTest.cs, and
+	MsmqBindingElementBaseTest.cs to our test build.
+
 2010-10-20  Marek Habersack  <grendel at twistedcode.net>
 
 	[wcf] make /js and /jsdebug dispatchers work.
@@ -16,6 +23,37 @@
 	should first try to find one whose URL matches the current request
 	exactly.
 
+2010-10-14  Atsushi Eno  <atsushi at ximian.com>
+
+	Add SecurityDuplexSessionChannel, and making room for duplex
+	channel, phase 2.
+
+2010-09-16  Atsushi Eno  <atsushi at ximian.com>
+
+	Add ProtocolMapping support.
+
+2010-09-13  Atsushi Eno  <atsushi at ximian.com>
+
+	implemented large parts of WCF standard endpoints and
+	configuration support.
+
+2010-09-10  Atsushi Eno  <atsushi at ximian.com>
+
+	Remove USE_DATA_CONTRACT_IMPORTER conditional compilation flag.
+
+2010-09-10  Jb Evain  <jbevain at gmail.com>
+
+	Add another stub for the compatibility with the SL SDK
+
+2010-09-08  Jb Evain  <jbevain at gmail.com>
+
+	Factorize the System.ServiceModel monotouch and monodroid sources
+	into a mobile.sources
+
+2010-09-08  Jb Evain  <jbevain at gmail.com>
+
+	Enable the System.ServiceModel build for monodroid
+
 2010-07-30  Astushi Enomoto  <atsushi at ximian.com>
 
 	* System.ServiceModel.dll.sources: add 4.0 standard endpoint types.
diff --git a/mcs/class/System.ServiceModel/Dummy_2_1.cs b/mcs/class/System.ServiceModel/Dummy_2_1.cs
index 851422f..7ad2085 100644
--- a/mcs/class/System.ServiceModel/Dummy_2_1.cs
+++ b/mcs/class/System.ServiceModel/Dummy_2_1.cs
@@ -1,6 +1,17 @@
 using System.Reflection;
 using System.Runtime.Serialization;
 
+namespace System.Runtime.CompilerServices
+{
+	// introduced for silverlight sdk compatibility
+	internal class FriendAccessAllowedAttribute : Attribute
+	{
+		public FriendAccessAllowedAttribute ()
+		{
+		}
+	}
+}
+
 namespace System.ServiceModel
 {
 	public class EndpointIdentity {}
diff --git a/mcs/class/System.ServiceModel/Makefile b/mcs/class/System.ServiceModel/Makefile
index 3e4763c..976d669 100755
--- a/mcs/class/System.ServiceModel/Makefile
+++ b/mcs/class/System.ServiceModel/Makefile
@@ -8,7 +8,6 @@ RESOURCE_FILES = \
 
 LIBRARY = System.ServiceModel.dll
 LIB_MCS_FLAGS = \
-		/d:USE_DATA_CONTRACT_IMPORTER \
 		/nowarn:414,169,67,3005,436,219,618 \
 		/unsafe \
 	        /r:System.dll \
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Activation/ChangeLog b/mcs/class/System.ServiceModel/System.ServiceModel.Activation/ChangeLog
index 7e2c799..02c92ce 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Activation/ChangeLog
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Activation/ChangeLog
@@ -1,3 +1,7 @@
+2011-01-08  Marek Safar  <marek.safar at gmail.com>
+
+	Fixed missing protected internal modifier
+
 2009-10-02  Atsushi Enomoto  <atsushi at ximian.com>
 
 	* VirtualPathExtension.cs : new file.
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Activation/ChangeLog b/mcs/class/System.ServiceModel/System.ServiceModel.Activation/ChangeLog.old
similarity index 100%
copy from mcs/class/System.ServiceModel/System.ServiceModel.Activation/ChangeLog
copy to mcs/class/System.ServiceModel/System.ServiceModel.Activation/ChangeLog.old
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Activation/ServiceHostFactory.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Activation/ServiceHostFactory.cs
index a34e6d4..b14abe8 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Activation/ServiceHostFactory.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Activation/ServiceHostFactory.cs
@@ -40,7 +40,7 @@ namespace System.ServiceModel.Activation
 		}
 
 		[MonoTODO ("untested")]
-		protected internal virtual ServiceHost CreateServiceHost (
+		protected virtual ServiceHost CreateServiceHost (
 			Type serviceType, Uri [] baseAddresses)
 		{
 			return new ServiceHost (serviceType, baseAddresses);
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Channels.Http/ChangeLog b/mcs/class/System.ServiceModel/System.ServiceModel.Channels.Http/ChangeLog
index b6234d5..a7da49e 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Channels.Http/ChangeLog
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Channels.Http/ChangeLog
@@ -1,3 +1,12 @@
+2010-11-09  Marek Habersack  <grendel at twistedcode.net>
+
+	[wcf] AJAX GET requests work now.
+
+	HttpListenerManagerTable always looked up HttpListerManager
+	instances using the full URI while it should have disregarded the
+	/operation?parameters part of the request in order to match the
+	service endpoint's base address.
+
 2010-10-20  Marek Habersack  <grendel at twistedcode.net>
 
 	[wcf] make /js and /jsdebug dispatchers work.
@@ -30,6 +39,10 @@
 
 	Remove extra call to HttpResponse.Flush() which would crash.
 
+2010-09-24  Atsushi Eno  <atsushi at ximian.com>
+
+	Filter requests only by paths, excluding host and port.
+
 2010-08-30  Atsushi Eno  <atsushi at ximian.com>
 
 	Add not-working code for TransferMode support.
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Channels.Http/HttpChannelListenerEntry.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Channels.Http/HttpChannelListenerEntry.cs
index 4f9deb6..2cf8ba3 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Channels.Http/HttpChannelListenerEntry.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Channels.Http/HttpChannelListenerEntry.cs
@@ -69,7 +69,7 @@ namespace System.ServiceModel.Channels.Http
 			return p2 - p1;
 		}
 
-		const UriComponents cmpflag = UriComponents.HttpRequestUrl ^ UriComponents.Query;
+		const UriComponents cmpflag = UriComponents.Path;
 		const UriFormat fmtflag = UriFormat.SafeUnescaped;
 
 		internal bool FilterHttpContext (HttpContextInfo ctx)
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Channels.Http/HttpListenerManagerTable.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Channels.Http/HttpListenerManagerTable.cs
index 6c6a7e7..e837112 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Channels.Http/HttpListenerManagerTable.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Channels.Http/HttpListenerManagerTable.cs
@@ -74,12 +74,57 @@ namespace System.ServiceModel.Channels.Http
 		{
 			var m = listeners.FirstOrDefault (p => p.Key.Equals (uri)).Value;
 			if (m == null) {
-				if (ServiceHostingEnvironment.InAspNet)
-					m = new AspNetHttpListenerManager (uri);
-				else
-					m = new HttpStandaloneListenerManager (uri);
-				listeners [uri] = m;
+				// Two special cases
+				string absolutePath = uri.AbsolutePath;
+				if (absolutePath.EndsWith ("/js", StringComparison.Ordinal) ||
+				    absolutePath.EndsWith ("/jsdebug", StringComparison.Ordinal))
+					return CreateListenerManager (uri);
+				
+				// Try without the query, if any
+				UriBuilder ub = null;
+				if (!String.IsNullOrEmpty (uri.Query)) {
+					ub = new UriBuilder (uri);
+					ub.Query = null;
+
+					m = listeners.FirstOrDefault (p => p.Key.Equals (ub.Uri)).Value;
+					if (m != null)
+						return m;
+				}
+
+				// Chop off the part following the last / in the absolut path part
+				// of the Uri - this is the operation being called in, the remaining
+				// left-hand side of the absolute path should be the service
+				// endpoint address
+				if (ub == null) {
+					ub = new UriBuilder (uri);
+					ub.Query = null;
+				}
+				
+				int lastSlash = absolutePath.LastIndexOf ('/');
+				if (lastSlash != -1) {
+					ub.Path = absolutePath.Substring (0, lastSlash);
+					m = listeners.FirstOrDefault (p => p.Key.Equals (ub.Uri)).Value;
+					if (m != null)
+						return m;
+				}
 			}
+			
+			if (m == null)
+				return CreateListenerManager (uri);
+			
+			return m;
+		}
+
+		HttpListenerManager CreateListenerManager (Uri uri)
+		{
+			HttpListenerManager m;
+			
+			if (ServiceHostingEnvironment.InAspNet)
+				m = new AspNetHttpListenerManager (uri);
+			else
+				m = new HttpStandaloneListenerManager (uri);
+			listeners [uri] = m;
+
 			return m;
 		}
 	}
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Channels.Security/ChangeLog b/mcs/class/System.ServiceModel/System.ServiceModel.Channels.Security/ChangeLog
old mode 100755
new mode 100644
index b109247..9388d84
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Channels.Security/ChangeLog
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Channels.Security/ChangeLog
@@ -1,3 +1,18 @@
+2010-10-15  Atsushi Eno  <atsushi at ximian.com>
+
+	The previous changes somehow regressed on olive samples, so give
+	quick fixes.
+
+2010-10-14  Atsushi Eno  <atsushi at ximian.com>
+
+	Add SecurityDuplexSessionChannel, and making room for duplex
+	channel, phase 2.
+
+2010-10-14  Atsushi Eno  <atsushi at ximian.com>
+
+	Eliminate IReplyChannel dependency in security support and make
+	room for (TCP) duplex channel.
+
 2010-07-15  Atsushi Enomoto  <atsushi at ximian.com>
 
 	* SecurityReplyChannel.cs : when the inner channel gave null
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Channels.Security/ChangeLog b/mcs/class/System.ServiceModel/System.ServiceModel.Channels.Security/ChangeLog.old
similarity index 100%
copy from mcs/class/System.ServiceModel/System.ServiceModel.Channels.Security/ChangeLog
copy to mcs/class/System.ServiceModel/System.ServiceModel.Channels.Security/ChangeLog.old
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Channels.Security/MessageSecurityBindingSupport.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Channels.Security/MessageSecurityBindingSupport.cs
index eecc26d..c769542 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Channels.Security/MessageSecurityBindingSupport.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Channels.Security/MessageSecurityBindingSupport.cs
@@ -343,6 +343,7 @@ namespace System.ServiceModel.Channels.Security
 	class RecipientMessageSecurityBindingSupport : MessageSecurityBindingSupport
 	{
 		ChannelListenerBase listener;
+		Uri listen_uri;
 		SecurityToken encryption_token;
 		SecurityToken signing_token;
 
@@ -358,9 +359,11 @@ namespace System.ServiceModel.Channels.Security
 			get { return listener; }
 		}
 
-		public void Prepare (ChannelListenerBase listener)
+		// FIXME: this is invoked inconsistently between SecurityReplyChannel and SecurityDuplexSessionChannel on when to do it.
+		public void Prepare (ChannelListenerBase listener, Uri listenUri)
 		{
 			this.listener = listener;
+			this.listen_uri = listenUri;
 
 			PrepareAuthenticator ();
 
@@ -422,7 +425,7 @@ namespace System.ServiceModel.Channels.Security
 		{
 			SecurityTokenRequirement requirement =
 				new RecipientServiceModelSecurityTokenRequirement ();
-			requirement.Properties [ReqType.ListenUriProperty] = listener.Uri;
+			requirement.Properties [ReqType.ListenUriProperty] = listen_uri;
 			return requirement;
 		}
 
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Channels.Security/SecureMessageGenerator.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Channels.Security/SecureMessageGenerator.cs
index c72f424..4593992 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Channels.Security/SecureMessageGenerator.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Channels.Security/SecureMessageGenerator.cs
@@ -69,14 +69,6 @@ namespace System.ServiceModel.Channels.Security
 			this.message_to = messageTo;
 		}
 
-		public override SecurityRequestContext RequestContext {
-			get { return null; }
-		}
-
-		public override UniqueId RelatesTo {
-			get { return null; }
-		}
-
 		public override SecurityTokenParameters Parameters {
 			get { return security.InitiatorParameters; }
 		}
@@ -119,29 +111,19 @@ namespace System.ServiceModel.Channels.Security
 	internal class RecipientMessageSecurityGenerator : MessageSecurityGenerator
 	{
 		RecipientMessageSecurityBindingSupport security;
-		SecurityRequestContext req_ctx;
 
 		public RecipientMessageSecurityGenerator (
 			Message msg,
-			SecurityRequestContext requestContext,
+			SecurityMessageProperty requestSecProp,
 			RecipientMessageSecurityBindingSupport security)
 			: base (msg, security)
 		{
 			this.security = security;
-			req_ctx = requestContext;
 			SecurityMessageProperty secprop =
-				(SecurityMessageProperty) req_ctx.RequestMessage.Properties.Security.CreateCopy ();
+				(SecurityMessageProperty) requestSecProp.CreateCopy ();
 			msg.Properties.Security = secprop;
 		}
 
-		public override SecurityRequestContext RequestContext {
-			get { return req_ctx; }
-		}
-
-		public override UniqueId RelatesTo {
-			get { return req_ctx.RequestMessage.Headers.MessageId; }
-		}
-
 		public override SecurityTokenParameters Parameters {
 			get { return security.RecipientParameters; }
 		}
@@ -236,13 +218,9 @@ namespace System.ServiceModel.Channels.Security
 		public abstract bool ShouldIncludeToken (SecurityTokenInclusionMode mode, bool isInitialized);
 
 		public bool ShouldOutputEncryptedKey {
-			get { return RequestContext == null || RequestContext.RequestMessage.Properties.Security.ProtectionToken == null; } //security.Element is AsymmetricSecurityBindingElement; }
+			get { return Direction == MessageDirection.Input || secprop.ProtectionToken == null; } //security.Element is AsymmetricSecurityBindingElement; }
 		}
 
-		public abstract UniqueId RelatesTo { get; }
-
-		public abstract SecurityRequestContext RequestContext { get; }
-
 		public Message SecureMessage ()
 		{
 			secprop = Message.Properties.Security ?? new SecurityMessageProperty ();
@@ -261,21 +239,11 @@ namespace System.ServiceModel.Channels.Security
 				security.Element;
 			SecurityAlgorithmSuite suite = element.DefaultAlgorithmSuite;
 
-// FIXME: remove this hack
-if (!ShouldOutputEncryptedKey)
-	encToken = new BinarySecretSecurityToken (secprop.EncryptionKey);
-
 			string messageId = "uuid-" + Guid.NewGuid ();
 			int identForMessageId = 1;
 			XmlDocument doc = new XmlDocument ();
 			doc.PreserveWhitespace = true;
 
-			UniqueId relatesTo = RelatesTo;
-			if (relatesTo != null)
-				msg.Headers.RelatesTo = relatesTo;
-			else // FIXME: probably it is always added when it is stateful ?
-				msg.Headers.MessageId = new UniqueId ("urn:" + messageId);
-
 			// FIXME: get correct ReplyTo value
 			if (Direction == MessageDirection.Input)
 				msg.Headers.ReplyTo = new EndpointAddress (Constants.WsaAnonymousUri);
@@ -345,7 +313,7 @@ if (!ShouldOutputEncryptedKey)
 
 // FIXME: remove thid hack
 if (!ShouldOutputEncryptedKey)
-primaryToken = RequestContext.RequestMessage.Properties.Security.ProtectionToken.SecurityToken as WrappedKeySecurityToken;
+primaryToken = secprop.ProtectionToken.SecurityToken as WrappedKeySecurityToken;
 else
 			primaryToken =
 				// FIXME: remove this hack?
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Channels.Security/SecurityChannelFactory.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Channels.Security/SecurityChannelFactory.cs
index ec07773..9ef65f6 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Channels.Security/SecurityChannelFactory.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Channels.Security/SecurityChannelFactory.cs
@@ -71,14 +71,13 @@ namespace System.ServiceModel.Channels
 
 			if (typeof (TChannel) == typeof (IRequestChannel))
 				return (TChannel) (object) new SecurityRequestChannel ((IRequestChannel) (object) src, (SecurityChannelFactory<IRequestChannel>) (object) this);
-			if (typeof (TChannel) == typeof (IOutputChannel))
-				return (TChannel) (object) new SecurityOutputChannel ((IOutputChannel) (object) src, (SecurityChannelFactory<IOutputChannel>) (object) this);
 			if (typeof (TChannel) == typeof (IRequestSessionChannel))
 				return (TChannel) (object) new SecurityRequestSessionChannel ((IRequestSessionChannel) (object) src, (SecurityChannelFactory<IRequestSessionChannel>) (object) this);
-			if (typeof (TChannel) == typeof (IOutputSessionChannel))
-				return (TChannel) (object) new SecurityOutputSessionChannel ((IOutputSessionChannel) (object) src, (SecurityChannelFactory<IOutputSessionChannel>) (object) this);
 
-			throw new NotSupportedException ();
+			if (typeof (TChannel).IsAssignableFrom (typeof (IDuplexSessionChannel)))
+				return (TChannel) (object) new SecurityDuplexSessionChannel (this, (IChannel) (object) src, remoteAddress, via, security);
+
+			throw new NotSupportedException (String.Format ("Channel type '{0}' is not supported", typeof (TChannel)));
 		}
 
 		protected override void OnOpen (TimeSpan timeout)
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Channels.Security/SecurityChannelListener.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Channels.Security/SecurityChannelListener.cs
index 1879be0..464b2bf 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Channels.Security/SecurityChannelListener.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Channels.Security/SecurityChannelListener.cs
@@ -68,12 +68,16 @@ namespace System.ServiceModel.Channels.Security
 		{
 			if (typeof (TChannel) == typeof (IReplyChannel))
 				return (TChannel) (object) new SecurityReplyChannel ((SecurityChannelListener<IReplyChannel>) (object) this, (IReplyChannel) (object) src);
+
+			if (typeof (TChannel).IsAssignableFrom (typeof (IDuplexSessionChannel)))
+				return (TChannel) (object) new SecurityDuplexSessionChannel (this, src, security);
+
 			throw new NotImplementedException ();
 		}
 
 		void AcquireTokens ()
 		{
-			security.Prepare (this);
+			security.Prepare (this, Uri);
 		}
 
 		void ReleaseTokens ()
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Channels.Security/SecurityDuplexSessionChannel.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Channels.Security/SecurityDuplexSessionChannel.cs
new file mode 100644
index 0000000..924e0b9
--- /dev/null
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Channels.Security/SecurityDuplexSessionChannel.cs
@@ -0,0 +1,185 @@
+//
+// SecurityRequestChannel.cs
+//
+// Author:
+//	Atsushi Enomoto  <atsushi at ximian.com>
+//
+// Copyright (C) 2006 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.IdentityModel.Selectors;
+using System.IdentityModel.Tokens;
+using System.Runtime.Serialization;
+using System.Security.Cryptography;
+using System.Security.Cryptography.X509Certificates;
+using System.Security.Cryptography.Xml;
+using System.ServiceModel;
+using System.ServiceModel.Channels;
+using System.ServiceModel.Description;
+using System.ServiceModel.Security;
+using System.ServiceModel.Security.Tokens;
+using System.Xml;
+using System.Xml.XPath;
+
+using ReqType = System.ServiceModel.Security.Tokens.ServiceModelSecurityTokenRequirement;
+
+namespace System.ServiceModel.Channels.Security
+{
+	class SecurityDuplexSession : DuplexSessionBase
+	{
+		SecurityDuplexSessionChannel channel;
+		
+		public SecurityDuplexSession (SecurityDuplexSessionChannel channel)
+		{
+			this.channel = channel;
+		}
+		
+		public override TimeSpan DefaultCloseTimeout {
+			get { return channel.DefaultCloseTimeout; }
+		}
+		
+		public override void Close (TimeSpan timeout)
+		{
+			// valid only if the inner channel is ISessionChannel
+			var d = channel.Channel as IDuplexSessionChannel;
+			if (d != null)
+				d.Session.CloseOutputSession (timeout);
+		}
+	}
+	
+	class SecurityDuplexSessionChannel : DuplexChannelBase, IDuplexSessionChannel
+	{
+		IChannel channel;
+		InitiatorMessageSecurityBindingSupport security_initiator;
+		RecipientMessageSecurityBindingSupport security_recipient;
+		SecurityDuplexSession session;
+		
+		public SecurityDuplexSessionChannel (ChannelFactoryBase factory, IChannel innerChannel, EndpointAddress remoteAddress, Uri via, InitiatorMessageSecurityBindingSupport security)
+			: base (factory, remoteAddress, via)
+		{
+			this.channel = innerChannel;
+			session = new SecurityDuplexSession (this);
+			InitializeSecurityFunctionality (security);
+		}
+		
+		public SecurityDuplexSessionChannel (ChannelListenerBase listener, IChannel innerChannel, RecipientMessageSecurityBindingSupport security)
+			: base (listener)
+		{
+			this.channel = innerChannel;
+			session = new SecurityDuplexSession (this);
+			InitializeSecurityFunctionality (security);
+		}
+		
+		public IChannel Channel {
+			get { return channel; }
+		}
+
+		public IDuplexSession Session {
+			get { return session; }
+		}
+
+		void InitializeSecurityFunctionality (InitiatorMessageSecurityBindingSupport security)
+		{
+			security_initiator = security;
+		}
+
+		void InitializeSecurityFunctionality (RecipientMessageSecurityBindingSupport security)
+		{
+			security_recipient = security;
+		}
+
+		protected override void OnOpen (TimeSpan timeout)
+		{
+			channel.Open (timeout);
+			if (security_initiator != null)
+				security_initiator.Prepare ((ChannelFactoryBase) Manager, RemoteAddress);
+			else
+				security_recipient.Prepare ((ChannelListenerBase) Manager, LocalAddress.Uri);
+		}
+
+		protected override void OnClose (TimeSpan timeout)
+		{
+			if (security_initiator != null)
+				security_initiator.Release ();
+			else
+				security_recipient.Release ();
+			channel.Close (timeout);
+		}
+
+		protected override void OnAbort ()
+		{
+			if (security_initiator != null)
+				security_initiator.Release ();
+			else
+				security_recipient.Release ();
+			channel.Abort ();
+		}
+
+		public override bool TryReceive (TimeSpan timeout, out Message message)
+		{
+			ThrowIfDisposedOrNotOpen ();
+			var input = (IInputChannel) channel;
+			if (!input.TryReceive (timeout, out message))
+				return false;
+			message = DecryptMessage (message);
+			return true;
+		}
+
+		public override bool WaitForMessage (TimeSpan timeout)
+		{
+			var input = (IInputChannel) channel;
+			return input.WaitForMessage (timeout);
+		}
+
+		public override void Send (Message message)
+		{
+			Send (message, DefaultSendTimeout);
+		}
+
+		public override void Send (Message message, TimeSpan timeout)
+		{
+			Message secure = SecureMessage (message);
+			var output = (IOutputChannel) channel;
+			output.Send (secure, timeout);
+		}
+
+		Message SecureMessage (Message msg)
+		{
+			if (security_initiator != null)
+				return new InitiatorMessageSecurityGenerator (msg, security_initiator, RemoteAddress).SecureMessage ();
+			else
+				return new RecipientMessageSecurityGenerator (msg, null, security_recipient).SecureMessage (); // FIXME: supply SecurityMessageProperty (if any)
+		}
+
+		Message DecryptMessage (Message msg)
+		{
+			if (security_initiator != null)
+				return new InitiatorSecureMessageDecryptor (msg, null, security_initiator).DecryptMessage (); // FIXME: supply SecurityMessageProperty (if any)
+			else
+				return new RecipientSecureMessageDecryptor (msg, security_recipient).DecryptMessage ();
+		}
+	}
+}
+
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Channels.Security/SecurityOutputChannel.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Channels.Security/SecurityOutputChannel.cs
index 041d5f0..e45e17b 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Channels.Security/SecurityOutputChannel.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Channels.Security/SecurityOutputChannel.cs
@@ -26,6 +26,8 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+/*
+
 using System;
 using System.Collections.Generic;
 using System.Collections.ObjectModel;
@@ -129,3 +131,5 @@ namespace System.ServiceModel.Channels.Security
 		}
 	}
 }
+
+*/
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Channels.Security/SecurityRequestContext.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Channels.Security/SecurityRequestContext.cs
index 8d31f04..d7efa94 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Channels.Security/SecurityRequestContext.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Channels.Security/SecurityRequestContext.cs
@@ -123,7 +123,7 @@ namespace System.ServiceModel.Channels.Security
 
 		Message SecureMessage (Message input)
 		{
-			return new RecipientMessageSecurityGenerator (input, this, security).SecureMessage ();
+			return new RecipientMessageSecurityGenerator (input, RequestMessage.Properties.Security, security).SecureMessage ();
 		}
 	}
 }
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Channels/ChangeLog b/mcs/class/System.ServiceModel/System.ServiceModel.Channels/ChangeLog
index 338daa4..ec7b6d0 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Channels/ChangeLog
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Channels/ChangeLog
@@ -1,3 +1,26 @@
+2011-01-08  Marek Safar  <marek.safar at gmail.com>
+
+	Fixed missing protected internal modifier
+
+2010-11-11  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* HttpRequestChannel.cs: Do not use CookieContainer unless we know
+	its supported (e.g. client stack) otherwise we'll throw (browser
+	stack)
+
+2010-11-04  Carlos Alberto Cortez  <calberto.cortez at gmail.com>
+
+	* MsmqBindingElementBase.cs: Implement ExportPolicy.
+
+2010-11-04  Carlos Alberto Cortez  <calberto.cortez at gmail.com>
+
+	* ConnectionOrientedTransportBindingElement.cs: Implement
+	ExportPolicy.
+
+2010-11-04  Carlos Alberto Cortez  <calberto.cortez at gmail.com>
+
+	* HttpTransportBindingElement.cs: Implement ExportPolicy.
+
 2010-10-20  Marek Habersack  <grendel at twistedcode.net>
 
 	[wcf] make /js and /jsdebug dispatchers work.
@@ -16,10 +39,65 @@
 	should first try to find one whose URL matches the current request
 	exactly.
 
+2010-10-20  Atsushi Eno  <atsushi at ximian.com>
+
+	Add ExtendedProtectionPolicy members. Required by .config files by
+	.NET svcutil.
+
 2010-10-18  Marek Habersack  <grendel at twistedcode.net>
 
 	[wcf] ServiceHost directive can span several lines.
 
+2010-10-15  Atsushi Eno  <atsushi at ximian.com>
+
+	fixity fix.
+
+2010-10-15  Atsushi Eno  <atsushi at ximian.com>
+
+	Fix 2.1 build.
+
+2010-10-15  Atsushi Eno  <atsushi at ximian.com>
+
+	Enable SecurityBindingElement.CanBuildChannelListener
+	implementation again with fix.
+
+2010-10-15  Atsushi Eno  <atsushi at ximian.com>
+
+	The previous changes somehow regressed on olive samples, so give
+	quick fixes.
+
+2010-10-15  Atsushi Eno  <atsushi at ximian.com>
+
+	Implement NetTcpBinding.CanBuildChannelFactory/Listener and
+	several related stuff.
+
+	SecurityTokenParameters.InitializeSecurityTokenRequirement() needs
+	to become protected internal, so changed all overrides as well.
+
+	Some implementation in WindowsStreamSecurityBindingElement is
+	needed only for NetTcpBinding implementation.
+
+	Had to disable a test in SymmetricSecurityBindingElement that
+	depended on OneWay support (which is not yet done).
+
+2010-10-14  Atsushi Eno  <atsushi at ximian.com>
+
+	Fill NetTcpBinding security implementation a bit.
+
+2010-09-29  Atsushi Eno  <atsushi at ximian.com>
+
+	Add missing members.
+
+2010-09-29  Marek Habersack  <grendel at twistedcode.net>
+
+	[wcf] Make sure context exists in the dictionary getting its
+	associated wait handle.
+
+	SvcHttpHandler maintains a mapping of HttpContext to
+	ManualResetEvent. Entries are removed from the cache in
+	EndHttpRequest. The code makes sure the context exists in the
+	cache before attempting to access it.
+
 2010-09-29  Alan McGovern  <alan.mcgovern at gmail.com>
 
 	[System.ServiceModel] Fix a few potential exceptions in background
@@ -40,6 +118,38 @@
 	Rework TCP listening model, and fix AcceptTcpClient() to not drop
 	timed out requests that actually steals next requests in the air.
 
+2010-09-28  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* System.ServiceModel.Channels/HttpRequestChannel.cs: For
+	Moonlight use the WebResponse.SupportsHeaders before accessing the
+	Headers collection. This is needed because (the default) browser
+	stack does not expose the headers from its responses. Fix bug
+	#642193
+
+2010-09-24  Atsushi Eno  <atsushi at ximian.com>
+
+	Override IsContentTypeSupported() in per-encoding-binding-element
+	implementation to work as expected.
+
+2010-09-10  Atsushi Eno  <atsushi at ximian.com>
+
+	Avoid holding WebRequest. This should fix part of bug #636500.
+
+2010-09-03  Jb Evain  <jbevain at gmail.com>
+
+	Remove workaround for moonlight now that System.dll's
+	WebExceptionStatus is properly compiled
+
+2010-09-02  Atsushi Eno  <atsushi at ximian.com>
+
+	moonlight build workaround: smcs somehow rejects to compile this
+	code.
+
+2010-09-02  Atsushi Eno  <atsushi at ximian.com>
+
+	Throw EndpointNotFoundException when it cannot connect to the
+	remote server.
+
 2010-08-11  Atsushi Eno  <atsushi at ximian.com>
 
 	implement MessageEncodingBindingElement.GetProperty<T>().
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Channels/ConnectionOrientedTransportBindingElement.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Channels/ConnectionOrientedTransportBindingElement.cs
index 8aa1350..eb1ce2c 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Channels/ConnectionOrientedTransportBindingElement.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Channels/ConnectionOrientedTransportBindingElement.cs
@@ -30,12 +30,13 @@ using System.Collections.Generic;
 using System.Net;
 using System.ServiceModel.Channels;
 using System.ServiceModel.Description;
+using System.Xml;
 
 namespace System.ServiceModel.Channels
 {
 	[MonoTODO]
 	public abstract class ConnectionOrientedTransportBindingElement
-		: TransportBindingElement
+		: TransportBindingElement, IPolicyExportExtension
 	{
 		int connection_buf_size = 0x2000, max_buf_size = 0x10000,
 			max_pending_conn = 10, max_pending_accepts = 1;
@@ -136,5 +137,23 @@ namespace System.ServiceModel.Channels
 			// So, handle all properties in the derived types.
 			return base.GetProperty<T> (context);
 		}
+
+		void IPolicyExportExtension.ExportPolicy (MetadataExporter exporter, PolicyConversionContext context)
+		{
+			if (exporter == null)
+				throw new ArgumentNullException ("exporter");
+			if (context == null)
+				throw new ArgumentNullException ("context");
+
+			PolicyAssertionCollection assertions = context.GetBindingAssertions ();
+			XmlDocument doc = new XmlDocument ();
+
+			assertions.Add (doc.CreateElement ("wsaw", "UsingAddressing", "http://www.w3.org/2006/05/addressing/wsdl"));
+			assertions.Add (doc.CreateElement ("msb", "BinaryEncoding", "http://schemas.microsoft.com/ws/06/2004/mspolicy/netbinary1"));
+
+			if (transfer_mode == TransferMode.Streamed || transfer_mode == TransferMode.StreamedRequest ||
+				transfer_mode == TransferMode.StreamedResponse)
+				assertions.Add (doc.CreateElement ("msf", "Streamed", "http://schemas.microsoft.com/ws/2006/05/framing/policy"));
+		}
 	}
 }
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Channels/HttpRequestChannel.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Channels/HttpRequestChannel.cs
index c92c3b0..5f4ac53 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Channels/HttpRequestChannel.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Channels/HttpRequestChannel.cs
@@ -41,7 +41,7 @@ namespace System.ServiceModel.Channels
 	{
 		HttpChannelFactory<IRequestChannel> source;
 
-		WebRequest web_request;
+		List<WebRequest> web_requests = new List<WebRequest> ();
 
 		// Constructor
 
@@ -76,14 +76,22 @@ namespace System.ServiceModel.Channels
 				 	destination = Via ?? RemoteAddress.Uri;
 			}
 
-			web_request = HttpWebRequest.Create (destination);
+			var web_request = HttpWebRequest.Create (destination);
+			web_requests.Add (web_request);
+			result.WebRequest = web_request;
 			web_request.Method = "POST";
 			web_request.ContentType = Encoder.ContentType;
-
 #if NET_2_1
-			var cmgr = source.GetProperty<IHttpCookieContainerManager> ();
-			if (cmgr != null)
-				((HttpWebRequest) web_request).CookieContainer = cmgr.CookieContainer;
+			HttpWebRequest hwr = (web_request as HttpWebRequest);
+#if MOONLIGHT
+			if (hwr.SupportsCookieContainer) {
+#endif
+				var cmgr = source.GetProperty<IHttpCookieContainerManager> ();
+				if (cmgr != null)
+					hwr.CookieContainer = cmgr.CookieContainer;
+#if MOONLIGHT
+			}
+#endif
 #endif
 
 #if !MOONLIGHT // until we support NetworkCredential like SL4 will do.
@@ -163,6 +171,18 @@ namespace System.ServiceModel.Channels
 						using (Stream s = web_request.EndGetRequestStream (r))
 							s.Write (buffer.GetBuffer (), 0, (int) buffer.Length);
 						web_request.BeginGetResponse (GotResponse, result);
+					} catch (WebException ex) {
+						switch (ex.Status) {
+#if !NET_2_1
+						case WebExceptionStatus.NameResolutionFailure:
+#endif
+						case WebExceptionStatus.ConnectFailure:
+							result.Complete (new EndpointNotFoundException (new EndpointNotFoundException ().Message, ex));
+							break;
+						default:
+							result.Complete (ex);
+							break;
+						}
 					} catch (Exception ex) {
 						result.Complete (ex);
 					}
@@ -180,7 +200,7 @@ namespace System.ServiceModel.Channels
 			WebResponse res;
 			Stream resstr;
 			try {
-				res = web_request.EndGetResponse (result);
+				res = channelResult.WebRequest.EndGetResponse (result);
 				resstr = res.GetResponseStream ();
 			} catch (WebException we) {
 				res = we.Response;
@@ -230,8 +250,15 @@ namespace System.ServiceModel.Channels
 				}
 
 				var rp = new HttpResponseMessageProperty () { StatusCode = hrr.StatusCode, StatusDescription = hrr.StatusDescription };
+#if MOONLIGHT
+				if (hrr.SupportsHeaders) {
+					foreach (string key in hrr.Headers)
+						rp.Headers [key] = hrr.Headers [key];
+				}
+#else
 				foreach (var key in hrr.Headers.AllKeys)
 					rp.Headers [key] = hrr.Headers [key];
+#endif
 				ret.Properties.Add (HttpResponseMessageProperty.Name, rp);
 
 				channelResult.Response = ret;
@@ -247,7 +274,7 @@ namespace System.ServiceModel.Channels
 		{
 			ThrowIfDisposedOrNotOpen ();
 
-			HttpChannelRequestAsyncResult result = new HttpChannelRequestAsyncResult (message, timeout, callback, state);
+			HttpChannelRequestAsyncResult result = new HttpChannelRequestAsyncResult (message, timeout, this, callback, state);
 			BeginProcessRequest (result);
 			return result;
 		}
@@ -267,25 +294,21 @@ namespace System.ServiceModel.Channels
 
 		protected override void OnAbort ()
 		{
-			if (web_request != null)
+			foreach (var web_request in web_requests)
 				web_request.Abort ();
-			web_request = null;
+			web_requests.Clear ();
 		}
 
 		// Close
 
 		protected override void OnClose (TimeSpan timeout)
 		{
-			if (web_request != null)
-				web_request.Abort ();
-			web_request = null;
+			OnAbort ();
 		}
 
 		protected override IAsyncResult OnBeginClose (TimeSpan timeout, AsyncCallback callback, object state)
 		{
-			if (web_request != null)
-				web_request.Abort ();
-			web_request = null;
+			OnAbort ();
 			return base.OnBeginClose (timeout, callback, state);
 		}
 
@@ -312,7 +335,7 @@ namespace System.ServiceModel.Channels
 			base.OnEndOpen (result);
 		}
 
-		class HttpChannelRequestAsyncResult : IAsyncResult
+		class HttpChannelRequestAsyncResult : IAsyncResult, IDisposable
 		{
 			public Message Message {
 				get; private set;
@@ -327,11 +350,13 @@ namespace System.ServiceModel.Channels
 			Exception error;
 			object locker = new object ();
 			bool is_completed;
+			HttpRequestChannel owner;
 
-			public HttpChannelRequestAsyncResult (Message message, TimeSpan timeout, AsyncCallback callback, object state)
+			public HttpChannelRequestAsyncResult (Message message, TimeSpan timeout, HttpRequestChannel owner, AsyncCallback callback, object state)
 			{
 				Message = message;
 				Timeout = timeout;
+				this.owner = owner;
 				this.callback = callback;
 				AsyncState = state;
 			}
@@ -340,6 +365,8 @@ namespace System.ServiceModel.Channels
 				get; set;
 			}
 
+			public WebRequest WebRequest { get; set; }
+
 			public WaitHandle AsyncWaitHandle {
 				get {
 					lock (locker) {
@@ -383,6 +410,7 @@ namespace System.ServiceModel.Channels
 					lock (locker) {
 						if (is_completed && wait != null)
 							wait.Set ();
+						Cleanup ();
 					}
 				}
 			}
@@ -405,6 +433,16 @@ namespace System.ServiceModel.Channels
 				if (error != null)
 					throw error;
 			}
+			
+			public void Dispose ()
+			{
+				Cleanup ();
+			}
+			
+			void Cleanup ()
+			{
+				owner.web_requests.Remove (WebRequest);
+			}
 		}
 	}
 }
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Channels/HttpTransportBindingElement.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Channels/HttpTransportBindingElement.cs
index acd10c6..470d0bc 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Channels/HttpTransportBindingElement.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Channels/HttpTransportBindingElement.cs
@@ -4,7 +4,7 @@
 // Author:
 //	Atsushi Enomoto <atsushi at ximian.com>
 //
-// Copyright (C) 2005 Novell, Inc.  http://www.novell.com
+// Copyright (C) 2005-2010 Novell, Inc.  http://www.novell.com
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -27,13 +27,18 @@
 //
 using System;
 using System.Collections.Generic;
+using System.ComponentModel;
 using System.Net;
 using System.Net.Security;
+#if NET_4_0
+using System.Security.Authentication.ExtendedProtection;
+#endif
 using System.ServiceModel.Channels;
 #if !NET_2_1
 using System.ServiceModel.Channels.Http;
 #endif
 using System.ServiceModel.Description;
+using System.Xml;
 
 namespace System.ServiceModel.Channels
 {
@@ -81,50 +86,90 @@ namespace System.ServiceModel.Channels
 			auth_scheme = other.auth_scheme;
 			proxy_auth_scheme = other.proxy_auth_scheme;
 #endif
+
+#if NET_4_0
+			DecompressionEnabled = other.DecompressionEnabled;
+			LegacyExtendedProtectionPolicy = other.LegacyExtendedProtectionPolicy;
+			ExtendedProtectionPolicy = other.ExtendedProtectionPolicy;
+#endif
 		}
 
 #if !MOONLIGHT
+#if NET_4_0
+		[DefaultValue (AuthenticationSchemes.Anonymous)]
+#endif
 		public AuthenticationSchemes AuthenticationScheme {
 			get { return auth_scheme; }
 			set { auth_scheme = value; }
 		}
 
+#if NET_4_0
+		[DefaultValue (AuthenticationSchemes.Anonymous)]
+#endif
 		public AuthenticationSchemes ProxyAuthenticationScheme {
 			get { return proxy_auth_scheme; }
 			set { proxy_auth_scheme = value; }
 		}
 #endif
 
+#if NET_4_0
+		[DefaultValue (false)]
+#endif
 		public bool AllowCookies {
 			get { return allow_cookies; }
 			set { allow_cookies = value; }
 		}
 
+#if NET_4_0
+		[DefaultValue (false)]
+#endif
 		public bool BypassProxyOnLocal {
 			get { return bypass_proxy_on_local; }
 			set { bypass_proxy_on_local = value; }
 		}
 
+#if NET_4_0
+		[DefaultValue (false)]
+		[MonoTODO]
+		public bool DecompressionEnabled { get; set; }
+#endif
+
+#if NET_4_0
+		[DefaultValue (HostNameComparisonMode.StrongWildcard)]
+#endif
 		public HostNameComparisonMode HostNameComparisonMode {
 			get { return host_cmp_mode; }
 			set { host_cmp_mode = value; }
 		}
 
+#if NET_4_0
+		[DefaultValue (true)]
+#endif
 		public bool KeepAliveEnabled {
 			get { return keep_alive_enabled; }
 			set { keep_alive_enabled = value; }
 		}
 
+#if NET_4_0
+		[DefaultValue (0x10000)]
+#endif
 		public int MaxBufferSize {
 			get { return max_buffer_size; }
 			set { max_buffer_size = value; }
 		}
 
+#if NET_4_0
+		[DefaultValue (null)]
+		[TypeConverter (typeof (UriTypeConverter))]
+#endif
 		public Uri ProxyAddress {
 			get { return proxy_address; }
 			set { proxy_address = value; }
 		}
 
+#if NET_4_0
+		[DefaultValue ("")]
+#endif
 		public string Realm {
 			get { return realm; }
 			set { realm = value; }
@@ -134,21 +179,39 @@ namespace System.ServiceModel.Channels
 			get { return Uri.UriSchemeHttp; }
 		}
 
+#if NET_4_0
+		[DefaultValue (TransferMode.Buffered)]
+#endif
 		public TransferMode TransferMode {
 			get { return transfer_mode; }
 			set { transfer_mode = value; }
 		}
 
+#if NET_4_0
+		[DefaultValue (false)]
+#endif
 		public bool UnsafeConnectionNtlmAuthentication {
 			get { return unsafe_ntlm_auth; }
 			set { unsafe_ntlm_auth = value; }
 		}
 
+#if NET_4_0
+		[DefaultValue (true)]
+#endif
 		public bool UseDefaultWebProxy {
 			get { return use_default_proxy; }
 			set { use_default_proxy = value; }
 		}
 
+#if NET_4_0
+		[Obsolete ("Use ExtendedProtectionPolicy")]
+		[MonoTODO]
+		public object LegacyExtendedProtectionPolicy { get; set; }
+
+		[MonoTODO]
+		public ExtendedProtectionPolicy ExtendedProtectionPolicy { get; set; }
+#endif
+
 		public override bool CanBuildChannelFactory<TChannel> (
 			BindingContext context)
 		{
@@ -203,12 +266,30 @@ namespace System.ServiceModel.Channels
 		}
 
 #if !NET_2_1
-		[MonoTODO]
 		void IPolicyExportExtension.ExportPolicy (
 			MetadataExporter exporter,
 			PolicyConversionContext context)
 		{
-			throw new NotImplementedException ();
+			if (exporter == null)
+				throw new ArgumentNullException ("exporter");
+			if (context == null)
+				throw new ArgumentNullException ("context");
+
+			PolicyAssertionCollection assertions = context.GetBindingAssertions ();
+			XmlDocument doc = new XmlDocument ();
+
+			assertions.Add (doc.CreateElement ("wsaw", "UsingAddressing", "http://www.w3.org/2006/05/addressing/wsdl"));
+
+			switch (auth_scheme) {
+				case AuthenticationSchemes.Basic:
+				case AuthenticationSchemes.Digest:
+				case AuthenticationSchemes.Negotiate:
+				case AuthenticationSchemes.Ntlm:
+					assertions.Add (doc.CreateElement ("http", 
+						auth_scheme.ToString () + "Authentication", 
+						"http://schemas.microsoft.com/ws/06/2004/policy/http"));
+					break;
+			}
 		}
 
 		[MonoTODO]
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Channels/MessageEncoder.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Channels/MessageEncoder.cs
index 15a841d..cebc709 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Channels/MessageEncoder.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Channels/MessageEncoder.cs
@@ -51,7 +51,12 @@ namespace System.ServiceModel.Channels
 
 		public virtual bool IsContentTypeSupported (string contentType)
 		{
-			return contentType == ContentType;
+			if (contentType == null)
+				throw new ArgumentNullException ("contentType");
+			int idx = contentType.IndexOf (';');
+			if (idx > 0)
+				return contentType == ContentType;
+			return contentType == MediaType;
 		}
 
 		public Message ReadMessage (ArraySegment<byte> buffer,
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Channels/MsmqBindingElementBase.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Channels/MsmqBindingElementBase.cs
index 5503c1a..6b7af7b 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Channels/MsmqBindingElementBase.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Channels/MsmqBindingElementBase.cs
@@ -28,6 +28,7 @@
 using System;
 using System.ServiceModel;
 using System.ServiceModel.Description;
+using System.Xml;
 
 namespace System.ServiceModel.Channels
 {
@@ -119,10 +120,32 @@ namespace System.ServiceModel.Channels
 			return base.GetProperty<T> (context);
 		}
 
-		[MonoTODO]
 		void IPolicyExportExtension.ExportPolicy (MetadataExporter exporter, PolicyConversionContext context)
 		{
-			throw new NotImplementedException ();
+			if (exporter == null)
+				throw new ArgumentNullException ("exporter");
+			if (context == null)
+				throw new ArgumentNullException ("context");
+
+			PolicyAssertionCollection assertions = context.GetBindingAssertions ();
+			XmlDocument doc = new XmlDocument ();
+
+			assertions.Add (doc.CreateElement ("wsaw", "UsingAddressing", "http://www.w3.org/2006/05/addressing/wsdl"));
+			assertions.Add (doc.CreateElement ("msmq", "Authenticated", "http://schemas.microsoft.com/ws/06/2004/mspolicy/msmq"));
+			assertions.Add (doc.CreateElement ("msb", "BinaryEncoding",
+					"http://schemas.microsoft.com/ws/06/2004/mspolicy/netbinary1"));
+
+			if (transport_security.MsmqAuthenticationMode == MsmqAuthenticationMode.WindowsDomain)
+				assertions.Add (doc.CreateElement ("msmq", "WindowsDomain",
+					"http://schemas.microsoft.com/ws/06/2004/mspolicy/msmq"));
+
+			if (!durable)
+				assertions.Add (doc.CreateElement ("msmq", "MsmqVolatile", 
+					"http://schemas.microsoft.com/ws/06/2004/mspolicy/msmq"));
+
+			if (!exactly_once)
+				assertions.Add (doc.CreateElement ("msmq", "MsmqBestEffort", 
+					"http://schemas.microsoft.com/ws/06/2004/mspolicy/msmq"));
 		}
 
 		[MonoTODO]
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Channels/PeerCustomResolverBindingElement.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Channels/PeerCustomResolverBindingElement.cs
index ba152a5..19cf3ea 100755
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Channels/PeerCustomResolverBindingElement.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Channels/PeerCustomResolverBindingElement.cs
@@ -44,8 +44,7 @@ namespace System.ServiceModel.Channels
 			settings = new PeerCustomResolverSettings ();
 		}
 
-		private PeerCustomResolverBindingElement (
-			PeerCustomResolverBindingElement other)
+		public PeerCustomResolverBindingElement (PeerCustomResolverBindingElement other)
 			: base (other)
 		{
 			ReferralPolicy = other.ReferralPolicy;
@@ -66,9 +65,24 @@ namespace System.ServiceModel.Channels
 		BindingContext context;
 		PeerCustomResolverSettings settings;
 
+		public EndpointAddress Address {
+			get { return settings.Address; }
+			set { settings.Address = value; }
+		}
+
+		public Binding Binding {
+			get { return settings.Binding; }
+			set { settings.Binding = value; }
+		}
+
 		[MonoTODO]
 		public override PeerReferralPolicy ReferralPolicy { get; set; }
 
+		public override bool CanBuildChannelFactory<TChannel> (BindingContext context)
+		{
+			return context.CanBuildInnerChannelFactory<TChannel> ();
+		}
+
 		public override IChannelFactory<TChannel> BuildChannelFactory<TChannel> (
 			BindingContext context)
 		{
@@ -79,6 +93,11 @@ namespace System.ServiceModel.Channels
 			return cf;
 		}
 
+		public override bool CanBuildChannelListener<TChannel> (BindingContext context)
+		{
+			return context.CanBuildInnerChannelListener<TChannel> ();
+		}
+
 		public override IChannelListener<TChannel>
 			BuildChannelListener<TChannel> (
 			BindingContext context)
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Channels/SecurityBindingElement.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Channels/SecurityBindingElement.cs
index 6fe0bb1..9b90339 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Channels/SecurityBindingElement.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Channels/SecurityBindingElement.cs
@@ -135,10 +135,43 @@ namespace System.ServiceModel.Channels
 		}
 #endif
 
-		[MonoTODO ("It supports only IRequestSessionChannel")]
+		[MonoTODO ("Implement for TransportSecurityBindingElement")]
 		public override bool CanBuildChannelFactory<TChannel> (BindingContext context)
 		{
+#if NET_2_1
+			// not sure this should be like this, but there isn't Symmetric/Asymmetric elements in 2.1 anyways.
 			return context.CanBuildInnerChannelFactory<TChannel> ();
+#else
+			if (this is TransportSecurityBindingElement)
+				throw new NotImplementedException ();
+
+			var symm = this as SymmetricSecurityBindingElement;
+			var asymm = this as AsymmetricSecurityBindingElement;
+			var pt = symm != null ? symm.ProtectionTokenParameters : asymm != null ? asymm.InitiatorTokenParameters : null;
+			if (pt == null)
+				return false;
+
+			var t = typeof (TChannel);
+			var req = new InitiatorServiceModelSecurityTokenRequirement ();
+			pt.InitializeSecurityTokenRequirement (req);
+			object dummy;
+			if (req.Properties.TryGetValue (ServiceModelSecurityTokenRequirement.IssuedSecurityTokenParametersProperty, out dummy) && dummy != null) {
+				if (t == typeof (IRequestSessionChannel))
+					return context.CanBuildInnerChannelFactory<IRequestChannel> () ||
+						context.CanBuildInnerChannelFactory<IRequestSessionChannel> ();
+				else if (t == typeof (IDuplexSessionChannel))
+					return context.CanBuildInnerChannelFactory<IDuplexChannel> () ||
+						context.CanBuildInnerChannelFactory<IDuplexSessionChannel> ();
+			} else {
+				if (t == typeof (IRequestChannel))
+					return context.CanBuildInnerChannelFactory<IRequestChannel> () ||
+						context.CanBuildInnerChannelFactory<IRequestSessionChannel> ();
+				else if (t == typeof (IDuplexChannel))
+					return context.CanBuildInnerChannelFactory<IDuplexChannel> () ||
+						context.CanBuildInnerChannelFactory<IDuplexSessionChannel> ();
+			}
+			return false;
+#endif
 		}
 
 		public override IChannelFactory<TChannel> BuildChannelFactory<TChannel> (
@@ -151,10 +184,38 @@ namespace System.ServiceModel.Channels
 			BuildChannelFactoryCore<TChannel> (BindingContext context);
 
 #if !NET_2_1
-		[MonoTODO ("It probably supports only IReplySessionChannel")]
+		[MonoTODO ("Implement for TransportSecurityBindingElement")]
 		public override bool CanBuildChannelListener<TChannel> (BindingContext context)
 		{
-			return context.CanBuildInnerChannelListener<TChannel> ();
+			if (this is TransportSecurityBindingElement)
+				throw new NotImplementedException ();
+
+			var symm = this as SymmetricSecurityBindingElement;
+			var asymm = this as AsymmetricSecurityBindingElement;
+			var pt = symm != null ? symm.ProtectionTokenParameters : asymm != null ? asymm.RecipientTokenParameters : null;
+			if (pt == null)
+				return false;
+
+			var t = typeof (TChannel);
+			var req = new InitiatorServiceModelSecurityTokenRequirement ();
+			pt.InitializeSecurityTokenRequirement (req);
+			object dummy;
+			if (req.Properties.TryGetValue (ServiceModelSecurityTokenRequirement.IssuedSecurityTokenParametersProperty, out dummy) && dummy != null) {
+				if (t == typeof (IReplySessionChannel))
+					return context.CanBuildInnerChannelListener<IReplyChannel> () ||
+						context.CanBuildInnerChannelListener<IReplySessionChannel> ();
+				else if (t == typeof (IDuplexSessionChannel))
+					return context.CanBuildInnerChannelListener<IDuplexChannel> () ||
+						context.CanBuildInnerChannelListener<IDuplexSessionChannel> ();
+			} else {
+				if (t == typeof (IReplyChannel))
+					return context.CanBuildInnerChannelListener<IReplyChannel> () ||
+						context.CanBuildInnerChannelListener<IReplySessionChannel> ();
+				else if (t == typeof (IDuplexChannel))
+					return context.CanBuildInnerChannelListener<IDuplexChannel> () ||
+						context.CanBuildInnerChannelListener<IDuplexSessionChannel> ();
+			}
+			return false;
 		}
 
 		public override IChannelListener<TChannel> BuildChannelListener<TChannel> (
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Channels/SvcHttpHandler.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Channels/SvcHttpHandler.cs
index df75fd2..4a1a839 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Channels/SvcHttpHandler.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Channels/SvcHttpHandler.cs
@@ -89,9 +89,13 @@ namespace System.ServiceModel.Channels
 
 		public void EndHttpRequest (HttpContext context)
 		{
-			var wait = wcf_wait_handles [context];
+			ManualResetEvent wait;
+			if (!wcf_wait_handles.TryGetValue (context, out wait))
+				return;
+
 			wcf_wait_handles.Remove (context);
-			wait.Set ();
+			if (wait != null)
+				wait.Set ();
 		}
 
 		// called from SvcHttpHandlerFactory's remove callback (i.e.
@@ -124,10 +128,10 @@ namespace System.ServiceModel.Channels
 
 			//ServiceHost for this not created yet
 			var baseUri = new Uri (new Uri (HttpContext.Current.Request.Url.GetLeftPart (UriPartial.Authority)), path);
-			if (factory_type != null) {
-				host = ((ServiceHostFactory) Activator.CreateInstance (factory_type)).CreateServiceHost (type, new Uri [] {baseUri});
-			}
-			else
+//			if (factory_type != null) {
+//				host = ((ServiceHostFactory) Activator.CreateInstance (factory_type)).CreateServiceHost (type, new Uri [] {baseUri});
+//			}
+//			else
 				host = new ServiceHost (type, baseUri);
 			host.Extensions.Add (new VirtualPathExtension (baseUri.AbsolutePath));
 
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Channels/WindowsStreamSecurityBindingElement.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Channels/WindowsStreamSecurityBindingElement.cs
index f37259c..0f0c61d 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Channels/WindowsStreamSecurityBindingElement.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Channels/WindowsStreamSecurityBindingElement.cs
@@ -39,50 +39,45 @@ namespace System.ServiceModel.Channels
 	public class WindowsStreamSecurityBindingElement
 		: BindingElement, ISecurityCapabilities, IPolicyExportExtension
 	{
-		[MonoTODO]
 		public WindowsStreamSecurityBindingElement ()
 		{
 		}
 
-		[MonoTODO]
-		private WindowsStreamSecurityBindingElement (
+		public WindowsStreamSecurityBindingElement (
 			WindowsStreamSecurityBindingElement other)
 			: base (other)
 		{
-			throw new NotImplementedException ();
+			ProtectionLevel = other.ProtectionLevel;
 		}
 
-		[MonoTODO]
+		public ProtectionLevel ProtectionLevel { get; set; }
+
 		public override IChannelFactory<TChannel>
 			BuildChannelFactory<TChannel> (
 			BindingContext context)
 		{
-			throw new NotImplementedException ();
+			return context.BuildInnerChannelFactory<TChannel> ();
 		}
 
-		[MonoTODO]
 		public override IChannelListener<TChannel>
 			BuildChannelListener<TChannel> (
 			BindingContext context)
 		{
-			throw new NotImplementedException ();
+			return context.BuildInnerChannelListener<TChannel> ();
 		}
 
-		[MonoTODO]
 		public override bool CanBuildChannelFactory<TChannel> (
 			BindingContext context)
 		{
-			throw new NotImplementedException ();
+			return context.CanBuildInnerChannelFactory<TChannel> ();
 		}
 
-		[MonoTODO]
 		public override bool CanBuildChannelListener<TChannel> (
 			BindingContext context)
 		{
-			throw new NotImplementedException ();
+			return context.CanBuildInnerChannelListener<TChannel> ();
 		}
 
-		[MonoTODO]
 		public override BindingElement Clone ()
 		{
 			return new WindowsStreamSecurityBindingElement (this);
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/ChangeLog b/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/ChangeLog
index 2691244..656223f 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/ChangeLog
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/ChangeLog
@@ -1,3 +1,89 @@
+2010-10-20  Atsushi Eno  <atsushi at ximian.com>
+
+	Forgot #if NET_4_0.
+
+2010-10-20  Atsushi Eno  <atsushi at ximian.com>
+
+	Add ExtendedProtectionPolicy members. Required by .config files by
+	.NET svcutil.
+
+2010-10-05  Atsushi Eno  <atsushi at ximian.com>
+
+	Do not overwrite properly configured ServiceBehaviorElement.Name.
+
+2010-09-28  Marek Habersack  <grendel at twistedcode.net>
+
+	* NamedServiceModelExtensionCollectionElement.cs: minimum length
+	of the Name property value is 0 for 4.0 *
+	ServiceBehaviorElementCollection.cs: added an override of BaseAdd
+	which makes sure that the element being added has its Name set to
+	String.Empty if the element's name is null * ServiceHostBase.cs:
+	support for simplified behavior configuration. Refactored behavior
+	addition code to a separate method. Check whether behavior is not
+	in the collection before adding it.
+
+2010-09-27  Marek Habersack  <grendel at twistedcode.net>
+
+	[wcf]
+	System.ServiceModel.Configuration.CustomBindignCollectionElement.GetDefault
+	returns an instance of CustomBinding
+
+2010-09-21  Atsushi Eno  <atsushi at ximian.com>
+
+	Add missing Properties property.
+
+2010-09-18  Atsushi Eno  <atsushi at ximian.com>
+
+	ProtocolMapping needed config section, default items and support
+	in ServiceHostBase.
+
+2010-09-16  Atsushi Eno  <atsushi at ximian.com>
+
+	Add ProtocolMapping support.
+
+2010-09-16  Atsushi Eno  <atsushi at ximian.com>
+
+	Return new instance.
+
+2010-09-16  Atsushi Eno  <atsushi at ximian.com>
+
+	Add the trickiest line that had me; AddElementName is not on
+	ConfigurationProperty here.
+
+2010-09-15  Atsushi Eno  <atsushi at ximian.com>
+
+	add more NET_4_0.
+
+2010-09-15  Atsushi Eno  <atsushi at ximian.com>
+
+	Add NET_4_0.
+
+2010-09-14  Atsushi Eno  <atsushi at ximian.com>
+
+	ongoing standard endpoint configuration support work.
+
+2010-09-14  Atsushi Eno  <atsushi at ximian.com>
+
+	Add new properties in 4.0.
+
+2010-09-14  Atsushi Eno  <atsushi at ximian.com>
+
+	Avoid crash by missing config attributes.
+
+2010-09-13  Atsushi Eno  <atsushi at ximian.com>
+
+	implemented large parts of WCF standard endpoints and
+	configuration support.
+
+2010-09-10  Atsushi Eno  <atsushi at ximian.com>
+
+	Add missing members and implement most of it.
+
+2010-09-01  Atsushi Eno  <atsushi at ximian.com>
+
+	Add IdentityElement implementation and some supplemental extension
+	methods for discovery.
+
 2010-08-02  atsushieno  <atsushi at ximian.com>
 
 	Add build fix (not sure if it is correct; MSDN does not tell it
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/ChannelEndpointElement.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/ChannelEndpointElement.cs
index 145a981..3ca5091 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/ChannelEndpointElement.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/ChannelEndpointElement.cs
@@ -68,6 +68,10 @@ namespace System.ServiceModel.Configuration
 		static ConfigurationProperty headers;
 		static ConfigurationProperty identity;
 		static ConfigurationProperty name;
+#if NET_4_0
+		static ConfigurationProperty endpoint_configuration;
+		static ConfigurationProperty kind;
+#endif
 
 		static ChannelEndpointElement ()
 		{
@@ -104,6 +108,11 @@ namespace System.ServiceModel.Configuration
 				typeof (string), "", new StringConverter (), null,
 				ConfigurationPropertyOptions.IsKey);
 
+#if NET_4_0
+			endpoint_configuration = new ConfigurationProperty ("endpointConfiguration", typeof (string), "", null, new StringValidator (0), ConfigurationPropertyOptions.IsKey);
+			kind = new ConfigurationProperty ("kind", typeof (string), "", null, new StringValidator (0), ConfigurationPropertyOptions.IsKey);
+#endif
+
 			properties.Add (address);
 			properties.Add (behavior_configuration);
 			properties.Add (binding);
@@ -112,6 +121,11 @@ namespace System.ServiceModel.Configuration
 			properties.Add (headers);
 			properties.Add (identity);
 			properties.Add (name);
+
+#if NET_4_0
+			properties.Add (endpoint_configuration);
+			properties.Add (kind);
+#endif
 		}
 
 		public ChannelEndpointElement ()
@@ -197,6 +211,22 @@ namespace System.ServiceModel.Configuration
 			set { base [name] = value; }
 		}
 
+#if NET_4_0
+		[StringValidator (MinLength = 0)]
+		[ConfigurationProperty ("endpointConfiguration", DefaultValue = "", Options = ConfigurationPropertyOptions.IsKey)]
+		public string EndpointConfiguration {
+			get { return (string) base [endpoint_configuration]; }
+			set { base [endpoint_configuration] = value; }
+		}
+
+		[ConfigurationProperty ("kind", DefaultValue = "", Options = ConfigurationPropertyOptions.IsKey)]
+		[StringValidator (MinLength = 0)]
+		public string Kind {
+			get { return (string) base [kind]; }
+			set { base [kind] = value; }
+		}
+#endif
+
 		protected override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/ConfigUtil.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/ConfigUtil.cs
index 5a5ab97..bb24e60 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/ConfigUtil.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/ConfigUtil.cs
@@ -69,6 +69,20 @@ namespace System.ServiceModel.Configuration
 			get { return (ExtensionsSection) GetSection ("system.serviceModel/extensions"); }
 		}
 
+#if NET_4_0
+		public static ProtocolMappingSection ProtocolMappingSection {
+			get {
+				return (ProtocolMappingSection) GetSection ("system.serviceModel/protocolMapping");
+			}
+		}
+
+		public static StandardEndpointsSection StandardEndpointsSection {
+			get {
+				return (StandardEndpointsSection) GetSection ("system.serviceModel/standardEndpoints");
+			}
+		}
+#endif
+
 		public static Binding CreateBinding (string binding, string bindingConfiguration)
 		{
 			BindingCollectionElement section = ConfigUtil.BindingsSection [binding];
@@ -84,6 +98,32 @@ namespace System.ServiceModel.Configuration
 			return b;
 		}
 
+#if NET_4_0
+		public static ServiceEndpoint ConfigureStandardEndpoint (ContractDescription cd, ServiceEndpointElement element)
+		{
+			string kind = element.Kind;
+			string endpointConfiguration = element.EndpointConfiguration;
+
+			EndpointCollectionElement section = ConfigUtil.StandardEndpointsSection [kind];
+			if (section == null)
+				throw new ArgumentException (String.Format ("standard endpoint section for '{0}' was not found.", kind));
+
+			StandardEndpointElement e = section.GetDefaultStandardEndpointElement ();
+
+			ServiceEndpoint inst = e.CreateServiceEndpoint (cd);
+
+			foreach (StandardEndpointElement el in section.ConfiguredEndpoints) {
+				if (el.Name == endpointConfiguration) {
+					el.InitializeAndValidate (element);
+					el.ApplyConfiguration (inst, element);
+					break;
+				}
+			}
+			
+			return inst;
+		}
+#endif
+
 		public static KeyedByTypeCollection<IEndpointBehavior>  CreateEndpointBehaviors (string bindingConfiguration)
 		{
 			var ec = BehaviorsSection.EndpointBehaviors [bindingConfiguration];
@@ -100,6 +140,30 @@ namespace System.ServiceModel.Configuration
 			return new EndpointAddress (el.Address, el.Identity.CreateInstance (), el.Headers.Headers);
 		}
 
+		public static void CopyFrom (this ChannelEndpointElement to, ChannelEndpointElement from)
+		{
+			to.Address = from.Address;
+			to.BehaviorConfiguration = from.BehaviorConfiguration;
+			to.Binding = from.Binding;
+			to.BindingConfiguration = from.BindingConfiguration;
+			to.Contract = from.Contract;
+			if (from.Headers != null)
+				to.Headers.Headers = from.Headers.Headers;
+			if (from.Identity != null)
+				to.Identity.InitializeFrom (from.Identity.CreateInstance ());
+			to.Name = from.Name;
+		}
+
+		public static EndpointAddress CreateEndpointAddress (this ChannelEndpointElement el)
+		{
+			return new EndpointAddress (el.Address, el.Identity != null ? el.Identity.CreateInstance () : null, el.Headers.Headers);
+		}
+
+		public static EndpointAddress CreateEndpointAddress (this ServiceEndpointElement el)
+		{
+			return new EndpointAddress (el.Address, el.Identity != null ? el.Identity.CreateInstance () : null, el.Headers.Headers);
+		}
+
 		public static EndpointIdentity CreateInstance (this IdentityElement el)
 		{
 			if (el.Certificate != null)
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/CustomBindingCollectionElement.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/CustomBindingCollectionElement.cs
index 6316d2f..b1016ab 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/CustomBindingCollectionElement.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/CustomBindingCollectionElement.cs
@@ -90,8 +90,9 @@ namespace System.ServiceModel.Configuration
 			throw new NotImplementedException ();
 		}
 
-		protected internal override Binding GetDefault () {
-			throw new NotImplementedException ();
+		protected internal override Binding GetDefault ()
+		{
+			return new CustomBinding ();
 		}
 
 		protected internal override bool TryAdd (string name, Binding binding, System.Configuration.Configuration config) {
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/EndpointCollectionElement.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/EndpointCollectionElement.cs
index 3bf0132..cea55b8 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/EndpointCollectionElement.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/EndpointCollectionElement.cs
@@ -62,7 +62,12 @@ namespace System.ServiceModel.Configuration
 		public abstract ReadOnlyCollection<StandardEndpointElement> ConfiguredEndpoints { get; }
 
 		public string EndpointName {
-			get { throw new NotImplementedException (); }
+			get {
+				foreach (ExtensionElement el in ConfigUtil.StandardEndpointsSection.Properties)
+					if (EndpointType.FullName == el.Type)
+						return el.Name;
+				throw new InvalidOperationException (String.Format ("This EndpointCollectionElement '{0}' is not found in the configuration", GetType ()));
+			}
 		}
 
 		public abstract Type EndpointType { get; }
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/ExtensionsSection.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/ExtensionsSection.cs
index 4e888ef..0fd02c3 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/ExtensionsSection.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/ExtensionsSection.cs
@@ -79,6 +79,14 @@ namespace System.ServiceModel.Configuration
 			get { return (ExtensionElementCollection) base ["bindingExtensions"]; }
 		}
 
+#if NET_4_0
+		[ConfigurationProperty ("endpointExtensions",
+			 Options = ConfigurationPropertyOptions.None)]
+		public ExtensionElementCollection EndpointExtensions {
+			get { return (ExtensionElementCollection) base ["endpointExtensions"]; }
+		}
+#endif
+
 		protected override ConfigurationPropertyCollection Properties {
 			get {
 				if (_properties == null) {
@@ -86,6 +94,9 @@ namespace System.ServiceModel.Configuration
 					_properties.Add (new ConfigurationProperty ("behaviorExtensions", typeof (ExtensionElementCollection), null, null, null, ConfigurationPropertyOptions.None));
 					_properties.Add (new ConfigurationProperty ("bindingElementExtensions", typeof (ExtensionElementCollection), null, null, null, ConfigurationPropertyOptions.None));
 					_properties.Add (new ConfigurationProperty ("bindingExtensions", typeof (ExtensionElementCollection), null, null, null, ConfigurationPropertyOptions.None));
+#if NET_4_0
+					_properties.Add (new ConfigurationProperty ("endpointExtensions", typeof (ExtensionElementCollection), null, null, null, ConfigurationPropertyOptions.None));
+#endif
 				}
 				return _properties;
 			}
@@ -95,6 +106,9 @@ namespace System.ServiceModel.Configuration
 			InitializeBehaviorExtensionsDefault ();
 			InitializeBindingElementExtensionsDefault ();
 			InitializeBindingExtensionsDefault ();
+#if NET_4_0
+			InitializeEndpointExtensionsDefault ();
+#endif
 		}
 
 		void InitializeBindingExtensionsDefault () {
@@ -157,6 +171,11 @@ namespace System.ServiceModel.Configuration
 			BehaviorExtensions.Add (new ExtensionElement ("transactedBatching", typeof (TransactedBatchingElement).AssemblyQualifiedName));
 		}
 
+#if NET_4_0
+		void InitializeEndpointExtensionsDefault () {
+			EndpointExtensions.Add (new ExtensionElement ("mexEndpoint", typeof (ServiceMetadataEndpointCollectionElement).AssemblyQualifiedName));
+		}
+#endif
 	}
 
 }
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/HttpTransportElement.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/HttpTransportElement.cs
index 1933d25..7ab8f4e 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/HttpTransportElement.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/HttpTransportElement.cs
@@ -35,6 +35,10 @@ using System.Configuration;
 using System.Net;
 using System.Net.Security;
 using System.Reflection;
+#if NET_4_0
+using System.Security.Authentication.ExtendedProtection;
+using System.Security.Authentication.ExtendedProtection.Configuration;
+#endif
 using System.Security.Cryptography.X509Certificates;
 using System.Security.Principal;
 using System.IdentityModel.Claims;
@@ -123,7 +127,9 @@ namespace System.ServiceModel.Configuration
 		protected override ConfigurationPropertyCollection Properties {
 			get {
 				if (_properties == null) {
-					_properties = base.Properties;
+					_properties = new ConfigurationPropertyCollection ();
+					foreach (ConfigurationProperty cp in base.Properties)
+						_properties.Add (cp);
 					_properties.Add (new ConfigurationProperty ("allowCookies", typeof (bool), "false", new BooleanConverter (), null, ConfigurationPropertyOptions.None));
 					_properties.Add (new ConfigurationProperty ("authenticationScheme", typeof (AuthenticationSchemes), "Anonymous", null, null, ConfigurationPropertyOptions.None));
 					_properties.Add (new ConfigurationProperty ("bypassProxyOnLocal", typeof (bool), "false", new BooleanConverter (), null, ConfigurationPropertyOptions.None));
@@ -136,11 +142,31 @@ namespace System.ServiceModel.Configuration
 					_properties.Add (new ConfigurationProperty ("transferMode", typeof (TransferMode), "Buffered", null, null, ConfigurationPropertyOptions.None));
 					_properties.Add (new ConfigurationProperty ("unsafeConnectionNtlmAuthentication", typeof (bool), "false", new BooleanConverter (), null, ConfigurationPropertyOptions.None));
 					_properties.Add (new ConfigurationProperty ("useDefaultWebProxy", typeof (bool), "true", new BooleanConverter (), null, ConfigurationPropertyOptions.None));
+#if NET_4_0
+					_properties.Add (new ConfigurationProperty ("decompressionEnabled", typeof (bool), false, new BooleanConverter (), null, ConfigurationPropertyOptions.None));
+					_properties.Add (new ConfigurationProperty ("extendedProtectionPolicy", typeof (ExtendedProtectionPolicyElement), null, new ExtendedProtectionPolicyTypeConverter (), null, ConfigurationPropertyOptions.None));
+#endif
 				}
 				return _properties;
 			}
 		}
 
+#if NET_4_0
+		[ConfigurationProperty ("decompressionEnabled",
+			 Options = ConfigurationPropertyOptions.None)]
+		public bool DecompressionEnabled {
+			get { return (bool) base ["decompressionEnabled"]; }
+			set { base ["decompressionEnabled"] = value; }
+		}
+
+		[ConfigurationProperty ("extendedProtectionPolicy",
+			 Options = ConfigurationPropertyOptions.None)]
+		public ExtendedProtectionPolicyElement ExtendedProtectionPolicy {
+			get { return (ExtendedProtectionPolicyElement) base ["extendedProtectionPolicy"]; }
+			set { base ["extendedProtectionPolicy"] = value; }
+		}
+#endif
+
 		[ConfigurationProperty ("proxyAddress",
 			 Options = ConfigurationPropertyOptions.None,
 			 DefaultValue = null)]
@@ -208,6 +234,11 @@ namespace System.ServiceModel.Configuration
 			b.TransferMode = TransferMode;
 			b.UnsafeConnectionNtlmAuthentication = UnsafeConnectionNtlmAuthentication;
 			b.UseDefaultWebProxy = UseDefaultWebProxy;
+#if NET_4_0
+			b.DecompressionEnabled = DecompressionEnabled;
+			// FIXME: enable this.
+			//b.ExtendedProtectionPolicy = ExtendedProtectionPolicy.BuildPolicy ();
+#endif
 		}
 
 		public override void CopyFrom (ServiceModelExtensionElement from)
@@ -226,6 +257,15 @@ namespace System.ServiceModel.Configuration
 			TransferMode = e.TransferMode;
 			UnsafeConnectionNtlmAuthentication = e.UnsafeConnectionNtlmAuthentication;
 			UseDefaultWebProxy = e.UseDefaultWebProxy;
+#if NET_4_0
+			DecompressionEnabled = e.DecompressionEnabled;
+			// FIXME: enable this.
+			/*
+			ExtendedProtectionPolicy = new ExtendedProtectionPolicyElement () { PolicyEnforcement = e.ExtendedProtectionPolicy.PolicyEnforcement, ProtectionScenario = e.ExtendedProtectionPolicy.ProtectionScenario };
+			foreach (var sne in ExtendedProtectionPolicy.CustomServiceNames)
+				ExtendedProtectionPolicy.CustomServiceNames.Add (sne);
+			*/
+#endif
 		}
 
 		protected override TransportBindingElement CreateDefaultBindingElement ()
@@ -249,7 +289,15 @@ namespace System.ServiceModel.Configuration
 			TransferMode = b.TransferMode;
 			UnsafeConnectionNtlmAuthentication = b.UnsafeConnectionNtlmAuthentication;
 			UseDefaultWebProxy = b.UseDefaultWebProxy;
+#if NET_4_0
+			DecompressionEnabled = b.DecompressionEnabled;
+			// FIXME: enable this.
+			/*
+			ExtendedProtectionPolicy = new ExtendedProtectionPolicyElement () { PolicyEnforcement = b.ExtendedProtectionPolicy.PolicyEnforcement, ProtectionScenario = b.ExtendedProtectionPolicy.ProtectionScenario };
+			foreach (var sn in b.ExtendedProtectionPolicy.CustomServiceNames)
+				ExtendedProtectionPolicy.CustomServiceNames.Add (new ServiceNameElement () { Name = sn.ToString () });
+			*/
+#endif
 		}
 	}
-
 }
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/HttpTransportSecurityElement.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/HttpTransportSecurityElement.cs
index 1e578bd..55f8539 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/HttpTransportSecurityElement.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/HttpTransportSecurityElement.cs
@@ -35,6 +35,10 @@ using System.Configuration;
 using System.Net;
 using System.Net.Security;
 using System.Reflection;
+#if NET_4_0
+using System.Security.Authentication.ExtendedProtection;
+using System.Security.Authentication.ExtendedProtection.Configuration;
+#endif
 using System.Security.Cryptography.X509Certificates;
 using System.Security.Principal;
 using System.IdentityModel.Claims;
@@ -63,6 +67,7 @@ namespace System.ServiceModel.Configuration
 		static ConfigurationProperty client_credential_type;
 		static ConfigurationProperty proxy_credential_type;
 		static ConfigurationProperty realm;
+		static ConfigurationProperty extended_protection_policy;
 
 		static HttpTransportSecurityElement ()
 		{
@@ -79,9 +84,18 @@ namespace System.ServiceModel.Configuration
 				typeof (string), "", new StringConverter (), null,
 				ConfigurationPropertyOptions.None);
 
+#if NET_4_0
+			extended_protection_policy = new ConfigurationProperty ("extendedProtectionPolicy",
+				typeof (ExtendedProtectionPolicyElement), null, new ExtendedProtectionPolicyTypeConverter (), null,
+				ConfigurationPropertyOptions.None);
+#endif
+
 			properties.Add (client_credential_type);
 			properties.Add (proxy_credential_type);
 			properties.Add (realm);
+#if NET_4_0
+			properties.Add (extended_protection_policy);
+#endif
 		}
 
 		public HttpTransportSecurityElement ()
@@ -99,6 +113,15 @@ namespace System.ServiceModel.Configuration
 			set { base [client_credential_type] = value; }
 		}
 
+#if NET_4_0
+		[ConfigurationProperty ("extendedProtectionPolicy",
+			 Options = ConfigurationPropertyOptions.None)]
+		public ExtendedProtectionPolicyElement extendedProtectionPolicy {
+			get { return (ExtendedProtectionPolicyElement) base [extended_protection_policy]; }
+			set { base [extended_protection_policy] = value; }
+		}
+#endif
+
 		protected override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
@@ -127,6 +150,10 @@ namespace System.ServiceModel.Configuration
 			security.ClientCredentialType = ClientCredentialType;
 			security.ProxyCredentialType = ProxyCredentialType;
 			security.Realm = Realm;
+#if NET_4_0
+			// FIXME: enable this
+			// security.ExtendedProtectionPolicy = ExtendedProtectionPolicy.BuildPolicy ();
+#endif
 		}
 	}
 
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/IdentityElement.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/IdentityElement.cs
index 3859aaa..cd94210 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/IdentityElement.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/IdentityElement.cs
@@ -32,6 +32,7 @@ using System.Collections.Generic;
 using System.Collections.ObjectModel;
 using System.ComponentModel;
 using System.Configuration;
+using System.Linq;
 using System.Net;
 using System.Net.Security;
 using System.Reflection;
@@ -99,24 +100,29 @@ namespace System.ServiceModel.Configuration
 			get { return (UserPrincipalNameElement) base ["userPrincipalName"]; }
 		}
 
-
+		// it was extraneous...
 		internal EndpointIdentity Create ()
 		{
-			if (Certificate != null && !String.IsNullOrEmpty (Certificate.EncodedValue))
-				return new X509CertificateEndpointIdentity (new X509Certificate2 (Convert.FromBase64String (Certificate.EncodedValue)));
-			if (CertificateReference != null && !String.IsNullOrEmpty (CertificateReference.FindValue))
-				// FIXME: imeplement
-				throw new NotImplementedException ();
-			if (Dns != null && !String.IsNullOrEmpty (Dns.Value))
-				return new DnsEndpointIdentity (Dns.Value);
-			if (Rsa != null && !String.IsNullOrEmpty (Rsa.Value))
-				return new RsaEndpointIdentity (Rsa.Value);
-			if (ServicePrincipalName != null && !String.IsNullOrEmpty (ServicePrincipalName.Value))
-				return new SpnEndpointIdentity (ServicePrincipalName.Value);
-			if (UserPrincipalName != null && !String.IsNullOrEmpty (UserPrincipalName.Value))
-				return new UpnEndpointIdentity (UserPrincipalName.Value);
+			return ConfigUtil.CreateInstance (this);
+		}
+
+		public void InitializeFrom (EndpointIdentity identity)
+		{
+			if (identity == null)
+				throw new ArgumentNullException ("identity");
 
-			return null;
+			if (identity is X509CertificateEndpointIdentity)
+				Certificate.EncodedValue = Convert.ToBase64String (((X509CertificateEndpointIdentity) identity).Certificates [0].RawData);
+			else if (identity is DnsEndpointIdentity)
+				Dns.Value = (string) ((DnsEndpointIdentity) identity).IdentityClaim.Resource;
+			else if (identity is RsaEndpointIdentity)
+				Rsa.Value = (string) ((RsaEndpointIdentity) identity).IdentityClaim.Resource;
+			else if (identity is SpnEndpointIdentity)
+				ServicePrincipalName.Value = (string) ((SpnEndpointIdentity) identity).IdentityClaim.Resource;
+			else if (identity is UpnEndpointIdentity)
+				UserPrincipalName.Value = (string) ((UpnEndpointIdentity) identity).IdentityClaim.Resource;
+			else
+				throw new ArgumentException (String.Format ("Unexpected EndpointIdentity of type '{0}'", identity.GetType ()));
 		}
 	}
 
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/NamedServiceModelExtensionCollectionElement.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/NamedServiceModelExtensionCollectionElement.cs
index 80eb141..1ead2f8 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/NamedServiceModelExtensionCollectionElement.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/NamedServiceModelExtensionCollectionElement.cs
@@ -58,6 +58,11 @@ namespace System.ServiceModel.Configuration
 		 : ServiceModelExtensionCollectionElement<TServiceModelExtensionElement>,  ICollection<TServiceModelExtensionElement>,  IEnumerable<TServiceModelExtensionElement>,  IEnumerable
 		where TServiceModelExtensionElement : ServiceModelExtensionElement
 	{
+#if NET_4_0
+		const int minNameLength = 0;
+#else
+		const int minNameLength = 1;
+#endif
 		ConfigurationPropertyCollection _properties;
 
 		internal NamedServiceModelExtensionCollectionElement ()
@@ -66,10 +71,11 @@ namespace System.ServiceModel.Configuration
 
 
 		// Properties
-
-		[StringValidator ( MinLength = 1,
-			MaxLength = int.MaxValue,
-			 InvalidCharacters = null)]
+#if NET_4_0
+		[StringValidator ( MinLength = 0, MaxLength = int.MaxValue, InvalidCharacters = null)]
+#else
+		[StringValidator ( MinLength = 1, MaxLength = int.MaxValue, InvalidCharacters = null)]
+#endif
 		[ConfigurationProperty ("name",
 			 Options = ConfigurationPropertyOptions.IsRequired | ConfigurationPropertyOptions.IsKey,
 			IsRequired = true,
@@ -83,7 +89,7 @@ namespace System.ServiceModel.Configuration
 			get {
 				if (_properties == null) {
 					_properties = new ConfigurationPropertyCollection ();
-					_properties.Add (new ConfigurationProperty ("name", typeof (string), null, new StringConverter (), new StringValidator (1, int.MaxValue, null), ConfigurationPropertyOptions.IsRequired | ConfigurationPropertyOptions.IsKey));
+					_properties.Add (new ConfigurationProperty ("name", typeof (string), null, new StringConverter (), new StringValidator (minNameLength, int.MaxValue, null), ConfigurationPropertyOptions.IsRequired | ConfigurationPropertyOptions.IsKey));
 				}
 				return _properties;
 			}
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/ProtocolMappingElement.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/ProtocolMappingElement.cs
new file mode 100644
index 0000000..05b36bc
--- /dev/null
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/ProtocolMappingElement.cs
@@ -0,0 +1,112 @@
+//
+// ProtocolMappingElement.cs
+//
+// Author:
+//	Atsushi Enomoto <atsushi at ximian.com>
+//
+// Copyright (C) 2010 Novell, Inc.  http://www.novell.com
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if NET_4_0
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.ComponentModel;
+using System.Configuration;
+using System.Net;
+using System.Net.Security;
+using System.Reflection;
+using System.Security.Cryptography.X509Certificates;
+using System.Security.Principal;
+using System.IdentityModel.Claims;
+using System.IdentityModel.Policy;
+using System.IdentityModel.Tokens;
+using System.ServiceModel;
+using System.ServiceModel.Channels;
+using System.ServiceModel.Description;
+using System.ServiceModel.Diagnostics;
+using System.ServiceModel.Dispatcher;
+using System.ServiceModel.MsmqIntegration;
+using System.ServiceModel.PeerResolvers;
+using System.ServiceModel.Security;
+using System.Runtime.Serialization;
+using System.Text;
+using System.Xml;
+
+namespace System.ServiceModel.Configuration
+{
+	public sealed class ProtocolMappingElement : ConfigurationElement
+	{
+		static ConfigurationPropertyCollection properties;
+		static ConfigurationProperty binding, binding_configuration, scheme;
+
+		static ProtocolMappingElement ()
+		{
+			properties = new ConfigurationPropertyCollection ();
+			binding = new ConfigurationProperty ("binding", typeof (string), null, null, new StringValidator (0), ConfigurationPropertyOptions.IsRequired);
+			binding_configuration = new ConfigurationProperty ("bindingConfiguration", typeof (string), null, null, new StringValidator (0), ConfigurationPropertyOptions.None);
+			scheme = new ConfigurationProperty ("scheme", typeof (string), null, null, new StringValidator (0), ConfigurationPropertyOptions.IsRequired | ConfigurationPropertyOptions.IsKey);
+
+			foreach (var item in new ConfigurationProperty [] {binding, binding_configuration, scheme})
+				properties.Add (item);
+		}
+		
+		public ProtocolMappingElement ()
+		{
+		}
+		
+		public ProtocolMappingElement (string schemeType, string binding, string bindingConfiguration)
+		{
+			Binding = binding;
+			BindingConfiguration = bindingConfiguration;
+			Scheme = schemeType;
+		}
+
+		[ConfigurationProperty ("binding", Options = ConfigurationPropertyOptions.IsRequired)]
+		[StringValidator (MinLength = 0)]
+		public string Binding {
+			get { return (string) base [binding]; }
+			set { base [binding] = value; }
+		}
+
+		[StringValidator (MinLength = 0)]
+		[ConfigurationProperty ("bindingConfiguration", Options = ConfigurationPropertyOptions.None)]
+		public string BindingConfiguration {
+			get { return (string) base [binding_configuration]; }
+			set { base [binding_configuration] = value; }
+		}
+
+		[StringValidator (MinLength = 0)]
+		[ConfigurationProperty ("scheme", Options = ConfigurationPropertyOptions.IsRequired | ConfigurationPropertyOptions.IsKey)]
+		public string Scheme {
+			get { return (string) base [scheme]; }
+			set { base [scheme] = value; }
+		}
+
+		protected override ConfigurationPropertyCollection Properties {
+			get { return base.Properties; }
+		}
+	}
+}
+
+#endif
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/ProtocolMappingElementCollection.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/ProtocolMappingElementCollection.cs
new file mode 100644
index 0000000..d4843c4
--- /dev/null
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/ProtocolMappingElementCollection.cs
@@ -0,0 +1,72 @@
+//
+// ProtocolMappingElementCollection.cs
+//
+// Author:
+//	Atsushi Enomoto <atsushi at ximian.com>
+//
+// Copyright (C) 2010 Novell, Inc.  http://www.novell.com
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if NET_4_0
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.ComponentModel;
+using System.Configuration;
+using System.Net;
+using System.Net.Security;
+using System.Reflection;
+using System.Security.Cryptography.X509Certificates;
+using System.Security.Principal;
+using System.IdentityModel.Claims;
+using System.IdentityModel.Policy;
+using System.IdentityModel.Tokens;
+using System.ServiceModel;
+using System.ServiceModel.Channels;
+using System.ServiceModel.Description;
+using System.ServiceModel.Diagnostics;
+using System.ServiceModel.Dispatcher;
+using System.ServiceModel.MsmqIntegration;
+using System.ServiceModel.PeerResolvers;
+using System.ServiceModel.Security;
+using System.Runtime.Serialization;
+using System.Text;
+using System.Xml;
+
+namespace System.ServiceModel.Configuration
+{
+	[ConfigurationCollection (typeof (ProtocolMappingElement), AddItemName = "add")]
+	public sealed class ProtocolMappingElementCollection : ServiceModelEnhancedConfigurationElementCollection<ProtocolMappingElement>
+	{
+		public ProtocolMappingElementCollection ()
+		{
+			AddElementName = "add";
+		}
+		
+		protected override object GetElementKey (ConfigurationElement element)
+		{
+			return ((ProtocolMappingElement) element).Scheme;
+		}
+	}
+}
+#endif
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/ProtocolMappingSection.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/ProtocolMappingSection.cs
new file mode 100644
index 0000000..66a8082
--- /dev/null
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/ProtocolMappingSection.cs
@@ -0,0 +1,93 @@
+//
+// ProtocolMappingSection.cs
+//
+// Author:
+//	Atsushi Enomoto <atsushi at ximian.com>
+//
+// Copyright (C) 2010 Novell, Inc.  http://www.novell.com
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+#if NET_4_0
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.ComponentModel;
+using System.Configuration;
+using System.Net;
+using System.Net.Security;
+using System.Reflection;
+using System.Security.Cryptography.X509Certificates;
+using System.Security.Principal;
+using System.IdentityModel.Claims;
+using System.IdentityModel.Policy;
+using System.IdentityModel.Tokens;
+using System.ServiceModel;
+using System.ServiceModel.Channels;
+using System.ServiceModel.Description;
+using System.ServiceModel.Diagnostics;
+using System.ServiceModel.Dispatcher;
+using System.ServiceModel.MsmqIntegration;
+using System.ServiceModel.PeerResolvers;
+using System.ServiceModel.Security;
+using System.Runtime.Serialization;
+using System.Text;
+using System.Xml;
+
+namespace System.ServiceModel.Configuration
+{
+	public sealed class ProtocolMappingSection : ConfigurationSection
+	{
+		static ConfigurationPropertyCollection properties;
+		static ConfigurationProperty collection;
+
+		static ProtocolMappingSection ()
+		{
+			collection = new ConfigurationProperty ("", typeof (ProtocolMappingElementCollection), null, null, null, ConfigurationPropertyOptions.IsDefaultCollection);
+			properties = new ConfigurationPropertyCollection ();
+			properties.Add (collection);
+		}
+
+		// Properties
+
+		[ConfigurationProperty ("", Options = ConfigurationPropertyOptions.IsDefaultCollection)]
+		public ProtocolMappingElementCollection ProtocolMappingCollection {
+			get { return (ProtocolMappingElementCollection) base [collection]; }
+		}
+
+		protected override ConfigurationPropertyCollection Properties {
+			get { return properties; }
+		}
+
+		protected override void InitializeDefault ()
+		{
+			base.InitializeDefault ();
+			// LAMESPEC: no https?
+			ProtocolMappingCollection.Add (new ProtocolMappingElement ("http", "basicHttpBinding", null));
+			ProtocolMappingCollection.Add (new ProtocolMappingElement ("net.tcp", "netTcpBinding", null));
+			ProtocolMappingCollection.Add (new ProtocolMappingElement ("net.msmq", "netMsmqBinding", null));
+			ProtocolMappingCollection.Add (new ProtocolMappingElement ("net.pipe", "netNamedPipeBinding", null));
+		}
+	}
+
+}
+#endif
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/ServiceBehaviorElementCollection.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/ServiceBehaviorElementCollection.cs
index c8c10f8..b9d6d2d 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/ServiceBehaviorElementCollection.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/ServiceBehaviorElementCollection.cs
@@ -82,8 +82,16 @@ namespace System.ServiceModel.Configuration
 			XmlReader reader, bool serializeCollectionKey) {
 			base.DeserializeElement (reader, serializeCollectionKey);
 		}
+#if NET_4_0
+		protected override void BaseAdd (ConfigurationElement element)
+		{
+			var sbe = element as ServiceBehaviorElement;
+			if (sbe != null && sbe.Name == null)
+				sbe.Name = String.Empty;
 
-
+			base.BaseAdd (sbe);
+		}
+#endif
 	}
 
 }
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/ServiceEndpointElement.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/ServiceEndpointElement.cs
index 8ae3569..b44abe8 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/ServiceEndpointElement.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/ServiceEndpointElement.cs
@@ -71,6 +71,11 @@ namespace System.ServiceModel.Configuration
 		static ConfigurationProperty listen_uri;
 		static ConfigurationProperty listen_uri_mode;
 		static ConfigurationProperty name;
+#if NET_4_0
+		static ConfigurationProperty endpoint_configuration;
+		static ConfigurationProperty is_system_endpoint;
+		static ConfigurationProperty kind;
+#endif
 
 		static ServiceEndpointElement ()
 		{
@@ -123,6 +128,12 @@ namespace System.ServiceModel.Configuration
 				typeof (string), "", new StringConverter (), new StringValidator (0, int.MaxValue, null),
 				ConfigurationPropertyOptions.None);
 
+#if NET_4_0
+			endpoint_configuration = new ConfigurationProperty ("endpointConfiguration", typeof (string), "", null, new StringValidator (0), ConfigurationPropertyOptions.IsKey);
+			is_system_endpoint = new ConfigurationProperty ("isSystemEndpoint", typeof (bool), false, null, null, ConfigurationPropertyOptions.None);
+			kind = new ConfigurationProperty ("kind", typeof (string), "", null, new StringValidator (0), ConfigurationPropertyOptions.IsKey);
+#endif
+
 			properties.Add (address);
 			properties.Add (behavior_configuration);
 			properties.Add (binding);
@@ -135,6 +146,12 @@ namespace System.ServiceModel.Configuration
 			properties.Add (listen_uri);
 			properties.Add (listen_uri_mode);
 			properties.Add (name);
+
+#if NET_4_0
+			properties.Add (endpoint_configuration);
+			properties.Add (is_system_endpoint);
+			properties.Add (kind);
+#endif
 		}
 
 		public ServiceEndpointElement ()
@@ -236,6 +253,28 @@ namespace System.ServiceModel.Configuration
 			get { return (IdentityElement) base [identity]; }
 		}
 
+#if NET_4_0
+		[StringValidator (MinLength = 0)]
+		[ConfigurationProperty ("endpointConfiguration", DefaultValue = "", Options = ConfigurationPropertyOptions.IsKey)]
+		public string EndpointConfiguration {
+			get { return (string) base [endpoint_configuration]; }
+			set { base [endpoint_configuration] = value; }
+		}
+
+		[ConfigurationProperty ("isSystemEndpoint", DefaultValue = false)]
+		public bool IsSystemEndpoint {
+			get { return (bool) base [is_system_endpoint]; }
+			set { base [is_system_endpoint] = value; }
+		}
+
+		[ConfigurationProperty ("kind", DefaultValue = "", Options = ConfigurationPropertyOptions.IsKey)]
+		[StringValidator (MinLength = 0)]
+		public string Kind {
+			get { return (string) base [kind]; }
+			set { base [kind] = value; }
+		}
+#endif
+
 		[ConfigurationProperty ("listenUri",
 			 Options = ConfigurationPropertyOptions.None,
 			 DefaultValue = null)]
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/ServiceEndpointElementCollection.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/ServiceEndpointElementCollection.cs
index b5f5327..3d8a380 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/ServiceEndpointElementCollection.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/ServiceEndpointElementCollection.cs
@@ -71,14 +71,22 @@ namespace System.ServiceModel.Configuration
 		protected override object GetElementKey (ConfigurationElement element) {
 			ServiceEndpointElement el = (ServiceEndpointElement) element;
 
-			return el.Address + ";" +
-				el.Binding.GetHashCode () + ";" +
-				el.BindingConfiguration.GetHashCode () + ";" +
-				el.BindingName.GetHashCode () + ";" +
-				el.BindingNamespace.GetHashCode () + ";" +
-				el.Contract.GetHashCode ();
+			return GetHashCode (el.Address) +
+				GetHashCode (el.Binding) +
+				GetHashCode (el.BindingConfiguration) +
+				GetHashCode (el.BindingName) +
+				GetHashCode (el.BindingNamespace) +
+#if NET_4_0
+				GetHashCode (el.EndpointConfiguration) +
+				GetHashCode (el.Kind) +
+#endif
+				GetHashCode (el.Contract);
 		}
 
+		static string GetHashCode (object obj)
+		{
+			return (obj != null ? obj.GetHashCode () : 0) + ";";
+		}
 	}
 
 }
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/ServiceMetadataEndpointCollectionElement.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/ServiceMetadataEndpointCollectionElement.cs
new file mode 100644
index 0000000..90ee434
--- /dev/null
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/ServiceMetadataEndpointCollectionElement.cs
@@ -0,0 +1,40 @@
+//
+// Author:
+//	Atsushi Enomoto <atsushi at ximian.com>
+//
+// Copyright (C) 2010 Novell, Inc.  http://www.novell.com
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+#if NET_4_0
+
+using System;
+using System.ComponentModel;
+using System.ServiceModel.Description;
+
+namespace System.ServiceModel.Configuration
+{
+	public class ServiceMetadataEndpointCollectionElement : StandardEndpointCollectionElement<ServiceMetadataEndpoint, ServiceMetadataEndpointElement>
+	{
+	}
+
+}
+
+#endif
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/ServiceMetadataEndpointElement.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/ServiceMetadataEndpointElement.cs
new file mode 100644
index 0000000..1e1be8d
--- /dev/null
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/ServiceMetadataEndpointElement.cs
@@ -0,0 +1,101 @@
+//
+// Author:
+//	Atsushi Enomoto <atsushi at ximian.com>
+//
+// Copyright (C) 2010 Novell, Inc.  http://www.novell.com
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+#if NET_4_0
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.ComponentModel;
+using System.Configuration;
+using System.Net;
+using System.Net.Security;
+using System.Reflection;
+using System.Security.Cryptography.X509Certificates;
+using System.Security.Principal;
+using System.IdentityModel.Claims;
+using System.IdentityModel.Policy;
+using System.IdentityModel.Tokens;
+using System.ServiceModel;
+using System.ServiceModel.Channels;
+using System.ServiceModel.Description;
+using System.ServiceModel.Diagnostics;
+using System.ServiceModel.Dispatcher;
+using System.ServiceModel.MsmqIntegration;
+using System.ServiceModel.PeerResolvers;
+using System.ServiceModel.Security;
+using System.Runtime.Serialization;
+using System.Text;
+using System.Xml;
+
+namespace System.ServiceModel.Configuration
+{
+	public class ServiceMetadataEndpointElement : StandardEndpointElement
+	{
+		static ConfigurationPropertyCollection properties = new ConfigurationPropertyCollection ();
+
+		static ServiceMetadataEndpointElement ()
+		{
+			foreach (var item in new ConfigurationProperty [] {})
+				properties.Add (item);
+		}
+
+		protected internal override Type EndpointType {
+			get { return typeof (ServiceMetadataEndpoint); }
+		}
+
+		protected override ConfigurationPropertyCollection Properties {
+			get { return properties; }
+		}
+
+		protected internal override ServiceEndpoint CreateServiceEndpoint (ContractDescription contractDescription)
+		{
+			return new ServiceMetadataEndpoint ();
+		}
+
+		protected override void OnApplyConfiguration (ServiceEndpoint endpoint, ChannelEndpointElement serviceEndpointElement)
+		{
+			throw new NotImplementedException ();
+		}
+
+		protected override void OnApplyConfiguration (ServiceEndpoint endpoint, ServiceEndpointElement serviceEndpointElement)
+		{
+			throw new NotImplementedException ();
+		}
+
+		protected override void OnInitializeAndValidate (ChannelEndpointElement channelEndpointElement)
+		{
+			throw new NotImplementedException ();
+		}
+
+		protected override void OnInitializeAndValidate (ServiceEndpointElement serviceEndpointElement)
+		{
+			throw new NotImplementedException ();
+		}
+	}
+}
+
+#endif
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/ServiceModelSectionGroup.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/ServiceModelSectionGroup.cs
index b9c5433..87dfb0a 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/ServiceModelSectionGroup.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/ServiceModelSectionGroup.cs
@@ -78,5 +78,15 @@ namespace System.ServiceModel.Configuration
 		public ServicesSection Services {
 			get { return (ServicesSection) Sections ["services"]; }
 		}
+
+#if NET_4_0
+		public ProtocolMappingSection ProtocolMapping {
+			get { return (ProtocolMappingSection) Sections ["protocolMapping"]; }
+		}
+
+		public StandardEndpointsSection StandardEndpoints {
+			get { return (StandardEndpointsSection) Sections ["standardEndpoints"]; }
+		}
+#endif
 	}
 }
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/StandardEndpointCollectionElement.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/StandardEndpointCollectionElement.cs
index 5247744..71b983a 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/StandardEndpointCollectionElement.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/StandardEndpointCollectionElement.cs
@@ -62,7 +62,7 @@ namespace System.ServiceModel.Configuration
 		where TEndpointConfiguration : StandardEndpointElement, new()
 	{
 		static ConfigurationPropertyCollection properties;
-		static ConfigurationProperty endpoints = new ConfigurationProperty ("endpoints",
+		static ConfigurationProperty endpoints = new ConfigurationProperty ("",
 				typeof (StandardEndpointElementCollection<TEndpointConfiguration>), null, null, null,
 				ConfigurationPropertyOptions.IsDefaultCollection);
 
@@ -74,11 +74,18 @@ namespace System.ServiceModel.Configuration
 		void FillProperties (ConfigurationPropertyCollection baseProps)
 		{
 			properties = new ConfigurationPropertyCollection ();
+			foreach (ConfigurationProperty prop in baseProps)
+				properties.Add (prop);
 			properties.Add (endpoints);
 		}
 		
 		public override ReadOnlyCollection<StandardEndpointElement> ConfiguredEndpoints {
-			get { throw new NotImplementedException (); }
+			get {
+				var l = new List<StandardEndpointElement> ();
+				foreach (StandardEndpointElement e in Endpoints)
+					l.Add (e);
+				return new ReadOnlyCollection<StandardEndpointElement> (l);
+			}
 		}
 
 		[ConfigurationPropertyAttribute("", Options = ConfigurationPropertyOptions.IsDefaultCollection)]
@@ -102,12 +109,15 @@ namespace System.ServiceModel.Configuration
 
 		public override bool ContainsKey (string name)
 		{
-			throw new NotImplementedException ();
+			foreach (StandardEndpointElement e in Endpoints)
+				if (e.Name == name)
+					return true;
+			return false;
 		}
 		
 		protected internal override StandardEndpointElement GetDefaultStandardEndpointElement ()
 		{
-			throw new NotImplementedException ();
+			return (StandardEndpointElement) Activator.CreateInstance (typeof (TEndpointConfiguration));
 		}
 		
 		protected internal override bool TryAdd (string name, ServiceEndpoint endpoint, ConfigurationType config)
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/StandardEndpointElement.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/StandardEndpointElement.cs
index c10610f..00eca49 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/StandardEndpointElement.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/StandardEndpointElement.cs
@@ -81,11 +81,36 @@ namespace System.ServiceModel.Configuration
 			get { return properties; }
 		}
 
+		public void ApplyConfiguration (ServiceEndpoint endpoint, ChannelEndpointElement channelEndpointElement)
+		{
+			OnApplyConfiguration (endpoint, channelEndpointElement);
+		}
+
+		public void ApplyConfiguration (ServiceEndpoint endpoint, ServiceEndpointElement serviceEndpointElement)
+		{
+			OnApplyConfiguration (endpoint, serviceEndpointElement);
+		}
+
 		protected internal abstract ServiceEndpoint CreateServiceEndpoint (ContractDescription contractDescription);
 
+		public void InitializeAndValidate (ChannelEndpointElement channelEndpointElement)
+		{
+			OnInitializeAndValidate (channelEndpointElement);
+		}
+
+		public void InitializeAndValidate (ServiceEndpointElement serviceEndpointElement)
+		{
+			OnInitializeAndValidate (serviceEndpointElement);
+		}
+
 		protected internal virtual void InitializeFrom (ServiceEndpoint endpoint)
 		{
-			throw new NotImplementedException ();
+			if (endpoint == null)
+				throw new ArgumentNullException ("endpoint");
+			if (!EndpointType.IsAssignableFrom (endpoint.GetType ()))
+				throw new ArgumentNullException (String.Format ("Argument endpoint type is not of expected type '{0}'", EndpointType));
+
+			// not sure if that's all, but that's what is documented.
 		}
 
 		protected abstract void OnApplyConfiguration (ServiceEndpoint endpoint, ChannelEndpointElement channelEndpointElement);
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/StandardEndpointElementCollection.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/StandardEndpointElementCollection.cs
index b5c0527..83b46e2 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/StandardEndpointElementCollection.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/StandardEndpointElementCollection.cs
@@ -55,9 +55,19 @@ using System.Xml;
 
 namespace System.ServiceModel.Configuration
 {
+	// LAMESPEC: there should be ConfigurationPropertyAttribute whose AddElementName is "standardEndpoint" (see ServiceBehaviorElementCollection for reference).
 	public sealed class StandardEndpointElementCollection<TEndpointConfiguration> : ServiceModelEnhancedConfigurationElementCollection<TEndpointConfiguration>
 		where TEndpointConfiguration : StandardEndpointElement, new()
 	{
+		public StandardEndpointElementCollection ()
+		{
+			AddElementName = "standardEndpoint";
+		}
+
+		protected override bool ThrowOnDuplicate {
+			get { return false; }
+		}
+
 		protected override object GetElementKey (ConfigurationElement element)
 		{
 			return ((StandardEndpointElement) element).Name;
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/StandardEndpointsSection.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/StandardEndpointsSection.cs
new file mode 100644
index 0000000..69fed1b
--- /dev/null
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/StandardEndpointsSection.cs
@@ -0,0 +1,120 @@
+//
+// BindingsSection.cs
+//
+// Author:
+//	Atsushi Enomoto <atsushi at ximian.com>
+//
+// Copyright (C) 2006 Novell, Inc.  http://www.novell.com
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+#if NET_4_0
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.ComponentModel;
+using System.Configuration;
+using System.Net;
+using System.Net.Security;
+using System.Reflection;
+using System.Security.Cryptography.X509Certificates;
+using System.Security.Principal;
+using System.IdentityModel.Claims;
+using System.IdentityModel.Policy;
+using System.IdentityModel.Tokens;
+using System.ServiceModel;
+using System.ServiceModel.Channels;
+using System.ServiceModel.Description;
+using System.ServiceModel.Diagnostics;
+using System.ServiceModel.Dispatcher;
+using System.ServiceModel.MsmqIntegration;
+using System.ServiceModel.PeerResolvers;
+using System.ServiceModel.Security;
+using System.Runtime.Serialization;
+using System.Text;
+using System.Xml;
+
+namespace System.ServiceModel.Configuration
+{
+	public sealed class StandardEndpointsSection : ConfigurationSection
+	{
+		ConfigurationPropertyCollection _properties;
+
+		// Properties
+
+		List<EndpointCollectionElement> endpoint_collections;
+
+		public List<EndpointCollectionElement> EndpointCollections {
+			get {
+				if (endpoint_collections != null)
+					return endpoint_collections;
+				var list = new List<EndpointCollectionElement> ();
+				foreach (ConfigurationProperty cp in Properties)
+					list.Add ((EndpointCollectionElement) this [cp]);
+				endpoint_collections = list;
+				return list;
+			}
+		}
+
+
+		[ConfigurationProperty ("mexEndpoint", Options = ConfigurationPropertyOptions.None)]
+		public ServiceMetadataEndpointCollectionElement MexEndpoint {
+			get { return (ServiceMetadataEndpointCollectionElement) this ["mexEndpoint"]; }
+		}
+
+		protected override ConfigurationPropertyCollection Properties {
+			get {
+				if (_properties == null) {
+					_properties = new ConfigurationPropertyCollection ();
+					ExtensionElementCollection extensions = ((ExtensionsSection) EvaluationContext.GetSection ("system.serviceModel/extensions")).EndpointExtensions;
+					for (int i = 0; i < extensions.Count; i++) {
+						ExtensionElement extension = extensions [i];
+						_properties.Add (new ConfigurationProperty (extension.Name, Type.GetType (extension.Type), null, null, null, ConfigurationPropertyOptions.None));
+					}
+				}
+				return _properties;
+			}
+		}
+
+		public static StandardEndpointsSection GetSection (System.Configuration.Configuration config) {
+			ServiceModelSectionGroup sm = ServiceModelSectionGroup.GetSectionGroup (config);
+			if (sm == null)
+				throw new SystemException ("Could not retrieve configuration section group 'system.serviceModel'");
+			if (sm.StandardEndpoints == null)
+				throw new SystemException ("Could not retrieve configuration sub section group 'standardEndpoints' in 'system.serviceModel'");
+			return sm.StandardEndpoints;
+		}
+
+		public new EndpointCollectionElement this [string name] {
+			get {
+				object element = base [name];
+				if (element is EndpointCollectionElement)
+					return (EndpointCollectionElement) element;
+				throw new ArgumentException (String.Format ("Could not find {0}", name));
+			}
+		}
+
+	}
+
+}
+
+#endif
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Description/ChangeLog b/mcs/class/System.ServiceModel/System.ServiceModel.Description/ChangeLog
index d5ae50c..2ee7db9 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Description/ChangeLog
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Description/ChangeLog
@@ -1,3 +1,87 @@
+2010-11-10  Marek Habersack  <grendel at twistedcode.net>
+
+	[wcf] .NET allows for service contract methods to be decorated
+	only by Web{Get,Invoke}Attribute
+
+	Usually WCF requires that each service method is marked with the
+	OperationContract attribute with the exception of methods
+	decorated with the Web{Get,Invoke}Attribute attributes which are
+	defined in System.ServiceModel.Web. This patch adds a simple way
+	to extend the ContractDescriptionGenerator in order to provide
+	this functionality without circular dependency of
+	System.ServiceModel on System.ServiceModel.Web. Several extenders
+	can be registered with the description generator and they will be
+	invoked in the registration order until any of them returns
+	'true'. Extenders are passed a reference to the OperationContract
+	attribute with which the current method is decorated - if the
+	reference is null, the extender should create a default instance
+	of the attribute so that the description generator considers the
+	method as one to be included in the contract description.
+
+2010-10-22  Atsushi Eno  <atsushi at ximian.com>
+
+	It should not have to import all schema elements, but those only
+	used by contracts.
+
+2010-10-22  Atsushi Eno  <atsushi at ximian.com>
+
+	Small refactoring on enumerating message schema element contents.
+
+2010-10-21  Atsushi Eno  <atsushi at ximian.com>
+
+	OnEndXxx() methods should not try to let void return to a local
+	variable.
+
+2010-10-21  Atsushi Eno  <atsushi at ximian.com>
+
+	Void event should not have Result of type void.
+
+2010-10-21  Atsushi Eno  <atsushi at ximian.com>
+
+	Make generated type names unique.
+
+2010-10-21  Atsushi Eno  <atsushi at ximian.com>
+
+	Add #if NET_2_1 and SupportFaults member for Silverlight SlSvcUtil
+	proxy.
+
+2010-10-08  Atsushi Eno  <atsushi at ximian.com>
+
+	Do not reject contract from the same method, could happen by a
+	type with multiple service contracts within the typie hierarchy.
+
+	For details, see:
+	http://lists.ximian.com/pipermail/mono-devel-list/2010-September/035940.html
+
+2010-09-30  Atsushi Eno  <atsushi at ximian.com>
+
+	Add DataContractResolver stuff (dummy), and fix Id reference from
+	inside the referenced object.
+
+2010-09-16  Atsushi Eno  <atsushi at ximian.com>
+
+	Contract is settable in 4.0.
+
+2010-09-13  Atsushi Eno  <atsushi at ximian.com>
+
+	implemented large parts of WCF standard endpoints and
+	configuration support.
+
+2010-09-10  Atsushi Eno  <atsushi at ximian.com>
+
+	Remove USE_DATA_CONTRACT_IMPORTER conditional compilation flag.
+
+2010-09-09  Atsushi Eno  <atsushi at ximian.com>
+
+	It should not fail to generate client proxy generation for having
+	two "IsRequest=false" messages (it is set only in
+	ContractDescriptionGenerator).
+
+2010-09-03  Atsushi Eno  <atsushi at ximian.com>
+
+	Add some argument check. RemoteAddress could be null for callback
+	client runtime channel.
+
 2010-08-27  Atsushi Eno  <atsushi at ximian.com>
 
 	Add IsSystemEndpoint property and treat system endpoints as
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Description/ContractDescriptionGenerator.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Description/ContractDescriptionGenerator.cs
index f3b3721..758c027 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Description/ContractDescriptionGenerator.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Description/ContractDescriptionGenerator.cs
@@ -40,14 +40,41 @@ namespace System.ServiceModel.Description
 {
 	internal static class ContractDescriptionGenerator
 	{
-		public static OperationContractAttribute
-			GetOperationContractAttribute (MethodBase method)
+		public delegate bool GetOperationContractAttributeExtender (MethodBase method, object[] customAttributes, ref OperationContractAttribute oca);
+
+		static List <GetOperationContractAttributeExtender> getOperationContractAttributeExtenders;
+
+		public static void RegisterGetOperationContractAttributeExtender (GetOperationContractAttributeExtender extender)
+		{
+			if (extender == null)
+				return;
+
+			if (getOperationContractAttributeExtenders == null)
+				getOperationContractAttributeExtenders = new List <GetOperationContractAttributeExtender> ();
+
+			if (getOperationContractAttributeExtenders.Contains (extender))
+				return;
+
+			getOperationContractAttributeExtenders.Add (extender);
+		}
+
+		public static OperationContractAttribute GetOperationContractAttribute (MethodBase method)
 		{
-			object [] matts = method.GetCustomAttributes (
-				typeof (OperationContractAttribute), false);
+			object [] matts = method.GetCustomAttributes (typeof (OperationContractAttribute), false);
+			OperationContractAttribute oca;
+			
 			if (matts.Length == 0)
-				return null;
-			return (OperationContractAttribute) matts [0];
+				oca = null;
+			else
+				oca = matts [0] as OperationContractAttribute;
+
+			if (getOperationContractAttributeExtenders != null && getOperationContractAttributeExtenders.Count > 0) {
+				foreach (var extender in getOperationContractAttributeExtenders)
+					if (extender (method, matts, ref oca))
+						break;
+			}
+
+			return oca;
 		}
 
 		static void GetServiceContractAttribute (Type type, Dictionary<Type,ServiceContractAttribute> table)
@@ -228,13 +255,7 @@ namespace System.ServiceModel.Description
 		{
 			string name = oca.Name ?? (oca.AsyncPattern ? mi.Name.Substring (5) : mi.Name);
 
-			OperationDescription od = null;
-			foreach (OperationDescription iter in cd.Operations) {
-				if (iter.Name == name) {
-					od = iter;
-					break;
-				}
-			}
+			OperationDescription od = cd.Operations.FirstOrDefault (o => o.Name == name);
 			if (od == null) {
 				od = new OperationDescription (name, cd);
 				od.IsOneWay = oca.IsOneWay;
@@ -261,9 +282,9 @@ namespace System.ServiceModel.Description
 				}
 				cd.Operations.Add (od);
 			}
-			else if (oca.AsyncPattern && od.BeginMethod != null ||
-				 !oca.AsyncPattern && od.SyncMethod != null)
-				throw new InvalidOperationException ("A contract cannot have two operations that have the identical names and different set of parameters.");
+			else if (oca.AsyncPattern && od.BeginMethod != null && od.BeginMethod != mi ||
+				 !oca.AsyncPattern && od.SyncMethod != null && od.SyncMethod != mi)
+				throw new InvalidOperationException (String.Format ("contract '{1}' cannot have two operations for '{0}' that have the identical names and different set of parameters.", name, cd.Name));
 
 			if (oca.AsyncPattern)
 				od.BeginMethod = mi;
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Description/DataContractSerializerMessageContractImporter.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Description/DataContractSerializerMessageContractImporter.cs
index ea2249c..fac5ba1 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Description/DataContractSerializerMessageContractImporter.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Description/DataContractSerializerMessageContractImporter.cs
@@ -72,15 +72,16 @@ namespace System.ServiceModel.Description
 			if (this.importer != null || this.context != null)
 				throw new SystemException ("INTERNAL ERROR: unexpected recursion of ImportContract method call");
 
-#if USE_DATA_CONTRACT_IMPORTER
 			dc_importer = new XsdDataContractImporter ();
 			schema_set_in_use = new XmlSchemaSet ();
 			schema_set_in_use.Add (importer.XmlSchemas);
 			foreach (WSDL wsdl in importer.WsdlDocuments)
 				foreach (XmlSchema xs in wsdl.Types.Schemas)
 					schema_set_in_use.Add (xs);
-			dc_importer.Import (schema_set_in_use);
-#endif
+
+			// commenting out this import operation, but might be required (I guess not).
+			//dc_importer.Import (schema_set_in_use);
+			schema_set_in_use.Compile ();
 
 			this.importer = importer;
 			this.context = context;
@@ -97,39 +98,7 @@ namespace System.ServiceModel.Description
 
 		XsdDataContractImporter dc_importer;
 
-#if USE_DATA_CONTRACT_IMPORTER
 		XmlSchemaSet schema_set_in_use;
-#else
-		XmlSchemaImporter schema_importer_;
-		XmlSchemaImporter schema_importer {
-			get {
-				if (schema_importer_ != null)
-					return schema_importer_;
-				schema_importer_ = new XmlSchemaImporter (xml_schemas);
-				return schema_importer_;
-			}
-		}
-
-		XmlSchemas xml_schemas_;
-		XmlSchemas xml_schemas {
-			get {
-				if (xml_schemas_ != null)
-					return xml_schemas_;
-				xml_schemas_ = new XmlSchemas ();
-
-				foreach (WSDL wsdl in importer.WsdlDocuments)
-					foreach (XmlSchema schema in wsdl.Types.Schemas)
-						xml_schemas_.Add (schema);
-
-				foreach (XmlSchema schema in importer.XmlSchemas.Schemas ())
-					xml_schemas_.Add (schema);
-
-				xml_schemas_.Compile (null, true);
-
-				return xml_schemas_;
-			}
-		}
-#endif
 
 		void DoImportContract ()
 		{
@@ -187,7 +156,7 @@ namespace System.ServiceModel.Description
 				if (part.Name == "parameters") {
 					if (!part.Element.IsEmpty) {
 						body.WrapperName = part.Element.Name;
-						resolveElement (part.Element, parts, body.WrapperNamespace);
+						ImportPartsBySchemaElement (part.Element, parts, body.WrapperNamespace);
 					} else {
 						body.WrapperName = part.Type.Name;
 						resolveType (part.Type, parts, body.WrapperNamespace);
@@ -197,26 +166,42 @@ namespace System.ServiceModel.Description
 			}
 		}
 		
-#if USE_DATA_CONTRACT_IMPORTER
-		void resolveElement (QName qname, List<MessagePartDescription> parts, string ns)
+		void ImportPartsBySchemaElement (QName qname, List<MessagePartDescription> parts, string ns)
 		{
 			XmlSchemaElement element = (XmlSchemaElement) schema_set_in_use.GlobalElements [qname];
 			if (element == null)
 				//FIXME: What to do here?
 				throw new Exception ("Could not resolve : " + qname.ToString ());
 
-			resolveParticle (element, parts, ns, 2);
+			var ct = element.ElementSchemaType as XmlSchemaComplexType;
+			if (ct == null) // simple type
+				parts.Add (CreateMessagePart (element));
+			else // complex type
+				foreach (var elem in GetElementsInParticle (ct.ContentTypeParticle))
+					parts.Add (CreateMessagePart (elem));
 		}
-#else
-		void resolveElement (QName qname, List<MessagePartDescription> parts, string ns)
+
+		IEnumerable<XmlSchemaElement> GetElementsInParticle (XmlSchemaParticle p)
 		{
-			XmlSchemaElement element = (XmlSchemaElement) xml_schemas.Find (qname, typeof (XmlSchemaElement));
-			if (element == null)
-				//FIXME: What to do here?
-				throw new Exception ("Could not resolve : " + qname.ToString ());
-			resolveParticle (element, parts, ns, 2);
+			if (p is XmlSchemaElement) {
+				yield return (XmlSchemaElement) p;
+			} else {
+				var gb = p as XmlSchemaGroupBase;
+				if (gb != null)
+					foreach (XmlSchemaParticle pp in gb.Items)
+						foreach (var e in GetElementsInParticle (pp))
+							yield return e;
+			}
+		}
+
+		MessagePartDescription CreateMessagePart (XmlSchemaElement elem)
+		{
+			var part = new MessagePartDescription (elem.QualifiedName.Name, elem.QualifiedName.Namespace);
+			part.Importer = dc_importer;
+			var typeQName = dc_importer.Import (schema_set_in_use, elem);
+			part.CodeTypeReference = dc_importer.GetCodeTypeReference (typeQName);
+			return part;
 		}
-#endif
 
 		void resolveType (QName qname, List<MessagePartDescription> parts, string ns)
 		{
@@ -291,76 +276,6 @@ namespace System.ServiceModel.Description
 			return null;
 		}
 
-		void resolveParticle (XmlSchemaParticle particle, 
-				List<MessagePartDescription> parts, 
-				string ns, 
-				int depth)
-		{
-			if (particle is XmlSchemaGroupBase) {
-				//sequence, 
-				//FIXME: others?
-				if (depth <= 0)
-					return;
-
-				XmlSchemaGroupBase groupBase = particle as XmlSchemaGroupBase;
-				foreach (XmlSchemaParticle item in groupBase.Items)
-					resolveParticle (item, parts, ns, depth - 1);
-
-				return;
-			}
-
-			XmlSchemaElement elem = particle as XmlSchemaElement;
-			if (elem == null)
-				return;
-
-			MessagePartDescription msg_part = null;
-			
-			XmlSchemaComplexType ct = elem.ElementSchemaType as XmlSchemaComplexType;
-			if (ct == null) {
-				//Not a complex type
-				XmlSchemaSimpleType simple = elem.ElementSchemaType as XmlSchemaSimpleType;
-#if USE_DATA_CONTRACT_IMPORTER
-				msg_part = new MessagePartDescription (elem.QualifiedName.Name, elem.QualifiedName.Namespace);
-				msg_part.Importer = dc_importer;
-				msg_part.CodeTypeReference = dc_importer.GetCodeTypeReference (dc_importer.Import (schema_set_in_use, elem));
-				parts.Add (msg_part);
-#else
-				msg_part = new MessagePartDescription (
-						elem.Name, ns);
-				if (elem.SchemaType != null)
-					msg_part.XmlTypeMapping = schema_importer.ImportTypeMapping (elem.QualifiedName);
-				else
-					msg_part.XmlTypeMapping = schema_importer.ImportSchemaType (elem.SchemaTypeName);
-				msg_part.TypeName = new QName (GetCLRTypeName (elem.SchemaTypeName), "");
-				parts.Add (msg_part);
-#endif
-
-				return;
-			}
-
-			if (depth > 0) {
-				resolveParticle (ct.ContentTypeParticle, parts, ns, depth - 1);
-				return;
-			}
-
-			//depth <= 0
-#if USE_DATA_CONTRACT_IMPORTER
-			msg_part = new MessagePartDescription (elem.QualifiedName.Name, elem.QualifiedName.Namespace);
-			msg_part.Importer = dc_importer;
-			msg_part.CodeTypeReference = dc_importer.GetCodeTypeReference (dc_importer.Import (schema_set_in_use, elem));
-			parts.Add (msg_part);
-#else
-			msg_part = new MessagePartDescription (elem.Name, ns);
-			if (elem.SchemaType != null)
-				msg_part.XmlTypeMapping = schema_importer.ImportTypeMapping (elem.QualifiedName);
-			else
-				msg_part.XmlTypeMapping = schema_importer.ImportSchemaType (elem.SchemaTypeName);
-			msg_part.TypeName = elem.SchemaTypeName;
-
-			parts.Add (msg_part);
-#endif
-		}
-
 		void IWsdlImportExtension.ImportEndpoint (WsdlImporter importer,
 			WsdlEndpointConversionContext context)
 		{
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Description/DataContractSerializerOperationBehavior.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Description/DataContractSerializerOperationBehavior.cs
index 58f421e..1e3b92f 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Description/DataContractSerializerOperationBehavior.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Description/DataContractSerializerOperationBehavior.cs
@@ -59,6 +59,10 @@ namespace System.ServiceModel.Description
 			get { return format; }
 		}
 
+#if NET_4_0
+		public DataContractResolver DataContractResolver { get; set; }
+#endif
+
 		public bool IgnoreExtensionDataObject { get; set; }
 
 		public int MaxItemsInObjectGraph { get; set; }
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Description/MessagePartDescription.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Description/MessagePartDescription.cs
index 6c7ccc0..fcfdba3 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Description/MessagePartDescription.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Description/MessagePartDescription.cs
@@ -95,20 +95,8 @@ namespace System.ServiceModel.Description
 		}
 
 #if !NET_2_1
-#if USE_DATA_CONTRACT_IMPORTER
 		internal XsdDataContractImporter Importer { get; set; }
 		internal System.CodeDom.CodeTypeReference CodeTypeReference { get; set; }
-#else
-		internal XmlQualifiedName TypeName {
-			get { return xml_schema_type_name; }
-			set { xml_schema_type_name = value; }
-		}
-
-		internal XmlTypeMapping XmlTypeMapping {
-			get { return xml_type_mapping; }
-			set { xml_type_mapping = value; }
-		}
-#endif
 #endif
 
 		#region internals required for moonlight compatibility
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Description/ServiceContractGenerator.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Description/ServiceContractGenerator.cs
index 907c229..6dae291 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Description/ServiceContractGenerator.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Description/ServiceContractGenerator.cs
@@ -51,6 +51,7 @@ namespace System.ServiceModel.Description
 	{
 		CodeCompileUnit ccu;
 		ConfigurationType config;
+		CodeIdentifiers identifiers = new CodeIdentifiers ();
 		Collection<MetadataConversionError> errors
 			= new Collection<MetadataConversionError> ();
 		Dictionary<string,string> nsmappings
@@ -62,9 +63,7 @@ namespace System.ServiceModel.Description
 		ServiceContractGenerationContext contract_context;
 		List<OPair> operation_contexts = new List<OPair> ();
 
-#if USE_DATA_CONTRACT_IMPORTER
 		XsdDataContractImporter xsd_data_importer;
-#endif
 
 		public ServiceContractGenerator ()
 			: this (null, null)
@@ -154,10 +153,8 @@ namespace System.ServiceModel.Description
 			if ((Options & ServiceContractGenerationOptions.ClientClass) != 0)
 				GenerateProxyClass (contractDescription, cns);
 
-#if USE_DATA_CONTRACT_IMPORTER
 			if (xsd_data_importer != null)
 				MergeCompileUnit (xsd_data_importer.CodeCompileUnit, ccu);
-#endif
 
 			// Process extensions. Class first, then methods.
 			// (built-in ones must present before processing class extensions).
@@ -198,6 +195,7 @@ namespace System.ServiceModel.Description
 			string name = cd.Name + "Client";
 			if (name [0] == 'I')
 				name = name.Substring (1);
+			name = identifiers.AddUnique (name, null);
 			CodeTypeDeclaration type = GetTypeDeclaration (cns, name);
 			if (type != null)
 				return; // already imported
@@ -280,6 +278,7 @@ namespace System.ServiceModel.Description
 		void GenerateChannelInterface (ContractDescription cd, CodeNamespace cns)
 		{
 			string name = cd.Name + "Channel";
+			name = identifiers.AddUnique (name, null);
 			CodeTypeDeclaration type = GetTypeDeclaration (cns, name);
 			if (type != null)
 				return;
@@ -302,7 +301,7 @@ namespace System.ServiceModel.Description
 			type.TypeAttributes = TypeAttributes.Interface;
 			type.TypeAttributes |= TypeAttributes.Public;
 			cns.Types.Add (type);
-			type.Name = cd.Name;
+			type.Name = identifiers.AddUnique (cd.Name, null);
 			CodeAttributeDeclaration ad = 
 				new CodeAttributeDeclaration (
 					new CodeTypeReference (
@@ -389,7 +388,7 @@ namespace System.ServiceModel.Description
 			// [OperationContract (Action = "...", ReplyAction = "..")]
 			var ad = new CodeAttributeDeclaration (new CodeTypeReference (typeof (OperationContractAttribute)));
 			foreach (MessageDescription md in od.Messages) {
-				if (md.IsRequest)
+				if (md.Direction == MessageDirection.Input)
 					ad.Arguments.Add (new CodeAttributeArgument ("Action", new CodePrimitiveExpression (md.Action)));
 				else
 					ad.Arguments.Add (new CodeAttributeArgument ("ReplyAction", new CodePrimitiveExpression (md.Action)));
@@ -518,6 +517,7 @@ namespace System.ServiceModel.Description
 			var method = FindByName (type, od.Name) ?? FindByName (type, "Begin" + od.Name);
 			var endMethod = method.Name == od.Name ? null : FindByName (type, "End" + od.Name);
 			bool methodAsync = method.Name.StartsWith ("Begin", StringComparison.Ordinal);
+			var resultType = endMethod != null ? endMethod.ReturnType : method.ReturnType;
 
 			var thisExpr = new CodeThisReferenceExpression ();
 			var baseExpr = new CodeBaseReferenceExpression ();
@@ -573,9 +573,13 @@ namespace System.ServiceModel.Description
 				new CodeArgumentReferenceExpression ("result"));
 			call.Parameters.AddRange (outArgRefs.Cast<CodeExpression> ().ToArray ()); // questionable
 
-			cm.Statements.Add (new CodeVariableDeclarationStatement (typeof (object), "__ret", call));
 			var retCreate = new CodeArrayCreateExpression (typeof (object));
-			retCreate.Initializers.Add (new CodeVariableReferenceExpression ("__ret"));
+			if (resultType.BaseType == "System.Void")
+				cm.Statements.Add (call);
+			else {
+				cm.Statements.Add (new CodeVariableDeclarationStatement (typeof (object), "__ret", call));
+				retCreate.Initializers.Add (new CodeVariableReferenceExpression ("__ret"));
+			}
 			foreach (var outArgRef in outArgRefs)
 				retCreate.Initializers.Add (new CodeVariableReferenceExpression (outArgRef.VariableName));
 
@@ -589,9 +593,10 @@ namespace System.ServiceModel.Description
 
 			AddMethodParam (cm, typeof (object), "state");
 
+			string argsname = identifiers.AddUnique (od.Name + "CompletedEventArgs", null);
 			var iaargs = new CodeTypeReference ("InvokeAsyncCompletedEventArgs"); // avoid messy System.Type instance for generic nested type :|
 			var iaref = new CodeVariableReferenceExpression ("args");
-			var methodEventArgs = new CodeObjectCreateExpression (new CodeTypeReference (od.Name + "CompletedEventArgs"),
+			var methodEventArgs = new CodeObjectCreateExpression (new CodeTypeReference (argsname),
 				new CodePropertyReferenceExpression (iaref, "Results"),
 				new CodePropertyReferenceExpression (iaref, "Error"),
 				new CodePropertyReferenceExpression (iaref, "Cancelled"),
@@ -608,7 +613,7 @@ namespace System.ServiceModel.Description
 			type.Members.Add (new CodeMemberField (new CodeTypeReference (typeof (SendOrPostCallback)), "on" + od.Name + "CompletedDelegate"));
 
 			// XxxCompletedEventArgs class
-			var argsType = new CodeTypeDeclaration (od.Name + "CompletedEventArgs");
+			var argsType = new CodeTypeDeclaration (argsname);
 			argsType.BaseTypes.Add (new CodeTypeReference (typeof (AsyncCompletedEventArgs)));
 			cns.Types.Add (argsType);
 
@@ -627,12 +632,14 @@ namespace System.ServiceModel.Description
 
 			argsType.Members.Add (new CodeMemberField (typeof (object []), "results"));
 
-			var resultProp = new CodeMemberProperty {
-				Name = "Result",
-				Type = endMethod != null ? endMethod.ReturnType : method.ReturnType,
-				Attributes = MemberAttributes.Public | MemberAttributes.Final };
-			resultProp.GetStatements.Add (new CodeMethodReturnStatement (new CodeCastExpression (resultProp.Type, new CodeArrayIndexerExpression (resultsField, new CodePrimitiveExpression (0)))));
-			argsType.Members.Add (resultProp);
+			if (resultType.BaseType != "System.Void") {
+				var resultProp = new CodeMemberProperty {
+					Name = "Result",
+					Type = resultType,
+					Attributes = MemberAttributes.Public | MemberAttributes.Final };
+				resultProp.GetStatements.Add (new CodeMethodReturnStatement (new CodeCastExpression (resultProp.Type, new CodeArrayIndexerExpression (resultsField, new CodePrimitiveExpression (0)))));
+				argsType.Members.Add (resultProp);
+			}
 
 			// event field
 			var handlerType = new CodeTypeReference (typeof (EventHandler<>));
@@ -725,14 +732,10 @@ namespace System.ServiceModel.Description
 		{
 			CodeExpression [] args = null;
 			foreach (MessageDescription md in messages) {
-				if (!md.IsRequest) {
+				if (md.Direction == MessageDirection.Output) {
 					if (md.Body.ReturnValue != null) {
 						ExportDataContract (md.Body.ReturnValue);
-#if USE_DATA_CONTRACT_IMPORTER
 						method.ReturnType = md.Body.ReturnValue.CodeTypeReference;
-#else
-						method.ReturnType = new CodeTypeReference (GetCodeTypeName (md.Body.ReturnValue.TypeName));
-#endif
 					}
 					continue;
 				}
@@ -746,11 +749,7 @@ namespace System.ServiceModel.Description
 
 					method.Parameters.Add (
 						new CodeParameterDeclarationExpression (
-#if USE_DATA_CONTRACT_IMPORTER
 							parts [i].CodeTypeReference,
-#else
-							new CodeTypeReference (GetCodeTypeName (parts [i].TypeName)),
-#endif
 							parts [i].Name));
 
 					if (return_args)
@@ -771,7 +770,6 @@ namespace System.ServiceModel.Description
 			throw new NotImplementedException ();
 		}
 
-#if USE_DATA_CONTRACT_IMPORTER
 		void MergeCompileUnit (CodeCompileUnit from, CodeCompileUnit to)
 		{
 			if (from == to)
@@ -804,123 +802,11 @@ namespace System.ServiceModel.Description
 					to.Types.Add (ftd);
 			}
 		}
-#endif
 
 		private void ExportDataContract (MessagePartDescription md)
 		{
-#if USE_DATA_CONTRACT_IMPORTER
 			if (xsd_data_importer == null)
 				xsd_data_importer = md.Importer;
-#else
-			var mapping = md.XmlTypeMapping;
-
-			if (mapping == null)
-				return;
-
-			QName qname = new QName (mapping.TypeName, mapping.Namespace);
-			if (imported_names.ContainsKey (qname))
-				return;
-
-			CodeNamespace cns = new CodeNamespace ();
-
-			XmlCodeExporter xce = new XmlCodeExporter (cns);
-			xce.ExportTypeMapping (mapping);
-
-			List <CodeTypeDeclaration> to_remove = new List <CodeTypeDeclaration> ();
-			
-			//Process the types just generated
-			//FIXME: Iterate and assign the types to correct namespaces
-			//At the end, add all those namespaces to the ccu
-			foreach (CodeTypeDeclaration type in cns.Types) {
-				string ns = GetXmlNamespace (type);
-				if (ns == null)
-					//FIXME: do what here?
-					continue;
-
-				QName type_name = new QName (type.Name, ns);
-				if (imported_names.ContainsKey (type_name)) {
-					//Type got reemitted, so remove it!
-					to_remove.Add (type);
-					continue;
-				}
-				if (ns == ms_arrays_ns) {
-					//Do not emit arrays as an independent type.
-					to_remove.Add (type);
-					continue;
-				}
-
-				imported_names [type_name] = type_name;
-
-				type.Comments.Clear ();
-				//Custom Attributes
-				type.CustomAttributes.Clear ();
-
-				if (type.IsEnum)
-					continue;
-	
-				type.CustomAttributes.Add (
-					new CodeAttributeDeclaration (
-						new CodeTypeReference ("System.CodeDom.Compiler.GeneratedCodeAttribute"),
-						new CodeAttributeArgument (new CodePrimitiveExpression ("System.Runtime.Serialization")),
-						new CodeAttributeArgument (new CodePrimitiveExpression ("3.0.0.0"))));
-			
-				type.CustomAttributes.Add (
-					new CodeAttributeDeclaration (
-						new CodeTypeReference ("System.Runtime.Serialization.DataContractAttribute")));
-
-				//BaseType and interface
-				type.BaseTypes.Add (new CodeTypeReference (typeof (object)));
-				type.BaseTypes.Add (new CodeTypeReference ("System.Runtime.Serialization.IExtensibleDataObject"));
-
-				foreach (CodeTypeMember mbr in type.Members) {
-					CodeMemberProperty p = mbr as CodeMemberProperty;
-					if (p == null)
-						continue;
-
-					if ((p.Attributes & MemberAttributes.Public) == MemberAttributes.Public) {
-						//FIXME: Clear all attributes or only XmlElementAttribute?
-						p.CustomAttributes.Clear ();
-						p.CustomAttributes.Add (new CodeAttributeDeclaration (
-							new CodeTypeReference ("System.Runtime.Serialization.DataMemberAttribute")));
-
-						p.Comments.Clear ();
-					}
-				}
-
-				//Fields
-				CodeMemberField field = new CodeMemberField (
-					new CodeTypeReference ("System.Runtime.Serialization.ExtensionDataObject"),
-					"extensionDataField");
-				field.Attributes = MemberAttributes.Private | MemberAttributes.Final;
-				type.Members.Add (field);
-
-				//Property 
-				CodeMemberProperty prop = new CodeMemberProperty ();
-				prop.Type = new CodeTypeReference ("System.Runtime.Serialization.ExtensionDataObject");
-				prop.Name = "ExtensionData";
-				prop.Attributes = MemberAttributes.Public | MemberAttributes.Final;
-
-				//Get
-				prop.GetStatements.Add (new CodeMethodReturnStatement (
-					new CodeFieldReferenceExpression (
-					new CodeThisReferenceExpression (),
-					"extensionDataField")));
-
-				//Set
-				prop.SetStatements.Add (new CodeAssignStatement (
-					new CodeFieldReferenceExpression (
-					new CodeThisReferenceExpression (),
-					"extensionDataField"),
-					new CodePropertySetValueReferenceExpression ()));
-
-				type.Members.Add (prop);
-			}
-
-			foreach (CodeTypeDeclaration type in to_remove)
-				cns.Types.Remove (type);
-
-			ccu.Namespaces.Add (cns);
-#endif
 		}
 		
 		private string GetXmlNamespace (CodeTypeDeclaration type)
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Description/ServiceEndpoint.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Description/ServiceEndpoint.cs
index 4ca4dd9..e18c9a9 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Description/ServiceEndpoint.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Description/ServiceEndpoint.cs
@@ -66,6 +66,13 @@ namespace System.ServiceModel.Description
 
 		public ContractDescription Contract {
 			get { return contract; }
+#if NET_4_0
+			set {
+				if (value == null)
+					throw new ArgumentNullException ("value");
+				contract = value;
+			}
+#endif
 		}
 
 		public EndpointAddress Address {
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Description/ServiceMetadataEndpoint.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Description/ServiceMetadataEndpoint.cs
new file mode 100644
index 0000000..6abcf13
--- /dev/null
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Description/ServiceMetadataEndpoint.cs
@@ -0,0 +1,53 @@
+//
+// Author:
+//	Atsushi Enomoto <atsushi at ximian.com>
+//
+// Copyright (C) 2010 Novell, Inc.  http://www.novell.com
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+#if NET_4_0
+using System;
+using System.Collections.ObjectModel;
+using System.Runtime.Serialization;
+using System.ServiceModel.Channels;
+
+namespace System.ServiceModel.Description
+{
+	public class ServiceMetadataEndpoint : ServiceEndpoint
+	{
+		public ServiceMetadataEndpoint ()
+			: this (null)
+		{
+		}
+		
+		public ServiceMetadataEndpoint (EndpointAddress address)
+			: this (MetadataExchangeBindings.CreateMexHttpBinding (), address)
+		{
+		}
+		
+		public ServiceMetadataEndpoint (Binding binding, EndpointAddress address)
+			: base (ContractDescription.GetContract (typeof (IMetadataExchange)), binding, address)
+		{
+		}
+	}
+}
+
+#endif
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Description/XmlSerializerOperationBehavior.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Description/XmlSerializerOperationBehavior.cs
index 5b5361f..dd81938 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Description/XmlSerializerOperationBehavior.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Description/XmlSerializerOperationBehavior.cs
@@ -35,7 +35,10 @@ using System.Xml.Serialization;
 namespace System.ServiceModel.Description
 {
 	public class XmlSerializerOperationBehavior
-		: IOperationBehavior, IWsdlExportExtension
+		: IOperationBehavior
+#if !NET_2_1
+			, IWsdlExportExtension
+#endif
 	{
 		XmlSerializerFormatAttribute format;
 		OperationDescription operation;
@@ -72,13 +75,15 @@ namespace System.ServiceModel.Description
 		{
 			throw new NotImplementedException ();
 		}
-
+		
+#if !NET_2_1
 		void IOperationBehavior.ApplyDispatchBehavior (
 			OperationDescription description,
 			DispatchOperation dispatch)
 		{
 			throw new NotImplementedException ();
 		}
+#endif
 
 		void IOperationBehavior.ApplyClientBehavior (
 			OperationDescription description,
@@ -93,6 +98,7 @@ namespace System.ServiceModel.Description
 			throw new NotImplementedException ();
 		}
 
+#if !NET_2_1
 		void IWsdlExportExtension.ExportContract (
 			WsdlExporter exporter,
 			WsdlContractConversionContext context)
@@ -105,5 +111,6 @@ namespace System.ServiceModel.Description
 		{
 			throw new NotImplementedException ();
 		}
+#endif
 	}
 }
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Dispatcher/ChangeLog b/mcs/class/System.ServiceModel/System.ServiceModel.Dispatcher/ChangeLog
index 0aa87f3..47ae55c 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Dispatcher/ChangeLog
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Dispatcher/ChangeLog
@@ -16,6 +16,18 @@
 	should first try to find one whose URL matches the current request
 	exactly.
 
+2010-09-29  Atsushi Eno  <atsushi at ximian.com>
+
+	Fix the issue that callback contract often gets confused by
+	picking unexpected contract type.
+
+	The problem is that DispatchRuntime.Type is a service
+	implementation type that could implement two or more contract
+	interfaces, and it was in random order how ServiceProxyGenerator
+	picks up the contract type. Now it looks for correct contract type
+	instead of the service type by exactly looking for the target
+	contract in the endpoint (dispatcher).
+
 2010-07-12  Atsushi Enomoto  <atsushi at ximian.com>
 
 	* InputOrReplyProcessor.cs : remove SecurityHandler. WS-Trust must
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Dispatcher/EndpointDispatcher.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Dispatcher/EndpointDispatcher.cs
index 1e632fe..f34f892 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Dispatcher/EndpointDispatcher.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Dispatcher/EndpointDispatcher.cs
@@ -114,8 +114,16 @@ namespace System.ServiceModel.Dispatcher
 			set { filter_priority = value; }
 		}
 
+#if NET_4_0
+		public bool IsSystemEndpoint { get; private set; }
+#endif
+
 		internal void InitializeServiceEndpoint (bool isCallback, Type serviceType, ServiceEndpoint se)
 		{
+#if NET_4_0
+			IsSystemEndpoint = se.IsSystemEndpoint;
+#endif
+
 			this.ContractFilter = GetContractFilter (se.Contract);
 
 			this.DispatchRuntime.Type = serviceType;
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Dispatcher/InputOrReplyRequestProcessor.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Dispatcher/InputOrReplyRequestProcessor.cs
index 3bd12e1..1e8aeeb 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Dispatcher/InputOrReplyRequestProcessor.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Dispatcher/InputOrReplyRequestProcessor.cs
@@ -55,7 +55,7 @@ namespace System.ServiceModel.Dispatcher
 		{
 			ServiceRuntimeChannel contextChannel;
 			if (dispatch_runtime.CallbackClientRuntime.CallbackClientType != null) {
-				var type = ServiceProxyGenerator.CreateCallbackProxyType (dispatch_runtime.Type, dispatch_runtime.CallbackClientRuntime.CallbackClientType);
+				var type = ServiceProxyGenerator.CreateCallbackProxyType (dispatch_runtime, dispatch_runtime.CallbackClientRuntime.CallbackClientType);
 				contextChannel = (ServiceRuntimeChannel) Activator.CreateInstance (type, new object [] {reply_or_input, dispatch_runtime});
 			}
 			else
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Security.Tokens/ChangeLog b/mcs/class/System.ServiceModel/System.ServiceModel.Security.Tokens/ChangeLog
old mode 100755
new mode 100644
index c7cb2f1..da44e4a
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Security.Tokens/ChangeLog
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Security.Tokens/ChangeLog
@@ -1,3 +1,17 @@
+2010-10-15  Atsushi Eno  <atsushi at ximian.com>
+
+	Implement NetTcpBinding.CanBuildChannelFactory/Listener and
+	several related stuff.
+
+	SecurityTokenParameters.InitializeSecurityTokenRequirement() needs
+	to become protected internal, so changed all overrides as well.
+
+	Some implementation in WindowsStreamSecurityBindingElement is
+	needed only for NetTcpBinding implementation.
+
+	Had to disable a test in SymmetricSecurityBindingElement that
+	depended on OneWay support (which is not yet done).
+
 2010-07-28  Atsushi Enomoto  <atsushi at ximian.com>
 
 	* SecurityTokenParameters.cs, SupportingTokenParameters.cs,
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Security.Tokens/ChangeLog b/mcs/class/System.ServiceModel/System.ServiceModel.Security.Tokens/ChangeLog.old
similarity index 100%
copy from mcs/class/System.ServiceModel/System.ServiceModel.Security.Tokens/ChangeLog
copy to mcs/class/System.ServiceModel/System.ServiceModel.Security.Tokens/ChangeLog.old
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Security.Tokens/IssuedSecurityTokenParameters.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Security.Tokens/IssuedSecurityTokenParameters.cs
index 58faba3..a865639 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Security.Tokens/IssuedSecurityTokenParameters.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Security.Tokens/IssuedSecurityTokenParameters.cs
@@ -187,7 +187,7 @@ namespace System.ServiceModel.Security.Tokens
 			return ret;
 		}
 
-		protected override void InitializeSecurityTokenRequirement (SecurityTokenRequirement requirement)
+		protected internal override void InitializeSecurityTokenRequirement (SecurityTokenRequirement requirement)
 		{
 			if (requirement == null)
 				throw new ArgumentNullException ("requirement");
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Security.Tokens/KerberosSecurityTokenParameters.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Security.Tokens/KerberosSecurityTokenParameters.cs
index 5e2aa7d..37a82c0 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Security.Tokens/KerberosSecurityTokenParameters.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Security.Tokens/KerberosSecurityTokenParameters.cs
@@ -37,10 +37,9 @@ namespace System.ServiceModel.Security.Tokens
 		{
 		}
 
-		[MonoTODO]
 		protected KerberosSecurityTokenParameters (KerberosSecurityTokenParameters source)
+			: base (source)
 		{
-			throw new NotImplementedException ();
 		}
 
 		[MonoTODO]
@@ -75,7 +74,7 @@ namespace System.ServiceModel.Security.Tokens
 			throw new NotImplementedException ();
 		}
 
-		protected override void InitializeSecurityTokenRequirement (SecurityTokenRequirement requirement)
+		protected internal override void InitializeSecurityTokenRequirement (SecurityTokenRequirement requirement)
 		{
 			if (requirement == null)
 				throw new ArgumentNullException ("requirement");
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Security.Tokens/RsaSecurityTokenParameters.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Security.Tokens/RsaSecurityTokenParameters.cs
index 50d9811..f0dcdee 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Security.Tokens/RsaSecurityTokenParameters.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Security.Tokens/RsaSecurityTokenParameters.cs
@@ -76,7 +76,7 @@ namespace System.ServiceModel.Security.Tokens
 			return new RsaKeyIdentifierClause (rt.Rsa);
 		}
 
-		protected override void InitializeSecurityTokenRequirement (SecurityTokenRequirement requirement)
+		protected internal override void InitializeSecurityTokenRequirement (SecurityTokenRequirement requirement)
 		{
 			if (requirement == null)
 				throw new ArgumentNullException ("requirement");
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Security.Tokens/SecureConversationSecurityTokenParameters.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Security.Tokens/SecureConversationSecurityTokenParameters.cs
index 956104d..41c6658 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Security.Tokens/SecureConversationSecurityTokenParameters.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Security.Tokens/SecureConversationSecurityTokenParameters.cs
@@ -143,7 +143,7 @@ namespace System.ServiceModel.Security.Tokens
 		}
 
 		[MonoTODO]
-		protected override void InitializeSecurityTokenRequirement (SecurityTokenRequirement requirement)
+		protected internal override void InitializeSecurityTokenRequirement (SecurityTokenRequirement requirement)
 		{
 			// .NET somehow causes NRE. dunno why.
 			requirement.TokenType = ServiceModelSecurityTokenTypes.SecureConversation;
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Security.Tokens/SecurityTokenParameters.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Security.Tokens/SecurityTokenParameters.cs
index 3618cc9..f4c3f3c 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Security.Tokens/SecurityTokenParameters.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Security.Tokens/SecurityTokenParameters.cs
@@ -39,8 +39,12 @@ namespace System.ServiceModel.Security.Tokens
 		{
 		}
 
-		protected SecurityTokenParameters (SecurityTokenParameters source)
+		protected SecurityTokenParameters (SecurityTokenParameters other)
 		{
+			inclusion_mode = other.inclusion_mode;
+			reference_style = other.reference_style;
+			require_derived_keys = other.require_derived_keys;
+			issuer_binding_context = other.issuer_binding_context != null ? other.issuer_binding_context.Clone () : null;
 		}
 
 		SecurityTokenInclusionMode inclusion_mode;
@@ -120,7 +124,7 @@ namespace System.ServiceModel.Security.Tokens
 			return CreateKeyIdentifierClause (token, referenceStyle);
 		}
 
-		protected abstract void InitializeSecurityTokenRequirement (SecurityTokenRequirement requirement);
+		protected internal abstract void InitializeSecurityTokenRequirement (SecurityTokenRequirement requirement);
 
 		internal BindingContext IssuerBindingContext {
 			set { issuer_binding_context = value; }
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Security.Tokens/SslSecurityTokenParameters.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Security.Tokens/SslSecurityTokenParameters.cs
index 15e6bb4..92bbf9d 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Security.Tokens/SslSecurityTokenParameters.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Security.Tokens/SslSecurityTokenParameters.cs
@@ -118,7 +118,7 @@ namespace System.ServiceModel.Security.Tokens
 			*/
 		}
 
-		protected override void InitializeSecurityTokenRequirement (SecurityTokenRequirement requirement)
+		protected internal override void InitializeSecurityTokenRequirement (SecurityTokenRequirement requirement)
 		{
 			requirement.TokenType =
 				RequireClientCertificate ?
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Security.Tokens/SspiSecurityTokenParameters.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Security.Tokens/SspiSecurityTokenParameters.cs
index ea963d0..16cf529 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Security.Tokens/SspiSecurityTokenParameters.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Security.Tokens/SspiSecurityTokenParameters.cs
@@ -87,7 +87,7 @@ namespace System.ServiceModel.Security.Tokens
 		}
 
 		[MonoTODO]
-		protected override void InitializeSecurityTokenRequirement (SecurityTokenRequirement requirement)
+		protected internal override void InitializeSecurityTokenRequirement (SecurityTokenRequirement requirement)
 		{
 			if (requirement == null)
 				throw new ArgumentNullException ();
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Security.Tokens/UserNameSecurityTokenParameters.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Security.Tokens/UserNameSecurityTokenParameters.cs
index a5b6daa..8a40a61 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Security.Tokens/UserNameSecurityTokenParameters.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Security.Tokens/UserNameSecurityTokenParameters.cs
@@ -76,7 +76,7 @@ namespace System.ServiceModel.Security.Tokens
 			throw new NotSupportedException (String.Format ("This security token '{0}' with {1} reference mode is not supported.", token, referenceStyle));
 		}
 
-		protected override void InitializeSecurityTokenRequirement (SecurityTokenRequirement requirement)
+		protected internal override void InitializeSecurityTokenRequirement (SecurityTokenRequirement requirement)
 		{
 			requirement.TokenType = SecurityTokenTypes.UserName;
 			requirement.RequireCryptographicToken = true;
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Security.Tokens/X509SecurityTokenParameters.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Security.Tokens/X509SecurityTokenParameters.cs
index 7fda2ea..c02dfd4 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.Security.Tokens/X509SecurityTokenParameters.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.Security.Tokens/X509SecurityTokenParameters.cs
@@ -109,7 +109,7 @@ namespace System.ServiceModel.Security.Tokens
 			}
 		}
 
-		protected override void InitializeSecurityTokenRequirement (SecurityTokenRequirement requirement)
+		protected internal override void InitializeSecurityTokenRequirement (SecurityTokenRequirement requirement)
 		{
 			requirement.TokenType = SecurityTokenTypes.X509Certificate;
 			requirement.KeyType = SecurityKeyType.AsymmetricKey;
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.dll.sources b/mcs/class/System.ServiceModel/System.ServiceModel.dll.sources
index 6596809..2115c75 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel.dll.sources
+++ b/mcs/class/System.ServiceModel/System.ServiceModel.dll.sources
@@ -308,6 +308,7 @@ System.ServiceModel.Channels.Security/SecureMessageGenerator.cs
 System.ServiceModel.Channels.Security/SecurityCapabilities.cs
 System.ServiceModel.Channels.Security/SecurityChannelFactory.cs
 System.ServiceModel.Channels.Security/SecurityChannelListener.cs
+System.ServiceModel.Channels.Security/SecurityDuplexSessionChannel.cs
 System.ServiceModel.Channels.Security/SecurityOutputChannel.cs
 System.ServiceModel.Channels.Security/SecurityReplyChannel.cs
 System.ServiceModel.Channels.Security/SecurityRequestChannel.cs
@@ -451,6 +452,9 @@ System.ServiceModel.Configuration/PolicyImporterElement.cs
 System.ServiceModel.Configuration/PolicyImporterElementCollection.cs
 System.ServiceModel.Configuration/PolicyVersionConverter.cs
 System.ServiceModel.Configuration/PrivacyNoticeElement.cs
+System.ServiceModel.Configuration/ProtocolMappingElement.cs
+System.ServiceModel.Configuration/ProtocolMappingElementCollection.cs
+System.ServiceModel.Configuration/ProtocolMappingSection.cs
 System.ServiceModel.Configuration/ReliableMessagingVersionConverter.cs
 System.ServiceModel.Configuration/ReliableSessionElement.cs
 System.ServiceModel.Configuration/RsaElement.cs
@@ -468,6 +472,8 @@ System.ServiceModel.Configuration/ServiceElementCollection.cs
 System.ServiceModel.Configuration/ServiceEndpointElement.cs
 System.ServiceModel.Configuration/ServiceEndpointElementCollection.cs
 System.ServiceModel.Configuration/ServiceHostingEnvironmentSection.cs
+System.ServiceModel.Configuration/ServiceMetadataEndpointCollectionElement.cs
+System.ServiceModel.Configuration/ServiceMetadataEndpointElement.cs
 System.ServiceModel.Configuration/ServiceMetadataPublishingElement.cs
 System.ServiceModel.Configuration/ServiceModelConfigurationElementCollection.cs
 System.ServiceModel.Configuration/ServiceModelEnhancedConfigurationElementCollection.cs
@@ -488,6 +494,7 @@ System.ServiceModel.Configuration/StandardBindingReliableSessionElement.cs
 System.ServiceModel.Configuration/StandardEndpointCollectionElement.cs
 System.ServiceModel.Configuration/StandardEndpointElement.cs
 System.ServiceModel.Configuration/StandardEndpointElementCollection.cs
+System.ServiceModel.Configuration/StandardEndpointsSection.cs
 System.ServiceModel.Configuration/SynchronousReceiveElement.cs
 System.ServiceModel.Configuration/TcpConnectionPoolSettingsElement.cs
 System.ServiceModel.Configuration/TcpTransportElement.cs
@@ -601,6 +608,7 @@ System.ServiceModel.Description/ServiceDescription.cs
 System.ServiceModel.Description/ServiceEndpoint.cs
 System.ServiceModel.Description/ServiceEndpointCollection.cs
 System.ServiceModel.Description/ServiceMetadataBehavior.cs
+System.ServiceModel.Description/ServiceMetadataEndpoint.cs
 System.ServiceModel.Description/ServiceMetadataExtension.cs
 System.ServiceModel.Description/ServiceSecurityAuditBehavior.cs
 System.ServiceModel.Description/ServiceThrottlingBehavior.cs
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel/BasicHttpBinding.cs b/mcs/class/System.ServiceModel/System.ServiceModel/BasicHttpBinding.cs
index 297f9e2..b1f1876 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel/BasicHttpBinding.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel/BasicHttpBinding.cs
@@ -251,6 +251,9 @@ namespace System.ServiceModel
 			h.ProxyAddress = ProxyAddress;
 			h.UseDefaultWebProxy = UseDefaultWebProxy;
 			h.TransferMode = TransferMode;
+#if NET_4_0
+			h.ExtendedProtectionPolicy = Security.Transport.ExtendedProtectionPolicy;
+#endif
 
 #if !NET_2_1
 			switch (Security.Mode) {
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel/ChangeLog b/mcs/class/System.ServiceModel/System.ServiceModel/ChangeLog
index 654ca4d..4f10532 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel/ChangeLog
+++ b/mcs/class/System.ServiceModel/System.ServiceModel/ChangeLog
@@ -1,3 +1,96 @@
+2010-11-04  Carlos Alberto Cortez  <calberto.cortez at gmail.com>
+
+	* MsmqTransportSecurity.cs: Use the proper default values for this
+	class.
+
+2010-10-21  Atsushi Eno  <atsushi at ximian.com>
+
+	Add #if NET_2_1 and SupportFaults member for Silverlight SlSvcUtil
+	proxy.
+
+2010-10-20  Atsushi Eno  <atsushi at ximian.com>
+
+	Add ExtendedProtectionPolicy members. Required by .config files by
+	.NET svcutil.
+
+2010-10-15  Atsushi Eno  <atsushi at ximian.com>
+
+	Implement NetTcpBinding.CanBuildChannelFactory/Listener and
+	several related stuff.
+
+	SecurityTokenParameters.InitializeSecurityTokenRequirement() needs
+	to become protected internal, so changed all overrides as well.
+
+	Some implementation in WindowsStreamSecurityBindingElement is
+	needed only for NetTcpBinding implementation.
+
+	Had to disable a test in SymmetricSecurityBindingElement that
+	depended on OneWay support (which is not yet done).
+
+2010-10-14  Atsushi Eno  <atsushi at ximian.com>
+
+	Fill NetTcpBinding security implementation a bit.
+
+2010-09-29  Atsushi Eno  <atsushi at ximian.com>
+
+	Fix the issue that callback contract often gets confused by
+	picking unexpected contract type.
+
+	The problem is that DispatchRuntime.Type is a service
+	implementation type that could implement two or more contract
+	interfaces, and it was in random order how ServiceProxyGenerator
+	picks up the contract type. Now it looks for correct contract type
+	instead of the service type by exactly looking for the target
+	contract in the endpoint (dispatcher).
+
+2010-09-28  Marek Habersack  <grendel at twistedcode.net>
+
+	[wcf] Make simplified configuration for behaviors work (4.0)
+
+2010-09-24  Atsushi Eno  <atsushi at ximian.com>
+
+	Fix duplex proxy constructor arg names.
+
+2010-09-18  Atsushi Eno  <atsushi at ximian.com>
+
+	ProtocolMapping needed config section, default items and support
+	in ServiceHostBase.
+
+2010-09-17  Atsushi Eno  <atsushi at ximian.com>
+
+	Add working .svc handler in 4.0 web.config, fix standard endpoint
+	handling and get xsp4 working.
+
+2010-09-16  Atsushi Eno  <atsushi at ximian.com>
+
+	Add ProtocolMapping support.
+
+2010-09-16  Atsushi Eno  <atsushi at ximian.com>
+
+	Implement some additional logic around AddServiceEndpoint() to
+	achive standard endpoint support.
+
+2010-09-15  Atsushi Eno  <atsushi at ximian.com>
+
+	add more NET_4_0.
+
+2010-09-14  Atsushi Eno  <atsushi at ximian.com>
+
+	ongoing standard endpoint configuration support work.
+
+2010-09-03  Atsushi Eno  <atsushi at ximian.com>
+
+	Fix another non-null RemoteAddress dependency.
+
+2010-09-03  Atsushi Eno  <atsushi at ximian.com>
+
+	Add some argument check. RemoteAddress could be null for callback
+	client runtime channel.
+
+2010-09-02  Atsushi Eno  <atsushi at ximian.com>
+
+	Fix parameter order for TempAsyncResult.
+
 2010-08-30  Atsushi Eno  <atsushi at ximian.com>
 
 	Add workaround for bug #633945. On Windows async operation does
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel/ChannelFactory.cs b/mcs/class/System.ServiceModel/System.ServiceModel/ChannelFactory.cs
index 780c4a9..4c6a3fd 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel/ChannelFactory.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel/ChannelFactory.cs
@@ -188,14 +188,20 @@ namespace System.ServiceModel
 				case SessionMode.Required:
 					if (Endpoint.Binding.CanBuildChannelFactory<IOutputSessionChannel> (pl))
 						return Endpoint.Binding.BuildChannelFactory<IOutputSessionChannel> (pl);
+					if (Endpoint.Binding.CanBuildChannelFactory<IDuplexSessionChannel> (pl))
+						return Endpoint.Binding.BuildChannelFactory<IDuplexSessionChannel> (pl);
 					break;
 				case SessionMode.Allowed:
 					if (Endpoint.Binding.CanBuildChannelFactory<IOutputChannel> (pl))
 						return Endpoint.Binding.BuildChannelFactory<IOutputChannel> (pl);
+					if (Endpoint.Binding.CanBuildChannelFactory<IDuplexChannel> (pl))
+						return Endpoint.Binding.BuildChannelFactory<IDuplexChannel> (pl);
 					goto case SessionMode.Required;
 				default:
 					if (Endpoint.Binding.CanBuildChannelFactory<IOutputChannel> (pl))
 						return Endpoint.Binding.BuildChannelFactory<IOutputChannel> (pl);
+					if (Endpoint.Binding.CanBuildChannelFactory<IDuplexChannel> (pl))
+						return Endpoint.Binding.BuildChannelFactory<IDuplexChannel> (pl);
 					break;
 				}
 			}
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel/ClientRuntimeChannel.cs b/mcs/class/System.ServiceModel/System.ServiceModel/ClientRuntimeChannel.cs
index b446463..08e447d 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel/ClientRuntimeChannel.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel/ClientRuntimeChannel.cs
@@ -72,10 +72,12 @@ namespace System.ServiceModel.MonoInternal
 
 		public ClientRuntimeChannel (ClientRuntime runtime, ContractDescription contract, TimeSpan openTimeout, TimeSpan closeTimeout, IChannel contextChannel, IChannelFactory factory, MessageVersion messageVersion, EndpointAddress remoteAddress, Uri via)
 		{
+			if (runtime == null)
+				throw new ArgumentNullException ("runtime");
 			this.runtime = runtime;
 			this.remote_address = remoteAddress;
 			if (runtime.Via == null)
-				runtime.Via = via ?? remote_address.Uri;
+				runtime.Via = via ?? (remote_address != null ?remote_address.Uri : null);
 			this.contract = contract;
 			this.message_version = messageVersion;
 			default_open_timeout = openTimeout;
@@ -444,7 +446,7 @@ namespace System.ServiceModel.MonoInternal
 				return _processDelegate.BeginInvoke (method, operationName, parameters, callback, asyncState);
 			default:
 				var result = Process (method, operationName, parameters);
-				var ret = new TempAsyncResult (asyncState, result);
+				var ret = new TempAsyncResult (result, asyncState);
 				if (callback != null)
 					callback (ret);
 				return ret;
@@ -650,7 +652,7 @@ namespace System.ServiceModel.MonoInternal
 					msg.Headers.MessageId = new UniqueId ();
 				if (msg.Headers.ReplyTo == null)
 					msg.Headers.ReplyTo = new EndpointAddress (Constants.WsaAnonymousUri);
-				if (msg.Headers.To == null)
+				if (msg.Headers.To == null && RemoteAddress != null)
 					msg.Headers.To = RemoteAddress.Uri;
 			}
 
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel/HttpTransportSecurity.cs b/mcs/class/System.ServiceModel/System.ServiceModel/HttpTransportSecurity.cs
index cb5f1c0..ba3f7a9 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel/HttpTransportSecurity.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel/HttpTransportSecurity.cs
@@ -26,6 +26,9 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 using System;
+#if NET_4_0
+using System.Security.Authentication.ExtendedProtection;
+#endif
 using System.ServiceModel.Security;
 
 namespace System.ServiceModel
@@ -54,5 +57,10 @@ namespace System.ServiceModel
 			get { return realm; }
 			set { realm = value; }
 		}
+
+#if NET_4_0
+		[MonoTODO]
+		public ExtendedProtectionPolicy ExtendedProtectionPolicy { get; set; }
+#endif
 	}
 }
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel/MsmqTransportSecurity.cs b/mcs/class/System.ServiceModel/System.ServiceModel/MsmqTransportSecurity.cs
index f6732c4..d14970f 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel/MsmqTransportSecurity.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel/MsmqTransportSecurity.cs
@@ -32,10 +32,10 @@ namespace System.ServiceModel
 {
 	public sealed class MsmqTransportSecurity
 	{
-		MsmqAuthenticationMode auth;
+		MsmqAuthenticationMode auth = MsmqAuthenticationMode.WindowsDomain;
 		MsmqEncryptionAlgorithm enc;
-		MsmqSecureHashAlgorithm hash;
-		ProtectionLevel protection_level;
+		MsmqSecureHashAlgorithm hash = MsmqSecureHashAlgorithm.Sha1;
+		ProtectionLevel protection_level = ProtectionLevel.Sign;
 
 		public MsmqTransportSecurity ()
 		{
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel/NetTcpBinding.cs b/mcs/class/System.ServiceModel/System.ServiceModel/NetTcpBinding.cs
index 5d8da2d..c99b341 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel/NetTcpBinding.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel/NetTcpBinding.cs
@@ -30,13 +30,13 @@ using System.Collections.Generic;
 using System.Net.Security;
 using System.ServiceModel.Channels;
 using System.ServiceModel.Description;
+using System.ServiceModel.Security;
 using System.ServiceModel.Security.Tokens;
 using System.Text;
 using System.Xml;
 
 namespace System.ServiceModel
 {
-	[MonoTODO]
 	public class NetTcpBinding : Binding, IBindingRuntimePreferences
 	{
 		int max_conn;
@@ -48,7 +48,7 @@ namespace System.ServiceModel
 		TcpTransportBindingElement transport = new TcpTransportBindingElement ();
 
 		public NetTcpBinding ()
-			: this (SecurityMode.Message)
+			: this (SecurityMode.Transport)
 		{
 		}
 
@@ -145,6 +145,7 @@ namespace System.ServiceModel
 			var msg = new BinaryMessageEncodingBindingElement ();
 			if (ReaderQuotas != null)
 				ReaderQuotas.CopyTo (msg.ReaderQuotas);
+			var trsec = CreateTransportSecurity ();
 			BindingElement tr = GetTransport ();
 			List<BindingElement> list = new List<BindingElement> ();
 			if (tx != null)
@@ -152,6 +153,8 @@ namespace System.ServiceModel
 			if (sec != null)
 				list.Add (sec);
 			list.Add (msg);
+			if (trsec != null)
+				list.Add (trsec);
 			list.Add (tr);
 			return new BindingElementCollection (list.ToArray ());
 		}
@@ -161,13 +164,14 @@ namespace System.ServiceModel
 			return transport.Clone ();
 		}
 
-		// based on WSHttpBinding.CreateMessageSecurity()
+		// It is problematic, but there is no option to disable establishing security context in this binding unlike WSHttpBinding...
 		SecurityBindingElement CreateMessageSecurity ()
 		{
 			if (Security.Mode == SecurityMode.Transport ||
 			    Security.Mode == SecurityMode.None)
 				return null;
 
+			// FIXME: this is wrong. Could be Asymmetric, depends on Security.Message.AlgorithmSuite value.
 			SymmetricSecurityBindingElement element =
 				new SymmetricSecurityBindingElement ();
 
@@ -205,7 +209,36 @@ namespace System.ServiceModel
 				break;
 			}
 
-			return element;
+			// SecureConversation enabled
+
+			ChannelProtectionRequirements reqs =
+				new ChannelProtectionRequirements ();
+			// FIXME: fill the reqs
+
+			return SecurityBindingElement.CreateSecureConversationBindingElement (
+				// FIXME: requireCancellation
+				element, true, reqs);
+		}
+
+		BindingElement CreateTransportSecurity ()
+		{
+			switch (Security.Mode) {
+			case SecurityMode.None:
+			case SecurityMode.Message:
+				return null;
+			}
+
+			// FIXME: consider Security.Transport.ExtendedProtectionPolicy.
+
+			switch (Security.Transport.ClientCredentialType) {
+			case TcpClientCredentialType.Windows:
+				return new WindowsStreamSecurityBindingElement () { ProtectionLevel = Security.Transport.ProtectionLevel };
+			case TcpClientCredentialType.Certificate:
+				// FIXME: set RequireClientCertificate and IdentityVerifier depending on other properties, if applicable.
+				return new SslStreamSecurityBindingElement ();
+			default: // includes None
+				return null;
+			}
 		}
 
 		bool IBindingRuntimePreferences.ReceiveSynchronously {
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel/ServiceHostBase.cs b/mcs/class/System.ServiceModel/System.ServiceModel/ServiceHostBase.cs
index a7e66db..2c67788 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel/ServiceHostBase.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel/ServiceHostBase.cs
@@ -126,7 +126,7 @@ namespace System.ServiceModel
 			get { return description; }
 		}
 
-		protected IDictionary<string,ContractDescription> ImplementedContracts {
+		protected internal IDictionary<string,ContractDescription> ImplementedContracts {
 			get { return contracts; }
 		}
 
@@ -218,7 +218,8 @@ namespace System.ServiceModel
 			if (endpoint.Binding == null)
 				throw new ArgumentException ("Binding on the argument endpoint is null");
 
-			if (!ImplementedContracts.Values.Any (cd => cd.ContractType == endpoint.Contract.ContractType))
+			if (!ImplementedContracts.Values.Any (cd => cd.ContractType == endpoint.Contract.ContractType) &&
+			    endpoint.Binding.Namespace != "http://schemas.microsoft.com/ws/2005/02/mex/bindings") // special case
 				throw new InvalidOperationException (String.Format ("Contract '{0}' is not implemented in this service '{1}'", endpoint.Contract.Name, Description.Name));
 
 			Description.Endpoints.Add (endpoint);
@@ -319,40 +320,13 @@ namespace System.ServiceModel
 				throw new InvalidOperationException ("ApplyConfiguration requires that the Description property be initialized. Either provide a valid ServiceDescription in the CreateDescription method or override the ApplyConfiguration method to provide an alternative implementation");
 
 			ServiceElement service = GetServiceElement ();
-			if (service != null) {
-				
-				//base addresses
-				HostElement host = service.Host;
-				foreach (BaseAddressElement baseAddress in host.BaseAddresses) {
-					AddBaseAddress (new Uri (baseAddress.BaseAddress));
-				}
-
-				// behaviors
-				ServiceBehaviorElement behavior = ConfigUtil.BehaviorsSection.ServiceBehaviors [service.BehaviorConfiguration];
-				if (behavior != null) {
-					foreach (var bxe in behavior) {
-						IServiceBehavior b = (IServiceBehavior) bxe.CreateBehavior ();
-						Description.Behaviors.Add (b);
-					}
-				}
-				else
-					throw new ArgumentException (String.Format ("Service behavior {0} is specified, but was not found", service.BehaviorConfiguration));
-
-				// services
-				foreach (ServiceEndpointElement endpoint in service.Endpoints) {
-					ServiceEndpoint se = AddServiceEndpoint (
-						endpoint.Contract,
-						ConfigUtil.CreateBinding (endpoint.Binding, endpoint.BindingConfiguration),
-						endpoint.Address);
-					// endpoint behaviors
-					EndpointBehaviorElement epbehavior = ConfigUtil.BehaviorsSection.EndpointBehaviors [endpoint.BehaviorConfiguration];
-					if (epbehavior != null)
-						foreach (var bxe in epbehavior) {
-							IEndpointBehavior b = (IEndpointBehavior) bxe.CreateBehavior ();
-							se.Behaviors.Add (b);
-					}
-				}
-			}
+			
+			if (service != null)
+				ApplyServiceElement (service);
+#if NET_4_0
+			// simplified configuration
+			AddServiceBehaviors (String.Empty, false);
+#endif
 			// TODO: consider commonBehaviors here
 
 			// ensure ServiceAuthorizationBehavior
@@ -370,6 +344,91 @@ namespace System.ServiceModel
 			}
 		}
 
+		void AddServiceBehaviors (string configurationName, bool throwIfNotFound)
+		{
+#if NET_4_0
+			if (configurationName == null)
+				return;
+#else
+			if (String.IsNullOrEmpty (configurationName))
+				return;
+#endif
+			ServiceBehaviorElement behavior = ConfigUtil.BehaviorsSection.ServiceBehaviors [configurationName];
+			if (behavior == null) {
+				if (throwIfNotFound)
+					throw new ArgumentException (String.Format ("Service behavior configuration '{0}' was not found", configurationName));
+				return;
+			}
+
+			KeyedByTypeCollection<IServiceBehavior> behaviors = Description.Behaviors;
+			foreach (var bxe in behavior) {
+				IServiceBehavior b = (IServiceBehavior) bxe.CreateBehavior ();
+				if (behaviors.Contains (b.GetType ()))
+					continue;
+				behaviors.Add (b);
+			}
+		}
+		
+		void ApplyServiceElement (ServiceElement service)
+		{
+			//base addresses
+			HostElement host = service.Host;
+			foreach (BaseAddressElement baseAddress in host.BaseAddresses) {
+				AddBaseAddress (new Uri (baseAddress.BaseAddress));
+			}
+
+			// behaviors
+			AddServiceBehaviors (service.BehaviorConfiguration, true);
+
+			// services
+			foreach (ServiceEndpointElement endpoint in service.Endpoints) {
+				ServiceEndpoint se;
+
+#if NET_4_0
+				var binding = String.IsNullOrEmpty (endpoint.Binding) ? null : ConfigUtil.CreateBinding (endpoint.Binding, endpoint.BindingConfiguration);
+
+				if (!String.IsNullOrEmpty (endpoint.Kind)) {
+					var contract = String.IsNullOrEmpty (endpoint.Contract) ? null : GetContract (endpoint.Contract, false);
+					se = ConfigUtil.ConfigureStandardEndpoint (contract, endpoint);
+					if (se.Binding == null)
+						se.Binding = binding;
+					if (se.Address == null && se.Binding != null) // standard endpoint might have empty address
+						se.Address = new EndpointAddress (CreateUri (se.Binding.Scheme, endpoint.Address));
+					if (se.Binding == null && se.Address != null) // look for protocol mapping
+						se.Binding = GetBindingByProtocolMapping (se.Address.Uri);
+
+					AddServiceEndpoint (se);
+				}
+				else {
+					if (binding == null && endpoint.Address != null) // look for protocol mapping
+						binding = GetBindingByProtocolMapping (endpoint.Address);
+					se = AddServiceEndpoint (endpoint.Contract, binding, endpoint.Address);
+				}
+#else
+				var binding = ConfigUtil.CreateBinding (endpoint.Binding, endpoint.BindingConfiguration);
+				se = AddServiceEndpoint (endpoint.Contract, binding, endpoint.Address);
+#endif
+
+				// endpoint behaviors
+				EndpointBehaviorElement epbehavior = ConfigUtil.BehaviorsSection.EndpointBehaviors [endpoint.BehaviorConfiguration];
+				if (epbehavior != null)
+					foreach (var bxe in epbehavior) {
+						IEndpointBehavior b = (IEndpointBehavior) bxe.CreateBehavior ();
+						se.Behaviors.Add (b);
+				}
+			}
+		}
+
+#if NET_4_0
+		Binding GetBindingByProtocolMapping (Uri address)
+		{
+			ProtocolMappingElement el = ConfigUtil.ProtocolMappingSection.ProtocolMappingCollection [address.Scheme];
+			if (el == null)
+				return null;
+			return ConfigUtil.CreateBinding (el.Binding, el.BindingConfiguration);
+		}
+#endif
+
 		private ServiceElement GetServiceElement() {
 			Type serviceType = Description.ServiceType;
 			if (serviceType == null)
@@ -439,6 +498,22 @@ namespace System.ServiceModel
 			foreach (ServiceEndpoint endPoint in Description.Endpoints)
 				endPoint.Validate ();
 
+#if NET_4_0
+			// In 4.0, it seems that if there is no configured ServiceEndpoint, infer them from the service type.
+			if (Description.Endpoints.Count == 0) {
+				foreach (Type iface in Description.ServiceType.GetInterfaces ())
+					if (iface.GetCustomAttributes (typeof (ServiceContractAttribute), true).Length > 0)
+						foreach (var baddr in BaseAddresses) {
+							if (!baddr.IsAbsoluteUri)
+								continue;
+							var binding = GetBindingByProtocolMapping (baddr);
+							if (binding == null)
+								continue;
+							AddServiceEndpoint (iface.FullName, binding, baddr);
+						}
+			}
+#endif
+
 			if (Description.Endpoints.FirstOrDefault (e => e.Contract != mex_contract && !e.IsSystemEndpoint) == null)
 				throw new InvalidOperationException ("The ServiceHost must have at least one application endpoint (that does not include metadata exchange endpoint) defined by either configuration, behaviors or call to AddServiceEndpoint methods.");
 		}
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel/ServiceProxyGenerator.cs b/mcs/class/System.ServiceModel/System.ServiceModel/ServiceProxyGenerator.cs
index 27ddb12..1b699ac 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel/ServiceProxyGenerator.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel/ServiceProxyGenerator.cs
@@ -27,6 +27,7 @@
 //
 using System;
 using System.Collections.Generic;
+using System.Linq;
 using System.Reflection;
 using System.ServiceModel.Channels;
 using System.ServiceModel.Description;
@@ -38,9 +39,13 @@ namespace System.ServiceModel
 {
 	internal class ServiceProxyGenerator : ProxyGeneratorBase
 	{
-		public static Type CreateCallbackProxyType (Type serviceType, Type callbackType)
+		public static Type CreateCallbackProxyType (DispatchRuntime dispatchRuntime, Type callbackType)
 		{
-			var cd = ContractDescriptionGenerator.GetCallbackContract (serviceType, callbackType);
+			var ed = dispatchRuntime.EndpointDispatcher;
+			var channelDispatcher = ed.ChannelDispatcher;
+			Type contractType = channelDispatcher != null ? channelDispatcher.Host.ImplementedContracts.Values.First (hcd => hcd.Name == ed.ContractName && hcd.Namespace == ed.ContractNamespace).ContractType : dispatchRuntime.Type;
+
+			var cd = ContractDescriptionGenerator.GetCallbackContract (contractType, callbackType);
 			string modname = "dummy";
 			Type crtype = typeof (DuplexServiceRuntimeChannel);
 
@@ -67,8 +72,8 @@ namespace System.ServiceModel
 			b.Call (
 				ctor.GetThis (),
 				baseCtor,
-				new CodeArgumentReference (typeof (IChannel), 1, "channel"),
-				new CodeArgumentReference (typeof (DispatchRuntime), 2, "runtime"));
+				new CodeArgumentReference (typeof (IChannel), 1, "arg0"),
+				new CodeArgumentReference (typeof (DispatchRuntime), 2, "arg1"));
 
 			return CreateProxyTypeOperations (crtype, c, cd);
 		}
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel/ServiceRuntimeChannel.cs b/mcs/class/System.ServiceModel/System.ServiceModel/ServiceRuntimeChannel.cs
index 9c780c4..49403d9 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel/ServiceRuntimeChannel.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel/ServiceRuntimeChannel.cs
@@ -41,8 +41,12 @@ namespace System.ServiceModel.MonoInternal
 		public DuplexServiceRuntimeChannel (IChannel channel, DispatchRuntime runtime)
 			: base (channel, runtime)
 		{
+			if (channel == null)
+				throw new ArgumentNullException ("channel");
 			// setup callback ClientRuntimeChannel.
 			var crt = runtime.CallbackClientRuntime;
+			if (crt == null)
+				throw new InvalidOperationException ("The DispatchRuntime does not have CallbackClientRuntime");
 			var cd = ContractDescriptionGenerator.GetCallbackContract (runtime.Type, crt.CallbackClientType);
 			client = new ClientRuntimeChannel (crt, cd, this.DefaultOpenTimeout, this.DefaultCloseTimeout, channel, null,
 							   runtime.ChannelDispatcher.MessageVersion, this.RemoteAddress, null);
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel/TcpTransportSecurity.cs b/mcs/class/System.ServiceModel/System.ServiceModel/TcpTransportSecurity.cs
index 55c51b2..1a93ea7 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel/TcpTransportSecurity.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel/TcpTransportSecurity.cs
@@ -34,21 +34,14 @@ namespace System.ServiceModel
 	[MonoTODO]
 	public sealed class TcpTransportSecurity
 	{
-		TcpClientCredentialType client;
-		ProtectionLevel protection_level;
-
 		internal TcpTransportSecurity ()
 		{
+			ClientCredentialType = TcpClientCredentialType.Windows; // huh
+			ProtectionLevel = ProtectionLevel.EncryptAndSign;
 		}
 
-		public TcpClientCredentialType ClientCredentialType {
-			get { return client; }
-			set { client = value; }
-		}
+		public TcpClientCredentialType ClientCredentialType { get; set; }
 
-		public ProtectionLevel ProtectionLevel {
-			get { return protection_level; }
-			set { protection_level = value; }
-		}
+		public ProtectionLevel ProtectionLevel { get; set; }
 	}
 }
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel/XmlSerializerFormatAttribute.cs b/mcs/class/System.ServiceModel/System.ServiceModel/XmlSerializerFormatAttribute.cs
index 35c781f..05acd4e 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel/XmlSerializerFormatAttribute.cs
+++ b/mcs/class/System.ServiceModel/System.ServiceModel/XmlSerializerFormatAttribute.cs
@@ -33,17 +33,11 @@ namespace System.ServiceModel
 		AttributeTargets.Method, Inherited = false)]
 	public sealed class XmlSerializerFormatAttribute : Attribute
 	{
-		OperationFormatStyle style;
-		OperationFormatUse use;
+		public OperationFormatStyle Style { get; set; }
 
-		public OperationFormatStyle Style {
-			get { return style; }
-			set { style = value; }
-		}
-
-		public OperationFormatUse Use {
-			get { return use; }
-			set { use = value; }
-		}
+		public OperationFormatUse Use { get; set; }
+		
+		[MonoTODO]
+		public bool SupportFaults { get; set; }
 	}
 }
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel_test.dll.sources b/mcs/class/System.ServiceModel/System.ServiceModel_test.dll.sources
index 2b8e781..450f647 100644
--- a/mcs/class/System.ServiceModel/System.ServiceModel_test.dll.sources
+++ b/mcs/class/System.ServiceModel/System.ServiceModel_test.dll.sources
@@ -41,7 +41,9 @@ System.ServiceModel.Channels/BindingElementTest.cs
 System.ServiceModel.Channels/BindingTest.cs
 System.ServiceModel.Channels/CalcSampleProxy.cs
 System.ServiceModel.Channels/CommunicationObjectTest.cs
+System.ServiceModel.Channels/ConnectionOrientedTransportBindingElementTest.cs
 System.ServiceModel.Channels/CustomBindingTest.cs
+System.ServiceModel.Channels/CustomPolicyConversionContext.cs
 System.ServiceModel.Channels/DebugBindingElement.cs
 System.ServiceModel.Channels/EmptyFaultExceptionTest.cs
 System.ServiceModel.Channels/EnvelopeVersionTest.cs
@@ -64,6 +66,7 @@ System.ServiceModel.Channels/MessageHeadersTest.cs
 System.ServiceModel.Channels/MessagePropertiesTest.cs
 System.ServiceModel.Channels/MessageTest.cs
 System.ServiceModel.Channels/MessageVersionTest.cs
+System.ServiceModel.Channels/MsmqBindingElementBaseTest.cs
 System.ServiceModel.Channels/MsmqTransportBindingElementTest.cs
 System.ServiceModel.Channels/NamedPipeTransportBindingElementTest.cs
 System.ServiceModel.Channels/OneWayBindingElementTest.cs
@@ -98,6 +101,7 @@ System.ServiceModel.Configuration/ServiceModelSectionGroupTest.cs
 System.ServiceModel.Configuration/StandardBindingCollectionElementTest.cs
 System.ServiceModel.Configuration/StandardBindingElementCollectionTest.cs
 System.ServiceModel.Configuration/StandardBindingElementTest.cs
+System.ServiceModel.Configuration/StandardEndpointsSectionTest.cs
 System.ServiceModel.Configuration/UserBinding.cs
 System.ServiceModel.Description/ClientCredentialsTest.cs
 System.ServiceModel.Description/ContractDescriptionTest.cs
@@ -111,6 +115,7 @@ System.ServiceModel.Description/ServiceCredentialsTest.cs
 System.ServiceModel.Description/ServiceDebugBehaviorTest.cs
 System.ServiceModel.Description/ServiceEndpointTest.cs
 System.ServiceModel.Description/ServiceMetadataBehaviorTest.cs
+System.ServiceModel.Description/ServiceMetadataEndpointTest.cs
 System.ServiceModel.Description/ServiceThrottlingBehaviorTest.cs
 System.ServiceModel.Description/TypedMessageConverterTest.cs
 System.ServiceModel.Description/WsdlExporterTest.cs
@@ -172,6 +177,7 @@ System.ServiceModel/FaultContractAttributeTest.cs
 System.ServiceModel/FaultReasonTest.cs
 System.ServiceModel/IntegratedConnectionTest.cs
 System.ServiceModel/MessageSecurityVersionTest.cs
+System.ServiceModel/MsmqTransportSecurityTest.cs
 System.ServiceModel/NetMsmqBindingTest.cs
 System.ServiceModel/NetPeerTcpBindingTest.cs
 System.ServiceModel/NetTcpBindingTest.cs
diff --git a/mcs/class/System.ServiceModel/Test/FeatureBased/Features.Serialization/ChangeLog b/mcs/class/System.ServiceModel/Test/FeatureBased/Features.Serialization/ChangeLog
index 90e7dbd..c40510d 100644
--- a/mcs/class/System.ServiceModel/Test/FeatureBased/Features.Serialization/ChangeLog
+++ b/mcs/class/System.ServiceModel/Test/FeatureBased/Features.Serialization/ChangeLog
@@ -1,3 +1,10 @@
+2010-10-05  Atsushi Eno  <atsushi at ximian.com>
+
+	When finding SerializationMap for resolved type, use type as the
+	key rather than name.
+
+	Make the fixed WCF test show more specific failure details.
+
 2010-05-19  Andreia Gaita  <avidigal at novell.com>
 
 	* DataContractSerializerTest.cs: Add test for deserializing objects
diff --git a/mcs/class/System.ServiceModel/Test/FeatureBased/Features.Serialization/ChangeLog b/mcs/class/System.ServiceModel/Test/FeatureBased/Features.Serialization/ChangeLog.old
similarity index 100%
copy from mcs/class/System.ServiceModel/Test/FeatureBased/Features.Serialization/ChangeLog
copy to mcs/class/System.ServiceModel/Test/FeatureBased/Features.Serialization/ChangeLog.old
diff --git a/mcs/class/System.ServiceModel/Test/FeatureBased/Features.Serialization/KnownTypeTest.cs b/mcs/class/System.ServiceModel/Test/FeatureBased/Features.Serialization/KnownTypeTest.cs
index e51f15b..173d66a 100755
--- a/mcs/class/System.ServiceModel/Test/FeatureBased/Features.Serialization/KnownTypeTest.cs
+++ b/mcs/class/System.ServiceModel/Test/FeatureBased/Features.Serialization/KnownTypeTest.cs
@@ -22,7 +22,7 @@ namespace MonoTests.Features.Serialization
 
 			Point2D r = Client.Move (p1, p2);
 			Assert.IsNotNull (r, "#1");
-			Assert.IsTrue (r is AdvPoint2D, "#2");
+			Assert.AreEqual (typeof (AdvPoint2D), r.GetType (), "#2");
 			Assert.AreEqual (((AdvPoint2D) r).ZeroDistance, 5, "#3");
 
 		}
diff --git a/mcs/class/System.ServiceModel/Test/System.ServiceModel.Channels/ChangeLog b/mcs/class/System.ServiceModel/Test/System.ServiceModel.Channels/ChangeLog
index 8c27d3c..58045b0 100644
--- a/mcs/class/System.ServiceModel/Test/System.ServiceModel.Channels/ChangeLog
+++ b/mcs/class/System.ServiceModel/Test/System.ServiceModel.Channels/ChangeLog
@@ -1,3 +1,30 @@
+2010-11-04  Carlos Alberto Cortez  <calberto.cortez at gmail.com>
+
+	* CustomPolicyConversionContext.cs: New file, containing a dummy
+	child of PolicyConversionContext. * MsmqBindingElementBaseTest.cs:
+	New test file. * ConnectionOrientedTransportBindingElementTest.cs:
+	New test file. * HttpTransportBindingElementTest.cs: Add
+	IPolicyExportExtension tests.
+
+2010-10-15  Atsushi Eno  <atsushi at ximian.com>
+
+	Implement NetTcpBinding.CanBuildChannelFactory/Listener and
+	several related stuff.
+
+	SecurityTokenParameters.InitializeSecurityTokenRequirement() needs
+	to become protected internal, so changed all overrides as well.
+
+	Some implementation in WindowsStreamSecurityBindingElement is
+	needed only for NetTcpBinding implementation.
+
+	Had to disable a test in SymmetricSecurityBindingElement that
+	depended on OneWay support (which is not yet done).
+
+2010-09-24  Atsushi Eno  <atsushi at ximian.com>
+
+	Override IsContentTypeSupported() in per-encoding-binding-element
+	implementation to work as expected.
+
 2010-08-11  Atsushi Eno  <atsushi at ximian.com>
 
 	implement MessageEncodingBindingElement.GetProperty<T>().
diff --git a/mcs/class/System.ServiceModel/Test/System.ServiceModel.Channels/ConnectionOrientedTransportBindingElementTest.cs b/mcs/class/System.ServiceModel/Test/System.ServiceModel.Channels/ConnectionOrientedTransportBindingElementTest.cs
new file mode 100644
index 0000000..b023513
--- /dev/null
+++ b/mcs/class/System.ServiceModel/Test/System.ServiceModel.Channels/ConnectionOrientedTransportBindingElementTest.cs
@@ -0,0 +1,126 @@
+//
+// ConnectionOrientedTransportBindingElementTest.cs
+//
+// Author:
+//	Carlos Alberto Cortez <calberto.cortez at gmail.com>
+//
+// Copyright (C) 2010 Novell, Inc.  http://www.novell.com
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.ServiceModel;
+using System.ServiceModel.Channels;
+using System.ServiceModel.Description;
+using System.Xml;
+using NUnit.Framework;
+
+namespace MonoTests.System.ServiceModel.Channels
+{
+	[TestFixture]
+	public class ConnectionOrientedTransportBindingElementTest
+	{
+		//
+		// We use NamedPipeTransportBindingElement to access the impl of ExportPolicy
+		//
+		[Test]
+		public void ExportPolicyDefault ()
+		{
+			ConnectionOrientedTransportBindingElement binding_element = new NamedPipeTransportBindingElement ();
+			IPolicyExportExtension export_extension = binding_element as IPolicyExportExtension;
+			PolicyConversionContext conversion_context = new CustomPolicyConversionContext ();
+			export_extension.ExportPolicy (new WsdlExporter (), conversion_context);
+
+			PolicyAssertionCollection binding_assertions = conversion_context.GetBindingAssertions ();
+			BindingElementCollection binding_elements = conversion_context.BindingElements;
+			Assert.AreEqual (2, binding_assertions.Count, "#A0");
+			Assert.AreEqual (0, binding_elements.Count, "#A1");
+
+			// wsaw:UsingAddressing
+			XmlNode using_addressing_node = FindAssertion (binding_assertions, "wsaw:UsingAddressing");
+			Assert.AreEqual (true, using_addressing_node != null, "#B0");
+			Assert.AreEqual ("UsingAddressing", using_addressing_node.LocalName, "#B1");
+			Assert.AreEqual ("http://www.w3.org/2006/05/addressing/wsdl", using_addressing_node.NamespaceURI, "#B2");
+			Assert.AreEqual (String.Empty, using_addressing_node.InnerText, "#B3");
+			Assert.AreEqual (0, using_addressing_node.Attributes.Count, "#B4");
+			Assert.AreEqual (0, using_addressing_node.ChildNodes.Count, "#B5");
+
+			// msb:BinaryEncoding
+			XmlNode binary_encoding_node = FindAssertion (binding_assertions, "msb:BinaryEncoding");
+			Assert.AreEqual (true, binary_encoding_node != null, "#C0");
+			Assert.AreEqual ("BinaryEncoding", binary_encoding_node.LocalName, "#C1");
+			Assert.AreEqual ("http://schemas.microsoft.com/ws/06/2004/mspolicy/netbinary1", binary_encoding_node.NamespaceURI, "#C2");
+			Assert.AreEqual (String.Empty, binary_encoding_node.InnerText, "#C3");
+			Assert.AreEqual (0, binary_encoding_node.Attributes.Count, "#C4");
+			Assert.AreEqual (0, binary_encoding_node.ChildNodes.Count, "#C5");
+		}
+
+		// 
+		// Non-default values
+		//
+		[Test]
+		public void ExportPolicy ()
+		{
+			ConnectionOrientedTransportBindingElement binding_element = new NamedPipeTransportBindingElement ();
+			binding_element.ChannelInitializationTimeout = TimeSpan.FromSeconds (3);
+			binding_element.ConnectionBufferSize = binding_element.ConnectionBufferSize / 2;
+			binding_element.HostNameComparisonMode = HostNameComparisonMode.WeakWildcard;
+			binding_element.ManualAddressing = !binding_element.ManualAddressing;
+			binding_element.MaxBufferSize = binding_element.MaxBufferSize / 2;
+			binding_element.MaxBufferPoolSize = binding_element.MaxBufferPoolSize / 2;
+			binding_element.MaxOutputDelay = TimeSpan.FromSeconds (3);
+			binding_element.MaxPendingAccepts = 3;
+			binding_element.MaxPendingConnections = 15;
+			binding_element.MaxReceivedMessageSize = binding_element.MaxReceivedMessageSize / 2;
+			binding_element.TransferMode = TransferMode.Streamed; // Causes an assertion with Streamed* values
+
+			IPolicyExportExtension export_extension = binding_element as IPolicyExportExtension;
+			PolicyConversionContext conversion_context = new CustomPolicyConversionContext ();
+			export_extension.ExportPolicy (new WsdlExporter (), conversion_context);
+
+			PolicyAssertionCollection binding_assertions = conversion_context.GetBindingAssertions ();
+			BindingElementCollection binding_elements = conversion_context.BindingElements;
+			Assert.AreEqual (3, binding_assertions.Count, "#A0");
+			Assert.AreEqual (0, binding_elements.Count, "#A1");
+
+			// msf:Streamed
+			XmlNode streamed_node = FindAssertion (binding_assertions, "msf:Streamed");
+			Assert.AreEqual (true, streamed_node != null, "#B0");
+			Assert.AreEqual ("Streamed", streamed_node.LocalName, "#B1");
+			Assert.AreEqual ("http://schemas.microsoft.com/ws/2006/05/framing/policy", streamed_node.NamespaceURI, "#B2");
+			Assert.AreEqual (String.Empty, streamed_node.InnerText, "#B3");
+			Assert.AreEqual (0, streamed_node.Attributes.Count, "#B4");
+			Assert.AreEqual (0, streamed_node.ChildNodes.Count, "#B5");
+		}
+
+		// For some reason PolicyAssertionCollection.Find is not working as expected,
+		// so do the lookup manually.
+		XmlNode FindAssertion (PolicyAssertionCollection assertionCollection, string name)
+		{
+			foreach (XmlNode node in assertionCollection)
+				if (node.Name == name)
+					return node;
+
+			return null;
+		}
+	}
+}
+
diff --git a/mcs/class/System.ServiceModel/Test/System.ServiceModel.Channels/CustomPolicyConversionContext.cs b/mcs/class/System.ServiceModel/Test/System.ServiceModel.Channels/CustomPolicyConversionContext.cs
new file mode 100644
index 0000000..34e7312
--- /dev/null
+++ b/mcs/class/System.ServiceModel/Test/System.ServiceModel.Channels/CustomPolicyConversionContext.cs
@@ -0,0 +1,76 @@
+//
+// CustomPolicyConversionContext.cs
+//
+// Author:
+//	Carlos Alberto Cortez <calberto.cortez at gmail.com>
+//
+// Copyright (C) 2010 Novell, Inc.  http://www.novell.com
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.ServiceModel;
+using System.ServiceModel.Channels;
+using System.ServiceModel.Description;
+using System.Xml;
+using NUnit.Framework;
+
+namespace MonoTests.System.ServiceModel.Channels
+{
+	class CustomPolicyConversionContext : PolicyConversionContext
+	{
+		PolicyAssertionCollection binding_assertions = new PolicyAssertionCollection ();
+		BindingElementCollection binding_elements = new BindingElementCollection ();
+
+		public CustomPolicyConversionContext ()
+			: base (new ServiceEndpoint (new ContractDescription ("FakeContract")))
+		{
+		}
+
+		public override PolicyAssertionCollection GetBindingAssertions ()
+		{
+			return binding_assertions;
+		}
+
+		public override PolicyAssertionCollection GetFaultBindingAssertions (FaultDescription fault)
+		{
+			return binding_assertions;
+		}
+
+		public override PolicyAssertionCollection GetMessageBindingAssertions (MessageDescription message)
+		{
+			return binding_assertions;
+		}
+
+		public override PolicyAssertionCollection GetOperationBindingAssertions (OperationDescription operation)
+		{
+			return binding_assertions;
+		}
+
+		public override BindingElementCollection BindingElements {
+			get {
+				return binding_elements;
+			}
+		}
+
+	}
+}
+
diff --git a/mcs/class/System.ServiceModel/Test/System.ServiceModel.Channels/HttpTransportBindingElementTest.cs b/mcs/class/System.ServiceModel/Test/System.ServiceModel.Channels/HttpTransportBindingElementTest.cs
index 95d0fdf..919fd86 100644
--- a/mcs/class/System.ServiceModel/Test/System.ServiceModel.Channels/HttpTransportBindingElementTest.cs
+++ b/mcs/class/System.ServiceModel/Test/System.ServiceModel.Channels/HttpTransportBindingElementTest.cs
@@ -38,6 +38,10 @@ using System.Threading;
 using System.Xml;
 using NUnit.Framework;
 
+#if NET_4_0
+using System.Security.Authentication.ExtendedProtection;
+#endif
+
 namespace MonoTests.System.ServiceModel.Channels
 {
 	[TestFixture]
@@ -417,5 +421,91 @@ namespace MonoTests.System.ServiceModel.Channels
 		}
 
 		#endregion
-	}
+
+		#region metadata
+
+		[Test]
+		public void ExportPolicyDefault ()
+		{
+			IPolicyExportExtension binding_element = new HttpTransportBindingElement ();
+			PolicyConversionContext conversion_context = new CustomPolicyConversionContext ();
+			binding_element.ExportPolicy (new WsdlExporter (), conversion_context);
+
+			PolicyAssertionCollection binding_assertions = conversion_context.GetBindingAssertions ();
+			BindingElementCollection binding_elements = conversion_context.BindingElements;
+			Assert.AreEqual (1, binding_assertions.Count, "#A0");
+			Assert.AreEqual (0, binding_elements.Count, "#A1");
+
+			// wsaw:UsingAddressing
+			XmlNode using_addressing_node = FindAssertion (binding_assertions, "wsaw:UsingAddressing");
+			Assert.AreEqual (true, using_addressing_node != null, "#B0");
+			Assert.AreEqual ("UsingAddressing", using_addressing_node.LocalName, "#B1");
+			Assert.AreEqual ("http://www.w3.org/2006/05/addressing/wsdl", using_addressing_node.NamespaceURI, "#B2");
+			Assert.AreEqual (0, using_addressing_node.Attributes.Count, "#B3");
+			Assert.AreEqual (0, using_addressing_node.ChildNodes.Count, "#B4");
+			Assert.AreEqual (String.Empty, using_addressing_node.InnerText, "#B5");
+		}
+
+		[Test]
+		public void ExportPolicy ()
+		{
+			HttpTransportBindingElement http_binding_element = new HttpTransportBindingElement ();
+
+			//
+			// Specify some non-default values
+			//
+			http_binding_element.AllowCookies = !http_binding_element.AllowCookies;
+			http_binding_element.AuthenticationScheme = AuthenticationSchemes.Ntlm;
+			http_binding_element.BypassProxyOnLocal = !http_binding_element.BypassProxyOnLocal;
+			http_binding_element.HostNameComparisonMode = HostNameComparisonMode.WeakWildcard;
+			http_binding_element.KeepAliveEnabled = !http_binding_element.KeepAliveEnabled;
+			http_binding_element.ManualAddressing = !http_binding_element.ManualAddressing;
+			http_binding_element.MaxBufferPoolSize = http_binding_element.MaxBufferPoolSize / 2;
+			http_binding_element.MaxBufferSize = http_binding_element.MaxBufferSize / 2;
+			http_binding_element.MaxReceivedMessageSize = http_binding_element.MaxReceivedMessageSize / 2;
+			http_binding_element.ProxyAddress = new Uri ("http://proxyaddress.com");
+			http_binding_element.ProxyAuthenticationScheme = AuthenticationSchemes.Basic;
+			http_binding_element.Realm = "RandomRealm";
+			http_binding_element.TransferMode = TransferMode.Streamed;
+			http_binding_element.UnsafeConnectionNtlmAuthentication = !http_binding_element.UnsafeConnectionNtlmAuthentication;
+			http_binding_element.UseDefaultWebProxy = !http_binding_element.UseDefaultWebProxy;
+#if NET_4_0
+			http_binding_element.DecompressionEnabled = !http_binding_element.DecompressionEnabled;
+			http_binding_element.ExtendedProtectionPolicy = new ExtendedProtectionPolicy (PolicyEnforcement.WhenSupported);
+#endif
+
+			// 
+			// Actual call to ExportPolicy
+			//
+			IPolicyExportExtension binding_element = http_binding_element as IPolicyExportExtension;
+			PolicyConversionContext conversion_context = new CustomPolicyConversionContext ();
+			binding_element.ExportPolicy (new WsdlExporter (), conversion_context);
+
+			PolicyAssertionCollection binding_assertions = conversion_context.GetBindingAssertions ();
+			BindingElementCollection binding_elements = conversion_context.BindingElements;
+			Assert.AreEqual (2, binding_assertions.Count, "#A0");
+			Assert.AreEqual (0, binding_elements.Count, "#A1");
+
+			// AuthenticationScheme - the only property that causes information to be exported.
+			XmlNode authentication_node = FindAssertion (binding_assertions, "http:NtlmAuthentication");
+			Assert.AreEqual (true, authentication_node != null, "#B0");
+			Assert.AreEqual ("NtlmAuthentication", authentication_node.LocalName, "#B1");
+			Assert.AreEqual ("http://schemas.microsoft.com/ws/06/2004/policy/http", authentication_node.NamespaceURI, "#B2");
+			Assert.AreEqual (String.Empty, authentication_node.InnerText, "#B3");
+			Assert.AreEqual (0, authentication_node.Attributes.Count, "#B4");
+		}
+
+		// For some reason PolicyAssertionCollection.Find is not working as expected,
+		// so do the lookup manually.
+		XmlNode FindAssertion (PolicyAssertionCollection assertionCollection, string name)
+		{
+			foreach (XmlNode node in assertionCollection)
+				if (node.Name == name)
+					return node;
+
+			return null;
+		}
+
+		#endregion
+    }
 }
diff --git a/mcs/class/System.ServiceModel/Test/System.ServiceModel.Channels/MsmqBindingElementBaseTest.cs b/mcs/class/System.ServiceModel/Test/System.ServiceModel.Channels/MsmqBindingElementBaseTest.cs
new file mode 100644
index 0000000..9020358
--- /dev/null
+++ b/mcs/class/System.ServiceModel/Test/System.ServiceModel.Channels/MsmqBindingElementBaseTest.cs
@@ -0,0 +1,164 @@
+//
+// MsmqBindingElementBaseTest.cs
+//
+// Author:
+//	Carlos Alberto Cortez <calberto.cortez at gmail.com>
+//
+// Copyright (C) 2010 Novell, Inc.  http://www.novell.com
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Net.Security;
+using System.ServiceModel;
+using System.ServiceModel.Channels;
+using System.ServiceModel.Description;
+using System.Xml;
+using NUnit.Framework;
+
+namespace MonoTests.System.ServiceModel.Channels
+{
+	[TestFixture]
+	public class MsmqBindingElementBaseTest
+	{
+		[Test]
+		public void ExportPolicyDefault ()
+		{
+			MsmqBindingElementBase binding_element = new MsmqTransportBindingElement ();
+			IPolicyExportExtension export_extension = binding_element as IPolicyExportExtension;
+			PolicyConversionContext conversion_context = new CustomPolicyConversionContext ();
+			export_extension.ExportPolicy (new WsdlExporter (), conversion_context);
+
+			PolicyAssertionCollection binding_assertions = conversion_context.GetBindingAssertions ();
+			BindingElementCollection binding_elements = conversion_context.BindingElements;
+			Assert.AreEqual (4, binding_assertions.Count, "#A0");
+			Assert.AreEqual (0, binding_elements.Count, "#A1");
+
+			// wsaw:UsingAddressing
+			XmlNode using_addressing_node = FindAssertion (binding_assertions, "wsaw:UsingAddressing");
+			Assert.AreEqual (true, using_addressing_node != null, "#B0");
+			Assert.AreEqual ("UsingAddressing", using_addressing_node.LocalName, "#B1");
+			Assert.AreEqual ("http://www.w3.org/2006/05/addressing/wsdl", using_addressing_node.NamespaceURI, "#B2");
+			Assert.AreEqual (String.Empty, using_addressing_node.InnerText, "#B3");
+			Assert.AreEqual (0, using_addressing_node.Attributes.Count, "#B4");
+			Assert.AreEqual (0, using_addressing_node.ChildNodes.Count, "#B5");
+
+			// msb:BinaryEncoding
+			XmlNode binary_encoding_node = FindAssertion (binding_assertions, "msb:BinaryEncoding");
+			Assert.AreEqual (true, binary_encoding_node != null, "#C0");
+			Assert.AreEqual ("BinaryEncoding", binary_encoding_node.LocalName, "#C1");
+			Assert.AreEqual ("http://schemas.microsoft.com/ws/06/2004/mspolicy/netbinary1", binary_encoding_node.NamespaceURI, "#C2");
+			Assert.AreEqual (String.Empty, binary_encoding_node.InnerText, "#C3");
+			Assert.AreEqual (0, binary_encoding_node.Attributes.Count, "#C4");
+			Assert.AreEqual (0, binary_encoding_node.ChildNodes.Count, "#C5");
+
+			// msmq:Authenticated
+			XmlNode authenticated_node = FindAssertion (binding_assertions, "msmq:Authenticated");
+			Assert.AreEqual (true, authenticated_node != null, "#D0");
+			Assert.AreEqual ("Authenticated", authenticated_node.LocalName, "#D1");
+			Assert.AreEqual ("http://schemas.microsoft.com/ws/06/2004/mspolicy/msmq", authenticated_node.NamespaceURI, "#D2");
+			Assert.AreEqual (String.Empty, authenticated_node.InnerText, "#D3");
+			Assert.AreEqual (0, authenticated_node.Attributes.Count, "#D4");
+			Assert.AreEqual (0, authenticated_node.ChildNodes.Count, "#D5");
+
+			// msmq:WindowsDomain
+			XmlNode domain_node = FindAssertion (binding_assertions, "msmq:WindowsDomain");
+			Assert.AreEqual (true, domain_node != null, "#E0");
+			Assert.AreEqual ("WindowsDomain", domain_node.LocalName, "#E1");
+			Assert.AreEqual ("http://schemas.microsoft.com/ws/06/2004/mspolicy/msmq", domain_node.NamespaceURI, "#E2");
+			Assert.AreEqual (String.Empty, domain_node.InnerText, "#E3");
+			Assert.AreEqual (0, domain_node.Attributes.Count, "#E4");
+			Assert.AreEqual (0, domain_node.ChildNodes.Count, "#E5");
+		}
+
+		[Test]
+		public void ExportPolicy ()
+		{
+			MsmqBindingElementBase binding_element = new MsmqTransportBindingElement ();
+			binding_element.CustomDeadLetterQueue = new Uri ("msmq://custom");
+			binding_element.DeadLetterQueue = DeadLetterQueue.Custom;
+			binding_element.Durable = !binding_element.Durable; // Volatile
+			binding_element.ExactlyOnce = !binding_element.ExactlyOnce; // BestEffort
+			binding_element.ManualAddressing = !binding_element.ManualAddressing;
+			binding_element.MaxBufferPoolSize = binding_element.MaxBufferPoolSize / 2;
+			binding_element.MaxReceivedMessageSize = binding_element.MaxReceivedMessageSize / 2;
+			binding_element.MaxRetryCycles = binding_element.MaxRetryCycles / 2;
+			binding_element.ReceiveRetryCount = 10;
+			binding_element.ReceiveErrorHandling = ReceiveErrorHandling.Reject;
+			binding_element.RetryCycleDelay = TimeSpan.FromSeconds (5);
+			binding_element.TimeToLive = TimeSpan.FromSeconds (60);
+			binding_element.UseMsmqTracing = !binding_element.UseMsmqTracing;
+			binding_element.UseSourceJournal = !binding_element.UseSourceJournal;
+#if NET_4_0
+			// This ones haven't been implemented yet, so comment them for now.
+			//binding_element.ReceiveContextEnabled = !binding_element.ReceiveContextEnabled;
+			//binding_element.ValidityDuration = TimeSpan.FromSeconds (30);
+#endif
+
+			binding_element.MsmqTransportSecurity.MsmqAuthenticationMode = MsmqAuthenticationMode.Certificate;
+			binding_element.MsmqTransportSecurity.MsmqEncryptionAlgorithm = MsmqEncryptionAlgorithm.Aes;
+			binding_element.MsmqTransportSecurity.MsmqProtectionLevel = ProtectionLevel.EncryptAndSign;
+			binding_element.MsmqTransportSecurity.MsmqSecureHashAlgorithm = MsmqSecureHashAlgorithm.Sha256;
+
+			IPolicyExportExtension export_extension = binding_element as IPolicyExportExtension;
+			PolicyConversionContext conversion_context = new CustomPolicyConversionContext ();
+			export_extension.ExportPolicy (new WsdlExporter (), conversion_context);
+
+			PolicyAssertionCollection binding_assertions = conversion_context.GetBindingAssertions ();
+			BindingElementCollection binding_elements = conversion_context.BindingElements;
+			Assert.AreEqual (5, binding_assertions.Count, "#A0");
+			Assert.AreEqual (0, binding_elements.Count, "#A1");
+
+			// msmq:MsmqVolatile
+			XmlNode volatile_node = FindAssertion (binding_assertions, "msmq:MsmqVolatile");
+			Assert.AreEqual (true, volatile_node != null, "#B0");
+			Assert.AreEqual ("MsmqVolatile", volatile_node.LocalName, "#B1");
+			Assert.AreEqual ("http://schemas.microsoft.com/ws/06/2004/mspolicy/msmq", volatile_node.NamespaceURI, "#B2");
+			Assert.AreEqual (String.Empty, volatile_node.InnerText, "#B3");
+			Assert.AreEqual (0, volatile_node.Attributes.Count, "#B4");
+			Assert.AreEqual (0, volatile_node.ChildNodes.Count, "#B5");
+
+			// msmq:MsmqBestEffort
+			XmlNode best_effort_node = FindAssertion (binding_assertions, "msmq:MsmqBestEffort");
+			Assert.AreEqual (true, best_effort_node != null, "#C0");
+			Assert.AreEqual ("MsmqBestEffort", best_effort_node.LocalName, "#C1");
+			Assert.AreEqual ("http://schemas.microsoft.com/ws/06/2004/mspolicy/msmq", best_effort_node.NamespaceURI, "#C2");
+			Assert.AreEqual (String.Empty, best_effort_node.InnerText, "#C3");
+			Assert.AreEqual (0, best_effort_node.Attributes.Count, "#C4");
+			Assert.AreEqual (0, best_effort_node.ChildNodes.Count, "#C5");
+
+			// Setting MsmqTransportSecurity.MsmqAuthenticationMode to a value other than WindowsDomain
+			// causes the removal of the WindowsDomain policy.
+			XmlNode domain_node = FindAssertion (binding_assertions, "msmq:WindowsDomain");
+			Assert.AreEqual (true, domain_node == null, "#D0");
+		}
+
+		XmlNode FindAssertion (PolicyAssertionCollection assertionCollection, string name)
+		{
+			foreach (XmlNode node in assertionCollection)
+				if (node.Name == name)
+					return node;
+
+			return null;
+		}
+	}
+}
+
diff --git a/mcs/class/System.ServiceModel/Test/System.ServiceModel.Channels/SymmetricSecurityBindingElementTest.cs b/mcs/class/System.ServiceModel/Test/System.ServiceModel.Channels/SymmetricSecurityBindingElementTest.cs
index 5792d72..d931be3 100644
--- a/mcs/class/System.ServiceModel/Test/System.ServiceModel.Channels/SymmetricSecurityBindingElementTest.cs
+++ b/mcs/class/System.ServiceModel/Test/System.ServiceModel.Channels/SymmetricSecurityBindingElementTest.cs
@@ -395,6 +395,7 @@ namespace MonoTests.System.ServiceModel.Channels
 		}
 
 		[Test]
+		[Category ("NotWorking")] // it requires OneWay
 		public void RequestBasedOnContract2 ()
 		{
 			CustomBinding b = CreateBinding (delegate (Message input) {
diff --git a/mcs/class/System.ServiceModel/Test/System.ServiceModel.Channels/TextMessageEncodingBindingElementTest.cs b/mcs/class/System.ServiceModel/Test/System.ServiceModel.Channels/TextMessageEncodingBindingElementTest.cs
index 521a005..054c2be 100644
--- a/mcs/class/System.ServiceModel/Test/System.ServiceModel.Channels/TextMessageEncodingBindingElementTest.cs
+++ b/mcs/class/System.ServiceModel/Test/System.ServiceModel.Channels/TextMessageEncodingBindingElementTest.cs
@@ -103,5 +103,14 @@ namespace MonoTests.System.ServiceModel.Channels
 				new Uri ("http://localhost:8080"), String.Empty, ListenUriMode.Unique);
 			new Element ().BuildChannelListener<IReplyChannel> (ctx);
 		}
+
+		[Test]
+		public void MessageEncoderIsContentTypeSupported ()
+		{
+			var enc = new TextMessageEncodingBindingElement ().CreateMessageEncoderFactory ().Encoder;
+			Assert.IsFalse (enc.IsContentTypeSupported ("application/xml"), "#1");
+			Assert.IsFalse (enc.IsContentTypeSupported ("text/xml"), "#2");
+			Assert.IsTrue (enc.IsContentTypeSupported ("application/soap+xml"), "#3");
+		}
 	}
 }
diff --git a/mcs/class/System.ServiceModel/Test/System.ServiceModel.Configuration/ChangeLog b/mcs/class/System.ServiceModel/Test/System.ServiceModel.Configuration/ChangeLog
index abbce86..ac38784 100644
--- a/mcs/class/System.ServiceModel/Test/System.ServiceModel.Configuration/ChangeLog
+++ b/mcs/class/System.ServiceModel/Test/System.ServiceModel.Configuration/ChangeLog
@@ -1,3 +1,8 @@
+2010-09-13  Atsushi Eno  <atsushi at ximian.com>
+
+	implemented large parts of WCF standard endpoints and
+	configuration support.
+
 2009-02-24  Atsushi Enomoto  <atsushi at ximian.com>
 
 	* BindingsSectionTest.cs, ServiceModelSectionGroupTest.cs:
diff --git a/mcs/class/System.ServiceModel/Test/System.ServiceModel.Configuration/ChangeLog b/mcs/class/System.ServiceModel/Test/System.ServiceModel.Configuration/ChangeLog.old
similarity index 100%
copy from mcs/class/System.ServiceModel/Test/System.ServiceModel.Configuration/ChangeLog
copy to mcs/class/System.ServiceModel/Test/System.ServiceModel.Configuration/ChangeLog.old
diff --git a/mcs/class/System.ServiceModel/Test/System.ServiceModel.Configuration/StandardEndpointsSectionTest.cs b/mcs/class/System.ServiceModel/Test/System.ServiceModel.Configuration/StandardEndpointsSectionTest.cs
new file mode 100644
index 0000000..b294efc
--- /dev/null
+++ b/mcs/class/System.ServiceModel/Test/System.ServiceModel.Configuration/StandardEndpointsSectionTest.cs
@@ -0,0 +1,55 @@
+//
+// StandardEndpointsSectionTest.cs
+//
+// Author:
+//	Atsushi Enomoto  <atsushi at ximian.com>
+//
+// Copyright (C) 2010 Novell, Inc.  http://novell.com
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+#if NET_4_0
+
+using System;
+using System.Collections.Generic;
+using System.Configuration;
+using System.Linq;
+using System.Text;
+using NUnit.Framework;
+using System.ServiceModel;
+using System.ServiceModel.Configuration;
+using System.ServiceModel.Description;
+using System.ServiceModel.Dispatcher;
+using System.ServiceModel.Channels;
+
+namespace MonoTests.System.ServiceModel.Configuration
+{
+	[TestFixture]
+	public class StandardEndpointsSectionTest
+	{
+		[Test]
+		public void ServiceMetadataExists ()
+		{
+			var cfg = ConfigurationManager.OpenMachineConfiguration ();
+			Assert.IsNotNull (StandardEndpointsSection.GetSection (cfg).EndpointCollections.FirstOrDefault (e => e is ServiceMetadataEndpointCollectionElement), "#1");
+		}
+	}
+}
+#endif
diff --git a/mcs/class/System.ServiceModel/Test/System.ServiceModel.Description/ChangeLog b/mcs/class/System.ServiceModel/Test/System.ServiceModel.Description/ChangeLog
old mode 100755
new mode 100644
index 683c01d..7096857
--- a/mcs/class/System.ServiceModel/Test/System.ServiceModel.Description/ChangeLog
+++ b/mcs/class/System.ServiceModel/Test/System.ServiceModel.Description/ChangeLog
@@ -1,3 +1,20 @@
+2010-10-08  Atsushi Eno  <atsushi at ximian.com>
+
+	Do not reject contract from the same method, could happen by a
+	type with multiple service contracts within the typie hierarchy.
+
+	For details, see:
+	http://lists.ximian.com/pipermail/mono-devel-list/2010-September/035940.html
+
+2010-09-13  Atsushi Eno  <atsushi at ximian.com>
+
+	implemented large parts of WCF standard endpoints and
+	configuration support.
+
+2010-09-02  Atsushi Eno  <atsushi at ximian.com>
+
+	Add another roundtrip case.
+
 2010-06-24  Atsushi Enomoto  <atsushi at ximian.com>
 
 	* MetadataExchangeBindingsTest.cs : make sure that the target port
diff --git a/mcs/class/System.ServiceModel/Test/System.ServiceModel.Description/ChangeLog b/mcs/class/System.ServiceModel/Test/System.ServiceModel.Description/ChangeLog.old
similarity index 100%
copy from mcs/class/System.ServiceModel/Test/System.ServiceModel.Description/ChangeLog
copy to mcs/class/System.ServiceModel/Test/System.ServiceModel.Description/ChangeLog.old
diff --git a/mcs/class/System.ServiceModel/Test/System.ServiceModel.Description/ContractDescriptionTest.cs b/mcs/class/System.ServiceModel/Test/System.ServiceModel.Description/ContractDescriptionTest.cs
index 310c396..a44b6a1 100644
--- a/mcs/class/System.ServiceModel/Test/System.ServiceModel.Description/ContractDescriptionTest.cs
+++ b/mcs/class/System.ServiceModel/Test/System.ServiceModel.Description/ContractDescriptionTest.cs
@@ -420,6 +420,14 @@ namespace MonoTests.System.ServiceModel.Description
 			Assert.AreEqual (typeof (IFoo3), cd.ContractType, "#3");
 			Assert.AreEqual (3, cd.Operations.Count, "#4");
 		}
+		
+		[Test]
+		public static void MultipleContractsInTypeHierarchy ()
+		{
+			ContractDescription.GetContract (typeof (DuplicateCheckClassWrapper.ServiceInterface));
+
+			var host = new ServiceHost (typeof (DuplicateCheckClassWrapper.DummyService)); // fine in MS, fails in Mono with "A contract cannot have two operations that have the identical names and different set of parameters"
+		}
 
 		// It is for testing attribute search in interfaces.
 		public class Foo : IFoo
@@ -628,5 +636,33 @@ namespace MonoTests.System.ServiceModel.Description
 				set { foo = value; }
 			}
 		}
+
+		public class DuplicateCheckClassWrapper
+		{
+
+			[ServiceContract]
+			internal interface ServiceInterface : Foo
+			{
+			}
+
+			[ServiceContract]
+			internal interface Foo : Bar
+			{
+				[OperationContract] void Foo();
+			}
+
+			[ServiceContract]
+			internal interface Bar
+			{
+				[OperationContract] void FooBar();
+			}
+
+			internal class DummyService : ServiceInterface
+			{
+				public void FooBar() { }
+
+				public void Foo() { }
+			}
+		}
 	}
 }
diff --git a/mcs/class/System.ServiceModel/Test/System.ServiceModel.Description/ServiceMetadataEndpointTest.cs b/mcs/class/System.ServiceModel/Test/System.ServiceModel.Description/ServiceMetadataEndpointTest.cs
new file mode 100644
index 0000000..2b36aea
--- /dev/null
+++ b/mcs/class/System.ServiceModel/Test/System.ServiceModel.Description/ServiceMetadataEndpointTest.cs
@@ -0,0 +1,57 @@
+//
+// ServiceEndpointTest.cs
+//
+// Author:
+//	Atsushi Enomoto  <atsushi at ximian.com>
+//
+// Copyright (C) 2009 Novell, Inc.  http://novell.com
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+#if NET_4_0
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using NUnit.Framework;
+using System.ServiceModel;
+using System.ServiceModel.Description;
+using System.ServiceModel.Dispatcher;
+using System.ServiceModel.Channels;
+
+namespace MonoTests.System.ServiceModel.Description
+{
+	[TestFixture]
+	public class ServiceMetadataEndpointTest
+	{
+		[Test]
+		public void DefaultValues ()
+		{
+			var se = new ServiceMetadataEndpoint ();
+			Assert.IsNotNull (se.Contract, "#1");
+			Assert.AreEqual (typeof (IMetadataExchange), se.Contract.ContractType, "#1.2");
+			Assert.IsNotNull (se.Binding, "#2");
+			// FIXME: enable once we get usable WSHttpBinding.
+			// Assert.AreEqual (typeof (WSHttpBinding), se.Binding.GetType (), "#2.2");
+			Assert.IsNull (se.Address, "#3");
+		}
+	}
+}
+#endif
diff --git a/mcs/class/System.ServiceModel/Test/System.ServiceModel.Description/TypedMessageConverterTest.cs b/mcs/class/System.ServiceModel/Test/System.ServiceModel.Description/TypedMessageConverterTest.cs
index 230d1f1..faa52b0 100644
--- a/mcs/class/System.ServiceModel/Test/System.ServiceModel.Description/TypedMessageConverterTest.cs
+++ b/mcs/class/System.ServiceModel/Test/System.ServiceModel.Description/TypedMessageConverterTest.cs
@@ -88,7 +88,23 @@ namespace MonoTests.System.ServiceModel.Description
 			Message msg = c.ToMessage (t1);
 			Test1 t2 = (Test1) c.FromMessage (msg);
 			Assert.AreEqual ("test", t2.echo.msg, "#01");
-			Assert.AreEqual ("testtest", t2.body2, "#01");
+			Assert.AreEqual ("testtest", t2.body2, "#02");
+		}
+
+		[Test]
+		public void StandardRoundtrip2 ()
+		{
+			TypedMessageConverter c = TypedMessageConverter.Create (
+				typeof (Test2), "http://tempuri.org/MyTest");
+			var t1 = new Test2 ();
+			t1.Body = new Echo () { msg = "test" };
+			var uid = Guid.NewGuid ();
+			t1.Id = uid;
+			Message msg = c.ToMessage (t1);
+			var t2 = (Test2) c.FromMessage (msg);
+			Assert.AreEqual ("test", t2.Body.msg, "#01");
+			// FIXME: enable it (not working yet)
+			//Assert.AreEqual (uid, t2.Id, "#02");
 		}
 
 		[Test]
@@ -102,7 +118,7 @@ namespace MonoTests.System.ServiceModel.Description
 			Message msg = c.ToMessage (t1);
 			Test1 t2 = (Test1) c.FromMessage (msg);
 			Assert.AreEqual ("test", t2.echo.msg, "#01");
-			Assert.AreEqual ("testtest", t2.body2, "#01");
+			Assert.AreEqual ("testtest", t2.body2, "#02");
 		}
 	}
 
@@ -122,4 +138,13 @@ namespace MonoTests.System.ServiceModel.Description
 		[DataMember]
 		public string msg = "default";
 	}
+
+	[MessageContract (IsWrapped = false)]
+	public class Test2
+	{
+		[MessageHeader (Name = "head", Namespace = "urn:foo")]
+		public Guid Id { get; set; }
+		[MessageBodyMember (Name = "body", Namespace = "urn:foo")]
+		public Echo Body { get; set; }
+	}
 }
diff --git a/mcs/class/System.ServiceModel/Test/System.ServiceModel.Dispatcher/ChangeLog b/mcs/class/System.ServiceModel/Test/System.ServiceModel.Dispatcher/ChangeLog
index 3fd3f99..72e0a40 100644
--- a/mcs/class/System.ServiceModel/Test/System.ServiceModel.Dispatcher/ChangeLog
+++ b/mcs/class/System.ServiceModel/Test/System.ServiceModel.Dispatcher/ChangeLog
@@ -1,3 +1,15 @@
+2010-09-29  Atsushi Eno  <atsushi at ximian.com>
+
+	Fix the issue that callback contract often gets confused by
+	picking unexpected contract type.
+
+	The problem is that DispatchRuntime.Type is a service
+	implementation type that could implement two or more contract
+	interfaces, and it was in random order how ServiceProxyGenerator
+	picks up the contract type. Now it looks for correct contract type
+	instead of the service type by exactly looking for the target
+	contract in the endpoint (dispatcher).
+
 2010-06-22  Atsushi Enomoto  <atsushi at ximian.com>
 
 	* DispatchRuntimeTest.cs : add another line of assertion.
diff --git a/mcs/class/System.ServiceModel/Test/System.ServiceModel.Dispatcher/ChangeLog b/mcs/class/System.ServiceModel/Test/System.ServiceModel.Dispatcher/ChangeLog.old
similarity index 100%
copy from mcs/class/System.ServiceModel/Test/System.ServiceModel.Dispatcher/ChangeLog
copy to mcs/class/System.ServiceModel/Test/System.ServiceModel.Dispatcher/ChangeLog.old
diff --git a/mcs/class/System.ServiceModel/Test/System.ServiceModel.Dispatcher/DispatchRuntimeTest.cs b/mcs/class/System.ServiceModel/Test/System.ServiceModel.Dispatcher/DispatchRuntimeTest.cs
index 6a3b10a..adff570 100644
--- a/mcs/class/System.ServiceModel/Test/System.ServiceModel.Dispatcher/DispatchRuntimeTest.cs
+++ b/mcs/class/System.ServiceModel/Test/System.ServiceModel.Dispatcher/DispatchRuntimeTest.cs
@@ -160,6 +160,13 @@ namespace MonoTests.System.ServiceModel.Dispatcher
 				ServiceDebugBehavior db = h.Description.Behaviors.Find<ServiceDebugBehavior> ();
 				db.IncludeExceptionDetailInFaults = true;
 				h.Open ();
+				foreach (ChannelDispatcher cd in h.ChannelDispatchers) {
+					foreach (var ed in cd.Endpoints) {
+						if (ed.ContractName == "IHttpGetHelpPageAndMetadataContract")
+							continue;
+						Assert.AreEqual (typeof (AllActions), ed.DispatchRuntime.Type, "Type property: " + ed.ContractName);
+					}
+				}
 				AllActionsProxy p = new AllActionsProxy (new BasicHttpBinding () { SendTimeout = TimeSpan.FromSeconds (5), ReceiveTimeout = TimeSpan.FromSeconds (5) }, new EndpointAddress ("http://localhost:8080/AllActions"));
 
 				for (int i = 0; i < invocations; ++i)
diff --git a/mcs/class/System.ServiceModel/Test/System.ServiceModel.Security/ChangeLog b/mcs/class/System.ServiceModel/Test/System.ServiceModel.Security/ChangeLog
old mode 100755
new mode 100644
index c5a46e4..ea769c0
--- a/mcs/class/System.ServiceModel/Test/System.ServiceModel.Security/ChangeLog
+++ b/mcs/class/System.ServiceModel/Test/System.ServiceModel.Security/ChangeLog
@@ -1,3 +1,8 @@
+2010-09-13  Atsushi Eno  <atsushi at ximian.com>
+
+	implemented large parts of WCF standard endpoints and
+	configuration support.
+
 2010-07-28  Atsushi Enomoto  <atsushi at ximian.com>
 
 	* ServiceCredentialsSecurityTokenManagerTest.cs : another WS-SC test.
diff --git a/mcs/class/System.ServiceModel/Test/System.ServiceModel.Security/ChangeLog b/mcs/class/System.ServiceModel/Test/System.ServiceModel.Security/ChangeLog.old
similarity index 100%
copy from mcs/class/System.ServiceModel/Test/System.ServiceModel.Security/ChangeLog
copy to mcs/class/System.ServiceModel/Test/System.ServiceModel.Security/ChangeLog.old
diff --git a/mcs/class/System.ServiceModel/Test/System.ServiceModel.Security/SecurityMessagePropertyTest.cs b/mcs/class/System.ServiceModel/Test/System.ServiceModel.Security/SecurityMessagePropertyTest.cs
index 9624258..b29b970 100644
--- a/mcs/class/System.ServiceModel/Test/System.ServiceModel.Security/SecurityMessagePropertyTest.cs
+++ b/mcs/class/System.ServiceModel/Test/System.ServiceModel.Security/SecurityMessagePropertyTest.cs
@@ -164,7 +164,7 @@ namespace MonoTests.System.ServiceModel.Security
 		}
 
 		[Test]
-		[Category ("NotWorking")]
+		[Ignore ("This hangs on .NET")]
 		// not sure how "good" this test is ... if it fails at
 		// service side, it just results in timeout error.
 		// The assertion makes sure that it passes all the tests, but
diff --git a/mcs/class/System.ServiceModel/Test/System.ServiceModel/ChangeLog b/mcs/class/System.ServiceModel/Test/System.ServiceModel/ChangeLog
index f79c5d3..9e43056 100644
--- a/mcs/class/System.ServiceModel/Test/System.ServiceModel/ChangeLog
+++ b/mcs/class/System.ServiceModel/Test/System.ServiceModel/ChangeLog
@@ -1,3 +1,30 @@
+2010-11-04  Carlos Alberto Cortez  <calberto.cortez at gmail.com>
+
+	* MsmqTransportSecurityTest.cs: New test file.
+
+2010-10-15  Atsushi Eno  <atsushi at ximian.com>
+
+	Implement NetTcpBinding.CanBuildChannelFactory/Listener and
+	several related stuff.
+
+	SecurityTokenParameters.InitializeSecurityTokenRequirement() needs
+	to become protected internal, so changed all overrides as well.
+
+	Some implementation in WindowsStreamSecurityBindingElement is
+	needed only for NetTcpBinding implementation.
+
+	Had to disable a test in SymmetricSecurityBindingElement that
+	depended on OneWay support (which is not yet done).
+
+2010-10-14  Atsushi Eno  <atsushi at ximian.com>
+
+	Fill NetTcpBinding security implementation a bit.
+
+2010-09-16  Atsushi Eno  <atsushi at ximian.com>
+
+	Implement some additional logic around AddServiceEndpoint() to
+	achive standard endpoint support.
+
 2010-08-18  Atsushi Eno  <atsushi at ximian.com>
 
 	Request-reply channel factory should not reject one-way operation.
diff --git a/mcs/class/System.ServiceModel/Test/System.ServiceModel/MsmqTransportSecurityTest.cs b/mcs/class/System.ServiceModel/Test/System.ServiceModel/MsmqTransportSecurityTest.cs
new file mode 100644
index 0000000..dbbe37f
--- /dev/null
+++ b/mcs/class/System.ServiceModel/Test/System.ServiceModel/MsmqTransportSecurityTest.cs
@@ -0,0 +1,53 @@
+//
+// MsmqTransportSecurityTest.cs
+//
+// Author:
+//	Carlos Alberto Cortez <calberto.cortez at gmail.com>
+//
+// Copyright (C) 2010 Novell, Inc.  http://www.novell.com
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Net.Security;
+using System.ServiceModel;
+using System.ServiceModel.Description;
+using System.Xml;
+using NUnit.Framework;
+
+namespace MonoTests.System.ServiceModel
+{
+	[TestFixture]
+	public class MsmqTransportSecurityTest
+	{
+		[Test]
+		public void DefaultValues ()
+		{
+			MsmqTransportSecurity security = new MsmqTransportSecurity ();
+
+			Assert.AreEqual (MsmqAuthenticationMode.WindowsDomain, security.MsmqAuthenticationMode, "#A1");
+			Assert.AreEqual (MsmqEncryptionAlgorithm.RC4Stream, security.MsmqEncryptionAlgorithm, "#A2");
+			Assert.AreEqual (ProtectionLevel.Sign, security.MsmqProtectionLevel, "#A3");
+			Assert.AreEqual (MsmqSecureHashAlgorithm.Sha1, security.MsmqSecureHashAlgorithm, "#A4");
+		}
+	}
+}
+
diff --git a/mcs/class/System.ServiceModel/Test/System.ServiceModel/NetTcpBindingTest.cs b/mcs/class/System.ServiceModel/Test/System.ServiceModel/NetTcpBindingTest.cs
index 1c051a1..72837c7 100644
--- a/mcs/class/System.ServiceModel/Test/System.ServiceModel/NetTcpBindingTest.cs
+++ b/mcs/class/System.ServiceModel/Test/System.ServiceModel/NetTcpBindingTest.cs
@@ -56,6 +56,110 @@ namespace MonoTests.System.ServiceModel
 			Assert.IsFalse (n.TransactionFlow, "#4");
 			var tx = n.CreateBindingElements ().Find<TransactionFlowBindingElement> ();
 			Assert.IsNotNull (tx, "#tx1");
+
+			Assert.AreEqual (SecurityMode.Transport, n.Security.Mode, "#sec1");
+			Assert.AreEqual (ProtectionLevel.EncryptAndSign, n.Security.Transport.ProtectionLevel, "#sec2");
+			Assert.AreEqual (TcpClientCredentialType.Windows/*huh*/, n.Security.Transport.ClientCredentialType, "#sec3");
+
+			var bc = n.CreateBindingElements ();
+			Assert.AreEqual (4, bc.Count, "#bc1");
+			Assert.AreEqual (typeof (TransactionFlowBindingElement), bc [0].GetType (), "#bc2");
+			Assert.AreEqual (typeof (BinaryMessageEncodingBindingElement), bc [1].GetType (), "#bc3");
+			Assert.AreEqual (typeof (WindowsStreamSecurityBindingElement), bc [2].GetType (), "#bc4");
+			Assert.AreEqual (typeof (TcpTransportBindingElement), bc [3].GetType (), "#bc5");
+			
+			Assert.IsFalse (n.CanBuildChannelFactory<IRequestChannel> (), "#cbf1");
+			Assert.IsFalse (n.CanBuildChannelFactory<IOutputChannel> (), "#cbf2");
+			Assert.IsFalse (n.CanBuildChannelFactory<IDuplexChannel> (), "#cbf3");
+			Assert.IsTrue (n.CanBuildChannelFactory<IDuplexSessionChannel> (), "#cbf4");
+		}
+
+		[Test]
+		public void MessageSecurityAndBindings ()
+		{
+			var n = new NetTcpBinding ();
+			n.Security.Mode = SecurityMode.Message;
+			
+			Assert.AreEqual (SecurityAlgorithmSuite.Default, n.Security.Message.AlgorithmSuite, "#sec1");
+			Assert.AreEqual (MessageCredentialType.Windows/*huh*/, n.Security.Message.ClientCredentialType, "#sec2");
+
+			Assert.AreEqual (TransferMode.Buffered, n.TransferMode, "#sec3");
+
+			var bc = n.CreateBindingElements ();
+			Assert.AreEqual (4, bc.Count, "#bc1");
+			Assert.AreEqual (typeof (TransactionFlowBindingElement), bc [0].GetType (), "#bc2");
+			Assert.AreEqual (typeof (SymmetricSecurityBindingElement), bc [1].GetType (), "#bc3");
+			Assert.AreEqual (typeof (BinaryMessageEncodingBindingElement), bc [2].GetType (), "#bc4");
+			Assert.AreEqual (typeof (TcpTransportBindingElement), bc [3].GetType (), "#bc5");
+
+			Assert.IsFalse (n.CanBuildChannelFactory<IRequestChannel> (), "#cbf1");
+			Assert.IsFalse (n.CanBuildChannelFactory<IOutputChannel> (), "#cbf2");
+			Assert.IsFalse (n.CanBuildChannelFactory<IDuplexChannel> (), "#cbf3");
+			Assert.IsTrue (n.CanBuildChannelFactory<IDuplexSessionChannel> (), "#cbf4");
+		}
+
+		[Test]
+		public void MessageSecurityAndBindings2 ()
+		{
+			var n = new NetTcpBinding () { TransferMode = TransferMode.Streamed };
+			n.Security.Mode = SecurityMode.Message;
+			
+			Assert.AreEqual (SecurityAlgorithmSuite.Default, n.Security.Message.AlgorithmSuite, "#sec1");
+			Assert.AreEqual (MessageCredentialType.Windows/*huh*/, n.Security.Message.ClientCredentialType, "#sec2");
+
+			var bc = n.CreateBindingElements ();
+			Assert.AreEqual (4, bc.Count, "#bc1");
+			Assert.AreEqual (typeof (TransactionFlowBindingElement), bc [0].GetType (), "#bc2");
+			Assert.AreEqual (typeof (SymmetricSecurityBindingElement), bc [1].GetType (), "#bc3");
+			Assert.AreEqual (typeof (BinaryMessageEncodingBindingElement), bc [2].GetType (), "#bc4");
+			Assert.AreEqual (typeof (TcpTransportBindingElement), bc [3].GetType (), "#bc5");
+
+			Assert.IsFalse (n.CanBuildChannelFactory<IRequestChannel> (), "#cbf1");
+			Assert.IsFalse (n.CanBuildChannelFactory<IOutputChannel> (), "#cbf2");
+			Assert.IsFalse (n.CanBuildChannelFactory<IDuplexChannel> (), "#cbf3");
+			Assert.IsFalse (n.CanBuildChannelFactory<IDuplexSessionChannel> (), "#cbf4");
+			Assert.IsTrue (n.CanBuildChannelFactory<IRequestSessionChannel> (), "#cbf5");
+		}
+
+		[Test]
+		public void MessageSecurityAndBindings3 ()
+		{
+			var n = new NetTcpBinding () { TransferMode = TransferMode.Streamed };
+			n.Security.Mode = SecurityMode.Message;
+			n.Security.Message.ClientCredentialType = MessageCredentialType.Certificate;
+			
+			var bc = n.CreateBindingElements ();
+			Assert.AreEqual (4, bc.Count, "#bc1");
+			Assert.AreEqual (typeof (TransactionFlowBindingElement), bc [0].GetType (), "#bc2");
+			Assert.AreEqual (typeof (SymmetricSecurityBindingElement), bc [1].GetType (), "#bc3");
+			Assert.AreEqual (typeof (BinaryMessageEncodingBindingElement), bc [2].GetType (), "#bc4");
+			Assert.AreEqual (typeof (TcpTransportBindingElement), bc [3].GetType (), "#bc5");
+
+			Assert.IsFalse (n.CanBuildChannelFactory<IRequestChannel> (), "#cbf1");
+			Assert.IsFalse (n.CanBuildChannelFactory<IOutputChannel> (), "#cbf2");
+			Assert.IsFalse (n.CanBuildChannelFactory<IDuplexChannel> (), "#cbf3");
+			Assert.IsFalse (n.CanBuildChannelFactory<IDuplexSessionChannel> (), "#cbf4");
+			Assert.IsTrue (n.CanBuildChannelFactory<IRequestSessionChannel> (), "#cbf5");
+		}
+
+		[Test]
+		public void MessageSecurityAndBindings4 ()
+		{
+			var n = new NetTcpBinding ();
+			n.Security.Mode = SecurityMode.Message;
+			n.Security.Message.ClientCredentialType = MessageCredentialType.Certificate;
+
+			var bc = n.CreateBindingElements ();
+			Assert.AreEqual (4, bc.Count, "#bc1");
+			Assert.AreEqual (typeof (TransactionFlowBindingElement), bc [0].GetType (), "#bc2");
+			Assert.AreEqual (typeof (SymmetricSecurityBindingElement), bc [1].GetType (), "#bc3");
+			Assert.AreEqual (typeof (BinaryMessageEncodingBindingElement), bc [2].GetType (), "#bc4");
+			Assert.AreEqual (typeof (TcpTransportBindingElement), bc [3].GetType (), "#bc5");
+
+			Assert.IsFalse (n.CanBuildChannelFactory<IRequestChannel> (), "#cbf1");
+			Assert.IsFalse (n.CanBuildChannelFactory<IOutputChannel> (), "#cbf2");
+			Assert.IsFalse (n.CanBuildChannelFactory<IDuplexChannel> (), "#cbf3");
+			Assert.IsTrue (n.CanBuildChannelFactory<IDuplexSessionChannel> (), "#cbf4");
 		}
 
 		[Test]
diff --git a/mcs/class/System.ServiceModel/Test/System.ServiceModel/ServiceHostBaseTest.cs b/mcs/class/System.ServiceModel/Test/System.ServiceModel/ServiceHostBaseTest.cs
index 373411c..ac8ec62 100644
--- a/mcs/class/System.ServiceModel/Test/System.ServiceModel/ServiceHostBaseTest.cs
+++ b/mcs/class/System.ServiceModel/Test/System.ServiceModel/ServiceHostBaseTest.cs
@@ -373,6 +373,34 @@ namespace MonoTests.System.ServiceModel
 		}
 
 		[Test]
+		[ExpectedException (typeof (ArgumentException))]
+		public void AddServiceEndpoint_Directly_NullAddress ()
+		{
+			var host = new ServiceHost (typeof (DummyService));
+			var binding = new BasicHttpBinding ();
+			var contract = ContractDescription.GetContract (typeof (IDummyService));
+			host.AddServiceEndpoint (new ServiceEndpoint (contract, binding, null));
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentException))]
+		public void AddServiceEndpoint_Directly_NullBinding ()
+		{
+			var host = new ServiceHost (typeof (DummyService));
+			var address = new EndpointAddress ("http://localhost:8080");
+			var contract = ContractDescription.GetContract (typeof (IDummyService));
+			host.AddServiceEndpoint (new ServiceEndpoint (contract, null, address));
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentException))]
+		public void AddServiceMetadataEndpoint ()
+		{
+			var host = new ServiceHost (typeof (DummyService));
+			host.AddServiceEndpoint (new ServiceMetadataEndpoint ());
+		}
+
+		[Test]
 		[ExpectedException (typeof (InvalidOperationException))]
 		public void AddServiceEndpoint_Directly_ContractMismatch ()
 		{
diff --git a/mcs/class/System.ServiceModel/monotouch_System.ServiceModel.dll.sources b/mcs/class/System.ServiceModel/mobile_System.ServiceModel.dll.sources
similarity index 100%
copy from mcs/class/System.ServiceModel/monotouch_System.ServiceModel.dll.sources
copy to mcs/class/System.ServiceModel/mobile_System.ServiceModel.dll.sources
diff --git a/mcs/class/System.ServiceModel/monodroid_System.ServiceModel.dll.sources b/mcs/class/System.ServiceModel/monodroid_System.ServiceModel.dll.sources
new file mode 100644
index 0000000..22ece5c
--- /dev/null
+++ b/mcs/class/System.ServiceModel/monodroid_System.ServiceModel.dll.sources
@@ -0,0 +1 @@
+#include mobile_System.ServiceModel.dll.sources
diff --git a/mcs/class/System.ServiceModel/monotouch_System.ServiceModel.dll.sources b/mcs/class/System.ServiceModel/monotouch_System.ServiceModel.dll.sources
index fbaa524..22ece5c 100644
--- a/mcs/class/System.ServiceModel/monotouch_System.ServiceModel.dll.sources
+++ b/mcs/class/System.ServiceModel/monotouch_System.ServiceModel.dll.sources
@@ -1,3 +1 @@
-../../build/common/Consts.cs
-../../build/common/MonoTODOAttribute.cs
-#include moonlight_raw_System.ServiceModel.dll.sources
+#include mobile_System.ServiceModel.dll.sources
diff --git a/mcs/class/System.Transactions/ChangeLog b/mcs/class/System.Transactions/ChangeLog
index 04905a4..d435041 100644
--- a/mcs/class/System.Transactions/ChangeLog
+++ b/mcs/class/System.Transactions/ChangeLog
@@ -1,3 +1,24 @@
+2010-12-29  Marek Safar  <marek.safar at gmail.com>
+
+	Remove no longer used bootstrap profiles
+
+2010-10-05  Martin Baulig  <martin at novell.com>
+
+	Fix again.
+
+2010-10-05  Martin Baulig  <martin at novell.com>
+
+	Disable System.Configuration on the mobile profiles.
+
+2010-10-04  Pablo Ruiz Garcia  <pablo.ruiz at gmail.com>
+
+	[API] Implemented System.Transactions (tx preparation) timeout
+	handling
+
+2010-09-08  Jb Evain  <jbevain at gmail.com>
+
+	Enable the System.Transactions build for monodroid
+
 2009-10-14  Jonathan Pryor  <jpryor at novell.com>
 
 	* Makefile (VALID_PROFILE): Add monotouch.
diff --git a/mcs/class/System.Transactions/ChangeLog b/mcs/class/System.Transactions/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Transactions/ChangeLog
copy to mcs/class/System.Transactions/ChangeLog.old
diff --git a/mcs/class/System.Transactions/Makefile b/mcs/class/System.Transactions/Makefile
index c91ced4..95696e8 100644
--- a/mcs/class/System.Transactions/Makefile
+++ b/mcs/class/System.Transactions/Makefile
@@ -2,13 +2,19 @@ thisdir = class/System.Transactions
 SUBDIRS = 
 include ../../build/rules.make
 
+MOBILE_PROFILE := $(filter monotouch monodroid, $(PROFILE))
+
 LIBRARY = System.Transactions.dll
-LIB_MCS_FLAGS = /r:$(corlib) /r:System.dll
+ifdef MOBILE_PROFILE
+LIB_MCS_FLAGS = /r:$(corlib) /r:System.dll /define:MOBILE
+else
+LIB_MCS_FLAGS = /r:$(corlib) /r:System.dll /r:System.Configuration.dll
+endif
 
 TEST_MCS_FLAGS = /nowarn:1595 $(LIB_MCS_FLAGS)
 
 # This is a .NET 2.0+ only assembly
-VALID_PROFILE := $(filter net_2_0_bootstrap net_2_0 net_4_0 monotouch, $(PROFILE))
+VALID_PROFILE := $(filter net_2_0 net_4_0 monotouch monodroid, $(PROFILE))
 ifndef VALID_PROFILE
 LIBRARY_NAME = dummy-System.Transactions.dll
 NO_INSTALL = yes
diff --git a/mcs/class/System.Transactions/System.Transactions.dll.sources b/mcs/class/System.Transactions/System.Transactions.dll.sources
index 16c2228..36d981e 100644
--- a/mcs/class/System.Transactions/System.Transactions.dll.sources
+++ b/mcs/class/System.Transactions/System.Transactions.dll.sources
@@ -33,3 +33,6 @@ System.Transactions/TransactionPromotionException.cs
 System.Transactions/TransactionScope.cs
 System.Transactions/TransactionScopeOption.cs
 System.Transactions/TransactionStatus.cs
+System.Transactions/Configuration/DefaultSettingsSection.cs
+System.Transactions/Configuration/MachineSettingsSection.cs
+System.Transactions/Configuration/TransactionsSectionGroup.cs
diff --git a/mcs/class/System.Transactions/System.Transactions/ChangeLog b/mcs/class/System.Transactions/System.Transactions/ChangeLog
index c1744ae..0973e4b 100644
--- a/mcs/class/System.Transactions/System.Transactions/ChangeLog
+++ b/mcs/class/System.Transactions/System.Transactions/ChangeLog
@@ -1,3 +1,30 @@
+2010-10-05  Martin Baulig  <martin at novell.com>
+
+	Fix my previous commit.
+
+2010-10-05  Martin Baulig  <martin at novell.com>
+
+	Disable System.Configuration on the mobile profiles.
+
+2010-10-04  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Fix line endings.
+
+2010-10-04  Pablo Ruiz Garcia  <pablo.ruiz at gmail.com>
+
+	Fixed conding style and added license/copyright header to new
+	files
+
+2010-10-04  Pablo Ruiz Garcia  <pablo.ruiz at gmail.com>
+
+	[FIX] Fixes https://bugzilla.novell.com/show_bug.cgi?id=643368
+	(Transaction.TransactionCompleted not firing
+
+2010-10-04  Pablo Ruiz Garcia  <pablo.ruiz at gmail.com>
+
+	[API] Implemented System.Transactions (tx preparation) timeout
+	handling
+
 2010-01-03  Zoltan Varga  <vargaz at gmail.com>
 
 	* TransactionAbortedException.cs: Make the default ctor public. Fixes #567872.
diff --git a/mcs/class/System.Transactions/System.Transactions/ChangeLog b/mcs/class/System.Transactions/System.Transactions/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Transactions/System.Transactions/ChangeLog
copy to mcs/class/System.Transactions/System.Transactions/ChangeLog.old
diff --git a/mcs/class/System.Transactions/System.Transactions/Configuration/DefaultSettingsSection.cs b/mcs/class/System.Transactions/System.Transactions/Configuration/DefaultSettingsSection.cs
new file mode 100644
index 0000000..784df48
--- /dev/null
+++ b/mcs/class/System.Transactions/System.Transactions/Configuration/DefaultSettingsSection.cs
@@ -0,0 +1,40 @@
+//
+// DefaultSettingsSection.cs
+//
+// Author:
+//	Pablo Ruiz <pruiz at netway.org>
+//
+// (C) 2010 Pablo Ruiz.
+//
+
+#if NET_2_0 && !MOBILE
+
+using System;
+using System.Collections.Generic;
+using System.Configuration;
+using System.Text;
+
+namespace System.Transactions.Configuration
+{
+	public class DefaultSettingsSection : ConfigurationSection
+	{
+		// http://msdn.microsoft.com/en-us/library/system.transactions.configuration.defaultsettingssection.timeout.aspx
+		[ConfigurationProperty ("timeout", DefaultValue = "00:01:00")]
+		[TimeSpanValidator (MinValueString = "00:00:00", MaxValueString = "10675199.02:48:05.4775807")]
+		public TimeSpan Timeout {
+			get { return (TimeSpan)base["timeout"]; }
+			set {  
+				// FIXME: Validate timespan value
+				base["timeout"] = value;
+			} 
+		}
+
+		// http://msdn.microsoft.com/en-us/library/system.transactions.configuration.defaultsettingssection.distributedtransactionmanagername(v=VS.90).aspx
+		[ConfigurationProperty ("distributedTransactionManagerName", DefaultValue = "")]
+		public string DistributedTransactionManagerName {
+			get { return base["distributedTransactionManagerName"] as string; }
+			set { base["distributedTransactionManagerName"] = value; }
+		}
+	}
+}
+#endif
diff --git a/mcs/class/System.Transactions/System.Transactions/Configuration/MachineSettingsSection.cs b/mcs/class/System.Transactions/System.Transactions/Configuration/MachineSettingsSection.cs
new file mode 100644
index 0000000..2091b8c
--- /dev/null
+++ b/mcs/class/System.Transactions/System.Transactions/Configuration/MachineSettingsSection.cs
@@ -0,0 +1,33 @@
+//
+// MachineSettingsSection.cs
+//
+// Author:
+//	Pablo Ruiz <pruiz at netway.org>
+//
+// (C) 2010 Pablo Ruiz.
+//
+
+#if NET_2_0 && !MOBILE
+
+using System;
+using System.Collections.Generic;
+using System.Configuration;
+using System.Text;
+
+namespace System.Transactions.Configuration
+{
+	public class MachineSettingsSection : ConfigurationSection
+	{
+		// http://msdn.microsoft.com/en-us/library/system.transactions.configuration.machinesettingssection.maxtimeout.aspx
+		[ConfigurationProperty("maxTimeout", DefaultValue = "00:10:00")]
+		[TimeSpanValidator(MinValueString = "00:00:00", MaxValueString = "10675199.02:48:05.4775807")]
+		public TimeSpan MaxTimeout {
+			get { return (TimeSpan)base["maxTimeout"]; }
+			set { 
+				// FIXME: Validate timespan value..
+				base["maxTimeout"] = value;
+			}
+		}
+	}
+}
+#endif
diff --git a/mcs/class/System.Transactions/System.Transactions/Configuration/TransactionsSectionGroup.cs b/mcs/class/System.Transactions/System.Transactions/Configuration/TransactionsSectionGroup.cs
new file mode 100644
index 0000000..3a4e7aa
--- /dev/null
+++ b/mcs/class/System.Transactions/System.Transactions/Configuration/TransactionsSectionGroup.cs
@@ -0,0 +1,43 @@
+//
+// TransactionSectionGroup.cs
+//
+// Author:
+//	Pablo Ruiz <pruiz at netway.org>
+//
+// (C) 2010 Pablo Ruiz.
+//
+
+#if NET_2_0 && !MOBILE
+
+using System;
+using System.Collections.Generic;
+using System.Configuration;
+using System.Text;
+
+namespace System.Transactions.Configuration
+{
+	// http://msdn.microsoft.com/en-us/library/system.transactions.configuration.transactionssectiongroup.aspx
+	public class TransactionsSectionGroup : ConfigurationSectionGroup
+	{
+		public static TransactionsSectionGroup GetSectionGroup(System.Configuration.Configuration config)
+		{
+			if (config == null)
+				throw new ArgumentNullException("config");
+
+			return config.GetSectionGroup("system.transactions") as TransactionsSectionGroup;
+		}
+
+		[ConfigurationProperty("defaultSettings")]
+		public DefaultSettingsSection DefaultSettings
+		{
+			get { return (DefaultSettingsSection)base.Sections["defaultSettings"]; }
+		}
+
+		[ConfigurationProperty("machineSettings")]
+		public MachineSettingsSection MachineSettings
+		{
+			get { return (MachineSettingsSection)base.Sections["machineSettings"]; }
+		}
+	}
+}
+#endif
diff --git a/mcs/class/System.Transactions/System.Transactions/PreparingEnlistment.cs b/mcs/class/System.Transactions/System.Transactions/PreparingEnlistment.cs
index 407a193..843d298 100644
--- a/mcs/class/System.Transactions/System.Transactions/PreparingEnlistment.cs
+++ b/mcs/class/System.Transactions/System.Transactions/PreparingEnlistment.cs
@@ -20,13 +20,13 @@ namespace System.Transactions
 		bool prepared = false;
 		Transaction tx;
 		IEnlistmentNotification enlisted;
-		//WaitHandle waitHandle;
+		WaitHandle waitHandle;
 
 		internal PreparingEnlistment (Transaction tx, IEnlistmentNotification enlisted)
 		{
 			this.tx = tx;
 			this.enlisted = enlisted;
-			//waitHandle = new ManualResetEvent (false);
+			waitHandle = new ManualResetEvent (false);
 		}
 
 		public void ForceRollback ()
@@ -38,16 +38,16 @@ namespace System.Transactions
 		public void ForceRollback (Exception ex)
 		{
 			tx.Rollback (ex, enlisted);
-			/* See test RMFail2 
-			((ManualResetEvent) waitHandle).Set (); */
+			/* See test RMFail2 */
+			((ManualResetEvent) waitHandle).Set ();
 		}
 
 		[MonoTODO]
 		public void Prepared ()
 		{
 			prepared = true;
-			/* See test RMFail2 
-			((ManualResetEvent) waitHandle).Set ();*/
+			/* See test RMFail2 */
+			((ManualResetEvent) waitHandle).Set ();
 		}
 
 		[MonoTODO]
@@ -60,9 +60,14 @@ namespace System.Transactions
 			get { return prepared; }
 		}
 
-		/*internal WaitHandle WaitHandle {
+		internal WaitHandle WaitHandle {
 			get { return waitHandle; }
-		}*/
+		}
+
+		internal IEnlistmentNotification EnlistmentNotification
+		{
+			get { return enlisted; }
+		}
 	}
 }
 
diff --git a/mcs/class/System.Transactions/System.Transactions/Transaction.cs b/mcs/class/System.Transactions/System.Transactions/Transaction.cs
index dc132fb..9e4da20 100644
--- a/mcs/class/System.Transactions/System.Transactions/Transaction.cs
+++ b/mcs/class/System.Transactions/System.Transactions/Transaction.cs
@@ -234,7 +234,10 @@ namespace System.Transactions
 		internal void Rollback (Exception ex, IEnlistmentNotification enlisted)
 		{
 			if (aborted)
+			{
+				FireCompleted ();
 				return;
+			}
 
 			/* See test ExplicitTransaction7 */
 			if (info.Status == TransactionStatus.Committed)
@@ -250,6 +253,8 @@ namespace System.Transactions
 				durables [0].Rollback (e);
 
 			Aborted = true;
+
+			FireCompleted ();
 		}
 
 		bool Aborted {
@@ -289,7 +294,17 @@ namespace System.Transactions
 
 			this.committing = true;
 
-			DoCommit ();		
+			try {
+				DoCommit ();	
+			}
+			catch (TransactionException)
+			{
+				throw;
+			}
+			catch (Exception ex)
+			{
+				throw new TransactionAbortedException("Transaction failed", ex);
+			}
 		}
 		
 		private void DoCommit ()
@@ -301,26 +316,28 @@ namespace System.Transactions
 				CheckAborted ();
 			}
 
-			if (volatiles.Count == 1 && durables.Count == 0) {
+			if (volatiles.Count == 1 && durables.Count == 0)
+			{
 				/* Special case */
-				ISinglePhaseNotification single = volatiles [0] as ISinglePhaseNotification;
-				if (single != null) {
-					DoSingleCommit (single);
-					Complete ();
+				ISinglePhaseNotification single = volatiles[0] as ISinglePhaseNotification;
+				if (single != null)
+				{
+					DoSingleCommit(single);
+					Complete();
 					return;
 				}
-			} 
+			}
 
 			if (volatiles.Count > 0)
-				DoPreparePhase ();
+				DoPreparePhase();
 
 			if (durables.Count > 0)
-				DoSingleCommit (durables [0]);
+				DoSingleCommit(durables[0]);
 
 			if (volatiles.Count > 0)
-				DoCommitPhase ();
+				DoCommitPhase();
 
-			Complete ();
+			Complete();
 		}
 
 		private void Complete ()
@@ -330,6 +347,8 @@ namespace System.Transactions
 
 			if (!aborted)
 				info.Status = TransactionStatus.Committed;
+
+			FireCompleted ();
 		}
 
 		internal void InitScope (TransactionScope scope)
@@ -344,26 +363,38 @@ namespace System.Transactions
 			Scope = scope;	
 		}
 
-		void DoPreparePhase ()
+		static void PrepareCallbackWrapper(object state)
 		{
-			PreparingEnlistment pe;
-			foreach (IEnlistmentNotification enlisted in volatiles) {
-				pe = new PreparingEnlistment (this, enlisted);
-
-				enlisted.Prepare (pe);
+			PreparingEnlistment enlist = state as PreparingEnlistment;
+			enlist.EnlistmentNotification.Prepare(enlist);
+		}
 
-				/* FIXME: Where should this timeout value come from? 
-				   current scope?
-				   Wait after all Prepare()'s are sent
-				pe.WaitHandle.WaitOne (new TimeSpan (0,0,5), true); */
+		void DoPreparePhase ()
+		{
+			// Call prepare on all volatile managers.
+			foreach (IEnlistmentNotification enlist in volatiles)
+			{
+				PreparingEnlistment pe = new PreparingEnlistment (this, enlist);
+				ThreadPool.QueueUserWorkItem (new WaitCallback(PrepareCallbackWrapper), pe);
+
+				/* Wait (with timeout) for manager to prepare */
+				TimeSpan timeout = Scope != null ? Scope.Timeout : TransactionManager.DefaultTimeout;
+
+				// FIXME: Should we managers in parallel or on-by-one?
+				if (!pe.WaitHandle.WaitOne(timeout, true))
+				{
+					this.Aborted = true;
+					throw new TimeoutException("Transaction timedout");
+				}
 
-				if (!pe.IsPrepared) {
+				if (!pe.IsPrepared)
+				{
 					/* FIXME: if not prepared & !aborted as yet, then 
-					   this is inDoubt ? . For now, setting aborted = true */
+						this is inDoubt ? . For now, setting aborted = true */
 					Aborted = true;
 					break;
 				}
-			}
+			}			
 			
 			/* Either InDoubt(tmp) or Prepare failed and
 			   Tx has rolledback */
@@ -395,6 +426,12 @@ namespace System.Transactions
 				throw new TransactionAbortedException ("Transaction has aborted", innerException);
 		}
 
+		void FireCompleted ()
+		{
+			if (TransactionCompleted != null)
+				TransactionCompleted (this, new TransactionEventArgs(this));
+		}
+
 		static void EnsureIncompleteCurrentScope ()
 		{
 			if (CurrentInternal == null)
diff --git a/mcs/class/System.Transactions/System.Transactions/TransactionEventArgs.cs b/mcs/class/System.Transactions/System.Transactions/TransactionEventArgs.cs
index ebcca98..d868407 100644
--- a/mcs/class/System.Transactions/System.Transactions/TransactionEventArgs.cs
+++ b/mcs/class/System.Transactions/System.Transactions/TransactionEventArgs.cs
@@ -13,8 +13,20 @@ namespace System.Transactions
 {
 	public class TransactionEventArgs : EventArgs
 	{
+		private Transaction transaction;
+
+		public TransactionEventArgs()
+		{
+		}
+
+		internal TransactionEventArgs(Transaction transaction)
+			: this()
+		{
+			this.transaction = transaction;
+		}
+
 		public Transaction Transaction {
-			get { throw new NotImplementedException (); }
+			get { return transaction; }
 		}
 	}
 }
diff --git a/mcs/class/System.Transactions/System.Transactions/TransactionManager.cs b/mcs/class/System.Transactions/System.Transactions/TransactionManager.cs
index 85d1216..7bda79e 100644
--- a/mcs/class/System.Transactions/System.Transactions/TransactionManager.cs
+++ b/mcs/class/System.Transactions/System.Transactions/TransactionManager.cs
@@ -9,18 +9,45 @@
 // (C)2006 Novell Inc,
 //
 #if NET_2_0
+using System.Configuration;
+#if !MOBILE
+using System.Transactions.Configuration;
+#endif
 
 namespace System.Transactions
 {
 	public static class TransactionManager
 	{
-		/* 60 secs */
-		static TimeSpan defaultTimeout = new TimeSpan (0, 1, 0);
-		/* 10 mins */
-		static TimeSpan maxTimeout = new TimeSpan (0, 10, 0);
+		static TransactionManager ()
+		{
+#if !MOBILE
+			defaultSettings = ConfigurationManager.GetSection ("system.transactions/defaultSettings") as DefaultSettingsSection;
+			machineSettings = ConfigurationManager.GetSection ("system.transactions/machineSettings") as MachineSettingsSection;
+#endif
+		}
+
+#if !MOBILE
+		static DefaultSettingsSection defaultSettings;
+		static MachineSettingsSection machineSettings;
+#endif
+
+		static TimeSpan defaultTimeout = new TimeSpan (0, 1, 0); /* 60 secs */
+		static TimeSpan maxTimeout = new TimeSpan (0, 10, 0); /* 10 mins */
 
 		public static TimeSpan DefaultTimeout {
-			get { return defaultTimeout; }
+			get {
+				// Obtain timeout from configuration setting..
+				//		- http://msdn.microsoft.com/en-us/library/ms973865.aspx
+				//		- http://sankarsan.wordpress.com/2009/02/01/transaction-timeout-in-systemtransactions/
+				//	1. sys.txs/defaultSettings[@timeout]
+				//	2. defaultTimeout
+#if !MOBILE
+				if (defaultSettings != null)
+					return defaultSettings.Timeout;
+#endif
+
+				return defaultTimeout; 
+			}
 		}
 
 		[MonoTODO ("Not implemented")]
@@ -30,7 +57,14 @@ namespace System.Transactions
 		}
 
 		public static TimeSpan MaximumTimeout {
-			get { return maxTimeout; }
+			get {
+#if !MOBILE
+				if (machineSettings != null)
+					return machineSettings.MaxTimeout;
+#endif
+
+				return maxTimeout; 
+			}
 		}
 
 		[MonoTODO ("Not implemented")]
diff --git a/mcs/class/System.Transactions/System.Transactions/TransactionScope.cs b/mcs/class/System.Transactions/System.Transactions/TransactionScope.cs
index ca5b582..9c9648c 100644
--- a/mcs/class/System.Transactions/System.Transactions/TransactionScope.cs
+++ b/mcs/class/System.Transactions/System.Transactions/TransactionScope.cs
@@ -23,6 +23,7 @@ namespace System.Transactions
 		Transaction transaction;
 		Transaction oldTransaction;
 		TransactionScope parentScope;
+		TimeSpan timeout;
 
 		/* Num of non-disposed nested scopes */
 		int nested;
@@ -91,6 +92,7 @@ namespace System.Transactions
 			completed = false;
 			isRoot = false;
 			nested = 0;
+			this.timeout = timeout;
 
 			oldTransaction = Transaction.CurrentInternal;
 
@@ -141,6 +143,11 @@ namespace System.Transactions
 			get { return completed; }
 		}
 
+		internal TimeSpan Timeout
+		{
+			get { return timeout; }
+		}
+
 		public void Dispose ()
 		{
 			if (disposed)
diff --git a/mcs/class/System.Transactions/Test/ChangeLog b/mcs/class/System.Transactions/Test/ChangeLog
index 9dee0c1..a45a7de 100644
--- a/mcs/class/System.Transactions/Test/ChangeLog
+++ b/mcs/class/System.Transactions/Test/ChangeLog
@@ -1,3 +1,22 @@
+2010-10-04  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Fix line endings.
+
+2010-10-04  Pablo Ruiz Garcia  <pablo.ruiz at gmail.com>
+
+	Fixed conding style and added license/copyright header to new
+	files
+
+2010-10-04  Pablo Ruiz Garcia  <pablo.ruiz at gmail.com>
+
+	[FIX] Fixes https://bugzilla.novell.com/show_bug.cgi?id=643368
+	(Transaction.TransactionCompleted not firing
+
+2010-10-04  Pablo Ruiz Garcia  <pablo.ruiz at gmail.com>
+
+	[API] Implemented System.Transactions (tx preparation) timeout
+	handling
+
 2009-01-07  Zoltan Varga  <vargaz at gmail.com>
 
 	* AsyncTest.cs: Disable these tests, they fail randomly (bug #463999).
diff --git a/mcs/class/System.Transactions/Test/ChangeLog b/mcs/class/System.Transactions/Test/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Transactions/Test/ChangeLog
copy to mcs/class/System.Transactions/Test/ChangeLog.old
diff --git a/mcs/class/System.Transactions/Test/EnlistTest.cs b/mcs/class/System.Transactions/Test/EnlistTest.cs
index 1342f2f..b06d0b8 100644
--- a/mcs/class/System.Transactions/Test/EnlistTest.cs
+++ b/mcs/class/System.Transactions/Test/EnlistTest.cs
@@ -258,6 +258,7 @@ namespace MonoTests.System.Transactions {
 		[Ignore ( "Correct this test, it should throw TimeOutException or something" )]
 		public void Vol2_Dur1_Fail2 ()
 		{
+			TransactionAbortedException exception = null;
 			IntResourceManager [] irm = new IntResourceManager [4];
 			irm [0] = new IntResourceManager (1);
 			irm [1] = new IntResourceManager (3);
@@ -282,13 +283,67 @@ namespace MonoTests.System.Transactions {
 					scope.Complete ();
 				}
 			}
-			catch (TransactionAbortedException) {
+			catch (TransactionAbortedException ex) {
 				irm [0].CheckSPC ( "irm [0]" );
 
 				/* Volatile RMs get 2PC Prepare, and then get rolled back */
 				for (int i = 1; i < 4; i++)
 					irm [i].Check ( 0, 1, 0, 1, 0, "irm [" + i + "]" );
+
+				exception = ex;
+			}
+
+			Assert.IsNotNull(exception, "Expected TransactionAbortedException not thrown!");
+			Assert.IsNotNull(exception.InnerException, "TransactionAbortedException has no inner exception!");
+			Assert.AreEqual(typeof(TimeoutException), exception.InnerException.GetType());
+		}
+
+		/* Same as Vol2_Dur1_Fail2, but with a volatile manager timming out */
+		[Test]
+		[Ignore ( "Correct this test, it should throw TimeOutException or something" )]
+		public void Vol2_Dur1_Fail2b()
+		{
+			TransactionAbortedException exception = null;
+			IntResourceManager[] irm = new IntResourceManager[4];
+			irm[0] = new IntResourceManager(1);
+			irm[1] = new IntResourceManager(3);
+			irm[2] = new IntResourceManager(5);
+			irm[3] = new IntResourceManager(7);
+
+			irm[0].IgnoreSPC = true;
+			irm[1].Volatile = false;
+
+			for (int i = 0; i < 4; i++)
+				irm[i].UseSingle = true;
+
+			/* Durable RM irm[2] does on SPC, so
+			 * all volatile RMs get Rollback */
+			try
+			{
+				using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, new TimeSpan(0, 0, 5)))
+				{
+					irm[0].Value = 2;
+					irm[1].Value = 6;
+					irm[2].Value = 10;
+					irm[3].Value = 14;
+
+					scope.Complete();
+				}
+			}
+			catch (TransactionAbortedException ex)
+			{
+				irm[0].CheckSPC("irm [0]");
+
+				/* Volatile RMs get 2PC Prepare, and then get rolled back */
+				for (int i = 1; i < 4; i++)
+					irm[i].Check(0, 1, 0, 1, 0, "irm [" + i + "]");
+
+				exception = ex;
 			}
+
+			Assert.IsNotNull(exception, "Expected TransactionAbortedException not thrown!");
+			Assert.IsNotNull(exception.InnerException, "TransactionAbortedException has no inner exception!");
+			Assert.AreEqual(typeof(TimeoutException), exception.InnerException.GetType());
 		}
 
 		/* >1vol + 1 durable
@@ -501,6 +556,33 @@ namespace MonoTests.System.Transactions {
 			Assert.AreEqual (5, irm.Value);
 		}
 
+		[Test]
+		public void TransactionCompleted_Committed ()
+		{
+			bool called = false;
+			using (var ts = new TransactionScope ())
+			{
+				var tr = Transaction.Current;
+				tr.TransactionCompleted += (s, e) => called = true;
+				ts.Complete ();
+			}
+
+			Assert.IsTrue (called, "TransactionCompleted event handler not called!");
+		}
+
+		[Test]
+		public void TransactionCompleted_Rollback ()
+		{
+			bool called = false;
+			using (var ts = new TransactionScope ())
+			{
+				var tr = Transaction.Current;
+				tr.TransactionCompleted += (s, e) => called = true;
+				// Not calling ts.Complete() on purpose..
+			}
+
+			Assert.IsTrue (called, "TransactionCompleted event handler not called!");
+		}
 		#endregion
 
 	}
diff --git a/mcs/class/System.Transactions/Test/TransactionScopeTest.cs b/mcs/class/System.Transactions/Test/TransactionScopeTest.cs
index 3e29a63..25d812e 100644
--- a/mcs/class/System.Transactions/Test/TransactionScopeTest.cs
+++ b/mcs/class/System.Transactions/Test/TransactionScopeTest.cs
@@ -454,8 +454,6 @@ namespace MonoTests.System.Transactions
 		}
 
 		[Test]
-		[Category("NotWorking")]
-		[Ignore("NotWorking")]
 		public void RMFail2 ()
 		{
 			IntResourceManager irm = new IntResourceManager (1);
diff --git a/mcs/class/System.Web.DynamicData/System.Web.DynamicData/ChangeLog b/mcs/class/System.Web.DynamicData/System.Web.DynamicData/ChangeLog
index 6173687..b8277f0 100644
--- a/mcs/class/System.Web.DynamicData/System.Web.DynamicData/ChangeLog
+++ b/mcs/class/System.Web.DynamicData/System.Web.DynamicData/ChangeLog
@@ -1,3 +1,7 @@
+2011-01-08  Marek Safar  <marek.safar at gmail.com>
+
+	Fixed missing protected internal modifier
+
 2009-10-02  Marek Habersack  <mhabersack at novell.com>
 
 	* DynamicValidator.cs: initial implementation
diff --git a/mcs/class/System.Web.DynamicData/System.Web.DynamicData/ChangeLog b/mcs/class/System.Web.DynamicData/System.Web.DynamicData/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Web.DynamicData/System.Web.DynamicData/ChangeLog
copy to mcs/class/System.Web.DynamicData/System.Web.DynamicData/ChangeLog.old
diff --git a/mcs/class/System.Web.DynamicData/System.Web.DynamicData/DynamicField.cs b/mcs/class/System.Web.DynamicData/System.Web.DynamicData/DynamicField.cs
index f88b02a..cc9e2f8 100644
--- a/mcs/class/System.Web.DynamicData/System.Web.DynamicData/DynamicField.cs
+++ b/mcs/class/System.Web.DynamicData/System.Web.DynamicData/DynamicField.cs
@@ -64,7 +64,9 @@ namespace System.Web.DynamicData
 		}
 
 		public virtual string DataField {
-			get { return ViewState.GetString ("_DataField", String.Empty); }
+			get {
+				return (string) ViewState ["_DataField"] ?? String.Empty;
+			}
 			set {
 				ViewState ["_DataField"] = value;
 				OnFieldChanged ();
@@ -77,7 +79,7 @@ namespace System.Web.DynamicData
 
 		public override string HeaderText {
 			get {
-				string s = ViewState.GetString ("headerText", null);
+				string s = (string) ViewState ["headerText"];
 				if (s != null)
 					return s;
 
@@ -118,7 +120,7 @@ namespace System.Web.DynamicData
 
 		public override string SortExpression {
 			get {
-				string s = ViewState.GetString ("sortExpression", null);
+				string s = (string) ViewState ["sortExpression"];
 				if (s != null)
 					return s;
 
@@ -134,10 +136,7 @@ namespace System.Web.DynamicData
 
 		public virtual string UIHint {
 			get {
-				string s = ViewState.GetString ("uiHint", null);
-				if (s == null)
-					return String.Empty;
-				return s;
+				return (string) ViewState ["uiHint"] ?? String.Empty;
 			}
 			
 			set {
diff --git a/mcs/class/System.Web.Extensions.Design/ChangeLog b/mcs/class/System.Web.Extensions.Design/ChangeLog
index 162b302..62de2df 100644
--- a/mcs/class/System.Web.Extensions.Design/ChangeLog
+++ b/mcs/class/System.Web.Extensions.Design/ChangeLog
@@ -1,3 +1,11 @@
+2010-12-29  Marek Safar  <marek.safar at gmail.com>
+
+	Add few more missing references
+
+2010-12-09  Marek Safar  <marek.safar at gmail.com>
+
+	Add missing dependency
+
 2007-09-11  Marek Habersack  <mhabersack at novell.com>
 
 	* Assembly/AssemblyInfo.cs: added
diff --git a/mcs/class/System.Web.Extensions.Design/ChangeLog b/mcs/class/System.Web.Extensions.Design/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Web.Extensions.Design/ChangeLog
copy to mcs/class/System.Web.Extensions.Design/ChangeLog.old
diff --git a/mcs/class/System.Web.Extensions.Design/Makefile b/mcs/class/System.Web.Extensions.Design/Makefile
index 4c1e392..b0d4288 100644
--- a/mcs/class/System.Web.Extensions.Design/Makefile
+++ b/mcs/class/System.Web.Extensions.Design/Makefile
@@ -6,9 +6,7 @@ LIBRARY = System.Web.Extensions.Design.dll
 
 LIB_MCS_FLAGS = \
 	-define:NET_3_5			\
-	-r:System.dll			\
-	-r:System.Design.dll		\
-	$(OTHER_LIB_MCS_FLAGS)
+	-r:System.dll -r:System.Design.dll -r:System.Drawing.dll -r:System.Windows.Forms.dll
 
 include ../../build/library.make
 
diff --git a/mcs/class/System.Web.Extensions.Design_1.0/ChangeLog b/mcs/class/System.Web.Extensions.Design_1.0/ChangeLog
index 9d66225..1a90f2b 100644
--- a/mcs/class/System.Web.Extensions.Design_1.0/ChangeLog
+++ b/mcs/class/System.Web.Extensions.Design_1.0/ChangeLog
@@ -1,3 +1,11 @@
+2010-12-29  Marek Safar  <marek.safar at gmail.com>
+
+	Another missing System.Windows.Forms reference
+
+2010-12-16  Marek Safar  <marek.safar at gmail.com>
+
+	Switch to single mcs compiler for all managed code build
+
 2008-09-30  Marek Habersack  <mhabersack at novell.com>
 
 	* System.Web.Extensions.Design_1.0.dll.sources: added
diff --git a/mcs/class/System.Web.Extensions.Design_1.0/ChangeLog b/mcs/class/System.Web.Extensions.Design_1.0/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Web.Extensions.Design_1.0/ChangeLog
copy to mcs/class/System.Web.Extensions.Design_1.0/ChangeLog.old
diff --git a/mcs/class/System.Web.Extensions.Design_1.0/Makefile b/mcs/class/System.Web.Extensions.Design_1.0/Makefile
index b428b81..e0bd85a 100644
--- a/mcs/class/System.Web.Extensions.Design_1.0/Makefile
+++ b/mcs/class/System.Web.Extensions.Design_1.0/Makefile
@@ -8,9 +8,7 @@ LIBRARY_COMPAT = yes
 NO_TEST = yes
 
 LIB_MCS_FLAGS = \
-	-r:System.dll			\
-	-r:System.Design.dll		\
-	$(OTHER_LIB_MCS_FLAGS)
+	-r:System.dll -r:System.Design.dll -r:System.Drawing.dll -r:System.Windows.Forms.dll
 
 include ../../build/library.make
 
diff --git a/mcs/class/System.Web.Extensions/Assembly/AssemblyInfo.cs b/mcs/class/System.Web.Extensions/Assembly/AssemblyInfo.cs
index a3d825b..38ff0e1 100644
--- a/mcs/class/System.Web.Extensions/Assembly/AssemblyInfo.cs
+++ b/mcs/class/System.Web.Extensions/Assembly/AssemblyInfo.cs
@@ -64,9 +64,6 @@ using System.Security.Permissions;
 	[assembly: AssemblyDelaySign (true)]
 	[assembly: AssemblyKeyFile ("../winfx.pub")]
 
-#if NET_2_0
-[assembly: InternalsVisibleTo ("System.Web.Extensions_test_net_2_0, PublicKey=0024000004800000940000000602000000240000525341310004000001000100b5fc90e7027f67871e773a8fde8938c81dd402ba65b9201d60593e96c492651e889cc13f1415ebb53fac1131ae0bd333c5ee6021672d9718ea31a8aebd0da0072f25d87dba6fc90ffd598ed4da35e44c398c454307e8e33b8426143daec9f596836f97c8f74750e5975c64e2189f45def46b2a2b1247adc3652bf5c308055da9")]
-#endif
 #endif
 
 [assembly: ComVisible (false)]
diff --git a/mcs/class/System.Web.Extensions/Assembly/ChangeLog b/mcs/class/System.Web.Extensions/Assembly/ChangeLog
index c45621e..9437277 100644
--- a/mcs/class/System.Web.Extensions/Assembly/ChangeLog
+++ b/mcs/class/System.Web.Extensions/Assembly/ChangeLog
@@ -1,3 +1,7 @@
+2011-01-10  Marek Safar  <marek.safar at gmail.com>
+
+	Fixed more protected internal modifiers
+
 2008-11-19  Marek Habersack  <mhabersack at novell.com>
 
 	* AssemblyInfo.cs: made System.Web.Extensions_test_net_2_0 a
diff --git a/mcs/class/System.Web.Extensions/Assembly/ChangeLog b/mcs/class/System.Web.Extensions/Assembly/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Web.Extensions/Assembly/ChangeLog
copy to mcs/class/System.Web.Extensions/Assembly/ChangeLog.old
diff --git a/mcs/class/System.Web.Extensions/ChangeLog b/mcs/class/System.Web.Extensions/ChangeLog
index fbaf276..9294f0b 100644
--- a/mcs/class/System.Web.Extensions/ChangeLog
+++ b/mcs/class/System.Web.Extensions/ChangeLog
@@ -1,3 +1,17 @@
+2011-01-04  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Failing tests fixes.
+
+2011-01-04  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Added code to handle local resources copying in the test
+	suite
+
+2010-12-13  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Implmeneted the
+	System.Web.Configuration.ScriptingRoleServiceSection type
+
 2010-10-12  Sebastien Pouliot  <sebastien at ximian.com>
 
 	Adjust System.Web.Extensions[_1.0].dll.sources wrt
diff --git a/mcs/class/System.Web.Extensions/Makefile b/mcs/class/System.Web.Extensions/Makefile
index 38037ea..35e3fe1 100644
--- a/mcs/class/System.Web.Extensions/Makefile
+++ b/mcs/class/System.Web.Extensions/Makefile
@@ -30,6 +30,8 @@ RESOURCE_FILES_DIST= \
 
 NUNIT_RESOURCE_FILES= \
 	Test/resources/Web.mono.config \
+	Test/resources/profile.config.4.0 \
+	Test/resources/profile.config.2.0 \
 	$(wildcard Test/resources/*.as?x) \
 	$(wildcard ../System.Web/Test/mainsoft/NunitWeb/NunitWeb/Resources/*.cs) \
 	$(wildcard ../System.Web/Test/mainsoft/NunitWeb/NunitWeb/Resources/*.as?x) \
diff --git a/mcs/class/System.Web.Extensions/System.Web.Configuration/ChangeLog b/mcs/class/System.Web.Extensions/System.Web.Configuration/ChangeLog
index 19e32d9..fa79305 100644
--- a/mcs/class/System.Web.Extensions/System.Web.Configuration/ChangeLog
+++ b/mcs/class/System.Web.Extensions/System.Web.Configuration/ChangeLog
@@ -1,3 +1,8 @@
+2010-12-13  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Implmeneted the
+	System.Web.Configuration.ScriptingRoleServiceSection type
+
 2009-08-17  Marek Habersack  <mhabersack at novell.com>
 
 	* ScriptingJsonSerializationSection.cs: MaxJsonLength default
diff --git a/mcs/class/System.Web.Extensions/System.Web.Configuration/ChangeLog b/mcs/class/System.Web.Extensions/System.Web.Configuration/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Web.Extensions/System.Web.Configuration/ChangeLog
copy to mcs/class/System.Web.Extensions/System.Web.Configuration/ChangeLog.old
diff --git a/mcs/class/System.Web.Extensions/System.Web.Configuration/ScriptingRoleServiceSection.cs b/mcs/class/System.Web.Extensions/System.Web.Configuration/ScriptingRoleServiceSection.cs
new file mode 100644
index 0000000..1e0b3a7
--- /dev/null
+++ b/mcs/class/System.Web.Extensions/System.Web.Configuration/ScriptingRoleServiceSection.cs
@@ -0,0 +1,55 @@
+// 
+// ScriptingRoleServiceSection.cs
+//  
+// Author:
+//       Marek Habersack <grendel at twistedcode.net>
+// 
+// Copyright (c) 2010 Novell, Inc (http://novell.com)
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Configuration;
+
+namespace System.Web.Configuration
+{
+	public sealed class ScriptingRoleServiceSection : ConfigurationSection
+	{
+		static ConfigurationProperty enabledProp;
+		static ConfigurationPropertyCollection properties;
+
+		static ScriptingRoleServiceSection ()
+		{
+			enabledProp = new ConfigurationProperty ("enabled", typeof (bool), false);
+
+			properties = new ConfigurationPropertyCollection ();
+			properties.Add (enabledProp);
+		}
+		
+		protected override ConfigurationPropertyCollection Properties {
+			get { return properties; }
+		}
+
+		[ConfigurationProperty ("enabled", DefaultValue=false)]
+		public bool Enabled {
+			get { return (bool) base [enabledProp]; }
+			set { base [enabledProp] = value; }
+		}
+	}
+}
diff --git a/mcs/class/System.Web.Extensions/System.Web.Extensions.dll.sources b/mcs/class/System.Web.Extensions/System.Web.Extensions.dll.sources
index 6709235..f1f0ddc 100644
--- a/mcs/class/System.Web.Extensions/System.Web.Extensions.dll.sources
+++ b/mcs/class/System.Web.Extensions/System.Web.Extensions.dll.sources
@@ -21,6 +21,7 @@
 ./System.Web.Configuration/ScriptingAuthenticationServiceSection.cs
 ./System.Web.Configuration/ScriptingJsonSerializationSection.cs
 ./System.Web.Configuration/ScriptingProfileServiceSection.cs
+./System.Web.Configuration/ScriptingRoleServiceSection.cs
 ./System.Web.Configuration/ScriptingScriptResourceHandlerSection.cs
 ./System.Web.Configuration/ScriptingSectionGroup.cs
 ./System.Web.Configuration/ScriptingWebServicesSectionGroup.cs
diff --git a/mcs/class/System.Web.Extensions/System.Web.Extensions_test.dll.sources b/mcs/class/System.Web.Extensions/System.Web.Extensions_test.dll.sources
index 92bce2e..e284528 100644
--- a/mcs/class/System.Web.Extensions/System.Web.Extensions_test.dll.sources
+++ b/mcs/class/System.Web.Extensions/System.Web.Extensions_test.dll.sources
@@ -34,6 +34,7 @@
 ../../System.Web/Test/mainsoft/NunitWeb/NunitWeb/StandardUrl.cs
 ../../System.Web/Test/mainsoft/NunitWeb/NunitWeb/WebTest.cs
 ../../System.Web/Test/mainsoft/NunitWeb/NunitWeb/WebTestResourcesSetupAttribute.cs
+code/WebTestLocal.cs
 code/Country.cs
 code/CountryCollection.cs
 code/Bug604053_DataSource.cs
diff --git a/mcs/class/System.Web.Extensions/System.Web.UI.WebControls/ChangeLog b/mcs/class/System.Web.Extensions/System.Web.UI.WebControls/ChangeLog
index fa370c9..027e41b 100644
--- a/mcs/class/System.Web.Extensions/System.Web.UI.WebControls/ChangeLog
+++ b/mcs/class/System.Web.Extensions/System.Web.UI.WebControls/ChangeLog
@@ -1,3 +1,7 @@
+2011-01-08  Marek Safar  <marek.safar at gmail.com>
+
+	Fixed missing protected internal modifier
+
 2010-06-19  Marek Habersack  <mhabersack at novell.com>
 
 	* DataPager.cs: when rendering the ID attribute, use ClientID
diff --git a/mcs/class/System.Web.Extensions/System.Web.UI.WebControls/ChangeLog b/mcs/class/System.Web.Extensions/System.Web.UI.WebControls/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Web.Extensions/System.Web.UI.WebControls/ChangeLog
copy to mcs/class/System.Web.Extensions/System.Web.UI.WebControls/ChangeLog.old
diff --git a/mcs/class/System.Web.Extensions/System.Web.UI.WebControls/ListView.cs b/mcs/class/System.Web.Extensions/System.Web.UI.WebControls/ListView.cs
index ddd0e91..e7521e4 100644
--- a/mcs/class/System.Web.Extensions/System.Web.UI.WebControls/ListView.cs
+++ b/mcs/class/System.Web.Extensions/System.Web.UI.WebControls/ListView.cs
@@ -1399,7 +1399,7 @@ namespace System.Web.UI.WebControls
 			_dataKeys = null;
 		}
 		
-		protected override void LoadControlState (object savedState)
+		protected internal override void LoadControlState (object savedState)
 		{
 			ResetDefaults ();
 			object[] state = savedState as object[];
@@ -1759,7 +1759,7 @@ namespace System.Web.UI.WebControls
 			return ret;
 		}
 		
-		protected override void OnInit (EventArgs e)
+		protected internal override void OnInit (EventArgs e)
 		{
 			Page.RegisterRequiresControlState (this);
 			base.OnInit (e);
@@ -1882,7 +1882,7 @@ namespace System.Web.UI.WebControls
 			InvokeEvent <PageEventArgs> (TotalRowCountAvailableEvent, e);
 		}
 	
-		protected override void PerformDataBinding (IEnumerable data)
+		protected internal override void PerformDataBinding (IEnumerable data)
 		{
 			base.PerformDataBinding (data);
 			TrackViewState ();
@@ -1923,7 +1923,7 @@ namespace System.Web.UI.WebControls
 				container.Controls.RemoveAt (start);
 		}
 		
-		protected override void Render (HtmlTextWriter writer)
+		protected internal override void Render (HtmlTextWriter writer)
 		{
 			base.Render (writer);
 			// Why override?
@@ -1952,7 +1952,7 @@ namespace System.Web.UI.WebControls
 			return state;
 		}
 		
-		protected override object SaveControlState ()
+		protected internal override object SaveControlState ()
 		{
 			object[] ret = new object [CSTATE_COUNT];
 			string[] dataKeyNames = DataKeyNames;
diff --git a/mcs/class/System.Web.Extensions/System.Web.UI/AsyncPostBackTrigger.cs b/mcs/class/System.Web.Extensions/System.Web.UI/AsyncPostBackTrigger.cs
index 22d436e..52f7402 100644
--- a/mcs/class/System.Web.Extensions/System.Web.UI/AsyncPostBackTrigger.cs
+++ b/mcs/class/System.Web.Extensions/System.Web.UI/AsyncPostBackTrigger.cs
@@ -69,9 +69,13 @@ namespace System.Web.UI
 			string ctrlUniqueID = ctrl != null ? ctrl.UniqueID : null;
 			if (ctrlUniqueID == null)
 				return false;
-			
-			if (String.Compare (Owner.ScriptManager.AsyncPostBackSourceElementID, ctrlUniqueID, StringComparison.Ordinal) == 0)
+
+			string asyncPostBackElementID = Owner.ScriptManager.AsyncPostBackSourceElementID;
+			if (String.Compare (asyncPostBackElementID, ctrlUniqueID, StringComparison.Ordinal) == 0)
 				return true;
+			else if (asyncPostBackElementID.StartsWith (ctrlUniqueID + "$", StringComparison.Ordinal))
+				return true;
+			
 			return false;
 		}
 
@@ -109,7 +113,7 @@ namespace System.Web.UI
 		}
 
 		public override string ToString () {
-			return String.Format ("AsyncPostBack: {0}.{1}", ControlID, EventName);
+			return String.Format ("AsyncPostBackTrigger: {0}.{1}", ControlID, EventName);
 		}
 	}
 }
\ No newline at end of file
diff --git a/mcs/class/System.Web.Extensions/System.Web.UI/ChangeLog b/mcs/class/System.Web.Extensions/System.Web.UI/ChangeLog
index 1482b4c..c64aa62 100644
--- a/mcs/class/System.Web.Extensions/System.Web.UI/ChangeLog
+++ b/mcs/class/System.Web.Extensions/System.Web.UI/ChangeLog
@@ -1,3 +1,43 @@
+2011-01-03  Marek Habersack  <grendel at twistedcode.net>
+
+	Fix for bug #659064. Resource URLs must always be the same.
+	UpdatePanel triggers must always be initialized.
+
+	String hash cache must not be thread-local. Hashes computed for a
+	string once must be shared by all the threads or different URLs
+	may be generated for the same assembly+resource pair. UpdatePanel
+	triggers must be initialized not only during the Load event but
+	also when they are inserted after that point.
+
+2011-01-08  Marek Safar  <marek.safar at gmail.com>
+
+	Fixed missing protected internal modifier
+
+2010-12-13  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Fix for bug #658278. Panels render children only when
+	parent is present and ChildrenAsTriggers is enabled
+
+	Fix from Avior Computing <jmilillo at aviorcomputing.com>, thanks!
+
+2010-11-17  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Part of fix for bug #653013. AsyncPostBackTrigger must
+	react to events generated by the trigger control's children.
+
+2010-11-04  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Part of fix for bug #649546. Better handling of nested
+	UpdatePanels
+
+	Nested update panels don't ever output a script block in
+	RenderChildren, they write to the passed HtmlTextWriter instead.
+
+2010-11-03  Marek Habersack  <grendel at twistedcode.net>
+
+	* System.Web.Extensions/System.Web.UI/ScriptManager.cs:
+	scriptStartupBlock is a 3.5+ thing
+
 2010-08-13  Marek Habersack  <grendel at twistedcode.net>
 
 	[asp.net] Scripts may be requested also from pages without
diff --git a/mcs/class/System.Web.Extensions/System.Web.UI/ExtenderControl.cs b/mcs/class/System.Web.Extensions/System.Web.UI/ExtenderControl.cs
index 943acd3..5a3d99c 100644
--- a/mcs/class/System.Web.Extensions/System.Web.UI/ExtenderControl.cs
+++ b/mcs/class/System.Web.Extensions/System.Web.UI/ExtenderControl.cs
@@ -84,7 +84,7 @@ namespace System.Web.UI
 
 		protected abstract IEnumerable<ScriptReference> GetScriptReferences ();
 
-		protected override void OnPreRender (EventArgs e) {
+		protected internal override void OnPreRender (EventArgs e) {
 			base.OnPreRender (e);
 
 			if (String.IsNullOrEmpty (TargetControlID))
@@ -96,7 +96,7 @@ namespace System.Web.UI
 			ScriptManager.RegisterExtenderControl (this, c);
 		}
 
-		protected override void Render (HtmlTextWriter writer) {
+		protected internal override void Render (HtmlTextWriter writer) {
 			ScriptManager.RegisterScriptDescriptors (this);
 			base.Render (writer);
 		}
diff --git a/mcs/class/System.Web.Extensions/System.Web.UI/ScriptControl.cs b/mcs/class/System.Web.Extensions/System.Web.UI/ScriptControl.cs
index 6ee7c68..a31fb93 100644
--- a/mcs/class/System.Web.Extensions/System.Web.UI/ScriptControl.cs
+++ b/mcs/class/System.Web.Extensions/System.Web.UI/ScriptControl.cs
@@ -55,12 +55,12 @@ namespace System.Web.UI
 
 		protected abstract IEnumerable<ScriptReference> GetScriptReferences ();
 
-		protected override void OnPreRender (EventArgs e) {
+		protected internal override void OnPreRender (EventArgs e) {
 			base.OnPreRender (e);
 			ScriptManager.RegisterScriptControl (this);
 		}
 
-		protected override void Render (HtmlTextWriter writer) {
+		protected internal override void Render (HtmlTextWriter writer) {
 			ScriptManager.RegisterScriptDescriptors (this);
 			base.Render (writer);
 		}
diff --git a/mcs/class/System.Web.Extensions/System.Web.UI/ScriptManager.cs b/mcs/class/System.Web.Extensions/System.Web.UI/ScriptManager.cs
index 4c39f6c..78e889c 100644
--- a/mcs/class/System.Web.Extensions/System.Web.UI/ScriptManager.cs
+++ b/mcs/class/System.Web.Extensions/System.Web.UI/ScriptManager.cs
@@ -1,10 +1,12 @@
 //
 // ScriptManager.cs
 //
-// Author:
+// Authors:
 //   Igor Zelmanovich <igorz at mainsoft.com>
+//   Marek Habersack <grendel at twistedcode.net>
 //
 // (C) 2007 Mainsoft, Inc.  http://www.mainsoft.com
+// (C) 2007-2010 Novell, Inc (http://novell.com/)
 //
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -62,7 +64,9 @@ namespace System.Web.UI
 		const string hiddenField = "hiddenField";
 		const string arrayDeclaration = "arrayDeclaration";
 		const string scriptBlock = "scriptBlock";
+#if NET_3_5
 		const string scriptStartupBlock = "scriptStartupBlock";
+#endif
 		const string expando = "expando";
 		const string onSubmit = "onSubmit";
 		const string asyncPostBackControlIDs = "asyncPostBackControlIDs";
@@ -451,7 +455,7 @@ namespace System.Web.UI
 				AsyncPostBackError (this, e);
 		}
 
-		protected override void OnInit (EventArgs e) {
+		protected internal override void OnInit (EventArgs e) {
 			base.OnInit (e);
 
 			if (GetCurrentInternal (Page) != null)
@@ -467,7 +471,7 @@ namespace System.Web.UI
 				OnAsyncPostBackError (new AsyncPostBackErrorEventArgs (Context.Error));
 		}
 
-		protected override void OnPreRender (EventArgs e) {
+		protected internal override void OnPreRender (EventArgs e) {
 			base.OnPreRender (e);
 
 			Page.PreRenderComplete += new EventHandler (OnPreRenderComplete);
@@ -1082,7 +1086,7 @@ namespace System.Web.UI
 			scriptList.Add (new RegisteredScript (control, type, key, script, url, addScriptTag, scriptType));
 		}
 
-		protected override void Render (HtmlTextWriter writer) {
+		protected internal override void Render (HtmlTextWriter writer) {
 			// MSDN: This method is used by control developers to extend the ScriptManager control. 
 			// Notes to Inheritors: 
 			// When overriding this method, call the base Render(HtmlTextWriter) method 
@@ -1234,7 +1238,7 @@ namespace System.Web.UI
 
 		static void WriteCallbackOutput (TextWriter output, string type, string name, object value) {
 			string str = value as string;
-			StringBuilder sb = value as StringBuilder;
+			StringBuilder sb = str == null ? value as StringBuilder : null;
 			int length = 0;
 			if (str != null)
 				length = str.Length;
@@ -1297,28 +1301,12 @@ namespace System.Web.UI
 			//
 			if (_updatePanels != null && _updatePanels.Count > 0) {
 				bool needsUpdate;
-				
 				foreach (UpdatePanel panel in _updatePanels) {
 					if (panel.RequiresUpdate || (!String.IsNullOrEmpty (_panelToRefreshID) && String.Compare (_panelToRefreshID, panel.UniqueID, StringComparison.Ordinal) == 0))
 						needsUpdate = true;
 					else
 						needsUpdate = false;
-					
-					if (needsUpdate == false) {
-						Control parent = panel.Parent;
-						UpdatePanel parentPanel;
-						
-						bool havePanelsToRefresh = _panelsToRefresh != null ? _panelsToRefresh.Count > 0 : false;
-						while (parent != null) {
-							parentPanel = parent as UpdatePanel;
-							if (havePanelsToRefresh && parentPanel != null && _panelsToRefresh.Contains (parentPanel)) {
-								needsUpdate = true;
-								break;
-							}
-							parent = parent.Parent;
-						}
-					}
-					
+
 					panel.SetInPartialRendering (needsUpdate);
 					if (needsUpdate)
 						RegisterPanelForRefresh (panel);
@@ -1418,12 +1406,14 @@ namespace System.Web.UI
 							else
 								WriteCallbackOutput (output, scriptBlock, scriptContentWithTags, SerializeScriptBlock (scriptEntry));
 							break;
+#if NET_3_5
 						case RegisteredScriptType.ClientStartupScript:
 							if (scriptEntry.AddScriptTags)
 								WriteCallbackOutput (output, scriptStartupBlock, scriptContentNoTags, scriptEntry.Script);
 							else
 								WriteCallbackOutput (output, scriptStartupBlock, scriptContentWithTags, SerializeScriptBlock (scriptEntry));
 							break;
+#endif
 						case RegisteredScriptType.ClientScriptInclude:
 							WriteCallbackOutput (output, scriptBlock, scriptPath, scriptEntry.Url);
 							break;
diff --git a/mcs/class/System.Web.Extensions/System.Web.UI/ScriptManagerProxy.cs b/mcs/class/System.Web.Extensions/System.Web.UI/ScriptManagerProxy.cs
index 615bad6..7e64232 100644
--- a/mcs/class/System.Web.Extensions/System.Web.UI/ScriptManagerProxy.cs
+++ b/mcs/class/System.Web.Extensions/System.Web.UI/ScriptManagerProxy.cs
@@ -117,7 +117,7 @@ namespace System.Web.UI
 			}
 		}
 
-		protected override void OnInit (EventArgs e) {
+		protected internal override void OnInit (EventArgs e) {
 			base.OnInit (e);
 			ScriptManager.RegisterProxy (this);
 		}
diff --git a/mcs/class/System.Web.Extensions/System.Web.UI/Timer.cs b/mcs/class/System.Web.Extensions/System.Web.UI/Timer.cs
index e1a5500..6cc27c7 100644
--- a/mcs/class/System.Web.Extensions/System.Web.UI/Timer.cs
+++ b/mcs/class/System.Web.Extensions/System.Web.UI/Timer.cs
@@ -112,7 +112,7 @@ namespace System.Web.UI
 			yield return script;
 		}
 
-		protected override void OnPreRender (EventArgs e) {
+		protected internal override void OnPreRender (EventArgs e) {
 			base.OnPreRender (e);
 			ScriptManager.RegisterScriptControl (this);
 		}
@@ -126,7 +126,7 @@ namespace System.Web.UI
 			OnTick (EventArgs.Empty);
 		}
 
-		protected override void Render (HtmlTextWriter writer) {
+		protected internal override void Render (HtmlTextWriter writer) {
 
 			Page.ClientScript.RegisterForEventValidation (UniqueID);
 
diff --git a/mcs/class/System.Web.Extensions/System.Web.UI/UpdatePanel.cs b/mcs/class/System.Web.Extensions/System.Web.UI/UpdatePanel.cs
index 5df0322..1920cb4 100644
--- a/mcs/class/System.Web.Extensions/System.Web.UI/UpdatePanel.cs
+++ b/mcs/class/System.Web.Extensions/System.Web.UI/UpdatePanel.cs
@@ -1,10 +1,12 @@
 //
 // UpdatePanel.cs
 //
-// Author:
+// Authors:
 //   Igor Zelmanovich <igorz at mainsoft.com>
+//   Marek Habersack <grendel at twistedcode.net>
 //
 // (C) 2007 Mainsoft, Inc.  http://www.mainsoft.com
+// (C) 2007-2010 Novell, Inc (http://novell.com/)
 //
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -95,6 +97,22 @@ namespace System.Web.UI
 		UpdatePanelTriggerCollection _triggers;
 		UpdatePanelRenderMode _renderMode = UpdatePanelRenderMode.Block;
 		ScriptManager _scriptManager;
+		Control cachedParent;
+		UpdatePanel parentPanel;
+		bool parentPanelChecked;
+		
+		UpdatePanel ParentPanel {
+			get {
+				Control parent = Parent;
+				if (cachedParent == parent && parentPanelChecked)
+					return parentPanel;
+
+				cachedParent = parent;
+				parentPanel = FindParentPanel (parent);
+
+				return parentPanel;
+			}
+		}
 		
 		[Category ("Behavior")]
 		[DefaultValue (true)]
@@ -216,41 +234,41 @@ namespace System.Web.UI
 
 		protected internal virtual void Initialize ()
 		{
-			int tcount = _triggers != null ? _triggers.Count : 0;
-			if (tcount == 0 || !ScriptManager.SupportsPartialRendering)
+			if (_triggers == null || _triggers.Count == 0 || !ScriptManager.SupportsPartialRendering)
 				return;
-			
-			for (int i = 0; i < tcount; i++)
-				_triggers [i].Initialize ();
+
+			_triggers.Initialize ();
 		}
 
-		protected override void OnInit (EventArgs e) {
+		protected internal override void OnInit (EventArgs e) {
 			base.OnInit (e);
 
 			ScriptManager.RegisterUpdatePanel (this);
-
+			if (ParentPanel != null)
+				ScriptManager.RegisterChildUpdatePanel (this);
+			
 			if (ContentTemplate != null)
 				ContentTemplate.InstantiateIn (ContentTemplateContainer);
 		}
 
-		protected override void OnLoad (EventArgs e) {
+		protected internal override void OnLoad (EventArgs e) {
 			base.OnLoad (e);
 
 			Initialize ();
 		}
 
-		protected override void OnPreRender (EventArgs e) {
+		protected internal override void OnPreRender (EventArgs e) {
 			base.OnPreRender (e);
 
 			if (UpdateMode == UpdatePanelUpdateMode.Always && !ChildrenAsTriggers)
 				throw new InvalidOperationException (String.Format ("ChildrenAsTriggers cannot be set to false when UpdateMode is set to Always on UpdatePanel '{0}'", ID));
 		}
 
-		protected override void OnUnload (EventArgs e) {
+		protected internal override void OnUnload (EventArgs e) {
 			base.OnUnload (e);
 		}
 
-		protected override void Render (HtmlTextWriter writer) {
+		protected internal override void Render (HtmlTextWriter writer) {
 			writer.AddAttribute (HtmlTextWriterAttribute.Id, ClientID);
 			if (RenderMode == UpdatePanelRenderMode.Block)
 				writer.RenderBeginTag (HtmlTextWriterTag.Div);
@@ -260,21 +278,21 @@ namespace System.Web.UI
 			writer.RenderEndTag ();
 		}
 
-		UpdatePanel FindParentPanel ()
+		UpdatePanel FindParentPanel (Control parent)
 		{
-			Control parent = Parent;
+			parentPanelChecked = true;
 			while (parent != null) {
 				UpdatePanel panel = parent as UpdatePanel;
 				if (panel != null)
 					return panel;
-
+				
 				parent = parent.Parent;
 			}
 
 			return null;
 		}
 		
-		protected override void RenderChildren (HtmlTextWriter writer)
+		protected internal override void RenderChildren (HtmlTextWriter writer)
 		{
 			RenderChildrenWriter = null;
 			
@@ -284,7 +302,7 @@ namespace System.Web.UI
 					altWriter = writer.InnerWriter as ScriptManager.AlternativeHtmlTextWriter;
 				
 				if (altWriter == null) {
-					UpdatePanel parentPanel = FindParentPanel ();
+					UpdatePanel parentPanel = ParentPanel;
 					if (parentPanel != null)
 						altWriter = parentPanel.RenderChildrenWriter;
 				}
@@ -300,7 +318,13 @@ namespace System.Web.UI
 					HtmlTextWriter w = new HtmlTextWriter (new StringWriter (sb));
 					base.RenderChildren (w);
 					w.Flush ();
-					ScriptManager.WriteCallbackPanel (responseOutput, this, sb);
+					if (sb.Length > 0) {
+						UpdatePanel parent = ParentPanel;
+						if (parent != null && parent.ChildrenAsTriggers)
+							writer.Write (sb.ToString ());
+						else
+							ScriptManager.WriteCallbackPanel (responseOutput, this, sb);
+					}
 				} finally {
 					RenderChildrenWriter = null;
 				}
diff --git a/mcs/class/System.Web.Extensions/System.Web.UI/UpdatePanelTriggerCollection.cs b/mcs/class/System.Web.Extensions/System.Web.UI/UpdatePanelTriggerCollection.cs
index 5a4b418..8cb2220 100644
--- a/mcs/class/System.Web.Extensions/System.Web.UI/UpdatePanelTriggerCollection.cs
+++ b/mcs/class/System.Web.Extensions/System.Web.UI/UpdatePanelTriggerCollection.cs
@@ -37,7 +37,8 @@ namespace System.Web.UI
 	public class UpdatePanelTriggerCollection : Collection<UpdatePanelTrigger>
 	{
 		UpdatePanel _owner;
-
+		bool initialized;
+		
 		public UpdatePanelTriggerCollection (UpdatePanel owner)
 		{
 			_owner = owner;
@@ -58,6 +59,11 @@ namespace System.Web.UI
 		{
 			base.InsertItem (index, item);
 			item.Owner = Owner;
+
+			if (!initialized || item == null)
+				return;
+
+			item.Initialize ();
 		}
 
 		protected override void RemoveItem (int index)
@@ -70,5 +76,16 @@ namespace System.Web.UI
 			base.SetItem (index, item);
 			item.Owner = Owner;
 		}
+
+		internal void Initialize ()
+		{
+			if (initialized)
+				return;
+
+			for (int i = 0; i < Count; i++)
+				this [i].Initialize ();
+
+			initialized = true;
+		}
 	}
 }
diff --git a/mcs/class/System.Web.Extensions/System.Web.UI/UpdateProgress.cs b/mcs/class/System.Web.Extensions/System.Web.UI/UpdateProgress.cs
index aa551eb..dd92258 100644
--- a/mcs/class/System.Web.Extensions/System.Web.UI/UpdateProgress.cs
+++ b/mcs/class/System.Web.Extensions/System.Web.UI/UpdateProgress.cs
@@ -126,7 +126,7 @@ namespace System.Web.UI
 			yield break;
 		}
 
-		protected override void OnPreRender (EventArgs e) {
+		protected internal override void OnPreRender (EventArgs e) {
 			base.OnPreRender (e);
 			ScriptManager.RegisterScriptControl (this);
 
@@ -138,7 +138,7 @@ namespace System.Web.UI
 			Controls.Add (container);
 		}
 
-		protected override void Render (HtmlTextWriter writer) {
+		protected internal override void Render (HtmlTextWriter writer) {
 			if (DynamicLayout)
 				writer.AddStyleAttribute (HtmlTextWriterStyle.Display, "none");
 			else {
diff --git a/mcs/class/System.Web.Extensions/Test/System.Web.Script.Serialization/ChangeLog b/mcs/class/System.Web.Extensions/Test/System.Web.Script.Serialization/ChangeLog
index 54c20f2..df52a2d 100644
--- a/mcs/class/System.Web.Extensions/Test/System.Web.Script.Serialization/ChangeLog
+++ b/mcs/class/System.Web.Extensions/Test/System.Web.Script.Serialization/ChangeLog
@@ -1,3 +1,7 @@
+2011-01-04  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Failing tests fixes.
+
 2009-08-17  Marek Habersack  <mhabersack at novell.com>
 
 	* JavaScriptSerializerTest.cs: fixed broken tests
diff --git a/mcs/class/System.Web.Extensions/Test/System.Web.Script.Serialization/ChangeLog b/mcs/class/System.Web.Extensions/Test/System.Web.Script.Serialization/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Web.Extensions/Test/System.Web.Script.Serialization/ChangeLog
copy to mcs/class/System.Web.Extensions/Test/System.Web.Script.Serialization/ChangeLog.old
diff --git a/mcs/class/System.Web.Extensions/Test/System.Web.Script.Serialization/JavaScriptSerializerTest.cs b/mcs/class/System.Web.Extensions/Test/System.Web.Script.Serialization/JavaScriptSerializerTest.cs
index e97be3b..c7be19a 100644
--- a/mcs/class/System.Web.Extensions/Test/System.Web.Script.Serialization/JavaScriptSerializerTest.cs
+++ b/mcs/class/System.Web.Extensions/Test/System.Web.Script.Serialization/JavaScriptSerializerTest.cs
@@ -418,12 +418,17 @@ namespace MonoTests.System.Web.Script.Serialization
 		[Test]
 		public void TestDeserializeTypeResolver () 
 		{
+#if NET_4_0
+			string expected = "{\"__type\":\"MonoTests.System.Web.Script.Serialization.JavaScriptSerializerTest+X, System.Web.Extensions_test_net_4_0, Version=1.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35\",\"z\":8,\"ch\":\"v\",\"ch_null\":null,\"str\":\"vwF59g\",\"b\":253,\"sb\":-48,\"sh\":-32740,\"ush\":65511,\"i\":-234235453,\"ui\":4294733061,\"l\":-9223372036854775780,\"ul\":18446744073709551612,\"f\":NaN,\"f1\":-Infinity,\"f2\":Infinity,\"f3\":-3.40282347E+38,\"f4\":3.40282347E+38,\"d\":NaN,\"d1\":-Infinity,\"d2\":Infinity,\"d3\":-1.7976931348623157E+308,\"d4\":1.7976931348623157E+308,\"de\":-1,\"de1\":0,\"de2\":1,\"de3\":-79228162514264337593543950335,\"de4\":79228162514264337593543950335,\"g\":\"000000ea-0002-0162-0102-030405060708\",\"nb\":null,\"dbn\":null,\"uri\":\"http://kostat@mainsoft/adfasdf/asdfasdf.aspx/asda/ads?a=b&c=d\",\"hash\":{\"mykey\":{\"__type\":\"MonoTests.System.Web.Script.Serialization.JavaScriptSerializerTest+Y, System.Web.Extensions_test_net_4_0, Version=1.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35\",\"BB\":10}},\"point\":{\"__type\":\"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\",\"IsEmpty\":false,\"X\":150,\"Y\":150},\"MyEnum\":[1,10,345],\"MyEnum1\":[1,10,345],\"AA\":5,\"AA1\":[{\"__type\":\"MonoTests.System.Web.Script.Serialization.JavaScriptSerializerTest+Y, System.Web.Extensions_test_net_4_0, Version=1.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35\",\"BB\":10},{\"__type\":\"MonoTests.System.Web.Script.Serialization.JavaScriptSerializerTest+Y, System.Web.Extensions_test_net_4_0, Version=1.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35\",\"BB\":10}],\"BB\":18446744073709551610,\"YY\":[{\"__type\":\"MonoTests.System.Web.Script.Serialization.JavaScriptSerializerTest+Y, System.Web.Extensions_test_net_4_0, Version=1.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35\",\"BB\":10},{\"__type\":\"MonoTests.System.Web.Script.Serialization.JavaScriptSerializerTest+Y, System.Web.Extensions_test_net_4_0, Version=1.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35\",\"BB\":10}]}";
+#else
+			string expected = "{\"__type\":\"MonoTests.System.Web.Script.Serialization.JavaScriptSerializerTest+X, System.Web.Extensions_test_net_2_0, Version=1.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35\",\"z\":8,\"ch\":\"v\",\"ch_null\":null,\"str\":\"vwF59g\",\"b\":253,\"sb\":-48,\"sh\":-32740,\"ush\":65511,\"i\":-234235453,\"ui\":4294733061,\"l\":-9223372036854775780,\"ul\":18446744073709551612,\"f\":NaN,\"f1\":-Infinity,\"f2\":Infinity,\"f3\":-3.40282347E+38,\"f4\":3.40282347E+38,\"d\":NaN,\"d1\":-Infinity,\"d2\":Infinity,\"d3\":-1.7976931348623157E+308,\"d4\":1.7976931348623157E+308,\"de\":-1,\"de1\":0,\"de2\":1,\"de3\":-79228162514264337593543950335,\"de4\":79228162514264337593543950335,\"g\":\"000000ea-0002-0162-0102-030405060708\",\"nb\":null,\"dbn\":null,\"uri\":\"http://kostat@mainsoft/adfasdf/asdfasdf.aspx/asda/ads?a=b&c=d\",\"hash\":{\"mykey\":{\"__type\":\"MonoTests.System.Web.Script.Serialization.JavaScriptSerializerTest+Y, System.Web.Extensions_test_net_2_0, Version=1.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35\",\"BB\":10}},\"point\":{\"__type\":\"System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\",\"IsEmpty\":false,\"X\":150,\"Y\":150},\"MyEnum\":[1,10,345],\"MyEnum1\":[1,10,345],\"AA\":5,\"AA1\":[{\"__type\":\"MonoTests.System.Web.Script.Serialization.JavaScriptSerializerTest+Y, System.Web.Extensions_test_net_2_0, Version=1.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35\",\"BB\":10},{\"__type\":\"MonoTests.System.Web.Script.Serialization.JavaScriptSerializerTest+Y, System.Web.Extensions_test_net_2_0, Version=1.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35\",\"BB\":10}],\"BB\":18446744073709551610,\"YY\":[{\"__type\":\"MonoTests.System.Web.Script.Serialization.JavaScriptSerializerTest+Y, System.Web.Extensions_test_net_2_0, Version=1.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35\",\"BB\":10},{\"__type\":\"MonoTests.System.Web.Script.Serialization.JavaScriptSerializerTest+Y, System.Web.Extensions_test_net_2_0, Version=1.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35\",\"BB\":10}]}";
+#endif
 			JavaScriptSerializer ser = new JavaScriptSerializer (new SimpleTypeResolver ());
 			X x = new X ();
 			x.Init ();
 
 			string s = ser.Serialize (x);
-			Assert.AreEqual ("{\"__type\":\"MonoTests.System.Web.Script.Serialization.JavaScriptSerializerTest+X, System.Web.Extensions_test_net_2_0, Version=1.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35\",\"z\":8,\"ch\":\"v\",\"ch_null\":null,\"str\":\"vwF59g\",\"b\":253,\"sb\":-48,\"sh\":-32740,\"ush\":65511,\"i\":-234235453,\"ui\":4294733061,\"l\":-9223372036854775780,\"ul\":18446744073709551612,\"f\":NaN,\"f1\":-Infinity,\"f2\":Infinity,\"f3\":-3.40282347E+38,\"f4\":3.40282347E+38,\"d\":NaN,\"d1\":-Infinity,\"d2\":Infinity,\"d3\":-1.7976931348623157E+308,\"d4\":1.7976931348623157E+308,\"de\":-1,\"de1\":0,\"de2\":1,\"de3\":-79228162514264337593543950335,\"de4\":79228162514264337593543950335,\"g\":\"000000ea-0002-0162-0102-030405060708\",\"nb\":null,\"dbn\":null,\"uri\":\"http://kostat@mainsoft/adfasdf/asdfasdf.aspx/asda/ads?a=b&c=d\",\"hash\":{\"mykey\":{\"__type\":\"MonoTests.System.Web.Script.Serialization.JavaScriptSerializerTest+Y, System.Web.Extensions_test_net_2_0, Version=1.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35\",\"BB\":10}},\"point\":{\"__type\":\"System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\",\"IsEmpty\":false,\"X\":150,\"Y\":150},\"MyEnum\":[1,10,345],\"MyEnum1\":[1,10,345],\"AA\":5,\"AA1\":[{\"__type\":\"MonoTests.System.Web.Script.Serialization.JavaScriptSerializerTest+Y, System.Web.Extensions_test_net_2_0, Version=1.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35\",\"BB\":10},{\"__type\":\"MonoTests.System.Web.Script.Serialization.JavaScriptSerializerTest+Y, System.Web.Extensions_test_net_2_0, Version=1.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35\",\"BB\":10}],\"BB\":18446744073709551610,\"YY\":[{\"__type\":\"MonoTests.System.Web.Script.Serialization.JavaScriptSerializerTest+Y, System.Web.Extensions_test_net_2_0, Version=1.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35\",\"BB\":10},{\"__type\":\"MonoTests.System.Web.Script.Serialization.JavaScriptSerializerTest+Y, System.Web.Extensions_test_net_2_0, Version=1.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35\",\"BB\":10}]}", s, "#A1");
+			Assert.AreEqual (expected, s, "#A1");
 			
 			X x2 = ser.Deserialize<X> (s);
 			Assert.AreEqual (x, x2, "#A2");
diff --git a/mcs/class/System.Web.Extensions/Test/System.Web.UI.WebControls/ChangeLog b/mcs/class/System.Web.Extensions/Test/System.Web.UI.WebControls/ChangeLog
index f32a2e2..754d6dc 100644
--- a/mcs/class/System.Web.Extensions/Test/System.Web.UI.WebControls/ChangeLog
+++ b/mcs/class/System.Web.Extensions/Test/System.Web.UI.WebControls/ChangeLog
@@ -1,3 +1,7 @@
+2011-01-04  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Failing tests fixes.
+
 2009-06-18  Marek Habersack  <mhabersack at novell.com>
 
 	* ListViewTest.cs: hushed the output in ListView_Edit ()
diff --git a/mcs/class/System.Web.Extensions/Test/System.Web.UI.WebControls/ChangeLog b/mcs/class/System.Web.Extensions/Test/System.Web.UI.WebControls/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Web.Extensions/Test/System.Web.UI.WebControls/ChangeLog
copy to mcs/class/System.Web.Extensions/Test/System.Web.UI.WebControls/ChangeLog.old
diff --git a/mcs/class/System.Web.Extensions/Test/System.Web.UI.WebControls/ListViewTest.cs b/mcs/class/System.Web.Extensions/Test/System.Web.UI.WebControls/ListViewTest.cs
index 1cf0e5f..55c9ebd 100644
--- a/mcs/class/System.Web.Extensions/Test/System.Web.UI.WebControls/ListViewTest.cs
+++ b/mcs/class/System.Web.Extensions/Test/System.Web.UI.WebControls/ListViewTest.cs
@@ -325,7 +325,7 @@ namespace MonoTests.System.Web.UI.WebControls
 			InstantiateItemTemplate (container, displayIndex);
 		}
 	}
-
+	
 	class TestTemplate : ITemplate
 	{
 		public void InstantiateIn (Control container)
@@ -1215,6 +1215,16 @@ namespace MonoTests.System.Web.UI.WebControls
 		[Test (Description="Bug #535701, test 1")]
 		public void Bug_535701_1 ()
 		{
+#if NET_4_0
+			string originalHtml_1 = @"<span id=""ListViewTest"">
+        0 1 2 3 4 5 6 7 8 9 
+        </span>
+        <span id=""DataPager1""><a class=""aspNetDisabled"">First</a> <a class=""aspNetDisabled"">Previous</a> <span>1</span> <a href=""javascript:__doPostBack('DataPager1$ctl01$ctl01','')"">2</a> <a href=""javascript:__doPostBack('DataPager1$ctl02$ctl00','')"">Next</a> <a href=""javascript:__doPostBack('DataPager1$ctl02$ctl01','')"">Last</a> </span>";
+			string originalHtml_2 = @"<span id=""ListViewTest"">
+        10 11 12 
+        </span>
+        <span id=""DataPager1""><a href=""javascript:__doPostBack('DataPager1$ctl00$ctl00','')"">First</a> <a href=""javascript:__doPostBack('DataPager1$ctl00$ctl01','')"">Previous</a> <a href=""javascript:__doPostBack('DataPager1$ctl01$ctl00','')"">1</a> <span>2</span> <a class=""aspNetDisabled"">Next</a> <a class=""aspNetDisabled"">Last</a> </span>";
+#else
 			string originalHtml_1 = @"<span id=""ListViewTest"">
         0 1 2 3 4 5 6 7 8 9 
         </span>
@@ -1223,7 +1233,7 @@ namespace MonoTests.System.Web.UI.WebControls
         10 11 12 
         </span>
         <span id=""DataPager1""><a href=""javascript:__doPostBack('DataPager1$ctl00$ctl00','')"">First</a> <a href=""javascript:__doPostBack('DataPager1$ctl00$ctl01','')"">Previous</a> <a href=""javascript:__doPostBack('DataPager1$ctl01$ctl00','')"">1</a> <span>2</span> <a disabled=""disabled"">Next</a> <a disabled=""disabled"">Last</a> </span>";
-			
+#endif
 			WebTest t = new WebTest ("ListViewTotalRowCount_Bug535701_1.aspx");
 			string pageHtml = t.Run ();
 			string renderedHtml = HtmlDiff.GetControlFromPageHtml (pageHtml);
@@ -1244,6 +1254,24 @@ namespace MonoTests.System.Web.UI.WebControls
 		[Test (Description="Bug #535701, test 2")]
 		public void Bug_535701_2 ()
 		{
+#if NET_4_0
+			string originalHtml_1 = @"<span id=""ListViewTest2"">
+        12345678910
+        </span>
+        <span id=""DataPager1""><a class=""aspNetDisabled"">First</a> <a class=""aspNetDisabled"">Previous</a> <span>1</span> <a href=""javascript:__doPostBack('DataPager1$ctl01$ctl01','')"">2</a> <a href=""javascript:__doPostBack('DataPager1$ctl02$ctl00','')"">Next</a> <a href=""javascript:__doPostBack('DataPager1$ctl02$ctl01','')"">Last</a> </span>
+        	
+        <br /><div>
+        DataPager.TotalRowCount = 14<br />
+        Actual TotalRowCount = 14</div>";
+			string originalHtml_2 = @"<span id=""ListViewTest2"">
+        11121314
+        </span>
+        <span id=""DataPager1""><a href=""javascript:__doPostBack('DataPager1$ctl00$ctl00','')"">First</a> <a href=""javascript:__doPostBack('DataPager1$ctl00$ctl01','')"">Previous</a> <a href=""javascript:__doPostBack('DataPager1$ctl01$ctl00','')"">1</a> <span>2</span> <a class=""aspNetDisabled"">Next</a> <a class=""aspNetDisabled"">Last</a> </span>
+        	
+        <br /><div>
+        DataPager.TotalRowCount = 14<br />
+        Actual TotalRowCount = 14</div>";
+#else
 			string originalHtml_1 = @"<span id=""ListViewTest2"">
         12345678910
         </span>
@@ -1260,7 +1288,7 @@ namespace MonoTests.System.Web.UI.WebControls
         <br /><div>
         DataPager.TotalRowCount = 14<br />
         Actual TotalRowCount = 14</div>";
-			
+#endif
 			WebTest t = new WebTest ("ListViewTotalRowCount_Bug535701_2.aspx");
 			string pageHtml = t.Run ();
 			string renderedHtml = HtmlDiff.GetControlFromPageHtml (pageHtml);
@@ -1281,83 +1309,11 @@ namespace MonoTests.System.Web.UI.WebControls
 		[Test (Description="Bug #604053")]
 		public void Bug_604053 ()
 		{
-			string originalHtml = @"<span id=""Bug604053ListView1""><table id=""Bug604053ListView1_itemPlaceholderContainer"" border=""0"" style=""""><tr style=""""><th>
-											M1</th><th>
-											M2</th>
-	</tr>
-					<tr style="""">
-						<td>
-							<span id=""Bug604053ListView1_ctl10_M1Label"">0</span>
-						</td>
-						<td>
-							<span id=""Bug604053ListView1_ctl10_M2Label"">0</span>
-						</td>
-					</tr>
-				
-		
-					<tr style="""">
-						<td>
-							<span id=""Bug604053ListView1_ctl12_M1Label"">1</span>
-						</td>
-						<td>
-							<span id=""Bug604053ListView1_ctl12_M2Label"">1</span>
-						</td>
-					</tr>
-				
-
-
-</table>
-
-					<table><tr><td>
-								
-							</td>
-	</tr><tr><td style="""">
-								<span id=""DataPager1""><input type=""submit"" name=""Bug604053ListView1$DataPager1$ctl00$ctl00"" value=""First"" disabled=""disabled"" /> <span>1</span> <a href=""javascript:__doPostBack('Bug604053ListView1$DataPager1$ctl01$ctl01','')"">2</a> <a href=""javascript:__doPostBack('Bug604053ListView1$DataPager1$ctl01$ctl02','')"">3</a> <a href=""javascript:__doPostBack('Bug604053ListView1$DataPager1$ctl01$ctl03','')"">4</a> <a href=""javascript:__doPostBack('Bug604053ListView1$DataPager1$ctl01$ctl04','')"">5</a> <input type=""submit"" name=""Bug604053ListView1$DataPager1$ctl02$ctl00"" value=""Last"" /> </span>
-							</td>
-	</tr>
-
-</table>
-
-				</span>
-			<span id=""Bug604053ListView2""><table id=""Bug604053ListView2_itemPlaceholderContainer"" border=""0"" style=""""><tr style=""""><th>
-											M1</th><th>
-											M2</th>
-	</tr>
-					<tr style="""">
-						<td>
-							<span id=""Bug604053ListView2_ctl10_M1Label"">0</span>
-						</td>
-						<td>
-							<span id=""Bug604053ListView2_ctl10_M2Label"">0</span>
-						</td>
-					</tr>
-				
-		
-					<tr style="""">
-						<td>
-							<span id=""Bug604053ListView2_ctl12_M1Label"">1</span>
-						</td>
-						<td>
-							<span id=""Bug604053ListView2_ctl12_M2Label"">1</span>
-						</td>
-					</tr>
-				
-
-
-</table>
-
-					<table><tr><td>
-								
-							</td>
-	</tr><tr><td style="""">
-								<span id=""DataPager1""><input type=""submit"" name=""Bug604053ListView2$DataPager1$ctl00$ctl00"" value=""First"" disabled=""disabled"" /> <input type=""submit"" name=""Bug604053ListView2$DataPager1$ctl00$ctl01"" value=""Previous"" disabled=""disabled"" /> <input type=""submit"" name=""Bug604053ListView2$DataPager1$ctl00$ctl02"" value=""Next"" /> <input type=""submit"" name=""Bug604053ListView2$DataPager1$ctl00$ctl03"" value=""Last"" /> </span>
-							</td>
-	</tr>
-
-</table>
-
-				</span>";
-			
+#if NET_4_0
+			string originalHtml = "<span id=\"Bug604053ListView1\"><table id=\"Bug604053ListView1_itemPlaceholderContainer\" border=\"0\" style=\"\"><tr style=\"\"><th>\n\t\t\t\t\t\t\t\t\t\t\tM1</th><th>\n\t\t\t\t\t\t\t\t\t\t\tM2</th>\r\n\t</tr>\n\t\t\t\t\t<tr style=\"\">\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<span id=\"Bug604053ListView1_ctl10_M1Label_0\">0</span>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<span id=\"Bug604053ListView1_ctl10_M2Label_0\">0</span>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\r\n\t\t\n\t\t\t\t\t<tr style=\"\">\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<span id=\"Bug604053ListView1_ctl12_M1Label_1\">1</span>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<span id=\"Bug604053ListView1_ctl12_M2Label_1\">1</span>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\r\n\r\n\r\n</table>\r\n\n\t\t\t\t\t<table><tr><td>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t</td>\r\n\t</tr><tr><td style=\"\">\n\t\t\t\t\t\t\t\t<span id=\"Bug604053ListView1_DataPager1\"><input type=\"submit\" name=\"Bug604053ListView1$DataPager1$ctl00$ctl00\" value=\"First\" disabled=\"disabled\" /> <span>1</span> <a href=\"javascript:__doPostBack('Bug604053ListView1$DataPager1$ctl01$ctl01','')\">2</a> <a href=\"javascript:__doPostBack('Bug604053ListView1$DataPager1$ctl01$ctl02','')\">3</a> <a href=\"javascript:__doPostBack('Bug604053ListView1$DataPager1$ctl01$ctl03','')\">4</a> <a href=\"javascript:__doPostBack('Bug604053ListView1$DataPager1$ctl01$ctl04','')\">5</a> <input type=\"submit\" name=\"Bug604053ListView1$DataPager1$ctl02$ctl00\" value=\"Last\" /> </span>\n\t\t\t\t\t\t\t</td>\r\n\t</tr>\r\n\r\n</table>\r\n\n\t\t\t\t</span>\n\t\t\t<span id=\"Bug604053ListView2\"><table id=\"Bug604053ListView2_itemPlaceholderContainer\" border=\"0\" style=\"\"><tr style=\"\"><th>\n\t\t\t\t\t\t\t\t\t\t\tM1</th><th>\n\t\t\t\t\t\t\t\t\t\t\tM2</th>\r\n\t</tr>\n\t\t\t\t\t<tr style=\"\">\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<span id=\"Bug604053ListView2_ctl10_M1Label_0\">0</span>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<span id=\"Bug604053ListView2_ctl10_M2Label_0\">0</span>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\r\n\t\t\n\t\t\t\t\t<tr style=\"\">\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<span id=\"Bug604053ListView2_ctl12_M1Label_1\">1</span>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<span id=\"Bug604053ListView2_ctl12_M2Label_1\">1</span>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\r\n\r\n\r\n</table>\r\n\n\t\t\t\t\t<table><tr><td>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t</td>\r\n\t</tr><tr><td style=\"\">\n\t\t\t\t\t\t\t\t<span id=\"Bug604053ListView2_DataPager1\"><input type=\"submit\" name=\"Bug604053ListView2$DataPager1$ctl00$ctl00\" value=\"First\" disabled=\"disabled\" /> <input type=\"submit\" name=\"Bug604053ListView2$DataPager1$ctl00$ctl01\" value=\"Previous\" disabled=\"disabled\" /> <input type=\"submit\" name=\"Bug604053ListView2$DataPager1$ctl00$ctl02\" value=\"Next\" /> <input type=\"submit\" name=\"Bug604053ListView2$DataPager1$ctl00$ctl03\" value=\"Last\" /> </span>\n\t\t\t\t\t\t\t</td>\r\n\t</tr>\r\n\r\n</table>\r\n\n\t\t\t\t</span>";
+#else
+			string originalHtml = "<span id=\"Bug604053ListView1\"><table id=\"Bug604053ListView1_itemPlaceholderContainer\" border=\"0\" style=\"\"><tr style=\"\"><th>\n\t\t\t\t\t\t\t\t\t\t\tM1</th><th>\n\t\t\t\t\t\t\t\t\t\t\tM2</th>\r\n\t</tr>\n\t\t\t\t\t<tr style=\"\">\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<span id=\"Bug604053ListView1_ctl10_M1Label\">0</span>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<span id=\"Bug604053ListView1_ctl10_M2Label\">0</span>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\r\n\t\t\n\t\t\t\t\t<tr style=\"\">\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<span id=\"Bug604053ListView1_ctl12_M1Label\">1</span>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<span id=\"Bug604053ListView1_ctl12_M2Label\">1</span>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\r\n\r\n\r\n</table>\r\n\n\t\t\t\t\t<table><tr><td>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t</td>\r\n\t</tr><tr><td style=\"\">\n\t\t\t\t\t\t\t\t<span id=\"Bug604053ListView1_DataPager1\"><input type=\"submit\" name=\"Bug604053ListView1$DataPager1$ctl00$ctl00\" value=\"First\" disabled=\"disabled\" /> <span>1</span> <a href=\"javascript:__doPostBack('Bug604053ListView1$DataPager1$ctl01$ctl01','')\">2</a> <a href=\"javascript:__doPostBack('Bug604053ListView1$DataPager1$ctl01$ctl02','')\">3</a> <a href=\"javascript:__doPostBack('Bug604053ListView1$DataPager1$ctl01$ctl03','')\">4</a> <a href=\"javascript:__doPostBack('Bug604053ListView1$DataPager1$ctl01$ctl04','')\">5</a> <input type=\"submit\" name=\"Bug604053ListView1$DataPager1$ctl02$ctl00\" value=\"Last\" /> </span>\n\t\t\t\t\t\t\t</td>\r\n\t</tr>\r\n\r\n</table>\r\n\n\t\t\t\t</span>\n\t\t\t<span id=\"Bug604053ListView2\"><table id=\"Bug604053ListView2_itemPlaceholderContainer\" border=\"0\" style=\"\"><tr style=\"\"><th>\n\t\t\t\t\t\t\t\t\t\t\tM1</th><th>\n\t\t\t\t\t\t\t\t\t\t\tM2</th>\r\n\t</tr>\n\t\t\t\t\t<tr style=\"\">\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<span id=\"Bug604053ListView2_ctl10_M1Label\">0</span>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<span id=\"Bug604053ListView2_ctl10_M2Label\">0</span>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\r\n\t\t\n\t\t\t\t\t<tr style=\"\">\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<span id=\"Bug604053ListView2_ctl12_M1Label\">1</span>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<span id=\"Bug604053ListView2_ctl12_M2Label\">1</span>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\r\n\r\n\r\n</table>\r\n\n\t\t\t\t\t<table><tr><td>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t</td>\r\n\t</tr><tr><td style=\"\">\n\t\t\t\t\t\t\t\t<span id=\"Bug604053ListView2_DataPager1\"><input type=\"submit\" name=\"Bug604053ListView2$DataPager1$ctl00$ctl00\" value=\"First\" disabled=\"disabled\" /> <input type=\"submit\" name=\"Bug604053ListView2$DataPager1$ctl00$ctl01\" value=\"Previous\" disabled=\"disabled\" /> <input type=\"submit\" name=\"Bug604053ListView2$DataPager1$ctl00$ctl02\" value=\"Next\" /> <input type=\"submit\" name=\"Bug604053ListView2$DataPager1$ctl00$ctl03\" value=\"Last\" /> </span>\n\t\t\t\t\t\t\t</td>\r\n\t</tr>\r\n\r\n</table>\r\n\n\t\t\t\t</span>";
+#endif			
  			WebTest t = new WebTest ("ListViewTotalRowCount_Bug604053.aspx");
 			string pageHtml = t.Run ();
 			string renderedHtml = HtmlDiff.GetControlFromPageHtml (pageHtml);
diff --git a/mcs/class/System.Web.Extensions/Test/System.Web.UI/ChangeLog b/mcs/class/System.Web.Extensions/Test/System.Web.UI/ChangeLog
index 965e2fd..798241e 100644
--- a/mcs/class/System.Web.Extensions/Test/System.Web.UI/ChangeLog
+++ b/mcs/class/System.Web.Extensions/Test/System.Web.UI/ChangeLog
@@ -1,3 +1,11 @@
+2011-01-10  Marek Safar  <marek.safar at gmail.com>
+
+	Fixed more protected internal modifiers
+
+2011-01-10  Marek Safar  <marek.safar at gmail.com>
+
+	Fixed more missing protected internal modifiers
+
 2010-02-02  Marek Habersack  <mhabersack at novell.com>
 
 	* ScriptBehaviorDescriptorTest.cs,
diff --git a/mcs/class/System.Web.Extensions/Test/System.Web.UI/ChangeLog b/mcs/class/System.Web.Extensions/Test/System.Web.UI/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Web.Extensions/Test/System.Web.UI/ChangeLog
copy to mcs/class/System.Web.Extensions/Test/System.Web.UI/ChangeLog.old
diff --git a/mcs/class/System.Web.Extensions/Test/code/ChangeLog b/mcs/class/System.Web.Extensions/Test/code/ChangeLog
index 162bd40..675d77c 100644
--- a/mcs/class/System.Web.Extensions/Test/code/ChangeLog
+++ b/mcs/class/System.Web.Extensions/Test/code/ChangeLog
@@ -1,3 +1,12 @@
+2011-01-04  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Failing tests fixes.
+
+2011-01-04  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Added code to handle local resources copying in the test
+	suite
+
 2008-11-19  Marek Habersack  <mhabersack at novell.com>
 
 	* CountryCollection.cs, Country.cs: added
diff --git a/mcs/class/System.Web.Extensions/Test/code/ChangeLog b/mcs/class/System.Web.Extensions/Test/code/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Web.Extensions/Test/code/ChangeLog
copy to mcs/class/System.Web.Extensions/Test/code/ChangeLog.old
diff --git a/mcs/class/System.Web.Extensions/Test/code/WebTestLocal.cs b/mcs/class/System.Web.Extensions/Test/code/WebTestLocal.cs
new file mode 100644
index 0000000..cfe0765
--- /dev/null
+++ b/mcs/class/System.Web.Extensions/Test/code/WebTestLocal.cs
@@ -0,0 +1,20 @@
+using System;
+
+namespace MonoTests.SystemWeb.Framework
+{
+	public partial class WebTest
+	{
+		static partial void CopyResourcesLocal ()
+		{
+			Type myself = typeof (WebTest);
+#if !DOTNET
+			CopyResource (myself, "Web.mono.config", "Web.config");
+#endif
+#if NET_4_0
+			CopyResource (myself, "profile.config.4.0", "profile.config");
+#else
+			CopyResource (myself, "profile.config.2.0", "profile.config");
+#endif
+		}
+	}
+}
diff --git a/mcs/class/System.Web.Extensions/Test/resources/ListViewTest.aspx b/mcs/class/System.Web.Extensions/Test/resources/ListViewTest.aspx
index 004b104..12ee39e 100644
--- a/mcs/class/System.Web.Extensions/Test/resources/ListViewTest.aspx
+++ b/mcs/class/System.Web.Extensions/Test/resources/ListViewTest.aspx
@@ -1,5 +1,4 @@
 <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="MyPage.aspx.cs" Inherits="MyPage" %>
-<%@ Register Assembly="System.Web.Extensions_test_net_2_0" Namespace="MonoTests.System.Web.UI.WebControls" TagPrefix="t" %>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
 <html xmlns="http://www.w3.org/1999/xhtml">
diff --git a/mcs/class/System.Web.Extensions/Test/resources/Web.mono.config b/mcs/class/System.Web.Extensions/Test/resources/Web.mono.config
index b622ed1..3975e7b 100644
--- a/mcs/class/System.Web.Extensions/Test/resources/Web.mono.config
+++ b/mcs/class/System.Web.Extensions/Test/resources/Web.mono.config
@@ -56,11 +56,8 @@
             <error statusCode="404" redirect="FileNotFound.htm" />
         </customErrors>
         -->
-		<pages>
-			<controls>
-				<add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
-				<add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
-			</controls>
+		<pages configSource="profile.config">
+			<controls/>
 		</pages>
 		<httpHandlers>
 			<remove verb="*" path="*.asmx"/>
diff --git a/mcs/class/System.Web.Extensions/Test/resources/profile.config.2.0 b/mcs/class/System.Web.Extensions/Test/resources/profile.config.2.0
new file mode 100644
index 0000000..97ef369
--- /dev/null
+++ b/mcs/class/System.Web.Extensions/Test/resources/profile.config.2.0
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<pages>
+	<controls>
+		<add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
+		<add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
+		<add tagPrefix="t" namespace="MonoTests.System.Web.UI.WebControls" assembly="System.Web.Extensions_test_net_2_0"/>
+	</controls>
+</pages>
diff --git a/mcs/class/System.Web.Extensions/Test/resources/profile.config.4.0 b/mcs/class/System.Web.Extensions/Test/resources/profile.config.4.0
new file mode 100644
index 0000000..0a65227
--- /dev/null
+++ b/mcs/class/System.Web.Extensions/Test/resources/profile.config.4.0
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<pages>
+	<controls>
+		<add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
+		<add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
+		<add tagPrefix="t" namespace="MonoTests.System.Web.UI.WebControls" assembly="System.Web.Extensions_test_net_4_0"/>
+	</controls>
+</pages>
diff --git a/mcs/class/System.Web.Extensions_1.0/ChangeLog b/mcs/class/System.Web.Extensions_1.0/ChangeLog
index 4388441..a2a62ab 100644
--- a/mcs/class/System.Web.Extensions_1.0/ChangeLog
+++ b/mcs/class/System.Web.Extensions_1.0/ChangeLog
@@ -1,3 +1,8 @@
+2010-11-03  Marek Habersack  <grendel at twistedcode.net>
+
+	* System.Web.Extensions_1.0/Makefile: use the 1.0 Microsoft AJAX
+	library for this compat assembly
+
 2010-10-12  Sebastien Pouliot  <sebastien at ximian.com>
 
 	Adjust System.Web.Extensions[_1.0].dll.sources wrt
diff --git a/mcs/class/System.Web.Extensions_1.0/Makefile b/mcs/class/System.Web.Extensions_1.0/Makefile
index c6aad2b..87ccbd6 100644
--- a/mcs/class/System.Web.Extensions_1.0/Makefile
+++ b/mcs/class/System.Web.Extensions_1.0/Makefile
@@ -8,12 +8,12 @@ LIBRARY_NAME = System.Web.Extensions.dll
 LIBRARY_COMPAT = yes
 
 RESOURCE_FILES= \
-	../MicrosoftAjaxLibrary/System.Web.Extensions/3.5.0.0/3.5.21022.8/MicrosoftAjax.debug.js	\
-	../MicrosoftAjaxLibrary/System.Web.Extensions/3.5.0.0/3.5.21022.8/MicrosoftAjax.js		\
-	../MicrosoftAjaxLibrary/System.Web.Extensions/3.5.0.0/3.5.21022.8/MicrosoftAjaxTimer.debug.js	\
-	../MicrosoftAjaxLibrary/System.Web.Extensions/3.5.0.0/3.5.21022.8/MicrosoftAjaxTimer.js		\
-	../MicrosoftAjaxLibrary/System.Web.Extensions/3.5.0.0/3.5.21022.8/MicrosoftAjaxWebForms.debug.js\
-	../MicrosoftAjaxLibrary/System.Web.Extensions/3.5.0.0/3.5.21022.8/MicrosoftAjaxWebForms.js
+	../MicrosoftAjaxLibrary/System.Web.Extensions/1.0.61025.0/MicrosoftAjax.debug.js	\
+	../MicrosoftAjaxLibrary/System.Web.Extensions/1.0.61025.0/MicrosoftAjax.js		\
+	../MicrosoftAjaxLibrary/System.Web.Extensions/1.0.61025.0/MicrosoftAjaxTimer.debug.js	\
+	../MicrosoftAjaxLibrary/System.Web.Extensions/1.0.61025.0/MicrosoftAjaxTimer.js		\
+	../MicrosoftAjaxLibrary/System.Web.Extensions/1.0.61025.0/MicrosoftAjaxWebForms.debug.js\
+	../MicrosoftAjaxLibrary/System.Web.Extensions/1.0.61025.0/MicrosoftAjaxWebForms.js
 
 RESOURCE_FILES_DIST= \
 	../MicrosoftAjaxLibrary/System.Web.Extensions/3.5.0.0/3.5.21022.8/MicrosoftAjax.debug.js	\
@@ -34,6 +34,7 @@ LIB_MCS_FLAGS = \
 	-define:SYSTEM_WEB_EXTENSIONS	\
 	-r:$(corlib)	 		\
 	-r:System.dll 			\
+	-r:System.Core.dll		\
 	-r:System.Drawing.dll 		\
 	-r:System.Data.dll		\
 	-r:System.Xml.dll		\
diff --git a/mcs/class/System.Web.Routing/System.Web.Routing/ChangeLog b/mcs/class/System.Web.Routing/System.Web.Routing/ChangeLog
index bf6d07e..48cfc9f 100644
--- a/mcs/class/System.Web.Routing/System.Web.Routing/ChangeLog
+++ b/mcs/class/System.Web.Routing/System.Web.Routing/ChangeLog
@@ -1,3 +1,10 @@
+2011-01-14  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Make StopRoutingHandler actually stop the routing
+	instead of throwing an exception
+
+	Patch from Damir Simunic <damir.simunic at wa-research.ch>, thanks!
+
 2010-11-05  Marek Habersack  <grendel at twistedcode.net>
 
 	[asp.net,routing] Fix for bug #651593. Don't match all-literal
diff --git a/mcs/class/System.Web.Routing/System.Web.Routing/UrlRoutingModule.cs b/mcs/class/System.Web.Routing/System.Web.Routing/UrlRoutingModule.cs
index cf8465e..c1a5b2d 100644
--- a/mcs/class/System.Web.Routing/System.Web.Routing/UrlRoutingModule.cs
+++ b/mcs/class/System.Web.Routing/System.Web.Routing/UrlRoutingModule.cs
@@ -119,6 +119,9 @@ namespace System.Web.Routing
 			if (rd.RouteHandler == null)
 				throw new InvalidOperationException ("No  IRouteHandler is assigned to the selected route");
 
+			if (rd.RouteHandler is StopRoutingHandler)
+				return; //stop further processing
+			
 			var rc = new RequestContext (context, rd);
 
 			IHttpHandler http = rd.RouteHandler.GetHttpHandler (rc);
diff --git a/mcs/class/System.Web.Routing/Test/System.Web.Routing/ChangeLog b/mcs/class/System.Web.Routing/Test/System.Web.Routing/ChangeLog
index cf2f33e..6891907 100644
--- a/mcs/class/System.Web.Routing/Test/System.Web.Routing/ChangeLog
+++ b/mcs/class/System.Web.Routing/Test/System.Web.Routing/ChangeLog
@@ -1,3 +1,10 @@
+2011-01-14  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Make StopRoutingHandler actually stop the routing
+	instead of throwing an exception
+
+	Patch from Damir Simunic <damir.simunic at wa-research.ch>, thanks!
+
 2010-11-05  Marek Habersack  <grendel at twistedcode.net>
 
 	[asp.net,routing] Fix for bug #651593. Don't match all-literal
diff --git a/mcs/class/System.Web.Routing/Test/System.Web.Routing/UrlRoutingModuleTest.cs b/mcs/class/System.Web.Routing/Test/System.Web.Routing/UrlRoutingModuleTest.cs
index 7357f1a..a55d911 100644
--- a/mcs/class/System.Web.Routing/Test/System.Web.Routing/UrlRoutingModuleTest.cs
+++ b/mcs/class/System.Web.Routing/Test/System.Web.Routing/UrlRoutingModuleTest.cs
@@ -155,6 +155,17 @@ namespace MonoTests.System.Web.Routing
 #endif
 			// it internally stores the handler 
 		}
+		
+		[Test]
+		public void PostResolveRequestCacheStopRoutingHttpHandler ()
+		{
+			var m = new UrlRoutingModule ();
+			RouteTable.Routes.Add (new MyRoute ("foo/bar", new StopRoutingHandler ()));
+			var hc = new HttpContextStub3 ("~/foo/bar", String.Empty, "apppath", false);
+			m.PostResolveRequestCache (hc);
+			Assert.IsNull (hc.RewrittenPath, "StopRoutingHandler should stop before the path is rewritten");
+		}
+
 
 		[Test]
 		[Ignore ("looks like RouteExistingFiles ( = false) does not affect... so this test needs more investigation")]
diff --git a/mcs/class/System.Web.Services/ChangeLog b/mcs/class/System.Web.Services/ChangeLog
index 9717326..528730e 100644
--- a/mcs/class/System.Web.Services/ChangeLog
+++ b/mcs/class/System.Web.Services/ChangeLog
@@ -1,3 +1,16 @@
+2010-09-08  Jb Evain  <jbevain at gmail.com>
+
+	Fix the monodroid and monotouch profile builds
+
+2010-09-08  Jb Evain  <jbevain at gmail.com>
+
+	Factorize the System.Web.Services monotouch and monodroid sources
+	into a mobile.sources
+
+2010-09-08  Jb Evain  <jbevain at gmail.com>
+
+	Enable the System.Web.Services build for monodroid
+
 2010-06-04  Jb Evain  <jbevain at novell.com>
 
 	* monotouch_System.Web.Services.dll.sources: add HttpEncoder from
diff --git a/mcs/class/System.Web.Services/ChangeLog b/mcs/class/System.Web.Services/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Web.Services/ChangeLog
copy to mcs/class/System.Web.Services/ChangeLog.old
diff --git a/mcs/class/System.Web.Services/Makefile b/mcs/class/System.Web.Services/Makefile
index 9d109b7..666ebdb 100644
--- a/mcs/class/System.Web.Services/Makefile
+++ b/mcs/class/System.Web.Services/Makefile
@@ -3,7 +3,8 @@ SUBDIRS =
 include ../../build/rules.make
 
 LIBRARY = System.Web.Services.dll
-ifeq (monotouch, $(PROFILE))
+MOBILE := $(filter monotouch monodroid, $(PROFILE))
+ifdef MOBILE
 LIB_MCS_FLAGS = \
 	-nowarn:649 -nowarn:169			\
 	-r:$(corlib)				\
diff --git a/mcs/class/System.Web.Services/System.Web.Services.Description/ChangeLog b/mcs/class/System.Web.Services/System.Web.Services.Description/ChangeLog
index 847eb13..690c634 100644
--- a/mcs/class/System.Web.Services/System.Web.Services.Description/ChangeLog
+++ b/mcs/class/System.Web.Services/System.Web.Services.Description/ChangeLog
@@ -1,3 +1,11 @@
+2010-09-08  Jb Evain  <jbevain at gmail.com>
+
+	Fix the monodroid and monotouch profile builds
+
+2010-09-08  Jb Evain  <jbevain at gmail.com>
+
+	Enable the System.Web.Services build for monodroid
+
 2010-03-03  Lluis Sanchez Gual <lluis at novell.com> 
 
 	* ServiceDescriptionCollection.cs: When looking for bindings and other
diff --git a/mcs/class/System.Web.Services/System.Web.Services.Description/ChangeLog b/mcs/class/System.Web.Services/System.Web.Services.Description/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Web.Services/System.Web.Services.Description/ChangeLog
copy to mcs/class/System.Web.Services/System.Web.Services.Description/ChangeLog.old
diff --git a/mcs/class/System.Web.Services/System.Web.Services.Description/ExtensionManager.cs b/mcs/class/System.Web.Services/System.Web.Services.Description/ExtensionManager.cs
index 68661f7..1939641 100644
--- a/mcs/class/System.Web.Services/System.Web.Services.Description/ExtensionManager.cs
+++ b/mcs/class/System.Web.Services/System.Web.Services.Description/ExtensionManager.cs
@@ -73,9 +73,9 @@ namespace System.Web.Services.Description
 			RegisterExtensionType (typeof (Soap12OperationBinding));
 #endif
 
-#if !MONOTOUCH
+#if !MOBILE
 			/*
-			 * Currently, the MonoTouch build has not support for
+			 * Currently, the mobile profile has not support for
 			 * System.Configuration, so there are no external modules
 			 * defined
 			 */
@@ -169,9 +169,9 @@ namespace System.Web.Services.Description
 		}
 
 		/*
-		 * MonoTouch lacks support for configuration
+		 * The mobile profile lacks support for configuration
 		 */
-#if MONOTOUCH
+#if MOBILE
 		public static ArrayList BuildExtensionImporters ()
 		{
 			return new ArrayList (0);
diff --git a/mcs/class/System.Web.Services/System.Web.Services.Description/ServiceDescriptionImporter.cs b/mcs/class/System.Web.Services/System.Web.Services.Description/ServiceDescriptionImporter.cs
index e61a93c..120e9ca 100644
--- a/mcs/class/System.Web.Services/System.Web.Services.Description/ServiceDescriptionImporter.cs
+++ b/mcs/class/System.Web.Services/System.Web.Services.Description/ServiceDescriptionImporter.cs
@@ -42,7 +42,7 @@ using System.Collections;
 using System.Collections.Specialized;
 using System.Configuration;
 
-#if !MONOTOUCH
+#if !MOBILE
 using Microsoft.CSharp;
 #endif
 
@@ -56,7 +56,7 @@ namespace System.Web.Services.Description {
 		ServiceDescriptionCollection serviceDescriptions;
 		ServiceDescriptionImportStyle style;
 		
-#if NET_2_0 && !MONOTOUCH
+#if NET_2_0 && !MOBILE
 		CodeGenerationOptions options;
 		CodeDomProvider codeGenerator = new CSharpCodeProvider ();
 		ImportContext context;
@@ -100,7 +100,7 @@ namespace System.Web.Services.Description {
 			set { style = value; }
 		}
 		
-#if NET_2_0 && !MONOTOUCH
+#if NET_2_0 && !MOBILE
 		[System.Runtime.InteropServices.ComVisible(false)]
 		public CodeGenerationOptions CodeGenerationOptions {
 			get { return options; }
@@ -142,7 +142,7 @@ namespace System.Web.Services.Description {
 				schemas.Add (serviceDescription.Types.Schemas);
 		}
 
-#if !MONOTOUCH
+#if !MOBILE
 		public ServiceDescriptionImportWarnings Import (CodeNamespace codeNamespace, CodeCompileUnit codeCompileUnit)
 		{
 			foreach (ProtocolImporter importer in GetSupportedImporters ()) {
@@ -167,7 +167,7 @@ namespace System.Web.Services.Description {
 		}
 #endif
 		
-#if NET_2_0 && !MONOTOUCH
+#if NET_2_0 && !MOBILE
 
 		[MonoTODO] // where to use Verbose and Extensions in options?
 		public static StringCollection GenerateWebReferences (
diff --git a/mcs/class/System.Web.Services/System.Web.Services.Description/WebReference.cs b/mcs/class/System.Web.Services/System.Web.Services.Description/WebReference.cs
index 6919567..1115955 100644
--- a/mcs/class/System.Web.Services/System.Web.Services.Description/WebReference.cs
+++ b/mcs/class/System.Web.Services/System.Web.Services.Description/WebReference.cs
@@ -42,7 +42,7 @@ namespace System.Web.Services.Description
 	sealed class WebReference
 	{
 		DiscoveryClientDocumentCollection _documents;
-#if !TARGET_J2EE && !MONOTOUCH
+#if !TARGET_J2EE && !MOBILE
 		CodeNamespace _proxyCode;
 		ServiceDescriptionImportWarnings _warnings;
 #endif
@@ -51,7 +51,7 @@ namespace System.Web.Services.Description
 		string _appSettingBaseUrl;
 		StringCollection _validationWarnings;
 		
-#if !TARGET_J2EE && !MONOTOUCH
+#if !TARGET_J2EE && !MOBILE
 		public WebReference (DiscoveryClientDocumentCollection documents, CodeNamespace proxyCode)
 		{
 			if (documents == null) throw new ArgumentNullException ("documents");
@@ -94,7 +94,7 @@ namespace System.Web.Services.Description
 			get { return _protocolName; }
 			set { _protocolName = value; }
 		}
-#if !TARGET_J2EE && !MONOTOUCH
+#if !TARGET_J2EE && !MOBILE
 		public CodeNamespace ProxyCode {
 			get { return _proxyCode; }
 		}
diff --git a/mcs/class/System.Web.Services/System.Web.Services.Discovery/ChangeLog b/mcs/class/System.Web.Services/System.Web.Services.Discovery/ChangeLog
index bfc0804..e66d8ff 100644
--- a/mcs/class/System.Web.Services/System.Web.Services.Discovery/ChangeLog
+++ b/mcs/class/System.Web.Services/System.Web.Services.Discovery/ChangeLog
@@ -1,3 +1,7 @@
+2010-09-08  Jb Evain  <jbevain at gmail.com>
+
+	Enable the System.Web.Services build for monodroid
+
 2007-11-01  Atsushi Enomotot  <atsushi at ximian.com>
 
 	* DiscoveryClientProtocol.cs : without setting Url before resolve,
diff --git a/mcs/class/System.Web.Services/System.Web.Services.Discovery/ChangeLog b/mcs/class/System.Web.Services/System.Web.Services.Discovery/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Web.Services/System.Web.Services.Discovery/ChangeLog
copy to mcs/class/System.Web.Services/System.Web.Services.Discovery/ChangeLog.old
diff --git a/mcs/class/System.Web.Services/System.Web.Services.Discovery/DiscoveryClientProtocol.cs b/mcs/class/System.Web.Services/System.Web.Services.Discovery/DiscoveryClientProtocol.cs
index 1179a9e..87fae3c 100644
--- a/mcs/class/System.Web.Services/System.Web.Services.Discovery/DiscoveryClientProtocol.cs
+++ b/mcs/class/System.Web.Services/System.Web.Services.Discovery/DiscoveryClientProtocol.cs
@@ -37,7 +37,7 @@ using System.Xml.Schema;
 using System.Xml.Serialization;
 using System.Net;
 using System.Text.RegularExpressions;
-#if !MONOTOUCH
+#if !MOBILE
 using System.Web.Services.Description;
 #endif
 
@@ -150,7 +150,7 @@ namespace System.Web.Services.Discovery {
 					refe = new DiscoveryDocumentReference ();
 					AddDiscoReferences (doc);
 				}
-#if !MONOTOUCH
+#if !MOBILE
 				else if (ServiceDescription.CanRead (reader))
 				{
 					ServiceDescription wsdl = ServiceDescription.Read (reader);
diff --git a/mcs/class/System.Web.Services/System.Web.Services.Protocols/ChangeLog b/mcs/class/System.Web.Services/System.Web.Services.Protocols/ChangeLog
index a2e6d16..6278561 100644
--- a/mcs/class/System.Web.Services/System.Web.Services.Protocols/ChangeLog
+++ b/mcs/class/System.Web.Services/System.Web.Services.Protocols/ChangeLog
@@ -1,3 +1,7 @@
+2010-09-08  Jb Evain  <jbevain at gmail.com>
+
+	Enable the System.Web.Services build for monodroid
+
 2006-03-03  Lluis Sanchez Gual <lluis at novell.com> 
 
 	* Methods.cs: In BuildResponseReflectionMembers, use the operation
diff --git a/mcs/class/System.Web.Services/System.Web.Services.Protocols/ChangeLog b/mcs/class/System.Web.Services/System.Web.Services.Protocols/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Web.Services/System.Web.Services.Protocols/ChangeLog
copy to mcs/class/System.Web.Services/System.Web.Services.Protocols/ChangeLog.old
diff --git a/mcs/class/System.Web.Services/System.Web.Services.Protocols/HttpSoapWebServiceHandler.cs b/mcs/class/System.Web.Services/System.Web.Services.Protocols/HttpSoapWebServiceHandler.cs
index b4f8977..c7fb9b7 100644
--- a/mcs/class/System.Web.Services/System.Web.Services.Protocols/HttpSoapWebServiceHandler.cs
+++ b/mcs/class/System.Web.Services/System.Web.Services.Protocols/HttpSoapWebServiceHandler.cs
@@ -36,7 +36,7 @@ using System.Text;
 using System.IO;
 using System.Reflection;
 using System.Xml.Serialization;
-#if !MONOTOUCH
+#if !MOBILE
 using System.Web.Services.Description;
 #endif
 
diff --git a/mcs/class/System.Web.Services/System.Web.Services.Protocols/Methods.cs b/mcs/class/System.Web.Services/System.Web.Services.Protocols/Methods.cs
index 0821d02..afd4897 100644
--- a/mcs/class/System.Web.Services/System.Web.Services.Protocols/Methods.cs
+++ b/mcs/class/System.Web.Services/System.Web.Services.Protocols/Methods.cs
@@ -491,7 +491,7 @@ namespace System.Web.Services.Protocols {
 			xmlImporter.IncludeTypes (Type);
 			soapImporter.IncludeTypes (Type);
 
-#if MONOTOUCH
+#if MOBILE
 			SoapExtensions = new SoapExtensionRuntimeConfig [2][];
 #else
 			SoapExtensions = SoapExtension.GetTypeExtensions (Type);
diff --git a/mcs/class/System.Web.Services/System.Web.Services.Protocols/ServerType.cs b/mcs/class/System.Web.Services/System.Web.Services.Protocols/ServerType.cs
index f9600c6..544c9ee 100644
--- a/mcs/class/System.Web.Services/System.Web.Services.Protocols/ServerType.cs
+++ b/mcs/class/System.Web.Services/System.Web.Services.Protocols/ServerType.cs
@@ -221,7 +221,7 @@ namespace System.Web.Services.Protocols
 						soap12Protocol.Initialize ();
 					}
 					return soap12Protocol;
-#if !MONOTOUCH
+#if !MOBILE
 				case "HttpGet":
 					if (httpGetProtocol == null){
 						httpGetProtocol = new HttpGetTypeStubInfo (this);
diff --git a/mcs/class/System.Web.Services/System.Web.Services.Protocols/SoapExtension.cs b/mcs/class/System.Web.Services/System.Web.Services.Protocols/SoapExtension.cs
index 4f38b6b..854cc1a 100644
--- a/mcs/class/System.Web.Services/System.Web.Services.Protocols/SoapExtension.cs
+++ b/mcs/class/System.Web.Services/System.Web.Services.Protocols/SoapExtension.cs
@@ -111,7 +111,7 @@ namespace System.Web.Services.Protocols {
 			return pos;
 		}
 
-#if !MONOTOUCH
+#if !MOBILE
 		static void InitializeGlobalExtensions ()
 		{
 			globalExtensions = new ArrayList[2];
diff --git a/mcs/class/System.Web.Services/System.Web.Services/ChangeLog b/mcs/class/System.Web.Services/System.Web.Services/ChangeLog
index 9b11b54..044b820 100644
--- a/mcs/class/System.Web.Services/System.Web.Services/ChangeLog
+++ b/mcs/class/System.Web.Services/System.Web.Services/ChangeLog
@@ -1,3 +1,7 @@
+2010-09-08  Jb Evain  <jbevain at gmail.com>
+
+	Enable the System.Web.Services build for monodroid
+
 2007-10-05  Atsushi Enomoto  <atsushi at ximian.com>
 
 	* WebService.cs : Do not always expect HttpContext existence.
diff --git a/mcs/class/System.Web.Services/System.Web.Services/ChangeLog b/mcs/class/System.Web.Services/System.Web.Services/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Web.Services/System.Web.Services/ChangeLog
copy to mcs/class/System.Web.Services/System.Web.Services/ChangeLog.old
diff --git a/mcs/class/System.Web.Services/System.Web.Services/WebMethodAttribute.cs b/mcs/class/System.Web.Services/System.Web.Services/WebMethodAttribute.cs
index 876aac9..e319bb5 100644
--- a/mcs/class/System.Web.Services/System.Web.Services/WebMethodAttribute.cs
+++ b/mcs/class/System.Web.Services/System.Web.Services/WebMethodAttribute.cs
@@ -28,13 +28,13 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if !TARGET_J2EE && !MONOTOUCH
+#if !TARGET_J2EE && !MOBILE
 using System.EnterpriseServices;
 #endif
 
 namespace System.Web.Services {
 
-#if TARGET_J2EE || MONOTOUCH
+#if TARGET_J2EE || MOBILE
 	public enum TransactionOption {Disabled , NotSupported , Required , RequiresNew , Supported }
 #endif
 
diff --git a/mcs/class/System.Web.Services/monotouch_System.Web.Services.dll.sources b/mcs/class/System.Web.Services/mobile_System.Web.Services.dll.sources
similarity index 100%
copy from mcs/class/System.Web.Services/monotouch_System.Web.Services.dll.sources
copy to mcs/class/System.Web.Services/mobile_System.Web.Services.dll.sources
diff --git a/mcs/class/System.Web.Services/monodroid_System.Web.Services.dll.sources b/mcs/class/System.Web.Services/monodroid_System.Web.Services.dll.sources
new file mode 100644
index 0000000..9e39dcc
--- /dev/null
+++ b/mcs/class/System.Web.Services/monodroid_System.Web.Services.dll.sources
@@ -0,0 +1 @@
+#include mobile_System.Web.Services.dll.sources
diff --git a/mcs/class/System.Web.Services/monotouch_System.Web.Services.dll.sources b/mcs/class/System.Web.Services/monotouch_System.Web.Services.dll.sources
index b14648a..9e39dcc 100644
--- a/mcs/class/System.Web.Services/monotouch_System.Web.Services.dll.sources
+++ b/mcs/class/System.Web.Services/monotouch_System.Web.Services.dll.sources
@@ -1,152 +1 @@
-Assembly/AssemblyInfo.cs
-../../build/common/Consts.cs
-../../build/common/MonoTODOAttribute.cs
-System.Web.Services/WebServiceBindingAttribute.cs
-System.Web.Services/WebServiceAttribute.cs
-System.Web.Services.Protocols/SoapHttpClientProtocol.cs
-System.Web.Services.Protocols/HttpWebClientProtocol.cs
-System.Web.Services.Protocols/WebClientAsyncResult.cs
-System.Web.Services.Protocols/WebClientProtocol.cs
-System.Web.Services.Protocols/Methods.cs
-System.Web.Services.Protocols/TypeStubManager.cs
-System.Web.Services.Protocols/SoapClientMessage.cs
-System.Web.Services.Protocols/SoapExtension.cs
-System.Web.Services.Protocols/LogicalMethodInfo.cs
-System.Web.Services.Protocols/SoapMessage.cs
-System.Web.Services/WebMethodAttribute.cs
-System.Web.Services.Protocols/SoapParameterStyle.cs
-System.Web.Services.Description/SoapBindingUse.cs
-System.Web.Services.Protocols/SoapHeaderMapping.cs
-System.Web.Services.Protocols/SoapHeaderDirection.cs
-System.Web.Services.Protocols/SoapHeaderCollection.cs
-System.Web.Services.Description/SoapBindingStyle.cs
-System.Web.Services.Protocols/SoapServiceRoutingStyle.cs
-System.Web.Services.Protocols/SoapExtensionAttribute.cs
-System.Web.Services.Protocols/SoapException.cs
-System.Web.Services.Protocols/SoapHeader.cs
-System.Web.Services.Protocols/SoapMessageStage.cs
-System.Web.Services.Protocols/SoapHeaderAttribute.cs
-System.Web.Services.Protocols/ServerType.cs
-System.Web.Services.Protocols/LogicalMethodTypes.cs
-System.Web.Services/WebServicesDescriptionAttribute.cs
-System.Web.Services.Protocols/WebServiceHelper.cs
-System.Web.Services.Protocols/SoapDocumentMethodAttribute.cs
-System.Web.Services.Protocols/SoapDocumentServiceAttribute.cs
-System.Web.Services.Protocols/SoapRpcMethodAttribute.cs
-System.Web.Services.Protocols/SoapRpcServiceAttribute.cs
-System.Web.Services.Discovery/DiscoveryClientProtocol.cs
-System.Web.Services.Discovery/DiscoveryClientDocumentCollection.cs
-System.Web.Services.Discovery/DiscoveryDocument.cs
-System.Web.Services.Discovery/DiscoveryClientResultCollection.cs
-System.Web.Services.Discovery/DiscoveryClientResult.cs
-System.Web.Services.Discovery/DiscoveryExceptionDictionary.cs
-System.Web.Services.Discovery/DiscoveryClientReferenceCollection.cs
-System.Web.Services.Discovery/DiscoveryReference.cs
-System.Web.Services.Discovery/SoapBinding.cs
-System.Web.Services.Protocols/Fault.cs
-System.Web.Services.Protocols/InvokeCompletedEventArgs.cs
-System.Web.Services.Protocols/InvokeCompletedEventHandler.cs
-System.Web.Services.Protocols/SoapUnknownHeader.cs
-System.Web.Services/WsiProfiles.cs
-System.Web.Services.Protocols/SoapProtocolVersion.cs
-System.Web.Services.Protocols/SoapFaultSubcode.cs
-System.Web.Services.Protocols/Soap12FaultCodes.cs
-System.Web.Services.Protocols/Fault12.cs
-System.Web.Services.Protocols/MimeFormatter.cs
-System.Web.Services.Description/ServiceDescription.cs
-System.Web.Services.Description/NamedItem.cs
-System.Web.Services.Description/DocumentableItem.cs
-System.Web.Services.Description/ServiceDescriptionCollection.cs
-System.Web.Services.Description/ServiceCollection.cs
-System.Web.Services.Description/ServiceDescriptionBaseCollection.cs
-System.Web.Services.Description/ServiceDescriptionFormatExtension.cs
-System.Web.Services.Description/ServiceDescriptionFormatExtensionCollection.cs
-System.Web.Services.Description/Service.cs
-System.Web.Services.Description/Binding.cs
-System.Web.Services.Description/Port.cs
-System.Web.Services.Description/PortCollection.cs
-System.Web.Services.Description/MessageCollection.cs
-System.Web.Services.Description/Message.cs
-System.Web.Services.Description/MessagePart.cs
-System.Web.Services.Description/MessagePartCollection.cs
-System.Web.Services.Configuration/XmlFormatExtensionAttribute.cs
-System.Web.Services.Configuration/XmlFormatExtensionPointAttribute.cs
-System.Web.Services.Configuration/XmlFormatExtensionPrefixAttribute.cs
-System.Web.Services.Description/BindingCollection.cs
-System.Web.Services.Description/Import.cs
-System.Web.Services.Description/ImportCollection.cs
-System.Web.Services.Description/PortType.cs
-System.Web.Services.Description/PortTypeCollection.cs
-System.Web.Services.Description/OperationBinding.cs
-System.Web.Services.Description/OperationBindingCollection.cs
-System.Web.Services.Description/InputBinding.cs
-System.Web.Services.Description/OutputBinding.cs
-System.Web.Services.Description/MessageBinding.cs
-System.Web.Services.Description/FaultBindingCollection.cs
-System.Web.Services.Description/FaultBinding.cs
-System.Web.Services.Description/OperationCollection.cs
-System.Web.Services.Description/Operation.cs
-System.Web.Services.Description/Types.cs
-System.Web.Services.Description/OperationFault.cs
-System.Web.Services.Description/OperationFaultCollection.cs
-System.Web.Services.Description/OperationMessage.cs
-System.Web.Services.Description/OperationMessageCollection.cs
-System.Web.Services.Description/OperationFlow.cs
-System.Web.Services.Description/OperationInput.cs
-System.Web.Services.Description/OperationOutput.cs
-System.Web.Services.Description/ServiceDescriptionImporter.cs
-System.Web.Services.Description/WebReference.cs
-System.Web.Services.Description/ServiceDescriptionImportStyle.cs
-System.Web.Services.Discovery/DiscoveryDocumentReference.cs
-System.Web.Services.Discovery/ContractReference.cs
-System.Web.Services.Discovery/SchemaReference.cs
-System.Web.Services.Discovery/DiscoveryDocumentSerializer.cs
-
-System.Web.Services.Discovery/ContractSearchPattern.cs
-System.Web.Services.Discovery/DiscoveryDocumentLinksPattern.cs
-System.Web.Services.Discovery/DiscoveryDocumentSearchPattern.cs
-System.Web.Services.Discovery/DiscoveryReferenceCollection.cs
-System.Web.Services.Discovery/DiscoverySearchPattern.cs
-System.Web.Services.Discovery/DynamicDiscoveryDocument.cs
-System.Web.Services.Discovery/ExcludePathInfo.cs
-System.Web.Services.Discovery/XmlSchemaSearchPattern.cs
-
-System.Web.Services.Protocols/Fault12Serializer.cs
-System.Web.Services.Protocols/HttpMethodAttribute.cs
-System.Web.Services.Protocols/NopReturnReader.cs
-System.Web.Services.Protocols/MimeReturnReader.cs
-System.Web.Services.Protocols/XmlReturnReader.cs
-System.Web.Services.Protocols/UrlParameterWriter.cs
-System.Web.Services.Protocols/UrlEncodedParameterWriter.cs
-System.Web.Services.Protocols/MimeParameterWriter.cs
-System.Web.Services.Description/SoapBinding.cs
-System.Web.Services.Description/Soap12Binding.cs
-System.Web.Services.Description/HttpBinding.cs
-System.Web.Services.Description/MimeContentBinding.cs
-System.Web.Services.Description/MimeTextBinding.cs
-System.Web.Services.Description/MimeTextMatch.cs
-System.Web.Services.Description/MimeTextMatchCollection.cs
-System.Web.Services.Description/ExtensionManager.cs
-System.Web.Services.Description/ServiceDescriptionSerializerBase2.cs
-../System.Web/System.Web.Util/Helpers.cs
-../System.Web/System.Web.Util/HttpEncoder.cs
-../System.Web/System.Web/HttpUtility.cs
-System.Web.Services.Description/MimePart.cs
-System.Web.Services.Description/MimePartCollection.cs
-System.Web.Services.Description/HttpAddressBinding.cs
-System.Web.Services.Description/HttpOperationBinding.cs
-System.Web.Services.Description/HttpUrlEncodedBinding.cs
-System.Web.Services.Description/HttpUrlReplacementBinding.cs
-System.Web.Services.Description/MimeMultipartRelatedBinding.cs
-System.Web.Services.Description/MimeXmlBinding.cs
-System.Web.Services.Description/SoapAddressBinding.cs
-System.Web.Services.Description/SoapBodyBinding.cs
-System.Web.Services.Description/SoapFaultBinding.cs
-System.Web.Services.Description/SoapHeaderBinding.cs
-System.Web.Services.Description/SoapOperationBinding.cs
-System.Web.Services.Description/Soap12AddressBinding.cs
-System.Web.Services.Description/Soap12BodyBinding.cs
-System.Web.Services.Description/Soap12FaultBinding.cs
-System.Web.Services.Description/Soap12HeaderBinding.cs
-System.Web.Services.Description/Soap12OperationBinding.cs
-System.Web.Services.Description/SoapHeaderFaultBinding.cs
+#include mobile_System.Web.Services.dll.sources
diff --git a/mcs/class/System.Web/Assembly/AssemblyInfo.cs b/mcs/class/System.Web/Assembly/AssemblyInfo.cs
index 400dccd..d62fb7f 100644
--- a/mcs/class/System.Web/Assembly/AssemblyInfo.cs
+++ b/mcs/class/System.Web/Assembly/AssemblyInfo.cs
@@ -94,7 +94,6 @@ using System.Web.UI;
 #endif
 
 [assembly: InternalsVisibleTo ("System.Web.Extensions, PublicKey=0024000004800000940000000602000000240000525341310004000001000100b5fc90e7027f67871e773a8fde8938c81dd402ba65b9201d60593e96c492651e889cc13f1415ebb53fac1131ae0bd333c5ee6021672d9718ea31a8aebd0da0072f25d87dba6fc90ffd598ed4da35e44c398c454307e8e33b8426143daec9f596836f97c8f74750e5975c64e2189f45def46b2a2b1247adc3652bf5c308055da9")]
-[assembly: InternalsVisibleTo ("System.Web.DynamicData, PublicKey=0024000004800000940000000602000000240000525341310004000001000100b5fc90e7027f67871e773a8fde8938c81dd402ba65b9201d60593e96c492651e889cc13f1415ebb53fac1131ae0bd333c5ee6021672d9718ea31a8aebd0da0072f25d87dba6fc90ffd598ed4da35e44c398c454307e8e33b8426143daec9f596836f97c8f74750e5975c64e2189f45def46b2a2b1247adc3652bf5c308055da9")]
 
 #endif
 
@@ -144,6 +143,9 @@ using System.Web.UI;
 [assembly: WebResource ("computer.gif", "image/gif")]
 [assembly: WebResource ("TreeView.js", "text/javascript")]
 [assembly: WebResource ("Menu.js", "text/javascript")]
+#if NET_4_0
+[assembly: WebResource ("MenuModern.js", "text/javascript")]
+#endif
 [assembly: WebResource ("GridView.js", "text/javascript")]
 [assembly: WebResource ("webform.js", "text/javascript")]
 [assembly: WebResource ("WebUIValidation_2.0.js", "text/javascript")]
diff --git a/mcs/class/System.Web/Assembly/ChangeLog b/mcs/class/System.Web/Assembly/ChangeLog
index d040107..ed5c7c8 100644
--- a/mcs/class/System.Web/Assembly/ChangeLog
+++ b/mcs/class/System.Web/Assembly/ChangeLog
@@ -1,3 +1,12 @@
+2011-01-08  Marek Safar  <marek.safar at gmail.com>
+
+	Fixed missing protected internal modifier
+
+2010-09-08  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Onobtrusive JavaScript for the 4.0 Menu control List
+	mode
+
 2010-05-05  Marek Habersack  <mhabersack at novell.com>
 
 	* AssemblyInfo.cs: 4.0 metadata updates
diff --git a/mcs/class/System.Web/Assembly/ChangeLog b/mcs/class/System.Web/Assembly/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Web/Assembly/ChangeLog
copy to mcs/class/System.Web/Assembly/ChangeLog.old
diff --git a/mcs/class/System.Web/ChangeLog b/mcs/class/System.Web/ChangeLog
index bdf3ee8..329c323 100644
--- a/mcs/class/System.Web/ChangeLog
+++ b/mcs/class/System.Web/ChangeLog
@@ -1,8 +1,79 @@
+2011-01-13  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Implemented the 4.0 type,
+	FileLevelMasterPageControlBuilder
+
+2011-01-11  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Fix for bug #662918. Do not create the HtmlTitle child
+	control for HtmlHead if <title> wasn't used in the page code.
+
+2011-01-05  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Rewrote CacheItemPriorityQueue tests generator to
+	produce simpler test case.
+
+	The new test case uses arrays and postpones creation of
+	CacheItemPriorityQueueTestItem and TestCacheItem instances till
+	the actual test is ran. This reduces complexity of the
+	CacheItemPrioritQueueTest class constructor and allows the code to
+	run successfully on 32 bit machines.
+
+2011-01-04  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Don't attempt to use System.Web resources in
+	System.Web.Extensions test build
+
+	WebTest is now a partial class and every code outside System.Web
+	that uses it can copy its own resources in addition to the common
+	ones by implementing the CopyResourcesLocal partial method.
+
+2010-12-14  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Added verbose mode to the standalone test runner
+
+2010-12-13  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Test suite configuration updates for 4.0
+
+	When running the tests on the 4.0 profile, the configuration must
+	no longer include the System.Web.Extensions section declarations
+	as they are merged with machine.config right now.
+
+2010-11-12  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Add a default implementation of SpinWait when SplitOrderedList is
+	built with Sys.Web 2.0 and add it to the build
+
+2010-11-16  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] New version of code to purge underused entries from the
+	cache.
+
+	This version uses an LRU cache to hold the cache items. Priority
+	is not taken into account when removing the underused entries
+	(with the exception of the CacheItemPriority.NotRemovable - items
+	with this priority are never purged), they are treated equally. A
+	separate thread is not used to perform purging, instead the
+	collection happens in the current requests's thread. Minor
+	improvements to cache item enumerator and to the CheckDependencies
+	method.
+
 2010-11-02  Marek Habersack  <grendel at twistedcode.net>
 
 	[asp.net] 4.0-only types don't need the NET_4_0 ifdef and should
 	be in net_4_0_System.Web.dll.sources
 
+2010-10-29  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Fix for bug #646505. BoundField must not assume the
+	sender of the OnDataBindField is DataControlFieldCell.
+
+2010-10-28  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Fix for bug #646810. Implemented
+	FormsAuthentication.EnableFormsAUthentication + tests
+
 2010-10-12  Sebastien Pouliot  <sebastien at ximian.com>
 
 	* Makefile: Compile tests with TEST defined (to include
@@ -16,6 +87,23 @@
 
 	Normalization of cryptographic uses in asp.net
 
+2010-09-10  Andrew Jorgensen  <ajorgensen at novell.com>
+
+	Dist the 2.0 resource files also
+
+2010-09-08  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Onobtrusive JavaScript for the 4.0 Menu control List
+	mode
+
+2010-08-19  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Menu 4.0 List mode rendering
+
+2010-09-03  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Added first test for Menu list rendering in 4.0
+
 2010-08-24  Marek Habersack  <grendel at twistedcode.net>
 
 	[asp.net] Fix for bug #633756. Children processed as properties
diff --git a/mcs/class/System.Web/Makefile b/mcs/class/System.Web/Makefile
index 9621c48..395d004 100644
--- a/mcs/class/System.Web/Makefile
+++ b/mcs/class/System.Web/Makefile
@@ -73,6 +73,9 @@ RESOURCE_FILES_2 = \
 	System.Web.UI.WebControls/TreeView.js \
 	System.Web.UI.WebControls/Menu.js
 
+RESOURCE_FILES_4 = \
+	System.Web.UI.WebControls/MenuModern.js
+
 OTHER_RES = $(RESOURCE_FILES_1)
 TEST_APP_CODE_FILES = \
 	Test/mainsoft/NunitWebResources/App_Code/EnumConverterControl.cs \
@@ -92,7 +95,7 @@ TEST_RESOURCE_FILES = \
 	Test/mainsoft/NunitWeb/NunitWeb/Resources/MyPage.aspx.cs \
 	Test/mainsoft/NunitWeb/NunitWeb/Resources/MyPageWithMaster.aspx \
 	Test/mainsoft/NunitWeb/NunitWeb/Resources/Web.mono.config \
-	Test/mainsoft/NunitWeb/NunitWeb/Resources/Web.mono.config.1.1 \
+	Test/mainsoft/NunitWeb/NunitWeb/Resources/Web.mono.config.4.0 \
 	Test/mainsoft/NunitWeb/NunitWeb/Resources/sub_map_01.sitemap \
 	Test/mainsoft/NunitWeb/NunitWeb/Resources/test_map_01.sitemap \
 	Test/mainsoft/NunitWeb/NunitWeb/Resources/test_map_02.sitemap \
@@ -229,7 +232,10 @@ TEST_RESOURCE_FILES = \
 	Test/mainsoft/NunitWebResources/CheckBoxField_Bug595568_6.aspx \
 	Test/mainsoft/NunitWebResources/CheckBoxField_Bug595568_7.aspx \
 	Test/mainsoft/NunitWebResources/GridView_Bug595567.aspx \
-	Test/mainsoft/NunitWebResources/CheckBoxList_Bug600415.aspx
+	Test/mainsoft/NunitWebResources/CheckBoxList_Bug600415.aspx \
+	Test/mainsoft/NunitWebResources/BoundField_Bug646505.aspx \
+	Test/mainsoft/NunitWebResources/BoundField_Bug646505.aspx.cs \
+	Test/mainsoft/NunitWebResources/HtmlTitleCodeRender_Bug662918.aspx
 
 RESX_DIST =  resources/TranslationResources.resx
 ifneq (1, $(FRAMEWORK_VERSION_MAJOR))
@@ -247,6 +253,7 @@ endif
 
 ifeq (4, $(FRAMEWORK_VERSION_MAJOR))
 OTHER_LIB_MCS_FLAGS += -r:System.Web.ApplicationServices.dll
+OTHER_RES += $(RESOURCE_FILES_4)
 endif
 
 LIB_MCS_FLAGS = \
@@ -291,6 +298,7 @@ TEST_MCS_FLAGS += -r:System.Web.Extensions.dll -d:TEST
 endif
 
 EXTRA_DISTFILES = \
+	$(RESOURCE_FILES_4) \
 	$(RESOURCE_FILES_2) \
 	$(RESOURCE_FILES_1) \
 	$(TEST_RESOURCE_FILES) \
@@ -366,6 +374,15 @@ STANDALONE_TEST_COMPILABLE_TESTS = \
 	ApplicationPreStartMethods/test_06 \
 	ApplicationPreStartMethods/test_07 \
 	ApplicationPreStartMethods/test_08 \
+	EnableFormsAuthentication/Test_01 \
+	EnableFormsAuthentication/Test_02 \
+	EnableFormsAuthentication/Test_03 \
+	EnableFormsAuthentication/Test_04 \
+	EnableFormsAuthentication/Test_05 \
+	EnableFormsAuthentication/Test_06 \
+	EnableFormsAuthentication/Test_07 \
+	EnableFormsAuthentication/Test_08 \
+	EnableFormsAuthentication/Test_09 \
 	RegisterBuildProvider \
 	PageParserDefaultTypeProperties
 endif
@@ -375,6 +392,9 @@ RUN_STANDALONE = $(TEST_RUNTIME) $(STANDALONE_TEST_RUNNER) --output=StandaloneTe
 ifdef TESTNAME
 RUN_STANDALONE += --test=$(TESTNAME)
 endif
+ifdef STANDALONE_VERBOSE
+RUN_STANDALONE += --verbose
+endif
 
 $(build_lib): $(RESX_RES) $(RESOURCE_FILES_2) $(RESOURCE_FILES_1)
 
diff --git a/mcs/class/System.Web/System.Web.Caching/Cache.cs b/mcs/class/System.Web/System.Web.Caching/Cache.cs
index 4245be0..e7fdfcf 100644
--- a/mcs/class/System.Web/System.Web.Caching/Cache.cs
+++ b/mcs/class/System.Web/System.Web.Caching/Cache.cs
@@ -31,6 +31,7 @@
 using System.Threading;
 using System.Collections;
 using System.Collections.Generic;
+using System.Linq;
 using System.Security.Permissions;
 using System.Web.Configuration;
 
@@ -40,6 +41,9 @@ namespace System.Web.Caching
 	[AspNetHostingPermission (SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
 	public sealed class Cache: IEnumerable
 	{
+		const int LOW_WATER_MARK = 10000; // Target number of items if high water mark is reached
+		const int HIGH_WATER_MARK = 15000; // We start collection after exceeding this count
+		
 		public static readonly DateTime NoAbsoluteExpiration = DateTime.MaxValue;
 		public static readonly TimeSpan NoSlidingExpiration = TimeSpan.Zero;
 
@@ -58,7 +62,7 @@ namespace System.Web.Caching
 		// Thread.Abort happened right after that during the stloc instruction to set the
 		// boolean flag. Once CERs are supported we can use the boolean flag reliably.
 		ReaderWriterLockSlim cacheLock;
-		Dictionary <string, CacheItem> cache;
+		CacheItemLRU cache;
 		CacheItemPriorityQueue timedItems;
 		Timer expirationTimer;
 		long expirationTimerPeriod = 0;
@@ -124,7 +128,7 @@ namespace System.Web.Caching
 		public Cache ()
 		{
 			cacheLock = new ReaderWriterLockSlim ();
-			cache = new Dictionary <string, CacheItem> (StringComparer.Ordinal);
+			cache = new CacheItemLRU (this, HIGH_WATER_MARK, LOW_WATER_MARK);
 		}
 
 		public int Count {
@@ -136,25 +140,13 @@ namespace System.Web.Caching
 			set { Insert (key, value); }
 		}
 
-		CacheItem GetCacheItem (string key)
-		{
-			if (key == null)
-				return null;
-			
-			CacheItem ret;
-			if (cache.TryGetValue (key, out ret))
-				return ret;
-			return null;
-		}
-
+		// Must ALWAYS be called with the cache write lock held
 		CacheItem RemoveCacheItem (string key)
 		{
 			if (key == null)
 				return null;
 
-			CacheItem ret = null;
-			if (!cache.TryGetValue (key, out ret))
-				return null;
+			CacheItem ret = cache [key];
 			if (timedItems != null)
 				timedItems.OnItemDisable (ret);
 			
@@ -171,7 +163,7 @@ namespace System.Web.Caching
 			
 			try {
 				cacheLock.EnterWriteLock ();
-				CacheItem it = GetCacheItem (key);
+				CacheItem it = cache [key];
 
 				if (it != null)
 					return it.Value;
@@ -188,7 +180,7 @@ namespace System.Web.Caching
 		{
 			try {
 				cacheLock.EnterUpgradeableReadLock ();
-				CacheItem it = GetCacheItem (key);
+				CacheItem it = cache [key];
 				if (it == null)
 					return null;
 				
@@ -299,7 +291,7 @@ namespace System.Web.Caching
 				if (doLock)
 					cacheLock.EnterWriteLock ();
 				
-				ci = GetCacheItem (key);
+				ci = cache [key];
 				if (ci != null)
 					SetItemTimeout (ci, absoluteExpiration, slidingExpiration, ci.OnRemoveCallback, null, key, false);
 			} finally {
@@ -329,18 +321,17 @@ namespace System.Web.Caching
 			try {
 				if (doLock)
 					cacheLock.EnterWriteLock ();
-				
-				if (ci.Timer != null) {
-					ci.Timer.Dispose ();
-					ci.Timer = null;
-				}
 
-				if (key != null)
+				if (key != null) {
 					cache [key] = ci;
+					cache.EvictIfNecessary ();
+				}
 				
 				ci.LastChange = DateTime.Now;
-				if (!disableExpiration && ci.AbsoluteExpiration != NoAbsoluteExpiration)
+				if (!disableExpiration && ci.AbsoluteExpiration != NoAbsoluteExpiration) {
+					ci.IsTimedItem = true;
 					EnqueueTimedItem (ci);
+				}
 			} finally {
 				if (doLock) {
 					// See comment at the top of the file, above cacheLock declaration
@@ -380,7 +371,7 @@ namespace System.Web.Caching
 			return Remove (key, CacheItemRemovedReason.Removed, true, true);
 		}
 		
-		object Remove (string key, CacheItemRemovedReason reason, bool doLock, bool invokeCallback)
+		internal object Remove (string key, CacheItemRemovedReason reason, bool doLock, bool invokeCallback)
 		{
 			CacheItem it = null;
 			try {
@@ -395,11 +386,8 @@ namespace System.Web.Caching
 				}
 			}
 
+			object ret = null;
 			if (it != null) {
-				Timer t = it.Timer;
-				if (t != null)
-					t.Dispose ();
-				
 				if (it.Dependency != null) {
 					it.Dependency.SetCache (null);
 					it.Dependency.DependencyChanged -= new EventHandler (OnDependencyChanged);
@@ -412,38 +400,25 @@ namespace System.Web.Caching
 						//TODO: anything to be done here?
 					}
 				}
-				object ret = it.Value;
+				ret = it.Value;
 				it.Value = null;
 				it.Key = null;
 				it.Dependency = null;
 				it.OnRemoveCallback = null;
 				it.OnUpdateCallback = null;
+				it = null;
+			}
 
-				return ret;
-			} else
-				return null;
+			return ret;
 		}
 
 		// Used when shutting down the application so that
 		// session_end events are sent for all sessions.
 		internal void InvokePrivateCallbacks ()
 		{
-			CacheItemRemovedReason reason = CacheItemRemovedReason.Removed;
 			try {
 				cacheLock.EnterReadLock ();
-				foreach (string key in cache.Keys) {
-					CacheItem item = GetCacheItem (key);
-					if (item.Disabled)
-						continue;
-					
-					if (item != null && item.OnRemoveCallback != null) {
-						try {
-							item.OnRemoveCallback (key, item.Value, reason);
-						} catch {
-							//TODO: anything to be done here?
-						}
-					}
-				}
+				cache.InvokePrivateCallbacks ();
 			}  finally {
 				// See comment at the top of the file, above cacheLock declaration
 				cacheLock.ExitReadLock ();
@@ -452,11 +427,10 @@ namespace System.Web.Caching
 
 		public IDictionaryEnumerator GetEnumerator ()
 		{
-			ArrayList list = new ArrayList ();
+			List <CacheItem> list = null;
 			try {
 				cacheLock.EnterReadLock ();
-				foreach (CacheItem it in cache.Values)
-					list.Add (it);
+				list = cache.ToList ();
 			} finally {
 				// See comment at the top of the file, above cacheLock declaration
 				cacheLock.ExitReadLock ();
@@ -530,23 +504,34 @@ namespace System.Web.Caching
 		void ExpireItems (object data)
 		{
 			DateTime now = DateTime.Now;
-			CacheItem item = timedItems.Peek ();
+			CacheItem item = null;
 
+			expirationTimer.Change (Timeout.Infinite, Timeout.Infinite);
 			try {
 				cacheLock.EnterWriteLock ();
-
-				while (item != null) {
+				while (true) {
+					item = timedItems.Peek ();
+					
+					if (item == null) {
+						if (timedItems.Count == 0)
+							break;
+						
+						timedItems.Dequeue ();
+						continue;
+					}
+						
 					if (!item.Disabled && item.ExpiresAt > now.Ticks)
 						break;
+					
 					if (item.Disabled) {
 						item = timedItems.Dequeue ();
 						continue;
 					}
 
 					item = timedItems.Dequeue ();
-					if (!NeedsUpdate (item, CacheItemUpdateReason.Expired, false))
-						Remove (item.Key, CacheItemRemovedReason.Expired, false, true);
-					item = timedItems.Peek ();
+					if (item != null)
+						if (!NeedsUpdate (item, CacheItemUpdateReason.Expired, false))
+							Remove (item.Key, CacheItemRemovedReason.Expired, false, true);
 				}
 			} finally {
 				// See comment at the top of the file, above cacheLock declaration
@@ -555,10 +540,10 @@ namespace System.Web.Caching
 
 			if (item != null) {
 				long remaining = Math.Max (0, (long)(item.AbsoluteExpiration - now).TotalMilliseconds);
-				if (expirationTimerPeriod != remaining && remaining > 0) {
+				if (remaining > 0 && expirationTimerPeriod > remaining)
 					expirationTimerPeriod = remaining;
-					expirationTimer.Change (expirationTimerPeriod, expirationTimerPeriod);
-				}
+				
+				expirationTimer.Change (expirationTimerPeriod, expirationTimerPeriod);
 				return;
 			}
 
@@ -568,17 +553,20 @@ namespace System.Web.Caching
 		
 		internal void CheckDependencies ()
 		{
-			IList list;
 			try {
 				cacheLock.EnterWriteLock ();
-				list = new List <CacheItem> ();
-				foreach (CacheItem it in cache.Values)
-					list.Add (it);
-			
-				foreach (CacheItem it in list) {
+				List <CacheItem> list = cache.SelectItems (it => {
+					if (it == null)
+						return false;
 					if (it.Dependency != null && it.Dependency.HasChanged && !NeedsUpdate (it, CacheItemUpdateReason.DependencyChanged, false))
-						Remove (it.Key, CacheItemRemovedReason.DependencyChanged, false, true);
-				}
+						return true;
+					return false;
+				});
+				
+				foreach (CacheItem it in list)
+					Remove (it.Key, CacheItemRemovedReason.DependencyChanged, false, true);
+				list.Clear ();
+				list.TrimExcess ();
 			} finally {
 				// See comment at the top of the file, above cacheLock declaration
 				cacheLock.ExitWriteLock ();
@@ -589,7 +577,7 @@ namespace System.Web.Caching
 		{
 			try {
 				cacheLock.EnterReadLock ();
-				CacheItem it = GetCacheItem (key);
+				CacheItem it = cache [key];
 
 				if (it == null)
 					return DateTime.MaxValue;
diff --git a/mcs/class/System.Web/System.Web.Caching/CacheItem.cs b/mcs/class/System.Web/System.Web.Caching/CacheItem.cs
index 32629a8..9ac62f1 100644
--- a/mcs/class/System.Web/System.Web.Caching/CacheItem.cs
+++ b/mcs/class/System.Web/System.Web.Caching/CacheItem.cs
@@ -31,7 +31,7 @@ using System.Threading;
 
 namespace System.Web.Caching
 {
-	sealed class CacheItem
+	class CacheItem
 	{
 		public object Value;
 		public string Key;
@@ -44,17 +44,19 @@ namespace System.Web.Caching
 		public DateTime LastChange;
 		public long ExpiresAt;
 		public bool Disabled;
-		public Timer Timer;
+		public bool IsTimedItem;
+#if DEBUG
 		public Guid Guid;
-		
+
 		public CacheItem ()
 		{
 			Guid = Guid.NewGuid ();
 		}
-		
+
 		public override string ToString ()
 		{
 			return String.Format ("CacheItem [{0}]\n[{1}][{2}][{3}]", this.Guid, Key, Disabled, ExpiresAt > 0 ? new DateTime (ExpiresAt).ToString () : "0");
 		}
+#endif
 	}
 }
diff --git a/mcs/class/System.Web/System.Web.Caching/CacheItemEnumerator.cs b/mcs/class/System.Web/System.Web.Caching/CacheItemEnumerator.cs
index 3c31290..0995157 100644
--- a/mcs/class/System.Web/System.Web.Caching/CacheItemEnumerator.cs
+++ b/mcs/class/System.Web/System.Web.Caching/CacheItemEnumerator.cs
@@ -4,7 +4,7 @@
 // Author(s):
 //  Lluis Sanchez <lluis at ximian.com>
 //
-// (C) 2005-2009 Novell, Inc (http://novell.com)
+// (C) 2005-2010 Novell, Inc (http://novell.com)
 //
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -28,15 +28,16 @@
 //
 using System;
 using System.Collections;
+using System.Collections.Generic;
 
 namespace System.Web.Caching
 {
 	sealed class CacheItemEnumerator: IDictionaryEnumerator
 	{
-		ArrayList list;
+		List <CacheItem> list;
 		int pos = -1;
 		
-		public CacheItemEnumerator (ArrayList list)
+		public CacheItemEnumerator (List <CacheItem> list)
 		{
 			this.list = list;
 		}
@@ -45,7 +46,7 @@ namespace System.Web.Caching
 			get {
 				if (pos < 0 || pos >= list.Count)
 					throw new InvalidOperationException ();
-				return list [pos] as CacheItem;
+				return list [pos];
 			}
 		}
 		
diff --git a/mcs/class/System.Web/System.Web.Caching/CacheItemLRU.cs b/mcs/class/System.Web/System.Web.Caching/CacheItemLRU.cs
new file mode 100644
index 0000000..b31bfad
--- /dev/null
+++ b/mcs/class/System.Web/System.Web.Caching/CacheItemLRU.cs
@@ -0,0 +1,201 @@
+//
+// A simple LRU cache used for tracking the cache items
+//
+// Authors:
+//   Miguel de Icaza (miguel at gnome.org)
+//
+// Copyright 2010 Miguel de Icaza
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+using System;
+using System.Collections.Generic;
+
+namespace System.Web.Caching
+{
+	sealed class CacheItemLRU
+	{
+		public delegate bool SelectItemsQualifier (CacheItem item);
+		
+		Dictionary<string, LinkedListNode <CacheItem>> dict;
+		Dictionary<LinkedListNode<CacheItem>, string> revdict;
+		LinkedList<CacheItem> list;
+		Cache owner;
+		
+		// High/Low water mark is here to avoid situations when we hit a limit, evict an
+		// entry, add another one and have to evict again because the limit was hit. When we
+		// hit the high water limit, we evict until we reach the low water mark to avoid the
+		// situation.
+		int highWaterMark, lowWaterMark;
+		bool needsEviction;
+
+		public int Count {
+			get { return dict.Count; }
+		}
+
+		public CacheItemLRU (Cache owner, int highWaterMark, int lowWaterMark)
+		{
+			list = new LinkedList<CacheItem> ();
+			dict = new Dictionary<string, LinkedListNode<CacheItem>> (StringComparer.Ordinal);
+			revdict = new Dictionary<LinkedListNode<CacheItem>, string> ();
+			
+			this.highWaterMark = highWaterMark;
+			this.lowWaterMark = lowWaterMark;
+			this.owner = owner;
+		}
+
+		public bool TryGetValue (string key, out CacheItem value)
+		{
+			LinkedListNode <CacheItem> item;
+			
+			if (dict.TryGetValue (key, out item)) {
+				value = item.Value;
+				return true;
+			}
+			value = null;
+			return false;
+		}
+
+		// Must ALWAYS be called with the owner's write lock held
+		public void EvictIfNecessary ()
+		{
+			if (!needsEviction)
+				return;
+
+			for (int i = dict.Count; i > lowWaterMark; i--) {
+				var key = revdict [list.Last];
+
+				owner.Remove (key, CacheItemRemovedReason.Underused, false, true);
+			}
+		}
+
+		// Must ALWAYS be called with the owner's read lock held
+		public void InvokePrivateCallbacks ()
+		{
+			foreach (var de in dict) {
+				CacheItem item = de.Value.Value;
+				if (item == null || item.Disabled)
+					continue;
+				
+				if (item.OnRemoveCallback != null) {
+					try {
+						item.OnRemoveCallback (de.Key, item.Value, CacheItemRemovedReason.Removed);
+					} catch {
+						//TODO: anything to be done here?
+					}
+				}
+			}
+		}
+
+		// Must ALWAYS be called with the owner's write lock held
+		public List <CacheItem> SelectItems (SelectItemsQualifier qualifier)
+		{
+			var ret = new List <CacheItem> ();
+
+			foreach (LinkedListNode <CacheItem> node in dict.Values) {
+				CacheItem item = node.Value;
+				
+				if (qualifier (item))
+					ret.Add (item);
+			}
+
+			return ret;
+		}
+		
+		// Must ALWAYS be called with the owner's read lock held
+		public List <CacheItem> ToList ()
+		{
+			var ret = new List <CacheItem> ();
+
+			if (dict.Count == 0)
+				return ret;
+
+			foreach (LinkedListNode <CacheItem> node in dict.Values)
+				ret.Add (node.Value);
+
+			return ret;
+		}
+		
+		public void Remove (string key)
+		{
+			if (key == null)
+				return;
+			
+			LinkedListNode <CacheItem> node;
+			if (!dict.TryGetValue (key, out node))
+				return;
+
+			CacheItem item = node.Value;
+			dict.Remove (key);
+
+			if (item == null || item.Priority != CacheItemPriority.NotRemovable) {
+				revdict.Remove (node);
+				list.Remove (node);
+			}
+		}
+		
+		public CacheItem this [string key] {
+			get {
+				if (key == null)
+					return null;
+				
+				LinkedListNode<CacheItem> node;
+				CacheItem item;
+				
+				if (dict.TryGetValue (key, out node)){
+					item = node.Value;
+					if (item == null || item.Priority != CacheItemPriority.NotRemovable) {
+						list.Remove (node);
+						list.AddFirst (node);
+					}
+					
+					return item;
+				}
+
+				return null;
+			}
+
+			set {
+				LinkedListNode<CacheItem> node;
+	
+				if (dict.TryGetValue (key, out node)){
+					// If we already have a key, move it to the front
+					list.Remove (node);
+					if (value == null || value.Priority != CacheItemPriority.NotRemovable)
+						list.AddFirst (node);
+					else
+						revdict.Remove (node);
+					
+					node.Value = value;
+					return;
+				}
+				needsEviction = dict.Count >= highWaterMark;
+				
+				// Adding new node
+				node = new LinkedListNode<CacheItem> (value);
+				if (value == null || value.Priority != CacheItemPriority.NotRemovable) {
+					list.AddFirst (node);
+					revdict [node] = key;
+				}
+				
+				dict [key] = node;
+			}
+		}
+	}
+}
diff --git a/mcs/class/System.Web/System.Web.Caching/CacheItemPriorityQueue.cs b/mcs/class/System.Web/System.Web.Caching/CacheItemPriorityQueue.cs
index 918f352..e1804f0 100644
--- a/mcs/class/System.Web/System.Web.Caching/CacheItemPriorityQueue.cs
+++ b/mcs/class/System.Web/System.Web.Caching/CacheItemPriorityQueue.cs
@@ -25,6 +25,7 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 using System;
+using System.Collections;
 using System.Collections.Generic;
 using System.IO;
 using System.Text;
@@ -59,6 +60,26 @@ namespace System.Web.Caching
 			InitDebugMode ();
 		}
 
+		void ResizeHeap (int newSize)
+		{
+			//CacheItem[] oldHeap = heap;
+			Array.Resize <CacheItem> (ref heap, newSize);
+			
+			// TODO: The code helps the GC in case the array is pinned. In such instance clearing
+			// the old array will release references to the CacheItems stored in there. If the
+			// array is not pinned, otoh, this is a waste of time.
+			// Currently we don't know if the array is pinned or not so it's safer to always clear it.
+			// However when we have more precise stack scanning the code should be
+			// revisited.
+			//
+			// FIXME: code disabled for now as it causes NREX to be thrown in Bubble{Up,Down}
+			//
+			// if (oldHeap != null) {
+			// 	((IList)oldHeap).Clear ();
+			// 	oldHeap = null;
+			// }
+		}
+		
 		CacheItem[] GetHeapWithGrow ()
 		{
 			if (heap == null) {
@@ -70,7 +91,7 @@ namespace System.Web.Caching
 
 			if (heapCount >= heapSize) {
 				heapSize <<= 1;
-				Array.Resize <CacheItem> (ref heap, heapSize);
+				ResizeHeap (heapSize);
 			}
 
 			return heap;
@@ -85,7 +106,7 @@ namespace System.Web.Caching
 				int halfTheSize = heapSize >> 1;
 
 				if (heapCount < halfTheSize)
-					Array.Resize <CacheItem> (ref heap, halfTheSize + (heapCount / 3));
+					ResizeHeap (halfTheSize + (heapCount / 3));
 			}
 			
 			return heap;
diff --git a/mcs/class/System.Web/System.Web.Caching/ChangeLog b/mcs/class/System.Web/System.Web.Caching/ChangeLog
index 8b67ffa..289250e 100644
--- a/mcs/class/System.Web/System.Web.Caching/ChangeLog
+++ b/mcs/class/System.Web/System.Web.Caching/ChangeLog
@@ -1,3 +1,76 @@
+2010-11-19  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Disabled array clearing on heap resize in
+	CacheItemPriorityQueue as it causes NREX to be thrown with > 8192
+	items in the queue.
+
+	- Rewrote the CacheItem priority queue test generator to generate
+	better code. - CacheItem in System.Web doesn't have the unused
+	Guid field now (the field is used only for tests) - Added a huge
+	sequence to CacheItem priority queue tests (10k entries)
+
+2010-11-18  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Added a reminder comment about stack scanning in
+	CacheItemPriorityQueue.ResizeHeap
+
+2010-11-18  Marek Habersack  <grendel at twistedcode.net>
+
+	* System.Web.Caching/CacheItemPriorityQueue.cs: when the heap is
+	resized, the old heap memory is cleared. *
+	System.Web.SessionState_2.0/SessionInProcHandler.cs: the session
+	items collection is cleared when the InProcSessionItem is
+	destroyed * System.Web/HttpApplicationState.cs: instantiate
+	SessionObjects and StaticObjects collections only on demand.
+	Replaced ReaderWriterLock with ReaderWriterLockSlim. Removed a few
+	variables which aren't needed. *
+	System.Web/HttpStaticObjectsCollection.cs: replaced a Hashtable
+	with a Dictionary <string, object>. The objects dictionary is
+	created on demand only.
+
+2010-11-17  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Removed the DEBUG ifdefs, for the tests to compile.
+
+	This is temporary until the tests are rewritten (soon)
+
+2010-11-16  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] New version of code to purge underused entries from the
+	cache.
+
+	This version uses an LRU cache to hold the cache items. Priority
+	is not taken into account when removing the underused entries
+	(with the exception of the CacheItemPriority.NotRemovable - items
+	with this priority are never purged), they are treated equally. A
+	separate thread is not used to perform purging, instead the
+	collection happens in the current requests's thread. Minor
+	improvements to cache item enumerator and to the CheckDependencies
+	method.
+
+2010-11-15  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Remove unnecessary try/catch block from the old entries
+	expiration code.
+
+2010-11-13  Marek Habersack  <grendel at twistedcode.net>
+
+	* Cache.cs: cache removes old/least recently used items when the
+	item count exceeds 15000. Items are removed until they reach the
+	count of 10000. * SessionInProcHandler.cs: replaced
+	ReaderWriterLock with ReaderWriterLockSlim and added a Dispose
+	method to the InProcSessionItem type which disposes the associated
+	lock and other resources.
+
+2010-11-05  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Expire items must always check if the dequeued item is
+	not null before using it.
+
+2010-10-15  Marek Safar  <marek.safar at gmail.com>
+
+	Clean up few more warnings
+
 2010-09-28  Marek Habersack  <grendel at twistedcode.net>
 
 	[asp.net] Remove lock recursion in Cache.ExpireItems
diff --git a/mcs/class/System.Web/System.Web.Caching/OutputCacheModule.cs b/mcs/class/System.Web/System.Web.Caching/OutputCacheModule.cs
index 7416744..6012049 100644
--- a/mcs/class/System.Web/System.Web.Caching/OutputCacheModule.cs
+++ b/mcs/class/System.Web/System.Web.Caching/OutputCacheModule.cs
@@ -45,12 +45,14 @@ namespace System.Web.Caching
 {	
 	sealed class OutputCacheModule : IHttpModule
 	{
-		OutputCacheProvider provider;
 		CacheItemRemovedCallback response_removed;
 		static object keysCacheLock = new object ();
 		Dictionary <string, string> keysCache;
 		Dictionary <string, string> entriesToInvalidate;
+		
 #if !NET_4_0
+		OutputCacheProvider provider;
+
 		internal OutputCacheProvider InternalProvider {
 			get { return provider; }
 		}
diff --git a/mcs/class/System.Web/System.Web.Compilation/BuildManager.cs b/mcs/class/System.Web/System.Web.Compilation/BuildManager.cs
index 445754e..31d8723 100644
--- a/mcs/class/System.Web/System.Web.Compilation/BuildManager.cs
+++ b/mcs/class/System.Web/System.Web.Compilation/BuildManager.cs
@@ -118,8 +118,7 @@ namespace System.Web.Compilation
 
 #if NET_4_0
 		internal static bool PreStartMethodsRunning {
-			get { return preStartMethodsRunning;
-			}
+			get { return preStartMethodsRunning; }
 		}
 		
 		public static bool? BatchCompilationEnabled {
@@ -188,7 +187,7 @@ namespace System.Web.Compilation
 		static BuildManager ()
 		{
 			hosted = (AppDomain.CurrentDomain.GetData (ApplicationHost.MonoHostedDataKey) as string) == "yes";
-			buildCache = new Dictionary <string, BuildManagerCacheItem> (RuntimeHelpers.StringEqualityComparerCulture);
+			buildCache = new Dictionary <string, BuildManagerCacheItem> (RuntimeHelpers.StringEqualityComparer);
 #if SYSTEMCORE_DEP
 			buildCacheLock = new ReaderWriterLockSlim ();
 #else
@@ -658,7 +657,6 @@ namespace System.Web.Compilation
 			if (assembly == null)
 				throw new ArgumentNullException ("assembly");
 
-			Type ret = HttpApplicationFactory.AppType;
 			if (preStartMethodsDone)
 				throw new InvalidOperationException ("This method cannot be called after the application's pre-start initialization stage.");
 
diff --git a/mcs/class/System.Web/System.Web.Compilation/BuildManagerDirectoryBuilder.cs b/mcs/class/System.Web/System.Web.Compilation/BuildManagerDirectoryBuilder.cs
index e9a295f..c0168aa 100644
--- a/mcs/class/System.Web/System.Web.Compilation/BuildManagerDirectoryBuilder.cs
+++ b/mcs/class/System.Web/System.Web.Compilation/BuildManagerDirectoryBuilder.cs
@@ -420,12 +420,11 @@ namespace System.Web.Compilation
 			}
 			
 			object[] attrs = bp.GetType ().GetCustomAttributes (typeof (BuildProviderAppliesToAttribute), true);
-			if (attrs == null || attrs.Length == 0)
-				return bp;
-
-			BuildProviderAppliesTo appliesTo = ((BuildProviderAppliesToAttribute)attrs [0]).AppliesTo;
-			if ((appliesTo & BuildProviderAppliesTo.Web) == 0)
-				return null;
+			if (attrs != null && attrs.Length != 0) {
+				BuildProviderAppliesTo appliesTo = ((BuildProviderAppliesToAttribute)attrs [0]).AppliesTo;
+				if ((appliesTo & BuildProviderAppliesTo.Web) == 0)
+					return null;
+			}
 
 			bp.SetVirtualPath (virtualPath);
 			return bp;
diff --git a/mcs/class/System.Web/System.Web.Compilation/ChangeLog b/mcs/class/System.Web/System.Web.Compilation/ChangeLog
index 6ed3412..4f766ba 100644
--- a/mcs/class/System.Web/System.Web.Compilation/ChangeLog
+++ b/mcs/class/System.Web/System.Web.Compilation/ChangeLog
@@ -1,3 +1,32 @@
+2010-11-03  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Use faster string comparison in caches in
+	System.Web.Compilation
+
+2010-10-28  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Fix for bug #646810. Implemented
+	FormsAuthentication.EnableFormsAUthentication + tests
+
+2010-10-27  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Fix for bug #646984. Theme stylesheets must be output in
+	correct order.
+
+	This patch changes the way we output theme stylesheets to match
+	.NET behavior. Theme .css files are sorted using an ordinal and
+	case-insensitive comparer and are output to the page at the top of
+	the <head> element's contents instead of at the end.
+
+2010-10-15  Marek Safar  <marek.safar at gmail.com>
+
+	Clean up few more warnings
+
+2010-10-08  Kornél Pál  <kornelpal at gmail.com>
+
+	[asp.net] Fix for bug #643763. BuildManager must not fail with
+	BuildProviders lacking the BuildProviderAppliesTo attribute.
+
 2010-09-28  Marek Habersack  <grendel at twistedcode.net>
 
 	[asp.net] Get rid of a possible (although unlikely) race condition
diff --git a/mcs/class/System.Web/System.Web.Compilation/Directive.cs b/mcs/class/System.Web/System.Web.Compilation/Directive.cs
index aeec02d..dbbe8ba 100644
--- a/mcs/class/System.Web/System.Web.Compilation/Directive.cs
+++ b/mcs/class/System.Web/System.Web.Compilation/Directive.cs
@@ -79,7 +79,7 @@ namespace System.Web.Compilation
 		
 		static void InitHash ()
 		{
-			StringComparer comparer = StringComparer.InvariantCultureIgnoreCase;
+			StringComparer comparer = StringComparer.OrdinalIgnoreCase;
 			directivesHash = new Hashtable (comparer);
 
 			// Use Hashtable 'cause is O(1) in Contains (ArrayList is O(n))
diff --git a/mcs/class/System.Web/System.Web.Compilation/TemplateControlCompiler.cs b/mcs/class/System.Web/System.Web.Compilation/TemplateControlCompiler.cs
index c026fed..7ed0275 100644
--- a/mcs/class/System.Web/System.Web.Compilation/TemplateControlCompiler.cs
+++ b/mcs/class/System.Web/System.Web.Compilation/TemplateControlCompiler.cs
@@ -189,7 +189,7 @@ namespace System.Web.Compilation
 			currentLocation = builder.Location;
 			bool inBuildControlTree = builder is RootBuilder;
 			string tailname = (inBuildControlTree ? "Tree" : ("_" + builder.ID));
-			bool isProperty = builder.IsProperty;
+//			bool isProperty = builder.IsProperty;
 			CodeMemberMethod method = new CodeMemberMethod ();
 			builder.Method = method;
 			builder.MethodStatements = method.Statements;
diff --git a/mcs/class/System.Web/System.Web.Compilation/ThemeDirectoryBuildProvider.cs b/mcs/class/System.Web/System.Web.Compilation/ThemeDirectoryBuildProvider.cs
index 4c733e1..3537c3e 100644
--- a/mcs/class/System.Web/System.Web.Compilation/ThemeDirectoryBuildProvider.cs
+++ b/mcs/class/System.Web/System.Web.Compilation/ThemeDirectoryBuildProvider.cs
@@ -5,7 +5,7 @@
 //   Chris Toshok (toshok at ximian.com)
 //   Marek Habersack (mhabersack at novell.com)
 //
-// (C) 2008 Novell, Inc
+// (C) 2008-2010 Novell, Inc (http://novell.com)
 //
 
 //
@@ -80,6 +80,7 @@ namespace System.Web.Compilation
 				css_urls [i] = VirtualPathUtility.Combine (vp, Path.GetFileName (css_files [i]));
 				ptp.AddDependency (css_urls [i]);
 			}
+			Array.Sort (css_urls, StringComparer.OrdinalIgnoreCase);
 			ptp.LinkedStyleSheets = css_urls;
 			
 			AspComponentFoundry shared_foundry = new AspComponentFoundry ();
diff --git a/mcs/class/System.Web/System.Web.Compilation/ThemeDirectoryCompiler.cs b/mcs/class/System.Web/System.Web.Compilation/ThemeDirectoryCompiler.cs
index ebf3d36..e03cce3 100644
--- a/mcs/class/System.Web/System.Web.Compilation/ThemeDirectoryCompiler.cs
+++ b/mcs/class/System.Web/System.Web.Compilation/ThemeDirectoryCompiler.cs
@@ -55,6 +55,8 @@ namespace System.Web.UI
 				ptp.AddDependency (css_files [i]);
 				css_urls [i] = virtualPath + Path.GetFileName (css_files [i]);
 			}
+
+			Array.Sort (css_urls, StringComparer.OrdinalIgnoreCase);
 			ptp.LinkedStyleSheets = css_urls;
 			
 			AspComponentFoundry shared_foundry = new AspComponentFoundry ();
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/AnonymousIdentificationSection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/AnonymousIdentificationSection.cs
index 84b34d0..6dc24d3 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/AnonymousIdentificationSection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/AnonymousIdentificationSection.cs
@@ -142,7 +142,7 @@ namespace System.Web.Configuration
 			set { base [enabledProp] = value; }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}		
 	}
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/AssemblyCollection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/AssemblyCollection.cs
index 1b9913d..4428f97 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/AssemblyCollection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/AssemblyCollection.cs
@@ -86,7 +86,7 @@ namespace System.Web.Configuration
 		}
 
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 	}
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/AssemblyInfo.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/AssemblyInfo.cs
index 1991133..b124755 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/AssemblyInfo.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/AssemblyInfo.cs
@@ -68,7 +68,7 @@ namespace System.Web.Configuration
 			set { base [assemblyProp] = value; }
 		}
 		
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 	}
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/AuthenticationSection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/AuthenticationSection.cs
index 3c31165..b53cfd6 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/AuthenticationSection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/AuthenticationSection.cs
@@ -67,7 +67,7 @@ namespace System.Web.Configuration
 		{
 		}
 
-		protected override void Reset (ConfigurationElement parentElement)
+		protected internal override void Reset (ConfigurationElement parentElement)
 		{
 			base.Reset (parentElement);
 		}
@@ -91,7 +91,7 @@ namespace System.Web.Configuration
 			set { base [modeProp] = value; }
 		}
 		
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/AuthorizationRule.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/AuthorizationRule.cs
index cd53896..88c5d59 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/AuthorizationRule.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/AuthorizationRule.cs
@@ -129,7 +129,7 @@ namespace System.Web.Configuration {
 		}
 
 		[MonoTODO ("Not implemented")]
-		protected override bool IsModified ()
+		protected internal override bool IsModified ()
 		{
 			if (((CommaDelimitedStringCollection)Roles).IsModified || ((CommaDelimitedStringCollection)Users).IsModified || ((CommaDelimitedStringCollection)Verbs).IsModified)
 				return true;
@@ -157,7 +157,7 @@ namespace System.Web.Configuration {
 			VerifyData ();
 		}
 
-		protected override void Reset (ConfigurationElement parentElement)
+		protected internal override void Reset (ConfigurationElement parentElement)
 		{
 			AuthorizationRule r = (AuthorizationRule)parentElement;
 			Action = r.Action;
@@ -165,12 +165,12 @@ namespace System.Web.Configuration {
 			base.Reset (parentElement);
 		}
 
-		protected override void ResetModified ()
+		protected internal override void ResetModified ()
 		{
 			base.ResetModified ();
 		}
 
-		protected override bool SerializeElement (XmlWriter writer, bool serializeCollectionKey)
+		protected internal override bool SerializeElement (XmlWriter writer, bool serializeCollectionKey)
 		{
 			if (saveMode != ConfigurationSaveMode.Full && !IsModified ())
 				return true;
@@ -190,12 +190,12 @@ namespace System.Web.Configuration {
 			return true;
 		}
 
-		protected override void SetReadOnly ()
+		protected internal override void SetReadOnly ()
 		{
 			base.SetReadOnly();
 		}
 
-		protected override void Unmerge (ConfigurationElement sourceElement, ConfigurationElement parentElement, ConfigurationSaveMode saveMode)
+		protected internal override void Unmerge (ConfigurationElement sourceElement, ConfigurationElement parentElement, ConfigurationSaveMode saveMode)
 		{
 			base.Unmerge (sourceElement, parentElement, saveMode);
 			this.saveMode = saveMode;
@@ -224,7 +224,7 @@ namespace System.Web.Configuration {
 			get { return (StringCollection) base [verbsProp];}
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/AuthorizationRuleCollection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/AuthorizationRuleCollection.cs
index e824eb4..fb76f4b 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/AuthorizationRuleCollection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/AuthorizationRuleCollection.cs
@@ -117,7 +117,7 @@ namespace System.Web.Configuration {
 			set { Set (index, value); }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 	}
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/AuthorizationSection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/AuthorizationSection.cs
index 521620a..64476fe 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/AuthorizationSection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/AuthorizationSection.cs
@@ -61,7 +61,7 @@ namespace System.Web.Configuration {
 			get { return (AuthorizationRuleCollection) base [rulesProp];}
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/BufferModeSettings.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/BufferModeSettings.cs
index 2e6bcc3..4bcba48 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/BufferModeSettings.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/BufferModeSettings.cs
@@ -109,7 +109,7 @@ namespace System.Web.Configuration {
 			/* XXX do some sort of element validation here? */
 		}
 
-		protected override ConfigurationElementProperty ElementProperty {
+		protected internal override ConfigurationElementProperty ElementProperty {
 			get { return elementProperty; }
 		}
 
@@ -167,7 +167,7 @@ namespace System.Web.Configuration {
 			set { base[urgentFlushThresholdProp] = value; }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/BufferModesCollection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/BufferModesCollection.cs
index b7c214c..c1778dc 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/BufferModesCollection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/BufferModesCollection.cs
@@ -79,7 +79,7 @@ namespace System.Web.Configuration {
 			get { return (BufferModeSettings) BaseGet (name); }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 	}
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/BuildProvider.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/BuildProvider.cs
index a5bc8b9..8176d45 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/BuildProvider.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/BuildProvider.cs
@@ -88,7 +88,7 @@ namespace System.Web.Configuration
 			set { base[typeProp] = value; }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/BuildProviderCollection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/BuildProviderCollection.cs
index 590ce6d..82d4904 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/BuildProviderCollection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/BuildProviderCollection.cs
@@ -66,7 +66,7 @@ namespace System.Web.Configuration
 			}
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return props; }
 		}
 
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/CacheSection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/CacheSection.cs
index 5e6078f..ecdc4cf 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/CacheSection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/CacheSection.cs
@@ -107,7 +107,7 @@ namespace System.Web.Configuration {
 			set { base[privateBytesPollTimeProp] = value; }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/ChangeLog b/mcs/class/System.Web/System.Web.Configuration_2.0/ChangeLog
index ce9e662..df28ee9 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/ChangeLog
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/ChangeLog
@@ -1,8 +1,30 @@
+2011-01-10  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net,mcs] Fixed 'protected internal' build errors and removed
+	System.Web-specific hack from mcs
+
+2010-11-18  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Don't throw when unable to write autogen keys
+
+	It is possible that the user running the ASP.NET application does
+	not have permission to write to the registry. In this case, the
+	auto generated keys will be created on every application start.
+
 2010-11-02  Marek Habersack  <grendel at twistedcode.net>
 
 	[asp.net] 4.0-only types don't need the NET_4_0 ifdef and should
 	be in net_4_0_System.Web.dll.sources
 
+2010-10-26  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] HttpRuntime.AppDomainAppPath may be null during tests,
+	check it before using.
+
+2010-10-24  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Better handling of application's AppDomain restart
+
 2010-10-12  Sebastien Pouliot  <sebastien at ximian.com>
 
 	* System.Web.Configuration_2.0/MachineKeySection.cs: Adjust using
@@ -44,15 +66,6 @@
 	* System.Web.Configuration_2.0/MachineKeyCompatibilityMode.cs:
 	New.
 
-2010-10-26  Marek Habersack  <grendel at twistedcode.net>
-
-	[asp.net] HttpRuntime.AppDomainAppPath may be null during tests,
-	check it before using.
-
-2010-10-24  Marek Habersack  <grendel at twistedcode.net>
-
-	[asp.net] Better handling of application's AppDomain restart
-
 2010-10-04  Marek Habersack  <grendel at twistedcode.net>
 
 	* AuthorizationRule.cs: if the configuration save is not Full,
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/ClientTarget.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/ClientTarget.cs
index f7ff4ff..890da18 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/ClientTarget.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/ClientTarget.cs
@@ -79,7 +79,7 @@ namespace System.Web.Configuration {
 			internal set { base [userAgentProp] = value; }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/ClientTargetCollection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/ClientTargetCollection.cs
index f644b3e..719b30d 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/ClientTargetCollection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/ClientTargetCollection.cs
@@ -103,7 +103,7 @@ namespace System.Web.Configuration {
 			get { return (ClientTarget) BaseGet (name); }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 	}
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/ClientTargetSection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/ClientTargetSection.cs
index 6cacfe4..7e75ccc 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/ClientTargetSection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/ClientTargetSection.cs
@@ -56,7 +56,7 @@ namespace System.Web.Configuration {
 			get { return (ClientTargetCollection) base [clientTargetsProp];}
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 	}
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/CodeSubDirectoriesCollection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/CodeSubDirectoriesCollection.cs
index ae84c3a..9d29488 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/CodeSubDirectoriesCollection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/CodeSubDirectoriesCollection.cs
@@ -62,7 +62,7 @@ namespace System.Web.Configuration
 			get { return "add"; }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return props; }
 		}
 
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/CodeSubDirectory.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/CodeSubDirectory.cs
index 294fc32..7b18c6e 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/CodeSubDirectory.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/CodeSubDirectory.cs
@@ -63,7 +63,7 @@ namespace System.Web.Configuration
 			set { base[directoryNameProp] = value; }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 	}
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/CompilationSection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/CompilationSection.cs
index f44e10f..bd0fc29 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/CompilationSection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/CompilationSection.cs
@@ -141,7 +141,7 @@ namespace System.Web.Configuration
 		}
 
 		[MonoTODO ("why override this?")]
-		protected override object GetRuntimeObject ()
+		protected internal override object GetRuntimeObject ()
 		{
 			return this;
 		}
@@ -261,7 +261,7 @@ namespace System.Web.Configuration
 			set { base [urlLinePragmasProp] = value; }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 	}
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/Compiler.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/Compiler.cs
index 67617ec..aceaef7 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/Compiler.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/Compiler.cs
@@ -109,7 +109,7 @@ namespace System.Web.Configuration
 			internal set { base[warningLevelProp] = value; }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 	}
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/CompilerCollection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/CompilerCollection.cs
index 1f51bc2..4caacd2 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/CompilerCollection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/CompilerCollection.cs
@@ -93,7 +93,7 @@ namespace System.Web.Configuration
 			get { return "compiler"; }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/CustomError.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/CustomError.cs
index 7c6262e..b5165f6 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/CustomError.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/CustomError.cs
@@ -96,7 +96,7 @@ namespace System.Web.Configuration {
 			set { base[statusCodeProp] = value; }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/CustomErrorCollection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/CustomErrorCollection.cs
index 3aff1cf..d22a13a 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/CustomErrorCollection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/CustomErrorCollection.cs
@@ -131,7 +131,7 @@ namespace System.Web.Configuration {
 			get { return (CustomError)BaseGet (statusCode); }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 	}
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/CustomErrorsSection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/CustomErrorsSection.cs
index df6a369..1df2713 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/CustomErrorsSection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/CustomErrorsSection.cs
@@ -62,13 +62,13 @@ namespace System.Web.Configuration {
 		}
 
 		// Why override?
-		protected override void DeserializeSection (XmlReader reader)
+		protected internal override void DeserializeSection (XmlReader reader)
 		{
 			base.DeserializeSection (reader);
 		}
 
 		// Why override?
-		protected override void Reset (ConfigurationElement parentElement)
+		protected internal override void Reset (ConfigurationElement parentElement)
 		{
 			base.Reset (parentElement);
 		}
@@ -90,7 +90,7 @@ namespace System.Web.Configuration {
 			set { base[modeProp] = value; }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/DeploymentSection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/DeploymentSection.cs
index 4c5e373..c029d2f 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/DeploymentSection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/DeploymentSection.cs
@@ -55,7 +55,7 @@ namespace System.Web.Configuration {
 			set { base[retailProp] = value; }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/EventMappingSettings.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/EventMappingSettings.cs
index e0871c3..2019643 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/EventMappingSettings.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/EventMappingSettings.cs
@@ -112,7 +112,7 @@ namespace System.Web.Configuration {
 			set { base[typeProp] = value; }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/EventMappingSettingsCollection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/EventMappingSettingsCollection.cs
index 8b668c3..acb9283 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/EventMappingSettingsCollection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/EventMappingSettingsCollection.cs
@@ -104,7 +104,7 @@ namespace System.Web.Configuration {
 			get { return (EventMappingSettings) BaseGet (name); }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/ExpressionBuilder.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/ExpressionBuilder.cs
index dc0fa8c..a11de34 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/ExpressionBuilder.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/ExpressionBuilder.cs
@@ -90,7 +90,7 @@ namespace System.Web.Configuration {
 			}
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 	}
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/ExpressionBuilderCollection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/ExpressionBuilderCollection.cs
index e5dbe18..c0ea526 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/ExpressionBuilderCollection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/ExpressionBuilderCollection.cs
@@ -57,7 +57,7 @@ namespace System.Web.Configuration
 			get { return (ExpressionBuilder) BaseGet (name); }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return props; }
 		}
 
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/FormsAuthenticationConfiguration.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/FormsAuthenticationConfiguration.cs
index 6c41000..24a86a8 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/FormsAuthenticationConfiguration.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/FormsAuthenticationConfiguration.cs
@@ -118,7 +118,7 @@ namespace System.Web.Configuration
 			/* XXX do some sort of element validation here? */
 		}
 
-		protected override ConfigurationElementProperty ElementProperty {
+		protected internal override ConfigurationElementProperty ElementProperty {
 			get { return elementProperty; }
 		}
 
@@ -199,7 +199,7 @@ namespace System.Web.Configuration
 			set { base [timeoutProp] = value; }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 	}
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/FormsAuthenticationCredentials.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/FormsAuthenticationCredentials.cs
index 63893bc..1f12755 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/FormsAuthenticationCredentials.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/FormsAuthenticationCredentials.cs
@@ -70,7 +70,7 @@ namespace System.Web.Configuration
 			get { return (FormsAuthenticationUserCollection) base[usersProp]; }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 		
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/FormsAuthenticationUser.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/FormsAuthenticationUser.cs
index a66825e..6051365 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/FormsAuthenticationUser.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/FormsAuthenticationUser.cs
@@ -75,7 +75,7 @@ namespace System.Web.Configuration
 			set { base[passwordProp] = value; }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 	}
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/FormsAuthenticationUserCollection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/FormsAuthenticationUserCollection.cs
index 8eb653d..0bce187 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/FormsAuthenticationUserCollection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/FormsAuthenticationUserCollection.cs
@@ -126,7 +126,7 @@ namespace System.Web.Configuration
 			get { return "user"; }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/GlobalizationSection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/GlobalizationSection.cs
index 0e8367c..15fc623 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/GlobalizationSection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/GlobalizationSection.cs
@@ -168,7 +168,7 @@ namespace System.Web.Configuration {
 			set { base[uiCultureProp] = value; }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/HealthMonitoringSection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/HealthMonitoringSection.cs
index 547b6c2..4b2204d 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/HealthMonitoringSection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/HealthMonitoringSection.cs
@@ -119,7 +119,7 @@ namespace System.Web.Configuration {
 			get { return (RuleSettingsCollection) base [rulesProp];}
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/HostingEnvironmentSection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/HostingEnvironmentSection.cs
index 4444f4a..04d18db 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/HostingEnvironmentSection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/HostingEnvironmentSection.cs
@@ -84,7 +84,7 @@ namespace System.Web.Configuration {
 			set { base[shutdownTimeoutProp] = value; }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/HttpCookiesSection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/HttpCookiesSection.cs
index ac64f3c..1200194 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/HttpCookiesSection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/HttpCookiesSection.cs
@@ -72,7 +72,7 @@ namespace System.Web.Configuration {
 			set { base[requireSSLProp] = value; }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 	}
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/HttpHandlerAction.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/HttpHandlerAction.cs
index 5a4ea69..0a30383 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/HttpHandlerAction.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/HttpHandlerAction.cs
@@ -118,7 +118,7 @@ namespace System.Web.Configuration
 			set { base[verbProp] = value; }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return _properties; }
 		}
 
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/HttpHandlerActionCollection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/HttpHandlerActionCollection.cs
index 6c874f0..55ad441 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/HttpHandlerActionCollection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/HttpHandlerActionCollection.cs
@@ -98,7 +98,7 @@ namespace System.Web.Configuration
 			get { return ConfigurationElementCollectionType.AddRemoveClearMapAlternate; }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/HttpHandlersSection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/HttpHandlersSection.cs
index 2625dc1..bba4157 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/HttpHandlersSection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/HttpHandlersSection.cs
@@ -61,7 +61,7 @@ namespace System.Web.Configuration
 			get { return (HttpHandlerActionCollection) base[handlersProp]; }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/HttpModuleAction.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/HttpModuleAction.cs
index 5e71b8f..b0de2fa 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/HttpModuleAction.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/HttpModuleAction.cs
@@ -73,7 +73,7 @@ namespace System.Web.Configuration
 			/* XXX do some sort of element validation here? */
 		}
 
-		protected override ConfigurationElementProperty ElementProperty {
+		protected internal override ConfigurationElementProperty ElementProperty {
 			get { return elementProperty; }
 		}
 
@@ -90,7 +90,7 @@ namespace System.Web.Configuration
 			set { base[typeProp] = value; }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 	}
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/HttpModuleActionCollection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/HttpModuleActionCollection.cs
index 4659988..a22da49 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/HttpModuleActionCollection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/HttpModuleActionCollection.cs
@@ -94,7 +94,7 @@ namespace System.Web.Configuration
 			return base.IsElementRemovable (element);
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/HttpModulesSection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/HttpModulesSection.cs
index b5129c3..da34c81 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/HttpModulesSection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/HttpModulesSection.cs
@@ -58,7 +58,7 @@ namespace System.Web.Configuration
 			}
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get {
 				return properties;
 			}
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/HttpRuntimeSection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/HttpRuntimeSection.cs
index 361850d..7e4da39 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/HttpRuntimeSection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/HttpRuntimeSection.cs
@@ -343,7 +343,7 @@ namespace System.Web.Configuration
 			set { base [relaxedUrlToFileSystemMappingProp] = value; }
 		}
 #endif
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 	}
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/IdentitySection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/IdentitySection.cs
index a9055dd..962296a 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/IdentitySection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/IdentitySection.cs
@@ -55,16 +55,16 @@ namespace System.Web.Configuration {
 		}
 
 		[MonoTODO ("why override this?")]
-		protected override object GetRuntimeObject ()
+		protected internal override object GetRuntimeObject ()
 		{
 			return this;
 		}
 
-		protected override void Reset (ConfigurationElement parentElement)
+		protected internal override void Reset (ConfigurationElement parentElement)
 		{
 		}
 
-		protected override void Unmerge (ConfigurationElement sourceElement, ConfigurationElement parentElement, ConfigurationSaveMode saveMode)
+		protected internal override void Unmerge (ConfigurationElement sourceElement, ConfigurationElement parentElement, ConfigurationSaveMode saveMode)
 		{
 		}
 
@@ -86,7 +86,7 @@ namespace System.Web.Configuration {
 			set { base[userNameProp] = value; }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/MachineKeyRegistryStorage.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/MachineKeyRegistryStorage.cs
index 52bc5b3..b5f6c4a 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/MachineKeyRegistryStorage.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/MachineKeyRegistryStorage.cs
@@ -146,7 +146,7 @@ namespace System.Web.Configuration
 					rk.Flush (); // we want it synchronous
 				}
 			} catch (Exception ex) {
-				throw new ApplicationException ("Failed to store encryption key in the registry.", ex);
+				Console.Error.WriteLine ("(info) Auto generated encryption keys not saved: {0}", ex);
 			}
 		}
 	}
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/MachineKeySection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/MachineKeySection.cs
index 70ce7fd..b2bf780 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/MachineKeySection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/MachineKeySection.cs
@@ -101,7 +101,7 @@ namespace System.Web.Configuration {
 		}
 #endif
 
-		protected override void Reset (ConfigurationElement parentElement)
+		protected internal override void Reset (ConfigurationElement parentElement)
 		{
 			base.Reset (parentElement);
 			decryption_key = null;
@@ -183,7 +183,7 @@ namespace System.Web.Configuration {
 			}
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/MembershipSection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/MembershipSection.cs
index 3553d18..3b3196e 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/MembershipSection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/MembershipSection.cs
@@ -93,7 +93,7 @@ namespace System.Web.Configuration {
 			set { base[userIsOnlineTimeWindowProp] = value; }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 	}
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/MonoSettingsSection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/MonoSettingsSection.cs
index 35dc618..e5cbdab 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/MonoSettingsSection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/MonoSettingsSection.cs
@@ -72,7 +72,7 @@ namespace System.Web.Configuration
                         set { base [verificationCompatibilityProp] = value; }
                 }
 		
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
                         get { return properties; }
                 }
 	}
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/NamespaceCollection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/NamespaceCollection.cs
index 3fedbee..40bbb45 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/NamespaceCollection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/NamespaceCollection.cs
@@ -91,7 +91,7 @@ namespace System.Web.Configuration
 			set { base[autoImportVBNamespaceProp] = value; }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/NamespaceInfo.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/NamespaceInfo.cs
index 892a5b5..7c895e6 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/NamespaceInfo.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/NamespaceInfo.cs
@@ -80,7 +80,7 @@ namespace System.Web.Configuration
 			set { base[namespaceProp] = value; }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/OutputCacheProfile.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/OutputCacheProfile.cs
index 9d53255..de1dd98 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/OutputCacheProfile.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/OutputCacheProfile.cs
@@ -163,7 +163,7 @@ namespace System.Web.Configuration {
 			set { base[varyByParamProp] = value; }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/OutputCacheProfileCollection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/OutputCacheProfileCollection.cs
index 3925f40..333b91f 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/OutputCacheProfileCollection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/OutputCacheProfileCollection.cs
@@ -123,7 +123,7 @@ namespace System.Web.Configuration {
 			get { return (OutputCacheProfile) BaseGet (name); }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/OutputCacheSection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/OutputCacheSection.cs
index c40de2d..3d1606a 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/OutputCacheSection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/OutputCacheSection.cs
@@ -117,7 +117,7 @@ namespace System.Web.Configuration
 		}
 #endif
 		
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/OutputCacheSettingsSection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/OutputCacheSettingsSection.cs
index 36d53a8..f1549bd 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/OutputCacheSettingsSection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/OutputCacheSettingsSection.cs
@@ -55,7 +55,7 @@ namespace System.Web.Configuration {
 			get { return (OutputCacheProfileCollection) base [outputCacheProfilesProp];}
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/PagesSection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/PagesSection.cs
index 92a910c..fb109b3 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/PagesSection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/PagesSection.cs
@@ -315,11 +315,11 @@ namespace System.Web.Configuration
 			}
 		}
 #endif
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 
-		protected override void DeserializeSection (XmlReader reader)
+		protected internal override void DeserializeSection (XmlReader reader)
 		{
 			base.DeserializeSection (reader);
 
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/PassportAuthentication.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/PassportAuthentication.cs
index 48f9acf..1a59215 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/PassportAuthentication.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/PassportAuthentication.cs
@@ -59,7 +59,7 @@ namespace System.Web.Configuration
 			/* XXX do some sort of element validation here? */
 		}
 
-		protected override ConfigurationElementProperty ElementProperty {
+		protected internal override ConfigurationElementProperty ElementProperty {
 			get { return elementProperty; }
 		}
 
@@ -70,7 +70,7 @@ namespace System.Web.Configuration
 			set { base[redirectUrlProp] = value; }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 	}
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/ProcessModelSection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/ProcessModelSection.cs
index 4e19404..ec265a6 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/ProcessModelSection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/ProcessModelSection.cs
@@ -193,7 +193,7 @@ namespace System.Web.Configuration {
 			/* XXX do some sort of element validation here? */
 		}
 
-		protected override ConfigurationElementProperty ElementProperty {
+		protected internal override ConfigurationElementProperty ElementProperty {
 			get { return elementProperty; }
 		}
 
@@ -380,7 +380,7 @@ namespace System.Web.Configuration {
 			set { base[webGardenProp] = value; }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/ProfileGroupSettings.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/ProfileGroupSettings.cs
index e754e09..a082172 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/ProfileGroupSettings.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/ProfileGroupSettings.cs
@@ -98,7 +98,7 @@ namespace System.Web.Configuration
 			get { return (ProfilePropertySettingsCollection) base [propertySettingsProp]; }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 	}
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/ProfileGroupSettingsCollection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/ProfileGroupSettingsCollection.cs
index 7f65ca6..b3f88a2 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/ProfileGroupSettingsCollection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/ProfileGroupSettingsCollection.cs
@@ -61,13 +61,13 @@ namespace System.Web.Configuration
 		}
 
 		// Why override?
-		protected override bool IsModified ()
+		protected internal override bool IsModified ()
 		{
 			return base.IsModified ();
 		}
 
 		// Why override?
-		protected override void ResetModified ()
+		protected internal override void ResetModified ()
 		{
 			base.ResetModified ();
 		}
@@ -140,7 +140,7 @@ namespace System.Web.Configuration
 			get { return (ProfileGroupSettings) BaseGet (name); }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 		
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/ProfilePropertySettings.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/ProfilePropertySettings.cs
index aa001b4..e16764f 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/ProfilePropertySettings.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/ProfilePropertySettings.cs
@@ -148,7 +148,7 @@ namespace System.Web.Configuration
 			set { base[typeProp] = value; }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get {
 				return properties;
 			}
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/ProfilePropertySettingsCollection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/ProfilePropertySettingsCollection.cs
index bc540d8..40673f4 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/ProfilePropertySettingsCollection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/ProfilePropertySettingsCollection.cs
@@ -156,7 +156,7 @@ namespace System.Web.Configuration
 			}
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 	}
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/ProfileSection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/ProfileSection.cs
index ef4597b..2515477 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/ProfileSection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/ProfileSection.cs
@@ -104,7 +104,7 @@ namespace System.Web.Configuration
 			}
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 	}
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/ProfileSettings.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/ProfileSettings.cs
index 95e8632..601c290 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/ProfileSettings.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/ProfileSettings.cs
@@ -135,7 +135,7 @@ namespace System.Web.Configuration {
 			set { base[nameProp] = value; }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/ProfileSettingsCollection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/ProfileSettingsCollection.cs
index ca7538b..18b3eff 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/ProfileSettingsCollection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/ProfileSettingsCollection.cs
@@ -104,7 +104,7 @@ namespace System.Web.Configuration {
 			set { if (BaseGet (index) != null) BaseRemoveAt (index); BaseAdd (index, value); }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/RoleManagerSection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/RoleManagerSection.cs
index 596ed05..933128f 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/RoleManagerSection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/RoleManagerSection.cs
@@ -176,7 +176,7 @@ namespace System.Web.Configuration {
 			get { return (ProviderSettingsCollection) base [providersProp]; }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 	}
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/RootProfilePropertySettingsCollection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/RootProfilePropertySettingsCollection.cs
index 6e48168..c93952e 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/RootProfilePropertySettingsCollection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/RootProfilePropertySettingsCollection.cs
@@ -100,7 +100,7 @@ namespace System.Web.Configuration
 
 		// LAMESPEC: this is missing from MSDN, but is present in the 2.0sp1 version of the
 		// class
-		protected override void Unmerge (ConfigurationElement sourceElement, ConfigurationElement parentElement, ConfigurationSaveMode saveMode)
+		protected internal override void Unmerge (ConfigurationElement sourceElement, ConfigurationElement parentElement, ConfigurationSaveMode saveMode)
 		{
 			// Why override?
 			base.Unmerge (sourceElement, parentElement, saveMode);
@@ -111,7 +111,7 @@ namespace System.Web.Configuration
 			get { return groupSettings; }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 
@@ -120,18 +120,18 @@ namespace System.Web.Configuration
 		}
 
 		// Why override?
-		protected override bool IsModified ()
+		protected internal override bool IsModified ()
 		{
 			return base.IsModified ();
 		}
 
 		// Why override?
-		protected override void ResetModified ()
+		protected internal override void ResetModified ()
 		{
 			base.ResetModified ();
 		}
 		
-		protected override void Reset (ConfigurationElement parentElement)
+		protected internal override void Reset (ConfigurationElement parentElement)
 		{
 			base.Reset (parentElement);
 
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/RuleSettings.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/RuleSettings.cs
index 2c39d98..378719b 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/RuleSettings.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/RuleSettings.cs
@@ -168,7 +168,7 @@ namespace System.Web.Configuration {
 			set { base[providerProp] = value; }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/RuleSettingsCollection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/RuleSettingsCollection.cs
index dcef720..2563afe 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/RuleSettingsCollection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/RuleSettingsCollection.cs
@@ -104,7 +104,7 @@ namespace System.Web.Configuration {
 			set { if (BaseGet (index) != null) BaseRemoveAt (index); BaseAdd (index, value); }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/SecurityPolicySection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/SecurityPolicySection.cs
index 694bb3a..9125219 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/SecurityPolicySection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/SecurityPolicySection.cs
@@ -54,7 +54,7 @@ namespace System.Web.Configuration {
 			get { return (TrustLevelCollection) base [Prop];}
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 	}
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/SessionPageStateSection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/SessionPageStateSection.cs
index 5f31eed..d880154 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/SessionPageStateSection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/SessionPageStateSection.cs
@@ -61,7 +61,7 @@ namespace System.Web.Configuration {
 			set { base[historySizeProp] = value; }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 	}
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/SessionStateSection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/SessionStateSection.cs
index 35b0ac8..5c814b7 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/SessionStateSection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/SessionStateSection.cs
@@ -242,11 +242,11 @@ namespace System.Web.Configuration
 			/* XXX do some sort of element validation here? */
 		}
 
-		protected override ConfigurationElementProperty ElementProperty {
+		protected internal override ConfigurationElementProperty ElementProperty {
 			get { return elementProperty; }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/SiteMapSection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/SiteMapSection.cs
index d27f6ab..503b631 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/SiteMapSection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/SiteMapSection.cs
@@ -85,7 +85,7 @@ namespace System.Web.Configuration
 			}
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 	}
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/SqlCacheDependencyDatabase.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/SqlCacheDependencyDatabase.cs
index 719a40e..2fae8ef 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/SqlCacheDependencyDatabase.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/SqlCacheDependencyDatabase.cs
@@ -87,7 +87,7 @@ namespace System.Web.Configuration {
 			/* XXX do some sort of element validation here? */
 		}
 
-		protected override ConfigurationElementProperty ElementProperty {
+		protected internal override ConfigurationElementProperty ElementProperty {
 			get { return elementProperty; }
 		}
 
@@ -111,7 +111,7 @@ namespace System.Web.Configuration {
 			set { base[pollTimeProp] = value; }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/SqlCacheDependencySection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/SqlCacheDependencySection.cs
index f4755b9..09db4c6 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/SqlCacheDependencySection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/SqlCacheDependencySection.cs
@@ -64,7 +64,7 @@ namespace System.Web.Configuration {
 			/* XXX do some sort of element validation here? */
 		}
 
-		protected override ConfigurationElementProperty ElementProperty {
+		protected internal override ConfigurationElementProperty ElementProperty {
 			get { return elementProperty; }
 		}
 
@@ -90,7 +90,7 @@ namespace System.Web.Configuration {
 			set { base[pollTimeProp] = value; }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/TagMapCollection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/TagMapCollection.cs
index c2c01ce..65a5452 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/TagMapCollection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/TagMapCollection.cs
@@ -75,7 +75,7 @@ namespace System.Web.Configuration
 			BaseRemove (tagMapInformation.TagType);
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/TagMapInfo.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/TagMapInfo.cs
index 05f79e2..7a5917e 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/TagMapInfo.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/TagMapInfo.cs
@@ -85,7 +85,7 @@ namespace System.Web.Configuration
 			return MappedTagType.GetHashCode() + TagType.GetHashCode();
 		}
 
-		protected override bool SerializeElement (XmlWriter writer, bool serializeCollectionKey)
+		protected internal override bool SerializeElement (XmlWriter writer, bool serializeCollectionKey)
 		{
 			bool ret = base.SerializeElement (writer, serializeCollectionKey);
 
@@ -108,7 +108,7 @@ namespace System.Web.Configuration
 			set { base[tagTypeProp] = value; }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 	}
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/TagPrefixCollection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/TagPrefixCollection.cs
index c83920f..3ffc498 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/TagPrefixCollection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/TagPrefixCollection.cs
@@ -86,7 +86,7 @@ namespace System.Web.Configuration
 			get { return "add"; }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/TagPrefixInfo.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/TagPrefixInfo.cs
index 90781ed..cc8ee98 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/TagPrefixInfo.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/TagPrefixInfo.cs
@@ -88,7 +88,7 @@ namespace System.Web.Configuration
 			/* XXX do some sort of element validation here? */
 		}
 
-		protected override ConfigurationElementProperty ElementProperty {
+		protected internal override ConfigurationElementProperty ElementProperty {
 			get { return elementProperty; }
 		}
 
@@ -140,7 +140,7 @@ namespace System.Web.Configuration
 			set { base[tagPrefixProp] = value; }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 	}
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/TraceSection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/TraceSection.cs
index 9d46a69..3767371 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/TraceSection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/TraceSection.cs
@@ -116,7 +116,7 @@ namespace System.Web.Configuration {
 			set { base[writeToDiagnosticsTraceProp] = value; }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/TransformerInfo.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/TransformerInfo.cs
index eb46ac1..da06e65 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/TransformerInfo.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/TransformerInfo.cs
@@ -90,7 +90,7 @@ namespace System.Web.Configuration {
 			set { base[typeProp] = value; }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/TransformerInfoCollection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/TransformerInfoCollection.cs
index b94a7ea..cf663ed 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/TransformerInfoCollection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/TransformerInfoCollection.cs
@@ -80,7 +80,7 @@ namespace System.Web.Configuration {
 			set { if (BaseGet (index) != null) BaseRemoveAt (index); BaseAdd (index, value); }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/TrustLevel.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/TrustLevel.cs
index 7b932f5..34c0555 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/TrustLevel.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/TrustLevel.cs
@@ -78,7 +78,7 @@ namespace System.Web.Configuration {
 			set { base[policyFileProp] = value; }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 	}
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/TrustLevelCollection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/TrustLevelCollection.cs
index 4d6cd7e..a309e64 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/TrustLevelCollection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/TrustLevelCollection.cs
@@ -113,7 +113,7 @@ namespace System.Web.Configuration {
 			get { return false; }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 	}
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/TrustSection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/TrustSection.cs
index af6341c..ef9137a 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/TrustSection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/TrustSection.cs
@@ -77,7 +77,7 @@ namespace System.Web.Configuration {
 			set { base[processRequestInApplicationTrustProp] = value; }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/UrlMapping.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/UrlMapping.cs
index 508da79..2736b70 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/UrlMapping.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/UrlMapping.cs
@@ -90,7 +90,7 @@ namespace System.Web.Configuration {
 			internal set { base [urlProp] = value;}
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 	}
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/UrlMappingCollection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/UrlMappingCollection.cs
index 07b8aac..c21d6b9 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/UrlMappingCollection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/UrlMappingCollection.cs
@@ -103,7 +103,7 @@ namespace System.Web.Configuration {
 			get { return (UrlMapping) BaseGet (name); }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/UrlMappingsSection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/UrlMappingsSection.cs
index e6d6da9..16ffe28 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/UrlMappingsSection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/UrlMappingsSection.cs
@@ -63,7 +63,7 @@ namespace System.Web.Configuration {
 			get { return (UrlMappingCollection) base [urlMappingsProp];}
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 	}
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/WebControlsSection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/WebControlsSection.cs
index 250a022..0141d49 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/WebControlsSection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/WebControlsSection.cs
@@ -53,7 +53,7 @@ namespace System.Web.Configuration {
 			properties.Add (clientScriptsLocationProp);
 		}
 
-		protected override object GetRuntimeObject ()
+		protected internal override object GetRuntimeObject ()
 		{
 			Hashtable ht = new Hashtable ();
 
@@ -68,7 +68,7 @@ namespace System.Web.Configuration {
 			get { return (string) base [clientScriptsLocationProp];}
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/WebPartsPersonalization.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/WebPartsPersonalization.cs
index f591fd0..f27bbed 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/WebPartsPersonalization.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/WebPartsPersonalization.cs
@@ -79,7 +79,7 @@ namespace System.Web.Configuration {
 			get { return (ProviderSettingsCollection) base [providersProp];}
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/WebPartsPersonalizationAuthorization.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/WebPartsPersonalizationAuthorization.cs
index f79e76e..e649d27 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/WebPartsPersonalizationAuthorization.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/WebPartsPersonalizationAuthorization.cs
@@ -55,7 +55,7 @@ namespace System.Web.Configuration {
 			get { return (AuthorizationRuleCollection) base [Prop];}
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/WebPartsSection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/WebPartsSection.cs
index 32ac5cb..7c8dc74 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/WebPartsSection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/WebPartsSection.cs
@@ -59,7 +59,7 @@ namespace System.Web.Configuration {
 		}
 
 		[MonoTODO ("why override this?")]
-		protected override object GetRuntimeObject ()
+		protected internal override object GetRuntimeObject ()
 		{
 			return this;
 		}
@@ -80,7 +80,7 @@ namespace System.Web.Configuration {
 			get { return (TransformerInfoCollection) base [transformersProp];}
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/XhtmlConformanceSection.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/XhtmlConformanceSection.cs
index 2cd455d..6d3585f 100644
--- a/mcs/class/System.Web/System.Web.Configuration_2.0/XhtmlConformanceSection.cs
+++ b/mcs/class/System.Web/System.Web.Configuration_2.0/XhtmlConformanceSection.cs
@@ -57,7 +57,7 @@ namespace System.Web.Configuration {
 			set { base[modeProp] = value; }
 		}
 
-		protected override ConfigurationPropertyCollection Properties {
+		protected internal override ConfigurationPropertyCollection Properties {
 			get { return properties; }
 		}
 
diff --git a/mcs/class/System.Web/System.Web.Handlers/AssemblyResourceLoader.cs b/mcs/class/System.Web/System.Web.Handlers/AssemblyResourceLoader.cs
index ea07c1f..134de28 100644
--- a/mcs/class/System.Web/System.Web.Handlers/AssemblyResourceLoader.cs
+++ b/mcs/class/System.Web/System.Web.Handlers/AssemblyResourceLoader.cs
@@ -3,9 +3,10 @@
 //
 // Authors:
 //	Ben Maurer (bmaurer at users.sourceforge.net)
+//	Marek Habersack <grendel at twistedcode.net>
 //
 // (C) 2003 Ben Maurer
-//
+// (C) 2010 Novell, Inc (http://novell.com/)
 
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -34,12 +35,16 @@ using System.Reflection;
 using System.IO;
 using System.Resources;
 using System.Collections;
+using System.Collections.Generic;
+using System.Security.Cryptography;
 using System.Text;
 using System.Text.RegularExpressions;
+using System.Threading;
 using System.Web.Configuration;
 using System.Web.Util;
 
-namespace System.Web.Handlers {
+namespace System.Web.Handlers
+{
 #if SYSTEM_WEB_EXTENSIONS
 	partial class ScriptResourceHandler
 	{
@@ -51,31 +56,115 @@ namespace System.Web.Handlers {
 	#else
 	internal // since this is in the .config file, we need to support it, since we dont have versoned support.
 	#endif
-	class AssemblyResourceLoader : IHttpHandler {		
+	class AssemblyResourceLoader : IHttpHandler
+	{
 		const string HandlerFileName = "WebResource.axd";
 		static Assembly currAsm = typeof (AssemblyResourceLoader).Assembly;
 #endif
 		const char QueryParamSeparator = '&';
 
-		static readonly Hashtable _embeddedResources = Hashtable.Synchronized (new Hashtable ());
+		static readonly Dictionary <string, AssemblyEmbeddedResources> _embeddedResources = new Dictionary <string, AssemblyEmbeddedResources> (StringComparer.Ordinal);
+		static readonly ReaderWriterLockSlim _embeddedResourcesLock = new ReaderWriterLockSlim ();
+		static readonly ReaderWriterLockSlim _stringHashCacheLock = new ReaderWriterLockSlim ();
+		static readonly Dictionary <string, string> stringHashCache = new Dictionary <string, string> (StringComparer.Ordinal);
+
+		[ThreadStatic]
+		static KeyedHashAlgorithm hashAlg;
+		static bool canReuseHashAlg = true;
+
+		static KeyedHashAlgorithm ReusableHashAlgorithm {
+			get {
+				if (!canReuseHashAlg)
+					return null;
+
+				if (hashAlg == null) {				
+					MachineKeySection mks = MachineKeySection.Config;
+					hashAlg = MachineKeySectionUtils.GetValidationAlgorithm (mks);
+					if (!hashAlg.CanReuseTransform) {
+						canReuseHashAlg = false;
+						hashAlg = null;
+					}
+				}
+
+				if (hashAlg != null)
+					hashAlg.Initialize ();
 
-		static void InitEmbeddedResourcesUrls (Assembly assembly, Hashtable hashtable)
+				return hashAlg;
+			}
+		}
+		
+		static string GetStringHash (KeyedHashAlgorithm kha, string str)
+		{
+			if (String.IsNullOrEmpty (str))
+				return String.Empty;
+
+			string result;
+			try {
+				_stringHashCacheLock.EnterUpgradeableReadLock ();
+				if (stringHashCache.TryGetValue (str, out result))
+					return result;
+
+				try {
+					_stringHashCacheLock.EnterWriteLock ();
+					if (stringHashCache.TryGetValue (str, out result))
+						return result;
+					
+					result = Convert.ToBase64String (kha.ComputeHash (Encoding.UTF8.GetBytes (str)));
+					stringHashCache.Add (str, result);
+				} finally {
+					_stringHashCacheLock.ExitWriteLock ();
+				}
+			} finally {
+				_stringHashCacheLock.ExitUpgradeableReadLock ();
+			}
+			
+			return result;
+		}
+		
+		static void InitEmbeddedResourcesUrls (KeyedHashAlgorithm kha, Assembly assembly, string assemblyName, string assemblyHash, AssemblyEmbeddedResources entry)
 		{
 			WebResourceAttribute [] attrs = (WebResourceAttribute []) assembly.GetCustomAttributes (typeof (WebResourceAttribute), false);
+			WebResourceAttribute attr;
+			string apath = assembly.Location;
 			for (int i = 0; i < attrs.Length; i++) {
-				string resourceName = attrs [i].WebResource;
-				if (resourceName != null && resourceName.Length > 0) {
+				attr = attrs [i];
+				string resourceName = attr.WebResource;
+				if (!String.IsNullOrEmpty (resourceName)) {
+					string resourceNameHash = GetStringHash (kha, resourceName);
 #if SYSTEM_WEB_EXTENSIONS
-					ResourceKey rkNoNotify = new ResourceKey (resourceName, false);
-					ResourceKey rkNotify = new ResourceKey (resourceName, true);
-
-					if (!hashtable.Contains (rkNoNotify))
-						hashtable.Add (rkNoNotify, CreateResourceUrl (assembly, resourceName, false));
-					if (!hashtable.Contains (rkNotify))
-						hashtable.Add (rkNotify, CreateResourceUrl (assembly, resourceName, true));
+					bool debug = resourceName.EndsWith (".debug.js", StringComparison.OrdinalIgnoreCase);
+					string dbgTail = debug ? "d" : String.Empty;
+					string rkNoNotify = resourceNameHash + "f" + dbgTail;
+					string rkNotify = resourceNameHash + "t" + dbgTail;
+
+					if (!entry.Resources.ContainsKey (rkNoNotify)) {
+						var er = new EmbeddedResource () {
+							Name = resourceName,
+							Attribute = attr, 
+							Url = CreateResourceUrl (kha, assemblyName, assemblyHash, apath, rkNoNotify, debug, false)
+						};
+						
+						entry.Resources.Add (rkNoNotify, er);
+					}
+					
+					if (!entry.Resources.ContainsKey (rkNotify)) {
+						var er = new EmbeddedResource () {
+							Name = resourceName,
+							Attribute = attr, 
+							Url = CreateResourceUrl (kha, assemblyName, assemblyHash, apath, rkNotify, debug, true)
+						};
+						
+						entry.Resources.Add (rkNotify, er);
+					}
 #else
-					if (!hashtable.Contains (resourceName))
-						hashtable.Add (resourceName, CreateResourceUrl (assembly, resourceName, false));
+					if (!entry.Resources.ContainsKey (resourceNameHash)) {
+						var er = new EmbeddedResource () {
+							Name = resourceName,
+							Attribute = attr, 
+							Url = CreateResourceUrl (kha, assemblyName, assemblyHash, apath, resourceNameHash, false, false)
+						};
+						entry.Resources.Add (resourceNameHash, er);
+					}
 #endif
 				}
 			}
@@ -87,78 +176,140 @@ namespace System.Web.Handlers {
 			return GetResourceUrl (type.Assembly, resourceName, false);
 		}
 #endif
-
-		static string EncryptAssemblyResource (string asmName, string resName)
+		static EmbeddedResource DecryptAssemblyResource (string val, out AssemblyEmbeddedResources entry)
 		{
-			byte[] bytes = Encoding.UTF8.GetBytes (String.Concat (asmName, ";", resName));
-			bytes = MachineKeySectionUtils.Encrypt (MachineKeySection.Config, bytes);
-			return Convert.ToBase64String (bytes);
+			entry = null;
+			
+			string[] parts = val.Split ('_');
+			if (parts.Length != 3)
+				return null;
+
+			Encoding enc = Encoding.UTF8;
+			string asmNameHash = parts [0];
+			string resNameHash = parts [1];
+			bool debug = parts [2] == "t";
+			
+			try {
+				_embeddedResourcesLock.EnterReadLock ();
+				if (!_embeddedResources.TryGetValue (asmNameHash, out entry) || entry == null)
+					return null;
+				
+				EmbeddedResource res;
+				if (!entry.Resources.TryGetValue (resNameHash, out res) || res == null) {
+#if SYSTEM_WEB_EXTENSIONS
+					if (!debug)
+						return null;
+
+					if (!entry.Resources.TryGetValue (resNameHash.Substring (0, resNameHash.Length - 1), out res))
+						return null;
+#else
+					return null;
+#endif
+				}
+				
+				return res;
+			} finally {
+				_embeddedResourcesLock.ExitReadLock ();
+			}
 		}
 
-		static void DecryptAssemblyResource (string val, out string asmName, out string resName)
+		internal static string GetResourceUrl (Assembly assembly, string resourceName, bool notifyScriptLoaded)
 		{
-			byte[] bytes = Convert.FromBase64String (val);
-
-			asmName = null;
-			resName = null;			
-
-			byte[] result = MachineKeySectionUtils.Decrypt (MachineKeySection.Config, bytes);
-			bytes = null;
-			// null will be returned if, for any reason, decryption fails
-			if (result == null)
-				return;
+			if (assembly == null)
+				return String.Empty;
 
-			string data = Encoding.UTF8.GetString (result);
-			result = null;
-
-			string[] parts = data.Split (';');
-			if (parts.Length != 2)
-				return;
-			
-			asmName = parts [0];
-			resName = parts [1];
+			KeyedHashAlgorithm kha = ReusableHashAlgorithm;
+			if (kha != null) {
+				return GetResourceUrl (kha, assembly, resourceName, notifyScriptLoaded);
+			} else {
+				MachineKeySection mks = MachineKeySection.Config;
+				using (kha = MachineKeySectionUtils.GetValidationAlgorithm (mks)) {
+					kha.Key = MachineKeySectionUtils.GetValidationKey (mks);
+					return GetResourceUrl (kha, assembly, resourceName, notifyScriptLoaded);
+				}
+			}
 		}
 
-		internal static string GetResourceUrl (Assembly assembly, string resourceName, bool notifyScriptLoaded)
+		static string GetResourceUrl (KeyedHashAlgorithm kha, Assembly assembly, string resourceName, bool notifyScriptLoaded)
 		{
-			Hashtable hashtable = (Hashtable)_embeddedResources [assembly];
-			if (hashtable == null) {
-				hashtable = new Hashtable ();
-				InitEmbeddedResourcesUrls (assembly, hashtable);
-				_embeddedResources [assembly] = hashtable;
-			}
+			string assemblyName = assembly == currAsm ? "s" : assembly.GetName ().FullName;
+			string assemblyNameHash = GetStringHash (kha, assemblyName);
+			string resourceNameHash = GetStringHash (kha, resourceName);
+			bool debug = false;
+			string url;
+			AssemblyEmbeddedResources entry;
+
+			try {
+				_embeddedResourcesLock.EnterUpgradeableReadLock ();
+				if (!_embeddedResources.TryGetValue (assemblyNameHash, out entry) || entry == null) {
+					try {
+						_embeddedResourcesLock.EnterWriteLock ();
+						entry = new AssemblyEmbeddedResources () {
+							AssemblyName = assemblyName
+						};
+						InitEmbeddedResourcesUrls (kha, assembly, assemblyName, assemblyNameHash, entry);
+						_embeddedResources.Add (assemblyNameHash, entry);
+					} finally {
+						_embeddedResourcesLock.ExitWriteLock ();
+					}
+				}
+				string lookupKey;
 #if SYSTEM_WEB_EXTENSIONS
-			string url = (string) hashtable [new ResourceKey (resourceName, notifyScriptLoaded)];
+				debug = resourceName.EndsWith (".debug.js", StringComparison.OrdinalIgnoreCase);
+				string dbgTail = debug ? "d" : String.Empty;
+				lookupKey = resourceNameHash + (notifyScriptLoaded ? "t" : "f") + dbgTail;
 #else
-			string url = (string) hashtable [resourceName];
+				lookupKey = resourceNameHash;
+#endif
+				EmbeddedResource res;
+				if (entry.Resources.TryGetValue (lookupKey, out res) && res != null)
+					url = res.Url;
+				else {
+#if SYSTEM_WEB_EXTENSIONS
+					if (debug) {
+						resourceNameHash = GetStringHash (kha, resourceName.Substring (0, resourceName.Length - 9) + ".js");
+						lookupKey = resourceNameHash + (notifyScriptLoaded ? "t" : "f");
+					
+						if (entry.Resources.TryGetValue (lookupKey, out res) && res != null)
+							url = res.Url;
+						else
+							url = null;
+					} else
 #endif
+						url = null;
+				}
+			} finally {
+				_embeddedResourcesLock.ExitUpgradeableReadLock ();
+			}
+
 			if (url == null)
-				url = CreateResourceUrl (assembly, resourceName, notifyScriptLoaded);
+				url = CreateResourceUrl (kha, assemblyName, assemblyNameHash, assembly.Location, resourceNameHash, debug, notifyScriptLoaded);
+			
 			return url;
 		}
 		
-		static string CreateResourceUrl (Assembly assembly, string resourceName, bool notifyScriptLoaded)
+		static string CreateResourceUrl (KeyedHashAlgorithm kha, string assemblyName, string assemblyNameHash, string assemblyPath, string resourceNameHash, bool debug, bool notifyScriptLoaded)
 		{
-
-			string aname = assembly == currAsm ? "s" : assembly.GetName ().FullName;
-			string apath = assembly.Location;
 			string atime = String.Empty;
 			string extra = String.Empty;
 #if SYSTEM_WEB_EXTENSIONS
-			extra = String.Concat (QueryParamSeparator, "n=", notifyScriptLoaded ? "t" : "f");
+			extra = QueryParamSeparator + "n=" + (notifyScriptLoaded ? "t" : "f");
 #endif
 
 #if TARGET_JVM
-			atime = String.Format ("{0}t={1}", QueryParamSeparator, assembly.GetHashCode ());
+			atime = QueryParamSeparator + "t=" + assemblyName.GetHashCode ();
 #else
-			if (apath != String.Empty)
-				atime = String.Concat (QueryParamSeparator, "t=", File.GetLastWriteTimeUtc (apath).Ticks);
+			if (!String.IsNullOrEmpty (assemblyPath) && File.Exists (assemblyPath))
+				atime = QueryParamSeparator + "t=" + File.GetLastWriteTimeUtc (assemblyPath).Ticks;
+			else
+				atime = QueryParamSeparator + "t=" + DateTime.UtcNow.Ticks;
 #endif
-			string href = HandlerFileName + "?d=" + EncryptAssemblyResource (aname, resourceName) + atime + extra;
-
+			string d = assemblyNameHash + "_" + resourceNameHash +  (debug ? "_t" : "_f");
+			string href = HandlerFileName + "?d=" + d + atime + extra;
 			HttpContext ctx = HttpContext.Current;
-			if (ctx != null && ctx.Request != null) {
-				string appPath = VirtualPathUtility.AppendTrailingSlash (ctx.Request.ApplicationPath);
+			HttpRequest req = ctx != null ? ctx.Request : null;
+			if (req != null) {
+				string appPath = VirtualPathUtility.AppendTrailingSlash (req.ApplicationPath);
 				href = appPath + href;
 			}
 			
@@ -168,65 +319,33 @@ namespace System.Web.Handlers {
 #if SYSTEM_WEB_EXTENSIONS
 		protected virtual void ProcessRequest (HttpContext context)
 #else
-		[MonoTODO ("Substitution not implemented")]
 		void System.Web.IHttpHandler.ProcessRequest (HttpContext context)
 #endif
 		{
 			HttpRequest request = context.Request;
-			HttpResponse response = context.Response;
-			string resourceName;
-			string asmName;
-			Assembly assembly;
-
-			// val is URL-decoded, which means every + has been replaced with ' ', we
+			// val is URL-encoded, which means every + has been replaced with ' ', we
 			// need to revert that or the base64 conversion will fail.
 			string d = request.QueryString ["d"];
 			if (!String.IsNullOrEmpty (d))
 				d = d.Replace (' ', '+');
 
-			DecryptAssemblyResource (d, out asmName, out resourceName);
-			if (resourceName == null)
-				throw new HttpException (404, "No resource name given");
-
-			if (asmName == null || asmName == "s")
+			AssemblyEmbeddedResources entry;
+			EmbeddedResource res = DecryptAssemblyResource (d, out entry);
+			WebResourceAttribute wra = res != null ? res.Attribute : null;
+			if (wra == null)
+				throw new HttpException (404, "Resource not found");
+			
+			Assembly assembly;
+			if (entry.AssemblyName == "s")
 				assembly = currAsm;
 			else
-				assembly = Assembly.Load (asmName);
-
-			WebResourceAttribute wra = null;
-			WebResourceAttribute [] attrs = (WebResourceAttribute []) assembly.GetCustomAttributes (typeof (WebResourceAttribute), false);
-			for (int i = 0; i < attrs.Length; i++) {
-				if (attrs [i].WebResource == resourceName) {
-					wra = attrs [i];
-					break;
-				}
-			}
-#if SYSTEM_WEB_EXTENSIONS
-			if (wra == null && resourceName.Length > 9 && resourceName.EndsWith (".debug.js", StringComparison.OrdinalIgnoreCase)) {
-				resourceName = String.Concat (resourceName.Substring (0, resourceName.Length - 9), ".js");
-				for (int i = 0; i < attrs.Length; i++) {
-					if (attrs [i].WebResource == resourceName) {
-						wra = attrs [i];
-						break;
-					}
-				}
-			}
-#endif
-			if (wra == null)
-				throw new HttpException (404, String.Concat ("Resource ", resourceName, " not found"));
+				assembly = Assembly.Load (entry.AssemblyName);
 			
+			HttpResponse response = context.Response;
 			string req_cache = request.Headers ["Cache-Control"];
-			if (req_cache == "max-age=0") {
+			if (String.Compare (req_cache, "max-age=0", StringComparison.Ordinal) == 0) {
 				long atime;
-#if NET_2_0
 				if (Int64.TryParse (request.QueryString ["t"], out atime)) {
-#else
-				atime = -1;
-				try {
-					atime = Int64.Parse (request.QueryString ["t"]);
-				} catch {}
-				if (atime > -1) {
-#endif
 					if (atime == File.GetLastWriteTimeUtc (assembly.Location).Ticks) {
 						response.Clear ();
 						response.StatusCode = 304;
@@ -238,18 +357,10 @@ namespace System.Web.Handlers {
 				}
 			}
 			string modif_since = request.Headers ["If-Modified-Since"];
-			if (modif_since != null && modif_since != "") {
+			if (!String.IsNullOrEmpty (modif_since)) {
 				try {
 					DateTime modif;
-#if NET_2_0
-					if (DateTime.TryParseExact (modif_since, "r", null, 0, out modif))
-#else
-					modif = DateTime.MinValue;
-					try {
-						modif = DateTime.ParseExact (modif_since, "r", null, 0);
-					} catch { }
-					if (modif != DateTime.MinValue)
-#endif
+					if (DateTime.TryParseExact (modif_since, "r", null, 0, out modif)) {
 						if (File.GetLastWriteTimeUtc (assembly.Location) <= modif) {
 							response.Clear ();
 							response.StatusCode = 304;
@@ -258,6 +369,7 @@ namespace System.Web.Handlers {
 							context.ApplicationInstance.CompleteRequest ();
 							return;
 						}
+					}
 				} catch {}
 			}
 
@@ -268,23 +380,21 @@ namespace System.Web.Handlers {
 			response.ExpiresAbsolute = utcnow.AddYears (1);
 			response.CacheControl = "public";
 
-			Stream s = assembly.GetManifestResourceStream (resourceName);
+			Stream s = assembly.GetManifestResourceStream (res.Name);
 			if (s == null)
-				throw new HttpException (404, String.Concat ("Resource ", resourceName, " not found"));
+				throw new HttpException (404, "Resource " + res.Name + " not found");
 
 			if (wra.PerformSubstitution) {
 				using (StreamReader r = new StreamReader (s)) {
 					TextWriter w = response.Output;
 					new PerformSubstitutionHelper (assembly).PerformSubstitution (r, w);
 				}
-#if NET_2_0
 			} else if (response.OutputStream is HttpResponseStream) {
 				UnmanagedMemoryStream st = (UnmanagedMemoryStream) s;
 				HttpResponseStream hstream = (HttpResponseStream) response.OutputStream;
 				unsafe {
 					hstream.WritePtr (new IntPtr (st.PositionPointer), (int) st.Length);
 				}
-#endif
 			} else {
 				byte [] buf = new byte [1024];
 				Stream output = response.OutputStream;
@@ -297,7 +407,7 @@ namespace System.Web.Handlers {
 #if SYSTEM_WEB_EXTENSIONS
 			TextWriter writer = response.Output;
 			foreach (ScriptResourceAttribute sra in assembly.GetCustomAttributes (typeof (ScriptResourceAttribute), false)) {
-				if (sra.ScriptName == resourceName) {
+				if (String.Compare (sra.ScriptName, res.Name, StringComparison.Ordinal) == 0) {
 					string scriptResourceName = sra.ScriptResourceName;
 					ResourceSet rset = null;
 					try {
@@ -326,15 +436,15 @@ namespace System.Web.Handlers {
 						writer.WriteLine ("Type.registerNamespace('" + ns.Substring (0, indx) + "')");
 					writer.Write ("{0}={{", sra.TypeName);
 					bool first = true;
-					foreach (DictionaryEntry entry in rset) {
-						string value = entry.Value as string;
+					foreach (DictionaryEntry de in rset) {
+						string value = de.Value as string;
 						if (value != null) {
 							if (first)
 								first = false;
 							else
 								writer.Write (',');
 							writer.WriteLine ();
-							writer.Write ("{0}:{1}", GetScriptStringLiteral ((string) entry.Key), GetScriptStringLiteral (value));
+							writer.Write ("{0}:{1}", GetScriptStringLiteral ((string) de.Key), GetScriptStringLiteral (value));
 						}
 					}
 					writer.WriteLine ();
@@ -383,6 +493,18 @@ namespace System.Web.Handlers {
 #if !SYSTEM_WEB_EXTENSIONS
 		bool System.Web.IHttpHandler.IsReusable { get { return true; } }
 #endif
+		sealed class EmbeddedResource
+		{
+			public string Name;
+			public string Url;
+			public WebResourceAttribute Attribute;
+		}
+		
+		sealed class AssemblyEmbeddedResources
+		{
+			public string AssemblyName = String.Empty;
+			public Dictionary <string, EmbeddedResource> Resources = new Dictionary <string, EmbeddedResource> (StringComparer.Ordinal);
+		}
 	}
 }
 
diff --git a/mcs/class/System.Web/System.Web.Handlers/ChangeLog b/mcs/class/System.Web/System.Web.Handlers/ChangeLog
index c1b9f63..46e10b5 100644
--- a/mcs/class/System.Web/System.Web.Handlers/ChangeLog
+++ b/mcs/class/System.Web/System.Web.Handlers/ChangeLog
@@ -1,17 +1,51 @@
-2010-10-12  Sebastien Pouliot  <sebastien at ximian.com>
+2011-01-03  Marek Habersack  <grendel at twistedcode.net>
 
-	A few moves/changes following previous patch review
+	Fix for bug #659064. Resource URLs must always be the same.
+	UpdatePanel triggers must always be initialized.
 
-2010-10-08  Sebastien Pouliot  <sebastien at ximian.com>
+	String hash cache must not be thread-local. Hashes computed for a
+	string once must be shared by all the threads or different URLs
+	may be generated for the same assembly+resource pair. UpdatePanel
+	triggers must be initialized not only during the Load event but
+	also when they are inserted after that point.
 
-	* System.Web.Handlers/AssemblyResourceLoader.cs: Use the new
-	common cryptographic code and base64 the encrypted data.
+2010-11-09  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Don't instantiate the hash algorithm used to encrypt
+	resource URLs on each request if it can be reused.
+
+	The algorithm instance is kept in a thread-local variable.
+
+2010-11-08  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Optimize memory usage a bit. String hashes are cached in
+	thread-local storage.
+
+2010-11-03  Marek Habersack  <grendel at twistedcode.net>
+
+	* System.Web/System.Web.Handlers/AssemblyResourceLoader.cs:
+	AssemblyResourceLoader/ScriptResourceHandler must always generate
+	the same URL for every assembly+resource pair, or otherwise the
+	browser would re-fetch the resource in situations where it is not
+	desired (e.g. during an async request to the server to update a
+	panel). The generated URLs are not encrypted using real
+	encryption, just hashed. In addition, the handler code got
+	modernized a bit.
 
 2010-10-18  Marek Habersack  <grendel at twistedcode.net>
 
 	[asp.net] make sure the string we pass to DecryptAssemblyResource
 	is a valid Base64 string
 
+2010-10-12  Sebastien Pouliot  <sebastien at ximian.com>
+
+	A few moves/changes following previous patch review
+
+2010-10-08  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* System.Web.Handlers/AssemblyResourceLoader.cs: Use the new
+	common cryptographic code and base64 the encrypted data.
+
 2009-07-08 Gonzalo Paniagua Javier <gonzalo at novell.com>
 
 	* AssemblyResourceLoader.cs: send minimal headers set and don't call
diff --git a/mcs/class/System.Web/System.Web.Mail/ChangeLog b/mcs/class/System.Web/System.Web.Mail/ChangeLog
index 89d8f5f..ef18c21 100644
--- a/mcs/class/System.Web/System.Web.Mail/ChangeLog
+++ b/mcs/class/System.Web/System.Web.Mail/ChangeLog
@@ -1,3 +1,7 @@
+2010-10-08  Sebastien Pouliot  <sebastien at ximian.com>
+
+	Remove unneeded 'using' clauses
+
 2007-12-13  Marek Habersack  <mhabersack at novell.com>
 
 	* MailAddress.cs, SmtpClient.cs, MailMessageWrapper.cs: speed
diff --git a/mcs/class/System.Web/System.Web.Mail/ChangeLog b/mcs/class/System.Web/System.Web.Mail/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Web/System.Web.Mail/ChangeLog
copy to mcs/class/System.Web/System.Web.Mail/ChangeLog.old
diff --git a/mcs/class/System.Web/System.Web.Mail/SmtpStream.cs b/mcs/class/System.Web/System.Web.Mail/SmtpStream.cs
index 015f268..489b4e9 100644
--- a/mcs/class/System.Web/System.Web.Mail/SmtpStream.cs
+++ b/mcs/class/System.Web/System.Web.Mail/SmtpStream.cs
@@ -30,7 +30,6 @@ using System;
 using System.IO;
 using System.Collections;
 using System.Text;
-using System.Security.Cryptography;
 using System.Diagnostics;
 
 namespace System.Web.Mail {
diff --git a/mcs/class/System.Web/System.Web.Security/ChangeLog b/mcs/class/System.Web/System.Web.Security/ChangeLog
index bddcfdf..ad26291 100644
--- a/mcs/class/System.Web/System.Web.Security/ChangeLog
+++ b/mcs/class/System.Web/System.Web.Security/ChangeLog
@@ -1,8 +1,16 @@
-2010-10-04  Sebastien Pouliot  <sebastien at ximian.com>
+2010-10-28  Marek Habersack  <grendel at twistedcode.net>
 
-	* System.Web.Security/FormsAuthentication.cs: Fix typo
-	(MD5->SHA1). I suspect the later is not used very much by mono
-	users
+	[asp.net] Cosmetics + dead code removal
+
+2010-10-28  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Fix for bug #646810. Implemented
+	FormsAuthentication.EnableFormsAUthentication + tests
+
+2010-10-27  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Fix for bug #643847. Membership.CreateUser overloads
+	must check username and password for correctness.
 
 2010-10-12  Sebastien Pouliot  <sebastien at ximian.com>
 
@@ -23,6 +31,16 @@
 	* System.Web.Security/SqliteMembershipProvider.cs: Adapt code for
 	internal API change.
 
+2010-10-08  Sebastien Pouliot  <sebastien at ximian.com>
+
+	Remove unneeded 'using' clauses
+
+2010-10-04  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* System.Web.Security/FormsAuthentication.cs: Fix typo
+	(MD5->SHA1). I suspect the later is not used very much by mono
+	users
+
 2010-06-19  Marek Habersack  <mhabersack at novell.com>
 
 	* FormsAuthentication.cs: Authenticate must compare stored and
diff --git a/mcs/class/System.Web/System.Web.Security/FormsAuthentication.cs b/mcs/class/System.Web/System.Web.Security/FormsAuthentication.cs
index ac9ec76..6243905 100644
--- a/mcs/class/System.Web/System.Web.Security/FormsAuthentication.cs
+++ b/mcs/class/System.Web/System.Web.Security/FormsAuthentication.cs
@@ -5,7 +5,7 @@
 //	Gonzalo Paniagua Javier (gonzalo at ximian.com)
 //
 // (C) 2002,2003 Ximian, Inc (http://www.ximian.com)
-// Copyright (c) 2005 Novell, Inc (http://www.novell.com)
+// Copyright (c) 2005-2010 Novell, Inc (http://www.novell.com)
 //
 
 //
@@ -36,8 +36,10 @@ using System.Security.Permissions;
 using System.Text;
 using System.Web;
 using System.Web.Configuration;
+using System.Web.Compilation;
 using System.Web.Util;
 using System.Globalization;
+using System.Collections.Specialized;
 
 namespace System.Web.Security
 {
@@ -47,6 +49,7 @@ namespace System.Web.Security
 	{
 		static string authConfigPath = "system.web/authentication";
 		static string machineKeyConfigPath = "system.web/machineKey";
+		static object locker = new object ();
 #if TARGET_J2EE
 		const string Forms_initialized = "Forms.initialized";
 		const string Forms_cookieName = "Forms.cookieName";
@@ -84,17 +87,7 @@ namespace System.Web.Security
 			get { return (FormsProtectionEnum) AppDomain.CurrentDomain.GetData (Forms_protection); }
 			set { AppDomain.CurrentDomain.SetData (Forms_protection, value); }
 		}
-		static object locker = new object ();
-#else
-		static bool initialized;
-		static string cookieName;
-		static string cookiePath;
-		static int timeout;
-		static FormsProtectionEnum protection;
-		static object locker = new object ();
-#endif
-#if NET_1_1
-#if TARGET_J2EE
+
 		const string Forms_requireSSL = "Forms.requireSSL";
 		const string Forms_slidingExpiration = "Forms.slidingExpiration";
 
@@ -114,13 +107,7 @@ namespace System.Web.Security
 			}
 			set { AppDomain.CurrentDomain.SetData (Forms_slidingExpiration, value); }
 		}
-#else
-		static bool requireSSL;
-		static bool slidingExpiration;
-#endif
-#endif
-#if NET_2_0
-#if TARGET_J2EE
+
 		const string Forms_cookie_domain = "Forms.cookie_domain";
 		const string Forms_cookie_mode = "Forms.cookie_mode";
 		const string Forms_cookies_supported = "Forms.cookies_supported";
@@ -164,6 +151,13 @@ namespace System.Web.Security
 			set { AppDomain.CurrentDomain.SetData (Forms_login_url, value); }
 		}
 #else
+		static bool initialized;
+		static string cookieName;
+		static string cookiePath;
+		static int timeout;
+		static FormsProtectionEnum protection;
+		static bool requireSSL;
+		static bool slidingExpiration;
 		static string cookie_domain;
 		static HttpCookieMode cookie_mode;
 		static bool cookies_supported;
@@ -171,14 +165,28 @@ namespace System.Web.Security
 		static bool enable_crossapp_redirects;
 		static string login_url;
 #endif
-#endif
 		// same names and order used in xsp
 		static string [] indexFiles = { "index.aspx",
 						"Default.aspx",
 						"default.aspx",
 						"index.html",
 						"index.htm" };
+#if NET_4_0
+		public static void EnableFormsAuthentication (NameValueCollection configurationData)
+		{
+			BuildManager.AssertPreStartMethodsRunning ();
+			if (configurationData == null || configurationData.Count == 0)
+				return;
+
+			string value = configurationData ["loginUrl"];
+			if (!String.IsNullOrEmpty (value))
+				login_url = value;
 
+			value = configurationData ["defaultUrl"];
+			if (!String.IsNullOrEmpty (value))
+				default_url = value;
+		}
+#endif
 		public FormsAuthentication ()
 		{
 		}
@@ -194,7 +202,7 @@ namespace System.Web.Security
 				throw new HttpException ("Context is null!");
 
 			name = name.ToLower (Helpers.InvariantCulture);
-#if NET_2_0
+
 			AuthenticationSection section = (AuthenticationSection) WebConfigurationManager.GetSection (authConfigPath);
 			FormsAuthenticationCredentials config = section.Forms.Credentials;
 			FormsAuthenticationUser user = config.Users[name];
@@ -202,26 +210,22 @@ namespace System.Web.Security
 
 			if (user != null)
 				stored = user.Password;
-#else
-			AuthConfig config = context.GetConfig (authConfigPath) as AuthConfig;
-			Hashtable users = config.CredentialUsers;
-			string stored = users [name] as string;
-#endif
+
 			if (stored == null)
 				return false;
 
 			bool caseInsensitive = true;
 			switch (config.PasswordFormat) {
-			case FormsAuthPasswordFormat.Clear:
-				caseInsensitive = false;
-				/* Do nothing */
-				break;
-			case FormsAuthPasswordFormat.MD5:
-				password = HashPasswordForStoringInConfigFile (password, FormsAuthPasswordFormat.MD5);
-				break;
-			case FormsAuthPasswordFormat.SHA1:
-				password = HashPasswordForStoringInConfigFile (password, FormsAuthPasswordFormat.SHA1);
-				break;
+				case FormsAuthPasswordFormat.Clear:
+					caseInsensitive = false;
+					/* Do nothing */
+					break;
+				case FormsAuthPasswordFormat.MD5:
+					password = HashPasswordForStoringInConfigFile (password, FormsAuthPasswordFormat.MD5);
+					break;
+				case FormsAuthPasswordFormat.SHA1:
+					password = HashPasswordForStoringInConfigFile (password, FormsAuthPasswordFormat.SHA1);
+					break;
 			}
 
 			return String.Compare (password, stored, caseInsensitive ? StringComparison.OrdinalIgnoreCase : StringComparison.Ordinal) == 0;
@@ -232,12 +236,7 @@ namespace System.Web.Security
 			if (protection == FormsProtectionEnum.None)
 				return FormsAuthenticationTicket.FromByteArray (bytes);
 
-#if NET_2_0
 			MachineKeySection config = (MachineKeySection) WebConfigurationManager.GetWebApplicationSection (machineKeyConfigPath);
-#else
-			MachineKeyConfig config = HttpContext.GetAppConfig (machineKeyConfigPath) as MachineKeyConfig;
-#endif
-
 			byte [] result = null;
 			if (protection == FormsProtectionEnum.All) {
 				result = MachineKeySectionUtils.VerifyDecrypt (config, bytes);
@@ -252,7 +251,7 @@ namespace System.Web.Security
 
 		public static FormsAuthenticationTicket Decrypt (string encryptedTicket)
 		{
-			if (encryptedTicket == null || encryptedTicket == String.Empty)
+			if (String.IsNullOrEmpty (encryptedTicket))
 				throw new ArgumentException ("Invalid encrypted ticket", "encryptedTicket");
 
 			Initialize ();
@@ -280,11 +279,8 @@ namespace System.Web.Security
 				return Convert.ToBase64String (ticket_bytes);
 
 			byte [] result = null;
-#if NET_2_0
 			MachineKeySection config = (MachineKeySection) WebConfigurationManager.GetWebApplicationSection (machineKeyConfigPath);
-#else
-			MachineKeyConfig config = HttpContext.GetAppConfig (machineKeyConfigPath) as MachineKeyConfig;
-#endif
+
 			if (protection == FormsProtectionEnum.All) {
 				result = MachineKeySectionUtils.EncryptSign (config, ticket_bytes);
 			} else if (protection == FormsProtectionEnum.Encryption) {
@@ -332,15 +328,13 @@ namespace System.Web.Security
 			HttpCookie cookie = new HttpCookie (cookieName, Encrypt (ticket), strCookiePath, then);
 			if (requireSSL)
 				cookie.Secure = true;
-#if NET_2_0
 			if (!String.IsNullOrEmpty (cookie_domain))
 				cookie.Domain = cookie_domain;
-#endif
+
 			return cookie;
 		}
 
-		internal static string ReturnUrl
-		{
+		internal static string ReturnUrl {
 			get { return HttpContext.Current.Request ["RETURNURL"]; }
 		}
 
@@ -404,9 +398,9 @@ namespace System.Web.Security
 			if (passwordFormat == null)
 				throw new ArgumentNullException ("passwordFormat");
 
-			if (String.Compare (passwordFormat, "MD5", true, Helpers.InvariantCulture) == 0) {
+			if (String.Compare (passwordFormat, "MD5", StringComparison.OrdinalIgnoreCase) == 0) {
 				return HashPasswordForStoringInConfigFile (password, FormsAuthPasswordFormat.MD5);
-			} else if (String.Compare (passwordFormat, "SHA1", true, Helpers.InvariantCulture) == 0) {
+			} else if (String.Compare (passwordFormat, "SHA1", StringComparison.OrdinalIgnoreCase) == 0) {
 				return HashPasswordForStoringInConfigFile (password, FormsAuthPasswordFormat.SHA1);
 			} else {
 				throw new ArgumentException ("The format must be either MD5 or SHA1", "passwordFormat");
@@ -422,7 +416,6 @@ namespace System.Web.Security
 				if (initialized)
 					return;
 
-#if NET_2_0
 				AuthenticationSection section = (AuthenticationSection)WebConfigurationManager.GetSection (authConfigPath);
 				FormsAuthenticationConfiguration config = section.Forms;
 
@@ -435,44 +428,30 @@ namespace System.Web.Security
 				cookie_domain = config.Domain;
 				cookie_mode = config.Cookieless;
 				cookies_supported = true; /* XXX ? */
-				default_url = MapUrl(config.DefaultUrl);
-				enable_crossapp_redirects = config.EnableCrossAppRedirects;
-				login_url = MapUrl(config.LoginUrl);
-#else
-				HttpContext context = HttpContext.Current;
-				AuthConfig authConfig = context.GetConfig (authConfigPath) as AuthConfig;
-				if (authConfig != null) {
-					cookieName = authConfig.CookieName;
-					timeout = authConfig.Timeout;
-					cookiePath = authConfig.CookiePath;
-					protection = authConfig.Protection;
-#if NET_1_1
-					requireSSL = authConfig.RequireSSL;
-					slidingExpiration = authConfig.SlidingExpiration;
-#endif
-				} else {
-					cookieName = ".MONOAUTH";
-					timeout = 30;
-					cookiePath = "/";
-					protection = FormsProtectionEnum.All;
-#if NET_1_1
-					slidingExpiration = true;
+#if NET_4_0
+				if (!String.IsNullOrEmpty (default_url))
+					default_url = MapUrl (default_url);
+				else
 #endif
-				}
+					default_url = MapUrl(config.DefaultUrl);
+				enable_crossapp_redirects = config.EnableCrossAppRedirects;
+#if NET_4_0
+				if (!String.IsNullOrEmpty (login_url))
+					login_url = MapUrl (login_url);
+				else
 #endif
+					login_url = MapUrl(config.LoginUrl);
 
 				initialized = true;
 			}
 		}
 
-#if NET_2_0
 		static string MapUrl (string url) {
 			if (UrlUtils.IsRelativeUrl (url))
 				return UrlUtils.Combine (HttpRuntime.AppDomainAppVirtualPath, url);
 			else
 				return UrlUtils.ResolveVirtualPathFromAppAbsolute (url);
 		}
-#endif
 
 		public static void RedirectFromLoginPage (string userName, bool createPersistentCookie)
 		{
@@ -541,15 +520,10 @@ namespace System.Web.Security
 			HttpCookie expiration_cookie = new HttpCookie (cookieName, String.Empty);
 			expiration_cookie.Expires = new DateTime (1999, 10, 12);
 			expiration_cookie.Path = cookiePath;
-#if NET_2_0
 			if (!String.IsNullOrEmpty (cookie_domain))
 				expiration_cookie.Domain = cookie_domain;
-#endif
 			cc.Add (expiration_cookie);
-
-#if NET_2_0
 			Roles.DeleteCookie ();
-#endif
 		}
 
 		public static string FormsCookieName
@@ -567,7 +541,7 @@ namespace System.Web.Security
 				return cookiePath;
 			}
 		}
-#if NET_1_1
+
 		public static bool RequireSSL {
 			get {
 				Initialize ();
@@ -581,9 +555,7 @@ namespace System.Web.Security
 				return slidingExpiration;
 			}
 		}
-#endif
 
-#if NET_2_0
 		public static string CookieDomain {
 			get { Initialize (); return cookie_domain; }
 		}
@@ -624,7 +596,6 @@ namespace System.Web.Security
 		{
 			HttpContext.Current.Response.Redirect (url);
 		}
-#endif
 
 		static void Redirect (string url, bool end)
 		{
diff --git a/mcs/class/System.Web/System.Web.Security/Membership.cs b/mcs/class/System.Web/System.Web.Security/Membership.cs
index b33ba52..4659842 100644
--- a/mcs/class/System.Web/System.Web.Security/Membership.cs
+++ b/mcs/class/System.Web/System.Web.Security/Membership.cs
@@ -138,11 +138,21 @@ namespace System.Web.Security
 		
 		public static MembershipUser CreateUser (string username, string password, string email, string pwdQuestion, string pwdAnswer, bool isApproved, out MembershipCreateStatus status)
 		{
-			return Provider.CreateUser (username, password, email, pwdQuestion, pwdAnswer, isApproved, null, out status);
+			return CreateUser (username, password, email, pwdQuestion, pwdAnswer, isApproved, null, out status);
 		}
 		
 		public static MembershipUser CreateUser (string username, string password, string email, string pwdQuestion, string pwdAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status)
 		{
+			if (String.IsNullOrEmpty (username)) {
+				status = MembershipCreateStatus.InvalidUserName;
+				return null;
+			}
+
+			if (String.IsNullOrEmpty (password)) {
+				status = MembershipCreateStatus.InvalidPassword;
+				return null;
+			}
+
 			return Provider.CreateUser (username, password, email, pwdQuestion, pwdAnswer, isApproved, providerUserKey, out status);
 		}
 		
diff --git a/mcs/class/System.Web/System.Web.Security/MembershipProvider.cs b/mcs/class/System.Web/System.Web.Security/MembershipProvider.cs
index b88e312..75b8d4b 100644
--- a/mcs/class/System.Web/System.Web.Security/MembershipProvider.cs
+++ b/mcs/class/System.Web/System.Web.Security/MembershipProvider.cs
@@ -32,7 +32,6 @@ using System.ComponentModel;
 using System.Configuration.Provider;
 using System.Reflection;
 using System.Runtime.CompilerServices;
-using System.Security.Cryptography;
 using System.Text;
 using System.Web.Configuration;
 
diff --git a/mcs/class/System.Web/System.Web.SessionState_2.0/ChangeLog b/mcs/class/System.Web/System.Web.SessionState_2.0/ChangeLog
index b83e184..6592ae9 100644
--- a/mcs/class/System.Web/System.Web.SessionState_2.0/ChangeLog
+++ b/mcs/class/System.Web/System.Web.SessionState_2.0/ChangeLog
@@ -1,3 +1,17 @@
+2010-12-09  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Get system.web/httpRuntime only once
+
+	Get that section only once and keep it in HttpRuntime.
+
+2010-11-18  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] A few memory usage optimizations.
+
+2010-11-13  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Cache + SessionInProcHandler memory usage improvements
+
 2010-10-12  Sebastien Pouliot  <sebastien at ximian.com>
 
 	A few moves/changes following previous patch review
@@ -6,6 +20,10 @@
 
 	Normalization of cryptographic uses in asp.net
 
+2010-10-08  Sebastien Pouliot  <sebastien at ximian.com>
+
+	Remove unneeded 'using' clauses
+
 2010-08-10  Marek Habersack  <grendel at twistedcode.net>
 
 	[asp.net] Fix for bug #629990 In-Proc session state must remove
diff --git a/mcs/class/System.Web/System.Web.SessionState_2.0/SessionIDManager.cs b/mcs/class/System.Web/System.Web.SessionState_2.0/SessionIDManager.cs
index 26265b9..eec0279 100644
--- a/mcs/class/System.Web/System.Web.SessionState_2.0/SessionIDManager.cs
+++ b/mcs/class/System.Web/System.Web.SessionState_2.0/SessionIDManager.cs
@@ -28,7 +28,6 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 #if NET_2_0
-using System.Security.Cryptography;
 using System.Web;
 using System.Web.Configuration;
 using System.Web.Util;
diff --git a/mcs/class/System.Web/System.Web.SessionState_2.0/SessionInProcHandler.cs b/mcs/class/System.Web/System.Web.SessionState_2.0/SessionInProcHandler.cs
index 6ec6245..566fa35 100644
--- a/mcs/class/System.Web/System.Web.SessionState_2.0/SessionInProcHandler.cs
+++ b/mcs/class/System.Web/System.Web.SessionState_2.0/SessionInProcHandler.cs
@@ -5,6 +5,7 @@
 //	Marek Habersack <grendello at gmail.com>
 //
 // (C) 2006 Marek Habersack
+// (C) 2010 Novell, Inc (http://novell.com/)
 //
 
 //
@@ -46,7 +47,7 @@ namespace System.Web.SessionState
 		public ISessionStateItemCollection items;
 		public DateTime lockedTime;
 		public DateTime expiresAt;
-		public ReaderWriterLock rwlock;
+		public ReaderWriterLockSlim rwlock;
 		public Int32 lockId;
 		public int timeout;
 		public bool resettingTimeout;
@@ -60,11 +61,28 @@ namespace System.Web.SessionState
 			this.staticItems = null;
 			this.lockedTime = DateTime.MinValue;
 			this.expiresAt = DateTime.MinValue;
-			this.rwlock = new ReaderWriterLock ();
+			this.rwlock = new ReaderWriterLockSlim ();
 			this.lockId = Int32.MinValue;
 			this.timeout = 0;
 			this.resettingTimeout = false;
 		}
+
+		public void Dispose ()
+		{
+			if (rwlock != null) {
+				rwlock.Dispose ();
+				rwlock = null;
+			}
+			staticItems = null;
+			if (items != null)
+				items.Clear ();
+			items = null;
+		}
+		
+		~InProcSessionItem ()
+		{
+			Dispose ();
+		}
 	}
 	
 	internal class SessionInProcHandler : SessionStateStoreProviderBase
@@ -114,6 +132,10 @@ namespace System.Web.SessionState
 		
 		public override void EndRequest (HttpContext context)
 		{
+			if (staticObjects != null) {
+				staticObjects.GetObjects ().Clear ();
+				staticObjects = null;
+			}
 		}
 
 		SessionStateStoreData GetItemInternal (HttpContext context,
@@ -138,18 +160,26 @@ namespace System.Web.SessionState
 			
 			if (item == null)
 				return null;
-			
+
+			bool readLocked = false, writeLocked = false;
 			try {
-				item.rwlock.AcquireReaderLock (lockAcquireTimeout);
+				if (item.rwlock.TryEnterUpgradeableReadLock (lockAcquireTimeout))
+					readLocked = true;
+				else
+					throw new ApplicationException ("Failed to acquire lock");
+				
 				if (item.locked) {
 					locked = true;
 					lockAge = DateTime.UtcNow.Subtract (item.lockedTime);
 					lockId = item.lockId;
 					return null;
 				}
-				item.rwlock.ReleaseReaderLock ();
+				
 				if (exclusive) {
-					item.rwlock.AcquireWriterLock (lockAcquireTimeout);
+					if (item.rwlock.TryEnterWriteLock (lockAcquireTimeout))
+						writeLocked = true;
+					else
+						throw new ApplicationException ("Failed to acquire lock");
 					item.locked = true;
 					item.lockedTime = DateTime.UtcNow;
 					item.lockId++;
@@ -169,10 +199,10 @@ namespace System.Web.SessionState
 				// we want such errors to be passed to the application.
 				throw;
 			} finally {
-				if (item.rwlock.IsReaderLockHeld) 
-					item.rwlock.ReleaseReaderLock ();
-				if (item.rwlock.IsWriterLockHeld) 
-					item.rwlock.ReleaseWriterLock ();
+				if (writeLocked)
+					item.rwlock.ExitWriteLock ();
+				if (readLocked)
+					item.rwlock.ExitUpgradeableReadLock ();
 			}
 		}
 		
@@ -223,14 +253,18 @@ namespace System.Web.SessionState
 			if (item == null || lockId == null || lockId.GetType() != typeof(Int32) || item.lockId != (Int32)lockId)
 				return;
 
+			bool locked = false;
 			try {
-				item.rwlock.AcquireWriterLock (lockAcquireTimeout);
+				if (item.rwlock.TryEnterWriteLock (lockAcquireTimeout))
+					locked = true;
+				else
+					throw new ApplicationException ("Failed to acquire lock");
 				item.locked = false;
 			} catch {
 				throw;
 			} finally {
-				if (item.rwlock.IsWriterLockHeld)
-					item.rwlock.ReleaseWriterLock ();
+				if (locked)
+					item.rwlock.ExitWriteLock ();
 			}
 		}
 		
@@ -247,14 +281,18 @@ namespace System.Web.SessionState
 			if (inProcItem == null || lockId == null || lockId.GetType() != typeof(Int32) || inProcItem.lockId != (Int32)lockId)
 				return;
 
+			bool locked = false;
 			try {
-				inProcItem.rwlock.AcquireWriterLock (lockAcquireTimeout);
+				if (inProcItem.rwlock.TryEnterWriteLock (lockAcquireTimeout))
+					locked = true;
+				else
+					throw new ApplicationException ("Failed to acquire lock after");
 				cache.Remove (CacheId);
 			} catch {
 				throw;
 			} finally {
-				if (inProcItem.rwlock.IsWriterLockHeld)
-					inProcItem.rwlock.ReleaseWriterLock ();
+				if (locked)
+					inProcItem.rwlock.ExitWriteLock ();
 			}
 		}
 		
@@ -268,16 +306,20 @@ namespace System.Web.SessionState
 			if (item == null)
 				return;
 
+			bool locked = false;
 			try {
-				item.rwlock.AcquireWriterLock (lockAcquireTimeout);
+				if (item.rwlock.TryEnterWriteLock (lockAcquireTimeout))
+					locked = true;
+				else
+					throw new ApplicationException ("Failed to acquire lock after");
 				item.resettingTimeout = true;
 				cache.Remove (CacheId);
 				InsertSessionItem (item, item.timeout, CacheId);
 			} catch {
 				throw;
 			} finally {
-				if (item.rwlock.IsWriterLockHeld)
-					item.rwlock.ReleaseWriterLock ();
+				if (locked)
+					item.rwlock.ExitWriteLock ();
 			}
 		}
 
@@ -322,9 +364,13 @@ namespace System.Web.SessionState
 				inProcItem.resettingTimeout = true;
 				cache.Remove (CacheId);
 			}
-			
+
+			bool locked = false;
 			try {
-				inProcItem.rwlock.AcquireWriterLock (lockAcquireTimeout);
+				if (inProcItem.rwlock.TryEnterWriteLock (lockAcquireTimeout))
+					locked = true;
+				else
+					throw new ApplicationException ("Failed to acquire lock");
 				inProcItem.locked = false;
 				inProcItem.items = itemItems;
 				inProcItem.staticItems = itemStaticItems;
@@ -332,8 +378,8 @@ namespace System.Web.SessionState
 			} catch {
 				throw;
 			} finally {
-				if (inProcItem.rwlock.IsWriterLockHeld)
-					inProcItem.rwlock.ReleaseWriterLock ();
+				if (locked)
+					inProcItem.rwlock.ExitWriteLock ();
 			}
 		}
 		
@@ -375,9 +421,11 @@ namespace System.Web.SessionState
 								item.items,
 								item.staticItems,
 								item.timeout));
+					item.Dispose ();
 				} else
 					expireCallback (key, null);
-			}
+			} else if (value is InProcSessionItem)
+				((InProcSessionItem)value).Dispose ();
                 }
 	}
 }
diff --git a/mcs/class/System.Web/System.Web.SessionState_2.0/SessionStateModule.cs b/mcs/class/System.Web/System.Web.SessionState_2.0/SessionStateModule.cs
index 74098bb..82521f8 100644
--- a/mcs/class/System.Web/System.Web.SessionState_2.0/SessionStateModule.cs
+++ b/mcs/class/System.Web/System.Web.SessionState_2.0/SessionStateModule.cs
@@ -36,7 +36,6 @@ using System.ComponentModel;
 using System.Web.Configuration;
 using System.Web.Caching;
 using System.Web.Util;
-using System.Security.Cryptography;
 using System.Security.Permissions;
 using System.Threading;
 using System.Configuration;
@@ -174,7 +173,7 @@ namespace System.Web.SessionState
 			}
 
 			supportsExpiration = handler.SetItemExpireCallback (OnSessionExpired);
-			HttpRuntimeSection runtime = WebConfigurationManager.GetSection ("system.web/httpRuntime") as HttpRuntimeSection;
+			HttpRuntimeSection runtime = HttpRuntime.Section;
 			executionTimeout = runtime.ExecutionTimeout;
 			//executionTimeoutMS = executionTimeout.Milliseconds;
 
diff --git a/mcs/class/System.Web/System.Web.UI.HtmlControls/ChangeLog b/mcs/class/System.Web/System.Web.UI.HtmlControls/ChangeLog
index 928ce70..836fef3 100644
--- a/mcs/class/System.Web/System.Web.UI.HtmlControls/ChangeLog
+++ b/mcs/class/System.Web/System.Web.UI.HtmlControls/ChangeLog
@@ -1,3 +1,13 @@
+2011-01-11  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Fix for bug #662918. Do not create the HtmlTitle child
+	control for HtmlHead if <title> wasn't used in the page code.
+
+2010-10-30  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Fix for bug #650050. HtmlSelect must render non-standard
+	attributes of every ListItem.
+
 2010-07-09  Marek Habersack  <mhabersack at novell.com>
 
 	* HtmlInputButton.cs: if ServerClick handler is found, do NOT
diff --git a/mcs/class/System.Web/System.Web.UI.HtmlControls/ChangeLog b/mcs/class/System.Web/System.Web.UI.HtmlControls/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Web/System.Web.UI.HtmlControls/ChangeLog
copy to mcs/class/System.Web/System.Web.UI.HtmlControls/ChangeLog.old
diff --git a/mcs/class/System.Web/System.Web.UI.HtmlControls/HtmlHead.cs b/mcs/class/System.Web/System.Web.UI.HtmlControls/HtmlHead.cs
index fac92b0..1e1773f 100644
--- a/mcs/class/System.Web/System.Web.UI.HtmlControls/HtmlHead.cs
+++ b/mcs/class/System.Web/System.Web.UI.HtmlControls/HtmlHead.cs
@@ -72,9 +72,13 @@ namespace System.Web.UI.HtmlControls
 		
 		protected internal override void RenderChildren (HtmlTextWriter writer)
 		{
-			EnsureTitleControl ();
-
 			base.RenderChildren (writer);
+			if (title == null) {
+				writer.RenderBeginTag (HtmlTextWriterTag.Title);
+				if (!String.IsNullOrEmpty (titleText))
+					writer.Write (titleText);
+				writer.RenderEndTag ();
+			}
 #if NET_4_0
 			if (descriptionMeta == null && descriptionText != null) {
 				writer.AddAttribute ("name", "description");
@@ -129,15 +133,6 @@ namespace System.Web.UI.HtmlControls
 #endif
 			base.RemovedControl (control);
 		}
-		
-		void EnsureTitleControl () {
-			if (title != null)
-				return;
-
-			HtmlTitle t = new HtmlTitle ();
-			t.Text = titleText;
-			Controls.Add (t);
-		}
 #if NET_4_0
 		public string Description {
 			get {
diff --git a/mcs/class/System.Web/System.Web.UI.HtmlControls/HtmlSelect.cs b/mcs/class/System.Web/System.Web.UI.HtmlControls/HtmlSelect.cs
index 5df9080..5416e3a 100644
--- a/mcs/class/System.Web/System.Web.UI.HtmlControls/HtmlSelect.cs
+++ b/mcs/class/System.Web/System.Web.UI.HtmlControls/HtmlSelect.cs
@@ -639,6 +639,11 @@ namespace System.Web.UI.HtmlControls
 				}
 				
 				w.WriteAttribute ("value", item.Value, true);
+				if (item.HasAttributes) {
+					AttributeCollection attrs = item.Attributes;
+					foreach (string key in attrs.Keys)
+						w.WriteAttribute (key, HttpUtility.HtmlAttributeEncode (attrs [key]));
+				}
 				w.Write (HtmlTextWriter.TagRightChar);
 				
 				w.Write (HttpUtility.HtmlEncode(item.Text));
diff --git a/mcs/class/System.Web/System.Web.UI.WebControls/BaseMenuRenderer.cs b/mcs/class/System.Web/System.Web.UI.WebControls/BaseMenuRenderer.cs
new file mode 100644
index 0000000..388a54c
--- /dev/null
+++ b/mcs/class/System.Web/System.Web.UI.WebControls/BaseMenuRenderer.cs
@@ -0,0 +1,506 @@
+//
+// Authors:
+//	Marek Habersack <grendel at twistedcode.net>
+//
+// (C) 2010 Novell, Inc (http://novell.com)
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Web;
+using System.Web.UI;
+using System.Web.UI.HtmlControls;
+
+namespace System.Web.UI.WebControls
+{
+	abstract class BaseMenuRenderer : IMenuRenderer
+	{
+		protected sealed class OwnerContext
+		{
+			BaseMenuRenderer container;
+			
+			string staticPopOutImageTextFormatString;
+			string dynamicPopOutImageTextFormatString;
+			string dynamicTopSeparatorImageUrl;
+			string dynamicBottomSeparatorImageUrl;
+			string staticTopSeparatorImageUrl;
+			string staticBottomSeparatorImageUrl;
+			List <Style> levelMenuItemLinkStyles;
+			List<Style> levelSelectedLinkStyles;
+			Style staticMenuItemLinkStyle;
+			Style dynamicMenuItemLinkStyle;
+			MenuItemStyle staticSelectedStyle;
+			Style staticSelectedLinkStyle;
+			MenuItemStyle dynamicSelectedStyle;
+			Style dynamicSelectedLinkStyle;
+			MenuItemStyleCollection levelSelectedStyles;
+			ITemplate dynamicItemTemplate;
+			bool dynamicItemTemplateQueried;
+			
+			public readonly MenuItemStyle StaticMenuItemStyle;
+			public readonly MenuItemStyle DynamicMenuItemStyle;
+			public readonly MenuItemStyleCollection LevelMenuItemStyles;
+			public readonly Style ControlLinkStyle;
+			public readonly HtmlHead Header;
+			public readonly string ClientID;
+			public readonly int StaticDisplayLevels;
+			public readonly bool IsVertical;
+			public readonly MenuItem SelectedItem;
+			public readonly Unit StaticSubMenuIndent;
+			
+			public string StaticPopOutImageTextFormatString {
+				get {
+					if (staticPopOutImageTextFormatString == null)
+						staticPopOutImageTextFormatString = container.Owner.StaticPopOutImageTextFormatString;
+
+					return staticPopOutImageTextFormatString;
+				}
+			}
+
+			public string DynamicPopOutImageTextFormatString {
+				get {
+					if (dynamicPopOutImageTextFormatString == null)
+						dynamicPopOutImageTextFormatString = container.Owner.DynamicPopOutImageTextFormatString;
+
+					return dynamicPopOutImageTextFormatString;
+				}
+			}
+
+			public string DynamicTopSeparatorImageUrl {
+				get {
+					if (dynamicTopSeparatorImageUrl == null)
+						dynamicTopSeparatorImageUrl = container.Owner.DynamicTopSeparatorImageUrl;
+
+					return dynamicTopSeparatorImageUrl;
+				}
+			}
+			
+			public string DynamicBottomSeparatorImageUrl {
+				get {
+					if (dynamicBottomSeparatorImageUrl == null)
+						dynamicBottomSeparatorImageUrl = container.Owner.DynamicBottomSeparatorImageUrl;
+
+					return dynamicBottomSeparatorImageUrl;
+				}
+			}
+
+			public string StaticTopSeparatorImageUrl {
+				get {
+					if (staticTopSeparatorImageUrl == null)
+						staticTopSeparatorImageUrl = container.Owner.StaticTopSeparatorImageUrl;
+
+					return staticBottomSeparatorImageUrl;
+				}
+			}
+			
+			public string StaticBottomSeparatorImageUrl {
+				get {
+					if (staticBottomSeparatorImageUrl == null)
+						staticBottomSeparatorImageUrl = container.Owner.StaticBottomSeparatorImageUrl;
+
+					return staticBottomSeparatorImageUrl;
+				}
+			}
+			
+			public List <Style> LevelMenuItemLinkStyles {
+				get {
+					if (levelMenuItemLinkStyles == null)
+						levelMenuItemLinkStyles = container.Owner.LevelMenuItemLinkStyles;
+
+					return levelMenuItemLinkStyles;
+				}
+			}
+
+			public List<Style> LevelSelectedLinkStyles {
+				get {
+					if (levelSelectedLinkStyles == null)
+						levelSelectedLinkStyles = container.Owner.LevelSelectedLinkStyles;
+
+					return levelSelectedLinkStyles;
+				}
+			}
+			
+		
+			public Style StaticMenuItemLinkStyle {
+				get {
+					if (staticMenuItemLinkStyle == null)
+						staticMenuItemLinkStyle = container.Owner.StaticMenuItemLinkStyle;
+
+					return staticMenuItemLinkStyle;
+				}
+			}
+
+			public Style DynamicMenuItemLinkStyle {
+				get {
+					if (dynamicMenuItemLinkStyle == null)
+						dynamicMenuItemLinkStyle = container.Owner.DynamicMenuItemLinkStyle;
+
+					return dynamicMenuItemLinkStyle;
+				}
+			}
+
+			public MenuItemStyle StaticSelectedStyle {
+				get {
+					if (staticSelectedStyle == null)
+						staticSelectedStyle = container.Owner.StaticSelectedStyle;
+
+					return staticSelectedStyle;
+				}
+			}
+		
+			public MenuItemStyle DynamicSelectedStyle {
+				get {
+					if (dynamicSelectedStyle == null)
+						dynamicSelectedStyle = container.Owner.DynamicSelectedStyle;
+
+					return dynamicSelectedStyle;
+				}
+			}
+
+			public Style StaticSelectedLinkStyle {
+				get {
+					if (staticSelectedLinkStyle == null)
+						staticSelectedLinkStyle = container.Owner.StaticSelectedLinkStyle;
+
+					return staticSelectedLinkStyle;
+				}
+			}
+		
+			public Style DynamicSelectedLinkStyle {
+				get {
+					if (dynamicSelectedLinkStyle == null)
+						dynamicSelectedLinkStyle = container.Owner.DynamicSelectedLinkStyle;
+
+					return dynamicSelectedLinkStyle;
+				}
+			}
+
+			public MenuItemStyleCollection LevelSelectedStyles {
+				get {
+					if (levelSelectedStyles == null)
+						levelSelectedStyles = container.Owner.LevelSelectedStyles;
+
+					return levelSelectedStyles;
+				}
+			}
+			
+			public ITemplate DynamicItemTemplate {
+				get {
+					if (!dynamicItemTemplateQueried && dynamicItemTemplate == null) {
+						dynamicItemTemplate = container.Owner.DynamicItemTemplate;
+						dynamicItemTemplateQueried = true;
+					}
+
+					return dynamicItemTemplate;
+				}
+			}
+		
+			public OwnerContext (BaseMenuRenderer container)
+			{
+				if (container == null)
+					throw new ArgumentNullException ("container");
+
+				this.container = container;
+				Menu owner = container.Owner;
+				Page page = owner.Page;
+
+				Header = page != null ? page.Header : null;
+				ClientID = owner.ClientID;
+				IsVertical = owner.Orientation == Orientation.Vertical;
+				StaticSubMenuIndent = owner.StaticSubMenuIndent;
+				SelectedItem = owner.SelectedItem;
+				ControlLinkStyle = owner.ControlLinkStyle;
+				StaticDisplayLevels = owner.StaticDisplayLevels;
+				StaticMenuItemStyle = owner.StaticMenuItemStyleInternal;
+				DynamicMenuItemStyle = owner.DynamicMenuItemStyleInternal;
+				LevelMenuItemStyles = owner.LevelMenuItemStyles;
+			}
+		}
+
+		int registeredStylesCounter = -1;
+		
+		public abstract HtmlTextWriterTag Tag { get; }
+		
+		protected Menu Owner {
+			get;
+			private set;
+		}
+		
+		public BaseMenuRenderer (Menu owner)
+		{
+			if (owner == null)
+				throw new ArgumentNullException ("owner");
+
+			this.Owner = owner;
+		}
+		
+		public virtual void AddAttributesToRender (HtmlTextWriter writer)
+		{
+			Menu owner = Owner;
+			Page page = owner.Page;
+			SubMenuStyle staticMenuStyle = owner.StaticMenuStyleInternal;
+			SubMenuStyleCollection levelSubMenuStyles = owner.LevelSubMenuStylesInternal;
+			bool haveSubStyles = levelSubMenuStyles != null && levelSubMenuStyles.Count > 0;
+			Style controlStyle = haveSubStyles || staticMenuStyle != null ? owner.ControlStyle : null;
+			
+			if (page != null && page.Header != null) {	
+				// styles are registered
+				if (staticMenuStyle != null) {
+					AddCssClass (controlStyle, staticMenuStyle.CssClass);
+					AddCssClass (controlStyle, staticMenuStyle.RegisteredCssClass);
+				}
+				if (haveSubStyles) {
+					AddCssClass (controlStyle, levelSubMenuStyles [0].CssClass);
+					AddCssClass (controlStyle, levelSubMenuStyles [0].RegisteredCssClass);
+				}
+			} else {
+				// styles are not registered
+				if (staticMenuStyle != null)
+					controlStyle.CopyFrom (staticMenuStyle);
+				if (haveSubStyles)
+					controlStyle.CopyFrom (levelSubMenuStyles [0]);
+			}
+		}
+		
+		public abstract void PreRender (Page page, HtmlHead head, ClientScriptManager csm, string cmenu, StringBuilder script);
+		public abstract void RenderMenuBeginTag (HtmlTextWriter writer, bool dynamic, int menuLevel);
+		public abstract void RenderMenuBody (HtmlTextWriter writer, MenuItemCollection items, bool vertical, bool dynamic, bool notLast);
+		public abstract void RenderBeginTag (HtmlTextWriter writer, string skipLinkText);
+		public abstract void RenderEndTag (HtmlTextWriter writer);
+		public abstract void RenderContents (HtmlTextWriter writer);
+		public abstract bool IsDynamicItem (Menu owner, MenuItem item);
+		
+		protected abstract void RenderMenuItem (HtmlTextWriter writer, MenuItem item, bool vertical, bool notLast, bool isFirst, OwnerContext oc);
+		
+		public virtual void RenderMenuItem (HtmlTextWriter writer, MenuItem item, bool notLast, bool isFirst)
+		{
+			var oc = new OwnerContext (this);
+			RenderMenuItem (writer, item, oc.IsVertical, notLast, isFirst, oc);
+		}
+		
+		public virtual void RenderMenuEndTag (HtmlTextWriter writer, bool dynamic, int menuLevel)
+		{
+			writer.RenderEndTag ();
+		}
+
+		public virtual void RenderItemContent (HtmlTextWriter writer, MenuItem item, bool isDynamicItem)
+		{
+			Menu owner = Owner;
+			
+			if (!String.IsNullOrEmpty (item.ImageUrl)) {
+				writer.AddAttribute (HtmlTextWriterAttribute.Src, owner.ResolveClientUrl (item.ImageUrl));
+				writer.AddAttribute (HtmlTextWriterAttribute.Alt, item.ToolTip);
+				writer.AddStyleAttribute (HtmlTextWriterStyle.BorderStyle, "none");
+				writer.AddStyleAttribute (HtmlTextWriterStyle.VerticalAlign, "middle");
+				writer.RenderBeginTag (HtmlTextWriterTag.Img);
+				writer.RenderEndTag ();	// IMG
+			}
+
+			string format;
+			if (isDynamicItem && (format = owner.DynamicItemFormatString).Length > 0)
+				writer.Write (String.Format (format, item.Text));
+			else if (!isDynamicItem && (format = owner.StaticItemFormatString).Length > 0)
+				writer.Write (String.Format (format, item.Text));
+			else
+				writer.Write (item.Text);
+		}
+
+		public void AddCssClass (Style style, string cssClass)
+		{
+			style.AddCssClass (cssClass);
+		}
+		
+		public string GetItemClientId (string ownerClientID, MenuItem item, string suffix)
+		{
+			return ownerClientID + "_" + item.Path + suffix;
+		}
+
+		public virtual void RenderItemHref (Menu owner, HtmlTextWriter writer, MenuItem item)
+		{
+			if (!item.BranchEnabled)
+				writer.AddAttribute ("disabled", "true", false);
+			else if (!item.Selectable) {
+				writer.AddAttribute ("href", "#", false);
+				writer.AddStyleAttribute ("cursor", "text");
+			} else if (item.NavigateUrl != String.Empty) {
+				string target = item.Target != String.Empty ? item.Target : owner.Target;
+#if TARGET_J2EE
+				string navUrl = owner.ResolveClientUrl (item.NavigateUrl, String.Compare (target, "_blank", StringComparison.InvariantCultureIgnoreCase) != 0);
+#else
+				string navUrl = owner.ResolveClientUrl (item.NavigateUrl);
+#endif
+				writer.AddAttribute ("href", navUrl);
+				if (target != String.Empty)
+					writer.AddAttribute ("target", target);
+			} else
+				writer.AddAttribute ("href", GetClientEvent (owner, item));
+		}
+
+		public string GetPopOutImage (Menu owner, MenuItem item, bool isDynamicItem)
+		{
+			if (owner == null)
+				owner = Owner;
+			
+			if (item.PopOutImageUrl != String.Empty)
+				return item.PopOutImageUrl;
+
+			bool needArrowResource = false;
+			if (isDynamicItem) {
+				if (owner.DynamicPopOutImageUrl != String.Empty)
+					return owner.DynamicPopOutImageUrl;
+				if (owner.DynamicEnableDefaultPopOutImage)
+					needArrowResource = true;		
+			} else {
+				if (owner.StaticPopOutImageUrl != String.Empty)
+					return owner.StaticPopOutImageUrl;
+				if (owner.StaticEnableDefaultPopOutImage)
+					needArrowResource = true;
+			}
+
+			if (needArrowResource)
+				return GetArrowResourceUrl (owner);
+			
+			return null;
+		}
+
+		public string GetArrowResourceUrl (Menu owner) 
+		{
+			Page page = owner.Page;
+			ClientScriptManager csm = page != null ? page.ClientScript : null;
+			if (csm != null)
+				return csm.GetWebResourceUrl (typeof (Menu), "arrow_plus.gif");
+
+			return null;
+		}
+		
+		public void FillMenuStyle (HtmlHead header, bool dynamic, int menuLevel, SubMenuStyle style)
+		{
+			Menu owner = Owner;
+			if (header == null) {
+				Page page = owner.Page;
+				header = page != null ? page.Header : null;
+			}
+			
+			SubMenuStyle staticMenuStyle = owner.StaticMenuStyleInternal;
+//			MenuItemStyle dynamicMenuItemStyle = owner.DynamicMenuItemStyleInternal;
+			SubMenuStyle dynamicMenuStyle = owner.DynamicMenuStyleInternal;
+			SubMenuStyleCollection levelSubMenuStyles = owner.LevelSubMenuStylesInternal;
+			
+			if (header != null) {
+				// styles are registered
+				if (!dynamic && staticMenuStyle != null) {
+					AddCssClass (style, staticMenuStyle.CssClass);
+					AddCssClass (style, staticMenuStyle.RegisteredCssClass);
+				}
+				if (dynamic && dynamicMenuStyle != null) {
+					AddCssClass (style, dynamicMenuStyle.CssClass);
+					AddCssClass (style, dynamicMenuStyle.RegisteredCssClass);
+				}
+				if (levelSubMenuStyles != null && levelSubMenuStyles.Count > menuLevel) {
+					AddCssClass (style, levelSubMenuStyles [menuLevel].CssClass);
+					AddCssClass (style, levelSubMenuStyles [menuLevel].RegisteredCssClass);
+				}
+			} else {
+				// styles are not registered
+				if (!dynamic && staticMenuStyle != null)
+					style.CopyFrom (staticMenuStyle);
+				if (dynamic && dynamicMenuStyle != null)
+					style.CopyFrom (dynamicMenuStyle);
+				if (levelSubMenuStyles != null && levelSubMenuStyles.Count > menuLevel)
+					style.CopyFrom (levelSubMenuStyles [menuLevel]);
+			}
+		}
+
+		public void RegisterStyle (Style baseStyle, Style linkStyle, HtmlHead head)
+		{
+			RegisterStyle (baseStyle, linkStyle, null, head);
+		}
+
+		public void RegisterStyle (Style baseStyle, Style linkStyle, string className, HtmlHead head)
+		{
+			if (head == null)
+				return;
+			
+			linkStyle.CopyTextStylesFrom (baseStyle);
+			linkStyle.BorderStyle = BorderStyle.None;
+			RegisterStyle (linkStyle, className, head);
+			RegisterStyle (baseStyle, className, head);
+		}
+		
+		public void RegisterStyle (Style baseStyle, HtmlHead head)
+		{
+			RegisterStyle (baseStyle, (string)null, head);
+		}
+
+		public void RegisterStyle (Style baseStyle, string className, HtmlHead head)
+		{
+			if (head == null)
+				return;
+			if (String.IsNullOrEmpty (className))
+				className = IncrementStyleClassName ();
+			baseStyle.SetRegisteredCssClass (className);
+			head.StyleSheet.CreateStyleRule (baseStyle, Owner, "." + className);
+		}
+
+		public void RenderSeparatorImage (Menu owner, HtmlTextWriter writer, string url, bool standardsCompliant)
+		{
+			if (String.IsNullOrEmpty (url))
+				return;
+			
+			writer.AddAttribute (HtmlTextWriterAttribute.Src, owner.ResolveClientUrl (url));
+			if (standardsCompliant) {
+				writer.AddAttribute (HtmlTextWriterAttribute.Alt, String.Empty);
+				writer.AddAttribute (HtmlTextWriterAttribute.Class, "separator");
+			}
+			
+			writer.RenderBeginTag (HtmlTextWriterTag.Img);
+			writer.RenderEndTag ();
+		}
+		
+		public bool IsDynamicItem (MenuItem item)
+		{
+			return IsDynamicItem (Owner, item);
+		}
+		
+		string GetClientEvent (Menu owner, MenuItem item)
+		{
+			if (owner == null)
+				owner = Owner;
+
+			Page page = owner.Page;
+			ClientScriptManager csm = page != null ? page.ClientScript : null;
+
+			if (csm == null)
+				return String.Empty;
+			
+			return csm.GetPostBackClientHyperlink (owner, item.Path, true);
+		}
+
+		string IncrementStyleClassName ()
+		{
+			registeredStylesCounter++;
+			return Owner.ClientID + "_" + registeredStylesCounter;
+		}
+	}
+}
diff --git a/mcs/class/System.Web/System.Web.UI.WebControls/BoundField.cs b/mcs/class/System.Web/System.Web.UI.WebControls/BoundField.cs
index ffd3c8b..8f06783 100644
--- a/mcs/class/System.Web/System.Web.UI.WebControls/BoundField.cs
+++ b/mcs/class/System.Web/System.Web.UI.WebControls/BoundField.cs
@@ -249,21 +249,33 @@ namespace System.Web.UI.WebControls
 		
 		protected virtual void OnDataBindField (object sender, EventArgs e)
 		{
-			Control cell = (Control) sender;
-			Control controlContainer = cell.BindingContainer;
+			Control container = (Control) sender;
+			Control controlContainer = container.BindingContainer;
 			if (!(controlContainer is INamingContainer))
 				throw new HttpException ("A DataControlField must be within an INamingContainer.");
 			object val = GetValue (controlContainer);
+			TextBox box = sender as TextBox;
 
-			if (cell.Controls.Count > 0) {
-				TextBox box = (TextBox) cell.Controls [0];
-				if (ApplyFormatInEditMode)
-					box.Text = FormatDataValue (val, SupportsHtmlEncode && HtmlEncode);
-				else
-					box.Text = val != null ? val.ToString() : NullDisplayText;
+			if (box == null) {
+				var cell = sender as DataControlFieldCell;
+				if (cell != null) {
+					ControlCollection controls = cell.Controls;
+					int ccount = controls != null ? controls.Count : 0;
+					if (ccount == 1)
+						box = controls [0] as TextBox;
+					if (box == null) {
+						cell.Text = FormatDataValue (val, SupportsHtmlEncode && HtmlEncode);
+						return;
+					}
+				}
 			}
+
+			if (box == null)
+				throw new HttpException ("Bound field " + DataField + " contains a control that isn't a TextBox.  Override OnDataBindField to inherit from BoundField and add different controls.");
+			if (ApplyFormatInEditMode)
+				box.Text = FormatDataValue (val, SupportsHtmlEncode && HtmlEncode);
 			else
-				((DataControlFieldCell)cell).Text = FormatDataValue (val, SupportsHtmlEncode && HtmlEncode);
+				box.Text = val != null ? val.ToString() : NullDisplayText;
 		}
 		
 		protected override DataControlField CreateField ()
diff --git a/mcs/class/System.Web/System.Web.UI.WebControls/ChangeLog b/mcs/class/System.Web/System.Web.UI.WebControls/ChangeLog
index f894a66..8d8af6a 100644
--- a/mcs/class/System.Web/System.Web.UI.WebControls/ChangeLog
+++ b/mcs/class/System.Web/System.Web.UI.WebControls/ChangeLog
@@ -1,3 +1,36 @@
+2010-10-29  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Fix for bug #646505. BoundField must not assume the
+	sender of the OnDataBindField is DataControlFieldCell.
+
+2010-10-15  Marek Safar  <marek.safar at gmail.com>
+
+	Clean up few more warnings
+
+2010-09-13  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Menu 4.0 List rendering mode JavaScript fixes
+
+	This makes the new script work correctly with IE, which has a
+	different way of hooking up of events and cancelling of their
+	bubling. Previously the mouse-over handler would be called for
+	each and every submenu causing the leaf menus not to appear. With
+	this fix the handler is called only once.
+
+2010-09-08  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Onobtrusive JavaScript for the 4.0 Menu control List
+	mode
+
+2010-08-19  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Menu 4.0 List mode rendering
+
+2010-09-04  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Made GetExtension static and internal, so that it can be
+	used from code outsude Unit
+
 2010-09-07  Marek Habersack  <grendel at twistedcode.net>
 
 	[asp.net] Fix for bug #636475. A typo caused ads not to be matched
diff --git a/mcs/class/System.Web/System.Web.UI.WebControls/DataKey.cs b/mcs/class/System.Web/System.Web.UI.WebControls/DataKey.cs
index 02d2c66..cbc0cb1 100644
--- a/mcs/class/System.Web/System.Web.UI.WebControls/DataKey.cs
+++ b/mcs/class/System.Web/System.Web.UI.WebControls/DataKey.cs
@@ -87,7 +87,6 @@ namespace System.Web.UI.WebControls
 			if (other == null)
 				return false;
 
-			int thisCount, otherCount;
 			IOrderedDictionary otherKeyTable = other.keyTable;
 			if (keyTable != null && otherKeyTable != null) {
 				if (keyTable.Count != otherKeyTable.Count)
diff --git a/mcs/class/System.Web/System.Web.UI.WebControls/IMenuRenderer.cs b/mcs/class/System.Web/System.Web.UI.WebControls/IMenuRenderer.cs
new file mode 100644
index 0000000..be85413
--- /dev/null
+++ b/mcs/class/System.Web/System.Web.UI.WebControls/IMenuRenderer.cs
@@ -0,0 +1,55 @@
+//
+// Authors:
+//	Marek Habersack <grendel at twistedcode.net>
+//
+// (C) 2004-2010 Novell, Inc (http://novell.com)
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Text;
+using System.Web;
+using System.Web.UI;
+using System.Web.UI.HtmlControls;
+
+namespace System.Web.UI.WebControls
+{
+	interface IMenuRenderer
+	{
+		HtmlTextWriterTag Tag { get; }
+		
+		void AddAttributesToRender (HtmlTextWriter writer);
+		void PreRender (Page page, HtmlHead head, ClientScriptManager csm, string cmenu, StringBuilder script);
+		void RenderBeginTag (HtmlTextWriter writer, string skipLinkText);
+		void RenderEndTag (HtmlTextWriter writer);
+		void RenderContents (HtmlTextWriter writer);
+		
+		void RenderItemContent (HtmlTextWriter writer, MenuItem item, bool isDynamicItem);
+		void RenderMenuBeginTag (HtmlTextWriter writer, bool dynamic, int menuLevel);
+		void RenderMenuBody (HtmlTextWriter writer, MenuItemCollection items, bool vertical, bool dynamic, bool notLast);
+		void RenderMenuEndTag (HtmlTextWriter writer, bool dynamic, int menuLevel);
+		void RenderMenuItem (HtmlTextWriter writer, MenuItem item, bool notLast, bool isFirst);
+
+		bool IsDynamicItem (MenuItem item);
+		bool IsDynamicItem (Menu owner, MenuItem item);
+	}
+}
diff --git a/mcs/class/System.Web/System.Web.UI.WebControls/ImageMap.cs b/mcs/class/System.Web/System.Web.UI.WebControls/ImageMap.cs
index 51e8235..3565131 100644
--- a/mcs/class/System.Web/System.Web.UI.WebControls/ImageMap.cs
+++ b/mcs/class/System.Web/System.Web.UI.WebControls/ImageMap.cs
@@ -154,7 +154,9 @@ namespace System.Web.UI.WebControls
 			base.Render (writer);
 
 			if (spots != null && spots.Count > 0) {
+#if NET_4_0				
 				bool enabled = Enabled;
+#endif
 				writer.AddAttribute (HtmlTextWriterAttribute.Id, "ImageMap" + ClientID);
 				writer.AddAttribute (HtmlTextWriterAttribute.Name, "ImageMap" + ClientID);
 				writer.RenderBeginTag (HtmlTextWriterTag.Map);
diff --git a/mcs/class/System.Web/System.Web.UI.WebControls/Menu.cs b/mcs/class/System.Web/System.Web.UI.WebControls/Menu.cs
index 291e2af..14da2b4 100644
--- a/mcs/class/System.Web/System.Web.UI.WebControls/Menu.cs
+++ b/mcs/class/System.Web/System.Web.UI.WebControls/Menu.cs
@@ -5,7 +5,7 @@
 //	Lluis Sanchez Gual (lluis at novell.com)
 //	Igor Zelmanovich (igorz at mainsoft.com)
 //
-// (C) 2004 Novell, Inc (http://www.novell.com)
+// (C) 2004-2010 Novell, Inc (http://www.novell.com)
 //
 
 //
@@ -36,6 +36,7 @@ using System.Collections;
 using System.Text;
 using System.ComponentModel;
 using System.Web.UI;
+using System.Web.UI.HtmlControls;
 using System.Web.Handlers;
 using System.Collections.Specialized;
 using System.IO;
@@ -50,6 +51,8 @@ namespace System.Web.UI.WebControls
 	[SupportsEventValidation]
 	public class Menu : HierarchicalDataBoundControl, IPostBackEventHandler, INamingContainer
 	{
+		IMenuRenderer renderer;
+		
 		MenuItemStyle dynamicMenuItemStyle;
 		SubMenuStyle dynamicMenuStyle;
 		MenuItemStyle dynamicSelectedStyle;
@@ -74,7 +77,6 @@ namespace System.Web.UI.WebControls
 		Hashtable _menuItemControls;
 		bool _requiresChildControlsDataBinding;
 		SiteMapNode _currSiteMapNode;
-		int registeredStylesCounter = -1;
 		List<Style> levelSelectedLinkStyles;
 		List<Style> levelMenuItemLinkStyles;
 		Style popOutBoxStyle;
@@ -86,6 +88,7 @@ namespace System.Web.UI.WebControls
 		Style dynamicHoverLinkStyle;
 		Style staticHoverLinkStyle;
 #if NET_4_0
+		bool? renderList;
 		bool includeStyleBlock = true;
 		MenuRenderingMode renderingMode = MenuRenderingMode.Default;
 #endif
@@ -119,7 +122,41 @@ namespace System.Web.UI.WebControls
 				if (eh != null) eh (this, e);
 			}
 		}
+
+		IMenuRenderer Renderer {
+			get {
+				if (renderer == null)
+					renderer = CreateRenderer (null);
+				
+				return renderer;
+			}
+		}
 #if NET_4_0
+		bool RenderList {
+			get {
+				if (renderList == null) {
+					switch (RenderingMode) {
+						case MenuRenderingMode.List:
+							renderList = true;
+							break;
+
+						case MenuRenderingMode.Table:
+							renderList = false;
+							break;
+
+						default:
+							if (RenderingCompatibilityLessThan40)
+								renderList = false;
+							else
+								renderList = true;
+							break;
+					}
+				}
+
+				return renderList.Value;
+			}
+		}
+		
 		[DefaultValue (true)]
 		[Description ("Determines whether or not to render the inline style block (only used in standards compliance mode)")]
 		public bool IncludeStyleBlock {
@@ -135,6 +172,7 @@ namespace System.Web.UI.WebControls
 					throw new ArgumentOutOfRangeException ("value");
 
 				renderingMode = value;
+				renderer = CreateRenderer (renderer);
 			}
 		}
 #endif
@@ -173,8 +211,9 @@ namespace System.Web.UI.WebControls
 		public string DynamicBottomSeparatorImageUrl {
 			get {
 				object o = ViewState ["dbsiu"];
-				if (o != null) return (string)o;
-				return "";
+				if (o != null)
+					return (string)o;
+				return String.Empty;
 			}
 			set {
 				ViewState["dbsiu"] = value;
@@ -396,7 +435,7 @@ namespace System.Web.UI.WebControls
 			}
 		}
 
-		Style PopOutBoxStyle {
+		internal Style PopOutBoxStyle {
 			get {
 				if (popOutBoxStyle == null) {
 					popOutBoxStyle = new Style ();
@@ -406,7 +445,7 @@ namespace System.Web.UI.WebControls
 			}
 		}
 
-		Style ControlLinkStyle {
+		internal Style ControlLinkStyle {
 			get {
 				if (controlLinkStyle == null) {
 					controlLinkStyle = new Style ();
@@ -416,7 +455,7 @@ namespace System.Web.UI.WebControls
 			}
 		}
 
-		Style DynamicMenuItemLinkStyle {
+		internal Style DynamicMenuItemLinkStyle {
 			get {
 				if (dynamicMenuItemLinkStyle == null) {
 					dynamicMenuItemLinkStyle = new Style ();
@@ -425,7 +464,7 @@ namespace System.Web.UI.WebControls
 			}
 		}
 
-		Style StaticMenuItemLinkStyle {
+		internal Style StaticMenuItemLinkStyle {
 			get {
 				if (staticMenuItemLinkStyle == null) {
 					staticMenuItemLinkStyle = new Style ();
@@ -434,7 +473,7 @@ namespace System.Web.UI.WebControls
 			}
 		}
 
-		Style DynamicSelectedLinkStyle {
+		internal Style DynamicSelectedLinkStyle {
 			get {
 				if (dynamicSelectedLinkStyle == null) {
 					dynamicSelectedLinkStyle = new Style ();
@@ -443,7 +482,7 @@ namespace System.Web.UI.WebControls
 			}
 		}
 
-		Style StaticSelectedLinkStyle {
+		internal Style StaticSelectedLinkStyle {
 			get {
 				if (staticSelectedLinkStyle == null) {
 					staticSelectedLinkStyle = new Style ();
@@ -452,7 +491,7 @@ namespace System.Web.UI.WebControls
 			}
 		}
 
-		Style DynamicHoverLinkStyle {
+		internal Style DynamicHoverLinkStyle {
 			get {
 				if (dynamicHoverLinkStyle == null) {
 					dynamicHoverLinkStyle = new Style ();
@@ -461,7 +500,7 @@ namespace System.Web.UI.WebControls
 			}
 		}
 
-		Style StaticHoverLinkStyle {
+		internal Style StaticHoverLinkStyle {
 			get {
 				if (staticHoverLinkStyle == null) {
 					staticHoverLinkStyle = new Style ();
@@ -470,6 +509,58 @@ namespace System.Web.UI.WebControls
 			}
 		}
 
+		internal MenuItemStyle StaticMenuItemStyleInternal {
+			get { return staticMenuItemStyle; }
+		}
+
+		internal SubMenuStyle StaticMenuStyleInternal {
+			get { return staticMenuStyle; }
+		}
+
+		internal MenuItemStyle DynamicMenuItemStyleInternal {
+			get { return dynamicMenuItemStyle; }
+		}
+
+		internal SubMenuStyle DynamicMenuStyleInternal {
+			get { return dynamicMenuStyle; }
+		}
+
+		internal MenuItemStyleCollection LevelMenuItemStylesInternal {
+			get { return levelMenuItemStyles; }
+		}
+
+		internal List<Style> LevelMenuItemLinkStyles {
+			get { return levelMenuItemLinkStyles; }
+		}
+
+		internal SubMenuStyleCollection LevelSubMenuStylesInternal {
+			get { return levelSubMenuStyles; }
+		}
+
+		internal MenuItemStyle StaticSelectedStyleInternal {
+			get { return staticSelectedStyle; }
+		}
+
+		internal MenuItemStyle DynamicSelectedStyleInternal {
+			get { return dynamicSelectedStyle; }
+		}
+
+		internal MenuItemStyleCollection LevelSelectedStylesInternal {
+			get { return levelSelectedStyles; }
+		}
+
+		internal List<Style> LevelSelectedLinkStyles {
+			get { return levelSelectedLinkStyles; }
+		}
+
+		internal Style StaticHoverStyleInternal {
+			get { return staticHoverStyle; }
+		}
+
+		internal Style DynamicHoverStyleInternal {
+			get { return dynamicHoverStyle; }
+		}
+		
 		[PersistenceMode (PersistenceMode.InnerProperty)]
 		[NotifyParentProperty (true)]
 		[DefaultValue (null)]
@@ -805,7 +896,40 @@ namespace System.Web.UI.WebControls
 			}
 		}
 		
+		IMenuRenderer CreateRenderer (IMenuRenderer current)
+		{
+#if NET_4_0
+			Type newType = null;
+			
+			switch (RenderingMode) {
+				case MenuRenderingMode.Default:
+					if (RenderingCompatibilityLessThan40)
+						newType = typeof (MenuTableRenderer);
+					else
+						newType = typeof (MenuListRenderer);
+					break;
+					
+				case MenuRenderingMode.Table:
+					newType = typeof (MenuTableRenderer);
+					break;
 
+				case MenuRenderingMode.List:
+					newType = typeof (MenuListRenderer);
+					break;
+			}
+
+			if (newType == null)
+				return null;
+
+			if (current == null || current.GetType () != newType)
+				return Activator.CreateInstance (newType, this) as IMenuRenderer;
+#else
+			if (current == null)
+				return new MenuTableRenderer (this);
+#endif
+			return current;
+		}
+		
 		internal void SetSelectedItem (MenuItem item)
 		{
 			if (selectedItem == item) return;
@@ -964,7 +1088,7 @@ namespace System.Web.UI.WebControls
 		}
 		
 		protected override HtmlTextWriterTag TagKey {
-			get { return HtmlTextWriterTag.Table; }
+			get { return Renderer.Tag; }
 		}
 		
 		protected override void TrackViewState()
@@ -1109,9 +1233,11 @@ namespace System.Web.UI.WebControls
 			_requiresChildControlsDataBinding = true;
 		}
 
-		void CreateChildControlsForItems (MenuItemCollection items ) {
+		void CreateChildControlsForItems (MenuItemCollection items )
+		{
+			IMenuRenderer renderer = Renderer;
 			foreach (MenuItem item in items) {
-				bool isDynamicItem = IsDynamicItem (item);
+				bool isDynamicItem = renderer.IsDynamicItem (this, item);
 				if (isDynamicItem && dynamicItemTemplate != null) {
 					MenuItemTemplateContainer cter = new MenuItemTemplateContainer (item.Index, item);
 					dynamicItemTemplate.InstantiateIn (cter);
@@ -1180,94 +1306,31 @@ namespace System.Web.UI.WebControls
 			EnsureChildControls ();
 			base.OnDataBinding (e);
 		}
-
-		const string onPreRenderScript = "var {0} = new Object ();\n{0}.webForm = {1};\n{0}.disappearAfter = {2};\n{0}.vertical = {3};";
 		
 		protected internal override void OnPreRender (EventArgs e)
 		{
 			base.OnPreRender (e);
-			
-			if (!Page.ClientScript.IsClientScriptIncludeRegistered (typeof(Menu), "Menu.js")) {
-				string url = Page.ClientScript.GetWebResourceUrl (typeof(Menu), "Menu.js");
-				Page.ClientScript.RegisterClientScriptInclude (typeof(Menu), "Menu.js", url);
-			}
-			
-			string cmenu = ClientID + "_data";
-			string script = String.Format (onPreRenderScript,
-						       cmenu,
-						       Page.IsMultiForm ? Page.theForm : "window",
-						       ClientScriptManager.GetScriptLiteral (DisappearAfter),
-						       ClientScriptManager.GetScriptLiteral (Orientation == Orientation.Vertical));			
-
-			if (DynamicHorizontalOffset != 0)
-				script += String.Concat (cmenu, ".dho = ", ClientScriptManager.GetScriptLiteral (DynamicHorizontalOffset), ";\n");
-			if (DynamicVerticalOffset != 0)
-				script += String.Concat (cmenu, ".dvo = ", ClientScriptManager.GetScriptLiteral (DynamicVerticalOffset), ";\n");
-			
-			// The order in which styles are defined matters when more than one class
-			// is assigned to an element
-			RegisterStyle (PopOutBoxStyle);
-			RegisterStyle (ControlStyle, ControlLinkStyle);
-			
-			if (staticMenuItemStyle != null)
-				RegisterStyle (StaticMenuItemStyle, StaticMenuItemLinkStyle);
-
-			if (staticMenuStyle != null)
-				RegisterStyle (StaticMenuStyle);
-			
-			if (dynamicMenuItemStyle != null)
-				RegisterStyle (DynamicMenuItemStyle, DynamicMenuItemLinkStyle);
-
-			if (dynamicMenuStyle != null)
-				RegisterStyle (DynamicMenuStyle);
-
-			if (levelMenuItemStyles != null && levelMenuItemStyles.Count > 0) {
-				levelMenuItemLinkStyles = new List<Style> (levelMenuItemStyles.Count);
-				foreach (Style style in levelMenuItemStyles) {
-					Style linkStyle = new Style ();
-					levelMenuItemLinkStyles.Add (linkStyle);
-					RegisterStyle (style, linkStyle);
-				}
-			}
-		
-			if (levelSubMenuStyles != null)
-				foreach (Style style in levelSubMenuStyles)
-					RegisterStyle (style);
 
-			if (staticSelectedStyle != null)
-				RegisterStyle (staticSelectedStyle, StaticSelectedLinkStyle);
-			
-			if (dynamicSelectedStyle != null)
-				RegisterStyle (dynamicSelectedStyle, DynamicSelectedLinkStyle);
-
-			if (levelSelectedStyles != null && levelSelectedStyles.Count > 0) {
-				levelSelectedLinkStyles = new List<Style> (levelSelectedStyles.Count);
-				foreach (Style style in levelSelectedStyles) {
-					Style linkStyle = new Style ();
-					levelSelectedLinkStyles.Add (linkStyle);
-					RegisterStyle (style, linkStyle);
-				}
-			}
-			
-			if (staticHoverStyle != null) {
-				if (Page.Header == null)
-					throw new InvalidOperationException ("Using Menu.StaticHoverStyle requires Page.Header to be non-null (e.g. <head runat=\"server\" />).");
-				RegisterStyle (staticHoverStyle, StaticHoverLinkStyle);
-				script += string.Concat (cmenu, ".staticHover = ", ClientScriptManager.GetScriptLiteral (staticHoverStyle.RegisteredCssClass), ";\n");
-				script += string.Concat (cmenu, ".staticLinkHover = ", ClientScriptManager.GetScriptLiteral (StaticHoverLinkStyle.RegisteredCssClass), ";\n");
+			string cmenu = ClientID + "_data";
+			StringBuilder script = new StringBuilder ();
+			Page page = Page;
+			HtmlHead header;
+			ClientScriptManager csm;
+
+			if (page != null) {
+				header = page.Header;
+				csm = page.ClientScript;
+			} else {
+				header = null;
+				csm = null;
 			}
 			
-			if (dynamicHoverStyle != null) {
-				if (Page.Header == null)
-					throw new InvalidOperationException ("Using Menu.DynamicHoverStyle requires Page.Header to be non-null (e.g. <head runat=\"server\" />).");
-				RegisterStyle (dynamicHoverStyle, DynamicHoverLinkStyle);
-				script += string.Concat (cmenu, ".dynamicHover = ", ClientScriptManager.GetScriptLiteral (dynamicHoverStyle.RegisteredCssClass), ";\n");
-				script += string.Concat (cmenu, ".dynamicLinkHover = ", ClientScriptManager.GetScriptLiteral (DynamicHoverLinkStyle.RegisteredCssClass), ";\n");
-			}
-
-			Page.ClientScript.RegisterWebFormClientScript ();
-			Page.ClientScript.RegisterStartupScript (typeof(Menu), ClientID, script, true);
+			Renderer.PreRender (page, header, csm, cmenu, script);
 
+			if (csm != null) {
+				csm.RegisterWebFormClientScript ();
+				csm.RegisterStartupScript (typeof(Menu), ClientID, script.ToString (), true);
+			}
 		}
 
 		void InitializeDataBindings () {
@@ -1281,27 +1344,6 @@ namespace System.Web.UI.WebControls
 			else
 				bindings = null;
 		}
-
-		string IncrementStyleClassName () {
-			registeredStylesCounter++;
-			return ClientID + "_" + registeredStylesCounter;
-		}
-
-		void RegisterStyle (Style baseStyle, Style linkStyle) {
-			linkStyle.CopyTextStylesFrom (baseStyle);
-			linkStyle.BorderStyle = BorderStyle.None;
-			RegisterStyle (linkStyle);
-			RegisterStyle (baseStyle);
-		}
-
-		void RegisterStyle (Style baseStyle)
-		{
-			if (Page.Header == null)
-				return;
-			string className = IncrementStyleClassName ();
-			baseStyle.SetRegisteredCssClass (className);
-			Page.Header.StyleSheet.CreateStyleRule (baseStyle, this, "." + className);
-		}
 		
 		protected internal override void Render (HtmlTextWriter writer)
 		{
@@ -1311,63 +1353,15 @@ namespace System.Web.UI.WebControls
 		
 		protected override void AddAttributesToRender (HtmlTextWriter writer)
 		{
-			writer.AddAttribute ("cellpadding", "0", false);
-			writer.AddAttribute ("cellspacing", "0", false);
-			writer.AddAttribute ("border", "0", false);
-			if (Page.Header != null) {
-				// styles are registered
-				if (staticMenuStyle != null) {
-					AddCssClass (ControlStyle, staticMenuStyle.CssClass);
-					AddCssClass (ControlStyle, staticMenuStyle.RegisteredCssClass);
-				}
-				if (levelSubMenuStyles != null && levelSubMenuStyles.Count > 0) {
-					AddCssClass (ControlStyle, levelSubMenuStyles [0].CssClass);
-					AddCssClass (ControlStyle, levelSubMenuStyles [0].RegisteredCssClass);
-				}
-			}
-			else {
-				// styles are not registered
-				if (staticMenuStyle != null){
-					ControlStyle.CopyFrom (staticMenuStyle);
-				}
-				if (levelSubMenuStyles != null && levelSubMenuStyles.Count > 0) {
-					ControlStyle.CopyFrom (levelSubMenuStyles [0]);
-				}
-			}
+			Renderer.AddAttributesToRender (writer);
 			base.AddAttributesToRender (writer);
 		}
-
-		void AddCssClass (Style style, string cssClass) {
-			style.AddCssClass (cssClass);
-		}
 		
 		public override void RenderBeginTag (HtmlTextWriter writer)
 		{
 			string skipLinkText = SkipLinkText;
-			if (!String.IsNullOrEmpty (skipLinkText)) {
-				// <a href="#ID_SkipLink">
-				writer.AddAttribute (HtmlTextWriterAttribute.Href, "#" + ClientID + "_SkipLink");
-				writer.RenderBeginTag (HtmlTextWriterTag.A);
-				
-				// <img alt="" height="0" width="0" src="" style="border-width:0px;"/>
-				writer.AddAttribute (HtmlTextWriterAttribute.Alt, skipLinkText);
-				writer.AddAttribute (HtmlTextWriterAttribute.Height, "0");
-				writer.AddAttribute (HtmlTextWriterAttribute.Width, "0");
-				
-				Page page = Page;
-				ClientScriptManager csm;
-				
-				if (page != null)
-					csm = page.ClientScript;
-				else
-					csm = new ClientScriptManager (null);
-				writer.AddAttribute (HtmlTextWriterAttribute.Src, csm.GetWebResourceUrl (typeof (SiteMapPath), "transparent.gif"));
-				writer.AddStyleAttribute (HtmlTextWriterStyle.BorderWidth, "0px");
-				writer.RenderBeginTag (HtmlTextWriterTag.Img);
-				writer.RenderEndTag ();
-				
-				writer.RenderEndTag (); // </a>
-			}
+			if (!String.IsNullOrEmpty (skipLinkText))
+				Renderer.RenderBeginTag (writer, skipLinkText);
 			base.RenderBeginTag (writer);
 		}
 		
@@ -1375,12 +1369,11 @@ namespace System.Web.UI.WebControls
 		{
 			base.RenderEndTag (writer);
 
-			if (StaticDisplayLevels == 1 && MaximumDynamicDisplayLevels > 0)
-				RenderDynamicMenu (writer, Items);
-
+			Renderer.RenderEndTag (writer);
+			
 			string skipLinkText = SkipLinkText;
 			if (!String.IsNullOrEmpty (skipLinkText)) {
-				writer.AddAttribute (HtmlTextWriterAttribute.Id, "SkipLink");
+				writer.AddAttribute (HtmlTextWriterAttribute.Id, ClientID + "_SkipLink");
 				writer.RenderBeginTag (HtmlTextWriterTag.A);
 				writer.RenderEndTag ();
 			}
@@ -1388,10 +1381,11 @@ namespace System.Web.UI.WebControls
 		
 		protected internal override void RenderContents (HtmlTextWriter writer)
 		{
-			RenderMenuBody (writer, Items, Orientation == Orientation.Vertical, false, false);
+			Renderer.RenderContents (writer);
 		}
 
-		void RenderDynamicMenu (HtmlTextWriter writer, MenuItemCollection items) {
+		internal void RenderDynamicMenu (HtmlTextWriter writer, MenuItemCollection items)
+		{
 			for (int n = 0; n < items.Count; n++) {
 				if (DisplayChildren (items [n])) {
 					RenderDynamicMenu (writer, items [n]);
@@ -1545,108 +1539,22 @@ namespace System.Web.UI.WebControls
 			}
 		}
 
-		void RenderMenuBeginTagAttributes (HtmlTextWriter writer, bool dynamic, int menuLevel) {
-			writer.AddAttribute ("cellpadding", "0", false);
-			writer.AddAttribute ("cellspacing", "0", false);
-			writer.AddAttribute ("border", "0", false);
-
-			if (!dynamic) {
-				SubMenuStyle style = new SubMenuStyle ();
-				FillMenuStyle (dynamic, menuLevel, style);
-				style.AddAttributesToRender (writer);
-			}
-		}
-
-		void FillMenuStyle (bool dynamic, int menuLevel, SubMenuStyle style) {
-			if (Page.Header != null) {
-				// styles are registered
-				if (!dynamic && staticMenuStyle != null) {
-					AddCssClass (style, staticMenuStyle.CssClass);
-					AddCssClass (style, staticMenuStyle.RegisteredCssClass);
-				}
-				if (dynamic && dynamicMenuStyle != null) {
-					AddCssClass (style, dynamicMenuStyle.CssClass);
-					AddCssClass (style, dynamicMenuStyle.RegisteredCssClass);
-				}
-				if (levelSubMenuStyles != null && levelSubMenuStyles.Count > menuLevel) {
-					AddCssClass (style, levelSubMenuStyles [menuLevel].CssClass);
-					AddCssClass (style, levelSubMenuStyles [menuLevel].RegisteredCssClass);
-				}
-			}
-			else {
-				// styles are not registered
-				if (!dynamic && staticMenuStyle != null) {
-					style.CopyFrom (staticMenuStyle);
-				}
-				if (dynamic && dynamicMenuStyle != null) {
-					style.CopyFrom (dynamicMenuStyle);
-				}
-				if (levelSubMenuStyles != null && levelSubMenuStyles.Count > menuLevel) {
-					style.CopyFrom (levelSubMenuStyles [menuLevel]);
-				}
-			}
-		}
-
-		void RenderMenu (HtmlTextWriter writer, MenuItemCollection items, bool vertical, bool dynamic, int menuLevel, bool notLast)
-		{
-			RenderMenuBeginTag (writer, dynamic, menuLevel);
-			RenderMenuBody (writer, items, vertical, dynamic, notLast);
-			RenderMenuEndTag (writer);
-		}
-		
-		void RenderMenuBeginTag (HtmlTextWriter writer, bool dynamic, int menuLevel)
-		{
-			RenderMenuBeginTagAttributes (writer, dynamic, menuLevel);
-			writer.RenderBeginTag (HtmlTextWriterTag.Table);
-		}
-		
-		void RenderMenuEndTag (HtmlTextWriter writer)
+		internal void RenderMenu (HtmlTextWriter writer, MenuItemCollection items, bool vertical, bool dynamic, int menuLevel, bool notLast)
 		{
-			writer.RenderEndTag ();
-		}
-
-		void RenderMenuBody (HtmlTextWriter writer, MenuItemCollection items, bool vertical, bool dynamic, bool notLast) {
-			if (!vertical)
-				writer.RenderBeginTag (HtmlTextWriterTag.Tr);
-
-			int count = items.Count;
-			for (int n = 0; n < count; n++) {
-				MenuItem item = items [n];
-				Adapters.MenuAdapter adapter = Adapter as Adapters.MenuAdapter;
-				if (adapter != null)
-					adapter.RenderItem (writer, item, n);
-				else
-					RenderMenuItem (writer, item, (n + 1 == count) ? notLast : true, n == 0);
-			}
-
-			if (!vertical)
-				writer.RenderEndTag ();	// TR
-		}
-
-		void RenderMenuItemSpacing (HtmlTextWriter writer, Unit itemSpacing, bool vertical) {
-			if (vertical) {
-				writer.AddStyleAttribute ("height", itemSpacing.ToString ());
-				writer.RenderBeginTag (HtmlTextWriterTag.Tr);
-				writer.RenderBeginTag (HtmlTextWriterTag.Td);
-				writer.RenderEndTag ();
-				writer.RenderEndTag ();
-			}
-			else {
-				writer.AddStyleAttribute ("width", itemSpacing.ToString ());
-				writer.RenderBeginTag (HtmlTextWriterTag.Td);
-				writer.RenderEndTag ();
-			}
-		}
-		
-		bool IsDynamicItem (MenuItem item) {
-			return item.Depth + 1 > StaticDisplayLevels;
+			IMenuRenderer renderer = Renderer;
+			
+			renderer.RenderMenuBeginTag (writer, dynamic, menuLevel);
+			renderer.RenderMenuBody (writer, items, vertical, dynamic, notLast);
+			renderer.RenderMenuEndTag (writer, dynamic, menuLevel);
 		}
 
-		bool DisplayChildren (MenuItem item) {
+		internal bool DisplayChildren (MenuItem item)
+		{
 			return (item.Depth + 1 < StaticDisplayLevels + MaximumDynamicDisplayLevels) && item.ChildItems.Count > 0;
 		}
 		
-		internal void RenderItem (HtmlTextWriter writer, MenuItem item, int position) {
+		internal void RenderItem (HtmlTextWriter writer, MenuItem item, int position)
+		{
 			// notLast should be true if item or any of its ancestors is not a
 			// last child.
 			bool notLast = false;
@@ -1659,314 +1567,18 @@ namespace System.Web.UI.WebControls
 				}
 				child = parent;
 			}
-			
-			RenderMenuItem (writer, item, notLast, position == 0);
-		}
-		
-		void RenderMenuItem (HtmlTextWriter writer, MenuItem item, bool notLast, bool isFirst) {
-			bool displayChildren = DisplayChildren (item);
-			bool dynamicChildren = displayChildren && (item.Depth + 1 >= StaticDisplayLevels);
-			bool isDynamicItem = IsDynamicItem (item);
-			bool vertical = (Orientation == Orientation.Vertical) || isDynamicItem;
-			
-			Unit itemSpacing = GetItemSpacing (item, isDynamicItem);
-
-			if (itemSpacing != Unit.Empty && (item.Depth > 0 || !isFirst))
-				RenderMenuItemSpacing (writer, itemSpacing, vertical);
-
-			if(!String.IsNullOrEmpty(item.ToolTip))
-				writer.AddAttribute (HtmlTextWriterAttribute.Title, item.ToolTip);
-			if (vertical)
-				writer.RenderBeginTag (HtmlTextWriterTag.Tr);
-
-			string parentId = isDynamicItem ? "'" + item.Parent.Path + "'" : "null";
-			if (dynamicChildren) {
-				writer.AddAttribute ("onmouseover",
-						     "javascript:Menu_OverItem ('" + ClientID + "','" + item.Path + "'," + parentId + ")");
-				writer.AddAttribute ("onmouseout",
-						     "javascript:Menu_OutItem ('" + ClientID + "','" + item.Path + "')");
-			} else if (isDynamicItem) {
-				writer.AddAttribute ("onmouseover",
-						     "javascript:Menu_OverDynamicLeafItem ('" + ClientID + "','" + item.Path + "'," + parentId + ")");
-				writer.AddAttribute ("onmouseout",
-						     "javascript:Menu_OutItem ('" + ClientID + "','" + item.Path + "'," + parentId + ")");
-			} else {
-				writer.AddAttribute ("onmouseover",
-						     "javascript:Menu_OverStaticLeafItem ('" + ClientID + "','" + item.Path + "')");
-				writer.AddAttribute ("onmouseout",
-						     "javascript:Menu_OutItem ('" + ClientID + "','" + item.Path + "')");
-			}
-
-			writer.RenderBeginTag (HtmlTextWriterTag.Td);
-
-			// Top separator image
-
-			if (isDynamicItem && DynamicTopSeparatorImageUrl != "") {
-				writer.AddAttribute ("src", ResolveClientUrl (DynamicTopSeparatorImageUrl));
-				writer.RenderBeginTag (HtmlTextWriterTag.Img);
-				writer.RenderEndTag ();	// IMG
-			}
-			else if (!isDynamicItem && StaticTopSeparatorImageUrl != "") {
-				writer.AddAttribute ("src", ResolveClientUrl (StaticTopSeparatorImageUrl));
-				writer.RenderBeginTag (HtmlTextWriterTag.Img);
-				writer.RenderEndTag ();	// IMG
-			}
-
-			// Menu item box
-			
-			MenuItemStyle style = new MenuItemStyle ();
-			if (Page.Header != null) {
-				// styles are registered
-				if (!isDynamicItem && staticMenuItemStyle != null) {
-					AddCssClass (style, staticMenuItemStyle.CssClass);
-					AddCssClass (style, staticMenuItemStyle.RegisteredCssClass);
-				}
-				if (isDynamicItem && dynamicMenuItemStyle != null) {
-					AddCssClass (style, dynamicMenuItemStyle.CssClass);
-					AddCssClass (style, dynamicMenuItemStyle.RegisteredCssClass);
-				}
-				if (levelMenuItemStyles != null && levelMenuItemStyles.Count > item.Depth) {
-					AddCssClass (style, levelMenuItemStyles [item.Depth].CssClass);
-					AddCssClass (style, levelMenuItemStyles [item.Depth].RegisteredCssClass);
-				}
-				if (item == SelectedItem) {
-					if (!isDynamicItem && staticSelectedStyle != null) {
-						AddCssClass (style, staticSelectedStyle.CssClass);
-						AddCssClass (style, staticSelectedStyle.RegisteredCssClass);
-					}
-					if (isDynamicItem && dynamicSelectedStyle != null) {
-						AddCssClass (style, dynamicSelectedStyle.CssClass);
-						AddCssClass (style, dynamicSelectedStyle.RegisteredCssClass);
-					}
-					if (levelSelectedStyles != null && levelSelectedStyles.Count > item.Depth) {
-						AddCssClass (style, levelSelectedStyles [item.Depth].CssClass);
-						AddCssClass (style, levelSelectedStyles [item.Depth].RegisteredCssClass);
-					}
-				}
-			}
-			else {
-				// styles are not registered
-				if (!isDynamicItem && staticMenuItemStyle != null) {
-					style.CopyFrom (staticMenuItemStyle);
-				}
-				if (isDynamicItem && dynamicMenuItemStyle != null) {
-					style.CopyFrom (dynamicMenuItemStyle);
-				}
-				if (levelMenuItemStyles != null && levelMenuItemStyles.Count > item.Depth) {
-					style.CopyFrom (levelMenuItemStyles [item.Depth]);
-				}
-				if (item == SelectedItem) {
-					if (!isDynamicItem && staticSelectedStyle != null) {
-						style.CopyFrom (staticSelectedStyle);
-					}
-					if (isDynamicItem && dynamicSelectedStyle != null) {
-						style.CopyFrom (dynamicSelectedStyle);
-					}
-					if (levelSelectedStyles != null && levelSelectedStyles.Count > item.Depth) {
-						style.CopyFrom (levelSelectedStyles [item.Depth]);
-					}
-				}
-			}
-			style.AddAttributesToRender (writer);
-
-			writer.AddAttribute ("id", GetItemClientId (item, "i"));
-
-			writer.AddAttribute ("cellpadding", "0", false);
-			writer.AddAttribute ("cellspacing", "0", false);
-			writer.AddAttribute ("border", "0", false);
-			writer.AddAttribute ("width", "100%", false);
-			writer.RenderBeginTag (HtmlTextWriterTag.Table);
-			writer.RenderBeginTag (HtmlTextWriterTag.Tr);
-
-			// Menu item text
-
-			if (vertical)
-				writer.AddStyleAttribute (HtmlTextWriterStyle.Width, "100%");
-			if (!ItemWrap)
-				writer.AddStyleAttribute ("white-space", "nowrap");
-			writer.RenderBeginTag (HtmlTextWriterTag.Td);
-
-			RenderItemHref (writer, item);
-			
-			Style linkStyle = new Style ();
-			if (Page.Header != null) {
-				// styles are registered
-				AddCssClass (linkStyle, ControlLinkStyle.RegisteredCssClass);
-
-				if (!isDynamicItem && staticMenuItemStyle != null) {
-					AddCssClass (linkStyle, staticMenuItemStyle.CssClass);
-					AddCssClass (linkStyle, staticMenuItemLinkStyle.RegisteredCssClass);
-				}
-				if (isDynamicItem && dynamicMenuItemStyle != null) {
-					AddCssClass (linkStyle, dynamicMenuItemStyle.CssClass);
-					AddCssClass (linkStyle, dynamicMenuItemLinkStyle.RegisteredCssClass);
-				}
-				if (levelMenuItemStyles != null && levelMenuItemStyles.Count > item.Depth) {
-					AddCssClass (linkStyle, levelMenuItemStyles [item.Depth].CssClass);
-					AddCssClass (linkStyle, levelMenuItemLinkStyles [item.Depth].RegisteredCssClass);
-				}
-				if (item == SelectedItem) {
-					if (!isDynamicItem && staticSelectedStyle != null) {
-						AddCssClass (linkStyle, staticSelectedStyle.CssClass);
-						AddCssClass (linkStyle, staticSelectedLinkStyle.RegisteredCssClass);
-					}
-					if (isDynamicItem && dynamicSelectedStyle != null) {
-						AddCssClass (linkStyle, dynamicSelectedStyle.CssClass);
-						AddCssClass (linkStyle, dynamicSelectedLinkStyle.RegisteredCssClass);
-					}
-					if (levelSelectedStyles != null && levelSelectedStyles.Count > item.Depth) {
-						AddCssClass (linkStyle, levelSelectedStyles [item.Depth].CssClass);
-						AddCssClass (linkStyle, levelSelectedLinkStyles [item.Depth].RegisteredCssClass);
-					}
-				}
-			}
-			else {
-				// styles are not registered
-				linkStyle.CopyFrom (ControlLinkStyle);
-
-				if (!isDynamicItem && staticMenuItemStyle != null) {
-					linkStyle.CopyFrom (staticMenuItemLinkStyle);
-				}
-				if (isDynamicItem && dynamicMenuItemStyle != null) {
-					linkStyle.CopyFrom (dynamicMenuItemLinkStyle);
-				}
-				if (levelMenuItemStyles != null && levelMenuItemStyles.Count > item.Depth) {
-					linkStyle.CopyFrom (levelMenuItemLinkStyles [item.Depth]);
-				}
-				if (item == SelectedItem) {
-					if (!isDynamicItem && staticSelectedStyle != null) {
-						linkStyle.CopyFrom (staticSelectedLinkStyle);
-					}
-					if (isDynamicItem && dynamicSelectedStyle != null) {
-						linkStyle.CopyFrom (dynamicSelectedLinkStyle);
-					}
-					if (levelSelectedStyles != null && levelSelectedStyles.Count > item.Depth) {
-						linkStyle.CopyFrom (levelSelectedLinkStyles [item.Depth]);
-					}
-				}
-
-				linkStyle.AlwaysRenderTextDecoration = true;
-			}
-			linkStyle.AddAttributesToRender (writer);
-
-			writer.AddAttribute ("id", GetItemClientId (item, "l"));
-			
-			if (item.Depth > 0 && !isDynamicItem) {
-				double value;
-#if NET_4_0
-				Unit unit = StaticSubMenuIndent;
-				if (unit == Unit.Empty)
-					value = 16;
-				else
-					value = unit.Value;
-#else
-				value = StaticSubMenuIndent.Value;
-#endif
-				Unit indent = new Unit (value * item.Depth, StaticSubMenuIndent.Type);
-				writer.AddStyleAttribute (HtmlTextWriterStyle.MarginLeft, indent.ToString ());
-			}
-			writer.RenderBeginTag (HtmlTextWriterTag.A);
-			RenderItemContent (writer, item, isDynamicItem);
-			writer.RenderEndTag ();	// A
-
-			writer.RenderEndTag ();	// TD
-
-			// Popup image
-
-			if (dynamicChildren) {
-				string popOutImage = GetPopOutImage (item, isDynamicItem);
-				if (popOutImage != null) {
-					writer.RenderBeginTag (HtmlTextWriterTag.Td);
-					writer.AddAttribute ("src", ResolveClientUrl (popOutImage));
-					writer.AddAttribute ("border", "0");
-					string toolTip = String.Format (isDynamicItem ? DynamicPopOutImageTextFormatString : StaticPopOutImageTextFormatString, item.Text);
-					writer.AddAttribute (HtmlTextWriterAttribute.Alt, toolTip);
-					writer.RenderBeginTag (HtmlTextWriterTag.Img);
-					writer.RenderEndTag ();	// IMG
-					writer.RenderEndTag ();	// TD
-				}
-			}
-
-			writer.RenderEndTag ();	// TR
-			writer.RenderEndTag ();	// TABLE
-			
-			writer.RenderEndTag ();	// TD
-
-			if (!vertical && itemSpacing == Unit.Empty && (notLast || (displayChildren && !dynamicChildren))) {
-				writer.AddStyleAttribute ("width", "3px");
-				writer.RenderBeginTag (HtmlTextWriterTag.Td);
-				writer.RenderEndTag ();
-			}
-			
-			// Bottom separator image
-			string separatorImg = item.SeparatorImageUrl;
-			if (separatorImg.Length == 0) {
-				if (isDynamicItem)
-					separatorImg = DynamicBottomSeparatorImageUrl;
-				else
-					separatorImg = StaticBottomSeparatorImageUrl;
-			}
-			if (separatorImg.Length > 0) {
-				if (!vertical)
-					writer.RenderBeginTag (HtmlTextWriterTag.Td);
-				writer.AddAttribute ("src", ResolveClientUrl (separatorImg));
-				writer.RenderBeginTag (HtmlTextWriterTag.Img);
-				writer.RenderEndTag ();	// IMG
-				if (!vertical)
-					writer.RenderEndTag (); // TD
-			}
-
-			if (vertical)
-				writer.RenderEndTag ();	// TR
-
-			if (itemSpacing != Unit.Empty)
-				RenderMenuItemSpacing (writer, itemSpacing, vertical);
-
-			// Submenu
-
-			if (displayChildren && !dynamicChildren) {
-				if (vertical)
-					writer.RenderBeginTag (HtmlTextWriterTag.Tr);
-				writer.RenderBeginTag (HtmlTextWriterTag.Td);
-				writer.AddAttribute ("width", "100%");
-				RenderMenu (writer, item.ChildItems, Orientation == Orientation.Vertical, false, item.Depth + 1, notLast);
-				if (item.Depth + 2 == StaticDisplayLevels)
-					RenderDynamicMenu (writer, item.ChildItems);
-				writer.RenderEndTag ();	// TD
-				if (vertical)
-					writer.RenderEndTag ();	// TR
-			}
-
+			Renderer.RenderMenuItem (writer, item, notLast, position == 0);
 		}
 
-		void RenderItemContent (HtmlTextWriter writer, MenuItem item, bool isDynamicItem) {
-			if (_menuItemControls!=null && _menuItemControls [item] != null) {
+		internal void RenderItemContent (HtmlTextWriter writer, MenuItem item, bool isDynamicItem)
+		{
+			if (_menuItemControls!=null && _menuItemControls [item] != null)
 				((Control) _menuItemControls [item]).Render (writer);
-			}
-			else {
-
-				if (!String.IsNullOrEmpty (item.ImageUrl)) {
-					writer.AddAttribute (HtmlTextWriterAttribute.Src, ResolveClientUrl (item.ImageUrl));
-					writer.AddAttribute (HtmlTextWriterAttribute.Alt, item.ToolTip);
-					writer.AddStyleAttribute (HtmlTextWriterStyle.BorderStyle, "none");
-					writer.AddStyleAttribute (HtmlTextWriterStyle.VerticalAlign, "middle");
-					writer.RenderBeginTag (HtmlTextWriterTag.Img);
-					writer.RenderEndTag ();	// IMG
-				}
 
-				if (isDynamicItem && DynamicItemFormatString.Length > 0) {
-					writer.Write (String.Format (DynamicItemFormatString, item.Text));
-				}
-				else if (!isDynamicItem && StaticItemFormatString.Length > 0) {
-					writer.Write (String.Format (StaticItemFormatString, item.Text));
-				}
-				else {
-					writer.Write (item.Text);
-				}
-			}
+			Renderer.RenderItemContent (writer, item, isDynamicItem);
 		}
 			
-		Unit GetItemSpacing (MenuItem item, bool dynamic)
+		internal Unit GetItemSpacing (MenuItem item, bool dynamic)
 		{
 			Unit itemSpacing = Unit.Empty;
 			
@@ -1996,61 +1608,6 @@ namespace System.Web.UI.WebControls
 			else
 				return Unit.Empty;
 		}
-		
-		string GetPopOutImage (MenuItem item, bool isDynamicItem)
-		{
-			if (item.PopOutImageUrl != "")
-				return item.PopOutImageUrl;
-
-			if (isDynamicItem) {
-				if (DynamicPopOutImageUrl != "")
-					return DynamicPopOutImageUrl;
-				if (DynamicEnableDefaultPopOutImage)
-					return Page.ClientScript.GetWebResourceUrl (typeof (Menu), "arrow_plus.gif");
-			} else {
-				if (StaticPopOutImageUrl != "")
-					return StaticPopOutImageUrl;
-				if (StaticEnableDefaultPopOutImage)
-					return Page.ClientScript.GetWebResourceUrl (typeof (Menu), "arrow_plus.gif");
-			}
-			return null;
-		}
-			
-		void RenderItemHref (HtmlTextWriter writer, MenuItem item)
-		{
-			if (!item.BranchEnabled) {
-				writer.AddAttribute ("disabled", "true", false);
-			}
-			else if (!item.Selectable) {
-				writer.AddAttribute ("href", "#", false);
-				writer.AddStyleAttribute ("cursor", "text");
-			}
-			else if (item.NavigateUrl != "") {
-				string target = item.Target != "" ? item.Target : Target;
-#if TARGET_J2EE
-				string navUrl = ResolveClientUrl (item.NavigateUrl, String.Compare (target, "_blank", StringComparison.InvariantCultureIgnoreCase) != 0);
-#else
-				string navUrl = ResolveClientUrl (item.NavigateUrl);
-#endif
-				writer.AddAttribute ("href", navUrl);
-				if (target != "")
-					writer.AddAttribute ("target", target);
-			}
-			else {
-				writer.AddAttribute ("href", GetClientEvent (item));
-			}
-
-		}
-		
-		string GetItemClientId (MenuItem item, string sufix)
-		{
-			return ClientID + "_" + item.Path + sufix;
-		}
-		
-		string GetClientEvent (MenuItem item)
-		{
-			return Page.ClientScript.GetPostBackClientHyperlink (this, item.Path, true);
-		}
 
 		class MenuTemplateWriter : TextWriter
 		{
diff --git a/mcs/class/System.Web/System.Web.UI.WebControls/MenuListRenderer.cs b/mcs/class/System.Web/System.Web.UI.WebControls/MenuListRenderer.cs
new file mode 100644
index 0000000..63399a6
--- /dev/null
+++ b/mcs/class/System.Web/System.Web.UI.WebControls/MenuListRenderer.cs
@@ -0,0 +1,403 @@
+//
+// Authors:
+//	Marek Habersack <grendel at twistedcode.net>
+//
+// (C) 2010 Novell, Inc (http://novell.com)
+//
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Drawing;
+using System.Globalization;
+using System.Text;
+using System.Web;
+using System.Web.UI;
+using System.Web.UI.HtmlControls;
+
+namespace System.Web.UI.WebControls
+{
+	sealed class MenuListRenderer : BaseMenuRenderer
+	{
+		bool haveDynamicPopOut;
+		
+		public override HtmlTextWriterTag Tag {
+			get { return HtmlTextWriterTag.Div; }
+			
+		}
+		
+		public MenuListRenderer (Menu owner)
+			: base (owner)
+		{
+		}
+
+		public override void PreRender (Page page, HtmlHead head, ClientScriptManager csm, string cmenu, StringBuilder script)
+		{
+			Menu owner = Owner;
+			script.AppendFormat ("new Sys.WebForms.Menu ({{ element: '{0}', disappearAfter: {1}, orientation: '{2}', tabIndex: {3}, disabled: {4} }});",
+					     owner.ClientID,
+					     ClientScriptManager.GetScriptLiteral (owner.DisappearAfter),
+					     owner.Orientation.ToString ().ToLowerInvariant (),
+					     ClientScriptManager.GetScriptLiteral (owner.TabIndex),
+					     (!owner.Enabled).ToString ().ToLowerInvariant ());
+
+			Type mt = typeof (Menu);
+			if (!csm.IsClientScriptIncludeRegistered (mt, "MenuModern.js")) {
+				string url = csm.GetWebResourceUrl (mt, "MenuModern.js");
+				csm.RegisterClientScriptInclude (mt, "MenuModern.js", url);
+			}
+			
+			if (!owner.IncludeStyleBlock)
+				return;
+			
+			if (head == null)
+				throw new InvalidOperationException ("Using Menu.IncludeStyleBlock requires Page.Header to be non-null (e.g. <head runat=\"server\" />).");
+
+			StyleBlock block = new StyleBlock (owner.ClientID);
+			Style style = owner.ControlStyle;
+			bool horizontal = owner.Orientation == Orientation.Horizontal;
+			if (style != null)
+				block.RegisterStyle (style);
+			
+			// #MenuId img.icon { border-style:none;vertical-align:middle; }
+			block.RegisterStyle (HtmlTextWriterStyle.BorderStyle, "none", "img.icon")
+				.Add (HtmlTextWriterStyle.VerticalAlign, "middle");
+
+			// #MenuId img.separator { border-style:none;display:block; }
+			block.RegisterStyle (HtmlTextWriterStyle.BorderStyle, "none", "img.separator")
+				.Add (HtmlTextWriterStyle.Display, "block");
+
+			// #MenuId img.horizontal-separator { border-style:none;vertical-align:middle; }
+			if (horizontal)
+				block.RegisterStyle (HtmlTextWriterStyle.BorderStyle, "none", "img.horizontal-separator")
+					.Add (HtmlTextWriterStyle.VerticalAlign, "middle");
+			
+			// #MenuId ul { list-style:none;margin:0;padding:0;width:auto; }
+			block.RegisterStyle (HtmlTextWriterStyle.ListStyleType, "none", "ul")
+				.Add (HtmlTextWriterStyle.Margin, "0")
+				.Add (HtmlTextWriterStyle.Padding, "0")
+				.Add (HtmlTextWriterStyle.Width, "auto");
+
+			SubMenuStyle sms = owner.StaticMenuStyleInternal;
+			if (sms != null) {
+				// #MenuId ul.static { ... }
+				block.RegisterStyle (sms, "ul.static");
+			}
+
+			// #MenuId ul.dynamic { ...; z-index:1; ... }
+			NamedCssStyleCollection css = block.RegisterStyle ("ul.dynamic");
+			sms = owner.DynamicMenuStyleInternal;
+			if (sms != null) {
+				sms.ForeColor = Color.Empty;
+				css.Add (sms);
+			}
+			
+			css.Add (HtmlTextWriterStyle.ZIndex, "1");
+			int num = owner.DynamicHorizontalOffset;
+			if (num != 0)
+				css.Add (HtmlTextWriterStyle.MarginLeft, num + "px");
+			num = owner.DynamicVerticalOffset;
+			if (num != 0)
+				css.Add (HtmlTextWriterStyle.MarginTop, num + "px");
+
+			// BUG: rendering of LevelSubMenuStyles throws InvalidCastException on .NET
+			// but I suspect the code it is supposed to generate is as follows:
+			//
+			// #MenuId ul.levelX { ... }
+			//
+			// so we will just ignore the bug and go with the above code.
+			RenderLevelStyles (block, num, owner.LevelSubMenuStyles, "ul.level");
+			
+			// #MenuId a { text-decoration:none;white-space:nowrap;display:block; }
+			block.RegisterStyle (HtmlTextWriterStyle.TextDecoration, "none", "a")
+				.Add (HtmlTextWriterStyle.WhiteSpace, "nowrap")
+				.Add (HtmlTextWriterStyle.Display, "block");
+
+			// #MenuId a.static { ... }
+			RenderAnchorStyle (block, owner.StaticMenuItemStyleInternal, "a.static");
+			
+			// #MenuId a.popout { background-image:url("...");background-repeat:no-repeat;background-position:right center;padding-right:14px; }
+			bool needDynamicPopOut = false;
+			string str = owner.StaticPopOutImageUrl;
+
+			css = null;
+			string urlFormat = "url(\"{0}\")";
+			if (String.IsNullOrEmpty (str)) {
+				if (owner.StaticEnableDefaultPopOutImage)
+					css = block.RegisterStyle (HtmlTextWriterStyle.BackgroundImage, String.Format (urlFormat, GetArrowResourceUrl (owner)), "a.popout");
+				else
+					needDynamicPopOut = true;
+			} else {
+				css = block.RegisterStyle (HtmlTextWriterStyle.BackgroundImage, String.Format (urlFormat, str), "a.popout");
+				needDynamicPopOut = true;
+			}
+			
+			if (css != null)
+				css.Add ("background-repeat", "no-repeat")
+					.Add ("background-position", "right center")
+					.Add (HtmlTextWriterStyle.PaddingRight, "14px");
+
+			// #MenuId a.popout-dynamic { background:url("...") no-repeat right center;padding-right:14px; }
+			str = owner.DynamicPopOutImageUrl;
+			bool haveDynamicUrl = !String.IsNullOrEmpty (str);
+			css = null;
+			if (needDynamicPopOut || haveDynamicUrl) {
+				urlFormat = "url(\"{0}\") no-repeat right center";
+				if (!haveDynamicUrl) {
+					if (owner.DynamicEnableDefaultPopOutImage)
+						css = block.RegisterStyle (HtmlTextWriterStyle.BackgroundImage, String.Format (urlFormat, GetArrowResourceUrl (owner)), "a.popout-dynamic");
+				} else
+					css = block.RegisterStyle (HtmlTextWriterStyle.BackgroundImage, String.Format (urlFormat, str), "a.popout-dynamic");
+			}
+			if (css != null) {
+				haveDynamicPopOut = true;
+				css.Add (HtmlTextWriterStyle.PaddingRight, "14px");
+			}
+
+			// #MenuId a.dynamic { ... }
+			RenderAnchorStyle (block, owner.DynamicMenuItemStyleInternal, "a.dynamic");
+			
+			num = owner.StaticDisplayLevels;
+			Unit ssmi = owner.StaticSubMenuIndent;
+			string unitName;
+			double indent;
+				
+			if (ssmi == Unit.Empty) {
+				unitName = "em";
+				indent = 1;
+			} else {
+				unitName = Unit.GetExtension (ssmi.Type);
+				indent = ssmi.Value;
+			}
+
+			// #MenuId a.levelX { ... }
+			RenderLevelStyles (block, num, owner.LevelMenuItemStyles, "a.level", unitName, indent);
+
+			// #MenuId a.selected.levelX { ... }
+			RenderLevelStyles (block, num, owner.LevelSelectedStyles, "a.selected.level");
+
+			// #MenuId a.static.selected { ...;text-decoration:none; }
+			RenderAnchorStyle (block, owner.StaticSelectedStyleInternal, "a.static.selected");
+			
+			// #MenuId a.dynamic.selected { ...;text-decoration:none;border-style:none; }
+			RenderAnchorStyle (block, owner.DynamicSelectedStyleInternal, "a.dynamic.selected");
+
+			// #MenuId a.static.highlighted { ... }
+			style = owner.StaticHoverStyleInternal;
+			if (style != null)
+				block.RegisterStyle (style, "a.static.highlighted");
+			
+			// #MenuId a.dynamic.highlighted { ... }
+			style = owner.DynamicHoverStyleInternal;
+			if (style != null)
+				block.RegisterStyle (style, "a.dynamic.highlighted");
+			
+			head.Controls.Add (block);
+		}
+		
+		public override void RenderBeginTag (HtmlTextWriter writer, string skipLinkText)
+		{
+			Menu owner = Owner;
+			
+			// <a href="#ID_SkipLink">
+			writer.AddAttribute (HtmlTextWriterAttribute.Href, "#" + owner.ClientID + "_SkipLink");
+			writer.RenderBeginTag (HtmlTextWriterTag.A);
+				
+			// <img alt="" height="0" width="0" src="" style="border-width:0px;"/>
+			writer.AddAttribute (HtmlTextWriterAttribute.Alt, skipLinkText);
+			Page page = owner.Page;
+			ClientScriptManager csm = page != null ? page.ClientScript : new ClientScriptManager (null);
+				
+			writer.AddAttribute (HtmlTextWriterAttribute.Src, csm.GetWebResourceUrl (typeof (SiteMapPath), "transparent.gif"));
+			writer.AddAttribute (HtmlTextWriterAttribute.Width, "0");
+			writer.AddAttribute (HtmlTextWriterAttribute.Height, "0");
+			
+			writer.AddStyleAttribute (HtmlTextWriterStyle.BorderWidth, "0px");
+			writer.RenderBeginTag (HtmlTextWriterTag.Img);
+			writer.RenderEndTag ();
+				
+			writer.RenderEndTag (); // </a>
+		}
+		
+		public override void RenderEndTag (HtmlTextWriter writer)
+		{
+		}
+		
+		public override void AddAttributesToRender (HtmlTextWriter writer)
+		{
+			// do nothing
+		}
+
+		public override void RenderContents (HtmlTextWriter writer)
+		{
+			Menu owner = Owner;
+			MenuItemCollection items = owner.Items;
+			owner.RenderMenu (writer, items, owner.Orientation == Orientation.Vertical, false, 0, items.Count > 1);
+		}
+		
+		public override void RenderMenuBeginTag (HtmlTextWriter writer, bool dynamic, int menuLevel)
+		{
+			if (dynamic || menuLevel == 0) {
+				var style = new SubMenuStyle ();
+				AddCssClass (style, "level" + (menuLevel + 1));
+				FillMenuStyle (null, dynamic, menuLevel, style);
+				style.AddAttributesToRender (writer);
+				writer.RenderBeginTag (HtmlTextWriterTag.Ul);
+			}
+		}
+
+		public override void RenderMenuEndTag (HtmlTextWriter writer, bool dynamic, int menuLevel)
+		{
+			if (dynamic || menuLevel == 0)
+				base.RenderMenuEndTag (writer, dynamic, menuLevel);
+		}
+		
+		public override void RenderMenuBody (HtmlTextWriter writer, MenuItemCollection items, bool vertical, bool dynamic, bool notLast)
+		{
+			Menu owner = Owner;
+			int count = items.Count;
+			var oc = new OwnerContext (this);
+			
+			for (int n = 0; n < count; n++) {
+				MenuItem item = items [n];
+				Adapters.MenuAdapter adapter = owner.Adapter as Adapters.MenuAdapter;
+				if (adapter != null)
+					adapter.RenderItem (writer, item, n);
+				else
+				 	RenderMenuItem (writer, item, vertical, (n + 1) == count ? notLast : true, n == 0, oc);
+			}
+		}
+
+		protected override void RenderMenuItem (HtmlTextWriter writer, MenuItem item, bool vertical, bool notLast, bool isFirst, OwnerContext oc)
+		{
+			Menu owner = Owner;
+			bool displayChildren = owner.DisplayChildren (item);
+			bool isDynamicItem = IsDynamicItem (owner, item);
+			int itemLevel = item.Depth + 1;
+			string str;
+			
+			writer.RenderBeginTag (HtmlTextWriterTag.Li);
+
+			if (isDynamicItem)
+				RenderSeparatorImage (owner, writer, oc.DynamicTopSeparatorImageUrl, true);
+			else
+				RenderSeparatorImage (owner, writer, oc.StaticTopSeparatorImageUrl, true);
+			
+			var linkStyle = new Style ();
+			if (displayChildren && (isDynamicItem || itemLevel >= oc.StaticDisplayLevels))
+				AddCssClass (linkStyle, isDynamicItem && haveDynamicPopOut ? "popout-dynamic" : "popout");
+			AddCssClass (linkStyle, "level" + itemLevel);
+
+			MenuItemStyleCollection levelStyles = oc.LevelMenuItemStyles;
+			if (levelStyles != null && levelStyles.Count >= itemLevel) {
+				MenuItemStyle style = levelStyles [itemLevel - 1];
+				string cssClass = style.CssClass;
+				if (!String.IsNullOrEmpty (cssClass))
+					AddCssClass (linkStyle, cssClass);
+			}
+
+			if (owner.SelectedItem == item)
+				AddCssClass (linkStyle, "selected");
+			
+			str = item.ToolTip;
+			if (!String.IsNullOrEmpty (str))
+				writer.AddAttribute ("title", str);
+			linkStyle.AddAttributesToRender (writer);
+			RenderItemHref (owner, writer, item);
+			writer.RenderBeginTag (HtmlTextWriterTag.A);
+			owner.RenderItemContent (writer, item, isDynamicItem);
+			writer.RenderEndTag ();
+
+			str = item.SeparatorImageUrl;
+			if (String.IsNullOrEmpty (str)) {
+				if (isDynamicItem)
+					str = oc.DynamicBottomSeparatorImageUrl;
+				else
+					str = oc.StaticBottomSeparatorImageUrl;
+			}
+			RenderSeparatorImage (owner, writer, str, true);
+
+			// if (itemLevel == 1)
+			// 	writer.RenderEndTag (); // </li>
+			
+			if (displayChildren)
+				owner.RenderMenu (writer, item.ChildItems, vertical, isDynamicItem, itemLevel, notLast);
+
+			if (itemLevel > 1)
+				writer.RenderEndTag (); // </li>
+		}
+
+		public override bool IsDynamicItem (Menu owner, MenuItem item)
+		{
+			if (owner == null)
+				throw new ArgumentNullException ("owner");
+
+			if (item == null)
+				throw new ArgumentNullException ("item");
+			
+			return item.Depth + 1 >= Owner.StaticDisplayLevels;
+		}
+		
+		NamedCssStyleCollection RenderAnchorStyle (StyleBlock block, Style style, string styleName)
+		{
+			if (style == null || block == null)
+				return null;
+
+			style.AlwaysRenderTextDecoration = true;
+			NamedCssStyleCollection css = block.RegisterStyle (style, styleName);
+			if (style.BorderStyle == BorderStyle.NotSet)
+				css.Add (HtmlTextWriterStyle.BorderStyle, "none");
+
+			return css;
+		}
+
+		void RenderLevelStyles (StyleBlock block, int num, IList levelStyles, string name, string unitName = null, double indent = 0)
+		{
+			int stylesCount = levelStyles != null ? levelStyles.Count : 0;
+			bool haveStyles = stylesCount > 0;
+			if (!haveStyles || block == null)
+				return;
+
+			NamedCssStyleCollection css;
+			Style style;
+			bool haveIndent = !String.IsNullOrEmpty (unitName) && indent != 0;
+			for (int i = 0; i < stylesCount; i++) {
+				if ((i == 0 && !haveStyles))
+					continue;
+				
+				css = block.RegisterStyle (name + (i + 1));
+				if (haveStyles && stylesCount > i) {
+					style = levelStyles [i] as Style;
+					if (style != null) {
+						style.AlwaysRenderTextDecoration = true;
+						css.CopyFrom (style.GetStyleAttributes (null));
+					}
+				}
+				
+				if (haveIndent && i > 0 && i < num) {
+					css.Add (HtmlTextWriterStyle.PaddingLeft, indent.ToString (CultureInfo.InvariantCulture) + unitName);
+					indent += indent;
+				}
+			}
+		}
+	}
+}
diff --git a/mcs/class/System.Web/System.Web.UI.WebControls/MenuModern.js b/mcs/class/System.Web/System.Web.UI.WebControls/MenuModern.js
new file mode 100644
index 0000000..ee9a035
--- /dev/null
+++ b/mcs/class/System.Web/System.Web.UI.WebControls/MenuModern.js
@@ -0,0 +1,400 @@
+/*
+ * Authors:
+ *	Marek Habersack <grendel at twistedcode.net>
+ *
+ * (C) 2010 Novell, Inc (http: *novell.com)
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * This code serves only the List rendering mode of the Menu control in Mono
+ *
+ */
+if (!window.Sys) { window.Sys = {}; }
+if (!Sys.WebForms) { Sys.WebForms = {}; }
+
+Sys.WebForms.Menu = function (options)
+{
+	if (options == null)
+		throw "Sys.WebForms.Menu constructor requires options to be not null.";
+
+	if (options.element == null)
+		throw "options.element is required.";
+
+	if (options.orientation == null)
+		throw "options.orientation is required.";
+
+	if (typeof (options.element) == "string")
+		this.menuID = options.element;
+	else
+		this.mainElement = options.element;
+
+	this.disappearAfter = options.disappearAfter || 500;
+	this.orientation = options.orientation;
+	this.tabIndex = options.tabIndex || 0;
+	this.disabled = options.disabled || false;
+	this.level = options.level || 0;
+	this.menuItemIndex = 0;
+
+	if (this.level != 0) {
+		if (options.parentMenu == null)
+			throw "options.parentMenu is required for all submenus.";
+
+		this.parentMenu = options.parentMenu;
+	}
+
+	if (this.mainElement == null) {
+		this.mainElement = document.getElementById (this.menuID);
+		if (this.mainElement == null)
+			throw "Unable to find menu element with id '" + this.menuID + "'.";
+
+		if (this.mainElement.tagName != "DIV")
+			throw "This script must be used only when the menu containing element is DIV.";
+	}
+
+	/* Due to the way we generate the menu in the list mode, every submenu other than the root one is dynamic */
+	if (this.level > 1) {
+		this.menuType = "dynamic";
+		if (options.parentMenu == null)
+			throw "options.parent is required for all submenus.";
+
+		var subMenuId = Sys.WebForms.Menu.Helpers.getNextSubMenuId ();
+		this.parentMenu = options.parentMenu;
+		this.orientation = this.parentMenu.orientation;
+		this.path = this.parentMenu.path + subMenuId;
+		this.menuID = this.parentMenu.menuID;
+		if (this.mainElement.id == null || this.mainElement.id == "")
+			this.mainElement.id = this.menuID + ":submenu:" + subMenuId;
+	} else {
+		this.menuType = "static";
+		if (this.level == 1) {
+			this.menuID = this.parentMenu.menuID;
+			this.orientation = this.parentMenu.orientation;
+		}
+		this.parentMenu = null;
+		this.path = "0";
+		this.mainElement.setAttribute ("tabindex", this.tabIndex);
+		this.mainElement.setAttribute ("role", this.orientation == "vertical" ? "menu" : "menubar");
+		with (this.mainElement.style) {
+			width = "auto";
+			position = "relative";
+		}
+	}
+
+	if (this.level > 0) {
+		Sys.WebForms.Menu.Helpers.appendCssClass (this.mainElement, this.menuType);
+	}
+
+	if (this.level <= 1)
+		Sys.WebForms.Menu.Helpers.setFloat (this.mainElement, "left");
+
+	this.loadItems ();
+}
+
+Sys.WebForms.Menu.Helpers = {
+	__subMenuCounter: 0,
+	__menuItems: [],
+	__popupToClose: null,
+
+	setPopupToClose: function (element) {
+		this.__popupToClose = element;
+	},
+
+	getPopupToClose: function () {
+		return this.__popupToClose;
+	},
+
+	setFloat: function (element, side) {
+		/* For standards-compliant browsers */
+		element.style.cssFloat = "left";
+
+		/* For IE */
+		element.style.styleFloat = "left";
+	},
+
+	appendCssClass: function (element, className) {
+		if (element == null || className == null)
+			return;
+
+		var cname = element.className;
+		if (cname == null || cname == "")
+			cname = className;
+		else
+			cname += " " + className;
+
+		element.className = cname;
+	},
+
+	getNextSubMenuId: function () {
+		return ++this.__subMenuCounter;
+	},
+
+	addMenuItem: function (item) {
+		if (item == null)
+			return;
+
+		if (!(item instanceof Sys.WebForms.MenuItem))
+			throw "item must be an instance of Sys.WebForms.MenuItem";
+
+		if (this.__menuItems [item.path] != null)
+			throw "item already exists (path " + item.path + ")";
+
+		this.__menuItems [item.path] = item;
+	},
+
+	getMenuItem: function (element) {
+		if (element == null)
+			return null;
+
+		var itemPath = element ["__MonoMenuItemPath"];
+		if (itemPath == null)
+			return null;
+
+		return this.__menuItems [itemPath];
+	},
+
+	addEventHandler: function (element, eventType, handler, capture) {
+		/* There's also element.attachEvent, but it changes handler semantics on IE, so we don't
+		 * even take it into consideration.
+		 */
+		if (element.addEventListener)
+			element.addEventListener(eventType, handler, !!capture);
+		else
+			element ["on" + eventType] = handler;
+	}
+};
+
+Sys.WebForms.Menu.prototype.loadItems = function ()
+{
+	var children = this.mainElement.childNodes;
+	var count = children.length;
+	var child;
+
+	for (var i = 0; i < count; i++) {
+		child = children [i];
+		if (child.nodeType != 1)
+			continue;
+
+		if (child.tagName == "UL") {
+			var submenu = new Sys.WebForms.Menu ({ element: child, disappearAfter: this.disappearAfter, orientation: this.orientation,
+							       disabled: this.disabled, level: this.level + 1, tabIndex: this.tabIndex, parentMenu: this});
+		} else if (child.tagName == "LI") {
+			var menuItem = new Sys.WebForms.MenuItem ({ element: child, menuType: this.menuType, disappearAfter: this.disappearAfter, orientation: this.orientation,
+								    disabled: this.disabled, level: this.level + 1, tabIndex: this.tabIndex, parentMenu: this});
+		}
+	}
+}
+
+Sys.WebForms.Menu.prototype.getNextMenuItemId = function ()
+{
+	return ++this.menuItemIndex;
+}
+
+Sys.WebForms.MenuItem = function (options)
+{
+	if (options == null)
+		throw "Sys.WebForms.MenuItem constructor requires options to be not null.";
+
+	if (options.element == null)
+		throw "options.element must be set.";
+
+	if (options.menuType == null)
+		throw "options.menuType must be set.";
+
+	if (options.parentMenu == null)
+		throw "options.parentMenu is required.";
+
+	this.element = options.element;
+	this.menuType = options.menuType;
+	this.parentMenu = options.parentMenu;
+	this.path = this.parentMenu.path + this.parentMenu.getNextMenuItemId ();
+
+	var children = this.element.childNodes;
+	var child;
+	var subMenu = null;
+
+	for (var i = 0; i < children.length; i++) {
+		child = children [i];
+		if (child.nodeType != 1)
+			continue;
+
+		switch (child.tagName) {
+			case "A":
+				Sys.WebForms.Menu.Helpers.appendCssClass (child, this.menuType);
+				child.setAttribute ("tabindex", "-1");
+				break;
+
+			case "UL":
+				this.subMenu = new Sys.WebForms.Menu ({ element: child, disappearAfter: options.disappearAfter, orientation: options.orientation,
+									disabled: options.disabled, level: options.level, tabIndex: options.tabIndex, parentMenu: options.parentMenu});
+				if (this.subMenu.menuType == "dynamic") {
+					var topValue;
+					var leftValue;
+
+					if (this.subMenu.orientation == "horizontal" && this.subMenu.parentMenu != null && this.subMenu.parentMenu.menuType == "static") {
+						topValue = "100%";
+						leftValue = "0px";
+					} else {
+						topValue = "0px";
+						leftValue = "100%";
+					}
+
+					with (this.subMenu.mainElement.style) {
+						display = "none";
+						position = "absolute";
+						top = topValue;
+						left = leftValue;
+					}
+				}
+
+				Sys.WebForms.Menu.Helpers.appendCssClass (this.element, "has-popup");
+				this.element.setAttribute ("aria-haspopup", this.subMenu.mainElement.id);
+				Sys.WebForms.Menu.Helpers.addEventHandler (this.element, "mouseover", this.mouseOverHandler);
+				Sys.WebForms.Menu.Helpers.addEventHandler (this.element, "mouseout", this.mouseOutHandler);
+				break;
+		}
+	}
+
+	Sys.WebForms.Menu.Helpers.appendCssClass (this.element, this.menuType);
+	this.element.style.position = "relative";
+	this.element.setAttribute ("role", "menuitem");
+	this.element ["__MonoMenuItemPath"] = this.path;
+
+	if (this.parentMenu.orientation == "horizontal" && this.parentMenu.menuType == "static")
+		Sys.WebForms.Menu.Helpers.setFloat (this.element, "left");
+
+	Sys.WebForms.Menu.Helpers.addMenuItem (this);
+}
+
+Sys.WebForms.MenuItem.prototype.log = function (msg)
+{
+	if (console && console.log)
+		console.log (msg);
+}
+
+Sys.WebForms.MenuItem.prototype.hide = function (popup, leaveParentOpen)
+{
+	if (popup == null || popup.mainElement == null || popup.menuType == "static")
+		return;
+
+	var current = popup;
+	while (current != null) {
+		if (current.menuType == "static" || (leaveParentOpen && current == this.parentMenu))
+			break;
+
+		if (current.mainElement != null)
+			current.mainElement.style.display = "none";
+
+		if (current.hideTimerId != null) {
+			window.clearTimeout (current.hideTimerId);
+			current.hideTimerId = null;
+		}
+
+		current = current.parentMenu;
+	}
+}
+
+Sys.WebForms.MenuItem.prototype.onMouseOver = function (popupId)
+{
+	var cur = Sys.WebForms.Menu.Helpers.getPopupToClose ();
+	if (cur != null) {
+		if (cur.hideTimerId != null) {
+			window.clearTimeout (cur.hideTimerId);
+			cur.hideTimerId = null;
+		}
+		this.hide (cur, true);
+		Sys.WebForms.Menu.Helpers.setPopupToClose (null);
+	}
+	if (popupId == null || popupId == "")
+		return;
+
+	var popup = document.getElementById (popupId);
+	if (popup == null)
+		throw "Popup with id '" + popupId + "' could not be found.";
+
+	this.hide (cur, true);
+	popup.style.display = "block";
+}
+
+Sys.WebForms.MenuItem.prototype.onMouseOut = function (popupId)
+{
+	if (popupId == null || popupId == "")
+		return;
+
+	var popup = document.getElementById (popupId);
+	if (popup == null)
+		throw "Popup with id '" + popupId + "' could not be found.";
+
+	var cur = this.subMenu;
+	if (cur != null) {
+		var myself = this;
+		cur.hideTimerId = window.setTimeout (function () {
+							     myself.hide (cur, false);
+						     },
+						     this.subMenu.disappearAfter);
+
+	}
+	Sys.WebForms.Menu.Helpers.setPopupToClose (cur);
+}
+
+Sys.WebForms.MenuItem.prototype.mouseOverHandler = function (e)
+{
+	var menuItem = Sys.WebForms.Menu.Helpers.getMenuItem (this);
+	if (menuItem == null || !(menuItem instanceof Sys.WebForms.MenuItem)) {
+		e.returnResult = false;
+		e.cancelBuble = false;
+		throw "MenuItem could not be found in mouseover handler.";
+	}
+
+	menuItem.onMouseOver (this.getAttribute ("aria-haspopup"));
+	menuItem.finalizeEvent (e);
+}
+
+Sys.WebForms.MenuItem.prototype.mouseOutHandler = function (e)
+{
+	var menuItem = Sys.WebForms.Menu.Helpers.getMenuItem (this);
+
+	if (menuItem == null || !(menuItem instanceof Sys.WebForms.MenuItem)) {
+		e.returnResult = false;
+		e.cancelBuble = false;
+		throw "MenuItem could not be found in mouseout handler.";
+	}
+	menuItem.onMouseOut (this.getAttribute ("aria-haspopup"));
+	menuItem.finalizeEvent (e);
+}
+
+Sys.WebForms.MenuItem.prototype.finalizeEvent = function (e)
+{
+	/* For standards-compliant browsers */
+	if (e != null) {
+		if (e.preventDefault)
+			e.preventDefault();
+		else
+			e.returnResult = false;
+
+		if (e.stopPropagation)
+			e.stopPropagation();
+		else
+			e.cancelBubble = true;
+	}
+
+	/* For IE */
+	if (window.event != null)
+		window.event.cancelBubble = true;
+}
\ No newline at end of file
diff --git a/mcs/class/System.Web/System.Web.UI.WebControls/MenuTableRenderer.cs b/mcs/class/System.Web/System.Web.UI.WebControls/MenuTableRenderer.cs
new file mode 100644
index 0000000..ffe7309
--- /dev/null
+++ b/mcs/class/System.Web/System.Web.UI.WebControls/MenuTableRenderer.cs
@@ -0,0 +1,517 @@
+//
+// Authors:
+//	Lluis Sanchez Gual (lluis at novell.com)
+//	Igor Zelmanovich (igorz at mainsoft.com)
+//	Marek Habersack <grendel at twistedcode.net>
+//
+// (C) 2010 Novell, Inc (http://novell.com)
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Web;
+using System.Web.UI;
+using System.Web.UI.HtmlControls;
+
+namespace System.Web.UI.WebControls
+{
+	sealed class MenuTableRenderer : BaseMenuRenderer
+	{
+		const string onPreRenderScript = "var {0} = new Object ();\n{0}.webForm = {1};\n{0}.disappearAfter = {2};\n{0}.vertical = {3};";
+
+		public override HtmlTextWriterTag Tag {
+			get { return HtmlTextWriterTag.Table; }
+			
+		}
+		
+		public MenuTableRenderer (Menu owner)
+			: base (owner)
+		{
+		}
+		
+		public override void AddAttributesToRender (HtmlTextWriter writer)
+		{
+			writer.AddAttribute ("cellpadding", "0", false);
+			writer.AddAttribute ("cellspacing", "0", false);
+			writer.AddAttribute ("border", "0", false);
+
+			base.AddAttributesToRender (writer);
+		}
+		
+		public override void PreRender (Page page, HtmlHead head, ClientScriptManager csm, string cmenu, StringBuilder script)
+		{
+			Menu owner = Owner;
+			MenuItemStyle staticMenuItemStyle = owner.StaticMenuItemStyleInternal;
+			SubMenuStyle staticMenuStyle = owner.StaticMenuStyleInternal;
+			MenuItemStyle dynamicMenuItemStyle = owner.DynamicMenuItemStyleInternal;
+			SubMenuStyle dynamicMenuStyle = owner.DynamicMenuStyleInternal;
+			MenuItemStyleCollection levelMenuItemStyles = owner.LevelMenuItemStyles;
+			List<Style> levelMenuItemLinkStyles = owner.LevelMenuItemLinkStyles;
+			SubMenuStyleCollection levelSubMenuStyles = owner.LevelSubMenuStylesInternal;
+			MenuItemStyle staticSelectedStyle = owner.StaticSelectedStyleInternal;
+			MenuItemStyle dynamicSelectedStyle = owner.DynamicSelectedStyleInternal;
+			MenuItemStyleCollection levelSelectedStyles = owner.LevelSelectedStylesInternal;
+			List<Style> levelSelectedLinkStyles = owner.LevelSelectedLinkStyles;
+			Style staticHoverStyle = owner.StaticHoverStyleInternal;
+			Style dynamicHoverStyle = owner.DynamicHoverStyleInternal;
+			
+			if (!csm.IsClientScriptIncludeRegistered (typeof (Menu), "Menu.js")) {
+				string url = csm.GetWebResourceUrl (typeof (Menu), "Menu.js");
+				csm.RegisterClientScriptInclude (typeof (Menu), "Menu.js", url);
+			}
+			
+			script.AppendFormat (onPreRenderScript,
+					     cmenu,
+					     page.IsMultiForm ? page.theForm : "window",
+					     ClientScriptManager.GetScriptLiteral (owner.DisappearAfter),
+					     ClientScriptManager.GetScriptLiteral (owner.Orientation == Orientation.Vertical));
+
+			if (owner.DynamicHorizontalOffset != 0)
+				script.Append (String.Concat (cmenu, ".dho = ", ClientScriptManager.GetScriptLiteral (owner.DynamicHorizontalOffset), ";\n"));
+			if (owner.DynamicVerticalOffset != 0)
+				script.Append (String.Concat (cmenu, ".dvo = ", ClientScriptManager.GetScriptLiteral (owner.DynamicVerticalOffset), ";\n"));
+
+			// The order in which styles are defined matters when more than one class
+			// is assigned to an element
+			RegisterStyle (owner.PopOutBoxStyle, head);
+			RegisterStyle (owner.ControlStyle, owner.ControlLinkStyle, head);
+			
+			if (staticMenuItemStyle != null)
+				RegisterStyle (owner.StaticMenuItemStyle, owner.StaticMenuItemLinkStyle, head);
+
+			if (staticMenuStyle != null)
+				RegisterStyle (owner.StaticMenuStyle, head);
+			
+			if (dynamicMenuItemStyle != null)
+				RegisterStyle (owner.DynamicMenuItemStyle, owner.DynamicMenuItemLinkStyle, head);
+
+			if (dynamicMenuStyle != null)
+				RegisterStyle (owner.DynamicMenuStyle, head);
+
+			if (levelMenuItemStyles != null && levelMenuItemStyles.Count > 0) {
+				levelMenuItemLinkStyles = new List<Style> (levelMenuItemStyles.Count);
+				foreach (Style style in levelMenuItemStyles) {
+					Style linkStyle = new Style ();
+					levelMenuItemLinkStyles.Add (linkStyle);
+					RegisterStyle (style, linkStyle, head);
+				}
+			}
+		
+			if (levelSubMenuStyles != null)
+				foreach (Style style in levelSubMenuStyles)
+					RegisterStyle (style, head);
+
+			if (staticSelectedStyle != null)
+				RegisterStyle (staticSelectedStyle, owner.StaticSelectedLinkStyle, head);
+			
+			if (dynamicSelectedStyle != null)
+				RegisterStyle (dynamicSelectedStyle, owner.DynamicSelectedLinkStyle, head);
+
+			if (levelSelectedStyles != null && levelSelectedStyles.Count > 0) {
+				levelSelectedLinkStyles = new List<Style> (levelSelectedStyles.Count);
+				foreach (Style style in levelSelectedStyles) {
+					Style linkStyle = new Style ();
+					levelSelectedLinkStyles.Add (linkStyle);
+					RegisterStyle (style, linkStyle, head);
+				}
+			}
+			
+			if (staticHoverStyle != null) {
+				if (head == null)
+					throw new InvalidOperationException ("Using Menu.StaticHoverStyle requires Page.Header to be non-null (e.g. <head runat=\"server\" />).");
+				RegisterStyle (staticHoverStyle, owner.StaticHoverLinkStyle, head);
+				script.Append (String.Concat (cmenu, ".staticHover = ", ClientScriptManager.GetScriptLiteral (staticHoverStyle.RegisteredCssClass), ";\n"));
+				script.Append (String.Concat (cmenu, ".staticLinkHover = ", ClientScriptManager.GetScriptLiteral (owner.StaticHoverLinkStyle.RegisteredCssClass), ";\n"));
+			}
+			
+			if (dynamicHoverStyle != null) {
+				if (head == null)
+					throw new InvalidOperationException ("Using Menu.DynamicHoverStyle requires Page.Header to be non-null (e.g. <head runat=\"server\" />).");
+				RegisterStyle (dynamicHoverStyle, owner.DynamicHoverLinkStyle, head);
+				script.Append (String.Concat (cmenu, ".dynamicHover = ", ClientScriptManager.GetScriptLiteral (dynamicHoverStyle.RegisteredCssClass), ";\n"));
+				script.Append (String.Concat (cmenu, ".dynamicLinkHover = ", ClientScriptManager.GetScriptLiteral (owner.DynamicHoverLinkStyle.RegisteredCssClass), ";\n"));
+			}
+		}
+
+		public override void RenderBeginTag (HtmlTextWriter writer, string skipLinkText)
+		{
+			Menu owner = Owner;
+			
+			// <a href="#ID_SkipLink">
+			writer.AddAttribute (HtmlTextWriterAttribute.Href, "#" + owner.ClientID + "_SkipLink");
+			writer.RenderBeginTag (HtmlTextWriterTag.A);
+				
+			// <img alt="" height="0" width="0" src="" style="border-width:0px;"/>
+			writer.AddAttribute (HtmlTextWriterAttribute.Alt, skipLinkText);
+			writer.AddAttribute (HtmlTextWriterAttribute.Height, "0");
+			writer.AddAttribute (HtmlTextWriterAttribute.Width, "0");
+				
+			Page page = owner.Page;
+			ClientScriptManager csm = page != null ? page.ClientScript : new ClientScriptManager (null);
+				
+			writer.AddAttribute (HtmlTextWriterAttribute.Src, csm.GetWebResourceUrl (typeof (SiteMapPath), "transparent.gif"));
+			writer.AddStyleAttribute (HtmlTextWriterStyle.BorderWidth, "0px");
+			writer.RenderBeginTag (HtmlTextWriterTag.Img);
+			writer.RenderEndTag ();
+				
+			writer.RenderEndTag (); // </a>
+		}
+		
+		public override void RenderEndTag (HtmlTextWriter writer)
+		{
+			Menu owner = Owner;
+			if (owner.StaticDisplayLevels == 1 && owner.MaximumDynamicDisplayLevels > 0)
+				owner.RenderDynamicMenu (writer, owner.Items);
+		}
+
+		public override void RenderContents (HtmlTextWriter writer)
+		{
+			Menu owner = Owner;
+			RenderMenuBody (writer, owner.Items, owner.Orientation == Orientation.Vertical, false, false);
+		}
+		
+		void RenderMenuBeginTagAttributes (HtmlTextWriter writer, bool dynamic, int menuLevel)
+		{
+			writer.AddAttribute ("cellpadding", "0", false);
+			writer.AddAttribute ("cellspacing", "0", false);
+			writer.AddAttribute ("border", "0", false);
+
+			if (!dynamic) {
+				SubMenuStyle style = new SubMenuStyle ();
+				FillMenuStyle (null, dynamic, menuLevel, style);
+				style.AddAttributesToRender (writer);
+			}
+		}
+		
+		public override void RenderMenuBeginTag (HtmlTextWriter writer, bool dynamic, int menuLevel)
+		{
+			RenderMenuBeginTagAttributes (writer, dynamic, menuLevel);
+			writer.RenderBeginTag (HtmlTextWriterTag.Table);
+		}
+
+		void RenderMenuItemSpacing (HtmlTextWriter writer, Unit itemSpacing, bool vertical)
+		{
+			if (vertical) {
+				writer.AddStyleAttribute ("height", itemSpacing.ToString ());
+				writer.RenderBeginTag (HtmlTextWriterTag.Tr);
+				writer.RenderBeginTag (HtmlTextWriterTag.Td);
+				writer.RenderEndTag ();
+				writer.RenderEndTag ();
+			} else {
+				writer.AddStyleAttribute ("width", itemSpacing.ToString ());
+				writer.RenderBeginTag (HtmlTextWriterTag.Td);
+				writer.RenderEndTag ();
+			}
+		}
+		
+		public override void RenderMenuBody (HtmlTextWriter writer, MenuItemCollection items, bool vertical, bool dynamic, bool notLast)
+		{
+			Menu owner = Owner;
+			if (!vertical)
+				writer.RenderBeginTag (HtmlTextWriterTag.Tr);
+
+			int count = items.Count;
+			var oc = new OwnerContext (this);
+			
+			for (int n = 0; n < count; n++) {
+				MenuItem item = items [n];
+				Adapters.MenuAdapter adapter = owner.Adapter as Adapters.MenuAdapter;
+				if (adapter != null)
+					adapter.RenderItem (writer, item, n);
+				else
+					RenderMenuItem (writer, item, vertical, (n + 1) == count ? notLast : true, n == 0, oc);
+			}
+
+			if (!vertical)
+				writer.RenderEndTag ();	// TR
+		}
+
+		protected override void RenderMenuItem (HtmlTextWriter writer, MenuItem item, bool vertical, bool notLast, bool isFirst, OwnerContext oc)
+		{
+			Menu owner = Owner;
+			string clientID = oc.ClientID;
+			bool displayChildren = owner.DisplayChildren (item);
+			bool dynamicChildren = displayChildren && (item.Depth + 1 >= oc.StaticDisplayLevels);
+			bool isDynamicItem = IsDynamicItem (owner, item);
+			bool isVertical = oc.IsVertical || isDynamicItem;
+			Unit itemSpacing = owner.GetItemSpacing (item, isDynamicItem);
+
+			if (itemSpacing != Unit.Empty && (item.Depth > 0 || !isFirst))
+				RenderMenuItemSpacing (writer, itemSpacing, isVertical);
+
+			if(!String.IsNullOrEmpty(item.ToolTip))
+				writer.AddAttribute (HtmlTextWriterAttribute.Title, item.ToolTip);
+			if (isVertical)
+				writer.RenderBeginTag (HtmlTextWriterTag.Tr);
+
+			string parentId = isDynamicItem ? "'" + item.Parent.Path + "'" : "null";
+			if (dynamicChildren) {
+				writer.AddAttribute ("onmouseover",
+						     "javascript:Menu_OverItem ('" + clientID + "','" + item.Path + "'," + parentId + ")");
+				writer.AddAttribute ("onmouseout",
+						     "javascript:Menu_OutItem ('" + clientID + "','" + item.Path + "')");
+			} else if (isDynamicItem) {
+				writer.AddAttribute ("onmouseover",
+						     "javascript:Menu_OverDynamicLeafItem ('" + clientID + "','" + item.Path + "'," + parentId + ")");
+				writer.AddAttribute ("onmouseout",
+						     "javascript:Menu_OutItem ('" + clientID + "','" + item.Path + "'," + parentId + ")");
+			} else {
+				writer.AddAttribute ("onmouseover",
+						     "javascript:Menu_OverStaticLeafItem ('" + clientID + "','" + item.Path + "')");
+				writer.AddAttribute ("onmouseout",
+						     "javascript:Menu_OutItem ('" + clientID + "','" + item.Path + "')");
+			}
+
+			writer.RenderBeginTag (HtmlTextWriterTag.Td);
+
+			// Top separator image
+
+			if (isDynamicItem)
+				RenderSeparatorImage (owner, writer, oc.DynamicTopSeparatorImageUrl, false);
+			else
+				RenderSeparatorImage (owner, writer, oc.StaticTopSeparatorImageUrl, false);
+
+			// Menu item box
+			
+			MenuItemStyle style = new MenuItemStyle ();
+				
+			if (oc.Header != null) {
+				// styles are registered
+				if (!isDynamicItem && oc.StaticMenuItemStyle != null) {
+					AddCssClass (style, oc.StaticMenuItemStyle.CssClass);
+					AddCssClass (style, oc.StaticMenuItemStyle.RegisteredCssClass);
+				}
+				if (isDynamicItem && oc.DynamicMenuItemStyle != null) {
+					AddCssClass (style, oc.DynamicMenuItemStyle.CssClass);
+					AddCssClass (style, oc.DynamicMenuItemStyle.RegisteredCssClass);
+				}
+				if (oc.LevelMenuItemStyles != null && oc.LevelMenuItemStyles.Count > item.Depth) {
+					AddCssClass (style, oc.LevelMenuItemStyles [item.Depth].CssClass);
+					AddCssClass (style, oc.LevelMenuItemStyles [item.Depth].RegisteredCssClass);
+				}
+				if (item == oc.SelectedItem) {
+					if (!isDynamicItem && oc.StaticSelectedStyle != null) {
+						AddCssClass (style, oc.StaticSelectedStyle.CssClass);
+						AddCssClass (style, oc.StaticSelectedStyle.RegisteredCssClass);
+					}
+					if (isDynamicItem && oc.DynamicSelectedStyle != null) {
+						AddCssClass (style, oc.DynamicSelectedStyle.CssClass);
+						AddCssClass (style, oc.DynamicSelectedStyle.RegisteredCssClass);
+					}
+					if (oc.LevelSelectedStyles != null && oc.LevelSelectedStyles.Count > item.Depth) {
+						AddCssClass (style, oc.LevelSelectedStyles [item.Depth].CssClass);
+						AddCssClass (style, oc.LevelSelectedStyles [item.Depth].RegisteredCssClass);
+					}
+				}
+			} else {
+				// styles are not registered
+				if (!isDynamicItem && oc.StaticMenuItemStyle != null)
+					style.CopyFrom (oc.StaticMenuItemStyle);
+				if (isDynamicItem && oc.DynamicMenuItemStyle != null)
+					style.CopyFrom (oc.DynamicMenuItemStyle);
+				if (oc.LevelMenuItemStyles != null && oc.LevelMenuItemStyles.Count > item.Depth)
+					style.CopyFrom (oc.LevelMenuItemStyles [item.Depth]);
+				if (item == oc.SelectedItem) {
+					if (!isDynamicItem && oc.StaticSelectedStyle != null)
+						style.CopyFrom (oc.StaticSelectedStyle);
+					if (isDynamicItem && oc.DynamicSelectedStyle != null)
+						style.CopyFrom (oc.DynamicSelectedStyle);
+					if (oc.LevelSelectedStyles != null && oc.LevelSelectedStyles.Count > item.Depth)
+						style.CopyFrom (oc.LevelSelectedStyles [item.Depth]);
+				}
+			}
+			style.AddAttributesToRender (writer);
+
+			writer.AddAttribute ("id", GetItemClientId (clientID, item, "i"));
+			writer.AddAttribute ("cellpadding", "0", false);
+			writer.AddAttribute ("cellspacing", "0", false);
+			writer.AddAttribute ("border", "0", false);
+			writer.AddAttribute ("width", "100%", false);
+			writer.RenderBeginTag (HtmlTextWriterTag.Table);
+			writer.RenderBeginTag (HtmlTextWriterTag.Tr);
+
+			// Menu item text
+
+			if (isVertical)
+				writer.AddStyleAttribute (HtmlTextWriterStyle.Width, "100%");
+			if (!owner.ItemWrap)
+				writer.AddStyleAttribute ("white-space", "nowrap");
+			writer.RenderBeginTag (HtmlTextWriterTag.Td);
+
+			RenderItemHref (owner, writer, item);
+			
+			Style linkStyle = new Style ();
+			if (oc.Header != null) {
+				// styles are registered
+				AddCssClass (linkStyle, oc.ControlLinkStyle.RegisteredCssClass);
+
+				if (!isDynamicItem && oc.StaticMenuItemStyle != null) {
+					AddCssClass (linkStyle, oc.StaticMenuItemStyle.CssClass);
+					AddCssClass (linkStyle, oc.StaticMenuItemLinkStyle.RegisteredCssClass);
+				}
+				if (isDynamicItem && oc.DynamicMenuItemStyle != null) {
+					AddCssClass (linkStyle, oc.DynamicMenuItemStyle.CssClass);
+					AddCssClass (linkStyle, oc.DynamicMenuItemLinkStyle.RegisteredCssClass);
+				}
+				if (oc.LevelMenuItemStyles != null && oc.LevelMenuItemStyles.Count > item.Depth) {
+					AddCssClass (linkStyle, oc.LevelMenuItemStyles [item.Depth].CssClass);
+					AddCssClass (linkStyle, oc.LevelMenuItemLinkStyles [item.Depth].RegisteredCssClass);
+				}
+				if (item == oc.SelectedItem) {
+					if (!isDynamicItem && oc.StaticSelectedStyle != null) {
+						AddCssClass (linkStyle, oc.StaticSelectedStyle.CssClass);
+						AddCssClass (linkStyle, oc.StaticSelectedLinkStyle.RegisteredCssClass);
+					}
+					if (isDynamicItem && oc.DynamicSelectedStyle != null) {
+						AddCssClass (linkStyle, oc.DynamicSelectedStyle.CssClass);
+						AddCssClass (linkStyle, oc.DynamicSelectedLinkStyle.RegisteredCssClass);
+					}
+					if (oc.LevelSelectedStyles != null && oc.LevelSelectedStyles.Count > item.Depth) {
+						AddCssClass (linkStyle, oc.LevelSelectedStyles [item.Depth].CssClass);
+						AddCssClass (linkStyle, oc.LevelSelectedLinkStyles [item.Depth].RegisteredCssClass);
+					}
+				}
+			} else {
+				// styles are not registered
+				linkStyle.CopyFrom (oc.ControlLinkStyle);
+
+				if (!isDynamicItem && oc.StaticMenuItemStyle != null)
+					linkStyle.CopyFrom (oc.StaticMenuItemLinkStyle);
+				if (isDynamicItem && oc.DynamicMenuItemStyle != null)
+					linkStyle.CopyFrom (oc.DynamicMenuItemLinkStyle);
+				if (oc.LevelMenuItemStyles != null && oc.LevelMenuItemStyles.Count > item.Depth)
+					linkStyle.CopyFrom (oc.LevelMenuItemLinkStyles [item.Depth]);
+				if (item == oc.SelectedItem) {
+					if (!isDynamicItem && oc.StaticSelectedStyle != null)
+						linkStyle.CopyFrom (oc.StaticSelectedLinkStyle);
+					if (isDynamicItem && oc.DynamicSelectedStyle != null)
+						linkStyle.CopyFrom (oc.DynamicSelectedLinkStyle);
+					if (oc.LevelSelectedStyles != null && oc.LevelSelectedStyles.Count > item.Depth)
+						linkStyle.CopyFrom (oc.LevelSelectedLinkStyles [item.Depth]);
+				}
+
+				linkStyle.AlwaysRenderTextDecoration = true;
+			}
+			linkStyle.AddAttributesToRender (writer);
+
+			writer.AddAttribute ("id", GetItemClientId (clientID, item, "l"));
+			
+			if (item.Depth > 0 && !isDynamicItem) {
+				double value;
+#if NET_4_0
+				Unit unit = oc.StaticSubMenuIndent;
+				if (unit == Unit.Empty)
+					value = 16;
+				else
+					value = unit.Value;
+#else
+				value = oc.StaticSubMenuIndent.Value;
+#endif
+				Unit indent = new Unit (value * item.Depth, oc.StaticSubMenuIndent.Type);
+				writer.AddStyleAttribute (HtmlTextWriterStyle.MarginLeft, indent.ToString ());
+			}
+			writer.RenderBeginTag (HtmlTextWriterTag.A);
+			owner.RenderItemContent (writer, item, isDynamicItem);
+			writer.RenderEndTag ();	// A
+
+			writer.RenderEndTag ();	// TD
+
+			// Popup image
+
+			if (dynamicChildren) {
+				string popOutImage = GetPopOutImage (owner, item, isDynamicItem);
+				if (popOutImage != null) {
+					writer.RenderBeginTag (HtmlTextWriterTag.Td);
+					writer.AddAttribute ("src", owner.ResolveClientUrl (popOutImage));
+					writer.AddAttribute ("border", "0");
+					string toolTip = String.Format (isDynamicItem ? oc.DynamicPopOutImageTextFormatString : oc.StaticPopOutImageTextFormatString, item.Text);
+					writer.AddAttribute (HtmlTextWriterAttribute.Alt, toolTip);
+					writer.RenderBeginTag (HtmlTextWriterTag.Img);
+					writer.RenderEndTag ();	// IMG
+					writer.RenderEndTag ();	// TD
+				}
+			}
+
+			writer.RenderEndTag ();	// TR
+			writer.RenderEndTag ();	// TABLE
+			
+			writer.RenderEndTag ();	// TD
+
+			if (!isVertical && itemSpacing == Unit.Empty && (notLast || (displayChildren && !dynamicChildren))) {
+				writer.AddStyleAttribute ("width", "3px");
+				writer.RenderBeginTag (HtmlTextWriterTag.Td);
+				writer.RenderEndTag ();
+			}
+			
+			// Bottom separator image
+			string separatorImg = item.SeparatorImageUrl;
+			if (separatorImg.Length == 0) {
+				if (isDynamicItem)
+					separatorImg = oc.DynamicBottomSeparatorImageUrl;
+				else
+					separatorImg = oc.StaticBottomSeparatorImageUrl;
+			}
+			
+			if (separatorImg.Length > 0) {
+				if (!isVertical)
+					writer.RenderBeginTag (HtmlTextWriterTag.Td);
+				RenderSeparatorImage (owner, writer, separatorImg, false);
+				if (!isVertical)
+					writer.RenderEndTag (); // TD
+			}
+
+			if (isVertical)
+				writer.RenderEndTag ();	// TR
+
+			if (itemSpacing != Unit.Empty)
+				RenderMenuItemSpacing (writer, itemSpacing, isVertical);
+
+			// Submenu
+
+			if (displayChildren && !dynamicChildren) {
+				if (isVertical)
+					writer.RenderBeginTag (HtmlTextWriterTag.Tr);
+				writer.RenderBeginTag (HtmlTextWriterTag.Td);
+				writer.AddAttribute ("width", "100%");
+				owner.RenderMenu (writer, item.ChildItems, vertical, false, item.Depth + 1, notLast);
+				if (item.Depth + 2 == oc.StaticDisplayLevels)
+					owner.RenderDynamicMenu (writer, item.ChildItems);
+				writer.RenderEndTag ();	// TD
+				if (isVertical)
+					writer.RenderEndTag ();	// TR
+			}
+		}
+
+		public override bool IsDynamicItem (Menu owner, MenuItem item)
+		{
+			if (owner == null)
+				throw new ArgumentNullException ("owner");
+
+			if (item == null)
+				throw new ArgumentNullException ("item");
+			
+			return item.Depth + 1 > owner.StaticDisplayLevels;
+		}
+	}
+}
diff --git a/mcs/class/System.Web/System.Web.UI.WebControls/NamedCssStyleCollection.cs b/mcs/class/System.Web/System.Web.UI.WebControls/NamedCssStyleCollection.cs
new file mode 100644
index 0000000..3086c92
--- /dev/null
+++ b/mcs/class/System.Web/System.Web.UI.WebControls/NamedCssStyleCollection.cs
@@ -0,0 +1,89 @@
+//
+// Authors:
+//	Marek Habersack <grendel at twistedcode.net>
+//
+// (C) 2010 Novell, Inc (http://novell.com)
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Collections.Generic;
+using System.Web.UI;
+
+namespace System.Web.UI.WebControls
+{
+	sealed class NamedCssStyleCollection
+	{
+		CssStyleCollection collection;
+			
+		public CssStyleCollection Collection {
+			get {
+				if (collection == null)
+					collection = new CssStyleCollection ();
+
+				return collection;
+			}
+		}
+			
+		public string Name { get; private set; }
+			
+		public NamedCssStyleCollection (string name)
+		{
+			if (name == null)
+				name = String.Empty;
+
+			Name = name;
+		}
+
+		public NamedCssStyleCollection CopyFrom (CssStyleCollection coll)
+		{
+			if (coll == null)
+				return this;
+
+			CssStyleCollection collection = Collection;
+			foreach (string key in coll.Keys)
+				collection.Add (key, coll [key]);
+
+			return this;
+		}
+
+		public NamedCssStyleCollection Add (HtmlTextWriterStyle key, string value)
+		{
+			Collection.Add (key, value);
+			return this;
+		}
+
+		public NamedCssStyleCollection Add (string key, string value)
+		{
+			Collection.Add (key, value);
+			return this;
+		}
+
+		public NamedCssStyleCollection Add (Style style)
+		{
+			if (style != null)
+				CopyFrom (style.GetStyleAttributes (null));
+
+			return this;
+		}
+	}
+}
diff --git a/mcs/class/System.Web/System.Web.UI.WebControls/StyleBlock.cs b/mcs/class/System.Web/System.Web.UI.WebControls/StyleBlock.cs
new file mode 100644
index 0000000..e948454
--- /dev/null
+++ b/mcs/class/System.Web/System.Web.UI.WebControls/StyleBlock.cs
@@ -0,0 +1,135 @@
+//
+// Authors:
+//	Marek Habersack <grendel at twistedcode.net>
+//
+// (C) 2010 Novell, Inc (http://novell.com)
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Collections.Generic;
+using System.Web.UI;
+
+namespace System.Web.UI.WebControls
+{
+	sealed class StyleBlock : Control
+	{
+		List <NamedCssStyleCollection> cssStyles;
+		Dictionary <string, NamedCssStyleCollection> cssStyleIndex;
+		string stylePrefix;
+		
+		List <NamedCssStyleCollection> CssStyles {
+			get {
+				if (cssStyles == null) {
+					cssStyles = new List <NamedCssStyleCollection> ();
+					cssStyleIndex = new Dictionary <string, NamedCssStyleCollection> (StringComparer.Ordinal);
+				}
+				
+				return cssStyles;
+			}
+		}
+		
+		public StyleBlock (string stylePrefix)
+		{
+			if (String.IsNullOrEmpty (stylePrefix))
+				throw new ArgumentNullException ("stylePrefix");
+
+			this.stylePrefix = stylePrefix;
+		}
+
+		public NamedCssStyleCollection RegisterStyle (string name = null)
+		{
+			if (name == null)
+				name = String.Empty;
+
+			return GetStyle (name);
+		}
+		
+		public NamedCssStyleCollection RegisterStyle (Style style, string name = null)
+		{
+			if (style == null)
+				throw new ArgumentNullException ("style");
+			
+			if (name == null)
+				name = String.Empty;
+
+			NamedCssStyleCollection cssStyle = GetStyle (name);
+			cssStyle.CopyFrom (style.GetStyleAttributes (null));
+
+			return cssStyle;
+		}
+
+		public NamedCssStyleCollection RegisterStyle (HtmlTextWriterStyle key, string value, string styleName = null)
+		{
+			if (styleName == null)
+				styleName = String.Empty;
+
+			NamedCssStyleCollection style = GetStyle (styleName);
+			style.Add (key, value);
+
+			return style;
+		}
+		
+		NamedCssStyleCollection GetStyle (string name)
+		{
+			List <NamedCssStyleCollection> cssStyles = CssStyles;
+			NamedCssStyleCollection style;
+
+			if (!cssStyleIndex.TryGetValue (name, out style)) {
+				style = new NamedCssStyleCollection (name);
+				cssStyleIndex.Add (name, style);
+				cssStyles.Add (style);
+			}
+
+			if (style == null)
+				throw new InvalidOperationException (String.Format ("Internal error. Stylesheet for style {0} is null.", name));
+			
+			return style;
+		}
+		
+		protected internal override void Render (HtmlTextWriter writer)
+		{
+			if (cssStyles == null || cssStyles.Count == 0)
+				return;
+
+			writer.AddAttribute (HtmlTextWriterAttribute.Type, "text/css");
+			writer.RenderBeginTag (HtmlTextWriterTag.Style);
+			writer.WriteLine ("/* <![CDATA[ */");
+
+			string name, value;
+			foreach (var css in cssStyles) {
+				value = css.Collection.Value;
+				if (String.IsNullOrEmpty (value))
+					continue;
+				
+				name = css.Name;
+				if (name != String.Empty)
+					name = name + " ";
+				
+				writer.WriteLine ("#{0} {1}{{ {2} }}", stylePrefix, name, value);
+			}
+			
+			writer.WriteLine ("/* ]]> */");
+			writer.RenderEndTag (); // </style>
+		}
+	}
+}
diff --git a/mcs/class/System.Web/System.Web.UI.WebControls/TreeView.cs b/mcs/class/System.Web/System.Web.UI.WebControls/TreeView.cs
index 61c35ae..b067f6a 100644
--- a/mcs/class/System.Web/System.Web.UI.WebControls/TreeView.cs
+++ b/mcs/class/System.Web/System.Web.UI.WebControls/TreeView.cs
@@ -1390,8 +1390,9 @@ namespace System.Web.UI.WebControls
 			writer.AddStyleAttribute (HtmlTextWriterStyle.BorderWidth, "0");
 			writer.RenderBeginTag (HtmlTextWriterTag.Table);
 
-			Unit nodeSpacing = GetNodeSpacing (node);
 #if !NET_4_0
+			Unit nodeSpacing = GetNodeSpacing (node);
+
 			if (nodeSpacing != Unit.Empty && (node.Depth > 0 || node.Index > 0))
 				RenderMenuItemSpacing (writer, nodeSpacing);
 #endif
@@ -1621,7 +1622,7 @@ namespace System.Web.UI.WebControls
 				return;
 
 			writer.RenderBeginTag (HtmlTextWriterTag.Table);
-			writer.AddAttribute (HtmlTextWriterAttribute.Height, ((int) value).ToString () + "dupa1", false);
+			writer.AddAttribute (HtmlTextWriterAttribute.Height, ((int) value).ToString (), false);
 			writer.RenderBeginTag (HtmlTextWriterTag.Tr);
 			writer.RenderBeginTag (HtmlTextWriterTag.Td);
 			writer.RenderEndTag (); // td
diff --git a/mcs/class/System.Web/System.Web.UI.WebControls/Unit.cs b/mcs/class/System.Web/System.Web.UI.WebControls/Unit.cs
index 70dedfd..c664b63 100644
--- a/mcs/class/System.Web/System.Web.UI.WebControls/Unit.cs
+++ b/mcs/class/System.Web/System.Web.UI.WebControls/Unit.cs
@@ -349,28 +349,28 @@ namespace System.Web.UI.WebControls {
 			return new Unit (n);
 		}
 
-		string GetExtension ()
+		internal static string GetExtension (UnitType type)
 		{
 			switch (type){
-			case UnitType.Pixel: return "px";
-			case UnitType.Point: return "pt";
-			case UnitType.Pica: return "pc";
-			case UnitType.Inch: return "in";
-			case UnitType.Mm: return "mm";
-			case UnitType.Cm: return "cm";
-			case UnitType.Percentage: return "%";
-			case UnitType.Em: return "em";
-			case UnitType.Ex: return "ex";
-			default: return "";
+				case UnitType.Pixel: return "px";
+				case UnitType.Point: return "pt";
+				case UnitType.Pica: return "pc";
+				case UnitType.Inch: return "in";
+				case UnitType.Mm: return "mm";
+				case UnitType.Cm: return "cm";
+				case UnitType.Percentage: return "%";
+				case UnitType.Em: return "em";
+				case UnitType.Ex: return "ex";
+				default: return String.Empty;
 			}
 		}
 
 		public string ToString (CultureInfo culture)
 		{
 			if (type == 0)
-				return "";
+				return String.Empty;
 			
-			string ex = GetExtension ();
+			string ex = GetExtension (type);
 			
 			return value.ToString (culture) + ex;
 		}
@@ -384,9 +384,9 @@ namespace System.Web.UI.WebControls {
 		public string ToString (IFormatProvider provider)
 		{
 			if (type == 0)
-				return "";
+				return String.Empty;
 
-			string ex = GetExtension ();
+			string ex = GetExtension (type);
 
 			return value.ToString (provider) + ex;
 		}
diff --git a/mcs/class/System.Web/System.Web.UI/ChangeLog b/mcs/class/System.Web/System.Web.UI/ChangeLog
index 9dbdef9..05c8562 100644
--- a/mcs/class/System.Web/System.Web.UI/ChangeLog
+++ b/mcs/class/System.Web/System.Web.UI/ChangeLog
@@ -1,3 +1,29 @@
+2011-01-13  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Implemented the 4.0 type,
+	FileLevelMasterPageControlBuilder
+
+2010-12-16  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Add support for storing elements with the same hashcode in
+	ConcurrentDictionary. Add corresponding unit test.
+
+2010-11-12  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Plug SplitOrderedList inside TemplateControl.
+
+2010-11-17  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Part of fix for bug #653013. StateManagedCollection must
+	perform a full clear in LoadViewState
+
+	If all the items in the collections were saved to the view state,
+	the collection must call the Clear () method in order for the
+	OnClear and OnClearComplete methods to be invoked. Telerik
+	RadComboBox depends on it to remove dynamically added entries
+	before they are recreated when the view state is loaded by the
+	control.
+
 2010-11-11  Daniel J Sell  <dredd422 at gmail.com>
 
 	[asp.net] Fix for bug #653192. making MasterPageFile handle
@@ -6,25 +32,16 @@
 	MasterPageFile should be relative to the file being parsed, not
 	the request path
 
-2010-10-21  Marek Habersack  <grendel at twistedcode.net>
+2010-11-09  Marek Habersack  <grendel at twistedcode.net>
 
-	[asp.net] ObjectStateFormatter.{De}serialize methods taking stream
-	use a magic value to mark the stream.
+	[asp.net] A micro-optimization to not call String.Format too much
+	in a loop.
 
-2010-10-12  Sebastien Pouliot  <sebastien at ximian.com>
+2010-11-03  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
 
-	A few moves/changes following previous patch review
+	Avoid locking in WireupAutomaticEvents
 
-2010-10-08  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* System.Web.UI/LosFormatter.cs: Adapt code for internal API
-	change. Fix some small behaviro changes wrt NET_4_0
-
-	* System.Web.UI/ObjectStateFormatter.cs: Use the new common
-	cryptographic code.
-
-	* System.Web.UI/Page.cs: Remove code that is now unneeded (with
-	the new common cryptogrraphic code).
+	Replace a big lock with a ReaderWriterLockSlim.
 
 2010-10-29  Marek Habersack  <grendel at twistedcode.net>
 
@@ -37,8 +54,6 @@
 	converted into a byte array and passed to the LosFormatter (bool,
 	byte[]) constructor.
 
-	This is a backport of 19e5207189c6905bd72e31e457450546b662e79d
-
 2010-10-29  Marek Habersack  <grendel at twistedcode.net>
 
 	[asp.net] Fix for bug #649034. Control.FindControl continues to
@@ -49,6 +64,67 @@
 	search continues to the control's naming container if pathOffset
 	is 0, that is we're at the start of the search.
 
+2010-10-28  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Fix for bug #646479. Do not call control's OnLoad twice
+	when it is dynamically added.
+
+	Control.AddedControl will call the new control's LoadRecursive
+	which would trigger its OnLoad handler. OnLoad must be called only
+	if control hasn't already been loaded.
+
+2010-10-27  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Fix for bug #646984. Theme stylesheets must be output in
+	correct order.
+
+	This patch changes the way we output theme stylesheets to match
+	.NET behavior. Theme .css files are sorted using an ordinal and
+	case-insensitive comparer and are output to the page at the top of
+	the <head> element's contents instead of at the end.
+
+2010-10-27  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Added encryption notes to
+	ObjectStateFormatter.{Serialize,Deserialize}
+
+2010-10-26  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Fix for bug #649198. Implement
+	MasterPage.InstantiateInContentPlaceHolder
+
+	Code based on patch from Rikard Johansson <rajoo at mail.com>,
+	thanks!
+
+2010-10-21  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] ObjectStateFormatter.{De}serialize methods taking stream
+	use a magic value to mark the stream.
+
+2010-10-15  Marek Safar  <marek.safar at gmail.com>
+
+	Clean up few more warnings
+
+2010-10-12  Sebastien Pouliot  <sebastien at ximian.com>
+
+	A few moves/changes following previous patch review
+
+2010-10-08  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* System.Web.UI/LosFormatter.cs: Adapt code for internal API
+	change. Fix some small behaviro changes wrt NET_4_0
+
+	* System.Web.UI/ObjectStateFormatter.cs: Use the new common
+	cryptographic code.
+
+	* System.Web.UI/Page.cs: Remove code that is now unneeded (with
+	the new common cryptogrraphic code).
+
+2010-10-12  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] HiddenFieldPageStatePersister must not attempt to
+	deserialize an empty/null string
+
 2010-10-05  Marek Habersack  <grendel at twistedcode.net>
 
 	[asp.net] Fix for bug #643298. A typo prevented the
diff --git a/mcs/class/System.Web/System.Web.UI/ClientScriptManager.cs b/mcs/class/System.Web/System.Web.UI/ClientScriptManager.cs
index 223432b..0ad416d 100644
--- a/mcs/class/System.Web/System.Web.UI/ClientScriptManager.cs
+++ b/mcs/class/System.Web/System.Web.UI/ClientScriptManager.cs
@@ -631,15 +631,23 @@ namespace System.Web.UI
 			int oldIndent = writer.Indent;
 			writer.Indent = 0;
 			bool first = true;
-
+			var sb = new StringBuilder ();
+			
 			foreach (string key in hiddenFields.Keys) {
 				string value = hiddenFields [key] as string;
 				if (first)
 					first = false;
 				else
 					writer.WriteLine ();
-				writer.Write ("<input type=\"hidden\" name=\"{0}\" id=\"{0}\" value=\"{1}\" />", key, HttpUtility.HtmlAttributeEncode (value));
+				sb.Append ("<input type=\"hidden\" name=\"");
+				sb.Append (key);
+				sb.Append ("\" id=\"");
+				sb.Append (key);
+				sb.Append ("\" value=\"");
+				sb.Append (HttpUtility.HtmlAttributeEncode (value));
+				sb.Append ("\" />");
 			}
+			writer.Write (sb.ToString ());
 			writer.Indent = oldIndent;
 			writer.RenderEndTag (); // DIV
 			writer.WriteLine ();
diff --git a/mcs/class/System.Web/System.Web.UI/Control.cs b/mcs/class/System.Web/System.Web.UI/Control.cs
index ac8acb8..c3d27db 100644
--- a/mcs/class/System.Web/System.Web.UI/Control.cs
+++ b/mcs/class/System.Web/System.Web.UI/Control.cs
@@ -1628,10 +1628,12 @@ namespace System.Web.UI
 				trace.Write ("control", String.Concat ("LoadRecursive ", _userId, " ", type_name));
 			}
 #endif
-			if (Adapter != null)
-				Adapter.OnLoad (EventArgs.Empty);
-			else
-				OnLoad (EventArgs.Empty);
+			if ((stateMask & LOADED) == 0) {
+				if (Adapter != null)
+					Adapter.OnLoad (EventArgs.Empty);
+				else
+					OnLoad (EventArgs.Empty);
+			}
 			int ccount = _controls != null ? _controls.Count : 0;
 			for (int i = 0; i < ccount; i++) {
 				Control c = _controls [i];
@@ -2159,7 +2161,6 @@ namespace System.Web.UI
 				throw new ArgumentNullException ("control");
 
 			Control parent = this;
-			Page page = Page;
 			Control namingContainer = control.NamingContainer;
 			
 			if (namingContainer != null)
diff --git a/mcs/class/System.Web/System.Web.UI/FileLevelMasterPageControlBuilder.cs b/mcs/class/System.Web/System.Web.UI/FileLevelMasterPageControlBuilder.cs
new file mode 100644
index 0000000..31cf745
--- /dev/null
+++ b/mcs/class/System.Web/System.Web.UI/FileLevelMasterPageControlBuilder.cs
@@ -0,0 +1,37 @@
+//
+// Authors:
+//     Marek Habersack <grendel at twistedcode.net>
+//
+// (C) 2011 Novell, Inc (http://novell.com/)
+//
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System.Web.UI;
+using System.Web.UI.WebControls;
+
+namespace System.Web.UI
+{
+	public class FileLevelMasterPageControlBuilder : FileLevelPageControlBuilder
+	{
+		
+	}
+}
diff --git a/mcs/class/System.Web/System.Web.UI/HiddenFieldPageStatePersister.cs b/mcs/class/System.Web/System.Web.UI/HiddenFieldPageStatePersister.cs
index b66bffc..5c0ae02 100644
--- a/mcs/class/System.Web/System.Web.UI/HiddenFieldPageStatePersister.cs
+++ b/mcs/class/System.Web/System.Web.UI/HiddenFieldPageStatePersister.cs
@@ -53,11 +53,14 @@ namespace System.Web.UI
 				return;
 			}
 #endif
+			string rawViewState = Page.RawViewState;
 			IStateFormatter formatter = StateFormatter;
-			Pair pair = formatter.Deserialize (Page.RawViewState) as Pair;
-			if (pair != null) {
-				ViewState = pair.First;
-				ControlState = pair.Second;
+			if (!String.IsNullOrEmpty (rawViewState)) {
+				Pair pair = formatter.Deserialize (rawViewState) as Pair;
+				if (pair != null) {
+					ViewState = pair.First;
+					ControlState = pair.Second;
+				}
 			}
 		}
 
diff --git a/mcs/class/System.Web/System.Web.UI/MasterPage.cs b/mcs/class/System.Web/System.Web.UI/MasterPage.cs
index 84b7a41..f3327f9 100644
--- a/mcs/class/System.Web/System.Web.UI/MasterPage.cs
+++ b/mcs/class/System.Web/System.Web.UI/MasterPage.cs
@@ -97,7 +97,17 @@ namespace System.Web.UI
 				return parentMasterPage;
 			}
 		}		
-		
+#if NET_4_0
+		public void InstantiateInContentPlaceHolder (Control contentPlaceHolder, ITemplate template)
+		{
+			// .NET compatibility...
+			if (contentPlaceHolder == null || template == null)
+				throw new NullReferenceException ();
+
+			if (contentPlaceHolder != null && template != null)
+				template.InstantiateIn (contentPlaceHolder);
+		}
+#endif
 		internal static MasterPage CreateMasterPage (TemplateControl owner, HttpContext context,
 							     string masterPageFile, IDictionary contentTemplateCollection)
 		{
diff --git a/mcs/class/System.Web/System.Web.UI/ObjectStateFormatter.cs b/mcs/class/System.Web/System.Web.UI/ObjectStateFormatter.cs
index f4c6a6c..7e530db 100644
--- a/mcs/class/System.Web/System.Web.UI/ObjectStateFormatter.cs
+++ b/mcs/class/System.Web/System.Web.UI/ObjectStateFormatter.cs
@@ -87,6 +87,10 @@ namespace System.Web.UI
 			}
 		}
 
+		// There's no need to implement encryption support in this overload. Encryption is
+		// performed only when ObjectStateFormatter is created in the Page context, and that
+		// can happen only internally to System.Web. Since System.Web doesn't use this
+		// overload, the encryption code in here would be effectively dead.
 		public object Deserialize (Stream inputStream)
 		{
 			if (inputStream == null)
@@ -152,7 +156,11 @@ namespace System.Web.UI
 			
 			return Convert.ToBase64String (data, 0, data.Length);
 		}
-		
+
+		// There's no need to implement encryption support in this overload. Encryption is
+		// performed only when ObjectStateFormatter is created in the Page context, and that
+		// can happen only internally to System.Web. Since System.Web doesn't use this
+		// overload, the encryption code in here would be effectively dead.
 		public void Serialize (Stream outputStream, object stateGraph)
 		{
 			if (outputStream == null)
diff --git a/mcs/class/System.Web/System.Web.UI/Page.cs b/mcs/class/System.Web/System.Web.UI/Page.cs
index b44b318..332e626 100644
--- a/mcs/class/System.Web/System.Web.UI/Page.cs
+++ b/mcs/class/System.Web/System.Web.UI/Page.cs
@@ -68,7 +68,7 @@ namespace System.Web.UI
 [DesignerSerializer ("Microsoft.VisualStudio.Web.WebForms.WebFormCodeDomSerializer, " + Consts.AssemblyMicrosoft_VisualStudio_Web, "System.ComponentModel.Design.Serialization.TypeCodeDomSerializer, System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
 public partial class Page : TemplateControl, IHttpHandler
 {
-	static string machineKeyConfigPath = "system.web/machineKey";
+//	static string machineKeyConfigPath = "system.web/machineKey";
 	bool _eventValidation = true;
 	object [] _savedControlState;
 	bool _doLoadPreviousPage;
@@ -2637,27 +2637,45 @@ public partial class Page : TemplateControl, IHttpHandler
 		return dataItemCtx.Peek ();
 	}
 
+	void AddStyleSheets (PageTheme theme, ref List <string> links)
+	{
+		if (theme == null)
+			return;
+
+		string[] tmpThemes = theme != null ? theme.GetStyleSheets () : null;
+		if (tmpThemes == null || tmpThemes.Length == 0)
+			return;
+
+		if (links == null)
+			links = new List <string> ();
+
+		links.AddRange (tmpThemes);
+	}
+	
 	protected internal override void OnInit (EventArgs e)
 	{
 		base.OnInit (e);
 
-		var themes = new List <string> ();
+		List <string> themes = null;
+		AddStyleSheets (StyleSheetPageTheme, ref themes);
+		AddStyleSheets (PageTheme, ref themes);
 
-		if (StyleSheetPageTheme != null && StyleSheetPageTheme.GetStyleSheets () != null)
-			themes.AddRange (StyleSheetPageTheme.GetStyleSheets ());
+		if (themes == null)
+			return;
 		
-		if (PageTheme != null && PageTheme.GetStyleSheets () != null)
-			themes.AddRange (PageTheme.GetStyleSheets ());
-
-		if (themes.Count > 0 && Header == null)
+		HtmlHead header = Header;
+		if (themes != null && header == null)
 			throw new InvalidOperationException ("Using themed css files requires a header control on the page.");
-
-		foreach (string lss in themes) {
+		
+		ControlCollection headerControls = header.Controls;
+		string lss;
+		for (int i = themes.Count - 1; i >= 0; i--) {
+			lss = themes [i];
 			HtmlLink hl = new HtmlLink ();
 			hl.Href = lss;
 			hl.Attributes["type"] = "text/css";
 			hl.Attributes["rel"] = "stylesheet";
-			Header.Controls.Add (hl);
+			headerControls.AddAt (0, hl);
 		}
 	}
 
diff --git a/mcs/class/System.Web/System.Web.UI/StateManagedCollection.cs b/mcs/class/System.Web/System.Web.UI/StateManagedCollection.cs
index 8d2f624..91cbf2f 100644
--- a/mcs/class/System.Web/System.Web.UI/StateManagedCollection.cs
+++ b/mcs/class/System.Web/System.Web.UI/StateManagedCollection.cs
@@ -112,7 +112,7 @@ namespace System.Web.UI {
 			
 			saveEverything = indices == null;
 			if (saveEverything) {
-				items.Clear ();
+				Clear ();
 
 				for (int i = 0; i < states.Count; i++) {
 					t = types [i];
diff --git a/mcs/class/System.Web/System.Web.UI/StaticPartialCachingControl.cs b/mcs/class/System.Web/System.Web.UI/StaticPartialCachingControl.cs
index 5c1396e..9daea73 100644
--- a/mcs/class/System.Web/System.Web.UI/StaticPartialCachingControl.cs
+++ b/mcs/class/System.Web/System.Web.UI/StaticPartialCachingControl.cs
@@ -38,7 +38,7 @@ namespace System.Web.UI {
 	public class StaticPartialCachingControl : BasePartialCachingControl
 	{
 		BuildMethod buildMethod;
-		string sqlDependency;
+//		string sqlDependency;
 
 		public StaticPartialCachingControl (string ctrlID, string guid, int duration,
 				string varyByParams, string varyByControls, string varyByCustom,
@@ -59,7 +59,7 @@ namespace System.Web.UI {
 						    BuildMethod buildMethod)
 			: this (ctrlID, guid, duration, varyByParams, varyByControls, varyByCustom, buildMethod)
 		{
-			this.sqlDependency = sqlDependency;
+//			this.sqlDependency = sqlDependency;
 		}
 #if NET_4_0
 		public StaticPartialCachingControl (string ctrlID, string guid, int duration, string varyByParams,
diff --git a/mcs/class/System.Web/System.Web.UI/TemplateControl.cs b/mcs/class/System.Web/System.Web.UI/TemplateControl.cs
index 6dd55c0..6480b00 100644
--- a/mcs/class/System.Web/System.Web.UI/TemplateControl.cs
+++ b/mcs/class/System.Web/System.Web.UI/TemplateControl.cs
@@ -33,12 +33,15 @@ using System.Collections;
 using System.ComponentModel;
 using System.Reflection;
 using System.Security.Permissions;
+using System.Threading;
 using System.Web.Compilation;
 using System.Web.Util;
 using System.Xml;
 using System.IO;
 using System.Runtime.InteropServices;
 using System.Text;
+using System.Collections.Generic;
+using System.Collections.Concurrent;
 
 namespace System.Web.UI
 {
@@ -128,26 +131,16 @@ namespace System.Web.UI
 			public bool noParams;
 		}
 
-		static Hashtable auto_event_info;
-		static object auto_event_info_monitor = new Object ();
+		static SplitOrderedList<Type, ArrayList> auto_event_info = new SplitOrderedList<Type, ArrayList> (EqualityComparer<Type>.Default);
 
 		internal void WireupAutomaticEvents ()
 		{
 			if (!SupportAutoEvents || !AutoEventWireup)
 				return;
 
-			ArrayList events = null;
-
 			/* Avoid expensive reflection operations by computing the event info only once */
-			lock (auto_event_info_monitor) {
-				if (auto_event_info == null)
-					auto_event_info = new Hashtable ();
-				events = (ArrayList)auto_event_info [GetType ()];
-				if (events == null) {
-					events = CollectAutomaticEventInfo ();
-					auto_event_info [GetType ()] = events;
-				}
-			}
+			Type type = GetType ();
+			ArrayList events = auto_event_info.InsertOrGet ((uint)type.GetHashCode (), type, null, CollectAutomaticEventInfo);
 
 			for (int i = 0; i < events.Count; ++i) {
 				EvtInfo evinfo = (EvtInfo)events [i];
diff --git a/mcs/class/System.Web/System.Web.Util/ChangeLog b/mcs/class/System.Web/System.Web.Util/ChangeLog
index 83871f2..5b1db6a 100644
--- a/mcs/class/System.Web/System.Web.Util/ChangeLog
+++ b/mcs/class/System.Web/System.Web.Util/ChangeLog
@@ -1,3 +1,18 @@
+2010-12-09  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Get system.web/httpRuntime only once
+
+	Get that section only once and keep it in HttpRuntime.
+
+2010-11-03  Marek Habersack  <grendel at twistedcode.net>
+
+	* System.Web/System.Web.Util/MachineKeySectionUtils.cs: made
+	GetValidationKey public
+
+2010-10-15  Marek Safar  <marek.safar at gmail.com>
+
+	Clean up few more warnings
+
 2010-10-12  Sebastien Pouliot  <sebastien at ximian.com>
 
 	A few moves/changes following previous patch review
diff --git a/mcs/class/System.Web/System.Web.Util/HttpEncoder.cs b/mcs/class/System.Web/System.Web.Util/HttpEncoder.cs
index 6d69d3d..e2cb34b 100644
--- a/mcs/class/System.Web/System.Web.Util/HttpEncoder.cs
+++ b/mcs/class/System.Web/System.Web.Util/HttpEncoder.cs
@@ -188,7 +188,7 @@ namespace System.Web.Util
 
 		static HttpEncoder GetCustomEncoderFromConfig ()
 		{
-			var cfg = WebConfigurationManager.GetSection ("system.web/httpRuntime") as HttpRuntimeSection;
+			var cfg = HttpRuntime.Section;
 			string typeName = cfg.EncoderType;
 
 			if (String.Compare (typeName, "System.Web.Util.HttpEncoder", StringComparison.OrdinalIgnoreCase) == 0)
diff --git a/mcs/class/System.Web/System.Web.Util/MachineKeySectionUtils.cs b/mcs/class/System.Web/System.Web.Util/MachineKeySectionUtils.cs
index 313bb43..fdc905d 100644
--- a/mcs/class/System.Web/System.Web.Util/MachineKeySectionUtils.cs
+++ b/mcs/class/System.Web/System.Web.Util/MachineKeySectionUtils.cs
@@ -102,12 +102,12 @@ namespace System.Web.Util {
 				break;
 			default:
 #if NET_4_0
-				if (name.StartsWith ("alg:"))
+				if (name.StartsWith ("alg:")) {
 					sa = SymmetricAlgorithm.Create (name.Substring (4));
-				else
+					break;
+				}
 #endif
-					throw new ConfigurationErrorsException ();
-				break;
+				throw new ConfigurationErrorsException ();
 			}
 			return sa;
 		}
@@ -182,7 +182,7 @@ namespace System.Web.Util {
 			return section.GetDecryptionKey ();
 		}
 
-		static byte [] GetValidationKey (MachineKeySection section)
+		public static byte [] GetValidationKey (MachineKeySection section)
 		{
 			return section.GetValidationKey ();
 		}
diff --git a/mcs/class/System.Web/System.Web.Util/RequestValidator.cs b/mcs/class/System.Web/System.Web.Util/RequestValidator.cs
index e959a9a..ca5cc0a 100644
--- a/mcs/class/System.Web/System.Web.Util/RequestValidator.cs
+++ b/mcs/class/System.Web/System.Web.Util/RequestValidator.cs
@@ -34,8 +34,6 @@ namespace System.Web.Util
 {
 	public class RequestValidator
 	{
-		static readonly object currentCreationLock = new object();
-		
 		static RequestValidator current;
 		static Lazy <RequestValidator> lazyLoader;
 
@@ -105,7 +103,7 @@ namespace System.Web.Util
 		
 		static RequestValidator LoadConfiguredValidator ()
 		{
-			HttpRuntimeSection runtimeConfig = WebConfigurationManager.GetWebApplicationSection ("system.web/httpRuntime") as HttpRuntimeSection;			
+			HttpRuntimeSection runtimeConfig = HttpRuntime.Section;
 			Type validatorType = null;
 			string typeSpec = runtimeConfig.RequestValidationType;
 			
diff --git a/mcs/class/System.Web/System.Web.dll.sources b/mcs/class/System.Web/System.Web.dll.sources
index d270d69..b465084 100644
--- a/mcs/class/System.Web/System.Web.dll.sources
+++ b/mcs/class/System.Web/System.Web.dll.sources
@@ -25,6 +25,7 @@ System.Web.Caching/CachedRawResponse.cs
 System.Web.Caching/CachedVaryBy.cs
 System.Web.Caching/DatabaseNotEnabledForNotificationException.cs
 System.Web.Caching/InMemoryOutputCacheProvider.cs
+System.Web.Caching/CacheItemLRU.cs
 System.Web.Caching/OutputCacheModule.cs
 System.Web.Caching/OutputCacheProvider.cs
 System.Web.Caching/SqlCacheDependency.cs
@@ -721,6 +722,7 @@ System.Web.UI.WebControls/AutoGeneratedFieldProperties.cs
 System.Web.UI.WebControls/BaseCompareValidator.cs
 System.Web.UI.WebControls/BaseDataBoundControl.cs
 System.Web.UI.WebControls/BaseDataList.cs
+System.Web.UI.WebControls/BaseMenuRenderer.cs
 System.Web.UI.WebControls/BaseValidator.cs
 System.Web.UI.WebControls/BorderStyle.cs
 System.Web.UI.WebControls/BoundColumn.cs
@@ -911,6 +913,7 @@ System.Web.UI.WebControls/ImageField.cs
 System.Web.UI.WebControls/ImageMap.cs
 System.Web.UI.WebControls/ImageMapEventArgs.cs
 System.Web.UI.WebControls/ImageMapEventHandler.cs
+System.Web.UI.WebControls/IMenuRenderer.cs
 System.Web.UI.WebControls/IPersistedSelector.cs
 System.Web.UI.WebControls/IPostBackContainer.cs
 System.Web.UI.WebControls/IRepeatInfoUser.cs
@@ -951,6 +954,7 @@ System.Web.UI.WebControls/MenuItem.cs
 System.Web.UI.WebControls/MenuItemStyleCollection.cs
 System.Web.UI.WebControls/MenuItemStyle.cs
 System.Web.UI.WebControls/MenuItemTemplateContainer.cs
+System.Web.UI.WebControls/MenuTableRenderer.cs
 System.Web.UI.WebControls/MonthChangedEventArgs.cs
 System.Web.UI.WebControls/MonthChangedEventHandler.cs
 System.Web.UI.WebControls/MultiView.cs
@@ -1184,3 +1188,4 @@ System.Web/WebPageTraceListener.cs
 System.Web/WebROCollection.cs
 System.Web/WebSysDescriptionAttribute.cs
 System.Web/XmlSiteMapProvider.cs
+../corlib/System.Collections.Concurrent/SplitOrderedList.cs
diff --git a/mcs/class/System.Web/System.Web/ChangeLog b/mcs/class/System.Web/System.Web/ChangeLog
index 6485424..8facd24 100644
--- a/mcs/class/System.Web/System.Web/ChangeLog
+++ b/mcs/class/System.Web/System.Web/ChangeLog
@@ -1,3 +1,47 @@
+2011-01-17  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] (4.0) Validate the form data in Form getter
+
+2011-01-09  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	[System.Web] Add web fonts mimetypes to let browser do caching on
+	client-side
+
+2010-12-09  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Get system.web/httpRuntime only once
+
+	Get that section only once and keep it in HttpRuntime.
+
+2010-12-08  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	InitOnce does not throw
+
+2010-12-07  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Fixes problem with exceptions on init
+
+	Multiple threads might be waiting on the lock and the modules get
+	loaded and initialized multiple times, leading to an error. This
+	patch fixes it and always returns the right initialization
+	exception, if any, to the client.
+
+2010-11-19  Jackson Harper  <jacksonh at gmail.com>
+
+	Parse RequestPathInvalidCharacters properly. Fixes urls with
+	commas in them.
+
+	This fixes bug #654476.
+	https://bugzilla.novell.com/show_bug.cgi?id=654476
+
+	These values are stored as a comma separated list, not just a list
+	of chars. So we need to parse out all the values, ignoring
+	whitespace.
+
+2010-11-18  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] A few memory usage optimizations.
+
 2010-11-11  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
 
 	Don't cache child nodes when security trimming is enabled.
@@ -8,6 +52,61 @@
 
 	Fixes bug #641449.
 
+2010-11-09  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Optimize buffer reuse in HttpWriter.
+
+	When HttpWriter requests a byte buffer to send data to the output
+	stream it now uses a thread-local static buffer pre-allocated to
+	at most 128KB (all threads' buffers should not exceed 4MB). If a
+	buffer exceeding the static buffer size is requested, a transient
+	one is allocated.
+
+2010-11-05  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] HttpContext.TimeoutReached - check whether timer != null
+	before using it.
+
+2010-10-29  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] HttpRequest.MapPath changes to match .NET
+
+	When MapPath is passed a rooted, absolute path which is not in the
+	current application's virtual root, it should throw an exception.
+	If the path is rooted and within the current application, it will
+	be mapped as if it was relative to the root.
+
+2010-10-27  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Fix a build-breaking typo introduced in
+	ea730c5de2e555fb8ee5c5d906ad41a602f55848
+
+2010-10-27  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Fix for bug #648407. HttpCachePolicy must use the value
+	passed to AppendCacheExtension when generating the Cache-Control
+	header
+
+2010-10-27  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Fix for bug #648432. HttpResponse.WriteFile maps file
+	path if it isn't an absolute one.
+
+	Both on Linux and on Windows file paths starting with x:\\, x://
+	and //server don't have their paths mapped. On Linux it may have
+	weird (and unexpected for a Windows developer) effects since we
+	cannot treat those names in any special way - the are valid Unix
+	file names. On Windows things will work as expected.
+
+2010-10-26  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Cosmetics to make code a bit more efficient
+
+2010-10-26  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Fix for bug #648439. Do not prefix
+	HttpRequest.ServerVariables ["QUERY_STRING"] with a '?'
+
 2010-10-24  Marek Habersack  <grendel at twistedcode.net>
 
 	* HttpRuntime.cs: disable filesystem watchers on appdomain
@@ -24,6 +123,47 @@
 	it may happen that the TLS is not cleared during thread object
 	finalization (see metadata/threads.c, the start_wrapper function)
 
+2010-10-15  Marek Safar  <marek.safar at gmail.com>
+
+	Clean up few more warnings
+
+2010-10-08  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* System.Web/System.Web/HttpResponse.cs: Ensure '?' is not encoded
+	as %3F while redirecting (e.g. aspxerrorpath) since this can cause
+	a loop. i.e. not found leading to not found...
+
+2010-09-30  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Handle closed responses gracefully.
+
+	If ReleaseResources or Flush (true) were called, a flag is set
+	that causes any subsequent Flush () calls to fail with an
+	exception. At the same time, ReleaseResources does not destroy the
+	output stream completely - it has to remain around to match .NET
+	behavior.
+
+2010-09-30  Marek Habersack  <grendel at twistedcode.net>
+
+	Revert "[asp.net] Make sure output_stream is not null before using
+	it"
+
+	This reverts commit a4ed8be6973dcfede7131f080340220b3ce4830b since
+	what we do in ReleaseResources is not what .NET does - a better
+	fix will follow.
+
+2010-09-29  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Make sure output_stream is not null before using it
+
+	It is possible that some code will still attempt to access the
+	HttpResponse instance after ReleaseResources got called. This
+	patch prevents NREX in such cases.
+
+2010-09-08  Jb Evain  <jbevain at gmail.com>
+
+	Make HttpUtility compilable on MonoDroid as well as MonoTouch
+
 2010-08-27  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
 
 	Call SetEndOfSendNotification
diff --git a/mcs/class/System.Web/System.Web/HttpApplication.cs b/mcs/class/System.Web/System.Web/HttpApplication.cs
index 525decc..022817f 100644
--- a/mcs/class/System.Web/System.Web/HttpApplication.cs
+++ b/mcs/class/System.Web/System.Web/HttpApplication.cs
@@ -109,7 +109,7 @@ namespace System.Web
 		ISite isite;
 
 		// The source, and the exposed API (cache).
-		HttpModuleCollection modcoll;
+		volatile HttpModuleCollection modcoll;
 
 		string assemblyLocation;
 
@@ -168,7 +168,7 @@ namespace System.Web
 			set { AppDomain.CurrentDomain.SetData (initialization_exception_key, value); }
 		}
 #else
-		static Exception initialization_exception;
+		static volatile Exception initialization_exception;
 #endif
 		bool removeConfigurationFromCache;
 		bool fullInitComplete = false;
@@ -198,21 +198,35 @@ namespace System.Web
 		
 		internal void InitOnce (bool full_init)
 		{
+			if (initialization_exception != null)
+				return;
+
+			if (modcoll != null)
+				return;
+
 			lock (this_lock) {
+				if (initialization_exception != null)
+					return;
+
 				if (modcoll != null)
 					return;
-				
-				HttpModulesSection modules;
-				modules = (HttpModulesSection) WebConfigurationManager.GetWebApplicationSection ("system.web/httpModules");
-				HttpContext saved = HttpContext.Current;
-				HttpContext.Current = new HttpContext (new System.Web.Hosting.SimpleWorkerRequest (String.Empty, String.Empty, new StringWriter()));
-				modcoll = modules.LoadModules (this);
-				HttpContext.Current = saved;
-
-				if (full_init) {
-					HttpApplicationFactory.AttachEvents (this);
-					Init ();
-					fullInitComplete = true;
+
+				try {
+					HttpModulesSection modules;
+					modules = (HttpModulesSection) WebConfigurationManager.GetWebApplicationSection ("system.web/httpModules");
+					HttpContext saved = HttpContext.Current;
+					HttpContext.Current = new HttpContext (new System.Web.Hosting.SimpleWorkerRequest (String.Empty, String.Empty, new StringWriter()));
+					HttpModuleCollection coll = modules.LoadModules (this);
+					Interlocked.CompareExchange (ref modcoll, coll, null);
+					HttpContext.Current = saved;
+
+					if (full_init) {
+						HttpApplicationFactory.AttachEvents (this);
+						Init ();
+						fullInitComplete = true;
+					}
+				} catch (Exception e) {
+					initialization_exception = e;
 				}
 			}
 		}
@@ -264,10 +278,8 @@ namespace System.Web
 		public HttpModuleCollection Modules {
 			[AspNetHostingPermission (SecurityAction.Demand, Level = AspNetHostingPermissionLevel.High)]
 			get {
-				lock (this_lock) {
-					if (modcoll == null)
-						modcoll = new HttpModuleCollection ();
-				}
+				if (modcoll == null)
+					modcoll = new HttpModuleCollection ();
 				
 				return modcoll;
 			}
@@ -811,13 +823,13 @@ namespace System.Web
 		internal void DisposeInternal ()
 		{
 			Dispose ();
-			lock (this_lock) {
-				if (modcoll != null) {
-					for (int i = modcoll.Count - 1; i >= 0; i--) {
-						modcoll.Get (i).Dispose ();
-					}
-					modcoll = null;
+			HttpModuleCollection coll = new HttpModuleCollection ();
+			Interlocked.Exchange (ref modcoll, coll);
+			if (coll != null) {
+				for (int i = coll.Count - 1; i >= 0; i--) {
+					coll.Get (i).Dispose ();
 				}
+				coll = null;
 			}
 
 			EventHandler eh = nonApplicationEvents [disposedEvent] as EventHandler;
@@ -1528,12 +1540,12 @@ namespace System.Web
 				ct.CurrentCulture = cultures [0];
 				ct.CurrentUICulture = cultures [1];
 			}
-			
-			try {
-				InitOnce (true);
-			} catch (Exception e) {
-				initialization_exception = e;
-				FinalErrorWrite (context.Response, HttpException.NewWithCode (String.Empty, e, WebEventCodes.RuntimeErrorRequestAbort).GetHtmlErrorMessage ());
+
+			InitOnce (true);
+			if (initialization_exception != null) {
+				Exception e = initialization_exception;
+				HttpException exc = HttpException.NewWithCode (String.Empty, e, WebEventCodes.RuntimeErrorRequestAbort);
+				FinalErrorWrite (context.Response, exc.GetHtmlErrorMessage ());
 				PipelineDone ();
 				return;
 			}
diff --git a/mcs/class/System.Web/System.Web/HttpApplicationState.cs b/mcs/class/System.Web/System.Web/HttpApplicationState.cs
index 01fc6c0..05d2647 100644
--- a/mcs/class/System.Web/System.Web/HttpApplicationState.cs
+++ b/mcs/class/System.Web/System.Web/HttpApplicationState.cs
@@ -39,64 +39,37 @@ namespace System.Web
 		HttpStaticObjectsCollection _AppObjects;
 		HttpStaticObjectsCollection _SessionObjects;
 
-		ReaderWriterLock _Lock; 
+		ReaderWriterLockSlim _Lock; 
 
 		internal HttpApplicationState ()
 		{
-			// do not use the public (empty) ctor as it required UnmanagedCode permission
-			_AppObjects = new HttpStaticObjectsCollection (this);
-			_SessionObjects = new HttpStaticObjectsCollection (this);
-			_Lock = new ReaderWriterLock ();
+			_Lock = new ReaderWriterLockSlim ();
 		}
 
-		internal HttpApplicationState (HttpStaticObjectsCollection AppObj,
-			HttpStaticObjectsCollection SessionObj)
+		internal HttpApplicationState (HttpStaticObjectsCollection AppObj, HttpStaticObjectsCollection SessionObj)
 		{
-			if (null != AppObj) 
-			{
-				_AppObjects = AppObj;
-			} 
-			else 
-			{
-				// do not use the public (empty) ctor as it required UnmanagedCode permission
-				_AppObjects = new HttpStaticObjectsCollection (this);
-			}
-
-			if (null != SessionObj) 
-			{
-				_SessionObjects = SessionObj;
-			} 
-			else 
-			{
-				// do not use the public (empty) ctor as it required UnmanagedCode permission
-				_SessionObjects = new HttpStaticObjectsCollection (this);
-			}
-			_Lock = new ReaderWriterLock ();
+			_AppObjects = AppObj;
+			_SessionObjects = SessionObj;
+			_Lock = new ReaderWriterLockSlim ();
 		}
 
 		public void Add (string name, object value)
 		{
-			_Lock.AcquireWriterLock (-1); 
-			try 
-			{
+			try {
+				_Lock.EnterWriteLock ();
 				BaseAdd (name, value);
-			} 
-			finally 
-			{
-				_Lock.ReleaseWriterLock ();
+			} finally {
+				_Lock.ExitWriteLock ();
 			}
 		}
 
 		public void Clear ()
 		{
-			_Lock.AcquireWriterLock (-1); 
-			try 
-			{
+			try {
+				_Lock.EnterWriteLock ();
 				BaseClear ();
-			} 
-			finally 
-			{
-				_Lock.ReleaseWriterLock ();
+			} finally {
+				_Lock.ExitWriteLock ();
 			}
 		} 
 
@@ -104,14 +77,11 @@ namespace System.Web
 		{
 			object ret = null;
 
-			_Lock.AcquireReaderLock (-1); 
-			try 
-			{
+			try {
+				_Lock.EnterReadLock ();
 				ret = BaseGet (name);
-			} 
-			finally 
-			{
-				_Lock.ReleaseReaderLock ();
+			}  finally {
+				_Lock.ExitReadLock ();
 			}
 
 			return ret;
@@ -119,53 +89,36 @@ namespace System.Web
 
 		public object Get (int index)
 		{
-			object ret = null;
-
-			_Lock.AcquireReaderLock (-1); 
-			try 
-			{
-				ret = BaseGet (index);
-			} 
-			finally 
-			{
-				_Lock.ReleaseReaderLock ();
+			try {
+				_Lock.EnterReadLock ();
+				return BaseGet (index);
+			} finally {
+				_Lock.ExitReadLock ();
 			}
-
-			return ret;
 		}   
 
 		public string GetKey (int index)
 		{
-			string ret = null;
-
-			_Lock.AcquireReaderLock (-1); 
-			try 
-			{
-				ret = BaseGetKey (index);
-			} 
-			finally 
-			{
-				_Lock.ReleaseReaderLock ();
+			try {
+				_Lock.EnterReadLock ();
+				return BaseGetKey (index);
+			} finally {
+				_Lock.ExitReadLock ();
 			}
-
-			return ret;
 		}      
 
 		public void Lock ()
 		{
-			_Lock.AcquireWriterLock (-1);
+			_Lock.EnterWriteLock ();
 		}
 
 		public void Remove (string name)
 		{
-			_Lock.AcquireWriterLock (-1); 
-			try 
-			{
+			try {
+				_Lock.EnterWriteLock ();
 				BaseRemove (name);
-			} 
-			finally 
-			{
-				_Lock.ReleaseWriterLock ();
+			} finally  {
+				_Lock.ExitWriteLock ();
 			}      
 		}
 
@@ -176,101 +129,82 @@ namespace System.Web
 
 		public void RemoveAt (int index)
 		{
-			_Lock.AcquireWriterLock (-1); 
-			try 
-			{
+			try {
+				_Lock.EnterWriteLock ();
 				BaseRemoveAt (index);
-			} 
-			finally 
-			{
-				_Lock.ReleaseWriterLock ();
+			} finally  {
+				_Lock.ExitWriteLock ();
 			}      
 		}
 
 		public void Set (string name, object value)
 		{
-			_Lock.AcquireWriterLock (-1); 
-			try 
-			{
+			try {
+				_Lock.EnterWriteLock ();
 				BaseSet (name, value);
-			} 
-			finally 
-			{
-				_Lock.ReleaseWriterLock ();
+			} finally  {
+				_Lock.ExitWriteLock ();
 			}      
 		}   
 
 		public void UnLock ()
 		{
-			_Lock.ReleaseWriterLock ();
+			_Lock.ExitWriteLock ();
 		}
 
-		public string [] AllKeys 
-		{
-			get 
-			{
-				string [] ret = null;
-
-				_Lock.AcquireReaderLock (-1); 
-				try 
-				{
-					ret = BaseGetAllKeys ();
-				} 
-				finally 
-				{
-					_Lock.ReleaseReaderLock ();
-				}     
-
-				return ret;
+		public string [] AllKeys {
+			get {
+				try {
+					_Lock.EnterReadLock ();
+					return BaseGetAllKeys ();
+				} finally  {
+					_Lock.ExitReadLock ();
+				}
 			}
 		}
 
-		public HttpApplicationState Contents 
-		{
+		public HttpApplicationState Contents {
 			get { return this; }
 		}
 
-		public override int Count 
-		{
-			get 
-			{
-				int ret = 0;
-
-				_Lock.AcquireReaderLock (-1); 
-				try 
-				{
-					ret = base.Count;
-				} 
-				finally 
-				{
-					_Lock.ReleaseReaderLock ();
+		public override int Count {
+			get {
+				try {
+					_Lock.EnterReadLock ();
+					return base.Count;
+				} finally  {
+					_Lock.ExitReadLock ();
 				}     
-
-				return ret;
 			}
 		}   
 
-		public object this [string name] 
-		{
+		public object this [string name] {
 			get { return Get (name); }
 			set { Set (name, value); }
 		}
 
-		public object this [int index] 
-		{
+		public object this [int index] {
 			get { return Get (index); }
 		}
 
 		//  ASP Session based objects
-		internal HttpStaticObjectsCollection SessionObjects 
-		{
-			get { return _SessionObjects; }
+		internal HttpStaticObjectsCollection SessionObjects {
+			get {
+				if (_SessionObjects == null)
+					_SessionObjects = new HttpStaticObjectsCollection ();
+				
+				return _SessionObjects;
+			}
 		}
 
 		//  ASP App based objects
-		public HttpStaticObjectsCollection StaticObjects 
-		{
-			get { return _AppObjects; }
+		public HttpStaticObjectsCollection StaticObjects {
+			get {
+				if (_AppObjects == null)
+					_AppObjects = new HttpStaticObjectsCollection ();
+				
+				return _AppObjects;
+			}
 		}
 	}
 }
diff --git a/mcs/class/System.Web/System.Web/HttpCachePolicy.cs b/mcs/class/System.Web/System.Web/HttpCachePolicy.cs
index ab4586e..4f9ddcd 100644
--- a/mcs/class/System.Web/System.Web/HttpCachePolicy.cs
+++ b/mcs/class/System.Web/System.Web/HttpCachePolicy.cs
@@ -353,7 +353,12 @@ namespace System.Web
 				cc = String.Concat (cc, ", no-store");
 			if (set_no_transform)
 				cc = String.Concat (cc, ", no-transform");
-
+			if (cache_extension != null && cache_extension.Length > 0) {
+				if (!String.IsNullOrEmpty (cc))
+					cc = String.Concat (cc, ", ");
+				cc = String.Concat (cc, cache_extension.ToString ());
+			}
+			
 			headers.Add ("Cache-Control", cc);
 
 			if (last_modified_from_file_dependencies || etag_from_file_dependencies)
diff --git a/mcs/class/System.Web/System.Web/HttpContext.cs b/mcs/class/System.Web/System.Web/HttpContext.cs
index 5d9657d..7876e8e 100644
--- a/mcs/class/System.Web/System.Web/HttpContext.cs
+++ b/mcs/class/System.Web/System.Web/HttpContext.cs
@@ -674,10 +674,8 @@ namespace System.Web
 
 		internal TimeSpan ConfigTimeout {
 			get {
-				if (config_timeout == null) {
-					HttpRuntimeSection section = (HttpRuntimeSection)WebConfigurationManager.GetSection ("system.web/httpRuntime");
-					config_timeout = section.ExecutionTimeout;
-				}
+				if (config_timeout == null)
+					config_timeout = HttpRuntime.Section.ExecutionTimeout;
 
 				return (TimeSpan) config_timeout;
 			}
@@ -710,7 +708,8 @@ namespace System.Web
 		void TimeoutReached(object state) {
 			HttpRuntime.QueuePendingRequest (false);
 			if (Interlocked.CompareExchange (ref timeout_possible, 0, 0) == 0) {
-				timer.Change(2000, 0);
+				if (timer != null)
+					timer.Change(2000, 0);
 				return;			
 			}
 			StopTimeoutTimer();
diff --git a/mcs/class/System.Web/System.Web/HttpHeaderCollection.cs b/mcs/class/System.Web/System.Web/HttpHeaderCollection.cs
index c07c106..6bc6917 100644
--- a/mcs/class/System.Web/System.Web/HttpHeaderCollection.cs
+++ b/mcs/class/System.Web/System.Web/HttpHeaderCollection.cs
@@ -36,10 +36,8 @@ namespace System.Web
 
 		bool HeaderCheckingEnabled {
 			get {
-				if (headerCheckingEnabled == null) {
-					var cfg = WebConfigurationManager.GetSection ("system.web/httpRuntime") as HttpRuntimeSection;
-					headerCheckingEnabled = cfg.EnableHeaderChecking;
-				}
+				if (headerCheckingEnabled == null)
+					headerCheckingEnabled = HttpRuntime.Section.EnableHeaderChecking;
 
 				return (bool)headerCheckingEnabled;
 			}
diff --git a/mcs/class/System.Web/System.Web/HttpRequest.cs b/mcs/class/System.Web/System.Web/HttpRequest.cs
index d3818a4..8c1e488 100644
--- a/mcs/class/System.Web/System.Web/HttpRequest.cs
+++ b/mcs/class/System.Web/System.Web/HttpRequest.cs
@@ -115,8 +115,31 @@ namespace System.Web
 			get { return validateRequestNewMode; }
 		}
 
-		internal static char[] RequestPathInvalidCharacters {
-			get; private set;
+		private static char[] RequestPathInvalidCharacters {
+			get; set;
+		}
+
+		private static char[] CharsFromList (string list)
+		{
+			// List format is very strict and enforced by the Configuration	
+			// there must be a single char separated by commas with no trailing comma
+			// whitespace is allowed though and should be trimmed.
+			
+			string [] pieces = list.Split (',');
+
+			char [] chars = new char [pieces.Length];
+			for (int i = 0; i < chars.Length; i++) {
+				string trimmed = pieces [i].Trim ();
+				if (trimmed.Length != 1) {
+					// This should have been caught by System.Web.Configuration
+					// and throw a configuration error. This is just here for sanity
+					throw new System.Configuration.ConfigurationErrorsException ();
+				}
+
+				chars [i] = trimmed [0];
+			}
+
+			return chars;
 		}
 #endif
 
@@ -131,14 +154,13 @@ namespace System.Web
 				}
 
 #if NET_4_0
-				HttpRuntimeSection runtimeConfig = WebConfigurationManager.GetWebApplicationSection ("system.web/httpRuntime") as HttpRuntimeSection;
-				Version validationMode = runtimeConfig.RequestValidationMode;
+				Version validationMode = HttpRuntime.Section.RequestValidationMode;
 
 				if (validationMode >= new Version (4, 0)) {
 					validateRequestNewMode = true;
-					string invalidChars = runtimeConfig.RequestPathInvalidCharacters;
+					string invalidChars = HttpRuntime.Section.RequestPathInvalidCharacters;
 					if (!String.IsNullOrEmpty (invalidChars))
-						RequestPathInvalidCharacters = invalidChars.ToCharArray ();
+						RequestPathInvalidCharacters = CharsFromList (invalidChars);
 				}
 #endif
 			} catch {
@@ -685,7 +707,7 @@ namespace System.Web
 					// Setting this before calling the validator prevents
 					// possible endless recursion
 					checked_form = true;
-					ValidateNameValueCollection ("Form", query_string_nvc, RequestValidationSource.Form);
+					ValidateNameValueCollection ("Form", form, RequestValidationSource.Form);
 				} else
 #endif
 					if (validate_form && !checked_form){
@@ -796,7 +818,7 @@ namespace System.Web
 			//
 			int content_length = ContentLength;
 			int content_length_kb = content_length / 1024;
-			HttpRuntimeSection config = (HttpRuntimeSection) WebConfigurationManager.GetWebApplicationSection ("system.web/httpRuntime");
+			HttpRuntimeSection config = HttpRuntime.Section;
 			if (content_length_kb > config.MaxRequestLength)
 				throw HttpException.NewWithCode (400, "Upload size exceeds httpRuntime limit.", WebEventCodes.RuntimeErrorPostTooLarge);
 
@@ -1343,12 +1365,17 @@ namespace System.Web
 			} else if (!VirtualPathUtility.IsAbsolute (virtualPath))
 				virtualPath = VirtualPathUtility.ToAbsolute (virtualPath);
 
+			bool isAppVirtualPath = String.Compare (virtualPath, appVirtualPath, RuntimeHelpers.StringComparison) == 0;
+			appVirtualPath = VirtualPathUtility.AppendTrailingSlash (appVirtualPath);
 			if (!allowCrossAppMapping){
 				if (!StrUtils.StartsWith (virtualPath, appVirtualPath, true))
-					throw HttpException.NewWithCode ("MapPath: Mapping across applications not allowed", WebEventCodes.RuntimeErrorRequestAbort);
+					throw new ArgumentException ("MapPath: Mapping across applications not allowed");
 				if (appVirtualPath.Length > 1 && virtualPath.Length > 1 && virtualPath [0] != '/')
 					throw HttpException.NewWithCode ("MapPath: Mapping across applications not allowed", WebEventCodes.RuntimeErrorRequestAbort);
 			}
+			
+			if (!isAppVirtualPath && !virtualPath.StartsWith (appVirtualPath, RuntimeHelpers.StringComparison))
+				throw new InvalidOperationException (String.Format ("Failed to map path '{0}'", virtualPath));
 #if TARGET_JVM
 			return worker_request.MapPath (virtualPath);
 #else
@@ -1414,7 +1441,7 @@ namespace System.Web
 #if NET_4_0
 		internal void Validate ()
 		{
-			var cfg = WebConfigurationManager.GetSection ("system.web/httpRuntime") as HttpRuntimeSection;
+			var cfg = HttpRuntime.Section;
 			string query = UrlComponents.Query;
 			
 			if (query != null && query.Length > cfg.MaxQueryStringLength)
diff --git a/mcs/class/System.Web/System.Web/HttpResponse.cs b/mcs/class/System.Web/System.Web/HttpResponse.cs
index 9aa99d9..273fe80 100644
--- a/mcs/class/System.Web/System.Web/HttpResponse.cs
+++ b/mcs/class/System.Web/System.Web/HttpResponse.cs
@@ -99,6 +99,7 @@ namespace System.Web
 		internal bool use_chunked;
 		
 		bool closed;
+		bool completed;
 		internal bool suppress_content;
 
 		//
@@ -143,7 +144,7 @@ namespace System.Web
 			get {
 				if (!version_header_checked && version_header == null) {
 					version_header_checked = true;
-					HttpRuntimeSection config = WebConfigurationManager.GetWebApplicationSection ("system.web/httpRuntime") as HttpRuntimeSection;
+					HttpRuntimeSection config = HttpRuntime.Section;
 					if (config != null && config.EnableVersionHeader)
 						version_header = Environment.Version.ToString (3);
 				}
@@ -801,6 +802,9 @@ namespace System.Web
 
 		internal void Flush (bool final_flush)
 		{
+			if (completed)
+				throw new HttpException ("Server cannot flush a completed response");
+			
 			DoFilter (final_flush);
 			if (!headers_sent){
 				if (final_flush || status_code != 200)
@@ -814,9 +818,11 @@ namespace System.Web
 				output_stream.Clear ();
 				if (WorkerRequest != null)
 					output_stream.Flush (WorkerRequest, true); // ignore final_flush here.
+				completed = true;
 				return;
 			}
-
+			completed = final_flush;
+			
 			if (!headers_sent)
 				WriteHeaders (final_flush);
 
@@ -871,13 +877,19 @@ namespace System.Web
 				isFullyQualified = false;
 
 			if (!isFullyQualified) {
-				HttpRuntimeSection config = WebConfigurationManager.GetWebApplicationSection ("system.web/httpRuntime") as HttpRuntimeSection;
+				HttpRuntimeSection config = HttpRuntime.Section;
 				if (config != null && config.UseFullyQualifiedRedirectUrl) {
 					var ub = new UriBuilder (context.Request.Url);
-					ub.Path = url;
+					int qpos = url.IndexOf ('?');
+					if (qpos == -1) {
+						ub.Path = url;
+						ub.Query = null;
+					} else {
+						ub.Path = url.Substring (0, qpos);
+						ub.Query = url.Substring (qpos + 1);
+					}
 					ub.Fragment = null;
 					ub.Password = null;
-					ub.Query = null;
 					ub.UserName = null;
 					url = ub.Uri.ToString ();
 				}
@@ -1071,6 +1083,34 @@ namespace System.Web
 			writer.Write (buffer, index, count);
 		}
 
+		bool IsFileSystemDirSeparator (char ch)
+		{
+			return ch == '\\' || ch == '/';
+		}
+		
+		string GetNormalizedFileName (string fn)
+		{
+			if (String.IsNullOrEmpty (fn))
+				return fn;
+
+			// On Linux we don't change \ to / since filenames with \ are valid. We also
+			// don't remove drive: designator for the same reason.
+			int len = fn.Length;
+			if (len >= 3 && fn [1] == ':' && IsFileSystemDirSeparator (fn [2]))
+				return Path.GetFullPath (fn); // drive-qualified absolute file path
+
+			if (len >= 2 && IsFileSystemDirSeparator (fn [0]) && IsFileSystemDirSeparator (fn [1]))
+				return Path.GetFullPath (fn); // UNC path
+
+			HttpContext ctx = context ?? HttpContext.Current;
+			HttpRequest req = ctx != null ? ctx.Request : null;
+
+			if (req != null)
+				return req.MapPath (fn);
+			
+			return fn; // Or should we rather throw?
+		}
+		
 		internal void WriteFile (FileStream fs, long offset, long size)
 		{
 			byte [] buffer = new byte [32*1024];
@@ -1096,12 +1136,13 @@ namespace System.Web
 			if (filename == null)
 				throw new ArgumentNullException ("filename");
 
+			string fn = GetNormalizedFileName (filename);
 			if (readIntoMemory){
-				using (FileStream fs = File.OpenRead (filename))
+				using (FileStream fs = File.OpenRead (fn))
 					WriteFile (fs, 0, fs.Length);
 			} else {
-				FileInfo fi = new FileInfo (filename);
-				output_stream.WriteFile (filename, 0, fi.Length);
+				FileInfo fi = new FileInfo (fn);
+				output_stream.WriteFile (fn, 0, fi.Length);
 			}
 			if (buffer)
 				return;
@@ -1321,8 +1362,12 @@ namespace System.Web
 
 		internal void ReleaseResources ()
 		{
+			if (completed)
+				return;
+			
 			output_stream.ReleaseResources (true);
-			output_stream = null;
+			Close ();
+			completed = true;
 		}
 	}
 
diff --git a/mcs/class/System.Web/System.Web/HttpResponseHeader.cs b/mcs/class/System.Web/System.Web/HttpResponseHeader.cs
index 432129d..9eb9fee 100644
--- a/mcs/class/System.Web/System.Web/HttpResponseHeader.cs
+++ b/mcs/class/System.Web/System.Web/HttpResponseHeader.cs
@@ -51,15 +51,15 @@ namespace System.Web
 				headerValue = hvalue;
 			}
 		}
-	  
+/*	  
 		static bool headerCheckingEnabled;
 		
 		static BaseResponseHeader ()
 		{
-			HttpRuntimeSection section = WebConfigurationManager.GetWebApplicationSection ("system.web/httpRuntime") as HttpRuntimeSection;
+			HttpRuntimeSection section = HttpRuntime.Section;
 			headerCheckingEnabled = section == null || section.EnableHeaderChecking;
 		}
-
+*/
 
 		internal BaseResponseHeader (string val)
 		{
diff --git a/mcs/class/System.Web/System.Web/HttpRuntime.cs b/mcs/class/System.Web/System.Web/HttpRuntime.cs
index 63e56e7..8ddbc01 100644
--- a/mcs/class/System.Web/System.Web/HttpRuntime.cs
+++ b/mcs/class/System.Web/System.Web/HttpRuntime.cs
@@ -120,6 +120,7 @@ namespace System.Web
 		static bool assemblyMappingEnabled;
 		static object assemblyMappingLock = new object ();
 		static object appOfflineLock = new object ();
+		static HttpRuntimeSection runtime_section;
 		
 		public HttpRuntime ()
 		{
@@ -136,6 +137,7 @@ namespace System.Web
 #if MONOWEB_DEP
 				SettingsMappingManager.Init ();
 #endif
+				runtime_section = (HttpRuntimeSection) WebConfigurationManager.GetSection ("system.web/httpRuntime");
 			} catch (Exception ex) {
 				initialException = ex;
 			}
@@ -305,6 +307,8 @@ namespace System.Web
 			}
 		}
 
+		internal static HttpRuntimeSection Section { get { return runtime_section; } }
+
 		public static bool UsingIntegratedPipeline { get { return false; } }
 		
 		[SecurityPermission (SecurityAction.Demand, UnmanagedCode = true)]
diff --git a/mcs/class/System.Web/System.Web/HttpStaticObjectsCollection.cs b/mcs/class/System.Web/System.Web/HttpStaticObjectsCollection.cs
index 8681a5b..5507b37 100644
--- a/mcs/class/System.Web/System.Web/HttpStaticObjectsCollection.cs
+++ b/mcs/class/System.Web/System.Web/HttpStaticObjectsCollection.cs
@@ -21,6 +21,7 @@
 //
 
 using System.Collections;
+using System.Collections.Generic;
 using System.IO;
 using System.Security.Permissions;
 using System.Web.UI;
@@ -31,8 +32,6 @@ namespace System.Web
 	[AspNetHostingPermission (SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
 	public sealed class HttpStaticObjectsCollection : ICollection, IEnumerable
 	{
-		Hashtable _Objects;
-
 		sealed class StaticItem {
 			object this_lock = new object();
 			
@@ -61,19 +60,25 @@ namespace System.Web
 			}
 		}
 
+		Dictionary <string, object> objects;
+
+		Dictionary <string, object> Objects {
+			get {
+				if (objects == null)
+					objects = new Dictionary <string, object> (StringComparer.Ordinal);
+
+				return objects;
+			}
+		}
+		
 		// Needs to hold object items that can be latebound and can be serialized
-#if ONLY_1_1
-		[SecurityPermission (SecurityAction.Demand, UnmanagedCode = true)]
-#endif
 		public HttpStaticObjectsCollection ()
 		{
-			_Objects = new Hashtable ();
 		}
 
 		// this ctor has no security requirements and is used when creating HttpApplicationState
 		internal HttpStaticObjectsCollection (HttpApplicationState appstate)
 		{
-			_Objects = new Hashtable ();
 		}
 
 		public object GetObject (string name)
@@ -83,22 +88,50 @@ namespace System.Web
 
 		public IEnumerator GetEnumerator ()
 		{
-			return _Objects.GetEnumerator ();
+			return Objects.GetEnumerator ();
 		}
 
 		public void CopyTo (Array array, int index)
 		{
-			_Objects.CopyTo (array, index);
+			if (objects == null)
+				return;
+
+			// Copied from Hashtable.CopyTo for the most part
+			if (array == null)
+                                throw new ArgumentNullException ("array");
+
+                        if (index < 0)
+                                throw new ArgumentOutOfRangeException ("index");
+
+                        if (array.Rank > 1)
+                                throw new ArgumentException ("array is multidimensional");
+
+                        if ((array.Length > 0) && (index >= array.Length))
+                                throw new ArgumentException ("index is equal to or greater than array.Length");
+
+                        if (index + objects.Count > array.Length)
+                                throw new ArgumentException ("Not enough room from index to end of array for this collection");
+
+			// We need to emulate Hashtable here, which uses DictionaryEntry for its items
+			foreach (var de in objects)
+				array.SetValue (new DictionaryEntry (de.Key, de.Value), index++);
 		}   
 
 		internal IDictionary GetObjects ()
 		{
-			return _Objects;
+			return Objects;
 		}
 
 		public object this [string name] {
 			get {
-				StaticItem item = _Objects [name] as StaticItem;
+				if (objects == null)
+					return null;
+				
+				StaticItem item = null;
+				object o;
+				if (Objects.TryGetValue (name, out o))
+					item = o as StaticItem;
+				
 				if (item == null)
 					return null;
 				
@@ -107,7 +140,12 @@ namespace System.Web
 		}
 
 		public int Count {
-			get { return _Objects.Count; }
+			get {
+				if (objects == null)
+					return 0;
+				
+				return Objects.Count;
+			}
 		}
 
 		public bool IsReadOnly {
@@ -130,10 +168,13 @@ namespace System.Web
 		internal HttpStaticObjectsCollection Clone ()
 		{
 			HttpStaticObjectsCollection coll = new HttpStaticObjectsCollection ();
-			coll._Objects = new Hashtable ();
-			foreach (string key in _Objects.Keys) {
-				StaticItem item = new StaticItem ((StaticItem) _Objects [key]);
-				coll._Objects [key] = item;
+			if (objects == null)
+				return coll;
+			
+			var collObjects = coll.Objects;
+			foreach (var de in objects) {
+				StaticItem item = new StaticItem ((StaticItem) de.Value);
+				collObjects [de.Key] = item;
 			}
 			
 			return coll;
@@ -141,20 +182,25 @@ namespace System.Web
 
 		internal void Add (ObjectTagBuilder tag)
 		{
-			_Objects.Add (tag.ObjectID, new StaticItem (tag.Type));
+			Objects.Add (tag.ObjectID, new StaticItem (tag.Type));
 		}
 		
 		void Set (string name, object obj)
 		{
-			_Objects [name] = obj;
+			Objects [name] = obj;
 		}
 
 		public void Serialize (BinaryWriter writer)
 		{
-			writer.Write (_Objects.Count);
-			foreach (string key in _Objects.Keys) {
-				writer.Write (key);
-				System.Web.Util.AltSerialization.Serialize (writer, _Objects [key]);
+			if (objects == null) {
+				writer.Write (0);
+				return;
+			}
+
+			writer.Write (objects.Count);
+			foreach (var de in objects) {
+				writer.Write (de.Key);
+				System.Web.Util.AltSerialization.Serialize (writer, de.Value);
 			}
 		}
 
@@ -162,8 +208,7 @@ namespace System.Web
 		{
 			HttpStaticObjectsCollection result = new HttpStaticObjectsCollection ();
 			for (int i = reader.ReadInt32 (); i > 0; i--)
-				result.Set (reader.ReadString (),
-					System.Web.Util.AltSerialization.Deserialize (reader));
+				result.Set (reader.ReadString (), System.Web.Util.AltSerialization.Deserialize (reader));
 
 			return result;
 		}
diff --git a/mcs/class/System.Web/System.Web/HttpUtility.cs b/mcs/class/System.Web/System.Web/HttpUtility.cs
index d9aa8e5..e79883d 100644
--- a/mcs/class/System.Web/System.Web/HttpUtility.cs
+++ b/mcs/class/System.Web/System.Web/HttpUtility.cs
@@ -40,7 +40,7 @@ using System.Web.Util;
 
 namespace System.Web {
 
-#if !MONOTOUCH
+#if !MOBILE
 	// CAS - no InheritanceDemand here as the class is sealed
 	[AspNetHostingPermission (SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
 #endif
diff --git a/mcs/class/System.Web/System.Web/HttpWriter.cs b/mcs/class/System.Web/System.Web/HttpWriter.cs
index 8585ffb..b33e670 100644
--- a/mcs/class/System.Web/System.Web/HttpWriter.cs
+++ b/mcs/class/System.Web/System.Web/HttpWriter.cs
@@ -30,6 +30,7 @@
 
 using System.IO;
 using System.Text;
+using System.Threading;
 using System.Globalization;
 using System.Runtime.InteropServices;
 using System.Security.Permissions;
@@ -40,11 +41,31 @@ namespace System.Web
 	[AspNetHostingPermission (SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
 	public sealed class HttpWriter : TextWriter
 	{
+		const long MAX_TOTAL_BUFFERS_SIZE = 4 * 1024 * 1024;
+		const uint SINGLE_BUFFER_SIZE = 128 * 1024;
+		const uint MIN_SINGLE_BUFFER_SIZE = 32 * 1024;
+		
 		HttpResponseStream output_stream;
 		HttpResponse response;
 		Encoding encoding;
-		byte [] _bytebuffer = new byte [1024];
 
+		[ThreadStatic]
+		static byte [] _bytebuffer;
+		static readonly uint byteBufferSize;
+		
+		static HttpWriter ()
+		{
+			int workerThreads, completionPortThreads;
+
+			ThreadPool.GetMinThreads (out workerThreads, out completionPortThreads);
+			workerThreads *= 3;
+
+			uint bufferSize = (uint)(MAX_TOTAL_BUFFERS_SIZE / workerThreads);
+			byteBufferSize = Math.Min (SINGLE_BUFFER_SIZE, bufferSize);
+			if (byteBufferSize < MIN_SINGLE_BUFFER_SIZE)
+				byteBufferSize = MIN_SINGLE_BUFFER_SIZE;
+		}
+		
 		internal HttpWriter (HttpResponse response)
 		{
 			this.response = response;
@@ -54,15 +75,14 @@ namespace System.Web
 
 		byte [] GetByteBuffer (int length)
 		{
+			if (_bytebuffer == null)
+				_bytebuffer = new byte [byteBufferSize];
+			
 			// We will reuse the buffer if its size is < 32K
-			if (_bytebuffer.Length >= length)
+			if (byteBufferSize >= length)
 				return _bytebuffer;
-
-			if (length > 32 * 1024)
+			else
 				return new byte [length];
-
-			_bytebuffer = new byte [length];
-			return _bytebuffer;
 		}
 
 		public override Encoding Encoding {
diff --git a/mcs/class/System.Web/System.Web/MimeTypes.cs b/mcs/class/System.Web/System.Web/MimeTypes.cs
index e9f7d1a..86a5406 100644
--- a/mcs/class/System.Web/System.Web/MimeTypes.cs
+++ b/mcs/class/System.Web/System.Web/MimeTypes.cs
@@ -130,6 +130,7 @@ namespace System.Web
 			mimeTypes.Add ("elc", "application/x-elc");
 			mimeTypes.Add ("el", "text/x-script.elisp");
 			mimeTypes.Add ("eml", "message/rfc822");
+			mimeTypes.Add ("eot", "application/vnd.bw-fontobject");
 			mimeTypes.Add ("eps", "application/postscript");
 			mimeTypes.Add ("es", "application/x-esrehber");
 			mimeTypes.Add ("etx", "text/x-setext");
@@ -433,6 +434,7 @@ namespace System.Web
 			mimeTypes.Add ("tsi", "audio/tsp-audio");
 			mimeTypes.Add ("tsp", "audio/tsplayer");
 			mimeTypes.Add ("tsv", "text/tab-separated-values");
+			mimeTypes.Add ("ttf", "application/x-font-ttf");
 			mimeTypes.Add ("turbot", "image/florian");
 			mimeTypes.Add ("txt", "text/plain");
 			mimeTypes.Add ("uil", "text/x-uil");
@@ -483,6 +485,7 @@ namespace System.Web
 			mimeTypes.Add ("wmlsc", "application/vnd.wap.wmlscriptc");
 			mimeTypes.Add ("wmls", "text/vnd.wap.wmlscript");
 			mimeTypes.Add ("wml", "text/vnd.wap.wml");
+			mimeTypes.Add ("woff", "application/x-woff");
 			mimeTypes.Add ("word", "application/msword");
 			mimeTypes.Add ("wp5", "application/wordperfect");
 			mimeTypes.Add ("wp6", "application/wordperfect");
diff --git a/mcs/class/System.Web/System.Web/QueueManager.cs b/mcs/class/System.Web/System.Web/QueueManager.cs
index 5be32ae..e049ae9 100644
--- a/mcs/class/System.Web/System.Web/QueueManager.cs
+++ b/mcs/class/System.Web/System.Web/QueueManager.cs
@@ -53,7 +53,7 @@ namespace System.Web
 			Exception ex = null;
 			
 			try {
-				HttpRuntimeSection config = WebConfigurationManager.GetSection ("system.web/httpRuntime") as HttpRuntimeSection;
+				HttpRuntimeSection config = HttpRuntime.Section;
 				if (config != null) {
 					minFree = config.MinFreeThreads;
 					minLocalFree = config.MinLocalRequestFreeThreads;
diff --git a/mcs/class/System.Web/System.Web/ServerVariablesCollection.cs b/mcs/class/System.Web/System.Web/ServerVariablesCollection.cs
index 1bfd69a..21677e8 100644
--- a/mcs/class/System.Web/System.Web/ServerVariablesCollection.cs
+++ b/mcs/class/System.Web/System.Web/ServerVariablesCollection.cs
@@ -7,7 +7,7 @@
 //   	Gonzalo Paniagua Javier (gonzalo at novell.com)
 //
 // (c) 2004 Mainsoft, Inc. (http://www.mainsoft.com)
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
+// Copyright (C) 2005-2010 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -35,19 +35,40 @@ using System.Collections.Specialized;
 using System.Runtime.Serialization;
 using System.Globalization;
 using System.Security.Permissions;
+using System.Security.Principal;
 using System.Web.Util;
 
 namespace System.Web
 {
-	class ServerVariablesCollection : BaseParamsCollection
+	sealed class ServerVariablesCollection : BaseParamsCollection
 	{
-		HttpRequest request;
 		bool loaded;
 
+		string QueryString {
+			get {
+				string qs = _request.QueryStringRaw;
+
+				if (String.IsNullOrEmpty (qs))
+					return qs;
+
+				if (qs [0] == '?')
+					return qs.Substring (1);
+
+				return qs;
+			}
+		}
+
+		IIdentity UserIdentity {
+			get {
+				HttpContext context = _request != null ? _request.Context : null;
+				IPrincipal user = context != null ? context.User : null;
+				return user != null ? user.Identity : null;
+			}
+		}
+		
 		public ServerVariablesCollection(HttpRequest request) : base(request)
 		{
 			IsReadOnly = true;
-			this.request = request;
 		}
 
 		void AppendKeyValue (StringBuilder sb, string key, string value, bool standard)
@@ -76,7 +97,7 @@ namespace System.Web
 			
 			for (int i = 0; i < HttpWorkerRequest.RequestHeaderMaximum; i++){
 				string val = wr.GetKnownRequestHeader (i);
-				if (val == null || val == "")
+				if (String.IsNullOrEmpty (val))
 					continue;
 				string key = HttpWorkerRequest.GetKnownRequestHeaderName (i);
 				AppendKeyValue (sb, key, val, standard);
@@ -123,7 +144,7 @@ namespace System.Web
 
 		void loadServerVariablesCollection()
 		{
-			HttpWorkerRequest wr = request.WorkerRequest;
+			HttpWorkerRequest wr = _request.WorkerRequest;
 			if (loaded || (wr == null))
 				return;
 
@@ -135,12 +156,14 @@ namespace System.Web
 			Add("APPL_MD_PATH", wr.GetServerVariable("APPL_MD_PATH"));
 			Add("APPL_PHYSICAL_PATH", wr.GetServerVariable("APPL_PHYSICAL_PATH"));
 
-			if (null != request.Context.User && request.Context.User.Identity.IsAuthenticated) {
-				Add ("AUTH_TYPE", request.Context.User.Identity.AuthenticationType);
-				Add ("AUTH_USER", request.Context.User.Identity.Name);
+			IIdentity identity = UserIdentity;
+			
+			if (identity != null && identity.IsAuthenticated) {
+				Add ("AUTH_TYPE", identity.AuthenticationType);
+				Add ("AUTH_USER", identity.Name);
 			} else {
-				Add ("AUTH_TYPE", "");
-				Add ("AUTH_USER", "");
+				Add ("AUTH_TYPE", String.Empty);
+				Add ("AUTH_USER", String.Empty);
 			}
 
 			Add("AUTH_PASSWORD", wr.GetServerVariable("AUTH_PASSWORD"));
@@ -159,7 +182,7 @@ namespace System.Web
 			string sTmp = wr.GetKnownRequestHeader(HttpWorkerRequest.HeaderContentLength);
 			if (null != sTmp)
 				Add ("CONTENT_LENGTH", sTmp);
-			Add ("CONTENT_TYPE", request.ContentType);
+			Add ("CONTENT_TYPE", _request.ContentType);
 
 			Add("GATEWAY_INTERFACE", wr.GetServerVariable("GATEWAY_INTERFACE"));
 			Add("HTTPS", wr.GetServerVariable("HTTPS"));
@@ -170,14 +193,14 @@ namespace System.Web
 			Add("INSTANCE_ID", wr.GetServerVariable("INSTANCE_ID"));
 			Add("INSTANCE_META_PATH", wr.GetServerVariable("INSTANCE_META_PATH"));
 			Add("LOCAL_ADDR", wr.GetLocalAddress());
-			Add("PATH_INFO", request.PathInfo);
-			Add("PATH_TRANSLATED", request.PhysicalPath);
-			Add("QUERY_STRING", request.QueryStringRaw);
-			Add("REMOTE_ADDR", request.UserHostAddress);
-			Add("REMOTE_HOST", request.UserHostName);
+			Add("PATH_INFO", _request.PathInfo);
+			Add("PATH_TRANSLATED", _request.PhysicalPath);
+			Add("QUERY_STRING", QueryString);
+			Add("REMOTE_ADDR", _request.UserHostAddress);
+			Add("REMOTE_HOST", _request.UserHostName);
 			Add("REMOTE_PORT", wr.GetRemotePort ().ToString ());
-			Add("REQUEST_METHOD", request.HttpMethod);
-			Add("SCRIPT_NAME", request.FilePath);
+			Add("REQUEST_METHOD", _request.HttpMethod);
+			Add("SCRIPT_NAME", _request.FilePath);
 			Add("SERVER_NAME", wr.GetServerName());
 			Add("SERVER_PORT", wr.GetLocalPort().ToString());
 			if (wr.IsSecure()) 
@@ -186,7 +209,7 @@ namespace System.Web
 				Add("SERVER_PORT_SECURE", "0");
 			Add("SERVER_PROTOCOL", wr.GetHttpVersion());
 			Add("SERVER_SOFTWARE", wr.GetServerVariable("SERVER_SOFTWARE"));
-			Add ("URL", request.FilePath);
+			Add ("URL", _request.FilePath);
 
 			AddHeaderVariables (wr);
 
@@ -204,19 +227,23 @@ namespace System.Web
 			if ((name == null) || (this._request == null))
 				return null;
 			name = name.ToUpper (Helpers.InvariantCulture);
+			IIdentity identity;
+			
 			switch (name) {
 				case "AUTH_TYPE":
-					if (null != _request.Context.User && _request.Context.User.Identity.IsAuthenticated)
-						return _request.Context.User.Identity.AuthenticationType;
+					identity = UserIdentity;
+					if (identity != null && identity.IsAuthenticated)
+						return identity.AuthenticationType;
 					else
 						return string.Empty;
 				case "AUTH_USER":
-					if (null != _request.Context.User && _request.Context.User.Identity.IsAuthenticated)
-						return _request.Context.User.Identity.Name;
+					identity = UserIdentity;
+					if (identity != null && identity.IsAuthenticated)
+						return identity.Name;
 					else
 						return string.Empty;
 				case "QUERY_STRING":
-					return this._request.QueryStringRaw;
+					return QueryString;
 				case "PATH_INFO":
 					return this._request.PathInfo;
 				case "PATH_TRANSLATED":
@@ -245,10 +272,6 @@ namespace System.Web
 					return _request.WorkerRequest.GetLocalPort ().ToString ();
 				case "APPL_PHYSICAL_PATH":
 					return _request.WorkerRequest.GetAppPathTranslated ();
-				case "REMOTE_USER":
-					return (_request.Context.User != null && _request.Context.User.Identity.IsAuthenticated) ?
-						_request.Context.User.Identity.Name :
-						String.Empty;
 				case "URL":
 					return _request.FilePath;
 				case "SERVER_PORT_SECURE":
@@ -257,6 +280,7 @@ namespace System.Web
 					return Fill (_request.WorkerRequest, true);
 				case "ALL_RAW":
 					return Fill (_request.WorkerRequest, false);
+				case "REMOTE_USER":
 				case "SERVER_SOFTWARE":
 				case "APPL_MD_PATH":
 				case "AUTH_PASSWORD":
diff --git a/mcs/class/System.Web/System.Web_standalone_test.dll.sources b/mcs/class/System.Web/System.Web_standalone_test.dll.sources
index 4e55553..7da6436 100644
--- a/mcs/class/System.Web/System.Web_standalone_test.dll.sources
+++ b/mcs/class/System.Web/System.Web_standalone_test.dll.sources
@@ -21,3 +21,6 @@ Test/standalone-tests/GridViewSortingStyles.cs
 Test/standalone-tests/SiteMapPathRendering.cs
 Test/standalone-tests/PageParserDefaultTypeProperties.cs
 Test/standalone-tests/ChildrenAsProperties.cs
+Test/standalone-tests/Menu_4.0_List.cs
+Test/standalone-tests/EnableFormsAuthentication.cs
+
diff --git a/mcs/class/System.Web/System.Web_test.dll.sources b/mcs/class/System.Web/System.Web_test.dll.sources
index 780edc4..c3349a1 100644
--- a/mcs/class/System.Web/System.Web_test.dll.sources
+++ b/mcs/class/System.Web/System.Web_test.dll.sources
@@ -36,6 +36,7 @@ mainsoft/NunitWeb/NunitWeb/Response.cs
 mainsoft/NunitWeb/NunitWeb/StandardUrl.cs
 mainsoft/NunitWeb/NunitWeb/TestRoleProvider.cs
 mainsoft/NunitWeb/NunitWeb/WebTest.cs
+mainsoft/NunitWeb/NunitWeb/WebTestLocal.cs
 mainsoft/NunitWeb/NunitWeb/WebTestResourcesSetupAttribute.cs
 mainsoft/NunitWeb/NunitWeb/Tests/TagsNestedInClientTag.cs
 mainsoft/NunitWeb/NunitWeb/Tests/TestSiteMapProvider.cs
@@ -125,6 +126,7 @@ System.Web.UI.HtmlControls/HtmlAnchorTest.cs
 System.Web.UI.HtmlControls/HtmlButtonTest.cs
 System.Web.UI.HtmlControls/HtmlContainerControlTest.cs
 System.Web.UI.HtmlControls/HtmlFormTest.cs
+System.Web.UI.HtmlControls/HtmlHeadTest.cs
 System.Web.UI.HtmlControls/HtmlImageTest.cs
 System.Web.UI.HtmlControls/HtmlInputButtonTest.cs
 System.Web.UI.HtmlControls/HtmlInputCheckBoxTest.cs
@@ -350,6 +352,7 @@ System.Web.Caching/AggregateCacheDependencyTest.cs
 System.Web.Caching/CacheCas.cs
 System.Web.Caching/CacheDependencyCas.cs
 System.Web.Caching/CacheItemPriorityQueueTest.cs
+System.Web.Caching/CacheItemPriorityQueueTestSupport.cs
 System.Web.Caching/CacheItemPriorityQueueTest_generated.cs
 System.Web.Caching/FileResponseElementTest.cs
 System.Web.Caching/HeaderElementTest.cs
diff --git a/mcs/class/System.Web/Test/System.Web.Caching/AggregateCacheDependencyTest.cs b/mcs/class/System.Web/Test/System.Web.Caching/AggregateCacheDependencyTest.cs
index 81f839e..074c13d 100644
--- a/mcs/class/System.Web/Test/System.Web.Caching/AggregateCacheDependencyTest.cs
+++ b/mcs/class/System.Web/Test/System.Web.Caching/AggregateCacheDependencyTest.cs
@@ -99,6 +99,7 @@ namespace MonoTests.System.Web.Caching
 		}
 
 		[Test]
+		[Ignore ("This test is racy, it fails from time to time.")]
 		public void AbsoluteExpiration ()
 		{
 			string depFile = Path.Combine (_tempFolder, "dep.tmp");
diff --git a/mcs/class/System.Web/Test/System.Web.Caching/CacheItemPriorityQueueTest.cs b/mcs/class/System.Web/Test/System.Web.Caching/CacheItemPriorityQueueTest.cs
index b7bb628..f459864 100644
--- a/mcs/class/System.Web/Test/System.Web.Caching/CacheItemPriorityQueueTest.cs
+++ b/mcs/class/System.Web/Test/System.Web.Caching/CacheItemPriorityQueueTest.cs
@@ -25,6 +25,8 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 using System;
+using System.Collections.Generic;
+using System.Web.Caching;
 
 using NUnit.Framework;
 
@@ -33,5 +35,112 @@ namespace MonoTests.System.Web.Caching
 	[TestFixture]
 	public partial class CacheItemPriorityQueueTest
 	{
+		sealed class TestCacheItem : CacheItem
+		{
+			public Guid Guid;
+
+			public TestCacheItem (ref int index, object[] data)
+			{
+				Key = LoadField <string> (index++, data);
+				AbsoluteExpiration = DateTime.Parse (LoadField <string> (index++, data));
+				SlidingExpiration = TimeSpan.Parse (LoadField <string> (index++, data));
+				Priority = LoadField <CacheItemPriority> (index++, data);
+				LastChange = DateTime.Parse (LoadField <string> (index++, data));
+				ExpiresAt = LoadField <long> (index++, data);
+				Disabled = LoadField <bool> (index++, data);
+				Guid = new Guid (LoadField <string> (index++, data));
+			}
+
+			public override string ToString ()
+			{
+				return String.Format ("CacheItem [{0}]\n[{1}][{2}][{3}]", this.Guid, Key, Disabled, ExpiresAt > 0 ? new DateTime (ExpiresAt).ToString () : "0");
+			}
+
+			T LoadField <T> (int index, object[] data)
+			{
+				if (data == null || data.Length <= index)
+					throw new ArgumentOutOfRangeException ("index");
+                
+				object o = data [index];
+				if (o == null)
+					return default (T);
+                
+				if (o.GetType () != typeof (T))
+					throw new InvalidOperationException (String.Format ("Field at index {0} is not a {1}", index, typeof (T)));
+                
+				return (T)o;
+			}
+		}
+		
+		void RunTest (string[] tests, object[] list)
+		{
+			var queue = new CacheItemPriorityQueue ();
+			var cacheItems = new List <TestCacheItem> ();
+			int index = 0;
+
+			while (index < list.Length)
+				cacheItems.Add (new TestCacheItem (ref index, list));
+
+			for (int i = 0; i < tests.Length; i++)
+				RunItem (new CacheItemPriorityQueueTestItem (tests [i]), queue, cacheItems, i);
+		}
+
+		void RunItem (CacheItemPriorityQueueTestItem item, CacheItemPriorityQueue queue, List <TestCacheItem> list, int testNum)
+		{
+			TestCacheItem ci;
+			string messagePrefix = String.Format ("{0}-{1:00000}-{2:00000}-", item.Operation, item.OperationCount, testNum);
+			
+			switch (item.Operation) {
+				case QueueOperation.Enqueue:
+					queue.Enqueue (list [item.ListIndex]);
+					Assert.AreEqual (item.QueueCount, queue.Count, messagePrefix + "1");
+					Assert.AreEqual (item.Guid, ((TestCacheItem)queue.Peek ()).Guid.ToString (), messagePrefix + "2");
+					break;
+					
+				case QueueOperation.Dequeue:
+					ci = (TestCacheItem)queue.Dequeue ();
+					if (item.IsNull)
+						Assert.IsNull (ci, messagePrefix + "1");
+					else {
+						Assert.IsNotNull (ci, messagePrefix + "2");
+						Assert.AreEqual (item.Guid, ci.Guid.ToString (), messagePrefix + "3");
+						Assert.AreEqual (item.IsDisabled, ci.Disabled, messagePrefix + "4");
+					}
+					Assert.AreEqual (item.QueueCount, queue.Count, messagePrefix + "5");
+					break;
+					
+				case QueueOperation.Disable:
+					ci = list [item.ListIndex];
+					if (item.IsNull)
+						Assert.IsNull (ci, messagePrefix + "1");
+					else {
+						Assert.IsNotNull (ci, messagePrefix + "2");
+						Assert.AreEqual (item.Guid, ci.Guid.ToString (), messagePrefix + "3");
+						Assert.AreEqual (item.IsDisabled, ci.Disabled, messagePrefix + "4");
+						ci.Disabled = item.Disable;
+					}
+					break;
+
+				case QueueOperation.Peek:
+					ci = (TestCacheItem)queue.Peek ();
+					if (item.IsNull)
+						Assert.IsNull (ci, messagePrefix + "1");
+					else {
+						Assert.IsNotNull (ci, messagePrefix + "2");
+						Assert.AreEqual (item.Guid, ci.Guid.ToString (), messagePrefix + "3");
+						Assert.AreEqual (item.IsDisabled, ci.Disabled, messagePrefix + "4");
+					}
+					Assert.AreEqual (item.QueueCount, queue.Count, messagePrefix + "5");
+					break;
+
+				case QueueOperation.QueueSize:
+					Assert.AreEqual (item.QueueCount, queue.Count, "Queue size after sequence");
+					break;
+					
+				default:
+					Assert.Fail ("Unknown QueueOperation: {0}", item.Operation);
+					break;
+			}
+		}
 	}
 }
diff --git a/mcs/class/System.Web/Test/System.Web.Caching/CacheItemPriorityQueueTestSupport.cs b/mcs/class/System.Web/Test/System.Web.Caching/CacheItemPriorityQueueTestSupport.cs
new file mode 100644
index 0000000..64e146a
--- /dev/null
+++ b/mcs/class/System.Web/Test/System.Web.Caching/CacheItemPriorityQueueTestSupport.cs
@@ -0,0 +1,103 @@
+// Authors:
+//      Marek Habersack <grendel at twistedcode.net>
+//
+// Copyright (C) 2010 Novell Inc. http://novell.com
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Web.Caching;
+
+namespace MonoTests.System.Web.Caching
+{
+	public enum QueueOperation
+	{
+		Enqueue,
+		Dequeue,
+		Disable,
+		Peek,
+		QueueSize
+	}
+
+	public sealed class CacheItemPriorityQueueTestItem
+	{
+		public int ListIndex;
+		public int QueueCount;
+		public QueueOperation Operation;
+		public bool IsDisabled;
+		public bool IsNull;
+		public bool Disable;
+		public int OperationCount;
+		public string Guid;
+
+		public CacheItemPriorityQueueTestItem ()
+		{}
+		
+		public CacheItemPriorityQueueTestItem (string serialized)
+		{
+			if (String.IsNullOrEmpty (serialized))
+				throw new ArgumentException ("serialized");
+
+			string[] parts = serialized.Split (';');
+			if (parts.Length != 8)
+				throw new InvalidOperationException ("Invalid serialized data.");
+
+			ListIndex = Int32.Parse (parts [0]);
+			QueueCount = Int32.Parse (parts [1]);
+
+			int i = Int32.Parse (parts [2]);
+			if (i < (int)QueueOperation.Enqueue || i > (int)QueueOperation.QueueSize)
+				throw new InvalidOperationException ("Invalid value for Operation in the serialized data.");
+			Operation = (QueueOperation)i;
+			IsDisabled = GetBool (parts [3]);
+			IsNull = GetBool (parts [4]);
+			Disable = GetBool (parts [5]);
+			OperationCount = Int32.Parse (parts [6]);
+			Guid = parts [7];
+			if (Guid.Length == 0)
+				Guid = null;
+		}
+
+		bool GetBool (string s)
+		{
+			if (s == "t")
+				return true;
+			if (s == "f")
+				return false;
+
+			throw new InvalidOperationException ("Invalid bool string in serialized data.");
+		}
+		
+		public string Serialize ()
+		{
+			return String.Format ("{0};{1};{2};{3};{4};{5};{6};{7}",
+					      ListIndex,
+					      QueueCount,
+					      (int)Operation,
+					      IsDisabled ? "t" : "f",
+					      IsNull ? "t" : "f",
+					      Disable ? "t" : "f",
+					      OperationCount,
+					      Guid);
+		}
+	}
+}
\ No newline at end of file
diff --git a/mcs/class/System.Web/Test/System.Web.Caching/CacheItemPriorityQueueTest_generated.cs b/mcs/class/System.Web/Test/System.Web.Caching/CacheItemPriorityQueueTest_generated.cs
index aa824dd..8a38591 100644
--- a/mcs/class/System.Web/Test/System.Web.Caching/CacheItemPriorityQueueTest_generated.cs
+++ b/mcs/class/System.Web/Test/System.Web.Caching/CacheItemPriorityQueueTest_generated.cs
@@ -1,6 +1,10 @@
 //
 // This source was autogenerated - do not modify it, changes may not be preserved
 //
+// Generated on: 1/5/2011 9:52:07 AM
+//
+// The test generator can be found in the ../tools/CachePQTestGenerator directory
+//
 #if !TARGET_DOTNET
 using System;
 using System.Collections.Generic;
@@ -13,1203 +17,38085 @@ namespace MonoTests.System.Web.Caching
 {
 	public partial class CacheItemPriorityQueueTest
 	{
-		[Test (Description="Generated from sequence file cache_pq_sequence_2010-01-29_10:24:08.seq")]
-		public void Sequence_0000 ()
-		{
-			var list = new List <CacheItem> {
-				new CacheItem {Key = "PartialCachingControl\nGUID: 0a543377-1bcc-4ec5-9096-616fa29ec3f5\n", AbsoluteExpiration = DateTime.Parse ("1/29/2010 11:23:38 AM"), SlidingExpiration = TimeSpan.Parse ("00:00:00"), Priority = CacheItemPriority.Normal, LastChange = DateTime.Parse ("1/29/2010 11:23:33 AM"), ExpiresAt = 634003610181191660, Disabled = false, Guid = new Guid ("b50f84e2-b96b-4183-ac6a-afeec88a258d")}, 
-				new CacheItem {Key = "@@@InProc at 074DE5C88B2981727366B98C", AbsoluteExpiration = DateTime.Parse ("1/29/2010 11:43:33 AM"), SlidingExpiration = TimeSpan.Parse ("00:20:00"), Priority = CacheItemPriority.AboveNormal, LastChange = DateTime.Parse ("1/29/2010 11:23:33 AM"), ExpiresAt = 634003622131234770, Disabled = false, Guid = new Guid ("78f08aef-31b7-49e6-8ba9-2d7b09f5340e")}, 
-				new CacheItem {Key = "@@@InProc at 074DE5C88B2981727366B98C", AbsoluteExpiration = DateTime.Parse ("1/29/2010 11:43:33 AM"), SlidingExpiration = TimeSpan.Parse ("00:20:00"), Priority = CacheItemPriority.AboveNormal, LastChange = DateTime.Parse ("1/29/2010 11:23:33 AM"), ExpiresAt = 634003622131252350, Disabled = false, Guid = new Guid ("ecd90b49-bb12-4524-818e-977356f8b9d2")}, 
-				new CacheItem {Key = "@InMemoryOCP_vbk/default.aspxGETWQFH", AbsoluteExpiration = DateTime.Parse ("1/29/2010 11:23:41 AM"), SlidingExpiration = TimeSpan.Parse ("00:00:00"), Priority = CacheItemPriority.Normal, LastChange = DateTime.Parse ("1/29/2010 11:23:33 AM"), ExpiresAt = 634003610216655680, Disabled = false, Guid = new Guid ("38e7f821-d638-4f1d-89bd-41db556eb37a")}, 
-				new CacheItem {Key = "@prefix at _vbk/default.aspxGETWQFH", AbsoluteExpiration = DateTime.Parse ("1/29/2010 11:23:41 AM"), SlidingExpiration = TimeSpan.Parse ("00:00:00"), Priority = CacheItemPriority.Normal, LastChange = DateTime.Parse ("1/29/2010 11:23:33 AM"), ExpiresAt = 634003610216655680, Disabled = false, Guid = new Guid ("6e723bac-5e11-4cb3-933f-39923948371c")}, 
-				new CacheItem {Key = "PartialCachingControl\nGUID: 0a543377-1bcc-4ec5-9096-616fa29ec3f5\n", AbsoluteExpiration = DateTime.Parse ("1/29/2010 11:23:51 AM"), SlidingExpiration = TimeSpan.Parse ("00:00:00"), Priority = CacheItemPriority.Normal, LastChange = DateTime.Parse ("1/29/2010 11:23:46 AM"), ExpiresAt = 634003610312287880, Disabled = false, Guid = new Guid ("93db96c7-eb5b-43b3-8524-e7d90cd159d7")}, 
-				new CacheItem {Key = "@@@InProc at 074DE5C88B2981727366B98C", AbsoluteExpiration = DateTime.Parse ("1/29/2010 11:43:46 AM"), SlidingExpiration = TimeSpan.Parse ("00:20:00"), Priority = CacheItemPriority.AboveNormal, LastChange = DateTime.Parse ("1/29/2010 11:23:46 AM"), ExpiresAt = 634003622262288710, Disabled = false, Guid = new Guid ("fc310ed6-2027-4d16-9343-a3e4b3487bd0")}, 
-				new CacheItem {Key = "@@@InProc at 074DE5C88B2981727366B98C", AbsoluteExpiration = DateTime.Parse ("1/29/2010 11:43:46 AM"), SlidingExpiration = TimeSpan.Parse ("00:20:00"), Priority = CacheItemPriority.AboveNormal, LastChange = DateTime.Parse ("1/29/2010 11:23:46 AM"), ExpiresAt = 634003622262288910, Disabled = false, Guid = new Guid ("de47322e-63c8-474f-8d2f-fb6a591075df")}, 
-				new CacheItem {Key = "@InMemoryOCP_vbk/default.aspxGETWQFH", AbsoluteExpiration = DateTime.Parse ("1/29/2010 11:23:56 AM"), SlidingExpiration = TimeSpan.Parse ("00:00:00"), Priority = CacheItemPriority.Normal, LastChange = DateTime.Parse ("1/29/2010 11:23:46 AM"), ExpiresAt = 634003610362271610, Disabled = false, Guid = new Guid ("f003a7ba-af48-4551-a206-1184fc83e621")}, 
-				new CacheItem {Key = "@prefix at _vbk/default.aspxGETWQFH", AbsoluteExpiration = DateTime.Parse ("1/29/2010 11:23:56 AM"), SlidingExpiration = TimeSpan.Parse ("00:00:00"), Priority = CacheItemPriority.Normal, LastChange = DateTime.Parse ("1/29/2010 11:23:46 AM"), ExpiresAt = 634003610362271610, Disabled = false, Guid = new Guid ("5777ab80-078b-4f9a-81fb-f7872aceba99")}, 
-			};
-			var queue = new CacheItemPriorityQueue ();
-			CacheItem item;
-
-			queue.Enqueue (list [0]);
-			Assert.AreEqual (1, queue.Count, "Enqueue-0000-1");
-			Assert.AreEqual ("b50f84e2-b96b-4183-ac6a-afeec88a258d", queue.Peek ().Guid.ToString(), "Enqueue-0000-2");
-
-			queue.Enqueue (list [1]);
-			Assert.AreEqual (2, queue.Count, "Enqueue-0001-1");
-			Assert.AreEqual ("b50f84e2-b96b-4183-ac6a-afeec88a258d", queue.Peek ().Guid.ToString(), "Enqueue-0001-2");
-
-			item = list [1];
-			Assert.IsNotNull (item, "Disable-0000-1");
-			Assert.AreEqual ("78f08aef-31b7-49e6-8ba9-2d7b09f5340e", item.Guid.ToString(), "Disable-0000-3");
-			Assert.AreEqual (false, item.Disabled, "Disable-0000-3");
-			item.Disabled = true;
-
-			queue.Enqueue (list [2]);
-			Assert.AreEqual (3, queue.Count, "Enqueue-0002-1");
-			Assert.AreEqual ("b50f84e2-b96b-4183-ac6a-afeec88a258d", queue.Peek ().Guid.ToString(), "Enqueue-0002-2");
-
-			queue.Enqueue (list [3]);
-			Assert.AreEqual (4, queue.Count, "Enqueue-0003-1");
-			Assert.AreEqual ("b50f84e2-b96b-4183-ac6a-afeec88a258d", queue.Peek ().Guid.ToString(), "Enqueue-0003-2");
-
-			queue.Enqueue (list [4]);
-			Assert.AreEqual (5, queue.Count, "Enqueue-0004-1");
-			Assert.AreEqual ("b50f84e2-b96b-4183-ac6a-afeec88a258d", queue.Peek ().Guid.ToString(), "Enqueue-0004-2");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0000-1");
-			Assert.AreEqual (4, queue.Count, "Dequeue-0000-2");
-			Assert.AreEqual ("b50f84e2-b96b-4183-ac6a-afeec88a258d", item.Guid.ToString (), "Dequeue-0000-3");
-			Assert.AreEqual (false, item.Disabled, "Dequeue-0000-4");
-
-			item = list [0];
-			Assert.IsNotNull (item, "Disable-0001-1");
-			Assert.AreEqual ("b50f84e2-b96b-4183-ac6a-afeec88a258d", item.Guid.ToString(), "Disable-0001-3");
-			Assert.AreEqual (false, item.Disabled, "Disable-0001-3");
-			item.Disabled = true;
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0001-1");
-			Assert.AreEqual (3, queue.Count, "Dequeue-0001-2");
-			Assert.AreEqual ("6e723bac-5e11-4cb3-933f-39923948371c", item.Guid.ToString (), "Dequeue-0001-3");
-			Assert.AreEqual (false, item.Disabled, "Dequeue-0001-4");
-
-			item = list [3];
-			Assert.IsNotNull (item, "Disable-0002-1");
-			Assert.AreEqual ("38e7f821-d638-4f1d-89bd-41db556eb37a", item.Guid.ToString(), "Disable-0002-3");
-			Assert.AreEqual (false, item.Disabled, "Disable-0002-3");
-			item.Disabled = true;
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0002-1");
-			Assert.AreEqual (2, queue.Count, "Dequeue-0002-2");
-			Assert.AreEqual ("38e7f821-d638-4f1d-89bd-41db556eb37a", item.Guid.ToString (), "Dequeue-0002-3");
-			Assert.AreEqual (true, item.Disabled, "Dequeue-0002-4");
-
-			item = list [4];
-			Assert.IsNotNull (item, "Disable-0003-1");
-			Assert.AreEqual ("6e723bac-5e11-4cb3-933f-39923948371c", item.Guid.ToString(), "Disable-0003-3");
-			Assert.AreEqual (false, item.Disabled, "Disable-0003-3");
-			item.Disabled = true;
-
-			queue.Enqueue (list [5]);
-			Assert.AreEqual (3, queue.Count, "Enqueue-0005-1");
-			Assert.AreEqual ("93db96c7-eb5b-43b3-8524-e7d90cd159d7", queue.Peek ().Guid.ToString(), "Enqueue-0005-2");
-
-			item = list [2];
-			Assert.IsNotNull (item, "Disable-0004-1");
-			Assert.AreEqual ("ecd90b49-bb12-4524-818e-977356f8b9d2", item.Guid.ToString(), "Disable-0004-3");
-			Assert.AreEqual (false, item.Disabled, "Disable-0004-3");
-			item.Disabled = true;
-
-			queue.Enqueue (list [6]);
-			Assert.AreEqual (4, queue.Count, "Enqueue-0006-1");
-			Assert.AreEqual ("93db96c7-eb5b-43b3-8524-e7d90cd159d7", queue.Peek ().Guid.ToString(), "Enqueue-0006-2");
-
-			item = list [6];
-			Assert.IsNotNull (item, "Disable-0005-1");
-			Assert.AreEqual ("fc310ed6-2027-4d16-9343-a3e4b3487bd0", item.Guid.ToString(), "Disable-0005-3");
-			Assert.AreEqual (false, item.Disabled, "Disable-0005-3");
-			item.Disabled = true;
-
-			queue.Enqueue (list [7]);
-			Assert.AreEqual (5, queue.Count, "Enqueue-0007-1");
-			Assert.AreEqual ("93db96c7-eb5b-43b3-8524-e7d90cd159d7", queue.Peek ().Guid.ToString(), "Enqueue-0007-2");
-
-			queue.Enqueue (list [8]);
-			Assert.AreEqual (6, queue.Count, "Enqueue-0008-1");
-			Assert.AreEqual ("93db96c7-eb5b-43b3-8524-e7d90cd159d7", queue.Peek ().Guid.ToString(), "Enqueue-0008-2");
-
-			queue.Enqueue (list [9]);
-			Assert.AreEqual (7, queue.Count, "Enqueue-0009-1");
-			Assert.AreEqual ("93db96c7-eb5b-43b3-8524-e7d90cd159d7", queue.Peek ().Guid.ToString(), "Enqueue-0009-2");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0003-1");
-			Assert.AreEqual (6, queue.Count, "Dequeue-0003-2");
-			Assert.AreEqual ("93db96c7-eb5b-43b3-8524-e7d90cd159d7", item.Guid.ToString (), "Dequeue-0003-3");
-			Assert.AreEqual (false, item.Disabled, "Dequeue-0003-4");
-
-			item = list [5];
-			Assert.IsNotNull (item, "Disable-0006-1");
-			Assert.AreEqual ("93db96c7-eb5b-43b3-8524-e7d90cd159d7", item.Guid.ToString(), "Disable-0006-3");
-			Assert.AreEqual (false, item.Disabled, "Disable-0006-3");
-			item.Disabled = true;
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0004-1");
-			Assert.AreEqual (5, queue.Count, "Dequeue-0004-2");
-			Assert.AreEqual ("5777ab80-078b-4f9a-81fb-f7872aceba99", item.Guid.ToString (), "Dequeue-0004-3");
-			Assert.AreEqual (false, item.Disabled, "Dequeue-0004-4");
-
-			item = list [8];
-			Assert.IsNotNull (item, "Disable-0007-1");
-			Assert.AreEqual ("f003a7ba-af48-4551-a206-1184fc83e621", item.Guid.ToString(), "Disable-0007-3");
-			Assert.AreEqual (false, item.Disabled, "Disable-0007-3");
-			item.Disabled = true;
+		// Each row contains TestCacheItem fields, in the following order:
+		// Key, AbsoluteExpiration, SlidingExpiration, Priority, LastChange, ExpiresAt, Disabled, Guid
+		object[] list_00000 = {
+			"PartialCachingControl\nGUID: 0a543377-1bcc-4ec5-9096-616fa29ec3f5\n", "1/29/2010 11:23:38 AM", "00:00:00", CacheItemPriority.Normal, "1/29/2010 11:23:33 AM", 634003610181191660, false, "b50f84e2-b96b-4183-ac6a-afeec88a258d",
+			"@@@InProc at 074DE5C88B2981727366B98C", "1/29/2010 11:43:33 AM", "00:20:00", CacheItemPriority.AboveNormal, "1/29/2010 11:23:33 AM", 634003622131234770, false, "78f08aef-31b7-49e6-8ba9-2d7b09f5340e",
+			"@@@InProc at 074DE5C88B2981727366B98C", "1/29/2010 11:43:33 AM", "00:20:00", CacheItemPriority.AboveNormal, "1/29/2010 11:23:33 AM", 634003622131252350, false, "ecd90b49-bb12-4524-818e-977356f8b9d2",
+			"@InMemoryOCP_vbk/default.aspxGETWQFH", "1/29/2010 11:23:41 AM", "00:00:00", CacheItemPriority.Normal, "1/29/2010 11:23:33 AM", 634003610216655680, false, "38e7f821-d638-4f1d-89bd-41db556eb37a",
+			"@prefix at _vbk/default.aspxGETWQFH", "1/29/2010 11:23:41 AM", "00:00:00", CacheItemPriority.Normal, "1/29/2010 11:23:33 AM", 634003610216655680, false, "6e723bac-5e11-4cb3-933f-39923948371c",
+			"PartialCachingControl\nGUID: 0a543377-1bcc-4ec5-9096-616fa29ec3f5\n", "1/29/2010 11:23:51 AM", "00:00:00", CacheItemPriority.Normal, "1/29/2010 11:23:46 AM", 634003610312287880, false, "93db96c7-eb5b-43b3-8524-e7d90cd159d7",
+			"@@@InProc at 074DE5C88B2981727366B98C", "1/29/2010 11:43:46 AM", "00:20:00", CacheItemPriority.AboveNormal, "1/29/2010 11:23:46 AM", 634003622262288710, false, "fc310ed6-2027-4d16-9343-a3e4b3487bd0",
+			"@@@InProc at 074DE5C88B2981727366B98C", "1/29/2010 11:43:46 AM", "00:20:00", CacheItemPriority.AboveNormal, "1/29/2010 11:23:46 AM", 634003622262288910, false, "de47322e-63c8-474f-8d2f-fb6a591075df",
+			"@InMemoryOCP_vbk/default.aspxGETWQFH", "1/29/2010 11:23:56 AM", "00:00:00", CacheItemPriority.Normal, "1/29/2010 11:23:46 AM", 634003610362271610, false, "f003a7ba-af48-4551-a206-1184fc83e621",
+			"@prefix at _vbk/default.aspxGETWQFH", "1/29/2010 11:23:56 AM", "00:00:00", CacheItemPriority.Normal, "1/29/2010 11:23:46 AM", 634003610362271610, false, "5777ab80-078b-4f9a-81fb-f7872aceba99",
+		};
 
-			Assert.AreEqual (5, queue.Count, "Queue size after sequence");
+		 string[] tests_00000 = {
+			"0;1;0;f;f;f;0;b50f84e2-b96b-4183-ac6a-afeec88a258d",
+			"1;2;0;f;f;f;1;b50f84e2-b96b-4183-ac6a-afeec88a258d",
+			"1;2;2;f;f;t;0;78f08aef-31b7-49e6-8ba9-2d7b09f5340e",
+			"2;3;0;f;f;f;2;b50f84e2-b96b-4183-ac6a-afeec88a258d",
+			"3;4;0;f;f;f;3;b50f84e2-b96b-4183-ac6a-afeec88a258d",
+			"4;5;0;f;f;f;4;b50f84e2-b96b-4183-ac6a-afeec88a258d",
+			"0;4;1;f;f;f;0;b50f84e2-b96b-4183-ac6a-afeec88a258d",
+			"0;4;2;f;f;t;0;b50f84e2-b96b-4183-ac6a-afeec88a258d",
+			"0;3;1;f;f;f;1;6e723bac-5e11-4cb3-933f-39923948371c",
+			"3;3;2;f;f;t;0;38e7f821-d638-4f1d-89bd-41db556eb37a",
+			"0;2;1;t;f;f;2;38e7f821-d638-4f1d-89bd-41db556eb37a",
+			"4;2;2;f;f;t;0;6e723bac-5e11-4cb3-933f-39923948371c",
+			"5;3;0;f;f;f;5;93db96c7-eb5b-43b3-8524-e7d90cd159d7",
+			"2;3;2;f;f;t;0;ecd90b49-bb12-4524-818e-977356f8b9d2",
+			"6;4;0;f;f;f;6;93db96c7-eb5b-43b3-8524-e7d90cd159d7",
+			"6;4;2;f;f;t;0;fc310ed6-2027-4d16-9343-a3e4b3487bd0",
+			"7;5;0;f;f;f;7;93db96c7-eb5b-43b3-8524-e7d90cd159d7",
+			"8;6;0;f;f;f;8;93db96c7-eb5b-43b3-8524-e7d90cd159d7",
+			"9;7;0;f;f;f;9;93db96c7-eb5b-43b3-8524-e7d90cd159d7",
+			"0;6;1;f;f;f;3;93db96c7-eb5b-43b3-8524-e7d90cd159d7",
+			"5;6;2;f;f;t;0;93db96c7-eb5b-43b3-8524-e7d90cd159d7",
+			"0;5;1;f;f;f;4;5777ab80-078b-4f9a-81fb-f7872aceba99",
+			"8;5;2;f;f;t;0;f003a7ba-af48-4551-a206-1184fc83e621",
+			"0;5;4;f;f;f;0;",
+			"0;4;1;t;f;f;5;f003a7ba-af48-4551-a206-1184fc83e621",
+			"0;3;1;t;f;f;6;78f08aef-31b7-49e6-8ba9-2d7b09f5340e",
+			"0;2;1;t;f;f;7;ecd90b49-bb12-4524-818e-977356f8b9d2",
+			"0;1;1;t;f;f;8;fc310ed6-2027-4d16-9343-a3e4b3487bd0",
+			"0;0;1;f;f;f;9;de47322e-63c8-474f-8d2f-fb6a591075df",
+		};
 
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0005-1");
-			Assert.AreEqual (4, queue.Count, "Dequeue-0005-2");
-			Assert.AreEqual ("f003a7ba-af48-4551-a206-1184fc83e621", item.Guid.ToString (), "Dequeue-0005-3");
-			Assert.AreEqual (true, item.Disabled, "Dequeue-0005-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0006-1");
-			Assert.AreEqual (3, queue.Count, "Dequeue-0006-2");
-			Assert.AreEqual ("78f08aef-31b7-49e6-8ba9-2d7b09f5340e", item.Guid.ToString (), "Dequeue-0006-3");
-			Assert.AreEqual (true, item.Disabled, "Dequeue-0006-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0007-1");
-			Assert.AreEqual (2, queue.Count, "Dequeue-0007-2");
-			Assert.AreEqual ("ecd90b49-bb12-4524-818e-977356f8b9d2", item.Guid.ToString (), "Dequeue-0007-3");
-			Assert.AreEqual (true, item.Disabled, "Dequeue-0007-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0008-1");
-			Assert.AreEqual (1, queue.Count, "Dequeue-0008-2");
-			Assert.AreEqual ("fc310ed6-2027-4d16-9343-a3e4b3487bd0", item.Guid.ToString (), "Dequeue-0008-3");
-			Assert.AreEqual (true, item.Disabled, "Dequeue-0008-4");
+		[Test (Description="Generated from sequence file cache_pq_sequence_2010-01-29_10-24-08.seq")]
+		public void Sequence_0000 ()
+		{
+			RunTest (tests_00000, list_00000);
+		}
 
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0009-1");
-			Assert.AreEqual (0, queue.Count, "Dequeue-0009-2");
-			Assert.AreEqual ("de47322e-63c8-474f-8d2f-fb6a591075df", item.Guid.ToString (), "Dequeue-0009-3");
-			Assert.AreEqual (false, item.Disabled, "Dequeue-0009-4");
+		// Each row contains TestCacheItem fields, in the following order:
+		// Key, AbsoluteExpiration, SlidingExpiration, Priority, LastChange, ExpiresAt, Disabled, Guid
+		object[] list_00001 = {
+			"PartialCachingControl\nGUID: 0a543377-1bcc-4ec5-9096-616fa29ec3f5\n", "1/29/2010 11:23:38 AM", "00:00:00", CacheItemPriority.Normal, "1/29/2010 11:23:33 AM", 634003610181191660, false, "b50f84e2-b96b-4183-ac6a-afeec88a258d",
+			"@@@InProc at 074DE5C88B2981727366B98C", "1/29/2010 11:43:33 AM", "00:20:00", CacheItemPriority.AboveNormal, "1/29/2010 11:23:33 AM", 634003622131234770, false, "78f08aef-31b7-49e6-8ba9-2d7b09f5340e",
+			"@@@InProc at 074DE5C88B2981727366B98C", "1/29/2010 11:43:33 AM", "00:20:00", CacheItemPriority.AboveNormal, "1/29/2010 11:23:33 AM", 634003622131252350, false, "ecd90b49-bb12-4524-818e-977356f8b9d2",
+			"@InMemoryOCP_vbk/default.aspxGETWQFH", "1/29/2010 11:23:41 AM", "00:00:00", CacheItemPriority.Normal, "1/29/2010 11:23:33 AM", 634003610216655680, false, "38e7f821-d638-4f1d-89bd-41db556eb37a",
+			"@prefix at _vbk/default.aspxGETWQFH", "1/29/2010 11:23:41 AM", "00:00:00", CacheItemPriority.Normal, "1/29/2010 11:23:33 AM", 634003610216655680, false, "6e723bac-5e11-4cb3-933f-39923948371c",
+			"PartialCachingControl\nGUID: 0a543377-1bcc-4ec5-9096-616fa29ec3f5\n", "1/29/2010 11:23:51 AM", "00:00:00", CacheItemPriority.Normal, "1/29/2010 11:23:46 AM", 634003610312287880, false, "93db96c7-eb5b-43b3-8524-e7d90cd159d7",
+			"@@@InProc at 074DE5C88B2981727366B98C", "1/29/2010 11:43:46 AM", "00:20:00", CacheItemPriority.AboveNormal, "1/29/2010 11:23:46 AM", 634003622262288710, false, "fc310ed6-2027-4d16-9343-a3e4b3487bd0",
+			"@@@InProc at 074DE5C88B2981727366B98C", "1/29/2010 11:43:46 AM", "00:20:00", CacheItemPriority.AboveNormal, "1/29/2010 11:23:46 AM", 634003622262288910, false, "de47322e-63c8-474f-8d2f-fb6a591075df",
+			"@InMemoryOCP_vbk/default.aspxGETWQFH", "1/29/2010 11:23:56 AM", "00:00:00", CacheItemPriority.Normal, "1/29/2010 11:23:46 AM", 634003610362271610, false, "f003a7ba-af48-4551-a206-1184fc83e621",
+			"@prefix at _vbk/default.aspxGETWQFH", "1/29/2010 11:23:56 AM", "00:00:00", CacheItemPriority.Normal, "1/29/2010 11:23:46 AM", 634003610362271610, false, "5777ab80-078b-4f9a-81fb-f7872aceba99",
+		};
 
-		}
+		 string[] tests_00001 = {
+			"0;1;0;f;f;f;0;b50f84e2-b96b-4183-ac6a-afeec88a258d",
+			"1;2;0;f;f;f;1;b50f84e2-b96b-4183-ac6a-afeec88a258d",
+			"2;3;0;f;f;f;2;b50f84e2-b96b-4183-ac6a-afeec88a258d",
+			"3;4;0;f;f;f;3;b50f84e2-b96b-4183-ac6a-afeec88a258d",
+			"4;5;0;f;f;f;4;b50f84e2-b96b-4183-ac6a-afeec88a258d",
+			"5;6;0;f;f;f;5;b50f84e2-b96b-4183-ac6a-afeec88a258d",
+			"6;7;0;f;f;f;6;b50f84e2-b96b-4183-ac6a-afeec88a258d",
+			"7;8;0;f;f;f;7;b50f84e2-b96b-4183-ac6a-afeec88a258d",
+			"8;9;0;f;f;f;8;b50f84e2-b96b-4183-ac6a-afeec88a258d",
+			"9;10;0;f;f;f;9;b50f84e2-b96b-4183-ac6a-afeec88a258d",
+			"0;10;4;f;f;f;0;",
+			"0;9;1;f;f;f;0;b50f84e2-b96b-4183-ac6a-afeec88a258d",
+			"0;8;1;f;f;f;1;38e7f821-d638-4f1d-89bd-41db556eb37a",
+			"0;7;1;f;f;f;2;6e723bac-5e11-4cb3-933f-39923948371c",
+			"0;6;1;f;f;f;3;93db96c7-eb5b-43b3-8524-e7d90cd159d7",
+			"0;5;1;f;f;f;4;f003a7ba-af48-4551-a206-1184fc83e621",
+			"0;4;1;f;f;f;5;5777ab80-078b-4f9a-81fb-f7872aceba99",
+			"0;3;1;f;f;f;6;78f08aef-31b7-49e6-8ba9-2d7b09f5340e",
+			"0;2;1;f;f;f;7;ecd90b49-bb12-4524-818e-977356f8b9d2",
+			"0;1;1;f;f;f;8;fc310ed6-2027-4d16-9343-a3e4b3487bd0",
+			"0;0;1;f;f;f;9;de47322e-63c8-474f-8d2f-fb6a591075df",
+		};
 
-		[Test (Description="Generated from sequence file cache_pq_sequence_2010-01-29_10:24:08_001.seq")]
+		[Test (Description="Generated from sequence file cache_pq_sequence_2010-01-29_10-24-08_001.seq")]
 		public void Sequence_0001 ()
 		{
-			var list = new List <CacheItem> {
-				new CacheItem {Key = "PartialCachingControl\nGUID: 0a543377-1bcc-4ec5-9096-616fa29ec3f5\n", AbsoluteExpiration = DateTime.Parse ("1/29/2010 11:23:38 AM"), SlidingExpiration = TimeSpan.Parse ("00:00:00"), Priority = CacheItemPriority.Normal, LastChange = DateTime.Parse ("1/29/2010 11:23:33 AM"), ExpiresAt = 634003610181191660, Disabled = false, Guid = new Guid ("b50f84e2-b96b-4183-ac6a-afeec88a258d")}, 
-				new CacheItem {Key = "@@@InProc at 074DE5C88B2981727366B98C", AbsoluteExpiration = DateTime.Parse ("1/29/2010 11:43:33 AM"), SlidingExpiration = TimeSpan.Parse ("00:20:00"), Priority = CacheItemPriority.AboveNormal, LastChange = DateTime.Parse ("1/29/2010 11:23:33 AM"), ExpiresAt = 634003622131234770, Disabled = false, Guid = new Guid ("78f08aef-31b7-49e6-8ba9-2d7b09f5340e")}, 
-				new CacheItem {Key = "@@@InProc at 074DE5C88B2981727366B98C", AbsoluteExpiration = DateTime.Parse ("1/29/2010 11:43:33 AM"), SlidingExpiration = TimeSpan.Parse ("00:20:00"), Priority = CacheItemPriority.AboveNormal, LastChange = DateTime.Parse ("1/29/2010 11:23:33 AM"), ExpiresAt = 634003622131252350, Disabled = false, Guid = new Guid ("ecd90b49-bb12-4524-818e-977356f8b9d2")}, 
-				new CacheItem {Key = "@InMemoryOCP_vbk/default.aspxGETWQFH", AbsoluteExpiration = DateTime.Parse ("1/29/2010 11:23:41 AM"), SlidingExpiration = TimeSpan.Parse ("00:00:00"), Priority = CacheItemPriority.Normal, LastChange = DateTime.Parse ("1/29/2010 11:23:33 AM"), ExpiresAt = 634003610216655680, Disabled = false, Guid = new Guid ("38e7f821-d638-4f1d-89bd-41db556eb37a")}, 
-				new CacheItem {Key = "@prefix at _vbk/default.aspxGETWQFH", AbsoluteExpiration = DateTime.Parse ("1/29/2010 11:23:41 AM"), SlidingExpiration = TimeSpan.Parse ("00:00:00"), Priority = CacheItemPriority.Normal, LastChange = DateTime.Parse ("1/29/2010 11:23:33 AM"), ExpiresAt = 634003610216655680, Disabled = false, Guid = new Guid ("6e723bac-5e11-4cb3-933f-39923948371c")}, 
-				new CacheItem {Key = "PartialCachingControl\nGUID: 0a543377-1bcc-4ec5-9096-616fa29ec3f5\n", AbsoluteExpiration = DateTime.Parse ("1/29/2010 11:23:51 AM"), SlidingExpiration = TimeSpan.Parse ("00:00:00"), Priority = CacheItemPriority.Normal, LastChange = DateTime.Parse ("1/29/2010 11:23:46 AM"), ExpiresAt = 634003610312287880, Disabled = false, Guid = new Guid ("93db96c7-eb5b-43b3-8524-e7d90cd159d7")}, 
-				new CacheItem {Key = "@@@InProc at 074DE5C88B2981727366B98C", AbsoluteExpiration = DateTime.Parse ("1/29/2010 11:43:46 AM"), SlidingExpiration = TimeSpan.Parse ("00:20:00"), Priority = CacheItemPriority.AboveNormal, LastChange = DateTime.Parse ("1/29/2010 11:23:46 AM"), ExpiresAt = 634003622262288710, Disabled = false, Guid = new Guid ("fc310ed6-2027-4d16-9343-a3e4b3487bd0")}, 
-				new CacheItem {Key = "@@@InProc at 074DE5C88B2981727366B98C", AbsoluteExpiration = DateTime.Parse ("1/29/2010 11:43:46 AM"), SlidingExpiration = TimeSpan.Parse ("00:20:00"), Priority = CacheItemPriority.AboveNormal, LastChange = DateTime.Parse ("1/29/2010 11:23:46 AM"), ExpiresAt = 634003622262288910, Disabled = false, Guid = new Guid ("de47322e-63c8-474f-8d2f-fb6a591075df")}, 
-				new CacheItem {Key = "@InMemoryOCP_vbk/default.aspxGETWQFH", AbsoluteExpiration = DateTime.Parse ("1/29/2010 11:23:56 AM"), SlidingExpiration = TimeSpan.Parse ("00:00:00"), Priority = CacheItemPriority.Normal, LastChange = DateTime.Parse ("1/29/2010 11:23:46 AM"), ExpiresAt = 634003610362271610, Disabled = false, Guid = new Guid ("f003a7ba-af48-4551-a206-1184fc83e621")}, 
-				new CacheItem {Key = "@prefix at _vbk/default.aspxGETWQFH", AbsoluteExpiration = DateTime.Parse ("1/29/2010 11:23:56 AM"), SlidingExpiration = TimeSpan.Parse ("00:00:00"), Priority = CacheItemPriority.Normal, LastChange = DateTime.Parse ("1/29/2010 11:23:46 AM"), ExpiresAt = 634003610362271610, Disabled = false, Guid = new Guid ("5777ab80-078b-4f9a-81fb-f7872aceba99")}, 
-			};
-			var queue = new CacheItemPriorityQueue ();
-			CacheItem item;
-
-			queue.Enqueue (list [0]);
-			Assert.AreEqual (1, queue.Count, "Enqueue-0000-1");
-			Assert.AreEqual ("b50f84e2-b96b-4183-ac6a-afeec88a258d", queue.Peek ().Guid.ToString(), "Enqueue-0000-2");
-
-			queue.Enqueue (list [1]);
-			Assert.AreEqual (2, queue.Count, "Enqueue-0001-1");
-			Assert.AreEqual ("b50f84e2-b96b-4183-ac6a-afeec88a258d", queue.Peek ().Guid.ToString(), "Enqueue-0001-2");
-
-			queue.Enqueue (list [2]);
-			Assert.AreEqual (3, queue.Count, "Enqueue-0002-1");
-			Assert.AreEqual ("b50f84e2-b96b-4183-ac6a-afeec88a258d", queue.Peek ().Guid.ToString(), "Enqueue-0002-2");
-
-			queue.Enqueue (list [3]);
-			Assert.AreEqual (4, queue.Count, "Enqueue-0003-1");
-			Assert.AreEqual ("b50f84e2-b96b-4183-ac6a-afeec88a258d", queue.Peek ().Guid.ToString(), "Enqueue-0003-2");
-
-			queue.Enqueue (list [4]);
-			Assert.AreEqual (5, queue.Count, "Enqueue-0004-1");
-			Assert.AreEqual ("b50f84e2-b96b-4183-ac6a-afeec88a258d", queue.Peek ().Guid.ToString(), "Enqueue-0004-2");
-
-			queue.Enqueue (list [5]);
-			Assert.AreEqual (6, queue.Count, "Enqueue-0005-1");
-			Assert.AreEqual ("b50f84e2-b96b-4183-ac6a-afeec88a258d", queue.Peek ().Guid.ToString(), "Enqueue-0005-2");
-
-			queue.Enqueue (list [6]);
-			Assert.AreEqual (7, queue.Count, "Enqueue-0006-1");
-			Assert.AreEqual ("b50f84e2-b96b-4183-ac6a-afeec88a258d", queue.Peek ().Guid.ToString(), "Enqueue-0006-2");
-
-			queue.Enqueue (list [7]);
-			Assert.AreEqual (8, queue.Count, "Enqueue-0007-1");
-			Assert.AreEqual ("b50f84e2-b96b-4183-ac6a-afeec88a258d", queue.Peek ().Guid.ToString(), "Enqueue-0007-2");
-
-			queue.Enqueue (list [8]);
-			Assert.AreEqual (9, queue.Count, "Enqueue-0008-1");
-			Assert.AreEqual ("b50f84e2-b96b-4183-ac6a-afeec88a258d", queue.Peek ().Guid.ToString(), "Enqueue-0008-2");
-
-			queue.Enqueue (list [9]);
-			Assert.AreEqual (10, queue.Count, "Enqueue-0009-1");
-			Assert.AreEqual ("b50f84e2-b96b-4183-ac6a-afeec88a258d", queue.Peek ().Guid.ToString(), "Enqueue-0009-2");
-
-			Assert.AreEqual (10, queue.Count, "Queue size after sequence");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0000-1");
-			Assert.AreEqual (9, queue.Count, "Dequeue-0000-2");
-			Assert.AreEqual ("b50f84e2-b96b-4183-ac6a-afeec88a258d", item.Guid.ToString (), "Dequeue-0000-3");
-			Assert.AreEqual (false, item.Disabled, "Dequeue-0000-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0001-1");
-			Assert.AreEqual (8, queue.Count, "Dequeue-0001-2");
-			Assert.AreEqual ("38e7f821-d638-4f1d-89bd-41db556eb37a", item.Guid.ToString (), "Dequeue-0001-3");
-			Assert.AreEqual (false, item.Disabled, "Dequeue-0001-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0002-1");
-			Assert.AreEqual (7, queue.Count, "Dequeue-0002-2");
-			Assert.AreEqual ("6e723bac-5e11-4cb3-933f-39923948371c", item.Guid.ToString (), "Dequeue-0002-3");
-			Assert.AreEqual (false, item.Disabled, "Dequeue-0002-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0003-1");
-			Assert.AreEqual (6, queue.Count, "Dequeue-0003-2");
-			Assert.AreEqual ("93db96c7-eb5b-43b3-8524-e7d90cd159d7", item.Guid.ToString (), "Dequeue-0003-3");
-			Assert.AreEqual (false, item.Disabled, "Dequeue-0003-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0004-1");
-			Assert.AreEqual (5, queue.Count, "Dequeue-0004-2");
-			Assert.AreEqual ("f003a7ba-af48-4551-a206-1184fc83e621", item.Guid.ToString (), "Dequeue-0004-3");
-			Assert.AreEqual (false, item.Disabled, "Dequeue-0004-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0005-1");
-			Assert.AreEqual (4, queue.Count, "Dequeue-0005-2");
-			Assert.AreEqual ("5777ab80-078b-4f9a-81fb-f7872aceba99", item.Guid.ToString (), "Dequeue-0005-3");
-			Assert.AreEqual (false, item.Disabled, "Dequeue-0005-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0006-1");
-			Assert.AreEqual (3, queue.Count, "Dequeue-0006-2");
-			Assert.AreEqual ("78f08aef-31b7-49e6-8ba9-2d7b09f5340e", item.Guid.ToString (), "Dequeue-0006-3");
-			Assert.AreEqual (false, item.Disabled, "Dequeue-0006-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0007-1");
-			Assert.AreEqual (2, queue.Count, "Dequeue-0007-2");
-			Assert.AreEqual ("ecd90b49-bb12-4524-818e-977356f8b9d2", item.Guid.ToString (), "Dequeue-0007-3");
-			Assert.AreEqual (false, item.Disabled, "Dequeue-0007-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0008-1");
-			Assert.AreEqual (1, queue.Count, "Dequeue-0008-2");
-			Assert.AreEqual ("fc310ed6-2027-4d16-9343-a3e4b3487bd0", item.Guid.ToString (), "Dequeue-0008-3");
-			Assert.AreEqual (false, item.Disabled, "Dequeue-0008-4");
+			RunTest (tests_00001, list_00001);
+		}
 
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0009-1");
-			Assert.AreEqual (0, queue.Count, "Dequeue-0009-2");
-			Assert.AreEqual ("de47322e-63c8-474f-8d2f-fb6a591075df", item.Guid.ToString (), "Dequeue-0009-3");
-			Assert.AreEqual (false, item.Disabled, "Dequeue-0009-4");
+		// Each row contains TestCacheItem fields, in the following order:
+		// Key, AbsoluteExpiration, SlidingExpiration, Priority, LastChange, ExpiresAt, Disabled, Guid
+		object[] list_00002 = {
+			"PartialCachingControl\nGUID: 0a543377-1bcc-4ec5-9096-616fa29ec3f5\n", "1/29/2010 11:23:38 AM", "00:00:00", CacheItemPriority.Normal, "1/29/2010 11:23:33 AM", 634003610181191660, false, "b50f84e2-b96b-4183-ac6a-afeec88a258d",
+			"@@@InProc at 074DE5C88B2981727366B98C", "1/29/2010 11:43:33 AM", "00:20:00", CacheItemPriority.AboveNormal, "1/29/2010 11:23:33 AM", 634003622131234770, false, "78f08aef-31b7-49e6-8ba9-2d7b09f5340e",
+			"@@@InProc at 074DE5C88B2981727366B98C", "1/29/2010 11:43:33 AM", "00:20:00", CacheItemPriority.AboveNormal, "1/29/2010 11:23:33 AM", 634003622131252350, false, "ecd90b49-bb12-4524-818e-977356f8b9d2",
+			"@InMemoryOCP_vbk/default.aspxGETWQFH", "1/29/2010 11:23:41 AM", "00:00:00", CacheItemPriority.Normal, "1/29/2010 11:23:33 AM", 634003610216655680, false, "38e7f821-d638-4f1d-89bd-41db556eb37a",
+			"@prefix at _vbk/default.aspxGETWQFH", "1/29/2010 11:23:41 AM", "00:00:00", CacheItemPriority.Normal, "1/29/2010 11:23:33 AM", 634003610216655680, false, "6e723bac-5e11-4cb3-933f-39923948371c",
+			"PartialCachingControl\nGUID: 0a543377-1bcc-4ec5-9096-616fa29ec3f5\n", "1/29/2010 11:23:51 AM", "00:00:00", CacheItemPriority.Normal, "1/29/2010 11:23:46 AM", 634003610312287880, false, "93db96c7-eb5b-43b3-8524-e7d90cd159d7",
+			"@@@InProc at 074DE5C88B2981727366B98C", "1/29/2010 11:43:46 AM", "00:20:00", CacheItemPriority.AboveNormal, "1/29/2010 11:23:46 AM", 634003622262288710, false, "fc310ed6-2027-4d16-9343-a3e4b3487bd0",
+			"@@@InProc at 074DE5C88B2981727366B98C", "1/29/2010 11:43:46 AM", "00:20:00", CacheItemPriority.AboveNormal, "1/29/2010 11:23:46 AM", 634003622262288910, false, "de47322e-63c8-474f-8d2f-fb6a591075df",
+			"@InMemoryOCP_vbk/default.aspxGETWQFH", "1/29/2010 11:23:56 AM", "00:00:00", CacheItemPriority.Normal, "1/29/2010 11:23:46 AM", 634003610362271610, false, "f003a7ba-af48-4551-a206-1184fc83e621",
+			"@prefix at _vbk/default.aspxGETWQFH", "1/29/2010 11:23:56 AM", "00:00:00", CacheItemPriority.Normal, "1/29/2010 11:23:46 AM", 634003610362271610, false, "5777ab80-078b-4f9a-81fb-f7872aceba99",
+		};
 
-		}
+		 string[] tests_00002 = {
+			"0;1;0;f;f;f;0;b50f84e2-b96b-4183-ac6a-afeec88a258d",
+			"1;2;0;f;f;f;1;b50f84e2-b96b-4183-ac6a-afeec88a258d",
+			"2;3;0;f;f;f;2;b50f84e2-b96b-4183-ac6a-afeec88a258d",
+			"3;4;0;f;f;f;3;b50f84e2-b96b-4183-ac6a-afeec88a258d",
+			"4;5;0;f;f;f;4;b50f84e2-b96b-4183-ac6a-afeec88a258d",
+			"0;4;1;f;f;f;0;b50f84e2-b96b-4183-ac6a-afeec88a258d",
+			"0;3;1;f;f;f;1;6e723bac-5e11-4cb3-933f-39923948371c",
+			"0;2;1;f;f;f;2;38e7f821-d638-4f1d-89bd-41db556eb37a",
+			"5;3;0;f;f;f;5;93db96c7-eb5b-43b3-8524-e7d90cd159d7",
+			"6;4;0;f;f;f;6;93db96c7-eb5b-43b3-8524-e7d90cd159d7",
+			"7;5;0;f;f;f;7;93db96c7-eb5b-43b3-8524-e7d90cd159d7",
+			"8;6;0;f;f;f;8;93db96c7-eb5b-43b3-8524-e7d90cd159d7",
+			"9;7;0;f;f;f;9;93db96c7-eb5b-43b3-8524-e7d90cd159d7",
+			"0;6;1;f;f;f;3;93db96c7-eb5b-43b3-8524-e7d90cd159d7",
+			"0;5;1;f;f;f;4;5777ab80-078b-4f9a-81fb-f7872aceba99",
+			"0;5;4;f;f;f;0;",
+			"0;4;1;f;f;f;5;f003a7ba-af48-4551-a206-1184fc83e621",
+			"0;3;1;f;f;f;6;78f08aef-31b7-49e6-8ba9-2d7b09f5340e",
+			"0;2;1;f;f;f;7;ecd90b49-bb12-4524-818e-977356f8b9d2",
+			"0;1;1;f;f;f;8;fc310ed6-2027-4d16-9343-a3e4b3487bd0",
+			"0;0;1;f;f;f;9;de47322e-63c8-474f-8d2f-fb6a591075df",
+		};
 
-		[Test (Description="Generated from sequence file cache_pq_sequence_2010-01-29_10:24:08_002.seq")]
+		[Test (Description="Generated from sequence file cache_pq_sequence_2010-01-29_10-24-08_002.seq")]
 		public void Sequence_0002 ()
 		{
-			var list = new List <CacheItem> {
-				new CacheItem {Key = "PartialCachingControl\nGUID: 0a543377-1bcc-4ec5-9096-616fa29ec3f5\n", AbsoluteExpiration = DateTime.Parse ("1/29/2010 11:23:38 AM"), SlidingExpiration = TimeSpan.Parse ("00:00:00"), Priority = CacheItemPriority.Normal, LastChange = DateTime.Parse ("1/29/2010 11:23:33 AM"), ExpiresAt = 634003610181191660, Disabled = false, Guid = new Guid ("b50f84e2-b96b-4183-ac6a-afeec88a258d")}, 
-				new CacheItem {Key = "@@@InProc at 074DE5C88B2981727366B98C", AbsoluteExpiration = DateTime.Parse ("1/29/2010 11:43:33 AM"), SlidingExpiration = TimeSpan.Parse ("00:20:00"), Priority = CacheItemPriority.AboveNormal, LastChange = DateTime.Parse ("1/29/2010 11:23:33 AM"), ExpiresAt = 634003622131234770, Disabled = false, Guid = new Guid ("78f08aef-31b7-49e6-8ba9-2d7b09f5340e")}, 
-				new CacheItem {Key = "@@@InProc at 074DE5C88B2981727366B98C", AbsoluteExpiration = DateTime.Parse ("1/29/2010 11:43:33 AM"), SlidingExpiration = TimeSpan.Parse ("00:20:00"), Priority = CacheItemPriority.AboveNormal, LastChange = DateTime.Parse ("1/29/2010 11:23:33 AM"), ExpiresAt = 634003622131252350, Disabled = false, Guid = new Guid ("ecd90b49-bb12-4524-818e-977356f8b9d2")}, 
-				new CacheItem {Key = "@InMemoryOCP_vbk/default.aspxGETWQFH", AbsoluteExpiration = DateTime.Parse ("1/29/2010 11:23:41 AM"), SlidingExpiration = TimeSpan.Parse ("00:00:00"), Priority = CacheItemPriority.Normal, LastChange = DateTime.Parse ("1/29/2010 11:23:33 AM"), ExpiresAt = 634003610216655680, Disabled = false, Guid = new Guid ("38e7f821-d638-4f1d-89bd-41db556eb37a")}, 
-				new CacheItem {Key = "@prefix at _vbk/default.aspxGETWQFH", AbsoluteExpiration = DateTime.Parse ("1/29/2010 11:23:41 AM"), SlidingExpiration = TimeSpan.Parse ("00:00:00"), Priority = CacheItemPriority.Normal, LastChange = DateTime.Parse ("1/29/2010 11:23:33 AM"), ExpiresAt = 634003610216655680, Disabled = false, Guid = new Guid ("6e723bac-5e11-4cb3-933f-39923948371c")}, 
-				new CacheItem {Key = "PartialCachingControl\nGUID: 0a543377-1bcc-4ec5-9096-616fa29ec3f5\n", AbsoluteExpiration = DateTime.Parse ("1/29/2010 11:23:51 AM"), SlidingExpiration = TimeSpan.Parse ("00:00:00"), Priority = CacheItemPriority.Normal, LastChange = DateTime.Parse ("1/29/2010 11:23:46 AM"), ExpiresAt = 634003610312287880, Disabled = false, Guid = new Guid ("93db96c7-eb5b-43b3-8524-e7d90cd159d7")}, 
-				new CacheItem {Key = "@@@InProc at 074DE5C88B2981727366B98C", AbsoluteExpiration = DateTime.Parse ("1/29/2010 11:43:46 AM"), SlidingExpiration = TimeSpan.Parse ("00:20:00"), Priority = CacheItemPriority.AboveNormal, LastChange = DateTime.Parse ("1/29/2010 11:23:46 AM"), ExpiresAt = 634003622262288710, Disabled = false, Guid = new Guid ("fc310ed6-2027-4d16-9343-a3e4b3487bd0")}, 
-				new CacheItem {Key = "@@@InProc at 074DE5C88B2981727366B98C", AbsoluteExpiration = DateTime.Parse ("1/29/2010 11:43:46 AM"), SlidingExpiration = TimeSpan.Parse ("00:20:00"), Priority = CacheItemPriority.AboveNormal, LastChange = DateTime.Parse ("1/29/2010 11:23:46 AM"), ExpiresAt = 634003622262288910, Disabled = false, Guid = new Guid ("de47322e-63c8-474f-8d2f-fb6a591075df")}, 
-				new CacheItem {Key = "@InMemoryOCP_vbk/default.aspxGETWQFH", AbsoluteExpiration = DateTime.Parse ("1/29/2010 11:23:56 AM"), SlidingExpiration = TimeSpan.Parse ("00:00:00"), Priority = CacheItemPriority.Normal, LastChange = DateTime.Parse ("1/29/2010 11:23:46 AM"), ExpiresAt = 634003610362271610, Disabled = false, Guid = new Guid ("f003a7ba-af48-4551-a206-1184fc83e621")}, 
-				new CacheItem {Key = "@prefix at _vbk/default.aspxGETWQFH", AbsoluteExpiration = DateTime.Parse ("1/29/2010 11:23:56 AM"), SlidingExpiration = TimeSpan.Parse ("00:00:00"), Priority = CacheItemPriority.Normal, LastChange = DateTime.Parse ("1/29/2010 11:23:46 AM"), ExpiresAt = 634003610362271610, Disabled = false, Guid = new Guid ("5777ab80-078b-4f9a-81fb-f7872aceba99")}, 
-			};
-			var queue = new CacheItemPriorityQueue ();
-			CacheItem item;
-
-			queue.Enqueue (list [0]);
-			Assert.AreEqual (1, queue.Count, "Enqueue-0000-1");
-			Assert.AreEqual ("b50f84e2-b96b-4183-ac6a-afeec88a258d", queue.Peek ().Guid.ToString(), "Enqueue-0000-2");
-
-			queue.Enqueue (list [1]);
-			Assert.AreEqual (2, queue.Count, "Enqueue-0001-1");
-			Assert.AreEqual ("b50f84e2-b96b-4183-ac6a-afeec88a258d", queue.Peek ().Guid.ToString(), "Enqueue-0001-2");
-
-			queue.Enqueue (list [2]);
-			Assert.AreEqual (3, queue.Count, "Enqueue-0002-1");
-			Assert.AreEqual ("b50f84e2-b96b-4183-ac6a-afeec88a258d", queue.Peek ().Guid.ToString(), "Enqueue-0002-2");
-
-			queue.Enqueue (list [3]);
-			Assert.AreEqual (4, queue.Count, "Enqueue-0003-1");
-			Assert.AreEqual ("b50f84e2-b96b-4183-ac6a-afeec88a258d", queue.Peek ().Guid.ToString(), "Enqueue-0003-2");
-
-			queue.Enqueue (list [4]);
-			Assert.AreEqual (5, queue.Count, "Enqueue-0004-1");
-			Assert.AreEqual ("b50f84e2-b96b-4183-ac6a-afeec88a258d", queue.Peek ().Guid.ToString(), "Enqueue-0004-2");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0000-1");
-			Assert.AreEqual (4, queue.Count, "Dequeue-0000-2");
-			Assert.AreEqual ("b50f84e2-b96b-4183-ac6a-afeec88a258d", item.Guid.ToString (), "Dequeue-0000-3");
-			Assert.AreEqual (false, item.Disabled, "Dequeue-0000-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0001-1");
-			Assert.AreEqual (3, queue.Count, "Dequeue-0001-2");
-			Assert.AreEqual ("6e723bac-5e11-4cb3-933f-39923948371c", item.Guid.ToString (), "Dequeue-0001-3");
-			Assert.AreEqual (false, item.Disabled, "Dequeue-0001-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0002-1");
-			Assert.AreEqual (2, queue.Count, "Dequeue-0002-2");
-			Assert.AreEqual ("38e7f821-d638-4f1d-89bd-41db556eb37a", item.Guid.ToString (), "Dequeue-0002-3");
-			Assert.AreEqual (false, item.Disabled, "Dequeue-0002-4");
-
-			queue.Enqueue (list [5]);
-			Assert.AreEqual (3, queue.Count, "Enqueue-0005-1");
-			Assert.AreEqual ("93db96c7-eb5b-43b3-8524-e7d90cd159d7", queue.Peek ().Guid.ToString(), "Enqueue-0005-2");
-
-			queue.Enqueue (list [6]);
-			Assert.AreEqual (4, queue.Count, "Enqueue-0006-1");
-			Assert.AreEqual ("93db96c7-eb5b-43b3-8524-e7d90cd159d7", queue.Peek ().Guid.ToString(), "Enqueue-0006-2");
-
-			queue.Enqueue (list [7]);
-			Assert.AreEqual (5, queue.Count, "Enqueue-0007-1");
-			Assert.AreEqual ("93db96c7-eb5b-43b3-8524-e7d90cd159d7", queue.Peek ().Guid.ToString(), "Enqueue-0007-2");
-
-			queue.Enqueue (list [8]);
-			Assert.AreEqual (6, queue.Count, "Enqueue-0008-1");
-			Assert.AreEqual ("93db96c7-eb5b-43b3-8524-e7d90cd159d7", queue.Peek ().Guid.ToString(), "Enqueue-0008-2");
-
-			queue.Enqueue (list [9]);
-			Assert.AreEqual (7, queue.Count, "Enqueue-0009-1");
-			Assert.AreEqual ("93db96c7-eb5b-43b3-8524-e7d90cd159d7", queue.Peek ().Guid.ToString(), "Enqueue-0009-2");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0003-1");
-			Assert.AreEqual (6, queue.Count, "Dequeue-0003-2");
-			Assert.AreEqual ("93db96c7-eb5b-43b3-8524-e7d90cd159d7", item.Guid.ToString (), "Dequeue-0003-3");
-			Assert.AreEqual (false, item.Disabled, "Dequeue-0003-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0004-1");
-			Assert.AreEqual (5, queue.Count, "Dequeue-0004-2");
-			Assert.AreEqual ("5777ab80-078b-4f9a-81fb-f7872aceba99", item.Guid.ToString (), "Dequeue-0004-3");
-			Assert.AreEqual (false, item.Disabled, "Dequeue-0004-4");
-
-			Assert.AreEqual (5, queue.Count, "Queue size after sequence");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0005-1");
-			Assert.AreEqual (4, queue.Count, "Dequeue-0005-2");
-			Assert.AreEqual ("f003a7ba-af48-4551-a206-1184fc83e621", item.Guid.ToString (), "Dequeue-0005-3");
-			Assert.AreEqual (false, item.Disabled, "Dequeue-0005-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0006-1");
-			Assert.AreEqual (3, queue.Count, "Dequeue-0006-2");
-			Assert.AreEqual ("78f08aef-31b7-49e6-8ba9-2d7b09f5340e", item.Guid.ToString (), "Dequeue-0006-3");
-			Assert.AreEqual (false, item.Disabled, "Dequeue-0006-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0007-1");
-			Assert.AreEqual (2, queue.Count, "Dequeue-0007-2");
-			Assert.AreEqual ("ecd90b49-bb12-4524-818e-977356f8b9d2", item.Guid.ToString (), "Dequeue-0007-3");
-			Assert.AreEqual (false, item.Disabled, "Dequeue-0007-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0008-1");
-			Assert.AreEqual (1, queue.Count, "Dequeue-0008-2");
-			Assert.AreEqual ("fc310ed6-2027-4d16-9343-a3e4b3487bd0", item.Guid.ToString (), "Dequeue-0008-3");
-			Assert.AreEqual (false, item.Disabled, "Dequeue-0008-4");
+			RunTest (tests_00002, list_00002);
+		}
 
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0009-1");
-			Assert.AreEqual (0, queue.Count, "Dequeue-0009-2");
-			Assert.AreEqual ("de47322e-63c8-474f-8d2f-fb6a591075df", item.Guid.ToString (), "Dequeue-0009-3");
-			Assert.AreEqual (false, item.Disabled, "Dequeue-0009-4");
+		// Each row contains TestCacheItem fields, in the following order:
+		// Key, AbsoluteExpiration, SlidingExpiration, Priority, LastChange, ExpiresAt, Disabled, Guid
+		object[] list_00003 = {
+			"PartialCachingControl\nGUID: 19e19704-457b-4894-978c-63d6d022bf22\n", "1/29/2010 1:30:31 PM", "00:00:00", CacheItemPriority.Normal, "1/29/2010 1:30:26 PM", 634003686315246510, false, "3378afe8-5a2a-4f30-aedd-fa146880f93e",
+			"@@@InProc at A3D557581E229FAEA58A8D4F", "1/29/2010 1:50:26 PM", "00:20:00", CacheItemPriority.AboveNormal, "1/29/2010 1:30:26 PM", 634003698265290760, false, "33191cc7-c1b4-4726-b428-64efb69a6c46",
+			"@@@InProc at A3D557581E229FAEA58A8D4F", "1/29/2010 1:50:26 PM", "00:20:00", CacheItemPriority.AboveNormal, "1/29/2010 1:30:26 PM", 634003698265308270, false, "88bee6f1-09ac-4af2-9bc3-ebd619009377",
+			"@InMemoryOCP_vbk/default.aspxGETWQFH", "1/29/2010 1:30:35 PM", "00:00:00", CacheItemPriority.Normal, "1/29/2010 1:30:26 PM", 634003686350855860, false, "e290608d-7086-41a6-a87a-3f3051c14780",
+			"@prefix at _vbk/default.aspxGETWQFH", "1/29/2010 1:30:35 PM", "00:00:00", CacheItemPriority.Normal, "1/29/2010 1:30:26 PM", 634003686350855860, false, "f374c3d0-06a5-4b0d-8fb5-f0e94a876847",
+			"PartialCachingControl\nGUID: 19e19704-457b-4894-978c-63d6d022bf22\n", "1/29/2010 1:30:37 PM", "00:00:00", CacheItemPriority.Normal, "1/29/2010 1:30:32 PM", 634003686370745960, false, "94cc61f5-312e-4d03-8d56-4e8b400f8ca0",
+			"@@@InProc at A3D557581E229FAEA58A8D4F", "1/29/2010 1:50:32 PM", "00:20:00", CacheItemPriority.AboveNormal, "1/29/2010 1:30:32 PM", 634003698320747270, false, "986174eb-da85-4a7b-9919-cd0668db69bf",
+			"@@@InProc at A3D557581E229FAEA58A8D4F", "1/29/2010 1:50:32 PM", "00:20:00", CacheItemPriority.AboveNormal, "1/29/2010 1:30:32 PM", 634003698320747680, false, "3c5fd8ab-a611-4bfb-afb0-5acee9b45dda",
+			"@InMemoryOCP_vbk/default.aspxGETWQNgVadmin_edituserNuV78FH", "1/29/2010 1:30:42 PM", "00:00:00", CacheItemPriority.Normal, "1/29/2010 1:30:32 PM", 634003686420678320, false, "2d354d5c-8996-4932-ba5f-cd3591fe95cb",
+			"@prefix at _vbk/default.aspxGETWQNgVadmin_edituserNuV78FH", "1/29/2010 1:30:42 PM", "00:00:00", CacheItemPriority.Normal, "1/29/2010 1:30:32 PM", 634003686420678320, false, "93a0e663-0354-4301-ac27-9e782091f661",
+			"@@@InProc at A3D557581E229FAEA58A8D4F", "1/29/2010 1:50:36 PM", "00:20:00", CacheItemPriority.AboveNormal, "1/29/2010 1:30:36 PM", 634003698369030440, false, "feebc79b-1867-42c9-a966-bbb448d78a44",
+			"@@@InProc at A3D557581E229FAEA58A8D4F", "1/29/2010 1:50:36 PM", "00:20:00", CacheItemPriority.AboveNormal, "1/29/2010 1:30:36 PM", 634003698369035640, false, "474193d1-4fd9-4b06-873a-e575744957a4",
+			"@InMemoryOCP_vbk/default.aspxGETWQFH", "1/29/2010 1:30:46 PM", "00:00:00", CacheItemPriority.Normal, "1/29/2010 1:30:36 PM", 634003686469024010, false, "817d3f42-bf7b-4a13-90bc-1895cafe2d23",
+			"@prefix at _vbk/default.aspxGETWQFH", "1/29/2010 1:30:46 PM", "00:00:00", CacheItemPriority.Normal, "1/29/2010 1:30:36 PM", 634003686469024010, false, "39402800-3c1e-478c-8bdc-571d902e32a7",
+			"PartialCachingControl\nGUID: 19e19704-457b-4894-978c-63d6d022bf22\n", "1/29/2010 1:30:50 PM", "00:00:00", CacheItemPriority.Normal, "1/29/2010 1:30:45 PM", 634003686509800050, false, "b45b3bd3-d55d-4c41-b9da-150c19ec0856",
+			"@@@InProc at A3D557581E229FAEA58A8D4F", "1/29/2010 1:50:45 PM", "00:20:00", CacheItemPriority.AboveNormal, "1/29/2010 1:30:45 PM", 634003698459800810, false, "66bc962f-bf18-48a4-8164-722a5f53d211",
+			"@@@InProc at A3D557581E229FAEA58A8D4F", "1/29/2010 1:50:45 PM", "00:20:00", CacheItemPriority.AboveNormal, "1/29/2010 1:30:45 PM", 634003698459801130, false, "9096d210-ed15-4d38-9af2-26e59b0b8be0",
+			"@InMemoryOCP_vbk/default.aspxGETWQNgVadmin_edituserNuV78FH", "1/29/2010 1:30:55 PM", "00:00:00", CacheItemPriority.Normal, "1/29/2010 1:30:45 PM", 634003686559793540, false, "f7e86ec2-dc06-484f-81ed-df4373fff95b",
+			"@prefix at _vbk/default.aspxGETWQNgVadmin_edituserNuV78FH", "1/29/2010 1:30:55 PM", "00:00:00", CacheItemPriority.Normal, "1/29/2010 1:30:45 PM", 634003686559793540, false, "ad6319f5-27bc-4444-9eb8-1320009ab184",
+			"@@@InProc at A3D557581E229FAEA58A8D4F", "1/29/2010 1:50:50 PM", "00:20:00", CacheItemPriority.AboveNormal, "1/29/2010 1:30:50 PM", 634003698501880070, false, "4e49dc65-2c6a-4b2f-97e2-9cf09175c57a",
+			"@@@InProc at A3D557581E229FAEA58A8D4F", "1/29/2010 1:50:50 PM", "00:20:00", CacheItemPriority.AboveNormal, "1/29/2010 1:30:50 PM", 634003698501880320, false, "417fc6e2-b9ae-40eb-906b-6e41b306a908",
+			"@InMemoryOCP_vbk/default.aspxGETWQFH", "1/29/2010 1:31:00 PM", "00:00:00", CacheItemPriority.Normal, "1/29/2010 1:30:50 PM", 634003686601873790, false, "7b0fb8c1-9642-4854-b979-7e223a092a3d",
+			"@prefix at _vbk/default.aspxGETWQFH", "1/29/2010 1:31:00 PM", "00:00:00", CacheItemPriority.Normal, "1/29/2010 1:30:50 PM", 634003686601873790, false, "414bdd0b-ab30-4d61-aef2-2d34fd929ed2",
+			"PartialCachingControl\nGUID: 19e19704-457b-4894-978c-63d6d022bf22\n", "1/29/2010 1:31:05 PM", "00:00:00", CacheItemPriority.Normal, "1/29/2010 1:31:00 PM", 634003686655460880, false, "c210ae2b-0c3d-4257-848d-f21ee48c02cc",
+			"@@@InProc at A3D557581E229FAEA58A8D4F", "1/29/2010 1:51:00 PM", "00:20:00", CacheItemPriority.AboveNormal, "1/29/2010 1:31:00 PM", 634003698605462050, false, "ac9cefe3-3331-4ee2-b0f1-69aaca2a955d",
+			"@@@InProc at A3D557581E229FAEA58A8D4F", "1/29/2010 1:51:00 PM", "00:20:00", CacheItemPriority.AboveNormal, "1/29/2010 1:31:00 PM", 634003698605462460, false, "ae852a56-e081-4ee7-b360-81d4ba1a2000",
+			"@InMemoryOCP_vbk/default.aspxGETWQFH", "1/29/2010 1:31:10 PM", "00:00:00", CacheItemPriority.Normal, "1/29/2010 1:31:00 PM", 634003686705453300, false, "e8b43015-cc9b-4cad-a881-faead4f18aa3",
+			"@prefix at _vbk/default.aspxGETWQFH", "1/29/2010 1:31:10 PM", "00:00:00", CacheItemPriority.Normal, "1/29/2010 1:31:00 PM", 634003686705453300, false, "3866994b-3be5-4408-9077-529fe701d3f3",
+		};
 
-		}
+		 string[] tests_00003 = {
+			"0;1;0;f;f;f;0;3378afe8-5a2a-4f30-aedd-fa146880f93e",
+			"1;2;0;f;f;f;1;3378afe8-5a2a-4f30-aedd-fa146880f93e",
+			"1;2;2;f;f;t;0;33191cc7-c1b4-4726-b428-64efb69a6c46",
+			"2;3;0;f;f;f;2;3378afe8-5a2a-4f30-aedd-fa146880f93e",
+			"3;4;0;f;f;f;3;3378afe8-5a2a-4f30-aedd-fa146880f93e",
+			"4;5;0;f;f;f;4;3378afe8-5a2a-4f30-aedd-fa146880f93e",
+			"0;5;2;f;f;t;0;3378afe8-5a2a-4f30-aedd-fa146880f93e",
+			"5;6;0;f;f;f;5;3378afe8-5a2a-4f30-aedd-fa146880f93e",
+			"2;6;2;f;f;t;0;88bee6f1-09ac-4af2-9bc3-ebd619009377",
+			"6;7;0;f;f;f;6;3378afe8-5a2a-4f30-aedd-fa146880f93e",
+			"6;7;2;f;f;t;0;986174eb-da85-4a7b-9919-cd0668db69bf",
+			"7;8;0;f;f;f;7;3378afe8-5a2a-4f30-aedd-fa146880f93e",
+			"8;9;0;f;f;f;8;3378afe8-5a2a-4f30-aedd-fa146880f93e",
+			"9;10;0;f;f;f;9;3378afe8-5a2a-4f30-aedd-fa146880f93e",
+			"3;10;2;f;f;t;0;e290608d-7086-41a6-a87a-3f3051c14780",
+			"7;10;2;f;f;t;0;3c5fd8ab-a611-4bfb-afb0-5acee9b45dda",
+			"10;11;0;f;f;f;10;3378afe8-5a2a-4f30-aedd-fa146880f93e",
+			"10;11;2;f;f;t;0;feebc79b-1867-42c9-a966-bbb448d78a44",
+			"11;12;0;f;f;f;11;3378afe8-5a2a-4f30-aedd-fa146880f93e",
+			"12;13;0;f;f;f;12;3378afe8-5a2a-4f30-aedd-fa146880f93e",
+			"13;14;0;f;f;f;13;3378afe8-5a2a-4f30-aedd-fa146880f93e",
+			"8;14;2;f;f;t;0;2d354d5c-8996-4932-ba5f-cd3591fe95cb",
+			"5;14;2;f;f;t;0;94cc61f5-312e-4d03-8d56-4e8b400f8ca0",
+			"14;15;0;f;f;f;14;3378afe8-5a2a-4f30-aedd-fa146880f93e",
+			"11;15;2;f;f;t;0;474193d1-4fd9-4b06-873a-e575744957a4",
+			"15;16;0;f;f;f;15;3378afe8-5a2a-4f30-aedd-fa146880f93e",
+			"15;16;2;f;f;t;0;66bc962f-bf18-48a4-8164-722a5f53d211",
+			"16;17;0;f;f;f;16;3378afe8-5a2a-4f30-aedd-fa146880f93e",
+			"17;18;0;f;f;f;17;3378afe8-5a2a-4f30-aedd-fa146880f93e",
+			"18;19;0;f;f;f;18;3378afe8-5a2a-4f30-aedd-fa146880f93e",
+			"12;19;2;f;f;t;0;817d3f42-bf7b-4a13-90bc-1895cafe2d23",
+			"16;19;2;f;f;t;0;9096d210-ed15-4d38-9af2-26e59b0b8be0",
+			"19;20;0;f;f;f;19;3378afe8-5a2a-4f30-aedd-fa146880f93e",
+			"19;20;2;f;f;t;0;4e49dc65-2c6a-4b2f-97e2-9cf09175c57a",
+			"20;21;0;f;f;f;20;3378afe8-5a2a-4f30-aedd-fa146880f93e",
+			"21;22;0;f;f;f;21;3378afe8-5a2a-4f30-aedd-fa146880f93e",
+			"22;23;0;f;f;f;22;3378afe8-5a2a-4f30-aedd-fa146880f93e",
+			"21;23;2;f;f;t;0;7b0fb8c1-9642-4854-b979-7e223a092a3d",
+			"14;23;2;f;f;t;0;b45b3bd3-d55d-4c41-b9da-150c19ec0856",
+			"23;24;0;f;f;f;23;3378afe8-5a2a-4f30-aedd-fa146880f93e",
+			"20;24;2;f;f;t;0;417fc6e2-b9ae-40eb-906b-6e41b306a908",
+			"24;25;0;f;f;f;24;3378afe8-5a2a-4f30-aedd-fa146880f93e",
+			"24;25;2;f;f;t;0;ac9cefe3-3331-4ee2-b0f1-69aaca2a955d",
+			"25;26;0;f;f;f;25;3378afe8-5a2a-4f30-aedd-fa146880f93e",
+			"26;27;0;f;f;f;26;3378afe8-5a2a-4f30-aedd-fa146880f93e",
+			"27;28;0;f;f;f;27;3378afe8-5a2a-4f30-aedd-fa146880f93e",
+			"0;27;1;t;f;f;0;3378afe8-5a2a-4f30-aedd-fa146880f93e",
+			"23;27;2;f;f;t;0;c210ae2b-0c3d-4257-848d-f21ee48c02cc",
+			"0;26;1;t;f;f;1;e290608d-7086-41a6-a87a-3f3051c14780",
+			"26;26;2;f;f;t;0;e8b43015-cc9b-4cad-a881-faead4f18aa3",
+			"0;26;4;f;f;f;0;",
+			"0;25;1;f;f;f;2;f374c3d0-06a5-4b0d-8fb5-f0e94a876847",
+			"0;24;1;t;f;f;3;94cc61f5-312e-4d03-8d56-4e8b400f8ca0",
+			"0;23;1;t;f;f;4;2d354d5c-8996-4932-ba5f-cd3591fe95cb",
+			"0;22;1;f;f;f;5;93a0e663-0354-4301-ac27-9e782091f661",
+			"0;21;1;t;f;f;6;817d3f42-bf7b-4a13-90bc-1895cafe2d23",
+			"0;20;1;f;f;f;7;39402800-3c1e-478c-8bdc-571d902e32a7",
+			"0;19;1;t;f;f;8;b45b3bd3-d55d-4c41-b9da-150c19ec0856",
+			"0;18;1;f;f;f;9;f7e86ec2-dc06-484f-81ed-df4373fff95b",
+			"0;17;1;f;f;f;10;ad6319f5-27bc-4444-9eb8-1320009ab184",
+			"0;16;1;t;f;f;11;7b0fb8c1-9642-4854-b979-7e223a092a3d",
+			"0;15;1;f;f;f;12;414bdd0b-ab30-4d61-aef2-2d34fd929ed2",
+			"0;14;1;t;f;f;13;c210ae2b-0c3d-4257-848d-f21ee48c02cc",
+			"0;13;1;t;f;f;14;e8b43015-cc9b-4cad-a881-faead4f18aa3",
+			"0;12;1;f;f;f;15;3866994b-3be5-4408-9077-529fe701d3f3",
+			"0;11;1;t;f;f;16;33191cc7-c1b4-4726-b428-64efb69a6c46",
+			"0;10;1;t;f;f;17;88bee6f1-09ac-4af2-9bc3-ebd619009377",
+			"0;9;1;t;f;f;18;986174eb-da85-4a7b-9919-cd0668db69bf",
+			"0;8;1;t;f;f;19;3c5fd8ab-a611-4bfb-afb0-5acee9b45dda",
+			"0;7;1;t;f;f;20;feebc79b-1867-42c9-a966-bbb448d78a44",
+			"0;6;1;t;f;f;21;474193d1-4fd9-4b06-873a-e575744957a4",
+			"0;5;1;t;f;f;22;66bc962f-bf18-48a4-8164-722a5f53d211",
+			"0;4;1;t;f;f;23;9096d210-ed15-4d38-9af2-26e59b0b8be0",
+			"0;3;1;t;f;f;24;4e49dc65-2c6a-4b2f-97e2-9cf09175c57a",
+			"0;2;1;t;f;f;25;417fc6e2-b9ae-40eb-906b-6e41b306a908",
+			"0;1;1;t;f;f;26;ac9cefe3-3331-4ee2-b0f1-69aaca2a955d",
+			"0;0;1;f;f;f;27;ae852a56-e081-4ee7-b360-81d4ba1a2000",
+		};
 
-		[Test (Description="Generated from sequence file cache_pq_sequence_2010-01-29_12:31:31.seq")]
+		[Test (Description="Generated from sequence file cache_pq_sequence_2010-01-29_12-31-31.seq")]
 		public void Sequence_0003 ()
 		{
-			var list = new List <CacheItem> {
-				new CacheItem {Key = "PartialCachingControl\nGUID: 19e19704-457b-4894-978c-63d6d022bf22\n", AbsoluteExpiration = DateTime.Parse ("1/29/2010 1:30:31 PM"), SlidingExpiration = TimeSpan.Parse ("00:00:00"), Priority = CacheItemPriority.Normal, LastChange = DateTime.Parse ("1/29/2010 1:30:26 PM"), ExpiresAt = 634003686315246510, Disabled = false, Guid = new Guid ("3378afe8-5a2a-4f30-aedd-fa146880f93e")}, 
-				new CacheItem {Key = "@@@InProc at A3D557581E229FAEA58A8D4F", AbsoluteExpiration = DateTime.Parse ("1/29/2010 1:50:26 PM"), SlidingExpiration = TimeSpan.Parse ("00:20:00"), Priority = CacheItemPriority.AboveNormal, LastChange = DateTime.Parse ("1/29/2010 1:30:26 PM"), ExpiresAt = 634003698265290760, Disabled = false, Guid = new Guid ("33191cc7-c1b4-4726-b428-64efb69a6c46")}, 
-				new CacheItem {Key = "@@@InProc at A3D557581E229FAEA58A8D4F", AbsoluteExpiration = DateTime.Parse ("1/29/2010 1:50:26 PM"), SlidingExpiration = TimeSpan.Parse ("00:20:00"), Priority = CacheItemPriority.AboveNormal, LastChange = DateTime.Parse ("1/29/2010 1:30:26 PM"), ExpiresAt = 634003698265308270, Disabled = false, Guid = new Guid ("88bee6f1-09ac-4af2-9bc3-ebd619009377")}, 
-				new CacheItem {Key = "@InMemoryOCP_vbk/default.aspxGETWQFH", AbsoluteExpiration = DateTime.Parse ("1/29/2010 1:30:35 PM"), SlidingExpiration = TimeSpan.Parse ("00:00:00"), Priority = CacheItemPriority.Normal, LastChange = DateTime.Parse ("1/29/2010 1:30:26 PM"), ExpiresAt = 634003686350855860, Disabled = false, Guid = new Guid ("e290608d-7086-41a6-a87a-3f3051c14780")}, 
-				new CacheItem {Key = "@prefix at _vbk/default.aspxGETWQFH", AbsoluteExpiration = DateTime.Parse ("1/29/2010 1:30:35 PM"), SlidingExpiration = TimeSpan.Parse ("00:00:00"), Priority = CacheItemPriority.Normal, LastChange = DateTime.Parse ("1/29/2010 1:30:26 PM"), ExpiresAt = 634003686350855860, Disabled = false, Guid = new Guid ("f374c3d0-06a5-4b0d-8fb5-f0e94a876847")}, 
-				new CacheItem {Key = "PartialCachingControl\nGUID: 19e19704-457b-4894-978c-63d6d022bf22\n", AbsoluteExpiration = DateTime.Parse ("1/29/2010 1:30:37 PM"), SlidingExpiration = TimeSpan.Parse ("00:00:00"), Priority = CacheItemPriority.Normal, LastChange = DateTime.Parse ("1/29/2010 1:30:32 PM"), ExpiresAt = 634003686370745960, Disabled = false, Guid = new Guid ("94cc61f5-312e-4d03-8d56-4e8b400f8ca0")}, 
-				new CacheItem {Key = "@@@InProc at A3D557581E229FAEA58A8D4F", AbsoluteExpiration = DateTime.Parse ("1/29/2010 1:50:32 PM"), SlidingExpiration = TimeSpan.Parse ("00:20:00"), Priority = CacheItemPriority.AboveNormal, LastChange = DateTime.Parse ("1/29/2010 1:30:32 PM"), ExpiresAt = 634003698320747270, Disabled = false, Guid = new Guid ("986174eb-da85-4a7b-9919-cd0668db69bf")}, 
-				new CacheItem {Key = "@@@InProc at A3D557581E229FAEA58A8D4F", AbsoluteExpiration = DateTime.Parse ("1/29/2010 1:50:32 PM"), SlidingExpiration = TimeSpan.Parse ("00:20:00"), Priority = CacheItemPriority.AboveNormal, LastChange = DateTime.Parse ("1/29/2010 1:30:32 PM"), ExpiresAt = 634003698320747680, Disabled = false, Guid = new Guid ("3c5fd8ab-a611-4bfb-afb0-5acee9b45dda")}, 
-				new CacheItem {Key = "@InMemoryOCP_vbk/default.aspxGETWQNgVadmin_edituserNuV78FH", AbsoluteExpiration = DateTime.Parse ("1/29/2010 1:30:42 PM"), SlidingExpiration = TimeSpan.Parse ("00:00:00"), Priority = CacheItemPriority.Normal, LastChange = DateTime.Parse ("1/29/2010 1:30:32 PM"), ExpiresAt = 634003686420678320, Disabled = false, Guid = new Guid ("2d354d5c-8996-4932-ba5f-cd3591fe95cb")}, 
-				new CacheItem {Key = "@prefix at _vbk/default.aspxGETWQNgVadmin_edituserNuV78FH", AbsoluteExpiration = DateTime.Parse ("1/29/2010 1:30:42 PM"), SlidingExpiration = TimeSpan.Parse ("00:00:00"), Priority = CacheItemPriority.Normal, LastChange = DateTime.Parse ("1/29/2010 1:30:32 PM"), ExpiresAt = 634003686420678320, Disabled = false, Guid = new Guid ("93a0e663-0354-4301-ac27-9e782091f661")}, 
-				new CacheItem {Key = "@@@InProc at A3D557581E229FAEA58A8D4F", AbsoluteExpiration = DateTime.Parse ("1/29/2010 1:50:36 PM"), SlidingExpiration = TimeSpan.Parse ("00:20:00"), Priority = CacheItemPriority.AboveNormal, LastChange = DateTime.Parse ("1/29/2010 1:30:36 PM"), ExpiresAt = 634003698369030440, Disabled = false, Guid = new Guid ("feebc79b-1867-42c9-a966-bbb448d78a44")}, 
-				new CacheItem {Key = "@@@InProc at A3D557581E229FAEA58A8D4F", AbsoluteExpiration = DateTime.Parse ("1/29/2010 1:50:36 PM"), SlidingExpiration = TimeSpan.Parse ("00:20:00"), Priority = CacheItemPriority.AboveNormal, LastChange = DateTime.Parse ("1/29/2010 1:30:36 PM"), ExpiresAt = 634003698369035640, Disabled = false, Guid = new Guid ("474193d1-4fd9-4b06-873a-e575744957a4")}, 
-				new CacheItem {Key = "@InMemoryOCP_vbk/default.aspxGETWQFH", AbsoluteExpiration = DateTime.Parse ("1/29/2010 1:30:46 PM"), SlidingExpiration = TimeSpan.Parse ("00:00:00"), Priority = CacheItemPriority.Normal, LastChange = DateTime.Parse ("1/29/2010 1:30:36 PM"), ExpiresAt = 634003686469024010, Disabled = false, Guid = new Guid ("817d3f42-bf7b-4a13-90bc-1895cafe2d23")}, 
-				new CacheItem {Key = "@prefix at _vbk/default.aspxGETWQFH", AbsoluteExpiration = DateTime.Parse ("1/29/2010 1:30:46 PM"), SlidingExpiration = TimeSpan.Parse ("00:00:00"), Priority = CacheItemPriority.Normal, LastChange = DateTime.Parse ("1/29/2010 1:30:36 PM"), ExpiresAt = 634003686469024010, Disabled = false, Guid = new Guid ("39402800-3c1e-478c-8bdc-571d902e32a7")}, 
-				new CacheItem {Key = "PartialCachingControl\nGUID: 19e19704-457b-4894-978c-63d6d022bf22\n", AbsoluteExpiration = DateTime.Parse ("1/29/2010 1:30:50 PM"), SlidingExpiration = TimeSpan.Parse ("00:00:00"), Priority = CacheItemPriority.Normal, LastChange = DateTime.Parse ("1/29/2010 1:30:45 PM"), ExpiresAt = 634003686509800050, Disabled = false, Guid = new Guid ("b45b3bd3-d55d-4c41-b9da-150c19ec0856")}, 
-				new CacheItem {Key = "@@@InProc at A3D557581E229FAEA58A8D4F", AbsoluteExpiration = DateTime.Parse ("1/29/2010 1:50:45 PM"), SlidingExpiration = TimeSpan.Parse ("00:20:00"), Priority = CacheItemPriority.AboveNormal, LastChange = DateTime.Parse ("1/29/2010 1:30:45 PM"), ExpiresAt = 634003698459800810, Disabled = false, Guid = new Guid ("66bc962f-bf18-48a4-8164-722a5f53d211")}, 
-				new CacheItem {Key = "@@@InProc at A3D557581E229FAEA58A8D4F", AbsoluteExpiration = DateTime.Parse ("1/29/2010 1:50:45 PM"), SlidingExpiration = TimeSpan.Parse ("00:20:00"), Priority = CacheItemPriority.AboveNormal, LastChange = DateTime.Parse ("1/29/2010 1:30:45 PM"), ExpiresAt = 634003698459801130, Disabled = false, Guid = new Guid ("9096d210-ed15-4d38-9af2-26e59b0b8be0")}, 
-				new CacheItem {Key = "@InMemoryOCP_vbk/default.aspxGETWQNgVadmin_edituserNuV78FH", AbsoluteExpiration = DateTime.Parse ("1/29/2010 1:30:55 PM"), SlidingExpiration = TimeSpan.Parse ("00:00:00"), Priority = CacheItemPriority.Normal, LastChange = DateTime.Parse ("1/29/2010 1:30:45 PM"), ExpiresAt = 634003686559793540, Disabled = false, Guid = new Guid ("f7e86ec2-dc06-484f-81ed-df4373fff95b")}, 
-				new CacheItem {Key = "@prefix at _vbk/default.aspxGETWQNgVadmin_edituserNuV78FH", AbsoluteExpiration = DateTime.Parse ("1/29/2010 1:30:55 PM"), SlidingExpiration = TimeSpan.Parse ("00:00:00"), Priority = CacheItemPriority.Normal, LastChange = DateTime.Parse ("1/29/2010 1:30:45 PM"), ExpiresAt = 634003686559793540, Disabled = false, Guid = new Guid ("ad6319f5-27bc-4444-9eb8-1320009ab184")}, 
-				new CacheItem {Key = "@@@InProc at A3D557581E229FAEA58A8D4F", AbsoluteExpiration = DateTime.Parse ("1/29/2010 1:50:50 PM"), SlidingExpiration = TimeSpan.Parse ("00:20:00"), Priority = CacheItemPriority.AboveNormal, LastChange = DateTime.Parse ("1/29/2010 1:30:50 PM"), ExpiresAt = 634003698501880070, Disabled = false, Guid = new Guid ("4e49dc65-2c6a-4b2f-97e2-9cf09175c57a")}, 
-				new CacheItem {Key = "@@@InProc at A3D557581E229FAEA58A8D4F", AbsoluteExpiration = DateTime.Parse ("1/29/2010 1:50:50 PM"), SlidingExpiration = TimeSpan.Parse ("00:20:00"), Priority = CacheItemPriority.AboveNormal, LastChange = DateTime.Parse ("1/29/2010 1:30:50 PM"), ExpiresAt = 634003698501880320, Disabled = false, Guid = new Guid ("417fc6e2-b9ae-40eb-906b-6e41b306a908")}, 
-				new CacheItem {Key = "@InMemoryOCP_vbk/default.aspxGETWQFH", AbsoluteExpiration = DateTime.Parse ("1/29/2010 1:31:00 PM"), SlidingExpiration = TimeSpan.Parse ("00:00:00"), Priority = CacheItemPriority.Normal, LastChange = DateTime.Parse ("1/29/2010 1:30:50 PM"), ExpiresAt = 634003686601873790, Disabled = false, Guid = new Guid ("7b0fb8c1-9642-4854-b979-7e223a092a3d")}, 
-				new CacheItem {Key = "@prefix at _vbk/default.aspxGETWQFH", AbsoluteExpiration = DateTime.Parse ("1/29/2010 1:31:00 PM"), SlidingExpiration = TimeSpan.Parse ("00:00:00"), Priority = CacheItemPriority.Normal, LastChange = DateTime.Parse ("1/29/2010 1:30:50 PM"), ExpiresAt = 634003686601873790, Disabled = false, Guid = new Guid ("414bdd0b-ab30-4d61-aef2-2d34fd929ed2")}, 
-				new CacheItem {Key = "PartialCachingControl\nGUID: 19e19704-457b-4894-978c-63d6d022bf22\n", AbsoluteExpiration = DateTime.Parse ("1/29/2010 1:31:05 PM"), SlidingExpiration = TimeSpan.Parse ("00:00:00"), Priority = CacheItemPriority.Normal, LastChange = DateTime.Parse ("1/29/2010 1:31:00 PM"), ExpiresAt = 634003686655460880, Disabled = false, Guid = new Guid ("c210ae2b-0c3d-4257-848d-f21ee48c02cc")}, 
-				new CacheItem {Key = "@@@InProc at A3D557581E229FAEA58A8D4F", AbsoluteExpiration = DateTime.Parse ("1/29/2010 1:51:00 PM"), SlidingExpiration = TimeSpan.Parse ("00:20:00"), Priority = CacheItemPriority.AboveNormal, LastChange = DateTime.Parse ("1/29/2010 1:31:00 PM"), ExpiresAt = 634003698605462050, Disabled = false, Guid = new Guid ("ac9cefe3-3331-4ee2-b0f1-69aaca2a955d")}, 
-				new CacheItem {Key = "@@@InProc at A3D557581E229FAEA58A8D4F", AbsoluteExpiration = DateTime.Parse ("1/29/2010 1:51:00 PM"), SlidingExpiration = TimeSpan.Parse ("00:20:00"), Priority = CacheItemPriority.AboveNormal, LastChange = DateTime.Parse ("1/29/2010 1:31:00 PM"), ExpiresAt = 634003698605462460, Disabled = false, Guid = new Guid ("ae852a56-e081-4ee7-b360-81d4ba1a2000")}, 
-				new CacheItem {Key = "@InMemoryOCP_vbk/default.aspxGETWQFH", AbsoluteExpiration = DateTime.Parse ("1/29/2010 1:31:10 PM"), SlidingExpiration = TimeSpan.Parse ("00:00:00"), Priority = CacheItemPriority.Normal, LastChange = DateTime.Parse ("1/29/2010 1:31:00 PM"), ExpiresAt = 634003686705453300, Disabled = false, Guid = new Guid ("e8b43015-cc9b-4cad-a881-faead4f18aa3")}, 
-				new CacheItem {Key = "@prefix at _vbk/default.aspxGETWQFH", AbsoluteExpiration = DateTime.Parse ("1/29/2010 1:31:10 PM"), SlidingExpiration = TimeSpan.Parse ("00:00:00"), Priority = CacheItemPriority.Normal, LastChange = DateTime.Parse ("1/29/2010 1:31:00 PM"), ExpiresAt = 634003686705453300, Disabled = false, Guid = new Guid ("3866994b-3be5-4408-9077-529fe701d3f3")}, 
-			};
-			var queue = new CacheItemPriorityQueue ();
-			CacheItem item;
-
-			queue.Enqueue (list [0]);
-			Assert.AreEqual (1, queue.Count, "Enqueue-0000-1");
-			Assert.AreEqual ("3378afe8-5a2a-4f30-aedd-fa146880f93e", queue.Peek ().Guid.ToString(), "Enqueue-0000-2");
-
-			queue.Enqueue (list [1]);
-			Assert.AreEqual (2, queue.Count, "Enqueue-0001-1");
-			Assert.AreEqual ("3378afe8-5a2a-4f30-aedd-fa146880f93e", queue.Peek ().Guid.ToString(), "Enqueue-0001-2");
-
-			item = list [1];
-			Assert.IsNotNull (item, "Disable-0000-1");
-			Assert.AreEqual ("33191cc7-c1b4-4726-b428-64efb69a6c46", item.Guid.ToString(), "Disable-0000-3");
-			Assert.AreEqual (false, item.Disabled, "Disable-0000-3");
-			item.Disabled = true;
-
-			queue.Enqueue (list [2]);
-			Assert.AreEqual (3, queue.Count, "Enqueue-0002-1");
-			Assert.AreEqual ("3378afe8-5a2a-4f30-aedd-fa146880f93e", queue.Peek ().Guid.ToString(), "Enqueue-0002-2");
-
-			queue.Enqueue (list [3]);
-			Assert.AreEqual (4, queue.Count, "Enqueue-0003-1");
-			Assert.AreEqual ("3378afe8-5a2a-4f30-aedd-fa146880f93e", queue.Peek ().Guid.ToString(), "Enqueue-0003-2");
-
-			queue.Enqueue (list [4]);
-			Assert.AreEqual (5, queue.Count, "Enqueue-0004-1");
-			Assert.AreEqual ("3378afe8-5a2a-4f30-aedd-fa146880f93e", queue.Peek ().Guid.ToString(), "Enqueue-0004-2");
-
-			item = list [0];
-			Assert.IsNotNull (item, "Disable-0001-1");
-			Assert.AreEqual ("3378afe8-5a2a-4f30-aedd-fa146880f93e", item.Guid.ToString(), "Disable-0001-3");
-			Assert.AreEqual (false, item.Disabled, "Disable-0001-3");
-			item.Disabled = true;
-
-			queue.Enqueue (list [5]);
-			Assert.AreEqual (6, queue.Count, "Enqueue-0005-1");
-			Assert.AreEqual ("3378afe8-5a2a-4f30-aedd-fa146880f93e", queue.Peek ().Guid.ToString(), "Enqueue-0005-2");
-
-			item = list [2];
-			Assert.IsNotNull (item, "Disable-0002-1");
-			Assert.AreEqual ("88bee6f1-09ac-4af2-9bc3-ebd619009377", item.Guid.ToString(), "Disable-0002-3");
-			Assert.AreEqual (false, item.Disabled, "Disable-0002-3");
-			item.Disabled = true;
-
-			queue.Enqueue (list [6]);
-			Assert.AreEqual (7, queue.Count, "Enqueue-0006-1");
-			Assert.AreEqual ("3378afe8-5a2a-4f30-aedd-fa146880f93e", queue.Peek ().Guid.ToString(), "Enqueue-0006-2");
-
-			item = list [6];
-			Assert.IsNotNull (item, "Disable-0003-1");
-			Assert.AreEqual ("986174eb-da85-4a7b-9919-cd0668db69bf", item.Guid.ToString(), "Disable-0003-3");
-			Assert.AreEqual (false, item.Disabled, "Disable-0003-3");
-			item.Disabled = true;
-
-			queue.Enqueue (list [7]);
-			Assert.AreEqual (8, queue.Count, "Enqueue-0007-1");
-			Assert.AreEqual ("3378afe8-5a2a-4f30-aedd-fa146880f93e", queue.Peek ().Guid.ToString(), "Enqueue-0007-2");
-
-			queue.Enqueue (list [8]);
-			Assert.AreEqual (9, queue.Count, "Enqueue-0008-1");
-			Assert.AreEqual ("3378afe8-5a2a-4f30-aedd-fa146880f93e", queue.Peek ().Guid.ToString(), "Enqueue-0008-2");
-
-			queue.Enqueue (list [9]);
-			Assert.AreEqual (10, queue.Count, "Enqueue-0009-1");
-			Assert.AreEqual ("3378afe8-5a2a-4f30-aedd-fa146880f93e", queue.Peek ().Guid.ToString(), "Enqueue-0009-2");
-
-			item = list [3];
-			Assert.IsNotNull (item, "Disable-0004-1");
-			Assert.AreEqual ("e290608d-7086-41a6-a87a-3f3051c14780", item.Guid.ToString(), "Disable-0004-3");
-			Assert.AreEqual (false, item.Disabled, "Disable-0004-3");
-			item.Disabled = true;
-
-			item = list [7];
-			Assert.IsNotNull (item, "Disable-0005-1");
-			Assert.AreEqual ("3c5fd8ab-a611-4bfb-afb0-5acee9b45dda", item.Guid.ToString(), "Disable-0005-3");
-			Assert.AreEqual (false, item.Disabled, "Disable-0005-3");
-			item.Disabled = true;
-
-			queue.Enqueue (list [10]);
-			Assert.AreEqual (11, queue.Count, "Enqueue-0010-1");
-			Assert.AreEqual ("3378afe8-5a2a-4f30-aedd-fa146880f93e", queue.Peek ().Guid.ToString(), "Enqueue-0010-2");
-
-			item = list [10];
-			Assert.IsNotNull (item, "Disable-0006-1");
-			Assert.AreEqual ("feebc79b-1867-42c9-a966-bbb448d78a44", item.Guid.ToString(), "Disable-0006-3");
-			Assert.AreEqual (false, item.Disabled, "Disable-0006-3");
-			item.Disabled = true;
-
-			queue.Enqueue (list [11]);
-			Assert.AreEqual (12, queue.Count, "Enqueue-0011-1");
-			Assert.AreEqual ("3378afe8-5a2a-4f30-aedd-fa146880f93e", queue.Peek ().Guid.ToString(), "Enqueue-0011-2");
-
-			queue.Enqueue (list [12]);
-			Assert.AreEqual (13, queue.Count, "Enqueue-0012-1");
-			Assert.AreEqual ("3378afe8-5a2a-4f30-aedd-fa146880f93e", queue.Peek ().Guid.ToString(), "Enqueue-0012-2");
-
-			queue.Enqueue (list [13]);
-			Assert.AreEqual (14, queue.Count, "Enqueue-0013-1");
-			Assert.AreEqual ("3378afe8-5a2a-4f30-aedd-fa146880f93e", queue.Peek ().Guid.ToString(), "Enqueue-0013-2");
-
-			item = list [8];
-			Assert.IsNotNull (item, "Disable-0007-1");
-			Assert.AreEqual ("2d354d5c-8996-4932-ba5f-cd3591fe95cb", item.Guid.ToString(), "Disable-0007-3");
-			Assert.AreEqual (false, item.Disabled, "Disable-0007-3");
-			item.Disabled = true;
-
-			item = list [5];
-			Assert.IsNotNull (item, "Disable-0008-1");
-			Assert.AreEqual ("94cc61f5-312e-4d03-8d56-4e8b400f8ca0", item.Guid.ToString(), "Disable-0008-3");
-			Assert.AreEqual (false, item.Disabled, "Disable-0008-3");
-			item.Disabled = true;
-
-			queue.Enqueue (list [14]);
-			Assert.AreEqual (15, queue.Count, "Enqueue-0014-1");
-			Assert.AreEqual ("3378afe8-5a2a-4f30-aedd-fa146880f93e", queue.Peek ().Guid.ToString(), "Enqueue-0014-2");
-
-			item = list [11];
-			Assert.IsNotNull (item, "Disable-0009-1");
-			Assert.AreEqual ("474193d1-4fd9-4b06-873a-e575744957a4", item.Guid.ToString(), "Disable-0009-3");
-			Assert.AreEqual (false, item.Disabled, "Disable-0009-3");
-			item.Disabled = true;
-
-			queue.Enqueue (list [15]);
-			Assert.AreEqual (16, queue.Count, "Enqueue-0015-1");
-			Assert.AreEqual ("3378afe8-5a2a-4f30-aedd-fa146880f93e", queue.Peek ().Guid.ToString(), "Enqueue-0015-2");
-
-			item = list [15];
-			Assert.IsNotNull (item, "Disable-0010-1");
-			Assert.AreEqual ("66bc962f-bf18-48a4-8164-722a5f53d211", item.Guid.ToString(), "Disable-0010-3");
-			Assert.AreEqual (false, item.Disabled, "Disable-0010-3");
-			item.Disabled = true;
-
-			queue.Enqueue (list [16]);
-			Assert.AreEqual (17, queue.Count, "Enqueue-0016-1");
-			Assert.AreEqual ("3378afe8-5a2a-4f30-aedd-fa146880f93e", queue.Peek ().Guid.ToString(), "Enqueue-0016-2");
-
-			queue.Enqueue (list [17]);
-			Assert.AreEqual (18, queue.Count, "Enqueue-0017-1");
-			Assert.AreEqual ("3378afe8-5a2a-4f30-aedd-fa146880f93e", queue.Peek ().Guid.ToString(), "Enqueue-0017-2");
-
-			queue.Enqueue (list [18]);
-			Assert.AreEqual (19, queue.Count, "Enqueue-0018-1");
-			Assert.AreEqual ("3378afe8-5a2a-4f30-aedd-fa146880f93e", queue.Peek ().Guid.ToString(), "Enqueue-0018-2");
-
-			item = list [12];
-			Assert.IsNotNull (item, "Disable-0011-1");
-			Assert.AreEqual ("817d3f42-bf7b-4a13-90bc-1895cafe2d23", item.Guid.ToString(), "Disable-0011-3");
-			Assert.AreEqual (false, item.Disabled, "Disable-0011-3");
-			item.Disabled = true;
-
-			item = list [16];
-			Assert.IsNotNull (item, "Disable-0012-1");
-			Assert.AreEqual ("9096d210-ed15-4d38-9af2-26e59b0b8be0", item.Guid.ToString(), "Disable-0012-3");
-			Assert.AreEqual (false, item.Disabled, "Disable-0012-3");
-			item.Disabled = true;
-
-			queue.Enqueue (list [19]);
-			Assert.AreEqual (20, queue.Count, "Enqueue-0019-1");
-			Assert.AreEqual ("3378afe8-5a2a-4f30-aedd-fa146880f93e", queue.Peek ().Guid.ToString(), "Enqueue-0019-2");
-
-			item = list [19];
-			Assert.IsNotNull (item, "Disable-0013-1");
-			Assert.AreEqual ("4e49dc65-2c6a-4b2f-97e2-9cf09175c57a", item.Guid.ToString(), "Disable-0013-3");
-			Assert.AreEqual (false, item.Disabled, "Disable-0013-3");
-			item.Disabled = true;
-
-			queue.Enqueue (list [20]);
-			Assert.AreEqual (21, queue.Count, "Enqueue-0020-1");
-			Assert.AreEqual ("3378afe8-5a2a-4f30-aedd-fa146880f93e", queue.Peek ().Guid.ToString(), "Enqueue-0020-2");
-
-			queue.Enqueue (list [21]);
-			Assert.AreEqual (22, queue.Count, "Enqueue-0021-1");
-			Assert.AreEqual ("3378afe8-5a2a-4f30-aedd-fa146880f93e", queue.Peek ().Guid.ToString(), "Enqueue-0021-2");
-
-			queue.Enqueue (list [22]);
-			Assert.AreEqual (23, queue.Count, "Enqueue-0022-1");
-			Assert.AreEqual ("3378afe8-5a2a-4f30-aedd-fa146880f93e", queue.Peek ().Guid.ToString(), "Enqueue-0022-2");
-
-			item = list [21];
-			Assert.IsNotNull (item, "Disable-0014-1");
-			Assert.AreEqual ("7b0fb8c1-9642-4854-b979-7e223a092a3d", item.Guid.ToString(), "Disable-0014-3");
-			Assert.AreEqual (false, item.Disabled, "Disable-0014-3");
-			item.Disabled = true;
-
-			item = list [14];
-			Assert.IsNotNull (item, "Disable-0015-1");
-			Assert.AreEqual ("b45b3bd3-d55d-4c41-b9da-150c19ec0856", item.Guid.ToString(), "Disable-0015-3");
-			Assert.AreEqual (false, item.Disabled, "Disable-0015-3");
-			item.Disabled = true;
-
-			queue.Enqueue (list [23]);
-			Assert.AreEqual (24, queue.Count, "Enqueue-0023-1");
-			Assert.AreEqual ("3378afe8-5a2a-4f30-aedd-fa146880f93e", queue.Peek ().Guid.ToString(), "Enqueue-0023-2");
-
-			item = list [20];
-			Assert.IsNotNull (item, "Disable-0016-1");
-			Assert.AreEqual ("417fc6e2-b9ae-40eb-906b-6e41b306a908", item.Guid.ToString(), "Disable-0016-3");
-			Assert.AreEqual (false, item.Disabled, "Disable-0016-3");
-			item.Disabled = true;
-
-			queue.Enqueue (list [24]);
-			Assert.AreEqual (25, queue.Count, "Enqueue-0024-1");
-			Assert.AreEqual ("3378afe8-5a2a-4f30-aedd-fa146880f93e", queue.Peek ().Guid.ToString(), "Enqueue-0024-2");
-
-			item = list [24];
-			Assert.IsNotNull (item, "Disable-0017-1");
-			Assert.AreEqual ("ac9cefe3-3331-4ee2-b0f1-69aaca2a955d", item.Guid.ToString(), "Disable-0017-3");
-			Assert.AreEqual (false, item.Disabled, "Disable-0017-3");
-			item.Disabled = true;
-
-			queue.Enqueue (list [25]);
-			Assert.AreEqual (26, queue.Count, "Enqueue-0025-1");
-			Assert.AreEqual ("3378afe8-5a2a-4f30-aedd-fa146880f93e", queue.Peek ().Guid.ToString(), "Enqueue-0025-2");
-
-			queue.Enqueue (list [26]);
-			Assert.AreEqual (27, queue.Count, "Enqueue-0026-1");
-			Assert.AreEqual ("3378afe8-5a2a-4f30-aedd-fa146880f93e", queue.Peek ().Guid.ToString(), "Enqueue-0026-2");
-
-			queue.Enqueue (list [27]);
-			Assert.AreEqual (28, queue.Count, "Enqueue-0027-1");
-			Assert.AreEqual ("3378afe8-5a2a-4f30-aedd-fa146880f93e", queue.Peek ().Guid.ToString(), "Enqueue-0027-2");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0000-1");
-			Assert.AreEqual (27, queue.Count, "Dequeue-0000-2");
-			Assert.AreEqual ("3378afe8-5a2a-4f30-aedd-fa146880f93e", item.Guid.ToString (), "Dequeue-0000-3");
-			Assert.AreEqual (true, item.Disabled, "Dequeue-0000-4");
-
-			item = list [23];
-			Assert.IsNotNull (item, "Disable-0018-1");
-			Assert.AreEqual ("c210ae2b-0c3d-4257-848d-f21ee48c02cc", item.Guid.ToString(), "Disable-0018-3");
-			Assert.AreEqual (false, item.Disabled, "Disable-0018-3");
-			item.Disabled = true;
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0001-1");
-			Assert.AreEqual (26, queue.Count, "Dequeue-0001-2");
-			Assert.AreEqual ("e290608d-7086-41a6-a87a-3f3051c14780", item.Guid.ToString (), "Dequeue-0001-3");
-			Assert.AreEqual (true, item.Disabled, "Dequeue-0001-4");
-
-			item = list [26];
-			Assert.IsNotNull (item, "Disable-0019-1");
-			Assert.AreEqual ("e8b43015-cc9b-4cad-a881-faead4f18aa3", item.Guid.ToString(), "Disable-0019-3");
-			Assert.AreEqual (false, item.Disabled, "Disable-0019-3");
-			item.Disabled = true;
-
-			Assert.AreEqual (26, queue.Count, "Queue size after sequence");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0002-1");
-			Assert.AreEqual (25, queue.Count, "Dequeue-0002-2");
-			Assert.AreEqual ("f374c3d0-06a5-4b0d-8fb5-f0e94a876847", item.Guid.ToString (), "Dequeue-0002-3");
-			Assert.AreEqual (false, item.Disabled, "Dequeue-0002-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0003-1");
-			Assert.AreEqual (24, queue.Count, "Dequeue-0003-2");
-			Assert.AreEqual ("94cc61f5-312e-4d03-8d56-4e8b400f8ca0", item.Guid.ToString (), "Dequeue-0003-3");
-			Assert.AreEqual (true, item.Disabled, "Dequeue-0003-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0004-1");
-			Assert.AreEqual (23, queue.Count, "Dequeue-0004-2");
-			Assert.AreEqual ("2d354d5c-8996-4932-ba5f-cd3591fe95cb", item.Guid.ToString (), "Dequeue-0004-3");
-			Assert.AreEqual (true, item.Disabled, "Dequeue-0004-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0005-1");
-			Assert.AreEqual (22, queue.Count, "Dequeue-0005-2");
-			Assert.AreEqual ("93a0e663-0354-4301-ac27-9e782091f661", item.Guid.ToString (), "Dequeue-0005-3");
-			Assert.AreEqual (false, item.Disabled, "Dequeue-0005-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0006-1");
-			Assert.AreEqual (21, queue.Count, "Dequeue-0006-2");
-			Assert.AreEqual ("817d3f42-bf7b-4a13-90bc-1895cafe2d23", item.Guid.ToString (), "Dequeue-0006-3");
-			Assert.AreEqual (true, item.Disabled, "Dequeue-0006-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0007-1");
-			Assert.AreEqual (20, queue.Count, "Dequeue-0007-2");
-			Assert.AreEqual ("39402800-3c1e-478c-8bdc-571d902e32a7", item.Guid.ToString (), "Dequeue-0007-3");
-			Assert.AreEqual (false, item.Disabled, "Dequeue-0007-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0008-1");
-			Assert.AreEqual (19, queue.Count, "Dequeue-0008-2");
-			Assert.AreEqual ("b45b3bd3-d55d-4c41-b9da-150c19ec0856", item.Guid.ToString (), "Dequeue-0008-3");
-			Assert.AreEqual (true, item.Disabled, "Dequeue-0008-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0009-1");
-			Assert.AreEqual (18, queue.Count, "Dequeue-0009-2");
-			Assert.AreEqual ("f7e86ec2-dc06-484f-81ed-df4373fff95b", item.Guid.ToString (), "Dequeue-0009-3");
-			Assert.AreEqual (false, item.Disabled, "Dequeue-0009-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0010-1");
-			Assert.AreEqual (17, queue.Count, "Dequeue-0010-2");
-			Assert.AreEqual ("ad6319f5-27bc-4444-9eb8-1320009ab184", item.Guid.ToString (), "Dequeue-0010-3");
-			Assert.AreEqual (false, item.Disabled, "Dequeue-0010-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0011-1");
-			Assert.AreEqual (16, queue.Count, "Dequeue-0011-2");
-			Assert.AreEqual ("7b0fb8c1-9642-4854-b979-7e223a092a3d", item.Guid.ToString (), "Dequeue-0011-3");
-			Assert.AreEqual (true, item.Disabled, "Dequeue-0011-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0012-1");
-			Assert.AreEqual (15, queue.Count, "Dequeue-0012-2");
-			Assert.AreEqual ("414bdd0b-ab30-4d61-aef2-2d34fd929ed2", item.Guid.ToString (), "Dequeue-0012-3");
-			Assert.AreEqual (false, item.Disabled, "Dequeue-0012-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0013-1");
-			Assert.AreEqual (14, queue.Count, "Dequeue-0013-2");
-			Assert.AreEqual ("c210ae2b-0c3d-4257-848d-f21ee48c02cc", item.Guid.ToString (), "Dequeue-0013-3");
-			Assert.AreEqual (true, item.Disabled, "Dequeue-0013-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0014-1");
-			Assert.AreEqual (13, queue.Count, "Dequeue-0014-2");
-			Assert.AreEqual ("e8b43015-cc9b-4cad-a881-faead4f18aa3", item.Guid.ToString (), "Dequeue-0014-3");
-			Assert.AreEqual (true, item.Disabled, "Dequeue-0014-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0015-1");
-			Assert.AreEqual (12, queue.Count, "Dequeue-0015-2");
-			Assert.AreEqual ("3866994b-3be5-4408-9077-529fe701d3f3", item.Guid.ToString (), "Dequeue-0015-3");
-			Assert.AreEqual (false, item.Disabled, "Dequeue-0015-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0016-1");
-			Assert.AreEqual (11, queue.Count, "Dequeue-0016-2");
-			Assert.AreEqual ("33191cc7-c1b4-4726-b428-64efb69a6c46", item.Guid.ToString (), "Dequeue-0016-3");
-			Assert.AreEqual (true, item.Disabled, "Dequeue-0016-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0017-1");
-			Assert.AreEqual (10, queue.Count, "Dequeue-0017-2");
-			Assert.AreEqual ("88bee6f1-09ac-4af2-9bc3-ebd619009377", item.Guid.ToString (), "Dequeue-0017-3");
-			Assert.AreEqual (true, item.Disabled, "Dequeue-0017-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0018-1");
-			Assert.AreEqual (9, queue.Count, "Dequeue-0018-2");
-			Assert.AreEqual ("986174eb-da85-4a7b-9919-cd0668db69bf", item.Guid.ToString (), "Dequeue-0018-3");
-			Assert.AreEqual (true, item.Disabled, "Dequeue-0018-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0019-1");
-			Assert.AreEqual (8, queue.Count, "Dequeue-0019-2");
-			Assert.AreEqual ("3c5fd8ab-a611-4bfb-afb0-5acee9b45dda", item.Guid.ToString (), "Dequeue-0019-3");
-			Assert.AreEqual (true, item.Disabled, "Dequeue-0019-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0020-1");
-			Assert.AreEqual (7, queue.Count, "Dequeue-0020-2");
-			Assert.AreEqual ("feebc79b-1867-42c9-a966-bbb448d78a44", item.Guid.ToString (), "Dequeue-0020-3");
-			Assert.AreEqual (true, item.Disabled, "Dequeue-0020-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0021-1");
-			Assert.AreEqual (6, queue.Count, "Dequeue-0021-2");
-			Assert.AreEqual ("474193d1-4fd9-4b06-873a-e575744957a4", item.Guid.ToString (), "Dequeue-0021-3");
-			Assert.AreEqual (true, item.Disabled, "Dequeue-0021-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0022-1");
-			Assert.AreEqual (5, queue.Count, "Dequeue-0022-2");
-			Assert.AreEqual ("66bc962f-bf18-48a4-8164-722a5f53d211", item.Guid.ToString (), "Dequeue-0022-3");
-			Assert.AreEqual (true, item.Disabled, "Dequeue-0022-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0023-1");
-			Assert.AreEqual (4, queue.Count, "Dequeue-0023-2");
-			Assert.AreEqual ("9096d210-ed15-4d38-9af2-26e59b0b8be0", item.Guid.ToString (), "Dequeue-0023-3");
-			Assert.AreEqual (true, item.Disabled, "Dequeue-0023-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0024-1");
-			Assert.AreEqual (3, queue.Count, "Dequeue-0024-2");
-			Assert.AreEqual ("4e49dc65-2c6a-4b2f-97e2-9cf09175c57a", item.Guid.ToString (), "Dequeue-0024-3");
-			Assert.AreEqual (true, item.Disabled, "Dequeue-0024-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0025-1");
-			Assert.AreEqual (2, queue.Count, "Dequeue-0025-2");
-			Assert.AreEqual ("417fc6e2-b9ae-40eb-906b-6e41b306a908", item.Guid.ToString (), "Dequeue-0025-3");
-			Assert.AreEqual (true, item.Disabled, "Dequeue-0025-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0026-1");
-			Assert.AreEqual (1, queue.Count, "Dequeue-0026-2");
-			Assert.AreEqual ("ac9cefe3-3331-4ee2-b0f1-69aaca2a955d", item.Guid.ToString (), "Dequeue-0026-3");
-			Assert.AreEqual (true, item.Disabled, "Dequeue-0026-4");
+			RunTest (tests_00003, list_00003);
+		}
 
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0027-1");
-			Assert.AreEqual (0, queue.Count, "Dequeue-0027-2");
-			Assert.AreEqual ("ae852a56-e081-4ee7-b360-81d4ba1a2000", item.Guid.ToString (), "Dequeue-0027-3");
-			Assert.AreEqual (false, item.Disabled, "Dequeue-0027-4");
+		// Each row contains TestCacheItem fields, in the following order:
+		// Key, AbsoluteExpiration, SlidingExpiration, Priority, LastChange, ExpiresAt, Disabled, Guid
+		object[] list_00004 = {
+			"PartialCachingControl\nGUID: f11febcc-d445-4036-bb93-aa3932ceb4ef\n", "2/3/2010 2:06:39 AM", "00:00:00", CacheItemPriority.Normal, "2/3/2010 2:06:34 AM", 634007595994690560, false, "757dc15a-3340-4704-9292-17f3004e2ee5",
+			"@@@InProc at B748F7C2AA1F04BCF40EAB40", "2/3/2010 2:26:34 AM", "00:20:00", CacheItemPriority.AboveNormal, "2/3/2010 2:06:34 AM", 634007607944742000, false, "a4778103-c8e9-4304-90db-3f54b718e50a",
+			"@@@InProc at B748F7C2AA1F04BCF40EAB40", "2/3/2010 2:26:34 AM", "00:20:00", CacheItemPriority.AboveNormal, "2/3/2010 2:06:34 AM", 634007607944758990, false, "246d4b59-6748-4bef-8f78-5b081b0686f1",
+			"@InMemoryOCP_vbk/default.aspxGETWQFH", "2/3/2010 2:06:42 AM", "00:00:00", CacheItemPriority.Normal, "2/3/2010 2:06:34 AM", 634007596029748620, false, "46616129-bd8d-402b-954f-a05944535e23",
+			"@prefix at _vbk/default.aspxGETWQFH", "2/3/2010 2:06:42 AM", "00:00:00", CacheItemPriority.Normal, "2/3/2010 2:06:34 AM", 634007596029748620, false, "f85a0942-6f20-4f71-ae57-3b2669052460",
+			"PartialCachingControl\nGUID: f11febcc-d445-4036-bb93-aa3932ceb4ef\n", "2/3/2010 2:06:58 AM", "00:00:00", CacheItemPriority.Normal, "2/3/2010 2:06:53 AM", 634007596187154840, false, "e8b1f7d4-a874-4b56-84ce-1434a72f9d35",
+			"@@@InProc at B748F7C2AA1F04BCF40EAB40", "2/3/2010 2:26:53 AM", "00:20:00", CacheItemPriority.AboveNormal, "2/3/2010 2:06:53 AM", 634007608137155850, false, "bc16a289-5ce4-436f-9791-1885f033bc6e",
+			"@@@InProc at B748F7C2AA1F04BCF40EAB40", "2/3/2010 2:26:53 AM", "00:20:00", CacheItemPriority.AboveNormal, "2/3/2010 2:06:53 AM", 634007608137156090, false, "f6651f9b-36fd-481d-bb31-8abc3d110a45",
+			"@InMemoryOCP_vbk/default.aspxGETWQFH", "2/3/2010 2:07:03 AM", "00:00:00", CacheItemPriority.Normal, "2/3/2010 2:06:53 AM", 634007596237139120, false, "226ef04f-1118-4225-abe1-43d6e228db95",
+			"@prefix at _vbk/default.aspxGETWQFH", "2/3/2010 2:07:03 AM", "00:00:00", CacheItemPriority.Normal, "2/3/2010 2:06:53 AM", 634007596237139120, false, "9df2ed49-168b-4769-8d9e-7f963e62123c",
+			"PartialCachingControl\nGUID: f11febcc-d445-4036-bb93-aa3932ceb4ef\n", "2/3/2010 2:07:30 AM", "00:00:00", CacheItemPriority.Normal, "2/3/2010 2:07:25 AM", 634007596504393570, false, "30952e54-d94b-450d-b1ff-5e74c66bb4f5",
+			"@@@InProc at B748F7C2AA1F04BCF40EAB40", "2/3/2010 2:27:25 AM", "00:20:00", CacheItemPriority.AboveNormal, "2/3/2010 2:07:25 AM", 634007608454399100, false, "e50d5a73-7861-412b-b9ad-924c13c2e9c5",
+			"@@@InProc at B748F7C2AA1F04BCF40EAB40", "2/3/2010 2:27:25 AM", "00:20:00", CacheItemPriority.AboveNormal, "2/3/2010 2:07:25 AM", 634007608454399320, false, "631452f5-a8e5-483e-a0ac-9c3f7abd37a1",
+			"@InMemoryOCP_vbk/default.aspxGETWQFH", "2/3/2010 2:07:35 AM", "00:00:00", CacheItemPriority.Normal, "2/3/2010 2:07:25 AM", 634007596554387900, false, "01a63c0e-5963-4eac-8b0e-b1b2ea508098",
+			"@prefix at _vbk/default.aspxGETWQFH", "2/3/2010 2:07:35 AM", "00:00:00", CacheItemPriority.Normal, "2/3/2010 2:07:25 AM", 634007596554387900, false, "9e38cf23-6785-49e8-9922-8e1c1d86a205",
+		};
 
-		}
+		 string[] tests_00004 = {
+			"0;1;0;f;f;f;0;757dc15a-3340-4704-9292-17f3004e2ee5",
+			"1;2;0;f;f;f;1;757dc15a-3340-4704-9292-17f3004e2ee5",
+			"1;2;2;f;f;t;0;a4778103-c8e9-4304-90db-3f54b718e50a",
+			"2;3;0;f;f;f;2;757dc15a-3340-4704-9292-17f3004e2ee5",
+			"3;4;0;f;f;f;3;757dc15a-3340-4704-9292-17f3004e2ee5",
+			"4;5;0;f;f;f;4;757dc15a-3340-4704-9292-17f3004e2ee5",
+			"0;5;3;f;f;f;0;757dc15a-3340-4704-9292-17f3004e2ee5",
+			"0;4;1;f;f;f;0;757dc15a-3340-4704-9292-17f3004e2ee5",
+			"0;4;2;f;f;t;0;757dc15a-3340-4704-9292-17f3004e2ee5",
+			"0;4;3;f;f;f;1;f85a0942-6f20-4f71-ae57-3b2669052460",
+			"0;3;1;f;f;f;1;f85a0942-6f20-4f71-ae57-3b2669052460",
+			"4;3;2;f;f;t;0;f85a0942-6f20-4f71-ae57-3b2669052460",
+			"0;3;3;f;f;f;2;46616129-bd8d-402b-954f-a05944535e23",
+			"0;2;1;f;f;f;2;46616129-bd8d-402b-954f-a05944535e23",
+			"3;2;2;f;f;t;0;46616129-bd8d-402b-954f-a05944535e23",
+			"0;2;3;t;f;f;3;a4778103-c8e9-4304-90db-3f54b718e50a",
+			"0;1;1;t;f;f;3;a4778103-c8e9-4304-90db-3f54b718e50a",
+			"0;0;1;f;f;f;4;246d4b59-6748-4bef-8f78-5b081b0686f1",
+			"5;1;0;f;f;f;5;e8b1f7d4-a874-4b56-84ce-1434a72f9d35",
+			"2;1;2;f;f;t;0;246d4b59-6748-4bef-8f78-5b081b0686f1",
+			"6;2;0;f;f;f;6;e8b1f7d4-a874-4b56-84ce-1434a72f9d35",
+			"6;2;2;f;f;t;0;bc16a289-5ce4-436f-9791-1885f033bc6e",
+			"7;3;0;f;f;f;7;e8b1f7d4-a874-4b56-84ce-1434a72f9d35",
+			"8;4;0;f;f;f;8;e8b1f7d4-a874-4b56-84ce-1434a72f9d35",
+			"9;5;0;f;f;f;9;e8b1f7d4-a874-4b56-84ce-1434a72f9d35",
+			"0;5;3;f;f;f;4;e8b1f7d4-a874-4b56-84ce-1434a72f9d35",
+			"0;4;1;f;f;f;5;e8b1f7d4-a874-4b56-84ce-1434a72f9d35",
+			"5;4;2;f;f;t;0;e8b1f7d4-a874-4b56-84ce-1434a72f9d35",
+			"0;4;3;f;f;f;5;9df2ed49-168b-4769-8d9e-7f963e62123c",
+			"0;4;3;f;f;f;6;9df2ed49-168b-4769-8d9e-7f963e62123c",
+			"0;3;1;f;f;f;6;9df2ed49-168b-4769-8d9e-7f963e62123c",
+			"9;3;2;f;f;t;0;9df2ed49-168b-4769-8d9e-7f963e62123c",
+			"0;3;3;f;f;f;7;226ef04f-1118-4225-abe1-43d6e228db95",
+			"0;2;1;f;f;f;7;226ef04f-1118-4225-abe1-43d6e228db95",
+			"8;2;2;f;f;t;0;226ef04f-1118-4225-abe1-43d6e228db95",
+			"0;2;3;t;f;f;8;bc16a289-5ce4-436f-9791-1885f033bc6e",
+			"0;1;1;t;f;f;8;bc16a289-5ce4-436f-9791-1885f033bc6e",
+			"0;0;1;f;f;f;9;f6651f9b-36fd-481d-bb31-8abc3d110a45",
+			"10;1;0;f;f;f;10;30952e54-d94b-450d-b1ff-5e74c66bb4f5",
+			"7;1;2;f;f;t;0;f6651f9b-36fd-481d-bb31-8abc3d110a45",
+			"11;2;0;f;f;f;11;30952e54-d94b-450d-b1ff-5e74c66bb4f5",
+			"11;2;2;f;f;t;0;e50d5a73-7861-412b-b9ad-924c13c2e9c5",
+			"12;3;0;f;f;f;12;30952e54-d94b-450d-b1ff-5e74c66bb4f5",
+			"13;4;0;f;f;f;13;30952e54-d94b-450d-b1ff-5e74c66bb4f5",
+			"14;5;0;f;f;f;14;30952e54-d94b-450d-b1ff-5e74c66bb4f5",
+			"0;5;3;f;f;f;9;30952e54-d94b-450d-b1ff-5e74c66bb4f5",
+			"0;4;1;f;f;f;10;30952e54-d94b-450d-b1ff-5e74c66bb4f5",
+			"10;4;2;f;f;t;0;30952e54-d94b-450d-b1ff-5e74c66bb4f5",
+			"0;4;3;f;f;f;10;9e38cf23-6785-49e8-9922-8e1c1d86a205",
+			"0;4;3;f;f;f;11;9e38cf23-6785-49e8-9922-8e1c1d86a205",
+			"0;3;1;f;f;f;11;9e38cf23-6785-49e8-9922-8e1c1d86a205",
+			"14;3;2;f;f;t;0;9e38cf23-6785-49e8-9922-8e1c1d86a205",
+			"0;3;3;f;f;f;12;01a63c0e-5963-4eac-8b0e-b1b2ea508098",
+			"0;2;1;f;f;f;12;01a63c0e-5963-4eac-8b0e-b1b2ea508098",
+			"13;2;2;f;f;t;0;01a63c0e-5963-4eac-8b0e-b1b2ea508098",
+			"0;2;3;t;f;f;13;e50d5a73-7861-412b-b9ad-924c13c2e9c5",
+			"0;1;1;t;f;f;13;e50d5a73-7861-412b-b9ad-924c13c2e9c5",
+			"0;0;1;f;f;f;14;631452f5-a8e5-483e-a0ac-9c3f7abd37a1",
+			"0;0;4;f;f;f;0;",
+		};
 
-		[Test (Description="Generated from sequence file cache_pq_sequence_2010-02-03_01:07:55.seq")]
+		[Test (Description="Generated from sequence file cache_pq_sequence_2010-02-03_01-07-55.seq")]
 		public void Sequence_0004 ()
 		{
-			var list = new List <CacheItem> {
-				new CacheItem {Key = "PartialCachingControl\nGUID: f11febcc-d445-4036-bb93-aa3932ceb4ef\n", AbsoluteExpiration = DateTime.Parse ("2/3/2010 2:06:39 AM"), SlidingExpiration = TimeSpan.Parse ("00:00:00"), Priority = CacheItemPriority.Normal, LastChange = DateTime.Parse ("2/3/2010 2:06:34 AM"), ExpiresAt = 634007595994690560, Disabled = false, Guid = new Guid ("757dc15a-3340-4704-9292-17f3004e2ee5")}, 
-				new CacheItem {Key = "@@@InProc at B748F7C2AA1F04BCF40EAB40", AbsoluteExpiration = DateTime.Parse ("2/3/2010 2:26:34 AM"), SlidingExpiration = TimeSpan.Parse ("00:20:00"), Priority = CacheItemPriority.AboveNormal, LastChange = DateTime.Parse ("2/3/2010 2:06:34 AM"), ExpiresAt = 634007607944742000, Disabled = false, Guid = new Guid ("a4778103-c8e9-4304-90db-3f54b718e50a")}, 
-				new CacheItem {Key = "@@@InProc at B748F7C2AA1F04BCF40EAB40", AbsoluteExpiration = DateTime.Parse ("2/3/2010 2:26:34 AM"), SlidingExpiration = TimeSpan.Parse ("00:20:00"), Priority = CacheItemPriority.AboveNormal, LastChange = DateTime.Parse ("2/3/2010 2:06:34 AM"), ExpiresAt = 634007607944758990, Disabled = false, Guid = new Guid ("246d4b59-6748-4bef-8f78-5b081b0686f1")}, 
-				new CacheItem {Key = "@InMemoryOCP_vbk/default.aspxGETWQFH", AbsoluteExpiration = DateTime.Parse ("2/3/2010 2:06:42 AM"), SlidingExpiration = TimeSpan.Parse ("00:00:00"), Priority = CacheItemPriority.Normal, LastChange = DateTime.Parse ("2/3/2010 2:06:34 AM"), ExpiresAt = 634007596029748620, Disabled = false, Guid = new Guid ("46616129-bd8d-402b-954f-a05944535e23")}, 
-				new CacheItem {Key = "@prefix at _vbk/default.aspxGETWQFH", AbsoluteExpiration = DateTime.Parse ("2/3/2010 2:06:42 AM"), SlidingExpiration = TimeSpan.Parse ("00:00:00"), Priority = CacheItemPriority.Normal, LastChange = DateTime.Parse ("2/3/2010 2:06:34 AM"), ExpiresAt = 634007596029748620, Disabled = false, Guid = new Guid ("f85a0942-6f20-4f71-ae57-3b2669052460")}, 
-				new CacheItem {Key = "PartialCachingControl\nGUID: f11febcc-d445-4036-bb93-aa3932ceb4ef\n", AbsoluteExpiration = DateTime.Parse ("2/3/2010 2:06:58 AM"), SlidingExpiration = TimeSpan.Parse ("00:00:00"), Priority = CacheItemPriority.Normal, LastChange = DateTime.Parse ("2/3/2010 2:06:53 AM"), ExpiresAt = 634007596187154840, Disabled = false, Guid = new Guid ("e8b1f7d4-a874-4b56-84ce-1434a72f9d35")}, 
-				new CacheItem {Key = "@@@InProc at B748F7C2AA1F04BCF40EAB40", AbsoluteExpiration = DateTime.Parse ("2/3/2010 2:26:53 AM"), SlidingExpiration = TimeSpan.Parse ("00:20:00"), Priority = CacheItemPriority.AboveNormal, LastChange = DateTime.Parse ("2/3/2010 2:06:53 AM"), ExpiresAt = 634007608137155850, Disabled = false, Guid = new Guid ("bc16a289-5ce4-436f-9791-1885f033bc6e")}, 
-				new CacheItem {Key = "@@@InProc at B748F7C2AA1F04BCF40EAB40", AbsoluteExpiration = DateTime.Parse ("2/3/2010 2:26:53 AM"), SlidingExpiration = TimeSpan.Parse ("00:20:00"), Priority = CacheItemPriority.AboveNormal, LastChange = DateTime.Parse ("2/3/2010 2:06:53 AM"), ExpiresAt = 634007608137156090, Disabled = false, Guid = new Guid ("f6651f9b-36fd-481d-bb31-8abc3d110a45")}, 
-				new CacheItem {Key = "@InMemoryOCP_vbk/default.aspxGETWQFH", AbsoluteExpiration = DateTime.Parse ("2/3/2010 2:07:03 AM"), SlidingExpiration = TimeSpan.Parse ("00:00:00"), Priority = CacheItemPriority.Normal, LastChange = DateTime.Parse ("2/3/2010 2:06:53 AM"), ExpiresAt = 634007596237139120, Disabled = false, Guid = new Guid ("226ef04f-1118-4225-abe1-43d6e228db95")}, 
-				new CacheItem {Key = "@prefix at _vbk/default.aspxGETWQFH", AbsoluteExpiration = DateTime.Parse ("2/3/2010 2:07:03 AM"), SlidingExpiration = TimeSpan.Parse ("00:00:00"), Priority = CacheItemPriority.Normal, LastChange = DateTime.Parse ("2/3/2010 2:06:53 AM"), ExpiresAt = 634007596237139120, Disabled = false, Guid = new Guid ("9df2ed49-168b-4769-8d9e-7f963e62123c")}, 
-				new CacheItem {Key = "PartialCachingControl\nGUID: f11febcc-d445-4036-bb93-aa3932ceb4ef\n", AbsoluteExpiration = DateTime.Parse ("2/3/2010 2:07:30 AM"), SlidingExpiration = TimeSpan.Parse ("00:00:00"), Priority = CacheItemPriority.Normal, LastChange = DateTime.Parse ("2/3/2010 2:07:25 AM"), ExpiresAt = 634007596504393570, Disabled = false, Guid = new Guid ("30952e54-d94b-450d-b1ff-5e74c66bb4f5")}, 
-				new CacheItem {Key = "@@@InProc at B748F7C2AA1F04BCF40EAB40", AbsoluteExpiration = DateTime.Parse ("2/3/2010 2:27:25 AM"), SlidingExpiration = TimeSpan.Parse ("00:20:00"), Priority = CacheItemPriority.AboveNormal, LastChange = DateTime.Parse ("2/3/2010 2:07:25 AM"), ExpiresAt = 634007608454399100, Disabled = false, Guid = new Guid ("e50d5a73-7861-412b-b9ad-924c13c2e9c5")}, 
-				new CacheItem {Key = "@@@InProc at B748F7C2AA1F04BCF40EAB40", AbsoluteExpiration = DateTime.Parse ("2/3/2010 2:27:25 AM"), SlidingExpiration = TimeSpan.Parse ("00:20:00"), Priority = CacheItemPriority.AboveNormal, LastChange = DateTime.Parse ("2/3/2010 2:07:25 AM"), ExpiresAt = 634007608454399320, Disabled = false, Guid = new Guid ("631452f5-a8e5-483e-a0ac-9c3f7abd37a1")}, 
-				new CacheItem {Key = "@InMemoryOCP_vbk/default.aspxGETWQFH", AbsoluteExpiration = DateTime.Parse ("2/3/2010 2:07:35 AM"), SlidingExpiration = TimeSpan.Parse ("00:00:00"), Priority = CacheItemPriority.Normal, LastChange = DateTime.Parse ("2/3/2010 2:07:25 AM"), ExpiresAt = 634007596554387900, Disabled = false, Guid = new Guid ("01a63c0e-5963-4eac-8b0e-b1b2ea508098")}, 
-				new CacheItem {Key = "@prefix at _vbk/default.aspxGETWQFH", AbsoluteExpiration = DateTime.Parse ("2/3/2010 2:07:35 AM"), SlidingExpiration = TimeSpan.Parse ("00:00:00"), Priority = CacheItemPriority.Normal, LastChange = DateTime.Parse ("2/3/2010 2:07:25 AM"), ExpiresAt = 634007596554387900, Disabled = false, Guid = new Guid ("9e38cf23-6785-49e8-9922-8e1c1d86a205")}, 
-			};
-			var queue = new CacheItemPriorityQueue ();
-			CacheItem item;
-
-			queue.Enqueue (list [0]);
-			Assert.AreEqual (1, queue.Count, "Enqueue-0000-1");
-			Assert.AreEqual ("757dc15a-3340-4704-9292-17f3004e2ee5", queue.Peek ().Guid.ToString(), "Enqueue-0000-2");
-
-			queue.Enqueue (list [1]);
-			Assert.AreEqual (2, queue.Count, "Enqueue-0001-1");
-			Assert.AreEqual ("757dc15a-3340-4704-9292-17f3004e2ee5", queue.Peek ().Guid.ToString(), "Enqueue-0001-2");
-
-			item = list [1];
-			Assert.IsNotNull (item, "Disable-0000-1");
-			Assert.AreEqual ("a4778103-c8e9-4304-90db-3f54b718e50a", item.Guid.ToString(), "Disable-0000-3");
-			Assert.AreEqual (false, item.Disabled, "Disable-0000-3");
-			item.Disabled = true;
-
-			queue.Enqueue (list [2]);
-			Assert.AreEqual (3, queue.Count, "Enqueue-0002-1");
-			Assert.AreEqual ("757dc15a-3340-4704-9292-17f3004e2ee5", queue.Peek ().Guid.ToString(), "Enqueue-0002-2");
-
-			queue.Enqueue (list [3]);
-			Assert.AreEqual (4, queue.Count, "Enqueue-0003-1");
-			Assert.AreEqual ("757dc15a-3340-4704-9292-17f3004e2ee5", queue.Peek ().Guid.ToString(), "Enqueue-0003-2");
-
-			queue.Enqueue (list [4]);
-			Assert.AreEqual (5, queue.Count, "Enqueue-0004-1");
-			Assert.AreEqual ("757dc15a-3340-4704-9292-17f3004e2ee5", queue.Peek ().Guid.ToString(), "Enqueue-0004-2");
-
-			item = queue.Peek ();
-			Assert.IsNotNull (item, "Peek-0000-1");
-			Assert.AreEqual (5, queue.Count, "Peek-0000-2");
-			Assert.AreEqual ("757dc15a-3340-4704-9292-17f3004e2ee5", item.Guid.ToString (), "Peek-0000-3");
-			Assert.AreEqual (false, item.Disabled, "Peek-0000-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0000-1");
-			Assert.AreEqual (4, queue.Count, "Dequeue-0000-2");
-			Assert.AreEqual ("757dc15a-3340-4704-9292-17f3004e2ee5", item.Guid.ToString (), "Dequeue-0000-3");
-			Assert.AreEqual (false, item.Disabled, "Dequeue-0000-4");
-
-			item = list [0];
-			Assert.IsNotNull (item, "Disable-0001-1");
-			Assert.AreEqual ("757dc15a-3340-4704-9292-17f3004e2ee5", item.Guid.ToString(), "Disable-0001-3");
-			Assert.AreEqual (false, item.Disabled, "Disable-0001-3");
-			item.Disabled = true;
-
-			item = queue.Peek ();
-			Assert.IsNotNull (item, "Peek-0001-1");
-			Assert.AreEqual (4, queue.Count, "Peek-0001-2");
-			Assert.AreEqual ("f85a0942-6f20-4f71-ae57-3b2669052460", item.Guid.ToString (), "Peek-0001-3");
-			Assert.AreEqual (false, item.Disabled, "Peek-0001-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0001-1");
-			Assert.AreEqual (3, queue.Count, "Dequeue-0001-2");
-			Assert.AreEqual ("f85a0942-6f20-4f71-ae57-3b2669052460", item.Guid.ToString (), "Dequeue-0001-3");
-			Assert.AreEqual (false, item.Disabled, "Dequeue-0001-4");
-
-			item = list [4];
-			Assert.IsNotNull (item, "Disable-0002-1");
-			Assert.AreEqual ("f85a0942-6f20-4f71-ae57-3b2669052460", item.Guid.ToString(), "Disable-0002-3");
-			Assert.AreEqual (false, item.Disabled, "Disable-0002-3");
-			item.Disabled = true;
-
-			item = queue.Peek ();
-			Assert.IsNotNull (item, "Peek-0002-1");
-			Assert.AreEqual (3, queue.Count, "Peek-0002-2");
-			Assert.AreEqual ("46616129-bd8d-402b-954f-a05944535e23", item.Guid.ToString (), "Peek-0002-3");
-			Assert.AreEqual (false, item.Disabled, "Peek-0002-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0002-1");
-			Assert.AreEqual (2, queue.Count, "Dequeue-0002-2");
-			Assert.AreEqual ("46616129-bd8d-402b-954f-a05944535e23", item.Guid.ToString (), "Dequeue-0002-3");
-			Assert.AreEqual (false, item.Disabled, "Dequeue-0002-4");
-
-			item = list [3];
-			Assert.IsNotNull (item, "Disable-0003-1");
-			Assert.AreEqual ("46616129-bd8d-402b-954f-a05944535e23", item.Guid.ToString(), "Disable-0003-3");
-			Assert.AreEqual (false, item.Disabled, "Disable-0003-3");
-			item.Disabled = true;
-
-			item = queue.Peek ();
-			Assert.IsNotNull (item, "Peek-0003-1");
-			Assert.AreEqual (2, queue.Count, "Peek-0003-2");
-			Assert.AreEqual ("a4778103-c8e9-4304-90db-3f54b718e50a", item.Guid.ToString (), "Peek-0003-3");
-			Assert.AreEqual (true, item.Disabled, "Peek-0003-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0003-1");
-			Assert.AreEqual (1, queue.Count, "Dequeue-0003-2");
-			Assert.AreEqual ("a4778103-c8e9-4304-90db-3f54b718e50a", item.Guid.ToString (), "Dequeue-0003-3");
-			Assert.AreEqual (true, item.Disabled, "Dequeue-0003-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0004-1");
-			Assert.AreEqual (0, queue.Count, "Dequeue-0004-2");
-			Assert.AreEqual ("246d4b59-6748-4bef-8f78-5b081b0686f1", item.Guid.ToString (), "Dequeue-0004-3");
-			Assert.AreEqual (false, item.Disabled, "Dequeue-0004-4");
-
-			queue.Enqueue (list [5]);
-			Assert.AreEqual (1, queue.Count, "Enqueue-0005-1");
-			Assert.AreEqual ("e8b1f7d4-a874-4b56-84ce-1434a72f9d35", queue.Peek ().Guid.ToString(), "Enqueue-0005-2");
-
-			item = list [2];
-			Assert.IsNotNull (item, "Disable-0004-1");
-			Assert.AreEqual ("246d4b59-6748-4bef-8f78-5b081b0686f1", item.Guid.ToString(), "Disable-0004-3");
-			Assert.AreEqual (false, item.Disabled, "Disable-0004-3");
-			item.Disabled = true;
-
-			queue.Enqueue (list [6]);
-			Assert.AreEqual (2, queue.Count, "Enqueue-0006-1");
-			Assert.AreEqual ("e8b1f7d4-a874-4b56-84ce-1434a72f9d35", queue.Peek ().Guid.ToString(), "Enqueue-0006-2");
-
-			item = list [6];
-			Assert.IsNotNull (item, "Disable-0005-1");
-			Assert.AreEqual ("bc16a289-5ce4-436f-9791-1885f033bc6e", item.Guid.ToString(), "Disable-0005-3");
-			Assert.AreEqual (false, item.Disabled, "Disable-0005-3");
-			item.Disabled = true;
-
-			queue.Enqueue (list [7]);
-			Assert.AreEqual (3, queue.Count, "Enqueue-0007-1");
-			Assert.AreEqual ("e8b1f7d4-a874-4b56-84ce-1434a72f9d35", queue.Peek ().Guid.ToString(), "Enqueue-0007-2");
-
-			queue.Enqueue (list [8]);
-			Assert.AreEqual (4, queue.Count, "Enqueue-0008-1");
-			Assert.AreEqual ("e8b1f7d4-a874-4b56-84ce-1434a72f9d35", queue.Peek ().Guid.ToString(), "Enqueue-0008-2");
-
-			queue.Enqueue (list [9]);
-			Assert.AreEqual (5, queue.Count, "Enqueue-0009-1");
-			Assert.AreEqual ("e8b1f7d4-a874-4b56-84ce-1434a72f9d35", queue.Peek ().Guid.ToString(), "Enqueue-0009-2");
-
-			item = queue.Peek ();
-			Assert.IsNotNull (item, "Peek-0004-1");
-			Assert.AreEqual (5, queue.Count, "Peek-0004-2");
-			Assert.AreEqual ("e8b1f7d4-a874-4b56-84ce-1434a72f9d35", item.Guid.ToString (), "Peek-0004-3");
-			Assert.AreEqual (false, item.Disabled, "Peek-0004-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0005-1");
-			Assert.AreEqual (4, queue.Count, "Dequeue-0005-2");
-			Assert.AreEqual ("e8b1f7d4-a874-4b56-84ce-1434a72f9d35", item.Guid.ToString (), "Dequeue-0005-3");
-			Assert.AreEqual (false, item.Disabled, "Dequeue-0005-4");
-
-			item = list [5];
-			Assert.IsNotNull (item, "Disable-0006-1");
-			Assert.AreEqual ("e8b1f7d4-a874-4b56-84ce-1434a72f9d35", item.Guid.ToString(), "Disable-0006-3");
-			Assert.AreEqual (false, item.Disabled, "Disable-0006-3");
-			item.Disabled = true;
-
-			item = queue.Peek ();
-			Assert.IsNotNull (item, "Peek-0005-1");
-			Assert.AreEqual (4, queue.Count, "Peek-0005-2");
-			Assert.AreEqual ("9df2ed49-168b-4769-8d9e-7f963e62123c", item.Guid.ToString (), "Peek-0005-3");
-			Assert.AreEqual (false, item.Disabled, "Peek-0005-4");
-
-			item = queue.Peek ();
-			Assert.IsNotNull (item, "Peek-0006-1");
-			Assert.AreEqual (4, queue.Count, "Peek-0006-2");
-			Assert.AreEqual ("9df2ed49-168b-4769-8d9e-7f963e62123c", item.Guid.ToString (), "Peek-0006-3");
-			Assert.AreEqual (false, item.Disabled, "Peek-0006-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0006-1");
-			Assert.AreEqual (3, queue.Count, "Dequeue-0006-2");
-			Assert.AreEqual ("9df2ed49-168b-4769-8d9e-7f963e62123c", item.Guid.ToString (), "Dequeue-0006-3");
-			Assert.AreEqual (false, item.Disabled, "Dequeue-0006-4");
-
-			item = list [9];
-			Assert.IsNotNull (item, "Disable-0007-1");
-			Assert.AreEqual ("9df2ed49-168b-4769-8d9e-7f963e62123c", item.Guid.ToString(), "Disable-0007-3");
-			Assert.AreEqual (false, item.Disabled, "Disable-0007-3");
-			item.Disabled = true;
-
-			item = queue.Peek ();
-			Assert.IsNotNull (item, "Peek-0007-1");
-			Assert.AreEqual (3, queue.Count, "Peek-0007-2");
-			Assert.AreEqual ("226ef04f-1118-4225-abe1-43d6e228db95", item.Guid.ToString (), "Peek-0007-3");
-			Assert.AreEqual (false, item.Disabled, "Peek-0007-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0007-1");
-			Assert.AreEqual (2, queue.Count, "Dequeue-0007-2");
-			Assert.AreEqual ("226ef04f-1118-4225-abe1-43d6e228db95", item.Guid.ToString (), "Dequeue-0007-3");
-			Assert.AreEqual (false, item.Disabled, "Dequeue-0007-4");
-
-			item = list [8];
-			Assert.IsNotNull (item, "Disable-0008-1");
-			Assert.AreEqual ("226ef04f-1118-4225-abe1-43d6e228db95", item.Guid.ToString(), "Disable-0008-3");
-			Assert.AreEqual (false, item.Disabled, "Disable-0008-3");
-			item.Disabled = true;
-
-			item = queue.Peek ();
-			Assert.IsNotNull (item, "Peek-0008-1");
-			Assert.AreEqual (2, queue.Count, "Peek-0008-2");
-			Assert.AreEqual ("bc16a289-5ce4-436f-9791-1885f033bc6e", item.Guid.ToString (), "Peek-0008-3");
-			Assert.AreEqual (true, item.Disabled, "Peek-0008-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0008-1");
-			Assert.AreEqual (1, queue.Count, "Dequeue-0008-2");
-			Assert.AreEqual ("bc16a289-5ce4-436f-9791-1885f033bc6e", item.Guid.ToString (), "Dequeue-0008-3");
-			Assert.AreEqual (true, item.Disabled, "Dequeue-0008-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0009-1");
-			Assert.AreEqual (0, queue.Count, "Dequeue-0009-2");
-			Assert.AreEqual ("f6651f9b-36fd-481d-bb31-8abc3d110a45", item.Guid.ToString (), "Dequeue-0009-3");
-			Assert.AreEqual (false, item.Disabled, "Dequeue-0009-4");
-
-			queue.Enqueue (list [10]);
-			Assert.AreEqual (1, queue.Count, "Enqueue-0010-1");
-			Assert.AreEqual ("30952e54-d94b-450d-b1ff-5e74c66bb4f5", queue.Peek ().Guid.ToString(), "Enqueue-0010-2");
-
-			item = list [7];
-			Assert.IsNotNull (item, "Disable-0009-1");
-			Assert.AreEqual ("f6651f9b-36fd-481d-bb31-8abc3d110a45", item.Guid.ToString(), "Disable-0009-3");
-			Assert.AreEqual (false, item.Disabled, "Disable-0009-3");
-			item.Disabled = true;
-
-			queue.Enqueue (list [11]);
-			Assert.AreEqual (2, queue.Count, "Enqueue-0011-1");
-			Assert.AreEqual ("30952e54-d94b-450d-b1ff-5e74c66bb4f5", queue.Peek ().Guid.ToString(), "Enqueue-0011-2");
-
-			item = list [11];
-			Assert.IsNotNull (item, "Disable-0010-1");
-			Assert.AreEqual ("e50d5a73-7861-412b-b9ad-924c13c2e9c5", item.Guid.ToString(), "Disable-0010-3");
-			Assert.AreEqual (false, item.Disabled, "Disable-0010-3");
-			item.Disabled = true;
-
-			queue.Enqueue (list [12]);
-			Assert.AreEqual (3, queue.Count, "Enqueue-0012-1");
-			Assert.AreEqual ("30952e54-d94b-450d-b1ff-5e74c66bb4f5", queue.Peek ().Guid.ToString(), "Enqueue-0012-2");
-
-			queue.Enqueue (list [13]);
-			Assert.AreEqual (4, queue.Count, "Enqueue-0013-1");
-			Assert.AreEqual ("30952e54-d94b-450d-b1ff-5e74c66bb4f5", queue.Peek ().Guid.ToString(), "Enqueue-0013-2");
-
-			queue.Enqueue (list [14]);
-			Assert.AreEqual (5, queue.Count, "Enqueue-0014-1");
-			Assert.AreEqual ("30952e54-d94b-450d-b1ff-5e74c66bb4f5", queue.Peek ().Guid.ToString(), "Enqueue-0014-2");
-
-			item = queue.Peek ();
-			Assert.IsNotNull (item, "Peek-0009-1");
-			Assert.AreEqual (5, queue.Count, "Peek-0009-2");
-			Assert.AreEqual ("30952e54-d94b-450d-b1ff-5e74c66bb4f5", item.Guid.ToString (), "Peek-0009-3");
-			Assert.AreEqual (false, item.Disabled, "Peek-0009-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0010-1");
-			Assert.AreEqual (4, queue.Count, "Dequeue-0010-2");
-			Assert.AreEqual ("30952e54-d94b-450d-b1ff-5e74c66bb4f5", item.Guid.ToString (), "Dequeue-0010-3");
-			Assert.AreEqual (false, item.Disabled, "Dequeue-0010-4");
-
-			item = list [10];
-			Assert.IsNotNull (item, "Disable-0011-1");
-			Assert.AreEqual ("30952e54-d94b-450d-b1ff-5e74c66bb4f5", item.Guid.ToString(), "Disable-0011-3");
-			Assert.AreEqual (false, item.Disabled, "Disable-0011-3");
-			item.Disabled = true;
-
-			item = queue.Peek ();
-			Assert.IsNotNull (item, "Peek-0010-1");
-			Assert.AreEqual (4, queue.Count, "Peek-0010-2");
-			Assert.AreEqual ("9e38cf23-6785-49e8-9922-8e1c1d86a205", item.Guid.ToString (), "Peek-0010-3");
-			Assert.AreEqual (false, item.Disabled, "Peek-0010-4");
-
-			item = queue.Peek ();
-			Assert.IsNotNull (item, "Peek-0011-1");
-			Assert.AreEqual (4, queue.Count, "Peek-0011-2");
-			Assert.AreEqual ("9e38cf23-6785-49e8-9922-8e1c1d86a205", item.Guid.ToString (), "Peek-0011-3");
-			Assert.AreEqual (false, item.Disabled, "Peek-0011-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0011-1");
-			Assert.AreEqual (3, queue.Count, "Dequeue-0011-2");
-			Assert.AreEqual ("9e38cf23-6785-49e8-9922-8e1c1d86a205", item.Guid.ToString (), "Dequeue-0011-3");
-			Assert.AreEqual (false, item.Disabled, "Dequeue-0011-4");
-
-			item = list [14];
-			Assert.IsNotNull (item, "Disable-0012-1");
-			Assert.AreEqual ("9e38cf23-6785-49e8-9922-8e1c1d86a205", item.Guid.ToString(), "Disable-0012-3");
-			Assert.AreEqual (false, item.Disabled, "Disable-0012-3");
-			item.Disabled = true;
-
-			item = queue.Peek ();
-			Assert.IsNotNull (item, "Peek-0012-1");
-			Assert.AreEqual (3, queue.Count, "Peek-0012-2");
-			Assert.AreEqual ("01a63c0e-5963-4eac-8b0e-b1b2ea508098", item.Guid.ToString (), "Peek-0012-3");
-			Assert.AreEqual (false, item.Disabled, "Peek-0012-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0012-1");
-			Assert.AreEqual (2, queue.Count, "Dequeue-0012-2");
-			Assert.AreEqual ("01a63c0e-5963-4eac-8b0e-b1b2ea508098", item.Guid.ToString (), "Dequeue-0012-3");
-			Assert.AreEqual (false, item.Disabled, "Dequeue-0012-4");
-
-			item = list [13];
-			Assert.IsNotNull (item, "Disable-0013-1");
-			Assert.AreEqual ("01a63c0e-5963-4eac-8b0e-b1b2ea508098", item.Guid.ToString(), "Disable-0013-3");
-			Assert.AreEqual (false, item.Disabled, "Disable-0013-3");
-			item.Disabled = true;
-
-			item = queue.Peek ();
-			Assert.IsNotNull (item, "Peek-0013-1");
-			Assert.AreEqual (2, queue.Count, "Peek-0013-2");
-			Assert.AreEqual ("e50d5a73-7861-412b-b9ad-924c13c2e9c5", item.Guid.ToString (), "Peek-0013-3");
-			Assert.AreEqual (true, item.Disabled, "Peek-0013-4");
-
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0013-1");
-			Assert.AreEqual (1, queue.Count, "Dequeue-0013-2");
-			Assert.AreEqual ("e50d5a73-7861-412b-b9ad-924c13c2e9c5", item.Guid.ToString (), "Dequeue-0013-3");
-			Assert.AreEqual (true, item.Disabled, "Dequeue-0013-4");
+			RunTest (tests_00004, list_00004);
+		}
 
-			item = queue.Dequeue ();
-			Assert.IsNotNull (item, "Dequeue-0014-1");
-			Assert.AreEqual (0, queue.Count, "Dequeue-0014-2");
-			Assert.AreEqual ("631452f5-a8e5-483e-a0ac-9c3f7abd37a1", item.Guid.ToString (), "Dequeue-0014-3");
-			Assert.AreEqual (false, item.Disabled, "Dequeue-0014-4");
+		// Each row contains TestCacheItem fields, in the following order:
+		// Key, AbsoluteExpiration, SlidingExpiration, Priority, LastChange, ExpiresAt, Disabled, Guid
+		object[] list_00005 = {
+			"@@@InProc at D1318B83BAD16D1ECF216500", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222042790, false, "3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"@@@InProc at EE0320CBDE6E5D9FDD7CAF76", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222042830, false, "e4cfd28d-a5b9-47f0-96b9-82525fe6643a",
+			"@@@InProc at D1318B83BAD16D1ECF216500", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222138600, false, "bd4e8d1a-af93-4690-9d23-567cd5aa4111",
+			"@@@InProc at EE0320CBDE6E5D9FDD7CAF76", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222138680, false, "f29be79c-0c7d-4d58-8845-5bfbdb604f6d",
+			"@@@InProc at EF0A51AB8AB18FA663D333C8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222342570, false, "f8b5a842-1cdd-4bf9-b320-b5cc9805357b",
+			"@@@InProc at 8CE558829A32924C339675F5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222342660, false, "e8af11c1-cc34-432d-9731-5268f94ece3e",
+			"@@@InProc at EF0A51AB8AB18FA663D333C8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222344770, false, "50bc5d3a-3012-4579-9bf3-731315c039e5",
+			"@@@InProc at 8CE558829A32924C339675F5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222344850, false, "177d8ce5-128d-4180-903c-7c051e11e11b",
+			"@@@InProc at FC4B47E0301DC24B9C5EF3B6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222358790, false, "22bc860d-6c95-4a8e-b97c-694c167b742a",
+			"@@@InProc at FC4B47E0301DC24B9C5EF3B6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222359930, false, "d4b7db4c-44b5-4277-8ad6-479d11dc9acb",
+			"@@@InProc at 997A5516427659DF13725126", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222361370, false, "3e05cf61-ebaa-4f3d-9d5e-d7070e360931",
+			"@@@InProc at 997A5516427659DF13725126", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222367880, false, "d923769d-e9e8-4323-9845-15723834cfce",
+			"@@@InProc at F41CE9B4DA5C11FDE93FE55C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222376190, false, "1c0a0f88-1426-471f-a4c8-918f12eb092e",
+			"@@@InProc at F41CE9B4DA5C11FDE93FE55C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222380150, false, "20129f07-10c4-4a9b-b7c2-21197f67c7cf",
+			"@@@InProc at C51648D534E5FBD396F422A1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222382660, false, "69e6d3ca-9aa7-4367-b914-1ead42bfb4b9",
+			"@@@InProc at C51648D534E5FBD396F422A1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222384200, false, "64477323-8876-4f71-998a-3d814b208e7f",
+			"@@@InProc at 5C973B37A0995EFB401D23C0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222397660, false, "2c5e2dc3-5ffc-4a5c-9837-c16f644a8128",
+			"@@@InProc at 8C15FCFDCF564A7E4301CD73", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222397730, false, "9b873675-51c1-414e-a3ed-6ca13fb81320",
+			"@@@InProc at 5C973B37A0995EFB401D23C0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222399000, false, "3cb49e31-cd93-46fe-a113-d5f3c2d07ba8",
+			"@@@InProc at 8C15FCFDCF564A7E4301CD73", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222399140, false, "6b012efd-27c1-47af-9dc2-932778e57752",
+			"@@@InProc at 79438BA5CF1DDB51CBA26273", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222406160, false, "57866729-dc0f-4886-b750-e518ece74fbf",
+			"@@@InProc at 9553C49A7AE2F758EAF442F3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222407010, false, "d5d02c82-2b69-40de-926b-2fab11cf92a6",
+			"@@@InProc at 79438BA5CF1DDB51CBA26273", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222407090, false, "449e58e2-bbfb-448f-b87c-f707f80f5844",
+			"@@@InProc at 9553C49A7AE2F758EAF442F3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222408270, false, "59195b81-5512-4600-9417-e961dcbb77d9",
+			"@@@InProc at 6E7B54E473C4D19961E133A1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222413660, false, "676a0e40-75be-4f7c-a59d-3561c28fd154",
+			"@@@InProc at 6E7B54E473C4D19961E133A1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222414340, false, "49558446-0449-4f5c-9222-db980b884067",
+			"@@@InProc at DB92AF9AD80BBF39670E624C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222420200, false, "54df1ca2-6cd1-44e8-ab1e-c51700fa2703",
+			"@@@InProc at 47C9A3CCD2D629D7F6BFF5A2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222420260, false, "a89b1c93-60e7-41e7-b2b3-8ea4e64f9364",
+			"@@@InProc at DB92AF9AD80BBF39670E624C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222421390, false, "1eeb18e3-cc7e-4463-af59-018d4be093dd",
+			"@@@InProc at 47C9A3CCD2D629D7F6BFF5A2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222421510, false, "e10881be-4e0b-46f5-a1a7-c3fd1162593e",
+			"@@@InProc at 303EBCEB07B5F515FB79FCF2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222427170, false, "6f4359cb-9151-4365-9486-f75d06f94283",
+			"@@@InProc at 303EBCEB07B5F515FB79FCF2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222427890, false, "2a426b0c-e0e1-44d6-a250-c56ccb5caa64",
+			"@@@InProc at 2123158C5223E1C350C42B62", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222427950, false, "5f24e391-ffdf-471f-a76e-64b526700b20",
+			"@@@InProc at 2123158C5223E1C350C42B62", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222431260, false, "55f8050b-ec39-42ad-a52e-b53e322e28e0",
+			"@@@InProc at 93F529CF60FCDBD88C599A70", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222433540, false, "edc08629-4948-407c-9a60-d76a7709997d",
+			"@@@InProc at 93F529CF60FCDBD88C599A70", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222434190, false, "dffbaecb-b174-42c9-b133-9bdf5c1ae9db",
+			"@@@InProc at 52921062CE897B3E865E1678", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222437230, false, "b109b9a6-f4e5-412d-a1ff-67c504b60f3e",
+			"@@@InProc at 52921062CE897B3E865E1678", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222437810, false, "d99f6ed2-b0c2-47bc-bb99-2d5ec350cf22",
+			"@@@InProc at 8D919BCD7152DA35D7284BF0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222439770, false, "e292f9fe-2a0d-4e8c-bbd0-bd0bfaf7fdcc",
+			"@@@InProc at 8D919BCD7152DA35D7284BF0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222440540, false, "6d70bae1-cd03-4801-8e40-e8949ddce593",
+			"@@@InProc at 8B0A2780DA3F9657A6DF8DB0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222443330, false, "dc63060c-a8d4-4e8f-bcd3-8e74da84564c",
+			"@@@InProc at 8B0A2780DA3F9657A6DF8DB0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222443970, false, "69954bb5-3e55-43ec-a156-5bf1dd08fad3",
+			"@@@InProc at 9C24B96617A0CC58DC034D61", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222446290, false, "13aab0f5-b0d5-4814-b591-641c7c0caed0",
+			"@@@InProc at 9C24B96617A0CC58DC034D61", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222447030, false, "4c9c108e-7220-486b-81a7-e654bffd2264",
+			"@@@InProc at 7CD4A2CAAC25706C84A3B60E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222449990, false, "fe97fafa-dba3-4147-b550-072104f072a2",
+			"@@@InProc at 7CD4A2CAAC25706C84A3B60E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222450590, false, "9c80042a-f773-4587-8615-f82ad700aede",
+			"@@@InProc at 1EAFC16B87E258D45447B309", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222454340, false, "d4a5ae2b-3507-4010-8d8b-5385ec7f8852",
+			"@@@InProc at 1EAFC16B87E258D45447B309", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222455530, false, "abec4b94-79a5-4b4b-ba45-001bfe62988c",
+			"@@@InProc at 63266E685D5BAE06AABB3F54", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222458870, false, "1eef0ac8-b8a6-406d-abf9-ac3e8e34ddaa",
+			"@@@InProc at 63266E685D5BAE06AABB3F54", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222459910, false, "28abac8b-99f9-4e8d-9544-499a74156fcf",
+			"@@@InProc at CAAD9B8953AE97FDB1555C9C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222466660, false, "179c1fc0-0fdf-4ab8-972d-caf9539f51ef",
+			"@@@InProc at CAAD9B8953AE97FDB1555C9C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222468190, false, "818ce7fd-2004-4a68-8513-36242ea276b4",
+			"@@@InProc at BA0FAFB88F286CC8CEA70B8B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222469420, false, "18db6d02-344b-4f08-b014-bdda50ac9938",
+			"@@@InProc at BA0FAFB88F286CC8CEA70B8B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222470420, false, "fe5eabd6-c6be-4ee9-a0da-e3fd065faf92",
+			"@@@InProc at BD6AA1A152187BD6C90BF7E8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222478020, false, "48aab669-ffae-41d8-af7c-8b40b2275b9d",
+			"@@@InProc at BD6AA1A152187BD6C90BF7E8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222479030, false, "77aec83d-e54c-494b-a1c1-9609d762a66b",
+			"@@@InProc at 3A135B6C392719E25DF31399", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222480120, false, "c592f9e5-5c9c-420d-a2c2-1203c5884600",
+			"@@@InProc at 3A135B6C392719E25DF31399", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222481140, false, "552da699-c83e-48de-ba5e-cc050691956d",
+			"@@@InProc at 750023F507EC17A0D223E62D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222488720, false, "48e048e6-303c-4171-aae7-38b6961ae227",
+			"@@@InProc at 750023F507EC17A0D223E62D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222489720, false, "574e497a-0836-40de-83df-6a68252cf892",
+			"@@@InProc at 55A9F40EF5E50950FE83B115", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222490700, false, "65daa9ed-5830-4199-80bc-b2ee04e05f83",
+			"@@@InProc at 55A9F40EF5E50950FE83B115", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222491590, false, "44650f2b-1b7f-479f-be79-7631efa8cf5a",
+			"@@@InProc at FD48E44EB6E6F821603510CF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222500160, false, "1291fa4f-1e5c-4f4f-ac87-a685467980cb",
+			"@@@InProc at FD48E44EB6E6F821603510CF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222501230, false, "abdd1b36-df22-4ee4-bb4c-5ad6d96b02ab",
+			"@@@InProc at A8BA1EDB95C0793B1334EA4D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222501690, false, "8df60bdb-071f-44c0-98bb-26598cb2e032",
+			"@@@InProc at A8BA1EDB95C0793B1334EA4D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222503190, false, "bc886471-0893-4673-9390-733da4e4a569",
+			"@@@InProc at 34388253042133A511BDA44C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222509920, false, "ffc714de-e2b7-4664-b98a-55f4cfba70eb",
+			"@@@InProc at 34388253042133A511BDA44C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222511100, false, "f97af357-eb79-4098-bead-5ad223ceed85",
+			"@@@InProc at AB92002DC8959CC89F5EC66E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222512730, false, "20c64a3e-3efe-47e1-9de1-cbb851e23e09",
+			"@@@InProc at AB92002DC8959CC89F5EC66E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222513610, false, "c455f261-2d35-4e69-b427-8c9c18e62365",
+			"@@@InProc at B77CE73DF45B6A985053A7FB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222520610, false, "637d2187-68b4-473c-abbb-c4611ea4005f",
+			"@@@InProc at B77CE73DF45B6A985053A7FB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222521660, false, "d5b772ba-a053-4220-b541-3b2e917ee23b",
+			"@@@InProc at 253D3E40559F6DA55F542912", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222522760, false, "9b31672d-5536-4a81-a616-e3954cdc6833",
+			"@@@InProc at 253D3E40559F6DA55F542912", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222523710, false, "06aeeaf5-386c-4bfe-94e5-afc9efd8b336",
+			"@@@InProc at 4AE3EEC8D57D6BB2E5828843", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222530220, false, "67826e76-e2bb-41c3-927f-8829e81ed8c7",
+			"@@@InProc at 4AE3EEC8D57D6BB2E5828843", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222531050, false, "94917bb5-c02e-414a-9f1a-a3bbaad27c38",
+			"@@@InProc at 9149470E3689CCD7CEA66DDA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222531900, false, "4b059aac-0959-42dd-900e-8d7921b4f8e1",
+			"@@@InProc at 9149470E3689CCD7CEA66DDA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222532750, false, "92af5ef4-d7ba-428c-96d3-86814e2949ea",
+			"@@@InProc at EC49A8EC8B5D3FA3F65BFF2E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222539440, false, "a7958417-65d3-4c43-9c74-8920a29d49cf",
+			"@@@InProc at EC49A8EC8B5D3FA3F65BFF2E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222540420, false, "84bfbebb-e2c4-4784-ae5d-63492b402183",
+			"@@@InProc at CA6B32D8D1F8371EA732C5F1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222541420, false, "a1476d09-5891-450d-95b3-513bc0a9ab9d",
+			"@@@InProc at CA6B32D8D1F8371EA732C5F1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222542790, false, "fa901041-549a-4722-8d31-f32fd672b0f4",
+			"@@@InProc at 8079698A9FFF0EECC1B20BEC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222549490, false, "fb95fd22-23b4-429d-8b1a-b31eed6be2a5",
+			"@@@InProc at 8079698A9FFF0EECC1B20BEC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222550520, false, "657daa87-761e-4bcb-88a0-73218df8c149",
+			"@@@InProc at 83B54ADF0661849646287CBB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222554380, false, "9e5422c5-659e-4538-91da-57ee2bbcebd5",
+			"@@@InProc at 83B54ADF0661849646287CBB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222555580, false, "4ca44521-dd74-4cb2-b5c3-1a4413f5fb18",
+			"@@@InProc at E1667C0509042C722ACCBFB1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222559180, false, "59fcaa72-9968-4b34-8d5c-a2251cd21a27",
+			"@@@InProc at E1667C0509042C722ACCBFB1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222560260, false, "762d942a-839a-4f37-bb43-5ca5130332b5",
+			"@@@InProc at 9DE675CCB8E3E8B119F3AAC6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222565030, false, "eb2db33d-937b-4c20-8a9a-ddb2e219b9b4",
+			"@@@InProc at 9DE675CCB8E3E8B119F3AAC6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222565850, false, "fad689f8-96fe-47ed-b012-04c4b36005a9",
+			"@@@InProc at BA541DE48A4D81775AD384A0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222569320, false, "330988be-9f4e-4f4f-8264-b465d05fedca",
+			"@@@InProc at BA541DE48A4D81775AD384A0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222570470, false, "7ea3990b-a545-421a-8bdb-df14afc9f25f",
+			"@@@InProc at 589D915F96CD764F9755F60B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222576570, false, "c3b04e2a-9e9b-482f-9ebc-b3f2a04ad20a",
+			"@@@InProc at 589D915F96CD764F9755F60B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222577400, false, "62c4bb44-6401-4184-a3b4-b0cc30262fbf",
+			"@@@InProc at D9F218D9F969DCAA3AD940F1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222580140, false, "df0e19dc-bcd2-4fd4-ab15-fb7bffabc4fd",
+			"@@@InProc at D9F218D9F969DCAA3AD940F1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222581100, false, "dbaaf221-9fc0-4cf1-ae42-3855ce6d80b5",
+			"@@@InProc at 333531B113C915EB1D9DEBB9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222585670, false, "28da0b6f-0575-4f51-80a4-08cffb0b10a1",
+			"@@@InProc at 333531B113C915EB1D9DEBB9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222586650, false, "372a0186-923f-4b1e-ad61-81ccfb2e8d61",
+			"@@@InProc at BB3E99A76674F124CA87949E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222589680, false, "c6a2d740-6852-4377-bd89-7d8a19964778",
+			"@@@InProc at BB3E99A76674F124CA87949E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222590860, false, "170a8755-502c-4f46-aa08-ab8c3c507cec",
+			"@@@InProc at 700EFBF2042283AB5D7951EC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222595510, false, "15e607d4-cc6d-4d69-9232-bd6f4d4849b7",
+			"@@@InProc at 700EFBF2042283AB5D7951EC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222596360, false, "a1f81864-caac-4476-b3cd-75b6aeaad364",
+			"@@@InProc at BA3E74AF8577E3EFDAE997C3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222599260, false, "0a1c10c6-a55d-4ce8-b9bd-baa31f9a63ed",
+			"@@@InProc at BA3E74AF8577E3EFDAE997C3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222600330, false, "0d3f26ca-6438-483f-89bd-6eb8cdc01379",
+			"@@@InProc at 1A26C36C97BE70E12A79AC2B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222604600, false, "569d55d6-da87-44c7-82fb-4471e5c88b6d",
+			"@@@InProc at 1A26C36C97BE70E12A79AC2B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222605430, false, "e75ac473-b05f-4f16-84af-90e871f54ab5",
+			"@@@InProc at B44BD222779F943739875ECB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222608960, false, "a7203713-22b8-4711-8c0f-e2a0ab9e928e",
+			"@@@InProc at B44BD222779F943739875ECB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222610020, false, "bd88b1b8-9725-4b90-8a7a-1e9bd36f50ce",
+			"@@@InProc at D342A61B6CE60A7320A53A50", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222613750, false, "017f43a1-0aaa-49a8-a401-14959c690256",
+			"@@@InProc at D342A61B6CE60A7320A53A50", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222614570, false, "a5807394-d9e0-45d2-a969-ca598c38ae6d",
+			"@@@InProc at 751C8E7C2D9B348CD8A54F45", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222618310, false, "670aace9-84c8-4852-b18b-e6c29ad54e86",
+			"@@@InProc at 751C8E7C2D9B348CD8A54F45", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222619400, false, "c5c31357-9395-4c4e-abfc-12c12f7d5b7e",
+			"@@@InProc at 2960EB0E09C241824E66597C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222622930, false, "96621690-38e5-47a8-91e7-a2115e3599de",
+			"@@@InProc at 2960EB0E09C241824E66597C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222623800, false, "9575079f-6263-416c-bbf4-375a6fd82e97",
+			"@@@InProc at ABE3CA2AA72976AD7CAB8D91", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222628110, false, "a22aaeac-bae6-4e57-a827-173ba6b94f8a",
+			"@@@InProc at ABE3CA2AA72976AD7CAB8D91", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222629110, false, "5fe4b914-df22-45f2-b96c-c8d469277c29",
+			"@@@InProc at 720065DCAB89141B18737ABF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222633010, false, "7ae55f8c-fd53-49f2-863a-d51ec8630af5",
+			"@@@InProc at 720065DCAB89141B18737ABF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222634050, false, "aa7836b4-2e93-4215-8f63-18e3410b5766",
+			"@@@InProc at 7BF5FC216A54A35ACA7A6641", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222638170, false, "ec4d3bba-722c-40b7-b0fb-dcad8d2229ff",
+			"@@@InProc at 7BF5FC216A54A35ACA7A6641", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222639070, false, "0e66f609-8751-4453-9d6f-a4679a93d031",
+			"@@@InProc at D109C33FD29C5D5E6993A20E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222642380, false, "cf388741-622b-4422-b333-a0101f819e35",
+			"@@@InProc at D109C33FD29C5D5E6993A20E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222643210, false, "5819aea2-1445-4906-8f8c-7bfb3491131e",
+			"@@@InProc at 2B36BDDA9C4E6F032C5A5021", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222648710, false, "221d8f2c-2d74-4675-ba35-62e1eb5fa510",
+			"@@@InProc at 2B36BDDA9C4E6F032C5A5021", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222649720, false, "ff12a411-e660-4caf-a5b3-7469c19aea2b",
+			"@@@InProc at 1780BE7F9AA26C2CCB23E482", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222654070, false, "a5cfcf50-6b09-453d-bdee-d13023a701f1",
+			"@@@InProc at 1780BE7F9AA26C2CCB23E482", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222655170, false, "c5a8a37b-1295-4fa1-8e3c-677990cff95c",
+			"@@@InProc at 0FAB967D8D8855FD705A0AE3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222658790, false, "52fbcd7f-afa0-42ae-95e8-49df34b3910f",
+			"@@@InProc at 0FAB967D8D8855FD705A0AE3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222659900, false, "1eec6f44-c3bc-4b70-b84f-d74d3f739ea2",
+			"@@@InProc at 9BA6350678F879D62F82ADE1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222666120, false, "f4d8cde0-d7b2-426b-a1e5-33ba3897f2e3",
+			"@@@InProc at 9BA6350678F879D62F82ADE1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222667180, false, "e68aad0c-cc93-413c-bed7-8460c268a059",
+			"@@@InProc at 7E453BFC4ABC4F12D4B04757", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222669770, false, "630ac214-921e-4c81-85bf-5ac1115448a5",
+			"@@@InProc at 7E453BFC4ABC4F12D4B04757", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222670760, false, "b3a9ea64-5d1e-423f-b6e4-1739575e937b",
+			"@@@InProc at 54E8F82D5D6FEF62E3960D07", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222676380, false, "bd12dfe4-b95a-4b8f-bb33-be8d61f83e5c",
+			"@@@InProc at 54E8F82D5D6FEF62E3960D07", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222677650, false, "443064c4-cf30-4e57-9193-a2f072fd32e6",
+			"@@@InProc at 94F8EEF3D38778507AD9AD74", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222679530, false, "99e03b55-0df1-416c-890f-6b1674322f7c",
+			"@@@InProc at 94F8EEF3D38778507AD9AD74", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222680330, false, "453c9f54-c8cb-4faa-a7ef-28fea167c6dc",
+			"@@@InProc at 441AF0041B1A9EA0EA658681", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222687940, false, "cee8170f-48db-40c0-baf6-7e1bb3717517",
+			"@@@InProc at D6F2C003643D39DEA2FDC283", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222689010, false, "ba4cdd7d-fe03-4619-bf8f-70afbe1127b8",
+			"@@@InProc at 441AF0041B1A9EA0EA658681", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222689090, false, "ac5c4e24-a633-409d-8e71-25ca8f9993d3",
+			"@@@InProc at D6F2C003643D39DEA2FDC283", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222690770, false, "0e14e044-ca91-4b7b-8c88-16e3acc706ce",
+			"@@@InProc at 560A884C386C3F0FC36D998F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222732600, false, "0a001f9d-0f05-4c44-b279-6dee2dc6b821",
+			"@@@InProc at 560A884C386C3F0FC36D998F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222733630, false, "221f0f20-0605-497e-8489-c4694d75567d",
+			"@@@InProc at 84C7C135E7E50E5C5C0A3C27", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222735160, false, "cd0cf514-c6a3-4c27-97fa-c97324f9b11b",
+			"@@@InProc at 84C7C135E7E50E5C5C0A3C27", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222735980, false, "c6ea1d17-7aad-4de1-aff0-22876b3d67b5",
+			"@@@InProc at EB221B397BC8D9FEDC3DABCF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222741720, false, "77ecf363-72f3-48dc-ba71-83489684d60d",
+			"@@@InProc at EB221B397BC8D9FEDC3DABCF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222742830, false, "1bd887a4-9b8c-43d1-8114-ebed468431d4",
+			"@@@InProc at 49ED6D39C1D0171D3AE2156C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222746510, false, "e2d653e5-2368-4949-98c0-dd9e22a5a585",
+			"@@@InProc at 49ED6D39C1D0171D3AE2156C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222747720, false, "3e360956-28ef-4417-98a4-b6a2e84c3ad7",
+			"@@@InProc at 1D5C2E78777332582E6C9260", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222750950, false, "36f913ca-79f7-468d-85bd-1f9e57903df4",
+			"@@@InProc at 1D5C2E78777332582E6C9260", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222752000, false, "9c8895e2-7253-4e66-9baa-d6f2be25920b",
+			"@@@InProc at D12EA51EE58ED14FF609BD40", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222757580, false, "1684fc54-179c-4a88-8330-2c77a9fc2feb",
+			"@@@InProc at D12EA51EE58ED14FF609BD40", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222758420, false, "9212388c-fc9b-437b-82d3-d542c8b65e07",
+			"@@@InProc at 430F4E674A8D67658AE7B838", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222760050, false, "1b2c263f-77b5-4c3d-b062-468833684788",
+			"@@@InProc at 430F4E674A8D67658AE7B838", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222760850, false, "0c7add4b-a479-4c5f-a84a-bfdb930346f4",
+			"@@@InProc at 68482CAC37F9A23EDCBF1C6C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222766900, false, "7f89b92a-ea20-4d07-a249-8a9a081f0d2d",
+			"@@@InProc at 68482CAC37F9A23EDCBF1C6C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222767990, false, "e7e3eb31-a412-43aa-b13f-6fc1ef9d0b3a",
+			"@@@InProc at 53D54FDEC076E9F251B2A2DA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222769400, false, "51da55ed-7581-4cad-a9c9-0e6d235eceea",
+			"@@@InProc at 53D54FDEC076E9F251B2A2DA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222770250, false, "5b0f6e0f-71d3-4dfc-8fcc-8bf0e5db58a0",
+			"@@@InProc at 0A442138C7AF1450C1F053B5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222776160, false, "798fb117-c00a-4115-bf01-36918ce65b36",
+			"@@@InProc at 0A442138C7AF1450C1F053B5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222777390, false, "74b71bbd-7835-4e7a-a24f-08209a1b0ae7",
+			"@@@InProc at 528B9E8778DF92CB2F23E6FA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222778460, false, "88f5128c-36f5-453f-aea6-9d8c1f2d4c1d",
+			"@@@InProc at 528B9E8778DF92CB2F23E6FA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222779310, false, "1e57e330-ddb5-455d-84c4-d3026752beba",
+			"@@@InProc at 7256788EFAC7A4E62530FCC8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222786070, false, "987cd2f3-6a85-4a1a-a2ae-4b9abf1c5a44",
+			"@@@InProc at 7256788EFAC7A4E62530FCC8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222786880, false, "eccfab32-ea82-4d3d-9bb7-bcc1aa93c66b",
+			"@@@InProc at 6436E7F362FF88975AE49B64", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222787170, false, "602ad5b3-cad2-4df7-b16e-a03c40e07f3b",
+			"@@@InProc at 6436E7F362FF88975AE49B64", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222788330, false, "6ed906b9-9c2d-4143-aaf5-8a566b3db946",
+			"@@@InProc at 1F079C9355F0CCA202A9E3AF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222795180, false, "a9a98216-e1bf-4f04-b811-0e1e9087ea37",
+			"@@@InProc at 1F079C9355F0CCA202A9E3AF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222796030, false, "72dadd9f-f3dc-449e-983d-4319f1c4835b",
+			"@@@InProc at 43353EAA671E43F9B41D1471", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222796140, false, "a4f4a535-16d8-4c67-9bff-405ebf7fcb51",
+			"@@@InProc at 43353EAA671E43F9B41D1471", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222797380, false, "613940f3-bbf1-4493-b7be-43c8b06533e7",
+			"@@@InProc at 10A1FE0D81BEEB05A6B3D975", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222804670, false, "8391eddd-f85a-4534-a652-dc8f6f77c85b",
+			"@@@InProc at 10A1FE0D81BEEB05A6B3D975", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222805520, false, "7f3c9089-4cfc-4b01-8a72-03ff6cd57992",
+			"@@@InProc at 8D574EDE4D25956F95C8DA44", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222806340, false, "ba1592b1-aac0-4b8c-8a0d-f14636889eab",
+			"@@@InProc at 8D574EDE4D25956F95C8DA44", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222807150, false, "5550e09d-0cc1-4791-8eb4-7854b532c2b7",
+			"@@@InProc at 8EF270E2725C60658EE3355B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222813110, false, "e11f8272-f017-4f82-b643-fc0c197f20ab",
+			"@@@InProc at 8EF270E2725C60658EE3355B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222814210, false, "74f9d7e0-ea68-49e1-8fb7-44c1fef60dca",
+			"@@@InProc at EB25BD4F1D01CC0A49C28089", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222814570, false, "fa8da2d1-180b-4e66-b44e-4885833ca991",
+			"@@@InProc at EB25BD4F1D01CC0A49C28089", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222816230, false, "e1a0c735-3598-4ce2-b2d0-43873412299e",
+			"@@@InProc at 83AFFCA9AC4BCA9FA6F2A57A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222822540, false, "67a70156-4b5b-48ae-8a09-04db933cc1f6",
+			"@@@InProc at 83AFFCA9AC4BCA9FA6F2A57A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222823360, false, "ce460048-44a3-4214-8c49-26465e35a0b1",
+			"@@@InProc at 2EAD7CD6E473B9B75D524CF9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222824200, false, "e827dce7-9e74-4c4d-9e64-f657d71039b4",
+			"@@@InProc at 2EAD7CD6E473B9B75D524CF9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222825110, false, "0cb4d04d-c4f3-4d0a-af00-08384d271cde",
+			"@@@InProc at 36A3C2E91DC7C6E8CEA75C60", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222831420, false, "60ce7200-c390-41f5-b55b-fed766e2de19",
+			"@@@InProc at 36A3C2E91DC7C6E8CEA75C60", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222832340, false, "e14d42ba-30f7-41ab-8b61-cf047a60eefc",
+			"@@@InProc at F81D82A6B40F11C7B8A3C347", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222833200, false, "1f245da8-3c2b-428f-a054-b6096a35bc99",
+			"@@@InProc at F81D82A6B40F11C7B8A3C347", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222834010, false, "80438c00-3897-4067-a86a-4b02ac83d34c",
+			"@@@InProc at E87420530427E0F742DBB99C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222840770, false, "04aaa402-83cf-41b2-a51c-e7e367614035",
+			"@@@InProc at E87420530427E0F742DBB99C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222841580, false, "eda74c1e-cb35-4c3e-a46a-2401d471c655",
+			"@@@InProc at B0FEFB1209182D6D9FFEB5DB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222841780, false, "747d2ce7-efd0-478b-adce-50f3bcae0449",
+			"@@@InProc at B0FEFB1209182D6D9FFEB5DB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222843100, false, "3342299c-6f88-4b6e-8ff9-4af4905d4e61",
+			"@@@InProc at B5FF14BACBE237FAF289D0D5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222849940, false, "e09c5fe0-6a1f-4e0e-9bc4-4afbd2471e79",
+			"@@@InProc at B5FF14BACBE237FAF289D0D5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222851020, false, "46492cb9-52ef-43cd-94ca-9d819eb0097c",
+			"@@@InProc at 06525D87077713C328BAFC1B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222853450, false, "ce5f4b8f-23e6-4edd-ba21-fdc0ad374c0e",
+			"@@@InProc at 06525D87077713C328BAFC1B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222854770, false, "3f710987-0519-452a-a992-cbb77a308ab8",
+			"@@@InProc at 90E8F634541AFE0FF8F6ABE9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222858560, false, "85e4c9fd-2cb2-4cef-8e2f-b0fd8ca30e86",
+			"@@@InProc at 90E8F634541AFE0FF8F6ABE9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222859330, false, "5c77ddd6-4705-4578-bf86-ada93d864e42",
+			"@@@InProc at 5F12C7A4E6142470BA2916BC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222862160, false, "069fbf08-e410-48c5-92a9-3116ea3bc9b0",
+			"@@@InProc at 5F12C7A4E6142470BA2916BC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222863120, false, "81bf1e1d-a812-4453-ad6e-f72cf3a9d8b3",
+			"@@@InProc at 4CE3F2F77659415321CF2D58", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222866740, false, "6bf9b25b-046c-4fff-86ee-19f84718e4fd",
+			"@@@InProc at 4CE3F2F77659415321CF2D58", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222867650, false, "d851f9e0-78e8-4a55-b1dc-b80e8b4fb594",
+			"@@@InProc at BE3CD68FAB08762CB85702C7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222870690, false, "b501f6a0-e685-4461-ae87-7ce950655840",
+			"@@@InProc at BE3CD68FAB08762CB85702C7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222871600, false, "1d89568c-cf39-4a11-ba04-5a2ec3f30612",
+			"@@@InProc at 0087F407E3A1C1B5CDFE64BA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222876850, false, "fad090fb-f8d9-45a2-88cf-f87e6f54baf9",
+			"@@@InProc at 0087F407E3A1C1B5CDFE64BA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222877970, false, "f8c27247-b8e2-49c0-bafb-df00e1a15882",
+			"@@@InProc at 0831F4D10B2A4AE3C0DB60C7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222880430, false, "90051d21-32fe-4e52-9eab-7e1113ef3f82",
+			"@@@InProc at 0831F4D10B2A4AE3C0DB60C7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222881660, false, "de0d52fd-bff3-430d-957d-6205bb5ae676",
+			"@@@InProc at B8A2C6126316A8641F3ACC8D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222888450, false, "1e5e9326-5afd-48ab-9089-df72009460ed",
+			"@@@InProc at B8A2C6126316A8641F3ACC8D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222889470, false, "103b364c-c93a-439c-b506-1c3e401c7385",
+			"@@@InProc at 613C4414B8F19B2F351F26C2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222890270, false, "4cc075e6-5bc3-4e6c-a2d3-bcede5a86f68",
+			"@@@InProc at 613C4414B8F19B2F351F26C2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222891060, false, "c21ce93b-b87f-4495-979b-a3e31a8dc86c",
+			"@@@InProc at 947FD824D5DFCEEAC6872F95", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222897130, false, "095b03ca-37c6-49db-a08c-5996d0930255",
+			"@@@InProc at 947FD824D5DFCEEAC6872F95", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222897900, false, "b49176c9-66db-4e85-89fd-7915e69bfb96",
+			"@@@InProc at 12F2BF29624DBFA4B91FD258", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222898680, false, "2adf52c2-47bf-44ab-bd91-b82e3f3a143c",
+			"@@@InProc at 12F2BF29624DBFA4B91FD258", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222899470, false, "f08a5978-0aec-44eb-8ccc-a9f45a5c9905",
+			"@@@InProc at 52EF02BA11C7676BB62D8F6D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222905770, false, "8b9bbb09-9317-4f29-9383-ce944c99c8df",
+			"@@@InProc at 52EF02BA11C7676BB62D8F6D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222906550, false, "e055b888-7e45-459b-a20b-76034398b7d2",
+			"@@@InProc at 306E3EFC2FA52923ED3686D0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222906890, false, "44681b55-90e6-46d3-aed3-580bece11745",
+			"@@@InProc at 306E3EFC2FA52923ED3686D0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222907940, false, "eeab272b-54fa-4329-98d9-dc42635534c6",
+			"@@@InProc at 86D8A2E506652245780FC9E8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222913800, false, "2c83ac5f-8fb4-4932-a50d-90b1b827d59e",
+			"@@@InProc at 86D8A2E506652245780FC9E8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222914570, false, "28a3ee88-7fe0-453b-a4c5-5a083c5ead48",
+			"@@@InProc at 3D4D8D58EE4C2B88CAB00C3B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222915430, false, "eca5d58a-bb99-45aa-8ed2-f2460b70f7f7",
+			"@@@InProc at 3D4D8D58EE4C2B88CAB00C3B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222916210, false, "132b178e-13db-48b4-9c57-88897fac3986",
+			"@@@InProc at 091A48C3AFEEA454B05A7A06", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222922290, false, "adab4486-7bbb-4097-959a-1479d27242db",
+			"@@@InProc at 091A48C3AFEEA454B05A7A06", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222923050, false, "84fe757d-59a0-4074-8a62-6e2757b6d3e3",
+			"@@@InProc at 5D6162703F95549C507EA6FB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222923810, false, "2eaacdf2-47a9-4249-92a0-b46e0ffcf6ee",
+			"@@@InProc at 5D6162703F95549C507EA6FB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222924580, false, "91b61bca-5d64-421a-8d05-4c0670fbc35b",
+			"@@@InProc at 4EB04D1D4D4F37FB2A7C1A9B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222930430, false, "7de52192-77e5-43f9-83be-6b69e3040ce9",
+			"@@@InProc at 4EB04D1D4D4F37FB2A7C1A9B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222931530, false, "181b4a09-9f89-4691-9f61-975f463d7a10",
+			"@@@InProc at 8446E84717C492E6B398F436", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222933090, false, "4b267b31-5432-4320-a141-927b39d662d2",
+			"@@@InProc at 8446E84717C492E6B398F436", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222933860, false, "f608577b-25cc-4ea2-b693-2ca2617a3194",
+			"@@@InProc at 07896CAB10FAA4B11ECAC956", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222939160, false, "41ddae5f-d6da-4444-afc0-adcb17657aa5",
+			"@@@InProc at 07896CAB10FAA4B11ECAC956", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222939990, false, "8dc1a218-8d8f-4b5b-8300-65e2894be9ed",
+			"@@@InProc at 71D1B0DD651CEB7CB3D74F99", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222941720, false, "16491431-ea5c-4310-8118-de567dc352b9",
+			"@@@InProc at 71D1B0DD651CEB7CB3D74F99", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222942630, false, "311b4f78-bfe8-4621-b5ab-d1b30f775f53",
+			"@@@InProc at FD8F11E9CC943557EFD8058C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222948650, false, "c5b490b3-f422-4a06-9941-03782497afab",
+			"@@@InProc at FD8F11E9CC943557EFD8058C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222949860, false, "1594523e-abbf-4e05-9757-e09e2e9a51ef",
+			"@@@InProc at 818DBCF1B638AFA6FBFDED5C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222952300, false, "3d9a0858-a94d-439a-bc83-de65d22cc254",
+			"@@@InProc at 818DBCF1B638AFA6FBFDED5C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222953340, false, "895741bb-da92-4ac6-89b5-85273978f912",
+			"@@@InProc at 6E91DFDF4D3A109A362CF9F4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222960330, false, "d9c08fa1-a460-42c2-9601-927983861d80",
+			"@@@InProc at 6E91DFDF4D3A109A362CF9F4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222961750, false, "2adf589b-8777-4cb2-bab7-0d69c8a03d38",
+			"@@@InProc at B0FC1D0B93672519BA7ECDC0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222964070, false, "7757cb47-88cf-40c6-80a7-f2f5980d1f86",
+			"@@@InProc at B0FC1D0B93672519BA7ECDC0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222965310, false, "f6d454a2-e868-4f3b-aa99-acaaf17f29ac",
+			"@@@InProc at B009A176C6DCC4D47713BD6A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222973240, false, "93c551c3-a9af-4251-b6ea-a0f9c95ea3ce",
+			"@@@InProc at B009A176C6DCC4D47713BD6A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222974050, false, "39107c8d-0cac-4c8c-bf37-45c6e12be4f2",
+			"@@@InProc at B1CBC926AFDB8CE1B252F19C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222978810, false, "112956c7-96a4-4680-b568-9f9baac14d6a",
+			"@@@InProc at B1CBC926AFDB8CE1B252F19C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222979950, false, "922592a6-5995-4162-bdc5-3fdef7cb6cfa",
+			"@@@InProc at A33D59F57EDC6F226A6B6E0C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222982490, false, "62dfd934-296e-4336-a221-6ef8aedfd67b",
+			"@@@InProc at A33D59F57EDC6F226A6B6E0C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222983290, false, "a2f37771-c081-474d-a5c7-dbed6b2f3105",
+			"@@@InProc at 06311908F00D7DB799895FCC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222992860, false, "6e38bd4c-1100-4d91-8a4d-94ae6bb1e978",
+			"@@@InProc at 06311908F00D7DB799895FCC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222994480, false, "54a6be4a-5e05-49cb-882a-025fdb977552",
+			"@@@InProc at 89D3AA01EF74AECE971CB3C3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222995980, false, "4d760557-063b-40e8-ad8f-d9bd4b159bc6",
+			"@@@InProc at 89D3AA01EF74AECE971CB3C3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878222997150, false, "7fab81fb-4406-4bc7-a429-d269a40517b3",
+			"@@@InProc at 21595090D5EBACFF6E49FB9C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223003740, false, "57e48ef4-4190-4521-93e1-33b5a0fc50b0",
+			"@@@InProc at 21595090D5EBACFF6E49FB9C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223004720, false, "c2302124-84b7-4afe-baba-d4c55ec3bcf9",
+			"@@@InProc at C99EDAB8DD02B109D0825CBA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223007950, false, "43eafc3b-96a9-4266-b885-f158762044b5",
+			"@@@InProc at C99EDAB8DD02B109D0825CBA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223009110, false, "714917b8-1c99-4543-b142-b1a95d4ed09d",
+			"@@@InProc at B40D70612E28AE061462DFB2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223012610, false, "c101894d-ea3e-45d1-a566-d12b270a1fbc",
+			"@@@InProc at B40D70612E28AE061462DFB2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223013720, false, "34a63276-6455-412f-8603-61673ae02e24",
+			"@@@InProc at A1E0B3FC68D6F78C3DFA5516", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223017980, false, "012fb829-d42b-4335-8d7a-6bb8b549f27b",
+			"@@@InProc at A1E0B3FC68D6F78C3DFA5516", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223018810, false, "786117d0-1a2f-46b6-becc-d73dd7552f60",
+			"@@@InProc at 6DE99C6BE15D8D9F90B8F32B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223021510, false, "95e78bcb-9d07-49e8-ae60-76ecd27fddb5",
+			"@@@InProc at 6DE99C6BE15D8D9F90B8F32B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223022570, false, "5fa245a4-5706-47c7-931d-26bfc053b1fb",
+			"@@@InProc at 4CFAF963B6F13D81C4767329", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223028420, false, "6433b2c9-f241-49dc-9a64-fc6754c6db9b",
+			"@@@InProc at 4CFAF963B6F13D81C4767329", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223029600, false, "b1c55d4a-fa57-4609-9df8-6942b1e0dd89",
+			"@@@InProc at 6D52DCC2E971A75E78E75516", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223030720, false, "da84dcc0-8724-4ec5-bfdc-e5365141c4e8",
+			"@@@InProc at 6D52DCC2E971A75E78E75516", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223031640, false, "a865bc08-5132-4533-87bf-57ce31e69fd7",
+			"@@@InProc at 003E75DFBB54627146AB78E8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223039600, false, "e614748b-3163-4d78-9240-53464c10a609",
+			"@@@InProc at E8C82F1EF24A2DF1CE702760", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223040030, false, "c9612b22-29da-4da0-b53a-54c1340b666c",
+			"@@@InProc at 003E75DFBB54627146AB78E8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223041490, false, "c1fcfd8b-16d5-43c6-bd72-28dcf4a21f38",
+			"@@@InProc at E8C82F1EF24A2DF1CE702760", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223041740, false, "cfdfd1aa-1482-42a9-b384-69768c428f66",
+			"@@@InProc at 7663F52F78FEB2F774CBC959", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223050770, false, "2b26e15a-b433-4236-8a3c-2907080d50d9",
+			"@@@InProc at 7663F52F78FEB2F774CBC959", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223052040, false, "debc4f1f-88d7-4b93-9a76-02338ea45010",
+			"@@@InProc at 4C3553DB5343F49370A4BE43", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223055260, false, "acee065a-2893-4a39-a198-3994ac859888",
+			"@@@InProc at 4C3553DB5343F49370A4BE43", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223056340, false, "a6e5deb0-b4f6-4aa6-8261-4b099b9e2b30",
+			"@@@InProc at 1788FDB4C01FA09B9F596355", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223060730, false, "e64e83bc-7501-4f47-9e3c-9a4d14beaef3",
+			"@@@InProc at 1788FDB4C01FA09B9F596355", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223061560, false, "e2dc74c8-ea59-40ff-ae55-09c99f31ef42",
+			"@@@InProc at 81C2514B5F4969B14DE3C2D0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223066400, false, "3e21ce9d-5906-4250-967c-966e995730b0",
+			"@@@InProc at 81C2514B5F4969B14DE3C2D0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223067660, false, "76f2481e-7966-4760-8d45-d1240f8755ea",
+			"@@@InProc at E974566503716B656343DF4D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223070230, false, "dd9a3e7c-a949-4d4b-a28f-027e404aff26",
+			"@@@InProc at E974566503716B656343DF4D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223071520, false, "26dddae0-087f-46b7-ace1-cdceab19bede",
+			"@@@InProc at E7BD3A9DC46B624DD7AC37F7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223078510, false, "9ba49bb4-d5d2-4e4d-9ad3-54e1f2f008eb",
+			"@@@InProc at D0CE0B674CB7B348572BFB1A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223080840, false, "44b8beb8-2ad1-4480-bd87-fe4775118279",
+			"@@@InProc at E7BD3A9DC46B624DD7AC37F7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223081100, false, "4e02cd70-ab6c-4b1a-b5a5-25f8f2a2055a",
+			"@@@InProc at D0CE0B674CB7B348572BFB1A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223082800, false, "a9554ae7-967d-4898-bf68-06836201e8dc",
+			"@@@InProc at 3D4084D036FFAC30CD1135DE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223090720, false, "e4faa0c7-43db-4bf2-9568-11e248087569",
+			"@@@InProc at 55649522A332EAE0D7664E43", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223091760, false, "2810c32c-f791-49e9-96a3-b43c3f39a4e5",
+			"@@@InProc at 3D4084D036FFAC30CD1135DE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223092100, false, "1635860d-b8a0-4eb5-b157-93e40b758aa1",
+			"@@@InProc at 55649522A332EAE0D7664E43", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223093320, false, "fb05548c-74a8-402f-bdd5-857a67b17b5d",
+			"@@@InProc at 4B474C24AC6E1E88DDF8E4EF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223101060, false, "3505a458-cd45-434b-92b2-f0c02a17f68e",
+			"@@@InProc at DA75423AFD3BC11A6D2E68F4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223102090, false, "5d6631b5-2ca8-45ff-b7ce-704e354ddf94",
+			"@@@InProc at 4B474C24AC6E1E88DDF8E4EF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223102150, false, "b23c5066-8d87-43c3-a5db-5ff5ca2eb45f",
+			"@@@InProc at DA75423AFD3BC11A6D2E68F4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223103590, false, "fbe15b3f-4eb0-425c-9e78-473918ceb18b",
+			"@@@InProc at C7A03AC768A962423BAA288A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223112070, false, "67d0b3cc-fb36-40cb-9df6-d6bbc3f17fb1",
+			"@@@InProc at 5BB40D6CD2A77817CA9C85B1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223113250, false, "408a04e6-0e71-41ad-b9ac-c2b9832fe95d",
+			"@@@InProc at C7A03AC768A962423BAA288A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223113340, false, "5356af3d-742f-4161-9a40-8532ee1fcd97",
+			"@@@InProc at 5BB40D6CD2A77817CA9C85B1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223115110, false, "871b30d8-3c69-41f0-9d8e-fdf17e5b6839",
+			"@@@InProc at 7D404DBB2C1BB8F8EE438373", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223122030, false, "93084b92-6ae2-4f3b-83ef-81c688c054f3",
+			"@@@InProc at 7D404DBB2C1BB8F8EE438373", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223122950, false, "fbf2d3f0-7c2c-4a72-8a09-0ddc1ad2a9ba",
+			"@@@InProc at EE044E1C236A48AA478B19BF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223123850, false, "f57a5674-1c36-451d-a863-4873166d0af1",
+			"@@@InProc at EE044E1C236A48AA478B19BF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223124670, false, "d5cec17c-a99e-4d31-9785-fa37de2c02e9",
+			"@@@InProc at 0683099FF6AC86387E60AD7F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223131110, false, "62094559-d760-4fe8-9c95-fe084b5594c2",
+			"@@@InProc at 0683099FF6AC86387E60AD7F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223132370, false, "517a2280-f10d-4df1-8575-2a3a785060c0",
+			"@@@InProc at F239D5496197C6AF65834D72", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223134970, false, "7d266c4f-0a4a-4a2c-a47d-41f7a9cce2c2",
+			"@@@InProc at F239D5496197C6AF65834D72", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223136550, false, "786a1b14-84b7-4905-aa4a-1bcb7bcef91b",
+			"@@@InProc at 4D6EAAB7E5D47E3DBF870A62", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223141970, false, "9b68497b-0d77-487b-b46a-6484509cec47",
+			"@@@InProc at 4D6EAAB7E5D47E3DBF870A62", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223142870, false, "7df01779-aadc-48ef-927d-13a6eba2310b",
+			"@@@InProc at 17AD472B4DBBC01B2EDB9AB6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223146740, false, "c726e73b-59a1-48b6-99c6-918d146ce7b5",
+			"@@@InProc at 17AD472B4DBBC01B2EDB9AB6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223148230, false, "452f0ba9-8e11-49b0-aaf4-7b2838fff37f",
+			"@@@InProc at 07F5E4A4930D16ABFAF810EB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223150780, false, "45190f1f-43fd-4d30-8327-ce08ad03e8ed",
+			"@@@InProc at 07F5E4A4930D16ABFAF810EB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223151760, false, "b6795dd9-84df-4949-9643-6ded5dd8cc5e",
+			"@@@InProc at C7A644867074ED5CFFB978FC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223173220, false, "e58ae597-cdaa-4165-a39b-2c37e01477cd",
+			"@@@InProc at C7A644867074ED5CFFB978FC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223173840, false, "9356bf47-ad0a-4b5e-a445-28e9b3a51034",
+			"@@@InProc at F9A8E00AF1983C3094F8B3CF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223174390, false, "7ed244a6-e390-48be-ad82-861ce78946fd",
+			"@@@InProc at F9A8E00AF1983C3094F8B3CF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223174930, false, "ca8ac772-6337-4a3e-a539-5e5ecb792608",
+			"@@@InProc at DE49E060957F1D412E215B67", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223179090, false, "3946dd39-d3d4-48e0-a6a1-09ce5d8051d5",
+			"@@@InProc at DE49E060957F1D412E215B67", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223179610, false, "e3331eab-76a6-4079-a975-0516d26dee08",
+			"@@@InProc at 61A7D456DC4B11FD9943DC19", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223180330, false, "462323b8-c269-4cc1-919c-56ab740a5314",
+			"@@@InProc at 61A7D456DC4B11FD9943DC19", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223180940, false, "02c50d3d-3012-4704-b7f6-2ae5b86778c8",
+			"@@@InProc at B6EC8A2A91B9D23BCC9BCC22", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223185040, false, "1861bfc9-3e9d-46cf-8874-929b14a605ac",
+			"@@@InProc at B6EC8A2A91B9D23BCC9BCC22", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223185790, false, "f99255f7-c7c4-47d6-ba26-b960fa64cc7c",
+			"@@@InProc at B94C2D4F6A959A1CE52C1CE3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223187400, false, "e79e0380-03f7-492e-83b3-51f68d0b0ab0",
+			"@@@InProc at B94C2D4F6A959A1CE52C1CE3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223188160, false, "408527ce-261e-4109-9cff-3430e8d6df02",
+			"@@@InProc at 63ECB23F00372B71C44F30C1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223191050, false, "cab75e78-ebd0-4bfa-ba49-a6965fa7ac58",
+			"@@@InProc at 63ECB23F00372B71C44F30C1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223191580, false, "5c64a4b7-67d2-4e75-99ad-2e106969eabb",
+			"@@@InProc at 704AF3C728DCCB13B1CA8D18", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223193490, false, "4a522658-d030-4974-8648-bfff3fe586de",
+			"@@@InProc at 704AF3C728DCCB13B1CA8D18", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223194270, false, "31d1a49f-b39c-4465-9206-574be7880b1c",
+			"@@@InProc at C1B6578B132E67B659ADC99B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223196670, false, "b54b0631-8026-4c63-b2d6-f4cbedd5568f",
+			"@@@InProc at C1B6578B132E67B659ADC99B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223197200, false, "82f9c5cc-fe87-487a-b7f3-364f4dffdf3d",
+			"@@@InProc at 81F304F300970861C448570C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223199450, false, "3545b64d-37ad-49d1-84ff-1fe5ce2a222e",
+			"@@@InProc at 81F304F300970861C448570C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223200060, false, "cee8dedf-1872-4fd2-82ef-42152740d737",
+			"@@@InProc at 064404190D9B5C6EF48E39C9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223202260, false, "9c08127c-7a09-4903-ad10-5690877563d0",
+			"@@@InProc at 064404190D9B5C6EF48E39C9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223202920, false, "7df9cc5f-596d-4c3d-83ff-969953382310",
+			"@@@InProc at D55AF614E2152ACC89817E42", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223205890, false, "60cd0a8a-4661-4991-9458-87d9788aaf56",
+			"@@@InProc at D55AF614E2152ACC89817E42", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223206660, false, "f119b557-123d-4ea6-a650-0e434b8eb24a",
+			"@@@InProc at 3E92B429B8706AFB9CA80953", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223208950, false, "ef76f4b4-7ded-4395-94bd-e19438d4b336",
+			"@@@InProc at 3E92B429B8706AFB9CA80953", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223209710, false, "22da7eaa-e8e0-4329-a186-ca4ca4fc9ee9",
+			"@@@InProc at D13ADA5FD29195ADEA7ECAF2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223212180, false, "7b274d75-c431-4842-a73f-561a638a24c4",
+			"@@@InProc at D13ADA5FD29195ADEA7ECAF2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223212790, false, "ba9a3c92-15e1-4240-9602-ca9e686f014f",
+			"@@@InProc at B9557D6E2365EF197BFED6ED", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223217410, false, "2816ee86-12d8-4c00-96cd-d4a44238326f",
+			"@@@InProc at B9557D6E2365EF197BFED6ED", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223217930, false, "6adc6f6f-0902-4d73-bf2f-067811a68882",
+			"@@@InProc at C319355F6D18EE131C2F00D4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223218120, false, "28e9027a-aa5d-4025-8d58-39299766741f",
+			"@@@InProc at C319355F6D18EE131C2F00D4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223218840, false, "10d67e2a-6808-44b2-96ac-e9eb9080da05",
+			"@@@InProc at 98557C1DE812BAB2A73F06A4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223224390, false, "adf7a6ea-b202-4c6c-807f-509f0c2cdc6b",
+			"@@@InProc at 98557C1DE812BAB2A73F06A4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223225140, false, "623c6af4-cc8e-4746-a00b-c2f02a622351",
+			"@@@InProc at C78DCC8C1BBE79091FA3C9A1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223225930, false, "123e678f-dacc-4577-8aad-498897ca3faf",
+			"@@@InProc at C78DCC8C1BBE79091FA3C9A1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223226720, false, "21b40711-aceb-47e6-ac43-784c20d95f21",
+			"@@@InProc at EA06827DFC68EE471657EA56", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223230820, false, "e25fbb95-f791-4e2a-a22d-8f40b845397b",
+			"@@@InProc at EA06827DFC68EE471657EA56", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223231430, false, "b0efe40b-02bb-4092-97a8-edbd4608ded3",
+			"@@@InProc at A7D5CF8576489A236ECF5073", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223232550, false, "e984d78d-44b7-440f-a8e6-b92fe5618e5e",
+			"@@@InProc at A7D5CF8576489A236ECF5073", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223233320, false, "f093d476-d6ed-47bc-bdcb-fde6a46b0858",
+			"@@@InProc at 046F5901E46FDCE6757B0821", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223236880, false, "a274461c-fba1-46c2-9324-d6e45193510d",
+			"@@@InProc at 046F5901E46FDCE6757B0821", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223237390, false, "e5e19d4a-036c-4393-8a2c-dea3936d11e8",
+			"@@@InProc at 0EDE9D079E7C57204805445A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223241610, false, "c8ed320d-70fb-4512-a7fa-397c8f64272e",
+			"@@@InProc at 0EDE9D079E7C57204805445A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223242330, false, "18988f6d-a37c-4670-9c69-3e9c6ad81132",
+			"@@@InProc at 745E2898B2AC3247D5197AAA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223243770, false, "5ec45071-2a32-4ff6-be78-342f767e4645",
+			"@@@InProc at 745E2898B2AC3247D5197AAA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223244520, false, "eb52ca91-902c-4168-a016-7f1266c82dc2",
+			"@@@InProc at 6F7E7DB939DC796C02B8DC80", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223247580, false, "cc2858ae-e31c-49e4-abe3-a7f7841a079f",
+			"@@@InProc at 6F7E7DB939DC796C02B8DC80", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223248160, false, "50c2a1f8-fc95-469d-9591-cd5945860279",
+			"@@@InProc at F0FBB549DABEB2EE3EB118AB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223251250, false, "580a2b1e-c035-4ee2-9072-2257a63f5d05",
+			"@@@InProc at F0FBB549DABEB2EE3EB118AB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223252000, false, "2d541a9c-95e1-4b07-9415-e00b2581e061",
+			"@@@InProc at 7BF8042CD8E303040D49C5DE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223253620, false, "491ae5f9-c2b5-49ed-9de0-f4af12d823ac",
+			"@@@InProc at 7BF8042CD8E303040D49C5DE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223254150, false, "0a23efd4-f480-443d-9c28-3067a9f82451",
+			"@@@InProc at 12DBA136E563339934302BCE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223258200, false, "e84c90b5-3508-4562-9697-34c0e376d4d4",
+			"@@@InProc at 12DBA136E563339934302BCE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223258980, false, "587baa76-8773-4db2-884e-15ebd19cec2c",
+			"@@@InProc at 9DA77E13790A248DA748E63B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223260490, false, "5ec44013-0d47-4047-8473-3c6e944a1e0e",
+			"@@@InProc at 9DA77E13790A248DA748E63B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223261280, false, "21743d8e-cefb-422f-884b-e4ab1af8bb31",
+			"@@@InProc at 33955AA2CBBA9F234D5334F1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223265550, false, "17384b19-8239-4d70-b40b-59bd81e746f3",
+			"@@@InProc at 33955AA2CBBA9F234D5334F1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223266380, false, "14942cac-5eed-4ea3-8065-15da29e33c64",
+			"@@@InProc at 06059EF39A08D879508E9BA9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223266660, false, "478772b1-65ab-427e-a976-a4984942dba7",
+			"@@@InProc at 06059EF39A08D879508E9BA9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223267430, false, "ce5a91be-53f1-4b63-9d20-6323e10f78d5",
+			"@@@InProc at 92C0CC36459BBE5B5BA6A763", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223272290, false, "79e5ea25-04c5-4507-9064-baf91219a294",
+			"@@@InProc at 92C0CC36459BBE5B5BA6A763", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223272810, false, "b5639251-296f-4b81-b0b6-320669e215da",
+			"@@@InProc at EAA752C1D22C7B68704EF02D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223273000, false, "c00bd38e-14cc-44f3-b438-4bacf4b3819d",
+			"@@@InProc at EAA752C1D22C7B68704EF02D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223274060, false, "e8815913-26ca-462a-8b70-4484759efcee",
+			"@@@InProc at 12C85B3FE75085570C96F850", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223278210, false, "6e80fff2-9692-44e0-a944-20ba23ebe38e",
+			"@@@InProc at 12C85B3FE75085570C96F850", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223278800, false, "84712d4b-590b-4046-b00f-c32765a992d1",
+			"@@@InProc at AB99B5E364B8155FA6007FF0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223283110, false, "a1c525f4-17b4-4542-8483-d8e99023e66f",
+			"@@@InProc at AB99B5E364B8155FA6007FF0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223283770, false, "15fd09c3-9c8d-490b-8df1-00afcbc48c2b",
+			"@@@InProc at A1DD2E6074E63B3C34445068", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223284370, false, "3e201cbe-afe3-4435-8954-c676e56edf05",
+			"@@@InProc at A1DD2E6074E63B3C34445068", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223284900, false, "a77ea1af-4f78-4d3b-bdbc-218957d3ac17",
+			"@@@InProc at 90B561573DCB3E767139ECC3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223290350, false, "058ecd03-cea0-4ac5-871e-2b6d85633cab",
+			"@@@InProc at F41FF3AB975E66A925B194D3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223290450, false, "c1b4f468-0c72-4a50-b5f8-dfe8450461ab",
+			"@@@InProc at 90B561573DCB3E767139ECC3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223291610, false, "da2965f2-c3c2-4120-86e2-edec5eff0efa",
+			"@@@InProc at F41FF3AB975E66A925B194D3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223291670, false, "bcfbbdda-84ba-4e38-a752-c1350ff2ead4",
+			"@@@InProc at BCEED1BD1AB7EF92308826AF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223297530, false, "0c6a5de2-faef-49b6-a21b-b019b7c01a99",
+			"@@@InProc at BCEED1BD1AB7EF92308826AF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223298060, false, "90bed633-ad9c-461d-9e32-d465a488c0ef",
+			"@@@InProc at 8AA09A77BC2FC5F842064348", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223298800, false, "ec8d6bb2-0e58-418b-9257-832ebacd963d",
+			"@@@InProc at 8AA09A77BC2FC5F842064348", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223299530, false, "7fb497fe-36d7-4d6c-ab26-5b746af27157",
+			"@@@InProc at C5302F73F40432BC5FCA4C6D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223303480, false, "a6f4984f-d2aa-4b85-bbc1-894dafcd1a97",
+			"@@@InProc at C5302F73F40432BC5FCA4C6D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223304030, false, "b94c16f0-415d-46f2-babb-3d5395daa307",
+			"@@@InProc at 064A5CB000B3E4AB0CD12B07", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223305220, false, "4d7513f1-3d3a-4bde-a5c6-d7587eeeb6fb",
+			"@@@InProc at 064A5CB000B3E4AB0CD12B07", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223305740, false, "0181fa31-d590-4f20-969e-08d6e5a0fd12",
+			"@@@InProc at 74CF41686935B2A70C34CAC2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223309180, false, "b5c86f6a-55ea-4d34-82c5-7cc719682a96",
+			"@@@InProc at 74CF41686935B2A70C34CAC2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223309700, false, "7ae92f08-645c-4682-b600-93cdc7e136c9",
+			"@@@InProc at 118AF98F2A6C2BB899E38143", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223312030, false, "b7ee18d6-fbf4-473c-8fe6-1d40ef87fe08",
+			"@@@InProc at 118AF98F2A6C2BB899E38143", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223312730, false, "9879a1ef-671e-4db4-be8c-380e515e1cb9",
+			"@@@InProc at B0AAE8BB5B65D368137E68CB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223314670, false, "5e79d97c-3d27-43c6-81e7-bfc844369bd0",
+			"@@@InProc at B0AAE8BB5B65D368137E68CB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223315190, false, "102262d7-a5f7-4c64-a93f-419b101b6ca8",
+			"@@@InProc at B66387052A8A3247484E07CA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223319000, false, "a3c74d61-b6b1-485f-aa6a-69f9daa3c065",
+			"@@@InProc at B66387052A8A3247484E07CA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223320060, false, "003a5a18-6840-4bab-b42d-2dc8643c146c",
+			"@@@InProc at E062CD644DD4BFFEFF08A38C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223321080, false, "a917cae1-8b48-421a-ac75-6285304115d7",
+			"@@@InProc at E062CD644DD4BFFEFF08A38C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223321600, false, "49044c3e-e68c-4207-a9dd-d733698bf67b",
+			"@@@InProc at D999423934DD5E7A342CEF82", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223326500, false, "22d9bbbe-771c-4322-8dc3-541557d9099c",
+			"@@@InProc at D999423934DD5E7A342CEF82", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223327220, false, "62d81b41-021d-4a6e-954b-1f6d1c71e6c0",
+			"@@@InProc at 69F1D1AD34ABDB261A70FA8A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223328650, false, "389562fe-de05-4259-9e7f-df8c1dafef5d",
+			"@@@InProc at 69F1D1AD34ABDB261A70FA8A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223329370, false, "e046380a-4199-4949-b1d9-59cee8ca7e22",
+			"@@@InProc at FF3DC77534D0DF534448F042", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223332370, false, "e49b2edb-599c-4fb3-88fb-5e262c3a162d",
+			"@@@InProc at FF3DC77534D0DF534448F042", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223332920, false, "44ac8197-e9d4-4dfb-bbbd-7ebb24eab4ce",
+			"@@@InProc at 6C78BDCB57326CB93E49ACA8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223334980, false, "662c4ec0-0522-412e-8dda-e83249e495b7",
+			"@@@InProc at 6C78BDCB57326CB93E49ACA8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223335620, false, "5cebcc24-50ce-4b3a-969e-694f0cc19b12",
+			"@@@InProc at B7852CDB66CE3F489DA1ECF0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223338890, false, "7560d53e-2a27-429a-95df-e4e3d5a05b5c",
+			"@@@InProc at B7852CDB66CE3F489DA1ECF0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223339480, false, "528c5974-7b45-49cb-a5d7-0422d8419fb8",
+			"@@@InProc at 48B68E03DA6BA9628D522772", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223341040, false, "fe4f098e-1286-4b8e-beca-d92d09b04e7a",
+			"@@@InProc at 48B68E03DA6BA9628D522772", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223341560, false, "04de4cb1-60d6-4110-a4d6-7accc4961993",
+			"@@@InProc at 8EE51DE2F3005BEFAD14AFB3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223345990, false, "62456cb0-2b28-4cb8-b965-ca197e9a7e71",
+			"@@@InProc at 8EE51DE2F3005BEFAD14AFB3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223347010, false, "70dbf319-a37c-4ad2-8197-645cc972e8b8",
+			"@@@InProc at 27AB39416C3C799E24E12224", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223348390, false, "d8beadb2-d560-4b59-9b7c-f484cadb300a",
+			"@@@InProc at 27AB39416C3C799E24E12224", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223349150, false, "2f06a430-4e07-454e-90e8-057059b092e6",
+			"@@@InProc at D1423071D7BEC0AF685280C6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223353750, false, "5ac04c87-f85f-4462-9450-b0adcc784da0",
+			"@@@InProc at D1423071D7BEC0AF685280C6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223354480, false, "918ef082-58c6-4b44-bbdb-6f28353cd6c7",
+			"@@@InProc at 80D3836BAE32C7D68E44EB5D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223356140, false, "5f579d5f-31d7-492c-8ab8-e258529426ee",
+			"@@@InProc at 80D3836BAE32C7D68E44EB5D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223356940, false, "56d0dd63-8e92-4ece-827d-a4ffa24dddcb",
+			"@@@InProc at 703F04B72D9C707DE2593869", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223360100, false, "82abfa8d-f821-461d-b54f-dda94b468f32",
+			"@@@InProc at 703F04B72D9C707DE2593869", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223360850, false, "31464f95-efca-4fd2-b621-6fde7d385072",
+			"@@@InProc at B1221629656D8D8F41506807", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223363680, false, "a7a9ad56-2c8d-4dc8-a242-3ae051051518",
+			"@@@InProc at B1221629656D8D8F41506807", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223364470, false, "0dcb8a5a-2f83-44d2-8178-4c582e520374",
+			"@@@InProc at 8F627B3F0EFE265748ACA748", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223366040, false, "3ddaea8b-6029-44b3-8128-accd6ccd2846",
+			"@@@InProc at 8F627B3F0EFE265748ACA748", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223366590, false, "0f4ce334-4cb9-403f-8151-b28a01b41062",
+			"@@@InProc at C8D548DFF36A2A43635F55B0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223371360, false, "1bf14e6a-5f08-4551-baa9-1b54ade40128",
+			"@@@InProc at 69456B7DF3C8FFCE4DBF049E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223372150, false, "50239995-4f77-4b7b-9050-1e3ff5cd53ad",
+			"@@@InProc at C8D548DFF36A2A43635F55B0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223372240, false, "1c329e3a-2489-44b5-b859-0a1eeb9f4307",
+			"@@@InProc at 69456B7DF3C8FFCE4DBF049E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223373240, false, "34f2b681-35a1-4d11-8d41-7e1c0f9088c8",
+			"@@@InProc at 293C8FC40BA8B4999D419FB3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223378410, false, "1289f481-fb33-415f-8e76-703c66407149",
+			"@@@InProc at 951873A17BC2895044F723EC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223378540, false, "ba5d7092-549d-463d-bd16-e64177eac15a",
+			"@@@InProc at 293C8FC40BA8B4999D419FB3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223379440, false, "f3a5ed6b-e317-4efc-bb9c-05b374bf1819",
+			"@@@InProc at 951873A17BC2895044F723EC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223379500, false, "f9771f3e-a56f-4beb-9abd-8490132f2ce9",
+			"@@@InProc at F73D18D8E9BC5D2AC942FC2E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223385590, false, "bbf109b7-5346-431d-94ed-3f0f551f9cb0",
+			"@@@InProc at 807087EABDA058478F1CE545", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223385860, false, "f676f098-d9bc-4600-821f-84c2f999fcc6",
+			"@@@InProc at F73D18D8E9BC5D2AC942FC2E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223386810, false, "c0e2cd79-11fe-4e41-bd46-d3c017761d73",
+			"@@@InProc at 807087EABDA058478F1CE545", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223386990, false, "44a8247f-12ad-4e31-afca-b4e72242bceb",
+			"@@@InProc at 887101D640EBEC21E7AB3E0A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223392270, false, "a6ee3d80-90bd-4913-92c7-9ec6f9cbed83",
+			"@@@InProc at 887101D640EBEC21E7AB3E0A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223392800, false, "76d29980-f2c2-4f92-83e5-6772ed3b4450",
+			"@@@InProc at 31683C295C0985FF42FA053C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223392870, false, "72fbc70f-5040-4885-a01e-33e1af3e3048",
+			"@@@InProc at 31683C295C0985FF42FA053C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223393710, false, "a1b1630c-9477-4541-8ccb-5f6843ec958a",
+			"@@@InProc at 723FE858C168AB46DC56A35C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223398260, false, "df09bbea-b5b5-46f6-9008-ac96b82fda29",
+			"@@@InProc at 723FE858C168AB46DC56A35C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223398970, false, "67a61a39-4cf4-4159-950b-51d0871b92a5",
+			"@@@InProc at 55DECDA6AC40BA154C87B6F3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223400440, false, "97abfa9f-6159-4ebb-9b02-9c1bde7b3e4d",
+			"@@@InProc at 55DECDA6AC40BA154C87B6F3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223401940, false, "bce3d383-7d60-4df6-8d8f-17be735a23f0",
+			"@@@InProc at 600622B134E1A1655BE399A9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223404220, false, "b52120e0-1d70-417b-a97b-fb4aff05d5ef",
+			"@@@InProc at 600622B134E1A1655BE399A9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223405090, false, "8b98f795-665c-42b0-9f5f-aa5e251fc256",
+			"@@@InProc at 04766887A8B3876E0E30E1AB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223407700, false, "15a34538-88ce-4c67-a55f-6030dcfd1f42",
+			"@@@InProc at 04766887A8B3876E0E30E1AB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223408450, false, "749ed549-170d-4951-82e8-5c125147dc14",
+			"@@@InProc at 9B7397E84297B9FB024D7FA6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223411260, false, "f251dbc0-23d2-415c-a65a-ade5a944cc06",
+			"@@@InProc at 9B7397E84297B9FB024D7FA6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223411780, false, "b64be5a2-37ab-4a97-a713-ef3186891d99",
+			"@@@InProc at 9BD35B2DF6EBFC4FD75680BE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223413890, false, "0382aaa1-195c-4072-a7ac-400e36517c21",
+			"@@@InProc at 9BD35B2DF6EBFC4FD75680BE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223414590, false, "10beb6f6-ba61-4344-a4ce-99a57721c7e3",
+			"@@@InProc at 2193F8736E51BDBD43018146", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223417850, false, "9e596c27-7e02-4715-a315-e17ccf2cf419",
+			"@@@InProc at 2193F8736E51BDBD43018146", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223418370, false, "ef510960-1cdb-4aad-ab7a-f29077f40931",
+			"@@@InProc at 0D6B8D4D630FD0F6539781EC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223420340, false, "6d17342a-9e38-41e7-a953-10a931e85789",
+			"@@@InProc at 0D6B8D4D630FD0F6539781EC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223420880, false, "4954e2af-c1a8-407b-8b68-59cf1a73e134",
+			"@@@InProc at BE85E7E3747E0F2B2A75C20F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223424560, false, "9bca07d3-4eec-475a-bdc1-40b9a8c522ba",
+			"@@@InProc at BE85E7E3747E0F2B2A75C20F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223425350, false, "e9d098de-f210-4035-90ff-64211df79799",
+			"@@@InProc at B1245AB7E55A4304E161193C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223426030, false, "1eaa5f63-69c8-4c93-86c2-3db3d2c3f66f",
+			"@@@InProc at B1245AB7E55A4304E161193C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223426630, false, "be8414eb-6f17-4acf-a309-e8a5a9d5b1ae",
+			"@@@InProc at 88325E706CD468A545B4B1AE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223430980, false, "5cbd70b7-047f-405e-9318-8f012b9e0793",
+			"@@@InProc at 88325E706CD468A545B4B1AE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223431680, false, "a345742f-4882-4067-9f9c-c91d49d1dbeb",
+			"@@@InProc at E07E59969FBFC538A7E68CF8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223433130, false, "4eeea00e-9aaf-4605-ba81-0e910294b7b1",
+			"@@@InProc at E07E59969FBFC538A7E68CF8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223433910, false, "135f770a-b335-4cfd-a268-692896400c72",
+			"@@@InProc at E7BDA169D4E40F9F958D2140", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223436660, false, "d0c48c48-460b-4b6d-b411-0d7421e3f085",
+			"@@@InProc at E7BDA169D4E40F9F958D2140", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223437240, false, "dd3a3e5c-e8f9-4874-b2d2-12cee37acb6c",
+			"@@@InProc at 7617F870FEFA21EF35408F46", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223439670, false, "04b11e0f-5697-4c33-99d2-d0e2e1d2e6e4",
+			"@@@InProc at 7617F870FEFA21EF35408F46", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223440200, false, "bca8629a-fbc4-404f-9a17-889b772f7a43",
+			"@@@InProc at AE5C36A5F08683AB65A81513", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223442370, false, "27586b12-1a19-4389-b6d7-428d7cab91f0",
+			"@@@InProc at AE5C36A5F08683AB65A81513", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223443000, false, "8fb83b67-2523-4e50-ae6e-9635235ed2e1",
+			"@@@InProc at 9D6A41B5B7DCD0571276885F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223445690, false, "758ae2b5-fd2c-45cf-8141-1dcb31816e84",
+			"@@@InProc at 9D6A41B5B7DCD0571276885F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223446220, false, "0c72dd3e-2ef6-41cc-91f2-422ae831b589",
+			"@@@InProc at AE0621C0F0BA423A64A3EB1D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223448440, false, "885512a8-1496-4d42-8182-c15b0b17be00",
+			"@@@InProc at AE0621C0F0BA423A64A3EB1D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223449060, false, "d6e650ba-81da-4bf9-bbe7-0a0d467a3ed4",
+			"@@@InProc at F75CDA0D0B2286C3138EE9FD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223452640, false, "46be2672-4dc8-43f0-a780-135b288f1f1e",
+			"@@@InProc at F75CDA0D0B2286C3138EE9FD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223453440, false, "08a37935-de3a-4fe8-9a31-3a3fd4b9a90e",
+			"@@@InProc at 94012BD0BDE927FC213828D9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223455340, false, "91cb98e5-20c4-44e6-bad6-c8c68807f6bd",
+			"@@@InProc at 94012BD0BDE927FC213828D9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223455960, false, "e820fa04-8c8b-472a-996d-8ee71050a14a",
+			"@@@InProc at 24B9021503382C0DE4E4ABA3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223473660, false, "ca4edd98-291e-4c7e-8a16-77929a083482",
+			"@@@InProc at 24B9021503382C0DE4E4ABA3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223474180, false, "4fc6007f-de9c-42be-9bcc-c6b297ffc16f",
+			"@@@InProc at 7657EA91F3C72189F5A5C450", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223476160, false, "0c6bfed8-9b94-471b-933d-3080d110d39b",
+			"@@@InProc at 7657EA91F3C72189F5A5C450", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223476810, false, "9ac4bba6-e9bf-41ae-8ebb-55762260e18a",
+			"@@@InProc at BE19238D9237E1A6B14A8999", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223479460, false, "c9cde792-2ab6-40b3-af7a-74d7f7e96e6e",
+			"@@@InProc at BE19238D9237E1A6B14A8999", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223480250, false, "277518a1-50f5-48e6-ae02-d91c490117aa",
+			"@@@InProc at F858A336E971F88EDCAD7B6E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223483320, false, "6ecd4513-32fa-4523-8c10-eab16136e37b",
+			"@@@InProc at F858A336E971F88EDCAD7B6E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223483840, false, "42fb38f7-4be0-4ac8-95b7-7ca45db3843b",
+			"@@@InProc at 50509AAED65C2A02EC1ACEF1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223485840, false, "fcd99fef-b672-4be8-8172-2beaa5ec73f9",
+			"@@@InProc at 50509AAED65C2A02EC1ACEF1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223486480, false, "970541ab-2f78-4572-a3bb-dccd78315863",
+			"@@@InProc at 036B98F3DDD3CCD8D846D916", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223489850, false, "aa34a00d-83ba-4a2a-84cb-8074c4c4bd64",
+			"@@@InProc at 036B98F3DDD3CCD8D846D916", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223490370, false, "3a354c52-6119-45e8-9932-91539c7b97b7",
+			"@@@InProc at 9E4B3EDD590E6B114186730B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223492090, false, "0094fd76-392d-4c60-bfd7-8fa34d805dc1",
+			"@@@InProc at 9E4B3EDD590E6B114186730B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223492840, false, "eb71fd44-4053-46ab-9039-00eb4b48a3b2",
+			"@@@InProc at 6EE7DDF169E9CDE4A08CBF16", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223496430, false, "c8515000-09cf-4e04-a7ce-d4362199afe4",
+			"@@@InProc at 6EE7DDF169E9CDE4A08CBF16", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223497230, false, "716226ba-6106-4d7c-82fd-17d7f182fc00",
+			"@@@InProc at E76FC94ABD3D1FBB2D44C265", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223499420, false, "3d15b7bc-0ba9-4781-ae34-23d78690029f",
+			"@@@InProc at E76FC94ABD3D1FBB2D44C265", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223500180, false, "8c9363b8-6f23-43a5-9513-2e2526d5c873",
+			"@@@InProc at BE1A99CA302CA7D5CE5E2FCB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223503760, false, "2ceafbfb-237f-48ea-81cd-7019b2211003",
+			"@@@InProc at BE1A99CA302CA7D5CE5E2FCB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223504290, false, "d30babb2-9bfa-451e-a07e-403c175a05b6",
+			"@@@InProc at 2C4D6879861B1AB638C9B44F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223506290, false, "a43ca104-f0c2-4cba-b316-dbac0d91d61e",
+			"@@@InProc at 2C4D6879861B1AB638C9B44F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223506810, false, "93bb2bd2-6653-497c-ba51-5b76000e85fc",
+			"@@@InProc at 20069954EA425CC223BE711F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223510600, false, "1c4ecb38-b76a-4ee9-8c2b-c144ecb4ae7a",
+			"@@@InProc at 20069954EA425CC223BE711F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223511330, false, "ef4b6018-affc-4be5-8d27-671557aaaed1",
+			"@@@InProc at FFD38BEA0708F4AD13DB201A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223512380, false, "de473e0f-dd00-47e6-a354-ead585c631e7",
+			"@@@InProc at FFD38BEA0708F4AD13DB201A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223512890, false, "0c971dd9-aec1-4675-a410-447d63c80409",
+			"@@@InProc at FEE8A291E1E0F833C2BD7C3D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223517120, false, "ef99176d-46c3-4868-8d35-a656351d349f",
+			"@@@InProc at FEE8A291E1E0F833C2BD7C3D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223517860, false, "d45e70fa-1d8c-4e81-b517-adf10292359c",
+			"@@@InProc at 37F083B947ACE6733A0265DA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223518900, false, "a59d4495-edf8-4602-b5ab-92eff40dae3f",
+			"@@@InProc at 37F083B947ACE6733A0265DA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223519630, false, "ef5f1f29-792b-4f42-97e6-2ee3a14f73e4",
+			"@@@InProc at 648E0AE818BBFCE759B6440B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223523350, false, "a6dca1b7-68e6-4127-91a5-f61daee6bac4",
+			"@@@InProc at 648E0AE818BBFCE759B6440B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223524090, false, "13ed6fb7-ef60-4c16-b3c4-117206a9ea4f",
+			"@@@InProc at 9B284135330FCCD547C94D3F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223525880, false, "090ac35e-fb54-4298-acdd-00ec153157aa",
+			"@@@InProc at 9B284135330FCCD547C94D3F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223526590, false, "80a7c239-ad63-4ecc-b0bd-31f7b6bd38fe",
+			"@@@InProc at AE84D185328B35E65909672F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223529820, false, "feba3e27-724b-41fb-8e57-d47d8605df14",
+			"@@@InProc at AE84D185328B35E65909672F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223530330, false, "9920748e-f532-495f-bfe9-28318ee8b5af",
+			"@@@InProc at E63E63374B3996CB90BA4D69", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223535890, false, "4a43e78a-8744-4c12-acac-7b87419cec4e",
+			"@@@InProc at E63E63374B3996CB90BA4D69", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223536410, false, "3ac4fdf2-f392-4b4c-8931-1b62b1fdef63",
+			"@@@InProc at 6872A5F4FFE11D3650A42192", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223537120, false, "8110491b-600a-4b88-9b07-1aa3e7d78fd7",
+			"@@@InProc at 6872A5F4FFE11D3650A42192", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223537820, false, "d9508bc0-0d08-43db-a658-4df84a39272f",
+			"@@@InProc at 3C32F0D9844CE1388562951B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223541870, false, "a024c660-ad74-4a43-b3b8-c38c6949e42a",
+			"@@@InProc at 3C32F0D9844CE1388562951B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223542390, false, "f148816a-52d4-4e6a-989c-39c3d22e253a",
+			"@@@InProc at 48B6AF4DED7A6FC8961B6475", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223547210, false, "12e0f8ff-2aaa-4a9f-b0e9-eb500b4632ea",
+			"@@@InProc at 48B6AF4DED7A6FC8961B6475", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223548010, false, "e7ca821e-12e8-4095-8218-6042ac47e609",
+			"@@@InProc at 67C4E8F356EEE83843BE716C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223548760, false, "424665e8-d3ec-469e-b3e8-4fea5fa17b39",
+			"@@@InProc at 67C4E8F356EEE83843BE716C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223549490, false, "dcc5d10b-ecb1-4083-94f4-41a2ed34a646",
+			"@@@InProc at 9547ADC6615CBA0CFECD52F6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223554860, false, "d4cbfff8-4f49-4d1e-bb03-fb13a97ecc8f",
+			"@@@InProc at 9547ADC6615CBA0CFECD52F6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223556060, false, "722d7df2-70b9-47a6-aacc-bb032ddde393",
+			"@@@InProc at EDE513710BCD92CE86399C58", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223557930, false, "c42b9469-db8e-449e-94a8-e53c22111a75",
+			"@@@InProc at EDE513710BCD92CE86399C58", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223559240, false, "d2104413-4e81-4d24-9cda-7339dfe469d2",
+			"@@@InProc at ED81D2C5495EDD963206274B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223563290, false, "46576da6-e71c-4a34-b4f1-82903cf61bfb",
+			"@@@InProc at ED81D2C5495EDD963206274B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223563960, false, "10a68871-8765-40ce-92c8-05b96931321c",
+			"@@@InProc at 12F2A82B33DC0B291719A7DA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223565780, false, "435b4593-9de6-4253-be1a-d202f6c28342",
+			"@@@InProc at 12F2A82B33DC0B291719A7DA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223566430, false, "b02def9a-0761-4963-8553-afe2719eb70c",
+			"@@@InProc at 8967F0949E7C218A3F017F8C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223570520, false, "ca5a4ceb-8f07-47a9-b36e-45f1662a6b40",
+			"@@@InProc at 8967F0949E7C218A3F017F8C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223571170, false, "09e4b00f-6cb8-4a3a-9a66-51746dfb8c9c",
+			"@@@InProc at 5A165E614812BEFF5444CF8A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223572610, false, "0d333007-23c3-4a77-910b-6c34391f2628",
+			"@@@InProc at 5A165E614812BEFF5444CF8A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223573250, false, "9f491837-5bd4-4468-94a2-b7af2aab77f3",
+			"@@@InProc at 70525AC43E29413278F8CF58", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223577520, false, "d17d361c-69f0-4073-87c0-558b5f5abe09",
+			"@@@InProc at 70525AC43E29413278F8CF58", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223578250, false, "5c023f0d-200c-409b-9744-59ff9505021c",
+			"@@@InProc at F3DEC88453295BAE1C9BC9A2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223580780, false, "58ca5a5a-7a11-4676-8c05-c7ae71c92389",
+			"@@@InProc at F3DEC88453295BAE1C9BC9A2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223581640, false, "fcda008a-eb7f-4c3d-a5aa-07b61d1b697f",
+			"@@@InProc at 3B448C365257027DD6990102", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223585210, false, "0c74b804-5c0c-45ab-9d4f-ff505e187be3",
+			"@@@InProc at 3B448C365257027DD6990102", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223585870, false, "c9e9ccc5-b219-48cf-9663-fb077f5e9d3b",
+			"@@@InProc at 555398FA4353E05064FC363C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223588370, false, "294d382d-1d8b-41e3-95ee-215e4411e744",
+			"@@@InProc at 555398FA4353E05064FC363C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223589020, false, "3e0a4f71-788e-47e6-9471-8c8ac0ee6fd7",
+			"@@@InProc at 093E0BB23BFF85086E668DAE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223592530, false, "9ff8c2f0-4059-4d3f-8501-12fd25027e1a",
+			"@@@InProc at 093E0BB23BFF85086E668DAE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223593510, false, "c343ac63-1340-4341-a4cf-2b7b6ca4a12d",
+			"@@@InProc at D1356D9B422B353B704BCF17", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223596950, false, "efa63f3b-2e95-440f-9eec-afe13cf8fd85",
+			"@@@InProc at D1356D9B422B353B704BCF17", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223597590, false, "2ccb733c-bc01-41d8-89d5-12a649078a69",
+			"@@@InProc at 5F8F679C35F9CFF670518DB5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223600980, false, "2b817c86-1e64-4642-b377-5f154dd7d4b0",
+			"@@@InProc at 5F8F679C35F9CFF670518DB5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223601730, false, "96c520c8-0b51-4f96-8c90-09b29ea36f9c",
+			"@@@InProc at 8D18654D3E08539B8A18622F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223603700, false, "f50e1abe-b2dd-474d-9a65-c8e7fd51e35e",
+			"@@@InProc at 8D18654D3E08539B8A18622F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223604460, false, "3856c49f-a363-4665-89fb-aabf8f1f2b33",
+			"@@@InProc at BE2F61A836C0C6DF085D144A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223608550, false, "a8c4b365-cfda-46ec-b444-5c7a8519b227",
+			"@@@InProc at BE2F61A836C0C6DF085D144A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223609840, false, "e47226ed-4ffb-4e00-a347-e6d1ad6717e5",
+			"@@@InProc at F8D393E2C1B22B54682A0A16", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223613060, false, "f6a58335-89b5-4a40-90e2-c5e1fc7a0ef9",
+			"@@@InProc at F8D393E2C1B22B54682A0A16", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223613910, false, "37497e5e-1b68-429a-90d5-f30265527deb",
+			"@@@InProc at 8F792272DCEF1C13A6094E65", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223616890, false, "85820e99-229a-4633-b9cb-fa2e9127e380",
+			"@@@InProc at 8F792272DCEF1C13A6094E65", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223617520, false, "a8003506-2628-4a5e-a4cc-9d5e0ad66baa",
+			"@@@InProc at E22D9FC68903545316F565B4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223620000, false, "451a8364-aa8c-4b5e-ad02-7d31b6a2ea6c",
+			"@@@InProc at E22D9FC68903545316F565B4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223620640, false, "b7ab9c6d-1635-4496-9276-bc3d8ad9f181",
+			"@@@InProc at E883908A76E94AFCD7562311", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223623900, false, "91883121-90cd-4bdf-95a4-7a060f8a8b5a",
+			"@@@InProc at E883908A76E94AFCD7562311", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223624550, false, "6dc33dcd-92d9-4ad1-860b-db77fce9bcdf",
+			"@@@InProc at 43427A7B47CCAC06498609F9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223626880, false, "c0ff724a-f497-481c-b096-1792a89b9421",
+			"@@@InProc at 43427A7B47CCAC06498609F9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223627690, false, "80c1d51d-b0f9-4194-8c22-df93de6f2d88",
+			"@@@InProc at 19BCB759AEABC9F71DFD5995", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223630720, false, "fd6ce0c4-c8d5-45d0-a170-33d79a8887ae",
+			"@@@InProc at 19BCB759AEABC9F71DFD5995", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223631350, false, "c3ebf684-e178-4912-847e-81a275eae8d1",
+			"@@@InProc at 10AA9A44011FED27BCC01E9C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223634690, false, "24485efd-7ee9-4288-ac0e-01ffcc6c641f",
+			"@@@InProc at 10AA9A44011FED27BCC01E9C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223635430, false, "65e494d6-d089-4c0d-9c40-503f85b16e1f",
+			"@@@InProc at 20F7B61C3F54778841FAA8F6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223637490, false, "097b16e8-2848-481e-b30c-9bb18f68bec8",
+			"@@@InProc at 20F7B61C3F54778841FAA8F6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223638310, false, "2dce4ff9-9030-41e3-906c-1ddd25d93c46",
+			"@@@InProc at 50DD4310BAFD01BA99E0044E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223642010, false, "b14fc5d6-4df5-444c-b9df-0809c3557087",
+			"@@@InProc at 50DD4310BAFD01BA99E0044E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223642650, false, "342287ea-c333-42bd-b838-c4bfde33694e",
+			"@@@InProc at 82DE1BD0156FE522E8202AA8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223644530, false, "e9793547-8a15-4a8a-8f38-162f88faeff6",
+			"@@@InProc at 82DE1BD0156FE522E8202AA8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223645170, false, "c4ceeafd-1b66-4bc5-b257-10bd1a595622",
+			"@@@InProc at 9E23796656505DE90BCBC767", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223649490, false, "4c265bf3-b638-4bbb-bac7-2cf34b9e44c9",
+			"@@@InProc at 9E23796656505DE90BCBC767", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223650290, false, "a82f9c55-5b72-42b3-bb23-b33e81947358",
+			"@@@InProc at F7FD53FC7F6C5449640818AE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223651950, false, "d4d28daf-86e6-4543-9e2e-e962c52a1efd",
+			"@@@InProc at F7FD53FC7F6C5449640818AE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223652680, false, "25da4157-8e77-4157-a645-d90693a6feec",
+			"@@@InProc at 8A45BC09A34F902FA43D495C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223658230, false, "a139e126-cdf8-4dba-904e-c40011fa27e6",
+			"@@@InProc at 8A45BC09A34F902FA43D495C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223659010, false, "812f5391-8bc9-4be7-bfc5-552c31b8c02a",
+			"@@@InProc at 836867CE79899147E774B59F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223662340, false, "e6fa2641-c9dd-41cb-80b8-7342a412866c",
+			"@@@InProc at 836867CE79899147E774B59F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223663160, false, "6fbab05e-87df-4edd-b52c-c827d489fa69",
+			"@@@InProc at 749F65DE9DC9461ABEA364C7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223667040, false, "8aaf1294-313d-42ee-a820-c07f96bf3620",
+			"@@@InProc at 749F65DE9DC9461ABEA364C7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223667860, false, "243a46ea-d068-4f5a-96c7-ed01de2ab84a",
+			"@@@InProc at 2CF5DF97DF0F896D4C8028B6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223672970, false, "bf398bd5-de45-47fb-b1ff-c6e6cb76a6d0",
+			"@@@InProc at 2CF5DF97DF0F896D4C8028B6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223674300, false, "109aa637-65d9-4675-ae01-366d77c16572",
+			"@@@InProc at 78B196247E73558509BA60ED", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223676070, false, "c2345dcf-0f0e-41dd-8722-1e0a4525c2a6",
+			"@@@InProc at 78B196247E73558509BA60ED", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223676880, false, "82b7793a-f6f3-460e-a6a1-8f8ca5371a06",
+			"@@@InProc at CB81ED76C0E7B2363080F77E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223683200, false, "121434a5-8487-4f8f-bc1a-3e346339746f",
+			"@@@InProc at CB81ED76C0E7B2363080F77E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223684290, false, "4d4ab653-c547-4cb1-ada4-2e77f57ff129",
+			"@@@InProc at B326DCEA6943647B9F96EE9A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223684670, false, "98fb922b-5004-441f-8721-904e13a18032",
+			"@@@InProc at B326DCEA6943647B9F96EE9A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223686170, false, "c2813d55-3b08-4f0b-aff6-70f0c4568766",
+			"@@@InProc at D8AAF7055ECEA15CF9A0B873", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223694630, false, "c26db52e-4fdf-4718-80e4-6f6533a041c6",
+			"@@@InProc at 32648C17FC9AFDEAF58E3CAD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223695840, false, "221f25ed-cc96-46c0-9b85-43dbc8821dbe",
+			"@@@InProc at D8AAF7055ECEA15CF9A0B873", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223696090, false, "1b70802b-3538-4cb4-ac5d-9ab847bbb2f2",
+			"@@@InProc at 32648C17FC9AFDEAF58E3CAD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223697890, false, "19bf4f28-aa24-4f98-ab03-c0a84a49fd93",
+			"@@@InProc at D57315A14034FDFEFE623EA8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223705430, false, "82048f41-98d1-4abe-a9c8-0e6dd4bd97af",
+			"@@@InProc at C66536BC6129F376BCB23DEC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223706410, false, "08b0aa1f-996e-495b-960e-ce28a8372568",
+			"@@@InProc at D57315A14034FDFEFE623EA8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223706510, false, "c78dc1db-012c-46e6-b360-7d0bab6419e4",
+			"@@@InProc at C66536BC6129F376BCB23DEC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223708550, false, "4b8a4600-385c-4584-b520-ccf68b3e3def",
+			"@@@InProc at AF53B9EB598E363B884DBF31", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223716090, false, "4648b318-7fe5-4003-b92c-3a54c0ac4375",
+			"@@@InProc at AF53B9EB598E363B884DBF31", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223716900, false, "7366ed76-cdae-4890-8da7-028c90148b28",
+			"@@@InProc at 1D70EFCB5E9C42746A11B18A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223717830, false, "38fd81b9-f8ff-45b9-891a-fd07a0257c49",
+			"@@@InProc at 1D70EFCB5E9C42746A11B18A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223719030, false, "f31b845d-5e92-4c01-a317-d7fc5607ecd3",
+			"@@@InProc at CF238654B311B89401FDC66F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223725430, false, "2e08b584-e3b5-413d-85e3-2b5aa93c8dd1",
+			"@@@InProc at CF238654B311B89401FDC66F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223726480, false, "ab865f36-8e83-4915-8169-7eace87de32c",
+			"@@@InProc at 97F113D3F521EC7FFA7408B4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223728220, false, "c9a6d5f3-837f-43d5-838d-3665e25724e4",
+			"@@@InProc at 97F113D3F521EC7FFA7408B4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223729290, false, "53ce4500-669f-43a8-a86f-d61118dc4195",
+			"@@@InProc at E0A4F4C5BBF56D5FBC412F7A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223735230, false, "771ddc82-8362-4645-aabe-3c8746ebf1e9",
+			"@@@InProc at E0A4F4C5BBF56D5FBC412F7A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223736070, false, "c6f33099-fbc6-4480-afa1-2f939c214e09",
+			"@@@InProc at 83A9B528EF01010C95F8A6E6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223738360, false, "fea2668b-a566-4957-83b8-81cfa7d0c3a2",
+			"@@@InProc at 83A9B528EF01010C95F8A6E6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223739210, false, "61a53af1-6bd7-4c20-83e7-bcf23228fb74",
+			"@@@InProc at A83A452A4E7B5C43F6DBC108", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223744420, false, "2b058393-5a87-4c42-b635-0637c5f2c67e",
+			"@@@InProc at A83A452A4E7B5C43F6DBC108", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223745650, false, "c51c549a-7abf-40c9-94fc-6aa9797af50f",
+			"@@@InProc at 36F2D9795367DB6B25DED828", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223747300, false, "f7312fea-db2a-4e66-a061-ceba175dc137",
+			"@@@InProc at 36F2D9795367DB6B25DED828", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223748130, false, "73cd7292-9ecc-45a7-a183-caf2b43b3454",
+			"@@@InProc at 958E12CB56E71F15CF700EA6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223754880, false, "b0384790-7c8b-437a-bcf3-736426763e76",
+			"@@@InProc at 958E12CB56E71F15CF700EA6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223755870, false, "aed9ebe1-5f0b-4978-91a4-ea2b48d22aba",
+			"@@@InProc at F8E810A72FE2E28F0E23A0D6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223756780, false, "9dcc1225-dc91-49d5-ac26-c5235d3b37b4",
+			"@@@InProc at F8E810A72FE2E28F0E23A0D6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223757840, false, "1188ea94-3593-4e45-ba4a-ef20995dedab",
+			"@@@InProc at A9FCC1F238060CFC00607991", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223764280, false, "f4f935c2-7949-4ee5-a0c2-38d7a423bd25",
+			"@@@InProc at A9FCC1F238060CFC00607991", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223765360, false, "a91d90d6-92a1-433b-bbd5-198e1afe4d79",
+			"@@@InProc at 78EC5B4A9300130A2430E816", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223766870, false, "d53e2e2e-2775-4e45-a793-c1991026f4d0",
+			"@@@InProc at 78EC5B4A9300130A2430E816", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223767680, false, "66d6f267-b7da-4593-a86b-213edbbf3746",
+			"@@@InProc at D94134B9336C8C797B8A33A9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223773630, false, "3a2cbbab-264a-43c4-91d0-7c4d90f80ebf",
+			"@@@InProc at D94134B9336C8C797B8A33A9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223774790, false, "952ff4e9-d401-4fdb-b326-29ab60a46688",
+			"@@@InProc at F71C4052901B364D4D34CEE1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223776640, false, "70c3b90e-f048-4799-ad66-8ef14384b2fe",
+			"@@@InProc at F71C4052901B364D4D34CEE1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223777630, false, "2a356aa6-2e45-497a-bb46-ef86832f36ca",
+			"@@@InProc at 4DF61225235BB2BB11F4B636", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223783800, false, "d0cedb34-0394-4f84-8e6a-1a0eb43fbc85",
+			"@@@InProc at 4DF61225235BB2BB11F4B636", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223785030, false, "e38c660d-f5cb-48bd-b1d5-24e1f4ae2aa7",
+			"@@@InProc at 3633ED930687EE3BA4D2A042", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223788440, false, "3995b4b8-da73-40bc-9bad-387562d8597d",
+			"@@@InProc at 3633ED930687EE3BA4D2A042", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223789750, false, "aaa8e014-34a1-44bd-bf05-178b9431f2b3",
+			"@@@InProc at DE32B1496A0D03F660173BAF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223793300, false, "4cb485af-4ede-4a8f-83c4-f83f0b632759",
+			"@@@InProc at DE32B1496A0D03F660173BAF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223794110, false, "adeeacc5-7262-49c3-8d02-e3394ce177bf",
+			"@@@InProc at E990A36F8A4C89EE3300B0D9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223798180, false, "a40f3e60-b75d-48a3-8689-fc7c96a2f416",
+			"@@@InProc at E990A36F8A4C89EE3300B0D9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223799010, false, "f7272c26-8bc8-465e-b8b4-acf85c875820",
+			"@@@InProc at CE858FF29285E37011D022E2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223802280, false, "9c8ff17e-2f5e-4a1a-b151-f098f0e67ec6",
+			"@@@InProc at CE858FF29285E37011D022E2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223803400, false, "028fe203-9d16-483d-ac96-75d48cacd119",
+			"@@@InProc at 633542A35529F96BA8E35540", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223808390, false, "9ccf6d4c-97c4-4c94-a361-8ed50b48db6f",
+			"@@@InProc at 633542A35529F96BA8E35540", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223809440, false, "908f9fca-34c3-465b-bcd0-80783c8f4d80",
+			"@@@InProc at F239BE1896D94D50A1AF2160", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223812310, false, "22b36c36-c1af-46a9-9001-51f1930fe85b",
+			"@@@InProc at F239BE1896D94D50A1AF2160", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223813150, false, "37772d6f-853f-443b-939c-a2ac16a6b387",
+			"@@@InProc at 33B91B119D4BFA3B4987ED0D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223817770, false, "d95ac871-c324-425a-889f-a73c5c4b29c0",
+			"@@@InProc at 33B91B119D4BFA3B4987ED0D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223818820, false, "d77784e2-5df0-4bde-be2f-4d349d6ffcc5",
+			"@@@InProc at ED3821C3CAF2DB4C2CFB00B6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223821320, false, "40114f62-62ee-48c0-a474-f54b1b0af056",
+			"@@@InProc at ED3821C3CAF2DB4C2CFB00B6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223822240, false, "46bd0d50-6c39-4dc5-8aa7-aaa2d3d16be7",
+			"@@@InProc at BA6D253C5A6B3692E56BBD37", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223827850, false, "93d48188-3c42-4b1e-8099-cb694dc206ae",
+			"@@@InProc at BA6D253C5A6B3692E56BBD37", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223828650, false, "fa05b100-a814-493d-9da1-7e6abdad1437",
+			"@@@InProc at 0CD6DAB376D5CBA0E75E53AE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223830970, false, "1befbb08-7905-4067-a0b5-1936c3ffbd8c",
+			"@@@InProc at 0CD6DAB376D5CBA0E75E53AE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223831760, false, "caf3a114-220c-4621-ab5d-712a33ff4275",
+			"@@@InProc at 56961CFCD00C812CDE657ABA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223858590, false, "4d6d7cd5-09e5-4b54-9dfe-6120b7b6338b",
+			"@@@InProc at 56961CFCD00C812CDE657ABA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223859830, false, "44852be6-97a0-4a75-a9f8-0289bcc25898",
+			"@@@InProc at 9CF8B7690A4A9ACFD18E9485", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223860850, false, "7ca969b5-baca-455f-9a49-c8bbae8823f4",
+			"@@@InProc at 9CF8B7690A4A9ACFD18E9485", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223861680, false, "73d57375-1af8-4e45-8641-2a70bfb0ebd4",
+			"@@@InProc at 8647FAC34C06DD425BF2103C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223868540, false, "11fc8f1b-0420-4077-be10-f3d96103d9ee",
+			"@@@InProc at 8647FAC34C06DD425BF2103C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223869360, false, "c1d5b630-fb08-47cb-a208-84bb49b6915d",
+			"@@@InProc at 6236373927035A5D9BCAE85F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223870190, false, "82948cc5-0c6f-485a-b41f-0fe0a57039dc",
+			"@@@InProc at 6236373927035A5D9BCAE85F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223871150, false, "10212605-0b05-4f8b-a175-13e6aea0fc5c",
+			"@@@InProc at 2B1670869AD2863561537981", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223877460, false, "63406615-967f-41c7-8faf-f8a397a0e9ab",
+			"@@@InProc at 2B1670869AD2863561537981", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223878270, false, "f69873e7-0f62-49f8-a63f-b410979249f7",
+			"@@@InProc at BA7EDA76F2E425438326F47E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223879050, false, "c94ac8ff-8ae5-45cb-a6f0-898c04c8eb2a",
+			"@@@InProc at BA7EDA76F2E425438326F47E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223879880, false, "803fea1f-41e0-4c96-b40c-8eb6724d7d57",
+			"@@@InProc at F26A20F735E6975B4BC1E1DC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223886290, false, "cc47192a-e2df-43b0-a906-62639d701c1d",
+			"@@@InProc at F26A20F735E6975B4BC1E1DC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223887280, false, "5587df97-590b-4870-a9d6-c94507fab10c",
+			"@@@InProc at 86365DB73A6BD43B611537D7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223888160, false, "04d6f1a3-1e44-434d-bb94-f4bf8c1c3194",
+			"@@@InProc at 86365DB73A6BD43B611537D7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223889070, false, "76f054a1-5296-4aa5-8fa8-29317a998265",
+			"@@@InProc at D5FA7633171F077D1CD61AD9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223895840, false, "4c045286-18bf-4650-b66c-0b7fd0bf8d95",
+			"@@@InProc at D5FA7633171F077D1CD61AD9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223896660, false, "ac35241f-94a3-4c08-9204-7e8138e22754",
+			"@@@InProc at 87FE739B2CE4912CE6E2E5A5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223896950, false, "285c548b-fc12-4e18-b30d-b60db63cab15",
+			"@@@InProc at 87FE739B2CE4912CE6E2E5A5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223898150, false, "8413420b-61ec-4516-b47e-b6efa34a6391",
+			"@@@InProc at 336ABDFA0A763E05738E5875", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223905010, false, "961c6742-96d5-46a8-b694-0416684b5875",
+			"@@@InProc at D8691D52AF6DA1BB7642C333", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223905880, false, "a3168c5c-ffba-4f5d-8ca3-0c188c4ed7a3",
+			"@@@InProc at 336ABDFA0A763E05738E5875", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223905990, false, "e2ad4ea2-5f2f-45e2-ae00-a1b0cdab0dcc",
+			"@@@InProc at D8691D52AF6DA1BB7642C333", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223907440, false, "fffadc40-aeee-4a13-ae28-b9b4eda0d31b",
+			"@@@InProc at F64BD097FEB2A44CA171AB1C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223914810, false, "053aabf3-a5c9-42bc-92bf-5eb515ca3f7f",
+			"@@@InProc at E9F57BBD4B2B9B01F71C985C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223915850, false, "c4d0a352-664d-4b4f-8908-229dca256f05",
+			"@@@InProc at F64BD097FEB2A44CA171AB1C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223915930, false, "0ed6efbc-a72e-4db7-becc-e0d0921a3c2e",
+			"@@@InProc at E9F57BBD4B2B9B01F71C985C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223917380, false, "66488d6c-5837-4845-bc23-6fe9ec6c13f4",
+			"@@@InProc at 3548AE37648BFB15668CB3EA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223924620, false, "be1db328-a75b-41a2-8a03-ca2bd31cf3b0",
+			"@@@InProc at ADC1FB27F01B9E99472152C4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223925650, false, "72b3f415-e388-4ca3-92b6-9d6d837fe8a2",
+			"@@@InProc at 3548AE37648BFB15668CB3EA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223925990, false, "9b5bd43a-1185-44fb-b059-886f93ecb8eb",
+			"@@@InProc at ADC1FB27F01B9E99472152C4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223927310, false, "d99ac479-9b3a-4e60-96c1-e0dcf316a47f",
+			"@@@InProc at 573D8F82CB33EB6629478932", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223934380, false, "ea039dc7-cceb-4450-922e-0d783f124e3e",
+			"@@@InProc at F2EA0E8594134804B8200D21", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223935330, false, "0be232b4-f830-42f7-af36-83159bdcb25b",
+			"@@@InProc at 573D8F82CB33EB6629478932", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223935420, false, "a642e1dc-7e3a-4c5a-8aba-c0a3af78b813",
+			"@@@InProc at F2EA0E8594134804B8200D21", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223936660, false, "8ba3c21e-fdd7-46fc-b0a1-0f6b42e0db4e",
+			"@@@InProc at C1311745732833F1A513A71A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223943460, false, "8d0fa97c-ec1f-4a9c-8c3b-963a9f467bab",
+			"@@@InProc at 61534E7CDFA9E2EDEE43AFCC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223944350, false, "0b0bbf47-fac4-4a2f-8978-58b47dbac603",
+			"@@@InProc at C1311745732833F1A513A71A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223944440, false, "acfa7955-4fd9-4929-bca3-98b788170ac6",
+			"@@@InProc at 61534E7CDFA9E2EDEE43AFCC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223945800, false, "c173e85c-74a2-4e63-8a3b-540058f41a8d",
+			"@@@InProc at AE5AB2E75E5D09220712D716", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223952670, false, "bb7089ee-bc63-49b7-9b5a-25ca592a0658",
+			"@@@InProc at 5E093A014EE3E55C288D0514", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223953630, false, "ea0702c2-9af0-4c32-8e26-642e8ae97204",
+			"@@@InProc at AE5AB2E75E5D09220712D716", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223953760, false, "24a7b132-40f7-46a3-9f8a-abdd413724ab",
+			"@@@InProc at 5E093A014EE3E55C288D0514", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223955100, false, "f2a2dd68-02cd-4172-aa09-516fe7eb51cf",
+			"@@@InProc at E71CDF1D86CB49E20CB0C984", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223962450, false, "4613bdcd-da8a-44d9-a945-b2e070f2b949",
+			"@@@InProc at C3DE6CA2B21977CD6C85406D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223963430, false, "6c0b6726-cef6-4089-918a-81b63c513921",
+			"@@@InProc at E71CDF1D86CB49E20CB0C984", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223963500, false, "762e7504-4cb5-4f62-87ba-26645f4ffbcb",
+			"@@@InProc at C3DE6CA2B21977CD6C85406D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223964900, false, "645a52b9-a8b6-4922-8f52-7f27177d4ca9",
+			"@@@InProc at 45F7E4BFAA5F1074FC86992E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223972500, false, "0b588f83-870a-426d-b086-d25d345dc685",
+			"@@@InProc at B48DC3E426111BF52B72C92E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223973410, false, "eb973a38-82da-4da2-bc9a-f6cdd02edef6",
+			"@@@InProc at 45F7E4BFAA5F1074FC86992E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223973500, false, "07c25bb3-fd72-422a-adc6-2d457f75dbae",
+			"@@@InProc at B48DC3E426111BF52B72C92E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223974770, false, "4798f8cd-662d-41ab-9d92-f629c81def64",
+			"@@@InProc at 0F0D3BBAED562747CB029C37", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223983170, false, "258ffe1e-fbff-4993-9caf-f793f356ab0e",
+			"@@@InProc at 0F0D3BBAED562747CB029C37", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223984330, false, "cf141ccc-45a3-4036-a1a6-71c0ba3943e7",
+			"@@@InProc at 8C5E69BF564CD28D9112D0FA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223985340, false, "fbb0ea28-ca2d-4018-969c-ddff0546a3c4",
+			"@@@InProc at 8C5E69BF564CD28D9112D0FA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223986460, false, "f0a793b4-0e2d-477b-8ce4-9a8817ec2d2c",
+			"@@@InProc at 6C47269CBC54DD0631537E0C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223992870, false, "5dda57fd-a664-41f4-85cb-fa4da0fbc49c",
+			"@@@InProc at 6C47269CBC54DD0631537E0C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878223993650, false, "a6dc2073-c54a-40f3-ab53-20e80931a63f",
+			"@@@InProc at 184123BF8AF1DF564E920AE5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224000770, false, "fb1dade4-7add-463d-99e9-4799a5499db6",
+			"@@@InProc at 184123BF8AF1DF564E920AE5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224001920, false, "5fdf8662-22a6-40d6-9400-22b724da6d34",
+			"@@@InProc at C6C0B98CF0EB8880BAAA5599", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224003120, false, "d3770399-b3d9-4784-85fd-58eec063f30b",
+			"@@@InProc at C6C0B98CF0EB8880BAAA5599", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224004210, false, "5dbd1e68-bd25-433f-a087-31724317d9a2",
+			"@@@InProc at 8EA871ACE13CBB97AA7A4C91", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224012560, false, "ac9f9b2e-6aab-4bed-83da-d462e571f976",
+			"@@@InProc at 8EA871ACE13CBB97AA7A4C91", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224013730, false, "373ce0be-0a85-4ed0-8517-018e4ef3b563",
+			"@@@InProc at 261446012DB3C7DB9A456698", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224014910, false, "95944aa5-bc55-4270-a83d-867a748f72b0",
+			"@@@InProc at 261446012DB3C7DB9A456698", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224016020, false, "d4d151bc-2def-48eb-9213-5e33c1e6b716",
+			"@@@InProc at F4F5C5DA61BDBB3926FACC45", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224025060, false, "9b207700-dce1-41d7-8666-fe5430ec7947",
+			"@@@InProc at 6035E4FC2F0A38DC10A8429A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224025970, false, "ee10d42d-c536-4764-825e-6c6d2e02946d",
+			"@@@InProc at F4F5C5DA61BDBB3926FACC45", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224026060, false, "fb5ec9a5-b851-41cd-8c0a-ab4f84f69042",
+			"@@@InProc at 6035E4FC2F0A38DC10A8429A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224027350, false, "220df5f3-4f2b-4335-be7b-4aeea6a9522c",
+			"@@@InProc at 8B2A470F539F9356F1EC8E7D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224035820, false, "db4072e4-7258-4c72-8727-e5a57c7ae81d",
+			"@@@InProc at E4C7008512497B9BD3835321", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224037030, false, "dbe53e0a-77f1-4f09-ad3d-16811e2fa666",
+			"@@@InProc at 8B2A470F539F9356F1EC8E7D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224037120, false, "0d4c3466-cfd9-43fc-9a74-ecb6bdc73c55",
+			"@@@InProc at E4C7008512497B9BD3835321", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224038720, false, "30254434-cb76-4673-a272-cd55bd3ac687",
+			"@@@InProc at 0DB5FFEE3C53C6F36B437955", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224047540, false, "4afe8213-40a8-41b2-8ff0-e0a2eac57777",
+			"@@@InProc at 0DB5FFEE3C53C6F36B437955", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224048450, false, "bdd33404-557c-41eb-ab6d-0155b3544915",
+			"@@@InProc at E3C9A495133230333CDD18D4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224049470, false, "6f5c2e26-4fbe-4ade-8795-563eb6cbc4ad",
+			"@@@InProc at E3C9A495133230333CDD18D4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224050690, false, "5f1951b3-e266-4a18-b552-5ae1a3c5ae99",
+			"@@@InProc at AA4FF52CE470E41925F56B53", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224057570, false, "13d3f044-b956-43f4-a964-1235c4e1a407",
+			"@@@InProc at AA4FF52CE470E41925F56B53", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224058780, false, "8183a4e0-456b-4a64-9e5f-98d16553a083",
+			"@@@InProc at F97DE2DBD9F876DD5E289B5D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224062430, false, "05b67e9c-ca3e-48da-8fe0-f4b0ce42e5a2",
+			"@@@InProc at F97DE2DBD9F876DD5E289B5D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224063590, false, "b7c7285d-68fc-4e00-8efc-20ca2941c4d5",
+			"@@@InProc at 876E08ECCB598C0FEAE59934", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224067460, false, "bc9cf5db-999c-4337-b33e-25193921fe5f",
+			"@@@InProc at 876E08ECCB598C0FEAE59934", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224068370, false, "1b64c912-71c9-449a-8ec0-bb474f516403",
+			"@@@InProc at 5DA39A3A5FA9787ADC44A277", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224071420, false, "66870a64-60e4-4f06-9ed6-85566c2337b8",
+			"@@@InProc at 5DA39A3A5FA9787ADC44A277", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224072350, false, "c1e4f2ff-e92b-41d6-ad2a-91e7e435da7d",
+			"@@@InProc at F7BBFF4806FCA58E26C48B81", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224077340, false, "8b14e997-1717-4481-9eda-491bf4019496",
+			"@@@InProc at F7BBFF4806FCA58E26C48B81", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224078510, false, "17dc59e1-c2b6-4ec3-9b35-764e7810249c",
+			"@@@InProc at 87680B8316B7FD659B17A1E0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224082130, false, "d23ed89d-7693-472d-b68c-ada5e44d070e",
+			"@@@InProc at 87680B8316B7FD659B17A1E0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224083320, false, "8fcf3502-c80b-400a-9c06-24f450be2c9b",
+			"@@@InProc at E89267494D41010773627610", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224087340, false, "bc2098da-6fb2-406a-adc2-aca455e38ac4",
+			"@@@InProc at E89267494D41010773627610", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224088220, false, "2c9408d1-5a3e-4d3f-a783-f5fcacd39bbd",
+			"@@@InProc at 20527E7E0BACBED98FF45131", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224091610, false, "f4eb0942-b48b-47cf-8bb1-5688f343e3f6",
+			"@@@InProc at 20527E7E0BACBED98FF45131", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224092710, false, "e0f9b880-6dd2-4bcd-92cb-908c29a41e6b",
+			"@@@InProc at 4FA08B3A3726509F488DEA59", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224097190, false, "351d44ae-a227-4842-85ea-139545bf4b82",
+			"@@@InProc at 4FA08B3A3726509F488DEA59", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224098090, false, "f3c58afe-b64b-4c7c-8b43-9935d829b384",
+			"@@@InProc at 67868CB89174A1DE1057B320", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224103950, false, "9ab7623e-c6bb-4d63-9566-ba22eef5ed8a",
+			"@@@InProc at 67868CB89174A1DE1057B320", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224104990, false, "c1c629eb-a3b0-4363-a3f0-7826535c6482",
+			"@@@InProc at B6C00D4A76FBEB1F5A98F006", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224106340, false, "0723b70a-ed6a-4f06-b564-627f34e3765a",
+			"@@@InProc at B6C00D4A76FBEB1F5A98F006", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224107130, false, "fd5e9dc1-18dc-4309-9f8e-5e0d84dce8dd",
+			"@@@InProc at 490FC4F974E2030F6CF7429A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224112940, false, "dfb07667-4b9d-469a-9947-425537cc9ddc",
+			"@@@InProc at 490FC4F974E2030F6CF7429A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224114000, false, "a90754d6-aeb4-43de-b9f3-dcf696113f10",
+			"@@@InProc at F77CF944BCAB1F6A0373AB3B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224115340, false, "b2ddcbd2-2c08-44ab-9d5f-0133861c0625",
+			"@@@InProc at F77CF944BCAB1F6A0373AB3B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224116130, false, "c2c2697f-3dfc-4264-b0b8-fe158f60640e",
+			"@@@InProc at DF31B385F656B3087300F688", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224122440, false, "2aeea825-52ed-45fd-943d-7a378c194316",
+			"@@@InProc at DF31B385F656B3087300F688", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224123300, false, "d8ae9153-6fbe-473f-8536-19cfc7ab29d1",
+			"@@@InProc at 36EDE038372453CA3D15CE20", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224124040, false, "e5bdcd9d-7703-465c-a467-0ab9d737949a",
+			"@@@InProc at 36EDE038372453CA3D15CE20", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224124850, false, "e11b0cfb-d956-44e9-a528-efa0f94e341d",
+			"@@@InProc at 3136FEF28DB7DE42335A546F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224131640, false, "5129c340-1026-47d1-ba8f-44c6c0dfbe9f",
+			"@@@InProc at 3136FEF28DB7DE42335A546F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224132430, false, "9001b770-beee-4520-8517-f4d5cc1e9bd8",
+			"@@@InProc at 87519F52CED682A7682173D9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224133200, false, "7f9cfea5-705b-4d2a-9b10-c1c3bc452aa8",
+			"@@@InProc at 87519F52CED682A7682173D9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224133990, false, "63669baf-890c-425e-8f99-e5411dd8dc4f",
+			"@@@InProc at 9262D4A23F2DF2184B63BB66", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224140170, false, "81d1e646-6ae3-4cc2-94de-0842de541d98",
+			"@@@InProc at 9262D4A23F2DF2184B63BB66", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224141200, false, "32d81f14-94aa-4b81-9217-705294e635d1",
+			"@@@InProc at 64710DDF918DC5F2352C726D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224141560, false, "f987106e-7b73-41c4-a51d-25863eda16b9",
+			"@@@InProc at 64710DDF918DC5F2352C726D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224142620, false, "b3d6a3fe-c636-439c-b0bf-fc706a201f75",
+			"@@@InProc at 73D1B95E9432C589D118DCD8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224149280, false, "5f4f393d-13b3-41a4-b3ec-c349dd879fa8",
+			"@@@InProc at 73D1B95E9432C589D118DCD8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224150110, false, "46f8fcd0-3423-49bf-9919-a4f12c580b8d",
+			"@@@InProc at 8D51934C6078032823448397", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224150300, false, "9f7fd0be-8ef8-47ab-a9aa-eda174716b84",
+			"@@@InProc at 8D51934C6078032823448397", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224151750, false, "0d3dba8c-7c1c-4e3b-a028-91323bd8df64",
+			"@@@InProc at BDD847B60A76D4EBC729153A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224158190, false, "318c58a9-836d-4ff3-8968-7c58fd60b7d7",
+			"@@@InProc at BDD847B60A76D4EBC729153A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224159290, false, "cb1c957b-71c7-4a09-aef2-9d4094fda58d",
+			"@@@InProc at 221E5CEDE040CA03E3E47F6F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224159400, false, "fd6fbf25-b681-4657-89c9-4ed28ffe972e",
+			"@@@InProc at 221E5CEDE040CA03E3E47F6F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224160830, false, "9aacbd96-1e0c-4ad1-a5a6-d1bc4551f0df",
+			"@@@InProc at 81D9F28524B609C1DE3F4938", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224168970, false, "aa53ea1b-faec-4b7b-83dc-efdaefcbccc5",
+			"@@@InProc at 69C2B80AA5DF701A44BCFD03", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224170020, false, "8dd7cc7c-fcc7-4aec-b2b3-b203e8f2c96b",
+			"@@@InProc at 81D9F28524B609C1DE3F4938", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224170120, false, "7f7bad4e-2173-4e21-80b3-ad22419deac2",
+			"@@@InProc at 69C2B80AA5DF701A44BCFD03", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224171580, false, "2121df60-ca7f-4551-861c-a25a95a80ba6",
+			"@@@InProc at 3D6212D2122880FFCD43543C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224179180, false, "2f70ebfa-f9a3-426d-b800-3bd89c4b108e",
+			"@@@InProc at E5F90990B2A4EF28C075C263", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224180220, false, "d7dcd599-12a3-4d23-a28f-96a1dde773e4",
+			"@@@InProc at 3D6212D2122880FFCD43543C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224180280, false, "1c4501bc-5a49-4385-9a55-b0ef7af9704d",
+			"@@@InProc at E5F90990B2A4EF28C075C263", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224181680, false, "b234f05d-a6da-4dc7-884d-005c5bd6f476",
+			"@@@InProc at 19C2BB5AF75E5C2D39C21973", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224189060, false, "ffaf02fc-2b43-487a-a04e-c599835b9c2a",
+			"@@@InProc at 4BB19A642357B235E46D3363", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224190030, false, "7a3f2231-2fca-4153-8de7-b3a4a9853648",
+			"@@@InProc at 19C2BB5AF75E5C2D39C21973", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224190120, false, "ee6900ba-b1e7-428c-a3b9-6a64629cc506",
+			"@@@InProc at 4BB19A642357B235E46D3363", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224191370, false, "ee21a366-75f0-48a1-9f50-86281b37a3a1",
+			"@@@InProc at 6681B01EEE4AC45F05634720", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224198870, false, "31c54794-e2f1-442e-bcf5-5bccbd2a878c",
+			"@@@InProc at 20613EEFB0C97F000923BBAC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224199810, false, "85d943ae-d0b7-47be-a027-32bb8482ec21",
+			"@@@InProc at 6681B01EEE4AC45F05634720", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224199910, false, "4f293a2d-3593-43e6-93ed-c0f495f2609c",
+			"@@@InProc at 20613EEFB0C97F000923BBAC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224201260, false, "c3729bb5-69f1-437e-b5e4-eb89ba8720f6",
+			"@@@InProc at D5FA1D6C3F14CB095A928F8C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224208370, false, "dd830491-cf61-442b-939d-ebdf1be72005",
+			"@@@InProc at D5FA1D6C3F14CB095A928F8C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224209380, false, "a82b7ea0-37c1-4c60-a583-8f5762c1f637",
+			"@@@InProc at 6AA0B1102EA14162D23EBD34", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224209590, false, "c7161fdd-1f70-45f1-9952-5b24483499aa",
+			"@@@InProc at 6AA0B1102EA14162D23EBD34", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224210940, false, "bf5a8520-0ee2-47b7-b29c-5565e688690f",
+			"@@@InProc at 240D2EE8E7419C69707D2C89", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224218020, false, "0057dc2f-fa3e-448e-8a14-a21f956b2592",
+			"@@@InProc at 240D2EE8E7419C69707D2C89", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224218960, false, "4268b46b-ecd3-47b4-9117-5c25aca91008",
+			"@@@InProc at 40C8459C83227EABE1057253", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224219520, false, "9e2e6ef6-236a-4aaa-84a7-b2a0d72bf1ee",
+			"@@@InProc at 40C8459C83227EABE1057253", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224220410, false, "227f48ad-f990-4da9-8ae0-f0eab9c660ca",
+			"@@@InProc at 83889C82C2D2C48632E27962", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224226570, false, "57804b8b-13a0-48a8-99a9-3e2b11e942f6",
+			"@@@InProc at 83889C82C2D2C48632E27962", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224227510, false, "27b5d545-2642-4fa4-83bc-a6a0cc5129ea",
+			"@@@InProc at 50FB14EC984242DBC1A89C18", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224228480, false, "f4445ab3-ed72-4275-b0b2-58d2bb7ce5e0",
+			"@@@InProc at 50FB14EC984242DBC1A89C18", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224229400, false, "cb3292f0-d058-4c48-b5f5-1d2111f4e139",
+			"@@@InProc at 9941828050551C7D0A179FD3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224235270, false, "47e3b75b-b4e8-4729-9b91-155f2827917b",
+			"@@@InProc at 9941828050551C7D0A179FD3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224236270, false, "26169891-ab27-4a78-98b3-f21a53d7d417",
+			"@@@InProc at B58FB80599CEB61A29B53E6E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224237710, false, "6a4c5ccc-a6f7-40e1-939f-362ddb368cfc",
+			"@@@InProc at B58FB80599CEB61A29B53E6E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224238490, false, "3c937659-30d8-47a9-beb8-d4543a30e5af",
+			"@@@InProc at 8C80F2F5D53DC22E35672883", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224244950, false, "2b545c93-10f1-45cf-be9c-21b3b9cf5565",
+			"@@@InProc at 8C80F2F5D53DC22E35672883", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224245980, false, "c41456dc-f3ca-4b3a-a3d5-b72663c92b46",
+			"@@@InProc at CC707077D25B98EB32ED5656", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224246730, false, "07eacd91-bd9e-40e0-90c2-d81e862b12e1",
+			"@@@InProc at CC707077D25B98EB32ED5656", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224247670, false, "b66444f2-5c05-48a4-8325-69a9ee7bdb98",
+			"@@@InProc at 7EA0F4B0D7A67FC7BEF98EBA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224254690, false, "b4093ee8-4fe7-4255-8643-87548ce4dd59",
+			"@@@InProc at 7EA0F4B0D7A67FC7BEF98EBA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224255470, false, "3e1b2327-ae0b-45f3-bfe7-2a6d8a871b1b",
+			"@@@InProc at F1D2896B49E62A1F0C674C77", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224258780, false, "a76d1773-213a-464c-81b2-e4e3e7519853",
+			"@@@InProc at F1D2896B49E62A1F0C674C77", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224260000, false, "33a725db-f79a-45bc-8059-09a78cdb3ba3",
+			"@@@InProc at D3183125B302D28C9D87126B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224262980, false, "98e01ece-fcf3-4695-ad06-674c0fd75c9a",
+			"@@@InProc at D3183125B302D28C9D87126B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224263800, false, "1503d1aa-1c97-4645-9a39-8a60e2ad20c9",
+			"@@@InProc at 583F61902244C9A5FC6574AA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224269760, false, "f8e384b3-370e-4847-a4f0-26ac090d3237",
+			"@@@InProc at 583F61902244C9A5FC6574AA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224270840, false, "756768c6-8110-4c6e-b22d-77bd7e3a3db8",
+			"@@@InProc at E782F940B7538219CFAA01E3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224272290, false, "e296a24f-e07c-4886-9552-303d1b87a9c5",
+			"@@@InProc at E782F940B7538219CFAA01E3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224273100, false, "12013652-ae67-4564-a905-c3f9e4c53f3f",
+			"@@@InProc at FEDD969AD9B48D76F4189756", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224279140, false, "f30f40b7-853a-4145-966b-2c96a76df21b",
+			"@@@InProc at FEDD969AD9B48D76F4189756", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224280140, false, "cc9ec025-6124-4be3-9f07-791cb828c0c2",
+			"@@@InProc at 6A0C31D4F7AE63E1A4CC0F53", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224281070, false, "e79ffbef-0c3b-4eb2-8988-68be43b3d2c5",
+			"@@@InProc at 6A0C31D4F7AE63E1A4CC0F53", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224281880, false, "0aef493d-13dc-4952-a0ac-f3dd1db41d85",
+			"@@@InProc at C9B41DE92B826EB6FE92C7B7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224311090, false, "4c456202-7871-4a01-94a8-4b9938e8bcd5",
+			"@@@InProc at F35FE286D2D2AC5D6F684552", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224312940, false, "21ded0c6-9697-408a-aadc-7d2d57dbcf90",
+			"@@@InProc at C9B41DE92B826EB6FE92C7B7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224313240, false, "58f49282-4180-4b50-abc0-dd609af66e70",
+			"@@@InProc at F35FE286D2D2AC5D6F684552", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224315340, false, "90535582-19e8-483f-bb8a-4c6c40d6167a",
+			"@@@InProc at A02036BC71D575562170BA05", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224325000, false, "7d9b4e15-c8ff-4343-8cd3-c8a0db20701a",
+			"@@@InProc at A02036BC71D575562170BA05", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224326210, false, "376a9cc6-f788-4fc0-9199-ac31c5f07411",
+			"@@@InProc at 6EFBD4A2774901AE4C86F065", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224327380, false, "96cbe101-1fa0-46b0-a4be-d1465c959235",
+			"@@@InProc at 6EFBD4A2774901AE4C86F065", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224328520, false, "33241309-93c1-4e02-a91a-5bdb69ff2a65",
+			"@@@InProc at 09A626077CACEE6B0F29F579", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224337010, false, "a8ed6614-4a63-45d3-bcce-e888561d966e",
+			"@@@InProc at 09A626077CACEE6B0F29F579", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224338890, false, "2428fe3c-8042-468b-81bb-847acbc53efa",
+			"@@@InProc at 1223F79491452E3488D7ACE4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224339200, false, "3b22fc13-ca51-4aea-9416-c46f968b59af",
+			"@@@InProc at 1223F79491452E3488D7ACE4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224341830, false, "8b2dcc30-1d34-4122-9802-ed42a0ad4472",
+			"@@@InProc at 11B232F187CE5A94097A3C6F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224350670, false, "df8fe420-c1b3-45e0-aa90-c6aaef237ac5",
+			"@@@InProc at 283D3E26931E9486B6BA6972", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224351780, false, "d0746357-ac5b-4b94-9ff3-1ed50a769e55",
+			"@@@InProc at 11B232F187CE5A94097A3C6F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224351900, false, "db24d694-6d82-45e9-8da4-7fe3297c2102",
+			"@@@InProc at 283D3E26931E9486B6BA6972", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224353440, false, "efeefabe-7a5b-411b-b435-1db14063f3a7",
+			"@@@InProc at 30114AFC3FA765DDB4665403", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224360650, false, "f6c8dbe3-8aae-4a38-b25f-a8a5c73e48c2",
+			"@@@InProc at 30114AFC3FA765DDB4665403", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224361670, false, "1b5e7ec1-d3df-4846-8fa9-2b94b07ad50b",
+			"@@@InProc at 18D50A8DE99747656D0809D4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224361870, false, "0063e646-2513-4388-8d20-fecd276b5874",
+			"@@@InProc at 18D50A8DE99747656D0809D4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224363350, false, "5ed7a218-8201-4850-be69-1b5d157b0a7e",
+			"@@@InProc at 8F66F6FC8FBE45F31A022C46", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224369740, false, "c5327c49-62f2-4702-95ea-c2a8f6392e86",
+			"@@@InProc at 8F66F6FC8FBE45F31A022C46", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224370510, false, "f6247c82-24ca-4fab-a5f0-513235ff27c7",
+			"@@@InProc at 3D682CB820FE5CE0F5C9E74B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224378550, false, "dc7d8d5e-e438-4a9f-87cd-13cc44f9d3f1",
+			"@@@InProc at 3D682CB820FE5CE0F5C9E74B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224379520, false, "b449ff9e-baa0-4ff4-8dc6-8fc881fec814",
+			"@@@InProc at E0A3FBBFA3675A82E7C1534D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224379700, false, "adecf9f6-1f3b-42d1-87b2-023e8d09e9b1",
+			"@@@InProc at E0A3FBBFA3675A82E7C1534D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224380940, false, "dd01f1a9-d10b-478b-b9a3-dc0bdfaaf30c",
+			"@@@InProc at 60D3BD2A1177476DD37F933A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224389330, false, "105ec791-8387-4e7d-8947-798af2644a6c",
+			"@@@InProc at 60D3BD2A1177476DD37F933A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224390510, false, "6c28682e-cfca-4540-ae40-9e56255d4278",
+			"@@@InProc at 08FACE1284ABEF0DECB1E5E0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224390640, false, "c750d23f-1785-4e4c-93aa-251d78abdf62",
+			"@@@InProc at 08FACE1284ABEF0DECB1E5E0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224392280, false, "dc070f25-abeb-4b0f-9c2b-c9d3234e35d7",
+			"@@@InProc at E90D8129B72A67571BD83C2E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224401060, false, "00908ed8-2894-4a70-a826-3995ec85bf9a",
+			"@@@InProc at 9E0E1218B867D969833FFA44", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224401440, false, "41d00ac6-04e2-4518-b383-080f77c030da",
+			"@@@InProc at E90D8129B72A67571BD83C2E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224402700, false, "2385c604-bdbb-4d64-8b84-b75bb81c5ed5",
+			"@@@InProc at 9E0E1218B867D969833FFA44", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224402800, false, "51d9d812-44d2-42bd-9355-27f7ccccf7c8",
+			"@@@InProc at 210BB589FA6A5F08EFDD2551", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224410870, false, "5fd24336-656a-4df7-a7e3-d54b35495d51",
+			"@@@InProc at A33B40A5AA01BD886A332EBB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224411800, false, "185eca20-1d6b-4655-975f-2ce233787417",
+			"@@@InProc at 210BB589FA6A5F08EFDD2551", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224411900, false, "ebcc6ccf-4861-424e-a37f-aa96df675397",
+			"@@@InProc at A33B40A5AA01BD886A332EBB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224413170, false, "8e14ee0b-4182-498e-9cf9-8103919133cc",
+			"@@@InProc at E28B3BADAA5017F10C1F5956", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224421690, false, "d01a4e49-6449-4eaa-ad83-a804656b3320",
+			"@@@InProc at EC1B8542D5460F7F81FAF24A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224422900, false, "8905d35f-108e-4468-a61e-5365825a59fe",
+			"@@@InProc at E28B3BADAA5017F10C1F5956", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224423020, false, "927c7e97-8067-4039-bdaf-62feb3aec744",
+			"@@@InProc at EC1B8542D5460F7F81FAF24A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224424580, false, "d35e7210-c643-417b-ab11-df47734442d2",
+			"@@@InProc at 90A47A30574BB9AC8071E4DD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224433720, false, "5865ca32-522f-46e7-9014-41bd9b47757f",
+			"@@@InProc at 90A47A30574BB9AC8071E4DD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224435040, false, "a8407159-3fa1-4552-9e03-83845db2d97a",
+			"@@@InProc at 5774184FFA4969CB9958C5F2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224435150, false, "b65384fb-91ae-471e-a159-2f5eb3be2fd1",
+			"@@@InProc at 5774184FFA4969CB9958C5F2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224436810, false, "5dcba171-0fbe-408c-ba0a-41d79242695d",
+			"@@@InProc at 50FF442F36AF2C0AD22F1B23", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224443260, false, "8441b9fe-c292-424b-ad02-49338fbc7c87",
+			"@@@InProc at 50FF442F36AF2C0AD22F1B23", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224444340, false, "99ada401-60dc-4439-9137-05d62c5dd6cc",
+			"@@@InProc at EBE4C1EB12C6631CF20FF59A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224446240, false, "32611694-df6c-4f4d-8b26-f698044a6a98",
+			"@@@InProc at EBE4C1EB12C6631CF20FF59A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224447070, false, "a15dd438-4180-4162-a774-35998c3c6ba3",
+			"@@@InProc at 135ADC89D5A293FA49996024", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224453440, false, "b1a36403-e661-4fff-abe1-7438e8fb9995",
+			"@@@InProc at 135ADC89D5A293FA49996024", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224454410, false, "9a612395-303e-4a4c-b9f6-401e2f2de834",
+			"@@@InProc at E5E74EEC5991F379E637B595", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224457290, false, "7a56d9fd-ecd9-4f1f-8f92-c9c1ff67f0b8",
+			"@@@InProc at E5E74EEC5991F379E637B595", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224458490, false, "247ef532-dc7b-4e74-9ad4-2e327fdbbcf3",
+			"@@@InProc at CC318FA62AA44264D11C8A3C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224466680, false, "e922b840-bc78-48d5-8648-6921b0039619",
+			"@@@InProc at CC318FA62AA44264D11C8A3C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224468630, false, "a08888b1-877d-42e4-b397-9d9f8a99107e",
+			"@@@InProc at 30569572A54D1C9955B4893A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224468750, false, "c4dc5a64-c97f-4a3f-bc62-ab59689fcca9",
+			"@@@InProc at 30569572A54D1C9955B4893A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224471840, false, "2664ab55-6448-44b6-98b3-56bf0b46393c",
+			"@@@InProc at 9CF88CF81A5ACE5C04E0A11D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224477240, false, "963f6bec-632f-4bac-9552-ef9a01f236d7",
+			"@@@InProc at 9CF88CF81A5ACE5C04E0A11D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224478060, false, "d3cb334a-a548-46ce-9350-8fef1f8c52fa",
+			"@@@InProc at FC97744C572AD175ED770A66", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224482420, false, "7323fdcc-51a1-43d1-a489-07a03b6de939",
+			"@@@InProc at FC97744C572AD175ED770A66", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224483640, false, "c338db74-ac32-4956-8ed6-844a80d331d5",
+			"@@@InProc at 3E3168230130D77BCE22A6A0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224486370, false, "0fdd3dbe-4d33-4b89-9e17-3d75cf0a238b",
+			"@@@InProc at 3E3168230130D77BCE22A6A0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224487470, false, "55b75477-b37f-42aa-9cdc-3d18b7d45885",
+			"@@@InProc at 67D956645B2E21A862A762A0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224493510, false, "f812eb90-27a5-4b3d-bfb9-a23e0df73a5d",
+			"@@@InProc at 67D956645B2E21A862A762A0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224494610, false, "d345233c-8bd0-441c-97ac-55db54409ffc",
+			"@@@InProc at 861DA884D9A6885D44DEBD37", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224497690, false, "edc302d1-b8ec-4f59-8ff7-e6e515f67dc1",
+			"@@@InProc at 861DA884D9A6885D44DEBD37", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224498770, false, "8c160fcb-2bca-42f0-8bf7-623d058d1422",
+			"@@@InProc at C6EEAB9E04B3CB60E7521C17", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224502960, false, "f4ef13b1-681d-4fb2-85ae-208b75183aae",
+			"@@@InProc at C6EEAB9E04B3CB60E7521C17", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224503880, false, "267e3d91-27e6-48aa-a5db-0148d782d965",
+			"@@@InProc at 2C84B160F031E8D44A480A93", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224507080, false, "0dea0b6e-9acb-48af-b7be-9f97c4f1677c",
+			"@@@InProc at 2C84B160F031E8D44A480A93", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224507970, false, "58595197-7463-435c-a3d9-6e2b4c4577b0",
+			"@@@InProc at 3780B2D43BA00BEA681ECCBB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224511660, false, "cb2985cc-54a2-401b-ae32-8aa2eb0e76e4",
+			"@@@InProc at 3780B2D43BA00BEA681ECCBB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224512800, false, "2de354e1-5be2-4c55-8d77-37d2c983bed7",
+			"@@@InProc at 205C1FE3F81BAA534409F1E1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224518130, false, "d14cae5f-ebfa-43a0-9509-e147a7b44c4d",
+			"@@@InProc at 205C1FE3F81BAA534409F1E1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224519710, false, "b3917254-bc2b-4dec-9903-16da369881fb",
+			"@@@InProc at 81D167B8DE3320DF36976898", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224523550, false, "a3d0bb67-59a1-4231-84e3-486b78baebc4",
+			"@@@InProc at 81D167B8DE3320DF36976898", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224524690, false, "4036ac04-5705-4ebf-af10-48582a8fa44f",
+			"@@@InProc at 3EBE7E3282D9B971E7F64434", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224529220, false, "5613430d-c7f2-4f37-a003-788f73b3be41",
+			"@@@InProc at 3EBE7E3282D9B971E7F64434", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224530020, false, "42022fc4-d9cf-45a1-ac3d-20472fb3e3c9",
+			"@@@InProc at F3D1A17E3D1B9484B0D33FFE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224532390, false, "f184a9c9-a99c-4d32-bd6d-150fbdc30cc9",
+			"@@@InProc at F3D1A17E3D1B9484B0D33FFE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224533200, false, "18b6ccbc-0f5c-416a-9e5f-a76929eee3e7",
+			"@@@InProc at B68ABE4351B7EAA9F84C7578", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224539480, false, "b30230e3-44e8-4f7f-b76d-33de410b2b83",
+			"@@@InProc at B68ABE4351B7EAA9F84C7578", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224541280, false, "115bc6e7-bf13-46dc-a40d-3907d560696e",
+			"@@@InProc at A8ED09FE10411C36B4135316", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224543660, false, "b1dbe6c3-9832-447c-801c-f0fbe5287155",
+			"@@@InProc at A8ED09FE10411C36B4135316", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224545110, false, "a6794128-5ade-42ab-9f0d-ce0c90dabf1a",
+			"@@@InProc at BF4B770A3565468367DDC947", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224553590, false, "60262683-8e90-4f2d-934a-7f33c30567ef",
+			"@@@InProc at 4A79581891D505F71A04C5D3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224554720, false, "65e4a3e3-4401-4150-ade2-967090772c57",
+			"@@@InProc at BF4B770A3565468367DDC947", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224554790, false, "a7bf3322-0f1d-4cdc-b223-b25cac821777",
+			"@@@InProc at 4A79581891D505F71A04C5D3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224556200, false, "537e3138-fe35-4de1-b0da-e2b534b73905",
+			"@@@InProc at E8FB9BFDD08FED894974EEDF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224563790, false, "bc5c8576-2238-4a29-b21d-64b62f6bc6a0",
+			"@@@InProc at C1F9C514E52E72DA7F2A0BFD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224564710, false, "ba444d8c-169a-4234-bc32-e55ece47c92b",
+			"@@@InProc at E8FB9BFDD08FED894974EEDF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224564790, false, "f89d9eca-25d9-4146-9d80-fb7787c3130a",
+			"@@@InProc at C1F9C514E52E72DA7F2A0BFD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224566110, false, "d100c1e9-5426-4cd2-a533-c79037f1ecd1",
+			"@@@InProc at 8AF7DC8E27DF5987C731ECBF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224572910, false, "6e461967-b710-422d-83db-975c949135a2",
+			"@@@InProc at EA2A795EB9E0CB35F058D126", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224573810, false, "6372fe9d-4c42-4f17-a401-e7356b5ce813",
+			"@@@InProc at 8AF7DC8E27DF5987C731ECBF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224573890, false, "0dd2f123-c45b-4dab-99b5-3d26c45c959d",
+			"@@@InProc at EA2A795EB9E0CB35F058D126", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224575170, false, "1800242f-767b-4ecd-8eda-8fa77d0b9fc1",
+			"@@@InProc at 495F9E1493D88C3DA9E11764", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224582200, false, "f50e302d-861f-483b-a17d-a61b43ac1854",
+			"@@@InProc at 91C8AAF6D44D0C2C761BDDC2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224583230, false, "a111cff2-ed6f-4538-8a5e-82966e40fb0a",
+			"@@@InProc at 495F9E1493D88C3DA9E11764", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224583300, false, "ed51f919-4b48-4983-81ad-82b00ed66f55",
+			"@@@InProc at 91C8AAF6D44D0C2C761BDDC2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224584670, false, "d3f70da3-0d81-4059-a1e5-17898f148398",
+			"@@@InProc at EDE21D4F93409899E9DFADD3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224593820, false, "b2364685-4bbc-4a8b-b044-d7eafc1d1b20",
+			"@@@InProc at 01A0E22D488458705D77C1F9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224595030, false, "911c0dcd-297f-46c4-a118-adff928a8d8b",
+			"@@@InProc at EDE21D4F93409899E9DFADD3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224595160, false, "6275d780-2658-448d-91a6-22f09d4b9aaf",
+			"@@@InProc at 01A0E22D488458705D77C1F9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224596830, false, "6c26b152-2b18-49d1-b4f0-a73a4680b2b4",
+			"@@@InProc at 1C75B68367897623C593156A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224608170, false, "c3f07a71-9605-48b6-a1d0-ca774072041f",
+			"@@@InProc at 15B72347622C010B508BDEF7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224608310, false, "8ed56ef1-4ce6-448c-a5df-747f5044b371",
+			"@@@InProc at 1C75B68367897623C593156A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224609990, false, "68ab23e7-b1c4-4bb6-8378-e16edb18364a",
+			"@@@InProc at 15B72347622C010B508BDEF7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224610080, false, "e3e32194-d5bc-4862-9cc4-3d6ce6ef4eef",
+			"@@@InProc at 18DBBA16D09AE098088FA13F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224618650, false, "b1cf65d5-244a-4c86-9ebe-c4da655a45b9",
+			"@@@InProc at 18DBBA16D09AE098088FA13F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224619580, false, "48fa9af5-9d86-4922-bbf0-d0a68258bd6b",
+			"@@@InProc at 41CFA3D613B74927241605EA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224620930, false, "b2dd0d9c-4d0a-4523-b3ff-7e63d5bd67ac",
+			"@@@InProc at 41CFA3D613B74927241605EA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224622130, false, "df5e1877-b60b-4f36-8045-1b0dbf504b12",
+			"@@@InProc at C92B9C4660D548EF7869B280", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224627480, false, "4736cc1d-4584-4f35-b670-75c89b79becc",
+			"@@@InProc at C92B9C4660D548EF7869B280", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224628390, false, "93780188-b660-4363-a062-f4244bb07ee2",
+			"@@@InProc at 79F3DF31F2DAFD31853DCA7C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224631550, false, "375ec02e-1ba1-42b6-9a7d-b2655602780f",
+			"@@@InProc at 79F3DF31F2DAFD31853DCA7C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224632580, false, "1ed7eaa3-efac-4d62-aa4b-c8cc1347a70f",
+			"@@@InProc at 8B77534EFA9A457FFBEF3CA4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224636500, false, "4c0d2b6d-eda8-47ea-9a9f-2476c8950223",
+			"@@@InProc at 8B77534EFA9A457FFBEF3CA4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224637690, false, "389c3d84-98ce-461d-8485-64621b12a5c3",
+			"@@@InProc at F969BF82D7D1B35FEBA872A1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224641930, false, "ac990d77-32c9-4c36-9f39-5a9d464a1f5e",
+			"@@@InProc at F969BF82D7D1B35FEBA872A1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224642710, false, "0b0cc318-5b63-4ee0-a0b2-58574699f808",
+			"@@@InProc at 3B5F5BF8919C5B0187730CFB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224648300, false, "68d6988a-dac1-40cc-a129-23ff1be2e9b0",
+			"@@@InProc at 3B5F5BF8919C5B0187730CFB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224649720, false, "9381294d-3b42-4ff6-b839-e2fba8ac47ab",
+			"@@@InProc at DA522E88593FA7C20E6EF09B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224651120, false, "58d7af45-e0cf-4f07-92d0-a4279020b8e0",
+			"@@@InProc at DA522E88593FA7C20E6EF09B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224652030, false, "6ab38eba-499e-4da9-a462-726a62c47db1",
+			"@@@InProc at C34A40B7878159C0B799E9BE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224660900, false, "3f4269ed-bb6b-4f54-8158-f979c9151ef5",
+			"@@@InProc at C34A40B7878159C0B799E9BE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224662140, false, "a92ed91c-98ca-405c-bd43-25a805d2c595",
+			"@@@InProc at 4C0DEEC7E1249D9913359566", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224662650, false, "7d7ef695-90d8-47a4-bf12-412983dea5fe",
+			"@@@InProc at 4C0DEEC7E1249D9913359566", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224664520, false, "6e71edf2-d1b0-49f9-9240-88dd7b73cd7f",
+			"@@@InProc at D139ABCD0FEB8B40665BA5F2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224671880, false, "4cd09b3a-64fc-4865-9751-eebe29d81f55",
+			"@@@InProc at D139ABCD0FEB8B40665BA5F2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224672920, false, "39626ea9-8ec6-4d62-8fc7-6da55f69af81",
+			"@@@InProc at 09C2EAD2E66D881FAF8C86C4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224673880, false, "6c196840-e449-4116-be05-ec3d297117f1",
+			"@@@InProc at 09C2EAD2E66D881FAF8C86C4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224674810, false, "1f19fd5c-5d3b-495e-8ec3-79b651574b01",
+			"@@@InProc at 6B250D23C66103C663D18318", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224681440, false, "cfa0f129-e89a-4118-a3b4-f00d2ae798de",
+			"@@@InProc at 6B250D23C66103C663D18318", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224682420, false, "ecd728a1-6fce-403e-9d46-c71c4574f816",
+			"@@@InProc at 6B7528102C04AC7AE3CC6309", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224683370, false, "107f26bf-125f-470d-a053-2ee56f161807",
+			"@@@InProc at 6B7528102C04AC7AE3CC6309", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224684290, false, "bf81056d-10de-4273-a91e-74faf1e068eb",
+			"@@@InProc at 227DBD28171C7B3998213739", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224690440, false, "07d7638e-e98f-4630-b1d8-1d039679d9e2",
+			"@@@InProc at 227DBD28171C7B3998213739", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224691500, false, "4684e3f2-ad92-4f32-a32e-7dbdd967cca0",
+			"@@@InProc at C198794CE73DE4DF790AB938", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224692900, false, "aedf2ae7-92c8-43a8-8a62-9ae81f22d40f",
+			"@@@InProc at C198794CE73DE4DF790AB938", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224693760, false, "a34c5947-b5ff-4cee-b386-f60901a477b2",
+			"@@@InProc at 81FBFD67E5690D516237E3F1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224699980, false, "e9a5f8d8-6f31-42b0-bde3-c1867facead5",
+			"@@@InProc at 81FBFD67E5690D516237E3F1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224701470, false, "c5cb664d-daee-4f39-b701-0b3f65e17432",
+			"@@@InProc at 16834CA2EBAD696D0649A1F9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224703030, false, "c2820817-09f8-4102-a2dc-41d7b669823a",
+			"@@@InProc at 16834CA2EBAD696D0649A1F9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224704000, false, "34395bed-964f-4396-94e8-e3279599c0d5",
+			"@@@InProc at 5F6B2EDA278DBE399B425CA3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224709720, false, "6af4b586-cfe3-4cbc-952b-f42d6fb36285",
+			"@@@InProc at 5F6B2EDA278DBE399B425CA3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224710800, false, "a9cb5cde-03b2-4442-b058-2cad025f95c4",
+			"@@@InProc at 3677B3D76A37D05C343F7A5D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224714140, false, "b735dacc-6610-4d1c-b2e6-883f8cc47295",
+			"@@@InProc at 3677B3D76A37D05C343F7A5D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224714970, false, "c7045445-e7bb-4387-817f-379987650ccd",
+			"@@@InProc at 35D56E3C237988EC4FB0B1C6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224719100, false, "08106254-bb17-4afb-899b-a5e9a4d55c4d",
+			"@@@InProc at 35D56E3C237988EC4FB0B1C6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224719910, false, "ac49e22b-de22-4abb-9e27-4dd2d46f6236",
+			"@@@InProc at 45BBD4A80E4FB7D3F7315879", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224723250, false, "eb1fbb5c-775e-499e-84bd-a0c71f8981f8",
+			"@@@InProc at 45BBD4A80E4FB7D3F7315879", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224724110, false, "9179100d-9e95-45f1-aa40-1dd8b982f0b1",
+			"@@@InProc at F32417A30BBA26466B0E2302", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224728120, false, "d857e232-5c4e-4a30-a230-f9721bda7b50",
+			"@@@InProc at F32417A30BBA26466B0E2302", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224729170, false, "6d6a954f-0f17-47c9-9f82-c78e6417221e",
+			"@@@InProc at FED8B7151E6CB6D00058B299", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224731660, false, "6822a499-73ff-4840-b4ef-0e9a4aa59919",
+			"@@@InProc at FED8B7151E6CB6D00058B299", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224732480, false, "363df3e7-447c-440e-b64d-d15808b5f3c2",
+			"@@@InProc at 9710F4F317B8A899CD6777C1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224737130, false, "1dad384f-b11c-4d9b-8183-88386e8fab2c",
+			"@@@InProc at 9710F4F317B8A899CD6777C1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224738060, false, "d4923d94-8781-4929-92a9-6a4318f4eb47",
+			"@@@InProc at F79B85C4555C165CCAC1AE79", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224740620, false, "13f0c8f5-e208-4616-b63b-4d8366514df5",
+			"@@@InProc at F79B85C4555C165CCAC1AE79", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224741570, false, "67ec21a8-982b-49a2-8492-c1ee3267c8a6",
+			"@@@InProc at 18268A9A2CE6019A796408D4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224745860, false, "59985bad-0f2f-4c26-866d-289430fe60be",
+			"@@@InProc at 18268A9A2CE6019A796408D4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224746650, false, "68707e52-931a-4977-ba4a-cb9cdd58cca0",
+			"@@@InProc at ADD360FE3C8F99CFAD041B07", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224749320, false, "ea6c69e6-400e-4835-9e71-7ddb07a9b551",
+			"@@@InProc at ADD360FE3C8F99CFAD041B07", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224750100, false, "708b86d4-3486-4a46-8392-e514706af25e",
+			"@@@InProc at C342824CA32A33A30680ABF1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224754720, false, "02995fa5-036a-4acb-8849-9ecd592118ce",
+			"@@@InProc at C342824CA32A33A30680ABF1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224755590, false, "044009e2-1659-4d8a-9c61-4ca37a817cb9",
+			"@@@InProc at 5DB58C7BC26D1C74880FD495", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224758530, false, "93aa0db8-b96b-4909-988f-3b2cd0f07b36",
+			"@@@InProc at 5DB58C7BC26D1C74880FD495", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224759630, false, "8099bf20-2527-4dca-9d60-0632f3fb61ef",
+			"@@@InProc at B8B05667551AA597EAFA4783", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224764640, false, "fba2aa95-3595-4c8e-aeb6-829a7513b780",
+			"@@@InProc at B8B05667551AA597EAFA4783", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224788630, false, "f1fe58ac-0428-41d4-816f-f2e25b3f729b",
+			"@@@InProc at DD967A1401BC38ED0C9C86C8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224791170, false, "0fea2aae-a5cd-4b57-b6ff-b765e092d74b",
+			"@@@InProc at DD967A1401BC38ED0C9C86C8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224792100, false, "87ade2d5-4dd4-4e99-aba6-e64673aa4b81",
+			"@@@InProc at DB23CFE5F6706A2F79A771A7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224797870, false, "4109925d-1acf-4ec6-b5a9-bbf77780a642",
+			"@@@InProc at DB23CFE5F6706A2F79A771A7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224798760, false, "25cf6147-1ccc-4be8-98f7-250154654ea2",
+			"@@@InProc at 1865FA8EDA5EF48E7AFD6052", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224800400, false, "4d722aa6-c6a6-45cc-8b90-7b86757e490b",
+			"@@@InProc at 1865FA8EDA5EF48E7AFD6052", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224801170, false, "70d8f8ff-8a50-45ee-a976-23b36ff62387",
+			"@@@InProc at AB4E9573559F34164B2AD2A0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224806340, false, "1addff10-f707-4f09-be56-9d0975458c08",
+			"@@@InProc at AB4E9573559F34164B2AD2A0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224807470, false, "03a7b6b3-b6f0-4635-b534-61f1c7e6fd77",
+			"@@@InProc at 2489B1362E0A4C903B33BCE3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224808840, false, "ca520375-5644-4084-af01-272349aed4c0",
+			"@@@InProc at 2489B1362E0A4C903B33BCE3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224809840, false, "c5263852-c2ad-423e-8f9f-3516ca67c5e2",
+			"@@@InProc at 8BF05728B75A8795DAB578AB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224815460, false, "09067463-08bd-443b-a120-a3f92fe2d2d1",
+			"@@@InProc at 8BF05728B75A8795DAB578AB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224816250, false, "6230f97a-3ece-466a-9c79-f9422dd99233",
+			"@@@InProc at CF774A8601890510513575BE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224818470, false, "2560af91-a559-48f2-ae77-0e51fae5036d",
+			"@@@InProc at CF774A8601890510513575BE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224819260, false, "d3c73be6-7404-4487-a0bf-8a2786b284db",
+			"@@@InProc at 71B30C43605F4F4B3F4AD429", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224823790, false, "a5a20013-a2d2-40ea-85d7-3db745814eb5",
+			"@@@InProc at 71B30C43605F4F4B3F4AD429", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224824690, false, "1fefb606-2507-4a6d-90f7-329888f6626c",
+			"@@@InProc at 6B681FAE890E6D4BABB431C0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224827410, false, "34d73310-f08b-46f4-90f4-14e1e232f3a8",
+			"@@@InProc at 6B681FAE890E6D4BABB431C0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224828710, false, "98626d69-d07b-41a3-bb72-0a90efbe52e7",
+			"@@@InProc at 85E8205145B3D8FD89AEE596", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224832500, false, "8801850b-57b8-47f8-8799-057f56614e06",
+			"@@@InProc at 85E8205145B3D8FD89AEE596", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224833290, false, "1fc2ec37-b877-4eed-bb79-d46be8b8a22a",
+			"@@@InProc at 4D92C39D040D7AC675358CEA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224836760, false, "df408277-5aa6-4da6-8780-b705090b3e0d",
+			"@@@InProc at 4D92C39D040D7AC675358CEA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224837650, false, "9a125186-3585-4f1e-a8e2-a143bb1667fe",
+			"@@@InProc at D4309CD72A3E55A31EBA8065", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224841270, false, "4f75b617-13a6-42e5-a6d2-3486b86c7e5f",
+			"@@@InProc at D4309CD72A3E55A31EBA8065", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224842080, false, "a8f45375-0198-42f7-96f2-e58722a7dc19",
+			"@@@InProc at 481F801910846DAA8C4B7F13", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224846090, false, "1266c929-875c-46b9-8e23-a119e09f2b82",
+			"@@@InProc at 481F801910846DAA8C4B7F13", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224847520, false, "cc092b46-e253-41dd-a1c8-4f2bfd648ec6",
+			"@@@InProc at 10CA75E0F177D00207D65483", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224850230, false, "423115b9-837a-4bb7-842c-afd419ce74e9",
+			"@@@InProc at 10CA75E0F177D00207D65483", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224850990, false, "5c284446-7331-46c8-8dea-8c5283406fc1",
+			"@@@InProc at BC247753D9298B9AE56E297C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224857200, false, "ee4cce01-c489-4c79-aff9-44cce60043f1",
+			"@@@InProc at BC247753D9298B9AE56E297C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224858230, false, "0091633c-c21d-48e1-8987-c7d5d81d63a1",
+			"@@@InProc at B7708C1879140872B7635354", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224859630, false, "dcf30a73-7613-4353-bd1b-1e857202eb97",
+			"@@@InProc at B7708C1879140872B7635354", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224860410, false, "b21d4726-b751-4514-a55c-01935d5476ed",
+			"@@@InProc at 7F2170DF589EA068147E1FA7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224866290, false, "a4fe5853-0d22-4511-be01-89479f9e7db2",
+			"@@@InProc at 7F2170DF589EA068147E1FA7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224867240, false, "e12476a1-2418-4127-9de4-fb8a6ff09de6",
+			"@@@InProc at C242911F96C8CA2F11E56C2C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224868490, false, "ece2e405-c00e-4909-93eb-c7bd57b21935",
+			"@@@InProc at C242911F96C8CA2F11E56C2C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224869360, false, "5610b731-d0c0-4709-9ea7-84f796c75052",
+			"@@@InProc at CA26225B30DD5EDBF4D2A12A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224876000, false, "b5afc4f0-c5e2-4d23-a711-bceb324ee9f5",
+			"@@@InProc at CA26225B30DD5EDBF4D2A12A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224876880, false, "87f7a7b5-906c-4135-a90b-4f635a2ecd95",
+			"@@@InProc at 231FE9A7517913A2E1CB04DD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224877760, false, "2a848428-3974-4bb2-88ef-ec8f9067ba78",
+			"@@@InProc at 231FE9A7517913A2E1CB04DD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224878540, false, "de65f3a4-542f-4f05-b21e-de4625f4e8dc",
+			"@@@InProc at 316F81A47E23AC8B90D5AF1F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224886180, false, "d2184972-b24a-4f88-9a42-dd6496121b9d",
+			"@@@InProc at E5EE891027DA6A488F7B9E36", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224886470, false, "5278a50e-e72e-474f-9c47-bbb4cc0bbc8d",
+			"@@@InProc at 316F81A47E23AC8B90D5AF1F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224887920, false, "6ca79531-2b63-4981-af09-6b05a69223ce",
+			"@@@InProc at E5EE891027DA6A488F7B9E36", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224888000, false, "6438b0ce-4551-483d-8ba4-88e958faa067",
+			"@@@InProc at DF6C45CC7A69E07639C05757", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224898150, false, "664ded0c-aff2-4fb5-bbb6-aabb3189eca1",
+			"@@@InProc at 1D825CD54136CE6F4483AC44", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224898600, false, "c83dd033-3279-4c80-9f27-25a9a2ffdca8",
+			"@@@InProc at DF6C45CC7A69E07639C05757", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224900040, false, "d9e2514a-a186-451e-8dc0-9341ccd5522c",
+			"@@@InProc at 1D825CD54136CE6F4483AC44", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224900140, false, "3b27fcff-2739-4187-92e9-473cb5d7405f",
+			"@@@InProc at 0106774078C61DCFFA8E9684", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224908310, false, "9e309993-dd78-4b31-b126-6822634eaf09",
+			"@@@InProc at 0106774078C61DCFFA8E9684", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224909110, false, "c77c4bf8-b5a6-4777-b8c2-66a194788ee0",
+			"@@@InProc at D3839B01187E752D2D91DD60", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224910050, false, "afe4224c-816b-484f-8a99-a8c6d5a3bbe3",
+			"@@@InProc at D3839B01187E752D2D91DD60", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224910970, false, "d84ccf85-f492-4719-aae8-be03d0da63dc",
+			"@@@InProc at 3B9D1E08AF79FE64945436BA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224918700, false, "290a23de-8085-494b-aa11-d8ffd0a275d8",
+			"@@@InProc at 3B9D1E08AF79FE64945436BA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224919490, false, "5e8af49b-4ff0-4032-9b80-35b1063c0b50",
+			"@@@InProc at FE7B95AC3FF9247263CC16A5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224920270, false, "34cf3433-1d33-41f4-913b-3500a37dac57",
+			"@@@InProc at FE7B95AC3FF9247263CC16A5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224921060, false, "bb2f85b2-8021-4b31-bd25-1f5422fecd14",
+			"@@@InProc at 8BD0F06CCA66C08D77B80215", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224930150, false, "25389378-5e33-4320-9bcb-9ccfafd52f2c",
+			"@@@InProc at 197E77449CF331A41117C4D5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224931320, false, "9d3408b2-be3d-484d-b6c1-76c450cc090b",
+			"@@@InProc at 8BD0F06CCA66C08D77B80215", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224931440, false, "693dd39d-1213-4535-85d7-0621d8017c2e",
+			"@@@InProc at 197E77449CF331A41117C4D5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224932970, false, "4d62ae3c-29f5-436c-8571-5946d2e83c79",
+			"@@@InProc at 01FC5F8FD1E115C72B465675", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224940290, false, "0c5d12e4-0a98-4d93-9209-3f30524a3106",
+			"@@@InProc at 01FC5F8FD1E115C72B465675", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224941180, false, "846c85b4-b670-482a-9ef8-2ad1a7b55f7c",
+			"@@@InProc at A9932F586C6CD7A49287B458", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224941400, false, "89d53f09-cbe9-45b3-a4c6-766c28e62b57",
+			"@@@InProc at A9932F586C6CD7A49287B458", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224942730, false, "5bd66711-de05-47ae-b9bf-3dad13763e5a",
+			"@@@InProc at E16A45E2B6052AE6D50B5B4F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224951110, false, "79ae3bc3-a679-456a-8043-b321a3324015",
+			"@@@InProc at E16A45E2B6052AE6D50B5B4F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224952260, false, "85163a8c-ecaa-451d-9e24-7b0ac0d221af",
+			"@@@InProc at 4552498635B9A7B186F46A3F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224953260, false, "e61bc7a0-4c93-4e0a-b070-1fb0f8129236",
+			"@@@InProc at 4552498635B9A7B186F46A3F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224954040, false, "6643744c-7efd-4fe2-a2b6-b3c675737b8c",
+			"@@@InProc at 7D017F3207A86AD315D0F519", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224961690, false, "988b45fa-dbc7-4a11-a3a0-a0fd498cf8b5",
+			"@@@InProc at 3AC7E05A5192183D595F2386", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224962670, false, "641d5947-9d66-4fb5-a9b2-e1f5c4a64612",
+			"@@@InProc at 7D017F3207A86AD315D0F519", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224962800, false, "7116640a-347e-4d72-944d-a0a1fef1d9d7",
+			"@@@InProc at 3AC7E05A5192183D595F2386", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224964220, false, "1044b009-a7b4-4ded-9280-67e9e52d5a7e",
+			"@@@InProc at 5AE5A6A2E38387B26F4228E9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224973290, false, "f365705e-d51c-42e2-be36-c88c8df346a1",
+			"@@@InProc at 5AE5A6A2E38387B26F4228E9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224974400, false, "aca2d35b-03df-467e-9b5b-c714a9c078d1",
+			"@@@InProc at C72CC5B1F4B1916D56A637D4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224974650, false, "6b480a30-8345-46f0-94ac-bcc6fa9a4f2c",
+			"@@@InProc at C72CC5B1F4B1916D56A637D4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224976370, false, "3b422843-4f66-4dd2-b652-d29c966fc717",
+			"@@@InProc at F2A4D84D81F1CAE01A8B8A91", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224984040, false, "32ff1d89-aba5-4a81-a21b-78e3ddb9e417",
+			"@@@InProc at F2A4D84D81F1CAE01A8B8A91", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224985870, false, "6315128e-c48d-4fae-8d24-c49a67dbf965",
+			"@@@InProc at 723161F38C8A3403CB8DD9DD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224988300, false, "bdea5d85-4475-49f5-90bd-6040fc616a6f",
+			"@@@InProc at 723161F38C8A3403CB8DD9DD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224990130, false, "44b3de08-9337-4a9d-ad23-464d5d2873c6",
+			"@@@InProc at 0B5B9E796286248BCE6BCCC6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224996340, false, "0dcbeb1c-8cd0-4c6f-aba3-462265a0785e",
+			"@@@InProc at 0B5B9E796286248BCE6BCCC6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878224997140, false, "72c4d936-145d-4a7d-a28e-22a764fb9fb2",
+			"@@@InProc at 9C036CBF6D68933C6A83048D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225000400, false, "c2a36988-7571-4db5-9634-129dcbd521a0",
+			"@@@InProc at 9C036CBF6D68933C6A83048D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225001570, false, "26a0be2c-9c10-4726-b691-8408067a6ab6",
+			"@@@InProc at B7F76CA9767E0C2A8002D8AB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225007100, false, "c0d920fe-f45b-41b4-9881-50e4fd05300e",
+			"@@@InProc at B7F76CA9767E0C2A8002D8AB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225008020, false, "02671573-6fbb-443f-afd0-56919078aa43",
+			"@@@InProc at F76F8677E569D80DC9788F00", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225010730, false, "7a8d2370-c07e-47c9-86ed-267889c80a9b",
+			"@@@InProc at F76F8677E569D80DC9788F00", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225011640, false, "0ce030e9-1324-4e92-9db0-295036d8bd51",
+			"@@@InProc at 94C2640E84FDDD82686C5AFE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225018900, false, "2d376eb0-b08f-4317-bb92-347b460f3fdb",
+			"@@@InProc at 94C2640E84FDDD82686C5AFE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225020320, false, "94638410-3685-405b-b01f-b6e67d7f9794",
+			"@@@InProc at C44E61577523419BFFC733D0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225022630, false, "2faa43ae-37cd-4ab6-96e0-34a41edbe992",
+			"@@@InProc at C44E61577523419BFFC733D0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225024210, false, "48a9e91c-3d2f-4ce0-b4fe-ad8d2bc5c953",
+			"@@@InProc at 9A1970B02D732D5997D4312B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225029510, false, "70ce0e1f-4b2a-4816-aa24-719f4be71008",
+			"@@@InProc at 9A1970B02D732D5997D4312B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225030290, false, "fe569872-b0d0-4d28-a033-346d3a66a4de",
+			"@@@InProc at 593721589E7637932EE8EECD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225034920, false, "ef3380d2-f234-446f-8c80-8f7bbb6f812a",
+			"@@@InProc at 593721589E7637932EE8EECD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225036080, false, "7a97ccd9-9a4c-4d7d-a043-6857bce962a9",
+			"@@@InProc at C1D2E0C01C17FE1421251535", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225040400, false, "cfbe6183-2766-4a8f-b20f-1ae6243bbfaa",
+			"@@@InProc at C1D2E0C01C17FE1421251535", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225041310, false, "738a3ba4-b32b-48d8-87f4-2e743547ade5",
+			"@@@InProc at 968233E0005CDABE579288BB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225047500, false, "893606a3-2001-464f-8d83-42d825dc1ba5",
+			"@@@InProc at 968233E0005CDABE579288BB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225048700, false, "67b4391a-7f66-43f6-8fd0-14ca80b21999",
+			"@@@InProc at 064F8A756444998C88557632", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225051010, false, "1d8f6c8a-9f2e-4c33-854e-7974c820c8c4",
+			"@@@InProc at 064F8A756444998C88557632", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225052130, false, "a78136eb-e889-428c-8452-b8878dbf2685",
+			"@@@InProc at 38C81AC6C3EB5D60449FFA0B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225059790, false, "54a5b6d5-5f33-468b-9afc-d83d85ebd295",
+			"@@@InProc at 51ACFE533B8D8B25E1BC98D9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225060950, false, "a55404f9-553d-404e-9c69-3b9fbe44d498",
+			"@@@InProc at 38C81AC6C3EB5D60449FFA0B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225061190, false, "1b14e1b9-b5c2-4444-9413-7d64750f6dc9",
+			"@@@InProc at 51ACFE533B8D8B25E1BC98D9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225062780, false, "1b9990e6-0336-4ece-bf1b-e4b856a6f5a5",
+			"@@@InProc at 8D01F8BEF1EA9A5E2B0ED212", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225070670, false, "ddcc2316-f976-4ab1-99a6-e27ccacb2ee2",
+			"@@@InProc at 35F83869C9AFF3EF2DE7F273", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225070760, false, "7e5cbcac-4393-4d09-aa38-2f5599601251",
+			"@@@InProc at 8D01F8BEF1EA9A5E2B0ED212", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225072350, false, "58b21369-036d-40e4-8972-ba5dc5f5ef47",
+			"@@@InProc at 35F83869C9AFF3EF2DE7F273", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225072420, false, "1af076d8-b33d-49e8-b246-8e2b05a4f0dc",
+			"@@@InProc at D54B49D485AE04C752003C05", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225080210, false, "51028c97-94f6-4002-9ee3-6b525f255dbb",
+			"@@@InProc at D54B49D485AE04C752003C05", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225081160, false, "e2779d59-092d-47ae-b6a5-62b647da8527",
+			"@@@InProc at 849248C514A08FBF4A3C7A33", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225081340, false, "359e14d1-5b43-497e-b4c0-c28fed26e287",
+			"@@@InProc at 849248C514A08FBF4A3C7A33", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225082950, false, "85ad416b-6a12-43e2-b857-c538cc60fb4f",
+			"@@@InProc at 8C1B9471072D16687E7BEBFD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225091900, false, "55fa0d16-ec92-4d17-8911-cb5124f56042",
+			"@@@InProc at 8C1B9471072D16687E7BEBFD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225093120, false, "13ffcba6-2fea-49ee-8fe8-575147f208fd",
+			"@@@InProc at CBC0989072A08B423CC06FEC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225094260, false, "92237699-9d6e-4670-bacf-84e1cc1e5c02",
+			"@@@InProc at CBC0989072A08B423CC06FEC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225095110, false, "41136dbc-a50f-42b6-8142-4bce5484f0ef",
+			"@@@InProc at 0DBF292675AB550C69F14B81", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225102180, false, "22ac0aa6-54cc-4a11-9eaf-e9b784ac4f19",
+			"@@@InProc at 5AD83F4123F7B48390ED6387", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225103200, false, "dd67f391-5bfc-4819-bae0-2ebbcd529f17",
+			"@@@InProc at 0DBF292675AB550C69F14B81", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225103290, false, "8c3bf21f-fd1b-4f15-b1ef-7f8be67ecd5e",
+			"@@@InProc at 5AD83F4123F7B48390ED6387", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225104840, false, "e93738dc-bd71-4837-8a97-e8614ce98368",
+			"@@@InProc at D9533B7DB8483840A381DEFE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225112410, false, "fa43730c-b84b-49ab-953b-bd1ed88b9aa0",
+			"@@@InProc at DA5CADEEA48BF269EB6D9174", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225113510, false, "6db051ce-363b-48b1-884e-1503e33925ae",
+			"@@@InProc at D9533B7DB8483840A381DEFE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225113580, false, "a1a7f1e9-53ec-47f9-be3d-14ead1289e13",
+			"@@@InProc at DA5CADEEA48BF269EB6D9174", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225114920, false, "d9e9b52d-4700-4983-9245-d4d9443dee2e",
+			"@@@InProc at A04927C3217C2ED9CE81228A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225122240, false, "40374382-2e4e-433d-a148-2908f239c6f8",
+			"@@@InProc at 4FD182085BCB10D68B4906B8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225123260, false, "f22ae9ee-dfd4-4a6f-a097-901fa2e2bebe",
+			"@@@InProc at A04927C3217C2ED9CE81228A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225123360, false, "9bfe8874-85ac-42d0-ab90-64b1901f8688",
+			"@@@InProc at 4FD182085BCB10D68B4906B8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225124910, false, "1a9030a7-ff66-474b-823b-c760f264e62d",
+			"@@@InProc at E9108D0C5314B0A780C5026E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225132730, false, "e39e64a2-d35b-4716-891f-51fc5062527a",
+			"@@@InProc at E9108D0C5314B0A780C5026E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225133860, false, "a538613e-7539-4696-8f85-f6bb68903aba",
+			"@@@InProc at A11B193718610C57994CA707", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225135230, false, "34c5e6ad-c036-44f3-9cd0-7db53078f68f",
+			"@@@InProc at A11B193718610C57994CA707", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225136450, false, "ab33dfd5-8d6a-4371-b0c3-528d00bee085",
+			"@@@InProc at 92F243D07DA15A10F364B0E8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225151530, false, "ddc00283-b3f0-4348-a0d3-462d7be77bd1",
+			"@@@InProc at 11C0E1E538300DC7F84DD71B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225152620, false, "7f5fcba8-70b8-438f-943b-127842b529bb",
+			"@@@InProc at 92F243D07DA15A10F364B0E8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225152710, false, "78cf0698-5b5b-48bb-9873-ef3326f4096f",
+			"@@@InProc at 11C0E1E538300DC7F84DD71B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225154400, false, "4eb71d71-fef9-4c99-9385-719e7c1507bc",
+			"@@@InProc at 9338C82CB36823CA22744A9C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225162070, false, "1baccbe9-3c6c-4fd6-a484-297c2bea7a6c",
+			"@@@InProc at 9338C82CB36823CA22744A9C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225163210, false, "09b9249f-a36f-4d59-be85-7ed77d158d0f",
+			"@@@InProc at 07220E0C7F5570594A176C60", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225163340, false, "fae72b6d-0ffb-494d-97ce-771cf17ae1ec",
+			"@@@InProc at 07220E0C7F5570594A176C60", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225164770, false, "b79d41be-3947-42b2-a64e-11903a143c35",
+			"@@@InProc at 46E216BD9505AA4FA380EFCF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225171650, false, "42d3236c-56fe-4de2-b574-dfecb0b44727",
+			"@@@InProc at 46E216BD9505AA4FA380EFCF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225172510, false, "27726c2d-876f-47e9-a572-8b0ffa09d81d",
+			"@@@InProc at DAC4AF16B51FBB293090B88C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225174070, false, "ba44ec93-3932-4d1a-aaab-868398ae5416",
+			"@@@InProc at DAC4AF16B51FBB293090B88C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225175140, false, "8cde280a-54c7-4f1f-99ca-6ecfb54c476a",
+			"@@@InProc at 9649F4DB2F7D62096956B25A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225180720, false, "ff61300c-d14a-4585-89fd-bed33e0eeb11",
+			"@@@InProc at 9649F4DB2F7D62096956B25A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225181690, false, "6d6512db-d826-4f41-bf24-c77b9b88c162",
+			"@@@InProc at AF92BD4B63EF52ECF26D7E8D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225184160, false, "285667e0-580b-4f1c-879b-1e4c6ddaa23f",
+			"@@@InProc at AF92BD4B63EF52ECF26D7E8D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225185140, false, "f444d31b-04da-4f8e-9f1b-08d532766a22",
+			"@@@InProc at 8F50D971C3E2CCC5E8001249", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225190000, false, "14c1a33c-a695-4c52-8287-2a466fff06fb",
+			"@@@InProc at 8F50D971C3E2CCC5E8001249", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225191070, false, "005b339d-97b5-4649-87f6-6fb403cb4ced",
+			"@@@InProc at 7D3F1BA9E55A7039B4026B71", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225193760, false, "56e05af3-1bf6-4038-a8f8-6414fe29145e",
+			"@@@InProc at 7D3F1BA9E55A7039B4026B71", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225195080, false, "6db9dc29-df0f-4716-bbe3-d01be981f226",
+			"@@@InProc at 99E6505D8738248C2B2D5CFF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225200270, false, "920a41a0-e7f5-488a-888a-5c6d1415268a",
+			"@@@InProc at 99E6505D8738248C2B2D5CFF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225201290, false, "9d7750c0-988b-49e8-a7ce-02c532f0b3a8",
+			"@@@InProc at 088C85E2CB4D637112FCC7BB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225208330, false, "cafd64d8-5af6-4e72-8092-10147e464eea",
+			"@@@InProc at 088C85E2CB4D637112FCC7BB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225209900, false, "6d876b2e-cc1e-46d2-8aca-6e8a27c2d842",
+			"@@@InProc at E4648D0CDD54FD43B8835D5D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225211400, false, "971903ec-bfe6-486c-b155-40198eab9fa0",
+			"@@@InProc at E4648D0CDD54FD43B8835D5D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225212450, false, "4fcaaa47-ed84-4579-896f-994ead78af90",
+			"@@@InProc at B49326ED74F755918BEF4F31", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225218730, false, "8b0812fb-39a3-4e69-a19c-35bc6ffc1c63",
+			"@@@InProc at B49326ED74F755918BEF4F31", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225220020, false, "246cc7d4-abe7-4ddd-aae4-da1e2fed099a",
+			"@@@InProc at CB3AE0147965C94C07D0BFE2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225222600, false, "0ada153c-af4e-4766-9d97-cbd3130e19eb",
+			"@@@InProc at CB3AE0147965C94C07D0BFE2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225223750, false, "81b1bd92-0592-4450-acc8-85d0665d04c4",
+			"@@@InProc at E18CA1E20786C3973144EE8A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225228710, false, "ee794ca1-f3cb-4ef9-9cf4-117f3e6f88d4",
+			"@@@InProc at E18CA1E20786C3973144EE8A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225229550, false, "57021061-bbf3-4d9a-96eb-50f5d70bea46",
+			"@@@InProc at E58CA73C4E35B04AA3F855A3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225231890, false, "f91bd102-39d6-4569-b267-dda8880f625a",
+			"@@@InProc at E58CA73C4E35B04AA3F855A3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225232800, false, "6ca4badc-1075-4706-a737-d411875a59e2",
+			"@@@InProc at 0C4062F426DAB50F00C126B5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225238710, false, "18692645-045d-417a-b2a0-291de6baa378",
+			"@@@InProc at 0C4062F426DAB50F00C126B5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225239960, false, "95e829b9-ac3c-42a6-bc79-5cb8cf54c1cb",
+			"@@@InProc at 1E4FC0B573CC836C4297FF69", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225241340, false, "4c14ce62-f75b-4145-aef1-e60652d6f150",
+			"@@@InProc at 1E4FC0B573CC836C4297FF69", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225242130, false, "999c42a4-5e04-4eec-9a5f-b6426880a4f4",
+			"@@@InProc at A5EE83CBE58DC844411045B4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225272580, false, "63879818-7a21-42fe-a486-a0987e62ec29",
+			"@@@InProc at A5EE83CBE58DC844411045B4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225274570, false, "e9d43bb6-5176-401d-938c-44d461f11e65",
+			"@@@InProc at BB11E58DBEEAEE57F2AB04A8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225277050, false, "3c37cdd9-2781-4162-a7be-b646227e1107",
+			"@@@InProc at BB11E58DBEEAEE57F2AB04A8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225278660, false, "13563dff-1ddc-4543-bcd0-8068893f6be9",
+			"@@@InProc at C16C69F25F14C1EF53F37AB0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225286980, false, "137ddb5f-c2e6-41cc-aa5e-13a8f62c75a1",
+			"@@@InProc at C16C69F25F14C1EF53F37AB0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225287980, false, "e3ec41af-7e87-4446-a739-488cf5e3d6e8",
+			"@@@InProc at 6A3884D03EBA74ECA1BE64F6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225288850, false, "e03e56f7-8e92-4bc2-bd81-04b283f2f896",
+			"@@@InProc at 6A3884D03EBA74ECA1BE64F6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225289680, false, "b5846cf0-ddbd-484d-b35a-2ef9eda23599",
+			"@@@InProc at 740F2BBB35165E598799E94D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225298910, false, "82215050-9ff3-41a2-97d1-426008a8813a",
+			"@@@InProc at 4E353D785F0FDBCBB0B3A9B0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225300810, false, "f3d13f9d-ee50-47ca-9fc9-ac7cc76caa15",
+			"@@@InProc at 740F2BBB35165E598799E94D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225300920, false, "0862f8d2-bd48-4db4-85ff-7a8ef349220c",
+			"@@@InProc at 4E353D785F0FDBCBB0B3A9B0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225303110, false, "7cb738eb-80d0-4fde-b4a5-7d3d3fa462ae",
+			"@@@InProc at B9BDA9462AD3E1E23D8A31F1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225314070, false, "897576ea-e792-4156-b8c3-69ca01e2254d",
+			"@@@InProc at B9BDA9462AD3E1E23D8A31F1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225315260, false, "c3f37be0-6dbf-4bf7-b443-24617df72a54",
+			"@@@InProc at 93D806AA4563750C55AA1F04", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225315610, false, "183f6db1-6ada-4fa1-a4fe-0b9388bd2895",
+			"@@@InProc at 93D806AA4563750C55AA1F04", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225317360, false, "1756c274-28b4-4f79-8126-9340b29578fb",
+			"@@@InProc at FF4362E868BA487EF5A99AB5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225324630, false, "dbd5e162-6f29-4a02-a9c4-d6bdf8efde74",
+			"@@@InProc at FF4362E868BA487EF5A99AB5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225325570, false, "fedfc62a-dc47-423b-a79b-07f261b9db93",
+			"@@@InProc at 1D781326D6EDBA0470E9E74D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225326540, false, "ab570bb8-3f1c-4326-88f2-ddd43dd8455f",
+			"@@@InProc at 1D781326D6EDBA0470E9E74D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225327490, false, "1c8573f8-1d0d-4ed4-a6ec-23f5fd13d92e",
+			"@@@InProc at B3EDCAB5EA1AAFAB721920AC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225334260, false, "adf2caa4-2472-4f20-b2a0-d67b94dff19a",
+			"@@@InProc at B3EDCAB5EA1AAFAB721920AC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225335300, false, "3a85a9cf-f1ba-4b7c-942a-e5b9caa54725",
+			"@@@InProc at D4FD424F82A784A0AA3C3038", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225336780, false, "7b04af31-e4f0-49cd-ba7a-74fb7b7f3c39",
+			"@@@InProc at D4FD424F82A784A0AA3C3038", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225337620, false, "fd38a1da-7b2a-4f40-bf29-7514133708ad",
+			"@@@InProc at 46771EB415340F167DC7FB5E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225344590, false, "2c56ca92-e7ed-4b30-a37b-c63bbcfdec62",
+			"@@@InProc at 46771EB415340F167DC7FB5E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225345720, false, "6d6faf72-b5f1-42a2-90b4-0d9271fe7507",
+			"@@@InProc at 96781FB030A01E9C30B5D8C9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225346110, false, "9d9890eb-58d9-4025-ab20-d92d94b825b7",
+			"@@@InProc at 96781FB030A01E9C30B5D8C9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225347760, false, "fadb708d-a4df-41d9-b3cf-ab8e8496745c",
+			"@@@InProc at 66B3243567F294682357F315", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225354910, false, "94b7e09d-5a72-4e7c-91b0-6a4f2db74e16",
+			"@@@InProc at 66B3243567F294682357F315", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225355880, false, "0e5972fc-ac70-41ea-9d75-f6c355340033",
+			"@@@InProc at E27ECB17CAD4B4F6D481810D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225355990, false, "b87d764d-faf3-4281-a4a2-ae9435c2292f",
+			"@@@InProc at E27ECB17CAD4B4F6D481810D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225357360, false, "66824fe9-b37d-4149-99d1-a91b157ebd7c",
+			"@@@InProc at C62837070E9BDDF320C1B30B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225364160, false, "d0a85322-6c35-4731-b2f3-931aa732e87f",
+			"@@@InProc at C90358BA6446EC499402AFE4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225365120, false, "f3bf4841-b3db-4062-a885-8efd807677ba",
+			"@@@InProc at C62837070E9BDDF320C1B30B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225365220, false, "25b9f72f-6838-4f55-8032-d8c38485b7e7",
+			"@@@InProc at C90358BA6446EC499402AFE4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225366650, false, "58e166f6-1408-4a9e-a532-6f4aba781428",
+			"@@@InProc at EA944A7DD84F6E54DBE17D16", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225373600, false, "c8e7e461-db39-4889-9a4d-d390b48cbbda",
+			"@@@InProc at FD70CD2EA3F18C9726382E84", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225374600, false, "792d39ad-1d5f-4447-990b-53c3fdc8d1a1",
+			"@@@InProc at EA944A7DD84F6E54DBE17D16", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225374660, false, "8df69088-91b5-4700-84d3-fe51db110930",
+			"@@@InProc at FD70CD2EA3F18C9726382E84", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225376230, false, "077f6f30-1fd9-4827-8e06-f895e09bb260",
+			"@@@InProc at 634928F8D9D7D38E7041E9D5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225383330, false, "be44eb12-657e-4fd5-b009-46c4ddf5286d",
+			"@@@InProc at 634928F8D9D7D38E7041E9D5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225384360, false, "3dfefc73-d662-46cf-967e-5720d5d62411",
+			"@@@InProc at D1CF9BCA2D0CAC501B56C000", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225385330, false, "efdedbac-a041-47e8-971a-74536ea5ad36",
+			"@@@InProc at D1CF9BCA2D0CAC501B56C000", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225386290, false, "bc46a4b2-5781-4062-9176-fe086ddb33ff",
+			"@@@InProc at B5A0FAEA6C72ADDD49DB6085", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225392280, false, "61411ee6-dff9-4e29-b0d8-05c5213df6e6",
+			"@@@InProc at B5A0FAEA6C72ADDD49DB6085", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225393100, false, "b7367be2-ba6d-47ab-91a5-11a75aeee8bf",
+			"@@@InProc at 00A0B5E3CF0640A6D4FA577C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225395450, false, "ca1c0d13-5721-43f2-916c-1e4688525a77",
+			"@@@InProc at 00A0B5E3CF0640A6D4FA577C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225396460, false, "9df890d3-5e8b-4484-bf07-4a672f9fa7f4",
+			"@@@InProc at 8D7F19D84EFB05095C5F722B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225401270, false, "8a48a941-68c9-4b10-8267-e96fce120413",
+			"@@@InProc at 8D7F19D84EFB05095C5F722B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225402090, false, "f1e98e64-fd5a-4b53-8b91-5bec732166be",
+			"@@@InProc at 390341574DC198C9B3D46E4F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225404610, false, "6cb0a381-4948-4c71-98c8-e0d9dcc360a4",
+			"@@@InProc at 390341574DC198C9B3D46E4F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225405700, false, "79c39345-9fb2-4174-8b25-1916691b6b44",
+			"@@@InProc at CDACF2856EE3F58BFD4089F3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225410820, false, "f9002769-6b1a-48a3-977e-178b759d7160",
+			"@@@InProc at CDACF2856EE3F58BFD4089F3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225411640, false, "193f4a35-8cd7-4412-bcb5-8299f34d2c90",
+			"@@@InProc at 1C591768C8B78904483F5DE5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225419760, false, "2915f979-4f64-4a62-b6b1-60f50ab6ce4e",
+			"@@@InProc at EDA436FB95734DCFCADD6815", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225420780, false, "93c9ee56-3798-4a4d-a033-91bd7d12bbd8",
+			"@@@InProc at 1C591768C8B78904483F5DE5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225420900, false, "1ac5a9ab-c087-4120-82dc-5b7fdaa23621",
+			"@@@InProc at EDA436FB95734DCFCADD6815", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225422320, false, "d1987a25-e85b-48f0-aae7-b65ba01c7915",
+			"@@@InProc at 059BF862A5D459D168DCF7CF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225429590, false, "5e466723-7313-4602-8d11-a9f3532e61a4",
+			"@@@InProc at 18FACC78FFD16AB12C5565D5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225430580, false, "0bf89fd8-1405-44d0-b86a-0853a7f634e4",
+			"@@@InProc at 059BF862A5D459D168DCF7CF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225430650, false, "c1789709-4b76-41e1-b701-a4d4c661c08c",
+			"@@@InProc at 18FACC78FFD16AB12C5565D5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225432020, false, "d8b3e251-a80e-4911-88d4-d66d84880554",
+			"@@@InProc at DD5ACE6E0582D48BA9576FFE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225439630, false, "39a2a91e-903f-43db-b238-312a62c2c678",
+			"@@@InProc at 4B8645090188D47C319E34EF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225440680, false, "19f8b1dd-22a3-4ac8-b985-ad3d7799e5d0",
+			"@@@InProc at DD5ACE6E0582D48BA9576FFE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225440760, false, "21e81bc3-b8c2-44a2-8ab2-90e7b9330cd6",
+			"@@@InProc at 4B8645090188D47C319E34EF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225442150, false, "66f75ca9-7fa5-482d-968a-d7c6ed3bba3a",
+			"@@@InProc at 9CE6CB2ACF2585EE96580199", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225448730, false, "bcb8bf6b-e507-4a8a-a506-d6a6a03fe7f8",
+			"@@@InProc at 23C773E3C43BD1113A3880B9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225449400, false, "096e5a85-451b-4495-9f7a-067f10af85d7",
+			"@@@InProc at 9CE6CB2ACF2585EE96580199", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225449450, false, "5f5c1af0-7217-4aab-9dcb-5b8c97d48073",
+			"@@@InProc at 23C773E3C43BD1113A3880B9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225450420, false, "6e18508a-e1d6-44c9-976b-62b6858062b0",
+			"@@@InProc at 0BD45B54EC770EC4A66916B7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225455690, false, "9cc7e457-c94a-43e5-b49d-54335ba44db5",
+			"@@@InProc at 0BD45B54EC770EC4A66916B7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225456330, false, "2a892623-fd63-4eeb-983d-8c9b253fe9fe",
+			"@@@InProc at 06A81A0FFBA712B14BEC3A61", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225456940, false, "9f7ef9ff-9271-4c3c-ba84-c76739d1c51f",
+			"@@@InProc at 06A81A0FFBA712B14BEC3A61", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225457470, false, "1570a152-2d91-4aa2-ab39-ccdc7a156cdb",
+			"@@@InProc at CD5881032F72AFE89944A885", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225461980, false, "59bdd2a3-9019-44c6-847e-5e67f33fc5a1",
+			"@@@InProc at 44038F6DD76993A4636F657F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225462610, false, "edaf2a67-8d55-44c9-aa69-a08748be422b",
+			"@@@InProc at CD5881032F72AFE89944A885", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225462680, false, "ca1c09df-628b-4a9e-b6c5-851f2427c36b",
+			"@@@InProc at 44038F6DD76993A4636F657F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225463570, false, "a8c6c9c5-92ca-43e9-ae71-2868db3f64c1",
+			"@@@InProc at 392C8283E3F9EEB3BDFB9191", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225469450, false, "e391d47b-62be-4b26-8721-4896fa9507e5",
+			"@@@InProc at 615C1C1A3456CF6EA08A81CB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225470250, false, "20fe4bca-2078-4930-920a-85a8914cd518",
+			"@@@InProc at 392C8283E3F9EEB3BDFB9191", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225470340, false, "427e407f-b6e0-4077-99d6-0528ff4dced0",
+			"@@@InProc at 615C1C1A3456CF6EA08A81CB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225471340, false, "ac37a579-8f1b-47d4-948e-8e7c9d6ad8e4",
+			"@@@InProc at AD738C89D8AB093202A3EE72", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225477640, false, "baeaa69b-ec3e-4ab3-a7c4-4d5d16acd014",
+			"@@@InProc at 92CA6D8876F35B664D304F8C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225477770, false, "06794cd6-eebc-493a-80db-137119b61e67",
+			"@@@InProc at AD738C89D8AB093202A3EE72", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225478750, false, "5398e73a-0676-4a69-9796-5380ab8adeec",
+			"@@@InProc at 92CA6D8876F35B664D304F8C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225478800, false, "7d367dc0-a7ee-4cd9-b6c2-0ce85d93f787",
+			"@@@InProc at 79BE4CEB1F76992D4FBAE94C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225484120, false, "6c1cfd38-be74-4dfc-8a79-024a53e1926c",
+			"@@@InProc at A53CFBD6FDC4929BCAA67697", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225484790, false, "096ad74d-76eb-440e-88a5-625b40826c16",
+			"@@@InProc at 79BE4CEB1F76992D4FBAE94C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225484840, false, "b93d9a14-74be-4cf2-80a3-caaa195ab4b6",
+			"@@@InProc at A53CFBD6FDC4929BCAA67697", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225485740, false, "e69da8c2-4047-4e14-8f1c-4c31ea90a8ab",
+			"@@@InProc at D25D12B01E18AD0C19C4A703", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225490400, false, "a050b92e-9590-445e-8cd2-e11793883f71",
+			"@@@InProc at D25D12B01E18AD0C19C4A703", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225490990, false, "d81f7138-0975-42a5-aeb4-6839bb17b7e4",
+			"@@@InProc at 8E0F0193C0A52E353CBBF671", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225491210, false, "f460b24f-6970-4258-8791-13f753447f53",
+			"@@@InProc at 8E0F0193C0A52E353CBBF671", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225492090, false, "4ebb0331-bce0-4964-b504-f0719323b457",
+			"@@@InProc at 5F844E72AFB57F26D096C729", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225496360, false, "349efe16-8ba6-44d6-9fdb-ad0cac0788b0",
+			"@@@InProc at 5F844E72AFB57F26D096C729", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225496870, false, "fe9e54f9-f617-4711-b894-06f98b60dfd2",
+			"@@@InProc at 42C42DBD52278DFC77107B18", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225497390, false, "c02a3438-3bdb-48b7-9f6a-10d75c2549a7",
+			"@@@InProc at 42C42DBD52278DFC77107B18", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225497910, false, "681b2957-be1e-403f-b04a-a6b52c7f81ab",
+			"@@@InProc at 2DAA6E1803466C0A4725AF93", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225502770, false, "4fa8e6d9-ab32-4bae-abbc-97cb4386fa56",
+			"@@@InProc at 2DAA6E1803466C0A4725AF93", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225503500, false, "6b939aef-1c7c-4b7c-ad20-90f7433b0dc1",
+			"@@@InProc at 53CF6998665581B5AEB742FE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225503590, false, "5b11bb87-f6a6-4266-ae70-5ab7d855352f",
+			"@@@InProc at 53CF6998665581B5AEB742FE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225504400, false, "ce02ea99-56a2-42fa-b338-af221896ad8f",
+			"@@@InProc at 697B7877681CC5F48C600128", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225508830, false, "ca82e364-f6c7-4eab-9ea2-0040e231ee78",
+			"@@@InProc at 697B7877681CC5F48C600128", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225509350, false, "b83afa12-e2fa-4d7a-a2b8-e5f850908e28",
+			"@@@InProc at B23E6F2C6BCC86CBD075CF62", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225509890, false, "2164c7b6-67bb-4a0b-9e8f-d3f9e5e3ceac",
+			"@@@InProc at B23E6F2C6BCC86CBD075CF62", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225510410, false, "4528ebeb-db83-47ef-8b4c-310607805b0d",
+			"@@@InProc at 300EA9DF853050DEE38DA7BB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225514660, false, "90759a4e-364c-4593-8337-e7d350c97685",
+			"@@@InProc at 300EA9DF853050DEE38DA7BB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225515180, false, "b70e3bc7-8e47-40db-a0a4-10efd79dcb1d",
+			"@@@InProc at ED820189FAC4CC5A66311F3E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225515760, false, "d31b86c1-0f61-4096-bb5e-900edcfd5384",
+			"@@@InProc at ED820189FAC4CC5A66311F3E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225516280, false, "947c21cc-b2da-44e2-b1dc-a7124589c451",
+			"@@@InProc at 2123336F81CBA3DBB729C5BA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225521300, false, "f99bc8f4-8541-41bf-bb2d-1fb518ddfb64",
+			"@@@InProc at B5F6394D48AECE6469FF6268", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225521550, false, "5624e685-c69b-4450-b62a-4b43c3103b37",
+			"@@@InProc at 2123336F81CBA3DBB729C5BA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225522360, false, "0983a524-ac13-4489-b7aa-4cdbd540bb41",
+			"@@@InProc at B5F6394D48AECE6469FF6268", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225522430, false, "a4d6afe5-507f-4436-acd8-d5a1941ec143",
+			"@@@InProc at 12549441F024D3EDBCD7A98A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225528180, false, "714fd8d9-0f96-4208-88f6-c7ce7a7fdcfc",
+			"@@@InProc at 12549441F024D3EDBCD7A98A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225528730, false, "9aa4368d-dc1c-4541-8e68-eb97f06f9655",
+			"@@@InProc at 6D48A52F2444D3788F3A3B1D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225528870, false, "b3ad8f07-d28f-4af9-907c-9f154eb3ac58",
+			"@@@InProc at 6D48A52F2444D3788F3A3B1D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225529740, false, "651c174a-6d6a-4d5e-8a05-3da5d9a4f44b",
+			"@@@InProc at 7973799E9D56B7E2F259E73E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225534260, false, "5b5b0a54-cb86-415b-85d2-3d432efeadbc",
+			"@@@InProc at 7973799E9D56B7E2F259E73E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225534820, false, "97b77009-8044-4a49-89f6-2aee7aece722",
+			"@@@InProc at 262D510C9C3D43D587CB765B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225535340, false, "31da00fb-6825-4f95-ae57-4aaf52498ed6",
+			"@@@InProc at 262D510C9C3D43D587CB765B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225535870, false, "1dfe47f5-db1b-4c49-80c1-3538260bcf27",
+			"@@@InProc at 974E060DEB28412BCB713CA8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225540310, false, "b0ace1ec-28ac-4a9b-9888-2d437b788b0e",
+			"@@@InProc at 75192D44A802D2E485C4AAD8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225540980, false, "0626b0bb-2112-4a5f-9e34-0747ac5caa8d",
+			"@@@InProc at 974E060DEB28412BCB713CA8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225541030, false, "ebfd25ec-0b8e-4c0f-9e50-dbcc4c7e5f70",
+			"@@@InProc at 75192D44A802D2E485C4AAD8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225541940, false, "2bc08492-4f92-4e64-a132-9761c289c697",
+			"@@@InProc at 42194528AB2746C3C34647F5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225548120, false, "53283158-b84c-41c0-ae1d-78a8e6c1989e",
+			"@@@InProc at 42194528AB2746C3C34647F5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225549000, false, "18013c1d-4251-40f8-be9b-a4e27f962901",
+			"@@@InProc at C4657DFA5FCD9A8CBEBC15BD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225549090, false, "cce6101e-49de-4575-99b7-d5edcba9d2f2",
+			"@@@InProc at C4657DFA5FCD9A8CBEBC15BD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225550170, false, "f818bc6b-22d1-485e-8340-615e87a504d3",
+			"@@@InProc at 8EE83896FF3E116BCB0114E0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225555550, false, "2707a820-66af-4621-b41c-f2e01e0fde1f",
+			"@@@InProc at 57F8F5CA9A1773E8E068286E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225556250, false, "e8eb9d74-f1eb-4a1f-90c6-7b9dfa2046ca",
+			"@@@InProc at 8EE83896FF3E116BCB0114E0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225556300, false, "9476ba7a-0618-43c7-809d-b16565af1f4d",
+			"@@@InProc at 57F8F5CA9A1773E8E068286E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225557220, false, "416b1cbf-e5eb-4a3c-b460-0257bc8ddacb",
+			"@@@InProc at 4196D0F6AE8534DCC478E072", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225563050, false, "a69ea498-9fbe-4460-aed8-4b58ff5b9b45",
+			"@@@InProc at CEEED5D0666D9CF528747F1B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225563110, false, "67c0b88f-1e9f-42d9-ab36-41ca3a2c9155",
+			"@@@InProc at 4196D0F6AE8534DCC478E072", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225564120, false, "fd0a7b1e-7577-4b59-ba4f-9777150c5a65",
+			"@@@InProc at CEEED5D0666D9CF528747F1B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225564190, false, "ca29fb22-d705-4310-b133-cfae3c519177",
+			"@@@InProc at 103AF8A63BC1AE9998CDA295", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225571340, false, "08d03f7b-e95e-4833-99b8-961e2e600e69",
+			"@@@InProc at AFA07E3A1CC4CD6519EBAA97", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225571410, false, "acbc820e-01dd-43b8-b0f3-e2be076f6eb1",
+			"@@@InProc at 103AF8A63BC1AE9998CDA295", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225572490, false, "971969b5-b18e-498a-bb38-c2facd0ea240",
+			"@@@InProc at AFA07E3A1CC4CD6519EBAA97", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225572550, false, "8a656dd3-9fad-48e2-90f1-308c9bcb5aa4",
+			"@@@InProc at E587CB266ADCDFCD159476D7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225578000, false, "43e62a1b-d1a6-47b4-a12f-8ca331f7367a",
+			"@@@InProc at E587CB266ADCDFCD159476D7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225578550, false, "d4010989-36a0-4010-a259-62ed8f3f7d9c",
+			"@@@InProc at 93E08E5EDB84B256884F53EC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225578700, false, "4fa6a2b9-a251-4f65-8b4c-d1a45e66e432",
+			"@@@InProc at 93E08E5EDB84B256884F53EC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225579610, false, "97860061-55bc-4dd8-b728-8599db770c82",
+			"@@@InProc at 9F84428E0DC06BD7ED489E41", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225583980, false, "74b7e695-9723-42c2-9f4c-f1fe2b71c042",
+			"@@@InProc at 9F84428E0DC06BD7ED489E41", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225584540, false, "0386b99c-8904-40a1-8373-f7794fdcf58b",
+			"@@@InProc at 3A65D0B15AADE09975DEA001", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225585700, false, "f642c32f-aecd-478f-a6af-c532746aff33",
+			"@@@InProc at 3A65D0B15AADE09975DEA001", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225586220, false, "eac5dea4-ef12-4dbe-81fe-a401b42d288d",
+			"@@@InProc at E5F5FA44CD9CF2831A792A57", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225590430, false, "6578139b-a98a-4450-9902-e813cd1c4473",
+			"@@@InProc at E5F5FA44CD9CF2831A792A57", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225591040, false, "687943ec-d61f-49b0-bab6-aa962f1406b6",
+			"@@@InProc at A763FA6D0DE869C751E1F58B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225591570, false, "99a2da7a-b6e2-4848-9a79-7f7e9be6a54a",
+			"@@@InProc at A763FA6D0DE869C751E1F58B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225592090, false, "5393cda3-a876-4700-8e3d-bc6cb6a1cd44",
+			"@@@InProc at 3E4EB99C25FAEE8E1647229E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225596590, false, "06afd65f-f4f6-442f-9039-d5d990be9675",
+			"@@@InProc at 3E4EB99C25FAEE8E1647229E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225597200, false, "67572c74-adcd-4d9e-8418-3594e78e6334",
+			"@@@InProc at DCC18192A1919EC4D4787EC2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225597350, false, "b37d681e-ad3e-46ae-8ff2-8a819c7e5422",
+			"@@@InProc at DCC18192A1919EC4D4787EC2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225598210, false, "71549b0e-3062-41ec-ba7a-3d2b4c46caf5",
+			"@@@InProc at E6F94F7ED7A6461BBC57EDFC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225602810, false, "dab3ba1d-c649-40ec-a4f8-3d82c8c27caf",
+			"@@@InProc at 92C089E4A6405C16E84278C5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225603500, false, "d228eaeb-c92b-42b3-85f5-3fb4a49e387f",
+			"@@@InProc at E6F94F7ED7A6461BBC57EDFC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225603560, false, "e00562ef-c633-433e-9b15-267507cc3fce",
+			"@@@InProc at 92C089E4A6405C16E84278C5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225604440, false, "b95c9fd8-d23e-4230-aa48-bcb5dcdcd305",
+			"@@@InProc at C4908D934C225C5947DDC198", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225610680, false, "3119eedb-fc3b-4ce8-8c66-fae9ae259941",
+			"@@@InProc at E811475E91A8E5D0FD217E52", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225611450, false, "10745f8f-7e96-4e03-9381-d93adbe321a0",
+			"@@@InProc at C4908D934C225C5947DDC198", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225611510, false, "c16b543b-db4f-417b-a164-a3b0edb9ad5b",
+			"@@@InProc at E811475E91A8E5D0FD217E52", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225612550, false, "b0e5c601-d357-44aa-a1a0-f3f30bef2b91",
+			"@@@InProc at B197ADBD7B1BA8916E7D2300", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225617900, false, "1603543f-4442-454b-82a5-0ffde1ceccaa",
+			"@@@InProc at B06648313AE8AA4FE16E5A2C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225618560, false, "a0a88296-6b03-489d-b86e-a603cda838c7",
+			"@@@InProc at B197ADBD7B1BA8916E7D2300", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225618600, false, "6353336d-7470-4bea-8fce-1f11a54f843f",
+			"@@@InProc at B06648313AE8AA4FE16E5A2C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225619510, false, "f6fe454a-8ad0-4e95-8367-b031c73543ca",
+			"@@@InProc at 862742C1E9E3D410CF4EA92F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225625030, false, "7ba89588-83af-435f-b9bc-6acd36f9087b",
+			"@@@InProc at B062B092BFB1BE558F03E3CF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225625660, false, "10e8ed74-efc6-437f-9cba-6033dd52db09",
+			"@@@InProc at 862742C1E9E3D410CF4EA92F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225625710, false, "eca2f766-86d9-45bd-b0bc-69914b211f93",
+			"@@@InProc at B062B092BFB1BE558F03E3CF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225626730, false, "f046bb2b-957d-4c90-a8f6-ad31feb2591d",
+			"@@@InProc at B9D6C3D0F9214A730C94537B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225645800, false, "03049502-54e3-4cb0-9093-1c4bd62466ef",
+			"@@@InProc at B9D6C3D0F9214A730C94537B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225646360, false, "6b0556b7-2cdd-4846-9ae4-6dae7cd9701d",
+			"@@@InProc at 7151C704EC551B42C20D1157", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225646500, false, "928ff974-288f-4cc5-af32-47432f889bbd",
+			"@@@InProc at 7151C704EC551B42C20D1157", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225647440, false, "fd5a2a92-ec38-45dd-9ad9-8d96c3cc978f",
+			"@@@InProc at 3E5C8FB5C242E16CB8DE5572", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225653120, false, "a87abc5c-45d8-42f4-adcd-c159e4f34853",
+			"@@@InProc at 3E5C8FB5C242E16CB8DE5572", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225653780, false, "76ead4d9-fafa-41b7-abad-a7bed6cfe7a6",
+			"@@@InProc at 9C072AA4D767D34976C4B5F5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225654350, false, "e833fba6-e2da-49b0-a93f-b293fe7541f6",
+			"@@@InProc at 9C072AA4D767D34976C4B5F5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225654910, false, "8cd3bbf5-b726-4d62-97d2-8bfe06a47ca4",
+			"@@@InProc at 969E8FB5D7C1DD0AA78C8B1F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225659730, false, "2eb89337-3af3-4e97-8979-970417ab441f",
+			"@@@InProc at 71770FD6BD90AA8F03DACFDE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225660530, false, "edba4a2b-d7ba-434c-aa3e-6e8bd87f2df0",
+			"@@@InProc at 969E8FB5D7C1DD0AA78C8B1F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225660590, false, "636f946c-6a6a-4464-ac27-b6ed61cc0834",
+			"@@@InProc at 71770FD6BD90AA8F03DACFDE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225661840, false, "c4a73155-63ad-4df6-ab39-6bd2d34fe34c",
+			"@@@InProc at 88EA4D00E84634F08F36A6B5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225666940, false, "23d19b6a-4a31-43b7-a103-498835fac22e",
+			"@@@InProc at 88EA4D00E84634F08F36A6B5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225667760, false, "cd61f56c-f894-42de-b3cc-5e4408532fa3",
+			"@@@InProc at D998E1B5169178D9B9258029", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225669180, false, "d65546b3-0160-4c04-b3db-643f593efd0d",
+			"@@@InProc at D998E1B5169178D9B9258029", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225669970, false, "2bc21a29-6f3b-41cd-b6e1-79cc6f80735b",
+			"@@@InProc at DA46EE884AA3310A428B5116", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225673270, false, "fa088caf-36b6-4869-9fc3-a1ac72289b73",
+			"@@@InProc at DA46EE884AA3310A428B5116", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225674020, false, "8c78ee25-9191-46ac-b709-f471afe76dd6",
+			"@@@InProc at 9B0199D61ED20C4A48253C20", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225675830, false, "5a339ee3-ad42-47e6-92c0-07a33a690c46",
+			"@@@InProc at 9B0199D61ED20C4A48253C20", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225676490, false, "9c15b271-eb44-42d6-a178-6c858137078f",
+			"@@@InProc at FF7FD3D5186B0D9D2D1C3AD1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225681170, false, "e8142120-5fdf-4d98-933b-ab7e7e659d38",
+			"@@@InProc at FF7FD3D5186B0D9D2D1C3AD1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225681850, false, "18ccb0ef-8dad-4d0f-a015-ba04c52a3ff2",
+			"@@@InProc at 2B676D132B781A815254DBF8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225682540, false, "c3cb35fb-b9ea-4c50-a520-95edb859d08f",
+			"@@@InProc at 2B676D132B781A815254DBF8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225683190, false, "cbb93e0d-5d75-4ad9-819f-759283454bd9",
+			"@@@InProc at 8487F8B1DC5E0359DE5824BC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225687070, false, "b6d06749-392e-40e4-8fda-97c662dd9234",
+			"@@@InProc at 8487F8B1DC5E0359DE5824BC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225687660, false, "3f4d2b0c-e434-49bd-854b-d5bbb54ca528",
+			"@@@InProc at A908B45F3B1126720943E006", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225689220, false, "145cda3a-57b5-4c93-9f0b-0d804f6162cc",
+			"@@@InProc at A908B45F3B1126720943E006", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225689920, false, "8846a175-3dbd-4f99-9a23-fdae1283717e",
+			"@@@InProc at 208A31D5C4E2AA82A7F0ADD2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225694630, false, "9c92ec6c-6c3d-47f8-b4c1-489058b6fe85",
+			"@@@InProc at 41A83139940159DF7334DDAC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225695300, false, "a2155aba-b89a-455c-b400-2961aaab8b32",
+			"@@@InProc at 208A31D5C4E2AA82A7F0ADD2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225695370, false, "ad580bb1-1fa4-48ad-849b-a06e2cb18f35",
+			"@@@InProc at 41A83139940159DF7334DDAC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225696280, false, "2e4eff29-6613-4667-bce3-cca61c0f355a",
+			"@@@InProc at F32F055C6E37B93760E2A684", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225701370, false, "3f29a4eb-7ba7-4497-a961-d5b94f955090",
+			"@@@InProc at F32F055C6E37B93760E2A684", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225702050, false, "0c07cc77-2f48-45d4-998f-88f66199f8bf",
+			"@@@InProc at 40C021B37F9180EB96363BBC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225702140, false, "43a7cc34-80dc-4009-a949-74b6b7093b5d",
+			"@@@InProc at 40C021B37F9180EB96363BBC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225703120, false, "38b49133-7ba3-4ee1-9f28-10dae0edf68e",
+			"@@@InProc at 81744D4011F55EBF0B8CFA9A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225707710, false, "8477ad78-4371-4c07-adfd-7ceb78e79939",
+			"@@@InProc at 81744D4011F55EBF0B8CFA9A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225708480, false, "9b4d4366-2e33-42c7-85b3-9e9214400035",
+			"@@@InProc at D9096B1BA83C7136FC8FD8B2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225709390, false, "3b20c1b0-57f2-42d2-a1bf-82d3d8d2922e",
+			"@@@InProc at D9096B1BA83C7136FC8FD8B2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225710020, false, "d8d881f4-58dc-48ca-be30-c4f99e6cc497",
+			"@@@InProc at 47946ADF928F941CD1211346", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225713910, false, "1994a4db-28dc-4d7a-899d-6e276e6d2bbc",
+			"@@@InProc at 47946ADF928F941CD1211346", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225714480, false, "e1b0c104-9531-4366-8c1b-691ede6904cd",
+			"@@@InProc at 4BD28E5931847E73B693BA49", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225716020, false, "ab08eda9-e299-46b3-b3a0-5e7a6425a9bb",
+			"@@@InProc at 4BD28E5931847E73B693BA49", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225716700, false, "af3d286a-1628-4882-999f-adf2db8ba975",
+			"@@@InProc at C2FC1ACF6EC74ECFF3EE39EA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225720020, false, "296c2964-f5ef-4566-945e-da8d7174364b",
+			"@@@InProc at C2FC1ACF6EC74ECFF3EE39EA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225720810, false, "cbb2751a-5e51-40e8-b533-bc49699f3c74",
+			"@@@InProc at 357D2E7681889D308901FC7B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225723340, false, "9703dc89-7738-41b8-9ec8-d76bbbe18ab3",
+			"@@@InProc at 357D2E7681889D308901FC7B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225724040, false, "eeb54afc-1bb6-499b-8655-617f8bd67d9f",
+			"@@@InProc at 7BF6E0355CEC286E36D97DB9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225726770, false, "34dd9a3c-4063-41bd-9673-830f8ff40cd3",
+			"@@@InProc at 7BF6E0355CEC286E36D97DB9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225727320, false, "98f67dcc-5af1-4ada-a2b1-d4607dcc6b61",
+			"@@@InProc at 704CD1C49CE3465A6CAF5E58", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225729290, false, "83ab65e5-bda9-491c-a839-b2a19b253c07",
+			"@@@InProc at 704CD1C49CE3465A6CAF5E58", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225729870, false, "d49ead67-6e00-4f07-916b-f7ce52ab817f",
+			"@@@InProc at 78B505FA78F1463D4A81DC50", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225732650, false, "0f88eb9e-a60c-445a-8bac-233e39adf30b",
+			"@@@InProc at 78B505FA78F1463D4A81DC50", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225733350, false, "613a1987-1e7a-4e19-8aa6-96afb0263e6d",
+			"@@@InProc at E26B5CE6C40822D44302EEEF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225735270, false, "0f768adc-be28-47bc-9923-69bcc0694ed6",
+			"@@@InProc at E26B5CE6C40822D44302EEEF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225735850, false, "f8a7b6c2-241f-4fc0-96d9-998713f05705",
+			"@@@InProc at 6A041DBEE9686FB740FFBA06", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225739160, false, "beb2581e-92a2-4271-ba89-87c560227120",
+			"@@@InProc at 6A041DBEE9686FB740FFBA06", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225739980, false, "860e4737-837b-49a5-aca4-eb672be4653c",
+			"@@@InProc at 2061213DC126C5147B423536", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225742580, false, "e6b968d4-86d6-4c66-93aa-d86db4115ab5",
+			"@@@InProc at 2061213DC126C5147B423536", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225743240, false, "6fa67f5f-25f9-4c18-9159-6425e394f576",
+			"@@@InProc at 8B834FE8F0BA9809B79378A5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225746230, false, "b0832885-6812-4879-86e6-a32f7f552193",
+			"@@@InProc at 8B834FE8F0BA9809B79378A5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225746970, false, "ff79bf11-dcb2-491b-a75f-6ff680f5b93e",
+			"@@@InProc at 52A3E7979D7DE7019C1E142D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225748890, false, "a7865101-8b57-465d-b3c8-5976eb228371",
+			"@@@InProc at 52A3E7979D7DE7019C1E142D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225749560, false, "b9c2c7b0-ac91-447e-95e4-bf1e18841d42",
+			"@@@InProc at FB817B5FA8808C1496B05DD9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225752970, false, "0312e0f5-319d-4471-8eff-55e3176629f9",
+			"@@@InProc at FB817B5FA8808C1496B05DD9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225753520, false, "c9c5c3b8-b56d-47aa-bfa4-46f46508fe1b",
+			"@@@InProc at 358F250AA12C9995628AF3BD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225755040, false, "65998618-4123-4dff-a3b4-0d5b41caa088",
+			"@@@InProc at 358F250AA12C9995628AF3BD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225755680, false, "5fe00940-c744-4c6a-886c-d57a98727fdb",
+			"@@@InProc at 927CCB74DD96BC07A5D59F0A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225759340, false, "f690cd9d-83b9-4a4c-92be-d65277c7ab25",
+			"@@@InProc at 927CCB74DD96BC07A5D59F0A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225759990, false, "fd4c4130-fa78-428a-a941-bf0a2cfea25b",
+			"@@@InProc at 3B790F453D29AF7763508961", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225762540, false, "c18d7449-fee9-47f2-82f1-c3093e40cd25",
+			"@@@InProc at 3B790F453D29AF7763508961", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225763340, false, "bd61f77b-577d-47e1-a221-8d4e66864559",
+			"@@@InProc at F3DABE78A44691B142D0A0B4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225765360, false, "bc87c997-b9b5-4fd8-90bf-472421119a8f",
+			"@@@InProc at F3DABE78A44691B142D0A0B4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225766000, false, "4ee81f68-4b5f-4c24-ae58-a2d70d1341a2",
+			"@@@InProc at 3D3BAAF1AC9F5AB5A9E23E4E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225770090, false, "9947d9b8-5ec7-493d-959c-9cc5b8c7500c",
+			"@@@InProc at 3D3BAAF1AC9F5AB5A9E23E4E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225770860, false, "ed0c84dc-223a-4773-a1c2-8fed86a92a55",
+			"@@@InProc at A64441A2E5A737FB8F804C9D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225771910, false, "3c64e33f-834d-4afc-8e1f-b81a725d473b",
+			"@@@InProc at A64441A2E5A737FB8F804C9D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225772590, false, "0736f95e-1aed-40dd-902a-e5b43595a752",
+			"@@@InProc at 644DC91FDB985698F8B2BD80", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225777950, false, "c75103db-9005-469d-897e-9bae176d147b",
+			"@@@InProc at 53D0A70082F8353D9BBCD083", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225778620, false, "32b4f9df-bfc4-40a3-b093-6da8ebf3e228",
+			"@@@InProc at 644DC91FDB985698F8B2BD80", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225778680, false, "58a58c36-cad9-4835-a9cc-881a276c1a8b",
+			"@@@InProc at 53D0A70082F8353D9BBCD083", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225779520, false, "bf8938d6-d0ff-4cd7-9b9c-f3f3dda7b750",
+			"@@@InProc at 552A3E4A95C47FF8874FECC0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225784770, false, "cc06c1f6-5f54-4c52-bc8b-3d2fea6da04c",
+			"@@@InProc at 552A3E4A95C47FF8874FECC0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225785390, false, "9be8e4c9-8259-4164-a822-6c7021ba0827",
+			"@@@InProc at ED85A787CB19C36BEFD81943", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225786050, false, "b0bf8030-ddf3-45d5-bd05-a57a811a938c",
+			"@@@InProc at ED85A787CB19C36BEFD81943", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225786760, false, "61bd18a9-4be4-465b-b6f4-f0f521740849",
+			"@@@InProc at 2B70681ADEB79E7B9AD8E9D4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225791410, false, "13e6f515-e109-4561-bff8-28edbefc3f0c",
+			"@@@InProc at 2B70681ADEB79E7B9AD8E9D4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225792330, false, "4e4a0201-a08d-443f-b857-4a7fb3ae9d3a",
+			"@@@InProc at DAC1CE866751C61B6D93815A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225793770, false, "1f9ba5d4-296a-425f-9ab5-017cc3b3c38e",
+			"@@@InProc at DAC1CE866751C61B6D93815A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225794570, false, "bb6c4fb9-9ba7-4185-86fe-965429fab71a",
+			"@@@InProc at F72C308F8B9F6C64DB27A5CB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225798370, false, "361c625e-0d3c-4295-b383-755f4d4670a4",
+			"@@@InProc at F72C308F8B9F6C64DB27A5CB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225798990, false, "e46dd4f0-f9ae-4904-a7ed-7b0e2fea4e9b",
+			"@@@InProc at 930538297220113D13A7ED9A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225801000, false, "867f5045-5f1b-4518-bb63-b8f4283d13a6",
+			"@@@InProc at 930538297220113D13A7ED9A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225801700, false, "dcddd51c-4e5b-4213-852a-9faec82f1156",
+			"@@@InProc at 549AFAA197EAE49FA8A00DBA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225804470, false, "e8667b32-8058-4533-86a5-aeff8dfbe0f2",
+			"@@@InProc at 549AFAA197EAE49FA8A00DBA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225805240, false, "c922c4f8-7f87-4a31-ac16-acc69ee7bc89",
+			"@@@InProc at FB0360E5DFD49F051B0A0DB3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225808330, false, "04d1b2e6-e702-41a9-bc64-0e6444efeb09",
+			"@@@InProc at FB0360E5DFD49F051B0A0DB3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225808890, false, "6cfc0be1-778f-4548-a0dd-d54fb501ce9f",
+			"@@@InProc at 0C3E629CC7C563F263B3555F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225811170, false, "12cce1d7-4938-42f9-bd9b-9bc507525707",
+			"@@@InProc at 0C3E629CC7C563F263B3555F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225811700, false, "4f40385d-c099-4dd1-8e0e-28231a6574cb",
+			"@@@InProc at 45897547CA2B2BAD63A49D68", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225814820, false, "d618b5ee-e4ce-40d4-b5e3-2ba6e0efa3a8",
+			"@@@InProc at 45897547CA2B2BAD63A49D68", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225815520, false, "7e12c6d4-a5f4-4190-aa5d-a6491df8750e",
+			"@@@InProc at 5934F059BCD481E43A5F5A63", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225817120, false, "3b99a8a0-3d7a-4e4b-9544-73abb346c1dd",
+			"@@@InProc at 5934F059BCD481E43A5F5A63", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225817640, false, "cb7fd12a-e70d-42a2-b2c6-9e95af886635",
+			"@@@InProc at A1F9CDCE162537BC240F97E3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225821430, false, "267368ca-d5fb-4e48-8c90-7bce79eca45c",
+			"@@@InProc at A1F9CDCE162537BC240F97E3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225821950, false, "1e49f5a4-96cd-413e-b277-e2d10fd08ed8",
+			"@@@InProc at A14A0BAC64AE3B2CCFB2A3C9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225823590, false, "01fc6d0e-dfcc-4316-a7db-4c81195668ff",
+			"@@@InProc at A14A0BAC64AE3B2CCFB2A3C9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225824300, false, "18a2e6a9-27de-4b7b-a379-08a74b2a8681",
+			"@@@InProc at 7D8AF97D40491A73034C975E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225827630, false, "73abb6ae-6e33-48b1-9ec9-7993fabe5a6e",
+			"@@@InProc at 7D8AF97D40491A73034C975E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225828670, false, "886bc030-4751-40c0-805e-705d1b326619",
+			"@@@InProc at 10E0459DC978A5D02991A692", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225831180, false, "2a37b787-b08d-477c-a8f5-eb4df2a2d9e8",
+			"@@@InProc at 10E0459DC978A5D02991A692", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225831890, false, "4b89fb42-9635-41a7-bbcd-1fe41379c05a",
+			"@@@InProc at E78FEBC1570A49842EF59F2E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225834680, false, "ca13f14f-c0d8-4d6c-a44d-6513630ef61d",
+			"@@@InProc at E78FEBC1570A49842EF59F2E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225835200, false, "406a6290-3848-4fff-bb18-9da3d1a344c5",
+			"@@@InProc at 95989DDA3F7C25B1C04885F4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225837190, false, "7419f1f2-bbdd-4050-a75e-e4c7f610e3bd",
+			"@@@InProc at 95989DDA3F7C25B1C04885F4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225837870, false, "2054a5d3-1076-4d9e-8a7b-58828139ec3c",
+			"@@@InProc at E8E7249E8D8CE9AC934DF162", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225841320, false, "91a9b07f-ba95-4c3c-ae73-a08c44870b63",
+			"@@@InProc at E8E7249E8D8CE9AC934DF162", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225842170, false, "93318c00-351e-4884-8d26-dafda3586601",
+			"@@@InProc at 88D0A91C6FC0EBA55EFE688B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225843060, false, "4cd5e8cb-e851-4384-8e66-60294c9ed145",
+			"@@@InProc at 88D0A91C6FC0EBA55EFE688B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225843590, false, "57ce0b3c-ac6e-4387-a0ba-85fee7c4a112",
+			"@@@InProc at 29D1DCA4D5B7E5C93F0FDA70", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225848740, false, "92749b40-5b38-4b68-9b7e-70e0469a5aae",
+			"@@@InProc at 29D1DCA4D5B7E5C93F0FDA70", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225849730, false, "3333f741-6906-4485-91e4-86a527548512",
+			"@@@InProc at 0524137CBBD984BFC1C463A7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225850650, false, "42a4b5d2-d391-4fb5-80d3-e8e62fb263c7",
+			"@@@InProc at 0524137CBBD984BFC1C463A7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225851700, false, "d633b8ff-217e-4da1-80a7-cd7af8fb8a9a",
+			"@@@InProc at 21B4A26BC93CB3769BAD32D6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225855570, false, "03479308-474a-4a80-868d-628e1edd2e21",
+			"@@@InProc at 21B4A26BC93CB3769BAD32D6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225856160, false, "ef9d6257-b6d6-49a2-829d-0d33a7c2237d",
+			"@@@InProc at AEBD905C7A4F06C65F00F9BB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225857650, false, "e7a7d651-69cf-45e7-b276-c932d24fee0b",
+			"@@@InProc at AEBD905C7A4F06C65F00F9BB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225858260, false, "a078d743-26e2-4327-8fb9-bea03a97fabb",
+			"@@@InProc at 55517645B1E3A3E683592747", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225862300, false, "fd7ff4d2-c64f-4781-9ceb-d02efa9f9bef",
+			"@@@InProc at 55517645B1E3A3E683592747", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225863360, false, "826dc92f-b49e-45ac-80b2-306a8b64a575",
+			"@@@InProc at AACD6C9FD840DB45986EFB5A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225864460, false, "af6f5e0f-e9a7-4f3f-ab28-78bee33ce571",
+			"@@@InProc at AACD6C9FD840DB45986EFB5A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225865000, false, "31b74735-a17d-4c0f-b9d4-d1e3d012e6a2",
+			"@@@InProc at D30E5223D4EF3BE67C9E7D80", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225870240, false, "c542f262-d980-4736-a854-e8e83fb79065",
+			"@@@InProc at D30E5223D4EF3BE67C9E7D80", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225871820, false, "00800bd0-013d-4945-ba39-f2c2157c8f98",
+			"@@@InProc at 10CD59A42879EDBBA0155337", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225871910, false, "b795cb83-3beb-40de-8854-459279abea8a",
+			"@@@InProc at 10CD59A42879EDBBA0155337", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225874060, false, "0eabc02d-b41c-4eee-b288-7556471df3f8",
+			"@@@InProc at 5B8A3454F9CE9878E57AC9A7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225878830, false, "73df5515-cb5c-4ef5-92dd-1b023f138a15",
+			"@@@InProc at 5B8A3454F9CE9878E57AC9A7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225879580, false, "1e2bbd83-0fdd-441b-9449-1d28fb5ae5a9",
+			"@@@InProc at DA00D174249FD0EC8F6E358B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225880260, false, "2a663add-22f8-4463-8879-ab228bd909a0",
+			"@@@InProc at DA00D174249FD0EC8F6E358B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225880820, false, "dde43199-3071-4719-bd17-9da8ef364ae7",
+			"@@@InProc at 66E4F358CB03D2623289B9DF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225885420, false, "58557ed6-c901-4904-aeb8-cfb4224f2283",
+			"@@@InProc at 66E4F358CB03D2623289B9DF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225886120, false, "a1a37a76-4f0f-42dd-be9f-f49d8bb2f5c0",
+			"@@@InProc at 968E253E5EF66D029DF32772", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225886810, false, "aeb800c0-0349-4eb3-a1d0-59460f63dcf6",
+			"@@@InProc at 968E253E5EF66D029DF32772", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225887380, false, "05e56aab-2f82-48c3-8aa8-d8c45e78abea",
+			"@@@InProc at C077A575B689292538FE4C21", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225891890, false, "aacceca4-65c7-45d2-8e68-fbd5517f7afc",
+			"@@@InProc at C077A575B689292538FE4C21", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225892590, false, "14e6251f-5c06-45d3-8a37-2c9e8efe52eb",
+			"@@@InProc at D4C65079C1A065C991871512", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225893350, false, "933d4e9e-5d79-4c86-b348-51508b66be9d",
+			"@@@InProc at D4C65079C1A065C991871512", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225894130, false, "cea20405-b551-4afe-b4dc-6718037f9bb5",
+			"@@@InProc at 83A409CEA947D81B816BD3FA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225898980, false, "118a3885-60ba-4205-a2c8-817caf595f1e",
+			"@@@InProc at E1BA7F65B653D0BFE0705917", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225900050, false, "f3d5aa34-1ec6-4797-ad29-8fd595d33733",
+			"@@@InProc at 83A409CEA947D81B816BD3FA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225900130, false, "396d17db-e8fa-405f-9227-fbeb2b88df98",
+			"@@@InProc at E1BA7F65B653D0BFE0705917", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225901130, false, "9a798bc7-2260-4c64-a46a-af358401c9de",
+			"@@@InProc at B120B5B31C87666C62A6A42B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225907100, false, "e1e555a3-4e01-4762-96c2-1ad25270968e",
+			"@@@InProc at B120B5B31C87666C62A6A42B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225908310, false, "e2b04e4b-dd5d-4866-8a8c-f4c3d32fbaff",
+			"@@@InProc at 2A1C9CF730215C2324EB1E82", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225909080, false, "46097c8a-4409-4277-a890-c43090896435",
+			"@@@InProc at 2A1C9CF730215C2324EB1E82", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225910090, false, "cd0c4914-f0d2-4b98-89d9-c99e7009a26b",
+			"@@@InProc at 283511776AF141B914EDF424", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225914440, false, "a36db956-41d8-49c5-b3a7-1294a6fed97a",
+			"@@@InProc at 283511776AF141B914EDF424", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225915030, false, "eb540a30-3ffa-4058-860c-5f2f2295f707",
+			"@@@InProc at 39D3F634714198349B75985C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225915660, false, "16da5074-d7e7-4670-85bd-bcb066fb370a",
+			"@@@InProc at 39D3F634714198349B75985C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225916180, false, "53c52ae0-b957-4940-ba27-7a350b1aef2a",
+			"@@@InProc at D62301C1B3390713094C4178", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225920710, false, "f3ce8539-fa6e-4328-9b97-5c90a9781711",
+			"@@@InProc at D62301C1B3390713094C4178", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225921440, false, "57d2d028-42f8-42d8-b4f2-975e420b8917",
+			"@@@InProc at 3FB06C6BA3459CF0D063507D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225923050, false, "d0679eed-9b75-427c-8116-668bfe686f14",
+			"@@@InProc at 3FB06C6BA3459CF0D063507D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225923840, false, "6314395e-22c4-4c16-9948-d293c5734aa1",
+			"@@@InProc at 3C5D0F7043290E4DE8CBE276", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225927080, false, "b0f7ee10-65ed-424e-9478-6e1f5dd8cbed",
+			"@@@InProc at 3C5D0F7043290E4DE8CBE276", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225927680, false, "716610fc-a493-4955-92e5-c70627a50957",
+			"@@@InProc at F2657CB39F9BD2A6F44F0B46", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225929980, false, "16b4189e-3a17-4deb-9289-ddfced1237ec",
+			"@@@InProc at F2657CB39F9BD2A6F44F0B46", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225930690, false, "e0a7ae05-07ce-495d-a1fa-df22cd54d575",
+			"@@@InProc at 6ACA21EB3AF363754F86E9EF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225934420, false, "3dd65e8d-2659-4ec3-98a8-c7d740863a53",
+			"@@@InProc at 6ACA21EB3AF363754F86E9EF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225934950, false, "acdbd391-5a6d-47b3-bd51-d8815113c698",
+			"@@@InProc at 49B51B9B2C22CA070E31C0A1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225936500, false, "847fe440-ee42-43af-9aeb-ce77d0d0ad0b",
+			"@@@InProc at 49B51B9B2C22CA070E31C0A1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225937040, false, "cdf5ab59-0fb7-4a5e-8d63-f43ccbdd10ea",
+			"@@@InProc at 8313DB192685663B4F936759", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225955720, false, "2e1bf2cf-7a73-4265-883b-b696dcfbf7be",
+			"@@@InProc at 8313DB192685663B4F936759", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225956530, false, "05f8ca7b-bf33-414f-8141-b66d4e00ea3b",
+			"@@@InProc at F92310E3797470C493D8E250", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225957670, false, "cef4572e-30d9-455a-a174-87d5b8bcc022",
+			"@@@InProc at F92310E3797470C493D8E250", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225958330, false, "3cdb1af8-9cce-4953-bb60-d0c9383bbba5",
+			"@@@InProc at 14667C092B302A0B5299A688", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225962640, false, "3ce58092-980c-4423-a0ff-8a81e1ee263a",
+			"@@@InProc at 14667C092B302A0B5299A688", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225963190, false, "1513e22c-d73b-4add-a3d7-51e696a708e5",
+			"@@@InProc at 4CA7493571F20D39BAF519AF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225969150, false, "4fce0d99-e0bd-4e16-a1c1-b2c979d3cebf",
+			"@@@InProc at C580A8FBFE881CE6D22D91CD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225969950, false, "197a90e5-4fb0-4a06-8956-5a847c1b18b3",
+			"@@@InProc at 4CA7493571F20D39BAF519AF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225970030, false, "d32ead57-c4b9-4c02-b57a-d56a93b35c80",
+			"@@@InProc at C580A8FBFE881CE6D22D91CD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225971060, false, "6adc75de-e0b9-43c0-8bcf-f4f0d583781d",
+			"@@@InProc at A9A69BDB690BE81978C5E404", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225976400, false, "150ce0aa-2478-4d05-a098-4d55fa8b47d6",
+			"@@@InProc at A9A69BDB690BE81978C5E404", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225977140, false, "04035f4a-0a04-4156-961e-3e7fa6dd51ad",
+			"@@@InProc at CE5445F69AB8F77EC5F94611", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225977820, false, "0f3f4e94-ff7c-4cd2-b20c-b3083f4a1292",
+			"@@@InProc at CE5445F69AB8F77EC5F94611", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225978380, false, "fcac16f6-6a00-4881-8299-3239266dccd3",
+			"@@@InProc at 0B690B4BC99C62A16432057F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225982970, false, "fbe7ab54-ccd8-41aa-95b4-a8d1ecffc365",
+			"@@@InProc at 0B690B4BC99C62A16432057F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225983740, false, "aea10a6b-c020-4d93-893f-82a0b0106a21",
+			"@@@InProc at 26EF6681AD9D068E36B1AE8A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225984400, false, "d972ddc5-a4fd-4c46-a3ae-503dce199c7d",
+			"@@@InProc at 26EF6681AD9D068E36B1AE8A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225984960, false, "10a83069-0a00-4b3a-9295-e0b061dd5626",
+			"@@@InProc at ADFCA72212BB1298F5F6226B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225990700, false, "0c24d092-f4bd-400f-9c09-8ed52b6e991d",
+			"@@@InProc at DFE57A5292B4EDB9220EFBD8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225991410, false, "766dc5e2-c07b-48ae-b904-63f3a95eae43",
+			"@@@InProc at ADFCA72212BB1298F5F6226B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225991470, false, "2c92aec5-3842-4410-9700-9990f620bc5f",
+			"@@@InProc at DFE57A5292B4EDB9220EFBD8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225992330, false, "becea6ad-3c2c-46a8-ad3b-302a3d4c7b8e",
+			"@@@InProc at 12C48DF4FCF28775956670C3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225997070, false, "ce2f147e-bd77-415c-8e46-61ee4cc73feb",
+			"@@@InProc at 12C48DF4FCF28775956670C3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225997620, false, "5836e3ee-e93f-43e8-b3cf-f889feaf65ea",
+			"@@@InProc at DA57F765A5DA8EDB1B17ED0C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225997810, false, "247a9490-275a-4aa0-a194-d7c29313cb35",
+			"@@@InProc at DA57F765A5DA8EDB1B17ED0C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878225998730, false, "45cf9637-b408-4fcf-996b-ace95382c54a",
+			"@@@InProc at F1E27DB6C0826BE3BEA88BB5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226003230, false, "74f452f0-befd-429c-8f64-90caef860f53",
+			"@@@InProc at F1E27DB6C0826BE3BEA88BB5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226003940, false, "2a5c58b0-2726-4c3f-8d9c-6d5a3d305f0b",
+			"@@@InProc at AB9EFE42C3771A04E920C981", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226004610, false, "1a2d7ce0-75e8-400c-88a7-6183ba7934d7",
+			"@@@InProc at AB9EFE42C3771A04E920C981", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226005150, false, "eb427b50-57a2-4a08-9152-5c66019e27bf",
+			"@@@InProc at BFCA437B8E672A34688B84D1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226009520, false, "7bbca99a-37ec-48fa-bd7b-bd70b5073930",
+			"@@@InProc at BFCA437B8E672A34688B84D1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226010140, false, "5213a2fc-3139-476e-90a8-90395d7adf77",
+			"@@@InProc at 5CD363F1F7233FFAB017281F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226014240, false, "224d5831-5d86-42f8-8163-58f92fe4fffa",
+			"@@@InProc at 5CD363F1F7233FFAB017281F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226014860, false, "ce6ca96c-da62-474e-bd68-bdcd616892e5",
+			"@@@InProc at 2E236721BDC25A40F564C2F2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226015550, false, "d698ff30-0b6d-492b-989a-57f01aa72b7e",
+			"@@@InProc at 2E236721BDC25A40F564C2F2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226016150, false, "7c49091e-1d73-4357-9559-c1e8b38f4ea3",
+			"@@@InProc at 0BFE59F3FF69D6714766F558", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226021340, false, "49b12048-242a-49e1-a7ed-5e33dc0e2889",
+			"@@@InProc at 0BFE59F3FF69D6714766F558", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226022370, false, "dd678890-1d1a-4736-b797-31353f8a93ac",
+			"@@@InProc at 680B26033351C0B2D2F92043", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226022430, false, "9237e8ae-a616-4224-a169-7da5f5c6d1ff",
+			"@@@InProc at 680B26033351C0B2D2F92043", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226023870, false, "75e80b2a-8c38-427d-9eaa-6716ee088e7c",
+			"@@@InProc at 718DFFAF0462C7225ADB84F6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226028110, false, "0ac8b7bd-5dbb-4767-bacf-7404b19adb80",
+			"@@@InProc at 718DFFAF0462C7225ADB84F6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226028820, false, "dc3c8efd-da83-4a7b-b1b9-65974d90d1c8",
+			"@@@InProc at 89E81DD7CFF4AB7B627823CB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226029740, false, "8c0e8766-a287-4435-9247-bd2c9b4c3c75",
+			"@@@InProc at 89E81DD7CFF4AB7B627823CB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226030270, false, "cbfb4893-380f-49ab-99d5-4b0ebcdccb57",
+			"@@@InProc at 7F3814B5034F7085A4C66A41", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226035480, false, "1cc9e65b-4bb3-4db5-929c-aba26283fd0e",
+			"@@@InProc at 32FC4CFA79C12DFFB3B41968", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226035580, false, "336753ec-9f41-43e0-8276-8dbd682d948a",
+			"@@@InProc at 7F3814B5034F7085A4C66A41", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226036790, false, "4d40e18f-d373-43bd-8858-31e3c1372a42",
+			"@@@InProc at 32FC4CFA79C12DFFB3B41968", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226036860, false, "bb53383c-0e18-4c25-b380-9aae5578dc7b",
+			"@@@InProc at 742CC8BABA5D7EECAC2E4F3D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226042460, false, "d22f64b8-f219-41db-a360-2bbf2f24a538",
+			"@@@InProc at 742CC8BABA5D7EECAC2E4F3D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226042990, false, "4b90f6ee-9fef-4564-8005-789b22ef9cc6",
+			"@@@InProc at 9F5E1AEACD0D8D6FB38C1FE0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226044110, false, "4516f3b0-face-4117-bb53-20f83a357125",
+			"@@@InProc at 9F5E1AEACD0D8D6FB38C1FE0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226044880, false, "f8143cf9-e1ab-49d3-887d-8c0e2686ad85",
+			"@@@InProc at 4F06151950F41CB717331D77", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226048780, false, "176d9d09-2e08-4773-97a1-f2499ea5a06d",
+			"@@@InProc at 4F06151950F41CB717331D77", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226049370, false, "10ad8e4f-cdc4-4d72-bcc5-cb8384e57035",
+			"@@@InProc at 48D242631187C509DFB9772F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226054490, false, "2bc62700-54ae-46f6-aebe-0e7b24731902",
+			"@@@InProc at B43F41852B1A695A3918B355", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226055200, false, "4d7764e7-5685-49ff-8a63-8c0c817f8e34",
+			"@@@InProc at 48D242631187C509DFB9772F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226055260, false, "73e20c6f-e826-48b6-af06-fb572ae989b8",
+			"@@@InProc at B43F41852B1A695A3918B355", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226056440, false, "7a68472a-4380-4462-ad89-632ba85b87a1",
+			"@@@InProc at 2822A6C923959CD04F7C0B7E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226062840, false, "b219481f-abd8-4cb5-91fb-04e0612b5272",
+			"@@@InProc at FD22FBA55F74A2D26F6A8FAC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226063140, false, "2473dade-614a-41d1-a1e9-bbae58457f5e",
+			"@@@InProc at 2822A6C923959CD04F7C0B7E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226064470, false, "0fde9c06-e11f-4bc9-b1c4-af5b494c7ce2",
+			"@@@InProc at FD22FBA55F74A2D26F6A8FAC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226064550, false, "d1e94994-b61a-45ff-9d72-aa6ec2bbbc4d",
+			"@@@InProc at 6A62C66CE2DC24CEE29BE466", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226070370, false, "7304362e-84fa-4d8d-b9b6-d65270882c7e",
+			"@@@InProc at 6A62C66CE2DC24CEE29BE466", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226070930, false, "574fbf2c-5585-444f-bcd0-c456712c922e",
+			"@@@InProc at 850FEFA8F005B25D2137E8BA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226071470, false, "ed9ff16a-9a4b-43bd-a6cd-2c7e7eb41e21",
+			"@@@InProc at 850FEFA8F005B25D2137E8BA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226072090, false, "19e2db0f-cb37-43c0-8a18-2cfc978a59d9",
+			"@@@InProc at A26CB9B4B95C286FDE6B07CB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226077630, false, "9319975f-3ec5-4a92-9579-f840066e8316",
+			"@@@InProc at C84481EF8DE9C973B9DF23E0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226078810, false, "192a58cf-cb17-43b3-88e9-bc6a32fc69e1",
+			"@@@InProc at A26CB9B4B95C286FDE6B07CB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226078890, false, "35aab7b5-f8fc-4832-a790-e7c6b6b3832a",
+			"@@@InProc at C84481EF8DE9C973B9DF23E0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226080260, false, "fc49c7ee-b20e-41f0-b47d-5d8f4da81522",
+			"@@@InProc at E5C208BF21728D0C1131E53C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226085480, false, "6026d334-c270-42ff-b968-0c0cade84ac8",
+			"@@@InProc at E5C208BF21728D0C1131E53C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226086000, false, "8ca77dc8-cb9d-4150-bb6f-a5b2f678bc0f",
+			"@@@InProc at 32CF3DCE3882FAB799F15D51", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226086210, false, "da72a538-e3c6-4c0a-8008-b2e31ef90f98",
+			"@@@InProc at 32CF3DCE3882FAB799F15D51", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226086910, false, "705b4a0c-081a-41e2-bcb0-2c76fd6fcf52",
+			"@@@InProc at 47640771152E463C69CDE4EC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226091350, false, "1d15b9f4-de9c-465f-842e-8a3d57c80890",
+			"@@@InProc at 47640771152E463C69CDE4EC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226091910, false, "f479d206-ba46-4b62-b473-227d319e143b",
+			"@@@InProc at 4C8C73E4070CC91E25674EC9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226092030, false, "e37a1f9e-a41c-422b-aec6-be21125af6fb",
+			"@@@InProc at 4C8C73E4070CC91E25674EC9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226092860, false, "8217ff54-9a92-42ee-aada-9b2f68d34080",
+			"@@@InProc at 32B29C92F3C511019ED7B996", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226097210, false, "4c9dd180-504f-4805-a2b7-6e299da55c91",
+			"@@@InProc at 32B29C92F3C511019ED7B996", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226097930, false, "210d0b0e-e886-4605-8dd5-80acad629638",
+			"@@@InProc at 135A228898BDB86566D96395", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226098990, false, "874709a9-6718-4d35-b503-3f33ff104baf",
+			"@@@InProc at 135A228898BDB86566D96395", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226099520, false, "8b55a782-8339-47c0-9658-c394b9ca57e8",
+			"@@@InProc at 5CDB97556B88D9C9E64EAF26", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226103080, false, "ac1cb7d1-fe26-465e-89d4-42b3859cbee6",
+			"@@@InProc at 5CDB97556B88D9C9E64EAF26", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226103780, false, "1661332c-f87e-4ab6-8240-dc55d436d081",
+			"@@@InProc at BEEB5D167C8A6D1366B981A9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226104720, false, "d81ec963-a8d7-4f5c-995c-20c46990064d",
+			"@@@InProc at BEEB5D167C8A6D1366B981A9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226105230, false, "54965dd0-f348-488e-86cd-ad3a62d55571",
+			"@@@InProc at F71B3D988167BE1A661756C7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226109010, false, "fe0f7193-a203-4190-8af9-612e47eddf89",
+			"@@@InProc at F71B3D988167BE1A661756C7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226109620, false, "da7d34f8-52e2-484b-ae89-d35b048aa84d",
+			"@@@InProc at 91812439BD4A2782DC807F94", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226110210, false, "fae9cf1f-02a1-4742-83c0-9d8fb2913edd",
+			"@@@InProc at 91812439BD4A2782DC807F94", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226110730, false, "de38e6bc-6be1-47cd-a98c-9c6d84d841f7",
+			"@@@InProc at CA602AB1C8AEF96FA949608B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226115180, false, "78d5b0ff-eaf0-4152-993d-c3199e979d49",
+			"@@@InProc at CA602AB1C8AEF96FA949608B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226115810, false, "6686d152-dd5e-4323-abdb-d4d24d5e3c66",
+			"@@@InProc at EF0C16A79A5B2D626C1B1C86", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226116400, false, "431d2cfd-c6fc-430d-82d6-f2f60d821662",
+			"@@@InProc at EF0C16A79A5B2D626C1B1C86", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226116910, false, "1bee1978-8f1b-45d4-82c5-440b87473500",
+			"@@@InProc at 535254D649B1011D045DA83C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226121310, false, "e06c25bf-023d-4b60-99d8-683b2a03fa07",
+			"@@@InProc at 535254D649B1011D045DA83C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226121920, false, "1f8ed110-b4c4-426c-b1e3-30858d32187b",
+			"@@@InProc at 8848E3321DB781935FD56C8C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226122510, false, "1706d7d6-1777-47d9-8976-15b05faba96b",
+			"@@@InProc at 8848E3321DB781935FD56C8C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226123030, false, "fdf312b2-893f-477b-88cf-1ccfc8babb84",
+			"@@@InProc at 7190852757623DF075C3CB33", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226128410, false, "e23cd4e6-5265-47d4-b94f-3baa1b8a1454",
+			"@@@InProc at 7190852757623DF075C3CB33", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226129180, false, "cb2cb5b1-2d74-4723-977c-370623ccefdb",
+			"@@@InProc at C22F685054D074293757D8C1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226129370, false, "f3468dc5-da72-4333-b154-c3c4060beacc",
+			"@@@InProc at C22F685054D074293757D8C1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226130460, false, "d2ba86cf-6f59-43f9-a89b-66bc7736dc27",
+			"@@@InProc at DEE7218A570EDF24F5D6883A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226135030, false, "993b5a0d-6722-485e-8102-5143620842ff",
+			"@@@InProc at DEE7218A570EDF24F5D6883A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226135660, false, "3af5cd43-9525-4a96-bc82-9c88600088f2",
+			"@@@InProc at F32C10121759C7000B64EA12", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226136230, false, "5b2fe348-7c91-44e2-9165-b6f6a3b8cfd7",
+			"@@@InProc at F32C10121759C7000B64EA12", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226136770, false, "6ef57f1b-8329-45c2-91ce-d31268d146fb",
+			"@@@InProc at 2EC4A5032C267E2C21936758", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226141430, false, "8274130b-a907-42ad-abbd-047d58d764b3",
+			"@@@InProc at 2EC4A5032C267E2C21936758", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226141950, false, "6b0d7877-d3d2-4be7-be0d-a271536c5c10",
+			"@@@InProc at E9AEF7F633D3BFB16A464536", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226142450, false, "9ef19412-886d-483f-ba09-f504d104bc8a",
+			"@@@InProc at E9AEF7F633D3BFB16A464536", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226142980, false, "a44baaa3-4d95-4744-b8bf-c7b26c8d2133",
+			"@@@InProc at 7C534DFDD34FAF2616D8758D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226148120, false, "63ab3269-ef68-4f2e-afb3-42acefdfebd1",
+			"@@@InProc at 7C534DFDD34FAF2616D8758D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226149450, false, "3bb85876-2642-4a49-8f78-017f0dae333d",
+			"@@@InProc at C070C389AD339ACB6FA9BEB4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226152440, false, "530da215-57be-43ed-8d65-59843fec082e",
+			"@@@InProc at C070C389AD339ACB6FA9BEB4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226153530, false, "48f8f803-a821-4455-af6f-f8e62d3b8a1e",
+			"@@@InProc at C17F869032786A9679D950C2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226157440, false, "c13cd338-152e-47cd-a8df-53a1da6eaac7",
+			"@@@InProc at C17F869032786A9679D950C2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226158470, false, "97fff9e4-e732-4986-849c-f99edbdb5c16",
+			"@@@InProc at 181F1A812B5663C193D9AB0E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226159320, false, "c3fff76f-870a-4aa0-9510-48aea49699c1",
+			"@@@InProc at 181F1A812B5663C193D9AB0E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226159870, false, "ac529d54-d8cf-4d1f-82ac-0de0835b2094",
+			"@@@InProc at F0957880C9CABD821F869BCE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226165500, false, "4c43aea1-1ef2-491b-ba45-76aa936a62a6",
+			"@@@InProc at 2BCE7F153F4BC25C2B8686CB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226166350, false, "11642e1e-0217-4a9c-830a-eab131cf07ed",
+			"@@@InProc at F0957880C9CABD821F869BCE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226166440, false, "83be4fe9-1df8-49ba-8d19-20cf8f9fde26",
+			"@@@InProc at 2BCE7F153F4BC25C2B8686CB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226167470, false, "2723e053-1188-425e-885c-fcf204013e6d",
+			"@@@InProc at 7E6FD5C9940581D6B22EFFF2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226172440, false, "eb529555-aa02-4dcc-9431-2e60c3e7806f",
+			"@@@InProc at 7E6FD5C9940581D6B22EFFF2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226173100, false, "d58229c5-ca5b-4fd4-98fc-4a3a4dcb41b5",
+			"@@@InProc at 18A310970F1BFC6BCC847F0C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226173770, false, "6a0d309e-2f4f-477b-b121-b1bff5f80044",
+			"@@@InProc at 18A310970F1BFC6BCC847F0C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226174390, false, "799fbe50-9e99-4372-b92a-87ff9b8d26d1",
+			"@@@InProc at 665C598C5A6D76E30AC364E4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226178660, false, "d9cb3f36-4acc-4df7-8268-1036369325d3",
+			"@@@InProc at 665C598C5A6D76E30AC364E4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226179300, false, "b46bca7a-d5b0-44c4-aabb-7f089eeaaaa4",
+			"@@@InProc at 00FAF6A3E9A9146C83B17BAC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226181620, false, "6bd615fd-f62e-4e98-82dc-dfe6a0fd76df",
+			"@@@InProc at 00FAF6A3E9A9146C83B17BAC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226182420, false, "c35cc225-0e2b-4e62-b31b-337788e30090",
+			"@@@InProc at 072E6994584F2F17DA99908A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226184580, false, "aa9ccbd7-5f13-4236-931f-64da932ec229",
+			"@@@InProc at 072E6994584F2F17DA99908A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226185140, false, "efa64f6f-6de7-4fba-bc6d-fa09da2becc4",
+			"@@@InProc at 6A4920F0CC949E24931302AC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226188640, false, "756600ab-fa05-4c9d-b7e8-03a65fd08cd5",
+			"@@@InProc at 6A4920F0CC949E24931302AC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226189320, false, "368f24c0-85e7-4f4e-9a7b-c38885a59801",
+			"@@@InProc at 82BF9C426E90207B6A8CB7B0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226190730, false, "387152e6-7339-4ea7-8b5b-5324a0ac4636",
+			"@@@InProc at 82BF9C426E90207B6A8CB7B0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226191400, false, "ffb80217-8dcf-4268-9fa2-7a1f599f1b78",
+			"@@@InProc at 71E45DDF8CCE0860A847AAFC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226194930, false, "8e22d13e-9c2d-4190-8477-82c8b2837589",
+			"@@@InProc at 71E45DDF8CCE0860A847AAFC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226195580, false, "ea42ca19-31ef-4eaa-ba37-ef477b0e71b4",
+			"@@@InProc at FBF86DDDAC7B4B45F8C6F171", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226197180, false, "b8c155b9-358c-4ade-9f76-0f4dcd03a8c3",
+			"@@@InProc at FBF86DDDAC7B4B45F8C6F171", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226197840, false, "75486746-c85c-490e-b629-a752e25ec07c",
+			"@@@InProc at CA65474762E7177E96C70FFC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226202230, false, "62ea04c8-f3d4-4ae0-84ca-1b4f88e795d7",
+			"@@@InProc at 01C1D2169173B4920D4EBEB3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226203070, false, "8b79ef3c-be0c-4567-9378-1b5eaf58587b",
+			"@@@InProc at CA65474762E7177E96C70FFC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226203170, false, "032d1dc8-63c3-4afd-82e6-da9d3f49bfc1",
+			"@@@InProc at 01C1D2169173B4920D4EBEB3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226204230, false, "24fbc225-6925-4901-9a4e-f018954996b1",
+			"@@@InProc at 0A6475DB41A8982DFECC3FFD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226209890, false, "cbce4de5-eb75-4fc1-b456-80c993a6b465",
+			"@@@InProc at 0A6475DB41A8982DFECC3FFD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226210490, false, "a481f162-c173-40f4-a61a-ffa5613cd49f",
+			"@@@InProc at FB631B7B29A8A0AD3935AFC2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226211150, false, "9b7653f3-c622-41d5-8a4a-3222d00d7118",
+			"@@@InProc at FB631B7B29A8A0AD3935AFC2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226212170, false, "f95a5427-4299-429e-997f-9e3782e17462",
+			"@@@InProc at D04932C8BEC9AE05B5DDC446", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226216200, false, "d1460041-d8d8-4f38-b374-593742e69ecc",
+			"@@@InProc at D04932C8BEC9AE05B5DDC446", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226216730, false, "1bae3ee8-92ce-4e57-8dcd-7b06393b0e08",
+			"@@@InProc at B73F6963F367EB55BC8D3ADE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226218300, false, "e96fdb01-88cb-49d3-9473-991a8cbe9964",
+			"@@@InProc at B73F6963F367EB55BC8D3ADE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226218840, false, "11af0d21-24fc-47b4-9be7-106c0469d8ff",
+			"@@@InProc at 74AA6F7F5D7E447BCFE37854", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226222660, false, "2b5d3d46-2f08-4df7-ac42-7f904afc56d8",
+			"@@@InProc at 74AA6F7F5D7E447BCFE37854", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226223790, false, "12ffd422-569e-4686-b503-b35e544c7eb4",
+			"@@@InProc at 69B489361A784B095F5E7C50", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226225460, false, "83aaa3fc-0fdc-4695-874b-11c8eb9e6fcc",
+			"@@@InProc at 69B489361A784B095F5E7C50", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226226340, false, "45cc7ee9-7eeb-4bd8-873b-773de5a2f052",
+			"@@@InProc at A7D7A9D1D73EC57355F75FB2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226231730, false, "74475127-3faf-45ce-b33f-1b4625b7b78d",
+			"@@@InProc at 0770DDEF2D6E039BCE245E3E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226232340, false, "ae76daa9-cc3a-4450-bfaf-4db8c21236a1",
+			"@@@InProc at A7D7A9D1D73EC57355F75FB2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226232400, false, "57305f3b-2bca-42a3-b311-1920dd493d9a",
+			"@@@InProc at 0770DDEF2D6E039BCE245E3E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226233220, false, "dd66b062-c152-4e54-b9bd-4bc93c8b6648",
+			"@@@InProc at 2B4BFA821179EC432FE256B0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226239000, false, "57dd32a7-382c-49f6-ab6a-fda432b1e6e0",
+			"@@@InProc at 5DE2BEEC3A9A60948D57E48E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226239670, false, "8bf2701d-edee-4d7e-aa2f-133f9b854c83",
+			"@@@InProc at 2B4BFA821179EC432FE256B0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226239720, false, "3e76b701-0bc9-4e1a-b1bb-33fcc1afeea7",
+			"@@@InProc at 5DE2BEEC3A9A60948D57E48E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226240640, false, "ee0b3f01-02db-40ca-865e-15efafa2433c",
+			"@@@InProc at 7AB024671D1FFD3FEB88082B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226245500, false, "55eb1c73-3dac-4b25-bcab-b650b2b4f767",
+			"@@@InProc at 7AB024671D1FFD3FEB88082B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226246060, false, "204ee9c4-8779-4af1-a2fe-64ba063b73ce",
+			"@@@InProc at DF081BDAB31AE9CC39577ECB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226246120, false, "ed02733e-58fe-4bde-952d-1a44ab2dd9a6",
+			"@@@InProc at DF081BDAB31AE9CC39577ECB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226246950, false, "fd2960f6-f543-4456-822e-981c4fb9f950",
+			"@@@InProc at AA59B078CBDBD7076C3BC376", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226251980, false, "488a0cc6-916f-47c7-9a0a-37bad8493b6a",
+			"@@@InProc at AA59B078CBDBD7076C3BC376", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226252950, false, "0d801fd8-c301-45d9-a41d-3fc33bb870f0",
+			"@@@InProc at 80199E6218D68F799DCA8C1E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226254150, false, "270064bd-4358-4328-80a4-28691ad8e24b",
+			"@@@InProc at 80199E6218D68F799DCA8C1E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226254800, false, "0627c5e4-3cba-48a6-b7e4-0d2f07faa175",
+			"@@@InProc at B525E7BEDE10DEEB5BC85954", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226259290, false, "29ea1f8e-052a-4a92-8262-e346ab23f46e",
+			"@@@InProc at B525E7BEDE10DEEB5BC85954", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226259980, false, "fd6bacaa-82cb-4f7d-8567-54f054d09185",
+			"@@@InProc at D247830AB41CDB163AC41B7A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226279830, false, "165d5b9c-14e2-429b-a5f1-7a37296f2e18",
+			"@@@InProc at D247830AB41CDB163AC41B7A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226280410, false, "6b77a8b3-ad22-485f-9722-7939913b6371",
+			"@@@InProc at B9EB21FC1AA0756B1D286D97", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226284440, false, "86ab5979-2dec-4a9a-a0e4-2cbfc90ec33c",
+			"@@@InProc at B9EB21FC1AA0756B1D286D97", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226285140, false, "a2ee0af2-11ff-47f5-aea8-26d9a5748e87",
+			"@@@InProc at 1DB0FA0B8FC94DAC5D49248F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226286070, false, "fdede59f-4fbe-4a4f-a6cd-7e52b47853b8",
+			"@@@InProc at 1DB0FA0B8FC94DAC5D49248F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226286620, false, "77e937ec-9983-4b0a-b090-2f402c868562",
+			"@@@InProc at 4ABEEE74681BE7247EFFA9E1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226290480, false, "9c44e854-33d1-400f-8d2b-8c7f400269b7",
+			"@@@InProc at 4ABEEE74681BE7247EFFA9E1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226291110, false, "541db58f-272f-429a-b2c3-d10747784cef",
+			"@@@InProc at E7C77FB18506990E52E3C1CC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226292240, false, "c1b36e5c-d0ef-4580-81f3-25f1d4f48b9e",
+			"@@@InProc at E7C77FB18506990E52E3C1CC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226293050, false, "280236fc-aed6-471a-a63c-5adb4b58d12b",
+			"@@@InProc at 195F58060401B131FE8C0844", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226296310, false, "587c7723-7d1e-4e1b-9742-a97dc4df1b43",
+			"@@@InProc at 195F58060401B131FE8C0844", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226296980, false, "5ac2947c-ef91-4257-b707-8fdf26c122d9",
+			"@@@InProc at 8A6CE3DEB6C868915B1A80BF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226298570, false, "217f5090-fcff-4b4d-bc7e-a195b6c52800",
+			"@@@InProc at 8A6CE3DEB6C868915B1A80BF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226299260, false, "72227160-2022-43bb-9144-bcd499c16fbe",
+			"@@@InProc at 0B1C23E93D32E7A2C2B7DB80", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226302320, false, "12dcb271-e2d9-4155-aef9-8890f43c4ccb",
+			"@@@InProc at 0B1C23E93D32E7A2C2B7DB80", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226302890, false, "07ce9cbf-8f88-42e8-8080-767a000483de",
+			"@@@InProc at 879088713A33D12505A64B8B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226305060, false, "74a43494-214d-4aee-8dfd-f6429382a446",
+			"@@@InProc at 879088713A33D12505A64B8B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226305730, false, "207b8580-3070-46b0-a9af-ad594a11c855",
+			"@@@InProc at 6BD5BD1711F339B9D53794F3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226308020, false, "e3888f6a-8952-4726-8e5d-c579ed9851d7",
+			"@@@InProc at 6BD5BD1711F339B9D53794F3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226308640, false, "cfe2429e-1937-46a3-ac83-faaa0f3276c4",
+			"@@@InProc at CD02AA70F80438D379C256C2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226311240, false, "fd0d3c26-bbea-4d4e-8084-49e812987bac",
+			"@@@InProc at CD02AA70F80438D379C256C2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226311880, false, "a64c178d-2b30-4f8c-bf19-42c4c9a03354",
+			"@@@InProc at 07BE97010811CB095975C013", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226313790, false, "f31888e9-1be4-4baa-860e-6b8457719cfb",
+			"@@@InProc at 07BE97010811CB095975C013", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226314400, false, "8cccdb63-4b61-4be9-a257-46141d92b30b",
+			"@@@InProc at 9B5F50BBDAB68F945F5E82EB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226318340, false, "0d261890-6269-4f06-a0a9-3068b9d3526a",
+			"@@@InProc at 9B5F50BBDAB68F945F5E82EB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226319320, false, "d2fd7a0f-e9be-460f-b7bb-5ab0692bb521",
+			"@@@InProc at DE66AFB133FCC50B389ECDD4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226320320, false, "f9297ea4-99db-4895-a95c-73ca9e3dd14c",
+			"@@@InProc at DE66AFB133FCC50B389ECDD4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226320920, false, "34176bfe-8db9-4f52-b509-a2f6939c1c18",
+			"@@@InProc at A3BF3A674BC55E185026ADD8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226326420, false, "70d9508a-0354-43ad-8bfe-e9982ef093bc",
+			"@@@InProc at A3BF3A674BC55E185026ADD8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226327520, false, "8e7f9740-7991-4e84-998a-11f50d89654f",
+			"@@@InProc at 159767A9E708B68B51CE709B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226328970, false, "a66abf55-f339-4845-b68d-0da414c89d6f",
+			"@@@InProc at 159767A9E708B68B51CE709B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226329760, false, "b703be81-1f73-4891-bd7e-a73fb0d881f1",
+			"@@@InProc at B30F9474702E22D7367311F5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226333820, false, "36e33a0f-795a-4270-9140-8eef60691d0d",
+			"@@@InProc at B30F9474702E22D7367311F5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226334580, false, "82399844-5c44-45a1-b755-7242fe7f0634",
+			"@@@InProc at 25407A9C7D89EC7B015FDE6C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226335510, false, "3205bdf0-e9dd-4c67-93d8-58d524932a3d",
+			"@@@InProc at 25407A9C7D89EC7B015FDE6C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226336030, false, "d7b9abac-0d8f-458f-ba61-7026bb9836b8",
+			"@@@InProc at 58A83BD268D6B5AA5203C7AD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226340160, false, "3e359f57-202c-4bbf-ae61-4643cecc80a5",
+			"@@@InProc at 58A83BD268D6B5AA5203C7AD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226340690, false, "64c67027-e915-4561-b67a-f573b90ab4d2",
+			"@@@InProc at 25B46A911ECA9D49A6AB13C9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226341190, false, "8c2a1f4b-f6b9-492f-a552-897f0028d0d3",
+			"@@@InProc at 25B46A911ECA9D49A6AB13C9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226341710, false, "3d59094d-b194-4082-9a84-8f961379a9c8",
+			"@@@InProc at 8F8513E1AE0BA8CA9A1E31D0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226346410, false, "07b68859-e2e8-4bcd-ad0a-d9baff39f899",
+			"@@@InProc at 8F8513E1AE0BA8CA9A1E31D0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226347300, false, "3ca96c65-4f63-4d18-b2ed-22fe7290c730",
+			"@@@InProc at 7A16A5E8ECE6E969E81BB0CE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226348820, false, "dcc88ba7-4160-42c4-a295-14ac5c07a6d1",
+			"@@@InProc at 7A16A5E8ECE6E969E81BB0CE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226349870, false, "1898af5b-8d0e-44b1-a4ca-03a1a9443729",
+			"@@@InProc at E5B95B1BF9208E8BFE539308", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226353700, false, "f7283563-df86-4b4f-b18d-7a583c9154b7",
+			"@@@InProc at E5B95B1BF9208E8BFE539308", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226354860, false, "552aea33-e771-4ccc-aca9-b1f1f778a499",
+			"@@@InProc at 1C4CD4334F1881ADAAEB3143", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226358320, false, "dac5532f-b70d-4736-88da-9ba1c6c80d2e",
+			"@@@InProc at 1C4CD4334F1881ADAAEB3143", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226359420, false, "fc037fe5-e879-4d5b-981f-69f41197c8bf",
+			"@@@InProc at 1E8499810871F47CABC0F2FC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226364680, false, "c099b83d-dcd7-4a2c-805d-5d881d09fe86",
+			"@@@InProc at 1E8499810871F47CABC0F2FC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226365830, false, "663db190-7042-4ef6-8a2d-6abbaeeb8f4f",
+			"@@@InProc at C3A2729F47490E3CD504BE26", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226369170, false, "df1d0394-aa80-4b32-aab1-0b17f7f4435b",
+			"@@@InProc at C3A2729F47490E3CD504BE26", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226369950, false, "66e1f148-af25-43b1-9811-eb4e1dc3b149",
+			"@@@InProc at F1B613BC6F4864EDFB1EE5B9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226377940, false, "07d5c9e3-ba43-4d20-87d9-f058c6a46131",
+			"@@@InProc at 7C6641DE7FCF2B0E289BDE5C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226378980, false, "a59e5225-4620-4a07-a253-97d3c0817ea9",
+			"@@@InProc at F1B613BC6F4864EDFB1EE5B9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226379080, false, "9d3ed0bf-b5ab-4c26-9088-89e8d15a1706",
+			"@@@InProc at 7C6641DE7FCF2B0E289BDE5C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226380460, false, "0fc87aaf-0d5d-4191-83be-17d54c305721",
+			"@@@InProc at DEDABCBCB22FC031641D2257", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226388990, false, "ec9dea5f-e187-410b-9647-38cf2f190388",
+			"@@@InProc at AC3982D3BAEB3B3718FA57E8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226390250, false, "a94157b2-a193-4f33-a5f3-72e12718ab2e",
+			"@@@InProc at DEDABCBCB22FC031641D2257", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226390350, false, "02ebb136-690e-413a-b76b-f508a590bd40",
+			"@@@InProc at AC3982D3BAEB3B3718FA57E8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226391900, false, "6cdb3beb-df0d-43ef-9589-1f0ea716e069",
+			"@@@InProc at 7BB99EB075F515CB4D1A78A2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226400760, false, "3b2a4a9e-d08d-4333-a498-244878ff5415",
+			"@@@InProc at 7BB99EB075F515CB4D1A78A2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226401810, false, "cec7f452-a583-493b-9336-feb73f5664ac",
+			"@@@InProc at F5930DCF757D8C46240A3823", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226402030, false, "6d59fdf7-fc45-4126-b7f3-6a9709a3ef63",
+			"@@@InProc at F5930DCF757D8C46240A3823", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226403340, false, "809e5cd2-e842-4201-bd0d-615ae2e23808",
+			"@@@InProc at 78C4F74714CFFBDF67419E24", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226410180, false, "366b3f40-c1e7-4449-aa6c-d19e7c5df1b1",
+			"@@@InProc at 6949AC8143AE7CEE32F5D980", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226411110, false, "d1ef24af-a1af-45c6-b425-e13b3a692f50",
+			"@@@InProc at 78C4F74714CFFBDF67419E24", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226411210, false, "0291e6ec-3c54-4729-bb70-24d0d2b03d32",
+			"@@@InProc at 6949AC8143AE7CEE32F5D980", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226412470, false, "bedefb20-ae0b-4a16-841a-fb42f2a1b326",
+			"@@@InProc at 1974753F160DF449D2CE65EA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226419950, false, "0668f746-eb44-43a7-b80c-624eaffa9d8f",
+			"@@@InProc at B784D8E60B7862D4860E985E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226420870, false, "cb189d45-d97d-447c-bf7e-986e8f4beb47",
+			"@@@InProc at 1974753F160DF449D2CE65EA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226420980, false, "d0322bc9-1542-4572-9ddb-015b7572af47",
+			"@@@InProc at B784D8E60B7862D4860E985E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226422320, false, "2a8effcd-7b5e-4fe0-96d0-9c60144c56c8",
+			"@@@InProc at 0DC004AE3C4D19D3E3BB5628", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226428970, false, "eb8822a5-8122-46cf-820a-e34687d795dc",
+			"@@@InProc at EF071410614209CB9B8298D7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226429970, false, "d19cc0e7-f433-442e-a0cd-cbd0461d9543",
+			"@@@InProc at 0DC004AE3C4D19D3E3BB5628", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226430050, false, "388626dc-2748-4779-9763-3bc43c1dd672",
+			"@@@InProc at EF071410614209CB9B8298D7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226431390, false, "be4c4cfe-1aa3-4e42-8f71-bc4ea31c9fee",
+			"@@@InProc at 501323429968BF52100A2579", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226438470, false, "e18ae7e6-6753-4f58-b02a-a7e427093b33",
+			"@@@InProc at 259B5571F640800CA27968AE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226439450, false, "1c22ab4e-d732-4d4d-b0fe-d861e4f2b52b",
+			"@@@InProc at 501323429968BF52100A2579", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226439550, false, "0046c2ac-ba5f-474d-8e5c-ac2b2c1c14b3",
+			"@@@InProc at 259B5571F640800CA27968AE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226441040, false, "b6a45bc4-e259-4143-9d08-8e61bb5c019f",
+			"@@@InProc at A31B795A8D3A9752C9281289", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226448780, false, "1d1c7be5-fb08-422b-ae72-694608f63f91",
+			"@@@InProc at A31B795A8D3A9752C9281289", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226449690, false, "683ee08f-c516-4cc5-af98-ccdf949fab99",
+			"@@@InProc at 9FC6052C18B9BEA0DC717953", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226450740, false, "aed2996a-2c13-41d8-b5c3-6139af90a2a1",
+			"@@@InProc at 9FC6052C18B9BEA0DC717953", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226451530, false, "46837846-5830-4ef7-9d96-9b7529a193be",
+			"@@@InProc at D8979E2BBF4DAE309B4D2AE2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226458670, false, "aeda9d96-c049-436d-8184-84bcc40cbb2a",
+			"@@@InProc at D8979E2BBF4DAE309B4D2AE2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226459490, false, "c04311da-3109-471a-b842-90f6df0b6729",
+			"@@@InProc at 1FA2C627D505ACAC8A1D9A83", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226459680, false, "958375fd-80bf-4d10-b156-a28f977da9da",
+			"@@@InProc at 1FA2C627D505ACAC8A1D9A83", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226461010, false, "1ad3d7cc-8e2b-4a68-8236-5b0763636f91",
+			"@@@InProc at 738C06EE6B4CBB1EAE64C760", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226467620, false, "26832254-c551-460c-b389-0ed98585a7dc",
+			"@@@InProc at 738C06EE6B4CBB1EAE64C760", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226468390, false, "95cb0094-e5d4-4c70-ae6b-5808d96bd743",
+			"@@@InProc at 6C40D27480517D91529F0229", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226469160, false, "0db64a55-4159-42aa-a715-23e2ace1061e",
+			"@@@InProc at 6C40D27480517D91529F0229", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226469940, false, "2c2e5cb2-22d8-4cfb-87f3-718a6fe8da51",
+			"@@@InProc at F7833D802FB4F4BF607FC84B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226476640, false, "456eabe1-a33c-4158-89e2-2f533462b756",
+			"@@@InProc at F7833D802FB4F4BF607FC84B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226477580, false, "8618d0c0-c2fd-45d5-a91c-3369726965fc",
+			"@@@InProc at 5E0347BC96B0B140FB5A993C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226477780, false, "d324d9d4-7140-4569-bbb0-ea508ebd6f74",
+			"@@@InProc at 5E0347BC96B0B140FB5A993C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226479010, false, "1b1bc25f-bf39-4459-baf3-cf90a402a940",
+			"@@@InProc at 8E1D5B48ADFB47DCE386D2F7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226485250, false, "a0a790fe-a203-4b86-84a4-c5fb02ef2de8",
+			"@@@InProc at 8E1D5B48ADFB47DCE386D2F7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226486030, false, "25a29a8e-c143-4dd8-90f7-998fd0f9e356",
+			"@@@InProc at BEF74839B391CFF6124FFD7A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226486870, false, "cbbf1c83-c3e7-4f07-b8b2-894b3f58af7c",
+			"@@@InProc at BEF74839B391CFF6124FFD7A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226487670, false, "97cf7ed2-fb09-4d57-8f65-37acb75b1688",
+			"@@@InProc at 70424110975708AE807B081E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226494220, false, "2e26f6a6-cc4b-4fb7-85bf-a67e8730655f",
+			"@@@InProc at 70424110975708AE807B081E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226495260, false, "83b74995-6553-4865-b3b2-335fb8ea7a7d",
+			"@@@InProc at 5D254DE25D9050A3FE49C205", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226495490, false, "9fadd86e-d5b6-4805-ac2f-beffef03d626",
+			"@@@InProc at 5D254DE25D9050A3FE49C205", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226497160, false, "839b8816-ccf1-43e0-a67c-5117eee65b1f",
+			"@@@InProc at 34D72D795055D04A81B679D2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226503660, false, "fb8f2aec-b22e-4a76-9f40-cc44cdf79bb4",
+			"@@@InProc at 34D72D795055D04A81B679D2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226504690, false, "226ddf13-5c48-42da-a223-7991fba59c8b",
+			"@@@InProc at E54DF7608E7A19265152D416", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226506070, false, "a64b6e8d-c15a-49cf-bfe6-58c630a5178a",
+			"@@@InProc at E54DF7608E7A19265152D416", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226506880, false, "254eda48-4e97-41d2-b57a-cf5f22bb19ed",
+			"@@@InProc at CBD9AC0F34376690AD62A3FA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226514650, false, "2b3f15e5-7add-4ce8-883d-be2935f90453",
+			"@@@InProc at C74AF57F87FB36DFD823EDEC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226514870, false, "4b2a8d0a-c98b-451f-8b1c-2038c62da094",
+			"@@@InProc at CBD9AC0F34376690AD62A3FA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226516520, false, "f282dcbd-8f95-4ea0-bee0-d395f9c9a3bb",
+			"@@@InProc at C74AF57F87FB36DFD823EDEC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226516830, false, "921aa048-be44-49c0-a405-05ab47179a4d",
+			"@@@InProc at C55C231D821B9CE44F068AC0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226524040, false, "5e586fa0-23f3-4615-a5d5-901c7a10b15b",
+			"@@@InProc at C55C231D821B9CE44F068AC0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226524820, false, "5d7c47ac-a36e-4f89-8920-0ca937352c6f",
+			"@@@InProc at 73568C1CAB1D4C3E0C6E791A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226525640, false, "6e4bfc0f-1a62-4446-8fac-d94577c983af",
+			"@@@InProc at 73568C1CAB1D4C3E0C6E791A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226526450, false, "9f39b719-2797-4f7a-a9ec-4c552a8080ff",
+			"@@@InProc at 3268A0E9565BBC124FC11420", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226533140, false, "52061300-ad31-44d8-ae24-2c1ba1f3dced",
+			"@@@InProc at 3268A0E9565BBC124FC11420", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226533920, false, "994558bf-52c8-453e-9c52-6b30f06292c4",
+			"@@@InProc at E156F86BD8C9431E3D6E669C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226534250, false, "3bddb66f-da23-4da7-8423-d16c76a9e9de",
+			"@@@InProc at E156F86BD8C9431E3D6E669C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226535240, false, "b33c92a0-7bf6-40aa-8411-a553b71c92dc",
+			"@@@InProc at 840046882E713C7D31EAAE49", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226541630, false, "36b7282f-1a0f-4854-913e-a6b088980cc0",
+			"@@@InProc at 840046882E713C7D31EAAE49", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226542470, false, "4bc4d942-24db-4678-933f-d40dcc1df9dc",
+			"@@@InProc at 40AFD7E0DAF5B223713E57DB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226543260, false, "bbe9a8d6-711e-4c6b-b4db-9568b01cb923",
+			"@@@InProc at 40AFD7E0DAF5B223713E57DB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226544240, false, "31ca4712-0242-4f13-a095-e2aad8cbc574",
+			"@@@InProc at 220150CF7F7A9E265B449C3E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226551370, false, "73914d2d-e06f-4ea2-8c03-d07b745b2319",
+			"@@@InProc at 220150CF7F7A9E265B449C3E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226552760, false, "5a95d374-21b9-4320-aee7-a88bc6249dac",
+			"@@@InProc at C37059A4D30DF62D81332902", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226559880, false, "7794ef47-2943-452b-9de8-a05abc4f20d5",
+			"@@@InProc at C37059A4D30DF62D81332902", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226560890, false, "a03099d5-3096-435c-ac8f-f1f1de5f2af7",
+			"@@@InProc at A2504076CADDE3D7C08C08BA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226561190, false, "fc9ca623-7b84-4599-80ca-a50f2f3789b1",
+			"@@@InProc at A2504076CADDE3D7C08C08BA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226562320, false, "1c880efb-2ede-45ea-a77f-3f0b850ab9d4",
+			"@@@InProc at EBC0F8E79C638E5F6F1624BD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226569400, false, "b423e2b7-2f48-4807-a64d-39879ed7015a",
+			"@@@InProc at 32D733F8A0D86FC20DE0FBFF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226570420, false, "4d16d5cf-2c95-4d73-bb17-d6b655aad8fb",
+			"@@@InProc at EBC0F8E79C638E5F6F1624BD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226570500, false, "b5c11a67-3c00-4416-a0ad-888340335565",
+			"@@@InProc at 32D733F8A0D86FC20DE0FBFF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226571900, false, "c4bbf9f3-4d05-4798-86b6-3845c55e5b2b",
+			"@@@InProc at F94E1FA4AE355AB76762CE97", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226581220, false, "fc05a54d-2c6c-4272-9b54-a97903615243",
+			"@@@InProc at 86402045BCDA56F59954072B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226581350, false, "32bd836d-79ea-45c7-9a19-c16db75a74fe",
+			"@@@InProc at F94E1FA4AE355AB76762CE97", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226582980, false, "d75d2697-324a-406a-9694-f9c22f3c46e8",
+			"@@@InProc at 86402045BCDA56F59954072B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226583080, false, "0fa88455-6be0-44c6-b6dd-ab054b5f92c3",
+			"@@@InProc at FBFD4484FCBCA4685245DE9B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226592700, false, "159ddf6d-a581-4205-85ec-3dc9b2a658de",
+			"@@@InProc at FBFD4484FCBCA4685245DE9B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226594090, false, "c397301c-0924-4244-ac70-5da718760334",
+			"@@@InProc at 7C20255FC7A9387BCD6472F0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226595160, false, "dd04d646-0c13-4546-bf13-848f72b33517",
+			"@@@InProc at 7C20255FC7A9387BCD6472F0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226596290, false, "9500d75b-89d4-4de2-8b5b-4411755a6e5d",
+			"@@@InProc at 5F8B76F8AA2104805BF26ACD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226603010, false, "c9b5e124-2116-46d5-9995-3f2adaa6ddd1",
+			"@@@InProc at 5F8B76F8AA2104805BF26ACD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226603920, false, "e41718ad-0ddd-4f90-899e-f7a83930fa80",
+			"@@@InProc at 1BB99FBD6224A9CFD87F08EF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226606160, false, "6395aed0-5b57-42c1-bc4f-0736c23eb2c8",
+			"@@@InProc at 1BB99FBD6224A9CFD87F08EF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226607390, false, "1145cf1c-2b32-4e57-9ff7-df3b3fe36ac1",
+			"@@@InProc at C43B07F8679C2ACC1DF76E23", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226613180, false, "f0133541-9782-45a4-a915-230e422e4de7",
+			"@@@InProc at C43B07F8679C2ACC1DF76E23", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226614330, false, "a84ed089-3469-44a0-b2a3-186abaaefecf",
+			"@@@InProc at 8506216EA04E1AFB3A2565EB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226617740, false, "414a0d07-c780-4a32-8a40-6a0bfc0c0f5d",
+			"@@@InProc at 8506216EA04E1AFB3A2565EB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226618840, false, "d90e6f6e-1516-4adf-b86a-25fb583503ae",
+			"@@@InProc at 71F917D9C2B9C25ACC45D9A0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226623140, false, "fd263848-4823-4ec1-82fe-07aac3dabc39",
+			"@@@InProc at 71F917D9C2B9C25ACC45D9A0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226623930, false, "8ac4bbfc-d608-45d1-b60d-ede35f83d09f",
+			"@@@InProc at 4A354AD08602A67E6D127865", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226626930, false, "e65115a7-7177-41f6-a528-b951275a58e0",
+			"@@@InProc at 4A354AD08602A67E6D127865", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226628030, false, "3bfaa642-f63c-462b-94ea-c9c31a80a742",
+			"@@@InProc at 4300C5035CB7944D2EC67EA8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226633290, false, "8ca03025-df3d-482c-8b7e-216a2142165a",
+			"@@@InProc at 4300C5035CB7944D2EC67EA8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226634210, false, "2ca14eaa-94f9-49f0-b380-736857fae01b",
+			"@@@InProc at 2064338C0EDA3D06B4113394", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226636680, false, "54835146-c878-4040-85a9-1dbbed8ed4e1",
+			"@@@InProc at 2064338C0EDA3D06B4113394", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226637660, false, "ebd28a40-f46c-42a1-a8cb-20305b944e65",
+			"@@@InProc at 21C0DBB03BB591A4B39FF34C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226641690, false, "a07ec7ec-50d4-4134-97a5-3933d5a29596",
+			"@@@InProc at 21C0DBB03BB591A4B39FF34C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226642470, false, "770e0221-04d4-4d5d-a4a1-ce6774d243a8",
+			"@@@InProc at 34A5E68260A729A6A24A48D2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226644990, false, "a0d30082-f37b-4a55-87e4-1f136e82f0b9",
+			"@@@InProc at 34A5E68260A729A6A24A48D2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226646130, false, "578b143d-6db0-4476-ac23-1dec8294de9b",
+			"@@@InProc at 770A55EE62E0AABF49CD7E5D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226653550, false, "2b4fe74a-3d82-4415-87aa-49f3a2921950",
+			"@@@InProc at 4C21CBAAC6B5418A1E8BA49D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226654620, false, "a9f8e112-7a10-4586-a62d-b8ae897cca1e",
+			"@@@InProc at 770A55EE62E0AABF49CD7E5D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226654690, false, "33ba2d68-ad25-4826-a912-423a182d3687",
+			"@@@InProc at 4C21CBAAC6B5418A1E8BA49D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226656190, false, "02fac3d6-fca3-4623-baf3-0277af0d741f",
+			"@@@InProc at 98A92D289FE005C6D28A8642", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226663350, false, "c3f25d51-75e4-485a-8f64-aa87d0ee223d",
+			"@@@InProc at 98A92D289FE005C6D28A8642", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226664420, false, "8ee3addc-0aa0-4979-ab87-7398a948949b",
+			"@@@InProc at 52905FC9FC78DAC21D0252A8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226666150, false, "62d717e2-61a8-4105-9e07-2c2697050ef4",
+			"@@@InProc at 52905FC9FC78DAC21D0252A8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226667030, false, "d45b038c-318a-4a15-b899-54d43cec1e5e",
+			"@@@InProc at 593FBD828A58BEE61117477F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226672810, false, "f7a2d0d2-093c-4323-9be3-1b6ff1f8c1ee",
+			"@@@InProc at 593FBD828A58BEE61117477F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226674010, false, "b426963b-0358-4ce7-8cb1-440cf73cda83",
+			"@@@InProc at 34E4ACCCA70C4BC6DC9D0BDE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226675610, false, "3eeee0a7-a6d6-43d8-b614-ef3d79f59573",
+			"@@@InProc at 34E4ACCCA70C4BC6DC9D0BDE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226676760, false, "290a9100-d2d6-43f8-8904-31f0414b5192",
+			"@@@InProc at 8BB098C1C5B05B7173F9D34E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226703920, false, "25b941da-eae6-42e7-b73a-4ed4c7578f30",
+			"@@@InProc at 8BB098C1C5B05B7173F9D34E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226704920, false, "062f0608-8dc4-418b-96a4-f9dae6c08388",
+			"@@@InProc at 3CC0135F599C1535BEC4CDAF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226707330, false, "24d3d52e-d38a-4681-8ff0-7d9c71dd7bb8",
+			"@@@InProc at 3CC0135F599C1535BEC4CDAF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226708270, false, "dc521f59-a41c-46cf-85f7-a417b7428d31",
+			"@@@InProc at 2E7A0DC06A1816469CC15AEF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226713040, false, "8e83287b-89df-49b8-9596-e489688529d7",
+			"@@@InProc at 2E7A0DC06A1816469CC15AEF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226714020, false, "22253bfd-cb8e-4130-9104-d402b6d95862",
+			"@@@InProc at 2422466FC023F0F5C9AF5FC1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226716370, false, "58d3222e-1adf-40c8-b45e-88be3d218441",
+			"@@@InProc at 2422466FC023F0F5C9AF5FC1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226717410, false, "51fc2d2f-8e8f-4c4a-9be3-2f94e49043ab",
+			"@@@InProc at F25CF36671A4E6ABB02FA2EC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226721980, false, "e11d9fe3-cacd-49e9-9549-97b1e88eccb0",
+			"@@@InProc at F25CF36671A4E6ABB02FA2EC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226722780, false, "6dcc7c63-ad8b-4c66-b107-13f57409ca03",
+			"@@@InProc at 2622B97F89E473344CE47F7B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226726570, false, "943d521c-f1c6-4180-ab30-7467584dcf04",
+			"@@@InProc at 2622B97F89E473344CE47F7B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226727620, false, "fe67977b-43c7-4216-a8aa-6ca0c10be9a1",
+			"@@@InProc at 5FCCA985FEB462124FA06CC0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226730540, false, "d3c6905c-1f27-41ad-a879-0d6b7624e914",
+			"@@@InProc at 5FCCA985FEB462124FA06CC0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226731520, false, "4d8cf9b0-7685-4e4e-9fd5-d78e9f66625e",
+			"@@@InProc at 105D152C482FA7F07DC219EC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226737030, false, "08e24663-6c9a-46f6-b0a5-34c5ef3c7b11",
+			"@@@InProc at 105D152C482FA7F07DC219EC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226737850, false, "aa4d7abf-feed-4f59-91c2-eefd01a1fc87",
+			"@@@InProc at 118C56A8F9247A93DF6C8952", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226740250, false, "21436a5e-2808-4342-a6e9-514ff7046950",
+			"@@@InProc at 118C56A8F9247A93DF6C8952", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226741350, false, "bd08f074-db42-4061-a5bf-1d9b880eb9fe",
+			"@@@InProc at E0D0E6457BB97778E28CA8AB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226745400, false, "90d20836-0888-45c4-ae27-a6615a65d610",
+			"@@@InProc at E0D0E6457BB97778E28CA8AB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226746410, false, "5e197f35-1d83-45a8-aac5-23e36a18f79f",
+			"@@@InProc at 48301A7C407050071EC9B24F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226749670, false, "94076aea-b7ac-4bd0-803c-4e0ae8c32086",
+			"@@@InProc at 48301A7C407050071EC9B24F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226750610, false, "158bd763-12d6-420b-8497-5b2b22dc8084",
+			"@@@InProc at 784870ED30B3D5AFDB8912A9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226755480, false, "f68e2cad-0a1c-457c-a795-1baf2734fbac",
+			"@@@InProc at 784870ED30B3D5AFDB8912A9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226756460, false, "17424d2f-6949-4ae4-8ccd-268fc2dac806",
+			"@@@InProc at 735FDC76808F155265551D25", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226758830, false, "818ffe1c-1cae-4bc3-84a7-9be6c7b23c4f",
+			"@@@InProc at 735FDC76808F155265551D25", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226759810, false, "6cc49823-6cb6-4327-9634-6b903cb4666e",
+			"@@@InProc at E1F85A125D2ED46A24267962", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226765040, false, "5448809f-5678-472e-a3e9-18645faf6f94",
+			"@@@InProc at E1F85A125D2ED46A24267962", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226766250, false, "58503f86-3b75-488a-9b65-50340b8a65a7",
+			"@@@InProc at 2101194F368D16BDCF567C3E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226770220, false, "27be37de-cef4-492a-8834-308e2bd11cc9",
+			"@@@InProc at 2101194F368D16BDCF567C3E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226771140, false, "7ad1cddb-6bfc-49a6-901f-a0dcaf264cd1",
+			"@@@InProc at 55472A9A9656738D1C5906E4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226774900, false, "81df581c-0e7b-47ae-b455-ef742f9866c1",
+			"@@@InProc at 55472A9A9656738D1C5906E4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226775750, false, "d79e8ed9-ed23-4477-86a2-3dcc81d5d177",
+			"@@@InProc at 1D7C02DB8F2C438B4476C6B0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226779260, false, "46ee8c2a-f1fd-4492-bd37-9ed81a579e7a",
+			"@@@InProc at 1D7C02DB8F2C438B4476C6B0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226780190, false, "58956695-ca7a-4653-81a7-cc404c19d0a6",
+			"@@@InProc at F2025919E6BBCD16F8097539", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226784080, false, "9dc2a71e-485a-4c6d-889d-58db3b798f7f",
+			"@@@InProc at F2025919E6BBCD16F8097539", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226784940, false, "58acb42d-2032-4ec3-a61c-e60621ec2082",
+			"@@@InProc at EC07DE00897E75EACDD5C4E2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226790300, false, "4af88519-36fe-44a3-98aa-7def48263c0b",
+			"@@@InProc at EC07DE00897E75EACDD5C4E2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226792630, false, "3227df69-0284-45d6-9d55-9140bd241c04",
+			"@@@InProc at 07BC3F8A49A6E9FD7E511260", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226794180, false, "0ab0c6f8-3ca5-4ae7-9e6f-5e15b593adc6",
+			"@@@InProc at 07BC3F8A49A6E9FD7E511260", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226794990, false, "73d06a13-9104-4491-beb4-abdc514d4075",
+			"@@@InProc at 4F0400C89178F8DC8352C618", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226801670, false, "acf44da3-fa41-4864-b456-a8e9a3742d22",
+			"@@@InProc at 4F0400C89178F8DC8352C618", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226802510, false, "635c3d6d-a8e7-4740-9c5a-26635ce99cea",
+			"@@@InProc at 6DEFB190F04BD4E917A67C77", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226803330, false, "a5883f99-754e-4508-b9f7-b028a1ad3984",
+			"@@@InProc at 6DEFB190F04BD4E917A67C77", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226804160, false, "18715892-02b2-4f93-b9f8-6ae0e9b03b55",
+			"@@@InProc at D6D400C61DA7105CA21A7FF4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226811730, false, "59db9922-de7c-499a-8921-93325b334cd8",
+			"@@@InProc at 6235899D0115F6BFDF3A9FA6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226812000, false, "927ae569-2e7b-4eff-9efd-4721d01ade71",
+			"@@@InProc at D6D400C61DA7105CA21A7FF4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226813840, false, "fd102daa-3c19-4da4-8ea6-dde86983bd10",
+			"@@@InProc at 6235899D0115F6BFDF3A9FA6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226813930, false, "08b49363-0e25-44ba-afe2-b296b15dc935",
+			"@@@InProc at FC57AF830BA85080D78FCBCA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226822720, false, "0a0f9ae4-d39b-46ca-ae51-b6fa1db454ca",
+			"@@@InProc at FC57AF830BA85080D78FCBCA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226823550, false, "e73ccb99-ff2f-4d8f-ad37-3321b53f403d",
+			"@@@InProc at 1998158B81BD6DB0E66E2388", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226824470, false, "286860cb-6033-40b0-b670-1645f388df2d",
+			"@@@InProc at 1998158B81BD6DB0E66E2388", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226825660, false, "ffee48ce-9570-4a70-8350-176f169fffb4",
+			"@@@InProc at 6E618D01814E0E20114C06A0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226831420, false, "4d645a32-875a-4543-b26a-3be521387e7b",
+			"@@@InProc at 6E618D01814E0E20114C06A0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226832230, false, "7bf19823-684f-4fb0-b9fe-b8ab0d3e8eab",
+			"@@@InProc at DD1247DC6472B858FD892A72", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226834620, false, "c20c7fdb-88dc-40b5-aed1-003487fba2ce",
+			"@@@InProc at DD1247DC6472B858FD892A72", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226835520, false, "a1093c21-f91f-4ca1-9701-eb365e1d7dfb",
+			"@@@InProc at D6F1B8B4D56BE1795F842544", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226840720, false, "387213c6-2466-44b9-ad91-309addc9daa1",
+			"@@@InProc at D6F1B8B4D56BE1795F842544", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226841890, false, "3e8f3b84-328a-44d3-841c-3f192ad73a7d",
+			"@@@InProc at BB552C7121FCCCE83868B454", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226846150, false, "7fe2137a-b5a9-485f-bb63-ae823a215b92",
+			"@@@InProc at BB552C7121FCCCE83868B454", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226847270, false, "c23fb82e-c402-4b31-b7d2-a41485812424",
+			"@@@InProc at 517EEC12AFD339943A0C821C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226852430, false, "a5e66609-4334-43a9-92ed-685d3d039048",
+			"@@@InProc at 517EEC12AFD339943A0C821C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226853360, false, "12dfaf6b-c744-4e80-963b-256340f3b82f",
+			"@@@InProc at B584C1CC5DC059A3E98D6D38", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226855990, false, "32733635-74c8-46d5-8af6-bedbb370eefc",
+			"@@@InProc at B584C1CC5DC059A3E98D6D38", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226856840, false, "c675092f-c882-408b-a38a-a5238b9a0e9d",
+			"@@@InProc at F8A1CA7E233946C64901416F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226861700, false, "a15703d6-0182-4504-9575-b85ff62c7982",
+			"@@@InProc at F8A1CA7E233946C64901416F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226862900, false, "0308df3b-0c25-4240-97c6-9487c0e32719",
+			"@@@InProc at 32B88A83E04CBE3BDBAD9C26", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226866480, false, "54debf71-8a78-43f4-84b4-08bd41643224",
+			"@@@InProc at 32B88A83E04CBE3BDBAD9C26", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226867540, false, "f0d2b7ce-1a78-46d4-ad05-b9a90403bd0d",
+			"@@@InProc at 16AF5CA97D00715C1E2E43EF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226871690, false, "ab677cdf-ac7a-481a-a711-903e22bc68a1",
+			"@@@InProc at 16AF5CA97D00715C1E2E43EF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226872490, false, "3ffe2cbf-d59e-48de-8030-be27660456a7",
+			"@@@InProc at 948FD959E486648F06B0DEAA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226879780, false, "c61091d9-e324-43f9-a60f-6f57d1ac5fe2",
+			"@@@InProc at 948FD959E486648F06B0DEAA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226881020, false, "36bd361c-ec52-43b2-bd47-528e82cad28f",
+			"@@@InProc at 57F5F868C868838BFF992714", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226882190, false, "28e2ba82-932b-4099-bb79-0efe8e0ebbdf",
+			"@@@InProc at 57F5F868C868838BFF992714", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226883340, false, "a76a3592-17a4-469b-8be6-63726a536194",
+			"@@@InProc at F9856170CB1E0695E7B8A4F7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226889510, false, "9ff471df-e73a-46e3-a408-869aef1d31a3",
+			"@@@InProc at F9856170CB1E0695E7B8A4F7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226890580, false, "d04bba14-f59f-4af7-90ee-d9d918c7993b",
+			"@@@InProc at 360BA926EB3AD112BE546B93", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226892230, false, "526a66aa-6a6b-4f3c-a35f-b24d16054b3d",
+			"@@@InProc at 360BA926EB3AD112BE546B93", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226893220, false, "84ee90fb-a9ba-4f40-b02d-d1766a294c40",
+			"@@@InProc at A67520602DBEED650301B1D7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226899160, false, "c63dfe7c-aa3d-432e-86e7-8b51c0c2b186",
+			"@@@InProc at A67520602DBEED650301B1D7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226900160, false, "f0d852f5-18a9-46fc-97ff-a8fe3bae576d",
+			"@@@InProc at F3D770DF5DDCE646EC63B255", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226901740, false, "c38cd398-f196-440b-b178-236c3b8e69fa",
+			"@@@InProc at F3D770DF5DDCE646EC63B255", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226902850, false, "1bbca6f2-69ba-4d77-a3fe-d043a1b015a3",
+			"@@@InProc at 11B0A61029E9FFC931AA5E27", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226908430, false, "9a0a4850-9d6a-476c-a064-54e8268942e6",
+			"@@@InProc at 11B0A61029E9FFC931AA5E27", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226909410, false, "24e27a21-25d2-4c3c-ad42-fc9235e1c9c0",
+			"@@@InProc at A84F017403610F9F15BCDE17", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226911760, false, "5fda5bee-368f-4ba5-8cb2-efca6f1c8a57",
+			"@@@InProc at A84F017403610F9F15BCDE17", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226912640, false, "251ce1e8-9cdc-4177-a33a-9f2d0a026daa",
+			"@@@InProc at 647C80945138D7ED7E398F21", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226917220, false, "6d53e89e-7c1f-431e-af10-a3f9a460e3a8",
+			"@@@InProc at 647C80945138D7ED7E398F21", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226918170, false, "39e67041-fa4b-4f21-bf33-df58916d6ccf",
+			"@@@InProc at 748595C81CC2BA7182A0279F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226920850, false, "9f15492c-52c8-4f15-92cc-4006231f0d9b",
+			"@@@InProc at 748595C81CC2BA7182A0279F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226922050, false, "f03222ed-6fc4-4186-9dbf-14faa522f3f3",
+			"@@@InProc at 9C201185506ABF0705664D66", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226926270, false, "028ed6e2-cd67-4c55-918e-fdae0ac8c231",
+			"@@@InProc at 9C201185506ABF0705664D66", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226927040, false, "40699fa4-a733-4bb5-862e-29fce1d21c64",
+			"@@@InProc at E1D11C487F3A337BF15288AF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226930080, false, "bd87e5ef-049e-45f9-8762-4f876e25e520",
+			"@@@InProc at E1D11C487F3A337BF15288AF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226930870, false, "c3c471e1-7132-4cc2-950e-bd4e617ce431",
+			"@@@InProc at 1A2C007C07C975B2B498197E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226935760, false, "680afba7-df4f-40a0-9ff0-af5cc83de9be",
+			"@@@InProc at 1A2C007C07C975B2B498197E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226936560, false, "8b7d5365-e8bb-46d5-b297-ae65ad15f44f",
+			"@@@InProc at 34A260E4E86E6DB5DA1EC574", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226938820, false, "1ca78f3c-51e4-4243-acd5-d392759f7ded",
+			"@@@InProc at 34A260E4E86E6DB5DA1EC574", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226939600, false, "e6fee72d-5a0b-41f0-ac62-a02c4807ba93",
+			"@@@InProc at 7B5D9B4DFE80A055AC60E7B3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226944630, false, "043a2f93-2d6e-40ba-a84e-8dbb46da90db",
+			"@@@InProc at 7B5D9B4DFE80A055AC60E7B3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226945890, false, "fcea2250-4829-4df1-94ec-a00e373da065",
+			"@@@InProc at E03109F9C6A6DB06EB7AC31D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226947580, false, "192e46cc-c88a-45de-9418-ca8b7f6e8dc4",
+			"@@@InProc at E03109F9C6A6DB06EB7AC31D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226948330, false, "69c944ee-b59c-403e-9c27-bce8e9f80d0b",
+			"@@@InProc at 3DFF51B552589358E59C10A4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226956060, false, "3476f92a-a359-4072-8965-d0ff956ca3ec",
+			"@@@InProc at 3DFF51B552589358E59C10A4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226956800, false, "984d41ff-e6b3-478d-a6d8-5604fb10ac95",
+			"@@@InProc at 428FB416E9375632D127E60E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226957030, false, "c445e307-5e57-4f96-92f4-e0d0ff9ef14e",
+			"@@@InProc at 428FB416E9375632D127E60E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226958460, false, "fcfbdc90-07f2-4cb4-8632-1f58e97fecd5",
+			"@@@InProc at 59CC87E0E57BACFEB14FE410", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226965520, false, "861eca2e-39c6-49a0-a843-dc364ff5f424",
+			"@@@InProc at 59CC87E0E57BACFEB14FE410", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226966650, false, "69b1ccc3-09cd-4ff8-a07e-d0a72cce3b42",
+			"@@@InProc at 33644F4D42809BE9E6CD31A5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226967610, false, "c59705b4-7be1-432f-ad1c-02ada949922a",
+			"@@@InProc at 33644F4D42809BE9E6CD31A5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226968480, false, "4e6b4cab-1382-4df6-bc18-1ec893976bcc",
+			"@@@InProc at 0C9E60BFFD867CC2468157AB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226975050, false, "128129ac-3fd5-4484-b05f-669f7cfe3e3b",
+			"@@@InProc at 0C9E60BFFD867CC2468157AB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226975840, false, "588c1c23-4d5a-4deb-ac6b-68dba1507b2e",
+			"@@@InProc at A77A347E73E8A59B7ED804C8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226985950, false, "15811f19-50ec-4381-ac86-b474fd11a928",
+			"@@@InProc at 04CCACE4997D4B0860D5F1C3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226987350, false, "3bc9491e-7e22-47f2-8b64-0832e909c0c3",
+			"@@@InProc at A77A347E73E8A59B7ED804C8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226987450, false, "f56a021a-71d4-4341-a7fd-57582f968ce8",
+			"@@@InProc at 04CCACE4997D4B0860D5F1C3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226989680, false, "69b71750-646c-4ce9-b016-5aa47bdd6e88",
+			"@@@InProc at A0B25FA847F94939B41BF460", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226997100, false, "87d2518d-8e6c-4290-8089-ad268c698c86",
+			"@@@InProc at A0B25FA847F94939B41BF460", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226998140, false, "ffbcbdcd-c8e2-483e-990f-6131f58d613b",
+			"@@@InProc at 0492F4FA2E797D63430DCAB9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878226999870, false, "49bccab2-365e-425f-82bf-b9097e3769ac",
+			"@@@InProc at 0492F4FA2E797D63430DCAB9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227000830, false, "ebb3b875-5f12-409e-9895-9bc6d41a1f6b",
+			"@@@InProc at C16256045D3E95A65BCA2AE4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227005850, false, "c4c467e8-a177-4fc1-9647-82457c8fa651",
+			"@@@InProc at C16256045D3E95A65BCA2AE4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227006720, false, "7b2ae686-23f0-4c36-921f-1c1ec10a06ee",
+			"@@@InProc at E01670B1FCF01A24C7FD5928", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227009130, false, "a17b548a-38bc-4b0e-87c1-69576746d4ce",
+			"@@@InProc at E01670B1FCF01A24C7FD5928", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227010180, false, "899759fd-7e90-45cd-a39f-e3fca14ecc54",
+			"@@@InProc at C06BA1A27EB2C442451A7BE5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227014070, false, "03a4b0a4-1426-4485-8f64-33a5404d6df8",
+			"@@@InProc at C06BA1A27EB2C442451A7BE5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227014980, false, "deaba7c0-121d-476e-8a4c-3772f1bc7b46",
+			"@@@InProc at 37B593EC970FD6618D1DB666", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227019030, false, "5ebdbe76-810a-440d-922e-8e5b839d71b3",
+			"@@@InProc at 37B593EC970FD6618D1DB666", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227019880, false, "60f64bf5-5877-461b-96c9-f372ff54d776",
+			"@@@InProc at 794D43E7EA99649990D45B21", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227029200, false, "e2974875-9b4b-4bd9-b059-15174502e5ca",
+			"@@@InProc at 933FD224ABF39A51E9867082", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227030830, false, "b3d9bcc7-656b-402e-bd9f-4b8c0d3dc4d1",
+			"@@@InProc at 794D43E7EA99649990D45B21", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227030930, false, "8d01aab3-4899-4f04-953d-6aac5bdf376f",
+			"@@@InProc at 933FD224ABF39A51E9867082", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227033180, false, "538a8605-40f6-4e74-bb3c-a6ee50232f94",
+			"@@@InProc at 98498C796478F6466318123B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227040300, false, "152e9701-82c7-4a1f-ae49-e7cea8727473",
+			"@@@InProc at 98498C796478F6466318123B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227041330, false, "66be6545-7f32-41f1-b60a-56c6377a705f",
+			"@@@InProc at 608EECCE793DC6FBE3AE8F24", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227042730, false, "36235176-ad5f-4349-9468-99aa8e8e1741",
+			"@@@InProc at 608EECCE793DC6FBE3AE8F24", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227043550, false, "3cb79838-d15e-4271-84a2-3c9a6269f7a3",
+			"@@@InProc at 61CC2D854ACE381C9C8F9EE1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227051160, false, "4d6dd505-a086-4e2c-9c57-d6098960fd70",
+			"@@@InProc at 61CC2D854ACE381C9C8F9EE1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227052560, false, "64fe7773-84c8-4b5c-924e-dc4313c1cb95",
+			"@@@InProc at F0777048FE5B7F2F0ED9BCD7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227053730, false, "7926afa8-c5b4-4fe3-b1c9-f32ac3c5dc92",
+			"@@@InProc at F0777048FE5B7F2F0ED9BCD7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227054830, false, "8b4d679d-a202-4515-8dee-19a3ea18813e",
+			"@@@InProc at 5D9CF9536EBB910423D893D4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227062120, false, "2f4dbc6e-fd96-43b0-8599-865e58dcc903",
+			"@@@InProc at 5D9CF9536EBB910423D893D4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227063300, false, "4b9e09b7-1ca8-407a-b79d-36471b83f33b",
+			"@@@InProc at 9003E52AB0E0DAB69389E7C8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227066130, false, "8b945c0e-5cdc-4aa8-b792-d7cc25c83e90",
+			"@@@InProc at 9003E52AB0E0DAB69389E7C8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227067550, false, "8cefdb7d-34a8-40a9-ae85-d3b0f5d6b6b5",
+			"@@@InProc at EB793C540B78503EFDFE3490", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227072510, false, "9c564d0b-35e6-4e7c-8b1d-99504f743a85",
+			"@@@InProc at EB793C540B78503EFDFE3490", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227073300, false, "0d18bdc7-a2c9-410a-b393-6252a5b822fc",
+			"@@@InProc at D7B1DB310B4EAD88F1D56C87", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227075790, false, "6e7c957e-dcbe-4aaa-b19c-814c4949cc98",
+			"@@@InProc at D7B1DB310B4EAD88F1D56C87", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227076580, false, "b288f290-c41a-4e68-b88d-3d372253fd7b",
+			"@@@InProc at BF619D3F1A94CEF9EA0A9A36", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227081990, false, "e9a18aec-2c8a-4a64-a763-7edf86e58d5f",
+			"@@@InProc at BF619D3F1A94CEF9EA0A9A36", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227082790, false, "05e259ef-c694-431f-be1a-5fca0852dc9b",
+			"@@@InProc at 966920A83C50BF4D7E0613C8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227086330, false, "cf341d0f-df5d-4704-83cf-50de9340f3ec",
+			"@@@InProc at 966920A83C50BF4D7E0613C8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227087120, false, "0bef8313-a4cc-4d76-9df1-b2e5bb4e43c2",
+			"@@@InProc at 454F4BB6C4AD47F9B479384A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227091260, false, "95200fdd-72f5-4d7a-becc-1ccba7cccc27",
+			"@@@InProc at 454F4BB6C4AD47F9B479384A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227092370, false, "bde1b50e-55db-432a-8837-d2da40aebddf",
+			"@@@InProc at E49941B5B6D75AB61420758B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227097330, false, "7a6736e9-0072-4b31-9084-7c3373bbe282",
+			"@@@InProc at E49941B5B6D75AB61420758B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227098140, false, "0f42b6c2-4249-42f9-bf67-85897d497a6d",
+			"@@@InProc at FFCBCA8BA79D55DD66DEDD89", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227101330, false, "f522693b-faf0-452b-9f9b-ed71ef5d197e",
+			"@@@InProc at FFCBCA8BA79D55DD66DEDD89", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227102180, false, "1d4094e7-bead-4abc-865b-9f22cb67c310",
+			"@@@InProc at A45424A93EA01E7843BDEB45", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227105770, false, "f16df662-0bc6-46bd-abda-6c5858f438c5",
+			"@@@InProc at A45424A93EA01E7843BDEB45", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227106670, false, "22eb7bf7-b260-473d-9ecf-c2ff6eb80712",
+			"@@@InProc at 374EE7209F879FCA2395EBE4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227109700, false, "ec79f3cd-ea25-4fcc-8321-ab9290d40b4e",
+			"@@@InProc at 374EE7209F879FCA2395EBE4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227110720, false, "f6a66f62-4bbc-418f-a4b6-b6854e9b872c",
+			"@@@InProc at 938051F041764DDB375F2E65", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227115240, false, "4dbaad31-8503-4e09-97cd-8cd515698ecf",
+			"@@@InProc at 938051F041764DDB375F2E65", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227116050, false, "73ec3de5-2c7a-410d-a221-16a08d09ea95",
+			"@@@InProc at D1E81495A4D19D23FBA92195", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227118210, false, "7f532341-6310-4b8b-9568-5ea23d5c993e",
+			"@@@InProc at D1E81495A4D19D23FBA92195", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227119020, false, "faf65ae3-1ed4-42e4-bbf5-7fb0feefaa98",
+			"@@@InProc at EFB83D654F49B2EAF32EE63E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227124780, false, "c8af94f4-eaaa-412b-8c88-e045c301e0f5",
+			"@@@InProc at EFB83D654F49B2EAF32EE63E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227125560, false, "6f8eb9d6-a73d-4b8b-a2c7-d54ff463ec3a",
+			"@@@InProc at 52E03F1247189CE5499FCC51", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227127270, false, "f01e50d9-eef3-490f-8f1c-6561f4ada37e",
+			"@@@InProc at 52E03F1247189CE5499FCC51", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227128060, false, "9930bb43-32b8-433e-a463-91abad43d976",
+			"@@@InProc at FE49B48616E22FFD30D0EB95", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227134090, false, "6ac235b0-1ac4-47df-92f7-600bc0f9309c",
+			"@@@InProc at FE49B48616E22FFD30D0EB95", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227135060, false, "9f3d9976-5e64-4f37-bdd2-25c2cc2e2e86",
+			"@@@InProc at 3FB75E87B1C3D21A087EBD9F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227159680, false, "2ec5500e-e1c0-4cbd-8701-36725e1127b6",
+			"@@@InProc at 3FB75E87B1C3D21A087EBD9F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227160790, false, "73f070b1-6e0b-41a1-9d1a-71516e3f6799",
+			"@@@InProc at F3F71991199F001FCB954A8E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227167190, false, "3585c69c-d514-4d2e-82a3-95428b2593c9",
+			"@@@InProc at F3F71991199F001FCB954A8E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227168380, false, "ac9614f2-da4c-4eca-8e13-9a757f2a2636",
+			"@@@InProc at E5A7B353F160227C403E9A2F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227169740, false, "8bcabdfe-3c82-49a9-b3fd-43e999be9c74",
+			"@@@InProc at E5A7B353F160227C403E9A2F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227170510, false, "1a449e52-d37f-4d9c-8ab4-a216425deece",
+			"@@@InProc at 6221F302E9890D8BA5438C71", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227178370, false, "b65b94fb-6009-4e29-94df-1c10ba7d60bc",
+			"@@@InProc at 6221F302E9890D8BA5438C71", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227179320, false, "e6ee48b2-3533-4e2a-8393-e29cb1b6cc0b",
+			"@@@InProc at 74F41FEDA0AF1EB76AE9622E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227179600, false, "7c47171c-1b98-4d77-ab7f-f58b320a3fbf",
+			"@@@InProc at 74F41FEDA0AF1EB76AE9622E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227181430, false, "c0a5dbd0-d571-4eae-8898-31c66d859874",
+			"@@@InProc at 17FAB9FA17E0C4232E5C9C88", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227188310, false, "7014acee-aa78-490a-bfc0-2f9c005105a9",
+			"@@@InProc at 17FAB9FA17E0C4232E5C9C88", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227189990, false, "0e604377-dff3-4cb0-9fe5-7e5736e5505b",
+			"@@@InProc at E22EF39A56708876ED72A9F8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227192310, false, "c2c483a7-d305-40ae-b1b7-3ae046f59a19",
+			"@@@InProc at E22EF39A56708876ED72A9F8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227193520, false, "4ed5ce6b-c767-40a1-bf0f-b4f591158254",
+			"@@@InProc at 629DD282E04473E240A57399", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227199380, false, "f1adcf95-ce9b-48cc-afd1-d7d566b9745d",
+			"@@@InProc at 629DD282E04473E240A57399", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227200260, false, "3663a74f-2fa4-452f-90b0-d236ffca8f71",
+			"@@@InProc at 8C0E85E778768F6D316120D8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227201840, false, "470dcd2d-e3cc-4187-a2c6-97af5bfa5180",
+			"@@@InProc at 8C0E85E778768F6D316120D8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227202630, false, "82fc1e64-8034-41b8-a9d9-80b3737ff382",
+			"@@@InProc at 614B769B6026AC3E95F994D5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227208980, false, "1721a9ef-1ea1-42e1-9a52-f765b4c4cc72",
+			"@@@InProc at 614B769B6026AC3E95F994D5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227209780, false, "b7b84ce4-7da2-431c-b461-bdc0888b9c8b",
+			"@@@InProc at E9FAFC9A27A267291C044C9B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227210550, false, "4c7c5370-d37d-49ca-af38-1c40a1f1afe2",
+			"@@@InProc at E9FAFC9A27A267291C044C9B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227211330, false, "8bf90f00-99c7-4cfd-acb7-ed2f6ea3716c",
+			"@@@InProc at 6FB660C7595252C7A11CF454", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227217740, false, "25cc3d07-6341-4c81-a734-13b0a17d69a0",
+			"@@@InProc at 6FB660C7595252C7A11CF454", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227218520, false, "1a20f430-f5d6-4757-b0f0-381722bfe424",
+			"@@@InProc at 3D0E019E13598859DDA8A2C3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227219280, false, "dad02f5e-74b9-49ea-9723-a68c8390ecdf",
+			"@@@InProc at 3D0E019E13598859DDA8A2C3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227220050, false, "462a538b-9520-40ff-8ec9-5f12ad457dc5",
+			"@@@InProc at 618C801A122D504D8925E113", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227226170, false, "18fc4924-ef27-4b34-9986-ea867c78a054",
+			"@@@InProc at 618C801A122D504D8925E113", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227226940, false, "ff7c2766-fa91-493b-964b-46f33202bf1c",
+			"@@@InProc at 9DA96D9BFE31B4D1548289FC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227227670, false, "3cbe77c9-5071-4b60-ab00-fe3ad8a3f39d",
+			"@@@InProc at 9DA96D9BFE31B4D1548289FC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227228460, false, "17d600cf-f24d-4f32-8bd8-76b7ed8d5929",
+			"@@@InProc at C6EF54CB76883E57DCB15B9F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227235080, false, "fbae5f06-cb4d-4eac-bbe0-32168e778776",
+			"@@@InProc at C6EF54CB76883E57DCB15B9F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227235880, false, "e0c4f809-d4a7-4d2e-8f79-23f96d950eb3",
+			"@@@InProc at F889178DED89DA8B20F65CDA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227236270, false, "60e13237-967e-4195-bf77-b5d8a2f5a758",
+			"@@@InProc at F889178DED89DA8B20F65CDA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227237300, false, "12940afe-f2eb-431e-a6c3-1d4eb15f05e2",
+			"@@@InProc at B9CFBB956E46A281F2A0A29C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227244240, false, "5c25319d-9c1b-422d-afca-ab321001f09e",
+			"@@@InProc at 2D89E8F51C5EC98B4FC393F4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227245140, false, "eaf9bdec-4136-45f6-9d98-5733942d2311",
+			"@@@InProc at B9CFBB956E46A281F2A0A29C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227245270, false, "b99a35a5-d520-484b-aab5-1965677b9e5d",
+			"@@@InProc at 2D89E8F51C5EC98B4FC393F4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227247530, false, "b39ede76-6cf6-4894-9b7b-1e7c1e7290d0",
+			"@@@InProc at 7546B4B2DDAE1AB0D1FD3700", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227258240, false, "e678eee2-24e3-45e1-8f22-46f3bf4de3dd",
+			"@@@InProc at 8F6D5BBCB101D55C18FE7C4C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227258530, false, "3d2322d0-9387-4145-b6c3-83546078e8df",
+			"@@@InProc at 7546B4B2DDAE1AB0D1FD3700", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227260400, false, "763f0342-99f9-4949-b021-d95f11a464f9",
+			"@@@InProc at 8F6D5BBCB101D55C18FE7C4C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227260520, false, "f6653530-da1b-44e2-ac28-2e9b0ac25792",
+			"@@@InProc at 8060FBEF6C14717B4E1A4923", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227271770, false, "31906017-b14b-455d-bcb6-bc7dab8794e5",
+			"@@@InProc at 8060FBEF6C14717B4E1A4923", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227272790, false, "9fcfd9c8-26b5-46bd-a6be-93b23e8a39ad",
+			"@@@InProc at D9124435084BEB5A684CC117", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227273730, false, "d59e7945-c968-43a0-837f-e8984469db07",
+			"@@@InProc at D9124435084BEB5A684CC117", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227274950, false, "70bcaca5-42bc-40b4-bb53-4fee539d52a9",
+			"@@@InProc at 54E763BBA93CE3BEBCC1E9E3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227280530, false, "d7080a0d-a905-4cfd-92f7-1120bed777ea",
+			"@@@InProc at 54E763BBA93CE3BEBCC1E9E3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227281620, false, "b72df704-bf2f-4218-9eac-650206fe200c",
+			"@@@InProc at A6853B99DE121A4063E90946", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227284100, false, "1e0d41d6-103c-458a-8fde-83022d7b965e",
+			"@@@InProc at A6853B99DE121A4063E90946", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227284940, false, "813185d0-8574-48f8-99f6-2f7157809c1b",
+			"@@@InProc at 81D11BB48034EA9955F664C6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227290610, false, "39301137-2927-4fc5-b3e3-34429caf0a3e",
+			"@@@InProc at 81D11BB48034EA9955F664C6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227291430, false, "263f5083-8089-48a3-b6ff-d7d189a9dd32",
+			"@@@InProc at 9B89271067AAE1C2B5546006", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227295200, false, "298a1d36-0423-4d0b-8be5-babfc2f2fe85",
+			"@@@InProc at 9B89271067AAE1C2B5546006", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227296390, false, "6638a4eb-9aaf-4d78-8220-3bc6779ce1c7",
+			"@@@InProc at 1157C56447D71B1D3D35C8B5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227299140, false, "0059fada-0acc-4cf9-af86-4fda9c8d1dfe",
+			"@@@InProc at 1157C56447D71B1D3D35C8B5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227300130, false, "cd6df723-4b8a-444b-9900-012c8df0af07",
+			"@@@InProc at CD89F77D511DC1431781D3D3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227305070, false, "780666ed-c146-4abe-b01e-466e7882d8f9",
+			"@@@InProc at CD89F77D511DC1431781D3D3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227305990, false, "3410401d-e67c-4fb6-923d-aa5d6285bcd2",
+			"@@@InProc at 2642CB4FFACE5A60B9521829", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227310220, false, "67da200d-8f12-4554-8603-e05af514d8b8",
+			"@@@InProc at 2642CB4FFACE5A60B9521829", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227311050, false, "6b35cb2c-8346-4504-bcea-38699d9098dd",
+			"@@@InProc at B74D5381EC9570A2D95367E6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227316060, false, "9e22bd5e-5807-4f3d-a6a4-d1d144f0ac75",
+			"@@@InProc at B74D5381EC9570A2D95367E6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227317300, false, "698b5b7e-b691-4b22-89e9-ef487498e52c",
+			"@@@InProc at 5C62E77CCACB410C5192DF5C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227318930, false, "14a28656-b143-4389-ae13-ec98190c3ed7",
+			"@@@InProc at 5C62E77CCACB410C5192DF5C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227319770, false, "3cfb9976-5c92-434b-aca6-c4399911cbf3",
+			"@@@InProc at EE8C794F509C876FE56DF595", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227326360, false, "e4965156-0f7a-46f6-8e0c-4a7f1ba155aa",
+			"@@@InProc at EE8C794F509C876FE56DF595", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227327180, false, "196b8031-2f7d-4602-85e9-43cc222ad172",
+			"@@@InProc at F2489A53846A4D7EC61B39D9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227335760, false, "c59dc76a-5eeb-4ca9-8b84-6c58b0ef3a37",
+			"@@@InProc at F2489A53846A4D7EC61B39D9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227336590, false, "d08ee7c3-bbe4-45aa-88d9-78f2c105a45d",
+			"@@@InProc at 20D9EDD8A06BB3C24F3ACBBB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227337830, false, "5a28f082-cadc-49ae-a691-0d0b6061732a",
+			"@@@InProc at 20D9EDD8A06BB3C24F3ACBBB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227339060, false, "c020b30a-0dc6-4407-9937-359062da0b04",
+			"@@@InProc at E89D3BAF0851C5AAFD47235E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227344510, false, "16a1943a-e1f2-46bc-8bdb-0582e9466622",
+			"@@@InProc at E89D3BAF0851C5AAFD47235E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227345100, false, "9b9c0856-63fb-41e4-86f7-6ef873a177d5",
+			"@@@InProc at 6396250674ADD52CA1DDC3AB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227346690, false, "4d30454f-caa6-4fdb-b286-c092375ffa65",
+			"@@@InProc at 6396250674ADD52CA1DDC3AB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227347420, false, "9e9be771-89bb-4eca-8d3e-f3c10a36c518",
+			"@@@InProc at 4D2D87E85CABBB10CD9805DD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227350210, false, "85baaae2-5423-495d-8141-a2e2e4335b1c",
+			"@@@InProc at 4D2D87E85CABBB10CD9805DD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227350750, false, "859689da-33fd-4351-bd7a-72032fa24229",
+			"@@@InProc at 746BECFE513F9EB7853DDA36", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227353370, false, "9430d068-9c5c-4d3d-acd4-d1dafe2c5079",
+			"@@@InProc at 746BECFE513F9EB7853DDA36", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227353920, false, "d64c6e70-f82b-446f-aaeb-4c3018358dc9",
+			"@@@InProc at 5E88976E46FCE1A9DF3D2885", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227357630, false, "46c86657-fef8-4839-b0a8-3506166eb014",
+			"@@@InProc at 5E88976E46FCE1A9DF3D2885", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227358450, false, "101f74e4-bfde-46e3-9611-d4ed0a8d99cc",
+			"@@@InProc at 1FBDD01B128B48825ECE5035", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227360790, false, "19f74597-2196-4be1-ba05-489ee68263be",
+			"@@@InProc at 1FBDD01B128B48825ECE5035", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227361630, false, "8e362d4f-4a97-4013-bcdc-72f1d74cf64e",
+			"@@@InProc at 65540E5F41CE1E9601844D48", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227364330, false, "a5884c8b-62a2-4660-8377-99a16b4399eb",
+			"@@@InProc at 65540E5F41CE1E9601844D48", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227364880, false, "bc965aff-a8d3-4682-9ae4-8dee632a458f",
+			"@@@InProc at F65EA13D0E82B1D439E492BC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227368430, false, "b8c274ea-3586-43da-aa90-46e2c0acfcd7",
+			"@@@InProc at F65EA13D0E82B1D439E492BC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227369670, false, "4d3ad654-29a1-48c9-b6a8-0e3751b09cf8",
+			"@@@InProc at 51B1141110E72FE892D77C12", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227372030, false, "4b1d016a-554e-4313-97b0-06d7ed627254",
+			"@@@InProc at 51B1141110E72FE892D77C12", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227372730, false, "09fdf600-0d69-4b19-9a35-5de92c96d707",
+			"@@@InProc at D46769490A1224E67F8AE858", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227378930, false, "93442ca9-bbc7-4dd6-aa3d-27a2a391f5fa",
+			"@@@InProc at C6BD46A1A71F9497F235A962", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227379240, false, "12880e03-4124-4bf3-bb8f-67bb89791af5",
+			"@@@InProc at D46769490A1224E67F8AE858", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227380130, false, "21ce0a5c-b0d6-4121-b92e-408240335955",
+			"@@@InProc at C6BD46A1A71F9497F235A962", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227380250, false, "365c2a99-a50b-4868-9f86-ae72d28cb7ec",
+			"@@@InProc at 231FED0A06160E0B51E65581", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227385630, false, "7e12ce0b-da01-480f-8f4f-af0ffb4523f3",
+			"@@@InProc at 874616610965EC76F08E390C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227386380, false, "3c6b9f18-4d3d-49c4-a70f-7b413ad9a28b",
+			"@@@InProc at 231FED0A06160E0B51E65581", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227386440, false, "415eec02-f81f-4279-9f83-d20032897adc",
+			"@@@InProc at 874616610965EC76F08E390C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227387500, false, "f41e617c-d1a6-460c-8baf-33e727409b5a",
+			"@@@InProc at 5C6A52B2FCB6EF0A77480E77", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227393670, false, "d376fcd0-9ac5-45ca-aad2-3c08e4ecb25c",
+			"@@@InProc at 5C6A52B2FCB6EF0A77480E77", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227394980, false, "1779a32d-6894-475a-aa11-77f2ec829703",
+			"@@@InProc at 5CDAC112B2E19FDA3498FA95", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227395080, false, "a7ab7dd3-af3e-4905-bb2a-c736d307d479",
+			"@@@InProc at 5CDAC112B2E19FDA3498FA95", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227397060, false, "0ed3fbf3-3162-4c86-8d0e-eb342c4558a5",
+			"@@@InProc at 03426E833CBC9E02409F8555", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227402940, false, "3b46f02f-bacc-40b8-9a83-70faa159253a",
+			"@@@InProc at 03426E833CBC9E02409F8555", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227403620, false, "1172a64d-8714-4cc8-b3e8-4c0ac8cd17b0",
+			"@@@InProc at A34280B8BDB7CD53319156B6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227405390, false, "4a8a60cb-cf84-481e-aa63-8f75f21b5587",
+			"@@@InProc at A34280B8BDB7CD53319156B6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227406150, false, "c03f1604-e129-4253-8958-7ce4ccba7ffe",
+			"@@@InProc at D80FD3759F2A5037FCB9C7DE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227408860, false, "dfd7f7c8-2bed-4fe6-a5fe-12497dcee1ff",
+			"@@@InProc at D80FD3759F2A5037FCB9C7DE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227409500, false, "17a6ae31-ddb8-4e67-83c4-07df50a4077e",
+			"@@@InProc at 44253F44D634C89BA8195C07", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227412440, false, "b0deef47-9d01-4883-b035-78b9dd5c0507",
+			"@@@InProc at 44253F44D634C89BA8195C07", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227412970, false, "c9392647-b646-40b6-91d8-de9bdec572eb",
+			"@@@InProc at C83B3BD03A70FB9C1BF7A43B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227414910, false, "53dc9048-6a20-4ce2-8569-1219fa1ba8ec",
+			"@@@InProc at C83B3BD03A70FB9C1BF7A43B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227415610, false, "e2b98de9-f268-4a50-b1a5-6172fe4cfe74",
+			"@@@InProc at 3A1B5C3665F523BBA1AF1EA4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227418600, false, "2acd325c-c948-412f-8503-565baef36333",
+			"@@@InProc at 3A1B5C3665F523BBA1AF1EA4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227419140, false, "23a43247-6d4b-4ef9-9c17-a1877d73111c",
+			"@@@InProc at 88C87C12758BC456A93D0DF8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227420930, false, "d421106f-7ba1-4467-b98e-3cfef8f46fbb",
+			"@@@InProc at 88C87C12758BC456A93D0DF8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227421450, false, "c13138de-6b05-4993-8df5-5dcb2159f4e8",
+			"@@@InProc at B9CA86A7DF5DA95B046CA23E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227424720, false, "d1148382-abb1-4aa8-b4d2-021b81c9b751",
+			"@@@InProc at B9CA86A7DF5DA95B046CA23E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227425490, false, "56247241-d70e-447f-8494-2fb578f6d073",
+			"@@@InProc at B446C4101BDDD997822A914A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227428010, false, "6928fc76-9609-4e3e-84ba-c1b8e4051c92",
+			"@@@InProc at B446C4101BDDD997822A914A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227428800, false, "1d3d9a6a-01f6-456b-8fed-06f85071a9c4",
+			"@@@InProc at E58AF3DA25FF8FBBD2CD7C3F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227431060, false, "8eb38055-e295-4a45-bea9-170e0ebb040a",
+			"@@@InProc at E58AF3DA25FF8FBBD2CD7C3F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227431640, false, "78f16cf8-f063-482c-8ec2-291e9119b044",
+			"@@@InProc at 8AF64D38A97DFEE110EEFD69", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227434610, false, "f05f617e-4962-4ef5-83cb-d40fd639bb78",
+			"@@@InProc at 8AF64D38A97DFEE110EEFD69", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227435170, false, "e8e20932-c546-478e-a4b9-d93c8c751117",
+			"@@@InProc at DAF42BA5A9ED5D6E804A670C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227438050, false, "b8c4c8f5-390e-469d-8091-6bc9d93703c5",
+			"@@@InProc at DAF42BA5A9ED5D6E804A670C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227438650, false, "af693dbf-17f5-4903-9637-fe2f4df21b7f",
+			"@@@InProc at E9FCEC1D1AE5AEFCB69F4D63", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227440650, false, "cebc289f-bbee-4605-90b2-d2fc9c1d4211",
+			"@@@InProc at E9FCEC1D1AE5AEFCB69F4D63", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227441410, false, "12ebf24c-0e88-49e0-a2bf-81988e1744ca",
+			"@@@InProc at 50090A53866D00DF88F44748", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227444590, false, "096d9bc7-bf4a-4115-87c7-e98a2279e524",
+			"@@@InProc at 50090A53866D00DF88F44748", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227445250, false, "9376de73-e45a-40bc-b7db-0ce38bebdc40",
+			"@@@InProc at 8FD0F963A84A87044903B624", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227447000, false, "84477b1b-db94-4d7c-8919-85a25b08a4c3",
+			"@@@InProc at 8FD0F963A84A87044903B624", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227447610, false, "61e8630f-d90d-43d3-b7a0-5ffa58cd9e18",
+			"@@@InProc at A486139073CB8527ACBD332E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227451350, false, "38a57840-33d6-4b36-820b-2883e5debc93",
+			"@@@InProc at A486139073CB8527ACBD332E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227452390, false, "ec883f7b-aa29-41f5-81c6-063eff48051d",
+			"@@@InProc at 89C612CA98E5FF707587322F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227453410, false, "c91c3152-9ecc-4398-86f8-ea9a31adc2b8",
+			"@@@InProc at 89C612CA98E5FF707587322F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227453960, false, "638fdd49-c489-4fd1-a1d5-6fc30f5b9464",
+			"@@@InProc at 4FC7268DA4CA3D5B8884021D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227459220, false, "28a084c1-4b45-43a0-b2ac-6a14148c9ff0",
+			"@@@InProc at 4FC7268DA4CA3D5B8884021D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227460010, false, "a9a3a30a-b9ea-4abc-89d2-0d5726f6e216",
+			"@@@InProc at 4D45191A3EB23A7036BA839A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227460910, false, "2c185e97-1dc4-4229-b4bc-e6d0d95e74b5",
+			"@@@InProc at 4D45191A3EB23A7036BA839A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227462150, false, "dc804281-cff6-4ced-a607-7b7afb19732c",
+			"@@@InProc at 602C87807CC012486035970D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227465830, false, "73c654b4-a8bc-485f-b233-29ab103c5a31",
+			"@@@InProc at 602C87807CC012486035970D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227466460, false, "64ffaade-2527-482e-9218-cb168045b45a",
+			"@@@InProc at D103A4D38B53CD7F92B35CE8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227468510, false, "60b556d5-6f04-47b3-8a5e-ae548467c248",
+			"@@@InProc at D103A4D38B53CD7F92B35CE8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227469250, false, "2c65efbc-32be-4fd0-bca4-108ac6d4f097",
+			"@@@InProc at B63002465976D4884A9A275D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227472520, false, "2886960e-2b35-4260-8864-4b61c7394c7c",
+			"@@@InProc at B63002465976D4884A9A275D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227473330, false, "1c23e612-b237-41ad-b8e4-b8373496d335",
+			"@@@InProc at 96D347235DFAA0A2CEDF5A37", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227476300, false, "345a13ce-3195-4e89-9155-0e98cd9011ac",
+			"@@@InProc at 96D347235DFAA0A2CEDF5A37", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227476950, false, "89868bf3-feaf-48ed-8da9-af0475e0558c",
+			"@@@InProc at 099B4CE7AA94332002C6EFBD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227482930, false, "1d2346da-7acc-4f3b-87a1-4bff014a3fc5",
+			"@@@InProc at 099B4CE7AA94332002C6EFBD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227483580, false, "fc434ffe-2a8e-4f0b-99c0-c79ec5c9822a",
+			"@@@InProc at 4A3B0A88228D738F0EE0E8A0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227484220, false, "d7b1bd5a-e769-439a-b3f6-60f2dd74bbdd",
+			"@@@InProc at 4A3B0A88228D738F0EE0E8A0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227485020, false, "24a849d2-af7f-43aa-8f1b-61990bf1d026",
+			"@@@InProc at A2BB7CE7DD022868A0466C52", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227489740, false, "1b465b56-32a3-4c97-892c-73702035a915",
+			"@@@InProc at A2BB7CE7DD022868A0466C52", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227490550, false, "7293c8d4-0960-44f4-84a7-df2c4c9c5d5a",
+			"@@@InProc at 2AF752660D2562DEAE92F146", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227492850, false, "88839630-69b1-4d27-a50f-71a2dc1cd5e4",
+			"@@@InProc at 2AF752660D2562DEAE92F146", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227493570, false, "dc3b3e51-e4af-4880-8a86-83497f56234f",
+			"@@@InProc at D9AF5AA230DD34C0EA715C7C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227496380, false, "cb9e0130-8697-4750-b920-02229b094a46",
+			"@@@InProc at D9AF5AA230DD34C0EA715C7C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227496970, false, "48e4d7df-f705-4160-9bd5-57216f7794df",
+			"@@@InProc at 50EF82EB63EB0A1A31747A62", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227501210, false, "d883bc61-08b6-4d6c-a2d7-daab8940db0f",
+			"@@@InProc at 50EF82EB63EB0A1A31747A62", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227502010, false, "b0688edb-aa5c-4a60-8547-07e6ff26fe14",
+			"@@@InProc at 7BDE46CB258B3C94243CD81B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227502760, false, "dd3056de-2035-4e3c-8858-24e8f6ce4a61",
+			"@@@InProc at 7BDE46CB258B3C94243CD81B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227503390, false, "7e230ed0-758c-428a-a95c-181716cb6909",
+			"@@@InProc at 4E64365266CB64248978DA91", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227508660, false, "6619848a-1138-448f-91fa-5db4cfaee918",
+			"@@@InProc at 4E64365266CB64248978DA91", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227509720, false, "1760410c-5792-4d9a-8d51-f10d68e7fe61",
+			"@@@InProc at ED94542E6DD07751FDA1A9DE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227510780, false, "f88cfac6-628a-4101-a19c-2f9e43d3e4a9",
+			"@@@InProc at ED94542E6DD07751FDA1A9DE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227511570, false, "bebe25fa-4917-4f58-8094-1b5fdf88b923",
+			"@@@InProc at 8C07299EF5396691D6B08A78", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227516620, false, "b7f74ae0-c4bb-4c29-909e-3418f75c8b04",
+			"@@@InProc at 8C07299EF5396691D6B08A78", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227517140, false, "a8824b6d-d689-4e8b-a72f-fb7022f335fc",
+			"@@@InProc at 6E16344CE93E9E273BCAC6DC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227519170, false, "d684a2ba-118f-4970-b3c8-6b5b7aeafa9b",
+			"@@@InProc at 6E16344CE93E9E273BCAC6DC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227519830, false, "4774caa0-79a8-41ce-bf39-4ed1829912c5",
+			"@@@InProc at 1001064CFBBA27DC5086E100", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227522690, false, "9643d02f-6018-47bb-9c7e-aba6c172a522",
+			"@@@InProc at 1001064CFBBA27DC5086E100", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227523230, false, "adf5026a-6f1f-4aae-b8c5-09b6ce0421f3",
+			"@@@InProc at 90585EFA8DAE375914A01034", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227525670, false, "6efdf68c-edb7-4ba7-9cf5-400f105ec790",
+			"@@@InProc at 90585EFA8DAE375914A01034", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227526310, false, "2554b8c2-ce9c-4925-9caf-2f21c768d5d8",
+			"@@@InProc at EC125D0924E0A6DC21144D63", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227531150, false, "edb0b8bf-2c80-44af-ac77-9b4d921d5bc6",
+			"@@@InProc at EC125D0924E0A6DC21144D63", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227531810, false, "7eee5e66-d856-4171-8f30-f7ca2c920341",
+			"@@@InProc at 3E16D3D04A76A37463544566", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227549110, false, "b2f283c4-21a0-4354-a824-973bfe168f3c",
+			"@@@InProc at 3E16D3D04A76A37463544566", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227549950, false, "bfed17e6-3557-471b-9f4b-464490defdfe",
+			"@@@InProc at 15F58A1AC2A16763B1C414ED", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227555170, false, "e689a024-170b-4120-9b05-6c3ce8fe7f31",
+			"@@@InProc at 15F58A1AC2A16763B1C414ED", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227555700, false, "4c207fff-c883-4e66-a298-6c7bd99039ec",
+			"@@@InProc at 704A71BC6F0EE97524B10DEE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227557900, false, "43edc656-3b2a-468d-978e-6adeb8529c84",
+			"@@@InProc at 704A71BC6F0EE97524B10DEE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227558470, false, "74d1e64c-253c-4738-9ed8-a7061340664e",
+			"@@@InProc at 7A1FE9D2A972941BA9C22792", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227561100, false, "3f569c4c-f61b-4887-989c-44cb098320b0",
+			"@@@InProc at 7A1FE9D2A972941BA9C22792", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227561630, false, "2880b751-c8ed-4d01-9b0c-6c97467e5aab",
+			"@@@InProc at 61827FDB427E03FAA5C4592B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227563820, false, "99664bbf-8f3e-4549-88c1-fb8810fc56fb",
+			"@@@InProc at 61827FDB427E03FAA5C4592B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227564420, false, "fb7b1ef9-8f4d-4d9a-99e3-cfd05b295a2f",
+			"@@@InProc at 87CE4E67FE7E1477FAD27DD8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227567460, false, "96cb35f9-eecb-4170-84e0-d0beae654a07",
+			"@@@InProc at 87CE4E67FE7E1477FAD27DD8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227572020, false, "b59a70a7-37b8-451e-a4d4-e874b9863304",
+			"@@@InProc at AA53B61BF4D3CF2740A88B25", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227573060, false, "fde1e939-231f-4b8b-967a-95c06667b021",
+			"@@@InProc at AA53B61BF4D3CF2740A88B25", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227573580, false, "137ddbdf-82fb-4aee-8497-79d4102df1b3",
+			"@@@InProc at DD90E0E6A3E37E72C96F03E3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227577600, false, "038e0d05-ac69-4f22-adf1-224670cda638",
+			"@@@InProc at DD90E0E6A3E37E72C96F03E3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227578170, false, "62ae1676-3697-4c12-8fb7-8d65a44f3a36",
+			"@@@InProc at 3D6ACB63307BED12F075B38C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227579200, false, "eafd83c5-8390-4e17-9580-00df3038dfb7",
+			"@@@InProc at 3D6ACB63307BED12F075B38C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227579850, false, "bc986321-a5ae-4ad3-b05d-3a2fd9df859f",
+			"@@@InProc at FCFC173647D8BAC1B8CDEAED", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227583440, false, "2da81332-2123-4714-8d66-d7682a95e791",
+			"@@@InProc at FCFC173647D8BAC1B8CDEAED", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227584080, false, "6b6b9f73-eed9-418b-8b0a-47b63ca6ddf6",
+			"@@@InProc at 69F7C4F3DF1E82C7356C4AFD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227585730, false, "46f5b5a7-3b9a-45d2-ae33-b43eccb2acb5",
+			"@@@InProc at 69F7C4F3DF1E82C7356C4AFD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227586350, false, "e51f4c33-e479-462a-8f7f-c02af819926f",
+			"@@@InProc at 5F9F29E59C533E169FB2A73A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227589880, false, "ab3199b8-310c-43f3-aabd-d86f04042f2d",
+			"@@@InProc at 5F9F29E59C533E169FB2A73A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227590580, false, "469c3514-3d56-4f09-8f27-1bf784fd9bf4",
+			"@@@InProc at 694EB39D368DA9B279A8B1E5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227591630, false, "5361069f-7d09-438e-be74-3dbbaddce6b3",
+			"@@@InProc at 694EB39D368DA9B279A8B1E5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227592150, false, "d2c36534-012f-4e56-bc47-d13244d6875b",
+			"@@@InProc at C2B077BE842CA61DD675E4D8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227596220, false, "bdfbd8c4-16fa-4c24-9c03-cde05a310534",
+			"@@@InProc at C2B077BE842CA61DD675E4D8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227596790, false, "a503afe6-3ee2-46f7-b19b-8945dfdaea84",
+			"@@@InProc at D36E19A1938FFAECB49F048F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227597810, false, "96eca9ea-6313-47f1-acf1-dd66a9de0f34",
+			"@@@InProc at D36E19A1938FFAECB49F048F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227598580, false, "982a99d5-182d-4a6c-a320-23b72b633ebd",
+			"@@@InProc at 09AECE853756B6A1FF1D2F0D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227602570, false, "163cf318-06b4-45b7-8f91-aeae8747eaa4",
+			"@@@InProc at 09AECE853756B6A1FF1D2F0D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227603410, false, "8aecf793-9253-4182-8b2f-4283df71d7c3",
+			"@@@InProc at 60FBF1F420321C16662D33FF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227605630, false, "8650bc71-f473-4a03-b2be-e2e3bf6ab9a2",
+			"@@@InProc at 60FBF1F420321C16662D33FF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227606370, false, "fc4ae963-8467-4b1c-b310-7dd13551d0e9",
+			"@@@InProc at 424C80541A1EA61F2C8050C4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227608870, false, "e4e86c16-050d-4dc6-a36f-2621defb820e",
+			"@@@InProc at 424C80541A1EA61F2C8050C4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227609460, false, "9fb8f9e2-2d36-449c-b0f3-efce0812fab0",
+			"@@@InProc at 0FDB7C90BBBBF1A811899F0F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227611480, false, "93f29202-ad1f-4a28-a996-3b84455887bd",
+			"@@@InProc at 0FDB7C90BBBBF1A811899F0F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227611980, false, "bf477fc7-9151-4f10-8ec9-f7c20c0a04a0",
+			"@@@InProc at 551C489AAA33ED1F8E1455B6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227614790, false, "d752bba8-1412-42c5-bd63-f8b7d9ade34e",
+			"@@@InProc at 551C489AAA33ED1F8E1455B6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227615310, false, "a0bcdda4-43d0-4f5b-81d7-8adfd99c2336",
+			"@@@InProc at 2FC943DB9B4D3DC41106D3C2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227617890, false, "108c42f9-3b5a-495d-9ff8-88031e9cc739",
+			"@@@InProc at 2FC943DB9B4D3DC41106D3C2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227618500, false, "24cc78cf-1dfc-46f1-a9d7-93d1476d76a0",
+			"@@@InProc at B474B5C6969952A78BC7D933", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227620400, false, "bde008d9-24aa-4506-a39b-e3709d100209",
+			"@@@InProc at B474B5C6969952A78BC7D933", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227621060, false, "f49577d0-2b72-4d93-9cb2-d10e94c1e294",
+			"@@@InProc at 0A5960F39E3E550D8D6AC4F8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227623850, false, "9d859310-fc06-48a8-9097-ca3ee32949cf",
+			"@@@InProc at 0A5960F39E3E550D8D6AC4F8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227624370, false, "333ee46e-70ed-4b12-8119-7bbaa2cb7e3f",
+			"@@@InProc at 54042EE80D7A68BA3E87D832", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227626160, false, "7fbee612-6e9c-4f79-be86-d0fdb3975620",
+			"@@@InProc at 54042EE80D7A68BA3E87D832", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227626800, false, "baebd7f4-2b5f-43ae-8c3d-7bc2c23cd098",
+			"@@@InProc at FA0C71C24D0C8DEC92150D59", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227629790, false, "be3f59e1-513a-469b-9abe-d994c38b7fbf",
+			"@@@InProc at FA0C71C24D0C8DEC92150D59", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227630380, false, "b49af4ab-415b-4406-806d-01edddf19e36",
+			"@@@InProc at BDD24F12386C2773F4B742A5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227632180, false, "3fa6ffa2-e669-402d-be50-ba5051854076",
+			"@@@InProc at BDD24F12386C2773F4B742A5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227632870, false, "929fa641-a8fe-420d-87a7-9e7aaf2b2ee0",
+			"@@@InProc at 1084DC3A201ECDD0F287992A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227635970, false, "9673f5d3-f590-46d1-b7f2-5b2d78b92378",
+			"@@@InProc at 1084DC3A201ECDD0F287992A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227636500, false, "c50d39f8-c743-4d70-a4a2-9463116d930f",
+			"@@@InProc at 0748CE4F4755371FB2251C37", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227638040, false, "787da756-0338-49d5-a697-4cd3ce4779f7",
+			"@@@InProc at 0748CE4F4755371FB2251C37", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227638660, false, "9cbb40e0-7924-4a9e-81e4-229f14c3bc17",
+			"@@@InProc at B3DC7D325286E855F8CC4761", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227641910, false, "98f5d239-8c21-4a7a-963d-acb5d5612920",
+			"@@@InProc at B3DC7D325286E855F8CC4761", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227642520, false, "68f8660e-5f70-4dca-90e0-e07d69f2e027",
+			"@@@InProc at A898B0575BBA866CBA1BBCB4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227644200, false, "58d42cd7-e159-4fe5-a0ae-776c20df1be8",
+			"@@@InProc at A898B0575BBA866CBA1BBCB4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227644970, false, "a6deb0c8-e1cd-468e-a428-84c74651c1bb",
+			"@@@InProc at F7B18F064EBA9AF9F3FC6209", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227653200, false, "ae8d433a-bef4-437e-ba33-96b82bdaecc1",
+			"@@@InProc at 27BA515B140BFA133F982F7D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227653850, false, "b18b2db8-0203-4ce4-a342-a6c95c221d8a",
+			"@@@InProc at F7B18F064EBA9AF9F3FC6209", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227653900, false, "eb033be5-f0bd-47d1-8f34-522764feb99a",
+			"@@@InProc at 27BA515B140BFA133F982F7D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227654800, false, "4a11992b-e9aa-4db8-a16a-575a4d9531b6",
+			"@@@InProc at FDA4C0518803764264C78B84", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227661000, false, "f86f6993-47a5-4fd0-8e38-91e9c50f6512",
+			"@@@InProc at FDA4C0518803764264C78B84", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227661770, false, "00995634-3a78-4af4-ab08-885a16fc3cde",
+			"@@@InProc at A4610205D6167626A8157924", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227662520, false, "eef4df4b-c3ff-4882-929d-e2c576d2f69a",
+			"@@@InProc at A4610205D6167626A8157924", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227663320, false, "02412306-3a26-4ea2-96d9-1108d0061c53",
+			"@@@InProc at 84564DB51F3B77478812F230", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227668200, false, "793b26ce-1794-478c-b7b9-612dea2429a3",
+			"@@@InProc at 84564DB51F3B77478812F230", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227668730, false, "6bb9257a-71c6-4291-a500-692e12c3423c",
+			"@@@InProc at B3650299194F55C5CE75635F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227669260, false, "899eedb2-29fe-4e14-b2c6-a7d78d5443bf",
+			"@@@InProc at B3650299194F55C5CE75635F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227669790, false, "54a6337a-62a8-49e0-a2c9-b1b253186e63",
+			"@@@InProc at 67E0C0B615E2C56A620F248A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227674250, false, "d9f14889-1e29-4eb0-a0c4-aae5dbc24082",
+			"@@@InProc at 67E0C0B615E2C56A620F248A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227674790, false, "5754a997-c2ef-432b-9346-3cdce252ce48",
+			"@@@InProc at 263F6A40EDF421370E7ACCCC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227675310, false, "f75e6d5d-13f5-4f06-9faa-8093157ce005",
+			"@@@InProc at 263F6A40EDF421370E7ACCCC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227675830, false, "d128cc41-0a86-4712-9617-36167e6b7ae6",
+			"@@@InProc at 1E839E71380A23945472EEB5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227680190, false, "c713961f-88ad-4e99-8952-0db86a4e718d",
+			"@@@InProc at 1E839E71380A23945472EEB5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227680820, false, "1c03efad-ddfe-44b9-ae47-753f89a39a37",
+			"@@@InProc at 6A23A76BB8A23FC6F069624F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227681430, false, "01fc52ae-6a5a-4a12-bab9-0c4b0fcf9f4e",
+			"@@@InProc at 6A23A76BB8A23FC6F069624F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227681950, false, "92fb46c2-0b28-45d1-993f-adf55f911336",
+			"@@@InProc at F7657B13690FB3ED5608D807", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227687490, false, "683b4b73-5909-4fc8-b2b5-f089c6614860",
+			"@@@InProc at F28A993E821ABCF6D50D1BAB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227688280, false, "416c9346-7b02-4060-98d6-d7744c810f37",
+			"@@@InProc at F7657B13690FB3ED5608D807", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227688360, false, "97c75c34-2837-4276-8cdd-722d447e49ed",
+			"@@@InProc at F28A993E821ABCF6D50D1BAB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227689360, false, "cbe38fc4-f01f-42ac-87ad-5c42defb8607",
+			"@@@InProc at 773DB0100DA97E43E6095FFE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227694160, false, "28f48197-b020-4759-ae3e-03850ee7e7d5",
+			"@@@InProc at 773DB0100DA97E43E6095FFE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227694680, false, "7ff27178-92a4-45b1-aa1f-2c90037e6c95",
+			"@@@InProc at 93A4B54A9EE632603B8B27C2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227695200, false, "293d98e5-88c5-4847-8576-01569d2bca43",
+			"@@@InProc at 93A4B54A9EE632603B8B27C2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227695720, false, "c8471107-c32c-442c-9078-bfc47a225882",
+			"@@@InProc at 7EB984BFA08214226755FBC5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227699830, false, "cbf67133-10d5-4233-ab95-4e691f678ee2",
+			"@@@InProc at 7EB984BFA08214226755FBC5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227700350, false, "777ee702-b759-4441-99bc-c7a3c197d945",
+			"@@@InProc at 4592ED47BF0CE788F9F5F932", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227707060, false, "55e002a8-2955-4e79-8b52-7b8ddcb23adf",
+			"@@@InProc at 8F74B89C1D98DF297C4A7765", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227707150, false, "17a736fa-a6f3-40ca-a479-68f963547cbc",
+			"@@@InProc at 4592ED47BF0CE788F9F5F932", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227708220, false, "75235d7b-6b54-4f86-9726-caa16847a12c",
+			"@@@InProc at 8F74B89C1D98DF297C4A7765", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227708280, false, "951aad94-18b6-49e8-aa5b-d5abbe8db529",
+			"@@@InProc at 241A5171DFDFE6F08725D9AC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227714340, false, "91200657-2a85-4a14-abfd-dea63b57a817",
+			"@@@InProc at DA2D772452BABA0F0FE72AA4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227715020, false, "f86d6129-50e1-4d9b-8053-4cb94ae076db",
+			"@@@InProc at 241A5171DFDFE6F08725D9AC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227715090, false, "fe4e0577-6a26-4037-980d-cf1c128fb57c",
+			"@@@InProc at DA2D772452BABA0F0FE72AA4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227716000, false, "cad44d1d-a52e-49a7-bfbc-43e1f2a859cc",
+			"@@@InProc at 02BBD3FE6346FB6A9FC81EA2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227720760, false, "e5c084d9-fc57-42ec-9931-e983ece5b96a",
+			"@@@InProc at 6463EE744F870B1B1CFF20DD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227721370, false, "b8e2f543-6116-4582-9db1-72370eecc7a0",
+			"@@@InProc at 02BBD3FE6346FB6A9FC81EA2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227721430, false, "acd6333a-f336-4d12-82fa-ac1795381c6f",
+			"@@@InProc at 6463EE744F870B1B1CFF20DD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227722320, false, "ba374cc9-bed7-4012-ba63-a9c5e88c60e2",
+			"@@@InProc at 3D1F61BA5314539E06FB86DF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227728280, false, "9e43312c-013f-4648-bcb3-523e8741b288",
+			"@@@InProc at F351E7678ED6A9BC4D048CBD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227729060, false, "701e78df-9193-4e68-bbd1-89342acc2ee6",
+			"@@@InProc at 3D1F61BA5314539E06FB86DF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227729140, false, "bafd9582-0890-4d70-a373-66a7ec96300d",
+			"@@@InProc at F351E7678ED6A9BC4D048CBD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227730130, false, "cd8baf8d-bcdb-4654-8601-c0c018c86b01",
+			"@@@InProc at 8167CD463A86B416CF0AD3B6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227736280, false, "b1242494-2b4c-48ab-9346-b2f32c2961f6",
+			"@@@InProc at 8167CD463A86B416CF0AD3B6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227737080, false, "71b0b78a-735a-4439-b091-3346c684ef04",
+			"@@@InProc at 9CB96D57FCA9F1846513C41A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227737140, false, "7fbad290-7ace-43c5-a0c1-bc4b18b43076",
+			"@@@InProc at 9CB96D57FCA9F1846513C41A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227738530, false, "98ca29be-f779-4902-bd1c-66b346269c3d",
+			"@@@InProc at 8D47D4F380076D965F65EF8E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227742950, false, "4b9e1c07-8fdd-4e5c-a929-d8813c52ee13",
+			"@@@InProc at 8D47D4F380076D965F65EF8E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227743820, false, "725f3bd4-b283-4b91-a0cb-93259579a7f3",
+			"@@@InProc at 836BFC4F3053A47B78E54139", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227744880, false, "a1fc7463-a7ee-401c-b9a7-f7cfbf09e04c",
+			"@@@InProc at 836BFC4F3053A47B78E54139", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227745400, false, "944eb9e0-d87d-4903-8344-601503fa6441",
+			"@@@InProc at 5D56F7BA34A5B6FED21C11AB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227749340, false, "dd24ad08-6aca-433d-bb26-71ca59770663",
+			"@@@InProc at 5D56F7BA34A5B6FED21C11AB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227749880, false, "4396b622-5dbf-4a93-9dee-03c67209e010",
+			"@@@InProc at 87353E127826DBE1FC3667A2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227752130, false, "b256b782-d427-4672-87da-5a731b6f2086",
+			"@@@InProc at 87353E127826DBE1FC3667A2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227752880, false, "3849ca88-0221-4509-909d-91dbc6c37b7b",
+			"@@@InProc at 02540D6864C9511A5253CC15", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227755620, false, "06a657e9-2c82-4131-8e33-caf3c93783fb",
+			"@@@InProc at 02540D6864C9511A5253CC15", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227756340, false, "765cd9dc-0952-4106-9b16-24010692b3ce",
+			"@@@InProc at 7DD2DBF531B3813732CBF69C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227760230, false, "17b3455e-53b5-44c7-9eed-b06712124553",
+			"@@@InProc at 7DD2DBF531B3813732CBF69C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227761000, false, "d13a7bb0-baec-4afb-a0b5-18eb7629c517",
+			"@@@InProc at 6D63564BD61A5C2742C8B5B0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227763180, false, "9d477c35-a35e-45d6-b298-aa74cf1c419b",
+			"@@@InProc at 6D63564BD61A5C2742C8B5B0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227763990, false, "9d898e0e-2a86-4c4c-b179-53eb19ec7668",
+			"@@@InProc at BBEA2A2096300AB0003054D8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227767000, false, "a8bb3d60-d782-43ca-b343-2b4e4a1b083e",
+			"@@@InProc at BBEA2A2096300AB0003054D8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227767770, false, "595eac58-f788-4924-9a00-e3daf5a4f4f6",
+			"@@@InProc at C11B7BACED53AC2081DF7815", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227770520, false, "57371758-c6a8-48d9-952a-c0b0f07976c0",
+			"@@@InProc at C11B7BACED53AC2081DF7815", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227771070, false, "93cf2120-7685-44e0-bd7d-2841b908d20f",
+			"@@@InProc at E86D879197A9F5FCCEFB0FFE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227774680, false, "932a1f93-2641-4f51-862b-477d7c593e25",
+			"@@@InProc at E86D879197A9F5FCCEFB0FFE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227775510, false, "d963c195-20a7-4970-943c-182d3fb997be",
+			"@@@InProc at 68C2FF94164A739E1E16DD7B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227776590, false, "86e4dbe8-f5c4-4a91-8609-90de0e2bcacd",
+			"@@@InProc at 68C2FF94164A739E1E16DD7B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227777210, false, "7684ce60-93fe-4aa8-a137-f24071fd7623",
+			"@@@InProc at 82B17A70D4773D61B57D1104", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227782890, false, "0bf89f75-2fe7-4e3f-810d-355a6768d15f",
+			"@@@InProc at 0DD3C586EC690F2E779D3CC2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227782960, false, "b3c2b14f-4e94-44ce-8aeb-2339b4f16d57",
+			"@@@InProc at 82B17A70D4773D61B57D1104", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227784200, false, "0c607d25-653a-450c-9a2b-12361c24d9b5",
+			"@@@InProc at 0DD3C586EC690F2E779D3CC2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227784250, false, "a30ee6c1-9a53-490c-9f53-237a49f5fdbc",
+			"@@@InProc at CD60A38AEAF69BC01B767E30", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227790000, false, "eb68deeb-92c8-45c3-ab05-aeb04e511f22",
+			"@@@InProc at 064757DDEF827634A10A8765", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227790260, false, "94b28dfb-7956-4ae3-b656-7e17bc0ecca2",
+			"@@@InProc at CD60A38AEAF69BC01B767E30", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227791230, false, "38dcbf18-b49e-4f25-9006-7bb60742dd7f",
+			"@@@InProc at 064757DDEF827634A10A8765", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227791300, false, "59349120-f328-4a1d-b754-5dd2937fcbdf",
+			"@@@InProc at 646CF39075E5F1845CA61A81", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227796870, false, "606f7faa-6b6c-4524-9a24-b5070bcdf18c",
+			"@@@InProc at 884BFD1883F255183AC0E79E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227797510, false, "4c4d5a9e-e128-4639-9ee0-4f77a0dd4e61",
+			"@@@InProc at 646CF39075E5F1845CA61A81", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227797570, false, "4944d3f7-df26-4288-9710-67d4aae98b3b",
+			"@@@InProc at 884BFD1883F255183AC0E79E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227798410, false, "7dac34ad-38f8-4f68-8ffd-bef0d41b6774",
+			"@@@InProc at DD6521F9AB271F90F818158E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227803270, false, "22ab2d68-5fc8-4e76-b939-50a1019f7d2f",
+			"@@@InProc at 3041CB6FAA9255F4460E2293", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227803870, false, "c7882f5e-af3d-4265-a37b-f6f34c0f7c5d",
+			"@@@InProc at DD6521F9AB271F90F818158E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227803920, false, "fd644039-0bbd-4720-977a-24bcd62e1a28",
+			"@@@InProc at 3041CB6FAA9255F4460E2293", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227804780, false, "649d4bfc-7618-4833-9f06-eb642e5b8ecd",
+			"@@@InProc at 86ED79B8FB3F371563AC9EE3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227809700, false, "8d86379e-6c4c-4b72-bcce-5ae9fe33d0b4",
+			"@@@InProc at 8F8B8A6637DC5D59B5265034", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227810330, false, "b85a2258-93f1-4e5e-8250-5b2fe3698848",
+			"@@@InProc at 86ED79B8FB3F371563AC9EE3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227810390, false, "106f96e6-766d-48ee-9e25-da2256b3d322",
+			"@@@InProc at 8F8B8A6637DC5D59B5265034", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227811290, false, "dfa9b36e-7531-4c5f-9f0e-76de42db1392",
+			"@@@InProc at 6585765B4E70EAF9045484A8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227817210, false, "63bdf3d5-6610-4b89-b244-d8f5bda5934d",
+			"@@@InProc at 6585765B4E70EAF9045484A8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227817970, false, "07638a7c-6484-4e2b-85d4-e315270736c8",
+			"@@@InProc at BD7BF5779CD385019A5FD051", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227818710, false, "fed8b7dd-1fa0-4c2f-a51b-2fcab7ffb064",
+			"@@@InProc at BD7BF5779CD385019A5FD051", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227819730, false, "afcfbf58-9b95-4243-917f-f9f3ffdbbc6f",
+			"@@@InProc at 0531638D9D4936BF9F9DD3C1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227823880, false, "15011e7d-0fc5-4ac8-afd1-4282536a2ff9",
+			"@@@InProc at 0531638D9D4936BF9F9DD3C1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227824570, false, "6a023171-26c7-4271-aee9-9e7d81af3152",
+			"@@@InProc at 1B9A167C1AA316FD07BEEFE6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227825500, false, "5c407822-677a-4a19-a58a-04efeb3cd140",
+			"@@@InProc at 1B9A167C1AA316FD07BEEFE6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227826040, false, "1d42638c-658d-4831-b7f6-3f83525ae244",
+			"@@@InProc at 14FE6C5C5E4952E994094275", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227830090, false, "8536e4ff-076f-4c7a-8fd7-695c0dabad3d",
+			"@@@InProc at 14FE6C5C5E4952E994094275", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227830720, false, "534eec4d-7bd5-4ee1-a98b-c3945e1326e8",
+			"@@@InProc at 078EDA13CC3887AE29D9519B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227831350, false, "32cca841-3706-448e-bf71-3ccc5a7f47eb",
+			"@@@InProc at 078EDA13CC3887AE29D9519B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227831880, false, "cbeaf50e-1bed-4f11-a014-6d3a9b0c0ceb",
+			"@@@InProc at 81282CCD0680F36D63DDCB44", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227837460, false, "fc0a7d8b-b58f-4661-91a3-8efae80465db",
+			"@@@InProc at 7BA7E3F3FAA626C3D4909F12", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227838290, false, "170e5ca4-5105-4102-9523-1bcc4434fb2b",
+			"@@@InProc at 81282CCD0680F36D63DDCB44", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227838370, false, "db93229d-3d55-45b7-887e-7c0d9854e0d2",
+			"@@@InProc at 7BA7E3F3FAA626C3D4909F12", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227839370, false, "33aaaf5b-4a92-432c-851a-a63a6fcd90f7",
+			"@@@InProc at F0A8074D66FF9BD5DDD3CEE5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227844850, false, "9accdcc6-42f6-403e-89ab-34330e88e3c1",
+			"@@@InProc at F0A8074D66FF9BD5DDD3CEE5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227845400, false, "a8f8a8bd-3ebc-49a7-ae0c-92bbf74f6d0c",
+			"@@@InProc at 97BB1D8B9A5E50CEFB7D9136", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227846730, false, "0d324124-0c68-435d-9ce6-47f965d7b6bf",
+			"@@@InProc at 97BB1D8B9A5E50CEFB7D9136", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227847530, false, "8989ffff-63c2-49e7-b289-566107f14a92",
+			"@@@InProc at 1F1FA70BDB3E44E4D75A7F4E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227851280, false, "e15d737b-b838-40db-aa49-1e7cdaff2cb4",
+			"@@@InProc at 1F1FA70BDB3E44E4D75A7F4E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227851810, false, "6e66b024-3bc2-4e16-886a-5bf97fa12913",
+			"@@@InProc at C7D2F55F0B3E6174BF73D52F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227871110, false, "3b0ca772-42ee-43fc-8b78-e4fb32eced44",
+			"@@@InProc at C7D2F55F0B3E6174BF73D52F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227871800, false, "fd050ff2-720c-4227-8f9d-e6b95c7237c5",
+			"@@@InProc at 5761D2F8D67A52BA3E834D66", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227877270, false, "94f15d3d-1290-4db3-a958-85151275c208",
+			"@@@InProc at 5761D2F8D67A52BA3E834D66", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227878040, false, "3965ede4-935b-42f1-9571-8b2b775d0060",
+			"@@@InProc at C7A50658F7F090CACA0F8A58", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227878760, false, "2bf31255-73f8-46af-a5e9-c4e0a5aa7d77",
+			"@@@InProc at C7A50658F7F090CACA0F8A58", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227879590, false, "a185956c-5093-4ae1-92d1-3c7b81e35ed3",
+			"@@@InProc at 941213EA6F573775806A1CA0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227885150, false, "7b3fbe4c-e0c1-4fab-aaeb-37b59b0834a2",
+			"@@@InProc at 941213EA6F573775806A1CA0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227885920, false, "160e1784-7a26-41aa-9510-f4f53392d05a",
+			"@@@InProc at 0CA257CD25777E1D49C81BB7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227886700, false, "5472b780-c912-41fb-bfd3-55fa0703f726",
+			"@@@InProc at 0CA257CD25777E1D49C81BB7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227887430, false, "7a1e9854-aa83-44be-a5bb-99ba84664311",
+			"@@@InProc at 3DC2650E9B6BDE94C034AF8D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227891620, false, "7737998d-67ff-48b3-96a9-9bdcee2f33fa",
+			"@@@InProc at 3DC2650E9B6BDE94C034AF8D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227892220, false, "03866134-3537-4727-a9ce-9827b9ce8dee",
+			"@@@InProc at C96F120B3A02FAE59A174289", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227897760, false, "35913389-4135-46dd-a81b-3e9c1b0ddcd3",
+			"@@@InProc at C96F120B3A02FAE59A174289", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227898290, false, "ece66d47-3673-4703-9986-1cfcc9423cca",
+			"@@@InProc at 609A91B99B9ECAA70FEC3E24", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227898810, false, "70e5e5c4-8d2a-4a3b-877b-9838e638d906",
+			"@@@InProc at 609A91B99B9ECAA70FEC3E24", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227899410, false, "fc57d174-35fb-467a-a558-60be0a6a3584",
+			"@@@InProc at F34FAE737AD279712D219A0C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227904690, false, "0628e69d-7626-41ef-a9b8-271a751d0f7a",
+			"@@@InProc at B8BE0B1BCD9CD94B36B6DDEB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227904910, false, "d0b13f9e-1038-4eca-b48d-92bf403c5399",
+			"@@@InProc at F34FAE737AD279712D219A0C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227905860, false, "637ddcd5-a2da-4559-ad4a-69f2d889dd40",
+			"@@@InProc at B8BE0B1BCD9CD94B36B6DDEB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227906040, false, "1b09fc67-b83b-4cb0-8d08-c588eea2fbf9",
+			"@@@InProc at 204613F401167DFEF6361717", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227911590, false, "0395d455-c2da-4244-a2a1-6b86fb5916db",
+			"@@@InProc at 204613F401167DFEF6361717", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227912120, false, "3da6a86f-89c5-42da-9420-4a270645a8f4",
+			"@@@InProc at 984BD17E8DA0C25DDFF5DEC2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227912670, false, "d9ac1169-259b-4683-b1cf-325e7d1948c7",
+			"@@@InProc at 984BD17E8DA0C25DDFF5DEC2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227913310, false, "a3b11c8d-a2b0-48dc-9152-de32c425c7b6",
+			"@@@InProc at D6A6382F8C32114FD265F586", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227917410, false, "9523de64-a019-4ae1-bf50-0df7deecbb44",
+			"@@@InProc at D6A6382F8C32114FD265F586", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227918010, false, "3b0c4103-4429-41db-96d1-ab72a0e1cd3d",
+			"@@@InProc at 06E8F5095E3C58E94BE3F556", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227918600, false, "368f2559-8a14-4832-918a-69e8592eac3b",
+			"@@@InProc at 06E8F5095E3C58E94BE3F556", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227919130, false, "65a51314-ae4f-4058-924f-96da856c7cb9",
+			"@@@InProc at 9B3374E32345A2E965186138", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227923550, false, "d935e585-652c-4f0a-b5a5-b2811da879c4",
+			"@@@InProc at A840B833366DD70E305F7FE0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227924210, false, "59a2a331-a89a-462a-849f-dadce44ff546",
+			"@@@InProc at 9B3374E32345A2E965186138", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227924430, false, "0d80c2bb-98c7-47c1-83b6-ff2f9787a524",
+			"@@@InProc at A840B833366DD70E305F7FE0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227925190, false, "69ff1246-42a5-4dd9-a637-a08d0fb5ca47",
+			"@@@InProc at 7C2FC04FE0ACBF98DD0A09D5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227929910, false, "be6aefb6-79aa-403c-83cd-068a9fe462c5",
+			"@@@InProc at 91A3EE6DD18497059EE36476", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227930580, false, "b0ba3244-a8ad-437a-b105-b034ba52b625",
+			"@@@InProc at 7C2FC04FE0ACBF98DD0A09D5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227930620, false, "b869c608-3532-4bb2-b8e8-06095975c8e3",
+			"@@@InProc at 91A3EE6DD18497059EE36476", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227931490, false, "2b804a1b-abe0-404a-81e4-b47c68f9fdf9",
+			"@@@InProc at 077404F6678F8E2A3FC04633", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227936210, false, "815852a3-7acf-47ec-8ab2-1dbf84568584",
+			"@@@InProc at 077404F6678F8E2A3FC04633", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227936840, false, "39e8c0ea-96e6-40ea-bf35-23884ebbff12",
+			"@@@InProc at 6A998FDF1021FE301E54E2F5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227937420, false, "47f3115e-7917-4291-bfca-a95701b760a3",
+			"@@@InProc at 6A998FDF1021FE301E54E2F5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227937950, false, "e26ef0bc-8b1a-4039-a29f-8befe2e5d9ad",
+			"@@@InProc at 7D631D9D1A8B14B75B083CD4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227942230, false, "4aaaf17e-eb68-4811-b948-f623e42bbefc",
+			"@@@InProc at 7D631D9D1A8B14B75B083CD4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227942950, false, "dde50ace-90be-462c-8223-dcba7ec40c21",
+			"@@@InProc at 0DFE21746CAF22E960C36F0F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227944010, false, "22a1c3fe-731c-4965-905e-0c71c405b1f6",
+			"@@@InProc at 0DFE21746CAF22E960C36F0F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227944540, false, "ffee7dba-6d74-458a-977a-d542e3be3061",
+			"@@@InProc at 8E384F39ED0079F58721A9AD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227949240, false, "352cf795-2236-4051-ae5f-d20298b156c7",
+			"@@@InProc at 8E384F39ED0079F58721A9AD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227950160, false, "4c3b9f50-0da6-46a9-ad75-ddb6871c805f",
+			"@@@InProc at EC59C87259842C12B50EA326", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227951650, false, "8056598b-e7ed-406a-a0d8-ac8a515ce613",
+			"@@@InProc at EC59C87259842C12B50EA326", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227952440, false, "4e172376-8bb8-4aef-bea9-c784adc66835",
+			"@@@InProc at 87DBFAA5EC78AB41EF232D28", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227957350, false, "ccd5eb42-6f84-4295-ba41-e535b165b02d",
+			"@@@InProc at 87DBFAA5EC78AB41EF232D28", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227958380, false, "3282965c-b31e-43f5-bfe0-5a027e44675d",
+			"@@@InProc at F74BACE8B873C42921BD731A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227958790, false, "22178c9e-915b-4fb5-8750-8a5755a282a4",
+			"@@@InProc at F74BACE8B873C42921BD731A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227960050, false, "48c76c34-73cf-4527-a6e1-eef5de22aa5b",
+			"@@@InProc at 4921B0C15C7E08A003EDEDD7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227965200, false, "8aa75b91-aa70-47e1-ab45-725321eeae07",
+			"@@@InProc at 4921B0C15C7E08A003EDEDD7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227965970, false, "486d4aaa-d8e2-4638-8d4f-9f92e1be1b76",
+			"@@@InProc at 92C7DBF643CC1A34475FB44B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227967130, false, "49b617f7-e025-4f38-8122-ea29de057ac2",
+			"@@@InProc at 92C7DBF643CC1A34475FB44B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227967670, false, "b4544e00-569f-4141-a832-b3284574005b",
+			"@@@InProc at 4A36B178F701FD78BD425AD6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227971940, false, "1cdfc4f6-5a8f-471b-9454-2be9083c2f68",
+			"@@@InProc at 4A36B178F701FD78BD425AD6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227972710, false, "e9c93f70-dc34-4366-98dd-3ce6fa6dc9a9",
+			"@@@InProc at B5146C5B5737E84B6D2B2CDE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227973800, false, "d6c16ba6-2442-4e1f-aae6-5d4c88f58fd3",
+			"@@@InProc at B5146C5B5737E84B6D2B2CDE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227974480, false, "93b02dec-0acc-4be8-9264-3d5b8f384e4e",
+			"@@@InProc at 147A563ACA2991BC428DAB9F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227978620, false, "2fdf0897-1434-46d1-b9f9-6ac00e8e9e47",
+			"@@@InProc at 147A563ACA2991BC428DAB9F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227979230, false, "b9ca641c-5cbe-4ed9-96b3-3df0e088bd0e",
+			"@@@InProc at 4D5D304189FB500273F845D6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227981140, false, "80d55d4c-ee7a-49c7-a6a6-46aee2b5a94e",
+			"@@@InProc at 4D5D304189FB500273F845D6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227981910, false, "e5cc135d-7ab2-41f7-aefc-62e7522ccfff",
+			"@@@InProc at BB25B2CE607C1BC486E027D2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227984860, false, "b3c6e77b-f0e0-41eb-825e-c85e00b29f81",
+			"@@@InProc at BB25B2CE607C1BC486E027D2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227985570, false, "6daa486a-4770-45da-8b05-f83e196fab0d",
+			"@@@InProc at 165CDFDDC4EE4B33D0B95DB9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227987390, false, "7a3c87b2-fa27-4671-ae34-d6c6f08ebc71",
+			"@@@InProc at 165CDFDDC4EE4B33D0B95DB9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227988060, false, "7476163f-33eb-451a-a390-a3ef6025a45d",
+			"@@@InProc at B51CB5A51B27058E453836C8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227991460, false, "aa88d251-8f53-4e9c-bf2d-8dd79b5e3dfb",
+			"@@@InProc at B51CB5A51B27058E453836C8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227992080, false, "81e2ca72-0f6e-45bb-936d-613a15e71fd7",
+			"@@@InProc at F158A334671772A5C2895C50", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227993780, false, "0fd49329-c656-4f60-a3e8-f21e668c62ef",
+			"@@@InProc at F158A334671772A5C2895C50", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227994580, false, "c583579f-e62e-4c2f-9218-5a0e30e2f1db",
+			"@@@InProc at 6BED466B0FFC04A9070959EF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227997800, false, "723d821f-d0db-4acb-8729-ff814f1e68b6",
+			"@@@InProc at 6BED466B0FFC04A9070959EF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878227998380, false, "35dbbbb0-c132-4d31-b33a-7a72d6f36ae4",
+			"@@@InProc at 1472B17053FE3D1CBDEB57BA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228000280, false, "a3051e5f-568b-4423-9013-c7440b34c664",
+			"@@@InProc at 1472B17053FE3D1CBDEB57BA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228001160, false, "2bb5b757-f564-4d37-b25b-5e978afe83dd",
+			"@@@InProc at 50B123E517A7DE129CA0CA1F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228003850, false, "ed41d499-027a-45d1-9b7c-649c60fbe4c0",
+			"@@@InProc at 50B123E517A7DE129CA0CA1F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228004400, false, "847304d9-2850-4ea3-b738-050231f69450",
+			"@@@InProc at 691524FCF23371BBFB73D4F6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228006980, false, "9af033a6-0de5-4e90-8f9d-67743a4d091d",
+			"@@@InProc at 691524FCF23371BBFB73D4F6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228007650, false, "578d2259-b3f0-496f-bd8b-8747cbde64eb",
+			"@@@InProc at AF112D4ECEBF9FA036B79D50", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228009430, false, "d3df5352-5c74-45b7-8437-4f6c50a8e732",
+			"@@@InProc at AF112D4ECEBF9FA036B79D50", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228010100, false, "ae75f75b-7e26-4ef1-a27f-48bb605887da",
+			"@@@InProc at D1782B0AAE29D2CF52DA67C4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228013060, false, "a9fe46f8-92d9-47f5-9c10-174ff6bfbc41",
+			"@@@InProc at D1782B0AAE29D2CF52DA67C4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228013580, false, "ddd455af-cb16-472c-af27-2434ff2a4645",
+			"@@@InProc at B04FE9C393FC3C405A0E39DB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228015650, false, "a5b2ba0a-d608-4908-8319-3a085cc5bf3d",
+			"@@@InProc at B04FE9C393FC3C405A0E39DB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228016200, false, "35b39c0f-ac2f-4b37-b237-d00073134604",
+			"@@@InProc at 93FD550973EDA9F759AA4265", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228018830, false, "923fc3a5-4f6a-4b77-bdfe-1f9bf74d180c",
+			"@@@InProc at 93FD550973EDA9F759AA4265", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228019350, false, "64df0423-f963-4aee-a6bf-c8682b95da3e",
+			"@@@InProc at E1EE30D4646E691CFF84614B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228021920, false, "6c4184f0-5287-4924-8181-3ce1da7a4bef",
+			"@@@InProc at E1EE30D4646E691CFF84614B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228022540, false, "f88c26e9-8e6e-41c9-8157-3dbd87cedf91",
+			"@@@InProc at D055EE31466D5534C92ACB2B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228027140, false, "7c8f812c-daa0-4a29-ae16-173337abb9eb",
+			"@@@InProc at 9395B3C9A6342CDA18342B43", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228027780, false, "1a1183b3-4014-4ef1-88e4-0864213a9642",
+			"@@@InProc at D055EE31466D5534C92ACB2B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228027850, false, "2e356fad-06d9-4bd8-95bb-fb25286ea23b",
+			"@@@InProc at 9395B3C9A6342CDA18342B43", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228028750, false, "e07cf2c3-d999-4157-a053-88619e67e7a1",
+			"@@@InProc at E19857626F73A87C67805B21", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228033510, false, "1f7a06e0-acb0-46bf-b864-ede652c8c890",
+			"@@@InProc at 96B6F21E831E4A5C7E16BD77", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228034170, false, "92cfc57d-fa5e-43f2-ba4d-fc4401a0b763",
+			"@@@InProc at E19857626F73A87C67805B21", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228034240, false, "51409e58-da72-4993-95c2-f43e3298ac0a",
+			"@@@InProc at 96B6F21E831E4A5C7E16BD77", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228035100, false, "9f40de48-5d06-420c-991b-44846b39eb81",
+			"@@@InProc at 417AB9A5A94A3A11A98E9F65", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228039690, false, "fc8ffb54-ce89-4a1f-8552-183c3d1a28cb",
+			"@@@InProc at 6D809E83090EE369421E3DFA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228040310, false, "cef8a5bd-4c34-44d1-b20e-f57ce4824ab2",
+			"@@@InProc at 417AB9A5A94A3A11A98E9F65", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228040370, false, "2d13054e-f3a9-484a-9588-98fed8b22f77",
+			"@@@InProc at 6D809E83090EE369421E3DFA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228041220, false, "7073274b-5653-4372-bb90-d7b2e5c09cf2",
+			"@@@InProc at B2AB5E35FDB83BF75134C6EB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228045800, false, "ea333f61-1d3a-4580-bf08-dc3d391008e6",
+			"@@@InProc at 59316E144544919329A0B9F4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228046460, false, "964001f6-ddd8-4d94-b8c7-28c780df0ea4",
+			"@@@InProc at B2AB5E35FDB83BF75134C6EB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228046510, false, "420d7b75-26dc-4ac0-9577-b04668adacfe",
+			"@@@InProc at 59316E144544919329A0B9F4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228047430, false, "9be835ef-d7cb-4362-a6b7-eefe1c5ebb9d",
+			"@@@InProc at DAE554652587A9BED75BAD2E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228052430, false, "78fc2834-5b0b-4a64-ad61-a13a14d5fe85",
+			"@@@InProc at DAE554652587A9BED75BAD2E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228052960, false, "625834e7-9ffe-4a89-aa4a-80b8ee4b30d5",
+			"@@@InProc at 8105B42830E7930CDC1FB85C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228057640, false, "43139dc2-ec99-4953-ac00-01831fe38e98",
+			"@@@InProc at 8105B42830E7930CDC1FB85C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228058180, false, "128970a7-74fe-431b-81db-a3cb08076058",
+			"@@@InProc at 0589BFBA48DB2D59A9AB64FA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228058350, false, "b668a58b-71e8-4b4a-b88a-8cd309c7fe64",
+			"@@@InProc at 0589BFBA48DB2D59A9AB64FA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228059290, false, "4a66a7cb-a4d0-4bbc-a44d-18490d02f6d8",
+			"@@@InProc at 4E93F56EDEB1A4916FD5861B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228063740, false, "9ba921b6-c513-42e2-8b88-82aa5be4a4be",
+			"@@@InProc at 4E93F56EDEB1A4916FD5861B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228064380, false, "7d0f326c-ecf5-4ae0-b170-02a155275aaf",
+			"@@@InProc at C16301D616B2B0CCAAFA62C4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228073600, false, "433bf8d1-68fa-482d-b8d2-61d730897159",
+			"@@@InProc at C33078F19FDF37D623A2853C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228073760, false, "3779233a-89f9-4770-a9f5-40f419e77bcb",
+			"@@@InProc at C16301D616B2B0CCAAFA62C4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228075210, false, "e6d6fcaa-da19-4840-b9c1-38aa4f0cda11",
+			"@@@InProc at C33078F19FDF37D623A2853C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228075290, false, "45db0989-ae32-4cae-96ca-eea6a401b02a",
+			"@@@InProc at 47CB4B36C8BF252ED05EC71D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228082410, false, "1b2616dc-0c79-4e23-b96e-f01f53c20110",
+			"@@@InProc at 841180AF942BFFF36A2006EE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228083510, false, "f240b34d-9c9e-4885-b45f-de0afe60f252",
+			"@@@InProc at 47CB4B36C8BF252ED05EC71D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228083590, false, "4f6acd94-dba6-4275-8418-16deb0f2feee",
+			"@@@InProc at 841180AF942BFFF36A2006EE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228084910, false, "773a3e8d-083e-4490-972f-7b464fc10968",
+			"@@@InProc at FD2FD746686CE8D6AB453459", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228091930, false, "59cda61f-1f97-4f53-847a-707f1929fad0",
+			"@@@InProc at 6600DC04FC6F91226BD15CA6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228092740, false, "1d3a4422-3cb0-436f-b567-11492fa651f1",
+			"@@@InProc at FD2FD746686CE8D6AB453459", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228092820, false, "eb70888e-2163-4919-8234-0a25c2cd783a",
+			"@@@InProc at 6600DC04FC6F91226BD15CA6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228093870, false, "42ce9cd6-8eef-4f45-91b8-beb6fc6f4515",
+			"@@@InProc at 7730D460BB2A60B23D385EB5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228098980, false, "4e00dd8f-1e7a-40b6-85d2-bb93a63dff2a",
+			"@@@InProc at 7730D460BB2A60B23D385EB5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228099700, false, "4ff97fff-4b9d-41c6-bdc6-681ab03eb3bb",
+			"@@@InProc at 6415E551F77CD2ABCA3FB794", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228099940, false, "c911063c-6f55-4338-9446-90d4463b734f",
+			"@@@InProc at 6415E551F77CD2ABCA3FB794", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228100730, false, "d474a5b2-cc10-487c-a64c-3612bcea9a30",
+			"@@@InProc at 4CD692DB53A94A72F1AE66E3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228105340, false, "731aadfc-601f-4e06-a74c-0f5a4b854b82",
+			"@@@InProc at B0A3C2594CF620C71920D0F2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228106070, false, "4edc9f56-75eb-40a2-a741-af04d157640e",
+			"@@@InProc at 4CD692DB53A94A72F1AE66E3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228106130, false, "400139f3-5b0d-4cf2-89cb-1a2508c68c4d",
+			"@@@InProc at B0A3C2594CF620C71920D0F2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228107050, false, "2bc1bc40-473e-44db-aa7d-523e8cb89c2c",
+			"@@@InProc at 23C846FBB963E9BB34FBEFFE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228111990, false, "494814f7-e032-4316-8c5d-25300c44ffe3",
+			"@@@InProc at DAD73C2E61052BCDE54560F2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228112620, false, "c8c25a98-c3a1-4922-9609-9038fff8d0cd",
+			"@@@InProc at 23C846FBB963E9BB34FBEFFE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228112680, false, "ef77060f-9192-4dae-8e60-e45d18fec26d",
+			"@@@InProc at DAD73C2E61052BCDE54560F2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228113690, false, "f0bdc6ce-f18a-4fe9-ae6e-8973222c928f",
+			"@@@InProc at 4BC56ABED4953CD610B9DADB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228119010, false, "c5d82de6-2cf5-431e-aca6-9d6cf46ae3fa",
+			"@@@InProc at 6A663B122D00F60622D940ED", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228119700, false, "db9746c2-a93b-4c5a-8366-45b593d01cbc",
+			"@@@InProc at 4BC56ABED4953CD610B9DADB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228119750, false, "a0cbe476-fa0f-441c-9181-55cc42ee59c0",
+			"@@@InProc at 6A663B122D00F60622D940ED", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228120620, false, "8e7d7993-d972-42e5-95bb-d162cf1bd307",
+			"@@@InProc at 8076F6F5DF6B02982850F814", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228126430, false, "a5a32be4-b439-40e4-a0c2-cbc916190372",
+			"@@@InProc at 023C2278A4D0CF04CBE87E61", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228127340, false, "a8a01e93-4a8e-4425-acfe-855cf76a547d",
+			"@@@InProc at 8076F6F5DF6B02982850F814", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228127400, false, "93d2f769-448a-4219-8a44-9a48773cfde9",
+			"@@@InProc at 023C2278A4D0CF04CBE87E61", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228128540, false, "e0b5af27-ff81-433b-ba7d-9095b03c5584",
+			"@@@InProc at 84583FB3E2501CEB2BBF92A8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228135310, false, "bebf1671-b3ab-4130-946d-9e67d404d6a0",
+			"@@@InProc at C1411CC7BAD2635551F99190", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228135920, false, "8e59f4b1-c41d-454e-8925-07dfd1c9eef9",
+			"@@@InProc at 84583FB3E2501CEB2BBF92A8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228135980, false, "a27b9bed-7923-4c50-9209-f1bae6a54bbe",
+			"@@@InProc at C1411CC7BAD2635551F99190", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228136990, false, "7cb7f352-4dab-4827-a289-757429291963",
+			"@@@InProc at 48558F1990AC72D505D4EF30", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228142880, false, "548b1343-9331-4681-be3d-5f466e8ad42b",
+			"@@@InProc at 3545B42DECC7F3F06A52E3FC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228143090, false, "cc9ed685-54f5-4cd7-9b3a-8fb590198460",
+			"@@@InProc at 48558F1990AC72D505D4EF30", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228144210, false, "425ed24d-4e98-47d6-b699-8a59f5b5d034",
+			"@@@InProc at 3545B42DECC7F3F06A52E3FC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228144340, false, "b745247c-75a8-4d39-a80e-87fa1998ca54",
+			"@@@InProc at 3944C153E4BAE0A417175D61", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228150100, false, "8b1109c3-85b2-4242-a8e9-268c5ddda0b1",
+			"@@@InProc at 3944C153E4BAE0A417175D61", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228151170, false, "635ef3d3-8519-4ae4-85ec-fe0eb6e8b069",
+			"@@@InProc at 282F8C6E89156EDD6FA023F0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228154050, false, "995b5bb9-fe1d-4c67-84c8-d7cda73d9f32",
+			"@@@InProc at 282F8C6E89156EDD6FA023F0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228154850, false, "f7c6c0fb-7fb4-4ee0-846e-3d258753f452",
+			"@@@InProc at 8D991244449BDABC577A2003", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228158270, false, "c7538c2d-12f0-4d0c-a580-546f46b3278d",
+			"@@@InProc at 8D991244449BDABC577A2003", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228158890, false, "5d627b6b-c78b-4ae0-bbdd-a16f740af409",
+			"@@@InProc at 76A7E96150AAD4C5F86F2D97", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228160570, false, "2d08ecea-f13f-4638-ae96-d8e6001ad584",
+			"@@@InProc at 76A7E96150AAD4C5F86F2D97", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228161250, false, "1cd77ae4-da33-4748-a2d3-c2b92c4833e8",
+			"@@@InProc at 31938C5B7E3C58511598D634", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228165620, false, "2a3eecb8-9ab9-4ef5-a24c-58b4bed7d348",
+			"@@@InProc at 31938C5B7E3C58511598D634", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228166220, false, "c3bd6716-43b1-4c9c-aecb-bd2cba9e3f78",
+			"@@@InProc at 61AC5564C6796F4082329375", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228171270, false, "bddcd5f6-8105-49ff-b9f8-dce0692cddab",
+			"@@@InProc at 01BC59EC45DBBC86A14D5F85", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228171900, false, "290f4355-5d3c-4c84-9213-9b2b642e04ff",
+			"@@@InProc at 61AC5564C6796F4082329375", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228171940, false, "0a12d60d-68aa-4e79-b639-79d5134a07ad",
+			"@@@InProc at 01BC59EC45DBBC86A14D5F85", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228172870, false, "8cc5dd7e-770b-418d-afab-930e0f936893",
+			"@@@InProc at 74B2473EC79A1A0F9515B533", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228177820, false, "710daf87-396b-45a3-8310-1e153ada607e",
+			"@@@InProc at 74B2473EC79A1A0F9515B533", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228178710, false, "4abb947e-765c-4763-a4d1-a14f27b53750",
+			"@@@InProc at D0D10880F2047B3631C9BA33", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228178770, false, "039df684-0523-442f-a6f2-e2e5fca77e1a",
+			"@@@InProc at D0D10880F2047B3631C9BA33", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228179890, false, "a0bbe639-9fe4-4f21-865d-37754bec9976",
+			"@@@InProc at 6F2BCDF0334AC655B962ECC7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228201620, false, "214c01b6-d9cb-494e-959b-9facca998ec2",
+			"@@@InProc at 11B7C913EF25B0BDFD9C689C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228201720, false, "32b0ce94-6f66-4d6d-b263-e0001746faef",
+			"@@@InProc at 6F2BCDF0334AC655B962ECC7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228203070, false, "d864d908-fefe-4f05-9de5-b3248e88de41",
+			"@@@InProc at 11B7C913EF25B0BDFD9C689C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228203130, false, "d7b38795-5c93-4656-b9d4-5e11b1e6eccc",
+			"@@@InProc at 93233FA06045FCB54B9B4AED", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228208910, false, "67102c4f-3b90-412f-a9c8-c75b13cbbc61",
+			"@@@InProc at 93233FA06045FCB54B9B4AED", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228209540, false, "390a6de5-6b66-4e97-aa1b-38dc88b3bf06",
+			"@@@InProc at 2030B609B9E22C4E556C1296", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228210220, false, "12f186a8-f699-4f94-bb4c-adbbe7969962",
+			"@@@InProc at 2030B609B9E22C4E556C1296", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228210870, false, "75e0a7ce-9202-4c35-81d7-91be92c6de3f",
+			"@@@InProc at 4185EF2BF601EF8D5AEE7C3B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228216880, false, "fca8d6cf-b809-4dce-a0f6-16796e613b71",
+			"@@@InProc at 4185EF2BF601EF8D5AEE7C3B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228217530, false, "a505f28b-613d-4f99-9625-e927729fa1b5",
+			"@@@InProc at B792C647860433D33839F72B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228217740, false, "1266a91b-ca7f-49b1-8784-b05cdb5a8463",
+			"@@@InProc at B792C647860433D33839F72B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228218750, false, "649371ff-33e0-46f3-a405-385cd2fe5cec",
+			"@@@InProc at FC34A51A31FDA573567FDD43", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228223200, false, "f36f977b-9779-4f1b-b0b9-d2f0adaeae9e",
+			"@@@InProc at FC34A51A31FDA573567FDD43", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228223930, false, "0c787f76-be07-4c33-ad4e-b87a2ccb9fff",
+			"@@@InProc at 8035A8BEBD503044F074B358", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228224970, false, "86d1bc0b-7ff7-457f-8427-f4dc52a2efb1",
+			"@@@InProc at 8035A8BEBD503044F074B358", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228225690, false, "a440ad02-5130-401e-99e9-65b2ca5fbe4e",
+			"@@@InProc at 002A260CDBCFA149991BDFDF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228229520, false, "7a7ad1d4-316f-485f-aa25-6ee4647d9b58",
+			"@@@InProc at 002A260CDBCFA149991BDFDF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228230030, false, "b5575f46-f225-42fa-b8e2-69167ca33f2c",
+			"@@@InProc at 4050B5CF8A21B3F713B536B0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228237800, false, "72c057a3-7664-413f-ae7f-56a82ddffa91",
+			"@@@InProc at 4050B5CF8A21B3F713B536B0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228238580, false, "4d7b8393-f287-4ece-99f9-af026b40b839",
+			"@@@InProc at 3626A80969176E4942B4B71E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228240880, false, "e4448702-345d-43ad-beb6-60a7bda350f0",
+			"@@@InProc at 3626A80969176E4942B4B71E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228241710, false, "7608d73f-bf91-416d-8288-887f9bce31db",
+			"@@@InProc at 4E7FAAD6700BFE6774707307", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228244570, false, "bae62070-58b0-497e-aba6-67e678325773",
+			"@@@InProc at 4E7FAAD6700BFE6774707307", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228245160, false, "67c39fde-df0a-47d5-9f4b-77c36d7a8eb2",
+			"@@@InProc at 0D4B9B5288ABB2764DABB27E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228248860, false, "20781dde-ed9f-4ece-8662-4efbd4283a29",
+			"@@@InProc at 0D4B9B5288ABB2764DABB27E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228249640, false, "1902662c-698a-4205-8322-7949f8df4f8d",
+			"@@@InProc at 7978FE31D3E554A21BB62D92", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228250840, false, "e1666454-17d1-4db6-a608-f979de2062a6",
+			"@@@InProc at 7978FE31D3E554A21BB62D92", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228251640, false, "cf61f284-6539-49fc-8c07-2329b4092405",
+			"@@@InProc at 2F0A19890CCD88CB0B0984BC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228255250, false, "10672fd2-fb25-46e4-9e26-848281ef0321",
+			"@@@InProc at 2F0A19890CCD88CB0B0984BC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228255800, false, "35f81837-6b96-4017-92d5-3ae44ccf7822",
+			"@@@InProc at 1E598D7CA99F12D4675E7319", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228257320, false, "71dac638-7a04-40f4-b974-1d615826daae",
+			"@@@InProc at 1E598D7CA99F12D4675E7319", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228258050, false, "4f145fed-3dcc-44ed-9396-7add6776d9c2",
+			"@@@InProc at F85675E07D1C6A5524521A16", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228261080, false, "0096ed05-4bbf-4b75-b879-4f0ceacb3ee2",
+			"@@@InProc at F85675E07D1C6A5524521A16", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228261730, false, "915cf746-3867-472c-9151-ec25adc18096",
+			"@@@InProc at 18D0E4850C144147A54427EC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228263550, false, "8e7bdbe3-c78b-49eb-8d16-ed9ce8a8b8d6",
+			"@@@InProc at 18D0E4850C144147A54427EC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228264530, false, "0d0c6cde-6f88-49a9-83dc-fd291e521f9b",
+			"@@@InProc at ADC4FCEE8C59586A9821FD31", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228267330, false, "e93e352d-ceb3-4c16-ad23-c35c948e3724",
+			"@@@InProc at ADC4FCEE8C59586A9821FD31", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228267970, false, "11812209-8842-4ab5-80ff-d9756e4cdc1d",
+			"@@@InProc at 70314DE9D44F96E9AD8C0618", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228270070, false, "901fbe51-45f4-4411-83e5-590f3031e8ac",
+			"@@@InProc at 70314DE9D44F96E9AD8C0618", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228270770, false, "3508b77b-d15d-4b7e-ac55-20f17d518afa",
+			"@@@InProc at ACE722BB4BD3ACAF499FC80A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228274470, false, "2f2522d5-5079-408b-b810-430b3be49c3b",
+			"@@@InProc at ACE722BB4BD3ACAF499FC80A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228275540, false, "c423f3a7-f6a7-470d-8ec4-62f6dfb61439",
+			"@@@InProc at C27F0D19F8CB477A8147A9F8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228277990, false, "4b332cd3-d90d-4391-909b-175863d101a8",
+			"@@@InProc at C27F0D19F8CB477A8147A9F8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228278670, false, "41a2a644-d0fb-4a3b-b5df-5e6395693c8f",
+			"@@@InProc at 0CAE9F462BBD6B5F66E04B04", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228281290, false, "a6bcd5ba-15c7-4a5e-b59f-e20ea1f1ba90",
+			"@@@InProc at 0CAE9F462BBD6B5F66E04B04", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228281830, false, "6b7074ce-1633-40be-891f-b5d90ca875c5",
+			"@@@InProc at C8013B8EBD07D4E874DC990C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228284070, false, "81789b19-82af-431c-ae8e-f8121cd5f741",
+			"@@@InProc at C8013B8EBD07D4E874DC990C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228284840, false, "05be78d9-09f3-41b0-b701-af685346144d",
+			"@@@InProc at 2072A936AE9D4AF435C43D37", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228288240, false, "3fd11330-c098-41dd-b8e9-ac0f7467060d",
+			"@@@InProc at 2072A936AE9D4AF435C43D37", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228288790, false, "5471870b-4cc1-4aee-964b-294b03a8b563",
+			"@@@InProc at 9BB3128115D9F36ADCF960B6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228294170, false, "9ce2cb5e-82c3-4c45-bd00-1ef1905fbddb",
+			"@@@InProc at 1AACDB6B4559E12D7556B499", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228294840, false, "a6f9b560-d722-4b6c-8b4d-946f98814e5f",
+			"@@@InProc at 9BB3128115D9F36ADCF960B6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228294910, false, "6fbaa47f-b4c2-4cb4-b7fc-da19dd86935c",
+			"@@@InProc at 1AACDB6B4559E12D7556B499", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228295910, false, "c2b9dcec-f851-4d95-8f56-9f11d4945799",
+			"@@@InProc at 6AC0A634A5728589B450985E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228300910, false, "7f369f32-a86f-4c79-a4a6-c3b03eece929",
+			"@@@InProc at BB40E9DFE4041A7A448E2431", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228301550, false, "fda9d5fb-481a-475b-9de0-87aabb9ea406",
+			"@@@InProc at 6AC0A634A5728589B450985E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228301610, false, "ad50d7c7-5276-4875-91e1-4a651a1c1f1d",
+			"@@@InProc at BB40E9DFE4041A7A448E2431", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228302510, false, "ccbca7e8-f98e-4d06-b6ee-88e1839a5fff",
+			"@@@InProc at 5547A5B4122140A39831B202", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228307720, false, "67a769a1-833d-47f6-9de4-1f7da7ee8f9e",
+			"@@@InProc at 4CBB374F209CA3B156A109F7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228307820, false, "8aebb5a9-d7be-4d55-be74-640d95111b9b",
+			"@@@InProc at 5547A5B4122140A39831B202", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228308800, false, "a32bfbe5-a2ea-42ee-9e70-62ee9b615f79",
+			"@@@InProc at 4CBB374F209CA3B156A109F7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228308860, false, "ac9739bd-e69b-430a-b28f-589428b27ab9",
+			"@@@InProc at F30B3F7D8A9DA84A659452CC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228314360, false, "9ab7bb08-b73a-4a2f-93b3-f8ea23e289d9",
+			"@@@InProc at F30B3F7D8A9DA84A659452CC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228314880, false, "edfb5ffe-7281-4157-8224-9419ecea69d3",
+			"@@@InProc at E31133C2C75D167609E825E8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228315040, false, "bc9c641a-84ec-4715-9245-40b6e220c1c7",
+			"@@@InProc at E31133C2C75D167609E825E8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228315970, false, "31e3bd83-72f5-4c41-9408-b32e056d0d1f",
+			"@@@InProc at 5BE806AA63B33A3EB8020948", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228321550, false, "45a608dc-90a0-4755-90c9-bd29a2e49768",
+			"@@@InProc at F424FD7AA675C7000C4F3A40", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228322360, false, "a0c511a9-ccfe-4e66-adff-bef6c78c3a8d",
+			"@@@InProc at 5BE806AA63B33A3EB8020948", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228322440, false, "b48cceac-404c-416a-8266-d9c7d0132977",
+			"@@@InProc at F424FD7AA675C7000C4F3A40", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228323430, false, "e70c9271-d5c7-467f-8672-0cf633272511",
+			"@@@InProc at A4ECD0AEF98C2AE0C0DF9559", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228329220, false, "b740628f-1748-474f-911d-557f60d8965f",
+			"@@@InProc at ED9E5E6837F20839398DAF1F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228329830, false, "019063ab-d4fb-4ab8-8cb6-bb46de5908d6",
+			"@@@InProc at A4ECD0AEF98C2AE0C0DF9559", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228329890, false, "d399a6a9-3931-4bae-9a06-0ac13a817850",
+			"@@@InProc at ED9E5E6837F20839398DAF1F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228330880, false, "ee4bc694-6cc4-404d-a2e8-1459ae0049eb",
+			"@@@InProc at F0ECB231A0AC80469ACEE7C5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228335650, false, "c0d7af11-ea89-45a9-9975-ce7fe47716f9",
+			"@@@InProc at F0ECB231A0AC80469ACEE7C5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228336170, false, "9697fa94-7ab3-4e6e-9738-52ced700f340",
+			"@@@InProc at F6525D974900697288E901B6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228340980, false, "f932bee1-80f2-4d04-833b-680c464e6244",
+			"@@@InProc at F6525D974900697288E901B6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228341710, false, "5386efb8-3c62-46a6-b09f-966fad5947cb",
+			"@@@InProc at 08D8C85781831877F1156EC1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228343360, false, "11bbc661-1bd3-4c41-b7bb-d69609dd251b",
+			"@@@InProc at 08D8C85781831877F1156EC1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228344140, false, "79b17288-b384-40b0-a058-628daf9caa3d",
+			"@@@InProc at DA78736E50D09A49863462B9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228347680, false, "83605b52-0b0d-4635-9f89-75d666a3d37f",
+			"@@@InProc at DA78736E50D09A49863462B9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228348490, false, "56e99ad1-4fc3-4685-acf8-f620d09c07b5",
+			"@@@InProc at F6B7EA1ECD07F6C1C46B993E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228356740, false, "7e413b63-bffc-4d87-b84f-87331a145c04",
+			"@@@InProc at 7351B6979A4A4E5C7C762DDB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228356830, false, "1c580751-6ca0-4f2b-a775-2199375e1749",
+			"@@@InProc at F6B7EA1ECD07F6C1C46B993E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228358300, false, "fd5812b9-163a-443c-aa79-3629e22b94e6",
+			"@@@InProc at 7351B6979A4A4E5C7C762DDB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228358370, false, "ef53e980-88aa-4008-b41f-0180b2ebc5fd",
+			"@@@InProc at CFBDB2ADE16D77E81BC1C23E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228364420, false, "ce10bf2e-4e20-4762-ac9f-1402acbde35d",
+			"@@@InProc at CFBDB2ADE16D77E81BC1C23E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228365210, false, "86cfdf5e-a918-4960-833d-d159613f12a5",
+			"@@@InProc at 6D86C6B7058F9ED5E5FFE5CC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228366120, false, "3f0996b6-e2ca-45ec-b040-b3e11031976e",
+			"@@@InProc at 6D86C6B7058F9ED5E5FFE5CC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228366780, false, "91c82b0a-c5be-4616-a214-1b5ed613ab5f",
+			"@@@InProc at F20F019398CC2E5D855CAE5C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228371460, false, "1f2701d5-ab61-416e-bbcc-490b6353130c",
+			"@@@InProc at 6A3AFC9018A143F4F579DAEF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228372240, false, "c222b06c-c5eb-4547-8112-c130771c9df1",
+			"@@@InProc at F20F019398CC2E5D855CAE5C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228372300, false, "d589662c-c6ee-476f-a435-1fd91bea3971",
+			"@@@InProc at 6A3AFC9018A143F4F579DAEF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228373340, false, "faf22db0-69c8-492a-926d-c1c0d673ce62",
+			"@@@InProc at F04D419B9BAB9C66A5B3C95E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228378100, false, "4a95966e-3d6c-4a14-a104-0b65a0eaab61",
+			"@@@InProc at DFC9B7CED357F0983FA6CE5D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228378830, false, "fb23ae88-fe11-45a4-b0f2-ebddc8b06e3b",
+			"@@@InProc at F04D419B9BAB9C66A5B3C95E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228378900, false, "0db24d05-de52-4c90-ba61-c7cb79dd8bc9",
+			"@@@InProc at DFC9B7CED357F0983FA6CE5D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228379900, false, "0dc12281-ccf8-40b8-872b-2f2b5bfe2f76",
+			"@@@InProc at A644258A64A8A9B6AB0AF7BE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228384730, false, "194bb161-e7f4-4916-8876-922d4ba8f7b4",
+			"@@@InProc at A644258A64A8A9B6AB0AF7BE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228385450, false, "7990123d-4fc5-4db8-80c1-56c6c8191617",
+			"@@@InProc at 4D3BE9B2C42C0C05722D9583", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228387110, false, "4947956d-d421-40e4-adc5-eb42ab8f9357",
+			"@@@InProc at 4D3BE9B2C42C0C05722D9583", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228387710, false, "f88695f1-54dd-448a-9460-57d06d5ac420",
+			"@@@InProc at C537902738D9FB742941B1DD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228391640, false, "57320816-86eb-4673-bc28-6f9fa2aea262",
+			"@@@InProc at C537902738D9FB742941B1DD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228392200, false, "959bf3b8-d25c-44f3-b9b0-d9439814df5f",
+			"@@@InProc at C2C352C00D1ABF3897DEEC2D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228393240, false, "2a69c254-8ffd-4c44-9e07-5b10698fc5aa",
+			"@@@InProc at C2C352C00D1ABF3897DEEC2D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228393800, false, "0ec41b38-f58d-4054-a5f2-818c8eb05abc",
+			"@@@InProc at 5E6125D52BA16289A05A4EF3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228398180, false, "cb0f53cd-76c4-4f9f-b422-627bbd0ac3fd",
+			"@@@InProc at 5E6125D52BA16289A05A4EF3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228399070, false, "d1a56947-97c6-4a34-9ef6-798ba719df79",
+			"@@@InProc at 84EADDD87EFB111D42FF6243", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228400570, false, "353a4a12-c9e3-4a3f-b4a0-cea68c3aaee2",
+			"@@@InProc at 84EADDD87EFB111D42FF6243", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228401390, false, "cef54365-2ff3-42f4-ab07-1e3897f46e61",
+			"@@@InProc at 19083CB8AC1551834C18BA69", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228405110, false, "c74c8e31-8593-480a-9c76-4dbc2a2d6b0c",
+			"@@@InProc at 19083CB8AC1551834C18BA69", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228405970, false, "b29b50b7-c4a2-421a-bdf7-fb400c2e0691",
+			"@@@InProc at 32EEC29CD9E918EFB6432650", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228407190, false, "0fd7d6e6-581a-4826-895b-50c78f20733b",
+			"@@@InProc at 32EEC29CD9E918EFB6432650", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228407740, false, "14e589c1-2e2f-42b9-a168-7c2f06f8b572",
+			"@@@InProc at F3344368CC156A5D834F7A04", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228411810, false, "99c499fa-43b3-458e-990c-7397b404718a",
+			"@@@InProc at F3344368CC156A5D834F7A04", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228412510, false, "08d2b136-ba9e-4e38-8190-8789bc6b9363",
+			"@@@InProc at B0880FFD12F0131C5B02A6D1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228413500, false, "8f5a476a-20c6-41a3-b8d9-c5f6ee1f1fe7",
+			"@@@InProc at B0880FFD12F0131C5B02A6D1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228414060, false, "59eb774f-db6f-40b4-92f1-1b2d981d328a",
+			"@@@InProc at 087EFE12CFA46EDD035A5243", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228418670, false, "850265b7-c3b3-4a53-909f-efb2fc26096e",
+			"@@@InProc at 087EFE12CFA46EDD035A5243", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228419560, false, "5de9fbb1-f6c1-436e-9060-a2580ef207dd",
+			"@@@InProc at 208D905B05242264EBCAFEA5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228421190, false, "22fa1358-48d8-42cd-a031-cb9570cb238f",
+			"@@@InProc at 208D905B05242264EBCAFEA5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228421980, false, "204498c2-0d24-4f6b-ad57-52f612594d49",
+			"@@@InProc at 3B8A9929F38FD81570A16816", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228425480, false, "b34e2f1e-1cab-41be-b20a-f414616cbe02",
+			"@@@InProc at 3B8A9929F38FD81570A16816", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228426010, false, "9479f731-68d4-4979-81ca-bf4bf29794c0",
+			"@@@InProc at 80ADA456EDD0E82125404EBF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228427190, false, "6286181c-c25e-4d82-891f-c06329b73f0c",
+			"@@@InProc at 80ADA456EDD0E82125404EBF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228427790, false, "d76e06b0-9187-48f9-83df-cc39422617bc",
+			"@@@InProc at A51E3ABBE76BD7BD983B162F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228431740, false, "b6a2834b-522b-4858-aa5d-de426055637e",
+			"@@@InProc at A51E3ABBE76BD7BD983B162F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228432430, false, "3491720d-fc8f-47e3-a826-56ab65fa9911",
+			"@@@InProc at DECAC5E21F43772B9D7DF734", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228433360, false, "a3df661e-241a-49fc-839f-0d267f8a1de4",
+			"@@@InProc at DECAC5E21F43772B9D7DF734", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228433880, false, "f2328632-69be-4e03-ba3e-da3016a09c04",
+			"@@@InProc at BA548BA6A08FF59D06D51A34", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228438240, false, "33770425-358f-40a1-b5c3-b61b2016e20c",
+			"@@@InProc at BA548BA6A08FF59D06D51A34", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228439130, false, "744b047e-4b85-4f68-840e-5fbea23e68be",
+			"@@@InProc at AEAE2D8BC6B2910D3121F92E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228440740, false, "da265381-0c63-4006-8c0d-06bc96ae95eb",
+			"@@@InProc at AEAE2D8BC6B2910D3121F92E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228441540, false, "945d59a1-081e-46f8-b0a2-12bf28f1d9de",
+			"@@@InProc at 6DE13A03BDCD85493BA61E78", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228445510, false, "6264c359-6883-4b2b-84ab-b69bcaa66733",
+			"@@@InProc at 6DE13A03BDCD85493BA61E78", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228446280, false, "54864784-bae2-4347-9829-9e561912b5f4",
+			"@@@InProc at 18AD18316BF773AEB07A7547", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228447850, false, "792fb6c9-9103-4fe5-92a5-f55c3650ea4a",
+			"@@@InProc at 18AD18316BF773AEB07A7547", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228448500, false, "cdc56ad9-6b00-47a3-8bc1-f8586a1fadec",
+			"@@@InProc at 1EC950DD980D073B8A505EE2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228454750, false, "4ea24258-3906-407d-ba9f-b7fa537921af",
+			"@@@InProc at 1EC950DD980D073B8A505EE2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228455660, false, "42d1c449-0f24-47f0-9d58-e833255018ea",
+			"@@@InProc at DBC1F3CC2D2316FA4AC57DA6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228456600, false, "2cc7ec4e-188d-4263-b3aa-5f7d6582a20d",
+			"@@@InProc at DBC1F3CC2D2316FA4AC57DA6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228457130, false, "82c43411-e1d0-4ed1-bf97-dff75fb050b6",
+			"@@@InProc at 0F25A538E40C47CC64125732", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228461530, false, "689725d9-8fa0-4c65-a0f0-25920f434ea7",
+			"@@@InProc at 0F25A538E40C47CC64125732", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228462080, false, "5810f0b0-f5c4-47dd-9a8b-ec4b4bcd6a56",
+			"@@@InProc at 45CC0862D70960C6814CA849", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228462640, false, "4bc2ae36-c56a-42db-8cf3-f462b09a64af",
+			"@@@InProc at 45CC0862D70960C6814CA849", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228463170, false, "306ccde3-c034-45e8-a5dc-89df288b5ee7",
+			"@@@InProc at AA58E1F5E66DFBD63670FD23", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228467240, false, "9c5ddbca-2eea-4831-826c-16d53ad654d5",
+			"@@@InProc at AA58E1F5E66DFBD63670FD23", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228468050, false, "3a675011-0a55-4363-8a6d-9a2b905f13e9",
+			"@@@InProc at BE27E9F2F191259F1D825A98", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228468940, false, "19f18136-1431-44de-91ef-e0a0f44b9284",
+			"@@@InProc at BE27E9F2F191259F1D825A98", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228469630, false, "ef259e70-95cb-4780-b03a-5deee4102eda",
+			"@@@InProc at 16F0E8114A7869665980D334", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228473330, false, "af90efdd-d574-4871-bacb-85937977d888",
+			"@@@InProc at 16F0E8114A7869665980D334", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228474110, false, "7404bf63-b17c-4bb7-a116-ef3b6fbdfb92",
+			"@@@InProc at C02114E4CECC3B671D74B619", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228475240, false, "ae4a77ae-07b0-4770-bcde-f8e0c285dcaa",
+			"@@@InProc at C02114E4CECC3B671D74B619", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228475770, false, "4c11a5ad-b474-4aa3-90f7-2b706e8d8755",
+			"@@@InProc at FDCDF49FFC26347327D8B158", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228479620, false, "eef0df07-f23f-4519-bb56-0820b0bb2fa9",
+			"@@@InProc at FDCDF49FFC26347327D8B158", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228480420, false, "cde9a2d4-8782-4b8b-b1c9-ad5ecd302a07",
+			"@@@InProc at 64FE9E54A20C10EFED1C6BFC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228481460, false, "f62402c8-a196-4ac5-9514-567ed102f9e4",
+			"@@@InProc at 64FE9E54A20C10EFED1C6BFC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228481990, false, "c52796ec-b875-4a6b-8d04-b151e23278c1",
+			"@@@InProc at 0B131F6B655C81780D2BC90C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228485990, false, "00939f1e-a5cb-4e4f-9dd8-cf6a686331fd",
+			"@@@InProc at 0B131F6B655C81780D2BC90C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228486830, false, "37e60e3f-09d3-4946-af32-7b4be173c9b5",
+			"@@@InProc at 0B6B785F0F2B43456B4E348F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228487750, false, "1111f3de-1bea-4863-adfd-84b3a1d2eb66",
+			"@@@InProc at 0B6B785F0F2B43456B4E348F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228488300, false, "60947d86-d839-4792-bf1a-4a919b5fa8a9",
+			"@@@InProc at 8F19C8E3ECD1A17A9F0F3DEE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228492250, false, "92363c86-1fdd-45af-ad6f-4147a3c5a560",
+			"@@@InProc at 8F19C8E3ECD1A17A9F0F3DEE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228493040, false, "96c123c8-cee0-4a92-bd1a-b2c6d5831086",
+			"@@@InProc at 162B02F15DA31A0041D07AB1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228494140, false, "070fcc24-c35b-4c3f-a45b-ea76df160e3a",
+			"@@@InProc at 162B02F15DA31A0041D07AB1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228494690, false, "1bb042dc-50b5-4d72-90fc-6d7f4c39f0b1",
+			"@@@InProc at 67180FB23588F90BB7C7C297", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228498530, false, "ec1c6e06-3dd3-48e1-be4a-f4ece59999d7",
+			"@@@InProc at 67180FB23588F90BB7C7C297", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228499220, false, "49c3f183-fed6-420b-9051-a45263f53ea6",
+			"@@@InProc at EC742A156FE7F93467217701", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228500170, false, "40c841cb-4ed0-41ab-93a3-be9f4db6f3b9",
+			"@@@InProc at EC742A156FE7F93467217701", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228500720, false, "8f9ecc1f-2c0c-4b7c-b0aa-d626160ffeee",
+			"@@@InProc at AC4C7863ADAA0722CCE5876C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228504500, false, "6c982b08-87cd-4991-a71f-37d9d513d739",
+			"@@@InProc at AC4C7863ADAA0722CCE5876C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228505120, false, "ada28555-e090-4a10-82cc-bee54a04a923",
+			"@@@InProc at 1C5D5C249C938D646A992EAD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228506220, false, "6eac7b13-9dbe-4a47-8a25-0ff18a9ffd3a",
+			"@@@InProc at 1C5D5C249C938D646A992EAD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228507510, false, "dbc0b551-beb5-44aa-98c0-078d84fb81b0",
+			"@@@InProc at 8D0C1AFBF8F049CC4F99E674", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228529120, false, "0892d4c3-af5d-42f9-93bf-a7c19105db1e",
+			"@@@InProc at 8D0C1AFBF8F049CC4F99E674", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228529750, false, "0f350bb5-6c32-4b92-8ec7-4d64a1b585c5",
+			"@@@InProc at 5881F9F061491B876BBE5A96", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228531260, false, "068ac978-1ea4-4723-93c6-0f2ca256c0a5",
+			"@@@InProc at 5881F9F061491B876BBE5A96", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228531800, false, "2bf9047f-8757-4b1c-840d-a74d01ef119e",
+			"@@@InProc at E767ABF63E1B07A223E9475A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228535440, false, "422e45c8-44b6-486c-8171-4d5add237775",
+			"@@@InProc at E767ABF63E1B07A223E9475A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228536080, false, "358d754c-9e48-4bc1-a00d-1293f08f6ba9",
+			"@@@InProc at 41A4A4910974878ACDAC9164", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228537600, false, "ace25896-a073-4e49-a4d9-7b69a669c8ae",
+			"@@@InProc at 41A4A4910974878ACDAC9164", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228538280, false, "23e3c6f9-a79f-4d27-8f6e-e631bec9bc99",
+			"@@@InProc at D19E09054AFD15086B34CEFE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228541330, false, "8869d088-b76b-454d-a9c7-454c57e6e375",
+			"@@@InProc at D19E09054AFD15086B34CEFE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228541950, false, "0592fcea-2a26-41d4-b5e9-d3039b9f1552",
+			"@@@InProc at 87C64951CA2D5D524BAC9DA5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228543590, false, "b25ec793-63dc-43c7-8473-7c9ed07678f6",
+			"@@@InProc at 87C64951CA2D5D524BAC9DA5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228544340, false, "15273cf5-07a0-4d52-9125-5af03b90c98a",
+			"@@@InProc at 8CEBF905871D8A293D86B74F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228547470, false, "b24ea336-e812-4df6-9159-5158d74e2031",
+			"@@@InProc at 8CEBF905871D8A293D86B74F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228548070, false, "ad8b3cab-fc66-4707-9212-672c4a851e42",
+			"@@@InProc at 52B3A1728B5ED6B4640921D9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228550320, false, "4037b86f-13c6-4b8d-9e3f-3b06ac4fc963",
+			"@@@InProc at 52B3A1728B5ED6B4640921D9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228550940, false, "8f9c090f-6ef3-4acf-baab-d5b05a363af5",
+			"@@@InProc at ED7451D3F00E29EE0E27EE55", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228554690, false, "a74f40a0-d4b0-41a5-8271-7cb5ceb3e62a",
+			"@@@InProc at ED7451D3F00E29EE0E27EE55", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228555950, false, "d20713ed-a506-45ad-9f71-de311a244a8b",
+			"@@@InProc at B92FBE4ABEC7A97AA9B2EA25", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228558480, false, "2403cafe-6c27-4a4a-a2d9-4779607e6363",
+			"@@@InProc at B92FBE4ABEC7A97AA9B2EA25", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228559690, false, "195a9994-1db1-41f0-b050-773a7599ae66",
+			"@@@InProc at ED61B756B141916004A3171B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228566810, false, "ac39c779-9bd8-42c5-a89d-165662343051",
+			"@@@InProc at ED61B756B141916004A3171B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228567700, false, "cc97d08e-3364-413d-aff6-1351b6874d96",
+			"@@@InProc at C1815EC4407DB69B4B7BDBC7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228568910, false, "0ba0ad45-b4e8-417c-91f8-1987ec0c428a",
+			"@@@InProc at C1815EC4407DB69B4B7BDBC7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228570010, false, "27a142d3-092d-4adb-8842-154cedb5121c",
+			"@@@InProc at FE1FA3A8EB930722BAC6D91E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228576390, false, "a3fea3b1-eb24-496b-b349-3d38017b52f7",
+			"@@@InProc at FE1FA3A8EB930722BAC6D91E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228577400, false, "d300cb6c-cfb9-4253-9b83-4ca03933acc4",
+			"@@@InProc at 40523BF90C849A21B685CE98", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228578990, false, "304458a9-dbc7-41c6-985c-5efb66d79183",
+			"@@@InProc at 40523BF90C849A21B685CE98", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228580170, false, "db013ec0-1b5f-4465-b26d-73ad81f0131f",
+			"@@@InProc at 7FA9F1D411204744E3932704", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228588520, false, "09a46007-1543-4741-8397-ff1e489ff646",
+			"@@@InProc at 7FA9F1D411204744E3932704", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228589430, false, "7ba51870-c354-4666-9757-5d5cb80e05d0",
+			"@@@InProc at 372826AFC22AB2DC952F6044", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228590440, false, "99258ff0-bb4a-4d6f-ac1f-933a40e14a1d",
+			"@@@InProc at 372826AFC22AB2DC952F6044", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228591560, false, "03e69225-179c-4951-8f24-3e115cc572b9",
+			"@@@InProc at 4E79BE35DBF1B088C032E57B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228600430, false, "5fcc9158-c6c8-4abb-9ef5-e1121f8f033b",
+			"@@@InProc at DFD79FE69AC00EAD2A9A628A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228600530, false, "d588a4be-27e5-4121-b853-a791486f8d48",
+			"@@@InProc at 4E79BE35DBF1B088C032E57B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228602440, false, "5f2a6568-105f-4e63-9d27-f99cdffab1fd",
+			"@@@InProc at DFD79FE69AC00EAD2A9A628A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228602560, false, "7b6c9d9e-ae71-4cbc-87e3-4c665b5aa227",
+			"@@@InProc at 3C88A2F9D29B3383E15C74D8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228614160, false, "fe737f38-2d40-4df6-8fcb-0836ec3dcaec",
+			"@@@InProc at FB2B9E333BB20455E23BED3B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228614250, false, "82c300f7-527b-45fc-a85b-1569e2975b0d",
+			"@@@InProc at 3C88A2F9D29B3383E15C74D8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228616070, false, "30494dab-cbe4-4525-b4dc-69876c6a90a7",
+			"@@@InProc at FB2B9E333BB20455E23BED3B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228616180, false, "9b0f297c-6b7e-4f57-b69b-df4693a15bf7",
+			"@@@InProc at 3A9F2A7E36CF9D28593969A5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228625420, false, "d310dfd0-a058-4edd-9c35-08572146a950",
+			"@@@InProc at EA3D4FBC4A5599B473A96AAC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228626390, false, "38a36fa2-faaf-4c3b-9271-4873a7609280",
+			"@@@InProc at 3A9F2A7E36CF9D28593969A5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228626490, false, "ace74664-ada8-44de-8d41-d9b05872f654",
+			"@@@InProc at EA3D4FBC4A5599B473A96AAC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228627750, false, "9e5edd58-fddb-4b09-9140-d3c25d081948",
+			"@@@InProc at EACDFA2AE4DBC934107F2801", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228635340, false, "10743c8d-d9da-4a38-84b5-4c35f88694b4",
+			"@@@InProc at 263240FEA1C0633D9C113318", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228635600, false, "eec5dfea-a725-451b-b8a0-d445e39cea20",
+			"@@@InProc at EACDFA2AE4DBC934107F2801", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228637040, false, "091d4776-48de-4c35-a2ef-7f08396ca408",
+			"@@@InProc at 263240FEA1C0633D9C113318", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228637120, false, "2358d1e3-23a3-4d94-a47d-ac2f15d32b72",
+			"@@@InProc at D88FCE0EF8318D9304734FB2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228645080, false, "a550693d-4492-427f-832f-b076879e328c",
+			"@@@InProc at A72650B72BC2F8671BBC1857", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228647840, false, "fa52b001-22f1-4f39-9461-8b2e32dbf948",
+			"@@@InProc at D88FCE0EF8318D9304734FB2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228647940, false, "5cf8f3c4-3519-499c-8443-05481b9bf45d",
+			"@@@InProc at A72650B72BC2F8671BBC1857", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228649780, false, "a8a07b86-281e-4aba-8dc3-0906f9d1b3e6",
+			"@@@InProc at 1343273D9F07F6A57CC0EE5B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228656760, false, "cd342cfb-47fc-404e-a9be-8a46a372db0d",
+			"@@@InProc at 1343273D9F07F6A57CC0EE5B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228657740, false, "f84da360-fccb-4365-9099-1c6a59322c5b",
+			"@@@InProc at C8E85847FD6A86AF175B355D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228660950, false, "f174ec39-7a65-4dbb-9985-721b1b8dcc84",
+			"@@@InProc at C8E85847FD6A86AF175B355D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228661830, false, "7bbdd494-ff6f-4ea0-b17a-2938b0be7bfe",
+			"@@@InProc at 524A275A1235E4370EB4F48A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228665690, false, "3e91f9a3-cd79-4203-91cf-306eb8dada36",
+			"@@@InProc at 524A275A1235E4370EB4F48A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228666520, false, "86f79ffe-409c-4155-a3f2-2de9603250e5",
+			"@@@InProc at EBB6933090478B959A92AB03", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228669520, false, "325119ba-9007-4b61-904f-aab82441707f",
+			"@@@InProc at EBB6933090478B959A92AB03", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228670310, false, "f42caf89-4aeb-4ab4-95ae-f28ed84e3e78",
+			"@@@InProc at 086C24EBDA6F4772B9B7CD27", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228674140, false, "fd1f98d7-dae4-4758-9c15-d981092369d7",
+			"@@@InProc at 086C24EBDA6F4772B9B7CD27", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228674930, false, "cc0fda7a-029e-475d-b47c-29400a51da6e",
+			"@@@InProc at F03415553325E0E71FCE92C7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228677790, false, "391acb2f-3c55-4e3a-8d54-cd9a133af6d3",
+			"@@@InProc at F03415553325E0E71FCE92C7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228678680, false, "dc11afec-4321-405f-8d41-e60751cf6d2b",
+			"@@@InProc at B9EAFDDF8FE18CFE5276BE9A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228682590, false, "e0fef7eb-5a39-4748-92a0-86afac445006",
+			"@@@InProc at B9EAFDDF8FE18CFE5276BE9A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228683460, false, "200374e8-ebbd-4133-8f04-94c32535b459",
+			"@@@InProc at 635AAC3BAEA761ED5AEA56E5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228686370, false, "57e4d611-4163-4c20-9a61-1b8134aa7e2a",
+			"@@@InProc at 635AAC3BAEA761ED5AEA56E5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228687180, false, "6e49a126-ddf5-418b-8a5f-2039a1dc43b9",
+			"@@@InProc at 389BBA5B6640EEFD3AB0B452", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228691020, false, "80050438-efca-4069-b040-687e850ccb82",
+			"@@@InProc at 389BBA5B6640EEFD3AB0B452", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228691910, false, "fc3fa2e0-f4f8-4170-98f9-f77cddc4a135",
+			"@@@InProc at 28E6251B1D014B7745A70936", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228694680, false, "27ed1bc1-5f8c-44f2-8d68-812699f6a82f",
+			"@@@InProc at 28E6251B1D014B7745A70936", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228695580, false, "6b21cba4-7f2a-4538-a351-4c92ac0ad7e0",
+			"@@@InProc at BEA5BA48B6BB8B638B92FED5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228699830, false, "fe87e479-5c18-4d0e-8229-d96068f4d807",
+			"@@@InProc at BEA5BA48B6BB8B638B92FED5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228700620, false, "3a98a1bd-c70c-4125-8726-700389b12650",
+			"@@@InProc at E61565D2342D3E4BCC296D84", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228703680, false, "f2cba162-f44e-4be9-b021-c75066db841f",
+			"@@@InProc at E61565D2342D3E4BCC296D84", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228704610, false, "f820a08f-bc01-473c-9fcd-539046b378dc",
+			"@@@InProc at 54E0D7502D92323913A1BE20", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228708140, false, "fbda37ff-58ae-4870-aacc-fce68d3e4e92",
+			"@@@InProc at 54E0D7502D92323913A1BE20", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228708970, false, "4a704009-84ab-4f7b-ab91-5839d3a3e51a",
+			"@@@InProc at 425B972F8E0DF15A79007826", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228713300, false, "e7b04733-ba37-461b-b046-0eb306db679f",
+			"@@@InProc at 425B972F8E0DF15A79007826", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228714200, false, "89baf664-c394-4de1-a65c-55ae7327ad35",
+			"@@@InProc at 5D250D3F10338D75D1DD32B0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228716620, false, "7c2f6f75-2d51-4b33-9719-9bd5d1f1c393",
+			"@@@InProc at 5D250D3F10338D75D1DD32B0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228717410, false, "ce2fb9dc-cd3d-47ca-b5c8-c21710698b4f",
+			"@@@InProc at AFE5A408653B1107AD6FA44B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228721910, false, "00e535b4-102c-47e3-81e0-429b978f352e",
+			"@@@InProc at AFE5A408653B1107AD6FA44B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228722730, false, "eb4e8f44-2f0d-40b2-b2c6-914b060ecd3d",
+			"@@@InProc at 552561009CE6ADEC2B70E6DB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228725010, false, "c4426513-e768-4655-8f37-1b786288be69",
+			"@@@InProc at 552561009CE6ADEC2B70E6DB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228726070, false, "e5f4aed4-623a-4338-a193-5257ccd446ec",
+			"@@@InProc at 793C9C2D5E4AC3E69F5E157F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228731370, false, "23040961-58ee-4ab9-812c-3f758edd56c6",
+			"@@@InProc at 793C9C2D5E4AC3E69F5E157F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228732170, false, "3edfdf06-e882-48fd-827d-b67ce32d66f3",
+			"@@@InProc at 599420CD312915EDE4180258", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228734480, false, "1fb94c68-c619-4a95-8aaf-667867da3974",
+			"@@@InProc at 599420CD312915EDE4180258", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228735380, false, "52c20558-78ba-4e2b-baca-4c7871e484e7",
+			"@@@InProc at F21B488AEB3E97736455E872", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228740390, false, "964123a4-56e2-4ca3-9e81-08db3cf91e76",
+			"@@@InProc at F21B488AEB3E97736455E872", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228741220, false, "baf35f37-7884-4f97-bc1a-255d8010868a",
+			"@@@InProc at 234202EA753D1D52C486703A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228743450, false, "84425026-9ff0-45ba-974a-8765522bc759",
+			"@@@InProc at 234202EA753D1D52C486703A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228744240, false, "8d7533f2-abdb-4551-88fd-851bd90ed5d4",
+			"@@@InProc at DEB7674076ECBAEE100F1754", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228749000, false, "a8238007-0ba3-40a5-ac81-0020fbc2e8e7",
+			"@@@InProc at DEB7674076ECBAEE100F1754", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228749810, false, "e1025f2f-8dca-46c6-8e47-1ffcf39de7fa",
+			"@@@InProc at E617A2B4CA990C29A7E23E89", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228753390, false, "cfca7aec-3f36-4148-bf8b-158874eb68f3",
+			"@@@InProc at E617A2B4CA990C29A7E23E89", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228754380, false, "e3ea238b-b0a1-473e-b87f-6b99d92f79f4",
+			"@@@InProc at FA0F44D5B20FEBEAD8C4B15D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228758370, false, "2b8e54f7-be92-4a2a-927c-8e3a37eca17e",
+			"@@@InProc at FA0F44D5B20FEBEAD8C4B15D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228759200, false, "72b77415-6ca3-4448-a0af-53c1c35af0a5",
+			"@@@InProc at 1F50FE401E421CFBB46BB06D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228762710, false, "54813edd-f31a-493b-bc7a-d8dd82d2e4ff",
+			"@@@InProc at 1F50FE401E421CFBB46BB06D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228763510, false, "089ea335-73b1-4fc5-b68a-2b4ecb8ca96c",
+			"@@@InProc at A7E27FC557162E20DE4EA6CA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228768390, false, "41bf1466-10d4-4712-bae9-ca483aa45414",
+			"@@@InProc at A7E27FC557162E20DE4EA6CA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228769490, false, "ad357011-0b63-40d9-adc0-a5c15e1ca519",
+			"@@@InProc at 56A1437C5AD2022CF7472998", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228776760, false, "d1e1adeb-e23a-4c5b-86ee-5b6aca4de16e",
+			"@@@InProc at 6615812573A6A8C12C78DEC2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228777710, false, "15a41702-5d2f-410b-91ce-6b187d0e0087",
+			"@@@InProc at 56A1437C5AD2022CF7472998", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228777820, false, "6bd13122-9d1e-42da-bbd2-e168d30d67e8",
+			"@@@InProc at 6615812573A6A8C12C78DEC2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228779120, false, "5163efd6-dc80-4608-803e-867efcf0d73b",
+			"@@@InProc at 44D3F167A8D81024EB648468", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228786250, false, "aad981a3-7b27-4813-9b33-8f0c9d977644",
+			"@@@InProc at 64F5E43673F9E5FEFF388B86", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228787430, false, "d406ef74-cd1a-46ab-9181-678e0bce941d",
+			"@@@InProc at 44D3F167A8D81024EB648468", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228787510, false, "3f061175-47ef-488e-bd62-d5dace3fae5c",
+			"@@@InProc at 64F5E43673F9E5FEFF388B86", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228788940, false, "f1b842c1-b084-461d-9dc5-81390c56afce",
+			"@@@InProc at F6D22B04D383CDF37032CD94", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228796440, false, "5e743fce-21b7-46bb-b509-59fd5a8483ea",
+			"@@@InProc at 450122AC45006E98DB94AA54", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228797500, false, "a00433f2-2928-441d-8bae-f424e48fddf0",
+			"@@@InProc at F6D22B04D383CDF37032CD94", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228797600, false, "2101d72c-7a47-4e1d-a3c4-702baa52c412",
+			"@@@InProc at 450122AC45006E98DB94AA54", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228799140, false, "c557915a-322c-4884-ad70-35790cbcf4ed",
+			"@@@InProc at 359186A52FC946780F337644", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228807530, false, "3947f33b-f0a6-48d5-93c2-ed991ad306eb",
+			"@@@InProc at 3462E64AA0DEB2E8CD32F2BE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228809140, false, "9a24de30-2400-4b8a-b5eb-865e2c840514",
+			"@@@InProc at 359186A52FC946780F337644", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228809400, false, "b9650206-6ad4-486c-a81b-5d35e758b473",
+			"@@@InProc at 3462E64AA0DEB2E8CD32F2BE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228811060, false, "518b0405-3c71-4b96-b3f7-19c1d76b0322",
+			"@@@InProc at 8BE916B37DF7A4C1FDAD177D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228818910, false, "d9c622e5-6503-4241-9c3d-80bb51a85e9a",
+			"@@@InProc at FE8BD3D973D1F7C9E04AAD0C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228819930, false, "05619386-6070-4014-9eae-0a863926b091",
+			"@@@InProc at 8BE916B37DF7A4C1FDAD177D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228820030, false, "954d31e0-6bce-49a2-9e1f-9d6aec2bb727",
+			"@@@InProc at FE8BD3D973D1F7C9E04AAD0C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228821590, false, "5e6f2671-b506-450c-b713-2c16eb4bd4ad",
+			"@@@InProc at 876D5439B7506FBA3FFD35AD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228830290, false, "0f71544b-0387-4c49-9c18-4e0189ae328f",
+			"@@@InProc at 73D24BD38CBB993CBDF0FBDB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228831550, false, "8cf72c4b-1b0e-4509-b0a2-db78c05abb01",
+			"@@@InProc at 876D5439B7506FBA3FFD35AD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228831660, false, "f1a44c7f-950e-4c0f-b9dd-cf6b7f5967f5",
+			"@@@InProc at 73D24BD38CBB993CBDF0FBDB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228833480, false, "e6812c5c-af12-45b0-84b1-fd7e2dbbf819",
+			"@@@InProc at DC56095C95F0F5692E9BC5EA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228842900, false, "4e11b16c-85c8-47d7-bd2c-8881d9e7a05e",
+			"@@@InProc at 502402CBAFF69E35F010924A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228843010, false, "fef6a615-953b-44bf-944e-280ee6ffe87a",
+			"@@@InProc at DC56095C95F0F5692E9BC5EA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228845040, false, "66c06daf-2af0-427a-b532-ed168b5d140b",
+			"@@@InProc at 502402CBAFF69E35F010924A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228845130, false, "1a036d63-6e66-431a-a41b-30e27aa4052d",
+			"@@@InProc at 41D20483BF313E67AEA71F7B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228854800, false, "8ae02ed2-1747-434a-8c86-d172a5c51e81",
+			"@@@InProc at 41D20483BF313E67AEA71F7B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228855710, false, "b44bd04f-6d8e-4569-81e0-48a54e59a3cb",
+			"@@@InProc at CD458BC9401B34C4459A6F31", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228858970, false, "62ba571c-28b1-44f4-bc2e-dada34b71a4b",
+			"@@@InProc at CD458BC9401B34C4459A6F31", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228860350, false, "f0925639-e8c5-41ca-b7ab-5360058e4e31",
+			"@@@InProc at A341F6AD4D7A1A8F9BD4A52D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228867300, false, "1bd890f2-5cd5-404c-84c1-602cfb51f869",
+			"@@@InProc at A341F6AD4D7A1A8F9BD4A52D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228868460, false, "f1c66e6c-bb3e-4357-8781-be7243af00c8",
+			"@@@InProc at E391F3FE24FDCC2D1ACF7751", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228868920, false, "bd43d9c9-6d17-470d-bc2e-d6f6e2b4065e",
+			"@@@InProc at E391F3FE24FDCC2D1ACF7751", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228870160, false, "ffd27c7c-9f59-43b9-afde-6d37312f58d4",
+			"@@@InProc at 854E2C890F9922D76D7D73E5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228877460, false, "88f9d848-b53f-4423-8c66-2975540ae9b4",
+			"@@@InProc at 854E2C890F9922D76D7D73E5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228878360, false, "e5a79ad1-fc3d-4697-a8b5-4c4e2a0bc30c",
+			"@@@InProc at 7FBC7026014EDCC245C31303", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228879250, false, "37f9263b-3ca0-4128-aca4-06e9b50eb5ac",
+			"@@@InProc at 7FBC7026014EDCC245C31303", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228880050, false, "f5da7e49-8583-4493-a235-657f371ad66a",
+			"@@@InProc at B23F056AEA920AEF948F191A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228886710, false, "e96311d8-c5c8-4d39-abd1-6d7e2134ad54",
+			"@@@InProc at B23F056AEA920AEF948F191A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228887690, false, "3c4393ff-496b-4da4-8eab-d65b8b07036c",
+			"@@@InProc at EBC7D91671EC77D5FE83ACC6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228888040, false, "0e71db75-1b8e-4459-bb4b-fbe953a935e5",
+			"@@@InProc at EBC7D91671EC77D5FE83ACC6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228889080, false, "37371b8e-1d19-46ff-8368-9b747e004839",
+			"@@@InProc at 7A2DF2C692A087D0126758B1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228897460, false, "10b4308f-b946-498d-a62b-4b43e5e83a6b",
+			"@@@InProc at 73D154D39E6F58028D3D8DDE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228899060, false, "a2d449ba-9652-4707-a52f-fec746e33d87",
+			"@@@InProc at 7A2DF2C692A087D0126758B1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228899190, false, "b9ade865-0a1b-414b-b28c-72cf1a10ddea",
+			"@@@InProc at 73D154D39E6F58028D3D8DDE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228900820, false, "6978cb53-940e-4d44-b68e-aa5bdec78c81",
+			"@@@InProc at 69959ED16E9EF649075FD1D8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228908760, false, "230fbbc3-2666-4cd0-b11d-f9de4eb57ca1",
+			"@@@InProc at 69959ED16E9EF649075FD1D8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228909660, false, "f47e9da0-5d25-4e7a-af42-b385d4d73bf8",
+			"@@@InProc at 8F0406927F99B2CDA0B6B02A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228910670, false, "97497a5f-ae28-4371-bd13-a6cd0e0ac258",
+			"@@@InProc at 8F0406927F99B2CDA0B6B02A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228911530, false, "ba1f4cdc-8b0e-4ae6-a413-9e928d7b18bf",
+			"@@@InProc at FBDF2D6167B0F0EEBE177CF3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228917540, false, "faa4486b-8caf-4e7a-ad25-b412eac22f9b",
+			"@@@InProc at FBDF2D6167B0F0EEBE177CF3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228918530, false, "2495d5db-64b9-4f34-88de-9dc300657a1e",
+			"@@@InProc at 26E58B5FDA3A077D28F200D3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228920090, false, "5173a4f8-e23d-486d-bed0-0b6b3354ce93",
+			"@@@InProc at 26E58B5FDA3A077D28F200D3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228921250, false, "cb47a7a3-e208-4885-8858-047f95a204eb",
+			"@@@InProc at 0EBD7D227F64A62E0E06FEFB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228927240, false, "cc8f08f7-3d72-463a-8b74-e5a4c4449d4f",
+			"@@@InProc at 0EBD7D227F64A62E0E06FEFB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228928140, false, "aeb8c556-3f64-4b8f-94c6-0d9b5094edad",
+			"@@@InProc at 303C601AFE8925D88FB0E951", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228929680, false, "a548262c-b660-4770-830a-ca0a2b1a679a",
+			"@@@InProc at 303C601AFE8925D88FB0E951", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228930470, false, "0c394acf-1c29-4be1-b312-a0ac05c9c3bc",
+			"@@@InProc at 61BA7C4F57E4CC1C2159EF23", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228936730, false, "b73cd7af-2a26-410c-b099-29278b16c5d6",
+			"@@@InProc at 61BA7C4F57E4CC1C2159EF23", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228937840, false, "1ecba76e-ebe0-462f-a571-fb75c5618890",
+			"@@@InProc at 42FE3CAB5EF0716C7CBC17BE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228939420, false, "73766493-004d-449a-942d-f56da5997b52",
+			"@@@InProc at 42FE3CAB5EF0716C7CBC17BE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228940210, false, "d50697f8-7699-401e-9a28-bfd5fcbe1402",
+			"@@@InProc at 24B02AF2BF321BE1B204F2FC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228945670, false, "d36cbe6c-b0c6-41c0-b674-f3a540612a81",
+			"@@@InProc at 24B02AF2BF321BE1B204F2FC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228946510, false, "d08397ad-96e6-403a-ae0c-0d06623aea26",
+			"@@@InProc at 2DFAF2E1509069FA5C43049C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228948370, false, "4ad3bf21-2e1d-4473-b82c-e2bb5f47c5e5",
+			"@@@InProc at 2DFAF2E1509069FA5C43049C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228949390, false, "e6f49929-fcfa-4d1a-bd56-5c9fd16be080",
+			"@@@InProc at E2BCC34644C1FC5999FF8B71", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228955450, false, "9cd2e75f-8b79-400e-9669-02ae232c95f4",
+			"@@@InProc at E2BCC34644C1FC5999FF8B71", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228980430, false, "32ea053a-9297-4910-9c37-e5b4f5a974e0",
+			"@@@InProc at CF781D18F61E60B2C337D64B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228982970, false, "bb41fe26-a876-470d-ab8a-9cadd1aa7765",
+			"@@@InProc at CF781D18F61E60B2C337D64B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228983950, false, "f73c5ef6-2cab-41c9-93a2-76e585bf174a",
+			"@@@InProc at DA0F7DC7C049AF6D9F24339E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228988870, false, "3329cf2a-9f8d-4157-8487-28f6bdcd1fda",
+			"@@@InProc at DA0F7DC7C049AF6D9F24339E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228989760, false, "6d52593e-4114-46b2-940a-350f7f8f2888",
+			"@@@InProc at 3A83CBD4F2D5C24E88BB74B0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228993850, false, "12c74f51-9715-4d90-962f-98ca45d26f19",
+			"@@@InProc at 3A83CBD4F2D5C24E88BB74B0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228995040, false, "af02824d-da96-472f-9d81-cacb90259ebc",
+			"@@@InProc at DA149CE5489CA6CAC1E5A640", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228997630, false, "0f520eda-8edb-45b5-b248-474b2e6be651",
+			"@@@InProc at DA149CE5489CA6CAC1E5A640", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878228998430, false, "b9917d87-440a-4a1c-9fcf-03847853a63c",
+			"@@@InProc at C6B99931F5132C38E9024311", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229003760, false, "2bb1470a-d7ad-47c6-8475-8e2c64a9388d",
+			"@@@InProc at C6B99931F5132C38E9024311", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229004730, false, "1399b92f-8767-44ab-a430-742ca1dd2256",
+			"@@@InProc at 3A9E12FB1D54BFB5B8C9880B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229006410, false, "6beafa56-0450-4053-a17f-0082b5940c23",
+			"@@@InProc at 3A9E12FB1D54BFB5B8C9880B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229007200, false, "92654bf8-58db-4184-8ca1-237fe546725b",
+			"@@@InProc at 41731A70001B1994AFC533B9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229014760, false, "cf7fd92c-b6b6-4110-8cb4-8719653fea5c",
+			"@@@InProc at 568711809A05B7CF349FD07B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229015890, false, "b7a84969-32d5-403a-a2c4-9599014f9b00",
+			"@@@InProc at 41731A70001B1994AFC533B9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229016020, false, "5e1fb4cb-70ad-4bab-bf6e-e79108694ba9",
+			"@@@InProc at 568711809A05B7CF349FD07B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229017580, false, "db6c7839-f268-4b93-b34e-542ed0bfcc21",
+			"@@@InProc at EAFEEFCBCD86B8B73D9E75FA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229025180, false, "fd4d952c-8456-4d8c-8175-fdee64c70ad7",
+			"@@@InProc at EAFEEFCBCD86B8B73D9E75FA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229026000, false, "b60aac14-56b7-4db7-875e-3d355decdf00",
+			"@@@InProc at 80AE2C3A496468747531A934", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229026190, false, "a2f6ad90-6362-4e21-a050-bef7ea46f474",
+			"@@@InProc at 80AE2C3A496468747531A934", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229027510, false, "477d9380-2338-4f8c-9460-34209309ce70",
+			"@@@InProc at 52BEE554ED2C67A8C48CA39F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229033680, false, "55bf6b0b-175d-4b7e-a820-1870be93eed8",
+			"@@@InProc at 52BEE554ED2C67A8C48CA39F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229034470, false, "2363059a-d7a6-43f5-b28a-c6df0af6a734",
+			"@@@InProc at 0FBB1589D6E635C7545569D1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229035280, false, "007f1dfb-e607-4dcc-ae43-846c108ca68c",
+			"@@@InProc at 0FBB1589D6E635C7545569D1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229036070, false, "e1691ff8-4304-47c8-b0a2-6a16a5e26050",
+			"@@@InProc at 726DDE003E292F648E5441CB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229042050, false, "63c57a76-e54d-43bc-ac8b-8c3fe82e86bd",
+			"@@@InProc at 726DDE003E292F648E5441CB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229042900, false, "a4b2d272-d1e8-4a56-a7f5-3624fb930bd7",
+			"@@@InProc at 2D02DB1B394F9CC2A037E89A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229044460, false, "a44edba3-9bf0-4dd3-9c4a-88f354e39406",
+			"@@@InProc at 2D02DB1B394F9CC2A037E89A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229045370, false, "7db0103c-c1bb-428b-a78f-23fc1b9e63b6",
+			"@@@InProc at F2DA0AD3A4E2BD4DE85DA440", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229052470, false, "5d4f9947-5f1a-4562-bb34-afc2e71d531a",
+			"@@@InProc at F2DA0AD3A4E2BD4DE85DA440", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229053970, false, "e607155c-4b36-48b2-b264-3a8b6112e5bc",
+			"@@@InProc at 3EABA9FC5B96FFFAC981AE5E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229055570, false, "65b8fd0a-d816-4438-83ea-799a20da1719",
+			"@@@InProc at 3EABA9FC5B96FFFAC981AE5E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229056530, false, "53a90bf5-09dc-4514-8657-a214ef8f374d",
+			"@@@InProc at C39797E6EF707F7ADEFD14C8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229062310, false, "2ebe3a76-9f61-4651-821f-e993cdeada24",
+			"@@@InProc at C39797E6EF707F7ADEFD14C8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229063510, false, "d1285a21-6dd0-41ec-82e1-afa9621b540b",
+			"@@@InProc at 046CA1E971360AD4DCA3B13A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229064870, false, "485ee851-0ab5-4ee5-b3bc-c52201002325",
+			"@@@InProc at 046CA1E971360AD4DCA3B13A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229065690, false, "79b298ed-de34-456a-884f-68e121d4c9cf",
+			"@@@InProc at 3E4917529CFCF7F656193991", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229071500, false, "44366426-e07f-446a-bd6e-f640d50916c2",
+			"@@@InProc at 3E4917529CFCF7F656193991", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229072550, false, "83136721-ebae-483d-859b-7dfe6dde2791",
+			"@@@InProc at 8CD5301F62E7095F851028AA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229074540, false, "df183868-f082-4e60-9a20-c73f4cb371fe",
+			"@@@InProc at 8CD5301F62E7095F851028AA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229076650, false, "3ecda82a-8266-450a-9f44-f7fb0e456be2",
+			"@@@InProc at 8C2E853CBD9C0FA159BD28F0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229081470, false, "99609845-9129-4962-b5bb-5976c1c236b7",
+			"@@@InProc at 8C2E853CBD9C0FA159BD28F0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229082290, false, "bddaca2f-ae68-4723-bdac-d1a4aaea6748",
+			"@@@InProc at 865622D1E1A48BF075F21C5C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229086070, false, "95dd63b9-c9a3-4a9a-b195-6d9dac433dcf",
+			"@@@InProc at 865622D1E1A48BF075F21C5C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229087150, false, "6bdcdb0c-f9ef-49c9-92b5-221b88ea80f9",
+			"@@@InProc at A72FDBC012B067550FB8BF16", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229089960, false, "7ad5da8b-a62c-4a98-ab1c-0bf05e8ce5de",
+			"@@@InProc at A72FDBC012B067550FB8BF16", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229090770, false, "39890e3c-f0aa-4845-a34b-f70ccac22b9e",
+			"@@@InProc at F5F6F205C280F083D2AFF6B5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229095230, false, "419de3dd-e2b7-4b42-a7fb-e3d38abd787c",
+			"@@@InProc at F5F6F205C280F083D2AFF6B5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229096160, false, "a52bfab6-371e-4ce5-953e-36c6ced1c82d",
+			"@@@InProc at B32494C1E6F8D3391ECC10E7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229098560, false, "bd6f92c0-5cad-4184-8ea8-025592ebba67",
+			"@@@InProc at B32494C1E6F8D3391ECC10E7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229099550, false, "6b37ac15-ea1a-4b8a-8032-f762fe00f07f",
+			"@@@InProc at CAB55825ACF935E31CDC91F4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229104010, false, "dab299c0-2dc8-40d5-a94c-fa6529fe26d1",
+			"@@@InProc at CAB55825ACF935E31CDC91F4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229104960, false, "084ad376-da96-4c9f-a4d7-9bad087da2a6",
+			"@@@InProc at A9087E0295018D76298EE8D6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229107230, false, "fc47ebb3-6a62-43ba-9120-76f2d3429aab",
+			"@@@InProc at A9087E0295018D76298EE8D6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229108200, false, "86b7f4fb-3e29-465a-b25f-cd65f2c9f40b",
+			"@@@InProc at 26E90E5AF4D511C11BC77893", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229112580, false, "c77fe101-ff46-46fc-b519-78a0b9ec700f",
+			"@@@InProc at 26E90E5AF4D511C11BC77893", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229113520, false, "eb5150d0-86dc-4d47-a238-b759debdf66d",
+			"@@@InProc at FCC2AE50221E8A9BD047F1BE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229115880, false, "b2d0064a-654a-4e24-a72e-937f1e142b5e",
+			"@@@InProc at FCC2AE50221E8A9BD047F1BE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229116800, false, "46fd5530-af76-4269-b07c-da80d5df099a",
+			"@@@InProc at 005063F85A9D1E4706E3F9F1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229121900, false, "957cc987-07fa-4cfe-ba3e-531405ba7bfb",
+			"@@@InProc at 005063F85A9D1E4706E3F9F1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229122900, false, "2319d290-6954-4779-a964-719a5d23d0e3",
+			"@@@InProc at 2EF87A137C152F7F2D906A9F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229124860, false, "be775d05-31e5-4d18-9948-2cc41abe22ec",
+			"@@@InProc at 2EF87A137C152F7F2D906A9F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229125990, false, "20bd4c5b-a3ff-4a81-a15e-3bf83ba8b07e",
+			"@@@InProc at 16489E88F09D895721F4A67C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229130940, false, "108a0849-d788-4ae8-a296-8f29f7f93538",
+			"@@@InProc at 16489E88F09D895721F4A67C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229131750, false, "c3348f6e-1b5f-4f44-b94e-c484ba61073f",
+			"@@@InProc at BCD142326BA5D963022666EC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229133990, false, "d3347c5a-5bd3-4c1d-9370-f7cb118480ad",
+			"@@@InProc at BCD142326BA5D963022666EC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229134870, false, "f5048cc0-9152-4eb6-97a6-a53a602a70d0",
+			"@@@InProc at 32A3617294AA4416B3F16EFD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229139570, false, "1fd7ad02-63b1-4751-a8a4-5c71c96c6774",
+			"@@@InProc at 32A3617294AA4416B3F16EFD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229140350, false, "d9cf0eb8-9b05-4c1f-bc20-eec8b3f3efaf",
+			"@@@InProc at E196DE4EE4B6D5E1375F2645", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229142560, false, "418369e5-1c69-4fe9-ad65-b4b2b6a68ef3",
+			"@@@InProc at E196DE4EE4B6D5E1375F2645", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229143360, false, "9eba5589-a746-440f-9865-7a0b782943e5",
+			"@@@InProc at 9FDD7549EDAB65EF94E9545F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229147850, false, "85328856-2af9-48ae-ad9e-74fde714aa21",
+			"@@@InProc at 9FDD7549EDAB65EF94E9545F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229148690, false, "2f348035-9360-47e0-a510-a9dfe1903646",
+			"@@@InProc at 60D626AFCD9FFE2E98E4F38A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229151980, false, "91675e94-366c-4407-be0e-3c29583bbfb5",
+			"@@@InProc at 60D626AFCD9FFE2E98E4F38A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229153080, false, "a8766c14-fb59-4db3-8ac1-4a887df155e1",
+			"@@@InProc at 9A360FB3DAC2CD6FD31ECC20", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229159440, false, "b3ac4b28-f9a4-4e86-8919-1b4f024ae210",
+			"@@@InProc at 9A360FB3DAC2CD6FD31ECC20", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229161740, false, "e1e7b8df-65ce-431a-9a0e-3bbc5fb30e15",
+			"@@@InProc at 0020CD65DB31B1C66D2942B4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229165460, false, "bf267cc2-f828-4f37-a102-fb8bf69e278a",
+			"@@@InProc at 0020CD65DB31B1C66D2942B4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229166570, false, "869460f4-c420-42f1-bc0b-934caf9bc5b9",
+			"@@@InProc at 504FB4941813C2B41A95BE3C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229170350, false, "c9a0d6e3-93dd-4844-b0bd-38a3440ee01a",
+			"@@@InProc at 504FB4941813C2B41A95BE3C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229171360, false, "4c212a9d-e61f-4927-a276-bdf4703ca8e0",
+			"@@@InProc at 0D8F891A93BF5B575067F444", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229175810, false, "d26243a3-c90b-4e21-bd27-c9fd537f3912",
+			"@@@InProc at 0D8F891A93BF5B575067F444", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229177000, false, "f3138e02-9d46-4292-b5b2-16ec7bea06ab",
+			"@@@InProc at 54BD15D551C623A3A7C4F5A6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229181360, false, "3fac957d-90db-4cb0-83cd-82d9d35b5c86",
+			"@@@InProc at 54BD15D551C623A3A7C4F5A6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229182190, false, "f69035c8-5437-454f-91fe-631c6339f132",
+			"@@@InProc at 8AD1E7EF6C44DC8AEDB19FDC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229192110, false, "3401807e-71fc-427c-923a-5fb9f9f48748",
+			"@@@InProc at 163F309C15764030A8E1AE81", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229192430, false, "8f82ca83-1f4c-4bed-a09b-38d0ebecf29d",
+			"@@@InProc at 8AD1E7EF6C44DC8AEDB19FDC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229194660, false, "3d649531-fce5-455d-9544-318420c7718a",
+			"@@@InProc at 163F309C15764030A8E1AE81", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229194760, false, "5f357c45-0866-4021-9688-26a0a4c63bab",
+			"@@@InProc at 97BC02FD60DAE25ABE080E2E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229203360, false, "02b76c55-f941-40a4-9edf-79738c88db5d",
+			"@@@InProc at 97BC02FD60DAE25ABE080E2E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229204190, false, "a02b9cd9-2926-4461-8845-166c68e91e90",
+			"@@@InProc at 80DB6D4024154D88BB69BC19", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229204970, false, "2c747f58-1539-49d2-b781-2024fed6967e",
+			"@@@InProc at 80DB6D4024154D88BB69BC19", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229205790, false, "882605d5-c3d4-4c7f-ba20-1531f9b29f78",
+			"@@@InProc at 36992C60BF30884AB61B7140", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229212300, false, "984c185c-3d7f-4a2d-aff1-48736af79841",
+			"@@@InProc at 36992C60BF30884AB61B7140", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229213540, false, "4d0e906c-c965-4264-aae0-738c4f55db70",
+			"@@@InProc at 571A9E3A503631DD98E282B5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229213640, false, "1ef0f47c-041d-4e9b-b50d-73ed6ee05d2a",
+			"@@@InProc at 571A9E3A503631DD98E282B5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229214980, false, "c4636e06-505a-48a6-be99-09798f6fcb7f",
+			"@@@InProc at 484DE3F21386DD7314C4D89C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229221760, false, "cac33164-6cc2-4a93-bb3e-e2442b60adee",
+			"@@@InProc at D88F825AC54A415991187F92", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229222630, false, "bf102440-1757-4d19-aff2-9572cc53888c",
+			"@@@InProc at 484DE3F21386DD7314C4D89C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229222750, false, "7115fa90-7109-4680-afd8-0e6db7c19bd9",
+			"@@@InProc at D88F825AC54A415991187F92", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229224070, false, "e8372fe9-6007-436a-804a-08ca720fda7b",
+			"@@@InProc at 57F95669A03B1C53D4128E97", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229231130, false, "c3339f4d-a8af-4885-9390-8ebe05eaefdc",
+			"@@@InProc at 57F95669A03B1C53D4128E97", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229232170, false, "df5b017b-000f-4546-b870-913d8a480e12",
+			"@@@InProc at 2AC93EC86B06D467ED443F54", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229232280, false, "42705612-b6cf-4f87-86a3-7b14e03cf6cb",
+			"@@@InProc at 2AC93EC86B06D467ED443F54", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229233700, false, "88185bd3-25a1-4fe2-b3c8-da381c576462",
+			"@@@InProc at B717BDF257B78B5253275795", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229239970, false, "5f0632ea-586b-4820-b529-ee744e8dced9",
+			"@@@InProc at B717BDF257B78B5253275795", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229240770, false, "1364c796-fcee-4cbd-9656-a1d279bb9298",
+			"@@@InProc at 43ACCC9AA3EC45EC291D0095", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229251370, false, "e55cf9d9-0bbe-4664-b227-a19b4be8999c",
+			"@@@InProc at AA444D692A6F9625207781F9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229252690, false, "5252e79b-dff2-49fa-a1f2-1cff17bbde8b",
+			"@@@InProc at 43ACCC9AA3EC45EC291D0095", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229252940, false, "54540839-5661-46ca-9421-4091aab0d85d",
+			"@@@InProc at AA444D692A6F9625207781F9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229254580, false, "fd3c8113-d1fa-4072-8818-6c17bd5221c1",
+			"@@@InProc at CA3D9F86A406EFDB1004A270", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229261790, false, "6ab81d7c-9b22-4fa8-abce-541c4b1068d3",
+			"@@@InProc at CA3D9F86A406EFDB1004A270", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229262610, false, "42f232de-ec5b-427f-910b-776542ff669a",
+			"@@@InProc at DF92BADD6EBC0AFFE1DC50BE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229263400, false, "4a53bd08-668f-465b-a3ef-1524ed87b247",
+			"@@@InProc at DF92BADD6EBC0AFFE1DC50BE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229264210, false, "209a63cb-bb9b-4dfd-9071-f252959420f8",
+			"@@@InProc at 2CBF5F8A5BD19AAA4053904D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229272140, false, "30bd53f0-07b9-4787-958e-886c15bdcb06",
+			"@@@InProc at 2CBF5F8A5BD19AAA4053904D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229273350, false, "94e433e7-c2c2-4f92-bbf6-14e1ee9f4aad",
+			"@@@InProc at A9AFB0349DB7ECC7EDB6D1D4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229274550, false, "7890596e-7ab5-423d-9baa-cfe49c7de809",
+			"@@@InProc at A9AFB0349DB7ECC7EDB6D1D4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229275700, false, "b4b4d929-e700-41d2-abdf-8044aa8b7b7d",
+			"@@@InProc at 16589863C359009EEC66A13B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229284220, false, "5af9fc36-347e-4724-98c4-0ee245043f4e",
+			"@@@InProc at 34DDCCA01707D197AAA7A002", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229285180, false, "fd9d53ab-fcea-40f5-b5a3-4bb7083a4001",
+			"@@@InProc at 16589863C359009EEC66A13B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229285290, false, "ee9f9493-aa2c-47c0-9d76-adb4ba79cff4",
+			"@@@InProc at 34DDCCA01707D197AAA7A002", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229286640, false, "d881e7e4-3d7d-4bef-a14c-beba8ce52283",
+			"@@@InProc at 7E1F2216970C222B5805142A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229293750, false, "0524ac29-3580-460f-8d5d-543d6168b290",
+			"@@@InProc at 4BFDC60BC01F25A7E22F4A75", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229294770, false, "1dd85c66-b587-4515-9d0d-d1c964bcb0df",
+			"@@@InProc at 7E1F2216970C222B5805142A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229294880, false, "0c626917-b405-4ed5-81be-c646ece947ac",
+			"@@@InProc at 4BFDC60BC01F25A7E22F4A75", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229296350, false, "db30031a-e549-4f49-840b-c58f7c86e79d",
+			"@@@InProc at B63AD0867E66A43EE7D06A11", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229303610, false, "d506882b-3a33-4cc0-9575-585a9dfdf20e",
+			"@@@InProc at 84F11417A3968E0BC6E6DD8A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229304580, false, "03f983de-10f2-4865-8b43-3979699c1afc",
+			"@@@InProc at B63AD0867E66A43EE7D06A11", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229304680, false, "a026eb67-1cd6-4a1d-9472-f599b5ab2dc8",
+			"@@@InProc at 84F11417A3968E0BC6E6DD8A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229305970, false, "ecca2437-9c5b-400d-bfee-616689039afd",
+			"@@@InProc at 1C108B0D29B8001F3F36F5B1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229312900, false, "e84801ae-2de6-4547-bdb1-eebc1fd52a46",
+			"@@@InProc at 1C108B0D29B8001F3F36F5B1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229313710, false, "22d5f54b-eaaf-4efc-a7b0-2a38dfa12d0f",
+			"@@@InProc at 60ACE304E8B02EC396132E6E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229320030, false, "7fd1af4b-1c5f-4772-a024-388cadf4fe8a",
+			"@@@InProc at 60ACE304E8B02EC396132E6E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229321020, false, "7156e9c2-cbbe-4e01-bd16-511061959f92",
+			"@@@InProc at A65D377E83580503182454A7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229321880, false, "060558da-f1b4-4131-a106-9b020b6102fe",
+			"@@@InProc at A65D377E83580503182454A7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229322940, false, "1ad73bc2-020e-42ea-ba44-2a9444cb5c93",
+			"@@@InProc at C7D633B0E6EE6234FB76B785", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229328760, false, "9e019674-0b76-4a7e-9313-7cf0fe5417b8",
+			"@@@InProc at C7D633B0E6EE6234FB76B785", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229329720, false, "d304eaff-c65c-412e-8afa-f037980fae9b",
+			"@@@InProc at 6EB9553361FED34499686245", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229332090, false, "2951410d-d5dd-42a9-b2bb-c9a9c68a9ea9",
+			"@@@InProc at 6EB9553361FED34499686245", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229332890, false, "acd9ce64-a8e7-4fd5-8121-759765e970be",
+			"@@@InProc at 322E520F289E982BB489DCDE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229337300, false, "bf72ce51-d18d-4ee5-90b0-758562a37431",
+			"@@@InProc at 322E520F289E982BB489DCDE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229338080, false, "172dac4a-ebdd-42c9-b843-f8a6b516eb15",
+			"@@@InProc at 66571652B2C9C119DB1D4ADE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229340210, false, "c76f11c2-4d64-4ebe-845f-d9f2cea2b1e5",
+			"@@@InProc at 66571652B2C9C119DB1D4ADE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229341010, false, "aca35b21-b83b-42aa-bff7-8ab79333ef50",
+			"@@@InProc at AA26F414A8A932FBA44A9B13", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229345680, false, "85bfdf9c-0472-4fba-b26f-cbc428fc7136",
+			"@@@InProc at AA26F414A8A932FBA44A9B13", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229346640, false, "a06391ea-2dc0-40ff-aad0-35f5e5796b2e",
+			"@@@InProc at 3603726ADDB50FBA7EFC21A9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229349180, false, "54150295-e0e7-4224-9d9a-f578bb817841",
+			"@@@InProc at 3603726ADDB50FBA7EFC21A9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229350470, false, "a0d9c552-6216-4430-bafd-b3b13c6a5cd4",
+			"@@@InProc at EB0CEC6D6576602203C71BA2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229355950, false, "f1f2146c-5d64-4b09-8e34-1f933ffc36fe",
+			"@@@InProc at EB0CEC6D6576602203C71BA2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229356740, false, "f4e9a963-efef-40eb-a328-7eaf80d8ead8",
+			"@@@InProc at 6EAD041A4F98AFCD52C2CB11", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229359320, false, "54b28f15-6e16-42c5-bc48-bf8f6f7a382d",
+			"@@@InProc at 6EAD041A4F98AFCD52C2CB11", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229360310, false, "c95a0d7f-782e-42f1-8dff-a3bf69b4c22c",
+			"@@@InProc at E8BEA9C605AD39D31D2E6EB3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229364440, false, "cd66806a-bc16-4ebf-8fb2-a8c50d733eb2",
+			"@@@InProc at E8BEA9C605AD39D31D2E6EB3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229365230, false, "d2447aed-6096-4af1-b986-3211e89ac6b3",
+			"@@@InProc at 9125DDDA26C5503FCB58738D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229368730, false, "7a4f9a86-b0d0-4381-8a7c-2a44244cb767",
+			"@@@InProc at 9125DDDA26C5503FCB58738D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229369520, false, "21c26035-e940-42e3-a75c-673fa3065609",
+			"@@@InProc at B2442CCF75B266246BD623A9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229372940, false, "e003366b-ddc7-4686-8508-519f549154c8",
+			"@@@InProc at B2442CCF75B266246BD623A9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229373720, false, "a273735f-700f-4212-9c37-e0a5dc674b56",
+			"@@@InProc at F19CCC72C144DB240542E25A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229377350, false, "552bd7ea-4f56-4434-8aa3-f3624758dded",
+			"@@@InProc at F19CCC72C144DB240542E25A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229378510, false, "4fa8cea4-4ff4-4157-9198-e5dbf4b72e61",
+			"@@@InProc at 81A12EFBB429C994F018FE8B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229383160, false, "7f57311b-5afc-4437-b010-72bde99b1aba",
+			"@@@InProc at 81A12EFBB429C994F018FE8B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229383940, false, "356a91f3-ee77-4e2f-a307-9a770368e191",
+			"@@@InProc at E4336E1250AE5546480C94F3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229387500, false, "4cc65b98-fd13-4ed2-87bd-881670f0923d",
+			"@@@InProc at E4336E1250AE5546480C94F3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229388420, false, "ef9474a8-636e-419a-8b67-188c021b6061",
+			"@@@InProc at 21898D305D71A79B0D40A657", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229391470, false, "7f7a7c77-5cab-4317-9a1f-982989ff2c89",
+			"@@@InProc at 21898D305D71A79B0D40A657", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229392390, false, "51f51933-34b7-47e4-901e-0c696287747c",
+			"@@@InProc at 59326FB4D8C4A9568DF46D89", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229397040, false, "04a70227-23a7-49f9-b01d-7ae7716ecf56",
+			"@@@InProc at 59326FB4D8C4A9568DF46D89", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229397950, false, "3382d30f-8713-43ef-b3b8-dbc7bd10fd51",
+			"@@@InProc at 06C8F65EEFAB2782865821B6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229400370, false, "a885bd37-5432-4dd0-842b-44e5751f740d",
+			"@@@InProc at 06C8F65EEFAB2782865821B6", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229401160, false, "7d7f7735-2c32-4fb7-bb38-9ad7e56fbbb3",
+			"@@@InProc at F7309FA09B29703C35A1EF02", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229406450, false, "9c54afd0-1ffe-41f2-b422-0cdf7b114311",
+			"@@@InProc at F7309FA09B29703C35A1EF02", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229408110, false, "c7b58b79-087f-42aa-8051-91f5fbca1981",
+			"@@@InProc at F08AA422F475709D3D7CD847", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229433570, false, "646f48a6-bfd8-4210-8c3b-96d52972251d",
+			"@@@InProc at F08AA422F475709D3D7CD847", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229435580, false, "1d000c49-5d62-4fb8-a079-7ec623900873",
+			"@@@InProc at 8302D5203FEBB3F0B3B02CFE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229439600, false, "7db6dba1-0b0b-4589-9a70-2a754d367790",
+			"@@@InProc at 8302D5203FEBB3F0B3B02CFE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229440400, false, "0cb58acf-0393-40bd-a6cc-9b9cf380eb56",
+			"@@@InProc at C85A0684F5947A36CF16200C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229444210, false, "42b4bb0f-4f98-4247-892d-e047d7a4b5f2",
+			"@@@InProc at C85A0684F5947A36CF16200C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229445110, false, "12c31169-2684-450c-bd07-8c0c0d2ff044",
+			"@@@InProc at B89B1DB08A6D38AB426C1462", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229448720, false, "8bd7456c-428a-4e86-880d-96d752ac500d",
+			"@@@InProc at B89B1DB08A6D38AB426C1462", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229449680, false, "43a3a5f4-5616-4b8a-a212-cabff1af5251",
+			"@@@InProc at C9750D74AB78AB1CC7ED790D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229453460, false, "cd9fed43-4535-4a37-a0c3-9214c8c93cf6",
+			"@@@InProc at C9750D74AB78AB1CC7ED790D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229454610, false, "b4482151-3800-4111-9b6f-b8b0dc955c51",
+			"@@@InProc at E6DC883CD0D660E49F4233DB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229459710, false, "a655b683-5cfd-4e90-839a-e53fc5fae740",
+			"@@@InProc at E6DC883CD0D660E49F4233DB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229460660, false, "fd059340-4721-452e-a844-2546f92e2fc8",
+			"@@@InProc at B8C1A0A903F351C919EC38A8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229463680, false, "33c1b55a-fa35-4177-aa4b-d40a6b4ed15c",
+			"@@@InProc at B8C1A0A903F351C919EC38A8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229464860, false, "8a5112e9-c009-410b-a709-3fd0b58b9e94",
+			"@@@InProc at BF82CE6147913AB23DF58D34", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229471040, false, "dfdecf80-a50d-492c-a867-f310b8fd3d4a",
+			"@@@InProc at BF82CE6147913AB23DF58D34", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229472400, false, "d5910038-6ea1-49ce-baff-43416e32e70d",
+			"@@@InProc at D9BDD83330BE9B97F81D78D2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229473930, false, "50bfc5bb-fb69-455b-ac3d-c13c6b85e960",
+			"@@@InProc at D9BDD83330BE9B97F81D78D2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229474740, false, "180c46e5-0aab-41c7-ae27-b894e7c66fbb",
+			"@@@InProc at F1FDEBB3A289FB0CB98E1E73", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229481430, false, "037007b0-b966-4f63-8589-eca3221791a3",
+			"@@@InProc at F1FDEBB3A289FB0CB98E1E73", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229482280, false, "fc01f1da-9b3d-41c5-9a8c-323c5623ad47",
+			"@@@InProc at 2EAF255F6C87DE3E3EC46992", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229483060, false, "c7c5c0e2-6097-49e4-9533-ecf2010d8d04",
+			"@@@InProc at 2EAF255F6C87DE3E3EC46992", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229483880, false, "5bdf6bbf-7a14-46ce-9174-14dfd4f059dd",
+			"@@@InProc at D13178F132C04D4BF5253BD8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229490200, false, "07f5037a-319b-4d0e-b74a-3041aeaf6703",
+			"@@@InProc at D13178F132C04D4BF5253BD8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229491020, false, "4717d164-3909-4e9b-9909-b82e395a4a9b",
+			"@@@InProc at 54649CDF58F686FF33E9C6E5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229491810, false, "a2a3032e-f5bc-450c-947b-c9ffc221beb2",
+			"@@@InProc at 54649CDF58F686FF33E9C6E5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229492740, false, "3ad710e7-c16b-4bdf-89b4-09a7752316d1",
+			"@@@InProc at F2809872630D6032DA441220", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229499840, false, "50a9dc63-7c87-4a63-a478-73d2100119b5",
+			"@@@InProc at F2809872630D6032DA441220", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229501420, false, "2adbcfdb-7e56-4286-809b-c6122f792462",
+			"@@@InProc at DC9C82E0CFFDC6FF29287DE4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229503660, false, "c3ad269a-c910-4c95-a768-b0b083f29a32",
+			"@@@InProc at DC9C82E0CFFDC6FF29287DE4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229505560, false, "ac83020b-ee7f-4f20-92c6-21bee1dec54e",
+			"@@@InProc at 824C39599A5C0E674E97220E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229510760, false, "66352cf4-3152-4525-bfc3-ab8069730fff",
+			"@@@InProc at 824C39599A5C0E674E97220E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229511700, false, "1987a1f7-ad0a-4c0f-8eaa-28da554fd958",
+			"@@@InProc at 8A054E49323AD6510B57469F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229514090, false, "6371aa61-5882-45f1-b23d-4021a1e16611",
+			"@@@InProc at 8A054E49323AD6510B57469F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229514900, false, "23e9e59c-ef9e-4aed-9496-0adf376f6150",
+			"@@@InProc at AD65AFAEF54FA9AE42F1AB08", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229520780, false, "62345aa7-3ed6-4707-9fa2-bd7003e60e0b",
+			"@@@InProc at AD65AFAEF54FA9AE42F1AB08", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229521630, false, "5722563a-8296-467a-8f0c-6a1e0c619256",
+			"@@@InProc at 715094C94C9BC0A05A761FE9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229523420, false, "d5ea0f39-dfde-4099-a569-bd5369c88cbd",
+			"@@@InProc at 715094C94C9BC0A05A761FE9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229524360, false, "7cb9bc1c-ad5f-4195-9efd-b4d3b22fd5e4",
+			"@@@InProc at 4D2217D5B04838A06CCC1675", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229532070, false, "43e5be97-a90c-413c-b038-d11525937694",
+			"@@@InProc at 5972A862CD8A19697B9D846F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229532180, false, "c4636014-7118-4b7c-968f-9547430409ed",
+			"@@@InProc at 4D2217D5B04838A06CCC1675", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229534050, false, "75961e34-42a8-4229-9aee-35e6fb45398c",
+			"@@@InProc at 5972A862CD8A19697B9D846F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229534140, false, "18fecc24-308e-4138-8c49-f9a68ea126e2",
+			"@@@InProc at 743E46EAE29D29C6B26F63CA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229544480, false, "79e80c90-cd53-43a0-a630-7d3573664f7f",
+			"@@@InProc at D5A28153E64413361CA06083", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229544630, false, "778de49c-afca-414f-871c-5436102d4991",
+			"@@@InProc at 743E46EAE29D29C6B26F63CA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229546870, false, "957b73a3-a5df-4498-996e-58184ebf3c1f",
+			"@@@InProc at D5A28153E64413361CA06083", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229546990, false, "42516b69-5e26-4713-a655-1773e8bbf7fb",
+			"@@@InProc at 61E961A849186F65A8C90CEF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229555740, false, "841a3c7a-32e0-4c2e-846c-4161b265a02b",
+			"@@@InProc at F381BC1DF461B0F6803CBD5E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229556870, false, "caf8a5fe-4639-409d-b9cd-667eca4b1524",
+			"@@@InProc at 61E961A849186F65A8C90CEF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229556990, false, "680a88f5-5af4-4f7d-bc70-c516e26b62b7",
+			"@@@InProc at F381BC1DF461B0F6803CBD5E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229558350, false, "25b68b92-744a-474a-85da-0faa12430cf2",
+			"@@@InProc at 51F1D016B71FB6A463F58B6C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229565660, false, "3acfbb2f-17a3-4665-9e8f-02698b171e00",
+			"@@@InProc at 51F1D016B71FB6A463F58B6C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229566810, false, "fbb27103-2e74-49ff-9d0d-295f376e7145",
+			"@@@InProc at C07B53B9F5C8A098C1BD5A8C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229569250, false, "70cf0b01-5e3d-4d5e-b80b-930d0afe5be4",
+			"@@@InProc at C07B53B9F5C8A098C1BD5A8C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229570420, false, "ec117ccf-85eb-4aa6-81ed-087af4691931",
+			"@@@InProc at 06D590BEB48430E8D8D5A2FE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229574490, false, "b1c759c6-a35b-446f-a730-86f05852c891",
+			"@@@InProc at 06D590BEB48430E8D8D5A2FE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229575280, false, "f5a26e07-b4fe-40cb-ac3a-3e642dac23b0",
+			"@@@InProc at 2B1F1D7680E6F1C30330088D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229579750, false, "b19a0d49-9685-47d5-b048-daeece11c5a9",
+			"@@@InProc at 2B1F1D7680E6F1C30330088D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229580540, false, "a89b2411-74f0-4b25-837a-b7ad10ceb62b",
+			"@@@InProc at 284DB8EC745B131FE904A918", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229582920, false, "37b92cf5-f7b7-45f3-94f7-9c1f3aaa8baa",
+			"@@@InProc at 284DB8EC745B131FE904A918", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229583710, false, "81cedf3e-f48c-4835-baee-5b2421a3e258",
+			"@@@InProc at A0B8AC8EFF5A4E5DEF05CC22", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229590230, false, "dcd626c5-231f-485a-8cb8-0f71d65825f9",
+			"@@@InProc at 6237E0902DAD42D6A3E7171D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229591240, false, "cf97c139-6991-41c7-95b0-f33c5a72c29e",
+			"@@@InProc at A0B8AC8EFF5A4E5DEF05CC22", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229591470, false, "4984a71f-8d97-4370-b709-d86ffdec40bd",
+			"@@@InProc at 6237E0902DAD42D6A3E7171D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229593060, false, "127c8d10-4178-4b84-8d3a-5c4727c57548",
+			"@@@InProc at 64ECF90DB88A6816CF7F4F86", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229600990, false, "3b6355e0-2e3a-4753-bcd5-821f4ea33567",
+			"@@@InProc at 64ECF90DB88A6816CF7F4F86", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229601790, false, "e78cc492-5810-456c-a628-063fa500481b",
+			"@@@InProc at 003B25A0644C1E44D7342B0C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229602660, false, "96b4c453-3609-4627-abd3-7f630880cb31",
+			"@@@InProc at 003B25A0644C1E44D7342B0C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229603830, false, "630622ee-1929-4240-9f93-3ea84d8c80e6",
+			"@@@InProc at 56D39CFEED4EBC901BB26B01", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229610540, false, "bc7715ff-25d2-46a6-8849-0e2a31021fbc",
+			"@@@InProc at 56D39CFEED4EBC901BB26B01", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229611540, false, "7695c412-b873-4ade-92a2-ba0ba9648488",
+			"@@@InProc at C6C7BFFADF4EF35271B33871", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229614620, false, "2372d421-bd33-4ea7-829d-153230cd47bc",
+			"@@@InProc at C6C7BFFADF4EF35271B33871", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229615800, false, "6f6b19e6-b915-4fec-b11a-80b705a8e8cf",
+			"@@@InProc at 70ACA5FFFA6A9FEDDBD78E39", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229620270, false, "205f360d-956d-4e0a-9472-44720f74d0f4",
+			"@@@InProc at 70ACA5FFFA6A9FEDDBD78E39", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229621380, false, "b443cc8b-1b1c-4929-b57b-a324feff12a5",
+			"@@@InProc at F3E13359737AF2BA47FA5B7B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229625820, false, "7600f676-b80d-40b3-a056-d4a0dc3d3866",
+			"@@@InProc at F3E13359737AF2BA47FA5B7B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229626600, false, "c98a170b-b5f1-4cde-b5a8-3315bcf055eb",
+			"@@@InProc at 416895AA07F9CEF9950B45FE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229635220, false, "5a869036-e9b9-49c6-82d4-78d72b09d393",
+			"@@@InProc at 416895AA07F9CEF9950B45FE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229636120, false, "2c2e41fa-b88a-486f-8503-2f7be2df4227",
+			"@@@InProc at A9BC3B58055B7DCBA34D365B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229637340, false, "474504f9-3cee-4452-bfa0-2e9adc7580c4",
+			"@@@InProc at A9BC3B58055B7DCBA34D365B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229638500, false, "0ba080f9-e881-423c-843f-78f4983717f2",
+			"@@@InProc at 13FC73DBDBBE13025C05A946", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229644560, false, "601ce2f3-db56-409e-bf38-7e504bfda10b",
+			"@@@InProc at 13FC73DBDBBE13025C05A946", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229645530, false, "ff0a1770-45c9-49c0-89cf-cd75cf5521cc",
+			"@@@InProc at 4C386B7C511327CCBA3822A8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229649140, false, "a08e632b-9339-46d0-a033-0da8d935a0ff",
+			"@@@InProc at 4C386B7C511327CCBA3822A8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229650290, false, "06ef22a4-a07e-4c3a-9624-122cffb6efcc",
+			"@@@InProc at 6C1EAC73406C41721931F290", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229655390, false, "d364d844-12c1-4df6-9569-6fa410b04aec",
+			"@@@InProc at 6C1EAC73406C41721931F290", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229656190, false, "91155f72-8ba6-4600-86ed-4e4a4adb931c",
+			"@@@InProc at 9781BC9CC117A00C01EF216C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229659170, false, "b783011a-8e07-4cdc-a0c4-0adadcd31aba",
+			"@@@InProc at 9781BC9CC117A00C01EF216C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229659940, false, "e53adb82-a4e6-4c5d-ad4a-58daabc688cc",
+			"@@@InProc at 2C8267A230E8FE63933D120F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229661790, false, "e5259b42-ae30-4583-a954-ab8d92705b44",
+			"@@@InProc at 2C8267A230E8FE63933D120F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229662650, false, "cdf0714d-95c4-4da7-892c-eb949a171313",
+			"@@@InProc at 98BEE8FD7407ECE3B70F0C7C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229667320, false, "7f2ab910-f091-4c8b-95b1-57d002eaa0b4",
+			"@@@InProc at 98BEE8FD7407ECE3B70F0C7C", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229668110, false, "47738913-5f9d-4cb3-a910-3100076d8c5d",
+			"@@@InProc at 47118988BE4E81443783A1C2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229668850, false, "71c1461b-8809-4d37-9155-9b337848b499",
+			"@@@InProc at 47118988BE4E81443783A1C2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229669460, false, "48281e0f-d5ba-4d14-9e45-ae37b55f474a",
+			"@@@InProc at 78F451C71FF9AAC6867E0052", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229675660, false, "bdd2a50e-9c08-41eb-b22d-9110636dc7ea",
+			"@@@InProc at DB322B299D83360D2D55B570", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229675870, false, "23f9ba8d-bfb4-4b2a-9af6-c9348184bb30",
+			"@@@InProc at 78F451C71FF9AAC6867E0052", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229677000, false, "05ee3cdc-0645-47e6-8a76-7e63520626cd",
+			"@@@InProc at DB322B299D83360D2D55B570", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229677170, false, "a0f4214f-0102-4e09-b149-cbcb31ee7ef5",
+			"@@@InProc at E9FBC400B00F790B600194C8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229683440, false, "05c1f059-7e6a-4c1a-b087-de65ddca4fe9",
+			"@@@InProc at D74EF07AD8F14186B2F6109F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229684230, false, "e269ad7f-44b5-480f-8ca2-a3c8aac469f3",
+			"@@@InProc at E9FBC400B00F790B600194C8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229684290, false, "6514d0ef-d43a-40dd-b8c3-adb9ce91fbe2",
+			"@@@InProc at D74EF07AD8F14186B2F6109F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229685450, false, "7d14cd12-e738-4c95-86d4-4ea498b353bd",
+			"@@@InProc at AD7A11F66443954BE58D6FA1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229691170, false, "6cf6aa72-8dc5-441d-b63c-c2aac67290e0",
+			"@@@InProc at AD7A11F66443954BE58D6FA1", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229692620, false, "489180ca-0eeb-4f64-aa42-c2fc163059c6",
+			"@@@InProc at FFD0C0A1DE7EBDD8CD373BDA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229692810, false, "3d41a0f0-240b-4ab3-847a-0e756228cc02",
+			"@@@InProc at FFD0C0A1DE7EBDD8CD373BDA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229694530, false, "d506c6f3-3d29-4383-b933-b904cd33d094",
+			"@@@InProc at B7767976AB283B55B119971B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229698520, false, "4f0cab8e-6fe6-44f2-bf67-1e4786c1402b",
+			"@@@InProc at B7767976AB283B55B119971B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229699080, false, "cf78763d-5564-4f9f-880e-edc3f2c34d9b",
+			"@@@InProc at 204ED79CE4A8FCF0DA0CD99D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229702790, false, "41acd40b-e3a6-4cd3-94b3-d598d0108971",
+			"@@@InProc at 204ED79CE4A8FCF0DA0CD99D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229703730, false, "dc4ad70b-88b1-4c0b-9a7a-6c8bf08900b3",
+			"@@@InProc at BE5CF95D8F1E634A90F9AC2B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229704890, false, "b297aff3-d4a0-4e9e-b675-b137532a3f57",
+			"@@@InProc at BE5CF95D8F1E634A90F9AC2B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229705520, false, "01cdf027-e472-4197-a9cc-775f47f4fb17",
+			"@@@InProc at F7E9DF2DF1D5850BD505997A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229710610, false, "448361d9-7c36-442a-90c4-25e9e6faa7a6",
+			"@@@InProc at F7E9DF2DF1D5850BD505997A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229712800, false, "ca18eb16-c4c0-4683-a440-3bd4fb2f6ec0",
+			"@@@InProc at 142D37799F1DD945FE6C6D4B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229715880, false, "310a4d7e-c4bc-46c2-9969-77aa6fe68f9f",
+			"@@@InProc at 142D37799F1DD945FE6C6D4B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229716730, false, "185c2c36-2a13-4143-9ec3-f17d488a319d",
+			"@@@InProc at 71E02E46D7DBA62B56D53705", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229722430, false, "76b138c1-85f4-42b1-89a4-1ab7930803dc",
+			"@@@InProc at 71E02E46D7DBA62B56D53705", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229723160, false, "fda0d596-07a3-4f35-9e7c-fcb8e3f3396d",
+			"@@@InProc at DC9E4B75FD2FBE95D0D77F2B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229723280, false, "e35e84e5-427f-4612-8cac-03ead8613212",
+			"@@@InProc at DC9E4B75FD2FBE95D0D77F2B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229724350, false, "ee4ada29-fdbf-466d-8e01-574ec5c1449c",
+			"@@@InProc at C9C26AB36DD328217ED5CC8D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229729790, false, "bf1a91c7-e48b-4687-8a79-57b1ee2f1055",
+			"@@@InProc at 726CE51DA3DFFDF5AAA243B3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229730540, false, "44c42bbf-11e5-469c-82ac-4d1d6e087151",
+			"@@@InProc at C9C26AB36DD328217ED5CC8D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229730630, false, "0cf478f1-5206-4245-9a0c-a4d446621288",
+			"@@@InProc at 726CE51DA3DFFDF5AAA243B3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229731710, false, "ec939b7e-2c99-4a23-b7df-ab358b038d38",
+			"@@@InProc at DA395A17332CE9B852FE5A8A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229736800, false, "18b23692-b30a-438d-8bf6-237f42532266",
+			"@@@InProc at DA395A17332CE9B852FE5A8A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229737500, false, "b6171cc5-3294-48cc-b83c-100edcd09d80",
+			"@@@InProc at 84382CBD78169A8500E207EA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229739010, false, "53bf3665-852b-45a3-bf5d-2c49f8a8621e",
+			"@@@InProc at 84382CBD78169A8500E207EA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229739840, false, "995921b4-c7c4-4a06-834e-cfd4270ba1ae",
+			"@@@InProc at 83B3BFFDA62656FB9D2067AD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229743190, false, "524b8307-f22c-4990-90ed-ee136bf3b2b6",
+			"@@@InProc at 83B3BFFDA62656FB9D2067AD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229743720, false, "3c6f17a3-0eac-4fe7-8fc3-56815e076ee1",
+			"@@@InProc at 86D3CCF45F296443A6DB9282", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229746900, false, "e4be72d0-ed5c-466a-bc46-124ac4e98af1",
+			"@@@InProc at 86D3CCF45F296443A6DB9282", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229747660, false, "308f043a-d8b7-4d50-988f-2497cdc98c7f",
+			"@@@InProc at 7EBF4A2220E6DB8248A000D2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229750180, false, "f798d83a-06ed-4aa3-a069-c9e9d34e7459",
+			"@@@InProc at 7EBF4A2220E6DB8248A000D2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229750960, false, "a17caefa-b188-4cb5-9eec-b63d03004b90",
+			"@@@InProc at E456B7874836F811902F9E8F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229755020, false, "ff016402-49e7-44a9-a821-e49eac90a4a0",
+			"@@@InProc at E456B7874836F811902F9E8F", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229755780, false, "457cf7e5-1e73-4f7e-a671-d25deb0452aa",
+			"@@@InProc at 1AD581454670078317763505", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229759710, false, "e31d0ea7-b2de-439f-9dfc-5a4d48b2d405",
+			"@@@InProc at 1AD581454670078317763505", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229760440, false, "6755a82f-308a-4315-a6c5-e3949d305c1e",
+			"@@@InProc at FBD5D0CA5BDE2088CD0A7DB8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229762910, false, "0cdc3b5e-134c-44ca-b719-d4beb1ce7dd4",
+			"@@@InProc at FBD5D0CA5BDE2088CD0A7DB8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229763690, false, "b2abd081-e55e-4440-9a97-aed17833653f",
+			"@@@InProc at 13EF727F2E5BCA9DDA4296A3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229766660, false, "c7091b98-dd08-46bc-9bed-3bc3e6a68056",
+			"@@@InProc at 13EF727F2E5BCA9DDA4296A3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229767380, false, "21ecede1-160d-457f-96ca-5fda32ac20bf",
+			"@@@InProc at 361879680C38204AA7291B6A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229770690, false, "089f228a-3d0c-46c3-a451-3b4ce79a0b2a",
+			"@@@InProc at 361879680C38204AA7291B6A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229771470, false, "c2ae9d69-704b-4868-a029-b8965793e370",
+			"@@@InProc at 340D477EA6FDCB1D44B9D5DC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229773840, false, "3f7b4b55-5894-456d-bf2a-c05644841ad2",
+			"@@@InProc at 340D477EA6FDCB1D44B9D5DC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229774610, false, "bda64453-f36a-4a68-8f37-a95c6db1676c",
+			"@@@InProc at 8014E6D84F09A0DC5EFB5763", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229778360, false, "342ad596-3079-4e9c-9f31-b6a5aeb6f0f4",
+			"@@@InProc at 8014E6D84F09A0DC5EFB5763", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229779120, false, "d32a0f99-ecc8-4956-bfbf-3e8f7ecd3c46",
+			"@@@InProc at B96435D0C8F7498F8C6F8D05", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229780380, false, "1ee77c13-20dd-49d8-b490-38a08e5e3026",
+			"@@@InProc at B96435D0C8F7498F8C6F8D05", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229781620, false, "07f59561-1461-46d7-a485-dd7e7549ade1",
+			"@@@InProc at 4878D0404AF0A77C121A8367", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229786250, false, "c5d332d3-f37f-4146-a9ac-7ad2d983cfea",
+			"@@@InProc at 4878D0404AF0A77C121A8367", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229787110, false, "e997bf52-0d1e-442f-b8fe-0a488a57e7d5",
+			"@@@InProc at 4CEC3DD1780B4AADBFDB9A3D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229787150, false, "83bc983e-0d27-4aa3-8bdc-d9cfbe21af72",
+			"@@@InProc at 4CEC3DD1780B4AADBFDB9A3D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229788240, false, "b2ef4272-8e61-4d30-92b5-4c3142002f4b",
+			"@@@InProc at F21B777CFD96513AF299D0D8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229793560, false, "beca5d63-e526-49a6-95fe-1f65a5ace8ea",
+			"@@@InProc at F21B777CFD96513AF299D0D8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229794190, false, "0ab56733-fd38-4606-a00b-604ffa832923",
+			"@@@InProc at 8139917718520D42029667F7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229794360, false, "62e09408-73d3-491b-bd08-a50825917046",
+			"@@@InProc at 8139917718520D42029667F7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229795500, false, "402292ed-8194-4205-b56b-61fa7f848bb8",
+			"@@@InProc at ECD84E90E5981492F56B5D73", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229800410, false, "1f8e6192-09a3-4f19-bce6-3790db31fd8b",
+			"@@@InProc at ECD84E90E5981492F56B5D73", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229801740, false, "2053d36c-4ec7-4d02-8f23-42d5b4049fa3",
+			"@@@InProc at 9B38F932993CB5EC0DC13E45", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229803410, false, "e6f83a00-1a53-4b14-bdf5-04f3b52ec4f8",
+			"@@@InProc at 9B38F932993CB5EC0DC13E45", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229804890, false, "47e47723-0b3a-479b-8dad-4fe3565bf769",
+			"@@@InProc at E31FF45C0FA7E392A3216F97", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229809180, false, "26117441-992b-4160-8d9d-4c620c1b4e3e",
+			"@@@InProc at E31FF45C0FA7E392A3216F97", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229809950, false, "479cace0-0302-449f-a4c6-b30627e91ca6",
+			"@@@InProc at C61A34F80BFBA0F68AB1EBB3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229810600, false, "b6b7b2ec-81bb-4666-acf6-00c99da812d7",
+			"@@@InProc at C61A34F80BFBA0F68AB1EBB3", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229811200, false, "3e62497a-80e7-4940-b7be-69c3bf3a7e09",
+			"@@@InProc at 41DDF84D4788AA49DC53A6F5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229815840, false, "e4809e8e-cde4-4407-9bb8-d893fdb64bab",
+			"@@@InProc at 41DDF84D4788AA49DC53A6F5", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229816520, false, "3729805b-3258-4390-97fb-5a79e9a2c74f",
+			"@@@InProc at 253668E1106951E0DDA01189", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229817980, false, "04f87534-af4d-463c-8936-5cb6dd85fe6f",
+			"@@@InProc at 253668E1106951E0DDA01189", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229818750, false, "94118a7b-96b4-4f5b-b730-0adb21525971",
+			"@@@InProc at 3986B2A1BFDE4E5BAA8F18ED", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229822790, false, "536e0782-648a-4467-b30d-96cf7aa8dd3c",
+			"@@@InProc at 3986B2A1BFDE4E5BAA8F18ED", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229823590, false, "b7ce0029-cb3d-4d8f-8267-d2f2706343ec",
+			"@@@InProc at 73911835B2C2F23C265B1EA2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229824690, false, "19b75110-1552-441b-887a-98fddf1fc9d2",
+			"@@@InProc at 73911835B2C2F23C265B1EA2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229825290, false, "da6ef34b-fd46-4bad-9081-f8d3b32ec542",
+			"@@@InProc at 23F48B2F3E44483FB4C565F8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229847670, false, "ed10e8dd-17e0-445e-8d16-5806f184c04d",
+			"@@@InProc at 23F48B2F3E44483FB4C565F8", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229848240, false, "6f769929-f99f-4f75-ab0e-2df9712b8908",
+			"@@@InProc at 6ECEEE8D69C17D24050EB947", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229851540, false, "ea69868f-d08f-4cac-ac31-d89a289fab31",
+			"@@@InProc at 6ECEEE8D69C17D24050EB947", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229852960, false, "cf96a990-4929-4516-a1d3-03ca89836401",
+			"@@@InProc at 7582B64C8AF50D4F4B566CB0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229855030, false, "1230566d-240a-4f0f-b1e5-bf59ee8bcc99",
+			"@@@InProc at 7582B64C8AF50D4F4B566CB0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229855680, false, "904a39d9-0097-4fc2-9204-be8cf7104577",
+			"@@@InProc at 9B1D7859394FFC5DFD1C1CB2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229861260, false, "b615e853-8e2b-4c7b-852b-0ce4f33c8514",
+			"@@@InProc at 2CDD626747559F9768CBC30A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229861420, false, "68cabd1e-939f-4198-b5a2-0d297c68fa19",
+			"@@@InProc at 9B1D7859394FFC5DFD1C1CB2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229862900, false, "e5bc3135-a8e8-4d97-b5aa-80b1c633da4b",
+			"@@@InProc at 2CDD626747559F9768CBC30A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229862970, false, "1cc7d7b9-8552-42d1-b53e-2c746ae175b5",
+			"@@@InProc at 88E2F8A8063E833C30D29138", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229869790, false, "ce984044-ce4e-4274-8dfb-5db257eb1645",
+			"@@@InProc at 88E2F8A8063E833C30D29138", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229870340, false, "721624a5-2c18-447d-8e52-ee567d6e39c0",
+			"@@@InProc at 1E8068D70ADD2916D520545B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229870620, false, "c5409e37-896f-4827-87fb-1d2b064d25c1",
+			"@@@InProc at 1E8068D70ADD2916D520545B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229871370, false, "a74df7dd-124e-45bf-bcfa-fdaea69ed4ea",
+			"@@@InProc at A927E0D7317CDEF4260DA672", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229875860, false, "a6aa6d34-535a-4e6a-9154-190ed7ac3cc7",
+			"@@@InProc at A927E0D7317CDEF4260DA672", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229876400, false, "49d9f139-80e3-4020-b3c7-acea43b306cc",
+			"@@@InProc at 00D25A94D758A36DCCCBAAAE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229876910, false, "de3790f3-e4c3-428c-9083-cab1f7215b44",
+			"@@@InProc at 00D25A94D758A36DCCCBAAAE", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229877530, false, "408b57cd-876f-45ad-87f0-0ad3308aa1ee",
+			"@@@InProc at F733E13D43CCEF2DC7F0C214", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229881580, false, "5ce4ab0e-f9c8-4339-b1e1-0bc7b3673848",
+			"@@@InProc at F733E13D43CCEF2DC7F0C214", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229882220, false, "f42c59cd-650b-4a3c-8177-bac28e98d83b",
+			"@@@InProc at 1AB5B673EDFA64CB9E5C8B18", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229884880, false, "2426ca62-fa83-4682-baee-214258b1f0f8",
+			"@@@InProc at 1AB5B673EDFA64CB9E5C8B18", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229885660, false, "f5d87999-d9e3-4fe5-bc0f-9c38251b2aa4",
+			"@@@InProc at F1D12644E4EA6534BA471382", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229888240, false, "d10f2018-58fc-4e22-ba01-4a32b08273ea",
+			"@@@InProc at F1D12644E4EA6534BA471382", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229889020, false, "ecd80384-384f-4d96-9d10-57d9cb298499",
+			"@@@InProc at B8FC44371F50CCD06B9DE1F0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229891320, false, "32061672-fa7b-45ac-aadf-a1c2e6f7e526",
+			"@@@InProc at B8FC44371F50CCD06B9DE1F0", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229891870, false, "5f07661d-fcec-4ed2-b38f-78ffcf96d473",
+			"@@@InProc at CD617395FDEF67A1358DAAF9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229895900, false, "0e9446ae-3ce0-4b91-9fbe-ae6ea9f18662",
+			"@@@InProc at CD617395FDEF67A1358DAAF9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229896600, false, "d56144e6-33fb-42f7-84fd-9ba6ee26e82b",
+			"@@@InProc at 600598FCBDE75E6A948B9024", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229898200, false, "2471b876-561c-45da-953e-03039d3dc9b7",
+			"@@@InProc at 600598FCBDE75E6A948B9024", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229899020, false, "71e66964-96b2-45a0-ba11-8d748d5d79ca",
+			"@@@InProc at 51D717A85A723B9D91974B3A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229902070, false, "b6c18184-aeb3-4484-bf87-6b53e8a70cb7",
+			"@@@InProc at 51D717A85A723B9D91974B3A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229902610, false, "a64ce4d8-c909-4ebf-8641-30bbe956384a",
+			"@@@InProc at 47F9F6F2EB0CA79787854E5D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229904730, false, "33e6fd06-2a45-4268-b9fe-2963aef8a222",
+			"@@@InProc at 47F9F6F2EB0CA79787854E5D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229905310, false, "9b8531b1-3ec3-4f22-ae40-5b2a49413ddc",
+			"@@@InProc at DAE20D2DE1CBBE6997B5A460", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229907820, false, "2a0a3da4-4cdb-4832-8ae0-6f56a4e76762",
+			"@@@InProc at DAE20D2DE1CBBE6997B5A460", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229908340, false, "ba3fd4a5-0bec-4bb4-83a0-4e096fee3a9b",
+			"@@@InProc at DED85DB1BFA5881B86A9B149", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229910880, false, "83d26347-7f12-4797-aecd-5f3c56964692",
+			"@@@InProc at DED85DB1BFA5881B86A9B149", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229911420, false, "da99ebec-745f-4d4f-a300-7ff6fdb30148",
+			"@@@InProc at 2EE298C94F0881C98D53B6B9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229913500, false, "aeba61f6-50a5-442b-8f27-3adb6023fc5e",
+			"@@@InProc at 2EE298C94F0881C98D53B6B9", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229914270, false, "207c26d6-2881-4658-888a-26be8b2ff7cd",
+			"@@@InProc at 9010CBFF0B694A4B1685A5EA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229917720, false, "c273e372-7991-4212-b5b0-c09ccfa372c8",
+			"@@@InProc at 9010CBFF0B694A4B1685A5EA", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229918540, false, "368e16ef-1e8e-4e64-a485-ed3c426b0424",
+			"@@@InProc at 3724547DE1C3ED6B7D51CB58", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229919540, false, "131be772-1065-4613-9d74-2aa072a9e9a9",
+			"@@@InProc at 3724547DE1C3ED6B7D51CB58", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229920060, false, "445f3863-96f1-4902-b6d2-e4cf3c1d27eb",
+			"@@@InProc at 021C993832AF7E9B502C7AF7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229924190, false, "2ee39cb8-5646-44b9-9ace-b3df11d1f0ed",
+			"@@@InProc at 021C993832AF7E9B502C7AF7", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229924860, false, "63f248d9-b53a-4f99-a13c-4a7e56a61630",
+			"@@@InProc at D9EEED3AF6CC7D6E0D141D41", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229925790, false, "7d51d2ba-e5f1-4164-9e7e-8402d9d4d814",
+			"@@@InProc at D9EEED3AF6CC7D6E0D141D41", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229926510, false, "4889d8fa-7677-4029-918d-28e73887fbcf",
+			"@@@InProc at 1E4DB39D44AEA699924BAA8A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229930170, false, "ae0f2494-0303-4704-be93-bec413352ac0",
+			"@@@InProc at 1E4DB39D44AEA699924BAA8A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229930680, false, "6375ef6c-0f95-493a-9219-32c376dc3b15",
+			"@@@InProc at 10977821DAFF326FAF6C9303", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229932170, false, "8313289d-ffa2-4e03-b41c-6c4d6b6262b3",
+			"@@@InProc at 10977821DAFF326FAF6C9303", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229932780, false, "ca1b22a6-73d3-47fc-8107-f1f8bf79221a",
+			"@@@InProc at 757A59EE7E2179F92BF663F2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229936910, false, "c36618c9-d163-4a1e-b1d9-7b5ed1cd8452",
+			"@@@InProc at 757A59EE7E2179F92BF663F2", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229937670, false, "c78d2cda-0ae7-4fa7-89cd-66f2a1c97ddf",
+			"@@@InProc at 7791E7CD6F44E3C1CC062C31", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229937990, false, "915038bc-52c5-48e7-ba8d-e48502a65de5",
+			"@@@InProc at 7791E7CD6F44E3C1CC062C31", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229938760, false, "e4fd45e0-521c-4dcc-8de1-fa2a8a22d4e5",
+			"@@@InProc at F3B4086BD3A9AD8A48DC3945", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229943460, false, "b0bbea4d-5bdb-446e-8260-03c82f1ea652",
+			"@@@InProc at 935242148191228560CF5582", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229944050, false, "a2946b8d-afa4-46ed-9ae3-fcaa1ace0de9",
+			"@@@InProc at F3B4086BD3A9AD8A48DC3945", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229944100, false, "ad802582-9b3b-4f3b-ae89-ef3f8ff20cfa",
+			"@@@InProc at 935242148191228560CF5582", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229944940, false, "85322f19-cd33-4c1d-98c6-c3e34bf73dc6",
+			"@@@InProc at CA8E65857FB99F84C6A0DF72", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229951240, false, "440a410e-fc21-45ce-8582-d31533ca28b1",
+			"@@@InProc at CA8E65857FB99F84C6A0DF72", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229951930, false, "20ac145a-5180-479c-b030-3dd9fa149353",
+			"@@@InProc at ECBA4B98CF24B10FAD5E4309", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229952070, false, "72c51d8b-bf44-4042-941f-48e55ee0e8f9",
+			"@@@InProc at ECBA4B98CF24B10FAD5E4309", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229953310, false, "b27ffb47-c623-474e-86b2-487ee8ff1650",
+			"@@@InProc at 420D9CE18F6C514CC4A66DBD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229957240, false, "d7d53709-e901-47ac-a215-e8d687f266b0",
+			"@@@InProc at 420D9CE18F6C514CC4A66DBD", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229957800, false, "e6f7a46d-3203-4e32-813c-373f202d8eec",
+			"@@@InProc at 05AB6F8848C66C29E3E9043B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229959380, false, "b3989a60-e144-4fb7-aee0-1d9b415bf4c3",
+			"@@@InProc at 05AB6F8848C66C29E3E9043B", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229960100, false, "a3750423-9e49-4c61-aeb9-57a9f401f2ac",
+			"@@@InProc at 8E141F17D01514112B2B9E9D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229963050, false, "57179dc7-d68f-4207-ac25-85bb000e007b",
+			"@@@InProc at 8E141F17D01514112B2B9E9D", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229963580, false, "5abacb06-f97d-4c29-96b2-03f3544c7cb6",
+			"@@@InProc at C37D820B5974B40E005F87B4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229966560, false, "390ee69c-980e-4d13-b77a-128cd0e84cf9",
+			"@@@InProc at C37D820B5974B40E005F87B4", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229967330, false, "364598ef-4a4f-43c0-9bb5-455718efdd86",
+			"@@@InProc at F9D9F3C3A4E51B30833767DF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229968970, false, "0d0d6ce7-591f-4410-a5cd-a99706cd4917",
+			"@@@InProc at F9D9F3C3A4E51B30833767DF", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229969510, false, "5c2bef13-dc77-413c-ba73-023bd8b8d050",
+			"@@@InProc at A5E869DC9D031998461F9D52", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229973020, false, "f2ac7e28-c12d-4338-a28e-b98769f7b10f",
+			"@@@InProc at A5E869DC9D031998461F9D52", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229973870, false, "98c55e45-9404-4a81-a0cc-fdeacf517a6f",
+			"@@@InProc at DD99398CC552974488AA5672", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229974770, false, "1d70d5ea-1294-42d5-b837-267a86d9602b",
+			"@@@InProc at DD99398CC552974488AA5672", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229975320, false, "734367ef-1917-4fff-94b6-2d480fa1a87f",
+			"@@@InProc at 3202F74180C037A9CBD4D01A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229980640, false, "138ee4ae-5aca-42d2-a291-be15d3a96579",
+			"@@@InProc at A7A52ACE63B4DC74EE678613", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229980860, false, "0df3ae2e-3736-484d-af92-c79a211347ec",
+			"@@@InProc at 3202F74180C037A9CBD4D01A", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229981830, false, "56184199-9072-4639-995d-f29a952c5f24",
+			"@@@InProc at A7A52ACE63B4DC74EE678613", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229982000, false, "3d6b9e48-0b61-4f20-a36f-0fb8772db9f0",
+			"@@@InProc at 3ED0E7D151BE86B75D7667FC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229987050, false, "11f1992b-17e3-4e7e-8b41-06dc98c80a74",
+			"@@@InProc at 3ED0E7D151BE86B75D7667FC", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229987760, false, "a0e5de03-14f8-40de-b3b8-fc187227e119",
+			"@@@InProc at 772AE81F8145CAABD75C3D87", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229989080, false, "e3481f6e-d689-4464-bcbc-227a88426b3d",
+			"@@@InProc at 772AE81F8145CAABD75C3D87", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229989820, false, "3bc45185-6d5f-4b2d-8938-579ea4997db4",
+			"@@@InProc at F2C2F9DC1267DD76ED4670CB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229993370, false, "eea9d7bc-0ca7-43f5-943f-0d7662965d29",
+			"@@@InProc at F2C2F9DC1267DD76ED4670CB", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229994080, false, "3a703137-29fb-44ea-8bd7-9830e27aceff",
+			"@@@InProc at A32D302CF211E026F0A9F57E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229996790, false, "e0ea6539-cb76-46c0-891f-ba441a5157b1",
+			"@@@InProc at A32D302CF211E026F0A9F57E", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229997560, false, "203b9b94-d0e3-407d-a230-b61044e57a3e",
+			"@@@InProc at 86CAC8544F86D10A8EA7BA40", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229999340, false, "f08eea45-3137-471d-8a6c-ad1d5738d8af",
+			"@@@InProc at 86CAC8544F86D10A8EA7BA40", "11/18/2010 2:37:02 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:02 PM", 634256878229999890, false, "a4663f69-e6ca-478d-8ab7-25608f98b3e2",
+			"@@@InProc at 69BD233CE82BD305A0D819F0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230004460, false, "d0c94c76-7ff1-46e0-916a-4630b64c09ab",
+			"@@@InProc at 69BD233CE82BD305A0D819F0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230005260, false, "2a5e22c6-3608-46a3-99d2-1fc788b65996",
+			"@@@InProc at F1868879D6B4E992138ED5D3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230006070, false, "7870e7c6-4751-442f-a25c-31880400fa15",
+			"@@@InProc at F1868879D6B4E992138ED5D3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230006620, false, "6b9c8952-3a90-41fe-a110-1253f760ff87",
+			"@@@InProc at 756EC28542A757563301BF91", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230011720, false, "777dc7e5-4671-41db-8a78-ad3bdd4adf98",
+			"@@@InProc at 756EC28542A757563301BF91", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230012470, false, "071f0a23-1a2d-4bbc-9b00-2aed1c79f85c",
+			"@@@InProc at 7871DDC1F167355F34D70210", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230012530, false, "e31d0b38-f7a6-4338-9d9e-24e44eecbc1b",
+			"@@@InProc at 7871DDC1F167355F34D70210", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230013500, false, "3202e8a1-72a8-48e1-af9f-21a2792077f1",
+			"@@@InProc at D319BB023DA93A90E8377BF0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230019600, false, "dced0ab9-fd80-48c2-bc64-4baad9f73652",
+			"@@@InProc at CA7BA4B57AF0A9951314C298", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230019660, false, "8dfcb7a5-ed2c-4cc0-b225-864ffc8abcad",
+			"@@@InProc at D319BB023DA93A90E8377BF0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230020850, false, "19cc488b-73de-45b5-ace4-d4f00fdc3980",
+			"@@@InProc at CA7BA4B57AF0A9951314C298", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230020910, false, "e2205ed3-aa6d-40f2-b687-f4f284ce3ea9",
+			"@@@InProc at 57B049DB666CC1E9D20EC2FD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230027560, false, "66cabf7a-45b4-4a65-a92a-95bc55172e98",
+			"@@@InProc at 2320A1AB974B3F1780C24A86", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230027860, false, "60e74e17-bae7-47b4-9e17-915fe70254b0",
+			"@@@InProc at 57B049DB666CC1E9D20EC2FD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230028810, false, "f8fdc7cb-16ba-48ab-853e-6d3a499dc531",
+			"@@@InProc at 2320A1AB974B3F1780C24A86", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230028970, false, "136fb2ab-5eb9-4768-a1ad-ee8fba447382",
+			"@@@InProc at E66A9646B5A818A6E1798451", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230035260, false, "2b12bea0-2216-4ba1-8362-5b90a2482835",
+			"@@@InProc at B27C6A27E984234DEF57745F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230035490, false, "f56c8736-bcb5-4e19-9b76-8f6faf5c93ae",
+			"@@@InProc at E66A9646B5A818A6E1798451", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230036400, false, "75b18c40-a707-43d1-a287-39be3a7ee731",
+			"@@@InProc at B27C6A27E984234DEF57745F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230036570, false, "95501596-0f18-411a-b7b9-f97c9455db22",
+			"@@@InProc at DB7BCE8E23F26CE60F4ECB16", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230041540, false, "50520e2d-c8ea-4d05-a537-6f5347b7f718",
+			"@@@InProc at DB7BCE8E23F26CE60F4ECB16", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230042290, false, "b1b91ea0-f36b-4ecb-bdfe-b5d613d1fa10",
+			"@@@InProc at 797B6F1BEBA2C03743F07D6B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230043650, false, "b639e278-33ce-4c09-8b20-769a5fe9a78a",
+			"@@@InProc at 797B6F1BEBA2C03743F07D6B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230044540, false, "f9001158-c3c2-46ab-8d45-67c709600404",
+			"@@@InProc at E39F161494F1A43BDEBC544D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230047380, false, "d5e55fc7-1942-4e9c-a650-b8ee1405db7b",
+			"@@@InProc at E39F161494F1A43BDEBC544D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230047900, false, "c82bd944-a6c4-4493-886e-b8136aa3872f",
+			"@@@InProc at 8CEE05A7BD7BB11DB078FE39", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230051260, false, "470096a6-a575-4491-a4a4-0589b6c329fc",
+			"@@@InProc at 8CEE05A7BD7BB11DB078FE39", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230052010, false, "08b0a0ac-bd84-4686-88f2-9a31dfc6276f",
+			"@@@InProc at 00A7658F9DE88B770E917A67", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230053710, false, "6f6b5e42-6e73-45d6-b160-67d47f961b55",
+			"@@@InProc at 00A7658F9DE88B770E917A67", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230054230, false, "dbc4c4ff-833e-4c2a-8eef-0977c479a5af",
+			"@@@InProc at 4F3E3325BD55866CCD958A18", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230059450, false, "cca4aa18-668a-468d-8a08-f08aba4f72d3",
+			"@@@InProc at CB33A7E61B8E01AC65A8E1E0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230059530, false, "c1ec19ba-dc96-4cf0-8dd7-c55ff3d9100d",
+			"@@@InProc at 4F3E3325BD55866CCD958A18", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230061110, false, "f798b438-7f33-4cce-9792-27942021d7b8",
+			"@@@InProc at CB33A7E61B8E01AC65A8E1E0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230061170, false, "2c4f91d8-01cd-4ea4-95eb-2409f0948a32",
+			"@@@InProc at 1CEA2E0CD71F3A880EB5F83A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230067970, false, "015ed94e-c100-44f7-93f0-b8d45a2fc546",
+			"@@@InProc at 1CEA2E0CD71F3A880EB5F83A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230068490, false, "99e98e23-1a48-435b-a8cb-e07adbfcf826",
+			"@@@InProc at 02961E8DEDE7F0FD6A6A12EC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230070860, false, "dbc239e4-9562-4c57-b3c0-7e09bbcf4264",
+			"@@@InProc at 02961E8DEDE7F0FD6A6A12EC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230071370, false, "183fd38e-6efe-4c35-b6d5-3c9e0430c931",
+			"@@@InProc at EAC258AEA8932F8C9C5947B4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230074890, false, "bb266f01-64cf-4d7a-868c-99bc84bc4021",
+			"@@@InProc at EAC258AEA8932F8C9C5947B4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230075650, false, "92407362-2bc5-4162-a02b-4f98ddd6690e",
+			"@@@InProc at 969088B8FB4AFBBAA2E89256", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230077570, false, "9eef3e00-8ed9-4021-8577-b2b4d68ab934",
+			"@@@InProc at 969088B8FB4AFBBAA2E89256", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230078300, false, "92737f64-c352-4335-bfba-b5f35d1a95e5",
+			"@@@InProc at 40D83B62DCFFF08A84235472", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230083130, false, "6c75cc15-572e-414d-ab10-370edc1a8318",
+			"@@@InProc at 4AD036CFC10FFB15613F3CE8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230083870, false, "22bdcde9-c3b9-4085-8bc9-a04508e9da89",
+			"@@@InProc at 40D83B62DCFFF08A84235472", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230083960, false, "19db1d2f-180f-4fd3-868a-5d20525b480f",
+			"@@@InProc at 4AD036CFC10FFB15613F3CE8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230084970, false, "55072c89-77b5-4e8a-b2fe-8d1429de6e99",
+			"@@@InProc at 98DD460FE6347EC817910C8E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230090250, false, "2e0c1f2a-c18a-45a6-bff4-e67d91fccd24",
+			"@@@InProc at 98DD460FE6347EC817910C8E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230090770, false, "fd4d19e5-dea9-4c70-a0ba-9b94a406224f",
+			"@@@InProc at 5759046ACC2101C7F30813B2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230091370, false, "d1370add-c568-4ecc-aadc-1913cf371876",
+			"@@@InProc at 5759046ACC2101C7F30813B2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230092080, false, "f4b2ddb7-3987-4ada-a3e0-b9c8aab9c785",
+			"@@@InProc at A2CED81A2A4C70D7D4C0F96E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230095960, false, "b189d548-fbdf-4e21-b236-da26242bcb69",
+			"@@@InProc at A2CED81A2A4C70D7D4C0F96E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230096480, false, "9c7c8fcf-f7ba-4727-99d5-1b28966cb81c",
+			"@@@InProc at 6792B3643DE0312E609A0C6D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230100990, false, "233531f0-ff0e-475c-9a09-dc650c8d9e16",
+			"@@@InProc at 6792B3643DE0312E609A0C6D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230101530, false, "d0f6291f-5fc2-4d08-a9e5-bd1a7bf9e30b",
+			"@@@InProc at 37C0206E5D136A86BE63993D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230101720, false, "a9d401f7-b5b9-44d1-8425-c0a0f5a1ba53",
+			"@@@InProc at 37C0206E5D136A86BE63993D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230102470, false, "67c1261d-7fa4-4f60-92f6-46b325aee6a1",
+			"@@@InProc at EE9A43A19102EB5711D22DEA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230106910, false, "706989fb-c726-46c0-bdeb-00e2acfd9610",
+			"@@@InProc at EE9A43A19102EB5711D22DEA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230107460, false, "b4671d4e-813a-4576-bbcd-dff10af6cebd",
+			"@@@InProc at EC0E789EFEF7ADF28B5AF2F5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230107960, false, "ddde8bb9-2bc8-473b-a06b-f32ccf897bb4",
+			"@@@InProc at EC0E789EFEF7ADF28B5AF2F5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230108500, false, "bb766112-e2da-4bef-9b9c-2bc6b9b21e1b",
+			"@@@InProc at B73F922AF1D2CC5D56CCE850", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230113360, false, "f8c3ae69-a74c-4db1-ac50-29f481da1483",
+			"@@@InProc at B73F922AF1D2CC5D56CCE850", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230113880, false, "9bdb1050-ea4a-4aa3-abe7-bd1037cda81d",
+			"@@@InProc at AF793CAC2F64C08B0F2DBA81", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230117320, false, "ecb13f85-95aa-4312-9c84-d8383a733f58",
+			"@@@InProc at AF793CAC2F64C08B0F2DBA81", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230118660, false, "b6cdde2b-d3e5-4017-8712-64f51c8ab091",
+			"@@@InProc at 8B99402C0E3080DA707B3A94", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230119720, false, "2c98e07a-b061-4322-a033-eb04ce6dde6b",
+			"@@@InProc at 8B99402C0E3080DA707B3A94", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230120250, false, "c6f82698-22a0-49d0-951e-ec8d780a3414",
+			"@@@InProc at 4C26D46C153A8E93A709576C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230125520, false, "69ae94d9-97cf-4a60-b52d-46b26394dc58",
+			"@@@InProc at 4C26D46C153A8E93A709576C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230126230, false, "bea65f56-5857-429b-9460-ce5522e6441e",
+			"@@@InProc at 6531424D75B74C52D1643465", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230128730, false, "363ccc2e-502c-46b7-a7f0-3dd9830dedd1",
+			"@@@InProc at 6531424D75B74C52D1643465", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230130820, false, "3d6facf5-5622-4b55-861f-2cd96b24486c",
+			"@@@InProc at 5D795F18458C4C1C98437512", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230132270, false, "ba99feee-5819-4d14-ae27-447f3d831c97",
+			"@@@InProc at 5D795F18458C4C1C98437512", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230132820, false, "f2296d1c-dfea-4795-8013-2b9d4997e5af",
+			"@@@InProc at CC1AC564D12AA346495B6DD3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230138350, false, "5edc5568-62fa-4f55-a36b-2940d76c512a",
+			"@@@InProc at CC1AC564D12AA346495B6DD3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230139200, false, "f9882e54-66c4-49dc-a3b6-3ce530e331d6",
+			"@@@InProc at 2CEF17725D49D90789904F68", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230139260, false, "c9da0bb6-71fd-4c49-95bf-706902357041",
+			"@@@InProc at 2CEF17725D49D90789904F68", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230140350, false, "48146868-db30-4237-af43-c143f49b6270",
+			"@@@InProc at C9C7D9635E787A2FDE16ADFB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230145920, false, "19e66842-4540-4a0d-9476-dce1b0baecd4",
+			"@@@InProc at C9C7D9635E787A2FDE16ADFB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230146450, false, "6e786f04-a421-4957-bceb-6f4575f6dc41",
+			"@@@InProc at 0B72EDB488A75DC6C39AD375", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230151830, false, "12e8f3a4-90ad-4f39-b618-3c6cded4fc3d",
+			"@@@InProc at 0B72EDB488A75DC6C39AD375", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230152470, false, "a6fe04ce-7163-4320-a704-2b0f9753083a",
+			"@@@InProc at E28FB40F39DA9E9C5F0BDEC7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230191060, false, "5c8eb0cb-deff-42bf-a09f-034c77ea4c72",
+			"@@@InProc at E28FB40F39DA9E9C5F0BDEC7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230191740, false, "790fa581-1165-45c1-a759-8c5ffed6526e",
+			"@@@InProc at 54F38C1B4902C486437981E1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230194010, false, "9b05ba17-b65b-487a-9edd-6abaa32032c4",
+			"@@@InProc at 54F38C1B4902C486437981E1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230194750, false, "4ca3440e-98cf-4de7-8119-600f0582ab1d",
+			"@@@InProc at A71878E663DCA70FA82F4FDF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230197290, false, "938bc526-1c64-4dc7-9b57-e0c6af86c24c",
+			"@@@InProc at A71878E663DCA70FA82F4FDF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230197940, false, "b0cf435d-c472-405d-92eb-49209bcc3122",
+			"@@@InProc at D8E5D97AEA5EC6DB748A5806", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230200820, false, "129d81d9-f5a3-4ae5-ad7a-0d06bb5695bb",
+			"@@@InProc at D8E5D97AEA5EC6DB748A5806", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230201440, false, "660c823a-1cd7-4eae-8172-d088bb19f258",
+			"@@@InProc at 1DBC235E53BEFAD1714DE974", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230204220, false, "9c781f41-7a3d-46f6-a929-49ebd72f0fe3",
+			"@@@InProc at 1DBC235E53BEFAD1714DE974", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230204950, false, "67262ee7-8d66-405a-a12d-fe0a86a4757e",
+			"@@@InProc at 7A4D1C22CC42396D48E21B84", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230206890, false, "790bfc93-f6ee-4bbf-849e-eddd828c63ef",
+			"@@@InProc at 7A4D1C22CC42396D48E21B84", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230207790, false, "5ae72413-8ad9-4c16-835d-61b5df963792",
+			"@@@InProc at 91A778C532CB907315D625BC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230211370, false, "250fe01e-4009-4604-82f0-16ba368e22d2",
+			"@@@InProc at 91A778C532CB907315D625BC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230212100, false, "86fa1984-b40e-4815-ab52-c9e6b37917f0",
+			"@@@InProc at 3877AB879D6B9EDF6A9702CD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230214360, false, "e218d429-d268-4c20-9867-dffc660706ca",
+			"@@@InProc at 3877AB879D6B9EDF6A9702CD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230215170, false, "e216c1d3-9553-4047-949c-1618cd8bb8d4",
+			"@@@InProc at 86F267E9EBC19492D98C44B9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230218410, false, "c529718b-0b79-4c05-bc64-b09c0694e754",
+			"@@@InProc at 86F267E9EBC19492D98C44B9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230219140, false, "d10114dc-0cde-443a-ba8a-8baaeecece58",
+			"@@@InProc at C31B5D45308DBFBBABFD5719", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230220880, false, "d4fe83a3-538e-43ad-855e-e765bbedf28d",
+			"@@@InProc at C31B5D45308DBFBBABFD5719", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230221430, false, "994f0369-9d74-4666-9dca-be28a573eade",
+			"@@@InProc at 4E9A891F8363DB72262C7F70", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230225470, false, "b6423d39-6fe4-4aff-bde2-4377d58eaa9a",
+			"@@@InProc at 4E9A891F8363DB72262C7F70", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230226180, false, "7deb93be-40b2-49f9-b07a-d894162b927d",
+			"@@@InProc at 7C75A9078A17492F27FF85BA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230227130, false, "d0785054-a6bc-4ffb-bdc3-2bd962736ce9",
+			"@@@InProc at 7C75A9078A17492F27FF85BA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230227850, false, "15edf358-d1a6-4d48-a7b6-843de9468648",
+			"@@@InProc at AB0C99BB48821CF7672AC946", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230232360, false, "dc4be62d-649c-4f8d-92b4-a0a1c6ebe670",
+			"@@@InProc at AB0C99BB48821CF7672AC946", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230232940, false, "05276a3f-3dbb-4a05-9eed-dc7ad69f0fc9",
+			"@@@InProc at 99A366DF78F4B88B6AB9518A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230234430, false, "655bc9ee-b635-4b9b-a2bb-ec255f8216d8",
+			"@@@InProc at 99A366DF78F4B88B6AB9518A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230234980, false, "195cbc7f-9d36-4d8a-b2f6-90bcfabc2732",
+			"@@@InProc at 2DBCC3A1D2BDDE2E42BF6375", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230239070, false, "a24e82ad-5a79-4da1-8411-8d49c4e60d68",
+			"@@@InProc at 2DBCC3A1D2BDDE2E42BF6375", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230240040, false, "a7f22670-95d4-4f87-9769-c0a2b855352a",
+			"@@@InProc at E8C995C9EB02AE3379F28209", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230240120, false, "81284f87-f633-4873-b9b1-91d8fec7f415",
+			"@@@InProc at E8C995C9EB02AE3379F28209", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230242340, false, "25284434-b88c-4715-a05a-59ced40e4f25",
+			"@@@InProc at B18DB1A064BF04F10E63C1DE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230245390, false, "4bb88488-6777-4150-958d-5266f03eab31",
+			"@@@InProc at B18DB1A064BF04F10E63C1DE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230245930, false, "cfbabaaf-4b3b-4e20-9701-68b399b6b119",
+			"@@@InProc at 715EB276F02F5C7758D18B45", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230250780, false, "70e9a291-4537-47a7-a853-f3bee0b3fe62",
+			"@@@InProc at 715EB276F02F5C7758D18B45", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230251330, false, "09d0fc54-825d-4205-8522-59a1453b13bc",
+			"@@@InProc at F083BD74F74784331D22A781", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230251490, false, "91077cfd-187c-4801-81ac-b306bd14998a",
+			"@@@InProc at F083BD74F74784331D22A781", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230252450, false, "470da3ca-cbd7-48c9-b54a-1902cd209d61",
+			"@@@InProc at FE23A5E1D805E83748F112B4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230257020, false, "5d6b2265-3504-4cf4-ad00-69252d09820c",
+			"@@@InProc at FE23A5E1D805E83748F112B4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230257810, false, "07187c41-d877-4d78-80a2-e23305a8fd1c",
+			"@@@InProc at 8628962C42A119C4B95C36A1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230258900, false, "4db0eae1-4e28-4adf-933b-1ab9cf553eda",
+			"@@@InProc at 8628962C42A119C4B95C36A1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230259450, false, "771a5320-9b20-4153-8680-4ab6ba187181",
+			"@@@InProc at BE2CCA9C24097A720486FADE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230263690, false, "f03e53a6-ed8c-4ec1-ba9d-899b31ab4e0c",
+			"@@@InProc at BE2CCA9C24097A720486FADE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230264430, false, "6d2eb618-47ff-452b-965a-49a328e28354",
+			"@@@InProc at 437D955E97FB14929CE2FCAA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230265030, false, "4273841f-ffdd-4d0f-b4ec-ae3c86f5aace",
+			"@@@InProc at 437D955E97FB14929CE2FCAA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230265580, false, "e28a58dd-b15c-421f-b42a-dbd3aa5faec2",
+			"@@@InProc at F3BB281E65AEE89E17304712", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230270040, false, "02ba6c06-1a07-49b9-a115-780b7548758a",
+			"@@@InProc at F3BB281E65AEE89E17304712", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230270590, false, "718af78f-20e8-4192-8355-7547fe4edf63",
+			"@@@InProc at C112CF78DC45B364597B67D1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230270750, false, "a5e6cd38-dc5f-41b5-827e-b8ce0c549fd1",
+			"@@@InProc at C112CF78DC45B364597B67D1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230271530, false, "83572c07-a9f2-425d-9dd1-f2caf6f805ac",
+			"@@@InProc at 16C536E92A1BAD4409FD1B34", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230275900, false, "f046497b-93b5-4998-bf8f-f2eaa1a2a9e5",
+			"@@@InProc at 16C536E92A1BAD4409FD1B34", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230276640, false, "5ec86285-3f07-494f-b1d8-3388f49ba045",
+			"@@@InProc at B22B96C454C8D2CF20167A75", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230276690, false, "aa9dd01d-d607-4493-a045-daec0106d2e9",
+			"@@@InProc at B22B96C454C8D2CF20167A75", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230277620, false, "1628d1a9-bd18-4447-bb31-4704b911281a",
+			"@@@InProc at BD253456595FEDBD30E2E61B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230282150, false, "55bedbf1-2124-4aea-820a-0c7cfd45397e",
+			"@@@InProc at BD253456595FEDBD30E2E61B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230282860, false, "d4e64dec-0a40-4d2c-b95b-fe8b2b29aff5",
+			"@@@InProc at 1C91540121898D9C1C23DBB9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230283640, false, "751568b3-2b4e-4741-bc8d-82f1c3e8a3d7",
+			"@@@InProc at 1C91540121898D9C1C23DBB9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230284370, false, "41d5d96b-e73d-4600-a1fd-9a3b9b3b4284",
+			"@@@InProc at B2D6E45D5A031F1A0CD317D9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230289060, false, "cf4ee611-2b75-4bbd-8d8e-624e51d9a1b0",
+			"@@@InProc at B2D6E45D5A031F1A0CD317D9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230289970, false, "926c4b22-f73b-4f2c-870b-8528239e7f61",
+			"@@@InProc at E7F1C59C91671F9B48287270", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230291420, false, "905831e5-0a96-4aec-9348-66b849c5b27d",
+			"@@@InProc at E7F1C59C91671F9B48287270", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230292230, false, "1710871f-aa66-4945-ba6c-3cb0ba9b43c5",
+			"@@@InProc at 06EAEBBFC3AEC34E9DCDAB1A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230295710, false, "183e012b-e1ac-4513-83a3-ef801ffac81f",
+			"@@@InProc at 06EAEBBFC3AEC34E9DCDAB1A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230296770, false, "6e94fa75-fdf6-4a19-94a0-d7f11eeadf15",
+			"@@@InProc at 636EF2F48CBB25152A57840D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230299260, false, "6bc1e728-4ce3-410b-a745-9285d70f6a96",
+			"@@@InProc at 636EF2F48CBB25152A57840D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230299990, false, "d448c489-a22f-4a2e-bef8-319eb5a14c01",
+			"@@@InProc at 80BD4F3854848D2A181CA9F5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230304060, false, "257e54ac-2f3c-4d44-85b4-9f4c4a228c6a",
+			"@@@InProc at 80BD4F3854848D2A181CA9F5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230304600, false, "efa911d9-0f71-4dae-a3cb-5844d5e5bcaf",
+			"@@@InProc at 14C08681DDFFD9170A4B8CEC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230306060, false, "189cb98b-6b9b-4084-a5fe-2e42c497990f",
+			"@@@InProc at 14C08681DDFFD9170A4B8CEC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230306770, false, "2f008541-5da4-4559-9125-0fe1971264f5",
+			"@@@InProc at 9BB9AB60E23817802B837776", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230310080, false, "2b57e209-1cb2-45ba-862b-a979114b6938",
+			"@@@InProc at 9BB9AB60E23817802B837776", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230310670, false, "d44b1a99-b4fd-467c-bbbe-38dd509a467b",
+			"@@@InProc at ED51FE75F64FA1EDA6E94643", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230313190, false, "98e4f7fd-f290-4ed8-b3f6-c337a42bc4f2",
+			"@@@InProc at ED51FE75F64FA1EDA6E94643", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230313890, false, "956b6221-b839-45b6-be99-04fa3e06535b",
+			"@@@InProc at BD62AF60B36C01C3D1477DF9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230315770, false, "92444102-81fd-44e5-a4bf-540308fb4802",
+			"@@@InProc at BD62AF60B36C01C3D1477DF9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230316600, false, "8339aa95-5bb2-4fa4-86a7-52fb59518248",
+			"@@@InProc at F5E2BD19A05BAF0AAA9062B5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230320330, false, "81cb6952-9bed-4e15-ac95-e6d8426004ea",
+			"@@@InProc at F5E2BD19A05BAF0AAA9062B5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230320860, false, "574a5aca-f798-4270-b441-6b31f27282cb",
+			"@@@InProc at 35BE4BDB6EA8C10740473117", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230322420, false, "c9454449-15ea-4f1a-8268-3fdca78a9d77",
+			"@@@InProc at 35BE4BDB6EA8C10740473117", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230323030, false, "dff133a2-7ad4-4eed-8948-9031d641875b",
+			"@@@InProc at C977D2FEE7BFA581CBD955EC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230326990, false, "5443de2f-5959-48c7-8b79-09d9d58ed8bf",
+			"@@@InProc at C977D2FEE7BFA581CBD955EC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230327800, false, "2422848e-6365-4166-b4ea-bd56194f698f",
+			"@@@InProc at AF17184E307BF6C225A4C2D6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230328810, false, "7aaf3f6a-fb5d-41e1-8b51-7a0877bcfd3d",
+			"@@@InProc at AF17184E307BF6C225A4C2D6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230329330, false, "3680ef05-6471-493b-8be6-39bd83897154",
+			"@@@InProc at ED7FAA866B431BB772631521", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230334210, false, "116a82a4-b692-48c5-a4f7-d817c58bae54",
+			"@@@InProc at E562D014435A61DEB2D369D5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230334960, false, "8f3ce937-f1c6-4b7a-b416-3b7ec8b12b06",
+			"@@@InProc at ED7FAA866B431BB772631521", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230335150, false, "4b5f8fdd-e2a7-4b94-9c13-efc4f6689bf5",
+			"@@@InProc at E562D014435A61DEB2D369D5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230336170, false, "0b551821-4675-4ddb-a871-da54ef5edf17",
+			"@@@InProc at 67995F8FA36561F45A6657AE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230342060, false, "1048342c-e468-431e-aae6-bd6a66b4a14b",
+			"@@@InProc at A7CDC30A1F34E912512894C5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230342670, false, "ccd07fee-f608-401b-a750-1ece3e63ea8b",
+			"@@@InProc at 67995F8FA36561F45A6657AE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230342730, false, "28dd0172-319d-4c21-b06d-641d19937266",
+			"@@@InProc at A7CDC30A1F34E912512894C5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230343560, false, "287685d5-865f-4b59-bc4c-97d32eaacc5e",
+			"@@@InProc at 433373739262719B25233935", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230348930, false, "837a052b-04f8-4fe4-94d3-2973c498ad9a",
+			"@@@InProc at 7B2FE4D07B306CEBB0668FC9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230349010, false, "827ca399-23bc-48d4-bb64-18ef19695599",
+			"@@@InProc at 433373739262719B25233935", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230349920, false, "34f74ff1-faa5-4290-82dd-88a6038beee8",
+			"@@@InProc at 7B2FE4D07B306CEBB0668FC9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230349980, false, "f44c4a05-a52c-4d20-84d8-1fa270edf828",
+			"@@@InProc at 5911A089BBCB08140B64FAE2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230355870, false, "49aa0fbd-eee9-4b5d-8133-3f5613ce8869",
+			"@@@InProc at D725D22278B7DE42C6384734", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230356050, false, "9cd105ff-b4cf-4906-8385-cf47229e4f3f",
+			"@@@InProc at 5911A089BBCB08140B64FAE2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230357120, false, "3e7ed3a4-6532-48f1-9ae2-942e19a0ba45",
+			"@@@InProc at D725D22278B7DE42C6384734", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230357270, false, "8f962923-f05c-473b-b4d3-e518f58df9a6",
+			"@@@InProc at 8CE6BC1357B6F78EEA1B74B7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230362450, false, "1529e919-c1b2-4d19-8bf3-f69db94bec59",
+			"@@@InProc at 8CE6BC1357B6F78EEA1B74B7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230363090, false, "4fa8addb-87d7-4940-aba7-f216aaf89131",
+			"@@@InProc at 2894C49F475EEDF2C081B1A2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230363620, false, "c14c028f-0a7a-4b21-bf8a-08c0fb57ff49",
+			"@@@InProc at 2894C49F475EEDF2C081B1A2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230364150, false, "c65f4ba7-7506-4572-bdda-91d5c8ca5cc9",
+			"@@@InProc at 9A99B67DA589D212F8653F74", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230369450, false, "258a9a8e-b0e8-4408-ab5a-25c80bf29677",
+			"@@@InProc at 9A99B67DA589D212F8653F74", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230370220, false, "92fc9ec5-61c7-4d64-8c78-d717fc791d3c",
+			"@@@InProc at 8B76F842AED8AE2F92888841", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230370910, false, "ec7b1e94-88b0-4a88-84de-412c7f1457d1",
+			"@@@InProc at 8B76F842AED8AE2F92888841", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230371640, false, "f8c5a07a-2549-49c4-a0a4-739a0e64d671",
+			"@@@InProc at 9F368337D3C9D317435435A7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230376590, false, "e25b24b4-e1e7-4bf7-81d4-e4c7fc00aa16",
+			"@@@InProc at 6E24893577892B45AE91E323", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230377540, false, "171a7ccb-729e-412b-871e-05eab01dc842",
+			"@@@InProc at 9F368337D3C9D317435435A7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230377610, false, "e29ffdc2-a217-40b5-a1b9-4d7034d5f448",
+			"@@@InProc at 6E24893577892B45AE91E323", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230378580, false, "326e27ad-2048-4bcc-ba49-98bff96d3973",
+			"@@@InProc at 03FDC351317682D39492C7E2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230383380, false, "0953855a-81f3-413f-8ccd-7c6d76e723f8",
+			"@@@InProc at 49773988ADCD2DB53EAD3057", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230384060, false, "0f49577f-b2dd-4987-b290-9a375b7ff7bc",
+			"@@@InProc at 03FDC351317682D39492C7E2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230384230, false, "6790c6eb-686d-4ead-b1fb-9a740d22106c",
+			"@@@InProc at 49773988ADCD2DB53EAD3057", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230385230, false, "628d7e8d-9ee8-478a-b6f5-b3bc06600cb0",
+			"@@@InProc at 065CF1FA0D6497DF4489F45B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230390230, false, "9d6778b4-b30a-4de6-9be1-f62c3867e0c9",
+			"@@@InProc at 065CF1FA0D6497DF4489F45B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230390750, false, "7305e850-adfd-4fb8-95cc-42352a0036db",
+			"@@@InProc at 1605538F66E0126F10FA335F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230391560, false, "a035f809-9c0c-4041-ac5c-65f5a5f00cf8",
+			"@@@InProc at 1605538F66E0126F10FA335F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230392270, false, "974faef7-be05-4475-ad86-7bbcee9572c9",
+			"@@@InProc at D86570E5946519255132618A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230396060, false, "7da41b4a-ede3-482c-8d13-20b6afc175bf",
+			"@@@InProc at D86570E5946519255132618A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230396830, false, "5b946e83-dc78-4116-8c96-c0cf01ca7c7c",
+			"@@@InProc at 15FE18067DE5C3413798BE82", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230399090, false, "49548a79-4b1a-4b19-a3aa-6fb55b9e777d",
+			"@@@InProc at 15FE18067DE5C3413798BE82", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230399940, false, "5f8fe20b-e0df-4b9a-8991-e4648f39928b",
+			"@@@InProc at 409452E976AFB6E04E3B03B7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230402950, false, "e6708b03-e9a8-49fd-af03-0c7f76f24c79",
+			"@@@InProc at 409452E976AFB6E04E3B03B7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230403460, false, "7195f6fd-7049-43e0-ab27-5419647d2004",
+			"@@@InProc at D297A8FD2A105366AB73C952", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230406340, false, "dde14670-0ad9-41fb-9e01-08975938a76b",
+			"@@@InProc at D297A8FD2A105366AB73C952", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230407060, false, "dbe31192-8d7b-46f2-96e1-6910b9321426",
+			"@@@InProc at 12C3C2836F1FF25D226F1E34", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230408690, false, "11d30ce3-e482-459e-81ee-20f2651ffbb5",
+			"@@@InProc at 12C3C2836F1FF25D226F1E34", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230409290, false, "2d8ed7bb-4163-40f2-b626-c72b48bd58c8",
+			"@@@InProc at F76B2D98DE9C54EA99FDB8F4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230413400, false, "7acdedd9-5641-47ae-89b2-fa1b6fd757cd",
+			"@@@InProc at F76B2D98DE9C54EA99FDB8F4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230414120, false, "a0f06234-0964-4370-9a02-3a37949eced2",
+			"@@@InProc at 8009061365F8FDF974BE0EEA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230414740, false, "dbb5cf13-232f-48f8-8178-bb9eed4ab538",
+			"@@@InProc at 8009061365F8FDF974BE0EEA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230415320, false, "584ec40e-d1b9-484a-ba31-c5a54a9e73b4",
+			"@@@InProc at AA50BF193B9D49B22E60A840", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230420590, false, "17b928b5-68d4-4094-8eea-9ce47ecce5b1",
+			"@@@InProc at 5CA54E9B656AF491E72F8D1C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230420800, false, "6340e54a-84cf-49c7-b579-7ffced254c45",
+			"@@@InProc at AA50BF193B9D49B22E60A840", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230421930, false, "5b012c70-4b44-41f3-a19b-126e294acca0",
+			"@@@InProc at 5CA54E9B656AF491E72F8D1C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230421980, false, "76325d6b-f572-4419-aab0-67abc230562d",
+			"@@@InProc at 2ECA16C5EC07AA2399B0C863", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230427360, false, "43dc5107-5e8b-41fc-8867-6542318f9047",
+			"@@@InProc at AA43447B9C3159A7A0B23568", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230427700, false, "29047860-21e9-4ce0-aac4-da4c4b0593e4",
+			"@@@InProc at 2ECA16C5EC07AA2399B0C863", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230428500, false, "2cd662c9-cb3e-4938-a3ac-fd4898cba7db",
+			"@@@InProc at AA43447B9C3159A7A0B23568", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230428620, false, "0db3e5ce-0540-4332-8c3b-79faf302f4b0",
+			"@@@InProc at 6CC96C86CDA8FAF875B23804", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230434410, false, "25561831-0008-4a6e-993c-3f4652279bb4",
+			"@@@InProc at 6CC96C86CDA8FAF875B23804", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230435080, false, "56a9241f-f39d-4c01-8321-aa9f8830e59d",
+			"@@@InProc at 1C9D5B2831E9A59E7B6AF6F2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230435210, false, "ce5240b1-041d-49d1-9b7b-940c5a8a0dba",
+			"@@@InProc at 1C9D5B2831E9A59E7B6AF6F2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230436220, false, "009ba705-9595-4cbc-ae95-766dd7d4c0cf",
+			"@@@InProc at 63AF42D0D4A8BECB2338E209", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230441510, false, "a5f79724-2745-4703-8690-ca3df52898ce",
+			"@@@InProc at 63AF42D0D4A8BECB2338E209", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230442310, false, "74ce06a5-7fc5-47e3-8b16-bed0c87013fb",
+			"@@@InProc at FCCCA56CE9AC3CF0610857E1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230443080, false, "a622a838-6272-4048-b1c2-0cb12697655b",
+			"@@@InProc at FCCCA56CE9AC3CF0610857E1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230443820, false, "85e8ef03-c785-4f8e-9a87-35aa9a5872a9",
+			"@@@InProc at 36B8ED5D2539337E143B7FE6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230450080, false, "927b1669-4f62-4ed1-b282-8df80a7ac7dd",
+			"@@@InProc at E46E971D27E05A41DED1FB46", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230450780, false, "0a92956c-e712-4354-a9b5-c3fdbbd71a49",
+			"@@@InProc at 36B8ED5D2539337E143B7FE6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230450850, false, "f4664edc-6674-49f2-a013-95c4a0a4a91f",
+			"@@@InProc at E46E971D27E05A41DED1FB46", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230451890, false, "f093f2f3-e5da-4d50-88e5-8af872c11da0",
+			"@@@InProc at A3E980004240EE756F71F260", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230456830, false, "594c85cb-46eb-4844-be58-823d3036f26d",
+			"@@@InProc at A3E980004240EE756F71F260", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230457360, false, "2d4a539c-0c7b-4894-b447-42ed313bb2ac",
+			"@@@InProc at 1DECCC8D9092ED7E95729240", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230459440, false, "5cc01d8a-bd32-458f-a39a-9b26d7a6cc4f",
+			"@@@InProc at 1DECCC8D9092ED7E95729240", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230460150, false, "20900dd4-3c8e-4057-b0cc-ea7d5b6e5790",
+			"@@@InProc at B83C7BE68BE563535B652797", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230462480, false, "27c99b85-0fa8-4b20-acba-3ae0beb8f9e4",
+			"@@@InProc at B83C7BE68BE563535B652797", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230463120, false, "90216d2e-f290-4916-b70e-29204c96c23a",
+			"@@@InProc at 59D89558D283923A1DF85736", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230465990, false, "f91506f4-35d3-4d00-ad98-07bf1db58ab7",
+			"@@@InProc at 59D89558D283923A1DF85736", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230466520, false, "c213a363-e6cb-45d1-8ab0-37d702d9f2ba",
+			"@@@InProc at CB82189E4799A45FCD22A523", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230468430, false, "a0ebce6e-d1c2-4df6-96d9-85cfcb863e2a",
+			"@@@InProc at CB82189E4799A45FCD22A523", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230469120, false, "34ff1079-4f14-4386-b022-bce72e0703cd",
+			"@@@InProc at E1BA72BF7611B7E956C3468E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230472620, false, "8ab9813f-5d8c-41f4-97d3-7a15eda38bc9",
+			"@@@InProc at E1BA72BF7611B7E956C3468E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230473410, false, "56e8950a-d118-42b0-a8dc-8f9886eb3255",
+			"@@@InProc at B76BF61D4B0CC12F99C8846A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230474430, false, "9dc213a6-810d-4358-a62a-ae623d09f416",
+			"@@@InProc at B76BF61D4B0CC12F99C8846A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230474950, false, "08c3c3b3-e05b-4728-8e07-511dd30aec80",
+			"@@@InProc at D01FE82939C5C84355558DCC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230479010, false, "65e3336f-e2e9-47be-a718-790c033e8907",
+			"@@@InProc at D01FE82939C5C84355558DCC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230479700, false, "0743a658-7a49-4900-b6d2-147ebe77992b",
+			"@@@InProc at 2C73BDACFCD731285B3CDE98", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230480760, false, "b4915a74-e195-4e2b-a444-e6a60679bfe9",
+			"@@@InProc at 2C73BDACFCD731285B3CDE98", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230481300, false, "2560f274-d526-40bd-8619-3434f17a619d",
+			"@@@InProc at 34F67DBAB44FDF640B7EC19B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230485800, false, "4a9af21a-28a6-4f81-8b1a-c7a8ffc64d75",
+			"@@@InProc at 34F67DBAB44FDF640B7EC19B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230517570, false, "9014e75d-14b1-43b5-a191-4c0fbe908f35",
+			"@@@InProc at BA83B7C6E502F166D3B406E5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230517760, false, "defdd800-3566-4398-a5c4-3d3603599ffe",
+			"@@@InProc at BA83B7C6E502F166D3B406E5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230518890, false, "36dbfd6f-4c57-4374-adb3-ebf315849607",
+			"@@@InProc at AC855240811E46B26ADB2A98", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230523650, false, "52bedeaf-56c6-4d94-8a6f-f4097869be49",
+			"@@@InProc at AC855240811E46B26ADB2A98", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230524270, false, "059e86e3-2fae-41fc-bf91-e3cbead9e05d",
+			"@@@InProc at 66B15F678FBF1667A38DF944", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230524890, false, "98f74db3-c676-416e-89c8-addfa876105f",
+			"@@@InProc at 66B15F678FBF1667A38DF944", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230525420, false, "dcdfe673-e045-4341-ad36-003836b695b8",
+			"@@@InProc at 92CA6ED850573F5B481867C0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230530000, false, "22084a44-d192-4e39-b7a2-023c09b79326",
+			"@@@InProc at 92CA6ED850573F5B481867C0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230530510, false, "ccc57871-6ea8-43fa-bf0d-7ed3fa846907",
+			"@@@InProc at 3FE836C1DC01CF5F6BBDF4EF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230531520, false, "27ccce08-ab9f-42a4-8fd5-1cdeca98aef6",
+			"@@@InProc at 3FE836C1DC01CF5F6BBDF4EF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230532210, false, "c1b7a2d6-3754-4370-9183-a162f7f1bf61",
+			"@@@InProc at 426F9A6C7CD09B9B9A61A9F9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230536880, false, "60340d74-d787-4869-a668-4c6d45b43628",
+			"@@@InProc at 13DB9F66285B463BF3B90DFF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230537890, false, "34132316-5b2a-4bf7-8b5d-4c6b12aafadc",
+			"@@@InProc at 426F9A6C7CD09B9B9A61A9F9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230538040, false, "eb95d14a-830b-481b-b7fb-eb59c420c98c",
+			"@@@InProc at 13DB9F66285B463BF3B90DFF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230539020, false, "09f719cb-0bd5-40ff-8642-088676a4459b",
+			"@@@InProc at 80385216191F857B0FB7BC6D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230544200, false, "cb885723-e543-4e68-a3cc-64dab2a2758a",
+			"@@@InProc at 80385216191F857B0FB7BC6D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230544910, false, "ccea32bf-cce7-4620-a8b9-b08a6d39dd34",
+			"@@@InProc at 4749EA979035522D1A1CBBF5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230546240, false, "dc39e77e-f5fe-4c2e-affb-f9de039c79ac",
+			"@@@InProc at 4749EA979035522D1A1CBBF5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230546970, false, "530913cc-624b-41db-8fb1-a7ec0812c9a5",
+			"@@@InProc at EF4BC10DC1A197631ECE7686", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230551430, false, "5a56e4a9-319c-4224-969e-6d94075c6b38",
+			"@@@InProc at EF4BC10DC1A197631ECE7686", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230552410, false, "94bf7d2c-b990-4631-b17c-801033f138c1",
+			"@@@InProc at FA3D82F6E3609A25C3FB280F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230553650, false, "dcad618d-f82a-49f0-95ba-e48ea9371f72",
+			"@@@InProc at FA3D82F6E3609A25C3FB280F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230554350, false, "46625941-4024-46bd-b6f1-dec32bd8d03f",
+			"@@@InProc at 4BFF27B83834CFADB79B75A7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230559090, false, "99f159fb-b393-46db-8f2c-30f531f93a77",
+			"@@@InProc at 4BFF27B83834CFADB79B75A7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230560010, false, "3a23edaa-847b-4057-a006-43217f467e20",
+			"@@@InProc at 2F8D9534212069AE2E654A05", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230561510, false, "2e043fb9-13da-439c-a5e8-a0b7b830a9f5",
+			"@@@InProc at 2F8D9534212069AE2E654A05", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230562280, false, "84e7551c-69cc-43ba-b553-161b1094a8c2",
+			"@@@InProc at E5DF5EE5DDF4C3BAE7AA14DF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230566760, false, "75f195c7-96de-490b-b769-d08d6e94c2ab",
+			"@@@InProc at E5DF5EE5DDF4C3BAE7AA14DF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230567380, false, "a57da6ae-7c51-4701-8a0e-db04a4d4c09a",
+			"@@@InProc at A24DC89CDA09DC8F5BB890A2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230567970, false, "c4ac825e-95b1-4b5c-bf25-4f4c6cefe8a4",
+			"@@@InProc at A24DC89CDA09DC8F5BB890A2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230568510, false, "87e684fc-1cb9-4ffb-ac0e-02b35df90c6d",
+			"@@@InProc at FE0573BFC4EA2C6A08B91B3D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230573250, false, "f7fa3f80-b83f-46ab-9b3d-788a534180ab",
+			"@@@InProc at FE0573BFC4EA2C6A08B91B3D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230573930, false, "c6f05c34-44c4-4193-a56b-1f7dd719e977",
+			"@@@InProc at C3C724FAB0561DC66830753D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230574000, false, "14fbe572-bfa5-48b0-bb18-2e7860d1f5e1",
+			"@@@InProc at C3C724FAB0561DC66830753D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230574830, false, "2f818918-7707-469e-a6f7-b9aecfdc0a43",
+			"@@@InProc at CB95DD98C49A2B6945DC2B87", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230579530, false, "fe9d9f51-5eba-424f-8a50-410204118af7",
+			"@@@InProc at CB95DD98C49A2B6945DC2B87", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230580200, false, "18eb2690-befa-4990-8313-5f837f1b911b",
+			"@@@InProc at AAD5CC5CB7E312F03CE29CF2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230580820, false, "ceaaef5f-17f2-4672-8cec-f21c808adae8",
+			"@@@InProc at AAD5CC5CB7E312F03CE29CF2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230581530, false, "2032cee7-fb81-4bfc-91af-c283d3cbb990",
+			"@@@InProc at F8F768E219500C0C58C9CDD0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230586150, false, "586768fa-8522-43ae-8123-d95ff80c439a",
+			"@@@InProc at F8F768E219500C0C58C9CDD0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230587020, false, "3f56fe8f-1cd6-4c36-ae9d-5c8d36ba2bd6",
+			"@@@InProc at 9573B71075C4F6DB0E76D710", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230588460, false, "2d21cf63-ea01-4374-ad37-2a3adde0290b",
+			"@@@InProc at 9573B71075C4F6DB0E76D710", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230589260, false, "c11d2154-152a-4cd7-9247-45a5949cc4e3",
+			"@@@InProc at 0A746190D7E022F7147CEFF3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230592880, false, "ce3bed0a-0ea3-4bfe-b2ef-8c57a03b7f0d",
+			"@@@InProc at 0A746190D7E022F7147CEFF3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230593920, false, "73066056-16e7-45ec-84cb-10f2182054b4",
+			"@@@InProc at 729151BE439832CD42B039B6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230596930, false, "6dc3bfca-1886-4660-a85d-ab5d0c4647f0",
+			"@@@InProc at 729151BE439832CD42B039B6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230597550, false, "78d28fa7-40d7-4255-88c0-017a8764d62b",
+			"@@@InProc at 38E932221CBFB320CA0AD75A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230600860, false, "52454089-2369-4fdc-8bc6-8b8c1c6dfdb4",
+			"@@@InProc at 38E932221CBFB320CA0AD75A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230601570, false, "9cb5e8e4-82c6-4f77-84dc-9e0b4679b837",
+			"@@@InProc at 4B28D682C72FAB391AAFC8A4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230603210, false, "6f4ec6b8-cc01-40ab-bcc6-6138a0cb45ad",
+			"@@@InProc at 4B28D682C72FAB391AAFC8A4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230603760, false, "00b09e81-7be3-4bfd-b127-cf2487067fe8",
+			"@@@InProc at DEE597CA75F5FFE1BA1720EF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230608740, false, "91c24964-faba-4a9a-8001-eda382ba13a3",
+			"@@@InProc at 33052B4512E007CBB9A8509B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230609370, false, "e9090439-aef1-4f8f-8783-9c4d372f9a18",
+			"@@@InProc at DEE597CA75F5FFE1BA1720EF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230609430, false, "4b98b069-5484-40c9-bc02-1b7785631280",
+			"@@@InProc at 33052B4512E007CBB9A8509B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230610340, false, "10617bd7-bf2a-4400-86b5-3b916ddb39ad",
+			"@@@InProc at F6CAFAA315FF71ECD7164902", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230615750, false, "0d4a25b2-58a1-4d6c-929d-098e6798025d",
+			"@@@InProc at 3D1698EC2CE972E5DB40F1AF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230616500, false, "ed2abb67-8202-4e48-88bb-d776c13167cf",
+			"@@@InProc at F6CAFAA315FF71ECD7164902", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230616570, false, "ffc631cb-398f-4a02-8faf-4730e737a523",
+			"@@@InProc at 3D1698EC2CE972E5DB40F1AF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230617650, false, "1fc210a6-5207-4ab7-b73b-c48c01e5ff0f",
+			"@@@InProc at 439563B8E3614642F476D78E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230623820, false, "f31478f5-b845-4208-930a-a5c085732b70",
+			"@@@InProc at 3032C17D05382C5854757191", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230624910, false, "38b401d9-5e56-477c-9456-abd51955636a",
+			"@@@InProc at 439563B8E3614642F476D78E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230624990, false, "17ec6706-839e-486d-9e1f-715424b39b0a",
+			"@@@InProc at 3032C17D05382C5854757191", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230626080, false, "9e3d698f-820a-4635-b945-337e0e70f8c0",
+			"@@@InProc at 9D0A478CE8DF0878A1C6B632", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230633540, false, "c28a3f86-84fb-49dc-841d-54c84dc61f17",
+			"@@@InProc at A54EB81BDB4FA95691156461", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230634360, false, "90ee78a9-2304-4729-adf2-84cefa2c3bf7",
+			"@@@InProc at 9D0A478CE8DF0878A1C6B632", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230634430, false, "d96cf89a-0df2-4481-a68e-67ebb866d619",
+			"@@@InProc at A54EB81BDB4FA95691156461", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230635550, false, "d6ba6833-158d-4a5e-8e6b-9ab9e64ceac2",
+			"@@@InProc at 3757082745D5FBEF9C63BA9D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230641600, false, "5b25bae9-5d28-4c8b-bd33-d162ca5ae43c",
+			"@@@InProc at E0823AB75F46C172F10D9650", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230641840, false, "3f35b302-c6ac-4bdf-9950-cb8387affca8",
+			"@@@InProc at 3757082745D5FBEF9C63BA9D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230642690, false, "806ea7a1-2d8e-4b3d-9978-248dfa6422f7",
+			"@@@InProc at E0823AB75F46C172F10D9650", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230642750, false, "4ca8de44-21c1-410a-9739-3c74ca7552a6",
+			"@@@InProc at FC627D9D2F14B1C00531BFC0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230649170, false, "2d6ee2c9-f40c-42d1-864c-ccb779e9efa7",
+			"@@@InProc at 8AA3CE0F29507FC6C27B05B3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230649680, false, "05c12160-ebd4-4e95-8a83-2650e464e923",
+			"@@@InProc at FC627D9D2F14B1C00531BFC0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230650450, false, "d0d64243-dc94-4f64-98d8-e5c7eb55f25b",
+			"@@@InProc at 8AA3CE0F29507FC6C27B05B3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230650600, false, "ec845885-f8a5-4111-bbd2-ce37704bb04d",
+			"@@@InProc at 1668F4C8EB6DABCFD4DC14E9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230658000, false, "b2be01ae-764d-45ec-8881-35caa033205e",
+			"@@@InProc at 1668F4C8EB6DABCFD4DC14E9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230658720, false, "35e0a7b0-8cc4-4275-ae78-f8490983a2b0",
+			"@@@InProc at 934156C828D6CE61F29BA430", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230665410, false, "1a2524be-526d-49a4-afe2-3d1dcb4b60b2",
+			"@@@InProc at 934156C828D6CE61F29BA430", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230666120, false, "bdc70559-62dc-4521-8957-3c4fd3ea12be",
+			"@@@InProc at 284E303636AD6AA84C17FCC0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230669850, false, "c2d18998-6ec6-490a-abd9-9e2c03d7c368",
+			"@@@InProc at 284E303636AD6AA84C17FCC0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230670460, false, "107057d8-beda-4e55-aa89-75f14e2a1008",
+			"@@@InProc at 2693ED9E8D3D944E8DB8E089", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230673000, false, "7cd617cd-0cf3-4e18-898b-825ca59eb289",
+			"@@@InProc at 2693ED9E8D3D944E8DB8E089", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230673770, false, "3e14f82a-eb9d-40ea-b064-7d0ff2b0bbad",
+			"@@@InProc at A1B8B70C52827AF9517E4D5B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230676710, false, "17b86ffe-b6b9-422a-a0e0-7461d91667ce",
+			"@@@InProc at A1B8B70C52827AF9517E4D5B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230677400, false, "0da02b15-c1f9-438c-a53e-08c61461bafb",
+			"@@@InProc at 3ECD6B39CA12F53A07E94C8C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230680060, false, "0bc18a7e-6a91-4170-a764-e4011dac8106",
+			"@@@InProc at 3ECD6B39CA12F53A07E94C8C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230680700, false, "6ad276d8-9038-4db4-81fd-fcbae0154164",
+			"@@@InProc at D201EDB1299BCC64DFE1EE56", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230686460, false, "5c0e6e67-e13e-4ecc-84ae-2e82e38e13be",
+			"@@@InProc at D201EDB1299BCC64DFE1EE56", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230687300, false, "5c800f95-c062-40d1-8930-3807d7134b14",
+			"@@@InProc at F13421F2D76E5166F308152C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230688380, false, "28d5ced1-4c18-48dd-ac41-504886c06071",
+			"@@@InProc at F13421F2D76E5166F308152C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230689170, false, "3a8c7932-0c7d-49e6-9ad8-4c642a94ed52",
+			"@@@InProc at 9182A5A72A0DA08829FD930A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230693560, false, "aad9e284-470f-4ac7-88f2-e310038fa526",
+			"@@@InProc at 9182A5A72A0DA08829FD930A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230694130, false, "b16e7181-6628-47ea-9c4b-fee045e9fdaf",
+			"@@@InProc at 9EEE8E2E6355FAE4E4304D40", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230696080, false, "a75a2a47-a0dd-4552-8540-14d1abefc84d",
+			"@@@InProc at 9EEE8E2E6355FAE4E4304D40", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230696770, false, "49fe016b-3afb-4868-9d2e-61bde51e3e65",
+			"@@@InProc at 5F4F78F95C760C9620347EF0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230700300, false, "28f0c0d7-f92a-4b5c-a86d-259c84bbc515",
+			"@@@InProc at 5F4F78F95C760C9620347EF0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230701020, false, "e1318348-c7f0-4890-94bf-a4c8bdc34360",
+			"@@@InProc at E50B6004DFE4C72E2805045C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230702170, false, "d8c504d5-7190-44e7-90e9-b2dc2a2d082f",
+			"@@@InProc at E50B6004DFE4C72E2805045C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230702700, false, "3db50f74-05ec-4807-a33f-ea3a69b6ff12",
+			"@@@InProc at CAB4016B9F4F2D3EE53B45EE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230707470, false, "365ecdd8-274e-4c43-8e5b-5a8980d2f6a7",
+			"@@@InProc at CAB4016B9F4F2D3EE53B45EE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230708090, false, "81335f7b-8914-4c96-b1fa-92345db2b0ce",
+			"@@@InProc at 434B4EBB1790B43FA1825B77", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230708870, false, "32078048-9d23-44e3-9e8f-d3fde4a15c73",
+			"@@@InProc at 434B4EBB1790B43FA1825B77", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230709560, false, "3048128b-1d85-4db0-aaea-4d29ade0163b",
+			"@@@InProc at 3863689192F3FB297107A49E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230713700, false, "15bb988f-e579-4217-bb23-93b730ab1a87",
+			"@@@InProc at 3863689192F3FB297107A49E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230714440, false, "fb5691ae-0b21-4793-94da-0a7a4e4a25da",
+			"@@@InProc at 48FBE98000DA172857E0FB1B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230715490, false, "b95fab28-0cb2-418f-a83e-c5383925da71",
+			"@@@InProc at 48FBE98000DA172857E0FB1B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230716010, false, "7d242592-0a6d-49ea-8b5c-8b5ae16e35bf",
+			"@@@InProc at 56549DC0843B8A18AC4EA02A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230720420, false, "c050d231-bdc2-4002-85af-10b93d89df98",
+			"@@@InProc at CBFFF8E6560D977EE8197175", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230721250, false, "cb9e7dbc-d08b-4367-b582-9ca72eb780dd",
+			"@@@InProc at 56549DC0843B8A18AC4EA02A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230721330, false, "165b0287-09cd-4079-b7c8-e57a7d990c78",
+			"@@@InProc at CBFFF8E6560D977EE8197175", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230722370, false, "96bfa1b5-6402-41d3-a4d9-30bcdda16fd8",
+			"@@@InProc at 662BB05C6A1D42051A6A3E94", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230727690, false, "6ed7a2d8-1e69-4658-a8d4-21839b77e251",
+			"@@@InProc at 0B556A315AB77220AD7AE345", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230728330, false, "9b732cff-c005-415c-9835-3d2802311f8b",
+			"@@@InProc at 662BB05C6A1D42051A6A3E94", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230728400, false, "cfc6cd29-6ab0-4ce6-8fd0-1a835b268dc6",
+			"@@@InProc at 0B556A315AB77220AD7AE345", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230729220, false, "3e72b444-ebaf-4e55-983a-eee9b9722229",
+			"@@@InProc at C9E15AD68125B8972C8675C5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230733850, false, "1086343b-31d3-4d09-8e87-6ce7a1bde7ca",
+			"@@@InProc at 2C45BC970C3D4F1AEDA03386", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230734520, false, "ad4ca89c-2c81-45d7-a984-e7e81635b452",
+			"@@@InProc at C9E15AD68125B8972C8675C5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230734560, false, "c06fa165-b621-4a94-a83c-ff1230262308",
+			"@@@InProc at 2C45BC970C3D4F1AEDA03386", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230735470, false, "35aa4432-9934-4f3b-a707-3a90950183f0",
+			"@@@InProc at ADB7DBC14076A01B3212A2AC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230740330, false, "91145c30-47db-4bb7-837f-4ddbcfebc637",
+			"@@@InProc at 48FEAAC3A44472A4A6AF4D1C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230740960, false, "cbd49992-a934-463c-aa97-9cf5ccee366e",
+			"@@@InProc at ADB7DBC14076A01B3212A2AC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230741020, false, "828a71e1-798e-4c7e-a855-2e466684cefd",
+			"@@@InProc at 48FEAAC3A44472A4A6AF4D1C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230741840, false, "0e246730-bb96-4205-ae51-569795fe7f20",
+			"@@@InProc at 4A17324CDCBCE32D656A9C6F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230746510, false, "4144e0aa-16a8-4e27-93f9-8ddb13bd96de",
+			"@@@InProc at 4A17324CDCBCE32D656A9C6F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230747040, false, "91918570-4d45-4fe2-b286-10cd7a078db4",
+			"@@@InProc at 8162C3E1D787A6031DCA4115", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230747570, false, "40f1afe7-6fae-4f51-93df-89deafcf7184",
+			"@@@InProc at 8162C3E1D787A6031DCA4115", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230748170, false, "3a8d9cd2-569e-4d97-ac2e-49a1a13c93e1",
+			"@@@InProc at 77B122726ED74A50E857CAEA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230752750, false, "b029d827-1945-4742-8ac2-43adeb63bf1c",
+			"@@@InProc at 77B122726ED74A50E857CAEA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230753280, false, "4bb2ffb5-ee99-4b75-bfa1-633624d5951d",
+			"@@@InProc at 87E44246EE83CA486C01A079", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230755640, false, "032e31aa-8301-4ad0-8a65-6ffa0c0f26e6",
+			"@@@InProc at 87E44246EE83CA486C01A079", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230756410, false, "364a3734-c323-45b1-8361-f03c8feea2c1",
+			"@@@InProc at 2860EE6C7590FC167B6280A1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230758340, false, "ae311e33-e2a9-4f3b-b9b0-7db5bfc9beb0",
+			"@@@InProc at 2860EE6C7590FC167B6280A1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230758880, false, "108241ea-039a-475b-a98a-1d053e71b22f",
+			"@@@InProc at 45E536AA439A86EED8BCDE1B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230762420, false, "1abfec37-7fa2-4b0a-b0fe-0c255c069346",
+			"@@@InProc at 45E536AA439A86EED8BCDE1B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230762940, false, "57c49c23-8b16-40bf-98f6-ec6aa7b7cc58",
+			"@@@InProc at FA2504DF23EEEF050DA15571", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230765820, false, "5e54bcb9-ae56-414e-8b50-12a0cbc6569a",
+			"@@@InProc at FA2504DF23EEEF050DA15571", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230766620, false, "4a0a1594-8434-4c39-8124-c7f1244dfd23",
+			"@@@InProc at FC9779899BA661825BFC622E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230768370, false, "e4223ddb-925a-4795-bd85-cfc09c66653f",
+			"@@@InProc at FC9779899BA661825BFC622E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230769490, false, "47c9a0f8-a35c-4146-9c28-9b12985109d1",
+			"@@@InProc at 7155A9C1C2B75F940A187092", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230773740, false, "6f950eff-51ba-446d-bac0-6a0f64724332",
+			"@@@InProc at 7155A9C1C2B75F940A187092", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230774530, false, "f3ed2262-57b1-4d3c-82ff-35fae0032a99",
+			"@@@InProc at 919393EA094AA7ACD4940932", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230775280, false, "b7c9a39a-3ac0-4800-8809-a7b55ee75c00",
+			"@@@InProc at 919393EA094AA7ACD4940932", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230775900, false, "5ffd8c1a-4280-4cba-b951-031f5b26a965",
+			"@@@InProc at CD654957BDB525D49C16F600", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230781340, false, "c3552aa2-1e11-4d91-a6bd-9154ac9f3f56",
+			"@@@InProc at F0F6E3805737151593B1D17C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230782510, false, "e68c6edb-e7ae-48ea-bfe7-06d5bbc6e5d7",
+			"@@@InProc at CD654957BDB525D49C16F600", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230782590, false, "b862234d-88f2-4750-993c-24d669c7f3a5",
+			"@@@InProc at F0F6E3805737151593B1D17C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230783960, false, "21007093-4fe8-44a3-a516-60c2d988b12f",
+			"@@@InProc at C535A35DCDE61D2892E0D317", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230789100, false, "9ccd8769-2314-45b3-b49f-eed58b702ab5",
+			"@@@InProc at C535A35DCDE61D2892E0D317", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230789760, false, "7798310b-8af7-47cc-b645-f6b62706ca7b",
+			"@@@InProc at B40604E57D404209F636CECB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230789940, false, "47587f1d-866b-4e03-9efa-36cdb6439041",
+			"@@@InProc at B40604E57D404209F636CECB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230790890, false, "27aed61b-49bc-462d-bf0a-229b367d557c",
+			"@@@InProc at 84395D3A39434D7467F9E89C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230796170, false, "53255f82-8b5d-4abe-ab9c-435601123670",
+			"@@@InProc at 84395D3A39434D7467F9E89C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230797050, false, "4f7602fc-dc9e-4b0e-ab66-c9687ea59650",
+			"@@@InProc at F0851A983DEF8DAAE47111A2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230798200, false, "b7897ec1-8769-4455-bd10-eb93f8b73524",
+			"@@@InProc at F0851A983DEF8DAAE47111A2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230799300, false, "2d90f39e-d479-4ef4-881b-b57bd6e2935c",
+			"@@@InProc at 3740A02BF4F7509F134312A7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230803630, false, "2f91bd1b-7d6b-44dc-b43b-a36376636f98",
+			"@@@InProc at 3740A02BF4F7509F134312A7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230804830, false, "da651af4-fed3-414d-96eb-33cdac2d561f",
+			"@@@InProc at 9A7B1CC00AD60B6F0D291172", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230806290, false, "b5c7280b-b9c6-4dd8-bd2e-e37b4987b3bc",
+			"@@@InProc at 9A7B1CC00AD60B6F0D291172", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230807600, false, "18098089-477e-4145-9733-f565e58aa775",
+			"@@@InProc at D6683B42651EC2E26896E780", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230812010, false, "85585b96-b5e5-4ee5-9a3d-e79896ad0565",
+			"@@@InProc at D6683B42651EC2E26896E780", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230812810, false, "32aa6b96-9b72-49ea-98fb-54150544d7a0",
+			"@@@InProc at F0E9A1ADF6B18B9EF33885B5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230812870, false, "409e873c-87e1-48a6-9485-e3764e9d54d6",
+			"@@@InProc at F0E9A1ADF6B18B9EF33885B5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230814000, false, "3bff06f6-4cb7-4083-bb29-17b293437cdd",
+			"@@@InProc at F5040A35730B84FC5F7EDD3F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230819370, false, "3d5f5860-d3de-414c-af56-5410d6fbbdd3",
+			"@@@InProc at F16BC5C8866C18CC9643CB2B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230820140, false, "8efa0d10-82a8-4994-9e18-e3949f97defd",
+			"@@@InProc at F5040A35730B84FC5F7EDD3F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230820200, false, "3b4f6d2a-bf15-48a3-a706-9b45557bd9d6",
+			"@@@InProc at F16BC5C8866C18CC9643CB2B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230821440, false, "0eecb86e-90cc-413a-a11a-8f3f7815b899",
+			"@@@InProc at BEB39135F6657F81D1E52694", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230826090, false, "eaf248b2-ac47-422a-b1d2-92cd48ebd31d",
+			"@@@InProc at BEB39135F6657F81D1E52694", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230826700, false, "c6587c21-1793-45db-87a8-011cf8e4eccc",
+			"@@@InProc at 3A3D7A8D3982CA7695275635", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230827300, false, "87b9ce9f-1af4-433f-bdb0-317b8247df89",
+			"@@@InProc at 3A3D7A8D3982CA7695275635", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230827830, false, "b3c723a3-69c4-4a7f-ba64-756a11d7884d",
+			"@@@InProc at 0622DFF3A56DCEABD4D937F4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230832200, false, "51c5cda1-dc6f-4f09-a135-5d3a388930e0",
+			"@@@InProc at 0622DFF3A56DCEABD4D937F4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230832710, false, "16797613-a1cc-4f34-b83e-bb568fa334a5",
+			"@@@InProc at 306C22AC839211A67392AD83", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230833330, false, "46e75ae4-c640-4597-8a72-8d51c600a1ef",
+			"@@@InProc at 306C22AC839211A67392AD83", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230851950, false, "9d15e4a6-d43c-4fb5-ad40-79786ce412db",
+			"@@@InProc at EA1F98671F229F7B4936D951", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230856180, false, "736a8a00-15f3-42b2-8495-729c20d00322",
+			"@@@InProc at EA1F98671F229F7B4936D951", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230856720, false, "5c86f99e-9a30-4fef-b7d3-cd7534d66aed",
+			"@@@InProc at 349047252210711590C5972B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230857270, false, "7f32ec33-bdae-487a-8bd5-de364ac4ed48",
+			"@@@InProc at 349047252210711590C5972B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230857800, false, "cd35d8e8-4631-4ee8-8b8f-fd9e69ed49b2",
+			"@@@InProc at 0C7AD6D1211BA44A90442D4E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230861750, false, "04573f31-1408-4eb7-bca6-7fe2a179d287",
+			"@@@InProc at 0C7AD6D1211BA44A90442D4E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230862270, false, "fc747544-9b8f-4242-968e-2441ec048d34",
+			"@@@InProc at 8E4D7892E9ED68047F12F70B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230862750, false, "9340db80-51a4-42a7-8c28-289bac942188",
+			"@@@InProc at 8E4D7892E9ED68047F12F70B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230863260, false, "b51fd80b-037c-476d-bccd-212f579ad9e0",
+			"@@@InProc at 04070945596D85CDB1B2BB89", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230867340, false, "cc96bc1a-3b66-4ed4-b1a0-693b6c8ee66f",
+			"@@@InProc at 04070945596D85CDB1B2BB89", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230867850, false, "27366149-1358-4642-96ab-977d09150e93",
+			"@@@InProc at 846B12E3380393284CF249B6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230868420, false, "c8a8aa46-2ab5-476a-b5bf-a4d6af2775a0",
+			"@@@InProc at 846B12E3380393284CF249B6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230869020, false, "5791efbf-4196-4daa-be9b-e402676a4533",
+			"@@@InProc at AE0C6FBF47B2540363C49796", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230873010, false, "fccab7c4-883a-4fa8-b948-6b30a93c36bd",
+			"@@@InProc at AE0C6FBF47B2540363C49796", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230873540, false, "3dddc528-1b1e-4427-9188-62b3e1ebfe18",
+			"@@@InProc at 2DA6BF3D28549202D582F87F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230874180, false, "0528d540-b732-48c3-8da5-d5ee11279c28",
+			"@@@InProc at 2DA6BF3D28549202D582F87F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230874700, false, "9509b875-6081-4893-a503-7b5b95ed3a43",
+			"@@@InProc at 2E3AAA7308E403814F7ABA1E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230878710, false, "6d9de6bb-1f26-44ba-bb57-a86986a1ba66",
+			"@@@InProc at 2E3AAA7308E403814F7ABA1E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230879220, false, "8025954d-21f1-4402-b35e-a6a9a565deb7",
+			"@@@InProc at DF8C0C335C8865993FFE4769", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230879700, false, "2b95671a-a0ab-4c63-b06e-51d1c98f0207",
+			"@@@InProc at DF8C0C335C8865993FFE4769", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230880220, false, "fa898a64-707e-47dd-a128-2847297f821b",
+			"@@@InProc at 9BF765E617A1B9026A787ACE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230884280, false, "30817828-98ac-4e37-8c6e-931d695de8ac",
+			"@@@InProc at 9BF765E617A1B9026A787ACE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230884840, false, "1c60ee74-7de3-4f9a-ba85-b92a26a75c1e",
+			"@@@InProc at 462FCAD828782418EB46781C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230885360, false, "d7df661d-c454-472f-8799-67b7c99279f4",
+			"@@@InProc at 462FCAD828782418EB46781C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230885950, false, "a15de340-326b-43eb-a809-4bef2771fd74",
+			"@@@InProc at 54F76B2140B93B12731709DD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230890010, false, "6d8f80c3-210d-4aa8-8599-6ed5d56f317a",
+			"@@@InProc at 54F76B2140B93B12731709DD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230890640, false, "829de3b4-aa06-45d2-83b8-9dc006106197",
+			"@@@InProc at 81F0F9F39B2D3DAF655EF76F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230892560, false, "073d8fac-051e-484c-86c2-8574c256cd89",
+			"@@@InProc at 81F0F9F39B2D3DAF655EF76F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230893270, false, "a56ce44a-31d9-4cd2-897e-e68a72b3d3ea",
+			"@@@InProc at 0A0F3215F0B67A04D16A87BC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230895760, false, "a13abe1d-018e-481c-b7e2-b72b5b70cb57",
+			"@@@InProc at 0A0F3215F0B67A04D16A87BC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230896400, false, "a18e6b37-5e64-4957-9572-c9855e0c804c",
+			"@@@InProc at F3DB5C2A6E3C581E5D99BB63", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230898720, false, "acf672b5-02aa-46bf-a865-f823618c9b3d",
+			"@@@InProc at F3DB5C2A6E3C581E5D99BB63", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230899240, false, "4e4cdc5f-93d8-46ba-a598-6d1a6ee4800b",
+			"@@@InProc at 092CBAFDB7349B40D2E3AEAE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230901430, false, "a69ed287-df0b-4143-b881-799fe5086295",
+			"@@@InProc at 092CBAFDB7349B40D2E3AEAE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230901950, false, "7faa6cf4-c42a-4107-90c3-c604e620e18c",
+			"@@@InProc at 687C34C8A19F6DD6C030A40D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230904210, false, "3b522a30-5731-4f72-b0d7-ac66fb28a12a",
+			"@@@InProc at 687C34C8A19F6DD6C030A40D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230904730, false, "12ece234-f4d3-4bcf-8677-cb8ed6354c55",
+			"@@@InProc at 09D894EEE22A99AD75DC036C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230906920, false, "d5c98503-f32b-4061-a186-af4bc7cf9ecf",
+			"@@@InProc at 09D894EEE22A99AD75DC036C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230907440, false, "6a1b11fd-5e0c-45c0-b9c3-6f62e85808a1",
+			"@@@InProc at 83A18E75AA2F46DD4F4798B2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230909570, false, "008ed601-1d6d-46d0-9b40-371faff82627",
+			"@@@InProc at 83A18E75AA2F46DD4F4798B2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230910080, false, "71500d9c-9098-4154-b478-f65447f0b8f5",
+			"@@@InProc at 5FE36AB9994C7FE316B45EBE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230912330, false, "1a22981d-8428-49b6-8171-33b1ba3c6685",
+			"@@@InProc at 5FE36AB9994C7FE316B45EBE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230912840, false, "ed4c7a2b-a853-40ae-b8df-3698e11cbd39",
+			"@@@InProc at 0D637312B6CFADC1BC01CCD5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230914990, false, "9c0bda42-b341-4f9e-a99c-e82389dbceb7",
+			"@@@InProc at 0D637312B6CFADC1BC01CCD5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230915510, false, "8013ed85-8d5c-4d21-87a2-4ddd848094e8",
+			"@@@InProc at AAD3BDBF135AC2A30863EBAE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230917870, false, "6caf3322-300c-48b1-9762-c64902f4a698",
+			"@@@InProc at AAD3BDBF135AC2A30863EBAE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230918410, false, "7d4c345e-955e-499f-b534-ad5721aca501",
+			"@@@InProc at 7B4C1C070DA2D21D2F62A6AC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230920490, false, "22e3a417-e573-45ae-b221-d1091d73c4dd",
+			"@@@InProc at 7B4C1C070DA2D21D2F62A6AC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230921010, false, "468dd78a-4c5e-43d3-a5a5-00fdbf2facd0",
+			"@@@InProc at 0B33CF5686B038192F6AECF5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230923360, false, "f0806d06-780f-48b2-80a3-5a9e1ef5393d",
+			"@@@InProc at 0B33CF5686B038192F6AECF5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230923870, false, "5ea4051a-31a7-4666-bdcd-ad1a1af5ea98",
+			"@@@InProc at 17CC2CBC7361BA72F3716120", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230925910, false, "6b192bef-62eb-4794-9f5b-929bc805a402",
+			"@@@InProc at 17CC2CBC7361BA72F3716120", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230926430, false, "b9352291-8f5a-4dcd-9f8a-9fb0c8a0dafe",
+			"@@@InProc at 1BB1E4B6CB1D2B306F76F27E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230928850, false, "d35e8acd-02b2-4474-8c0e-2185e78ecdf0",
+			"@@@InProc at 1BB1E4B6CB1D2B306F76F27E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230929370, false, "ce6d3a10-51a3-4f31-8ce6-8a426f02d8b0",
+			"@@@InProc at 7C5D8E4ACCC0D236615E58AE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230931350, false, "0b45c701-6d71-4c65-87be-fa0481bdbff0",
+			"@@@InProc at 7C5D8E4ACCC0D236615E58AE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230931860, false, "bdf9fd54-16cd-4b29-bf1d-520eeece20b3",
+			"@@@InProc at F0E8C7840F0905A0DCD15D6D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230934190, false, "92d21e9e-6d74-4211-abd3-fa58310e1484",
+			"@@@InProc at F0E8C7840F0905A0DCD15D6D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230934710, false, "04ee64ca-495a-4164-bb87-eb29770851d4",
+			"@@@InProc at B75524219864D4F8C13D8FE9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230936820, false, "248e7961-9582-4f35-ad9a-f346c0792945",
+			"@@@InProc at B75524219864D4F8C13D8FE9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230937330, false, "a7921d91-15ed-4531-852d-1006e4bcce90",
+			"@@@InProc at 7FFB5BE443383BBA96AC58D1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230939740, false, "3b6739f1-2bdd-4bb5-b16c-5e27fcb2ef00",
+			"@@@InProc at 7FFB5BE443383BBA96AC58D1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230940260, false, "299d9366-231f-4646-b4a8-6c2c4c83ee05",
+			"@@@InProc at E1E6E19955EB5EBB9C7A2CC7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230942180, false, "d1da48c3-829a-4aef-8dcd-21bcba179263",
+			"@@@InProc at E1E6E19955EB5EBB9C7A2CC7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230942690, false, "81773ac6-87c9-425f-8e88-ba258869be86",
+			"@@@InProc at FDEE037681A2941E243D99FD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230946070, false, "7b5d9f16-780f-44ce-addd-cc834d9ceeab",
+			"@@@InProc at FDEE037681A2941E243D99FD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230946730, false, "945bb8d6-56e5-446d-b6c6-8cb856221c06",
+			"@@@InProc at 49CF5EC051FC103FB0BC18CF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230949280, false, "ac728a26-29f7-4c8a-956d-ab4f5aabea32",
+			"@@@InProc at 49CF5EC051FC103FB0BC18CF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230950210, false, "6514eda8-8bc1-4442-8919-f3db7110ba57",
+			"@@@InProc at 3819C0D69B721FF1295E55B0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230954180, false, "6afaf2bf-e001-4ed5-a4b5-7d409c5714e2",
+			"@@@InProc at 3819C0D69B721FF1295E55B0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230954800, false, "82dca873-cf87-4ea3-9a3f-4ca9a1e1fe6d",
+			"@@@InProc at 01B52924E4E34AA1AE526F8E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230956020, false, "0b861b6c-07be-4d00-a9b5-e1ef6cc72c1a",
+			"@@@InProc at 01B52924E4E34AA1AE526F8E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230956560, false, "0b7c901b-6c6c-4e9d-996a-c2e22800914b",
+			"@@@InProc at 80FE966E79AE1C348CC21041", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230960330, false, "29e0ff08-6013-48d0-9050-2b556d92e68a",
+			"@@@InProc at 80FE966E79AE1C348CC21041", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230960860, false, "6835c20a-3bab-45f7-894c-331f2604e741",
+			"@@@InProc at 515737E3C69EFF64907900E6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230963120, false, "f3fde750-e8a6-456d-83ba-f9545d908170",
+			"@@@InProc at 515737E3C69EFF64907900E6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230963720, false, "672e47ec-47bc-4366-91d8-8b8376b44163",
+			"@@@InProc at D41405B82748D7B39ED9CF93", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230966860, false, "c48349b6-e40a-4dbb-b2e1-7ae0b0b1738a",
+			"@@@InProc at D41405B82748D7B39ED9CF93", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230967480, false, "f4b2d7ff-8ec8-4722-956b-16621183624d",
+			"@@@InProc at 8B14E78BCC8C5DC19F364378", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230969070, false, "cff42067-74d3-41ba-970c-6f7b57577478",
+			"@@@InProc at 8B14E78BCC8C5DC19F364378", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230969590, false, "4729c81d-339a-412f-a7ae-4272afc2b676",
+			"@@@InProc at 403EB88A4AF903F39D201596", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230973330, false, "40f4f655-8a40-4f89-84fc-e0f3dbacb3e2",
+			"@@@InProc at 403EB88A4AF903F39D201596", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230973850, false, "3054a816-46af-4023-9cd7-4f56aa7d8c76",
+			"@@@InProc at DAF81BE36309A35B2F99D501", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230975350, false, "6b5ab728-3d1c-4486-bf53-48c70ce86487",
+			"@@@InProc at DAF81BE36309A35B2F99D501", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230975880, false, "1158d486-0b5d-41b6-a00a-43a5b6ddc4ca",
+			"@@@InProc at A8426DB86C90C03F1A14996B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230978990, false, "a84989d3-f334-44cb-ae2a-ea200b39de6b",
+			"@@@InProc at A8426DB86C90C03F1A14996B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230979730, false, "e9f9cf76-2551-4738-8cfb-c9f11670f91f",
+			"@@@InProc at 6AE4BF58020AD131F9B806B1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230980770, false, "7fd8ccd7-ae6f-48e5-9326-15067a668ca4",
+			"@@@InProc at 6AE4BF58020AD131F9B806B1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230981300, false, "a422570e-9e11-4e50-aa3f-f5814b14dba8",
+			"@@@InProc at 28F0ED73F4D82232E44C68F3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230985250, false, "81d820c9-7a47-4904-975f-ab88ec88b315",
+			"@@@InProc at 28F0ED73F4D82232E44C68F3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230985790, false, "3039a79e-632a-455f-b647-6ab132bf8431",
+			"@@@InProc at 7756E3E2F4FE0E83F9E8BF40", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230986410, false, "8227ae66-1ede-4b2d-befe-ab674e6cf3e8",
+			"@@@InProc at 7756E3E2F4FE0E83F9E8BF40", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230986930, false, "ec73d54a-2157-4e82-b8a8-a31c3192b3cc",
+			"@@@InProc at 1D9BC835035CACAFBDC6A503", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230990970, false, "ffaeeeef-4556-4975-b50c-9b90ccc6da68",
+			"@@@InProc at 1D9BC835035CACAFBDC6A503", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230991570, false, "2786ed6f-4925-4729-bbf7-132276364c9a",
+			"@@@InProc at 2CA9BD4E5211C5B82B39289D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230992370, false, "bc32ba0f-5fbd-44fa-bf6a-1ad87e071cd4",
+			"@@@InProc at 2CA9BD4E5211C5B82B39289D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230992910, false, "dacb7b54-544e-4732-a857-34436eee19c9",
+			"@@@InProc at 50A8DA61924BFF7164735C1F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230997170, false, "c86a9aed-5c97-4fb9-8fd7-02bfdfe784d4",
+			"@@@InProc at 50A8DA61924BFF7164735C1F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230997780, false, "6846f17f-f03c-42dc-8a1d-dc4187307256",
+			"@@@InProc at 899E2E025C863839B854CEC8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230998360, false, "1b727671-0332-4c32-a932-45978afcda89",
+			"@@@InProc at 899E2E025C863839B854CEC8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878230998890, false, "802c42db-3e2b-43aa-9ad2-6c6aea225684",
+			"@@@InProc at 4051DFD990A6980DA008D335", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231003170, false, "2ef0bf17-aeb5-4569-8bef-f38af2c44142",
+			"@@@InProc at 4051DFD990A6980DA008D335", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231003830, false, "f0a1b138-5d50-4a30-8ec7-c806f31f2fe6",
+			"@@@InProc at 92BCE6B10CBECA1837620762", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231004000, false, "95bfdbc5-bd05-4466-8ffc-4b3bdbb67902",
+			"@@@InProc at 92BCE6B10CBECA1837620762", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231004690, false, "bf794a94-6c63-48b1-a9ec-388e50bccbec",
+			"@@@InProc at 14AA016CD955F9FBAB083D00", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231009130, false, "215b2dbf-9a24-4a51-b354-d2387226a4c2",
+			"@@@InProc at 2CA2F172643126B9B908BAC2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231009810, false, "d1d8b7a0-6bcc-4a59-a734-73a3acaa21cf",
+			"@@@InProc at 14AA016CD955F9FBAB083D00", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231009870, false, "91ee5d78-4f67-488f-b441-c1bfec9e6bbd",
+			"@@@InProc at 2CA2F172643126B9B908BAC2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231010750, false, "5fac8ba7-8bf0-4d56-a18f-08ba1c38bdc4",
+			"@@@InProc at 915C1AF57507E9B9F0B1B07C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231015670, false, "75bdad05-b277-435f-85d2-f065e0fa7dd2",
+			"@@@InProc at C9DEABBD68EE282372300065", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231016360, false, "43de5aed-51df-4f30-a91e-6daba5fdd78a",
+			"@@@InProc at 915C1AF57507E9B9F0B1B07C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231016410, false, "1d46b3a4-5dfa-445c-be91-fe9aed02ba13",
+			"@@@InProc at C9DEABBD68EE282372300065", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231017330, false, "10379297-ef4b-4ad5-8bbc-69738f95611f",
+			"@@@InProc at 964562887E422EF74FFB7F81", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231022160, false, "00a2b50f-8993-431f-bcba-c0e6cf9cd6d8",
+			"@@@InProc at 81DDE08DF08EF3E8E021B855", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231022840, false, "162b4f6d-07cf-47f0-8cf3-28e48d337477",
+			"@@@InProc at 964562887E422EF74FFB7F81", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231022890, false, "5d61beca-da51-41e6-ab66-dd2ccc0069ec",
+			"@@@InProc at 81DDE08DF08EF3E8E021B855", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231023790, false, "409e8f58-e06b-4796-9472-8e54c37e00b7",
+			"@@@InProc at 3FA8A5F109F3D33599DE62E4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231028620, false, "3357c03a-fa9f-4280-83e7-4122b6af80b2",
+			"@@@InProc at 3FA8A5F109F3D33599DE62E4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231029170, false, "3b148078-90e4-43d5-a936-7a02f60b1b1b",
+			"@@@InProc at 02D123EEBD4DE9635EA66413", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231029300, false, "4a9669d7-373b-4df5-a08b-8ec0d72a5520",
+			"@@@InProc at 02D123EEBD4DE9635EA66413", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231030130, false, "651f8dd5-5669-46f9-b178-ad5f2cb97289",
+			"@@@InProc at E450ABF0D7F98828A0757F04", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231034600, false, "92e1d40c-25b1-4cf7-8e7f-813628e90889",
+			"@@@InProc at 520A4EADF19DD98A53F4F8BC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231035330, false, "a36bcacc-fb67-4de4-99d3-8faf218d568b",
+			"@@@InProc at E450ABF0D7F98828A0757F04", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231035390, false, "d5075e24-0408-4027-90d0-cf27315ddd3c",
+			"@@@InProc at 520A4EADF19DD98A53F4F8BC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231036280, false, "17f9be6b-881c-4ca9-9a40-cb754f989874",
+			"@@@InProc at 6A23B381E6E88AAEBADD0853", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231041040, false, "4e1dca4c-dc64-4231-8983-37a8c68388cd",
+			"@@@InProc at A4AB3DB4BD93D17D22982EC5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231041600, false, "1d009e80-deb0-4ede-9b98-b9327dc021a7",
+			"@@@InProc at 6A23B381E6E88AAEBADD0853", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231041670, false, "6c6a3e48-9a90-43b4-a0f5-6f4b37781d5a",
+			"@@@InProc at A4AB3DB4BD93D17D22982EC5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231042510, false, "e9f39969-b7d7-4b8a-b5ba-55e9d1b45e78",
+			"@@@InProc at A5B272F6E0F4D13C27B95FB6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231047090, false, "f4dbeef8-d8a8-4625-93c1-74cb7112a4f1",
+			"@@@InProc at A5B272F6E0F4D13C27B95FB6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231047870, false, "84bf24f0-5892-4de1-8080-fdc8b925577f",
+			"@@@InProc at 1B9622D829BEDF1F82627549", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231048860, false, "ec8e7c95-e96e-479e-873f-82c3ed1d0c29",
+			"@@@InProc at 1B9622D829BEDF1F82627549", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231050030, false, "e8b2e391-da9f-46fd-92b2-0b6fc8a2d56e",
+			"@@@InProc at B561C4952E648B15F940FF6C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231054760, false, "9e430c89-94e1-41e6-8a2a-35cec05d95fe",
+			"@@@InProc at B561C4952E648B15F940FF6C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231055570, false, "813c06f8-ee9b-4a17-b0f9-848cb97329e4",
+			"@@@InProc at AC7EBC1A8AF5EB3000582FC6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231056430, false, "c643af6b-8ea0-490b-a973-8d36a6ecc850",
+			"@@@InProc at AC7EBC1A8AF5EB3000582FC6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231056980, false, "5faf729f-16ca-4f93-ba7a-5456ca1fbdaa",
+			"@@@InProc at 595FD7E28113B8FC5187C59E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231061370, false, "d3895185-9c27-49cd-8cb1-aa756feee205",
+			"@@@InProc at 595FD7E28113B8FC5187C59E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231062200, false, "6044eee0-585f-4536-8a91-818ff05a0e03",
+			"@@@InProc at A226F189AE82EBE71CE8E6A2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231062270, false, "fa77173b-6168-4b0d-bac5-5c1e564a94c1",
+			"@@@InProc at A226F189AE82EBE71CE8E6A2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231063140, false, "1ae27269-64bd-44bf-a6b0-adb654acce7e",
+			"@@@InProc at 9FCA5009674C3BC1099CF059", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231067730, false, "83e229a8-2f56-411a-b5df-9b29daa45802",
+			"@@@InProc at FB8010B93387729D4BB84EEB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231068350, false, "9a80cc01-ac7b-40aa-bfa7-1e91aeb561ae",
+			"@@@InProc at 9FCA5009674C3BC1099CF059", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231068420, false, "6c198b8f-c3c5-4d1f-8fdf-d0c866f8ef2d",
+			"@@@InProc at FB8010B93387729D4BB84EEB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231069410, false, "279bd038-93a7-4e64-ad84-1e230d98c9df",
+			"@@@InProc at FAE270E71992633FAAC8A1E8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231073950, false, "97341d7c-cf4c-4c38-9308-79d94dd04aee",
+			"@@@InProc at 51C203C1FD67708EAB81823C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231074660, false, "c101a3fd-f924-4ce4-ae8a-8ee1734027ea",
+			"@@@InProc at FAE270E71992633FAAC8A1E8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231074710, false, "41cac1f8-ea62-432b-994e-abd07241eb74",
+			"@@@InProc at 51C203C1FD67708EAB81823C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231075650, false, "fff79c40-ddad-486a-8be9-141e861e23ea",
+			"@@@InProc at 31C69E05ABDF70946D2FDB34", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231080790, false, "b4a558ce-d14f-41e4-9dca-580ab71fd5d2",
+			"@@@InProc at 593C86340FC7F1BB714D974A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231080940, false, "746ec905-5a50-4ee1-8678-1be4325dd94f",
+			"@@@InProc at 31C69E05ABDF70946D2FDB34", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231082110, false, "cdb6dc5d-639f-4169-ba00-474cb4f03e56",
+			"@@@InProc at 593C86340FC7F1BB714D974A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231082190, false, "cca9b20f-7398-4120-8ce3-01efb1e5f767",
+			"@@@InProc at E8064ED6DF405DDBE83897C8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231087870, false, "54c09206-7013-4f59-9a6e-f950eae05222",
+			"@@@InProc at E8064ED6DF405DDBE83897C8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231088410, false, "408bc712-9a1a-480a-8f06-a1d473672796",
+			"@@@InProc at 1817C8FE003E76DDAC76325F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231089000, false, "e370fe65-a7e6-4e39-9e38-16677e58b57d",
+			"@@@InProc at 1817C8FE003E76DDAC76325F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231089670, false, "7af17e72-77ac-44e5-aeb6-9efa591832f9",
+			"@@@InProc at 232DB2BD79453DDDF850067D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231094100, false, "23c2e7c5-7691-4397-bf31-a70aba6ab1f8",
+			"@@@InProc at 232DB2BD79453DDDF850067D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231094810, false, "117cb3ed-0cab-4b88-94ee-1d12e5358b2e",
+			"@@@InProc at C059CC1E9ABC1D963D3C8A48", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231095860, false, "ba81c9ae-354d-4ca7-bf29-2cef9f041824",
+			"@@@InProc at C059CC1E9ABC1D963D3C8A48", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231096520, false, "4fbfeed9-37d5-4870-9e9a-bb85f9b67af3",
+			"@@@InProc at 36DE08E45919FD816B879B94", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231101390, false, "e40c1849-5613-4cc1-9e37-1b33ede5d0cb",
+			"@@@InProc at 36DE08E45919FD816B879B94", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231101930, false, "26f9b403-7625-42e2-86dd-c87643a90be4",
+			"@@@InProc at 2C0D6D26A25077AE3C525FA3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231102490, false, "3ba608ba-0ff8-4154-a445-2e87f508559c",
+			"@@@InProc at 2C0D6D26A25077AE3C525FA3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231103150, false, "6353bc98-049c-4391-9b5a-37680afd8ab2",
+			"@@@InProc at EC74C3EF0035A5779E21D5E4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231107810, false, "479584a3-c685-41ca-bfd4-c177bbc82584",
+			"@@@InProc at EC74C3EF0035A5779E21D5E4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231108430, false, "cace1925-ae76-40b8-9451-e160dabc5812",
+			"@@@InProc at 73C2BF7A21662D5BDD66D03E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231109020, false, "58e9e287-9e62-44c7-af32-151627c08cc9",
+			"@@@InProc at 73C2BF7A21662D5BDD66D03E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231109560, false, "6c537634-c558-4d39-be83-359d9458e0e6",
+			"@@@InProc at 47E6E383AEF9493EE769BFCA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231114050, false, "af9b1b7a-d4e5-4f24-baa4-d088c27c7237",
+			"@@@InProc at 912FB42C2FEF7F9134C8FF6D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231114670, false, "426e1de9-303b-4668-bb74-73c50cda3dd1",
+			"@@@InProc at 47E6E383AEF9493EE769BFCA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231114730, false, "d72483ed-e69e-4810-98e5-80099662d588",
+			"@@@InProc at 912FB42C2FEF7F9134C8FF6D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231115580, false, "45e16461-3866-4078-b043-cc1a12be6d99",
+			"@@@InProc at 12D6E795C36BEF00C621A71C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231143740, false, "72748bed-fda6-41bc-880d-71585a932c8f",
+			"@@@InProc at 24FEC0F984F06F83B9C0F05C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231144770, false, "c98fc8b9-eb5a-4d20-b983-839c5795ac5c",
+			"@@@InProc at 12D6E795C36BEF00C621A71C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231144850, false, "23fc9aaa-1174-43d0-8795-ef2aa8fdc011",
+			"@@@InProc at 24FEC0F984F06F83B9C0F05C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231145900, false, "72af1748-82c3-4f0e-abb3-31a3d318035c",
+			"@@@InProc at 9795DE64030D20A0AB3A9E23", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231151110, false, "a6878274-842e-407a-b588-6ee1629aef83",
+			"@@@InProc at 9795DE64030D20A0AB3A9E23", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231151900, false, "b3604f22-7918-4434-8be2-fcefc596f03a",
+			"@@@InProc at 732C3283C4A7EE912CBDB293", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231154270, false, "5f5a84af-3cfc-45fe-811c-f52b5aac36b2",
+			"@@@InProc at 732C3283C4A7EE912CBDB293", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231155060, false, "762a4c7c-4c7e-4a2a-99b0-a5f6a7a894ce",
+			"@@@InProc at FBF8D5E5A88F23D6C20CB20A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231157390, false, "490fa6f2-5429-4414-92a6-8d8b6c26de15",
+			"@@@InProc at FBF8D5E5A88F23D6C20CB20A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231157920, false, "4b151e7a-e58c-440c-9966-a6dedb976309",
+			"@@@InProc at A2B9BCC635BC5D8AB108AFAF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231161110, false, "5fffcda5-071c-44b9-817e-6a25a67f6731",
+			"@@@InProc at A2B9BCC635BC5D8AB108AFAF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231161710, false, "c0ac96b5-d5a0-4be0-99bf-9199033e4e80",
+			"@@@InProc at DB048F5F8A7F1A985682FDB4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231163400, false, "bb246d16-d4ce-41c1-bd36-4dd870c72c72",
+			"@@@InProc at DB048F5F8A7F1A985682FDB4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231163930, false, "81ab5f92-e73b-40b1-9c1a-7d7c49e8b472",
+			"@@@InProc at 2590C5CABD61897C7D33F1EE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231167400, false, "9b7beb02-49e8-4247-a41b-a75ee0599b90",
+			"@@@InProc at 2590C5CABD61897C7D33F1EE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231167930, false, "a66fecac-ee8e-419e-8ba9-80ac85e76481",
+			"@@@InProc at B32F73B1596613BC0B3B9120", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231169030, false, "5eb66fe0-5f34-493c-a737-29366aa488f0",
+			"@@@InProc at B32F73B1596613BC0B3B9120", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231169570, false, "3aa9436e-71d9-4160-b3cb-5fb6d983e785",
+			"@@@InProc at AF8969246C8EB09A68FB24F6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231174660, false, "558fd4a5-7e7c-4045-8d48-12f023d14fc5",
+			"@@@InProc at D1BCC4D8869C333326485339", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231174830, false, "a658ed32-cbf3-42a9-8696-354443c6156a",
+			"@@@InProc at AF8969246C8EB09A68FB24F6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231176000, false, "ef5d6877-403a-4a67-be4c-d9501ed531d6",
+			"@@@InProc at D1BCC4D8869C333326485339", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231176170, false, "9e4159a1-0dd6-41ae-9f9e-fa45dbb79ad8",
+			"@@@InProc at 1B2BC781131E26117029F2E2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231181250, false, "7a82576d-e282-435d-aae8-ac23bb873666",
+			"@@@InProc at 0BCB3A9D2F633EF2C0C54963", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231181810, false, "83fe3683-8491-4225-854d-21ffe6b72515",
+			"@@@InProc at 1B2BC781131E26117029F2E2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231181880, false, "8fd39c5c-1c69-454e-9a11-8c661491ce91",
+			"@@@InProc at 0BCB3A9D2F633EF2C0C54963", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231182730, false, "342137e7-5c59-4ba8-977a-1cc41eb904ce",
+			"@@@InProc at 11F982682B84ED4579DC0E6F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231187820, false, "7d34aa2c-c08d-4bfc-b670-412e61fd695c",
+			"@@@InProc at F14B717992D0A65224046AB3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231187890, false, "3e6036bc-7268-450d-abb0-94eca86430a9",
+			"@@@InProc at 11F982682B84ED4579DC0E6F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231188810, false, "8cf86140-c697-44a8-9b55-9dcc066cdc35",
+			"@@@InProc at F14B717992D0A65224046AB3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231188870, false, "4286cd16-cb76-4515-8241-6dcc6f238504",
+			"@@@InProc at 8D176624A31E7E695B86491E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231193800, false, "0dfe24a9-c62d-456c-9b3e-4ae79a1d7c54",
+			"@@@InProc at 8D176624A31E7E695B86491E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231194430, false, "05bfa0e9-87e3-4965-87f0-c490f4ea0df8",
+			"@@@InProc at 185DB68C068EE19399102100", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231194500, false, "910d50f2-3af2-4414-8894-6c64ba3dad69",
+			"@@@InProc at 185DB68C068EE19399102100", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231195340, false, "5a4a8a4e-9546-4aba-95ec-5a2bff5d9c9a",
+			"@@@InProc at 8258F47B95D80650945244FB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231199710, false, "212294f3-aa46-425f-bf6d-1f51f75542ee",
+			"@@@InProc at 8258F47B95D80650945244FB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231200230, false, "dc585ffa-1a36-4ac9-8816-c11d3b9cb62f",
+			"@@@InProc at 575BB8C69800007CBE5C11A1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231200740, false, "38b72ec7-d51e-4a5a-a070-384102e4fc02",
+			"@@@InProc at 575BB8C69800007CBE5C11A1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231201260, false, "2e06ee1c-982f-42a4-9f90-9615aab077f9",
+			"@@@InProc at 4E751114E7125DB12836F32B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231205410, false, "a355ee2f-9c5f-4903-9727-d378f9f83b88",
+			"@@@InProc at 4E751114E7125DB12836F32B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231206030, false, "f7482821-d1ab-4110-b3ba-9655b982445f",
+			"@@@InProc at C85DDF007068875DF98F1506", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231206620, false, "e327c931-f7dc-4d67-8f48-eba046a2dbd7",
+			"@@@InProc at C85DDF007068875DF98F1506", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231207150, false, "2d5cadca-4241-4a82-9491-c384e739e628",
+			"@@@InProc at E4FDC0D262481FF48DD5EC28", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231211440, false, "493db4a5-cb3b-45f0-ab9f-aa04e7b71787",
+			"@@@InProc at E4FDC0D262481FF48DD5EC28", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231211960, false, "b01fbe45-c4b7-406d-9040-d2a7413bf144",
+			"@@@InProc at 00B0EAB2621B0086740910E8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231212270, false, "6a080dcd-f16b-442b-b69b-99480e8167b3",
+			"@@@InProc at 00B0EAB2621B0086740910E8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231212990, false, "190483c0-d2ff-46b9-b96d-374571e81d56",
+			"@@@InProc at 7065DBAA25B408C17084C918", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231217250, false, "a93a2ffe-cff7-42b6-917a-5c226a16b708",
+			"@@@InProc at 7065DBAA25B408C17084C918", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231217860, false, "f954c0a4-1125-42e7-a32a-caca5502f1b3",
+			"@@@InProc at 8D703796AB7B2C110A8FED97", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231218450, false, "158d2b8a-c1fc-452b-a60b-1a9feb65ac78",
+			"@@@InProc at 8D703796AB7B2C110A8FED97", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231218980, false, "050edb67-036e-4eb5-a055-4577adeb0eae",
+			"@@@InProc at 6A6AD7AC6623B64EA8A0D946", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231223230, false, "bb886316-b893-4ae4-bdea-768f80019c04",
+			"@@@InProc at 6A6AD7AC6623B64EA8A0D946", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231223760, false, "1e1b15d9-2e7f-4d95-9fd3-1c3bb64700e3",
+			"@@@InProc at 3CF79765BCFA4D4CB632153D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231224260, false, "825ebf20-970a-4b9c-ad5a-a9dd88d42f3f",
+			"@@@InProc at 3CF79765BCFA4D4CB632153D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231224790, false, "c77846ed-823f-4830-9bf5-2343219af465",
+			"@@@InProc at EC14DD66547B1DB148070D20", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231229590, false, "5a078be7-a9e1-4436-8957-36799865cc64",
+			"@@@InProc at EC14DD66547B1DB148070D20", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231230400, false, "e8f9c04c-74bd-4eb9-b57e-9e111a52772b",
+			"@@@InProc at DE87B662BA8B91D35EDA622F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231231140, false, "8151b057-fac3-4d8f-85a6-bf91bcd4aa0f",
+			"@@@InProc at DE87B662BA8B91D35EDA622F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231231910, false, "b93bd24e-c015-4459-840e-f72efcfd82b4",
+			"@@@InProc at 0D3EFC9637D2713D6DB6AB1B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231236210, false, "e3b8c08e-12c1-4219-8c30-9e893432d91d",
+			"@@@InProc at 0D3EFC9637D2713D6DB6AB1B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231236820, false, "1503a8ab-e03e-454b-b764-4caeecbaa443",
+			"@@@InProc at 2F3966D7BC7268D03A9D219B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231237420, false, "5531b566-d352-4c6a-a515-0492f5f88b5b",
+			"@@@InProc at 2F3966D7BC7268D03A9D219B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231237940, false, "3a92bc71-bcc1-471c-9970-fd92a18a68a7",
+			"@@@InProc at C18F89E725CD806F3DC3F15B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231242130, false, "a98e9895-07cd-4fa9-8af5-e357345cee9b",
+			"@@@InProc at C18F89E725CD806F3DC3F15B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231242730, false, "4e60b7dc-ba1f-43ad-ba4a-bf422545ddd2",
+			"@@@InProc at A1A12891FB7924D80A05C696", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231243310, false, "e74bc934-2f9d-45bb-aeab-28b7347ad240",
+			"@@@InProc at A1A12891FB7924D80A05C696", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231244180, false, "28e434be-8119-4d8a-9b47-a7124ab1b3c2",
+			"@@@InProc at 89AC9F4EE89589A5D1DF29AA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231248380, false, "546ebf14-7fbb-4ce7-a0b2-ef9662bb6a6c",
+			"@@@InProc at 89AC9F4EE89589A5D1DF29AA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231248910, false, "716bb0b9-df06-48c7-91da-cdec5715b62a",
+			"@@@InProc at 8FBE16291646533F18373BC2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231250440, false, "0e8a04a8-cf57-46de-a29a-e46895d9015b",
+			"@@@InProc at 8FBE16291646533F18373BC2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231250970, false, "fbff1f84-ace4-40dc-aeb3-2729b5cb32d9",
+			"@@@InProc at 73004CDE64A2AFDF22043B5E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231256670, false, "bf14aa83-1a6a-422d-9c0e-3fa0d1e2a300",
+			"@@@InProc at 73004CDE64A2AFDF22043B5E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231258380, false, "d99854f3-de3b-490e-ab27-94bbdcd1b85a",
+			"@@@InProc at 63FFE3E36BB8BC61A66EE975", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231260990, false, "4ae0ff6d-0ac5-4264-bb36-f268fe80fc54",
+			"@@@InProc at 63FFE3E36BB8BC61A66EE975", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231262200, false, "03b6763f-e4db-424d-b08c-33f9863505c4",
+			"@@@InProc at 90AC13CD615B6D5CA8CA870E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231272860, false, "1a8e87d3-0c2b-4bc4-87c6-072ba7f5ba48",
+			"@@@InProc at E5B80168A2F0C8DAD3F79D0F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231273090, false, "e91643a7-5dca-4e7b-9e18-ed1f55f441a7",
+			"@@@InProc at 90AC13CD615B6D5CA8CA870E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231274520, false, "38b486a1-a78b-46dd-b8d6-862a682c99de",
+			"@@@InProc at E5B80168A2F0C8DAD3F79D0F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231274600, false, "e5f40044-8ea8-4d26-9fab-e26ca030aeab",
+			"@@@InProc at DC0FB75F8184823DE9405A43", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231284120, false, "09ca5aa6-9df3-418b-bd74-c0dcc8b85a11",
+			"@@@InProc at 72FE2180C0E19B00749F7848", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231285740, false, "6f1fd816-e1c8-4531-96fc-9e2976e6e86d",
+			"@@@InProc at DC0FB75F8184823DE9405A43", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231285870, false, "5ce16763-9a75-4683-b90a-65eee0a6b0ee",
+			"@@@InProc at 72FE2180C0E19B00749F7848", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231287530, false, "2cb88909-23c0-4725-b076-ef34e608a1d6",
+			"@@@InProc at 29069D7CF2CB14E003411D59", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231296500, false, "2a7acde9-aa86-496f-97a8-dc325f4bc567",
+			"@@@InProc at 29069D7CF2CB14E003411D59", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231297490, false, "0f77d283-53a4-4174-9396-250095ae31e4",
+			"@@@InProc at C94EB459F568AA5E78A6D90B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231298020, false, "faaf1cd7-ffe4-4420-b41e-5961999419ab",
+			"@@@InProc at C94EB459F568AA5E78A6D90B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231299220, false, "612c6301-f991-4a5e-9845-94afd184b2dc",
+			"@@@InProc at 3F71B5E6A3110C80EF1D867A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231305870, false, "350e0eb1-9c67-40e0-a860-ceb099eea78c",
+			"@@@InProc at 3F71B5E6A3110C80EF1D867A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231307020, false, "7c42631b-7cea-49be-8cd7-ec799895ebc9",
+			"@@@InProc at 126E14FB4591EB9E366F3EE4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231308420, false, "994a0ec9-635c-401f-a1c5-79b623bf55a3",
+			"@@@InProc at 126E14FB4591EB9E366F3EE4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231309200, false, "10659162-f4cd-4e48-8d3a-e786c6898131",
+			"@@@InProc at D6CDBF0296018072CF91E4BA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231315690, false, "115728a6-cf76-42cb-83c6-9ae6baba3079",
+			"@@@InProc at D6CDBF0296018072CF91E4BA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231316850, false, "9debec22-ec1a-4b22-849c-8a177b97ebb2",
+			"@@@InProc at C735A17B48F12844182BCD8E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231319190, false, "0070d43b-5742-4a5a-841b-28f7401b7295",
+			"@@@InProc at C735A17B48F12844182BCD8E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231320400, false, "47fda501-eb7d-423b-928f-8c1191eea91c",
+			"@@@InProc at 7C2309519EA5F5E5BEE2AABA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231325510, false, "21f0f613-48d5-4d27-9bbf-eabb742b58b1",
+			"@@@InProc at 7C2309519EA5F5E5BEE2AABA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231326320, false, "c69fa578-28ce-456f-9f5f-3d73c312ed92",
+			"@@@InProc at 724F98B15291BFF92113E57A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231329020, false, "ba6fefa5-1431-44c3-b22d-2e177eeaeaea",
+			"@@@InProc at 724F98B15291BFF92113E57A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231329820, false, "2d1d13df-cb96-4501-91a7-864cfd4d2fb7",
+			"@@@InProc at 3B42665DF632D0140381C71B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231335020, false, "acee1dd0-f368-4088-8935-66103b16fe7d",
+			"@@@InProc at 3B42665DF632D0140381C71B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231336180, false, "a7fcd401-ae89-46f8-b8cc-3e47b8bdbd54",
+			"@@@InProc at F43DC85D26AF523DA89A10C2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231339480, false, "332d6c87-993f-4d07-9444-5fa13027cc7a",
+			"@@@InProc at F43DC85D26AF523DA89A10C2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231340660, false, "4676474b-3dea-4d44-a7a4-2fff9fd079c0",
+			"@@@InProc at 7D467C993F314FC7F3E13703", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231344130, false, "c6eb25d0-a4e0-4768-9b4f-bbda174fffa2",
+			"@@@InProc at 7D467C993F314FC7F3E13703", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231345100, false, "8ee0a35c-6a31-478a-b2ca-3eb069e33268",
+			"@@@InProc at 50C1603CFAB27012FD8ED85B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231349310, false, "f08ce0d1-813a-45dd-aa88-1196c30c5f40",
+			"@@@InProc at 50C1603CFAB27012FD8ED85B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231350090, false, "0c3ecad1-7cae-4371-af47-dac23fdc8e9e",
+			"@@@InProc at EF9F243926BAE6911E884793", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231354480, false, "1cadece8-a736-426e-ab1a-f5d00f423508",
+			"@@@InProc at EF9F243926BAE6911E884793", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231355630, false, "53db35ab-95a5-497a-a81f-dc51cbe03cfa",
+			"@@@InProc at BD6444AF5B1C87C9282E41B0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231360830, false, "18a116af-cd4d-40a5-a7ae-806bdf16ab00",
+			"@@@InProc at BD6444AF5B1C87C9282E41B0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231361980, false, "e8f6038b-848c-4daa-b186-81a9d5525b08",
+			"@@@InProc at 6A5ABE8188F6E537B41D2683", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231364540, false, "ee704104-7204-4416-84dc-b3fbe5d5c910",
+			"@@@InProc at 6A5ABE8188F6E537B41D2683", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231365570, false, "963d9bc3-7fd9-4e5b-a93c-ffe5e83ed150",
+			"@@@InProc at 62C454D068E5104BA7B7EA68", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231372530, false, "66699e75-8240-4d57-87f0-a15188511954",
+			"@@@InProc at 62C454D068E5104BA7B7EA68", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231373960, false, "043bb85d-5f0c-451b-9b19-ef6e2788fa83",
+			"@@@InProc at D953CADCC2A0DF1BEC8B3E79", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231376010, false, "e37d6d49-6688-4f9d-aeb6-8f0064f2e31b",
+			"@@@InProc at D953CADCC2A0DF1BEC8B3E79", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231377100, false, "6040540a-f6b7-4d82-b89a-067e4945d2ef",
+			"@@@InProc at 579BE15C6E6AD9FB290EB2E9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231384640, false, "074b3e29-7018-4b15-a0f0-b95eb0542a4f",
+			"@@@InProc at 579BE15C6E6AD9FB290EB2E9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231385590, false, "af99d34f-d87c-4de7-a215-b45b739281c2",
+			"@@@InProc at 8A92FF4A9D74FC2D5A88A1EB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231387310, false, "072a2477-6328-4206-9612-cb1265e18176",
+			"@@@InProc at 8A92FF4A9D74FC2D5A88A1EB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231388230, false, "da6977da-70c9-46e4-a618-ee13299e5f6b",
+			"@@@InProc at D7F9B1D6A05829C9D1A5E91D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231395240, false, "34da5b91-4641-464e-ab21-ae0972f9703e",
+			"@@@InProc at B8536F0854DF85F8AE412558", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231396390, false, "a52f3c0c-795b-4dc5-93c1-d7ddbd94c892",
+			"@@@InProc at D7F9B1D6A05829C9D1A5E91D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231396570, false, "4cfed9dd-ff96-42de-bc95-eef7573e2af4",
+			"@@@InProc at B8536F0854DF85F8AE412558", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231398120, false, "1f059ef2-f5fc-46d8-b0b1-9e9b6a926879",
+			"@@@InProc at 206B7ADEB1C4EB5826AF7A83", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231407620, false, "540ed558-9dc8-4ff3-b1a6-441015ba28f7",
+			"@@@InProc at 24722E3F3B1554B86AFE30B9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231407720, false, "2ddd7d2c-6192-42c2-a9ec-1f01356ff77f",
+			"@@@InProc at 206B7ADEB1C4EB5826AF7A83", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231409690, false, "53aa588d-91d3-4305-8639-84083559578b",
+			"@@@InProc at 24722E3F3B1554B86AFE30B9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231409780, false, "9b342014-6c0b-49b1-9a67-9577e14476e7",
+			"@@@InProc at 38705E5EF4833F95C056A2F4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231419080, false, "f9ece21d-2e4b-4463-9882-e98711929c8a",
+			"@@@InProc at 38705E5EF4833F95C056A2F4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231419890, false, "87dd5e67-a8fa-40c9-9609-ed25d38b3cc9",
+			"@@@InProc at 4079FAE46C3415525CD80A3B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231420200, false, "693fd07e-c8da-440e-b095-b4fd4a6a4819",
+			"@@@InProc at 4079FAE46C3415525CD80A3B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231421640, false, "2cc1c6bf-1cf1-419e-ad1e-2c6dc6ac95be",
+			"@@@InProc at D0A4520DCDACF64A35FDA94F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231427960, false, "948b34b3-1d8d-4fbd-8347-ed7adac80f73",
+			"@@@InProc at D0A4520DCDACF64A35FDA94F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231428950, false, "e49ba434-674d-4553-99eb-5cf119b3fb7d",
+			"@@@InProc at 9032E644EA1755CB38A8E56F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231430410, false, "eeb7e41e-6e7a-4a7d-93e4-48e5339b6f6d",
+			"@@@InProc at 9032E644EA1755CB38A8E56F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231431200, false, "424a07ca-bb84-4352-83e6-2d9ef64bc188",
+			"@@@InProc at 3AC9646D7C02A03006BF0546", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231437140, false, "ec901d50-8760-47da-b9f9-842eaefde366",
+			"@@@InProc at 3AC9646D7C02A03006BF0546", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231438030, false, "abc149b7-eb63-4dd0-8b3b-9b32ea09d20f",
+			"@@@InProc at C3DFC82ABF1FE4F79A458C82", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231441260, false, "f9bc1694-6ec3-4916-89f6-f344e9de9de6",
+			"@@@InProc at C3DFC82ABF1FE4F79A458C82", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231442410, false, "8a8dec26-2b7f-4269-9083-598910eee501",
+			"@@@InProc at F23D6DD12B07FE6DCC9B75D1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231445820, false, "b40a7ed3-9fbd-499d-8168-dacca169d493",
+			"@@@InProc at F23D6DD12B07FE6DCC9B75D1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231446750, false, "308017c8-31a8-46d8-89eb-4fb29c70b8e2",
+			"@@@InProc at A8FDD27B1461F6F774B68EF4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231449670, false, "6b6bd430-e20b-4873-a07e-00a4300351fc",
+			"@@@InProc at A8FDD27B1461F6F774B68EF4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231450450, false, "97cf82c9-7dbe-44b1-b515-69a96d05ca5a",
+			"@@@InProc at 11D3969F4CA9A2FC291D772A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231453360, false, "32f29c03-459c-4dbc-a23b-b618b4ee4846",
+			"@@@InProc at 11D3969F4CA9A2FC291D772A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231453950, false, "02ab4aa1-77a8-4dab-af61-ab29663d8350",
+			"@@@InProc at 92BB72398413554648984672", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231456940, false, "f26db5ae-eb0d-4a9a-bfc4-975a42fb2191",
+			"@@@InProc at 92BB72398413554648984672", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231457720, false, "84a9b26b-a41f-44da-8dd5-2f52f98716ae",
+			"@@@InProc at C911AE34A837AD7285EEEE3B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231459390, false, "e1781b5f-a956-404d-a4bf-4e754257179a",
+			"@@@InProc at C911AE34A837AD7285EEEE3B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878231460180, false, "e2938120-10d3-4272-9503-f1783ae593e7",
+			"@@@InProc at 4A6FF2BC26023637385895BF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232460750, false, "7a899668-2f92-4e5c-9c3e-e36d64c1dddc",
+			"@@@InProc at AED75B2342FC26DE730845DE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232460860, false, "425430cf-49a2-4e96-85da-6b5704e0a0e6",
+			"@@@InProc at 4A6FF2BC26023637385895BF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232463100, false, "d0007d89-43bd-4ba0-8772-054e9a4a48c5",
+			"@@@InProc at AED75B2342FC26DE730845DE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232463190, false, "b7d7f754-833d-4fb6-850d-8f383074377e",
+			"@@@InProc at A45DDA04A14377D5E1CD267F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232470970, false, "519ffa36-aa7b-47b4-af07-6f47af70a020",
+			"@@@InProc at 2A8D0438E8B5A0CA703E30AF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232471780, false, "d145ab8a-f442-4eff-859d-0b6f4a83f839",
+			"@@@InProc at A45DDA04A14377D5E1CD267F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232471840, false, "65cb17da-a7d1-477d-bf92-95bf029f4b3b",
+			"@@@InProc at 2A8D0438E8B5A0CA703E30AF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232473140, false, "16f271fd-4719-4d92-9c4d-47742518c4ee",
+			"@@@InProc at 7ABAF9B4D6D28791BF21B072", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232479410, false, "1be56c99-177f-4730-8d3f-f9d0eee372d4",
+			"@@@InProc at 7ABAF9B4D6D28791BF21B072", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232480150, false, "5933d61b-0c95-4b96-a192-48fc78071818",
+			"@@@InProc at ADCFB1F66070C4559893E9C7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232480920, false, "9f4eaa8d-61be-44a5-9f9d-bec1596e2880",
+			"@@@InProc at ADCFB1F66070C4559893E9C7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232481720, false, "4093c2a3-3c56-43ca-b0de-bfa3328cb708",
+			"@@@InProc at 494394BD5F49AAD9C0E3B426", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232487620, false, "73956398-0ff4-4a02-83e1-c0b343837ff8",
+			"@@@InProc at 494394BD5F49AAD9C0E3B426", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232488720, false, "b44a0065-b8e5-4dd4-a84c-6aefb35b71fa",
+			"@@@InProc at 2B8E2AC66C625467EBDB36D4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232489630, false, "0b941ad5-4a8c-47de-94aa-1a860afe7d14",
+			"@@@InProc at 2B8E2AC66C625467EBDB36D4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232490380, false, "93b5407f-e772-4c05-b54c-4919f2e3e7ad",
+			"@@@InProc at 2F00F62DA9DEF604482C2FD2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232494950, false, "1cf2ea81-2fb9-4382-a6ae-67a73bf86467",
+			"@@@InProc at 2F00F62DA9DEF604482C2FD2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232495740, false, "ef507faa-ba08-481d-b800-1b381e742910",
+			"@@@InProc at 9D279C1A6C585274DE134FC6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232501620, false, "5ad7002d-0c15-4c11-9da3-e3f1deaf386a",
+			"@@@InProc at 9D279C1A6C585274DE134FC6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232502400, false, "dd5b5f5c-7beb-4061-93dc-9898494df613",
+			"@@@InProc at A98871407E25DBF733F636F1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232502590, false, "5d627968-9055-4cfe-86b1-c51089ce2e9a",
+			"@@@InProc at A98871407E25DBF733F636F1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232503750, false, "b0aca98b-dcdf-404d-bf0a-5609460d4b78",
+			"@@@InProc at C4A7C811EF9DE3C88348CD90", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232527430, false, "c926c348-2a51-4574-b66c-6c67bed41fa0",
+			"@@@InProc at C4A7C811EF9DE3C88348CD90", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232528130, false, "e0a8321e-7465-4828-9c9d-949efe1f96cf",
+			"@@@InProc at 37F30851E084640BA24A28B4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232528800, false, "0a46018e-fab7-4cc4-a18e-932759183288",
+			"@@@InProc at 37F30851E084640BA24A28B4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232529640, false, "a8025f96-5e20-4b54-a4f1-6b424e4d8431",
+			"@@@InProc at EF967BB3CF2D45C684E119C1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232534390, false, "0b597bb3-09ad-4321-afc5-a61ee566f8a6",
+			"@@@InProc at EF967BB3CF2D45C684E119C1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232534940, false, "d33314cc-abb8-44b2-8f71-345ca782aa6d",
+			"@@@InProc at F001261713FB7DC6E81EE320", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232536030, false, "a5b67094-b700-45ee-aab3-95812ac57e38",
+			"@@@InProc at F001261713FB7DC6E81EE320", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232536600, false, "8f263d23-a179-4da9-bbd0-6130eab70b83",
+			"@@@InProc at 541E7317DD311C8DDF4D70A8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232541230, false, "1a8ecfa5-1680-4fa6-8dd4-03e4f4b001d1",
+			"@@@InProc at 541E7317DD311C8DDF4D70A8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232541990, false, "52e05e8a-fc9e-4a82-9a54-bceb0810712b",
+			"@@@InProc at 46E112B52A2A825EAE889A43", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232542040, false, "e281210c-876f-4d97-af2d-d569e621d6e6",
+			"@@@InProc at 46E112B52A2A825EAE889A43", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232542970, false, "127ae9e4-3190-402e-a640-93219d644741",
+			"@@@InProc at F0B13FC39AE07E601A097863", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232547940, false, "69ae1dc5-ddc3-49e2-b28c-c7b7029ff374",
+			"@@@InProc at 8D4534D7135A1A4FB5AD6359", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232548540, false, "b5ca0fef-983b-4212-9934-54b7e94c6569",
+			"@@@InProc at F0B13FC39AE07E601A097863", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232548630, false, "71a88b59-99ef-49a9-9ea9-daa9573afae7",
+			"@@@InProc at 8D4534D7135A1A4FB5AD6359", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232549540, false, "16fa88c4-d743-45ed-8658-9dcee0462fcc",
+			"@@@InProc at 4D14CBEEDD864DC3F7D33AD1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232555580, false, "940ebfc6-afb0-43af-b6aa-8aca7534ec84",
+			"@@@InProc at 9D6C894EAA0F7153BEEF44AE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232556220, false, "e657f6f4-bed0-461d-a206-9e7f4f2e942a",
+			"@@@InProc at 4D14CBEEDD864DC3F7D33AD1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232556260, false, "8c9e2cc9-7903-4f61-9621-21df62fd499f",
+			"@@@InProc at 9D6C894EAA0F7153BEEF44AE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232557890, false, "6cb3669f-9e36-4c09-9c33-a70db029ee37",
+			"@@@InProc at 86666DDB5557CB9D1FC1AB5F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232562870, false, "e613a421-fd3c-4746-9d4b-e9d93974e31a",
+			"@@@InProc at 8AA363F12D631CC4BFA739DF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232563450, false, "75b873a9-222e-4b94-b6bf-bc989f3ad0a1",
+			"@@@InProc at 86666DDB5557CB9D1FC1AB5F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232563530, false, "680557b8-1911-4689-8d13-4883427e0eb9",
+			"@@@InProc at 8AA363F12D631CC4BFA739DF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232564530, false, "21d74765-486c-40a8-b707-5f3cbebedf80",
+			"@@@InProc at F8022D3D2D74D9380E3C783B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232569370, false, "be2810e4-73d0-4286-a2f4-1baced3647b0",
+			"@@@InProc at F8022D3D2D74D9380E3C783B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232570210, false, "d2d68ac9-5718-4fd8-a2aa-b414f754434b",
+			"@@@InProc at 0BD7142601ED33B25201F4D9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232570670, false, "b7157871-30c6-4ce6-9d3f-0bab272cc4f7",
+			"@@@InProc at 0BD7142601ED33B25201F4D9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232571350, false, "3dff2050-f489-45ce-bdd6-4eaecadad1f8",
+			"@@@InProc at CD23DC0F3BE517981CFF3F51", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232575850, false, "55fa6b66-d06c-4351-8abd-77d523faaa2c",
+			"@@@InProc at CD23DC0F3BE517981CFF3F51", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232576390, false, "a7e1017e-3500-42bb-bd1e-cf20c3a37acc",
+			"@@@InProc at 9CD3092795D81FE0F21FD063", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232576970, false, "c34ced7d-a468-4250-9157-286cfb6578ae",
+			"@@@InProc at 9CD3092795D81FE0F21FD063", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232577590, false, "4ce6145c-b44d-4f93-8bdf-c0f35508a501",
+			"@@@InProc at 3232A8FCD7D2E11DD4EB3E0A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232582300, false, "6cae0d4e-f0f3-425e-b555-6203289cdb3c",
+			"@@@InProc at 3232A8FCD7D2E11DD4EB3E0A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232582950, false, "f94827e5-2ff5-427c-971c-8f3112aef2b7",
+			"@@@InProc at 15C5EFA94AD5269E3328AE77", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232588320, false, "9cce8b20-7604-46d6-ac4b-fef2c27f995f",
+			"@@@InProc at C4741D81F1D69D26F7C9DDC1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232588960, false, "f0dab194-4c23-4396-ab23-c1f2074f3f43",
+			"@@@InProc at 15C5EFA94AD5269E3328AE77", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232589030, false, "f24b3836-2cb1-4291-82a9-0daaf69d2fd4",
+			"@@@InProc at C4741D81F1D69D26F7C9DDC1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232589900, false, "2b4ecee3-56b3-422a-8068-bf8a67e5f180",
+			"@@@InProc at C015D66C4C755D45B71BBCE2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232595310, false, "956ae65d-2826-4ae6-a141-41ab0d6ba567",
+			"@@@InProc at 9EEBB2DBE8945F4E12676419", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232596000, false, "e869debe-40da-4826-835d-a1e744bc8572",
+			"@@@InProc at C015D66C4C755D45B71BBCE2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232596070, false, "d6b93d98-06fb-4d4e-9fef-e21a0ad62944",
+			"@@@InProc at 9EEBB2DBE8945F4E12676419", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232597060, false, "69a8c6d7-bb32-43a1-a15b-718c33fe2cd3",
+			"@@@InProc at 7BE9C61BAFD4D180966C8973", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232601850, false, "2d6a939e-b089-4805-a8ee-889e775b801a",
+			"@@@InProc at 7BE9C61BAFD4D180966C8973", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232602600, false, "ea7024eb-2442-4ef6-b68d-7187af07f810",
+			"@@@InProc at E1FB204C14466B8858B24C59", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232602680, false, "a879e30b-1728-41f3-bd6c-201d951ba5d9",
+			"@@@InProc at E1FB204C14466B8858B24C59", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878232603550, false, "8cdb5568-ec25-4708-960b-2aaef87b7592",
+			"@@@InProc at 507CFFC59583930B42C44067", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233602280, false, "0054e4cb-c026-4b27-b0bf-1557f223780a",
+			"@@@InProc at 6D60DA6CA9ECB753DC432796", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233602420, false, "f16bf07a-50a5-4025-80be-b94f51e3a0bd",
+			"@@@InProc at 507CFFC59583930B42C44067", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233605110, false, "267e8a5e-075e-4d25-9d30-4d1e644d860d",
+			"@@@InProc at 6D60DA6CA9ECB753DC432796", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233606190, false, "8ac2f382-79f1-4667-bd79-4df89cc761d1",
+			"@@@InProc at A1E5C842FC7E2E82BFABCD9F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233613650, false, "464cadf1-3aa7-4ffd-90dc-0e5a079495c8",
+			"@@@InProc at A1E5C842FC7E2E82BFABCD9F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233614450, false, "6daacf98-51a7-47f8-a270-ddf638bec145",
+			"@@@InProc at CC2722D2553FDCBB57F82491", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233615410, false, "477f7e10-c4c0-4438-a768-d75324479da2",
+			"@@@InProc at CC2722D2553FDCBB57F82491", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233616470, false, "0843e3f0-93bd-4a44-b5d7-8addb4c627d8",
+			"@@@InProc at 9DCD500455428AAA5B3DF67B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233623850, false, "a32e615a-e3a5-4fff-bd54-a267ddc3538c",
+			"@@@InProc at 6148AE247B7A10F3B072ACB6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233623960, false, "f143b584-dc57-48b6-9c8c-b33e3ed6c34d",
+			"@@@InProc at 9DCD500455428AAA5B3DF67B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233625350, false, "abd6bc4d-fc11-4266-8a6e-6ef2b2f95f11",
+			"@@@InProc at 6148AE247B7A10F3B072ACB6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233625430, false, "2751e90b-5b4f-4fa2-85c6-646ffa5628c8",
+			"@@@InProc at 3EE144A09E5CA212236AE729", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233633690, false, "8b09a096-a2cc-452c-9743-02824f81077c",
+			"@@@InProc at 3EE144A09E5CA212236AE729", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233634410, false, "10fdbcb5-db9f-4121-a8e9-d10c3ee08cff",
+			"@@@InProc at 672535B8C97FAF3F47230F63", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233634510, false, "7dbf5e34-9cd0-4be5-98c8-3a4871f47e94",
+			"@@@InProc at 672535B8C97FAF3F47230F63", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233635710, false, "954b5f5e-925c-4934-879c-fbd962dedaa4",
+			"@@@InProc at D399C96D9194C0C938B3B5D9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233641880, false, "8ab69787-8f90-4142-895d-e4da49ec6617",
+			"@@@InProc at 1026A1567B6C94BC6571554B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233642610, false, "aa745d28-ce4c-4fef-a262-332b57267075",
+			"@@@InProc at D399C96D9194C0C938B3B5D9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233642680, false, "f52bf112-2309-46f3-8fe6-113f5ad65a86",
+			"@@@InProc at 1026A1567B6C94BC6571554B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233644460, false, "e59a0aba-167f-43d2-8a4c-e9677cdb5ea9",
+			"@@@InProc at 087B27FF05FE64B347DFC467", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233650610, false, "f1fa045d-d26c-409e-9a28-ad920d7a0126",
+			"@@@InProc at 120C397CCE6AA46662EE8D80", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233651970, false, "a7b5c98e-50b5-49f9-b183-1fa6f4fe3232",
+			"@@@InProc at 087B27FF05FE64B347DFC467", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233652050, false, "8d7fed6b-b837-4885-9155-0a11f51bd994",
+			"@@@InProc at 120C397CCE6AA46662EE8D80", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233653810, false, "2391dc1f-d05f-44fd-a7ae-b4e4fca30b78",
+			"@@@InProc at 8947A5954715AAABE01BE4D7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233661420, false, "89e1e522-7c88-4fa9-8130-c3d9fb1d82d8",
+			"@@@InProc at 24734112F70634F0F95B14ED", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233663350, false, "fc09c966-480c-42ad-a2c8-2098fc3518af",
+			"@@@InProc at 8947A5954715AAABE01BE4D7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233663420, false, "c3d5e5c3-11e5-4f33-95b4-25dabc9c3858",
+			"@@@InProc at 24734112F70634F0F95B14ED", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233665880, false, "19372bbc-c2ea-4d34-aa29-52a523d650d3",
+			"@@@InProc at 346E31A64403D2C5839E39E5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233672670, false, "c87cd0cb-2554-40f8-9f9d-077ba3934750",
+			"@@@InProc at 346E31A64403D2C5839E39E5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233673640, false, "2bf37219-2dbe-415c-923c-2a2a911f2e09",
+			"@@@InProc at 55FFDFB54A3159EC908E84E2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233675470, false, "5a9aecd2-8d04-4965-a077-d50cb518a58a",
+			"@@@InProc at 55FFDFB54A3159EC908E84E2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233676380, false, "2b9b9f55-30aa-4540-8c28-81a35821b6a6",
+			"@@@InProc at 98B403CE6DBBEEBE536E462C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233681620, false, "f698144c-e909-4672-9841-97b6ade9a991",
+			"@@@InProc at 98B403CE6DBBEEBE536E462C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233682550, false, "3954c15f-6db4-40cc-9ab2-5c55286df243",
+			"@@@InProc at D79B7C5ACDF36257C4C55590", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233685510, false, "6d853fa7-832a-4162-a63d-56bd84b21a55",
+			"@@@InProc at D79B7C5ACDF36257C4C55590", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233686340, false, "2da30171-3ea3-4ca7-9d7f-72e9259a7173",
+			"@@@InProc at 8AEB206C28FEDFE4DF15D8C2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233691350, false, "03687f94-ae08-4203-bffd-78dbcd3ff022",
+			"@@@InProc at 8AEB206C28FEDFE4DF15D8C2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233692560, false, "4f2eb655-7295-4e77-8d0a-74d6a96cfa30",
+			"@@@InProc at 33669762B77FF7CFB7A352E0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233697240, false, "1967df2b-faf5-4f88-84fc-86b588e71e9c",
+			"@@@InProc at 33669762B77FF7CFB7A352E0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233698190, false, "8be8023b-72c3-41d3-b07e-9bf3e48101f9",
+			"@@@InProc at 6DD00645D4D99A39840FD532", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233702020, false, "c0010106-968d-48d6-8614-706e9d9e45df",
+			"@@@InProc at 6DD00645D4D99A39840FD532", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233702840, false, "80e57763-d7ad-4dc3-8c06-0cf59cf8768f",
+			"@@@InProc at F3408147A692DB925E36527D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233706630, false, "643caaeb-5600-4447-8975-5de1d3a76076",
+			"@@@InProc at F3408147A692DB925E36527D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233707450, false, "706f6cda-ee5c-4e6e-a6f7-0f8b79ed03bc",
+			"@@@InProc at 84B0D9760BF39F33EE6D42CB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233711080, false, "f188752b-5b44-40b4-9101-381b8084160b",
+			"@@@InProc at 84B0D9760BF39F33EE6D42CB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233711890, false, "4a89db75-4be4-4e2e-b671-290cb9b070b1",
+			"@@@InProc at B3AA273C4979694AA6B27CCA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233716320, false, "170705bc-b8a4-4cf4-b208-d0c8145487b3",
+			"@@@InProc at B3AA273C4979694AA6B27CCA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233717170, false, "bd0f1e59-1acf-434f-aa5a-73be4e2447cf",
+			"@@@InProc at E70E7673D54A5B9E8D755210", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233721140, false, "63b9ea74-1322-4b22-8bbc-59ae352e17af",
+			"@@@InProc at E70E7673D54A5B9E8D755210", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233722210, false, "bd302f29-99cc-407d-8de2-fda0175f4bf4",
+			"@@@InProc at DE26D351A6166FBE829ED1F1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233725030, false, "71ca2bc3-fad6-4cda-8c87-80b4bc554f4f",
+			"@@@InProc at DE26D351A6166FBE829ED1F1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233726050, false, "d18784b1-c3f5-4225-99f0-3540d405c42a",
+			"@@@InProc at 191EEB9571DCB64E3BBF719E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233730830, false, "e93c818e-b963-43f5-a1a0-2328420aef6e",
+			"@@@InProc at 191EEB9571DCB64E3BBF719E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233731640, false, "8d2661ab-1b35-4f0d-9365-08cb7a401dd1",
+			"@@@InProc at 350FE66DEF0D258D78C5994E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233734360, false, "6a468114-4e8e-4f18-9ef6-6ba417b0aa96",
+			"@@@InProc at 350FE66DEF0D258D78C5994E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233735150, false, "79514c8d-16d7-43b0-9f1a-daaae1151b4d",
+			"@@@InProc at AE7C4CED2D23F730767D9234", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233739370, false, "bd4dd879-9e00-4ab8-af8a-939918d59970",
+			"@@@InProc at AE7C4CED2D23F730767D9234", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233740150, false, "1409a6b4-c9e9-47d2-9f59-0d746d29c37e",
+			"@@@InProc at 5C3FB1728560232AE8B98E43", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233743330, false, "93e326f6-75dc-4c7d-832b-c8a4afa1f7d3",
+			"@@@InProc at 5C3FB1728560232AE8B98E43", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233744170, false, "863fba35-fd60-4f8f-a364-da9291ff5a50",
+			"@@@InProc at F45BF9E58F34F53AA3A1DACC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233748900, false, "36f29146-b5fb-4df7-9d91-d57ba69e6c9d",
+			"@@@InProc at F45BF9E58F34F53AA3A1DACC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233750150, false, "ba3b95ff-af97-4f01-9dcb-f1535f72d3c0",
+			"@@@InProc at CE83B2153B2194EEF8E8CCB0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233753020, false, "137c4c79-55cf-45ca-9658-c2cc4de53b19",
+			"@@@InProc at CE83B2153B2194EEF8E8CCB0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233754120, false, "471d7aa0-61d3-4299-9c88-9e02339cb9a9",
+			"@@@InProc at 364B8830D16B6F669E7A8253", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233758480, false, "cd8fa51d-4661-473b-87e6-5d584886de4b",
+			"@@@InProc at 364B8830D16B6F669E7A8253", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233759450, false, "ad76a8a3-158f-4ff8-ac62-71be1ece312d",
+			"@@@InProc at A2B0A253BC8BE7683E37351C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233764520, false, "5d5276ba-bded-4582-98a7-591aea00bc2e",
+			"@@@InProc at A2B0A253BC8BE7683E37351C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233765600, false, "1c606785-c7e5-4f8c-a7d6-0ca6b2a5c425",
+			"@@@InProc at 6CB43337A18343ED5AE76F85", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233770440, false, "6df53d14-8c93-4609-8c51-9f4693a4c54d",
+			"@@@InProc at 6CB43337A18343ED5AE76F85", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233771410, false, "e39d6eff-2e65-4035-9bce-0e86c8104b61",
+			"@@@InProc at 4D66243B6B102BFCF3BB85AC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233775420, false, "70e0456d-e80c-4395-be28-a5f62b1ef32d",
+			"@@@InProc at 4D66243B6B102BFCF3BB85AC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233776250, false, "aa7eb68a-23f3-4b99-85b6-e5660576d1e2",
+			"@@@InProc at 426C03336BA2680C71B14DFB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233779000, false, "dc72e4ec-dc4a-4a99-b2b4-44ab5f0385e5",
+			"@@@InProc at 426C03336BA2680C71B14DFB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233779820, false, "2ad3e662-d907-4bf3-982b-a7c54d960bb1",
+			"@@@InProc at B46D3A6CB9C644791A3EFB22", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233784550, false, "4ba76d8c-af1b-45b7-8375-1123f55885ac",
+			"@@@InProc at B46D3A6CB9C644791A3EFB22", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233785620, false, "8a91f283-6f5b-4402-b730-687830b9c236",
+			"@@@InProc at 8DE8466DD2FBEF02D5551E5F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233788110, false, "5af7a413-8995-4c70-bd97-0aab706f94d1",
+			"@@@InProc at 8DE8466DD2FBEF02D5551E5F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233788920, false, "9723a832-8f2f-45e5-98ce-44319c562193",
+			"@@@InProc at F27AAEF252FA64490E151154", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233794520, false, "d26be43b-e362-4351-aa1a-da36260a0546",
+			"@@@InProc at F27AAEF252FA64490E151154", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233795530, false, "faf8f75c-44ed-4fad-b981-13a34bc87b21",
+			"@@@InProc at 9E1309F47BE12519E39B00D6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233796960, false, "ab96a349-e1d2-4b88-9374-976a5de8ccc5",
+			"@@@InProc at 9E1309F47BE12519E39B00D6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233797760, false, "bd053766-f234-4555-b77f-62d11a35f14a",
+			"@@@InProc at 6F16746C4558CABD63319E58", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233803480, false, "d8c8e5b1-87c1-4b1c-b9f8-2d032a72df57",
+			"@@@InProc at 6F16746C4558CABD63319E58", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233804640, false, "3b529f3d-5f97-4b61-abb0-6c5ea5a364d3",
+			"@@@InProc at 7E0EB8363EAE052E6C4068C5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233807140, false, "ea909d1e-8f44-4dbe-ba53-6bb97371fcc3",
+			"@@@InProc at 7E0EB8363EAE052E6C4068C5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233807970, false, "1c69d911-b436-4870-a1d8-76eacffe2383",
+			"@@@InProc at 9275C84EB3FBE4859A1C86C5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233815130, false, "2c300421-9210-41ac-9de3-bfdd39b4efed",
+			"@@@InProc at 9275C84EB3FBE4859A1C86C5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233816310, false, "0d8bbc6c-7966-4d4f-8048-a86f09553651",
+			"@@@InProc at 9E1E876EBF1F90F6EBA281EC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233817860, false, "39030fae-7204-4a8e-81a3-c724e399da53",
+			"@@@InProc at 9E1E876EBF1F90F6EBA281EC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233818690, false, "57ff9189-d6bd-4826-bc41-8d62f1dfe5ab",
+			"@@@InProc at 51D61AA2C7AF7516EF850BE5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233825370, false, "e17f009b-629b-46bf-ad12-3df66bd2c520",
+			"@@@InProc at 51D61AA2C7AF7516EF850BE5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233826220, false, "6d1afe65-6fb3-4d1b-acec-b47085704051",
+			"@@@InProc at 3A4DC5490EA91EF57B244A84", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233826400, false, "347f1414-cab7-4a9a-8631-3e906610ea92",
+			"@@@InProc at 3A4DC5490EA91EF57B244A84", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233827660, false, "b6195a3a-f41c-4492-923f-cb5f68ee28e1",
+			"@@@InProc at 2EC40F7644FD637D3EA35978", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233834320, false, "95122888-1027-48c5-858d-845a17a020f4",
+			"@@@InProc at 2EC40F7644FD637D3EA35978", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233835110, false, "74c7a828-e0c2-426a-9a2d-ee481cc2ec41",
+			"@@@InProc at 5358E284A3F4C2A715409C38", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233837470, false, "d25bb0ef-0192-4433-abd6-1d50d7c6e5d2",
+			"@@@InProc at 5358E284A3F4C2A715409C38", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233838250, false, "203806f1-3af7-43b0-9ecf-4f657473449c",
+			"@@@InProc at 6CEC9EDDFD3EFDD1CFC91AAE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233843410, false, "af293601-4047-44e7-8fed-037201ad8840",
+			"@@@InProc at 6CEC9EDDFD3EFDD1CFC91AAE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233844200, false, "8779aae1-8139-4664-975c-27205592848b",
+			"@@@InProc at 199C7DC157A7CFE89B999063", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233847470, false, "8695f732-ab03-480e-93ff-4979e9f0216a",
+			"@@@InProc at 199C7DC157A7CFE89B999063", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233848490, false, "9a36ddae-5287-46e1-b29a-506d8d9d7eeb",
+			"@@@InProc at 4D9A2EA692AF74ADA06C8EF5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233851890, false, "47ffc1a3-35c9-4192-bb39-be758b011ced",
+			"@@@InProc at 4D9A2EA692AF74ADA06C8EF5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233852850, false, "2c15811d-3487-46a9-b8b2-5e86e18e1e99",
+			"@@@InProc at 6352042CBE27930E6749D065", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233856810, false, "e0bd0f4d-05e4-4bdb-94c9-5111fd588756",
+			"@@@InProc at 6352042CBE27930E6749D065", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233857640, false, "a2b645ac-e9e2-479b-b7b2-6f4555daa604",
+			"@@@InProc at 53F969C5FEB57AB5E2B74104", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233860580, false, "26d33485-2cf1-4285-8466-0ca26ee986be",
+			"@@@InProc at 53F969C5FEB57AB5E2B74104", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233861380, false, "45d59310-d8e8-4359-99da-8d603ffbf98e",
+			"@@@InProc at 845CA6B2E55B854609D70D6A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233865700, false, "4baa7825-be48-4876-8616-8dff9402c411",
+			"@@@InProc at 845CA6B2E55B854609D70D6A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233866700, false, "80ad17aa-f260-4095-bbbb-03597c56e145",
+			"@@@InProc at 7FCF399A69E104540FFD29F1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233869110, false, "914436e9-44e1-4fb1-8da5-ea09dee80aad",
+			"@@@InProc at 7FCF399A69E104540FFD29F1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233869940, false, "627fd90d-6628-442b-9fd3-79e8854ddeda",
+			"@@@InProc at 05C72362733E1C8DCE9F9671", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233874620, false, "9f0d819c-3c33-49d4-bb09-fa9c09f83984",
+			"@@@InProc at 05C72362733E1C8DCE9F9671", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233875580, false, "cbd65624-c1ff-405f-8b6e-5988b6dd7e3b",
+			"@@@InProc at 4A1AABAB96CE5C26A4CC640F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233877950, false, "41320f26-5bd2-4f2b-84b1-f20b6a8ff794",
+			"@@@InProc at 4A1AABAB96CE5C26A4CC640F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233878750, false, "46b9180a-b46f-4211-af81-570ec75142a7",
+			"@@@InProc at 0A9AD448040CBDEAB1097035", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233883710, false, "035c4230-d71d-45c6-8140-4737588dbaf6",
+			"@@@InProc at 0A9AD448040CBDEAB1097035", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233884540, false, "5de18833-ca56-4d15-ab5a-5a3536c9f971",
+			"@@@InProc at F74CA8D877C8DDF418BF4450", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233886270, false, "b9866b49-89f5-4499-9d06-e970125e41eb",
+			"@@@InProc at F74CA8D877C8DDF418BF4450", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233887070, false, "67dbede2-5e65-4904-ab7e-b584c66d9baa",
+			"@@@InProc at 0D951CC23FC6209AD7F9D19C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233892580, false, "bcf42dab-3c77-4c08-a8a4-a9c726341672",
+			"@@@InProc at 0D951CC23FC6209AD7F9D19C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233893750, false, "45906be6-7e00-4898-8e18-f9567d930d30",
+			"@@@InProc at 08E60CE3EF393B51B8F479D2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233895320, false, "53231bf3-5348-4871-a04f-954c6a9a7da7",
+			"@@@InProc at 08E60CE3EF393B51B8F479D2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233896150, false, "f1e8f589-fc0c-4696-b55b-e875f4ba5108",
+			"@@@InProc at 2127D0665150C2A4A1E88183", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233902350, false, "91aa4915-15a8-4129-9604-00bf64ee62bb",
+			"@@@InProc at 2127D0665150C2A4A1E88183", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233903350, false, "f7ef2a81-c021-475d-8586-1caede923357",
+			"@@@InProc at 6808995281A2302612BB458B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233936350, false, "17af430a-38d0-4528-a1cb-0d1d60c2b29c",
+			"@@@InProc at 7B658FF82DEACFFCB15660CA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233936570, false, "fca76499-9f10-476f-a7cb-e3cd66dfded8",
+			"@@@InProc at 6808995281A2302612BB458B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233938280, false, "f35446b0-abb2-4e71-9d16-8db3931e4774",
+			"@@@InProc at 7B658FF82DEACFFCB15660CA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233938370, false, "55967bcc-02b4-46ad-a7b9-cf1be309b9db",
+			"@@@InProc at E801745109406C12C91B1A05", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233947540, false, "c5e13de5-76a1-4441-b326-b8092e4479c8",
+			"@@@InProc at E801745109406C12C91B1A05", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233948650, false, "24c4c68e-7f94-405e-b43a-c95712c9318e",
+			"@@@InProc at 7A3757410AC14E560991C61F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233949640, false, "94f5a09c-5c38-4852-ae04-f655f2c329e4",
+			"@@@InProc at 7A3757410AC14E560991C61F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233950880, false, "5093a25c-dd48-440b-b0b8-264f24a8ba31",
+			"@@@InProc at D89A8794348E9920C2F0779C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233956870, false, "99eb8819-3e50-4aa5-9c2a-015c86db4ad1",
+			"@@@InProc at D89A8794348E9920C2F0779C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233957690, false, "4abd0944-8e3a-428d-8153-5ff9dbf7e149",
+			"@@@InProc at 19D07909845E1D71FC22B7A8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233959910, false, "f28ec309-21d4-4ccb-800c-edbde5d3697a",
+			"@@@InProc at 19D07909845E1D71FC22B7A8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233960850, false, "093233f8-ef06-4d9b-93a0-630c54684f54",
+			"@@@InProc at 017700D5C07749A6B408A31D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233966100, false, "6e0d9120-33a0-414c-b637-bed9bcdd6e4a",
+			"@@@InProc at 017700D5C07749A6B408A31D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233967080, false, "61641c1f-5d8c-4577-8508-a2dbf2e66f72",
+			"@@@InProc at A2E21602216A70C055DC0A45", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233971210, false, "200a897d-95eb-4ada-8210-02ce5a263015",
+			"@@@InProc at A2E21602216A70C055DC0A45", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233972410, false, "2362eafe-c327-46c4-bcb3-2b93bc1cd0cd",
+			"@@@InProc at F64B7706E8ED05F67889ED9C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233975390, false, "ec6ebf98-fc60-409c-bab8-51d45597b76d",
+			"@@@InProc at F64B7706E8ED05F67889ED9C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233976370, false, "b2ec6063-ea1c-4414-bd8a-8915959abc18",
+			"@@@InProc at 9C493C6F2F5B2A72346B5832", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233982290, false, "ff36e0b0-70d4-49cd-8008-bfe77295e77d",
+			"@@@InProc at 9C493C6F2F5B2A72346B5832", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233983280, false, "489858e9-f823-4ba8-a930-d85d5b755810",
+			"@@@InProc at A1CA8B7D2FBAC38C17AFCBE4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233985680, false, "fb09b734-c235-4814-9904-a660e688b346",
+			"@@@InProc at A1CA8B7D2FBAC38C17AFCBE4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233986510, false, "9f6a8c36-7b5c-4460-8766-e0d75b515fa5",
+			"@@@InProc at 599694FE7189F4E47A38EBEB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233991480, false, "efbcc278-e69e-48b5-a6ea-46055d882aee",
+			"@@@InProc at 599694FE7189F4E47A38EBEB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233992310, false, "5ebf77e1-68af-4658-81a3-7b5d7b2932c7",
+			"@@@InProc at 7529D51D3641C8D7AE1029DE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233994100, false, "858dabc6-678d-4831-ba1f-ffb683e71f4e",
+			"@@@InProc at 7529D51D3641C8D7AE1029DE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878233994910, false, "4f701ffb-3892-421c-bf42-5a2b23387ef3",
+			"@@@InProc at 4C2C7E2B66FCE8F03C896F85", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234000190, false, "536453e5-940c-4b40-841a-a7c6573dbc89",
+			"@@@InProc at 4C2C7E2B66FCE8F03C896F85", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234001340, false, "127f9880-67b6-47ab-ad32-301ad8eb5edf",
+			"@@@InProc at 4EC37995CC44FB8194D0A67F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234002730, false, "cd814b2a-a6e6-4a3a-9406-30290f537113",
+			"@@@InProc at 4EC37995CC44FB8194D0A67F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234003530, false, "5257cf9f-ebb1-4508-b8fe-af773ce9c631",
+			"@@@InProc at FC83A0E092D48D141A29285C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234009840, false, "13adfb62-20af-4b50-b7de-c3f25e51d1bf",
+			"@@@InProc at FC83A0E092D48D141A29285C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234010870, false, "45e750b8-a7ea-4635-b3b4-24baa3b82c3d",
+			"@@@InProc at 6779AAC640BBC80ED238025B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234011800, false, "a1468a8a-12f8-49d3-b199-36504fb27558",
+			"@@@InProc at 6779AAC640BBC80ED238025B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234012690, false, "70552b9f-9392-4c07-88ec-01c2106fa6af",
+			"@@@InProc at A02C610B3EE6DE301B647D39", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234019480, false, "8267acab-d62f-4084-97c8-24147ccde908",
+			"@@@InProc at A02C610B3EE6DE301B647D39", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234020420, false, "0943d7b5-b3d4-4d87-9d42-7113e9f0c2b4",
+			"@@@InProc at 5B025D008B121F7EAD5EC1D0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234020530, false, "77358b25-1fef-4ac3-9d6d-62165e4369dc",
+			"@@@InProc at 5B025D008B121F7EAD5EC1D0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234021780, false, "04b53e31-42f3-47cf-9102-cfe859d61a23",
+			"@@@InProc at F4328BC11F5B83D45F9772BA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234028390, false, "844acc7c-d865-4748-8647-1c045901aa7c",
+			"@@@InProc at 1475E237CF9A4DB67CD7BCA3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234029430, false, "d4246fca-631a-43c5-9231-ec878b7b5961",
+			"@@@InProc at F4328BC11F5B83D45F9772BA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234029520, false, "2bd4a739-c2d0-4dbf-afdd-114285a15ba6",
+			"@@@InProc at 1475E237CF9A4DB67CD7BCA3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234030890, false, "56c3e5d5-0c42-4040-865c-52e0d2a4e917",
+			"@@@InProc at 22E8CBF737A5764CDBA29237", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234037650, false, "4dd938e3-009d-40a0-a23a-41607003a0c6",
+			"@@@InProc at 22E8CBF737A5764CDBA29237", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234038430, false, "bfb3fa83-df1d-47fc-b497-c85cd739e324",
+			"@@@InProc at A4C8751E0932F2B237C47670", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234044730, false, "e083251f-aaab-4743-acf6-c7e91f81a33f",
+			"@@@InProc at A4C8751E0932F2B237C47670", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234045510, false, "00fb4e46-c293-44cf-bcda-ee046a62b711",
+			"@@@InProc at 792AE906638016BF283747B8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234046370, false, "e908847e-2d38-4f32-bca3-c2aa6d162172",
+			"@@@InProc at 792AE906638016BF283747B8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234047210, false, "9cfe5f25-602e-44cd-b545-da51e574640e",
+			"@@@InProc at 9DF547407148F547372F3543", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234054200, false, "fcf18972-4ccf-4322-ba68-ddaae496e0f0",
+			"@@@InProc at E283FE78B1998530DF80BBFD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234055330, false, "e983da6b-f895-4a88-a88c-e66e0f79c5bf",
+			"@@@InProc at 9DF547407148F547372F3543", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234055430, false, "6603cef1-c84e-4cb0-b7c9-6b1bfa5866d0",
+			"@@@InProc at E283FE78B1998530DF80BBFD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234056860, false, "22496808-1434-4764-8584-2d6802829e1c",
+			"@@@InProc at 3916E3B6AE399D0F329F4630", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234064040, false, "32e609b8-fd2f-46fc-99a2-5795c8f1f7f0",
+			"@@@InProc at 3916E3B6AE399D0F329F4630", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234064860, false, "55991bb8-3d3c-4864-9e88-439ff7e735be",
+			"@@@InProc at EE8556097AC593B43413FACC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234065130, false, "2e99ecac-1a83-4ba3-9281-9edcad3fed4e",
+			"@@@InProc at EE8556097AC593B43413FACC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234066240, false, "f61214d8-b472-45bb-9aa2-3cca21a95ace",
+			"@@@InProc at 8ED74C5622964EAD6234871A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234073060, false, "77ca5705-4952-4565-ba78-8d5072364ea3",
+			"@@@InProc at CD2D88947BB50BA064EDA0FE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234073930, false, "387e805e-3294-4742-a675-1c6f1164c328",
+			"@@@InProc at 8ED74C5622964EAD6234871A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234074050, false, "1ae6bf3e-e73d-4536-9f4e-98636a9663bf",
+			"@@@InProc at CD2D88947BB50BA064EDA0FE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234075500, false, "895613f5-2830-4880-ba43-85181522006e",
+			"@@@InProc at FF0DF9B9855FEF0751C1777D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234082650, false, "6b272493-9efc-468c-a613-3a7614c36676",
+			"@@@InProc at FF0DF9B9855FEF0751C1777D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234083460, false, "60884306-7ac9-43e8-b6ef-d6756ded9d15",
+			"@@@InProc at 687EC88F5A04D155A9D05978", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234084360, false, "e2a79c74-f435-461a-a0c2-3202900f6dfe",
+			"@@@InProc at 687EC88F5A04D155A9D05978", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234085530, false, "fda72fd2-b79c-4f55-9629-8e4d9950658d",
+			"@@@InProc at 1B20074289C7F2A68DFD4679", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234095120, false, "6b47a08e-8d7f-4bb3-8fd0-ec19a0c9915d",
+			"@@@InProc at D1C785A6801A2F502CDE9FF6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234096920, false, "ac76bd74-c006-45d0-bf42-33e93d80ab6c",
+			"@@@InProc at 1B20074289C7F2A68DFD4679", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234097020, false, "3bb77edd-18e7-4348-b47b-90821372ccf4",
+			"@@@InProc at D1C785A6801A2F502CDE9FF6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234099160, false, "0b017bae-9814-4788-a675-bca275fe18df",
+			"@@@InProc at 41741FC8789DF56747FD3E28", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234106770, false, "99fc2547-9cce-4a5a-81f2-1bef0e19a7c6",
+			"@@@InProc at 41741FC8789DF56747FD3E28", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234107910, false, "bf6092e3-f83c-4829-8b15-912c1d79cad0",
+			"@@@InProc at 3511DDE0A1ED6D1AC543FB69", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234109150, false, "070a6411-2af2-4a47-8b46-04886b71c531",
+			"@@@InProc at 3511DDE0A1ED6D1AC543FB69", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234110320, false, "edfe1d6b-cd79-4815-bc13-6160e7317786",
+			"@@@InProc at A4F3B0BA2C32F2038FEDA7A8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234117740, false, "ad1f77db-ecd3-4b7d-ac1b-89424856ab1b",
+			"@@@InProc at A4F3B0BA2C32F2038FEDA7A8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234118950, false, "f5c74859-5ff5-4c1c-9237-afe20f12c888",
+			"@@@InProc at AADBD5186DE654A99FC33F9E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234121160, false, "198f012e-40ae-4421-a923-e5a09e9d0b7e",
+			"@@@InProc at AADBD5186DE654A99FC33F9E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234122400, false, "07cacff2-4d80-47cd-86fb-046e5bf2cd90",
+			"@@@InProc at 86ECAB87F8F38E6355B563BB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234126910, false, "9334e514-fea4-478a-af1b-1d77760bd83e",
+			"@@@InProc at 86ECAB87F8F38E6355B563BB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234127870, false, "1286d6a5-a290-4700-b523-5186b79d3119",
+			"@@@InProc at B3537E6FFDDB8F29A2E697B5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234131160, false, "28cca5da-240b-4773-b21b-aeb85c980586",
+			"@@@InProc at B3537E6FFDDB8F29A2E697B5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234132230, false, "113d9f1a-8129-4747-a5b5-190533a6f813",
+			"@@@InProc at E7C582A66AE8BCB1C323A26A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234137240, false, "404532b0-d4a1-4a2b-bca7-501392a69085",
+			"@@@InProc at E7C582A66AE8BCB1C323A26A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234138020, false, "0ee734aa-f948-489b-84d3-ebb0027a0931",
+			"@@@InProc at 134DBD27988BC74EDD36BBFD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234141260, false, "87196f78-10a8-43a1-a27c-5be5b08513ee",
+			"@@@InProc at 134DBD27988BC74EDD36BBFD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234142360, false, "d62623e4-a355-4ef5-8684-92db300d9874",
+			"@@@InProc at B1ABC11DD51D16AEF64E56F1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234147290, false, "9791aa99-43e4-4c22-abbb-d89432d51e4f",
+			"@@@InProc at B1ABC11DD51D16AEF64E56F1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234148080, false, "20d5ea3b-eed8-43eb-9314-16dd15e5a348",
+			"@@@InProc at DC5E470634BE3A04DD11BE62", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234151660, false, "1ed3f1b1-3215-4a06-a387-0b2e78efafc6",
+			"@@@InProc at DC5E470634BE3A04DD11BE62", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234152670, false, "bb077f0d-3a7d-447f-b8ea-92cb64fb7d41",
+			"@@@InProc at D99D8E4455752583054EF3A8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234157220, false, "9842de3b-8a94-4efb-b145-235cc9d8e0b6",
+			"@@@InProc at D99D8E4455752583054EF3A8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234158040, false, "111c5a80-22c6-4325-9624-41e0ce2a5bb6",
+			"@@@InProc at FCC3CAE070347A6F85B7331B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234161630, false, "fa9943a5-8d5c-49fe-b589-c89cccfb52e6",
+			"@@@InProc at FCC3CAE070347A6F85B7331B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234162610, false, "e166cef4-c45e-4cb2-8eb4-d7640c28c8cc",
+			"@@@InProc at EB6039234E954167C4B32C95", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234169140, false, "080b2ecd-03aa-4de3-8afa-12a41eda1b4d",
+			"@@@InProc at EB6039234E954167C4B32C95", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234170370, false, "0da3ca2d-964a-4ad5-8ec4-7a0831e22fdb",
+			"@@@InProc at 5DF310A535B6B9F75886F92A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234170500, false, "a0ca78ab-3034-4b3d-949c-6cd632ba3469",
+			"@@@InProc at 5DF310A535B6B9F75886F92A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234172220, false, "984ba8d0-7807-415b-b256-8b779683bb86",
+			"@@@InProc at B84534E2D0DDCB5D83D23916", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234178570, false, "ed9049e5-2558-4cec-8920-850cac9592b8",
+			"@@@InProc at B84534E2D0DDCB5D83D23916", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234179370, false, "a60a1d78-bbe7-4923-8a1a-341db9dc0f5a",
+			"@@@InProc at 7D11BA74489188A8F830ACC1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234180170, false, "58a2c41c-6568-4264-bbee-4a9ac928e164",
+			"@@@InProc at 7D11BA74489188A8F830ACC1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234181000, false, "0ebfd110-7dd4-4037-a94b-16accab11f8c",
+			"@@@InProc at 9C88566E1BC6E4046D9E0193", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234188110, false, "94e33e74-e9a6-4d7e-bf2c-ad4e6b6ca980",
+			"@@@InProc at 9C88566E1BC6E4046D9E0193", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234189520, false, "9233b68e-3c7f-42a6-8695-b0fc1a52224e",
+			"@@@InProc at FD54FE239AAA90F0B75C6977", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234191680, false, "546a6774-f410-4db2-9148-663cf3a9c88b",
+			"@@@InProc at FD54FE239AAA90F0B75C6977", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234192880, false, "6ec8b4b8-44db-4eb9-bab8-92326f6bc1ba",
+			"@@@InProc at BB254519ADE8D03A726FDBA3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234197950, false, "87a5553b-cc71-4e2c-b9da-6bceb5b5127a",
+			"@@@InProc at BB254519ADE8D03A726FDBA3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234198920, false, "52d3eec8-6fb2-4513-880e-e7d2ba05a553",
+			"@@@InProc at D2ACE98A7D3C55746191DF3F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234201500, false, "f7ab4d1e-170c-4f70-8b35-b2fa58afbfa2",
+			"@@@InProc at D2ACE98A7D3C55746191DF3F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234202830, false, "5f2b18c5-bac0-451f-b26e-466aae559992",
+			"@@@InProc at 9D9E239E207355FF0FC19F92", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234208430, false, "5785ab57-139e-4c1d-abcb-48d570d9f521",
+			"@@@InProc at 9D9E239E207355FF0FC19F92", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234209410, false, "70295c06-c4a1-4e53-98aa-2c383fc3ca71",
+			"@@@InProc at F5AD4F9CA9B0EEA9D5CE84BD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234211900, false, "3307da38-d047-4ab2-b0f2-633c92a78872",
+			"@@@InProc at F5AD4F9CA9B0EEA9D5CE84BD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234212750, false, "9e3a08c9-5abc-47b6-84ae-3fb16b347f9c",
+			"@@@InProc at E5469E2C1960265D809EE9A6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234217690, false, "122761c5-c8aa-4889-b2e5-efff9e902a93",
+			"@@@InProc at E5469E2C1960265D809EE9A6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234218900, false, "9389ce52-5608-4ac3-82c4-d16cafc82828",
+			"@@@InProc at 373548A918D25AC3BB7220A7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234222400, false, "0c540597-b6df-4c22-88df-323fe19aedd0",
+			"@@@InProc at 373548A918D25AC3BB7220A7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234223460, false, "d59c7c73-bdfe-4d44-a5e8-12c90f6dee52",
+			"@@@InProc at 03D5D1EC9A08BF7C39D8EB69", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234227260, false, "3d189423-d7c5-4a1e-8997-0ca844517d6a",
+			"@@@InProc at 03D5D1EC9A08BF7C39D8EB69", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234228280, false, "7aa31acb-9976-4e32-afb9-11711e9003d5",
+			"@@@InProc at 890BBA2AFA0EE78F84E3D7C6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234231920, false, "cc4b8f54-7eec-47bd-82db-610d5b3e2144",
+			"@@@InProc at 890BBA2AFA0EE78F84E3D7C6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234232870, false, "0515d89e-2533-46cc-b47e-b860e8b083a1",
+			"@@@InProc at 3FBAF0C797C36A8050623658", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234236350, false, "d779c2e6-2cce-4ccc-b65f-707d7228d948",
+			"@@@InProc at 3FBAF0C797C36A8050623658", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234237150, false, "79d63ad3-f0b7-4a8f-b3e2-25fe7477dad0",
+			"@@@InProc at 8442F40849CE512C6547E70C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234240540, false, "12b76862-c9c5-43ca-a7c6-8f9db908c7fe",
+			"@@@InProc at 8442F40849CE512C6547E70C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234241690, false, "00d59130-df4f-48ff-a8b7-852a3e1c568c",
+			"@@@InProc at CDF6C9E91041052BDD93A02F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234246320, false, "363c709d-aff2-4acc-a1d1-9cc0e17bca6d",
+			"@@@InProc at CDF6C9E91041052BDD93A02F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234247120, false, "872f4ca1-258a-42ff-80c5-ed4f32673aa1",
+			"@@@InProc at ADB8875D6C2D894DD3A6D802", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234251560, false, "6ba7c738-43d1-4355-881c-36cb36a7d8d7",
+			"@@@InProc at ADB8875D6C2D894DD3A6D802", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234252460, false, "2a62969d-0a54-46bb-989e-5b96d107321e",
+			"@@@InProc at 3AF94878126DA2F2894B39FA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234256180, false, "a827d177-6a07-4604-a303-193378929b5d",
+			"@@@InProc at 3AF94878126DA2F2894B39FA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234257250, false, "55ec6bbc-deec-4342-bee1-5d0050a8e940",
+			"@@@InProc at 3FAABA000D5800AE8E97BC17", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234260500, false, "b85c3ac8-d7bc-47bc-82ca-ae462cb18477",
+			"@@@InProc at 3FAABA000D5800AE8E97BC17", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234261520, false, "192f3ae3-4a02-45dd-ba8b-abf8a440bf7a",
+			"@@@InProc at E14E66B8ADAD3DF9FD13FEC7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234266740, false, "ade074d5-7a43-45dc-99ba-2f6ca1ba0058",
+			"@@@InProc at E14E66B8ADAD3DF9FD13FEC7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234267570, false, "fb7e2f90-d9c4-4c29-8125-f5b64a816543",
+			"@@@InProc at FADB129C4A146F922D473385", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234269830, false, "3b09edf5-05f0-43e3-be47-f41c1725090d",
+			"@@@InProc at FADB129C4A146F922D473385", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234270640, false, "74f229a3-442b-4043-9d99-427ab12e84ba",
+			"@@@InProc at 4A461DA87EDCAA8F07DAE1E3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234276110, false, "2defd5c9-8a22-41af-bd95-41fcec6c2f3d",
+			"@@@InProc at 4A461DA87EDCAA8F07DAE1E3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234276930, false, "e4d84fd9-a74d-4b32-91fd-e74532580cbe",
+			"@@@InProc at B2DD15A677AEBCAB1FE9F26B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234279450, false, "ea80a1b0-c3aa-45ae-9804-565547ffbe69",
+			"@@@InProc at B2DD15A677AEBCAB1FE9F26B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234280510, false, "eb68956f-5e14-4769-a0d2-b2bf7fdaa6c5",
+			"@@@InProc at 298B7AB9DD0E573D3AE6F647", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234284430, false, "4ba4b131-2a91-4264-a64b-3635484a6925",
+			"@@@InProc at 298B7AB9DD0E573D3AE6F647", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234285250, false, "5c12acae-7bc0-44d4-ac72-1aba35a6e231",
+			"@@@InProc at BC1D7041B2B757CF69F1F3E2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234289150, false, "81b36d8a-fdba-49f7-b5a3-bed1e18461f3",
+			"@@@InProc at BC1D7041B2B757CF69F1F3E2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234290040, false, "a0b99de2-5439-49eb-a064-0fcffe56ee93",
+			"@@@InProc at 98068B7E3278A2CFB221BC24", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234293130, false, "db03d60c-c8e7-4a5f-9221-2bc563086401",
+			"@@@InProc at 98068B7E3278A2CFB221BC24", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234294090, false, "3d3c565c-b3c3-4540-9b25-00f19805703a",
+			"@@@InProc at 08A330272B3C92F0EA3CC3B7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234299160, false, "a79150be-d112-4979-821d-373d26fb4de7",
+			"@@@InProc at 08A330272B3C92F0EA3CC3B7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234299970, false, "790b0eb3-104f-468d-8a5c-e063b03b52ef",
+			"@@@InProc at 5B7D3C3017B21AAF15E3592C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234302640, false, "4e4f008e-6693-4dd5-a222-10fab336462e",
+			"@@@InProc at 5B7D3C3017B21AAF15E3592C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234303570, false, "a76f9b1c-9df0-4726-b364-1fe46a127ce1",
+			"@@@InProc at 1B157D412A1CB07D2993A125", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234307780, false, "723efd99-ae79-4a1f-a547-65c25c1a9382",
+			"@@@InProc at 1B157D412A1CB07D2993A125", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234308670, false, "efcda365-df77-464a-ae38-8e9d2efe9507",
+			"@@@InProc at B17831CB595029C35090AFEE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234312410, false, "a7b67032-12aa-4517-b596-b30f42067b30",
+			"@@@InProc at B17831CB595029C35090AFEE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234313260, false, "ddcd796e-fa9e-4ebc-b99d-4b888a11ad5b",
+			"@@@InProc at 30CA522A2E6902C7526F0C34", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234316880, false, "9f5e3284-bc1f-47d6-8eea-a0a808e3763b",
+			"@@@InProc at 30CA522A2E6902C7526F0C34", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234318050, false, "bf893656-243f-46a6-9e1c-b5553a70571b",
+			"@@@InProc at 5FD1A2A109B0CEFE74513B6F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234322720, false, "2ab6a603-5363-46fa-b064-0371a7f00756",
+			"@@@InProc at 5FD1A2A109B0CEFE74513B6F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234323540, false, "b705d2ae-75df-4eb1-832b-44b8be23fad9",
+			"@@@InProc at 026EA3BB014A88AA86D0450D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234326550, false, "ff3e55d8-8e7c-4c92-b578-0043cae15127",
+			"@@@InProc at 026EA3BB014A88AA86D0450D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234327430, false, "54a6d14a-12ad-4a83-be79-c4b660f84ab7",
+			"@@@InProc at 3D42061C78F351BF34C407C4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234331720, false, "f661f9f0-fcca-48ea-8509-c664c57d0945",
+			"@@@InProc at 3D42061C78F351BF34C407C4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234332590, false, "315a4995-9e40-46d8-8372-8caceebbd939",
+			"@@@InProc at 82A5FE4A459A1EEEA1182AE6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234335440, false, "0c0684cc-b98b-4e7b-99a7-abf3ff020adb",
+			"@@@InProc at 82A5FE4A459A1EEEA1182AE6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234336780, false, "0472407d-8980-43d3-9011-f613e9ba4542",
+			"@@@InProc at DE276F0686CCA106ACBCEDD7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234341230, false, "316eef97-68a9-42a4-b285-84c5992bf985",
+			"@@@InProc at DE276F0686CCA106ACBCEDD7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234342050, false, "0099f533-d00d-45e0-9d47-6a73ea6c767b",
+			"@@@InProc at E09ACD3CEC19B109F7653604", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234344860, false, "91a5628d-9ba0-45c5-8c88-8aaef6aac1f7",
+			"@@@InProc at E09ACD3CEC19B109F7653604", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234345760, false, "dcefceaf-915b-4364-9835-eb50c39d918a",
+			"@@@InProc at 099FAF8B4EA31B7D4BA34419", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234350580, false, "bdfda388-4f03-4234-8ace-e0792c50c88d",
+			"@@@InProc at 099FAF8B4EA31B7D4BA34419", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234351410, false, "ee4f931b-2779-49f9-8bfe-728d82a812e4",
+			"@@@InProc at D69E505EF21F95078106C817", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234354250, false, "df0c150e-2be4-4c4c-b889-77147a9a49d9",
+			"@@@InProc at D69E505EF21F95078106C817", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234355460, false, "4257933c-9830-48a7-80ff-080af0ca48d5",
+			"@@@InProc at 3F313DC72FCD7E5871E6DAA9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234384810, false, "7d417b7b-d502-49e5-a3db-927fceb16363",
+			"@@@InProc at 3F313DC72FCD7E5871E6DAA9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234385830, false, "0595a5bc-9848-476b-b5c0-5fb032c5e2e9",
+			"@@@InProc at DBC0EEF36D217F73B974342E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234388170, false, "4f87ca79-c951-4266-98ad-e1cbddca717a",
+			"@@@InProc at DBC0EEF36D217F73B974342E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234388990, false, "ddd9b840-211b-44d0-942c-0706725fc869",
+			"@@@InProc at F70D7EBE176EBCD1E6D3AD88", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234395110, false, "31c749e1-cc10-4b31-8253-3a1d915db36b",
+			"@@@InProc at F70D7EBE176EBCD1E6D3AD88", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234395940, false, "d6d6ad9f-d93f-4f78-9a5e-2fc9f7784303",
+			"@@@InProc at E28B6C725F4C76E127C691CF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234399220, false, "18aa7df6-203a-4b6b-8d23-358bb6720462",
+			"@@@InProc at E28B6C725F4C76E127C691CF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234400080, false, "abb62639-68f8-427d-9f8d-ad41b6080e98",
+			"@@@InProc at B6A869AB3CC15398D2B52A04", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234403710, false, "7a915e05-6551-4462-ab87-77a288bba4c6",
+			"@@@InProc at B6A869AB3CC15398D2B52A04", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234404590, false, "cc52b64c-cfbf-4e0b-a11d-e4d3b4f1c0d6",
+			"@@@InProc at 8951EABC13DF9FB59389ADC8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234407790, false, "010ad420-7481-4521-83e5-b43b2a2cee38",
+			"@@@InProc at 8951EABC13DF9FB59389ADC8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234408910, false, "7aacab9d-c1ad-4fa4-aeae-cee2c9f89b6d",
+			"@@@InProc at 8C40F419CF591DC3F82BA1C7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234413750, false, "237eeaf3-f996-4e9d-a105-b32572ce8fe7",
+			"@@@InProc at 8C40F419CF591DC3F82BA1C7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234414870, false, "f8f7b18b-004f-4999-9c7b-1cdc6389d9c1",
+			"@@@InProc at 1AC7A9F0E678201CBD69D0B0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234417430, false, "1e4f6581-9ebf-4eaa-9c56-db2fabc568d4",
+			"@@@InProc at 1AC7A9F0E678201CBD69D0B0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234418260, false, "9ab27d92-995b-414e-8d8b-e89a35485a5e",
+			"@@@InProc at 149BE623BAB0135DBA0E7FF4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234423420, false, "b90ed6d4-4f30-45d4-a333-87d0b8a63a71",
+			"@@@InProc at 149BE623BAB0135DBA0E7FF4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234424500, false, "e25e09ba-8a7b-468a-a68b-7b3e240669e5",
+			"@@@InProc at D1350AFD9E5FB1DF8585DAE9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234427060, false, "2dad71e5-a587-498f-8dfc-cf28332ab6e6",
+			"@@@InProc at D1350AFD9E5FB1DF8585DAE9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234428210, false, "5ff8e653-5840-4efd-9450-063ac570cd55",
+			"@@@InProc at F620AA7305EE79196BADC729", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234432570, false, "a0419a7f-02d6-434b-b5ac-5e5a0e071ecf",
+			"@@@InProc at F620AA7305EE79196BADC729", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234433480, false, "f1b1ec48-d702-4f42-890f-4244665064ef",
+			"@@@InProc at 8719510F8A920AE79E457C16", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234437560, false, "177bb460-03cd-4005-a156-1af39e2f8d78",
+			"@@@InProc at 8719510F8A920AE79E457C16", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234438780, false, "d83e5ec7-5d1f-4150-966b-896ada9173b7",
+			"@@@InProc at 75CFC3C6B5D5EA39FEAED525", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234443730, false, "a367fa0a-9dc5-41f4-9b4e-15885b1a3292",
+			"@@@InProc at 75CFC3C6B5D5EA39FEAED525", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234444930, false, "bcd16d5e-807d-4ad8-8e50-cb277ab97dd5",
+			"@@@InProc at 2938B297684DA5CA6321D3D9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234448030, false, "99750d3b-fde3-4390-b6af-8531da31ccfa",
+			"@@@InProc at 2938B297684DA5CA6321D3D9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234448910, false, "3dc851ac-13da-4837-8a03-2467664ba0a6",
+			"@@@InProc at 07EAA55F4D1175D7D5821086", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234454860, false, "34d412e9-12b4-4531-8951-a9e5c4190878",
+			"@@@InProc at 07EAA55F4D1175D7D5821086", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234455940, false, "8028eda9-ea41-481b-8872-60f3ac1c7447",
+			"@@@InProc at DE54E79A56C177529404D103", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234457730, false, "420f0d14-4af5-437d-9026-8b5c9cb5f7b3",
+			"@@@InProc at DE54E79A56C177529404D103", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234458830, false, "867ed39c-bb08-4dbf-bff0-42ad5d66330a",
+			"@@@InProc at 22E7CD5BD673C1D3A0502783", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234465270, false, "8a5a335d-f299-4697-bb4b-b038644303a5",
+			"@@@InProc at 22E7CD5BD673C1D3A0502783", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234466630, false, "8fe4ae84-c456-4ccc-9791-c5c7c2778ef3",
+			"@@@InProc at 3990B2911834E38EBCDC3771", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234469090, false, "fd295288-cae8-4346-90aa-6ada57afa26b",
+			"@@@InProc at 3990B2911834E38EBCDC3771", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234470330, false, "6e99ea7f-f2ce-4048-98f8-f12715633f69",
+			"@@@InProc at E6B7BD8280C3521EA8D39D9A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234477770, false, "a7cb56b6-7528-4890-8456-c821846e4000",
+			"@@@InProc at BDD0086B211BA47D3E2647AE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234479590, false, "f08cf877-69e1-43dc-b9a3-d9d92fe87e55",
+			"@@@InProc at E6B7BD8280C3521EA8D39D9A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234479810, false, "99d56ab3-c103-4fe0-9a81-eedd5ae86d9f",
+			"@@@InProc at BDD0086B211BA47D3E2647AE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234481570, false, "69001cb3-27f6-4162-ad48-3ce7365a6cac",
+			"@@@InProc at A0CCEB2CE6533EDD52427917", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234489510, false, "97c55ad6-7c51-4755-9dc1-6123e3fe2047",
+			"@@@InProc at B0551A6C1D1E50CE2B2193AA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234490450, false, "8eae6c3a-25c5-495d-8460-7451e324ec12",
+			"@@@InProc at A0CCEB2CE6533EDD52427917", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234490540, false, "6482d511-fe76-4181-bcad-3bba55816bf5",
+			"@@@InProc at B0551A6C1D1E50CE2B2193AA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234492570, false, "bb6a2711-6a9a-4d1a-9a57-48bc91d74034",
+			"@@@InProc at FABB2E5A0D98BD2DA8CF3EA6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234499260, false, "fd4dc490-f314-4917-bfe3-654bd89c9984",
+			"@@@InProc at FABB2E5A0D98BD2DA8CF3EA6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234500260, false, "b780d0ff-6548-483d-aee7-a006ae058421",
+			"@@@InProc at C69E0628944F257D438FE08A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234501120, false, "fea04b48-443c-4449-8ac0-d4d71129369b",
+			"@@@InProc at C69E0628944F257D438FE08A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234502070, false, "e8ca1988-4cb4-45f1-8c7c-4edfef44f458",
+			"@@@InProc at C28089603CCA0571561635FA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234508460, false, "2e8acb30-07d7-43c3-a99a-32f4b8f29353",
+			"@@@InProc at C28089603CCA0571561635FA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234509520, false, "07d7c811-24c7-4f81-a423-46993d123d6e",
+			"@@@InProc at E7C0EA5A570B998DBFEDC4DE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234516690, false, "438b5e75-3df9-461c-a49e-a1b51fd41bdf",
+			"@@@InProc at E7C0EA5A570B998DBFEDC4DE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234517650, false, "e67c6344-cc1e-47c4-9ad6-2d235ac86164",
+			"@@@InProc at 56D6E850C9A660F85B46BD79", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234517890, false, "422c0c29-aa64-47cf-b4ba-7d89a72221d4",
+			"@@@InProc at 56D6E850C9A660F85B46BD79", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234519010, false, "69c2afc3-41f2-4292-a2a1-235372940f71",
+			"@@@InProc at C2394279F791F49D773A037D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234525860, false, "b4c1065f-4ece-4991-9452-a4c2f8ec24fa",
+			"@@@InProc at B06B769BB1F257436B85F5DA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234526790, false, "de4753be-4ed3-4b40-8f21-ea6a34d8c10a",
+			"@@@InProc at C2394279F791F49D773A037D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234526880, false, "0c3a3903-650c-4a43-9dab-b953ca09927d",
+			"@@@InProc at B06B769BB1F257436B85F5DA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234528150, false, "a29ab082-1ce7-4bd7-aa67-1da7661cf13f",
+			"@@@InProc at 0479CD8E7D215701698BD1DA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234535490, false, "c26f207e-5246-4d28-a668-609cff02ee5c",
+			"@@@InProc at 10996F11026DC093C88C8978", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234536470, false, "0542684a-b9c1-4ed9-8a93-884d039f0738",
+			"@@@InProc at 0479CD8E7D215701698BD1DA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234536550, false, "915856db-fb08-44ac-ab8f-542399a5d9e2",
+			"@@@InProc at 10996F11026DC093C88C8978", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234537910, false, "1d2d2b49-0156-49ba-b966-4f72ed01dfd1",
+			"@@@InProc at D565955ECF8EFAB9BB1FCE09", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234545740, false, "d6808b12-5529-47eb-9e99-62770b91f61e",
+			"@@@InProc at D565955ECF8EFAB9BB1FCE09", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234546570, false, "9e3b6d28-a4ca-4bae-ab89-7645b227743b",
+			"@@@InProc at 8BD63AFBD3582D2024122225", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234547390, false, "76f32237-9e57-441f-8f4b-f149a22cd78e",
+			"@@@InProc at 8BD63AFBD3582D2024122225", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234548230, false, "6e7fc871-d4a2-4ce4-a9b4-e2a1bd5c0fce",
+			"@@@InProc at B788A71FF6982B44470CAFD5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234554730, false, "a2cb3e47-31bd-44aa-ad4b-e88c4f881de2",
+			"@@@InProc at B788A71FF6982B44470CAFD5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234555910, false, "6a85cad9-6a59-4a49-8245-e363fdfa03c6",
+			"@@@InProc at D9876BF0001DD4D2FDA5ADC6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234557730, false, "d8c73e13-4629-4814-b167-8027bae30d15",
+			"@@@InProc at D9876BF0001DD4D2FDA5ADC6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234558810, false, "e221a9f4-4d88-4973-95d2-b28e697bdd30",
+			"@@@InProc at 63882030F8633503A018B138", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234565390, false, "b8d66bca-9276-4285-8e8f-6a730cd95829",
+			"@@@InProc at 63882030F8633503A018B138", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234566470, false, "5c0a4957-761e-461e-a54b-9352a5c08445",
+			"@@@InProc at A4F2A808EB810FC12D38C184", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234570290, false, "5b12ae33-bbd1-4410-a6e8-554c3abc14b0",
+			"@@@InProc at A4F2A808EB810FC12D38C184", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234571130, false, "8a755e10-7fb2-4c38-8297-5d299356a7d2",
+			"@@@InProc at DABA569C19EBA5F029DA19E3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234574720, false, "31c1b2d6-1f69-4aac-be17-7f9d6b16eef4",
+			"@@@InProc at DABA569C19EBA5F029DA19E3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234575620, false, "b63346ee-f621-4ef1-b12a-1b999c69546d",
+			"@@@InProc at 0321E00FD3950E4D04A18E00", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234579850, false, "55de92f3-8e35-4622-b857-60423ac12bdc",
+			"@@@InProc at 0321E00FD3950E4D04A18E00", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234580920, false, "a32995ed-2244-4dc0-a057-312754580ade",
+			"@@@InProc at BE96A9CC621365AB80DAF738", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234583750, false, "0aee4e1a-c328-498d-961a-fd3aa8b57131",
+			"@@@InProc at BE96A9CC621365AB80DAF738", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234584670, false, "0ccc8a99-652f-4cc6-add4-bbd88ed67e6e",
+			"@@@InProc at 0F67D86B922C099C5BA6CD83", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234590340, false, "54fc4b98-899d-4974-a63e-bc6c5d0ba583",
+			"@@@InProc at 0F67D86B922C099C5BA6CD83", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234591410, false, "f3732bc9-b2b3-4867-97c9-0f9db1a02454",
+			"@@@InProc at 6299744398716005584455F4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234593970, false, "b3fdbc0b-6c36-4bbe-b648-13870a333b9e",
+			"@@@InProc at 6299744398716005584455F4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234595190, false, "fada1eca-3cf4-407a-86cf-a35e0c01303e",
+			"@@@InProc at 1F880B26C738FB97603160B3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234600350, false, "70e9d9ab-705a-4228-b842-04a618d54a70",
+			"@@@InProc at 1F880B26C738FB97603160B3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234601170, false, "2b61e7df-2163-4948-bea5-141d0bdf0547",
+			"@@@InProc at 590B4907D067C36E3E528A14", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234604230, false, "29cdbedf-6fb9-41d4-ab18-d370a9d1da34",
+			"@@@InProc at 590B4907D067C36E3E528A14", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234605170, false, "dd1778da-9174-4c77-8797-60f5c6501e88",
+			"@@@InProc at 08BAD72AF00DDD7900ED7121", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234609490, false, "99d7c8d3-4410-445d-9496-e73afa7e2045",
+			"@@@InProc at 08BAD72AF00DDD7900ED7121", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234610730, false, "578a48d5-eefa-4e25-a75f-2fc0106fd647",
+			"@@@InProc at F204A041050D61F096CE948D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234616310, false, "6354dee8-794c-46ce-837b-a135a2943a06",
+			"@@@InProc at F204A041050D61F096CE948D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234617350, false, "2c7e057c-9383-4458-b738-c5cfcf7e761d",
+			"@@@InProc at 0BC6AFD69347410C3E5EDD2B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234622750, false, "fc9fc491-c62c-409f-b1bd-892b10242469",
+			"@@@InProc at 0BC6AFD69347410C3E5EDD2B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234623690, false, "986b1f8d-41a3-487c-a245-5d5563e95722",
+			"@@@InProc at C56582559690CB7B20FE6407", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234628240, false, "75330201-a6d9-409b-8743-41f3532494d1",
+			"@@@InProc at C56582559690CB7B20FE6407", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234629420, false, "b8546332-514b-4ccc-a009-6f3e317d4b60",
+			"@@@InProc at 86C8137AC434465526D74E68", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234632140, false, "2f2a6b20-661d-4c62-8864-dcee8c6b387f",
+			"@@@InProc at 86C8137AC434465526D74E68", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234633050, false, "1c98aa4b-7a11-47dc-89d0-37d32959c007",
+			"@@@InProc at 349AA748EC312F454949DFA6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234638340, false, "53b27248-f5d9-443b-901a-a814d68ab3af",
+			"@@@InProc at 349AA748EC312F454949DFA6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234639250, false, "9f3a9905-c58d-4cc9-9086-d87f32d9fe36",
+			"@@@InProc at 1E70DE8C925EF30022DACB9A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234641500, false, "649bb2b8-0d1d-410f-93fe-690fc3f63a37",
+			"@@@InProc at 1E70DE8C925EF30022DACB9A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234642500, false, "96fb36e1-35f6-4f69-a8f5-d7f68bfd4a40",
+			"@@@InProc at E658D2F9A9A7A8CEFB5470CE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234649060, false, "98a3bab9-751d-4baf-879d-5cfb435b333e",
+			"@@@InProc at E658D2F9A9A7A8CEFB5470CE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234650520, false, "ba86d4f8-030a-4458-8941-9456f36f5232",
+			"@@@InProc at 0365C909F974DA89A15E62BE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234654210, false, "0c6d5358-dac2-4886-909e-f6904f2d06c5",
+			"@@@InProc at 0365C909F974DA89A15E62BE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234655420, false, "9d3e543c-b3e2-4479-8441-ae556e0c555f",
+			"@@@InProc at 71526590109E960D80E74E58", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234659220, false, "fd28f60a-a98c-43ee-a489-0e2c26253030",
+			"@@@InProc at 71526590109E960D80E74E58", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234660230, false, "c8e91c05-b4f9-49c9-81cc-3917e8f69080",
+			"@@@InProc at CAE38C2C263039028D40C4F5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234664500, false, "62e9df22-ccc3-485a-805d-87cbe334d971",
+			"@@@InProc at CAE38C2C263039028D40C4F5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234665320, false, "f2de7a13-8b0a-4732-8974-c3b533b1302c",
+			"@@@InProc at 4321CDCA633707D6BB502402", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234668960, false, "28754026-f2b4-4b6a-abb4-a13d7afb71a1",
+			"@@@InProc at 4321CDCA633707D6BB502402", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234669770, false, "3a3d86bf-52a7-44a6-9b37-7b371db5ba46",
+			"@@@InProc at 70CEFF94811099DFCE800BF4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234673180, false, "055b8b40-d9b4-40a6-ae31-c628f0d984fd",
+			"@@@InProc at 70CEFF94811099DFCE800BF4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234675070, false, "3f39a4ae-3164-4fa7-9624-1db480de17a1",
+			"@@@InProc at 97CAB045BD65CACF15703853", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234679370, false, "4e0e5f9b-d3fd-4606-a138-8ccce8e835cc",
+			"@@@InProc at 97CAB045BD65CACF15703853", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234683910, false, "809c0c57-649f-4806-b567-ca62e20da4eb",
+			"@@@InProc at BE8838CFEE6EF1B1D7C3D970", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234686190, false, "6fc9cb9d-8621-4e3f-b2d6-fbce718d6b44",
+			"@@@InProc at BE8838CFEE6EF1B1D7C3D970", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234687880, false, "5bd6b854-782d-4eb0-b422-5daba3b75670",
+			"@@@InProc at BBA96EFC0C668AA9FBB69C4C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234693490, false, "186aadff-a0bc-45b3-8510-e519ea656e90",
+			"@@@InProc at BBA96EFC0C668AA9FBB69C4C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234694300, false, "d1191f23-2fbf-405c-9f6d-591f60ffa1c5",
+			"@@@InProc at 321CC1EDE3473849BB5E59AD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234696740, false, "4cf078bb-415d-421c-8f20-30a882d5b730",
+			"@@@InProc at 321CC1EDE3473849BB5E59AD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234697910, false, "01f265b5-4235-42a7-b027-a45548060d49",
+			"@@@InProc at 49581CFA515A9C228C209D5A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234702690, false, "bc8a0046-7f46-46e6-b625-4a5936ff5874",
+			"@@@InProc at 49581CFA515A9C228C209D5A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234703620, false, "79642007-401d-4bd2-a3a7-126f12b8c243",
+			"@@@InProc at 03C707643A09171AE9976D20", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234706160, false, "c303b456-4614-44c6-8584-2fad7a6c26a1",
+			"@@@InProc at 03C707643A09171AE9976D20", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234707290, false, "72f8d2e6-36e9-417a-9802-d8e4bf08b752",
+			"@@@InProc at 6C2A1195C780F3CA716D9E59", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234711510, false, "2732177e-0f1b-414f-bd2e-28e7ac6f55b3",
+			"@@@InProc at 6C2A1195C780F3CA716D9E59", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234712320, false, "e7c603be-445c-41e4-a303-81af81f663df",
+			"@@@InProc at F4423B5D8C6C063A17DC2B92", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234715440, false, "34a097a9-9c8c-425e-97ea-5b0be4e1fc5e",
+			"@@@InProc at F4423B5D8C6C063A17DC2B92", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234716390, false, "82809e8a-314d-488f-8264-0dd992c56d39",
+			"@@@InProc at FD3E9D3AEA5A9B65DCED117F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234721110, false, "89999cca-ff90-4b27-a568-599617de7f8d",
+			"@@@InProc at FD3E9D3AEA5A9B65DCED117F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234722030, false, "0bdf8870-f899-4eeb-be99-572690948b2b",
+			"@@@InProc at 7C3796E0DEF5259B8FFB381A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234724790, false, "5abe10e2-423c-467e-8c42-1d800e8592b0",
+			"@@@InProc at 7C3796E0DEF5259B8FFB381A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234725920, false, "b0715e4b-f2f5-4407-af90-4bd46dc67323",
+			"@@@InProc at 5DDB348536737AFE8543EC88", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234730200, false, "1e37d771-a565-4a30-9dd4-991f236d761a",
+			"@@@InProc at 5DDB348536737AFE8543EC88", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234731110, false, "19bcc578-8fe3-48ee-a596-117c0a5b11ae",
+			"@@@InProc at D5796B0006DB081F4A444E3F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234733610, false, "6ccc6ed5-63fb-499f-afe0-12e1d4bee198",
+			"@@@InProc at D5796B0006DB081F4A444E3F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234734400, false, "c4d56473-0654-40f5-9aaf-f8846085f189",
+			"@@@InProc at 2F6824991451DCA51ACABE2E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234738750, false, "cb10c377-3a36-4aa5-a0b1-26665dafa924",
+			"@@@InProc at 2F6824991451DCA51ACABE2E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234739730, false, "7b9e05d4-5511-4255-9079-bf19d07911c0",
+			"@@@InProc at 94157F5369777A772563AC82", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234741930, false, "6e0cec2b-3ee0-4ffd-97be-b4c5e518fcd2",
+			"@@@InProc at 94157F5369777A772563AC82", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234742840, false, "de058fb5-65c2-49ba-834c-ce2b58c25bf7",
+			"@@@InProc at 2558024F4F20EA7404F3EAD3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234748670, false, "f7b735d6-9c03-4e5f-bf72-9993daf7338f",
+			"@@@InProc at 2558024F4F20EA7404F3EAD3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234749630, false, "d40009a3-6243-4b19-bd81-8794f23cf9d3",
+			"@@@InProc at D69E5515C283D816BC80D490", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234752650, false, "c6843ca7-3198-44c1-9ec7-92aa6f17c70a",
+			"@@@InProc at D69E5515C283D816BC80D490", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234753870, false, "1e4af71c-2f47-4d13-8bf8-1a3ac9918704",
+			"@@@InProc at AD1F5C530013FD4BEFFD0074", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234758060, false, "ae38d91e-a458-4afc-bfd4-df2463e72022",
+			"@@@InProc at AD1F5C530013FD4BEFFD0074", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234758990, false, "5eb2f890-89f2-4a30-96b4-b6f0deedb35b",
+			"@@@InProc at 8CAF2BE2DE1D2ED135D09005", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234761880, false, "32e8624c-824b-4e13-b2ae-9f6796cec743",
+			"@@@InProc at 8CAF2BE2DE1D2ED135D09005", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234762860, false, "b7cabd7c-f296-4592-b95b-121a31cbf590",
+			"@@@InProc at 7BAD7C8D9E9C6EFBE63F68C6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234767080, false, "453e734a-7e71-4e68-9136-d08931083983",
+			"@@@InProc at 7BAD7C8D9E9C6EFBE63F68C6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234767900, false, "0b567079-6442-4423-b777-bb0995300f88",
+			"@@@InProc at DC3BF5E956F712BDEEF41B1C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234770590, false, "6045c6fb-9ff8-4b58-a63c-438890243f13",
+			"@@@InProc at DC3BF5E956F712BDEEF41B1C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234771610, false, "cdfaafed-3241-4866-b42f-261399632db7",
+			"@@@InProc at E808A073758C0B33D137DDD0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234776280, false, "d3dd7da1-6523-40ca-9e95-5a8fda834a8d",
+			"@@@InProc at E808A073758C0B33D137DDD0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234777080, false, "64b98143-8845-4abb-849f-53e9ad05ee52",
+			"@@@InProc at C18E4D00EDB67FC4BD163DE1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234779420, false, "4f5de744-2fd0-4adb-bd32-509bc60b3cce",
+			"@@@InProc at C18E4D00EDB67FC4BD163DE1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234780400, false, "dea5514b-de2b-4a8d-9fd7-92c72c8d08da",
+			"@@@InProc at 32B673166FC4590F205126A4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234784770, false, "0bae1a2a-e197-415d-a2f7-8bf91c61f39c",
+			"@@@InProc at 32B673166FC4590F205126A4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234785710, false, "9e912ff1-c109-466c-9897-3859bd9277d4",
+			"@@@InProc at FD93087EC726D01103317B7C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234788570, false, "da9db4f4-8c9a-4103-8ceb-fcd69ba47994",
+			"@@@InProc at FD93087EC726D01103317B7C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234789520, false, "4706380e-ed15-408e-9a6f-f7c429b63c46",
+			"@@@InProc at FA4DFC39B8C74031AF05E888", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234793640, false, "50b283b1-c7d0-45f8-8ec4-d806988f6219",
+			"@@@InProc at FA4DFC39B8C74031AF05E888", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234794460, false, "3dd0cf0d-a4a8-47ea-a609-c01e8dd3fae9",
+			"@@@InProc at ED95A83FFE373C93070695AB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234797380, false, "fc4e04c7-f37f-4bae-b2fe-0160c7bcafbb",
+			"@@@InProc at ED95A83FFE373C93070695AB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234798250, false, "ffc718e4-b493-4d0d-b318-1b7dcdb515f9",
+			"@@@InProc at CEFA173A108E30C1F9422766", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234802180, false, "9456be96-ea58-4ce9-82a7-deb540d6b4bb",
+			"@@@InProc at CEFA173A108E30C1F9422766", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234802980, false, "a3dca6cf-3451-4099-b5b3-675ed76fc66f",
+			"@@@InProc at D53247B574B58291D2DF3BF6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234806260, false, "6aa57c61-f9ea-4a67-909b-88a615b88bcc",
+			"@@@InProc at D53247B574B58291D2DF3BF6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234807050, false, "5a08d961-41ac-4f16-b8cd-749bad73b0bc",
+			"@@@InProc at EA425D99D13974CF60EB5651", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234810930, false, "119bfcb6-63f8-4176-9358-cdd5d458999c",
+			"@@@InProc at EA425D99D13974CF60EB5651", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234811840, false, "fbb3bbcc-ebd3-45f1-b84a-372f72307895",
+			"@@@InProc at 764AC0E973129052974AE8E3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234814860, false, "477ad103-ac84-4c1c-9703-4e0261b30f5f",
+			"@@@InProc at 764AC0E973129052974AE8E3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234815700, false, "5ca13e6b-5f4b-4e10-bd2e-0c0a3bced9df",
+			"@@@InProc at BD610C7BFE89BBFAA1C8935D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234845870, false, "601da87e-2ceb-4dcb-b0a1-e26842524190",
+			"@@@InProc at BD610C7BFE89BBFAA1C8935D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234846680, false, "1b27616e-e4e0-426e-8d20-0d4a0087b688",
+			"@@@InProc at 15C26C66587A6739C35D0269", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234850400, false, "3aed1507-6c6c-442b-8896-828e1e67823f",
+			"@@@InProc at 15C26C66587A6739C35D0269", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234851470, false, "dc0208af-23d7-44f8-92a4-7371ca49ef9c",
+			"@@@InProc at CD0A59A3DD2CA6922045764C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234857390, false, "9bbfab5a-2595-4a04-8552-6866a3402e2d",
+			"@@@InProc at CD0A59A3DD2CA6922045764C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234858620, false, "a6cda210-d59e-4d4a-8746-6d21e773187a",
+			"@@@InProc at 16078836A072461C9935EAE7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234862040, false, "a8c9407d-153c-4748-bea8-93dc5723fad3",
+			"@@@InProc at 16078836A072461C9935EAE7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234863300, false, "72d88d1e-d40f-4746-a791-f16c0ba71d88",
+			"@@@InProc at C86DA584C807E5B52BCE4AA0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234867410, false, "989fc7fc-cbdf-4eba-aac8-eb299a422d07",
+			"@@@InProc at C86DA584C807E5B52BCE4AA0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234868340, false, "3baf572d-b5f9-451c-b26f-9f224935dab5",
+			"@@@InProc at 43840280007DEC119999FC25", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234871950, false, "430ba15a-efe9-4d6d-a8e4-abf83ef52ac3",
+			"@@@InProc at 43840280007DEC119999FC25", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234872810, false, "7005a5b4-81c3-4736-bb62-2c0f25a8cd86",
+			"@@@InProc at A29625700DD160827DDC8381", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234876650, false, "d1c87aad-fb40-49e0-afc8-429a96589c08",
+			"@@@InProc at A29625700DD160827DDC8381", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234877640, false, "e90aa3b2-091d-445f-a7b9-ecaf85693ced",
+			"@@@InProc at 7186F921C937A22D4EEF30DF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234881720, false, "426d9bb6-562e-4b7c-803a-9f926d28b7f9",
+			"@@@InProc at 7186F921C937A22D4EEF30DF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234882790, false, "55a0bf13-36e5-4edd-b71e-5f0708ff9c39",
+			"@@@InProc at 8AF8991677F058DC43A788AB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234885720, false, "77ca1ece-be0e-4cb3-829e-da85e0e97878",
+			"@@@InProc at 8AF8991677F058DC43A788AB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234886690, false, "93ce7af8-6fb9-4477-82eb-1370a8a7c384",
+			"@@@InProc at 582B6C52F6747B9F5A090BFA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234892190, false, "3c30f4fc-def0-4457-b0b5-2b67273831bc",
+			"@@@InProc at 582B6C52F6747B9F5A090BFA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234893360, false, "c37863ad-33e9-444d-a201-c0df0ab0b24f",
+			"@@@InProc at 7ABEFBBEDECCE2EDFEEFB022", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234894700, false, "2ac25658-86c5-4bb2-b9fc-e62b28328e37",
+			"@@@InProc at 7ABEFBBEDECCE2EDFEEFB022", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234895510, false, "5df73588-d6b3-4574-9301-1552ff36cd72",
+			"@@@InProc at 5D4EE4C70C7876FFA60BFC58", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234901650, false, "e130dc78-2d88-4c00-9a30-8e0acce03bf1",
+			"@@@InProc at 5D4EE4C70C7876FFA60BFC58", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234902500, false, "96288aa3-92b4-44f2-a510-aa3fa17547f8",
+			"@@@InProc at 8BA30F26B547E7318DDF245D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234903380, false, "3562dd35-6f45-49b7-a7e6-5557ecc79054",
+			"@@@InProc at 8BA30F26B547E7318DDF245D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234904180, false, "e132d23b-6620-4f00-904d-369bf435387b",
+			"@@@InProc at BC0C2A13AA4A897386F9DEC3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234911350, false, "f60110bf-f7e1-4d9b-87f9-ce242ff7bd46",
+			"@@@InProc at BC0C2A13AA4A897386F9DEC3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234912450, false, "eb623af0-ff8b-48da-be17-048233cf134e",
+			"@@@InProc at BBE5D2FD1ED08C4F82226E43", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234912580, false, "9d6cabc5-a53c-4849-83d2-c6a400fef2ed",
+			"@@@InProc at BBE5D2FD1ED08C4F82226E43", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234914020, false, "967c106f-bac6-4e5f-9130-0cb6297ee45f",
+			"@@@InProc at 30059B7755B9D61220C904E1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234922580, false, "54cd650a-19c2-4f60-8c3b-e3521e427877",
+			"@@@InProc at 30059B7755B9D61220C904E1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234923850, false, "bdf4ac87-dc99-4794-bfe9-401c1a857335",
+			"@@@InProc at 50085169128E608C7B9086B1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234923950, false, "40188065-e704-43f6-af9b-cc5d0052083f",
+			"@@@InProc at 50085169128E608C7B9086B1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234925720, false, "5215b07e-b55a-4355-8ef3-9d5043083180",
+			"@@@InProc at 1E4E5422F599E2D5DE98BD7E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234934050, false, "826ffd55-4a7e-418a-848a-e8adf5e5618e",
+			"@@@InProc at 1E4E5422F599E2D5DE98BD7E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234935290, false, "062438c4-62f5-4e5f-b5a4-d05185bd9af8",
+			"@@@InProc at FF2A8E415F4668E52FB7B92A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234936420, false, "77d9304c-10b3-49cc-b359-c378b27ee459",
+			"@@@InProc at FF2A8E415F4668E52FB7B92A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234937550, false, "7d4626f6-4074-4d11-b902-6b15c913d758",
+			"@@@InProc at 127F40C428C690C61D0E65C3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234943830, false, "80866130-bc83-4ba2-9b5d-424cb48a0fad",
+			"@@@InProc at 127F40C428C690C61D0E65C3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234945550, false, "b67633ea-65bf-45e4-8608-4fb3de7c65a6",
+			"@@@InProc at DC9F0836509F2DD8165060A1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234946840, false, "d2e65120-b456-4ac9-b309-8012a3ca1bbc",
+			"@@@InProc at DC9F0836509F2DD8165060A1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234947740, false, "111e356f-92e0-4a43-9375-8faa7d025b1b",
+			"@@@InProc at FB816925F1D4C8606DE13EE2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234954420, false, "62c9fc62-82fa-45e7-b737-27f987f3737b",
+			"@@@InProc at FB816925F1D4C8606DE13EE2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234955380, false, "d5f7a61c-fd9d-4c98-a832-89e47d319ffb",
+			"@@@InProc at F5A912085DE8D035A0C5A666", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234956470, false, "d053405e-8347-478c-a3f6-d17fc13cffe9",
+			"@@@InProc at F5A912085DE8D035A0C5A666", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234957360, false, "792ad733-7b6c-4b46-8b89-16ff8bd6d3ec",
+			"@@@InProc at C83C81F017EEC46C07D7E8E5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234963520, false, "bb4645cd-eaf6-4f05-b79f-172f3cdcc9b3",
+			"@@@InProc at C83C81F017EEC46C07D7E8E5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234964330, false, "193e6439-cfa5-4660-b841-bd0f41298d0c",
+			"@@@InProc at 7806BEA73E0A805980CE6CB0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234965160, false, "42e54416-2e14-426a-9e58-c082602ba9ed",
+			"@@@InProc at 7806BEA73E0A805980CE6CB0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234966040, false, "20d7adf1-8302-4e5f-b2cc-04b7bb440134",
+			"@@@InProc at 2B07FA1D872840C4961F2EBB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234972370, false, "ceac2d60-82da-4cbe-8131-4dea37adcb1e",
+			"@@@InProc at 2B07FA1D872840C4961F2EBB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234973760, false, "dc90ad48-3e22-4c52-95d7-c51dc06037a4",
+			"@@@InProc at 7C9C6D5967CACFBA421157C0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234975790, false, "6e5b509d-d15b-4e94-84c2-80964533a1ae",
+			"@@@InProc at 7C9C6D5967CACFBA421157C0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234976720, false, "34cd4c72-bef0-4c44-9f5f-3969bdabc850",
+			"@@@InProc at 7C717AFD3D4F1955EADBB7D8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234984220, false, "ea0cacd9-6c1f-468f-ac59-2672b40e1aef",
+			"@@@InProc at 7C717AFD3D4F1955EADBB7D8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234985280, false, "470f7740-9c1b-4243-b4d9-796fafc5f81f",
+			"@@@InProc at FEFF17BA49958AF0D3D3B3C9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234986800, false, "a31a5dc1-5ea4-43d7-abf7-71dae2d263c1",
+			"@@@InProc at FEFF17BA49958AF0D3D3B3C9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234987620, false, "a8a11cd4-6492-422f-baa6-ef359723b85a",
+			"@@@InProc at 13AC40EF16F29AA0315213BE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234993780, false, "6da72e6f-d9e6-4622-af6d-3d7407797127",
+			"@@@InProc at 13AC40EF16F29AA0315213BE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234994870, false, "5335b892-7d74-41b5-8e43-d0be40734599",
+			"@@@InProc at 347B455B557053099F409B31", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234996850, false, "3028a83c-ffdb-4a22-b7ba-2b3f5b69aa59",
+			"@@@InProc at 347B455B557053099F409B31", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878234997690, false, "84bc8a8d-cb73-4f7a-9bf1-6d4d002b0fb9",
+			"@@@InProc at ABF3F07ACC987E6BB7E6B9D7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235003980, false, "97073649-9910-4c20-8e61-e40108f68e68",
+			"@@@InProc at ABF3F07ACC987E6BB7E6B9D7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235005120, false, "1d28628c-e5f2-4590-86be-db0cdce49535",
+			"@@@InProc at EE81A876E5E17596E1185D66", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235006900, false, "19aaae86-0edc-4ebe-8a82-db36c963c827",
+			"@@@InProc at EE81A876E5E17596E1185D66", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235007720, false, "e3fc5ffc-5728-47a6-8be2-5da5c958cefe",
+			"@@@InProc at FCD30965CBF30DA033B48508", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235013670, false, "cf7fd6eb-94a0-4224-a9dd-162e671357b9",
+			"@@@InProc at FCD30965CBF30DA033B48508", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235014770, false, "cc825996-fe42-4787-aec1-25b5e2435fa6",
+			"@@@InProc at 01C7115CE6F467304D7ADA12", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235016350, false, "e815978d-e3a0-4979-8ad2-4d4c642113a9",
+			"@@@InProc at 01C7115CE6F467304D7ADA12", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235017430, false, "51cf7284-d49a-4512-a2a1-41e326a685a8",
+			"@@@InProc at C1B9843A0A5C6999F22374B3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235022670, false, "ad2a2230-bc08-4337-86c9-fe605e7ac5df",
+			"@@@InProc at C1B9843A0A5C6999F22374B3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235023460, false, "03b8b0a3-2848-4e6a-86f7-2c900071410f",
+			"@@@InProc at 2F20EE529F455D4086F5B953", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235025710, false, "2ea1e145-3aa3-4d82-8db5-8bb24dd6c215",
+			"@@@InProc at 2F20EE529F455D4086F5B953", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235026660, false, "ae59aeb5-1892-4f60-8fa3-81adff7bc9c8",
+			"@@@InProc at CAF702FE70E125E1540156FE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235032230, false, "ff80336a-4cc6-45e7-833c-ac8356ba0771",
+			"@@@InProc at CAF702FE70E125E1540156FE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235033090, false, "4ad04baf-a96a-4bf8-8495-290c2b356820",
+			"@@@InProc at 4B08AD1279872B888BC0AA14", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235035930, false, "4c990d9e-4ccb-42ea-8359-ece6ac0598e4",
+			"@@@InProc at 4B08AD1279872B888BC0AA14", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235036950, false, "762b3ffe-365d-4937-ac8d-70cea809c4d7",
+			"@@@InProc at EDA9D1DB46A9A0B4EF991A6C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235041270, false, "5a03083b-0a18-4661-a7ee-020a50fd41ff",
+			"@@@InProc at EDA9D1DB46A9A0B4EF991A6C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235042260, false, "b7842920-2641-4fe3-bd1d-abe51990ec6f",
+			"@@@InProc at BE97EA59607B326D9896A835", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235045100, false, "9e3c4844-d1ed-4559-89cf-5cf662545159",
+			"@@@InProc at BE97EA59607B326D9896A835", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235046200, false, "2859ce0a-5445-4925-a44a-ffae4104698c",
+			"@@@InProc at 17167B871507EE55B6FBA87B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235050950, false, "6770325d-4ad6-4b40-b67f-3c43b8bc05da",
+			"@@@InProc at 17167B871507EE55B6FBA87B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235051940, false, "9d4c7121-7394-40a1-9fb4-6998236f0b16",
+			"@@@InProc at 978C7D6D8178A98C36C6EFB2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235054640, false, "b51cb525-7d11-42f0-a88c-8a102793eec5",
+			"@@@InProc at 978C7D6D8178A98C36C6EFB2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235055670, false, "62cde540-6bbd-42d1-b5e7-c9bb955a72b7",
+			"@@@InProc at B781A677D9AC5C745064E208", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235062440, false, "d2c53566-ab65-4037-8b69-29997360b2fa",
+			"@@@InProc at B781A677D9AC5C745064E208", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235063870, false, "8c046af4-e008-4875-a818-65f9202c3bcc",
+			"@@@InProc at B488DB5D589B5C9425744AD5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235066170, false, "7ed65ee5-3093-4b68-b80a-23fc3cb654da",
+			"@@@InProc at B488DB5D589B5C9425744AD5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235067400, false, "8bedcd0e-5695-4faa-b9af-432bd340c6ec",
+			"@@@InProc at 74C30C0881435BEA30796F18", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235072480, false, "5b55f2e4-6cb8-4253-bc6b-e73988e2b2d0",
+			"@@@InProc at 74C30C0881435BEA30796F18", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235073290, false, "a19e8ae0-d258-4dff-84d3-327786e0dd16",
+			"@@@InProc at 0415DDF9A4159BA2C6A8F892", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235075980, false, "55c9877e-dd37-4333-8840-64897109f944",
+			"@@@InProc at 0415DDF9A4159BA2C6A8F892", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235077110, false, "b5e81753-fca3-4466-805c-60ee70c3b3e2",
+			"@@@InProc at 856964FEABAE4F4E13803AF5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235082510, false, "06af868d-9b89-47df-bce0-479dc57ad6e8",
+			"@@@InProc at 856964FEABAE4F4E13803AF5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235083690, false, "b0a9f132-8e0d-4856-b7a9-04560a44c70b",
+			"@@@InProc at E9953DC9FADB5B231B666BDD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235087160, false, "8a60e026-c4dd-4903-83f5-8885f7899937",
+			"@@@InProc at E9953DC9FADB5B231B666BDD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235088160, false, "dcff30d0-1d38-48fe-b5c8-38de3b11fb72",
+			"@@@InProc at 5B334E26868F3BAEB0D5FC8B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235092170, false, "7284681d-8361-4854-9122-066dbe14458d",
+			"@@@InProc at 5B334E26868F3BAEB0D5FC8B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235092990, false, "5b3106cc-aabc-4143-b762-5a3b2126b18a",
+			"@@@InProc at A28203F8A23AEB70267B45DF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235099710, false, "a4a11b47-9760-4ddf-ad1a-24b1d1f2ea40",
+			"@@@InProc at A28203F8A23AEB70267B45DF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235100530, false, "83610df6-8711-477e-99ef-a288ffd9d77c",
+			"@@@InProc at 94393CA0B1AF656940D8AA87", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235102910, false, "b4057bc9-1766-4e23-a040-12df278e42f3",
+			"@@@InProc at 94393CA0B1AF656940D8AA87", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235103880, false, "ca264e12-ebc1-4d83-9c43-13295370e782",
+			"@@@InProc at 968C4341FA5392F8E7453382", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235109200, false, "3f111d1e-85e0-4ae2-a254-4977cbccb5ea",
+			"@@@InProc at 968C4341FA5392F8E7453382", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235110000, false, "21bd50fe-3f44-4b6c-9777-96cdce9a1ace",
+			"@@@InProc at 0D718D1F577FBC9A50A6FDC3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235113820, false, "1a3c39df-2571-4736-bbe3-f2fae4788a23",
+			"@@@InProc at 0D718D1F577FBC9A50A6FDC3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235115050, false, "76b34bbc-adc9-46c4-8882-1b236e19a9a2",
+			"@@@InProc at 0DDBEE611073DBBB4E707D9D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235118260, false, "4ed6f1ad-39f0-4cfd-9271-a99f2fa6e5cb",
+			"@@@InProc at 0DDBEE611073DBBB4E707D9D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235119630, false, "56346021-f643-42f5-ae6e-0234173e127b",
+			"@@@InProc at 9FED3760ED8E0580F9A87EFE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235125010, false, "d87e2b21-fc1a-45e6-940e-c0742c9ab033",
+			"@@@InProc at 9FED3760ED8E0580F9A87EFE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235125810, false, "c30124c3-a4ce-4e0f-ae62-8cfb25a91717",
+			"@@@InProc at D5F8E07C726F50318ABEA7C2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235128180, false, "b34b6ef0-0bbf-4eae-861e-4cf569dee7b0",
+			"@@@InProc at D5F8E07C726F50318ABEA7C2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235128980, false, "00d82b6b-265e-4a43-bb11-a20d6f56f9c9",
+			"@@@InProc at 2A4E7198E7183EA0CD2B9143", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235133910, false, "1b4c3830-3bbf-4633-999a-a88bf71511c4",
+			"@@@InProc at 2A4E7198E7183EA0CD2B9143", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235134810, false, "3d5b8475-c6ef-4bcb-ad33-661fab2c5dc3",
+			"@@@InProc at D4AB8B1C829BDD5772196561", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235137810, false, "b4aeac31-cba2-4049-9565-54c4a3097241",
+			"@@@InProc at D4AB8B1C829BDD5772196561", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235138910, false, "42374baf-a0ce-4176-934a-ccce074e09b7",
+			"@@@InProc at 9B22040724FA562D03535928", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235144830, false, "d489b228-307a-4858-a37f-61fecfd286d8",
+			"@@@InProc at 9B22040724FA562D03535928", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235146350, false, "ae00ccaf-8c82-4843-813d-27711a095b7b",
+			"@@@InProc at 6EA21A1C247C8915F376B9BA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235148250, false, "d2638b8a-3821-4ab1-8e05-e7f937e422d8",
+			"@@@InProc at 6EA21A1C247C8915F376B9BA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235149450, false, "c9b00107-b4ed-404d-a9ca-1060feab40cf",
+			"@@@InProc at 032CA1E117F7BF0438CBA0B4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235159610, false, "2488c6dc-8447-4058-aede-2b2feba4de76",
+			"@@@InProc at 6DA71F18BE147F062A765519", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235161480, false, "de09104c-7d05-42c5-b0cb-d39d9a393994",
+			"@@@InProc at 032CA1E117F7BF0438CBA0B4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235161860, false, "63f33bce-f676-44e0-944d-4c43fa9f1d9d",
+			"@@@InProc at 6DA71F18BE147F062A765519", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235163560, false, "34ccfd1a-97ad-40df-bebc-edf86a4a648e",
+			"@@@InProc at 8E1E38FE93513873A6162637", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235170050, false, "91c891b6-4b52-4b58-8cbb-6ce7e11e90cc",
+			"@@@InProc at 8E1E38FE93513873A6162637", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235171200, false, "b23adbdb-5caf-4443-bf7f-7ed5cf6960dc",
+			"@@@InProc at 37CA8560BECDCCE1273FD202", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235173220, false, "a47468a3-386a-4a08-9106-51d7b404fca6",
+			"@@@InProc at 37CA8560BECDCCE1273FD202", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235174940, false, "ce0c49ec-a398-4708-9a48-045f6cfe36b4",
+			"@@@InProc at F6A4BBC196BD40FBEBB73EB3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235179220, false, "21ce3792-9b7d-4513-96f6-4b5802d387d8",
+			"@@@InProc at F6A4BBC196BD40FBEBB73EB3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235180030, false, "a43083c7-b808-43fc-ad3c-b6c836a3cf5f",
+			"@@@InProc at BFD02AA64A839DCAB900E0A2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235183700, false, "fd0ed1e3-a8ac-4db3-ae83-9bf2bf46b570",
+			"@@@InProc at BFD02AA64A839DCAB900E0A2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235184600, false, "568cad8b-1a6c-4a6c-a078-a4c91f07337f",
+			"@@@InProc at 7BEDEB24DE0E5BB4036EC314", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235187700, false, "323335f0-c57e-439a-bd62-946baf95427b",
+			"@@@InProc at 7BEDEB24DE0E5BB4036EC314", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235188530, false, "e1f58c76-27cd-458b-a2b7-8f1d0b71de33",
+			"@@@InProc at 96A1ADBFBB28F8E52D2F0F53", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235192340, false, "3695372f-1849-427c-ba56-961ef842a5a7",
+			"@@@InProc at 96A1ADBFBB28F8E52D2F0F53", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235193210, false, "6cad2c27-a51c-4a71-93eb-74e242cecc21",
+			"@@@InProc at 69F2C199B2B3B4DC69D08FFD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235196210, false, "19f29417-0355-41ef-9fc3-e65999729d88",
+			"@@@InProc at 69F2C199B2B3B4DC69D08FFD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235197050, false, "95911c7a-1017-4e90-8ac1-2cfc54439fab",
+			"@@@InProc at E37CD509E71A90DBBBE79AEC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235202960, false, "83aceade-8f31-45ed-b90d-14f83ddc4591",
+			"@@@InProc at E37CD509E71A90DBBBE79AEC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235204250, false, "9466aefb-81d9-494f-aec2-8b8795e60ce8",
+			"@@@InProc at 02F6A46486E4443E76A06D0F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235205670, false, "5d64b853-afb4-4530-9918-dca3c401dad4",
+			"@@@InProc at 02F6A46486E4443E76A06D0F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235206480, false, "7c8e8d96-204d-4c46-a14f-8580b0eab899",
+			"@@@InProc at FD2512F450ED94502CCD27B8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235213080, false, "5245c905-fe3f-439f-b160-6ec817c57d00",
+			"@@@InProc at FD2512F450ED94502CCD27B8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235213920, false, "b7b50a90-3646-4eeb-8276-51a565bfd739",
+			"@@@InProc at 578AD25FFE38FF1348EBD264", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235214260, false, "97088501-9e8d-416c-bd87-11dc544964c7",
+			"@@@InProc at 578AD25FFE38FF1348EBD264", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235215310, false, "44ed6756-f548-4dc8-8962-7939b901a4a3",
+			"@@@InProc at 959ECD9329EA07E8BDFB4E12", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235222180, false, "01a8b7ae-4a91-465f-8ee7-05c5feb081db",
+			"@@@InProc at 959ECD9329EA07E8BDFB4E12", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235222980, false, "d571c56b-474d-464b-b116-6348e9b1c913",
+			"@@@InProc at E47AC0DF3FE6DBF2FF0F288F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235223800, false, "857c5c93-63a5-4c2e-a8c8-d6dc1aaf347f",
+			"@@@InProc at E47AC0DF3FE6DBF2FF0F288F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235224710, false, "b3a57569-9705-4714-8a83-17ce79b4c2ff",
+			"@@@InProc at 9590984B784FD9339CBE681B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235230910, false, "682e7b82-0e31-42c2-8aee-c57a6d3cc950",
+			"@@@InProc at 9590984B784FD9339CBE681B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235231840, false, "4c13d3f5-5cdf-4785-bba3-cfb1994f3513",
+			"@@@InProc at 0375758E6D62D95F3FE3D6AB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235233070, false, "7c977cbd-2928-4dad-b019-157f779b893b",
+			"@@@InProc at 0375758E6D62D95F3FE3D6AB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235233960, false, "b4616544-dc45-417e-9b1e-bf249c4ce133",
+			"@@@InProc at A7F7CC799BC6CF6F8D0E7444", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235240180, false, "9ebedb38-c940-436e-987a-7a75f67e14f1",
+			"@@@InProc at A7F7CC799BC6CF6F8D0E7444", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235241100, false, "1b9e37b7-2d36-4248-8b9e-158c724db8f6",
+			"@@@InProc at E39B4E370FA9D1C32754E011", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235243450, false, "02cbdb48-319a-4e92-a165-e798cd2e8ae6",
+			"@@@InProc at E39B4E370FA9D1C32754E011", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235244550, false, "2d8a0f2a-3705-402c-9105-fd35b15751ee",
+			"@@@InProc at 4E4B303C6C2CF4E9BBFD22A0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235248750, false, "562e5387-4d11-4525-8319-fcb228b5f53d",
+			"@@@InProc at 4E4B303C6C2CF4E9BBFD22A0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235249670, false, "741a3220-d4dd-4654-93c6-5262c59d6164",
+			"@@@InProc at C41272665C6889FB16CA6A76", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235254390, false, "16afd25f-0129-4413-b081-e5aca1d9768f",
+			"@@@InProc at C41272665C6889FB16CA6A76", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235255200, false, "e8861e2d-515c-4028-aef8-b4500c13b308",
+			"@@@InProc at F11274BFDC17AF248085BE04", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235257560, false, "cb1cc603-915c-46fb-9ec1-f0668bf5ed7d",
+			"@@@InProc at F11274BFDC17AF248085BE04", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235258360, false, "68dba7c2-920f-48ea-a30d-c6a1c4499fde",
+			"@@@InProc at 351F9D06534B23F14777FC8A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235265580, false, "a4502d9c-295a-4572-a7e7-75799e25ac73",
+			"@@@InProc at EDC0A54505C07B14851FE7F5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235266840, false, "78d8ead7-6f57-43e3-bb2b-013ba7bf60db",
+			"@@@InProc at 351F9D06534B23F14777FC8A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235267050, false, "91e06de2-9697-4cf3-866f-423d905a567a",
+			"@@@InProc at EDC0A54505C07B14851FE7F5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235268770, false, "d65567f2-147b-4829-9e10-7f50a8c8d415",
+			"@@@InProc at 59C2B0F25FEDBAB1BF6A0797", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235301370, false, "56627fef-2d30-4bdc-93f8-34d441837952",
+			"@@@InProc at 5143DE52B12C249C39F3A14D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235302290, false, "2140f95f-0211-4e07-b00b-a0351a02645b",
+			"@@@InProc at 59C2B0F25FEDBAB1BF6A0797", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235302360, false, "47851d6a-fc97-4b65-a61b-8da4b809e386",
+			"@@@InProc at 5143DE52B12C249C39F3A14D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235303750, false, "dc7c8201-5d94-44c8-b05d-dc6c9132964f",
+			"@@@InProc at A03D965634D408D41F4444E0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235311070, false, "a9d056bb-7551-478f-af25-cbb537ebad5a",
+			"@@@InProc at BD4109E866699D5432A7412E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235312100, false, "45280810-37b0-45df-94c9-e2b9a8d0e772",
+			"@@@InProc at A03D965634D408D41F4444E0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235312190, false, "bd247486-6d45-4a65-b1ff-61d1a04ec1c5",
+			"@@@InProc at BD4109E866699D5432A7412E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235313560, false, "5d3d6580-979c-4001-b9da-45b63ff33a70",
+			"@@@InProc at 4B34E0A6AD2C1B6B9DF35958", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235320620, false, "67cb34d2-a89f-4e9d-9f01-e687feceeea5",
+			"@@@InProc at 32BDC5D39C9896230E22088D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235321850, false, "80ced8d9-a23f-43eb-ad25-60b9e8281bda",
+			"@@@InProc at 4B34E0A6AD2C1B6B9DF35958", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235321980, false, "c18e0340-576d-40be-ae93-ab0fe3316399",
+			"@@@InProc at 32BDC5D39C9896230E22088D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235323530, false, "e1361333-e3ed-485e-8e9d-52e2084621d8",
+			"@@@InProc at 1EDBB4F235959E0FC12A3B99", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235330350, false, "a83d9d5a-76dc-4bbd-8ff7-6796f9af4ed2",
+			"@@@InProc at 1EDBB4F235959E0FC12A3B99", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235331160, false, "b4b6f8f1-e0bc-4fda-8c13-467f6f185278",
+			"@@@InProc at 3EDDC60C91A9A21090DB47A4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235331470, false, "f4f165f3-a5d2-4aac-aed2-3b02b226f589",
+			"@@@InProc at 3EDDC60C91A9A21090DB47A4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235332930, false, "d89e533b-74fe-4720-84a4-bc8471c933d5",
+			"@@@InProc at BD0C45F45C80F82D23CBCD4C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235339270, false, "cdeb2f97-aa97-4ef0-95f3-a1f527e6f0c9",
+			"@@@InProc at BD0C45F45C80F82D23CBCD4C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235340250, false, "96777050-c585-4409-8c87-6e69cc962b40",
+			"@@@InProc at 1A2DAA353B4D2E57E96641FF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235341210, false, "f302e527-ec7c-4b4b-b264-7a23b18af3f2",
+			"@@@InProc at 1A2DAA353B4D2E57E96641FF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235342060, false, "9d67a42e-b215-44f2-8dc0-608dbc7de081",
+			"@@@InProc at D1A0D7ADC16C0FBCF2C2B76C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235349010, false, "5800f4cf-5b33-4e12-98bc-d01ab2709d91",
+			"@@@InProc at D1A0D7ADC16C0FBCF2C2B76C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235350050, false, "c28c95c0-feb7-499b-81e8-415f42a24333",
+			"@@@InProc at B4C5A528C29DA4406F5003AF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235351590, false, "d46d8992-2b46-4286-8e92-0024d13e67d6",
+			"@@@InProc at B4C5A528C29DA4406F5003AF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235352400, false, "07691c9b-c466-4d73-bc07-cfe870a12099",
+			"@@@InProc at 0BAB7CF1EF8CD6F6A3815C44", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235358170, false, "b746ecb7-5d20-4c15-ac5f-99ae4bd756fe",
+			"@@@InProc at 0BAB7CF1EF8CD6F6A3815C44", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235359020, false, "81c5004f-9e82-4c4b-9112-5c83ab861452",
+			"@@@InProc at 06670E73FE3986B321DC5F78", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235360950, false, "a558dfb4-459e-4af6-87f6-584a80d0f764",
+			"@@@InProc at 06670E73FE3986B321DC5F78", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235362250, false, "bc1214fc-bc98-4846-a8a3-7de56b38fb09",
+			"@@@InProc at C7A84663B17B81981305EBB6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235367200, false, "ea56d1bd-5714-4b67-9cca-1e686241c49c",
+			"@@@InProc at C7A84663B17B81981305EBB6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235368010, false, "6e2195a7-ec37-4dc6-be5a-95bb6b92c001",
+			"@@@InProc at C7920026949AD38373371DB4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235370250, false, "4c852196-7b7c-47fe-ae70-2088f73f18c9",
+			"@@@InProc at C7920026949AD38373371DB4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235371100, false, "f8b8080f-4b1e-47dc-97bf-f21fe9c6a815",
+			"@@@InProc at 2CE9F7838970C985A87F0CD6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235376000, false, "6d0d0dfa-e4a5-4a73-8f2d-ef598a0480bb",
+			"@@@InProc at 2CE9F7838970C985A87F0CD6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235377220, false, "fd46cd3b-754b-4a14-9af3-ccd2b9e8b00d",
+			"@@@InProc at 764521AC52260A6335CE802A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235379660, false, "7ab16593-5935-4149-9788-6ca0c62f84c6",
+			"@@@InProc at 764521AC52260A6335CE802A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235380530, false, "53feceed-a7e9-417a-9455-316daa5d202c",
+			"@@@InProc at 81B58E2287F3378DE4932A68", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235385470, false, "05c759c9-00ba-41f0-b0fb-6b9ab3fb22f5",
+			"@@@InProc at 81B58E2287F3378DE4932A68", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235386300, false, "08069a77-d695-43f2-979e-94139ff3eeef",
+			"@@@InProc at 1115CE2E8510D66B804391DC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235388630, false, "fc113ade-1f61-4024-aea1-a961815823e0",
+			"@@@InProc at 1115CE2E8510D66B804391DC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235389630, false, "24acf6f8-03e9-4797-9d5e-4dcdcfba31c6",
+			"@@@InProc at E619D37201CC9938B483FDB0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235395560, false, "0cb0fdfd-df78-4332-9c32-d114dd18ef9e",
+			"@@@InProc at E619D37201CC9938B483FDB0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235396910, false, "d825e4e9-b95c-4bb0-9862-505efe6108bf",
+			"@@@InProc at 6FB542EABC813DF785D89EF7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235398070, false, "c345d184-60e9-4fa1-96f0-5a29d8fc2798",
+			"@@@InProc at 6FB542EABC813DF785D89EF7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235398890, false, "5498f1bf-69c3-437d-b17b-218e24c4a2fe",
+			"@@@InProc at A27C9AAA3865D1925A4ADFF4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235407500, false, "5cd1f5c8-e01f-4345-9279-6fb0d56492da",
+			"@@@InProc at CF72C9FC7CF118A9E901893E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235408750, false, "810dec81-c4da-4055-85fc-9241a1304716",
+			"@@@InProc at A27C9AAA3865D1925A4ADFF4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235408880, false, "c9948835-be1a-4daa-b239-63b73c4ed067",
+			"@@@InProc at CF72C9FC7CF118A9E901893E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235410430, false, "bcf7e88a-774b-41c3-813f-588ba3315f53",
+			"@@@InProc at 0CFD9AA713C894AE5DA39DAB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235418100, false, "70dcc327-eb38-4862-b06c-1fcc2a064f7a",
+			"@@@InProc at 0CFD9AA713C894AE5DA39DAB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235419140, false, "dc524501-c98a-43f5-83e3-eca026b04c6f",
+			"@@@InProc at C2EC28AD9D3845500CD1C019", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235420050, false, "7faa2d68-ca23-4f12-bef7-2c932edaf93a",
+			"@@@InProc at C2EC28AD9D3845500CD1C019", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235421160, false, "6c60d568-272a-4589-9112-8e1646f0046e",
+			"@@@InProc at 8D43420E9B620909FF836048", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235427290, false, "78a19b52-f59a-4501-881b-94952ed9e741",
+			"@@@InProc at 8D43420E9B620909FF836048", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235428080, false, "bca29f20-7e9b-432b-9570-97464c448b1b",
+			"@@@InProc at 573CF85B853D99CD91E44A4B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235430700, false, "1a786685-71b6-4c80-a5ae-ebc2927818ba",
+			"@@@InProc at 573CF85B853D99CD91E44A4B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235431810, false, "72ab81c2-0be3-4831-ba59-619ebdf77de1",
+			"@@@InProc at 685A05B5202B66753E7A1F91", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235437700, false, "01133a96-e84f-41d3-a725-dd0dbfaf88ad",
+			"@@@InProc at 685A05B5202B66753E7A1F91", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235439000, false, "d7ff03c2-6310-45e0-91ef-7eefcc846602",
+			"@@@InProc at A42CBF7FA4F89D31DFE5A821", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235440570, false, "43994c02-b36c-4d17-b13d-a2cc4e7d6d46",
+			"@@@InProc at A42CBF7FA4F89D31DFE5A821", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235441360, false, "f689b3c3-1c0d-464c-b115-8f0b6496e91a",
+			"@@@InProc at 049BEAACD04725173FC4A026", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235448470, false, "ffccac55-1039-4007-a994-ce7ab25b0a22",
+			"@@@InProc at 049BEAACD04725173FC4A026", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235449390, false, "d954a97a-dfc5-4265-82b2-a1dfd17870e1",
+			"@@@InProc at C99B601D962527A490540CD6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235450710, false, "8ffc9f62-23c2-4caa-bdad-ba2ab93ae371",
+			"@@@InProc at C99B601D962527A490540CD6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235451870, false, "56846173-2d79-4c1a-a758-4513f52ed376",
+			"@@@InProc at BCE6A01AECBDB03A4F347525", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235458010, false, "430193b0-10da-46ab-9619-f38c0cd4b6f3",
+			"@@@InProc at BCE6A01AECBDB03A4F347525", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235459040, false, "1e2b9074-015d-4260-8933-fa938dc5e279",
+			"@@@InProc at DCFBD2D2D66E5DD7C123D659", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235460450, false, "b6a48713-57bf-4638-b233-21194aa6fcf9",
+			"@@@InProc at DCFBD2D2D66E5DD7C123D659", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235461280, false, "8237438f-42af-4659-8bba-d0f007d00e97",
+			"@@@InProc at C0D5F295E5AD8C2490AEB5D1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235467090, false, "745a269a-efd8-4de0-8f8e-f5d7f8a0d875",
+			"@@@InProc at C0D5F295E5AD8C2490AEB5D1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235468290, false, "3ee1e446-a1b5-4860-ae1c-898665c10f07",
+			"@@@InProc at E626B85FFB3F6FD37A1F419B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235469880, false, "4d433860-5ac9-4b73-86c6-486b272f92cf",
+			"@@@InProc at E626B85FFB3F6FD37A1F419B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235470690, false, "b7fe7185-9e0f-4107-8101-08db52a32942",
+			"@@@InProc at CE689594E51DDD7C142B774B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235477160, false, "d99f8dea-c7f0-4e6b-929d-7f5612ac7193",
+			"@@@InProc at CE689594E51DDD7C142B774B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235477960, false, "a51dd1a6-e907-4e9c-b3f5-8c333c299b97",
+			"@@@InProc at 06CACD42A0F5CC57CD16141D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235478780, false, "7523d108-ea76-4e76-821d-32cf37558a24",
+			"@@@InProc at 06CACD42A0F5CC57CD16141D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235479720, false, "60edf6d9-a9b4-4d62-a3fd-ef71106b3ae1",
+			"@@@InProc at 84D895833DC6EB38039D231D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235485860, false, "afad6fd8-da15-4bcd-beaa-2699496b0ae5",
+			"@@@InProc at 84D895833DC6EB38039D231D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235486690, false, "9bd85cf3-9033-4e9c-84fb-560bfd237413",
+			"@@@InProc at 53D95EA12B9AE8DCC9A9F064", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235487750, false, "05aebad9-061f-417a-aaae-fbea13eb4a97",
+			"@@@InProc at 53D95EA12B9AE8DCC9A9F064", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235488690, false, "f989f8f9-4448-43cd-a5f7-e91bc9767f37",
+			"@@@InProc at C3CE34DBE2621446B0F4DCB1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235494630, false, "50624c97-1ceb-4db1-9511-d1379ae16ead",
+			"@@@InProc at C3CE34DBE2621446B0F4DCB1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235495470, false, "c149320c-b63c-4776-bcae-2d71a31b200a",
+			"@@@InProc at 19DB062C6A0BF17FBD6E39C8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235496290, false, "18d602ea-537e-40dd-b0d5-1416fb683779",
+			"@@@InProc at 19DB062C6A0BF17FBD6E39C8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235497210, false, "23eae410-e724-448e-a13d-a7922671e0a9",
+			"@@@InProc at 002CC3D56016D0A181D8CDA8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235502990, false, "504ee49d-6537-40b8-bce5-ca08e893c745",
+			"@@@InProc at 002CC3D56016D0A181D8CDA8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235503850, false, "a2e1fcc2-8cb7-4899-9e4d-7846bd17cc96",
+			"@@@InProc at C7DC3092F58D9C4D392E1514", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235505860, false, "1c7a4da4-fad4-4814-998e-eda621a4bd2a",
+			"@@@InProc at C7DC3092F58D9C4D392E1514", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235506820, false, "ea0ca5d5-3397-404b-9d9b-f8bcf6a1beb9",
+			"@@@InProc at F46B4B4D6906125B46D271A3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235512880, false, "cfdf636c-ad86-45f5-ae1c-aa082e8e52c3",
+			"@@@InProc at F46B4B4D6906125B46D271A3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235513990, false, "51786d09-f6ec-4d62-bfb0-f6131f15ad3c",
+			"@@@InProc at 3EECB7453805A5DBCCB5BF36", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235515520, false, "db877d3d-aacb-4a5c-8d57-57df34946974",
+			"@@@InProc at 3EECB7453805A5DBCCB5BF36", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235516460, false, "da7a1de5-266e-4430-9a80-85a667f25b6b",
+			"@@@InProc at 26258A0CFA1070AA527C07B8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235521730, false, "cf42e294-1dd4-43fc-a3f0-54576ef8a0c2",
+			"@@@InProc at 26258A0CFA1070AA527C07B8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235522880, false, "a8c83ff8-1503-49c2-a8c8-dca2e9dbbf32",
+			"@@@InProc at 4EDD9421AE7D811728AE5D9F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235524560, false, "c93e709e-5de3-4129-840f-b3ecb386747e",
+			"@@@InProc at 4EDD9421AE7D811728AE5D9F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235525470, false, "bf353be1-5a77-4cb3-978f-5b42a766a076",
+			"@@@InProc at 2B1B5D060590CFD4E7556B3D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235530260, false, "8cd277ec-92e0-4cb8-bed1-790775402431",
+			"@@@InProc at 2B1B5D060590CFD4E7556B3D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235531190, false, "aa54ec27-8a8d-45ea-948c-2270ff4a33f4",
+			"@@@InProc at 96B70B5A13E7C655EBB76965", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235533460, false, "dff48ccd-aabe-4793-9096-f914a2ac23f7",
+			"@@@InProc at 96B70B5A13E7C655EBB76965", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235534430, false, "7ad482c0-c23f-4a7a-82f2-10946b972c98",
+			"@@@InProc at 75F9EF7B431D8B2FDF7C59BB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235539120, false, "f4350889-5344-4a66-b579-64358f055b64",
+			"@@@InProc at 75F9EF7B431D8B2FDF7C59BB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235539920, false, "4b7d2eb9-5509-4fa3-a7ce-18915c5e11ae",
+			"@@@InProc at 52E4656B5780DF685DF9A464", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235542190, false, "ec9ed1bf-060f-4c98-babf-65c647ded426",
+			"@@@InProc at 52E4656B5780DF685DF9A464", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235543120, false, "fdbba924-1863-4699-923b-334838100c38",
+			"@@@InProc at E24EAA369665700ABAADFBF4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235548840, false, "55654de4-3e14-46c6-a782-c7fcd6999227",
+			"@@@InProc at E24EAA369665700ABAADFBF4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235549860, false, "2312fd0a-9a28-4ad4-8eb3-4116a15afafe",
+			"@@@InProc at 7278A316E51BDB7426E630D7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235551530, false, "fb9cf472-eff7-4ec6-8eb6-2ce38e7f41bc",
+			"@@@InProc at 7278A316E51BDB7426E630D7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235552570, false, "e45a33b8-3d81-4d55-b8be-45ec6331a950",
+			"@@@InProc at 4405FECA59519D87C0473D98", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235558580, false, "705c4932-9978-4a73-bd8e-07aa2d37e39e",
+			"@@@InProc at 4405FECA59519D87C0473D98", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235560130, false, "c6b49457-ada2-48f3-a3f2-686e0afdfa96",
+			"@@@InProc at 1F2602CED4958F9B96697A7B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235561490, false, "822caa4d-2229-4060-890d-b424cbcd2633",
+			"@@@InProc at 1F2602CED4958F9B96697A7B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235562310, false, "f52cefea-a909-452e-8174-b2b6919b29a0",
+			"@@@InProc at B2670795563B4E0821AD5C1E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235568770, false, "64263d65-6ce5-4289-ba88-22ae8a4396ed",
+			"@@@InProc at B2670795563B4E0821AD5C1E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235569590, false, "51fd10b0-03de-440d-b311-5d26546eddaa",
+			"@@@InProc at C0208C43643FA7924CEC3367", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235570370, false, "b45fa431-8ee1-41e2-af2e-586b3feb7061",
+			"@@@InProc at C0208C43643FA7924CEC3367", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235571190, false, "846b6d53-a565-422e-83f5-d0aa5386ffbf",
+			"@@@InProc at FDEC68C45052E69CF7C78B49", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235577610, false, "c4724a86-965a-4976-acad-cb812c5a4985",
+			"@@@InProc at 94DBE44EFAEE175D35811EF7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235578610, false, "e1a3a827-35d0-4e2d-8d6d-8733de6225c4",
+			"@@@InProc at FDEC68C45052E69CF7C78B49", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235578680, false, "c2176931-6eb7-4d52-be7b-49a24d6d55fe",
+			"@@@InProc at 94DBE44EFAEE175D35811EF7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235580100, false, "1dbb2bc8-8a3b-489e-9edc-61995538d7ba",
+			"@@@InProc at F88733BA2AC9E30421098C92", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235586950, false, "5ec887ce-1764-43ad-b3a6-35c54365860b",
+			"@@@InProc at 406B45943A08D57161C1E812", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235587950, false, "c9fbf1fc-903d-40d6-a922-7c0f89a9f08a",
+			"@@@InProc at F88733BA2AC9E30421098C92", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235588050, false, "0ba65c43-7cbf-41eb-bdd6-0584f78a3bf0",
+			"@@@InProc at 406B45943A08D57161C1E812", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235589340, false, "224bb71f-9513-4217-a0d4-ee347a4db57c",
+			"@@@InProc at 9CBDEC958CE226222A737B77", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235597880, false, "f87126de-340f-482c-9baa-ff515cb45619",
+			"@@@InProc at 7A52EE6A65845A9A63D73817", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235599010, false, "64ceba83-7249-4795-872c-d94b5a3737eb",
+			"@@@InProc at 9CBDEC958CE226222A737B77", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235599130, false, "d826b913-6059-4e5e-9a16-2a4762e81770",
+			"@@@InProc at 7A52EE6A65845A9A63D73817", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235600670, false, "13981a92-7331-49b9-802c-2691d3c61de2",
+			"@@@InProc at 1264419B222D81EBE5D3681E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235608210, false, "65ab1fce-f90c-4709-87b8-244c516d273b",
+			"@@@InProc at 1264419B222D81EBE5D3681E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235609170, false, "6d17fa68-b6ff-476f-b7e7-3ef06ec5033c",
+			"@@@InProc at 5998C5552BE594FBEE865E08", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235609270, false, "9c9f4ae3-a5c3-4f15-8cd3-0efb8505df33",
+			"@@@InProc at 5998C5552BE594FBEE865E08", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235610510, false, "edae865b-0466-46a9-a7c4-0be46ba3193e",
+			"@@@InProc at 15BC05E961086AB37E9DBFB7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235616830, false, "73669ef9-7c81-4796-99a2-b2eadb1e26ff",
+			"@@@InProc at 15BC05E961086AB37E9DBFB7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235617830, false, "3c812b10-c095-48f7-9c00-4ce75848aaf5",
+			"@@@InProc at 3083A5B59028389A5E8155B1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235618130, false, "ddb4a74c-2a33-4013-a311-208d036c2ea7",
+			"@@@InProc at 3083A5B59028389A5E8155B1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235619230, false, "a0f843ae-49f2-4c01-83d4-9a6990fb4d2c",
+			"@@@InProc at 80BB309A305AAC769CD8AA8A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235627070, false, "721e79f9-d869-4caf-9165-651b13290387",
+			"@@@InProc at 80BB309A305AAC769CD8AA8A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235628260, false, "74338481-e420-46d2-a358-6303b0352bba",
+			"@@@InProc at 203E1A28BDFD3295992C7394", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235629370, false, "bf3cdefd-5396-4ffc-8b32-7cfdd61c4419",
+			"@@@InProc at 203E1A28BDFD3295992C7394", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235630550, false, "1161855a-fd14-4136-9355-274d198fd90d",
+			"@@@InProc at 3797758095E26486ED843355", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235636770, false, "a25bf44d-82f2-48f0-b47e-515c53e6ab39",
+			"@@@InProc at 3797758095E26486ED843355", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235637760, false, "49d39e5a-7cca-46eb-92b6-beac776f1b1e",
+			"@@@InProc at A1AA5CF96634A2E15814E3A5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235639190, false, "bbcee3c2-0f23-49ec-a5c5-c1a2f998a8a4",
+			"@@@InProc at A1AA5CF96634A2E15814E3A5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235639980, false, "0388fbc6-17a2-4869-b942-adcc6f939116",
+			"@@@InProc at A8A53A8CB6EE83429A425F1A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235646520, false, "a5aa66c5-5d51-4a2a-afcc-cf10bd045cff",
+			"@@@InProc at A8A53A8CB6EE83429A425F1A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235647410, false, "c7fccc78-a7bc-44c9-bdf3-415ecb4f59b2",
+			"@@@InProc at 3A4CAB3572E2AAD32626485D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235648210, false, "8d4fad36-8a49-4723-9aed-c7b776e35a06",
+			"@@@InProc at 3A4CAB3572E2AAD32626485D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235649000, false, "e3d05a5a-8c87-42c8-983f-0b623065ce14",
+			"@@@InProc at 3ADE3D398BCC0A18ADACB17E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235655660, false, "5e970a67-49c4-438d-9b16-df88bad22776",
+			"@@@InProc at 3ADE3D398BCC0A18ADACB17E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235656510, false, "b1b39c7f-9781-4790-a4d1-d3eedc7adbd7",
+			"@@@InProc at 93C6E76A5159155D076439B6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235657320, false, "a8091672-fb4b-4a35-abd4-739548b397f1",
+			"@@@InProc at 93C6E76A5159155D076439B6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235658240, false, "604bc11b-7e5d-45bc-917b-9b64876ecfba",
+			"@@@InProc at 1F2D2272A30D6F75E0DE2D86", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235664030, false, "04ab00d1-cd1a-471c-b259-78b1679bed6c",
+			"@@@InProc at 1F2D2272A30D6F75E0DE2D86", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235664990, false, "bd6b9b6d-7fe9-44ef-8330-341612b07389",
+			"@@@InProc at 2B07945763AE649389BDC508", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235666660, false, "c277c5e0-8649-4503-90fe-406153dbb958",
+			"@@@InProc at 2B07945763AE649389BDC508", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235667460, false, "b623e5c4-56e2-436d-bea6-b727fa8f2bdc",
+			"@@@InProc at 3F7107A80BF995105FF50CF6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235673140, false, "77d7b74b-744e-4645-bff5-35d56df87bac",
+			"@@@InProc at 3F7107A80BF995105FF50CF6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235674190, false, "1ad4350f-2a31-4ab7-b8a5-79daa16f5abc",
+			"@@@InProc at 14694C712817C90D0C3CCB3E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235675560, false, "ba174ed6-6fa3-4ca3-8ff0-4c1ee187dcc9",
+			"@@@InProc at 14694C712817C90D0C3CCB3E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235676360, false, "e8125493-c2b5-40dd-a0da-0613cdbe9507",
+			"@@@InProc at 16EFEC2C12662636E797661B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235681860, false, "4da87432-d058-4839-8425-58a65fa1fb75",
+			"@@@InProc at 16EFEC2C12662636E797661B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235682880, false, "49a1f6c5-d15a-41a4-94c8-6ef529e0e66b",
+			"@@@InProc at 6BF8C7771A4465E41454BBD6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235684280, false, "9ec8fc3d-5003-4611-afde-8d07f46440a6",
+			"@@@InProc at 6BF8C7771A4465E41454BBD6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235685110, false, "52f66c47-247a-4f13-94b1-575a9ad020d2",
+			"@@@InProc at 6D1B2D9337ED41187F21E4BA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235690410, false, "bc1ff10d-5048-42ac-8325-b6c37125ea4a",
+			"@@@InProc at 6D1B2D9337ED41187F21E4BA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235691270, false, "d200f7e8-3153-4bfe-9356-74d52164d1ce",
+			"@@@InProc at BE360A0FC964011C92B2545A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235692810, false, "ad6d80db-5201-4155-8f94-791815a6f5b9",
+			"@@@InProc at BE360A0FC964011C92B2545A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235693620, false, "2976937b-c2b0-4957-b2ec-eaf649a22c54",
+			"@@@InProc at 34329DA46BE3114FC56460C6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235698710, false, "59f49ab3-d433-4eaf-bf06-e139b7d89377",
+			"@@@InProc at 34329DA46BE3114FC56460C6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235699600, false, "80892be2-d332-4f79-9e7e-c76261e63467",
+			"@@@InProc at D52B183BBA527E1221BA372D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235701290, false, "2c72d40d-0d07-4c01-b3a0-e2b6f00b0f99",
+			"@@@InProc at D52B183BBA527E1221BA372D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235702130, false, "bd47d57e-5ee5-4fdc-baf6-ee93222e6468",
+			"@@@InProc at D17588D801994727495F81AE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235706990, false, "2eeb4a65-6992-42a0-bd34-1cff08972eea",
+			"@@@InProc at D17588D801994727495F81AE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235707800, false, "68fd8cbb-523a-4283-bdbd-b4a5bf188c59",
+			"@@@InProc at 73E0B2D0C7025A0CF8338C52", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235735450, false, "5737f5d5-00b1-4cc3-873c-f68b4f03dd56",
+			"@@@InProc at 73E0B2D0C7025A0CF8338C52", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235736720, false, "59ce8c56-2777-4eb5-b97d-a199ee2a020f",
+			"@@@InProc at 968EC1F05295095DB9CA98E9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235741350, false, "62de46a8-b71b-4667-ac8e-d7cbd0357cc9",
+			"@@@InProc at 968EC1F05295095DB9CA98E9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235742170, false, "9e85030e-747c-46bc-8d83-97bcf4c7b7aa",
+			"@@@InProc at A796C05EC3CBE49D3C7B092B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235746860, false, "94d499a8-e0a0-40c6-92be-65c3415c921e",
+			"@@@InProc at A796C05EC3CBE49D3C7B092B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235747970, false, "993a3839-2c50-4523-970f-8aea46543d29",
+			"@@@InProc at CDE17773DC2B42A19C991DEF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235752160, false, "7cc26558-4b81-456a-bca0-b43522dc27f2",
+			"@@@InProc at CDE17773DC2B42A19C991DEF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235753370, false, "e3bb4581-e1e2-4223-bb27-1fb23b8b78e9",
+			"@@@InProc at 822D48E403E655F50B1A6BBE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235756410, false, "39e66718-f16f-4e98-a8de-282d944e88c3",
+			"@@@InProc at 822D48E403E655F50B1A6BBE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235757480, false, "ff6b5bd6-d5ea-4cf3-8502-05d79cc07f47",
+			"@@@InProc at BC16701CCE3B93F1B067AB0C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235762020, false, "04be06de-c7ac-4ef0-95cc-d4534fcd6f71",
+			"@@@InProc at BC16701CCE3B93F1B067AB0C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235762870, false, "dba02e43-dddb-4f11-bcb6-5b4adebf249c",
+			"@@@InProc at FD1EB99BFCF3788535097E1C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235766070, false, "18fe266c-bd2f-4f2d-b1ff-647c59369af8",
+			"@@@InProc at FD1EB99BFCF3788535097E1C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235766930, false, "3227777b-164f-4398-b88e-33e55ccc7349",
+			"@@@InProc at 54D59BE2D99C13957FE4FA6B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235770740, false, "07e5e3df-803c-4b54-9eef-92bd7c5541a6",
+			"@@@InProc at 54D59BE2D99C13957FE4FA6B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235771550, false, "33ad65fb-e53f-4406-b680-49c022f60937",
+			"@@@InProc at BFBD1890CC169F1F670358C2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235775520, false, "8dc94eb9-2347-4d58-a11f-b959718ad8d1",
+			"@@@InProc at BFBD1890CC169F1F670358C2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235789480, false, "563167a9-b43c-42e2-9bbe-a9c3ddd6efba",
+			"@@@InProc at 6549D17D924EA1DF3A23ABD4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235791880, false, "7827eb2f-2936-4284-98cf-b3ede5e3b648",
+			"@@@InProc at 6549D17D924EA1DF3A23ABD4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235793110, false, "e0216937-7da5-4f3c-b044-6adad0c3a5e4",
+			"@@@InProc at 3295BDBE481D89DA1EDBC1D3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235797440, false, "16481f0a-bafd-43ce-b17a-eebde12339b6",
+			"@@@InProc at 3295BDBE481D89DA1EDBC1D3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235798270, false, "aaa46e7c-fd4e-477f-abb0-9c385b7983ca",
+			"@@@InProc at FD313BCC8B0D03E4B9CC3E70", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235801450, false, "31c28b22-4d56-415a-af6e-2d80a91a83f4",
+			"@@@InProc at FD313BCC8B0D03E4B9CC3E70", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235802420, false, "c8b134b8-0bbc-4ab4-9dbc-55f7a650ce25",
+			"@@@InProc at 9F3362FE36E174C875B9C8FF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235806180, false, "e4d25e34-c093-4bc9-9077-e71c1d61e595",
+			"@@@InProc at 9F3362FE36E174C875B9C8FF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235806980, false, "e716226b-9c30-4c7a-94be-55a535b0e4b0",
+			"@@@InProc at 71BB42B8F2B470F7379B49B2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235810260, false, "92e22ebc-7b02-4591-ae54-6f50ff126f4a",
+			"@@@InProc at 71BB42B8F2B470F7379B49B2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235811240, false, "31ef2b9f-b736-4c6e-b942-46894f19d079",
+			"@@@InProc at 7961FE4C3A7CC53112A2B9B6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235815070, false, "d1d28131-d3cf-4aeb-aeba-e56897cdf09c",
+			"@@@InProc at 7961FE4C3A7CC53112A2B9B6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235815880, false, "dfa5d5f7-6727-4899-a1e9-abde60089498",
+			"@@@InProc at B283885807F27A052C2A774E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235818790, false, "487c182f-5fbd-445f-9c83-2d1b6e5e97de",
+			"@@@InProc at B283885807F27A052C2A774E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235819620, false, "77306f4a-755e-422d-9e46-31b320bb357b",
+			"@@@InProc at 99CBE9EEE2302EC57CF12816", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235823410, false, "8e1085df-827c-4a0d-a6ac-f2d8c1c0eb47",
+			"@@@InProc at 99CBE9EEE2302EC57CF12816", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235824220, false, "5ad41cca-1fdf-42ce-926e-324eeac4e3c3",
+			"@@@InProc at 488E47B7E19A767D8E919A74", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235827000, false, "d3de654a-9738-4e9b-a4a6-d94e6d49b886",
+			"@@@InProc at 488E47B7E19A767D8E919A74", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235827800, false, "ec5f743a-643c-43f5-ad74-578ba83af7c7",
+			"@@@InProc at BC0EB364555FBF84BF87B85F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235831830, false, "1c9475dd-6b8d-45b2-a0e5-80f1d1c9b21b",
+			"@@@InProc at BC0EB364555FBF84BF87B85F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235832610, false, "3b6100ad-9785-482b-8d40-eeb21a2fc033",
+			"@@@InProc at 19709419440E41D9AC76DA38", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235835180, false, "616965dc-c89e-4f50-a79f-21fe6f8328f5",
+			"@@@InProc at 19709419440E41D9AC76DA38", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235836090, false, "41cbefa3-5dd8-493e-8c1d-c24049e55437",
+			"@@@InProc at 93211DD9B0F9665DE0798593", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235840440, false, "628e10bd-3b0f-4acb-b416-8da9b7b828e5",
+			"@@@InProc at 93211DD9B0F9665DE0798593", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235841230, false, "0986442a-5648-4c73-a9df-848c92eef80f",
+			"@@@InProc at AE30CBE9B3B51F28E2C9019C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235843590, false, "723044fa-7ea3-49a2-bbc8-47aa021a1129",
+			"@@@InProc at AE30CBE9B3B51F28E2C9019C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235844380, false, "023b4fb2-66a8-4bb2-be18-09375b6571cf",
+			"@@@InProc at 9DC4512D5F3BFEF7B0C775BF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235849250, false, "16574834-db37-46d8-8629-a1da02ade248",
+			"@@@InProc at 9DC4512D5F3BFEF7B0C775BF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235850460, false, "d1c7a046-3463-4500-87e9-367f8ff8e664",
+			"@@@InProc at CEC539DCC83CC948B31DC1DA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235854520, false, "a14d308e-4e97-47d9-ac61-19f3ed3df9ef",
+			"@@@InProc at CEC539DCC83CC948B31DC1DA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235855640, false, "3792c8e6-9812-4458-a34a-57aa869e6ce0",
+			"@@@InProc at DD948A0E17435C8D7D0ADE62", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235860670, false, "5d7ae254-630e-410c-90b9-ce4affec1d6e",
+			"@@@InProc at DD948A0E17435C8D7D0ADE62", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235861660, false, "afd31354-4174-466b-8882-a78a62be7f5e",
+			"@@@InProc at C45E83156C3AB559357603D7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235864390, false, "bf90e90e-d22d-4f6b-9740-c3c3faef34b3",
+			"@@@InProc at C45E83156C3AB559357603D7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235865400, false, "fe2055fb-2450-42a5-84bf-493b307d4025",
+			"@@@InProc at 03ED7989D5DC3583CEC54B47", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235869720, false, "839fcafe-0524-45b4-be59-443cdb77306e",
+			"@@@InProc at 03ED7989D5DC3583CEC54B47", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235870920, false, "6b1bbd4a-c3f1-45c0-ab7a-08f05ba3686d",
+			"@@@InProc at 2E8EE2E946AE9705E8ACB16C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235875550, false, "149af195-1061-4628-b021-88b837aa0dd4",
+			"@@@InProc at 2E8EE2E946AE9705E8ACB16C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235876360, false, "b5cd5c29-a056-48df-97c6-909803df2e41",
+			"@@@InProc at 48F65E29733719F757E18BCE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235879740, false, "1c4a79da-b661-48aa-8619-b96e51504884",
+			"@@@InProc at 48F65E29733719F757E18BCE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235880730, false, "52b65009-e0bc-4cca-bb67-c03777b0ecd6",
+			"@@@InProc at 159396CB8AF185EBF8643377", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235884030, false, "d32210f4-0925-4f57-a4dc-be22750b17eb",
+			"@@@InProc at 159396CB8AF185EBF8643377", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235884850, false, "d058098b-1fbd-4a9b-bf38-eb245b13b488",
+			"@@@InProc at 30EB1FB8EED6ACDE9C52857A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235888670, false, "473c6397-dfd1-469a-b761-4ea99c79a176",
+			"@@@InProc at 30EB1FB8EED6ACDE9C52857A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235889870, false, "638d18c4-d1e6-4901-b7d7-985bcb6a2a94",
+			"@@@InProc at A44FBCDC5F5C6A9F29417433", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235894160, false, "b064a3bb-064e-4313-8635-704090ce76e0",
+			"@@@InProc at A44FBCDC5F5C6A9F29417433", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235894990, false, "2f55c645-a561-4b83-ace0-0a1479ec844c",
+			"@@@InProc at E1D3C33A0A5BEF2B232C7B4B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235898110, false, "17978f3d-1429-46d4-9edd-de9182b3e4cf",
+			"@@@InProc at E1D3C33A0A5BEF2B232C7B4B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235899270, false, "2be49e34-7e87-42b6-ba11-1ae736d20484",
+			"@@@InProc at C37A59CE26EAD4ADBA88F36E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235906250, false, "de40ccd1-1344-41a3-bcb4-590443a6b86e",
+			"@@@InProc at E913E2C5C05494C28205A6FF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235907260, false, "8a08724e-66e5-4c5f-91be-476e7c72847d",
+			"@@@InProc at C37A59CE26EAD4ADBA88F36E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235907370, false, "f038e2c6-76a3-4484-8ab1-97f0eae69393",
+			"@@@InProc at E913E2C5C05494C28205A6FF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235908900, false, "39a35751-d56c-450e-ab04-2f0b3e083867",
+			"@@@InProc at A50B5A5F3590141075724311", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235916380, false, "807d9821-11c7-45ae-ba27-a7fc8a44bebe",
+			"@@@InProc at A50B5A5F3590141075724311", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235917400, false, "4242a5f8-34fc-4948-982a-fdf8157a2361",
+			"@@@InProc at EE784A9332823924C8F5EE0D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235919080, false, "c06637a7-4f84-4751-959d-1a5456fbbe52",
+			"@@@InProc at EE784A9332823924C8F5EE0D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235920200, false, "3ea5659f-926e-4916-acf9-22b0c80ae6c5",
+			"@@@InProc at 2DD11F64F8B10AE6DE99221B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235927920, false, "c7d929f1-0d86-438c-b88a-a464afe46294",
+			"@@@InProc at 71B90912E2795B4C4091F3E5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235928250, false, "2b321682-38ac-48f7-9112-8926db1d26b3",
+			"@@@InProc at 2DD11F64F8B10AE6DE99221B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235930190, false, "c6a1dd60-fec4-47ac-a72b-2f2f4dd5b3db",
+			"@@@InProc at 71B90912E2795B4C4091F3E5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235930290, false, "23757df1-dd27-4add-81e0-d5d95d05a4b9",
+			"@@@InProc at DB1FF881D00C4D009F06AB8D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235938670, false, "98d58d47-8443-4859-ab67-3fb1023d523b",
+			"@@@InProc at 61845D62471D915DA93EE8D5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235939620, false, "036db5e1-4b7a-44e8-95bf-e417d21b49c1",
+			"@@@InProc at DB1FF881D00C4D009F06AB8D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235939730, false, "d433357e-caf7-4695-9ee9-52746220321e",
+			"@@@InProc at 61845D62471D915DA93EE8D5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235940980, false, "d65bd184-29a9-4112-9144-a5e86885db36",
+			"@@@InProc at C014949ADC49CD7AF63B80FF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235948840, false, "b4fdcdc0-8251-445e-9078-42a1420e26be",
+			"@@@InProc at C014949ADC49CD7AF63B80FF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235949840, false, "8098d67a-6e9e-42ca-86be-5ce92415f714",
+			"@@@InProc at CAC1953EDE9B1FD951C0AC89", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235949920, false, "fcb0860e-5596-413c-a028-570e961022e1",
+			"@@@InProc at CAC1953EDE9B1FD951C0AC89", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235951330, false, "659ecbde-42e0-4219-b4f4-13444037a7f8",
+			"@@@InProc at 5309DA21DECAC7F32A24B6BA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235959520, false, "14705cf3-ab3a-49db-bd5b-4d1ec135976e",
+			"@@@InProc at 504DCC8B92E6CCB657C775A9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235960790, false, "a01c2635-d50f-44a5-b5d5-9f39f49f0682",
+			"@@@InProc at 5309DA21DECAC7F32A24B6BA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235960900, false, "e65c016e-2d71-4e95-8606-ded975fbe967",
+			"@@@InProc at 504DCC8B92E6CCB657C775A9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235962710, false, "8309e323-1efe-480c-a47d-c1d33594162c",
+			"@@@InProc at 7FA9426DB8008389695E1FF3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235972110, false, "ddc25701-651f-4872-8c03-c803521eff58",
+			"@@@InProc at BC9A7D326B11C3F7A98E4D63", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235973430, false, "4685073f-223b-42dc-b415-4470fcfedd0f",
+			"@@@InProc at 7FA9426DB8008389695E1FF3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235973570, false, "a38190f8-1a54-4ec1-9e7b-c4bde520b0dc",
+			"@@@InProc at BC9A7D326B11C3F7A98E4D63", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235975150, false, "516f78b2-5bea-4b2e-ad1e-4ad6d3e44bd5",
+			"@@@InProc at 39586D89BCD2F77C1EEAD1C2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235984180, false, "b2db5f3d-649d-418f-adc8-743b52dc7674",
+			"@@@InProc at 39586D89BCD2F77C1EEAD1C2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235985170, false, "da3da481-401d-4d11-90e1-37e4ed09c018",
+			"@@@InProc at EC8E9EB0F757E8739336DE4E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235986480, false, "605bb036-68e5-4e55-abe7-91f76f74c700",
+			"@@@InProc at EC8E9EB0F757E8739336DE4E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235987670, false, "8d0ef664-da41-4cd1-883f-0e63c6ac60e5",
+			"@@@InProc at 60152DFAE371BAF2726D1B5B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235993400, false, "983537a1-e3ab-481f-9b99-44d5f864d70a",
+			"@@@InProc at 60152DFAE371BAF2726D1B5B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235994490, false, "7a288c73-766b-48b4-b247-b6f460e1cfa2",
+			"@@@InProc at 154AF6683115202A11DC9733", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235996160, false, "d46ec1d8-06bb-4993-b7d2-aefd300bc345",
+			"@@@InProc at 154AF6683115202A11DC9733", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878235996980, false, "1fdb1e4b-dd87-4094-91e0-6df652958a83",
+			"@@@InProc at 5FA26B7EFDB305454B575531", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236003360, false, "9181c705-7fad-4fd8-83d6-51684bbaa384",
+			"@@@InProc at 5FA26B7EFDB305454B575531", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236004180, false, "0acedc65-1a95-436a-81f7-d17e0a0cbb34",
+			"@@@InProc at DEA573D818C302B6850EF7A6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236007410, false, "32b029b4-9b1b-47e9-b31b-dd33ddfa6d8f",
+			"@@@InProc at DEA573D818C302B6850EF7A6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236008650, false, "e51cbf9a-7a8f-493f-acdb-ca1ce2bf1f10",
+			"@@@InProc at B0BCD424B2A5E0344D202644", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236011720, false, "07082a49-50f2-4d1d-b6a4-48cbeccd1cf6",
+			"@@@InProc at B0BCD424B2A5E0344D202644", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236012840, false, "eee6c063-d564-46bc-8b74-fac305038942",
+			"@@@InProc at 4602F42C11028CF7D7D80314", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236018750, false, "98ab86a6-3175-425b-ae98-c7b67baa0e31",
+			"@@@InProc at 4602F42C11028CF7D7D80314", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236019770, false, "53b8d155-c436-4c34-946f-0bdc4e8bf150",
+			"@@@InProc at 91C27A2B77ACD509649773D0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236021350, false, "8d997ae5-cc30-449f-8d64-0ff95f52636f",
+			"@@@InProc at 91C27A2B77ACD509649773D0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236022180, false, "38cfbdbb-6054-4c46-bddc-768530d044dd",
+			"@@@InProc at 35D227CD19CD99CBFCE3FDFF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236028440, false, "d0a73bb2-52f4-4293-8a0f-0617761f8be2",
+			"@@@InProc at 35D227CD19CD99CBFCE3FDFF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236029420, false, "e1646ff5-3f6b-4e1d-91a5-cf0b74aefa6b",
+			"@@@InProc at 0C53FD011C947A66CA5D6C97", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236030270, false, "17ab70c0-0e49-4de2-a49f-0cd681ae288b",
+			"@@@InProc at 0C53FD011C947A66CA5D6C97", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236031060, false, "1e9ee70e-588f-4d9b-8931-16c3393ebdb8",
+			"@@@InProc at E30010B59EE4BD4F85E4AEB3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236039650, false, "30ca3990-b7b2-4254-9df6-b991bb8158f4",
+			"@@@InProc at D5ABA9DE21637E7A3E42A223", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236039890, false, "93f9ae0f-1087-4f8d-bc80-9b0d764323d5",
+			"@@@InProc at E30010B59EE4BD4F85E4AEB3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236041530, false, "4f2fea9c-83af-43fb-ad23-cac1a66a29fa",
+			"@@@InProc at D5ABA9DE21637E7A3E42A223", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236041630, false, "79c2459c-55da-421a-8bb1-aeefce735ccb",
+			"@@@InProc at FEEE1CCCAC9A529F70651D86", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236050650, false, "0ef9c5db-4357-444a-bcef-867406ce8e01",
+			"@@@InProc at FEEE1CCCAC9A529F70651D86", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236051480, false, "af43dc96-38f3-47a7-a838-65d2d2ce7617",
+			"@@@InProc at C726CDFAEA1D154A0D9539AC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236052330, false, "b5bc4ab7-e515-4f1e-9232-e21ef849ee26",
+			"@@@InProc at C726CDFAEA1D154A0D9539AC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236053150, false, "891d4d2a-f5e9-4051-a87f-4446649a9b3f",
+			"@@@InProc at 4347284E62ECE4EAE292CDD5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236061180, false, "b722b861-82ef-466a-9bd6-958e19fc4bba",
+			"@@@InProc at 4347284E62ECE4EAE292CDD5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236062360, false, "c9dd9de9-458b-4783-ae27-9a6f1eeefdbe",
+			"@@@InProc at 12C20AACC49BBFEA5DE2D147", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236062810, false, "03284959-eb8c-47fc-96d7-e132924c05e0",
+			"@@@InProc at 12C20AACC49BBFEA5DE2D147", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236064370, false, "79740933-a683-4d21-9d68-85d9aba0a4e3",
+			"@@@InProc at E841581724E102C6FE21365A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236072680, false, "4ac5726d-56e2-4e49-8717-f09c405faf58",
+			"@@@InProc at E841581724E102C6FE21365A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236073890, false, "96368baf-1acb-4153-9fc5-70d14710bd26",
+			"@@@InProc at 86E804BB36C9232921252C2E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236075220, false, "1099e478-2546-4094-8c8a-87dac7937077",
+			"@@@InProc at 86E804BB36C9232921252C2E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236077440, false, "ee77a7cd-66de-4f4b-85f2-772eab5842e5",
+			"@@@InProc at 16B81AFD6FF15BF0DDABE255", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236083960, false, "228aa89a-5c57-4011-9859-85fed8389dcf",
+			"@@@InProc at 16B81AFD6FF15BF0DDABE255", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236085030, false, "3ca3c454-0bd3-4615-bac7-757a244bb7cf",
+			"@@@InProc at E3487906BA4BEC629E7AFC91", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236087490, false, "32ad2e48-e7f5-43dd-9d94-73e3b57ad159",
+			"@@@InProc at E3487906BA4BEC629E7AFC91", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236088600, false, "a39c7396-3c6e-49ad-baad-4edd6eee90c7",
+			"@@@InProc at 99BC8C5F77AEEAA7DAE6FF46", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236094240, false, "8b8682cb-21c7-4cc2-9434-fc3301803e64",
+			"@@@InProc at 99BC8C5F77AEEAA7DAE6FF46", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236095370, false, "ef9b925e-547d-44e7-8bee-29b261c75bf1",
+			"@@@InProc at 8A53C7D3C61F9087EBADBCEF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236097050, false, "4d9cf4b9-f405-43de-b07d-ffbbe420f3c2",
+			"@@@InProc at 8A53C7D3C61F9087EBADBCEF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236097900, false, "53d68c7d-9a6d-4446-801c-1c62e333c7e8",
+			"@@@InProc at 11BDD074C7DBF61203384EC6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236104260, false, "b2f36c39-9197-4e5a-b815-983c5b729bf3",
+			"@@@InProc at 11BDD074C7DBF61203384EC6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236105080, false, "80be266f-6cc9-44c0-a504-d97694022684",
+			"@@@InProc at 48AD041389F88F6CF9623731", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236105920, false, "a826db9d-df26-403b-8af9-4aeb9cbda9af",
+			"@@@InProc at 48AD041389F88F6CF9623731", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236106990, false, "0256337a-310a-42cd-a702-f3ff56e18fb6",
+			"@@@InProc at 19760362E4610EADE89F72E0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236113650, false, "85de3b46-98ad-4682-b3a8-02651564e9c8",
+			"@@@InProc at 19760362E4610EADE89F72E0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236114810, false, "d04afa54-9f1e-4994-9c3e-b249dc7fc895",
+			"@@@InProc at 2A86CA98D2F386516FE2DAFE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236116150, false, "4fe23a70-d5a6-458b-9a93-e2867a96271f",
+			"@@@InProc at 2A86CA98D2F386516FE2DAFE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236116980, false, "d5743c14-f08c-4ae5-b821-346485b26f4a",
+			"@@@InProc at 24399B8273A6EFE1DCC67BE2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236123050, false, "7b0687e4-aa33-4f32-ac00-33c7ba5ca4f0",
+			"@@@InProc at 24399B8273A6EFE1DCC67BE2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236124220, false, "93d89688-8906-4a47-9942-e4df2ef8536b",
+			"@@@InProc at D4D9166E741517ADCD35E5A1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236125800, false, "8f24b555-57a7-4fcd-8b7a-8c1f171c2ad1",
+			"@@@InProc at D4D9166E741517ADCD35E5A1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236126620, false, "87aeaf19-4be2-4145-a949-fb3de1c36f64",
+			"@@@InProc at D446353AFA0D42CD1CF3B8C6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236134270, false, "aaddd126-4262-4bc1-b437-9812f5adae6a",
+			"@@@InProc at D446353AFA0D42CD1CF3B8C6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236135510, false, "e17698b9-1311-48c8-b7ff-c1c1e8a394e4",
+			"@@@InProc at 4B29C67EDEADDE9AEAB2239E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236136650, false, "a36ed465-e2da-4c32-80e2-ac3b897e6a1c",
+			"@@@InProc at 4B29C67EDEADDE9AEAB2239E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236137850, false, "1c5822ae-8a80-4b33-af6a-29a773073f6f",
+			"@@@InProc at 52AC183EB92D3C1FF9CA8EEF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236146590, false, "5dc69616-0eaa-4d70-a9a5-f39f90d38ca9",
+			"@@@InProc at 52AC183EB92D3C1FF9CA8EEF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236147290, false, "995fef4c-0154-41fa-a3ea-e382e9eb866d",
+			"@@@InProc at B3108D95D02734EED9578854", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236147970, false, "6deb6313-cc2a-4324-9921-75303f967fca",
+			"@@@InProc at B3108D95D02734EED9578854", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236148730, false, "c7c34773-ffb1-4ce3-962f-2d8c1642ea21",
+			"@@@InProc at 6F7226C5FB8F0281F8DFEE3D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236152900, false, "2e8f9e6e-5dfa-466e-a03e-9ce9dcd394db",
+			"@@@InProc at 6F7226C5FB8F0281F8DFEE3D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236153600, false, "fdbd4882-c95c-4996-bc05-d4452c91bc75",
+			"@@@InProc at CE8D86C875AE5D25151F2558", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236156080, false, "eb26bb84-7238-4ce5-83f7-d4446f2da8b7",
+			"@@@InProc at CE8D86C875AE5D25151F2558", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236156880, false, "906cf08b-e100-4bb9-a60b-7ec9ca015c87",
+			"@@@InProc at 279B69B43BDB6DDAC6D358E4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236160550, false, "8842e760-4ac6-4bb8-a496-48105917527d",
+			"@@@InProc at 279B69B43BDB6DDAC6D358E4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236161120, false, "dd4769c5-5e13-49fb-a991-4e3241c5576f",
+			"@@@InProc at BF661C74FB4DE9C671D8FE97", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236164000, false, "8233e018-1c6e-41b9-b364-187410ef9bb1",
+			"@@@InProc at BF661C74FB4DE9C671D8FE97", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236164540, false, "a1f36780-5bbc-42b4-a009-eac89185ee83",
+			"@@@InProc at DE801F81669B33C45430FDF7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236166660, false, "b2f2af30-7036-4891-a3aa-c8b8774cbe01",
+			"@@@InProc at DE801F81669B33C45430FDF7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236167300, false, "8b7a435a-bd0e-4cac-a32a-93f15afe9aea",
+			"@@@InProc at 7E07A537E3BC1F23382BD7FE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236170210, false, "0431f136-e2c3-4634-ab9b-9b162276a678",
+			"@@@InProc at 7E07A537E3BC1F23382BD7FE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236170920, false, "346c2bd8-17e3-4366-afd4-7803ce7a121c",
+			"@@@InProc at 02F6B21ECA5EDB2067806E69", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236172540, false, "e965b2fe-3d90-4b1d-a143-cefd891703ec",
+			"@@@InProc at 02F6B21ECA5EDB2067806E69", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236194170, false, "5cc49781-e19c-4af2-a934-3b23033b6a78",
+			"@@@InProc at 30902F0C3FACB73367BB4005", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236198420, false, "41282d9e-3b4a-4b51-af8d-6531e0ba2667",
+			"@@@InProc at 30902F0C3FACB73367BB4005", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236199090, false, "95230755-e346-476d-8fa9-1c04543dd29b",
+			"@@@InProc at 9BA1493A6F8E1943B1C67300", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236200710, false, "e2d680aa-cf23-4da7-9598-ba991ee2c4c0",
+			"@@@InProc at 9BA1493A6F8E1943B1C67300", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236201380, false, "bb5c81ac-8a67-47c3-a268-71cfdfca8291",
+			"@@@InProc at 91BD94A3BA2364676A23E7B2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236204580, false, "58ea9850-bb00-4297-8ea1-db07018829e0",
+			"@@@InProc at 91BD94A3BA2364676A23E7B2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236205120, false, "7f8ce0d4-be9d-4424-beae-f7c948630c2a",
+			"@@@InProc at 6655B803A63563DCB11057EE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236206780, false, "18182cca-8604-47b2-b820-dad63f030438",
+			"@@@InProc at 6655B803A63563DCB11057EE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236207510, false, "d53fb28d-4414-4a73-a270-40bcd0c50a01",
+			"@@@InProc at B678BB9CF6176E58A68436E3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236210870, false, "7e3da007-f779-401e-bdef-fe310f4ba642",
+			"@@@InProc at B678BB9CF6176E58A68436E3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236211670, false, "5f243bdd-4555-4851-b91f-d171155a6d53",
+			"@@@InProc at 6F0F6E338FA8CF9C8035FB0A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236214370, false, "637f45ca-37f0-4fb7-8f91-34769a7e81b4",
+			"@@@InProc at 6F0F6E338FA8CF9C8035FB0A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236215110, false, "af311fe5-c8de-4c8a-9c7c-2e97f473b179",
+			"@@@InProc at C23A099B9E27E83B99288F26", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236218420, false, "9b0618da-4506-4efc-95e5-d21d735b02d0",
+			"@@@InProc at C23A099B9E27E83B99288F26", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236219060, false, "f897690b-0761-42dd-a28e-47babf156c09",
+			"@@@InProc at 4306251ED38BE51FD143BDDA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236220590, false, "5f4eda18-6589-419b-8283-a41cab270dc8",
+			"@@@InProc at 4306251ED38BE51FD143BDDA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236221200, false, "f7726801-a399-4e3d-a957-8c43f4629b32",
+			"@@@InProc at 147BFF00430D30DC5F4719C5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236227490, false, "dc556700-b67c-487b-a847-5c214f17f00c",
+			"@@@InProc at 0A2E9EF48CA61B78AA985C75", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236228110, false, "43ce66c3-1075-4a93-8af6-8d4a714c95ab",
+			"@@@InProc at 147BFF00430D30DC5F4719C5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236228170, false, "d2e1f4cd-4518-4ec9-a114-71ec75b1ed5f",
+			"@@@InProc at 0A2E9EF48CA61B78AA985C75", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236229070, false, "c3fa8c06-d487-4802-b89d-84912ed03050",
+			"@@@InProc at 6A606D7740F8B81DA5954F19", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236233900, false, "d4a7b669-b31d-4208-9126-e02e9234c662",
+			"@@@InProc at DEB9DC5556D50A9B0140D1B2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236234570, false, "b6c95caf-0923-491c-9e22-9343a7dddb1d",
+			"@@@InProc at 6A606D7740F8B81DA5954F19", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236234620, false, "8094b40a-11c9-47e3-8e9d-081da8c62894",
+			"@@@InProc at DEB9DC5556D50A9B0140D1B2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236235900, false, "946b7f12-3e13-451c-b740-a1d883aea237",
+			"@@@InProc at 6AA296B8C815A65594529E5B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236243870, false, "25521398-5e27-4e0a-9003-7505ff2b1fe6",
+			"@@@InProc at 6AA296B8C815A65594529E5B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236244630, false, "56288411-9180-4996-8664-90789dfc613d",
+			"@@@InProc at 9ADF03838EC79338D6EA4760", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236246380, false, "09e00d42-9497-4b62-b445-9518258a1aba",
+			"@@@InProc at 9ADF03838EC79338D6EA4760", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236247040, false, "b3fa0013-5df3-45fe-9968-af1bc2cb9241",
+			"@@@InProc at 17E503285AD878E9A95A8B65", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236250820, false, "7d35c919-00ab-4d26-b2f5-e57d021e8e68",
+			"@@@InProc at 17E503285AD878E9A95A8B65", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236251380, false, "8a088401-158f-493b-88cc-72bf1ff46f5b",
+			"@@@InProc at 48AFC5BBE9A6923A1B26BFC2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236252600, false, "03534025-3d79-4344-bd2e-e2e0479aae87",
+			"@@@InProc at 48AFC5BBE9A6923A1B26BFC2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236253240, false, "58d8aa7f-1412-4c7a-b8fa-0e8780a1d011",
+			"@@@InProc at 39AFDABA9772F38D8E33DCD2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236256730, false, "e185a37f-bab1-48e4-b8d0-aa3078e9f9d5",
+			"@@@InProc at 39AFDABA9772F38D8E33DCD2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236257270, false, "30b209ee-5afe-4ac0-83fd-abf7478fef9b",
+			"@@@InProc at 59BCB222B43300080D8AE0E6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236264300, false, "5d34294b-7e54-4d92-9d75-3532a8c64033",
+			"@@@InProc at 59BCB222B43300080D8AE0E6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236264860, false, "1ae65217-dc38-43d4-821e-f6e61efaa82e",
+			"@@@InProc at 2AD0648710CE320909BBD25F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236267140, false, "eada8fa4-f2ec-4b49-b428-f94ceca29e3b",
+			"@@@InProc at 2AD0648710CE320909BBD25F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236267730, false, "3bc1b988-76d1-4f64-9db7-988fc94d0e98",
+			"@@@InProc at 79001C66483B14F3CFE540CA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236270220, false, "b289d69a-7a48-49a2-9141-8ab485377191",
+			"@@@InProc at 79001C66483B14F3CFE540CA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236270770, false, "4d0dda04-747a-4757-82c7-95d0e9a5bba0",
+			"@@@InProc at 7CCACF3E715E6F37E974FE3F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236275610, false, "51c98281-597d-4245-a313-89f79bb4b38f",
+			"@@@InProc at 7CCACF3E715E6F37E974FE3F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236276260, false, "6acbab35-0223-49ab-a1d0-81752ae13294",
+			"@@@InProc at 621258547CA2E5728DD276CF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236277850, false, "ed771d09-542e-4f09-9525-3444f3c1cff2",
+			"@@@InProc at 621258547CA2E5728DD276CF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236278560, false, "d746517b-128c-415d-81e8-0c2ef172ab88",
+			"@@@InProc at 2E01DD8BCB417FC511F89F74", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236282520, false, "c8008cf4-384c-4af3-adc2-56a4a01889f2",
+			"@@@InProc at 2E01DD8BCB417FC511F89F74", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236283230, false, "f481b532-0a6b-4d93-b393-71cf06582d9c",
+			"@@@InProc at 8544A2FDC2E545A94B917C13", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236284880, false, "63eb5e7d-70b1-4acd-bbd0-59027ce1d8e2",
+			"@@@InProc at 8544A2FDC2E545A94B917C13", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236285560, false, "c9baa73c-4f0f-4ffd-973e-5557b9890a3d",
+			"@@@InProc at 9F9411F31860754AC33A47DE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236288660, false, "9d8447cb-8021-4610-90c7-b0bc2a070c4c",
+			"@@@InProc at 9F9411F31860754AC33A47DE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236289220, false, "5b2a8390-cedb-4a7c-9a4f-aebfea8024c4",
+			"@@@InProc at 045EE0874821AA63107694DF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236296610, false, "8ef9d63d-6370-4861-9135-f01116e7cab2",
+			"@@@InProc at 00EFEAD5DA141F9998B2BBE8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236296690, false, "9e477d7b-21ef-4565-96a4-35f28f663cf8",
+			"@@@InProc at 045EE0874821AA63107694DF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236297800, false, "62cf7e85-3369-44d7-96de-2799ad952e3e",
+			"@@@InProc at 00EFEAD5DA141F9998B2BBE8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236297860, false, "d9e66691-ef05-49fd-af02-c904271e3b4c",
+			"@@@InProc at 5BE5B4D61F091B07A73F3F85", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236304020, false, "eddc3896-15c7-48ed-8d94-7c7fc8742f29",
+			"@@@InProc at 0A53A0B1A978E144516AA63E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236304100, false, "cca82f78-6ffe-4ad0-b4cc-a4fe8da58ba6",
+			"@@@InProc at 5BE5B4D61F091B07A73F3F85", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236305190, false, "e85c1ddd-b3a4-4309-a06c-303a21afd49c",
+			"@@@InProc at 0A53A0B1A978E144516AA63E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236305260, false, "c6c9de90-5861-48e9-85d4-f32822a383cb",
+			"@@@InProc at 58135C60EB545517A5CC5E33", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236310860, false, "990dcec4-b11c-47c8-8acc-259890caabe6",
+			"@@@InProc at DECF2EFC89FD58F509BF9B20", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236311590, false, "66a85d8b-4520-47af-b71f-6eb87ff730e5",
+			"@@@InProc at 58135C60EB545517A5CC5E33", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236311650, false, "3688c34b-4431-421b-910a-d2fd03188f8e",
+			"@@@InProc at DECF2EFC89FD58F509BF9B20", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236312570, false, "c491b4e7-f972-4b08-ad93-b5b96dd4f83b",
+			"@@@InProc at D541A6B953491905F766CDB4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236317540, false, "06ef6afa-3f50-4430-8b5f-0decc244f07b",
+			"@@@InProc at 4C1DC4E0FDAEFFE0E1D71A30", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236318190, false, "4244eb40-514f-422c-a9ad-f208378ffbe0",
+			"@@@InProc at D541A6B953491905F766CDB4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236318410, false, "319ab845-67e8-41d6-8ea1-10b029a86f45",
+			"@@@InProc at 4C1DC4E0FDAEFFE0E1D71A30", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236319160, false, "f31cc70d-f4f4-40ae-ad94-0c5c9fb5fec5",
+			"@@@InProc at 8E80A0C1C75468A8D8E79B3A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236324180, false, "d377ed14-4bb1-4d9d-92bd-5e3ed108502d",
+			"@@@InProc at 8E80A0C1C75468A8D8E79B3A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236324760, false, "908c4c98-64e3-4c0e-9d3e-74d2561b4d27",
+			"@@@InProc at B88A62AE7887973D26323AAA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236327600, false, "97e1626f-a0e4-4f8a-b58d-f9fc50491fc2",
+			"@@@InProc at B88A62AE7887973D26323AAA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236328120, false, "f1327545-324f-4dc8-b6cf-4a9a5dada3c5",
+			"@@@InProc at AD0DA7BB1EAB045216F89C72", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236330490, false, "c8faae5b-b76e-426f-959a-8addbbc91f96",
+			"@@@InProc at AD0DA7BB1EAB045216F89C72", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236331090, false, "23c43366-656d-4ef5-9d32-bbde22408953",
+			"@@@InProc at 72DE5AF5736B2890D1B242FF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236333130, false, "2bc72f4b-5601-4593-9344-a30b71f433ed",
+			"@@@InProc at 72DE5AF5736B2890D1B242FF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236333670, false, "189c76a1-b10e-44c3-ba1e-044c84acb3d3",
+			"@@@InProc at 58B512193144CE3795609FA9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236336410, false, "51c42570-ee4b-4c89-ad4e-a3ecb96c9ff4",
+			"@@@InProc at 58B512193144CE3795609FA9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236337050, false, "3d140e81-9559-4a45-b485-3e9a11aafb39",
+			"@@@InProc at DB3FFACB1D08F18598BA3054", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236339030, false, "edafad3c-658b-4025-9e93-2bbfda22974f",
+			"@@@InProc at DB3FFACB1D08F18598BA3054", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236339630, false, "cdb1b231-8a5e-465b-a721-08f2271e4243",
+			"@@@InProc at D46645A574BA5B2BBFCCFD45", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236342370, false, "c3a5a1ee-2eb6-4c72-a990-6e29c0c745c4",
+			"@@@InProc at D46645A574BA5B2BBFCCFD45", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236342960, false, "f05aa6bd-2b0f-4d48-b93b-c5df975796d1",
+			"@@@InProc at D80455BFAEC60B789B1C4C65", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236346300, false, "a9be0b6f-aad0-4b44-a7c2-00af5794e065",
+			"@@@InProc at D80455BFAEC60B789B1C4C65", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236346850, false, "71758cea-a591-46ba-a193-9b73119ca9b6",
+			"@@@InProc at 2E65DAF25AD721EA860F5FFD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236348800, false, "b6b27fc6-f525-4bed-9e34-05ecfa245de5",
+			"@@@InProc at 2E65DAF25AD721EA860F5FFD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236349420, false, "c54e9eb2-cc2d-4fae-9fbf-80dc6fcff00b",
+			"@@@InProc at 8471E9B4CA6D15703AF2223C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236352370, false, "4e2565e0-8bd1-479d-bc68-e4c90127fdb2",
+			"@@@InProc at 8471E9B4CA6D15703AF2223C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236352950, false, "2cb3d8ef-823e-4f80-bc02-a1245c208d14",
+			"@@@InProc at B528175D6C005389E89B0605", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236359440, false, "cb386ab1-1b0a-45f7-8814-0fbecf2c5040",
+			"@@@InProc at 49C2CDBC89962EE1259C4694", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236359690, false, "3ef2011a-d27a-4d16-a13f-69c8c7f5cca5",
+			"@@@InProc at B528175D6C005389E89B0605", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236360740, false, "10e7ce08-3faa-47d0-8df5-4d1c14511fd8",
+			"@@@InProc at 49C2CDBC89962EE1259C4694", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236360900, false, "62180cfd-94f4-4731-a332-7ef6db7a55db",
+			"@@@InProc at 2B21DE2A3850FFE0B2B351F2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236367400, false, "ae526a16-9bf6-4b7e-beb2-975d4b6d936e",
+			"@@@InProc at 409BA8BE72406A7DDE2CD35E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236368560, false, "1b7daaef-792b-4c74-999e-74d4652643cb",
+			"@@@InProc at 2B21DE2A3850FFE0B2B351F2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236368630, false, "f2efde1b-8289-4df6-8d1f-1a56a47400f0",
+			"@@@InProc at 409BA8BE72406A7DDE2CD35E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236370020, false, "e30dc06f-e6f3-4126-ba29-7da2400a0ab2",
+			"@@@InProc at 7D78F814CA15675FA8A71E66", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236375250, false, "36534ed0-b663-4854-84c6-7db7b2ea5e4c",
+			"@@@InProc at 7D78F814CA15675FA8A71E66", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236375870, false, "500655c4-00b6-4b2e-bd11-3f7becba2a38",
+			"@@@InProc at 5FF60B5613529718CC2EC7BC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236376490, false, "77f9b8a3-ca54-4622-bad8-e883607f853d",
+			"@@@InProc at 5FF60B5613529718CC2EC7BC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236377040, false, "879c7e29-238d-4c74-84bf-cdd7404fd13b",
+			"@@@InProc at 07C2F1C26E2522FE217A9740", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236381750, false, "8da1d8cb-f452-4b42-b9e2-2ce916930351",
+			"@@@InProc at 07C2F1C26E2522FE217A9740", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236382390, false, "07f71655-902b-413c-a490-6b295f5edf21",
+			"@@@InProc at B5C90928C4D5AEDF15FE6D11", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236382450, false, "8e98fb53-8afb-4692-a68e-657d8d598b4b",
+			"@@@InProc at B5C90928C4D5AEDF15FE6D11", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236383340, false, "da98aefe-0be4-4a5a-bca9-831945c14347",
+			"@@@InProc at 570CF7FCEE038FBD7B3F8270", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236387760, false, "4a26f817-330d-45d3-a4f7-a5721eb2faf8",
+			"@@@InProc at A5B7CFE30AE103B550CE1213", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236388390, false, "5cc593b2-d81b-4de8-b39b-9081b8dad6bc",
+			"@@@InProc at 570CF7FCEE038FBD7B3F8270", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236388450, false, "2b4caa2c-52ae-4658-8cff-3038263ebd1a",
+			"@@@InProc at A5B7CFE30AE103B550CE1213", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236389470, false, "4dd13362-18ea-4432-a0fc-e4a09bf49f76",
+			"@@@InProc at ACF17CE685A1E5099C612E51", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236394470, false, "d9dba50b-8b65-42a6-abb6-a30d92ecea63",
+			"@@@InProc at 4B7C4DDA6DC6AC18E8111E1F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236395030, false, "e7bf16d0-d406-44ba-8624-f7e60fe0b2ab",
+			"@@@InProc at ACF17CE685A1E5099C612E51", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236395100, false, "fc6df661-522a-4098-a904-99046e4bebb8",
+			"@@@InProc at 4B7C4DDA6DC6AC18E8111E1F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236396120, false, "9c23c10d-cee8-46be-93e2-26c46f6ab13f",
+			"@@@InProc at D8C855E123ED1C333A47DD54", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236401290, false, "ff517497-1ee1-421e-b6c3-6c2658c94f79",
+			"@@@InProc at D8C855E123ED1C333A47DD54", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236401940, false, "31fc98ed-c8be-43c0-a60b-7be6f02182b4",
+			"@@@InProc at 1C7EABF9196C74E2A6854A11", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236402170, false, "15f60243-76ef-4821-8da3-0c4ec917ebbf",
+			"@@@InProc at 1C7EABF9196C74E2A6854A11", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236402980, false, "d430fafc-ec03-4fc8-80f0-4a0425c1888f",
+			"@@@InProc at F02B2AF747B85206A9834E0D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236407730, false, "73f8befa-8ad3-4793-86ee-d8d8f5db54e3",
+			"@@@InProc at F02B2AF747B85206A9834E0D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236408390, false, "fd783571-fa15-40f1-9c70-395ab9540c24",
+			"@@@InProc at F88B024C60BD3A5996CE8464", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236409000, false, "93798b9b-8cda-48df-bcbb-735acf83abeb",
+			"@@@InProc at F88B024C60BD3A5996CE8464", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236409540, false, "cc24dd17-711a-45e8-8285-c4f1d62cabc2",
+			"@@@InProc at EF53F27E075F5CF6E3F35750", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236413600, false, "b3e31e51-2454-4502-86de-3ab93c0b15ba",
+			"@@@InProc at EF53F27E075F5CF6E3F35750", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236414120, false, "023dc1f5-8dc8-44b4-a3e7-98e8cb8027dc",
+			"@@@InProc at C56C2FE6AED6E3E40D5CD307", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236414630, false, "48c1b92c-d360-47ed-8894-2d8cd9a5eacd",
+			"@@@InProc at C56C2FE6AED6E3E40D5CD307", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236415150, false, "9c021865-83de-4e38-a940-988d7080e46b",
+			"@@@InProc at AA285263B0619256D00213B2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236419160, false, "7d9296c4-0232-47e4-aae3-92bafa61a6fb",
+			"@@@InProc at AA285263B0619256D00213B2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236419790, false, "5ca41927-4809-45ed-83b2-65554d648074",
+			"@@@InProc at B0713CC03EA8D9E740EEF723", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236420370, false, "0c955cd6-507b-4057-ba35-b99013b46799",
+			"@@@InProc at B0713CC03EA8D9E740EEF723", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236420910, false, "686e913d-07f4-4242-a8b1-49e85e63f78f",
+			"@@@InProc at 28C3850A35F2B770FDCFF856", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236425150, false, "3c59d2b3-6a6c-41f9-bff1-66ff91344f15",
+			"@@@InProc at 28C3850A35F2B770FDCFF856", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236425880, false, "2ce50754-2832-41fc-86e6-a13c9c2af83a",
+			"@@@InProc at 8ABEF2257E487FD4E4AAAD4B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236426800, false, "93c68e53-afaf-445c-84b2-580c05566be0",
+			"@@@InProc at 8ABEF2257E487FD4E4AAAD4B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236427320, false, "3479b784-1d0b-4254-bb5d-94b470802b10",
+			"@@@InProc at CA04AA534EF67462D7FD5D76", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236431270, false, "4687172e-2e88-4aa8-b9f7-0f70393b92c0",
+			"@@@InProc at CA04AA534EF67462D7FD5D76", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236432000, false, "c303fec4-bb4b-4462-a805-775485871b32",
+			"@@@InProc at AD66EC3439996ACC423F374B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236433060, false, "880c59ed-3814-4a7f-bfd4-5f7fe73bdfd0",
+			"@@@InProc at AD66EC3439996ACC423F374B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236433800, false, "b9d92f1f-29a6-4dee-a9d5-e279c72b31cf",
+			"@@@InProc at 1E622EE7CAA7343B242B962F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236437420, false, "f71e1d71-94f8-45c4-89fb-934e68e90996",
+			"@@@InProc at 1E622EE7CAA7343B242B962F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236437950, false, "f84d9b16-0d1b-406b-b7a4-dc43a6fe7671",
+			"@@@InProc at 45CA59B70F147E0948C87BC1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236439470, false, "d88c6ee3-4f28-4b32-b456-3a82552ee04c",
+			"@@@InProc at 45CA59B70F147E0948C87BC1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236440220, false, "e2f11a68-bfeb-454e-b9c4-606c8dde9f54",
+			"@@@InProc at 71169A94172F49DDBDA0C523", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236443060, false, "7b3c0ac7-ab8d-4a4f-8b29-bbfa55791cb9",
+			"@@@InProc at 71169A94172F49DDBDA0C523", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236443590, false, "57db02df-9471-4a22-bf25-e1ceaa74acd4",
+			"@@@InProc at 1C6DED35A0179FDA7CCF82A7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236445220, false, "13f746b5-7f68-414f-87fe-f71677972b56",
+			"@@@InProc at 1C6DED35A0179FDA7CCF82A7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236446180, false, "89d4904b-300c-4746-af54-917677324d2c",
+			"@@@InProc at 884B7322DF4A78EAB79EF1A0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236449620, false, "30c4ba12-78b3-4a6c-b4ef-643112549c13",
+			"@@@InProc at 884B7322DF4A78EAB79EF1A0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236450240, false, "9d55b08d-54fb-4a0e-9119-5a602d98360c",
+			"@@@InProc at B2ADE9FF1FC1271A11AE5E43", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236451950, false, "11a5ad3b-0afa-4729-b4c0-8c870c34510c",
+			"@@@InProc at B2ADE9FF1FC1271A11AE5E43", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236452770, false, "422541df-500b-4459-820b-966ddf5d55fc",
+			"@@@InProc at 9BF04696510D7EA39E77002A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236456570, false, "d46897bd-5550-42ec-921d-4a907435d3f5",
+			"@@@InProc at 9BF04696510D7EA39E77002A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236457140, false, "8b1311aa-cf50-4ac8-92d2-0042c8e21df6",
+			"@@@InProc at E0AD26011FE5A371CCA82CD1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236458650, false, "1a3299bb-f185-402d-939f-db2fb5559af8",
+			"@@@InProc at E0AD26011FE5A371CCA82CD1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236459370, false, "49d9e2d8-6d16-4b31-9f60-76034c6d2257",
+			"@@@InProc at C557AC0658CDD6B507B24BE4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236462500, false, "54550e10-b5fc-4c2d-b708-58677429a5f3",
+			"@@@InProc at C557AC0658CDD6B507B24BE4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236463090, false, "336c0a80-8bd5-432b-ad2c-cfc72bd00ca5",
+			"@@@InProc at 610826A4F70442EEF157229D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236464810, false, "025c3d4f-0d06-445b-90a1-f87705df6649",
+			"@@@InProc at 610826A4F70442EEF157229D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236465700, false, "a46e46d7-842e-4499-ae49-13d77f098e35",
+			"@@@InProc at 0FDEA460B3AF421E0AD9D770", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236468410, false, "ec2b01c8-d42c-4a02-857d-77337dfd99a6",
+			"@@@InProc at 0FDEA460B3AF421E0AD9D770", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236468960, false, "aac8d62f-df5b-4c28-9b9b-00849c709f18",
+			"@@@InProc at F72A0B12916C893B7BDE7683", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236471050, false, "73cd6faa-b9f6-4c18-b2c2-24778c73c7ab",
+			"@@@InProc at F72A0B12916C893B7BDE7683", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236471680, false, "3f50c761-895e-4a68-ac94-783a343fd1ae",
+			"@@@InProc at C503631800CC217CE7156C49", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236474230, false, "f46b2d7d-823f-4437-9a0d-2d2620e70cc9",
+			"@@@InProc at C503631800CC217CE7156C49", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236474780, false, "85c94460-2240-4ef9-ba4a-c6a5e0f5fa6d",
+			"@@@InProc at 31F0742C38766C0BE34F1B13", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236477120, false, "51880799-887a-4dc7-8cf1-f0cbab4a11ab",
+			"@@@InProc at 31F0742C38766C0BE34F1B13", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236477820, false, "0c725444-5d2d-468e-9383-26420678516a",
+			"@@@InProc at EA60306EE3AC88E37159191E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236479680, false, "f7361c3d-4d24-462b-9537-047e8735c2c6",
+			"@@@InProc at EA60306EE3AC88E37159191E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236480300, false, "3ae7910b-67f4-4299-8ba5-810053b75c55",
+			"@@@InProc at 55798BE3548C68454BE33532", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236484090, false, "10f493e2-c8e5-4488-94de-558d66277be4",
+			"@@@InProc at 55798BE3548C68454BE33532", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236484630, false, "b27888af-770e-44e4-888a-ed9fc19f64ef",
+			"@@@InProc at 3E8AD62438A8F7C3DC140E03", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236486290, false, "491b2932-f835-4775-b208-c88d1e5b239c",
+			"@@@InProc at 3E8AD62438A8F7C3DC140E03", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236487200, false, "42b8c183-60a0-4b71-9f91-b20d860e44f4",
+			"@@@InProc at E6876765A3BACCBBDDA109FD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236489880, false, "52646c70-2e69-463d-89ee-4d3b2df63213",
+			"@@@InProc at E6876765A3BACCBBDDA109FD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236490440, false, "c79c481e-540d-454c-9b02-bc21dec32867",
+			"@@@InProc at 23363E238BA4A9950CD10F44", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236492750, false, "fe51e911-9001-4b9f-b5ef-66a794eda6e7",
+			"@@@InProc at 23363E238BA4A9950CD10F44", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236493410, false, "1b639ea3-6c31-4369-8b93-61fb06c0c355",
+			"@@@InProc at F3C58D7BFBA2BDE21686AA31", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236514230, false, "bba5b55c-aa70-4075-8fa7-8e86f739d01f",
+			"@@@InProc at F3C58D7BFBA2BDE21686AA31", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236514840, false, "33de5ac5-5bf9-465d-a58b-ae46751fea72",
+			"@@@InProc at 7C25BEA2BF4612D272ABFFC9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236517210, false, "2834e737-cb92-4382-9657-f71f190475af",
+			"@@@InProc at 7C25BEA2BF4612D272ABFFC9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236517790, false, "6057edf1-7c50-4dad-a77c-da2687a431a9",
+			"@@@InProc at 72CB315501A0B2F3B342BD00", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236520460, false, "2d7570dc-62ad-4b74-8361-bd1f2d9e06e4",
+			"@@@InProc at 72CB315501A0B2F3B342BD00", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236521230, false, "879ddc68-d44a-4952-9b1c-a40e925e7d2f",
+			"@@@InProc at A2A8103792FC85F6263CD491", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236524160, false, "b7190738-3755-4fca-9544-695a75206f38",
+			"@@@InProc at A2A8103792FC85F6263CD491", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236524940, false, "c56c501b-a11b-40a8-8bdf-dab96e03e4b1",
+			"@@@InProc at 7D97ECE1734833AA15F226CC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236528050, false, "fc8c11bc-dbca-4aaa-beb2-b750f6ea3dd3",
+			"@@@InProc at 7D97ECE1734833AA15F226CC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236528660, false, "a90ce7d7-42a9-41b7-a497-84cf2979ae66",
+			"@@@InProc at 7EAEC42BF3622FD687A502FE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236530570, false, "0331519b-cfb1-4811-a977-f9ee98b86bb8",
+			"@@@InProc at 7EAEC42BF3622FD687A502FE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236531280, false, "4ffc20f7-b139-4c71-ba62-cd9a0b98e595",
+			"@@@InProc at 0E16E93607E724CF8A4F7494", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236535520, false, "e46057f4-c408-43c5-8a27-63dcb4ab348f",
+			"@@@InProc at 0E16E93607E724CF8A4F7494", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236536050, false, "d557bc21-e4eb-4b6e-9bdb-978d6db520d0",
+			"@@@InProc at 1BE25724C402FD3A8AA59311", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236537530, false, "1f4376d0-fd56-4dda-8789-58bf5af5bf8c",
+			"@@@InProc at 1BE25724C402FD3A8AA59311", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236538040, false, "5db3ca84-0c5c-479d-b3c0-63ed6f92bfba",
+			"@@@InProc at B942516E2D5F292A82579CE5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236541410, false, "408502a3-8542-4171-acf2-39e29b61f700",
+			"@@@InProc at B942516E2D5F292A82579CE5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236542010, false, "749779a5-5179-49a3-974c-b0384cfdfdf4",
+			"@@@InProc at 186334ADF337E6A28FF3F72B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236543050, false, "87d0342f-cc36-490f-97da-2715a0bcd3be",
+			"@@@InProc at 186334ADF337E6A28FF3F72B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236543580, false, "8cb57f76-d2bd-49ea-a3d0-56dc333bb40e",
+			"@@@InProc at D43EB2899B933B337333EB4C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236549040, false, "6999cb5d-4f25-4fb0-bfd2-045193ee653c",
+			"@@@InProc at D43EB2899B933B337333EB4C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236549700, false, "65f2d9a4-7e38-4ae7-898d-29fe59ae52a8",
+			"@@@InProc at 311F590B06D908309EDB649D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236549890, false, "9994d086-3229-4e12-ae14-c8dbea931729",
+			"@@@InProc at 311F590B06D908309EDB649D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236551210, false, "b415f88c-5b5b-41a4-bafb-21e284f53b6a",
+			"@@@InProc at 52DB5A02FA29D01A672D5F9F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236556110, false, "0ae6c713-4a3a-4b30-898e-e7e7fbd83842",
+			"@@@InProc at CD1D65A4C03B36A58229F1D9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236556710, false, "98e1dc6d-58dd-4876-b0e6-065b64f3e192",
+			"@@@InProc at 52DB5A02FA29D01A672D5F9F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236556790, false, "fda9122d-f12c-4064-a38b-d497658b30a5",
+			"@@@InProc at CD1D65A4C03B36A58229F1D9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236557740, false, "5cadc154-905a-4d6c-8003-76b719514084",
+			"@@@InProc at F6EA54EF532C4CDFE4ABE71E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236563760, false, "855bafe8-6b72-4fc7-a96e-dc9ddc1c8712",
+			"@@@InProc at 29D391A4E67EC100737E8FCE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236564700, false, "a8b6a396-6311-4e0d-b08a-5bd03187b47e",
+			"@@@InProc at F6EA54EF532C4CDFE4ABE71E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236564770, false, "9aad4f7d-b7c7-4395-899d-6ed0a20ffcc2",
+			"@@@InProc at 29D391A4E67EC100737E8FCE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236565930, false, "1f416f5b-de28-4873-aaa3-7481a471fd3f",
+			"@@@InProc at 771D5A0F6DB76C711F0BBCC7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236571480, false, "02472caa-85e6-49eb-9787-decd745a322b",
+			"@@@InProc at B12374C545E336E6F78DE6C0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236572270, false, "29e1f8e5-17e5-4f88-bec2-4dfe7313800c",
+			"@@@InProc at 771D5A0F6DB76C711F0BBCC7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236572350, false, "843fc4a7-638e-4867-92c8-4a9dbfe4b31d",
+			"@@@InProc at B12374C545E336E6F78DE6C0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236573500, false, "b42cbb24-466d-4f8f-80ed-6634e0b214ef",
+			"@@@InProc at 35067B672778EA8B1162FF20", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236578810, false, "2c5eeb32-2019-45d3-b100-a10dd794f99a",
+			"@@@InProc at 35067B672778EA8B1162FF20", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236579570, false, "b29d5385-36f8-4c8a-aaa5-b0db923fe05c",
+			"@@@InProc at E98B0B74A5A367A10C0ECE57", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236579650, false, "99deef45-9830-4748-b437-9df1555ff5f0",
+			"@@@InProc at E98B0B74A5A367A10C0ECE57", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236580640, false, "7d866d81-2a97-4768-8e53-f75fa23ef99f",
+			"@@@InProc at 010998B1A96C2CF3BD4F9D9C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236585870, false, "4e31895c-84ec-4447-ae67-abd70d8f0036",
+			"@@@InProc at 010998B1A96C2CF3BD4F9D9C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236586530, false, "9532b12f-2812-497b-be6e-ce16f10a0d0c",
+			"@@@InProc at 2EEC76C2D2A52588A57AED7F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236587200, false, "8dcdc82b-b318-4db3-88ae-b90d584f5539",
+			"@@@InProc at 2EEC76C2D2A52588A57AED7F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236587970, false, "bb899283-9e6f-4bc1-8cb1-dad19b3a5b27",
+			"@@@InProc at 4A1D1E5D45D487A6B09BBE64", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236592270, false, "abfddf27-bf59-4a4d-aea8-b83bf2d83a9a",
+			"@@@InProc at 4A1D1E5D45D487A6B09BBE64", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236592900, false, "b38dd2b5-5718-4cd0-b9fc-ba1321567434",
+			"@@@InProc at 8ABF3696982AD8B74DE51FA3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236594430, false, "d351ec63-7346-4bfc-a73e-926aa3d56e58",
+			"@@@InProc at 8ABF3696982AD8B74DE51FA3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236594960, false, "caf0f5e1-6f51-4918-ad3b-8962e8b93f5d",
+			"@@@InProc at 5633860A87AE310E938BB25E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236598120, false, "76226f41-55f5-40e6-b918-e7a8a4664b52",
+			"@@@InProc at 5633860A87AE310E938BB25E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236598670, false, "cd0bdaa5-9615-4a3e-8eb7-4e204e510dc1",
+			"@@@InProc at 87EDB8024D9401C43280D167", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236600210, false, "1b23b270-abcd-408e-a0ae-0aceb8ebc873",
+			"@@@InProc at 87EDB8024D9401C43280D167", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236600740, false, "e1ebbc52-9262-412e-b67e-e14015054049",
+			"@@@InProc at 1FD4783F8B68293CDE7FB4EE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236604170, false, "2b320ad3-37a3-444d-9484-92a34e8e21be",
+			"@@@InProc at 1FD4783F8B68293CDE7FB4EE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236604930, false, "f16c5ce6-9335-41c7-9bd8-381b4b7407de",
+			"@@@InProc at 03AA55726DF74C4CB0557A33", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236606030, false, "92703ce0-c074-47cc-a0c9-9353133dab1d",
+			"@@@InProc at 03AA55726DF74C4CB0557A33", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236606550, false, "44e74548-8f53-4726-b499-935a2d8acef8",
+			"@@@InProc at D9156EAFDF69989F805AF38E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236610140, false, "e5aedff1-f380-4fbd-a9a8-851c120583eb",
+			"@@@InProc at D9156EAFDF69989F805AF38E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236610740, false, "5c6e7ee8-af21-4ea4-9638-5e4ba499b861",
+			"@@@InProc at D946110434E59523324D6A19", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236611790, false, "21523b8e-cf5a-466d-8393-91f55b101dbb",
+			"@@@InProc at D946110434E59523324D6A19", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236612300, false, "70c1866e-3160-4f9e-ba7a-6467b899b20c",
+			"@@@InProc at E6EA9F251A2E6CEFB6CF9B75", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236615890, false, "c8cacb21-9e02-4f1c-8e7e-a0154a479a4e",
+			"@@@InProc at E6EA9F251A2E6CEFB6CF9B75", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236616560, false, "c88db96b-5efb-487e-a4b2-9accbfb4b776",
+			"@@@InProc at 315AC7C80A2323D05BE6FF75", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236617480, false, "b1695e31-ee79-4c31-8656-3bcb739d2058",
+			"@@@InProc at 315AC7C80A2323D05BE6FF75", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236618040, false, "cd83c02b-ea5c-4501-838a-ec4daaf44dc1",
+			"@@@InProc at 3F0FCE1803807459B9F8EB84", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236621580, false, "c0c73e16-b967-4c43-a4d1-7360e5df9b84",
+			"@@@InProc at 3F0FCE1803807459B9F8EB84", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236622340, false, "9e014ac4-ba8d-4b0a-8e13-2374bee24d7e",
+			"@@@InProc at F261B6D3FF6E2E4269A30BB7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236623420, false, "874230d9-f49d-4d62-baeb-f118688a83f7",
+			"@@@InProc at F261B6D3FF6E2E4269A30BB7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236623940, false, "8c10163c-a7a5-45b5-85dc-e300b81ca3c9",
+			"@@@InProc at 8033070A45530102CC5D8F3B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236627780, false, "0db2848e-e533-42d4-97c0-d7116ffb4a4e",
+			"@@@InProc at 8033070A45530102CC5D8F3B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236628400, false, "527dc28e-8fc9-427d-8bbd-48cc747f6937",
+			"@@@InProc at 5CF1B3F4D1BA323C10214DB3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236629030, false, "8b21cbd0-1140-459b-8a52-4959bed78d29",
+			"@@@InProc at 5CF1B3F4D1BA323C10214DB3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236629550, false, "b6166743-69e9-46ec-9357-92d42b38f810",
+			"@@@InProc at 0EDC9E8D6F656C5F72558360", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236633460, false, "1eac9fce-fbad-4e9c-a972-e7442a25c7ea",
+			"@@@InProc at 0EDC9E8D6F656C5F72558360", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236634150, false, "7c87d49c-3fe4-4581-b35f-40bbeb8bf70c",
+			"@@@InProc at F1F9F92E9AE62EC3A825A638", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236634690, false, "08463e43-6577-49ad-ad54-6b2f90a45daa",
+			"@@@InProc at F1F9F92E9AE62EC3A825A638", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236635210, false, "3aeba862-98c5-4522-8077-298511f74b9f",
+			"@@@InProc at 4D62349BBD132C842133F1AB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236639110, false, "63a6ef3c-ff3c-4c59-b2f2-6d415735a969",
+			"@@@InProc at 4D62349BBD132C842133F1AB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236639850, false, "7ccd4b3e-0a96-4380-ae84-f94de686bddc",
+			"@@@InProc at CABD67CB2794D3E93B11E261", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236641480, false, "5eff645b-097e-427e-b2f2-ba528a26d964",
+			"@@@InProc at CABD67CB2794D3E93B11E261", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236642190, false, "f0638a89-429f-4afc-af3c-24043d38d6d3",
+			"@@@InProc at 1E4B921F544BA4A3FE874951", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236646720, false, "ca8c562b-bdad-4fc5-af70-5004330a812a",
+			"@@@InProc at 1E4B921F544BA4A3FE874951", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236647720, false, "a054ad8d-e3e8-4758-8ba7-aa4eabf4da9e",
+			"@@@InProc at 0684A4BC707801C79C816A1B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236648440, false, "729ef6e0-12bb-40a5-84f2-85c097648b53",
+			"@@@InProc at 0684A4BC707801C79C816A1B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236649030, false, "c09e7363-b0b0-4165-a4c4-a7fa88e4149b",
+			"@@@InProc at 56EC4E958049470B2AB23751", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236654650, false, "2e9c864b-a74e-43cb-b3cd-bfce095c6aa6",
+			"@@@InProc at DE76A059598B6C7F817CFAFA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236654940, false, "88f7387e-1d5b-4b02-97d4-fdced118a6b5",
+			"@@@InProc at 56EC4E958049470B2AB23751", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236655910, false, "c2355299-cc50-4e1c-b7a3-3f8751b2f34b",
+			"@@@InProc at DE76A059598B6C7F817CFAFA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236656090, false, "3dfb4973-6377-40b4-989c-6e314248fc7f",
+			"@@@InProc at 0CF8DEBB19DE83293E733757", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236661340, false, "3c03cdb3-503c-4afc-b5cf-0140e0c2e0db",
+			"@@@InProc at 0CF8DEBB19DE83293E733757", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236661870, false, "bde19c0a-781c-4111-923e-db4efe361024",
+			"@@@InProc at 64BF5E5FC31840BEF2D2941F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236662380, false, "20ec6d94-e464-4a9d-8517-9af7a696ae86",
+			"@@@InProc at 64BF5E5FC31840BEF2D2941F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236662970, false, "20b4894b-175d-4b24-b7f2-d3ef72f7736b",
+			"@@@InProc at 2CA943E3F1C413C4942F9244", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236667470, false, "d4c68cc8-2472-4110-9f95-ab6ea037ba4d",
+			"@@@InProc at 2CA943E3F1C413C4942F9244", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236668000, false, "a93428c0-5008-4a11-b152-a234691f4354",
+			"@@@InProc at AD9F7DFF977FD6B09F579D1F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236670070, false, "78dd422a-e7cb-495c-9a06-b8db47b99ab0",
+			"@@@InProc at AD9F7DFF977FD6B09F579D1F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236670830, false, "b32d6125-f09f-44d8-91a2-78c02a2c49b3",
+			"@@@InProc at 828ADA1462E1F19DED5F6A28", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236673100, false, "507a12e9-7232-48f3-a8e4-d3199d14baf2",
+			"@@@InProc at 828ADA1462E1F19DED5F6A28", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236673860, false, "eb4f7f6d-de99-4c7d-b993-b8fe3571e19e",
+			"@@@InProc at 24EE059F2B71F12C33C1ACA5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236677350, false, "e4d05b3d-caba-47f9-9f46-9d130cda6a5d",
+			"@@@InProc at 24EE059F2B71F12C33C1ACA5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236677870, false, "b1a07dd5-af8a-45e1-8d3d-714f418c46b8",
+			"@@@InProc at 1964C25138356A3B4D427A0D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236679480, false, "6f7278a4-5471-49e9-ab63-9de22ac29515",
+			"@@@InProc at 1964C25138356A3B4D427A0D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236680110, false, "dd4d7ce8-6a42-465d-a859-26ca9d90d3f5",
+			"@@@InProc at 784DB8A12255041102432939", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236683160, false, "b6e3371b-e11e-4881-bf0f-2073af318104",
+			"@@@InProc at 784DB8A12255041102432939", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236683700, false, "3c412a47-a5ec-4ad4-be0b-0e8368d221b3",
+			"@@@InProc at 8AA3CE7DDB386C453BD14D10", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236686040, false, "c4355514-c952-4e22-8fda-b6c1e5a79122",
+			"@@@InProc at 8AA3CE7DDB386C453BD14D10", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236686660, false, "73fd0c65-b281-4962-9e1a-cf94d748a2f3",
+			"@@@InProc at B69256371A9CBA2DE2BC8E78", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236688960, false, "2405ce81-3818-4f9e-805a-db6172a5b4cf",
+			"@@@InProc at B69256371A9CBA2DE2BC8E78", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236689490, false, "762cec1b-df09-480d-9f12-a56383865a49",
+			"@@@InProc at 38177411803A38291B8A4E66", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236691790, false, "85c88099-650f-4f78-9375-eea4bd6239a9",
+			"@@@InProc at 38177411803A38291B8A4E66", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236692300, false, "5a5b8e88-e23f-430c-8841-16ecf80ba81c",
+			"@@@InProc at 85E964A7707C71CF25375636", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236694540, false, "3541a4d1-de21-4b37-a254-7d8a4aed235c",
+			"@@@InProc at 85E964A7707C71CF25375636", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236695130, false, "7c947bd3-1757-4af5-b56b-1a7a6fd2d727",
+			"@@@InProc at CFAB20783149995FFE289E74", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236697840, false, "11f63ae7-3282-4428-ad22-a6b78fd840f6",
+			"@@@InProc at CFAB20783149995FFE289E74", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236698450, false, "9cb549b2-1fcf-4efe-816e-bac78064862c",
+			"@@@InProc at 4F2F8BA7521A3F35EBD8DD8B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236700540, false, "346646a3-9cf1-48cb-a766-2a5bc68e580c",
+			"@@@InProc at 4F2F8BA7521A3F35EBD8DD8B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236701060, false, "c89ef7b1-8a1c-4013-ac8b-994443f1cfed",
+			"@@@InProc at D1E4C3D9E9E5E63DA88487CB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236703920, false, "718d9a98-815f-46fe-a639-29aace567874",
+			"@@@InProc at D1E4C3D9E9E5E63DA88487CB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236704440, false, "6c90684c-b097-4a38-becd-b2705e53386c",
+			"@@@InProc at 026E2449CA43DD2B3118114E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236706080, false, "15d1bebd-da36-4d11-bb69-ebad501e6b74",
+			"@@@InProc at 026E2449CA43DD2B3118114E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236706620, false, "d2b983e8-e6b1-445a-bcc8-aafe5ad961b4",
+			"@@@InProc at 7344A4AF9A88602C59364E81", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236709660, false, "120cbd33-1bc8-4e9f-b52c-ef0caa5fab72",
+			"@@@InProc at 7344A4AF9A88602C59364E81", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236710180, false, "a7c2a94a-917c-4cc8-9e82-07bcc93ca5cb",
+			"@@@InProc at 09878463D4F1CFB47E22EE14", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236711640, false, "3ac1d4cf-7d5d-41db-b96b-50d73b8c6a35",
+			"@@@InProc at 09878463D4F1CFB47E22EE14", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236712490, false, "38681017-eb88-4998-833e-f094f6127403",
+			"@@@InProc at 49D5B29A7762BA706BDE061D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236715160, false, "6950b5c9-c54a-4d97-99c4-c59ad3b7976e",
+			"@@@InProc at 49D5B29A7762BA706BDE061D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236715680, false, "55909375-c485-4663-acb0-9eeb3dae4a79",
+			"@@@InProc at 3044E8C3D10F5A15AAE1D2BD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236717520, false, "f1532487-d4c9-4d0f-8d9c-8219bf3031b5",
+			"@@@InProc at 3044E8C3D10F5A15AAE1D2BD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236718040, false, "1022b6a9-68ca-41b7-b805-2aae9e4944a8",
+			"@@@InProc at 01275132657C58BD655542D6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236721140, false, "6f2b2bdc-3ccb-4252-8f9d-c9f80ab82785",
+			"@@@InProc at 01275132657C58BD655542D6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236721750, false, "4d31d6dc-3d4c-4593-b1d3-2726facc2ac9",
+			"@@@InProc at 03E9A51C79F346FDF5ED7E04", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236723390, false, "72b206b1-1b72-4054-bbb2-71dd6444d23c",
+			"@@@InProc at 03E9A51C79F346FDF5ED7E04", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236723920, false, "d331a439-5038-4a78-be7e-fcac824c50eb",
+			"@@@InProc at 87029FFFEB2197ED37D6B4F9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236727230, false, "f68e4040-363e-4548-863f-b812cc025b9c",
+			"@@@InProc at 87029FFFEB2197ED37D6B4F9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236727760, false, "69544f01-3705-4b07-9968-2fbfe91159af",
+			"@@@InProc at 4133ECA9AA2AD32DDD931B5B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236729690, false, "dbcfc726-e182-481f-9e83-59549d8a6b82",
+			"@@@InProc at 4133ECA9AA2AD32DDD931B5B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236730350, false, "b61a10ed-1bb6-4b23-a74d-f39abf674bc9",
+			"@@@InProc at 2D2A9BE9BB5A1A8E8A057E75", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236732920, false, "25b4dfde-ed8c-4659-8724-b96095298a9e",
+			"@@@InProc at 2D2A9BE9BB5A1A8E8A057E75", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236733450, false, "a626e8aa-8ee4-4412-b21e-fc8df0435599",
+			"@@@InProc at BA106D6F31D415680510F087", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236735790, false, "dac03e5a-bba6-4279-8983-7109a9a7485e",
+			"@@@InProc at BA106D6F31D415680510F087", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236736400, false, "fcde3f85-45ab-48a5-857f-c09bdbd12a64",
+			"@@@InProc at 8777FB932ED45311B2EB727F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236740280, false, "31e6468d-8e9b-4f21-a90c-1da9781919f4",
+			"@@@InProc at 8777FB932ED45311B2EB727F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236741160, false, "264810a2-4091-40a9-89ff-3255070b34a2",
+			"@@@InProc at C55026C3FE7EE6CB2430E384", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236742030, false, "7ba96246-2884-4bec-afd0-e030fe5c8f73",
+			"@@@InProc at C55026C3FE7EE6CB2430E384", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236742580, false, "9eec1734-54b2-4f1c-a94f-90e255e2b931",
+			"@@@InProc at 249D070744483893804E0EF5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236746770, false, "860af44a-253f-4870-b211-dd626210e5c9",
+			"@@@InProc at 249D070744483893804E0EF5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236747450, false, "469a91bc-fb8d-44cd-bd92-b872eeaaea02",
+			"@@@InProc at B61D309B18F4565CF03E5B70", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236749850, false, "243d5497-1c72-4b8e-bfb3-8cc1e0c25cc3",
+			"@@@InProc at B61D309B18F4565CF03E5B70", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236750640, false, "0dd17713-2292-45a4-a993-4c619ef1ff07",
+			"@@@InProc at 007AD5C1B8DA42815585AB31", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236753780, false, "197f984d-d65e-4348-9b36-e202053306ca",
+			"@@@InProc at 007AD5C1B8DA42815585AB31", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236755020, false, "d4378198-e152-4190-8788-0c8f8b039ce8",
+			"@@@InProc at FF09768F2E32BC945B3637BB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236760430, false, "db19f892-e82a-40ba-a557-f68872cba142",
+			"@@@InProc at FF09768F2E32BC945B3637BB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236761860, false, "8afef485-9b7f-4d9d-a8b9-c0b8d518c3b5",
+			"@@@InProc at 5C45F0D65C6617049E1DB157", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236763370, false, "f2c3e5ef-e300-49ef-8e0c-2c5378e533d0",
+			"@@@InProc at 5C45F0D65C6617049E1DB157", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236764170, false, "80f98df5-1e35-45bc-aa28-eca8112753f1",
+			"@@@InProc at 73A604D1BC96B650CFC5FE1C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236771990, false, "a3205302-4af6-4181-8f89-252d5f637c90",
+			"@@@InProc at 73A604D1BC96B650CFC5FE1C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236773180, false, "c8cb1e13-53f0-4dd8-954d-ec4e0a28d004",
+			"@@@InProc at 1EFD84B307AB2D5A79FA09E3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236774390, false, "cd715bbe-e985-4af8-b72a-ead82583d223",
+			"@@@InProc at 1EFD84B307AB2D5A79FA09E3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236775510, false, "b5a47d7f-43fe-44d0-bbaa-a93ddd14390b",
+			"@@@InProc at E662D086C97AE7BDEBD0BD1F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236781810, false, "eca4b1ce-70c2-4eee-a27e-4515ea5935fc",
+			"@@@InProc at E662D086C97AE7BDEBD0BD1F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236782970, false, "c2cae1dc-11eb-4c1e-83c5-93b20ac203d8",
+			"@@@InProc at 2CD3E4A85812EFBAF9B41AFA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236784620, false, "89ef9713-5a41-4d97-a634-4a63852c1982",
+			"@@@InProc at 2CD3E4A85812EFBAF9B41AFA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236785410, false, "098d2451-7627-4af9-accf-07d0ad363295",
+			"@@@InProc at 743E53F281CA655C637DB104", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236790450, false, "ed969a8a-6957-4e96-bb67-50616257e4cb",
+			"@@@InProc at 743E53F281CA655C637DB104", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236791250, false, "c04b935e-bcbb-4652-b35f-4583e5260a25",
+			"@@@InProc at 0F10B55E5F6F3B6FBD1E15B0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236793010, false, "8a2cc739-e3fb-4be7-8947-9b77aefd1e17",
+			"@@@InProc at 0F10B55E5F6F3B6FBD1E15B0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236794110, false, "0adb4151-e3ac-4a90-8956-64df9fd5644c",
+			"@@@InProc at 38B96A5FA2301933003046F6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236798880, false, "5d2fb034-c6b9-416a-8a06-63c01b16e90d",
+			"@@@InProc at 38B96A5FA2301933003046F6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236799680, false, "fc2a2c05-8771-4345-a5dd-64140be5fb75",
+			"@@@InProc at 9DCC4EF5C7717A1F4762047B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236802510, false, "804f1237-788a-4355-928c-c33104c03b1b",
+			"@@@InProc at 9DCC4EF5C7717A1F4762047B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236803290, false, "af436bb6-6c4a-45ae-acfa-f1a48ed10428",
+			"@@@InProc at E46B565E1776D4B4EEC1714A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236809040, false, "baaec040-0cdc-42f6-86a1-6ed20707ecca",
+			"@@@InProc at E46B565E1776D4B4EEC1714A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236810250, false, "0319d5b8-1510-4179-904e-e7ec64f3129b",
+			"@@@InProc at D85C9C4FAC6FE95EF893C126", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236840690, false, "7e87805e-c32c-4ea5-abfb-d8964c880d3e",
+			"@@@InProc at D85C9C4FAC6FE95EF893C126", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236841880, false, "208e8b2d-df22-4473-9819-fa49dadc1003",
+			"@@@InProc at B9C3722BEF3CC3AFCFEDD846", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236846150, false, "f9a45c7b-7dcb-4750-b2f4-cbb8907ed6f7",
+			"@@@InProc at B9C3722BEF3CC3AFCFEDD846", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236846750, false, "792eaae5-d934-45c8-aafc-69bdae762c1a",
+			"@@@InProc at B7CFEA469837157FD0C756FA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236849480, false, "a6057b1c-40a7-4203-aea7-ab57ba6f2904",
+			"@@@InProc at B7CFEA469837157FD0C756FA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236850190, false, "be3bd742-9e7b-4c4f-81fb-69ae634a14b4",
+			"@@@InProc at 49E1D062B17D19FD32FA8D31", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236852220, false, "0616ac83-36d8-408c-bc9f-1d206c8bf79c",
+			"@@@InProc at 49E1D062B17D19FD32FA8D31", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236853300, false, "fe79d45b-597f-4c8e-9caa-119e72104449",
+			"@@@InProc at 05A2D547EBD608B174CBF5FA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236857940, false, "d0ad7841-30be-4618-b4df-d850a35518a4",
+			"@@@InProc at 05A2D547EBD608B174CBF5FA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236858740, false, "4213410f-d4d6-49e5-ae20-6a96d441ae95",
+			"@@@InProc at 8B6A6C1609946D82FECDF877", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236860600, false, "8ff50aec-a800-43ea-9c7a-5262e35af5a3",
+			"@@@InProc at 8B6A6C1609946D82FECDF877", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236861250, false, "0d5f5d6d-80e4-49cf-b2fc-7a6917e70c7c",
+			"@@@InProc at D189F035240EF6D0448E9D27", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236864250, false, "e9812591-3fc2-410e-ab25-3c95325230c2",
+			"@@@InProc at D189F035240EF6D0448E9D27", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236865050, false, "c6b38886-3e60-451b-ae5e-d0a5e472d114",
+			"@@@InProc at E968D3D25D41A6F124AAB37B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236868040, false, "8503f485-1591-481b-ad7d-63f7eff899d5",
+			"@@@InProc at E968D3D25D41A6F124AAB37B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236869090, false, "66697261-2be4-4831-b737-6d8bf8397c9f",
+			"@@@InProc at 27D55A1F1A8DBBCF18A569A3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236872040, false, "cf36ff26-eff7-46ac-911a-06c337801357",
+			"@@@InProc at 27D55A1F1A8DBBCF18A569A3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236872650, false, "757358a7-f3df-4c29-a2bb-808b9fb3342a",
+			"@@@InProc at 987B7BE6A1A7DF9F6C848ABD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236875380, false, "85fe1e75-73b8-4453-bd4a-ca50a3b80980",
+			"@@@InProc at 987B7BE6A1A7DF9F6C848ABD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236876600, false, "efdacb8f-911a-452e-88f4-ea29679c288b",
+			"@@@InProc at B52DA45FF46C046011BD9DEE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236879260, false, "46be7ae2-dba7-43ca-b979-515f6ed72e1e",
+			"@@@InProc at B52DA45FF46C046011BD9DEE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236879930, false, "a2eb31e2-ac6a-4021-96ac-9c6d36cfdefb",
+			"@@@InProc at 9CB57BB0D9305FBE097A6FE1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236883630, false, "2d5cc978-09db-482c-a4e6-7324f57627db",
+			"@@@InProc at 9CB57BB0D9305FBE097A6FE1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236884170, false, "9c7c5ba7-fe85-4dbf-815b-cc80288061dd",
+			"@@@InProc at 4CEB917F776C4651A5090518", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236885700, false, "39404249-1c94-483a-bc0d-9cb8be19b30a",
+			"@@@InProc at 4CEB917F776C4651A5090518", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236886360, false, "0c37f162-6c40-4052-a64b-8d8286d1abdb",
+			"@@@InProc at 01A03BF98465197F0A55102F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236889320, false, "abcc5bef-1b16-48bb-8449-834cb9fc43cf",
+			"@@@InProc at 01A03BF98465197F0A55102F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236889850, false, "eb7c7bce-865c-4737-934e-4d16f2a10e88",
+			"@@@InProc at F8428FB9F7E343763CB853A6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236891570, false, "1ce8353c-0866-4644-b3c2-19e908991bea",
+			"@@@InProc at F8428FB9F7E343763CB853A6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236892110, false, "368b342b-2e17-4716-ad9a-0ff5e53a3aed",
+			"@@@InProc at 28B33343C9C89257500BA8D8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236895140, false, "9c4bd295-68ad-4bc5-a5b5-f49eda3b386b",
+			"@@@InProc at 28B33343C9C89257500BA8D8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236895790, false, "f7379625-eeb0-461c-ab27-cabcf73509be",
+			"@@@InProc at F50269C8F4382FB974EF971B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236897340, false, "987cfc51-f919-47b8-ba0b-22cba1a7c091",
+			"@@@InProc at F50269C8F4382FB974EF971B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236897950, false, "f5f494d4-c566-4367-a918-cba967cc1742",
+			"@@@InProc at 75FADA7B652AF2C39DD27E6F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236901580, false, "4eed7040-e00b-4933-b653-0fc6b689d95e",
+			"@@@InProc at 75FADA7B652AF2C39DD27E6F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236902300, false, "f27024fc-92b7-4dc5-b821-e94a71734049",
+			"@@@InProc at 16EA41BC4591167D5F346A1C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236903400, false, "8c13800f-3a8d-40ce-80c5-a98b31e16bcf",
+			"@@@InProc at 16EA41BC4591167D5F346A1C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236903940, false, "98a780c4-58b8-49d1-8f6b-28651450651f",
+			"@@@InProc at 5FB858A0E9A8A97A6D454AD6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236907970, false, "a40f9053-2349-48a6-80ad-893b56caaae2",
+			"@@@InProc at 5FB858A0E9A8A97A6D454AD6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236908620, false, "7d5cae1a-0adb-43c8-8e15-115f96fa46dd",
+			"@@@InProc at 40AE1D5F7339F42BEC53E260", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236909180, false, "350698a8-68c3-4430-a50b-49cf0badd14d",
+			"@@@InProc at 40AE1D5F7339F42BEC53E260", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236909710, false, "314bbc72-d569-45fb-b9d5-caf48c1a248a",
+			"@@@InProc at 1F60B69E35F3510EFEBB3655", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236914160, false, "0f78a157-1d12-4430-9db5-fab4e9257dcd",
+			"@@@InProc at 1F60B69E35F3510EFEBB3655", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236914680, false, "90b99243-a500-45ee-9372-fc7ec50633ae",
+			"@@@InProc at 834CCE8FD5B26897A28BD07B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236914910, false, "7866dfb9-72f6-4d0b-a63d-5db9df5028cb",
+			"@@@InProc at 834CCE8FD5B26897A28BD07B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236915590, false, "3c1a4b81-a906-4f20-a86d-37924a37422b",
+			"@@@InProc at C9C22E446FAFF8695AF15FCA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236920310, false, "a945b1b2-5c07-4a35-a32e-ef31c2f0cf46",
+			"@@@InProc at C9C22E446FAFF8695AF15FCA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236920830, false, "832a4c45-7c08-425b-8182-016399a65915",
+			"@@@InProc at 62CB6AD67AF93B4C3F6AA9E8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236921340, false, "9a0d2b22-c858-4e77-9b5e-b5926030c6aa",
+			"@@@InProc at 62CB6AD67AF93B4C3F6AA9E8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236921860, false, "3cd5a699-a311-4293-853b-f9fa641c923b",
+			"@@@InProc at 6CCF700FC37C908CFA6ACAA7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236926160, false, "65d77456-2f65-4bfa-b46a-645c80e3e24c",
+			"@@@InProc at 6CCF700FC37C908CFA6ACAA7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236926690, false, "94638902-4884-41c7-9222-3294c5cc0d9f",
+			"@@@InProc at AB4D2E30DF0B273083455142", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236927550, false, "93c4c632-bbf2-494a-b1d3-0ec46298e2cd",
+			"@@@InProc at AB4D2E30DF0B273083455142", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236928080, false, "ab6ccc78-8c1e-411b-a0b6-28eb55529abe",
+			"@@@InProc at 72F7E6CBE5F87CC0E88B0A3E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236931880, false, "30fdb01e-49bb-4d8c-9737-13745f2b7df2",
+			"@@@InProc at 72F7E6CBE5F87CC0E88B0A3E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236932390, false, "9753de31-94e5-493b-8dcf-3a095f2be274",
+			"@@@InProc at AD1A0A70F23E6336AD846491", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236933600, false, "26d74936-8290-45fd-8e2a-12919967bec0",
+			"@@@InProc at AD1A0A70F23E6336AD846491", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236934210, false, "711ce649-2537-4186-93a1-21db250450a0",
+			"@@@InProc at C79D25546809F2788DE7F034", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236937550, false, "96aae0ae-2dfe-4168-9e87-abf576413c63",
+			"@@@InProc at C79D25546809F2788DE7F034", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236938170, false, "6b6fc980-883d-40f8-a693-09dbd01b073a",
+			"@@@InProc at 8B8E735712D6CE90B57163F3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236939900, false, "319d2962-88da-46a7-9f97-08ba0637e39a",
+			"@@@InProc at 8B8E735712D6CE90B57163F3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236940640, false, "68614e8b-474d-47b8-8164-702a14351af4",
+			"@@@InProc at CF4ED2A8313C427BD9A28756", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236943470, false, "a83c0e94-d6f1-46d5-a3a6-6cc0e72d129f",
+			"@@@InProc at CF4ED2A8313C427BD9A28756", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236944070, false, "3eefee7f-519f-485f-81e2-5973319f51ac",
+			"@@@InProc at D982B2D9A13F4530FDE7BF8A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236949250, false, "9dfa9081-cc2a-4b7f-aeef-6b32ba64d2ad",
+			"@@@InProc at D982B2D9A13F4530FDE7BF8A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236949960, false, "29e71490-0094-476a-94a4-b7cb3acdeb62",
+			"@@@InProc at 1D06A7BC33F318741E454AE9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236952560, false, "fe325f70-c92e-4d46-8f18-1ab156a4274f",
+			"@@@InProc at 1D06A7BC33F318741E454AE9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236953370, false, "b7cd8c85-dfb3-4d26-b20f-0cc17e37d21a",
+			"@@@InProc at 2BA6C12B5C51EDB4C3F015FB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236955730, false, "9dd2a9c8-8e9e-490c-bacd-ad4cf2e7f72a",
+			"@@@InProc at 2BA6C12B5C51EDB4C3F015FB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236956540, false, "3cc82412-1375-4582-8ec3-64e5625784dc",
+			"@@@InProc at 50B46030C1B679A4AAC2F1F1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236959820, false, "7530980a-148e-4975-8de6-f16704736b7a",
+			"@@@InProc at 50B46030C1B679A4AAC2F1F1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236960350, false, "7841d2ae-f254-4967-83c8-d1feb3ba9a83",
+			"@@@InProc at D786B4815BA68319BD5A801F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236962450, false, "7e9b8f09-6dcb-4c2c-b209-6d0f0ad67afb",
+			"@@@InProc at D786B4815BA68319BD5A801F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236963100, false, "92270fc0-29c1-402f-8c0c-1549f3286cb5",
+			"@@@InProc at 903204452555CB465FA7879B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236965660, false, "c0b3285f-a21c-4943-8a19-406b496c71ca",
+			"@@@InProc at 903204452555CB465FA7879B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236966190, false, "83bbfdb9-25e7-4a1f-a38c-3bcf47ef30ec",
+			"@@@InProc at 9C60774E8AD2698F60F7609A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236968420, false, "a6a10384-5b57-41f2-b856-9e488d765cc2",
+			"@@@InProc at 9C60774E8AD2698F60F7609A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236969090, false, "0b7bc139-8d96-488b-941f-3beaa1b789ce",
+			"@@@InProc at F215EB4817D8DE839AA68EC4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236972420, false, "f07a2073-7f60-493d-917b-5edb5cb77be9",
+			"@@@InProc at F215EB4817D8DE839AA68EC4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236972960, false, "7d3fad2c-fb5b-4987-8e6a-9bb7e2a57c45",
+			"@@@InProc at 074FA077BEC1D9A49AE8AE55", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236974450, false, "cd1bcf96-cde6-4cc4-b019-6e32b07f5694",
+			"@@@InProc at 074FA077BEC1D9A49AE8AE55", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236975050, false, "5f170f59-1dd6-43b9-9bcb-b767253098d6",
+			"@@@InProc at 220E362BEF84C580B6938F54", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236978280, false, "610f830e-a4b5-412f-9437-b830541a353f",
+			"@@@InProc at 220E362BEF84C580B6938F54", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236978800, false, "d42be921-d37f-4992-882b-b74b3a1089ad",
+			"@@@InProc at B8CF3A7F594FF2D178425476", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236980360, false, "b3d5feb1-528c-4fcc-a07d-9d31c5dad338",
+			"@@@InProc at B8CF3A7F594FF2D178425476", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236980960, false, "327fb64c-c718-4cd4-8a40-739ac6b7347c",
+			"@@@InProc at 31396E2EED9709D3005FFFAC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236983820, false, "24fad070-ea53-48ae-b666-226389a5883f",
+			"@@@InProc at 31396E2EED9709D3005FFFAC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236984340, false, "45e9d165-1b18-4bee-86da-5c6263ff101c",
+			"@@@InProc at 8A23FDAB2BA299BDCAF583B8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236986280, false, "f1584bd6-9864-4c70-990e-69b1cd3d5a44",
+			"@@@InProc at 8A23FDAB2BA299BDCAF583B8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236986850, false, "1d935bea-ce13-4d53-920e-043ff01e2a76",
+			"@@@InProc at F16762150F6C220B05C83E1B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236989660, false, "9194ba09-09a5-4745-b2fc-c03c96c5c376",
+			"@@@InProc at F16762150F6C220B05C83E1B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236990190, false, "f35ff4c4-b8ec-4e56-a94b-b2e68862767f",
+			"@@@InProc at 10E3B2FF404566F09C90BC70", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236992060, false, "ee319599-7875-4af1-85a3-989f5a35f284",
+			"@@@InProc at 10E3B2FF404566F09C90BC70", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236992650, false, "2aea0707-50d0-4dfa-adf5-d85a51fcddf7",
+			"@@@InProc at 48FF47549B9F37D201E11647", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236995050, false, "ece27d6d-7cdd-4a0f-a0ec-dd3c2a59d523",
+			"@@@InProc at 48FF47549B9F37D201E11647", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236995570, false, "799f541f-e3aa-4e07-ad63-c2069297fd64",
+			"@@@InProc at 515ECD78DBFA4100CB6BC9B8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236997670, false, "8bde790c-104e-4985-acec-4444c8334763",
+			"@@@InProc at 515ECD78DBFA4100CB6BC9B8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878236998270, false, "b5a73035-e831-49d1-b8d4-106fd68e603f",
+			"@@@InProc at 1A43CD02196CC9F1F868FD30", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237000670, false, "bd10c6f3-4201-492c-b7f1-58950acaad95",
+			"@@@InProc at 1A43CD02196CC9F1F868FD30", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237001200, false, "571f320d-2abc-4ba8-ac62-442cb3869c3e",
+			"@@@InProc at AB8EB46E0BB11AC276DB74A1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237003500, false, "ccbd76e2-d8d2-40e4-8e71-22976af8cd61",
+			"@@@InProc at AB8EB46E0BB11AC276DB74A1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237004090, false, "b06d5728-e193-44bb-a9a7-4859f54d5de0",
+			"@@@InProc at D40117A78F97D65AC96A389F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237006090, false, "54a299e1-4078-489a-92af-74c3783a6deb",
+			"@@@InProc at D40117A78F97D65AC96A389F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237006620, false, "4c1584bf-be71-4709-95af-30db5cc3f15d",
+			"@@@InProc at 25110A8CF9F8EF0C6DDDA918", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237009560, false, "92d9e878-fd89-412d-8b5a-8d29a2bde744",
+			"@@@InProc at 25110A8CF9F8EF0C6DDDA918", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237010090, false, "3f9afa99-2d95-4aef-b793-ff61c1cb547c",
+			"@@@InProc at 6DDD8845A32E081B929E5D41", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237011720, false, "69af743c-0818-4757-88a2-a086b4060589",
+			"@@@InProc at 6DDD8845A32E081B929E5D41", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237012330, false, "98faa74a-d319-4079-95a0-d1ccacc02c8b",
+			"@@@InProc at 1697DBA3781EADA61958D940", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237015160, false, "0d5542ea-7f78-4b4a-b765-1bb45cd524c3",
+			"@@@InProc at 1697DBA3781EADA61958D940", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237015680, false, "6a1c97cc-a2c5-4249-9fd9-557849d5af78",
+			"@@@InProc at 06F5808B55BDD686AE6CDFC2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237017540, false, "b39f3c10-307e-4313-b719-1b81b16b1656",
+			"@@@InProc at 06F5808B55BDD686AE6CDFC2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237018270, false, "64000f96-b6a8-41e9-99e5-f5e3e9030c3d",
+			"@@@InProc at 8E2437031CB5DBE8CBCD2810", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237022960, false, "abccda11-9760-401f-aefb-fc49b3070670",
+			"@@@InProc at 8E2437031CB5DBE8CBCD2810", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237023480, false, "785aba82-7aa0-4e5f-bfb3-6fb86c52df72",
+			"@@@InProc at 38446F18098A6BE53B5D4B86", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237023550, false, "ef17d7c9-86b7-483c-a067-93a393d250a8",
+			"@@@InProc at 38446F18098A6BE53B5D4B86", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237024400, false, "d383ce2a-2c0b-4ae8-ad51-cc6eb91f8806",
+			"@@@InProc at 4343691B01387D68DD073708", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237028640, false, "1be2b70c-0f20-4348-aa35-3a1578df5d69",
+			"@@@InProc at 4343691B01387D68DD073708", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237029170, false, "b7c3bba6-2285-47d5-ba11-127f39d8ef15",
+			"@@@InProc at 5F30CBEE47BE2211E2E738D5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237029660, false, "9831c6ad-fa01-4ac2-820d-6a3de15c2314",
+			"@@@InProc at 5F30CBEE47BE2211E2E738D5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237030180, false, "a61061fe-b060-4b93-8ebc-6ca57a585b20",
+			"@@@InProc at 7D87F1F9774888C1FC3A54B2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237035730, false, "2ef04a2b-8a10-49d5-9c43-15d4913bd8f7",
+			"@@@InProc at 7D87F1F9774888C1FC3A54B2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237036500, false, "9ba6d5aa-0aaa-4d02-ae31-5655ce107261",
+			"@@@InProc at 7167FA10BBC6F93E48C6B991", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237037230, false, "0194aded-eb61-4fbf-a9c4-20ddcc06811e",
+			"@@@InProc at 7167FA10BBC6F93E48C6B991", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237038050, false, "f2402b87-fa59-402c-914a-f1aa6371eef8",
+			"@@@InProc at 05A9C27F910DBB2E602E61DD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237043840, false, "eae2d78c-c179-442a-9edf-e99dc19e34a3",
+			"@@@InProc at 05A9C27F910DBB2E602E61DD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237044370, false, "64345d8c-e9bf-45d1-8cef-9806fccc22d6",
+			"@@@InProc at 8586090749866477F06A7A20", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237045000, false, "7c6179f1-117b-4bb3-969b-98ab4fedf216",
+			"@@@InProc at 8586090749866477F06A7A20", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237201800, false, "a1e8e53d-4f3c-49a7-bf7b-5cb9cf1a3f5b",
+			"@@@InProc at 2C72329AE6ECFD823003DCC2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237203460, false, "a60f462f-a82f-48f0-a12b-d41b03dc7c3b",
+			"@@@InProc at 2C72329AE6ECFD823003DCC2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237204250, false, "d94118e3-42d7-4325-8145-23cbe7f9a41c",
+			"@@@InProc at 096AC7C4DE8AC26559FB363F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237210040, false, "5633f482-ec06-42c1-8e32-7c90b62c7410",
+			"@@@InProc at 096AC7C4DE8AC26559FB363F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237211030, false, "8d010392-4a30-45bc-8eba-6dd0469edbdd",
+			"@@@InProc at 1C809EE0DCDB05AE9CFEF295", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237212440, false, "6219dd19-ab21-4261-9834-88919ce3c62c",
+			"@@@InProc at 1C809EE0DCDB05AE9CFEF295", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237213270, false, "adfe0cdf-60e4-491b-ac7d-334be234d8fa",
+			"@@@InProc at 1A0A7E1AA261F4165036B3B2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237218190, false, "983352a9-49e9-468e-b3fe-13ce0d868ce4",
+			"@@@InProc at 1A0A7E1AA261F4165036B3B2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237218840, false, "26c320c9-69b5-4317-8b25-a31bf2768cea",
+			"@@@InProc at A04753071D12853B8E8C898B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237220730, false, "6af892c2-e506-437d-943b-ff04529bbd97",
+			"@@@InProc at A04753071D12853B8E8C898B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237221430, false, "e13e1fd7-e0a9-4e06-a9fb-c2edfb54e1d7",
+			"@@@InProc at 4F157A91F7F7B66018A389BF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237225010, false, "50607cab-dc9f-4452-bbd8-8398e44516dd",
+			"@@@InProc at 4F157A91F7F7B66018A389BF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237225560, false, "b5980029-ae56-460b-b87e-017f86b2c26f",
+			"@@@InProc at 25E2E6810924395F0D274E75", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237227260, false, "272840dc-a033-4958-a6ba-05bf4e0977c7",
+			"@@@InProc at 25E2E6810924395F0D274E75", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237228020, false, "2e69a6a3-1dc5-4e82-8d5a-27130d03653f",
+			"@@@InProc at 4E1DD31EBDB7AB20D92293B2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237231380, false, "8de08712-5dfe-4629-9210-eb64b9e1e44a",
+			"@@@InProc at 4E1DD31EBDB7AB20D92293B2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237231910, false, "4f204337-0e87-4011-83b9-d59b038e02c2",
+			"@@@InProc at 8C35A9DA06B2ACB0DE7577B5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237237440, false, "b01a9a03-6af2-4c72-a0be-01493bf33828",
+			"@@@InProc at 8C35A9DA06B2ACB0DE7577B5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237237990, false, "7e8454eb-9876-4fb0-a0e7-c1f3c406f4b3",
+			"@@@InProc at 45267D68C417054920A76708", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237238180, false, "a4bf221f-9c0b-4dfc-a8d1-8eeef1a652ac",
+			"@@@InProc at 45267D68C417054920A76708", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237238980, false, "052eaf09-3f74-4348-8f41-4f6799218702",
+			"@@@InProc at 6B8750DAFA78B40A85DACD41", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237245330, false, "00ab3ce9-0c91-4328-ae9d-434c54724b1d",
+			"@@@InProc at 6B8750DAFA78B40A85DACD41", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237246110, false, "9c339244-585d-4022-a8e3-0656fc04d8ca",
+			"@@@InProc at 968D8AC477CBA1A8B74AC60F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237251890, false, "e39bce1f-e74a-4b8f-bc3e-e1a9ac7ab407",
+			"@@@InProc at 968D8AC477CBA1A8B74AC60F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237252700, false, "dcaae777-872d-4779-8132-2e7ec96570a0",
+			"@@@InProc at 3FE3B54502CEC7FD31117E41", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237257120, false, "7eb6dce4-6481-4d69-abdd-dc87e7d111ca",
+			"@@@InProc at 3FE3B54502CEC7FD31117E41", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237258010, false, "5a88dca1-8383-4b68-a779-c5ba89930b80",
+			"@@@InProc at 037696A32B27E3DD238B46B7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237261520, false, "c4153f05-1f5e-4434-a2f1-87dff43d7618",
+			"@@@InProc at 037696A32B27E3DD238B46B7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237262710, false, "9f554edd-d799-4178-b668-77629e77ce74",
+			"@@@InProc at 728CB01801B7D92E60CEE185", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237267470, false, "89d191ca-cd35-4f4e-9fd4-1fc0e9056e22",
+			"@@@InProc at 728CB01801B7D92E60CEE185", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237268280, false, "a6b3733f-74b6-4bd8-924c-6809c4d799c4",
+			"@@@InProc at DEE75A276114B3DE64E4B758", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237271180, false, "eb034dcf-ecb4-4c08-a4f2-0831c82afda2",
+			"@@@InProc at DEE75A276114B3DE64E4B758", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237272100, false, "8a423bb7-995b-4f7b-bb03-819d4832e52e",
+			"@@@InProc at CE6080D766CC006850E73523", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237275890, false, "195baa54-9e48-4491-84c7-0b287de59e1f",
+			"@@@InProc at CE6080D766CC006850E73523", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237276720, false, "f5fe55b7-1b39-4619-96f9-4b3ef097ca4f",
+			"@@@InProc at 4769A1F4BC2C403A4A9AAE22", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237280430, false, "7c082ff0-07cd-448a-bfbd-99060d440460",
+			"@@@InProc at 4769A1F4BC2C403A4A9AAE22", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237281270, false, "de7a39ac-9b36-4645-b30e-3cf9086111cd",
+			"@@@InProc at 3994F666415DA745D0B67DC3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237284780, false, "5177de00-b5f2-440b-9556-5be15bd7d228",
+			"@@@InProc at 3994F666415DA745D0B67DC3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237285730, false, "bfeeb357-b95a-4bbd-b586-ec2e64a2378c",
+			"@@@InProc at 1229104BF75053B9352BDA12", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237288960, false, "f5c91c36-6b40-4f5d-abe1-1b16454aac7b",
+			"@@@InProc at 1229104BF75053B9352BDA12", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237289980, false, "99c88948-4d69-4638-8309-84a3cba2e584",
+			"@@@InProc at 688390A0BD478D04AEAD0229", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237295410, false, "bba2648f-314a-4d19-8dd7-425ca32367a7",
+			"@@@InProc at 688390A0BD478D04AEAD0229", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237296590, false, "6f348d13-c9dd-4370-82cd-0c0471556877",
+			"@@@InProc at 07604D755CA40981AE8DBA8F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237300780, false, "1eb919ee-03ab-4f59-a504-1c6681588154",
+			"@@@InProc at 07604D755CA40981AE8DBA8F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237301630, false, "90feca02-1f73-4dbc-acbf-51322c31db95",
+			"@@@InProc at 0DAE41940C2F4872025E8D4D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237305150, false, "bf237d89-a32c-4044-8756-64d641f8704f",
+			"@@@InProc at 0DAE41940C2F4872025E8D4D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237305970, false, "236eac41-a8de-493d-b27d-77d9a0e3cb4b",
+			"@@@InProc at 34DC5220604E3ED0F0CA4536", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237309160, false, "a89a2b19-cbfb-435c-a381-80194c07fa40",
+			"@@@InProc at 34DC5220604E3ED0F0CA4536", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237309970, false, "8872015f-876e-4cd4-80d6-a7476f875aa6",
+			"@@@InProc at B860A6B9C5CCB6306254A2B9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237314480, false, "560df4d1-4757-4a27-995f-11ed9b5ada2f",
+			"@@@InProc at B860A6B9C5CCB6306254A2B9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237315560, false, "20e4159c-4600-433f-a589-d876f715386c",
+			"@@@InProc at 671D0A841E1ECAA258ED5FFF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237318040, false, "cdaf698e-0bb3-46a3-8534-5609eb907201",
+			"@@@InProc at 671D0A841E1ECAA258ED5FFF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237318940, false, "b131f3ac-6a9b-4cb8-94d2-b83070722ad3",
+			"@@@InProc at F08F86D1C638429AFB46CB0B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237323460, false, "29c694ad-2fb9-4d53-a88c-f7aed3081a1c",
+			"@@@InProc at F08F86D1C638429AFB46CB0B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237324260, false, "566c6ed1-799c-4d2a-abd0-8eea371d6b47",
+			"@@@InProc at BDE196E77CEB953E65343FD9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237326620, false, "f2ebbba4-fcb1-4d55-9d84-32832a48c322",
+			"@@@InProc at BDE196E77CEB953E65343FD9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237327580, false, "1caf0bd8-abe3-4c30-888f-307331978395",
+			"@@@InProc at 8C4BF63A3225E15CBEBDD51A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237332350, false, "a8d1d896-c19a-40b7-880b-b300677f16ef",
+			"@@@InProc at 8C4BF63A3225E15CBEBDD51A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237333140, false, "c390bb17-5062-40fa-9d42-f85ae69a7ee9",
+			"@@@InProc at 1AEC9F60F3DB899051E289D7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237335380, false, "42c0ef96-6f91-4b7a-9bbc-c5ea1848988c",
+			"@@@InProc at 1AEC9F60F3DB899051E289D7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237336230, false, "83ea5f0a-b943-4301-8cee-3359499aeb34",
+			"@@@InProc at B749FA714D30E6989910BEC6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237340810, false, "3c0a7c2c-46a3-413a-b830-535593c9c98c",
+			"@@@InProc at B749FA714D30E6989910BEC6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237341700, false, "609631eb-ef46-4663-b47f-6151e58e2183",
+			"@@@InProc at 5F1B783E1DC8292BDE6DA83B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237344070, false, "859a3dfe-718c-4f9f-a6c4-863565c102e6",
+			"@@@InProc at 5F1B783E1DC8292BDE6DA83B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237345160, false, "659c9a3e-2bb3-4a3a-9ba8-3dd3969bb9ef",
+			"@@@InProc at 740533012EFEBC4B82CBC9FA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237349970, false, "709b5c83-142c-42b1-8f11-485de41589f1",
+			"@@@InProc at 740533012EFEBC4B82CBC9FA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237350900, false, "d8e64eb2-4b7b-4cf9-b67f-d6256ca69e6f",
+			"@@@InProc at 96C58DC1CDB4CEE82CC448D2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237353640, false, "b8df2a31-5041-4bad-81ee-83239b20b616",
+			"@@@InProc at 96C58DC1CDB4CEE82CC448D2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237355130, false, "e2c625dc-90c1-414f-a8cd-7b4078ae1c44",
+			"@@@InProc at 85A52DE536D59442DE994075", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237358890, false, "2d6311a7-d2bd-444b-8498-7837ba492082",
+			"@@@InProc at 85A52DE536D59442DE994075", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237359710, false, "5f87e9e1-bf8e-42cd-8ebe-6aa04f59932f",
+			"@@@InProc at 48058916C9CA89D93E71EF99", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237365550, false, "80d92fcd-3904-468b-9a5e-13af7055776b",
+			"@@@InProc at 48058916C9CA89D93E71EF99", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237367060, false, "fd2740f7-7f15-4eae-a9e3-9efa70e1ca1f",
+			"@@@InProc at 682D49B355F6D1123C0F41C5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237368820, false, "619a1937-9fec-4e31-bd1d-d8a1f4df5f94",
+			"@@@InProc at 682D49B355F6D1123C0F41C5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237369650, false, "bca5c6a4-d944-4873-bd97-7b7d4e1ee38c",
+			"@@@InProc at 4199B7BB38EB3069E3DA2828", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237375100, false, "bc6945d7-e85c-48fc-a110-778206e3622e",
+			"@@@InProc at 4199B7BB38EB3069E3DA2828", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237375910, false, "d3bc5711-7cbd-476f-a8eb-03ef3b8defb6",
+			"@@@InProc at DBD2C5B5AE8BB1CFC252A45B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237377560, false, "11c44e4b-af3a-41f1-977b-a80cae3fbfe7",
+			"@@@InProc at DBD2C5B5AE8BB1CFC252A45B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237378570, false, "0e221ae3-a19d-443f-81aa-5c1816d32956",
+			"@@@InProc at 030E11DED1DF36F8187011E9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237383760, false, "4f2850ef-52a4-4005-9b4f-2ada01333e49",
+			"@@@InProc at 030E11DED1DF36F8187011E9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237384820, false, "baa2d32a-356c-43ae-b406-fec1e4f64c51",
+			"@@@InProc at 092EAA5ACD70A658C7F0376D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237386540, false, "83f6aedd-ad71-4cf3-a99f-33f885a16834",
+			"@@@InProc at 092EAA5ACD70A658C7F0376D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237387540, false, "65805eb3-4daf-4f54-a936-983460ad896a",
+			"@@@InProc at 2B93D5029264AFC89B8F091C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237392650, false, "7a7856c6-d354-401e-a165-803bb436850f",
+			"@@@InProc at 2B93D5029264AFC89B8F091C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237393460, false, "6c73ce45-f873-4650-b684-bcc3be7bd2c4",
+			"@@@InProc at FC8175B63E230ED5BC011A59", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237395100, false, "8e8b592d-2e38-4a23-8f55-2a0ea26c930b",
+			"@@@InProc at FC8175B63E230ED5BC011A59", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237395930, false, "ee2ca07b-25f5-4839-adcf-dea012c77f5a",
+			"@@@InProc at AF38C41FF0B8D9FA14111ECE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237401520, false, "a065b46b-7327-4a69-be38-9e61a46368ef",
+			"@@@InProc at AF38C41FF0B8D9FA14111ECE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237402520, false, "2269b62a-d143-451f-9193-926ce98a60a9",
+			"@@@InProc at 5815F3E4E569157467EAF15B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237409820, false, "ebd6a9bb-019c-402d-afa2-c54b30c56588",
+			"@@@InProc at D372257E4B7C05294A0817EA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237410800, false, "21434957-acbe-4531-8f1a-d3996866b0e0",
+			"@@@InProc at 5815F3E4E569157467EAF15B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237410900, false, "6ee755df-4f38-4e56-bae9-d1373cf9e293",
+			"@@@InProc at D372257E4B7C05294A0817EA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237412500, false, "ae8a5d46-1d30-4bb3-b40f-5e50732cfacc",
+			"@@@InProc at 51A898A82DE31098D07B1F2A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237422580, false, "29f17964-dc95-4e3a-ada7-772c791108e6",
+			"@@@InProc at C779E62684147F392A80DA94", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237423920, false, "9b4d065a-b62a-405d-832b-8e434ed23612",
+			"@@@InProc at 51A898A82DE31098D07B1F2A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237424060, false, "aae3646f-b8de-4cf2-8238-63744177ec0a",
+			"@@@InProc at C779E62684147F392A80DA94", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237425910, false, "c9d164c1-adbb-49e8-85ab-91036bdb2627",
+			"@@@InProc at 07FD2BD9C4D45A3E5BC8D8BE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237433540, false, "b576372b-5c98-4df1-8c90-892d99152172",
+			"@@@InProc at 07FD2BD9C4D45A3E5BC8D8BE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237434500, false, "4e480b2c-51da-4903-80d5-8a0b3c6758c3",
+			"@@@InProc at 1B33278FFBD27BE426F91D35", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237435390, false, "5725c813-2838-400d-8910-b07c66bd93b6",
+			"@@@InProc at 1B33278FFBD27BE426F91D35", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237436190, false, "e905628a-c3bb-4442-939f-2f3786373199",
+			"@@@InProc at EA07E99630461FF425F388A0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237442460, false, "80872aa5-fa8c-4635-97e1-27f696041f9f",
+			"@@@InProc at EA07E99630461FF425F388A0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237443710, false, "c3867d61-b89c-463f-87e0-6a2bf9072174",
+			"@@@InProc at 959CC8F31F0BF585F02D87AF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237445960, false, "f371678c-78c8-47ed-a168-178440f58b62",
+			"@@@InProc at 959CC8F31F0BF585F02D87AF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237447150, false, "4830553f-cbb5-4025-ac4c-74afd195b8c4",
+			"@@@InProc at 7172E11812708B1891649A1B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237454080, false, "273dfa60-cd7a-4f38-b91d-e965d1386783",
+			"@@@InProc at 7172E11812708B1891649A1B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237455330, false, "3e13cf7e-3e98-4154-b563-d230f19f0461",
+			"@@@InProc at A4985D1EC07A405F3AAE790F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237456680, false, "ec390c8d-8693-4f97-80f3-d3d0686e4bf7",
+			"@@@InProc at A4985D1EC07A405F3AAE790F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237457500, false, "2a83a79b-a91e-4c86-b3df-a17a60462717",
+			"@@@InProc at 82B1894124FEB7BB4DBA896F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237463880, false, "74e79851-df58-424f-932e-7000534133b8",
+			"@@@InProc at 82B1894124FEB7BB4DBA896F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237464980, false, "e1e04e48-a3b2-4878-aeb4-e197bf028995",
+			"@@@InProc at C0795DBA9ED17F43168D859E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237466050, false, "e01f7875-cd84-49a3-af10-4d2c81dde6d9",
+			"@@@InProc at C0795DBA9ED17F43168D859E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237466900, false, "cce854a3-fa74-4eb9-85b6-9add15a483d7",
+			"@@@InProc at B232BE6318D551B17DD913AE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237473490, false, "a2f5fcb4-a50c-4e02-848a-5ae32475b7b9",
+			"@@@InProc at B232BE6318D551B17DD913AE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237474380, false, "576aced0-68c0-4f99-964b-c63be0ea161c",
+			"@@@InProc at 73DF5185EC08DAB27FF6CAB1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237474580, false, "0b82966d-2dc9-4724-bb3d-2a9a7aa98bef",
+			"@@@InProc at 73DF5185EC08DAB27FF6CAB1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237475970, false, "1f35f6c3-ad0e-4a16-a322-76492dca1ef9",
+			"@@@InProc at 479E90941BFA91D68DCD1E8C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237484100, false, "5bda306f-68a6-45ed-9a85-e78145c12a22",
+			"@@@InProc at 479E90941BFA91D68DCD1E8C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237486150, false, "232c63b6-ba00-41d9-b71d-9e3c5e4e5b43",
+			"@@@InProc at ED698C49AE3DB2E07D406C56", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237486810, false, "25215a02-0bfe-4061-992b-8bdfc5fe9872",
+			"@@@InProc at ED698C49AE3DB2E07D406C56", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237489300, false, "9657d8a2-c06a-41ad-b02e-69fe69e6e138",
+			"@@@InProc at 63CCBE0CC7AE75ECE3AB0965", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237498160, false, "ed6e19fe-9620-4520-9871-7eeb8e1de1c1",
+			"@@@InProc at 63CCBE0CC7AE75ECE3AB0965", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237500180, false, "53aca499-a207-4ba9-a099-0e90059d971d",
+			"@@@InProc at 4115ABDE5A85632739A6D91A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237501210, false, "965fafe8-5f5e-439d-930c-e73af7c8e38f",
+			"@@@InProc at 4115ABDE5A85632739A6D91A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237503630, false, "705c4294-ab2a-439b-afe2-fc54171bdb98",
+			"@@@InProc at D2CAF53550A0BAEF8058EC97", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237510020, false, "bda50fad-b887-4125-8fa3-1bf7325751e6",
+			"@@@InProc at D2CAF53550A0BAEF8058EC97", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237511080, false, "f253ee64-7a0b-4007-91af-074408580133",
+			"@@@InProc at 0C15F36D3A2D4823CD416FD1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237513040, false, "0e9bc9cb-4e20-4f1c-9522-7b9028ac7870",
+			"@@@InProc at 0C15F36D3A2D4823CD416FD1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237514120, false, "79a4485f-6bdc-40da-a1a1-db2dad9c3f2a",
+			"@@@InProc at E4B9CF5C5741FD722F7A885C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237520980, false, "32f53adf-1ad0-4f70-8c34-722b2b008ad2",
+			"@@@InProc at E4B9CF5C5741FD722F7A885C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237522190, false, "2c3d0e11-79da-49dc-9d0b-b7cd74cc60dd",
+			"@@@InProc at A54AF638F121F2FAA1A39424", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237522290, false, "caec8f7b-e2aa-4759-bd3e-5c68319f5d96",
+			"@@@InProc at A54AF638F121F2FAA1A39424", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237523750, false, "11393b42-5eb8-4ecc-b682-4eab52dc7977",
+			"@@@InProc at 72841174C5E35229E2D0CD11", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237530620, false, "bc49d04e-b98a-45bc-bf9c-034ecc208046",
+			"@@@InProc at 72841174C5E35229E2D0CD11", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237531600, false, "db57d524-5e6e-4e96-89a9-8fa4365c7722",
+			"@@@InProc at CAF2FEA0BC432C4EE764EBAB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237532500, false, "f8eb17e7-4377-41b8-94f2-98bbffe84480",
+			"@@@InProc at CAF2FEA0BC432C4EE764EBAB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237533340, false, "ec6e30e4-5ec7-4360-9fc9-6a3af3a2177b",
+			"@@@InProc at 7C3EB5566949233028D12307", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237539480, false, "04f8d2cb-2410-4067-bd8a-c678e2992b4a",
+			"@@@InProc at 7C3EB5566949233028D12307", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237540770, false, "a65c855e-9dfe-4d55-b056-bda9df3fd44b",
+			"@@@InProc at FF5AA1A72A79C1F1ADD3B8F0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237542110, false, "f5de9920-d8d4-4a96-a25a-e46e61a0e594",
+			"@@@InProc at FF5AA1A72A79C1F1ADD3B8F0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237543020, false, "d7563f82-95f2-47a3-bd68-4f097274ccce",
+			"@@@InProc at 657D3E5AF2A4121C85F087CA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237551370, false, "453e793d-fdf4-4733-9748-f1743764f1e0",
+			"@@@InProc at B7D2501DC13E6E24B5A2A294", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237551780, false, "5a3556ce-30d7-402b-8f76-a2a4e84f74d7",
+			"@@@InProc at 657D3E5AF2A4121C85F087CA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237553510, false, "f28450b2-5e83-4868-9014-bd76fff1af35",
+			"@@@InProc at B7D2501DC13E6E24B5A2A294", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237553720, false, "6c82b0f7-8da5-43f8-a6a9-830a5b9367fc",
+			"@@@InProc at F305307EFEA5742C2781D871", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237562380, false, "63e29579-8df9-449a-a62f-787411d56c19",
+			"@@@InProc at F305307EFEA5742C2781D871", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237563210, false, "f7c21ac6-5f65-498d-9f61-7ecbe0ad5d77",
+			"@@@InProc at C4849C9F4FDB9832901FE103", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237563610, false, "7c40fd44-5fb7-41b7-8fcf-0a9bcb033dd1",
+			"@@@InProc at C4849C9F4FDB9832901FE103", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237565150, false, "ab02c97d-3273-4ab0-a215-23723c6a1ede",
+			"@@@InProc at E5C584C51BD21FA5CE458666", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237571650, false, "545fcf58-108e-44e1-894c-a21ad1c47369",
+			"@@@InProc at E5C584C51BD21FA5CE458666", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237572760, false, "167ae6a0-f5d0-4f9f-9a78-bda6cdecee35",
+			"@@@InProc at 1FFF979E6E6B46478E000D27", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237573730, false, "7588acc1-bef0-4c8f-94a3-080b7af7900a",
+			"@@@InProc at 1FFF979E6E6B46478E000D27", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237574550, false, "db54f544-3ab7-4654-9174-334e56812590",
+			"@@@InProc at E8CD4CF339BDFE500E7E555B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237580990, false, "a5ee5f9c-fb48-49df-8964-52e20eab8430",
+			"@@@InProc at E8CD4CF339BDFE500E7E555B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237581800, false, "04df9ad4-afc7-460b-967d-6324ef008018",
+			"@@@InProc at 50F0989CC2301F3A01DD9041", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237590100, false, "27d2bd82-6bd3-45f3-94c5-3687809a6ac4",
+			"@@@InProc at 04A4AC23402DBF8959743FF3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237591060, false, "f2dcfab7-46d1-49cc-9261-55851a3637bb",
+			"@@@InProc at 50F0989CC2301F3A01DD9041", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237591170, false, "5583e251-524e-47e1-8dc8-085d88fb36d7",
+			"@@@InProc at 04A4AC23402DBF8959743FF3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237593190, false, "cebd7482-1d15-4fb2-a1d0-30b5fb38547f",
+			"@@@InProc at A887001D89FA8ABF226B734C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237600420, false, "6d472cd9-29df-4ef5-b648-22654d395fde",
+			"@@@InProc at D2A96DCC31168B48BF47ED94", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237601480, false, "2ccb7857-20af-4c3f-a4a0-5617309df244",
+			"@@@InProc at A887001D89FA8ABF226B734C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237601550, false, "a2cd3bfd-d20f-403d-871a-8e2d187f3433",
+			"@@@InProc at D2A96DCC31168B48BF47ED94", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237602990, false, "b9e1c446-bd06-4dbb-9a23-1fb41d29a21e",
+			"@@@InProc at D09E72756E798A136EA6A905", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237610710, false, "91c0b2a2-a9b4-4bff-b2cf-472586e5215d",
+			"@@@InProc at 4EFD6FC611DA47297E84C3A3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237611030, false, "c6e68f5a-7013-434b-a77e-da970b1aa1d3",
+			"@@@InProc at D09E72756E798A136EA6A905", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237612580, false, "b1fbda6a-4872-4eb7-b96a-2f888b30cef3",
+			"@@@InProc at 4EFD6FC611DA47297E84C3A3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237612680, false, "5176c115-eec7-4397-99bc-32d1fad84284",
+			"@@@InProc at 742C92E26A225C365F5F6539", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237622400, false, "50a7c454-cc85-49fe-aeea-5bdb8c299c2f",
+			"@@@InProc at C3076A93E4DEC225D9C7B7F0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237622630, false, "13b081e9-23df-4913-b439-974723755ef6",
+			"@@@InProc at 742C92E26A225C365F5F6539", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237624240, false, "78c7f21d-06bf-4dc4-9ffb-60b4fdfc35f9",
+			"@@@InProc at C3076A93E4DEC225D9C7B7F0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237624320, false, "7a62c7f1-39aa-4c3b-91e8-428c84bed1f7",
+			"@@@InProc at 2592C4F7A5B29418C8621274", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237634600, false, "0b4fd32f-4ccf-471f-9eee-64c066e85cf5",
+			"@@@InProc at 7DBC6C5EBA2921B33CF134F7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237634700, false, "515a1543-e60d-41e9-88eb-fcfc9f5f987d",
+			"@@@InProc at 2592C4F7A5B29418C8621274", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237636710, false, "fddb465f-47f6-4c1a-b84e-90e831300397",
+			"@@@InProc at 7DBC6C5EBA2921B33CF134F7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237636800, false, "96f43e87-6336-4bab-9e80-edfdb185b22c",
+			"@@@InProc at 12821F69370B998027D4FF0D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237669600, false, "d28626fa-887a-406c-955c-837887ea0420",
+			"@@@InProc at 12821F69370B998027D4FF0D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237670620, false, "d36a700d-6a57-4807-92ae-8fdfce75fcf2",
+			"@@@InProc at 577DAA35154DA8FD416A2CAE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237672120, false, "8abdc436-9e64-428b-a496-afa975002f48",
+			"@@@InProc at 577DAA35154DA8FD416A2CAE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237673250, false, "c0426860-1c0c-4921-b6e0-a9361f6b5fda",
+			"@@@InProc at 86C5146E292096A701F06E56", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237678850, false, "a6b45bab-3ee0-48cc-babb-0efc1ac0cd8c",
+			"@@@InProc at 86C5146E292096A701F06E56", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237679810, false, "f88b4e38-eb21-41c9-b4f4-c39d4af1ece5",
+			"@@@InProc at F42B8D219E121D2E772019A5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237684450, false, "5fcfecbc-fc4a-4b84-aa22-f729e7fbccd4",
+			"@@@InProc at F42B8D219E121D2E772019A5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237685350, false, "718877ad-184d-41f9-be42-c3e9f341cdcd",
+			"@@@InProc at B4A1538EB3B765EB3BE1F509", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237688240, false, "96aade3a-e02c-4aa7-a821-2092b9faac81",
+			"@@@InProc at B4A1538EB3B765EB3BE1F509", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237689060, false, "966298b6-03c1-444e-aa19-2e38f1517b4e",
+			"@@@InProc at BA43BBDE2004BB29CA2AB364", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237694550, false, "dbbc06c1-f5e1-4c58-b669-5c5725249691",
+			"@@@InProc at BA43BBDE2004BB29CA2AB364", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237695360, false, "0381562f-3adb-4efa-abe3-36594042bd36",
+			"@@@InProc at C8A63B5D632199171B500DE3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237698540, false, "5c5ceef1-f5b7-43b1-ae8d-2a4acd896804",
+			"@@@InProc at C8A63B5D632199171B500DE3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237699610, false, "45997db3-5a2a-4dc7-8648-a4968167349c",
+			"@@@InProc at 27C0A1CABB53915C5319720E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237704680, false, "585041ed-1172-4553-a58e-c0d6b5acf83a",
+			"@@@InProc at 27C0A1CABB53915C5319720E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237705500, false, "f6875a51-6c19-4547-a434-a0dc603c46a8",
+			"@@@InProc at 283815D703C3610076A5BA16", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237708070, false, "6f6911de-8d4a-41ae-b42b-12ba6eed2279",
+			"@@@InProc at 283815D703C3610076A5BA16", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237709180, false, "2f13f137-1db2-4372-b022-d87ddd2a1de2",
+			"@@@InProc at 59A70FA5CCF2D814296387DE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237713440, false, "c190eda8-f47c-43a6-a613-578f9c0aad7a",
+			"@@@InProc at 59A70FA5CCF2D814296387DE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237714260, false, "4ca45579-3247-461b-82e7-bb517f45899b",
+			"@@@InProc at BF3AF4B723E865E4F9B2F088", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237717810, false, "dd94430a-5952-4d3d-ba42-12fc07166c2a",
+			"@@@InProc at BF3AF4B723E865E4F9B2F088", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237718800, false, "06be7a8e-9ef5-410c-b7e3-742dc276b3e4",
+			"@@@InProc at E38651E0727B8CDCB84DAD1C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237723400, false, "466d2acc-08e8-4b90-bd5d-9ac93c7f83f6",
+			"@@@InProc at E38651E0727B8CDCB84DAD1C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237724220, false, "9d9ca156-e83f-45bf-afed-f063119727e4",
+			"@@@InProc at AB7655F23790B57F8D1E17CC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237727070, false, "f6ce0eb9-80f7-4315-9c0c-23470c08a9c8",
+			"@@@InProc at AB7655F23790B57F8D1E17CC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237728210, false, "5e497e01-ae13-40c7-9ff1-e90a6f72b269",
+			"@@@InProc at 8C70104A82BB192E9DA9C249", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237732000, false, "ff494c92-e5c4-4c55-b85e-6f5062188f98",
+			"@@@InProc at 8C70104A82BB192E9DA9C249", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237732980, false, "0c1fad33-06bf-4f11-a4ad-fe5ee1382039",
+			"@@@InProc at A14935882FABE506C80A0A9E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237737420, false, "9a8c7506-e7cd-4872-9c06-a2629ee3abf0",
+			"@@@InProc at A14935882FABE506C80A0A9E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237738380, false, "150264a6-41b2-4f32-a2d2-9e272ec2c3c9",
+			"@@@InProc at 6F86EA294654B37E45E9E0B1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237741010, false, "d35cfba5-f3e5-479b-8aaf-0dc1e57b24e2",
+			"@@@InProc at 6F86EA294654B37E45E9E0B1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237741820, false, "294b3ca0-1f08-4226-be41-849b8f65a9d2",
+			"@@@InProc at 365C912C06F8C9E95EB40329", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237746970, false, "057dc51d-bb21-4f40-9897-4fa8cdb5e1d6",
+			"@@@InProc at 365C912C06F8C9E95EB40329", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237747800, false, "ecc80363-4a9f-44aa-9c07-930f48e3e052",
+			"@@@InProc at BBBE40DB9200213A5A19B9AE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237751620, false, "79d4ebbe-fffd-4606-8d8f-9a1df31093e5",
+			"@@@InProc at BBBE40DB9200213A5A19B9AE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237752750, false, "eee400d0-5278-4e26-92a0-9e311cd86394",
+			"@@@InProc at 2DC0B61F277BC09EE2962EBD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237758510, false, "21f9df46-58fd-4d4a-a53c-ab0211d8ffb4",
+			"@@@InProc at 2DC0B61F277BC09EE2962EBD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237759730, false, "3a1f66b6-0286-4043-8153-6361eb9c8b21",
+			"@@@InProc at 0BDC10E1F83969FF66039334", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237762690, false, "8e813913-981e-4d3f-ae4e-a6e4536c0f12",
+			"@@@InProc at 0BDC10E1F83969FF66039334", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237764020, false, "d9a8c0e3-8413-42f2-8355-7610f8d9e393",
+			"@@@InProc at F6C39ABC36498EFD90B6D9FF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237767860, false, "7c7f5bd1-a823-4221-b52d-aeb17c0de209",
+			"@@@InProc at F6C39ABC36498EFD90B6D9FF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237768690, false, "cea9d6e0-519f-45c8-84a1-364c60fc7e79",
+			"@@@InProc at 84A5BBFD456F3879A04CF190", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237773160, false, "f97a900b-65ef-4f29-a16d-a1bc83979f98",
+			"@@@InProc at 84A5BBFD456F3879A04CF190", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237774350, false, "628a2f71-6775-4ade-ad36-4e07fd74ce95",
+			"@@@InProc at D28CA57DFA872E3061CE376D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237778520, false, "400efa9a-3862-4765-8735-d2d83eb580a8",
+			"@@@InProc at D28CA57DFA872E3061CE376D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237779420, false, "6fa89b84-649a-4822-ac6c-06199a806402",
+			"@@@InProc at A319879789840A6566DBD99E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237783310, false, "19c11166-12c9-42cc-8d6c-bfe1286bffb4",
+			"@@@InProc at A319879789840A6566DBD99E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237784520, false, "2fdec549-d8d7-4ee8-8fba-0a8df286952b",
+			"@@@InProc at 2F4D3EABD63EB1306B2FCB74", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237788790, false, "ccf838b5-972c-461f-ac6f-28a8ea43cebe",
+			"@@@InProc at 2F4D3EABD63EB1306B2FCB74", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237789770, false, "96730679-b368-47df-90a9-f4d9648d6070",
+			"@@@InProc at CE83EB5D8E661D0A6C6CB603", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237794300, false, "1734734d-1381-4e08-b6ef-696b5551768d",
+			"@@@InProc at CE83EB5D8E661D0A6C6CB603", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237795130, false, "1b8ac1a3-42d3-41a9-a9ab-e2e08ac7f294",
+			"@@@InProc at AB905CCAC5BBAA4820B73BF9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237797610, false, "ee5ff4e6-ec81-4ced-9dbf-2cc8f3716755",
+			"@@@InProc at AB905CCAC5BBAA4820B73BF9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237798560, false, "19e5d93d-d1d0-43f7-b0d9-165a827075ca",
+			"@@@InProc at 11B1A380041B5A1F2AB9654F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237802920, false, "201d6a2e-9d88-4c7c-8025-e314a363f423",
+			"@@@InProc at 11B1A380041B5A1F2AB9654F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237803850, false, "56510d7e-aa32-4eaa-912e-ae0094faeca9",
+			"@@@InProc at CBB234776CDC94B1215C2016", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237807500, false, "f5e80a29-5a55-4c3a-affb-7ccbb1d3c07c",
+			"@@@InProc at CBB234776CDC94B1215C2016", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237808470, false, "8a495add-b994-40ff-9183-04f86554b9b1",
+			"@@@InProc at 529CFE0EEDD7545837B84DFF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237811810, false, "e4665d5b-cca0-4107-bd06-6155396379ae",
+			"@@@InProc at 529CFE0EEDD7545837B84DFF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237812640, false, "4d501ce1-c104-4f78-8bfc-8f310c3e039f",
+			"@@@InProc at D508C3F273C5827A44513CDA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237818140, false, "45531399-3d8d-457a-b920-2d411cf082cd",
+			"@@@InProc at D508C3F273C5827A44513CDA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237819390, false, "50994781-5368-4401-bbd2-1ff59e4b05dd",
+			"@@@InProc at 620318768129760B473F4537", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237820770, false, "cbc0b03a-4497-4d1f-a0fe-3ad6b7c0ce11",
+			"@@@InProc at 620318768129760B473F4537", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237821560, false, "c388a7b8-3c99-41d2-9047-590ab5d04e73",
+			"@@@InProc at D7D613FFCB7572DC2967382A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237827830, false, "4947ab6c-15d3-4379-bbb2-7345e48b6af0",
+			"@@@InProc at D7D613FFCB7572DC2967382A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237828650, false, "1775e27d-4c37-4046-8e50-c9e4d9a68091",
+			"@@@InProc at B79A4DBDDA4D8D01416E8740", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237829520, false, "34387865-78d9-4ea1-9c4f-d25f31d9821c",
+			"@@@InProc at B79A4DBDDA4D8D01416E8740", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237830310, false, "75c89e67-b8a6-4210-a225-48309d4e09e0",
+			"@@@InProc at 14F9DB23B1EAD3C6A35DA083", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237836210, false, "a0f80682-044b-4e53-bbcc-ae908d040660",
+			"@@@InProc at 14F9DB23B1EAD3C6A35DA083", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237837000, false, "6e065817-0ecd-4179-8389-6e41f90419bd",
+			"@@@InProc at 4C2EC96CDE73FE6A24FDFED8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237838570, false, "3e9f93f8-7e27-41d7-bfc2-8d6349f6f73c",
+			"@@@InProc at 4C2EC96CDE73FE6A24FDFED8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237839710, false, "daf3d6bb-0fe2-4143-83f8-dd6be5b633e0",
+			"@@@InProc at 0892E9BD06DD364085D63239", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237849460, false, "7eba6dfe-8718-4162-8700-dff89a89f8ad",
+			"@@@InProc at 39EB5CC48D1C0261EFCC0FDA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237850440, false, "d9834419-9ce3-4c06-b4dc-d1926ec4cd49",
+			"@@@InProc at 0892E9BD06DD364085D63239", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237850530, false, "803c2fbe-e25a-45f0-bb36-45c0b071eb47",
+			"@@@InProc at 39EB5CC48D1C0261EFCC0FDA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237852100, false, "74669faf-d65f-47d1-b175-ec46620188d1",
+			"@@@InProc at ADE1E2B8E90B4A51EBAA608E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237859180, false, "c7257441-ac1b-4396-9fd0-512d0ec27051",
+			"@@@InProc at ADE1E2B8E90B4A51EBAA608E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237860140, false, "16005ebe-5752-4c26-ac58-c164fbee2e4f",
+			"@@@InProc at 8F87CA7E27261E34EE129A37", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237863590, false, "4121d0b9-69ff-4ffe-ad70-22444e0c39fb",
+			"@@@InProc at 8F87CA7E27261E34EE129A37", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237864720, false, "6ce344a6-c2e0-48f1-9495-b14034de416b",
+			"@@@InProc at D7F293EF83C926C81FCFDB27", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237869940, false, "656446ab-6d24-4cfb-874c-fd21507d7557",
+			"@@@InProc at D7F293EF83C926C81FCFDB27", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237871240, false, "9d4a6821-0404-40bb-a5fd-4b1aad015e76",
+			"@@@InProc at DA3D09F9FE4BA95BFA61803B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237875590, false, "91e154e1-7483-4426-b384-34a130790f48",
+			"@@@InProc at DA3D09F9FE4BA95BFA61803B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237876450, false, "e333539a-0f7f-465a-9916-0de40336308b",
+			"@@@InProc at 163626CCEFCC4608A8C45A93", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237879680, false, "c668ccb6-7795-4620-a165-e21f5a87ed00",
+			"@@@InProc at 163626CCEFCC4608A8C45A93", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237880630, false, "a221cc2c-13e3-45d8-bbef-89f11020c395",
+			"@@@InProc at 084F4D8F91CD97CD1F48D369", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237884140, false, "e27e8bfe-1611-488f-85b9-41901a2ae4ab",
+			"@@@InProc at 084F4D8F91CD97CD1F48D369", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237885290, false, "e5383efb-fac2-4ece-b72d-e9af003c3bf5",
+			"@@@InProc at C2447E73158F1D3A9FB0B1C8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237890030, false, "d6289ef4-d27f-46f0-84c3-ba36bc8d2472",
+			"@@@InProc at C2447E73158F1D3A9FB0B1C8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237891000, false, "cea06dcb-cd07-4fdb-b3e2-cc16b50856b8",
+			"@@@InProc at 16DCF93BCE4F04F86BD316EE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237893820, false, "eaf51a41-ed9f-496a-8bac-de58cee964c0",
+			"@@@InProc at 16DCF93BCE4F04F86BD316EE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237894830, false, "5d16a60a-e583-4efc-b47d-f887e494a524",
+			"@@@InProc at 4E6A3B62FF75C06418A3C168", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237900950, false, "0fb1b952-c3ed-456b-8462-f16f01292f01",
+			"@@@InProc at 4E6A3B62FF75C06418A3C168", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237902050, false, "637670ad-5c0b-4312-81c5-79c397c75e0c",
+			"@@@InProc at 9B0C07F1FF5328AC46D9A4FC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237903610, false, "91d5f0ce-34c4-4500-a784-8685b3c2b288",
+			"@@@InProc at 9B0C07F1FF5328AC46D9A4FC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237904450, false, "1c4ee467-b758-4020-b489-c8804ba3265a",
+			"@@@InProc at 6C5EB21CEE5CE46C087F71BE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237911830, false, "5bcd658b-089a-4899-a98f-9321c01bb0b3",
+			"@@@InProc at 6C5EB21CEE5CE46C087F71BE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237913030, false, "fa64fa20-2abe-485a-9a03-d875a6a80f14",
+			"@@@InProc at 1E026D94018FA46C5C672541", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237914250, false, "0cd293c4-e7ca-4acf-948c-1eb079b8f592",
+			"@@@InProc at 1E026D94018FA46C5C672541", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237915410, false, "4a773039-20f8-4977-93d9-e9489e25ced7",
+			"@@@InProc at BAE6DA0895C80C5D64379DEE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237922310, false, "d7dfc0a5-44a0-4fea-a834-749347a64825",
+			"@@@InProc at BAE6DA0895C80C5D64379DEE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237923310, false, "a09c146a-9f41-4ea9-9331-35a407d814df",
+			"@@@InProc at 3D060E697A568DCBDE393334", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237924890, false, "dd72e8a6-3cc7-463f-b26f-43ca07c7f850",
+			"@@@InProc at 3D060E697A568DCBDE393334", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237925710, false, "7e6e5e0e-f9a8-40c1-9408-49c62b9c39ba",
+			"@@@InProc at 68FA67D4C6A07907981AC81B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237932790, false, "3b6682d0-e003-434f-8702-ebdb7b00f2fe",
+			"@@@InProc at 68FA67D4C6A07907981AC81B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237934060, false, "767b2d8b-2d27-4894-a367-6566a9383842",
+			"@@@InProc at AF121A5DB6CA761FE735F355", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237936350, false, "949a7705-9b1f-41bb-9422-77c02d560005",
+			"@@@InProc at AF121A5DB6CA761FE735F355", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237937370, false, "03271354-d351-469f-b0bc-fbe858e1a725",
+			"@@@InProc at 962F5F3C7C1F1BFD73F43627", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237948100, false, "5ad68dfb-30df-4b52-a7cd-52432540cc4c",
+			"@@@InProc at 99970A6DF9445D6AB5E8031A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237948230, false, "2afe8301-1d59-45c9-bcef-bb752d2a1a6c",
+			"@@@InProc at 962F5F3C7C1F1BFD73F43627", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237949950, false, "3b9528b2-08ca-45e3-b717-93608fb52af6",
+			"@@@InProc at 99970A6DF9445D6AB5E8031A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237950050, false, "ee9757d2-489e-44d2-bf4f-a1591de37f11",
+			"@@@InProc at 766E418E65B4D58A87E39FE9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237960870, false, "94aef4ab-6365-4899-8565-f09795be783c",
+			"@@@InProc at 4ED4C699D79FDDBC481FD97B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237961160, false, "b4210498-3df6-4546-9b1a-7f9c50dba25f",
+			"@@@InProc at 766E418E65B4D58A87E39FE9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237963450, false, "8e9e5f0f-5582-4981-8bc8-4072acae8e44",
+			"@@@InProc at 4ED4C699D79FDDBC481FD97B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237963570, false, "ab84f779-e6b6-44eb-bfda-da6437fe4cc7",
+			"@@@InProc at 5492CF0FB25BB74DFCE35065", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237973030, false, "f8f67ca9-6a4b-47d4-baed-828aa75d108e",
+			"@@@InProc at 5492CF0FB25BB74DFCE35065", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237973980, false, "98bbeec9-dc00-4d0e-832e-a562c70410d5",
+			"@@@InProc at 4D18BD4B4880F155BDF0B6FC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237975650, false, "7039972f-5ab2-4d9e-bb47-8427049fd3bd",
+			"@@@InProc at 4D18BD4B4880F155BDF0B6FC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237976690, false, "b622f9e9-9d45-4f7a-aec1-e5b1848b3bfe",
+			"@@@InProc at 77BDC10E4BEA876A70C78050", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237981480, false, "99be1849-37ef-472b-a77a-34ad49c5d17e",
+			"@@@InProc at 77BDC10E4BEA876A70C78050", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237982320, false, "67cc418d-9542-4f66-b04e-3ba51c54e0de",
+			"@@@InProc at 9AA9D87CBBB9E93A0EDFE71C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237984670, false, "ca3787bd-104d-48a8-9f6c-f12fc738163c",
+			"@@@InProc at 9AA9D87CBBB9E93A0EDFE71C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237985500, false, "ad586e0a-45eb-4d04-b514-592319c26f8d",
+			"@@@InProc at E8FC373C250848D165FA96B6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237990400, false, "b4372f13-282a-4699-a08c-5539e56805a4",
+			"@@@InProc at E8FC373C250848D165FA96B6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237991220, false, "ff9a5a70-ac57-4f66-9d25-2a0e3d65ca72",
+			"@@@InProc at 7044FFB352C014E05D4D2C30", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237993480, false, "b40d7c9f-ebc4-497c-8f64-195e54239a88",
+			"@@@InProc at 7044FFB352C014E05D4D2C30", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237994320, false, "c671367c-87da-4afb-b9f1-9ec27ca8c426",
+			"@@@InProc at 37B76E910B001E65DE19A151", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878237999940, false, "3ce01f17-6cfd-4b19-b2b8-5a09bc59e0eb",
+			"@@@InProc at 37B76E910B001E65DE19A151", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238000760, false, "9a9c4d72-b976-4b4a-b5c6-6835715c3d80",
+			"@@@InProc at D115FDF3450242FF1E225A9A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238003700, false, "3492a088-0dae-4b28-831e-92623562a776",
+			"@@@InProc at D115FDF3450242FF1E225A9A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238004790, false, "56d61d42-09fc-4ab8-83a8-95b66da6a832",
+			"@@@InProc at 6536CD9AE81888629D62433C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238008810, false, "3cc680ea-12f5-4d3c-8992-c7e4b0f54209",
+			"@@@InProc at 6536CD9AE81888629D62433C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238009700, false, "0dd4954c-3917-40d7-82a4-74357f38464b",
+			"@@@InProc at 086844CC144B6627111EEEAA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238012850, false, "e2f2d566-5631-45b3-b835-8f2d5dcb0658",
+			"@@@InProc at 086844CC144B6627111EEEAA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238013830, false, "4387624a-b7f8-4136-8988-2952c500e612",
+			"@@@InProc at C6CDB4DC2279FA23360618B9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238017620, false, "b22f21c6-cf64-464d-81f7-f5dcb15b5b47",
+			"@@@InProc at C6CDB4DC2279FA23360618B9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238018440, false, "357e6698-11dd-46d8-801b-5e57e74cae55",
+			"@@@InProc at EA3FBDA6740F27A07F1C6A06", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238021540, false, "a9f46f3b-d8b8-4fca-9193-93acc9ee141e",
+			"@@@InProc at EA3FBDA6740F27A07F1C6A06", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238022530, false, "548c9f53-6e5b-43eb-bd2d-aba2598207c6",
+			"@@@InProc at 6B2805D0BE4EC3CFF7280AA5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238025890, false, "41a4be40-7ba6-40dc-9050-75ca108a0bad",
+			"@@@InProc at 6B2805D0BE4EC3CFF7280AA5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238026730, false, "f22a5f9c-38fe-48dc-9765-f1e7c9aedb29",
+			"@@@InProc at 11B2583772AA351DEE5B3792", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238031080, false, "0d988202-3f54-4bfd-af5c-e168d2118178",
+			"@@@InProc at 11B2583772AA351DEE5B3792", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238031880, false, "4ca44021-dc7e-4a29-8fb3-b748fac6de4a",
+			"@@@InProc at 41BA5B970BACA8C89A11D308", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238034460, false, "e2834249-7847-4be1-b6c9-4f6ebcd56d73",
+			"@@@InProc at 41BA5B970BACA8C89A11D308", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238035240, false, "9b310dd4-d94e-456f-a985-c11cd1a10f9f",
+			"@@@InProc at 4D841D153E4323130E93BD2A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238040310, false, "95327849-ab70-4e1e-bf10-27fe3a8cc9d4",
+			"@@@InProc at 4D841D153E4323130E93BD2A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238041110, false, "51b0266d-2279-4975-8c4b-4fc9a847c04a",
+			"@@@InProc at 8FD5B067D521EA6C4A3DEF00", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238043310, false, "273d4982-6ce6-45d6-827a-aaeed3ce51a7",
+			"@@@InProc at 8FD5B067D521EA6C4A3DEF00", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238044310, false, "c06d0d13-e8c4-49e8-bdfa-88496813433f",
+			"@@@InProc at 7B36160B7C041F705D081AAD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238050720, false, "e2ccfca3-37ec-4729-bfa0-6cb1801a22e2",
+			"@@@InProc at 7B36160B7C041F705D081AAD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238052110, false, "dcadaecf-adb1-4cc9-b1cb-bd556f09b0f8",
+			"@@@InProc at 5AEAF2A6571FE4D19501D4AB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238053710, false, "ba955b52-dd77-411f-bce9-6fda9f277e95",
+			"@@@InProc at 5AEAF2A6571FE4D19501D4AB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238054670, false, "fc85f392-e6c2-40f9-b4bf-8a27de9d6a3c",
+			"@@@InProc at 51B5E48BCBE69A21EBF81898", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238061450, false, "cd4f5d46-f5d4-464d-9062-23dcf8bacb31",
+			"@@@InProc at 51B5E48BCBE69A21EBF81898", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238062550, false, "d9dd6b01-401f-4400-bb96-1776ce919356",
+			"@@@InProc at 7E3914698F11EEBB6EE9A11C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238064120, false, "67c52c0f-9ffe-4a9b-a639-dc9f454f7a0a",
+			"@@@InProc at 7E3914698F11EEBB6EE9A11C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238064950, false, "4263fdb2-918e-4a39-bd36-5a412321d084",
+			"@@@InProc at 0101875AFCD058125E6D5011", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238070750, false, "abb79383-4422-4465-b512-aace76556d19",
+			"@@@InProc at 0101875AFCD058125E6D5011", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238071640, false, "9ae9ec9b-fd9b-468e-b4bc-cf29295ed58d",
+			"@@@InProc at D4DDA4F25D23B967DAED4CED", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238073960, false, "c198ad95-7ba1-4859-b124-c8f0e9efd8e1",
+			"@@@InProc at D4DDA4F25D23B967DAED4CED", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238074790, false, "05cac71f-7a9d-4635-a0b2-40369a3ff71e",
+			"@@@InProc at 621ADCAE32206F49D7501CEA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238080340, false, "976530b5-feef-40f5-ae8b-4c5444a02a17",
+			"@@@InProc at 621ADCAE32206F49D7501CEA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238081620, false, "764b495c-4618-4b96-b552-e8b008c1859e",
+			"@@@InProc at 5F5B1088469437B071D35B62", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238082940, false, "ffe8d84e-57f7-438b-aa46-8175041fdcab",
+			"@@@InProc at 5F5B1088469437B071D35B62", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238083750, false, "8a014365-ce88-4985-ab6d-874a55a3037e",
+			"@@@InProc at C166A6178A64D0CA7919461D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238092080, false, "86259a3a-3a64-40e7-956f-b34e355aaacb",
+			"@@@InProc at 4299E9908EED3A741C5F3BC0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238093260, false, "9e00259f-36af-4ded-81d4-3f6b7f1a021a",
+			"@@@InProc at C166A6178A64D0CA7919461D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238093360, false, "88286e97-cd02-4b90-a293-fd9417b329d7",
+			"@@@InProc at 4299E9908EED3A741C5F3BC0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238095150, false, "483fb22d-9f9d-41aa-b7bc-d2d30b867d82",
+			"@@@InProc at 053CFBE4E955EAC00C645FAC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238124810, false, "3813c74a-747c-4349-ad70-6380f6b6c1eb",
+			"@@@InProc at 053CFBE4E955EAC00C645FAC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238125990, false, "d293917e-fad0-4f4e-a24c-ef960df99c33",
+			"@@@InProc at 4CA2737CF6DA86CCEA34F0B5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238127820, false, "224c8262-2ff5-444b-8ee0-75c5e5a0c851",
+			"@@@InProc at 4CA2737CF6DA86CCEA34F0B5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238128840, false, "4899ff67-7f21-4bb9-98bd-007f2a90b4ea",
+			"@@@InProc at 96209589799D2908CDF3D2EB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238134850, false, "2f11600e-491c-4463-a115-601bd46e20d8",
+			"@@@InProc at 96209589799D2908CDF3D2EB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238136110, false, "d252cfda-3bab-4428-8e62-0a8d36c417f0",
+			"@@@InProc at 877C4C8D6B8EB3BD7DF9DE48", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238139590, false, "4b94c70b-0828-4537-b783-4db97695877b",
+			"@@@InProc at 877C4C8D6B8EB3BD7DF9DE48", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238140750, false, "aa28de3d-a0ed-4ed0-9d95-3599a4f20148",
+			"@@@InProc at FC4C8B486032AC781A24C22C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238145320, false, "62cffc2b-fedb-47aa-bcc7-707f75bfb8e3",
+			"@@@InProc at FC4C8B486032AC781A24C22C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238146140, false, "aa213314-7ce3-4694-9aa4-a1704b8f6369",
+			"@@@InProc at 9239FC55EF468F26F32DEED1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238149350, false, "eb965b6c-5df1-49cc-8951-b72250455143",
+			"@@@InProc at 9239FC55EF468F26F32DEED1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238150300, false, "53370ffd-02ea-492a-ad2b-b6f33160649b",
+			"@@@InProc at F8336217CA1DC4C8BFBF46E7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238153890, false, "10aa2245-3377-48d7-b33e-e6dfabd55d68",
+			"@@@InProc at F8336217CA1DC4C8BFBF46E7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238154770, false, "a5922c91-8fc0-4be0-862d-38810cba8ea5",
+			"@@@InProc at 92B1C2D8C050267BFD106587", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238158840, false, "e9c54f28-beab-49ab-a2ad-95b41922d51a",
+			"@@@InProc at 92B1C2D8C050267BFD106587", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238159900, false, "89604290-860a-438a-b8a8-f22f8095231e",
+			"@@@InProc at 3A9F0579EC7D806920091BD2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238162560, false, "584a5ebc-4f30-4e37-9761-c329f6f1c24e",
+			"@@@InProc at 3A9F0579EC7D806920091BD2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238163500, false, "a815f4a9-8c63-4daa-869d-62282dd81178",
+			"@@@InProc at 12C066DD857B92E72B6A4355", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238168180, false, "9a3f8091-8603-4f3f-b287-5a3a11faa787",
+			"@@@InProc at 12C066DD857B92E72B6A4355", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238168990, false, "b2b2c7ef-3c59-473e-97fa-ea79b965a609",
+			"@@@InProc at 929AF74DA1A17BBF1CD5081D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238171380, false, "2d67e2f2-2e4e-45ac-93ee-f1449336e2d3",
+			"@@@InProc at 929AF74DA1A17BBF1CD5081D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238172370, false, "fd659f95-cad6-4a08-ac4a-17a73ea8847b",
+			"@@@InProc at 441AC21F402A04E0DA88CD2F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238176620, false, "15f55bc4-00be-47ba-92cb-82ae9501f2d4",
+			"@@@InProc at 441AC21F402A04E0DA88CD2F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238177420, false, "ed67f758-eace-4c7d-b651-ff25fb8adccf",
+			"@@@InProc at 814E0E1EABA06BC5BB0868E1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238180290, false, "a129bdd4-a3fd-40bf-970d-809e74f7ea6b",
+			"@@@InProc at 814E0E1EABA06BC5BB0868E1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238181480, false, "e188b6aa-e2ce-4eeb-b7ec-94165716acfe",
+			"@@@InProc at B8F71886F1C628FA8C76B8C5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238186560, false, "bc889d80-8881-4bba-9949-856e5cadcdce",
+			"@@@InProc at B8F71886F1C628FA8C76B8C5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238188870, false, "765849ae-83aa-47e5-b694-5dcc1c81cb9f",
+			"@@@InProc at 37A94FE3658E22711B1FB379", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238193000, false, "22845de0-b963-44ed-baf6-c2d74e5f32c9",
+			"@@@InProc at 37A94FE3658E22711B1FB379", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238194910, false, "380d0cbc-6910-4ecb-9ec3-572dad76de67",
+			"@@@InProc at 97FE7E618F192481455EA50F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238197940, false, "3a0fe646-7aa2-4e76-9ba9-315cfd065ee2",
+			"@@@InProc at 97FE7E618F192481455EA50F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238198800, false, "8a32ac01-0608-426f-91e6-d1c099a53860",
+			"@@@InProc at BE1C02B25495CC581B1C270D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238204090, false, "5e83dda1-09e4-4172-8839-ec1f5ef6a842",
+			"@@@InProc at BE1C02B25495CC581B1C270D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238205300, false, "25a10400-f8c0-48c6-81f4-5287a8e0d1cb",
+			"@@@InProc at 99C20FCA270CD868C2A52656", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238208620, false, "fcff7e87-9e96-430d-a57e-a76a20dd18e7",
+			"@@@InProc at 99C20FCA270CD868C2A52656", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238209430, false, "4e3b2b74-1ec2-4d66-9d35-e1b63a7b1c81",
+			"@@@InProc at 8CEA590B6EA08FAD7AF40275", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238217450, false, "5983144a-3438-4020-b5d7-7845e4711534",
+			"@@@InProc at 3F5B81BB262746489823B7D4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238218440, false, "83755e63-86b6-41e2-9ff5-74b834af5246",
+			"@@@InProc at 8CEA590B6EA08FAD7AF40275", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238218570, false, "9dfb74ea-0fb3-4bfe-88e8-6f5bb8fe0107",
+			"@@@InProc at 3F5B81BB262746489823B7D4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238220010, false, "8721291c-a67d-4cc1-a087-49b277ba91c1",
+			"@@@InProc at 6830C053FF25B9484921A504", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238227230, false, "9cce5194-d24f-47c4-b604-39c6cd98b43b",
+			"@@@InProc at 6830C053FF25B9484921A504", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238228080, false, "149a895c-c254-4aa0-b005-367d3f8632db",
+			"@@@InProc at E7E316B42374FD7ACFA1B94F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238228180, false, "30591b04-1837-46a9-8d6f-7024db6d6dea",
+			"@@@InProc at E7E316B42374FD7ACFA1B94F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238229390, false, "b0328ac0-fbf3-425d-a6c9-56b40d85ac54",
+			"@@@InProc at 62E5BC98B7D319CC558B5246", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238235930, false, "d758829f-1981-41e0-a0c7-8708b1bcef8c",
+			"@@@InProc at 62E5BC98B7D319CC558B5246", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238236710, false, "0deaad56-5bb5-4da4-97ab-991765f16206",
+			"@@@InProc at 9C57DB4F3F89D5BEC565243D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238237490, false, "419b6e57-ea30-49d8-af28-a9accdfdef25",
+			"@@@InProc at 9C57DB4F3F89D5BEC565243D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238238300, false, "7a3367d1-abd4-4dce-a268-e1ba57b8dc54",
+			"@@@InProc at 2423DF7443F0043D5720F99B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238244460, false, "43f25dcd-9878-4ee6-8f44-4d4a3745a04b",
+			"@@@InProc at 2423DF7443F0043D5720F99B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238245580, false, "7fcd4e80-7a95-4877-ae19-dbe0117050fe",
+			"@@@InProc at 338C7B120DFDD6836540AAD3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238246870, false, "f139a3a5-48d2-4112-adbd-0a0b87509801",
+			"@@@InProc at 338C7B120DFDD6836540AAD3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238247670, false, "a4c4880e-2141-4fed-a795-65f97191c1d6",
+			"@@@InProc at 684302D06B3882CB844D948B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238253980, false, "c40d0433-9857-40f3-b677-ddcf9e1afe08",
+			"@@@InProc at 684302D06B3882CB844D948B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238254960, false, "3abb35b4-0bae-4192-9020-7cbb91207ff8",
+			"@@@InProc at 908897B514E064F2BAFF34CA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238256520, false, "32eebd39-5c6d-4282-bef0-f15b57f256a5",
+			"@@@InProc at 908897B514E064F2BAFF34CA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238257340, false, "f04c46eb-bc1b-42bb-83eb-2199f34fd9df",
+			"@@@InProc at 6980D501D368381046E6C36A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238262530, false, "8aecab76-51e5-4edf-9097-8ae343d9b7e6",
+			"@@@InProc at 6980D501D368381046E6C36A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238263330, false, "dfcdae36-9445-4431-afe4-d55244504bd0",
+			"@@@InProc at 3DBA252F7404484084728EA6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238266300, false, "cc37b6a1-5798-46fd-ad29-9d65fade2db1",
+			"@@@InProc at 3DBA252F7404484084728EA6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238267480, false, "76977392-17b6-4f88-b4d2-4a99ef47dd6e",
+			"@@@InProc at A74E9532247F4CF5CEBAE8C5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238271620, false, "5a0c351f-3571-4be8-8918-499aba44b8f2",
+			"@@@InProc at A74E9532247F4CF5CEBAE8C5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238272550, false, "62f435d2-4615-4997-87fc-95e33769a18a",
+			"@@@InProc at 6355AD568E46B71B3CB7BC36", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238275580, false, "e3cc7e07-a4d7-4fdd-9645-33d1c6c30b43",
+			"@@@InProc at 6355AD568E46B71B3CB7BC36", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238276830, false, "3e74f2c2-3a89-42e0-9658-c78bbc09d3eb",
+			"@@@InProc at FF7A3F100C77A1468726B970", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238280760, false, "bba69bcf-d223-43a7-b48f-33e8b7b37d47",
+			"@@@InProc at FF7A3F100C77A1468726B970", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238281690, false, "3725b860-8d2f-46d4-8ad9-2fda80550eb5",
+			"@@@InProc at 4EDB37CB3FBAA0C326ED164E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238284420, false, "de64c8bb-6a13-425d-8aec-5e1397001aa1",
+			"@@@InProc at 4EDB37CB3FBAA0C326ED164E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238285280, false, "c6c28bbd-65e0-448f-b8d0-0cd61eacf7a2",
+			"@@@InProc at 92F0A56E330FAE9D85AE6FE5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238289720, false, "3666ed83-5054-401a-81ef-8ff36926fc77",
+			"@@@InProc at 92F0A56E330FAE9D85AE6FE5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238290530, false, "2e960ffe-182c-4b81-8c20-b242165751d8",
+			"@@@InProc at 1934807FC913D8D5DCBA058D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238293200, false, "ca733951-b629-45d8-b448-fb120244f46c",
+			"@@@InProc at 1934807FC913D8D5DCBA058D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238294140, false, "2f2017e3-358d-4bc8-a127-06870d019aaa",
+			"@@@InProc at 5E7D680E83CC4BEBC4071A28", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238298210, false, "f3c125a4-6d47-4b31-bbf9-38fc06bf9a6a",
+			"@@@InProc at 5E7D680E83CC4BEBC4071A28", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238299040, false, "50980959-9265-4272-bfd1-14b4da9b67df",
+			"@@@InProc at E7F2CBA624D5B8559BF2C317", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238302250, false, "f3921b33-4fe2-40ef-af5f-8f8a0c8f4861",
+			"@@@InProc at E7F2CBA624D5B8559BF2C317", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238303300, false, "9d8d2894-094f-4637-a09f-1a5f5a39f961",
+			"@@@InProc at 70CCD8ED7EF1167C63F0B6DD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238308290, false, "104d3921-47ef-493d-8756-939f7384f691",
+			"@@@InProc at 70CCD8ED7EF1167C63F0B6DD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238309100, false, "e896ab3a-fcd4-456b-b664-427a8a9fbefa",
+			"@@@InProc at CCC3822B433E65FE416CD1F6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238313030, false, "1fcad3bd-6990-43a0-a62f-f5e3c9021eac",
+			"@@@InProc at CCC3822B433E65FE416CD1F6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238314100, false, "88d1ef1a-6b73-4090-9884-e3b4ede68eeb",
+			"@@@InProc at 11FB493D707AF956BD949604", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238316920, false, "357fa520-2277-4e3f-9a15-1496af6afb1f",
+			"@@@InProc at 11FB493D707AF956BD949604", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238317860, false, "7ec79cdd-6a72-4d47-b3e4-b330ef450a7f",
+			"@@@InProc at 7C790A9D7AE58B6D78BD5258", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238322490, false, "a12e6552-c28f-4053-afa9-b28a75d13f52",
+			"@@@InProc at 7C790A9D7AE58B6D78BD5258", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238323300, false, "3eef0a78-e4aa-4d46-9224-d6b9754ddde0",
+			"@@@InProc at 33E1ED95BA93B9AA030508CD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238325540, false, "9eb2d53c-fd5d-40f9-896e-69a83d3f07a4",
+			"@@@InProc at 33E1ED95BA93B9AA030508CD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238326350, false, "6c59a318-d4be-48aa-91b6-d3cebbd1c2fa",
+			"@@@InProc at 608E6AE4AE86B935B232FF4D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238331950, false, "6558faca-f89d-4bc6-948f-9281e8bbb003",
+			"@@@InProc at 608E6AE4AE86B935B232FF4D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238332770, false, "046d7978-ca3f-4dab-9171-fe23f23b77fc",
+			"@@@InProc at 47300E3399C365D33C06480A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238335030, false, "d34f7c42-0383-496b-aba8-9586f89cfaa4",
+			"@@@InProc at 47300E3399C365D33C06480A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238335950, false, "1ad22e58-324d-41cc-a172-7f3c8b1cabc4",
+			"@@@InProc at 2B048850389DD5C544A95D34", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238340930, false, "53b2ee13-d157-493a-90af-2875ef0ca9c4",
+			"@@@InProc at 2B048850389DD5C544A95D34", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238341980, false, "09461eb5-a3f1-4ff8-9b04-cfd791a6f127",
+			"@@@InProc at 577DBE7540A11005EFD27CC3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238344800, false, "dd2aad1d-9515-4e21-93c6-471acab9d040",
+			"@@@InProc at 577DBE7540A11005EFD27CC3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238345610, false, "a497ca9c-65f8-4d73-a0ce-b7de4e01b04b",
+			"@@@InProc at CE37A93F49E87129361BCB6D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238353340, false, "ea442633-7bcf-4308-9b6d-71cc530988e8",
+			"@@@InProc at 86F97685DF24459468DC669D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238354540, false, "fd3ec40d-34b9-4ce3-8216-5378f5c9419a",
+			"@@@InProc at CE37A93F49E87129361BCB6D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238354680, false, "f258499e-1ea1-4977-86ae-0ddbe6400f06",
+			"@@@InProc at 86F97685DF24459468DC669D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238356420, false, "c68c300a-8cd9-406c-a013-4489b13b4535",
+			"@@@InProc at E80F2572B1D13744B25CC93F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238364200, false, "e82596f4-e116-4d6c-ab63-fb2de725ef32",
+			"@@@InProc at E80F2572B1D13744B25CC93F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238365020, false, "7eab72b0-722f-4dae-a6bb-f4c31a59d287",
+			"@@@InProc at D92CF717AA167B6048A454AC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238365830, false, "b2d0be24-a28d-43c9-b3d9-77e1aa25d278",
+			"@@@InProc at D92CF717AA167B6048A454AC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238366750, false, "8c0c5d06-6e0f-421e-93fe-0bbac592d114",
+			"@@@InProc at 0AD3E466EF92BFF522F41F3D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238373420, false, "e4914fc1-9e89-4c54-a04d-74a987664d1b",
+			"@@@InProc at 0AD3E466EF92BFF522F41F3D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238374490, false, "f26ae137-5790-47ec-aa46-3bebd0934b7d",
+			"@@@InProc at 6B7B449335DC4E5D1350BEEC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238374740, false, "58e73475-a97e-4a21-aa7c-9a4a5d7c3664",
+			"@@@InProc at 6B7B449335DC4E5D1350BEEC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238376120, false, "74b16aed-309d-4934-8332-d037f9ddd6fb",
+			"@@@InProc at 83D10AD6E7C63C1DB4570E5E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238384690, false, "735221d6-8506-43ea-9e20-6a264b729936",
+			"@@@InProc at 8D5A6A6F972195F0F04A7621", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238386580, false, "8f0e0df4-8c1b-4e9f-91a9-434f60f91a24",
+			"@@@InProc at 83D10AD6E7C63C1DB4570E5E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238386720, false, "86946c10-50d2-4c07-bd35-a1824396fe6b",
+			"@@@InProc at 8D5A6A6F972195F0F04A7621", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238388810, false, "d169f2eb-2422-47f1-97a8-653f847a1ee7",
+			"@@@InProc at 6FF9E25979565143DD66F956", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238398340, false, "f10b54bf-3f94-4d4f-8fb2-a7ef3bd9502f",
+			"@@@InProc at CB96D1B4B7CBE007F77328B6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238399300, false, "c3fd273d-1c52-4f18-83b8-d116475622da",
+			"@@@InProc at 6FF9E25979565143DD66F956", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238399410, false, "bfb6d019-edba-4d68-9559-38f08842559a",
+			"@@@InProc at CB96D1B4B7CBE007F77328B6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238400700, false, "ab43b4e2-618f-4161-8932-97d3c009e699",
+			"@@@InProc at 661C051D61FAAEFEFA8FEA1A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238407930, false, "a1609868-9c02-455f-a830-f6263e7be638",
+			"@@@InProc at 661C051D61FAAEFEFA8FEA1A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238408830, false, "74d9bd70-ff0a-4b86-b2c7-67b44315d565",
+			"@@@InProc at 871DC1E1F698B9206F9C0195", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238409280, false, "b74e01d1-d73c-45d0-8485-d7adb1d7621b",
+			"@@@InProc at 871DC1E1F698B9206F9C0195", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238410110, false, "ef84df6e-5451-4eae-87de-384b173e6118",
+			"@@@InProc at C6D21564D1174794C34BD152", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238417650, false, "831ad200-897c-4b48-8cdd-77cc6b81b718",
+			"@@@InProc at C6D21564D1174794C34BD152", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238418620, false, "a1818837-4d76-4503-b3d4-49f31146b8b7",
+			"@@@InProc at E45AE636D0DE7A94488EEE31", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238419350, false, "733f2a5a-b517-406d-be72-72484c528aeb",
+			"@@@InProc at E45AE636D0DE7A94488EEE31", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238420940, false, "2f552c38-c6d4-43e0-a608-96acb6db8e6e",
+			"@@@InProc at E348C5499B7E3993166A3D0E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238429490, false, "de14858c-f116-45bf-adf6-9f874790023c",
+			"@@@InProc at F51CEA05E73D5D1F404F8B70", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238430540, false, "066f9319-4b5b-4756-8757-26e3eb2146da",
+			"@@@InProc at E348C5499B7E3993166A3D0E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238430650, false, "9ea32586-0bc8-4352-b5b9-3ab29f26110d",
+			"@@@InProc at F51CEA05E73D5D1F404F8B70", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238432260, false, "c470c06b-31ae-4c9e-b0ce-3cf0d72316c3",
+			"@@@InProc at B09AB4CA256893AFC4920E3C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238441080, false, "678d8cd4-9b81-4b00-98d3-7d77177b94fc",
+			"@@@InProc at 3AEF59E7DF376A5FCB8A0B72", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238442260, false, "bc00f27a-5580-46da-8963-44ef2cbe65f6",
+			"@@@InProc at B09AB4CA256893AFC4920E3C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238442360, false, "948a6121-7378-48c4-9947-e63ed30ff21c",
+			"@@@InProc at 3AEF59E7DF376A5FCB8A0B72", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238444080, false, "eb81d2d7-3ee0-40d6-a794-3392604a55ad",
+			"@@@InProc at 3DE990BDCC19348CD8D8CA7D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238454550, false, "f0c0295a-a061-4ac8-811c-2df3258c740d",
+			"@@@InProc at 3DE990BDCC19348CD8D8CA7D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238455840, false, "645036a5-b94d-450b-b532-3f21ffd78e44",
+			"@@@InProc at 356623C1ACB1E8E7C200952C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238455940, false, "101ab54a-24db-48c5-8d4b-9984a380a4f2",
+			"@@@InProc at 356623C1ACB1E8E7C200952C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238457730, false, "15ea4a6b-2294-48bb-8b81-baf018489e56",
+			"@@@InProc at CEDFF56626597FA52F44329B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238465740, false, "16940efc-2a4f-4e73-b7ea-2512b40c36cc",
+			"@@@InProc at CEDFF56626597FA52F44329B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238467610, false, "7b931ff6-bcab-469b-b691-e28ea38f5f7d",
+			"@@@InProc at 7E10496B0A12ADD82033ED17", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238469000, false, "de3cc2a6-4d8e-4d39-9e5b-1b7c1cc794c4",
+			"@@@InProc at 7E10496B0A12ADD82033ED17", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238471270, false, "64fe142b-7de5-41d7-a229-dcce32a0e8b5",
+			"@@@InProc at A49FB1E6CC7C0841FB121F8B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238479100, false, "269fdb39-ea81-4799-9adb-306a4bdca24a",
+			"@@@InProc at 94D1547EE7B0FB3587CDC2B5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238480230, false, "e6e2c47e-aa24-477b-ae2c-3fd7a2f66190",
+			"@@@InProc at A49FB1E6CC7C0841FB121F8B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238480360, false, "db6a6a6a-3db1-4ba4-bb52-0c32f2808e15",
+			"@@@InProc at 94D1547EE7B0FB3587CDC2B5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238482370, false, "56676c80-0919-46e3-9094-24384596b420",
+			"@@@InProc at 0BAA83CFE1D6A20A24E6500D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238489460, false, "ea8fcef2-22a9-4b93-8bd6-571ac1012127",
+			"@@@InProc at 85BA29E3231653B265B4FC8D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238491050, false, "c8200044-61ff-4538-aff1-2089e1591a27",
+			"@@@InProc at 0BAA83CFE1D6A20A24E6500D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238491130, false, "5bd1748f-fd01-42ed-bbf4-faf2b9212dcb",
+			"@@@InProc at 85BA29E3231653B265B4FC8D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238492730, false, "541d067d-6c5b-4dfe-a590-9be39b4fad83",
+			"@@@InProc at 3DB3B7D11CC53F5A4944F343", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238501470, false, "8ecf0fe2-9e4a-49d5-aad2-36dd529bbc72",
+			"@@@InProc at 7F264F9AFE4B1D8E997151B9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238502690, false, "2f982d04-fbed-4506-86f9-c1dcb163099e",
+			"@@@InProc at 3DB3B7D11CC53F5A4944F343", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238502790, false, "f05c6cd4-e5f3-48d4-aa31-85a1215a1d21",
+			"@@@InProc at 7F264F9AFE4B1D8E997151B9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238504400, false, "fae2f75b-3a9f-4448-9e1a-f61db6e9d81c",
+			"@@@InProc at 40C22D2798E866DA72F4E6A6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238511900, false, "e0f70374-bf21-4eaa-bf6d-d6afb0b45fb8",
+			"@@@InProc at 40C22D2798E866DA72F4E6A6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238513380, false, "836d6928-8b70-457b-b3ab-1e3ae0e44d61",
+			"@@@InProc at D09A21866DA5DB10EAEA75C0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238515590, false, "2018e8a7-333d-4cba-bfda-f0b28756039f",
+			"@@@InProc at D09A21866DA5DB10EAEA75C0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238516770, false, "36cbcde7-64e7-4ac2-8b1e-909c02256676",
+			"@@@InProc at 234F0A74F1BB2EA9051118E6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238522170, false, "b900bf41-b689-4f4c-87fc-a722a3b59cce",
+			"@@@InProc at 234F0A74F1BB2EA9051118E6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238523170, false, "1ca730b2-a1bd-46ff-955c-e7c44140dc71",
+			"@@@InProc at 50A920EA64EFE707D29C0C19", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238525400, false, "3c769828-34c7-4f6a-b827-216286ec6632",
+			"@@@InProc at 50A920EA64EFE707D29C0C19", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238526210, false, "cee3ba3a-c984-4033-b327-8c5f56c01b73",
+			"@@@InProc at D3FC9B9DD7294DE33C24DF8B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238531680, false, "de07d1c9-a250-430d-9789-69ad841056d9",
+			"@@@InProc at D3FC9B9DD7294DE33C24DF8B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238532490, false, "932883c9-61ca-4f61-8c34-de8a94cb732b",
+			"@@@InProc at 0CD4CE01F8DE628D067BE422", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238536100, false, "20c629fe-3edb-4f73-854a-e5ead5266535",
+			"@@@InProc at 0CD4CE01F8DE628D067BE422", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238537280, false, "076b8681-736d-4fb5-977a-ccb4de9f236b",
+			"@@@InProc at C4FD4EAE035497D3A73B7A1B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238540340, false, "6d93c8cc-9f78-4b44-864b-9c86504cf2cb",
+			"@@@InProc at C4FD4EAE035497D3A73B7A1B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238541480, false, "e7840a48-3233-43aa-b239-c2d6eb8dd74a",
+			"@@@InProc at 9833067DBF06C258B4FD9CF7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238547780, false, "bbf3e99a-b33e-4bfb-9c35-45be10ea610f",
+			"@@@InProc at 9833067DBF06C258B4FD9CF7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238548600, false, "45514911-d8d6-45fc-95ec-9e4b8225fd48",
+			"@@@InProc at 5F63EFB934F1E72E30894E49", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238549590, false, "8598d35d-fa73-4bf3-823f-7ebc2b6240ea",
+			"@@@InProc at 5F63EFB934F1E72E30894E49", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238550260, false, "70604f99-a9c0-4425-b9b7-4541c44c758c",
+			"@@@InProc at AD73E0D35CD4BBC67C4A7B23", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238554760, false, "81c8372b-1e71-4771-981f-919c69625d48",
+			"@@@InProc at AD73E0D35CD4BBC67C4A7B23", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238555530, false, "dc4757a1-be46-4f25-8aa6-c59f78ede46b",
+			"@@@InProc at 0AD4470E7FF7C85EB242C048", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238556640, false, "d30368ce-4cf0-43ac-8ed1-a8092f10b687",
+			"@@@InProc at 0AD4470E7FF7C85EB242C048", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238557410, false, "54df0edc-ced0-4396-8724-97f3c20522a2",
+			"@@@InProc at CBE2B61B911702CE51B2D1FB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238561410, false, "43e3685a-3471-4b7e-b246-9ff4197211eb",
+			"@@@InProc at CBE2B61B911702CE51B2D1FB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238561960, false, "1c988738-b175-424e-aa5d-b5ce32956d8e",
+			"@@@InProc at 8665BD17AE1CB3ACDB6A556B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238583820, false, "aaa934a8-321a-4be9-b202-a6205e7936c9",
+			"@@@InProc at 62D3F1BDF2CA4DFA31BD735A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238584510, false, "300d3116-8780-4dc7-bede-0515118386f7",
+			"@@@InProc at 8665BD17AE1CB3ACDB6A556B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238584580, false, "e811c346-58ee-4c0b-8b90-aba9116d828a",
+			"@@@InProc at 62D3F1BDF2CA4DFA31BD735A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238585560, false, "bd28ab1e-7ae2-42bd-817e-b0638f8eb4aa",
+			"@@@InProc at 3885492BCFD5D8B542D35661", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238591930, false, "9116ecf6-7cbb-4457-887b-f82c1c4a1f9f",
+			"@@@InProc at F630176BDAAAA62C817357B2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238592720, false, "cccebf78-533f-46c9-9227-a9361e742fa8",
+			"@@@InProc at 3885492BCFD5D8B542D35661", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238592790, false, "039aaad7-d426-442f-9512-da8d4fafffac",
+			"@@@InProc at F630176BDAAAA62C817357B2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238593830, false, "b42fe5b6-66ce-4528-8d1a-ba06bf9ce90d",
+			"@@@InProc at F947096E85D81D559FF37431", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238599050, false, "a3217044-6bb5-4f1e-8003-0f82413cb318",
+			"@@@InProc at 031BE16826574C8D9508E8F0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238599850, false, "40509c36-1156-427c-a820-a1b5b7bada2f",
+			"@@@InProc at F947096E85D81D559FF37431", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238599910, false, "099768c4-6429-4109-a11b-69d03508a6c9",
+			"@@@InProc at 031BE16826574C8D9508E8F0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238600950, false, "88876b72-720f-4737-a33d-1cd5be00bb51",
+			"@@@InProc at C756356FF6B1E2FA985A0EB5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238605570, false, "0d83be77-4ba8-4e05-982b-63e5ee9a07d5",
+			"@@@InProc at C756356FF6B1E2FA985A0EB5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238606130, false, "b47042b0-16ac-4d44-b777-b64a5b2f003b",
+			"@@@InProc at 7F3F88BF3B651A37430AF14F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238606700, false, "132f34f6-0abb-40ac-80dc-6e4c83f22923",
+			"@@@InProc at 7F3F88BF3B651A37430AF14F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238607380, false, "0eec7801-4fbd-42e5-9c46-2a1fc62d827c",
+			"@@@InProc at 50BA3C0E017BB6E59B3C3AE1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238611370, false, "95d8e2f1-7308-47fd-9dd3-6524306eb79c",
+			"@@@InProc at 50BA3C0E017BB6E59B3C3AE1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238611990, false, "1f1061c7-c827-46b0-ae07-da73a7105dac",
+			"@@@InProc at 6601655E2C88733C565F24BC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238613900, false, "84739076-c730-4daa-a270-37735cd5f244",
+			"@@@InProc at 6601655E2C88733C565F24BC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238614650, false, "7fdd7ba4-c822-4e02-85af-f3e063da499e",
+			"@@@InProc at 17E2DED109D7FC408DFF0C78", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238617180, false, "03f47ac2-d0c9-44ce-9c18-80f8ddd9aeb4",
+			"@@@InProc at 17E2DED109D7FC408DFF0C78", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238617830, false, "33af90d1-5da1-4ae0-a271-36456f68dd8c",
+			"@@@InProc at 64BAE2D06F8F8B4D99ADA0C4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238621160, false, "dfd230cf-8851-47d3-a426-d96820ccb632",
+			"@@@InProc at 64BAE2D06F8F8B4D99ADA0C4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238621920, false, "24207b62-5221-4b8e-bd30-00109d467901",
+			"@@@InProc at 2ABE1E79F3BDC1520D9FEA7E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238623160, false, "a2c82061-d5fa-4e45-bb40-ec825467ad6f",
+			"@@@InProc at 2ABE1E79F3BDC1520D9FEA7E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238623700, false, "a44af660-1713-4a0a-9c47-8eabb3bbd8d1",
+			"@@@InProc at 05E2EB7D8854F8A40A43A28C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238627880, false, "3d339c55-2ddc-405d-ac81-b830d4250cc4",
+			"@@@InProc at 05E2EB7D8854F8A40A43A28C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238628490, false, "8091306a-45aa-4629-8d6c-3aa1c43c0ca1",
+			"@@@InProc at A405449973264678C99A4A47", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238629100, false, "a7dcf59e-4e03-4a3e-b4c4-22a3c2138592",
+			"@@@InProc at A405449973264678C99A4A47", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238629640, false, "b2daba8a-18c9-4a4e-9ba0-bae58dc35270",
+			"@@@InProc at 48800D0A51AA136ED5054EFD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238634140, false, "fa1f49b2-5345-461c-abf0-ac743ff26122",
+			"@@@InProc at 48800D0A51AA136ED5054EFD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238634650, false, "db594704-ae92-42ed-9e6d-a931e22f5c1d",
+			"@@@InProc at F5440FC396B2693E40811B68", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238638840, false, "40fdd556-ac47-4b15-a162-d70ec4c6aada",
+			"@@@InProc at F5440FC396B2693E40811B68", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238639500, false, "bee4ff83-cf76-4b80-88d0-235d233e42d0",
+			"@@@InProc at 2044113C25F487760FAFAEF6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238641030, false, "b96e79c3-e4d2-4e86-8e70-dad416cd970d",
+			"@@@InProc at 2044113C25F487760FAFAEF6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238641770, false, "ec8da4db-c4ae-424e-a023-3a34e2cf967b",
+			"@@@InProc at 9759170B07AB6912C22D28D7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238644710, false, "95937b5c-d940-4691-a8e2-ffae128c121b",
+			"@@@InProc at 9759170B07AB6912C22D28D7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238645260, false, "880818e7-d532-4a99-a86a-450174a598fc",
+			"@@@InProc at 49391E034192878915DFD531", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238648140, false, "f9d06cb1-f8dd-4519-b7aa-4db39661f0d7",
+			"@@@InProc at 49391E034192878915DFD531", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238649320, false, "02a29452-3f9f-4123-9af1-dc94bccb51b7",
+			"@@@InProc at 5429BAFE1766EC57815EFDD6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238654080, false, "e41155ac-6a43-4244-8ab7-ef5d007b9989",
+			"@@@InProc at 5429BAFE1766EC57815EFDD6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238654680, false, "910629b1-69fb-41ab-8709-da8bfc45f5f5",
+			"@@@InProc at 0439A49F16FDCCB441B04307", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238660500, false, "0d64f210-d3b7-4dcd-93a0-0cedd96a75b2",
+			"@@@InProc at 0439A49F16FDCCB441B04307", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238661160, false, "2f9164b7-4790-4e5a-96d3-11f1a5679609",
+			"@@@InProc at F290C3C05895D0BAD128573D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238661310, false, "9ae0f213-bb5f-4e80-b11f-45835ce172db",
+			"@@@InProc at F290C3C05895D0BAD128573D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238662460, false, "b6f9a619-04a7-44a9-a2f8-0a1097d5281a",
+			"@@@InProc at 766E34BB415247BCF8A34477", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238667510, false, "fae465e6-dc7f-4afe-8dac-4dd3798ad552",
+			"@@@InProc at 766E34BB415247BCF8A34477", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238668360, false, "8a5ea363-34b4-4314-94b7-c37518d1262f",
+			"@@@InProc at 373A4BA58B89CAB0B444F60C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238671010, false, "3034cc85-459e-45c9-ba10-ff3138a7e96a",
+			"@@@InProc at 373A4BA58B89CAB0B444F60C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238671630, false, "2f67ac1c-6cfd-4def-868c-7a2a77c6224b",
+			"@@@InProc at 23314CA6209FA9DCC3F0F67E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238677080, false, "c81c2f64-8d9d-4024-86e0-4d193162486c",
+			"@@@InProc at 26E53E6C65C4985B004435D5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238677720, false, "1ffcb406-9824-41b0-99ec-e9d9c36851bd",
+			"@@@InProc at 23314CA6209FA9DCC3F0F67E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238677780, false, "343658f7-0917-4dd6-b151-f51c4cddd338",
+			"@@@InProc at 26E53E6C65C4985B004435D5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238679000, false, "05f98d67-bbd5-4cfc-8742-eaaf9e7a0f95",
+			"@@@InProc at B880BD6913A318006D9496B8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238683950, false, "5b4881eb-58fa-4b31-9770-f862b78270b5",
+			"@@@InProc at B880BD6913A318006D9496B8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238684720, false, "b7da3af4-dbbf-43a4-b5a7-7dd0d7eded19",
+			"@@@InProc at 030C3867F87BCD8465D16413", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238685570, false, "822ae166-7335-416c-bdd7-2f2c3e22a4ec",
+			"@@@InProc at 030C3867F87BCD8465D16413", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238686320, false, "35b3ad87-b4a8-457d-8a96-3bf15b6879d5",
+			"@@@InProc at E0849A857F1A58D5FEB2FB97", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238690320, false, "aba78d03-1cae-422e-8d9a-4262f1dee7ac",
+			"@@@InProc at E0849A857F1A58D5FEB2FB97", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238691680, false, "a70926c5-5119-4eb5-a706-0e60851a86ea",
+			"@@@InProc at FB62265609B9660F930A0667", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238693440, false, "452490ab-e487-422f-bc7f-2ac0d5af4bc1",
+			"@@@InProc at FB62265609B9660F930A0667", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238694780, false, "7fcf74a4-1dce-494c-a41c-a871ab14ff15",
+			"@@@InProc at 85368231003D15A28016F01F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238698180, false, "52acb30c-6095-4364-a045-b34667999977",
+			"@@@InProc at 85368231003D15A28016F01F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238698840, false, "be002ed7-d4b3-4884-aa2d-e641ca6b610c",
+			"@@@InProc at 4694B9B4E069DEEB830B235C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238700450, false, "87b2ff84-5390-478c-a5c9-dde50e1c93d3",
+			"@@@InProc at 4694B9B4E069DEEB830B235C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238701060, false, "94e75fc2-7895-4964-9adb-1b06d9bce14a",
+			"@@@InProc at B1F76CD137021320A3713D42", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238705150, false, "8a0e0e56-cf93-4709-8a23-d3b6fa321735",
+			"@@@InProc at B1F76CD137021320A3713D42", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238706620, false, "1ad53575-8234-42d7-b012-eb1758207c21",
+			"@@@InProc at 77797D5B0584DB860F348C1E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238708270, false, "5517635b-c197-404f-a4c6-19d71596818f",
+			"@@@InProc at 77797D5B0584DB860F348C1E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238709760, false, "ed2fbfb8-b612-4996-bf60-9dc7e97c8a73",
+			"@@@InProc at 2F323C4887601C9C726C3E07", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238712680, false, "73e16be3-6e54-41dd-b460-50220e53bbae",
+			"@@@InProc at 2F323C4887601C9C726C3E07", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238713230, false, "0a6e4527-3778-4500-8e4a-6de9f0a21c2f",
+			"@@@InProc at 4C1A61647698C37E66BCF74F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238715260, false, "397affd8-0622-4039-bef5-2fa755000e7a",
+			"@@@InProc at 4C1A61647698C37E66BCF74F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238715980, false, "f7d08645-1b9f-4fc8-bc25-5ac398faa9a5",
+			"@@@InProc at EB32C13FABE79929D403A6D0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238718230, false, "9ccb1d33-09c0-4890-acc3-0410e4d414b3",
+			"@@@InProc at EB32C13FABE79929D403A6D0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238718850, false, "584ab4bf-6f6c-4788-a9ea-a07b7824bd0f",
+			"@@@InProc at 9AFA7B50028D85F4231478BD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238721920, false, "339b3cee-de55-459f-893d-d8bce13d2db6",
+			"@@@InProc at 9AFA7B50028D85F4231478BD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238722450, false, "a080cc31-2dfb-4062-a95b-1c5e9316b9af",
+			"@@@InProc at 4F1096A59E52843620AE55BB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238723950, false, "98349737-f6bf-4ab6-aecf-8ef6e7388925",
+			"@@@InProc at 4F1096A59E52843620AE55BB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238724550, false, "855db630-9b8d-468d-8f7e-3bccf9adcc72",
+			"@@@InProc at 3B0525AB522E427F7EA43A16", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238728250, false, "f6bba1ae-b9c3-45e0-bb02-3dee6e0cde0d",
+			"@@@InProc at 3B0525AB522E427F7EA43A16", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238728950, false, "fcd50bc7-f52e-40b8-91dc-474e96d1649a",
+			"@@@InProc at FF896E2A7CDAD937607CF328", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238729860, false, "85c2c8d7-df5a-4c2d-a5aa-227c4c9e53d5",
+			"@@@InProc at FF896E2A7CDAD937607CF328", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238730370, false, "febe4d83-42d8-43da-b003-b21ce6de7714",
+			"@@@InProc at 037098E933DABEB0D28F865A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238734410, false, "b637836b-a8d3-4cb4-85bd-8f3c527ea15f",
+			"@@@InProc at 037098E933DABEB0D28F865A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238735010, false, "e1e1f1c2-c921-4e0c-a77c-6c76dbb7a67f",
+			"@@@InProc at 06047C19A106745122FD6E61", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238735610, false, "cfe149fd-2fd1-408e-b12b-9ed641fb929c",
+			"@@@InProc at 06047C19A106745122FD6E61", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238736130, false, "733330c5-17d3-43df-88a7-3179590c93e3",
+			"@@@InProc at B502285E397E4C5A53C2C603", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238740720, false, "1d57eccf-c483-46e7-b758-fe41312677e5",
+			"@@@InProc at B502285E397E4C5A53C2C603", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238741600, false, "a170a9c0-88c1-4562-9b7b-2e891e88a13e",
+			"@@@InProc at BEFA7F6ACF7D2CF2C4BCDBA1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238741680, false, "9ec0f487-3511-45db-8eb1-5f8fa2e9a703",
+			"@@@InProc at BEFA7F6ACF7D2CF2C4BCDBA1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238742560, false, "a2de7041-242d-4846-a0c5-5e8990cbcede",
+			"@@@InProc at 9D8F9AA50BDD5B0BFE7578EA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238750730, false, "669a278b-700e-40f7-ae36-a7150c587e16",
+			"@@@InProc at 9D8F9AA50BDD5B0BFE7578EA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238751530, false, "8b975701-7184-4094-8d5f-edd4ba591406",
+			"@@@InProc at BF102B0265988B48FCF9EEB5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238751600, false, "bd2e7f5e-4fc5-4ffa-8110-b59609f62cdd",
+			"@@@InProc at BF102B0265988B48FCF9EEB5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238752680, false, "c450464f-1d9e-41b9-b194-3f26cd33ecbd",
+			"@@@InProc at CDE5F4436F5BC6876994C3EB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238757240, false, "90223073-ca25-4ce9-ac1b-73d6a212a8aa",
+			"@@@InProc at CDE5F4436F5BC6876994C3EB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238758010, false, "81e4bca5-7f06-4a93-a868-5af261473914",
+			"@@@InProc at 1F4BBA0C79020FCB26B2F763", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238759200, false, "54fe0c79-4473-4611-9ed1-81bfa1ae1019",
+			"@@@InProc at 1F4BBA0C79020FCB26B2F763", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238759950, false, "75de8b40-0b37-4d91-9974-271dd6a7955b",
+			"@@@InProc at E0CE7950D4BD85FEFA27A3A9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238763780, false, "c5886774-3497-4866-8306-84538390a1bf",
+			"@@@InProc at E0CE7950D4BD85FEFA27A3A9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238764490, false, "fb74c1b2-38a5-45b2-bc83-d991ef731191",
+			"@@@InProc at 2C2DF56D73FFF290A1C43A1D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238766130, false, "4da01798-d423-4603-9af4-e54b57baec19",
+			"@@@InProc at 2C2DF56D73FFF290A1C43A1D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238766730, false, "bff4dd3d-e7cd-41a1-827e-5972a9dc4819",
+			"@@@InProc at 3A2154495F8CBA4C4DA8E569", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238770640, false, "d9f59b2e-bb3d-4de3-8004-2b6b9cf5561e",
+			"@@@InProc at 3A2154495F8CBA4C4DA8E569", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238771350, false, "29faa384-278e-4d12-b047-27e9d03534c0",
+			"@@@InProc at BBB52FF9B6DC9FAF4AA6A538", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238772390, false, "c7a875c2-3281-41cb-81c1-15d24164adaf",
+			"@@@InProc at BBB52FF9B6DC9FAF4AA6A538", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238773060, false, "bbc420d7-d742-4ea2-94e4-9e33980db144",
+			"@@@InProc at 539922A099DC64C3D2321820", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238777130, false, "616ea058-285e-4034-9829-c91b91f356bc",
+			"@@@InProc at 539922A099DC64C3D2321820", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238777800, false, "f8ea348e-5f42-456a-91fa-3ca4c72e9791",
+			"@@@InProc at AB0B1FA321545C7FA6E5C0AC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238778960, false, "0ea6a4a3-b043-4ab8-990f-ce2a3d63d8b3",
+			"@@@InProc at AB0B1FA321545C7FA6E5C0AC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238779590, false, "25272c85-31e1-41a7-ba22-8cdd6020b455",
+			"@@@InProc at 474DCE647437CEB36DF7042B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238783850, false, "2c53d537-6218-410e-a34b-a3a99dc2b723",
+			"@@@InProc at 474DCE647437CEB36DF7042B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238784560, false, "3988956d-50ae-4452-861f-667b64af2e47",
+			"@@@InProc at A9D686147101BA3E6F330605", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238785650, false, "a960aaf3-969f-4f98-b1b3-0b1d1ca25cc8",
+			"@@@InProc at A9D686147101BA3E6F330605", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238786290, false, "81a951bc-6082-4197-a4a1-b03ee8df998b",
+			"@@@InProc at 30BEAE50F7AE6820A6FB1873", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238791350, false, "219ccf85-1463-4f82-8a2c-abf433806b2b",
+			"@@@InProc at 33E8109023EB8910FCBB6D5B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238792100, false, "f2562e6b-c8f8-42ff-990d-17692f1f6d30",
+			"@@@InProc at 30BEAE50F7AE6820A6FB1873", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238792180, false, "934da5f9-7dc1-4047-9eda-512536084e13",
+			"@@@InProc at 33E8109023EB8910FCBB6D5B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238793220, false, "7612f079-71a3-4127-8b62-d5624f1b703d",
+			"@@@InProc at D770C84635E6C31DA51E7D1C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238799080, false, "95ed64ae-fab4-44df-9936-b81536db1c40",
+			"@@@InProc at 9A874C2BDBC8B31B18504B4A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238799780, false, "74761662-806e-4607-9120-e7d358902027",
+			"@@@InProc at D770C84635E6C31DA51E7D1C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238799840, false, "3dfe486c-6166-4e66-b676-0f8341f8a29c",
+			"@@@InProc at 9A874C2BDBC8B31B18504B4A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238801120, false, "c98f0b8b-ec61-4843-996e-84b17cdf0917",
+			"@@@InProc at 846207F73C8F4D7BCA420D55", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238805990, false, "a4943170-682c-478e-ad86-d57a76e94641",
+			"@@@InProc at 846207F73C8F4D7BCA420D55", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238806690, false, "cc6ca140-9466-42cb-826c-2c2f9f80a7d8",
+			"@@@InProc at 17FF960FA8FF1502D8FBEBA8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238808030, false, "d8774772-623d-4467-b44b-efe52120e0b6",
+			"@@@InProc at 17FF960FA8FF1502D8FBEBA8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238808730, false, "a1e2efc6-128a-45c8-a5f5-ac25091c21d2",
+			"@@@InProc at 0510DE427FCD49F12B4128E0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238812180, false, "4b535c4a-825a-4fc2-9423-f756d24b163b",
+			"@@@InProc at 0510DE427FCD49F12B4128E0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238812820, false, "380548e9-a370-4d40-827f-444ac39f7899",
+			"@@@InProc at F1BB48AE114DD9120A54D715", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238814290, false, "719b42f9-cab5-47cf-9387-8146089e3c09",
+			"@@@InProc at F1BB48AE114DD9120A54D715", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238814970, false, "0c5009f8-2c9d-4769-a346-fa6df15bb8f8",
+			"@@@InProc at 711CBBFF554534C8FD908A01", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238820020, false, "f3dffea2-bd5b-4a4d-88ea-a67d3bc9f167",
+			"@@@InProc at 25D38454EE2815DB82F65227", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238820780, false, "9105e0d2-2510-40df-8c60-e46f32df0e3c",
+			"@@@InProc at 711CBBFF554534C8FD908A01", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238820840, false, "96d1deca-b920-4d06-97e9-947ccc62666a",
+			"@@@InProc at 25D38454EE2815DB82F65227", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238821890, false, "4047fbff-4371-4c45-8cbc-ca9ffdb5ce54",
+			"@@@InProc at 13BBA349931EB7853970CA43", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238826740, false, "8df97469-3e8c-4eb7-a7e6-825a6cc4b0a0",
+			"@@@InProc at 13BBA349931EB7853970CA43", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238827370, false, "ed9ef1f7-d312-4267-9b04-9b7706a905c9",
+			"@@@InProc at 10A79A04757546C7FEB70830", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238827440, false, "2a3e6575-6b95-4743-91cd-05a227698fc9",
+			"@@@InProc at 10A79A04757546C7FEB70830", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238828350, false, "a766e2e2-b800-48a6-9c5d-ba4e68dc9a36",
+			"@@@InProc at 93EDD081D662CECB77E6E1DB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238833540, false, "947d5736-d5c1-476b-a668-6e35e4c3be0c",
+			"@@@InProc at 20EC6008965CF2416907FBA3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238834310, false, "89013286-4619-41ba-bf98-100d38275b5a",
+			"@@@InProc at 93EDD081D662CECB77E6E1DB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238834390, false, "4cc46e37-087b-41c8-ae3a-a20bb0f912ea",
+			"@@@InProc at 20EC6008965CF2416907FBA3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238835340, false, "cc4ade46-7de9-4eff-abf9-cd76e1a0e2d3",
+			"@@@InProc at B9C179D88BF835E1E249C32D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238840500, false, "19b18e11-f146-4f02-9eee-b36323178ee5",
+			"@@@InProc at B9C179D88BF835E1E249C32D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238841100, false, "7eff37cb-e529-4c81-82b6-ea593ee254a4",
+			"@@@InProc at 29BED22E9518A2379965F111", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238843700, false, "50b2b662-8797-4fcf-a936-87a4904384ad",
+			"@@@InProc at 29BED22E9518A2379965F111", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238844800, false, "807d5238-d784-40f4-b5af-29f8e45ef489",
+			"@@@InProc at 824FC3785927CA80CCA902B8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238847900, false, "a97f8c88-0253-4632-b2f3-dd124262d761",
+			"@@@InProc at 824FC3785927CA80CCA902B8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238848450, false, "1e4652b2-b648-4619-88a4-000d7529413b",
+			"@@@InProc at 151B0498808C62022024CF98", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238851470, false, "f5e4b992-5228-4d0c-88ae-23564f8e0a81",
+			"@@@InProc at 151B0498808C62022024CF98", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238852180, false, "98c55f47-9d5a-4369-9bac-7345fa2acf78",
+			"@@@InProc at 544B8AD5CEEB28434B2259FF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238853940, false, "cd563c66-af61-45b2-badf-bc215d61ceed",
+			"@@@InProc at 544B8AD5CEEB28434B2259FF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238854860, false, "ffaa99ea-7e7b-45e6-847f-616b73439429",
+			"@@@InProc at EFFF62194E1E560BACA31020", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238858520, false, "612e85e8-0e55-417f-a649-9e946918ecf0",
+			"@@@InProc at EFFF62194E1E560BACA31020", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238859260, false, "525fcc93-0d1c-430a-9c1e-8e70f00d9fe9",
+			"@@@InProc at EDFCA2A2709FA48117C06426", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238860550, false, "38f0ec51-030c-49a0-8671-f4e5ff4aee35",
+			"@@@InProc at EDFCA2A2709FA48117C06426", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238861260, false, "7e3074dd-9b5f-4172-a445-f91defe7a96a",
+			"@@@InProc at A89DE56C5492A7657DF9A8F6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238865450, false, "d9340ed5-1e97-48e5-b565-a782fbdff7a5",
+			"@@@InProc at A89DE56C5492A7657DF9A8F6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238866160, false, "560e4209-b234-413b-8453-2ca1186791a6",
+			"@@@InProc at 2EA8FEBC1D233FB6416B166D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238866790, false, "ca56b1b1-547a-4c7f-bb7a-d12966cee056",
+			"@@@InProc at 2EA8FEBC1D233FB6416B166D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238867380, false, "d5f0deb1-f588-4b21-be11-ecf538ddee1d",
+			"@@@InProc at 59E8CCDDA7CF77A1B0B2ACB8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238871750, false, "6443b7f8-a072-4ffc-946a-a5d853ca1540",
+			"@@@InProc at 59E8CCDDA7CF77A1B0B2ACB8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238872420, false, "21d7e147-97fe-429c-9b82-87d29f038eec",
+			"@@@InProc at 561470CED5590D47177E5DD4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238873010, false, "112ae5f3-afe4-4a93-be1a-2f443c8519a4",
+			"@@@InProc at 561470CED5590D47177E5DD4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238873710, false, "39445ab0-6674-4e55-aebf-e6636ba4c7bc",
+			"@@@InProc at D2881BAE79525CD802EFCD4B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238877790, false, "deed2b82-1e18-4945-b3fb-3522873db012",
+			"@@@InProc at D2881BAE79525CD802EFCD4B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238878570, false, "665ce8e9-189d-496c-ace7-08b2d291df80",
+			"@@@InProc at FD2460AC7DF1B3DE858F18EE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238879750, false, "353e57e6-b1be-4bfd-81c9-650e937f8522",
+			"@@@InProc at FD2460AC7DF1B3DE858F18EE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238880500, false, "5e77490b-70f8-4fa7-b14c-8e7a87872ab2",
+			"@@@InProc at 460F29CCD81F5BF6A70F21C9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238884710, false, "53decf68-2371-4a3e-aa98-7e10d754f766",
+			"@@@InProc at 460F29CCD81F5BF6A70F21C9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238885630, false, "44c0549b-566f-4c19-b841-36913fa72114",
+			"@@@InProc at 9AAE299A4051BAC8F6A47E67", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238887190, false, "bb0f9ff1-7ca2-406a-88d9-aaee39f37042",
+			"@@@InProc at 9AAE299A4051BAC8F6A47E67", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238887990, false, "c7b836f2-8fd9-4910-9aeb-13cac6d1dbba",
+			"@@@InProc at BE93241A0E82966156BF7760", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238910480, false, "61920a40-a2eb-49a4-812c-ddbf01321b07",
+			"@@@InProc at 69B5CD4145E3BC93825C1810", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238910700, false, "b7959140-68ef-4e3c-9145-d6a28b588090",
+			"@@@InProc at BE93241A0E82966156BF7760", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238911710, false, "b3d2f97b-2cf8-4dd8-8526-e740020ae38e",
+			"@@@InProc at 69B5CD4145E3BC93825C1810", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238911830, false, "26c7d39d-0ab9-4b94-8f5c-fb6f5dc5cf0a",
+			"@@@InProc at 1B333359D134FEA1CA6D934A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238917080, false, "fbbbaa88-40d6-4e5b-9432-1c8dd4f5f257",
+			"@@@InProc at E249FEE05381721A9E3E81CA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238917840, false, "f06e27a2-14d5-48a5-b4e8-dfefdccfe42e",
+			"@@@InProc at 1B333359D134FEA1CA6D934A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238917920, false, "04145110-25d5-4a11-b072-545c04d8f04e",
+			"@@@InProc at E249FEE05381721A9E3E81CA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238918830, false, "e319e7f1-a0b8-48f3-aef4-b4d4c711b2f4",
+			"@@@InProc at C38627A28332E7A821CF8553", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238923680, false, "cb371d92-1de8-4883-b2ba-1359a48f0835",
+			"@@@InProc at D1C6E61E820D73EF74EED043", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238924320, false, "27149e60-b060-4d68-8bfd-1630193c4cee",
+			"@@@InProc at C38627A28332E7A821CF8553", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238924360, false, "281c9d76-09fa-4ae0-bd5a-e1cf29cf08f0",
+			"@@@InProc at D1C6E61E820D73EF74EED043", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238925290, false, "f0f7c7f6-d250-401b-ba32-05feab2a30fa",
+			"@@@InProc at C60071C91365073586AC3D12", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238929950, false, "00ccf302-a7f5-4e05-92c6-9523fcf07e7d",
+			"@@@InProc at 415396EA27F5640C527F3633", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238930540, false, "d393f1d8-a3bc-4e54-befb-f7cb4545f10c",
+			"@@@InProc at C60071C91365073586AC3D12", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238930590, false, "0145397a-0d98-48fb-8b17-a14ac3b900d8",
+			"@@@InProc at 415396EA27F5640C527F3633", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238931450, false, "0164287e-7dd6-4528-87b1-d3d7fd8f8bf0",
+			"@@@InProc at FB9576B95FA42CD20398B0C7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238936350, false, "27b1bcc1-9823-4089-8e3f-782253eb0730",
+			"@@@InProc at 7F3B75F5AE6BC8C26C9D9F9C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238937010, false, "853bef68-765b-44ed-ac68-e6ac65738c5e",
+			"@@@InProc at FB9576B95FA42CD20398B0C7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238937090, false, "4e71ec30-7130-4739-988c-a1072cac60f3",
+			"@@@InProc at 7F3B75F5AE6BC8C26C9D9F9C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238938090, false, "91a80e41-eb37-4284-aa3f-b33ce9840073",
+			"@@@InProc at F5E0FAB04F6F58220EC21F59", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238943580, false, "0da138b5-e797-4cd1-b613-a68024d1abf2",
+			"@@@InProc at CFB826557C78506F7B5A34DB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238946830, false, "bbc1c5ec-b1d1-4e7b-95fb-a16d80a91c1b",
+			"@@@InProc at F5E0FAB04F6F58220EC21F59", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238946900, false, "6348faa6-fed0-483c-8dd0-7508ccd9ba3d",
+			"@@@InProc at CFB826557C78506F7B5A34DB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238948470, false, "eea5c4be-8a1c-49f3-b8a2-02f73d5f6715",
+			"@@@InProc at 952A30BCC5EAE0D1EB28ABD3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238954170, false, "c639cb8a-203d-4cd3-8fe8-24c6f19c156b",
+			"@@@InProc at 30FB9487FBAECA690D2A4A97", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238955000, false, "7cf7e0ad-52b2-4f6d-be2e-fa80171f8dc8",
+			"@@@InProc at 952A30BCC5EAE0D1EB28ABD3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238955060, false, "dede3360-a7b5-43fa-b4b5-92961fabd45a",
+			"@@@InProc at 30FB9487FBAECA690D2A4A97", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238956200, false, "12be7aa7-3148-4486-9b40-8e20583845b4",
+			"@@@InProc at D94814CEE364890897B1FCCA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238962100, false, "903c169a-63df-4dcb-a047-f8c3214c6415",
+			"@@@InProc at D94814CEE364890897B1FCCA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238963040, false, "079caf88-6116-493e-92fc-a06ffd14c439",
+			"@@@InProc at 0D26671ED69A5A241D906277", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238963400, false, "12b5b875-1595-4b03-9144-d9b76e48fa9d",
+			"@@@InProc at 0D26671ED69A5A241D906277", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238964440, false, "9029dd7f-f5a0-43cd-95ad-6391b7e17dfc",
+			"@@@InProc at 685C87716E7EE1DBC513A943", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238968830, false, "3b39497c-ecd4-4d0a-98b7-d86d788d64e6",
+			"@@@InProc at 685C87716E7EE1DBC513A943", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238969450, false, "19b9aaf9-267c-48f1-8676-aec461db7e1c",
+			"@@@InProc at 3F1BF10525E79F1E647F9B9D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238975250, false, "d4785f88-ce8d-4a2d-a471-e423efa03196",
+			"@@@InProc at 3F1BF10525E79F1E647F9B9D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238975880, false, "0654da32-99b3-4fb8-b143-74ba9010f29c",
+			"@@@InProc at 5A9B76C16501FB6F4F7BADED", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238979640, false, "4663a120-7dc6-4f53-9021-cb4ce3a4e32a",
+			"@@@InProc at 5A9B76C16501FB6F4F7BADED", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238980450, false, "2fb57f69-1558-44fe-92ad-3f0344c45a8b",
+			"@@@InProc at 61B75E83BDB8B4C227AD599E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238981450, false, "b6b5986e-baf2-4510-b0a1-4cd6a4bd64b4",
+			"@@@InProc at 61B75E83BDB8B4C227AD599E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238981990, false, "4691ce14-59b1-4a48-9b62-01609a092d68",
+			"@@@InProc at 4DE854567A4E3C7FF8937E9A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238987260, false, "67732b11-137d-42fd-9dad-6577753b9dce",
+			"@@@InProc at 4DE854567A4E3C7FF8937E9A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238987850, false, "efba07b1-e38b-48fc-acf0-37e33feab65b",
+			"@@@InProc at 62F0E2DE020ED9FFD2D12365", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238988400, false, "3db8d5f0-0db2-4d9f-bd40-c3f269414f22",
+			"@@@InProc at 62F0E2DE020ED9FFD2D12365", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238989010, false, "fb8a69dd-586a-4dd6-aecc-d5d501ea7ad0",
+			"@@@InProc at E542DD05B3BA4EF56C4729DC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238993990, false, "b8875b85-39ce-4b0f-ab8c-39e6135ba350",
+			"@@@InProc at E542DD05B3BA4EF56C4729DC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238994880, false, "a1b9fdd1-8c27-4c46-9f7c-928156495c26",
+			"@@@InProc at FD0C60A3E81AA56943C069DE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238998070, false, "846f845a-ad4c-4037-98ff-0cf640db92ad",
+			"@@@InProc at FD0C60A3E81AA56943C069DE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878238998860, false, "c26f67f1-e506-4b78-b070-4ba17f0a2d38",
+			"@@@InProc at F04004E4D60EACFC0290FB38", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239001050, false, "b6d6b2f5-10a5-4bee-9a6a-b435bd055890",
+			"@@@InProc at F04004E4D60EACFC0290FB38", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239001590, false, "eeaf37a5-1e9c-48b9-8ffe-16f8c22afbf1",
+			"@@@InProc at 0B069D4D2C4B1E1A1ECE2BE6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239006420, false, "6442f83c-c1d3-4a92-90ab-59182511f24e",
+			"@@@InProc at E712FC08AF138991ECEAE3A5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239007140, false, "32e6a12c-25e3-477b-b8ce-39d7fa12e2d3",
+			"@@@InProc at 0B069D4D2C4B1E1A1ECE2BE6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239007180, false, "b0e84a0f-9cca-433f-946e-275a277bcb70",
+			"@@@InProc at E712FC08AF138991ECEAE3A5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239008110, false, "47b00479-c3d5-454a-975d-920d8737c913",
+			"@@@InProc at 3757DF7ECA4C77AD365D249F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239013700, false, "c6aaf33b-bac2-45f5-8473-efed9114f0c9",
+			"@@@InProc at 3757DF7ECA4C77AD365D249F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239014230, false, "e2a7a60c-6795-4125-a569-59662dd809ae",
+			"@@@InProc at 5D15EBDFE10AD4EF40EF27BD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239014500, false, "e787f36f-931f-4c47-a7ed-9561b5da304f",
+			"@@@InProc at 5D15EBDFE10AD4EF40EF27BD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239015270, false, "ef67c59b-ffa8-4a62-b6da-7c4fe64be174",
+			"@@@InProc at D9C7AA300C5F20F41B6311CD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239019950, false, "5e31e705-b4d3-4d16-bd82-9daad9da4285",
+			"@@@InProc at D9C7AA300C5F20F41B6311CD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239020530, false, "5d60ddb2-2144-49ae-9de9-e5f66de32af7",
+			"@@@InProc at 1B4F17AB791E114338EC41DA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239020660, false, "484f9630-cad4-46c8-8621-983993dc7982",
+			"@@@InProc at 1B4F17AB791E114338EC41DA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239021530, false, "53787ba4-eb2b-4dfd-922e-09ae5ec05301",
+			"@@@InProc at CAC7C034ACEEE92847FC5A32", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239026320, false, "129cee46-a8b3-49ed-8ede-7b920d2ec652",
+			"@@@InProc at CAC7C034ACEEE92847FC5A32", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239027180, false, "2b114cc8-e570-439e-823c-e59fc77114ae",
+			"@@@InProc at AF1BFB5A9085FAB613141295", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239028520, false, "73d64027-92b7-450a-9050-4a726cbde14f",
+			"@@@InProc at AF1BFB5A9085FAB613141295", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239029320, false, "d1545c3c-1161-4a22-b207-6a397ea4cb72",
+			"@@@InProc at 4A6B6E4F4A2E2332F69E594A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239033530, false, "b0883e0e-bb1a-4cad-ad0b-021e1429fed4",
+			"@@@InProc at 4A6B6E4F4A2E2332F69E594A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239034050, false, "01fd9e72-fba3-4bb8-bd46-9d908147d497",
+			"@@@InProc at E60739F29CB88B1FC27F6810", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239036010, false, "f9544364-2055-447d-9db8-fad23fdfb67e",
+			"@@@InProc at E60739F29CB88B1FC27F6810", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239036640, false, "e6cd2993-ecff-4472-8cd2-5b6e47cd1620",
+			"@@@InProc at 504DEA1463E3A4DF9C1E9AAF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239039440, false, "9edd4e03-2009-495c-af84-bd4e706ed949",
+			"@@@InProc at 504DEA1463E3A4DF9C1E9AAF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239040190, false, "898f83b9-31f9-40c5-ac58-b0b105a45ec4",
+			"@@@InProc at 9EF9916254C449F1BBF07B70", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239043530, false, "f020bcc1-b591-4c29-86a5-ec7579012ceb",
+			"@@@InProc at 9EF9916254C449F1BBF07B70", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239044150, false, "18c9dc12-08ab-4aac-bb85-c151b0743d94",
+			"@@@InProc at F1A5CBB87B8D363DE3CB4C48", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239045770, false, "59cbdcaf-b89e-4322-b8ac-1df279ac806f",
+			"@@@InProc at F1A5CBB87B8D363DE3CB4C48", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239046300, false, "1f946859-4f2e-4bb3-83b2-4ca875e80fc4",
+			"@@@InProc at CE135E084512F8A85B0D0F78", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239050000, false, "0448e158-bc27-4af0-8228-8a8bfec54d99",
+			"@@@InProc at CE135E084512F8A85B0D0F78", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239051130, false, "3b7e7ab4-4a4f-4ef3-9062-50dd643dfbd2",
+			"@@@InProc at BEBEC275A396A677E4E9BD41", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239052680, false, "7250b113-8bb2-401e-9ae5-c991668836b2",
+			"@@@InProc at BEBEC275A396A677E4E9BD41", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239053550, false, "b0ffa4fd-542a-4328-b100-f6b422fac405",
+			"@@@InProc at D372DD3050221FA86B7DD304", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239058910, false, "97b9bea7-f48c-47a3-abc4-2b3a3bf279d3",
+			"@@@InProc at D372DD3050221FA86B7DD304", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239059730, false, "141ab2f6-0b6e-498d-8afc-915f53d32917",
+			"@@@InProc at B4A52AA2CF7142A7AE47802E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239060700, false, "291a9676-598c-4917-b1bc-3fe0d89b5fd4",
+			"@@@InProc at B4A52AA2CF7142A7AE47802E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239061490, false, "a9758dcf-e971-4d7e-a92a-dd86f91b8640",
+			"@@@InProc at 9550384B873748A2140B9573", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239066580, false, "86b62aac-d14f-4f0c-ad25-5e18e83b99b7",
+			"@@@InProc at 9550384B873748A2140B9573", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239067320, false, "7a213f8e-9d31-4407-89f0-86974fa97afb",
+			"@@@InProc at F4AD81047BDE78F61B163F9E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239068590, false, "4e9db70e-7e33-41ef-9e12-8d4413e6ed6e",
+			"@@@InProc at F4AD81047BDE78F61B163F9E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239069170, false, "7501d2a6-6684-41f6-84fa-8869eccadbed",
+			"@@@InProc at 56DDD3C298C624A2FD0D92D1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239073260, false, "c25af85e-92a8-4e9c-a52a-11abfb2906a2",
+			"@@@InProc at 56DDD3C298C624A2FD0D92D1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239074130, false, "6ff98c8d-917c-4e42-969e-c693832bfb89",
+			"@@@InProc at F394094D3F95762753BBF76E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239075230, false, "9c340c84-dbb8-4f60-877e-c8800893e3f1",
+			"@@@InProc at F394094D3F95762753BBF76E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239075800, false, "72f0bea0-176c-411c-a8db-73bec4b81fb9",
+			"@@@InProc at 99FBD2A3E1F1C6BFA750167D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239080440, false, "528c8ef8-5667-4f79-b212-1152fd0ec8d1",
+			"@@@InProc at 99FBD2A3E1F1C6BFA750167D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239081120, false, "80fc26f1-4dac-424e-8de5-2ae815fb3558",
+			"@@@InProc at B319F11C8B6A32476C31B5A0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239081380, false, "bfd163e7-e649-4a7d-9862-d34060a8a5b5",
+			"@@@InProc at B319F11C8B6A32476C31B5A0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239082220, false, "b5eeeffb-c9bd-4342-aaac-7c5ea8789226",
+			"@@@InProc at EE9F270A483B0AB4D73EE740", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239086920, false, "9852d1c5-316a-4a54-8c03-2b3e1a283929",
+			"@@@InProc at EE9F270A483B0AB4D73EE740", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239087780, false, "79bc9497-b4eb-4017-b34f-83e453fc6d32",
+			"@@@InProc at 75FC5CF4ADE81EF00810B446", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239088680, false, "599f062e-2907-4a38-a7e4-7534130629ab",
+			"@@@InProc at 75FC5CF4ADE81EF00810B446", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239089500, false, "5f9f2089-9ba9-442c-b33c-bd7b6368c78f",
+			"@@@InProc at 8F5DD1A713971E6AF0CC0DD5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239093740, false, "eb6c46e1-eda8-4a76-8789-10a0f579017f",
+			"@@@InProc at 8F5DD1A713971E6AF0CC0DD5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239094330, false, "f42dcf2c-b495-4fe0-aeee-920c51152b0a",
+			"@@@InProc at 2D47F194BE653A2B987643D1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239096920, false, "9cae1043-0095-443e-a64f-50bee9d4bf9b",
+			"@@@InProc at 2D47F194BE653A2B987643D1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239097590, false, "7fadb0bc-2721-44fd-8e77-184c4b9d5a56",
+			"@@@InProc at 1F8618357E5C30F7A7ED2D9B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239100190, false, "144b8e01-47a3-420a-95af-576089b18d9d",
+			"@@@InProc at 1F8618357E5C30F7A7ED2D9B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239100860, false, "f14ded64-ca87-4248-9c00-f6c82c8e2e3e",
+			"@@@InProc at B1606C3107B3141B0BFB6D84", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239122720, false, "9e344e6b-050a-4a0d-ad19-8554e4e1f741",
+			"@@@InProc at B1606C3107B3141B0BFB6D84", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239123440, false, "2cf9b52b-3397-4073-a223-02f276b0db00",
+			"@@@InProc at DEA9AE4817486DC4F101F026", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239123570, false, "c7344b7b-e341-476c-980d-d21c2ded6e17",
+			"@@@InProc at DEA9AE4817486DC4F101F026", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239124690, false, "27b5d4a6-f5f8-48f6-9be0-49cdb5f51828",
+			"@@@InProc at 1C934BA80772A62401327C47", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239130420, false, "674ff554-c9e5-4f62-a7d9-a592deab6773",
+			"@@@InProc at 1C934BA80772A62401327C47", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239131420, false, "5c9674e2-f435-4468-b849-82e87ea55b8e",
+			"@@@InProc at 5ACBD0E9D69296D6FF579795", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239133960, false, "97499ffb-3256-4ee1-9a44-dde310e3ff0c",
+			"@@@InProc at 5ACBD0E9D69296D6FF579795", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239135240, false, "f326efd7-5d10-40ae-b694-ed1bcb77c4ab",
+			"@@@InProc at ED9878C8096CAB659B944F84", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239137810, false, "e30f4eef-f47c-447e-8617-c3abef24b400",
+			"@@@InProc at ED9878C8096CAB659B944F84", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239138410, false, "eb309ef4-37f5-4eb9-a697-e10ff83fdfd2",
+			"@@@InProc at 030728BE4C910375859B6DF7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239142010, false, "692e0252-7aa0-4594-9dff-f294df2d46f2",
+			"@@@InProc at 030728BE4C910375859B6DF7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239142770, false, "79d64365-2bc4-4cf9-bf5e-6e8076e85092",
+			"@@@InProc at 21CD52731DD49427AF1B93EF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239143840, false, "75d6bd33-34b4-438e-a2ba-48a12a8ee64c",
+			"@@@InProc at 21CD52731DD49427AF1B93EF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239144400, false, "9109e2d9-3518-4362-ba72-4f2f83705474",
+			"@@@InProc at 2AFF40E51510FD227E4B6EF1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239149830, false, "4cdb2e3c-d16a-46ac-92d0-c10552263909",
+			"@@@InProc at 20F82F1E4EFF7CBF2F2B4F21", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239150550, false, "c438632a-e04a-444a-a0b7-e53d36bc87c6",
+			"@@@InProc at 2AFF40E51510FD227E4B6EF1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239150620, false, "4735452d-582f-45b5-8adf-8aece053790f",
+			"@@@InProc at 20F82F1E4EFF7CBF2F2B4F21", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239151800, false, "5c7ef789-9188-46cd-98dc-d2324b5ed2d2",
+			"@@@InProc at 6487872E765922CEAC4F7EA5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239157310, false, "a53910ef-7963-4bf0-8680-e1761009cb03",
+			"@@@InProc at 6487872E765922CEAC4F7EA5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239158080, false, "3ac6b849-c4a8-40f2-9f79-800d07ea34f9",
+			"@@@InProc at 01466FABE0A117A470323A01", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239158830, false, "eef44cd0-faa4-47df-b3f9-4dd2e6b2e9fc",
+			"@@@InProc at 01466FABE0A117A470323A01", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239159590, false, "75b33371-cc44-477a-bf98-4e08b9a67dc5",
+			"@@@InProc at 38C734C4B67ABAB297C8A919", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239164750, false, "bd4ae324-d674-437f-94a7-6aba9002036c",
+			"@@@InProc at 38C734C4B67ABAB297C8A919", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239166250, false, "fe04d9cb-6eb2-4a7b-bf6b-29ed45cf1078",
+			"@@@InProc at 762CE73D3D14FE493033830B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239166470, false, "d38f4605-f434-4804-b38f-9ae49d7780aa",
+			"@@@InProc at 762CE73D3D14FE493033830B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239168290, false, "cc8f577b-3bed-4996-b79b-e36ac2497c73",
+			"@@@InProc at 54F90FE838EE664ACE4037B4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239172670, false, "1e46ac0c-bbd2-4525-a603-47c8e5788aa2",
+			"@@@InProc at 54F90FE838EE664ACE4037B4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239173360, false, "675fe3cb-2812-4c2e-9062-22b9b5b52c62",
+			"@@@InProc at F3DE3503469E244A5C45BC31", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239174620, false, "4017754b-c98d-4441-9e50-fa18684a5584",
+			"@@@InProc at F3DE3503469E244A5C45BC31", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239175340, false, "edd44379-80b9-4610-a401-a3c3593df850",
+			"@@@InProc at 3F88CA7A3DBD2FF6FECB4EF9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239179230, false, "537928f1-2cc5-48c7-8c00-3fe1f91a5014",
+			"@@@InProc at 3F88CA7A3DBD2FF6FECB4EF9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239179940, false, "6be4ef85-92f4-4628-9ed9-22a41d019651",
+			"@@@InProc at A46B203ED46CC50408ECB6EA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239181570, false, "e7411a52-cf10-4175-8afb-623a5f4f243a",
+			"@@@InProc at A46B203ED46CC50408ECB6EA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239182220, false, "e68f0029-56a3-4d11-b35f-49b01fdb1705",
+			"@@@InProc at BA38D60CCC312BE1ABF8F67D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239187260, false, "369edbf8-6ef5-46df-a553-f62bf76875f7",
+			"@@@InProc at BA38D60CCC312BE1ABF8F67D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239188930, false, "9b89b036-40bf-4bf3-ac8b-24931e133cde",
+			"@@@InProc at CAC646E1DA62F1CF4DE54009", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239189010, false, "d5a5f2f0-9bfd-43ba-b9e4-d4e2ea7d7986",
+			"@@@InProc at CAC646E1DA62F1CF4DE54009", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239190970, false, "e9ba934a-984d-4b9f-81fd-ccf9b37133fb",
+			"@@@InProc at 6D8C5AD679F1BFE6962FE700", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239194990, false, "042434ae-e5ce-46a6-850c-86cbf348b24f",
+			"@@@InProc at 6D8C5AD679F1BFE6962FE700", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239195750, false, "61c84e8b-fb6b-4a40-b886-d10df2d4e707",
+			"@@@InProc at 5957016FE1EFA4DA35834288", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239197160, false, "1bc33f29-ed84-49d4-9f07-fea187a5e7bc",
+			"@@@InProc at 5957016FE1EFA4DA35834288", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239197900, false, "2df5e0a8-64da-41d8-8a29-7048ffa39950",
+			"@@@InProc at A8EA9B82BD3631A153384365", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239200730, false, "3284c7f0-5e26-4075-bd3e-8c18b714ea7e",
+			"@@@InProc at A8EA9B82BD3631A153384365", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239201360, false, "4a731d44-610d-4da6-a24e-3f79e8cd64d0",
+			"@@@InProc at 767605487E9768BE70E84521", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239203370, false, "f3cc45d1-9766-4175-827a-54b3586be45b",
+			"@@@InProc at 767605487E9768BE70E84521", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239204050, false, "d3371529-9f11-4b4c-998e-924a978a4366",
+			"@@@InProc at 897A29FA27EC663B23BE2446", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239208990, false, "6938fd1f-1e44-4952-aec4-be32bc221e28",
+			"@@@InProc at 897A29FA27EC663B23BE2446", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239209640, false, "80d2c9a8-54ca-494d-9b98-4a0472611f97",
+			"@@@InProc at 03E77BE899FECA2FBBC7C273", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239209740, false, "b5f8e9cb-1b07-456d-8be9-f1307454617d",
+			"@@@InProc at 03E77BE899FECA2FBBC7C273", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239210730, false, "139adc6d-72f7-4cd8-aabf-09bf7945339e",
+			"@@@InProc at 28D6A84A6A58CDBC38BAC5F1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239215490, false, "21e57bfe-76ed-4289-870a-7837fc99a7af",
+			"@@@InProc at 28D6A84A6A58CDBC38BAC5F1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239216390, false, "9866c773-80a3-46f3-92a6-16030896ebf3",
+			"@@@InProc at 098606EAE01F666514F0A8E9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239217870, false, "7d12fad3-46f4-4055-b1e8-dfef0ac29b5e",
+			"@@@InProc at 098606EAE01F666514F0A8E9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239218680, false, "517bbab7-f5f4-4195-a04d-98d8493a4dea",
+			"@@@InProc at AC38012CA457D14E4A86F5EC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239222000, false, "0de7569b-c41d-4f98-b576-a0d795d8f6d8",
+			"@@@InProc at AC38012CA457D14E4A86F5EC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239222590, false, "5c948697-68ad-412a-a355-82e7d925e0b4",
+			"@@@InProc at A04CFB39755959900FB78B31", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239227210, false, "82e6b95f-8634-420d-abc3-181ac5c0bae0",
+			"@@@InProc at A04CFB39755959900FB78B31", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239227740, false, "c0b6478d-69c6-430d-ac41-0b4154b57d32",
+			"@@@InProc at 89B69ACF46C76E0F901E7AF9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239228430, false, "642589e5-3d22-400b-8c3c-86c5b9554e34",
+			"@@@InProc at 89B69ACF46C76E0F901E7AF9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239229150, false, "8bc39ae4-9b17-44c1-944e-f6f8aeb288c2",
+			"@@@InProc at B8C2B9EF287742555C1198AF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239232900, false, "f7b77ee3-fde8-4fb7-9f4f-df31969f428d",
+			"@@@InProc at B8C2B9EF287742555C1198AF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239233490, false, "022d7d92-c331-4729-b484-61a1d9f8d87e",
+			"@@@InProc at 3657D0BCAEDFD46FBD7B265B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239237700, false, "e18c7f3f-420d-4221-b732-868ef068379b",
+			"@@@InProc at 3657D0BCAEDFD46FBD7B265B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239238300, false, "ef996aef-b347-48fb-93e2-4adf85276e78",
+			"@@@InProc at 0118275EFB319BAAF59BDD6F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239238900, false, "5557cf45-1135-4eb9-a275-65f91fcbdfff",
+			"@@@InProc at 0118275EFB319BAAF59BDD6F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239239440, false, "6015010b-b1f5-4b18-b046-3172b9a915d7",
+			"@@@InProc at 5D3614581DEBE5411DFF7702", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239244130, false, "3a10eaae-8541-440d-8e5d-86f58e8de9e6",
+			"@@@InProc at 5D3614581DEBE5411DFF7702", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239262420, false, "10ebb88f-5d21-4b6f-8c4e-2d68d0b34bdb",
+			"@@@InProc at 9688AF90772C655F8FFFA4E4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239263230, false, "8581d4d0-0298-455a-9ca1-5ddc1f887760",
+			"@@@InProc at 9688AF90772C655F8FFFA4E4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239263960, false, "b883d811-ae84-41a9-8574-1eb6eb407955",
+			"@@@InProc at 063630173DB50F07E23A679F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239269280, false, "2c8633da-dafb-47e0-9fa0-ffa3e9114fa7",
+			"@@@InProc at 063630173DB50F07E23A679F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239270520, false, "fdf6972f-f12f-4af5-9f2d-03091b2c62aa",
+			"@@@InProc at EDF340941993AD33F8DA111A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239271390, false, "e9acf48d-21c8-45ff-b00c-376233f2847d",
+			"@@@InProc at EDF340941993AD33F8DA111A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239272650, false, "35384554-fbd9-42d0-8d1d-ebbb759b73f8",
+			"@@@InProc at CF06F6223102A4076222AE2F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239276840, false, "9778cbfa-fe3e-4d6b-8688-4d836e851582",
+			"@@@InProc at CF06F6223102A4076222AE2F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239277470, false, "1de7d4c6-76ec-4b14-8d00-a64dcdf5f750",
+			"@@@InProc at AD41A208412D06676E74C0EB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239279500, false, "967b8db0-e922-4303-9e51-63c1a9c5dcc7",
+			"@@@InProc at AD41A208412D06676E74C0EB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239280320, false, "f0b13959-56e3-4da9-8f15-e1d9325e29b6",
+			"@@@InProc at A0E32236D9E23AA1CC03E111", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239283270, false, "211595ea-9e6c-4b39-9867-0b7a0c9faf23",
+			"@@@InProc at A0E32236D9E23AA1CC03E111", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239283940, false, "a43858ac-675d-4491-a004-a7d12d8b03d5",
+			"@@@InProc at B848EA01D80FCD915338CA84", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239286060, false, "6d090115-2346-470a-98db-088614b045f1",
+			"@@@InProc at B848EA01D80FCD915338CA84", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239287060, false, "72602442-8dc7-40f5-a946-5c1b01004ebf",
+			"@@@InProc at CA684B87C13DB0FC02F15F38", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239290420, false, "dab15981-015e-4950-b22d-393196f10a77",
+			"@@@InProc at CA684B87C13DB0FC02F15F38", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239291020, false, "2a7d7950-695c-4ea4-96ce-b45048dddcef",
+			"@@@InProc at 9F20C3A59C47554879097CB5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239293530, false, "e26adaf7-2a0f-493c-ac24-9fa9aecaaefd",
+			"@@@InProc at 9F20C3A59C47554879097CB5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239294250, false, "8b862bf1-c005-4dd3-9645-4f886f7b477b",
+			"@@@InProc at FDBC975BDCE0C01B112291A7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239296190, false, "cbe83e46-5b96-46cd-9455-af2f715d19dd",
+			"@@@InProc at FDBC975BDCE0C01B112291A7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239296880, false, "d600fb08-48b3-48d8-b82f-abcdb402c9c0",
+			"@@@InProc at D4790C4C3E87F9A5F9CC8357", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239300710, false, "8070b7d3-904f-466d-b783-1e4c8275a0d1",
+			"@@@InProc at D4790C4C3E87F9A5F9CC8357", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239301610, false, "954d4de7-7fc1-4dcf-b0ec-c56c4a82aec4",
+			"@@@InProc at 968A353F0B5B7B123B3137C1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239302470, false, "03e05644-db66-48ff-911b-3ebe6c7710be",
+			"@@@InProc at 968A353F0B5B7B123B3137C1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239303010, false, "4a6bf95d-1663-4241-aaf8-2be1f388af5a",
+			"@@@InProc at 8B165AD642ED3ADE4100E53A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239308180, false, "28b492a1-5c5c-408e-b635-4e8458043abc",
+			"@@@InProc at 8B165AD642ED3ADE4100E53A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239309740, false, "2b4f121b-1d31-4af5-9358-1d575b40d6e8",
+			"@@@InProc at 9A07924834B5EBA483084EFF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239309940, false, "6dbd9935-fa03-4723-bd20-4d5884e1d78b",
+			"@@@InProc at 9A07924834B5EBA483084EFF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239312030, false, "7326781b-a1d8-4aac-9b36-23feffd6cbd7",
+			"@@@InProc at F80E81AFB0DD8B1D77602EB7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239316280, false, "fc275c90-b1ee-4e69-9b61-854e5ba19a1f",
+			"@@@InProc at F80E81AFB0DD8B1D77602EB7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239317000, false, "2ae2d4de-a2b9-47c8-b216-04b1e5f35b93",
+			"@@@InProc at 19C982B5727137360A813FC3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239318050, false, "efeb8dbc-8791-419d-893f-937baf413398",
+			"@@@InProc at 19C982B5727137360A813FC3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239318570, false, "0e4fb984-fa7e-4bde-b37a-5bbf2ca7f190",
+			"@@@InProc at 792673944318ED689B94BDFF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239322990, false, "78981689-9428-435f-b3bd-0abe2a07938c",
+			"@@@InProc at 792673944318ED689B94BDFF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239323720, false, "8218e3f6-41e9-4995-9407-33b04637979a",
+			"@@@InProc at A65B091DEF5451EA3E16F75E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239324770, false, "9fbe0c90-896f-4bfa-af73-1b1073dfe70d",
+			"@@@InProc at A65B091DEF5451EA3E16F75E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239325300, false, "6e31243c-473e-4e93-81c4-f864407350c5",
+			"@@@InProc at 43FC9AE607DCC6AF198966A6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239330130, false, "3fc90e7e-3db9-46ae-bd52-c32af9e43dea",
+			"@@@InProc at C72E92C86C6E6DB8CE192DDC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239330870, false, "bf9d8598-c43b-408e-bd36-1423b29205dd",
+			"@@@InProc at 43FC9AE607DCC6AF198966A6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239330940, false, "f84cc4a4-1add-460e-b151-dc2f44772e27",
+			"@@@InProc at C72E92C86C6E6DB8CE192DDC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239331900, false, "fe4c8885-c089-4725-8dc3-44607a803443",
+			"@@@InProc at 9147D6BE81689BC8C7A550E3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239336950, false, "d647f262-675c-458a-ac1a-803be92bac73",
+			"@@@InProc at 9147D6BE81689BC8C7A550E3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239337830, false, "725c72c1-10b0-49e7-b0a7-94c11244119c",
+			"@@@InProc at B4780FD026865CF3948703A4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239338400, false, "9926b718-02d4-4dcd-b740-0644f7cc95a5",
+			"@@@InProc at B4780FD026865CF3948703A4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239339280, false, "07250ea9-28ff-4514-931e-87e8dfdcf51b",
+			"@@@InProc at 1E68CD54A23814833BF69FA8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239344730, false, "d7409830-2c19-4b32-93ff-a92d14c0569e",
+			"@@@InProc at 5A3D2B7B7E2A1E4F1128031D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239344800, false, "19f91baa-f557-4af7-b318-2c8e1f7c2784",
+			"@@@InProc at 1E68CD54A23814833BF69FA8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239345910, false, "3df9a8b7-ad54-4647-9ab7-7cad5eefcbcf",
+			"@@@InProc at 5A3D2B7B7E2A1E4F1128031D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239345960, false, "d62ed5f9-ea1f-46fd-b911-b39e54799f0f",
+			"@@@InProc at 6F085F2631FCFB734B2B6C4A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239352300, false, "3c9e3f34-5623-482e-a446-0f4db717fdf1",
+			"@@@InProc at 576483EC7AF2F9AA0047EEE5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239352400, false, "04fd898b-1bda-4bad-8507-91112bc02edf",
+			"@@@InProc at 6F085F2631FCFB734B2B6C4A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239353490, false, "fc16d056-8a5d-4616-b3cf-c68602fdc565",
+			"@@@InProc at 576483EC7AF2F9AA0047EEE5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239353670, false, "13be4e94-0aa7-456a-b1d0-3e1dd9e7e4cd",
+			"@@@InProc at F4CC8024D41D23D6BD988BFD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239359440, false, "ebef9368-1a29-4152-8e4c-5ada392176a5",
+			"@@@InProc at EC1263B364081689160B356E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239360080, false, "7604392a-e694-4105-a55b-4866ced7215d",
+			"@@@InProc at F4CC8024D41D23D6BD988BFD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239360140, false, "edf30165-ab91-426e-806b-b07223223c3c",
+			"@@@InProc at EC1263B364081689160B356E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239361120, false, "21588ef5-eb84-4e92-bd6d-325e9f75bfaa",
+			"@@@InProc at 58BAEE17EF5701BC9F57E742", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239366740, false, "9b4f1cb3-c02f-4c49-94b8-57807a7efade",
+			"@@@InProc at AE46DEECB9028538943A327B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239367590, false, "d04c597b-7ea3-404a-acc0-7bb95ef7d2e3",
+			"@@@InProc at 58BAEE17EF5701BC9F57E742", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239367660, false, "79038e67-79e0-4355-89d9-38b473640b3a",
+			"@@@InProc at AE46DEECB9028538943A327B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239368860, false, "572d2cdc-a009-4f6b-a34c-e4d52a03cd79",
+			"@@@InProc at F968CF17906EF03CB9773B20", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239374140, false, "3d07dc0d-7641-43e1-b683-2178a1c54e2c",
+			"@@@InProc at DFC70E5C888B76526FA78213", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239374860, false, "80f1f770-7685-4059-bd75-5f297713eb23",
+			"@@@InProc at F968CF17906EF03CB9773B20", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239374920, false, "cd30c0c4-a928-41e5-ab4e-d97be17e6c71",
+			"@@@InProc at DFC70E5C888B76526FA78213", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239376220, false, "4b4cb8c3-feea-42fd-99f5-71bf73b794f5",
+			"@@@InProc at 01B425D7E616E34373F74791", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239381120, false, "1b45db35-ca60-4e3d-b596-c2bbd323ed6b",
+			"@@@InProc at 01B425D7E616E34373F74791", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239381840, false, "bdc63f8a-e9fe-470e-8c70-c07e96d5160f",
+			"@@@InProc at 244407FC8C3F3F012779597B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239382540, false, "a18927d6-3848-4354-bfff-ab34f6841e24",
+			"@@@InProc at 244407FC8C3F3F012779597B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239383090, false, "3d3f8c7d-8615-4e54-8c62-df4b6776020d",
+			"@@@InProc at 560F6FAE89D01E5AD9E7800E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239387440, false, "a0a7062c-a68d-490c-8dd4-82d1992fbde2",
+			"@@@InProc at 560F6FAE89D01E5AD9E7800E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239388100, false, "1482bbe0-49df-4cca-b09f-3199de2b0c10",
+			"@@@InProc at 1BD6F57080D5B3F4299F5576", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239390160, false, "4df57e6b-a388-4a2a-bd76-f011cb31acf3",
+			"@@@InProc at 1BD6F57080D5B3F4299F5576", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239390890, false, "82249eca-665e-44dd-adab-c621af8a2d90",
+			"@@@InProc at 9691FCC99840D3658AAC62CE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239393230, false, "abf5d5e0-5862-49d1-9066-e369f2eb1174",
+			"@@@InProc at 9691FCC99840D3658AAC62CE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239393900, false, "d0ca591b-8ffd-44ad-842c-9d098417f14f",
+			"@@@InProc at 113C13E0782B0B0ACC87219F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239397150, false, "abe42649-15b8-4d02-b43b-d2afcb854a2c",
+			"@@@InProc at 113C13E0782B0B0ACC87219F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239397860, false, "4de6a77d-21e3-4eac-8b6a-4024fdce12e6",
+			"@@@InProc at 3F09A34EABB49BF1B3A72A50", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239399550, false, "b3cc1723-667b-4791-8308-a1e9b9fa29ff",
+			"@@@InProc at 3F09A34EABB49BF1B3A72A50", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239400220, false, "020f3b93-0c6c-4d77-9774-1094d96b9b03",
+			"@@@InProc at 4E21DF20350155C77BA153DA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239404550, false, "037fe21f-5570-4b92-b591-8f15152c16cc",
+			"@@@InProc at 4E21DF20350155C77BA153DA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239405350, false, "2a457b89-0830-40e8-bfd6-8fa8955cce5d",
+			"@@@InProc at F3957DC587FF8D0072405C26", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239406960, false, "8c7bbbfc-3c7f-4720-884a-b7c963ee7f13",
+			"@@@InProc at F3957DC587FF8D0072405C26", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239407780, false, "5ddcc1ca-90ea-4b2d-9bd1-379df9881ae8",
+			"@@@InProc at A13902E2D514FD91E0DCA8D3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239411820, false, "672824cd-d677-4ab0-9e9d-aba134b16adc",
+			"@@@InProc at A13902E2D514FD91E0DCA8D3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239412430, false, "0991f621-60bf-4e28-a11b-ea71967ea2d3",
+			"@@@InProc at 108D28A4522F11DAD20AF719", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239414430, false, "2fdaee78-24d1-44f7-80a7-3410706b8bef",
+			"@@@InProc at 108D28A4522F11DAD20AF719", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239415160, false, "623d9fe3-bfd6-4623-857c-82a2ad3b55b5",
+			"@@@InProc at FF8928705F265C54B46594C1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239417580, false, "bebd6356-dea2-42ff-9928-b6bd5c1fd34d",
+			"@@@InProc at FF8928705F265C54B46594C1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239418110, false, "93be3f6f-3a04-457f-948b-316849c4e2ff",
+			"@@@InProc at D16E6CB3EDB59D096177050F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239421460, false, "f2cb6687-a468-4fe5-8a98-5c79ca528cfe",
+			"@@@InProc at D16E6CB3EDB59D096177050F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239422220, false, "5fef4a8c-ba4a-4b40-972a-5aa4c2dad9c5",
+			"@@@InProc at 2F67923ED3560C6AD80740CC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239424640, false, "41661b9b-5759-488a-81ac-48dc1f804dbe",
+			"@@@InProc at 2F67923ED3560C6AD80740CC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239425370, false, "153fd0b5-d8be-4aea-936b-5160584c8ade",
+			"@@@InProc at 77D20BAAE8453AB52F7AEE9F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239428830, false, "f9a4fe2f-bd0e-444c-9d96-898233d3a28f",
+			"@@@InProc at 77D20BAAE8453AB52F7AEE9F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239429360, false, "f713545c-8856-4601-988d-b750d5abc547",
+			"@@@InProc at EEC3CDEDFA077C3D65EF8B9D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239430790, false, "1fcd221f-7d40-400e-a035-9a6658db6108",
+			"@@@InProc at EEC3CDEDFA077C3D65EF8B9D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239431430, false, "a5a67cd5-8b89-4918-af0c-eb7ee3e7e565",
+			"@@@InProc at 58A757986E426E1B12F1E520", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239434610, false, "58218167-50ae-4209-a1fe-d5b3626e5108",
+			"@@@InProc at 58A757986E426E1B12F1E520", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239435210, false, "72799ae6-4e02-4a30-9d4e-6a63b2e8f67a",
+			"@@@InProc at 0F9CA3F4315818FEFD498890", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239436800, false, "bc3d1d07-d829-4de0-8b1a-5601e47ad8f8",
+			"@@@InProc at 0F9CA3F4315818FEFD498890", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239437450, false, "c2dcd293-a720-4a50-9716-4cbb7d210b7a",
+			"@@@InProc at 1128117740E38A9FA5739D76", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239441440, false, "a5dd5492-a27a-4f50-b249-418d521885fe",
+			"@@@InProc at 1128117740E38A9FA5739D76", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239442230, false, "401722f6-5311-4c2f-a89f-ef6c1fc91ef6",
+			"@@@InProc at D4449F272CB01A40FD0AFCEF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239443240, false, "cf1bae2c-5209-4214-80d0-75a865e1b2db",
+			"@@@InProc at D4449F272CB01A40FD0AFCEF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239443770, false, "97304d3a-df1a-444d-ace9-abe3b132c282",
+			"@@@InProc at 3F28B300C8377974DE89D5B5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239448010, false, "14866f9f-1b39-439d-93aa-8a5984332d63",
+			"@@@InProc at 3F28B300C8377974DE89D5B5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239448550, false, "bfea7867-a03c-41f9-b765-d1bc3f8604e3",
+			"@@@InProc at 08E21BCB3494CCA60EC48373", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239454180, false, "d4228fc2-fbc8-426a-a6b9-81f9f4f33c5c",
+			"@@@InProc at 08E21BCB3494CCA60EC48373", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239454870, false, "e581e7f2-4dbd-4a91-b3ef-7af740f473ec",
+			"@@@InProc at 79F6E9319293DB3F3B924778", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239456030, false, "48c7125f-e4fe-44ac-9480-319f1e9b017f",
+			"@@@InProc at 79F6E9319293DB3F3B924778", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239456780, false, "91193e07-b5a6-43f5-98a7-66e9a8966681",
+			"@@@InProc at 1CC7FF2CD7E4DB2A5DFCAC97", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239461660, false, "455e0672-27b9-4b22-b5f3-ab2a09977dba",
+			"@@@InProc at 1CC7FF2CD7E4DB2A5DFCAC97", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239462420, false, "e3925164-ce1c-4afd-aa6b-2a2b4ee40439",
+			"@@@InProc at 8F213643D2BCF1D6DE654F9B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239463830, false, "1ba28834-5106-4702-8fc5-3b91eb76d9c6",
+			"@@@InProc at 8F213643D2BCF1D6DE654F9B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239464550, false, "8512affe-7a1b-4437-923f-acc96d94cb6e",
+			"@@@InProc at BDC4AFBDD05B8C572564996C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239467870, false, "74948bab-b17f-447f-917f-5ea2ecca8b3c",
+			"@@@InProc at BDC4AFBDD05B8C572564996C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239468420, false, "37744ed7-f23e-47d5-9a1b-66bc7577784c",
+			"@@@InProc at 43CCE1000125F6525297F7E9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239471050, false, "d0430601-1f11-41f5-8f7c-9e7a0126aac1",
+			"@@@InProc at 43CCE1000125F6525297F7E9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239471770, false, "0423b404-1b35-4249-97c1-b6f625e11139",
+			"@@@InProc at C920ADB8AD4358F81D82B24F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239473460, false, "f98b9f1a-acb1-487c-93d8-0dfb52c6a1b5",
+			"@@@InProc at C920ADB8AD4358F81D82B24F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239474020, false, "5fedd003-e27f-4cf3-853e-0f0eb87a6f2e",
+			"@@@InProc at A52A780856B987FB3CD1CA3F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239478040, false, "d707341f-dfa0-454f-9214-6314262aea77",
+			"@@@InProc at A52A780856B987FB3CD1CA3F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239479010, false, "3d413842-6c26-4c72-b973-893c1fed78ef",
+			"@@@InProc at D79D9B9657DF4EC13DDA5DE2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239479960, false, "e4e16e14-1798-4387-a7b8-4a176d0ee860",
+			"@@@InProc at D79D9B9657DF4EC13DDA5DE2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239480680, false, "62b9a301-00f6-4bec-94de-43268f0e37f9",
+			"@@@InProc at C69E825D799B10C29D71E6F9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239485380, false, "9b2200d1-4c95-4f7d-94ec-3ef9ca2cb684",
+			"@@@InProc at C69E825D799B10C29D71E6F9", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239486170, false, "aecd8736-495c-45ab-91f4-cbfe0a963111",
+			"@@@InProc at 1199210326B555FD766A02D1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239486250, false, "9f0cf26d-bc6b-46a3-b90b-f08c30e49e71",
+			"@@@InProc at 1199210326B555FD766A02D1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239487260, false, "83d6f52c-d2de-4280-adfa-2179fb2a7ea0",
+			"@@@InProc at 1954AD4CAA02400266D26CB4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239492730, false, "8b5a6acb-c939-4f9f-baf0-c041264bcd40",
+			"@@@InProc at BD6948CBDDE54967F12A6EF6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239492930, false, "1991acf8-9356-431d-887a-1b1624ede377",
+			"@@@InProc at 1954AD4CAA02400266D26CB4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239494160, false, "ea9e4ae6-2221-449e-9290-5fd538ee0d03",
+			"@@@InProc at BD6948CBDDE54967F12A6EF6", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239494210, false, "96cf6f5e-4d0c-4030-9f7b-d092e092e3e1",
+			"@@@InProc at F8E3026C979160B4460C241A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239500360, false, "f386f469-903b-4c46-ad0a-74b5aff69a45",
+			"@@@InProc at C4B982E591AD202641914B31", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239500430, false, "9392941d-06a1-4c16-ba39-7a5d5fd6d1bc",
+			"@@@InProc at F8E3026C979160B4460C241A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239501540, false, "72e85f23-5447-48a2-8a69-c08dacce7e44",
+			"@@@InProc at C4B982E591AD202641914B31", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239501600, false, "f4ee152b-7658-4d40-b7fd-92ccc8fa9555",
+			"@@@InProc at E4DA1E8E3E46D06BE2734A6E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239508350, false, "199a1e96-889d-42cb-a408-4407ed8502ad",
+			"@@@InProc at 2BEA9FDFC6DE37340712C9CB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239509140, false, "8d0848d9-07ea-42c2-a17c-1debb3cbc808",
+			"@@@InProc at E4DA1E8E3E46D06BE2734A6E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239509220, false, "cba0df5e-cddd-419c-90e8-125f2a50a8f2",
+			"@@@InProc at 2BEA9FDFC6DE37340712C9CB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239510210, false, "579bd78c-8950-4f2a-9cca-511e38054890",
+			"@@@InProc at 8CBDECCE0C41315BE686C099", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239517220, false, "3c171bd1-4ed5-485e-9d16-53320df15295",
+			"@@@InProc at 5242E878C5197CC1B1798CEB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239517380, false, "0c0fd599-0da1-453f-b8df-d5fe00e9b387",
+			"@@@InProc at 8CBDECCE0C41315BE686C099", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239518750, false, "c7d6bc1a-7fa5-46c2-a87d-0b69016303d6",
+			"@@@InProc at 5242E878C5197CC1B1798CEB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239518830, false, "2dd98717-6bad-4d35-aba1-fd0fd3cec429",
+			"@@@InProc at F1DCBA6DA7F5706F12709F43", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239524510, false, "63ef00c3-64ce-4a8d-9fa0-a2ef1f588303",
+			"@@@InProc at F1DCBA6DA7F5706F12709F43", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239525030, false, "5c748b55-de9e-4383-b11e-520f71d66851",
+			"@@@InProc at 166D317A8DE3D4A474947A7F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239525560, false, "f48cfdac-79a8-4f12-bf57-2863ff4e59ad",
+			"@@@InProc at 166D317A8DE3D4A474947A7F", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239526100, false, "9e39dac6-d7f9-4c47-a990-4b9c3b8ebd36",
+			"@@@InProc at 9099B5E06043A7DB922EBD54", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239531160, false, "b975d573-a3e3-47ff-8361-bf13b8747ee0",
+			"@@@InProc at 9099B5E06043A7DB922EBD54", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239532240, false, "0477e460-a5a6-40c3-841b-ae7c0e3c78f7",
+			"@@@InProc at E30489F8C9FA4C99857BEF91", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239533620, false, "c81210f0-4e94-4eb2-82cf-640ee1256ec7",
+			"@@@InProc at E30489F8C9FA4C99857BEF91", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239534310, false, "82595fd2-2f44-40d1-805b-78cb11d07d06",
+			"@@@InProc at C4782B7DC1170421C7680564", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239538390, false, "2b3d6d56-6e1d-443b-ac85-9046d0fa02b9",
+			"@@@InProc at C4782B7DC1170421C7680564", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239539220, false, "7ba5437f-2312-4f9a-b1f0-8ba2a5c28c67",
+			"@@@InProc at FF86126060D0A660C33E3435", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239540440, false, "172bb3e6-5417-4b69-8d47-d845cbcd08ca",
+			"@@@InProc at FF86126060D0A660C33E3435", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239540970, false, "46923adf-bfe3-4bbf-bfd8-ddf7d46154fc",
+			"@@@InProc at 850646765229056FAF091922", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239545340, false, "093e16bc-e177-4e99-86a3-c1ce93a0b7a6",
+			"@@@InProc at 850646765229056FAF091922", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239545870, false, "a12e9ba2-e2b3-40fa-b5f3-a6c388843690",
+			"@@@InProc at BFC52888DE5656E4C49ACAA0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239546450, false, "e8f44601-fdb9-4dcd-a1dd-0c407134ed4e",
+			"@@@InProc at BFC52888DE5656E4C49ACAA0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239547080, false, "b57487c2-3996-49db-bf55-fa58b5c5b8cd",
+			"@@@InProc at E64964E012858995275B1C9A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239562390, false, "e09e20fb-07a6-4582-8ec3-bf4aec1753bf",
+			"@@@InProc at E64964E012858995275B1C9A", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239562950, false, "8ffc9093-2212-4c24-8040-a918a0736eee",
+			"@@@InProc at 19B3FAA0148B20CB455E6A92", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239563150, false, "01205e41-a9fb-4958-8799-c88fef50e469",
+			"@@@InProc at 19B3FAA0148B20CB455E6A92", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239564180, false, "b1bc16fc-caa5-4559-91b7-c181ab26e9b5",
+			"@@@InProc at 337A631B1B8BAA1347C1C5F3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239569370, false, "ee794637-537b-409c-87bf-d97272bb2e3c",
+			"@@@InProc at 337A631B1B8BAA1347C1C5F3", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239570400, false, "f32f8b65-cde2-4bfd-ac26-e2cc34ce3124",
+			"@@@InProc at EC6A2C7521294C8F992198D4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239572020, false, "436ba70d-1a73-492e-ab8b-d11e7c519e0f",
+			"@@@InProc at EC6A2C7521294C8F992198D4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239573550, false, "a69fbbe1-cbf6-4efb-9355-f07034060b1d",
+			"@@@InProc at 259933E37D18C5C17BA72AF7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239577250, false, "376a8faf-057a-45ab-8544-ac3bd67df467",
+			"@@@InProc at 259933E37D18C5C17BA72AF7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239577820, false, "abe610db-3b59-46c5-bfe7-5e3c7481d70a",
+			"@@@InProc at 8DAD88D7CE301E981CD81C59", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239580640, false, "33eabae1-d51c-425e-9554-1fde07a4f303",
+			"@@@InProc at 8DAD88D7CE301E981CD81C59", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239581470, false, "3172966b-08ba-461f-82e9-e22d07bb19fd",
+			"@@@InProc at 88484A78EBFC3BF351BCEA55", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239607130, false, "3f2b77e7-1371-45e0-905e-ee2b52bbb6f9",
+			"@@@InProc at 88484A78EBFC3BF351BCEA55", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239608070, false, "36f0abcf-7e86-4af7-9bef-f755f9e6226c",
+			"@@@InProc at 08425ADE2D7E5FF202707FB5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239610910, false, "68755ada-eb20-40cb-8594-cf3c56234836",
+			"@@@InProc at 08425ADE2D7E5FF202707FB5", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239611530, false, "de60d277-e3ee-4315-bd62-845dd8cd1750",
+			"@@@InProc at 8C9BD738EBDAEA7D1899A879", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239613400, false, "38f8b480-8f51-42d3-a6f6-8a9c65fbaf51",
+			"@@@InProc at 8C9BD738EBDAEA7D1899A879", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239613950, false, "22bca675-eba7-4817-9b26-a40bd2995af6",
+			"@@@InProc at B926CA2A29FB09E617479794", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239616970, false, "36ecc347-ff66-4c1a-ab0a-94fa0424f03b",
+			"@@@InProc at B926CA2A29FB09E617479794", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239617510, false, "00c1fcb1-365d-4ba7-896a-ca4e391df888",
+			"@@@InProc at A62A087A8C952451564D0CAE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239620310, false, "227ee249-aa2b-4791-9520-a7a0cef1d928",
+			"@@@InProc at A62A087A8C952451564D0CAE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239621140, false, "49e6fc9b-4e4b-4e8a-b5eb-5863173fab78",
+			"@@@InProc at D81EA2634930962A4C3AB5FA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239624220, false, "7f96e5b7-a5b3-43f9-bfba-971a3f8e8b48",
+			"@@@InProc at D81EA2634930962A4C3AB5FA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239624920, false, "dd438c81-a2b7-4c69-a71a-365f490123b1",
+			"@@@InProc at B33012F97E998B0F7CA96DAE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239630960, false, "63c0c406-a6c7-4e16-8d30-a677e1e9ff8d",
+			"@@@InProc at DED8A7AF57CCB185864EAE96", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239631220, false, "6fe6611e-c1ec-44c6-a20a-edd972796992",
+			"@@@InProc at B33012F97E998B0F7CA96DAE", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239632070, false, "8c63f5ca-0056-44d1-ab8c-0e8232e2a895",
+			"@@@InProc at DED8A7AF57CCB185864EAE96", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239632120, false, "899c10ed-2600-4c7c-b975-87f7374a9fae",
+			"@@@InProc at B5A8F7FD1E090A9419EDEB3B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239637410, false, "29106bc9-282b-4777-8799-50f00c9acc13",
+			"@@@InProc at B5A8F7FD1E090A9419EDEB3B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239638000, false, "ea8010f7-c06f-4ad2-a6f8-015e933ccc00",
+			"@@@InProc at 8DF9192B4729FDACE0764F69", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239638110, false, "9d5cc85e-cde3-44e6-a28c-b2c663ee2b87",
+			"@@@InProc at 8DF9192B4729FDACE0764F69", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239638930, false, "aa6dc0f5-85c9-48aa-8f24-207369be4eac",
+			"@@@InProc at 92945E3CBBB0E261D123DF24", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239643380, false, "598ed07a-c8b2-42c8-be8a-cd28a7c5870f",
+			"@@@InProc at 92945E3CBBB0E261D123DF24", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239644050, false, "2e73ec43-bff2-4bfc-8b56-235244e5f551",
+			"@@@InProc at 149E2CAEBF87103EB4918765", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239648890, false, "dbe7d339-2698-493b-921f-2b0af98fd8ac",
+			"@@@InProc at 149E2CAEBF87103EB4918765", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239649670, false, "10c16a19-b8ab-4636-a1bc-2082c35011ff",
+			"@@@InProc at 3A12D01214F1621E9695E7EA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239650560, false, "6d80194b-e9da-4032-a3f4-f7a3d2eacee4",
+			"@@@InProc at 3A12D01214F1621E9695E7EA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239651270, false, "997e2492-664d-4052-9dc6-a62b7f28f106",
+			"@@@InProc at E69DB6796044604EB7E2523D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239657880, false, "d653ca36-6db9-45c3-a8c3-eea1a68dc020",
+			"@@@InProc at 48075C726039E65BE64A70FB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239658720, false, "ef43148f-e25b-43f7-aeed-5d2bc8862810",
+			"@@@InProc at E69DB6796044604EB7E2523D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239658810, false, "17d7c456-b714-4124-9725-a524b2249c1a",
+			"@@@InProc at 48075C726039E65BE64A70FB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239659950, false, "7390984b-6e36-4d24-82b9-5ff4cf4be4e3",
+			"@@@InProc at 25B0E787967D2D824795C527", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239666000, false, "ca56fea1-310e-45ea-a998-46875e557f35",
+			"@@@InProc at F098E157A3032640BD12EBA0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239666860, false, "aa186297-f4d2-4134-8c79-f964781baa0b",
+			"@@@InProc at 25B0E787967D2D824795C527", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239666940, false, "3fb12cad-b044-4043-9a34-e0dcefcbd582",
+			"@@@InProc at F098E157A3032640BD12EBA0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239668200, false, "6e3fe3e6-fc12-4eb6-9670-aac37ed15d19",
+			"@@@InProc at B2EDBF5327D6E1ECC16168F2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239675810, false, "6663d942-a13c-475a-b945-df2139b4d03d",
+			"@@@InProc at B2EDBF5327D6E1ECC16168F2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239676860, false, "49da7dfe-acda-416b-8e05-92aae8adac01",
+			"@@@InProc at B7E4CFCF79D640ADF1763013", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239677850, false, "61c3459f-b163-49bf-ad20-7c14e981af73",
+			"@@@InProc at B7E4CFCF79D640ADF1763013", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239678940, false, "fc781b87-c993-44b3-a753-38ba48d215d0",
+			"@@@InProc at 9FD398DA2F4094D10AE56993", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239686230, false, "fc7d2c0c-dcd7-41a1-9e9a-b45a3ca183d8",
+			"@@@InProc at 9FD398DA2F4094D10AE56993", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239687350, false, "91c7005a-ea6d-47a6-bb79-b57435d26651",
+			"@@@InProc at B7855B2A90B06AC8FD966EC8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239688180, false, "5cf20f36-3e13-4994-8364-aeb90026f076",
+			"@@@InProc at B7855B2A90B06AC8FD966EC8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239689110, false, "25243bcb-0c64-4e54-9989-3449c22fa1c8",
+			"@@@InProc at 73A50D6FC6F249472D056A03", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239695310, false, "b3c3530e-4bb7-440a-9656-26a2434a9c3c",
+			"@@@InProc at 73A50D6FC6F249472D056A03", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239696440, false, "8670bbbb-8898-4b1a-815a-49aad1e59111",
+			"@@@InProc at 54606C5F1F5D3706E272C7DB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239697560, false, "a81900c9-3651-4e59-8c74-3958e802b915",
+			"@@@InProc at 54606C5F1F5D3706E272C7DB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239698260, false, "001be45d-bf86-4e55-8a01-ff41454fb366",
+			"@@@InProc at 44A7210D97A108C51A8A2D39", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239703760, false, "de28633d-f154-4ece-a85b-fd78ef74a19b",
+			"@@@InProc at 44A7210D97A108C51A8A2D39", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239704480, false, "6fcb11b3-4de3-40b8-8c9c-4434cfaf947f",
+			"@@@InProc at 2F5FC7048BBC812187B3F287", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239705190, false, "7a0ae8ae-8199-4291-bb0f-7f45242eb0e7",
+			"@@@InProc at 2F5FC7048BBC812187B3F287", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239705910, false, "be7fe66b-0b2d-47fd-870b-931f5b18b6a4",
+			"@@@InProc at 4542191584CA843B3AFB6AF7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239711640, false, "4444b1bc-84f0-4c88-81a3-c15395c5d6f1",
+			"@@@InProc at 4542191584CA843B3AFB6AF7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239712440, false, "ca3eec47-fda4-4cd5-b118-67aca69caafd",
+			"@@@InProc at 2A8416AC1D925E2E3DBA2EBB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239713220, false, "b208b2e7-30ec-49a9-bf78-9b2a71e7fbc3",
+			"@@@InProc at 2A8416AC1D925E2E3DBA2EBB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239713940, false, "2921baab-9480-4439-8cca-4c0fb3a36062",
+			"@@@InProc at 649F46B7E810BB933F342271", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239721180, false, "f8432d6a-cf8f-41d6-839b-e9e12d631c68",
+			"@@@InProc at 649F46B7E810BB933F342271", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239722200, false, "4ceaf33b-b9fe-43df-a6cd-60e170c73ff2",
+			"@@@InProc at 222320C2968E9403C4D9D5A7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239723130, false, "cda28356-7f47-4ab9-8247-a56892ccc38f",
+			"@@@InProc at 222320C2968E9403C4D9D5A7", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239724130, false, "b44d1506-8f93-4d5a-9e9b-7466375ac43c",
+			"@@@InProc at 269AB1DFB763ADD0E2A90A8C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239729810, false, "226e06ab-11a9-4e90-af7b-a4ae40799d66",
+			"@@@InProc at 269AB1DFB763ADD0E2A90A8C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239730690, false, "c95bf208-ccb5-4df4-9b90-b3c9f3a25eca",
+			"@@@InProc at EDD4327F8408A3597350CCAD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239732050, false, "1b1142a4-a819-4c88-96c5-9d2ecccee915",
+			"@@@InProc at EDD4327F8408A3597350CCAD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239732740, false, "e489f244-7154-4f80-8c17-5a4e0cb45656",
+			"@@@InProc at BAE9B7C5560D6D6F13B7F5EB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239738110, false, "0e6e6189-d002-42ad-b89d-6c805b68cf52",
+			"@@@InProc at BAE9B7C5560D6D6F13B7F5EB", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239738790, false, "3fea24ab-3771-4159-ae2f-f902488ab194",
+			"@@@InProc at 2B0C4F0306B5495601C986CC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239741540, false, "2b950f8d-3d2d-4c46-890c-5850b3295c07",
+			"@@@InProc at 2B0C4F0306B5495601C986CC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239742580, false, "8a5df7ca-77cf-4bbc-b34c-6b916a3b10c3",
+			"@@@InProc at BF7ACB04E7CED44C0619A409", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239746440, false, "427f7a69-c0af-4397-96a1-5cae94109def",
+			"@@@InProc at BF7ACB04E7CED44C0619A409", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239747410, false, "19a93676-edbe-4203-a2e7-e3ad995f9a8b",
+			"@@@InProc at 51ADC392A944951B34B5EA35", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239751680, false, "d68da443-0234-4177-8c6f-e2a5c00f6062",
+			"@@@InProc at 51ADC392A944951B34B5EA35", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239752890, false, "9be0c178-13e5-4dbd-9f43-b87766de6b4d",
+			"@@@InProc at E3FA558888B16EA0C9900762", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239757220, false, "cd53525a-4d0e-41d5-afbf-a70165030e62",
+			"@@@InProc at E3FA558888B16EA0C9900762", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239758030, false, "3ceecf24-9523-4d5c-b247-d8fbaa6e0477",
+			"@@@InProc at E983C4FAC288EF3E0E5616DC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239766390, false, "1e4323fc-d558-4698-9216-f2a896b5c97f",
+			"@@@InProc at 5DF1C78A631C5A12AB0E7B4D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239766630, false, "c99a2e58-2522-4729-82f4-8c306870fcc1",
+			"@@@InProc at E983C4FAC288EF3E0E5616DC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239768270, false, "e900d63b-0cb5-4911-b8bc-9eb16410ab55",
+			"@@@InProc at 5DF1C78A631C5A12AB0E7B4D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239768510, false, "71e38550-c79e-4e9b-89fd-18bb31200559",
+			"@@@InProc at 27C4EFA20980652786758704", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239776680, false, "6c5b3746-a5f6-4f0d-a62c-93f8c2831aef",
+			"@@@InProc at D7171CDE872AEF64A8338193", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239777630, false, "584b25a6-61df-4139-a011-ec512c8594ef",
+			"@@@InProc at 27C4EFA20980652786758704", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239777720, false, "00fde672-c666-4745-ac46-368558f96277",
+			"@@@InProc at D7171CDE872AEF64A8338193", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239779250, false, "634f17cb-1118-491d-8e13-abbc1d51eeeb",
+			"@@@InProc at A445E8CEE869F4EAC2B30841", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239786210, false, "cac79ede-671f-4296-a336-e34e214aea24",
+			"@@@InProc at A445E8CEE869F4EAC2B30841", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239787590, false, "db23edc7-563d-4cd9-a164-0721764d0797",
+			"@@@InProc at 3A44B30C8747CB16006998A8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239787760, false, "a7c45ebd-6bd8-49c5-83f8-d476378555f8",
+			"@@@InProc at 3A44B30C8747CB16006998A8", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239789110, false, "6bdbc1e4-47ba-4957-9024-6dbd3675abef",
+			"@@@InProc at 8B8FB60934878D137311AD0E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239795940, false, "3c515d35-2303-4b3d-9cb5-0781fe0cd4c1",
+			"@@@InProc at 1CDB18D42E6269A14829E79E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239796900, false, "8f86a105-fe30-485f-a22d-d69838acd43e",
+			"@@@InProc at 8B8FB60934878D137311AD0E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239797000, false, "d6312518-b118-48e4-b7ee-a74d30ee51a0",
+			"@@@InProc at 1CDB18D42E6269A14829E79E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239798540, false, "bba0c136-28a4-4816-bed1-11cf9666210a",
+			"@@@InProc at 9D2839F02BC7A057C8103CAC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239805680, false, "2db392fb-86c2-4d55-b59d-4940a86abd05",
+			"@@@InProc at 5C283B5B1344FCC3E28DC045", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239806740, false, "1402e6eb-0f6d-4e3b-b6ca-99214a37ee22",
+			"@@@InProc at 9D2839F02BC7A057C8103CAC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239806850, false, "7067c179-18fe-4b15-acbd-6bfed3ebf7f7",
+			"@@@InProc at 5C283B5B1344FCC3E28DC045", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239808250, false, "f712ffdd-bdb5-4b5d-a777-1c95141a116d",
+			"@@@InProc at 6E7126EDCA2634C422464639", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239815070, false, "d2bea55e-bca8-4245-a3c9-ad36cafde0a1",
+			"@@@InProc at 137B9FBCFB1B4B1F4D699A63", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239815980, false, "963b3a7c-ea04-4dde-b560-8c6aba5f805c",
+			"@@@InProc at 6E7126EDCA2634C422464639", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239816090, false, "34b728cb-4949-47b3-ba59-38936b10ec57",
+			"@@@InProc at 137B9FBCFB1B4B1F4D699A63", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239817440, false, "4dd64da4-40cd-49cd-9312-cac7aa9aa53b",
+			"@@@InProc at 26CB13413AB9CC1EE7F39D79", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239824280, false, "828b438e-9cb2-42d6-bffb-ec1ce2582d8d",
+			"@@@InProc at 26CB13413AB9CC1EE7F39D79", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239825140, false, "d99f6f21-6a91-4faf-8c58-bf6ba0394e63",
+			"@@@InProc at 70367446BA86EEF6DF675133", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239825880, false, "c705bf5b-8b49-4736-9f50-92deb57f97dc",
+			"@@@InProc at 70367446BA86EEF6DF675133", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239826690, false, "8fe02716-116b-4340-8e32-933348237e55",
+			"@@@InProc at 8693B0B3114D7FF2532CCCCD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239832760, false, "ffea800d-92a0-4e74-a87f-ae57d749cb0d",
+			"@@@InProc at 8693B0B3114D7FF2532CCCCD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239833670, false, "df069989-409b-4f4d-acf4-e3d3a604cb18",
+			"@@@InProc at 15FC7C4BA15EA55A2C63C413", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239839730, false, "1819204b-6385-4bc7-9b30-d9f5b6acf6b2",
+			"@@@InProc at 15FC7C4BA15EA55A2C63C413", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239840620, false, "a0530a70-9e5d-4933-8750-46315ccd648e",
+			"@@@InProc at 80910DF30319C1CF5BB2AC91", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239841970, false, "02c76047-da13-4198-bfba-fa26895e5d75",
+			"@@@InProc at 80910DF30319C1CF5BB2AC91", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239842780, false, "09be2df1-979e-4702-8439-019edf004cae",
+			"@@@InProc at 1C284F483D91C02ECECA868B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239849190, false, "a95f7aa5-9d20-49ec-869f-39eecb55122d",
+			"@@@InProc at 1C284F483D91C02ECECA868B", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239850420, false, "9622ee9c-c8e6-4c71-9458-c3739d76be05",
+			"@@@InProc at 6CCBE5F36BCBB388A4779B23", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239855920, false, "3f635dec-c5cf-4053-aa6e-a3708e5f0aed",
+			"@@@InProc at 6CCBE5F36BCBB388A4779B23", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239856770, false, "f9a1c50e-bc47-41eb-ad8f-ba842f5319c1",
+			"@@@InProc at 01EBBF0DA549E16C98B96C65", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239859740, false, "2c0408f2-26a3-48bc-b7f5-6e9ba72a85e8",
+			"@@@InProc at 01EBBF0DA549E16C98B96C65", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239860790, false, "aba72d7b-a984-4d2d-b98e-823ed15f22c7",
+			"@@@InProc at C053615557E739C4A67481E4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239865880, false, "c0f75e60-591c-40b8-bb4f-931bc7a848a2",
+			"@@@InProc at C053615557E739C4A67481E4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239867080, false, "ea47f61b-84be-420f-b56e-026590bcd7f5",
+			"@@@InProc at D5F393F1B3F85AA4B1280E21", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239870050, false, "a59e12c1-5dc4-4c35-bc09-5ece350ce4a5",
+			"@@@InProc at D5F393F1B3F85AA4B1280E21", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239870930, false, "fb8e6778-04a6-4826-8f17-ecdb0f7e0244",
+			"@@@InProc at 839042F80C935306AD72E9C1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239877750, false, "290c3e3d-ceef-470e-8ca5-8214e3cbd868",
+			"@@@InProc at 36F0F5EB2353D3221B879020", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239878880, false, "bd461a31-2e8a-4430-b2e6-b8af45395c24",
+			"@@@InProc at 839042F80C935306AD72E9C1", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239879080, false, "5645e6ad-43d2-4614-b409-ec53d852bb8b",
+			"@@@InProc at 36F0F5EB2353D3221B879020", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239880680, false, "26f36321-bf98-4985-80cf-12063915a21d",
+			"@@@InProc at D3C50DF0F76E96FD03E8D4C4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239888330, false, "21cbd8e0-75a5-440e-b2a2-cd14ef4c9a9f",
+			"@@@InProc at 616D524E8FC54832CAF6482D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239889460, false, "07a52f3d-c67d-4369-afc4-a6a587f39375",
+			"@@@InProc at D3C50DF0F76E96FD03E8D4C4", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239889570, false, "e74043e6-8193-4049-a917-28b25090fcb7",
+			"@@@InProc at 616D524E8FC54832CAF6482D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239891190, false, "46ecd124-aab5-4fbe-b444-36eb0c5605d1",
+			"@@@InProc at B27EE50B17F352F26EECAEF0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239898940, false, "72229391-565a-4da6-9349-d749cea7d223",
+			"@@@InProc at 7AFFCFFF1340A2DF864702A2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239900050, false, "1d8a6919-a9de-4825-b083-fb605dd3306b",
+			"@@@InProc at B27EE50B17F352F26EECAEF0", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239900140, false, "9a725a62-fa14-41f1-a10e-ae63bd61fcdc",
+			"@@@InProc at 7AFFCFFF1340A2DF864702A2", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239902340, false, "8459338e-2c5e-4c2f-8bfe-f413db1314dd",
+			"@@@InProc at 35E8DC8689AF87BC42929E66", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239909480, false, "7f7bdfa7-4587-4f45-a79e-95de5c549bed",
+			"@@@InProc at 35E8DC8689AF87BC42929E66", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239910600, false, "e6502ef7-3a0d-4ee2-b407-de7a3c34c2ea",
+			"@@@InProc at 0AC88B53F07625E7AF3ACC82", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239912350, false, "c9839b6b-e36a-4414-91bb-7c0074762878",
+			"@@@InProc at 0AC88B53F07625E7AF3ACC82", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239913510, false, "3cf76eb9-c256-425e-a9ba-b170ca607ae2",
+			"@@@InProc at A86D63765A8E55FD3C5D4F9C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239918770, false, "ed79e429-92b8-4e20-a54a-92a9fae10671",
+			"@@@InProc at A86D63765A8E55FD3C5D4F9C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239919740, false, "8ba0711f-5bb6-4eb5-8432-b13c0a29788e",
+			"@@@InProc at 4D278CFF942BE99C75290B1E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239922150, false, "e6c310fd-80f4-4cb7-a086-20b3b6ef0be9",
+			"@@@InProc at 4D278CFF942BE99C75290B1E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239923210, false, "20b7e71d-6d01-47b9-93e1-fb0a892682bc",
+			"@@@InProc at 46BD4AB6B46ADC1F6EBEE92E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239927920, false, "e616cee5-8fac-4505-a2ef-6db76786c553",
+			"@@@InProc at 46BD4AB6B46ADC1F6EBEE92E", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239928740, false, "e4c14238-4d71-4559-a2c7-67ec82fb1c6b",
+			"@@@InProc at A1AAD9C3C5E04D0E11BD9B52", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239931070, false, "f4042b35-f4ae-4ecd-a290-99bb65e03fca",
+			"@@@InProc at A1AAD9C3C5E04D0E11BD9B52", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239932010, false, "456de2bc-bc19-4400-996e-8ed87d2ffebe",
+			"@@@InProc at FB8B2E52E58F54FDD852D66C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239936490, false, "0e95c63a-da65-4ec1-97f1-a9a8a8aee7d6",
+			"@@@InProc at FB8B2E52E58F54FDD852D66C", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239937300, false, "47a09862-4e1d-458b-a376-19882e552887",
+			"@@@InProc at 24DE44D7DDE0F5FB0E613EBD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239940050, false, "569a41b4-a746-4ce5-ab9a-8f27fbcdbf01",
+			"@@@InProc at 24DE44D7DDE0F5FB0E613EBD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239941050, false, "a78439c1-5079-49d4-866d-71a499e4e79a",
+			"@@@InProc at D8E78AF9FF75C0A30D565970", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239946510, false, "81d81bb5-065d-4406-977c-1e8d5b3cb1a2",
+			"@@@InProc at D8E78AF9FF75C0A30D565970", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239947310, false, "9326db4e-d3b8-44d8-a854-5276e7dfcf64",
+			"@@@InProc at 025821B7E82F6CC9B9ED7D8D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239954870, false, "68435b27-347c-4dcc-82a4-0161bd783e67",
+			"@@@InProc at CE3B30B8A605665E392CF6DC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239955950, false, "8337fae5-ee4d-4c0d-af48-2fbe2b802738",
+			"@@@InProc at 025821B7E82F6CC9B9ED7D8D", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239956070, false, "47948284-003d-426d-9c05-0235c48c7849",
+			"@@@InProc at CE3B30B8A605665E392CF6DC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239957530, false, "36b0967d-c0d3-42f1-b2fd-803507b8ddb5",
+			"@@@InProc at 2BAA4BA5909D7D94DCFE67FA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239964920, false, "d93bf783-e315-4976-99c9-9fe57aeb082e",
+			"@@@InProc at 2BAA4BA5909D7D94DCFE67FA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239966290, false, "fe591480-4fdf-4f01-8f2b-5b8baef00170",
+			"@@@InProc at 88895B5473962B9EA3332803", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239968670, false, "8027d520-7c6b-47f8-8285-32197661e3de",
+			"@@@InProc at 88895B5473962B9EA3332803", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239970330, false, "68f9d5dc-6b83-4018-b389-2924467474ba",
+			"@@@InProc at E96A4B34136EC22CC1156758", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239975580, false, "0830afdf-a919-4b95-8691-4f9b0645afb0",
+			"@@@InProc at E96A4B34136EC22CC1156758", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239977220, false, "5e1ced93-e4b8-43b0-9cff-ead2431b398e",
+			"@@@InProc at 7685EC1FE43C3E0761DE4E25", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239980660, false, "9aed38cc-dc0b-478b-bf40-5fe973b0cb10",
+			"@@@InProc at 7685EC1FE43C3E0761DE4E25", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239981810, false, "81eb952f-2d63-445a-a7a9-03963219adbf",
+			"@@@InProc at 88FBB8AE8A2FF22E9922C5BC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239986080, false, "d9694ffc-80c8-4fe1-8b0e-50503d3dfbfb",
+			"@@@InProc at 88FBB8AE8A2FF22E9922C5BC", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239987030, false, "6700f431-0727-4adb-9980-be7c0a82e8b9",
+			"@@@InProc at FFBCA524AA7C21ABBC6659CA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239989640, false, "25f83a2b-de28-44bd-a400-34d23f487a23",
+			"@@@InProc at FFBCA524AA7C21ABBC6659CA", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239990500, false, "94f2d8b2-5eef-4d0b-bf2c-13d3a5851f9c",
+			"@@@InProc at 4BAB4F164BEDBA8949A9C4EF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239996380, false, "12dfb298-f1ee-4f01-a8fb-938e93f98bfa",
+			"@@@InProc at 4BAB4F164BEDBA8949A9C4EF", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239997360, false, "8df9df48-aa4a-4724-8cb6-2a4551c3bab6",
+			"@@@InProc at 2F5707402BC28FACF50D85FD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239998970, false, "2e1213fc-d886-431c-a91c-d49ad8c255e4",
+			"@@@InProc at 2F5707402BC28FACF50D85FD", "11/18/2010 2:37:03 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:03 PM", 634256878239999790, false, "c2a02d74-dfb5-473e-aa86-fbd3637141bb",
+			"@@@InProc at F93201FC0AD6CB882ED4322C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240007320, false, "2adf9a6a-8ed8-400b-81bb-3404232f5d88",
+			"@@@InProc at F93201FC0AD6CB882ED4322C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240008530, false, "dc05c03d-4af6-4b04-8aa3-6a8098c24bb6",
+			"@@@InProc at A311984D083652BCB8FAEE66", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240010330, false, "42152216-8865-409b-8029-4f00cecb5bc7",
+			"@@@InProc at A311984D083652BCB8FAEE66", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240012230, false, "7c89915c-af54-42b1-bad2-86bdf166027f",
+			"@@@InProc at 6BC97D9B1A752916816C285F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240018580, false, "e3c100ac-4c7f-4e95-bd21-39cb2effd2ba",
+			"@@@InProc at 6BC97D9B1A752916816C285F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240019400, false, "05d61b8c-4875-4d00-9afa-f3c18fe33777",
+			"@@@InProc at 22CEB9EFFE783301BF7750FC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240021780, false, "83333c9a-716e-468e-82c6-8c573bd8d279",
+			"@@@InProc at 22CEB9EFFE783301BF7750FC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240048220, false, "2f26b7fc-de79-4850-b6af-82bce43a5000",
+			"@@@InProc at 7CB008A4AF6E7307E87BFCA8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240052470, false, "9d5a5a80-6ada-4ef8-98f7-fdfdd9f023ec",
+			"@@@InProc at 7CB008A4AF6E7307E87BFCA8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240053420, false, "53e778eb-5c41-4242-b7a4-639a291d97ea",
+			"@@@InProc at C261942747D5393B14CF7334", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240057120, false, "110cceeb-f172-432e-8de2-cc7ab9262815",
+			"@@@InProc at C261942747D5393B14CF7334", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240059000, false, "9adf5916-79eb-4b33-913a-2d1c87c46dc8",
+			"@@@InProc at 8CE32ED789B23481818A9D43", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240063610, false, "8298bf96-c3a7-41af-9cc8-3c607bee79e5",
+			"@@@InProc at 8CE32ED789B23481818A9D43", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240064810, false, "9f568ea4-3a01-4a82-a895-f2f2f6462c7e",
+			"@@@InProc at B0F1485AF59E094C88E99EEB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240068830, false, "ca4691e2-b053-4a2d-8881-7fbccd1a4cac",
+			"@@@InProc at B0F1485AF59E094C88E99EEB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240069690, false, "93492bfe-9a3d-40ee-994e-16101097bf5d",
+			"@@@InProc at D6623C04BCA5A669E69D5012", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240072850, false, "0f77c6c6-1aaa-453b-90a5-629936e8fe29",
+			"@@@InProc at D6623C04BCA5A669E69D5012", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240073650, false, "3141a079-25dd-4fcc-9a86-2b2e1a801ffb",
+			"@@@InProc at 765A801CCCE0463AB8333BCB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240078170, false, "344df2f7-a7d3-4486-acff-c7f30941283d",
+			"@@@InProc at 765A801CCCE0463AB8333BCB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240079220, false, "da39d381-8936-4c80-879f-03779f2072a4",
+			"@@@InProc at 4B7C5CDE9F9A4F9CAB9C5D15", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240081710, false, "f8e88969-9046-4f72-ac02-e778418bc6a3",
+			"@@@InProc at 4B7C5CDE9F9A4F9CAB9C5D15", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240082580, false, "782ef2c8-24c1-4b50-a875-735741f9f4e5",
+			"@@@InProc at 4A591128F384E981623DA1F5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240087020, false, "cca003a0-08c4-4e7e-8dc5-605408d13e20",
+			"@@@InProc at 4A591128F384E981623DA1F5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240087960, false, "7a35c32f-34de-4ed4-8c78-4fd595b52c1c",
+			"@@@InProc at B46C763B6828CED74204AFBA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240090700, false, "73871c5b-96b6-4bc6-af10-4da9cfac7ea8",
+			"@@@InProc at B46C763B6828CED74204AFBA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240091860, false, "54695ad3-3e45-4e5e-ba76-d11471b7ed0b",
+			"@@@InProc at BC89D21992A00EA55844AAB6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240096320, false, "0a6f79dc-151e-44ae-ab4b-015e35dcc186",
+			"@@@InProc at BC89D21992A00EA55844AAB6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240097390, false, "806ba261-7f51-4f09-bea1-37eb2a5b2828",
+			"@@@InProc at DA3934E51CB4476005B73D4A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240099870, false, "bc2fb6cf-f276-4a16-8beb-a95c8a8435ff",
+			"@@@InProc at DA3934E51CB4476005B73D4A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240100810, false, "f1527fdc-7415-44a6-91b1-ce37c7a7d289",
+			"@@@InProc at 2EE86A6227816FE6C3576460", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240105750, false, "9afc932c-8b6f-4ff0-93e6-e06c9c2958f8",
+			"@@@InProc at 2EE86A6227816FE6C3576460", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240106940, false, "f1c45c14-be95-4b6d-995f-6a364623271b",
+			"@@@InProc at F4282551422D4E5D3870FE12", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240110250, false, "0b4f0732-c440-4d7e-8816-99a1412bdf04",
+			"@@@InProc at F4282551422D4E5D3870FE12", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240111240, false, "cc107717-4094-40e4-a237-b0f6496662d1",
+			"@@@InProc at C1747CB05294DC8AB0E4C2E1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240116280, false, "63c3ad60-d2fb-4b6f-87ff-050fb01333c5",
+			"@@@InProc at C1747CB05294DC8AB0E4C2E1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240117100, false, "02cbf11c-75f2-4199-a09b-93595e618b20",
+			"@@@InProc at E62F2D43A069D4A2A06A712C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240120090, false, "9aceae63-1e2f-4acf-afcf-f1310a21c2bf",
+			"@@@InProc at E62F2D43A069D4A2A06A712C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240121080, false, "6e6279ad-2730-4a4c-95b8-09765dbae508",
+			"@@@InProc at B5B7E4A88378AE5A178DFE81", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240125550, false, "55267641-5a82-406b-bd35-6a8ec290e420",
+			"@@@InProc at B5B7E4A88378AE5A178DFE81", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240126360, false, "7083c5c0-69be-4770-8cda-c7447d14bd16",
+			"@@@InProc at 3DEB189BC4D22C4F6C5A02D3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240128810, false, "010c6e82-ca54-4153-afee-538a23f1656c",
+			"@@@InProc at 3DEB189BC4D22C4F6C5A02D3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240129740, false, "0a9613c6-9943-46de-afe0-eaa6a346b306",
+			"@@@InProc at 2826A48884AD43A1DB8A3BFA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240134240, false, "e8e23cb8-40ca-4afe-8205-5dedea3cce0b",
+			"@@@InProc at 2826A48884AD43A1DB8A3BFA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240135030, false, "a76ce9f6-e8c0-443f-b923-c9e500c7fdef",
+			"@@@InProc at B8712A2101845933F854EFA1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240138470, false, "1367683e-8bb8-4d5a-9dbc-6b99ad6cf7a1",
+			"@@@InProc at B8712A2101845933F854EFA1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240139510, false, "439946e1-b593-4a5c-a1c2-d18ba54a8c49",
+			"@@@InProc at A7467D7238A1D491E608CBD4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240142570, false, "449d29d6-9248-4c32-9f52-41a791dcca94",
+			"@@@InProc at A7467D7238A1D491E608CBD4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240143380, false, "0bd723c4-3317-45fe-83b1-65aa0c184eaf",
+			"@@@InProc at 3C31118926813EE5B6E654D7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240147920, false, "405055fb-afb2-4fe4-8bd9-4905c4712ffa",
+			"@@@InProc at 3C31118926813EE5B6E654D7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240149000, false, "51459786-1b2d-4813-94d3-a4b5c2a2f6e8",
+			"@@@InProc at 210E8A45E777EA659827529B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240153660, false, "702749d1-4828-4e18-bbf5-d482ed19dcf8",
+			"@@@InProc at 210E8A45E777EA659827529B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240154880, false, "ea44db08-2018-47ed-af2d-81c63b487c5a",
+			"@@@InProc at C4531D6C7C51D0CD7278AD3C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240157590, false, "1b051aea-5a25-4581-b32d-596caf5d9266",
+			"@@@InProc at C4531D6C7C51D0CD7278AD3C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240158580, false, "1f238b8f-2dee-4965-af24-4de2a18a01c4",
+			"@@@InProc at 53642AFEF1DD7DF0559946F6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240165900, false, "508a59e2-e386-4169-848c-5cc9850bfa8b",
+			"@@@InProc at 1C761D41B48183AAB6254534", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240166020, false, "dc1453d2-935d-4b09-a88d-d7b3658bdf12",
+			"@@@InProc at 53642AFEF1DD7DF0559946F6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240167590, false, "1f4651bc-ebb7-4261-9655-2748ef1da9ff",
+			"@@@InProc at 1C761D41B48183AAB6254534", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240167690, false, "e1754bbf-c468-45d6-92ea-b75b1b77172e",
+			"@@@InProc at 4DC897AEC565389DECCE7ECD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240176010, false, "92b407f6-2961-40f7-8a9a-dbf4e3fc7b67",
+			"@@@InProc at 4DC897AEC565389DECCE7ECD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240177090, false, "7b0b13fe-0a4e-432a-a416-1a44605fa667",
+			"@@@InProc at 163A667940FF63DE9F3D5AFE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240177170, false, "1e63de43-963f-4d2a-baf6-2ad2a59b33eb",
+			"@@@InProc at 163A667940FF63DE9F3D5AFE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240178630, false, "f573011a-a470-4068-906f-39753d150956",
+			"@@@InProc at AF92E412DD22050EBB561601", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240185070, false, "55b61130-746f-442e-90db-184fc1533028",
+			"@@@InProc at AF92E412DD22050EBB561601", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240186040, false, "29e006a3-5278-4a92-a723-dc86625d4829",
+			"@@@InProc at DB001F6B17F92B8C353ACFB5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240186950, false, "4769a4e4-490c-4314-9b7e-6fdc89217165",
+			"@@@InProc at DB001F6B17F92B8C353ACFB5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240187780, false, "4e94a801-5720-4bac-a1d6-d596ea3c676e",
+			"@@@InProc at F84E872C57F92D8291AC9609", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240194630, false, "9d40a860-48d7-434b-b8e8-9f23070aeb3c",
+			"@@@InProc at F84E872C57F92D8291AC9609", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240195610, false, "78ea320e-c067-4bf7-ba71-c00f090beee4",
+			"@@@InProc at 8CE8FAF25B3EE164D242B384", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240195720, false, "53fe5921-6b9d-4396-a9de-f622729414b1",
+			"@@@InProc at 8CE8FAF25B3EE164D242B384", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240197250, false, "ff161247-cc88-4c18-94d5-baeb2d7efd80",
+			"@@@InProc at 2D40C6CB6AAF8B17F456F574", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240203960, false, "a1293060-6525-4baf-a809-a570197ddcda",
+			"@@@InProc at 2D40C6CB6AAF8B17F456F574", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240204970, false, "2652e3c0-f9f8-4535-bb77-ba1402dc007e",
+			"@@@InProc at 3798E45AC02EF3BAC7F9921D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240205190, false, "e5619c4e-6640-4903-b212-d75e6fc61914",
+			"@@@InProc at 3798E45AC02EF3BAC7F9921D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240206520, false, "d512caf0-75d9-4e44-b5ec-0cc799652ff6",
+			"@@@InProc at D7E55E94948039BA8C3FA6AD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240213410, false, "09268cb9-08fa-4387-86e2-5af49ff69f92",
+			"@@@InProc at AB3FFA10F1F654115A49CD02", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240214480, false, "83f8199c-d7ff-402c-bcea-b0ededf8f641",
+			"@@@InProc at D7E55E94948039BA8C3FA6AD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240214570, false, "4d6e66e9-6743-4026-bdaf-487f0e426f30",
+			"@@@InProc at AB3FFA10F1F654115A49CD02", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240216020, false, "089b6984-1fe2-435a-84eb-518558545e46",
+			"@@@InProc at AA326763FD8972A059F80CB1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240223110, false, "0cf23a77-919a-49d1-9504-478014b3974a",
+			"@@@InProc at A8B1ACA827B42D417B55E303", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240224030, false, "893cc795-9a76-403b-b3da-165d7f26f35a",
+			"@@@InProc at AA326763FD8972A059F80CB1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240224270, false, "ebc5bc50-5e28-4ad6-9272-ff68e2fd2f2b",
+			"@@@InProc at A8B1ACA827B42D417B55E303", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240225930, false, "589412ef-f023-4ddf-9a9e-2703560bd2be",
+			"@@@InProc at ED3FEE77A86ABFC19B212556", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240233990, false, "3e0295f4-65dd-4ff4-b384-3cac30b8dc4b",
+			"@@@InProc at ED3FEE77A86ABFC19B212556", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240234910, false, "071f00ac-b7eb-47c4-b80a-9057e25b74e5",
+			"@@@InProc at 0C7D0665C92F4F8F9E077F54", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240235360, false, "a4a38def-4d60-4b2d-bcc3-14a5f5344b85",
+			"@@@InProc at 0C7D0665C92F4F8F9E077F54", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240236730, false, "f3dd23ef-76f0-4d05-acec-202f79537e44",
+			"@@@InProc at 4D432D592C9B1911AFAE4D49", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240244500, false, "1ea56e93-98f5-41f6-86c8-3ab1339a8dd3",
+			"@@@InProc at 6FDFAE31A2A4AFBD5B2F0916", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240245370, false, "be0e4330-2418-4250-b4c7-4992b1236daa",
+			"@@@InProc at 4D432D592C9B1911AFAE4D49", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240245480, false, "36f0447e-16d0-44b4-b518-eb54060a4f92",
+			"@@@InProc at 6FDFAE31A2A4AFBD5B2F0916", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240247360, false, "ed5129d1-b074-4abb-8131-8ef1703e8d9d",
+			"@@@InProc at 8B33697D5A36828AE997EBB6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240255040, false, "6c92507d-b161-4d5f-8c51-2750c7a7f549",
+			"@@@InProc at 8B33697D5A36828AE997EBB6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240256340, false, "87dbfccd-819e-45b4-b56c-4c60aceb08f0",
+			"@@@InProc at 146EB2D4AECACB882B54D54B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240258590, false, "61242723-9823-4536-b656-6e0adee630f8",
+			"@@@InProc at 146EB2D4AECACB882B54D54B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240259860, false, "f8a67509-86a5-4f7a-ba74-0fbb314b314d",
+			"@@@InProc at C62B34531DE61478816E30B1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240264480, false, "8dd2ba84-1ed4-4362-bb0a-b38187a157d6",
+			"@@@InProc at C62B34531DE61478816E30B1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240266090, false, "d48cb3ff-0894-4069-a2d9-bb6d7ad82939",
+			"@@@InProc at 0EAB88CB98A0DC6331F08346", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240270920, false, "5b4ddbe6-bef4-412f-a7e3-b750e4560207",
+			"@@@InProc at 0EAB88CB98A0DC6331F08346", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240272070, false, "e42540fb-fc34-4f87-a7ea-65f44c14629b",
+			"@@@InProc at 6467145AEBEAFDAAC28D3CE1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240275430, false, "a1428dfe-f8ce-4037-b020-d3943a5f236b",
+			"@@@InProc at 6467145AEBEAFDAAC28D3CE1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240276300, false, "c2561db8-d1f7-48e8-9b53-3a52ef54c5cf",
+			"@@@InProc at DEE2BCE495797A466DC4B07E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240281960, false, "f71c8645-be93-478e-ad68-1ee741ad15b5",
+			"@@@InProc at DEE2BCE495797A466DC4B07E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240283420, false, "c35ed362-84d6-4b5b-98e0-0825801c5283",
+			"@@@InProc at F4A082B64CEDC5198A838B6A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240285320, false, "cf5d3659-be0a-4c27-b16a-a8aeeb92ed23",
+			"@@@InProc at F4A082B64CEDC5198A838B6A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240286160, false, "48f5392f-d28f-4bc3-80d9-6fc64961eae7",
+			"@@@InProc at BB7CB560AB18E2BA984C4053", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240292640, false, "d5258d86-3813-4af0-af73-4b1700964fa3",
+			"@@@InProc at BB7CB560AB18E2BA984C4053", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240293470, false, "4c404e42-c368-4d25-a010-0883b44d40bb",
+			"@@@InProc at AF02663D976143F6010461CB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240294270, false, "d9e5b048-ed7e-44cf-8f27-d39578e73b82",
+			"@@@InProc at AF02663D976143F6010461CB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240295090, false, "3fb598d4-88d3-47ec-8e04-86173209e362",
+			"@@@InProc at DAEB6C4F79BC6A6B09A2DA72", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240301890, false, "e1650e75-2c6d-4e63-93bf-2aeee11d0f9f",
+			"@@@InProc at DAEB6C4F79BC6A6B09A2DA72", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240302880, false, "b2d1ab27-cdb2-48ab-8dd3-5150b58583dc",
+			"@@@InProc at 893B3B6F5077C067E7D83716", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240303330, false, "6faba3a8-a9c8-4d52-b7e8-a6c230510c5b",
+			"@@@InProc at 893B3B6F5077C067E7D83716", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240304620, false, "8bcd39a7-a635-4c83-b6b1-02142bee8bc4",
+			"@@@InProc at 57A0675E8D4C056BA3ED1DD2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240311870, false, "62208c4b-ca76-4018-b8ef-988c44ee6071",
+			"@@@InProc at 57A0675E8D4C056BA3ED1DD2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240312760, false, "b5521caa-7562-4bbc-a70c-28d22c9ee6d4",
+			"@@@InProc at A09A5A0143A719BF15EA4FE1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240313550, false, "23d62cb0-c71a-4a65-95fb-110f9153b361",
+			"@@@InProc at A09A5A0143A719BF15EA4FE1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240314360, false, "7ba542f5-5b83-4c24-9e66-b66c331ee437",
+			"@@@InProc at 39D4374D6D984DFCA69A08DE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240320990, false, "6509a77c-7af6-4e39-a770-b22fb97702f6",
+			"@@@InProc at 39D4374D6D984DFCA69A08DE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240322000, false, "734d2fcf-2f3a-44d6-8fae-42ba0809eff9",
+			"@@@InProc at 683E3E09E0B6590CC38D9082", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240323000, false, "e3d9c826-99a0-4395-98ba-8b868e1b7b55",
+			"@@@InProc at 683E3E09E0B6590CC38D9082", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240324060, false, "1fb5eaeb-027d-4cca-9ea1-3cfea1ade986",
+			"@@@InProc at 4AD518842913BB5B40FF030A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240330060, false, "b40c8bfe-3c5c-4d77-b3e5-a15e3e89bb0e",
+			"@@@InProc at 4AD518842913BB5B40FF030A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240331070, false, "1f731680-6d93-417d-b32e-5c1d6bfec009",
+			"@@@InProc at 9527DB0BC58CA4CC3653107D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240332650, false, "37304196-6d9d-48fe-8515-41bbfa620d65",
+			"@@@InProc at 9527DB0BC58CA4CC3653107D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240333600, false, "0690131a-1d28-4471-ba44-8ac53ea8ec5b",
+			"@@@InProc at 99DD7DAD033794CAD3D48E9D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240338880, false, "903952cc-84c7-48e0-96c8-718d0f3180fd",
+			"@@@InProc at 99DD7DAD033794CAD3D48E9D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240339770, false, "d7fa87d2-e527-42e3-ade8-1f35d93339d6",
+			"@@@InProc at 4C1CD4400DD227C7EF7ED068", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240341470, false, "2187a3ef-b8a5-4b18-950e-112974511348",
+			"@@@InProc at 4C1CD4400DD227C7EF7ED068", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240342640, false, "104892e2-67a5-41fa-b612-40c47b49569b",
+			"@@@InProc at 349F61DBDBC351C69118434A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240348840, false, "a59efcc4-9cb2-4665-b303-82b2a82a9449",
+			"@@@InProc at 349F61DBDBC351C69118434A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240349670, false, "28764823-3282-436e-9679-68de1e167e09",
+			"@@@InProc at C943C31C43F63E994181AE8C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240357950, false, "e4757787-dfe8-4394-9726-b0ff615ac322",
+			"@@@InProc at E855B82F05C7F30D5556DE09", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240358960, false, "9aae0f48-39c5-4002-ab11-e5503b1697bc",
+			"@@@InProc at C943C31C43F63E994181AE8C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240359050, false, "e041c892-d999-4e34-96dc-1ff90069601b",
+			"@@@InProc at E855B82F05C7F30D5556DE09", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240360790, false, "92b8c579-db5b-4c0c-97b0-ca103d560c53",
+			"@@@InProc at 516FEE333CD09ED8E397FB34", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240368650, false, "c6a18f08-e233-4081-899f-8c6fdbaf2b4d",
+			"@@@InProc at DCB683C272C825DDBB569A5F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240368880, false, "aaf6b621-914f-4814-be31-d428a0cec25b",
+			"@@@InProc at 516FEE333CD09ED8E397FB34", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240370530, false, "0ab405be-e0e4-443e-a4dc-7df48b21eb93",
+			"@@@InProc at DCB683C272C825DDBB569A5F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240370630, false, "c60b900c-74d4-4ff5-9e21-699a0d54bb7b",
+			"@@@InProc at 9BD3EE6A6068EDD6498AE24F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240378950, false, "843f8060-a4df-45cc-9696-15fa9bce9213",
+			"@@@InProc at D3838D2107DB6AF7E733AD8A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240379870, false, "58bbcf55-a3a1-48c4-9eae-13259522a24e",
+			"@@@InProc at 9BD3EE6A6068EDD6498AE24F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240379940, false, "2f298a04-d94f-45a8-af95-f97929d80dd0",
+			"@@@InProc at D3838D2107DB6AF7E733AD8A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240381370, false, "de622c34-b0f3-4f86-8ca4-5c1e81dcdb6d",
+			"@@@InProc at 0AAE7CC30134C041386240E0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240388540, false, "0be652c9-ad75-4a4b-a068-8b10900a23be",
+			"@@@InProc at 0AAE7CC30134C041386240E0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240389360, false, "1dc5c3c1-a772-4ce8-8efe-5264d96a91dd",
+			"@@@InProc at AB08C934B9C38D2C08C8E34F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240390300, false, "44ded9f4-ac50-4173-84cb-1d2c2facc52a",
+			"@@@InProc at AB08C934B9C38D2C08C8E34F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240391880, false, "fdd36a1a-48d1-4dab-8f24-5911057a9563",
+			"@@@InProc at 12592C006F124EAB1F2D6EA3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240397970, false, "ac1227b4-1416-4f85-82b9-72100c299d69",
+			"@@@InProc at 12592C006F124EAB1F2D6EA3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240399050, false, "3d2443ee-7436-4f95-a80f-51546c87c7c9",
+			"@@@InProc at B9022625010DF24C1419D817", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240403160, false, "4c7e4ed7-7b76-40bb-96be-d9dbdfc6daa3",
+			"@@@InProc at B9022625010DF24C1419D817", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240404370, false, "392c8bb1-5410-4b05-bf3d-c9e83237a375",
+			"@@@InProc at 5B3E694355F4B10928E2C84E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240406920, false, "29b8e28e-7179-44d3-94e4-19319d2abae8",
+			"@@@InProc at 5B3E694355F4B10928E2C84E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240408060, false, "489335e7-084c-40d1-b8fe-00554e3ffce8",
+			"@@@InProc at 6F9EFE306581B9D2812CC387", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240413160, false, "14e38db7-6037-4ec9-b70b-c956d8a56ce5",
+			"@@@InProc at 6F9EFE306581B9D2812CC387", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240413980, false, "be065449-26ea-4a5e-a593-fd1d3384fe97",
+			"@@@InProc at F2057D354A7E499D563518C8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240416280, false, "6abe885b-a9c1-4538-aee9-608e5a960e17",
+			"@@@InProc at F2057D354A7E499D563518C8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240417120, false, "cd2c0742-a283-4e5a-92db-f3b8291bcb80",
+			"@@@InProc at E006E9D272EAA08BD34A1B8C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240423760, false, "9807abe2-4c84-449b-889b-255b4d0259d6",
+			"@@@InProc at E006E9D272EAA08BD34A1B8C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240424960, false, "c3849b9f-bcde-4fa6-b065-0b02f694e1f0",
+			"@@@InProc at 40D2D800C1AEA1B1F2F82128", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240425110, false, "9f3059d5-4852-4a7f-b2d9-61e1685be184",
+			"@@@InProc at 40D2D800C1AEA1B1F2F82128", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240426820, false, "7bed130e-7585-4e1c-88e6-6f3e85a4c7e2",
+			"@@@InProc at D0B31D524E067F4C5C91259F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240435360, false, "eea8075a-dde3-46c4-a91c-262c64fd99d8",
+			"@@@InProc at DBC3F0B6EFEB2CE34B0CE253", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240435660, false, "34766f07-f0e5-4db4-a129-14ca6279f79c",
+			"@@@InProc at D0B31D524E067F4C5C91259F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240437310, false, "8a92280b-2d04-43ba-bf08-74c7eae992cf",
+			"@@@InProc at DBC3F0B6EFEB2CE34B0CE253", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240437550, false, "da277a7c-264d-4e10-b999-95b78089f164",
+			"@@@InProc at 52331D80539E0EAFB5898355", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240445140, false, "875aef83-e158-418d-8703-b53d273fa0ec",
+			"@@@InProc at 52331D80539E0EAFB5898355", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240445960, false, "d76aa66e-5a6e-4a2b-a5d2-365227bfd96d",
+			"@@@InProc at 1C521D51C4715DC2483D6AB1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240446720, false, "4bd990ce-de60-448d-8668-40210d1a0d6a",
+			"@@@InProc at 1C521D51C4715DC2483D6AB1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240447520, false, "3242532e-bc16-4940-84cb-2235024dab43",
+			"@@@InProc at 9BCD05C7D75BFA95BC932DFF", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240455950, false, "c0a31632-d9b8-4890-82ee-2dc3512f90b8",
+			"@@@InProc at 9BCD05C7D75BFA95BC932DFF", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240457520, false, "7cda2eb4-5b31-4e27-aa1a-6295d8291a0e",
+			"@@@InProc at F1CD1EBC6F473BE27163FD86", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240459760, false, "6f4a627c-d5df-40b4-bcf7-4a01ccdca277",
+			"@@@InProc at F1CD1EBC6F473BE27163FD86", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240461670, false, "94720de3-a63c-4130-8a55-5e3a6138e3e7",
+			"@@@InProc at 54793CDA75280348B9E5A037", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240467040, false, "81480ba9-e353-4364-9a33-56f57d513eff",
+			"@@@InProc at 54793CDA75280348B9E5A037", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240467860, false, "cb0d67b7-8600-4be1-b9e2-8d8263e2d933",
+			"@@@InProc at B17F9DEF0134F7700E7CB197", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240470230, false, "6164ee95-5a77-4af7-aa8b-b396414c0c9d",
+			"@@@InProc at B17F9DEF0134F7700E7CB197", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240471070, false, "d6b4c392-55b3-4e10-8627-59e52754ea25",
+			"@@@InProc at 0F30CF9C641929C99FBC172F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240476680, false, "82aca708-4471-4306-9c42-518f3aa3bd6b",
+			"@@@InProc at 0F30CF9C641929C99FBC172F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240477870, false, "1c06be10-8b9e-448a-a5cc-129c8a2b6e29",
+			"@@@InProc at 5CAE7CD135F850CCE833EA4F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240481320, false, "612a9984-7718-4084-9fd4-56e64064bed1",
+			"@@@InProc at 5CAE7CD135F850CCE833EA4F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240482510, false, "2cc61e3b-7287-4399-a430-abb3ef8cdddb",
+			"@@@InProc at 06DA66FCEBE00F93FD1A87CA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240511160, false, "bf2dca19-0d44-42d8-af12-6c380e95f84c",
+			"@@@InProc at 06DA66FCEBE00F93FD1A87CA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240512180, false, "ad19d43a-4b50-4964-8523-5ca4e545e032",
+			"@@@InProc at 44F7C957404197B2EC5DD69A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240514570, false, "15615fcd-57ce-4cca-9f8f-95bde3500418",
+			"@@@InProc at 44F7C957404197B2EC5DD69A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240515390, false, "e569b416-88e8-4469-ad18-7d03aa0e79aa",
+			"@@@InProc at 40B01BBDD63E3357CD57BBE1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240520260, false, "d41fb306-4aae-4a48-b606-645f77884f7f",
+			"@@@InProc at 40B01BBDD63E3357CD57BBE1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240521370, false, "ad265028-d2c5-4c7c-b5dc-1f06dc33e538",
+			"@@@InProc at B52EC6ADFD9C003D294D44B0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240523050, false, "c6ca9f34-32e6-455b-98a7-bf032ebb22a3",
+			"@@@InProc at B52EC6ADFD9C003D294D44B0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240524150, false, "b50c9c60-4787-43fc-835e-e8c2bd0dd103",
+			"@@@InProc at A98FC4E7517AFDD83A9BA9F1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240529570, false, "22389237-f4c4-4f6e-b4f8-0d4f02934afc",
+			"@@@InProc at A98FC4E7517AFDD83A9BA9F1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240530700, false, "fa091a76-03ee-4dbb-8f63-cb45beeb801f",
+			"@@@InProc at A097BF3C0E13875D01252BF3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240532330, false, "683c17ef-582a-4de5-9076-6713ac3d9fa4",
+			"@@@InProc at A097BF3C0E13875D01252BF3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240533180, false, "41d90995-5f5c-4123-b6b5-66f4dedef7e7",
+			"@@@InProc at 043407B676EFCA02B6117397", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240538970, false, "0030bf51-8404-4afc-96fe-e2546f544a6a",
+			"@@@InProc at 043407B676EFCA02B6117397", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240539810, false, "6ce3587b-ab96-4190-90d7-290195fcc2ad",
+			"@@@InProc at 3D8B2CC19953AD53E921A540", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240543150, false, "eefa2d62-3ec4-4f6e-8f39-46c75b1e1776",
+			"@@@InProc at 3D8B2CC19953AD53E921A540", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240544280, false, "98ab6e8c-3ee3-47ec-93a7-5e8f45bfb8e6",
+			"@@@InProc at 090681BEA27B263CB61D157D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240548320, false, "91205530-789c-4c7d-84e1-18f26484cc15",
+			"@@@InProc at 090681BEA27B263CB61D157D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240549730, false, "caad03e8-8392-405b-951e-2ebad0693bf9",
+			"@@@InProc at F15DD589D83E43F6D0291E5E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240554800, false, "c878ecc7-f549-4f45-b1e5-1279d780b2bb",
+			"@@@InProc at F15DD589D83E43F6D0291E5E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240555910, false, "a815072c-7970-4f21-a803-4c3a623f4093",
+			"@@@InProc at D8EBD525122B6F9E0601D86A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240558940, false, "2badfc0c-ab2c-483c-9623-8481d3422f37",
+			"@@@InProc at D8EBD525122B6F9E0601D86A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240560110, false, "38a6047f-8ac9-4356-b3cf-09b0e096b19c",
+			"@@@InProc at 183B686DF340CCB3E09DA57C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240565630, false, "0d90da00-ad53-4e83-883d-17e79ac592a9",
+			"@@@InProc at 183B686DF340CCB3E09DA57C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240566910, false, "776c4a69-cbbe-482e-92e1-3a65a3853bb6",
+			"@@@InProc at ECF1E4632CBB627B46076C95", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240568460, false, "46e68391-5adf-4c6e-86b4-1d0b85f54bb2",
+			"@@@InProc at ECF1E4632CBB627B46076C95", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240569260, false, "8ae56d74-6149-4cd7-9785-5cf3771f10a1",
+			"@@@InProc at 86CF7977DE185798DF609AF1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240577160, false, "a7347739-f6f7-4bec-b28f-44e45bb68920",
+			"@@@InProc at F77D43688D5926D9B00F31DE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240578410, false, "26147e00-750f-4d30-bdf9-3d2c372b3891",
+			"@@@InProc at 86CF7977DE185798DF609AF1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240578510, false, "8f4d0a05-86c0-4b61-a4fe-2e58c7d7b902",
+			"@@@InProc at F77D43688D5926D9B00F31DE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240580410, false, "d2d8917c-7e9f-4dfb-a334-9f9264651be5",
+			"@@@InProc at DB12A0C05484326D5675C5CD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240587560, false, "6376b983-2bc8-4564-ae70-91619b09dc1d",
+			"@@@InProc at DB12A0C05484326D5675C5CD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240588390, false, "6cd8a16d-24eb-46b3-93ad-5a694fd27b9a",
+			"@@@InProc at 544CC8F2A0A8A2E9852655EF", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240588700, false, "83f459dd-6adf-44b0-abd5-ec91bad4fbe1",
+			"@@@InProc at 544CC8F2A0A8A2E9852655EF", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240589970, false, "9ccb4569-9d5e-410b-bc6b-97b93914d11d",
+			"@@@InProc at 150A072EDEBC47CE552F6D76", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240596480, false, "b22a8fd1-e3c7-417d-8f26-c88da82968ee",
+			"@@@InProc at 150A072EDEBC47CE552F6D76", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240597470, false, "c3455a39-cdf4-4fb4-8535-f50727fcd4da",
+			"@@@InProc at 84148A8F45E73754EDCDEC32", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240599150, false, "5557d205-2db8-4daf-a271-6157a5241a9d",
+			"@@@InProc at 84148A8F45E73754EDCDEC32", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240600070, false, "a2ebfe0a-7c17-46c2-8b63-879a42c0dfb0",
+			"@@@InProc at 967808376447F35436BBFFEA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240606490, false, "6cb8d798-b1ab-46a3-98c1-194fb49533e3",
+			"@@@InProc at 967808376447F35436BBFFEA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240607510, false, "5f792464-94de-4952-aa37-f347f4289b18",
+			"@@@InProc at 4139CE516A797A26AD5F303A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240610020, false, "5105b282-86a2-4f7c-a4b2-1a2163dbf67b",
+			"@@@InProc at 4139CE516A797A26AD5F303A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240611200, false, "0826538b-1ee9-49d1-9067-edf42a4f33a8",
+			"@@@InProc at EA9181600EBCE738FD0D9AFE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240615380, false, "6514f9da-fcf1-4c20-a3fe-96248002387f",
+			"@@@InProc at EA9181600EBCE738FD0D9AFE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240616280, false, "0e14e6ce-65aa-4c18-8302-813a67914d87",
+			"@@@InProc at F836291C1FB36D1488D7E238", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240619790, false, "7616d1e5-fe11-40d3-9538-2b61458a940f",
+			"@@@InProc at F836291C1FB36D1488D7E238", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240620720, false, "6e64f992-34fd-475c-a053-bfa344cdf35a",
+			"@@@InProc at C0986EBD68CFB561CD5A9C50", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240624820, false, "bb85a5ae-92a4-4af4-8966-f8dc7799a5a5",
+			"@@@InProc at C0986EBD68CFB561CD5A9C50", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240625810, false, "1e97911f-0c10-4f77-bbf4-97a26e779fb9",
+			"@@@InProc at 8FFD31373E12480372DBC5AA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240630340, false, "0fd4ff8e-cca6-4b0b-b75c-3bdd7c315f2e",
+			"@@@InProc at 8FFD31373E12480372DBC5AA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240631540, false, "57ef8ba0-f695-4d90-916b-342bfc35fffb",
+			"@@@InProc at 67C5FD4B10EDB663C130B5F3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240634100, false, "794db01c-396d-44b9-a431-c17c8469ab23",
+			"@@@InProc at 67C5FD4B10EDB663C130B5F3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240635320, false, "f01f8434-b28c-4837-9a39-01f6f4a4470f",
+			"@@@InProc at 90D866B0EB7125B0046812FD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240640170, false, "e99b6ed2-0cab-4c6c-b690-b3a41a0173cc",
+			"@@@InProc at 90D866B0EB7125B0046812FD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240641060, false, "15cb332e-2c95-459d-b3e3-86292c547bc8",
+			"@@@InProc at D821DC89FD80ADF6C14F999E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240643770, false, "8e83d6a5-7b72-426c-913a-fa6f8d30728c",
+			"@@@InProc at D821DC89FD80ADF6C14F999E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240647030, false, "4b46d88e-aab2-45e5-b8e1-8230b8f9c3dc",
+			"@@@InProc at 5780AD58122F812C9661DCCB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240650530, false, "f8b4ebf2-49eb-435d-a6a4-2381ce38abfa",
+			"@@@InProc at 5780AD58122F812C9661DCCB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240651580, false, "e006801c-79b0-4525-bfa0-f0cce2b51ad1",
+			"@@@InProc at 92A01D2466BE31046D134E6F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240655860, false, "92383994-5165-4056-b9e1-1ba99bbe6e56",
+			"@@@InProc at 92A01D2466BE31046D134E6F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240656510, false, "d0aa950d-e81f-4745-a2a5-407893911ec7",
+			"@@@InProc at 8EB0AD0A5F7995153B089ABD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240659020, false, "9a80444e-6096-4ece-9809-3ce146a69dcb",
+			"@@@InProc at 8EB0AD0A5F7995153B089ABD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240659840, false, "2a86365d-cf8e-4e1b-83f3-c755b0acc233",
+			"@@@InProc at DA3AA0A59FFA64ECA2391719", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240661850, false, "aefd88d0-6246-4a87-b552-be16a7ef8565",
+			"@@@InProc at DA3AA0A59FFA64ECA2391719", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240662520, false, "eabe3b4e-8c6f-433d-b76e-81e121b2c713",
+			"@@@InProc at 20E0E4643FD3AD3A3A7B8C94", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240665660, false, "7f026b74-5fb5-4e73-bab6-563cfc879df4",
+			"@@@InProc at 20E0E4643FD3AD3A3A7B8C94", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240666380, false, "b0c62990-5a15-4fe6-8d64-e308a9738e49",
+			"@@@InProc at F9E3ACF5175C2AAB7C095854", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240668070, false, "89bdb11b-734f-4e7e-a4ef-801770fc0e2f",
+			"@@@InProc at F9E3ACF5175C2AAB7C095854", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240668620, false, "59d4d0ef-13ac-441f-9e31-81454be2590a",
+			"@@@InProc at 9B3991FCFC47763AA0910AA1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240673560, false, "a6c9e75d-299b-4fd1-bc82-26235f107d08",
+			"@@@InProc at F6013E7EE99DDC25D43E8E29", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240673630, false, "e3f1752c-6688-4fe6-a3dc-a11bf333ff97",
+			"@@@InProc at 9B3991FCFC47763AA0910AA1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240675170, false, "c182b8bd-23f4-450a-9d61-e599456d323b",
+			"@@@InProc at F6013E7EE99DDC25D43E8E29", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240675680, false, "0bd8f0da-5039-4221-b4ba-d9108d11b77a",
+			"@@@InProc at 4F3A69ADB731D9D7F4D81A2F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240681120, false, "d0b821e0-c729-423b-97ce-c4b8d02f982b",
+			"@@@InProc at FCBD5B6815D0670BADBD7275", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240681820, false, "d6d3b233-1c03-494f-bc46-d9239cf77a42",
+			"@@@InProc at 4F3A69ADB731D9D7F4D81A2F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240681870, false, "50762090-55d0-436d-be2e-7465e9f5b6c9",
+			"@@@InProc at FCBD5B6815D0670BADBD7275", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240682910, false, "c43e7fee-c1c0-49e8-a8a7-51d06dd02545",
+			"@@@InProc at D04002A1025678008910D5C0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240688330, false, "166b4556-7c5d-49ed-96e7-6ac20ff581ff",
+			"@@@InProc at BF67D022EE168EA6608D0484", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240688400, false, "d519577f-ae68-4ab8-92cc-7d60a4fa148e",
+			"@@@InProc at D04002A1025678008910D5C0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240689460, false, "8e7944f6-11f7-4992-82ea-227ac0db9907",
+			"@@@InProc at BF67D022EE168EA6608D0484", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240689560, false, "58f215a4-00f4-41cc-80e7-07e5ab51bfde",
+			"@@@InProc at B595D412211E6660D7D47B56", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240696710, false, "027913d5-fa05-4ec1-9e84-087a765fd5c4",
+			"@@@InProc at 79F6F2E3B960B97F54560111", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240697570, false, "3100d7eb-4f57-4a85-8205-779444f2472b",
+			"@@@InProc at B595D412211E6660D7D47B56", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240697640, false, "c64ea82a-a2c4-4e5f-b6d8-92ffa9555758",
+			"@@@InProc at 79F6F2E3B960B97F54560111", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240699070, false, "12ef1ebc-d6ce-46ad-b3ce-be21054e683e",
+			"@@@InProc at E435F801F7C0E058E682AF8E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240704000, false, "92aaddea-ad52-4cee-8452-d279e6b8a8d9",
+			"@@@InProc at E435F801F7C0E058E682AF8E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240704700, false, "815a4834-a4c8-4c4e-bc21-0359dfebf2b0",
+			"@@@InProc at DB40B3B59AFFC56871B09A02", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240705620, false, "c4c0ba1f-cb56-4ac6-9b9c-86416bd2d1a2",
+			"@@@InProc at DB40B3B59AFFC56871B09A02", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240706170, false, "2f0066ac-cd68-4b7c-bfb5-bd972e0e9510",
+			"@@@InProc at 402DB26FC9D568BCA41123AE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240709900, false, "5bff9e23-506d-492e-9b65-5681e03262ca",
+			"@@@InProc at 402DB26FC9D568BCA41123AE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240710580, false, "3557b1bd-4079-40b8-a0d1-d4dabb598ab7",
+			"@@@InProc at B32187A93C1CFF441B034F6F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240712710, false, "1b0901c7-e415-452c-b818-62f44c93144e",
+			"@@@InProc at B32187A93C1CFF441B034F6F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240713480, false, "e9ca23ef-217b-4422-8231-289f97e36ab1",
+			"@@@InProc at E61D7A41CEA4E32C666150C1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240715600, false, "7a133ab9-4b83-411a-bc50-3c40f15239ca",
+			"@@@InProc at E61D7A41CEA4E32C666150C1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240716220, false, "ab27dafa-5a1a-4f51-94bb-63b81b55ab7b",
+			"@@@InProc at 5CE004F293D253D7A447D9D3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240719610, false, "bd66ffbd-4b0b-4255-9d75-411d9f72bb73",
+			"@@@InProc at 5CE004F293D253D7A447D9D3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240720180, false, "4e4915d6-e7fa-4a00-b5b6-63f1cc8d80a5",
+			"@@@InProc at 1AA8FBBCE12189C234F64471", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240721840, false, "8388ed64-c016-4780-afbb-33569a935646",
+			"@@@InProc at 1AA8FBBCE12189C234F64471", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240722360, false, "60a54254-61a8-431c-95c2-3ba786bda6f3",
+			"@@@InProc at 360FCA94A55CA46D1B2B017C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240725550, false, "f4da936c-c301-4a43-965d-fa7ce9e7e0e2",
+			"@@@InProc at 360FCA94A55CA46D1B2B017C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240726070, false, "7457bd49-ea8e-4136-ab30-25ab085d0150",
+			"@@@InProc at E07C331CFFF273B6C19FFFFF", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240727600, false, "3b08fac6-2640-4ebc-a5e2-b03d2d1a2d3d",
+			"@@@InProc at E07C331CFFF273B6C19FFFFF", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240728120, false, "806e515c-a871-43e4-9d72-c7f2727bdcff",
+			"@@@InProc at 12DB2F2B9E5B1E402DD3A333", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240733170, false, "1e073022-c3a0-4f22-bb88-5d115a6fd655",
+			"@@@InProc at 12DB2F2B9E5B1E402DD3A333", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240733980, false, "732018e2-ce8d-4e4d-be68-675248559bd6",
+			"@@@InProc at A8FB61273E620BCB15CD7FF4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240734280, false, "cc3b47fc-7b88-485b-96cd-d003df851aa4",
+			"@@@InProc at A8FB61273E620BCB15CD7FF4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240735080, false, "a89f9ebe-6fd9-4892-9d1e-05f14cff720b",
+			"@@@InProc at AC346BD54404742415A7885B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240741310, false, "07bdc8fa-a989-49d9-90bf-6427d256c2eb",
+			"@@@InProc at 62F298FA3451DDDE8364723B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240742120, false, "3b6f6a5c-a6ef-4dc0-a36b-00efb134ccfe",
+			"@@@InProc at AC346BD54404742415A7885B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240742200, false, "aee21b98-4b75-47f1-85ce-012b275e8a67",
+			"@@@InProc at 62F298FA3451DDDE8364723B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240743350, false, "e865df73-a597-4809-b7d7-37b1753a9a6b",
+			"@@@InProc at 4C9B922042846C6C03E11A2A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240751550, false, "37007e9f-1b3c-4753-8e04-32b9e350facb",
+			"@@@InProc at 4C9B922042846C6C03E11A2A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240752100, false, "7111b57b-f6af-429b-94e7-62e27f3310f5",
+			"@@@InProc at 8E45A835A2BA9E2974E66275", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240754780, false, "0c31d19d-1de0-488b-8bcb-6647e30a785a",
+			"@@@InProc at 8E45A835A2BA9E2974E66275", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240756040, false, "24884096-a338-4ebd-9f5b-a6281a91f4fa",
+			"@@@InProc at E2750E7E56A2D85848AD27CF", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240758920, false, "b84197d0-634f-451a-833a-db0533db4269",
+			"@@@InProc at E2750E7E56A2D85848AD27CF", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240759630, false, "aaba5873-f9a8-4233-bd31-985af795faf7",
+			"@@@InProc at E9989636B6FCEF8A7E9B8676", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240765330, false, "5eb99200-dff5-4ae5-bf0b-3c0087841f1b",
+			"@@@InProc at AE88A258F6641648F6FF3107", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240766000, false, "d1f46fb8-59b5-4c1e-8c6f-5012b4448bfb",
+			"@@@InProc at E9989636B6FCEF8A7E9B8676", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240766060, false, "6dc65a70-ec1e-41fa-91e3-20cda495b28a",
+			"@@@InProc at AE88A258F6641648F6FF3107", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240767010, false, "df94bd2d-ed17-4667-8436-fecdb03f6bda",
+			"@@@InProc at 2BC380A6643CE3157BC5BB04", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240772520, false, "8510cb73-2bb2-43b7-8157-628d4f3a2785",
+			"@@@InProc at 2BC380A6643CE3157BC5BB04", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240773170, false, "cf31e522-d565-4fa1-b7f9-52c046671163",
+			"@@@InProc at FCBB18B3F67B7FAD51A1F689", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240777260, false, "9969cb8f-3a17-40a0-bc47-a9554936b94b",
+			"@@@InProc at FCBB18B3F67B7FAD51A1F689", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240778080, false, "2bbe4d0c-1fc0-4757-9118-1bccf21fe5c1",
+			"@@@InProc at 3363566420A35F1A7BDB68B6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240779220, false, "5eb520d3-5b36-4fc4-b670-b0ef524f0b8e",
+			"@@@InProc at 3363566420A35F1A7BDB68B6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240779840, false, "be0f3085-cc1e-4b94-afbe-e1e0ff996dae",
+			"@@@InProc at D56A3C74CCF3AD4D3F0B7A1E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240784120, false, "fdd07fd1-03ef-431f-9db9-ce8977133c86",
+			"@@@InProc at D56A3C74CCF3AD4D3F0B7A1E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240784840, false, "79cdb759-bdc6-4a39-9845-2411086f4dad",
+			"@@@InProc at 1CFF1EB0A428EC47180847B7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240785550, false, "c2ef7491-bb58-4409-b3c7-6ec30435d47f",
+			"@@@InProc at 1CFF1EB0A428EC47180847B7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240786090, false, "90ba79ec-c04b-4260-90ea-b8421fbbbd04",
+			"@@@InProc at F7B78958D8423D5461D06180", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240790530, false, "d7e15cdd-90bf-4596-9823-dfd92eebb4c4",
+			"@@@InProc at F7B78958D8423D5461D06180", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240791080, false, "2250cc8e-03f5-4636-ac12-390ac52b2a7f",
+			"@@@InProc at 9C4DB131B1BF3798E85FEC21", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240791260, false, "ef0e645f-6429-4f36-9319-a74169c9b9cf",
+			"@@@InProc at 9C4DB131B1BF3798E85FEC21", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240792080, false, "cdb08285-6fae-489f-9a5b-89edc4d303f9",
+			"@@@InProc at E07BA3A6DC8C872F00329834", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240796280, false, "c468f187-27a9-477f-9768-cad754e88f0c",
+			"@@@InProc at E07BA3A6DC8C872F00329834", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240796970, false, "a6565133-2e33-42f0-bb03-e180247331da",
+			"@@@InProc at 7F7E7D351BCB35729873AE9F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240798010, false, "5e0e6446-a4d6-4b1a-b4e6-0b325536016d",
+			"@@@InProc at 7F7E7D351BCB35729873AE9F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240798530, false, "878c9d6a-36f5-4cef-933f-d5a7dfc511af",
+			"@@@InProc at 7D216CB87531F75936EE982A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240802200, false, "e45021b3-0903-450c-bb83-eafbb1017a43",
+			"@@@InProc at 7D216CB87531F75936EE982A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240802740, false, "1dc5c92b-153c-4afe-ab3f-337a866fd0ad",
+			"@@@InProc at 9DDB88366E7E663C47192F3F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240803850, false, "f0202bcb-51df-4f78-8479-52a77680cb37",
+			"@@@InProc at 9DDB88366E7E663C47192F3F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240804390, false, "2f4a4e8a-8ee0-4693-a61a-3416616bc341",
+			"@@@InProc at 6FDBBCCA2290222D4F54199D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240808470, false, "0add4534-8bbd-40bd-aa2c-0d5c417953bc",
+			"@@@InProc at 6FDBBCCA2290222D4F54199D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240809210, false, "f23cf11a-5623-4da1-ac67-2e751bfa698a",
+			"@@@InProc at D6167A24EF7B99D6D08A69E1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240810260, false, "8a3c849e-51ec-4237-a859-32c82fad9494",
+			"@@@InProc at D6167A24EF7B99D6D08A69E1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240810780, false, "653d7e8a-2ecf-40b7-830e-cb1c0577f8b0",
+			"@@@InProc at 1D77A2D735E249DAF8FEE145", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240814570, false, "5463f0fa-609e-4bb6-a475-956e96c35c0c",
+			"@@@InProc at 1D77A2D735E249DAF8FEE145", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240815260, false, "b4f3005a-3225-4010-a1cf-a7cf05963256",
+			"@@@InProc at EDFA45CB5509688FA419CA29", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240816190, false, "585e6326-f4e1-4952-ba70-78dd6e58e0d6",
+			"@@@InProc at EDFA45CB5509688FA419CA29", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240816720, false, "6ebc5ad0-6efb-42c7-8505-f10eda76159e",
+			"@@@InProc at 70155E9A682173374E52F884", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240820600, false, "9acd542d-630e-4b8c-b99a-95317426b3c9",
+			"@@@InProc at 70155E9A682173374E52F884", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240821160, false, "6806b557-5a4f-48f5-b398-39d11678ccb9",
+			"@@@InProc at 0DCCFB8538EE5808E0116AE1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240822300, false, "94943376-fbe9-41f8-8f71-1cf637d1bef8",
+			"@@@InProc at 0DCCFB8538EE5808E0116AE1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240822890, false, "60ab7de8-a1fd-4d25-b7a4-a6e06ede226a",
+			"@@@InProc at 1C5645D7E0C41BBFA08D2F30", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240826270, false, "d583dd1a-c1fe-4395-9e5a-4c4673d3d7f0",
+			"@@@InProc at 1C5645D7E0C41BBFA08D2F30", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240826890, false, "f90af31c-f97a-455b-9a60-d97a2b7d756f",
+			"@@@InProc at 8037815749F97FBB2B19ED5A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240828040, false, "e4e06252-fb93-4859-bd71-2ee21f088ad3",
+			"@@@InProc at 8037815749F97FBB2B19ED5A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240828730, false, "a20a02d5-71fc-48cc-88a1-c8fdedc9b56b",
+			"@@@InProc at E55FD8A3ED5748C4533AEA24", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240832430, false, "d4fcf6dd-4b90-4a69-aceb-e152dc06509b",
+			"@@@InProc at E55FD8A3ED5748C4533AEA24", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240833040, false, "b2e50074-3a52-45f7-a9bc-370fd46b6e21",
+			"@@@InProc at 83B59D642E50A2BD41C560C1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240834050, false, "e3ebb6f8-9798-4787-85d8-9e3ae2df2d68",
+			"@@@InProc at 83B59D642E50A2BD41C560C1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240834590, false, "f1547af3-7046-4e40-ad1f-d1c087d5e5bc",
+			"@@@InProc at 664C820725639776203AB749", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240838290, false, "137954e0-d464-453b-bcef-41acb626dcff",
+			"@@@InProc at 664C820725639776203AB749", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240838990, false, "811a514d-cc14-4eaa-b0a8-cab41beedc64",
+			"@@@InProc at E2BD625F63CF87CEB1411747", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240840130, false, "29a0f877-15fd-4c1c-80bb-3924b5f994e1",
+			"@@@InProc at E2BD625F63CF87CEB1411747", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240840660, false, "a68ff72d-5da5-47df-aba6-5aa06ae3f69a",
+			"@@@InProc at 3C74F2A7D25529293C536508", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240844670, false, "3caf2e40-ed51-4b7b-9c53-b584d15ae8f2",
+			"@@@InProc at 3C74F2A7D25529293C536508", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240845630, false, "0923fd3b-b269-408c-b098-54ef6d8d0f43",
+			"@@@InProc at 081005666C4217BB490ED428", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240846770, false, "2a252abd-f8f4-4e12-a978-92387c4ed85e",
+			"@@@InProc at 081005666C4217BB490ED428", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240847280, false, "6ed0a272-f2ce-4b9c-80e5-221455cb9412",
+			"@@@InProc at 11B6963BC58102C1C5FB66E6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240851600, false, "5430d9d1-422f-4a2f-ab41-afe6b9c93ec6",
+			"@@@InProc at 11B6963BC58102C1C5FB66E6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240852230, false, "659d6104-0264-4678-800b-80a6dd409090",
+			"@@@InProc at D5D937F65EDF5D2CA8AFCE04", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240852910, false, "680ac101-13c2-49ed-a690-b1a8e06cc922",
+			"@@@InProc at D5D937F65EDF5D2CA8AFCE04", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240853550, false, "5ce6cfec-b139-4fd2-9df3-47839187d131",
+			"@@@InProc at 2C99A9B7A3935EDDB9B83C49", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240876240, false, "1cc8d346-a04e-449c-8e4d-d02d5763c14f",
+			"@@@InProc at 2C99A9B7A3935EDDB9B83C49", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240876800, false, "7c42bdc2-d3c8-4a39-bed2-198bec597c07",
+			"@@@InProc at E1915C41A66647692235C198", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240877910, false, "690da3a7-887a-4749-9f15-282127c6799f",
+			"@@@InProc at E1915C41A66647692235C198", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240878460, false, "cc9c8add-5f02-46ba-bb51-1fa838911268",
+			"@@@InProc at C8A20B9D19AD0A047900A66C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240882230, false, "173c8221-ab68-4fb7-a291-be5a76c75e7a",
+			"@@@InProc at C8A20B9D19AD0A047900A66C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240883030, false, "3e9a3713-b68b-474b-a5d6-5fb5c0b772fe",
+			"@@@InProc at BBD2519B080350059BA7C117", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240884080, false, "c5e8bbc7-2303-4588-8261-80483a8a9dd7",
+			"@@@InProc at BBD2519B080350059BA7C117", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240884760, false, "78d594f8-9b8c-47d6-8474-54819f9a30af",
+			"@@@InProc at 2F2F93F49A788756631323A0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240888440, false, "51035e29-9356-42b4-b5f8-ae8c05ab1a50",
+			"@@@InProc at 2F2F93F49A788756631323A0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240888980, false, "2808f44e-ed2e-4159-af4f-7a7a5236b2d1",
+			"@@@InProc at 163C21511634A4E36B0F7385", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240890160, false, "9581153e-4619-4a6f-bdfb-cebf2933cd89",
+			"@@@InProc at 163C21511634A4E36B0F7385", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240891020, false, "4ac2a7d5-7a2f-45bb-937d-3233a9b4df4e",
+			"@@@InProc at 3F6A7D88D5CE9EC512E66AA9", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240894230, false, "f7b2875b-56e2-4986-abfa-dfd5b57912c9",
+			"@@@InProc at 3F6A7D88D5CE9EC512E66AA9", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240894760, false, "e5046735-8a95-4caf-814a-5e4763bfae25",
+			"@@@InProc at AD832C1828FA48E7712A28F4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240896260, false, "d7eb9503-0cd6-4441-954e-4c07ff06d7a0",
+			"@@@InProc at AD832C1828FA48E7712A28F4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240896930, false, "690f0c88-3bb4-4a3e-b8ce-90a2448fedbc",
+			"@@@InProc at F25E36849261C9FE0C9E902A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240899940, false, "63f86e34-315e-4a78-952c-f65e309eaa73",
+			"@@@InProc at F25E36849261C9FE0C9E902A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240900480, false, "805a0948-7d5a-4eb9-a311-e3aec2a71270",
+			"@@@InProc at C0C534F8AADC83B9496B3B02", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240903200, false, "b6213b8c-939a-427c-b3dc-ddaebc26236e",
+			"@@@InProc at C0C534F8AADC83B9496B3B02", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240903900, false, "fa992b82-bbc5-4af3-89a5-e5f5dab56688",
+			"@@@InProc at C403F6F3A6D9370DBFCEB4EE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240905810, false, "fc45b1a9-d3c0-48f9-9033-ce9856e850ac",
+			"@@@InProc at C403F6F3A6D9370DBFCEB4EE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240906360, false, "e379e253-8280-43e1-9e78-ee827e3f2376",
+			"@@@InProc at 79F7308B49EA29D0607A7411", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240909400, false, "c987a2e8-5407-4989-90fd-d113e3208ef9",
+			"@@@InProc at 79F7308B49EA29D0607A7411", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240909950, false, "e0398b72-fd38-4523-96b2-e584addfafe4",
+			"@@@InProc at 8EDD333C8F6E6DEE96932CCC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240911570, false, "9a18eec1-75ae-446c-a2f0-c6d3e947a526",
+			"@@@InProc at 8EDD333C8F6E6DEE96932CCC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240912110, false, "543e3d86-6527-4472-a130-f08ec08b23ff",
+			"@@@InProc at DA29EF7DB59CE83E0DAEB57C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240915060, false, "19a76e25-4915-4ce2-a371-63e2726fe08f",
+			"@@@InProc at DA29EF7DB59CE83E0DAEB57C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240915660, false, "615a149d-9cc7-4b6e-9d7f-1ace568fb2a0",
+			"@@@InProc at 65B5727C6E8BA5E00DA8FBD1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240917290, false, "2520929d-3888-4278-a15f-155081f60e69",
+			"@@@InProc at 65B5727C6E8BA5E00DA8FBD1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240917810, false, "a583515b-ec16-4af4-9423-9cec4e3c2d0c",
+			"@@@InProc at CB0271D97C7482F4A7F7EB1F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240921270, false, "9330f9f1-5951-46c7-a202-5fffb2470704",
+			"@@@InProc at CB0271D97C7482F4A7F7EB1F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240921810, false, "4fab2f4a-10f6-43eb-9e76-8766f1de7e94",
+			"@@@InProc at E95D3544946BCBE50BED3A33", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240923850, false, "ba698653-b3ea-439e-bf91-52cfa9415161",
+			"@@@InProc at E95D3544946BCBE50BED3A33", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240924380, false, "9be4db90-25da-4251-a532-64e4981ec488",
+			"@@@InProc at F2816E20457B69FE525D36B9", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240927700, false, "12e5a126-8e4f-4475-a4cc-10bdf2e97aec",
+			"@@@InProc at F2816E20457B69FE525D36B9", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240928290, false, "46bb82a9-42ef-46a9-bc62-131a900d897e",
+			"@@@InProc at A10C2EEB10CA0551C3B2A720", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240931080, false, "8d4dce95-5023-4231-ad23-9fea5766cb3a",
+			"@@@InProc at A10C2EEB10CA0551C3B2A720", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240931780, false, "45a12a3e-5ff8-4596-ba19-50f31a7ddb89",
+			"@@@InProc at 996FAEB1C1088F8697BD495F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240933410, false, "526fa62d-08f4-4b92-961e-b96227177d4e",
+			"@@@InProc at 996FAEB1C1088F8697BD495F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240933940, false, "deed52ea-42f6-43ec-a572-a376a5ecc2ef",
+			"@@@InProc at FAC1182B0CEB36E9EBFE0D0E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240937510, false, "d12677ab-abe6-4661-8544-86f6c4144f60",
+			"@@@InProc at FAC1182B0CEB36E9EBFE0D0E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240938040, false, "09c6357d-76d8-444e-8834-2dfa52f47747",
+			"@@@InProc at D80A05C9B3E2A56D8C652456", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240939570, false, "4cd941bd-6d76-4203-bb39-55f806cfa3a5",
+			"@@@InProc at D80A05C9B3E2A56D8C652456", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240940190, false, "a44e9056-5783-4628-96b0-72bd4ecd5d53",
+			"@@@InProc at DE73E504815D5176B59AAC98", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240943240, false, "486a933b-d85e-4cca-9229-760e743a27cd",
+			"@@@InProc at DE73E504815D5176B59AAC98", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240943760, false, "55020dfe-0d6f-4ccb-9a60-03b903310d3c",
+			"@@@InProc at 46151657E880C272EA6E50D5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240945370, false, "a76315c4-e23b-4b85-b4a3-61f5033667dc",
+			"@@@InProc at 46151657E880C272EA6E50D5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240946150, false, "bc474d35-e8ba-48fe-906b-be6fddb02349",
+			"@@@InProc at D47DDF5D21D0B4BBBC420403", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240950120, false, "f42ce3a0-0a67-4d4a-9d8e-6887e91b132e",
+			"@@@InProc at D47DDF5D21D0B4BBBC420403", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240950820, false, "ff374855-a63f-4392-86cd-2d824f6c3d30",
+			"@@@InProc at 1E3F86520B86887AD4610B3B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240952560, false, "a4f32b0d-9f22-4393-8be0-9809d14e752e",
+			"@@@InProc at 1E3F86520B86887AD4610B3B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240953220, false, "4f46a57e-6a9c-44ef-bf58-209a3f76f990",
+			"@@@InProc at 01E14C16F5C46ECD6CA7FA29", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240957400, false, "5764cc7d-1782-413a-bb6d-17119c468362",
+			"@@@InProc at 01E14C16F5C46ECD6CA7FA29", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240958320, false, "04cba2d0-d378-43e5-8848-9470fe0e0927",
+			"@@@InProc at CCD4E7F63B5A4D75188A7F12", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240959310, false, "7023944b-ed72-4b35-b9be-141ffc6b4ae3",
+			"@@@InProc at CCD4E7F63B5A4D75188A7F12", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240959930, false, "2ec199e2-191a-49f8-8732-9aedf67c4829",
+			"@@@InProc at 5BBF14275C17469068224CEE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240965180, false, "2dd2bad7-df18-4d55-b09d-b11b5091f9c2",
+			"@@@InProc at BEEC29F74DE24FEE4F63CD12", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240965430, false, "717fc9e5-bd63-4b24-acb0-930362013a6e",
+			"@@@InProc at 5BBF14275C17469068224CEE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240966490, false, "a8c3b498-f245-45a6-a778-a05d81e2531c",
+			"@@@InProc at BEEC29F74DE24FEE4F63CD12", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240966660, false, "30aa45e6-a69e-4fd5-84e1-31d3470c7cef",
+			"@@@InProc at 562D4D1D182069258AEC0D6F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240972700, false, "ff2e33e1-bfa9-4cea-8d15-3e02c82d1158",
+			"@@@InProc at 8DB3BE309280DF1B9BE20EE5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240972890, false, "57387fbb-2418-4565-96ef-7623c50ab36b",
+			"@@@InProc at 562D4D1D182069258AEC0D6F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240974380, false, "993c94fe-a5e2-4a94-a6e5-25f088f1d378",
+			"@@@InProc at 8DB3BE309280DF1B9BE20EE5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240974460, false, "7747e78b-72f4-4ce7-bf55-bd34198c86f2",
+			"@@@InProc at A6AA54B3B194D1243399EEF2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240981020, false, "13613b65-cc38-4dc0-b4ef-fcd7b7598a3e",
+			"@@@InProc at 077E14A8A418714E70C6DBE6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240981840, false, "e0d55879-e8a2-4b2e-a2b8-6c328afd41ac",
+			"@@@InProc at A6AA54B3B194D1243399EEF2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240981920, false, "c7ca11f2-6c94-4b81-992a-4920857d46a7",
+			"@@@InProc at 077E14A8A418714E70C6DBE6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240982970, false, "25f424d9-d356-4598-8bd5-dd763fb0e689",
+			"@@@InProc at 1CBD0D67BB40A1F375796928", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240987820, false, "f8b40209-55cc-4a62-9eb9-3506b6af1cda",
+			"@@@InProc at 1CBD0D67BB40A1F375796928", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240988370, false, "656be1bd-fe22-41c8-b163-0e7f688ff078",
+			"@@@InProc at 4EC73CD098331E935EC7733A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240988540, false, "d1bf8e72-5054-466b-aca2-95b7c1c8efe7",
+			"@@@InProc at 4EC73CD098331E935EC7733A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240989570, false, "7a1ae155-c195-43dc-8569-a24030086e35",
+			"@@@InProc at 44D0516079A2FEDEE8AC9F1B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240994130, false, "67e6ee87-5ea1-453a-9e43-cd149d5aa07f",
+			"@@@InProc at 44D0516079A2FEDEE8AC9F1B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240994840, false, "30b56cb9-1686-4cbd-8cea-e21a80063d21",
+			"@@@InProc at 5008F28678F9963150A9285A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240996030, false, "b731d2ea-19a1-446a-8514-658a052dc5a8",
+			"@@@InProc at 5008F28678F9963150A9285A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878240996580, false, "05d30a61-92ff-4cfb-bb48-d5644d7706d1",
+			"@@@InProc at A44E2B5D7CC00B988EA4E451", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241001610, false, "dacb0a14-12f6-4927-8643-08be90411aa0",
+			"@@@InProc at 2A03F4ABC6058ADCBF712408", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241001690, false, "3545aa88-38b8-448c-89c1-c1f67f9b9b0c",
+			"@@@InProc at A44E2B5D7CC00B988EA4E451", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241002780, false, "717e5d9f-afec-452f-bbcd-19c54cd711aa",
+			"@@@InProc at 2A03F4ABC6058ADCBF712408", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241002920, false, "263c498d-a975-4a35-bf86-da480eb0568f",
+			"@@@InProc at 502FAA9A0F825E089F804F95", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241008040, false, "229cbf83-481c-4a0d-a4a8-ff1516795466",
+			"@@@InProc at 108477A0FF4CA606247611F1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241008700, false, "10371d02-89b6-4746-9692-96f7a1c4a073",
+			"@@@InProc at 502FAA9A0F825E089F804F95", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241008770, false, "e56f2938-9be1-47a0-9255-0d65f5cb6668",
+			"@@@InProc at 108477A0FF4CA606247611F1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241009670, false, "aaae5cf9-797a-43a5-afec-862d2d374717",
+			"@@@InProc at 3DC1D518DD1EA34D6CA5C050", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241014550, false, "e046bbe0-83ce-4f1a-a22a-dfa849cb5eeb",
+			"@@@InProc at E1026E1D1273C17D0D23F920", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241015180, false, "2681ae29-8f2b-4407-99b0-6307c58d927d",
+			"@@@InProc at 3DC1D518DD1EA34D6CA5C050", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241015230, false, "0d222bcf-a02c-47d1-a958-815aac8f294b",
+			"@@@InProc at E1026E1D1273C17D0D23F920", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241016140, false, "291f190c-1a20-460a-9dba-01d24913841b",
+			"@@@InProc at D9C6C2860C11E5B68372398E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241020740, false, "8482eb3b-94b0-4a77-9fb8-a5e910c57f11",
+			"@@@InProc at D9C6C2860C11E5B68372398E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241021330, false, "bf61c954-4248-4d64-9383-b33b00f3faeb",
+			"@@@InProc at 3C918A6BDE5059FB9AE0D9BA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241022750, false, "4999d108-e9a1-4caa-b1f7-57b3abf63739",
+			"@@@InProc at 3C918A6BDE5059FB9AE0D9BA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241023460, false, "ff0b3b0f-63e4-4560-a782-635df277a406",
+			"@@@InProc at 053702DBE1C4BC784FB4727D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241026480, false, "514607e2-7cd1-40de-90a1-38ee3af753d3",
+			"@@@InProc at 053702DBE1C4BC784FB4727D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241027010, false, "7f8f3722-de4b-40ec-ba8f-148c65d04ad6",
+			"@@@InProc at 691EBAB0E325B8300F49B9C7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241028800, false, "91b95f33-03d7-4e2a-9034-321a65b2aa93",
+			"@@@InProc at 691EBAB0E325B8300F49B9C7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241029420, false, "e511305b-fb03-4885-b6d7-7e02daead1e1",
+			"@@@InProc at DB6751035C002ABA6C9CD4B8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241032680, false, "0ed7a63e-aea6-4c0f-abab-7f61c02b9494",
+			"@@@InProc at DB6751035C002ABA6C9CD4B8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241033230, false, "a8f2308c-135e-4b19-b8f2-aa2575e2aa04",
+			"@@@InProc at 9008C4013D0EEB48E4A5C2D6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241035670, false, "1593607b-462b-48c0-82dc-faa622c339ee",
+			"@@@InProc at 9008C4013D0EEB48E4A5C2D6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241036360, false, "38b6973a-d770-45aa-8007-1153ebf563c5",
+			"@@@InProc at 032CF9A03C06487EF9647ED3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241040060, false, "9d72b84f-aafa-4c6a-812e-cdc86d4df3fc",
+			"@@@InProc at 032CF9A03C06487EF9647ED3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241040880, false, "7d51844e-2ac2-4bcb-83cb-21b6d08eb56a",
+			"@@@InProc at A64F50A552CAE3325E68FC10", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241041890, false, "3c765471-763a-46bf-9d19-4ed7e4cca994",
+			"@@@InProc at A64F50A552CAE3325E68FC10", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241042570, false, "f2b6bb39-8437-48c0-8e28-8b7f8a4d00d0",
+			"@@@InProc at E0B3B0B2C27AEDCCC413B7D0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241048270, false, "b87bad0a-a255-4bdf-bbeb-fb2ae3fff277",
+			"@@@InProc at E0B3B0B2C27AEDCCC413B7D0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241048890, false, "58c5a03f-f03a-431b-9d8d-d9bb4177ea51",
+			"@@@InProc at D24759CAA260B0287EE471A8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241050850, false, "61af81e5-74c8-4183-83be-89e8c07446e5",
+			"@@@InProc at D24759CAA260B0287EE471A8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241051570, false, "19ca61a6-a35d-4c8d-b7bf-27ab03332380",
+			"@@@InProc at 8A1023CE6B2B300E31F6F89C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241055720, false, "22227c37-891f-4394-8eba-5defc6de3847",
+			"@@@InProc at 8A1023CE6B2B300E31F6F89C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241056720, false, "76535fc7-8b4d-4058-aad9-03b62ffeb772",
+			"@@@InProc at 3521CADFF8062FFB1D60F5AF", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241058100, false, "5d92663a-1a4e-4da5-b26c-20bdc4a20673",
+			"@@@InProc at 3521CADFF8062FFB1D60F5AF", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241058820, false, "98236d99-2491-41df-bb70-e40eb44c2e28",
+			"@@@InProc at 1FB5A549CD2DB47E836C92F6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241062840, false, "9db732b5-e870-4645-bcd8-fd10d9c0e819",
+			"@@@InProc at 1FB5A549CD2DB47E836C92F6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241063560, false, "1a4f3d27-915b-442d-ac5b-6fadd98e84fc",
+			"@@@InProc at B10EE5AE00B1137B5EB821D1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241065600, false, "7ece1d24-5ae8-49aa-b5e7-faa176520d2c",
+			"@@@InProc at B10EE5AE00B1137B5EB821D1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241066370, false, "5405c35f-6d92-42f9-8be2-db055707f51b",
+			"@@@InProc at 47E26C3F5E74994823E9DD5F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241069170, false, "46cb75c7-ed18-4b43-8c03-19bd79b0f4f5",
+			"@@@InProc at 47E26C3F5E74994823E9DD5F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241069790, false, "830ad84b-1609-457f-8d2f-86f178dd145a",
+			"@@@InProc at E5F0C7B2331874745EC06437", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241072310, false, "1cc1622b-7afe-4306-b232-8857adeee370",
+			"@@@InProc at E5F0C7B2331874745EC06437", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241072930, false, "ad2c6740-5afb-413d-9b95-85d06a95e04e",
+			"@@@InProc at D2B311DC5E87708DED225BB9", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241076260, false, "036a1e92-f853-4e71-bb7c-82d96c2c7bea",
+			"@@@InProc at D2B311DC5E87708DED225BB9", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241077080, false, "aa806c96-5869-43d7-9fb9-db014e86ff45",
+			"@@@InProc at 1ADA1FAA9F054200540C5CD3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241079170, false, "e5663be6-a852-4dad-a554-5aa2b4f1af16",
+			"@@@InProc at 1ADA1FAA9F054200540C5CD3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241079890, false, "78c8abd5-7412-4733-a7a8-20f43f196610",
+			"@@@InProc at EE37A76912535B52EA04E8A6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241084020, false, "264e7ec8-7406-4e5d-b169-929f11ec098e",
+			"@@@InProc at EE37A76912535B52EA04E8A6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241085600, false, "1196bb5c-4b3e-4a67-bf1f-efadd3b8fd80",
+			"@@@InProc at DAF58AAEA6C39052C7D5F0BD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241087290, false, "8a8cb77a-74cc-451e-b68f-95aff904a8f9",
+			"@@@InProc at DAF58AAEA6C39052C7D5F0BD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241088800, false, "fdd9af8d-e8fd-4c5a-9c58-4ec5a6bb306a",
+			"@@@InProc at 2E83A733B1E412725773B090", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241093030, false, "bb5506b1-7376-4d86-9a2f-f647329556fb",
+			"@@@InProc at 2E83A733B1E412725773B090", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241093820, false, "b97769a7-3b7a-4334-90c4-2938ace4af69",
+			"@@@InProc at 86A28221FF48235C579EC174", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241094530, false, "f9d5d173-6cf9-4a6e-af29-fd8ff23917a2",
+			"@@@InProc at 86A28221FF48235C579EC174", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241095070, false, "5f1ad98d-b4d6-45d8-b675-473ec11964fc",
+			"@@@InProc at 13BB2BA500D769102551D910", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241100070, false, "d8f96732-a38a-4679-9e37-db6ec4efeb0f",
+			"@@@InProc at 13BB2BA500D769102551D910", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241100940, false, "64ff4364-d80c-42b2-b821-8264fc10ed5d",
+			"@@@InProc at DBF869FD8787292FB6DA4A58", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241102230, false, "73768c9a-39f1-449d-ba73-0dd0676060b9",
+			"@@@InProc at DBF869FD8787292FB6DA4A58", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241104070, false, "5f346b3a-d37e-4228-9586-f6ba73b31c9e",
+			"@@@InProc at 905605B200DC70AD44631B94", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241107210, false, "8afb10dd-4b1a-4a5e-a698-d236e11fcc38",
+			"@@@InProc at 905605B200DC70AD44631B94", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241108360, false, "a05ea240-1b7f-414d-9b6a-ddc3c37649f8",
+			"@@@InProc at 60B273EF847721F69F3A51D0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241110360, false, "bc7bd933-150f-468b-b475-a8b2dad15cf7",
+			"@@@InProc at 60B273EF847721F69F3A51D0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241111140, false, "e6be58ff-0b5b-4aa6-bd6b-abf087f7c42a",
+			"@@@InProc at 47884868569B8DF3D33E4184", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241115260, false, "f5263767-e3a5-4bf2-9e4b-c2c036fb6dc9",
+			"@@@InProc at 47884868569B8DF3D33E4184", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241116030, false, "bae6e1f0-3438-4d4a-b4cd-907b9ff62a2f",
+			"@@@InProc at FFD2CD7C2ACC6ADF8F51838F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241118090, false, "bb21a5d8-bfa1-4d58-bea5-4f4dd175dbd9",
+			"@@@InProc at FFD2CD7C2ACC6ADF8F51838F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241118790, false, "2980bf38-f0ad-461b-b607-95a93085e83b",
+			"@@@InProc at CA364A940FD959654A0B60CC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241121970, false, "df373baf-2264-4137-ad89-7e9fbf7d745d",
+			"@@@InProc at CA364A940FD959654A0B60CC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241122560, false, "033ad5ca-e548-4ba5-af63-3a1fb0742f8b",
+			"@@@InProc at 8BCCE54E4A3E27AE5551A67C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241124380, false, "e7ac99fa-91f9-4328-b7f3-63ee1d1b79a8",
+			"@@@InProc at 8BCCE54E4A3E27AE5551A67C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241125050, false, "141ef7a7-e969-4e39-9a17-227802a3c7b1",
+			"@@@InProc at 01AC5536F9C040BE3B9E15DA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241127920, false, "a016f554-134f-4251-8261-09104901cc7f",
+			"@@@InProc at 01AC5536F9C040BE3B9E15DA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241128450, false, "1f4dfc2f-1dc0-4b60-b85f-9495103a75f2",
+			"@@@InProc at 2DC7EEDACF2184624BF9735A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241133660, false, "e31a23f9-2c18-472d-996b-cbf51fb5e236",
+			"@@@InProc at 2DC7EEDACF2184624BF9735A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241134810, false, "c03742e1-185c-45ab-9409-fc387f6eecd9",
+			"@@@InProc at ADBA87076A7794579A9E9E63", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241135120, false, "dbf0095a-0237-4280-9322-3f974a80197f",
+			"@@@InProc at ADBA87076A7794579A9E9E63", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241136090, false, "64d664e2-6639-4e5a-85a0-8edd2b528b16",
+			"@@@InProc at 7940B0E07BC59F061C58AF71", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241142380, false, "c8356a90-5845-4cf5-a056-33dec9b3146e",
+			"@@@InProc at DADA780C0E138B8390BE281E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241142440, false, "9c672229-4a6b-4b88-8cff-852e123b2dad",
+			"@@@InProc at 7940B0E07BC59F061C58AF71", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241143450, false, "921cea63-1f6d-47fb-8f56-c4d0e98548ce",
+			"@@@InProc at DADA780C0E138B8390BE281E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241143510, false, "f6e7811a-7a80-4b30-a665-6805a3f957ce",
+			"@@@InProc at 686556749380132638F9F4F8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241149670, false, "05e26e05-6e02-43a2-a9a4-06fd5900387f",
+			"@@@InProc at DB82DDE2136033CF48C7EA6B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241154000, false, "4d7b728e-cf97-49b8-b5a0-67fdc22145d2",
+			"@@@InProc at 686556749380132638F9F4F8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241154070, false, "fd88a2e8-6f27-4ffd-8324-073703ca9a4a",
+			"@@@InProc at DB82DDE2136033CF48C7EA6B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241155700, false, "c47f9967-b80e-42e1-8afe-b89b5c5e59e9",
+			"@@@InProc at 153BEA6A9EEB53548F58484D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241160960, false, "b2df5cf3-09e4-4973-aa59-cc6869abf9de",
+			"@@@InProc at 153BEA6A9EEB53548F58484D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241161680, false, "663d7839-6fbb-4a55-b69c-2e44d84961d5",
+			"@@@InProc at EBAD4A90618821EDA6FCF825", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241167600, false, "2530115c-6b8a-4dbb-9ee0-36e7c4f3c78d",
+			"@@@InProc at EBAD4A90618821EDA6FCF825", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241168660, false, "a1a56b96-b478-4bc1-bd9f-da1c06806b42",
+			"@@@InProc at 434DF52F5721BCD856D847E4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241170360, false, "18cc404f-442d-400a-ab2d-1234b9e3e8e9",
+			"@@@InProc at 434DF52F5721BCD856D847E4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241171480, false, "b3818163-44ee-41d7-a19e-c595aaa7c9ce",
+			"@@@InProc at 183E0BEBDE9BBD23EDB4F40D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241177580, false, "a7c8cc18-f010-40ca-b766-55d160f224e4",
+			"@@@InProc at F7432BB371FE5B05AB188F9E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241177650, false, "65cd6633-218a-4a01-9686-ff049bc6b4bd",
+			"@@@InProc at 183E0BEBDE9BBD23EDB4F40D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241178790, false, "cdbd8393-bf5b-438b-9d1b-80636ebd98d8",
+			"@@@InProc at F7432BB371FE5B05AB188F9E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241178850, false, "c3368193-48ca-490f-9608-9e48f01840cd",
+			"@@@InProc at 39D7479326B371ADF3B3E76E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241203850, false, "d9fa6adc-f671-46fe-bd19-a5115d17a4e8",
+			"@@@InProc at 671C8CAB8402BDBB452D0D73", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241204660, false, "cf8ba68c-51f7-4e52-8638-33c2c8c16fb4",
+			"@@@InProc at 39D7479326B371ADF3B3E76E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241204730, false, "9fe912e3-6a95-4a31-912c-b036d55cf622",
+			"@@@InProc at 671C8CAB8402BDBB452D0D73", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241205930, false, "77f6ce16-4d04-4742-9d3a-f8df75082451",
+			"@@@InProc at 34769D3E524AD7536F1C65F5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241211070, false, "36611521-b425-4a0e-bab3-bf746fee5a8a",
+			"@@@InProc at 34769D3E524AD7536F1C65F5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241211760, false, "d7297bcf-ca00-44df-9a05-f5e07af3f3ca",
+			"@@@InProc at E473ADA5D990ADDDCA013425", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241213550, false, "12f921db-b1e8-4763-8c79-506524ddc809",
+			"@@@InProc at E473ADA5D990ADDDCA013425", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241214310, false, "de7174c0-da89-4ba0-87e2-a49b16a21a89",
+			"@@@InProc at EE16FBF34AC4E71C40330D23", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241217070, false, "cd61cd9a-6946-4d61-b6f5-6776cf0179fc",
+			"@@@InProc at EE16FBF34AC4E71C40330D23", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241217710, false, "fc27fa7e-658c-43e6-b21b-cb3d73c406b6",
+			"@@@InProc at 200FFA82942812C6737C4FDC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241220470, false, "3ff5d70f-f200-4f67-aa37-73752d67f123",
+			"@@@InProc at 200FFA82942812C6737C4FDC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241221710, false, "d76024b2-4e81-467f-a15b-c0b9c2ba2606",
+			"@@@InProc at 83DEA095258F5B8466B1FB53", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241224350, false, "82add2a7-e543-482e-9b94-e0e37523146c",
+			"@@@InProc at 83DEA095258F5B8466B1FB53", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241225020, false, "147fb244-3f00-4bfe-a2bc-898e6d40db4c",
+			"@@@InProc at F85E2E9E0A54A3577EFB5DE4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241229810, false, "9b9de0ab-79b3-4217-9948-07d3a77a7ce6",
+			"@@@InProc at F85E2E9E0A54A3577EFB5DE4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241230570, false, "729750a4-3524-4e8a-acb8-3af426392364",
+			"@@@InProc at 0CB348B13C563CA5641657E3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241231220, false, "756bfd1f-197a-486c-aa8b-00af6b77cc21",
+			"@@@InProc at 0CB348B13C563CA5641657E3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241231760, false, "57b0e2e3-ed84-4d7a-826a-ee07718a5910",
+			"@@@InProc at AB80AEC47B755C041C5A3179", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241236340, false, "85cf698c-9d6e-413d-87ea-b7568c44d4d7",
+			"@@@InProc at 3A232E5556B45E37FC94C9F5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241237030, false, "ac87dbd1-8ab2-4135-b5af-a457fc5d436d",
+			"@@@InProc at AB80AEC47B755C041C5A3179", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241237100, false, "1820f9e7-3ae7-4c53-8948-e9d1cbf012df",
+			"@@@InProc at 3A232E5556B45E37FC94C9F5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241237990, false, "2dd7c56b-6c10-4401-8d3c-fafa39e9152c",
+			"@@@InProc at 06DF9E2BF9C237021CDF6362", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241243940, false, "12f3dc45-493d-48c0-9dd7-3d97c96aef9e",
+			"@@@InProc at 06DF9E2BF9C237021CDF6362", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241244550, false, "b35c18f5-c4ea-4235-a70d-ad3e843055fa",
+			"@@@InProc at 1DD49A7B9B13E3BFD7A0A01D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241245160, false, "6198aee0-c0d7-4c5b-a9ac-a23e7cba4448",
+			"@@@InProc at 1DD49A7B9B13E3BFD7A0A01D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241245720, false, "33a5fa87-4b88-43f4-88ef-8e03f309b0c6",
+			"@@@InProc at 86075A9E2489F75256F192C3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241250150, false, "68a49603-790e-4a4b-9f4e-994fae4c3787",
+			"@@@InProc at 86075A9E2489F75256F192C3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241250830, false, "d00a06f8-9626-4bf0-989c-8414502f73d5",
+			"@@@InProc at 83B89A17F9DE7DCAE13E94C8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241251870, false, "56154664-23bc-4d35-8c22-e6fe69b56d2d",
+			"@@@InProc at 83B89A17F9DE7DCAE13E94C8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241252490, false, "e9ffaa87-e951-4281-82e1-bed3f6dcbdde",
+			"@@@InProc at A49D10FAAF1EEC79A09A6A8D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241257910, false, "14e2bf74-89fe-4f84-baa7-ffbb7c798ff2",
+			"@@@InProc at A49D10FAAF1EEC79A09A6A8D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241258590, false, "6f1987fc-cf25-45c0-bd9c-9612ebe51a50",
+			"@@@InProc at C62E300E19475FD8672698C1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241259310, false, "846c417a-3061-4068-9815-a0b933d3c1c4",
+			"@@@InProc at C62E300E19475FD8672698C1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241260270, false, "57430e73-bb61-4a87-847e-05041e360bf9",
+			"@@@InProc at A497CAB5F4385078CAC502B3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241264830, false, "81678403-db3f-495e-99ba-da92001a5597",
+			"@@@InProc at A497CAB5F4385078CAC502B3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241265450, false, "6687ce03-fefe-4824-8b02-2032baba93ae",
+			"@@@InProc at F00C36179C149475C2AEE502", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241266200, false, "322123a5-155e-4339-810c-4a2cbebfa5e9",
+			"@@@InProc at F00C36179C149475C2AEE502", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241267050, false, "1eade60c-9501-41f5-81e8-3c04059e2259",
+			"@@@InProc at 773E2FE0AA57B76811B33D2A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241271540, false, "55fa97cd-a14c-44d5-b152-faa4c18527ff",
+			"@@@InProc at 773E2FE0AA57B76811B33D2A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241272080, false, "d658d752-4f29-4eb3-8fe9-ba1e2a3705bc",
+			"@@@InProc at CCBA0F2D05FAF72BE10AF2FE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241277390, false, "8c7dc27d-2a00-46eb-a546-7e2fa34870be",
+			"@@@InProc at 26519BC270F5FF46F92E040E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241279020, false, "8aab4fc2-0dc0-4923-8e59-f26c3d0143e8",
+			"@@@InProc at CCBA0F2D05FAF72BE10AF2FE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241279100, false, "aa4a5221-38b3-4a46-acb7-ac1452a752a4",
+			"@@@InProc at 26519BC270F5FF46F92E040E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241280470, false, "4e809349-bab3-4895-bb4c-d18686b0ca4c",
+			"@@@InProc at EC809C8AB36AA4B9BD050331", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241286870, false, "dcaa1dc3-b836-44cc-9135-f5fec86f70bb",
+			"@@@InProc at EC809C8AB36AA4B9BD050331", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241287490, false, "0e46c64b-fe79-45f9-847f-53549a410a5e",
+			"@@@InProc at 83D9E5C545DF96B1557B7496", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241288200, false, "4fd54d21-2d35-423b-a7ea-b70122ce0b8a",
+			"@@@InProc at 83D9E5C545DF96B1557B7496", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241288750, false, "e62e1e69-9944-411c-a904-65e333c6179a",
+			"@@@InProc at 5CE4767D9CF4D89DB0588FAC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241294430, false, "447be62f-8d90-4f33-ba45-9079fd1c14a1",
+			"@@@InProc at 5347B53B84726C1A1EC913C5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241295420, false, "c263fbc7-07c3-4589-a0d7-afabc163c6ba",
+			"@@@InProc at 5CE4767D9CF4D89DB0588FAC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241295490, false, "aac740c8-ad76-4271-8ee0-469848796309",
+			"@@@InProc at 5347B53B84726C1A1EC913C5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241296880, false, "c714ec24-c31f-412b-8685-91ac2eaac44c",
+			"@@@InProc at 42804ED5CF95616E43AD2061", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241304200, false, "57ba6156-1f3b-40f5-9dc8-e9f31d8382de",
+			"@@@InProc at CD6A10720973838510DCC22B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241304300, false, "c2dad4a6-9063-4639-96b0-dfe0f5133ae5",
+			"@@@InProc at 42804ED5CF95616E43AD2061", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241305610, false, "08b50134-e775-466b-b3d1-8f374be0276a",
+			"@@@InProc at CD6A10720973838510DCC22B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241305680, false, "d76ca304-1206-4c36-aac3-00afb3cd1bc5",
+			"@@@InProc at B7D7413D647884808A529BB2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241312540, false, "10abd2e0-55d8-43f3-a7c5-6181c094a08e",
+			"@@@InProc at 6004D3DD0F2C729D2C5DA94A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241312800, false, "916e7629-a703-4e65-bb8c-26e632d2c7b9",
+			"@@@InProc at B7D7413D647884808A529BB2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241313960, false, "30e06f27-ffdf-48b5-b524-19fd332679ad",
+			"@@@InProc at 6004D3DD0F2C729D2C5DA94A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241314000, false, "a93b52f3-2766-4482-87a2-0bc5e3140ea5",
+			"@@@InProc at CB0923EA7943143B74D89CA0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241320940, false, "b0ad5bdb-74ea-4c97-a3a4-cfd6a91c4b4c",
+			"@@@InProc at E740B0E5B73708D35C73749D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241321020, false, "70fb77cb-294f-4de2-a72d-cf2c31717231",
+			"@@@InProc at CB0923EA7943143B74D89CA0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241322100, false, "4a4b13ee-ba73-4c7a-9fcf-81a8fc927313",
+			"@@@InProc at E740B0E5B73708D35C73749D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241322160, false, "5c7b3f94-30cb-438a-af37-4473f0c91696",
+			"@@@InProc at 8D7F293C0449E7024AB0FEF4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241327670, false, "a07b6c65-e2dc-4a1e-898a-4be9d13004a2",
+			"@@@InProc at 0322462C1C2CD7B2C60A0125", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241328250, false, "be5c3f71-a6b9-4e59-9d66-c9fff999267c",
+			"@@@InProc at 8D7F293C0449E7024AB0FEF4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241328310, false, "96ad8d4b-838c-4c0f-b9dd-1ad782f3710f",
+			"@@@InProc at 0322462C1C2CD7B2C60A0125", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241329220, false, "086a0705-d85d-46f6-97b5-3e29c9768dc7",
+			"@@@InProc at 414A576C9DD3EFDF8E96CED4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241334770, false, "25dee78a-901e-40eb-ba0e-7b9e2a6dcb9d",
+			"@@@InProc at 414A576C9DD3EFDF8E96CED4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241335540, false, "f6a3ffd2-aea7-426b-9aa3-a55d237bc459",
+			"@@@InProc at 87207583F4B29758A77DA161", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241336260, false, "b061a13f-ea1c-40a1-a599-c743651f00e2",
+			"@@@InProc at 87207583F4B29758A77DA161", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241337030, false, "87e76d66-492b-4f11-a633-9bc6c95cdf61",
+			"@@@InProc at D8AA1D296FF6086F72121AA3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241341760, false, "1979aa64-9ae3-4e1b-ae95-5975a711df69",
+			"@@@InProc at D8AA1D296FF6086F72121AA3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241342480, false, "c6a7a57a-1169-46c3-b429-4c8e8ac9b5a3",
+			"@@@InProc at 3F774C97C829CB3A24192B3E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241343830, false, "20ce14d7-668c-4e96-b534-52f10837400b",
+			"@@@InProc at 3F774C97C829CB3A24192B3E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241344550, false, "e22f45f7-028f-4773-970c-aac2f91450a9",
+			"@@@InProc at 7FC7D74742DB059AA85B67A7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241349610, false, "e6fdb82e-ecfa-4fd8-9857-7e967fd01c12",
+			"@@@InProc at 7FC7D74742DB059AA85B67A7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241350950, false, "0dc4d342-a4a7-434b-9d57-a9b1aa506440",
+			"@@@InProc at F9BF8E1329EA0130FFCEB445", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241352480, false, "58f67941-81c2-4298-ba2d-8a464ce50dca",
+			"@@@InProc at F9BF8E1329EA0130FFCEB445", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241353730, false, "2c5d186a-0706-45aa-9626-cd7b9005d90f",
+			"@@@InProc at 89AF12A4487B4EDCCE0CA844", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241358330, false, "baae55d3-55e9-4f72-95a7-7ef74a7aab6b",
+			"@@@InProc at 89AF12A4487B4EDCCE0CA844", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241359700, false, "3712cde9-9d15-4265-bce4-c0a46096ff5b",
+			"@@@InProc at 0544081497DE4E04BCFFDBB4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241361270, false, "6dbf7142-b9f4-4a6a-8567-e0e2273e109e",
+			"@@@InProc at 0544081497DE4E04BCFFDBB4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241362380, false, "4390c883-ef16-4b75-bc40-e86ee7079369",
+			"@@@InProc at 0D10D75A9D93D178A5597AE9", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241366250, false, "5fe16c87-b921-4ed4-af95-07ae0542ba2c",
+			"@@@InProc at 0D10D75A9D93D178A5597AE9", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241366880, false, "1b07416d-bb9a-43e0-9b35-4d9f476b1ec3",
+			"@@@InProc at 1DA1CC95FC58ED3607BF764B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241367900, false, "5b6adc6c-e922-4f43-81c3-f601321424b3",
+			"@@@InProc at 1DA1CC95FC58ED3607BF764B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241368440, false, "c65189db-809d-42ae-b8c0-67e4669e3699",
+			"@@@InProc at B0BCA8189EC7F2D49C1EDB4D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241372490, false, "0c272df7-3888-4cca-bbd5-ee0351e7089c",
+			"@@@InProc at B0BCA8189EC7F2D49C1EDB4D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241373100, false, "2e352985-ce97-404b-99f0-a33160c294e0",
+			"@@@InProc at 824AFE50280BA9680E95DBDD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241373660, false, "45d86719-173b-4075-9d49-036d2180af06",
+			"@@@InProc at 824AFE50280BA9680E95DBDD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241374190, false, "fe95f4e2-4396-431a-8b91-afda99a7beb0",
+			"@@@InProc at DBADA64196643E8DE5725458", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241379680, false, "8389e9a4-3bd0-4729-aa05-343d6f3f0832",
+			"@@@InProc at DBADA64196643E8DE5725458", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241380480, false, "6196da5a-0c07-4506-b268-312095c59934",
+			"@@@InProc at 557DCB0282A9CDEFE76171C9", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241380810, false, "c59e0eff-f7c4-4027-8286-e4d4d77b563c",
+			"@@@InProc at 557DCB0282A9CDEFE76171C9", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241382650, false, "1f91ddb1-435c-4376-87b2-954c33b5f0d6",
+			"@@@InProc at 1C42353C55BEFCFDDEC4FBC6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241388800, false, "94cdca31-202c-43e8-82a7-736444fbc83c",
+			"@@@InProc at BF75234910DA5454865EB9C8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241389380, false, "5b54ae27-0452-422d-8041-12d55ec1c95e",
+			"@@@InProc at 1C42353C55BEFCFDDEC4FBC6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241389470, false, "b43b0951-7509-40ac-a9e4-16ffebcbe1ff",
+			"@@@InProc at BF75234910DA5454865EB9C8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241391230, false, "c9ed88ae-5bfc-4e1d-bd38-cc8f81cb9dc2",
+			"@@@InProc at C6B401D7077ADF5C0D1B5840", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241395980, false, "e8100d38-154e-4efa-9b4f-68716dfd50fc",
+			"@@@InProc at C6B401D7077ADF5C0D1B5840", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241396700, false, "16c80de5-8781-4360-b3ef-c3c68ee78cbc",
+			"@@@InProc at 781EE97C171A997C26F9B767", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241398210, false, "3a124e12-115f-4374-b8e8-4f78fa3b3f4f",
+			"@@@InProc at 781EE97C171A997C26F9B767", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241399400, false, "81af8bab-a8ed-40d4-a2fa-369548bb5db8",
+			"@@@InProc at 540A064D46B6A13CFDBF3124", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241401880, false, "ad17d6b4-7bfc-4e50-b056-5c6df12f683a",
+			"@@@InProc at 540A064D46B6A13CFDBF3124", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241402420, false, "9cccc938-b6a9-4c7a-9dd1-329ac812d541",
+			"@@@InProc at 9A31FA9BE925C1981ED546D5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241405480, false, "1462f881-5ad4-4843-88ba-da4d8ee3fbdc",
+			"@@@InProc at 9A31FA9BE925C1981ED546D5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241406030, false, "da64b682-3293-459d-9131-10b616429c54",
+			"@@@InProc at AB4455C6DF8FD7B9574300AD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241407950, false, "7c510855-2fe2-41bb-8f84-90cc3ee332db",
+			"@@@InProc at AB4455C6DF8FD7B9574300AD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241408640, false, "2205845e-5e31-4458-b672-a2ab38cfb242",
+			"@@@InProc at 57761A0FD43399BBC6F63DD3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241412240, false, "26f52abd-173e-4c5c-9168-540819b963a7",
+			"@@@InProc at 57761A0FD43399BBC6F63DD3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241412960, false, "f3f20068-63a8-4405-b94d-af420bcf5007",
+			"@@@InProc at FAB9D8852ABC2A9BF643738F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241415120, false, "83449a6f-2a65-4337-b1ae-6172191f18c0",
+			"@@@InProc at FAB9D8852ABC2A9BF643738F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241415900, false, "3d36157e-171c-4d05-9de5-34407a554bcd",
+			"@@@InProc at C0EFAC72F4EA431458B465FD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241419210, false, "1d562a6b-ce03-40c5-b4e8-a9874a05fee9",
+			"@@@InProc at C0EFAC72F4EA431458B465FD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241419740, false, "b5a4cabf-dbb2-428a-be66-fa2d1dfb05b9",
+			"@@@InProc at 728DB0ADA7615B2DA82DB922", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241421730, false, "f515a600-1308-4d9b-9c7a-ee8dc9e69e89",
+			"@@@InProc at 728DB0ADA7615B2DA82DB922", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241422440, false, "c6e124f8-393a-4b19-89f4-7488e1c7c127",
+			"@@@InProc at E8479A301E6E68B5EEA31635", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241426060, false, "82a940f4-3a59-4b63-baf6-27ae8ca4d2d5",
+			"@@@InProc at E8479A301E6E68B5EEA31635", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241427140, false, "2e42370c-4e6e-4e6e-96db-a8f24bc9c87c",
+			"@@@InProc at 60AB6F44E83BEDD862822127", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241428210, false, "e28585c7-1ebf-4fda-a11b-092b7f1943a8",
+			"@@@InProc at 60AB6F44E83BEDD862822127", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241428800, false, "128e0423-03f1-4504-b037-c138d92572ef",
+			"@@@InProc at B25314CDCE2F47360A6CD659", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241432950, false, "9854e866-1c81-48e0-816e-0d2ec680ffde",
+			"@@@InProc at B25314CDCE2F47360A6CD659", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241433690, false, "86870c5e-048c-4aa8-bf3b-b86f55a5f6fb",
+			"@@@InProc at 151955D8B91A38639966DD66", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241434750, false, "43b32f3c-3dca-44e5-b417-2c5915335b05",
+			"@@@InProc at 151955D8B91A38639966DD66", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241435270, false, "8dc7a298-b82f-4d84-9cbf-0c61d8d44443",
+			"@@@InProc at 982C6A548D253188B8E6A69A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241440020, false, "7d4ae655-81f9-4629-9337-621feab0dbf0",
+			"@@@InProc at E698E4429DB43ED866C855FE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241440730, false, "1ae4ee03-c425-45e4-8bed-d92ae95ae5d9",
+			"@@@InProc at 982C6A548D253188B8E6A69A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241440790, false, "824f8c1b-9c94-4786-af43-c130d45acf38",
+			"@@@InProc at E698E4429DB43ED866C855FE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241441770, false, "c3b8b4f9-cc6f-4b81-8f4a-fe7105a8aa11",
+			"@@@InProc at D5954A0D0AA5A83F22749C0D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241447740, false, "1d2075e7-bb66-4eb6-814a-23f07ca16064",
+			"@@@InProc at D5954A0D0AA5A83F22749C0D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241448280, false, "64354e91-550e-4d6f-9959-29f209c5c28c",
+			"@@@InProc at 9413527543B8D90CBE78D34E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241449020, false, "e321e651-db25-49c0-911e-7d2d58f1bd6f",
+			"@@@InProc at 9413527543B8D90CBE78D34E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241449740, false, "61fe9ddb-08cf-4d6f-b183-fef646686b9f",
+			"@@@InProc at 098F7BCEC74F993C219945FA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241454710, false, "35596d0a-179b-4584-a5b2-2919866e65a7",
+			"@@@InProc at 098F7BCEC74F993C219945FA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241455490, false, "aabe5809-c5ff-4469-869e-a7a4ebc97e18",
+			"@@@InProc at D647108EDB67F5784238AD6C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241455550, false, "7009d956-a507-48f7-abc0-43540468c9a4",
+			"@@@InProc at D647108EDB67F5784238AD6C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241456540, false, "12449114-135d-4b38-8fe1-cbf376b56d8f",
+			"@@@InProc at 9120FA8425884A192F819C73", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241461150, false, "0ce018ad-7d9d-4918-836c-3eec18fe94ef",
+			"@@@InProc at C57326DD73ED6B4B4194882D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241461780, false, "ab6b8c8c-07c6-44fe-ad0a-4fab1f6cf219",
+			"@@@InProc at 9120FA8425884A192F819C73", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241461840, false, "1afbbdfb-c819-45b2-9865-f98edeffb421",
+			"@@@InProc at C57326DD73ED6B4B4194882D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241462880, false, "11570590-76e8-4999-9caa-328419084073",
+			"@@@InProc at 9121A35D7896A95EB92326AC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241467700, false, "b949e508-32b7-4f96-986f-8ecd8ec606e8",
+			"@@@InProc at 9E9F466CBA98432AC7F8EA98", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241468380, false, "b853cc77-7ce0-4c83-989e-2b39666e50bd",
+			"@@@InProc at 9121A35D7896A95EB92326AC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241468430, false, "83df0b02-8c19-4d93-8c42-3060f545085b",
+			"@@@InProc at 9E9F466CBA98432AC7F8EA98", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241469380, false, "1c2857b0-2659-4dde-9253-0a47b455c4ff",
+			"@@@InProc at D8528F5063076EC1F296B141", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241474030, false, "04dd0801-9892-49c3-beb7-5b62be5f4853",
+			"@@@InProc at E1CCFF001A16545891CD21DD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241474720, false, "4d0b085f-5bc8-4bc7-9eb2-1074de9fec97",
+			"@@@InProc at D8528F5063076EC1F296B141", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241474780, false, "8516723c-a2e5-4ac5-ad34-13afa343326a",
+			"@@@InProc at E1CCFF001A16545891CD21DD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241475730, false, "193f21de-a558-4cdf-ac2b-829cd8ab1db2",
+			"@@@InProc at 8108C60B97E6D374B6565B43", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241480370, false, "4bcd8741-113f-4544-8877-290c3e578c9d",
+			"@@@InProc at 8108C60B97E6D374B6565B43", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241481140, false, "0609c803-6dfb-453b-bb63-dadbf33601f4",
+			"@@@InProc at D3C9FBB855CF0F292346C355", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241482230, false, "a81a6c1d-4771-49e7-8908-2a68ac256029",
+			"@@@InProc at D3C9FBB855CF0F292346C355", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241482910, false, "e76a3530-e64c-4602-b251-6b1fb55f6ed2",
+			"@@@InProc at 2275B7E7D653E6664D4C9880", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241486880, false, "3747fede-decd-4291-a9cc-302f33030f15",
+			"@@@InProc at 2275B7E7D653E6664D4C9880", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241487490, false, "53036649-192a-4cc0-9283-5b3fa41b2a05",
+			"@@@InProc at 1E1C4A6BCED488EE61E3DF55", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241488710, false, "c82f7f44-3050-4bb8-ba45-b468f21eeb1f",
+			"@@@InProc at 1E1C4A6BCED488EE61E3DF55", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241489350, false, "c5207fe5-deee-407c-8249-39eab46857d1",
+			"@@@InProc at 747FD7369F3777BD29C70740", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241492790, false, "d395b712-5721-48e9-b465-b6f1bcc8f6e3",
+			"@@@InProc at 747FD7369F3777BD29C70740", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241493340, false, "7f7036f7-9aae-431f-9205-1e637665e006",
+			"@@@InProc at 7A56461B20DF3CACE1B4052F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241495140, false, "dc3fc479-de88-4aea-9efd-e133dbef3d78",
+			"@@@InProc at 7A56461B20DF3CACE1B4052F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241495860, false, "a0c49ca1-da9f-473d-a58b-766dc5ef4a7e",
+			"@@@InProc at 81D86680E944EA4F5555275E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241498530, false, "57e35db4-aaf3-41be-9c5f-844157942425",
+			"@@@InProc at 81D86680E944EA4F5555275E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241499200, false, "6c2ba59d-0ab5-4e5a-8d91-9383e0e25469",
+			"@@@InProc at 56FBD833AF8A404175E17077", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241501150, false, "b6db7bbb-a097-422a-9987-bcf92c9e7185",
+			"@@@InProc at 56FBD833AF8A404175E17077", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241501860, false, "64d4ae6d-d706-4f8f-98c2-f60e45585a7c",
+			"@@@InProc at 200BB13AAC7F61B08462E00C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241504440, false, "19ac7336-dec3-4c9f-aa77-aaf79bc52f7d",
+			"@@@InProc at 200BB13AAC7F61B08462E00C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241504980, false, "6af659e3-a324-4a1f-999c-c8ee348089e3",
+			"@@@InProc at 4E27A9018202C4D1E72D3069", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241507110, false, "a746a164-19de-493d-a310-16cfdfa2e7c2",
+			"@@@InProc at 4E27A9018202C4D1E72D3069", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241507750, false, "0f02a37d-f592-457e-aec7-f534c9ed1b61",
+			"@@@InProc at BB404DE7E3D31F86CABE36CD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241510470, false, "152e22e7-80c9-4212-b808-1bb1d1464095",
+			"@@@InProc at BB404DE7E3D31F86CABE36CD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241511000, false, "40477b88-e7e3-4430-921b-454c6e676910",
+			"@@@InProc at 8DD0AB06CDCE3B3CCE2548F8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241531110, false, "9a0b72d9-8811-467f-8bf2-033aaa23c80a",
+			"@@@InProc at 8DD0AB06CDCE3B3CCE2548F8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241531670, false, "0c8dd472-5a14-42b1-9e8b-ef61d14d2c2a",
+			"@@@InProc at 126233D0E28FA6ECE58A45B1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241535570, false, "f02db664-b67a-4d5d-a042-470315f1f868",
+			"@@@InProc at 126233D0E28FA6ECE58A45B1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241536390, false, "94762968-73b5-42e0-a838-059c7484b34d",
+			"@@@InProc at 000F4D00233B9196836CE529", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241537410, false, "1812fdc5-9ef1-45a8-bd94-a44087a54ef5",
+			"@@@InProc at 000F4D00233B9196836CE529", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241537930, false, "ef718a8a-f977-4775-a3c7-2ac246efccc5",
+			"@@@InProc at BB67EF0DC03D60241E9D8FBB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241541790, false, "0b1e34c9-3be8-4edc-9de0-066ce968d06e",
+			"@@@InProc at BB67EF0DC03D60241E9D8FBB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241542480, false, "6938a711-36be-4906-a677-78e66837ed91",
+			"@@@InProc at 892135A6FA5FE20E7EAF98CC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241543520, false, "ffa194f0-2148-424b-8865-4d9b4187362d",
+			"@@@InProc at 892135A6FA5FE20E7EAF98CC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241544310, false, "37327c02-d77b-46ff-a281-1e15cebd2491",
+			"@@@InProc at F3104CC47F801195D180D187", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241548460, false, "110f44ac-4689-4854-aef6-b56691e3cebc",
+			"@@@InProc at F3104CC47F801195D180D187", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241549260, false, "37765632-8af6-45d5-a1ab-39675974e692",
+			"@@@InProc at BBBED5C3C814B30E8AA2733B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241553000, false, "92989081-f1bd-40be-b35b-6e83b47a3552",
+			"@@@InProc at BBBED5C3C814B30E8AA2733B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241553560, false, "98f85db7-df9d-48b3-ad96-50a4c9167ea7",
+			"@@@InProc at 45E30100833A290B7D933350", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241555280, false, "43a39c84-9421-46a4-9b8f-46aba9ba59d5",
+			"@@@InProc at 45E30100833A290B7D933350", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241556150, false, "1eb9ff22-7751-43ca-a353-ad97d28d5e0f",
+			"@@@InProc at 054AE32C3131C64EFCDEB7FC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241559560, false, "9938a611-7855-4899-84f8-b67dddbdd277",
+			"@@@InProc at 054AE32C3131C64EFCDEB7FC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241560280, false, "5b7a7749-6714-4e62-bf7b-33ed32c9f70e",
+			"@@@InProc at 97B2F0A80C70AD275A58535E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241561930, false, "113712ee-6cfe-4200-90da-9d84c0ed7f47",
+			"@@@InProc at 97B2F0A80C70AD275A58535E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241562520, false, "ffc4ddbc-c634-465c-831e-5a3862b329e2",
+			"@@@InProc at 432512E752B27203B8E7891F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241566030, false, "a62361bc-8045-4f90-a687-6005c623267f",
+			"@@@InProc at 432512E752B27203B8E7891F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241566770, false, "8d6bd4d8-6b3b-4fd4-8f60-1b95a99d0264",
+			"@@@InProc at 07AB35465301BE9F7287EEA3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241568570, false, "ab4eaad7-9f73-4d06-85f2-601e56cc763e",
+			"@@@InProc at 07AB35465301BE9F7287EEA3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241569300, false, "64b6aad2-7d20-4519-b33c-39f90dbadf6f",
+			"@@@InProc at 47953BEFAB916A3B775CA516", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241572670, false, "ae71a8eb-6567-439f-8105-27cab7641152",
+			"@@@InProc at 47953BEFAB916A3B775CA516", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241573210, false, "9d47be81-2b66-489c-ab09-4ce7229d892f",
+			"@@@InProc at 5E87B5CFDA5B1F53E9661438", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241574810, false, "cfecdeb8-5b32-49f9-b8a3-733e70952b92",
+			"@@@InProc at 5E87B5CFDA5B1F53E9661438", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241575360, false, "0177bd52-1a03-4d78-b9f0-8c29d21de0dc",
+			"@@@InProc at 19B6904ED242E9E604E9602A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241579380, false, "7bc07176-e3b1-407d-9feb-f4f8809f6e1a",
+			"@@@InProc at 19B6904ED242E9E604E9602A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241580090, false, "6e4b0674-270a-4c13-a29a-afa6eb99322f",
+			"@@@InProc at 9D33F6220B8C6F6C6C0EAD03", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241581140, false, "5505fb89-2053-49cb-b0b2-8cd43f76d4a0",
+			"@@@InProc at 9D33F6220B8C6F6C6C0EAD03", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241581680, false, "18cb021c-4faa-41b9-b9cc-0c4257526320",
+			"@@@InProc at DE605949F90E42C0CA6EC925", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241585900, false, "9f9e2185-f321-4745-a07f-36735e3a37da",
+			"@@@InProc at DE605949F90E42C0CA6EC925", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241586620, false, "821b8d0d-38f9-4959-baf4-2cfd6977d507",
+			"@@@InProc at 1F73297E5DEC37741325D0E1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241587940, false, "c53867fb-154a-443d-81e9-cfae567d5be3",
+			"@@@InProc at 1F73297E5DEC37741325D0E1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241588650, false, "11420c77-e21e-4ca0-bb8a-c01a040fa5d5",
+			"@@@InProc at 4D5D9E564882897F3F767B9B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241591980, false, "8012bf85-7b37-41e5-9ecf-f3d9f093645e",
+			"@@@InProc at 4D5D9E564882897F3F767B9B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241592530, false, "af1b20da-d091-4b86-a191-518567953472",
+			"@@@InProc at 01C3D6F5196AD50C29CB0E7E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241594130, false, "c79cc733-7d86-4dbf-a818-b256bc606151",
+			"@@@InProc at 01C3D6F5196AD50C29CB0E7E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241594840, false, "991199b1-4869-4456-bd78-e43a9aee54ea",
+			"@@@InProc at 23CA38ACB7623DD6FBA0CAEA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241598130, false, "96c6383e-0d02-405d-bb85-5b7a58121262",
+			"@@@InProc at 23CA38ACB7623DD6FBA0CAEA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241598760, false, "ef44c59b-d03e-4bcb-8f78-e8dc3ac1a16c",
+			"@@@InProc at DAA74FCE5FF8D39D6FFD8F90", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241600300, false, "0741d398-482a-4a41-a6fa-476a44470b4c",
+			"@@@InProc at DAA74FCE5FF8D39D6FFD8F90", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241600820, false, "b2917bc2-cda3-4e54-9ea8-a41b0b6943f1",
+			"@@@InProc at 9D700181865BE969D96A1CDB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241604020, false, "671f4579-feb7-4c8d-bccb-bd3222f88515",
+			"@@@InProc at 9D700181865BE969D96A1CDB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241604550, false, "16e356d4-ea4a-4253-9e33-9040de15a0ce",
+			"@@@InProc at 1C9879E4E678F870C6EB8758", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241606230, false, "69481acd-cba3-40d0-849d-b4a1ea98c778",
+			"@@@InProc at 1C9879E4E678F870C6EB8758", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241606910, false, "1cb84126-4795-4d32-b113-1bc50dabb92c",
+			"@@@InProc at 48E5F64EB523E24436416989", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241610840, false, "5dafaff5-e4f2-4eb0-ad09-2f1041a3f62b",
+			"@@@InProc at 48E5F64EB523E24436416989", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241611370, false, "89ee5d22-4e26-4fdf-abd3-6790373f7b8b",
+			"@@@InProc at 7F05546FB01F1EA17BA9DFF5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241612850, false, "48f38ac4-68b2-413f-bb16-1ae5384b238a",
+			"@@@InProc at 7F05546FB01F1EA17BA9DFF5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241613370, false, "0e465db6-6844-4be0-a576-648c38cb494e",
+			"@@@InProc at D12CF19934A24E532C77A958", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241617540, false, "756ab397-74e8-496c-8d6e-76dafdc7bba7",
+			"@@@InProc at D12CF19934A24E532C77A958", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241618070, false, "549da28e-1c6c-44dc-8a0e-2ae6a4df7f35",
+			"@@@InProc at 9507BB507952010A02B63AA8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241618630, false, "538a619b-71f6-433a-b778-f76403e0557b",
+			"@@@InProc at 9507BB507952010A02B63AA8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241619150, false, "ce34c89e-f1d9-4c80-a08e-f3e9560c8ad3",
+			"@@@InProc at C29CEA8171A098465EB4C29F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241623510, false, "d7d32895-d142-45c1-8fc8-93d1d4fffeab",
+			"@@@InProc at C29CEA8171A098465EB4C29F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241624100, false, "1e34cdf9-fc90-4bf6-a627-abb51bc65675",
+			"@@@InProc at 1778CA3FC3942519566547B5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241624690, false, "d441543e-a877-4b1b-8d27-792ef448186d",
+			"@@@InProc at 1778CA3FC3942519566547B5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241625230, false, "bf0e2ff5-54f2-4fc4-bf1f-cbdeb6de3e07",
+			"@@@InProc at 2AEC72832A5457BA64C646B3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241629380, false, "3d6477e1-ca78-4ac6-aee2-443439a952cc",
+			"@@@InProc at 2AEC72832A5457BA64C646B3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241630040, false, "153fe3c6-0439-47f2-bf4d-4df1cb967505",
+			"@@@InProc at FA68C68A196A1DF1BE7B128C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241630620, false, "be00d860-3cd5-4d39-becb-32a16bcba83b",
+			"@@@InProc at FA68C68A196A1DF1BE7B128C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241631160, false, "d0894ca9-94b4-4563-b701-4dfa1f634e53",
+			"@@@InProc at 2859D4EB224C9D0C64146D33", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241635430, false, "fbd92adc-cde7-4c4e-9577-e884aaac1093",
+			"@@@InProc at 2859D4EB224C9D0C64146D33", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241636040, false, "c7d7ab3a-509d-4f4a-b276-816d4ff93f10",
+			"@@@InProc at 6963B512A404910DA9405B2F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241636560, false, "22226b8f-97e3-4352-9d40-5a7e504dc23c",
+			"@@@InProc at 6963B512A404910DA9405B2F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241637090, false, "d6609167-0d4d-457b-a339-6c88d283ee54",
+			"@@@InProc at 5CF932E6463AE54AD9869050", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241641460, false, "b33205e2-52d4-4148-897d-5add943e4c19",
+			"@@@InProc at 5CF932E6463AE54AD9869050", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241642090, false, "ca125e62-3118-4f54-a90e-0587435ef2d8",
+			"@@@InProc at 162444A4FAD0A19AE2CCE2F2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241643110, false, "513561a7-ebc9-4623-9938-b77ab7baf884",
+			"@@@InProc at 162444A4FAD0A19AE2CCE2F2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241643850, false, "ed3ad1e6-5f81-45ce-91d0-04cb0c7a0673",
+			"@@@InProc at D0E91D613C6C655D36F5CCE9", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241653100, false, "a8394f54-49bc-497a-984f-0b1db68bfdaf",
+			"@@@InProc at 3F444740848D7102BC5EE6BC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241654000, false, "04f0ba99-4767-4e31-93dd-5493c31d9200",
+			"@@@InProc at D0E91D613C6C655D36F5CCE9", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241654090, false, "601c7652-1d70-4a3e-b96b-6992f4154248",
+			"@@@InProc at 3F444740848D7102BC5EE6BC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241655240, false, "ca9cd470-4a90-4396-b488-1da65cc1363d",
+			"@@@InProc at 2C466F57786EAABBE12C729A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241660220, false, "05c41e41-eb13-43c7-b1c1-5f92d67b0e13",
+			"@@@InProc at 2C466F57786EAABBE12C729A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241660770, false, "dc0af319-d211-40ff-a395-066d284ac0e0",
+			"@@@InProc at CCE1C16931447E18D6933309", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241661330, false, "a62316bb-9d11-48d7-b02b-dfd02cf32151",
+			"@@@InProc at CCE1C16931447E18D6933309", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241661950, false, "26e8b110-e2e4-4327-afe8-36ea33b650d3",
+			"@@@InProc at 6E1E3669E0EF4598CB52A352", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241667140, false, "0fb618fd-1b0c-436d-8508-ae89bd1c6f80",
+			"@@@InProc at 6E1E3669E0EF4598CB52A352", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241668220, false, "aeea6330-474b-426c-a3f1-cc4685cd44ce",
+			"@@@InProc at DC59AAB57FB3DB0D916ADD40", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241668280, false, "a311294e-b37b-44cc-a5fc-692e6c2cebe7",
+			"@@@InProc at DC59AAB57FB3DB0D916ADD40", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241669750, false, "30ec52b4-a808-44ed-90cd-968de9c06f57",
+			"@@@InProc at 9B8C8BC7F51F0773D7EEF47A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241674010, false, "388aeb65-f03b-4524-8160-153902bab11b",
+			"@@@InProc at 9B8C8BC7F51F0773D7EEF47A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241674720, false, "59adb681-d68a-4488-a98e-b0996c3c9fc3",
+			"@@@InProc at D9EA3D579279F5BFD7A8D21A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241675650, false, "de8f7e41-7f21-496b-a160-c96e293b7cc0",
+			"@@@InProc at D9EA3D579279F5BFD7A8D21A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241676240, false, "2c78c2b9-2bdc-4992-b292-02dbfa05903d",
+			"@@@InProc at 50641EEB84E6E02E305A9307", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241680130, false, "2e2d72a4-e091-4391-9b78-13e597fec794",
+			"@@@InProc at 50641EEB84E6E02E305A9307", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241680810, false, "2f0358ff-3fb5-42ea-a2ca-d019447758bb",
+			"@@@InProc at 6BEEA1D110EB62AFB1943FC8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241681940, false, "a751f2d5-02d3-4738-94a3-7c9c97dfe89a",
+			"@@@InProc at 6BEEA1D110EB62AFB1943FC8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241682490, false, "9585ad58-f07b-4afa-a653-42185deed528",
+			"@@@InProc at 03FBCA68AAC7EB3CD7B9B605", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241686110, false, "a068c2b1-4b33-4e21-aae1-c36f6a8758cb",
+			"@@@InProc at 03FBCA68AAC7EB3CD7B9B605", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241686840, false, "9efcfb2a-04fb-4655-b84d-7d805ccbc541",
+			"@@@InProc at 774FF6A125410A8F5E008664", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241687900, false, "a623e8ec-1227-4d2e-b1b9-d1300486f832",
+			"@@@InProc at 774FF6A125410A8F5E008664", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241688430, false, "8bed8851-f13d-43d0-bcef-6ce4cec21f20",
+			"@@@InProc at 4BBF95CBC3E931A5DAD75A2E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241693080, false, "f0321d1c-7a73-4b52-93f2-fb9d0b8f717c",
+			"@@@InProc at 4BBF95CBC3E931A5DAD75A2E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241693660, false, "8e558a38-d907-4627-8190-4ffe656d4879",
+			"@@@InProc at 8B5FC895EA7B91199862755F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241694680, false, "935ddd57-ab5b-4c76-bf6d-87874604850d",
+			"@@@InProc at 8B5FC895EA7B91199862755F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241695220, false, "7f5bdb9d-2c6b-41e4-ba68-a04227774dde",
+			"@@@InProc at 6CAA096C1F9EB57CFF9AD649", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241698860, false, "c465dd9c-acee-40d3-b6fd-1db814cbc7ae",
+			"@@@InProc at 6CAA096C1F9EB57CFF9AD649", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241699670, false, "1095757f-a4bf-4f0f-a64c-57cefbbdc347",
+			"@@@InProc at 679B4220100CD18D4DB22DDC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241700590, false, "cd6a8191-e24a-4f4e-8197-aeaeb9c73827",
+			"@@@InProc at 679B4220100CD18D4DB22DDC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241701170, false, "d58cf1c8-e76a-4ba8-8476-be9bc2679a59",
+			"@@@InProc at FE78F0BA7915949C2360A5C8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241705630, false, "85888a08-1267-4010-a025-05830b773089",
+			"@@@InProc at FE78F0BA7915949C2360A5C8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241706310, false, "6d95d87a-3195-4cda-b744-7e540a94dd71",
+			"@@@InProc at 04DE36D90F2CF07385FDA8EA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241706920, false, "482be7cb-6be9-4e7b-9b36-54257ffe955d",
+			"@@@InProc at 04DE36D90F2CF07385FDA8EA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241707450, false, "bd6872d5-08b6-4a67-991d-88eb02424b69",
+			"@@@InProc at 24C1699D898F07087373CFA8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241711730, false, "113e93b3-b5ae-4f70-ad56-ff12b0a7a9b4",
+			"@@@InProc at 24C1699D898F07087373CFA8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241712260, false, "288f921d-1248-4973-9f83-15497f477b6d",
+			"@@@InProc at 86834E997F1BF44BBAB5ACB0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241712760, false, "8b010dd8-e92f-440e-be60-a5f334d6ee8c",
+			"@@@InProc at 86834E997F1BF44BBAB5ACB0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241713380, false, "5091524c-7997-439c-b213-bd68913a41c1",
+			"@@@InProc at 1122DC8C27AEF4F3F67787CA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241717210, false, "b1c384e1-e3de-4536-adb3-ddd258ad680b",
+			"@@@InProc at 1122DC8C27AEF4F3F67787CA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241717820, false, "0017815c-3937-4ae1-8969-e1189b457eb6",
+			"@@@InProc at 23AE11C752CAA8AD35270EBC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241722570, false, "78225f5b-090d-43f6-8f3c-e7f7203f74ad",
+			"@@@InProc at 6BABBCA6D1558793A1E4F516", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241723290, false, "b6ba4ab6-c98e-4eab-bf43-5d53a2742a2c",
+			"@@@InProc at 23AE11C752CAA8AD35270EBC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241723430, false, "d9cfed80-db9d-407c-8408-6e54cc6187bc",
+			"@@@InProc at 6BABBCA6D1558793A1E4F516", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241724320, false, "209fc80e-40e9-4737-a86d-8b425ed5ccd9",
+			"@@@InProc at F7AEE919F9AA3D0829B99E3D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241729530, false, "2f2d91fb-5fcf-4f8c-a3de-5b5ef647a39a",
+			"@@@InProc at F7AEE919F9AA3D0829B99E3D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241730290, false, "02602259-5bdc-49e1-ada1-2f5ed6252090",
+			"@@@InProc at 0CE149506C185B14F19A7B84", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241732040, false, "dd2ab6c9-b866-43ec-91b9-f51c7288a5eb",
+			"@@@InProc at 0CE149506C185B14F19A7B84", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241732870, false, "9dfeca08-7c2d-460d-a1cb-68cbf5eae423",
+			"@@@InProc at 93718C31961093EE7E02C4A4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241735280, false, "57324904-7ac8-4ddc-b789-e05b6a3ed27b",
+			"@@@InProc at 93718C31961093EE7E02C4A4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241735810, false, "e2263204-ca16-48d6-beb6-be351ef9cd22",
+			"@@@InProc at 56756E80ADDF8531CFF2FDBE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241739740, false, "030a8d38-69f6-4bc2-a450-43d3d2882470",
+			"@@@InProc at 56756E80ADDF8531CFF2FDBE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241740520, false, "1a02843d-8188-40a6-bb84-a77167562ee6",
+			"@@@InProc at D8534E67A5FDD230FE7D00DB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241741210, false, "cfac162f-c7fe-4b38-9d8f-df4819ed8432",
+			"@@@InProc at D8534E67A5FDD230FE7D00DB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241741740, false, "e357faf8-4dd7-43da-9d7e-7fa741896ce3",
+			"@@@InProc at 3EBC061C477F5686ECFE8A7D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241747740, false, "6ca91759-7aea-4a1a-a99e-006e0076074a",
+			"@@@InProc at 3EBC061C477F5686ECFE8A7D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241748670, false, "6126cf30-8835-4201-8d4e-199e24e72699",
+			"@@@InProc at 07345F4A9C52DE33B82D8D7A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241749700, false, "faabec1c-ce15-40ed-9594-7a95ed10e08e",
+			"@@@InProc at 07345F4A9C52DE33B82D8D7A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241750910, false, "b88fb8fb-c987-4f9e-8219-ac25bb669c84",
+			"@@@InProc at 613EA131E3146957228D5C1D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241756440, false, "164f682a-edcf-4280-a076-f9506df76293",
+			"@@@InProc at 613EA131E3146957228D5C1D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241757310, false, "50980e31-c99a-417d-93d8-0ca71c7beb47",
+			"@@@InProc at DA3A043C41FC651A4097B6AF", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241759450, false, "2488cdf7-9846-475d-bc7f-fe647db41b59",
+			"@@@InProc at DA3A043C41FC651A4097B6AF", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241760120, false, "35100f7b-c7a2-4158-acfa-2328bf70ea7a",
+			"@@@InProc at 8AB834E5C1930FF91E24FFF6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241765620, false, "941f225b-ad07-47e1-ab5b-c55f54621a4d",
+			"@@@InProc at 8AB834E5C1930FF91E24FFF6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241766740, false, "104fe84a-e6bd-4c45-b52b-e3ac69bed338",
+			"@@@InProc at F75F73F3E21AD4B0F1BBC85A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241767990, false, "a52a0ddf-2ef2-4d3e-a4d3-473bed245a09",
+			"@@@InProc at F75F73F3E21AD4B0F1BBC85A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241768640, false, "eefcfb20-7bad-4581-9bbf-9acf1537ba2a",
+			"@@@InProc at F4EB4E28E099FB82952A4DBB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241775320, false, "a6c4f423-de37-4f35-9a3b-7e46d94ecc83",
+			"@@@InProc at F4EB4E28E099FB82952A4DBB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241776350, false, "29077599-babe-4173-8456-423e5b77c3b0",
+			"@@@InProc at 5F0E76C6A2C45F158C739C43", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241777460, false, "e70e9511-772a-455f-94e8-645b0adbcc68",
+			"@@@InProc at 5F0E76C6A2C45F158C739C43", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241779200, false, "43c2283b-7e93-43aa-82f3-65f618491d4b",
+			"@@@InProc at 1C7F6CF0E08BA0FF72317295", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241783800, false, "89b26b77-19e2-4fb0-aaef-51d06ef647a3",
+			"@@@InProc at 1C7F6CF0E08BA0FF72317295", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241784470, false, "f7edca67-66f2-4032-ba90-c98bb910ad2f",
+			"@@@InProc at 2ADC615DD6414787A3374D95", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241785820, false, "3b4fad55-3343-47cf-b3d8-13fbf028fa1b",
+			"@@@InProc at 2ADC615DD6414787A3374D95", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241786510, false, "1483e2d3-4dd5-4dce-ab33-2c7793ca6915",
+			"@@@InProc at B5F22CB787094C46D15686C5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241791020, false, "173a5b61-a7d1-4a70-9cb7-144bdbc07804",
+			"@@@InProc at B5F22CB787094C46D15686C5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241791870, false, "67adad2e-9735-417a-a4de-994f0a8573ef",
+			"@@@InProc at 9F467D358D77AE89C9F5DD2A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241793000, false, "5db70592-a746-4c14-9bf4-1c4c6ed76b81",
+			"@@@InProc at 9F467D358D77AE89C9F5DD2A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241793660, false, "197cf3ae-f5e0-4489-83b6-374cc750d712",
+			"@@@InProc at 26EA393D6E0EF29C9DFE45A2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241798110, false, "d3dc4e35-eaea-41be-b7e6-e11902086d10",
+			"@@@InProc at 26EA393D6E0EF29C9DFE45A2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241798990, false, "1178a43e-9438-48a9-8743-9a42835217f0",
+			"@@@InProc at F4424BE7EF63FB4E8FE90604", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241800400, false, "8f98dc40-ffec-4686-84d4-e56e4d34d272",
+			"@@@InProc at F4424BE7EF63FB4E8FE90604", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241801160, false, "0d40930c-6cfc-4ac1-994b-b2cff704a6fb",
+			"@@@InProc at 25870E30AD0B2A4DA58C52EB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241805810, false, "9df9394e-54e2-4a5c-bca8-49ce81c33b36",
+			"@@@InProc at 25870E30AD0B2A4DA58C52EB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241806650, false, "f4ca0ad6-f43b-48ed-aacc-f3db3d45d731",
+			"@@@InProc at 5C3F7287C07C4BFD102330A2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241808000, false, "69a8c939-4472-4228-96cc-0074f9a608ab",
+			"@@@InProc at 5C3F7287C07C4BFD102330A2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241808930, false, "7c173a29-ea73-4dfc-8e0b-2fe64cb361a2",
+			"@@@InProc at C0E154EDFDC13C0C7288A18A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241813040, false, "f1a85eb8-c5ba-4b25-9037-1ac326c7b195",
+			"@@@InProc at C0E154EDFDC13C0C7288A18A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241813700, false, "1eaeee29-768a-4782-adba-c3ce58e1663d",
+			"@@@InProc at 0C5319312EAF5ED50EDCB452", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241816170, false, "d98afd5d-2959-41c0-a56e-8bc8ad88b42d",
+			"@@@InProc at 0C5319312EAF5ED50EDCB452", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241816980, false, "60f70a9f-8cc2-428e-9442-5163d1e4d4d9",
+			"@@@InProc at 3A72D7CDF8FAB7C6E9A2CE48", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241819850, false, "d5ff49f9-38e7-46e8-96b6-89cf7e6edcbc",
+			"@@@InProc at 3A72D7CDF8FAB7C6E9A2CE48", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241820500, false, "71051468-7f70-47d5-9917-6a35d5781346",
+			"@@@InProc at E0389FE9C7EB42C652D76913", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241823270, false, "bdfab295-179f-4211-86d0-1f27f6d1197d",
+			"@@@InProc at E0389FE9C7EB42C652D76913", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241823990, false, "6663024b-2606-465e-8efd-1bc4519df392",
+			"@@@InProc at 497ED71BF2CB3D2A6834ECCB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241826650, false, "27964485-820e-4ff5-98f2-1012fffe7012",
+			"@@@InProc at 497ED71BF2CB3D2A6834ECCB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241827300, false, "91631973-c386-4d8f-83d9-bd3149c5ad51",
+			"@@@InProc at 1D95BD6ADA96C55ECFEF60EE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241831000, false, "cd5cf3cd-c240-4a0f-96cc-e46630088e08",
+			"@@@InProc at 1D95BD6ADA96C55ECFEF60EE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241831750, false, "6793198c-c565-4302-9166-0475cf56ed86",
+			"@@@InProc at 9274A3BD53A0E38691C790AD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241858290, false, "721eefbb-c473-4d8f-bff7-edbb741cbd1b",
+			"@@@InProc at 9274A3BD53A0E38691C790AD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241859320, false, "bfdd7912-d01f-466b-881c-dc8f6d38e9cb",
+			"@@@InProc at 6740F7D5CF2D3576910D8443", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241863110, false, "6c942aaf-a9d4-488c-a40b-b5da864fac07",
+			"@@@InProc at 6740F7D5CF2D3576910D8443", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241863910, false, "4ec807f8-d29a-43ce-af47-42ea4cc179c9",
+			"@@@InProc at D0B1BB7BBD6879DDB357D79E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241868820, false, "5bbcfcc4-51e1-4e31-afcf-2d74d4409a29",
+			"@@@InProc at D0B1BB7BBD6879DDB357D79E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241870090, false, "61771a6e-2fb0-4a92-80a2-249365d7804d",
+			"@@@InProc at DA27C4626CFA2733742AF7E4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241874360, false, "bd76f7d4-fd66-41ca-8de3-c5871815b66f",
+			"@@@InProc at DA27C4626CFA2733742AF7E4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241875350, false, "ddedff82-a73f-4314-91f7-3e769c9c9b0c",
+			"@@@InProc at 687135B415A311F679F2C5DB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241883690, false, "0ca4511a-f0ec-4c39-b12d-4ccf0faacd05",
+			"@@@InProc at EA207B89D99A48803D07CB1D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241884020, false, "cd609ae4-82a3-4341-a74d-a637cb9756fc",
+			"@@@InProc at 687135B415A311F679F2C5DB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241885610, false, "31fd1bcd-3280-4dc3-980e-3a8c393b789e",
+			"@@@InProc at EA207B89D99A48803D07CB1D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241885860, false, "2f480022-3abb-4a5d-acce-b523206d2625",
+			"@@@InProc at 2E594F31E1CF5C733AC675C0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241894120, false, "cd5473cc-4832-480d-a787-ce1d8ee05129",
+			"@@@InProc at 8BBCEA6E1F76CF4692AA1682", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241895040, false, "e480c1c8-923e-49be-a6f9-090188427296",
+			"@@@InProc at 2E594F31E1CF5C733AC675C0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241895130, false, "a4251a49-7979-4522-a147-63e0a5d89067",
+			"@@@InProc at 8BBCEA6E1F76CF4692AA1682", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241896570, false, "d28aa64b-1add-4c68-ac85-993fb952a0a5",
+			"@@@InProc at 75C4DBA1321000A1C82816CF", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241903670, false, "a40af70f-b73b-413a-aebc-2bea5b93106a",
+			"@@@InProc at 75C4DBA1321000A1C82816CF", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241904480, false, "706309ab-6072-41e1-b86f-4306270f38e5",
+			"@@@InProc at D727CA6BE06EACAE35361853", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241905250, false, "b6e63b8d-485e-4183-b13d-da95b42731e1",
+			"@@@InProc at D727CA6BE06EACAE35361853", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241906070, false, "43346c76-cd83-455c-b748-2b8c89f1e07b",
+			"@@@InProc at 02626CE863784D4958DD1A76", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241912140, false, "65f46dda-5c30-451e-8e3c-3962db7d70e9",
+			"@@@InProc at 02626CE863784D4958DD1A76", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241913120, false, "4a74e06b-69d8-4636-803e-7b496cb36b07",
+			"@@@InProc at 666BC98761AAA89B8B034A02", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241914660, false, "3e68c99e-a763-45af-895a-a1a4c3a41fe2",
+			"@@@InProc at 666BC98761AAA89B8B034A02", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241915600, false, "d999a744-bb8b-453c-a720-54e0bd3bd61d",
+			"@@@InProc at 92DB05DA074CAE8DE4307BAD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241920750, false, "1e0452ec-7447-4b98-9164-4ba2d6aa74b2",
+			"@@@InProc at 92DB05DA074CAE8DE4307BAD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241921560, false, "5eedfeff-2db0-4eab-b48c-529b15947e3e",
+			"@@@InProc at 36E5247860F4597F61F48A94", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241923900, false, "dee610fc-d855-475b-8eb4-0400a0510053",
+			"@@@InProc at 36E5247860F4597F61F48A94", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241925070, false, "c370b232-1ff3-416b-8cac-d6171db713fa",
+			"@@@InProc at 832066D48ADC049F0B8CED85", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241930470, false, "d6499c1f-7e6d-4e59-8e17-913668de466e",
+			"@@@InProc at 832066D48ADC049F0B8CED85", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241931340, false, "9e3fd282-b08d-4120-831f-effa0aea8814",
+			"@@@InProc at 3242A98072F222911EF2E8B6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241933720, false, "e8c64e1a-61db-4728-b58c-82726abdf17b",
+			"@@@InProc at 3242A98072F222911EF2E8B6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241934780, false, "e5ee574b-14d5-4a42-bf9e-fb2a1ba49179",
+			"@@@InProc at 9247DF2964E8C8FD2A134A8F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241939130, false, "6c023d2b-ffd0-479c-b5d0-476ea807c583",
+			"@@@InProc at 9247DF2964E8C8FD2A134A8F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241939900, false, "0fea7a66-faf5-4b65-9395-d0d01202ac1d",
+			"@@@InProc at 0584B6E798A8CD5A9B279B43", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241942700, false, "d4e28fd1-86b8-458d-a82b-9b0761f75385",
+			"@@@InProc at 0584B6E798A8CD5A9B279B43", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241943590, false, "f9e1e088-21c2-4a2c-bde9-3dc23a2f8cdd",
+			"@@@InProc at 6D3D5DA566492976E29BD0E5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241947500, false, "25703730-f828-4e66-8c7d-2805ff0427d3",
+			"@@@InProc at 6D3D5DA566492976E29BD0E5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241948390, false, "63ce136e-0ce9-4829-8fd9-27140361c8d3",
+			"@@@InProc at 3CB95723F9F4402A8EDF201E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241953760, false, "b4a5d9aa-94bc-444a-ba77-a9d14d331fca",
+			"@@@InProc at 3CB95723F9F4402A8EDF201E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241954970, false, "fc7a06b5-c8db-467a-9b88-82cb933f8f54",
+			"@@@InProc at 853BF82413B7A2FD0AE56967", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241956530, false, "a4e6d3d0-1074-4637-822b-9f2a7b32ebb5",
+			"@@@InProc at 853BF82413B7A2FD0AE56967", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241957340, false, "3c7fdb1f-20af-4b12-ae1c-169e028b68b5",
+			"@@@InProc at 9799374F1EE70C657FCB9998", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241963530, false, "a3b32990-ea72-4e6a-8275-94724975ad7c",
+			"@@@InProc at 9799374F1EE70C657FCB9998", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241964490, false, "9782ef58-d096-4695-b7ee-564a1a3ef36e",
+			"@@@InProc at 34622C6DC4A6F939F8A7C0A4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241972770, false, "8e03d265-9a1f-41ab-a334-f8a16c3a5be2",
+			"@@@InProc at 1AF00737B1CB2D5AF8F91601", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241973780, false, "cb9241a1-7924-4418-a7ad-0873f448dbcb",
+			"@@@InProc at 34622C6DC4A6F939F8A7C0A4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241973890, false, "c41340eb-4aa3-4d05-842a-d17963df76b5",
+			"@@@InProc at 1AF00737B1CB2D5AF8F91601", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241975250, false, "dd47c443-6c32-4a59-b24a-6731984047a2",
+			"@@@InProc at 058AB4DCC5A6FE9B0B436A50", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241982680, false, "50e2115f-a890-4815-9f95-7e0b96af91d6",
+			"@@@InProc at 058AB4DCC5A6FE9B0B436A50", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241983970, false, "d7270ed2-f971-4a50-a2fd-c8943334e196",
+			"@@@InProc at 5BD8EE43953D48E2CFEEBD0F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241984070, false, "7b9f5f5f-b012-43b6-8ab4-8c07a1cb8a60",
+			"@@@InProc at 5BD8EE43953D48E2CFEEBD0F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241985550, false, "4fccb972-313c-47ea-92a2-82da463e249f",
+			"@@@InProc at 1D312A3FD111FF672CD3D70B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241992980, false, "fbbd1390-7bae-4222-b6fa-953b6a344c54",
+			"@@@InProc at 1D312A3FD111FF672CD3D70B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241993810, false, "7085abf6-df31-4b57-89ad-5ef47592fc4b",
+			"@@@InProc at D08DC0D9E2B576EC8B6FED71", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241994670, false, "9a9dea7a-93d9-4740-9da4-cfa3601260ef",
+			"@@@InProc at D08DC0D9E2B576EC8B6FED71", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878241995580, false, "3d316506-61fe-44fa-b253-90e0c20c6c09",
+			"@@@InProc at 0E2FF23AFED7FC3FE1FBDFE4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242001970, false, "98a2f738-4616-4dc7-8497-1ab61470c758",
+			"@@@InProc at 0E2FF23AFED7FC3FE1FBDFE4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242003050, false, "3c2a388e-8e89-47fc-a30a-20f1e7c0fe8e",
+			"@@@InProc at 392FE4A868EBBA04E5C4A49C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242004020, false, "551edc60-3d81-4d04-b943-5f232c4b7d31",
+			"@@@InProc at 392FE4A868EBBA04E5C4A49C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242004970, false, "eaed5adb-461b-41fa-b173-c5f1a45d8e01",
+			"@@@InProc at 9CD5BE827A3F35778B50D021", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242011240, false, "12bc6810-30bb-4bc1-bb2a-8e28268b45d0",
+			"@@@InProc at 9CD5BE827A3F35778B50D021", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242012060, false, "028d79e7-98a7-402a-876c-cc1c7c37d1fe",
+			"@@@InProc at CBA6A0E530D0DCF431C8F9F1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242015360, false, "6e226685-300c-4855-964d-56ab722f9d83",
+			"@@@InProc at CBA6A0E530D0DCF431C8F9F1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242016590, false, "54b4682a-25cc-4694-a46e-4c4091afeea2",
+			"@@@InProc at E9BF8E21D2B690DBA892D38F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242020110, false, "9a95d8e4-e8db-4150-be24-bcff602b5183",
+			"@@@InProc at E9BF8E21D2B690DBA892D38F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242021680, false, "9a91fa3b-1bb6-4349-85d8-593456813203",
+			"@@@InProc at 537FE65747844A0FB074CF74", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242025910, false, "953b3b33-48f3-4c7d-8695-14c18c60a111",
+			"@@@InProc at 537FE65747844A0FB074CF74", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242026870, false, "5ff386da-17e6-46e9-8cae-069ae8dfafb8",
+			"@@@InProc at C6515FA6B504CDC0EA57C355", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242029700, false, "6442e9bd-00f7-4f7c-8739-c0690a4c792a",
+			"@@@InProc at C6515FA6B504CDC0EA57C355", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242030490, false, "08643f40-cc19-42f6-af16-670cb154d819",
+			"@@@InProc at C81DA4E510F0A364F7AF30E3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242036990, false, "113af18c-0aab-4ba5-a98a-9d52d37e80ea",
+			"@@@InProc at C81DA4E510F0A364F7AF30E3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242038190, false, "94412bd4-9fd7-4742-b8c7-ae44e130b15a",
+			"@@@InProc at 9AF9FF690C9021CD144B4C18", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242038470, false, "fbb1f442-6c8c-4b41-90d8-1d4b6deeedfe",
+			"@@@InProc at 9AF9FF690C9021CD144B4C18", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242039910, false, "c7151ec7-f85e-4219-99ef-ec97f6b36f99",
+			"@@@InProc at 61B0AEDE12037F55287F09C9", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242047070, false, "778e76f1-4d60-4361-9336-693bc51f1834",
+			"@@@InProc at 61B0AEDE12037F55287F09C9", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242047880, false, "b4127f14-31a6-4ecc-8e9d-a5df69671063",
+			"@@@InProc at 6315E4ECC4688CCD003BC09D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242048820, false, "ca194e05-4fac-40df-b18b-aca55243fe35",
+			"@@@InProc at 6315E4ECC4688CCD003BC09D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242049670, false, "a677c7be-3b7a-4a3d-ae51-0451c93a5eba",
+			"@@@InProc at DD3B4DBE7D7C493EDD161C29", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242056480, false, "62ca73dc-2478-416e-ab63-3f386bf91dc9",
+			"@@@InProc at DD3B4DBE7D7C493EDD161C29", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242057690, false, "546270a1-3258-470e-8435-09ebc85633e2",
+			"@@@InProc at 265B7A84E789CB9811B1A957", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242060140, false, "636190ec-5807-4749-b838-052ce2ab17a6",
+			"@@@InProc at 265B7A84E789CB9811B1A957", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242061390, false, "803eebec-d948-4766-9e76-895c15d75e13",
+			"@@@InProc at 6DE8E57C4979127692B0F9CF", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242065600, false, "93e11375-0c41-4024-9089-b6e75f4b39cb",
+			"@@@InProc at 6DE8E57C4979127692B0F9CF", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242066730, false, "3aee4f89-f9e5-4819-bf35-d0ba5cf515bd",
+			"@@@InProc at 20AD63356A2A1D53EC30F041", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242071510, false, "f96a195b-b740-4116-8bdb-fae29c9b3929",
+			"@@@InProc at 20AD63356A2A1D53EC30F041", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242072610, false, "a729249e-87f3-4024-8ca2-4b9f4a3f3050",
+			"@@@InProc at 595BD227E4EDBF4C3CBE8AB3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242076490, false, "0bbeb8b1-f7ba-4ff0-894c-e752a15e6258",
+			"@@@InProc at 595BD227E4EDBF4C3CBE8AB3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242077330, false, "cb942809-791e-4fb2-a6ce-62b3e31481f7",
+			"@@@InProc at 8DFBDD697BC9BDBC9934ABE8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242081480, false, "53891ee1-00da-4098-9d5d-01f4ac985519",
+			"@@@InProc at 8DFBDD697BC9BDBC9934ABE8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242082300, false, "8d4f9075-e93c-4481-8152-ca0b4afd3c09",
+			"@@@InProc at B02AE11E2835536FCD6ED248", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242085160, false, "b40fa6c1-58f7-46ac-b321-4ef88c35ecec",
+			"@@@InProc at B02AE11E2835536FCD6ED248", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242086160, false, "34a10d89-b9e1-4009-aad4-4b7910828b9c",
+			"@@@InProc at AA06F28BAB396686689298C8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242091400, false, "43009936-504b-4d7e-8871-e908b25fb272",
+			"@@@InProc at AA06F28BAB396686689298C8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242093280, false, "0845d8e2-f78c-4f82-a189-a51cc07af9ed",
+			"@@@InProc at DB63C6A5EEE9C71EC86D30BA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242096950, false, "b2219a55-e1e8-45b3-862a-03a13e442f40",
+			"@@@InProc at DB63C6A5EEE9C71EC86D30BA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242098100, false, "77c12ad1-7a50-4ff7-b372-385bec790321",
+			"@@@InProc at 37E8DDF446FCE93ED120E1DC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242104260, false, "b22b302f-6797-450d-ae92-2fadef05859e",
+			"@@@InProc at 37E8DDF446FCE93ED120E1DC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242105160, false, "2cc9880f-c8eb-4417-9c79-98ebb8707387",
+			"@@@InProc at 1F265EF75498B96C7FD5E908", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242106420, false, "e0746b24-7d37-43f7-9365-3e7cddd6106f",
+			"@@@InProc at 1F265EF75498B96C7FD5E908", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242107510, false, "f79eeb00-f212-453a-b023-73bd50402cf9",
+			"@@@InProc at 44E15C66C0BD9E2F752927EC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242114640, false, "be2534fb-12f2-49ed-b3e2-b1fbdccaeebd",
+			"@@@InProc at 44E15C66C0BD9E2F752927EC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242115490, false, "af5a3796-5694-4f2f-8dfc-920cba77e38d",
+			"@@@InProc at 3649970F53FAD2BD7C036BFE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242116330, false, "3069f41c-e7de-440b-92f4-8b00eb52e5f4",
+			"@@@InProc at 3649970F53FAD2BD7C036BFE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242117140, false, "511bff8e-cfd3-4565-84e1-39483d455acd",
+			"@@@InProc at 1CF711E85045D83587021154", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242123260, false, "9ea435d3-62d1-4994-9807-1f76251cfeef",
+			"@@@InProc at 1CF711E85045D83587021154", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242124260, false, "1eb4f04f-c152-4189-bb79-ae99805e9f5f",
+			"@@@InProc at 11FFFC5C1E3F684AB8933466", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242128260, false, "3c5013a3-6d8a-48fe-903f-88aebc5587eb",
+			"@@@InProc at 11FFFC5C1E3F684AB8933466", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242129030, false, "36104116-a378-4f89-9bef-e5f0743fac31",
+			"@@@InProc at 97F83F2D9B523EB543266B72", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242132170, false, "ec136813-be91-411a-b25d-91da2f43d59d",
+			"@@@InProc at 97F83F2D9B523EB543266B72", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242132940, false, "9cbe3985-9d49-4d8e-adf0-90a6dd04296b",
+			"@@@InProc at B83CF75D5CEC3DFF6132C8EF", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242137430, false, "c19d2a2c-5001-4ed3-828f-489003caf403",
+			"@@@InProc at B83CF75D5CEC3DFF6132C8EF", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242138350, false, "c6e87212-2241-4715-902a-693b40102ad0",
+			"@@@InProc at 2181A9650A20E1F0EF05EED3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242141490, false, "ee47ec48-60d9-4361-9c92-6c2c100957e2",
+			"@@@InProc at 2181A9650A20E1F0EF05EED3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242142270, false, "5cc4d4e0-6200-4aaf-bc4f-114b08e890b8",
+			"@@@InProc at 9D11C38AAB3F7D798CAD2161", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242147370, false, "aaa6c01f-7939-46d1-b383-e8e59363c701",
+			"@@@InProc at 9D11C38AAB3F7D798CAD2161", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242148160, false, "fe664c63-bf9e-4813-a396-b37cca86a9d9",
+			"@@@InProc at AA57F62E99DF69B7EDC95201", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242151470, false, "51dc0d97-6a71-477b-a54e-683985e6d4b7",
+			"@@@InProc at AA57F62E99DF69B7EDC95201", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242152500, false, "add3be71-d8bb-4138-8cfd-905fb42e7229",
+			"@@@InProc at 5909F6309DFC5A7E7744281F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242159150, false, "a9ee15f5-ab90-4875-9860-f440a87c40ed",
+			"@@@InProc at 24623978B233121F578AEFC8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242160830, false, "13fcbd0f-e2e7-4dd2-9851-8d00dccbf0f4",
+			"@@@InProc at 5909F6309DFC5A7E7744281F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242161900, false, "fa00554b-f4d5-4cd4-a466-32cd4d081b71",
+			"@@@InProc at 24623978B233121F578AEFC8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242162150, false, "da7f691a-1409-4806-8328-5d6dbb46ed72",
+			"@@@InProc at D934CC2E8CE4D1A9420D26D7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242170720, false, "552f84d3-2fbe-4d79-98bb-84ad500e1208",
+			"@@@InProc at AB235B5C00C086E40E2134ED", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242171700, false, "6bd0932a-a124-4d5c-a670-230a4ef2de43",
+			"@@@InProc at D934CC2E8CE4D1A9420D26D7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242171960, false, "d5360efc-3fd8-4b0a-9c27-0f9d6fd93c1e",
+			"@@@InProc at AB235B5C00C086E40E2134ED", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242173960, false, "f7459c9c-e95a-4c9d-80be-e313434a109b",
+			"@@@InProc at FA90494263AF82AF0BF0EF6B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242181160, false, "1207f723-b8d3-4a9b-8bff-204f3be90748",
+			"@@@InProc at 669D15686364A74AA4675205", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242182090, false, "93e34a7b-69e7-47bd-9e93-378ce6ad2ac9",
+			"@@@InProc at FA90494263AF82AF0BF0EF6B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242182180, false, "0c66dab2-3d57-4faa-861f-368d40f33be9",
+			"@@@InProc at 669D15686364A74AA4675205", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242184210, false, "1ba4c085-5af9-4472-9c1a-dbe4dc42d1aa",
+			"@@@InProc at BD3127C2FA9C855B20C02780", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242191750, false, "6454e7f2-3a4f-4555-a4f5-a0624d40ecbb",
+			"@@@InProc at BD3127C2FA9C855B20C02780", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242192600, false, "189f64a2-10eb-452f-904b-21e0d243df4d",
+			"@@@InProc at 729C199D8D64830126F8AA2E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242192870, false, "d2d1724e-29ee-4ebd-8e21-7421f32f1413",
+			"@@@InProc at 729C199D8D64830126F8AA2E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242194520, false, "f1e3b975-e104-4de9-8c55-f41e109c5406",
+			"@@@InProc at 57E7853BF1BED2DD50BA9EBB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242201010, false, "0b91d7a1-47d5-472b-84eb-3d2cbc962e38",
+			"@@@InProc at 57E7853BF1BED2DD50BA9EBB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242201830, false, "f6750139-27a1-41d5-9c97-8bd5945b5cc6",
+			"@@@InProc at 923D967AD293DF68AE08A8DE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242203460, false, "14c9b66c-edb8-4c48-836d-56cb3ec34432",
+			"@@@InProc at 923D967AD293DF68AE08A8DE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242204250, false, "406e6e21-c202-4b69-871c-84a073eb2b6e",
+			"@@@InProc at 652D34913DC2623437F39FC3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242209250, false, "d5f0afe1-d364-434f-94cf-c512bf7365f4",
+			"@@@InProc at 652D34913DC2623437F39FC3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242210030, false, "bddd50bb-c6d7-461b-80b9-a88eda3c4a65",
+			"@@@InProc at BE8B18131A2219DB16B20A1F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242212370, false, "9f831dc2-90ec-4e66-899e-9b00fb4138bc",
+			"@@@InProc at BE8B18131A2219DB16B20A1F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242213470, false, "b920520f-16f0-4c6a-9aaf-8f499997cd64",
+			"@@@InProc at E8892BF664C96661EA324A84", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242217800, false, "1431d17e-2849-4050-85e7-402e69da416d",
+			"@@@InProc at E8892BF664C96661EA324A84", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242218580, false, "225ade5e-e1d6-44ca-b6da-071a243459db",
+			"@@@InProc at 9D24ADDEB48FAB1207B45882", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242221160, false, "71dc3188-52aa-4420-abec-731dbe480ec3",
+			"@@@InProc at 9D24ADDEB48FAB1207B45882", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242221960, false, "96592524-2c26-41e9-85e8-b806379dcb8d",
+			"@@@InProc at 5D23F51F47175B67E79F69AD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242228070, false, "9625ac03-7791-413f-9471-2b4e4e4c70ba",
+			"@@@InProc at 5D23F51F47175B67E79F69AD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242229450, false, "b34f04ba-52ae-48ff-bfee-74fb62155b9f",
+			"@@@InProc at DD9C3DF6FEC21BEED08C9A61", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242231730, false, "2e79c4b5-bb97-42bf-a506-214a07d107bc",
+			"@@@InProc at DD9C3DF6FEC21BEED08C9A61", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242232900, false, "2e16b46f-3cd5-49da-8eef-ba159aabdacd",
+			"@@@InProc at 22870D0F51B5931DEDDAA738", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242241430, false, "925fb226-2a3c-4358-8468-7dbfc07f4596",
+			"@@@InProc at 02569D825D270F6EAA51E7EE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242242400, false, "e4f5bc12-393e-45b2-a569-067d1faa86aa",
+			"@@@InProc at 22870D0F51B5931DEDDAA738", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242242490, false, "84d9fc39-41c7-439c-875a-0646f8edbf12",
+			"@@@InProc at 02569D825D270F6EAA51E7EE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242243950, false, "60ecc8e3-3fa2-422f-95d8-de6cfae79919",
+			"@@@InProc at CAD4901BC047E2DCAC5D264A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242251340, false, "718a10c5-3fed-47e0-b730-acad2b6b9c1a",
+			"@@@InProc at CAD4901BC047E2DCAC5D264A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242252130, false, "c377ca2d-70d4-4f67-809a-c1bd111a3bf1",
+			"@@@InProc at BF31CB86FA14685F91747827", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242256360, false, "2d0da1dc-57e3-45ce-b714-984382f5cb48",
+			"@@@InProc at BF31CB86FA14685F91747827", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242257160, false, "d100f3b2-4b23-4319-824c-a1d722b2d79a",
+			"@@@InProc at E577C7529A97973B7B196B5A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242259730, false, "f3bb6962-141c-420d-9cac-d5a3dd4213fb",
+			"@@@InProc at E577C7529A97973B7B196B5A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242260560, false, "a0a0fe6c-0aae-402f-8628-8a94df80ce47",
+			"@@@InProc at 34D5D2450F95BD200F0F37B5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242266800, false, "24aa81d3-1987-4d3b-8e17-d29066a2c3e5",
+			"@@@InProc at 34D5D2450F95BD200F0F37B5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242268000, false, "31a4d536-62f2-4461-9f50-6fca9794ab8e",
+			"@@@InProc at F262C547BFE100AD1D425658", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242271350, false, "3874e5b4-b21a-4938-bff1-f9d3b91a6565",
+			"@@@InProc at F262C547BFE100AD1D425658", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242272600, false, "d11bcfd0-c1c3-49db-b376-23a1bf6cecb9",
+			"@@@InProc at 44D5ACA05C8D2D24B6F2691C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242276630, false, "35675760-2ea0-4ba1-8bd6-f17fbdc8d1cd",
+			"@@@InProc at 44D5ACA05C8D2D24B6F2691C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242277480, false, "19fb73ec-1397-4e91-865b-e7506c4a522e",
+			"@@@InProc at F5A0ADC8E24AFA8B9539C1F0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242280380, false, "1f3774a3-2093-4793-9242-1c406485c461",
+			"@@@InProc at F5A0ADC8E24AFA8B9539C1F0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242281220, false, "ab4f6d1d-acab-4914-880a-dc1b23ea61d7",
+			"@@@InProc at 9FAAED91B8DC629F66D7DF21", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242285170, false, "b6c2ac87-eaef-4b0d-8a3c-b3a26c39cb3f",
+			"@@@InProc at 9FAAED91B8DC629F66D7DF21", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242286110, false, "29e45ee7-d915-4057-9693-090067a42b91",
+			"@@@InProc at 9F6DED47F5DDC98805203506", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242289790, false, "1e418777-d61c-4d0e-9a6c-6b6aa968ee1c",
+			"@@@InProc at 9F6DED47F5DDC98805203506", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242291020, false, "f53b7af5-347b-4970-9065-42dd4f272ba8",
+			"@@@InProc at 01FA220E5DE2C1C81A927DF4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242295360, false, "eb2fa186-85f6-4a0c-be75-9442d6e9b048",
+			"@@@InProc at 01FA220E5DE2C1C81A927DF4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242296350, false, "a75c434b-b5a3-42e8-99f0-e72d0f95990d",
+			"@@@InProc at DC4D56DA900AB02FF33BFDC5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242327540, false, "cd00605c-cc1d-4682-b020-038d975faec6",
+			"@@@InProc at DC4D56DA900AB02FF33BFDC5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242328750, false, "7266dccf-2963-4e49-b593-2078dbfd0386",
+			"@@@InProc at 003243287D4C62D9AF6A94A8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242333130, false, "faa54652-f434-429b-a8f4-23bdd00b0a5b",
+			"@@@InProc at 003243287D4C62D9AF6A94A8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242333950, false, "094d3b98-0415-46d0-8f6a-f7b27b671185",
+			"@@@InProc at 32F22628C2341DEBFD20AF3F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242337910, false, "53266868-b071-4e3a-b84a-224fd1233a63",
+			"@@@InProc at 32F22628C2341DEBFD20AF3F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242339760, false, "02aec5fb-0df0-4fb1-86a4-523d9e538ebb",
+			"@@@InProc at 22C3A97B83416EA40D073DEE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242344570, false, "8cdb2baf-c034-4f7a-a93a-1a844f7da762",
+			"@@@InProc at 22C3A97B83416EA40D073DEE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242345760, false, "5bfc0be6-2c38-4e54-b813-e17e695c229d",
+			"@@@InProc at 896A6BD60A1BF22AECDF10E2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242349540, false, "cdf52c0f-01a9-4eea-83a3-fc8d9d135472",
+			"@@@InProc at 896A6BD60A1BF22AECDF10E2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242350460, false, "1a15edb4-d3bc-4c93-b45a-99d574fb897c",
+			"@@@InProc at FCD4D8578BBD797FAEC51DE8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242355050, false, "5109b865-e4d9-4ceb-8c70-420ba13215b6",
+			"@@@InProc at FCD4D8578BBD797FAEC51DE8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242356240, false, "60c333cf-72fe-45eb-993b-d1099b58d19d",
+			"@@@InProc at E7D8066A3B8114DA60300584", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242359820, false, "82b5f3cb-4287-46e9-b524-4b0d99f827b5",
+			"@@@InProc at E7D8066A3B8114DA60300584", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242360630, false, "426cf5fd-4b8d-4983-98b9-d382048f9416",
+			"@@@InProc at 89906192591C6E7D6F42CD78", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242367660, false, "fb85cd45-4458-4fa4-b509-19260db554af",
+			"@@@InProc at 89906192591C6E7D6F42CD78", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242369390, false, "fcd2fc06-8f14-4cc9-b9a7-9fb25b7ba14b",
+			"@@@InProc at C4070EE9C1BFEDE55A6CE077", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242369490, false, "5fb72b2c-d2b7-4576-a4a5-46cf3429bb06",
+			"@@@InProc at C4070EE9C1BFEDE55A6CE077", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242371120, false, "475d9876-1f10-44ad-ae3f-41ebc1782bfb",
+			"@@@InProc at FDD10F513047490E86429701", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242378000, false, "1f9dccbd-c8d3-4ba3-8d4a-353d30200048",
+			"@@@InProc at FDD10F513047490E86429701", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242379270, false, "6f841b65-0325-43c6-a521-26d3e38d3150",
+			"@@@InProc at 280F2DF836A9EAA56FDFDD45", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242381750, false, "1f6c0fea-d4e6-4187-a4c6-b2c31c48938c",
+			"@@@InProc at 280F2DF836A9EAA56FDFDD45", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242382960, false, "192c1e33-1a66-4907-8e6a-bfd6a2cf51f8",
+			"@@@InProc at 720908A00BCAE2C3A9647F29", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242388170, false, "d4336fc1-63c1-4682-88d4-770f65e9ff4e",
+			"@@@InProc at 720908A00BCAE2C3A9647F29", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242390450, false, "03450f0e-fb78-437e-8785-516c4a54edb9",
+			"@@@InProc at 45CA79FFE098542DB1493DD2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242395720, false, "9a9bfa03-3b70-4557-9fe7-2bad0a5ca62a",
+			"@@@InProc at 45CA79FFE098542DB1493DD2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242396810, false, "b11dfe87-1ca9-4339-becf-46b9426999f9",
+			"@@@InProc at 8EBD8555BC9297434A0C86F1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242399200, false, "4a53e550-a28e-4791-87a9-29db635dea1f",
+			"@@@InProc at 8EBD8555BC9297434A0C86F1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242400040, false, "b45f324b-25da-4234-946e-c062c5ed0b36",
+			"@@@InProc at 331C75321CBFDEE6B700127E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242407250, false, "5e32b73e-4bc3-4297-bcad-9d454d38c9b3",
+			"@@@InProc at 331C75321CBFDEE6B700127E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242408670, false, "bb5fbef8-ba6b-4b15-a9f6-fe07847a5961",
+			"@@@InProc at C1A8323CAE87EED2142A2F0F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242409950, false, "0404af4d-67f2-451f-a44e-18a68fcbb4c5",
+			"@@@InProc at C1A8323CAE87EED2142A2F0F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242410770, false, "8cd2ae54-50e7-4f8b-a75f-c5cebaf292a3",
+			"@@@InProc at 42A321314A1B56A4A2068ABB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242418670, false, "63d6980b-9fac-461d-9cd3-399b8a99a812",
+			"@@@InProc at 280ABAF1A0612DBA6838B04C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242418900, false, "d9d17f3b-362b-4290-9a32-43457e140fcc",
+			"@@@InProc at 42A321314A1B56A4A2068ABB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242420750, false, "a12f86c1-4205-4393-8ada-ba11dd6cbd24",
+			"@@@InProc at 280ABAF1A0612DBA6838B04C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242420940, false, "ffad625a-6e45-4439-ab42-0e2f3989e385",
+			"@@@InProc at 6E96316A742241F8563E8F5B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242431330, false, "eea06e07-37bb-40e4-a2d7-778720fff2d2",
+			"@@@InProc at 65B36FDA818914CD71055431", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242432530, false, "96978a6a-776c-4a98-bc35-53f8760d3e5e",
+			"@@@InProc at 6E96316A742241F8563E8F5B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242432660, false, "e4b3f195-dc88-40aa-89e3-b184e59ead0e",
+			"@@@InProc at 65B36FDA818914CD71055431", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242434220, false, "346df67b-5ac7-480d-b397-22ce5e07fb66",
+			"@@@InProc at 91F98F5F031DFEAC36267CC4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242441940, false, "4ce51ceb-ab09-4ec4-82b6-51cba4ead16c",
+			"@@@InProc at C6A60C3B28E1CEBBE43372D4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242442840, false, "eb126181-14a9-43e1-86ce-d95abb36169c",
+			"@@@InProc at 91F98F5F031DFEAC36267CC4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242442920, false, "d2ba1ea3-5c10-4457-a684-e9e83ead8976",
+			"@@@InProc at C6A60C3B28E1CEBBE43372D4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242444250, false, "c06cbc88-63ab-4563-ad58-9aee58ab328e",
+			"@@@InProc at 2F49DF9C12AD4FD2038B9762", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242451650, false, "f1b9cc10-79da-4114-8eba-fe508ad41e63",
+			"@@@InProc at 2F49DF9C12AD4FD2038B9762", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242452440, false, "2915fbc7-3223-41d0-9cc8-44a3327d9c1c",
+			"@@@InProc at 8FB9D237DEB0C678AA2DFB31", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242454850, false, "0fc59682-2a25-49b2-9efc-a9fcb6894bac",
+			"@@@InProc at 8FB9D237DEB0C678AA2DFB31", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242455660, false, "96e2b51e-c66d-4473-baab-e117abdd7c9c",
+			"@@@InProc at 43F48CCFB83F5D2E57A3E5DB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242460320, false, "8b9e60d8-7020-4143-a44d-e42ac36b9f37",
+			"@@@InProc at 43F48CCFB83F5D2E57A3E5DB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242461250, false, "465710c6-6511-4b22-81d1-530e99ac2416",
+			"@@@InProc at 5A64673B78020B85D0BAC70F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242463680, false, "5cf859a0-1051-4408-aef0-0ab56bc8acda",
+			"@@@InProc at 5A64673B78020B85D0BAC70F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242464590, false, "30067c1a-3d47-484c-9bc7-7c1cc56399c1",
+			"@@@InProc at 0958631FDFFB20EA90A445EB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242470060, false, "0a9f0404-ac12-4709-b047-d3f2597e562a",
+			"@@@InProc at 0958631FDFFB20EA90A445EB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242470900, false, "d00030c4-f2c8-455a-ad36-e2c73a1f5f14",
+			"@@@InProc at 0A8AED8D5D2C07ADA552F172", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242473130, false, "e979ece9-cc5e-40b6-9df5-b014201fe36e",
+			"@@@InProc at 0A8AED8D5D2C07ADA552F172", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242473960, false, "178490fc-4b95-4a06-8c08-3cc4827edb01",
+			"@@@InProc at 4B5F2DEC673BD202FE27CC9A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242478540, false, "42eccec5-2e76-4115-8aa4-f4d267256ac4",
+			"@@@InProc at 4B5F2DEC673BD202FE27CC9A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242479470, false, "3172781c-bccb-484e-820d-71f0d2717931",
+			"@@@InProc at 713CF39392E3BF0E743AD5FC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242485680, false, "a466d71d-739a-4860-bea1-ef8ebbcf4171",
+			"@@@InProc at 713CF39392E3BF0E743AD5FC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242486590, false, "ceb0a524-fe5d-4309-b9bd-e2176b7b3ed4",
+			"@@@InProc at 9E9494D294903341E7DB7739", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242487520, false, "406d2753-abc6-4e4d-b85e-bc51334e934c",
+			"@@@InProc at 9E9494D294903341E7DB7739", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242488330, false, "a0341703-409e-457a-9d00-808072cf0444",
+			"@@@InProc at 223B03002897E96B5E9E2786", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242496710, false, "253d9fda-fd06-4a42-92b5-8aa9edd46b39",
+			"@@@InProc at 223B03002897E96B5E9E2786", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242498010, false, "943fac8a-a9f8-4e49-9dec-757bec568492",
+			"@@@InProc at 0441224A37BF7E00EF63A55D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242498110, false, "0f5d9720-8e5b-4c7c-bf8a-af49631f2ff3",
+			"@@@InProc at 0441224A37BF7E00EF63A55D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242499940, false, "3a124107-fd7b-495f-beae-1a7ac5f001a4",
+			"@@@InProc at 2177C9C0A22C0B5121AE2C9C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242507180, false, "36296b0f-7eb2-4d84-8408-7d14c2188f07",
+			"@@@InProc at 2177C9C0A22C0B5121AE2C9C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242508180, false, "14f7295e-b71b-428f-8041-dd38ca28a11d",
+			"@@@InProc at 9650BD4C8A2012C0BA38F513", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242508310, false, "90da93d5-5be4-471f-9e93-f76edb81ba74",
+			"@@@InProc at 9650BD4C8A2012C0BA38F513", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242509680, false, "678914fb-d0ae-4e0e-975e-d7bf9c9b9aa0",
+			"@@@InProc at 2752C58D6D894B6ECC17AEA7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242517430, false, "25cafacc-85a6-48aa-aa9b-aaf97d9857f7",
+			"@@@InProc at 4497C7C77E288BCD3B4B4339", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242517810, false, "4d2ba716-3bf5-4ca3-a2aa-a119441d4805",
+			"@@@InProc at 2752C58D6D894B6ECC17AEA7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242519250, false, "529e021c-743d-481d-9e94-ce3af8e0486e",
+			"@@@InProc at 4497C7C77E288BCD3B4B4339", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242519500, false, "9e877bbf-9a34-400b-a09f-01b98ad24a33",
+			"@@@InProc at 22805DD7A15FE1859854A935", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242528320, false, "4afd3b0a-8f2a-43fa-b1ea-af20741380b0",
+			"@@@InProc at 22805DD7A15FE1859854A935", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242529530, false, "547a2d16-7a27-42b8-8485-cf4725e17bb3",
+			"@@@InProc at 759F9E4FB0F365A3311A9BDC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242530700, false, "a29e3f50-e937-4736-bd7a-eef7102ee2ea",
+			"@@@InProc at 759F9E4FB0F365A3311A9BDC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242531880, false, "51bf6026-911a-4804-863d-576d9a2a08b2",
+			"@@@InProc at 0705FC4F53AF5A0E4C7AC7D6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242538250, false, "0dfe2a8c-af61-4441-bd08-e1d67647227a",
+			"@@@InProc at 0705FC4F53AF5A0E4C7AC7D6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242539390, false, "5734dc9f-6446-4d73-96ae-496e4321e364",
+			"@@@InProc at D7D3AF7CFA7D1CCA7F3E9068", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242540820, false, "890a75d9-84e2-45f8-a4dc-b34ddec16a50",
+			"@@@InProc at D7D3AF7CFA7D1CCA7F3E9068", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242541800, false, "4f0cdc8b-8a71-45da-ad68-d5b89cf5992b",
+			"@@@InProc at 77F8F1C61D80911829EDC64F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242549020, false, "24f43e13-1627-45b8-bbaf-f9e0e31a6ba4",
+			"@@@InProc at 77F8F1C61D80911829EDC64F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242549860, false, "40903af4-d2b8-4003-817a-dbd3518eed6b",
+			"@@@InProc at 53F1FA4FDDCE66C3696A9AD2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242553700, false, "61d0f814-afb0-417c-b017-897b4eef8745",
+			"@@@InProc at 53F1FA4FDDCE66C3696A9AD2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242555120, false, "10f8fda1-d458-4aaa-803f-ea56bcdedb23",
+			"@@@InProc at 2B1F707273B514B0EB261A09", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242558370, false, "9abb7dc8-695e-4469-80ea-31a72a49fa4f",
+			"@@@InProc at 2B1F707273B514B0EB261A09", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242559500, false, "2aee02c6-ee5c-4884-936f-ca5b2b0588e3",
+			"@@@InProc at 0933E8B33BAC760ED3BB0515", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242564710, false, "a5cef252-ab09-4794-93b4-4a4b03911a03",
+			"@@@InProc at 0933E8B33BAC760ED3BB0515", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242565520, false, "f8dbaceb-6f5c-41a6-a46c-32672b097748",
+			"@@@InProc at 15519A1E4052DE1FA59E8675", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242573730, false, "7bc11a57-82a8-43c3-a775-0bb21fde4ac9",
+			"@@@InProc at 15519A1E4052DE1FA59E8675", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242574810, false, "8c39e341-3a54-4eb4-8576-521fca223248",
+			"@@@InProc at 1D58AAACFD40EBEF1B1F2EAD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242575310, false, "88c0601e-3780-4cdf-8b42-fd8efe7ac937",
+			"@@@InProc at 1D58AAACFD40EBEF1B1F2EAD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242577920, false, "7d1c75ff-e002-426d-bc84-8c0526e206eb",
+			"@@@InProc at CECF7BF8B899328A9BBB5F0D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242583590, false, "08c6b088-c60b-4290-9308-d086d47eb20f",
+			"@@@InProc at CECF7BF8B899328A9BBB5F0D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242584730, false, "bd493ee1-d12c-4990-9a96-f95c208cb442",
+			"@@@InProc at A18A5BF08C22D774A2C5A81A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242586450, false, "f1e8a7ea-64dd-47a4-93a3-db107fc13d79",
+			"@@@InProc at A18A5BF08C22D774A2C5A81A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242587290, false, "c92c3c9b-4847-434e-9a27-c7e6ba6d31e8",
+			"@@@InProc at 6EFD9478418CF77F42612407", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242592470, false, "cd462529-72b7-41a0-b4ab-625180acda0a",
+			"@@@InProc at 6EFD9478418CF77F42612407", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242593440, false, "118406e8-d749-4071-a123-c4d97c406c69",
+			"@@@InProc at 0B5D1FE49C7D2877C513A472", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242594970, false, "ec11da52-18a8-4bb7-afb5-fabffc6b9291",
+			"@@@InProc at 0B5D1FE49C7D2877C513A472", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242595780, false, "c4d3f1a1-8fc2-4191-b44c-c4afed3d0a8d",
+			"@@@InProc at 30EF9A25B61B9F0E4A5648B3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242601700, false, "c816b731-7df8-4e74-9d73-6b3a0a97e849",
+			"@@@InProc at 30EF9A25B61B9F0E4A5648B3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242602520, false, "e31bb9c6-49e1-45e4-b7a8-999a3d62608a",
+			"@@@InProc at 184F13D5220CC0898AE16228", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242603290, false, "135252b3-fad8-4358-aadf-fe2eefa2b3ce",
+			"@@@InProc at 184F13D5220CC0898AE16228", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242604100, false, "450b172f-38ee-4817-899a-57c924d67282",
+			"@@@InProc at BACBAA05402C0E2AD366C2E4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242610420, false, "3d3e23cd-0a32-4600-8a9f-576026af88f0",
+			"@@@InProc at BACBAA05402C0E2AD366C2E4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242611260, false, "d684b278-47c7-48d3-9129-d8ece912ccbb",
+			"@@@InProc at FA2F30B8871B9220AEEEE045", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242611520, false, "aca76928-1aa0-48ba-b259-d0eb055ae933",
+			"@@@InProc at FA2F30B8871B9220AEEEE045", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242612850, false, "91e3514b-3446-4cd5-9290-f87f04fc0f35",
+			"@@@InProc at 033AAF5B2FDEA6386188FB16", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242619350, false, "6d3e73c2-414a-45d3-b0fd-8e591f8f7a4e",
+			"@@@InProc at 033AAF5B2FDEA6386188FB16", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242620170, false, "f4b2e7f2-f330-493a-b6b0-f8f63a2b0fd2",
+			"@@@InProc at 0DB67D5EA6B9807F719F874B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242620500, false, "3125f272-b57e-4ba6-9c61-56db03903905",
+			"@@@InProc at 0DB67D5EA6B9807F719F874B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242621590, false, "73b91c71-127e-4adf-bb5e-73814d9bece8",
+			"@@@InProc at 7EA194491544CF5459915E1A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242628200, false, "8207b8fd-a71b-4135-a689-6b3bd3bf4c5c",
+			"@@@InProc at 7EA194491544CF5459915E1A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242629030, false, "377b99a8-b3f5-4e14-a506-72a47422429d",
+			"@@@InProc at 71701EFBD2A78432C43033D6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242629830, false, "d8dd00f7-d5a4-4ed7-a71c-7254299f14e7",
+			"@@@InProc at 71701EFBD2A78432C43033D6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242630610, false, "2f7b63f5-4dde-4a33-a630-a88773287691",
+			"@@@InProc at 2FFA152C16AB9F8698112CC0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242637210, false, "42534aee-0935-40f8-a3ef-3c59f78c7fe4",
+			"@@@InProc at 2FFA152C16AB9F8698112CC0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242638030, false, "3be402cb-5e3e-4531-b05b-6c0147a4620b",
+			"@@@InProc at B2318F9C80C9CBCA1DD10713", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242638210, false, "55aa886b-22a0-4c41-804f-ea1946f3e90b",
+			"@@@InProc at B2318F9C80C9CBCA1DD10713", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242639460, false, "b30f1f87-b834-4081-a625-e2ac6a506579",
+			"@@@InProc at 21960798C4B6F79A47274B80", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242645940, false, "7ae82b86-7b69-4bb1-aa5c-06ccb3329c35",
+			"@@@InProc at 21960798C4B6F79A47274B80", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242647130, false, "5c25b233-75de-4d5a-b957-f43acc1f986c",
+			"@@@InProc at 518C1973B3D518564ABFC904", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242648860, false, "ed8a9c16-0391-41b4-81fb-66046bf4b3fa",
+			"@@@InProc at 518C1973B3D518564ABFC904", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242649850, false, "2ddb4f8c-3907-446b-aa7d-5bba35bb9a67",
+			"@@@InProc at DC4C3B10B83E934D32068FBE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242655860, false, "687708ef-bae9-4671-888e-3094f2402029",
+			"@@@InProc at DC4C3B10B83E934D32068FBE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242656680, false, "5e56a856-1220-4fa4-ad0f-1f88cf89887a",
+			"@@@InProc at 8025C52CE5418487C49C9C40", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242658330, false, "9a98364f-0977-4cb6-a6de-cc149c582552",
+			"@@@InProc at 8025C52CE5418487C49C9C40", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242659140, false, "0e4fab8d-4fec-4025-985a-b0822e2e93af",
+			"@@@InProc at AAE28D2DAB7ECFA8D6C5FA77", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242664750, false, "e0078fb7-65d1-4933-8018-a1734c343816",
+			"@@@InProc at AAE28D2DAB7ECFA8D6C5FA77", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242666020, false, "70d2bb95-0c6a-42a3-b092-f91ef86dbbde",
+			"@@@InProc at 0683BA3AB7F2E504162A4430", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242668150, false, "ca79adc9-49f0-4f43-bdd1-68bebf3ac0c5",
+			"@@@InProc at 0683BA3AB7F2E504162A4430", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242669250, false, "464f153e-d03a-478d-9e9b-9b235d5d9c20",
+			"@@@InProc at F13CA1BD1E875C5141AD1BEA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242677900, false, "f407f213-637d-4f3d-af0b-97b1b1a84e39",
+			"@@@InProc at F78EE3C895C30DDA404DFBE1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242679120, false, "e8f0601a-5198-4bad-a4cd-c2815c7b4ebf",
+			"@@@InProc at F13CA1BD1E875C5141AD1BEA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242679230, false, "eafe262f-b70d-4fe6-a37d-d322465cbe23",
+			"@@@InProc at F78EE3C895C30DDA404DFBE1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242681040, false, "6f21d524-258f-44fe-9f63-75f236bd3a41",
+			"@@@InProc at 885100DE7C2AD95EFD54BB79", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242689980, false, "c0156533-cc99-41c4-847e-ff0e33428ccd",
+			"@@@InProc at 885100DE7C2AD95EFD54BB79", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242691230, false, "f7e4a56f-88b9-43e0-988a-d61687d26aa8",
+			"@@@InProc at 046EEAFB0F5A5744365C0CEF", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242692290, false, "4759338a-5114-4ac6-a367-c16ee186f839",
+			"@@@InProc at 046EEAFB0F5A5744365C0CEF", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242693530, false, "ea644d78-1072-42dd-bbaf-8381b0e7b815",
+			"@@@InProc at 250BCD9CD164B6E2E35A95D9", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242700160, false, "4825d6a1-d54c-4765-97db-4aa5d3fd48c3",
+			"@@@InProc at 250BCD9CD164B6E2E35A95D9", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242700980, false, "e1308f25-9d40-4fe3-844a-feaf1a030f52",
+			"@@@InProc at 84199D607F1E266413976911", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242704370, false, "724f31f8-d365-4226-b12d-240ecd031727",
+			"@@@InProc at 84199D607F1E266413976911", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242705550, false, "63b7df71-de83-4468-8002-b867ce062a04",
+			"@@@InProc at A006CDA4457BD524900CE7D9", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242708390, false, "e62068c6-a202-430d-a079-dce3da01fdc5",
+			"@@@InProc at A006CDA4457BD524900CE7D9", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242709320, false, "328e1a61-f6ca-4934-86a1-713dba16abd1",
+			"@@@InProc at 1D87AC8716BEFBCCDC1DF37E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242715000, false, "5cc7d730-f533-478b-b870-506537f1f984",
+			"@@@InProc at 1D87AC8716BEFBCCDC1DF37E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242715950, false, "390ef43f-39fb-42c5-a6d4-bf6ba3e974dd",
+			"@@@InProc at DD274A3C953027513082B947", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242718650, false, "b6488dee-0b22-4eeb-8213-f99bee07ae24",
+			"@@@InProc at DD274A3C953027513082B947", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242719920, false, "8b2b2b74-e647-4ea8-a3aa-944435128b84",
+			"@@@InProc at B8A5BCA2A0B4565B69C21E4A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242725980, false, "0c0abd90-53da-49ad-8a4a-dadb029bc9ca",
+			"@@@InProc at B8A5BCA2A0B4565B69C21E4A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242727290, false, "151c788e-fa7a-4dd2-a71a-fdb023d878fd",
+			"@@@InProc at 427059097CD0B75FA0F5F49B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242728790, false, "ea5b955b-4d00-4c51-b2f9-c95bf5f2d2fb",
+			"@@@InProc at 427059097CD0B75FA0F5F49B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242729580, false, "b6d19af7-0a28-4175-bd22-b878b990c145",
+			"@@@InProc at EE66C3C6CABA96997DA84102", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242737250, false, "7c86127c-f029-4ccf-80dc-092974856576",
+			"@@@InProc at EE66C3C6CABA96997DA84102", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242738450, false, "962a1bc6-5e96-41c4-a702-1af2eef40de4",
+			"@@@InProc at B58BCF7379695BA904C14A72", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242739530, false, "2968383f-a3b1-4d10-a3a1-174959c3e4dc",
+			"@@@InProc at B58BCF7379695BA904C14A72", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242740770, false, "604fc1e3-5de8-4256-bf2e-8ea37237db1e",
+			"@@@InProc at C253C7693D3E8C1A4D96241D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242748150, false, "479f53b3-9b85-4f09-9f97-19bd2994dd9c",
+			"@@@InProc at C253C7693D3E8C1A4D96241D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242749200, false, "3d613e2f-95af-4058-80e4-8026fd90d493",
+			"@@@InProc at C1157EF5E711FD00E5D14E09", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242754230, false, "bac68d80-cf49-47dc-bf28-c8cdf45d8c4c",
+			"@@@InProc at C1157EF5E711FD00E5D14E09", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242755060, false, "d4042178-55c0-46ca-a1c6-ce9c75e5bc71",
+			"@@@InProc at 36E6ADCCC4CF2901C01573A2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242759480, false, "c8244aee-c1e6-4085-8bd5-4f255d0a3052",
+			"@@@InProc at 36E6ADCCC4CF2901C01573A2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242760700, false, "a6918d6e-62f3-4cca-9950-9ee8e52da107",
+			"@@@InProc at 90F76104253D3872D0B154CC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242763390, false, "cb1842da-88ec-4975-88f2-a03d8e690ad4",
+			"@@@InProc at 90F76104253D3872D0B154CC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242764470, false, "c4e16398-39fe-4492-9ff1-73c5c7cd6433",
+			"@@@InProc at B1C903572F4BCD71B01A5197", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242769580, false, "b4f54060-9f7b-4abf-8f93-9442e94aaedc",
+			"@@@InProc at B1C903572F4BCD71B01A5197", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242770410, false, "b5d30244-ba4e-48c2-938a-51e8baf5c462",
+			"@@@InProc at 4A35508D317420C675AF5C02", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242772980, false, "432e4fa8-bed7-48a7-ad06-4fe999afcc07",
+			"@@@InProc at 4A35508D317420C675AF5C02", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242774190, false, "e9851af0-4f33-4222-9ff5-1a69409ff427",
+			"@@@InProc at 9308EC9338DE90C4AF1B97CA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242836440, false, "940535a3-599d-4dea-9523-3771b62c0ed9",
+			"@@@InProc at 9308EC9338DE90C4AF1B97CA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242837440, false, "dacdb7ff-b91f-438c-bbea-b83ac915465d",
+			"@@@InProc at D4393E778E25DBA3B33E4533", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242839340, false, "a31b2a93-3783-4688-a8f0-162c6a9c96b4",
+			"@@@InProc at D4393E778E25DBA3B33E4533", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242840190, false, "a744d0c2-a0e6-4706-9db3-8b721fba0a2d",
+			"@@@InProc at 9D09DF8F876DCBDB15297D50", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242846830, false, "295690ac-1a2d-414e-9bb5-e43409330e58",
+			"@@@InProc at 9D09DF8F876DCBDB15297D50", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242848190, false, "87baed4d-f414-41fb-86dc-04f78de4a293",
+			"@@@InProc at 0B96D2AB44C471BCBC4A880E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242850010, false, "1cc2c3bd-89d0-4201-a21e-a474c47c1dd0",
+			"@@@InProc at 0B96D2AB44C471BCBC4A880E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242851970, false, "9752df05-32c2-451d-a367-4a96009d4ba5",
+			"@@@InProc at 998244035C1F2041027C6291", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242856680, false, "71b0135a-b052-4879-9417-5e5a43aaa894",
+			"@@@InProc at 998244035C1F2041027C6291", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242857610, false, "7184b52a-f65f-42c0-b80f-978adc7966a3",
+			"@@@InProc at 2A49D541EDE6DAFCA52FD4D3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242864530, false, "52ff61f7-0e40-4c1d-9a54-d91c8b9cd9a9",
+			"@@@InProc at D4D51EFA3C992D070A1FAE18", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242865690, false, "c87f0b6a-fd1d-4a21-990e-7b3aa48d51e3",
+			"@@@InProc at 2A49D541EDE6DAFCA52FD4D3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242865770, false, "25fcc742-428d-4d90-adfe-fc65f2c3d435",
+			"@@@InProc at D4D51EFA3C992D070A1FAE18", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242867380, false, "24a0742b-b9be-42a6-82d6-7a5aa20e421b",
+			"@@@InProc at 7F4D1944E42EE0883BD976B7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242874990, false, "84dfb834-024e-43d5-a971-03a3cb1017fb",
+			"@@@InProc at 7F4D1944E42EE0883BD976B7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242875800, false, "1fb6e6d8-afac-435d-9972-ed094f2ced53",
+			"@@@InProc at 4409D6CF502AED5517DE6801", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242876640, false, "a55b8e18-725e-4101-b2d9-0762975434a5",
+			"@@@InProc at 4409D6CF502AED5517DE6801", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242877460, false, "a7785f66-1115-4c1d-bd36-919f8b472c35",
+			"@@@InProc at 66D2B3D0FBCAAEAFB613B21E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242883850, false, "2d7bf0a2-01fc-4cc2-91b8-cd22ef7e6c87",
+			"@@@InProc at 66D2B3D0FBCAAEAFB613B21E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242884790, false, "c91b0762-5dc3-4de9-963b-72e644ed7e03",
+			"@@@InProc at 87F19D9CFE88FB03C4FFE3D5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242887030, false, "3893d689-138b-4dae-9a96-b8708d3c74fb",
+			"@@@InProc at 87F19D9CFE88FB03C4FFE3D5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242888110, false, "a41d0425-8dc6-4c38-9bbc-ed08e5911e62",
+			"@@@InProc at 6C7D2CF31AB4A1EFDE09349B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242893330, false, "8b50ebd4-d7f4-476d-8a60-49b64e8cec53",
+			"@@@InProc at 6C7D2CF31AB4A1EFDE09349B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242894610, false, "854c1b12-91b2-498d-b5c8-354e5ae46109",
+			"@@@InProc at A925639E051D35BB2B18FFE4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242897820, false, "86e23e57-8b48-429b-8fb2-1847a336fade",
+			"@@@InProc at A925639E051D35BB2B18FFE4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242898720, false, "6a74fca3-704c-4a7f-bd6e-0f01de355409",
+			"@@@InProc at 3BAA137B9B244DB122CCA1E1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242903240, false, "6280295a-890c-46b0-b3c1-373a72afa345",
+			"@@@InProc at 3BAA137B9B244DB122CCA1E1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242904140, false, "4d91986a-f36d-4f8b-a523-9b70fe48fdbf",
+			"@@@InProc at BA8746923772FCED65215EDC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242906660, false, "2ab32505-50bc-466f-8070-11e6b7c0d707",
+			"@@@InProc at BA8746923772FCED65215EDC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242907630, false, "5bbe4cf5-e627-46c6-b512-2e5754c865f3",
+			"@@@InProc at 0C21171ACF62ACC71ADD14E9", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242911980, false, "b25d77bc-a293-45ad-ae95-a8e5f8cc441d",
+			"@@@InProc at 0C21171ACF62ACC71ADD14E9", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242912770, false, "b4d69b78-ac63-471d-b32d-0d738d2b4e75",
+			"@@@InProc at DA66ADC6E547CE211233825E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242916780, false, "23b2cb08-3a4b-40c8-91c9-b08f635757ae",
+			"@@@InProc at DA66ADC6E547CE211233825E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242918040, false, "1778530d-18b4-4a34-95bc-1fdef03c294f",
+			"@@@InProc at 5E3E38D881AAA7F8E684972C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242920530, false, "a043e2c3-2d1b-4e92-88b4-22bc5e8ca064",
+			"@@@InProc at 5E3E38D881AAA7F8E684972C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242921790, false, "00d8d010-3e04-41ae-9a5c-2d14c984e280",
+			"@@@InProc at A073A0F5F1E7E33D1FCDBA8C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242927000, false, "8411abfe-2013-416b-8374-765542290afb",
+			"@@@InProc at A073A0F5F1E7E33D1FCDBA8C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242927800, false, "ffe09fe7-5ad0-4e31-ad44-6ff0b741b8ac",
+			"@@@InProc at E46622B7B41B44F9D5537457", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242930030, false, "e79a723c-8511-497c-ac22-25284c1e7750",
+			"@@@InProc at E46622B7B41B44F9D5537457", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242930830, false, "c46851ba-e0bc-4536-998e-3f1704617586",
+			"@@@InProc at B1C630B51FCCAB83935ADA80", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242935910, false, "6d1cfc0d-2484-4e5f-8887-b8e8aef213f5",
+			"@@@InProc at B1C630B51FCCAB83935ADA80", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242936930, false, "8ab697f2-afcd-41fd-9255-0df90690faa1",
+			"@@@InProc at 44CCB4503707C2663FF41535", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242938600, false, "82aa0b29-f8cc-4185-9570-6df461e650fb",
+			"@@@InProc at 44CCB4503707C2663FF41535", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242939400, false, "7bf8851e-fa12-4daf-aaf4-061a520ab61b",
+			"@@@InProc at 5929F475171EA7D3EC1AFCAE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242947020, false, "11082329-5561-42d3-8070-e36e54861393",
+			"@@@InProc at 5929F475171EA7D3EC1AFCAE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242948690, false, "8b26a67d-3937-47a2-8806-66264ffe1948",
+			"@@@InProc at 32F131A23B63F97097357F60", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242948850, false, "bb618102-297d-4e21-84c6-a91cfc3f9d15",
+			"@@@InProc at 32F131A23B63F97097357F60", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242951360, false, "c30c63ec-5b50-4e62-a2b0-0e81da0be55b",
+			"@@@InProc at 8876E1C08C167AA2C41E4AA7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242958900, false, "e4741aea-fb68-42a7-a4a5-31e6e675f4f2",
+			"@@@InProc at 8876E1C08C167AA2C41E4AA7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242959760, false, "3bf25c42-ed84-4af5-8b8f-74b25008af2a",
+			"@@@InProc at 7C8B68A576246B8B59C84BA9", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242960690, false, "da60c6c5-0edb-43fa-ae1d-8ad30fcd81b5",
+			"@@@InProc at 7C8B68A576246B8B59C84BA9", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242961750, false, "62461f3c-b208-48b3-a1a5-218d9996edaa",
+			"@@@InProc at B98B8581318A15BC1B554109", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242969260, false, "ec2eccd2-ebaa-426b-b4d4-fde9be90af71",
+			"@@@InProc at 110485E41A898E21661AB20C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242970220, false, "c8613d90-4885-4428-9071-66a695477128",
+			"@@@InProc at B98B8581318A15BC1B554109", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242970300, false, "23b75b04-b92d-4e54-ad23-5dd31e0a4f52",
+			"@@@InProc at 110485E41A898E21661AB20C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242971640, false, "c071014c-f3f6-4e3c-9d1f-d301b0a6b6d8",
+			"@@@InProc at E2644B0A94E74AF853AE48F0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242978920, false, "ce2cac48-1ed3-459b-b4dd-40a805d0bd51",
+			"@@@InProc at A3D7F78BA7ED1015AF6DC011", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242979880, false, "61144068-c9bf-414b-9296-7c593e0a8e01",
+			"@@@InProc at E2644B0A94E74AF853AE48F0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242979950, false, "c9932cf8-cb7b-4181-96da-8c4d4c4222cc",
+			"@@@InProc at A3D7F78BA7ED1015AF6DC011", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242981400, false, "3815fed9-b54b-4998-bfda-f5f705084f60",
+			"@@@InProc at 067EE07BDBFED68FE3BE3BC2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242988800, false, "43797f6a-3e77-4992-9c54-6479db0c7432",
+			"@@@InProc at D1541DB94E0C969B807ADBD8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242990010, false, "9e54b2b1-8b5e-4fde-b620-dabc4265aa37",
+			"@@@InProc at 067EE07BDBFED68FE3BE3BC2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242990090, false, "bb263f82-937a-4bfc-9c00-bd8cbbe7d8f2",
+			"@@@InProc at D1541DB94E0C969B807ADBD8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242991650, false, "31b4f261-d932-427d-90df-23fd1f164107",
+			"@@@InProc at DDB979917BA82E8124C8E352", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878242999650, false, "0426d70c-2092-440f-b770-2bfa73a185dc",
+			"@@@InProc at A0DF126958D41E4689620705", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243000620, false, "dcf94e28-f47c-4c47-af0e-47a37b8fb1d7",
+			"@@@InProc at DDB979917BA82E8124C8E352", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243000720, false, "6494ee0c-339e-4d7a-8672-34bda36fe83b",
+			"@@@InProc at A0DF126958D41E4689620705", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243002260, false, "6e4dcd30-692c-49a2-b5e3-bda174f1d471",
+			"@@@InProc at 09CCC72226A1940F04612B50", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243010190, false, "77682a1c-8f5a-43fb-a7f7-209c0baa52da",
+			"@@@InProc at 09CCC72226A1940F04612B50", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243011170, false, "4ea5b572-81c2-4523-8d89-01ba4e669fcd",
+			"@@@InProc at BFFC31006002EFAC408BD79A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243012190, false, "06e97826-3f3d-40b1-93da-6209cb037deb",
+			"@@@InProc at BFFC31006002EFAC408BD79A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243013250, false, "d3b49dfb-2a91-448c-bc2a-d3bd2ae98729",
+			"@@@InProc at 0F9222ADC5239BB7667214E4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243018770, false, "dadc5adc-f457-4a07-ae6f-b8c490a80165",
+			"@@@InProc at 0F9222ADC5239BB7667214E4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243019720, false, "30397046-b302-405d-88d7-73281251a9a9",
+			"@@@InProc at 7E9EDF8651B0941CBB27EEE5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243021330, false, "bc24f53f-ac31-4197-881c-36b1a033b3ef",
+			"@@@InProc at 7E9EDF8651B0941CBB27EEE5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243022110, false, "a90d26f3-9fe7-41b2-b884-625193dbb9c4",
+			"@@@InProc at 1020902CCA8D44131C47DEDD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243027450, false, "b6d358df-f1f7-429b-b7c5-97217d60c440",
+			"@@@InProc at 1020902CCA8D44131C47DEDD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243028480, false, "3acfb027-6bfa-40bf-9f65-bbc46529e9f4",
+			"@@@InProc at E8446F80517DB39B74F61B2B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243030030, false, "69f82e67-2d3d-44cb-9ce9-ad125483612a",
+			"@@@InProc at E8446F80517DB39B74F61B2B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243030800, false, "e8bb4787-afdd-4366-8a3d-9a3099f2ba91",
+			"@@@InProc at 37DC49109A2661F17F23C6D4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243036820, false, "9f5d479c-e614-4678-8094-313b41964492",
+			"@@@InProc at 37DC49109A2661F17F23C6D4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243038130, false, "e8eb660e-fb90-4034-b9fa-c51fb3d9a1d7",
+			"@@@InProc at 9582631849476D6CC95928F2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243041440, false, "dafbf369-3db1-4199-bbda-d7828c26a386",
+			"@@@InProc at 9582631849476D6CC95928F2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243042490, false, "68a15f9e-08fa-4ce4-a05b-6b80978a20ec",
+			"@@@InProc at DF35858F3075DA1B6FCBA3F1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243045800, false, "47f6c8da-4b69-40e4-aff7-c7b572379098",
+			"@@@InProc at DF35858F3075DA1B6FCBA3F1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243046730, false, "0adfe0bb-4874-42c3-9321-513d042ebc17",
+			"@@@InProc at 0CFAC43A08FAF9376E16B75A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243049370, false, "8b4d4038-6a2e-4a8e-b392-1ff7435609de",
+			"@@@InProc at 0CFAC43A08FAF9376E16B75A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243049910, false, "e40ba82a-b215-467f-8e6b-171079a18cb3",
+			"@@@InProc at DCB7A00199E9B64E59DA4458", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243052530, false, "231b3aea-873d-4cfa-9ce1-6afeb5d4cd60",
+			"@@@InProc at DCB7A00199E9B64E59DA4458", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243053140, false, "c2544076-14b9-4a6e-98f0-3866abe4f4a3",
+			"@@@InProc at 238E868CA17C448DD581FB01", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243056660, false, "a8c5fa92-46eb-445f-afc8-a15c8137129d",
+			"@@@InProc at 238E868CA17C448DD581FB01", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243057410, false, "a437ee85-07e6-4a61-9a62-1320983e08d4",
+			"@@@InProc at 646103336D993019B953B5D0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243061510, false, "cb5c7f9d-a38d-41f6-8847-ae63666e37e4",
+			"@@@InProc at 646103336D993019B953B5D0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243062510, false, "4eb37ad6-0c1a-4ad0-a7fa-149d0f512cc4",
+			"@@@InProc at 90DA0FD038FF82032B50D4B3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243063510, false, "458d251d-06ff-4a86-a52a-35bdec135194",
+			"@@@InProc at 90DA0FD038FF82032B50D4B3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243064060, false, "046b51af-e70c-4c8a-b4c8-e3a83d2318d6",
+			"@@@InProc at 1C1E3567CDBB95841EC58C3D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243068090, false, "e89baa9a-7dc7-4d23-82ce-a16ba3547b57",
+			"@@@InProc at 1C1E3567CDBB95841EC58C3D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243068920, false, "a68bbcc7-085b-4059-b686-14647b898e10",
+			"@@@InProc at DD6CFE04E6AD76ECAC4A62C4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243070200, false, "979f10c4-6780-45fb-8eb9-3707774ef344",
+			"@@@InProc at DD6CFE04E6AD76ECAC4A62C4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243070920, false, "c5b18570-216d-4bd7-8435-4710803b5a77",
+			"@@@InProc at 862CF09EE714A1D6B440A2BE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243074090, false, "88e1c90f-c7ee-4b2c-aaf5-c8c41d93283a",
+			"@@@InProc at 862CF09EE714A1D6B440A2BE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243074630, false, "3ae6a4fe-3986-4c74-844a-ac4d486ff0b8",
+			"@@@InProc at 42DEBC66AF4B9A18944DEC18", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243076580, false, "d98bf427-343e-4bea-bf3c-e06b51b2c6ab",
+			"@@@InProc at 42DEBC66AF4B9A18944DEC18", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243077190, false, "e69cd96f-fe4a-4039-b4dc-3ae66a06a123",
+			"@@@InProc at 49D61F7C56234DA79BD6218F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243079680, false, "f1eb23b8-f15d-4d06-8f29-11fe2f4b79fa",
+			"@@@InProc at 49D61F7C56234DA79BD6218F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243080220, false, "e22b85f7-085d-4caa-9b98-657304e70c3f",
+			"@@@InProc at 004C190AB5C484FBFD9B8901", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243083010, false, "867777ec-1dc0-4e6d-b76d-20c3ab721c41",
+			"@@@InProc at 004C190AB5C484FBFD9B8901", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243083710, false, "8184e201-95b5-4295-99ea-bba52e026b48",
+			"@@@InProc at 2B0866A8F84911F679318B8B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243085340, false, "2950b017-cb9b-44b1-aec3-fc69dac3d046",
+			"@@@InProc at 2B0866A8F84911F679318B8B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243086370, false, "632b9ec5-b126-4f0d-860a-b25ad3b5440c",
+			"@@@InProc at 89D4FB27DBEBD9690027A319", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243090310, false, "84d1915b-07da-47a1-83ba-e9b0b468aef7",
+			"@@@InProc at 89D4FB27DBEBD9690027A319", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243090960, false, "5058cb33-73e1-44a2-84ae-deb6af3627a8",
+			"@@@InProc at 1780E610938CD191DF0AC601", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243093060, false, "56e47f38-253e-4ab1-89db-df47cd0b0dbc",
+			"@@@InProc at 1780E610938CD191DF0AC601", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243093630, false, "86cf7375-dada-4e32-b531-66486dc1d8d7",
+			"@@@InProc at 4D755D7DAA1D0D2523734692", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243096670, false, "2e1aa8f5-91ce-413b-a853-5434d0624e03",
+			"@@@InProc at 4D755D7DAA1D0D2523734692", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243097200, false, "9f1d1c99-0655-4241-be33-799e16067ae7",
+			"@@@InProc at 8DDAAF889F8345FD48EA70C1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243098710, false, "50d4612f-c3e7-4b4a-a004-6e84e7b5ef01",
+			"@@@InProc at 8DDAAF889F8345FD48EA70C1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243099240, false, "e22436ef-8b4a-4a35-b914-afb419002d81",
+			"@@@InProc at D28338856CA52391C6A6DD98", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243103020, false, "a76b3c5a-e29b-49c6-acee-a894fa87c6f3",
+			"@@@InProc at D28338856CA52391C6A6DD98", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243103980, false, "9323eb12-825e-4c6a-b3bb-254d8372239a",
+			"@@@InProc at 900ABEF096C13C7F3360E342", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243104150, false, "4c115064-b9bc-42b7-a598-eedbbcc1adfb",
+			"@@@InProc at 900ABEF096C13C7F3360E342", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243105660, false, "41687473-8ddf-43f9-afaa-8718b9b4ac48",
+			"@@@InProc at 5104DC446B233B15632DD432", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243110280, false, "c746d1bc-5f2a-403a-bd26-26f401e810d5",
+			"@@@InProc at 5104DC446B233B15632DD432", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243110880, false, "48bf85d2-58a0-48a8-b94a-26f86b928d8a",
+			"@@@InProc at 110680E0B8220CA0612A60FA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243111590, false, "3dad8dc0-8dd6-43a8-a7c3-79307e2c3fe2",
+			"@@@InProc at 110680E0B8220CA0612A60FA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243112310, false, "eea91a17-9950-4aac-99b6-038ca7ad7a4d",
+			"@@@InProc at E902D6BB5202C7C80758D359", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243116600, false, "a376f227-15e7-425e-b99b-5b50389769ec",
+			"@@@InProc at E902D6BB5202C7C80758D359", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243117390, false, "cc2e453b-8941-46de-9c0a-b041453271d9",
+			"@@@InProc at E0123031182603CEAFBA9B04", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243119610, false, "7d9103de-a313-4f54-8336-3a8c0553bd17",
+			"@@@InProc at E0123031182603CEAFBA9B04", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243120510, false, "bcf3732d-7172-4906-ab58-7c4c9c6d4f97",
+			"@@@InProc at 1F8D70F4A9630DB1DF8B4783", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243124560, false, "484526a7-6822-4de7-bd64-d542b418f909",
+			"@@@InProc at 1F8D70F4A9630DB1DF8B4783", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243125190, false, "de86a50d-ac40-4500-b94d-b9402536ba87",
+			"@@@InProc at 94F0CC3D64C387A6E3AAC7F6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243127680, false, "73faf2c9-fa8c-482c-b097-97b4031a8d86",
+			"@@@InProc at 94F0CC3D64C387A6E3AAC7F6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243128540, false, "79491001-3148-4ab9-8dd5-db69ba9a3811",
+			"@@@InProc at 0A04EDC2562356F105FD4370", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243132020, false, "e648b6c0-0b45-41d3-b6ef-df32c2bedbbb",
+			"@@@InProc at 0A04EDC2562356F105FD4370", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243132720, false, "505655bb-2519-4f1f-8adf-9042d7d9744e",
+			"@@@InProc at 12A5B37A22020D3466488068", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243135000, false, "66fdbf75-c7d5-4e9b-aceb-1756144ec314",
+			"@@@InProc at 12A5B37A22020D3466488068", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243135700, false, "42b1a7c0-1386-4051-9b07-563a8de774e0",
+			"@@@InProc at 78E24D608ABA7D725622D3B7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243139080, false, "a97644df-d906-4ce2-a266-66c411de6c20",
+			"@@@InProc at 78E24D608ABA7D725622D3B7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243139610, false, "830b4bee-4760-4da4-99bb-7b138b5095f4",
+			"@@@InProc at 285136D30D8BD823FB5F2B13", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243142160, false, "b6592f02-7622-4b91-b0c3-4c2aa2cdd041",
+			"@@@InProc at 285136D30D8BD823FB5F2B13", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243142770, false, "d23245b4-0ec6-4611-bdbd-44812acea2f5",
+			"@@@InProc at FEB860E6FBDAACB475D210A6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243144920, false, "f1025eac-76a0-4c88-b140-256552ec99b6",
+			"@@@InProc at FEB860E6FBDAACB475D210A6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243145570, false, "ad4ba2fa-f399-4cec-b643-afca62afbd32",
+			"@@@InProc at 531A3ADDB256F21D18DCE1EB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243148690, false, "05aed5b2-0136-479b-91c7-bbb9785de1cc",
+			"@@@InProc at 531A3ADDB256F21D18DCE1EB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243149280, false, "e8211dbb-9e2d-4061-9d5b-38188db82e28",
+			"@@@InProc at 3BAC9E06187B09AD27828A03", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243152040, false, "08dc5357-a657-4895-8843-12b8ac48094f",
+			"@@@InProc at 3BAC9E06187B09AD27828A03", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243152730, false, "bc0c4174-e0f1-4666-abf9-7c57e7414aae",
+			"@@@InProc at 9B6034EA4C97B95699DC6AA3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243158150, false, "d53d3ba2-6635-47e0-a2b7-ece07cbd9ece",
+			"@@@InProc at 2714ABA87339D29B71C0CA65", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243159370, false, "826a4628-31b6-467d-8916-4951cdc9a4c6",
+			"@@@InProc at 9B6034EA4C97B95699DC6AA3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243159430, false, "e46e218b-58bd-42e0-aea7-7c6512348dff",
+			"@@@InProc at 2714ABA87339D29B71C0CA65", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243160740, false, "c1e7b35a-c4a5-4057-bf42-798d8320d1ce",
+			"@@@InProc at B52D7ED823AD7CCF4FF5303D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243165910, false, "53b97852-9798-44e7-94fe-2d09f12f196a",
+			"@@@InProc at B52D7ED823AD7CCF4FF5303D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243166490, false, "ce63a481-d9ae-4d23-879b-94c4f72dad60",
+			"@@@InProc at 0B3AF2AA65DB208BD35C9008", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243167500, false, "bb9903d5-9b40-4f45-b9b5-a3b15af1cd8a",
+			"@@@InProc at 0B3AF2AA65DB208BD35C9008", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243168220, false, "a1c6eb47-d734-4d49-b23d-c36e4b0f09cb",
+			"@@@InProc at B3464ECE02C44CA5AD6DEC62", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243172240, false, "ed155ccd-1fd5-4aee-8ce6-8e623a4a2cbb",
+			"@@@InProc at B3464ECE02C44CA5AD6DEC62", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243172800, false, "ea500627-6aff-4678-bebe-51e1a145cff1",
+			"@@@InProc at BC822335EA7B9BD9C1A0FC2E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243175070, false, "5c9abd53-cade-4905-be41-c01bd805e820",
+			"@@@InProc at BC822335EA7B9BD9C1A0FC2E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243175860, false, "d5f6397e-53fc-462c-b253-fabf637df2ab",
+			"@@@InProc at 2ADEADBDFCC0824C805C6F84", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243178300, false, "c5e44094-5aa2-4c5d-b79e-57bdcae51e67",
+			"@@@InProc at 2ADEADBDFCC0824C805C6F84", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243179230, false, "5ba4b5b9-4295-4a36-9950-2e317320b95a",
+			"@@@InProc at 5C699DCB8D6A29735B7D698B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243183690, false, "0e4c3106-c497-4ea9-8d2c-4463dd1ce926",
+			"@@@InProc at 5C699DCB8D6A29735B7D698B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243184480, false, "057295c0-7f06-4984-ae18-ab06f27cad1b",
+			"@@@InProc at C1F0A361C7593E2237D69327", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243185200, false, "0d3e345d-920e-48af-9040-d5a9969f23d1",
+			"@@@InProc at C1F0A361C7593E2237D69327", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243185880, false, "0fb77cf5-b856-4ee0-8fa3-df269e27d194",
+			"@@@InProc at C24EF9B04C88AA415E3A8A3C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243190500, false, "769f580f-123b-41e1-913e-c8045ddc14d3",
+			"@@@InProc at C24EF9B04C88AA415E3A8A3C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243191350, false, "5b1c6c77-36da-437b-b5df-4f4e0e4f80c4",
+			"@@@InProc at 8BEA200DB05F9843C54A86AA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243192370, false, "f345ddbb-76d5-4dac-9ed3-ec2dc94f3b82",
+			"@@@InProc at 8BEA200DB05F9843C54A86AA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243193020, false, "86ec76e7-369f-41db-977a-4153a7bc7848",
+			"@@@InProc at DAE78EA46D9FC924D183A84A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243197950, false, "df253295-a6bf-4c2f-9da3-a8bbe61a65c9",
+			"@@@InProc at EA9E49D7F2038057480A4809", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243198710, false, "fd3b4286-b5bc-479d-9838-18216a4fec40",
+			"@@@InProc at DAE78EA46D9FC924D183A84A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243198790, false, "6f99cc4e-1691-4abb-abc2-782032f3a2b1",
+			"@@@InProc at EA9E49D7F2038057480A4809", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243199840, false, "010e73cc-060c-41f4-bdd7-f2433257d29d",
+			"@@@InProc at F11AA6C5F7E61331B3FD6471", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243240690, false, "5fc1ecfd-ae69-4026-b39e-02de39b9fb05",
+			"@@@InProc at 56D5F1AF3F6821B4D3D5F918", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243240770, false, "6498b861-5aa5-4610-b470-f0c7287d800d",
+			"@@@InProc at F11AA6C5F7E61331B3FD6471", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243241950, false, "b07f9aae-d4e7-4911-a047-ae259bdce76c",
+			"@@@InProc at 56D5F1AF3F6821B4D3D5F918", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243242020, false, "671bf01c-8899-4f79-9f76-93122484a554",
+			"@@@InProc at CE0D99DE04340D7E330648F8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243250430, false, "4ce81f51-bd26-42b2-ba00-ea761eb8e142",
+			"@@@InProc at CE0D99DE04340D7E330648F8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243251410, false, "b92db4d3-a467-4663-8249-0bef1cc74327",
+			"@@@InProc at 1FFAE26E3D7F89A61990FED6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243251590, false, "338bdc7f-9904-46c1-87ad-3d5c5e2f2b68",
+			"@@@InProc at 1FFAE26E3D7F89A61990FED6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243253760, false, "dec8ba69-41d0-4da0-afe8-fea4593b2cdf",
+			"@@@InProc at AAD635C8D200484A4C5C6143", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243261970, false, "ae0f7e83-2bec-4d9d-b7f7-aeee858f051b",
+			"@@@InProc at 2914648F876480DC3EABE86B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243262310, false, "3809f903-f505-4c51-a3c2-9b52248a767a",
+			"@@@InProc at AAD635C8D200484A4C5C6143", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243262790, false, "8b1558c7-ffc8-4deb-95c7-1d0e247ec368",
+			"@@@InProc at 2914648F876480DC3EABE86B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243265100, false, "2904b125-6efe-42d5-b1be-a8798cd045ea",
+			"@@@InProc at FDA7E38F3DFAC4596EDB7FD6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243270260, false, "25f04bfc-50ac-43b4-a43e-62061775171e",
+			"@@@InProc at 1A9A6F3A57223F2C2FBB8BD2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243271010, false, "bc8a383a-a985-43b3-b21d-4ab862efff1d",
+			"@@@InProc at FDA7E38F3DFAC4596EDB7FD6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243271050, false, "2bdc9441-1ca8-44d7-8af6-2c31b412143f",
+			"@@@InProc at 1A9A6F3A57223F2C2FBB8BD2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243272160, false, "269099a2-a1d8-4b81-9eee-49ba9d7a3d29",
+			"@@@InProc at 2B49240B78831A1744659CBF", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243278940, false, "d63a2ea6-54e6-4f99-8a5e-01b0e9278f6f",
+			"@@@InProc at 7988C30A5154F11A414D3967", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243279020, false, "ba5e6bad-b86d-40ba-950e-5601b571295a",
+			"@@@InProc at 2B49240B78831A1744659CBF", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243280600, false, "8954d382-5d29-4905-b1ab-df274dadb97f",
+			"@@@InProc at 7988C30A5154F11A414D3967", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243280670, false, "facd3b62-3b5e-4131-ab73-bb139f741422",
+			"@@@InProc at E7B914A0EA9202786DCF591F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243288130, false, "c68dd224-52b9-444b-b59b-41cf52acbe4d",
+			"@@@InProc at E7B914A0EA9202786DCF591F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243288710, false, "f8c65a2a-13bb-4cc3-927b-5996e255947a",
+			"@@@InProc at EEA7B467CD17192F016DAC8D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243291090, false, "21e061c1-c922-4a99-b5b6-871a52c262e0",
+			"@@@InProc at EEA7B467CD17192F016DAC8D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243291760, false, "9a47bb0e-b038-4a2f-9054-9bff13a6465b",
+			"@@@InProc at 2C79140100B5B985AD8F94F9", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243295170, false, "8d4380dc-9098-4502-89fa-bfd19ef4ce25",
+			"@@@InProc at 2C79140100B5B985AD8F94F9", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243295980, false, "af0693f9-3b2a-4e22-a759-9158405ed1a1",
+			"@@@InProc at 4798D30822657526B2F344E7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243297700, false, "9ffaecf9-a0cd-407b-900d-72d5f58e268d",
+			"@@@InProc at 4798D30822657526B2F344E7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243298320, false, "9c1e67fe-ee45-409e-a104-2f2a43e5ab70",
+			"@@@InProc at B2AB331D068BA3961A814982", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243302300, false, "f122969c-0dc8-40b2-9f8c-15546ceee6fe",
+			"@@@InProc at B2AB331D068BA3961A814982", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243303140, false, "797c3f63-2ac1-4175-af9c-5f7d55c88806",
+			"@@@InProc at 3F01FFD196F5F8465A393D40", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243306180, false, "e2cb4216-07d7-4ec8-8841-9a6c320a3bd3",
+			"@@@InProc at 3F01FFD196F5F8465A393D40", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243306720, false, "b91bc64b-9308-4f8c-a90d-9bc7ffffbb04",
+			"@@@InProc at FA8C48B63F06A1F14DE25093", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243309740, false, "8bbacb77-1a5d-4fc3-87be-a92cbf5cbcfe",
+			"@@@InProc at FA8C48B63F06A1F14DE25093", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243310490, false, "6f497915-1c32-44f6-8ee3-d04d3e9d16b5",
+			"@@@InProc at 5C7529C92629499032DB8F2E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243314350, false, "e4e417a7-efee-47ee-8c8a-bfe3a5eb6031",
+			"@@@InProc at 5C7529C92629499032DB8F2E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243314890, false, "88d2cac2-59aa-46fd-9cfa-fc885dbcfcf5",
+			"@@@InProc at 93A09FE57546F02910CEAE39", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243317070, false, "e0575b68-1a4b-4c60-87c9-5b90968e0d4c",
+			"@@@InProc at 93A09FE57546F02910CEAE39", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243317770, false, "b80dc351-0f09-4759-ab1a-7583a0c887fa",
+			"@@@InProc at 8CB13C26731CE159F626E301", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243320680, false, "2c076dc5-2ba4-42ed-be4b-c54c39383743",
+			"@@@InProc at 8CB13C26731CE159F626E301", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243321320, false, "ec1e1c66-6059-42b8-8200-15212ec541a5",
+			"@@@InProc at C88C1F1ABF848981FD93D19F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243323350, false, "3e6084fb-4bb9-4a1b-a422-d956f7257580",
+			"@@@InProc at C88C1F1ABF848981FD93D19F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243323960, false, "0a0acc1c-d76d-419c-8ec1-bdd95e9599c5",
+			"@@@InProc at 0E678A67C85CAD1FFF240D3F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243328340, false, "779b12d1-fdcb-4b61-a606-6e15a014bc11",
+			"@@@InProc at 0E678A67C85CAD1FFF240D3F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243329060, false, "288405e4-6a17-41c2-90f9-9101478766a9",
+			"@@@InProc at 17353FB86400CFFB7ED0EFB8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243330400, false, "2c6600a2-3572-4f36-bf18-3d773f661a73",
+			"@@@InProc at 17353FB86400CFFB7ED0EFB8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243331110, false, "9165f5de-df0b-4645-8776-33652bb5650b",
+			"@@@InProc at A2BB5D99796293E5BDCD632A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243334070, false, "b750fc08-4d60-4c1e-a133-86da711ccd7b",
+			"@@@InProc at A2BB5D99796293E5BDCD632A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243334590, false, "6c6341bf-08fc-4fc7-8f9a-4e7460f8e992",
+			"@@@InProc at 6DC2E2EA0294E66AC23FE27C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243337350, false, "2d4bd089-2bb6-405d-bee4-55d3201071a2",
+			"@@@InProc at 6DC2E2EA0294E66AC23FE27C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243338040, false, "7c08dbbe-7223-4475-a144-9cba1bc18ccb",
+			"@@@InProc at FFFC08FC03B093A46539ACB7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243339950, false, "40be7d9a-7d32-4d9c-91dd-ed269fc64411",
+			"@@@InProc at FFFC08FC03B093A46539ACB7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243341020, false, "1310acd2-017e-4307-b7e4-efc8075e48fe",
+			"@@@InProc at 4DE69A67B5871825297445EA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878243344540, false, "9bc01977-73f0-4a3c-a666-4bc1c7ea486c",
+			"@@@InProc at 4DE69A67B5871825297445EA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244342540, false, "63cb8109-ed7e-4288-ab60-af45d2a93094",
+			"@@@InProc at 35C52583589406F4772A71DE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244343700, false, "9cf9f8c4-7de9-45f3-8950-6e25af81fbb9",
+			"@@@InProc at 35C52583589406F4772A71DE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244344270, false, "233b9df0-0904-4a5a-aa32-3b393e938d66",
+			"@@@InProc at C8271D96F81EA195CA8BD73C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244349250, false, "b74815cc-1a3d-4a09-8a63-ae4dc16562aa",
+			"@@@InProc at C8271D96F81EA195CA8BD73C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244349940, false, "9bdb84e0-fdb3-4e97-b0f6-de522bf9cf22",
+			"@@@InProc at DB3D097CBF1F5A33BE188C2A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244354140, false, "20fb2e02-be17-4c83-a782-944af18710b4",
+			"@@@InProc at DB3D097CBF1F5A33BE188C2A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244354960, false, "6745d57d-738a-41c7-9910-2348d43bcf4d",
+			"@@@InProc at 0DB1351450B110508154C6AC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244356210, false, "daf1c2b6-f412-4ba0-a15e-9575f6eff4e4",
+			"@@@InProc at 0DB1351450B110508154C6AC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244356850, false, "786e1fce-e964-4c4c-ba54-3c38db1874ff",
+			"@@@InProc at 7EB698FBB04A70434E0E069A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244362170, false, "17ca1233-6435-4213-98bc-7c5c8f478bce",
+			"@@@InProc at 7EB698FBB04A70434E0E069A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244363140, false, "7167c1d4-aeb1-4d4c-8654-8bb087e05b6c",
+			"@@@InProc at B1D8CC327F939B6A82150283", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244364650, false, "edbd68c5-97aa-4e56-bb98-56dee8522493",
+			"@@@InProc at B1D8CC327F939B6A82150283", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244365210, false, "ba7fbb24-8c86-45ac-9427-cc8875daf71c",
+			"@@@InProc at 204DF75F1BDA64AA17B6C599", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244369470, false, "7005a739-da1f-41f2-be5a-cbd9e2a98e91",
+			"@@@InProc at 204DF75F1BDA64AA17B6C599", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244370130, false, "9f5729c6-38d5-4b36-94b7-2b4c870461d8",
+			"@@@InProc at E931B8E1475854FFA256230F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244370790, false, "2d23676e-d488-45fb-9390-5a6cf8c139d2",
+			"@@@InProc at E931B8E1475854FFA256230F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244371350, false, "80ab97ba-fc69-4143-bd6f-eaceabcb70d7",
+			"@@@InProc at 819F720257DBD42436F36D04", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244376100, false, "9d18cdba-ad4d-4765-83ab-24ac44fcbbe7",
+			"@@@InProc at 819F720257DBD42436F36D04", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244376640, false, "80416408-87af-4ceb-bdb4-b7767c9bac76",
+			"@@@InProc at CC2C9B85049AFDBF128DA569", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244377350, false, "7fe9668c-ba1c-43ce-9928-dfe5b80adb5d",
+			"@@@InProc at CC2C9B85049AFDBF128DA569", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244378050, false, "2e4b3a16-21e5-43d3-80ba-8754d50feea9",
+			"@@@InProc at 2B1823417439C3627A70192C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244381790, false, "0d45ca15-00cd-4cc3-a3e6-d53303479087",
+			"@@@InProc at 2B1823417439C3627A70192C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244382350, false, "0f0f5d03-073b-43f1-b053-ae6d065e2c16",
+			"@@@InProc at E39C4C623E6D74A4BC56D933", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244384150, false, "c699e2a3-197a-4d47-86eb-850dd350c4f1",
+			"@@@InProc at E39C4C623E6D74A4BC56D933", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244385230, false, "5808014e-5930-4249-8ca8-62b91cfcd18a",
+			"@@@InProc at D3F55370700CBC59EFB64092", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244388700, false, "85a75774-c73f-4ae7-845b-b3f0e34be46b",
+			"@@@InProc at D3F55370700CBC59EFB64092", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244389290, false, "ab5b3ef8-2ae9-4138-b5cd-3666d7fc4334",
+			"@@@InProc at 947B5524ADE8C21525262C94", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244390780, false, "1eb658d0-29f7-43b8-8535-d42c0bb123c0",
+			"@@@InProc at 947B5524ADE8C21525262C94", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244391420, false, "b7a38b2d-784e-4674-9f4b-9f026e5d814e",
+			"@@@InProc at 1CA70D22911C272FAB5E6B68", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244394750, false, "cb11e6fd-bdb5-411c-8769-6f467ff780c5",
+			"@@@InProc at 1CA70D22911C272FAB5E6B68", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244395330, false, "f5449d61-01aa-4d58-85ae-9d8d5a47dc2d",
+			"@@@InProc at 0EFD96AA9932DD7FC4C1C2AE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244397720, false, "0eabd31a-8384-4172-be87-0c14851cc007",
+			"@@@InProc at 0EFD96AA9932DD7FC4C1C2AE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244398270, false, "150ba0ac-68f6-4527-ae90-34a30091de5e",
+			"@@@InProc at 7B1B78610295B506BED41CFE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244401090, false, "1ddcdc0f-0cd8-4574-b032-8dbee3716197",
+			"@@@InProc at 7B1B78610295B506BED41CFE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244401610, false, "6c619020-9a89-409b-b11a-f1a53b619416",
+			"@@@InProc at 1436CFCEA77D6883637F43E4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244405110, false, "6865bea8-2cc1-4411-a167-88b3385a9509",
+			"@@@InProc at 1436CFCEA77D6883637F43E4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244405890, false, "6f7e7c5c-4c2a-46cb-9426-832a8dd9453f",
+			"@@@InProc at 3304D723DFF30A69991569C9", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244408180, false, "1a29a920-a9ae-43a2-b552-8cfbec59ab7a",
+			"@@@InProc at 3304D723DFF30A69991569C9", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244408860, false, "ccd1248b-fb62-4757-b386-31035afedb4a",
+			"@@@InProc at 01A6AECB51FB149CF6D0D6A9", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244411830, false, "ee1d7bc2-28ab-40c7-b84e-fa3b06101026",
+			"@@@InProc at 01A6AECB51FB149CF6D0D6A9", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244412360, false, "44ac7746-e5cf-4489-98f9-f15e1d286863",
+			"@@@InProc at 31D348B8CAE41F771550C53E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244414010, false, "db7777eb-176f-4ad6-91f9-274680f51d07",
+			"@@@InProc at 31D348B8CAE41F771550C53E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244414530, false, "b9008393-352e-4ce3-a2d0-40cd0246c896",
+			"@@@InProc at D46970FF62C2D45D284A1B45", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244417480, false, "de945cab-c7f1-4b58-9b6d-84e3de901056",
+			"@@@InProc at D46970FF62C2D45D284A1B45", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244418000, false, "e0bbc760-1cec-45e6-9786-0467433a1bde",
+			"@@@InProc at 97C647CA390B04865685CA05", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244419430, false, "cd01050c-b3f7-4540-8eaf-76bd134b7ae5",
+			"@@@InProc at 97C647CA390B04865685CA05", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244420060, false, "8847f339-8979-4525-903b-ca37f6e092ec",
+			"@@@InProc at 8BF4D3BC0DFC4C24584FF9AD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244424180, false, "74fe5ec2-35b2-4d2d-9e6d-45b53e81e903",
+			"@@@InProc at 8BF4D3BC0DFC4C24584FF9AD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244425030, false, "e27033de-a67e-45f2-873f-36bedf507d05",
+			"@@@InProc at 74C5BAECEC477764E01A07CB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244426470, false, "3b338736-a33a-458e-86b7-6868b749f005",
+			"@@@InProc at 74C5BAECEC477764E01A07CB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244427160, false, "5191238a-c929-42d8-94ce-027fb6e2fee1",
+			"@@@InProc at E229DFF0570A798D7434D056", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244435090, false, "c1acfe8b-acd7-49d6-9eaa-977fa2dfad45",
+			"@@@InProc at D5FF7A681BCA7742F849E541", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244435160, false, "cf5495f7-dfd0-429d-86ab-1814736213ae",
+			"@@@InProc at E229DFF0570A798D7434D056", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244436240, false, "62c834c4-c57f-41e9-9455-a6e8d3aba002",
+			"@@@InProc at D5FF7A681BCA7742F849E541", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244436300, false, "5752836c-c091-40c8-bc9b-525988a2db87",
+			"@@@InProc at 1F71F0869EDE03C9AD9BB6A7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244441700, false, "cc304263-db4d-4850-916b-26d3a47eef91",
+			"@@@InProc at 1F71F0869EDE03C9AD9BB6A7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244442250, false, "9670ac3d-465c-4101-ac0b-9aee33fd28e4",
+			"@@@InProc at F1AAA935182220B61DD07F42", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244442430, false, "7855901e-e7b2-450a-9fe4-6687ca28dfb3",
+			"@@@InProc at F1AAA935182220B61DD07F42", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244443370, false, "1e507849-40db-47e3-a763-48af5a431bd0",
+			"@@@InProc at 6046D041DE630FABC251293E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244448320, false, "7db333c2-89b3-4f31-8a09-404298b3de6f",
+			"@@@InProc at 6046D041DE630FABC251293E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244448920, false, "996f7072-a1e6-4882-be58-fe47bd153dd2",
+			"@@@InProc at 9538F9894CF04D5EA11A2952", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244449610, false, "c9c6f119-4157-4795-8171-ecc2c595c545",
+			"@@@InProc at 9538F9894CF04D5EA11A2952", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244450160, false, "af8c0ecf-d887-4ae4-b134-a486705db6b4",
+			"@@@InProc at 28A74318E21BC8A15565DB9B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244457370, false, "10f6c625-a1a9-478e-ae88-2dbb7dfe23a5",
+			"@@@InProc at 28A74318E21BC8A15565DB9B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244458960, false, "8c25acb4-d7f8-43e7-8fd1-60d749ed2ba8",
+			"@@@InProc at 135548E96D26BFAA0EE4DF84", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244461190, false, "e2ae1764-3643-4049-9164-7aeeb786248c",
+			"@@@InProc at 135548E96D26BFAA0EE4DF84", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244463090, false, "528019b0-7ab7-4664-a0b6-c599a29ab7ec",
+			"@@@InProc at 886B31016EAB8AF91EE23D40", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244468290, false, "52ed57e7-1eef-427c-99f9-8b9b353a0adc",
+			"@@@InProc at 886B31016EAB8AF91EE23D40", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244469110, false, "e44e14bb-7b00-4763-9fea-19330bafbdb8",
+			"@@@InProc at 6675E7079382D58D4AEA3F3C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244471370, false, "18e0b586-4761-47a3-b6d2-a215d3c3e8a5",
+			"@@@InProc at 6675E7079382D58D4AEA3F3C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244472410, false, "77768152-2571-4b29-b5fa-2a4fb4d91b8c",
+			"@@@InProc at 4ADE7AA7612D84A68A686CB4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244477510, false, "58db5ad7-607f-44e2-b7ff-1ed64c16f1ed",
+			"@@@InProc at 4ADE7AA7612D84A68A686CB4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244478350, false, "e4835b35-b243-4995-a1dc-38a64751ae26",
+			"@@@InProc at 7433B9FC89FE0C2E44A60922", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244481260, false, "1cffaf10-03ef-4968-9818-04bbcc2bbbd3",
+			"@@@InProc at 7433B9FC89FE0C2E44A60922", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244482390, false, "32d69ec0-6bb1-43e7-8cd8-72075577afbf",
+			"@@@InProc at 0FA44A2F735AFF7E380F1F67", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244486040, false, "d7e2c30f-767c-4ca7-a98a-cca8245ab825",
+			"@@@InProc at 0FA44A2F735AFF7E380F1F67", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244486850, false, "e9484169-be8c-4fd3-a8ad-bb36a76059e6",
+			"@@@InProc at 754FC195D7C7A9A55021C5E0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244490750, false, "9c5e9d4d-3c68-471e-b539-fd29ced7a424",
+			"@@@InProc at 754FC195D7C7A9A55021C5E0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244491670, false, "4cfc49e5-be53-4e12-b214-f855b0111bc4",
+			"@@@InProc at 3D11E232A6D2F265D2CD752D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244494830, false, "8de90af0-7851-42aa-bdbf-488eed5ab78d",
+			"@@@InProc at 3D11E232A6D2F265D2CD752D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244495740, false, "be00d983-229b-464b-a60f-06776d8d2162",
+			"@@@InProc at 01F7C0E3C0FDE27C09E73DAD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244499060, false, "3e287995-3322-430c-bff2-61817fbf330a",
+			"@@@InProc at 01F7C0E3C0FDE27C09E73DAD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244499870, false, "febdc8b4-f8d0-45af-94e2-8b7c5cec4227",
+			"@@@InProc at 5E3F54808BC0CF0F80FCF66F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244503300, false, "61b36164-c942-4814-8d9c-a6f264c69d5b",
+			"@@@InProc at 5E3F54808BC0CF0F80FCF66F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244504470, false, "942c01c2-10c1-42d6-954c-565cfbbac162",
+			"@@@InProc at 3CA9FE3EB315EB747EB18B4E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244509040, false, "98882b09-23ae-4243-adca-fadd65e52612",
+			"@@@InProc at 3CA9FE3EB315EB747EB18B4E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244509850, false, "fc71f751-34a4-4c8c-8bb9-90aaabc27a7f",
+			"@@@InProc at EED7BBBF4FF08B5BC8B020B1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244512610, false, "8860cbf9-93ab-42a3-9e6e-4ba422581e8b",
+			"@@@InProc at EED7BBBF4FF08B5BC8B020B1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244513420, false, "94b620db-0f07-4a83-9f04-0065c0e3cd1a",
+			"@@@InProc at 906B331CE8F2F622193794EB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244517410, false, "5f5eb0ec-111c-439e-a87d-c27d578009e5",
+			"@@@InProc at 906B331CE8F2F622193794EB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244518250, false, "ad7fdd18-59f1-4e4f-8102-3447b5452aff",
+			"@@@InProc at 51FA20F9CE8B27741CC77770", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244521140, false, "75506813-124d-4326-8248-f9cd29915a5f",
+			"@@@InProc at 51FA20F9CE8B27741CC77770", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244521940, false, "309d7395-288f-4268-93e4-cae8b713dd93",
+			"@@@InProc at 011AAE765E78B1333A2A3C2C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244526350, false, "8b0b2503-9b45-4657-9f9c-e68ceb5b75b3",
+			"@@@InProc at 011AAE765E78B1333A2A3C2C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244527270, false, "4ab1a914-0996-4862-b9fa-ec22f0634c75",
+			"@@@InProc at F4B834EA4F57942E2097603B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244529720, false, "ccf4e2f7-e50c-468c-92af-063bf59d11c6",
+			"@@@InProc at F4B834EA4F57942E2097603B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244530500, false, "da891251-a4ca-45e3-8207-85d714eab924",
+			"@@@InProc at DAFD93408EB88CC67AA7F39E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244536070, false, "e0e50954-3ef2-4332-81ad-695f96b0e4fb",
+			"@@@InProc at DAFD93408EB88CC67AA7F39E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244536860, false, "e0fe4033-aa10-4c5a-b047-c05ee6654601",
+			"@@@InProc at EF55207B3255A37CB1B2E6F9", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244538630, false, "c6bd86ee-8930-4d90-858d-e6c6dc69eba2",
+			"@@@InProc at EF55207B3255A37CB1B2E6F9", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244539660, false, "53f88f9d-39b4-4172-a2b4-54e5a37ef6ee",
+			"@@@InProc at 9A6088150BEE5A9CF56EE43C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244544710, false, "38535339-7a8c-4969-bfff-3e8ff18d9d34",
+			"@@@InProc at 9A6088150BEE5A9CF56EE43C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244545540, false, "f48ad08e-bfc2-487e-a44d-69091c0540b8",
+			"@@@InProc at ED6A6C92A75B516386C9C918", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244548230, false, "d8111c5b-4af5-47e7-ab0d-e9ca81dc6163",
+			"@@@InProc at ED6A6C92A75B516386C9C918", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244549220, false, "36dfba30-2293-438a-a794-9ed143a6f2f8",
+			"@@@InProc at E3F9BABB103FFE46E399546D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244553580, false, "3e453fda-0824-4434-a864-7a4ef64043ee",
+			"@@@InProc at E3F9BABB103FFE46E399546D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244554480, false, "341da387-60a2-4a8b-848b-106cc0fc4ef0",
+			"@@@InProc at 359403A084AF2C1F5FD553E2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244557530, false, "34786e7a-df1c-47f1-aa75-da375453c08f",
+			"@@@InProc at 359403A084AF2C1F5FD553E2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244558410, false, "676d8e00-7877-4747-8979-f769326898a8",
+			"@@@InProc at CC9617ED6CC48D4D7ED5AC06", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244562600, false, "bc5ba6d0-d2e4-4819-8e3b-5f954014ffb6",
+			"@@@InProc at CC9617ED6CC48D4D7ED5AC06", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244563500, false, "5db9bfee-1ffd-4849-8f12-f22fd1ba44cc",
+			"@@@InProc at DAE02554A6378838723E4C95", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244565950, false, "cab6fb17-6736-4d1f-82f3-359437e784b4",
+			"@@@InProc at DAE02554A6378838723E4C95", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244566740, false, "906473a2-fdfc-4e0d-aed2-4aaf36329842",
+			"@@@InProc at 458356FDBC754B98BD774DE4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244571240, false, "4f5db753-9bc0-4750-a17e-c9a5ea2e3191",
+			"@@@InProc at 458356FDBC754B98BD774DE4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244572050, false, "e345a3d4-07c0-4a30-a4ae-2714336e06e8",
+			"@@@InProc at B4C76C7EE2ABC3A0231F2DCD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244574330, false, "42de742c-1295-4255-a9b1-c0326e7f079f",
+			"@@@InProc at B4C76C7EE2ABC3A0231F2DCD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244575310, false, "7fabf0e9-efe6-477f-9ed4-b8f1cf992ecd",
+			"@@@InProc at EBD47543E71830FE3921C2E6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244579610, false, "c8bb690a-22e5-4401-943b-aff8e52b82d4",
+			"@@@InProc at EBD47543E71830FE3921C2E6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244580510, false, "4b056a5c-68ae-443a-9be1-b267746b6a0e",
+			"@@@InProc at 29799BB1FDFB85D225236EAB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244609490, false, "33899858-0585-41d0-9abd-4d29ca49d8fb",
+			"@@@InProc at 29799BB1FDFB85D225236EAB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244610660, false, "f9cae423-57eb-4f5d-8560-cf4897cd3acf",
+			"@@@InProc at 5A8F5F21B4EC6C147A19BE8D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244616670, false, "eff20567-d488-4853-824d-2067529ce193",
+			"@@@InProc at 5A8F5F21B4EC6C147A19BE8D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244617800, false, "664fe902-2845-489b-91b7-193604eebd6b",
+			"@@@InProc at 0449A3AD38AF09CAFE868BAF", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244620750, false, "eac1b35a-0805-4034-89ea-0173d5207a1a",
+			"@@@InProc at 0449A3AD38AF09CAFE868BAF", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244621770, false, "b6bd6424-2fb7-49bd-8083-0bd61295ccba",
+			"@@@InProc at 98A182B156D361DA7A5F6718", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244626520, false, "56fc1592-5393-4fd9-8e81-59fd25c66eee",
+			"@@@InProc at 98A182B156D361DA7A5F6718", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244627450, false, "c5d19c56-cc97-498b-b798-fc411594d77e",
+			"@@@InProc at F2F1058A897179B003B51757", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244629870, false, "e6ac9213-c8ca-4d8d-b3f3-c67cc4a3a865",
+			"@@@InProc at F2F1058A897179B003B51757", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244630860, false, "8272a9d4-1a9f-4166-8492-aaa27202e16b",
+			"@@@InProc at A6EF05E765030072D70F7DCE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244635350, false, "dd2c17bb-1f8b-4961-8e5e-e2ed16fb7824",
+			"@@@InProc at A6EF05E765030072D70F7DCE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244636310, false, "e718bee9-1e90-49d3-b5e5-b921f14713b3",
+			"@@@InProc at C4854201ABB55F9B8DF2D0E5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244638890, false, "84251741-ae28-413f-abc5-fb5f623ea89d",
+			"@@@InProc at C4854201ABB55F9B8DF2D0E5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244640070, false, "7ab660f4-a579-45ed-957d-5cdf1f631399",
+			"@@@InProc at 4E7F86BAD2E3B9AEAF799D76", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244646360, false, "5566fd4a-b06e-4ed8-91a2-7d2d16337e23",
+			"@@@InProc at 4E7F86BAD2E3B9AEAF799D76", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244647170, false, "54d70d92-97be-4398-a06e-555506b63da7",
+			"@@@InProc at B5583E45494A78F4F83DE7F0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244650080, false, "8d43f170-bf30-4d9e-bcb4-10ba3e0d3dd9",
+			"@@@InProc at B5583E45494A78F4F83DE7F0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244651160, false, "40a0651c-ac7a-4afc-ad7d-60405f9ef77a",
+			"@@@InProc at 3140B3BDC7148CCDB355DF4D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244657640, false, "c9932216-ebba-48f2-b035-937ec3f50298",
+			"@@@InProc at 3140B3BDC7148CCDB355DF4D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244658920, false, "27d687f0-15e2-4021-9814-a440b782e65b",
+			"@@@InProc at 62310B2FA2183D5FF14304A3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244660520, false, "847548ac-c106-4c3f-82e3-aa041022f5d7",
+			"@@@InProc at 62310B2FA2183D5FF14304A3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244661360, false, "69ffcec7-d75f-490a-8849-de6c0c86c650",
+			"@@@InProc at BC765969F3F6EDA5A20854CF", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244667100, false, "f94a8cc7-a642-4f73-a905-2d34b9e2f28e",
+			"@@@InProc at BC765969F3F6EDA5A20854CF", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244668230, false, "4d049d47-2ca4-4fad-ba94-9cbd59b66356",
+			"@@@InProc at 9B4CE0E16F43BD3470E8EDD9", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244669820, false, "67d4759d-0423-469c-a7c4-f13be029067f",
+			"@@@InProc at 9B4CE0E16F43BD3470E8EDD9", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244670640, false, "929c5edb-b546-47a1-be17-0140c491ac71",
+			"@@@InProc at 9C5FEB08647743394483DA5B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244677280, false, "50044e06-1f07-4eaa-b859-7b04fcd3f50d",
+			"@@@InProc at 9C5FEB08647743394483DA5B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244678450, false, "bd7e676c-8d41-4dce-839e-a8ee14d95bce",
+			"@@@InProc at EEF9DDAEBBA3FDB21011B7B3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244680450, false, "6a94d7cd-6c35-4db3-bb07-6ac0e651a474",
+			"@@@InProc at EEF9DDAEBBA3FDB21011B7B3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244681650, false, "9d04fb5c-057c-4674-b6b8-f3ceb3b2e044",
+			"@@@InProc at 4EBC0207E6EAD42D2941EA28", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244686240, false, "e2f79022-f35f-4785-bc52-1da01eea4f77",
+			"@@@InProc at 4EBC0207E6EAD42D2941EA28", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244687180, false, "8f6a7643-31ee-4dbe-a4c4-972d56a49f0e",
+			"@@@InProc at DE9FDB1501E5581B0070536D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244690780, false, "1ccc3a5a-90c9-4a22-95a2-87ea209932a4",
+			"@@@InProc at DE9FDB1501E5581B0070536D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244691640, false, "28cbc771-92e7-47f2-9c9b-9fe93f90e14c",
+			"@@@InProc at E628B3C06F674649B585C21B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244695910, false, "fc326f5c-e284-4a15-bde5-b6c4dc1d881a",
+			"@@@InProc at E628B3C06F674649B585C21B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244697770, false, "253633f6-7079-43d1-93fb-b712923b4a28",
+			"@@@InProc at 93E812A3D48A704E38E142F2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244701960, false, "f58ef02f-2d21-408d-85d9-4ace7ad3cb51",
+			"@@@InProc at 93E812A3D48A704E38E142F2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244703190, false, "a1394af7-0676-4993-8567-32fc23e5184d",
+			"@@@InProc at F71A847A2DFD77C771B352AE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244707140, false, "8b10489f-a6e3-46a7-9018-6434a80e3391",
+			"@@@InProc at F71A847A2DFD77C771B352AE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244708070, false, "2cac5584-f83b-44ea-8a39-6200a8a6c5ba",
+			"@@@InProc at 6E0326F45A9EFF83763AC322", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244713000, false, "d235ce58-797c-48fb-98fe-7aa0b2b4c550",
+			"@@@InProc at 6E0326F45A9EFF83763AC322", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244714210, false, "d8113c55-5aeb-49dd-9846-d069249bccfe",
+			"@@@InProc at E8323BE825816ACF079494E7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244716060, false, "59f41179-4895-4845-a267-aa0b9caf00b0",
+			"@@@InProc at E8323BE825816ACF079494E7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244717050, false, "da60dd19-dd66-4f68-b052-25e66f664d09",
+			"@@@InProc at ACBDC4D276D34645DB0C4F4D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244723630, false, "b05de842-e305-4b83-8001-858e5973764b",
+			"@@@InProc at ACBDC4D276D34645DB0C4F4D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244724770, false, "0203fcde-ebcd-4be1-b450-f3d78de3e584",
+			"@@@InProc at D9D75A66E11039D8F428134D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244726430, false, "3a8daced-6735-49d7-b795-c565b4bd89a5",
+			"@@@InProc at D9D75A66E11039D8F428134D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244727390, false, "8a977417-56d4-4a5d-ae06-daf656a6cee2",
+			"@@@InProc at 94E60A6AEA278A91F2469949", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244733870, false, "138d3361-bdb3-4e94-8271-fbe2e83df79a",
+			"@@@InProc at 94E60A6AEA278A91F2469949", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244734900, false, "78684c4d-e5d3-4b40-815b-d17476ff70c6",
+			"@@@InProc at 2B427BCCC0DB69C430B9CAD2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244736580, false, "6ac2f7de-8e37-455d-a164-9a4e7a1c2359",
+			"@@@InProc at 2B427BCCC0DB69C430B9CAD2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244737510, false, "05fbacb1-e995-41ee-a316-5c2a5cfb45a8",
+			"@@@InProc at 7DD919F48DDD89431D2DEA1B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244742720, false, "832702dd-6211-4ac0-98c2-bcbeabdf691d",
+			"@@@InProc at 7DD919F48DDD89431D2DEA1B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244743620, false, "fb92a21f-7a30-4193-8854-b64b026990f8",
+			"@@@InProc at DF42D7A207497E81ECB9D164", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244746650, false, "60772705-5b0a-4394-8563-7f39ab3b94bd",
+			"@@@InProc at DF42D7A207497E81ECB9D164", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244747620, false, "ff6f71ad-af28-46ab-8f1b-73f8d8e92508",
+			"@@@InProc at 9A0E8E9E957EABE1DD4532B0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244753910, false, "f619e7cb-c153-4e22-a2cc-e3f407b8381b",
+			"@@@InProc at 9A0E8E9E957EABE1DD4532B0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244754980, false, "38cf9ebe-3f94-432c-bef1-83c24fee33fe",
+			"@@@InProc at 6D81F5028B8C6CF77A32A8FF", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244758430, false, "6868847e-a34d-4f46-8221-77dacd2d8052",
+			"@@@InProc at 6D81F5028B8C6CF77A32A8FF", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244759250, false, "e4d8a16d-b304-461b-81f3-0c4b5e0f8b19",
+			"@@@InProc at 0DFBEBEE45697B784926E64F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244766250, false, "11458f8d-cffd-491b-9d71-7e082f594d0d",
+			"@@@InProc at 05AEDFB6BDD8A57015EF9EF4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244767190, false, "1eab4afd-b780-49b9-a726-316ec1d25df9",
+			"@@@InProc at 0DFBEBEE45697B784926E64F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244767260, false, "a9f628f0-ed9a-44cc-a49d-40b2f75b6d19",
+			"@@@InProc at 05AEDFB6BDD8A57015EF9EF4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244768550, false, "69ed8ded-8b1c-4ba8-9c76-3cd5e13e2e1f",
+			"@@@InProc at 1CDD3B55EC073577D29D630B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244775510, false, "b08f9ce4-df82-4475-892d-a9554d9f2df9",
+			"@@@InProc at 567F3ED36100C64D261AEF5A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244776540, false, "f52f5ca5-acf9-4a39-aeb7-fd3a2ac54121",
+			"@@@InProc at 1CDD3B55EC073577D29D630B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244776620, false, "123d29e0-8e85-4ff0-88e2-da1b996e4ef6",
+			"@@@InProc at 567F3ED36100C64D261AEF5A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244778000, false, "5c1667fc-9e27-45a2-8938-7a404e79489b",
+			"@@@InProc at B947405A36390684BD7DACD4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244784870, false, "2a054749-13db-48dd-8588-0902408ca520",
+			"@@@InProc at 6BAEA0C90EC00421B03EA006", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244785870, false, "b7d86bac-4b41-409a-8de6-65d7ca369e06",
+			"@@@InProc at B947405A36390684BD7DACD4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244785940, false, "768a78d9-cd18-4be5-9383-5cfddea0e675",
+			"@@@InProc at 6BAEA0C90EC00421B03EA006", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244787400, false, "09490ead-8738-4d4d-86eb-946d4d680cd1",
+			"@@@InProc at 6F090CEB5B39C9E8C098F1FC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244794380, false, "64efd493-3a23-4e03-a0d4-0f24e45c90e7",
+			"@@@InProc at 6F090CEB5B39C9E8C098F1FC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244795160, false, "31404cd5-8042-45c2-9c66-08c201690b6c",
+			"@@@InProc at F66FB55454BE861AB150E9D0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244796000, false, "5ad33555-dee2-44c7-a354-81a9e832e944",
+			"@@@InProc at F66FB55454BE861AB150E9D0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244796860, false, "9f51dac5-bbcb-4d24-b58a-776ddaef5f70",
+			"@@@InProc at D187DC45CF4C3666DB22B382", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244803550, false, "02770426-0b02-4e9d-bba0-1198c1ea216f",
+			"@@@InProc at D187DC45CF4C3666DB22B382", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244804480, false, "78e7b250-8337-4aa7-ac5c-60bfd912bbba",
+			"@@@InProc at 21A8FD0C4C4E891B967113D0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244804700, false, "f4461555-247b-4164-8836-58ff9bfa7bc8",
+			"@@@InProc at 21A8FD0C4C4E891B967113D0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244806020, false, "b6fe0188-1f1c-448e-9fef-f96bbab34406",
+			"@@@InProc at 450A2453AC2F319375B1DE1D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244812510, false, "ecbe3f87-09d7-4b97-9f0d-8a8eca9e1fe4",
+			"@@@InProc at 450A2453AC2F319375B1DE1D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244813420, false, "7b89c24a-0fd0-40ae-bb93-8f0ad264aa22",
+			"@@@InProc at A0064F81451E6DE208DEE442", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244814190, false, "eb5fbc27-56b9-42d7-a927-4b1e3cf51611",
+			"@@@InProc at A0064F81451E6DE208DEE442", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244814990, false, "731bca84-ec4b-4271-9fec-1a19b1d5b479",
+			"@@@InProc at 18A44FC3B240D4F84E6585E8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244821810, false, "ece18c1b-ae5e-4b5b-8e03-c7ac6dbef1f5",
+			"@@@InProc at 18A44FC3B240D4F84E6585E8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244822820, false, "7e576f21-5842-47cc-9804-1c8512db9be6",
+			"@@@InProc at 36F8C37FC3EDC709170BBE6F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244826140, false, "f7b4f075-2cc1-4a5d-93fd-e5708c4049b3",
+			"@@@InProc at 36F8C37FC3EDC709170BBE6F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244827130, false, "150acddb-c12b-4349-aaa9-541361e44e8c",
+			"@@@InProc at 0CF90D75820E5E1588514056", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244830370, false, "33958015-1a1b-42c7-83d9-892895ef4247",
+			"@@@InProc at 0CF90D75820E5E1588514056", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244831140, false, "5f3cf168-b289-46e3-a006-da2e57dd4924",
+			"@@@InProc at E338DE06C7FCDB8FE5DE9E8C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244835590, false, "0c9d9814-21be-4bda-bdd4-8087385b9301",
+			"@@@InProc at E338DE06C7FCDB8FE5DE9E8C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244836500, false, "e9070234-4a53-4a61-b968-d7fd0d4063cb",
+			"@@@InProc at 12CB7689D9E8F82428CF5570", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244840800, false, "4216f22d-dd92-40f1-a519-8ead49cb761a",
+			"@@@InProc at 12CB7689D9E8F82428CF5570", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244841970, false, "9cd768ff-21ef-434d-b91c-1ba76e4843bb",
+			"@@@InProc at C419A9D78918FF38EB23721E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244844510, false, "29154425-ab58-490b-8c83-d2647fe49be7",
+			"@@@InProc at C419A9D78918FF38EB23721E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244845740, false, "f41bc09b-994c-47d0-9251-bb292b928980",
+			"@@@InProc at 604028DF2E53570E6FCD663F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244852140, false, "1e1625af-6603-4f52-8df8-97b1261a1bb2",
+			"@@@InProc at 604028DF2E53570E6FCD663F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244853060, false, "b3d81e55-e2ae-40a6-8d0b-31c1b023f608",
+			"@@@InProc at C56D6D58AE62E45D81719790", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244856380, false, "c5556148-30b7-45d7-abad-28566b7e95b5",
+			"@@@InProc at C56D6D58AE62E45D81719790", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244857470, false, "4c1745e1-2f03-4f4c-b570-2784b7678a70",
+			"@@@InProc at 369B37FEBE86E6B984FE8008", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244862820, false, "e1b01495-b433-4646-a4d3-828eeb7522f9",
+			"@@@InProc at 369B37FEBE86E6B984FE8008", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244864300, false, "55a899e5-6221-40f8-8b54-76728be3ffe4",
+			"@@@InProc at 238D530949C70FF20930B128", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244865750, false, "55a4c68b-cc0b-41a6-87d7-57591212d69e",
+			"@@@InProc at 238D530949C70FF20930B128", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244866550, false, "2f4cfa55-4eaa-4380-b4c4-f289145b9cfe",
+			"@@@InProc at 1B28B98D713B3E6E950705ED", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244872880, false, "d416822a-5379-4b7e-9a8e-1129467f9929",
+			"@@@InProc at 1B28B98D713B3E6E950705ED", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244873670, false, "fd4a24c8-39c9-4ae4-ac74-c76887f988ad",
+			"@@@InProc at 4248637313DA4D0E59E7484A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244874440, false, "839a44b7-ca48-4f50-9d49-0d639b71351d",
+			"@@@InProc at 4248637313DA4D0E59E7484A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244875240, false, "1e9b7ee3-a9a5-43a5-911e-171eae759588",
+			"@@@InProc at 4D963F3EDDA4053F8A589F27", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244881910, false, "3fd43bea-4073-4e22-b202-e2ee05f150af",
+			"@@@InProc at 4D963F3EDDA4053F8A589F27", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244882830, false, "f3728b27-0bfd-4de0-a986-b76ace6f131a",
+			"@@@InProc at 9377C2187B90E77D09773943", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244883790, false, "481f3935-c7d2-48b4-8295-022adc377897",
+			"@@@InProc at 9377C2187B90E77D09773943", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244884610, false, "a78c7b2d-1971-4b85-b1c0-7d7e9e059fb5",
+			"@@@InProc at D1BD7BCEF1678558042B8E2E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244891440, false, "b7b6a5c9-86fc-4c7b-8eb8-b6e5a6f68d68",
+			"@@@InProc at D1BD7BCEF1678558042B8E2E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244892340, false, "639ac64a-09c1-47ee-b9bb-38926054d90a",
+			"@@@InProc at 08B5AB145067F92DF58DBA75", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244892570, false, "08a2e9e7-a57c-4d94-915c-0501e063ac55",
+			"@@@InProc at 08B5AB145067F92DF58DBA75", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244893880, false, "fd9246bb-20b2-4a71-a524-741f63082249",
+			"@@@InProc at C2F21C7F50685119E8030FA1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244900750, false, "64c58d32-ff92-4a73-b0a3-2c726ad4c45f",
+			"@@@InProc at C2F21C7F50685119E8030FA1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244901640, false, "cddab611-3e39-48b8-ba6b-66fa5eb163af",
+			"@@@InProc at DA8D31C563AA0ECDF3D1C800", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244901790, false, "dc89af0d-26d5-417a-b587-3a8157400365",
+			"@@@InProc at DA8D31C563AA0ECDF3D1C800", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244903040, false, "cfa59b8a-5098-4309-9516-4f827d9257fa",
+			"@@@InProc at 0CEACF7BB450BB7309D2E728", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244909600, false, "3c48a616-d6e8-43b1-b369-1fa0adaace80",
+			"@@@InProc at 0CEACF7BB450BB7309D2E728", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244910390, false, "0f165273-8c53-486d-9dd9-703d0434c1c4",
+			"@@@InProc at 31554BC9A5CCAFF56D0559BA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244911150, false, "e4bee332-6626-4f75-b806-3e9dcdcf7e25",
+			"@@@InProc at 31554BC9A5CCAFF56D0559BA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244912050, false, "20fba861-ead7-4f8e-a66c-ca0471181850",
+			"@@@InProc at 6D40CBC26B84AB310B5A87D6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244918660, false, "2c47ef6c-1bcc-466d-85f2-3b014b88c221",
+			"@@@InProc at 6D40CBC26B84AB310B5A87D6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244919690, false, "a4e387bb-eca2-4252-a736-b1e01e7814d7",
+			"@@@InProc at 56A83CC7772E8AF65A0A0948", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244921120, false, "cb7ed01f-1b53-451b-86de-d1658944cbfa",
+			"@@@InProc at 56A83CC7772E8AF65A0A0948", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244921890, false, "4942bfdd-7b14-43e2-a815-a1630a15e7fa",
+			"@@@InProc at 415A1E05533639382C126E14", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244927240, false, "9305c5ae-c3aa-43fa-9cb4-c12cdbb6ff6e",
+			"@@@InProc at 415A1E05533639382C126E14", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244928120, false, "a78a9fa3-d9a3-4d4b-ba18-67deb4da7d71",
+			"@@@InProc at 203FB0F0737E4C463BBF3316", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244929690, false, "f623984e-76ac-4d0e-a0fc-9868abe43b54",
+			"@@@InProc at 203FB0F0737E4C463BBF3316", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244930500, false, "21256003-d431-4412-9745-030391b08c74",
+			"@@@InProc at A60F7E3F33B6B589BE28D518", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244936250, false, "f808838f-6b39-43bd-92f3-86d210646c1a",
+			"@@@InProc at A60F7E3F33B6B589BE28D518", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244937260, false, "140fdd38-02a6-42bc-9017-806dcbde5587",
+			"@@@InProc at 81542932B0B3544ED611A07B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244938900, false, "d761b6ba-c67a-4743-bac8-71d5dd5de2c9",
+			"@@@InProc at 81542932B0B3544ED611A07B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244939680, false, "b2d004c4-5384-480c-a725-7d5aac8d1f1d",
+			"@@@InProc at 2BC3A0306AF0E69129A88EC7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244945600, false, "de4d41f0-3e89-4edf-811c-8cff45c65f71",
+			"@@@InProc at 2BC3A0306AF0E69129A88EC7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244946470, false, "6d88736a-f5f3-41fc-abea-e372a887be5e",
+			"@@@InProc at AE2652F1A9C66D2169A4C199", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244954560, false, "b0f47b4a-01df-4c35-b502-13600d8076e9",
+			"@@@InProc at AE2652F1A9C66D2169A4C199", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244955520, false, "f4665100-74cd-4004-af06-4b8941c93f1e",
+			"@@@InProc at 0C1540A7475A5FC54E16D873", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244959760, false, "8adf03b5-0768-4d83-b3da-ad9b15cca906",
+			"@@@InProc at 0C1540A7475A5FC54E16D873", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244961740, false, "e90bcaec-4767-49ae-a6b6-4308992d4115",
+			"@@@InProc at 336937BEE1CAF4DD53AE8A18", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244963540, false, "7c0bb3f0-4c09-41b5-a538-d13a5ad8af46",
+			"@@@InProc at 336937BEE1CAF4DD53AE8A18", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244964370, false, "f7010a10-e016-4133-aef7-20f07b15c1eb",
+			"@@@InProc at 71457F736CBFDE5BBC166476", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244973970, false, "47001df1-2aa6-4893-bdef-24c80c6115f3",
+			"@@@InProc at 47E08C48CF275FC6707F5CA3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244974110, false, "51ee90c3-2cf6-4220-8e88-e49a2dab6070",
+			"@@@InProc at 71457F736CBFDE5BBC166476", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244976260, false, "574d9fd4-ff6d-4278-9bc1-1efe6d526b1c",
+			"@@@InProc at 47E08C48CF275FC6707F5CA3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244976400, false, "781a7fa7-7924-427d-b7fc-5d8869e87f50",
+			"@@@InProc at 0060D8CF01A4C3E99DE3D6C0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244985140, false, "374c6631-1623-4da5-90f2-174b68161b34",
+			"@@@InProc at 0060D8CF01A4C3E99DE3D6C0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244986170, false, "a2d3ee88-765b-4a6a-8886-79aa98a6522b",
+			"@@@InProc at EDB489458E8569B57349AB06", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244987180, false, "43dd47d1-659f-4bcd-b4a2-3d21787382fa",
+			"@@@InProc at EDB489458E8569B57349AB06", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244988010, false, "9f8213ca-0b1a-42f3-9571-01d6fe28cffd",
+			"@@@InProc at EE22EE65187E655B65314900", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244994250, false, "d5f429f6-b3fa-4b96-b099-8ca3313e9a9a",
+			"@@@InProc at EE22EE65187E655B65314900", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244995200, false, "d725cd6a-3552-4669-b605-406e7d56433a",
+			"@@@InProc at C1B1D57AF054ECB40556A30E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244995320, false, "a06c9b80-f6e9-41f2-bdcd-c48be9e09709",
+			"@@@InProc at C1B1D57AF054ECB40556A30E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878244996810, false, "70f83710-3ea2-4428-8d44-492863548ea3",
+			"@@@InProc at 2AC5A5117926644C3CC687F9", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245003740, false, "56927209-7911-4349-b565-7c3d850a0b73",
+			"@@@InProc at B0CCE4D6131E18B48EA8B0B3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245004800, false, "b13be7cb-0fc3-4cdd-875a-67eea76d83cc",
+			"@@@InProc at 2AC5A5117926644C3CC687F9", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245004900, false, "fb78bc76-e355-4f3b-83c3-5a92c47e5734",
+			"@@@InProc at B0CCE4D6131E18B48EA8B0B3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245006450, false, "dc750b51-1e8c-4494-ab1e-6cbaf280165a",
+			"@@@InProc at 232E306E6F1DDB9BCF3248C3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245014040, false, "8e9efe56-06ab-4094-abc7-e3ecc4c0418d",
+			"@@@InProc at 232E306E6F1DDB9BCF3248C3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245014860, false, "c377a4e2-2cb9-417a-b23f-fb0c3e4e511c",
+			"@@@InProc at 04853EE92072E2B1633A586B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245015240, false, "28864b66-afd9-41ae-acd8-a44f8c617971",
+			"@@@InProc at 04853EE92072E2B1633A586B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245016340, false, "3ec0c3cc-812d-45cc-a924-c7d806df8027",
+			"@@@InProc at F4C2BC207978FEC9BB40EA9F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245024780, false, "892393dc-baa6-497b-8e40-6662b5da5aac",
+			"@@@InProc at F4C2BC207978FEC9BB40EA9F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245025960, false, "d7dcf5a9-f028-456b-ba58-222d307fa3aa",
+			"@@@InProc at 79531ABA5101588A155C308B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245027010, false, "a7237bd2-5b75-4c46-8291-eca5a53d15b3",
+			"@@@InProc at 79531ABA5101588A155C308B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245028260, false, "2f11caf3-24ea-4a04-ac82-36a50e4ef720",
+			"@@@InProc at 83F913A880AFA1F5BE0A61F1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245035290, false, "47e0a186-4a73-4096-b0fe-ecc512ccd06b",
+			"@@@InProc at 83F913A880AFA1F5BE0A61F1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245036390, false, "8f10d093-46f9-4020-bd48-ffb456ebbb88",
+			"@@@InProc at 3F5E0D13D1386FF665B83395", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245036660, false, "06aaa3ac-eabc-4661-a8e8-42cf8d1bc327",
+			"@@@InProc at 3F5E0D13D1386FF665B83395", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245038120, false, "d1bd8aa3-99c0-4ad4-a9eb-520b1d38b759",
+			"@@@InProc at 0C2313CF734AA486A56E982F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245071870, false, "268a703c-0bd8-4cc1-bcf4-5da8fcf5fa26",
+			"@@@InProc at 0C2313CF734AA486A56E982F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245072770, false, "a9bddbf9-75ba-4ddb-bc2d-f2c572a1b6f0",
+			"@@@InProc at 1EFB04D908DCA2CD683E09CB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245072980, false, "0dabac5e-55c9-463d-90c3-5be67c1346d1",
+			"@@@InProc at 1EFB04D908DCA2CD683E09CB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245074520, false, "4c65d476-78ca-4300-80dc-757bb3954f8a",
+			"@@@InProc at 97128D4411FDDC7338668601", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245081170, false, "bd81cb4d-3b4e-483e-9023-0331bbccb8cc",
+			"@@@InProc at 97128D4411FDDC7338668601", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245082020, false, "204c8277-6291-4b73-8337-bcdd8afac906",
+			"@@@InProc at 5474857E4E3D7334B7BFC68F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245083810, false, "a1962236-85d0-4e5e-b7ef-b410e697eabd",
+			"@@@InProc at 5474857E4E3D7334B7BFC68F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245084850, false, "fefca059-25d4-4f47-a55b-e1df270e194b",
+			"@@@InProc at FBF9D31CF8E23FEA00DCA6CF", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245089880, false, "15567d35-dd47-4be1-96e7-1d2614be696e",
+			"@@@InProc at FBF9D31CF8E23FEA00DCA6CF", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245090710, false, "4660040a-112a-4fa1-9478-9057504585a3",
+			"@@@InProc at 42A43EF1A7138D4FC126CFEA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245093030, false, "68f8218a-7c2d-49e5-b62c-5ada3cb32b07",
+			"@@@InProc at 42A43EF1A7138D4FC126CFEA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245093860, false, "498ebcb9-a74b-4f78-bf49-9e1c40fe7090",
+			"@@@InProc at 6663901A993F4B169E992729", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245098330, false, "025b87c3-bb01-40bf-8017-01a7787e19d7",
+			"@@@InProc at 6663901A993F4B169E992729", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245099340, false, "bb2c395b-10e7-4e26-bd38-d651de8fc52e",
+			"@@@InProc at 8716BEEBC17CD40698954AD1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245101650, false, "329e0c8c-7464-4835-b1e6-1bca6dcaab94",
+			"@@@InProc at 8716BEEBC17CD40698954AD1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245102450, false, "8bece778-9a78-4d3c-9352-be8d91d16a48",
+			"@@@InProc at 8E7EF5D2AC604D742E75006C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245107190, false, "14952eae-ca7a-4960-b076-cfda943fecaa",
+			"@@@InProc at 8E7EF5D2AC604D742E75006C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245108000, false, "0a97821f-0954-4513-bd94-721ffd8eaaa7",
+			"@@@InProc at CE3D60204791F31B497AE03A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245112020, false, "ed5646d9-f949-47e8-adfe-23fb7df77859",
+			"@@@InProc at CE3D60204791F31B497AE03A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245113050, false, "4d29b6b0-7fad-449d-994f-a107a6d93e9c",
+			"@@@InProc at 07C59FF0BE43D1A00A9C3807", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245116590, false, "04467061-e4ee-4ede-807b-70b2171cfa06",
+			"@@@InProc at 07C59FF0BE43D1A00A9C3807", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245117400, false, "c0d5ae89-6acf-4543-9ab4-f52fd98de03e",
+			"@@@InProc at 76A9AC847C93CE2FEAFBCFF2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245120860, false, "bf8e771e-180b-4f3d-9be4-606cc952574e",
+			"@@@InProc at 76A9AC847C93CE2FEAFBCFF2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245121670, false, "67d83406-d0b2-4f29-9c1c-f3ac07cff219",
+			"@@@InProc at 7F88C324FB3119B990C0C5DA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245125230, false, "d42f4732-c1c8-40ca-85ba-7440869bc4ff",
+			"@@@InProc at 7F88C324FB3119B990C0C5DA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245126110, false, "310468e6-52f8-40fb-9400-1fa603790096",
+			"@@@InProc at 04ACD09073014984C66B3DDA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245129440, false, "659f807e-38dd-4e8d-9931-22ff3db537ce",
+			"@@@InProc at 04ACD09073014984C66B3DDA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245130250, false, "67c66aca-d2d5-4f7c-9f1b-f72c98f656c9",
+			"@@@InProc at 330ABD1E9994D86B44AF2009", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245136590, false, "b25f95f8-8de4-42ee-90ec-511b76a7a258",
+			"@@@InProc at 330ABD1E9994D86B44AF2009", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245137520, false, "a139ca08-6729-4064-b531-9c8098186924",
+			"@@@InProc at 55B2A3E1279F568C7E289195", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245138470, false, "a8cac293-ca26-40e7-b7a9-47ad51b46bd9",
+			"@@@InProc at 55B2A3E1279F568C7E289195", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245139390, false, "8d0d4dcc-b446-4450-ab1f-f6f1a0b5f3b0",
+			"@@@InProc at D144147D804084E3F7DE9539", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245145900, false, "02426035-c8f9-4a0c-b559-f6a690dc367d",
+			"@@@InProc at D144147D804084E3F7DE9539", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245146930, false, "c8f6e186-c5f8-4da0-81e6-7c7b243ab9c6",
+			"@@@InProc at 82C53FE46CF747BB735D6F7F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245147140, false, "72c7061c-ebf0-4cad-8825-8ed79804ef3f",
+			"@@@InProc at 82C53FE46CF747BB735D6F7F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245148650, false, "cb93dec3-e87a-42ce-b6dd-545e77371e22",
+			"@@@InProc at 849A5CCCD441FF0CABB101BE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245155210, false, "3500a7fa-8689-4c3d-b401-69fa62c4d7da",
+			"@@@InProc at 849A5CCCD441FF0CABB101BE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245156000, false, "f16150fc-8129-4810-b582-13b2dcfdc6ec",
+			"@@@InProc at 2BFE70566F5A964C17E3D4E1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245156760, false, "98641029-21b3-4c50-9dde-e83e96a98b5f",
+			"@@@InProc at 2BFE70566F5A964C17E3D4E1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245157540, false, "4e838e63-2335-4d58-a326-563b372aa4a2",
+			"@@@InProc at 41E687D2710019615DA08034", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245163770, false, "eaea5c2b-3ab2-4ea0-a481-4a64f33aeb67",
+			"@@@InProc at 41E687D2710019615DA08034", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245164810, false, "199579a7-f28f-41bf-b3cc-aba5d8053a55",
+			"@@@InProc at 55B08A50D7C479AE7464383B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245165720, false, "9e5d4b66-3597-4af7-9f2d-e3d6edb3fc1f",
+			"@@@InProc at 55B08A50D7C479AE7464383B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245166530, false, "6dce4fd4-0352-4730-a7be-e83e42c4365d",
+			"@@@InProc at 1AB772F45263C2E0406E6B6E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245172920, false, "11622dc6-0660-47ee-b521-768f07d81993",
+			"@@@InProc at 1AB772F45263C2E0406E6B6E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245173970, false, "d3aa447b-32c6-4ea4-8f0e-b784f9c6ccfc",
+			"@@@InProc at 8F4FFA3E95E13C7ED029E6F8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245174850, false, "deb028d5-66c7-43cc-a141-37bdace9f65a",
+			"@@@InProc at 8F4FFA3E95E13C7ED029E6F8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245175640, false, "148c40e6-667d-4763-9c1d-75a71ccdf91c",
+			"@@@InProc at A6695E55E0798DC7CB24CCAE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245182280, false, "b51eea4f-b345-4273-bd8b-6735b23519ba",
+			"@@@InProc at 437FF3DD95E565BBB05D0053", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245183810, false, "cc045c90-91c8-4556-9bf9-019072fb1e52",
+			"@@@InProc at A6695E55E0798DC7CB24CCAE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245183890, false, "f4066b80-cc81-449c-bd8e-c9e64de83aea",
+			"@@@InProc at 437FF3DD95E565BBB05D0053", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245185290, false, "0dc4a5f0-add6-4642-b785-4a8c9e37684e",
+			"@@@InProc at 11BEFECE32B253ECE0B00737", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245194470, false, "490179de-ab4b-4ed5-b092-164429e29174",
+			"@@@InProc at 5BE09689EFA324A08FAF2B11", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245195640, false, "1d24024b-5f35-49f2-b8e8-23f47c5716eb",
+			"@@@InProc at 11BEFECE32B253ECE0B00737", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245195740, false, "97ed6882-ebd9-4d2a-aa32-8e30644c8c1c",
+			"@@@InProc at 5BE09689EFA324A08FAF2B11", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245197330, false, "cb83f8c5-abf2-4a5f-87b6-01d731157757",
+			"@@@InProc at 7BCE85EEF4EA71D426AE0DB7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245204870, false, "1d55e7ad-497f-49f1-9642-2aaed8edf863",
+			"@@@InProc at 7BCE85EEF4EA71D426AE0DB7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245205670, false, "928ae296-b1b1-4398-b691-7e9de9f949f3",
+			"@@@InProc at 76AFA8E5D0686D8725A26984", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245207310, false, "937ef4f3-e96a-4171-863c-cd6b654af369",
+			"@@@InProc at 76AFA8E5D0686D8725A26984", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245208240, false, "e05bf839-d877-4a41-9a85-4e73906b5e0f",
+			"@@@InProc at 644E3572A89DB0BA2FEEA767", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245213720, false, "4762b3a0-69de-4daf-b943-710042a1df1f",
+			"@@@InProc at 644E3572A89DB0BA2FEEA767", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245214530, false, "1e169f4b-43ec-4b14-b75e-1090602bdd6a",
+			"@@@InProc at 4C800588C70053976E6C6157", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245216770, false, "b9021254-f1e8-4d5f-a12d-afc1999b1aa8",
+			"@@@InProc at 4C800588C70053976E6C6157", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245217560, false, "4a5c632b-6bbf-46a7-b225-94c8dd4868a7",
+			"@@@InProc at A5FE748297873869F055BBDA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245224270, false, "143097be-c2b9-4423-800c-df7226950aa9",
+			"@@@InProc at A5FE748297873869F055BBDA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245225590, false, "29104e58-e432-4764-a7d3-ccdd070821fa",
+			"@@@InProc at DBFBBD13ACC5D3D38CDE3C50", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245225690, false, "e49263a6-79db-4418-8b68-c08cef3e4e01",
+			"@@@InProc at DBFBBD13ACC5D3D38CDE3C50", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245227150, false, "a492ab6a-5ae9-46a2-8305-1665a7358e2d",
+			"@@@InProc at 8C15FDDC18C6430601CD7047", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245234410, false, "4c2c3af4-88d3-4a10-a31c-138911e80770",
+			"@@@InProc at 286BCD38196920C2C1662519", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245235390, false, "109397d6-807d-44aa-a21c-2231d8665654",
+			"@@@InProc at 8C15FDDC18C6430601CD7047", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245235500, false, "7f31be82-0cc7-46c7-b2e5-e2d5e3badcec",
+			"@@@InProc at 286BCD38196920C2C1662519", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245236780, false, "1816d342-ad2e-40c5-93ee-8dee220d0e03",
+			"@@@InProc at 464CC381C738C5F730B67598", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245244280, false, "1dfd3ac6-82c2-45cf-ab4e-16e74b58e7c2",
+			"@@@InProc at 8B6793B468AE017E8815C801", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245245180, false, "fa2a70ac-2cba-4b97-a0ad-55efcecc127a",
+			"@@@InProc at 464CC381C738C5F730B67598", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245245260, false, "9b5dee91-b246-498f-9aee-cab9732da878",
+			"@@@InProc at 8B6793B468AE017E8815C801", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245246560, false, "ae9d02c6-36c8-4f8e-ad9f-48b228766738",
+			"@@@InProc at 5AD9668604C51B100658DB88", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245256400, false, "fdd15bdb-6ba6-4864-b884-129ad8acf080",
+			"@@@InProc at FD3A56339546DEDB22EBD49D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245256530, false, "6f4fa412-180c-4cb8-86d0-46ef0c98a98f",
+			"@@@InProc at 5AD9668604C51B100658DB88", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245258260, false, "41357c6b-50f6-4364-88f9-468b1217e868",
+			"@@@InProc at FD3A56339546DEDB22EBD49D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245258360, false, "7432e206-8629-4d80-ba87-dedb5200e0df",
+			"@@@InProc at 9656DA72195EE13182777574", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245266640, false, "cbc27a9d-6e23-478c-9b3c-e1599d2fc31e",
+			"@@@InProc at 9656DA72195EE13182777574", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245267460, false, "86deefb8-b664-41ed-87fb-0a73f4e1056e",
+			"@@@InProc at 142B60ED3A911CD891D65175", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245268790, false, "429c67fb-5a0a-43af-bcc4-898f8f3550dc",
+			"@@@InProc at 142B60ED3A911CD891D65175", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245270020, false, "27837126-267f-4a33-88eb-ecb6df13d9e3",
+			"@@@InProc at B6C3676158E374D2AC526C25", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245275930, false, "663f5c8e-f395-4709-a9f9-a326822541df",
+			"@@@InProc at B6C3676158E374D2AC526C25", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245276920, false, "4162e841-6863-402b-8cb9-133e6bb9efb0",
+			"@@@InProc at 269E170AFE40BA0AFBFAF81D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245280530, false, "6ad28ad4-fdec-4f00-a9d4-e9182669d6f7",
+			"@@@InProc at 269E170AFE40BA0AFBFAF81D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245281550, false, "5eb46c29-84fa-4d0f-bb6e-d23af16ec4c1",
+			"@@@InProc at FF5CCD9DE10074DFCFCD6346", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245284550, false, "065c7556-98e8-4421-83d9-db6ad0248739",
+			"@@@InProc at FF5CCD9DE10074DFCFCD6346", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245285360, false, "6c3e2f1c-733e-41d8-9c4d-874bfd1292ee",
+			"@@@InProc at 3F3E92163AA35F50794E9385", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245290000, false, "03e211ae-11d6-4e2b-a428-99536ab97c31",
+			"@@@InProc at 3F3E92163AA35F50794E9385", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245291080, false, "62f52b11-7b73-4ffd-bfd2-d1616ddd4311",
+			"@@@InProc at 716ED4BD4E8B77CBC32D761B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245293580, false, "90c4303e-2e41-43df-85a0-34c5c3bafce1",
+			"@@@InProc at 716ED4BD4E8B77CBC32D761B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245294760, false, "a2282048-73a6-4e65-90bf-d47261976e9e",
+			"@@@InProc at C22DB9388329222E3DC7F076", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245299870, false, "f8066f37-12d3-422e-a396-665499ab9b34",
+			"@@@InProc at C22DB9388329222E3DC7F076", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245300710, false, "a7166e26-3087-413f-9be9-897eefc1eb56",
+			"@@@InProc at 02C63BE571D41AF22E76D82A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245309420, false, "23edd278-9784-445f-a987-c1ed4d61bdf4",
+			"@@@InProc at F4DE20E6E0E15B16708BF572", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245310640, false, "2480985c-fe38-4791-84e5-8a0092ef4f07",
+			"@@@InProc at 02C63BE571D41AF22E76D82A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245310770, false, "fb5dcd5f-bbca-429f-8a1d-96faa2fa8277",
+			"@@@InProc at F4DE20E6E0E15B16708BF572", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245312340, false, "2871cfc4-067b-4cd3-8edc-22cea7734299",
+			"@@@InProc at 427411BA57C7F370761A3DEA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245321180, false, "a4941fdd-b5d5-4fe1-8273-93da9194078a",
+			"@@@InProc at 427411BA57C7F370761A3DEA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245322450, false, "052a607c-908b-49ed-85ea-a84a2f1ac0e5",
+			"@@@InProc at ADF5D0001B0C230B8C46F8C3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245322540, false, "a9b32638-4ced-4485-8f08-e286d0f08ed3",
+			"@@@InProc at ADF5D0001B0C230B8C46F8C3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245324330, false, "4ce4e721-8274-4457-8496-4f7f57c42a25",
+			"@@@InProc at AE51E739D52589E14603E1BB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245331550, false, "a0bb1934-638e-46c3-913a-07a8f67bc575",
+			"@@@InProc at AE51E739D52589E14603E1BB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245332740, false, "47f290c2-8c61-4396-ad45-3148e4ecab9a",
+			"@@@InProc at F87A00205693F47569789409", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245334070, false, "5d8b0d58-46ff-4fa7-a231-7df17b9bbd2b",
+			"@@@InProc at F87A00205693F47569789409", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245334880, false, "f62d9e4d-a866-471f-b8d2-c69787dfe70f",
+			"@@@InProc at 6D2005230D1AD9FE0C190CA9", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245341440, false, "94a55232-1e09-4065-b891-8cd3a1bf5f9f",
+			"@@@InProc at 6D2005230D1AD9FE0C190CA9", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245342270, false, "499e88a9-123b-4e0c-9470-c47ab94f95cd",
+			"@@@InProc at DFD01518DC508CC3C2BE08B5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245343090, false, "367eee51-e8e7-49e9-80fe-a374a51862b7",
+			"@@@InProc at DFD01518DC508CC3C2BE08B5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245344160, false, "d8d0d057-9d5c-4f37-a051-779e81fad309",
+			"@@@InProc at 19B5B620911E704929D9F7E4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245350690, false, "309b8494-337c-4a99-b58b-69e851b72d9f",
+			"@@@InProc at 19B5B620911E704929D9F7E4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245351700, false, "e0282e67-2bb2-408d-aafd-9cd66dad4c71",
+			"@@@InProc at 5B8B218B1D6096BFA81AE22E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245353110, false, "2a16cad7-de40-45a3-b7b0-54754b0bc627",
+			"@@@InProc at 5B8B218B1D6096BFA81AE22E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245353950, false, "14184ce3-5e34-4d81-9b73-df6c6684dbd1",
+			"@@@InProc at 73245F89D3F0E8C45B0878F3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245360190, false, "5ea775cd-5c37-4fe1-846d-31eaeed00822",
+			"@@@InProc at 73245F89D3F0E8C45B0878F3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245361020, false, "7347f422-9135-4011-aaa2-4da0d5bdf2c1",
+			"@@@InProc at 7318174BA0338E093B14DF65", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245363260, false, "32867582-d0ed-4bef-a185-faeeeb55205d",
+			"@@@InProc at 7318174BA0338E093B14DF65", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245364170, false, "79eac331-1967-491c-84bf-6ee9371f129d",
+			"@@@InProc at 81FC2D7B0D34C95604310D5B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245369200, false, "5da753f1-6f33-40d0-8a90-93a8fa7af91c",
+			"@@@InProc at 81FC2D7B0D34C95604310D5B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245370050, false, "2a19d579-d683-4199-baab-bba2f6d754f3",
+			"@@@InProc at 5E44277836C2A2BE92CBF64D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245373830, false, "20ae6c15-8764-474f-959c-91035565ba10",
+			"@@@InProc at 5E44277836C2A2BE92CBF64D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245375020, false, "f2e2af9a-b6fe-4653-96b1-7a2c76236d84",
+			"@@@InProc at 7E8B54C8E5359BC6F24C211D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245377860, false, "ba683d2a-5f45-4a87-9e5e-254cbaf3c323",
+			"@@@InProc at 7E8B54C8E5359BC6F24C211D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245379170, false, "fc9ca2a0-a14c-4356-8ed9-c7c3ea6ef095",
+			"@@@InProc at 5247ABBC64899F3CD882FB08", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245384710, false, "370cbedd-9f9a-4f81-8346-f095c94ca631",
+			"@@@InProc at 5247ABBC64899F3CD882FB08", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245385680, false, "44f4cb49-c403-4371-9574-852797178118",
+			"@@@InProc at 480D2BF428256AA8E85D9700", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245388190, false, "e6cbe44c-a405-4481-a123-3bba851aa1f5",
+			"@@@InProc at 480D2BF428256AA8E85D9700", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245388980, false, "3dafdfce-477e-4188-9732-18812acb3caf",
+			"@@@InProc at 2BA16CD91344635DE211F61A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245394960, false, "277b9a86-cc38-4c22-aba2-ed002a227158",
+			"@@@InProc at 2BA16CD91344635DE211F61A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245396140, false, "fdf325a8-ae4a-4dfb-bced-a4d27950e484",
+			"@@@InProc at 697570A4C16BBE2380673514", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245399560, false, "159bad31-772c-4ad3-b6db-a1a2d57fb600",
+			"@@@InProc at 697570A4C16BBE2380673514", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245400570, false, "2b200a50-a8fa-48bb-9e80-0cdb86da7eb1",
+			"@@@InProc at 4250E44E602BF1F9F6545494", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245404590, false, "92208da6-b0ec-42a6-b549-105684d0027e",
+			"@@@InProc at 4250E44E602BF1F9F6545494", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245405480, false, "97bcb06c-64b9-428d-b52b-42c5838efb0c",
+			"@@@InProc at 70B187A6F6224D141F52F7BB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245411710, false, "5a20119d-5904-455c-a7fa-6e4c12d6b6b7",
+			"@@@InProc at 70B187A6F6224D141F52F7BB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245412660, false, "0794e94b-e09b-4243-a470-1a99447de226",
+			"@@@InProc at 6A34CAB141AB9B136D17B52C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245413570, false, "acef20e9-b3cd-4de6-8d8e-f2b68b2e0bb1",
+			"@@@InProc at 6A34CAB141AB9B136D17B52C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245414370, false, "f54506a1-2ef8-4494-aa19-9fc71cf63e00",
+			"@@@InProc at 183BE05D937E740814BDBB40", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245421870, false, "68542ffd-81a1-4f66-a079-7cb83e52f135",
+			"@@@InProc at 183BE05D937E740814BDBB40", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245423030, false, "8bdcb9be-9fae-4196-971d-789349077781",
+			"@@@InProc at 11272CA6279A4CFDAAF39066", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245424200, false, "83b8186b-4789-417d-9d29-e9d8317449f4",
+			"@@@InProc at 11272CA6279A4CFDAAF39066", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245425390, false, "d4b326b3-a121-411d-ba0a-d6cc5c5da9bf",
+			"@@@InProc at 7FA5C79F37D9E1DA32951743", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245431790, false, "939077d0-d3ff-4d8a-8f94-811215f3a004",
+			"@@@InProc at 7FA5C79F37D9E1DA32951743", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245432610, false, "e7ee4bf6-2de9-47cf-b2fe-673a905d64ca",
+			"@@@InProc at 0D98E0C906AD6F09ECD51457", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245433410, false, "cc6310bf-fba7-49d5-ba88-acbdd881b0af",
+			"@@@InProc at 0D98E0C906AD6F09ECD51457", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245434190, false, "0ef443c3-09ca-40a3-91af-157c40e12d37",
+			"@@@InProc at 89E3598B9E2C8879D31E9B67", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245442230, false, "127cbacb-0dbe-430f-96a2-626faf3d2675",
+			"@@@InProc at 89E3598B9E2C8879D31E9B67", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245443520, false, "36ed83c9-73e6-4ad1-98f7-aadce88e5566",
+			"@@@InProc at 256A2E3B0918A459F42BE2ED", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245443640, false, "e7e0d1bf-0008-4471-8e5e-817b2b39aec9",
+			"@@@InProc at 256A2E3B0918A459F42BE2ED", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245445340, false, "d3001db4-fb28-41e1-9d84-c5c5ccb89a5f",
+			"@@@InProc at E33C92C97F1F403ACD48857B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245453820, false, "04efe551-4c25-4d16-827c-9b5ef709ac15",
+			"@@@InProc at E33C92C97F1F403ACD48857B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245455220, false, "49b51c14-19e7-4fdb-aad7-b5bbe0407616",
+			"@@@InProc at 8BA0BDDBCFE8864FC1D30A08", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245456760, false, "c6149310-e42a-4af0-8a5c-6ae967544a7d",
+			"@@@InProc at 8BA0BDDBCFE8864FC1D30A08", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245458370, false, "1cb9e572-c608-4e3e-a159-cb4c92da1097",
+			"@@@InProc at FF896E9D408D9CFFBFAB7ABA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245463870, false, "87c405aa-0115-424d-bea7-6d5a566cc756",
+			"@@@InProc at FF896E9D408D9CFFBFAB7ABA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245464700, false, "68520ff9-7944-4a27-98c0-cdce016b12f2",
+			"@@@InProc at 39D7822A85575AF06F4CC88D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245469430, false, "60dffa2c-aa84-4fb7-840a-8b829aa4616d",
+			"@@@InProc at 39D7822A85575AF06F4CC88D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245470640, false, "999a9d02-3959-4007-b1d9-a384381c8929",
+			"@@@InProc at 920817B0E2D4EDDB99AF9BD4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245473990, false, "49e3a96a-c376-4a3a-ac75-55b00f644acc",
+			"@@@InProc at 920817B0E2D4EDDB99AF9BD4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245475270, false, "4ad05848-b29a-4aa3-a7d8-f38c0f69c545",
+			"@@@InProc at 42F45B86DE2BADB4BE75FF64", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245479660, false, "f242de35-13ba-4aa6-bfb8-c87e67aeaff1",
+			"@@@InProc at 42F45B86DE2BADB4BE75FF64", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245480670, false, "9aa42bed-497f-4799-aa77-9317d5759dbe",
+			"@@@InProc at 1CD6681A19157B9A44DA1637", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245483990, false, "adae6161-64da-48c3-933d-73dfa3fefbfa",
+			"@@@InProc at 1CD6681A19157B9A44DA1637", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245485000, false, "052b4f44-b5dc-4571-b3dc-e95b01a4f6c6",
+			"@@@InProc at 54CD24073F362FD66A291545", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245488580, false, "6bd9229e-a9f7-4a62-a63f-6b2c428f6e37",
+			"@@@InProc at 54CD24073F362FD66A291545", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245489580, false, "bac8c9b2-ae9a-4edd-8546-edc5c93fcc6d",
+			"@@@InProc at 54A84ADAB5D568231F8CF2E6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245494860, false, "6ce307f6-ccba-417e-8798-64bc0df9cb15",
+			"@@@InProc at 54A84ADAB5D568231F8CF2E6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245496370, false, "a1b079a8-00c5-40c9-a6d8-c7365bbfb543",
+			"@@@InProc at 7BA9FAEA8C7665F4EA7A3DB3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245497940, false, "01ca59ce-cc94-4cb1-9be4-76bf3572b5da",
+			"@@@InProc at 7BA9FAEA8C7665F4EA7A3DB3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245498760, false, "e70182d4-e229-4942-bff4-e383bcf5a486",
+			"@@@InProc at CB19B059C6BF47746ECF4C72", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245532510, false, "d3b19bdc-347e-4477-9e47-b291142f3ea9",
+			"@@@InProc at CB19B059C6BF47746ECF4C72", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245533380, false, "c42b2a14-ee7d-4bfd-9898-7d73da304885",
+			"@@@InProc at FDAE6059052E5004059E79AA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245533610, false, "ceac37ec-8e5d-479e-b11c-6773ade31406",
+			"@@@InProc at FDAE6059052E5004059E79AA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245534960, false, "156855d2-d313-4db5-9d8b-20357b831e69",
+			"@@@InProc at 545F2EA5A8878E704DA5C412", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245541650, false, "0f708afb-2685-4120-9415-c9fc3a0b8943",
+			"@@@InProc at 545F2EA5A8878E704DA5C412", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245542460, false, "e3160b15-bc97-4f70-a056-f86ed58620fc",
+			"@@@InProc at 0213454B0D25A5490340617E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245543270, false, "58045ae5-89a2-483b-ba30-fcdfa9dbb84f",
+			"@@@InProc at 0213454B0D25A5490340617E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245544100, false, "f60e8f3e-a79b-4bf2-ad08-a23c89796c15",
+			"@@@InProc at 647DF5377C1F3D0FFC13CF42", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245550300, false, "ab6b87f5-6650-43e9-838b-6173b20fa027",
+			"@@@InProc at 647DF5377C1F3D0FFC13CF42", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245551480, false, "186ebe06-d6c1-4453-a382-9da254646dc0",
+			"@@@InProc at 73463F999B68FE4CADC5D3CF", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245553120, false, "edd08b4c-15a8-47f3-92e9-0fb142439086",
+			"@@@InProc at 73463F999B68FE4CADC5D3CF", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245554070, false, "03d4afe8-035b-4446-aa84-3da2327ae33b",
+			"@@@InProc at CA974884F2BB731C0D771ABD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245559530, false, "aeaa3244-83e2-4b66-ae1c-cb6c6d1ab4e4",
+			"@@@InProc at CA974884F2BB731C0D771ABD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245560310, false, "e9e1437a-771a-4334-a883-151ed0580b16",
+			"@@@InProc at 866ED0E019B2EF6F860B50B3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245562060, false, "a82b1020-7952-4e16-85c2-5664625712a8",
+			"@@@InProc at 866ED0E019B2EF6F860B50B3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245562880, false, "2bd2d134-c8dd-4b11-bae4-5c6ed9b055af",
+			"@@@InProc at FA4F88A9B00B284891898EF6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245569420, false, "745105f9-3685-4b97-b9e3-555bf4a42995",
+			"@@@InProc at FA4F88A9B00B284891898EF6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245570410, false, "f69b45cd-a3e2-4d68-bbfd-d67762b206b7",
+			"@@@InProc at 29FE87B3958153F885CEFFE8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245570640, false, "b2431787-a171-408a-bcc3-b433c66cec6b",
+			"@@@InProc at 29FE87B3958153F885CEFFE8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245571960, false, "ef0b8eb0-f03b-4988-9740-abac80c827a2",
+			"@@@InProc at FA6E2522F27EA0BC776ABCCA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245578760, false, "9db17f1d-5576-4948-80ce-05f83e482c1f",
+			"@@@InProc at FA6E2522F27EA0BC776ABCCA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245579650, false, "0a1dac8d-a180-43aa-a241-7d94eed1bdf2",
+			"@@@InProc at 5FA0313F88E7245AE22C1B4F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245579790, false, "09b3461b-5bed-40f5-b1a6-6e1045b90f30",
+			"@@@InProc at 5FA0313F88E7245AE22C1B4F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245581080, false, "6c10c1fd-ceee-4236-93c3-3bdaa87fd239",
+			"@@@InProc at AE06DA3A0D4FA7E4A59A8E8C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245587640, false, "a00b46d7-6f6f-4fb7-affb-3c34165f23dc",
+			"@@@InProc at AE06DA3A0D4FA7E4A59A8E8C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245588500, false, "eb8943c3-e48a-4ff9-a95b-56e5e265cd5a",
+			"@@@InProc at CE9DDF410864984EEBE0513A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245588680, false, "e301f341-1846-4e0a-ba15-e75302e3295a",
+			"@@@InProc at CE9DDF410864984EEBE0513A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245589930, false, "106ade44-86c4-4dfe-b9d6-0b418e02bea8",
+			"@@@InProc at 4EEBE2C8C4C6CF8459CC5BC8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245597740, false, "3dbdea3e-8ae3-4a31-8412-a9d6c7d38065",
+			"@@@InProc at 4EEBE2C8C4C6CF8459CC5BC8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245598890, false, "62562495-89b7-440b-acbd-39730f6b7c12",
+			"@@@InProc at E33BF782E3770C30A4D81BDE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245599460, false, "c36caa1c-d2a8-43c4-8c7f-70254f89b985",
+			"@@@InProc at E33BF782E3770C30A4D81BDE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245600930, false, "24c82eb9-044b-4caf-a32f-ae9125c145c9",
+			"@@@InProc at 5EB421933F6970EC1FBF7FB9", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245607950, false, "957b6dc3-21ab-4178-8d46-c939c0dc7316",
+			"@@@InProc at 5EB421933F6970EC1FBF7FB9", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245608740, false, "a2abcb3d-dd0f-4ead-8dac-8844e95802f7",
+			"@@@InProc at 29F847D0085401E47F2983E6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245609590, false, "fad9d505-c51a-4925-b219-fbff77865d35",
+			"@@@InProc at 29F847D0085401E47F2983E6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245610390, false, "3cea5493-e29b-4859-ac58-6f2f276b8e42",
+			"@@@InProc at EF8B312AE12A5506FAE3FA44", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245618210, false, "cfb087cd-8f9e-4d1c-9aec-ba03ed4ae769",
+			"@@@InProc at EF8B312AE12A5506FAE3FA44", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245619360, false, "5c9bfc83-f857-41ca-8ee5-73fce2b9e059",
+			"@@@InProc at 3FDDF8EF1EE63ED2B8946A37", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245620540, false, "0d99f2dd-1867-4a3e-84c7-0c083b09bdcf",
+			"@@@InProc at 3FDDF8EF1EE63ED2B8946A37", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245621680, false, "1e883d6c-c25f-40de-a150-6576bb0eff72",
+			"@@@InProc at B39270BACAE8488CB616B094", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245628570, false, "af6801d9-487f-48ae-a350-b512883ff31f",
+			"@@@InProc at B39270BACAE8488CB616B094", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245629930, false, "410748d4-3982-4cc2-b712-d7f8eaa443b6",
+			"@@@InProc at 3B843D566C25F0F1278AC99E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245632210, false, "3f544740-56b1-4664-a2c0-6e2e6ec332a7",
+			"@@@InProc at 3B843D566C25F0F1278AC99E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245633420, false, "3f4e8c84-ba19-4873-8758-d2143f143516",
+			"@@@InProc at 6DBC0AACF28FFF7FE7BFA888", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245639420, false, "8c71f129-bc6d-4a75-8706-77bfc05e3e90",
+			"@@@InProc at 6DBC0AACF28FFF7FE7BFA888", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245640320, false, "24a08ff0-1880-4f2a-bb08-afaafa10ddd8",
+			"@@@InProc at 68773F2519099F6EA0F8FD4E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245641920, false, "b39c0d59-646c-4433-8d32-74f0a14367da",
+			"@@@InProc at 68773F2519099F6EA0F8FD4E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245643090, false, "8c2f6d2b-ae5b-419a-bf74-24b6e6418646",
+			"@@@InProc at 1BFCF6549E2239A5EEE74C9D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245649810, false, "72a62b7c-22e0-47ce-a0cd-5d47a99e98c5",
+			"@@@InProc at 1BFCF6549E2239A5EEE74C9D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245651220, false, "bc7b2aa2-4942-4145-96b9-a7551ea945f1",
+			"@@@InProc at 96330F62A2AA732BFCEBA4C5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245652610, false, "199f5ee6-c05f-4f6f-89d1-77c93fd27b8e",
+			"@@@InProc at 96330F62A2AA732BFCEBA4C5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245653490, false, "9c963de1-761b-437a-8f2c-17a9c62ca7ef",
+			"@@@InProc at D92F4DA9EDDE7B2DEE59C163", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245661700, false, "1f660f36-fdf7-4337-b74b-8dff127276d8",
+			"@@@InProc at D92F4DA9EDDE7B2DEE59C163", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245662940, false, "a44529d0-4829-459d-a8ad-8436af24b969",
+			"@@@InProc at A4180AF528E6D66A8C91E24B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245664040, false, "b385133a-4f41-4236-9abf-a9e7fe36400c",
+			"@@@InProc at A4180AF528E6D66A8C91E24B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245665220, false, "6f6f7948-08f8-478f-b321-2ce51cc93556",
+			"@@@InProc at 61D4FACCDD95BD5F0139F883", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245671310, false, "7ea3f8dc-71ff-45b9-a69f-ad7030a46f39",
+			"@@@InProc at 61D4FACCDD95BD5F0139F883", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245672360, false, "598aaeb6-ce07-44e0-a48e-398ba4f8b3d3",
+			"@@@InProc at 50A6E5C1A9D3499C208A3889", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245674470, false, "e42ecfd7-581d-49bb-9572-6d0fae09ac01",
+			"@@@InProc at 50A6E5C1A9D3499C208A3889", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245675410, false, "cc28a082-f720-41f7-8217-4874ceb13df5",
+			"@@@InProc at 398473B64324B4810A337D0A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245680330, false, "f8e4ac2f-16ab-4f29-9848-d16cd6ecbd85",
+			"@@@InProc at 398473B64324B4810A337D0A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245681520, false, "d85f9ecd-4efb-4f6e-89b5-f4ae846241b6",
+			"@@@InProc at C9C32D30927C40A94F83A3B7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245685100, false, "4a6f4ee9-dc62-4e36-8c9c-2bd3b453f6e8",
+			"@@@InProc at C9C32D30927C40A94F83A3B7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245686150, false, "ca6e7d4f-d045-44d0-89eb-922cfb997b3b",
+			"@@@InProc at 0BE1680B39E0C09EA12420B5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245690110, false, "e3732f66-3a5a-4716-9b97-24a6f81516d2",
+			"@@@InProc at 0BE1680B39E0C09EA12420B5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245690900, false, "2b971d70-84cf-4180-a890-1175cce29bd2",
+			"@@@InProc at 9AE3D65AC211E0BA2BC5ACC7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245693720, false, "ef4fd527-c07b-466b-8ed2-d8ba0b82e42f",
+			"@@@InProc at 9AE3D65AC211E0BA2BC5ACC7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245694640, false, "a679652e-c6e6-4079-bbc5-37ad4d26ed32",
+			"@@@InProc at AD96717DAA5EDD299701BF8A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245699390, false, "6e82f46c-6f84-4c23-8bed-693d07e884ee",
+			"@@@InProc at AD96717DAA5EDD299701BF8A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245700220, false, "e3211133-c9a1-4d18-b914-61416800c9e2",
+			"@@@InProc at F4AFF64A9B669025AA8C5B27", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245706640, false, "47c521ac-fe77-47bf-9aa5-377d33721783",
+			"@@@InProc at F4AFF64A9B669025AA8C5B27", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245708030, false, "e40b77f5-5905-4ec4-b6b9-d8eea886083e",
+			"@@@InProc at 3664F945F41D2CCA796240B6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245708140, false, "e2f25569-da37-44ec-82a6-402959a976b5",
+			"@@@InProc at 3664F945F41D2CCA796240B6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245709460, false, "c08f6498-99c6-41fb-961b-b561ff19e4b3",
+			"@@@InProc at BB247C0433364E4DE9344918", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245716630, false, "01996fb0-5280-4679-ac35-9951eb8f1b48",
+			"@@@InProc at 3964E3342F0FB98E55486A3E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245717640, false, "7d0360f2-0c58-47e8-8859-eb80e60d5432",
+			"@@@InProc at BB247C0433364E4DE9344918", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245717720, false, "d26191af-5244-4d04-b2bb-fb00ef8ab841",
+			"@@@InProc at 3964E3342F0FB98E55486A3E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245719130, false, "b8f96afa-ffb8-4d1d-a4c4-539e672d276f",
+			"@@@InProc at E27AC15B5BABA80DAAE61AA2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245727010, false, "b55bd6f3-2cb3-4ac6-8974-81a60dc9a276",
+			"@@@InProc at 2C476A2B01395FBCFE43D526", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245727120, false, "a84b5a7d-893d-4231-93ba-22b1ad9a3361",
+			"@@@InProc at E27AC15B5BABA80DAAE61AA2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245728480, false, "a50ecb5f-e6f7-4352-afbe-8548b7a5c14e",
+			"@@@InProc at 2C476A2B01395FBCFE43D526", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245728570, false, "1617e03b-e58a-4834-854d-d0de19a55137",
+			"@@@InProc at A4E50E00AA66F8C8E7583833", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245736810, false, "22891383-d08a-4cd2-8c19-d956bcd0df62",
+			"@@@InProc at A4E50E00AA66F8C8E7583833", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245737770, false, "aa1e935b-5db9-4b27-becc-d8cdb1b465cb",
+			"@@@InProc at B78345975A400FC660D54A20", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245739190, false, "dd0e9dfb-1983-442f-be6c-9168cf52611e",
+			"@@@InProc at B78345975A400FC660D54A20", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245740010, false, "2942db03-5f88-4edb-9159-ddd06edfda40",
+			"@@@InProc at 57F1191B5A514E2033715077", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245746330, false, "593bf2cb-6f81-4584-9d6b-20d8c943bb85",
+			"@@@InProc at 57F1191B5A514E2033715077", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245747110, false, "0a016683-333c-481c-a28a-7dbce7dd273f",
+			"@@@InProc at 84FB5D221FBE414C4177C1DB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245751670, false, "f59f23fe-0494-4c8c-bbf8-214f350a0ea6",
+			"@@@InProc at 84FB5D221FBE414C4177C1DB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245752470, false, "1142db28-9d36-4e98-83f3-4bd80aabec1d",
+			"@@@InProc at 2434F0B97D57B5EB869CB5F0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245754790, false, "6c15c9a3-b294-4000-853a-06de036c6d8d",
+			"@@@InProc at 2434F0B97D57B5EB869CB5F0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245755580, false, "f866bcb8-cd07-43d5-a8cc-c7eb138b2aeb",
+			"@@@InProc at 4EDE0795D5B14A1B4B268D8D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245761280, false, "e535de92-24bd-4aa7-a7cd-2209cfd1b483",
+			"@@@InProc at 4EDE0795D5B14A1B4B268D8D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245762070, false, "29839f26-62a8-43ab-b047-4e349ffb84c8",
+			"@@@InProc at 8489202C3CDAADB68D6E94A6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245762920, false, "c1d39670-bbb3-471c-80aa-727bbc1212aa",
+			"@@@InProc at 8489202C3CDAADB68D6E94A6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245763700, false, "925edc69-e450-4fc7-840b-315dd2ebd0f7",
+			"@@@InProc at 07BAE2EE283F4362998195D6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245771570, false, "b82cb4af-2c23-46ac-8605-0d3a39575a2e",
+			"@@@InProc at 07BAE2EE283F4362998195D6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245772800, false, "f021bb00-6ac4-4f1a-8bb8-c593c3b81eb3",
+			"@@@InProc at AC1CDE6971C3779727434376", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245772960, false, "6e5064b5-8728-424f-900f-efb0c116a4af",
+			"@@@InProc at AC1CDE6971C3779727434376", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245774610, false, "a61e73b0-2e93-4022-8427-bdaa74634f41",
+			"@@@InProc at D265263A6C106983173A1E0B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245781540, false, "2c33703f-b501-4a21-850b-aa6566055b4f",
+			"@@@InProc at D265263A6C106983173A1E0B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245782340, false, "a95e9938-a417-417c-b6ab-467b446c0571",
+			"@@@InProc at 3A894BD130DD140FE30C4AC5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245783150, false, "f003a16f-bfdd-4707-be24-ab05e0d81ccf",
+			"@@@InProc at 3A894BD130DD140FE30C4AC5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245783950, false, "f885c463-0156-4d76-b2ba-94f26ce6be69",
+			"@@@InProc at 05FD1BB4D16536E1D12B41C3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245791330, false, "6d5d511e-0f0e-4312-b0ce-25f2267c5c1c",
+			"@@@InProc at 05FD1BB4D16536E1D12B41C3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245792470, false, "da1b3349-d268-4b01-913c-c557c75ce29d",
+			"@@@InProc at 0DC000E66A8C2D8A653B04E2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245793670, false, "0456c4d6-fe9d-4681-9059-a1baf35d2113",
+			"@@@InProc at 0DC000E66A8C2D8A653B04E2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245794780, false, "071c1617-9d3b-4db7-84bd-f70028fa0f47",
+			"@@@InProc at B37CCBA6BB34913B4FCE0972", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245801230, false, "0d565ef3-86f5-41f2-b106-59c2afc84ee8",
+			"@@@InProc at B37CCBA6BB34913B4FCE0972", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245802280, false, "463b7291-ee4a-40a6-a6d2-f4d0df7f61f2",
+			"@@@InProc at 69677B291D62B82FB6093185", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245803680, false, "e20e72be-61b3-44a1-9bc4-cfbb5f781f77",
+			"@@@InProc at 69677B291D62B82FB6093185", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245804460, false, "d8956e6d-ece0-497b-8a53-e7384cbe27e5",
+			"@@@InProc at A801D77809162ECC00C1056B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245811740, false, "3d42bca7-5c7b-4486-89b4-74dd3a17c600",
+			"@@@InProc at F3FDA983B941C678420DE3BA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245812840, false, "2cc321df-a53b-4c66-964b-eaaa4c2f91de",
+			"@@@InProc at A801D77809162ECC00C1056B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878245812980, false, "b48015a6-b541-47fc-a1fb-016fa746b9d1",
+			"@@@InProc at F3FDA983B941C678420DE3BA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246814070, false, "5a162501-33b6-4e36-a445-3cf68bd25bf7",
+			"@@@InProc at 8A8010A0CF098251A023F051", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246822440, false, "be58fb41-e0d8-420f-9f41-f76f6e9d44f5",
+			"@@@InProc at D6BC7080E2F192D42F4D35EC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246823390, false, "357ec812-e378-4ec3-b4e5-f54601014467",
+			"@@@InProc at 8A8010A0CF098251A023F051", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246823500, false, "9b8e28a0-d8a7-4d18-8e4a-171f16769b04",
+			"@@@InProc at D6BC7080E2F192D42F4D35EC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246826300, false, "aeb57f6d-df7c-4c6b-b0c2-ab9a0cd11884",
+			"@@@InProc at 9FFF4BFE33AFA9BB31C1F2D4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246834510, false, "5e55f02f-590b-44f2-87aa-3ea75e55da82",
+			"@@@InProc at 9FFF4BFE33AFA9BB31C1F2D4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246835590, false, "26727b76-95ce-4a8f-aabd-9714b76ed169",
+			"@@@InProc at EFC57D08469BD20B0E780685", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246835760, false, "a94b5567-c677-4b88-a13d-b9446ded30d1",
+			"@@@InProc at EFC57D08469BD20B0E780685", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246837530, false, "63b99d16-1646-4d32-b367-8fa0b7dd34c9",
+			"@@@InProc at 9D4FFC64FD08B25975F2545F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246844500, false, "bbb5a0f4-1a8b-4970-8b7b-2cf89f97e4b8",
+			"@@@InProc at 9D4FFC64FD08B25975F2545F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246845470, false, "e114bd5d-6a6a-4a42-ac2e-b9234a561ed7",
+			"@@@InProc at F5111DD763DA64E3B632EBCF", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246848520, false, "e3e5a5b0-5a44-46c7-a5af-515898caf7c0",
+			"@@@InProc at F5111DD763DA64E3B632EBCF", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246849900, false, "b92529d4-70c9-463e-90ac-9f99c5dafa91",
+			"@@@InProc at C69D371D7FA5AD0FDA4D9B06", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246855700, false, "45acd068-fcd3-47c7-a7f5-e213b94001f2",
+			"@@@InProc at C69D371D7FA5AD0FDA4D9B06", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246856540, false, "a667a3c0-0e54-48fb-b527-40e2a904ca45",
+			"@@@InProc at FB1D49FA66970CED83EBB1BF", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246860200, false, "9feb4b43-2aa0-4387-b445-1b87c14b6e40",
+			"@@@InProc at FB1D49FA66970CED83EBB1BF", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246861090, false, "cc71f936-4179-4eab-a59c-50b11a91576e",
+			"@@@InProc at E97B31A2A15696B72401F7DD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246866380, false, "f2f71552-1b45-4da9-9ae2-6dbfc61b3a37",
+			"@@@InProc at E97B31A2A15696B72401F7DD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246867190, false, "1e78f060-b752-4d8a-a4fd-d9fa8846006b",
+			"@@@InProc at 0651512D78D3B7F97E372F1B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246870960, false, "d2491055-71f9-4615-9334-4614ed3b80e0",
+			"@@@InProc at 0651512D78D3B7F97E372F1B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246872040, false, "c7c390aa-018e-448f-8dd6-160c4d7142bd",
+			"@@@InProc at 8C5C4B7D1815727C94C1754C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246877810, false, "2ad96554-52fb-4908-ae2c-5927e8f5fc05",
+			"@@@InProc at 8C5C4B7D1815727C94C1754C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246878640, false, "cebcb848-bd0b-4d16-86fa-b4579b4366ab",
+			"@@@InProc at DCAF4D17B0885B1102447F5F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246882480, false, "2a44a4f5-6843-40e1-aad0-2e0e22403580",
+			"@@@InProc at DCAF4D17B0885B1102447F5F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246883800, false, "34027bf5-36f4-4514-807f-315cc0a436d2",
+			"@@@InProc at C5D4BF3DA418C25840C9054D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246888080, false, "073bcdb9-ba00-4df2-91fe-c671155392c6",
+			"@@@InProc at C5D4BF3DA418C25840C9054D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246888920, false, "6d384fea-cf9e-40e3-91d2-521598e687ed",
+			"@@@InProc at FF6DCCE429CB1A6505B9EE0A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246893650, false, "d3408f8f-b89f-4735-8234-e0f641b63aad",
+			"@@@InProc at FF6DCCE429CB1A6505B9EE0A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246894870, false, "e44c9de1-aefa-45e9-8b20-d2a8df253400",
+			"@@@InProc at EB58CD992EC3E6E815DACEDC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246899190, false, "28602c06-8143-4e2f-a4ef-443e12903f18",
+			"@@@InProc at EB58CD992EC3E6E815DACEDC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246900000, false, "e78ed7f3-3399-4fc4-8f29-2765b355076e",
+			"@@@InProc at EE292756EAA7D8454076FBED", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246904790, false, "373d6668-7803-482d-96db-1b6fd826cd19",
+			"@@@InProc at EE292756EAA7D8454076FBED", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246905950, false, "5dc56d2a-b9a1-4271-9a65-88e445093e9e",
+			"@@@InProc at 8DB33A2EDA4F74D13D62A199", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246909600, false, "cfb26b74-d38d-4e76-a6d6-3b759dbccc0f",
+			"@@@InProc at 8DB33A2EDA4F74D13D62A199", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246910430, false, "13ab8ee4-fd12-4aa9-bf82-141114c14dd7",
+			"@@@InProc at 6C063620E808EDE05BE43652", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246915510, false, "17b0998e-715d-4361-9720-0d69159a1076",
+			"@@@InProc at 6C063620E808EDE05BE43652", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246916590, false, "7d2e244e-3cad-485e-9a4d-bac4d6bff70f",
+			"@@@InProc at 0786DC4D438795990CED7723", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246919690, false, "3a70733f-c771-40ba-bf25-b6040514e1c2",
+			"@@@InProc at 0786DC4D438795990CED7723", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246920780, false, "fad4d74e-7d9b-4ccf-88a7-476088fd6687",
+			"@@@InProc at E9FFFCE5451A9EBB043FACB0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246925640, false, "cefbb410-d593-4998-8ebb-7ac4f1475e60",
+			"@@@InProc at E9FFFCE5451A9EBB043FACB0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246926500, false, "c5077a4f-0dfb-414d-ab73-27b85391cb71",
+			"@@@InProc at CD24EB279703AB3CF0B180E9", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246928810, false, "dcf107a6-4c6a-4b0a-ab1e-3a3963d6565f",
+			"@@@InProc at CD24EB279703AB3CF0B180E9", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246929730, false, "90ea1eab-f722-4df7-a9f0-1a6119af7653",
+			"@@@InProc at 5FEFCFBC296FF5FFCC57148B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246935220, false, "754438d1-1ea3-4e86-b252-38da076faf90",
+			"@@@InProc at 5FEFCFBC296FF5FFCC57148B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246936150, false, "af13a0ab-bfe5-4cd1-87b7-6db83a9025e1",
+			"@@@InProc at F2299580FF868BC97567719B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246938670, false, "dbabeb78-4d28-455b-ab65-9ed86e6991e9",
+			"@@@InProc at F2299580FF868BC97567719B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246939570, false, "38329922-3987-45f1-8058-6db9de163d35",
+			"@@@InProc at 76621783A173E6E7DC041096", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246945570, false, "8b05f525-c055-4ca3-af9c-4c2b43231ba3",
+			"@@@InProc at 76621783A173E6E7DC041096", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246946520, false, "10a82135-abc0-44cc-879c-e381f583de25",
+			"@@@InProc at 3B97ED74A4EAA28F32F387CC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246949560, false, "5be6b23d-79c9-4db6-97f5-58d410688d5d",
+			"@@@InProc at 3B97ED74A4EAA28F32F387CC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246950410, false, "ce3a4d70-1219-4400-bf2a-d5ba245cf669",
+			"@@@InProc at 081DCC99BC2251DC88A77F05", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246955870, false, "6881e696-564d-46a2-b156-9b61187acd90",
+			"@@@InProc at 081DCC99BC2251DC88A77F05", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246956830, false, "e814b396-d467-46dd-90a7-21388ea127ee",
+			"@@@InProc at D9C2024FD25DA328EA19DF09", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246958630, false, "b76368f0-17e1-4e33-a384-281a64f030ec",
+			"@@@InProc at D9C2024FD25DA328EA19DF09", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246959710, false, "e481982f-f541-4f5e-8b6a-0edf6e295581",
+			"@@@InProc at 4EA3928C3A5B02EFADEA4C9B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246965970, false, "ad288d89-3634-4a16-afa0-2bb1024167d9",
+			"@@@InProc at 4EA3928C3A5B02EFADEA4C9B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246966810, false, "4cc76eb0-902a-4b32-8a22-34cd81878af5",
+			"@@@InProc at 69BB5D091A864D2A5650B88D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246969580, false, "51a32680-4a2c-4007-be4f-86345b8dac15",
+			"@@@InProc at 69BB5D091A864D2A5650B88D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878246970420, false, "689cecc6-cd16-422e-abee-00b147061628",
+			"@@@InProc at 95038A11FBF9743EA8ACC971", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247004580, false, "44656af8-a151-4ff4-890c-ed74659dc953",
+			"@@@InProc at 95038A11FBF9743EA8ACC971", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247005670, false, "3edac3df-aae2-4b0e-b782-eab94e0b287c",
+			"@@@InProc at 0F9306C9056BEFA0FFFBDE33", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247006700, false, "58b27933-e316-4113-8449-e8f0a9c4d0c1",
+			"@@@InProc at 0F9306C9056BEFA0FFFBDE33", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247007590, false, "c3539ce2-8268-4d55-b7a0-a2d8f60db281",
+			"@@@InProc at 476411E31FF65EDF4F4576F7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247014520, false, "706bb4c1-ecc2-4625-83ea-4ae0671059c3",
+			"@@@InProc at 724DC6465FB27DA74F10F28B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247015640, false, "396a38fb-d97f-4568-accf-d1b964589071",
+			"@@@InProc at 476411E31FF65EDF4F4576F7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247016040, false, "71cace79-32b8-46bb-b76f-7a093dfaddd6",
+			"@@@InProc at 724DC6465FB27DA74F10F28B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247017690, false, "5041ccfa-db6a-4d33-9234-0399618ff9d4",
+			"@@@InProc at DF75A85858121F93007D11EB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247025260, false, "abce8067-965f-4757-98f3-1d6b09a5d2ea",
+			"@@@InProc at 482134E3BA6904FBEACF4512", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247026630, false, "64e6f45c-a657-4506-8bf0-7b9246567157",
+			"@@@InProc at DF75A85858121F93007D11EB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247026700, false, "0c4f0ae8-42ee-4b83-bf3b-5fae68612daf",
+			"@@@InProc at 482134E3BA6904FBEACF4512", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247028310, false, "660109e3-1749-4dab-ad01-18fa05464b3d",
+			"@@@InProc at 2E1825796CF872FD1883C0C5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247037720, false, "76e4e8b3-9dba-4c95-a59e-14bd27b7f723",
+			"@@@InProc at 761AD1BF58BC7C15E9677F36", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247038230, false, "16780393-8b65-4622-84af-559849765722",
+			"@@@InProc at 2E1825796CF872FD1883C0C5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247039670, false, "0777ffdc-eb9c-40ea-bc46-ec7af4d9b095",
+			"@@@InProc at 761AD1BF58BC7C15E9677F36", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247039770, false, "245c4316-71f6-4613-8760-8b67034e51b3",
+			"@@@InProc at 1FC6E9A3725B32E676FF771C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247048840, false, "6d357169-05a6-4f74-9e19-0311161d3a6f",
+			"@@@InProc at F307E00B3B26FF978A831D60", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247049170, false, "7e72a1c3-2628-47a5-91bf-d8c420fdcc5a",
+			"@@@InProc at 1FC6E9A3725B32E676FF771C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247051120, false, "b9be2231-5658-4b8e-bf61-3fd26a61675f",
+			"@@@InProc at F307E00B3B26FF978A831D60", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247051210, false, "a2bb2b7c-ba8d-4920-90bc-8afaaa25f081",
+			"@@@InProc at F6D9FAB55B0B74B41786FD14", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247060530, false, "6b8e5afd-ebf6-4674-9e2d-543d0ceafe0a",
+			"@@@InProc at F6D9FAB55B0B74B41786FD14", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247061380, false, "57d2c3eb-c661-4c7f-8976-c96b4cfca39f",
+			"@@@InProc at A8BA4A26008BEC28986DC4DC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247061600, false, "fb8825d5-938b-408d-9d7a-60d92dbd1283",
+			"@@@InProc at A8BA4A26008BEC28986DC4DC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247062910, false, "e217171b-97c7-48de-9ddf-c97c3abfb268",
+			"@@@InProc at 8A77BC1DA3B853E976307336", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247070150, false, "b956dd1a-f943-4519-81f5-497f683ee9c6",
+			"@@@InProc at 5EB17A9D2A22D221FD4DDE3D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247071310, false, "a2759ac0-c1f2-4aff-a092-a4ae7a94cb12",
+			"@@@InProc at 8A77BC1DA3B853E976307336", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247071380, false, "09e4f3cf-231b-4130-94b6-c6d1ed378cfd",
+			"@@@InProc at 5EB17A9D2A22D221FD4DDE3D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247073470, false, "d25c5ca2-ae8e-4d7e-915b-966b5b8ea4a6",
+			"@@@InProc at B74935901B93AE144C504DF5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247080310, false, "397c811d-bdad-4c72-bb12-98aceb49a03d",
+			"@@@InProc at B74935901B93AE144C504DF5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247081120, false, "ec9b9d8f-6c7c-40a6-a987-35e0166f7195",
+			"@@@InProc at 43928DB9CE7385746D218FCA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247081950, false, "07249379-ccbe-41ca-89e7-7e77ca9201c7",
+			"@@@InProc at 43928DB9CE7385746D218FCA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247082760, false, "1125c10e-d1e2-4f21-8a6a-b44e1af8bac1",
+			"@@@InProc at A57E7B88285C36A519EFCFC2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247091110, false, "8a9acb59-e5e7-45ce-9b53-7302b54fec22",
+			"@@@InProc at A57E7B88285C36A519EFCFC2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247092360, false, "1fd76f42-c4f7-417a-813a-93859a151c88",
+			"@@@InProc at 18846B5A28B89DF773F64930", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247092450, false, "b4b80df6-d0b2-4701-bf60-96b43d966da5",
+			"@@@InProc at 18846B5A28B89DF773F64930", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247094210, false, "52905498-1463-46be-ab90-9828d700b17e",
+			"@@@InProc at 4BEE1142DAF10446368BCCDE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247104480, false, "5322005c-506d-4d80-a5e9-8ad104d951ec",
+			"@@@InProc at CA3FE35B6E6CEC61A87B221E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247104800, false, "28bc1453-0033-42d5-9b44-73eca6acb675",
+			"@@@InProc at 4BEE1142DAF10446368BCCDE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247106510, false, "244d5dee-ef75-4d2f-bc2b-19207bb6ba33",
+			"@@@InProc at CA3FE35B6E6CEC61A87B221E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247106600, false, "22ee35b3-2eb2-475c-8177-2b2aba30ff80",
+			"@@@InProc at 0776E57D1BEF9503099628AA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247114790, false, "8273c8df-1c28-4ad6-afa1-7af404f91439",
+			"@@@InProc at 814C38F7C6B706AB7E6ADE5F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247115720, false, "89879286-a5a6-48a8-8947-6fcbb6bed545",
+			"@@@InProc at 0776E57D1BEF9503099628AA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247115800, false, "0f7b4f76-d574-474e-962c-99cbe3115a00",
+			"@@@InProc at 814C38F7C6B706AB7E6ADE5F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247117160, false, "2d668259-230e-49c3-942c-f41160b09608",
+			"@@@InProc at 306CCB98BC13D91347AEA10D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247124860, false, "2db59713-f67d-4aea-927c-5720fb179450",
+			"@@@InProc at 740F2E513B4A20E2A9E2A587", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247125790, false, "216d0494-17fc-4be1-86cd-1435b5238697",
+			"@@@InProc at 306CCB98BC13D91347AEA10D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247125880, false, "ca77b64f-b1f0-4567-9c11-a57792150fcb",
+			"@@@InProc at 740F2E513B4A20E2A9E2A587", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247127570, false, "bdf3f274-28ea-4bce-81d6-5cffe207db8c",
+			"@@@InProc at 64A92692C7B5C9D8831876DE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247135420, false, "15b850f3-923c-41f0-b94c-2005e8a273b6",
+			"@@@InProc at 8356253E447B988FF668D82A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247136370, false, "c7a36f1a-0850-4aa5-b7ee-5ba1b72f8a04",
+			"@@@InProc at 64A92692C7B5C9D8831876DE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247136500, false, "68554672-c176-47d3-b043-ecb1d114fbc3",
+			"@@@InProc at 8356253E447B988FF668D82A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247137850, false, "cf967f76-0a34-46fb-86a6-36ac8189f05a",
+			"@@@InProc at BB3CA79DDE5238DC67973781", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247146360, false, "77e88049-be18-4e9a-ab1b-1f8597c272f4",
+			"@@@InProc at BB3CA79DDE5238DC67973781", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247147550, false, "66dc4e2f-af50-40ea-8822-0cca4f8c1e2e",
+			"@@@InProc at D5855D09E04233887427080B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247149300, false, "11d12f9f-2b96-4b09-a5df-34cefe87bd85",
+			"@@@InProc at D5855D09E04233887427080B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247150470, false, "a607b7c7-81a2-4d6b-94cf-7aa2fa860f1c",
+			"@@@InProc at 5BA22C6DB72F1D36ACD55444", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247156750, false, "2acde043-8fab-4158-b76b-900a8808cf05",
+			"@@@InProc at 5BA22C6DB72F1D36ACD55444", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247157580, false, "c7d83722-cf2d-4185-ada2-29663a34c1ee",
+			"@@@InProc at A68C61FB6AA14C1255719243", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247159970, false, "01fca4dd-b202-49dc-90d6-ef323b0bc8db",
+			"@@@InProc at A68C61FB6AA14C1255719243", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247161090, false, "57887a84-4fcd-473a-91a0-0a85029bd2ac",
+			"@@@InProc at 99B20B16B89FF93C3447DD20", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247165670, false, "90a43af8-dfac-4814-95cb-9af9ae5c025d",
+			"@@@InProc at 99B20B16B89FF93C3447DD20", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247166510, false, "60ffadb0-dc80-4a25-8ce1-088244fe2b55",
+			"@@@InProc at A314705ED28D3EFFA0278403", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247170340, false, "b2d22485-6700-4bae-9265-07bf2aa4b0a6",
+			"@@@InProc at A314705ED28D3EFFA0278403", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247171340, false, "5c82d61c-a215-412c-acf8-77f5c323a611",
+			"@@@InProc at 25BC1561F543A1E693C0428B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247175320, false, "f4c6b765-5d8d-43eb-a9ac-cee0698d7f48",
+			"@@@InProc at 25BC1561F543A1E693C0428B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247176230, false, "e9cd6cad-1576-407b-a4de-3ba5b6cb2487",
+			"@@@InProc at 63F76F6079E53E99BA27D059", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247179150, false, "3d0bc071-4dca-4076-adef-513bc2b4e91a",
+			"@@@InProc at 63F76F6079E53E99BA27D059", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247180200, false, "d8e00889-325a-4f49-a0d4-b9021b450b5d",
+			"@@@InProc at 94A8F2803955E780C77C12D3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247185670, false, "55190117-403d-4e4d-a764-b7057d397a5f",
+			"@@@InProc at 94A8F2803955E780C77C12D3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247186480, false, "19a1cee9-3462-44bb-93ad-903c8e1b2a63",
+			"@@@InProc at AA62CB8EF3B14B8BDD2E6304", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247190550, false, "9697caed-8162-446a-ab72-096502bbc41f",
+			"@@@InProc at AA62CB8EF3B14B8BDD2E6304", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247191550, false, "318328d0-fff6-4c49-b233-3138d4c8b63f",
+			"@@@InProc at 835D07C36DC1D68498DC0273", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247194290, false, "30d0344a-8b89-4097-aea0-bb7419a376a5",
+			"@@@InProc at 835D07C36DC1D68498DC0273", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247195380, false, "9d8a704c-3658-4195-8b8b-c073090c2edb",
+			"@@@InProc at C8F8EAC79846E60E6D92E9F1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247199640, false, "eddbe3f9-07f9-4de1-9d84-d66faee4cab4",
+			"@@@InProc at C8F8EAC79846E60E6D92E9F1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247200740, false, "2a23fa41-fc3b-4b4a-9860-afac802b36f9",
+			"@@@InProc at 25C91C7DDE9838D5A2A03F91", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247203200, false, "b2400eed-d487-4aa1-8c36-2b5db239c75d",
+			"@@@InProc at 25C91C7DDE9838D5A2A03F91", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247204120, false, "400ab812-71ad-45bd-81a4-b5f37c0e7d7f",
+			"@@@InProc at D5C18DECFECB6BF376E6BC9E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247209040, false, "fc5a5392-3171-4a36-b7b1-ae672a0c2983",
+			"@@@InProc at D5C18DECFECB6BF376E6BC9E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247210110, false, "133678f0-4c5e-4fa0-a7e2-23e5177d90ef",
+			"@@@InProc at 9259702EDF8D3965F7CF3C12", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247215060, false, "5711ea60-d2ea-4271-b77c-bf435c4abecb",
+			"@@@InProc at 9259702EDF8D3965F7CF3C12", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247216280, false, "218f0865-7dd9-423f-8c4f-d4fc7af25e94",
+			"@@@InProc at 6EFF6F47703BA2C2D8C27E7C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247220590, false, "8e2c687d-f965-4b5d-8d84-0bb186d9da7a",
+			"@@@InProc at 6EFF6F47703BA2C2D8C27E7C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247221400, false, "efae374a-8fa7-48c4-9d27-3dc6a3e3d0bc",
+			"@@@InProc at E9EFB81487FC10FB73FAE48F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247224560, false, "8beec8fa-8884-4abb-9aef-6000dc175be7",
+			"@@@InProc at E9EFB81487FC10FB73FAE48F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247225360, false, "fe97fc04-0d58-4df8-89ad-42082961f264",
+			"@@@InProc at 427604AB16F08CAB75A655DE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247229060, false, "db16c1d0-5eab-41e8-9e09-d15c83904232",
+			"@@@InProc at 427604AB16F08CAB75A655DE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247229850, false, "78d2f70a-2459-40b1-8346-4ae6a6c62aad",
+			"@@@InProc at 88A0F7CE474107BF1D27E657", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247232840, false, "2bd000d1-e00f-46a5-b626-f4f670d237e9",
+			"@@@InProc at 88A0F7CE474107BF1D27E657", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247233630, false, "596efbca-6ea8-40f4-a086-e30ce48089fb",
+			"@@@InProc at 13610F1A47961E5ED17B72A5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247237410, false, "f3f42d0d-bcac-4ea3-9d8d-25df90271c0a",
+			"@@@InProc at 13610F1A47961E5ED17B72A5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247238580, false, "27ccfcee-b729-4ff3-8c1a-cf73f077b203",
+			"@@@InProc at 684AD6F8FDFB11520156C931", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247242910, false, "9c58737c-9c96-4625-93f4-cd7636eb5373",
+			"@@@InProc at 684AD6F8FDFB11520156C931", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247243700, false, "917a95b1-f500-4bd9-8572-ed56e3e69e06",
+			"@@@InProc at BB45D31EC78FB047B359BBCD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247247120, false, "ebdd91d8-c059-4811-9d77-1944d779b857",
+			"@@@InProc at BB45D31EC78FB047B359BBCD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247247990, false, "679a66c7-a2ae-4673-944d-a9dc76f47de3",
+			"@@@InProc at 8CD03D9CD7492764725EEA4C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247252210, false, "d7bebe43-727c-4c34-bf89-406ab0f0c13d",
+			"@@@InProc at 8CD03D9CD7492764725EEA4C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247253300, false, "65a55164-6579-4a6f-9a52-903d3f31d69b",
+			"@@@InProc at D4824A7D7521DC0176A6C0EA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247256140, false, "0917007e-81b3-42df-9d22-d7efdb787352",
+			"@@@InProc at D4824A7D7521DC0176A6C0EA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247256980, false, "98a2beb5-cc22-4939-9afe-b474b2906840",
+			"@@@InProc at 4BFE703AC2634F2A75DE8E0B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247261990, false, "e27c28da-8a9a-4d2b-bb2b-02dd7546904d",
+			"@@@InProc at 4BFE703AC2634F2A75DE8E0B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247262830, false, "d73c0b3d-ac16-415c-9528-cc105dd63214",
+			"@@@InProc at 46248E7100CFF228D40481A5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247265150, false, "cd9ba10a-f943-4927-b371-961f6944e1d8",
+			"@@@InProc at 46248E7100CFF228D40481A5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247266230, false, "9b991b2f-7bc2-481d-b049-e1c06a1b7362",
+			"@@@InProc at 70849569FACDE1AC2FCA678A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247270760, false, "ee260020-f336-4451-b55e-a0a27af69caf",
+			"@@@InProc at 70849569FACDE1AC2FCA678A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247271560, false, "ee7b9919-0faf-4d19-ad6a-76988c0f646f",
+			"@@@InProc at 6744EEBF741D2FBCDD4B98A3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247274130, false, "3795e864-1a1e-4ee1-9691-f639c9641fca",
+			"@@@InProc at 6744EEBF741D2FBCDD4B98A3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247274940, false, "93917147-3384-491c-af8a-2d5c40df596c",
+			"@@@InProc at 40ACB345531F73B272A5FC3E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247281180, false, "d152c75e-62f7-42d8-bcec-6932c8ea93c3",
+			"@@@InProc at 40ACB345531F73B272A5FC3E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247282310, false, "ec8d46fd-2c59-45ac-8e38-800e45dbfc97",
+			"@@@InProc at C6B11E602373B45166A8B2D4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247283400, false, "77804f70-a041-4137-9fc6-017b93a74fb5",
+			"@@@InProc at C6B11E602373B45166A8B2D4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247284380, false, "f1206fba-2cc3-46da-8324-0c4f937b4aab",
+			"@@@InProc at 5580AF564CB94AA36569BA3B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247292730, false, "55fc40dd-2364-4ff7-b9c2-81ff0090757d",
+			"@@@InProc at 6A470F3C64E19420630A2726", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247292810, false, "a90bbb48-1ec7-42d5-97b9-f8e51dbe11f8",
+			"@@@InProc at 5580AF564CB94AA36569BA3B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247294750, false, "6c56169e-b422-4f31-b5c1-cc620dae278c",
+			"@@@InProc at 6A470F3C64E19420630A2726", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247294840, false, "c17335b9-c7bf-42fb-9015-423a5171f580",
+			"@@@InProc at 03CAC1265D2870B8DF11F033", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247304960, false, "7767ca65-d596-4a1c-8eee-7d93fad7e49f",
+			"@@@InProc at F92FD3277E0B6023AFF32414", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247306230, false, "db5b3148-b547-47a6-b906-afc44f2355df",
+			"@@@InProc at 03CAC1265D2870B8DF11F033", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247306330, false, "8b8ede80-a317-46d6-a235-7d908d861e26",
+			"@@@InProc at F92FD3277E0B6023AFF32414", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247307920, false, "cf6a46ff-4789-430b-8a02-34e6baf8faae",
+			"@@@InProc at 142D22AF3BB5F90E36BBCC71", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247315670, false, "a10516e0-bd62-4a27-ad69-5cd4e2541356",
+			"@@@InProc at 142D22AF3BB5F90E36BBCC71", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247316830, false, "1b1a91e5-b934-406a-af36-9bef038e246b",
+			"@@@InProc at 90FFE7FDC914AE7A0E1A34CA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247319030, false, "44f51b83-9386-4e16-b617-4eece670b818",
+			"@@@InProc at 90FFE7FDC914AE7A0E1A34CA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247320270, false, "0de11967-fc1f-430f-8e77-481872a000f3",
+			"@@@InProc at B9F358A83EC5B4AD3E78FD4C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247324910, false, "bd8fea0b-d804-4100-9b88-609deee81153",
+			"@@@InProc at B9F358A83EC5B4AD3E78FD4C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247326510, false, "70eafeae-c9c0-4aff-99ea-87c6c5bdbb74",
+			"@@@InProc at 00D9A9BF8365FEEC9DB9DD07", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247331200, false, "3a0ad49b-4910-42f6-bf11-d67e261af90e",
+			"@@@InProc at 00D9A9BF8365FEEC9DB9DD07", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247332100, false, "9657cd2d-03d0-42dd-82df-6017526b1117",
+			"@@@InProc at 1C6989570AEDAE093B7F3497", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247336010, false, "770886c4-9873-4dab-bbbc-6b3343719419",
+			"@@@InProc at 1C6989570AEDAE093B7F3497", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247336830, false, "c9ba89a7-5bd8-4534-a51a-661841cac4d0",
+			"@@@InProc at 1D84DDE104969196FC69F17D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247340050, false, "68614091-41ab-4c81-a395-fdb5ca86655b",
+			"@@@InProc at 1D84DDE104969196FC69F17D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247341010, false, "d0050110-e206-47e0-a7e0-e1a96407def0",
+			"@@@InProc at 6C80219AE91A011A8D660CA5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247348380, false, "4ffa37e9-57c4-4d3f-bf44-f3f5674146f6",
+			"@@@InProc at 6C80219AE91A011A8D660CA5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247349750, false, "ff6edea7-88d1-49c2-a592-d0a4c810522f",
+			"@@@InProc at B430C6AB65C03B61F99CFBAD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247355390, false, "185fbdc4-ab68-482d-9af9-425ee7fc9c1b",
+			"@@@InProc at B430C6AB65C03B61F99CFBAD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247356690, false, "79394185-2fc6-49b7-9126-b37ea4e1bdc5",
+			"@@@InProc at EB7E8F289A03ED221EE8BDCD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247358200, false, "55e1a3fb-635a-4570-8288-1179d6ed57f2",
+			"@@@InProc at EB7E8F289A03ED221EE8BDCD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247359030, false, "e0c842b3-cdef-47f2-8c11-57a2afeb3d72",
+			"@@@InProc at E19773DEE70423A1D242EB64", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247365640, false, "d51399c6-7a46-4e8a-9f93-e7e08d39fe34",
+			"@@@InProc at E19773DEE70423A1D242EB64", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247366460, false, "5dedd0f1-8af2-4f41-9124-980802a0603b",
+			"@@@InProc at C41EB484C561C480C80BAFC7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247374960, false, "97cd41ba-c046-4e66-a29c-a013a428bc2a",
+			"@@@InProc at 254445F8DCE061040C7EDCE9", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247376040, false, "1b5e5318-0fef-4bb1-9d32-2d856765c175",
+			"@@@InProc at C41EB484C561C480C80BAFC7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247376150, false, "046a607a-2578-4119-8e17-dd746554b38f",
+			"@@@InProc at 254445F8DCE061040C7EDCE9", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247377750, false, "abee912b-4ba3-4ca9-bd1c-7e372ccc8551",
+			"@@@InProc at 94CFFCB0482229DE45A8E86C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247385790, false, "f380d715-3813-4c0d-9b4b-4707e83250d8",
+			"@@@InProc at 94CFFCB0482229DE45A8E86C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247386760, false, "147f970b-b0d6-47c4-842a-3dcf600a3a93",
+			"@@@InProc at 74EC4AD0D2DDEF3C2444B308", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247387190, false, "e0381448-fd22-4446-a82b-c63b4a473d6b",
+			"@@@InProc at 74EC4AD0D2DDEF3C2444B308", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247388690, false, "ee55de9c-d892-40b1-bf0f-f3b2ac4fd3ad",
+			"@@@InProc at FE97EFB798EA7F789AC1952D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247394590, false, "2e4d9ee1-3962-496c-aeb9-ed50cdeae2ee",
+			"@@@InProc at FE97EFB798EA7F789AC1952D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247395740, false, "fca9d8b1-6707-4d59-b3af-d24b83c2aaa9",
+			"@@@InProc at F8D8AD51C48BB7F979C9513F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247397140, false, "02a9329b-e188-45a1-a36e-97a39478476a",
+			"@@@InProc at F8D8AD51C48BB7F979C9513F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247397990, false, "ee768c4b-9dd4-4e05-affe-9dc90d68683e",
+			"@@@InProc at 922B9134119E292DC88335F2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247404070, false, "bde30eae-dcdb-4ca6-90f5-7f4605f83afb",
+			"@@@InProc at 922B9134119E292DC88335F2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247404880, false, "d18973fa-dccb-4c8a-8aa1-441193b08994",
+			"@@@InProc at 62A76FEEB15472CE7DC66600", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247408860, false, "320f1fcb-cb1f-4d47-acb8-13d6755a22d9",
+			"@@@InProc at 62A76FEEB15472CE7DC66600", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247409950, false, "04b25134-1fd2-40e5-bdfa-a1ba47f6d55a",
+			"@@@InProc at DBE8D276F8F846D4E07ACF51", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247412520, false, "d52aedc4-b834-41e2-85d2-6fca299fea1f",
+			"@@@InProc at DBE8D276F8F846D4E07ACF51", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247413400, false, "c3bd73ca-c59a-47d4-9a5f-9a40ab9b72df",
+			"@@@InProc at 22CF9E4FD2E30A123F45FFBF", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247422140, false, "66fb1c9f-5b2c-4fa3-91df-ae9c5582cd15",
+			"@@@InProc at 3DCF744A4F2E00EA7233B7FA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247423380, false, "ceefcd44-c77d-47b3-8d73-e6fe7f6abe2f",
+			"@@@InProc at 22CF9E4FD2E30A123F45FFBF", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247423510, false, "1b76ae30-dc3d-4ac2-a909-79cda3fcc0ee",
+			"@@@InProc at 3DCF744A4F2E00EA7233B7FA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247425060, false, "4fe10c48-275b-416e-ba4c-e3f036829c03",
+			"@@@InProc at A18E0CB63408CB37721C6B7E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247432800, false, "ac95fd3e-b974-449e-9e93-efdcec44f097",
+			"@@@InProc at 292852425E30B57B35215620", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247433800, false, "26d1b787-210a-470c-aa0c-4c8ecc5f5343",
+			"@@@InProc at A18E0CB63408CB37721C6B7E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247433890, false, "0c6349ce-250c-4869-aeb1-8d569051e159",
+			"@@@InProc at 292852425E30B57B35215620", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247435190, false, "95f608b9-779f-44e4-9d5f-6e50d70767a0",
+			"@@@InProc at 61F4B93D1BE5D843B1E47282", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247442250, false, "202a1551-2fcb-4e6a-a1ff-41d0c633393d",
+			"@@@InProc at DC29B183C8CE076AFDF8A5C6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247443160, false, "44d2863a-5962-4b81-b4c2-bafa3c2ebe39",
+			"@@@InProc at 61F4B93D1BE5D843B1E47282", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247443250, false, "58178995-58aa-4343-8322-8ce9af30fa3c",
+			"@@@InProc at DC29B183C8CE076AFDF8A5C6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247444740, false, "95d6d98a-7e33-48f7-be5b-5deeccdcffa3",
+			"@@@InProc at 7165D04FC37B6DC6713797D5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247451720, false, "9f4896f9-d639-49a9-8b29-cf6dbe7ce672",
+			"@@@InProc at 7165D04FC37B6DC6713797D5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247452610, false, "c1a95640-bdcc-4ac6-ad36-ffcd84fc66d8",
+			"@@@InProc at 8ED5FC284836B4F961102400", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247482040, false, "7702c489-dcb1-4379-80b6-047a704a958c",
+			"@@@InProc at 8ED5FC284836B4F961102400", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247483180, false, "c60784f8-1c34-4789-95dd-895fc4a7398c",
+			"@@@InProc at D5D349A040E42DB39D2E5731", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247488380, false, "18ced6e8-56fb-48e5-84b7-77d285d24bd1",
+			"@@@InProc at D5D349A040E42DB39D2E5731", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247489200, false, "6be8ec58-e453-4aff-a4bd-3f434b3a58a7",
+			"@@@InProc at E3E9D2B4E82E651C9B8EF152", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247492210, false, "5b472d4b-0df8-4afb-bb89-43b47f785a5e",
+			"@@@InProc at E3E9D2B4E82E651C9B8EF152", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247493410, false, "35153fcd-fadc-4dca-934b-ad6d7b06776d",
+			"@@@InProc at 5ADE7708B66F14380501293E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247499010, false, "73ec0e71-5455-445f-881e-ebb759ff3e3b",
+			"@@@InProc at 5ADE7708B66F14380501293E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247500010, false, "c036279a-7f84-4881-9cf4-85bd483f24d6",
+			"@@@InProc at 1DA0E88A61212D6FEDD5C5AE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247502690, false, "1dc49931-cc26-4910-ab8b-6992aa7d28e1",
+			"@@@InProc at 1DA0E88A61212D6FEDD5C5AE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247503890, false, "eac2251b-55f6-4235-910f-9cc896066560",
+			"@@@InProc at 12A8BE4E2EEA893B54B16D55", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247508040, false, "b8ff4753-e348-4fc3-a22d-68a4b9b39e77",
+			"@@@InProc at 12A8BE4E2EEA893B54B16D55", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247509260, false, "e0013108-3254-4292-9fbf-19bb7e4c0baa",
+			"@@@InProc at E3879A66F6202DFB6AFA872A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247514760, false, "1def3251-f3da-4ca7-b404-6d7b35c47740",
+			"@@@InProc at E3879A66F6202DFB6AFA872A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247515580, false, "bccbcc77-ed3a-4a02-aa22-507be642e196",
+			"@@@InProc at EC6E46451AE037AD16A4D108", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247519770, false, "ade17c64-23f7-4878-8f60-1a0bf6bb90a7",
+			"@@@InProc at EC6E46451AE037AD16A4D108", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247521640, false, "da6e7ba4-127b-4082-8856-666b1173c980",
+			"@@@InProc at 5F2BCB31A49AD4DB4A4DB832", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247525770, false, "80180ae9-99ce-42dc-9fe1-3e3e24348273",
+			"@@@InProc at 5F2BCB31A49AD4DB4A4DB832", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247526840, false, "59e4a1f5-fc9e-4a1b-880f-8b7c44cc96ef",
+			"@@@InProc at 8B96744F93BAC95F5A1289F2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247530430, false, "32501783-28cd-4daa-8af6-d29b680aefa3",
+			"@@@InProc at 8B96744F93BAC95F5A1289F2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247531240, false, "cab0a76d-b445-4682-89c3-2092d2c17df2",
+			"@@@InProc at 397CED1D56B804479923F434", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247535000, false, "ec71a815-d03d-4a8f-bdfa-55071281da98",
+			"@@@InProc at 397CED1D56B804479923F434", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247535980, false, "0608b817-a5da-47f4-adcf-a62daca8dfd4",
+			"@@@InProc at 1F2A6A65E119972CD8A083D8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247543100, false, "5ca8aae5-0fa4-41d5-bcaa-16bbcbe686a1",
+			"@@@InProc at AD8183251235C0E8C3621AA1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247544010, false, "cfa4b4d5-4bfa-4433-81ec-09abb14c1e28",
+			"@@@InProc at 1F2A6A65E119972CD8A083D8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247544120, false, "7de9a4b4-ac06-4f5d-9062-427ea6ddbdf0",
+			"@@@InProc at AD8183251235C0E8C3621AA1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247545300, false, "9a09c11f-89c9-4af5-ae9c-950bd7e7d592",
+			"@@@InProc at 94E9CD8D4DC41CD260FB5248", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247550700, false, "03d71d7c-c489-4b7e-a981-1e02f7541155",
+			"@@@InProc at 4978535E3309D7F80C22306B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247550830, false, "e0ee7897-d88d-425b-a90b-baf5cd108205",
+			"@@@InProc at 94E9CD8D4DC41CD260FB5248", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247551870, false, "04b4b279-bdae-4264-8241-c7d41f791912",
+			"@@@InProc at 4978535E3309D7F80C22306B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247551930, false, "d4fe90f5-2feb-43d2-8f23-ff1e854e4bd5",
+			"@@@InProc at C487FA3AEA2C5F48060F657F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247558050, false, "b12d9016-05a0-4455-9c7e-3fe7ca9fdbd1",
+			"@@@InProc at A615EDC32F1BC4FA7F307EC7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247558240, false, "2c8bf5c6-1b49-4cc0-b4fa-eedef4fd6270",
+			"@@@InProc at C487FA3AEA2C5F48060F657F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247559410, false, "47262884-10d7-4964-b248-d8f0cdc56c01",
+			"@@@InProc at A615EDC32F1BC4FA7F307EC7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247559540, false, "0da1f023-7280-488d-b0f8-a664c7d0db9d",
+			"@@@InProc at 574E786DFA7DC35C104FFD61", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247565870, false, "d392c901-5f1a-48b0-991f-028202aa73d1",
+			"@@@InProc at D127B38350D775B8A3496871", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247566730, false, "ada0c426-033f-4f4f-bf5b-03b08c86717b",
+			"@@@InProc at 574E786DFA7DC35C104FFD61", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247566810, false, "f6a22504-2dfd-42fe-a9b1-d14499e263c2",
+			"@@@InProc at D127B38350D775B8A3496871", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247567860, false, "52f90a21-9dbc-4a1c-b37a-6af3daea8ec1",
+			"@@@InProc at 0F6139F744EC10343EB159C0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247573020, false, "02718fd7-e854-4dfd-abf2-cbc513030cf2",
+			"@@@InProc at 0F6139F744EC10343EB159C0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247573690, false, "07f40030-6c25-485c-89e9-94c2e955574f",
+			"@@@InProc at 6733CA0CAF7E189FE2B060C3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247573780, false, "8c0b5a2a-8384-4218-b629-714ee310fefe",
+			"@@@InProc at 6733CA0CAF7E189FE2B060C3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247574700, false, "ceb97d5c-9474-4f3d-831f-885085de3351",
+			"@@@InProc at 4E6605313710F7ED16D32AE0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247579100, false, "7affb4e3-4f77-491f-a9ee-449a8272db7d",
+			"@@@InProc at 4E6605313710F7ED16D32AE0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247579760, false, "14c34d1b-bcf5-487c-abcd-7e358506d035",
+			"@@@InProc at 854F2BC73603D6654F98A93E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247580400, false, "b8b0376e-081d-410f-9b07-68c3be316f3d",
+			"@@@InProc at 854F2BC73603D6654F98A93E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247581030, false, "ec0c6fea-f11b-456a-8046-14a95b3cab6f",
+			"@@@InProc at EFF1B8DAB7A8313FB8DCDB0D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247586030, false, "221f48c5-a4ea-477b-a183-35a2a1ab6d8c",
+			"@@@InProc at EFF1B8DAB7A8313FB8DCDB0D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247587070, false, "9b3af9a9-7165-4c3a-a1d3-3f83d2bc29c8",
+			"@@@InProc at C2F4F11B6DB1BC449056C841", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247588610, false, "4bb3ad76-f762-429f-8af5-a8f753566297",
+			"@@@InProc at C2F4F11B6DB1BC449056C841", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247589710, false, "622dd19d-c7fd-434d-be47-cd1082c84834",
+			"@@@InProc at 761A357998D7D2F1FFFF14D0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247593260, false, "6faffc37-288a-45b6-bf02-9f95bc1dbb10",
+			"@@@InProc at 761A357998D7D2F1FFFF14D0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247593930, false, "0a26d148-5f68-43b4-98f5-0de80feefe3a",
+			"@@@InProc at 19E28389F303DF2A10958F50", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247596740, false, "95e47449-4f99-4095-a4af-84194df013e9",
+			"@@@InProc at 19E28389F303DF2A10958F50", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247597320, false, "8e7804e8-652b-4fa6-880e-dfab14740fc7",
+			"@@@InProc at 878EFE206412774F6F769417", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247599500, false, "1693b552-542c-4165-b6a4-4bbb65a8da9a",
+			"@@@InProc at 878EFE206412774F6F769417", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247600040, false, "a0307755-105c-4275-97c8-d55e88274fae",
+			"@@@InProc at C90BC5127A5C694E51A65A13", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247603080, false, "ca61bc48-3f89-40fe-90ed-621074d247e9",
+			"@@@InProc at C90BC5127A5C694E51A65A13", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247603620, false, "12e93e13-7965-46e0-af20-3ceae152bd28",
+			"@@@InProc at 0F85B2A4C96E8AF8094B9D96", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247605240, false, "2fb66a83-8ae4-4e9c-a306-ad813e20f21a",
+			"@@@InProc at 0F85B2A4C96E8AF8094B9D96", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247605770, false, "7278d430-a03b-4352-88ad-578dbefe5e38",
+			"@@@InProc at 48C17D9103FCE56C2CAFC5CE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247608850, false, "f8ff4d94-4f06-4eff-a40b-998053c2e8b4",
+			"@@@InProc at 48C17D9103FCE56C2CAFC5CE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247609380, false, "837ed5dc-a7ad-443b-8bf3-0f29ee554aca",
+			"@@@InProc at 31F45BABA302214A857DD1D5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247610870, false, "20ac6b54-b180-4e1d-baec-d93938aced51",
+			"@@@InProc at 31F45BABA302214A857DD1D5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247611400, false, "b497b470-0564-403e-a635-42bfc311f738",
+			"@@@InProc at 330C858C52585E4C46839832", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247614580, false, "ccc3b9e0-bed8-49d3-bcd3-2d433302de4b",
+			"@@@InProc at 330C858C52585E4C46839832", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247615100, false, "bda25050-1a17-407a-973d-8712a5924906",
+			"@@@InProc at FB18437BC41D3C6FACFE2D04", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247616600, false, "52aef3c0-e074-4b45-9a95-ee33abdb0daa",
+			"@@@InProc at FB18437BC41D3C6FACFE2D04", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247617280, false, "ca7bbb65-b852-4a50-b8e8-9b84c6f446c7",
+			"@@@InProc at 017184680E9FBAC7AD976274", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247620460, false, "2eadd75a-630e-4b2e-a042-3d8b38ec9f01",
+			"@@@InProc at 017184680E9FBAC7AD976274", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247621000, false, "94884b35-94f8-4371-85f4-897a177122dc",
+			"@@@InProc at 8DE333B5008EFA57126C1F7D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247623250, false, "adb36fd1-99c8-4bd6-9118-ec2c492d8efb",
+			"@@@InProc at 8DE333B5008EFA57126C1F7D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247623780, false, "f530d3fc-8792-40ac-a4a6-d21ca10baab7",
+			"@@@InProc at 4BF9CE8FD440E5DE48E551C7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247626960, false, "772cdade-aefd-432e-9939-4ebaa926b82b",
+			"@@@InProc at 4BF9CE8FD440E5DE48E551C7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247627550, false, "34628b90-94aa-45f6-97fe-639479a2c80d",
+			"@@@InProc at 7329B513E831AFDBF4399134", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247629130, false, "c77ca343-6c6c-4ccd-bfa0-c8c406e9f06a",
+			"@@@InProc at 7329B513E831AFDBF4399134", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247629670, false, "3593f53a-e871-4ed9-a04e-51ae639ff682",
+			"@@@InProc at A52E0C0747DCB824D0DDB2C4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247632620, false, "e129d5f8-c21d-4a58-9f8d-3941480a012b",
+			"@@@InProc at A52E0C0747DCB824D0DDB2C4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247633140, false, "31240507-fb1d-40e6-be27-76c8086d3de8",
+			"@@@InProc at 8A90C287584319C0C8296CA7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247635650, false, "a487841d-2844-40ed-9290-2d1c78b4411e",
+			"@@@InProc at 8A90C287584319C0C8296CA7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247636260, false, "0286b0b9-80ce-488b-8006-478d3e76c2da",
+			"@@@InProc at 98EE243860BF8C8B752A87EA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247640250, false, "24359901-2358-480d-861b-61678c57d352",
+			"@@@InProc at 98EE243860BF8C8B752A87EA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247640860, false, "c68b516d-6c31-4303-8b91-a19ab7867794",
+			"@@@InProc at 7972B4345A2C68FD8BAC55B2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247641910, false, "b46cdc7c-9448-4191-8d2e-721241f1dff8",
+			"@@@InProc at 7972B4345A2C68FD8BAC55B2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247642440, false, "df3220c9-bc90-4dcb-8e46-3a616f95d6fb",
+			"@@@InProc at AD6187E51FD164C15E13BC38", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247646520, false, "ad789b50-8d8b-43db-8ae6-cdaad826f8fa",
+			"@@@InProc at AD6187E51FD164C15E13BC38", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247647380, false, "beb420b4-7dee-45b2-9018-6f362a51c091",
+			"@@@InProc at 1FEDFCD9DFEE23BF70465944", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247648390, false, "caa8347a-235a-47ad-a3e5-7a61e3e42e00",
+			"@@@InProc at 1FEDFCD9DFEE23BF70465944", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247648880, false, "ea55e14a-d93f-4a25-901d-1fe28dfafa47",
+			"@@@InProc at A2B084BE419CB9A5E6CB8623", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247653050, false, "3e409b65-1fce-42b7-b8aa-a961b5b7d4b8",
+			"@@@InProc at A2B084BE419CB9A5E6CB8623", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247653980, false, "f7b2ac32-40d5-44b6-9278-273eceeffaac",
+			"@@@InProc at 3511EB3D5DF771E61BEB5E5A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247655010, false, "ad4d7e19-7949-492f-ac83-a3e30a5a25f7",
+			"@@@InProc at 3511EB3D5DF771E61BEB5E5A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247655660, false, "575b65c1-a1ef-467d-9e96-d33ac742ae62",
+			"@@@InProc at 28B985604476FCE71577B6E4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247659620, false, "f8f0d082-9ccc-49a4-8f97-a9a088cea7a5",
+			"@@@InProc at 28B985604476FCE71577B6E4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247660160, false, "18c21927-bb15-4308-a43f-e0f584df40a4",
+			"@@@InProc at 459578249680A200DBB53C40", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247662760, false, "9582e085-630c-4bc3-b1ef-af73a120fe4b",
+			"@@@InProc at 459578249680A200DBB53C40", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247663520, false, "046e1ef3-1833-4a2d-b7f4-f35ede3d4134",
+			"@@@InProc at 4B2F8DA81D6F06DFDA522432", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247665430, false, "728c4b61-4f07-4f11-8f52-43532bd4686f",
+			"@@@InProc at 4B2F8DA81D6F06DFDA522432", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247665980, false, "5f1e2991-c7d3-4386-8837-0ca853af8849",
+			"@@@InProc at B3FEF17F68E68F99236E0EE4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247670550, false, "725696db-47b1-474a-9365-fffc73135bdf",
+			"@@@InProc at B3FEF17F68E68F99236E0EE4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247671100, false, "55749a68-c652-4c8a-a7d9-de016c76d198",
+			"@@@InProc at 5B647B6D8048BAB4C24B0AD3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247671230, false, "36b94571-9550-4503-b864-10dbc60523a3",
+			"@@@InProc at 5B647B6D8048BAB4C24B0AD3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247672100, false, "146875a3-faa0-48b2-9588-dc1b1b1dee9c",
+			"@@@InProc at AFF4700A9640BB7F26BF0106", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247677820, false, "e68c510f-2bc7-429f-b82e-671974c69035",
+			"@@@InProc at 9F3F0D5A67BBABBF079ACAB4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247677970, false, "25f42880-ab93-49a6-a2f1-c4c395a441da",
+			"@@@InProc at AFF4700A9640BB7F26BF0106", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247679080, false, "63773a10-a0bf-40b1-b25a-9582f6b0d419",
+			"@@@InProc at 9F3F0D5A67BBABBF079ACAB4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247679280, false, "980c7f05-a7ca-48f1-af95-c3d5fdcc5557",
+			"@@@InProc at 451667174392108F0BBD9214", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247684340, false, "4ba65eed-d0e1-45db-851b-8375ff096a51",
+			"@@@InProc at 451667174392108F0BBD9214", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247684860, false, "ee1435ee-6b22-4636-8d55-85ab2b771d81",
+			"@@@InProc at 16A15B83D2595A00A3B840D8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247685410, false, "a05dbec6-f882-49e6-9b86-8ff8a1b556ce",
+			"@@@InProc at 16A15B83D2595A00A3B840D8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247685940, false, "900a1746-ea58-48ca-b2d1-c25de4b2e416",
+			"@@@InProc at 8D9E45FAB2186250B1D8FF00", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247690120, false, "528214cb-e2b3-4fdc-8d39-a9f969a384d8",
+			"@@@InProc at 8D9E45FAB2186250B1D8FF00", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247690660, false, "ad1179ca-e49b-42b3-b4c4-3c10c7af2425",
+			"@@@InProc at 2A97B789EFDCD2C3C9F0C618", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247691160, false, "5d163f90-eab9-42d9-a022-0f2c729848be",
+			"@@@InProc at 2A97B789EFDCD2C3C9F0C618", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247691680, false, "5c4a226a-0343-4f8d-a3e6-c232420833a7",
+			"@@@InProc at E9AB45673FA9658656838F8B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247696850, false, "0c1131eb-9081-4de2-8d62-275c513b9080",
+			"@@@InProc at 905A2B47FA5253B4FF41DEE1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247697150, false, "a3a401f7-cf8c-4f50-9c8b-eddc5a662715",
+			"@@@InProc at E9AB45673FA9658656838F8B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247698050, false, "50662716-429b-48c6-8b55-6f06af69c34e",
+			"@@@InProc at 905A2B47FA5253B4FF41DEE1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247698220, false, "4d0b8451-7f8a-4793-b93b-870e5d7b95e7",
+			"@@@InProc at 61486AD1955DE4BAA5C28E97", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247703220, false, "420de854-5501-4d0c-88a9-ffdb672bcf7d",
+			"@@@InProc at 61486AD1955DE4BAA5C28E97", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247703810, false, "903d89ef-b1ad-47cc-bb46-d4896c58cc46",
+			"@@@InProc at D69075316F3102FAB4E9BAF6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247704400, false, "1dd84f7c-89bb-4472-9ef5-4fa1d1a4e8e0",
+			"@@@InProc at D69075316F3102FAB4E9BAF6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247704920, false, "c64d2246-3a2e-42e5-b9d2-a2024d345c8e",
+			"@@@InProc at 15F739CD2B7E27EEF907D997", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247709370, false, "f6e19ada-9694-4c23-bcf8-70d41007e9f4",
+			"@@@InProc at 15F739CD2B7E27EEF907D997", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247710050, false, "a1b87578-5a78-4843-b3f1-aa86aced93b3",
+			"@@@InProc at 1FCA37EC2164BC9C56A64ADE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247710210, false, "8481498a-f0a2-42b8-b2e6-e4534200b98a",
+			"@@@InProc at 1FCA37EC2164BC9C56A64ADE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247711070, false, "f7b995a2-ffae-44cf-96aa-abfaa0173195",
+			"@@@InProc at FB7DB914CC03A8AB13DC0C68", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247716920, false, "7c3f4ecc-b2e8-4b0b-8eff-9d78fd503e2e",
+			"@@@InProc at 1B9550BC861DF4819D5E589A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247717000, false, "f115022b-4c43-498b-9c24-0d6eb1bd984c",
+			"@@@InProc at FB7DB914CC03A8AB13DC0C68", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247718100, false, "0e28bb59-cc21-49bc-8e90-73cb36f2d3f3",
+			"@@@InProc at 1B9550BC861DF4819D5E589A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247718170, false, "10680949-21a5-40cc-811b-999aed5a0dfb",
+			"@@@InProc at 3BEA3A3373E84643E4C92605", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247723650, false, "bd27635d-ba05-4829-8c9c-38a272e4111f",
+			"@@@InProc at 3BEA3A3373E84643E4C92605", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247724250, false, "1ce4f8e2-4cdd-4a3f-bd11-b3171c99019b",
+			"@@@InProc at A8D91E8148F5F1B7F816D039", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247724980, false, "810bce20-4b18-43d1-8cb5-c12d8819e403",
+			"@@@InProc at A8D91E8148F5F1B7F816D039", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247725680, false, "908d0f4b-787a-4829-aaaf-c00adf9fa0a9",
+			"@@@InProc at 9108365FF4A4FC9DBE83B1BD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247729540, false, "202d13d2-008d-40e9-a647-30f40640e424",
+			"@@@InProc at 9108365FF4A4FC9DBE83B1BD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247730190, false, "f01fca5e-e705-43cd-9224-2f11df05a952",
+			"@@@InProc at 065F49B09954F5A511C36511", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247731930, false, "452b0510-84ed-49f5-9d69-51b3faf22bb3",
+			"@@@InProc at 065F49B09954F5A511C36511", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247732630, false, "71b882f6-08a9-4915-beea-583b2d14b212",
+			"@@@InProc at 45C181B7DD45E6FBA0A5E689", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247735500, false, "edbc16b5-6204-4197-8c64-6db352559cc3",
+			"@@@InProc at 45C181B7DD45E6FBA0A5E689", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247736070, false, "5bf01550-7d43-441b-b37b-bec1fa9e75a1",
+			"@@@InProc at B292F5911D07E2C15CEB7629", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247739550, false, "9820315a-6432-416f-a287-7a46fd555fa4",
+			"@@@InProc at B292F5911D07E2C15CEB7629", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247740410, false, "00d2bbbe-d216-4973-b2be-be8d3de92560",
+			"@@@InProc at E4803CF7DB8AA359F4DDD3E2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247741420, false, "9d1fc2b7-5fd8-40d5-b699-7cfe21c2a0a3",
+			"@@@InProc at E4803CF7DB8AA359F4DDD3E2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247741950, false, "5b1064fa-5193-43ec-b99f-f6d411e9d133",
+			"@@@InProc at A42E81222D71481480138BA6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247746680, false, "60491333-c12e-4168-b026-9aa95860c69c",
+			"@@@InProc at A42E81222D71481480138BA6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247747460, false, "8610017d-326d-4a88-b1bd-4852a1568f43",
+			"@@@InProc at 33FF16FE65D4F2B249B8E1A3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247748880, false, "b2af7521-7857-4b25-8ada-38b6709c497b",
+			"@@@InProc at 33FF16FE65D4F2B249B8E1A3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247749970, false, "63517e0e-6559-430e-a89c-ec1cf02fc55d",
+			"@@@InProc at 36FC84F6D5D1FE327BD5DACF", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247753780, false, "43be7bd2-24ca-4fbb-b6bc-790f308230ec",
+			"@@@InProc at 36FC84F6D5D1FE327BD5DACF", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247754570, false, "2d0dba4e-05db-406b-9a63-bebf63b7a02c",
+			"@@@InProc at B0ACCEB0DBFC87D61E07B419", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247755690, false, "4216d3fa-f07a-4d0a-8040-0b7e5f8df396",
+			"@@@InProc at B0ACCEB0DBFC87D61E07B419", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247756220, false, "5668731f-0269-414f-afda-2658b1acf01a",
+			"@@@InProc at 99596DBCDF83966EF2156FBF", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247760130, false, "1ce1a45e-dd36-44f7-8687-be548ddac647",
+			"@@@InProc at 99596DBCDF83966EF2156FBF", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247760660, false, "eabaead9-19d9-4bbb-8976-ed6a591c05e1",
+			"@@@InProc at 93896104457D82F99C2021D3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247761300, false, "1d857452-e11b-4678-b66c-401bc77ec841",
+			"@@@InProc at 93896104457D82F99C2021D3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247761830, false, "8889d8d8-240d-4a32-844e-6120944312c0",
+			"@@@InProc at CD0F8024730E34FBEEFD663D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247766220, false, "4ecc6f4d-cf1c-484a-89a0-648b80f40d44",
+			"@@@InProc at CD0F8024730E34FBEEFD663D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247767010, false, "97902583-ddd7-421b-9985-05f5756fe005",
+			"@@@InProc at 47A6127B02B3052D5C607EAE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247769240, false, "bd119b5b-bd2d-47d4-8f3b-923757fae000",
+			"@@@InProc at 47A6127B02B3052D5C607EAE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247770010, false, "33062589-5b2f-4464-89e4-1709b0b82bde",
+			"@@@InProc at D7A474892838BF2E73A4F5E8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247773100, false, "06494e1b-8b6b-490d-93f9-8a73141709fc",
+			"@@@InProc at D7A474892838BF2E73A4F5E8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247773620, false, "3216892b-1c80-4d57-9849-e6e63177c332",
+			"@@@InProc at 74730F827D9ED88AC1AEF470", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247775280, false, "8c5829c3-2730-457c-8bc2-cce249962fdb",
+			"@@@InProc at 74730F827D9ED88AC1AEF470", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247775840, false, "5db914ca-0bf3-40ba-bc43-082ec9c54b2d",
+			"@@@InProc at 5EE43955441101E449F070FA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247779580, false, "6995c648-f3f5-4e17-8b81-28f846e5cc30",
+			"@@@InProc at 5EE43955441101E449F070FA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247780320, false, "e6d612d6-3749-4623-982f-c75afd0f775d",
+			"@@@InProc at 328E2A4CC3BDAA7EAB452089", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247781360, false, "6470a72f-d15d-4270-9c28-cdf6f35eb2d3",
+			"@@@InProc at 328E2A4CC3BDAA7EAB452089", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247781890, false, "95a7016d-94fe-4399-87f1-3841526c9d86",
+			"@@@InProc at D39E585E161CB9DD45C7903C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247786380, false, "ed5569c9-cd73-453b-8dd4-c5dd41425951",
+			"@@@InProc at D39E585E161CB9DD45C7903C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247786910, false, "35bb1a1f-bf53-4282-ba7c-9e4d08074f86",
+			"@@@InProc at B67C96DEA19FFABFC614CC55", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247787500, false, "aec8d362-2389-411b-a77f-792ef2677472",
+			"@@@InProc at B67C96DEA19FFABFC614CC55", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247788120, false, "a4ebbdd9-19bd-4668-9646-8456a4c9aff2",
+			"@@@InProc at 863B22EAA60B588973E58BAC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247792830, false, "36a6ddef-9b5d-427a-8af9-e8fb3c91fa5d",
+			"@@@InProc at 863B22EAA60B588973E58BAC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247813720, false, "5de0e04f-a6b4-4936-a161-f0fa6307b22f",
+			"@@@InProc at EE87E7FDEB8FF8C021D5C1A5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247815350, false, "adb42dd8-2dc2-45e9-9fd6-2cd3cbc37259",
+			"@@@InProc at EE87E7FDEB8FF8C021D5C1A5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247815880, false, "6001a7fc-6cc4-49ce-9e24-499bd556edd8",
+			"@@@InProc at 98A178228A5550CCA07DC5B8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247819700, false, "d84443da-ac5f-4c85-a149-a66e5df894c3",
+			"@@@InProc at 98A178228A5550CCA07DC5B8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247820370, false, "dc313d5b-f5d2-4544-a794-1c5297bdc306",
+			"@@@InProc at 336FBDA480CF9E76E42C31E5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247821350, false, "05aa24b2-3b4e-49db-86f0-36b85e4e22b8",
+			"@@@InProc at 336FBDA480CF9E76E42C31E5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247821870, false, "0394572b-b60e-49f8-ae83-37d4264a5a27",
+			"@@@InProc at 922197E26DE46A647E2256C8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247825500, false, "ce495898-afba-4534-97ec-348c0c6ec78e",
+			"@@@InProc at 922197E26DE46A647E2256C8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247826170, false, "4979e9cb-04e0-413e-81e0-2b848b61dbc0",
+			"@@@InProc at 22555DF332E2E81F93317C38", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247828720, false, "39af404e-94aa-4e96-bd86-18ecf36b9be4",
+			"@@@InProc at 22555DF332E2E81F93317C38", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247829600, false, "cbaa77ec-9655-4ffb-8a74-425deed4687a",
+			"@@@InProc at 212E707015BDF0C1558CA008", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247832000, false, "c49b2730-ac93-4b53-959b-95f254808f66",
+			"@@@InProc at 212E707015BDF0C1558CA008", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247832600, false, "2b745767-e992-451f-97ad-5fb0a4b60b2f",
+			"@@@InProc at CF81807D209BFC6140D753C2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247836290, false, "61b3377c-c147-42d7-bf0d-9fa8ad62b463",
+			"@@@InProc at CF81807D209BFC6140D753C2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247836820, false, "dece37fa-dccc-48f7-a008-60e26f8bab79",
+			"@@@InProc at FEDAC07818F1450C96B5B4DD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247838380, false, "3057300b-e7ac-44bd-9a96-3003b6c404f6",
+			"@@@InProc at FEDAC07818F1450C96B5B4DD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247839050, false, "91acf3c2-3c0c-4651-9d5f-42c24b8e3134",
+			"@@@InProc at D30BE28ACA10D3D68F959C23", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247841950, false, "7e5682a9-3215-4343-8ef0-8c573600d8db",
+			"@@@InProc at D30BE28ACA10D3D68F959C23", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247842460, false, "af8f826d-0831-4847-ba3b-92ae4b5611d7",
+			"@@@InProc at 9B076F77342F570E6E2024AD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247844400, false, "12f41837-0f0b-4a56-a4a0-98fcc8f4fcac",
+			"@@@InProc at 9B076F77342F570E6E2024AD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247844970, false, "9b107092-db25-4456-a4d2-8bc5dbc7bd35",
+			"@@@InProc at 3A7C6ED5C3A0200EECE74B14", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247848750, false, "27828824-3359-4112-83d3-5cd6c0239fc9",
+			"@@@InProc at 3A7C6ED5C3A0200EECE74B14", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247849330, false, "54d5583c-f290-477f-978f-0a2fab5c27d6",
+			"@@@InProc at CD04D6CAA159C5CBB43B333B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247851010, false, "c922590d-4cda-4f19-973c-0a003eb8692d",
+			"@@@InProc at CD04D6CAA159C5CBB43B333B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247851850, false, "ded2307f-7cd6-4ecb-bce4-696243dfeeb2",
+			"@@@InProc at FDF4237AC6D27C8DB16838EC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247859250, false, "01edfbca-1819-46d6-9a73-a2c62cda3c6a",
+			"@@@InProc at FDF4237AC6D27C8DB16838EC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247860130, false, "fcf889e4-ffaa-4058-94b4-220ad6dfcb21",
+			"@@@InProc at 98E5968FC3AAEC38C12B4F30", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247863750, false, "9c2a472e-7275-43ac-ab44-1047b803c499",
+			"@@@InProc at 98E5968FC3AAEC38C12B4F30", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247864350, false, "d3c4c933-fd18-4806-8212-21dfde6e3907",
+			"@@@InProc at 276E195CF7CE4DB7BC190199", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247869620, false, "ba829f5e-7d07-4688-b3cc-f206d244ffac",
+			"@@@InProc at 276E195CF7CE4DB7BC190199", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247870470, false, "ec7ce00d-9fa5-4a73-859d-ddaa3d3a9d5b",
+			"@@@InProc at 5E6B6984AF8A3A5C0AE40D7D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247871320, false, "89caf4f2-0d5f-400f-a033-051e241d5d10",
+			"@@@InProc at 5E6B6984AF8A3A5C0AE40D7D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247872190, false, "e6186815-004b-4766-bae3-7d07dd9c0cd5",
+			"@@@InProc at BE15313E81627A9659B89605", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247877020, false, "8af88267-3d43-4812-ad98-6a22a02c135e",
+			"@@@InProc at BE15313E81627A9659B89605", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247877800, false, "a4866fe4-c3cd-4b29-9630-c22289bc8e28",
+			"@@@InProc at B5D14CD5E0C7C54BAB5A5E43", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247878920, false, "9bb29212-54c4-43a3-a11e-770e57891499",
+			"@@@InProc at B5D14CD5E0C7C54BAB5A5E43", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247879520, false, "614f0e8a-127c-429a-bf1c-46be2dee15f0",
+			"@@@InProc at 76A21F009CF754A8FBFBC4C4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247883730, false, "7f1d24f1-667f-4ac5-8514-b1b3543565d1",
+			"@@@InProc at 76A21F009CF754A8FBFBC4C4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247884340, false, "b9211418-dc50-4888-908f-7420f02abb6a",
+			"@@@InProc at 1B088AED5ECB713A4CCF0414", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247884960, false, "dc375865-8f4a-4a4e-b322-ed0c1948d4bb",
+			"@@@InProc at 1B088AED5ECB713A4CCF0414", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247885560, false, "f6ece070-ae88-452d-9998-64c722f4e73d",
+			"@@@InProc at 2BE9EC18118D5BC1B864932C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247889920, false, "99025f9e-7975-4095-8d89-9bb9abd38dfd",
+			"@@@InProc at 2BE9EC18118D5BC1B864932C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247890700, false, "471e59c2-c6cf-4354-ba42-1e767c32574f",
+			"@@@InProc at DCCAB7BC926F859FBBE56265", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247891860, false, "8a62f8fc-2f66-492f-9d41-9c0e4be0238e",
+			"@@@InProc at DCCAB7BC926F859FBBE56265", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247892460, false, "2f34a39c-7c9c-47cf-8698-943a32f4bd3e",
+			"@@@InProc at 82D91F91F68DEA57EB87C48A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247897940, false, "a4fef4af-75e0-4bd0-8e6e-b95a71b9e934",
+			"@@@InProc at 82D91F91F68DEA57EB87C48A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247898870, false, "94483cba-430d-45a2-b53a-50a966c0058c",
+			"@@@InProc at 00C303F2FB08EDCD044F7E50", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247899700, false, "bbf800c8-9541-4c7f-9e67-169fce1bf210",
+			"@@@InProc at 00C303F2FB08EDCD044F7E50", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247900590, false, "1c512877-b1a7-4827-922c-ce3fe2ada8b7",
+			"@@@InProc at 6BD3FF87B679D41484CF8F68", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247905080, false, "d6f4a814-9016-408f-a105-8d91eec4cb43",
+			"@@@InProc at 6BD3FF87B679D41484CF8F68", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247905900, false, "943e101f-6793-4763-897b-880e48966768",
+			"@@@InProc at BE26706F51849727CDE90364", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247906980, false, "08ee3143-dc62-4bc9-a6ba-075a4101ce17",
+			"@@@InProc at BE26706F51849727CDE90364", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247907590, false, "de94a911-cdaf-4f24-9db2-e6174b951165",
+			"@@@InProc at 297F21A16FB4C2F2528234C0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247911930, false, "2b17887d-6980-442d-b975-4cce1c9df711",
+			"@@@InProc at 297F21A16FB4C2F2528234C0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247912800, false, "8adff041-bc18-48db-9d8e-9d9ab1579f28",
+			"@@@InProc at B4FD5CF1617D115593E2B81B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247913970, false, "2ab13628-5a31-4f35-b8ee-86cb7be57f7e",
+			"@@@InProc at B4FD5CF1617D115593E2B81B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247914570, false, "c18a80fb-853c-4144-9c1f-96b8de2b1968",
+			"@@@InProc at 55E719558CC09F242506573D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247918980, false, "5a91c15d-6dc7-4603-b32e-62212048b06b",
+			"@@@InProc at 55E719558CC09F242506573D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247919630, false, "21a7568c-2bd1-4591-82e9-61be36ee2ddd",
+			"@@@InProc at 62D6798531AC72FB2B2A6BA4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247920290, false, "a16c4401-9a76-48d7-a801-c27c5c95be46",
+			"@@@InProc at 62D6798531AC72FB2B2A6BA4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247920880, false, "24e8e5c7-cc3d-4319-a51d-08aef4470e91",
+			"@@@InProc at 8C04E430714DC3DE9353B00B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247925380, false, "fc0f5e8d-8847-4b8c-8df7-e2e23b3b140e",
+			"@@@InProc at 8C04E430714DC3DE9353B00B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247925970, false, "414431f1-110a-437a-820e-76ec5f4f166a",
+			"@@@InProc at B5D6330D66458B3B919E793F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247926570, false, "da8c1479-36d0-4878-9b8f-5bca6a3533f6",
+			"@@@InProc at B5D6330D66458B3B919E793F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247927150, false, "34d32e43-d2e7-40ae-82ae-e520141bae21",
+			"@@@InProc at BFABF61D7085D042AEA3FD6F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247931820, false, "1f1b5758-58a3-46a5-b741-5db380dfb0d4",
+			"@@@InProc at BFABF61D7085D042AEA3FD6F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247932770, false, "6e86f6ac-e814-453f-9797-0996e6a95b82",
+			"@@@InProc at 75F926DAC6C145D1C3DD8F8E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247933270, false, "12b430dc-bc1f-4a5c-b437-d0fea9267a1f",
+			"@@@InProc at 75F926DAC6C145D1C3DD8F8E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247934270, false, "bb081f73-3649-44f1-85ff-80d88cfdbb83",
+			"@@@InProc at 7A9012E048A503111677520A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247939020, false, "bf22011b-e238-4228-a338-6e226b2310e7",
+			"@@@InProc at 7A9012E048A503111677520A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247939660, false, "ff572f7c-4739-4a2c-9eac-bc118944c364",
+			"@@@InProc at BDA3F262D406F7458DAC6F15", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247940300, false, "0c96c3eb-1a6e-4f1c-9883-6c145ec5e364",
+			"@@@InProc at BDA3F262D406F7458DAC6F15", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247940880, false, "a6b580c4-48d9-40cf-aaad-e657b84444d6",
+			"@@@InProc at 14DE85AC4D985C03F689EC07", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247946270, false, "d554368c-aa1b-4f9c-b69a-35946af5fc9a",
+			"@@@InProc at 14DE85AC4D985C03F689EC07", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247947100, false, "4798dac8-b6d7-40cf-95d5-c928f3fcd0a9",
+			"@@@InProc at 84A28EAC1FD10D899B5EF8FE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247949560, false, "782c1c31-98d0-46ba-b6da-a4ebd798302e",
+			"@@@InProc at 84A28EAC1FD10D899B5EF8FE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247950570, false, "2aba1c73-d7ec-4678-9c63-90049e8fd986",
+			"@@@InProc at 6374E764C8F659D2E63D90E5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247960950, false, "dd6dbc6d-f1ae-46a3-adc2-e5110271b76c",
+			"@@@InProc at 90502756004A4CBF710AECCF", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247961090, false, "9a35fe9b-0d9a-489c-b28b-13b06e3646ac",
+			"@@@InProc at 6374E764C8F659D2E63D90E5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247962770, false, "3bd25c74-79d3-42c1-877d-e3ab18453c8b",
+			"@@@InProc at 90502756004A4CBF710AECCF", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247962860, false, "9392fe3e-0a03-488e-87b7-4325bdea0890",
+			"@@@InProc at A4B9A8405C0CA9AF3AD48772", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247971160, false, "b381b420-5220-4e85-8308-2fd124ae041e",
+			"@@@InProc at DB583840090219A3166C1759", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247972140, false, "9f43ee6f-78e1-4385-8c76-c9fbec99b9d7",
+			"@@@InProc at A4B9A8405C0CA9AF3AD48772", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247972230, false, "345235b3-ed73-401d-9ce9-7d6a77cbf35b",
+			"@@@InProc at DB583840090219A3166C1759", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247973530, false, "fd05362b-d48d-451e-9bda-8ada3eab78a0",
+			"@@@InProc at 65B891D0DEB0738F25694DFD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247980450, false, "a643c50c-d882-4f02-9b56-06d83a7b6ed4",
+			"@@@InProc at 65B891D0DEB0738F25694DFD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247981430, false, "199f6f16-422c-478b-b1ba-07d342735e48",
+			"@@@InProc at 085D2B1955F0FC456AC4D42F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247981740, false, "0e075a52-9d32-4f01-9082-ed0b4d06b4da",
+			"@@@InProc at 085D2B1955F0FC456AC4D42F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247982980, false, "80a58046-7a91-451e-8994-1ed461102871",
+			"@@@InProc at 0C6898FD35F375C1B7E40ADE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247989260, false, "1c94535f-a6a7-41b0-9450-c49685a29aa5",
+			"@@@InProc at 0C6898FD35F375C1B7E40ADE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247990260, false, "291dc35f-39d0-4262-8e05-26117167288b",
+			"@@@InProc at 8F4AB2B60A82430CAD1D020C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247991170, false, "5418bb41-4777-4b8d-a6b4-4853bceec743",
+			"@@@InProc at 8F4AB2B60A82430CAD1D020C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247992000, false, "fb93c6e7-dc15-41ce-9b7a-5a8e7c965fc9",
+			"@@@InProc at 39D07F82B3534B7F43F6FFD6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247998450, false, "be7099ba-530f-4ffb-a3ac-bd21c53d021a",
+			"@@@InProc at 39D07F82B3534B7F43F6FFD6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247999260, false, "28275e95-cde0-436b-b934-2f6783f944b9",
+			"@@@InProc at C9A0A7AFD446F47F62D4B38C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878247999590, false, "cea7eead-c0fc-4815-9f72-a7b58cb42227",
+			"@@@InProc at C9A0A7AFD446F47F62D4B38C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248000650, false, "3379c26f-4033-4210-9fa2-55294787c7a9",
+			"@@@InProc at 8158CE35C51542E9BD0FF50C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248007600, false, "026c97e0-6ab6-4730-85f4-61fb4eac4783",
+			"@@@InProc at FF53371A46AE9A2ED97049A4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248008580, false, "35a67bc2-2d92-4152-8469-0ab24228a6cc",
+			"@@@InProc at 8158CE35C51542E9BD0FF50C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248008670, false, "f96499f2-e933-4b78-86f5-ac632cd1852b",
+			"@@@InProc at FF53371A46AE9A2ED97049A4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248009980, false, "f3b3329e-95f5-4b54-83d9-387ca361e02b",
+			"@@@InProc at C0347BE3B9E66D16FAE90E9D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248018560, false, "1d5501dd-2d3d-4524-ab61-1de13ac9e3f8",
+			"@@@InProc at BF6561C9A27EFDB9731166AE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248019910, false, "3e9cefce-f46e-4f19-b676-f3c42e5f7b4a",
+			"@@@InProc at C0347BE3B9E66D16FAE90E9D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248020050, false, "39f1c66d-dc1b-4c32-a55a-501268755376",
+			"@@@InProc at BF6561C9A27EFDB9731166AE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248021620, false, "f8cc682f-82e6-45be-8b36-29f709d85270",
+			"@@@InProc at 138AF512C1C970424D604E51", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248029110, false, "50f8f518-95b8-492e-ac4e-c8432fb564b8",
+			"@@@InProc at 138AF512C1C970424D604E51", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248029960, false, "27f2171f-1374-4c16-8cdb-64f1cd7215e3",
+			"@@@InProc at 92ADBDD10D43017AA966D4AE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248030060, false, "257e5e8d-09ab-418c-ba6c-dd55f39a867c",
+			"@@@InProc at 92ADBDD10D43017AA966D4AE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248031270, false, "358d0777-51a4-46e5-870d-4a7c6ea802b2",
+			"@@@InProc at 1E3B2948F3CE3E8E3FC80748", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248037900, false, "85029f9e-add7-4cf8-ba4b-33fa58b5c120",
+			"@@@InProc at 1E3B2948F3CE3E8E3FC80748", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248038730, false, "3011ef4d-0fc3-4a7f-a9e6-e35c39fd40dd",
+			"@@@InProc at 01C09D93765BC76B84D3096F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248038830, false, "f2484c72-f77a-4aa7-b40a-ac1f44696e7c",
+			"@@@InProc at 01C09D93765BC76B84D3096F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248040040, false, "f986e194-4734-41c1-88d7-8ce41dddf83b",
+			"@@@InProc at 71E11A17E985EA12EE29851A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248047590, false, "bea4e070-eabe-4336-a3dd-54d6d2e611cd",
+			"@@@InProc at 46D56BBA67A3AC8CE459077C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248047710, false, "a74300e1-e2d4-481a-81fa-93df625ac8a7",
+			"@@@InProc at 71E11A17E985EA12EE29851A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248049350, false, "d065e09f-3ae3-4afc-9ca6-db945da21e91",
+			"@@@InProc at 46D56BBA67A3AC8CE459077C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248049460, false, "e6016493-22dd-4e20-b090-10a88050d63b",
+			"@@@InProc at C10A67A48B23E19458575299", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248057750, false, "14c9b6a2-50ab-46a8-8976-745ceb13bdce",
+			"@@@InProc at C10A67A48B23E19458575299", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248058570, false, "33dd42b4-bcbf-4ee8-9bfa-02e9ac232ccc",
+			"@@@InProc at 22F12B0B791B1A8C34988B6D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248058860, false, "f2f5d6bb-ed56-4b61-83ea-63cfedbe18f4",
+			"@@@InProc at 22F12B0B791B1A8C34988B6D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248060930, false, "093d25d4-7049-4845-b5d0-cf28f43412e3",
+			"@@@InProc at BF6797E391F2310758E6E463", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248067300, false, "bd15cbdd-ae17-4d56-a4da-be065372e1a1",
+			"@@@InProc at BF6797E391F2310758E6E463", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248068290, false, "7813c181-4c8c-435e-83e3-4d32b3f577bf",
+			"@@@InProc at FADE7BC00082D5507E95EE71", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248072460, false, "143f3e35-edf7-44c9-b103-ec1103620975",
+			"@@@InProc at FADE7BC00082D5507E95EE71", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248073700, false, "10059090-918d-451a-ad33-a43fa9338c31",
+			"@@@InProc at 02704310739A7C9F3EC1E8AA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248076250, false, "ef3b0e3d-042d-4087-af1e-098e0eef4e1f",
+			"@@@InProc at 02704310739A7C9F3EC1E8AA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248077070, false, "048aecf5-27d5-49bf-87a1-e91e30a32bb1",
+			"@@@InProc at 9BF6412301B8C5DB2B817A7A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248082350, false, "386d9728-99ef-4f1e-aae1-333ac3c8f87d",
+			"@@@InProc at 9BF6412301B8C5DB2B817A7A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248083490, false, "a40ea9fa-a631-47b0-b8c0-ec985c08830b",
+			"@@@InProc at 6DD5E456DAFDBCFBC0F7C513", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248084800, false, "1adac0f8-f25e-497c-a851-348eaf8f9b7f",
+			"@@@InProc at 6DD5E456DAFDBCFBC0F7C513", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248085760, false, "355c331f-b8cb-4e8e-9ee7-0d2ab903fdc0",
+			"@@@InProc at 4A3E4400D7905D0D8557D873", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248091830, false, "ed51e298-2067-476e-b879-31fdf116e918",
+			"@@@InProc at 4A3E4400D7905D0D8557D873", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248093140, false, "f19b254a-4457-42c9-a1eb-10de9ebf1f2f",
+			"@@@InProc at 4CFCBAA4DC6C9392482D5612", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248094480, false, "2b6ef980-dc57-4776-b820-c98ea3edba07",
+			"@@@InProc at 4CFCBAA4DC6C9392482D5612", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248095300, false, "f6e26782-95ee-48ef-9f5e-6ee79cac95f2",
+			"@@@InProc at D38219FA89B72C77EF92C8FA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248103390, false, "96fa16b9-a59f-471d-a3a2-a049db80655a",
+			"@@@InProc at 5B63E0FFBE5BB1FCDADED131", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248103510, false, "0bf1f0e6-a8c6-416a-b14f-21d6bdb0bdd9",
+			"@@@InProc at D38219FA89B72C77EF92C8FA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248105210, false, "a5f5861c-0917-4eb0-8abe-5b41deffcb91",
+			"@@@InProc at 5B63E0FFBE5BB1FCDADED131", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248105300, false, "08757c44-1004-42e7-bbd5-da953dc1f3bc",
+			"@@@InProc at 05BE8AAC83311E9E866E776B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248114510, false, "a33b2d15-d89a-4fb2-8928-cea4f34d090c",
+			"@@@InProc at E180DDBB0EF00EF837056D61", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248115850, false, "b74ee134-753c-46f9-8028-caaf16fb942b",
+			"@@@InProc at 05BE8AAC83311E9E866E776B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248115970, false, "87b1cef2-8d98-46e8-9254-e404ee93d314",
+			"@@@InProc at E180DDBB0EF00EF837056D61", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248117560, false, "729ea2c0-0bbb-43ef-b160-5ad6f798d001",
+			"@@@InProc at B996864E897082CCF1AA0062", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248124800, false, "a94c1b94-79be-4de3-a493-9b089924d0c3",
+			"@@@InProc at B996864E897082CCF1AA0062", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248125860, false, "c048b3d4-abad-4037-9bf7-7e22afb10f44",
+			"@@@InProc at 8BAC2734F3DB26AC6BFDC9DA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248126770, false, "fa5e059d-e286-4823-9ca5-5828db94328e",
+			"@@@InProc at 8BAC2734F3DB26AC6BFDC9DA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248127570, false, "cda2f576-7ae2-429f-8df2-dceef987efce",
+			"@@@InProc at 17E19318806FEAD16223A9E2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248133920, false, "fa0e7fa0-651e-4bff-8216-e200703d29d1",
+			"@@@InProc at 17E19318806FEAD16223A9E2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248134920, false, "a3ee00a1-f86f-495a-bc4b-6eaefc621a43",
+			"@@@InProc at A53D595374B19AF5C7D9529F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248136410, false, "aa0f356d-fee0-4f2e-885e-50389bb8a505",
+			"@@@InProc at A53D595374B19AF5C7D9529F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248137220, false, "055ca6b1-6089-4c36-8f03-6ede57e68698",
+			"@@@InProc at EDB812BC8F67AB43ED69C2D9", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248142730, false, "7c153b04-c053-4a04-b943-3e6e220c543c",
+			"@@@InProc at EDB812BC8F67AB43ED69C2D9", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248143680, false, "a3fd89c6-3618-413e-9188-d617f940d908",
+			"@@@InProc at 11A2C5FEDD2BEA8ECDA73227", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248146570, false, "a2890df3-51bc-4863-94bb-e8de87ab598c",
+			"@@@InProc at 11A2C5FEDD2BEA8ECDA73227", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248148030, false, "708f728d-1110-4984-8463-a242f6ebc2c4",
+			"@@@InProc at 6900542C4E36533DC3EECC6B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248151450, false, "05361b52-e508-4e4d-b14c-507673b8a248",
+			"@@@InProc at 6900542C4E36533DC3EECC6B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248152610, false, "ab3a0427-92ae-4a83-b482-818a7b6bbc05",
+			"@@@InProc at 5B86D56AC9649A1C401764FC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248157750, false, "2a0be2c6-fd44-40a7-866d-1532ef4b03b3",
+			"@@@InProc at 5B86D56AC9649A1C401764FC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248158560, false, "7b5661ea-c987-426c-885b-f10aec980fe5",
+			"@@@InProc at 40AB3256D1977693FC656964", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248161400, false, "baf2002d-d2b7-4222-a730-97776421c292",
+			"@@@InProc at 40AB3256D1977693FC656964", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248162400, false, "fa083259-46e7-4bb9-90de-cae47d349705",
+			"@@@InProc at EEB0832927390E866673AB6C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248166550, false, "05639f6e-5e08-426d-a97f-1d1fb28e68f0",
+			"@@@InProc at EEB0832927390E866673AB6C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248167730, false, "46a7907f-832d-45fa-9f6a-f9ae8f488484",
+			"@@@InProc at A4247424C19C157BCB03C80C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248171120, false, "3f5f5a1c-f131-40ba-b759-ced09a0df1ab",
+			"@@@InProc at A4247424C19C157BCB03C80C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248171920, false, "1b2661b5-1118-4cdf-9184-50645a0343e8",
+			"@@@InProc at 88BBAC41F2F2F4EC302CDDF8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248175700, false, "c9e08e61-5599-42a3-b215-d94242795295",
+			"@@@InProc at 88BBAC41F2F2F4EC302CDDF8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248176670, false, "c9775af2-2fa0-4a7a-93ff-f9346c93598a",
+			"@@@InProc at B80FEB23A886AAF8AEC1B6B2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248179620, false, "ebee0966-19dd-4f7d-bca1-0423061f6ac4",
+			"@@@InProc at B80FEB23A886AAF8AEC1B6B2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248180630, false, "be4d2b9f-7098-4593-a9ef-8fa63ba6576e",
+			"@@@InProc at 1DEE15DB506C17BC1BF413D8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248186310, false, "81ee39fe-f3db-4c92-8336-17b074cc7688",
+			"@@@InProc at 1DEE15DB506C17BC1BF413D8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248187320, false, "084272b7-fa8c-4a5c-a8c9-9fa0503f3106",
+			"@@@InProc at BA49C7A123539F44B1EC82D2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248191240, false, "2ffa26a4-1cc9-4585-9ff5-6301766d107b",
+			"@@@InProc at BA49C7A123539F44B1EC82D2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248192400, false, "2e4b65b8-0ead-4723-ac0b-2a5e4fbe65b3",
+			"@@@InProc at E416C03E081529FF169195AA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248228780, false, "8edd7e8a-d52f-4696-965f-da9900f3458a",
+			"@@@InProc at E416C03E081529FF169195AA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248229610, false, "5c1d8638-6a38-40bd-baa1-c435c29a7b05",
+			"@@@InProc at EE95BEEAD7B711201B20397A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248235140, false, "9337dd98-cd9a-43d9-9942-bf5506186827",
+			"@@@InProc at EE95BEEAD7B711201B20397A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248236330, false, "c432b8dc-766a-4c83-926e-ba087b4bd013",
+			"@@@InProc at 4ADE4AC830A35756951573BC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248238010, false, "eff8e21b-a722-4e8a-8c0d-562f71a611c8",
+			"@@@InProc at 4ADE4AC830A35756951573BC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248238820, false, "cab7761d-6b78-46b4-b8ec-b9b45dccb43e",
+			"@@@InProc at EE5937D1A69C8B1D40843E85", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248246680, false, "60a475e5-61d4-41e6-980d-932ebf4189f8",
+			"@@@InProc at EE5937D1A69C8B1D40843E85", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248247820, false, "5130f6c5-b702-446f-a31a-3b658993e058",
+			"@@@InProc at EC7DE260259E3405F89CBD9C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248247950, false, "79480699-4bda-4ea3-94b3-1ba2876c549c",
+			"@@@InProc at EC7DE260259E3405F89CBD9C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248249690, false, "f0a5728b-11e0-467a-af2a-525e35c6c64b",
+			"@@@InProc at 0B9D1676D7220DB18AB9E70B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248256350, false, "a371ca21-61d4-4a4a-b92c-58ea450699d4",
+			"@@@InProc at 0B9D1676D7220DB18AB9E70B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248257170, false, "47240125-145f-476e-a7d7-cd5f9fd9b723",
+			"@@@InProc at 7455CE84D83C8D730AE5D887", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248260070, false, "1656177a-abc2-4339-900b-753cccbc6d57",
+			"@@@InProc at 7455CE84D83C8D730AE5D887", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248261240, false, "61962b84-c1bd-4d05-a517-dddacdf20241",
+			"@@@InProc at D9EECBAAFFBC961D5C8C2361", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248265720, false, "072774c7-9382-40cb-883b-c1ae17937257",
+			"@@@InProc at D9EECBAAFFBC961D5C8C2361", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248266910, false, "d7bdfe59-7d14-4e84-a586-40f1a24c8de2",
+			"@@@InProc at F6007E8FB4F3C44BF3D20978", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248271270, false, "d1df721b-72cf-4655-ab1f-afbd2a674a58",
+			"@@@InProc at F6007E8FB4F3C44BF3D20978", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248272080, false, "702198c1-49b2-4f9a-8b3f-a1ed1d19cdd0",
+			"@@@InProc at 81EED29F9CF2DC8D5DBE752B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248275610, false, "b42d03f4-7a93-47fe-b0a6-a030bf700770",
+			"@@@InProc at 81EED29F9CF2DC8D5DBE752B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248276600, false, "3e55f26e-749f-48a3-a01e-2f0f76a83a53",
+			"@@@InProc at 617300C16764A22794A74849", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248283510, false, "c6c5b5b8-0126-43a1-85ff-27f01d76ed8e",
+			"@@@InProc at 617300C16764A22794A74849", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248284490, false, "81fffcd9-f191-48ba-af36-1436d479512d",
+			"@@@InProc at 92C1ECE50CC17A2E280EC9FA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248285390, false, "aabff301-e105-4ed9-88a6-1f5f302d3f97",
+			"@@@InProc at 92C1ECE50CC17A2E280EC9FA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248286310, false, "bd384487-ca2a-4d99-aebb-4851ee4ec056",
+			"@@@InProc at 672C1C620C89D7AA291C6D68", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248293360, false, "828d5126-eb8b-4023-bfd8-56c573ee52b0",
+			"@@@InProc at D2C19202E988486E75D4AE88", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248294610, false, "67d2d2c2-f192-4d90-a25d-1b03a135f38e",
+			"@@@InProc at 672C1C620C89D7AA291C6D68", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248294700, false, "f5cd9da4-d2b8-4508-8034-5cd17e885fbb",
+			"@@@InProc at D2C19202E988486E75D4AE88", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248296660, false, "8fe73d8a-ce01-4e31-a55b-6b0d6de79723",
+			"@@@InProc at 8FB8FB08999E36E4D1F2E379", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248303700, false, "f1902c2a-bba6-4d07-835d-e1d2bc6394ac",
+			"@@@InProc at 8FB8FB08999E36E4D1F2E379", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248304570, false, "e1217fee-b660-4bfb-929c-36d1bbe83cf3",
+			"@@@InProc at DC7EC5E00195FD9498F809C2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248305390, false, "79d1440c-b998-49f4-b68d-f564bcb3d855",
+			"@@@InProc at DC7EC5E00195FD9498F809C2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248306330, false, "c2a05ecc-0622-4cdb-87f7-52f7e4d68820",
+			"@@@InProc at D99403B9EA59F76340318A7B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248313590, false, "7655efaf-aa35-4101-b6d4-a4252781327f",
+			"@@@InProc at 5D5E7B08F15EFA449B830D79", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248314540, false, "65c5d9d5-f147-4ab5-84b8-44f44c252eab",
+			"@@@InProc at D99403B9EA59F76340318A7B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248314640, false, "60d49735-7355-4250-b159-00d7648b73c4",
+			"@@@InProc at 5D5E7B08F15EFA449B830D79", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248316120, false, "f3401650-a668-437c-9477-b30278615739",
+			"@@@InProc at C8F19980B57E1D6F825CFE9F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248324190, false, "590b90b3-739b-487e-b137-1ba99dcd0b99",
+			"@@@InProc at F1607F5627BFF38DDDE506D5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248325290, false, "24bcaed2-7440-4b68-977e-89179ace7c57",
+			"@@@InProc at C8F19980B57E1D6F825CFE9F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248325360, false, "26558bda-1a3d-4bd4-af98-a9d55ba821fb",
+			"@@@InProc at F1607F5627BFF38DDDE506D5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248326810, false, "38e0fcbd-2a73-40f3-8913-804eb92a2320",
+			"@@@InProc at 82BF27E6595453058019ECAE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248334650, false, "c3623668-b61c-4270-a30b-1531e260151e",
+			"@@@InProc at 82BF27E6595453058019ECAE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248335430, false, "e920cc7d-5e5f-4ab1-b85e-8f25c837a4eb",
+			"@@@InProc at E08A7F586432747A051D52AE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248335830, false, "997c5ca0-47bb-4c5b-a601-8161eb80dfe3",
+			"@@@InProc at E08A7F586432747A051D52AE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248336890, false, "8694d192-bfde-4f69-a5e6-0c1189488386",
+			"@@@InProc at 40CC96AC4956EA211C9B8EE1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248343270, false, "544821a2-ebbc-47ea-aee2-f1b1221ba8cc",
+			"@@@InProc at 40CC96AC4956EA211C9B8EE1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248344060, false, "fc8f08a4-2962-4ca4-b5bb-28bed82411d4",
+			"@@@InProc at 164F34B037CAFD5F2F40AF23", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248344840, false, "9965ae9d-1de6-4be3-8fdf-70dcb3acdb5d",
+			"@@@InProc at 164F34B037CAFD5F2F40AF23", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248345810, false, "2e4a9b76-be50-4add-9403-2639d7c65764",
+			"@@@InProc at 6C9EFE37062E8D2096D7AF34", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248352950, false, "981b4ded-e37e-4278-8cd2-176dd584ac0e",
+			"@@@InProc at 6C9EFE37062E8D2096D7AF34", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248353810, false, "5296db61-6db7-48f9-a19c-d13c2052612a",
+			"@@@InProc at 432F1F320E07BAD4C8F662D6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248354750, false, "dd82ea8c-da31-4888-9e81-8e961ff5d6b0",
+			"@@@InProc at 432F1F320E07BAD4C8F662D6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248355720, false, "cb635441-69d1-40f2-8403-e7045132ad4f",
+			"@@@InProc at 1FBBE292FE2C1EDA567812A8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248362330, false, "043afead-3a7c-45b9-91eb-7f6b0641ccdc",
+			"@@@InProc at 1FBBE292FE2C1EDA567812A8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248363170, false, "93e86299-7ed4-4df6-8c76-f9631a588806",
+			"@@@InProc at EA33785FDE512D0CD0E9EDE5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248364840, false, "1b173979-b256-4c2d-802a-ce4a84f129ea",
+			"@@@InProc at EA33785FDE512D0CD0E9EDE5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248365650, false, "e851da84-393d-4b73-9758-3b539f5d31eb",
+			"@@@InProc at 9028951EEBFBF0D4648533DC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248371950, false, "fb92e5cb-933f-49d2-ae6a-cb4be33a2bb6",
+			"@@@InProc at 9028951EEBFBF0D4648533DC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248372760, false, "ce9eecb4-5278-4f46-af5c-d295aa3bd2c7",
+			"@@@InProc at 4E7DD976FC3E045B461DFB43", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248373630, false, "9c0c72be-565a-4068-a38e-d8712cf8a71b",
+			"@@@InProc at 4E7DD976FC3E045B461DFB43", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248374520, false, "6eaa0b3a-1684-4923-960e-e4bb5faf3ad6",
+			"@@@InProc at 54C748701B84D084C7E8A1A1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248381610, false, "79abc1e3-1302-43b6-ba66-66cd637ab138",
+			"@@@InProc at 54C748701B84D084C7E8A1A1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248383250, false, "c0f7d17c-5f46-42da-a5a2-23f0e0c505ce",
+			"@@@InProc at EE3B32577A9277261B5FB370", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248385660, false, "873db210-9a54-4d3c-8eab-5c70c61055f1",
+			"@@@InProc at EE3B32577A9277261B5FB370", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248387910, false, "de49aa44-f718-474b-969d-f44a9db59b14",
+			"@@@InProc at FD7AFB8D3EEA0891BA3585D0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248393930, false, "9ff425ed-744c-4c4a-8ea1-99492ccdff32",
+			"@@@InProc at FD7AFB8D3EEA0891BA3585D0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248394790, false, "ed035fbd-51d2-4167-a049-b9bd48de286f",
+			"@@@InProc at AF00666BB34F4547EFDC977B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248397600, false, "fc0a3614-07ad-42c2-8968-7b359f1d6c82",
+			"@@@InProc at AF00666BB34F4547EFDC977B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248398550, false, "144a362f-a288-42e0-a6d4-111684939580",
+			"@@@InProc at 1DD56AACA0B9B5F8FE8CDA62", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248402580, false, "12048372-ab01-4f8c-840c-a9ef14764234",
+			"@@@InProc at 1DD56AACA0B9B5F8FE8CDA62", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248403400, false, "23be9fe1-d4f1-4cb8-97a4-6c7e2790fc0e",
+			"@@@InProc at 74C4064D5CDBA1B5B6CE494B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248406970, false, "48eff012-cb3c-42b2-be8d-fa98ec14cded",
+			"@@@InProc at 74C4064D5CDBA1B5B6CE494B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248407800, false, "f464d202-3e9b-40c5-bf7f-20099349b0d0",
+			"@@@InProc at 7C4FEA3287B11CF8022A1FAE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248412580, false, "0ed8d52d-119e-4b6f-a7f5-dba6ef88bdd6",
+			"@@@InProc at 7C4FEA3287B11CF8022A1FAE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248414390, false, "1cfa7a7d-9dad-49d1-a8ca-cbb25c547b3d",
+			"@@@InProc at BF75649433977F1D95F6C0FC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248419500, false, "ebd82881-011b-45d8-a7c2-172bfc666ee0",
+			"@@@InProc at BF75649433977F1D95F6C0FC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248420340, false, "e74c4cce-6930-4fa4-9aa5-d12d93b77eff",
+			"@@@InProc at D44C6B6DC5E133048D412FBB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248422590, false, "7bcb2f4c-5e0c-4965-9695-2aaf50b1df62",
+			"@@@InProc at D44C6B6DC5E133048D412FBB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248423420, false, "49f5b9c5-b48b-423b-87b9-9c5a0f4f7428",
+			"@@@InProc at FD204B36B13BC47A0753DF8E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248428990, false, "48553850-deb1-48d3-a5f8-0a64331fd15a",
+			"@@@InProc at FD204B36B13BC47A0753DF8E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248429790, false, "5713087e-6e71-4b8a-b771-80a2c454ca18",
+			"@@@InProc at C050A656F4BF9BAE5D11314B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248432380, false, "6144a082-0194-46bc-98ad-9c8f79261edb",
+			"@@@InProc at C050A656F4BF9BAE5D11314B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248433310, false, "fd8bd8cb-e4d0-451b-b64f-66325009998a",
+			"@@@InProc at 8DB248AA6D1019C8817DC29A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248438030, false, "32184643-3aaf-444f-863f-da6fe932a060",
+			"@@@InProc at 8DB248AA6D1019C8817DC29A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248438810, false, "79665c05-c408-45b4-93cb-210d74c3399f",
+			"@@@InProc at 5BC08543BF9CFB4212B1113F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248441380, false, "1c6a9aa7-f2fc-40d5-bc8a-0f909886f8b3",
+			"@@@InProc at 5BC08543BF9CFB4212B1113F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248442430, false, "52792b75-02a5-45db-bd7a-631582bfaa61",
+			"@@@InProc at B7CEE2C0341A5BB0C0B68CFF", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248446590, false, "2285051d-fede-4d67-b903-116525d25ff4",
+			"@@@InProc at B7CEE2C0341A5BB0C0B68CFF", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248447400, false, "ac76cceb-37e1-430c-b20d-1c630f04812e",
+			"@@@InProc at D3E35628FF743A1598F312B0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248450810, false, "c63e94c1-b88a-49b9-b50e-2f570e352c2d",
+			"@@@InProc at D3E35628FF743A1598F312B0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248452130, false, "b5534a98-1e62-4e3f-8242-d1e578e855df",
+			"@@@InProc at 157DC8C21528D4568BFB431A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248457240, false, "0b3ca1a3-64c0-4642-a89b-77bb5c59c1ac",
+			"@@@InProc at 157DC8C21528D4568BFB431A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248458060, false, "fd40bf20-61ac-4adc-96f0-66dac629d236",
+			"@@@InProc at 1F79509B80C59B0C75C23A27", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248462470, false, "07e09ff3-daf9-4a3a-adcb-17874bd7dca4",
+			"@@@InProc at 1F79509B80C59B0C75C23A27", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248463670, false, "9ed39d32-4e49-493e-91ed-80e88e9ed0ce",
+			"@@@InProc at 84042F32B2AE8411D3C250F0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248467510, false, "69671679-2c96-4821-8477-0470097052c5",
+			"@@@InProc at 84042F32B2AE8411D3C250F0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248468380, false, "56cad074-0e9d-4aa0-a5c1-04a330c10d3d",
+			"@@@InProc at E7D6F34A113C29BB0D4213C7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248473590, false, "6835c379-94a6-47ec-814a-8d1692d91703",
+			"@@@InProc at E7D6F34A113C29BB0D4213C7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248474860, false, "11e1de6b-d884-43da-89d9-c5963369593f",
+			"@@@InProc at 7960E7825F0BC119CF1E650D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248478540, false, "75a075ff-35f0-4dbe-8785-462d04fdd86c",
+			"@@@InProc at 7960E7825F0BC119CF1E650D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248480180, false, "f32bbf30-d9ac-4a45-bbac-b909084c66d2",
+			"@@@InProc at 3B99F1C0D32C79555D44E82A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248483590, false, "8f580c0b-2e04-46f6-8232-0d4e290fb294",
+			"@@@InProc at 3B99F1C0D32C79555D44E82A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248484430, false, "72d42713-c66e-489e-af23-b44f018f3ba3",
+			"@@@InProc at D22B1160ABF995A53629628C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248489110, false, "a7343e39-f76e-4432-8bd5-66de51c8a496",
+			"@@@InProc at D22B1160ABF995A53629628C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248489950, false, "83a53f13-ea19-4d3a-8b6d-d1e49d2e7414",
+			"@@@InProc at B901D9686DA53691351C6284", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248492860, false, "c7a9965d-20fe-423b-8a16-cce1affd9e5d",
+			"@@@InProc at B901D9686DA53691351C6284", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248493840, false, "0c933649-c629-494f-b140-67f2f36a327d",
+			"@@@InProc at ABE61A9EEE78C47DF1C0906C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248499070, false, "85f6efd5-bb21-4d10-a35a-8cb48238c6d1",
+			"@@@InProc at ABE61A9EEE78C47DF1C0906C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248499890, false, "bf2c4a9f-da42-4814-a965-a5ec47abfe4d",
+			"@@@InProc at 6D0E549757C3F40913799F42", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248501680, false, "a73e7c59-de74-463e-b2dd-4b63d5075b8d",
+			"@@@InProc at 6D0E549757C3F40913799F42", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248502750, false, "04810922-0f46-447e-b35c-197bd849659f",
+			"@@@InProc at F40795FE4A791DA81946BCDB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248507720, false, "2ffcecd2-2729-4d6d-bf13-720705fe236d",
+			"@@@InProc at F40795FE4A791DA81946BCDB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248508540, false, "d9b94660-1cfe-40f2-a3a5-911dabd3ac2f",
+			"@@@InProc at 5E256F0A0CF6F12AB7AC35F8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248511530, false, "86aa18ab-4964-400e-b378-a3b69cd40467",
+			"@@@InProc at 5E256F0A0CF6F12AB7AC35F8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248512420, false, "a2251b86-65e7-4b98-b809-80eb1d9f3a71",
+			"@@@InProc at 7D67F958BB8467C1C6DFED06", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248517140, false, "77ba2313-8bf0-4499-a76f-5782c44061b3",
+			"@@@InProc at 7D67F958BB8467C1C6DFED06", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248517970, false, "abe2d46f-a883-4ed7-a9e4-8247f3661959",
+			"@@@InProc at D59A9E76E0E55AF42A393D8C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248520240, false, "4bd02e4b-f275-408f-bfb7-593920dca6ff",
+			"@@@InProc at D59A9E76E0E55AF42A393D8C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248521120, false, "2a520dd0-5d03-4ba9-992a-6c7a0cf4e9ce",
+			"@@@InProc at 337DEE91124D5616F3194746", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248526880, false, "24c0cc32-23d2-4830-a542-fdc71e27c51e",
+			"@@@InProc at 337DEE91124D5616F3194746", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248527660, false, "2ce4eb9a-c82f-4244-9473-80aea02b4c58",
+			"@@@InProc at 6FE64288846576195912B4E2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248531000, false, "6d9dba79-d59c-4da2-b24e-3d3e4fe3bc0d",
+			"@@@InProc at 6FE64288846576195912B4E2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248531800, false, "15b69269-8cb1-4cbc-95cb-514c4d729698",
+			"@@@InProc at 91F4D7E5642B0B73152215FB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248536020, false, "38b3e245-7fc3-4281-b3b0-98e3a8da8f76",
+			"@@@InProc at 91F4D7E5642B0B73152215FB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248536820, false, "98fd7ebf-16a6-440d-b8cd-6b557ace040a",
+			"@@@InProc at 18F0FA41566C4D670EA3757D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248540150, false, "0db1ac2c-3594-421e-9438-74f4df546aaa",
+			"@@@InProc at 18F0FA41566C4D670EA3757D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248541040, false, "2f151c78-1f9c-4a4b-86b9-8a5e434e9abc",
+			"@@@InProc at 0D423DF21FB843904995E252", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248545930, false, "357ad8c7-feba-445b-8c16-0c618c685b1d",
+			"@@@InProc at 0D423DF21FB843904995E252", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248546920, false, "110c216b-f9b0-42d3-b984-39301f533366",
+			"@@@InProc at E16CEB5DD98E3E5B8105E617", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248549410, false, "566b9336-0349-4c45-acfe-bcce673db8fa",
+			"@@@InProc at E16CEB5DD98E3E5B8105E617", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248550460, false, "383d3240-a122-499e-9c78-dcf197699ba8",
+			"@@@InProc at D47F89F2BA3C64FF7EF8C5CE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248557130, false, "b516d2ba-7244-45aa-bc09-749579ad0eac",
+			"@@@InProc at D47F89F2BA3C64FF7EF8C5CE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248558860, false, "d63fe288-daa4-4227-b651-e0edd508653c",
+			"@@@InProc at 7D965852B63B2302DCDF63A3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248560780, false, "62cf9478-9118-4c07-a9bd-4a8dcca5f25d",
+			"@@@InProc at 7D965852B63B2302DCDF63A3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248561690, false, "007dc067-2b65-4d0c-8909-017d255bf285",
+			"@@@InProc at 06E1A2DC4282F98701649F93", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248568600, false, "28d82df5-0f59-4bb8-bd90-87257e3225e1",
+			"@@@InProc at 06E1A2DC4282F98701649F93", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248569660, false, "3ba5cc0a-b479-4e0b-84cb-b49f86ab54b9",
+			"@@@InProc at 1E6747B12647681C1DE8F627", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248571400, false, "d2a6bd18-7eed-416c-8a9a-10f7e54cff53",
+			"@@@InProc at 1E6747B12647681C1DE8F627", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248573270, false, "5a8c8d78-c3d7-4a8b-b991-b743dd25c13f",
+			"@@@InProc at 9D5F415C9D9EEF0FA361B530", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248578760, false, "779f01d7-af86-4367-8fab-a07017746628",
+			"@@@InProc at 9D5F415C9D9EEF0FA361B530", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248580620, false, "a4093334-d08f-4761-abf0-ec049d527b7f",
+			"@@@InProc at 641B82BB0ABDC81C2758BB41", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248585630, false, "49365bd7-783f-4059-84e0-30f6087048e4",
+			"@@@InProc at 641B82BB0ABDC81C2758BB41", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248586450, false, "3b277207-7656-4348-8ea6-19ee190a5a73",
+			"@@@InProc at C5FCFD14BCD00A9744EDADFD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248590850, false, "d45e20c8-3c44-4a54-8ffa-5b340e38ab1a",
+			"@@@InProc at C5FCFD14BCD00A9744EDADFD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248592100, false, "6d20faba-cd88-4117-8ca8-12a25ff916ce",
+			"@@@InProc at 0950AFE97D2301B3D1FFB99D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248594730, false, "13503e8e-353b-43c8-89f2-731b0e6f6129",
+			"@@@InProc at 0950AFE97D2301B3D1FFB99D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248595550, false, "2480a315-1e18-40c0-9796-a97eb7644f2f",
+			"@@@InProc at 2946A7E116E14C177BC0465F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248601630, false, "f806c04a-31f1-4d44-ae4e-530b6205a9fd",
+			"@@@InProc at 2946A7E116E14C177BC0465F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248602710, false, "cc9cce1b-a6da-4222-9dd9-c7661978f138",
+			"@@@InProc at D6EDB16C5E55511BD31FA673", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248605270, false, "8edc5e4f-3a48-4930-a13d-deb37b8eb15e",
+			"@@@InProc at D6EDB16C5E55511BD31FA673", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248606130, false, "798a797d-fc7e-4e8d-955a-7d5fecab06c3",
+			"@@@InProc at ECA057BB0C4167B874FC9B79", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248611470, false, "9134afb3-131f-40fc-bb05-2984c34f2e9f",
+			"@@@InProc at ECA057BB0C4167B874FC9B79", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248612760, false, "66986369-d407-4887-a564-d35cd4fe002b",
+			"@@@InProc at 063D6675F3C6DD57A9294ED1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248616670, false, "13ee5967-6937-4cc8-9462-2b084cde1aa0",
+			"@@@InProc at 063D6675F3C6DD57A9294ED1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248617620, false, "260456f8-0778-4355-a7de-a4960349f471",
+			"@@@InProc at 4A0522AF98BD99E3124E12A3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248621070, false, "0b9b4736-c88e-4d07-9e0c-2ae1a29f6130",
+			"@@@InProc at 4A0522AF98BD99E3124E12A3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248622240, false, "1beb8ce1-8d0e-44e6-a7c8-eb03faa9b5ac",
+			"@@@InProc at 37915A8C35DD91581E86B628", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248626740, false, "24df3dc7-2c0a-4ddb-accb-dfd8ba9accb2",
+			"@@@InProc at 37915A8C35DD91581E86B628", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248627540, false, "0750efdb-4dc9-444a-b61e-d1d129e7770d",
+			"@@@InProc at 309550856D4A322A82B035D5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248631050, false, "e97ca319-4c1a-4c89-af6e-445505824488",
+			"@@@InProc at 309550856D4A322A82B035D5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248631860, false, "5c2c47e1-418d-41ac-aa35-51f9d190e965",
+			"@@@InProc at B1BF5B7C33FA21BBCF0371AB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248635250, false, "b8e68251-8529-4a5c-b114-10cc2c90cdf3",
+			"@@@InProc at B1BF5B7C33FA21BBCF0371AB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248636280, false, "02ec7efc-f47e-480b-9a5d-329467c280c7",
+			"@@@InProc at 62FC32A59931BA1D5F21ED03", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248640240, false, "a097f018-33a3-4c21-87de-29639f7f2881",
+			"@@@InProc at 62FC32A59931BA1D5F21ED03", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248641070, false, "b319e9ee-8866-46d4-962e-76d8506b61ad",
+			"@@@InProc at 6CC0068B7F64C720A30051C4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248644480, false, "6507750e-9e06-43a9-8d6d-12f2f8958db2",
+			"@@@InProc at 6CC0068B7F64C720A30051C4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248645370, false, "f12b2372-a4ed-4f63-b41d-8f79a6e5f10f",
+			"@@@InProc at 930C8D663933D059E2EEB54F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248649930, false, "4aee472c-7e64-4a9d-b400-f48bffd94601",
+			"@@@InProc at 930C8D663933D059E2EEB54F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248651370, false, "c4ab97eb-29fc-4230-adb8-44ccf3fca813",
+			"@@@InProc at FD3D0302A1BE87290F07400F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248654380, false, "c417d293-0f7a-4c74-9996-d65b62e94c40",
+			"@@@InProc at FD3D0302A1BE87290F07400F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248655200, false, "11fc4644-feb0-46e9-b05f-602030d06ea0",
+			"@@@InProc at 239D76F44E4C5D58DFACEFF2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248661000, false, "8f22793f-5e6f-4e20-b10f-f2702caae8f7",
+			"@@@InProc at 239D76F44E4C5D58DFACEFF2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248662100, false, "c125c6b8-a72c-4adf-b2cc-05bd79fd1f42",
+			"@@@InProc at 31DF7B874EE22E9AB553CEE4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248692050, false, "4357a0e5-3598-4c07-89cc-2020af7904e0",
+			"@@@InProc at 31DF7B874EE22E9AB553CEE4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248693230, false, "4ab368a9-cf59-4388-abb4-0a30e2ccba1e",
+			"@@@InProc at 250FACC2B2328C4BD3B6B371", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248701560, false, "bfc5d2ea-3d99-4270-abd0-83088b45c62d",
+			"@@@InProc at EB7C526C4E0E75EE602AE9AA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248701810, false, "853e71c2-adf3-4d9d-aca1-8b90a8470117",
+			"@@@InProc at 250FACC2B2328C4BD3B6B371", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248703740, false, "59db885c-9e25-46c0-ab86-4a011b8be2a0",
+			"@@@InProc at EB7C526C4E0E75EE602AE9AA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248703840, false, "b5ad0720-42c6-49c4-b74a-936091c0d4c7",
+			"@@@InProc at 26056526FFF7BE522DF9B78E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248712530, false, "7b912908-2cbc-4637-9051-347d2c8dc30d",
+			"@@@InProc at D24015F111E06048D3BAF4EE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248713570, false, "204b5f41-7f47-44b2-9b07-8d5412e248e9",
+			"@@@InProc at 26056526FFF7BE522DF9B78E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248713660, false, "438ad8db-2d6d-49b7-8b54-fde247a2c81a",
+			"@@@InProc at D24015F111E06048D3BAF4EE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248715250, false, "d426edae-a764-4c89-ae8c-17dbb57e3d85",
+			"@@@InProc at 03AA176474C8300A7C815E22", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248722640, false, "7544699b-a1ed-410d-9eee-b38115ca34f8",
+			"@@@InProc at 03AA176474C8300A7C815E22", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248723480, false, "709a6e54-4a7e-4286-ad7f-17b85c509711",
+			"@@@InProc at 26B734E6089EB543A784AEBC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248723680, false, "5b96f52b-a647-450f-84ad-b0d89ee5fa80",
+			"@@@InProc at 26B734E6089EB543A784AEBC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248725160, false, "0297c783-aa48-4258-88f4-a1d7a69697e1",
+			"@@@InProc at 02A2431E622F32E1B9102376", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248731850, false, "70628da6-2ebe-4c16-a078-10deb79b3fde",
+			"@@@InProc at 02A2431E622F32E1B9102376", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248732780, false, "32ba6f9b-3610-43eb-b446-5bc0e90830f3",
+			"@@@InProc at 48F5E8099756EEE461A4A252", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248733820, false, "18385722-5751-4834-8b44-2fa1df42f21d",
+			"@@@InProc at 48F5E8099756EEE461A4A252", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248734790, false, "3ae432ed-aeae-4238-b34a-bc076099e9c2",
+			"@@@InProc at B10E28313C8D2EC1C734B48D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248741300, false, "d01c4de6-4047-45e4-9027-d5116a23acdd",
+			"@@@InProc at B10E28313C8D2EC1C734B48D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248742310, false, "fc4497fd-279b-44ed-a85f-4242a68b16aa",
+			"@@@InProc at 860CB108D57C8A2B3322ABE0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248749000, false, "acd89165-9517-41d5-9072-3d2e6ce82634",
+			"@@@InProc at 860CB108D57C8A2B3322ABE0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248749940, false, "515838bc-6924-4902-8a66-92c252710d50",
+			"@@@InProc at DF952F8D21EFF35A18837E80", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248752430, false, "9f83e9a5-0add-4cc5-9265-7c7841697c9b",
+			"@@@InProc at DF952F8D21EFF35A18837E80", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248753250, false, "834a051c-1ae3-4cc7-816e-692d18a5f2b5",
+			"@@@InProc at 86D7218D014039636B9A309C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248758490, false, "1b4dd89f-f244-475c-8d5c-07714696ad44",
+			"@@@InProc at 86D7218D014039636B9A309C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248759640, false, "e6e7d688-835e-4a8c-995c-364e12b06f2e",
+			"@@@InProc at CD846D066C1AC1138FA20FAE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248762140, false, "1f6701b9-0264-4429-86d4-65d5dd082cb3",
+			"@@@InProc at CD846D066C1AC1138FA20FAE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248763230, false, "85d224ee-f84f-4664-9a3d-0ac27c6edb83",
+			"@@@InProc at 0E0D3ACFA16A1A9E1641CD5F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248769250, false, "a3c387d0-522b-4105-8a2c-fda5e9fa01c0",
+			"@@@InProc at 0E0D3ACFA16A1A9E1641CD5F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248770330, false, "36a12d47-f8cf-4b40-b2c9-ec2bac6a5edb",
+			"@@@InProc at E289EDAE6701BD88F4A13A6D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248772810, false, "207178d7-778c-499d-9970-6a8ae2148ec6",
+			"@@@InProc at E289EDAE6701BD88F4A13A6D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248774250, false, "59bd8352-b5da-4ba9-9095-7c6aa9c4eaa1",
+			"@@@InProc at 0E90EEE00E05CEE426D10886", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248779020, false, "99e59904-7bb9-4742-8dd3-ed8c0942d861",
+			"@@@InProc at 0E90EEE00E05CEE426D10886", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248780000, false, "0dc78a9d-8883-4f08-8a08-302e2500edb4",
+			"@@@InProc at 8480E73B57E13DD6DBCD5039", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248782430, false, "9e11368a-7cc8-40cd-ae07-4b540742cdea",
+			"@@@InProc at 8480E73B57E13DD6DBCD5039", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248783250, false, "a3b9994e-3fee-45e3-b6d5-bd0e85393204",
+			"@@@InProc at A4D057FE4F4B72D2D88650CF", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248788260, false, "573cf3c7-77d3-4797-84e6-8cb434872753",
+			"@@@InProc at A4D057FE4F4B72D2D88650CF", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248789080, false, "0bf302f6-1637-4d66-874f-fbb694dda9e9",
+			"@@@InProc at 3D0B330FD9509F8A2396B925", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248791340, false, "38befb7a-60b5-45d0-ad4d-37d38ee0c201",
+			"@@@InProc at 3D0B330FD9509F8A2396B925", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248792160, false, "66b129f9-9931-45b0-bf14-00a39ae14db0",
+			"@@@InProc at D3A7C0859F670F58E76274F2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248797380, false, "fe97b91b-42a8-4fdc-bd7e-d10237b3a48e",
+			"@@@InProc at D3A7C0859F670F58E76274F2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248798430, false, "1782bbbe-7664-401e-a7bd-f409f35b4f83",
+			"@@@InProc at 8BF62BEC045F5C96D0876228", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248799980, false, "33d57826-7c68-4b8b-a63f-74306b5c2674",
+			"@@@InProc at 8BF62BEC045F5C96D0876228", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248800800, false, "6bad55d7-77b6-4570-affe-0e5be2dcd2b5",
+			"@@@InProc at 5FBDC7D67A72055B75D80B4D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248807810, false, "53fb7621-3f47-4f50-bce4-2adf9ef9fe37",
+			"@@@InProc at 5FBDC7D67A72055B75D80B4D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248808900, false, "db7bb336-9c26-4cb7-b771-6b9270abc190",
+			"@@@InProc at 767FE4646351EBE1AC651945", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248809760, false, "34e14022-2e12-46a3-a075-40e24004bfef",
+			"@@@InProc at 767FE4646351EBE1AC651945", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248810590, false, "3c5934fb-2b68-48c2-94ef-35354a73fc95",
+			"@@@InProc at 78D067BB93D1320830AD8300", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248817220, false, "fce55389-a23a-4ce9-8701-13cdb072e24d",
+			"@@@InProc at 0E98C4F276869AD49A1C9BDE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248818150, false, "07fd3653-5965-4663-9b09-c59710512ea8",
+			"@@@InProc at 78D067BB93D1320830AD8300", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248818260, false, "01599627-83f4-4f4b-8c76-d6e90e9a0adf",
+			"@@@InProc at 0E98C4F276869AD49A1C9BDE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248819670, false, "4fb9536a-12cc-4400-9a26-d34749a9b1be",
+			"@@@InProc at CDD8D27C272E31FC9BF23C09", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248826820, false, "f2b17a5e-6314-40a3-946b-bdf9be27fdbc",
+			"@@@InProc at B1EA5AD1A3AC12DB68A167FD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248827740, false, "964e7108-6da9-4228-94cc-71380f749740",
+			"@@@InProc at CDD8D27C272E31FC9BF23C09", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248827840, false, "7c402dca-4b32-4491-b19a-a91ca198764e",
+			"@@@InProc at B1EA5AD1A3AC12DB68A167FD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248829110, false, "2ed5910a-ca22-4520-9176-f738028af2a3",
+			"@@@InProc at 0849DEBB3B26BFA477FD8997", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248836340, false, "ca378d7b-4933-4957-830e-68cc44828f78",
+			"@@@InProc at 6AF5709B09078E966B603A2F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248837230, false, "d2a313d6-fe73-4bba-ab40-dde2640b87ff",
+			"@@@InProc at 0849DEBB3B26BFA477FD8997", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248837310, false, "21732d06-aab0-4a8e-b6ea-52dc986183b7",
+			"@@@InProc at 6AF5709B09078E966B603A2F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248838720, false, "8d8ec4ac-395f-4999-89eb-41ff7d9f68fb",
+			"@@@InProc at A368225A70CD61BE3F3B16E7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248847030, false, "bcc9da23-c6f2-4007-bc86-7329c5a1c842",
+			"@@@InProc at 7AF6F2475421AB43065344F8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248847470, false, "22a9aed9-96a2-4db0-81f1-0d74013f3cba",
+			"@@@InProc at A368225A70CD61BE3F3B16E7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248849250, false, "0893f348-d4d7-418c-9796-3b46e0226175",
+			"@@@InProc at 7AF6F2475421AB43065344F8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248849590, false, "18639be8-4c3c-41f7-ba15-b35d0b74694f",
+			"@@@InProc at 8588DEB78D1E1B1ECC1E281A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248858460, false, "6af59c15-acd8-4a8e-981a-a3a0b585df8d",
+			"@@@InProc at 8588DEB78D1E1B1ECC1E281A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248859550, false, "1d8024b7-1c55-4fa7-be06-d4fbb0e24530",
+			"@@@InProc at B6E5A886211648D994F1D628", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248859790, false, "81e897a6-c538-40e1-ad8a-3bc9d46a19cc",
+			"@@@InProc at B6E5A886211648D994F1D628", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248861570, false, "27d16fb1-8efd-4d2f-b13e-39cd894b943a",
+			"@@@InProc at D037902BE800F909C3160BA0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248870730, false, "29aef04a-caca-450a-b4e6-5f49d65070d4",
+			"@@@InProc at D037902BE800F909C3160BA0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248872610, false, "51d7f51b-1eef-43d2-8c34-8735dbff4f91",
+			"@@@InProc at F73194C172FACEC706982720", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248872730, false, "67d9a7a9-2ef2-4dd4-b303-3556af3386d7",
+			"@@@InProc at F73194C172FACEC706982720", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248875890, false, "8cfdf146-3201-45e7-9336-9e00514ca491",
+			"@@@InProc at 9301ED9741FAC2EF00E46B39", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248883000, false, "3ebffa7d-5e69-4e55-935f-132320e0739a",
+			"@@@InProc at 9301ED9741FAC2EF00E46B39", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248883850, false, "f310b8e6-d926-45fe-b2d6-9f7b9539478e",
+			"@@@InProc at 02BA000E01D8F9AC91E321D7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248887140, false, "03dc1c61-a942-45d4-be05-9713af054c56",
+			"@@@InProc at 02BA000E01D8F9AC91E321D7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248888340, false, "5e01a11d-fcf1-446b-a8be-da0343db2c02",
+			"@@@InProc at AB02EB00BCAF97188948CCD4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248891840, false, "0dbd8544-9339-4246-bddf-a2c991e22a02",
+			"@@@InProc at AB02EB00BCAF97188948CCD4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248892960, false, "e7ec1b0c-a336-460b-b4fe-7f009373911c",
+			"@@@InProc at A1A77D53CCE16D7CB74EBDA0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248896910, false, "54bfef0f-7964-44b6-88dd-1a48b9aacea0",
+			"@@@InProc at A1A77D53CCE16D7CB74EBDA0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248897820, false, "a80feb7e-07b1-4771-8a8f-3b797f076d0d",
+			"@@@InProc at 6212B85079F357D5950A9741", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248901050, false, "2a4fcd6a-9c48-4eda-8a69-775eca7a85b6",
+			"@@@InProc at 6212B85079F357D5950A9741", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248902050, false, "9972bb7d-3a01-498a-97b4-f1e5919a410d",
+			"@@@InProc at 855908FEDF782E02510EE8B3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248905680, false, "f73c066f-3284-4df3-aa05-b68dc1a2479a",
+			"@@@InProc at 855908FEDF782E02510EE8B3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248906790, false, "7c3dd8de-d53c-4eaf-85b6-a75c3539c65d",
+			"@@@InProc at 394456A4DEE50CB341CED45F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248910610, false, "08393df9-e944-4092-80a6-16616d73d3ad",
+			"@@@InProc at 394456A4DEE50CB341CED45F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248911600, false, "5b7dab14-79a1-46e1-904e-481e25243d04",
+			"@@@InProc at 063D68C73A1B7ED9AEB3FB2E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248914580, false, "f2d9955d-799a-475a-b5c5-9396e7cc057c",
+			"@@@InProc at 063D68C73A1B7ED9AEB3FB2E", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248915400, false, "62c7e964-995e-4d50-a93d-72caf7b786f4",
+			"@@@InProc at F49FC007D075D3BFCD6310A4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248920050, false, "8c146678-63e3-4170-9400-33cf06aa2aa1",
+			"@@@InProc at F49FC007D075D3BFCD6310A4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248920870, false, "e3042a78-ddb4-45cb-9db5-d283c767a715",
+			"@@@InProc at 676AED63CA852B244F51A00A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248923190, false, "d32fe3b8-76c2-454c-b907-165bd6bc8166",
+			"@@@InProc at 676AED63CA852B244F51A00A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248924110, false, "543ae789-7e6d-466f-afd2-10ac527eacaf",
+			"@@@InProc at 339062EB7AEB57ED7F06FEA3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248929420, false, "d8fa9c1a-7f83-44f2-8e80-ccbd74491a80",
+			"@@@InProc at 339062EB7AEB57ED7F06FEA3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248930410, false, "a5a65048-d8bd-4f20-bc74-b3146945ce34",
+			"@@@InProc at 30977852FFC38EE350081E64", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248932780, false, "a540166e-5a38-4765-8c97-5cf7f57196a4",
+			"@@@InProc at 30977852FFC38EE350081E64", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248933570, false, "5b836a01-c3ef-42bd-aa2a-92b0a34bc906",
+			"@@@InProc at AD347BB471F72425CE34F656", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248938970, false, "0346dd1d-4cb5-47a1-acd5-74101cd436e6",
+			"@@@InProc at AD347BB471F72425CE34F656", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248939770, false, "1704898d-5ed8-41ae-bb85-2c6f589d4613",
+			"@@@InProc at 6C9874D63E994B8CB8A80242", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248941530, false, "61b4c1a2-d3d3-4490-bc15-e4d3d1241f3e",
+			"@@@InProc at 6C9874D63E994B8CB8A80242", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248942420, false, "d12edc14-f3e6-4d3e-b27d-525dbeff37d0",
+			"@@@InProc at F1C9718335AF0FBABB287A17", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248948960, false, "8c46d0b1-0fdb-4e27-8c33-28efa15631c1",
+			"@@@InProc at F1C9718335AF0FBABB287A17", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248949940, false, "b8513d58-d603-46d6-b2c7-9461b1ef3081",
+			"@@@InProc at F4B1056D3FFC970F422B560A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248952480, false, "d03f9d8b-8288-4da8-af5f-88be33ee24e7",
+			"@@@InProc at F4B1056D3FFC970F422B560A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248953390, false, "ab8bb737-f8a7-45dd-bf81-a1d7d3454c82",
+			"@@@InProc at E5BCC9FB647BB6BD62845A37", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248958950, false, "74fd2df1-cc50-417d-b4d6-b72a6e2bc33d",
+			"@@@InProc at E5BCC9FB647BB6BD62845A37", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248960070, false, "74713a13-6ccc-439b-a714-29fb2f593267",
+			"@@@InProc at 8432A7CC4AB65C29D9AE6F91", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248961810, false, "c9f9e255-8a29-4df6-8c54-f52cd986b2b1",
+			"@@@InProc at 8432A7CC4AB65C29D9AE6F91", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248962820, false, "2e6bc5f1-8f1d-4241-9f7b-66ff727cedca",
+			"@@@InProc at 0EB9F2C8F6C6E27B87FEDA79", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248968760, false, "6c98f0bf-c017-4eed-82c1-902af6394279",
+			"@@@InProc at 0EB9F2C8F6C6E27B87FEDA79", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248969850, false, "cde34684-5410-40eb-bf0f-c88307f0814f",
+			"@@@InProc at 207D630E24A46739E989D6DA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248971270, false, "157e9b4b-9327-496b-ba3c-2fc69b4b16eb",
+			"@@@InProc at 207D630E24A46739E989D6DA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248972210, false, "d5b0388d-44f0-4989-8bc5-b45dda3aca71",
+			"@@@InProc at F1DC212D36FC3AC0A64E34B1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248978010, false, "735a1e60-b7e4-48e5-a67b-6f3bc262d43f",
+			"@@@InProc at F1DC212D36FC3AC0A64E34B1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248978820, false, "513c0242-c547-483d-92bf-3a2a1225b28b",
+			"@@@InProc at 80431B6DA563CE6005F53F27", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248985770, false, "0e94605d-cf88-4872-b4b5-9104d73b7d41",
+			"@@@InProc at 00AD9D9323BB1446DA0C5EC2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248986840, false, "1dc60564-0b8f-4fae-aec8-4e8643e16845",
+			"@@@InProc at 80431B6DA563CE6005F53F27", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248986940, false, "abfe46d7-5c6e-47aa-be6e-658dc21c5b4f",
+			"@@@InProc at 00AD9D9323BB1446DA0C5EC2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248988410, false, "03019fdd-c065-400b-83d1-2bac3d7f9821",
+			"@@@InProc at B5A0B259DE5BD45B58557A28", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248996970, false, "b6ce24c0-34fd-4bd2-942b-38181daec1cb",
+			"@@@InProc at B5A0B259DE5BD45B58557A28", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248998160, false, "e574e7ce-335d-44f3-813e-27f682c75905",
+			"@@@InProc at F8FA70641304AF0EE31D1697", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878248999210, false, "8c657f18-1664-4a0f-a65d-6085142be3f0",
+			"@@@InProc at F8FA70641304AF0EE31D1697", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249000370, false, "e3f6115f-e5b3-4c3c-8c08-d159d90669fc",
+			"@@@InProc at 657928576FBD53F879527A22", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249006740, false, "9905a329-46dd-44d7-bf46-210219ec7c16",
+			"@@@InProc at 657928576FBD53F879527A22", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249007940, false, "c94cc422-be83-4437-b4d5-79ca327e2c47",
+			"@@@InProc at 71257139A3902877EFD31D90", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249009490, false, "a521770a-b8cd-47ba-ba04-2cc5b1b4a7b0",
+			"@@@InProc at 71257139A3902877EFD31D90", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249010320, false, "42e9b7db-9f32-411a-86b1-3eb009310c0b",
+			"@@@InProc at 28D8679B34A18214721D900A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249016620, false, "48f2ea73-c425-4f85-b7d4-c3cf01a48c07",
+			"@@@InProc at 28D8679B34A18214721D900A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249017420, false, "ff939fca-5cae-4dd9-b986-00dfc6c97962",
+			"@@@InProc at 94DF7A0C0385CE46CD7F7B1A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249018380, false, "4fdd0bb2-fc10-49d5-a059-bae7c7991c52",
+			"@@@InProc at 94DF7A0C0385CE46CD7F7B1A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249019350, false, "a37f5a1d-c75b-47d9-bf5b-91e8aee6a1f9",
+			"@@@InProc at F9DD7B2DA5D151A85C95609F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249025580, false, "d1dc2713-4bfd-4e0c-913d-16d6288e3ff8",
+			"@@@InProc at F9DD7B2DA5D151A85C95609F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249026410, false, "4d9f90e1-c51f-4454-8044-c7282893aae2",
+			"@@@InProc at 922CFA8734AFD7A7E4BCAC62", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249027140, false, "60247f50-b6d8-4864-976b-c4d59664b87e",
+			"@@@InProc at 922CFA8734AFD7A7E4BCAC62", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249027940, false, "48259f07-9afd-452d-b112-2856b20a9f63",
+			"@@@InProc at 86EA061A56DA21FFDD444E2B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249035900, false, "ac64509a-4085-41cb-9e2b-92014ea8ae2f",
+			"@@@InProc at 86EA061A56DA21FFDD444E2B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249037050, false, "d23f8281-b8d8-4b69-8212-197a36311f15",
+			"@@@InProc at 732B8523D071BB139A1866E4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249038100, false, "7850338b-4b74-40a0-b867-2692cccb96d9",
+			"@@@InProc at 732B8523D071BB139A1866E4", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249039240, false, "dcd35b30-8fcc-4e98-bcd2-0dfb7e4b3ae4",
+			"@@@InProc at 8BD39064529D2671B6BD305C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249046060, false, "a033b6f2-7a13-444a-b6c8-ab8da239524e",
+			"@@@InProc at 8BD39064529D2671B6BD305C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249047220, false, "d1ed1481-b886-48cb-97cb-f22e7450e175",
+			"@@@InProc at 3977E05212803EE17A7586E9", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249048650, false, "1ae7bd5a-b818-470e-acb2-0f0b3bf61dfb",
+			"@@@InProc at 3977E05212803EE17A7586E9", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249049480, false, "e1498af7-d7bf-459d-9b94-b8227ab9a1d9",
+			"@@@InProc at 8FAF7C4E6CBED0DAA7CF3846", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249055900, false, "2c80b643-f8c5-4627-a7fe-078bf6a63932",
+			"@@@InProc at 8FAF7C4E6CBED0DAA7CF3846", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249056750, false, "3445519a-0d08-4c24-b4a1-209e7849b7fb",
+			"@@@InProc at E34CFF295B0C2704F502C2C6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249060360, false, "5dc541bd-86c5-48df-ab31-b0a6972267bc",
+			"@@@InProc at E34CFF295B0C2704F502C2C6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249061580, false, "a64fd3e9-eacd-4768-a5d1-1beda6733037",
+			"@@@InProc at 12402A0123144A7678F99DBB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249064940, false, "7508f66b-24a3-4bf7-8b8e-b7ace92363d0",
+			"@@@InProc at 12402A0123144A7678F99DBB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249066070, false, "ff2b2ae2-07a6-46ee-8d66-48424f009620",
+			"@@@InProc at A5B21B1422F7BD0A13B9CA8F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249071720, false, "4ec3feee-1cd6-4215-8e9a-90f5714cc427",
+			"@@@InProc at A5B21B1422F7BD0A13B9CA8F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249072990, false, "6f7dff5d-79e9-45c5-ac99-306052d468c2",
+			"@@@InProc at C574FC4BA21270C4875CF5F1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249076480, false, "037b0294-6c1c-44f3-a20f-7c320b736701",
+			"@@@InProc at C574FC4BA21270C4875CF5F1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249077660, false, "9eeb52bc-40b2-4020-a338-0d6c536a0c27",
+			"@@@InProc at 8A9CC48BBEC8606B07CC1A2C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249081890, false, "59afbd27-f4ce-4c52-8fe7-43c90a504eb0",
+			"@@@InProc at 8A9CC48BBEC8606B07CC1A2C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249082880, false, "f9d80f04-b571-4c1a-a55f-2fa1475ce265",
+			"@@@InProc at 7FFE06035582D19B9D7D0BD3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249085380, false, "e4ce0cea-bb40-4a51-bce2-071d3dd03a40",
+			"@@@InProc at 7FFE06035582D19B9D7D0BD3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249086480, false, "b5a2a106-f058-41dc-89ae-d0e260ff4635",
+			"@@@InProc at 217E75B5F697EEBE6EAE7B15", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249090790, false, "c5156d56-8d44-4628-a897-4d07aad3bd89",
+			"@@@InProc at 217E75B5F697EEBE6EAE7B15", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249091970, false, "95648c52-e002-4ad0-bf97-1e5d67511e07",
+			"@@@InProc at 1269A40BEA6E31319714500A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249097910, false, "375c641f-a3d1-4020-9c8e-400c67cfebe9",
+			"@@@InProc at 1269A40BEA6E31319714500A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249098730, false, "550d9c11-78f6-4343-9a1c-cd9a4b2dfc47",
+			"@@@InProc at FB22E6F12122465172F82923", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249101030, false, "353df8d3-98da-4a5e-a00e-fe2d6ad77d64",
+			"@@@InProc at FB22E6F12122465172F82923", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249102010, false, "ae07998c-5b9c-4ab9-b091-5fcdfa6de469",
+			"@@@InProc at 615354EF4D28548BF66C5FD7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249107210, false, "a734b6eb-8e89-45d2-9c8e-8ce75043d118",
+			"@@@InProc at 615354EF4D28548BF66C5FD7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249109690, false, "8ae9921e-2b05-4ef7-be7a-daed671ff07c",
+			"@@@InProc at 68B87ADD99CFDDEAA1F492BC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249112080, false, "8b4124ce-44a3-48eb-b941-fcd8b9ce275f",
+			"@@@InProc at 68B87ADD99CFDDEAA1F492BC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249114020, false, "85c2e84e-5fe1-4764-9589-d1673cdbd9e0",
+			"@@@InProc at 91C797170C49AEE44DAA8015", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249119500, false, "aca86daf-8980-473a-993a-6019bbc1a2cb",
+			"@@@InProc at 91C797170C49AEE44DAA8015", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249120330, false, "abd41eae-4cce-4be2-837d-c4b351068c42",
+			"@@@InProc at A0F04D30A5C68E7DC4657E7D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249122620, false, "3e501049-65f5-4691-8acf-56d3f1a0735b",
+			"@@@InProc at A0F04D30A5C68E7DC4657E7D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249123440, false, "5d7f2a26-9c62-4c07-9e3f-8b2522a94fa4",
+			"@@@InProc at 1728CC75DE0DB471225761E7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249128700, false, "2d4f3e5c-b3a6-4c3b-80d5-bf4eb2ad49fa",
+			"@@@InProc at 1728CC75DE0DB471225761E7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249129680, false, "3c78e97a-b511-4e65-bd84-d6e94a03cc04",
+			"@@@InProc at B1A1675CBD177E586E481336", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249131340, false, "db590359-bc77-4665-8a27-39c5461be1ca",
+			"@@@InProc at B1A1675CBD177E586E481336", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249161280, false, "3ee52432-5ce4-4e91-9458-f9c79cefb365",
+			"@@@InProc at 847A2704B745A1B1C3C6D673", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249167410, false, "19ce5c5d-7ad5-4f74-a959-fb1c54ebdedf",
+			"@@@InProc at 847A2704B745A1B1C3C6D673", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249168340, false, "6a627b9d-6965-4a11-8832-d10e586dd6df",
+			"@@@InProc at 41C76746EAF6C73E0C7FDA52", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249172110, false, "7d0f119d-eebc-4a95-97db-35a2c5c99fd0",
+			"@@@InProc at 41C76746EAF6C73E0C7FDA52", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249173080, false, "41de9e39-e849-4a1c-a2fa-6d03a051af24",
+			"@@@InProc at 31D430277FB6AFEC5835A65C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249177210, false, "f5a36221-c1a3-48e1-a6f6-25ade2c27456",
+			"@@@InProc at 31D430277FB6AFEC5835A65C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249178030, false, "9559b55a-9f2a-4342-b88f-71bfe289ccc6",
+			"@@@InProc at 4343DD3DC77459CE2A048F8B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249180920, false, "808eaaf8-b0c2-4369-9f38-f8c3988c5ea3",
+			"@@@InProc at 4343DD3DC77459CE2A048F8B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249181860, false, "4d910888-db5b-4613-8626-a40361c4bbc1",
+			"@@@InProc at 172DAB28C640A704DCAEBF5B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249186390, false, "7937ab5b-00f5-4ef9-9f97-8fc3ca2efa4f",
+			"@@@InProc at 172DAB28C640A704DCAEBF5B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249187230, false, "a7d8d774-8daa-4a1f-84ba-3b6c6e30dd8b",
+			"@@@InProc at E3195D27B3F1336EE8568DD0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249190210, false, "ade5b83c-4084-47c9-af51-be49565f3088",
+			"@@@InProc at E3195D27B3F1336EE8568DD0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249191040, false, "4c329dd4-2eb4-44f5-87ce-cc91e46e284c",
+			"@@@InProc at D36356080B4A3A01E86A18D1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249195510, false, "b4064a7f-1e5e-4240-96c4-c6c55a6454c0",
+			"@@@InProc at D36356080B4A3A01E86A18D1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249196350, false, "15e5ced2-a0fc-4ab4-b08b-250d66f83ed7",
+			"@@@InProc at 38F89D00C2C7D328B63BC0F5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249199240, false, "b2f19aa7-f060-42a8-93e7-c7d40ef7547e",
+			"@@@InProc at 38F89D00C2C7D328B63BC0F5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249200400, false, "85870304-0ab9-4fb8-acfb-40c7417ce6df",
+			"@@@InProc at 58E5C4AD7AF0ADDAAEEFD777", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249205840, false, "c0e361ea-f834-409e-995f-ef2cb0f4d4c2",
+			"@@@InProc at 58E5C4AD7AF0ADDAAEEFD777", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249206930, false, "97daa25f-9903-4f0f-8b52-bf5badb6585b",
+			"@@@InProc at B850B47B181C8AC5922FF87A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249209700, false, "6142d648-6cdd-45ea-b285-f5e9af761982",
+			"@@@InProc at B850B47B181C8AC5922FF87A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249210800, false, "892193a6-ba23-4033-9ca6-36476ee35ea7",
+			"@@@InProc at 471FB7307459D6359B6EECB3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249215930, false, "65a96f36-3396-4936-b3a2-8ca66cd15952",
+			"@@@InProc at 471FB7307459D6359B6EECB3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249217000, false, "c67910b3-3546-446e-94a9-458ae12a70e8",
+			"@@@InProc at 0DA278D1FB25CC79B4B34AE8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249219700, false, "e69acd1e-fc20-4785-a22e-029295600151",
+			"@@@InProc at 0DA278D1FB25CC79B4B34AE8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249220720, false, "dab67860-cda7-4462-ab2a-4aaa4367d24f",
+			"@@@InProc at 205EFFDB128A40D6862428BA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249225230, false, "9c12d801-845d-4f80-8c25-6d0dee19737c",
+			"@@@InProc at 205EFFDB128A40D6862428BA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249226140, false, "7a1882a3-239a-426a-b230-8bc8787b23b6",
+			"@@@InProc at 86C636C72F2A2AC59E59F1BC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249230890, false, "b3148e20-4f82-40b4-8aeb-05b676cdb1cf",
+			"@@@InProc at 86C636C72F2A2AC59E59F1BC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249232110, false, "b1640aca-4f0e-42fc-82e8-cab5e30bba63",
+			"@@@InProc at 9ECC303F9C1C704331B3D131", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249235490, false, "9a370584-8cc4-417c-8629-1f62641f0230",
+			"@@@InProc at 9ECC303F9C1C704331B3D131", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249236750, false, "26880e63-2358-4dba-a7aa-89c09412df50",
+			"@@@InProc at 709F540A1553F1AB93BDAEF3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249241320, false, "4419b2b1-9190-4e4f-a974-92e71e84baa9",
+			"@@@InProc at 709F540A1553F1AB93BDAEF3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249242100, false, "69a2cdc2-38eb-4efa-bdbc-00dec4161ebf",
+			"@@@InProc at 86A5BA793380B29328B88EA1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249245320, false, "35cff489-1157-49ed-8e14-b6a71cd4c02f",
+			"@@@InProc at 86A5BA793380B29328B88EA1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249246550, false, "c2aa9405-096a-464a-b3c6-ec4226dc2d6d",
+			"@@@InProc at 571166827C61C62B61032284", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249252520, false, "80e93d77-877e-4c4b-98f2-f5ea59867c05",
+			"@@@InProc at 571166827C61C62B61032284", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249253750, false, "90e58b19-eeb5-4787-b97a-fc1a7c005380",
+			"@@@InProc at 724E26076FD62E26A994D664", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249255320, false, "29b8a494-14ee-4711-b186-913b7f78dd77",
+			"@@@InProc at 724E26076FD62E26A994D664", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249256140, false, "50142ab3-5d42-484e-8127-aaeb84fae9c7",
+			"@@@InProc at 1E7E91A6CCE12183121A0B7F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249263310, false, "fb8d4379-0481-46c6-ab44-058f9affb1d1",
+			"@@@InProc at 1E7E91A6CCE12183121A0B7F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249264130, false, "34155ac2-37be-4add-a41f-ecf2927da952",
+			"@@@InProc at 76186C45295D986C31908DB7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249265220, false, "151812eb-3f56-4704-b031-fb6f5cf5911f",
+			"@@@InProc at 76186C45295D986C31908DB7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249266300, false, "cdb608ad-2f85-4b15-a1bf-53ab5e144d9e",
+			"@@@InProc at 1E7CA32834BB6301F75B1FC0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249272760, false, "22d51d8a-462e-4e4e-b38a-f30408dc937d",
+			"@@@InProc at 1E7CA32834BB6301F75B1FC0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249273850, false, "1770547c-9c89-4bb3-af34-5c19e2781997",
+			"@@@InProc at 5D377A80C95EFF46537230C1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249275820, false, "65031c0d-3447-4acb-9447-0a48087d62a5",
+			"@@@InProc at 5D377A80C95EFF46537230C1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249276890, false, "9a8d2a6b-7fb5-45ed-aeaf-a8a52519cc00",
+			"@@@InProc at ADA53BC2CA86E9F489B29E4F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249283520, false, "c54bf8ad-97e2-4828-ab8e-e5f5715b1c7c",
+			"@@@InProc at ADA53BC2CA86E9F489B29E4F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249285510, false, "65f7dcc7-5f19-4f50-9235-43cb6961223b",
+			"@@@InProc at 54A14094BB5FE206242B63AD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249289320, false, "7e8ddc3d-2e8d-4c4c-bd00-ef4c90598aac",
+			"@@@InProc at 54A14094BB5FE206242B63AD", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249290500, false, "0415220b-b515-49f8-b9f1-c70b489735aa",
+			"@@@InProc at 5B515E81FEA32862D8733F09", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249294050, false, "c2a23bbd-341e-4675-8c81-3b9414aa6b7c",
+			"@@@InProc at 5B515E81FEA32862D8733F09", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249294930, false, "9f57a244-6fb8-48b1-8f36-72901666c84e",
+			"@@@InProc at 949CD1D7CAC823B63005D633", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249299100, false, "8616d81a-c331-4e32-b8cd-425598238e7e",
+			"@@@InProc at 949CD1D7CAC823B63005D633", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249300070, false, "7660c000-b30d-4a2e-bc59-c4157fc2b34d",
+			"@@@InProc at 34BCD8B7B99C5B87C74522E6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249302470, false, "bf01a827-6a96-47cc-91dc-f5d901fc2292",
+			"@@@InProc at 34BCD8B7B99C5B87C74522E6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249303300, false, "6e17aee3-98c9-4931-9e77-7528eb2c0215",
+			"@@@InProc at 6A8C82BBDE81F58C2D938E37", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249308250, false, "edeab2d2-b11c-4b60-ad39-cf5be158c9d1",
+			"@@@InProc at 6A8C82BBDE81F58C2D938E37", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249309100, false, "38729516-75bb-4b51-9c30-6457045ac25c",
+			"@@@InProc at 978B4534F1FA3EA54D9EBBC3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249311560, false, "99b54e35-c2e2-41e1-8acd-f6a48851e1ad",
+			"@@@InProc at 978B4534F1FA3EA54D9EBBC3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249312920, false, "1eeea609-6ba7-40a0-94b0-060f673f5029",
+			"@@@InProc at A2CB39AF88846B908E6F40D5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249317520, false, "53c96180-cc80-4a64-baef-d879f591f133",
+			"@@@InProc at A2CB39AF88846B908E6F40D5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249318600, false, "26df11bf-91b1-47a5-8481-b0b240a74d97",
+			"@@@InProc at 5FCDD0063C6130A34A307CCF", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249321130, false, "91040b46-edc6-450c-9f65-b5f837ca4698",
+			"@@@InProc at 5FCDD0063C6130A34A307CCF", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249321970, false, "523920d2-e3a7-4e39-88b3-1357f5c7724e",
+			"@@@InProc at B9BF84ECB7835731FA6730B6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249327980, false, "2f1ef841-838e-423b-9700-0b77c06405d6",
+			"@@@InProc at B9BF84ECB7835731FA6730B6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249328900, false, "34aaa7a2-69b5-4bec-a2eb-ed0f01fedb54",
+			"@@@InProc at 0B11F51B0EE0B536051767D7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249330460, false, "fa474007-8c3c-4df9-970d-33a0afb4a18f",
+			"@@@InProc at 0B11F51B0EE0B536051767D7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249331240, false, "69ed15aa-a961-4c57-aa55-7f0e9b93919b",
+			"@@@InProc at 352A268D5363FE0CBF7F745D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249338560, false, "99ba96c7-e144-4538-9fca-8284479266be",
+			"@@@InProc at 352A268D5363FE0CBF7F745D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249339610, false, "112ce54e-79ee-4fd0-8406-f3b4aaeab082",
+			"@@@InProc at 5D4163D4E8034579669BA090", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249341190, false, "db3b5631-a324-4e30-a5db-bec928af3af0",
+			"@@@InProc at 5D4163D4E8034579669BA090", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249341980, false, "c2e144b3-e716-42e5-9346-6becad9091f2",
+			"@@@InProc at 3C8ADE59825916DA9B828603", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249348080, false, "96039d94-6fc0-48c7-8406-484a4cc970d7",
+			"@@@InProc at 3C8ADE59825916DA9B828603", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249349290, false, "c948f3eb-7157-42d9-b5b3-f1f0ab24bc43",
+			"@@@InProc at 9DFC1A627D2288EC7311F076", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249350860, false, "145c0cb2-a50a-45ed-bbd0-13b3463bfd8c",
+			"@@@InProc at 9DFC1A627D2288EC7311F076", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249351670, false, "8b227e08-3c2f-48e3-a0ba-5ffc11af3098",
+			"@@@InProc at BA512F88D1E01DC05D0F4F78", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249357980, false, "633f16d5-c3c7-4a8f-ab22-3a95c6432642",
+			"@@@InProc at BA512F88D1E01DC05D0F4F78", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249359110, false, "a63aece9-3bb2-4853-b6c9-1da56ce3643a",
+			"@@@InProc at CA3A58815CEEB14285145C04", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249361500, false, "78cc4ce9-bbd0-4d84-aa67-42a920064313",
+			"@@@InProc at CA3A58815CEEB14285145C04", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249362700, false, "17330dbc-66a0-4ebb-bc6c-9d84d2c75356",
+			"@@@InProc at 56E879F9BD83303044D8E4A7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249367330, false, "5a8bdcdf-341c-458a-8871-9a042e181750",
+			"@@@InProc at 56E879F9BD83303044D8E4A7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249368270, false, "dd532a21-25e0-4fa4-8ac2-64a2ee8ea673",
+			"@@@InProc at ED275F05B682C581BEDCEF48", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249373350, false, "b2be20ce-bf8d-46b8-9152-6cec5ad0c3e8",
+			"@@@InProc at ED275F05B682C581BEDCEF48", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249374570, false, "76153bb9-d0f1-4cb9-b44a-6c2d5de08e20",
+			"@@@InProc at 983105960EC208344909F42A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249377260, false, "ad7395ee-8537-4b77-9bda-505cb3f18664",
+			"@@@InProc at 983105960EC208344909F42A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249378750, false, "f6160a84-3a50-4066-9be0-f962db3b2fd0",
+			"@@@InProc at 226EBD7C898439758166DC03", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249385170, false, "e07b183b-0e4e-4530-a3bb-a88edd8b62f9",
+			"@@@InProc at 226EBD7C898439758166DC03", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249386430, false, "60a6a841-2034-4705-8201-c73346f918e1",
+			"@@@InProc at A6B3A99123FA513070947F72", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249386550, false, "8fc90cff-e521-481b-a299-cdcc26eb6aac",
+			"@@@InProc at A6B3A99123FA513070947F72", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249388110, false, "188e9a4f-c8b0-4ee5-aab4-530b8b27bc1c",
+			"@@@InProc at BDE63ABE5FD6A166130B2F24", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249395490, false, "71ea27d8-2196-4d93-b94b-742fa0a6979c",
+			"@@@InProc at DA3C24B0A9A324468B80F33F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249396490, false, "01358d6f-7d6e-4ef5-9ad3-5919b77dea0d",
+			"@@@InProc at BDE63ABE5FD6A166130B2F24", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249396580, false, "3ca83258-db9e-4b1c-8b16-458d1c6f56ab",
+			"@@@InProc at DA3C24B0A9A324468B80F33F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249398000, false, "f17789b7-da20-41a6-adf3-2e794bb84e11",
+			"@@@InProc at 25812D523830C68529342647", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249404870, false, "49d7146f-1343-4c6d-bab6-1718b392cf3d",
+			"@@@InProc at 25812D523830C68529342647", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249405670, false, "7d4b500f-8307-4862-980f-56539e6a0a8a",
+			"@@@InProc at 1CDA2E6DFB8125485E7A5E6F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249406450, false, "f321aa47-aa92-439e-961d-03ffe9c2fbcf",
+			"@@@InProc at 1CDA2E6DFB8125485E7A5E6F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249407270, false, "c0d51be6-d985-4ff4-b5d5-89fa1e19d1b7",
+			"@@@InProc at CB79D6604219205F7C89293A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249413740, false, "d99d706f-449c-4fe0-bd49-c973a22c1bf4",
+			"@@@InProc at CB79D6604219205F7C89293A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249414580, false, "5ddc4ad4-773b-40dd-86bb-07c854695e7c",
+			"@@@InProc at C36CAC3CBAF0969CEE9F3A85", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249416010, false, "607294a4-a749-483c-abf2-efa794686628",
+			"@@@InProc at C36CAC3CBAF0969CEE9F3A85", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249417120, false, "41efc0fe-e279-4b51-93a8-228792ea8309",
+			"@@@InProc at 4FEDDD5272ADB557A77CC30F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249422520, false, "9ae4a18b-211a-4744-880c-cde3875cf911",
+			"@@@InProc at 4FEDDD5272ADB557A77CC30F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249423560, false, "73fc8c94-3c71-44c1-95d8-fb775b50495f",
+			"@@@InProc at 2913125073875A2B20F7C899", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249424950, false, "9f571a5f-d5ab-4952-840f-72025fa8d2bd",
+			"@@@InProc at 2913125073875A2B20F7C899", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249425740, false, "0ad1cc29-d999-4a7e-acd8-b3cefa209324",
+			"@@@InProc at 93F4522E079F6B9A8C9D1AAE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249431550, false, "fb78b3a6-8150-4225-9f49-1a721ff48b72",
+			"@@@InProc at 93F4522E079F6B9A8C9D1AAE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249432450, false, "e3d9b485-e1d7-4b34-8baa-e22848ccb25e",
+			"@@@InProc at 9C68D6CC3B1B8BEE95872718", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249433330, false, "e3330143-3ed8-4a32-9b4e-f9f82f184c66",
+			"@@@InProc at 9C68D6CC3B1B8BEE95872718", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249434110, false, "53b29ee3-98d6-4f34-98bb-bad64d1557c0",
+			"@@@InProc at FA3FFA9C6BCC2CCDC357EE0C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249440220, false, "58b33e73-65e8-4db4-af5a-d439e84d423a",
+			"@@@InProc at FA3FFA9C6BCC2CCDC357EE0C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249441120, false, "b9d4f567-4867-49e6-a19e-867f365a8a78",
+			"@@@InProc at 5C78975CB5BEF9C238AD0619", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249442010, false, "be56cf93-94dd-4a0b-8524-038d05af81b4",
+			"@@@InProc at 5C78975CB5BEF9C238AD0619", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249442790, false, "ff08396f-9cdc-46b7-b8c7-384c4c344542",
+			"@@@InProc at 040B8FB155632F8E8E0064CE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249450850, false, "2e92bf6c-d29a-4276-8261-3959ce3bf19e",
+			"@@@InProc at 040B8FB155632F8E8E0064CE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249453020, false, "0db7c1f7-d37b-4ae7-99df-9fe7df48f663",
+			"@@@InProc at 512C0E4C766DF146CBF6AD15", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249454400, false, "630cf59b-b942-4ebf-8e92-2badae4bbfb2",
+			"@@@InProc at 512C0E4C766DF146CBF6AD15", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249456680, false, "3f9bfddd-f4dd-4654-b6fe-3465e627f576",
+			"@@@InProc at D0961A23134DD4F219F19385", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249461840, false, "cb28ac35-d766-441a-bbc5-0dbfa0975263",
+			"@@@InProc at D0961A23134DD4F219F19385", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249462660, false, "c58da6cc-0b66-4c2f-a91e-ffca3c8fbfe4",
+			"@@@InProc at EFB734AF00B9823A770D055A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249466400, false, "1b4b2f53-1fc1-4f67-a725-19b0f8b6158b",
+			"@@@InProc at EFB734AF00B9823A770D055A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249468280, false, "f7a92f73-e583-4c41-aaf2-6c6a8f2d9320",
+			"@@@InProc at 59725BB53972B7AC4DF89FB2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249472430, false, "4d1b008a-b8d8-4584-848c-852d0d99ffad",
+			"@@@InProc at 59725BB53972B7AC4DF89FB2", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249474410, false, "cb37b2cb-f157-42d8-9ea8-39ade2ec563b",
+			"@@@InProc at 494EAE119060CDEA86810E4F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249477780, false, "b82f5fff-85c2-468b-9f84-b94105b6effb",
+			"@@@InProc at 494EAE119060CDEA86810E4F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249478830, false, "901c0c8f-95c9-439b-a85b-dca8811c579f",
+			"@@@InProc at 65D6D012D89A1C454B07BAC0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249484210, false, "f9d57069-0367-4252-936b-dfc31bea3bde",
+			"@@@InProc at 65D6D012D89A1C454B07BAC0", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249486080, false, "f98a32fa-605b-4735-ad7f-4eb703af6a95",
+			"@@@InProc at BFCEAEEE2B4B979A78CCF2B8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249491200, false, "deffb2f9-8a4f-4586-b2f9-b582d91937e8",
+			"@@@InProc at BFCEAEEE2B4B979A78CCF2B8", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249492280, false, "57141e47-7234-4bf1-8604-512c8f3f5793",
+			"@@@InProc at EF2A2271C66E58D156F39D5F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249497080, false, "0964f7cc-b94d-47ef-b47f-8e6e5b8f577e",
+			"@@@InProc at EF2A2271C66E58D156F39D5F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249498280, false, "2b99dc01-aecb-4e13-89a1-6f2bc96b9118",
+			"@@@InProc at 8FADF1714525250E66E52A03", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249500840, false, "c0d6b05c-e743-42cb-af08-93e509ab8f46",
+			"@@@InProc at 8FADF1714525250E66E52A03", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249501910, false, "21394954-24bd-4ab2-8cab-62ada417da03",
+			"@@@InProc at 00831F5E381E5214C4AE3387", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249507600, false, "9d4d7f17-bd9b-4a29-8169-0f368663f448",
+			"@@@InProc at 00831F5E381E5214C4AE3387", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249508700, false, "c3f5cfe9-f296-481b-aefa-ab2a2f450b89",
+			"@@@InProc at 2E5F474A5CD854681CB1C1E9", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249510270, false, "906fb5d8-9c0a-4260-9804-8ebdddd82b96",
+			"@@@InProc at 2E5F474A5CD854681CB1C1E9", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249511270, false, "a369b77a-a184-49e5-bdb7-ac6278cb0eb2",
+			"@@@InProc at 7F0020D8DA4E9163AD3FD56F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249517980, false, "891f3be1-ad53-4490-9ec9-bd84c49e8f2c",
+			"@@@InProc at 7F0020D8DA4E9163AD3FD56F", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249518990, false, "b3a3016d-428c-4d97-a4d5-6cdb858dbd61",
+			"@@@InProc at AE08DDD4F1B80F71D4C5BD05", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249520600, false, "de69ba6d-4a3e-4f28-bedb-8580b1ecf109",
+			"@@@InProc at AE08DDD4F1B80F71D4C5BD05", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249521430, false, "ed9985e0-006e-4bb5-bd22-80dc6f7a9f00",
+			"@@@InProc at 920A965700E86C073B5AA6EB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249529120, false, "1b4acd7e-e7a0-4a13-94f8-a6ee32c65288",
+			"@@@InProc at BC7F88DC859772235B4B90C9", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249529230, false, "4dffdfbf-1a7a-4c25-835a-6af87868743a",
+			"@@@InProc at 920A965700E86C073B5AA6EB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249531310, false, "267688b8-8d9c-4289-b2a2-168623ce1c04",
+			"@@@InProc at BC7F88DC859772235B4B90C9", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249531380, false, "70d3f56a-a5ee-42bc-ba6b-76e81efcd597",
+			"@@@InProc at 9237581355E8E80EB3C7DF83", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249540040, false, "d8bee492-2be0-415f-ab04-d3314776c02e",
+			"@@@InProc at 60EA3DA2BEF57729C695A3BC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249541090, false, "9fbffdec-9fc5-481a-a9b3-0d2771b12850",
+			"@@@InProc at 9237581355E8E80EB3C7DF83", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249541170, false, "3f946e3f-ca0b-4300-b4b0-90738ba3f897",
+			"@@@InProc at 60EA3DA2BEF57729C695A3BC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249543100, false, "bdf8d9f6-d082-49fa-afd9-ef150ba188c9",
+			"@@@InProc at A6B791DBCFBDF57DBDE5E614", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249550920, false, "dc87969a-4acb-4c0f-9abd-04fc87ee5f16",
+			"@@@InProc at 9B89926D2F35696B0EEC7850", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249552440, false, "14d7e924-a09f-4b29-8f10-180e97668c0f",
+			"@@@InProc at A6B791DBCFBDF57DBDE5E614", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249552560, false, "a7c0b3e9-b71d-4dd6-9498-50601dbfac53",
+			"@@@InProc at 9B89926D2F35696B0EEC7850", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249554210, false, "7ba7fe5c-45a8-442e-a7ff-d5986c8cf33f",
+			"@@@InProc at 420D614E523290684D5E63B5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249561640, false, "84277f7e-6f6b-4edd-9f95-38f24c2d830e",
+			"@@@InProc at 5EBA231C59F01683A69DFD2D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249562720, false, "83d775c5-f39f-434e-b047-2fa51c8b95ee",
+			"@@@InProc at 420D614E523290684D5E63B5", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249562810, false, "f64547b4-94ab-4697-987e-b2a2998cc83b",
+			"@@@InProc at 5EBA231C59F01683A69DFD2D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249564950, false, "6d29be75-5ec3-4bfc-be5e-e24f4f9e6787",
+			"@@@InProc at D73FC309EDEE672161306410", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249571960, false, "53801f12-70f3-4785-8e92-142f790fa6b9",
+			"@@@InProc at D73FC309EDEE672161306410", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249572770, false, "749d06a7-228c-42c8-9e37-521ad99b34e6",
+			"@@@InProc at DE6F8E33185424C24C9F58EB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249573600, false, "3da2dc39-65b0-4eea-89c6-bd40e87e9116",
+			"@@@InProc at DE6F8E33185424C24C9F58EB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249574410, false, "39c19107-7427-46ec-9615-6b9d36640382",
+			"@@@InProc at 55E2D73A8BE811555DC2A537", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249581800, false, "870b9b7e-7909-4508-8885-48384af40832",
+			"@@@InProc at 55E2D73A8BE811555DC2A537", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249582990, false, "3a206975-4239-4e0f-8dbd-aacda3b85537",
+			"@@@InProc at B3A40C9205264FCD851DF70D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249584130, false, "9ff9b379-39ed-425c-83d7-e31b607d28c8",
+			"@@@InProc at B3A40C9205264FCD851DF70D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249585290, false, "e57c4141-0e08-4e03-8c5a-158637108492",
+			"@@@InProc at 027C7315B3732BC30F2739CE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249592610, false, "c0b304b5-bd80-401e-a916-7d138c45a25c",
+			"@@@InProc at 027C7315B3732BC30F2739CE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249594370, false, "86e24931-9606-4762-9db9-2ac3bc7c0ce8",
+			"@@@InProc at F11E17B652BBF2E86AD5A08A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249597060, false, "041c3c06-b7c5-42f8-80a0-dfac161a22a6",
+			"@@@InProc at F11E17B652BBF2E86AD5A08A", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249598690, false, "852374f7-d8a7-4ce5-ae13-a4c26360ec0c",
+			"@@@InProc at FCF1ED064D6067508CD444FA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249637280, false, "71c25d70-7c2f-4f36-a9e4-446afaac9dc7",
+			"@@@InProc at FCF1ED064D6067508CD444FA", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249638190, false, "377b50b4-f71b-4221-b4b0-03047839d633",
+			"@@@InProc at 5BBA100D4225E63B10DB3EDB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249642270, false, "5bd82d22-02ef-4edf-b74d-6a0a2d013fcc",
+			"@@@InProc at 5BBA100D4225E63B10DB3EDB", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249643310, false, "d8d451e5-216b-48b9-8fae-bba0330d0153",
+			"@@@InProc at AA6422163AE8D43943F1F579", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249648060, false, "b12e6d42-5bf3-4517-9b8c-a6dd01b0e74b",
+			"@@@InProc at AA6422163AE8D43943F1F579", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249649180, false, "5709fdec-3a42-498a-82c6-791dfd864db4",
+			"@@@InProc at 031EF1F5165E05C8604133F1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249651820, false, "05bd495f-4f4f-4978-8ed2-9703adf0436d",
+			"@@@InProc at 031EF1F5165E05C8604133F1", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249652860, false, "972d3df8-858f-4861-8972-8dd348180750",
+			"@@@InProc at B48AE7125C73801981E1DFB7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249660330, false, "4983da28-96e3-4ff9-af3c-4c30d19b4415",
+			"@@@InProc at E7EAF2ABCE66971F870E2152", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249661520, false, "e8693d44-7dea-49d2-b566-4dea75e7ad3d",
+			"@@@InProc at B48AE7125C73801981E1DFB7", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249661750, false, "a50d7bf6-19cc-4838-be4b-6e5209d0f491",
+			"@@@InProc at E7EAF2ABCE66971F870E2152", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249663700, false, "0a3aedbd-ca0e-44f8-94ec-7d686e806ec4",
+			"@@@InProc at 4529ED6724B4E33B981DAB31", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249672100, false, "152237d8-6190-4984-bbcc-b2ea8f10d028",
+			"@@@InProc at 4529ED6724B4E33B981DAB31", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249672920, false, "2f9210be-a61d-4c21-b6f6-df1a94b6a221",
+			"@@@InProc at 71F03B7CE204F1D724884723", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249673180, false, "1c3b0924-7e5a-4606-acb1-045f3a936fb2",
+			"@@@InProc at 71F03B7CE204F1D724884723", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249674480, false, "7f59504e-4fb7-4826-a1b8-55268b3a7554",
+			"@@@InProc at 109FDC092DBF5AA0B2A7DEF3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249681160, false, "7427deeb-c091-4fbf-9d2b-9c6b5b783e58",
+			"@@@InProc at 109FDC092DBF5AA0B2A7DEF3", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249682290, false, "d2f0b66a-4f80-47bc-8a1c-8592eba09742",
+			"@@@InProc at EA631594DB73A31A6D9C7714", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249684010, false, "ee3916ff-2155-44c7-8770-c44ea47fbb6a",
+			"@@@InProc at EA631594DB73A31A6D9C7714", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249685090, false, "1dd24430-75c5-4e65-b217-cddeebf7ba8c",
+			"@@@InProc at 6ABA0147ED922AEB9517132B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249690650, false, "1a673964-377f-4fc3-99a0-5720ab08a603",
+			"@@@InProc at 6ABA0147ED922AEB9517132B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249691730, false, "14140a27-1d08-4ee0-9605-5b21fff96bfe",
+			"@@@InProc at 6262D5DA695FB30CDFC6D301", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249694290, false, "f3b154da-108e-417c-8edc-898e82c1f2ce",
+			"@@@InProc at 6262D5DA695FB30CDFC6D301", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249695150, false, "d7af3469-066c-403e-b9b5-e2d31cc9bcc9",
+			"@@@InProc at 3E4890D300B107F9ECD3FBA6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249700290, false, "c8d9a297-bc88-4016-9f3f-001b7d26cb69",
+			"@@@InProc at 3E4890D300B107F9ECD3FBA6", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249701200, false, "9097fda3-b2b5-4038-a1b1-71d4a1eb8557",
+			"@@@InProc at F1401B19AF17FE2E55641C69", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249702760, false, "ce10b439-0a55-44e9-bbd3-ff9178e33e44",
+			"@@@InProc at F1401B19AF17FE2E55641C69", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249703570, false, "35586e42-b824-4e0d-9f45-724514b64707",
+			"@@@InProc at 2E156909B0401C5BB24AF87D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249708820, false, "b4500f14-8134-443f-82a1-3e65170313a8",
+			"@@@InProc at 2E156909B0401C5BB24AF87D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249709760, false, "0086fd1d-6b8c-4266-afb8-0b54e741842d",
+			"@@@InProc at 5A1909A074C21C13A7BFBCCC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249711320, false, "a7d18648-383b-48d5-82ba-4ad347721480",
+			"@@@InProc at 5A1909A074C21C13A7BFBCCC", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249712130, false, "54e5e7ad-cdf0-4277-b98e-8c4ff520003f",
+			"@@@InProc at 0181C2B96B24D2E20C0D8EEE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249717690, false, "f8aee5fb-167b-475f-9a33-07b12d48f36b",
+			"@@@InProc at 0181C2B96B24D2E20C0D8EEE", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249718670, false, "fd154af1-1c45-40ce-9f5e-c86f1c03269f",
+			"@@@InProc at F84B232730DEF29C0E477E57", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249720380, false, "43785ad0-4b9b-4dbe-8f53-0ad0fd175c5b",
+			"@@@InProc at F84B232730DEF29C0E477E57", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249721200, false, "20d8346c-e7b8-4c32-9221-9123ba5fe220",
+			"@@@InProc at 10DC21BFDF543E4D4E53BE18", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249726890, false, "41fce565-af53-4630-b857-4617dfea87aa",
+			"@@@InProc at 10DC21BFDF543E4D4E53BE18", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249727840, false, "f3f7bfde-4efc-4d8b-bef3-10625235eaa1",
+			"@@@InProc at 96D0A9A8E6551D8C43AB5472", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249729410, false, "ab07f755-cded-4645-a669-d6851b210f47",
+			"@@@InProc at 96D0A9A8E6551D8C43AB5472", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249730190, false, "ebfdaa38-1fb0-474f-9589-a61473ec4f68",
+			"@@@InProc at 40F1D1E1FFE41F4EC3CCEA99", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249735280, false, "d145eaca-1e6e-4afa-b943-d2a7d8367b4b",
+			"@@@InProc at 40F1D1E1FFE41F4EC3CCEA99", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249736060, false, "da6ce100-69fb-4932-8688-bcf2ac9ff5ff",
+			"@@@InProc at A82A10A958B6054B90BB1F56", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249737610, false, "4e8c56a9-e439-47f3-a3e2-4f02cfc7a4ee",
+			"@@@InProc at A82A10A958B6054B90BB1F56", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249738380, false, "43663128-3a42-4058-97e7-a2c7793f44e2",
+			"@@@InProc at 94077A5F866F9F66B815353C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249743890, false, "cd54ce4c-ba2d-4d67-bff1-483b68c0565e",
+			"@@@InProc at 94077A5F866F9F66B815353C", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249744890, false, "0d8202d4-554d-4426-b085-2dbaf91b885c",
+			"@@@InProc at 11DBB8C6D69962E184A8718B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249746710, false, "c3e63362-801d-493c-ba6f-dcfc2bc21633",
+			"@@@InProc at 11DBB8C6D69962E184A8718B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249747520, false, "6dfe62af-d8bf-4baa-b5fd-0ccfefeebb90",
+			"@@@InProc at 345FD557FDF6B69D287EDA74", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249753990, false, "630f4ad8-e28e-4967-a926-1117cbeb0efb",
+			"@@@InProc at 345FD557FDF6B69D287EDA74", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249754810, false, "c579e2be-c44b-499c-becd-d64f0e301c7b",
+			"@@@InProc at 0086F7745CD564699F524EAF", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249755660, false, "04fe8acb-ce54-4e25-819b-20adb16675a8",
+			"@@@InProc at 0086F7745CD564699F524EAF", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249756590, false, "8a9afa92-f2e0-4a54-8f5a-a217b02be56d",
+			"@@@InProc at AD85BF7BB0980937BDC8BA50", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249762900, false, "603f09f7-c463-4baf-9894-4ea84607471a",
+			"@@@InProc at AD85BF7BB0980937BDC8BA50", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249763790, false, "3720dc75-07b1-4be3-811b-1c8ea8e9de0e",
+			"@@@InProc at 0E94DD9E6CC37F97208E200D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249764600, false, "a53f4123-5827-410e-895e-e5de5b9a9180",
+			"@@@InProc at 0E94DD9E6CC37F97208E200D", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249765440, false, "fe1d2065-d81a-4a48-aebb-7e8bdfd76548",
+			"@@@InProc at C499B735AE74FE5B26CDD62B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249771550, false, "ab695aa1-9c5e-4863-8172-5a9f925636b7",
+			"@@@InProc at C499B735AE74FE5B26CDD62B", "11/18/2010 2:37:04 PM", "00:01:00", CacheItemPriority.AboveNormal, "11/18/2010 2:36:04 PM", 634256878249772480, false, "e0a5ed3d-900b-4d0f-95ac-58d559a25dbc",
+		};
 
-			Assert.AreEqual (0, queue.Count, "Queue size after sequence");
+		 string[] tests_00005 = {
+			"0;1;0;f;f;f;0;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1;2;0;f;f;f;1;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1;2;2;f;f;t;0;e4cfd28d-a5b9-47f0-96b9-82525fe6643a",
+			"0;2;2;f;f;t;0;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2;3;0;f;f;f;2;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3;4;0;f;f;f;3;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4;5;0;f;f;f;4;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5;6;0;f;f;f;5;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4;6;2;f;f;t;0;f8b5a842-1cdd-4bf9-b320-b5cc9805357b",
+			"5;6;2;f;f;t;0;e8af11c1-cc34-432d-9731-5268f94ece3e",
+			"6;7;0;f;f;f;6;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7;8;0;f;f;f;7;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8;9;0;f;f;f;8;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8;9;2;f;f;t;0;22bc860d-6c95-4a8e-b97c-694c167b742a",
+			"9;10;0;f;f;f;9;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"10;11;0;f;f;f;10;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"10;11;2;f;f;t;0;3e05cf61-ebaa-4f3d-9d5e-d7070e360931",
+			"11;12;0;f;f;f;11;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"12;13;0;f;f;f;12;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"12;13;2;f;f;t;0;1c0a0f88-1426-471f-a4c8-918f12eb092e",
+			"13;14;0;f;f;f;13;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"14;15;0;f;f;f;14;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"14;15;2;f;f;t;0;69e6d3ca-9aa7-4367-b914-1ead42bfb4b9",
+			"15;16;0;f;f;f;15;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"16;17;0;f;f;f;16;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"17;18;0;f;f;f;17;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"16;18;2;f;f;t;0;2c5e2dc3-5ffc-4a5c-9837-c16f644a8128",
+			"17;18;2;f;f;t;0;9b873675-51c1-414e-a3ed-6ca13fb81320",
+			"18;19;0;f;f;f;18;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"19;20;0;f;f;f;19;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"20;21;0;f;f;f;20;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"20;21;2;f;f;t;0;57866729-dc0f-4886-b750-e518ece74fbf",
+			"21;22;0;f;f;f;21;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"22;23;0;f;f;f;22;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"21;23;2;f;f;t;0;d5d02c82-2b69-40de-926b-2fab11cf92a6",
+			"23;24;0;f;f;f;23;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"24;25;0;f;f;f;24;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"24;25;2;f;f;t;0;676a0e40-75be-4f7c-a59d-3561c28fd154",
+			"25;26;0;f;f;f;25;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"26;27;0;f;f;f;26;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"27;28;0;f;f;f;27;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"26;28;2;f;f;t;0;54df1ca2-6cd1-44e8-ab1e-c51700fa2703",
+			"27;28;2;f;f;t;0;a89b1c93-60e7-41e7-b2b3-8ea4e64f9364",
+			"28;29;0;f;f;f;28;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"29;30;0;f;f;f;29;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"30;31;0;f;f;f;30;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"30;31;2;f;f;t;0;6f4359cb-9151-4365-9486-f75d06f94283",
+			"31;32;0;f;f;f;31;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"32;33;0;f;f;f;32;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"32;33;2;f;f;t;0;5f24e391-ffdf-471f-a76e-64b526700b20",
+			"33;34;0;f;f;f;33;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"34;35;0;f;f;f;34;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"34;35;2;f;f;t;0;edc08629-4948-407c-9a60-d76a7709997d",
+			"35;36;0;f;f;f;35;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"36;37;0;f;f;f;36;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"36;37;2;f;f;t;0;b109b9a6-f4e5-412d-a1ff-67c504b60f3e",
+			"37;38;0;f;f;f;37;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"38;39;0;f;f;f;38;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"38;39;2;f;f;t;0;e292f9fe-2a0d-4e8c-bbd0-bd0bfaf7fdcc",
+			"39;40;0;f;f;f;39;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"40;41;0;f;f;f;40;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"40;41;2;f;f;t;0;dc63060c-a8d4-4e8f-bcd3-8e74da84564c",
+			"41;42;0;f;f;f;41;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"42;43;0;f;f;f;42;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"42;43;2;f;f;t;0;13aab0f5-b0d5-4814-b591-641c7c0caed0",
+			"43;44;0;f;f;f;43;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"44;45;0;f;f;f;44;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"44;45;2;f;f;t;0;fe97fafa-dba3-4147-b550-072104f072a2",
+			"45;46;0;f;f;f;45;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"46;47;0;f;f;f;46;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"46;47;2;f;f;t;0;d4a5ae2b-3507-4010-8d8b-5385ec7f8852",
+			"47;48;0;f;f;f;47;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"48;49;0;f;f;f;48;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"48;49;2;f;f;t;0;1eef0ac8-b8a6-406d-abf9-ac3e8e34ddaa",
+			"49;50;0;f;f;f;49;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"50;51;0;f;f;f;50;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"50;51;2;f;f;t;0;179c1fc0-0fdf-4ab8-972d-caf9539f51ef",
+			"51;52;0;f;f;f;51;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"52;53;0;f;f;f;52;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"52;53;2;f;f;t;0;18db6d02-344b-4f08-b014-bdda50ac9938",
+			"53;54;0;f;f;f;53;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"54;55;0;f;f;f;54;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"54;55;2;f;f;t;0;48aab669-ffae-41d8-af7c-8b40b2275b9d",
+			"55;56;0;f;f;f;55;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"56;57;0;f;f;f;56;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"56;57;2;f;f;t;0;c592f9e5-5c9c-420d-a2c2-1203c5884600",
+			"57;58;0;f;f;f;57;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"58;59;0;f;f;f;58;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"58;59;2;f;f;t;0;48e048e6-303c-4171-aae7-38b6961ae227",
+			"59;60;0;f;f;f;59;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"60;61;0;f;f;f;60;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"60;61;2;f;f;t;0;65daa9ed-5830-4199-80bc-b2ee04e05f83",
+			"61;62;0;f;f;f;61;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"62;63;0;f;f;f;62;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"62;63;2;f;f;t;0;1291fa4f-1e5c-4f4f-ac87-a685467980cb",
+			"63;64;0;f;f;f;63;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"64;65;0;f;f;f;64;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"64;65;2;f;f;t;0;8df60bdb-071f-44c0-98bb-26598cb2e032",
+			"65;66;0;f;f;f;65;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"66;67;0;f;f;f;66;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"66;67;2;f;f;t;0;ffc714de-e2b7-4664-b98a-55f4cfba70eb",
+			"67;68;0;f;f;f;67;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"68;69;0;f;f;f;68;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"68;69;2;f;f;t;0;20c64a3e-3efe-47e1-9de1-cbb851e23e09",
+			"69;70;0;f;f;f;69;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"70;71;0;f;f;f;70;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"70;71;2;f;f;t;0;637d2187-68b4-473c-abbb-c4611ea4005f",
+			"71;72;0;f;f;f;71;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"72;73;0;f;f;f;72;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"72;73;2;f;f;t;0;9b31672d-5536-4a81-a616-e3954cdc6833",
+			"73;74;0;f;f;f;73;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"74;75;0;f;f;f;74;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"74;75;2;f;f;t;0;67826e76-e2bb-41c3-927f-8829e81ed8c7",
+			"75;76;0;f;f;f;75;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"76;77;0;f;f;f;76;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"76;77;2;f;f;t;0;4b059aac-0959-42dd-900e-8d7921b4f8e1",
+			"77;78;0;f;f;f;77;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"78;79;0;f;f;f;78;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"78;79;2;f;f;t;0;a7958417-65d3-4c43-9c74-8920a29d49cf",
+			"79;80;0;f;f;f;79;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"80;81;0;f;f;f;80;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"80;81;2;f;f;t;0;a1476d09-5891-450d-95b3-513bc0a9ab9d",
+			"81;82;0;f;f;f;81;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"82;83;0;f;f;f;82;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"82;83;2;f;f;t;0;fb95fd22-23b4-429d-8b1a-b31eed6be2a5",
+			"83;84;0;f;f;f;83;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"84;85;0;f;f;f;84;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"84;85;2;f;f;t;0;9e5422c5-659e-4538-91da-57ee2bbcebd5",
+			"85;86;0;f;f;f;85;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"86;87;0;f;f;f;86;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"86;87;2;f;f;t;0;59fcaa72-9968-4b34-8d5c-a2251cd21a27",
+			"87;88;0;f;f;f;87;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"88;89;0;f;f;f;88;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"88;89;2;f;f;t;0;eb2db33d-937b-4c20-8a9a-ddb2e219b9b4",
+			"89;90;0;f;f;f;89;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"90;91;0;f;f;f;90;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"90;91;2;f;f;t;0;330988be-9f4e-4f4f-8264-b465d05fedca",
+			"91;92;0;f;f;f;91;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"92;93;0;f;f;f;92;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"92;93;2;f;f;t;0;c3b04e2a-9e9b-482f-9ebc-b3f2a04ad20a",
+			"93;94;0;f;f;f;93;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"94;95;0;f;f;f;94;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"94;95;2;f;f;t;0;df0e19dc-bcd2-4fd4-ab15-fb7bffabc4fd",
+			"95;96;0;f;f;f;95;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"96;97;0;f;f;f;96;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"96;97;2;f;f;t;0;28da0b6f-0575-4f51-80a4-08cffb0b10a1",
+			"97;98;0;f;f;f;97;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"98;99;0;f;f;f;98;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"98;99;2;f;f;t;0;c6a2d740-6852-4377-bd89-7d8a19964778",
+			"99;100;0;f;f;f;99;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"100;101;0;f;f;f;100;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"100;101;2;f;f;t;0;15e607d4-cc6d-4d69-9232-bd6f4d4849b7",
+			"101;102;0;f;f;f;101;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"102;103;0;f;f;f;102;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"102;103;2;f;f;t;0;0a1c10c6-a55d-4ce8-b9bd-baa31f9a63ed",
+			"103;104;0;f;f;f;103;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"104;105;0;f;f;f;104;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"104;105;2;f;f;t;0;569d55d6-da87-44c7-82fb-4471e5c88b6d",
+			"105;106;0;f;f;f;105;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"106;107;0;f;f;f;106;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"106;107;2;f;f;t;0;a7203713-22b8-4711-8c0f-e2a0ab9e928e",
+			"107;108;0;f;f;f;107;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"108;109;0;f;f;f;108;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"108;109;2;f;f;t;0;017f43a1-0aaa-49a8-a401-14959c690256",
+			"109;110;0;f;f;f;109;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"110;111;0;f;f;f;110;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"110;111;2;f;f;t;0;670aace9-84c8-4852-b18b-e6c29ad54e86",
+			"111;112;0;f;f;f;111;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"112;113;0;f;f;f;112;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"112;113;2;f;f;t;0;96621690-38e5-47a8-91e7-a2115e3599de",
+			"113;114;0;f;f;f;113;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"114;115;0;f;f;f;114;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"114;115;2;f;f;t;0;a22aaeac-bae6-4e57-a827-173ba6b94f8a",
+			"115;116;0;f;f;f;115;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"116;117;0;f;f;f;116;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"116;117;2;f;f;t;0;7ae55f8c-fd53-49f2-863a-d51ec8630af5",
+			"117;118;0;f;f;f;117;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"118;119;0;f;f;f;118;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"118;119;2;f;f;t;0;ec4d3bba-722c-40b7-b0fb-dcad8d2229ff",
+			"119;120;0;f;f;f;119;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"120;121;0;f;f;f;120;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"120;121;2;f;f;t;0;cf388741-622b-4422-b333-a0101f819e35",
+			"121;122;0;f;f;f;121;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"122;123;0;f;f;f;122;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"122;123;2;f;f;t;0;221d8f2c-2d74-4675-ba35-62e1eb5fa510",
+			"123;124;0;f;f;f;123;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"124;125;0;f;f;f;124;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"124;125;2;f;f;t;0;a5cfcf50-6b09-453d-bdee-d13023a701f1",
+			"125;126;0;f;f;f;125;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"126;127;0;f;f;f;126;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"126;127;2;f;f;t;0;52fbcd7f-afa0-42ae-95e8-49df34b3910f",
+			"127;128;0;f;f;f;127;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"128;129;0;f;f;f;128;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"128;129;2;f;f;t;0;f4d8cde0-d7b2-426b-a1e5-33ba3897f2e3",
+			"129;130;0;f;f;f;129;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"130;131;0;f;f;f;130;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"130;131;2;f;f;t;0;630ac214-921e-4c81-85bf-5ac1115448a5",
+			"131;132;0;f;f;f;131;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"132;133;0;f;f;f;132;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"132;133;2;f;f;t;0;bd12dfe4-b95a-4b8f-bb33-be8d61f83e5c",
+			"133;134;0;f;f;f;133;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"134;135;0;f;f;f;134;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"134;135;2;f;f;t;0;99e03b55-0df1-416c-890f-6b1674322f7c",
+			"135;136;0;f;f;f;135;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"136;137;0;f;f;f;136;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"136;137;2;f;f;t;0;cee8170f-48db-40c0-baf6-7e1bb3717517",
+			"137;138;0;f;f;f;137;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"138;139;0;f;f;f;138;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"137;139;2;f;f;t;0;ba4cdd7d-fe03-4619-bf8f-70afbe1127b8",
+			"139;140;0;f;f;f;139;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"140;141;0;f;f;f;140;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"140;141;2;f;f;t;0;0a001f9d-0f05-4c44-b279-6dee2dc6b821",
+			"141;142;0;f;f;f;141;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"142;143;0;f;f;f;142;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"142;143;2;f;f;t;0;cd0cf514-c6a3-4c27-97fa-c97324f9b11b",
+			"143;144;0;f;f;f;143;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"144;145;0;f;f;f;144;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"144;145;2;f;f;t;0;77ecf363-72f3-48dc-ba71-83489684d60d",
+			"145;146;0;f;f;f;145;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"146;147;0;f;f;f;146;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"146;147;2;f;f;t;0;e2d653e5-2368-4949-98c0-dd9e22a5a585",
+			"147;148;0;f;f;f;147;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"148;149;0;f;f;f;148;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"148;149;2;f;f;t;0;36f913ca-79f7-468d-85bd-1f9e57903df4",
+			"149;150;0;f;f;f;149;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"150;151;0;f;f;f;150;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"150;151;2;f;f;t;0;1684fc54-179c-4a88-8330-2c77a9fc2feb",
+			"151;152;0;f;f;f;151;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"152;153;0;f;f;f;152;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"152;153;2;f;f;t;0;1b2c263f-77b5-4c3d-b062-468833684788",
+			"153;154;0;f;f;f;153;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"154;155;0;f;f;f;154;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"154;155;2;f;f;t;0;7f89b92a-ea20-4d07-a249-8a9a081f0d2d",
+			"155;156;0;f;f;f;155;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"156;157;0;f;f;f;156;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"156;157;2;f;f;t;0;51da55ed-7581-4cad-a9c9-0e6d235eceea",
+			"157;158;0;f;f;f;157;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"158;159;0;f;f;f;158;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"158;159;2;f;f;t;0;798fb117-c00a-4115-bf01-36918ce65b36",
+			"159;160;0;f;f;f;159;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"160;161;0;f;f;f;160;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"160;161;2;f;f;t;0;88f5128c-36f5-453f-aea6-9d8c1f2d4c1d",
+			"161;162;0;f;f;f;161;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"162;163;0;f;f;f;162;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"162;163;2;f;f;t;0;987cd2f3-6a85-4a1a-a2ae-4b9abf1c5a44",
+			"163;164;0;f;f;f;163;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"164;165;0;f;f;f;164;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"164;165;2;f;f;t;0;602ad5b3-cad2-4df7-b16e-a03c40e07f3b",
+			"165;166;0;f;f;f;165;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"166;167;0;f;f;f;166;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"166;167;2;f;f;t;0;a9a98216-e1bf-4f04-b811-0e1e9087ea37",
+			"167;168;0;f;f;f;167;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"168;169;0;f;f;f;168;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"168;169;2;f;f;t;0;a4f4a535-16d8-4c67-9bff-405ebf7fcb51",
+			"169;170;0;f;f;f;169;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"170;171;0;f;f;f;170;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"170;171;2;f;f;t;0;8391eddd-f85a-4534-a652-dc8f6f77c85b",
+			"171;172;0;f;f;f;171;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"172;173;0;f;f;f;172;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"172;173;2;f;f;t;0;ba1592b1-aac0-4b8c-8a0d-f14636889eab",
+			"173;174;0;f;f;f;173;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"174;175;0;f;f;f;174;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"174;175;2;f;f;t;0;e11f8272-f017-4f82-b643-fc0c197f20ab",
+			"175;176;0;f;f;f;175;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"176;177;0;f;f;f;176;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"176;177;2;f;f;t;0;fa8da2d1-180b-4e66-b44e-4885833ca991",
+			"177;178;0;f;f;f;177;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"178;179;0;f;f;f;178;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"178;179;2;f;f;t;0;67a70156-4b5b-48ae-8a09-04db933cc1f6",
+			"179;180;0;f;f;f;179;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"180;181;0;f;f;f;180;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"180;181;2;f;f;t;0;e827dce7-9e74-4c4d-9e64-f657d71039b4",
+			"181;182;0;f;f;f;181;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"182;183;0;f;f;f;182;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"182;183;2;f;f;t;0;60ce7200-c390-41f5-b55b-fed766e2de19",
+			"183;184;0;f;f;f;183;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"184;185;0;f;f;f;184;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"184;185;2;f;f;t;0;1f245da8-3c2b-428f-a054-b6096a35bc99",
+			"185;186;0;f;f;f;185;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"186;187;0;f;f;f;186;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"186;187;2;f;f;t;0;04aaa402-83cf-41b2-a51c-e7e367614035",
+			"187;188;0;f;f;f;187;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"188;189;0;f;f;f;188;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"188;189;2;f;f;t;0;747d2ce7-efd0-478b-adce-50f3bcae0449",
+			"189;190;0;f;f;f;189;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"190;191;0;f;f;f;190;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"190;191;2;f;f;t;0;e09c5fe0-6a1f-4e0e-9bc4-4afbd2471e79",
+			"191;192;0;f;f;f;191;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"192;193;0;f;f;f;192;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"192;193;2;f;f;t;0;ce5f4b8f-23e6-4edd-ba21-fdc0ad374c0e",
+			"193;194;0;f;f;f;193;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"194;195;0;f;f;f;194;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"194;195;2;f;f;t;0;85e4c9fd-2cb2-4cef-8e2f-b0fd8ca30e86",
+			"195;196;0;f;f;f;195;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"196;197;0;f;f;f;196;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"196;197;2;f;f;t;0;069fbf08-e410-48c5-92a9-3116ea3bc9b0",
+			"197;198;0;f;f;f;197;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"198;199;0;f;f;f;198;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"198;199;2;f;f;t;0;6bf9b25b-046c-4fff-86ee-19f84718e4fd",
+			"199;200;0;f;f;f;199;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"200;201;0;f;f;f;200;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"200;201;2;f;f;t;0;b501f6a0-e685-4461-ae87-7ce950655840",
+			"201;202;0;f;f;f;201;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"202;203;0;f;f;f;202;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"202;203;2;f;f;t;0;fad090fb-f8d9-45a2-88cf-f87e6f54baf9",
+			"203;204;0;f;f;f;203;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"204;205;0;f;f;f;204;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"204;205;2;f;f;t;0;90051d21-32fe-4e52-9eab-7e1113ef3f82",
+			"205;206;0;f;f;f;205;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"206;207;0;f;f;f;206;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"206;207;2;f;f;t;0;1e5e9326-5afd-48ab-9089-df72009460ed",
+			"207;208;0;f;f;f;207;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"208;209;0;f;f;f;208;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"208;209;2;f;f;t;0;4cc075e6-5bc3-4e6c-a2d3-bcede5a86f68",
+			"209;210;0;f;f;f;209;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"210;211;0;f;f;f;210;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"210;211;2;f;f;t;0;095b03ca-37c6-49db-a08c-5996d0930255",
+			"211;212;0;f;f;f;211;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"212;213;0;f;f;f;212;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"212;213;2;f;f;t;0;2adf52c2-47bf-44ab-bd91-b82e3f3a143c",
+			"213;214;0;f;f;f;213;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"214;215;0;f;f;f;214;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"214;215;2;f;f;t;0;8b9bbb09-9317-4f29-9383-ce944c99c8df",
+			"215;216;0;f;f;f;215;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"216;217;0;f;f;f;216;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"216;217;2;f;f;t;0;44681b55-90e6-46d3-aed3-580bece11745",
+			"217;218;0;f;f;f;217;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"218;219;0;f;f;f;218;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"218;219;2;f;f;t;0;2c83ac5f-8fb4-4932-a50d-90b1b827d59e",
+			"219;220;0;f;f;f;219;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"220;221;0;f;f;f;220;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"220;221;2;f;f;t;0;eca5d58a-bb99-45aa-8ed2-f2460b70f7f7",
+			"221;222;0;f;f;f;221;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"222;223;0;f;f;f;222;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"222;223;2;f;f;t;0;adab4486-7bbb-4097-959a-1479d27242db",
+			"223;224;0;f;f;f;223;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"224;225;0;f;f;f;224;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"224;225;2;f;f;t;0;2eaacdf2-47a9-4249-92a0-b46e0ffcf6ee",
+			"225;226;0;f;f;f;225;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"226;227;0;f;f;f;226;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"226;227;2;f;f;t;0;7de52192-77e5-43f9-83be-6b69e3040ce9",
+			"227;228;0;f;f;f;227;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"228;229;0;f;f;f;228;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"228;229;2;f;f;t;0;4b267b31-5432-4320-a141-927b39d662d2",
+			"229;230;0;f;f;f;229;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"230;231;0;f;f;f;230;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"230;231;2;f;f;t;0;41ddae5f-d6da-4444-afc0-adcb17657aa5",
+			"231;232;0;f;f;f;231;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"232;233;0;f;f;f;232;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"232;233;2;f;f;t;0;16491431-ea5c-4310-8118-de567dc352b9",
+			"233;234;0;f;f;f;233;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"234;235;0;f;f;f;234;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"234;235;2;f;f;t;0;c5b490b3-f422-4a06-9941-03782497afab",
+			"235;236;0;f;f;f;235;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"236;237;0;f;f;f;236;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"236;237;2;f;f;t;0;3d9a0858-a94d-439a-bc83-de65d22cc254",
+			"237;238;0;f;f;f;237;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"238;239;0;f;f;f;238;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"238;239;2;f;f;t;0;d9c08fa1-a460-42c2-9601-927983861d80",
+			"239;240;0;f;f;f;239;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"240;241;0;f;f;f;240;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"240;241;2;f;f;t;0;7757cb47-88cf-40c6-80a7-f2f5980d1f86",
+			"241;242;0;f;f;f;241;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"242;243;0;f;f;f;242;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"242;243;2;f;f;t;0;93c551c3-a9af-4251-b6ea-a0f9c95ea3ce",
+			"243;244;0;f;f;f;243;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"244;245;0;f;f;f;244;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"244;245;2;f;f;t;0;112956c7-96a4-4680-b568-9f9baac14d6a",
+			"245;246;0;f;f;f;245;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"246;247;0;f;f;f;246;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"246;247;2;f;f;t;0;62dfd934-296e-4336-a221-6ef8aedfd67b",
+			"247;248;0;f;f;f;247;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"248;249;0;f;f;f;248;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"248;249;2;f;f;t;0;6e38bd4c-1100-4d91-8a4d-94ae6bb1e978",
+			"249;250;0;f;f;f;249;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"250;251;0;f;f;f;250;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"250;251;2;f;f;t;0;4d760557-063b-40e8-ad8f-d9bd4b159bc6",
+			"251;252;0;f;f;f;251;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"252;253;0;f;f;f;252;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"252;253;2;f;f;t;0;57e48ef4-4190-4521-93e1-33b5a0fc50b0",
+			"253;254;0;f;f;f;253;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"254;255;0;f;f;f;254;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"254;255;2;f;f;t;0;43eafc3b-96a9-4266-b885-f158762044b5",
+			"255;256;0;f;f;f;255;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"256;257;0;f;f;f;256;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"256;257;2;f;f;t;0;c101894d-ea3e-45d1-a566-d12b270a1fbc",
+			"257;258;0;f;f;f;257;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"258;259;0;f;f;f;258;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"258;259;2;f;f;t;0;012fb829-d42b-4335-8d7a-6bb8b549f27b",
+			"259;260;0;f;f;f;259;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"260;261;0;f;f;f;260;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"260;261;2;f;f;t;0;95e78bcb-9d07-49e8-ae60-76ecd27fddb5",
+			"261;262;0;f;f;f;261;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"262;263;0;f;f;f;262;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"262;263;2;f;f;t;0;6433b2c9-f241-49dc-9a64-fc6754c6db9b",
+			"263;264;0;f;f;f;263;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"264;265;0;f;f;f;264;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"264;265;2;f;f;t;0;da84dcc0-8724-4ec5-bfdc-e5365141c4e8",
+			"265;266;0;f;f;f;265;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"266;267;0;f;f;f;266;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"267;268;0;f;f;f;267;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"266;268;2;f;f;t;0;e614748b-3163-4d78-9240-53464c10a609",
+			"267;268;2;f;f;t;0;c9612b22-29da-4da0-b53a-54c1340b666c",
+			"268;269;0;f;f;f;268;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"269;270;0;f;f;f;269;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"270;271;0;f;f;f;270;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"270;271;2;f;f;t;0;2b26e15a-b433-4236-8a3c-2907080d50d9",
+			"271;272;0;f;f;f;271;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"272;273;0;f;f;f;272;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"272;273;2;f;f;t;0;acee065a-2893-4a39-a198-3994ac859888",
+			"273;274;0;f;f;f;273;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"274;275;0;f;f;f;274;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"274;275;2;f;f;t;0;e64e83bc-7501-4f47-9e3c-9a4d14beaef3",
+			"275;276;0;f;f;f;275;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"276;277;0;f;f;f;276;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"276;277;2;f;f;t;0;3e21ce9d-5906-4250-967c-966e995730b0",
+			"277;278;0;f;f;f;277;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"278;279;0;f;f;f;278;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"278;279;2;f;f;t;0;dd9a3e7c-a949-4d4b-a28f-027e404aff26",
+			"279;280;0;f;f;f;279;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"280;281;0;f;f;f;280;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"280;281;2;f;f;t;0;9ba49bb4-d5d2-4e4d-9ad3-54e1f2f008eb",
+			"281;282;0;f;f;f;281;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"282;283;0;f;f;f;282;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"281;283;2;f;f;t;0;44b8beb8-2ad1-4480-bd87-fe4775118279",
+			"283;284;0;f;f;f;283;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"284;285;0;f;f;f;284;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"284;285;2;f;f;t;0;e4faa0c7-43db-4bf2-9568-11e248087569",
+			"285;286;0;f;f;f;285;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"286;287;0;f;f;f;286;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"285;287;2;f;f;t;0;2810c32c-f791-49e9-96a3-b43c3f39a4e5",
+			"287;288;0;f;f;f;287;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"288;289;0;f;f;f;288;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"288;289;2;f;f;t;0;3505a458-cd45-434b-92b2-f0c02a17f68e",
+			"289;290;0;f;f;f;289;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"290;291;0;f;f;f;290;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"289;291;2;f;f;t;0;5d6631b5-2ca8-45ff-b7ce-704e354ddf94",
+			"291;292;0;f;f;f;291;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"292;293;0;f;f;f;292;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"292;293;2;f;f;t;0;67d0b3cc-fb36-40cb-9df6-d6bbc3f17fb1",
+			"293;294;0;f;f;f;293;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"294;295;0;f;f;f;294;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"293;295;2;f;f;t;0;408a04e6-0e71-41ad-b9ac-c2b9832fe95d",
+			"295;296;0;f;f;f;295;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"296;297;0;f;f;f;296;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"296;297;2;f;f;t;0;93084b92-6ae2-4f3b-83ef-81c688c054f3",
+			"297;298;0;f;f;f;297;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"298;299;0;f;f;f;298;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"298;299;2;f;f;t;0;f57a5674-1c36-451d-a863-4873166d0af1",
+			"299;300;0;f;f;f;299;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"300;301;0;f;f;f;300;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"300;301;2;f;f;t;0;62094559-d760-4fe8-9c95-fe084b5594c2",
+			"301;302;0;f;f;f;301;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"302;303;0;f;f;f;302;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"302;303;2;f;f;t;0;7d266c4f-0a4a-4a2c-a47d-41f7a9cce2c2",
+			"303;304;0;f;f;f;303;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"304;305;0;f;f;f;304;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"304;305;2;f;f;t;0;9b68497b-0d77-487b-b46a-6484509cec47",
+			"305;306;0;f;f;f;305;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"306;307;0;f;f;f;306;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"306;307;2;f;f;t;0;c726e73b-59a1-48b6-99c6-918d146ce7b5",
+			"307;308;0;f;f;f;307;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"308;309;0;f;f;f;308;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"308;309;2;f;f;t;0;45190f1f-43fd-4d30-8327-ce08ad03e8ed",
+			"309;310;0;f;f;f;309;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"310;311;0;f;f;f;310;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"310;311;2;f;f;t;0;e58ae597-cdaa-4165-a39b-2c37e01477cd",
+			"311;312;0;f;f;f;311;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"312;313;0;f;f;f;312;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"312;313;2;f;f;t;0;7ed244a6-e390-48be-ad82-861ce78946fd",
+			"313;314;0;f;f;f;313;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"314;315;0;f;f;f;314;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"314;315;2;f;f;t;0;3946dd39-d3d4-48e0-a6a1-09ce5d8051d5",
+			"315;316;0;f;f;f;315;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"316;317;0;f;f;f;316;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"316;317;2;f;f;t;0;462323b8-c269-4cc1-919c-56ab740a5314",
+			"317;318;0;f;f;f;317;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"318;319;0;f;f;f;318;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"318;319;2;f;f;t;0;1861bfc9-3e9d-46cf-8874-929b14a605ac",
+			"319;320;0;f;f;f;319;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"320;321;0;f;f;f;320;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"320;321;2;f;f;t;0;e79e0380-03f7-492e-83b3-51f68d0b0ab0",
+			"321;322;0;f;f;f;321;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"322;323;0;f;f;f;322;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"322;323;2;f;f;t;0;cab75e78-ebd0-4bfa-ba49-a6965fa7ac58",
+			"323;324;0;f;f;f;323;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"324;325;0;f;f;f;324;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"324;325;2;f;f;t;0;4a522658-d030-4974-8648-bfff3fe586de",
+			"325;326;0;f;f;f;325;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"326;327;0;f;f;f;326;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"326;327;2;f;f;t;0;b54b0631-8026-4c63-b2d6-f4cbedd5568f",
+			"327;328;0;f;f;f;327;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"328;329;0;f;f;f;328;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"328;329;2;f;f;t;0;3545b64d-37ad-49d1-84ff-1fe5ce2a222e",
+			"329;330;0;f;f;f;329;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"330;331;0;f;f;f;330;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"330;331;2;f;f;t;0;9c08127c-7a09-4903-ad10-5690877563d0",
+			"331;332;0;f;f;f;331;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"332;333;0;f;f;f;332;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"332;333;2;f;f;t;0;60cd0a8a-4661-4991-9458-87d9788aaf56",
+			"333;334;0;f;f;f;333;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"334;335;0;f;f;f;334;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"334;335;2;f;f;t;0;ef76f4b4-7ded-4395-94bd-e19438d4b336",
+			"335;336;0;f;f;f;335;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"336;337;0;f;f;f;336;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"336;337;2;f;f;t;0;7b274d75-c431-4842-a73f-561a638a24c4",
+			"337;338;0;f;f;f;337;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"338;339;0;f;f;f;338;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"338;339;2;f;f;t;0;2816ee86-12d8-4c00-96cd-d4a44238326f",
+			"339;340;0;f;f;f;339;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"340;341;0;f;f;f;340;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"340;341;2;f;f;t;0;28e9027a-aa5d-4025-8d58-39299766741f",
+			"341;342;0;f;f;f;341;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"342;343;0;f;f;f;342;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"342;343;2;f;f;t;0;adf7a6ea-b202-4c6c-807f-509f0c2cdc6b",
+			"343;344;0;f;f;f;343;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"344;345;0;f;f;f;344;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"344;345;2;f;f;t;0;123e678f-dacc-4577-8aad-498897ca3faf",
+			"345;346;0;f;f;f;345;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"346;347;0;f;f;f;346;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"346;347;2;f;f;t;0;e25fbb95-f791-4e2a-a22d-8f40b845397b",
+			"347;348;0;f;f;f;347;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"348;349;0;f;f;f;348;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"348;349;2;f;f;t;0;e984d78d-44b7-440f-a8e6-b92fe5618e5e",
+			"349;350;0;f;f;f;349;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"350;351;0;f;f;f;350;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"350;351;2;f;f;t;0;a274461c-fba1-46c2-9324-d6e45193510d",
+			"351;352;0;f;f;f;351;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"352;353;0;f;f;f;352;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"352;353;2;f;f;t;0;c8ed320d-70fb-4512-a7fa-397c8f64272e",
+			"353;354;0;f;f;f;353;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"354;355;0;f;f;f;354;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"354;355;2;f;f;t;0;5ec45071-2a32-4ff6-be78-342f767e4645",
+			"355;356;0;f;f;f;355;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"356;357;0;f;f;f;356;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"356;357;2;f;f;t;0;cc2858ae-e31c-49e4-abe3-a7f7841a079f",
+			"357;358;0;f;f;f;357;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"358;359;0;f;f;f;358;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"358;359;2;f;f;t;0;580a2b1e-c035-4ee2-9072-2257a63f5d05",
+			"359;360;0;f;f;f;359;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"360;361;0;f;f;f;360;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"360;361;2;f;f;t;0;491ae5f9-c2b5-49ed-9de0-f4af12d823ac",
+			"361;362;0;f;f;f;361;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"362;363;0;f;f;f;362;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"362;363;2;f;f;t;0;e84c90b5-3508-4562-9697-34c0e376d4d4",
+			"363;364;0;f;f;f;363;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"364;365;0;f;f;f;364;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"364;365;2;f;f;t;0;5ec44013-0d47-4047-8473-3c6e944a1e0e",
+			"365;366;0;f;f;f;365;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"366;367;0;f;f;f;366;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"366;367;2;f;f;t;0;17384b19-8239-4d70-b40b-59bd81e746f3",
+			"367;368;0;f;f;f;367;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"368;369;0;f;f;f;368;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"368;369;2;f;f;t;0;478772b1-65ab-427e-a976-a4984942dba7",
+			"369;370;0;f;f;f;369;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"370;371;0;f;f;f;370;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"370;371;2;f;f;t;0;79e5ea25-04c5-4507-9064-baf91219a294",
+			"371;372;0;f;f;f;371;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"372;373;0;f;f;f;372;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"372;373;2;f;f;t;0;c00bd38e-14cc-44f3-b438-4bacf4b3819d",
+			"373;374;0;f;f;f;373;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"374;375;0;f;f;f;374;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"374;375;2;f;f;t;0;6e80fff2-9692-44e0-a944-20ba23ebe38e",
+			"375;376;0;f;f;f;375;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"376;377;0;f;f;f;376;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"376;377;2;f;f;t;0;a1c525f4-17b4-4542-8483-d8e99023e66f",
+			"377;378;0;f;f;f;377;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"378;379;0;f;f;f;378;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"378;379;2;f;f;t;0;3e201cbe-afe3-4435-8954-c676e56edf05",
+			"379;380;0;f;f;f;379;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"380;381;0;f;f;f;380;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"381;382;0;f;f;f;381;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"380;382;2;f;f;t;0;058ecd03-cea0-4ac5-871e-2b6d85633cab",
+			"381;382;2;f;f;t;0;c1b4f468-0c72-4a50-b5f8-dfe8450461ab",
+			"382;383;0;f;f;f;382;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"383;384;0;f;f;f;383;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"384;385;0;f;f;f;384;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"384;385;2;f;f;t;0;0c6a5de2-faef-49b6-a21b-b019b7c01a99",
+			"385;386;0;f;f;f;385;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"386;387;0;f;f;f;386;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"386;387;2;f;f;t;0;ec8d6bb2-0e58-418b-9257-832ebacd963d",
+			"387;388;0;f;f;f;387;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"388;389;0;f;f;f;388;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"388;389;2;f;f;t;0;a6f4984f-d2aa-4b85-bbc1-894dafcd1a97",
+			"389;390;0;f;f;f;389;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"390;391;0;f;f;f;390;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"390;391;2;f;f;t;0;4d7513f1-3d3a-4bde-a5c6-d7587eeeb6fb",
+			"391;392;0;f;f;f;391;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"392;393;0;f;f;f;392;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"392;393;2;f;f;t;0;b5c86f6a-55ea-4d34-82c5-7cc719682a96",
+			"393;394;0;f;f;f;393;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"394;395;0;f;f;f;394;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"394;395;2;f;f;t;0;b7ee18d6-fbf4-473c-8fe6-1d40ef87fe08",
+			"395;396;0;f;f;f;395;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"396;397;0;f;f;f;396;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"396;397;2;f;f;t;0;5e79d97c-3d27-43c6-81e7-bfc844369bd0",
+			"397;398;0;f;f;f;397;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"398;399;0;f;f;f;398;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"398;399;2;f;f;t;0;a3c74d61-b6b1-485f-aa6a-69f9daa3c065",
+			"399;400;0;f;f;f;399;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"400;401;0;f;f;f;400;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"400;401;2;f;f;t;0;a917cae1-8b48-421a-ac75-6285304115d7",
+			"401;402;0;f;f;f;401;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"402;403;0;f;f;f;402;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"402;403;2;f;f;t;0;22d9bbbe-771c-4322-8dc3-541557d9099c",
+			"403;404;0;f;f;f;403;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"404;405;0;f;f;f;404;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"404;405;2;f;f;t;0;389562fe-de05-4259-9e7f-df8c1dafef5d",
+			"405;406;0;f;f;f;405;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"406;407;0;f;f;f;406;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"406;407;2;f;f;t;0;e49b2edb-599c-4fb3-88fb-5e262c3a162d",
+			"407;408;0;f;f;f;407;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"408;409;0;f;f;f;408;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"408;409;2;f;f;t;0;662c4ec0-0522-412e-8dda-e83249e495b7",
+			"409;410;0;f;f;f;409;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"410;411;0;f;f;f;410;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"410;411;2;f;f;t;0;7560d53e-2a27-429a-95df-e4e3d5a05b5c",
+			"411;412;0;f;f;f;411;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"412;413;0;f;f;f;412;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"412;413;2;f;f;t;0;fe4f098e-1286-4b8e-beca-d92d09b04e7a",
+			"413;414;0;f;f;f;413;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"414;415;0;f;f;f;414;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"414;415;2;f;f;t;0;62456cb0-2b28-4cb8-b965-ca197e9a7e71",
+			"415;416;0;f;f;f;415;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"416;417;0;f;f;f;416;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"416;417;2;f;f;t;0;d8beadb2-d560-4b59-9b7c-f484cadb300a",
+			"417;418;0;f;f;f;417;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"418;419;0;f;f;f;418;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"418;419;2;f;f;t;0;5ac04c87-f85f-4462-9450-b0adcc784da0",
+			"419;420;0;f;f;f;419;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"420;421;0;f;f;f;420;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"420;421;2;f;f;t;0;5f579d5f-31d7-492c-8ab8-e258529426ee",
+			"421;422;0;f;f;f;421;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"422;423;0;f;f;f;422;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"422;423;2;f;f;t;0;82abfa8d-f821-461d-b54f-dda94b468f32",
+			"423;424;0;f;f;f;423;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"424;425;0;f;f;f;424;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"424;425;2;f;f;t;0;a7a9ad56-2c8d-4dc8-a242-3ae051051518",
+			"425;426;0;f;f;f;425;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"426;427;0;f;f;f;426;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"426;427;2;f;f;t;0;3ddaea8b-6029-44b3-8128-accd6ccd2846",
+			"427;428;0;f;f;f;427;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"428;429;0;f;f;f;428;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"428;429;2;f;f;t;0;1bf14e6a-5f08-4551-baa9-1b54ade40128",
+			"429;430;0;f;f;f;429;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"430;431;0;f;f;f;430;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"429;431;2;f;f;t;0;50239995-4f77-4b7b-9050-1e3ff5cd53ad",
+			"431;432;0;f;f;f;431;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"432;433;0;f;f;f;432;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"433;434;0;f;f;f;433;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"432;434;2;f;f;t;0;1289f481-fb33-415f-8e76-703c66407149",
+			"433;434;2;f;f;t;0;ba5d7092-549d-463d-bd16-e64177eac15a",
+			"434;435;0;f;f;f;434;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"435;436;0;f;f;f;435;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"436;437;0;f;f;f;436;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"437;438;0;f;f;f;437;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"436;438;2;f;f;t;0;bbf109b7-5346-431d-94ed-3f0f551f9cb0",
+			"437;438;2;f;f;t;0;f676f098-d9bc-4600-821f-84c2f999fcc6",
+			"438;439;0;f;f;f;438;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"439;440;0;f;f;f;439;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"440;441;0;f;f;f;440;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"440;441;2;f;f;t;0;a6ee3d80-90bd-4913-92c7-9ec6f9cbed83",
+			"441;442;0;f;f;f;441;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"442;443;0;f;f;f;442;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"442;443;2;f;f;t;0;72fbc70f-5040-4885-a01e-33e1af3e3048",
+			"443;444;0;f;f;f;443;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"444;445;0;f;f;f;444;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"444;445;2;f;f;t;0;df09bbea-b5b5-46f6-9008-ac96b82fda29",
+			"445;446;0;f;f;f;445;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"446;447;0;f;f;f;446;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"446;447;2;f;f;t;0;97abfa9f-6159-4ebb-9b02-9c1bde7b3e4d",
+			"447;448;0;f;f;f;447;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"448;449;0;f;f;f;448;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"448;449;2;f;f;t;0;b52120e0-1d70-417b-a97b-fb4aff05d5ef",
+			"449;450;0;f;f;f;449;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"450;451;0;f;f;f;450;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"450;451;2;f;f;t;0;15a34538-88ce-4c67-a55f-6030dcfd1f42",
+			"451;452;0;f;f;f;451;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"452;453;0;f;f;f;452;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"452;453;2;f;f;t;0;f251dbc0-23d2-415c-a65a-ade5a944cc06",
+			"453;454;0;f;f;f;453;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"454;455;0;f;f;f;454;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"454;455;2;f;f;t;0;0382aaa1-195c-4072-a7ac-400e36517c21",
+			"455;456;0;f;f;f;455;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"456;457;0;f;f;f;456;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"456;457;2;f;f;t;0;9e596c27-7e02-4715-a315-e17ccf2cf419",
+			"457;458;0;f;f;f;457;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"458;459;0;f;f;f;458;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"458;459;2;f;f;t;0;6d17342a-9e38-41e7-a953-10a931e85789",
+			"459;460;0;f;f;f;459;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"460;461;0;f;f;f;460;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"460;461;2;f;f;t;0;9bca07d3-4eec-475a-bdc1-40b9a8c522ba",
+			"461;462;0;f;f;f;461;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"462;463;0;f;f;f;462;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"462;463;2;f;f;t;0;1eaa5f63-69c8-4c93-86c2-3db3d2c3f66f",
+			"463;464;0;f;f;f;463;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"464;465;0;f;f;f;464;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"464;465;2;f;f;t;0;5cbd70b7-047f-405e-9318-8f012b9e0793",
+			"465;466;0;f;f;f;465;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"466;467;0;f;f;f;466;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"466;467;2;f;f;t;0;4eeea00e-9aaf-4605-ba81-0e910294b7b1",
+			"467;468;0;f;f;f;467;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"468;469;0;f;f;f;468;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"468;469;2;f;f;t;0;d0c48c48-460b-4b6d-b411-0d7421e3f085",
+			"469;470;0;f;f;f;469;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"470;471;0;f;f;f;470;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"470;471;2;f;f;t;0;04b11e0f-5697-4c33-99d2-d0e2e1d2e6e4",
+			"471;472;0;f;f;f;471;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"472;473;0;f;f;f;472;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"472;473;2;f;f;t;0;27586b12-1a19-4389-b6d7-428d7cab91f0",
+			"473;474;0;f;f;f;473;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"474;475;0;f;f;f;474;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"474;475;2;f;f;t;0;758ae2b5-fd2c-45cf-8141-1dcb31816e84",
+			"475;476;0;f;f;f;475;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"476;477;0;f;f;f;476;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"476;477;2;f;f;t;0;885512a8-1496-4d42-8182-c15b0b17be00",
+			"477;478;0;f;f;f;477;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"478;479;0;f;f;f;478;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"478;479;2;f;f;t;0;46be2672-4dc8-43f0-a780-135b288f1f1e",
+			"479;480;0;f;f;f;479;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"480;481;0;f;f;f;480;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"480;481;2;f;f;t;0;91cb98e5-20c4-44e6-bad6-c8c68807f6bd",
+			"481;482;0;f;f;f;481;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"482;483;0;f;f;f;482;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"482;483;2;f;f;t;0;ca4edd98-291e-4c7e-8a16-77929a083482",
+			"483;484;0;f;f;f;483;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"484;485;0;f;f;f;484;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"484;485;2;f;f;t;0;0c6bfed8-9b94-471b-933d-3080d110d39b",
+			"485;486;0;f;f;f;485;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"486;487;0;f;f;f;486;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"486;487;2;f;f;t;0;c9cde792-2ab6-40b3-af7a-74d7f7e96e6e",
+			"487;488;0;f;f;f;487;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"488;489;0;f;f;f;488;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"488;489;2;f;f;t;0;6ecd4513-32fa-4523-8c10-eab16136e37b",
+			"489;490;0;f;f;f;489;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"490;491;0;f;f;f;490;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"490;491;2;f;f;t;0;fcd99fef-b672-4be8-8172-2beaa5ec73f9",
+			"491;492;0;f;f;f;491;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"492;493;0;f;f;f;492;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"492;493;2;f;f;t;0;aa34a00d-83ba-4a2a-84cb-8074c4c4bd64",
+			"493;494;0;f;f;f;493;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"494;495;0;f;f;f;494;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"494;495;2;f;f;t;0;0094fd76-392d-4c60-bfd7-8fa34d805dc1",
+			"495;496;0;f;f;f;495;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"496;497;0;f;f;f;496;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"496;497;2;f;f;t;0;c8515000-09cf-4e04-a7ce-d4362199afe4",
+			"497;498;0;f;f;f;497;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"498;499;0;f;f;f;498;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"498;499;2;f;f;t;0;3d15b7bc-0ba9-4781-ae34-23d78690029f",
+			"499;500;0;f;f;f;499;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"500;501;0;f;f;f;500;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"500;501;2;f;f;t;0;2ceafbfb-237f-48ea-81cd-7019b2211003",
+			"501;502;0;f;f;f;501;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"502;503;0;f;f;f;502;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"502;503;2;f;f;t;0;a43ca104-f0c2-4cba-b316-dbac0d91d61e",
+			"503;504;0;f;f;f;503;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"504;505;0;f;f;f;504;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"504;505;2;f;f;t;0;1c4ecb38-b76a-4ee9-8c2b-c144ecb4ae7a",
+			"505;506;0;f;f;f;505;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"506;507;0;f;f;f;506;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"506;507;2;f;f;t;0;de473e0f-dd00-47e6-a354-ead585c631e7",
+			"507;508;0;f;f;f;507;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"508;509;0;f;f;f;508;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"508;509;2;f;f;t;0;ef99176d-46c3-4868-8d35-a656351d349f",
+			"509;510;0;f;f;f;509;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"510;511;0;f;f;f;510;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"510;511;2;f;f;t;0;a59d4495-edf8-4602-b5ab-92eff40dae3f",
+			"511;512;0;f;f;f;511;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"512;513;0;f;f;f;512;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"512;513;2;f;f;t;0;a6dca1b7-68e6-4127-91a5-f61daee6bac4",
+			"513;514;0;f;f;f;513;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"514;515;0;f;f;f;514;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"514;515;2;f;f;t;0;090ac35e-fb54-4298-acdd-00ec153157aa",
+			"515;516;0;f;f;f;515;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"516;517;0;f;f;f;516;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"516;517;2;f;f;t;0;feba3e27-724b-41fb-8e57-d47d8605df14",
+			"517;518;0;f;f;f;517;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"518;519;0;f;f;f;518;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"518;519;2;f;f;t;0;4a43e78a-8744-4c12-acac-7b87419cec4e",
+			"519;520;0;f;f;f;519;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"520;521;0;f;f;f;520;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"520;521;2;f;f;t;0;8110491b-600a-4b88-9b07-1aa3e7d78fd7",
+			"521;522;0;f;f;f;521;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"522;523;0;f;f;f;522;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"522;523;2;f;f;t;0;a024c660-ad74-4a43-b3b8-c38c6949e42a",
+			"523;524;0;f;f;f;523;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"524;525;0;f;f;f;524;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"524;525;2;f;f;t;0;12e0f8ff-2aaa-4a9f-b0e9-eb500b4632ea",
+			"525;526;0;f;f;f;525;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"526;527;0;f;f;f;526;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"526;527;2;f;f;t;0;424665e8-d3ec-469e-b3e8-4fea5fa17b39",
+			"527;528;0;f;f;f;527;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"528;529;0;f;f;f;528;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"528;529;2;f;f;t;0;d4cbfff8-4f49-4d1e-bb03-fb13a97ecc8f",
+			"529;530;0;f;f;f;529;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"530;531;0;f;f;f;530;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"530;531;2;f;f;t;0;c42b9469-db8e-449e-94a8-e53c22111a75",
+			"531;532;0;f;f;f;531;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"532;533;0;f;f;f;532;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"532;533;2;f;f;t;0;46576da6-e71c-4a34-b4f1-82903cf61bfb",
+			"533;534;0;f;f;f;533;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"534;535;0;f;f;f;534;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"534;535;2;f;f;t;0;435b4593-9de6-4253-be1a-d202f6c28342",
+			"535;536;0;f;f;f;535;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"536;537;0;f;f;f;536;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"536;537;2;f;f;t;0;ca5a4ceb-8f07-47a9-b36e-45f1662a6b40",
+			"537;538;0;f;f;f;537;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"538;539;0;f;f;f;538;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"538;539;2;f;f;t;0;0d333007-23c3-4a77-910b-6c34391f2628",
+			"539;540;0;f;f;f;539;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"540;541;0;f;f;f;540;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"540;541;2;f;f;t;0;d17d361c-69f0-4073-87c0-558b5f5abe09",
+			"541;542;0;f;f;f;541;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"542;543;0;f;f;f;542;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"542;543;2;f;f;t;0;58ca5a5a-7a11-4676-8c05-c7ae71c92389",
+			"543;544;0;f;f;f;543;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"544;545;0;f;f;f;544;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"544;545;2;f;f;t;0;0c74b804-5c0c-45ab-9d4f-ff505e187be3",
+			"545;546;0;f;f;f;545;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"546;547;0;f;f;f;546;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"546;547;2;f;f;t;0;294d382d-1d8b-41e3-95ee-215e4411e744",
+			"547;548;0;f;f;f;547;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"548;549;0;f;f;f;548;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"548;549;2;f;f;t;0;9ff8c2f0-4059-4d3f-8501-12fd25027e1a",
+			"549;550;0;f;f;f;549;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"550;551;0;f;f;f;550;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"550;551;2;f;f;t;0;efa63f3b-2e95-440f-9eec-afe13cf8fd85",
+			"551;552;0;f;f;f;551;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"552;553;0;f;f;f;552;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"552;553;2;f;f;t;0;2b817c86-1e64-4642-b377-5f154dd7d4b0",
+			"553;554;0;f;f;f;553;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"554;555;0;f;f;f;554;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"554;555;2;f;f;t;0;f50e1abe-b2dd-474d-9a65-c8e7fd51e35e",
+			"555;556;0;f;f;f;555;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"556;557;0;f;f;f;556;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"556;557;2;f;f;t;0;a8c4b365-cfda-46ec-b444-5c7a8519b227",
+			"557;558;0;f;f;f;557;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"558;559;0;f;f;f;558;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"558;559;2;f;f;t;0;f6a58335-89b5-4a40-90e2-c5e1fc7a0ef9",
+			"559;560;0;f;f;f;559;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"560;561;0;f;f;f;560;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"560;561;2;f;f;t;0;85820e99-229a-4633-b9cb-fa2e9127e380",
+			"561;562;0;f;f;f;561;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"562;563;0;f;f;f;562;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"562;563;2;f;f;t;0;451a8364-aa8c-4b5e-ad02-7d31b6a2ea6c",
+			"563;564;0;f;f;f;563;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"564;565;0;f;f;f;564;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"564;565;2;f;f;t;0;91883121-90cd-4bdf-95a4-7a060f8a8b5a",
+			"565;566;0;f;f;f;565;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"566;567;0;f;f;f;566;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"566;567;2;f;f;t;0;c0ff724a-f497-481c-b096-1792a89b9421",
+			"567;568;0;f;f;f;567;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"568;569;0;f;f;f;568;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"568;569;2;f;f;t;0;fd6ce0c4-c8d5-45d0-a170-33d79a8887ae",
+			"569;570;0;f;f;f;569;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"570;571;0;f;f;f;570;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"570;571;2;f;f;t;0;24485efd-7ee9-4288-ac0e-01ffcc6c641f",
+			"571;572;0;f;f;f;571;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"572;573;0;f;f;f;572;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"572;573;2;f;f;t;0;097b16e8-2848-481e-b30c-9bb18f68bec8",
+			"573;574;0;f;f;f;573;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"574;575;0;f;f;f;574;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"574;575;2;f;f;t;0;b14fc5d6-4df5-444c-b9df-0809c3557087",
+			"575;576;0;f;f;f;575;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"576;577;0;f;f;f;576;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"576;577;2;f;f;t;0;e9793547-8a15-4a8a-8f38-162f88faeff6",
+			"577;578;0;f;f;f;577;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"578;579;0;f;f;f;578;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"578;579;2;f;f;t;0;4c265bf3-b638-4bbb-bac7-2cf34b9e44c9",
+			"579;580;0;f;f;f;579;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"580;581;0;f;f;f;580;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"580;581;2;f;f;t;0;d4d28daf-86e6-4543-9e2e-e962c52a1efd",
+			"581;582;0;f;f;f;581;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"582;583;0;f;f;f;582;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"582;583;2;f;f;t;0;a139e126-cdf8-4dba-904e-c40011fa27e6",
+			"583;584;0;f;f;f;583;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"584;585;0;f;f;f;584;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"584;585;2;f;f;t;0;e6fa2641-c9dd-41cb-80b8-7342a412866c",
+			"585;586;0;f;f;f;585;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"586;587;0;f;f;f;586;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"586;587;2;f;f;t;0;8aaf1294-313d-42ee-a820-c07f96bf3620",
+			"587;588;0;f;f;f;587;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"588;589;0;f;f;f;588;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"588;589;2;f;f;t;0;bf398bd5-de45-47fb-b1ff-c6e6cb76a6d0",
+			"589;590;0;f;f;f;589;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"590;591;0;f;f;f;590;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"590;591;2;f;f;t;0;c2345dcf-0f0e-41dd-8722-1e0a4525c2a6",
+			"591;592;0;f;f;f;591;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"592;593;0;f;f;f;592;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"592;593;2;f;f;t;0;121434a5-8487-4f8f-bc1a-3e346339746f",
+			"593;594;0;f;f;f;593;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"594;595;0;f;f;f;594;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"594;595;2;f;f;t;0;98fb922b-5004-441f-8721-904e13a18032",
+			"595;596;0;f;f;f;595;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"596;597;0;f;f;f;596;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"596;597;2;f;f;t;0;c26db52e-4fdf-4718-80e4-6f6533a041c6",
+			"597;598;0;f;f;f;597;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"598;599;0;f;f;f;598;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"597;599;2;f;f;t;0;221f25ed-cc96-46c0-9b85-43dbc8821dbe",
+			"599;600;0;f;f;f;599;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"600;601;0;f;f;f;600;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"600;601;2;f;f;t;0;82048f41-98d1-4abe-a9c8-0e6dd4bd97af",
+			"601;602;0;f;f;f;601;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"602;603;0;f;f;f;602;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"601;603;2;f;f;t;0;08b0aa1f-996e-495b-960e-ce28a8372568",
+			"603;604;0;f;f;f;603;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"604;605;0;f;f;f;604;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"604;605;2;f;f;t;0;4648b318-7fe5-4003-b92c-3a54c0ac4375",
+			"605;606;0;f;f;f;605;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"606;607;0;f;f;f;606;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"606;607;2;f;f;t;0;38fd81b9-f8ff-45b9-891a-fd07a0257c49",
+			"607;608;0;f;f;f;607;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"608;609;0;f;f;f;608;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"608;609;2;f;f;t;0;2e08b584-e3b5-413d-85e3-2b5aa93c8dd1",
+			"609;610;0;f;f;f;609;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"610;611;0;f;f;f;610;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"610;611;2;f;f;t;0;c9a6d5f3-837f-43d5-838d-3665e25724e4",
+			"611;612;0;f;f;f;611;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"612;613;0;f;f;f;612;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"612;613;2;f;f;t;0;771ddc82-8362-4645-aabe-3c8746ebf1e9",
+			"613;614;0;f;f;f;613;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"614;615;0;f;f;f;614;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"614;615;2;f;f;t;0;fea2668b-a566-4957-83b8-81cfa7d0c3a2",
+			"615;616;0;f;f;f;615;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"616;617;0;f;f;f;616;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"616;617;2;f;f;t;0;2b058393-5a87-4c42-b635-0637c5f2c67e",
+			"617;618;0;f;f;f;617;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"618;619;0;f;f;f;618;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"618;619;2;f;f;t;0;f7312fea-db2a-4e66-a061-ceba175dc137",
+			"619;620;0;f;f;f;619;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"620;621;0;f;f;f;620;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"620;621;2;f;f;t;0;b0384790-7c8b-437a-bcf3-736426763e76",
+			"621;622;0;f;f;f;621;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"622;623;0;f;f;f;622;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"622;623;2;f;f;t;0;9dcc1225-dc91-49d5-ac26-c5235d3b37b4",
+			"623;624;0;f;f;f;623;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"624;625;0;f;f;f;624;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"624;625;2;f;f;t;0;f4f935c2-7949-4ee5-a0c2-38d7a423bd25",
+			"625;626;0;f;f;f;625;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"626;627;0;f;f;f;626;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"626;627;2;f;f;t;0;d53e2e2e-2775-4e45-a793-c1991026f4d0",
+			"627;628;0;f;f;f;627;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"628;629;0;f;f;f;628;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"628;629;2;f;f;t;0;3a2cbbab-264a-43c4-91d0-7c4d90f80ebf",
+			"629;630;0;f;f;f;629;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"630;631;0;f;f;f;630;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"630;631;2;f;f;t;0;70c3b90e-f048-4799-ad66-8ef14384b2fe",
+			"631;632;0;f;f;f;631;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"632;633;0;f;f;f;632;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"632;633;2;f;f;t;0;d0cedb34-0394-4f84-8e6a-1a0eb43fbc85",
+			"633;634;0;f;f;f;633;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"634;635;0;f;f;f;634;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"634;635;2;f;f;t;0;3995b4b8-da73-40bc-9bad-387562d8597d",
+			"635;636;0;f;f;f;635;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"636;637;0;f;f;f;636;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"636;637;2;f;f;t;0;4cb485af-4ede-4a8f-83c4-f83f0b632759",
+			"637;638;0;f;f;f;637;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"638;639;0;f;f;f;638;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"638;639;2;f;f;t;0;a40f3e60-b75d-48a3-8689-fc7c96a2f416",
+			"639;640;0;f;f;f;639;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"640;641;0;f;f;f;640;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"640;641;2;f;f;t;0;9c8ff17e-2f5e-4a1a-b151-f098f0e67ec6",
+			"641;642;0;f;f;f;641;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"642;643;0;f;f;f;642;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"642;643;2;f;f;t;0;9ccf6d4c-97c4-4c94-a361-8ed50b48db6f",
+			"643;644;0;f;f;f;643;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"644;645;0;f;f;f;644;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"644;645;2;f;f;t;0;22b36c36-c1af-46a9-9001-51f1930fe85b",
+			"645;646;0;f;f;f;645;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"646;647;0;f;f;f;646;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"646;647;2;f;f;t;0;d95ac871-c324-425a-889f-a73c5c4b29c0",
+			"647;648;0;f;f;f;647;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"648;649;0;f;f;f;648;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"648;649;2;f;f;t;0;40114f62-62ee-48c0-a474-f54b1b0af056",
+			"649;650;0;f;f;f;649;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"650;651;0;f;f;f;650;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"650;651;2;f;f;t;0;93d48188-3c42-4b1e-8099-cb694dc206ae",
+			"651;652;0;f;f;f;651;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"652;653;0;f;f;f;652;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"652;653;2;f;f;t;0;1befbb08-7905-4067-a0b5-1936c3ffbd8c",
+			"653;654;0;f;f;f;653;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"654;655;0;f;f;f;654;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"654;655;2;f;f;t;0;4d6d7cd5-09e5-4b54-9dfe-6120b7b6338b",
+			"655;656;0;f;f;f;655;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"656;657;0;f;f;f;656;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"656;657;2;f;f;t;0;7ca969b5-baca-455f-9a49-c8bbae8823f4",
+			"657;658;0;f;f;f;657;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"658;659;0;f;f;f;658;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"658;659;2;f;f;t;0;11fc8f1b-0420-4077-be10-f3d96103d9ee",
+			"659;660;0;f;f;f;659;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"660;661;0;f;f;f;660;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"660;661;2;f;f;t;0;82948cc5-0c6f-485a-b41f-0fe0a57039dc",
+			"661;662;0;f;f;f;661;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"662;663;0;f;f;f;662;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"662;663;2;f;f;t;0;63406615-967f-41c7-8faf-f8a397a0e9ab",
+			"663;664;0;f;f;f;663;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"664;665;0;f;f;f;664;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"664;665;2;f;f;t;0;c94ac8ff-8ae5-45cb-a6f0-898c04c8eb2a",
+			"665;666;0;f;f;f;665;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"666;667;0;f;f;f;666;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"666;667;2;f;f;t;0;cc47192a-e2df-43b0-a906-62639d701c1d",
+			"667;668;0;f;f;f;667;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"668;669;0;f;f;f;668;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"668;669;2;f;f;t;0;04d6f1a3-1e44-434d-bb94-f4bf8c1c3194",
+			"669;670;0;f;f;f;669;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"670;671;0;f;f;f;670;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"670;671;2;f;f;t;0;4c045286-18bf-4650-b66c-0b7fd0bf8d95",
+			"671;672;0;f;f;f;671;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"672;673;0;f;f;f;672;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"672;673;2;f;f;t;0;285c548b-fc12-4e18-b30d-b60db63cab15",
+			"673;674;0;f;f;f;673;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"674;675;0;f;f;f;674;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"674;675;2;f;f;t;0;961c6742-96d5-46a8-b694-0416684b5875",
+			"675;676;0;f;f;f;675;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"676;677;0;f;f;f;676;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"675;677;2;f;f;t;0;a3168c5c-ffba-4f5d-8ca3-0c188c4ed7a3",
+			"677;678;0;f;f;f;677;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"678;679;0;f;f;f;678;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"678;679;2;f;f;t;0;053aabf3-a5c9-42bc-92bf-5eb515ca3f7f",
+			"679;680;0;f;f;f;679;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"680;681;0;f;f;f;680;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"679;681;2;f;f;t;0;c4d0a352-664d-4b4f-8908-229dca256f05",
+			"681;682;0;f;f;f;681;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"682;683;0;f;f;f;682;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"682;683;2;f;f;t;0;be1db328-a75b-41a2-8a03-ca2bd31cf3b0",
+			"683;684;0;f;f;f;683;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"684;685;0;f;f;f;684;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"683;685;2;f;f;t;0;72b3f415-e388-4ca3-92b6-9d6d837fe8a2",
+			"685;686;0;f;f;f;685;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"686;687;0;f;f;f;686;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"686;687;2;f;f;t;0;ea039dc7-cceb-4450-922e-0d783f124e3e",
+			"687;688;0;f;f;f;687;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"688;689;0;f;f;f;688;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"687;689;2;f;f;t;0;0be232b4-f830-42f7-af36-83159bdcb25b",
+			"689;690;0;f;f;f;689;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"690;691;0;f;f;f;690;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"690;691;2;f;f;t;0;8d0fa97c-ec1f-4a9c-8c3b-963a9f467bab",
+			"691;692;0;f;f;f;691;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"692;693;0;f;f;f;692;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"691;693;2;f;f;t;0;0b0bbf47-fac4-4a2f-8978-58b47dbac603",
+			"693;694;0;f;f;f;693;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"694;695;0;f;f;f;694;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"694;695;2;f;f;t;0;bb7089ee-bc63-49b7-9b5a-25ca592a0658",
+			"695;696;0;f;f;f;695;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"696;697;0;f;f;f;696;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"695;697;2;f;f;t;0;ea0702c2-9af0-4c32-8e26-642e8ae97204",
+			"697;698;0;f;f;f;697;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"698;699;0;f;f;f;698;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"698;699;2;f;f;t;0;4613bdcd-da8a-44d9-a945-b2e070f2b949",
+			"699;700;0;f;f;f;699;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"700;701;0;f;f;f;700;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"699;701;2;f;f;t;0;6c0b6726-cef6-4089-918a-81b63c513921",
+			"701;702;0;f;f;f;701;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"702;703;0;f;f;f;702;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"702;703;2;f;f;t;0;0b588f83-870a-426d-b086-d25d345dc685",
+			"703;704;0;f;f;f;703;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"704;705;0;f;f;f;704;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"703;705;2;f;f;t;0;eb973a38-82da-4da2-bc9a-f6cdd02edef6",
+			"705;706;0;f;f;f;705;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"706;707;0;f;f;f;706;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"706;707;2;f;f;t;0;258ffe1e-fbff-4993-9caf-f793f356ab0e",
+			"707;708;0;f;f;f;707;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"708;709;0;f;f;f;708;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"708;709;2;f;f;t;0;fbb0ea28-ca2d-4018-969c-ddff0546a3c4",
+			"709;710;0;f;f;f;709;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"710;711;0;f;f;f;710;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"710;711;2;f;f;t;0;5dda57fd-a664-41f4-85cb-fa4da0fbc49c",
+			"711;712;0;f;f;f;711;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"712;713;0;f;f;f;712;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"712;713;2;f;f;t;0;fb1dade4-7add-463d-99e9-4799a5499db6",
+			"713;714;0;f;f;f;713;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"714;715;0;f;f;f;714;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"714;715;2;f;f;t;0;d3770399-b3d9-4784-85fd-58eec063f30b",
+			"715;716;0;f;f;f;715;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"716;717;0;f;f;f;716;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"716;717;2;f;f;t;0;ac9f9b2e-6aab-4bed-83da-d462e571f976",
+			"717;718;0;f;f;f;717;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"718;719;0;f;f;f;718;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"718;719;2;f;f;t;0;95944aa5-bc55-4270-a83d-867a748f72b0",
+			"719;720;0;f;f;f;719;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"720;721;0;f;f;f;720;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"720;721;2;f;f;t;0;9b207700-dce1-41d7-8666-fe5430ec7947",
+			"721;722;0;f;f;f;721;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"722;723;0;f;f;f;722;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"721;723;2;f;f;t;0;ee10d42d-c536-4764-825e-6c6d2e02946d",
+			"723;724;0;f;f;f;723;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"724;725;0;f;f;f;724;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"724;725;2;f;f;t;0;db4072e4-7258-4c72-8727-e5a57c7ae81d",
+			"725;726;0;f;f;f;725;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"726;727;0;f;f;f;726;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"725;727;2;f;f;t;0;dbe53e0a-77f1-4f09-ad3d-16811e2fa666",
+			"727;728;0;f;f;f;727;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"728;729;0;f;f;f;728;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"728;729;2;f;f;t;0;4afe8213-40a8-41b2-8ff0-e0a2eac57777",
+			"729;730;0;f;f;f;729;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"730;731;0;f;f;f;730;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"730;731;2;f;f;t;0;6f5c2e26-4fbe-4ade-8795-563eb6cbc4ad",
+			"731;732;0;f;f;f;731;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"732;733;0;f;f;f;732;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"732;733;2;f;f;t;0;13d3f044-b956-43f4-a964-1235c4e1a407",
+			"733;734;0;f;f;f;733;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"734;735;0;f;f;f;734;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"734;735;2;f;f;t;0;05b67e9c-ca3e-48da-8fe0-f4b0ce42e5a2",
+			"735;736;0;f;f;f;735;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"736;737;0;f;f;f;736;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"736;737;2;f;f;t;0;bc9cf5db-999c-4337-b33e-25193921fe5f",
+			"737;738;0;f;f;f;737;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"738;739;0;f;f;f;738;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"738;739;2;f;f;t;0;66870a64-60e4-4f06-9ed6-85566c2337b8",
+			"739;740;0;f;f;f;739;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"740;741;0;f;f;f;740;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"740;741;2;f;f;t;0;8b14e997-1717-4481-9eda-491bf4019496",
+			"741;742;0;f;f;f;741;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"742;743;0;f;f;f;742;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"742;743;2;f;f;t;0;d23ed89d-7693-472d-b68c-ada5e44d070e",
+			"743;744;0;f;f;f;743;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"744;745;0;f;f;f;744;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"744;745;2;f;f;t;0;bc2098da-6fb2-406a-adc2-aca455e38ac4",
+			"745;746;0;f;f;f;745;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"746;747;0;f;f;f;746;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"746;747;2;f;f;t;0;f4eb0942-b48b-47cf-8bb1-5688f343e3f6",
+			"747;748;0;f;f;f;747;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"748;749;0;f;f;f;748;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"748;749;2;f;f;t;0;351d44ae-a227-4842-85ea-139545bf4b82",
+			"749;750;0;f;f;f;749;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"750;751;0;f;f;f;750;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"750;751;2;f;f;t;0;9ab7623e-c6bb-4d63-9566-ba22eef5ed8a",
+			"751;752;0;f;f;f;751;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"752;753;0;f;f;f;752;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"752;753;2;f;f;t;0;0723b70a-ed6a-4f06-b564-627f34e3765a",
+			"753;754;0;f;f;f;753;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"754;755;0;f;f;f;754;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"754;755;2;f;f;t;0;dfb07667-4b9d-469a-9947-425537cc9ddc",
+			"755;756;0;f;f;f;755;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"756;757;0;f;f;f;756;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"756;757;2;f;f;t;0;b2ddcbd2-2c08-44ab-9d5f-0133861c0625",
+			"757;758;0;f;f;f;757;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"758;759;0;f;f;f;758;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"758;759;2;f;f;t;0;2aeea825-52ed-45fd-943d-7a378c194316",
+			"759;760;0;f;f;f;759;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"760;761;0;f;f;f;760;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"760;761;2;f;f;t;0;e5bdcd9d-7703-465c-a467-0ab9d737949a",
+			"761;762;0;f;f;f;761;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"762;763;0;f;f;f;762;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"762;763;2;f;f;t;0;5129c340-1026-47d1-ba8f-44c6c0dfbe9f",
+			"763;764;0;f;f;f;763;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"764;765;0;f;f;f;764;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"764;765;2;f;f;t;0;7f9cfea5-705b-4d2a-9b10-c1c3bc452aa8",
+			"765;766;0;f;f;f;765;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"766;767;0;f;f;f;766;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"766;767;2;f;f;t;0;81d1e646-6ae3-4cc2-94de-0842de541d98",
+			"767;768;0;f;f;f;767;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"768;769;0;f;f;f;768;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"768;769;2;f;f;t;0;f987106e-7b73-41c4-a51d-25863eda16b9",
+			"769;770;0;f;f;f;769;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"770;771;0;f;f;f;770;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"770;771;2;f;f;t;0;5f4f393d-13b3-41a4-b3ec-c349dd879fa8",
+			"771;772;0;f;f;f;771;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"772;773;0;f;f;f;772;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"772;773;2;f;f;t;0;9f7fd0be-8ef8-47ab-a9aa-eda174716b84",
+			"773;774;0;f;f;f;773;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"774;775;0;f;f;f;774;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"774;775;2;f;f;t;0;318c58a9-836d-4ff3-8968-7c58fd60b7d7",
+			"775;776;0;f;f;f;775;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"776;777;0;f;f;f;776;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"776;777;2;f;f;t;0;fd6fbf25-b681-4657-89c9-4ed28ffe972e",
+			"777;778;0;f;f;f;777;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"778;779;0;f;f;f;778;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"778;779;2;f;f;t;0;aa53ea1b-faec-4b7b-83dc-efdaefcbccc5",
+			"779;780;0;f;f;f;779;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"780;781;0;f;f;f;780;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"779;781;2;f;f;t;0;8dd7cc7c-fcc7-4aec-b2b3-b203e8f2c96b",
+			"781;782;0;f;f;f;781;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"782;783;0;f;f;f;782;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"782;783;2;f;f;t;0;2f70ebfa-f9a3-426d-b800-3bd89c4b108e",
+			"783;784;0;f;f;f;783;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"784;785;0;f;f;f;784;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"783;785;2;f;f;t;0;d7dcd599-12a3-4d23-a28f-96a1dde773e4",
+			"785;786;0;f;f;f;785;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"786;787;0;f;f;f;786;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"786;787;2;f;f;t;0;ffaf02fc-2b43-487a-a04e-c599835b9c2a",
+			"787;788;0;f;f;f;787;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"788;789;0;f;f;f;788;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"787;789;2;f;f;t;0;7a3f2231-2fca-4153-8de7-b3a4a9853648",
+			"789;790;0;f;f;f;789;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"790;791;0;f;f;f;790;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"790;791;2;f;f;t;0;31c54794-e2f1-442e-bcf5-5bccbd2a878c",
+			"791;792;0;f;f;f;791;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"792;793;0;f;f;f;792;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"791;793;2;f;f;t;0;85d943ae-d0b7-47be-a027-32bb8482ec21",
+			"793;794;0;f;f;f;793;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"794;795;0;f;f;f;794;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"794;795;2;f;f;t;0;dd830491-cf61-442b-939d-ebdf1be72005",
+			"795;796;0;f;f;f;795;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"796;797;0;f;f;f;796;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"796;797;2;f;f;t;0;c7161fdd-1f70-45f1-9952-5b24483499aa",
+			"797;798;0;f;f;f;797;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"798;799;0;f;f;f;798;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"798;799;2;f;f;t;0;0057dc2f-fa3e-448e-8a14-a21f956b2592",
+			"799;800;0;f;f;f;799;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"800;801;0;f;f;f;800;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"800;801;2;f;f;t;0;9e2e6ef6-236a-4aaa-84a7-b2a0d72bf1ee",
+			"801;802;0;f;f;f;801;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"802;803;0;f;f;f;802;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"802;803;2;f;f;t;0;57804b8b-13a0-48a8-99a9-3e2b11e942f6",
+			"803;804;0;f;f;f;803;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"804;805;0;f;f;f;804;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"804;805;2;f;f;t;0;f4445ab3-ed72-4275-b0b2-58d2bb7ce5e0",
+			"805;806;0;f;f;f;805;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"806;807;0;f;f;f;806;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"806;807;2;f;f;t;0;47e3b75b-b4e8-4729-9b91-155f2827917b",
+			"807;808;0;f;f;f;807;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"808;809;0;f;f;f;808;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"808;809;2;f;f;t;0;6a4c5ccc-a6f7-40e1-939f-362ddb368cfc",
+			"809;810;0;f;f;f;809;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"810;811;0;f;f;f;810;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"810;811;2;f;f;t;0;2b545c93-10f1-45cf-be9c-21b3b9cf5565",
+			"811;812;0;f;f;f;811;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"812;813;0;f;f;f;812;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"812;813;2;f;f;t;0;07eacd91-bd9e-40e0-90c2-d81e862b12e1",
+			"813;814;0;f;f;f;813;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"814;815;0;f;f;f;814;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"814;815;2;f;f;t;0;b4093ee8-4fe7-4255-8643-87548ce4dd59",
+			"815;816;0;f;f;f;815;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"816;817;0;f;f;f;816;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"816;817;2;f;f;t;0;a76d1773-213a-464c-81b2-e4e3e7519853",
+			"817;818;0;f;f;f;817;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"818;819;0;f;f;f;818;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"818;819;2;f;f;t;0;98e01ece-fcf3-4695-ad06-674c0fd75c9a",
+			"819;820;0;f;f;f;819;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"820;821;0;f;f;f;820;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"820;821;2;f;f;t;0;f8e384b3-370e-4847-a4f0-26ac090d3237",
+			"821;822;0;f;f;f;821;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"822;823;0;f;f;f;822;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"822;823;2;f;f;t;0;e296a24f-e07c-4886-9552-303d1b87a9c5",
+			"823;824;0;f;f;f;823;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"824;825;0;f;f;f;824;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"824;825;2;f;f;t;0;f30f40b7-853a-4145-966b-2c96a76df21b",
+			"825;826;0;f;f;f;825;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"826;827;0;f;f;f;826;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"826;827;2;f;f;t;0;e79ffbef-0c3b-4eb2-8988-68be43b3d2c5",
+			"827;828;0;f;f;f;827;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"828;829;0;f;f;f;828;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"828;829;2;f;f;t;0;4c456202-7871-4a01-94a8-4b9938e8bcd5",
+			"829;830;0;f;f;f;829;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"830;831;0;f;f;f;830;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"829;831;2;f;f;t;0;21ded0c6-9697-408a-aadc-7d2d57dbcf90",
+			"831;832;0;f;f;f;831;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"832;833;0;f;f;f;832;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"832;833;2;f;f;t;0;7d9b4e15-c8ff-4343-8cd3-c8a0db20701a",
+			"833;834;0;f;f;f;833;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"834;835;0;f;f;f;834;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"834;835;2;f;f;t;0;96cbe101-1fa0-46b0-a4be-d1465c959235",
+			"835;836;0;f;f;f;835;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"836;837;0;f;f;f;836;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"836;837;2;f;f;t;0;a8ed6614-4a63-45d3-bcce-e888561d966e",
+			"837;838;0;f;f;f;837;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"838;839;0;f;f;f;838;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"838;839;2;f;f;t;0;3b22fc13-ca51-4aea-9416-c46f968b59af",
+			"839;840;0;f;f;f;839;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"840;841;0;f;f;f;840;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"840;841;2;f;f;t;0;df8fe420-c1b3-45e0-aa90-c6aaef237ac5",
+			"841;842;0;f;f;f;841;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"842;843;0;f;f;f;842;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"841;843;2;f;f;t;0;d0746357-ac5b-4b94-9ff3-1ed50a769e55",
+			"843;844;0;f;f;f;843;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"844;845;0;f;f;f;844;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"844;845;2;f;f;t;0;f6c8dbe3-8aae-4a38-b25f-a8a5c73e48c2",
+			"845;846;0;f;f;f;845;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"846;847;0;f;f;f;846;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"846;847;2;f;f;t;0;0063e646-2513-4388-8d20-fecd276b5874",
+			"847;848;0;f;f;f;847;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"848;849;0;f;f;f;848;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"848;849;2;f;f;t;0;c5327c49-62f2-4702-95ea-c2a8f6392e86",
+			"849;850;0;f;f;f;849;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"850;851;0;f;f;f;850;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"850;851;2;f;f;t;0;dc7d8d5e-e438-4a9f-87cd-13cc44f9d3f1",
+			"851;852;0;f;f;f;851;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"852;853;0;f;f;f;852;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"852;853;2;f;f;t;0;adecf9f6-1f3b-42d1-87b2-023e8d09e9b1",
+			"853;854;0;f;f;f;853;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"854;855;0;f;f;f;854;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"854;855;2;f;f;t;0;105ec791-8387-4e7d-8947-798af2644a6c",
+			"855;856;0;f;f;f;855;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"856;857;0;f;f;f;856;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"856;857;2;f;f;t;0;c750d23f-1785-4e4c-93aa-251d78abdf62",
+			"857;858;0;f;f;f;857;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"858;859;0;f;f;f;858;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"859;860;0;f;f;f;859;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"858;860;2;f;f;t;0;00908ed8-2894-4a70-a826-3995ec85bf9a",
+			"859;860;2;f;f;t;0;41d00ac6-04e2-4518-b383-080f77c030da",
+			"860;861;0;f;f;f;860;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"861;862;0;f;f;f;861;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"862;863;0;f;f;f;862;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"862;863;2;f;f;t;0;5fd24336-656a-4df7-a7e3-d54b35495d51",
+			"863;864;0;f;f;f;863;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"864;865;0;f;f;f;864;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"863;865;2;f;f;t;0;185eca20-1d6b-4655-975f-2ce233787417",
+			"865;866;0;f;f;f;865;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"866;867;0;f;f;f;866;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"866;867;2;f;f;t;0;d01a4e49-6449-4eaa-ad83-a804656b3320",
+			"867;868;0;f;f;f;867;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"868;869;0;f;f;f;868;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"867;869;2;f;f;t;0;8905d35f-108e-4468-a61e-5365825a59fe",
+			"869;870;0;f;f;f;869;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"870;871;0;f;f;f;870;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"870;871;2;f;f;t;0;5865ca32-522f-46e7-9014-41bd9b47757f",
+			"871;872;0;f;f;f;871;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"872;873;0;f;f;f;872;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"872;873;2;f;f;t;0;b65384fb-91ae-471e-a159-2f5eb3be2fd1",
+			"873;874;0;f;f;f;873;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"874;875;0;f;f;f;874;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"874;875;2;f;f;t;0;8441b9fe-c292-424b-ad02-49338fbc7c87",
+			"875;876;0;f;f;f;875;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"876;877;0;f;f;f;876;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"876;877;2;f;f;t;0;32611694-df6c-4f4d-8b26-f698044a6a98",
+			"877;878;0;f;f;f;877;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"878;879;0;f;f;f;878;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"878;879;2;f;f;t;0;b1a36403-e661-4fff-abe1-7438e8fb9995",
+			"879;880;0;f;f;f;879;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"880;881;0;f;f;f;880;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"880;881;2;f;f;t;0;7a56d9fd-ecd9-4f1f-8f92-c9c1ff67f0b8",
+			"881;882;0;f;f;f;881;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"882;883;0;f;f;f;882;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"882;883;2;f;f;t;0;e922b840-bc78-48d5-8648-6921b0039619",
+			"883;884;0;f;f;f;883;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"884;885;0;f;f;f;884;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"884;885;2;f;f;t;0;c4dc5a64-c97f-4a3f-bc62-ab59689fcca9",
+			"885;886;0;f;f;f;885;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"886;887;0;f;f;f;886;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"886;887;2;f;f;t;0;963f6bec-632f-4bac-9552-ef9a01f236d7",
+			"887;888;0;f;f;f;887;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"888;889;0;f;f;f;888;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"888;889;2;f;f;t;0;7323fdcc-51a1-43d1-a489-07a03b6de939",
+			"889;890;0;f;f;f;889;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"890;891;0;f;f;f;890;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"890;891;2;f;f;t;0;0fdd3dbe-4d33-4b89-9e17-3d75cf0a238b",
+			"891;892;0;f;f;f;891;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"892;893;0;f;f;f;892;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"892;893;2;f;f;t;0;f812eb90-27a5-4b3d-bfb9-a23e0df73a5d",
+			"893;894;0;f;f;f;893;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"894;895;0;f;f;f;894;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"894;895;2;f;f;t;0;edc302d1-b8ec-4f59-8ff7-e6e515f67dc1",
+			"895;896;0;f;f;f;895;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"896;897;0;f;f;f;896;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"896;897;2;f;f;t;0;f4ef13b1-681d-4fb2-85ae-208b75183aae",
+			"897;898;0;f;f;f;897;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"898;899;0;f;f;f;898;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"898;899;2;f;f;t;0;0dea0b6e-9acb-48af-b7be-9f97c4f1677c",
+			"899;900;0;f;f;f;899;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"900;901;0;f;f;f;900;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"900;901;2;f;f;t;0;cb2985cc-54a2-401b-ae32-8aa2eb0e76e4",
+			"901;902;0;f;f;f;901;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"902;903;0;f;f;f;902;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"902;903;2;f;f;t;0;d14cae5f-ebfa-43a0-9509-e147a7b44c4d",
+			"903;904;0;f;f;f;903;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"904;905;0;f;f;f;904;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"904;905;2;f;f;t;0;a3d0bb67-59a1-4231-84e3-486b78baebc4",
+			"905;906;0;f;f;f;905;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"906;907;0;f;f;f;906;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"906;907;2;f;f;t;0;5613430d-c7f2-4f37-a003-788f73b3be41",
+			"907;908;0;f;f;f;907;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"908;909;0;f;f;f;908;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"908;909;2;f;f;t;0;f184a9c9-a99c-4d32-bd6d-150fbdc30cc9",
+			"909;910;0;f;f;f;909;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"910;911;0;f;f;f;910;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"910;911;2;f;f;t;0;b30230e3-44e8-4f7f-b76d-33de410b2b83",
+			"911;912;0;f;f;f;911;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"912;913;0;f;f;f;912;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"912;913;2;f;f;t;0;b1dbe6c3-9832-447c-801c-f0fbe5287155",
+			"913;914;0;f;f;f;913;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"914;915;0;f;f;f;914;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"914;915;2;f;f;t;0;60262683-8e90-4f2d-934a-7f33c30567ef",
+			"915;916;0;f;f;f;915;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"916;917;0;f;f;f;916;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"915;917;2;f;f;t;0;65e4a3e3-4401-4150-ade2-967090772c57",
+			"917;918;0;f;f;f;917;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"918;919;0;f;f;f;918;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"918;919;2;f;f;t;0;bc5c8576-2238-4a29-b21d-64b62f6bc6a0",
+			"919;920;0;f;f;f;919;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"920;921;0;f;f;f;920;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"919;921;2;f;f;t;0;ba444d8c-169a-4234-bc32-e55ece47c92b",
+			"921;922;0;f;f;f;921;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"922;923;0;f;f;f;922;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"922;923;2;f;f;t;0;6e461967-b710-422d-83db-975c949135a2",
+			"923;924;0;f;f;f;923;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"924;925;0;f;f;f;924;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"923;925;2;f;f;t;0;6372fe9d-4c42-4f17-a401-e7356b5ce813",
+			"925;926;0;f;f;f;925;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"926;927;0;f;f;f;926;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"926;927;2;f;f;t;0;f50e302d-861f-483b-a17d-a61b43ac1854",
+			"927;928;0;f;f;f;927;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"928;929;0;f;f;f;928;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"927;929;2;f;f;t;0;a111cff2-ed6f-4538-8a5e-82966e40fb0a",
+			"929;930;0;f;f;f;929;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"930;931;0;f;f;f;930;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"930;931;2;f;f;t;0;b2364685-4bbc-4a8b-b044-d7eafc1d1b20",
+			"931;932;0;f;f;f;931;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"932;933;0;f;f;f;932;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"931;933;2;f;f;t;0;911c0dcd-297f-46c4-a118-adff928a8d8b",
+			"933;934;0;f;f;f;933;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"934;935;0;f;f;f;934;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"935;936;0;f;f;f;935;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"934;936;2;f;f;t;0;c3f07a71-9605-48b6-a1d0-ca774072041f",
+			"935;936;2;f;f;t;0;8ed56ef1-4ce6-448c-a5df-747f5044b371",
+			"936;937;0;f;f;f;936;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"937;938;0;f;f;f;937;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"938;939;0;f;f;f;938;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"938;939;2;f;f;t;0;b1cf65d5-244a-4c86-9ebe-c4da655a45b9",
+			"939;940;0;f;f;f;939;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"940;941;0;f;f;f;940;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"940;941;2;f;f;t;0;b2dd0d9c-4d0a-4523-b3ff-7e63d5bd67ac",
+			"941;942;0;f;f;f;941;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"942;943;0;f;f;f;942;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"942;943;2;f;f;t;0;4736cc1d-4584-4f35-b670-75c89b79becc",
+			"943;944;0;f;f;f;943;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"944;945;0;f;f;f;944;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"944;945;2;f;f;t;0;375ec02e-1ba1-42b6-9a7d-b2655602780f",
+			"945;946;0;f;f;f;945;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"946;947;0;f;f;f;946;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"946;947;2;f;f;t;0;4c0d2b6d-eda8-47ea-9a9f-2476c8950223",
+			"947;948;0;f;f;f;947;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"948;949;0;f;f;f;948;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"948;949;2;f;f;t;0;ac990d77-32c9-4c36-9f39-5a9d464a1f5e",
+			"949;950;0;f;f;f;949;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"950;951;0;f;f;f;950;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"950;951;2;f;f;t;0;68d6988a-dac1-40cc-a129-23ff1be2e9b0",
+			"951;952;0;f;f;f;951;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"952;953;0;f;f;f;952;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"952;953;2;f;f;t;0;58d7af45-e0cf-4f07-92d0-a4279020b8e0",
+			"953;954;0;f;f;f;953;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"954;955;0;f;f;f;954;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"954;955;2;f;f;t;0;3f4269ed-bb6b-4f54-8158-f979c9151ef5",
+			"955;956;0;f;f;f;955;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"956;957;0;f;f;f;956;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"956;957;2;f;f;t;0;7d7ef695-90d8-47a4-bf12-412983dea5fe",
+			"957;958;0;f;f;f;957;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"958;959;0;f;f;f;958;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"958;959;2;f;f;t;0;4cd09b3a-64fc-4865-9751-eebe29d81f55",
+			"959;960;0;f;f;f;959;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"960;961;0;f;f;f;960;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"960;961;2;f;f;t;0;6c196840-e449-4116-be05-ec3d297117f1",
+			"961;962;0;f;f;f;961;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"962;963;0;f;f;f;962;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"962;963;2;f;f;t;0;cfa0f129-e89a-4118-a3b4-f00d2ae798de",
+			"963;964;0;f;f;f;963;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"964;965;0;f;f;f;964;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"964;965;2;f;f;t;0;107f26bf-125f-470d-a053-2ee56f161807",
+			"965;966;0;f;f;f;965;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"966;967;0;f;f;f;966;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"966;967;2;f;f;t;0;07d7638e-e98f-4630-b1d8-1d039679d9e2",
+			"967;968;0;f;f;f;967;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"968;969;0;f;f;f;968;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"968;969;2;f;f;t;0;aedf2ae7-92c8-43a8-8a62-9ae81f22d40f",
+			"969;970;0;f;f;f;969;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"970;971;0;f;f;f;970;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"970;971;2;f;f;t;0;e9a5f8d8-6f31-42b0-bde3-c1867facead5",
+			"971;972;0;f;f;f;971;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"972;973;0;f;f;f;972;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"972;973;2;f;f;t;0;c2820817-09f8-4102-a2dc-41d7b669823a",
+			"973;974;0;f;f;f;973;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"974;975;0;f;f;f;974;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"974;975;2;f;f;t;0;6af4b586-cfe3-4cbc-952b-f42d6fb36285",
+			"975;976;0;f;f;f;975;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"976;977;0;f;f;f;976;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"976;977;2;f;f;t;0;b735dacc-6610-4d1c-b2e6-883f8cc47295",
+			"977;978;0;f;f;f;977;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"978;979;0;f;f;f;978;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"978;979;2;f;f;t;0;08106254-bb17-4afb-899b-a5e9a4d55c4d",
+			"979;980;0;f;f;f;979;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"980;981;0;f;f;f;980;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"980;981;2;f;f;t;0;eb1fbb5c-775e-499e-84bd-a0c71f8981f8",
+			"981;982;0;f;f;f;981;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"982;983;0;f;f;f;982;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"982;983;2;f;f;t;0;d857e232-5c4e-4a30-a230-f9721bda7b50",
+			"983;984;0;f;f;f;983;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"984;985;0;f;f;f;984;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"984;985;2;f;f;t;0;6822a499-73ff-4840-b4ef-0e9a4aa59919",
+			"985;986;0;f;f;f;985;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"986;987;0;f;f;f;986;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"986;987;2;f;f;t;0;1dad384f-b11c-4d9b-8183-88386e8fab2c",
+			"987;988;0;f;f;f;987;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"988;989;0;f;f;f;988;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"988;989;2;f;f;t;0;13f0c8f5-e208-4616-b63b-4d8366514df5",
+			"989;990;0;f;f;f;989;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"990;991;0;f;f;f;990;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"990;991;2;f;f;t;0;59985bad-0f2f-4c26-866d-289430fe60be",
+			"991;992;0;f;f;f;991;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"992;993;0;f;f;f;992;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"992;993;2;f;f;t;0;ea6c69e6-400e-4835-9e71-7ddb07a9b551",
+			"993;994;0;f;f;f;993;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"994;995;0;f;f;f;994;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"994;995;2;f;f;t;0;02995fa5-036a-4acb-8849-9ecd592118ce",
+			"995;996;0;f;f;f;995;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"996;997;0;f;f;f;996;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"996;997;2;f;f;t;0;93aa0db8-b96b-4909-988f-3b2cd0f07b36",
+			"997;998;0;f;f;f;997;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"998;999;0;f;f;f;998;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"998;999;2;f;f;t;0;fba2aa95-3595-4c8e-aeb6-829a7513b780",
+			"999;1000;0;f;f;f;999;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1000;1001;0;f;f;f;1000;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1000;1001;2;f;f;t;0;0fea2aae-a5cd-4b57-b6ff-b765e092d74b",
+			"1001;1002;0;f;f;f;1001;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1002;1003;0;f;f;f;1002;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1002;1003;2;f;f;t;0;4109925d-1acf-4ec6-b5a9-bbf77780a642",
+			"1003;1004;0;f;f;f;1003;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1004;1005;0;f;f;f;1004;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1004;1005;2;f;f;t;0;4d722aa6-c6a6-45cc-8b90-7b86757e490b",
+			"1005;1006;0;f;f;f;1005;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1006;1007;0;f;f;f;1006;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1006;1007;2;f;f;t;0;1addff10-f707-4f09-be56-9d0975458c08",
+			"1007;1008;0;f;f;f;1007;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1008;1009;0;f;f;f;1008;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1008;1009;2;f;f;t;0;ca520375-5644-4084-af01-272349aed4c0",
+			"1009;1010;0;f;f;f;1009;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1010;1011;0;f;f;f;1010;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1010;1011;2;f;f;t;0;09067463-08bd-443b-a120-a3f92fe2d2d1",
+			"1011;1012;0;f;f;f;1011;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1012;1013;0;f;f;f;1012;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1012;1013;2;f;f;t;0;2560af91-a559-48f2-ae77-0e51fae5036d",
+			"1013;1014;0;f;f;f;1013;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1014;1015;0;f;f;f;1014;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1014;1015;2;f;f;t;0;a5a20013-a2d2-40ea-85d7-3db745814eb5",
+			"1015;1016;0;f;f;f;1015;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1016;1017;0;f;f;f;1016;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1016;1017;2;f;f;t;0;34d73310-f08b-46f4-90f4-14e1e232f3a8",
+			"1017;1018;0;f;f;f;1017;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1018;1019;0;f;f;f;1018;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1018;1019;2;f;f;t;0;8801850b-57b8-47f8-8799-057f56614e06",
+			"1019;1020;0;f;f;f;1019;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1020;1021;0;f;f;f;1020;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1020;1021;2;f;f;t;0;df408277-5aa6-4da6-8780-b705090b3e0d",
+			"1021;1022;0;f;f;f;1021;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1022;1023;0;f;f;f;1022;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1022;1023;2;f;f;t;0;4f75b617-13a6-42e5-a6d2-3486b86c7e5f",
+			"1023;1024;0;f;f;f;1023;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1024;1025;0;f;f;f;1024;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1024;1025;2;f;f;t;0;1266c929-875c-46b9-8e23-a119e09f2b82",
+			"1025;1026;0;f;f;f;1025;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1026;1027;0;f;f;f;1026;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1026;1027;2;f;f;t;0;423115b9-837a-4bb7-842c-afd419ce74e9",
+			"1027;1028;0;f;f;f;1027;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1028;1029;0;f;f;f;1028;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1028;1029;2;f;f;t;0;ee4cce01-c489-4c79-aff9-44cce60043f1",
+			"1029;1030;0;f;f;f;1029;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1030;1031;0;f;f;f;1030;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1030;1031;2;f;f;t;0;dcf30a73-7613-4353-bd1b-1e857202eb97",
+			"1031;1032;0;f;f;f;1031;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1032;1033;0;f;f;f;1032;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1032;1033;2;f;f;t;0;a4fe5853-0d22-4511-be01-89479f9e7db2",
+			"1033;1034;0;f;f;f;1033;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1034;1035;0;f;f;f;1034;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1034;1035;2;f;f;t;0;ece2e405-c00e-4909-93eb-c7bd57b21935",
+			"1035;1036;0;f;f;f;1035;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1036;1037;0;f;f;f;1036;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1036;1037;2;f;f;t;0;b5afc4f0-c5e2-4d23-a711-bceb324ee9f5",
+			"1037;1038;0;f;f;f;1037;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1038;1039;0;f;f;f;1038;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1038;1039;2;f;f;t;0;2a848428-3974-4bb2-88ef-ec8f9067ba78",
+			"1039;1040;0;f;f;f;1039;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1040;1041;0;f;f;f;1040;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1041;1042;0;f;f;f;1041;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1040;1042;2;f;f;t;0;d2184972-b24a-4f88-9a42-dd6496121b9d",
+			"1041;1042;2;f;f;t;0;5278a50e-e72e-474f-9c47-bbb4cc0bbc8d",
+			"1042;1043;0;f;f;f;1042;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1043;1044;0;f;f;f;1043;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1044;1045;0;f;f;f;1044;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1045;1046;0;f;f;f;1045;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1044;1046;2;f;f;t;0;664ded0c-aff2-4fb5-bbb6-aabb3189eca1",
+			"1045;1046;2;f;f;t;0;c83dd033-3279-4c80-9f27-25a9a2ffdca8",
+			"1046;1047;0;f;f;f;1046;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1047;1048;0;f;f;f;1047;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1048;1049;0;f;f;f;1048;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1048;1049;2;f;f;t;0;9e309993-dd78-4b31-b126-6822634eaf09",
+			"1049;1050;0;f;f;f;1049;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1050;1051;0;f;f;f;1050;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1050;1051;2;f;f;t;0;afe4224c-816b-484f-8a99-a8c6d5a3bbe3",
+			"1051;1052;0;f;f;f;1051;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1052;1053;0;f;f;f;1052;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1052;1053;2;f;f;t;0;290a23de-8085-494b-aa11-d8ffd0a275d8",
+			"1053;1054;0;f;f;f;1053;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1054;1055;0;f;f;f;1054;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1054;1055;2;f;f;t;0;34cf3433-1d33-41f4-913b-3500a37dac57",
+			"1055;1056;0;f;f;f;1055;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1056;1057;0;f;f;f;1056;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1056;1057;2;f;f;t;0;25389378-5e33-4320-9bcb-9ccfafd52f2c",
+			"1057;1058;0;f;f;f;1057;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1058;1059;0;f;f;f;1058;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1057;1059;2;f;f;t;0;9d3408b2-be3d-484d-b6c1-76c450cc090b",
+			"1059;1060;0;f;f;f;1059;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1060;1061;0;f;f;f;1060;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1060;1061;2;f;f;t;0;0c5d12e4-0a98-4d93-9209-3f30524a3106",
+			"1061;1062;0;f;f;f;1061;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1062;1063;0;f;f;f;1062;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1062;1063;2;f;f;t;0;89d53f09-cbe9-45b3-a4c6-766c28e62b57",
+			"1063;1064;0;f;f;f;1063;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1064;1065;0;f;f;f;1064;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1064;1065;2;f;f;t;0;79ae3bc3-a679-456a-8043-b321a3324015",
+			"1065;1066;0;f;f;f;1065;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1066;1067;0;f;f;f;1066;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1066;1067;2;f;f;t;0;e61bc7a0-4c93-4e0a-b070-1fb0f8129236",
+			"1067;1068;0;f;f;f;1067;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1068;1069;0;f;f;f;1068;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1068;1069;2;f;f;t;0;988b45fa-dbc7-4a11-a3a0-a0fd498cf8b5",
+			"1069;1070;0;f;f;f;1069;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1070;1071;0;f;f;f;1070;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1069;1071;2;f;f;t;0;641d5947-9d66-4fb5-a9b2-e1f5c4a64612",
+			"1071;1072;0;f;f;f;1071;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1072;1073;0;f;f;f;1072;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1072;1073;2;f;f;t;0;f365705e-d51c-42e2-be36-c88c8df346a1",
+			"1073;1074;0;f;f;f;1073;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1074;1075;0;f;f;f;1074;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1074;1075;2;f;f;t;0;6b480a30-8345-46f0-94ac-bcc6fa9a4f2c",
+			"1075;1076;0;f;f;f;1075;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1076;1077;0;f;f;f;1076;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1076;1077;2;f;f;t;0;32ff1d89-aba5-4a81-a21b-78e3ddb9e417",
+			"1077;1078;0;f;f;f;1077;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1078;1079;0;f;f;f;1078;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1078;1079;2;f;f;t;0;bdea5d85-4475-49f5-90bd-6040fc616a6f",
+			"1079;1080;0;f;f;f;1079;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1080;1081;0;f;f;f;1080;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1080;1081;2;f;f;t;0;0dcbeb1c-8cd0-4c6f-aba3-462265a0785e",
+			"1081;1082;0;f;f;f;1081;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1082;1083;0;f;f;f;1082;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1082;1083;2;f;f;t;0;c2a36988-7571-4db5-9634-129dcbd521a0",
+			"1083;1084;0;f;f;f;1083;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1084;1085;0;f;f;f;1084;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1084;1085;2;f;f;t;0;c0d920fe-f45b-41b4-9881-50e4fd05300e",
+			"1085;1086;0;f;f;f;1085;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1086;1087;0;f;f;f;1086;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1086;1087;2;f;f;t;0;7a8d2370-c07e-47c9-86ed-267889c80a9b",
+			"1087;1088;0;f;f;f;1087;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1088;1089;0;f;f;f;1088;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1088;1089;2;f;f;t;0;2d376eb0-b08f-4317-bb92-347b460f3fdb",
+			"1089;1090;0;f;f;f;1089;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1090;1091;0;f;f;f;1090;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1090;1091;2;f;f;t;0;2faa43ae-37cd-4ab6-96e0-34a41edbe992",
+			"1091;1092;0;f;f;f;1091;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1092;1093;0;f;f;f;1092;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1092;1093;2;f;f;t;0;70ce0e1f-4b2a-4816-aa24-719f4be71008",
+			"1093;1094;0;f;f;f;1093;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1094;1095;0;f;f;f;1094;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1094;1095;2;f;f;t;0;ef3380d2-f234-446f-8c80-8f7bbb6f812a",
+			"1095;1096;0;f;f;f;1095;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1096;1097;0;f;f;f;1096;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1096;1097;2;f;f;t;0;cfbe6183-2766-4a8f-b20f-1ae6243bbfaa",
+			"1097;1098;0;f;f;f;1097;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1098;1099;0;f;f;f;1098;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1098;1099;2;f;f;t;0;893606a3-2001-464f-8d83-42d825dc1ba5",
+			"1099;1100;0;f;f;f;1099;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1100;1101;0;f;f;f;1100;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1100;1101;2;f;f;t;0;1d8f6c8a-9f2e-4c33-854e-7974c820c8c4",
+			"1101;1102;0;f;f;f;1101;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1102;1103;0;f;f;f;1102;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1102;1103;2;f;f;t;0;54a5b6d5-5f33-468b-9afc-d83d85ebd295",
+			"1103;1104;0;f;f;f;1103;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1104;1105;0;f;f;f;1104;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1103;1105;2;f;f;t;0;a55404f9-553d-404e-9c69-3b9fbe44d498",
+			"1105;1106;0;f;f;f;1105;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1106;1107;0;f;f;f;1106;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1107;1108;0;f;f;f;1107;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1106;1108;2;f;f;t;0;ddcc2316-f976-4ab1-99a6-e27ccacb2ee2",
+			"1107;1108;2;f;f;t;0;7e5cbcac-4393-4d09-aa38-2f5599601251",
+			"1108;1109;0;f;f;f;1108;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1109;1110;0;f;f;f;1109;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1110;1111;0;f;f;f;1110;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1110;1111;2;f;f;t;0;51028c97-94f6-4002-9ee3-6b525f255dbb",
+			"1111;1112;0;f;f;f;1111;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1112;1113;0;f;f;f;1112;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1112;1113;2;f;f;t;0;359e14d1-5b43-497e-b4c0-c28fed26e287",
+			"1113;1114;0;f;f;f;1113;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1114;1115;0;f;f;f;1114;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1114;1115;2;f;f;t;0;55fa0d16-ec92-4d17-8911-cb5124f56042",
+			"1115;1116;0;f;f;f;1115;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1116;1117;0;f;f;f;1116;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1116;1117;2;f;f;t;0;92237699-9d6e-4670-bacf-84e1cc1e5c02",
+			"1117;1118;0;f;f;f;1117;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1118;1119;0;f;f;f;1118;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1118;1119;2;f;f;t;0;22ac0aa6-54cc-4a11-9eaf-e9b784ac4f19",
+			"1119;1120;0;f;f;f;1119;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1120;1121;0;f;f;f;1120;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1119;1121;2;f;f;t;0;dd67f391-5bfc-4819-bae0-2ebbcd529f17",
+			"1121;1122;0;f;f;f;1121;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1122;1123;0;f;f;f;1122;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1122;1123;2;f;f;t;0;fa43730c-b84b-49ab-953b-bd1ed88b9aa0",
+			"1123;1124;0;f;f;f;1123;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1124;1125;0;f;f;f;1124;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1123;1125;2;f;f;t;0;6db051ce-363b-48b1-884e-1503e33925ae",
+			"1125;1126;0;f;f;f;1125;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1126;1127;0;f;f;f;1126;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1126;1127;2;f;f;t;0;40374382-2e4e-433d-a148-2908f239c6f8",
+			"1127;1128;0;f;f;f;1127;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1128;1129;0;f;f;f;1128;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1127;1129;2;f;f;t;0;f22ae9ee-dfd4-4a6f-a097-901fa2e2bebe",
+			"1129;1130;0;f;f;f;1129;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1130;1131;0;f;f;f;1130;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1130;1131;2;f;f;t;0;e39e64a2-d35b-4716-891f-51fc5062527a",
+			"1131;1132;0;f;f;f;1131;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1132;1133;0;f;f;f;1132;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1132;1133;2;f;f;t;0;34c5e6ad-c036-44f3-9cd0-7db53078f68f",
+			"1133;1134;0;f;f;f;1133;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1134;1135;0;f;f;f;1134;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1134;1135;2;f;f;t;0;ddc00283-b3f0-4348-a0d3-462d7be77bd1",
+			"1135;1136;0;f;f;f;1135;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1136;1137;0;f;f;f;1136;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1135;1137;2;f;f;t;0;7f5fcba8-70b8-438f-943b-127842b529bb",
+			"1137;1138;0;f;f;f;1137;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1138;1139;0;f;f;f;1138;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1138;1139;2;f;f;t;0;1baccbe9-3c6c-4fd6-a484-297c2bea7a6c",
+			"1139;1140;0;f;f;f;1139;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1140;1141;0;f;f;f;1140;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1140;1141;2;f;f;t;0;fae72b6d-0ffb-494d-97ce-771cf17ae1ec",
+			"1141;1142;0;f;f;f;1141;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1142;1143;0;f;f;f;1142;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1142;1143;2;f;f;t;0;42d3236c-56fe-4de2-b574-dfecb0b44727",
+			"1143;1144;0;f;f;f;1143;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1144;1145;0;f;f;f;1144;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1144;1145;2;f;f;t;0;ba44ec93-3932-4d1a-aaab-868398ae5416",
+			"1145;1146;0;f;f;f;1145;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1146;1147;0;f;f;f;1146;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1146;1147;2;f;f;t;0;ff61300c-d14a-4585-89fd-bed33e0eeb11",
+			"1147;1148;0;f;f;f;1147;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1148;1149;0;f;f;f;1148;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1148;1149;2;f;f;t;0;285667e0-580b-4f1c-879b-1e4c6ddaa23f",
+			"1149;1150;0;f;f;f;1149;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1150;1151;0;f;f;f;1150;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1150;1151;2;f;f;t;0;14c1a33c-a695-4c52-8287-2a466fff06fb",
+			"1151;1152;0;f;f;f;1151;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1152;1153;0;f;f;f;1152;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1152;1153;2;f;f;t;0;56e05af3-1bf6-4038-a8f8-6414fe29145e",
+			"1153;1154;0;f;f;f;1153;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1154;1155;0;f;f;f;1154;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1154;1155;2;f;f;t;0;920a41a0-e7f5-488a-888a-5c6d1415268a",
+			"1155;1156;0;f;f;f;1155;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1156;1157;0;f;f;f;1156;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1156;1157;2;f;f;t;0;cafd64d8-5af6-4e72-8092-10147e464eea",
+			"1157;1158;0;f;f;f;1157;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1158;1159;0;f;f;f;1158;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1158;1159;2;f;f;t;0;971903ec-bfe6-486c-b155-40198eab9fa0",
+			"1159;1160;0;f;f;f;1159;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1160;1161;0;f;f;f;1160;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1160;1161;2;f;f;t;0;8b0812fb-39a3-4e69-a19c-35bc6ffc1c63",
+			"1161;1162;0;f;f;f;1161;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1162;1163;0;f;f;f;1162;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1162;1163;2;f;f;t;0;0ada153c-af4e-4766-9d97-cbd3130e19eb",
+			"1163;1164;0;f;f;f;1163;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1164;1165;0;f;f;f;1164;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1164;1165;2;f;f;t;0;ee794ca1-f3cb-4ef9-9cf4-117f3e6f88d4",
+			"1165;1166;0;f;f;f;1165;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1166;1167;0;f;f;f;1166;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1166;1167;2;f;f;t;0;f91bd102-39d6-4569-b267-dda8880f625a",
+			"1167;1168;0;f;f;f;1167;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1168;1169;0;f;f;f;1168;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1168;1169;2;f;f;t;0;18692645-045d-417a-b2a0-291de6baa378",
+			"1169;1170;0;f;f;f;1169;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1170;1171;0;f;f;f;1170;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1170;1171;2;f;f;t;0;4c14ce62-f75b-4145-aef1-e60652d6f150",
+			"1171;1172;0;f;f;f;1171;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1172;1173;0;f;f;f;1172;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1172;1173;2;f;f;t;0;63879818-7a21-42fe-a486-a0987e62ec29",
+			"1173;1174;0;f;f;f;1173;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1174;1175;0;f;f;f;1174;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1174;1175;2;f;f;t;0;3c37cdd9-2781-4162-a7be-b646227e1107",
+			"1175;1176;0;f;f;f;1175;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1176;1177;0;f;f;f;1176;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1176;1177;2;f;f;t;0;137ddb5f-c2e6-41cc-aa5e-13a8f62c75a1",
+			"1177;1178;0;f;f;f;1177;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1178;1179;0;f;f;f;1178;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1178;1179;2;f;f;t;0;e03e56f7-8e92-4bc2-bd81-04b283f2f896",
+			"1179;1180;0;f;f;f;1179;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1180;1181;0;f;f;f;1180;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1180;1181;2;f;f;t;0;82215050-9ff3-41a2-97d1-426008a8813a",
+			"1181;1182;0;f;f;f;1181;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1182;1183;0;f;f;f;1182;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1181;1183;2;f;f;t;0;f3d13f9d-ee50-47ca-9fc9-ac7cc76caa15",
+			"1183;1184;0;f;f;f;1183;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1184;1185;0;f;f;f;1184;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1184;1185;2;f;f;t;0;897576ea-e792-4156-b8c3-69ca01e2254d",
+			"1185;1186;0;f;f;f;1185;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1186;1187;0;f;f;f;1186;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1186;1187;2;f;f;t;0;183f6db1-6ada-4fa1-a4fe-0b9388bd2895",
+			"1187;1188;0;f;f;f;1187;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1188;1189;0;f;f;f;1188;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1188;1189;2;f;f;t;0;dbd5e162-6f29-4a02-a9c4-d6bdf8efde74",
+			"1189;1190;0;f;f;f;1189;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1190;1191;0;f;f;f;1190;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1190;1191;2;f;f;t;0;ab570bb8-3f1c-4326-88f2-ddd43dd8455f",
+			"1191;1192;0;f;f;f;1191;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1192;1193;0;f;f;f;1192;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1192;1193;2;f;f;t;0;adf2caa4-2472-4f20-b2a0-d67b94dff19a",
+			"1193;1194;0;f;f;f;1193;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1194;1195;0;f;f;f;1194;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1194;1195;2;f;f;t;0;7b04af31-e4f0-49cd-ba7a-74fb7b7f3c39",
+			"1195;1196;0;f;f;f;1195;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1196;1197;0;f;f;f;1196;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1196;1197;2;f;f;t;0;2c56ca92-e7ed-4b30-a37b-c63bbcfdec62",
+			"1197;1198;0;f;f;f;1197;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1198;1199;0;f;f;f;1198;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1198;1199;2;f;f;t;0;9d9890eb-58d9-4025-ab20-d92d94b825b7",
+			"1199;1200;0;f;f;f;1199;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1200;1201;0;f;f;f;1200;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1200;1201;2;f;f;t;0;94b7e09d-5a72-4e7c-91b0-6a4f2db74e16",
+			"1201;1202;0;f;f;f;1201;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1202;1203;0;f;f;f;1202;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1202;1203;2;f;f;t;0;b87d764d-faf3-4281-a4a2-ae9435c2292f",
+			"1203;1204;0;f;f;f;1203;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1204;1205;0;f;f;f;1204;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1204;1205;2;f;f;t;0;d0a85322-6c35-4731-b2f3-931aa732e87f",
+			"1205;1206;0;f;f;f;1205;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1206;1207;0;f;f;f;1206;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1205;1207;2;f;f;t;0;f3bf4841-b3db-4062-a885-8efd807677ba",
+			"1207;1208;0;f;f;f;1207;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1208;1209;0;f;f;f;1208;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1208;1209;2;f;f;t;0;c8e7e461-db39-4889-9a4d-d390b48cbbda",
+			"1209;1210;0;f;f;f;1209;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1210;1211;0;f;f;f;1210;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1209;1211;2;f;f;t;0;792d39ad-1d5f-4447-990b-53c3fdc8d1a1",
+			"1211;1212;0;f;f;f;1211;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1212;1213;0;f;f;f;1212;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1212;1213;2;f;f;t;0;be44eb12-657e-4fd5-b009-46c4ddf5286d",
+			"1213;1214;0;f;f;f;1213;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1214;1215;0;f;f;f;1214;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1214;1215;2;f;f;t;0;efdedbac-a041-47e8-971a-74536ea5ad36",
+			"1215;1216;0;f;f;f;1215;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1216;1217;0;f;f;f;1216;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1216;1217;2;f;f;t;0;61411ee6-dff9-4e29-b0d8-05c5213df6e6",
+			"1217;1218;0;f;f;f;1217;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1218;1219;0;f;f;f;1218;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1218;1219;2;f;f;t;0;ca1c0d13-5721-43f2-916c-1e4688525a77",
+			"1219;1220;0;f;f;f;1219;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1220;1221;0;f;f;f;1220;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1220;1221;2;f;f;t;0;8a48a941-68c9-4b10-8267-e96fce120413",
+			"1221;1222;0;f;f;f;1221;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1222;1223;0;f;f;f;1222;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1222;1223;2;f;f;t;0;6cb0a381-4948-4c71-98c8-e0d9dcc360a4",
+			"1223;1224;0;f;f;f;1223;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1224;1225;0;f;f;f;1224;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1224;1225;2;f;f;t;0;f9002769-6b1a-48a3-977e-178b759d7160",
+			"1225;1226;0;f;f;f;1225;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1226;1227;0;f;f;f;1226;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1226;1227;2;f;f;t;0;2915f979-4f64-4a62-b6b1-60f50ab6ce4e",
+			"1227;1228;0;f;f;f;1227;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1228;1229;0;f;f;f;1228;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1227;1229;2;f;f;t;0;93c9ee56-3798-4a4d-a033-91bd7d12bbd8",
+			"1229;1230;0;f;f;f;1229;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1230;1231;0;f;f;f;1230;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1230;1231;2;f;f;t;0;5e466723-7313-4602-8d11-a9f3532e61a4",
+			"1231;1232;0;f;f;f;1231;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1232;1233;0;f;f;f;1232;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1231;1233;2;f;f;t;0;0bf89fd8-1405-44d0-b86a-0853a7f634e4",
+			"1233;1234;0;f;f;f;1233;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1234;1235;0;f;f;f;1234;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1234;1235;2;f;f;t;0;39a2a91e-903f-43db-b238-312a62c2c678",
+			"1235;1236;0;f;f;f;1235;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1236;1237;0;f;f;f;1236;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1235;1237;2;f;f;t;0;19f8b1dd-22a3-4ac8-b985-ad3d7799e5d0",
+			"1237;1238;0;f;f;f;1237;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1238;1239;0;f;f;f;1238;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1238;1239;2;f;f;t;0;bcb8bf6b-e507-4a8a-a506-d6a6a03fe7f8",
+			"1239;1240;0;f;f;f;1239;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1240;1241;0;f;f;f;1240;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1239;1241;2;f;f;t;0;096e5a85-451b-4495-9f7a-067f10af85d7",
+			"1241;1242;0;f;f;f;1241;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1242;1243;0;f;f;f;1242;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1242;1243;2;f;f;t;0;9cc7e457-c94a-43e5-b49d-54335ba44db5",
+			"1243;1244;0;f;f;f;1243;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1244;1245;0;f;f;f;1244;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1244;1245;2;f;f;t;0;9f7ef9ff-9271-4c3c-ba84-c76739d1c51f",
+			"1245;1246;0;f;f;f;1245;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1246;1247;0;f;f;f;1246;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1246;1247;2;f;f;t;0;59bdd2a3-9019-44c6-847e-5e67f33fc5a1",
+			"1247;1248;0;f;f;f;1247;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1248;1249;0;f;f;f;1248;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1247;1249;2;f;f;t;0;edaf2a67-8d55-44c9-aa69-a08748be422b",
+			"1249;1250;0;f;f;f;1249;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1250;1251;0;f;f;f;1250;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1250;1251;2;f;f;t;0;e391d47b-62be-4b26-8721-4896fa9507e5",
+			"1251;1252;0;f;f;f;1251;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1252;1253;0;f;f;f;1252;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1251;1253;2;f;f;t;0;20fe4bca-2078-4930-920a-85a8914cd518",
+			"1253;1254;0;f;f;f;1253;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1254;1255;0;f;f;f;1254;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1255;1256;0;f;f;f;1255;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1254;1256;2;f;f;t;0;baeaa69b-ec3e-4ab3-a7c4-4d5d16acd014",
+			"1255;1256;2;f;f;t;0;06794cd6-eebc-493a-80db-137119b61e67",
+			"1256;1257;0;f;f;f;1256;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1257;1258;0;f;f;f;1257;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1258;1259;0;f;f;f;1258;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1258;1259;2;f;f;t;0;6c1cfd38-be74-4dfc-8a79-024a53e1926c",
+			"1259;1260;0;f;f;f;1259;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1260;1261;0;f;f;f;1260;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1259;1261;2;f;f;t;0;096ad74d-76eb-440e-88a5-625b40826c16",
+			"1261;1262;0;f;f;f;1261;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1262;1263;0;f;f;f;1262;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1262;1263;2;f;f;t;0;a050b92e-9590-445e-8cd2-e11793883f71",
+			"1263;1264;0;f;f;f;1263;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1264;1265;0;f;f;f;1264;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1264;1265;2;f;f;t;0;f460b24f-6970-4258-8791-13f753447f53",
+			"1265;1266;0;f;f;f;1265;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1266;1267;0;f;f;f;1266;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1266;1267;2;f;f;t;0;349efe16-8ba6-44d6-9fdb-ad0cac0788b0",
+			"1267;1268;0;f;f;f;1267;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1268;1269;0;f;f;f;1268;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1268;1269;2;f;f;t;0;c02a3438-3bdb-48b7-9f6a-10d75c2549a7",
+			"1269;1270;0;f;f;f;1269;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1270;1271;0;f;f;f;1270;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1270;1271;2;f;f;t;0;4fa8e6d9-ab32-4bae-abbc-97cb4386fa56",
+			"1271;1272;0;f;f;f;1271;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1272;1273;0;f;f;f;1272;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1272;1273;2;f;f;t;0;5b11bb87-f6a6-4266-ae70-5ab7d855352f",
+			"1273;1274;0;f;f;f;1273;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1274;1275;0;f;f;f;1274;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1274;1275;2;f;f;t;0;ca82e364-f6c7-4eab-9ea2-0040e231ee78",
+			"1275;1276;0;f;f;f;1275;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1276;1277;0;f;f;f;1276;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1276;1277;2;f;f;t;0;2164c7b6-67bb-4a0b-9e8f-d3f9e5e3ceac",
+			"1277;1278;0;f;f;f;1277;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1278;1279;0;f;f;f;1278;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1278;1279;2;f;f;t;0;90759a4e-364c-4593-8337-e7d350c97685",
+			"1279;1280;0;f;f;f;1279;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1280;1281;0;f;f;f;1280;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1280;1281;2;f;f;t;0;d31b86c1-0f61-4096-bb5e-900edcfd5384",
+			"1281;1282;0;f;f;f;1281;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1282;1283;0;f;f;f;1282;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1283;1284;0;f;f;f;1283;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1282;1284;2;f;f;t;0;f99bc8f4-8541-41bf-bb2d-1fb518ddfb64",
+			"1283;1284;2;f;f;t;0;5624e685-c69b-4450-b62a-4b43c3103b37",
+			"1284;1285;0;f;f;f;1284;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1285;1286;0;f;f;f;1285;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1286;1287;0;f;f;f;1286;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1286;1287;2;f;f;t;0;714fd8d9-0f96-4208-88f6-c7ce7a7fdcfc",
+			"1287;1288;0;f;f;f;1287;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1288;1289;0;f;f;f;1288;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1288;1289;2;f;f;t;0;b3ad8f07-d28f-4af9-907c-9f154eb3ac58",
+			"1289;1290;0;f;f;f;1289;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1290;1291;0;f;f;f;1290;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1290;1291;2;f;f;t;0;5b5b0a54-cb86-415b-85d2-3d432efeadbc",
+			"1291;1292;0;f;f;f;1291;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1292;1293;0;f;f;f;1292;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1292;1293;2;f;f;t;0;31da00fb-6825-4f95-ae57-4aaf52498ed6",
+			"1293;1294;0;f;f;f;1293;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1294;1295;0;f;f;f;1294;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1294;1295;2;f;f;t;0;b0ace1ec-28ac-4a9b-9888-2d437b788b0e",
+			"1295;1296;0;f;f;f;1295;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1296;1297;0;f;f;f;1296;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1295;1297;2;f;f;t;0;0626b0bb-2112-4a5f-9e34-0747ac5caa8d",
+			"1297;1298;0;f;f;f;1297;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1298;1299;0;f;f;f;1298;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1298;1299;2;f;f;t;0;53283158-b84c-41c0-ae1d-78a8e6c1989e",
+			"1299;1300;0;f;f;f;1299;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1300;1301;0;f;f;f;1300;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1300;1301;2;f;f;t;0;cce6101e-49de-4575-99b7-d5edcba9d2f2",
+			"1301;1302;0;f;f;f;1301;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1302;1303;0;f;f;f;1302;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1302;1303;2;f;f;t;0;2707a820-66af-4621-b41c-f2e01e0fde1f",
+			"1303;1304;0;f;f;f;1303;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1304;1305;0;f;f;f;1304;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1303;1305;2;f;f;t;0;e8eb9d74-f1eb-4a1f-90c6-7b9dfa2046ca",
+			"1305;1306;0;f;f;f;1305;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1306;1307;0;f;f;f;1306;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1307;1308;0;f;f;f;1307;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1306;1308;2;f;f;t;0;a69ea498-9fbe-4460-aed8-4b58ff5b9b45",
+			"1307;1308;2;f;f;t;0;67c0b88f-1e9f-42d9-ab36-41ca3a2c9155",
+			"1308;1309;0;f;f;f;1308;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1309;1310;0;f;f;f;1309;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1310;1311;0;f;f;f;1310;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1311;1312;0;f;f;f;1311;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1310;1312;2;f;f;t;0;08d03f7b-e95e-4833-99b8-961e2e600e69",
+			"1311;1312;2;f;f;t;0;acbc820e-01dd-43b8-b0f3-e2be076f6eb1",
+			"1312;1313;0;f;f;f;1312;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1313;1314;0;f;f;f;1313;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1314;1315;0;f;f;f;1314;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1314;1315;2;f;f;t;0;43e62a1b-d1a6-47b4-a12f-8ca331f7367a",
+			"1315;1316;0;f;f;f;1315;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1316;1317;0;f;f;f;1316;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1316;1317;2;f;f;t;0;4fa6a2b9-a251-4f65-8b4c-d1a45e66e432",
+			"1317;1318;0;f;f;f;1317;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1318;1319;0;f;f;f;1318;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1318;1319;2;f;f;t;0;74b7e695-9723-42c2-9f4c-f1fe2b71c042",
+			"1319;1320;0;f;f;f;1319;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1320;1321;0;f;f;f;1320;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1320;1321;2;f;f;t;0;f642c32f-aecd-478f-a6af-c532746aff33",
+			"1321;1322;0;f;f;f;1321;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1322;1323;0;f;f;f;1322;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1322;1323;2;f;f;t;0;6578139b-a98a-4450-9902-e813cd1c4473",
+			"1323;1324;0;f;f;f;1323;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1324;1325;0;f;f;f;1324;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1324;1325;2;f;f;t;0;99a2da7a-b6e2-4848-9a79-7f7e9be6a54a",
+			"1325;1326;0;f;f;f;1325;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1326;1327;0;f;f;f;1326;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1326;1327;2;f;f;t;0;06afd65f-f4f6-442f-9039-d5d990be9675",
+			"1327;1328;0;f;f;f;1327;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1328;1329;0;f;f;f;1328;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1328;1329;2;f;f;t;0;b37d681e-ad3e-46ae-8ff2-8a819c7e5422",
+			"1329;1330;0;f;f;f;1329;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1330;1331;0;f;f;f;1330;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1330;1331;2;f;f;t;0;dab3ba1d-c649-40ec-a4f8-3d82c8c27caf",
+			"1331;1332;0;f;f;f;1331;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1332;1333;0;f;f;f;1332;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1331;1333;2;f;f;t;0;d228eaeb-c92b-42b3-85f5-3fb4a49e387f",
+			"1333;1334;0;f;f;f;1333;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1334;1335;0;f;f;f;1334;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1334;1335;2;f;f;t;0;3119eedb-fc3b-4ce8-8c66-fae9ae259941",
+			"1335;1336;0;f;f;f;1335;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1336;1337;0;f;f;f;1336;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1335;1337;2;f;f;t;0;10745f8f-7e96-4e03-9381-d93adbe321a0",
+			"1337;1338;0;f;f;f;1337;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1338;1339;0;f;f;f;1338;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1338;1339;2;f;f;t;0;1603543f-4442-454b-82a5-0ffde1ceccaa",
+			"1339;1340;0;f;f;f;1339;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1340;1341;0;f;f;f;1340;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1339;1341;2;f;f;t;0;a0a88296-6b03-489d-b86e-a603cda838c7",
+			"1341;1342;0;f;f;f;1341;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1342;1343;0;f;f;f;1342;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1342;1343;2;f;f;t;0;7ba89588-83af-435f-b9bc-6acd36f9087b",
+			"1343;1344;0;f;f;f;1343;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1344;1345;0;f;f;f;1344;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1343;1345;2;f;f;t;0;10e8ed74-efc6-437f-9cba-6033dd52db09",
+			"1345;1346;0;f;f;f;1345;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1346;1347;0;f;f;f;1346;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1346;1347;2;f;f;t;0;03049502-54e3-4cb0-9093-1c4bd62466ef",
+			"1347;1348;0;f;f;f;1347;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1348;1349;0;f;f;f;1348;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1348;1349;2;f;f;t;0;928ff974-288f-4cc5-af32-47432f889bbd",
+			"1349;1350;0;f;f;f;1349;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1350;1351;0;f;f;f;1350;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1350;1351;2;f;f;t;0;a87abc5c-45d8-42f4-adcd-c159e4f34853",
+			"1351;1352;0;f;f;f;1351;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1352;1353;0;f;f;f;1352;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1352;1353;2;f;f;t;0;e833fba6-e2da-49b0-a93f-b293fe7541f6",
+			"1353;1354;0;f;f;f;1353;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1354;1355;0;f;f;f;1354;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1354;1355;2;f;f;t;0;2eb89337-3af3-4e97-8979-970417ab441f",
+			"1355;1356;0;f;f;f;1355;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1356;1357;0;f;f;f;1356;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1355;1357;2;f;f;t;0;edba4a2b-d7ba-434c-aa3e-6e8bd87f2df0",
+			"1357;1358;0;f;f;f;1357;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1358;1359;0;f;f;f;1358;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1358;1359;2;f;f;t;0;23d19b6a-4a31-43b7-a103-498835fac22e",
+			"1359;1360;0;f;f;f;1359;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1360;1361;0;f;f;f;1360;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1360;1361;2;f;f;t;0;d65546b3-0160-4c04-b3db-643f593efd0d",
+			"1361;1362;0;f;f;f;1361;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1362;1363;0;f;f;f;1362;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1362;1363;2;f;f;t;0;fa088caf-36b6-4869-9fc3-a1ac72289b73",
+			"1363;1364;0;f;f;f;1363;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1364;1365;0;f;f;f;1364;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1364;1365;2;f;f;t;0;5a339ee3-ad42-47e6-92c0-07a33a690c46",
+			"1365;1366;0;f;f;f;1365;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1366;1367;0;f;f;f;1366;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1366;1367;2;f;f;t;0;e8142120-5fdf-4d98-933b-ab7e7e659d38",
+			"1367;1368;0;f;f;f;1367;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1368;1369;0;f;f;f;1368;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1368;1369;2;f;f;t;0;c3cb35fb-b9ea-4c50-a520-95edb859d08f",
+			"1369;1370;0;f;f;f;1369;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1370;1371;0;f;f;f;1370;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1370;1371;2;f;f;t;0;b6d06749-392e-40e4-8fda-97c662dd9234",
+			"1371;1372;0;f;f;f;1371;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1372;1373;0;f;f;f;1372;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1372;1373;2;f;f;t;0;145cda3a-57b5-4c93-9f0b-0d804f6162cc",
+			"1373;1374;0;f;f;f;1373;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1374;1375;0;f;f;f;1374;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1374;1375;2;f;f;t;0;9c92ec6c-6c3d-47f8-b4c1-489058b6fe85",
+			"1375;1376;0;f;f;f;1375;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1376;1377;0;f;f;f;1376;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1375;1377;2;f;f;t;0;a2155aba-b89a-455c-b400-2961aaab8b32",
+			"1377;1378;0;f;f;f;1377;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1378;1379;0;f;f;f;1378;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1378;1379;2;f;f;t;0;3f29a4eb-7ba7-4497-a961-d5b94f955090",
+			"1379;1380;0;f;f;f;1379;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1380;1381;0;f;f;f;1380;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1380;1381;2;f;f;t;0;43a7cc34-80dc-4009-a949-74b6b7093b5d",
+			"1381;1382;0;f;f;f;1381;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1382;1383;0;f;f;f;1382;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1382;1383;2;f;f;t;0;8477ad78-4371-4c07-adfd-7ceb78e79939",
+			"1383;1384;0;f;f;f;1383;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1384;1385;0;f;f;f;1384;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1384;1385;2;f;f;t;0;3b20c1b0-57f2-42d2-a1bf-82d3d8d2922e",
+			"1385;1386;0;f;f;f;1385;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1386;1387;0;f;f;f;1386;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1386;1387;2;f;f;t;0;1994a4db-28dc-4d7a-899d-6e276e6d2bbc",
+			"1387;1388;0;f;f;f;1387;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1388;1389;0;f;f;f;1388;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1388;1389;2;f;f;t;0;ab08eda9-e299-46b3-b3a0-5e7a6425a9bb",
+			"1389;1390;0;f;f;f;1389;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1390;1391;0;f;f;f;1390;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1390;1391;2;f;f;t;0;296c2964-f5ef-4566-945e-da8d7174364b",
+			"1391;1392;0;f;f;f;1391;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1392;1393;0;f;f;f;1392;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1392;1393;2;f;f;t;0;9703dc89-7738-41b8-9ec8-d76bbbe18ab3",
+			"1393;1394;0;f;f;f;1393;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1394;1395;0;f;f;f;1394;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1394;1395;2;f;f;t;0;34dd9a3c-4063-41bd-9673-830f8ff40cd3",
+			"1395;1396;0;f;f;f;1395;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1396;1397;0;f;f;f;1396;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1396;1397;2;f;f;t;0;83ab65e5-bda9-491c-a839-b2a19b253c07",
+			"1397;1398;0;f;f;f;1397;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1398;1399;0;f;f;f;1398;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1398;1399;2;f;f;t;0;0f88eb9e-a60c-445a-8bac-233e39adf30b",
+			"1399;1400;0;f;f;f;1399;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1400;1401;0;f;f;f;1400;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1400;1401;2;f;f;t;0;0f768adc-be28-47bc-9923-69bcc0694ed6",
+			"1401;1402;0;f;f;f;1401;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1402;1403;0;f;f;f;1402;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1402;1403;2;f;f;t;0;beb2581e-92a2-4271-ba89-87c560227120",
+			"1403;1404;0;f;f;f;1403;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1404;1405;0;f;f;f;1404;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1404;1405;2;f;f;t;0;e6b968d4-86d6-4c66-93aa-d86db4115ab5",
+			"1405;1406;0;f;f;f;1405;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1406;1407;0;f;f;f;1406;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1406;1407;2;f;f;t;0;b0832885-6812-4879-86e6-a32f7f552193",
+			"1407;1408;0;f;f;f;1407;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1408;1409;0;f;f;f;1408;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1408;1409;2;f;f;t;0;a7865101-8b57-465d-b3c8-5976eb228371",
+			"1409;1410;0;f;f;f;1409;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1410;1411;0;f;f;f;1410;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1410;1411;2;f;f;t;0;0312e0f5-319d-4471-8eff-55e3176629f9",
+			"1411;1412;0;f;f;f;1411;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1412;1413;0;f;f;f;1412;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1412;1413;2;f;f;t;0;65998618-4123-4dff-a3b4-0d5b41caa088",
+			"1413;1414;0;f;f;f;1413;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1414;1415;0;f;f;f;1414;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1414;1415;2;f;f;t;0;f690cd9d-83b9-4a4c-92be-d65277c7ab25",
+			"1415;1416;0;f;f;f;1415;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1416;1417;0;f;f;f;1416;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1416;1417;2;f;f;t;0;c18d7449-fee9-47f2-82f1-c3093e40cd25",
+			"1417;1418;0;f;f;f;1417;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1418;1419;0;f;f;f;1418;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1418;1419;2;f;f;t;0;bc87c997-b9b5-4fd8-90bf-472421119a8f",
+			"1419;1420;0;f;f;f;1419;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1420;1421;0;f;f;f;1420;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1420;1421;2;f;f;t;0;9947d9b8-5ec7-493d-959c-9cc5b8c7500c",
+			"1421;1422;0;f;f;f;1421;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1422;1423;0;f;f;f;1422;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1422;1423;2;f;f;t;0;3c64e33f-834d-4afc-8e1f-b81a725d473b",
+			"1423;1424;0;f;f;f;1423;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1424;1425;0;f;f;f;1424;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1424;1425;2;f;f;t;0;c75103db-9005-469d-897e-9bae176d147b",
+			"1425;1426;0;f;f;f;1425;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1426;1427;0;f;f;f;1426;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1425;1427;2;f;f;t;0;32b4f9df-bfc4-40a3-b093-6da8ebf3e228",
+			"1427;1428;0;f;f;f;1427;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1428;1429;0;f;f;f;1428;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1428;1429;2;f;f;t;0;cc06c1f6-5f54-4c52-bc8b-3d2fea6da04c",
+			"1429;1430;0;f;f;f;1429;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1430;1431;0;f;f;f;1430;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1430;1431;2;f;f;t;0;b0bf8030-ddf3-45d5-bd05-a57a811a938c",
+			"1431;1432;0;f;f;f;1431;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1432;1433;0;f;f;f;1432;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1432;1433;2;f;f;t;0;13e6f515-e109-4561-bff8-28edbefc3f0c",
+			"1433;1434;0;f;f;f;1433;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1434;1435;0;f;f;f;1434;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1434;1435;2;f;f;t;0;1f9ba5d4-296a-425f-9ab5-017cc3b3c38e",
+			"1435;1436;0;f;f;f;1435;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1436;1437;0;f;f;f;1436;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1436;1437;2;f;f;t;0;361c625e-0d3c-4295-b383-755f4d4670a4",
+			"1437;1438;0;f;f;f;1437;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1438;1439;0;f;f;f;1438;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1438;1439;2;f;f;t;0;867f5045-5f1b-4518-bb63-b8f4283d13a6",
+			"1439;1440;0;f;f;f;1439;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1440;1441;0;f;f;f;1440;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1440;1441;2;f;f;t;0;e8667b32-8058-4533-86a5-aeff8dfbe0f2",
+			"1441;1442;0;f;f;f;1441;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1442;1443;0;f;f;f;1442;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1442;1443;2;f;f;t;0;04d1b2e6-e702-41a9-bc64-0e6444efeb09",
+			"1443;1444;0;f;f;f;1443;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1444;1445;0;f;f;f;1444;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1444;1445;2;f;f;t;0;12cce1d7-4938-42f9-bd9b-9bc507525707",
+			"1445;1446;0;f;f;f;1445;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1446;1447;0;f;f;f;1446;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1446;1447;2;f;f;t;0;d618b5ee-e4ce-40d4-b5e3-2ba6e0efa3a8",
+			"1447;1448;0;f;f;f;1447;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1448;1449;0;f;f;f;1448;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1448;1449;2;f;f;t;0;3b99a8a0-3d7a-4e4b-9544-73abb346c1dd",
+			"1449;1450;0;f;f;f;1449;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1450;1451;0;f;f;f;1450;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1450;1451;2;f;f;t;0;267368ca-d5fb-4e48-8c90-7bce79eca45c",
+			"1451;1452;0;f;f;f;1451;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1452;1453;0;f;f;f;1452;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1452;1453;2;f;f;t;0;01fc6d0e-dfcc-4316-a7db-4c81195668ff",
+			"1453;1454;0;f;f;f;1453;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1454;1455;0;f;f;f;1454;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1454;1455;2;f;f;t;0;73abb6ae-6e33-48b1-9ec9-7993fabe5a6e",
+			"1455;1456;0;f;f;f;1455;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1456;1457;0;f;f;f;1456;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1456;1457;2;f;f;t;0;2a37b787-b08d-477c-a8f5-eb4df2a2d9e8",
+			"1457;1458;0;f;f;f;1457;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1458;1459;0;f;f;f;1458;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1458;1459;2;f;f;t;0;ca13f14f-c0d8-4d6c-a44d-6513630ef61d",
+			"1459;1460;0;f;f;f;1459;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1460;1461;0;f;f;f;1460;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1460;1461;2;f;f;t;0;7419f1f2-bbdd-4050-a75e-e4c7f610e3bd",
+			"1461;1462;0;f;f;f;1461;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1462;1463;0;f;f;f;1462;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1462;1463;2;f;f;t;0;91a9b07f-ba95-4c3c-ae73-a08c44870b63",
+			"1463;1464;0;f;f;f;1463;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1464;1465;0;f;f;f;1464;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1464;1465;2;f;f;t;0;4cd5e8cb-e851-4384-8e66-60294c9ed145",
+			"1465;1466;0;f;f;f;1465;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1466;1467;0;f;f;f;1466;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1466;1467;2;f;f;t;0;92749b40-5b38-4b68-9b7e-70e0469a5aae",
+			"1467;1468;0;f;f;f;1467;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1468;1469;0;f;f;f;1468;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1468;1469;2;f;f;t;0;42a4b5d2-d391-4fb5-80d3-e8e62fb263c7",
+			"1469;1470;0;f;f;f;1469;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1470;1471;0;f;f;f;1470;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1470;1471;2;f;f;t;0;03479308-474a-4a80-868d-628e1edd2e21",
+			"1471;1472;0;f;f;f;1471;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1472;1473;0;f;f;f;1472;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1472;1473;2;f;f;t;0;e7a7d651-69cf-45e7-b276-c932d24fee0b",
+			"1473;1474;0;f;f;f;1473;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1474;1475;0;f;f;f;1474;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1474;1475;2;f;f;t;0;fd7ff4d2-c64f-4781-9ceb-d02efa9f9bef",
+			"1475;1476;0;f;f;f;1475;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1476;1477;0;f;f;f;1476;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1476;1477;2;f;f;t;0;af6f5e0f-e9a7-4f3f-ab28-78bee33ce571",
+			"1477;1478;0;f;f;f;1477;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1478;1479;0;f;f;f;1478;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1478;1479;2;f;f;t;0;c542f262-d980-4736-a854-e8e83fb79065",
+			"1479;1480;0;f;f;f;1479;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1480;1481;0;f;f;f;1480;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1480;1481;2;f;f;t;0;b795cb83-3beb-40de-8854-459279abea8a",
+			"1481;1482;0;f;f;f;1481;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1482;1483;0;f;f;f;1482;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1482;1483;2;f;f;t;0;73df5515-cb5c-4ef5-92dd-1b023f138a15",
+			"1483;1484;0;f;f;f;1483;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1484;1485;0;f;f;f;1484;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1484;1485;2;f;f;t;0;2a663add-22f8-4463-8879-ab228bd909a0",
+			"1485;1486;0;f;f;f;1485;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1486;1487;0;f;f;f;1486;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1486;1487;2;f;f;t;0;58557ed6-c901-4904-aeb8-cfb4224f2283",
+			"1487;1488;0;f;f;f;1487;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1488;1489;0;f;f;f;1488;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1488;1489;2;f;f;t;0;aeb800c0-0349-4eb3-a1d0-59460f63dcf6",
+			"1489;1490;0;f;f;f;1489;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1490;1491;0;f;f;f;1490;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1490;1491;2;f;f;t;0;aacceca4-65c7-45d2-8e68-fbd5517f7afc",
+			"1491;1492;0;f;f;f;1491;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1492;1493;0;f;f;f;1492;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1492;1493;2;f;f;t;0;933d4e9e-5d79-4c86-b348-51508b66be9d",
+			"1493;1494;0;f;f;f;1493;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1494;1495;0;f;f;f;1494;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1494;1495;2;f;f;t;0;118a3885-60ba-4205-a2c8-817caf595f1e",
+			"1495;1496;0;f;f;f;1495;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1496;1497;0;f;f;f;1496;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1495;1497;2;f;f;t;0;f3d5aa34-1ec6-4797-ad29-8fd595d33733",
+			"1497;1498;0;f;f;f;1497;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1498;1499;0;f;f;f;1498;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1498;1499;2;f;f;t;0;e1e555a3-4e01-4762-96c2-1ad25270968e",
+			"1499;1500;0;f;f;f;1499;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1500;1501;0;f;f;f;1500;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1500;1501;2;f;f;t;0;46097c8a-4409-4277-a890-c43090896435",
+			"1501;1502;0;f;f;f;1501;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1502;1503;0;f;f;f;1502;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1502;1503;2;f;f;t;0;a36db956-41d8-49c5-b3a7-1294a6fed97a",
+			"1503;1504;0;f;f;f;1503;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1504;1505;0;f;f;f;1504;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1504;1505;2;f;f;t;0;16da5074-d7e7-4670-85bd-bcb066fb370a",
+			"1505;1506;0;f;f;f;1505;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1506;1507;0;f;f;f;1506;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1506;1507;2;f;f;t;0;f3ce8539-fa6e-4328-9b97-5c90a9781711",
+			"1507;1508;0;f;f;f;1507;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1508;1509;0;f;f;f;1508;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1508;1509;2;f;f;t;0;d0679eed-9b75-427c-8116-668bfe686f14",
+			"1509;1510;0;f;f;f;1509;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1510;1511;0;f;f;f;1510;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1510;1511;2;f;f;t;0;b0f7ee10-65ed-424e-9478-6e1f5dd8cbed",
+			"1511;1512;0;f;f;f;1511;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1512;1513;0;f;f;f;1512;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1512;1513;2;f;f;t;0;16b4189e-3a17-4deb-9289-ddfced1237ec",
+			"1513;1514;0;f;f;f;1513;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1514;1515;0;f;f;f;1514;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1514;1515;2;f;f;t;0;3dd65e8d-2659-4ec3-98a8-c7d740863a53",
+			"1515;1516;0;f;f;f;1515;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1516;1517;0;f;f;f;1516;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1516;1517;2;f;f;t;0;847fe440-ee42-43af-9aeb-ce77d0d0ad0b",
+			"1517;1518;0;f;f;f;1517;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1518;1519;0;f;f;f;1518;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1518;1519;2;f;f;t;0;2e1bf2cf-7a73-4265-883b-b696dcfbf7be",
+			"1519;1520;0;f;f;f;1519;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1520;1521;0;f;f;f;1520;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1520;1521;2;f;f;t;0;cef4572e-30d9-455a-a174-87d5b8bcc022",
+			"1521;1522;0;f;f;f;1521;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1522;1523;0;f;f;f;1522;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1522;1523;2;f;f;t;0;3ce58092-980c-4423-a0ff-8a81e1ee263a",
+			"1523;1524;0;f;f;f;1523;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1524;1525;0;f;f;f;1524;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1524;1525;2;f;f;t;0;4fce0d99-e0bd-4e16-a1c1-b2c979d3cebf",
+			"1525;1526;0;f;f;f;1525;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1526;1527;0;f;f;f;1526;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1525;1527;2;f;f;t;0;197a90e5-4fb0-4a06-8956-5a847c1b18b3",
+			"1527;1528;0;f;f;f;1527;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1528;1529;0;f;f;f;1528;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1528;1529;2;f;f;t;0;150ce0aa-2478-4d05-a098-4d55fa8b47d6",
+			"1529;1530;0;f;f;f;1529;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1530;1531;0;f;f;f;1530;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1530;1531;2;f;f;t;0;0f3f4e94-ff7c-4cd2-b20c-b3083f4a1292",
+			"1531;1532;0;f;f;f;1531;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1532;1533;0;f;f;f;1532;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1532;1533;2;f;f;t;0;fbe7ab54-ccd8-41aa-95b4-a8d1ecffc365",
+			"1533;1534;0;f;f;f;1533;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1534;1535;0;f;f;f;1534;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1534;1535;2;f;f;t;0;d972ddc5-a4fd-4c46-a3ae-503dce199c7d",
+			"1535;1536;0;f;f;f;1535;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1536;1537;0;f;f;f;1536;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1536;1537;2;f;f;t;0;0c24d092-f4bd-400f-9c09-8ed52b6e991d",
+			"1537;1538;0;f;f;f;1537;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1538;1539;0;f;f;f;1538;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1537;1539;2;f;f;t;0;766dc5e2-c07b-48ae-b904-63f3a95eae43",
+			"1539;1540;0;f;f;f;1539;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1540;1541;0;f;f;f;1540;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1540;1541;2;f;f;t;0;ce2f147e-bd77-415c-8e46-61ee4cc73feb",
+			"1541;1542;0;f;f;f;1541;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1542;1543;0;f;f;f;1542;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1542;1543;2;f;f;t;0;247a9490-275a-4aa0-a194-d7c29313cb35",
+			"1543;1544;0;f;f;f;1543;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1544;1545;0;f;f;f;1544;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1544;1545;2;f;f;t;0;74f452f0-befd-429c-8f64-90caef860f53",
+			"1545;1546;0;f;f;f;1545;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1546;1547;0;f;f;f;1546;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1546;1547;2;f;f;t;0;1a2d7ce0-75e8-400c-88a7-6183ba7934d7",
+			"1547;1548;0;f;f;f;1547;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1548;1549;0;f;f;f;1548;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1548;1549;2;f;f;t;0;7bbca99a-37ec-48fa-bd7b-bd70b5073930",
+			"1549;1550;0;f;f;f;1549;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1550;1551;0;f;f;f;1550;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1550;1551;2;f;f;t;0;224d5831-5d86-42f8-8163-58f92fe4fffa",
+			"1551;1552;0;f;f;f;1551;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1552;1553;0;f;f;f;1552;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1552;1553;2;f;f;t;0;d698ff30-0b6d-492b-989a-57f01aa72b7e",
+			"1553;1554;0;f;f;f;1553;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1554;1555;0;f;f;f;1554;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1554;1555;2;f;f;t;0;49b12048-242a-49e1-a7ed-5e33dc0e2889",
+			"1555;1556;0;f;f;f;1555;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1556;1557;0;f;f;f;1556;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1556;1557;2;f;f;t;0;9237e8ae-a616-4224-a169-7da5f5c6d1ff",
+			"1557;1558;0;f;f;f;1557;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1558;1559;0;f;f;f;1558;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1558;1559;2;f;f;t;0;0ac8b7bd-5dbb-4767-bacf-7404b19adb80",
+			"1559;1560;0;f;f;f;1559;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1560;1561;0;f;f;f;1560;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1560;1561;2;f;f;t;0;8c0e8766-a287-4435-9247-bd2c9b4c3c75",
+			"1561;1562;0;f;f;f;1561;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1562;1563;0;f;f;f;1562;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1563;1564;0;f;f;f;1563;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1562;1564;2;f;f;t;0;1cc9e65b-4bb3-4db5-929c-aba26283fd0e",
+			"1563;1564;2;f;f;t;0;336753ec-9f41-43e0-8276-8dbd682d948a",
+			"1564;1565;0;f;f;f;1564;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1565;1566;0;f;f;f;1565;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1566;1567;0;f;f;f;1566;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1566;1567;2;f;f;t;0;d22f64b8-f219-41db-a360-2bbf2f24a538",
+			"1567;1568;0;f;f;f;1567;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1568;1569;0;f;f;f;1568;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1568;1569;2;f;f;t;0;4516f3b0-face-4117-bb53-20f83a357125",
+			"1569;1570;0;f;f;f;1569;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1570;1571;0;f;f;f;1570;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1570;1571;2;f;f;t;0;176d9d09-2e08-4773-97a1-f2499ea5a06d",
+			"1571;1572;0;f;f;f;1571;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1572;1573;0;f;f;f;1572;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1572;1573;2;f;f;t;0;2bc62700-54ae-46f6-aebe-0e7b24731902",
+			"1573;1574;0;f;f;f;1573;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1574;1575;0;f;f;f;1574;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1573;1575;2;f;f;t;0;4d7764e7-5685-49ff-8a63-8c0c817f8e34",
+			"1575;1576;0;f;f;f;1575;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1576;1577;0;f;f;f;1576;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1577;1578;0;f;f;f;1577;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1576;1578;2;f;f;t;0;b219481f-abd8-4cb5-91fb-04e0612b5272",
+			"1577;1578;2;f;f;t;0;2473dade-614a-41d1-a1e9-bbae58457f5e",
+			"1578;1579;0;f;f;f;1578;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1579;1580;0;f;f;f;1579;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1580;1581;0;f;f;f;1580;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1580;1581;2;f;f;t;0;7304362e-84fa-4d8d-b9b6-d65270882c7e",
+			"1581;1582;0;f;f;f;1581;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1582;1583;0;f;f;f;1582;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1582;1583;2;f;f;t;0;ed9ff16a-9a4b-43bd-a6cd-2c7e7eb41e21",
+			"1583;1584;0;f;f;f;1583;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1584;1585;0;f;f;f;1584;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1584;1585;2;f;f;t;0;9319975f-3ec5-4a92-9579-f840066e8316",
+			"1585;1586;0;f;f;f;1585;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1586;1587;0;f;f;f;1586;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1585;1587;2;f;f;t;0;192a58cf-cb17-43b3-88e9-bc6a32fc69e1",
+			"1587;1588;0;f;f;f;1587;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1588;1589;0;f;f;f;1588;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1588;1589;2;f;f;t;0;6026d334-c270-42ff-b968-0c0cade84ac8",
+			"1589;1590;0;f;f;f;1589;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1590;1591;0;f;f;f;1590;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1590;1591;2;f;f;t;0;da72a538-e3c6-4c0a-8008-b2e31ef90f98",
+			"1591;1592;0;f;f;f;1591;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1592;1593;0;f;f;f;1592;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1592;1593;2;f;f;t;0;1d15b9f4-de9c-465f-842e-8a3d57c80890",
+			"1593;1594;0;f;f;f;1593;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1594;1595;0;f;f;f;1594;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1594;1595;2;f;f;t;0;e37a1f9e-a41c-422b-aec6-be21125af6fb",
+			"1595;1596;0;f;f;f;1595;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1596;1597;0;f;f;f;1596;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1596;1597;2;f;f;t;0;4c9dd180-504f-4805-a2b7-6e299da55c91",
+			"1597;1598;0;f;f;f;1597;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1598;1599;0;f;f;f;1598;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1598;1599;2;f;f;t;0;874709a9-6718-4d35-b503-3f33ff104baf",
+			"1599;1600;0;f;f;f;1599;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1600;1601;0;f;f;f;1600;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1600;1601;2;f;f;t;0;ac1cb7d1-fe26-465e-89d4-42b3859cbee6",
+			"1601;1602;0;f;f;f;1601;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1602;1603;0;f;f;f;1602;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1602;1603;2;f;f;t;0;d81ec963-a8d7-4f5c-995c-20c46990064d",
+			"1603;1604;0;f;f;f;1603;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1604;1605;0;f;f;f;1604;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1604;1605;2;f;f;t;0;fe0f7193-a203-4190-8af9-612e47eddf89",
+			"1605;1606;0;f;f;f;1605;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1606;1607;0;f;f;f;1606;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1606;1607;2;f;f;t;0;fae9cf1f-02a1-4742-83c0-9d8fb2913edd",
+			"1607;1608;0;f;f;f;1607;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1608;1609;0;f;f;f;1608;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1608;1609;2;f;f;t;0;78d5b0ff-eaf0-4152-993d-c3199e979d49",
+			"1609;1610;0;f;f;f;1609;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1610;1611;0;f;f;f;1610;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1610;1611;2;f;f;t;0;431d2cfd-c6fc-430d-82d6-f2f60d821662",
+			"1611;1612;0;f;f;f;1611;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1612;1613;0;f;f;f;1612;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1612;1613;2;f;f;t;0;e06c25bf-023d-4b60-99d8-683b2a03fa07",
+			"1613;1614;0;f;f;f;1613;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1614;1615;0;f;f;f;1614;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1614;1615;2;f;f;t;0;1706d7d6-1777-47d9-8976-15b05faba96b",
+			"1615;1616;0;f;f;f;1615;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1616;1617;0;f;f;f;1616;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1616;1617;2;f;f;t;0;e23cd4e6-5265-47d4-b94f-3baa1b8a1454",
+			"1617;1618;0;f;f;f;1617;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1618;1619;0;f;f;f;1618;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1618;1619;2;f;f;t;0;f3468dc5-da72-4333-b154-c3c4060beacc",
+			"1619;1620;0;f;f;f;1619;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1620;1621;0;f;f;f;1620;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1620;1621;2;f;f;t;0;993b5a0d-6722-485e-8102-5143620842ff",
+			"1621;1622;0;f;f;f;1621;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1622;1623;0;f;f;f;1622;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1622;1623;2;f;f;t;0;5b2fe348-7c91-44e2-9165-b6f6a3b8cfd7",
+			"1623;1624;0;f;f;f;1623;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1624;1625;0;f;f;f;1624;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1624;1625;2;f;f;t;0;8274130b-a907-42ad-abbd-047d58d764b3",
+			"1625;1626;0;f;f;f;1625;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1626;1627;0;f;f;f;1626;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1626;1627;2;f;f;t;0;9ef19412-886d-483f-ba09-f504d104bc8a",
+			"1627;1628;0;f;f;f;1627;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1628;1629;0;f;f;f;1628;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1628;1629;2;f;f;t;0;63ab3269-ef68-4f2e-afb3-42acefdfebd1",
+			"1629;1630;0;f;f;f;1629;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1630;1631;0;f;f;f;1630;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1630;1631;2;f;f;t;0;530da215-57be-43ed-8d65-59843fec082e",
+			"1631;1632;0;f;f;f;1631;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1632;1633;0;f;f;f;1632;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1632;1633;2;f;f;t;0;c13cd338-152e-47cd-a8df-53a1da6eaac7",
+			"1633;1634;0;f;f;f;1633;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1634;1635;0;f;f;f;1634;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1634;1635;2;f;f;t;0;c3fff76f-870a-4aa0-9510-48aea49699c1",
+			"1635;1636;0;f;f;f;1635;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1636;1637;0;f;f;f;1636;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1636;1637;2;f;f;t;0;4c43aea1-1ef2-491b-ba45-76aa936a62a6",
+			"1637;1638;0;f;f;f;1637;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1638;1639;0;f;f;f;1638;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1637;1639;2;f;f;t;0;11642e1e-0217-4a9c-830a-eab131cf07ed",
+			"1639;1640;0;f;f;f;1639;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1640;1641;0;f;f;f;1640;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1640;1641;2;f;f;t;0;eb529555-aa02-4dcc-9431-2e60c3e7806f",
+			"1641;1642;0;f;f;f;1641;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1642;1643;0;f;f;f;1642;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1642;1643;2;f;f;t;0;6a0d309e-2f4f-477b-b121-b1bff5f80044",
+			"1643;1644;0;f;f;f;1643;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1644;1645;0;f;f;f;1644;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1644;1645;2;f;f;t;0;d9cb3f36-4acc-4df7-8268-1036369325d3",
+			"1645;1646;0;f;f;f;1645;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1646;1647;0;f;f;f;1646;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1646;1647;2;f;f;t;0;6bd615fd-f62e-4e98-82dc-dfe6a0fd76df",
+			"1647;1648;0;f;f;f;1647;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1648;1649;0;f;f;f;1648;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1648;1649;2;f;f;t;0;aa9ccbd7-5f13-4236-931f-64da932ec229",
+			"1649;1650;0;f;f;f;1649;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1650;1651;0;f;f;f;1650;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1650;1651;2;f;f;t;0;756600ab-fa05-4c9d-b7e8-03a65fd08cd5",
+			"1651;1652;0;f;f;f;1651;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1652;1653;0;f;f;f;1652;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1652;1653;2;f;f;t;0;387152e6-7339-4ea7-8b5b-5324a0ac4636",
+			"1653;1654;0;f;f;f;1653;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1654;1655;0;f;f;f;1654;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1654;1655;2;f;f;t;0;8e22d13e-9c2d-4190-8477-82c8b2837589",
+			"1655;1656;0;f;f;f;1655;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1656;1657;0;f;f;f;1656;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1656;1657;2;f;f;t;0;b8c155b9-358c-4ade-9f76-0f4dcd03a8c3",
+			"1657;1658;0;f;f;f;1657;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1658;1659;0;f;f;f;1658;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1658;1659;2;f;f;t;0;62ea04c8-f3d4-4ae0-84ca-1b4f88e795d7",
+			"1659;1660;0;f;f;f;1659;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1660;1661;0;f;f;f;1660;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1659;1661;2;f;f;t;0;8b79ef3c-be0c-4567-9378-1b5eaf58587b",
+			"1661;1662;0;f;f;f;1661;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1662;1663;0;f;f;f;1662;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1662;1663;2;f;f;t;0;cbce4de5-eb75-4fc1-b456-80c993a6b465",
+			"1663;1664;0;f;f;f;1663;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1664;1665;0;f;f;f;1664;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1664;1665;2;f;f;t;0;9b7653f3-c622-41d5-8a4a-3222d00d7118",
+			"1665;1666;0;f;f;f;1665;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1666;1667;0;f;f;f;1666;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1666;1667;2;f;f;t;0;d1460041-d8d8-4f38-b374-593742e69ecc",
+			"1667;1668;0;f;f;f;1667;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1668;1669;0;f;f;f;1668;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1668;1669;2;f;f;t;0;e96fdb01-88cb-49d3-9473-991a8cbe9964",
+			"1669;1670;0;f;f;f;1669;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1670;1671;0;f;f;f;1670;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1670;1671;2;f;f;t;0;2b5d3d46-2f08-4df7-ac42-7f904afc56d8",
+			"1671;1672;0;f;f;f;1671;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1672;1673;0;f;f;f;1672;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1672;1673;2;f;f;t;0;83aaa3fc-0fdc-4695-874b-11c8eb9e6fcc",
+			"1673;1674;0;f;f;f;1673;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1674;1675;0;f;f;f;1674;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1674;1675;2;f;f;t;0;74475127-3faf-45ce-b33f-1b4625b7b78d",
+			"1675;1676;0;f;f;f;1675;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1676;1677;0;f;f;f;1676;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1675;1677;2;f;f;t;0;ae76daa9-cc3a-4450-bfaf-4db8c21236a1",
+			"1677;1678;0;f;f;f;1677;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1678;1679;0;f;f;f;1678;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1678;1679;2;f;f;t;0;57dd32a7-382c-49f6-ab6a-fda432b1e6e0",
+			"1679;1680;0;f;f;f;1679;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1680;1681;0;f;f;f;1680;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1679;1681;2;f;f;t;0;8bf2701d-edee-4d7e-aa2f-133f9b854c83",
+			"1681;1682;0;f;f;f;1681;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1682;1683;0;f;f;f;1682;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1682;1683;2;f;f;t;0;55eb1c73-3dac-4b25-bcab-b650b2b4f767",
+			"1683;1684;0;f;f;f;1683;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1684;1685;0;f;f;f;1684;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1684;1685;2;f;f;t;0;ed02733e-58fe-4bde-952d-1a44ab2dd9a6",
+			"1685;1686;0;f;f;f;1685;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1686;1687;0;f;f;f;1686;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1686;1687;2;f;f;t;0;488a0cc6-916f-47c7-9a0a-37bad8493b6a",
+			"1687;1688;0;f;f;f;1687;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1688;1689;0;f;f;f;1688;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1688;1689;2;f;f;t;0;270064bd-4358-4328-80a4-28691ad8e24b",
+			"1689;1690;0;f;f;f;1689;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1690;1691;0;f;f;f;1690;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1690;1691;2;f;f;t;0;29ea1f8e-052a-4a92-8262-e346ab23f46e",
+			"1691;1692;0;f;f;f;1691;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1692;1693;0;f;f;f;1692;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1692;1693;2;f;f;t;0;165d5b9c-14e2-429b-a5f1-7a37296f2e18",
+			"1693;1694;0;f;f;f;1693;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1694;1695;0;f;f;f;1694;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1694;1695;2;f;f;t;0;86ab5979-2dec-4a9a-a0e4-2cbfc90ec33c",
+			"1695;1696;0;f;f;f;1695;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1696;1697;0;f;f;f;1696;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1696;1697;2;f;f;t;0;fdede59f-4fbe-4a4f-a6cd-7e52b47853b8",
+			"1697;1698;0;f;f;f;1697;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1698;1699;0;f;f;f;1698;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1698;1699;2;f;f;t;0;9c44e854-33d1-400f-8d2b-8c7f400269b7",
+			"1699;1700;0;f;f;f;1699;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1700;1701;0;f;f;f;1700;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1700;1701;2;f;f;t;0;c1b36e5c-d0ef-4580-81f3-25f1d4f48b9e",
+			"1701;1702;0;f;f;f;1701;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1702;1703;0;f;f;f;1702;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1702;1703;2;f;f;t;0;587c7723-7d1e-4e1b-9742-a97dc4df1b43",
+			"1703;1704;0;f;f;f;1703;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1704;1705;0;f;f;f;1704;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1704;1705;2;f;f;t;0;217f5090-fcff-4b4d-bc7e-a195b6c52800",
+			"1705;1706;0;f;f;f;1705;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1706;1707;0;f;f;f;1706;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1706;1707;2;f;f;t;0;12dcb271-e2d9-4155-aef9-8890f43c4ccb",
+			"1707;1708;0;f;f;f;1707;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1708;1709;0;f;f;f;1708;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1708;1709;2;f;f;t;0;74a43494-214d-4aee-8dfd-f6429382a446",
+			"1709;1710;0;f;f;f;1709;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1710;1711;0;f;f;f;1710;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1710;1711;2;f;f;t;0;e3888f6a-8952-4726-8e5d-c579ed9851d7",
+			"1711;1712;0;f;f;f;1711;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1712;1713;0;f;f;f;1712;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1712;1713;2;f;f;t;0;fd0d3c26-bbea-4d4e-8084-49e812987bac",
+			"1713;1714;0;f;f;f;1713;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1714;1715;0;f;f;f;1714;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1714;1715;2;f;f;t;0;f31888e9-1be4-4baa-860e-6b8457719cfb",
+			"1715;1716;0;f;f;f;1715;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1716;1717;0;f;f;f;1716;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1716;1717;2;f;f;t;0;0d261890-6269-4f06-a0a9-3068b9d3526a",
+			"1717;1718;0;f;f;f;1717;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1718;1719;0;f;f;f;1718;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1718;1719;2;f;f;t;0;f9297ea4-99db-4895-a95c-73ca9e3dd14c",
+			"1719;1720;0;f;f;f;1719;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1720;1721;0;f;f;f;1720;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1720;1721;2;f;f;t;0;70d9508a-0354-43ad-8bfe-e9982ef093bc",
+			"1721;1722;0;f;f;f;1721;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1722;1723;0;f;f;f;1722;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1722;1723;2;f;f;t;0;a66abf55-f339-4845-b68d-0da414c89d6f",
+			"1723;1724;0;f;f;f;1723;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1724;1725;0;f;f;f;1724;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1724;1725;2;f;f;t;0;36e33a0f-795a-4270-9140-8eef60691d0d",
+			"1725;1726;0;f;f;f;1725;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1726;1727;0;f;f;f;1726;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1726;1727;2;f;f;t;0;3205bdf0-e9dd-4c67-93d8-58d524932a3d",
+			"1727;1728;0;f;f;f;1727;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1728;1729;0;f;f;f;1728;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1728;1729;2;f;f;t;0;3e359f57-202c-4bbf-ae61-4643cecc80a5",
+			"1729;1730;0;f;f;f;1729;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1730;1731;0;f;f;f;1730;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1730;1731;2;f;f;t;0;8c2a1f4b-f6b9-492f-a552-897f0028d0d3",
+			"1731;1732;0;f;f;f;1731;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1732;1733;0;f;f;f;1732;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1732;1733;2;f;f;t;0;07b68859-e2e8-4bcd-ad0a-d9baff39f899",
+			"1733;1734;0;f;f;f;1733;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1734;1735;0;f;f;f;1734;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1734;1735;2;f;f;t;0;dcc88ba7-4160-42c4-a295-14ac5c07a6d1",
+			"1735;1736;0;f;f;f;1735;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1736;1737;0;f;f;f;1736;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1736;1737;2;f;f;t;0;f7283563-df86-4b4f-b18d-7a583c9154b7",
+			"1737;1738;0;f;f;f;1737;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1738;1739;0;f;f;f;1738;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1738;1739;2;f;f;t;0;dac5532f-b70d-4736-88da-9ba1c6c80d2e",
+			"1739;1740;0;f;f;f;1739;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1740;1741;0;f;f;f;1740;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1740;1741;2;f;f;t;0;c099b83d-dcd7-4a2c-805d-5d881d09fe86",
+			"1741;1742;0;f;f;f;1741;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1742;1743;0;f;f;f;1742;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1742;1743;2;f;f;t;0;df1d0394-aa80-4b32-aab1-0b17f7f4435b",
+			"1743;1744;0;f;f;f;1743;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1744;1745;0;f;f;f;1744;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1744;1745;2;f;f;t;0;07d5c9e3-ba43-4d20-87d9-f058c6a46131",
+			"1745;1746;0;f;f;f;1745;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1746;1747;0;f;f;f;1746;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1745;1747;2;f;f;t;0;a59e5225-4620-4a07-a253-97d3c0817ea9",
+			"1747;1748;0;f;f;f;1747;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1748;1749;0;f;f;f;1748;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1748;1749;2;f;f;t;0;ec9dea5f-e187-410b-9647-38cf2f190388",
+			"1749;1750;0;f;f;f;1749;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1750;1751;0;f;f;f;1750;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1749;1751;2;f;f;t;0;a94157b2-a193-4f33-a5f3-72e12718ab2e",
+			"1751;1752;0;f;f;f;1751;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1752;1753;0;f;f;f;1752;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1752;1753;2;f;f;t;0;3b2a4a9e-d08d-4333-a498-244878ff5415",
+			"1753;1754;0;f;f;f;1753;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1754;1755;0;f;f;f;1754;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1754;1755;2;f;f;t;0;6d59fdf7-fc45-4126-b7f3-6a9709a3ef63",
+			"1755;1756;0;f;f;f;1755;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1756;1757;0;f;f;f;1756;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1756;1757;2;f;f;t;0;366b3f40-c1e7-4449-aa6c-d19e7c5df1b1",
+			"1757;1758;0;f;f;f;1757;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1758;1759;0;f;f;f;1758;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1757;1759;2;f;f;t;0;d1ef24af-a1af-45c6-b425-e13b3a692f50",
+			"1759;1760;0;f;f;f;1759;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1760;1761;0;f;f;f;1760;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1760;1761;2;f;f;t;0;0668f746-eb44-43a7-b80c-624eaffa9d8f",
+			"1761;1762;0;f;f;f;1761;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1762;1763;0;f;f;f;1762;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1761;1763;2;f;f;t;0;cb189d45-d97d-447c-bf7e-986e8f4beb47",
+			"1763;1764;0;f;f;f;1763;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1764;1765;0;f;f;f;1764;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1764;1765;2;f;f;t;0;eb8822a5-8122-46cf-820a-e34687d795dc",
+			"1765;1766;0;f;f;f;1765;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1766;1767;0;f;f;f;1766;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1765;1767;2;f;f;t;0;d19cc0e7-f433-442e-a0cd-cbd0461d9543",
+			"1767;1768;0;f;f;f;1767;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1768;1769;0;f;f;f;1768;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1768;1769;2;f;f;t;0;e18ae7e6-6753-4f58-b02a-a7e427093b33",
+			"1769;1770;0;f;f;f;1769;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1770;1771;0;f;f;f;1770;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1769;1771;2;f;f;t;0;1c22ab4e-d732-4d4d-b0fe-d861e4f2b52b",
+			"1771;1772;0;f;f;f;1771;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1772;1773;0;f;f;f;1772;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1772;1773;2;f;f;t;0;1d1c7be5-fb08-422b-ae72-694608f63f91",
+			"1773;1774;0;f;f;f;1773;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1774;1775;0;f;f;f;1774;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1774;1775;2;f;f;t;0;aed2996a-2c13-41d8-b5c3-6139af90a2a1",
+			"1775;1776;0;f;f;f;1775;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1776;1777;0;f;f;f;1776;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1776;1777;2;f;f;t;0;aeda9d96-c049-436d-8184-84bcc40cbb2a",
+			"1777;1778;0;f;f;f;1777;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1778;1779;0;f;f;f;1778;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1778;1779;2;f;f;t;0;958375fd-80bf-4d10-b156-a28f977da9da",
+			"1779;1780;0;f;f;f;1779;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1780;1781;0;f;f;f;1780;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1780;1781;2;f;f;t;0;26832254-c551-460c-b389-0ed98585a7dc",
+			"1781;1782;0;f;f;f;1781;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1782;1783;0;f;f;f;1782;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1782;1783;2;f;f;t;0;0db64a55-4159-42aa-a715-23e2ace1061e",
+			"1783;1784;0;f;f;f;1783;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1784;1785;0;f;f;f;1784;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1784;1785;2;f;f;t;0;456eabe1-a33c-4158-89e2-2f533462b756",
+			"1785;1786;0;f;f;f;1785;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1786;1787;0;f;f;f;1786;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1786;1787;2;f;f;t;0;d324d9d4-7140-4569-bbb0-ea508ebd6f74",
+			"1787;1788;0;f;f;f;1787;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1788;1789;0;f;f;f;1788;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1788;1789;2;f;f;t;0;a0a790fe-a203-4b86-84a4-c5fb02ef2de8",
+			"1789;1790;0;f;f;f;1789;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1790;1791;0;f;f;f;1790;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1790;1791;2;f;f;t;0;cbbf1c83-c3e7-4f07-b8b2-894b3f58af7c",
+			"1791;1792;0;f;f;f;1791;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1792;1793;0;f;f;f;1792;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1792;1793;2;f;f;t;0;2e26f6a6-cc4b-4fb7-85bf-a67e8730655f",
+			"1793;1794;0;f;f;f;1793;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1794;1795;0;f;f;f;1794;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1794;1795;2;f;f;t;0;9fadd86e-d5b6-4805-ac2f-beffef03d626",
+			"1795;1796;0;f;f;f;1795;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1796;1797;0;f;f;f;1796;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1796;1797;2;f;f;t;0;fb8f2aec-b22e-4a76-9f40-cc44cdf79bb4",
+			"1797;1798;0;f;f;f;1797;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1798;1799;0;f;f;f;1798;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1798;1799;2;f;f;t;0;a64b6e8d-c15a-49cf-bfe6-58c630a5178a",
+			"1799;1800;0;f;f;f;1799;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1800;1801;0;f;f;f;1800;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1801;1802;0;f;f;f;1801;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1800;1802;2;f;f;t;0;2b3f15e5-7add-4ce8-883d-be2935f90453",
+			"1801;1802;2;f;f;t;0;4b2a8d0a-c98b-451f-8b1c-2038c62da094",
+			"1802;1803;0;f;f;f;1802;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1803;1804;0;f;f;f;1803;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1804;1805;0;f;f;f;1804;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1804;1805;2;f;f;t;0;5e586fa0-23f3-4615-a5d5-901c7a10b15b",
+			"1805;1806;0;f;f;f;1805;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1806;1807;0;f;f;f;1806;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1806;1807;2;f;f;t;0;6e4bfc0f-1a62-4446-8fac-d94577c983af",
+			"1807;1808;0;f;f;f;1807;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1808;1809;0;f;f;f;1808;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1808;1809;2;f;f;t;0;52061300-ad31-44d8-ae24-2c1ba1f3dced",
+			"1809;1810;0;f;f;f;1809;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1810;1811;0;f;f;f;1810;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1810;1811;2;f;f;t;0;3bddb66f-da23-4da7-8423-d16c76a9e9de",
+			"1811;1812;0;f;f;f;1811;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1812;1813;0;f;f;f;1812;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1812;1813;2;f;f;t;0;36b7282f-1a0f-4854-913e-a6b088980cc0",
+			"1813;1814;0;f;f;f;1813;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1814;1815;0;f;f;f;1814;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1814;1815;2;f;f;t;0;bbe9a8d6-711e-4c6b-b4db-9568b01cb923",
+			"1815;1816;0;f;f;f;1815;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1816;1817;0;f;f;f;1816;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1816;1817;2;f;f;t;0;73914d2d-e06f-4ea2-8c03-d07b745b2319",
+			"1817;1818;0;f;f;f;1817;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1818;1819;0;f;f;f;1818;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1818;1819;2;f;f;t;0;7794ef47-2943-452b-9de8-a05abc4f20d5",
+			"1819;1820;0;f;f;f;1819;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1820;1821;0;f;f;f;1820;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1820;1821;2;f;f;t;0;fc9ca623-7b84-4599-80ca-a50f2f3789b1",
+			"1821;1822;0;f;f;f;1821;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1822;1823;0;f;f;f;1822;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1822;1823;2;f;f;t;0;b423e2b7-2f48-4807-a64d-39879ed7015a",
+			"1823;1824;0;f;f;f;1823;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1824;1825;0;f;f;f;1824;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1823;1825;2;f;f;t;0;4d16d5cf-2c95-4d73-bb17-d6b655aad8fb",
+			"1825;1826;0;f;f;f;1825;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1826;1827;0;f;f;f;1826;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1827;1828;0;f;f;f;1827;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1826;1828;2;f;f;t;0;fc05a54d-2c6c-4272-9b54-a97903615243",
+			"1827;1828;2;f;f;t;0;32bd836d-79ea-45c7-9a19-c16db75a74fe",
+			"1828;1829;0;f;f;f;1828;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1829;1830;0;f;f;f;1829;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1830;1831;0;f;f;f;1830;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1830;1831;2;f;f;t;0;159ddf6d-a581-4205-85ec-3dc9b2a658de",
+			"1831;1832;0;f;f;f;1831;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1832;1833;0;f;f;f;1832;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1832;1833;2;f;f;t;0;dd04d646-0c13-4546-bf13-848f72b33517",
+			"1833;1834;0;f;f;f;1833;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1834;1835;0;f;f;f;1834;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1834;1835;2;f;f;t;0;c9b5e124-2116-46d5-9995-3f2adaa6ddd1",
+			"1835;1836;0;f;f;f;1835;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1836;1837;0;f;f;f;1836;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1836;1837;2;f;f;t;0;6395aed0-5b57-42c1-bc4f-0736c23eb2c8",
+			"1837;1838;0;f;f;f;1837;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1838;1839;0;f;f;f;1838;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1838;1839;2;f;f;t;0;f0133541-9782-45a4-a915-230e422e4de7",
+			"1839;1840;0;f;f;f;1839;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1840;1841;0;f;f;f;1840;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1840;1841;2;f;f;t;0;414a0d07-c780-4a32-8a40-6a0bfc0c0f5d",
+			"1841;1842;0;f;f;f;1841;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1842;1843;0;f;f;f;1842;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1842;1843;2;f;f;t;0;fd263848-4823-4ec1-82fe-07aac3dabc39",
+			"1843;1844;0;f;f;f;1843;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1844;1845;0;f;f;f;1844;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1844;1845;2;f;f;t;0;e65115a7-7177-41f6-a528-b951275a58e0",
+			"1845;1846;0;f;f;f;1845;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1846;1847;0;f;f;f;1846;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1846;1847;2;f;f;t;0;8ca03025-df3d-482c-8b7e-216a2142165a",
+			"1847;1848;0;f;f;f;1847;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1848;1849;0;f;f;f;1848;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1848;1849;2;f;f;t;0;54835146-c878-4040-85a9-1dbbed8ed4e1",
+			"1849;1850;0;f;f;f;1849;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1850;1851;0;f;f;f;1850;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1850;1851;2;f;f;t;0;a07ec7ec-50d4-4134-97a5-3933d5a29596",
+			"1851;1852;0;f;f;f;1851;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1852;1853;0;f;f;f;1852;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1852;1853;2;f;f;t;0;a0d30082-f37b-4a55-87e4-1f136e82f0b9",
+			"1853;1854;0;f;f;f;1853;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1854;1855;0;f;f;f;1854;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1854;1855;2;f;f;t;0;2b4fe74a-3d82-4415-87aa-49f3a2921950",
+			"1855;1856;0;f;f;f;1855;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1856;1857;0;f;f;f;1856;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1855;1857;2;f;f;t;0;a9f8e112-7a10-4586-a62d-b8ae897cca1e",
+			"1857;1858;0;f;f;f;1857;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1858;1859;0;f;f;f;1858;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1858;1859;2;f;f;t;0;c3f25d51-75e4-485a-8f64-aa87d0ee223d",
+			"1859;1860;0;f;f;f;1859;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1860;1861;0;f;f;f;1860;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1860;1861;2;f;f;t;0;62d717e2-61a8-4105-9e07-2c2697050ef4",
+			"1861;1862;0;f;f;f;1861;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1862;1863;0;f;f;f;1862;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1862;1863;2;f;f;t;0;f7a2d0d2-093c-4323-9be3-1b6ff1f8c1ee",
+			"1863;1864;0;f;f;f;1863;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1864;1865;0;f;f;f;1864;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1864;1865;2;f;f;t;0;3eeee0a7-a6d6-43d8-b614-ef3d79f59573",
+			"1865;1866;0;f;f;f;1865;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1866;1867;0;f;f;f;1866;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1866;1867;2;f;f;t;0;25b941da-eae6-42e7-b73a-4ed4c7578f30",
+			"1867;1868;0;f;f;f;1867;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1868;1869;0;f;f;f;1868;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1868;1869;2;f;f;t;0;24d3d52e-d38a-4681-8ff0-7d9c71dd7bb8",
+			"1869;1870;0;f;f;f;1869;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1870;1871;0;f;f;f;1870;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1870;1871;2;f;f;t;0;8e83287b-89df-49b8-9596-e489688529d7",
+			"1871;1872;0;f;f;f;1871;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1872;1873;0;f;f;f;1872;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1872;1873;2;f;f;t;0;58d3222e-1adf-40c8-b45e-88be3d218441",
+			"1873;1874;0;f;f;f;1873;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1874;1875;0;f;f;f;1874;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1874;1875;2;f;f;t;0;e11d9fe3-cacd-49e9-9549-97b1e88eccb0",
+			"1875;1876;0;f;f;f;1875;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1876;1877;0;f;f;f;1876;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1876;1877;2;f;f;t;0;943d521c-f1c6-4180-ab30-7467584dcf04",
+			"1877;1878;0;f;f;f;1877;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1878;1879;0;f;f;f;1878;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1878;1879;2;f;f;t;0;d3c6905c-1f27-41ad-a879-0d6b7624e914",
+			"1879;1880;0;f;f;f;1879;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1880;1881;0;f;f;f;1880;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1880;1881;2;f;f;t;0;08e24663-6c9a-46f6-b0a5-34c5ef3c7b11",
+			"1881;1882;0;f;f;f;1881;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1882;1883;0;f;f;f;1882;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1882;1883;2;f;f;t;0;21436a5e-2808-4342-a6e9-514ff7046950",
+			"1883;1884;0;f;f;f;1883;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1884;1885;0;f;f;f;1884;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1884;1885;2;f;f;t;0;90d20836-0888-45c4-ae27-a6615a65d610",
+			"1885;1886;0;f;f;f;1885;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1886;1887;0;f;f;f;1886;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1886;1887;2;f;f;t;0;94076aea-b7ac-4bd0-803c-4e0ae8c32086",
+			"1887;1888;0;f;f;f;1887;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1888;1889;0;f;f;f;1888;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1888;1889;2;f;f;t;0;f68e2cad-0a1c-457c-a795-1baf2734fbac",
+			"1889;1890;0;f;f;f;1889;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1890;1891;0;f;f;f;1890;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1890;1891;2;f;f;t;0;818ffe1c-1cae-4bc3-84a7-9be6c7b23c4f",
+			"1891;1892;0;f;f;f;1891;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1892;1893;0;f;f;f;1892;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1892;1893;2;f;f;t;0;5448809f-5678-472e-a3e9-18645faf6f94",
+			"1893;1894;0;f;f;f;1893;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1894;1895;0;f;f;f;1894;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1894;1895;2;f;f;t;0;27be37de-cef4-492a-8834-308e2bd11cc9",
+			"1895;1896;0;f;f;f;1895;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1896;1897;0;f;f;f;1896;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1896;1897;2;f;f;t;0;81df581c-0e7b-47ae-b455-ef742f9866c1",
+			"1897;1898;0;f;f;f;1897;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1898;1899;0;f;f;f;1898;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1898;1899;2;f;f;t;0;46ee8c2a-f1fd-4492-bd37-9ed81a579e7a",
+			"1899;1900;0;f;f;f;1899;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1900;1901;0;f;f;f;1900;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1900;1901;2;f;f;t;0;9dc2a71e-485a-4c6d-889d-58db3b798f7f",
+			"1901;1902;0;f;f;f;1901;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1902;1903;0;f;f;f;1902;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1902;1903;2;f;f;t;0;4af88519-36fe-44a3-98aa-7def48263c0b",
+			"1903;1904;0;f;f;f;1903;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1904;1905;0;f;f;f;1904;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1904;1905;2;f;f;t;0;0ab0c6f8-3ca5-4ae7-9e6f-5e15b593adc6",
+			"1905;1906;0;f;f;f;1905;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1906;1907;0;f;f;f;1906;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1906;1907;2;f;f;t;0;acf44da3-fa41-4864-b456-a8e9a3742d22",
+			"1907;1908;0;f;f;f;1907;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1908;1909;0;f;f;f;1908;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1908;1909;2;f;f;t;0;a5883f99-754e-4508-b9f7-b028a1ad3984",
+			"1909;1910;0;f;f;f;1909;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1910;1911;0;f;f;f;1910;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1911;1912;0;f;f;f;1911;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1910;1912;2;f;f;t;0;59db9922-de7c-499a-8921-93325b334cd8",
+			"1911;1912;2;f;f;t;0;927ae569-2e7b-4eff-9efd-4721d01ade71",
+			"1912;1913;0;f;f;f;1912;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1913;1914;0;f;f;f;1913;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1914;1915;0;f;f;f;1914;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1914;1915;2;f;f;t;0;0a0f9ae4-d39b-46ca-ae51-b6fa1db454ca",
+			"1915;1916;0;f;f;f;1915;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1916;1917;0;f;f;f;1916;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1916;1917;2;f;f;t;0;286860cb-6033-40b0-b670-1645f388df2d",
+			"1917;1918;0;f;f;f;1917;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1918;1919;0;f;f;f;1918;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1918;1919;2;f;f;t;0;4d645a32-875a-4543-b26a-3be521387e7b",
+			"1919;1920;0;f;f;f;1919;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1920;1921;0;f;f;f;1920;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1920;1921;2;f;f;t;0;c20c7fdb-88dc-40b5-aed1-003487fba2ce",
+			"1921;1922;0;f;f;f;1921;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1922;1923;0;f;f;f;1922;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1922;1923;2;f;f;t;0;387213c6-2466-44b9-ad91-309addc9daa1",
+			"1923;1924;0;f;f;f;1923;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1924;1925;0;f;f;f;1924;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1924;1925;2;f;f;t;0;7fe2137a-b5a9-485f-bb63-ae823a215b92",
+			"1925;1926;0;f;f;f;1925;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1926;1927;0;f;f;f;1926;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1926;1927;2;f;f;t;0;a5e66609-4334-43a9-92ed-685d3d039048",
+			"1927;1928;0;f;f;f;1927;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1928;1929;0;f;f;f;1928;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1928;1929;2;f;f;t;0;32733635-74c8-46d5-8af6-bedbb370eefc",
+			"1929;1930;0;f;f;f;1929;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1930;1931;0;f;f;f;1930;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1930;1931;2;f;f;t;0;a15703d6-0182-4504-9575-b85ff62c7982",
+			"1931;1932;0;f;f;f;1931;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1932;1933;0;f;f;f;1932;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1932;1933;2;f;f;t;0;54debf71-8a78-43f4-84b4-08bd41643224",
+			"1933;1934;0;f;f;f;1933;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1934;1935;0;f;f;f;1934;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1934;1935;2;f;f;t;0;ab677cdf-ac7a-481a-a711-903e22bc68a1",
+			"1935;1936;0;f;f;f;1935;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1936;1937;0;f;f;f;1936;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1936;1937;2;f;f;t;0;c61091d9-e324-43f9-a60f-6f57d1ac5fe2",
+			"1937;1938;0;f;f;f;1937;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1938;1939;0;f;f;f;1938;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1938;1939;2;f;f;t;0;28e2ba82-932b-4099-bb79-0efe8e0ebbdf",
+			"1939;1940;0;f;f;f;1939;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1940;1941;0;f;f;f;1940;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1940;1941;2;f;f;t;0;9ff471df-e73a-46e3-a408-869aef1d31a3",
+			"1941;1942;0;f;f;f;1941;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1942;1943;0;f;f;f;1942;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1942;1943;2;f;f;t;0;526a66aa-6a6b-4f3c-a35f-b24d16054b3d",
+			"1943;1944;0;f;f;f;1943;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1944;1945;0;f;f;f;1944;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1944;1945;2;f;f;t;0;c63dfe7c-aa3d-432e-86e7-8b51c0c2b186",
+			"1945;1946;0;f;f;f;1945;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1946;1947;0;f;f;f;1946;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1946;1947;2;f;f;t;0;c38cd398-f196-440b-b178-236c3b8e69fa",
+			"1947;1948;0;f;f;f;1947;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1948;1949;0;f;f;f;1948;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1948;1949;2;f;f;t;0;9a0a4850-9d6a-476c-a064-54e8268942e6",
+			"1949;1950;0;f;f;f;1949;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1950;1951;0;f;f;f;1950;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1950;1951;2;f;f;t;0;5fda5bee-368f-4ba5-8cb2-efca6f1c8a57",
+			"1951;1952;0;f;f;f;1951;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1952;1953;0;f;f;f;1952;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1952;1953;2;f;f;t;0;6d53e89e-7c1f-431e-af10-a3f9a460e3a8",
+			"1953;1954;0;f;f;f;1953;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1954;1955;0;f;f;f;1954;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1954;1955;2;f;f;t;0;9f15492c-52c8-4f15-92cc-4006231f0d9b",
+			"1955;1956;0;f;f;f;1955;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1956;1957;0;f;f;f;1956;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1956;1957;2;f;f;t;0;028ed6e2-cd67-4c55-918e-fdae0ac8c231",
+			"1957;1958;0;f;f;f;1957;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1958;1959;0;f;f;f;1958;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1958;1959;2;f;f;t;0;bd87e5ef-049e-45f9-8762-4f876e25e520",
+			"1959;1960;0;f;f;f;1959;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1960;1961;0;f;f;f;1960;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1960;1961;2;f;f;t;0;680afba7-df4f-40a0-9ff0-af5cc83de9be",
+			"1961;1962;0;f;f;f;1961;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1962;1963;0;f;f;f;1962;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1962;1963;2;f;f;t;0;1ca78f3c-51e4-4243-acd5-d392759f7ded",
+			"1963;1964;0;f;f;f;1963;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1964;1965;0;f;f;f;1964;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1964;1965;2;f;f;t;0;043a2f93-2d6e-40ba-a84e-8dbb46da90db",
+			"1965;1966;0;f;f;f;1965;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1966;1967;0;f;f;f;1966;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1966;1967;2;f;f;t;0;192e46cc-c88a-45de-9418-ca8b7f6e8dc4",
+			"1967;1968;0;f;f;f;1967;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1968;1969;0;f;f;f;1968;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1968;1969;2;f;f;t;0;3476f92a-a359-4072-8965-d0ff956ca3ec",
+			"1969;1970;0;f;f;f;1969;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1970;1971;0;f;f;f;1970;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1970;1971;2;f;f;t;0;c445e307-5e57-4f96-92f4-e0d0ff9ef14e",
+			"1971;1972;0;f;f;f;1971;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1972;1973;0;f;f;f;1972;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1972;1973;2;f;f;t;0;861eca2e-39c6-49a0-a843-dc364ff5f424",
+			"1973;1974;0;f;f;f;1973;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1974;1975;0;f;f;f;1974;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1974;1975;2;f;f;t;0;c59705b4-7be1-432f-ad1c-02ada949922a",
+			"1975;1976;0;f;f;f;1975;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1976;1977;0;f;f;f;1976;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1976;1977;2;f;f;t;0;128129ac-3fd5-4484-b05f-669f7cfe3e3b",
+			"1977;1978;0;f;f;f;1977;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1978;1979;0;f;f;f;1978;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1978;1979;2;f;f;t;0;15811f19-50ec-4381-ac86-b474fd11a928",
+			"1979;1980;0;f;f;f;1979;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1980;1981;0;f;f;f;1980;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1979;1981;2;f;f;t;0;3bc9491e-7e22-47f2-8b64-0832e909c0c3",
+			"1981;1982;0;f;f;f;1981;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1982;1983;0;f;f;f;1982;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1982;1983;2;f;f;t;0;87d2518d-8e6c-4290-8089-ad268c698c86",
+			"1983;1984;0;f;f;f;1983;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1984;1985;0;f;f;f;1984;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1984;1985;2;f;f;t;0;49bccab2-365e-425f-82bf-b9097e3769ac",
+			"1985;1986;0;f;f;f;1985;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1986;1987;0;f;f;f;1986;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1986;1987;2;f;f;t;0;c4c467e8-a177-4fc1-9647-82457c8fa651",
+			"1987;1988;0;f;f;f;1987;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1988;1989;0;f;f;f;1988;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1988;1989;2;f;f;t;0;a17b548a-38bc-4b0e-87c1-69576746d4ce",
+			"1989;1990;0;f;f;f;1989;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1990;1991;0;f;f;f;1990;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1990;1991;2;f;f;t;0;03a4b0a4-1426-4485-8f64-33a5404d6df8",
+			"1991;1992;0;f;f;f;1991;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1992;1993;0;f;f;f;1992;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1992;1993;2;f;f;t;0;5ebdbe76-810a-440d-922e-8e5b839d71b3",
+			"1993;1994;0;f;f;f;1993;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1994;1995;0;f;f;f;1994;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1994;1995;2;f;f;t;0;e2974875-9b4b-4bd9-b059-15174502e5ca",
+			"1995;1996;0;f;f;f;1995;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1996;1997;0;f;f;f;1996;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1995;1997;2;f;f;t;0;b3d9bcc7-656b-402e-bd9f-4b8c0d3dc4d1",
+			"1997;1998;0;f;f;f;1997;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1998;1999;0;f;f;f;1998;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"1998;1999;2;f;f;t;0;152e9701-82c7-4a1f-ae49-e7cea8727473",
+			"1999;2000;0;f;f;f;1999;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2000;2001;0;f;f;f;2000;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2000;2001;2;f;f;t;0;36235176-ad5f-4349-9468-99aa8e8e1741",
+			"2001;2002;0;f;f;f;2001;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2002;2003;0;f;f;f;2002;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2002;2003;2;f;f;t;0;4d6dd505-a086-4e2c-9c57-d6098960fd70",
+			"2003;2004;0;f;f;f;2003;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2004;2005;0;f;f;f;2004;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2004;2005;2;f;f;t;0;7926afa8-c5b4-4fe3-b1c9-f32ac3c5dc92",
+			"2005;2006;0;f;f;f;2005;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2006;2007;0;f;f;f;2006;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2006;2007;2;f;f;t;0;2f4dbc6e-fd96-43b0-8599-865e58dcc903",
+			"2007;2008;0;f;f;f;2007;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2008;2009;0;f;f;f;2008;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2008;2009;2;f;f;t;0;8b945c0e-5cdc-4aa8-b792-d7cc25c83e90",
+			"2009;2010;0;f;f;f;2009;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2010;2011;0;f;f;f;2010;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2010;2011;2;f;f;t;0;9c564d0b-35e6-4e7c-8b1d-99504f743a85",
+			"2011;2012;0;f;f;f;2011;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2012;2013;0;f;f;f;2012;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2012;2013;2;f;f;t;0;6e7c957e-dcbe-4aaa-b19c-814c4949cc98",
+			"2013;2014;0;f;f;f;2013;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2014;2015;0;f;f;f;2014;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2014;2015;2;f;f;t;0;e9a18aec-2c8a-4a64-a763-7edf86e58d5f",
+			"2015;2016;0;f;f;f;2015;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2016;2017;0;f;f;f;2016;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2016;2017;2;f;f;t;0;cf341d0f-df5d-4704-83cf-50de9340f3ec",
+			"2017;2018;0;f;f;f;2017;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2018;2019;0;f;f;f;2018;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2018;2019;2;f;f;t;0;95200fdd-72f5-4d7a-becc-1ccba7cccc27",
+			"2019;2020;0;f;f;f;2019;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2020;2021;0;f;f;f;2020;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2020;2021;2;f;f;t;0;7a6736e9-0072-4b31-9084-7c3373bbe282",
+			"2021;2022;0;f;f;f;2021;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2022;2023;0;f;f;f;2022;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2022;2023;2;f;f;t;0;f522693b-faf0-452b-9f9b-ed71ef5d197e",
+			"2023;2024;0;f;f;f;2023;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2024;2025;0;f;f;f;2024;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2024;2025;2;f;f;t;0;f16df662-0bc6-46bd-abda-6c5858f438c5",
+			"2025;2026;0;f;f;f;2025;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2026;2027;0;f;f;f;2026;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2026;2027;2;f;f;t;0;ec79f3cd-ea25-4fcc-8321-ab9290d40b4e",
+			"2027;2028;0;f;f;f;2027;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2028;2029;0;f;f;f;2028;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2028;2029;2;f;f;t;0;4dbaad31-8503-4e09-97cd-8cd515698ecf",
+			"2029;2030;0;f;f;f;2029;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2030;2031;0;f;f;f;2030;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2030;2031;2;f;f;t;0;7f532341-6310-4b8b-9568-5ea23d5c993e",
+			"2031;2032;0;f;f;f;2031;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2032;2033;0;f;f;f;2032;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2032;2033;2;f;f;t;0;c8af94f4-eaaa-412b-8c88-e045c301e0f5",
+			"2033;2034;0;f;f;f;2033;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2034;2035;0;f;f;f;2034;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2034;2035;2;f;f;t;0;f01e50d9-eef3-490f-8f1c-6561f4ada37e",
+			"2035;2036;0;f;f;f;2035;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2036;2037;0;f;f;f;2036;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2036;2037;2;f;f;t;0;6ac235b0-1ac4-47df-92f7-600bc0f9309c",
+			"2037;2038;0;f;f;f;2037;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2038;2039;0;f;f;f;2038;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2038;2039;2;f;f;t;0;2ec5500e-e1c0-4cbd-8701-36725e1127b6",
+			"2039;2040;0;f;f;f;2039;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2040;2041;0;f;f;f;2040;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2040;2041;2;f;f;t;0;3585c69c-d514-4d2e-82a3-95428b2593c9",
+			"2041;2042;0;f;f;f;2041;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2042;2043;0;f;f;f;2042;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2042;2043;2;f;f;t;0;8bcabdfe-3c82-49a9-b3fd-43e999be9c74",
+			"2043;2044;0;f;f;f;2043;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2044;2045;0;f;f;f;2044;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2044;2045;2;f;f;t;0;b65b94fb-6009-4e29-94df-1c10ba7d60bc",
+			"2045;2046;0;f;f;f;2045;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2046;2047;0;f;f;f;2046;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2046;2047;2;f;f;t;0;7c47171c-1b98-4d77-ab7f-f58b320a3fbf",
+			"2047;2048;0;f;f;f;2047;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2048;2049;0;f;f;f;2048;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2048;2049;2;f;f;t;0;7014acee-aa78-490a-bfc0-2f9c005105a9",
+			"2049;2050;0;f;f;f;2049;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2050;2051;0;f;f;f;2050;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2050;2051;2;f;f;t;0;c2c483a7-d305-40ae-b1b7-3ae046f59a19",
+			"2051;2052;0;f;f;f;2051;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2052;2053;0;f;f;f;2052;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2052;2053;2;f;f;t;0;f1adcf95-ce9b-48cc-afd1-d7d566b9745d",
+			"2053;2054;0;f;f;f;2053;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2054;2055;0;f;f;f;2054;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2054;2055;2;f;f;t;0;470dcd2d-e3cc-4187-a2c6-97af5bfa5180",
+			"2055;2056;0;f;f;f;2055;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2056;2057;0;f;f;f;2056;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2056;2057;2;f;f;t;0;1721a9ef-1ea1-42e1-9a52-f765b4c4cc72",
+			"2057;2058;0;f;f;f;2057;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2058;2059;0;f;f;f;2058;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2058;2059;2;f;f;t;0;4c7c5370-d37d-49ca-af38-1c40a1f1afe2",
+			"2059;2060;0;f;f;f;2059;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2060;2061;0;f;f;f;2060;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2060;2061;2;f;f;t;0;25cc3d07-6341-4c81-a734-13b0a17d69a0",
+			"2061;2062;0;f;f;f;2061;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2062;2063;0;f;f;f;2062;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2062;2063;2;f;f;t;0;dad02f5e-74b9-49ea-9723-a68c8390ecdf",
+			"2063;2064;0;f;f;f;2063;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2064;2065;0;f;f;f;2064;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2064;2065;2;f;f;t;0;18fc4924-ef27-4b34-9986-ea867c78a054",
+			"2065;2066;0;f;f;f;2065;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2066;2067;0;f;f;f;2066;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2066;2067;2;f;f;t;0;3cbe77c9-5071-4b60-ab00-fe3ad8a3f39d",
+			"2067;2068;0;f;f;f;2067;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2068;2069;0;f;f;f;2068;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2068;2069;2;f;f;t;0;fbae5f06-cb4d-4eac-bbe0-32168e778776",
+			"2069;2070;0;f;f;f;2069;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2070;2071;0;f;f;f;2070;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2070;2071;2;f;f;t;0;60e13237-967e-4195-bf77-b5d8a2f5a758",
+			"2071;2072;0;f;f;f;2071;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2072;2073;0;f;f;f;2072;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2072;2073;2;f;f;t;0;5c25319d-9c1b-422d-afca-ab321001f09e",
+			"2073;2074;0;f;f;f;2073;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2074;2075;0;f;f;f;2074;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2073;2075;2;f;f;t;0;eaf9bdec-4136-45f6-9d98-5733942d2311",
+			"2075;2076;0;f;f;f;2075;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2076;2077;0;f;f;f;2076;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2077;2078;0;f;f;f;2077;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2076;2078;2;f;f;t;0;e678eee2-24e3-45e1-8f22-46f3bf4de3dd",
+			"2077;2078;2;f;f;t;0;3d2322d0-9387-4145-b6c3-83546078e8df",
+			"2078;2079;0;f;f;f;2078;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2079;2080;0;f;f;f;2079;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2080;2081;0;f;f;f;2080;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2080;2081;2;f;f;t;0;31906017-b14b-455d-bcb6-bc7dab8794e5",
+			"2081;2082;0;f;f;f;2081;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2082;2083;0;f;f;f;2082;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2082;2083;2;f;f;t;0;d59e7945-c968-43a0-837f-e8984469db07",
+			"2083;2084;0;f;f;f;2083;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2084;2085;0;f;f;f;2084;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2084;2085;2;f;f;t;0;d7080a0d-a905-4cfd-92f7-1120bed777ea",
+			"2085;2086;0;f;f;f;2085;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2086;2087;0;f;f;f;2086;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2086;2087;2;f;f;t;0;1e0d41d6-103c-458a-8fde-83022d7b965e",
+			"2087;2088;0;f;f;f;2087;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2088;2089;0;f;f;f;2088;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2088;2089;2;f;f;t;0;39301137-2927-4fc5-b3e3-34429caf0a3e",
+			"2089;2090;0;f;f;f;2089;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2090;2091;0;f;f;f;2090;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2090;2091;2;f;f;t;0;298a1d36-0423-4d0b-8be5-babfc2f2fe85",
+			"2091;2092;0;f;f;f;2091;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2092;2093;0;f;f;f;2092;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2092;2093;2;f;f;t;0;0059fada-0acc-4cf9-af86-4fda9c8d1dfe",
+			"2093;2094;0;f;f;f;2093;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2094;2095;0;f;f;f;2094;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2094;2095;2;f;f;t;0;780666ed-c146-4abe-b01e-466e7882d8f9",
+			"2095;2096;0;f;f;f;2095;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2096;2097;0;f;f;f;2096;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2096;2097;2;f;f;t;0;67da200d-8f12-4554-8603-e05af514d8b8",
+			"2097;2098;0;f;f;f;2097;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2098;2099;0;f;f;f;2098;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2098;2099;2;f;f;t;0;9e22bd5e-5807-4f3d-a6a4-d1d144f0ac75",
+			"2099;2100;0;f;f;f;2099;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2100;2101;0;f;f;f;2100;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2100;2101;2;f;f;t;0;14a28656-b143-4389-ae13-ec98190c3ed7",
+			"2101;2102;0;f;f;f;2101;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2102;2103;0;f;f;f;2102;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2102;2103;2;f;f;t;0;e4965156-0f7a-46f6-8e0c-4a7f1ba155aa",
+			"2103;2104;0;f;f;f;2103;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2104;2105;0;f;f;f;2104;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2104;2105;2;f;f;t;0;c59dc76a-5eeb-4ca9-8b84-6c58b0ef3a37",
+			"2105;2106;0;f;f;f;2105;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2106;2107;0;f;f;f;2106;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2106;2107;2;f;f;t;0;5a28f082-cadc-49ae-a691-0d0b6061732a",
+			"2107;2108;0;f;f;f;2107;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2108;2109;0;f;f;f;2108;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2108;2109;2;f;f;t;0;16a1943a-e1f2-46bc-8bdb-0582e9466622",
+			"2109;2110;0;f;f;f;2109;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2110;2111;0;f;f;f;2110;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2110;2111;2;f;f;t;0;4d30454f-caa6-4fdb-b286-c092375ffa65",
+			"2111;2112;0;f;f;f;2111;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2112;2113;0;f;f;f;2112;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2112;2113;2;f;f;t;0;85baaae2-5423-495d-8141-a2e2e4335b1c",
+			"2113;2114;0;f;f;f;2113;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2114;2115;0;f;f;f;2114;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2114;2115;2;f;f;t;0;9430d068-9c5c-4d3d-acd4-d1dafe2c5079",
+			"2115;2116;0;f;f;f;2115;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2116;2117;0;f;f;f;2116;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2116;2117;2;f;f;t;0;46c86657-fef8-4839-b0a8-3506166eb014",
+			"2117;2118;0;f;f;f;2117;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2118;2119;0;f;f;f;2118;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2118;2119;2;f;f;t;0;19f74597-2196-4be1-ba05-489ee68263be",
+			"2119;2120;0;f;f;f;2119;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2120;2121;0;f;f;f;2120;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2120;2121;2;f;f;t;0;a5884c8b-62a2-4660-8377-99a16b4399eb",
+			"2121;2122;0;f;f;f;2121;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2122;2123;0;f;f;f;2122;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2122;2123;2;f;f;t;0;b8c274ea-3586-43da-aa90-46e2c0acfcd7",
+			"2123;2124;0;f;f;f;2123;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2124;2125;0;f;f;f;2124;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2124;2125;2;f;f;t;0;4b1d016a-554e-4313-97b0-06d7ed627254",
+			"2125;2126;0;f;f;f;2125;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2126;2127;0;f;f;f;2126;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2127;2128;0;f;f;f;2127;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2126;2128;2;f;f;t;0;93442ca9-bbc7-4dd6-aa3d-27a2a391f5fa",
+			"2127;2128;2;f;f;t;0;12880e03-4124-4bf3-bb8f-67bb89791af5",
+			"2128;2129;0;f;f;f;2128;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2129;2130;0;f;f;f;2129;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2130;2131;0;f;f;f;2130;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2130;2131;2;f;f;t;0;7e12ce0b-da01-480f-8f4f-af0ffb4523f3",
+			"2131;2132;0;f;f;f;2131;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2132;2133;0;f;f;f;2132;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2131;2133;2;f;f;t;0;3c6b9f18-4d3d-49c4-a70f-7b413ad9a28b",
+			"2133;2134;0;f;f;f;2133;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2134;2135;0;f;f;f;2134;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2134;2135;2;f;f;t;0;d376fcd0-9ac5-45ca-aad2-3c08e4ecb25c",
+			"2135;2136;0;f;f;f;2135;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2136;2137;0;f;f;f;2136;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2136;2137;2;f;f;t;0;a7ab7dd3-af3e-4905-bb2a-c736d307d479",
+			"2137;2138;0;f;f;f;2137;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2138;2139;0;f;f;f;2138;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2138;2139;2;f;f;t;0;3b46f02f-bacc-40b8-9a83-70faa159253a",
+			"2139;2140;0;f;f;f;2139;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2140;2141;0;f;f;f;2140;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2140;2141;2;f;f;t;0;4a8a60cb-cf84-481e-aa63-8f75f21b5587",
+			"2141;2142;0;f;f;f;2141;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2142;2143;0;f;f;f;2142;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2142;2143;2;f;f;t;0;dfd7f7c8-2bed-4fe6-a5fe-12497dcee1ff",
+			"2143;2144;0;f;f;f;2143;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2144;2145;0;f;f;f;2144;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2144;2145;2;f;f;t;0;b0deef47-9d01-4883-b035-78b9dd5c0507",
+			"2145;2146;0;f;f;f;2145;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2146;2147;0;f;f;f;2146;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2146;2147;2;f;f;t;0;53dc9048-6a20-4ce2-8569-1219fa1ba8ec",
+			"2147;2148;0;f;f;f;2147;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2148;2149;0;f;f;f;2148;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2148;2149;2;f;f;t;0;2acd325c-c948-412f-8503-565baef36333",
+			"2149;2150;0;f;f;f;2149;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2150;2151;0;f;f;f;2150;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2150;2151;2;f;f;t;0;d421106f-7ba1-4467-b98e-3cfef8f46fbb",
+			"2151;2152;0;f;f;f;2151;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2152;2153;0;f;f;f;2152;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2152;2153;2;f;f;t;0;d1148382-abb1-4aa8-b4d2-021b81c9b751",
+			"2153;2154;0;f;f;f;2153;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2154;2155;0;f;f;f;2154;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2154;2155;2;f;f;t;0;6928fc76-9609-4e3e-84ba-c1b8e4051c92",
+			"2155;2156;0;f;f;f;2155;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2156;2157;0;f;f;f;2156;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2156;2157;2;f;f;t;0;8eb38055-e295-4a45-bea9-170e0ebb040a",
+			"2157;2158;0;f;f;f;2157;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2158;2159;0;f;f;f;2158;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2158;2159;2;f;f;t;0;f05f617e-4962-4ef5-83cb-d40fd639bb78",
+			"2159;2160;0;f;f;f;2159;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2160;2161;0;f;f;f;2160;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2160;2161;2;f;f;t;0;b8c4c8f5-390e-469d-8091-6bc9d93703c5",
+			"2161;2162;0;f;f;f;2161;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2162;2163;0;f;f;f;2162;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2162;2163;2;f;f;t;0;cebc289f-bbee-4605-90b2-d2fc9c1d4211",
+			"2163;2164;0;f;f;f;2163;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2164;2165;0;f;f;f;2164;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2164;2165;2;f;f;t;0;096d9bc7-bf4a-4115-87c7-e98a2279e524",
+			"2165;2166;0;f;f;f;2165;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2166;2167;0;f;f;f;2166;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2166;2167;2;f;f;t;0;84477b1b-db94-4d7c-8919-85a25b08a4c3",
+			"2167;2168;0;f;f;f;2167;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2168;2169;0;f;f;f;2168;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2168;2169;2;f;f;t;0;38a57840-33d6-4b36-820b-2883e5debc93",
+			"2169;2170;0;f;f;f;2169;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2170;2171;0;f;f;f;2170;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2170;2171;2;f;f;t;0;c91c3152-9ecc-4398-86f8-ea9a31adc2b8",
+			"2171;2172;0;f;f;f;2171;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2172;2173;0;f;f;f;2172;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2172;2173;2;f;f;t;0;28a084c1-4b45-43a0-b2ac-6a14148c9ff0",
+			"2173;2174;0;f;f;f;2173;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2174;2175;0;f;f;f;2174;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2174;2175;2;f;f;t;0;2c185e97-1dc4-4229-b4bc-e6d0d95e74b5",
+			"2175;2176;0;f;f;f;2175;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2176;2177;0;f;f;f;2176;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2176;2177;2;f;f;t;0;73c654b4-a8bc-485f-b233-29ab103c5a31",
+			"2177;2178;0;f;f;f;2177;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2178;2179;0;f;f;f;2178;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2178;2179;2;f;f;t;0;60b556d5-6f04-47b3-8a5e-ae548467c248",
+			"2179;2180;0;f;f;f;2179;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2180;2181;0;f;f;f;2180;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2180;2181;2;f;f;t;0;2886960e-2b35-4260-8864-4b61c7394c7c",
+			"2181;2182;0;f;f;f;2181;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2182;2183;0;f;f;f;2182;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2182;2183;2;f;f;t;0;345a13ce-3195-4e89-9155-0e98cd9011ac",
+			"2183;2184;0;f;f;f;2183;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2184;2185;0;f;f;f;2184;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2184;2185;2;f;f;t;0;1d2346da-7acc-4f3b-87a1-4bff014a3fc5",
+			"2185;2186;0;f;f;f;2185;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2186;2187;0;f;f;f;2186;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2186;2187;2;f;f;t;0;d7b1bd5a-e769-439a-b3f6-60f2dd74bbdd",
+			"2187;2188;0;f;f;f;2187;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2188;2189;0;f;f;f;2188;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2188;2189;2;f;f;t;0;1b465b56-32a3-4c97-892c-73702035a915",
+			"2189;2190;0;f;f;f;2189;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2190;2191;0;f;f;f;2190;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2190;2191;2;f;f;t;0;88839630-69b1-4d27-a50f-71a2dc1cd5e4",
+			"2191;2192;0;f;f;f;2191;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2192;2193;0;f;f;f;2192;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2192;2193;2;f;f;t;0;cb9e0130-8697-4750-b920-02229b094a46",
+			"2193;2194;0;f;f;f;2193;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2194;2195;0;f;f;f;2194;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2194;2195;2;f;f;t;0;d883bc61-08b6-4d6c-a2d7-daab8940db0f",
+			"2195;2196;0;f;f;f;2195;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2196;2197;0;f;f;f;2196;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2196;2197;2;f;f;t;0;dd3056de-2035-4e3c-8858-24e8f6ce4a61",
+			"2197;2198;0;f;f;f;2197;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2198;2199;0;f;f;f;2198;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2198;2199;2;f;f;t;0;6619848a-1138-448f-91fa-5db4cfaee918",
+			"2199;2200;0;f;f;f;2199;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2200;2201;0;f;f;f;2200;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2200;2201;2;f;f;t;0;f88cfac6-628a-4101-a19c-2f9e43d3e4a9",
+			"2201;2202;0;f;f;f;2201;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2202;2203;0;f;f;f;2202;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2202;2203;2;f;f;t;0;b7f74ae0-c4bb-4c29-909e-3418f75c8b04",
+			"2203;2204;0;f;f;f;2203;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2204;2205;0;f;f;f;2204;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2204;2205;2;f;f;t;0;d684a2ba-118f-4970-b3c8-6b5b7aeafa9b",
+			"2205;2206;0;f;f;f;2205;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2206;2207;0;f;f;f;2206;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2206;2207;2;f;f;t;0;9643d02f-6018-47bb-9c7e-aba6c172a522",
+			"2207;2208;0;f;f;f;2207;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2208;2209;0;f;f;f;2208;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2208;2209;2;f;f;t;0;6efdf68c-edb7-4ba7-9cf5-400f105ec790",
+			"2209;2210;0;f;f;f;2209;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2210;2211;0;f;f;f;2210;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2210;2211;2;f;f;t;0;edb0b8bf-2c80-44af-ac77-9b4d921d5bc6",
+			"2211;2212;0;f;f;f;2211;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2212;2213;0;f;f;f;2212;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2212;2213;2;f;f;t;0;b2f283c4-21a0-4354-a824-973bfe168f3c",
+			"2213;2214;0;f;f;f;2213;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2214;2215;0;f;f;f;2214;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2214;2215;2;f;f;t;0;e689a024-170b-4120-9b05-6c3ce8fe7f31",
+			"2215;2216;0;f;f;f;2215;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2216;2217;0;f;f;f;2216;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2216;2217;2;f;f;t;0;43edc656-3b2a-468d-978e-6adeb8529c84",
+			"2217;2218;0;f;f;f;2217;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2218;2219;0;f;f;f;2218;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2218;2219;2;f;f;t;0;3f569c4c-f61b-4887-989c-44cb098320b0",
+			"2219;2220;0;f;f;f;2219;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2220;2221;0;f;f;f;2220;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2220;2221;2;f;f;t;0;99664bbf-8f3e-4549-88c1-fb8810fc56fb",
+			"2221;2222;0;f;f;f;2221;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2222;2223;0;f;f;f;2222;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2222;2223;2;f;f;t;0;96cb35f9-eecb-4170-84e0-d0beae654a07",
+			"2223;2224;0;f;f;f;2223;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2224;2225;0;f;f;f;2224;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2224;2225;2;f;f;t;0;fde1e939-231f-4b8b-967a-95c06667b021",
+			"2225;2226;0;f;f;f;2225;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2226;2227;0;f;f;f;2226;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2226;2227;2;f;f;t;0;038e0d05-ac69-4f22-adf1-224670cda638",
+			"2227;2228;0;f;f;f;2227;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2228;2229;0;f;f;f;2228;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2228;2229;2;f;f;t;0;eafd83c5-8390-4e17-9580-00df3038dfb7",
+			"2229;2230;0;f;f;f;2229;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2230;2231;0;f;f;f;2230;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2230;2231;2;f;f;t;0;2da81332-2123-4714-8d66-d7682a95e791",
+			"2231;2232;0;f;f;f;2231;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2232;2233;0;f;f;f;2232;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2232;2233;2;f;f;t;0;46f5b5a7-3b9a-45d2-ae33-b43eccb2acb5",
+			"2233;2234;0;f;f;f;2233;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2234;2235;0;f;f;f;2234;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2234;2235;2;f;f;t;0;ab3199b8-310c-43f3-aabd-d86f04042f2d",
+			"2235;2236;0;f;f;f;2235;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2236;2237;0;f;f;f;2236;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2236;2237;2;f;f;t;0;5361069f-7d09-438e-be74-3dbbaddce6b3",
+			"2237;2238;0;f;f;f;2237;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2238;2239;0;f;f;f;2238;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2238;2239;2;f;f;t;0;bdfbd8c4-16fa-4c24-9c03-cde05a310534",
+			"2239;2240;0;f;f;f;2239;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2240;2241;0;f;f;f;2240;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2240;2241;2;f;f;t;0;96eca9ea-6313-47f1-acf1-dd66a9de0f34",
+			"2241;2242;0;f;f;f;2241;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2242;2243;0;f;f;f;2242;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2242;2243;2;f;f;t;0;163cf318-06b4-45b7-8f91-aeae8747eaa4",
+			"2243;2244;0;f;f;f;2243;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2244;2245;0;f;f;f;2244;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2244;2245;2;f;f;t;0;8650bc71-f473-4a03-b2be-e2e3bf6ab9a2",
+			"2245;2246;0;f;f;f;2245;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2246;2247;0;f;f;f;2246;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2246;2247;2;f;f;t;0;e4e86c16-050d-4dc6-a36f-2621defb820e",
+			"2247;2248;0;f;f;f;2247;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2248;2249;0;f;f;f;2248;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2248;2249;2;f;f;t;0;93f29202-ad1f-4a28-a996-3b84455887bd",
+			"2249;2250;0;f;f;f;2249;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2250;2251;0;f;f;f;2250;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2250;2251;2;f;f;t;0;d752bba8-1412-42c5-bd63-f8b7d9ade34e",
+			"2251;2252;0;f;f;f;2251;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2252;2253;0;f;f;f;2252;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2252;2253;2;f;f;t;0;108c42f9-3b5a-495d-9ff8-88031e9cc739",
+			"2253;2254;0;f;f;f;2253;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2254;2255;0;f;f;f;2254;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2254;2255;2;f;f;t;0;bde008d9-24aa-4506-a39b-e3709d100209",
+			"2255;2256;0;f;f;f;2255;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2256;2257;0;f;f;f;2256;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2256;2257;2;f;f;t;0;9d859310-fc06-48a8-9097-ca3ee32949cf",
+			"2257;2258;0;f;f;f;2257;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2258;2259;0;f;f;f;2258;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2258;2259;2;f;f;t;0;7fbee612-6e9c-4f79-be86-d0fdb3975620",
+			"2259;2260;0;f;f;f;2259;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2260;2261;0;f;f;f;2260;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2260;2261;2;f;f;t;0;be3f59e1-513a-469b-9abe-d994c38b7fbf",
+			"2261;2262;0;f;f;f;2261;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2262;2263;0;f;f;f;2262;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2262;2263;2;f;f;t;0;3fa6ffa2-e669-402d-be50-ba5051854076",
+			"2263;2264;0;f;f;f;2263;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2264;2265;0;f;f;f;2264;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2264;2265;2;f;f;t;0;9673f5d3-f590-46d1-b7f2-5b2d78b92378",
+			"2265;2266;0;f;f;f;2265;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2266;2267;0;f;f;f;2266;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2266;2267;2;f;f;t;0;787da756-0338-49d5-a697-4cd3ce4779f7",
+			"2267;2268;0;f;f;f;2267;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2268;2269;0;f;f;f;2268;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2268;2269;2;f;f;t;0;98f5d239-8c21-4a7a-963d-acb5d5612920",
+			"2269;2270;0;f;f;f;2269;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2270;2271;0;f;f;f;2270;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2270;2271;2;f;f;t;0;58d42cd7-e159-4fe5-a0ae-776c20df1be8",
+			"2271;2272;0;f;f;f;2271;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2272;2273;0;f;f;f;2272;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2272;2273;2;f;f;t;0;ae8d433a-bef4-437e-ba33-96b82bdaecc1",
+			"2273;2274;0;f;f;f;2273;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2274;2275;0;f;f;f;2274;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2273;2275;2;f;f;t;0;b18b2db8-0203-4ce4-a342-a6c95c221d8a",
+			"2275;2276;0;f;f;f;2275;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2276;2277;0;f;f;f;2276;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2276;2277;2;f;f;t;0;f86f6993-47a5-4fd0-8e38-91e9c50f6512",
+			"2277;2278;0;f;f;f;2277;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2278;2279;0;f;f;f;2278;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2278;2279;2;f;f;t;0;eef4df4b-c3ff-4882-929d-e2c576d2f69a",
+			"2279;2280;0;f;f;f;2279;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2280;2281;0;f;f;f;2280;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2280;2281;2;f;f;t;0;793b26ce-1794-478c-b7b9-612dea2429a3",
+			"2281;2282;0;f;f;f;2281;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2282;2283;0;f;f;f;2282;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2282;2283;2;f;f;t;0;899eedb2-29fe-4e14-b2c6-a7d78d5443bf",
+			"2283;2284;0;f;f;f;2283;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2284;2285;0;f;f;f;2284;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2284;2285;2;f;f;t;0;d9f14889-1e29-4eb0-a0c4-aae5dbc24082",
+			"2285;2286;0;f;f;f;2285;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2286;2287;0;f;f;f;2286;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2286;2287;2;f;f;t;0;f75e6d5d-13f5-4f06-9faa-8093157ce005",
+			"2287;2288;0;f;f;f;2287;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2288;2289;0;f;f;f;2288;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2288;2289;2;f;f;t;0;c713961f-88ad-4e99-8952-0db86a4e718d",
+			"2289;2290;0;f;f;f;2289;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2290;2291;0;f;f;f;2290;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2290;2291;2;f;f;t;0;01fc52ae-6a5a-4a12-bab9-0c4b0fcf9f4e",
+			"2291;2292;0;f;f;f;2291;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2292;2293;0;f;f;f;2292;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2292;2293;2;f;f;t;0;683b4b73-5909-4fc8-b2b5-f089c6614860",
+			"2293;2294;0;f;f;f;2293;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2294;2295;0;f;f;f;2294;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2293;2295;2;f;f;t;0;416c9346-7b02-4060-98d6-d7744c810f37",
+			"2295;2296;0;f;f;f;2295;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2296;2297;0;f;f;f;2296;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2296;2297;2;f;f;t;0;28f48197-b020-4759-ae3e-03850ee7e7d5",
+			"2297;2298;0;f;f;f;2297;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2298;2299;0;f;f;f;2298;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2298;2299;2;f;f;t;0;293d98e5-88c5-4847-8576-01569d2bca43",
+			"2299;2300;0;f;f;f;2299;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2300;2301;0;f;f;f;2300;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2300;2301;2;f;f;t;0;cbf67133-10d5-4233-ab95-4e691f678ee2",
+			"2301;2302;0;f;f;f;2301;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2302;2303;0;f;f;f;2302;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2303;2304;0;f;f;f;2303;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2302;2304;2;f;f;t;0;55e002a8-2955-4e79-8b52-7b8ddcb23adf",
+			"2303;2304;2;f;f;t;0;17a736fa-a6f3-40ca-a479-68f963547cbc",
+			"2304;2305;0;f;f;f;2304;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2305;2306;0;f;f;f;2305;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2306;2307;0;f;f;f;2306;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2306;2307;2;f;f;t;0;91200657-2a85-4a14-abfd-dea63b57a817",
+			"2307;2308;0;f;f;f;2307;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2308;2309;0;f;f;f;2308;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2307;2309;2;f;f;t;0;f86d6129-50e1-4d9b-8053-4cb94ae076db",
+			"2309;2310;0;f;f;f;2309;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2310;2311;0;f;f;f;2310;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2310;2311;2;f;f;t;0;e5c084d9-fc57-42ec-9931-e983ece5b96a",
+			"2311;2312;0;f;f;f;2311;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2312;2313;0;f;f;f;2312;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2311;2313;2;f;f;t;0;b8e2f543-6116-4582-9db1-72370eecc7a0",
+			"2313;2314;0;f;f;f;2313;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2314;2315;0;f;f;f;2314;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2314;2315;2;f;f;t;0;9e43312c-013f-4648-bcb3-523e8741b288",
+			"2315;2316;0;f;f;f;2315;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2316;2317;0;f;f;f;2316;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2315;2317;2;f;f;t;0;701e78df-9193-4e68-bbd1-89342acc2ee6",
+			"2317;2318;0;f;f;f;2317;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2318;2319;0;f;f;f;2318;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2318;2319;2;f;f;t;0;b1242494-2b4c-48ab-9346-b2f32c2961f6",
+			"2319;2320;0;f;f;f;2319;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2320;2321;0;f;f;f;2320;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2320;2321;2;f;f;t;0;7fbad290-7ace-43c5-a0c1-bc4b18b43076",
+			"2321;2322;0;f;f;f;2321;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2322;2323;0;f;f;f;2322;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2322;2323;2;f;f;t;0;4b9e1c07-8fdd-4e5c-a929-d8813c52ee13",
+			"2323;2324;0;f;f;f;2323;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2324;2325;0;f;f;f;2324;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2324;2325;2;f;f;t;0;a1fc7463-a7ee-401c-b9a7-f7cfbf09e04c",
+			"2325;2326;0;f;f;f;2325;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2326;2327;0;f;f;f;2326;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2326;2327;2;f;f;t;0;dd24ad08-6aca-433d-bb26-71ca59770663",
+			"2327;2328;0;f;f;f;2327;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2328;2329;0;f;f;f;2328;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2328;2329;2;f;f;t;0;b256b782-d427-4672-87da-5a731b6f2086",
+			"2329;2330;0;f;f;f;2329;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2330;2331;0;f;f;f;2330;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2330;2331;2;f;f;t;0;06a657e9-2c82-4131-8e33-caf3c93783fb",
+			"2331;2332;0;f;f;f;2331;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2332;2333;0;f;f;f;2332;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2332;2333;2;f;f;t;0;17b3455e-53b5-44c7-9eed-b06712124553",
+			"2333;2334;0;f;f;f;2333;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2334;2335;0;f;f;f;2334;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2334;2335;2;f;f;t;0;9d477c35-a35e-45d6-b298-aa74cf1c419b",
+			"2335;2336;0;f;f;f;2335;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2336;2337;0;f;f;f;2336;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2336;2337;2;f;f;t;0;a8bb3d60-d782-43ca-b343-2b4e4a1b083e",
+			"2337;2338;0;f;f;f;2337;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2338;2339;0;f;f;f;2338;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2338;2339;2;f;f;t;0;57371758-c6a8-48d9-952a-c0b0f07976c0",
+			"2339;2340;0;f;f;f;2339;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2340;2341;0;f;f;f;2340;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2340;2341;2;f;f;t;0;932a1f93-2641-4f51-862b-477d7c593e25",
+			"2341;2342;0;f;f;f;2341;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2342;2343;0;f;f;f;2342;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2342;2343;2;f;f;t;0;86e4dbe8-f5c4-4a91-8609-90de0e2bcacd",
+			"2343;2344;0;f;f;f;2343;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2344;2345;0;f;f;f;2344;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2345;2346;0;f;f;f;2345;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2344;2346;2;f;f;t;0;0bf89f75-2fe7-4e3f-810d-355a6768d15f",
+			"2345;2346;2;f;f;t;0;b3c2b14f-4e94-44ce-8aeb-2339b4f16d57",
+			"2346;2347;0;f;f;f;2346;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2347;2348;0;f;f;f;2347;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2348;2349;0;f;f;f;2348;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2349;2350;0;f;f;f;2349;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2348;2350;2;f;f;t;0;eb68deeb-92c8-45c3-ab05-aeb04e511f22",
+			"2349;2350;2;f;f;t;0;94b28dfb-7956-4ae3-b656-7e17bc0ecca2",
+			"2350;2351;0;f;f;f;2350;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2351;2352;0;f;f;f;2351;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2352;2353;0;f;f;f;2352;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2352;2353;2;f;f;t;0;606f7faa-6b6c-4524-9a24-b5070bcdf18c",
+			"2353;2354;0;f;f;f;2353;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2354;2355;0;f;f;f;2354;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2353;2355;2;f;f;t;0;4c4d5a9e-e128-4639-9ee0-4f77a0dd4e61",
+			"2355;2356;0;f;f;f;2355;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2356;2357;0;f;f;f;2356;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2356;2357;2;f;f;t;0;22ab2d68-5fc8-4e76-b939-50a1019f7d2f",
+			"2357;2358;0;f;f;f;2357;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2358;2359;0;f;f;f;2358;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2357;2359;2;f;f;t;0;c7882f5e-af3d-4265-a37b-f6f34c0f7c5d",
+			"2359;2360;0;f;f;f;2359;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2360;2361;0;f;f;f;2360;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2360;2361;2;f;f;t;0;8d86379e-6c4c-4b72-bcce-5ae9fe33d0b4",
+			"2361;2362;0;f;f;f;2361;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2362;2363;0;f;f;f;2362;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2361;2363;2;f;f;t;0;b85a2258-93f1-4e5e-8250-5b2fe3698848",
+			"2363;2364;0;f;f;f;2363;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2364;2365;0;f;f;f;2364;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2364;2365;2;f;f;t;0;63bdf3d5-6610-4b89-b244-d8f5bda5934d",
+			"2365;2366;0;f;f;f;2365;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2366;2367;0;f;f;f;2366;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2366;2367;2;f;f;t;0;fed8b7dd-1fa0-4c2f-a51b-2fcab7ffb064",
+			"2367;2368;0;f;f;f;2367;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2368;2369;0;f;f;f;2368;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2368;2369;2;f;f;t;0;15011e7d-0fc5-4ac8-afd1-4282536a2ff9",
+			"2369;2370;0;f;f;f;2369;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2370;2371;0;f;f;f;2370;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2370;2371;2;f;f;t;0;5c407822-677a-4a19-a58a-04efeb3cd140",
+			"2371;2372;0;f;f;f;2371;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2372;2373;0;f;f;f;2372;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2372;2373;2;f;f;t;0;8536e4ff-076f-4c7a-8fd7-695c0dabad3d",
+			"2373;2374;0;f;f;f;2373;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2374;2375;0;f;f;f;2374;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2374;2375;2;f;f;t;0;32cca841-3706-448e-bf71-3ccc5a7f47eb",
+			"2375;2376;0;f;f;f;2375;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2376;2377;0;f;f;f;2376;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2376;2377;2;f;f;t;0;fc0a7d8b-b58f-4661-91a3-8efae80465db",
+			"2377;2378;0;f;f;f;2377;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2378;2379;0;f;f;f;2378;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2377;2379;2;f;f;t;0;170e5ca4-5105-4102-9523-1bcc4434fb2b",
+			"2379;2380;0;f;f;f;2379;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2380;2381;0;f;f;f;2380;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2380;2381;2;f;f;t;0;9accdcc6-42f6-403e-89ab-34330e88e3c1",
+			"2381;2382;0;f;f;f;2381;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2382;2383;0;f;f;f;2382;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2382;2383;2;f;f;t;0;0d324124-0c68-435d-9ce6-47f965d7b6bf",
+			"2383;2384;0;f;f;f;2383;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2384;2385;0;f;f;f;2384;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2384;2385;2;f;f;t;0;e15d737b-b838-40db-aa49-1e7cdaff2cb4",
+			"2385;2386;0;f;f;f;2385;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2386;2387;0;f;f;f;2386;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2386;2387;2;f;f;t;0;3b0ca772-42ee-43fc-8b78-e4fb32eced44",
+			"2387;2388;0;f;f;f;2387;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2388;2389;0;f;f;f;2388;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2388;2389;2;f;f;t;0;94f15d3d-1290-4db3-a958-85151275c208",
+			"2389;2390;0;f;f;f;2389;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2390;2391;0;f;f;f;2390;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2390;2391;2;f;f;t;0;2bf31255-73f8-46af-a5e9-c4e0a5aa7d77",
+			"2391;2392;0;f;f;f;2391;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2392;2393;0;f;f;f;2392;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2392;2393;2;f;f;t;0;7b3fbe4c-e0c1-4fab-aaeb-37b59b0834a2",
+			"2393;2394;0;f;f;f;2393;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2394;2395;0;f;f;f;2394;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2394;2395;2;f;f;t;0;5472b780-c912-41fb-bfd3-55fa0703f726",
+			"2395;2396;0;f;f;f;2395;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2396;2397;0;f;f;f;2396;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2396;2397;2;f;f;t;0;7737998d-67ff-48b3-96a9-9bdcee2f33fa",
+			"2397;2398;0;f;f;f;2397;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2398;2399;0;f;f;f;2398;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2398;2399;2;f;f;t;0;35913389-4135-46dd-a81b-3e9c1b0ddcd3",
+			"2399;2400;0;f;f;f;2399;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2400;2401;0;f;f;f;2400;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2400;2401;2;f;f;t;0;70e5e5c4-8d2a-4a3b-877b-9838e638d906",
+			"2401;2402;0;f;f;f;2401;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2402;2403;0;f;f;f;2402;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2403;2404;0;f;f;f;2403;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2402;2404;2;f;f;t;0;0628e69d-7626-41ef-a9b8-271a751d0f7a",
+			"2403;2404;2;f;f;t;0;d0b13f9e-1038-4eca-b48d-92bf403c5399",
+			"2404;2405;0;f;f;f;2404;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2405;2406;0;f;f;f;2405;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2406;2407;0;f;f;f;2406;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2406;2407;2;f;f;t;0;0395d455-c2da-4244-a2a1-6b86fb5916db",
+			"2407;2408;0;f;f;f;2407;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2408;2409;0;f;f;f;2408;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2408;2409;2;f;f;t;0;d9ac1169-259b-4683-b1cf-325e7d1948c7",
+			"2409;2410;0;f;f;f;2409;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2410;2411;0;f;f;f;2410;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2410;2411;2;f;f;t;0;9523de64-a019-4ae1-bf50-0df7deecbb44",
+			"2411;2412;0;f;f;f;2411;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2412;2413;0;f;f;f;2412;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2412;2413;2;f;f;t;0;368f2559-8a14-4832-918a-69e8592eac3b",
+			"2413;2414;0;f;f;f;2413;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2414;2415;0;f;f;f;2414;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2414;2415;2;f;f;t;0;d935e585-652c-4f0a-b5a5-b2811da879c4",
+			"2415;2416;0;f;f;f;2415;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2416;2417;0;f;f;f;2416;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2415;2417;2;f;f;t;0;59a2a331-a89a-462a-849f-dadce44ff546",
+			"2417;2418;0;f;f;f;2417;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2418;2419;0;f;f;f;2418;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2418;2419;2;f;f;t;0;be6aefb6-79aa-403c-83cd-068a9fe462c5",
+			"2419;2420;0;f;f;f;2419;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2420;2421;0;f;f;f;2420;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2419;2421;2;f;f;t;0;b0ba3244-a8ad-437a-b105-b034ba52b625",
+			"2421;2422;0;f;f;f;2421;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2422;2423;0;f;f;f;2422;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2422;2423;2;f;f;t;0;815852a3-7acf-47ec-8ab2-1dbf84568584",
+			"2423;2424;0;f;f;f;2423;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2424;2425;0;f;f;f;2424;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2424;2425;2;f;f;t;0;47f3115e-7917-4291-bfca-a95701b760a3",
+			"2425;2426;0;f;f;f;2425;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2426;2427;0;f;f;f;2426;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2426;2427;2;f;f;t;0;4aaaf17e-eb68-4811-b948-f623e42bbefc",
+			"2427;2428;0;f;f;f;2427;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2428;2429;0;f;f;f;2428;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2428;2429;2;f;f;t;0;22a1c3fe-731c-4965-905e-0c71c405b1f6",
+			"2429;2430;0;f;f;f;2429;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2430;2431;0;f;f;f;2430;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2430;2431;2;f;f;t;0;352cf795-2236-4051-ae5f-d20298b156c7",
+			"2431;2432;0;f;f;f;2431;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2432;2433;0;f;f;f;2432;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2432;2433;2;f;f;t;0;8056598b-e7ed-406a-a0d8-ac8a515ce613",
+			"2433;2434;0;f;f;f;2433;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2434;2435;0;f;f;f;2434;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2434;2435;2;f;f;t;0;ccd5eb42-6f84-4295-ba41-e535b165b02d",
+			"2435;2436;0;f;f;f;2435;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2436;2437;0;f;f;f;2436;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2436;2437;2;f;f;t;0;22178c9e-915b-4fb5-8750-8a5755a282a4",
+			"2437;2438;0;f;f;f;2437;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2438;2439;0;f;f;f;2438;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2438;2439;2;f;f;t;0;8aa75b91-aa70-47e1-ab45-725321eeae07",
+			"2439;2440;0;f;f;f;2439;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2440;2441;0;f;f;f;2440;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2440;2441;2;f;f;t;0;49b617f7-e025-4f38-8122-ea29de057ac2",
+			"2441;2442;0;f;f;f;2441;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2442;2443;0;f;f;f;2442;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2442;2443;2;f;f;t;0;1cdfc4f6-5a8f-471b-9454-2be9083c2f68",
+			"2443;2444;0;f;f;f;2443;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2444;2445;0;f;f;f;2444;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2444;2445;2;f;f;t;0;d6c16ba6-2442-4e1f-aae6-5d4c88f58fd3",
+			"2445;2446;0;f;f;f;2445;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2446;2447;0;f;f;f;2446;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2446;2447;2;f;f;t;0;2fdf0897-1434-46d1-b9f9-6ac00e8e9e47",
+			"2447;2448;0;f;f;f;2447;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2448;2449;0;f;f;f;2448;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2448;2449;2;f;f;t;0;80d55d4c-ee7a-49c7-a6a6-46aee2b5a94e",
+			"2449;2450;0;f;f;f;2449;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2450;2451;0;f;f;f;2450;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2450;2451;2;f;f;t;0;b3c6e77b-f0e0-41eb-825e-c85e00b29f81",
+			"2451;2452;0;f;f;f;2451;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2452;2453;0;f;f;f;2452;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2452;2453;2;f;f;t;0;7a3c87b2-fa27-4671-ae34-d6c6f08ebc71",
+			"2453;2454;0;f;f;f;2453;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2454;2455;0;f;f;f;2454;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2454;2455;2;f;f;t;0;aa88d251-8f53-4e9c-bf2d-8dd79b5e3dfb",
+			"2455;2456;0;f;f;f;2455;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2456;2457;0;f;f;f;2456;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2456;2457;2;f;f;t;0;0fd49329-c656-4f60-a3e8-f21e668c62ef",
+			"2457;2458;0;f;f;f;2457;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2458;2459;0;f;f;f;2458;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2458;2459;2;f;f;t;0;723d821f-d0db-4acb-8729-ff814f1e68b6",
+			"2459;2460;0;f;f;f;2459;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2460;2461;0;f;f;f;2460;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2460;2461;2;f;f;t;0;a3051e5f-568b-4423-9013-c7440b34c664",
+			"2461;2462;0;f;f;f;2461;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2462;2463;0;f;f;f;2462;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2462;2463;2;f;f;t;0;ed41d499-027a-45d1-9b7c-649c60fbe4c0",
+			"2463;2464;0;f;f;f;2463;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2464;2465;0;f;f;f;2464;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2464;2465;2;f;f;t;0;9af033a6-0de5-4e90-8f9d-67743a4d091d",
+			"2465;2466;0;f;f;f;2465;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2466;2467;0;f;f;f;2466;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2466;2467;2;f;f;t;0;d3df5352-5c74-45b7-8437-4f6c50a8e732",
+			"2467;2468;0;f;f;f;2467;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2468;2469;0;f;f;f;2468;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2468;2469;2;f;f;t;0;a9fe46f8-92d9-47f5-9c10-174ff6bfbc41",
+			"2469;2470;0;f;f;f;2469;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2470;2471;0;f;f;f;2470;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2470;2471;2;f;f;t;0;a5b2ba0a-d608-4908-8319-3a085cc5bf3d",
+			"2471;2472;0;f;f;f;2471;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2472;2473;0;f;f;f;2472;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2472;2473;2;f;f;t;0;923fc3a5-4f6a-4b77-bdfe-1f9bf74d180c",
+			"2473;2474;0;f;f;f;2473;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2474;2475;0;f;f;f;2474;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2474;2475;2;f;f;t;0;6c4184f0-5287-4924-8181-3ce1da7a4bef",
+			"2475;2476;0;f;f;f;2475;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2476;2477;0;f;f;f;2476;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2476;2477;2;f;f;t;0;7c8f812c-daa0-4a29-ae16-173337abb9eb",
+			"2477;2478;0;f;f;f;2477;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2478;2479;0;f;f;f;2478;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2477;2479;2;f;f;t;0;1a1183b3-4014-4ef1-88e4-0864213a9642",
+			"2479;2480;0;f;f;f;2479;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2480;2481;0;f;f;f;2480;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2480;2481;2;f;f;t;0;1f7a06e0-acb0-46bf-b864-ede652c8c890",
+			"2481;2482;0;f;f;f;2481;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2482;2483;0;f;f;f;2482;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2481;2483;2;f;f;t;0;92cfc57d-fa5e-43f2-ba4d-fc4401a0b763",
+			"2483;2484;0;f;f;f;2483;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2484;2485;0;f;f;f;2484;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2484;2485;2;f;f;t;0;fc8ffb54-ce89-4a1f-8552-183c3d1a28cb",
+			"2485;2486;0;f;f;f;2485;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2486;2487;0;f;f;f;2486;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2485;2487;2;f;f;t;0;cef8a5bd-4c34-44d1-b20e-f57ce4824ab2",
+			"2487;2488;0;f;f;f;2487;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2488;2489;0;f;f;f;2488;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2488;2489;2;f;f;t;0;ea333f61-1d3a-4580-bf08-dc3d391008e6",
+			"2489;2490;0;f;f;f;2489;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2490;2491;0;f;f;f;2490;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2489;2491;2;f;f;t;0;964001f6-ddd8-4d94-b8c7-28c780df0ea4",
+			"2491;2492;0;f;f;f;2491;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2492;2493;0;f;f;f;2492;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2492;2493;2;f;f;t;0;78fc2834-5b0b-4a64-ad61-a13a14d5fe85",
+			"2493;2494;0;f;f;f;2493;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2494;2495;0;f;f;f;2494;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2494;2495;2;f;f;t;0;43139dc2-ec99-4953-ac00-01831fe38e98",
+			"2495;2496;0;f;f;f;2495;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2496;2497;0;f;f;f;2496;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2496;2497;2;f;f;t;0;b668a58b-71e8-4b4a-b88a-8cd309c7fe64",
+			"2497;2498;0;f;f;f;2497;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2498;2499;0;f;f;f;2498;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2498;2499;2;f;f;t;0;9ba921b6-c513-42e2-8b88-82aa5be4a4be",
+			"2499;2500;0;f;f;f;2499;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2500;2501;0;f;f;f;2500;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2501;2502;0;f;f;f;2501;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2500;2502;2;f;f;t;0;433bf8d1-68fa-482d-b8d2-61d730897159",
+			"2501;2502;2;f;f;t;0;3779233a-89f9-4770-a9f5-40f419e77bcb",
+			"2502;2503;0;f;f;f;2502;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2503;2504;0;f;f;f;2503;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2504;2505;0;f;f;f;2504;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2504;2505;2;f;f;t;0;1b2616dc-0c79-4e23-b96e-f01f53c20110",
+			"2505;2506;0;f;f;f;2505;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2506;2507;0;f;f;f;2506;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2505;2507;2;f;f;t;0;f240b34d-9c9e-4885-b45f-de0afe60f252",
+			"2507;2508;0;f;f;f;2507;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2508;2509;0;f;f;f;2508;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2508;2509;2;f;f;t;0;59cda61f-1f97-4f53-847a-707f1929fad0",
+			"2509;2510;0;f;f;f;2509;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2510;2511;0;f;f;f;2510;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2509;2511;2;f;f;t;0;1d3a4422-3cb0-436f-b567-11492fa651f1",
+			"2511;2512;0;f;f;f;2511;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2512;2513;0;f;f;f;2512;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2512;2513;2;f;f;t;0;4e00dd8f-1e7a-40b6-85d2-bb93a63dff2a",
+			"2513;2514;0;f;f;f;2513;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2514;2515;0;f;f;f;2514;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2514;2515;2;f;f;t;0;c911063c-6f55-4338-9446-90d4463b734f",
+			"2515;2516;0;f;f;f;2515;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2516;2517;0;f;f;f;2516;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2516;2517;2;f;f;t;0;731aadfc-601f-4e06-a74c-0f5a4b854b82",
+			"2517;2518;0;f;f;f;2517;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2518;2519;0;f;f;f;2518;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2517;2519;2;f;f;t;0;4edc9f56-75eb-40a2-a741-af04d157640e",
+			"2519;2520;0;f;f;f;2519;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2520;2521;0;f;f;f;2520;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2520;2521;2;f;f;t;0;494814f7-e032-4316-8c5d-25300c44ffe3",
+			"2521;2522;0;f;f;f;2521;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2522;2523;0;f;f;f;2522;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2521;2523;2;f;f;t;0;c8c25a98-c3a1-4922-9609-9038fff8d0cd",
+			"2523;2524;0;f;f;f;2523;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2524;2525;0;f;f;f;2524;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2524;2525;2;f;f;t;0;c5d82de6-2cf5-431e-aca6-9d6cf46ae3fa",
+			"2525;2526;0;f;f;f;2525;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2526;2527;0;f;f;f;2526;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2525;2527;2;f;f;t;0;db9746c2-a93b-4c5a-8366-45b593d01cbc",
+			"2527;2528;0;f;f;f;2527;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2528;2529;0;f;f;f;2528;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2528;2529;2;f;f;t;0;a5a32be4-b439-40e4-a0c2-cbc916190372",
+			"2529;2530;0;f;f;f;2529;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2530;2531;0;f;f;f;2530;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2529;2531;2;f;f;t;0;a8a01e93-4a8e-4425-acfe-855cf76a547d",
+			"2531;2532;0;f;f;f;2531;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2532;2533;0;f;f;f;2532;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2532;2533;2;f;f;t;0;bebf1671-b3ab-4130-946d-9e67d404d6a0",
+			"2533;2534;0;f;f;f;2533;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2534;2535;0;f;f;f;2534;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2533;2535;2;f;f;t;0;8e59f4b1-c41d-454e-8925-07dfd1c9eef9",
+			"2535;2536;0;f;f;f;2535;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2536;2537;0;f;f;f;2536;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2537;2538;0;f;f;f;2537;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2536;2538;2;f;f;t;0;548b1343-9331-4681-be3d-5f466e8ad42b",
+			"2537;2538;2;f;f;t;0;cc9ed685-54f5-4cd7-9b3a-8fb590198460",
+			"2538;2539;0;f;f;f;2538;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2539;2540;0;f;f;f;2539;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2540;2541;0;f;f;f;2540;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2540;2541;2;f;f;t;0;8b1109c3-85b2-4242-a8e9-268c5ddda0b1",
+			"2541;2542;0;f;f;f;2541;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2542;2543;0;f;f;f;2542;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2542;2543;2;f;f;t;0;995b5bb9-fe1d-4c67-84c8-d7cda73d9f32",
+			"2543;2544;0;f;f;f;2543;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2544;2545;0;f;f;f;2544;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2544;2545;2;f;f;t;0;c7538c2d-12f0-4d0c-a580-546f46b3278d",
+			"2545;2546;0;f;f;f;2545;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2546;2547;0;f;f;f;2546;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2546;2547;2;f;f;t;0;2d08ecea-f13f-4638-ae96-d8e6001ad584",
+			"2547;2548;0;f;f;f;2547;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2548;2549;0;f;f;f;2548;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2548;2549;2;f;f;t;0;2a3eecb8-9ab9-4ef5-a24c-58b4bed7d348",
+			"2549;2550;0;f;f;f;2549;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2550;2551;0;f;f;f;2550;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2550;2551;2;f;f;t;0;bddcd5f6-8105-49ff-b9f8-dce0692cddab",
+			"2551;2552;0;f;f;f;2551;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2552;2553;0;f;f;f;2552;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2551;2553;2;f;f;t;0;290f4355-5d3c-4c84-9213-9b2b642e04ff",
+			"2553;2554;0;f;f;f;2553;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2554;2555;0;f;f;f;2554;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2554;2555;2;f;f;t;0;710daf87-396b-45a3-8310-1e153ada607e",
+			"2555;2556;0;f;f;f;2555;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2556;2557;0;f;f;f;2556;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2556;2557;2;f;f;t;0;039df684-0523-442f-a6f2-e2e5fca77e1a",
+			"2557;2558;0;f;f;f;2557;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2558;2559;0;f;f;f;2558;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2559;2560;0;f;f;f;2559;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2558;2560;2;f;f;t;0;214c01b6-d9cb-494e-959b-9facca998ec2",
+			"2559;2560;2;f;f;t;0;32b0ce94-6f66-4d6d-b263-e0001746faef",
+			"2560;2561;0;f;f;f;2560;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2561;2562;0;f;f;f;2561;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2562;2563;0;f;f;f;2562;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2562;2563;2;f;f;t;0;67102c4f-3b90-412f-a9c8-c75b13cbbc61",
+			"2563;2564;0;f;f;f;2563;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2564;2565;0;f;f;f;2564;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2564;2565;2;f;f;t;0;12f186a8-f699-4f94-bb4c-adbbe7969962",
+			"2565;2566;0;f;f;f;2565;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2566;2567;0;f;f;f;2566;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2566;2567;2;f;f;t;0;fca8d6cf-b809-4dce-a0f6-16796e613b71",
+			"2567;2568;0;f;f;f;2567;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2568;2569;0;f;f;f;2568;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2568;2569;2;f;f;t;0;1266a91b-ca7f-49b1-8784-b05cdb5a8463",
+			"2569;2570;0;f;f;f;2569;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2570;2571;0;f;f;f;2570;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2570;2571;2;f;f;t;0;f36f977b-9779-4f1b-b0b9-d2f0adaeae9e",
+			"2571;2572;0;f;f;f;2571;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2572;2573;0;f;f;f;2572;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2572;2573;2;f;f;t;0;86d1bc0b-7ff7-457f-8427-f4dc52a2efb1",
+			"2573;2574;0;f;f;f;2573;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2574;2575;0;f;f;f;2574;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2574;2575;2;f;f;t;0;7a7ad1d4-316f-485f-aa25-6ee4647d9b58",
+			"2575;2576;0;f;f;f;2575;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2576;2577;0;f;f;f;2576;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2576;2577;2;f;f;t;0;72c057a3-7664-413f-ae7f-56a82ddffa91",
+			"2577;2578;0;f;f;f;2577;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2578;2579;0;f;f;f;2578;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2578;2579;2;f;f;t;0;e4448702-345d-43ad-beb6-60a7bda350f0",
+			"2579;2580;0;f;f;f;2579;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2580;2581;0;f;f;f;2580;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2580;2581;2;f;f;t;0;bae62070-58b0-497e-aba6-67e678325773",
+			"2581;2582;0;f;f;f;2581;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2582;2583;0;f;f;f;2582;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2582;2583;2;f;f;t;0;20781dde-ed9f-4ece-8662-4efbd4283a29",
+			"2583;2584;0;f;f;f;2583;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2584;2585;0;f;f;f;2584;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2584;2585;2;f;f;t;0;e1666454-17d1-4db6-a608-f979de2062a6",
+			"2585;2586;0;f;f;f;2585;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2586;2587;0;f;f;f;2586;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2586;2587;2;f;f;t;0;10672fd2-fb25-46e4-9e26-848281ef0321",
+			"2587;2588;0;f;f;f;2587;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2588;2589;0;f;f;f;2588;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2588;2589;2;f;f;t;0;71dac638-7a04-40f4-b974-1d615826daae",
+			"2589;2590;0;f;f;f;2589;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2590;2591;0;f;f;f;2590;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2590;2591;2;f;f;t;0;0096ed05-4bbf-4b75-b879-4f0ceacb3ee2",
+			"2591;2592;0;f;f;f;2591;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2592;2593;0;f;f;f;2592;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2592;2593;2;f;f;t;0;8e7bdbe3-c78b-49eb-8d16-ed9ce8a8b8d6",
+			"2593;2594;0;f;f;f;2593;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2594;2595;0;f;f;f;2594;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2594;2595;2;f;f;t;0;e93e352d-ceb3-4c16-ad23-c35c948e3724",
+			"2595;2596;0;f;f;f;2595;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2596;2597;0;f;f;f;2596;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2596;2597;2;f;f;t;0;901fbe51-45f4-4411-83e5-590f3031e8ac",
+			"2597;2598;0;f;f;f;2597;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2598;2599;0;f;f;f;2598;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2598;2599;2;f;f;t;0;2f2522d5-5079-408b-b810-430b3be49c3b",
+			"2599;2600;0;f;f;f;2599;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2600;2601;0;f;f;f;2600;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2600;2601;2;f;f;t;0;4b332cd3-d90d-4391-909b-175863d101a8",
+			"2601;2602;0;f;f;f;2601;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2602;2603;0;f;f;f;2602;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2602;2603;2;f;f;t;0;a6bcd5ba-15c7-4a5e-b59f-e20ea1f1ba90",
+			"2603;2604;0;f;f;f;2603;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2604;2605;0;f;f;f;2604;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2604;2605;2;f;f;t;0;81789b19-82af-431c-ae8e-f8121cd5f741",
+			"2605;2606;0;f;f;f;2605;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2606;2607;0;f;f;f;2606;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2606;2607;2;f;f;t;0;3fd11330-c098-41dd-b8e9-ac0f7467060d",
+			"2607;2608;0;f;f;f;2607;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2608;2609;0;f;f;f;2608;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2608;2609;2;f;f;t;0;9ce2cb5e-82c3-4c45-bd00-1ef1905fbddb",
+			"2609;2610;0;f;f;f;2609;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2610;2611;0;f;f;f;2610;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2609;2611;2;f;f;t;0;a6f9b560-d722-4b6c-8b4d-946f98814e5f",
+			"2611;2612;0;f;f;f;2611;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2612;2613;0;f;f;f;2612;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2612;2613;2;f;f;t;0;7f369f32-a86f-4c79-a4a6-c3b03eece929",
+			"2613;2614;0;f;f;f;2613;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2614;2615;0;f;f;f;2614;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2613;2615;2;f;f;t;0;fda9d5fb-481a-475b-9de0-87aabb9ea406",
+			"2615;2616;0;f;f;f;2615;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2616;2617;0;f;f;f;2616;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2617;2618;0;f;f;f;2617;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2616;2618;2;f;f;t;0;67a769a1-833d-47f6-9de4-1f7da7ee8f9e",
+			"2617;2618;2;f;f;t;0;8aebb5a9-d7be-4d55-be74-640d95111b9b",
+			"2618;2619;0;f;f;f;2618;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2619;2620;0;f;f;f;2619;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2620;2621;0;f;f;f;2620;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2620;2621;2;f;f;t;0;9ab7bb08-b73a-4a2f-93b3-f8ea23e289d9",
+			"2621;2622;0;f;f;f;2621;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2622;2623;0;f;f;f;2622;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2622;2623;2;f;f;t;0;bc9c641a-84ec-4715-9245-40b6e220c1c7",
+			"2623;2624;0;f;f;f;2623;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2624;2625;0;f;f;f;2624;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2624;2625;2;f;f;t;0;45a608dc-90a0-4755-90c9-bd29a2e49768",
+			"2625;2626;0;f;f;f;2625;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2626;2627;0;f;f;f;2626;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2625;2627;2;f;f;t;0;a0c511a9-ccfe-4e66-adff-bef6c78c3a8d",
+			"2627;2628;0;f;f;f;2627;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2628;2629;0;f;f;f;2628;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2628;2629;2;f;f;t;0;b740628f-1748-474f-911d-557f60d8965f",
+			"2629;2630;0;f;f;f;2629;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2630;2631;0;f;f;f;2630;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2629;2631;2;f;f;t;0;019063ab-d4fb-4ab8-8cb6-bb46de5908d6",
+			"2631;2632;0;f;f;f;2631;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2632;2633;0;f;f;f;2632;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2632;2633;2;f;f;t;0;c0d7af11-ea89-45a9-9975-ce7fe47716f9",
+			"2633;2634;0;f;f;f;2633;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2634;2635;0;f;f;f;2634;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2634;2635;2;f;f;t;0;f932bee1-80f2-4d04-833b-680c464e6244",
+			"2635;2636;0;f;f;f;2635;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2636;2637;0;f;f;f;2636;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2636;2637;2;f;f;t;0;11bbc661-1bd3-4c41-b7bb-d69609dd251b",
+			"2637;2638;0;f;f;f;2637;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2638;2639;0;f;f;f;2638;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2638;2639;2;f;f;t;0;83605b52-0b0d-4635-9f89-75d666a3d37f",
+			"2639;2640;0;f;f;f;2639;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2640;2641;0;f;f;f;2640;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2641;2642;0;f;f;f;2641;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2640;2642;2;f;f;t;0;7e413b63-bffc-4d87-b84f-87331a145c04",
+			"2641;2642;2;f;f;t;0;1c580751-6ca0-4f2b-a775-2199375e1749",
+			"2642;2643;0;f;f;f;2642;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2643;2644;0;f;f;f;2643;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2644;2645;0;f;f;f;2644;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2644;2645;2;f;f;t;0;ce10bf2e-4e20-4762-ac9f-1402acbde35d",
+			"2645;2646;0;f;f;f;2645;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2646;2647;0;f;f;f;2646;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2646;2647;2;f;f;t;0;3f0996b6-e2ca-45ec-b040-b3e11031976e",
+			"2647;2648;0;f;f;f;2647;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2648;2649;0;f;f;f;2648;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2648;2649;2;f;f;t;0;1f2701d5-ab61-416e-bbcc-490b6353130c",
+			"2649;2650;0;f;f;f;2649;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2650;2651;0;f;f;f;2650;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2649;2651;2;f;f;t;0;c222b06c-c5eb-4547-8112-c130771c9df1",
+			"2651;2652;0;f;f;f;2651;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2652;2653;0;f;f;f;2652;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2652;2653;2;f;f;t;0;4a95966e-3d6c-4a14-a104-0b65a0eaab61",
+			"2653;2654;0;f;f;f;2653;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2654;2655;0;f;f;f;2654;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2653;2655;2;f;f;t;0;fb23ae88-fe11-45a4-b0f2-ebddc8b06e3b",
+			"2655;2656;0;f;f;f;2655;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2656;2657;0;f;f;f;2656;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2656;2657;2;f;f;t;0;194bb161-e7f4-4916-8876-922d4ba8f7b4",
+			"2657;2658;0;f;f;f;2657;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2658;2659;0;f;f;f;2658;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2658;2659;2;f;f;t;0;4947956d-d421-40e4-adc5-eb42ab8f9357",
+			"2659;2660;0;f;f;f;2659;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2660;2661;0;f;f;f;2660;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2660;2661;2;f;f;t;0;57320816-86eb-4673-bc28-6f9fa2aea262",
+			"2661;2662;0;f;f;f;2661;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2662;2663;0;f;f;f;2662;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2662;2663;2;f;f;t;0;2a69c254-8ffd-4c44-9e07-5b10698fc5aa",
+			"2663;2664;0;f;f;f;2663;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2664;2665;0;f;f;f;2664;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2664;2665;2;f;f;t;0;cb0f53cd-76c4-4f9f-b422-627bbd0ac3fd",
+			"2665;2666;0;f;f;f;2665;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2666;2667;0;f;f;f;2666;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2666;2667;2;f;f;t;0;353a4a12-c9e3-4a3f-b4a0-cea68c3aaee2",
+			"2667;2668;0;f;f;f;2667;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2668;2669;0;f;f;f;2668;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2668;2669;2;f;f;t;0;c74c8e31-8593-480a-9c76-4dbc2a2d6b0c",
+			"2669;2670;0;f;f;f;2669;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2670;2671;0;f;f;f;2670;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2670;2671;2;f;f;t;0;0fd7d6e6-581a-4826-895b-50c78f20733b",
+			"2671;2672;0;f;f;f;2671;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2672;2673;0;f;f;f;2672;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2672;2673;2;f;f;t;0;99c499fa-43b3-458e-990c-7397b404718a",
+			"2673;2674;0;f;f;f;2673;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2674;2675;0;f;f;f;2674;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2674;2675;2;f;f;t;0;8f5a476a-20c6-41a3-b8d9-c5f6ee1f1fe7",
+			"2675;2676;0;f;f;f;2675;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2676;2677;0;f;f;f;2676;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2676;2677;2;f;f;t;0;850265b7-c3b3-4a53-909f-efb2fc26096e",
+			"2677;2678;0;f;f;f;2677;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2678;2679;0;f;f;f;2678;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2678;2679;2;f;f;t;0;22fa1358-48d8-42cd-a031-cb9570cb238f",
+			"2679;2680;0;f;f;f;2679;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2680;2681;0;f;f;f;2680;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2680;2681;2;f;f;t;0;b34e2f1e-1cab-41be-b20a-f414616cbe02",
+			"2681;2682;0;f;f;f;2681;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2682;2683;0;f;f;f;2682;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2682;2683;2;f;f;t;0;6286181c-c25e-4d82-891f-c06329b73f0c",
+			"2683;2684;0;f;f;f;2683;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2684;2685;0;f;f;f;2684;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2684;2685;2;f;f;t;0;b6a2834b-522b-4858-aa5d-de426055637e",
+			"2685;2686;0;f;f;f;2685;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2686;2687;0;f;f;f;2686;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2686;2687;2;f;f;t;0;a3df661e-241a-49fc-839f-0d267f8a1de4",
+			"2687;2688;0;f;f;f;2687;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2688;2689;0;f;f;f;2688;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2688;2689;2;f;f;t;0;33770425-358f-40a1-b5c3-b61b2016e20c",
+			"2689;2690;0;f;f;f;2689;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2690;2691;0;f;f;f;2690;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2690;2691;2;f;f;t;0;da265381-0c63-4006-8c0d-06bc96ae95eb",
+			"2691;2692;0;f;f;f;2691;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2692;2693;0;f;f;f;2692;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2692;2693;2;f;f;t;0;6264c359-6883-4b2b-84ab-b69bcaa66733",
+			"2693;2694;0;f;f;f;2693;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2694;2695;0;f;f;f;2694;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2694;2695;2;f;f;t;0;792fb6c9-9103-4fe5-92a5-f55c3650ea4a",
+			"2695;2696;0;f;f;f;2695;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2696;2697;0;f;f;f;2696;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2696;2697;2;f;f;t;0;4ea24258-3906-407d-ba9f-b7fa537921af",
+			"2697;2698;0;f;f;f;2697;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2698;2699;0;f;f;f;2698;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2698;2699;2;f;f;t;0;2cc7ec4e-188d-4263-b3aa-5f7d6582a20d",
+			"2699;2700;0;f;f;f;2699;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2700;2701;0;f;f;f;2700;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2700;2701;2;f;f;t;0;689725d9-8fa0-4c65-a0f0-25920f434ea7",
+			"2701;2702;0;f;f;f;2701;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2702;2703;0;f;f;f;2702;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2702;2703;2;f;f;t;0;4bc2ae36-c56a-42db-8cf3-f462b09a64af",
+			"2703;2704;0;f;f;f;2703;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2704;2705;0;f;f;f;2704;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2704;2705;2;f;f;t;0;9c5ddbca-2eea-4831-826c-16d53ad654d5",
+			"2705;2706;0;f;f;f;2705;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2706;2707;0;f;f;f;2706;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2706;2707;2;f;f;t;0;19f18136-1431-44de-91ef-e0a0f44b9284",
+			"2707;2708;0;f;f;f;2707;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2708;2709;0;f;f;f;2708;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2708;2709;2;f;f;t;0;af90efdd-d574-4871-bacb-85937977d888",
+			"2709;2710;0;f;f;f;2709;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2710;2711;0;f;f;f;2710;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2710;2711;2;f;f;t;0;ae4a77ae-07b0-4770-bcde-f8e0c285dcaa",
+			"2711;2712;0;f;f;f;2711;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2712;2713;0;f;f;f;2712;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2712;2713;2;f;f;t;0;eef0df07-f23f-4519-bb56-0820b0bb2fa9",
+			"2713;2714;0;f;f;f;2713;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2714;2715;0;f;f;f;2714;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2714;2715;2;f;f;t;0;f62402c8-a196-4ac5-9514-567ed102f9e4",
+			"2715;2716;0;f;f;f;2715;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2716;2717;0;f;f;f;2716;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2716;2717;2;f;f;t;0;00939f1e-a5cb-4e4f-9dd8-cf6a686331fd",
+			"2717;2718;0;f;f;f;2717;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2718;2719;0;f;f;f;2718;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2718;2719;2;f;f;t;0;1111f3de-1bea-4863-adfd-84b3a1d2eb66",
+			"2719;2720;0;f;f;f;2719;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2720;2721;0;f;f;f;2720;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2720;2721;2;f;f;t;0;92363c86-1fdd-45af-ad6f-4147a3c5a560",
+			"2721;2722;0;f;f;f;2721;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2722;2723;0;f;f;f;2722;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2722;2723;2;f;f;t;0;070fcc24-c35b-4c3f-a45b-ea76df160e3a",
+			"2723;2724;0;f;f;f;2723;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2724;2725;0;f;f;f;2724;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2724;2725;2;f;f;t;0;ec1c6e06-3dd3-48e1-be4a-f4ece59999d7",
+			"2725;2726;0;f;f;f;2725;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2726;2727;0;f;f;f;2726;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2726;2727;2;f;f;t;0;40c841cb-4ed0-41ab-93a3-be9f4db6f3b9",
+			"2727;2728;0;f;f;f;2727;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2728;2729;0;f;f;f;2728;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2728;2729;2;f;f;t;0;6c982b08-87cd-4991-a71f-37d9d513d739",
+			"2729;2730;0;f;f;f;2729;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2730;2731;0;f;f;f;2730;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2730;2731;2;f;f;t;0;6eac7b13-9dbe-4a47-8a25-0ff18a9ffd3a",
+			"2731;2732;0;f;f;f;2731;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2732;2733;0;f;f;f;2732;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2732;2733;2;f;f;t;0;0892d4c3-af5d-42f9-93bf-a7c19105db1e",
+			"2733;2734;0;f;f;f;2733;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2734;2735;0;f;f;f;2734;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2734;2735;2;f;f;t;0;068ac978-1ea4-4723-93c6-0f2ca256c0a5",
+			"2735;2736;0;f;f;f;2735;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2736;2737;0;f;f;f;2736;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2736;2737;2;f;f;t;0;422e45c8-44b6-486c-8171-4d5add237775",
+			"2737;2738;0;f;f;f;2737;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2738;2739;0;f;f;f;2738;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2738;2739;2;f;f;t;0;ace25896-a073-4e49-a4d9-7b69a669c8ae",
+			"2739;2740;0;f;f;f;2739;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2740;2741;0;f;f;f;2740;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2740;2741;2;f;f;t;0;8869d088-b76b-454d-a9c7-454c57e6e375",
+			"2741;2742;0;f;f;f;2741;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2742;2743;0;f;f;f;2742;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2742;2743;2;f;f;t;0;b25ec793-63dc-43c7-8473-7c9ed07678f6",
+			"2743;2744;0;f;f;f;2743;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2744;2745;0;f;f;f;2744;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2744;2745;2;f;f;t;0;b24ea336-e812-4df6-9159-5158d74e2031",
+			"2745;2746;0;f;f;f;2745;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2746;2747;0;f;f;f;2746;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2746;2747;2;f;f;t;0;4037b86f-13c6-4b8d-9e3f-3b06ac4fc963",
+			"2747;2748;0;f;f;f;2747;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2748;2749;0;f;f;f;2748;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2748;2749;2;f;f;t;0;a74f40a0-d4b0-41a5-8271-7cb5ceb3e62a",
+			"2749;2750;0;f;f;f;2749;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2750;2751;0;f;f;f;2750;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2750;2751;2;f;f;t;0;2403cafe-6c27-4a4a-a2d9-4779607e6363",
+			"2751;2752;0;f;f;f;2751;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2752;2753;0;f;f;f;2752;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2752;2753;2;f;f;t;0;ac39c779-9bd8-42c5-a89d-165662343051",
+			"2753;2754;0;f;f;f;2753;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2754;2755;0;f;f;f;2754;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2754;2755;2;f;f;t;0;0ba0ad45-b4e8-417c-91f8-1987ec0c428a",
+			"2755;2756;0;f;f;f;2755;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2756;2757;0;f;f;f;2756;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2756;2757;2;f;f;t;0;a3fea3b1-eb24-496b-b349-3d38017b52f7",
+			"2757;2758;0;f;f;f;2757;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2758;2759;0;f;f;f;2758;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2758;2759;2;f;f;t;0;304458a9-dbc7-41c6-985c-5efb66d79183",
+			"2759;2760;0;f;f;f;2759;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2760;2761;0;f;f;f;2760;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2760;2761;2;f;f;t;0;09a46007-1543-4741-8397-ff1e489ff646",
+			"2761;2762;0;f;f;f;2761;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2762;2763;0;f;f;f;2762;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2762;2763;2;f;f;t;0;99258ff0-bb4a-4d6f-ac1f-933a40e14a1d",
+			"2763;2764;0;f;f;f;2763;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2764;2765;0;f;f;f;2764;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2765;2766;0;f;f;f;2765;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2764;2766;2;f;f;t;0;5fcc9158-c6c8-4abb-9ef5-e1121f8f033b",
+			"2765;2766;2;f;f;t;0;d588a4be-27e5-4121-b853-a791486f8d48",
+			"2766;2767;0;f;f;f;2766;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2767;2768;0;f;f;f;2767;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2768;2769;0;f;f;f;2768;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2769;2770;0;f;f;f;2769;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2768;2770;2;f;f;t;0;fe737f38-2d40-4df6-8fcb-0836ec3dcaec",
+			"2769;2770;2;f;f;t;0;82c300f7-527b-45fc-a85b-1569e2975b0d",
+			"2770;2771;0;f;f;f;2770;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2771;2772;0;f;f;f;2771;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2772;2773;0;f;f;f;2772;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2772;2773;2;f;f;t;0;d310dfd0-a058-4edd-9c35-08572146a950",
+			"2773;2774;0;f;f;f;2773;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2774;2775;0;f;f;f;2774;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2773;2775;2;f;f;t;0;38a36fa2-faaf-4c3b-9271-4873a7609280",
+			"2775;2776;0;f;f;f;2775;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2776;2777;0;f;f;f;2776;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2777;2778;0;f;f;f;2777;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2776;2778;2;f;f;t;0;10743c8d-d9da-4a38-84b5-4c35f88694b4",
+			"2777;2778;2;f;f;t;0;eec5dfea-a725-451b-b8a0-d445e39cea20",
+			"2778;2779;0;f;f;f;2778;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2779;2780;0;f;f;f;2779;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2780;2781;0;f;f;f;2780;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2780;2781;2;f;f;t;0;a550693d-4492-427f-832f-b076879e328c",
+			"2781;2782;0;f;f;f;2781;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2782;2783;0;f;f;f;2782;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2781;2783;2;f;f;t;0;fa52b001-22f1-4f39-9461-8b2e32dbf948",
+			"2783;2784;0;f;f;f;2783;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2784;2785;0;f;f;f;2784;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2784;2785;2;f;f;t;0;cd342cfb-47fc-404e-a9be-8a46a372db0d",
+			"2785;2786;0;f;f;f;2785;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2786;2787;0;f;f;f;2786;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2786;2787;2;f;f;t;0;f174ec39-7a65-4dbb-9985-721b1b8dcc84",
+			"2787;2788;0;f;f;f;2787;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2788;2789;0;f;f;f;2788;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2788;2789;2;f;f;t;0;3e91f9a3-cd79-4203-91cf-306eb8dada36",
+			"2789;2790;0;f;f;f;2789;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2790;2791;0;f;f;f;2790;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2790;2791;2;f;f;t;0;325119ba-9007-4b61-904f-aab82441707f",
+			"2791;2792;0;f;f;f;2791;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2792;2793;0;f;f;f;2792;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2792;2793;2;f;f;t;0;fd1f98d7-dae4-4758-9c15-d981092369d7",
+			"2793;2794;0;f;f;f;2793;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2794;2795;0;f;f;f;2794;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2794;2795;2;f;f;t;0;391acb2f-3c55-4e3a-8d54-cd9a133af6d3",
+			"2795;2796;0;f;f;f;2795;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2796;2797;0;f;f;f;2796;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2796;2797;2;f;f;t;0;e0fef7eb-5a39-4748-92a0-86afac445006",
+			"2797;2798;0;f;f;f;2797;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2798;2799;0;f;f;f;2798;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2798;2799;2;f;f;t;0;57e4d611-4163-4c20-9a61-1b8134aa7e2a",
+			"2799;2800;0;f;f;f;2799;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2800;2801;0;f;f;f;2800;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2800;2801;2;f;f;t;0;80050438-efca-4069-b040-687e850ccb82",
+			"2801;2802;0;f;f;f;2801;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2802;2803;0;f;f;f;2802;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2802;2803;2;f;f;t;0;27ed1bc1-5f8c-44f2-8d68-812699f6a82f",
+			"2803;2804;0;f;f;f;2803;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2804;2805;0;f;f;f;2804;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2804;2805;2;f;f;t;0;fe87e479-5c18-4d0e-8229-d96068f4d807",
+			"2805;2806;0;f;f;f;2805;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2806;2807;0;f;f;f;2806;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2806;2807;2;f;f;t;0;f2cba162-f44e-4be9-b021-c75066db841f",
+			"2807;2808;0;f;f;f;2807;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2808;2809;0;f;f;f;2808;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2808;2809;2;f;f;t;0;fbda37ff-58ae-4870-aacc-fce68d3e4e92",
+			"2809;2810;0;f;f;f;2809;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2810;2811;0;f;f;f;2810;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2810;2811;2;f;f;t;0;e7b04733-ba37-461b-b046-0eb306db679f",
+			"2811;2812;0;f;f;f;2811;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2812;2813;0;f;f;f;2812;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2812;2813;2;f;f;t;0;7c2f6f75-2d51-4b33-9719-9bd5d1f1c393",
+			"2813;2814;0;f;f;f;2813;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2814;2815;0;f;f;f;2814;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2814;2815;2;f;f;t;0;00e535b4-102c-47e3-81e0-429b978f352e",
+			"2815;2816;0;f;f;f;2815;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2816;2817;0;f;f;f;2816;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2816;2817;2;f;f;t;0;c4426513-e768-4655-8f37-1b786288be69",
+			"2817;2818;0;f;f;f;2817;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2818;2819;0;f;f;f;2818;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2818;2819;2;f;f;t;0;23040961-58ee-4ab9-812c-3f758edd56c6",
+			"2819;2820;0;f;f;f;2819;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2820;2821;0;f;f;f;2820;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2820;2821;2;f;f;t;0;1fb94c68-c619-4a95-8aaf-667867da3974",
+			"2821;2822;0;f;f;f;2821;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2822;2823;0;f;f;f;2822;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2822;2823;2;f;f;t;0;964123a4-56e2-4ca3-9e81-08db3cf91e76",
+			"2823;2824;0;f;f;f;2823;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2824;2825;0;f;f;f;2824;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2824;2825;2;f;f;t;0;84425026-9ff0-45ba-974a-8765522bc759",
+			"2825;2826;0;f;f;f;2825;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2826;2827;0;f;f;f;2826;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2826;2827;2;f;f;t;0;a8238007-0ba3-40a5-ac81-0020fbc2e8e7",
+			"2827;2828;0;f;f;f;2827;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2828;2829;0;f;f;f;2828;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2828;2829;2;f;f;t;0;cfca7aec-3f36-4148-bf8b-158874eb68f3",
+			"2829;2830;0;f;f;f;2829;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2830;2831;0;f;f;f;2830;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2830;2831;2;f;f;t;0;2b8e54f7-be92-4a2a-927c-8e3a37eca17e",
+			"2831;2832;0;f;f;f;2831;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2832;2833;0;f;f;f;2832;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2832;2833;2;f;f;t;0;54813edd-f31a-493b-bc7a-d8dd82d2e4ff",
+			"2833;2834;0;f;f;f;2833;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2834;2835;0;f;f;f;2834;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2834;2835;2;f;f;t;0;41bf1466-10d4-4712-bae9-ca483aa45414",
+			"2835;2836;0;f;f;f;2835;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2836;2837;0;f;f;f;2836;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2836;2837;2;f;f;t;0;d1e1adeb-e23a-4c5b-86ee-5b6aca4de16e",
+			"2837;2838;0;f;f;f;2837;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2838;2839;0;f;f;f;2838;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2837;2839;2;f;f;t;0;15a41702-5d2f-410b-91ce-6b187d0e0087",
+			"2839;2840;0;f;f;f;2839;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2840;2841;0;f;f;f;2840;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2840;2841;2;f;f;t;0;aad981a3-7b27-4813-9b33-8f0c9d977644",
+			"2841;2842;0;f;f;f;2841;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2842;2843;0;f;f;f;2842;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2841;2843;2;f;f;t;0;d406ef74-cd1a-46ab-9181-678e0bce941d",
+			"2843;2844;0;f;f;f;2843;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2844;2845;0;f;f;f;2844;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2844;2845;2;f;f;t;0;5e743fce-21b7-46bb-b509-59fd5a8483ea",
+			"2845;2846;0;f;f;f;2845;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2846;2847;0;f;f;f;2846;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2845;2847;2;f;f;t;0;a00433f2-2928-441d-8bae-f424e48fddf0",
+			"2847;2848;0;f;f;f;2847;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2848;2849;0;f;f;f;2848;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2848;2849;2;f;f;t;0;3947f33b-f0a6-48d5-93c2-ed991ad306eb",
+			"2849;2850;0;f;f;f;2849;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2850;2851;0;f;f;f;2850;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2849;2851;2;f;f;t;0;9a24de30-2400-4b8a-b5eb-865e2c840514",
+			"2851;2852;0;f;f;f;2851;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2852;2853;0;f;f;f;2852;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2852;2853;2;f;f;t;0;d9c622e5-6503-4241-9c3d-80bb51a85e9a",
+			"2853;2854;0;f;f;f;2853;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2854;2855;0;f;f;f;2854;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2853;2855;2;f;f;t;0;05619386-6070-4014-9eae-0a863926b091",
+			"2855;2856;0;f;f;f;2855;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2856;2857;0;f;f;f;2856;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2856;2857;2;f;f;t;0;0f71544b-0387-4c49-9c18-4e0189ae328f",
+			"2857;2858;0;f;f;f;2857;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2858;2859;0;f;f;f;2858;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2857;2859;2;f;f;t;0;8cf72c4b-1b0e-4509-b0a2-db78c05abb01",
+			"2859;2860;0;f;f;f;2859;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2860;2861;0;f;f;f;2860;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2861;2862;0;f;f;f;2861;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2860;2862;2;f;f;t;0;4e11b16c-85c8-47d7-bd2c-8881d9e7a05e",
+			"2861;2862;2;f;f;t;0;fef6a615-953b-44bf-944e-280ee6ffe87a",
+			"2862;2863;0;f;f;f;2862;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2863;2864;0;f;f;f;2863;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2864;2865;0;f;f;f;2864;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2864;2865;2;f;f;t;0;8ae02ed2-1747-434a-8c86-d172a5c51e81",
+			"2865;2866;0;f;f;f;2865;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2866;2867;0;f;f;f;2866;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2866;2867;2;f;f;t;0;62ba571c-28b1-44f4-bc2e-dada34b71a4b",
+			"2867;2868;0;f;f;f;2867;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2868;2869;0;f;f;f;2868;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2868;2869;2;f;f;t;0;1bd890f2-5cd5-404c-84c1-602cfb51f869",
+			"2869;2870;0;f;f;f;2869;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2870;2871;0;f;f;f;2870;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2870;2871;2;f;f;t;0;bd43d9c9-6d17-470d-bc2e-d6f6e2b4065e",
+			"2871;2872;0;f;f;f;2871;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2872;2873;0;f;f;f;2872;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2872;2873;2;f;f;t;0;88f9d848-b53f-4423-8c66-2975540ae9b4",
+			"2873;2874;0;f;f;f;2873;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2874;2875;0;f;f;f;2874;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2874;2875;2;f;f;t;0;37f9263b-3ca0-4128-aca4-06e9b50eb5ac",
+			"2875;2876;0;f;f;f;2875;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2876;2877;0;f;f;f;2876;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2876;2877;2;f;f;t;0;e96311d8-c5c8-4d39-abd1-6d7e2134ad54",
+			"2877;2878;0;f;f;f;2877;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2878;2879;0;f;f;f;2878;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2878;2879;2;f;f;t;0;0e71db75-1b8e-4459-bb4b-fbe953a935e5",
+			"2879;2880;0;f;f;f;2879;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2880;2881;0;f;f;f;2880;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2880;2881;2;f;f;t;0;10b4308f-b946-498d-a62b-4b43e5e83a6b",
+			"2881;2882;0;f;f;f;2881;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2882;2883;0;f;f;f;2882;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2881;2883;2;f;f;t;0;a2d449ba-9652-4707-a52f-fec746e33d87",
+			"2883;2884;0;f;f;f;2883;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2884;2885;0;f;f;f;2884;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2884;2885;2;f;f;t;0;230fbbc3-2666-4cd0-b11d-f9de4eb57ca1",
+			"2885;2886;0;f;f;f;2885;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2886;2887;0;f;f;f;2886;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2886;2887;2;f;f;t;0;97497a5f-ae28-4371-bd13-a6cd0e0ac258",
+			"2887;2888;0;f;f;f;2887;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2888;2889;0;f;f;f;2888;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2888;2889;2;f;f;t;0;faa4486b-8caf-4e7a-ad25-b412eac22f9b",
+			"2889;2890;0;f;f;f;2889;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2890;2891;0;f;f;f;2890;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2890;2891;2;f;f;t;0;5173a4f8-e23d-486d-bed0-0b6b3354ce93",
+			"2891;2892;0;f;f;f;2891;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2892;2893;0;f;f;f;2892;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2892;2893;2;f;f;t;0;cc8f08f7-3d72-463a-8b74-e5a4c4449d4f",
+			"2893;2894;0;f;f;f;2893;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2894;2895;0;f;f;f;2894;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2894;2895;2;f;f;t;0;a548262c-b660-4770-830a-ca0a2b1a679a",
+			"2895;2896;0;f;f;f;2895;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2896;2897;0;f;f;f;2896;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2896;2897;2;f;f;t;0;b73cd7af-2a26-410c-b099-29278b16c5d6",
+			"2897;2898;0;f;f;f;2897;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2898;2899;0;f;f;f;2898;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2898;2899;2;f;f;t;0;73766493-004d-449a-942d-f56da5997b52",
+			"2899;2900;0;f;f;f;2899;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2900;2901;0;f;f;f;2900;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2900;2901;2;f;f;t;0;d36cbe6c-b0c6-41c0-b674-f3a540612a81",
+			"2901;2902;0;f;f;f;2901;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2902;2903;0;f;f;f;2902;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2902;2903;2;f;f;t;0;4ad3bf21-2e1d-4473-b82c-e2bb5f47c5e5",
+			"2903;2904;0;f;f;f;2903;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2904;2905;0;f;f;f;2904;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2904;2905;2;f;f;t;0;9cd2e75f-8b79-400e-9669-02ae232c95f4",
+			"2905;2906;0;f;f;f;2905;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2906;2907;0;f;f;f;2906;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2906;2907;2;f;f;t;0;bb41fe26-a876-470d-ab8a-9cadd1aa7765",
+			"2907;2908;0;f;f;f;2907;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2908;2909;0;f;f;f;2908;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2908;2909;2;f;f;t;0;3329cf2a-9f8d-4157-8487-28f6bdcd1fda",
+			"2909;2910;0;f;f;f;2909;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2910;2911;0;f;f;f;2910;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2910;2911;2;f;f;t;0;12c74f51-9715-4d90-962f-98ca45d26f19",
+			"2911;2912;0;f;f;f;2911;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2912;2913;0;f;f;f;2912;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2912;2913;2;f;f;t;0;0f520eda-8edb-45b5-b248-474b2e6be651",
+			"2913;2914;0;f;f;f;2913;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2914;2915;0;f;f;f;2914;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2914;2915;2;f;f;t;0;2bb1470a-d7ad-47c6-8475-8e2c64a9388d",
+			"2915;2916;0;f;f;f;2915;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2916;2917;0;f;f;f;2916;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2916;2917;2;f;f;t;0;6beafa56-0450-4053-a17f-0082b5940c23",
+			"2917;2918;0;f;f;f;2917;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2918;2919;0;f;f;f;2918;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2918;2919;2;f;f;t;0;cf7fd92c-b6b6-4110-8cb4-8719653fea5c",
+			"2919;2920;0;f;f;f;2919;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2920;2921;0;f;f;f;2920;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2919;2921;2;f;f;t;0;b7a84969-32d5-403a-a2c4-9599014f9b00",
+			"2921;2922;0;f;f;f;2921;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2922;2923;0;f;f;f;2922;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2922;2923;2;f;f;t;0;fd4d952c-8456-4d8c-8175-fdee64c70ad7",
+			"2923;2924;0;f;f;f;2923;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2924;2925;0;f;f;f;2924;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2924;2925;2;f;f;t;0;a2f6ad90-6362-4e21-a050-bef7ea46f474",
+			"2925;2926;0;f;f;f;2925;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2926;2927;0;f;f;f;2926;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2926;2927;2;f;f;t;0;55bf6b0b-175d-4b7e-a820-1870be93eed8",
+			"2927;2928;0;f;f;f;2927;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2928;2929;0;f;f;f;2928;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2928;2929;2;f;f;t;0;007f1dfb-e607-4dcc-ae43-846c108ca68c",
+			"2929;2930;0;f;f;f;2929;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2930;2931;0;f;f;f;2930;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2930;2931;2;f;f;t;0;63c57a76-e54d-43bc-ac8b-8c3fe82e86bd",
+			"2931;2932;0;f;f;f;2931;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2932;2933;0;f;f;f;2932;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2932;2933;2;f;f;t;0;a44edba3-9bf0-4dd3-9c4a-88f354e39406",
+			"2933;2934;0;f;f;f;2933;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2934;2935;0;f;f;f;2934;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2934;2935;2;f;f;t;0;5d4f9947-5f1a-4562-bb34-afc2e71d531a",
+			"2935;2936;0;f;f;f;2935;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2936;2937;0;f;f;f;2936;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2936;2937;2;f;f;t;0;65b8fd0a-d816-4438-83ea-799a20da1719",
+			"2937;2938;0;f;f;f;2937;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2938;2939;0;f;f;f;2938;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2938;2939;2;f;f;t;0;2ebe3a76-9f61-4651-821f-e993cdeada24",
+			"2939;2940;0;f;f;f;2939;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2940;2941;0;f;f;f;2940;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2940;2941;2;f;f;t;0;485ee851-0ab5-4ee5-b3bc-c52201002325",
+			"2941;2942;0;f;f;f;2941;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2942;2943;0;f;f;f;2942;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2942;2943;2;f;f;t;0;44366426-e07f-446a-bd6e-f640d50916c2",
+			"2943;2944;0;f;f;f;2943;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2944;2945;0;f;f;f;2944;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2944;2945;2;f;f;t;0;df183868-f082-4e60-9a20-c73f4cb371fe",
+			"2945;2946;0;f;f;f;2945;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2946;2947;0;f;f;f;2946;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2946;2947;2;f;f;t;0;99609845-9129-4962-b5bb-5976c1c236b7",
+			"2947;2948;0;f;f;f;2947;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2948;2949;0;f;f;f;2948;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2948;2949;2;f;f;t;0;95dd63b9-c9a3-4a9a-b195-6d9dac433dcf",
+			"2949;2950;0;f;f;f;2949;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2950;2951;0;f;f;f;2950;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2950;2951;2;f;f;t;0;7ad5da8b-a62c-4a98-ab1c-0bf05e8ce5de",
+			"2951;2952;0;f;f;f;2951;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2952;2953;0;f;f;f;2952;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2952;2953;2;f;f;t;0;419de3dd-e2b7-4b42-a7fb-e3d38abd787c",
+			"2953;2954;0;f;f;f;2953;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2954;2955;0;f;f;f;2954;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2954;2955;2;f;f;t;0;bd6f92c0-5cad-4184-8ea8-025592ebba67",
+			"2955;2956;0;f;f;f;2955;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2956;2957;0;f;f;f;2956;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2956;2957;2;f;f;t;0;dab299c0-2dc8-40d5-a94c-fa6529fe26d1",
+			"2957;2958;0;f;f;f;2957;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2958;2959;0;f;f;f;2958;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2958;2959;2;f;f;t;0;fc47ebb3-6a62-43ba-9120-76f2d3429aab",
+			"2959;2960;0;f;f;f;2959;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2960;2961;0;f;f;f;2960;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2960;2961;2;f;f;t;0;c77fe101-ff46-46fc-b519-78a0b9ec700f",
+			"2961;2962;0;f;f;f;2961;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2962;2963;0;f;f;f;2962;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2962;2963;2;f;f;t;0;b2d0064a-654a-4e24-a72e-937f1e142b5e",
+			"2963;2964;0;f;f;f;2963;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2964;2965;0;f;f;f;2964;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2964;2965;2;f;f;t;0;957cc987-07fa-4cfe-ba3e-531405ba7bfb",
+			"2965;2966;0;f;f;f;2965;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2966;2967;0;f;f;f;2966;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2966;2967;2;f;f;t;0;be775d05-31e5-4d18-9948-2cc41abe22ec",
+			"2967;2968;0;f;f;f;2967;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2968;2969;0;f;f;f;2968;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2968;2969;2;f;f;t;0;108a0849-d788-4ae8-a296-8f29f7f93538",
+			"2969;2970;0;f;f;f;2969;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2970;2971;0;f;f;f;2970;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2970;2971;2;f;f;t;0;d3347c5a-5bd3-4c1d-9370-f7cb118480ad",
+			"2971;2972;0;f;f;f;2971;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2972;2973;0;f;f;f;2972;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2972;2973;2;f;f;t;0;1fd7ad02-63b1-4751-a8a4-5c71c96c6774",
+			"2973;2974;0;f;f;f;2973;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2974;2975;0;f;f;f;2974;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2974;2975;2;f;f;t;0;418369e5-1c69-4fe9-ad65-b4b2b6a68ef3",
+			"2975;2976;0;f;f;f;2975;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2976;2977;0;f;f;f;2976;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2976;2977;2;f;f;t;0;85328856-2af9-48ae-ad9e-74fde714aa21",
+			"2977;2978;0;f;f;f;2977;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2978;2979;0;f;f;f;2978;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2978;2979;2;f;f;t;0;91675e94-366c-4407-be0e-3c29583bbfb5",
+			"2979;2980;0;f;f;f;2979;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2980;2981;0;f;f;f;2980;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2980;2981;2;f;f;t;0;b3ac4b28-f9a4-4e86-8919-1b4f024ae210",
+			"2981;2982;0;f;f;f;2981;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2982;2983;0;f;f;f;2982;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2982;2983;2;f;f;t;0;bf267cc2-f828-4f37-a102-fb8bf69e278a",
+			"2983;2984;0;f;f;f;2983;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2984;2985;0;f;f;f;2984;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2984;2985;2;f;f;t;0;c9a0d6e3-93dd-4844-b0bd-38a3440ee01a",
+			"2985;2986;0;f;f;f;2985;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2986;2987;0;f;f;f;2986;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2986;2987;2;f;f;t;0;d26243a3-c90b-4e21-bd27-c9fd537f3912",
+			"2987;2988;0;f;f;f;2987;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2988;2989;0;f;f;f;2988;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2988;2989;2;f;f;t;0;3fac957d-90db-4cb0-83cd-82d9d35b5c86",
+			"2989;2990;0;f;f;f;2989;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2990;2991;0;f;f;f;2990;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2991;2992;0;f;f;f;2991;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2990;2992;2;f;f;t;0;3401807e-71fc-427c-923a-5fb9f9f48748",
+			"2991;2992;2;f;f;t;0;8f82ca83-1f4c-4bed-a09b-38d0ebecf29d",
+			"2992;2993;0;f;f;f;2992;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2993;2994;0;f;f;f;2993;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2994;2995;0;f;f;f;2994;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2994;2995;2;f;f;t;0;02b76c55-f941-40a4-9edf-79738c88db5d",
+			"2995;2996;0;f;f;f;2995;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2996;2997;0;f;f;f;2996;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2996;2997;2;f;f;t;0;2c747f58-1539-49d2-b781-2024fed6967e",
+			"2997;2998;0;f;f;f;2997;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2998;2999;0;f;f;f;2998;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"2998;2999;2;f;f;t;0;984c185c-3d7f-4a2d-aff1-48736af79841",
+			"2999;3000;0;f;f;f;2999;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3000;3001;0;f;f;f;3000;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3000;3001;2;f;f;t;0;1ef0f47c-041d-4e9b-b50d-73ed6ee05d2a",
+			"3001;3002;0;f;f;f;3001;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3002;3003;0;f;f;f;3002;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3002;3003;2;f;f;t;0;cac33164-6cc2-4a93-bb3e-e2442b60adee",
+			"3003;3004;0;f;f;f;3003;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3004;3005;0;f;f;f;3004;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3003;3005;2;f;f;t;0;bf102440-1757-4d19-aff2-9572cc53888c",
+			"3005;3006;0;f;f;f;3005;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3006;3007;0;f;f;f;3006;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3006;3007;2;f;f;t;0;c3339f4d-a8af-4885-9390-8ebe05eaefdc",
+			"3007;3008;0;f;f;f;3007;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3008;3009;0;f;f;f;3008;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3008;3009;2;f;f;t;0;42705612-b6cf-4f87-86a3-7b14e03cf6cb",
+			"3009;3010;0;f;f;f;3009;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3010;3011;0;f;f;f;3010;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3010;3011;2;f;f;t;0;5f0632ea-586b-4820-b529-ee744e8dced9",
+			"3011;3012;0;f;f;f;3011;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3012;3013;0;f;f;f;3012;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3012;3013;2;f;f;t;0;e55cf9d9-0bbe-4664-b227-a19b4be8999c",
+			"3013;3014;0;f;f;f;3013;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3014;3015;0;f;f;f;3014;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3013;3015;2;f;f;t;0;5252e79b-dff2-49fa-a1f2-1cff17bbde8b",
+			"3015;3016;0;f;f;f;3015;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3016;3017;0;f;f;f;3016;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3016;3017;2;f;f;t;0;6ab81d7c-9b22-4fa8-abce-541c4b1068d3",
+			"3017;3018;0;f;f;f;3017;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3018;3019;0;f;f;f;3018;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3018;3019;2;f;f;t;0;4a53bd08-668f-465b-a3ef-1524ed87b247",
+			"3019;3020;0;f;f;f;3019;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3020;3021;0;f;f;f;3020;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3020;3021;2;f;f;t;0;30bd53f0-07b9-4787-958e-886c15bdcb06",
+			"3021;3022;0;f;f;f;3021;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3022;3023;0;f;f;f;3022;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3022;3023;2;f;f;t;0;7890596e-7ab5-423d-9baa-cfe49c7de809",
+			"3023;3024;0;f;f;f;3023;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3024;3025;0;f;f;f;3024;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3024;3025;2;f;f;t;0;5af9fc36-347e-4724-98c4-0ee245043f4e",
+			"3025;3026;0;f;f;f;3025;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3026;3027;0;f;f;f;3026;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3025;3027;2;f;f;t;0;fd9d53ab-fcea-40f5-b5a3-4bb7083a4001",
+			"3027;3028;0;f;f;f;3027;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3028;3029;0;f;f;f;3028;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3028;3029;2;f;f;t;0;0524ac29-3580-460f-8d5d-543d6168b290",
+			"3029;3030;0;f;f;f;3029;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3030;3031;0;f;f;f;3030;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3029;3031;2;f;f;t;0;1dd85c66-b587-4515-9d0d-d1c964bcb0df",
+			"3031;3032;0;f;f;f;3031;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3032;3033;0;f;f;f;3032;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3032;3033;2;f;f;t;0;d506882b-3a33-4cc0-9575-585a9dfdf20e",
+			"3033;3034;0;f;f;f;3033;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3034;3035;0;f;f;f;3034;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3033;3035;2;f;f;t;0;03f983de-10f2-4865-8b43-3979699c1afc",
+			"3035;3036;0;f;f;f;3035;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3036;3037;0;f;f;f;3036;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3036;3037;2;f;f;t;0;e84801ae-2de6-4547-bdb1-eebc1fd52a46",
+			"3037;3038;0;f;f;f;3037;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3038;3039;0;f;f;f;3038;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3038;3039;2;f;f;t;0;7fd1af4b-1c5f-4772-a024-388cadf4fe8a",
+			"3039;3040;0;f;f;f;3039;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3040;3041;0;f;f;f;3040;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3040;3041;2;f;f;t;0;060558da-f1b4-4131-a106-9b020b6102fe",
+			"3041;3042;0;f;f;f;3041;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3042;3043;0;f;f;f;3042;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3042;3043;2;f;f;t;0;9e019674-0b76-4a7e-9313-7cf0fe5417b8",
+			"3043;3044;0;f;f;f;3043;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3044;3045;0;f;f;f;3044;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3044;3045;2;f;f;t;0;2951410d-d5dd-42a9-b2bb-c9a9c68a9ea9",
+			"3045;3046;0;f;f;f;3045;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3046;3047;0;f;f;f;3046;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3046;3047;2;f;f;t;0;bf72ce51-d18d-4ee5-90b0-758562a37431",
+			"3047;3048;0;f;f;f;3047;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3048;3049;0;f;f;f;3048;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3048;3049;2;f;f;t;0;c76f11c2-4d64-4ebe-845f-d9f2cea2b1e5",
+			"3049;3050;0;f;f;f;3049;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3050;3051;0;f;f;f;3050;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3050;3051;2;f;f;t;0;85bfdf9c-0472-4fba-b26f-cbc428fc7136",
+			"3051;3052;0;f;f;f;3051;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3052;3053;0;f;f;f;3052;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3052;3053;2;f;f;t;0;54150295-e0e7-4224-9d9a-f578bb817841",
+			"3053;3054;0;f;f;f;3053;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3054;3055;0;f;f;f;3054;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3054;3055;2;f;f;t;0;f1f2146c-5d64-4b09-8e34-1f933ffc36fe",
+			"3055;3056;0;f;f;f;3055;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3056;3057;0;f;f;f;3056;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3056;3057;2;f;f;t;0;54b28f15-6e16-42c5-bc48-bf8f6f7a382d",
+			"3057;3058;0;f;f;f;3057;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3058;3059;0;f;f;f;3058;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3058;3059;2;f;f;t;0;cd66806a-bc16-4ebf-8fb2-a8c50d733eb2",
+			"3059;3060;0;f;f;f;3059;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3060;3061;0;f;f;f;3060;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3060;3061;2;f;f;t;0;7a4f9a86-b0d0-4381-8a7c-2a44244cb767",
+			"3061;3062;0;f;f;f;3061;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3062;3063;0;f;f;f;3062;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3062;3063;2;f;f;t;0;e003366b-ddc7-4686-8508-519f549154c8",
+			"3063;3064;0;f;f;f;3063;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3064;3065;0;f;f;f;3064;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3064;3065;2;f;f;t;0;552bd7ea-4f56-4434-8aa3-f3624758dded",
+			"3065;3066;0;f;f;f;3065;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3066;3067;0;f;f;f;3066;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3066;3067;2;f;f;t;0;7f57311b-5afc-4437-b010-72bde99b1aba",
+			"3067;3068;0;f;f;f;3067;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3068;3069;0;f;f;f;3068;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3068;3069;2;f;f;t;0;4cc65b98-fd13-4ed2-87bd-881670f0923d",
+			"3069;3070;0;f;f;f;3069;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3070;3071;0;f;f;f;3070;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3070;3071;2;f;f;t;0;7f7a7c77-5cab-4317-9a1f-982989ff2c89",
+			"3071;3072;0;f;f;f;3071;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3072;3073;0;f;f;f;3072;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3072;3073;2;f;f;t;0;04a70227-23a7-49f9-b01d-7ae7716ecf56",
+			"3073;3074;0;f;f;f;3073;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3074;3075;0;f;f;f;3074;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3074;3075;2;f;f;t;0;a885bd37-5432-4dd0-842b-44e5751f740d",
+			"3075;3076;0;f;f;f;3075;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3076;3077;0;f;f;f;3076;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3076;3077;2;f;f;t;0;9c54afd0-1ffe-41f2-b422-0cdf7b114311",
+			"3077;3078;0;f;f;f;3077;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3078;3079;0;f;f;f;3078;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3078;3079;2;f;f;t;0;646f48a6-bfd8-4210-8c3b-96d52972251d",
+			"3079;3080;0;f;f;f;3079;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3080;3081;0;f;f;f;3080;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3080;3081;2;f;f;t;0;7db6dba1-0b0b-4589-9a70-2a754d367790",
+			"3081;3082;0;f;f;f;3081;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3082;3083;0;f;f;f;3082;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3082;3083;2;f;f;t;0;42b4bb0f-4f98-4247-892d-e047d7a4b5f2",
+			"3083;3084;0;f;f;f;3083;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3084;3085;0;f;f;f;3084;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3084;3085;2;f;f;t;0;8bd7456c-428a-4e86-880d-96d752ac500d",
+			"3085;3086;0;f;f;f;3085;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3086;3087;0;f;f;f;3086;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3086;3087;2;f;f;t;0;cd9fed43-4535-4a37-a0c3-9214c8c93cf6",
+			"3087;3088;0;f;f;f;3087;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3088;3089;0;f;f;f;3088;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3088;3089;2;f;f;t;0;a655b683-5cfd-4e90-839a-e53fc5fae740",
+			"3089;3090;0;f;f;f;3089;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3090;3091;0;f;f;f;3090;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3090;3091;2;f;f;t;0;33c1b55a-fa35-4177-aa4b-d40a6b4ed15c",
+			"3091;3092;0;f;f;f;3091;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3092;3093;0;f;f;f;3092;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3092;3093;2;f;f;t;0;dfdecf80-a50d-492c-a867-f310b8fd3d4a",
+			"3093;3094;0;f;f;f;3093;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3094;3095;0;f;f;f;3094;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3094;3095;2;f;f;t;0;50bfc5bb-fb69-455b-ac3d-c13c6b85e960",
+			"3095;3096;0;f;f;f;3095;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3096;3097;0;f;f;f;3096;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3096;3097;2;f;f;t;0;037007b0-b966-4f63-8589-eca3221791a3",
+			"3097;3098;0;f;f;f;3097;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3098;3099;0;f;f;f;3098;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3098;3099;2;f;f;t;0;c7c5c0e2-6097-49e4-9533-ecf2010d8d04",
+			"3099;3100;0;f;f;f;3099;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3100;3101;0;f;f;f;3100;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3100;3101;2;f;f;t;0;07f5037a-319b-4d0e-b74a-3041aeaf6703",
+			"3101;3102;0;f;f;f;3101;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3102;3103;0;f;f;f;3102;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3102;3103;2;f;f;t;0;a2a3032e-f5bc-450c-947b-c9ffc221beb2",
+			"3103;3104;0;f;f;f;3103;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3104;3105;0;f;f;f;3104;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3104;3105;2;f;f;t;0;50a9dc63-7c87-4a63-a478-73d2100119b5",
+			"3105;3106;0;f;f;f;3105;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3106;3107;0;f;f;f;3106;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3106;3107;2;f;f;t;0;c3ad269a-c910-4c95-a768-b0b083f29a32",
+			"3107;3108;0;f;f;f;3107;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3108;3109;0;f;f;f;3108;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3108;3109;2;f;f;t;0;66352cf4-3152-4525-bfc3-ab8069730fff",
+			"3109;3110;0;f;f;f;3109;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3110;3111;0;f;f;f;3110;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3110;3111;2;f;f;t;0;6371aa61-5882-45f1-b23d-4021a1e16611",
+			"3111;3112;0;f;f;f;3111;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3112;3113;0;f;f;f;3112;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3112;3113;2;f;f;t;0;62345aa7-3ed6-4707-9fa2-bd7003e60e0b",
+			"3113;3114;0;f;f;f;3113;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3114;3115;0;f;f;f;3114;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3114;3115;2;f;f;t;0;d5ea0f39-dfde-4099-a569-bd5369c88cbd",
+			"3115;3116;0;f;f;f;3115;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3116;3117;0;f;f;f;3116;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3117;3118;0;f;f;f;3117;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3116;3118;2;f;f;t;0;43e5be97-a90c-413c-b038-d11525937694",
+			"3117;3118;2;f;f;t;0;c4636014-7118-4b7c-968f-9547430409ed",
+			"3118;3119;0;f;f;f;3118;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3119;3120;0;f;f;f;3119;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3120;3121;0;f;f;f;3120;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3121;3122;0;f;f;f;3121;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3120;3122;2;f;f;t;0;79e80c90-cd53-43a0-a630-7d3573664f7f",
+			"3121;3122;2;f;f;t;0;778de49c-afca-414f-871c-5436102d4991",
+			"3122;3123;0;f;f;f;3122;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3123;3124;0;f;f;f;3123;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3124;3125;0;f;f;f;3124;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3124;3125;2;f;f;t;0;841a3c7a-32e0-4c2e-846c-4161b265a02b",
+			"3125;3126;0;f;f;f;3125;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3126;3127;0;f;f;f;3126;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3125;3127;2;f;f;t;0;caf8a5fe-4639-409d-b9cd-667eca4b1524",
+			"3127;3128;0;f;f;f;3127;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3128;3129;0;f;f;f;3128;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3128;3129;2;f;f;t;0;3acfbb2f-17a3-4665-9e8f-02698b171e00",
+			"3129;3130;0;f;f;f;3129;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3130;3131;0;f;f;f;3130;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3130;3131;2;f;f;t;0;70cf0b01-5e3d-4d5e-b80b-930d0afe5be4",
+			"3131;3132;0;f;f;f;3131;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3132;3133;0;f;f;f;3132;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3132;3133;2;f;f;t;0;b1c759c6-a35b-446f-a730-86f05852c891",
+			"3133;3134;0;f;f;f;3133;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3134;3135;0;f;f;f;3134;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3134;3135;2;f;f;t;0;b19a0d49-9685-47d5-b048-daeece11c5a9",
+			"3135;3136;0;f;f;f;3135;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3136;3137;0;f;f;f;3136;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3136;3137;2;f;f;t;0;37b92cf5-f7b7-45f3-94f7-9c1f3aaa8baa",
+			"3137;3138;0;f;f;f;3137;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3138;3139;0;f;f;f;3138;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3138;3139;2;f;f;t;0;dcd626c5-231f-485a-8cb8-0f71d65825f9",
+			"3139;3140;0;f;f;f;3139;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3140;3141;0;f;f;f;3140;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3139;3141;2;f;f;t;0;cf97c139-6991-41c7-95b0-f33c5a72c29e",
+			"3141;3142;0;f;f;f;3141;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3142;3143;0;f;f;f;3142;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3142;3143;2;f;f;t;0;3b6355e0-2e3a-4753-bcd5-821f4ea33567",
+			"3143;3144;0;f;f;f;3143;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3144;3145;0;f;f;f;3144;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3144;3145;2;f;f;t;0;96b4c453-3609-4627-abd3-7f630880cb31",
+			"3145;3146;0;f;f;f;3145;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3146;3147;0;f;f;f;3146;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3146;3147;2;f;f;t;0;bc7715ff-25d2-46a6-8849-0e2a31021fbc",
+			"3147;3148;0;f;f;f;3147;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3148;3149;0;f;f;f;3148;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3148;3149;2;f;f;t;0;2372d421-bd33-4ea7-829d-153230cd47bc",
+			"3149;3150;0;f;f;f;3149;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3150;3151;0;f;f;f;3150;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3150;3151;2;f;f;t;0;205f360d-956d-4e0a-9472-44720f74d0f4",
+			"3151;3152;0;f;f;f;3151;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3152;3153;0;f;f;f;3152;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3152;3153;2;f;f;t;0;7600f676-b80d-40b3-a056-d4a0dc3d3866",
+			"3153;3154;0;f;f;f;3153;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3154;3155;0;f;f;f;3154;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3154;3155;2;f;f;t;0;5a869036-e9b9-49c6-82d4-78d72b09d393",
+			"3155;3156;0;f;f;f;3155;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3156;3157;0;f;f;f;3156;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3156;3157;2;f;f;t;0;474504f9-3cee-4452-bfa0-2e9adc7580c4",
+			"3157;3158;0;f;f;f;3157;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3158;3159;0;f;f;f;3158;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3158;3159;2;f;f;t;0;601ce2f3-db56-409e-bf38-7e504bfda10b",
+			"3159;3160;0;f;f;f;3159;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3160;3161;0;f;f;f;3160;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3160;3161;2;f;f;t;0;a08e632b-9339-46d0-a033-0da8d935a0ff",
+			"3161;3162;0;f;f;f;3161;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3162;3163;0;f;f;f;3162;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3162;3163;2;f;f;t;0;d364d844-12c1-4df6-9569-6fa410b04aec",
+			"3163;3164;0;f;f;f;3163;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3164;3165;0;f;f;f;3164;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3164;3165;2;f;f;t;0;b783011a-8e07-4cdc-a0c4-0adadcd31aba",
+			"3165;3166;0;f;f;f;3165;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3166;3167;0;f;f;f;3166;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3166;3167;2;f;f;t;0;e5259b42-ae30-4583-a954-ab8d92705b44",
+			"3167;3168;0;f;f;f;3167;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3168;3169;0;f;f;f;3168;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3168;3169;2;f;f;t;0;7f2ab910-f091-4c8b-95b1-57d002eaa0b4",
+			"3169;3170;0;f;f;f;3169;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3170;3171;0;f;f;f;3170;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3170;3171;2;f;f;t;0;71c1461b-8809-4d37-9155-9b337848b499",
+			"3171;3172;0;f;f;f;3171;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3172;3173;0;f;f;f;3172;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3173;3174;0;f;f;f;3173;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3172;3174;2;f;f;t;0;bdd2a50e-9c08-41eb-b22d-9110636dc7ea",
+			"3173;3174;2;f;f;t;0;23f9ba8d-bfb4-4b2a-9af6-c9348184bb30",
+			"3174;3175;0;f;f;f;3174;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3175;3176;0;f;f;f;3175;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3176;3177;0;f;f;f;3176;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3176;3177;2;f;f;t;0;05c1f059-7e6a-4c1a-b087-de65ddca4fe9",
+			"3177;3178;0;f;f;f;3177;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3178;3179;0;f;f;f;3178;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3177;3179;2;f;f;t;0;e269ad7f-44b5-480f-8ca2-a3c8aac469f3",
+			"3179;3180;0;f;f;f;3179;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3180;3181;0;f;f;f;3180;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3180;3181;2;f;f;t;0;6cf6aa72-8dc5-441d-b63c-c2aac67290e0",
+			"3181;3182;0;f;f;f;3181;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3182;3183;0;f;f;f;3182;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3182;3183;2;f;f;t;0;3d41a0f0-240b-4ab3-847a-0e756228cc02",
+			"3183;3184;0;f;f;f;3183;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3184;3185;0;f;f;f;3184;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3184;3185;2;f;f;t;0;4f0cab8e-6fe6-44f2-bf67-1e4786c1402b",
+			"3185;3186;0;f;f;f;3185;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3186;3187;0;f;f;f;3186;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3186;3187;2;f;f;t;0;41acd40b-e3a6-4cd3-94b3-d598d0108971",
+			"3187;3188;0;f;f;f;3187;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3188;3189;0;f;f;f;3188;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3188;3189;2;f;f;t;0;b297aff3-d4a0-4e9e-b675-b137532a3f57",
+			"3189;3190;0;f;f;f;3189;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3190;3191;0;f;f;f;3190;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3190;3191;2;f;f;t;0;448361d9-7c36-442a-90c4-25e9e6faa7a6",
+			"3191;3192;0;f;f;f;3191;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3192;3193;0;f;f;f;3192;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3192;3193;2;f;f;t;0;310a4d7e-c4bc-46c2-9969-77aa6fe68f9f",
+			"3193;3194;0;f;f;f;3193;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3194;3195;0;f;f;f;3194;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3194;3195;2;f;f;t;0;76b138c1-85f4-42b1-89a4-1ab7930803dc",
+			"3195;3196;0;f;f;f;3195;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3196;3197;0;f;f;f;3196;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3196;3197;2;f;f;t;0;e35e84e5-427f-4612-8cac-03ead8613212",
+			"3197;3198;0;f;f;f;3197;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3198;3199;0;f;f;f;3198;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3198;3199;2;f;f;t;0;bf1a91c7-e48b-4687-8a79-57b1ee2f1055",
+			"3199;3200;0;f;f;f;3199;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3200;3201;0;f;f;f;3200;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3199;3201;2;f;f;t;0;44c42bbf-11e5-469c-82ac-4d1d6e087151",
+			"3201;3202;0;f;f;f;3201;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3202;3203;0;f;f;f;3202;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3202;3203;2;f;f;t;0;18b23692-b30a-438d-8bf6-237f42532266",
+			"3203;3204;0;f;f;f;3203;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3204;3205;0;f;f;f;3204;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3204;3205;2;f;f;t;0;53bf3665-852b-45a3-bf5d-2c49f8a8621e",
+			"3205;3206;0;f;f;f;3205;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3206;3207;0;f;f;f;3206;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3206;3207;2;f;f;t;0;524b8307-f22c-4990-90ed-ee136bf3b2b6",
+			"3207;3208;0;f;f;f;3207;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3208;3209;0;f;f;f;3208;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3208;3209;2;f;f;t;0;e4be72d0-ed5c-466a-bc46-124ac4e98af1",
+			"3209;3210;0;f;f;f;3209;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3210;3211;0;f;f;f;3210;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3210;3211;2;f;f;t;0;f798d83a-06ed-4aa3-a069-c9e9d34e7459",
+			"3211;3212;0;f;f;f;3211;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3212;3213;0;f;f;f;3212;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3212;3213;2;f;f;t;0;ff016402-49e7-44a9-a821-e49eac90a4a0",
+			"3213;3214;0;f;f;f;3213;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3214;3215;0;f;f;f;3214;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3214;3215;2;f;f;t;0;e31d0ea7-b2de-439f-9dfc-5a4d48b2d405",
+			"3215;3216;0;f;f;f;3215;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3216;3217;0;f;f;f;3216;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3216;3217;2;f;f;t;0;0cdc3b5e-134c-44ca-b719-d4beb1ce7dd4",
+			"3217;3218;0;f;f;f;3217;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3218;3219;0;f;f;f;3218;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3218;3219;2;f;f;t;0;c7091b98-dd08-46bc-9bed-3bc3e6a68056",
+			"3219;3220;0;f;f;f;3219;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3220;3221;0;f;f;f;3220;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3220;3221;2;f;f;t;0;089f228a-3d0c-46c3-a451-3b4ce79a0b2a",
+			"3221;3222;0;f;f;f;3221;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3222;3223;0;f;f;f;3222;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3222;3223;2;f;f;t;0;3f7b4b55-5894-456d-bf2a-c05644841ad2",
+			"3223;3224;0;f;f;f;3223;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3224;3225;0;f;f;f;3224;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3224;3225;2;f;f;t;0;342ad596-3079-4e9c-9f31-b6a5aeb6f0f4",
+			"3225;3226;0;f;f;f;3225;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3226;3227;0;f;f;f;3226;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3226;3227;2;f;f;t;0;1ee77c13-20dd-49d8-b490-38a08e5e3026",
+			"3227;3228;0;f;f;f;3227;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3228;3229;0;f;f;f;3228;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3228;3229;2;f;f;t;0;c5d332d3-f37f-4146-a9ac-7ad2d983cfea",
+			"3229;3230;0;f;f;f;3229;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3230;3231;0;f;f;f;3230;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3230;3231;2;f;f;t;0;83bc983e-0d27-4aa3-8bdc-d9cfbe21af72",
+			"3231;3232;0;f;f;f;3231;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3232;3233;0;f;f;f;3232;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3232;3233;2;f;f;t;0;beca5d63-e526-49a6-95fe-1f65a5ace8ea",
+			"3233;3234;0;f;f;f;3233;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3234;3235;0;f;f;f;3234;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3234;3235;2;f;f;t;0;62e09408-73d3-491b-bd08-a50825917046",
+			"3235;3236;0;f;f;f;3235;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3236;3237;0;f;f;f;3236;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3236;3237;2;f;f;t;0;1f8e6192-09a3-4f19-bce6-3790db31fd8b",
+			"3237;3238;0;f;f;f;3237;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3238;3239;0;f;f;f;3238;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3238;3239;2;f;f;t;0;e6f83a00-1a53-4b14-bdf5-04f3b52ec4f8",
+			"3239;3240;0;f;f;f;3239;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3240;3241;0;f;f;f;3240;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3240;3241;2;f;f;t;0;26117441-992b-4160-8d9d-4c620c1b4e3e",
+			"3241;3242;0;f;f;f;3241;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3242;3243;0;f;f;f;3242;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3242;3243;2;f;f;t;0;b6b7b2ec-81bb-4666-acf6-00c99da812d7",
+			"3243;3244;0;f;f;f;3243;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3244;3245;0;f;f;f;3244;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3244;3245;2;f;f;t;0;e4809e8e-cde4-4407-9bb8-d893fdb64bab",
+			"3245;3246;0;f;f;f;3245;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3246;3247;0;f;f;f;3246;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3246;3247;2;f;f;t;0;04f87534-af4d-463c-8936-5cb6dd85fe6f",
+			"3247;3248;0;f;f;f;3247;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3248;3249;0;f;f;f;3248;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3248;3249;2;f;f;t;0;536e0782-648a-4467-b30d-96cf7aa8dd3c",
+			"3249;3250;0;f;f;f;3249;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3250;3251;0;f;f;f;3250;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3250;3251;2;f;f;t;0;19b75110-1552-441b-887a-98fddf1fc9d2",
+			"3251;3252;0;f;f;f;3251;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3252;3253;0;f;f;f;3252;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3252;3253;2;f;f;t;0;ed10e8dd-17e0-445e-8d16-5806f184c04d",
+			"3253;3254;0;f;f;f;3253;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3254;3255;0;f;f;f;3254;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3254;3255;2;f;f;t;0;ea69868f-d08f-4cac-ac31-d89a289fab31",
+			"3255;3256;0;f;f;f;3255;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3256;3257;0;f;f;f;3256;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3256;3257;2;f;f;t;0;1230566d-240a-4f0f-b1e5-bf59ee8bcc99",
+			"3257;3258;0;f;f;f;3257;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3258;3259;0;f;f;f;3258;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3259;3260;0;f;f;f;3259;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3258;3260;2;f;f;t;0;b615e853-8e2b-4c7b-852b-0ce4f33c8514",
+			"3259;3260;2;f;f;t;0;68cabd1e-939f-4198-b5a2-0d297c68fa19",
+			"3260;3261;0;f;f;f;3260;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3261;3262;0;f;f;f;3261;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3262;3263;0;f;f;f;3262;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3262;3263;2;f;f;t;0;ce984044-ce4e-4274-8dfb-5db257eb1645",
+			"3263;3264;0;f;f;f;3263;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3264;3265;0;f;f;f;3264;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3264;3265;2;f;f;t;0;c5409e37-896f-4827-87fb-1d2b064d25c1",
+			"3265;3266;0;f;f;f;3265;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3266;3267;0;f;f;f;3266;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3266;3267;2;f;f;t;0;a6aa6d34-535a-4e6a-9154-190ed7ac3cc7",
+			"3267;3268;0;f;f;f;3267;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3268;3269;0;f;f;f;3268;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3268;3269;2;f;f;t;0;de3790f3-e4c3-428c-9083-cab1f7215b44",
+			"3269;3270;0;f;f;f;3269;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3270;3271;0;f;f;f;3270;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3270;3271;2;f;f;t;0;5ce4ab0e-f9c8-4339-b1e1-0bc7b3673848",
+			"3271;3272;0;f;f;f;3271;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3272;3273;0;f;f;f;3272;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3272;3273;2;f;f;t;0;2426ca62-fa83-4682-baee-214258b1f0f8",
+			"3273;3274;0;f;f;f;3273;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3274;3275;0;f;f;f;3274;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3274;3275;2;f;f;t;0;d10f2018-58fc-4e22-ba01-4a32b08273ea",
+			"3275;3276;0;f;f;f;3275;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3276;3277;0;f;f;f;3276;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3276;3277;2;f;f;t;0;32061672-fa7b-45ac-aadf-a1c2e6f7e526",
+			"3277;3278;0;f;f;f;3277;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3278;3279;0;f;f;f;3278;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3278;3279;2;f;f;t;0;0e9446ae-3ce0-4b91-9fbe-ae6ea9f18662",
+			"3279;3280;0;f;f;f;3279;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3280;3281;0;f;f;f;3280;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3280;3281;2;f;f;t;0;2471b876-561c-45da-953e-03039d3dc9b7",
+			"3281;3282;0;f;f;f;3281;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3282;3283;0;f;f;f;3282;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3282;3283;2;f;f;t;0;b6c18184-aeb3-4484-bf87-6b53e8a70cb7",
+			"3283;3284;0;f;f;f;3283;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3284;3285;0;f;f;f;3284;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3284;3285;2;f;f;t;0;33e6fd06-2a45-4268-b9fe-2963aef8a222",
+			"3285;3286;0;f;f;f;3285;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3286;3287;0;f;f;f;3286;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3286;3287;2;f;f;t;0;2a0a3da4-4cdb-4832-8ae0-6f56a4e76762",
+			"3287;3288;0;f;f;f;3287;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3288;3289;0;f;f;f;3288;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3288;3289;2;f;f;t;0;83d26347-7f12-4797-aecd-5f3c56964692",
+			"3289;3290;0;f;f;f;3289;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3290;3291;0;f;f;f;3290;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3290;3291;2;f;f;t;0;aeba61f6-50a5-442b-8f27-3adb6023fc5e",
+			"3291;3292;0;f;f;f;3291;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3292;3293;0;f;f;f;3292;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3292;3293;2;f;f;t;0;c273e372-7991-4212-b5b0-c09ccfa372c8",
+			"3293;3294;0;f;f;f;3293;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3294;3295;0;f;f;f;3294;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3294;3295;2;f;f;t;0;131be772-1065-4613-9d74-2aa072a9e9a9",
+			"3295;3296;0;f;f;f;3295;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3296;3297;0;f;f;f;3296;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3296;3297;2;f;f;t;0;2ee39cb8-5646-44b9-9ace-b3df11d1f0ed",
+			"3297;3298;0;f;f;f;3297;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3298;3299;0;f;f;f;3298;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3298;3299;2;f;f;t;0;7d51d2ba-e5f1-4164-9e7e-8402d9d4d814",
+			"3299;3300;0;f;f;f;3299;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3300;3301;0;f;f;f;3300;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3300;3301;2;f;f;t;0;ae0f2494-0303-4704-be93-bec413352ac0",
+			"3301;3302;0;f;f;f;3301;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3302;3303;0;f;f;f;3302;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3302;3303;2;f;f;t;0;8313289d-ffa2-4e03-b41c-6c4d6b6262b3",
+			"3303;3304;0;f;f;f;3303;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3304;3305;0;f;f;f;3304;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3304;3305;2;f;f;t;0;c36618c9-d163-4a1e-b1d9-7b5ed1cd8452",
+			"3305;3306;0;f;f;f;3305;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3306;3307;0;f;f;f;3306;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3306;3307;2;f;f;t;0;915038bc-52c5-48e7-ba8d-e48502a65de5",
+			"3307;3308;0;f;f;f;3307;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3308;3309;0;f;f;f;3308;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3308;3309;2;f;f;t;0;b0bbea4d-5bdb-446e-8260-03c82f1ea652",
+			"3309;3310;0;f;f;f;3309;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3310;3311;0;f;f;f;3310;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3309;3311;2;f;f;t;0;a2946b8d-afa4-46ed-9ae3-fcaa1ace0de9",
+			"3311;3312;0;f;f;f;3311;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3312;3313;0;f;f;f;3312;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3312;3313;2;f;f;t;0;440a410e-fc21-45ce-8582-d31533ca28b1",
+			"3313;3314;0;f;f;f;3313;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3314;3315;0;f;f;f;3314;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3314;3315;2;f;f;t;0;72c51d8b-bf44-4042-941f-48e55ee0e8f9",
+			"3315;3316;0;f;f;f;3315;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3316;3317;0;f;f;f;3316;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3316;3317;2;f;f;t;0;d7d53709-e901-47ac-a215-e8d687f266b0",
+			"3317;3318;0;f;f;f;3317;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3318;3319;0;f;f;f;3318;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3318;3319;2;f;f;t;0;b3989a60-e144-4fb7-aee0-1d9b415bf4c3",
+			"3319;3320;0;f;f;f;3319;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3320;3321;0;f;f;f;3320;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3320;3321;2;f;f;t;0;57179dc7-d68f-4207-ac25-85bb000e007b",
+			"3321;3322;0;f;f;f;3321;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3322;3323;0;f;f;f;3322;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3322;3323;2;f;f;t;0;390ee69c-980e-4d13-b77a-128cd0e84cf9",
+			"3323;3324;0;f;f;f;3323;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3324;3325;0;f;f;f;3324;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3324;3325;2;f;f;t;0;0d0d6ce7-591f-4410-a5cd-a99706cd4917",
+			"3325;3326;0;f;f;f;3325;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3326;3327;0;f;f;f;3326;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3326;3327;2;f;f;t;0;f2ac7e28-c12d-4338-a28e-b98769f7b10f",
+			"3327;3328;0;f;f;f;3327;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3328;3329;0;f;f;f;3328;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3328;3329;2;f;f;t;0;1d70d5ea-1294-42d5-b837-267a86d9602b",
+			"3329;3330;0;f;f;f;3329;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3330;3331;0;f;f;f;3330;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3331;3332;0;f;f;f;3331;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3330;3332;2;f;f;t;0;138ee4ae-5aca-42d2-a291-be15d3a96579",
+			"3331;3332;2;f;f;t;0;0df3ae2e-3736-484d-af92-c79a211347ec",
+			"3332;3333;0;f;f;f;3332;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3333;3334;0;f;f;f;3333;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3334;3335;0;f;f;f;3334;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3334;3335;2;f;f;t;0;11f1992b-17e3-4e7e-8b41-06dc98c80a74",
+			"3335;3336;0;f;f;f;3335;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3336;3337;0;f;f;f;3336;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3336;3337;2;f;f;t;0;e3481f6e-d689-4464-bcbc-227a88426b3d",
+			"3337;3338;0;f;f;f;3337;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3338;3339;0;f;f;f;3338;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3338;3339;2;f;f;t;0;eea9d7bc-0ca7-43f5-943f-0d7662965d29",
+			"3339;3340;0;f;f;f;3339;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3340;3341;0;f;f;f;3340;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3340;3341;2;f;f;t;0;e0ea6539-cb76-46c0-891f-ba441a5157b1",
+			"3341;3342;0;f;f;f;3341;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3342;3343;0;f;f;f;3342;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3342;3343;2;f;f;t;0;f08eea45-3137-471d-8a6c-ad1d5738d8af",
+			"3343;3344;0;f;f;f;3343;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3344;3345;0;f;f;f;3344;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3344;3345;2;f;f;t;0;d0c94c76-7ff1-46e0-916a-4630b64c09ab",
+			"3345;3346;0;f;f;f;3345;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3346;3347;0;f;f;f;3346;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3346;3347;2;f;f;t;0;7870e7c6-4751-442f-a25c-31880400fa15",
+			"3347;3348;0;f;f;f;3347;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3348;3349;0;f;f;f;3348;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3348;3349;2;f;f;t;0;777dc7e5-4671-41db-8a78-ad3bdd4adf98",
+			"3349;3350;0;f;f;f;3349;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3350;3351;0;f;f;f;3350;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3350;3351;2;f;f;t;0;e31d0b38-f7a6-4338-9d9e-24e44eecbc1b",
+			"3351;3352;0;f;f;f;3351;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3352;3353;0;f;f;f;3352;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3353;3354;0;f;f;f;3353;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3352;3354;2;f;f;t;0;dced0ab9-fd80-48c2-bc64-4baad9f73652",
+			"3353;3354;2;f;f;t;0;8dfcb7a5-ed2c-4cc0-b225-864ffc8abcad",
+			"3354;3355;0;f;f;f;3354;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3355;3356;0;f;f;f;3355;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3356;3357;0;f;f;f;3356;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3357;3358;0;f;f;f;3357;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3356;3358;2;f;f;t;0;66cabf7a-45b4-4a65-a92a-95bc55172e98",
+			"3357;3358;2;f;f;t;0;60e74e17-bae7-47b4-9e17-915fe70254b0",
+			"3358;3359;0;f;f;f;3358;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3359;3360;0;f;f;f;3359;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3360;3361;0;f;f;f;3360;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3361;3362;0;f;f;f;3361;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3360;3362;2;f;f;t;0;2b12bea0-2216-4ba1-8362-5b90a2482835",
+			"3361;3362;2;f;f;t;0;f56c8736-bcb5-4e19-9b76-8f6faf5c93ae",
+			"3362;3363;0;f;f;f;3362;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3363;3364;0;f;f;f;3363;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3364;3365;0;f;f;f;3364;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3364;3365;2;f;f;t;0;50520e2d-c8ea-4d05-a537-6f5347b7f718",
+			"3365;3366;0;f;f;f;3365;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3366;3367;0;f;f;f;3366;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3366;3367;2;f;f;t;0;b639e278-33ce-4c09-8b20-769a5fe9a78a",
+			"3367;3368;0;f;f;f;3367;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3368;3369;0;f;f;f;3368;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3368;3369;2;f;f;t;0;d5e55fc7-1942-4e9c-a650-b8ee1405db7b",
+			"3369;3370;0;f;f;f;3369;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3370;3371;0;f;f;f;3370;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3370;3371;2;f;f;t;0;470096a6-a575-4491-a4a4-0589b6c329fc",
+			"3371;3372;0;f;f;f;3371;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3372;3373;0;f;f;f;3372;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3372;3373;2;f;f;t;0;6f6b5e42-6e73-45d6-b160-67d47f961b55",
+			"3373;3374;0;f;f;f;3373;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3374;3375;0;f;f;f;3374;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3375;3376;0;f;f;f;3375;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3374;3376;2;f;f;t;0;cca4aa18-668a-468d-8a08-f08aba4f72d3",
+			"3375;3376;2;f;f;t;0;c1ec19ba-dc96-4cf0-8dd7-c55ff3d9100d",
+			"3376;3377;0;f;f;f;3376;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3377;3378;0;f;f;f;3377;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3378;3379;0;f;f;f;3378;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3378;3379;2;f;f;t;0;015ed94e-c100-44f7-93f0-b8d45a2fc546",
+			"3379;3380;0;f;f;f;3379;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3380;3381;0;f;f;f;3380;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3380;3381;2;f;f;t;0;dbc239e4-9562-4c57-b3c0-7e09bbcf4264",
+			"3381;3382;0;f;f;f;3381;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3382;3383;0;f;f;f;3382;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3382;3383;2;f;f;t;0;bb266f01-64cf-4d7a-868c-99bc84bc4021",
+			"3383;3384;0;f;f;f;3383;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3384;3385;0;f;f;f;3384;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3384;3385;2;f;f;t;0;9eef3e00-8ed9-4021-8577-b2b4d68ab934",
+			"3385;3386;0;f;f;f;3385;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3386;3387;0;f;f;f;3386;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3386;3387;2;f;f;t;0;6c75cc15-572e-414d-ab10-370edc1a8318",
+			"3387;3388;0;f;f;f;3387;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3388;3389;0;f;f;f;3388;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3387;3389;2;f;f;t;0;22bdcde9-c3b9-4085-8bc9-a04508e9da89",
+			"3389;3390;0;f;f;f;3389;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3390;3391;0;f;f;f;3390;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3390;3391;2;f;f;t;0;2e0c1f2a-c18a-45a6-bff4-e67d91fccd24",
+			"3391;3392;0;f;f;f;3391;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3392;3393;0;f;f;f;3392;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3392;3393;2;f;f;t;0;d1370add-c568-4ecc-aadc-1913cf371876",
+			"3393;3394;0;f;f;f;3393;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3394;3395;0;f;f;f;3394;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3394;3395;2;f;f;t;0;b189d548-fbdf-4e21-b236-da26242bcb69",
+			"3395;3396;0;f;f;f;3395;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3396;3397;0;f;f;f;3396;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3396;3397;2;f;f;t;0;233531f0-ff0e-475c-9a09-dc650c8d9e16",
+			"3397;3398;0;f;f;f;3397;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3398;3399;0;f;f;f;3398;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3398;3399;2;f;f;t;0;a9d401f7-b5b9-44d1-8425-c0a0f5a1ba53",
+			"3399;3400;0;f;f;f;3399;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3400;3401;0;f;f;f;3400;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3400;3401;2;f;f;t;0;706989fb-c726-46c0-bdeb-00e2acfd9610",
+			"3401;3402;0;f;f;f;3401;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3402;3403;0;f;f;f;3402;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3402;3403;2;f;f;t;0;ddde8bb9-2bc8-473b-a06b-f32ccf897bb4",
+			"3403;3404;0;f;f;f;3403;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3404;3405;0;f;f;f;3404;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3404;3405;2;f;f;t;0;f8c3ae69-a74c-4db1-ac50-29f481da1483",
+			"3405;3406;0;f;f;f;3405;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3406;3407;0;f;f;f;3406;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3406;3407;2;f;f;t;0;ecb13f85-95aa-4312-9c84-d8383a733f58",
+			"3407;3408;0;f;f;f;3407;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3408;3409;0;f;f;f;3408;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3408;3409;2;f;f;t;0;2c98e07a-b061-4322-a033-eb04ce6dde6b",
+			"3409;3410;0;f;f;f;3409;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3410;3411;0;f;f;f;3410;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3410;3411;2;f;f;t;0;69ae94d9-97cf-4a60-b52d-46b26394dc58",
+			"3411;3412;0;f;f;f;3411;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3412;3413;0;f;f;f;3412;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3412;3413;2;f;f;t;0;363ccc2e-502c-46b7-a7f0-3dd9830dedd1",
+			"3413;3414;0;f;f;f;3413;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3414;3415;0;f;f;f;3414;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3414;3415;2;f;f;t;0;ba99feee-5819-4d14-ae27-447f3d831c97",
+			"3415;3416;0;f;f;f;3415;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3416;3417;0;f;f;f;3416;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3416;3417;2;f;f;t;0;5edc5568-62fa-4f55-a36b-2940d76c512a",
+			"3417;3418;0;f;f;f;3417;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3418;3419;0;f;f;f;3418;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3418;3419;2;f;f;t;0;c9da0bb6-71fd-4c49-95bf-706902357041",
+			"3419;3420;0;f;f;f;3419;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3420;3421;0;f;f;f;3420;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3420;3421;2;f;f;t;0;19e66842-4540-4a0d-9476-dce1b0baecd4",
+			"3421;3422;0;f;f;f;3421;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3422;3423;0;f;f;f;3422;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3422;3423;2;f;f;t;0;12e8f3a4-90ad-4f39-b618-3c6cded4fc3d",
+			"3423;3424;0;f;f;f;3423;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3424;3425;0;f;f;f;3424;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3424;3425;2;f;f;t;0;5c8eb0cb-deff-42bf-a09f-034c77ea4c72",
+			"3425;3426;0;f;f;f;3425;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3426;3427;0;f;f;f;3426;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3426;3427;2;f;f;t;0;9b05ba17-b65b-487a-9edd-6abaa32032c4",
+			"3427;3428;0;f;f;f;3427;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3428;3429;0;f;f;f;3428;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3428;3429;2;f;f;t;0;938bc526-1c64-4dc7-9b57-e0c6af86c24c",
+			"3429;3430;0;f;f;f;3429;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3430;3431;0;f;f;f;3430;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3430;3431;2;f;f;t;0;129d81d9-f5a3-4ae5-ad7a-0d06bb5695bb",
+			"3431;3432;0;f;f;f;3431;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3432;3433;0;f;f;f;3432;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3432;3433;2;f;f;t;0;9c781f41-7a3d-46f6-a929-49ebd72f0fe3",
+			"3433;3434;0;f;f;f;3433;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3434;3435;0;f;f;f;3434;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3434;3435;2;f;f;t;0;790bfc93-f6ee-4bbf-849e-eddd828c63ef",
+			"3435;3436;0;f;f;f;3435;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3436;3437;0;f;f;f;3436;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3436;3437;2;f;f;t;0;250fe01e-4009-4604-82f0-16ba368e22d2",
+			"3437;3438;0;f;f;f;3437;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3438;3439;0;f;f;f;3438;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3438;3439;2;f;f;t;0;e218d429-d268-4c20-9867-dffc660706ca",
+			"3439;3440;0;f;f;f;3439;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3440;3441;0;f;f;f;3440;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3440;3441;2;f;f;t;0;c529718b-0b79-4c05-bc64-b09c0694e754",
+			"3441;3442;0;f;f;f;3441;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3442;3443;0;f;f;f;3442;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3442;3443;2;f;f;t;0;d4fe83a3-538e-43ad-855e-e765bbedf28d",
+			"3443;3444;0;f;f;f;3443;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3444;3445;0;f;f;f;3444;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3444;3445;2;f;f;t;0;b6423d39-6fe4-4aff-bde2-4377d58eaa9a",
+			"3445;3446;0;f;f;f;3445;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3446;3447;0;f;f;f;3446;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3446;3447;2;f;f;t;0;d0785054-a6bc-4ffb-bdc3-2bd962736ce9",
+			"3447;3448;0;f;f;f;3447;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3448;3449;0;f;f;f;3448;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3448;3449;2;f;f;t;0;dc4be62d-649c-4f8d-92b4-a0a1c6ebe670",
+			"3449;3450;0;f;f;f;3449;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3450;3451;0;f;f;f;3450;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3450;3451;2;f;f;t;0;655bc9ee-b635-4b9b-a2bb-ec255f8216d8",
+			"3451;3452;0;f;f;f;3451;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3452;3453;0;f;f;f;3452;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3452;3453;2;f;f;t;0;a24e82ad-5a79-4da1-8411-8d49c4e60d68",
+			"3453;3454;0;f;f;f;3453;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3454;3455;0;f;f;f;3454;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3454;3455;2;f;f;t;0;81284f87-f633-4873-b9b1-91d8fec7f415",
+			"3455;3456;0;f;f;f;3455;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3456;3457;0;f;f;f;3456;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3456;3457;2;f;f;t;0;4bb88488-6777-4150-958d-5266f03eab31",
+			"3457;3458;0;f;f;f;3457;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3458;3459;0;f;f;f;3458;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3458;3459;2;f;f;t;0;70e9a291-4537-47a7-a853-f3bee0b3fe62",
+			"3459;3460;0;f;f;f;3459;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3460;3461;0;f;f;f;3460;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3460;3461;2;f;f;t;0;91077cfd-187c-4801-81ac-b306bd14998a",
+			"3461;3462;0;f;f;f;3461;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3462;3463;0;f;f;f;3462;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3462;3463;2;f;f;t;0;5d6b2265-3504-4cf4-ad00-69252d09820c",
+			"3463;3464;0;f;f;f;3463;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3464;3465;0;f;f;f;3464;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3464;3465;2;f;f;t;0;4db0eae1-4e28-4adf-933b-1ab9cf553eda",
+			"3465;3466;0;f;f;f;3465;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3466;3467;0;f;f;f;3466;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3466;3467;2;f;f;t;0;f03e53a6-ed8c-4ec1-ba9d-899b31ab4e0c",
+			"3467;3468;0;f;f;f;3467;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3468;3469;0;f;f;f;3468;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3468;3469;2;f;f;t;0;4273841f-ffdd-4d0f-b4ec-ae3c86f5aace",
+			"3469;3470;0;f;f;f;3469;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3470;3471;0;f;f;f;3470;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3470;3471;2;f;f;t;0;02ba6c06-1a07-49b9-a115-780b7548758a",
+			"3471;3472;0;f;f;f;3471;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3472;3473;0;f;f;f;3472;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3472;3473;2;f;f;t;0;a5e6cd38-dc5f-41b5-827e-b8ce0c549fd1",
+			"3473;3474;0;f;f;f;3473;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3474;3475;0;f;f;f;3474;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3474;3475;2;f;f;t;0;f046497b-93b5-4998-bf8f-f2eaa1a2a9e5",
+			"3475;3476;0;f;f;f;3475;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3476;3477;0;f;f;f;3476;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3476;3477;2;f;f;t;0;aa9dd01d-d607-4493-a045-daec0106d2e9",
+			"3477;3478;0;f;f;f;3477;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3478;3479;0;f;f;f;3478;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3478;3479;2;f;f;t;0;55bedbf1-2124-4aea-820a-0c7cfd45397e",
+			"3479;3480;0;f;f;f;3479;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3480;3481;0;f;f;f;3480;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3480;3481;2;f;f;t;0;751568b3-2b4e-4741-bc8d-82f1c3e8a3d7",
+			"3481;3482;0;f;f;f;3481;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3482;3483;0;f;f;f;3482;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3482;3483;2;f;f;t;0;cf4ee611-2b75-4bbd-8d8e-624e51d9a1b0",
+			"3483;3484;0;f;f;f;3483;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3484;3485;0;f;f;f;3484;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3484;3485;2;f;f;t;0;905831e5-0a96-4aec-9348-66b849c5b27d",
+			"3485;3486;0;f;f;f;3485;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3486;3487;0;f;f;f;3486;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3486;3487;2;f;f;t;0;183e012b-e1ac-4513-83a3-ef801ffac81f",
+			"3487;3488;0;f;f;f;3487;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3488;3489;0;f;f;f;3488;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3488;3489;2;f;f;t;0;6bc1e728-4ce3-410b-a745-9285d70f6a96",
+			"3489;3490;0;f;f;f;3489;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3490;3491;0;f;f;f;3490;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3490;3491;2;f;f;t;0;257e54ac-2f3c-4d44-85b4-9f4c4a228c6a",
+			"3491;3492;0;f;f;f;3491;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3492;3493;0;f;f;f;3492;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3492;3493;2;f;f;t;0;189cb98b-6b9b-4084-a5fe-2e42c497990f",
+			"3493;3494;0;f;f;f;3493;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3494;3495;0;f;f;f;3494;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3494;3495;2;f;f;t;0;2b57e209-1cb2-45ba-862b-a979114b6938",
+			"3495;3496;0;f;f;f;3495;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3496;3497;0;f;f;f;3496;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3496;3497;2;f;f;t;0;98e4f7fd-f290-4ed8-b3f6-c337a42bc4f2",
+			"3497;3498;0;f;f;f;3497;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3498;3499;0;f;f;f;3498;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3498;3499;2;f;f;t;0;92444102-81fd-44e5-a4bf-540308fb4802",
+			"3499;3500;0;f;f;f;3499;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3500;3501;0;f;f;f;3500;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3500;3501;2;f;f;t;0;81cb6952-9bed-4e15-ac95-e6d8426004ea",
+			"3501;3502;0;f;f;f;3501;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3502;3503;0;f;f;f;3502;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3502;3503;2;f;f;t;0;c9454449-15ea-4f1a-8268-3fdca78a9d77",
+			"3503;3504;0;f;f;f;3503;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3504;3505;0;f;f;f;3504;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3504;3505;2;f;f;t;0;5443de2f-5959-48c7-8b79-09d9d58ed8bf",
+			"3505;3506;0;f;f;f;3505;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3506;3507;0;f;f;f;3506;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3506;3507;2;f;f;t;0;7aaf3f6a-fb5d-41e1-8b51-7a0877bcfd3d",
+			"3507;3508;0;f;f;f;3507;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3508;3509;0;f;f;f;3508;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3508;3509;2;f;f;t;0;116a82a4-b692-48c5-a4f7-d817c58bae54",
+			"3509;3510;0;f;f;f;3509;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3510;3511;0;f;f;f;3510;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3509;3511;2;f;f;t;0;8f3ce937-f1c6-4b7a-b416-3b7ec8b12b06",
+			"3511;3512;0;f;f;f;3511;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3512;3513;0;f;f;f;3512;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3512;3513;2;f;f;t;0;1048342c-e468-431e-aae6-bd6a66b4a14b",
+			"3513;3514;0;f;f;f;3513;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3514;3515;0;f;f;f;3514;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3513;3515;2;f;f;t;0;ccd07fee-f608-401b-a750-1ece3e63ea8b",
+			"3515;3516;0;f;f;f;3515;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3516;3517;0;f;f;f;3516;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3517;3518;0;f;f;f;3517;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3516;3518;2;f;f;t;0;837a052b-04f8-4fe4-94d3-2973c498ad9a",
+			"3517;3518;2;f;f;t;0;827ca399-23bc-48d4-bb64-18ef19695599",
+			"3518;3519;0;f;f;f;3518;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3519;3520;0;f;f;f;3519;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3520;3521;0;f;f;f;3520;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3521;3522;0;f;f;f;3521;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3520;3522;2;f;f;t;0;49aa0fbd-eee9-4b5d-8133-3f5613ce8869",
+			"3521;3522;2;f;f;t;0;9cd105ff-b4cf-4906-8385-cf47229e4f3f",
+			"3522;3523;0;f;f;f;3522;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3523;3524;0;f;f;f;3523;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3524;3525;0;f;f;f;3524;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3524;3525;2;f;f;t;0;1529e919-c1b2-4d19-8bf3-f69db94bec59",
+			"3525;3526;0;f;f;f;3525;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3526;3527;0;f;f;f;3526;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3526;3527;2;f;f;t;0;c14c028f-0a7a-4b21-bf8a-08c0fb57ff49",
+			"3527;3528;0;f;f;f;3527;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3528;3529;0;f;f;f;3528;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3528;3529;2;f;f;t;0;258a9a8e-b0e8-4408-ab5a-25c80bf29677",
+			"3529;3530;0;f;f;f;3529;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3530;3531;0;f;f;f;3530;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3530;3531;2;f;f;t;0;ec7b1e94-88b0-4a88-84de-412c7f1457d1",
+			"3531;3532;0;f;f;f;3531;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3532;3533;0;f;f;f;3532;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3532;3533;2;f;f;t;0;e25b24b4-e1e7-4bf7-81d4-e4c7fc00aa16",
+			"3533;3534;0;f;f;f;3533;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3534;3535;0;f;f;f;3534;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3533;3535;2;f;f;t;0;171a7ccb-729e-412b-871e-05eab01dc842",
+			"3535;3536;0;f;f;f;3535;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3536;3537;0;f;f;f;3536;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3536;3537;2;f;f;t;0;0953855a-81f3-413f-8ccd-7c6d76e723f8",
+			"3537;3538;0;f;f;f;3537;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3538;3539;0;f;f;f;3538;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3537;3539;2;f;f;t;0;0f49577f-b2dd-4987-b290-9a375b7ff7bc",
+			"3539;3540;0;f;f;f;3539;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3540;3541;0;f;f;f;3540;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3540;3541;2;f;f;t;0;9d6778b4-b30a-4de6-9be1-f62c3867e0c9",
+			"3541;3542;0;f;f;f;3541;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3542;3543;0;f;f;f;3542;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3542;3543;2;f;f;t;0;a035f809-9c0c-4041-ac5c-65f5a5f00cf8",
+			"3543;3544;0;f;f;f;3543;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3544;3545;0;f;f;f;3544;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3544;3545;2;f;f;t;0;7da41b4a-ede3-482c-8d13-20b6afc175bf",
+			"3545;3546;0;f;f;f;3545;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3546;3547;0;f;f;f;3546;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3546;3547;2;f;f;t;0;49548a79-4b1a-4b19-a3aa-6fb55b9e777d",
+			"3547;3548;0;f;f;f;3547;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3548;3549;0;f;f;f;3548;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3548;3549;2;f;f;t;0;e6708b03-e9a8-49fd-af03-0c7f76f24c79",
+			"3549;3550;0;f;f;f;3549;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3550;3551;0;f;f;f;3550;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3550;3551;2;f;f;t;0;dde14670-0ad9-41fb-9e01-08975938a76b",
+			"3551;3552;0;f;f;f;3551;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3552;3553;0;f;f;f;3552;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3552;3553;2;f;f;t;0;11d30ce3-e482-459e-81ee-20f2651ffbb5",
+			"3553;3554;0;f;f;f;3553;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3554;3555;0;f;f;f;3554;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3554;3555;2;f;f;t;0;7acdedd9-5641-47ae-89b2-fa1b6fd757cd",
+			"3555;3556;0;f;f;f;3555;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3556;3557;0;f;f;f;3556;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3556;3557;2;f;f;t;0;dbb5cf13-232f-48f8-8178-bb9eed4ab538",
+			"3557;3558;0;f;f;f;3557;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3558;3559;0;f;f;f;3558;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3559;3560;0;f;f;f;3559;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3558;3560;2;f;f;t;0;17b928b5-68d4-4094-8eea-9ce47ecce5b1",
+			"3559;3560;2;f;f;t;0;6340e54a-84cf-49c7-b579-7ffced254c45",
+			"3560;3561;0;f;f;f;3560;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3561;3562;0;f;f;f;3561;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3562;3563;0;f;f;f;3562;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3563;3564;0;f;f;f;3563;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3562;3564;2;f;f;t;0;43dc5107-5e8b-41fc-8867-6542318f9047",
+			"3563;3564;2;f;f;t;0;29047860-21e9-4ce0-aac4-da4c4b0593e4",
+			"3564;3565;0;f;f;f;3564;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3565;3566;0;f;f;f;3565;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3566;3567;0;f;f;f;3566;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3566;3567;2;f;f;t;0;25561831-0008-4a6e-993c-3f4652279bb4",
+			"3567;3568;0;f;f;f;3567;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3568;3569;0;f;f;f;3568;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3568;3569;2;f;f;t;0;ce5240b1-041d-49d1-9b7b-940c5a8a0dba",
+			"3569;3570;0;f;f;f;3569;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3570;3571;0;f;f;f;3570;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3570;3571;2;f;f;t;0;a5f79724-2745-4703-8690-ca3df52898ce",
+			"3571;3572;0;f;f;f;3571;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3572;3573;0;f;f;f;3572;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3572;3573;2;f;f;t;0;a622a838-6272-4048-b1c2-0cb12697655b",
+			"3573;3574;0;f;f;f;3573;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3574;3575;0;f;f;f;3574;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3574;3575;2;f;f;t;0;927b1669-4f62-4ed1-b282-8df80a7ac7dd",
+			"3575;3576;0;f;f;f;3575;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3576;3577;0;f;f;f;3576;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3575;3577;2;f;f;t;0;0a92956c-e712-4354-a9b5-c3fdbbd71a49",
+			"3577;3578;0;f;f;f;3577;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3578;3579;0;f;f;f;3578;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3578;3579;2;f;f;t;0;594c85cb-46eb-4844-be58-823d3036f26d",
+			"3579;3580;0;f;f;f;3579;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3580;3581;0;f;f;f;3580;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3580;3581;2;f;f;t;0;5cc01d8a-bd32-458f-a39a-9b26d7a6cc4f",
+			"3581;3582;0;f;f;f;3581;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3582;3583;0;f;f;f;3582;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3582;3583;2;f;f;t;0;27c99b85-0fa8-4b20-acba-3ae0beb8f9e4",
+			"3583;3584;0;f;f;f;3583;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3584;3585;0;f;f;f;3584;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3584;3585;2;f;f;t;0;f91506f4-35d3-4d00-ad98-07bf1db58ab7",
+			"3585;3586;0;f;f;f;3585;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3586;3587;0;f;f;f;3586;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3586;3587;2;f;f;t;0;a0ebce6e-d1c2-4df6-96d9-85cfcb863e2a",
+			"3587;3588;0;f;f;f;3587;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3588;3589;0;f;f;f;3588;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3588;3589;2;f;f;t;0;8ab9813f-5d8c-41f4-97d3-7a15eda38bc9",
+			"3589;3590;0;f;f;f;3589;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3590;3591;0;f;f;f;3590;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3590;3591;2;f;f;t;0;9dc213a6-810d-4358-a62a-ae623d09f416",
+			"3591;3592;0;f;f;f;3591;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3592;3593;0;f;f;f;3592;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3592;3593;2;f;f;t;0;65e3336f-e2e9-47be-a718-790c033e8907",
+			"3593;3594;0;f;f;f;3593;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3594;3595;0;f;f;f;3594;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3594;3595;2;f;f;t;0;b4915a74-e195-4e2b-a444-e6a60679bfe9",
+			"3595;3596;0;f;f;f;3595;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3596;3597;0;f;f;f;3596;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3596;3597;2;f;f;t;0;4a9af21a-28a6-4f81-8b1a-c7a8ffc64d75",
+			"3597;3598;0;f;f;f;3597;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3598;3599;0;f;f;f;3598;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3598;3599;2;f;f;t;0;defdd800-3566-4398-a5c4-3d3603599ffe",
+			"3599;3600;0;f;f;f;3599;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3600;3601;0;f;f;f;3600;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3600;3601;2;f;f;t;0;52bedeaf-56c6-4d94-8a6f-f4097869be49",
+			"3601;3602;0;f;f;f;3601;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3602;3603;0;f;f;f;3602;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3602;3603;2;f;f;t;0;98f74db3-c676-416e-89c8-addfa876105f",
+			"3603;3604;0;f;f;f;3603;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3604;3605;0;f;f;f;3604;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3604;3605;2;f;f;t;0;22084a44-d192-4e39-b7a2-023c09b79326",
+			"3605;3606;0;f;f;f;3605;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3606;3607;0;f;f;f;3606;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3606;3607;2;f;f;t;0;27ccce08-ab9f-42a4-8fd5-1cdeca98aef6",
+			"3607;3608;0;f;f;f;3607;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3608;3609;0;f;f;f;3608;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3608;3609;2;f;f;t;0;60340d74-d787-4869-a668-4c6d45b43628",
+			"3609;3610;0;f;f;f;3609;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3610;3611;0;f;f;f;3610;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3609;3611;2;f;f;t;0;34132316-5b2a-4bf7-8b5d-4c6b12aafadc",
+			"3611;3612;0;f;f;f;3611;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3612;3613;0;f;f;f;3612;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3612;3613;2;f;f;t;0;cb885723-e543-4e68-a3cc-64dab2a2758a",
+			"3613;3614;0;f;f;f;3613;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3614;3615;0;f;f;f;3614;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3614;3615;2;f;f;t;0;dc39e77e-f5fe-4c2e-affb-f9de039c79ac",
+			"3615;3616;0;f;f;f;3615;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3616;3617;0;f;f;f;3616;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3616;3617;2;f;f;t;0;5a56e4a9-319c-4224-969e-6d94075c6b38",
+			"3617;3618;0;f;f;f;3617;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3618;3619;0;f;f;f;3618;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3618;3619;2;f;f;t;0;dcad618d-f82a-49f0-95ba-e48ea9371f72",
+			"3619;3620;0;f;f;f;3619;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3620;3621;0;f;f;f;3620;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3620;3621;2;f;f;t;0;99f159fb-b393-46db-8f2c-30f531f93a77",
+			"3621;3622;0;f;f;f;3621;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3622;3623;0;f;f;f;3622;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3622;3623;2;f;f;t;0;2e043fb9-13da-439c-a5e8-a0b7b830a9f5",
+			"3623;3624;0;f;f;f;3623;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3624;3625;0;f;f;f;3624;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3624;3625;2;f;f;t;0;75f195c7-96de-490b-b769-d08d6e94c2ab",
+			"3625;3626;0;f;f;f;3625;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3626;3627;0;f;f;f;3626;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3626;3627;2;f;f;t;0;c4ac825e-95b1-4b5c-bf25-4f4c6cefe8a4",
+			"3627;3628;0;f;f;f;3627;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3628;3629;0;f;f;f;3628;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3628;3629;2;f;f;t;0;f7fa3f80-b83f-46ab-9b3d-788a534180ab",
+			"3629;3630;0;f;f;f;3629;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3630;3631;0;f;f;f;3630;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3630;3631;2;f;f;t;0;14fbe572-bfa5-48b0-bb18-2e7860d1f5e1",
+			"3631;3632;0;f;f;f;3631;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3632;3633;0;f;f;f;3632;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3632;3633;2;f;f;t;0;fe9d9f51-5eba-424f-8a50-410204118af7",
+			"3633;3634;0;f;f;f;3633;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3634;3635;0;f;f;f;3634;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3634;3635;2;f;f;t;0;ceaaef5f-17f2-4672-8cec-f21c808adae8",
+			"3635;3636;0;f;f;f;3635;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3636;3637;0;f;f;f;3636;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3636;3637;2;f;f;t;0;586768fa-8522-43ae-8123-d95ff80c439a",
+			"3637;3638;0;f;f;f;3637;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3638;3639;0;f;f;f;3638;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3638;3639;2;f;f;t;0;2d21cf63-ea01-4374-ad37-2a3adde0290b",
+			"3639;3640;0;f;f;f;3639;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3640;3641;0;f;f;f;3640;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3640;3641;2;f;f;t;0;ce3bed0a-0ea3-4bfe-b2ef-8c57a03b7f0d",
+			"3641;3642;0;f;f;f;3641;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3642;3643;0;f;f;f;3642;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3642;3643;2;f;f;t;0;6dc3bfca-1886-4660-a85d-ab5d0c4647f0",
+			"3643;3644;0;f;f;f;3643;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3644;3645;0;f;f;f;3644;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3644;3645;2;f;f;t;0;52454089-2369-4fdc-8bc6-8b8c1c6dfdb4",
+			"3645;3646;0;f;f;f;3645;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3646;3647;0;f;f;f;3646;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3646;3647;2;f;f;t;0;6f4ec6b8-cc01-40ab-bcc6-6138a0cb45ad",
+			"3647;3648;0;f;f;f;3647;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3648;3649;0;f;f;f;3648;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3648;3649;2;f;f;t;0;91c24964-faba-4a9a-8001-eda382ba13a3",
+			"3649;3650;0;f;f;f;3649;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3650;3651;0;f;f;f;3650;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3649;3651;2;f;f;t;0;e9090439-aef1-4f8f-8783-9c4d372f9a18",
+			"3651;3652;0;f;f;f;3651;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3652;3653;0;f;f;f;3652;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3652;3653;2;f;f;t;0;0d4a25b2-58a1-4d6c-929d-098e6798025d",
+			"3653;3654;0;f;f;f;3653;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3654;3655;0;f;f;f;3654;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3653;3655;2;f;f;t;0;ed2abb67-8202-4e48-88bb-d776c13167cf",
+			"3655;3656;0;f;f;f;3655;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3656;3657;0;f;f;f;3656;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3656;3657;2;f;f;t;0;f31478f5-b845-4208-930a-a5c085732b70",
+			"3657;3658;0;f;f;f;3657;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3658;3659;0;f;f;f;3658;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3657;3659;2;f;f;t;0;38b401d9-5e56-477c-9456-abd51955636a",
+			"3659;3660;0;f;f;f;3659;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3660;3661;0;f;f;f;3660;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3660;3661;2;f;f;t;0;c28a3f86-84fb-49dc-841d-54c84dc61f17",
+			"3661;3662;0;f;f;f;3661;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3662;3663;0;f;f;f;3662;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3661;3663;2;f;f;t;0;90ee78a9-2304-4729-adf2-84cefa2c3bf7",
+			"3663;3664;0;f;f;f;3663;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3664;3665;0;f;f;f;3664;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3665;3666;0;f;f;f;3665;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3664;3666;2;f;f;t;0;5b25bae9-5d28-4c8b-bd33-d162ca5ae43c",
+			"3665;3666;2;f;f;t;0;3f35b302-c6ac-4bdf-9950-cb8387affca8",
+			"3666;3667;0;f;f;f;3666;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3667;3668;0;f;f;f;3667;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3668;3669;0;f;f;f;3668;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3669;3670;0;f;f;f;3669;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3668;3670;2;f;f;t;0;2d6ee2c9-f40c-42d1-864c-ccb779e9efa7",
+			"3669;3670;2;f;f;t;0;05c12160-ebd4-4e95-8a83-2650e464e923",
+			"3670;3671;0;f;f;f;3670;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3671;3672;0;f;f;f;3671;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3672;3673;0;f;f;f;3672;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3672;3673;2;f;f;t;0;b2be01ae-764d-45ec-8881-35caa033205e",
+			"3673;3674;0;f;f;f;3673;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3674;3675;0;f;f;f;3674;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3674;3675;2;f;f;t;0;1a2524be-526d-49a4-afe2-3d1dcb4b60b2",
+			"3675;3676;0;f;f;f;3675;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3676;3677;0;f;f;f;3676;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3676;3677;2;f;f;t;0;c2d18998-6ec6-490a-abd9-9e2c03d7c368",
+			"3677;3678;0;f;f;f;3677;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3678;3679;0;f;f;f;3678;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3678;3679;2;f;f;t;0;7cd617cd-0cf3-4e18-898b-825ca59eb289",
+			"3679;3680;0;f;f;f;3679;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3680;3681;0;f;f;f;3680;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3680;3681;2;f;f;t;0;17b86ffe-b6b9-422a-a0e0-7461d91667ce",
+			"3681;3682;0;f;f;f;3681;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3682;3683;0;f;f;f;3682;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3682;3683;2;f;f;t;0;0bc18a7e-6a91-4170-a764-e4011dac8106",
+			"3683;3684;0;f;f;f;3683;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3684;3685;0;f;f;f;3684;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3684;3685;2;f;f;t;0;5c0e6e67-e13e-4ecc-84ae-2e82e38e13be",
+			"3685;3686;0;f;f;f;3685;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3686;3687;0;f;f;f;3686;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3686;3687;2;f;f;t;0;28d5ced1-4c18-48dd-ac41-504886c06071",
+			"3687;3688;0;f;f;f;3687;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3688;3689;0;f;f;f;3688;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3688;3689;2;f;f;t;0;aad9e284-470f-4ac7-88f2-e310038fa526",
+			"3689;3690;0;f;f;f;3689;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3690;3691;0;f;f;f;3690;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3690;3691;2;f;f;t;0;a75a2a47-a0dd-4552-8540-14d1abefc84d",
+			"3691;3692;0;f;f;f;3691;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3692;3693;0;f;f;f;3692;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3692;3693;2;f;f;t;0;28f0c0d7-f92a-4b5c-a86d-259c84bbc515",
+			"3693;3694;0;f;f;f;3693;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3694;3695;0;f;f;f;3694;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3694;3695;2;f;f;t;0;d8c504d5-7190-44e7-90e9-b2dc2a2d082f",
+			"3695;3696;0;f;f;f;3695;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3696;3697;0;f;f;f;3696;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3696;3697;2;f;f;t;0;365ecdd8-274e-4c43-8e5b-5a8980d2f6a7",
+			"3697;3698;0;f;f;f;3697;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3698;3699;0;f;f;f;3698;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3698;3699;2;f;f;t;0;32078048-9d23-44e3-9e8f-d3fde4a15c73",
+			"3699;3700;0;f;f;f;3699;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3700;3701;0;f;f;f;3700;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3700;3701;2;f;f;t;0;15bb988f-e579-4217-bb23-93b730ab1a87",
+			"3701;3702;0;f;f;f;3701;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3702;3703;0;f;f;f;3702;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3702;3703;2;f;f;t;0;b95fab28-0cb2-418f-a83e-c5383925da71",
+			"3703;3704;0;f;f;f;3703;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3704;3705;0;f;f;f;3704;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3704;3705;2;f;f;t;0;c050d231-bdc2-4002-85af-10b93d89df98",
+			"3705;3706;0;f;f;f;3705;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3706;3707;0;f;f;f;3706;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3705;3707;2;f;f;t;0;cb9e7dbc-d08b-4367-b582-9ca72eb780dd",
+			"3707;3708;0;f;f;f;3707;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3708;3709;0;f;f;f;3708;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3708;3709;2;f;f;t;0;6ed7a2d8-1e69-4658-a8d4-21839b77e251",
+			"3709;3710;0;f;f;f;3709;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3710;3711;0;f;f;f;3710;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3709;3711;2;f;f;t;0;9b732cff-c005-415c-9835-3d2802311f8b",
+			"3711;3712;0;f;f;f;3711;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3712;3713;0;f;f;f;3712;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3712;3713;2;f;f;t;0;1086343b-31d3-4d09-8e87-6ce7a1bde7ca",
+			"3713;3714;0;f;f;f;3713;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3714;3715;0;f;f;f;3714;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3713;3715;2;f;f;t;0;ad4ca89c-2c81-45d7-a984-e7e81635b452",
+			"3715;3716;0;f;f;f;3715;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3716;3717;0;f;f;f;3716;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3716;3717;2;f;f;t;0;91145c30-47db-4bb7-837f-4ddbcfebc637",
+			"3717;3718;0;f;f;f;3717;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3718;3719;0;f;f;f;3718;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3717;3719;2;f;f;t;0;cbd49992-a934-463c-aa97-9cf5ccee366e",
+			"3719;3720;0;f;f;f;3719;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3720;3721;0;f;f;f;3720;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3720;3721;2;f;f;t;0;4144e0aa-16a8-4e27-93f9-8ddb13bd96de",
+			"3721;3722;0;f;f;f;3721;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3722;3723;0;f;f;f;3722;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3722;3723;2;f;f;t;0;40f1afe7-6fae-4f51-93df-89deafcf7184",
+			"3723;3724;0;f;f;f;3723;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3724;3725;0;f;f;f;3724;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3724;3725;2;f;f;t;0;b029d827-1945-4742-8ac2-43adeb63bf1c",
+			"3725;3726;0;f;f;f;3725;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3726;3727;0;f;f;f;3726;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3726;3727;2;f;f;t;0;032e31aa-8301-4ad0-8a65-6ffa0c0f26e6",
+			"3727;3728;0;f;f;f;3727;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3728;3729;0;f;f;f;3728;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3728;3729;2;f;f;t;0;ae311e33-e2a9-4f3b-b9b0-7db5bfc9beb0",
+			"3729;3730;0;f;f;f;3729;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3730;3731;0;f;f;f;3730;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3730;3731;2;f;f;t;0;1abfec37-7fa2-4b0a-b0fe-0c255c069346",
+			"3731;3732;0;f;f;f;3731;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3732;3733;0;f;f;f;3732;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3732;3733;2;f;f;t;0;5e54bcb9-ae56-414e-8b50-12a0cbc6569a",
+			"3733;3734;0;f;f;f;3733;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3734;3735;0;f;f;f;3734;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3734;3735;2;f;f;t;0;e4223ddb-925a-4795-bd85-cfc09c66653f",
+			"3735;3736;0;f;f;f;3735;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3736;3737;0;f;f;f;3736;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3736;3737;2;f;f;t;0;6f950eff-51ba-446d-bac0-6a0f64724332",
+			"3737;3738;0;f;f;f;3737;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3738;3739;0;f;f;f;3738;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3738;3739;2;f;f;t;0;b7c9a39a-3ac0-4800-8809-a7b55ee75c00",
+			"3739;3740;0;f;f;f;3739;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3740;3741;0;f;f;f;3740;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3740;3741;2;f;f;t;0;c3552aa2-1e11-4d91-a6bd-9154ac9f3f56",
+			"3741;3742;0;f;f;f;3741;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3742;3743;0;f;f;f;3742;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3741;3743;2;f;f;t;0;e68c6edb-e7ae-48ea-bfe7-06d5bbc6e5d7",
+			"3743;3744;0;f;f;f;3743;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3744;3745;0;f;f;f;3744;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3744;3745;2;f;f;t;0;9ccd8769-2314-45b3-b49f-eed58b702ab5",
+			"3745;3746;0;f;f;f;3745;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3746;3747;0;f;f;f;3746;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3746;3747;2;f;f;t;0;47587f1d-866b-4e03-9efa-36cdb6439041",
+			"3747;3748;0;f;f;f;3747;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3748;3749;0;f;f;f;3748;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3748;3749;2;f;f;t;0;53255f82-8b5d-4abe-ab9c-435601123670",
+			"3749;3750;0;f;f;f;3749;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3750;3751;0;f;f;f;3750;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3750;3751;2;f;f;t;0;b7897ec1-8769-4455-bd10-eb93f8b73524",
+			"3751;3752;0;f;f;f;3751;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3752;3753;0;f;f;f;3752;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3752;3753;2;f;f;t;0;2f91bd1b-7d6b-44dc-b43b-a36376636f98",
+			"3753;3754;0;f;f;f;3753;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3754;3755;0;f;f;f;3754;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3754;3755;2;f;f;t;0;b5c7280b-b9c6-4dd8-bd2e-e37b4987b3bc",
+			"3755;3756;0;f;f;f;3755;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3756;3757;0;f;f;f;3756;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3756;3757;2;f;f;t;0;85585b96-b5e5-4ee5-9a3d-e79896ad0565",
+			"3757;3758;0;f;f;f;3757;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3758;3759;0;f;f;f;3758;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3758;3759;2;f;f;t;0;409e873c-87e1-48a6-9485-e3764e9d54d6",
+			"3759;3760;0;f;f;f;3759;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3760;3761;0;f;f;f;3760;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3760;3761;2;f;f;t;0;3d5f5860-d3de-414c-af56-5410d6fbbdd3",
+			"3761;3762;0;f;f;f;3761;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3762;3763;0;f;f;f;3762;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3761;3763;2;f;f;t;0;8efa0d10-82a8-4994-9e18-e3949f97defd",
+			"3763;3764;0;f;f;f;3763;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3764;3765;0;f;f;f;3764;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3764;3765;2;f;f;t;0;eaf248b2-ac47-422a-b1d2-92cd48ebd31d",
+			"3765;3766;0;f;f;f;3765;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3766;3767;0;f;f;f;3766;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3766;3767;2;f;f;t;0;87b9ce9f-1af4-433f-bdb0-317b8247df89",
+			"3767;3768;0;f;f;f;3767;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3768;3769;0;f;f;f;3768;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3768;3769;2;f;f;t;0;51c5cda1-dc6f-4f09-a135-5d3a388930e0",
+			"3769;3770;0;f;f;f;3769;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3770;3771;0;f;f;f;3770;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3770;3771;2;f;f;t;0;46e75ae4-c640-4597-8a72-8d51c600a1ef",
+			"3771;3772;0;f;f;f;3771;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3772;3773;0;f;f;f;3772;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3772;3773;2;f;f;t;0;736a8a00-15f3-42b2-8495-729c20d00322",
+			"3773;3774;0;f;f;f;3773;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3774;3775;0;f;f;f;3774;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3774;3775;2;f;f;t;0;7f32ec33-bdae-487a-8bd5-de364ac4ed48",
+			"3775;3776;0;f;f;f;3775;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3776;3777;0;f;f;f;3776;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3776;3777;2;f;f;t;0;04573f31-1408-4eb7-bca6-7fe2a179d287",
+			"3777;3778;0;f;f;f;3777;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3778;3779;0;f;f;f;3778;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3778;3779;2;f;f;t;0;9340db80-51a4-42a7-8c28-289bac942188",
+			"3779;3780;0;f;f;f;3779;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3780;3781;0;f;f;f;3780;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3780;3781;2;f;f;t;0;cc96bc1a-3b66-4ed4-b1a0-693b6c8ee66f",
+			"3781;3782;0;f;f;f;3781;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3782;3783;0;f;f;f;3782;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3782;3783;2;f;f;t;0;c8a8aa46-2ab5-476a-b5bf-a4d6af2775a0",
+			"3783;3784;0;f;f;f;3783;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3784;3785;0;f;f;f;3784;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3784;3785;2;f;f;t;0;fccab7c4-883a-4fa8-b948-6b30a93c36bd",
+			"3785;3786;0;f;f;f;3785;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3786;3787;0;f;f;f;3786;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3786;3787;2;f;f;t;0;0528d540-b732-48c3-8da5-d5ee11279c28",
+			"3787;3788;0;f;f;f;3787;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3788;3789;0;f;f;f;3788;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3788;3789;2;f;f;t;0;6d9de6bb-1f26-44ba-bb57-a86986a1ba66",
+			"3789;3790;0;f;f;f;3789;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3790;3791;0;f;f;f;3790;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3790;3791;2;f;f;t;0;2b95671a-a0ab-4c63-b06e-51d1c98f0207",
+			"3791;3792;0;f;f;f;3791;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3792;3793;0;f;f;f;3792;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3792;3793;2;f;f;t;0;30817828-98ac-4e37-8c6e-931d695de8ac",
+			"3793;3794;0;f;f;f;3793;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3794;3795;0;f;f;f;3794;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3794;3795;2;f;f;t;0;d7df661d-c454-472f-8799-67b7c99279f4",
+			"3795;3796;0;f;f;f;3795;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3796;3797;0;f;f;f;3796;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3796;3797;2;f;f;t;0;6d8f80c3-210d-4aa8-8599-6ed5d56f317a",
+			"3797;3798;0;f;f;f;3797;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3798;3799;0;f;f;f;3798;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3798;3799;2;f;f;t;0;073d8fac-051e-484c-86c2-8574c256cd89",
+			"3799;3800;0;f;f;f;3799;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3800;3801;0;f;f;f;3800;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3800;3801;2;f;f;t;0;a13abe1d-018e-481c-b7e2-b72b5b70cb57",
+			"3801;3802;0;f;f;f;3801;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3802;3803;0;f;f;f;3802;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3802;3803;2;f;f;t;0;acf672b5-02aa-46bf-a865-f823618c9b3d",
+			"3803;3804;0;f;f;f;3803;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3804;3805;0;f;f;f;3804;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3804;3805;2;f;f;t;0;a69ed287-df0b-4143-b881-799fe5086295",
+			"3805;3806;0;f;f;f;3805;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3806;3807;0;f;f;f;3806;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3806;3807;2;f;f;t;0;3b522a30-5731-4f72-b0d7-ac66fb28a12a",
+			"3807;3808;0;f;f;f;3807;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3808;3809;0;f;f;f;3808;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3808;3809;2;f;f;t;0;d5c98503-f32b-4061-a186-af4bc7cf9ecf",
+			"3809;3810;0;f;f;f;3809;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3810;3811;0;f;f;f;3810;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3810;3811;2;f;f;t;0;008ed601-1d6d-46d0-9b40-371faff82627",
+			"3811;3812;0;f;f;f;3811;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3812;3813;0;f;f;f;3812;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3812;3813;2;f;f;t;0;1a22981d-8428-49b6-8171-33b1ba3c6685",
+			"3813;3814;0;f;f;f;3813;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3814;3815;0;f;f;f;3814;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3814;3815;2;f;f;t;0;9c0bda42-b341-4f9e-a99c-e82389dbceb7",
+			"3815;3816;0;f;f;f;3815;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3816;3817;0;f;f;f;3816;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3816;3817;2;f;f;t;0;6caf3322-300c-48b1-9762-c64902f4a698",
+			"3817;3818;0;f;f;f;3817;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3818;3819;0;f;f;f;3818;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3818;3819;2;f;f;t;0;22e3a417-e573-45ae-b221-d1091d73c4dd",
+			"3819;3820;0;f;f;f;3819;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3820;3821;0;f;f;f;3820;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3820;3821;2;f;f;t;0;f0806d06-780f-48b2-80a3-5a9e1ef5393d",
+			"3821;3822;0;f;f;f;3821;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3822;3823;0;f;f;f;3822;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3822;3823;2;f;f;t;0;6b192bef-62eb-4794-9f5b-929bc805a402",
+			"3823;3824;0;f;f;f;3823;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3824;3825;0;f;f;f;3824;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3824;3825;2;f;f;t;0;d35e8acd-02b2-4474-8c0e-2185e78ecdf0",
+			"3825;3826;0;f;f;f;3825;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3826;3827;0;f;f;f;3826;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3826;3827;2;f;f;t;0;0b45c701-6d71-4c65-87be-fa0481bdbff0",
+			"3827;3828;0;f;f;f;3827;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3828;3829;0;f;f;f;3828;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3828;3829;2;f;f;t;0;92d21e9e-6d74-4211-abd3-fa58310e1484",
+			"3829;3830;0;f;f;f;3829;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3830;3831;0;f;f;f;3830;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3830;3831;2;f;f;t;0;248e7961-9582-4f35-ad9a-f346c0792945",
+			"3831;3832;0;f;f;f;3831;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3832;3833;0;f;f;f;3832;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3832;3833;2;f;f;t;0;3b6739f1-2bdd-4bb5-b16c-5e27fcb2ef00",
+			"3833;3834;0;f;f;f;3833;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3834;3835;0;f;f;f;3834;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3834;3835;2;f;f;t;0;d1da48c3-829a-4aef-8dcd-21bcba179263",
+			"3835;3836;0;f;f;f;3835;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3836;3837;0;f;f;f;3836;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3836;3837;2;f;f;t;0;7b5d9f16-780f-44ce-addd-cc834d9ceeab",
+			"3837;3838;0;f;f;f;3837;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3838;3839;0;f;f;f;3838;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3838;3839;2;f;f;t;0;ac728a26-29f7-4c8a-956d-ab4f5aabea32",
+			"3839;3840;0;f;f;f;3839;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3840;3841;0;f;f;f;3840;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3840;3841;2;f;f;t;0;6afaf2bf-e001-4ed5-a4b5-7d409c5714e2",
+			"3841;3842;0;f;f;f;3841;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3842;3843;0;f;f;f;3842;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3842;3843;2;f;f;t;0;0b861b6c-07be-4d00-a9b5-e1ef6cc72c1a",
+			"3843;3844;0;f;f;f;3843;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3844;3845;0;f;f;f;3844;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3844;3845;2;f;f;t;0;29e0ff08-6013-48d0-9050-2b556d92e68a",
+			"3845;3846;0;f;f;f;3845;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3846;3847;0;f;f;f;3846;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3846;3847;2;f;f;t;0;f3fde750-e8a6-456d-83ba-f9545d908170",
+			"3847;3848;0;f;f;f;3847;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3848;3849;0;f;f;f;3848;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3848;3849;2;f;f;t;0;c48349b6-e40a-4dbb-b2e1-7ae0b0b1738a",
+			"3849;3850;0;f;f;f;3849;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3850;3851;0;f;f;f;3850;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3850;3851;2;f;f;t;0;cff42067-74d3-41ba-970c-6f7b57577478",
+			"3851;3852;0;f;f;f;3851;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3852;3853;0;f;f;f;3852;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3852;3853;2;f;f;t;0;40f4f655-8a40-4f89-84fc-e0f3dbacb3e2",
+			"3853;3854;0;f;f;f;3853;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3854;3855;0;f;f;f;3854;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3854;3855;2;f;f;t;0;6b5ab728-3d1c-4486-bf53-48c70ce86487",
+			"3855;3856;0;f;f;f;3855;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3856;3857;0;f;f;f;3856;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3856;3857;2;f;f;t;0;a84989d3-f334-44cb-ae2a-ea200b39de6b",
+			"3857;3858;0;f;f;f;3857;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3858;3859;0;f;f;f;3858;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3858;3859;2;f;f;t;0;7fd8ccd7-ae6f-48e5-9326-15067a668ca4",
+			"3859;3860;0;f;f;f;3859;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3860;3861;0;f;f;f;3860;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3860;3861;2;f;f;t;0;81d820c9-7a47-4904-975f-ab88ec88b315",
+			"3861;3862;0;f;f;f;3861;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3862;3863;0;f;f;f;3862;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3862;3863;2;f;f;t;0;8227ae66-1ede-4b2d-befe-ab674e6cf3e8",
+			"3863;3864;0;f;f;f;3863;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3864;3865;0;f;f;f;3864;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3864;3865;2;f;f;t;0;ffaeeeef-4556-4975-b50c-9b90ccc6da68",
+			"3865;3866;0;f;f;f;3865;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3866;3867;0;f;f;f;3866;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3866;3867;2;f;f;t;0;bc32ba0f-5fbd-44fa-bf6a-1ad87e071cd4",
+			"3867;3868;0;f;f;f;3867;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3868;3869;0;f;f;f;3868;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3868;3869;2;f;f;t;0;c86a9aed-5c97-4fb9-8fd7-02bfdfe784d4",
+			"3869;3870;0;f;f;f;3869;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3870;3871;0;f;f;f;3870;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3870;3871;2;f;f;t;0;1b727671-0332-4c32-a932-45978afcda89",
+			"3871;3872;0;f;f;f;3871;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3872;3873;0;f;f;f;3872;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3872;3873;2;f;f;t;0;2ef0bf17-aeb5-4569-8bef-f38af2c44142",
+			"3873;3874;0;f;f;f;3873;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3874;3875;0;f;f;f;3874;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3874;3875;2;f;f;t;0;95bfdbc5-bd05-4466-8ffc-4b3bdbb67902",
+			"3875;3876;0;f;f;f;3875;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3876;3877;0;f;f;f;3876;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3876;3877;2;f;f;t;0;215b2dbf-9a24-4a51-b354-d2387226a4c2",
+			"3877;3878;0;f;f;f;3877;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3878;3879;0;f;f;f;3878;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3877;3879;2;f;f;t;0;d1d8b7a0-6bcc-4a59-a734-73a3acaa21cf",
+			"3879;3880;0;f;f;f;3879;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3880;3881;0;f;f;f;3880;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3880;3881;2;f;f;t;0;75bdad05-b277-435f-85d2-f065e0fa7dd2",
+			"3881;3882;0;f;f;f;3881;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3882;3883;0;f;f;f;3882;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3881;3883;2;f;f;t;0;43de5aed-51df-4f30-a91e-6daba5fdd78a",
+			"3883;3884;0;f;f;f;3883;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3884;3885;0;f;f;f;3884;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3884;3885;2;f;f;t;0;00a2b50f-8993-431f-bcba-c0e6cf9cd6d8",
+			"3885;3886;0;f;f;f;3885;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3886;3887;0;f;f;f;3886;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3885;3887;2;f;f;t;0;162b4f6d-07cf-47f0-8cf3-28e48d337477",
+			"3887;3888;0;f;f;f;3887;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3888;3889;0;f;f;f;3888;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3888;3889;2;f;f;t;0;3357c03a-fa9f-4280-83e7-4122b6af80b2",
+			"3889;3890;0;f;f;f;3889;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3890;3891;0;f;f;f;3890;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3890;3891;2;f;f;t;0;4a9669d7-373b-4df5-a08b-8ec0d72a5520",
+			"3891;3892;0;f;f;f;3891;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3892;3893;0;f;f;f;3892;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3892;3893;2;f;f;t;0;92e1d40c-25b1-4cf7-8e7f-813628e90889",
+			"3893;3894;0;f;f;f;3893;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3894;3895;0;f;f;f;3894;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3893;3895;2;f;f;t;0;a36bcacc-fb67-4de4-99d3-8faf218d568b",
+			"3895;3896;0;f;f;f;3895;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3896;3897;0;f;f;f;3896;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3896;3897;2;f;f;t;0;4e1dca4c-dc64-4231-8983-37a8c68388cd",
+			"3897;3898;0;f;f;f;3897;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3898;3899;0;f;f;f;3898;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3897;3899;2;f;f;t;0;1d009e80-deb0-4ede-9b98-b9327dc021a7",
+			"3899;3900;0;f;f;f;3899;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3900;3901;0;f;f;f;3900;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3900;3901;2;f;f;t;0;f4dbeef8-d8a8-4625-93c1-74cb7112a4f1",
+			"3901;3902;0;f;f;f;3901;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3902;3903;0;f;f;f;3902;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3902;3903;2;f;f;t;0;ec8e7c95-e96e-479e-873f-82c3ed1d0c29",
+			"3903;3904;0;f;f;f;3903;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3904;3905;0;f;f;f;3904;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3904;3905;2;f;f;t;0;9e430c89-94e1-41e6-8a2a-35cec05d95fe",
+			"3905;3906;0;f;f;f;3905;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3906;3907;0;f;f;f;3906;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3906;3907;2;f;f;t;0;c643af6b-8ea0-490b-a973-8d36a6ecc850",
+			"3907;3908;0;f;f;f;3907;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3908;3909;0;f;f;f;3908;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3908;3909;2;f;f;t;0;d3895185-9c27-49cd-8cb1-aa756feee205",
+			"3909;3910;0;f;f;f;3909;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3910;3911;0;f;f;f;3910;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3910;3911;2;f;f;t;0;fa77173b-6168-4b0d-bac5-5c1e564a94c1",
+			"3911;3912;0;f;f;f;3911;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3912;3913;0;f;f;f;3912;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3912;3913;2;f;f;t;0;83e229a8-2f56-411a-b5df-9b29daa45802",
+			"3913;3914;0;f;f;f;3913;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3914;3915;0;f;f;f;3914;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3913;3915;2;f;f;t;0;9a80cc01-ac7b-40aa-bfa7-1e91aeb561ae",
+			"3915;3916;0;f;f;f;3915;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3916;3917;0;f;f;f;3916;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3916;3917;2;f;f;t;0;97341d7c-cf4c-4c38-9308-79d94dd04aee",
+			"3917;3918;0;f;f;f;3917;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3918;3919;0;f;f;f;3918;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3917;3919;2;f;f;t;0;c101a3fd-f924-4ce4-ae8a-8ee1734027ea",
+			"3919;3920;0;f;f;f;3919;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3920;3921;0;f;f;f;3920;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3921;3922;0;f;f;f;3921;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3920;3922;2;f;f;t;0;b4a558ce-d14f-41e4-9dca-580ab71fd5d2",
+			"3921;3922;2;f;f;t;0;746ec905-5a50-4ee1-8678-1be4325dd94f",
+			"3922;3923;0;f;f;f;3922;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3923;3924;0;f;f;f;3923;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3924;3925;0;f;f;f;3924;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3924;3925;2;f;f;t;0;54c09206-7013-4f59-9a6e-f950eae05222",
+			"3925;3926;0;f;f;f;3925;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3926;3927;0;f;f;f;3926;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3926;3927;2;f;f;t;0;e370fe65-a7e6-4e39-9e38-16677e58b57d",
+			"3927;3928;0;f;f;f;3927;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3928;3929;0;f;f;f;3928;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3928;3929;2;f;f;t;0;23c2e7c5-7691-4397-bf31-a70aba6ab1f8",
+			"3929;3930;0;f;f;f;3929;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3930;3931;0;f;f;f;3930;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3930;3931;2;f;f;t;0;ba81c9ae-354d-4ca7-bf29-2cef9f041824",
+			"3931;3932;0;f;f;f;3931;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3932;3933;0;f;f;f;3932;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3932;3933;2;f;f;t;0;e40c1849-5613-4cc1-9e37-1b33ede5d0cb",
+			"3933;3934;0;f;f;f;3933;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3934;3935;0;f;f;f;3934;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3934;3935;2;f;f;t;0;3ba608ba-0ff8-4154-a445-2e87f508559c",
+			"3935;3936;0;f;f;f;3935;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3936;3937;0;f;f;f;3936;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3936;3937;2;f;f;t;0;479584a3-c685-41ca-bfd4-c177bbc82584",
+			"3937;3938;0;f;f;f;3937;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3938;3939;0;f;f;f;3938;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3938;3939;2;f;f;t;0;58e9e287-9e62-44c7-af32-151627c08cc9",
+			"3939;3940;0;f;f;f;3939;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3940;3941;0;f;f;f;3940;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3940;3941;2;f;f;t;0;af9b1b7a-d4e5-4f24-baa4-d088c27c7237",
+			"3941;3942;0;f;f;f;3941;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3942;3943;0;f;f;f;3942;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3941;3943;2;f;f;t;0;426e1de9-303b-4668-bb74-73c50cda3dd1",
+			"3943;3944;0;f;f;f;3943;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3944;3945;0;f;f;f;3944;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3944;3945;2;f;f;t;0;72748bed-fda6-41bc-880d-71585a932c8f",
+			"3945;3946;0;f;f;f;3945;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3946;3947;0;f;f;f;3946;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3945;3947;2;f;f;t;0;c98fc8b9-eb5a-4d20-b983-839c5795ac5c",
+			"3947;3948;0;f;f;f;3947;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3948;3949;0;f;f;f;3948;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3948;3949;2;f;f;t;0;a6878274-842e-407a-b588-6ee1629aef83",
+			"3949;3950;0;f;f;f;3949;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3950;3951;0;f;f;f;3950;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3950;3951;2;f;f;t;0;5f5a84af-3cfc-45fe-811c-f52b5aac36b2",
+			"3951;3952;0;f;f;f;3951;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3952;3953;0;f;f;f;3952;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3952;3953;2;f;f;t;0;490fa6f2-5429-4414-92a6-8d8b6c26de15",
+			"3953;3954;0;f;f;f;3953;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3954;3955;0;f;f;f;3954;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3954;3955;2;f;f;t;0;5fffcda5-071c-44b9-817e-6a25a67f6731",
+			"3955;3956;0;f;f;f;3955;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3956;3957;0;f;f;f;3956;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3956;3957;2;f;f;t;0;bb246d16-d4ce-41c1-bd36-4dd870c72c72",
+			"3957;3958;0;f;f;f;3957;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3958;3959;0;f;f;f;3958;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3958;3959;2;f;f;t;0;9b7beb02-49e8-4247-a41b-a75ee0599b90",
+			"3959;3960;0;f;f;f;3959;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3960;3961;0;f;f;f;3960;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3960;3961;2;f;f;t;0;5eb66fe0-5f34-493c-a737-29366aa488f0",
+			"3961;3962;0;f;f;f;3961;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3962;3963;0;f;f;f;3962;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3963;3964;0;f;f;f;3963;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3962;3964;2;f;f;t;0;558fd4a5-7e7c-4045-8d48-12f023d14fc5",
+			"3963;3964;2;f;f;t;0;a658ed32-cbf3-42a9-8696-354443c6156a",
+			"3964;3965;0;f;f;f;3964;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3965;3966;0;f;f;f;3965;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3966;3967;0;f;f;f;3966;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3966;3967;2;f;f;t;0;7a82576d-e282-435d-aae8-ac23bb873666",
+			"3967;3968;0;f;f;f;3967;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3968;3969;0;f;f;f;3968;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3967;3969;2;f;f;t;0;83fe3683-8491-4225-854d-21ffe6b72515",
+			"3969;3970;0;f;f;f;3969;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3970;3971;0;f;f;f;3970;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3971;3972;0;f;f;f;3971;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3970;3972;2;f;f;t;0;7d34aa2c-c08d-4bfc-b670-412e61fd695c",
+			"3971;3972;2;f;f;t;0;3e6036bc-7268-450d-abb0-94eca86430a9",
+			"3972;3973;0;f;f;f;3972;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3973;3974;0;f;f;f;3973;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3974;3975;0;f;f;f;3974;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3974;3975;2;f;f;t;0;0dfe24a9-c62d-456c-9b3e-4ae79a1d7c54",
+			"3975;3976;0;f;f;f;3975;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3976;3977;0;f;f;f;3976;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3976;3977;2;f;f;t;0;910d50f2-3af2-4414-8894-6c64ba3dad69",
+			"3977;3978;0;f;f;f;3977;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3978;3979;0;f;f;f;3978;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3978;3979;2;f;f;t;0;212294f3-aa46-425f-bf6d-1f51f75542ee",
+			"3979;3980;0;f;f;f;3979;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3980;3981;0;f;f;f;3980;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3980;3981;2;f;f;t;0;38b72ec7-d51e-4a5a-a070-384102e4fc02",
+			"3981;3982;0;f;f;f;3981;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3982;3983;0;f;f;f;3982;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3982;3983;2;f;f;t;0;a355ee2f-9c5f-4903-9727-d378f9f83b88",
+			"3983;3984;0;f;f;f;3983;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3984;3985;0;f;f;f;3984;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3984;3985;2;f;f;t;0;e327c931-f7dc-4d67-8f48-eba046a2dbd7",
+			"3985;3986;0;f;f;f;3985;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3986;3987;0;f;f;f;3986;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3986;3987;2;f;f;t;0;493db4a5-cb3b-45f0-ab9f-aa04e7b71787",
+			"3987;3988;0;f;f;f;3987;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3988;3989;0;f;f;f;3988;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3988;3989;2;f;f;t;0;6a080dcd-f16b-442b-b69b-99480e8167b3",
+			"3989;3990;0;f;f;f;3989;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3990;3991;0;f;f;f;3990;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3990;3991;2;f;f;t;0;a93a2ffe-cff7-42b6-917a-5c226a16b708",
+			"3991;3992;0;f;f;f;3991;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3992;3993;0;f;f;f;3992;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3992;3993;2;f;f;t;0;158d2b8a-c1fc-452b-a60b-1a9feb65ac78",
+			"3993;3994;0;f;f;f;3993;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3994;3995;0;f;f;f;3994;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3994;3995;2;f;f;t;0;bb886316-b893-4ae4-bdea-768f80019c04",
+			"3995;3996;0;f;f;f;3995;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3996;3997;0;f;f;f;3996;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3996;3997;2;f;f;t;0;825ebf20-970a-4b9c-ad5a-a9dd88d42f3f",
+			"3997;3998;0;f;f;f;3997;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3998;3999;0;f;f;f;3998;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"3998;3999;2;f;f;t;0;5a078be7-a9e1-4436-8957-36799865cc64",
+			"3999;4000;0;f;f;f;3999;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4000;4001;0;f;f;f;4000;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4000;4001;2;f;f;t;0;8151b057-fac3-4d8f-85a6-bf91bcd4aa0f",
+			"4001;4002;0;f;f;f;4001;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4002;4003;0;f;f;f;4002;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4002;4003;2;f;f;t;0;e3b8c08e-12c1-4219-8c30-9e893432d91d",
+			"4003;4004;0;f;f;f;4003;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4004;4005;0;f;f;f;4004;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4004;4005;2;f;f;t;0;5531b566-d352-4c6a-a515-0492f5f88b5b",
+			"4005;4006;0;f;f;f;4005;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4006;4007;0;f;f;f;4006;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4006;4007;2;f;f;t;0;a98e9895-07cd-4fa9-8af5-e357345cee9b",
+			"4007;4008;0;f;f;f;4007;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4008;4009;0;f;f;f;4008;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4008;4009;2;f;f;t;0;e74bc934-2f9d-45bb-aeab-28b7347ad240",
+			"4009;4010;0;f;f;f;4009;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4010;4011;0;f;f;f;4010;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4010;4011;2;f;f;t;0;546ebf14-7fbb-4ce7-a0b2-ef9662bb6a6c",
+			"4011;4012;0;f;f;f;4011;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4012;4013;0;f;f;f;4012;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4012;4013;2;f;f;t;0;0e8a04a8-cf57-46de-a29a-e46895d9015b",
+			"4013;4014;0;f;f;f;4013;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4014;4015;0;f;f;f;4014;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4014;4015;2;f;f;t;0;bf14aa83-1a6a-422d-9c0e-3fa0d1e2a300",
+			"4015;4016;0;f;f;f;4015;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4016;4017;0;f;f;f;4016;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4016;4017;2;f;f;t;0;4ae0ff6d-0ac5-4264-bb36-f268fe80fc54",
+			"4017;4018;0;f;f;f;4017;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4018;4019;0;f;f;f;4018;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4019;4020;0;f;f;f;4019;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4018;4020;2;f;f;t;0;1a8e87d3-0c2b-4bc4-87c6-072ba7f5ba48",
+			"4019;4020;2;f;f;t;0;e91643a7-5dca-4e7b-9e18-ed1f55f441a7",
+			"4020;4021;0;f;f;f;4020;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4021;4022;0;f;f;f;4021;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4022;4023;0;f;f;f;4022;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4022;4023;2;f;f;t;0;09ca5aa6-9df3-418b-bd74-c0dcc8b85a11",
+			"4023;4024;0;f;f;f;4023;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4024;4025;0;f;f;f;4024;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4023;4025;2;f;f;t;0;6f1fd816-e1c8-4531-96fc-9e2976e6e86d",
+			"4025;4026;0;f;f;f;4025;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4026;4027;0;f;f;f;4026;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4026;4027;2;f;f;t;0;2a7acde9-aa86-496f-97a8-dc325f4bc567",
+			"4027;4028;0;f;f;f;4027;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4028;4029;0;f;f;f;4028;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4028;4029;2;f;f;t;0;faaf1cd7-ffe4-4420-b41e-5961999419ab",
+			"4029;4030;0;f;f;f;4029;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4030;4031;0;f;f;f;4030;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4030;4031;2;f;f;t;0;350e0eb1-9c67-40e0-a860-ceb099eea78c",
+			"4031;4032;0;f;f;f;4031;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4032;4033;0;f;f;f;4032;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4032;4033;2;f;f;t;0;994a0ec9-635c-401f-a1c5-79b623bf55a3",
+			"4033;4034;0;f;f;f;4033;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4034;4035;0;f;f;f;4034;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4034;4035;2;f;f;t;0;115728a6-cf76-42cb-83c6-9ae6baba3079",
+			"4035;4036;0;f;f;f;4035;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4036;4037;0;f;f;f;4036;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4036;4037;2;f;f;t;0;0070d43b-5742-4a5a-841b-28f7401b7295",
+			"4037;4038;0;f;f;f;4037;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4038;4039;0;f;f;f;4038;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4038;4039;2;f;f;t;0;21f0f613-48d5-4d27-9bbf-eabb742b58b1",
+			"4039;4040;0;f;f;f;4039;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4040;4041;0;f;f;f;4040;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4040;4041;2;f;f;t;0;ba6fefa5-1431-44c3-b22d-2e177eeaeaea",
+			"4041;4042;0;f;f;f;4041;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4042;4043;0;f;f;f;4042;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4042;4043;2;f;f;t;0;acee1dd0-f368-4088-8935-66103b16fe7d",
+			"4043;4044;0;f;f;f;4043;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4044;4045;0;f;f;f;4044;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4044;4045;2;f;f;t;0;332d6c87-993f-4d07-9444-5fa13027cc7a",
+			"4045;4046;0;f;f;f;4045;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4046;4047;0;f;f;f;4046;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4046;4047;2;f;f;t;0;c6eb25d0-a4e0-4768-9b4f-bbda174fffa2",
+			"4047;4048;0;f;f;f;4047;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4048;4049;0;f;f;f;4048;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4048;4049;2;f;f;t;0;f08ce0d1-813a-45dd-aa88-1196c30c5f40",
+			"4049;4050;0;f;f;f;4049;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4050;4051;0;f;f;f;4050;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4050;4051;2;f;f;t;0;1cadece8-a736-426e-ab1a-f5d00f423508",
+			"4051;4052;0;f;f;f;4051;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4052;4053;0;f;f;f;4052;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4052;4053;2;f;f;t;0;18a116af-cd4d-40a5-a7ae-806bdf16ab00",
+			"4053;4054;0;f;f;f;4053;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4054;4055;0;f;f;f;4054;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4054;4055;2;f;f;t;0;ee704104-7204-4416-84dc-b3fbe5d5c910",
+			"4055;4056;0;f;f;f;4055;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4056;4057;0;f;f;f;4056;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4056;4057;2;f;f;t;0;66699e75-8240-4d57-87f0-a15188511954",
+			"4057;4058;0;f;f;f;4057;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4058;4059;0;f;f;f;4058;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4058;4059;2;f;f;t;0;e37d6d49-6688-4f9d-aeb6-8f0064f2e31b",
+			"4059;4060;0;f;f;f;4059;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4060;4061;0;f;f;f;4060;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4060;4061;2;f;f;t;0;074b3e29-7018-4b15-a0f0-b95eb0542a4f",
+			"4061;4062;0;f;f;f;4061;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4062;4063;0;f;f;f;4062;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4062;4063;2;f;f;t;0;072a2477-6328-4206-9612-cb1265e18176",
+			"4063;4064;0;f;f;f;4063;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4064;4065;0;f;f;f;4064;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4064;4065;2;f;f;t;0;34da5b91-4641-464e-ab21-ae0972f9703e",
+			"4065;4066;0;f;f;f;4065;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4066;4067;0;f;f;f;4066;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4065;4067;2;f;f;t;0;a52f3c0c-795b-4dc5-93c1-d7ddbd94c892",
+			"4067;4068;0;f;f;f;4067;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4068;4069;0;f;f;f;4068;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4069;4070;0;f;f;f;4069;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4068;4070;2;f;f;t;0;540ed558-9dc8-4ff3-b1a6-441015ba28f7",
+			"4069;4070;2;f;f;t;0;2ddd7d2c-6192-42c2-a9ec-1f01356ff77f",
+			"4070;4071;0;f;f;f;4070;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4071;4072;0;f;f;f;4071;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4072;4073;0;f;f;f;4072;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4072;4073;2;f;f;t;0;f9ece21d-2e4b-4463-9882-e98711929c8a",
+			"4073;4074;0;f;f;f;4073;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4074;4075;0;f;f;f;4074;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4074;4075;2;f;f;t;0;693fd07e-c8da-440e-b095-b4fd4a6a4819",
+			"4075;4076;0;f;f;f;4075;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4076;4077;0;f;f;f;4076;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4076;4077;2;f;f;t;0;948b34b3-1d8d-4fbd-8347-ed7adac80f73",
+			"4077;4078;0;f;f;f;4077;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4078;4079;0;f;f;f;4078;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4078;4079;2;f;f;t;0;eeb7e41e-6e7a-4a7d-93e4-48e5339b6f6d",
+			"4079;4080;0;f;f;f;4079;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4080;4081;0;f;f;f;4080;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4080;4081;2;f;f;t;0;ec901d50-8760-47da-b9f9-842eaefde366",
+			"4081;4082;0;f;f;f;4081;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4082;4083;0;f;f;f;4082;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4082;4083;2;f;f;t;0;f9bc1694-6ec3-4916-89f6-f344e9de9de6",
+			"4083;4084;0;f;f;f;4083;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4084;4085;0;f;f;f;4084;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4084;4085;2;f;f;t;0;b40a7ed3-9fbd-499d-8168-dacca169d493",
+			"4085;4086;0;f;f;f;4085;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4086;4087;0;f;f;f;4086;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4086;4087;2;f;f;t;0;6b6bd430-e20b-4873-a07e-00a4300351fc",
+			"4087;4088;0;f;f;f;4087;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4088;4089;0;f;f;f;4088;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4088;4089;2;f;f;t;0;32f29c03-459c-4dbc-a23b-b618b4ee4846",
+			"4089;4090;0;f;f;f;4089;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4090;4091;0;f;f;f;4090;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4090;4091;2;f;f;t;0;f26db5ae-eb0d-4a9a-bfc4-975a42fb2191",
+			"4091;4092;0;f;f;f;4091;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4092;4093;0;f;f;f;4092;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4092;4093;2;f;f;t;0;e1781b5f-a956-404d-a4bf-4e754257179a",
+			"4093;4094;0;f;f;f;4093;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4094;4095;0;f;f;f;4094;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4095;4096;0;f;f;f;4095;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4094;4096;2;f;f;t;0;7a899668-2f92-4e5c-9c3e-e36d64c1dddc",
+			"4095;4096;2;f;f;t;0;425430cf-49a2-4e96-85da-6b5704e0a0e6",
+			"4096;4097;0;f;f;f;4096;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4097;4098;0;f;f;f;4097;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4098;4099;0;f;f;f;4098;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4098;4099;2;f;f;t;0;519ffa36-aa7b-47b4-af07-6f47af70a020",
+			"4099;4100;0;f;f;f;4099;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4100;4101;0;f;f;f;4100;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4099;4101;2;f;f;t;0;d145ab8a-f442-4eff-859d-0b6f4a83f839",
+			"4101;4102;0;f;f;f;4101;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4102;4103;0;f;f;f;4102;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4102;4103;2;f;f;t;0;1be56c99-177f-4730-8d3f-f9d0eee372d4",
+			"4103;4104;0;f;f;f;4103;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4104;4105;0;f;f;f;4104;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4104;4105;2;f;f;t;0;9f4eaa8d-61be-44a5-9f9d-bec1596e2880",
+			"4105;4106;0;f;f;f;4105;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4106;4107;0;f;f;f;4106;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4106;4107;2;f;f;t;0;73956398-0ff4-4a02-83e1-c0b343837ff8",
+			"4107;4108;0;f;f;f;4107;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4108;4109;0;f;f;f;4108;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4108;4109;2;f;f;t;0;0b941ad5-4a8c-47de-94aa-1a860afe7d14",
+			"4109;4110;0;f;f;f;4109;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4110;4111;0;f;f;f;4110;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4110;4111;2;f;f;t;0;1cf2ea81-2fb9-4382-a6ae-67a73bf86467",
+			"4111;4112;0;f;f;f;4111;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4112;4113;0;f;f;f;4112;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4112;4113;2;f;f;t;0;5ad7002d-0c15-4c11-9da3-e3f1deaf386a",
+			"4113;4114;0;f;f;f;4113;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4114;4115;0;f;f;f;4114;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4114;4115;2;f;f;t;0;5d627968-9055-4cfe-86b1-c51089ce2e9a",
+			"4115;4116;0;f;f;f;4115;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4116;4117;0;f;f;f;4116;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4116;4117;2;f;f;t;0;c926c348-2a51-4574-b66c-6c67bed41fa0",
+			"4117;4118;0;f;f;f;4117;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4118;4119;0;f;f;f;4118;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4118;4119;2;f;f;t;0;0a46018e-fab7-4cc4-a18e-932759183288",
+			"4119;4120;0;f;f;f;4119;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4120;4121;0;f;f;f;4120;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4120;4121;2;f;f;t;0;0b597bb3-09ad-4321-afc5-a61ee566f8a6",
+			"4121;4122;0;f;f;f;4121;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4122;4123;0;f;f;f;4122;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4122;4123;2;f;f;t;0;a5b67094-b700-45ee-aab3-95812ac57e38",
+			"4123;4124;0;f;f;f;4123;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4124;4125;0;f;f;f;4124;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4124;4125;2;f;f;t;0;1a8ecfa5-1680-4fa6-8dd4-03e4f4b001d1",
+			"4125;4126;0;f;f;f;4125;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4126;4127;0;f;f;f;4126;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4126;4127;2;f;f;t;0;e281210c-876f-4d97-af2d-d569e621d6e6",
+			"4127;4128;0;f;f;f;4127;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4128;4129;0;f;f;f;4128;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4128;4129;2;f;f;t;0;69ae1dc5-ddc3-49e2-b28c-c7b7029ff374",
+			"4129;4130;0;f;f;f;4129;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4130;4131;0;f;f;f;4130;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4129;4131;2;f;f;t;0;b5ca0fef-983b-4212-9934-54b7e94c6569",
+			"4131;4132;0;f;f;f;4131;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4132;4133;0;f;f;f;4132;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4132;4133;2;f;f;t;0;940ebfc6-afb0-43af-b6aa-8aca7534ec84",
+			"4133;4134;0;f;f;f;4133;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4134;4135;0;f;f;f;4134;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4133;4135;2;f;f;t;0;e657f6f4-bed0-461d-a206-9e7f4f2e942a",
+			"4135;4136;0;f;f;f;4135;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4136;4137;0;f;f;f;4136;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4136;4137;2;f;f;t;0;e613a421-fd3c-4746-9d4b-e9d93974e31a",
+			"4137;4138;0;f;f;f;4137;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4138;4139;0;f;f;f;4138;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4137;4139;2;f;f;t;0;75b873a9-222e-4b94-b6bf-bc989f3ad0a1",
+			"4139;4140;0;f;f;f;4139;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4140;4141;0;f;f;f;4140;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4140;4141;2;f;f;t;0;be2810e4-73d0-4286-a2f4-1baced3647b0",
+			"4141;4142;0;f;f;f;4141;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4142;4143;0;f;f;f;4142;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4142;4143;2;f;f;t;0;b7157871-30c6-4ce6-9d3f-0bab272cc4f7",
+			"4143;4144;0;f;f;f;4143;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4144;4145;0;f;f;f;4144;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4144;4145;2;f;f;t;0;55fa6b66-d06c-4351-8abd-77d523faaa2c",
+			"4145;4146;0;f;f;f;4145;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4146;4147;0;f;f;f;4146;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4146;4147;2;f;f;t;0;c34ced7d-a468-4250-9157-286cfb6578ae",
+			"4147;4148;0;f;f;f;4147;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4148;4149;0;f;f;f;4148;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4148;4149;2;f;f;t;0;6cae0d4e-f0f3-425e-b555-6203289cdb3c",
+			"4149;4150;0;f;f;f;4149;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4150;4151;0;f;f;f;4150;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4150;4151;2;f;f;t;0;9cce8b20-7604-46d6-ac4b-fef2c27f995f",
+			"4151;4152;0;f;f;f;4151;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4152;4153;0;f;f;f;4152;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4151;4153;2;f;f;t;0;f0dab194-4c23-4396-ab23-c1f2074f3f43",
+			"4153;4154;0;f;f;f;4153;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4154;4155;0;f;f;f;4154;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4154;4155;2;f;f;t;0;956ae65d-2826-4ae6-a141-41ab0d6ba567",
+			"4155;4156;0;f;f;f;4155;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4156;4157;0;f;f;f;4156;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4155;4157;2;f;f;t;0;e869debe-40da-4826-835d-a1e744bc8572",
+			"4157;4158;0;f;f;f;4157;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4158;4159;0;f;f;f;4158;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4158;4159;2;f;f;t;0;2d6a939e-b089-4805-a8ee-889e775b801a",
+			"4159;4160;0;f;f;f;4159;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4160;4161;0;f;f;f;4160;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4160;4161;2;f;f;t;0;a879e30b-1728-41f3-bd6c-201d951ba5d9",
+			"4161;4162;0;f;f;f;4161;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4162;4163;0;f;f;f;4162;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4163;4164;0;f;f;f;4163;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4162;4164;2;f;f;t;0;0054e4cb-c026-4b27-b0bf-1557f223780a",
+			"4164;4165;0;f;f;f;4164;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4163;4165;2;f;f;t;0;f16bf07a-50a5-4025-80be-b94f51e3a0bd",
+			"4165;4166;0;f;f;f;4165;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4166;4167;0;f;f;f;4166;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4166;4167;2;f;f;t;0;464cadf1-3aa7-4ffd-90dc-0e5a079495c8",
+			"4167;4168;0;f;f;f;4167;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4168;4169;0;f;f;f;4168;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4168;4169;2;f;f;t;0;477f7e10-c4c0-4438-a768-d75324479da2",
+			"4169;4170;0;f;f;f;4169;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4170;4171;0;f;f;f;4170;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4171;4172;0;f;f;f;4171;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4170;4172;2;f;f;t;0;a32e615a-e3a5-4fff-bd54-a267ddc3538c",
+			"4171;4172;2;f;f;t;0;f143b584-dc57-48b6-9c8c-b33e3ed6c34d",
+			"4172;4173;0;f;f;f;4172;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4173;4174;0;f;f;f;4173;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4174;4175;0;f;f;f;4174;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4174;4175;2;f;f;t;0;8b09a096-a2cc-452c-9743-02824f81077c",
+			"4175;4176;0;f;f;f;4175;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4176;4177;0;f;f;f;4176;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4176;4177;2;f;f;t;0;7dbf5e34-9cd0-4be5-98c8-3a4871f47e94",
+			"4177;4178;0;f;f;f;4177;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4178;4179;0;f;f;f;4178;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4178;4179;2;f;f;t;0;8ab69787-8f90-4142-895d-e4da49ec6617",
+			"4179;4180;0;f;f;f;4179;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4180;4181;0;f;f;f;4180;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4179;4181;2;f;f;t;0;aa745d28-ce4c-4fef-a262-332b57267075",
+			"4181;4182;0;f;f;f;4181;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4182;4183;0;f;f;f;4182;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4182;4183;2;f;f;t;0;f1fa045d-d26c-409e-9a28-ad920d7a0126",
+			"4183;4184;0;f;f;f;4183;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4184;4185;0;f;f;f;4184;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4183;4185;2;f;f;t;0;a7b5c98e-50b5-49f9-b183-1fa6f4fe3232",
+			"4185;4186;0;f;f;f;4185;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4186;4187;0;f;f;f;4186;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4186;4187;2;f;f;t;0;89e1e522-7c88-4fa9-8130-c3d9fb1d82d8",
+			"4187;4188;0;f;f;f;4187;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4188;4189;0;f;f;f;4188;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4187;4189;2;f;f;t;0;fc09c966-480c-42ad-a2c8-2098fc3518af",
+			"4189;4190;0;f;f;f;4189;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4190;4191;0;f;f;f;4190;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4190;4191;2;f;f;t;0;c87cd0cb-2554-40f8-9f9d-077ba3934750",
+			"4191;4192;0;f;f;f;4191;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4192;4193;0;f;f;f;4192;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4192;4193;2;f;f;t;0;5a9aecd2-8d04-4965-a077-d50cb518a58a",
+			"4193;4194;0;f;f;f;4193;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4194;4195;0;f;f;f;4194;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4194;4195;2;f;f;t;0;f698144c-e909-4672-9841-97b6ade9a991",
+			"4195;4196;0;f;f;f;4195;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4196;4197;0;f;f;f;4196;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4196;4197;2;f;f;t;0;6d853fa7-832a-4162-a63d-56bd84b21a55",
+			"4197;4198;0;f;f;f;4197;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4198;4199;0;f;f;f;4198;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4198;4199;2;f;f;t;0;03687f94-ae08-4203-bffd-78dbcd3ff022",
+			"4199;4200;0;f;f;f;4199;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4200;4201;0;f;f;f;4200;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4200;4201;2;f;f;t;0;1967df2b-faf5-4f88-84fc-86b588e71e9c",
+			"4201;4202;0;f;f;f;4201;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4202;4203;0;f;f;f;4202;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4202;4203;2;f;f;t;0;c0010106-968d-48d6-8614-706e9d9e45df",
+			"4203;4204;0;f;f;f;4203;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4204;4205;0;f;f;f;4204;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4204;4205;2;f;f;t;0;643caaeb-5600-4447-8975-5de1d3a76076",
+			"4205;4206;0;f;f;f;4205;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4206;4207;0;f;f;f;4206;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4206;4207;2;f;f;t;0;f188752b-5b44-40b4-9101-381b8084160b",
+			"4207;4208;0;f;f;f;4207;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4208;4209;0;f;f;f;4208;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4208;4209;2;f;f;t;0;170705bc-b8a4-4cf4-b208-d0c8145487b3",
+			"4209;4210;0;f;f;f;4209;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4210;4211;0;f;f;f;4210;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4210;4211;2;f;f;t;0;63b9ea74-1322-4b22-8bbc-59ae352e17af",
+			"4211;4212;0;f;f;f;4211;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4212;4213;0;f;f;f;4212;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4212;4213;2;f;f;t;0;71ca2bc3-fad6-4cda-8c87-80b4bc554f4f",
+			"4213;4214;0;f;f;f;4213;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4214;4215;0;f;f;f;4214;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4214;4215;2;f;f;t;0;e93c818e-b963-43f5-a1a0-2328420aef6e",
+			"4215;4216;0;f;f;f;4215;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4216;4217;0;f;f;f;4216;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4216;4217;2;f;f;t;0;6a468114-4e8e-4f18-9ef6-6ba417b0aa96",
+			"4217;4218;0;f;f;f;4217;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4218;4219;0;f;f;f;4218;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4218;4219;2;f;f;t;0;bd4dd879-9e00-4ab8-af8a-939918d59970",
+			"4219;4220;0;f;f;f;4219;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4220;4221;0;f;f;f;4220;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4220;4221;2;f;f;t;0;93e326f6-75dc-4c7d-832b-c8a4afa1f7d3",
+			"4221;4222;0;f;f;f;4221;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4222;4223;0;f;f;f;4222;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4222;4223;2;f;f;t;0;36f29146-b5fb-4df7-9d91-d57ba69e6c9d",
+			"4223;4224;0;f;f;f;4223;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4224;4225;0;f;f;f;4224;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4224;4225;2;f;f;t;0;137c4c79-55cf-45ca-9658-c2cc4de53b19",
+			"4225;4226;0;f;f;f;4225;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4226;4227;0;f;f;f;4226;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4226;4227;2;f;f;t;0;cd8fa51d-4661-473b-87e6-5d584886de4b",
+			"4227;4228;0;f;f;f;4227;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4228;4229;0;f;f;f;4228;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4228;4229;2;f;f;t;0;5d5276ba-bded-4582-98a7-591aea00bc2e",
+			"4229;4230;0;f;f;f;4229;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4230;4231;0;f;f;f;4230;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4230;4231;2;f;f;t;0;6df53d14-8c93-4609-8c51-9f4693a4c54d",
+			"4231;4232;0;f;f;f;4231;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4232;4233;0;f;f;f;4232;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4232;4233;2;f;f;t;0;70e0456d-e80c-4395-be28-a5f62b1ef32d",
+			"4233;4234;0;f;f;f;4233;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4234;4235;0;f;f;f;4234;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4234;4235;2;f;f;t;0;dc72e4ec-dc4a-4a99-b2b4-44ab5f0385e5",
+			"4235;4236;0;f;f;f;4235;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4236;4237;0;f;f;f;4236;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4236;4237;2;f;f;t;0;4ba76d8c-af1b-45b7-8375-1123f55885ac",
+			"4237;4238;0;f;f;f;4237;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4238;4239;0;f;f;f;4238;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4238;4239;2;f;f;t;0;5af7a413-8995-4c70-bd97-0aab706f94d1",
+			"4239;4240;0;f;f;f;4239;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4240;4241;0;f;f;f;4240;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4240;4241;2;f;f;t;0;d26be43b-e362-4351-aa1a-da36260a0546",
+			"4241;4242;0;f;f;f;4241;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4242;4243;0;f;f;f;4242;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4242;4243;2;f;f;t;0;ab96a349-e1d2-4b88-9374-976a5de8ccc5",
+			"4243;4244;0;f;f;f;4243;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4244;4245;0;f;f;f;4244;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4244;4245;2;f;f;t;0;d8c8e5b1-87c1-4b1c-b9f8-2d032a72df57",
+			"4245;4246;0;f;f;f;4245;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4246;4247;0;f;f;f;4246;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4246;4247;2;f;f;t;0;ea909d1e-8f44-4dbe-ba53-6bb97371fcc3",
+			"4247;4248;0;f;f;f;4247;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4248;4249;0;f;f;f;4248;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4248;4249;2;f;f;t;0;2c300421-9210-41ac-9de3-bfdd39b4efed",
+			"4249;4250;0;f;f;f;4249;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4250;4251;0;f;f;f;4250;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4250;4251;2;f;f;t;0;39030fae-7204-4a8e-81a3-c724e399da53",
+			"4251;4252;0;f;f;f;4251;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4252;4253;0;f;f;f;4252;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4252;4253;2;f;f;t;0;e17f009b-629b-46bf-ad12-3df66bd2c520",
+			"4253;4254;0;f;f;f;4253;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4254;4255;0;f;f;f;4254;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4254;4255;2;f;f;t;0;347f1414-cab7-4a9a-8631-3e906610ea92",
+			"4255;4256;0;f;f;f;4255;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4256;4257;0;f;f;f;4256;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4256;4257;2;f;f;t;0;95122888-1027-48c5-858d-845a17a020f4",
+			"4257;4258;0;f;f;f;4257;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4258;4259;0;f;f;f;4258;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4258;4259;2;f;f;t;0;d25bb0ef-0192-4433-abd6-1d50d7c6e5d2",
+			"4259;4260;0;f;f;f;4259;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4260;4261;0;f;f;f;4260;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4260;4261;2;f;f;t;0;af293601-4047-44e7-8fed-037201ad8840",
+			"4261;4262;0;f;f;f;4261;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4262;4263;0;f;f;f;4262;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4262;4263;2;f;f;t;0;8695f732-ab03-480e-93ff-4979e9f0216a",
+			"4263;4264;0;f;f;f;4263;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4264;4265;0;f;f;f;4264;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4264;4265;2;f;f;t;0;47ffc1a3-35c9-4192-bb39-be758b011ced",
+			"4265;4266;0;f;f;f;4265;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4266;4267;0;f;f;f;4266;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4266;4267;2;f;f;t;0;e0bd0f4d-05e4-4bdb-94c9-5111fd588756",
+			"4267;4268;0;f;f;f;4267;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4268;4269;0;f;f;f;4268;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4268;4269;2;f;f;t;0;26d33485-2cf1-4285-8466-0ca26ee986be",
+			"4269;4270;0;f;f;f;4269;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4270;4271;0;f;f;f;4270;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4270;4271;2;f;f;t;0;4baa7825-be48-4876-8616-8dff9402c411",
+			"4271;4272;0;f;f;f;4271;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4272;4273;0;f;f;f;4272;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4272;4273;2;f;f;t;0;914436e9-44e1-4fb1-8da5-ea09dee80aad",
+			"4273;4274;0;f;f;f;4273;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4274;4275;0;f;f;f;4274;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4274;4275;2;f;f;t;0;9f0d819c-3c33-49d4-bb09-fa9c09f83984",
+			"4275;4276;0;f;f;f;4275;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4276;4277;0;f;f;f;4276;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4276;4277;2;f;f;t;0;41320f26-5bd2-4f2b-84b1-f20b6a8ff794",
+			"4277;4278;0;f;f;f;4277;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4278;4279;0;f;f;f;4278;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4278;4279;2;f;f;t;0;035c4230-d71d-45c6-8140-4737588dbaf6",
+			"4279;4280;0;f;f;f;4279;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4280;4281;0;f;f;f;4280;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4280;4281;2;f;f;t;0;b9866b49-89f5-4499-9d06-e970125e41eb",
+			"4281;4282;0;f;f;f;4281;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4282;4283;0;f;f;f;4282;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4282;4283;2;f;f;t;0;bcf42dab-3c77-4c08-a8a4-a9c726341672",
+			"4283;4284;0;f;f;f;4283;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4284;4285;0;f;f;f;4284;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4284;4285;2;f;f;t;0;53231bf3-5348-4871-a04f-954c6a9a7da7",
+			"4285;4286;0;f;f;f;4285;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4286;4287;0;f;f;f;4286;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4286;4287;2;f;f;t;0;91aa4915-15a8-4129-9604-00bf64ee62bb",
+			"4287;4288;0;f;f;f;4287;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4288;4289;0;f;f;f;4288;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4289;4290;0;f;f;f;4289;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4288;4290;2;f;f;t;0;17af430a-38d0-4528-a1cb-0d1d60c2b29c",
+			"4289;4290;2;f;f;t;0;fca76499-9f10-476f-a7cb-e3cd66dfded8",
+			"4290;4291;0;f;f;f;4290;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4291;4292;0;f;f;f;4291;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4292;4293;0;f;f;f;4292;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4292;4293;2;f;f;t;0;c5e13de5-76a1-4441-b326-b8092e4479c8",
+			"4293;4294;0;f;f;f;4293;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4294;4295;0;f;f;f;4294;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4294;4295;2;f;f;t;0;94f5a09c-5c38-4852-ae04-f655f2c329e4",
+			"4295;4296;0;f;f;f;4295;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4296;4297;0;f;f;f;4296;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4296;4297;2;f;f;t;0;99eb8819-3e50-4aa5-9c2a-015c86db4ad1",
+			"4297;4298;0;f;f;f;4297;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4298;4299;0;f;f;f;4298;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4298;4299;2;f;f;t;0;f28ec309-21d4-4ccb-800c-edbde5d3697a",
+			"4299;4300;0;f;f;f;4299;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4300;4301;0;f;f;f;4300;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4300;4301;2;f;f;t;0;6e0d9120-33a0-414c-b637-bed9bcdd6e4a",
+			"4301;4302;0;f;f;f;4301;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4302;4303;0;f;f;f;4302;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4302;4303;2;f;f;t;0;200a897d-95eb-4ada-8210-02ce5a263015",
+			"4303;4304;0;f;f;f;4303;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4304;4305;0;f;f;f;4304;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4304;4305;2;f;f;t;0;ec6ebf98-fc60-409c-bab8-51d45597b76d",
+			"4305;4306;0;f;f;f;4305;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4306;4307;0;f;f;f;4306;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4306;4307;2;f;f;t;0;ff36e0b0-70d4-49cd-8008-bfe77295e77d",
+			"4307;4308;0;f;f;f;4307;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4308;4309;0;f;f;f;4308;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4308;4309;2;f;f;t;0;fb09b734-c235-4814-9904-a660e688b346",
+			"4309;4310;0;f;f;f;4309;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4310;4311;0;f;f;f;4310;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4310;4311;2;f;f;t;0;efbcc278-e69e-48b5-a6ea-46055d882aee",
+			"4311;4312;0;f;f;f;4311;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4312;4313;0;f;f;f;4312;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4312;4313;2;f;f;t;0;858dabc6-678d-4831-ba1f-ffb683e71f4e",
+			"4313;4314;0;f;f;f;4313;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4314;4315;0;f;f;f;4314;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4314;4315;2;f;f;t;0;536453e5-940c-4b40-841a-a7c6573dbc89",
+			"4315;4316;0;f;f;f;4315;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4316;4317;0;f;f;f;4316;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4316;4317;2;f;f;t;0;cd814b2a-a6e6-4a3a-9406-30290f537113",
+			"4317;4318;0;f;f;f;4317;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4318;4319;0;f;f;f;4318;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4318;4319;2;f;f;t;0;13adfb62-20af-4b50-b7de-c3f25e51d1bf",
+			"4319;4320;0;f;f;f;4319;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4320;4321;0;f;f;f;4320;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4320;4321;2;f;f;t;0;a1468a8a-12f8-49d3-b199-36504fb27558",
+			"4321;4322;0;f;f;f;4321;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4322;4323;0;f;f;f;4322;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4322;4323;2;f;f;t;0;8267acab-d62f-4084-97c8-24147ccde908",
+			"4323;4324;0;f;f;f;4323;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4324;4325;0;f;f;f;4324;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4324;4325;2;f;f;t;0;77358b25-1fef-4ac3-9d6d-62165e4369dc",
+			"4325;4326;0;f;f;f;4325;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4326;4327;0;f;f;f;4326;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4326;4327;2;f;f;t;0;844acc7c-d865-4748-8647-1c045901aa7c",
+			"4327;4328;0;f;f;f;4327;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4328;4329;0;f;f;f;4328;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4327;4329;2;f;f;t;0;d4246fca-631a-43c5-9231-ec878b7b5961",
+			"4329;4330;0;f;f;f;4329;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4330;4331;0;f;f;f;4330;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4330;4331;2;f;f;t;0;4dd938e3-009d-40a0-a23a-41607003a0c6",
+			"4331;4332;0;f;f;f;4331;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4332;4333;0;f;f;f;4332;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4332;4333;2;f;f;t;0;e083251f-aaab-4743-acf6-c7e91f81a33f",
+			"4333;4334;0;f;f;f;4333;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4334;4335;0;f;f;f;4334;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4334;4335;2;f;f;t;0;e908847e-2d38-4f32-bca3-c2aa6d162172",
+			"4335;4336;0;f;f;f;4335;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4336;4337;0;f;f;f;4336;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4336;4337;2;f;f;t;0;fcf18972-4ccf-4322-ba68-ddaae496e0f0",
+			"4337;4338;0;f;f;f;4337;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4338;4339;0;f;f;f;4338;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4337;4339;2;f;f;t;0;e983da6b-f895-4a88-a88c-e66e0f79c5bf",
+			"4339;4340;0;f;f;f;4339;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4340;4341;0;f;f;f;4340;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4340;4341;2;f;f;t;0;32e609b8-fd2f-46fc-99a2-5795c8f1f7f0",
+			"4341;4342;0;f;f;f;4341;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4342;4343;0;f;f;f;4342;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4342;4343;2;f;f;t;0;2e99ecac-1a83-4ba3-9281-9edcad3fed4e",
+			"4343;4344;0;f;f;f;4343;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4344;4345;0;f;f;f;4344;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4344;4345;2;f;f;t;0;77ca5705-4952-4565-ba78-8d5072364ea3",
+			"4345;4346;0;f;f;f;4345;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4346;4347;0;f;f;f;4346;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4345;4347;2;f;f;t;0;387e805e-3294-4742-a675-1c6f1164c328",
+			"4347;4348;0;f;f;f;4347;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4348;4349;0;f;f;f;4348;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4348;4349;2;f;f;t;0;6b272493-9efc-468c-a613-3a7614c36676",
+			"4349;4350;0;f;f;f;4349;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4350;4351;0;f;f;f;4350;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4350;4351;2;f;f;t;0;e2a79c74-f435-461a-a0c2-3202900f6dfe",
+			"4351;4352;0;f;f;f;4351;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4352;4353;0;f;f;f;4352;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4352;4353;2;f;f;t;0;6b47a08e-8d7f-4bb3-8fd0-ec19a0c9915d",
+			"4353;4354;0;f;f;f;4353;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4354;4355;0;f;f;f;4354;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4353;4355;2;f;f;t;0;ac76bd74-c006-45d0-bf42-33e93d80ab6c",
+			"4355;4356;0;f;f;f;4355;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4356;4357;0;f;f;f;4356;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4356;4357;2;f;f;t;0;99fc2547-9cce-4a5a-81f2-1bef0e19a7c6",
+			"4357;4358;0;f;f;f;4357;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4358;4359;0;f;f;f;4358;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4358;4359;2;f;f;t;0;070a6411-2af2-4a47-8b46-04886b71c531",
+			"4359;4360;0;f;f;f;4359;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4360;4361;0;f;f;f;4360;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4360;4361;2;f;f;t;0;ad1f77db-ecd3-4b7d-ac1b-89424856ab1b",
+			"4361;4362;0;f;f;f;4361;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4362;4363;0;f;f;f;4362;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4362;4363;2;f;f;t;0;198f012e-40ae-4421-a923-e5a09e9d0b7e",
+			"4363;4364;0;f;f;f;4363;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4364;4365;0;f;f;f;4364;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4364;4365;2;f;f;t;0;9334e514-fea4-478a-af1b-1d77760bd83e",
+			"4365;4366;0;f;f;f;4365;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4366;4367;0;f;f;f;4366;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4366;4367;2;f;f;t;0;28cca5da-240b-4773-b21b-aeb85c980586",
+			"4367;4368;0;f;f;f;4367;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4368;4369;0;f;f;f;4368;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4368;4369;2;f;f;t;0;404532b0-d4a1-4a2b-bca7-501392a69085",
+			"4369;4370;0;f;f;f;4369;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4370;4371;0;f;f;f;4370;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4370;4371;2;f;f;t;0;87196f78-10a8-43a1-a27c-5be5b08513ee",
+			"4371;4372;0;f;f;f;4371;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4372;4373;0;f;f;f;4372;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4372;4373;2;f;f;t;0;9791aa99-43e4-4c22-abbb-d89432d51e4f",
+			"4373;4374;0;f;f;f;4373;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4374;4375;0;f;f;f;4374;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4374;4375;2;f;f;t;0;1ed3f1b1-3215-4a06-a387-0b2e78efafc6",
+			"4375;4376;0;f;f;f;4375;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4376;4377;0;f;f;f;4376;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4376;4377;2;f;f;t;0;9842de3b-8a94-4efb-b145-235cc9d8e0b6",
+			"4377;4378;0;f;f;f;4377;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4378;4379;0;f;f;f;4378;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4378;4379;2;f;f;t;0;fa9943a5-8d5c-49fe-b589-c89cccfb52e6",
+			"4379;4380;0;f;f;f;4379;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4380;4381;0;f;f;f;4380;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4380;4381;2;f;f;t;0;080b2ecd-03aa-4de3-8afa-12a41eda1b4d",
+			"4381;4382;0;f;f;f;4381;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4382;4383;0;f;f;f;4382;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4382;4383;2;f;f;t;0;a0ca78ab-3034-4b3d-949c-6cd632ba3469",
+			"4383;4384;0;f;f;f;4383;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4384;4385;0;f;f;f;4384;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4384;4385;2;f;f;t;0;ed9049e5-2558-4cec-8920-850cac9592b8",
+			"4385;4386;0;f;f;f;4385;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4386;4387;0;f;f;f;4386;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4386;4387;2;f;f;t;0;58a2c41c-6568-4264-bbee-4a9ac928e164",
+			"4387;4388;0;f;f;f;4387;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4388;4389;0;f;f;f;4388;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4388;4389;2;f;f;t;0;94e33e74-e9a6-4d7e-bf2c-ad4e6b6ca980",
+			"4389;4390;0;f;f;f;4389;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4390;4391;0;f;f;f;4390;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4390;4391;2;f;f;t;0;546a6774-f410-4db2-9148-663cf3a9c88b",
+			"4391;4392;0;f;f;f;4391;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4392;4393;0;f;f;f;4392;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4392;4393;2;f;f;t;0;87a5553b-cc71-4e2c-b9da-6bceb5b5127a",
+			"4393;4394;0;f;f;f;4393;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4394;4395;0;f;f;f;4394;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4394;4395;2;f;f;t;0;f7ab4d1e-170c-4f70-8b35-b2fa58afbfa2",
+			"4395;4396;0;f;f;f;4395;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4396;4397;0;f;f;f;4396;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4396;4397;2;f;f;t;0;5785ab57-139e-4c1d-abcb-48d570d9f521",
+			"4397;4398;0;f;f;f;4397;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4398;4399;0;f;f;f;4398;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4398;4399;2;f;f;t;0;3307da38-d047-4ab2-b0f2-633c92a78872",
+			"4399;4400;0;f;f;f;4399;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4400;4401;0;f;f;f;4400;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4400;4401;2;f;f;t;0;122761c5-c8aa-4889-b2e5-efff9e902a93",
+			"4401;4402;0;f;f;f;4401;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4402;4403;0;f;f;f;4402;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4402;4403;2;f;f;t;0;0c540597-b6df-4c22-88df-323fe19aedd0",
+			"4403;4404;0;f;f;f;4403;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4404;4405;0;f;f;f;4404;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4404;4405;2;f;f;t;0;3d189423-d7c5-4a1e-8997-0ca844517d6a",
+			"4405;4406;0;f;f;f;4405;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4406;4407;0;f;f;f;4406;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4406;4407;2;f;f;t;0;cc4b8f54-7eec-47bd-82db-610d5b3e2144",
+			"4407;4408;0;f;f;f;4407;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4408;4409;0;f;f;f;4408;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4408;4409;2;f;f;t;0;d779c2e6-2cce-4ccc-b65f-707d7228d948",
+			"4409;4410;0;f;f;f;4409;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4410;4411;0;f;f;f;4410;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4410;4411;2;f;f;t;0;12b76862-c9c5-43ca-a7c6-8f9db908c7fe",
+			"4411;4412;0;f;f;f;4411;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4412;4413;0;f;f;f;4412;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4412;4413;2;f;f;t;0;363c709d-aff2-4acc-a1d1-9cc0e17bca6d",
+			"4413;4414;0;f;f;f;4413;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4414;4415;0;f;f;f;4414;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4414;4415;2;f;f;t;0;6ba7c738-43d1-4355-881c-36cb36a7d8d7",
+			"4415;4416;0;f;f;f;4415;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4416;4417;0;f;f;f;4416;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4416;4417;2;f;f;t;0;a827d177-6a07-4604-a303-193378929b5d",
+			"4417;4418;0;f;f;f;4417;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4418;4419;0;f;f;f;4418;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4418;4419;2;f;f;t;0;b85c3ac8-d7bc-47bc-82ca-ae462cb18477",
+			"4419;4420;0;f;f;f;4419;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4420;4421;0;f;f;f;4420;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4420;4421;2;f;f;t;0;ade074d5-7a43-45dc-99ba-2f6ca1ba0058",
+			"4421;4422;0;f;f;f;4421;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4422;4423;0;f;f;f;4422;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4422;4423;2;f;f;t;0;3b09edf5-05f0-43e3-be47-f41c1725090d",
+			"4423;4424;0;f;f;f;4423;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4424;4425;0;f;f;f;4424;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4424;4425;2;f;f;t;0;2defd5c9-8a22-41af-bd95-41fcec6c2f3d",
+			"4425;4426;0;f;f;f;4425;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4426;4427;0;f;f;f;4426;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4426;4427;2;f;f;t;0;ea80a1b0-c3aa-45ae-9804-565547ffbe69",
+			"4427;4428;0;f;f;f;4427;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4428;4429;0;f;f;f;4428;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4428;4429;2;f;f;t;0;4ba4b131-2a91-4264-a64b-3635484a6925",
+			"4429;4430;0;f;f;f;4429;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4430;4431;0;f;f;f;4430;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4430;4431;2;f;f;t;0;81b36d8a-fdba-49f7-b5a3-bed1e18461f3",
+			"4431;4432;0;f;f;f;4431;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4432;4433;0;f;f;f;4432;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4432;4433;2;f;f;t;0;db03d60c-c8e7-4a5f-9221-2bc563086401",
+			"4433;4434;0;f;f;f;4433;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4434;4435;0;f;f;f;4434;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4434;4435;2;f;f;t;0;a79150be-d112-4979-821d-373d26fb4de7",
+			"4435;4436;0;f;f;f;4435;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4436;4437;0;f;f;f;4436;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4436;4437;2;f;f;t;0;4e4f008e-6693-4dd5-a222-10fab336462e",
+			"4437;4438;0;f;f;f;4437;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4438;4439;0;f;f;f;4438;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4438;4439;2;f;f;t;0;723efd99-ae79-4a1f-a547-65c25c1a9382",
+			"4439;4440;0;f;f;f;4439;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4440;4441;0;f;f;f;4440;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4440;4441;2;f;f;t;0;a7b67032-12aa-4517-b596-b30f42067b30",
+			"4441;4442;0;f;f;f;4441;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4442;4443;0;f;f;f;4442;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4442;4443;2;f;f;t;0;9f5e3284-bc1f-47d6-8eea-a0a808e3763b",
+			"4443;4444;0;f;f;f;4443;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4444;4445;0;f;f;f;4444;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4444;4445;2;f;f;t;0;2ab6a603-5363-46fa-b064-0371a7f00756",
+			"4445;4446;0;f;f;f;4445;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4446;4447;0;f;f;f;4446;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4446;4447;2;f;f;t;0;ff3e55d8-8e7c-4c92-b578-0043cae15127",
+			"4447;4448;0;f;f;f;4447;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4448;4449;0;f;f;f;4448;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4448;4449;2;f;f;t;0;f661f9f0-fcca-48ea-8509-c664c57d0945",
+			"4449;4450;0;f;f;f;4449;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4450;4451;0;f;f;f;4450;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4450;4451;2;f;f;t;0;0c0684cc-b98b-4e7b-99a7-abf3ff020adb",
+			"4451;4452;0;f;f;f;4451;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4452;4453;0;f;f;f;4452;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4452;4453;2;f;f;t;0;316eef97-68a9-42a4-b285-84c5992bf985",
+			"4453;4454;0;f;f;f;4453;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4454;4455;0;f;f;f;4454;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4454;4455;2;f;f;t;0;91a5628d-9ba0-45c5-8c88-8aaef6aac1f7",
+			"4455;4456;0;f;f;f;4455;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4456;4457;0;f;f;f;4456;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4456;4457;2;f;f;t;0;bdfda388-4f03-4234-8ace-e0792c50c88d",
+			"4457;4458;0;f;f;f;4457;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4458;4459;0;f;f;f;4458;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4458;4459;2;f;f;t;0;df0c150e-2be4-4c4c-b889-77147a9a49d9",
+			"4459;4460;0;f;f;f;4459;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4460;4461;0;f;f;f;4460;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4460;4461;2;f;f;t;0;7d417b7b-d502-49e5-a3db-927fceb16363",
+			"4461;4462;0;f;f;f;4461;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4462;4463;0;f;f;f;4462;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4462;4463;2;f;f;t;0;4f87ca79-c951-4266-98ad-e1cbddca717a",
+			"4463;4464;0;f;f;f;4463;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4464;4465;0;f;f;f;4464;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4464;4465;2;f;f;t;0;31c749e1-cc10-4b31-8253-3a1d915db36b",
+			"4465;4466;0;f;f;f;4465;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4466;4467;0;f;f;f;4466;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4466;4467;2;f;f;t;0;18aa7df6-203a-4b6b-8d23-358bb6720462",
+			"4467;4468;0;f;f;f;4467;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4468;4469;0;f;f;f;4468;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4468;4469;2;f;f;t;0;7a915e05-6551-4462-ab87-77a288bba4c6",
+			"4469;4470;0;f;f;f;4469;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4470;4471;0;f;f;f;4470;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4470;4471;2;f;f;t;0;010ad420-7481-4521-83e5-b43b2a2cee38",
+			"4471;4472;0;f;f;f;4471;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4472;4473;0;f;f;f;4472;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4472;4473;2;f;f;t;0;237eeaf3-f996-4e9d-a105-b32572ce8fe7",
+			"4473;4474;0;f;f;f;4473;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4474;4475;0;f;f;f;4474;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4474;4475;2;f;f;t;0;1e4f6581-9ebf-4eaa-9c56-db2fabc568d4",
+			"4475;4476;0;f;f;f;4475;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4476;4477;0;f;f;f;4476;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4476;4477;2;f;f;t;0;b90ed6d4-4f30-45d4-a333-87d0b8a63a71",
+			"4477;4478;0;f;f;f;4477;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4478;4479;0;f;f;f;4478;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4478;4479;2;f;f;t;0;2dad71e5-a587-498f-8dfc-cf28332ab6e6",
+			"4479;4480;0;f;f;f;4479;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4480;4481;0;f;f;f;4480;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4480;4481;2;f;f;t;0;a0419a7f-02d6-434b-b5ac-5e5a0e071ecf",
+			"4481;4482;0;f;f;f;4481;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4482;4483;0;f;f;f;4482;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4482;4483;2;f;f;t;0;177bb460-03cd-4005-a156-1af39e2f8d78",
+			"4483;4484;0;f;f;f;4483;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4484;4485;0;f;f;f;4484;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4484;4485;2;f;f;t;0;a367fa0a-9dc5-41f4-9b4e-15885b1a3292",
+			"4485;4486;0;f;f;f;4485;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4486;4487;0;f;f;f;4486;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4486;4487;2;f;f;t;0;99750d3b-fde3-4390-b6af-8531da31ccfa",
+			"4487;4488;0;f;f;f;4487;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4488;4489;0;f;f;f;4488;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4488;4489;2;f;f;t;0;34d412e9-12b4-4531-8951-a9e5c4190878",
+			"4489;4490;0;f;f;f;4489;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4490;4491;0;f;f;f;4490;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4490;4491;2;f;f;t;0;420f0d14-4af5-437d-9026-8b5c9cb5f7b3",
+			"4491;4492;0;f;f;f;4491;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4492;4493;0;f;f;f;4492;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4492;4493;2;f;f;t;0;8a5a335d-f299-4697-bb4b-b038644303a5",
+			"4493;4494;0;f;f;f;4493;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4494;4495;0;f;f;f;4494;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4494;4495;2;f;f;t;0;fd295288-cae8-4346-90aa-6ada57afa26b",
+			"4495;4496;0;f;f;f;4495;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4496;4497;0;f;f;f;4496;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4496;4497;2;f;f;t;0;a7cb56b6-7528-4890-8456-c821846e4000",
+			"4497;4498;0;f;f;f;4497;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4498;4499;0;f;f;f;4498;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4497;4499;2;f;f;t;0;f08cf877-69e1-43dc-b9a3-d9d92fe87e55",
+			"4499;4500;0;f;f;f;4499;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4500;4501;0;f;f;f;4500;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4500;4501;2;f;f;t;0;97c55ad6-7c51-4755-9dc1-6123e3fe2047",
+			"4501;4502;0;f;f;f;4501;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4502;4503;0;f;f;f;4502;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4501;4503;2;f;f;t;0;8eae6c3a-25c5-495d-8460-7451e324ec12",
+			"4503;4504;0;f;f;f;4503;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4504;4505;0;f;f;f;4504;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4504;4505;2;f;f;t;0;fd4dc490-f314-4917-bfe3-654bd89c9984",
+			"4505;4506;0;f;f;f;4505;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4506;4507;0;f;f;f;4506;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4506;4507;2;f;f;t;0;fea04b48-443c-4449-8ac0-d4d71129369b",
+			"4507;4508;0;f;f;f;4507;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4508;4509;0;f;f;f;4508;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4508;4509;2;f;f;t;0;2e8acb30-07d7-43c3-a99a-32f4b8f29353",
+			"4509;4510;0;f;f;f;4509;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4510;4511;0;f;f;f;4510;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4510;4511;2;f;f;t;0;438b5e75-3df9-461c-a49e-a1b51fd41bdf",
+			"4511;4512;0;f;f;f;4511;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4512;4513;0;f;f;f;4512;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4512;4513;2;f;f;t;0;422c0c29-aa64-47cf-b4ba-7d89a72221d4",
+			"4513;4514;0;f;f;f;4513;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4514;4515;0;f;f;f;4514;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4514;4515;2;f;f;t;0;b4c1065f-4ece-4991-9452-a4c2f8ec24fa",
+			"4515;4516;0;f;f;f;4515;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4516;4517;0;f;f;f;4516;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4515;4517;2;f;f;t;0;de4753be-4ed3-4b40-8f21-ea6a34d8c10a",
+			"4517;4518;0;f;f;f;4517;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4518;4519;0;f;f;f;4518;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4518;4519;2;f;f;t;0;c26f207e-5246-4d28-a668-609cff02ee5c",
+			"4519;4520;0;f;f;f;4519;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4520;4521;0;f;f;f;4520;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4519;4521;2;f;f;t;0;0542684a-b9c1-4ed9-8a93-884d039f0738",
+			"4521;4522;0;f;f;f;4521;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4522;4523;0;f;f;f;4522;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4522;4523;2;f;f;t;0;d6808b12-5529-47eb-9e99-62770b91f61e",
+			"4523;4524;0;f;f;f;4523;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4524;4525;0;f;f;f;4524;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4524;4525;2;f;f;t;0;76f32237-9e57-441f-8f4b-f149a22cd78e",
+			"4525;4526;0;f;f;f;4525;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4526;4527;0;f;f;f;4526;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4526;4527;2;f;f;t;0;a2cb3e47-31bd-44aa-ad4b-e88c4f881de2",
+			"4527;4528;0;f;f;f;4527;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4528;4529;0;f;f;f;4528;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4528;4529;2;f;f;t;0;d8c73e13-4629-4814-b167-8027bae30d15",
+			"4529;4530;0;f;f;f;4529;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4530;4531;0;f;f;f;4530;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4530;4531;2;f;f;t;0;b8d66bca-9276-4285-8e8f-6a730cd95829",
+			"4531;4532;0;f;f;f;4531;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4532;4533;0;f;f;f;4532;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4532;4533;2;f;f;t;0;5b12ae33-bbd1-4410-a6e8-554c3abc14b0",
+			"4533;4534;0;f;f;f;4533;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4534;4535;0;f;f;f;4534;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4534;4535;2;f;f;t;0;31c1b2d6-1f69-4aac-be17-7f9d6b16eef4",
+			"4535;4536;0;f;f;f;4535;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4536;4537;0;f;f;f;4536;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4536;4537;2;f;f;t;0;55de92f3-8e35-4622-b857-60423ac12bdc",
+			"4537;4538;0;f;f;f;4537;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4538;4539;0;f;f;f;4538;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4538;4539;2;f;f;t;0;0aee4e1a-c328-498d-961a-fd3aa8b57131",
+			"4539;4540;0;f;f;f;4539;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4540;4541;0;f;f;f;4540;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4540;4541;2;f;f;t;0;54fc4b98-899d-4974-a63e-bc6c5d0ba583",
+			"4541;4542;0;f;f;f;4541;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4542;4543;0;f;f;f;4542;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4542;4543;2;f;f;t;0;b3fdbc0b-6c36-4bbe-b648-13870a333b9e",
+			"4543;4544;0;f;f;f;4543;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4544;4545;0;f;f;f;4544;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4544;4545;2;f;f;t;0;70e9d9ab-705a-4228-b842-04a618d54a70",
+			"4545;4546;0;f;f;f;4545;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4546;4547;0;f;f;f;4546;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4546;4547;2;f;f;t;0;29cdbedf-6fb9-41d4-ab18-d370a9d1da34",
+			"4547;4548;0;f;f;f;4547;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4548;4549;0;f;f;f;4548;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4548;4549;2;f;f;t;0;99d7c8d3-4410-445d-9496-e73afa7e2045",
+			"4549;4550;0;f;f;f;4549;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4550;4551;0;f;f;f;4550;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4550;4551;2;f;f;t;0;6354dee8-794c-46ce-837b-a135a2943a06",
+			"4551;4552;0;f;f;f;4551;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4552;4553;0;f;f;f;4552;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4552;4553;2;f;f;t;0;fc9fc491-c62c-409f-b1bd-892b10242469",
+			"4553;4554;0;f;f;f;4553;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4554;4555;0;f;f;f;4554;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4554;4555;2;f;f;t;0;75330201-a6d9-409b-8743-41f3532494d1",
+			"4555;4556;0;f;f;f;4555;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4556;4557;0;f;f;f;4556;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4556;4557;2;f;f;t;0;2f2a6b20-661d-4c62-8864-dcee8c6b387f",
+			"4557;4558;0;f;f;f;4557;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4558;4559;0;f;f;f;4558;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4558;4559;2;f;f;t;0;53b27248-f5d9-443b-901a-a814d68ab3af",
+			"4559;4560;0;f;f;f;4559;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4560;4561;0;f;f;f;4560;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4560;4561;2;f;f;t;0;649bb2b8-0d1d-410f-93fe-690fc3f63a37",
+			"4561;4562;0;f;f;f;4561;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4562;4563;0;f;f;f;4562;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4562;4563;2;f;f;t;0;98a3bab9-751d-4baf-879d-5cfb435b333e",
+			"4563;4564;0;f;f;f;4563;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4564;4565;0;f;f;f;4564;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4564;4565;2;f;f;t;0;0c6d5358-dac2-4886-909e-f6904f2d06c5",
+			"4565;4566;0;f;f;f;4565;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4566;4567;0;f;f;f;4566;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4566;4567;2;f;f;t;0;fd28f60a-a98c-43ee-a489-0e2c26253030",
+			"4567;4568;0;f;f;f;4567;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4568;4569;0;f;f;f;4568;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4568;4569;2;f;f;t;0;62e9df22-ccc3-485a-805d-87cbe334d971",
+			"4569;4570;0;f;f;f;4569;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4570;4571;0;f;f;f;4570;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4570;4571;2;f;f;t;0;28754026-f2b4-4b6a-abb4-a13d7afb71a1",
+			"4571;4572;0;f;f;f;4571;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4572;4573;0;f;f;f;4572;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4572;4573;2;f;f;t;0;055b8b40-d9b4-40a6-ae31-c628f0d984fd",
+			"4573;4574;0;f;f;f;4573;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4574;4575;0;f;f;f;4574;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4574;4575;2;f;f;t;0;4e0e5f9b-d3fd-4606-a138-8ccce8e835cc",
+			"4575;4576;0;f;f;f;4575;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4576;4577;0;f;f;f;4576;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4576;4577;2;f;f;t;0;6fc9cb9d-8621-4e3f-b2d6-fbce718d6b44",
+			"4577;4578;0;f;f;f;4577;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4578;4579;0;f;f;f;4578;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4578;4579;2;f;f;t;0;186aadff-a0bc-45b3-8510-e519ea656e90",
+			"4579;4580;0;f;f;f;4579;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4580;4581;0;f;f;f;4580;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4580;4581;2;f;f;t;0;4cf078bb-415d-421c-8f20-30a882d5b730",
+			"4581;4582;0;f;f;f;4581;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4582;4583;0;f;f;f;4582;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4582;4583;2;f;f;t;0;bc8a0046-7f46-46e6-b625-4a5936ff5874",
+			"4583;4584;0;f;f;f;4583;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4584;4585;0;f;f;f;4584;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4584;4585;2;f;f;t;0;c303b456-4614-44c6-8584-2fad7a6c26a1",
+			"4585;4586;0;f;f;f;4585;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4586;4587;0;f;f;f;4586;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4586;4587;2;f;f;t;0;2732177e-0f1b-414f-bd2e-28e7ac6f55b3",
+			"4587;4588;0;f;f;f;4587;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4588;4589;0;f;f;f;4588;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4588;4589;2;f;f;t;0;34a097a9-9c8c-425e-97ea-5b0be4e1fc5e",
+			"4589;4590;0;f;f;f;4589;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4590;4591;0;f;f;f;4590;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4590;4591;2;f;f;t;0;89999cca-ff90-4b27-a568-599617de7f8d",
+			"4591;4592;0;f;f;f;4591;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4592;4593;0;f;f;f;4592;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4592;4593;2;f;f;t;0;5abe10e2-423c-467e-8c42-1d800e8592b0",
+			"4593;4594;0;f;f;f;4593;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4594;4595;0;f;f;f;4594;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4594;4595;2;f;f;t;0;1e37d771-a565-4a30-9dd4-991f236d761a",
+			"4595;4596;0;f;f;f;4595;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4596;4597;0;f;f;f;4596;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4596;4597;2;f;f;t;0;6ccc6ed5-63fb-499f-afe0-12e1d4bee198",
+			"4597;4598;0;f;f;f;4597;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4598;4599;0;f;f;f;4598;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4598;4599;2;f;f;t;0;cb10c377-3a36-4aa5-a0b1-26665dafa924",
+			"4599;4600;0;f;f;f;4599;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4600;4601;0;f;f;f;4600;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4600;4601;2;f;f;t;0;6e0cec2b-3ee0-4ffd-97be-b4c5e518fcd2",
+			"4601;4602;0;f;f;f;4601;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4602;4603;0;f;f;f;4602;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4602;4603;2;f;f;t;0;f7b735d6-9c03-4e5f-bf72-9993daf7338f",
+			"4603;4604;0;f;f;f;4603;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4604;4605;0;f;f;f;4604;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4604;4605;2;f;f;t;0;c6843ca7-3198-44c1-9ec7-92aa6f17c70a",
+			"4605;4606;0;f;f;f;4605;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4606;4607;0;f;f;f;4606;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4606;4607;2;f;f;t;0;ae38d91e-a458-4afc-bfd4-df2463e72022",
+			"4607;4608;0;f;f;f;4607;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4608;4609;0;f;f;f;4608;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4608;4609;2;f;f;t;0;32e8624c-824b-4e13-b2ae-9f6796cec743",
+			"4609;4610;0;f;f;f;4609;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4610;4611;0;f;f;f;4610;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4610;4611;2;f;f;t;0;453e734a-7e71-4e68-9136-d08931083983",
+			"4611;4612;0;f;f;f;4611;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4612;4613;0;f;f;f;4612;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4612;4613;2;f;f;t;0;6045c6fb-9ff8-4b58-a63c-438890243f13",
+			"4613;4614;0;f;f;f;4613;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4614;4615;0;f;f;f;4614;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4614;4615;2;f;f;t;0;d3dd7da1-6523-40ca-9e95-5a8fda834a8d",
+			"4615;4616;0;f;f;f;4615;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4616;4617;0;f;f;f;4616;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4616;4617;2;f;f;t;0;4f5de744-2fd0-4adb-bd32-509bc60b3cce",
+			"4617;4618;0;f;f;f;4617;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4618;4619;0;f;f;f;4618;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4618;4619;2;f;f;t;0;0bae1a2a-e197-415d-a2f7-8bf91c61f39c",
+			"4619;4620;0;f;f;f;4619;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4620;4621;0;f;f;f;4620;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4620;4621;2;f;f;t;0;da9db4f4-8c9a-4103-8ceb-fcd69ba47994",
+			"4621;4622;0;f;f;f;4621;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4622;4623;0;f;f;f;4622;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4622;4623;2;f;f;t;0;50b283b1-c7d0-45f8-8ec4-d806988f6219",
+			"4623;4624;0;f;f;f;4623;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4624;4625;0;f;f;f;4624;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4624;4625;2;f;f;t;0;fc4e04c7-f37f-4bae-b2fe-0160c7bcafbb",
+			"4625;4626;0;f;f;f;4625;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4626;4627;0;f;f;f;4626;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4626;4627;2;f;f;t;0;9456be96-ea58-4ce9-82a7-deb540d6b4bb",
+			"4627;4628;0;f;f;f;4627;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4628;4629;0;f;f;f;4628;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4628;4629;2;f;f;t;0;6aa57c61-f9ea-4a67-909b-88a615b88bcc",
+			"4629;4630;0;f;f;f;4629;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4630;4631;0;f;f;f;4630;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4630;4631;2;f;f;t;0;119bfcb6-63f8-4176-9358-cdd5d458999c",
+			"4631;4632;0;f;f;f;4631;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4632;4633;0;f;f;f;4632;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4632;4633;2;f;f;t;0;477ad103-ac84-4c1c-9703-4e0261b30f5f",
+			"4633;4634;0;f;f;f;4633;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4634;4635;0;f;f;f;4634;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4634;4635;2;f;f;t;0;601da87e-2ceb-4dcb-b0a1-e26842524190",
+			"4635;4636;0;f;f;f;4635;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4636;4637;0;f;f;f;4636;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4636;4637;2;f;f;t;0;3aed1507-6c6c-442b-8896-828e1e67823f",
+			"4637;4638;0;f;f;f;4637;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4638;4639;0;f;f;f;4638;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4638;4639;2;f;f;t;0;9bbfab5a-2595-4a04-8552-6866a3402e2d",
+			"4639;4640;0;f;f;f;4639;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4640;4641;0;f;f;f;4640;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4640;4641;2;f;f;t;0;a8c9407d-153c-4748-bea8-93dc5723fad3",
+			"4641;4642;0;f;f;f;4641;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4642;4643;0;f;f;f;4642;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4642;4643;2;f;f;t;0;989fc7fc-cbdf-4eba-aac8-eb299a422d07",
+			"4643;4644;0;f;f;f;4643;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4644;4645;0;f;f;f;4644;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4644;4645;2;f;f;t;0;430ba15a-efe9-4d6d-a8e4-abf83ef52ac3",
+			"4645;4646;0;f;f;f;4645;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4646;4647;0;f;f;f;4646;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4646;4647;2;f;f;t;0;d1c87aad-fb40-49e0-afc8-429a96589c08",
+			"4647;4648;0;f;f;f;4647;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4648;4649;0;f;f;f;4648;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4648;4649;2;f;f;t;0;426d9bb6-562e-4b7c-803a-9f926d28b7f9",
+			"4649;4650;0;f;f;f;4649;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4650;4651;0;f;f;f;4650;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4650;4651;2;f;f;t;0;77ca1ece-be0e-4cb3-829e-da85e0e97878",
+			"4651;4652;0;f;f;f;4651;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4652;4653;0;f;f;f;4652;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4652;4653;2;f;f;t;0;3c30f4fc-def0-4457-b0b5-2b67273831bc",
+			"4653;4654;0;f;f;f;4653;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4654;4655;0;f;f;f;4654;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4654;4655;2;f;f;t;0;2ac25658-86c5-4bb2-b9fc-e62b28328e37",
+			"4655;4656;0;f;f;f;4655;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4656;4657;0;f;f;f;4656;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4656;4657;2;f;f;t;0;e130dc78-2d88-4c00-9a30-8e0acce03bf1",
+			"4657;4658;0;f;f;f;4657;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4658;4659;0;f;f;f;4658;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4658;4659;2;f;f;t;0;3562dd35-6f45-49b7-a7e6-5557ecc79054",
+			"4659;4660;0;f;f;f;4659;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4660;4661;0;f;f;f;4660;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4660;4661;2;f;f;t;0;f60110bf-f7e1-4d9b-87f9-ce242ff7bd46",
+			"4661;4662;0;f;f;f;4661;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4662;4663;0;f;f;f;4662;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4662;4663;2;f;f;t;0;9d6cabc5-a53c-4849-83d2-c6a400fef2ed",
+			"4663;4664;0;f;f;f;4663;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4664;4665;0;f;f;f;4664;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4664;4665;2;f;f;t;0;54cd650a-19c2-4f60-8c3b-e3521e427877",
+			"4665;4666;0;f;f;f;4665;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4666;4667;0;f;f;f;4666;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4666;4667;2;f;f;t;0;40188065-e704-43f6-af9b-cc5d0052083f",
+			"4667;4668;0;f;f;f;4667;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4668;4669;0;f;f;f;4668;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4668;4669;2;f;f;t;0;826ffd55-4a7e-418a-848a-e8adf5e5618e",
+			"4669;4670;0;f;f;f;4669;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4670;4671;0;f;f;f;4670;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4670;4671;2;f;f;t;0;77d9304c-10b3-49cc-b359-c378b27ee459",
+			"4671;4672;0;f;f;f;4671;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4672;4673;0;f;f;f;4672;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4672;4673;2;f;f;t;0;80866130-bc83-4ba2-9b5d-424cb48a0fad",
+			"4673;4674;0;f;f;f;4673;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4674;4675;0;f;f;f;4674;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4674;4675;2;f;f;t;0;d2e65120-b456-4ac9-b309-8012a3ca1bbc",
+			"4675;4676;0;f;f;f;4675;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4676;4677;0;f;f;f;4676;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4676;4677;2;f;f;t;0;62c9fc62-82fa-45e7-b737-27f987f3737b",
+			"4677;4678;0;f;f;f;4677;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4678;4679;0;f;f;f;4678;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4678;4679;2;f;f;t;0;d053405e-8347-478c-a3f6-d17fc13cffe9",
+			"4679;4680;0;f;f;f;4679;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4680;4681;0;f;f;f;4680;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4680;4681;2;f;f;t;0;bb4645cd-eaf6-4f05-b79f-172f3cdcc9b3",
+			"4681;4682;0;f;f;f;4681;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4682;4683;0;f;f;f;4682;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4682;4683;2;f;f;t;0;42e54416-2e14-426a-9e58-c082602ba9ed",
+			"4683;4684;0;f;f;f;4683;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4684;4685;0;f;f;f;4684;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4684;4685;2;f;f;t;0;ceac2d60-82da-4cbe-8131-4dea37adcb1e",
+			"4685;4686;0;f;f;f;4685;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4686;4687;0;f;f;f;4686;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4686;4687;2;f;f;t;0;6e5b509d-d15b-4e94-84c2-80964533a1ae",
+			"4687;4688;0;f;f;f;4687;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4688;4689;0;f;f;f;4688;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4688;4689;2;f;f;t;0;ea0cacd9-6c1f-468f-ac59-2672b40e1aef",
+			"4689;4690;0;f;f;f;4689;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4690;4691;0;f;f;f;4690;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4690;4691;2;f;f;t;0;a31a5dc1-5ea4-43d7-abf7-71dae2d263c1",
+			"4691;4692;0;f;f;f;4691;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4692;4693;0;f;f;f;4692;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4692;4693;2;f;f;t;0;6da72e6f-d9e6-4622-af6d-3d7407797127",
+			"4693;4694;0;f;f;f;4693;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4694;4695;0;f;f;f;4694;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4694;4695;2;f;f;t;0;3028a83c-ffdb-4a22-b7ba-2b3f5b69aa59",
+			"4695;4696;0;f;f;f;4695;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4696;4697;0;f;f;f;4696;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4696;4697;2;f;f;t;0;97073649-9910-4c20-8e61-e40108f68e68",
+			"4697;4698;0;f;f;f;4697;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4698;4699;0;f;f;f;4698;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4698;4699;2;f;f;t;0;19aaae86-0edc-4ebe-8a82-db36c963c827",
+			"4699;4700;0;f;f;f;4699;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4700;4701;0;f;f;f;4700;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4700;4701;2;f;f;t;0;cf7fd6eb-94a0-4224-a9dd-162e671357b9",
+			"4701;4702;0;f;f;f;4701;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4702;4703;0;f;f;f;4702;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4702;4703;2;f;f;t;0;e815978d-e3a0-4979-8ad2-4d4c642113a9",
+			"4703;4704;0;f;f;f;4703;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4704;4705;0;f;f;f;4704;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4704;4705;2;f;f;t;0;ad2a2230-bc08-4337-86c9-fe605e7ac5df",
+			"4705;4706;0;f;f;f;4705;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4706;4707;0;f;f;f;4706;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4706;4707;2;f;f;t;0;2ea1e145-3aa3-4d82-8db5-8bb24dd6c215",
+			"4707;4708;0;f;f;f;4707;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4708;4709;0;f;f;f;4708;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4708;4709;2;f;f;t;0;ff80336a-4cc6-45e7-833c-ac8356ba0771",
+			"4709;4710;0;f;f;f;4709;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4710;4711;0;f;f;f;4710;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4710;4711;2;f;f;t;0;4c990d9e-4ccb-42ea-8359-ece6ac0598e4",
+			"4711;4712;0;f;f;f;4711;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4712;4713;0;f;f;f;4712;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4712;4713;2;f;f;t;0;5a03083b-0a18-4661-a7ee-020a50fd41ff",
+			"4713;4714;0;f;f;f;4713;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4714;4715;0;f;f;f;4714;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4714;4715;2;f;f;t;0;9e3c4844-d1ed-4559-89cf-5cf662545159",
+			"4715;4716;0;f;f;f;4715;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4716;4717;0;f;f;f;4716;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4716;4717;2;f;f;t;0;6770325d-4ad6-4b40-b67f-3c43b8bc05da",
+			"4717;4718;0;f;f;f;4717;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4718;4719;0;f;f;f;4718;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4718;4719;2;f;f;t;0;b51cb525-7d11-42f0-a88c-8a102793eec5",
+			"4719;4720;0;f;f;f;4719;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4720;4721;0;f;f;f;4720;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4720;4721;2;f;f;t;0;d2c53566-ab65-4037-8b69-29997360b2fa",
+			"4721;4722;0;f;f;f;4721;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4722;4723;0;f;f;f;4722;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4722;4723;2;f;f;t;0;7ed65ee5-3093-4b68-b80a-23fc3cb654da",
+			"4723;4724;0;f;f;f;4723;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4724;4725;0;f;f;f;4724;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4724;4725;2;f;f;t;0;5b55f2e4-6cb8-4253-bc6b-e73988e2b2d0",
+			"4725;4726;0;f;f;f;4725;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4726;4727;0;f;f;f;4726;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4726;4727;2;f;f;t;0;55c9877e-dd37-4333-8840-64897109f944",
+			"4727;4728;0;f;f;f;4727;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4728;4729;0;f;f;f;4728;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4728;4729;2;f;f;t;0;06af868d-9b89-47df-bce0-479dc57ad6e8",
+			"4729;4730;0;f;f;f;4729;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4730;4731;0;f;f;f;4730;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4730;4731;2;f;f;t;0;8a60e026-c4dd-4903-83f5-8885f7899937",
+			"4731;4732;0;f;f;f;4731;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4732;4733;0;f;f;f;4732;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4732;4733;2;f;f;t;0;7284681d-8361-4854-9122-066dbe14458d",
+			"4733;4734;0;f;f;f;4733;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4734;4735;0;f;f;f;4734;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4734;4735;2;f;f;t;0;a4a11b47-9760-4ddf-ad1a-24b1d1f2ea40",
+			"4735;4736;0;f;f;f;4735;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4736;4737;0;f;f;f;4736;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4736;4737;2;f;f;t;0;b4057bc9-1766-4e23-a040-12df278e42f3",
+			"4737;4738;0;f;f;f;4737;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4738;4739;0;f;f;f;4738;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4738;4739;2;f;f;t;0;3f111d1e-85e0-4ae2-a254-4977cbccb5ea",
+			"4739;4740;0;f;f;f;4739;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4740;4741;0;f;f;f;4740;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4740;4741;2;f;f;t;0;1a3c39df-2571-4736-bbe3-f2fae4788a23",
+			"4741;4742;0;f;f;f;4741;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4742;4743;0;f;f;f;4742;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4742;4743;2;f;f;t;0;4ed6f1ad-39f0-4cfd-9271-a99f2fa6e5cb",
+			"4743;4744;0;f;f;f;4743;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4744;4745;0;f;f;f;4744;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4744;4745;2;f;f;t;0;d87e2b21-fc1a-45e6-940e-c0742c9ab033",
+			"4745;4746;0;f;f;f;4745;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4746;4747;0;f;f;f;4746;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4746;4747;2;f;f;t;0;b34b6ef0-0bbf-4eae-861e-4cf569dee7b0",
+			"4747;4748;0;f;f;f;4747;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4748;4749;0;f;f;f;4748;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4748;4749;2;f;f;t;0;1b4c3830-3bbf-4633-999a-a88bf71511c4",
+			"4749;4750;0;f;f;f;4749;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4750;4751;0;f;f;f;4750;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4750;4751;2;f;f;t;0;b4aeac31-cba2-4049-9565-54c4a3097241",
+			"4751;4752;0;f;f;f;4751;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4752;4753;0;f;f;f;4752;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4752;4753;2;f;f;t;0;d489b228-307a-4858-a37f-61fecfd286d8",
+			"4753;4754;0;f;f;f;4753;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4754;4755;0;f;f;f;4754;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4754;4755;2;f;f;t;0;d2638b8a-3821-4ab1-8e05-e7f937e422d8",
+			"4755;4756;0;f;f;f;4755;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4756;4757;0;f;f;f;4756;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4756;4757;2;f;f;t;0;2488c6dc-8447-4058-aede-2b2feba4de76",
+			"4757;4758;0;f;f;f;4757;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4758;4759;0;f;f;f;4758;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4757;4759;2;f;f;t;0;de09104c-7d05-42c5-b0cb-d39d9a393994",
+			"4759;4760;0;f;f;f;4759;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4760;4761;0;f;f;f;4760;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4760;4761;2;f;f;t;0;91c891b6-4b52-4b58-8cbb-6ce7e11e90cc",
+			"4761;4762;0;f;f;f;4761;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4762;4763;0;f;f;f;4762;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4762;4763;2;f;f;t;0;a47468a3-386a-4a08-9106-51d7b404fca6",
+			"4763;4764;0;f;f;f;4763;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4764;4765;0;f;f;f;4764;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4764;4765;2;f;f;t;0;21ce3792-9b7d-4513-96f6-4b5802d387d8",
+			"4765;4766;0;f;f;f;4765;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4766;4767;0;f;f;f;4766;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4766;4767;2;f;f;t;0;fd0ed1e3-a8ac-4db3-ae83-9bf2bf46b570",
+			"4767;4768;0;f;f;f;4767;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4768;4769;0;f;f;f;4768;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4768;4769;2;f;f;t;0;323335f0-c57e-439a-bd62-946baf95427b",
+			"4769;4770;0;f;f;f;4769;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4770;4771;0;f;f;f;4770;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4770;4771;2;f;f;t;0;3695372f-1849-427c-ba56-961ef842a5a7",
+			"4771;4772;0;f;f;f;4771;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4772;4773;0;f;f;f;4772;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4772;4773;2;f;f;t;0;19f29417-0355-41ef-9fc3-e65999729d88",
+			"4773;4774;0;f;f;f;4773;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4774;4775;0;f;f;f;4774;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4774;4775;2;f;f;t;0;83aceade-8f31-45ed-b90d-14f83ddc4591",
+			"4775;4776;0;f;f;f;4775;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4776;4777;0;f;f;f;4776;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4776;4777;2;f;f;t;0;5d64b853-afb4-4530-9918-dca3c401dad4",
+			"4777;4778;0;f;f;f;4777;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4778;4779;0;f;f;f;4778;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4778;4779;2;f;f;t;0;5245c905-fe3f-439f-b160-6ec817c57d00",
+			"4779;4780;0;f;f;f;4779;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4780;4781;0;f;f;f;4780;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4780;4781;2;f;f;t;0;97088501-9e8d-416c-bd87-11dc544964c7",
+			"4781;4782;0;f;f;f;4781;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4782;4783;0;f;f;f;4782;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4782;4783;2;f;f;t;0;01a8b7ae-4a91-465f-8ee7-05c5feb081db",
+			"4783;4784;0;f;f;f;4783;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4784;4785;0;f;f;f;4784;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4784;4785;2;f;f;t;0;857c5c93-63a5-4c2e-a8c8-d6dc1aaf347f",
+			"4785;4786;0;f;f;f;4785;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4786;4787;0;f;f;f;4786;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4786;4787;2;f;f;t;0;682e7b82-0e31-42c2-8aee-c57a6d3cc950",
+			"4787;4788;0;f;f;f;4787;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4788;4789;0;f;f;f;4788;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4788;4789;2;f;f;t;0;7c977cbd-2928-4dad-b019-157f779b893b",
+			"4789;4790;0;f;f;f;4789;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4790;4791;0;f;f;f;4790;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4790;4791;2;f;f;t;0;9ebedb38-c940-436e-987a-7a75f67e14f1",
+			"4791;4792;0;f;f;f;4791;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4792;4793;0;f;f;f;4792;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4792;4793;2;f;f;t;0;02cbdb48-319a-4e92-a165-e798cd2e8ae6",
+			"4793;4794;0;f;f;f;4793;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4794;4795;0;f;f;f;4794;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4794;4795;2;f;f;t;0;562e5387-4d11-4525-8319-fcb228b5f53d",
+			"4795;4796;0;f;f;f;4795;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4796;4797;0;f;f;f;4796;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4796;4797;2;f;f;t;0;16afd25f-0129-4413-b081-e5aca1d9768f",
+			"4797;4798;0;f;f;f;4797;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4798;4799;0;f;f;f;4798;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4798;4799;2;f;f;t;0;cb1cc603-915c-46fb-9ec1-f0668bf5ed7d",
+			"4799;4800;0;f;f;f;4799;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4800;4801;0;f;f;f;4800;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4800;4801;2;f;f;t;0;a4502d9c-295a-4572-a7e7-75799e25ac73",
+			"4801;4802;0;f;f;f;4801;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4802;4803;0;f;f;f;4802;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4801;4803;2;f;f;t;0;78d8ead7-6f57-43e3-bb2b-013ba7bf60db",
+			"4803;4804;0;f;f;f;4803;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4804;4805;0;f;f;f;4804;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4804;4805;2;f;f;t;0;56627fef-2d30-4bdc-93f8-34d441837952",
+			"4805;4806;0;f;f;f;4805;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4806;4807;0;f;f;f;4806;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4805;4807;2;f;f;t;0;2140f95f-0211-4e07-b00b-a0351a02645b",
+			"4807;4808;0;f;f;f;4807;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4808;4809;0;f;f;f;4808;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4808;4809;2;f;f;t;0;a9d056bb-7551-478f-af25-cbb537ebad5a",
+			"4809;4810;0;f;f;f;4809;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4810;4811;0;f;f;f;4810;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4809;4811;2;f;f;t;0;45280810-37b0-45df-94c9-e2b9a8d0e772",
+			"4811;4812;0;f;f;f;4811;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4812;4813;0;f;f;f;4812;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4812;4813;2;f;f;t;0;67cb34d2-a89f-4e9d-9f01-e687feceeea5",
+			"4813;4814;0;f;f;f;4813;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4814;4815;0;f;f;f;4814;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4813;4815;2;f;f;t;0;80ced8d9-a23f-43eb-ad25-60b9e8281bda",
+			"4815;4816;0;f;f;f;4815;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4816;4817;0;f;f;f;4816;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4816;4817;2;f;f;t;0;a83d9d5a-76dc-4bbd-8ff7-6796f9af4ed2",
+			"4817;4818;0;f;f;f;4817;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4818;4819;0;f;f;f;4818;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4818;4819;2;f;f;t;0;f4f165f3-a5d2-4aac-aed2-3b02b226f589",
+			"4819;4820;0;f;f;f;4819;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4820;4821;0;f;f;f;4820;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4820;4821;2;f;f;t;0;cdeb2f97-aa97-4ef0-95f3-a1f527e6f0c9",
+			"4821;4822;0;f;f;f;4821;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4822;4823;0;f;f;f;4822;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4822;4823;2;f;f;t;0;f302e527-ec7c-4b4b-b264-7a23b18af3f2",
+			"4823;4824;0;f;f;f;4823;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4824;4825;0;f;f;f;4824;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4824;4825;2;f;f;t;0;5800f4cf-5b33-4e12-98bc-d01ab2709d91",
+			"4825;4826;0;f;f;f;4825;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4826;4827;0;f;f;f;4826;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4826;4827;2;f;f;t;0;d46d8992-2b46-4286-8e92-0024d13e67d6",
+			"4827;4828;0;f;f;f;4827;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4828;4829;0;f;f;f;4828;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4828;4829;2;f;f;t;0;b746ecb7-5d20-4c15-ac5f-99ae4bd756fe",
+			"4829;4830;0;f;f;f;4829;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4830;4831;0;f;f;f;4830;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4830;4831;2;f;f;t;0;a558dfb4-459e-4af6-87f6-584a80d0f764",
+			"4831;4832;0;f;f;f;4831;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4832;4833;0;f;f;f;4832;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4832;4833;2;f;f;t;0;ea56d1bd-5714-4b67-9cca-1e686241c49c",
+			"4833;4834;0;f;f;f;4833;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4834;4835;0;f;f;f;4834;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4834;4835;2;f;f;t;0;4c852196-7b7c-47fe-ae70-2088f73f18c9",
+			"4835;4836;0;f;f;f;4835;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4836;4837;0;f;f;f;4836;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4836;4837;2;f;f;t;0;6d0d0dfa-e4a5-4a73-8f2d-ef598a0480bb",
+			"4837;4838;0;f;f;f;4837;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4838;4839;0;f;f;f;4838;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4838;4839;2;f;f;t;0;7ab16593-5935-4149-9788-6ca0c62f84c6",
+			"4839;4840;0;f;f;f;4839;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4840;4841;0;f;f;f;4840;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4840;4841;2;f;f;t;0;05c759c9-00ba-41f0-b0fb-6b9ab3fb22f5",
+			"4841;4842;0;f;f;f;4841;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4842;4843;0;f;f;f;4842;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4842;4843;2;f;f;t;0;fc113ade-1f61-4024-aea1-a961815823e0",
+			"4843;4844;0;f;f;f;4843;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4844;4845;0;f;f;f;4844;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4844;4845;2;f;f;t;0;0cb0fdfd-df78-4332-9c32-d114dd18ef9e",
+			"4845;4846;0;f;f;f;4845;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4846;4847;0;f;f;f;4846;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4846;4847;2;f;f;t;0;c345d184-60e9-4fa1-96f0-5a29d8fc2798",
+			"4847;4848;0;f;f;f;4847;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4848;4849;0;f;f;f;4848;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4848;4849;2;f;f;t;0;5cd1f5c8-e01f-4345-9279-6fb0d56492da",
+			"4849;4850;0;f;f;f;4849;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4850;4851;0;f;f;f;4850;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4849;4851;2;f;f;t;0;810dec81-c4da-4055-85fc-9241a1304716",
+			"4851;4852;0;f;f;f;4851;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4852;4853;0;f;f;f;4852;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4852;4853;2;f;f;t;0;70dcc327-eb38-4862-b06c-1fcc2a064f7a",
+			"4853;4854;0;f;f;f;4853;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4854;4855;0;f;f;f;4854;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4854;4855;2;f;f;t;0;7faa2d68-ca23-4f12-bef7-2c932edaf93a",
+			"4855;4856;0;f;f;f;4855;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4856;4857;0;f;f;f;4856;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4856;4857;2;f;f;t;0;78a19b52-f59a-4501-881b-94952ed9e741",
+			"4857;4858;0;f;f;f;4857;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4858;4859;0;f;f;f;4858;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4858;4859;2;f;f;t;0;1a786685-71b6-4c80-a5ae-ebc2927818ba",
+			"4859;4860;0;f;f;f;4859;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4860;4861;0;f;f;f;4860;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4860;4861;2;f;f;t;0;01133a96-e84f-41d3-a725-dd0dbfaf88ad",
+			"4861;4862;0;f;f;f;4861;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4862;4863;0;f;f;f;4862;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4862;4863;2;f;f;t;0;43994c02-b36c-4d17-b13d-a2cc4e7d6d46",
+			"4863;4864;0;f;f;f;4863;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4864;4865;0;f;f;f;4864;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4864;4865;2;f;f;t;0;ffccac55-1039-4007-a994-ce7ab25b0a22",
+			"4865;4866;0;f;f;f;4865;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4866;4867;0;f;f;f;4866;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4866;4867;2;f;f;t;0;8ffc9f62-23c2-4caa-bdad-ba2ab93ae371",
+			"4867;4868;0;f;f;f;4867;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4868;4869;0;f;f;f;4868;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4868;4869;2;f;f;t;0;430193b0-10da-46ab-9619-f38c0cd4b6f3",
+			"4869;4870;0;f;f;f;4869;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4870;4871;0;f;f;f;4870;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4870;4871;2;f;f;t;0;b6a48713-57bf-4638-b233-21194aa6fcf9",
+			"4871;4872;0;f;f;f;4871;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4872;4873;0;f;f;f;4872;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4872;4873;2;f;f;t;0;745a269a-efd8-4de0-8f8e-f5d7f8a0d875",
+			"4873;4874;0;f;f;f;4873;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4874;4875;0;f;f;f;4874;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4874;4875;2;f;f;t;0;4d433860-5ac9-4b73-86c6-486b272f92cf",
+			"4875;4876;0;f;f;f;4875;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4876;4877;0;f;f;f;4876;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4876;4877;2;f;f;t;0;d99f8dea-c7f0-4e6b-929d-7f5612ac7193",
+			"4877;4878;0;f;f;f;4877;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4878;4879;0;f;f;f;4878;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4878;4879;2;f;f;t;0;7523d108-ea76-4e76-821d-32cf37558a24",
+			"4879;4880;0;f;f;f;4879;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4880;4881;0;f;f;f;4880;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4880;4881;2;f;f;t;0;afad6fd8-da15-4bcd-beaa-2699496b0ae5",
+			"4881;4882;0;f;f;f;4881;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4882;4883;0;f;f;f;4882;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4882;4883;2;f;f;t;0;05aebad9-061f-417a-aaae-fbea13eb4a97",
+			"4883;4884;0;f;f;f;4883;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4884;4885;0;f;f;f;4884;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4884;4885;2;f;f;t;0;50624c97-1ceb-4db1-9511-d1379ae16ead",
+			"4885;4886;0;f;f;f;4885;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4886;4887;0;f;f;f;4886;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4886;4887;2;f;f;t;0;18d602ea-537e-40dd-b0d5-1416fb683779",
+			"4887;4888;0;f;f;f;4887;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4888;4889;0;f;f;f;4888;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4888;4889;2;f;f;t;0;504ee49d-6537-40b8-bce5-ca08e893c745",
+			"4889;4890;0;f;f;f;4889;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4890;4891;0;f;f;f;4890;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4890;4891;2;f;f;t;0;1c7a4da4-fad4-4814-998e-eda621a4bd2a",
+			"4891;4892;0;f;f;f;4891;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4892;4893;0;f;f;f;4892;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4892;4893;2;f;f;t;0;cfdf636c-ad86-45f5-ae1c-aa082e8e52c3",
+			"4893;4894;0;f;f;f;4893;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4894;4895;0;f;f;f;4894;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4894;4895;2;f;f;t;0;db877d3d-aacb-4a5c-8d57-57df34946974",
+			"4895;4896;0;f;f;f;4895;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4896;4897;0;f;f;f;4896;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4896;4897;2;f;f;t;0;cf42e294-1dd4-43fc-a3f0-54576ef8a0c2",
+			"4897;4898;0;f;f;f;4897;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4898;4899;0;f;f;f;4898;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4898;4899;2;f;f;t;0;c93e709e-5de3-4129-840f-b3ecb386747e",
+			"4899;4900;0;f;f;f;4899;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4900;4901;0;f;f;f;4900;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4900;4901;2;f;f;t;0;8cd277ec-92e0-4cb8-bed1-790775402431",
+			"4901;4902;0;f;f;f;4901;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4902;4903;0;f;f;f;4902;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4902;4903;2;f;f;t;0;dff48ccd-aabe-4793-9096-f914a2ac23f7",
+			"4903;4904;0;f;f;f;4903;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4904;4905;0;f;f;f;4904;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4904;4905;2;f;f;t;0;f4350889-5344-4a66-b579-64358f055b64",
+			"4905;4906;0;f;f;f;4905;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4906;4907;0;f;f;f;4906;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4906;4907;2;f;f;t;0;ec9ed1bf-060f-4c98-babf-65c647ded426",
+			"4907;4908;0;f;f;f;4907;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4908;4909;0;f;f;f;4908;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4908;4909;2;f;f;t;0;55654de4-3e14-46c6-a782-c7fcd6999227",
+			"4909;4910;0;f;f;f;4909;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4910;4911;0;f;f;f;4910;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4910;4911;2;f;f;t;0;fb9cf472-eff7-4ec6-8eb6-2ce38e7f41bc",
+			"4911;4912;0;f;f;f;4911;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4912;4913;0;f;f;f;4912;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4912;4913;2;f;f;t;0;705c4932-9978-4a73-bd8e-07aa2d37e39e",
+			"4913;4914;0;f;f;f;4913;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4914;4915;0;f;f;f;4914;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4914;4915;2;f;f;t;0;822caa4d-2229-4060-890d-b424cbcd2633",
+			"4915;4916;0;f;f;f;4915;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4916;4917;0;f;f;f;4916;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4916;4917;2;f;f;t;0;64263d65-6ce5-4289-ba88-22ae8a4396ed",
+			"4917;4918;0;f;f;f;4917;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4918;4919;0;f;f;f;4918;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4918;4919;2;f;f;t;0;b45fa431-8ee1-41e2-af2e-586b3feb7061",
+			"4919;4920;0;f;f;f;4919;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4920;4921;0;f;f;f;4920;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4920;4921;2;f;f;t;0;c4724a86-965a-4976-acad-cb812c5a4985",
+			"4921;4922;0;f;f;f;4921;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4922;4923;0;f;f;f;4922;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4921;4923;2;f;f;t;0;e1a3a827-35d0-4e2d-8d6d-8733de6225c4",
+			"4923;4924;0;f;f;f;4923;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4924;4925;0;f;f;f;4924;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4924;4925;2;f;f;t;0;5ec887ce-1764-43ad-b3a6-35c54365860b",
+			"4925;4926;0;f;f;f;4925;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4926;4927;0;f;f;f;4926;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4925;4927;2;f;f;t;0;c9fbf1fc-903d-40d6-a922-7c0f89a9f08a",
+			"4927;4928;0;f;f;f;4927;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4928;4929;0;f;f;f;4928;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4928;4929;2;f;f;t;0;f87126de-340f-482c-9baa-ff515cb45619",
+			"4929;4930;0;f;f;f;4929;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4930;4931;0;f;f;f;4930;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4929;4931;2;f;f;t;0;64ceba83-7249-4795-872c-d94b5a3737eb",
+			"4931;4932;0;f;f;f;4931;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4932;4933;0;f;f;f;4932;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4932;4933;2;f;f;t;0;65ab1fce-f90c-4709-87b8-244c516d273b",
+			"4933;4934;0;f;f;f;4933;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4934;4935;0;f;f;f;4934;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4934;4935;2;f;f;t;0;9c9f4ae3-a5c3-4f15-8cd3-0efb8505df33",
+			"4935;4936;0;f;f;f;4935;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4936;4937;0;f;f;f;4936;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4936;4937;2;f;f;t;0;73669ef9-7c81-4796-99a2-b2eadb1e26ff",
+			"4937;4938;0;f;f;f;4937;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4938;4939;0;f;f;f;4938;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4938;4939;2;f;f;t;0;ddb4a74c-2a33-4013-a311-208d036c2ea7",
+			"4939;4940;0;f;f;f;4939;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4940;4941;0;f;f;f;4940;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4940;4941;2;f;f;t;0;721e79f9-d869-4caf-9165-651b13290387",
+			"4941;4942;0;f;f;f;4941;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4942;4943;0;f;f;f;4942;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4942;4943;2;f;f;t;0;bf3cdefd-5396-4ffc-8b32-7cfdd61c4419",
+			"4943;4944;0;f;f;f;4943;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4944;4945;0;f;f;f;4944;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4944;4945;2;f;f;t;0;a25bf44d-82f2-48f0-b47e-515c53e6ab39",
+			"4945;4946;0;f;f;f;4945;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4946;4947;0;f;f;f;4946;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4946;4947;2;f;f;t;0;bbcee3c2-0f23-49ec-a5c5-c1a2f998a8a4",
+			"4947;4948;0;f;f;f;4947;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4948;4949;0;f;f;f;4948;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4948;4949;2;f;f;t;0;a5aa66c5-5d51-4a2a-afcc-cf10bd045cff",
+			"4949;4950;0;f;f;f;4949;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4950;4951;0;f;f;f;4950;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4950;4951;2;f;f;t;0;8d4fad36-8a49-4723-9aed-c7b776e35a06",
+			"4951;4952;0;f;f;f;4951;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4952;4953;0;f;f;f;4952;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4952;4953;2;f;f;t;0;5e970a67-49c4-438d-9b16-df88bad22776",
+			"4953;4954;0;f;f;f;4953;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4954;4955;0;f;f;f;4954;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4954;4955;2;f;f;t;0;a8091672-fb4b-4a35-abd4-739548b397f1",
+			"4955;4956;0;f;f;f;4955;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4956;4957;0;f;f;f;4956;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4956;4957;2;f;f;t;0;04ab00d1-cd1a-471c-b259-78b1679bed6c",
+			"4957;4958;0;f;f;f;4957;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4958;4959;0;f;f;f;4958;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4958;4959;2;f;f;t;0;c277c5e0-8649-4503-90fe-406153dbb958",
+			"4959;4960;0;f;f;f;4959;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4960;4961;0;f;f;f;4960;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4960;4961;2;f;f;t;0;77d7b74b-744e-4645-bff5-35d56df87bac",
+			"4961;4962;0;f;f;f;4961;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4962;4963;0;f;f;f;4962;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4962;4963;2;f;f;t;0;ba174ed6-6fa3-4ca3-8ff0-4c1ee187dcc9",
+			"4963;4964;0;f;f;f;4963;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4964;4965;0;f;f;f;4964;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4964;4965;2;f;f;t;0;4da87432-d058-4839-8425-58a65fa1fb75",
+			"4965;4966;0;f;f;f;4965;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4966;4967;0;f;f;f;4966;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4966;4967;2;f;f;t;0;9ec8fc3d-5003-4611-afde-8d07f46440a6",
+			"4967;4968;0;f;f;f;4967;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4968;4969;0;f;f;f;4968;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4968;4969;2;f;f;t;0;bc1ff10d-5048-42ac-8325-b6c37125ea4a",
+			"4969;4970;0;f;f;f;4969;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4970;4971;0;f;f;f;4970;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4970;4971;2;f;f;t;0;ad6d80db-5201-4155-8f94-791815a6f5b9",
+			"4971;4972;0;f;f;f;4971;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4972;4973;0;f;f;f;4972;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4972;4973;2;f;f;t;0;59f49ab3-d433-4eaf-bf06-e139b7d89377",
+			"4973;4974;0;f;f;f;4973;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4974;4975;0;f;f;f;4974;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4974;4975;2;f;f;t;0;2c72d40d-0d07-4c01-b3a0-e2b6f00b0f99",
+			"4975;4976;0;f;f;f;4975;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4976;4977;0;f;f;f;4976;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4976;4977;2;f;f;t;0;2eeb4a65-6992-42a0-bd34-1cff08972eea",
+			"4977;4978;0;f;f;f;4977;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4978;4979;0;f;f;f;4978;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4978;4979;2;f;f;t;0;5737f5d5-00b1-4cc3-873c-f68b4f03dd56",
+			"4979;4980;0;f;f;f;4979;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4980;4981;0;f;f;f;4980;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4980;4981;2;f;f;t;0;62de46a8-b71b-4667-ac8e-d7cbd0357cc9",
+			"4981;4982;0;f;f;f;4981;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4982;4983;0;f;f;f;4982;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4982;4983;2;f;f;t;0;94d499a8-e0a0-40c6-92be-65c3415c921e",
+			"4983;4984;0;f;f;f;4983;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4984;4985;0;f;f;f;4984;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4984;4985;2;f;f;t;0;7cc26558-4b81-456a-bca0-b43522dc27f2",
+			"4985;4986;0;f;f;f;4985;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4986;4987;0;f;f;f;4986;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4986;4987;2;f;f;t;0;39e66718-f16f-4e98-a8de-282d944e88c3",
+			"4987;4988;0;f;f;f;4987;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4988;4989;0;f;f;f;4988;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4988;4989;2;f;f;t;0;04be06de-c7ac-4ef0-95cc-d4534fcd6f71",
+			"4989;4990;0;f;f;f;4989;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4990;4991;0;f;f;f;4990;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4990;4991;2;f;f;t;0;18fe266c-bd2f-4f2d-b1ff-647c59369af8",
+			"4991;4992;0;f;f;f;4991;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4992;4993;0;f;f;f;4992;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4992;4993;2;f;f;t;0;07e5e3df-803c-4b54-9eef-92bd7c5541a6",
+			"4993;4994;0;f;f;f;4993;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4994;4995;0;f;f;f;4994;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4994;4995;2;f;f;t;0;8dc94eb9-2347-4d58-a11f-b959718ad8d1",
+			"4995;4996;0;f;f;f;4995;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4996;4997;0;f;f;f;4996;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4996;4997;2;f;f;t;0;7827eb2f-2936-4284-98cf-b3ede5e3b648",
+			"4997;4998;0;f;f;f;4997;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4998;4999;0;f;f;f;4998;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"4998;4999;2;f;f;t;0;16481f0a-bafd-43ce-b17a-eebde12339b6",
+			"4999;5000;0;f;f;f;4999;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5000;5001;0;f;f;f;5000;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5000;5001;2;f;f;t;0;31c28b22-4d56-415a-af6e-2d80a91a83f4",
+			"5001;5002;0;f;f;f;5001;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5002;5003;0;f;f;f;5002;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5002;5003;2;f;f;t;0;e4d25e34-c093-4bc9-9077-e71c1d61e595",
+			"5003;5004;0;f;f;f;5003;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5004;5005;0;f;f;f;5004;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5004;5005;2;f;f;t;0;92e22ebc-7b02-4591-ae54-6f50ff126f4a",
+			"5005;5006;0;f;f;f;5005;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5006;5007;0;f;f;f;5006;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5006;5007;2;f;f;t;0;d1d28131-d3cf-4aeb-aeba-e56897cdf09c",
+			"5007;5008;0;f;f;f;5007;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5008;5009;0;f;f;f;5008;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5008;5009;2;f;f;t;0;487c182f-5fbd-445f-9c83-2d1b6e5e97de",
+			"5009;5010;0;f;f;f;5009;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5010;5011;0;f;f;f;5010;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5010;5011;2;f;f;t;0;8e1085df-827c-4a0d-a6ac-f2d8c1c0eb47",
+			"5011;5012;0;f;f;f;5011;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5012;5013;0;f;f;f;5012;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5012;5013;2;f;f;t;0;d3de654a-9738-4e9b-a4a6-d94e6d49b886",
+			"5013;5014;0;f;f;f;5013;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5014;5015;0;f;f;f;5014;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5014;5015;2;f;f;t;0;1c9475dd-6b8d-45b2-a0e5-80f1d1c9b21b",
+			"5015;5016;0;f;f;f;5015;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5016;5017;0;f;f;f;5016;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5016;5017;2;f;f;t;0;616965dc-c89e-4f50-a79f-21fe6f8328f5",
+			"5017;5018;0;f;f;f;5017;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5018;5019;0;f;f;f;5018;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5018;5019;2;f;f;t;0;628e10bd-3b0f-4acb-b416-8da9b7b828e5",
+			"5019;5020;0;f;f;f;5019;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5020;5021;0;f;f;f;5020;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5020;5021;2;f;f;t;0;723044fa-7ea3-49a2-bbc8-47aa021a1129",
+			"5021;5022;0;f;f;f;5021;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5022;5023;0;f;f;f;5022;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5022;5023;2;f;f;t;0;16574834-db37-46d8-8629-a1da02ade248",
+			"5023;5024;0;f;f;f;5023;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5024;5025;0;f;f;f;5024;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5024;5025;2;f;f;t;0;a14d308e-4e97-47d9-ac61-19f3ed3df9ef",
+			"5025;5026;0;f;f;f;5025;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5026;5027;0;f;f;f;5026;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5026;5027;2;f;f;t;0;5d7ae254-630e-410c-90b9-ce4affec1d6e",
+			"5027;5028;0;f;f;f;5027;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5028;5029;0;f;f;f;5028;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5028;5029;2;f;f;t;0;bf90e90e-d22d-4f6b-9740-c3c3faef34b3",
+			"5029;5030;0;f;f;f;5029;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5030;5031;0;f;f;f;5030;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5030;5031;2;f;f;t;0;839fcafe-0524-45b4-be59-443cdb77306e",
+			"5031;5032;0;f;f;f;5031;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5032;5033;0;f;f;f;5032;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5032;5033;2;f;f;t;0;149af195-1061-4628-b021-88b837aa0dd4",
+			"5033;5034;0;f;f;f;5033;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5034;5035;0;f;f;f;5034;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5034;5035;2;f;f;t;0;1c4a79da-b661-48aa-8619-b96e51504884",
+			"5035;5036;0;f;f;f;5035;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5036;5037;0;f;f;f;5036;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5036;5037;2;f;f;t;0;d32210f4-0925-4f57-a4dc-be22750b17eb",
+			"5037;5038;0;f;f;f;5037;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5038;5039;0;f;f;f;5038;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5038;5039;2;f;f;t;0;473c6397-dfd1-469a-b761-4ea99c79a176",
+			"5039;5040;0;f;f;f;5039;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5040;5041;0;f;f;f;5040;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5040;5041;2;f;f;t;0;b064a3bb-064e-4313-8635-704090ce76e0",
+			"5041;5042;0;f;f;f;5041;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5042;5043;0;f;f;f;5042;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5042;5043;2;f;f;t;0;17978f3d-1429-46d4-9edd-de9182b3e4cf",
+			"5043;5044;0;f;f;f;5043;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5044;5045;0;f;f;f;5044;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5044;5045;2;f;f;t;0;de40ccd1-1344-41a3-bcb4-590443a6b86e",
+			"5045;5046;0;f;f;f;5045;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5046;5047;0;f;f;f;5046;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5045;5047;2;f;f;t;0;8a08724e-66e5-4c5f-91be-476e7c72847d",
+			"5047;5048;0;f;f;f;5047;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5048;5049;0;f;f;f;5048;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5048;5049;2;f;f;t;0;807d9821-11c7-45ae-ba27-a7fc8a44bebe",
+			"5049;5050;0;f;f;f;5049;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5050;5051;0;f;f;f;5050;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5050;5051;2;f;f;t;0;c06637a7-4f84-4751-959d-1a5456fbbe52",
+			"5051;5052;0;f;f;f;5051;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5052;5053;0;f;f;f;5052;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5053;5054;0;f;f;f;5053;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5052;5054;2;f;f;t;0;c7d929f1-0d86-438c-b88a-a464afe46294",
+			"5053;5054;2;f;f;t;0;2b321682-38ac-48f7-9112-8926db1d26b3",
+			"5054;5055;0;f;f;f;5054;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5055;5056;0;f;f;f;5055;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5056;5057;0;f;f;f;5056;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5056;5057;2;f;f;t;0;98d58d47-8443-4859-ab67-3fb1023d523b",
+			"5057;5058;0;f;f;f;5057;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5058;5059;0;f;f;f;5058;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5057;5059;2;f;f;t;0;036db5e1-4b7a-44e8-95bf-e417d21b49c1",
+			"5059;5060;0;f;f;f;5059;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5060;5061;0;f;f;f;5060;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5060;5061;2;f;f;t;0;b4fdcdc0-8251-445e-9078-42a1420e26be",
+			"5061;5062;0;f;f;f;5061;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5062;5063;0;f;f;f;5062;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5062;5063;2;f;f;t;0;fcb0860e-5596-413c-a028-570e961022e1",
+			"5063;5064;0;f;f;f;5063;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5064;5065;0;f;f;f;5064;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5064;5065;2;f;f;t;0;14705cf3-ab3a-49db-bd5b-4d1ec135976e",
+			"5065;5066;0;f;f;f;5065;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5066;5067;0;f;f;f;5066;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5065;5067;2;f;f;t;0;a01c2635-d50f-44a5-b5d5-9f39f49f0682",
+			"5067;5068;0;f;f;f;5067;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5068;5069;0;f;f;f;5068;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5068;5069;2;f;f;t;0;ddc25701-651f-4872-8c03-c803521eff58",
+			"5069;5070;0;f;f;f;5069;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5070;5071;0;f;f;f;5070;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5069;5071;2;f;f;t;0;4685073f-223b-42dc-b415-4470fcfedd0f",
+			"5071;5072;0;f;f;f;5071;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5072;5073;0;f;f;f;5072;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5072;5073;2;f;f;t;0;b2db5f3d-649d-418f-adc8-743b52dc7674",
+			"5073;5074;0;f;f;f;5073;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5074;5075;0;f;f;f;5074;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5074;5075;2;f;f;t;0;605bb036-68e5-4e55-abe7-91f76f74c700",
+			"5075;5076;0;f;f;f;5075;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5076;5077;0;f;f;f;5076;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5076;5077;2;f;f;t;0;983537a1-e3ab-481f-9b99-44d5f864d70a",
+			"5077;5078;0;f;f;f;5077;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5078;5079;0;f;f;f;5078;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5078;5079;2;f;f;t;0;d46ec1d8-06bb-4993-b7d2-aefd300bc345",
+			"5079;5080;0;f;f;f;5079;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5080;5081;0;f;f;f;5080;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5080;5081;2;f;f;t;0;9181c705-7fad-4fd8-83d6-51684bbaa384",
+			"5081;5082;0;f;f;f;5081;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5082;5083;0;f;f;f;5082;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5082;5083;2;f;f;t;0;32b029b4-9b1b-47e9-b31b-dd33ddfa6d8f",
+			"5083;5084;0;f;f;f;5083;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5084;5085;0;f;f;f;5084;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5084;5085;2;f;f;t;0;07082a49-50f2-4d1d-b6a4-48cbeccd1cf6",
+			"5085;5086;0;f;f;f;5085;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5086;5087;0;f;f;f;5086;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5086;5087;2;f;f;t;0;98ab86a6-3175-425b-ae98-c7b67baa0e31",
+			"5087;5088;0;f;f;f;5087;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5088;5089;0;f;f;f;5088;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5088;5089;2;f;f;t;0;8d997ae5-cc30-449f-8d64-0ff95f52636f",
+			"5089;5090;0;f;f;f;5089;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5090;5091;0;f;f;f;5090;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5090;5091;2;f;f;t;0;d0a73bb2-52f4-4293-8a0f-0617761f8be2",
+			"5091;5092;0;f;f;f;5091;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5092;5093;0;f;f;f;5092;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5092;5093;2;f;f;t;0;17ab70c0-0e49-4de2-a49f-0cd681ae288b",
+			"5093;5094;0;f;f;f;5093;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5094;5095;0;f;f;f;5094;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5095;5096;0;f;f;f;5095;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5094;5096;2;f;f;t;0;30ca3990-b7b2-4254-9df6-b991bb8158f4",
+			"5095;5096;2;f;f;t;0;93f9ae0f-1087-4f8d-bc80-9b0d764323d5",
+			"5096;5097;0;f;f;f;5096;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5097;5098;0;f;f;f;5097;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5098;5099;0;f;f;f;5098;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5098;5099;2;f;f;t;0;0ef9c5db-4357-444a-bcef-867406ce8e01",
+			"5099;5100;0;f;f;f;5099;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5100;5101;0;f;f;f;5100;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5100;5101;2;f;f;t;0;b5bc4ab7-e515-4f1e-9232-e21ef849ee26",
+			"5101;5102;0;f;f;f;5101;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5102;5103;0;f;f;f;5102;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5102;5103;2;f;f;t;0;b722b861-82ef-466a-9bd6-958e19fc4bba",
+			"5103;5104;0;f;f;f;5103;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5104;5105;0;f;f;f;5104;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5104;5105;2;f;f;t;0;03284959-eb8c-47fc-96d7-e132924c05e0",
+			"5105;5106;0;f;f;f;5105;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5106;5107;0;f;f;f;5106;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5106;5107;2;f;f;t;0;4ac5726d-56e2-4e49-8717-f09c405faf58",
+			"5107;5108;0;f;f;f;5107;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5108;5109;0;f;f;f;5108;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5108;5109;2;f;f;t;0;1099e478-2546-4094-8c8a-87dac7937077",
+			"5109;5110;0;f;f;f;5109;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5110;5111;0;f;f;f;5110;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5110;5111;2;f;f;t;0;228aa89a-5c57-4011-9859-85fed8389dcf",
+			"5111;5112;0;f;f;f;5111;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5112;5113;0;f;f;f;5112;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5112;5113;2;f;f;t;0;32ad2e48-e7f5-43dd-9d94-73e3b57ad159",
+			"5113;5114;0;f;f;f;5113;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5114;5115;0;f;f;f;5114;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5114;5115;2;f;f;t;0;8b8682cb-21c7-4cc2-9434-fc3301803e64",
+			"5115;5116;0;f;f;f;5115;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5116;5117;0;f;f;f;5116;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5116;5117;2;f;f;t;0;4d9cf4b9-f405-43de-b07d-ffbbe420f3c2",
+			"5117;5118;0;f;f;f;5117;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5118;5119;0;f;f;f;5118;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5118;5119;2;f;f;t;0;b2f36c39-9197-4e5a-b815-983c5b729bf3",
+			"5119;5120;0;f;f;f;5119;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5120;5121;0;f;f;f;5120;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5120;5121;2;f;f;t;0;a826db9d-df26-403b-8af9-4aeb9cbda9af",
+			"5121;5122;0;f;f;f;5121;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5122;5123;0;f;f;f;5122;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5122;5123;2;f;f;t;0;85de3b46-98ad-4682-b3a8-02651564e9c8",
+			"5123;5124;0;f;f;f;5123;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5124;5125;0;f;f;f;5124;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5124;5125;2;f;f;t;0;4fe23a70-d5a6-458b-9a93-e2867a96271f",
+			"5125;5126;0;f;f;f;5125;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5126;5127;0;f;f;f;5126;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5126;5127;2;f;f;t;0;7b0687e4-aa33-4f32-ac00-33c7ba5ca4f0",
+			"5127;5128;0;f;f;f;5127;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5128;5129;0;f;f;f;5128;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5128;5129;2;f;f;t;0;8f24b555-57a7-4fcd-8b7a-8c1f171c2ad1",
+			"5129;5130;0;f;f;f;5129;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5130;5131;0;f;f;f;5130;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5130;5131;2;f;f;t;0;aaddd126-4262-4bc1-b437-9812f5adae6a",
+			"5131;5132;0;f;f;f;5131;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5132;5133;0;f;f;f;5132;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5132;5133;2;f;f;t;0;a36ed465-e2da-4c32-80e2-ac3b897e6a1c",
+			"5133;5134;0;f;f;f;5133;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5134;5135;0;f;f;f;5134;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5134;5135;2;f;f;t;0;5dc69616-0eaa-4d70-a9a5-f39f90d38ca9",
+			"5135;5136;0;f;f;f;5135;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5136;5137;0;f;f;f;5136;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5136;5137;2;f;f;t;0;6deb6313-cc2a-4324-9921-75303f967fca",
+			"5137;5138;0;f;f;f;5137;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5138;5139;0;f;f;f;5138;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5138;5139;2;f;f;t;0;2e8f9e6e-5dfa-466e-a03e-9ce9dcd394db",
+			"5139;5140;0;f;f;f;5139;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5140;5141;0;f;f;f;5140;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5140;5141;2;f;f;t;0;eb26bb84-7238-4ce5-83f7-d4446f2da8b7",
+			"5141;5142;0;f;f;f;5141;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5142;5143;0;f;f;f;5142;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5142;5143;2;f;f;t;0;8842e760-4ac6-4bb8-a496-48105917527d",
+			"5143;5144;0;f;f;f;5143;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5144;5145;0;f;f;f;5144;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5144;5145;2;f;f;t;0;8233e018-1c6e-41b9-b364-187410ef9bb1",
+			"5145;5146;0;f;f;f;5145;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5146;5147;0;f;f;f;5146;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5146;5147;2;f;f;t;0;b2f2af30-7036-4891-a3aa-c8b8774cbe01",
+			"5147;5148;0;f;f;f;5147;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5148;5149;0;f;f;f;5148;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5148;5149;2;f;f;t;0;0431f136-e2c3-4634-ab9b-9b162276a678",
+			"5149;5150;0;f;f;f;5149;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5150;5151;0;f;f;f;5150;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5150;5151;2;f;f;t;0;e965b2fe-3d90-4b1d-a143-cefd891703ec",
+			"5151;5152;0;f;f;f;5151;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5152;5153;0;f;f;f;5152;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5152;5153;2;f;f;t;0;41282d9e-3b4a-4b51-af8d-6531e0ba2667",
+			"5153;5154;0;f;f;f;5153;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5154;5155;0;f;f;f;5154;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5154;5155;2;f;f;t;0;e2d680aa-cf23-4da7-9598-ba991ee2c4c0",
+			"5155;5156;0;f;f;f;5155;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5156;5157;0;f;f;f;5156;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5156;5157;2;f;f;t;0;58ea9850-bb00-4297-8ea1-db07018829e0",
+			"5157;5158;0;f;f;f;5157;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5158;5159;0;f;f;f;5158;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5158;5159;2;f;f;t;0;18182cca-8604-47b2-b820-dad63f030438",
+			"5159;5160;0;f;f;f;5159;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5160;5161;0;f;f;f;5160;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5160;5161;2;f;f;t;0;7e3da007-f779-401e-bdef-fe310f4ba642",
+			"5161;5162;0;f;f;f;5161;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5162;5163;0;f;f;f;5162;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5162;5163;2;f;f;t;0;637f45ca-37f0-4fb7-8f91-34769a7e81b4",
+			"5163;5164;0;f;f;f;5163;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5164;5165;0;f;f;f;5164;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5164;5165;2;f;f;t;0;9b0618da-4506-4efc-95e5-d21d735b02d0",
+			"5165;5166;0;f;f;f;5165;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5166;5167;0;f;f;f;5166;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5166;5167;2;f;f;t;0;5f4eda18-6589-419b-8283-a41cab270dc8",
+			"5167;5168;0;f;f;f;5167;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5168;5169;0;f;f;f;5168;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5168;5169;2;f;f;t;0;dc556700-b67c-487b-a847-5c214f17f00c",
+			"5169;5170;0;f;f;f;5169;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5170;5171;0;f;f;f;5170;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5169;5171;2;f;f;t;0;43ce66c3-1075-4a93-8af6-8d4a714c95ab",
+			"5171;5172;0;f;f;f;5171;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5172;5173;0;f;f;f;5172;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5172;5173;2;f;f;t;0;d4a7b669-b31d-4208-9126-e02e9234c662",
+			"5173;5174;0;f;f;f;5173;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5174;5175;0;f;f;f;5174;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5173;5175;2;f;f;t;0;b6c95caf-0923-491c-9e22-9343a7dddb1d",
+			"5175;5176;0;f;f;f;5175;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5176;5177;0;f;f;f;5176;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5176;5177;2;f;f;t;0;25521398-5e27-4e0a-9003-7505ff2b1fe6",
+			"5177;5178;0;f;f;f;5177;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5178;5179;0;f;f;f;5178;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5178;5179;2;f;f;t;0;09e00d42-9497-4b62-b445-9518258a1aba",
+			"5179;5180;0;f;f;f;5179;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5180;5181;0;f;f;f;5180;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5180;5181;2;f;f;t;0;7d35c919-00ab-4d26-b2f5-e57d021e8e68",
+			"5181;5182;0;f;f;f;5181;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5182;5183;0;f;f;f;5182;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5182;5183;2;f;f;t;0;03534025-3d79-4344-bd2e-e2e0479aae87",
+			"5183;5184;0;f;f;f;5183;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5184;5185;0;f;f;f;5184;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5184;5185;2;f;f;t;0;e185a37f-bab1-48e4-b8d0-aa3078e9f9d5",
+			"5185;5186;0;f;f;f;5185;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5186;5187;0;f;f;f;5186;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5186;5187;2;f;f;t;0;5d34294b-7e54-4d92-9d75-3532a8c64033",
+			"5187;5188;0;f;f;f;5187;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5188;5189;0;f;f;f;5188;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5188;5189;2;f;f;t;0;eada8fa4-f2ec-4b49-b428-f94ceca29e3b",
+			"5189;5190;0;f;f;f;5189;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5190;5191;0;f;f;f;5190;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5190;5191;2;f;f;t;0;b289d69a-7a48-49a2-9141-8ab485377191",
+			"5191;5192;0;f;f;f;5191;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5192;5193;0;f;f;f;5192;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5192;5193;2;f;f;t;0;51c98281-597d-4245-a313-89f79bb4b38f",
+			"5193;5194;0;f;f;f;5193;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5194;5195;0;f;f;f;5194;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5194;5195;2;f;f;t;0;ed771d09-542e-4f09-9525-3444f3c1cff2",
+			"5195;5196;0;f;f;f;5195;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5196;5197;0;f;f;f;5196;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5196;5197;2;f;f;t;0;c8008cf4-384c-4af3-adc2-56a4a01889f2",
+			"5197;5198;0;f;f;f;5197;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5198;5199;0;f;f;f;5198;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5198;5199;2;f;f;t;0;63eb5e7d-70b1-4acd-bbd0-59027ce1d8e2",
+			"5199;5200;0;f;f;f;5199;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5200;5201;0;f;f;f;5200;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5200;5201;2;f;f;t;0;9d8447cb-8021-4610-90c7-b0bc2a070c4c",
+			"5201;5202;0;f;f;f;5201;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5202;5203;0;f;f;f;5202;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5203;5204;0;f;f;f;5203;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5202;5204;2;f;f;t;0;8ef9d63d-6370-4861-9135-f01116e7cab2",
+			"5203;5204;2;f;f;t;0;9e477d7b-21ef-4565-96a4-35f28f663cf8",
+			"5204;5205;0;f;f;f;5204;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5205;5206;0;f;f;f;5205;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5206;5207;0;f;f;f;5206;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5207;5208;0;f;f;f;5207;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5206;5208;2;f;f;t;0;eddc3896-15c7-48ed-8d94-7c7fc8742f29",
+			"5207;5208;2;f;f;t;0;cca82f78-6ffe-4ad0-b4cc-a4fe8da58ba6",
+			"5208;5209;0;f;f;f;5208;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5209;5210;0;f;f;f;5209;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5210;5211;0;f;f;f;5210;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5210;5211;2;f;f;t;0;990dcec4-b11c-47c8-8acc-259890caabe6",
+			"5211;5212;0;f;f;f;5211;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5212;5213;0;f;f;f;5212;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5211;5213;2;f;f;t;0;66a85d8b-4520-47af-b71f-6eb87ff730e5",
+			"5213;5214;0;f;f;f;5213;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5214;5215;0;f;f;f;5214;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5214;5215;2;f;f;t;0;06ef6afa-3f50-4430-8b5f-0decc244f07b",
+			"5215;5216;0;f;f;f;5215;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5216;5217;0;f;f;f;5216;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5215;5217;2;f;f;t;0;4244eb40-514f-422c-a9ad-f208378ffbe0",
+			"5217;5218;0;f;f;f;5217;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5218;5219;0;f;f;f;5218;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5218;5219;2;f;f;t;0;d377ed14-4bb1-4d9d-92bd-5e3ed108502d",
+			"5219;5220;0;f;f;f;5219;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5220;5221;0;f;f;f;5220;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5220;5221;2;f;f;t;0;97e1626f-a0e4-4f8a-b58d-f9fc50491fc2",
+			"5221;5222;0;f;f;f;5221;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5222;5223;0;f;f;f;5222;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5222;5223;2;f;f;t;0;c8faae5b-b76e-426f-959a-8addbbc91f96",
+			"5223;5224;0;f;f;f;5223;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5224;5225;0;f;f;f;5224;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5224;5225;2;f;f;t;0;2bc72f4b-5601-4593-9344-a30b71f433ed",
+			"5225;5226;0;f;f;f;5225;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5226;5227;0;f;f;f;5226;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5226;5227;2;f;f;t;0;51c42570-ee4b-4c89-ad4e-a3ecb96c9ff4",
+			"5227;5228;0;f;f;f;5227;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5228;5229;0;f;f;f;5228;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5228;5229;2;f;f;t;0;edafad3c-658b-4025-9e93-2bbfda22974f",
+			"5229;5230;0;f;f;f;5229;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5230;5231;0;f;f;f;5230;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5230;5231;2;f;f;t;0;c3a5a1ee-2eb6-4c72-a990-6e29c0c745c4",
+			"5231;5232;0;f;f;f;5231;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5232;5233;0;f;f;f;5232;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5232;5233;2;f;f;t;0;a9be0b6f-aad0-4b44-a7c2-00af5794e065",
+			"5233;5234;0;f;f;f;5233;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5234;5235;0;f;f;f;5234;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5234;5235;2;f;f;t;0;b6b27fc6-f525-4bed-9e34-05ecfa245de5",
+			"5235;5236;0;f;f;f;5235;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5236;5237;0;f;f;f;5236;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5236;5237;2;f;f;t;0;4e2565e0-8bd1-479d-bc68-e4c90127fdb2",
+			"5237;5238;0;f;f;f;5237;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5238;5239;0;f;f;f;5238;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5239;5240;0;f;f;f;5239;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5238;5240;2;f;f;t;0;cb386ab1-1b0a-45f7-8814-0fbecf2c5040",
+			"5239;5240;2;f;f;t;0;3ef2011a-d27a-4d16-a13f-69c8c7f5cca5",
+			"5240;5241;0;f;f;f;5240;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5241;5242;0;f;f;f;5241;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5242;5243;0;f;f;f;5242;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5242;5243;2;f;f;t;0;ae526a16-9bf6-4b7e-beb2-975d4b6d936e",
+			"5243;5244;0;f;f;f;5243;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5244;5245;0;f;f;f;5244;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5243;5245;2;f;f;t;0;1b7daaef-792b-4c74-999e-74d4652643cb",
+			"5245;5246;0;f;f;f;5245;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5246;5247;0;f;f;f;5246;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5246;5247;2;f;f;t;0;36534ed0-b663-4854-84c6-7db7b2ea5e4c",
+			"5247;5248;0;f;f;f;5247;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5248;5249;0;f;f;f;5248;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5248;5249;2;f;f;t;0;77f9b8a3-ca54-4622-bad8-e883607f853d",
+			"5249;5250;0;f;f;f;5249;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5250;5251;0;f;f;f;5250;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5250;5251;2;f;f;t;0;8da1d8cb-f452-4b42-b9e2-2ce916930351",
+			"5251;5252;0;f;f;f;5251;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5252;5253;0;f;f;f;5252;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5252;5253;2;f;f;t;0;8e98fb53-8afb-4692-a68e-657d8d598b4b",
+			"5253;5254;0;f;f;f;5253;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5254;5255;0;f;f;f;5254;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5254;5255;2;f;f;t;0;4a26f817-330d-45d3-a4f7-a5721eb2faf8",
+			"5255;5256;0;f;f;f;5255;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5256;5257;0;f;f;f;5256;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5255;5257;2;f;f;t;0;5cc593b2-d81b-4de8-b39b-9081b8dad6bc",
+			"5257;5258;0;f;f;f;5257;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5258;5259;0;f;f;f;5258;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5258;5259;2;f;f;t;0;d9dba50b-8b65-42a6-abb6-a30d92ecea63",
+			"5259;5260;0;f;f;f;5259;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5260;5261;0;f;f;f;5260;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5259;5261;2;f;f;t;0;e7bf16d0-d406-44ba-8624-f7e60fe0b2ab",
+			"5261;5262;0;f;f;f;5261;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5262;5263;0;f;f;f;5262;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5262;5263;2;f;f;t;0;ff517497-1ee1-421e-b6c3-6c2658c94f79",
+			"5263;5264;0;f;f;f;5263;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5264;5265;0;f;f;f;5264;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5264;5265;2;f;f;t;0;15f60243-76ef-4821-8da3-0c4ec917ebbf",
+			"5265;5266;0;f;f;f;5265;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5266;5267;0;f;f;f;5266;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5266;5267;2;f;f;t;0;73f8befa-8ad3-4793-86ee-d8d8f5db54e3",
+			"5267;5268;0;f;f;f;5267;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5268;5269;0;f;f;f;5268;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5268;5269;2;f;f;t;0;93798b9b-8cda-48df-bcbb-735acf83abeb",
+			"5269;5270;0;f;f;f;5269;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5270;5271;0;f;f;f;5270;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5270;5271;2;f;f;t;0;b3e31e51-2454-4502-86de-3ab93c0b15ba",
+			"5271;5272;0;f;f;f;5271;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5272;5273;0;f;f;f;5272;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5272;5273;2;f;f;t;0;48c1b92c-d360-47ed-8894-2d8cd9a5eacd",
+			"5273;5274;0;f;f;f;5273;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5274;5275;0;f;f;f;5274;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5274;5275;2;f;f;t;0;7d9296c4-0232-47e4-aae3-92bafa61a6fb",
+			"5275;5276;0;f;f;f;5275;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5276;5277;0;f;f;f;5276;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5276;5277;2;f;f;t;0;0c955cd6-507b-4057-ba35-b99013b46799",
+			"5277;5278;0;f;f;f;5277;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5278;5279;0;f;f;f;5278;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5278;5279;2;f;f;t;0;3c59d2b3-6a6c-41f9-bff1-66ff91344f15",
+			"5279;5280;0;f;f;f;5279;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5280;5281;0;f;f;f;5280;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5280;5281;2;f;f;t;0;93c68e53-afaf-445c-84b2-580c05566be0",
+			"5281;5282;0;f;f;f;5281;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5282;5283;0;f;f;f;5282;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5282;5283;2;f;f;t;0;4687172e-2e88-4aa8-b9f7-0f70393b92c0",
+			"5283;5284;0;f;f;f;5283;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5284;5285;0;f;f;f;5284;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5284;5285;2;f;f;t;0;880c59ed-3814-4a7f-bfd4-5f7fe73bdfd0",
+			"5285;5286;0;f;f;f;5285;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5286;5287;0;f;f;f;5286;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5286;5287;2;f;f;t;0;f71e1d71-94f8-45c4-89fb-934e68e90996",
+			"5287;5288;0;f;f;f;5287;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5288;5289;0;f;f;f;5288;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5288;5289;2;f;f;t;0;d88c6ee3-4f28-4b32-b456-3a82552ee04c",
+			"5289;5290;0;f;f;f;5289;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5290;5291;0;f;f;f;5290;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5290;5291;2;f;f;t;0;7b3c0ac7-ab8d-4a4f-8b29-bbfa55791cb9",
+			"5291;5292;0;f;f;f;5291;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5292;5293;0;f;f;f;5292;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5292;5293;2;f;f;t;0;13f746b5-7f68-414f-87fe-f71677972b56",
+			"5293;5294;0;f;f;f;5293;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5294;5295;0;f;f;f;5294;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5294;5295;2;f;f;t;0;30c4ba12-78b3-4a6c-b4ef-643112549c13",
+			"5295;5296;0;f;f;f;5295;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5296;5297;0;f;f;f;5296;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5296;5297;2;f;f;t;0;11a5ad3b-0afa-4729-b4c0-8c870c34510c",
+			"5297;5298;0;f;f;f;5297;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5298;5299;0;f;f;f;5298;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5298;5299;2;f;f;t;0;d46897bd-5550-42ec-921d-4a907435d3f5",
+			"5299;5300;0;f;f;f;5299;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5300;5301;0;f;f;f;5300;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5300;5301;2;f;f;t;0;1a3299bb-f185-402d-939f-db2fb5559af8",
+			"5301;5302;0;f;f;f;5301;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5302;5303;0;f;f;f;5302;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5302;5303;2;f;f;t;0;54550e10-b5fc-4c2d-b708-58677429a5f3",
+			"5303;5304;0;f;f;f;5303;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5304;5305;0;f;f;f;5304;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5304;5305;2;f;f;t;0;025c3d4f-0d06-445b-90a1-f87705df6649",
+			"5305;5306;0;f;f;f;5305;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5306;5307;0;f;f;f;5306;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5306;5307;2;f;f;t;0;ec2b01c8-d42c-4a02-857d-77337dfd99a6",
+			"5307;5308;0;f;f;f;5307;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5308;5309;0;f;f;f;5308;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5308;5309;2;f;f;t;0;73cd6faa-b9f6-4c18-b2c2-24778c73c7ab",
+			"5309;5310;0;f;f;f;5309;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5310;5311;0;f;f;f;5310;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5310;5311;2;f;f;t;0;f46b2d7d-823f-4437-9a0d-2d2620e70cc9",
+			"5311;5312;0;f;f;f;5311;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5312;5313;0;f;f;f;5312;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5312;5313;2;f;f;t;0;51880799-887a-4dc7-8cf1-f0cbab4a11ab",
+			"5313;5314;0;f;f;f;5313;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5314;5315;0;f;f;f;5314;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5314;5315;2;f;f;t;0;f7361c3d-4d24-462b-9537-047e8735c2c6",
+			"5315;5316;0;f;f;f;5315;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5316;5317;0;f;f;f;5316;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5316;5317;2;f;f;t;0;10f493e2-c8e5-4488-94de-558d66277be4",
+			"5317;5318;0;f;f;f;5317;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5318;5319;0;f;f;f;5318;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5318;5319;2;f;f;t;0;491b2932-f835-4775-b208-c88d1e5b239c",
+			"5319;5320;0;f;f;f;5319;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5320;5321;0;f;f;f;5320;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5320;5321;2;f;f;t;0;52646c70-2e69-463d-89ee-4d3b2df63213",
+			"5321;5322;0;f;f;f;5321;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5322;5323;0;f;f;f;5322;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5322;5323;2;f;f;t;0;fe51e911-9001-4b9f-b5ef-66a794eda6e7",
+			"5323;5324;0;f;f;f;5323;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5324;5325;0;f;f;f;5324;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5324;5325;2;f;f;t;0;bba5b55c-aa70-4075-8fa7-8e86f739d01f",
+			"5325;5326;0;f;f;f;5325;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5326;5327;0;f;f;f;5326;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5326;5327;2;f;f;t;0;2834e737-cb92-4382-9657-f71f190475af",
+			"5327;5328;0;f;f;f;5327;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5328;5329;0;f;f;f;5328;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5328;5329;2;f;f;t;0;2d7570dc-62ad-4b74-8361-bd1f2d9e06e4",
+			"5329;5330;0;f;f;f;5329;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5330;5331;0;f;f;f;5330;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5330;5331;2;f;f;t;0;b7190738-3755-4fca-9544-695a75206f38",
+			"5331;5332;0;f;f;f;5331;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5332;5333;0;f;f;f;5332;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5332;5333;2;f;f;t;0;fc8c11bc-dbca-4aaa-beb2-b750f6ea3dd3",
+			"5333;5334;0;f;f;f;5333;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5334;5335;0;f;f;f;5334;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5334;5335;2;f;f;t;0;0331519b-cfb1-4811-a977-f9ee98b86bb8",
+			"5335;5336;0;f;f;f;5335;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5336;5337;0;f;f;f;5336;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5336;5337;2;f;f;t;0;e46057f4-c408-43c5-8a27-63dcb4ab348f",
+			"5337;5338;0;f;f;f;5337;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5338;5339;0;f;f;f;5338;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5338;5339;2;f;f;t;0;1f4376d0-fd56-4dda-8789-58bf5af5bf8c",
+			"5339;5340;0;f;f;f;5339;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5340;5341;0;f;f;f;5340;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5340;5341;2;f;f;t;0;408502a3-8542-4171-acf2-39e29b61f700",
+			"5341;5342;0;f;f;f;5341;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5342;5343;0;f;f;f;5342;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5342;5343;2;f;f;t;0;87d0342f-cc36-490f-97da-2715a0bcd3be",
+			"5343;5344;0;f;f;f;5343;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5344;5345;0;f;f;f;5344;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5344;5345;2;f;f;t;0;6999cb5d-4f25-4fb0-bfd2-045193ee653c",
+			"5345;5346;0;f;f;f;5345;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5346;5347;0;f;f;f;5346;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5346;5347;2;f;f;t;0;9994d086-3229-4e12-ae14-c8dbea931729",
+			"5347;5348;0;f;f;f;5347;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5348;5349;0;f;f;f;5348;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5348;5349;2;f;f;t;0;0ae6c713-4a3a-4b30-898e-e7e7fbd83842",
+			"5349;5350;0;f;f;f;5349;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5350;5351;0;f;f;f;5350;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5349;5351;2;f;f;t;0;98e1dc6d-58dd-4876-b0e6-065b64f3e192",
+			"5351;5352;0;f;f;f;5351;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5352;5353;0;f;f;f;5352;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5352;5353;2;f;f;t;0;855bafe8-6b72-4fc7-a96e-dc9ddc1c8712",
+			"5353;5354;0;f;f;f;5353;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5354;5355;0;f;f;f;5354;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5353;5355;2;f;f;t;0;a8b6a396-6311-4e0d-b08a-5bd03187b47e",
+			"5355;5356;0;f;f;f;5355;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5356;5357;0;f;f;f;5356;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5356;5357;2;f;f;t;0;02472caa-85e6-49eb-9787-decd745a322b",
+			"5357;5358;0;f;f;f;5357;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5358;5359;0;f;f;f;5358;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5357;5359;2;f;f;t;0;29e1f8e5-17e5-4f88-bec2-4dfe7313800c",
+			"5359;5360;0;f;f;f;5359;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5360;5361;0;f;f;f;5360;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5360;5361;2;f;f;t;0;2c5eeb32-2019-45d3-b100-a10dd794f99a",
+			"5361;5362;0;f;f;f;5361;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5362;5363;0;f;f;f;5362;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5362;5363;2;f;f;t;0;99deef45-9830-4748-b437-9df1555ff5f0",
+			"5363;5364;0;f;f;f;5363;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5364;5365;0;f;f;f;5364;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5364;5365;2;f;f;t;0;4e31895c-84ec-4447-ae67-abd70d8f0036",
+			"5365;5366;0;f;f;f;5365;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5366;5367;0;f;f;f;5366;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5366;5367;2;f;f;t;0;8dcdc82b-b318-4db3-88ae-b90d584f5539",
+			"5367;5368;0;f;f;f;5367;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5368;5369;0;f;f;f;5368;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5368;5369;2;f;f;t;0;abfddf27-bf59-4a4d-aea8-b83bf2d83a9a",
+			"5369;5370;0;f;f;f;5369;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5370;5371;0;f;f;f;5370;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5370;5371;2;f;f;t;0;d351ec63-7346-4bfc-a73e-926aa3d56e58",
+			"5371;5372;0;f;f;f;5371;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5372;5373;0;f;f;f;5372;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5372;5373;2;f;f;t;0;76226f41-55f5-40e6-b918-e7a8a4664b52",
+			"5373;5374;0;f;f;f;5373;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5374;5375;0;f;f;f;5374;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5374;5375;2;f;f;t;0;1b23b270-abcd-408e-a0ae-0aceb8ebc873",
+			"5375;5376;0;f;f;f;5375;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5376;5377;0;f;f;f;5376;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5376;5377;2;f;f;t;0;2b320ad3-37a3-444d-9484-92a34e8e21be",
+			"5377;5378;0;f;f;f;5377;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5378;5379;0;f;f;f;5378;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5378;5379;2;f;f;t;0;92703ce0-c074-47cc-a0c9-9353133dab1d",
+			"5379;5380;0;f;f;f;5379;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5380;5381;0;f;f;f;5380;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5380;5381;2;f;f;t;0;e5aedff1-f380-4fbd-a9a8-851c120583eb",
+			"5381;5382;0;f;f;f;5381;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5382;5383;0;f;f;f;5382;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5382;5383;2;f;f;t;0;21523b8e-cf5a-466d-8393-91f55b101dbb",
+			"5383;5384;0;f;f;f;5383;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5384;5385;0;f;f;f;5384;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5384;5385;2;f;f;t;0;c8cacb21-9e02-4f1c-8e7e-a0154a479a4e",
+			"5385;5386;0;f;f;f;5385;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5386;5387;0;f;f;f;5386;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5386;5387;2;f;f;t;0;b1695e31-ee79-4c31-8656-3bcb739d2058",
+			"5387;5388;0;f;f;f;5387;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5388;5389;0;f;f;f;5388;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5388;5389;2;f;f;t;0;c0c73e16-b967-4c43-a4d1-7360e5df9b84",
+			"5389;5390;0;f;f;f;5389;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5390;5391;0;f;f;f;5390;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5390;5391;2;f;f;t;0;874230d9-f49d-4d62-baeb-f118688a83f7",
+			"5391;5392;0;f;f;f;5391;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5392;5393;0;f;f;f;5392;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5392;5393;2;f;f;t;0;0db2848e-e533-42d4-97c0-d7116ffb4a4e",
+			"5393;5394;0;f;f;f;5393;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5394;5395;0;f;f;f;5394;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5394;5395;2;f;f;t;0;8b21cbd0-1140-459b-8a52-4959bed78d29",
+			"5395;5396;0;f;f;f;5395;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5396;5397;0;f;f;f;5396;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5396;5397;2;f;f;t;0;1eac9fce-fbad-4e9c-a972-e7442a25c7ea",
+			"5397;5398;0;f;f;f;5397;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5398;5399;0;f;f;f;5398;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5398;5399;2;f;f;t;0;08463e43-6577-49ad-ad54-6b2f90a45daa",
+			"5399;5400;0;f;f;f;5399;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5400;5401;0;f;f;f;5400;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5400;5401;2;f;f;t;0;63a6ef3c-ff3c-4c59-b2f2-6d415735a969",
+			"5401;5402;0;f;f;f;5401;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5402;5403;0;f;f;f;5402;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5402;5403;2;f;f;t;0;5eff645b-097e-427e-b2f2-ba528a26d964",
+			"5403;5404;0;f;f;f;5403;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5404;5405;0;f;f;f;5404;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5404;5405;2;f;f;t;0;ca8c562b-bdad-4fc5-af70-5004330a812a",
+			"5405;5406;0;f;f;f;5405;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5406;5407;0;f;f;f;5406;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5406;5407;2;f;f;t;0;729ef6e0-12bb-40a5-84f2-85c097648b53",
+			"5407;5408;0;f;f;f;5407;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5408;5409;0;f;f;f;5408;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5409;5410;0;f;f;f;5409;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5408;5410;2;f;f;t;0;2e9c864b-a74e-43cb-b3cd-bfce095c6aa6",
+			"5409;5410;2;f;f;t;0;88f7387e-1d5b-4b02-97d4-fdced118a6b5",
+			"5410;5411;0;f;f;f;5410;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5411;5412;0;f;f;f;5411;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5412;5413;0;f;f;f;5412;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5412;5413;2;f;f;t;0;3c03cdb3-503c-4afc-b5cf-0140e0c2e0db",
+			"5413;5414;0;f;f;f;5413;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5414;5415;0;f;f;f;5414;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5414;5415;2;f;f;t;0;20ec6d94-e464-4a9d-8517-9af7a696ae86",
+			"5415;5416;0;f;f;f;5415;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5416;5417;0;f;f;f;5416;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5416;5417;2;f;f;t;0;d4c68cc8-2472-4110-9f95-ab6ea037ba4d",
+			"5417;5418;0;f;f;f;5417;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5418;5419;0;f;f;f;5418;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5418;5419;2;f;f;t;0;78dd422a-e7cb-495c-9a06-b8db47b99ab0",
+			"5419;5420;0;f;f;f;5419;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5420;5421;0;f;f;f;5420;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5420;5421;2;f;f;t;0;507a12e9-7232-48f3-a8e4-d3199d14baf2",
+			"5421;5422;0;f;f;f;5421;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5422;5423;0;f;f;f;5422;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5422;5423;2;f;f;t;0;e4d05b3d-caba-47f9-9f46-9d130cda6a5d",
+			"5423;5424;0;f;f;f;5423;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5424;5425;0;f;f;f;5424;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5424;5425;2;f;f;t;0;6f7278a4-5471-49e9-ab63-9de22ac29515",
+			"5425;5426;0;f;f;f;5425;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5426;5427;0;f;f;f;5426;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5426;5427;2;f;f;t;0;b6e3371b-e11e-4881-bf0f-2073af318104",
+			"5427;5428;0;f;f;f;5427;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5428;5429;0;f;f;f;5428;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5428;5429;2;f;f;t;0;c4355514-c952-4e22-8fda-b6c1e5a79122",
+			"5429;5430;0;f;f;f;5429;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5430;5431;0;f;f;f;5430;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5430;5431;2;f;f;t;0;2405ce81-3818-4f9e-805a-db6172a5b4cf",
+			"5431;5432;0;f;f;f;5431;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5432;5433;0;f;f;f;5432;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5432;5433;2;f;f;t;0;85c88099-650f-4f78-9375-eea4bd6239a9",
+			"5433;5434;0;f;f;f;5433;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5434;5435;0;f;f;f;5434;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5434;5435;2;f;f;t;0;3541a4d1-de21-4b37-a254-7d8a4aed235c",
+			"5435;5436;0;f;f;f;5435;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5436;5437;0;f;f;f;5436;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5436;5437;2;f;f;t;0;11f63ae7-3282-4428-ad22-a6b78fd840f6",
+			"5437;5438;0;f;f;f;5437;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5438;5439;0;f;f;f;5438;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5438;5439;2;f;f;t;0;346646a3-9cf1-48cb-a766-2a5bc68e580c",
+			"5439;5440;0;f;f;f;5439;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5440;5441;0;f;f;f;5440;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5440;5441;2;f;f;t;0;718d9a98-815f-46fe-a639-29aace567874",
+			"5441;5442;0;f;f;f;5441;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5442;5443;0;f;f;f;5442;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5442;5443;2;f;f;t;0;15d1bebd-da36-4d11-bb69-ebad501e6b74",
+			"5443;5444;0;f;f;f;5443;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5444;5445;0;f;f;f;5444;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5444;5445;2;f;f;t;0;120cbd33-1bc8-4e9f-b52c-ef0caa5fab72",
+			"5445;5446;0;f;f;f;5445;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5446;5447;0;f;f;f;5446;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5446;5447;2;f;f;t;0;3ac1d4cf-7d5d-41db-b96b-50d73b8c6a35",
+			"5447;5448;0;f;f;f;5447;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5448;5449;0;f;f;f;5448;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5448;5449;2;f;f;t;0;6950b5c9-c54a-4d97-99c4-c59ad3b7976e",
+			"5449;5450;0;f;f;f;5449;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5450;5451;0;f;f;f;5450;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5450;5451;2;f;f;t;0;f1532487-d4c9-4d0f-8d9c-8219bf3031b5",
+			"5451;5452;0;f;f;f;5451;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5452;5453;0;f;f;f;5452;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5452;5453;2;f;f;t;0;6f2b2bdc-3ccb-4252-8f9d-c9f80ab82785",
+			"5453;5454;0;f;f;f;5453;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5454;5455;0;f;f;f;5454;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5454;5455;2;f;f;t;0;72b206b1-1b72-4054-bbb2-71dd6444d23c",
+			"5455;5456;0;f;f;f;5455;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5456;5457;0;f;f;f;5456;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5456;5457;2;f;f;t;0;f68e4040-363e-4548-863f-b812cc025b9c",
+			"5457;5458;0;f;f;f;5457;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5458;5459;0;f;f;f;5458;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5458;5459;2;f;f;t;0;dbcfc726-e182-481f-9e83-59549d8a6b82",
+			"5459;5460;0;f;f;f;5459;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5460;5461;0;f;f;f;5460;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5460;5461;2;f;f;t;0;25b4dfde-ed8c-4659-8724-b96095298a9e",
+			"5461;5462;0;f;f;f;5461;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5462;5463;0;f;f;f;5462;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5462;5463;2;f;f;t;0;dac03e5a-bba6-4279-8983-7109a9a7485e",
+			"5463;5464;0;f;f;f;5463;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5464;5465;0;f;f;f;5464;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5464;5465;2;f;f;t;0;31e6468d-8e9b-4f21-a90c-1da9781919f4",
+			"5465;5466;0;f;f;f;5465;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5466;5467;0;f;f;f;5466;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5466;5467;2;f;f;t;0;7ba96246-2884-4bec-afd0-e030fe5c8f73",
+			"5467;5468;0;f;f;f;5467;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5468;5469;0;f;f;f;5468;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5468;5469;2;f;f;t;0;860af44a-253f-4870-b211-dd626210e5c9",
+			"5469;5470;0;f;f;f;5469;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5470;5471;0;f;f;f;5470;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5470;5471;2;f;f;t;0;243d5497-1c72-4b8e-bfb3-8cc1e0c25cc3",
+			"5471;5472;0;f;f;f;5471;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5472;5473;0;f;f;f;5472;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5472;5473;2;f;f;t;0;197f984d-d65e-4348-9b36-e202053306ca",
+			"5473;5474;0;f;f;f;5473;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5474;5475;0;f;f;f;5474;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5474;5475;2;f;f;t;0;db19f892-e82a-40ba-a557-f68872cba142",
+			"5475;5476;0;f;f;f;5475;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5476;5477;0;f;f;f;5476;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5476;5477;2;f;f;t;0;f2c3e5ef-e300-49ef-8e0c-2c5378e533d0",
+			"5477;5478;0;f;f;f;5477;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5478;5479;0;f;f;f;5478;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5478;5479;2;f;f;t;0;a3205302-4af6-4181-8f89-252d5f637c90",
+			"5479;5480;0;f;f;f;5479;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5480;5481;0;f;f;f;5480;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5480;5481;2;f;f;t;0;cd715bbe-e985-4af8-b72a-ead82583d223",
+			"5481;5482;0;f;f;f;5481;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5482;5483;0;f;f;f;5482;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5482;5483;2;f;f;t;0;eca4b1ce-70c2-4eee-a27e-4515ea5935fc",
+			"5483;5484;0;f;f;f;5483;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5484;5485;0;f;f;f;5484;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5484;5485;2;f;f;t;0;89ef9713-5a41-4d97-a634-4a63852c1982",
+			"5485;5486;0;f;f;f;5485;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5486;5487;0;f;f;f;5486;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5486;5487;2;f;f;t;0;ed969a8a-6957-4e96-bb67-50616257e4cb",
+			"5487;5488;0;f;f;f;5487;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5488;5489;0;f;f;f;5488;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5488;5489;2;f;f;t;0;8a2cc739-e3fb-4be7-8947-9b77aefd1e17",
+			"5489;5490;0;f;f;f;5489;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5490;5491;0;f;f;f;5490;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5490;5491;2;f;f;t;0;5d2fb034-c6b9-416a-8a06-63c01b16e90d",
+			"5491;5492;0;f;f;f;5491;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5492;5493;0;f;f;f;5492;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5492;5493;2;f;f;t;0;804f1237-788a-4355-928c-c33104c03b1b",
+			"5493;5494;0;f;f;f;5493;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5494;5495;0;f;f;f;5494;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5494;5495;2;f;f;t;0;baaec040-0cdc-42f6-86a1-6ed20707ecca",
+			"5495;5496;0;f;f;f;5495;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5496;5497;0;f;f;f;5496;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5496;5497;2;f;f;t;0;7e87805e-c32c-4ea5-abfb-d8964c880d3e",
+			"5497;5498;0;f;f;f;5497;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5498;5499;0;f;f;f;5498;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5498;5499;2;f;f;t;0;f9a45c7b-7dcb-4750-b2f4-cbb8907ed6f7",
+			"5499;5500;0;f;f;f;5499;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5500;5501;0;f;f;f;5500;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5500;5501;2;f;f;t;0;a6057b1c-40a7-4203-aea7-ab57ba6f2904",
+			"5501;5502;0;f;f;f;5501;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5502;5503;0;f;f;f;5502;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5502;5503;2;f;f;t;0;0616ac83-36d8-408c-bc9f-1d206c8bf79c",
+			"5503;5504;0;f;f;f;5503;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5504;5505;0;f;f;f;5504;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5504;5505;2;f;f;t;0;d0ad7841-30be-4618-b4df-d850a35518a4",
+			"5505;5506;0;f;f;f;5505;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5506;5507;0;f;f;f;5506;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5506;5507;2;f;f;t;0;8ff50aec-a800-43ea-9c7a-5262e35af5a3",
+			"5507;5508;0;f;f;f;5507;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5508;5509;0;f;f;f;5508;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5508;5509;2;f;f;t;0;e9812591-3fc2-410e-ab25-3c95325230c2",
+			"5509;5510;0;f;f;f;5509;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5510;5511;0;f;f;f;5510;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5510;5511;2;f;f;t;0;8503f485-1591-481b-ad7d-63f7eff899d5",
+			"5511;5512;0;f;f;f;5511;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5512;5513;0;f;f;f;5512;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5512;5513;2;f;f;t;0;cf36ff26-eff7-46ac-911a-06c337801357",
+			"5513;5514;0;f;f;f;5513;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5514;5515;0;f;f;f;5514;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5514;5515;2;f;f;t;0;85fe1e75-73b8-4453-bd4a-ca50a3b80980",
+			"5515;5516;0;f;f;f;5515;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5516;5517;0;f;f;f;5516;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5516;5517;2;f;f;t;0;46be7ae2-dba7-43ca-b979-515f6ed72e1e",
+			"5517;5518;0;f;f;f;5517;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5518;5519;0;f;f;f;5518;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5518;5519;2;f;f;t;0;2d5cc978-09db-482c-a4e6-7324f57627db",
+			"5519;5520;0;f;f;f;5519;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5520;5521;0;f;f;f;5520;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5520;5521;2;f;f;t;0;39404249-1c94-483a-bc0d-9cb8be19b30a",
+			"5521;5522;0;f;f;f;5521;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5522;5523;0;f;f;f;5522;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5522;5523;2;f;f;t;0;abcc5bef-1b16-48bb-8449-834cb9fc43cf",
+			"5523;5524;0;f;f;f;5523;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5524;5525;0;f;f;f;5524;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5524;5525;2;f;f;t;0;1ce8353c-0866-4644-b3c2-19e908991bea",
+			"5525;5526;0;f;f;f;5525;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5526;5527;0;f;f;f;5526;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5526;5527;2;f;f;t;0;9c4bd295-68ad-4bc5-a5b5-f49eda3b386b",
+			"5527;5528;0;f;f;f;5527;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5528;5529;0;f;f;f;5528;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5528;5529;2;f;f;t;0;987cfc51-f919-47b8-ba0b-22cba1a7c091",
+			"5529;5530;0;f;f;f;5529;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5530;5531;0;f;f;f;5530;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5530;5531;2;f;f;t;0;4eed7040-e00b-4933-b653-0fc6b689d95e",
+			"5531;5532;0;f;f;f;5531;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5532;5533;0;f;f;f;5532;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5532;5533;2;f;f;t;0;8c13800f-3a8d-40ce-80c5-a98b31e16bcf",
+			"5533;5534;0;f;f;f;5533;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5534;5535;0;f;f;f;5534;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5534;5535;2;f;f;t;0;a40f9053-2349-48a6-80ad-893b56caaae2",
+			"5535;5536;0;f;f;f;5535;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5536;5537;0;f;f;f;5536;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5536;5537;2;f;f;t;0;350698a8-68c3-4430-a50b-49cf0badd14d",
+			"5537;5538;0;f;f;f;5537;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5538;5539;0;f;f;f;5538;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5538;5539;2;f;f;t;0;0f78a157-1d12-4430-9db5-fab4e9257dcd",
+			"5539;5540;0;f;f;f;5539;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5540;5541;0;f;f;f;5540;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5540;5541;2;f;f;t;0;7866dfb9-72f6-4d0b-a63d-5db9df5028cb",
+			"5541;5542;0;f;f;f;5541;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5542;5543;0;f;f;f;5542;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5542;5543;2;f;f;t;0;a945b1b2-5c07-4a35-a32e-ef31c2f0cf46",
+			"5543;5544;0;f;f;f;5543;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5544;5545;0;f;f;f;5544;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5544;5545;2;f;f;t;0;9a0d2b22-c858-4e77-9b5e-b5926030c6aa",
+			"5545;5546;0;f;f;f;5545;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5546;5547;0;f;f;f;5546;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5546;5547;2;f;f;t;0;65d77456-2f65-4bfa-b46a-645c80e3e24c",
+			"5547;5548;0;f;f;f;5547;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5548;5549;0;f;f;f;5548;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5548;5549;2;f;f;t;0;93c4c632-bbf2-494a-b1d3-0ec46298e2cd",
+			"5549;5550;0;f;f;f;5549;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5550;5551;0;f;f;f;5550;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5550;5551;2;f;f;t;0;30fdb01e-49bb-4d8c-9737-13745f2b7df2",
+			"5551;5552;0;f;f;f;5551;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5552;5553;0;f;f;f;5552;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5552;5553;2;f;f;t;0;26d74936-8290-45fd-8e2a-12919967bec0",
+			"5553;5554;0;f;f;f;5553;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5554;5555;0;f;f;f;5554;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5554;5555;2;f;f;t;0;96aae0ae-2dfe-4168-9e87-abf576413c63",
+			"5555;5556;0;f;f;f;5555;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5556;5557;0;f;f;f;5556;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5556;5557;2;f;f;t;0;319d2962-88da-46a7-9f97-08ba0637e39a",
+			"5557;5558;0;f;f;f;5557;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5558;5559;0;f;f;f;5558;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5558;5559;2;f;f;t;0;a83c0e94-d6f1-46d5-a3a6-6cc0e72d129f",
+			"5559;5560;0;f;f;f;5559;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5560;5561;0;f;f;f;5560;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5560;5561;2;f;f;t;0;9dfa9081-cc2a-4b7f-aeef-6b32ba64d2ad",
+			"5561;5562;0;f;f;f;5561;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5562;5563;0;f;f;f;5562;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5562;5563;2;f;f;t;0;fe325f70-c92e-4d46-8f18-1ab156a4274f",
+			"5563;5564;0;f;f;f;5563;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5564;5565;0;f;f;f;5564;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5564;5565;2;f;f;t;0;9dd2a9c8-8e9e-490c-bacd-ad4cf2e7f72a",
+			"5565;5566;0;f;f;f;5565;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5566;5567;0;f;f;f;5566;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5566;5567;2;f;f;t;0;7530980a-148e-4975-8de6-f16704736b7a",
+			"5567;5568;0;f;f;f;5567;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5568;5569;0;f;f;f;5568;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5568;5569;2;f;f;t;0;7e9b8f09-6dcb-4c2c-b209-6d0f0ad67afb",
+			"5569;5570;0;f;f;f;5569;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5570;5571;0;f;f;f;5570;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5570;5571;2;f;f;t;0;c0b3285f-a21c-4943-8a19-406b496c71ca",
+			"5571;5572;0;f;f;f;5571;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5572;5573;0;f;f;f;5572;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5572;5573;2;f;f;t;0;a6a10384-5b57-41f2-b856-9e488d765cc2",
+			"5573;5574;0;f;f;f;5573;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5574;5575;0;f;f;f;5574;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5574;5575;2;f;f;t;0;f07a2073-7f60-493d-917b-5edb5cb77be9",
+			"5575;5576;0;f;f;f;5575;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5576;5577;0;f;f;f;5576;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5576;5577;2;f;f;t;0;cd1bcf96-cde6-4cc4-b019-6e32b07f5694",
+			"5577;5578;0;f;f;f;5577;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5578;5579;0;f;f;f;5578;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5578;5579;2;f;f;t;0;610f830e-a4b5-412f-9437-b830541a353f",
+			"5579;5580;0;f;f;f;5579;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5580;5581;0;f;f;f;5580;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5580;5581;2;f;f;t;0;b3d5feb1-528c-4fcc-a07d-9d31c5dad338",
+			"5581;5582;0;f;f;f;5581;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5582;5583;0;f;f;f;5582;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5582;5583;2;f;f;t;0;24fad070-ea53-48ae-b666-226389a5883f",
+			"5583;5584;0;f;f;f;5583;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5584;5585;0;f;f;f;5584;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5584;5585;2;f;f;t;0;f1584bd6-9864-4c70-990e-69b1cd3d5a44",
+			"5585;5586;0;f;f;f;5585;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5586;5587;0;f;f;f;5586;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5586;5587;2;f;f;t;0;9194ba09-09a5-4745-b2fc-c03c96c5c376",
+			"5587;5588;0;f;f;f;5587;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5588;5589;0;f;f;f;5588;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5588;5589;2;f;f;t;0;ee319599-7875-4af1-85a3-989f5a35f284",
+			"5589;5590;0;f;f;f;5589;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5590;5591;0;f;f;f;5590;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5590;5591;2;f;f;t;0;ece27d6d-7cdd-4a0f-a0ec-dd3c2a59d523",
+			"5591;5592;0;f;f;f;5591;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5592;5593;0;f;f;f;5592;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5592;5593;2;f;f;t;0;8bde790c-104e-4985-acec-4444c8334763",
+			"5593;5594;0;f;f;f;5593;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5594;5595;0;f;f;f;5594;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5594;5595;2;f;f;t;0;bd10c6f3-4201-492c-b7f1-58950acaad95",
+			"5595;5596;0;f;f;f;5595;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5596;5597;0;f;f;f;5596;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5596;5597;2;f;f;t;0;ccbd76e2-d8d2-40e4-8e71-22976af8cd61",
+			"5597;5598;0;f;f;f;5597;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5598;5599;0;f;f;f;5598;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5598;5599;2;f;f;t;0;54a299e1-4078-489a-92af-74c3783a6deb",
+			"5599;5600;0;f;f;f;5599;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5600;5601;0;f;f;f;5600;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5600;5601;2;f;f;t;0;92d9e878-fd89-412d-8b5a-8d29a2bde744",
+			"5601;5602;0;f;f;f;5601;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5602;5603;0;f;f;f;5602;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5602;5603;2;f;f;t;0;69af743c-0818-4757-88a2-a086b4060589",
+			"5603;5604;0;f;f;f;5603;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5604;5605;0;f;f;f;5604;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5604;5605;2;f;f;t;0;0d5542ea-7f78-4b4a-b765-1bb45cd524c3",
+			"5605;5606;0;f;f;f;5605;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5606;5607;0;f;f;f;5606;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5606;5607;2;f;f;t;0;b39f3c10-307e-4313-b719-1b81b16b1656",
+			"5607;5608;0;f;f;f;5607;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5608;5609;0;f;f;f;5608;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5608;5609;2;f;f;t;0;abccda11-9760-401f-aefb-fc49b3070670",
+			"5609;5610;0;f;f;f;5609;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5610;5611;0;f;f;f;5610;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5610;5611;2;f;f;t;0;ef17d7c9-86b7-483c-a067-93a393d250a8",
+			"5611;5612;0;f;f;f;5611;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5612;5613;0;f;f;f;5612;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5612;5613;2;f;f;t;0;1be2b70c-0f20-4348-aa35-3a1578df5d69",
+			"5613;5614;0;f;f;f;5613;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5614;5615;0;f;f;f;5614;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5614;5615;2;f;f;t;0;9831c6ad-fa01-4ac2-820d-6a3de15c2314",
+			"5615;5616;0;f;f;f;5615;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5616;5617;0;f;f;f;5616;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5616;5617;2;f;f;t;0;2ef04a2b-8a10-49d5-9c43-15d4913bd8f7",
+			"5617;5618;0;f;f;f;5617;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5618;5619;0;f;f;f;5618;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5618;5619;2;f;f;t;0;0194aded-eb61-4fbf-a9c4-20ddcc06811e",
+			"5619;5620;0;f;f;f;5619;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5620;5621;0;f;f;f;5620;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5620;5621;2;f;f;t;0;eae2d78c-c179-442a-9edf-e99dc19e34a3",
+			"5621;5622;0;f;f;f;5621;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5622;5623;0;f;f;f;5622;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5622;5623;2;f;f;t;0;7c6179f1-117b-4bb3-969b-98ab4fedf216",
+			"5623;5624;0;f;f;f;5623;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5624;5625;0;f;f;f;5624;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5624;5625;2;f;f;t;0;a60f462f-a82f-48f0-a12b-d41b03dc7c3b",
+			"5625;5626;0;f;f;f;5625;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5626;5627;0;f;f;f;5626;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5626;5627;2;f;f;t;0;5633f482-ec06-42c1-8e32-7c90b62c7410",
+			"5627;5628;0;f;f;f;5627;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5628;5629;0;f;f;f;5628;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5628;5629;2;f;f;t;0;6219dd19-ab21-4261-9834-88919ce3c62c",
+			"5629;5630;0;f;f;f;5629;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5630;5631;0;f;f;f;5630;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5630;5631;2;f;f;t;0;983352a9-49e9-468e-b3fe-13ce0d868ce4",
+			"5631;5632;0;f;f;f;5631;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5632;5633;0;f;f;f;5632;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5632;5633;2;f;f;t;0;6af892c2-e506-437d-943b-ff04529bbd97",
+			"5633;5634;0;f;f;f;5633;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5634;5635;0;f;f;f;5634;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5634;5635;2;f;f;t;0;50607cab-dc9f-4452-bbd8-8398e44516dd",
+			"5635;5636;0;f;f;f;5635;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5636;5637;0;f;f;f;5636;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5636;5637;2;f;f;t;0;272840dc-a033-4958-a6ba-05bf4e0977c7",
+			"5637;5638;0;f;f;f;5637;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5638;5639;0;f;f;f;5638;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5638;5639;2;f;f;t;0;8de08712-5dfe-4629-9210-eb64b9e1e44a",
+			"5639;5640;0;f;f;f;5639;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5640;5641;0;f;f;f;5640;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5640;5641;2;f;f;t;0;b01a9a03-6af2-4c72-a0be-01493bf33828",
+			"5641;5642;0;f;f;f;5641;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5642;5643;0;f;f;f;5642;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5642;5643;2;f;f;t;0;a4bf221f-9c0b-4dfc-a8d1-8eeef1a652ac",
+			"5643;5644;0;f;f;f;5643;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5644;5645;0;f;f;f;5644;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5644;5645;2;f;f;t;0;00ab3ce9-0c91-4328-ae9d-434c54724b1d",
+			"5645;5646;0;f;f;f;5645;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5646;5647;0;f;f;f;5646;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5646;5647;2;f;f;t;0;e39bce1f-e74a-4b8f-bc3e-e1a9ac7ab407",
+			"5647;5648;0;f;f;f;5647;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5648;5649;0;f;f;f;5648;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5648;5649;2;f;f;t;0;7eb6dce4-6481-4d69-abdd-dc87e7d111ca",
+			"5649;5650;0;f;f;f;5649;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5650;5651;0;f;f;f;5650;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5650;5651;2;f;f;t;0;c4153f05-1f5e-4434-a2f1-87dff43d7618",
+			"5651;5652;0;f;f;f;5651;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5652;5653;0;f;f;f;5652;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5652;5653;2;f;f;t;0;89d191ca-cd35-4f4e-9fd4-1fc0e9056e22",
+			"5653;5654;0;f;f;f;5653;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5654;5655;0;f;f;f;5654;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5654;5655;2;f;f;t;0;eb034dcf-ecb4-4c08-a4f2-0831c82afda2",
+			"5655;5656;0;f;f;f;5655;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5656;5657;0;f;f;f;5656;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5656;5657;2;f;f;t;0;195baa54-9e48-4491-84c7-0b287de59e1f",
+			"5657;5658;0;f;f;f;5657;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5658;5659;0;f;f;f;5658;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5658;5659;2;f;f;t;0;7c082ff0-07cd-448a-bfbd-99060d440460",
+			"5659;5660;0;f;f;f;5659;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5660;5661;0;f;f;f;5660;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5660;5661;2;f;f;t;0;5177de00-b5f2-440b-9556-5be15bd7d228",
+			"5661;5662;0;f;f;f;5661;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5662;5663;0;f;f;f;5662;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5662;5663;2;f;f;t;0;f5c91c36-6b40-4f5d-abe1-1b16454aac7b",
+			"5663;5664;0;f;f;f;5663;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5664;5665;0;f;f;f;5664;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5664;5665;2;f;f;t;0;bba2648f-314a-4d19-8dd7-425ca32367a7",
+			"5665;5666;0;f;f;f;5665;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5666;5667;0;f;f;f;5666;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5666;5667;2;f;f;t;0;1eb919ee-03ab-4f59-a504-1c6681588154",
+			"5667;5668;0;f;f;f;5667;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5668;5669;0;f;f;f;5668;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5668;5669;2;f;f;t;0;bf237d89-a32c-4044-8756-64d641f8704f",
+			"5669;5670;0;f;f;f;5669;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5670;5671;0;f;f;f;5670;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5670;5671;2;f;f;t;0;a89a2b19-cbfb-435c-a381-80194c07fa40",
+			"5671;5672;0;f;f;f;5671;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5672;5673;0;f;f;f;5672;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5672;5673;2;f;f;t;0;560df4d1-4757-4a27-995f-11ed9b5ada2f",
+			"5673;5674;0;f;f;f;5673;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5674;5675;0;f;f;f;5674;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5674;5675;2;f;f;t;0;cdaf698e-0bb3-46a3-8534-5609eb907201",
+			"5675;5676;0;f;f;f;5675;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5676;5677;0;f;f;f;5676;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5676;5677;2;f;f;t;0;29c694ad-2fb9-4d53-a88c-f7aed3081a1c",
+			"5677;5678;0;f;f;f;5677;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5678;5679;0;f;f;f;5678;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5678;5679;2;f;f;t;0;f2ebbba4-fcb1-4d55-9d84-32832a48c322",
+			"5679;5680;0;f;f;f;5679;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5680;5681;0;f;f;f;5680;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5680;5681;2;f;f;t;0;a8d1d896-c19a-40b7-880b-b300677f16ef",
+			"5681;5682;0;f;f;f;5681;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5682;5683;0;f;f;f;5682;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5682;5683;2;f;f;t;0;42c0ef96-6f91-4b7a-9bbc-c5ea1848988c",
+			"5683;5684;0;f;f;f;5683;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5684;5685;0;f;f;f;5684;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5684;5685;2;f;f;t;0;3c0a7c2c-46a3-413a-b830-535593c9c98c",
+			"5685;5686;0;f;f;f;5685;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5686;5687;0;f;f;f;5686;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5686;5687;2;f;f;t;0;859a3dfe-718c-4f9f-a6c4-863565c102e6",
+			"5687;5688;0;f;f;f;5687;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5688;5689;0;f;f;f;5688;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5688;5689;2;f;f;t;0;709b5c83-142c-42b1-8f11-485de41589f1",
+			"5689;5690;0;f;f;f;5689;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5690;5691;0;f;f;f;5690;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5690;5691;2;f;f;t;0;b8df2a31-5041-4bad-81ee-83239b20b616",
+			"5691;5692;0;f;f;f;5691;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5692;5693;0;f;f;f;5692;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5692;5693;2;f;f;t;0;2d6311a7-d2bd-444b-8498-7837ba492082",
+			"5693;5694;0;f;f;f;5693;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5694;5695;0;f;f;f;5694;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5694;5695;2;f;f;t;0;80d92fcd-3904-468b-9a5e-13af7055776b",
+			"5695;5696;0;f;f;f;5695;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5696;5697;0;f;f;f;5696;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5696;5697;2;f;f;t;0;619a1937-9fec-4e31-bd1d-d8a1f4df5f94",
+			"5697;5698;0;f;f;f;5697;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5698;5699;0;f;f;f;5698;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5698;5699;2;f;f;t;0;bc6945d7-e85c-48fc-a110-778206e3622e",
+			"5699;5700;0;f;f;f;5699;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5700;5701;0;f;f;f;5700;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5700;5701;2;f;f;t;0;11c44e4b-af3a-41f1-977b-a80cae3fbfe7",
+			"5701;5702;0;f;f;f;5701;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5702;5703;0;f;f;f;5702;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5702;5703;2;f;f;t;0;4f2850ef-52a4-4005-9b4f-2ada01333e49",
+			"5703;5704;0;f;f;f;5703;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5704;5705;0;f;f;f;5704;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5704;5705;2;f;f;t;0;83f6aedd-ad71-4cf3-a99f-33f885a16834",
+			"5705;5706;0;f;f;f;5705;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5706;5707;0;f;f;f;5706;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5706;5707;2;f;f;t;0;7a7856c6-d354-401e-a165-803bb436850f",
+			"5707;5708;0;f;f;f;5707;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5708;5709;0;f;f;f;5708;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5708;5709;2;f;f;t;0;8e8b592d-2e38-4a23-8f55-2a0ea26c930b",
+			"5709;5710;0;f;f;f;5709;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5710;5711;0;f;f;f;5710;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5710;5711;2;f;f;t;0;a065b46b-7327-4a69-be38-9e61a46368ef",
+			"5711;5712;0;f;f;f;5711;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5712;5713;0;f;f;f;5712;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5712;5713;2;f;f;t;0;ebd6a9bb-019c-402d-afa2-c54b30c56588",
+			"5713;5714;0;f;f;f;5713;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5714;5715;0;f;f;f;5714;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5713;5715;2;f;f;t;0;21434957-acbe-4531-8f1a-d3996866b0e0",
+			"5715;5716;0;f;f;f;5715;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5716;5717;0;f;f;f;5716;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5716;5717;2;f;f;t;0;29f17964-dc95-4e3a-ada7-772c791108e6",
+			"5717;5718;0;f;f;f;5717;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5718;5719;0;f;f;f;5718;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5717;5719;2;f;f;t;0;9b4d065a-b62a-405d-832b-8e434ed23612",
+			"5719;5720;0;f;f;f;5719;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5720;5721;0;f;f;f;5720;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5720;5721;2;f;f;t;0;b576372b-5c98-4df1-8c90-892d99152172",
+			"5721;5722;0;f;f;f;5721;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5722;5723;0;f;f;f;5722;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5722;5723;2;f;f;t;0;5725c813-2838-400d-8910-b07c66bd93b6",
+			"5723;5724;0;f;f;f;5723;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5724;5725;0;f;f;f;5724;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5724;5725;2;f;f;t;0;80872aa5-fa8c-4635-97e1-27f696041f9f",
+			"5725;5726;0;f;f;f;5725;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5726;5727;0;f;f;f;5726;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5726;5727;2;f;f;t;0;f371678c-78c8-47ed-a168-178440f58b62",
+			"5727;5728;0;f;f;f;5727;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5728;5729;0;f;f;f;5728;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5728;5729;2;f;f;t;0;273dfa60-cd7a-4f38-b91d-e965d1386783",
+			"5729;5730;0;f;f;f;5729;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5730;5731;0;f;f;f;5730;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5730;5731;2;f;f;t;0;ec390c8d-8693-4f97-80f3-d3d0686e4bf7",
+			"5731;5732;0;f;f;f;5731;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5732;5733;0;f;f;f;5732;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5732;5733;2;f;f;t;0;74e79851-df58-424f-932e-7000534133b8",
+			"5733;5734;0;f;f;f;5733;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5734;5735;0;f;f;f;5734;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5734;5735;2;f;f;t;0;e01f7875-cd84-49a3-af10-4d2c81dde6d9",
+			"5735;5736;0;f;f;f;5735;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5736;5737;0;f;f;f;5736;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5736;5737;2;f;f;t;0;a2f5fcb4-a50c-4e02-848a-5ae32475b7b9",
+			"5737;5738;0;f;f;f;5737;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5738;5739;0;f;f;f;5738;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5738;5739;2;f;f;t;0;0b82966d-2dc9-4724-bb3d-2a9a7aa98bef",
+			"5739;5740;0;f;f;f;5739;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5740;5741;0;f;f;f;5740;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5740;5741;2;f;f;t;0;5bda306f-68a6-45ed-9a85-e78145c12a22",
+			"5741;5742;0;f;f;f;5741;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5742;5743;0;f;f;f;5742;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5742;5743;2;f;f;t;0;25215a02-0bfe-4061-992b-8bdfc5fe9872",
+			"5743;5744;0;f;f;f;5743;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5744;5745;0;f;f;f;5744;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5744;5745;2;f;f;t;0;ed6e19fe-9620-4520-9871-7eeb8e1de1c1",
+			"5745;5746;0;f;f;f;5745;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5746;5747;0;f;f;f;5746;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5746;5747;2;f;f;t;0;965fafe8-5f5e-439d-930c-e73af7c8e38f",
+			"5747;5748;0;f;f;f;5747;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5748;5749;0;f;f;f;5748;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5748;5749;2;f;f;t;0;bda50fad-b887-4125-8fa3-1bf7325751e6",
+			"5749;5750;0;f;f;f;5749;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5750;5751;0;f;f;f;5750;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5750;5751;2;f;f;t;0;0e9bc9cb-4e20-4f1c-9522-7b9028ac7870",
+			"5751;5752;0;f;f;f;5751;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5752;5753;0;f;f;f;5752;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5752;5753;2;f;f;t;0;32f53adf-1ad0-4f70-8c34-722b2b008ad2",
+			"5753;5754;0;f;f;f;5753;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5754;5755;0;f;f;f;5754;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5754;5755;2;f;f;t;0;caec8f7b-e2aa-4759-bd3e-5c68319f5d96",
+			"5755;5756;0;f;f;f;5755;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5756;5757;0;f;f;f;5756;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5756;5757;2;f;f;t;0;bc49d04e-b98a-45bc-bf9c-034ecc208046",
+			"5757;5758;0;f;f;f;5757;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5758;5759;0;f;f;f;5758;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5758;5759;2;f;f;t;0;f8eb17e7-4377-41b8-94f2-98bbffe84480",
+			"5759;5760;0;f;f;f;5759;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5760;5761;0;f;f;f;5760;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5760;5761;2;f;f;t;0;04f8d2cb-2410-4067-bd8a-c678e2992b4a",
+			"5761;5762;0;f;f;f;5761;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5762;5763;0;f;f;f;5762;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5762;5763;2;f;f;t;0;f5de9920-d8d4-4a96-a25a-e46e61a0e594",
+			"5763;5764;0;f;f;f;5763;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5764;5765;0;f;f;f;5764;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5765;5766;0;f;f;f;5765;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5764;5766;2;f;f;t;0;453e793d-fdf4-4733-9748-f1743764f1e0",
+			"5765;5766;2;f;f;t;0;5a3556ce-30d7-402b-8f76-a2a4e84f74d7",
+			"5766;5767;0;f;f;f;5766;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5767;5768;0;f;f;f;5767;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5768;5769;0;f;f;f;5768;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5768;5769;2;f;f;t;0;63e29579-8df9-449a-a62f-787411d56c19",
+			"5769;5770;0;f;f;f;5769;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5770;5771;0;f;f;f;5770;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5770;5771;2;f;f;t;0;7c40fd44-5fb7-41b7-8fcf-0a9bcb033dd1",
+			"5771;5772;0;f;f;f;5771;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5772;5773;0;f;f;f;5772;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5772;5773;2;f;f;t;0;545fcf58-108e-44e1-894c-a21ad1c47369",
+			"5773;5774;0;f;f;f;5773;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5774;5775;0;f;f;f;5774;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5774;5775;2;f;f;t;0;7588acc1-bef0-4c8f-94a3-080b7af7900a",
+			"5775;5776;0;f;f;f;5775;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5776;5777;0;f;f;f;5776;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5776;5777;2;f;f;t;0;a5ee5f9c-fb48-49df-8964-52e20eab8430",
+			"5777;5778;0;f;f;f;5777;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5778;5779;0;f;f;f;5778;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5778;5779;2;f;f;t;0;27d2bd82-6bd3-45f3-94c5-3687809a6ac4",
+			"5779;5780;0;f;f;f;5779;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5780;5781;0;f;f;f;5780;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5779;5781;2;f;f;t;0;f2dcfab7-46d1-49cc-9261-55851a3637bb",
+			"5781;5782;0;f;f;f;5781;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5782;5783;0;f;f;f;5782;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5782;5783;2;f;f;t;0;6d472cd9-29df-4ef5-b648-22654d395fde",
+			"5783;5784;0;f;f;f;5783;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5784;5785;0;f;f;f;5784;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5783;5785;2;f;f;t;0;2ccb7857-20af-4c3f-a4a0-5617309df244",
+			"5785;5786;0;f;f;f;5785;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5786;5787;0;f;f;f;5786;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5787;5788;0;f;f;f;5787;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5786;5788;2;f;f;t;0;91c0b2a2-a9b4-4bff-b2cf-472586e5215d",
+			"5787;5788;2;f;f;t;0;c6e68f5a-7013-434b-a77e-da970b1aa1d3",
+			"5788;5789;0;f;f;f;5788;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5789;5790;0;f;f;f;5789;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5790;5791;0;f;f;f;5790;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5791;5792;0;f;f;f;5791;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5790;5792;2;f;f;t;0;50a7c454-cc85-49fe-aeea-5bdb8c299c2f",
+			"5791;5792;2;f;f;t;0;13b081e9-23df-4913-b439-974723755ef6",
+			"5792;5793;0;f;f;f;5792;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5793;5794;0;f;f;f;5793;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5794;5795;0;f;f;f;5794;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5795;5796;0;f;f;f;5795;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5794;5796;2;f;f;t;0;0b4fd32f-4ccf-471f-9eee-64c066e85cf5",
+			"5795;5796;2;f;f;t;0;515a1543-e60d-41e9-88eb-fcfc9f5f987d",
+			"5796;5797;0;f;f;f;5796;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5797;5798;0;f;f;f;5797;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5798;5799;0;f;f;f;5798;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5798;5799;2;f;f;t;0;d28626fa-887a-406c-955c-837887ea0420",
+			"5799;5800;0;f;f;f;5799;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5800;5801;0;f;f;f;5800;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5800;5801;2;f;f;t;0;8abdc436-9e64-428b-a496-afa975002f48",
+			"5801;5802;0;f;f;f;5801;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5802;5803;0;f;f;f;5802;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5802;5803;2;f;f;t;0;a6b45bab-3ee0-48cc-babb-0efc1ac0cd8c",
+			"5803;5804;0;f;f;f;5803;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5804;5805;0;f;f;f;5804;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5804;5805;2;f;f;t;0;5fcfecbc-fc4a-4b84-aa22-f729e7fbccd4",
+			"5805;5806;0;f;f;f;5805;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5806;5807;0;f;f;f;5806;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5806;5807;2;f;f;t;0;96aade3a-e02c-4aa7-a821-2092b9faac81",
+			"5807;5808;0;f;f;f;5807;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5808;5809;0;f;f;f;5808;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5808;5809;2;f;f;t;0;dbbc06c1-f5e1-4c58-b669-5c5725249691",
+			"5809;5810;0;f;f;f;5809;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5810;5811;0;f;f;f;5810;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5810;5811;2;f;f;t;0;5c5ceef1-f5b7-43b1-ae8d-2a4acd896804",
+			"5811;5812;0;f;f;f;5811;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5812;5813;0;f;f;f;5812;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5812;5813;2;f;f;t;0;585041ed-1172-4553-a58e-c0d6b5acf83a",
+			"5813;5814;0;f;f;f;5813;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5814;5815;0;f;f;f;5814;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5814;5815;2;f;f;t;0;6f6911de-8d4a-41ae-b42b-12ba6eed2279",
+			"5815;5816;0;f;f;f;5815;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5816;5817;0;f;f;f;5816;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5816;5817;2;f;f;t;0;c190eda8-f47c-43a6-a613-578f9c0aad7a",
+			"5817;5818;0;f;f;f;5817;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5818;5819;0;f;f;f;5818;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5818;5819;2;f;f;t;0;dd94430a-5952-4d3d-ba42-12fc07166c2a",
+			"5819;5820;0;f;f;f;5819;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5820;5821;0;f;f;f;5820;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5820;5821;2;f;f;t;0;466d2acc-08e8-4b90-bd5d-9ac93c7f83f6",
+			"5821;5822;0;f;f;f;5821;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5822;5823;0;f;f;f;5822;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5822;5823;2;f;f;t;0;f6ce0eb9-80f7-4315-9c0c-23470c08a9c8",
+			"5823;5824;0;f;f;f;5823;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5824;5825;0;f;f;f;5824;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5824;5825;2;f;f;t;0;ff494c92-e5c4-4c55-b85e-6f5062188f98",
+			"5825;5826;0;f;f;f;5825;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5826;5827;0;f;f;f;5826;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5826;5827;2;f;f;t;0;9a8c7506-e7cd-4872-9c06-a2629ee3abf0",
+			"5827;5828;0;f;f;f;5827;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5828;5829;0;f;f;f;5828;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5828;5829;2;f;f;t;0;d35cfba5-f3e5-479b-8aaf-0dc1e57b24e2",
+			"5829;5830;0;f;f;f;5829;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5830;5831;0;f;f;f;5830;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5830;5831;2;f;f;t;0;057dc51d-bb21-4f40-9897-4fa8cdb5e1d6",
+			"5831;5832;0;f;f;f;5831;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5832;5833;0;f;f;f;5832;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5832;5833;2;f;f;t;0;79d4ebbe-fffd-4606-8d8f-9a1df31093e5",
+			"5833;5834;0;f;f;f;5833;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5834;5835;0;f;f;f;5834;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5834;5835;2;f;f;t;0;21f9df46-58fd-4d4a-a53c-ab0211d8ffb4",
+			"5835;5836;0;f;f;f;5835;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5836;5837;0;f;f;f;5836;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5836;5837;2;f;f;t;0;8e813913-981e-4d3f-ae4e-a6e4536c0f12",
+			"5837;5838;0;f;f;f;5837;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5838;5839;0;f;f;f;5838;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5838;5839;2;f;f;t;0;7c7f5bd1-a823-4221-b52d-aeb17c0de209",
+			"5839;5840;0;f;f;f;5839;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5840;5841;0;f;f;f;5840;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5840;5841;2;f;f;t;0;f97a900b-65ef-4f29-a16d-a1bc83979f98",
+			"5841;5842;0;f;f;f;5841;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5842;5843;0;f;f;f;5842;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5842;5843;2;f;f;t;0;400efa9a-3862-4765-8735-d2d83eb580a8",
+			"5843;5844;0;f;f;f;5843;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5844;5845;0;f;f;f;5844;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5844;5845;2;f;f;t;0;19c11166-12c9-42cc-8d6c-bfe1286bffb4",
+			"5845;5846;0;f;f;f;5845;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5846;5847;0;f;f;f;5846;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5846;5847;2;f;f;t;0;ccf838b5-972c-461f-ac6f-28a8ea43cebe",
+			"5847;5848;0;f;f;f;5847;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5848;5849;0;f;f;f;5848;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5848;5849;2;f;f;t;0;1734734d-1381-4e08-b6ef-696b5551768d",
+			"5849;5850;0;f;f;f;5849;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5850;5851;0;f;f;f;5850;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5850;5851;2;f;f;t;0;ee5ff4e6-ec81-4ced-9dbf-2cc8f3716755",
+			"5851;5852;0;f;f;f;5851;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5852;5853;0;f;f;f;5852;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5852;5853;2;f;f;t;0;201d6a2e-9d88-4c7c-8025-e314a363f423",
+			"5853;5854;0;f;f;f;5853;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5854;5855;0;f;f;f;5854;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5854;5855;2;f;f;t;0;f5e80a29-5a55-4c3a-affb-7ccbb1d3c07c",
+			"5855;5856;0;f;f;f;5855;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5856;5857;0;f;f;f;5856;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5856;5857;2;f;f;t;0;e4665d5b-cca0-4107-bd06-6155396379ae",
+			"5857;5858;0;f;f;f;5857;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5858;5859;0;f;f;f;5858;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5858;5859;2;f;f;t;0;45531399-3d8d-457a-b920-2d411cf082cd",
+			"5859;5860;0;f;f;f;5859;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5860;5861;0;f;f;f;5860;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5860;5861;2;f;f;t;0;cbc0b03a-4497-4d1f-a0fe-3ad6b7c0ce11",
+			"5861;5862;0;f;f;f;5861;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5862;5863;0;f;f;f;5862;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5862;5863;2;f;f;t;0;4947ab6c-15d3-4379-bbb2-7345e48b6af0",
+			"5863;5864;0;f;f;f;5863;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5864;5865;0;f;f;f;5864;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5864;5865;2;f;f;t;0;34387865-78d9-4ea1-9c4f-d25f31d9821c",
+			"5865;5866;0;f;f;f;5865;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5866;5867;0;f;f;f;5866;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5866;5867;2;f;f;t;0;a0f80682-044b-4e53-bbcc-ae908d040660",
+			"5867;5868;0;f;f;f;5867;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5868;5869;0;f;f;f;5868;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5868;5869;2;f;f;t;0;3e9f93f8-7e27-41d7-bfc2-8d6349f6f73c",
+			"5869;5870;0;f;f;f;5869;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5870;5871;0;f;f;f;5870;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5870;5871;2;f;f;t;0;7eba6dfe-8718-4162-8700-dff89a89f8ad",
+			"5871;5872;0;f;f;f;5871;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5872;5873;0;f;f;f;5872;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5871;5873;2;f;f;t;0;d9834419-9ce3-4c06-b4dc-d1926ec4cd49",
+			"5873;5874;0;f;f;f;5873;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5874;5875;0;f;f;f;5874;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5874;5875;2;f;f;t;0;c7257441-ac1b-4396-9fd0-512d0ec27051",
+			"5875;5876;0;f;f;f;5875;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5876;5877;0;f;f;f;5876;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5876;5877;2;f;f;t;0;4121d0b9-69ff-4ffe-ad70-22444e0c39fb",
+			"5877;5878;0;f;f;f;5877;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5878;5879;0;f;f;f;5878;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5878;5879;2;f;f;t;0;656446ab-6d24-4cfb-874c-fd21507d7557",
+			"5879;5880;0;f;f;f;5879;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5880;5881;0;f;f;f;5880;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5880;5881;2;f;f;t;0;91e154e1-7483-4426-b384-34a130790f48",
+			"5881;5882;0;f;f;f;5881;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5882;5883;0;f;f;f;5882;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5882;5883;2;f;f;t;0;c668ccb6-7795-4620-a165-e21f5a87ed00",
+			"5883;5884;0;f;f;f;5883;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5884;5885;0;f;f;f;5884;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5884;5885;2;f;f;t;0;e27e8bfe-1611-488f-85b9-41901a2ae4ab",
+			"5885;5886;0;f;f;f;5885;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5886;5887;0;f;f;f;5886;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5886;5887;2;f;f;t;0;d6289ef4-d27f-46f0-84c3-ba36bc8d2472",
+			"5887;5888;0;f;f;f;5887;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5888;5889;0;f;f;f;5888;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5888;5889;2;f;f;t;0;eaf51a41-ed9f-496a-8bac-de58cee964c0",
+			"5889;5890;0;f;f;f;5889;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5890;5891;0;f;f;f;5890;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5890;5891;2;f;f;t;0;0fb1b952-c3ed-456b-8462-f16f01292f01",
+			"5891;5892;0;f;f;f;5891;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5892;5893;0;f;f;f;5892;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5892;5893;2;f;f;t;0;91d5f0ce-34c4-4500-a784-8685b3c2b288",
+			"5893;5894;0;f;f;f;5893;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5894;5895;0;f;f;f;5894;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5894;5895;2;f;f;t;0;5bcd658b-089a-4899-a98f-9321c01bb0b3",
+			"5895;5896;0;f;f;f;5895;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5896;5897;0;f;f;f;5896;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5896;5897;2;f;f;t;0;0cd293c4-e7ca-4acf-948c-1eb079b8f592",
+			"5897;5898;0;f;f;f;5897;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5898;5899;0;f;f;f;5898;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5898;5899;2;f;f;t;0;d7dfc0a5-44a0-4fea-a834-749347a64825",
+			"5899;5900;0;f;f;f;5899;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5900;5901;0;f;f;f;5900;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5900;5901;2;f;f;t;0;dd72e8a6-3cc7-463f-b26f-43ca07c7f850",
+			"5901;5902;0;f;f;f;5901;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5902;5903;0;f;f;f;5902;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5902;5903;2;f;f;t;0;3b6682d0-e003-434f-8702-ebdb7b00f2fe",
+			"5903;5904;0;f;f;f;5903;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5904;5905;0;f;f;f;5904;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5904;5905;2;f;f;t;0;949a7705-9b1f-41bb-9422-77c02d560005",
+			"5905;5906;0;f;f;f;5905;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5906;5907;0;f;f;f;5906;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5907;5908;0;f;f;f;5907;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5906;5908;2;f;f;t;0;5ad68dfb-30df-4b52-a7cd-52432540cc4c",
+			"5907;5908;2;f;f;t;0;2afe8301-1d59-45c9-bcef-bb752d2a1a6c",
+			"5908;5909;0;f;f;f;5908;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5909;5910;0;f;f;f;5909;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5910;5911;0;f;f;f;5910;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5911;5912;0;f;f;f;5911;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5910;5912;2;f;f;t;0;94aef4ab-6365-4899-8565-f09795be783c",
+			"5911;5912;2;f;f;t;0;b4210498-3df6-4546-9b1a-7f9c50dba25f",
+			"5912;5913;0;f;f;f;5912;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5913;5914;0;f;f;f;5913;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5914;5915;0;f;f;f;5914;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5914;5915;2;f;f;t;0;f8f67ca9-6a4b-47d4-baed-828aa75d108e",
+			"5915;5916;0;f;f;f;5915;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5916;5917;0;f;f;f;5916;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5916;5917;2;f;f;t;0;7039972f-5ab2-4d9e-bb47-8427049fd3bd",
+			"5917;5918;0;f;f;f;5917;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5918;5919;0;f;f;f;5918;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5918;5919;2;f;f;t;0;99be1849-37ef-472b-a77a-34ad49c5d17e",
+			"5919;5920;0;f;f;f;5919;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5920;5921;0;f;f;f;5920;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5920;5921;2;f;f;t;0;ca3787bd-104d-48a8-9f6c-f12fc738163c",
+			"5921;5922;0;f;f;f;5921;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5922;5923;0;f;f;f;5922;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5922;5923;2;f;f;t;0;b4372f13-282a-4699-a08c-5539e56805a4",
+			"5923;5924;0;f;f;f;5923;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5924;5925;0;f;f;f;5924;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5924;5925;2;f;f;t;0;b40d7c9f-ebc4-497c-8f64-195e54239a88",
+			"5925;5926;0;f;f;f;5925;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5926;5927;0;f;f;f;5926;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5926;5927;2;f;f;t;0;3ce01f17-6cfd-4b19-b2b8-5a09bc59e0eb",
+			"5927;5928;0;f;f;f;5927;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5928;5929;0;f;f;f;5928;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5928;5929;2;f;f;t;0;3492a088-0dae-4b28-831e-92623562a776",
+			"5929;5930;0;f;f;f;5929;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5930;5931;0;f;f;f;5930;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5930;5931;2;f;f;t;0;3cc680ea-12f5-4d3c-8992-c7e4b0f54209",
+			"5931;5932;0;f;f;f;5931;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5932;5933;0;f;f;f;5932;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5932;5933;2;f;f;t;0;e2f2d566-5631-45b3-b835-8f2d5dcb0658",
+			"5933;5934;0;f;f;f;5933;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5934;5935;0;f;f;f;5934;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5934;5935;2;f;f;t;0;b22f21c6-cf64-464d-81f7-f5dcb15b5b47",
+			"5935;5936;0;f;f;f;5935;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5936;5937;0;f;f;f;5936;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5936;5937;2;f;f;t;0;a9f46f3b-d8b8-4fca-9193-93acc9ee141e",
+			"5937;5938;0;f;f;f;5937;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5938;5939;0;f;f;f;5938;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5938;5939;2;f;f;t;0;41a4be40-7ba6-40dc-9050-75ca108a0bad",
+			"5939;5940;0;f;f;f;5939;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5940;5941;0;f;f;f;5940;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5940;5941;2;f;f;t;0;0d988202-3f54-4bfd-af5c-e168d2118178",
+			"5941;5942;0;f;f;f;5941;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5942;5943;0;f;f;f;5942;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5942;5943;2;f;f;t;0;e2834249-7847-4be1-b6c9-4f6ebcd56d73",
+			"5943;5944;0;f;f;f;5943;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5944;5945;0;f;f;f;5944;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5944;5945;2;f;f;t;0;95327849-ab70-4e1e-bf10-27fe3a8cc9d4",
+			"5945;5946;0;f;f;f;5945;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5946;5947;0;f;f;f;5946;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5946;5947;2;f;f;t;0;273d4982-6ce6-45d6-827a-aaeed3ce51a7",
+			"5947;5948;0;f;f;f;5947;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5948;5949;0;f;f;f;5948;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5948;5949;2;f;f;t;0;e2ccfca3-37ec-4729-bfa0-6cb1801a22e2",
+			"5949;5950;0;f;f;f;5949;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5950;5951;0;f;f;f;5950;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5950;5951;2;f;f;t;0;ba955b52-dd77-411f-bce9-6fda9f277e95",
+			"5951;5952;0;f;f;f;5951;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5952;5953;0;f;f;f;5952;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5952;5953;2;f;f;t;0;cd4f5d46-f5d4-464d-9062-23dcf8bacb31",
+			"5953;5954;0;f;f;f;5953;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5954;5955;0;f;f;f;5954;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5954;5955;2;f;f;t;0;67c52c0f-9ffe-4a9b-a639-dc9f454f7a0a",
+			"5955;5956;0;f;f;f;5955;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5956;5957;0;f;f;f;5956;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5956;5957;2;f;f;t;0;abb79383-4422-4465-b512-aace76556d19",
+			"5957;5958;0;f;f;f;5957;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5958;5959;0;f;f;f;5958;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5958;5959;2;f;f;t;0;c198ad95-7ba1-4859-b124-c8f0e9efd8e1",
+			"5959;5960;0;f;f;f;5959;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5960;5961;0;f;f;f;5960;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5960;5961;2;f;f;t;0;976530b5-feef-40f5-ae8b-4c5444a02a17",
+			"5961;5962;0;f;f;f;5961;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5962;5963;0;f;f;f;5962;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5962;5963;2;f;f;t;0;ffe8d84e-57f7-438b-aa46-8175041fdcab",
+			"5963;5964;0;f;f;f;5963;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5964;5965;0;f;f;f;5964;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5964;5965;2;f;f;t;0;86259a3a-3a64-40e7-956f-b34e355aaacb",
+			"5965;5966;0;f;f;f;5965;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5966;5967;0;f;f;f;5966;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5965;5967;2;f;f;t;0;9e00259f-36af-4ded-81d4-3f6b7f1a021a",
+			"5967;5968;0;f;f;f;5967;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5968;5969;0;f;f;f;5968;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5968;5969;2;f;f;t;0;3813c74a-747c-4349-ad70-6380f6b6c1eb",
+			"5969;5970;0;f;f;f;5969;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5970;5971;0;f;f;f;5970;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5970;5971;2;f;f;t;0;224c8262-2ff5-444b-8ee0-75c5e5a0c851",
+			"5971;5972;0;f;f;f;5971;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5972;5973;0;f;f;f;5972;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5972;5973;2;f;f;t;0;2f11600e-491c-4463-a115-601bd46e20d8",
+			"5973;5974;0;f;f;f;5973;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5974;5975;0;f;f;f;5974;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5974;5975;2;f;f;t;0;4b94c70b-0828-4537-b783-4db97695877b",
+			"5975;5976;0;f;f;f;5975;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5976;5977;0;f;f;f;5976;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5976;5977;2;f;f;t;0;62cffc2b-fedb-47aa-bcc7-707f75bfb8e3",
+			"5977;5978;0;f;f;f;5977;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5978;5979;0;f;f;f;5978;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5978;5979;2;f;f;t;0;eb965b6c-5df1-49cc-8951-b72250455143",
+			"5979;5980;0;f;f;f;5979;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5980;5981;0;f;f;f;5980;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5980;5981;2;f;f;t;0;10aa2245-3377-48d7-b33e-e6dfabd55d68",
+			"5981;5982;0;f;f;f;5981;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5982;5983;0;f;f;f;5982;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5982;5983;2;f;f;t;0;e9c54f28-beab-49ab-a2ad-95b41922d51a",
+			"5983;5984;0;f;f;f;5983;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5984;5985;0;f;f;f;5984;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5984;5985;2;f;f;t;0;584a5ebc-4f30-4e37-9761-c329f6f1c24e",
+			"5985;5986;0;f;f;f;5985;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5986;5987;0;f;f;f;5986;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5986;5987;2;f;f;t;0;9a3f8091-8603-4f3f-b287-5a3a11faa787",
+			"5987;5988;0;f;f;f;5987;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5988;5989;0;f;f;f;5988;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5988;5989;2;f;f;t;0;2d67e2f2-2e4e-45ac-93ee-f1449336e2d3",
+			"5989;5990;0;f;f;f;5989;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5990;5991;0;f;f;f;5990;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5990;5991;2;f;f;t;0;15f55bc4-00be-47ba-92cb-82ae9501f2d4",
+			"5991;5992;0;f;f;f;5991;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5992;5993;0;f;f;f;5992;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5992;5993;2;f;f;t;0;a129bdd4-a3fd-40bf-970d-809e74f7ea6b",
+			"5993;5994;0;f;f;f;5993;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5994;5995;0;f;f;f;5994;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5994;5995;2;f;f;t;0;bc889d80-8881-4bba-9949-856e5cadcdce",
+			"5995;5996;0;f;f;f;5995;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5996;5997;0;f;f;f;5996;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5996;5997;2;f;f;t;0;22845de0-b963-44ed-baf6-c2d74e5f32c9",
+			"5997;5998;0;f;f;f;5997;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5998;5999;0;f;f;f;5998;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"5998;5999;2;f;f;t;0;3a0fe646-7aa2-4e76-9ba9-315cfd065ee2",
+			"5999;6000;0;f;f;f;5999;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6000;6001;0;f;f;f;6000;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6000;6001;2;f;f;t;0;5e83dda1-09e4-4172-8839-ec1f5ef6a842",
+			"6001;6002;0;f;f;f;6001;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6002;6003;0;f;f;f;6002;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6002;6003;2;f;f;t;0;fcff7e87-9e96-430d-a57e-a76a20dd18e7",
+			"6003;6004;0;f;f;f;6003;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6004;6005;0;f;f;f;6004;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6004;6005;2;f;f;t;0;5983144a-3438-4020-b5d7-7845e4711534",
+			"6005;6006;0;f;f;f;6005;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6006;6007;0;f;f;f;6006;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6005;6007;2;f;f;t;0;83755e63-86b6-41e2-9ff5-74b834af5246",
+			"6007;6008;0;f;f;f;6007;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6008;6009;0;f;f;f;6008;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6008;6009;2;f;f;t;0;9cce5194-d24f-47c4-b604-39c6cd98b43b",
+			"6009;6010;0;f;f;f;6009;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6010;6011;0;f;f;f;6010;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6010;6011;2;f;f;t;0;30591b04-1837-46a9-8d6f-7024db6d6dea",
+			"6011;6012;0;f;f;f;6011;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6012;6013;0;f;f;f;6012;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6012;6013;2;f;f;t;0;d758829f-1981-41e0-a0c7-8708b1bcef8c",
+			"6013;6014;0;f;f;f;6013;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6014;6015;0;f;f;f;6014;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6014;6015;2;f;f;t;0;419b6e57-ea30-49d8-af28-a9accdfdef25",
+			"6015;6016;0;f;f;f;6015;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6016;6017;0;f;f;f;6016;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6016;6017;2;f;f;t;0;43f25dcd-9878-4ee6-8f44-4d4a3745a04b",
+			"6017;6018;0;f;f;f;6017;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6018;6019;0;f;f;f;6018;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6018;6019;2;f;f;t;0;f139a3a5-48d2-4112-adbd-0a0b87509801",
+			"6019;6020;0;f;f;f;6019;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6020;6021;0;f;f;f;6020;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6020;6021;2;f;f;t;0;c40d0433-9857-40f3-b677-ddcf9e1afe08",
+			"6021;6022;0;f;f;f;6021;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6022;6023;0;f;f;f;6022;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6022;6023;2;f;f;t;0;32eebd39-5c6d-4282-bef0-f15b57f256a5",
+			"6023;6024;0;f;f;f;6023;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6024;6025;0;f;f;f;6024;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6024;6025;2;f;f;t;0;8aecab76-51e5-4edf-9097-8ae343d9b7e6",
+			"6025;6026;0;f;f;f;6025;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6026;6027;0;f;f;f;6026;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6026;6027;2;f;f;t;0;cc37b6a1-5798-46fd-ad29-9d65fade2db1",
+			"6027;6028;0;f;f;f;6027;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6028;6029;0;f;f;f;6028;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6028;6029;2;f;f;t;0;5a0c351f-3571-4be8-8918-499aba44b8f2",
+			"6029;6030;0;f;f;f;6029;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6030;6031;0;f;f;f;6030;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6030;6031;2;f;f;t;0;e3cc7e07-a4d7-4fdd-9645-33d1c6c30b43",
+			"6031;6032;0;f;f;f;6031;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6032;6033;0;f;f;f;6032;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6032;6033;2;f;f;t;0;bba69bcf-d223-43a7-b48f-33e8b7b37d47",
+			"6033;6034;0;f;f;f;6033;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6034;6035;0;f;f;f;6034;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6034;6035;2;f;f;t;0;de64c8bb-6a13-425d-8aec-5e1397001aa1",
+			"6035;6036;0;f;f;f;6035;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6036;6037;0;f;f;f;6036;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6036;6037;2;f;f;t;0;3666ed83-5054-401a-81ef-8ff36926fc77",
+			"6037;6038;0;f;f;f;6037;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6038;6039;0;f;f;f;6038;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6038;6039;2;f;f;t;0;ca733951-b629-45d8-b448-fb120244f46c",
+			"6039;6040;0;f;f;f;6039;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6040;6041;0;f;f;f;6040;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6040;6041;2;f;f;t;0;f3c125a4-6d47-4b31-bbf9-38fc06bf9a6a",
+			"6041;6042;0;f;f;f;6041;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6042;6043;0;f;f;f;6042;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6042;6043;2;f;f;t;0;f3921b33-4fe2-40ef-af5f-8f8a0c8f4861",
+			"6043;6044;0;f;f;f;6043;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6044;6045;0;f;f;f;6044;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6044;6045;2;f;f;t;0;104d3921-47ef-493d-8756-939f7384f691",
+			"6045;6046;0;f;f;f;6045;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6046;6047;0;f;f;f;6046;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6046;6047;2;f;f;t;0;1fcad3bd-6990-43a0-a62f-f5e3c9021eac",
+			"6047;6048;0;f;f;f;6047;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6048;6049;0;f;f;f;6048;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6048;6049;2;f;f;t;0;357fa520-2277-4e3f-9a15-1496af6afb1f",
+			"6049;6050;0;f;f;f;6049;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6050;6051;0;f;f;f;6050;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6050;6051;2;f;f;t;0;a12e6552-c28f-4053-afa9-b28a75d13f52",
+			"6051;6052;0;f;f;f;6051;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6052;6053;0;f;f;f;6052;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6052;6053;2;f;f;t;0;9eb2d53c-fd5d-40f9-896e-69a83d3f07a4",
+			"6053;6054;0;f;f;f;6053;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6054;6055;0;f;f;f;6054;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6054;6055;2;f;f;t;0;6558faca-f89d-4bc6-948f-9281e8bbb003",
+			"6055;6056;0;f;f;f;6055;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6056;6057;0;f;f;f;6056;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6056;6057;2;f;f;t;0;d34f7c42-0383-496b-aba8-9586f89cfaa4",
+			"6057;6058;0;f;f;f;6057;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6058;6059;0;f;f;f;6058;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6058;6059;2;f;f;t;0;53b2ee13-d157-493a-90af-2875ef0ca9c4",
+			"6059;6060;0;f;f;f;6059;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6060;6061;0;f;f;f;6060;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6060;6061;2;f;f;t;0;dd2aad1d-9515-4e21-93c6-471acab9d040",
+			"6061;6062;0;f;f;f;6061;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6062;6063;0;f;f;f;6062;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6062;6063;2;f;f;t;0;ea442633-7bcf-4308-9b6d-71cc530988e8",
+			"6063;6064;0;f;f;f;6063;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6064;6065;0;f;f;f;6064;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6063;6065;2;f;f;t;0;fd3ec40d-34b9-4ce3-8216-5378f5c9419a",
+			"6065;6066;0;f;f;f;6065;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6066;6067;0;f;f;f;6066;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6066;6067;2;f;f;t;0;e82596f4-e116-4d6c-ab63-fb2de725ef32",
+			"6067;6068;0;f;f;f;6067;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6068;6069;0;f;f;f;6068;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6068;6069;2;f;f;t;0;b2d0be24-a28d-43c9-b3d9-77e1aa25d278",
+			"6069;6070;0;f;f;f;6069;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6070;6071;0;f;f;f;6070;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6070;6071;2;f;f;t;0;e4914fc1-9e89-4c54-a04d-74a987664d1b",
+			"6071;6072;0;f;f;f;6071;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6072;6073;0;f;f;f;6072;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6072;6073;2;f;f;t;0;58e73475-a97e-4a21-aa7c-9a4a5d7c3664",
+			"6073;6074;0;f;f;f;6073;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6074;6075;0;f;f;f;6074;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6074;6075;2;f;f;t;0;735221d6-8506-43ea-9e20-6a264b729936",
+			"6075;6076;0;f;f;f;6075;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6076;6077;0;f;f;f;6076;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6075;6077;2;f;f;t;0;8f0e0df4-8c1b-4e9f-91a9-434f60f91a24",
+			"6077;6078;0;f;f;f;6077;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6078;6079;0;f;f;f;6078;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6078;6079;2;f;f;t;0;f10b54bf-3f94-4d4f-8fb2-a7ef3bd9502f",
+			"6079;6080;0;f;f;f;6079;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6080;6081;0;f;f;f;6080;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6079;6081;2;f;f;t;0;c3fd273d-1c52-4f18-83b8-d116475622da",
+			"6081;6082;0;f;f;f;6081;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6082;6083;0;f;f;f;6082;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6082;6083;2;f;f;t;0;a1609868-9c02-455f-a830-f6263e7be638",
+			"6083;6084;0;f;f;f;6083;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6084;6085;0;f;f;f;6084;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6084;6085;2;f;f;t;0;b74e01d1-d73c-45d0-8485-d7adb1d7621b",
+			"6085;6086;0;f;f;f;6085;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6086;6087;0;f;f;f;6086;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6086;6087;2;f;f;t;0;831ad200-897c-4b48-8cdd-77cc6b81b718",
+			"6087;6088;0;f;f;f;6087;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6088;6089;0;f;f;f;6088;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6088;6089;2;f;f;t;0;733f2a5a-b517-406d-be72-72484c528aeb",
+			"6089;6090;0;f;f;f;6089;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6090;6091;0;f;f;f;6090;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6090;6091;2;f;f;t;0;de14858c-f116-45bf-adf6-9f874790023c",
+			"6091;6092;0;f;f;f;6091;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6092;6093;0;f;f;f;6092;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6091;6093;2;f;f;t;0;066f9319-4b5b-4756-8757-26e3eb2146da",
+			"6093;6094;0;f;f;f;6093;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6094;6095;0;f;f;f;6094;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6094;6095;2;f;f;t;0;678d8cd4-9b81-4b00-98d3-7d77177b94fc",
+			"6095;6096;0;f;f;f;6095;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6096;6097;0;f;f;f;6096;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6095;6097;2;f;f;t;0;bc00f27a-5580-46da-8963-44ef2cbe65f6",
+			"6097;6098;0;f;f;f;6097;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6098;6099;0;f;f;f;6098;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6098;6099;2;f;f;t;0;f0c0295a-a061-4ac8-811c-2df3258c740d",
+			"6099;6100;0;f;f;f;6099;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6100;6101;0;f;f;f;6100;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6100;6101;2;f;f;t;0;101ab54a-24db-48c5-8d4b-9984a380a4f2",
+			"6101;6102;0;f;f;f;6101;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6102;6103;0;f;f;f;6102;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6102;6103;2;f;f;t;0;16940efc-2a4f-4e73-b7ea-2512b40c36cc",
+			"6103;6104;0;f;f;f;6103;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6104;6105;0;f;f;f;6104;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6104;6105;2;f;f;t;0;de3cc2a6-4d8e-4d39-9e5b-1b7c1cc794c4",
+			"6105;6106;0;f;f;f;6105;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6106;6107;0;f;f;f;6106;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6106;6107;2;f;f;t;0;269fdb39-ea81-4799-9adb-306a4bdca24a",
+			"6107;6108;0;f;f;f;6107;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6108;6109;0;f;f;f;6108;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6107;6109;2;f;f;t;0;e6e2c47e-aa24-477b-ae2c-3fd7a2f66190",
+			"6109;6110;0;f;f;f;6109;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6110;6111;0;f;f;f;6110;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6110;6111;2;f;f;t;0;ea8fcef2-22a9-4b93-8bd6-571ac1012127",
+			"6111;6112;0;f;f;f;6111;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6112;6113;0;f;f;f;6112;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6111;6113;2;f;f;t;0;c8200044-61ff-4538-aff1-2089e1591a27",
+			"6113;6114;0;f;f;f;6113;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6114;6115;0;f;f;f;6114;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6114;6115;2;f;f;t;0;8ecf0fe2-9e4a-49d5-aad2-36dd529bbc72",
+			"6115;6116;0;f;f;f;6115;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6116;6117;0;f;f;f;6116;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6115;6117;2;f;f;t;0;2f982d04-fbed-4506-86f9-c1dcb163099e",
+			"6117;6118;0;f;f;f;6117;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6118;6119;0;f;f;f;6118;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6118;6119;2;f;f;t;0;e0f70374-bf21-4eaa-bf6d-d6afb0b45fb8",
+			"6119;6120;0;f;f;f;6119;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6120;6121;0;f;f;f;6120;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6120;6121;2;f;f;t;0;2018e8a7-333d-4cba-bfda-f0b28756039f",
+			"6121;6122;0;f;f;f;6121;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6122;6123;0;f;f;f;6122;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6122;6123;2;f;f;t;0;b900bf41-b689-4f4c-87fc-a722a3b59cce",
+			"6123;6124;0;f;f;f;6123;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6124;6125;0;f;f;f;6124;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6124;6125;2;f;f;t;0;3c769828-34c7-4f6a-b827-216286ec6632",
+			"6125;6126;0;f;f;f;6125;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6126;6127;0;f;f;f;6126;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6126;6127;2;f;f;t;0;de07d1c9-a250-430d-9789-69ad841056d9",
+			"6127;6128;0;f;f;f;6127;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6128;6129;0;f;f;f;6128;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6128;6129;2;f;f;t;0;20c629fe-3edb-4f73-854a-e5ead5266535",
+			"6129;6130;0;f;f;f;6129;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6130;6131;0;f;f;f;6130;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6130;6131;2;f;f;t;0;6d93c8cc-9f78-4b44-864b-9c86504cf2cb",
+			"6131;6132;0;f;f;f;6131;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6132;6133;0;f;f;f;6132;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6132;6133;2;f;f;t;0;bbf3e99a-b33e-4bfb-9c35-45be10ea610f",
+			"6133;6134;0;f;f;f;6133;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6134;6135;0;f;f;f;6134;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6134;6135;2;f;f;t;0;8598d35d-fa73-4bf3-823f-7ebc2b6240ea",
+			"6135;6136;0;f;f;f;6135;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6136;6137;0;f;f;f;6136;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6136;6137;2;f;f;t;0;81c8372b-1e71-4771-981f-919c69625d48",
+			"6137;6138;0;f;f;f;6137;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6138;6139;0;f;f;f;6138;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6138;6139;2;f;f;t;0;d30368ce-4cf0-43ac-8ed1-a8092f10b687",
+			"6139;6140;0;f;f;f;6139;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6140;6141;0;f;f;f;6140;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6140;6141;2;f;f;t;0;43e3685a-3471-4b7e-b246-9ff4197211eb",
+			"6141;6142;0;f;f;f;6141;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6142;6143;0;f;f;f;6142;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6142;6143;2;f;f;t;0;aaa934a8-321a-4be9-b202-a6205e7936c9",
+			"6143;6144;0;f;f;f;6143;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6144;6145;0;f;f;f;6144;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6143;6145;2;f;f;t;0;300d3116-8780-4dc7-bede-0515118386f7",
+			"6145;6146;0;f;f;f;6145;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6146;6147;0;f;f;f;6146;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6146;6147;2;f;f;t;0;9116ecf6-7cbb-4457-887b-f82c1c4a1f9f",
+			"6147;6148;0;f;f;f;6147;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6148;6149;0;f;f;f;6148;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6147;6149;2;f;f;t;0;cccebf78-533f-46c9-9227-a9361e742fa8",
+			"6149;6150;0;f;f;f;6149;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6150;6151;0;f;f;f;6150;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6150;6151;2;f;f;t;0;a3217044-6bb5-4f1e-8003-0f82413cb318",
+			"6151;6152;0;f;f;f;6151;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6152;6153;0;f;f;f;6152;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6151;6153;2;f;f;t;0;40509c36-1156-427c-a820-a1b5b7bada2f",
+			"6153;6154;0;f;f;f;6153;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6154;6155;0;f;f;f;6154;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6154;6155;2;f;f;t;0;0d83be77-4ba8-4e05-982b-63e5ee9a07d5",
+			"6155;6156;0;f;f;f;6155;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6156;6157;0;f;f;f;6156;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6156;6157;2;f;f;t;0;132f34f6-0abb-40ac-80dc-6e4c83f22923",
+			"6157;6158;0;f;f;f;6157;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6158;6159;0;f;f;f;6158;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6158;6159;2;f;f;t;0;95d8e2f1-7308-47fd-9dd3-6524306eb79c",
+			"6159;6160;0;f;f;f;6159;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6160;6161;0;f;f;f;6160;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6160;6161;2;f;f;t;0;84739076-c730-4daa-a270-37735cd5f244",
+			"6161;6162;0;f;f;f;6161;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6162;6163;0;f;f;f;6162;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6162;6163;2;f;f;t;0;03f47ac2-d0c9-44ce-9c18-80f8ddd9aeb4",
+			"6163;6164;0;f;f;f;6163;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6164;6165;0;f;f;f;6164;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6164;6165;2;f;f;t;0;dfd230cf-8851-47d3-a426-d96820ccb632",
+			"6165;6166;0;f;f;f;6165;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6166;6167;0;f;f;f;6166;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6166;6167;2;f;f;t;0;a2c82061-d5fa-4e45-bb40-ec825467ad6f",
+			"6167;6168;0;f;f;f;6167;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6168;6169;0;f;f;f;6168;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6168;6169;2;f;f;t;0;3d339c55-2ddc-405d-ac81-b830d4250cc4",
+			"6169;6170;0;f;f;f;6169;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6170;6171;0;f;f;f;6170;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6170;6171;2;f;f;t;0;a7dcf59e-4e03-4a3e-b4c4-22a3c2138592",
+			"6171;6172;0;f;f;f;6171;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6172;6173;0;f;f;f;6172;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6172;6173;2;f;f;t;0;fa1f49b2-5345-461c-abf0-ac743ff26122",
+			"6173;6174;0;f;f;f;6173;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6174;6175;0;f;f;f;6174;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6174;6175;2;f;f;t;0;40fdd556-ac47-4b15-a162-d70ec4c6aada",
+			"6175;6176;0;f;f;f;6175;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6176;6177;0;f;f;f;6176;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6176;6177;2;f;f;t;0;b96e79c3-e4d2-4e86-8e70-dad416cd970d",
+			"6177;6178;0;f;f;f;6177;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6178;6179;0;f;f;f;6178;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6178;6179;2;f;f;t;0;95937b5c-d940-4691-a8e2-ffae128c121b",
+			"6179;6180;0;f;f;f;6179;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6180;6181;0;f;f;f;6180;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6180;6181;2;f;f;t;0;f9d06cb1-f8dd-4519-b7aa-4db39661f0d7",
+			"6181;6182;0;f;f;f;6181;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6182;6183;0;f;f;f;6182;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6182;6183;2;f;f;t;0;e41155ac-6a43-4244-8ab7-ef5d007b9989",
+			"6183;6184;0;f;f;f;6183;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6184;6185;0;f;f;f;6184;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6184;6185;2;f;f;t;0;0d64f210-d3b7-4dcd-93a0-0cedd96a75b2",
+			"6185;6186;0;f;f;f;6185;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6186;6187;0;f;f;f;6186;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6186;6187;2;f;f;t;0;9ae0f213-bb5f-4e80-b11f-45835ce172db",
+			"6187;6188;0;f;f;f;6187;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6188;6189;0;f;f;f;6188;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6188;6189;2;f;f;t;0;fae465e6-dc7f-4afe-8dac-4dd3798ad552",
+			"6189;6190;0;f;f;f;6189;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6190;6191;0;f;f;f;6190;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6190;6191;2;f;f;t;0;3034cc85-459e-45c9-ba10-ff3138a7e96a",
+			"6191;6192;0;f;f;f;6191;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6192;6193;0;f;f;f;6192;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6192;6193;2;f;f;t;0;c81c2f64-8d9d-4024-86e0-4d193162486c",
+			"6193;6194;0;f;f;f;6193;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6194;6195;0;f;f;f;6194;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6193;6195;2;f;f;t;0;1ffcb406-9824-41b0-99ec-e9d9c36851bd",
+			"6195;6196;0;f;f;f;6195;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6196;6197;0;f;f;f;6196;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6196;6197;2;f;f;t;0;5b4881eb-58fa-4b31-9770-f862b78270b5",
+			"6197;6198;0;f;f;f;6197;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6198;6199;0;f;f;f;6198;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6198;6199;2;f;f;t;0;822ae166-7335-416c-bdd7-2f2c3e22a4ec",
+			"6199;6200;0;f;f;f;6199;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6200;6201;0;f;f;f;6200;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6200;6201;2;f;f;t;0;aba78d03-1cae-422e-8d9a-4262f1dee7ac",
+			"6201;6202;0;f;f;f;6201;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6202;6203;0;f;f;f;6202;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6202;6203;2;f;f;t;0;452490ab-e487-422f-bc7f-2ac0d5af4bc1",
+			"6203;6204;0;f;f;f;6203;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6204;6205;0;f;f;f;6204;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6204;6205;2;f;f;t;0;52acb30c-6095-4364-a045-b34667999977",
+			"6205;6206;0;f;f;f;6205;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6206;6207;0;f;f;f;6206;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6206;6207;2;f;f;t;0;87b2ff84-5390-478c-a5c9-dde50e1c93d3",
+			"6207;6208;0;f;f;f;6207;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6208;6209;0;f;f;f;6208;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6208;6209;2;f;f;t;0;8a0e0e56-cf93-4709-8a23-d3b6fa321735",
+			"6209;6210;0;f;f;f;6209;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6210;6211;0;f;f;f;6210;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6210;6211;2;f;f;t;0;5517635b-c197-404f-a4c6-19d71596818f",
+			"6211;6212;0;f;f;f;6211;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6212;6213;0;f;f;f;6212;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6212;6213;2;f;f;t;0;73e16be3-6e54-41dd-b460-50220e53bbae",
+			"6213;6214;0;f;f;f;6213;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6214;6215;0;f;f;f;6214;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6214;6215;2;f;f;t;0;397affd8-0622-4039-bef5-2fa755000e7a",
+			"6215;6216;0;f;f;f;6215;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6216;6217;0;f;f;f;6216;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6216;6217;2;f;f;t;0;9ccb1d33-09c0-4890-acc3-0410e4d414b3",
+			"6217;6218;0;f;f;f;6217;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6218;6219;0;f;f;f;6218;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6218;6219;2;f;f;t;0;339b3cee-de55-459f-893d-d8bce13d2db6",
+			"6219;6220;0;f;f;f;6219;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6220;6221;0;f;f;f;6220;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6220;6221;2;f;f;t;0;98349737-f6bf-4ab6-aecf-8ef6e7388925",
+			"6221;6222;0;f;f;f;6221;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6222;6223;0;f;f;f;6222;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6222;6223;2;f;f;t;0;f6bba1ae-b9c3-45e0-bb02-3dee6e0cde0d",
+			"6223;6224;0;f;f;f;6223;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6224;6225;0;f;f;f;6224;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6224;6225;2;f;f;t;0;85c2c8d7-df5a-4c2d-a5aa-227c4c9e53d5",
+			"6225;6226;0;f;f;f;6225;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6226;6227;0;f;f;f;6226;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6226;6227;2;f;f;t;0;b637836b-a8d3-4cb4-85bd-8f3c527ea15f",
+			"6227;6228;0;f;f;f;6227;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6228;6229;0;f;f;f;6228;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6228;6229;2;f;f;t;0;cfe149fd-2fd1-408e-b12b-9ed641fb929c",
+			"6229;6230;0;f;f;f;6229;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6230;6231;0;f;f;f;6230;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6230;6231;2;f;f;t;0;1d57eccf-c483-46e7-b758-fe41312677e5",
+			"6231;6232;0;f;f;f;6231;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6232;6233;0;f;f;f;6232;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6232;6233;2;f;f;t;0;9ec0f487-3511-45db-8eb1-5f8fa2e9a703",
+			"6233;6234;0;f;f;f;6233;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6234;6235;0;f;f;f;6234;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6234;6235;2;f;f;t;0;669a278b-700e-40f7-ae36-a7150c587e16",
+			"6235;6236;0;f;f;f;6235;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6236;6237;0;f;f;f;6236;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6236;6237;2;f;f;t;0;bd2e7f5e-4fc5-4ffa-8110-b59609f62cdd",
+			"6237;6238;0;f;f;f;6237;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6238;6239;0;f;f;f;6238;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6238;6239;2;f;f;t;0;90223073-ca25-4ce9-ac1b-73d6a212a8aa",
+			"6239;6240;0;f;f;f;6239;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6240;6241;0;f;f;f;6240;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6240;6241;2;f;f;t;0;54fe0c79-4473-4611-9ed1-81bfa1ae1019",
+			"6241;6242;0;f;f;f;6241;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6242;6243;0;f;f;f;6242;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6242;6243;2;f;f;t;0;c5886774-3497-4866-8306-84538390a1bf",
+			"6243;6244;0;f;f;f;6243;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6244;6245;0;f;f;f;6244;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6244;6245;2;f;f;t;0;4da01798-d423-4603-9af4-e54b57baec19",
+			"6245;6246;0;f;f;f;6245;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6246;6247;0;f;f;f;6246;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6246;6247;2;f;f;t;0;d9f59b2e-bb3d-4de3-8004-2b6b9cf5561e",
+			"6247;6248;0;f;f;f;6247;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6248;6249;0;f;f;f;6248;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6248;6249;2;f;f;t;0;c7a875c2-3281-41cb-81c1-15d24164adaf",
+			"6249;6250;0;f;f;f;6249;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6250;6251;0;f;f;f;6250;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6250;6251;2;f;f;t;0;616ea058-285e-4034-9829-c91b91f356bc",
+			"6251;6252;0;f;f;f;6251;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6252;6253;0;f;f;f;6252;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6252;6253;2;f;f;t;0;0ea6a4a3-b043-4ab8-990f-ce2a3d63d8b3",
+			"6253;6254;0;f;f;f;6253;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6254;6255;0;f;f;f;6254;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6254;6255;2;f;f;t;0;2c53d537-6218-410e-a34b-a3a99dc2b723",
+			"6255;6256;0;f;f;f;6255;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6256;6257;0;f;f;f;6256;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6256;6257;2;f;f;t;0;a960aaf3-969f-4f98-b1b3-0b1d1ca25cc8",
+			"6257;6258;0;f;f;f;6257;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6258;6259;0;f;f;f;6258;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6258;6259;2;f;f;t;0;219ccf85-1463-4f82-8a2c-abf433806b2b",
+			"6259;6260;0;f;f;f;6259;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6260;6261;0;f;f;f;6260;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6259;6261;2;f;f;t;0;f2562e6b-c8f8-42ff-990d-17692f1f6d30",
+			"6261;6262;0;f;f;f;6261;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6262;6263;0;f;f;f;6262;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6262;6263;2;f;f;t;0;95ed64ae-fab4-44df-9936-b81536db1c40",
+			"6263;6264;0;f;f;f;6263;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6264;6265;0;f;f;f;6264;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6263;6265;2;f;f;t;0;74761662-806e-4607-9120-e7d358902027",
+			"6265;6266;0;f;f;f;6265;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6266;6267;0;f;f;f;6266;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6266;6267;2;f;f;t;0;a4943170-682c-478e-ad86-d57a76e94641",
+			"6267;6268;0;f;f;f;6267;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6268;6269;0;f;f;f;6268;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6268;6269;2;f;f;t;0;d8774772-623d-4467-b44b-efe52120e0b6",
+			"6269;6270;0;f;f;f;6269;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6270;6271;0;f;f;f;6270;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6270;6271;2;f;f;t;0;4b535c4a-825a-4fc2-9423-f756d24b163b",
+			"6271;6272;0;f;f;f;6271;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6272;6273;0;f;f;f;6272;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6272;6273;2;f;f;t;0;719b42f9-cab5-47cf-9387-8146089e3c09",
+			"6273;6274;0;f;f;f;6273;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6274;6275;0;f;f;f;6274;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6274;6275;2;f;f;t;0;f3dffea2-bd5b-4a4d-88ea-a67d3bc9f167",
+			"6275;6276;0;f;f;f;6275;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6276;6277;0;f;f;f;6276;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6275;6277;2;f;f;t;0;9105e0d2-2510-40df-8c60-e46f32df0e3c",
+			"6277;6278;0;f;f;f;6277;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6278;6279;0;f;f;f;6278;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6278;6279;2;f;f;t;0;8df97469-3e8c-4eb7-a7e6-825a6cc4b0a0",
+			"6279;6280;0;f;f;f;6279;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6280;6281;0;f;f;f;6280;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6280;6281;2;f;f;t;0;2a3e6575-6b95-4743-91cd-05a227698fc9",
+			"6281;6282;0;f;f;f;6281;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6282;6283;0;f;f;f;6282;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6282;6283;2;f;f;t;0;947d5736-d5c1-476b-a668-6e35e4c3be0c",
+			"6283;6284;0;f;f;f;6283;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6284;6285;0;f;f;f;6284;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6283;6285;2;f;f;t;0;89013286-4619-41ba-bf98-100d38275b5a",
+			"6285;6286;0;f;f;f;6285;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6286;6287;0;f;f;f;6286;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6286;6287;2;f;f;t;0;19b18e11-f146-4f02-9eee-b36323178ee5",
+			"6287;6288;0;f;f;f;6287;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6288;6289;0;f;f;f;6288;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6288;6289;2;f;f;t;0;50b2b662-8797-4fcf-a936-87a4904384ad",
+			"6289;6290;0;f;f;f;6289;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6290;6291;0;f;f;f;6290;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6290;6291;2;f;f;t;0;a97f8c88-0253-4632-b2f3-dd124262d761",
+			"6291;6292;0;f;f;f;6291;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6292;6293;0;f;f;f;6292;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6292;6293;2;f;f;t;0;f5e4b992-5228-4d0c-88ae-23564f8e0a81",
+			"6293;6294;0;f;f;f;6293;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6294;6295;0;f;f;f;6294;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6294;6295;2;f;f;t;0;cd563c66-af61-45b2-badf-bc215d61ceed",
+			"6295;6296;0;f;f;f;6295;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6296;6297;0;f;f;f;6296;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6296;6297;2;f;f;t;0;612e85e8-0e55-417f-a649-9e946918ecf0",
+			"6297;6298;0;f;f;f;6297;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6298;6299;0;f;f;f;6298;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6298;6299;2;f;f;t;0;38f0ec51-030c-49a0-8671-f4e5ff4aee35",
+			"6299;6300;0;f;f;f;6299;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6300;6301;0;f;f;f;6300;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6300;6301;2;f;f;t;0;d9340ed5-1e97-48e5-b565-a782fbdff7a5",
+			"6301;6302;0;f;f;f;6301;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6302;6303;0;f;f;f;6302;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6302;6303;2;f;f;t;0;ca56b1b1-547a-4c7f-bb7a-d12966cee056",
+			"6303;6304;0;f;f;f;6303;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6304;6305;0;f;f;f;6304;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6304;6305;2;f;f;t;0;6443b7f8-a072-4ffc-946a-a5d853ca1540",
+			"6305;6306;0;f;f;f;6305;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6306;6307;0;f;f;f;6306;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6306;6307;2;f;f;t;0;112ae5f3-afe4-4a93-be1a-2f443c8519a4",
+			"6307;6308;0;f;f;f;6307;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6308;6309;0;f;f;f;6308;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6308;6309;2;f;f;t;0;deed2b82-1e18-4945-b3fb-3522873db012",
+			"6309;6310;0;f;f;f;6309;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6310;6311;0;f;f;f;6310;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6310;6311;2;f;f;t;0;353e57e6-b1be-4bfd-81c9-650e937f8522",
+			"6311;6312;0;f;f;f;6311;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6312;6313;0;f;f;f;6312;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6312;6313;2;f;f;t;0;53decf68-2371-4a3e-aa98-7e10d754f766",
+			"6313;6314;0;f;f;f;6313;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6314;6315;0;f;f;f;6314;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6314;6315;2;f;f;t;0;bb0f9ff1-7ca2-406a-88d9-aaee39f37042",
+			"6315;6316;0;f;f;f;6315;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6316;6317;0;f;f;f;6316;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6317;6318;0;f;f;f;6317;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6316;6318;2;f;f;t;0;61920a40-a2eb-49a4-812c-ddbf01321b07",
+			"6317;6318;2;f;f;t;0;b7959140-68ef-4e3c-9145-d6a28b588090",
+			"6318;6319;0;f;f;f;6318;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6319;6320;0;f;f;f;6319;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6320;6321;0;f;f;f;6320;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6320;6321;2;f;f;t;0;fbbbaa88-40d6-4e5b-9432-1c8dd4f5f257",
+			"6321;6322;0;f;f;f;6321;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6322;6323;0;f;f;f;6322;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6321;6323;2;f;f;t;0;f06e27a2-14d5-48a5-b4e8-dfefdccfe42e",
+			"6323;6324;0;f;f;f;6323;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6324;6325;0;f;f;f;6324;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6324;6325;2;f;f;t;0;cb371d92-1de8-4883-b2ba-1359a48f0835",
+			"6325;6326;0;f;f;f;6325;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6326;6327;0;f;f;f;6326;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6325;6327;2;f;f;t;0;27149e60-b060-4d68-8bfd-1630193c4cee",
+			"6327;6328;0;f;f;f;6327;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6328;6329;0;f;f;f;6328;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6328;6329;2;f;f;t;0;00ccf302-a7f5-4e05-92c6-9523fcf07e7d",
+			"6329;6330;0;f;f;f;6329;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6330;6331;0;f;f;f;6330;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6329;6331;2;f;f;t;0;d393f1d8-a3bc-4e54-befb-f7cb4545f10c",
+			"6331;6332;0;f;f;f;6331;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6332;6333;0;f;f;f;6332;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6332;6333;2;f;f;t;0;27b1bcc1-9823-4089-8e3f-782253eb0730",
+			"6333;6334;0;f;f;f;6333;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6334;6335;0;f;f;f;6334;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6333;6335;2;f;f;t;0;853bef68-765b-44ed-ac68-e6ac65738c5e",
+			"6335;6336;0;f;f;f;6335;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6336;6337;0;f;f;f;6336;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6336;6337;2;f;f;t;0;0da138b5-e797-4cd1-b613-a68024d1abf2",
+			"6337;6338;0;f;f;f;6337;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6338;6339;0;f;f;f;6338;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6337;6339;2;f;f;t;0;bbc1c5ec-b1d1-4e7b-95fb-a16d80a91c1b",
+			"6339;6340;0;f;f;f;6339;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6340;6341;0;f;f;f;6340;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6340;6341;2;f;f;t;0;c639cb8a-203d-4cd3-8fe8-24c6f19c156b",
+			"6341;6342;0;f;f;f;6341;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6342;6343;0;f;f;f;6342;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6341;6343;2;f;f;t;0;7cf7e0ad-52b2-4f6d-be2e-fa80171f8dc8",
+			"6343;6344;0;f;f;f;6343;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6344;6345;0;f;f;f;6344;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6344;6345;2;f;f;t;0;903c169a-63df-4dcb-a047-f8c3214c6415",
+			"6345;6346;0;f;f;f;6345;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6346;6347;0;f;f;f;6346;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6346;6347;2;f;f;t;0;12b5b875-1595-4b03-9144-d9b76e48fa9d",
+			"6347;6348;0;f;f;f;6347;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6348;6349;0;f;f;f;6348;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6348;6349;2;f;f;t;0;3b39497c-ecd4-4d0a-98b7-d86d788d64e6",
+			"6349;6350;0;f;f;f;6349;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6350;6351;0;f;f;f;6350;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6350;6351;2;f;f;t;0;d4785f88-ce8d-4a2d-a471-e423efa03196",
+			"6351;6352;0;f;f;f;6351;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6352;6353;0;f;f;f;6352;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6352;6353;2;f;f;t;0;4663a120-7dc6-4f53-9021-cb4ce3a4e32a",
+			"6353;6354;0;f;f;f;6353;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6354;6355;0;f;f;f;6354;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6354;6355;2;f;f;t;0;b6b5986e-baf2-4510-b0a1-4cd6a4bd64b4",
+			"6355;6356;0;f;f;f;6355;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6356;6357;0;f;f;f;6356;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6356;6357;2;f;f;t;0;67732b11-137d-42fd-9dad-6577753b9dce",
+			"6357;6358;0;f;f;f;6357;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6358;6359;0;f;f;f;6358;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6358;6359;2;f;f;t;0;3db8d5f0-0db2-4d9f-bd40-c3f269414f22",
+			"6359;6360;0;f;f;f;6359;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6360;6361;0;f;f;f;6360;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6360;6361;2;f;f;t;0;b8875b85-39ce-4b0f-ab8c-39e6135ba350",
+			"6361;6362;0;f;f;f;6361;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6362;6363;0;f;f;f;6362;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6362;6363;2;f;f;t;0;846f845a-ad4c-4037-98ff-0cf640db92ad",
+			"6363;6364;0;f;f;f;6363;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6364;6365;0;f;f;f;6364;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6364;6365;2;f;f;t;0;b6d6b2f5-10a5-4bee-9a6a-b435bd055890",
+			"6365;6366;0;f;f;f;6365;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6366;6367;0;f;f;f;6366;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6366;6367;2;f;f;t;0;6442f83c-c1d3-4a92-90ab-59182511f24e",
+			"6367;6368;0;f;f;f;6367;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6368;6369;0;f;f;f;6368;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6367;6369;2;f;f;t;0;32e6a12c-25e3-477b-b8ce-39d7fa12e2d3",
+			"6369;6370;0;f;f;f;6369;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6370;6371;0;f;f;f;6370;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6370;6371;2;f;f;t;0;c6aaf33b-bac2-45f5-8473-efed9114f0c9",
+			"6371;6372;0;f;f;f;6371;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6372;6373;0;f;f;f;6372;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6372;6373;2;f;f;t;0;e787f36f-931f-4c47-a7ed-9561b5da304f",
+			"6373;6374;0;f;f;f;6373;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6374;6375;0;f;f;f;6374;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6374;6375;2;f;f;t;0;5e31e705-b4d3-4d16-bd82-9daad9da4285",
+			"6375;6376;0;f;f;f;6375;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6376;6377;0;f;f;f;6376;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6376;6377;2;f;f;t;0;484f9630-cad4-46c8-8621-983993dc7982",
+			"6377;6378;0;f;f;f;6377;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6378;6379;0;f;f;f;6378;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6378;6379;2;f;f;t;0;129cee46-a8b3-49ed-8ede-7b920d2ec652",
+			"6379;6380;0;f;f;f;6379;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6380;6381;0;f;f;f;6380;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6380;6381;2;f;f;t;0;73d64027-92b7-450a-9050-4a726cbde14f",
+			"6381;6382;0;f;f;f;6381;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6382;6383;0;f;f;f;6382;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6382;6383;2;f;f;t;0;b0883e0e-bb1a-4cad-ad0b-021e1429fed4",
+			"6383;6384;0;f;f;f;6383;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6384;6385;0;f;f;f;6384;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6384;6385;2;f;f;t;0;f9544364-2055-447d-9db8-fad23fdfb67e",
+			"6385;6386;0;f;f;f;6385;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6386;6387;0;f;f;f;6386;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6386;6387;2;f;f;t;0;9edd4e03-2009-495c-af84-bd4e706ed949",
+			"6387;6388;0;f;f;f;6387;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6388;6389;0;f;f;f;6388;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6388;6389;2;f;f;t;0;f020bcc1-b591-4c29-86a5-ec7579012ceb",
+			"6389;6390;0;f;f;f;6389;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6390;6391;0;f;f;f;6390;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6390;6391;2;f;f;t;0;59cbdcaf-b89e-4322-b8ac-1df279ac806f",
+			"6391;6392;0;f;f;f;6391;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6392;6393;0;f;f;f;6392;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6392;6393;2;f;f;t;0;0448e158-bc27-4af0-8228-8a8bfec54d99",
+			"6393;6394;0;f;f;f;6393;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6394;6395;0;f;f;f;6394;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6394;6395;2;f;f;t;0;7250b113-8bb2-401e-9ae5-c991668836b2",
+			"6395;6396;0;f;f;f;6395;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6396;6397;0;f;f;f;6396;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6396;6397;2;f;f;t;0;97b9bea7-f48c-47a3-abc4-2b3a3bf279d3",
+			"6397;6398;0;f;f;f;6397;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6398;6399;0;f;f;f;6398;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6398;6399;2;f;f;t;0;291a9676-598c-4917-b1bc-3fe0d89b5fd4",
+			"6399;6400;0;f;f;f;6399;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6400;6401;0;f;f;f;6400;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6400;6401;2;f;f;t;0;86b62aac-d14f-4f0c-ad25-5e18e83b99b7",
+			"6401;6402;0;f;f;f;6401;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6402;6403;0;f;f;f;6402;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6402;6403;2;f;f;t;0;4e9db70e-7e33-41ef-9e12-8d4413e6ed6e",
+			"6403;6404;0;f;f;f;6403;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6404;6405;0;f;f;f;6404;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6404;6405;2;f;f;t;0;c25af85e-92a8-4e9c-a52a-11abfb2906a2",
+			"6405;6406;0;f;f;f;6405;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6406;6407;0;f;f;f;6406;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6406;6407;2;f;f;t;0;9c340c84-dbb8-4f60-877e-c8800893e3f1",
+			"6407;6408;0;f;f;f;6407;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6408;6409;0;f;f;f;6408;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6408;6409;2;f;f;t;0;528c8ef8-5667-4f79-b212-1152fd0ec8d1",
+			"6409;6410;0;f;f;f;6409;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6410;6411;0;f;f;f;6410;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6410;6411;2;f;f;t;0;bfd163e7-e649-4a7d-9862-d34060a8a5b5",
+			"6411;6412;0;f;f;f;6411;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6412;6413;0;f;f;f;6412;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6412;6413;2;f;f;t;0;9852d1c5-316a-4a54-8c03-2b3e1a283929",
+			"6413;6414;0;f;f;f;6413;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6414;6415;0;f;f;f;6414;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6414;6415;2;f;f;t;0;599f062e-2907-4a38-a7e4-7534130629ab",
+			"6415;6416;0;f;f;f;6415;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6416;6417;0;f;f;f;6416;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6416;6417;2;f;f;t;0;eb6c46e1-eda8-4a76-8789-10a0f579017f",
+			"6417;6418;0;f;f;f;6417;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6418;6419;0;f;f;f;6418;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6418;6419;2;f;f;t;0;9cae1043-0095-443e-a64f-50bee9d4bf9b",
+			"6419;6420;0;f;f;f;6419;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6420;6421;0;f;f;f;6420;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6420;6421;2;f;f;t;0;144b8e01-47a3-420a-95af-576089b18d9d",
+			"6421;6422;0;f;f;f;6421;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6422;6423;0;f;f;f;6422;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6422;6423;2;f;f;t;0;9e344e6b-050a-4a0d-ad19-8554e4e1f741",
+			"6423;6424;0;f;f;f;6423;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6424;6425;0;f;f;f;6424;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6424;6425;2;f;f;t;0;c7344b7b-e341-476c-980d-d21c2ded6e17",
+			"6425;6426;0;f;f;f;6425;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6426;6427;0;f;f;f;6426;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6426;6427;2;f;f;t;0;674ff554-c9e5-4f62-a7d9-a592deab6773",
+			"6427;6428;0;f;f;f;6427;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6428;6429;0;f;f;f;6428;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6428;6429;2;f;f;t;0;97499ffb-3256-4ee1-9a44-dde310e3ff0c",
+			"6429;6430;0;f;f;f;6429;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6430;6431;0;f;f;f;6430;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6430;6431;2;f;f;t;0;e30f4eef-f47c-447e-8617-c3abef24b400",
+			"6431;6432;0;f;f;f;6431;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6432;6433;0;f;f;f;6432;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6432;6433;2;f;f;t;0;692e0252-7aa0-4594-9dff-f294df2d46f2",
+			"6433;6434;0;f;f;f;6433;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6434;6435;0;f;f;f;6434;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6434;6435;2;f;f;t;0;75d6bd33-34b4-438e-a2ba-48a12a8ee64c",
+			"6435;6436;0;f;f;f;6435;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6436;6437;0;f;f;f;6436;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6436;6437;2;f;f;t;0;4cdb2e3c-d16a-46ac-92d0-c10552263909",
+			"6437;6438;0;f;f;f;6437;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6438;6439;0;f;f;f;6438;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6437;6439;2;f;f;t;0;c438632a-e04a-444a-a0b7-e53d36bc87c6",
+			"6439;6440;0;f;f;f;6439;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6440;6441;0;f;f;f;6440;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6440;6441;2;f;f;t;0;a53910ef-7963-4bf0-8680-e1761009cb03",
+			"6441;6442;0;f;f;f;6441;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6442;6443;0;f;f;f;6442;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6442;6443;2;f;f;t;0;eef44cd0-faa4-47df-b3f9-4dd2e6b2e9fc",
+			"6443;6444;0;f;f;f;6443;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6444;6445;0;f;f;f;6444;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6444;6445;2;f;f;t;0;bd4ae324-d674-437f-94a7-6aba9002036c",
+			"6445;6446;0;f;f;f;6445;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6446;6447;0;f;f;f;6446;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6446;6447;2;f;f;t;0;d38f4605-f434-4804-b38f-9ae49d7780aa",
+			"6447;6448;0;f;f;f;6447;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6448;6449;0;f;f;f;6448;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6448;6449;2;f;f;t;0;1e46ac0c-bbd2-4525-a603-47c8e5788aa2",
+			"6449;6450;0;f;f;f;6449;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6450;6451;0;f;f;f;6450;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6450;6451;2;f;f;t;0;4017754b-c98d-4441-9e50-fa18684a5584",
+			"6451;6452;0;f;f;f;6451;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6452;6453;0;f;f;f;6452;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6452;6453;2;f;f;t;0;537928f1-2cc5-48c7-8c00-3fe1f91a5014",
+			"6453;6454;0;f;f;f;6453;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6454;6455;0;f;f;f;6454;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6454;6455;2;f;f;t;0;e7411a52-cf10-4175-8afb-623a5f4f243a",
+			"6455;6456;0;f;f;f;6455;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6456;6457;0;f;f;f;6456;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6456;6457;2;f;f;t;0;369edbf8-6ef5-46df-a553-f62bf76875f7",
+			"6457;6458;0;f;f;f;6457;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6458;6459;0;f;f;f;6458;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6458;6459;2;f;f;t;0;d5a5f2f0-9bfd-43ba-b9e4-d4e2ea7d7986",
+			"6459;6460;0;f;f;f;6459;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6460;6461;0;f;f;f;6460;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6460;6461;2;f;f;t;0;042434ae-e5ce-46a6-850c-86cbf348b24f",
+			"6461;6462;0;f;f;f;6461;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6462;6463;0;f;f;f;6462;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6462;6463;2;f;f;t;0;1bc33f29-ed84-49d4-9f07-fea187a5e7bc",
+			"6463;6464;0;f;f;f;6463;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6464;6465;0;f;f;f;6464;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6464;6465;2;f;f;t;0;3284c7f0-5e26-4075-bd3e-8c18b714ea7e",
+			"6465;6466;0;f;f;f;6465;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6466;6467;0;f;f;f;6466;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6466;6467;2;f;f;t;0;f3cc45d1-9766-4175-827a-54b3586be45b",
+			"6467;6468;0;f;f;f;6467;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6468;6469;0;f;f;f;6468;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6468;6469;2;f;f;t;0;6938fd1f-1e44-4952-aec4-be32bc221e28",
+			"6469;6470;0;f;f;f;6469;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6470;6471;0;f;f;f;6470;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6470;6471;2;f;f;t;0;b5f8e9cb-1b07-456d-8be9-f1307454617d",
+			"6471;6472;0;f;f;f;6471;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6472;6473;0;f;f;f;6472;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6472;6473;2;f;f;t;0;21e57bfe-76ed-4289-870a-7837fc99a7af",
+			"6473;6474;0;f;f;f;6473;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6474;6475;0;f;f;f;6474;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6474;6475;2;f;f;t;0;7d12fad3-46f4-4055-b1e8-dfef0ac29b5e",
+			"6475;6476;0;f;f;f;6475;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6476;6477;0;f;f;f;6476;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6476;6477;2;f;f;t;0;0de7569b-c41d-4f98-b576-a0d795d8f6d8",
+			"6477;6478;0;f;f;f;6477;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6478;6479;0;f;f;f;6478;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6478;6479;2;f;f;t;0;82e6b95f-8634-420d-abc3-181ac5c0bae0",
+			"6479;6480;0;f;f;f;6479;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6480;6481;0;f;f;f;6480;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6480;6481;2;f;f;t;0;642589e5-3d22-400b-8c3c-86c5b9554e34",
+			"6481;6482;0;f;f;f;6481;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6482;6483;0;f;f;f;6482;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6482;6483;2;f;f;t;0;f7b77ee3-fde8-4fb7-9f4f-df31969f428d",
+			"6483;6484;0;f;f;f;6483;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6484;6485;0;f;f;f;6484;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6484;6485;2;f;f;t;0;e18c7f3f-420d-4221-b732-868ef068379b",
+			"6485;6486;0;f;f;f;6485;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6486;6487;0;f;f;f;6486;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6486;6487;2;f;f;t;0;5557cf45-1135-4eb9-a275-65f91fcbdfff",
+			"6487;6488;0;f;f;f;6487;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6488;6489;0;f;f;f;6488;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6488;6489;2;f;f;t;0;3a10eaae-8541-440d-8e5d-86f58e8de9e6",
+			"6489;6490;0;f;f;f;6489;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6490;6491;0;f;f;f;6490;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6490;6491;2;f;f;t;0;8581d4d0-0298-455a-9ca1-5ddc1f887760",
+			"6491;6492;0;f;f;f;6491;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6492;6493;0;f;f;f;6492;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6492;6493;2;f;f;t;0;2c8633da-dafb-47e0-9fa0-ffa3e9114fa7",
+			"6493;6494;0;f;f;f;6493;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6494;6495;0;f;f;f;6494;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6494;6495;2;f;f;t;0;e9acf48d-21c8-45ff-b00c-376233f2847d",
+			"6495;6496;0;f;f;f;6495;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6496;6497;0;f;f;f;6496;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6496;6497;2;f;f;t;0;9778cbfa-fe3e-4d6b-8688-4d836e851582",
+			"6497;6498;0;f;f;f;6497;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6498;6499;0;f;f;f;6498;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6498;6499;2;f;f;t;0;967b8db0-e922-4303-9e51-63c1a9c5dcc7",
+			"6499;6500;0;f;f;f;6499;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6500;6501;0;f;f;f;6500;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6500;6501;2;f;f;t;0;211595ea-9e6c-4b39-9867-0b7a0c9faf23",
+			"6501;6502;0;f;f;f;6501;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6502;6503;0;f;f;f;6502;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6502;6503;2;f;f;t;0;6d090115-2346-470a-98db-088614b045f1",
+			"6503;6504;0;f;f;f;6503;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6504;6505;0;f;f;f;6504;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6504;6505;2;f;f;t;0;dab15981-015e-4950-b22d-393196f10a77",
+			"6505;6506;0;f;f;f;6505;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6506;6507;0;f;f;f;6506;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6506;6507;2;f;f;t;0;e26adaf7-2a0f-493c-ac24-9fa9aecaaefd",
+			"6507;6508;0;f;f;f;6507;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6508;6509;0;f;f;f;6508;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6508;6509;2;f;f;t;0;cbe83e46-5b96-46cd-9455-af2f715d19dd",
+			"6509;6510;0;f;f;f;6509;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6510;6511;0;f;f;f;6510;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6510;6511;2;f;f;t;0;8070b7d3-904f-466d-b783-1e4c8275a0d1",
+			"6511;6512;0;f;f;f;6511;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6512;6513;0;f;f;f;6512;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6512;6513;2;f;f;t;0;03e05644-db66-48ff-911b-3ebe6c7710be",
+			"6513;6514;0;f;f;f;6513;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6514;6515;0;f;f;f;6514;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6514;6515;2;f;f;t;0;28b492a1-5c5c-408e-b635-4e8458043abc",
+			"6515;6516;0;f;f;f;6515;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6516;6517;0;f;f;f;6516;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6516;6517;2;f;f;t;0;6dbd9935-fa03-4723-bd20-4d5884e1d78b",
+			"6517;6518;0;f;f;f;6517;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6518;6519;0;f;f;f;6518;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6518;6519;2;f;f;t;0;fc275c90-b1ee-4e69-9b61-854e5ba19a1f",
+			"6519;6520;0;f;f;f;6519;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6520;6521;0;f;f;f;6520;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6520;6521;2;f;f;t;0;efeb8dbc-8791-419d-893f-937baf413398",
+			"6521;6522;0;f;f;f;6521;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6522;6523;0;f;f;f;6522;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6522;6523;2;f;f;t;0;78981689-9428-435f-b3bd-0abe2a07938c",
+			"6523;6524;0;f;f;f;6523;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6524;6525;0;f;f;f;6524;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6524;6525;2;f;f;t;0;9fbe0c90-896f-4bfa-af73-1b1073dfe70d",
+			"6525;6526;0;f;f;f;6525;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6526;6527;0;f;f;f;6526;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6526;6527;2;f;f;t;0;3fc90e7e-3db9-46ae-bd52-c32af9e43dea",
+			"6527;6528;0;f;f;f;6527;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6528;6529;0;f;f;f;6528;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6527;6529;2;f;f;t;0;bf9d8598-c43b-408e-bd36-1423b29205dd",
+			"6529;6530;0;f;f;f;6529;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6530;6531;0;f;f;f;6530;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6530;6531;2;f;f;t;0;d647f262-675c-458a-ac1a-803be92bac73",
+			"6531;6532;0;f;f;f;6531;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6532;6533;0;f;f;f;6532;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6532;6533;2;f;f;t;0;9926b718-02d4-4dcd-b740-0644f7cc95a5",
+			"6533;6534;0;f;f;f;6533;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6534;6535;0;f;f;f;6534;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6535;6536;0;f;f;f;6535;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6534;6536;2;f;f;t;0;d7409830-2c19-4b32-93ff-a92d14c0569e",
+			"6535;6536;2;f;f;t;0;19f91baa-f557-4af7-b318-2c8e1f7c2784",
+			"6536;6537;0;f;f;f;6536;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6537;6538;0;f;f;f;6537;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6538;6539;0;f;f;f;6538;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6539;6540;0;f;f;f;6539;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6538;6540;2;f;f;t;0;3c9e3f34-5623-482e-a446-0f4db717fdf1",
+			"6539;6540;2;f;f;t;0;04fd898b-1bda-4bad-8507-91112bc02edf",
+			"6540;6541;0;f;f;f;6540;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6541;6542;0;f;f;f;6541;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6542;6543;0;f;f;f;6542;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6542;6543;2;f;f;t;0;ebef9368-1a29-4152-8e4c-5ada392176a5",
+			"6543;6544;0;f;f;f;6543;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6544;6545;0;f;f;f;6544;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6543;6545;2;f;f;t;0;7604392a-e694-4105-a55b-4866ced7215d",
+			"6545;6546;0;f;f;f;6545;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6546;6547;0;f;f;f;6546;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6546;6547;2;f;f;t;0;9b4f1cb3-c02f-4c49-94b8-57807a7efade",
+			"6547;6548;0;f;f;f;6547;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6548;6549;0;f;f;f;6548;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6547;6549;2;f;f;t;0;d04c597b-7ea3-404a-acc0-7bb95ef7d2e3",
+			"6549;6550;0;f;f;f;6549;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6550;6551;0;f;f;f;6550;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6550;6551;2;f;f;t;0;3d07dc0d-7641-43e1-b683-2178a1c54e2c",
+			"6551;6552;0;f;f;f;6551;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6552;6553;0;f;f;f;6552;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6551;6553;2;f;f;t;0;80f1f770-7685-4059-bd75-5f297713eb23",
+			"6553;6554;0;f;f;f;6553;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6554;6555;0;f;f;f;6554;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6554;6555;2;f;f;t;0;1b45db35-ca60-4e3d-b596-c2bbd323ed6b",
+			"6555;6556;0;f;f;f;6555;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6556;6557;0;f;f;f;6556;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6556;6557;2;f;f;t;0;a18927d6-3848-4354-bfff-ab34f6841e24",
+			"6557;6558;0;f;f;f;6557;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6558;6559;0;f;f;f;6558;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6558;6559;2;f;f;t;0;a0a7062c-a68d-490c-8dd4-82d1992fbde2",
+			"6559;6560;0;f;f;f;6559;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6560;6561;0;f;f;f;6560;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6560;6561;2;f;f;t;0;4df57e6b-a388-4a2a-bd76-f011cb31acf3",
+			"6561;6562;0;f;f;f;6561;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6562;6563;0;f;f;f;6562;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6562;6563;2;f;f;t;0;abf5d5e0-5862-49d1-9066-e369f2eb1174",
+			"6563;6564;0;f;f;f;6563;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6564;6565;0;f;f;f;6564;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6564;6565;2;f;f;t;0;abe42649-15b8-4d02-b43b-d2afcb854a2c",
+			"6565;6566;0;f;f;f;6565;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6566;6567;0;f;f;f;6566;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6566;6567;2;f;f;t;0;b3cc1723-667b-4791-8308-a1e9b9fa29ff",
+			"6567;6568;0;f;f;f;6567;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6568;6569;0;f;f;f;6568;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6568;6569;2;f;f;t;0;037fe21f-5570-4b92-b591-8f15152c16cc",
+			"6569;6570;0;f;f;f;6569;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6570;6571;0;f;f;f;6570;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6570;6571;2;f;f;t;0;8c7bbbfc-3c7f-4720-884a-b7c963ee7f13",
+			"6571;6572;0;f;f;f;6571;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6572;6573;0;f;f;f;6572;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6572;6573;2;f;f;t;0;672824cd-d677-4ab0-9e9d-aba134b16adc",
+			"6573;6574;0;f;f;f;6573;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6574;6575;0;f;f;f;6574;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6574;6575;2;f;f;t;0;2fdaee78-24d1-44f7-80a7-3410706b8bef",
+			"6575;6576;0;f;f;f;6575;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6576;6577;0;f;f;f;6576;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6576;6577;2;f;f;t;0;bebd6356-dea2-42ff-9928-b6bd5c1fd34d",
+			"6577;6578;0;f;f;f;6577;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6578;6579;0;f;f;f;6578;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6578;6579;2;f;f;t;0;f2cb6687-a468-4fe5-8a98-5c79ca528cfe",
+			"6579;6580;0;f;f;f;6579;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6580;6581;0;f;f;f;6580;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6580;6581;2;f;f;t;0;41661b9b-5759-488a-81ac-48dc1f804dbe",
+			"6581;6582;0;f;f;f;6581;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6582;6583;0;f;f;f;6582;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6582;6583;2;f;f;t;0;f9a4fe2f-bd0e-444c-9d96-898233d3a28f",
+			"6583;6584;0;f;f;f;6583;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6584;6585;0;f;f;f;6584;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6584;6585;2;f;f;t;0;1fcd221f-7d40-400e-a035-9a6658db6108",
+			"6585;6586;0;f;f;f;6585;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6586;6587;0;f;f;f;6586;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6586;6587;2;f;f;t;0;58218167-50ae-4209-a1fe-d5b3626e5108",
+			"6587;6588;0;f;f;f;6587;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6588;6589;0;f;f;f;6588;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6588;6589;2;f;f;t;0;bc3d1d07-d829-4de0-8b1a-5601e47ad8f8",
+			"6589;6590;0;f;f;f;6589;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6590;6591;0;f;f;f;6590;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6590;6591;2;f;f;t;0;a5dd5492-a27a-4f50-b249-418d521885fe",
+			"6591;6592;0;f;f;f;6591;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6592;6593;0;f;f;f;6592;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6592;6593;2;f;f;t;0;cf1bae2c-5209-4214-80d0-75a865e1b2db",
+			"6593;6594;0;f;f;f;6593;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6594;6595;0;f;f;f;6594;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6594;6595;2;f;f;t;0;14866f9f-1b39-439d-93aa-8a5984332d63",
+			"6595;6596;0;f;f;f;6595;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6596;6597;0;f;f;f;6596;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6596;6597;2;f;f;t;0;d4228fc2-fbc8-426a-a6b9-81f9f4f33c5c",
+			"6597;6598;0;f;f;f;6597;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6598;6599;0;f;f;f;6598;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6598;6599;2;f;f;t;0;48c7125f-e4fe-44ac-9480-319f1e9b017f",
+			"6599;6600;0;f;f;f;6599;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6600;6601;0;f;f;f;6600;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6600;6601;2;f;f;t;0;455e0672-27b9-4b22-b5f3-ab2a09977dba",
+			"6601;6602;0;f;f;f;6601;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6602;6603;0;f;f;f;6602;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6602;6603;2;f;f;t;0;1ba28834-5106-4702-8fc5-3b91eb76d9c6",
+			"6603;6604;0;f;f;f;6603;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6604;6605;0;f;f;f;6604;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6604;6605;2;f;f;t;0;74948bab-b17f-447f-917f-5ea2ecca8b3c",
+			"6605;6606;0;f;f;f;6605;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6606;6607;0;f;f;f;6606;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6606;6607;2;f;f;t;0;d0430601-1f11-41f5-8f7c-9e7a0126aac1",
+			"6607;6608;0;f;f;f;6607;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6608;6609;0;f;f;f;6608;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6608;6609;2;f;f;t;0;f98b9f1a-acb1-487c-93d8-0dfb52c6a1b5",
+			"6609;6610;0;f;f;f;6609;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6610;6611;0;f;f;f;6610;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6610;6611;2;f;f;t;0;d707341f-dfa0-454f-9214-6314262aea77",
+			"6611;6612;0;f;f;f;6611;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6612;6613;0;f;f;f;6612;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6612;6613;2;f;f;t;0;e4e16e14-1798-4387-a7b8-4a176d0ee860",
+			"6613;6614;0;f;f;f;6613;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6614;6615;0;f;f;f;6614;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6614;6615;2;f;f;t;0;9b2200d1-4c95-4f7d-94ec-3ef9ca2cb684",
+			"6615;6616;0;f;f;f;6615;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6616;6617;0;f;f;f;6616;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6616;6617;2;f;f;t;0;9f0cf26d-bc6b-46a3-b90b-f08c30e49e71",
+			"6617;6618;0;f;f;f;6617;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6618;6619;0;f;f;f;6618;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6619;6620;0;f;f;f;6619;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6618;6620;2;f;f;t;0;8b5a6acb-c939-4f9f-baf0-c041264bcd40",
+			"6619;6620;2;f;f;t;0;1991acf8-9356-431d-887a-1b1624ede377",
+			"6620;6621;0;f;f;f;6620;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6621;6622;0;f;f;f;6621;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6622;6623;0;f;f;f;6622;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6623;6624;0;f;f;f;6623;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6622;6624;2;f;f;t;0;f386f469-903b-4c46-ad0a-74b5aff69a45",
+			"6623;6624;2;f;f;t;0;9392941d-06a1-4c16-ba39-7a5d5fd6d1bc",
+			"6624;6625;0;f;f;f;6624;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6625;6626;0;f;f;f;6625;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6626;6627;0;f;f;f;6626;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6626;6627;2;f;f;t;0;199a1e96-889d-42cb-a408-4407ed8502ad",
+			"6627;6628;0;f;f;f;6627;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6628;6629;0;f;f;f;6628;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6627;6629;2;f;f;t;0;8d0848d9-07ea-42c2-a17c-1debb3cbc808",
+			"6629;6630;0;f;f;f;6629;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6630;6631;0;f;f;f;6630;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6631;6632;0;f;f;f;6631;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6630;6632;2;f;f;t;0;3c171bd1-4ed5-485e-9d16-53320df15295",
+			"6631;6632;2;f;f;t;0;0c0fd599-0da1-453f-b8df-d5fe00e9b387",
+			"6632;6633;0;f;f;f;6632;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6633;6634;0;f;f;f;6633;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6634;6635;0;f;f;f;6634;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6634;6635;2;f;f;t;0;63ef00c3-64ce-4a8d-9fa0-a2ef1f588303",
+			"6635;6636;0;f;f;f;6635;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6636;6637;0;f;f;f;6636;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6636;6637;2;f;f;t;0;f48cfdac-79a8-4f12-bf57-2863ff4e59ad",
+			"6637;6638;0;f;f;f;6637;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6638;6639;0;f;f;f;6638;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6638;6639;2;f;f;t;0;b975d573-a3e3-47ff-8361-bf13b8747ee0",
+			"6639;6640;0;f;f;f;6639;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6640;6641;0;f;f;f;6640;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6640;6641;2;f;f;t;0;c81210f0-4e94-4eb2-82cf-640ee1256ec7",
+			"6641;6642;0;f;f;f;6641;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6642;6643;0;f;f;f;6642;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6642;6643;2;f;f;t;0;2b3d6d56-6e1d-443b-ac85-9046d0fa02b9",
+			"6643;6644;0;f;f;f;6643;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6644;6645;0;f;f;f;6644;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6644;6645;2;f;f;t;0;172bb3e6-5417-4b69-8d47-d845cbcd08ca",
+			"6645;6646;0;f;f;f;6645;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6646;6647;0;f;f;f;6646;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6646;6647;2;f;f;t;0;093e16bc-e177-4e99-86a3-c1ce93a0b7a6",
+			"6647;6648;0;f;f;f;6647;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6648;6649;0;f;f;f;6648;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6648;6649;2;f;f;t;0;e8f44601-fdb9-4dcd-a1dd-0c407134ed4e",
+			"6649;6650;0;f;f;f;6649;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6650;6651;0;f;f;f;6650;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6650;6651;2;f;f;t;0;e09e20fb-07a6-4582-8ec3-bf4aec1753bf",
+			"6651;6652;0;f;f;f;6651;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6652;6653;0;f;f;f;6652;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6652;6653;2;f;f;t;0;01205e41-a9fb-4958-8799-c88fef50e469",
+			"6653;6654;0;f;f;f;6653;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6654;6655;0;f;f;f;6654;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6654;6655;2;f;f;t;0;ee794637-537b-409c-87bf-d97272bb2e3c",
+			"6655;6656;0;f;f;f;6655;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6656;6657;0;f;f;f;6656;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6656;6657;2;f;f;t;0;436ba70d-1a73-492e-ab8b-d11e7c519e0f",
+			"6657;6658;0;f;f;f;6657;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6658;6659;0;f;f;f;6658;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6658;6659;2;f;f;t;0;376a8faf-057a-45ab-8544-ac3bd67df467",
+			"6659;6660;0;f;f;f;6659;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6660;6661;0;f;f;f;6660;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6660;6661;2;f;f;t;0;33eabae1-d51c-425e-9554-1fde07a4f303",
+			"6661;6662;0;f;f;f;6661;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6662;6663;0;f;f;f;6662;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6662;6663;2;f;f;t;0;3f2b77e7-1371-45e0-905e-ee2b52bbb6f9",
+			"6663;6664;0;f;f;f;6663;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6664;6665;0;f;f;f;6664;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6664;6665;2;f;f;t;0;68755ada-eb20-40cb-8594-cf3c56234836",
+			"6665;6666;0;f;f;f;6665;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6666;6667;0;f;f;f;6666;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6666;6667;2;f;f;t;0;38f8b480-8f51-42d3-a6f6-8a9c65fbaf51",
+			"6667;6668;0;f;f;f;6667;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6668;6669;0;f;f;f;6668;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6668;6669;2;f;f;t;0;36ecc347-ff66-4c1a-ab0a-94fa0424f03b",
+			"6669;6670;0;f;f;f;6669;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6670;6671;0;f;f;f;6670;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6670;6671;2;f;f;t;0;227ee249-aa2b-4791-9520-a7a0cef1d928",
+			"6671;6672;0;f;f;f;6671;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6672;6673;0;f;f;f;6672;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6672;6673;2;f;f;t;0;7f96e5b7-a5b3-43f9-bfba-971a3f8e8b48",
+			"6673;6674;0;f;f;f;6673;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6674;6675;0;f;f;f;6674;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6675;6676;0;f;f;f;6675;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6674;6676;2;f;f;t;0;63c0c406-a6c7-4e16-8d30-a677e1e9ff8d",
+			"6675;6676;2;f;f;t;0;6fe6611e-c1ec-44c6-a20a-edd972796992",
+			"6676;6677;0;f;f;f;6676;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6677;6678;0;f;f;f;6677;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6678;6679;0;f;f;f;6678;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6678;6679;2;f;f;t;0;29106bc9-282b-4777-8799-50f00c9acc13",
+			"6679;6680;0;f;f;f;6679;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6680;6681;0;f;f;f;6680;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6680;6681;2;f;f;t;0;9d5cc85e-cde3-44e6-a28c-b2c663ee2b87",
+			"6681;6682;0;f;f;f;6681;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6682;6683;0;f;f;f;6682;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6682;6683;2;f;f;t;0;598ed07a-c8b2-42c8-be8a-cd28a7c5870f",
+			"6683;6684;0;f;f;f;6683;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6684;6685;0;f;f;f;6684;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6684;6685;2;f;f;t;0;dbe7d339-2698-493b-921f-2b0af98fd8ac",
+			"6685;6686;0;f;f;f;6685;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6686;6687;0;f;f;f;6686;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6686;6687;2;f;f;t;0;6d80194b-e9da-4032-a3f4-f7a3d2eacee4",
+			"6687;6688;0;f;f;f;6687;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6688;6689;0;f;f;f;6688;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6688;6689;2;f;f;t;0;d653ca36-6db9-45c3-a8c3-eea1a68dc020",
+			"6689;6690;0;f;f;f;6689;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6690;6691;0;f;f;f;6690;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6689;6691;2;f;f;t;0;ef43148f-e25b-43f7-aeed-5d2bc8862810",
+			"6691;6692;0;f;f;f;6691;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6692;6693;0;f;f;f;6692;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6692;6693;2;f;f;t;0;ca56fea1-310e-45ea-a998-46875e557f35",
+			"6693;6694;0;f;f;f;6693;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6694;6695;0;f;f;f;6694;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6693;6695;2;f;f;t;0;aa186297-f4d2-4134-8c79-f964781baa0b",
+			"6695;6696;0;f;f;f;6695;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6696;6697;0;f;f;f;6696;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6696;6697;2;f;f;t;0;6663d942-a13c-475a-b945-df2139b4d03d",
+			"6697;6698;0;f;f;f;6697;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6698;6699;0;f;f;f;6698;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6698;6699;2;f;f;t;0;61c3459f-b163-49bf-ad20-7c14e981af73",
+			"6699;6700;0;f;f;f;6699;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6700;6701;0;f;f;f;6700;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6700;6701;2;f;f;t;0;fc7d2c0c-dcd7-41a1-9e9a-b45a3ca183d8",
+			"6701;6702;0;f;f;f;6701;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6702;6703;0;f;f;f;6702;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6702;6703;2;f;f;t;0;5cf20f36-3e13-4994-8364-aeb90026f076",
+			"6703;6704;0;f;f;f;6703;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6704;6705;0;f;f;f;6704;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6704;6705;2;f;f;t;0;b3c3530e-4bb7-440a-9656-26a2434a9c3c",
+			"6705;6706;0;f;f;f;6705;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6706;6707;0;f;f;f;6706;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6706;6707;2;f;f;t;0;a81900c9-3651-4e59-8c74-3958e802b915",
+			"6707;6708;0;f;f;f;6707;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6708;6709;0;f;f;f;6708;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6708;6709;2;f;f;t;0;de28633d-f154-4ece-a85b-fd78ef74a19b",
+			"6709;6710;0;f;f;f;6709;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6710;6711;0;f;f;f;6710;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6710;6711;2;f;f;t;0;7a0ae8ae-8199-4291-bb0f-7f45242eb0e7",
+			"6711;6712;0;f;f;f;6711;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6712;6713;0;f;f;f;6712;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6712;6713;2;f;f;t;0;4444b1bc-84f0-4c88-81a3-c15395c5d6f1",
+			"6713;6714;0;f;f;f;6713;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6714;6715;0;f;f;f;6714;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6714;6715;2;f;f;t;0;b208b2e7-30ec-49a9-bf78-9b2a71e7fbc3",
+			"6715;6716;0;f;f;f;6715;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6716;6717;0;f;f;f;6716;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6716;6717;2;f;f;t;0;f8432d6a-cf8f-41d6-839b-e9e12d631c68",
+			"6717;6718;0;f;f;f;6717;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6718;6719;0;f;f;f;6718;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6718;6719;2;f;f;t;0;cda28356-7f47-4ab9-8247-a56892ccc38f",
+			"6719;6720;0;f;f;f;6719;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6720;6721;0;f;f;f;6720;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6720;6721;2;f;f;t;0;226e06ab-11a9-4e90-af7b-a4ae40799d66",
+			"6721;6722;0;f;f;f;6721;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6722;6723;0;f;f;f;6722;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6722;6723;2;f;f;t;0;1b1142a4-a819-4c88-96c5-9d2ecccee915",
+			"6723;6724;0;f;f;f;6723;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6724;6725;0;f;f;f;6724;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6724;6725;2;f;f;t;0;0e6e6189-d002-42ad-b89d-6c805b68cf52",
+			"6725;6726;0;f;f;f;6725;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6726;6727;0;f;f;f;6726;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6726;6727;2;f;f;t;0;2b950f8d-3d2d-4c46-890c-5850b3295c07",
+			"6727;6728;0;f;f;f;6727;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6728;6729;0;f;f;f;6728;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6728;6729;2;f;f;t;0;427f7a69-c0af-4397-96a1-5cae94109def",
+			"6729;6730;0;f;f;f;6729;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6730;6731;0;f;f;f;6730;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6730;6731;2;f;f;t;0;d68da443-0234-4177-8c6f-e2a5c00f6062",
+			"6731;6732;0;f;f;f;6731;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6732;6733;0;f;f;f;6732;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6732;6733;2;f;f;t;0;cd53525a-4d0e-41d5-afbf-a70165030e62",
+			"6733;6734;0;f;f;f;6733;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6734;6735;0;f;f;f;6734;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6735;6736;0;f;f;f;6735;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6734;6736;2;f;f;t;0;1e4323fc-d558-4698-9216-f2a896b5c97f",
+			"6735;6736;2;f;f;t;0;c99a2e58-2522-4729-82f4-8c306870fcc1",
+			"6736;6737;0;f;f;f;6736;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6737;6738;0;f;f;f;6737;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6738;6739;0;f;f;f;6738;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6738;6739;2;f;f;t;0;6c5b3746-a5f6-4f0d-a62c-93f8c2831aef",
+			"6739;6740;0;f;f;f;6739;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6740;6741;0;f;f;f;6740;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6739;6741;2;f;f;t;0;584b25a6-61df-4139-a011-ec512c8594ef",
+			"6741;6742;0;f;f;f;6741;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6742;6743;0;f;f;f;6742;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6742;6743;2;f;f;t;0;cac79ede-671f-4296-a336-e34e214aea24",
+			"6743;6744;0;f;f;f;6743;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6744;6745;0;f;f;f;6744;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6744;6745;2;f;f;t;0;a7c45ebd-6bd8-49c5-83f8-d476378555f8",
+			"6745;6746;0;f;f;f;6745;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6746;6747;0;f;f;f;6746;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6746;6747;2;f;f;t;0;3c515d35-2303-4b3d-9cb5-0781fe0cd4c1",
+			"6747;6748;0;f;f;f;6747;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6748;6749;0;f;f;f;6748;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6747;6749;2;f;f;t;0;8f86a105-fe30-485f-a22d-d69838acd43e",
+			"6749;6750;0;f;f;f;6749;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6750;6751;0;f;f;f;6750;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6750;6751;2;f;f;t;0;2db392fb-86c2-4d55-b59d-4940a86abd05",
+			"6751;6752;0;f;f;f;6751;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6752;6753;0;f;f;f;6752;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6751;6753;2;f;f;t;0;1402e6eb-0f6d-4e3b-b6ca-99214a37ee22",
+			"6753;6754;0;f;f;f;6753;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6754;6755;0;f;f;f;6754;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6754;6755;2;f;f;t;0;d2bea55e-bca8-4245-a3c9-ad36cafde0a1",
+			"6755;6756;0;f;f;f;6755;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6756;6757;0;f;f;f;6756;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6755;6757;2;f;f;t;0;963b3a7c-ea04-4dde-b560-8c6aba5f805c",
+			"6757;6758;0;f;f;f;6757;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6758;6759;0;f;f;f;6758;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6758;6759;2;f;f;t;0;828b438e-9cb2-42d6-bffb-ec1ce2582d8d",
+			"6759;6760;0;f;f;f;6759;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6760;6761;0;f;f;f;6760;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6760;6761;2;f;f;t;0;c705bf5b-8b49-4736-9f50-92deb57f97dc",
+			"6761;6762;0;f;f;f;6761;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6762;6763;0;f;f;f;6762;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6762;6763;2;f;f;t;0;ffea800d-92a0-4e74-a87f-ae57d749cb0d",
+			"6763;6764;0;f;f;f;6763;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6764;6765;0;f;f;f;6764;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6764;6765;2;f;f;t;0;1819204b-6385-4bc7-9b30-d9f5b6acf6b2",
+			"6765;6766;0;f;f;f;6765;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6766;6767;0;f;f;f;6766;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6766;6767;2;f;f;t;0;02c76047-da13-4198-bfba-fa26895e5d75",
+			"6767;6768;0;f;f;f;6767;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6768;6769;0;f;f;f;6768;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6768;6769;2;f;f;t;0;a95f7aa5-9d20-49ec-869f-39eecb55122d",
+			"6769;6770;0;f;f;f;6769;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6770;6771;0;f;f;f;6770;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6770;6771;2;f;f;t;0;3f635dec-c5cf-4053-aa6e-a3708e5f0aed",
+			"6771;6772;0;f;f;f;6771;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6772;6773;0;f;f;f;6772;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6772;6773;2;f;f;t;0;2c0408f2-26a3-48bc-b7f5-6e9ba72a85e8",
+			"6773;6774;0;f;f;f;6773;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6774;6775;0;f;f;f;6774;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6774;6775;2;f;f;t;0;c0f75e60-591c-40b8-bb4f-931bc7a848a2",
+			"6775;6776;0;f;f;f;6775;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6776;6777;0;f;f;f;6776;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6776;6777;2;f;f;t;0;a59e12c1-5dc4-4c35-bc09-5ece350ce4a5",
+			"6777;6778;0;f;f;f;6777;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6778;6779;0;f;f;f;6778;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6778;6779;2;f;f;t;0;290c3e3d-ceef-470e-8ca5-8214e3cbd868",
+			"6779;6780;0;f;f;f;6779;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6780;6781;0;f;f;f;6780;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6779;6781;2;f;f;t;0;bd461a31-2e8a-4430-b2e6-b8af45395c24",
+			"6781;6782;0;f;f;f;6781;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6782;6783;0;f;f;f;6782;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6782;6783;2;f;f;t;0;21cbd8e0-75a5-440e-b2a2-cd14ef4c9a9f",
+			"6783;6784;0;f;f;f;6783;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6784;6785;0;f;f;f;6784;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6783;6785;2;f;f;t;0;07a52f3d-c67d-4369-afc4-a6a587f39375",
+			"6785;6786;0;f;f;f;6785;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6786;6787;0;f;f;f;6786;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6786;6787;2;f;f;t;0;72229391-565a-4da6-9349-d749cea7d223",
+			"6787;6788;0;f;f;f;6787;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6788;6789;0;f;f;f;6788;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6787;6789;2;f;f;t;0;1d8a6919-a9de-4825-b083-fb605dd3306b",
+			"6789;6790;0;f;f;f;6789;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6790;6791;0;f;f;f;6790;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6790;6791;2;f;f;t;0;7f7bdfa7-4587-4f45-a79e-95de5c549bed",
+			"6791;6792;0;f;f;f;6791;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6792;6793;0;f;f;f;6792;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6792;6793;2;f;f;t;0;c9839b6b-e36a-4414-91bb-7c0074762878",
+			"6793;6794;0;f;f;f;6793;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6794;6795;0;f;f;f;6794;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6794;6795;2;f;f;t;0;ed79e429-92b8-4e20-a54a-92a9fae10671",
+			"6795;6796;0;f;f;f;6795;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6796;6797;0;f;f;f;6796;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6796;6797;2;f;f;t;0;e6c310fd-80f4-4cb7-a086-20b3b6ef0be9",
+			"6797;6798;0;f;f;f;6797;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6798;6799;0;f;f;f;6798;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6798;6799;2;f;f;t;0;e616cee5-8fac-4505-a2ef-6db76786c553",
+			"6799;6800;0;f;f;f;6799;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6800;6801;0;f;f;f;6800;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6800;6801;2;f;f;t;0;f4042b35-f4ae-4ecd-a290-99bb65e03fca",
+			"6801;6802;0;f;f;f;6801;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6802;6803;0;f;f;f;6802;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6802;6803;2;f;f;t;0;0e95c63a-da65-4ec1-97f1-a9a8a8aee7d6",
+			"6803;6804;0;f;f;f;6803;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6804;6805;0;f;f;f;6804;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6804;6805;2;f;f;t;0;569a41b4-a746-4ce5-ab9a-8f27fbcdbf01",
+			"6805;6806;0;f;f;f;6805;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6806;6807;0;f;f;f;6806;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6806;6807;2;f;f;t;0;81d81bb5-065d-4406-977c-1e8d5b3cb1a2",
+			"6807;6808;0;f;f;f;6807;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6808;6809;0;f;f;f;6808;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6808;6809;2;f;f;t;0;68435b27-347c-4dcc-82a4-0161bd783e67",
+			"6809;6810;0;f;f;f;6809;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6810;6811;0;f;f;f;6810;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6809;6811;2;f;f;t;0;8337fae5-ee4d-4c0d-af48-2fbe2b802738",
+			"6811;6812;0;f;f;f;6811;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6812;6813;0;f;f;f;6812;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6812;6813;2;f;f;t;0;d93bf783-e315-4976-99c9-9fe57aeb082e",
+			"6813;6814;0;f;f;f;6813;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6814;6815;0;f;f;f;6814;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6814;6815;2;f;f;t;0;8027d520-7c6b-47f8-8285-32197661e3de",
+			"6815;6816;0;f;f;f;6815;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6816;6817;0;f;f;f;6816;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6816;6817;2;f;f;t;0;0830afdf-a919-4b95-8691-4f9b0645afb0",
+			"6817;6818;0;f;f;f;6817;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6818;6819;0;f;f;f;6818;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6818;6819;2;f;f;t;0;9aed38cc-dc0b-478b-bf40-5fe973b0cb10",
+			"6819;6820;0;f;f;f;6819;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6820;6821;0;f;f;f;6820;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6820;6821;2;f;f;t;0;d9694ffc-80c8-4fe1-8b0e-50503d3dfbfb",
+			"6821;6822;0;f;f;f;6821;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6822;6823;0;f;f;f;6822;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6822;6823;2;f;f;t;0;25f83a2b-de28-44bd-a400-34d23f487a23",
+			"6823;6824;0;f;f;f;6823;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6824;6825;0;f;f;f;6824;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6824;6825;2;f;f;t;0;12dfb298-f1ee-4f01-a8fb-938e93f98bfa",
+			"6825;6826;0;f;f;f;6825;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6826;6827;0;f;f;f;6826;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6826;6827;2;f;f;t;0;2e1213fc-d886-431c-a91c-d49ad8c255e4",
+			"6827;6828;0;f;f;f;6827;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6828;6829;0;f;f;f;6828;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6828;6829;2;f;f;t;0;2adf9a6a-8ed8-400b-81bb-3404232f5d88",
+			"6829;6830;0;f;f;f;6829;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6830;6831;0;f;f;f;6830;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6830;6831;2;f;f;t;0;42152216-8865-409b-8029-4f00cecb5bc7",
+			"6831;6832;0;f;f;f;6831;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6832;6833;0;f;f;f;6832;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6832;6833;2;f;f;t;0;e3c100ac-4c7f-4e95-bd21-39cb2effd2ba",
+			"6833;6834;0;f;f;f;6833;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6834;6835;0;f;f;f;6834;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6834;6835;2;f;f;t;0;83333c9a-716e-468e-82c6-8c573bd8d279",
+			"6835;6836;0;f;f;f;6835;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6836;6837;0;f;f;f;6836;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6836;6837;2;f;f;t;0;9d5a5a80-6ada-4ef8-98f7-fdfdd9f023ec",
+			"6837;6838;0;f;f;f;6837;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6838;6839;0;f;f;f;6838;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6838;6839;2;f;f;t;0;110cceeb-f172-432e-8de2-cc7ab9262815",
+			"6839;6840;0;f;f;f;6839;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6840;6841;0;f;f;f;6840;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6840;6841;2;f;f;t;0;8298bf96-c3a7-41af-9cc8-3c607bee79e5",
+			"6841;6842;0;f;f;f;6841;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6842;6843;0;f;f;f;6842;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6842;6843;2;f;f;t;0;ca4691e2-b053-4a2d-8881-7fbccd1a4cac",
+			"6843;6844;0;f;f;f;6843;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6844;6845;0;f;f;f;6844;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6844;6845;2;f;f;t;0;0f77c6c6-1aaa-453b-90a5-629936e8fe29",
+			"6845;6846;0;f;f;f;6845;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6846;6847;0;f;f;f;6846;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6846;6847;2;f;f;t;0;344df2f7-a7d3-4486-acff-c7f30941283d",
+			"6847;6848;0;f;f;f;6847;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6848;6849;0;f;f;f;6848;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6848;6849;2;f;f;t;0;f8e88969-9046-4f72-ac02-e778418bc6a3",
+			"6849;6850;0;f;f;f;6849;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6850;6851;0;f;f;f;6850;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6850;6851;2;f;f;t;0;cca003a0-08c4-4e7e-8dc5-605408d13e20",
+			"6851;6852;0;f;f;f;6851;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6852;6853;0;f;f;f;6852;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6852;6853;2;f;f;t;0;73871c5b-96b6-4bc6-af10-4da9cfac7ea8",
+			"6853;6854;0;f;f;f;6853;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6854;6855;0;f;f;f;6854;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6854;6855;2;f;f;t;0;0a6f79dc-151e-44ae-ab4b-015e35dcc186",
+			"6855;6856;0;f;f;f;6855;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6856;6857;0;f;f;f;6856;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6856;6857;2;f;f;t;0;bc2fb6cf-f276-4a16-8beb-a95c8a8435ff",
+			"6857;6858;0;f;f;f;6857;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6858;6859;0;f;f;f;6858;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6858;6859;2;f;f;t;0;9afc932c-8b6f-4ff0-93e6-e06c9c2958f8",
+			"6859;6860;0;f;f;f;6859;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6860;6861;0;f;f;f;6860;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6860;6861;2;f;f;t;0;0b4f0732-c440-4d7e-8816-99a1412bdf04",
+			"6861;6862;0;f;f;f;6861;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6862;6863;0;f;f;f;6862;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6862;6863;2;f;f;t;0;63c3ad60-d2fb-4b6f-87ff-050fb01333c5",
+			"6863;6864;0;f;f;f;6863;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6864;6865;0;f;f;f;6864;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6864;6865;2;f;f;t;0;9aceae63-1e2f-4acf-afcf-f1310a21c2bf",
+			"6865;6866;0;f;f;f;6865;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6866;6867;0;f;f;f;6866;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6866;6867;2;f;f;t;0;55267641-5a82-406b-bd35-6a8ec290e420",
+			"6867;6868;0;f;f;f;6867;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6868;6869;0;f;f;f;6868;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6868;6869;2;f;f;t;0;010c6e82-ca54-4153-afee-538a23f1656c",
+			"6869;6870;0;f;f;f;6869;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6870;6871;0;f;f;f;6870;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6870;6871;2;f;f;t;0;e8e23cb8-40ca-4afe-8205-5dedea3cce0b",
+			"6871;6872;0;f;f;f;6871;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6872;6873;0;f;f;f;6872;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6872;6873;2;f;f;t;0;1367683e-8bb8-4d5a-9dbc-6b99ad6cf7a1",
+			"6873;6874;0;f;f;f;6873;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6874;6875;0;f;f;f;6874;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6874;6875;2;f;f;t;0;449d29d6-9248-4c32-9f52-41a791dcca94",
+			"6875;6876;0;f;f;f;6875;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6876;6877;0;f;f;f;6876;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6876;6877;2;f;f;t;0;405055fb-afb2-4fe4-8bd9-4905c4712ffa",
+			"6877;6878;0;f;f;f;6877;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6878;6879;0;f;f;f;6878;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6878;6879;2;f;f;t;0;702749d1-4828-4e18-bbf5-d482ed19dcf8",
+			"6879;6880;0;f;f;f;6879;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6880;6881;0;f;f;f;6880;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6880;6881;2;f;f;t;0;1b051aea-5a25-4581-b32d-596caf5d9266",
+			"6881;6882;0;f;f;f;6881;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6882;6883;0;f;f;f;6882;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6883;6884;0;f;f;f;6883;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6882;6884;2;f;f;t;0;508a59e2-e386-4169-848c-5cc9850bfa8b",
+			"6883;6884;2;f;f;t;0;dc1453d2-935d-4b09-a88d-d7b3658bdf12",
+			"6884;6885;0;f;f;f;6884;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6885;6886;0;f;f;f;6885;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6886;6887;0;f;f;f;6886;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6886;6887;2;f;f;t;0;92b407f6-2961-40f7-8a9a-dbf4e3fc7b67",
+			"6887;6888;0;f;f;f;6887;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6888;6889;0;f;f;f;6888;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6888;6889;2;f;f;t;0;1e63de43-963f-4d2a-baf6-2ad2a59b33eb",
+			"6889;6890;0;f;f;f;6889;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6890;6891;0;f;f;f;6890;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6890;6891;2;f;f;t;0;55b61130-746f-442e-90db-184fc1533028",
+			"6891;6892;0;f;f;f;6891;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6892;6893;0;f;f;f;6892;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6892;6893;2;f;f;t;0;4769a4e4-490c-4314-9b7e-6fdc89217165",
+			"6893;6894;0;f;f;f;6893;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6894;6895;0;f;f;f;6894;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6894;6895;2;f;f;t;0;9d40a860-48d7-434b-b8e8-9f23070aeb3c",
+			"6895;6896;0;f;f;f;6895;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6896;6897;0;f;f;f;6896;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6896;6897;2;f;f;t;0;53fe5921-6b9d-4396-a9de-f622729414b1",
+			"6897;6898;0;f;f;f;6897;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6898;6899;0;f;f;f;6898;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6898;6899;2;f;f;t;0;a1293060-6525-4baf-a809-a570197ddcda",
+			"6899;6900;0;f;f;f;6899;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6900;6901;0;f;f;f;6900;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6900;6901;2;f;f;t;0;e5619c4e-6640-4903-b212-d75e6fc61914",
+			"6901;6902;0;f;f;f;6901;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6902;6903;0;f;f;f;6902;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6902;6903;2;f;f;t;0;09268cb9-08fa-4387-86e2-5af49ff69f92",
+			"6903;6904;0;f;f;f;6903;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6904;6905;0;f;f;f;6904;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6903;6905;2;f;f;t;0;83f8199c-d7ff-402c-bcea-b0ededf8f641",
+			"6905;6906;0;f;f;f;6905;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6906;6907;0;f;f;f;6906;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6906;6907;2;f;f;t;0;0cf23a77-919a-49d1-9504-478014b3974a",
+			"6907;6908;0;f;f;f;6907;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6908;6909;0;f;f;f;6908;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6907;6909;2;f;f;t;0;893cc795-9a76-403b-b3da-165d7f26f35a",
+			"6909;6910;0;f;f;f;6909;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6910;6911;0;f;f;f;6910;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6910;6911;2;f;f;t;0;3e0295f4-65dd-4ff4-b384-3cac30b8dc4b",
+			"6911;6912;0;f;f;f;6911;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6912;6913;0;f;f;f;6912;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6912;6913;2;f;f;t;0;a4a38def-4d60-4b2d-bcc3-14a5f5344b85",
+			"6913;6914;0;f;f;f;6913;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6914;6915;0;f;f;f;6914;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6914;6915;2;f;f;t;0;1ea56e93-98f5-41f6-86c8-3ab1339a8dd3",
+			"6915;6916;0;f;f;f;6915;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6916;6917;0;f;f;f;6916;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6915;6917;2;f;f;t;0;be0e4330-2418-4250-b4c7-4992b1236daa",
+			"6917;6918;0;f;f;f;6917;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6918;6919;0;f;f;f;6918;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6918;6919;2;f;f;t;0;6c92507d-b161-4d5f-8c51-2750c7a7f549",
+			"6919;6920;0;f;f;f;6919;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6920;6921;0;f;f;f;6920;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6920;6921;2;f;f;t;0;61242723-9823-4536-b656-6e0adee630f8",
+			"6921;6922;0;f;f;f;6921;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6922;6923;0;f;f;f;6922;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6922;6923;2;f;f;t;0;8dd2ba84-1ed4-4362-bb0a-b38187a157d6",
+			"6923;6924;0;f;f;f;6923;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6924;6925;0;f;f;f;6924;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6924;6925;2;f;f;t;0;5b4ddbe6-bef4-412f-a7e3-b750e4560207",
+			"6925;6926;0;f;f;f;6925;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6926;6927;0;f;f;f;6926;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6926;6927;2;f;f;t;0;a1428dfe-f8ce-4037-b020-d3943a5f236b",
+			"6927;6928;0;f;f;f;6927;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6928;6929;0;f;f;f;6928;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6928;6929;2;f;f;t;0;f71c8645-be93-478e-ad68-1ee741ad15b5",
+			"6929;6930;0;f;f;f;6929;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6930;6931;0;f;f;f;6930;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6930;6931;2;f;f;t;0;cf5d3659-be0a-4c27-b16a-a8aeeb92ed23",
+			"6931;6932;0;f;f;f;6931;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6932;6933;0;f;f;f;6932;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6932;6933;2;f;f;t;0;d5258d86-3813-4af0-af73-4b1700964fa3",
+			"6933;6934;0;f;f;f;6933;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6934;6935;0;f;f;f;6934;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6934;6935;2;f;f;t;0;d9e5b048-ed7e-44cf-8f27-d39578e73b82",
+			"6935;6936;0;f;f;f;6935;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6936;6937;0;f;f;f;6936;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6936;6937;2;f;f;t;0;e1650e75-2c6d-4e63-93bf-2aeee11d0f9f",
+			"6937;6938;0;f;f;f;6937;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6938;6939;0;f;f;f;6938;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6938;6939;2;f;f;t;0;6faba3a8-a9c8-4d52-b7e8-a6c230510c5b",
+			"6939;6940;0;f;f;f;6939;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6940;6941;0;f;f;f;6940;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6940;6941;2;f;f;t;0;62208c4b-ca76-4018-b8ef-988c44ee6071",
+			"6941;6942;0;f;f;f;6941;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6942;6943;0;f;f;f;6942;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6942;6943;2;f;f;t;0;23d62cb0-c71a-4a65-95fb-110f9153b361",
+			"6943;6944;0;f;f;f;6943;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6944;6945;0;f;f;f;6944;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6944;6945;2;f;f;t;0;6509a77c-7af6-4e39-a770-b22fb97702f6",
+			"6945;6946;0;f;f;f;6945;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6946;6947;0;f;f;f;6946;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6946;6947;2;f;f;t;0;e3d9c826-99a0-4395-98ba-8b868e1b7b55",
+			"6947;6948;0;f;f;f;6947;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6948;6949;0;f;f;f;6948;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6948;6949;2;f;f;t;0;b40c8bfe-3c5c-4d77-b3e5-a15e3e89bb0e",
+			"6949;6950;0;f;f;f;6949;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6950;6951;0;f;f;f;6950;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6950;6951;2;f;f;t;0;37304196-6d9d-48fe-8515-41bbfa620d65",
+			"6951;6952;0;f;f;f;6951;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6952;6953;0;f;f;f;6952;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6952;6953;2;f;f;t;0;903952cc-84c7-48e0-96c8-718d0f3180fd",
+			"6953;6954;0;f;f;f;6953;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6954;6955;0;f;f;f;6954;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6954;6955;2;f;f;t;0;2187a3ef-b8a5-4b18-950e-112974511348",
+			"6955;6956;0;f;f;f;6955;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6956;6957;0;f;f;f;6956;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6956;6957;2;f;f;t;0;a59efcc4-9cb2-4665-b303-82b2a82a9449",
+			"6957;6958;0;f;f;f;6957;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6958;6959;0;f;f;f;6958;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6958;6959;2;f;f;t;0;e4757787-dfe8-4394-9726-b0ff615ac322",
+			"6959;6960;0;f;f;f;6959;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6960;6961;0;f;f;f;6960;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6959;6961;2;f;f;t;0;9aae0f48-39c5-4002-ab11-e5503b1697bc",
+			"6961;6962;0;f;f;f;6961;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6962;6963;0;f;f;f;6962;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6963;6964;0;f;f;f;6963;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6962;6964;2;f;f;t;0;c6a18f08-e233-4081-899f-8c6fdbaf2b4d",
+			"6963;6964;2;f;f;t;0;aaf6b621-914f-4814-be31-d428a0cec25b",
+			"6964;6965;0;f;f;f;6964;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6965;6966;0;f;f;f;6965;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6966;6967;0;f;f;f;6966;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6966;6967;2;f;f;t;0;843f8060-a4df-45cc-9696-15fa9bce9213",
+			"6967;6968;0;f;f;f;6967;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6968;6969;0;f;f;f;6968;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6967;6969;2;f;f;t;0;58bbcf55-a3a1-48c4-9eae-13259522a24e",
+			"6969;6970;0;f;f;f;6969;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6970;6971;0;f;f;f;6970;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6970;6971;2;f;f;t;0;0be652c9-ad75-4a4b-a068-8b10900a23be",
+			"6971;6972;0;f;f;f;6971;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6972;6973;0;f;f;f;6972;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6972;6973;2;f;f;t;0;44ded9f4-ac50-4173-84cb-1d2c2facc52a",
+			"6973;6974;0;f;f;f;6973;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6974;6975;0;f;f;f;6974;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6974;6975;2;f;f;t;0;ac1227b4-1416-4f85-82b9-72100c299d69",
+			"6975;6976;0;f;f;f;6975;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6976;6977;0;f;f;f;6976;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6976;6977;2;f;f;t;0;4c7e4ed7-7b76-40bb-96be-d9dbdfc6daa3",
+			"6977;6978;0;f;f;f;6977;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6978;6979;0;f;f;f;6978;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6978;6979;2;f;f;t;0;29b8e28e-7179-44d3-94e4-19319d2abae8",
+			"6979;6980;0;f;f;f;6979;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6980;6981;0;f;f;f;6980;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6980;6981;2;f;f;t;0;14e38db7-6037-4ec9-b70b-c956d8a56ce5",
+			"6981;6982;0;f;f;f;6981;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6982;6983;0;f;f;f;6982;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6982;6983;2;f;f;t;0;6abe885b-a9c1-4538-aee9-608e5a960e17",
+			"6983;6984;0;f;f;f;6983;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6984;6985;0;f;f;f;6984;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6984;6985;2;f;f;t;0;9807abe2-4c84-449b-889b-255b4d0259d6",
+			"6985;6986;0;f;f;f;6985;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6986;6987;0;f;f;f;6986;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6986;6987;2;f;f;t;0;9f3059d5-4852-4a7f-b2d9-61e1685be184",
+			"6987;6988;0;f;f;f;6987;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6988;6989;0;f;f;f;6988;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6989;6990;0;f;f;f;6989;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6988;6990;2;f;f;t;0;eea8075a-dde3-46c4-a91c-262c64fd99d8",
+			"6989;6990;2;f;f;t;0;34766f07-f0e5-4db4-a129-14ca6279f79c",
+			"6990;6991;0;f;f;f;6990;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6991;6992;0;f;f;f;6991;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6992;6993;0;f;f;f;6992;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6992;6993;2;f;f;t;0;875aef83-e158-418d-8703-b53d273fa0ec",
+			"6993;6994;0;f;f;f;6993;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6994;6995;0;f;f;f;6994;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6994;6995;2;f;f;t;0;4bd990ce-de60-448d-8668-40210d1a0d6a",
+			"6995;6996;0;f;f;f;6995;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6996;6997;0;f;f;f;6996;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6996;6997;2;f;f;t;0;c0a31632-d9b8-4890-82ee-2dc3512f90b8",
+			"6997;6998;0;f;f;f;6997;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6998;6999;0;f;f;f;6998;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"6998;6999;2;f;f;t;0;6f4a627c-d5df-40b4-bcf7-4a01ccdca277",
+			"6999;7000;0;f;f;f;6999;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7000;7001;0;f;f;f;7000;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7000;7001;2;f;f;t;0;81480ba9-e353-4364-9a33-56f57d513eff",
+			"7001;7002;0;f;f;f;7001;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7002;7003;0;f;f;f;7002;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7002;7003;2;f;f;t;0;6164ee95-5a77-4af7-aa8b-b396414c0c9d",
+			"7003;7004;0;f;f;f;7003;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7004;7005;0;f;f;f;7004;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7004;7005;2;f;f;t;0;82aca708-4471-4306-9c42-518f3aa3bd6b",
+			"7005;7006;0;f;f;f;7005;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7006;7007;0;f;f;f;7006;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7006;7007;2;f;f;t;0;612a9984-7718-4084-9fd4-56e64064bed1",
+			"7007;7008;0;f;f;f;7007;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7008;7009;0;f;f;f;7008;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7008;7009;2;f;f;t;0;bf2dca19-0d44-42d8-af12-6c380e95f84c",
+			"7009;7010;0;f;f;f;7009;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7010;7011;0;f;f;f;7010;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7010;7011;2;f;f;t;0;15615fcd-57ce-4cca-9f8f-95bde3500418",
+			"7011;7012;0;f;f;f;7011;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7012;7013;0;f;f;f;7012;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7012;7013;2;f;f;t;0;d41fb306-4aae-4a48-b606-645f77884f7f",
+			"7013;7014;0;f;f;f;7013;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7014;7015;0;f;f;f;7014;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7014;7015;2;f;f;t;0;c6ca9f34-32e6-455b-98a7-bf032ebb22a3",
+			"7015;7016;0;f;f;f;7015;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7016;7017;0;f;f;f;7016;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7016;7017;2;f;f;t;0;22389237-f4c4-4f6e-b4f8-0d4f02934afc",
+			"7017;7018;0;f;f;f;7017;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7018;7019;0;f;f;f;7018;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7018;7019;2;f;f;t;0;683c17ef-582a-4de5-9076-6713ac3d9fa4",
+			"7019;7020;0;f;f;f;7019;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7020;7021;0;f;f;f;7020;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7020;7021;2;f;f;t;0;0030bf51-8404-4afc-96fe-e2546f544a6a",
+			"7021;7022;0;f;f;f;7021;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7022;7023;0;f;f;f;7022;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7022;7023;2;f;f;t;0;eefa2d62-3ec4-4f6e-8f39-46c75b1e1776",
+			"7023;7024;0;f;f;f;7023;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7024;7025;0;f;f;f;7024;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7024;7025;2;f;f;t;0;91205530-789c-4c7d-84e1-18f26484cc15",
+			"7025;7026;0;f;f;f;7025;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7026;7027;0;f;f;f;7026;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7026;7027;2;f;f;t;0;c878ecc7-f549-4f45-b1e5-1279d780b2bb",
+			"7027;7028;0;f;f;f;7027;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7028;7029;0;f;f;f;7028;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7028;7029;2;f;f;t;0;2badfc0c-ab2c-483c-9623-8481d3422f37",
+			"7029;7030;0;f;f;f;7029;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7030;7031;0;f;f;f;7030;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7030;7031;2;f;f;t;0;0d90da00-ad53-4e83-883d-17e79ac592a9",
+			"7031;7032;0;f;f;f;7031;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7032;7033;0;f;f;f;7032;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7032;7033;2;f;f;t;0;46e68391-5adf-4c6e-86b4-1d0b85f54bb2",
+			"7033;7034;0;f;f;f;7033;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7034;7035;0;f;f;f;7034;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7034;7035;2;f;f;t;0;a7347739-f6f7-4bec-b28f-44e45bb68920",
+			"7035;7036;0;f;f;f;7035;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7036;7037;0;f;f;f;7036;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7035;7037;2;f;f;t;0;26147e00-750f-4d30-bdf9-3d2c372b3891",
+			"7037;7038;0;f;f;f;7037;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7038;7039;0;f;f;f;7038;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7038;7039;2;f;f;t;0;6376b983-2bc8-4564-ae70-91619b09dc1d",
+			"7039;7040;0;f;f;f;7039;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7040;7041;0;f;f;f;7040;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7040;7041;2;f;f;t;0;83f459dd-6adf-44b0-abd5-ec91bad4fbe1",
+			"7041;7042;0;f;f;f;7041;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7042;7043;0;f;f;f;7042;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7042;7043;2;f;f;t;0;b22a8fd1-e3c7-417d-8f26-c88da82968ee",
+			"7043;7044;0;f;f;f;7043;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7044;7045;0;f;f;f;7044;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7044;7045;2;f;f;t;0;5557d205-2db8-4daf-a271-6157a5241a9d",
+			"7045;7046;0;f;f;f;7045;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7046;7047;0;f;f;f;7046;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7046;7047;2;f;f;t;0;6cb8d798-b1ab-46a3-98c1-194fb49533e3",
+			"7047;7048;0;f;f;f;7047;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7048;7049;0;f;f;f;7048;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7048;7049;2;f;f;t;0;5105b282-86a2-4f7c-a4b2-1a2163dbf67b",
+			"7049;7050;0;f;f;f;7049;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7050;7051;0;f;f;f;7050;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7050;7051;2;f;f;t;0;6514f9da-fcf1-4c20-a3fe-96248002387f",
+			"7051;7052;0;f;f;f;7051;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7052;7053;0;f;f;f;7052;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7052;7053;2;f;f;t;0;7616d1e5-fe11-40d3-9538-2b61458a940f",
+			"7053;7054;0;f;f;f;7053;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7054;7055;0;f;f;f;7054;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7054;7055;2;f;f;t;0;bb85a5ae-92a4-4af4-8966-f8dc7799a5a5",
+			"7055;7056;0;f;f;f;7055;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7056;7057;0;f;f;f;7056;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7056;7057;2;f;f;t;0;0fd4ff8e-cca6-4b0b-b75c-3bdd7c315f2e",
+			"7057;7058;0;f;f;f;7057;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7058;7059;0;f;f;f;7058;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7058;7059;2;f;f;t;0;794db01c-396d-44b9-a431-c17c8469ab23",
+			"7059;7060;0;f;f;f;7059;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7060;7061;0;f;f;f;7060;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7060;7061;2;f;f;t;0;e99b6ed2-0cab-4c6c-b690-b3a41a0173cc",
+			"7061;7062;0;f;f;f;7061;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7062;7063;0;f;f;f;7062;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7062;7063;2;f;f;t;0;8e83d6a5-7b72-426c-913a-fa6f8d30728c",
+			"7063;7064;0;f;f;f;7063;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7064;7065;0;f;f;f;7064;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7064;7065;2;f;f;t;0;f8b4ebf2-49eb-435d-a6a4-2381ce38abfa",
+			"7065;7066;0;f;f;f;7065;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7066;7067;0;f;f;f;7066;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7066;7067;2;f;f;t;0;92383994-5165-4056-b9e1-1ba99bbe6e56",
+			"7067;7068;0;f;f;f;7067;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7068;7069;0;f;f;f;7068;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7068;7069;2;f;f;t;0;9a80444e-6096-4ece-9809-3ce146a69dcb",
+			"7069;7070;0;f;f;f;7069;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7070;7071;0;f;f;f;7070;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7070;7071;2;f;f;t;0;aefd88d0-6246-4a87-b552-be16a7ef8565",
+			"7071;7072;0;f;f;f;7071;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7072;7073;0;f;f;f;7072;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7072;7073;2;f;f;t;0;7f026b74-5fb5-4e73-bab6-563cfc879df4",
+			"7073;7074;0;f;f;f;7073;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7074;7075;0;f;f;f;7074;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7074;7075;2;f;f;t;0;89bdb11b-734f-4e7e-a4ef-801770fc0e2f",
+			"7075;7076;0;f;f;f;7075;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7076;7077;0;f;f;f;7076;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7077;7078;0;f;f;f;7077;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7076;7078;2;f;f;t;0;a6c9e75d-299b-4fd1-bc82-26235f107d08",
+			"7077;7078;2;f;f;t;0;e3f1752c-6688-4fe6-a3dc-a11bf333ff97",
+			"7078;7079;0;f;f;f;7078;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7079;7080;0;f;f;f;7079;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7080;7081;0;f;f;f;7080;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7080;7081;2;f;f;t;0;d0b821e0-c729-423b-97ce-c4b8d02f982b",
+			"7081;7082;0;f;f;f;7081;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7082;7083;0;f;f;f;7082;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7081;7083;2;f;f;t;0;d6d3b233-1c03-494f-bc46-d9239cf77a42",
+			"7083;7084;0;f;f;f;7083;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7084;7085;0;f;f;f;7084;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7085;7086;0;f;f;f;7085;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7084;7086;2;f;f;t;0;166b4556-7c5d-49ed-96e7-6ac20ff581ff",
+			"7085;7086;2;f;f;t;0;d519577f-ae68-4ab8-92cc-7d60a4fa148e",
+			"7086;7087;0;f;f;f;7086;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7087;7088;0;f;f;f;7087;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7088;7089;0;f;f;f;7088;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7088;7089;2;f;f;t;0;027913d5-fa05-4ec1-9e84-087a765fd5c4",
+			"7089;7090;0;f;f;f;7089;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7090;7091;0;f;f;f;7090;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7089;7091;2;f;f;t;0;3100d7eb-4f57-4a85-8205-779444f2472b",
+			"7091;7092;0;f;f;f;7091;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7092;7093;0;f;f;f;7092;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7092;7093;2;f;f;t;0;92aaddea-ad52-4cee-8452-d279e6b8a8d9",
+			"7093;7094;0;f;f;f;7093;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7094;7095;0;f;f;f;7094;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7094;7095;2;f;f;t;0;c4c0ba1f-cb56-4ac6-9b9c-86416bd2d1a2",
+			"7095;7096;0;f;f;f;7095;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7096;7097;0;f;f;f;7096;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7096;7097;2;f;f;t;0;5bff9e23-506d-492e-9b65-5681e03262ca",
+			"7097;7098;0;f;f;f;7097;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7098;7099;0;f;f;f;7098;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7098;7099;2;f;f;t;0;1b0901c7-e415-452c-b818-62f44c93144e",
+			"7099;7100;0;f;f;f;7099;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7100;7101;0;f;f;f;7100;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7100;7101;2;f;f;t;0;7a133ab9-4b83-411a-bc50-3c40f15239ca",
+			"7101;7102;0;f;f;f;7101;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7102;7103;0;f;f;f;7102;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7102;7103;2;f;f;t;0;bd66ffbd-4b0b-4255-9d75-411d9f72bb73",
+			"7103;7104;0;f;f;f;7103;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7104;7105;0;f;f;f;7104;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7104;7105;2;f;f;t;0;8388ed64-c016-4780-afbb-33569a935646",
+			"7105;7106;0;f;f;f;7105;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7106;7107;0;f;f;f;7106;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7106;7107;2;f;f;t;0;f4da936c-c301-4a43-965d-fa7ce9e7e0e2",
+			"7107;7108;0;f;f;f;7107;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7108;7109;0;f;f;f;7108;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7108;7109;2;f;f;t;0;3b08fac6-2640-4ebc-a5e2-b03d2d1a2d3d",
+			"7109;7110;0;f;f;f;7109;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7110;7111;0;f;f;f;7110;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7110;7111;2;f;f;t;0;1e073022-c3a0-4f22-bb88-5d115a6fd655",
+			"7111;7112;0;f;f;f;7111;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7112;7113;0;f;f;f;7112;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7112;7113;2;f;f;t;0;cc3b47fc-7b88-485b-96cd-d003df851aa4",
+			"7113;7114;0;f;f;f;7113;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7114;7115;0;f;f;f;7114;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7114;7115;2;f;f;t;0;07bdc8fa-a989-49d9-90bf-6427d256c2eb",
+			"7115;7116;0;f;f;f;7115;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7116;7117;0;f;f;f;7116;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7115;7117;2;f;f;t;0;3b6f6a5c-a6ef-4dc0-a36b-00efb134ccfe",
+			"7117;7118;0;f;f;f;7117;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7118;7119;0;f;f;f;7118;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7118;7119;2;f;f;t;0;37007e9f-1b3c-4753-8e04-32b9e350facb",
+			"7119;7120;0;f;f;f;7119;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7120;7121;0;f;f;f;7120;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7120;7121;2;f;f;t;0;0c31d19d-1de0-488b-8bcb-6647e30a785a",
+			"7121;7122;0;f;f;f;7121;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7122;7123;0;f;f;f;7122;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7122;7123;2;f;f;t;0;b84197d0-634f-451a-833a-db0533db4269",
+			"7123;7124;0;f;f;f;7123;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7124;7125;0;f;f;f;7124;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7124;7125;2;f;f;t;0;5eb99200-dff5-4ae5-bf0b-3c0087841f1b",
+			"7125;7126;0;f;f;f;7125;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7126;7127;0;f;f;f;7126;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7125;7127;2;f;f;t;0;d1f46fb8-59b5-4c1e-8c6f-5012b4448bfb",
+			"7127;7128;0;f;f;f;7127;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7128;7129;0;f;f;f;7128;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7128;7129;2;f;f;t;0;8510cb73-2bb2-43b7-8157-628d4f3a2785",
+			"7129;7130;0;f;f;f;7129;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7130;7131;0;f;f;f;7130;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7130;7131;2;f;f;t;0;9969cb8f-3a17-40a0-bc47-a9554936b94b",
+			"7131;7132;0;f;f;f;7131;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7132;7133;0;f;f;f;7132;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7132;7133;2;f;f;t;0;5eb520d3-5b36-4fc4-b670-b0ef524f0b8e",
+			"7133;7134;0;f;f;f;7133;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7134;7135;0;f;f;f;7134;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7134;7135;2;f;f;t;0;fdd07fd1-03ef-431f-9db9-ce8977133c86",
+			"7135;7136;0;f;f;f;7135;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7136;7137;0;f;f;f;7136;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7136;7137;2;f;f;t;0;c2ef7491-bb58-4409-b3c7-6ec30435d47f",
+			"7137;7138;0;f;f;f;7137;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7138;7139;0;f;f;f;7138;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7138;7139;2;f;f;t;0;d7e15cdd-90bf-4596-9823-dfd92eebb4c4",
+			"7139;7140;0;f;f;f;7139;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7140;7141;0;f;f;f;7140;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7140;7141;2;f;f;t;0;ef0e645f-6429-4f36-9319-a74169c9b9cf",
+			"7141;7142;0;f;f;f;7141;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7142;7143;0;f;f;f;7142;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7142;7143;2;f;f;t;0;c468f187-27a9-477f-9768-cad754e88f0c",
+			"7143;7144;0;f;f;f;7143;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7144;7145;0;f;f;f;7144;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7144;7145;2;f;f;t;0;5e0e6446-a4d6-4b1a-b4e6-0b325536016d",
+			"7145;7146;0;f;f;f;7145;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7146;7147;0;f;f;f;7146;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7146;7147;2;f;f;t;0;e45021b3-0903-450c-bb83-eafbb1017a43",
+			"7147;7148;0;f;f;f;7147;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7148;7149;0;f;f;f;7148;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7148;7149;2;f;f;t;0;f0202bcb-51df-4f78-8479-52a77680cb37",
+			"7149;7150;0;f;f;f;7149;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7150;7151;0;f;f;f;7150;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7150;7151;2;f;f;t;0;0add4534-8bbd-40bd-aa2c-0d5c417953bc",
+			"7151;7152;0;f;f;f;7151;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7152;7153;0;f;f;f;7152;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7152;7153;2;f;f;t;0;8a3c849e-51ec-4237-a859-32c82fad9494",
+			"7153;7154;0;f;f;f;7153;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7154;7155;0;f;f;f;7154;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7154;7155;2;f;f;t;0;5463f0fa-609e-4bb6-a475-956e96c35c0c",
+			"7155;7156;0;f;f;f;7155;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7156;7157;0;f;f;f;7156;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7156;7157;2;f;f;t;0;585e6326-f4e1-4952-ba70-78dd6e58e0d6",
+			"7157;7158;0;f;f;f;7157;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7158;7159;0;f;f;f;7158;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7158;7159;2;f;f;t;0;9acd542d-630e-4b8c-b99a-95317426b3c9",
+			"7159;7160;0;f;f;f;7159;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7160;7161;0;f;f;f;7160;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7160;7161;2;f;f;t;0;94943376-fbe9-41f8-8f71-1cf637d1bef8",
+			"7161;7162;0;f;f;f;7161;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7162;7163;0;f;f;f;7162;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7162;7163;2;f;f;t;0;d583dd1a-c1fe-4395-9e5a-4c4673d3d7f0",
+			"7163;7164;0;f;f;f;7163;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7164;7165;0;f;f;f;7164;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7164;7165;2;f;f;t;0;e4e06252-fb93-4859-bd71-2ee21f088ad3",
+			"7165;7166;0;f;f;f;7165;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7166;7167;0;f;f;f;7166;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7166;7167;2;f;f;t;0;d4fcf6dd-4b90-4a69-aceb-e152dc06509b",
+			"7167;7168;0;f;f;f;7167;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7168;7169;0;f;f;f;7168;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7168;7169;2;f;f;t;0;e3ebb6f8-9798-4787-85d8-9e3ae2df2d68",
+			"7169;7170;0;f;f;f;7169;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7170;7171;0;f;f;f;7170;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7170;7171;2;f;f;t;0;137954e0-d464-453b-bcef-41acb626dcff",
+			"7171;7172;0;f;f;f;7171;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7172;7173;0;f;f;f;7172;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7172;7173;2;f;f;t;0;29a0f877-15fd-4c1c-80bb-3924b5f994e1",
+			"7173;7174;0;f;f;f;7173;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7174;7175;0;f;f;f;7174;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7174;7175;2;f;f;t;0;3caf2e40-ed51-4b7b-9c53-b584d15ae8f2",
+			"7175;7176;0;f;f;f;7175;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7176;7177;0;f;f;f;7176;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7176;7177;2;f;f;t;0;2a252abd-f8f4-4e12-a978-92387c4ed85e",
+			"7177;7178;0;f;f;f;7177;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7178;7179;0;f;f;f;7178;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7178;7179;2;f;f;t;0;5430d9d1-422f-4a2f-ab41-afe6b9c93ec6",
+			"7179;7180;0;f;f;f;7179;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7180;7181;0;f;f;f;7180;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7180;7181;2;f;f;t;0;680ac101-13c2-49ed-a690-b1a8e06cc922",
+			"7181;7182;0;f;f;f;7181;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7182;7183;0;f;f;f;7182;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7182;7183;2;f;f;t;0;1cc8d346-a04e-449c-8e4d-d02d5763c14f",
+			"7183;7184;0;f;f;f;7183;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7184;7185;0;f;f;f;7184;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7184;7185;2;f;f;t;0;690da3a7-887a-4749-9f15-282127c6799f",
+			"7185;7186;0;f;f;f;7185;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7186;7187;0;f;f;f;7186;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7186;7187;2;f;f;t;0;173c8221-ab68-4fb7-a291-be5a76c75e7a",
+			"7187;7188;0;f;f;f;7187;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7188;7189;0;f;f;f;7188;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7188;7189;2;f;f;t;0;c5e8bbc7-2303-4588-8261-80483a8a9dd7",
+			"7189;7190;0;f;f;f;7189;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7190;7191;0;f;f;f;7190;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7190;7191;2;f;f;t;0;51035e29-9356-42b4-b5f8-ae8c05ab1a50",
+			"7191;7192;0;f;f;f;7191;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7192;7193;0;f;f;f;7192;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7192;7193;2;f;f;t;0;9581153e-4619-4a6f-bdfb-cebf2933cd89",
+			"7193;7194;0;f;f;f;7193;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7194;7195;0;f;f;f;7194;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7194;7195;2;f;f;t;0;f7b2875b-56e2-4986-abfa-dfd5b57912c9",
+			"7195;7196;0;f;f;f;7195;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7196;7197;0;f;f;f;7196;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7196;7197;2;f;f;t;0;d7eb9503-0cd6-4441-954e-4c07ff06d7a0",
+			"7197;7198;0;f;f;f;7197;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7198;7199;0;f;f;f;7198;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7198;7199;2;f;f;t;0;63f86e34-315e-4a78-952c-f65e309eaa73",
+			"7199;7200;0;f;f;f;7199;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7200;7201;0;f;f;f;7200;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7200;7201;2;f;f;t;0;b6213b8c-939a-427c-b3dc-ddaebc26236e",
+			"7201;7202;0;f;f;f;7201;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7202;7203;0;f;f;f;7202;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7202;7203;2;f;f;t;0;fc45b1a9-d3c0-48f9-9033-ce9856e850ac",
+			"7203;7204;0;f;f;f;7203;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7204;7205;0;f;f;f;7204;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7204;7205;2;f;f;t;0;c987a2e8-5407-4989-90fd-d113e3208ef9",
+			"7205;7206;0;f;f;f;7205;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7206;7207;0;f;f;f;7206;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7206;7207;2;f;f;t;0;9a18eec1-75ae-446c-a2f0-c6d3e947a526",
+			"7207;7208;0;f;f;f;7207;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7208;7209;0;f;f;f;7208;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7208;7209;2;f;f;t;0;19a76e25-4915-4ce2-a371-63e2726fe08f",
+			"7209;7210;0;f;f;f;7209;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7210;7211;0;f;f;f;7210;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7210;7211;2;f;f;t;0;2520929d-3888-4278-a15f-155081f60e69",
+			"7211;7212;0;f;f;f;7211;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7212;7213;0;f;f;f;7212;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7212;7213;2;f;f;t;0;9330f9f1-5951-46c7-a202-5fffb2470704",
+			"7213;7214;0;f;f;f;7213;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7214;7215;0;f;f;f;7214;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7214;7215;2;f;f;t;0;ba698653-b3ea-439e-bf91-52cfa9415161",
+			"7215;7216;0;f;f;f;7215;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7216;7217;0;f;f;f;7216;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7216;7217;2;f;f;t;0;12e5a126-8e4f-4475-a4cc-10bdf2e97aec",
+			"7217;7218;0;f;f;f;7217;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7218;7219;0;f;f;f;7218;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7218;7219;2;f;f;t;0;8d4dce95-5023-4231-ad23-9fea5766cb3a",
+			"7219;7220;0;f;f;f;7219;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7220;7221;0;f;f;f;7220;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7220;7221;2;f;f;t;0;526fa62d-08f4-4b92-961e-b96227177d4e",
+			"7221;7222;0;f;f;f;7221;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7222;7223;0;f;f;f;7222;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7222;7223;2;f;f;t;0;d12677ab-abe6-4661-8544-86f6c4144f60",
+			"7223;7224;0;f;f;f;7223;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7224;7225;0;f;f;f;7224;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7224;7225;2;f;f;t;0;4cd941bd-6d76-4203-bb39-55f806cfa3a5",
+			"7225;7226;0;f;f;f;7225;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7226;7227;0;f;f;f;7226;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7226;7227;2;f;f;t;0;486a933b-d85e-4cca-9229-760e743a27cd",
+			"7227;7228;0;f;f;f;7227;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7228;7229;0;f;f;f;7228;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7228;7229;2;f;f;t;0;a76315c4-e23b-4b85-b4a3-61f5033667dc",
+			"7229;7230;0;f;f;f;7229;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7230;7231;0;f;f;f;7230;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7230;7231;2;f;f;t;0;f42ce3a0-0a67-4d4a-9d8e-6887e91b132e",
+			"7231;7232;0;f;f;f;7231;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7232;7233;0;f;f;f;7232;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7232;7233;2;f;f;t;0;a4f32b0d-9f22-4393-8be0-9809d14e752e",
+			"7233;7234;0;f;f;f;7233;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7234;7235;0;f;f;f;7234;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7234;7235;2;f;f;t;0;5764cc7d-1782-413a-bb6d-17119c468362",
+			"7235;7236;0;f;f;f;7235;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7236;7237;0;f;f;f;7236;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7236;7237;2;f;f;t;0;7023944b-ed72-4b35-b9be-141ffc6b4ae3",
+			"7237;7238;0;f;f;f;7237;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7238;7239;0;f;f;f;7238;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7239;7240;0;f;f;f;7239;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7238;7240;2;f;f;t;0;2dd2bad7-df18-4d55-b09d-b11b5091f9c2",
+			"7239;7240;2;f;f;t;0;717fc9e5-bd63-4b24-acb0-930362013a6e",
+			"7240;7241;0;f;f;f;7240;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7241;7242;0;f;f;f;7241;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7242;7243;0;f;f;f;7242;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7243;7244;0;f;f;f;7243;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7242;7244;2;f;f;t;0;ff2e33e1-bfa9-4cea-8d15-3e02c82d1158",
+			"7243;7244;2;f;f;t;0;57387fbb-2418-4565-96ef-7623c50ab36b",
+			"7244;7245;0;f;f;f;7244;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7245;7246;0;f;f;f;7245;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7246;7247;0;f;f;f;7246;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7246;7247;2;f;f;t;0;13613b65-cc38-4dc0-b4ef-fcd7b7598a3e",
+			"7247;7248;0;f;f;f;7247;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7248;7249;0;f;f;f;7248;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7247;7249;2;f;f;t;0;e0d55879-e8a2-4b2e-a2b8-6c328afd41ac",
+			"7249;7250;0;f;f;f;7249;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7250;7251;0;f;f;f;7250;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7250;7251;2;f;f;t;0;f8b40209-55cc-4a62-9eb9-3506b6af1cda",
+			"7251;7252;0;f;f;f;7251;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7252;7253;0;f;f;f;7252;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7252;7253;2;f;f;t;0;d1bf8e72-5054-466b-aca2-95b7c1c8efe7",
+			"7253;7254;0;f;f;f;7253;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7254;7255;0;f;f;f;7254;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7254;7255;2;f;f;t;0;67e6ee87-5ea1-453a-9e43-cd149d5aa07f",
+			"7255;7256;0;f;f;f;7255;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7256;7257;0;f;f;f;7256;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7256;7257;2;f;f;t;0;b731d2ea-19a1-446a-8514-658a052dc5a8",
+			"7257;7258;0;f;f;f;7257;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7258;7259;0;f;f;f;7258;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7259;7260;0;f;f;f;7259;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7258;7260;2;f;f;t;0;dacb0a14-12f6-4927-8643-08be90411aa0",
+			"7259;7260;2;f;f;t;0;3545aa88-38b8-448c-89c1-c1f67f9b9b0c",
+			"7260;7261;0;f;f;f;7260;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7261;7262;0;f;f;f;7261;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7262;7263;0;f;f;f;7262;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7262;7263;2;f;f;t;0;229cbf83-481c-4a0d-a4a8-ff1516795466",
+			"7263;7264;0;f;f;f;7263;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7264;7265;0;f;f;f;7264;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7263;7265;2;f;f;t;0;10371d02-89b6-4746-9692-96f7a1c4a073",
+			"7265;7266;0;f;f;f;7265;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7266;7267;0;f;f;f;7266;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7266;7267;2;f;f;t;0;e046bbe0-83ce-4f1a-a22a-dfa849cb5eeb",
+			"7267;7268;0;f;f;f;7267;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7268;7269;0;f;f;f;7268;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7267;7269;2;f;f;t;0;2681ae29-8f2b-4407-99b0-6307c58d927d",
+			"7269;7270;0;f;f;f;7269;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7270;7271;0;f;f;f;7270;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7270;7271;2;f;f;t;0;8482eb3b-94b0-4a77-9fb8-a5e910c57f11",
+			"7271;7272;0;f;f;f;7271;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7272;7273;0;f;f;f;7272;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7272;7273;2;f;f;t;0;4999d108-e9a1-4caa-b1f7-57b3abf63739",
+			"7273;7274;0;f;f;f;7273;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7274;7275;0;f;f;f;7274;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7274;7275;2;f;f;t;0;514607e2-7cd1-40de-90a1-38ee3af753d3",
+			"7275;7276;0;f;f;f;7275;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7276;7277;0;f;f;f;7276;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7276;7277;2;f;f;t;0;91b95f33-03d7-4e2a-9034-321a65b2aa93",
+			"7277;7278;0;f;f;f;7277;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7278;7279;0;f;f;f;7278;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7278;7279;2;f;f;t;0;0ed7a63e-aea6-4c0f-abab-7f61c02b9494",
+			"7279;7280;0;f;f;f;7279;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7280;7281;0;f;f;f;7280;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7280;7281;2;f;f;t;0;1593607b-462b-48c0-82dc-faa622c339ee",
+			"7281;7282;0;f;f;f;7281;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7282;7283;0;f;f;f;7282;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7282;7283;2;f;f;t;0;9d72b84f-aafa-4c6a-812e-cdc86d4df3fc",
+			"7283;7284;0;f;f;f;7283;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7284;7285;0;f;f;f;7284;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7284;7285;2;f;f;t;0;3c765471-763a-46bf-9d19-4ed7e4cca994",
+			"7285;7286;0;f;f;f;7285;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7286;7287;0;f;f;f;7286;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7286;7287;2;f;f;t;0;b87bad0a-a255-4bdf-bbeb-fb2ae3fff277",
+			"7287;7288;0;f;f;f;7287;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7288;7289;0;f;f;f;7288;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7288;7289;2;f;f;t;0;61af81e5-74c8-4183-83be-89e8c07446e5",
+			"7289;7290;0;f;f;f;7289;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7290;7291;0;f;f;f;7290;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7290;7291;2;f;f;t;0;22227c37-891f-4394-8eba-5defc6de3847",
+			"7291;7292;0;f;f;f;7291;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7292;7293;0;f;f;f;7292;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7292;7293;2;f;f;t;0;5d92663a-1a4e-4da5-b26c-20bdc4a20673",
+			"7293;7294;0;f;f;f;7293;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7294;7295;0;f;f;f;7294;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7294;7295;2;f;f;t;0;9db732b5-e870-4645-bcd8-fd10d9c0e819",
+			"7295;7296;0;f;f;f;7295;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7296;7297;0;f;f;f;7296;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7296;7297;2;f;f;t;0;7ece1d24-5ae8-49aa-b5e7-faa176520d2c",
+			"7297;7298;0;f;f;f;7297;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7298;7299;0;f;f;f;7298;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7298;7299;2;f;f;t;0;46cb75c7-ed18-4b43-8c03-19bd79b0f4f5",
+			"7299;7300;0;f;f;f;7299;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7300;7301;0;f;f;f;7300;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7300;7301;2;f;f;t;0;1cc1622b-7afe-4306-b232-8857adeee370",
+			"7301;7302;0;f;f;f;7301;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7302;7303;0;f;f;f;7302;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7302;7303;2;f;f;t;0;036a1e92-f853-4e71-bb7c-82d96c2c7bea",
+			"7303;7304;0;f;f;f;7303;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7304;7305;0;f;f;f;7304;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7304;7305;2;f;f;t;0;e5663be6-a852-4dad-a554-5aa2b4f1af16",
+			"7305;7306;0;f;f;f;7305;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7306;7307;0;f;f;f;7306;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7306;7307;2;f;f;t;0;264e7ec8-7406-4e5d-b169-929f11ec098e",
+			"7307;7308;0;f;f;f;7307;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7308;7309;0;f;f;f;7308;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7308;7309;2;f;f;t;0;8a8cb77a-74cc-451e-b68f-95aff904a8f9",
+			"7309;7310;0;f;f;f;7309;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7310;7311;0;f;f;f;7310;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7310;7311;2;f;f;t;0;bb5506b1-7376-4d86-9a2f-f647329556fb",
+			"7311;7312;0;f;f;f;7311;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7312;7313;0;f;f;f;7312;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7312;7313;2;f;f;t;0;f9d5d173-6cf9-4a6e-af29-fd8ff23917a2",
+			"7313;7314;0;f;f;f;7313;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7314;7315;0;f;f;f;7314;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7314;7315;2;f;f;t;0;d8f96732-a38a-4679-9e37-db6ec4efeb0f",
+			"7315;7316;0;f;f;f;7315;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7316;7317;0;f;f;f;7316;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7316;7317;2;f;f;t;0;73768c9a-39f1-449d-ba73-0dd0676060b9",
+			"7317;7318;0;f;f;f;7317;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7318;7319;0;f;f;f;7318;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7318;7319;2;f;f;t;0;8afb10dd-4b1a-4a5e-a698-d236e11fcc38",
+			"7319;7320;0;f;f;f;7319;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7320;7321;0;f;f;f;7320;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7320;7321;2;f;f;t;0;bc7bd933-150f-468b-b475-a8b2dad15cf7",
+			"7321;7322;0;f;f;f;7321;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7322;7323;0;f;f;f;7322;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7322;7323;2;f;f;t;0;f5263767-e3a5-4bf2-9e4b-c2c036fb6dc9",
+			"7323;7324;0;f;f;f;7323;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7324;7325;0;f;f;f;7324;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7324;7325;2;f;f;t;0;bb21a5d8-bfa1-4d58-bea5-4f4dd175dbd9",
+			"7325;7326;0;f;f;f;7325;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7326;7327;0;f;f;f;7326;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7326;7327;2;f;f;t;0;df373baf-2264-4137-ad89-7e9fbf7d745d",
+			"7327;7328;0;f;f;f;7327;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7328;7329;0;f;f;f;7328;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7328;7329;2;f;f;t;0;e7ac99fa-91f9-4328-b7f3-63ee1d1b79a8",
+			"7329;7330;0;f;f;f;7329;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7330;7331;0;f;f;f;7330;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7330;7331;2;f;f;t;0;a016f554-134f-4251-8261-09104901cc7f",
+			"7331;7332;0;f;f;f;7331;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7332;7333;0;f;f;f;7332;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7332;7333;2;f;f;t;0;e31a23f9-2c18-472d-996b-cbf51fb5e236",
+			"7333;7334;0;f;f;f;7333;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7334;7335;0;f;f;f;7334;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7334;7335;2;f;f;t;0;dbf0095a-0237-4280-9322-3f974a80197f",
+			"7335;7336;0;f;f;f;7335;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7336;7337;0;f;f;f;7336;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7337;7338;0;f;f;f;7337;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7336;7338;2;f;f;t;0;c8356a90-5845-4cf5-a056-33dec9b3146e",
+			"7337;7338;2;f;f;t;0;9c672229-4a6b-4b88-8cff-852e123b2dad",
+			"7338;7339;0;f;f;f;7338;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7339;7340;0;f;f;f;7339;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7340;7341;0;f;f;f;7340;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7340;7341;2;f;f;t;0;05e26e05-6e02-43a2-a9a4-06fd5900387f",
+			"7341;7342;0;f;f;f;7341;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7342;7343;0;f;f;f;7342;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7341;7343;2;f;f;t;0;4d7b728e-cf97-49b8-b5a0-67fdc22145d2",
+			"7343;7344;0;f;f;f;7343;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7344;7345;0;f;f;f;7344;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7344;7345;2;f;f;t;0;b2df5cf3-09e4-4973-aa59-cc6869abf9de",
+			"7345;7346;0;f;f;f;7345;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7346;7347;0;f;f;f;7346;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7346;7347;2;f;f;t;0;2530115c-6b8a-4dbb-9ee0-36e7c4f3c78d",
+			"7347;7348;0;f;f;f;7347;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7348;7349;0;f;f;f;7348;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7348;7349;2;f;f;t;0;18cc404f-442d-400a-ab2d-1234b9e3e8e9",
+			"7349;7350;0;f;f;f;7349;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7350;7351;0;f;f;f;7350;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7351;7352;0;f;f;f;7351;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7350;7352;2;f;f;t;0;a7c8cc18-f010-40ca-b766-55d160f224e4",
+			"7351;7352;2;f;f;t;0;65cd6633-218a-4a01-9686-ff049bc6b4bd",
+			"7352;7353;0;f;f;f;7352;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7353;7354;0;f;f;f;7353;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7354;7355;0;f;f;f;7354;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7354;7355;2;f;f;t;0;d9fa6adc-f671-46fe-bd19-a5115d17a4e8",
+			"7355;7356;0;f;f;f;7355;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7356;7357;0;f;f;f;7356;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7355;7357;2;f;f;t;0;cf8ba68c-51f7-4e52-8638-33c2c8c16fb4",
+			"7357;7358;0;f;f;f;7357;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7358;7359;0;f;f;f;7358;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7358;7359;2;f;f;t;0;36611521-b425-4a0e-bab3-bf746fee5a8a",
+			"7359;7360;0;f;f;f;7359;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7360;7361;0;f;f;f;7360;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7360;7361;2;f;f;t;0;12f921db-b1e8-4763-8c79-506524ddc809",
+			"7361;7362;0;f;f;f;7361;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7362;7363;0;f;f;f;7362;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7362;7363;2;f;f;t;0;cd61cd9a-6946-4d61-b6f5-6776cf0179fc",
+			"7363;7364;0;f;f;f;7363;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7364;7365;0;f;f;f;7364;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7364;7365;2;f;f;t;0;3ff5d70f-f200-4f67-aa37-73752d67f123",
+			"7365;7366;0;f;f;f;7365;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7366;7367;0;f;f;f;7366;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7366;7367;2;f;f;t;0;82add2a7-e543-482e-9b94-e0e37523146c",
+			"7367;7368;0;f;f;f;7367;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7368;7369;0;f;f;f;7368;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7368;7369;2;f;f;t;0;9b9de0ab-79b3-4217-9948-07d3a77a7ce6",
+			"7369;7370;0;f;f;f;7369;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7370;7371;0;f;f;f;7370;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7370;7371;2;f;f;t;0;756bfd1f-197a-486c-aa8b-00af6b77cc21",
+			"7371;7372;0;f;f;f;7371;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7372;7373;0;f;f;f;7372;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7372;7373;2;f;f;t;0;85cf698c-9d6e-413d-87ea-b7568c44d4d7",
+			"7373;7374;0;f;f;f;7373;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7374;7375;0;f;f;f;7374;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7373;7375;2;f;f;t;0;ac87dbd1-8ab2-4135-b5af-a457fc5d436d",
+			"7375;7376;0;f;f;f;7375;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7376;7377;0;f;f;f;7376;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7376;7377;2;f;f;t;0;12f3dc45-493d-48c0-9dd7-3d97c96aef9e",
+			"7377;7378;0;f;f;f;7377;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7378;7379;0;f;f;f;7378;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7378;7379;2;f;f;t;0;6198aee0-c0d7-4c5b-a9ac-a23e7cba4448",
+			"7379;7380;0;f;f;f;7379;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7380;7381;0;f;f;f;7380;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7380;7381;2;f;f;t;0;68a49603-790e-4a4b-9f4e-994fae4c3787",
+			"7381;7382;0;f;f;f;7381;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7382;7383;0;f;f;f;7382;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7382;7383;2;f;f;t;0;56154664-23bc-4d35-8c22-e6fe69b56d2d",
+			"7383;7384;0;f;f;f;7383;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7384;7385;0;f;f;f;7384;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7384;7385;2;f;f;t;0;14e2bf74-89fe-4f84-baa7-ffbb7c798ff2",
+			"7385;7386;0;f;f;f;7385;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7386;7387;0;f;f;f;7386;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7386;7387;2;f;f;t;0;846c417a-3061-4068-9815-a0b933d3c1c4",
+			"7387;7388;0;f;f;f;7387;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7388;7389;0;f;f;f;7388;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7388;7389;2;f;f;t;0;81678403-db3f-495e-99ba-da92001a5597",
+			"7389;7390;0;f;f;f;7389;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7390;7391;0;f;f;f;7390;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7390;7391;2;f;f;t;0;322123a5-155e-4339-810c-4a2cbebfa5e9",
+			"7391;7392;0;f;f;f;7391;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7392;7393;0;f;f;f;7392;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7392;7393;2;f;f;t;0;55fa97cd-a14c-44d5-b152-faa4c18527ff",
+			"7393;7394;0;f;f;f;7393;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7394;7395;0;f;f;f;7394;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7394;7395;2;f;f;t;0;8c7dc27d-2a00-46eb-a546-7e2fa34870be",
+			"7395;7396;0;f;f;f;7395;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7396;7397;0;f;f;f;7396;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7395;7397;2;f;f;t;0;8aab4fc2-0dc0-4923-8e59-f26c3d0143e8",
+			"7397;7398;0;f;f;f;7397;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7398;7399;0;f;f;f;7398;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7398;7399;2;f;f;t;0;dcaa1dc3-b836-44cc-9135-f5fec86f70bb",
+			"7399;7400;0;f;f;f;7399;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7400;7401;0;f;f;f;7400;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7400;7401;2;f;f;t;0;4fd54d21-2d35-423b-a7ea-b70122ce0b8a",
+			"7401;7402;0;f;f;f;7401;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7402;7403;0;f;f;f;7402;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7402;7403;2;f;f;t;0;447be62f-8d90-4f33-ba45-9079fd1c14a1",
+			"7403;7404;0;f;f;f;7403;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7404;7405;0;f;f;f;7404;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7403;7405;2;f;f;t;0;c263fbc7-07c3-4589-a0d7-afabc163c6ba",
+			"7405;7406;0;f;f;f;7405;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7406;7407;0;f;f;f;7406;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7407;7408;0;f;f;f;7407;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7406;7408;2;f;f;t;0;57ba6156-1f3b-40f5-9dc8-e9f31d8382de",
+			"7407;7408;2;f;f;t;0;c2dad4a6-9063-4639-96b0-dfe0f5133ae5",
+			"7408;7409;0;f;f;f;7408;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7409;7410;0;f;f;f;7409;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7410;7411;0;f;f;f;7410;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7411;7412;0;f;f;f;7411;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7410;7412;2;f;f;t;0;10abd2e0-55d8-43f3-a7c5-6181c094a08e",
+			"7411;7412;2;f;f;t;0;916e7629-a703-4e65-bb8c-26e632d2c7b9",
+			"7412;7413;0;f;f;f;7412;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7413;7414;0;f;f;f;7413;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7414;7415;0;f;f;f;7414;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7415;7416;0;f;f;f;7415;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7414;7416;2;f;f;t;0;b0ad5bdb-74ea-4c97-a3a4-cfd6a91c4b4c",
+			"7415;7416;2;f;f;t;0;70fb77cb-294f-4de2-a72d-cf2c31717231",
+			"7416;7417;0;f;f;f;7416;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7417;7418;0;f;f;f;7417;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7418;7419;0;f;f;f;7418;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7418;7419;2;f;f;t;0;a07b6c65-e2dc-4a1e-898a-4be9d13004a2",
+			"7419;7420;0;f;f;f;7419;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7420;7421;0;f;f;f;7420;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7419;7421;2;f;f;t;0;be5c3f71-a6b9-4e59-9d66-c9fff999267c",
+			"7421;7422;0;f;f;f;7421;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7422;7423;0;f;f;f;7422;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7422;7423;2;f;f;t;0;25dee78a-901e-40eb-ba0e-7b9e2a6dcb9d",
+			"7423;7424;0;f;f;f;7423;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7424;7425;0;f;f;f;7424;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7424;7425;2;f;f;t;0;b061a13f-ea1c-40a1-a599-c743651f00e2",
+			"7425;7426;0;f;f;f;7425;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7426;7427;0;f;f;f;7426;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7426;7427;2;f;f;t;0;1979aa64-9ae3-4e1b-ae95-5975a711df69",
+			"7427;7428;0;f;f;f;7427;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7428;7429;0;f;f;f;7428;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7428;7429;2;f;f;t;0;20ce14d7-668c-4e96-b534-52f10837400b",
+			"7429;7430;0;f;f;f;7429;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7430;7431;0;f;f;f;7430;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7430;7431;2;f;f;t;0;e6fdb82e-ecfa-4fd8-9857-7e967fd01c12",
+			"7431;7432;0;f;f;f;7431;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7432;7433;0;f;f;f;7432;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7432;7433;2;f;f;t;0;58f67941-81c2-4298-ba2d-8a464ce50dca",
+			"7433;7434;0;f;f;f;7433;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7434;7435;0;f;f;f;7434;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7434;7435;2;f;f;t;0;baae55d3-55e9-4f72-95a7-7ef74a7aab6b",
+			"7435;7436;0;f;f;f;7435;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7436;7437;0;f;f;f;7436;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7436;7437;2;f;f;t;0;6dbf7142-b9f4-4a6a-8567-e0e2273e109e",
+			"7437;7438;0;f;f;f;7437;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7438;7439;0;f;f;f;7438;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7438;7439;2;f;f;t;0;5fe16c87-b921-4ed4-af95-07ae0542ba2c",
+			"7439;7440;0;f;f;f;7439;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7440;7441;0;f;f;f;7440;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7440;7441;2;f;f;t;0;5b6adc6c-e922-4f43-81c3-f601321424b3",
+			"7441;7442;0;f;f;f;7441;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7442;7443;0;f;f;f;7442;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7442;7443;2;f;f;t;0;0c272df7-3888-4cca-bbd5-ee0351e7089c",
+			"7443;7444;0;f;f;f;7443;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7444;7445;0;f;f;f;7444;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7444;7445;2;f;f;t;0;45d86719-173b-4075-9d49-036d2180af06",
+			"7445;7446;0;f;f;f;7445;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7446;7447;0;f;f;f;7446;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7446;7447;2;f;f;t;0;8389e9a4-3bd0-4729-aa05-343d6f3f0832",
+			"7447;7448;0;f;f;f;7447;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7448;7449;0;f;f;f;7448;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7448;7449;2;f;f;t;0;c59e0eff-f7c4-4027-8286-e4d4d77b563c",
+			"7449;7450;0;f;f;f;7449;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7450;7451;0;f;f;f;7450;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7450;7451;2;f;f;t;0;94cdca31-202c-43e8-82a7-736444fbc83c",
+			"7451;7452;0;f;f;f;7451;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7452;7453;0;f;f;f;7452;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7451;7453;2;f;f;t;0;5b54ae27-0452-422d-8041-12d55ec1c95e",
+			"7453;7454;0;f;f;f;7453;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7454;7455;0;f;f;f;7454;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7454;7455;2;f;f;t;0;e8100d38-154e-4efa-9b4f-68716dfd50fc",
+			"7455;7456;0;f;f;f;7455;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7456;7457;0;f;f;f;7456;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7456;7457;2;f;f;t;0;3a124e12-115f-4374-b8e8-4f78fa3b3f4f",
+			"7457;7458;0;f;f;f;7457;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7458;7459;0;f;f;f;7458;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7458;7459;2;f;f;t;0;ad17d6b4-7bfc-4e50-b056-5c6df12f683a",
+			"7459;7460;0;f;f;f;7459;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7460;7461;0;f;f;f;7460;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7460;7461;2;f;f;t;0;1462f881-5ad4-4843-88ba-da4d8ee3fbdc",
+			"7461;7462;0;f;f;f;7461;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7462;7463;0;f;f;f;7462;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7462;7463;2;f;f;t;0;7c510855-2fe2-41bb-8f84-90cc3ee332db",
+			"7463;7464;0;f;f;f;7463;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7464;7465;0;f;f;f;7464;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7464;7465;2;f;f;t;0;26f52abd-173e-4c5c-9168-540819b963a7",
+			"7465;7466;0;f;f;f;7465;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7466;7467;0;f;f;f;7466;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7466;7467;2;f;f;t;0;83449a6f-2a65-4337-b1ae-6172191f18c0",
+			"7467;7468;0;f;f;f;7467;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7468;7469;0;f;f;f;7468;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7468;7469;2;f;f;t;0;1d562a6b-ce03-40c5-b4e8-a9874a05fee9",
+			"7469;7470;0;f;f;f;7469;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7470;7471;0;f;f;f;7470;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7470;7471;2;f;f;t;0;f515a600-1308-4d9b-9c7a-ee8dc9e69e89",
+			"7471;7472;0;f;f;f;7471;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7472;7473;0;f;f;f;7472;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7472;7473;2;f;f;t;0;82a940f4-3a59-4b63-baf6-27ae8ca4d2d5",
+			"7473;7474;0;f;f;f;7473;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7474;7475;0;f;f;f;7474;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7474;7475;2;f;f;t;0;e28585c7-1ebf-4fda-a11b-092b7f1943a8",
+			"7475;7476;0;f;f;f;7475;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7476;7477;0;f;f;f;7476;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7476;7477;2;f;f;t;0;9854e866-1c81-48e0-816e-0d2ec680ffde",
+			"7477;7478;0;f;f;f;7477;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7478;7479;0;f;f;f;7478;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7478;7479;2;f;f;t;0;43b32f3c-3dca-44e5-b417-2c5915335b05",
+			"7479;7480;0;f;f;f;7479;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7480;7481;0;f;f;f;7480;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7480;7481;2;f;f;t;0;7d4ae655-81f9-4629-9337-621feab0dbf0",
+			"7481;7482;0;f;f;f;7481;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7482;7483;0;f;f;f;7482;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7481;7483;2;f;f;t;0;1ae4ee03-c425-45e4-8bed-d92ae95ae5d9",
+			"7483;7484;0;f;f;f;7483;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7484;7485;0;f;f;f;7484;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7484;7485;2;f;f;t;0;1d2075e7-bb66-4eb6-814a-23f07ca16064",
+			"7485;7486;0;f;f;f;7485;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7486;7487;0;f;f;f;7486;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7486;7487;2;f;f;t;0;e321e651-db25-49c0-911e-7d2d58f1bd6f",
+			"7487;7488;0;f;f;f;7487;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7488;7489;0;f;f;f;7488;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7488;7489;2;f;f;t;0;35596d0a-179b-4584-a5b2-2919866e65a7",
+			"7489;7490;0;f;f;f;7489;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7490;7491;0;f;f;f;7490;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7490;7491;2;f;f;t;0;7009d956-a507-48f7-abc0-43540468c9a4",
+			"7491;7492;0;f;f;f;7491;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7492;7493;0;f;f;f;7492;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7492;7493;2;f;f;t;0;0ce018ad-7d9d-4918-836c-3eec18fe94ef",
+			"7493;7494;0;f;f;f;7493;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7494;7495;0;f;f;f;7494;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7493;7495;2;f;f;t;0;ab6b8c8c-07c6-44fe-ad0a-4fab1f6cf219",
+			"7495;7496;0;f;f;f;7495;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7496;7497;0;f;f;f;7496;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7496;7497;2;f;f;t;0;b949e508-32b7-4f96-986f-8ecd8ec606e8",
+			"7497;7498;0;f;f;f;7497;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7498;7499;0;f;f;f;7498;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7497;7499;2;f;f;t;0;b853cc77-7ce0-4c83-989e-2b39666e50bd",
+			"7499;7500;0;f;f;f;7499;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7500;7501;0;f;f;f;7500;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7500;7501;2;f;f;t;0;04dd0801-9892-49c3-beb7-5b62be5f4853",
+			"7501;7502;0;f;f;f;7501;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7502;7503;0;f;f;f;7502;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7501;7503;2;f;f;t;0;4d0b085f-5bc8-4bc7-9eb2-1074de9fec97",
+			"7503;7504;0;f;f;f;7503;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7504;7505;0;f;f;f;7504;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7504;7505;2;f;f;t;0;4bcd8741-113f-4544-8877-290c3e578c9d",
+			"7505;7506;0;f;f;f;7505;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7506;7507;0;f;f;f;7506;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7506;7507;2;f;f;t;0;a81a6c1d-4771-49e7-8908-2a68ac256029",
+			"7507;7508;0;f;f;f;7507;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7508;7509;0;f;f;f;7508;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7508;7509;2;f;f;t;0;3747fede-decd-4291-a9cc-302f33030f15",
+			"7509;7510;0;f;f;f;7509;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7510;7511;0;f;f;f;7510;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7510;7511;2;f;f;t;0;c82f7f44-3050-4bb8-ba45-b468f21eeb1f",
+			"7511;7512;0;f;f;f;7511;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7512;7513;0;f;f;f;7512;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7512;7513;2;f;f;t;0;d395b712-5721-48e9-b465-b6f1bcc8f6e3",
+			"7513;7514;0;f;f;f;7513;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7514;7515;0;f;f;f;7514;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7514;7515;2;f;f;t;0;dc3fc479-de88-4aea-9efd-e133dbef3d78",
+			"7515;7516;0;f;f;f;7515;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7516;7517;0;f;f;f;7516;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7516;7517;2;f;f;t;0;57e35db4-aaf3-41be-9c5f-844157942425",
+			"7517;7518;0;f;f;f;7517;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7518;7519;0;f;f;f;7518;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7518;7519;2;f;f;t;0;b6db7bbb-a097-422a-9987-bcf92c9e7185",
+			"7519;7520;0;f;f;f;7519;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7520;7521;0;f;f;f;7520;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7520;7521;2;f;f;t;0;19ac7336-dec3-4c9f-aa77-aaf79bc52f7d",
+			"7521;7522;0;f;f;f;7521;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7522;7523;0;f;f;f;7522;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7522;7523;2;f;f;t;0;a746a164-19de-493d-a310-16cfdfa2e7c2",
+			"7523;7524;0;f;f;f;7523;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7524;7525;0;f;f;f;7524;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7524;7525;2;f;f;t;0;152e22e7-80c9-4212-b808-1bb1d1464095",
+			"7525;7526;0;f;f;f;7525;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7526;7527;0;f;f;f;7526;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7526;7527;2;f;f;t;0;9a0b72d9-8811-467f-8bf2-033aaa23c80a",
+			"7527;7528;0;f;f;f;7527;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7528;7529;0;f;f;f;7528;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7528;7529;2;f;f;t;0;f02db664-b67a-4d5d-a042-470315f1f868",
+			"7529;7530;0;f;f;f;7529;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7530;7531;0;f;f;f;7530;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7530;7531;2;f;f;t;0;1812fdc5-9ef1-45a8-bd94-a44087a54ef5",
+			"7531;7532;0;f;f;f;7531;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7532;7533;0;f;f;f;7532;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7532;7533;2;f;f;t;0;0b1e34c9-3be8-4edc-9de0-066ce968d06e",
+			"7533;7534;0;f;f;f;7533;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7534;7535;0;f;f;f;7534;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7534;7535;2;f;f;t;0;ffa194f0-2148-424b-8865-4d9b4187362d",
+			"7535;7536;0;f;f;f;7535;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7536;7537;0;f;f;f;7536;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7536;7537;2;f;f;t;0;110f44ac-4689-4854-aef6-b56691e3cebc",
+			"7537;7538;0;f;f;f;7537;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7538;7539;0;f;f;f;7538;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7538;7539;2;f;f;t;0;92989081-f1bd-40be-b35b-6e83b47a3552",
+			"7539;7540;0;f;f;f;7539;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7540;7541;0;f;f;f;7540;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7540;7541;2;f;f;t;0;43a39c84-9421-46a4-9b8f-46aba9ba59d5",
+			"7541;7542;0;f;f;f;7541;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7542;7543;0;f;f;f;7542;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7542;7543;2;f;f;t;0;9938a611-7855-4899-84f8-b67dddbdd277",
+			"7543;7544;0;f;f;f;7543;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7544;7545;0;f;f;f;7544;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7544;7545;2;f;f;t;0;113712ee-6cfe-4200-90da-9d84c0ed7f47",
+			"7545;7546;0;f;f;f;7545;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7546;7547;0;f;f;f;7546;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7546;7547;2;f;f;t;0;a62361bc-8045-4f90-a687-6005c623267f",
+			"7547;7548;0;f;f;f;7547;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7548;7549;0;f;f;f;7548;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7548;7549;2;f;f;t;0;ab4eaad7-9f73-4d06-85f2-601e56cc763e",
+			"7549;7550;0;f;f;f;7549;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7550;7551;0;f;f;f;7550;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7550;7551;2;f;f;t;0;ae71a8eb-6567-439f-8105-27cab7641152",
+			"7551;7552;0;f;f;f;7551;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7552;7553;0;f;f;f;7552;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7552;7553;2;f;f;t;0;cfecdeb8-5b32-49f9-b8a3-733e70952b92",
+			"7553;7554;0;f;f;f;7553;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7554;7555;0;f;f;f;7554;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7554;7555;2;f;f;t;0;7bc07176-e3b1-407d-9feb-f4f8809f6e1a",
+			"7555;7556;0;f;f;f;7555;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7556;7557;0;f;f;f;7556;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7556;7557;2;f;f;t;0;5505fb89-2053-49cb-b0b2-8cd43f76d4a0",
+			"7557;7558;0;f;f;f;7557;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7558;7559;0;f;f;f;7558;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7558;7559;2;f;f;t;0;9f9e2185-f321-4745-a07f-36735e3a37da",
+			"7559;7560;0;f;f;f;7559;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7560;7561;0;f;f;f;7560;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7560;7561;2;f;f;t;0;c53867fb-154a-443d-81e9-cfae567d5be3",
+			"7561;7562;0;f;f;f;7561;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7562;7563;0;f;f;f;7562;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7562;7563;2;f;f;t;0;8012bf85-7b37-41e5-9ecf-f3d9f093645e",
+			"7563;7564;0;f;f;f;7563;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7564;7565;0;f;f;f;7564;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7564;7565;2;f;f;t;0;c79cc733-7d86-4dbf-a818-b256bc606151",
+			"7565;7566;0;f;f;f;7565;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7566;7567;0;f;f;f;7566;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7566;7567;2;f;f;t;0;96c6383e-0d02-405d-bb85-5b7a58121262",
+			"7567;7568;0;f;f;f;7567;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7568;7569;0;f;f;f;7568;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7568;7569;2;f;f;t;0;0741d398-482a-4a41-a6fa-476a44470b4c",
+			"7569;7570;0;f;f;f;7569;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7570;7571;0;f;f;f;7570;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7570;7571;2;f;f;t;0;671f4579-feb7-4c8d-bccb-bd3222f88515",
+			"7571;7572;0;f;f;f;7571;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7572;7573;0;f;f;f;7572;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7572;7573;2;f;f;t;0;69481acd-cba3-40d0-849d-b4a1ea98c778",
+			"7573;7574;0;f;f;f;7573;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7574;7575;0;f;f;f;7574;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7574;7575;2;f;f;t;0;5dafaff5-e4f2-4eb0-ad09-2f1041a3f62b",
+			"7575;7576;0;f;f;f;7575;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7576;7577;0;f;f;f;7576;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7576;7577;2;f;f;t;0;48f38ac4-68b2-413f-bb16-1ae5384b238a",
+			"7577;7578;0;f;f;f;7577;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7578;7579;0;f;f;f;7578;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7578;7579;2;f;f;t;0;756ab397-74e8-496c-8d6e-76dafdc7bba7",
+			"7579;7580;0;f;f;f;7579;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7580;7581;0;f;f;f;7580;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7580;7581;2;f;f;t;0;538a619b-71f6-433a-b778-f76403e0557b",
+			"7581;7582;0;f;f;f;7581;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7582;7583;0;f;f;f;7582;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7582;7583;2;f;f;t;0;d7d32895-d142-45c1-8fc8-93d1d4fffeab",
+			"7583;7584;0;f;f;f;7583;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7584;7585;0;f;f;f;7584;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7584;7585;2;f;f;t;0;d441543e-a877-4b1b-8d27-792ef448186d",
+			"7585;7586;0;f;f;f;7585;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7586;7587;0;f;f;f;7586;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7586;7587;2;f;f;t;0;3d6477e1-ca78-4ac6-aee2-443439a952cc",
+			"7587;7588;0;f;f;f;7587;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7588;7589;0;f;f;f;7588;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7588;7589;2;f;f;t;0;be00d860-3cd5-4d39-becb-32a16bcba83b",
+			"7589;7590;0;f;f;f;7589;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7590;7591;0;f;f;f;7590;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7590;7591;2;f;f;t;0;fbd92adc-cde7-4c4e-9577-e884aaac1093",
+			"7591;7592;0;f;f;f;7591;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7592;7593;0;f;f;f;7592;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7592;7593;2;f;f;t;0;22226b8f-97e3-4352-9d40-5a7e504dc23c",
+			"7593;7594;0;f;f;f;7593;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7594;7595;0;f;f;f;7594;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7594;7595;2;f;f;t;0;b33205e2-52d4-4148-897d-5add943e4c19",
+			"7595;7596;0;f;f;f;7595;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7596;7597;0;f;f;f;7596;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7596;7597;2;f;f;t;0;513561a7-ebc9-4623-9938-b77ab7baf884",
+			"7597;7598;0;f;f;f;7597;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7598;7599;0;f;f;f;7598;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7598;7599;2;f;f;t;0;a8394f54-49bc-497a-984f-0b1db68bfdaf",
+			"7599;7600;0;f;f;f;7599;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7600;7601;0;f;f;f;7600;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7599;7601;2;f;f;t;0;04f0ba99-4767-4e31-93dd-5493c31d9200",
+			"7601;7602;0;f;f;f;7601;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7602;7603;0;f;f;f;7602;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7602;7603;2;f;f;t;0;05c41e41-eb13-43c7-b1c1-5f92d67b0e13",
+			"7603;7604;0;f;f;f;7603;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7604;7605;0;f;f;f;7604;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7604;7605;2;f;f;t;0;a62316bb-9d11-48d7-b02b-dfd02cf32151",
+			"7605;7606;0;f;f;f;7605;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7606;7607;0;f;f;f;7606;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7606;7607;2;f;f;t;0;0fb618fd-1b0c-436d-8508-ae89bd1c6f80",
+			"7607;7608;0;f;f;f;7607;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7608;7609;0;f;f;f;7608;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7608;7609;2;f;f;t;0;a311294e-b37b-44cc-a5fc-692e6c2cebe7",
+			"7609;7610;0;f;f;f;7609;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7610;7611;0;f;f;f;7610;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7610;7611;2;f;f;t;0;388aeb65-f03b-4524-8160-153902bab11b",
+			"7611;7612;0;f;f;f;7611;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7612;7613;0;f;f;f;7612;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7612;7613;2;f;f;t;0;de8f7e41-7f21-496b-a160-c96e293b7cc0",
+			"7613;7614;0;f;f;f;7613;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7614;7615;0;f;f;f;7614;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7614;7615;2;f;f;t;0;2e2d72a4-e091-4391-9b78-13e597fec794",
+			"7615;7616;0;f;f;f;7615;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7616;7617;0;f;f;f;7616;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7616;7617;2;f;f;t;0;a751f2d5-02d3-4738-94a3-7c9c97dfe89a",
+			"7617;7618;0;f;f;f;7617;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7618;7619;0;f;f;f;7618;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7618;7619;2;f;f;t;0;a068c2b1-4b33-4e21-aae1-c36f6a8758cb",
+			"7619;7620;0;f;f;f;7619;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7620;7621;0;f;f;f;7620;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7620;7621;2;f;f;t;0;a623e8ec-1227-4d2e-b1b9-d1300486f832",
+			"7621;7622;0;f;f;f;7621;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7622;7623;0;f;f;f;7622;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7622;7623;2;f;f;t;0;f0321d1c-7a73-4b52-93f2-fb9d0b8f717c",
+			"7623;7624;0;f;f;f;7623;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7624;7625;0;f;f;f;7624;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7624;7625;2;f;f;t;0;935ddd57-ab5b-4c76-bf6d-87874604850d",
+			"7625;7626;0;f;f;f;7625;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7626;7627;0;f;f;f;7626;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7626;7627;2;f;f;t;0;c465dd9c-acee-40d3-b6fd-1db814cbc7ae",
+			"7627;7628;0;f;f;f;7627;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7628;7629;0;f;f;f;7628;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7628;7629;2;f;f;t;0;cd6a8191-e24a-4f4e-8197-aeaeb9c73827",
+			"7629;7630;0;f;f;f;7629;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7630;7631;0;f;f;f;7630;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7630;7631;2;f;f;t;0;85888a08-1267-4010-a025-05830b773089",
+			"7631;7632;0;f;f;f;7631;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7632;7633;0;f;f;f;7632;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7632;7633;2;f;f;t;0;482be7cb-6be9-4e7b-9b36-54257ffe955d",
+			"7633;7634;0;f;f;f;7633;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7634;7635;0;f;f;f;7634;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7634;7635;2;f;f;t;0;113e93b3-b5ae-4f70-ad56-ff12b0a7a9b4",
+			"7635;7636;0;f;f;f;7635;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7636;7637;0;f;f;f;7636;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7636;7637;2;f;f;t;0;8b010dd8-e92f-440e-be60-a5f334d6ee8c",
+			"7637;7638;0;f;f;f;7637;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7638;7639;0;f;f;f;7638;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7638;7639;2;f;f;t;0;b1c384e1-e3de-4536-adb3-ddd258ad680b",
+			"7639;7640;0;f;f;f;7639;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7640;7641;0;f;f;f;7640;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7640;7641;2;f;f;t;0;78225f5b-090d-43f6-8f3c-e7f7203f74ad",
+			"7641;7642;0;f;f;f;7641;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7642;7643;0;f;f;f;7642;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7641;7643;2;f;f;t;0;b6ba4ab6-c98e-4eab-bf43-5d53a2742a2c",
+			"7643;7644;0;f;f;f;7643;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7644;7645;0;f;f;f;7644;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7644;7645;2;f;f;t;0;2f2d91fb-5fcf-4f8c-a3de-5b5ef647a39a",
+			"7645;7646;0;f;f;f;7645;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7646;7647;0;f;f;f;7646;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7646;7647;2;f;f;t;0;dd2ab6c9-b866-43ec-91b9-f51c7288a5eb",
+			"7647;7648;0;f;f;f;7647;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7648;7649;0;f;f;f;7648;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7648;7649;2;f;f;t;0;57324904-7ac8-4ddc-b789-e05b6a3ed27b",
+			"7649;7650;0;f;f;f;7649;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7650;7651;0;f;f;f;7650;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7650;7651;2;f;f;t;0;030a8d38-69f6-4bc2-a450-43d3d2882470",
+			"7651;7652;0;f;f;f;7651;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7652;7653;0;f;f;f;7652;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7652;7653;2;f;f;t;0;cfac162f-c7fe-4b38-9d8f-df4819ed8432",
+			"7653;7654;0;f;f;f;7653;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7654;7655;0;f;f;f;7654;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7654;7655;2;f;f;t;0;6ca91759-7aea-4a1a-a99e-006e0076074a",
+			"7655;7656;0;f;f;f;7655;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7656;7657;0;f;f;f;7656;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7656;7657;2;f;f;t;0;faabec1c-ce15-40ed-9594-7a95ed10e08e",
+			"7657;7658;0;f;f;f;7657;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7658;7659;0;f;f;f;7658;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7658;7659;2;f;f;t;0;164f682a-edcf-4280-a076-f9506df76293",
+			"7659;7660;0;f;f;f;7659;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7660;7661;0;f;f;f;7660;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7660;7661;2;f;f;t;0;2488cdf7-9846-475d-bc7f-fe647db41b59",
+			"7661;7662;0;f;f;f;7661;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7662;7663;0;f;f;f;7662;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7662;7663;2;f;f;t;0;941f225b-ad07-47e1-ab5b-c55f54621a4d",
+			"7663;7664;0;f;f;f;7663;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7664;7665;0;f;f;f;7664;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7664;7665;2;f;f;t;0;a52a0ddf-2ef2-4d3e-a4d3-473bed245a09",
+			"7665;7666;0;f;f;f;7665;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7666;7667;0;f;f;f;7666;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7666;7667;2;f;f;t;0;a6c4f423-de37-4f35-9a3b-7e46d94ecc83",
+			"7667;7668;0;f;f;f;7667;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7668;7669;0;f;f;f;7668;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7668;7669;2;f;f;t;0;e70e9511-772a-455f-94e8-645b0adbcc68",
+			"7669;7670;0;f;f;f;7669;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7670;7671;0;f;f;f;7670;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7670;7671;2;f;f;t;0;89b26b77-19e2-4fb0-aaef-51d06ef647a3",
+			"7671;7672;0;f;f;f;7671;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7672;7673;0;f;f;f;7672;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7672;7673;2;f;f;t;0;3b4fad55-3343-47cf-b3d8-13fbf028fa1b",
+			"7673;7674;0;f;f;f;7673;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7674;7675;0;f;f;f;7674;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7674;7675;2;f;f;t;0;173a5b61-a7d1-4a70-9cb7-144bdbc07804",
+			"7675;7676;0;f;f;f;7675;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7676;7677;0;f;f;f;7676;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7676;7677;2;f;f;t;0;5db70592-a746-4c14-9bf4-1c4c6ed76b81",
+			"7677;7678;0;f;f;f;7677;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7678;7679;0;f;f;f;7678;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7678;7679;2;f;f;t;0;d3dc4e35-eaea-41be-b7e6-e11902086d10",
+			"7679;7680;0;f;f;f;7679;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7680;7681;0;f;f;f;7680;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7680;7681;2;f;f;t;0;8f98dc40-ffec-4686-84d4-e56e4d34d272",
+			"7681;7682;0;f;f;f;7681;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7682;7683;0;f;f;f;7682;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7682;7683;2;f;f;t;0;9df9394e-54e2-4a5c-bca8-49ce81c33b36",
+			"7683;7684;0;f;f;f;7683;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7684;7685;0;f;f;f;7684;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7684;7685;2;f;f;t;0;69a8c939-4472-4228-96cc-0074f9a608ab",
+			"7685;7686;0;f;f;f;7685;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7686;7687;0;f;f;f;7686;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7686;7687;2;f;f;t;0;f1a85eb8-c5ba-4b25-9037-1ac326c7b195",
+			"7687;7688;0;f;f;f;7687;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7688;7689;0;f;f;f;7688;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7688;7689;2;f;f;t;0;d98afd5d-2959-41c0-a56e-8bc8ad88b42d",
+			"7689;7690;0;f;f;f;7689;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7690;7691;0;f;f;f;7690;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7690;7691;2;f;f;t;0;d5ff49f9-38e7-46e8-96b6-89cf7e6edcbc",
+			"7691;7692;0;f;f;f;7691;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7692;7693;0;f;f;f;7692;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7692;7693;2;f;f;t;0;bdfab295-179f-4211-86d0-1f27f6d1197d",
+			"7693;7694;0;f;f;f;7693;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7694;7695;0;f;f;f;7694;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7694;7695;2;f;f;t;0;27964485-820e-4ff5-98f2-1012fffe7012",
+			"7695;7696;0;f;f;f;7695;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7696;7697;0;f;f;f;7696;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7696;7697;2;f;f;t;0;cd5cf3cd-c240-4a0f-96cc-e46630088e08",
+			"7697;7698;0;f;f;f;7697;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7698;7699;0;f;f;f;7698;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7698;7699;2;f;f;t;0;721eefbb-c473-4d8f-bff7-edbb741cbd1b",
+			"7699;7700;0;f;f;f;7699;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7700;7701;0;f;f;f;7700;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7700;7701;2;f;f;t;0;6c942aaf-a9d4-488c-a40b-b5da864fac07",
+			"7701;7702;0;f;f;f;7701;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7702;7703;0;f;f;f;7702;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7702;7703;2;f;f;t;0;5bbcfcc4-51e1-4e31-afcf-2d74d4409a29",
+			"7703;7704;0;f;f;f;7703;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7704;7705;0;f;f;f;7704;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7704;7705;2;f;f;t;0;bd76f7d4-fd66-41ca-8de3-c5871815b66f",
+			"7705;7706;0;f;f;f;7705;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7706;7707;0;f;f;f;7706;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7707;7708;0;f;f;f;7707;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7706;7708;2;f;f;t;0;0ca4511a-f0ec-4c39-b12d-4ccf0faacd05",
+			"7707;7708;2;f;f;t;0;cd609ae4-82a3-4341-a74d-a637cb9756fc",
+			"7708;7709;0;f;f;f;7708;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7709;7710;0;f;f;f;7709;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7710;7711;0;f;f;f;7710;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7710;7711;2;f;f;t;0;cd5473cc-4832-480d-a787-ce1d8ee05129",
+			"7711;7712;0;f;f;f;7711;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7712;7713;0;f;f;f;7712;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7711;7713;2;f;f;t;0;e480c1c8-923e-49be-a6f9-090188427296",
+			"7713;7714;0;f;f;f;7713;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7714;7715;0;f;f;f;7714;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7714;7715;2;f;f;t;0;a40af70f-b73b-413a-aebc-2bea5b93106a",
+			"7715;7716;0;f;f;f;7715;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7716;7717;0;f;f;f;7716;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7716;7717;2;f;f;t;0;b6e63b8d-485e-4183-b13d-da95b42731e1",
+			"7717;7718;0;f;f;f;7717;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7718;7719;0;f;f;f;7718;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7718;7719;2;f;f;t;0;65f46dda-5c30-451e-8e3c-3962db7d70e9",
+			"7719;7720;0;f;f;f;7719;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7720;7721;0;f;f;f;7720;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7720;7721;2;f;f;t;0;3e68c99e-a763-45af-895a-a1a4c3a41fe2",
+			"7721;7722;0;f;f;f;7721;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7722;7723;0;f;f;f;7722;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7722;7723;2;f;f;t;0;1e0452ec-7447-4b98-9164-4ba2d6aa74b2",
+			"7723;7724;0;f;f;f;7723;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7724;7725;0;f;f;f;7724;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7724;7725;2;f;f;t;0;dee610fc-d855-475b-8eb4-0400a0510053",
+			"7725;7726;0;f;f;f;7725;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7726;7727;0;f;f;f;7726;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7726;7727;2;f;f;t;0;d6499c1f-7e6d-4e59-8e17-913668de466e",
+			"7727;7728;0;f;f;f;7727;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7728;7729;0;f;f;f;7728;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7728;7729;2;f;f;t;0;e8c64e1a-61db-4728-b58c-82726abdf17b",
+			"7729;7730;0;f;f;f;7729;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7730;7731;0;f;f;f;7730;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7730;7731;2;f;f;t;0;6c023d2b-ffd0-479c-b5d0-476ea807c583",
+			"7731;7732;0;f;f;f;7731;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7732;7733;0;f;f;f;7732;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7732;7733;2;f;f;t;0;d4e28fd1-86b8-458d-a82b-9b0761f75385",
+			"7733;7734;0;f;f;f;7733;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7734;7735;0;f;f;f;7734;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7734;7735;2;f;f;t;0;25703730-f828-4e66-8c7d-2805ff0427d3",
+			"7735;7736;0;f;f;f;7735;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7736;7737;0;f;f;f;7736;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7736;7737;2;f;f;t;0;b4a5d9aa-94bc-444a-ba77-a9d14d331fca",
+			"7737;7738;0;f;f;f;7737;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7738;7739;0;f;f;f;7738;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7738;7739;2;f;f;t;0;a4e6d3d0-1074-4637-822b-9f2a7b32ebb5",
+			"7739;7740;0;f;f;f;7739;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7740;7741;0;f;f;f;7740;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7740;7741;2;f;f;t;0;a3b32990-ea72-4e6a-8275-94724975ad7c",
+			"7741;7742;0;f;f;f;7741;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7742;7743;0;f;f;f;7742;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7742;7743;2;f;f;t;0;8e03d265-9a1f-41ab-a334-f8a16c3a5be2",
+			"7743;7744;0;f;f;f;7743;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7744;7745;0;f;f;f;7744;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7743;7745;2;f;f;t;0;cb9241a1-7924-4418-a7ad-0873f448dbcb",
+			"7745;7746;0;f;f;f;7745;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7746;7747;0;f;f;f;7746;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7746;7747;2;f;f;t;0;50e2115f-a890-4815-9f95-7e0b96af91d6",
+			"7747;7748;0;f;f;f;7747;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7748;7749;0;f;f;f;7748;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7748;7749;2;f;f;t;0;7b9f5f5f-b012-43b6-8ab4-8c07a1cb8a60",
+			"7749;7750;0;f;f;f;7749;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7750;7751;0;f;f;f;7750;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7750;7751;2;f;f;t;0;fbbd1390-7bae-4222-b6fa-953b6a344c54",
+			"7751;7752;0;f;f;f;7751;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7752;7753;0;f;f;f;7752;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7752;7753;2;f;f;t;0;9a9dea7a-93d9-4740-9da4-cfa3601260ef",
+			"7753;7754;0;f;f;f;7753;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7754;7755;0;f;f;f;7754;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7754;7755;2;f;f;t;0;98a2f738-4616-4dc7-8497-1ab61470c758",
+			"7755;7756;0;f;f;f;7755;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7756;7757;0;f;f;f;7756;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7756;7757;2;f;f;t;0;551edc60-3d81-4d04-b943-5f232c4b7d31",
+			"7757;7758;0;f;f;f;7757;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7758;7759;0;f;f;f;7758;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7758;7759;2;f;f;t;0;12bc6810-30bb-4bc1-bb2a-8e28268b45d0",
+			"7759;7760;0;f;f;f;7759;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7760;7761;0;f;f;f;7760;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7760;7761;2;f;f;t;0;6e226685-300c-4855-964d-56ab722f9d83",
+			"7761;7762;0;f;f;f;7761;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7762;7763;0;f;f;f;7762;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7762;7763;2;f;f;t;0;9a95d8e4-e8db-4150-be24-bcff602b5183",
+			"7763;7764;0;f;f;f;7763;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7764;7765;0;f;f;f;7764;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7764;7765;2;f;f;t;0;953b3b33-48f3-4c7d-8695-14c18c60a111",
+			"7765;7766;0;f;f;f;7765;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7766;7767;0;f;f;f;7766;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7766;7767;2;f;f;t;0;6442e9bd-00f7-4f7c-8739-c0690a4c792a",
+			"7767;7768;0;f;f;f;7767;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7768;7769;0;f;f;f;7768;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7768;7769;2;f;f;t;0;113af18c-0aab-4ba5-a98a-9d52d37e80ea",
+			"7769;7770;0;f;f;f;7769;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7770;7771;0;f;f;f;7770;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7770;7771;2;f;f;t;0;fbb1f442-6c8c-4b41-90d8-1d4b6deeedfe",
+			"7771;7772;0;f;f;f;7771;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7772;7773;0;f;f;f;7772;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7772;7773;2;f;f;t;0;778e76f1-4d60-4361-9336-693bc51f1834",
+			"7773;7774;0;f;f;f;7773;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7774;7775;0;f;f;f;7774;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7774;7775;2;f;f;t;0;ca194e05-4fac-40df-b18b-aca55243fe35",
+			"7775;7776;0;f;f;f;7775;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7776;7777;0;f;f;f;7776;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7776;7777;2;f;f;t;0;62ca73dc-2478-416e-ab63-3f386bf91dc9",
+			"7777;7778;0;f;f;f;7777;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7778;7779;0;f;f;f;7778;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7778;7779;2;f;f;t;0;636190ec-5807-4749-b838-052ce2ab17a6",
+			"7779;7780;0;f;f;f;7779;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7780;7781;0;f;f;f;7780;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7780;7781;2;f;f;t;0;93e11375-0c41-4024-9089-b6e75f4b39cb",
+			"7781;7782;0;f;f;f;7781;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7782;7783;0;f;f;f;7782;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7782;7783;2;f;f;t;0;f96a195b-b740-4116-8bdb-fae29c9b3929",
+			"7783;7784;0;f;f;f;7783;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7784;7785;0;f;f;f;7784;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7784;7785;2;f;f;t;0;0bbeb8b1-f7ba-4ff0-894c-e752a15e6258",
+			"7785;7786;0;f;f;f;7785;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7786;7787;0;f;f;f;7786;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7786;7787;2;f;f;t;0;53891ee1-00da-4098-9d5d-01f4ac985519",
+			"7787;7788;0;f;f;f;7787;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7788;7789;0;f;f;f;7788;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7788;7789;2;f;f;t;0;b40fa6c1-58f7-46ac-b321-4ef88c35ecec",
+			"7789;7790;0;f;f;f;7789;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7790;7791;0;f;f;f;7790;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7790;7791;2;f;f;t;0;43009936-504b-4d7e-8871-e908b25fb272",
+			"7791;7792;0;f;f;f;7791;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7792;7793;0;f;f;f;7792;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7792;7793;2;f;f;t;0;b2219a55-e1e8-45b3-862a-03a13e442f40",
+			"7793;7794;0;f;f;f;7793;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7794;7795;0;f;f;f;7794;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7794;7795;2;f;f;t;0;b22b302f-6797-450d-ae92-2fadef05859e",
+			"7795;7796;0;f;f;f;7795;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7796;7797;0;f;f;f;7796;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7796;7797;2;f;f;t;0;e0746b24-7d37-43f7-9365-3e7cddd6106f",
+			"7797;7798;0;f;f;f;7797;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7798;7799;0;f;f;f;7798;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7798;7799;2;f;f;t;0;be2534fb-12f2-49ed-b3e2-b1fbdccaeebd",
+			"7799;7800;0;f;f;f;7799;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7800;7801;0;f;f;f;7800;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7800;7801;2;f;f;t;0;3069f41c-e7de-440b-92f4-8b00eb52e5f4",
+			"7801;7802;0;f;f;f;7801;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7802;7803;0;f;f;f;7802;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7802;7803;2;f;f;t;0;9ea435d3-62d1-4994-9807-1f76251cfeef",
+			"7803;7804;0;f;f;f;7803;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7804;7805;0;f;f;f;7804;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7804;7805;2;f;f;t;0;3c5013a3-6d8a-48fe-903f-88aebc5587eb",
+			"7805;7806;0;f;f;f;7805;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7806;7807;0;f;f;f;7806;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7806;7807;2;f;f;t;0;ec136813-be91-411a-b25d-91da2f43d59d",
+			"7807;7808;0;f;f;f;7807;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7808;7809;0;f;f;f;7808;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7808;7809;2;f;f;t;0;c19d2a2c-5001-4ed3-828f-489003caf403",
+			"7809;7810;0;f;f;f;7809;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7810;7811;0;f;f;f;7810;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7810;7811;2;f;f;t;0;ee47ec48-60d9-4361-9c92-6c2c100957e2",
+			"7811;7812;0;f;f;f;7811;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7812;7813;0;f;f;f;7812;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7812;7813;2;f;f;t;0;aaa6c01f-7939-46d1-b383-e8e59363c701",
+			"7813;7814;0;f;f;f;7813;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7814;7815;0;f;f;f;7814;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7814;7815;2;f;f;t;0;51dc0d97-6a71-477b-a54e-683985e6d4b7",
+			"7815;7816;0;f;f;f;7815;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7816;7817;0;f;f;f;7816;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7817;7818;0;f;f;f;7817;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7816;7818;2;f;f;t;0;a9ee15f5-ab90-4875-9860-f440a87c40ed",
+			"7817;7818;2;f;f;t;0;13fcbd0f-e2e7-4dd2-9851-8d00dccbf0f4",
+			"7818;7819;0;f;f;f;7818;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7819;7820;0;f;f;f;7819;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7820;7821;0;f;f;f;7820;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7820;7821;2;f;f;t;0;552f84d3-2fbe-4d79-98bb-84ad500e1208",
+			"7821;7822;0;f;f;f;7821;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7822;7823;0;f;f;f;7822;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7821;7823;2;f;f;t;0;6bd0932a-a124-4d5c-a670-230a4ef2de43",
+			"7823;7824;0;f;f;f;7823;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7824;7825;0;f;f;f;7824;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7824;7825;2;f;f;t;0;1207f723-b8d3-4a9b-8bff-204f3be90748",
+			"7825;7826;0;f;f;f;7825;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7826;7827;0;f;f;f;7826;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7825;7827;2;f;f;t;0;93e34a7b-69e7-47bd-9e93-378ce6ad2ac9",
+			"7827;7828;0;f;f;f;7827;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7828;7829;0;f;f;f;7828;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7828;7829;2;f;f;t;0;6454e7f2-3a4f-4555-a4f5-a0624d40ecbb",
+			"7829;7830;0;f;f;f;7829;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7830;7831;0;f;f;f;7830;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7830;7831;2;f;f;t;0;d2d1724e-29ee-4ebd-8e21-7421f32f1413",
+			"7831;7832;0;f;f;f;7831;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7832;7833;0;f;f;f;7832;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7832;7833;2;f;f;t;0;0b91d7a1-47d5-472b-84eb-3d2cbc962e38",
+			"7833;7834;0;f;f;f;7833;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7834;7835;0;f;f;f;7834;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7834;7835;2;f;f;t;0;14c9b66c-edb8-4c48-836d-56cb3ec34432",
+			"7835;7836;0;f;f;f;7835;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7836;7837;0;f;f;f;7836;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7836;7837;2;f;f;t;0;d5f0afe1-d364-434f-94cf-c512bf7365f4",
+			"7837;7838;0;f;f;f;7837;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7838;7839;0;f;f;f;7838;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7838;7839;2;f;f;t;0;9f831dc2-90ec-4e66-899e-9b00fb4138bc",
+			"7839;7840;0;f;f;f;7839;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7840;7841;0;f;f;f;7840;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7840;7841;2;f;f;t;0;1431d17e-2849-4050-85e7-402e69da416d",
+			"7841;7842;0;f;f;f;7841;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7842;7843;0;f;f;f;7842;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7842;7843;2;f;f;t;0;71dc3188-52aa-4420-abec-731dbe480ec3",
+			"7843;7844;0;f;f;f;7843;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7844;7845;0;f;f;f;7844;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7844;7845;2;f;f;t;0;9625ac03-7791-413f-9471-2b4e4e4c70ba",
+			"7845;7846;0;f;f;f;7845;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7846;7847;0;f;f;f;7846;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7846;7847;2;f;f;t;0;2e79c4b5-bb97-42bf-a506-214a07d107bc",
+			"7847;7848;0;f;f;f;7847;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7848;7849;0;f;f;f;7848;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7848;7849;2;f;f;t;0;925fb226-2a3c-4358-8468-7dbfc07f4596",
+			"7849;7850;0;f;f;f;7849;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7850;7851;0;f;f;f;7850;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7849;7851;2;f;f;t;0;e4f5bc12-393e-45b2-a569-067d1faa86aa",
+			"7851;7852;0;f;f;f;7851;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7852;7853;0;f;f;f;7852;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7852;7853;2;f;f;t;0;718a10c5-3fed-47e0-b730-acad2b6b9c1a",
+			"7853;7854;0;f;f;f;7853;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7854;7855;0;f;f;f;7854;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7854;7855;2;f;f;t;0;2d0da1dc-57e3-45ce-b714-984382f5cb48",
+			"7855;7856;0;f;f;f;7855;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7856;7857;0;f;f;f;7856;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7856;7857;2;f;f;t;0;f3bb6962-141c-420d-9cac-d5a3dd4213fb",
+			"7857;7858;0;f;f;f;7857;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7858;7859;0;f;f;f;7858;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7858;7859;2;f;f;t;0;24aa81d3-1987-4d3b-8e17-d29066a2c3e5",
+			"7859;7860;0;f;f;f;7859;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7860;7861;0;f;f;f;7860;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7860;7861;2;f;f;t;0;3874e5b4-b21a-4938-bff1-f9d3b91a6565",
+			"7861;7862;0;f;f;f;7861;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7862;7863;0;f;f;f;7862;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7862;7863;2;f;f;t;0;35675760-2ea0-4ba1-8bd6-f17fbdc8d1cd",
+			"7863;7864;0;f;f;f;7863;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7864;7865;0;f;f;f;7864;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7864;7865;2;f;f;t;0;1f3774a3-2093-4793-9242-1c406485c461",
+			"7865;7866;0;f;f;f;7865;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7866;7867;0;f;f;f;7866;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7866;7867;2;f;f;t;0;b6c2ac87-eaef-4b0d-8a3c-b3a26c39cb3f",
+			"7867;7868;0;f;f;f;7867;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7868;7869;0;f;f;f;7868;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7868;7869;2;f;f;t;0;1e418777-d61c-4d0e-9a6c-6b6aa968ee1c",
+			"7869;7870;0;f;f;f;7869;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7870;7871;0;f;f;f;7870;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7870;7871;2;f;f;t;0;eb2fa186-85f6-4a0c-be75-9442d6e9b048",
+			"7871;7872;0;f;f;f;7871;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7872;7873;0;f;f;f;7872;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7872;7873;2;f;f;t;0;cd00605c-cc1d-4682-b020-038d975faec6",
+			"7873;7874;0;f;f;f;7873;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7874;7875;0;f;f;f;7874;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7874;7875;2;f;f;t;0;faa54652-f434-429b-a8f4-23bdd00b0a5b",
+			"7875;7876;0;f;f;f;7875;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7876;7877;0;f;f;f;7876;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7876;7877;2;f;f;t;0;53266868-b071-4e3a-b84a-224fd1233a63",
+			"7877;7878;0;f;f;f;7877;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7878;7879;0;f;f;f;7878;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7878;7879;2;f;f;t;0;8cdb2baf-c034-4f7a-a93a-1a844f7da762",
+			"7879;7880;0;f;f;f;7879;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7880;7881;0;f;f;f;7880;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7880;7881;2;f;f;t;0;cdf52c0f-01a9-4eea-83a3-fc8d9d135472",
+			"7881;7882;0;f;f;f;7881;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7882;7883;0;f;f;f;7882;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7882;7883;2;f;f;t;0;5109b865-e4d9-4ceb-8c70-420ba13215b6",
+			"7883;7884;0;f;f;f;7883;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7884;7885;0;f;f;f;7884;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7884;7885;2;f;f;t;0;82b5f3cb-4287-46e9-b524-4b0d99f827b5",
+			"7885;7886;0;f;f;f;7885;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7886;7887;0;f;f;f;7886;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7886;7887;2;f;f;t;0;fb85cd45-4458-4fa4-b509-19260db554af",
+			"7887;7888;0;f;f;f;7887;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7888;7889;0;f;f;f;7888;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7888;7889;2;f;f;t;0;5fb72b2c-d2b7-4576-a4a5-46cf3429bb06",
+			"7889;7890;0;f;f;f;7889;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7890;7891;0;f;f;f;7890;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7890;7891;2;f;f;t;0;1f9dccbd-c8d3-4ba3-8d4a-353d30200048",
+			"7891;7892;0;f;f;f;7891;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7892;7893;0;f;f;f;7892;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7892;7893;2;f;f;t;0;1f6c0fea-d4e6-4187-a4c6-b2c31c48938c",
+			"7893;7894;0;f;f;f;7893;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7894;7895;0;f;f;f;7894;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7894;7895;2;f;f;t;0;d4336fc1-63c1-4682-88d4-770f65e9ff4e",
+			"7895;7896;0;f;f;f;7895;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7896;7897;0;f;f;f;7896;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7896;7897;2;f;f;t;0;9a9bfa03-3b70-4557-9fe7-2bad0a5ca62a",
+			"7897;7898;0;f;f;f;7897;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7898;7899;0;f;f;f;7898;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7898;7899;2;f;f;t;0;4a53e550-a28e-4791-87a9-29db635dea1f",
+			"7899;7900;0;f;f;f;7899;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7900;7901;0;f;f;f;7900;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7900;7901;2;f;f;t;0;5e32b73e-4bc3-4297-bcad-9d454d38c9b3",
+			"7901;7902;0;f;f;f;7901;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7902;7903;0;f;f;f;7902;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7902;7903;2;f;f;t;0;0404af4d-67f2-451f-a44e-18a68fcbb4c5",
+			"7903;7904;0;f;f;f;7903;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7904;7905;0;f;f;f;7904;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7905;7906;0;f;f;f;7905;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7904;7906;2;f;f;t;0;63d6980b-9fac-461d-9cd3-399b8a99a812",
+			"7905;7906;2;f;f;t;0;d9d17f3b-362b-4290-9a32-43457e140fcc",
+			"7906;7907;0;f;f;f;7906;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7907;7908;0;f;f;f;7907;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7908;7909;0;f;f;f;7908;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7908;7909;2;f;f;t;0;eea06e07-37bb-40e4-a2d7-778720fff2d2",
+			"7909;7910;0;f;f;f;7909;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7910;7911;0;f;f;f;7910;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7909;7911;2;f;f;t;0;96978a6a-776c-4a98-bc35-53f8760d3e5e",
+			"7911;7912;0;f;f;f;7911;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7912;7913;0;f;f;f;7912;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7912;7913;2;f;f;t;0;4ce51ceb-ab09-4ec4-82b6-51cba4ead16c",
+			"7913;7914;0;f;f;f;7913;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7914;7915;0;f;f;f;7914;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7913;7915;2;f;f;t;0;eb126181-14a9-43e1-86ce-d95abb36169c",
+			"7915;7916;0;f;f;f;7915;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7916;7917;0;f;f;f;7916;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7916;7917;2;f;f;t;0;f1b9cc10-79da-4114-8eba-fe508ad41e63",
+			"7917;7918;0;f;f;f;7917;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7918;7919;0;f;f;f;7918;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7918;7919;2;f;f;t;0;0fc59682-2a25-49b2-9efc-a9fcb6894bac",
+			"7919;7920;0;f;f;f;7919;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7920;7921;0;f;f;f;7920;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7920;7921;2;f;f;t;0;8b9e60d8-7020-4143-a44d-e42ac36b9f37",
+			"7921;7922;0;f;f;f;7921;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7922;7923;0;f;f;f;7922;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7922;7923;2;f;f;t;0;5cf859a0-1051-4408-aef0-0ab56bc8acda",
+			"7923;7924;0;f;f;f;7923;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7924;7925;0;f;f;f;7924;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7924;7925;2;f;f;t;0;0a9f0404-ac12-4709-b047-d3f2597e562a",
+			"7925;7926;0;f;f;f;7925;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7926;7927;0;f;f;f;7926;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7926;7927;2;f;f;t;0;e979ece9-cc5e-40b6-9df5-b014201fe36e",
+			"7927;7928;0;f;f;f;7927;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7928;7929;0;f;f;f;7928;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7928;7929;2;f;f;t;0;42eccec5-2e76-4115-8aa4-f4d267256ac4",
+			"7929;7930;0;f;f;f;7929;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7930;7931;0;f;f;f;7930;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7930;7931;2;f;f;t;0;a466d71d-739a-4860-bea1-ef8ebbcf4171",
+			"7931;7932;0;f;f;f;7931;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7932;7933;0;f;f;f;7932;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7932;7933;2;f;f;t;0;406d2753-abc6-4e4d-b85e-bc51334e934c",
+			"7933;7934;0;f;f;f;7933;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7934;7935;0;f;f;f;7934;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7934;7935;2;f;f;t;0;253d9fda-fd06-4a42-92b5-8aa9edd46b39",
+			"7935;7936;0;f;f;f;7935;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7936;7937;0;f;f;f;7936;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7936;7937;2;f;f;t;0;0f5d9720-8e5b-4c7c-bf8a-af49631f2ff3",
+			"7937;7938;0;f;f;f;7937;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7938;7939;0;f;f;f;7938;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7938;7939;2;f;f;t;0;36296b0f-7eb2-4d84-8408-7d14c2188f07",
+			"7939;7940;0;f;f;f;7939;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7940;7941;0;f;f;f;7940;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7940;7941;2;f;f;t;0;90da93d5-5be4-471f-9e93-f76edb81ba74",
+			"7941;7942;0;f;f;f;7941;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7942;7943;0;f;f;f;7942;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7943;7944;0;f;f;f;7943;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7942;7944;2;f;f;t;0;25cafacc-85a6-48aa-aa9b-aaf97d9857f7",
+			"7943;7944;2;f;f;t;0;4d2ba716-3bf5-4ca3-a2aa-a119441d4805",
+			"7944;7945;0;f;f;f;7944;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7945;7946;0;f;f;f;7945;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7946;7947;0;f;f;f;7946;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7946;7947;2;f;f;t;0;4afd3b0a-8f2a-43fa-b1ea-af20741380b0",
+			"7947;7948;0;f;f;f;7947;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7948;7949;0;f;f;f;7948;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7948;7949;2;f;f;t;0;a29e3f50-e937-4736-bd7a-eef7102ee2ea",
+			"7949;7950;0;f;f;f;7949;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7950;7951;0;f;f;f;7950;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7950;7951;2;f;f;t;0;0dfe2a8c-af61-4441-bd08-e1d67647227a",
+			"7951;7952;0;f;f;f;7951;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7952;7953;0;f;f;f;7952;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7952;7953;2;f;f;t;0;890a75d9-84e2-45f8-a4dc-b34ddec16a50",
+			"7953;7954;0;f;f;f;7953;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7954;7955;0;f;f;f;7954;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7954;7955;2;f;f;t;0;24f43e13-1627-45b8-bbaf-f9e0e31a6ba4",
+			"7955;7956;0;f;f;f;7955;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7956;7957;0;f;f;f;7956;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7956;7957;2;f;f;t;0;61d0f814-afb0-417c-b017-897b4eef8745",
+			"7957;7958;0;f;f;f;7957;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7958;7959;0;f;f;f;7958;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7958;7959;2;f;f;t;0;9abb7dc8-695e-4469-80ea-31a72a49fa4f",
+			"7959;7960;0;f;f;f;7959;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7960;7961;0;f;f;f;7960;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7960;7961;2;f;f;t;0;a5cef252-ab09-4794-93b4-4a4b03911a03",
+			"7961;7962;0;f;f;f;7961;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7962;7963;0;f;f;f;7962;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7962;7963;2;f;f;t;0;7bc11a57-82a8-43c3-a775-0bb21fde4ac9",
+			"7963;7964;0;f;f;f;7963;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7964;7965;0;f;f;f;7964;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7964;7965;2;f;f;t;0;88c0601e-3780-4cdf-8b42-fd8efe7ac937",
+			"7965;7966;0;f;f;f;7965;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7966;7967;0;f;f;f;7966;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7966;7967;2;f;f;t;0;08c6b088-c60b-4290-9308-d086d47eb20f",
+			"7967;7968;0;f;f;f;7967;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7968;7969;0;f;f;f;7968;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7968;7969;2;f;f;t;0;f1e8a7ea-64dd-47a4-93a3-db107fc13d79",
+			"7969;7970;0;f;f;f;7969;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7970;7971;0;f;f;f;7970;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7970;7971;2;f;f;t;0;cd462529-72b7-41a0-b4ab-625180acda0a",
+			"7971;7972;0;f;f;f;7971;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7972;7973;0;f;f;f;7972;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7972;7973;2;f;f;t;0;ec11da52-18a8-4bb7-afb5-fabffc6b9291",
+			"7973;7974;0;f;f;f;7973;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7974;7975;0;f;f;f;7974;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7974;7975;2;f;f;t;0;c816b731-7df8-4e74-9d73-6b3a0a97e849",
+			"7975;7976;0;f;f;f;7975;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7976;7977;0;f;f;f;7976;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7976;7977;2;f;f;t;0;135252b3-fad8-4358-aadf-fe2eefa2b3ce",
+			"7977;7978;0;f;f;f;7977;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7978;7979;0;f;f;f;7978;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7978;7979;2;f;f;t;0;3d3e23cd-0a32-4600-8a9f-576026af88f0",
+			"7979;7980;0;f;f;f;7979;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7980;7981;0;f;f;f;7980;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7980;7981;2;f;f;t;0;aca76928-1aa0-48ba-b259-d0eb055ae933",
+			"7981;7982;0;f;f;f;7981;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7982;7983;0;f;f;f;7982;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7982;7983;2;f;f;t;0;6d3e73c2-414a-45d3-b0fd-8e591f8f7a4e",
+			"7983;7984;0;f;f;f;7983;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7984;7985;0;f;f;f;7984;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7984;7985;2;f;f;t;0;3125f272-b57e-4ba6-9c61-56db03903905",
+			"7985;7986;0;f;f;f;7985;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7986;7987;0;f;f;f;7986;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7986;7987;2;f;f;t;0;8207b8fd-a71b-4135-a689-6b3bd3bf4c5c",
+			"7987;7988;0;f;f;f;7987;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7988;7989;0;f;f;f;7988;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7988;7989;2;f;f;t;0;d8dd00f7-d5a4-4ed7-a71c-7254299f14e7",
+			"7989;7990;0;f;f;f;7989;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7990;7991;0;f;f;f;7990;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7990;7991;2;f;f;t;0;42534aee-0935-40f8-a3ef-3c59f78c7fe4",
+			"7991;7992;0;f;f;f;7991;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7992;7993;0;f;f;f;7992;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7992;7993;2;f;f;t;0;55aa886b-22a0-4c41-804f-ea1946f3e90b",
+			"7993;7994;0;f;f;f;7993;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7994;7995;0;f;f;f;7994;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7994;7995;2;f;f;t;0;7ae82b86-7b69-4bb1-aa5c-06ccb3329c35",
+			"7995;7996;0;f;f;f;7995;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7996;7997;0;f;f;f;7996;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7996;7997;2;f;f;t;0;ed8a9c16-0391-41b4-81fb-66046bf4b3fa",
+			"7997;7998;0;f;f;f;7997;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7998;7999;0;f;f;f;7998;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"7998;7999;2;f;f;t;0;687708ef-bae9-4671-888e-3094f2402029",
+			"7999;8000;0;f;f;f;7999;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8000;8001;0;f;f;f;8000;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8000;8001;2;f;f;t;0;9a98364f-0977-4cb6-a6de-cc149c582552",
+			"8001;8002;0;f;f;f;8001;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8002;8003;0;f;f;f;8002;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8002;8003;2;f;f;t;0;e0078fb7-65d1-4933-8018-a1734c343816",
+			"8003;8004;0;f;f;f;8003;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8004;8005;0;f;f;f;8004;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8004;8005;2;f;f;t;0;ca79adc9-49f0-4f43-bdd1-68bebf3ac0c5",
+			"8005;8006;0;f;f;f;8005;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8006;8007;0;f;f;f;8006;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8006;8007;2;f;f;t;0;f407f213-637d-4f3d-af0b-97b1b1a84e39",
+			"8007;8008;0;f;f;f;8007;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8008;8009;0;f;f;f;8008;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8007;8009;2;f;f;t;0;e8f0601a-5198-4bad-a4cd-c2815c7b4ebf",
+			"8009;8010;0;f;f;f;8009;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8010;8011;0;f;f;f;8010;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8010;8011;2;f;f;t;0;c0156533-cc99-41c4-847e-ff0e33428ccd",
+			"8011;8012;0;f;f;f;8011;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8012;8013;0;f;f;f;8012;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8012;8013;2;f;f;t;0;4759338a-5114-4ac6-a367-c16ee186f839",
+			"8013;8014;0;f;f;f;8013;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8014;8015;0;f;f;f;8014;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8014;8015;2;f;f;t;0;4825d6a1-d54c-4765-97db-4aa5d3fd48c3",
+			"8015;8016;0;f;f;f;8015;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8016;8017;0;f;f;f;8016;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8016;8017;2;f;f;t;0;724f31f8-d365-4226-b12d-240ecd031727",
+			"8017;8018;0;f;f;f;8017;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8018;8019;0;f;f;f;8018;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8018;8019;2;f;f;t;0;e62068c6-a202-430d-a079-dce3da01fdc5",
+			"8019;8020;0;f;f;f;8019;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8020;8021;0;f;f;f;8020;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8020;8021;2;f;f;t;0;5cc7d730-f533-478b-b870-506537f1f984",
+			"8021;8022;0;f;f;f;8021;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8022;8023;0;f;f;f;8022;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8022;8023;2;f;f;t;0;b6488dee-0b22-4eeb-8213-f99bee07ae24",
+			"8023;8024;0;f;f;f;8023;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8024;8025;0;f;f;f;8024;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8024;8025;2;f;f;t;0;0c0abd90-53da-49ad-8a4a-dadb029bc9ca",
+			"8025;8026;0;f;f;f;8025;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8026;8027;0;f;f;f;8026;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8026;8027;2;f;f;t;0;ea5b955b-4d00-4c51-b2f9-c95bf5f2d2fb",
+			"8027;8028;0;f;f;f;8027;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8028;8029;0;f;f;f;8028;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8028;8029;2;f;f;t;0;7c86127c-f029-4ccf-80dc-092974856576",
+			"8029;8030;0;f;f;f;8029;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8030;8031;0;f;f;f;8030;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8030;8031;2;f;f;t;0;2968383f-a3b1-4d10-a3a1-174959c3e4dc",
+			"8031;8032;0;f;f;f;8031;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8032;8033;0;f;f;f;8032;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8032;8033;2;f;f;t;0;479f53b3-9b85-4f09-9f97-19bd2994dd9c",
+			"8033;8034;0;f;f;f;8033;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8034;8035;0;f;f;f;8034;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8034;8035;2;f;f;t;0;bac68d80-cf49-47dc-bf28-c8cdf45d8c4c",
+			"8035;8036;0;f;f;f;8035;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8036;8037;0;f;f;f;8036;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8036;8037;2;f;f;t;0;c8244aee-c1e6-4085-8bd5-4f255d0a3052",
+			"8037;8038;0;f;f;f;8037;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8038;8039;0;f;f;f;8038;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8038;8039;2;f;f;t;0;cb1842da-88ec-4975-88f2-a03d8e690ad4",
+			"8039;8040;0;f;f;f;8039;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8040;8041;0;f;f;f;8040;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8040;8041;2;f;f;t;0;b4f54060-9f7b-4abf-8f93-9442e94aaedc",
+			"8041;8042;0;f;f;f;8041;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8042;8043;0;f;f;f;8042;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8042;8043;2;f;f;t;0;432e4fa8-bed7-48a7-ad06-4fe999afcc07",
+			"8043;8044;0;f;f;f;8043;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8044;8045;0;f;f;f;8044;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8044;8045;2;f;f;t;0;940535a3-599d-4dea-9523-3771b62c0ed9",
+			"8045;8046;0;f;f;f;8045;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8046;8047;0;f;f;f;8046;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8046;8047;2;f;f;t;0;a31b2a93-3783-4688-a8f0-162c6a9c96b4",
+			"8047;8048;0;f;f;f;8047;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8048;8049;0;f;f;f;8048;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8048;8049;2;f;f;t;0;295690ac-1a2d-414e-9bb5-e43409330e58",
+			"8049;8050;0;f;f;f;8049;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8050;8051;0;f;f;f;8050;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8050;8051;2;f;f;t;0;1cc2c3bd-89d0-4201-a21e-a474c47c1dd0",
+			"8051;8052;0;f;f;f;8051;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8052;8053;0;f;f;f;8052;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8052;8053;2;f;f;t;0;71b0135a-b052-4879-9417-5e5a43aaa894",
+			"8053;8054;0;f;f;f;8053;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8054;8055;0;f;f;f;8054;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8054;8055;2;f;f;t;0;52ff61f7-0e40-4c1d-9a54-d91c8b9cd9a9",
+			"8055;8056;0;f;f;f;8055;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8056;8057;0;f;f;f;8056;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8055;8057;2;f;f;t;0;c87f0b6a-fd1d-4a21-990e-7b3aa48d51e3",
+			"8057;8058;0;f;f;f;8057;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8058;8059;0;f;f;f;8058;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8058;8059;2;f;f;t;0;84dfb834-024e-43d5-a971-03a3cb1017fb",
+			"8059;8060;0;f;f;f;8059;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8060;8061;0;f;f;f;8060;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8060;8061;2;f;f;t;0;a55b8e18-725e-4101-b2d9-0762975434a5",
+			"8061;8062;0;f;f;f;8061;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8062;8063;0;f;f;f;8062;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8062;8063;2;f;f;t;0;2d7bf0a2-01fc-4cc2-91b8-cd22ef7e6c87",
+			"8063;8064;0;f;f;f;8063;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8064;8065;0;f;f;f;8064;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8064;8065;2;f;f;t;0;3893d689-138b-4dae-9a96-b8708d3c74fb",
+			"8065;8066;0;f;f;f;8065;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8066;8067;0;f;f;f;8066;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8066;8067;2;f;f;t;0;8b50ebd4-d7f4-476d-8a60-49b64e8cec53",
+			"8067;8068;0;f;f;f;8067;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8068;8069;0;f;f;f;8068;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8068;8069;2;f;f;t;0;86e23e57-8b48-429b-8fb2-1847a336fade",
+			"8069;8070;0;f;f;f;8069;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8070;8071;0;f;f;f;8070;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8070;8071;2;f;f;t;0;6280295a-890c-46b0-b3c1-373a72afa345",
+			"8071;8072;0;f;f;f;8071;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8072;8073;0;f;f;f;8072;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8072;8073;2;f;f;t;0;2ab32505-50bc-466f-8070-11e6b7c0d707",
+			"8073;8074;0;f;f;f;8073;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8074;8075;0;f;f;f;8074;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8074;8075;2;f;f;t;0;b25d77bc-a293-45ad-ae95-a8e5f8cc441d",
+			"8075;8076;0;f;f;f;8075;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8076;8077;0;f;f;f;8076;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8076;8077;2;f;f;t;0;23b2cb08-3a4b-40c8-91c9-b08f635757ae",
+			"8077;8078;0;f;f;f;8077;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8078;8079;0;f;f;f;8078;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8078;8079;2;f;f;t;0;a043e2c3-2d1b-4e92-88b4-22bc5e8ca064",
+			"8079;8080;0;f;f;f;8079;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8080;8081;0;f;f;f;8080;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8080;8081;2;f;f;t;0;8411abfe-2013-416b-8374-765542290afb",
+			"8081;8082;0;f;f;f;8081;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8082;8083;0;f;f;f;8082;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8082;8083;2;f;f;t;0;e79a723c-8511-497c-ac22-25284c1e7750",
+			"8083;8084;0;f;f;f;8083;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8084;8085;0;f;f;f;8084;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8084;8085;2;f;f;t;0;6d1cfc0d-2484-4e5f-8887-b8e8aef213f5",
+			"8085;8086;0;f;f;f;8085;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8086;8087;0;f;f;f;8086;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8086;8087;2;f;f;t;0;82aa0b29-f8cc-4185-9570-6df461e650fb",
+			"8087;8088;0;f;f;f;8087;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8088;8089;0;f;f;f;8088;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8088;8089;2;f;f;t;0;11082329-5561-42d3-8070-e36e54861393",
+			"8089;8090;0;f;f;f;8089;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8090;8091;0;f;f;f;8090;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8090;8091;2;f;f;t;0;bb618102-297d-4e21-84c6-a91cfc3f9d15",
+			"8091;8092;0;f;f;f;8091;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8092;8093;0;f;f;f;8092;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8092;8093;2;f;f;t;0;e4741aea-fb68-42a7-a4a5-31e6e675f4f2",
+			"8093;8094;0;f;f;f;8093;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8094;8095;0;f;f;f;8094;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8094;8095;2;f;f;t;0;da60c6c5-0edb-43fa-ae1d-8ad30fcd81b5",
+			"8095;8096;0;f;f;f;8095;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8096;8097;0;f;f;f;8096;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8096;8097;2;f;f;t;0;ec2eccd2-ebaa-426b-b4d4-fde9be90af71",
+			"8097;8098;0;f;f;f;8097;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8098;8099;0;f;f;f;8098;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8097;8099;2;f;f;t;0;c8613d90-4885-4428-9071-66a695477128",
+			"8099;8100;0;f;f;f;8099;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8100;8101;0;f;f;f;8100;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8100;8101;2;f;f;t;0;ce2cac48-1ed3-459b-b4dd-40a805d0bd51",
+			"8101;8102;0;f;f;f;8101;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8102;8103;0;f;f;f;8102;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8101;8103;2;f;f;t;0;61144068-c9bf-414b-9296-7c593e0a8e01",
+			"8103;8104;0;f;f;f;8103;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8104;8105;0;f;f;f;8104;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8104;8105;2;f;f;t;0;43797f6a-3e77-4992-9c54-6479db0c7432",
+			"8105;8106;0;f;f;f;8105;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8106;8107;0;f;f;f;8106;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8105;8107;2;f;f;t;0;9e54b2b1-8b5e-4fde-b620-dabc4265aa37",
+			"8107;8108;0;f;f;f;8107;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8108;8109;0;f;f;f;8108;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8108;8109;2;f;f;t;0;0426d70c-2092-440f-b770-2bfa73a185dc",
+			"8109;8110;0;f;f;f;8109;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8110;8111;0;f;f;f;8110;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8109;8111;2;f;f;t;0;dcf94e28-f47c-4c47-af0e-47a37b8fb1d7",
+			"8111;8112;0;f;f;f;8111;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8112;8113;0;f;f;f;8112;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8112;8113;2;f;f;t;0;77682a1c-8f5a-43fb-a7f7-209c0baa52da",
+			"8113;8114;0;f;f;f;8113;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8114;8115;0;f;f;f;8114;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8114;8115;2;f;f;t;0;06e97826-3f3d-40b1-93da-6209cb037deb",
+			"8115;8116;0;f;f;f;8115;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8116;8117;0;f;f;f;8116;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8116;8117;2;f;f;t;0;dadc5adc-f457-4a07-ae6f-b8c490a80165",
+			"8117;8118;0;f;f;f;8117;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8118;8119;0;f;f;f;8118;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8118;8119;2;f;f;t;0;bc24f53f-ac31-4197-881c-36b1a033b3ef",
+			"8119;8120;0;f;f;f;8119;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8120;8121;0;f;f;f;8120;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8120;8121;2;f;f;t;0;b6d358df-f1f7-429b-b7c5-97217d60c440",
+			"8121;8122;0;f;f;f;8121;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8122;8123;0;f;f;f;8122;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8122;8123;2;f;f;t;0;69f82e67-2d3d-44cb-9ce9-ad125483612a",
+			"8123;8124;0;f;f;f;8123;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8124;8125;0;f;f;f;8124;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8124;8125;2;f;f;t;0;9f5d479c-e614-4678-8094-313b41964492",
+			"8125;8126;0;f;f;f;8125;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8126;8127;0;f;f;f;8126;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8126;8127;2;f;f;t;0;dafbf369-3db1-4199-bbda-d7828c26a386",
+			"8127;8128;0;f;f;f;8127;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8128;8129;0;f;f;f;8128;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8128;8129;2;f;f;t;0;47f6c8da-4b69-40e4-aff7-c7b572379098",
+			"8129;8130;0;f;f;f;8129;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8130;8131;0;f;f;f;8130;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8130;8131;2;f;f;t;0;8b4d4038-6a2e-4a8e-b392-1ff7435609de",
+			"8131;8132;0;f;f;f;8131;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8132;8133;0;f;f;f;8132;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8132;8133;2;f;f;t;0;231b3aea-873d-4cfa-9ce1-6afeb5d4cd60",
+			"8133;8134;0;f;f;f;8133;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8134;8135;0;f;f;f;8134;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8134;8135;2;f;f;t;0;a8c5fa92-46eb-445f-afc8-a15c8137129d",
+			"8135;8136;0;f;f;f;8135;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8136;8137;0;f;f;f;8136;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8136;8137;2;f;f;t;0;cb5c7f9d-a38d-41f6-8847-ae63666e37e4",
+			"8137;8138;0;f;f;f;8137;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8138;8139;0;f;f;f;8138;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8138;8139;2;f;f;t;0;458d251d-06ff-4a86-a52a-35bdec135194",
+			"8139;8140;0;f;f;f;8139;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8140;8141;0;f;f;f;8140;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8140;8141;2;f;f;t;0;e89baa9a-7dc7-4d23-82ce-a16ba3547b57",
+			"8141;8142;0;f;f;f;8141;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8142;8143;0;f;f;f;8142;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8142;8143;2;f;f;t;0;979f10c4-6780-45fb-8eb9-3707774ef344",
+			"8143;8144;0;f;f;f;8143;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8144;8145;0;f;f;f;8144;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8144;8145;2;f;f;t;0;88e1c90f-c7ee-4b2c-aaf5-c8c41d93283a",
+			"8145;8146;0;f;f;f;8145;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8146;8147;0;f;f;f;8146;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8146;8147;2;f;f;t;0;d98bf427-343e-4bea-bf3c-e06b51b2c6ab",
+			"8147;8148;0;f;f;f;8147;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8148;8149;0;f;f;f;8148;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8148;8149;2;f;f;t;0;f1eb23b8-f15d-4d06-8f29-11fe2f4b79fa",
+			"8149;8150;0;f;f;f;8149;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8150;8151;0;f;f;f;8150;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8150;8151;2;f;f;t;0;867777ec-1dc0-4e6d-b76d-20c3ab721c41",
+			"8151;8152;0;f;f;f;8151;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8152;8153;0;f;f;f;8152;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8152;8153;2;f;f;t;0;2950b017-cb9b-44b1-aec3-fc69dac3d046",
+			"8153;8154;0;f;f;f;8153;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8154;8155;0;f;f;f;8154;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8154;8155;2;f;f;t;0;84d1915b-07da-47a1-83ba-e9b0b468aef7",
+			"8155;8156;0;f;f;f;8155;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8156;8157;0;f;f;f;8156;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8156;8157;2;f;f;t;0;56e47f38-253e-4ab1-89db-df47cd0b0dbc",
+			"8157;8158;0;f;f;f;8157;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8158;8159;0;f;f;f;8158;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8158;8159;2;f;f;t;0;2e1aa8f5-91ce-413b-a853-5434d0624e03",
+			"8159;8160;0;f;f;f;8159;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8160;8161;0;f;f;f;8160;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8160;8161;2;f;f;t;0;50d4612f-c3e7-4b4a-a004-6e84e7b5ef01",
+			"8161;8162;0;f;f;f;8161;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8162;8163;0;f;f;f;8162;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8162;8163;2;f;f;t;0;a76b3c5a-e29b-49c6-acee-a894fa87c6f3",
+			"8163;8164;0;f;f;f;8163;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8164;8165;0;f;f;f;8164;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8164;8165;2;f;f;t;0;4c115064-b9bc-42b7-a598-eedbbcc1adfb",
+			"8165;8166;0;f;f;f;8165;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8166;8167;0;f;f;f;8166;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8166;8167;2;f;f;t;0;c746d1bc-5f2a-403a-bd26-26f401e810d5",
+			"8167;8168;0;f;f;f;8167;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8168;8169;0;f;f;f;8168;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8168;8169;2;f;f;t;0;3dad8dc0-8dd6-43a8-a7c3-79307e2c3fe2",
+			"8169;8170;0;f;f;f;8169;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8170;8171;0;f;f;f;8170;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8170;8171;2;f;f;t;0;a376f227-15e7-425e-b99b-5b50389769ec",
+			"8171;8172;0;f;f;f;8171;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8172;8173;0;f;f;f;8172;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8172;8173;2;f;f;t;0;7d9103de-a313-4f54-8336-3a8c0553bd17",
+			"8173;8174;0;f;f;f;8173;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8174;8175;0;f;f;f;8174;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8174;8175;2;f;f;t;0;484526a7-6822-4de7-bd64-d542b418f909",
+			"8175;8176;0;f;f;f;8175;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8176;8177;0;f;f;f;8176;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8176;8177;2;f;f;t;0;73faf2c9-fa8c-482c-b097-97b4031a8d86",
+			"8177;8178;0;f;f;f;8177;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8178;8179;0;f;f;f;8178;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8178;8179;2;f;f;t;0;e648b6c0-0b45-41d3-b6ef-df32c2bedbbb",
+			"8179;8180;0;f;f;f;8179;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8180;8181;0;f;f;f;8180;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8180;8181;2;f;f;t;0;66fdbf75-c7d5-4e9b-aceb-1756144ec314",
+			"8181;8182;0;f;f;f;8181;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8182;8183;0;f;f;f;8182;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8182;8183;2;f;f;t;0;a97644df-d906-4ce2-a266-66c411de6c20",
+			"8183;8184;0;f;f;f;8183;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8184;8185;0;f;f;f;8184;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8184;8185;2;f;f;t;0;b6592f02-7622-4b91-b0c3-4c2aa2cdd041",
+			"8185;8186;0;f;f;f;8185;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8186;8187;0;f;f;f;8186;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8186;8187;2;f;f;t;0;f1025eac-76a0-4c88-b140-256552ec99b6",
+			"8187;8188;0;f;f;f;8187;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8188;8189;0;f;f;f;8188;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8188;8189;2;f;f;t;0;05aed5b2-0136-479b-91c7-bbb9785de1cc",
+			"8189;8190;0;f;f;f;8189;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8190;8191;0;f;f;f;8190;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8190;8191;2;f;f;t;0;08dc5357-a657-4895-8843-12b8ac48094f",
+			"8191;8192;0;f;f;f;8191;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8192;8193;0;f;f;f;8192;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8192;8193;2;f;f;t;0;d53d3ba2-6635-47e0-a2b7-ece07cbd9ece",
+			"8193;8194;0;f;f;f;8193;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8194;8195;0;f;f;f;8194;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8193;8195;2;f;f;t;0;826a4628-31b6-467d-8916-4951cdc9a4c6",
+			"8195;8196;0;f;f;f;8195;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8196;8197;0;f;f;f;8196;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8196;8197;2;f;f;t;0;53b97852-9798-44e7-94fe-2d09f12f196a",
+			"8197;8198;0;f;f;f;8197;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8198;8199;0;f;f;f;8198;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8198;8199;2;f;f;t;0;bb9903d5-9b40-4f45-b9b5-a3b15af1cd8a",
+			"8199;8200;0;f;f;f;8199;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8200;8201;0;f;f;f;8200;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8200;8201;2;f;f;t;0;ed155ccd-1fd5-4aee-8ce6-8e623a4a2cbb",
+			"8201;8202;0;f;f;f;8201;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8202;8203;0;f;f;f;8202;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8202;8203;2;f;f;t;0;5c9abd53-cade-4905-be41-c01bd805e820",
+			"8203;8204;0;f;f;f;8203;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8204;8205;0;f;f;f;8204;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8204;8205;2;f;f;t;0;c5e44094-5aa2-4c5d-b79e-57bdcae51e67",
+			"8205;8206;0;f;f;f;8205;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8206;8207;0;f;f;f;8206;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8206;8207;2;f;f;t;0;0e4c3106-c497-4ea9-8d2c-4463dd1ce926",
+			"8207;8208;0;f;f;f;8207;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8208;8209;0;f;f;f;8208;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8208;8209;2;f;f;t;0;0d3e345d-920e-48af-9040-d5a9969f23d1",
+			"8209;8210;0;f;f;f;8209;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8210;8211;0;f;f;f;8210;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8210;8211;2;f;f;t;0;769f580f-123b-41e1-913e-c8045ddc14d3",
+			"8211;8212;0;f;f;f;8211;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8212;8213;0;f;f;f;8212;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8212;8213;2;f;f;t;0;f345ddbb-76d5-4dac-9ed3-ec2dc94f3b82",
+			"8213;8214;0;f;f;f;8213;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8214;8215;0;f;f;f;8214;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8214;8215;2;f;f;t;0;df253295-a6bf-4c2f-9da3-a8bbe61a65c9",
+			"8215;8216;0;f;f;f;8215;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8216;8217;0;f;f;f;8216;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8215;8217;2;f;f;t;0;fd3b4286-b5bc-479d-9838-18216a4fec40",
+			"8217;8218;0;f;f;f;8217;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8218;8219;0;f;f;f;8218;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8219;8220;0;f;f;f;8219;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8218;8220;2;f;f;t;0;5fc1ecfd-ae69-4026-b39e-02de39b9fb05",
+			"8219;8220;2;f;f;t;0;6498b861-5aa5-4610-b470-f0c7287d800d",
+			"8220;8221;0;f;f;f;8220;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8221;8222;0;f;f;f;8221;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8222;8223;0;f;f;f;8222;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8222;8223;2;f;f;t;0;4ce81f51-bd26-42b2-ba00-ea761eb8e142",
+			"8223;8224;0;f;f;f;8223;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8224;8225;0;f;f;f;8224;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8224;8225;2;f;f;t;0;338bdc7f-9904-46c1-87ad-3d5c5e2f2b68",
+			"8225;8226;0;f;f;f;8225;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8226;8227;0;f;f;f;8226;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8226;8227;2;f;f;t;0;ae0f7e83-2bec-4d9d-b7f7-aeee858f051b",
+			"8227;8228;0;f;f;f;8227;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8228;8229;0;f;f;f;8228;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8227;8229;2;f;f;t;0;3809f903-f505-4c51-a3c2-9b52248a767a",
+			"8229;8230;0;f;f;f;8229;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8230;8231;0;f;f;f;8230;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8230;8231;2;f;f;t;0;25f04bfc-50ac-43b4-a43e-62061775171e",
+			"8231;8232;0;f;f;f;8231;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8232;8233;0;f;f;f;8232;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8231;8233;2;f;f;t;0;bc8a383a-a985-43b3-b21d-4ab862efff1d",
+			"8233;8234;0;f;f;f;8233;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8234;8235;0;f;f;f;8234;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8235;8236;0;f;f;f;8235;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8234;8236;2;f;f;t;0;d63a2ea6-54e6-4f99-8a5e-01b0e9278f6f",
+			"8235;8236;2;f;f;t;0;ba5e6bad-b86d-40ba-950e-5601b571295a",
+			"8236;8237;0;f;f;f;8236;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8237;8238;0;f;f;f;8237;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8238;8239;0;f;f;f;8238;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8238;8239;2;f;f;t;0;c68dd224-52b9-444b-b59b-41cf52acbe4d",
+			"8239;8240;0;f;f;f;8239;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8240;8241;0;f;f;f;8240;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8240;8241;2;f;f;t;0;21e061c1-c922-4a99-b5b6-871a52c262e0",
+			"8241;8242;0;f;f;f;8241;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8242;8243;0;f;f;f;8242;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8242;8243;2;f;f;t;0;8d4380dc-9098-4502-89fa-bfd19ef4ce25",
+			"8243;8244;0;f;f;f;8243;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8244;8245;0;f;f;f;8244;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8244;8245;2;f;f;t;0;9ffaecf9-a0cd-407b-900d-72d5f58e268d",
+			"8245;8246;0;f;f;f;8245;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8246;8247;0;f;f;f;8246;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8246;8247;2;f;f;t;0;f122969c-0dc8-40b2-9f8c-15546ceee6fe",
+			"8247;8248;0;f;f;f;8247;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8248;8249;0;f;f;f;8248;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8248;8249;2;f;f;t;0;e2cb4216-07d7-4ec8-8841-9a6c320a3bd3",
+			"8249;8250;0;f;f;f;8249;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8250;8251;0;f;f;f;8250;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8250;8251;2;f;f;t;0;8bbacb77-1a5d-4fc3-87be-a92cbf5cbcfe",
+			"8251;8252;0;f;f;f;8251;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8252;8253;0;f;f;f;8252;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8252;8253;2;f;f;t;0;e4e417a7-efee-47ee-8c8a-bfe3a5eb6031",
+			"8253;8254;0;f;f;f;8253;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8254;8255;0;f;f;f;8254;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8254;8255;2;f;f;t;0;e0575b68-1a4b-4c60-87c9-5b90968e0d4c",
+			"8255;8256;0;f;f;f;8255;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8256;8257;0;f;f;f;8256;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8256;8257;2;f;f;t;0;2c076dc5-2ba4-42ed-be4b-c54c39383743",
+			"8257;8258;0;f;f;f;8257;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8258;8259;0;f;f;f;8258;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8258;8259;2;f;f;t;0;3e6084fb-4bb9-4a1b-a422-d956f7257580",
+			"8259;8260;0;f;f;f;8259;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8260;8261;0;f;f;f;8260;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8260;8261;2;f;f;t;0;779b12d1-fdcb-4b61-a606-6e15a014bc11",
+			"8261;8262;0;f;f;f;8261;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8262;8263;0;f;f;f;8262;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8262;8263;2;f;f;t;0;2c6600a2-3572-4f36-bf18-3d773f661a73",
+			"8263;8264;0;f;f;f;8263;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8264;8265;0;f;f;f;8264;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8264;8265;2;f;f;t;0;b750fc08-4d60-4c1e-a133-86da711ccd7b",
+			"8265;8266;0;f;f;f;8265;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8266;8267;0;f;f;f;8266;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8266;8267;2;f;f;t;0;2d4bd089-2bb6-405d-bee4-55d3201071a2",
+			"8267;8268;0;f;f;f;8267;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8268;8269;0;f;f;f;8268;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8268;8269;2;f;f;t;0;40be7d9a-7d32-4d9c-91dd-ed269fc64411",
+			"8269;8270;0;f;f;f;8269;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8270;8271;0;f;f;f;8270;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8270;8271;2;f;f;t;0;9bc01977-73f0-4a3c-a666-4bc1c7ea486c",
+			"8271;8272;0;f;f;f;8271;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8272;8273;0;f;f;f;8272;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8272;8273;2;f;f;t;0;9cf9f8c4-7de9-45f3-8950-6e25af81fbb9",
+			"8273;8274;0;f;f;f;8273;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8274;8275;0;f;f;f;8274;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8274;8275;2;f;f;t;0;b74815cc-1a3d-4a09-8a63-ae4dc16562aa",
+			"8275;8276;0;f;f;f;8275;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8276;8277;0;f;f;f;8276;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8276;8277;2;f;f;t;0;20fb2e02-be17-4c83-a782-944af18710b4",
+			"8277;8278;0;f;f;f;8277;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8278;8279;0;f;f;f;8278;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8278;8279;2;f;f;t;0;daf1c2b6-f412-4ba0-a15e-9575f6eff4e4",
+			"8279;8280;0;f;f;f;8279;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8280;8281;0;f;f;f;8280;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8280;8281;2;f;f;t;0;17ca1233-6435-4213-98bc-7c5c8f478bce",
+			"8281;8282;0;f;f;f;8281;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8282;8283;0;f;f;f;8282;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8282;8283;2;f;f;t;0;edbd68c5-97aa-4e56-bb98-56dee8522493",
+			"8283;8284;0;f;f;f;8283;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8284;8285;0;f;f;f;8284;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8284;8285;2;f;f;t;0;7005a739-da1f-41f2-be5a-cbd9e2a98e91",
+			"8285;8286;0;f;f;f;8285;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8286;8287;0;f;f;f;8286;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8286;8287;2;f;f;t;0;2d23676e-d488-45fb-9390-5a6cf8c139d2",
+			"8287;8288;0;f;f;f;8287;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8288;8289;0;f;f;f;8288;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8288;8289;2;f;f;t;0;9d18cdba-ad4d-4765-83ab-24ac44fcbbe7",
+			"8289;8290;0;f;f;f;8289;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8290;8291;0;f;f;f;8290;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8290;8291;2;f;f;t;0;7fe9668c-ba1c-43ce-9928-dfe5b80adb5d",
+			"8291;8292;0;f;f;f;8291;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8292;8293;0;f;f;f;8292;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8292;8293;2;f;f;t;0;0d45ca15-00cd-4cc3-a3e6-d53303479087",
+			"8293;8294;0;f;f;f;8293;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8294;8295;0;f;f;f;8294;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8294;8295;2;f;f;t;0;c699e2a3-197a-4d47-86eb-850dd350c4f1",
+			"8295;8296;0;f;f;f;8295;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8296;8297;0;f;f;f;8296;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8296;8297;2;f;f;t;0;85a75774-c73f-4ae7-845b-b3f0e34be46b",
+			"8297;8298;0;f;f;f;8297;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8298;8299;0;f;f;f;8298;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8298;8299;2;f;f;t;0;1eb658d0-29f7-43b8-8535-d42c0bb123c0",
+			"8299;8300;0;f;f;f;8299;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8300;8301;0;f;f;f;8300;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8300;8301;2;f;f;t;0;cb11e6fd-bdb5-411c-8769-6f467ff780c5",
+			"8301;8302;0;f;f;f;8301;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8302;8303;0;f;f;f;8302;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8302;8303;2;f;f;t;0;0eabd31a-8384-4172-be87-0c14851cc007",
+			"8303;8304;0;f;f;f;8303;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8304;8305;0;f;f;f;8304;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8304;8305;2;f;f;t;0;1ddcdc0f-0cd8-4574-b032-8dbee3716197",
+			"8305;8306;0;f;f;f;8305;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8306;8307;0;f;f;f;8306;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8306;8307;2;f;f;t;0;6865bea8-2cc1-4411-a167-88b3385a9509",
+			"8307;8308;0;f;f;f;8307;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8308;8309;0;f;f;f;8308;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8308;8309;2;f;f;t;0;1a29a920-a9ae-43a2-b552-8cfbec59ab7a",
+			"8309;8310;0;f;f;f;8309;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8310;8311;0;f;f;f;8310;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8310;8311;2;f;f;t;0;ee1d7bc2-28ab-40c7-b84e-fa3b06101026",
+			"8311;8312;0;f;f;f;8311;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8312;8313;0;f;f;f;8312;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8312;8313;2;f;f;t;0;db7777eb-176f-4ad6-91f9-274680f51d07",
+			"8313;8314;0;f;f;f;8313;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8314;8315;0;f;f;f;8314;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8314;8315;2;f;f;t;0;de945cab-c7f1-4b58-9b6d-84e3de901056",
+			"8315;8316;0;f;f;f;8315;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8316;8317;0;f;f;f;8316;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8316;8317;2;f;f;t;0;cd01050c-b3f7-4540-8eaf-76bd134b7ae5",
+			"8317;8318;0;f;f;f;8317;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8318;8319;0;f;f;f;8318;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8318;8319;2;f;f;t;0;74fe5ec2-35b2-4d2d-9e6d-45b53e81e903",
+			"8319;8320;0;f;f;f;8319;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8320;8321;0;f;f;f;8320;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8320;8321;2;f;f;t;0;3b338736-a33a-458e-86b7-6868b749f005",
+			"8321;8322;0;f;f;f;8321;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8322;8323;0;f;f;f;8322;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8323;8324;0;f;f;f;8323;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8322;8324;2;f;f;t;0;c1acfe8b-acd7-49d6-9eaa-977fa2dfad45",
+			"8323;8324;2;f;f;t;0;cf5495f7-dfd0-429d-86ab-1814736213ae",
+			"8324;8325;0;f;f;f;8324;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8325;8326;0;f;f;f;8325;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8326;8327;0;f;f;f;8326;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8326;8327;2;f;f;t;0;cc304263-db4d-4850-916b-26d3a47eef91",
+			"8327;8328;0;f;f;f;8327;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8328;8329;0;f;f;f;8328;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8328;8329;2;f;f;t;0;7855901e-e7b2-450a-9fe4-6687ca28dfb3",
+			"8329;8330;0;f;f;f;8329;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8330;8331;0;f;f;f;8330;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8330;8331;2;f;f;t;0;7db333c2-89b3-4f31-8a09-404298b3de6f",
+			"8331;8332;0;f;f;f;8331;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8332;8333;0;f;f;f;8332;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8332;8333;2;f;f;t;0;c9c6f119-4157-4795-8171-ecc2c595c545",
+			"8333;8334;0;f;f;f;8333;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8334;8335;0;f;f;f;8334;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8334;8335;2;f;f;t;0;10f6c625-a1a9-478e-ae88-2dbb7dfe23a5",
+			"8335;8336;0;f;f;f;8335;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8336;8337;0;f;f;f;8336;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8336;8337;2;f;f;t;0;e2ae1764-3643-4049-9164-7aeeb786248c",
+			"8337;8338;0;f;f;f;8337;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8338;8339;0;f;f;f;8338;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8338;8339;2;f;f;t;0;52ed57e7-1eef-427c-99f9-8b9b353a0adc",
+			"8339;8340;0;f;f;f;8339;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8340;8341;0;f;f;f;8340;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8340;8341;2;f;f;t;0;18e0b586-4761-47a3-b6d2-a215d3c3e8a5",
+			"8341;8342;0;f;f;f;8341;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8342;8343;0;f;f;f;8342;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8342;8343;2;f;f;t;0;58db5ad7-607f-44e2-b7ff-1ed64c16f1ed",
+			"8343;8344;0;f;f;f;8343;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8344;8345;0;f;f;f;8344;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8344;8345;2;f;f;t;0;1cffaf10-03ef-4968-9818-04bbcc2bbbd3",
+			"8345;8346;0;f;f;f;8345;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8346;8347;0;f;f;f;8346;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8346;8347;2;f;f;t;0;d7e2c30f-767c-4ca7-a98a-cca8245ab825",
+			"8347;8348;0;f;f;f;8347;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8348;8349;0;f;f;f;8348;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8348;8349;2;f;f;t;0;9c5e9d4d-3c68-471e-b539-fd29ced7a424",
+			"8349;8350;0;f;f;f;8349;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8350;8351;0;f;f;f;8350;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8350;8351;2;f;f;t;0;8de90af0-7851-42aa-bdbf-488eed5ab78d",
+			"8351;8352;0;f;f;f;8351;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8352;8353;0;f;f;f;8352;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8352;8353;2;f;f;t;0;3e287995-3322-430c-bff2-61817fbf330a",
+			"8353;8354;0;f;f;f;8353;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8354;8355;0;f;f;f;8354;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8354;8355;2;f;f;t;0;61b36164-c942-4814-8d9c-a6f264c69d5b",
+			"8355;8356;0;f;f;f;8355;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8356;8357;0;f;f;f;8356;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8356;8357;2;f;f;t;0;98882b09-23ae-4243-adca-fadd65e52612",
+			"8357;8358;0;f;f;f;8357;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8358;8359;0;f;f;f;8358;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8358;8359;2;f;f;t;0;8860cbf9-93ab-42a3-9e6e-4ba422581e8b",
+			"8359;8360;0;f;f;f;8359;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8360;8361;0;f;f;f;8360;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8360;8361;2;f;f;t;0;5f5eb0ec-111c-439e-a87d-c27d578009e5",
+			"8361;8362;0;f;f;f;8361;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8362;8363;0;f;f;f;8362;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8362;8363;2;f;f;t;0;75506813-124d-4326-8248-f9cd29915a5f",
+			"8363;8364;0;f;f;f;8363;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8364;8365;0;f;f;f;8364;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8364;8365;2;f;f;t;0;8b0b2503-9b45-4657-9f9c-e68ceb5b75b3",
+			"8365;8366;0;f;f;f;8365;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8366;8367;0;f;f;f;8366;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8366;8367;2;f;f;t;0;ccf4e2f7-e50c-468c-92af-063bf59d11c6",
+			"8367;8368;0;f;f;f;8367;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8368;8369;0;f;f;f;8368;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8368;8369;2;f;f;t;0;e0e50954-3ef2-4332-81ad-695f96b0e4fb",
+			"8369;8370;0;f;f;f;8369;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8370;8371;0;f;f;f;8370;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8370;8371;2;f;f;t;0;c6bd86ee-8930-4d90-858d-e6c6dc69eba2",
+			"8371;8372;0;f;f;f;8371;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8372;8373;0;f;f;f;8372;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8372;8373;2;f;f;t;0;38535339-7a8c-4969-bfff-3e8ff18d9d34",
+			"8373;8374;0;f;f;f;8373;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8374;8375;0;f;f;f;8374;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8374;8375;2;f;f;t;0;d8111c5b-4af5-47e7-ab0d-e9ca81dc6163",
+			"8375;8376;0;f;f;f;8375;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8376;8377;0;f;f;f;8376;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8376;8377;2;f;f;t;0;3e453fda-0824-4434-a864-7a4ef64043ee",
+			"8377;8378;0;f;f;f;8377;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8378;8379;0;f;f;f;8378;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8378;8379;2;f;f;t;0;34786e7a-df1c-47f1-aa75-da375453c08f",
+			"8379;8380;0;f;f;f;8379;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8380;8381;0;f;f;f;8380;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8380;8381;2;f;f;t;0;bc5ba6d0-d2e4-4819-8e3b-5f954014ffb6",
+			"8381;8382;0;f;f;f;8381;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8382;8383;0;f;f;f;8382;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8382;8383;2;f;f;t;0;cab6fb17-6736-4d1f-82f3-359437e784b4",
+			"8383;8384;0;f;f;f;8383;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8384;8385;0;f;f;f;8384;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8384;8385;2;f;f;t;0;4f5db753-9bc0-4750-a17e-c9a5ea2e3191",
+			"8385;8386;0;f;f;f;8385;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8386;8387;0;f;f;f;8386;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8386;8387;2;f;f;t;0;42de742c-1295-4255-a9b1-c0326e7f079f",
+			"8387;8388;0;f;f;f;8387;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8388;8389;0;f;f;f;8388;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8388;8389;2;f;f;t;0;c8bb690a-22e5-4401-943b-aff8e52b82d4",
+			"8389;8390;0;f;f;f;8389;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8390;8391;0;f;f;f;8390;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8390;8391;2;f;f;t;0;33899858-0585-41d0-9abd-4d29ca49d8fb",
+			"8391;8392;0;f;f;f;8391;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8392;8393;0;f;f;f;8392;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8392;8393;2;f;f;t;0;eff20567-d488-4853-824d-2067529ce193",
+			"8393;8394;0;f;f;f;8393;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8394;8395;0;f;f;f;8394;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8394;8395;2;f;f;t;0;eac1b35a-0805-4034-89ea-0173d5207a1a",
+			"8395;8396;0;f;f;f;8395;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8396;8397;0;f;f;f;8396;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8396;8397;2;f;f;t;0;56fc1592-5393-4fd9-8e81-59fd25c66eee",
+			"8397;8398;0;f;f;f;8397;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8398;8399;0;f;f;f;8398;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8398;8399;2;f;f;t;0;e6ac9213-c8ca-4d8d-b3f3-c67cc4a3a865",
+			"8399;8400;0;f;f;f;8399;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8400;8401;0;f;f;f;8400;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8400;8401;2;f;f;t;0;dd2c17bb-1f8b-4961-8e5e-e2ed16fb7824",
+			"8401;8402;0;f;f;f;8401;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8402;8403;0;f;f;f;8402;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8402;8403;2;f;f;t;0;84251741-ae28-413f-abc5-fb5f623ea89d",
+			"8403;8404;0;f;f;f;8403;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8404;8405;0;f;f;f;8404;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8404;8405;2;f;f;t;0;5566fd4a-b06e-4ed8-91a2-7d2d16337e23",
+			"8405;8406;0;f;f;f;8405;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8406;8407;0;f;f;f;8406;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8406;8407;2;f;f;t;0;8d43f170-bf30-4d9e-bcb4-10ba3e0d3dd9",
+			"8407;8408;0;f;f;f;8407;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8408;8409;0;f;f;f;8408;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8408;8409;2;f;f;t;0;c9932216-ebba-48f2-b035-937ec3f50298",
+			"8409;8410;0;f;f;f;8409;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8410;8411;0;f;f;f;8410;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8410;8411;2;f;f;t;0;847548ac-c106-4c3f-82e3-aa041022f5d7",
+			"8411;8412;0;f;f;f;8411;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8412;8413;0;f;f;f;8412;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8412;8413;2;f;f;t;0;f94a8cc7-a642-4f73-a905-2d34b9e2f28e",
+			"8413;8414;0;f;f;f;8413;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8414;8415;0;f;f;f;8414;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8414;8415;2;f;f;t;0;67d4759d-0423-469c-a7c4-f13be029067f",
+			"8415;8416;0;f;f;f;8415;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8416;8417;0;f;f;f;8416;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8416;8417;2;f;f;t;0;50044e06-1f07-4eaa-b859-7b04fcd3f50d",
+			"8417;8418;0;f;f;f;8417;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8418;8419;0;f;f;f;8418;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8418;8419;2;f;f;t;0;6a94d7cd-6c35-4db3-bb07-6ac0e651a474",
+			"8419;8420;0;f;f;f;8419;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8420;8421;0;f;f;f;8420;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8420;8421;2;f;f;t;0;e2f79022-f35f-4785-bc52-1da01eea4f77",
+			"8421;8422;0;f;f;f;8421;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8422;8423;0;f;f;f;8422;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8422;8423;2;f;f;t;0;1ccc3a5a-90c9-4a22-95a2-87ea209932a4",
+			"8423;8424;0;f;f;f;8423;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8424;8425;0;f;f;f;8424;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8424;8425;2;f;f;t;0;fc326f5c-e284-4a15-bde5-b6c4dc1d881a",
+			"8425;8426;0;f;f;f;8425;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8426;8427;0;f;f;f;8426;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8426;8427;2;f;f;t;0;f58ef02f-2d21-408d-85d9-4ace7ad3cb51",
+			"8427;8428;0;f;f;f;8427;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8428;8429;0;f;f;f;8428;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8428;8429;2;f;f;t;0;8b10489f-a6e3-46a7-9018-6434a80e3391",
+			"8429;8430;0;f;f;f;8429;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8430;8431;0;f;f;f;8430;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8430;8431;2;f;f;t;0;d235ce58-797c-48fb-98fe-7aa0b2b4c550",
+			"8431;8432;0;f;f;f;8431;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8432;8433;0;f;f;f;8432;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8432;8433;2;f;f;t;0;59f41179-4895-4845-a267-aa0b9caf00b0",
+			"8433;8434;0;f;f;f;8433;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8434;8435;0;f;f;f;8434;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8434;8435;2;f;f;t;0;b05de842-e305-4b83-8001-858e5973764b",
+			"8435;8436;0;f;f;f;8435;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8436;8437;0;f;f;f;8436;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8436;8437;2;f;f;t;0;3a8daced-6735-49d7-b795-c565b4bd89a5",
+			"8437;8438;0;f;f;f;8437;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8438;8439;0;f;f;f;8438;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8438;8439;2;f;f;t;0;138d3361-bdb3-4e94-8271-fbe2e83df79a",
+			"8439;8440;0;f;f;f;8439;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8440;8441;0;f;f;f;8440;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8440;8441;2;f;f;t;0;6ac2f7de-8e37-455d-a164-9a4e7a1c2359",
+			"8441;8442;0;f;f;f;8441;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8442;8443;0;f;f;f;8442;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8442;8443;2;f;f;t;0;832702dd-6211-4ac0-98c2-bcbeabdf691d",
+			"8443;8444;0;f;f;f;8443;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8444;8445;0;f;f;f;8444;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8444;8445;2;f;f;t;0;60772705-5b0a-4394-8563-7f39ab3b94bd",
+			"8445;8446;0;f;f;f;8445;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8446;8447;0;f;f;f;8446;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8446;8447;2;f;f;t;0;f619e7cb-c153-4e22-a2cc-e3f407b8381b",
+			"8447;8448;0;f;f;f;8447;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8448;8449;0;f;f;f;8448;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8448;8449;2;f;f;t;0;6868847e-a34d-4f46-8221-77dacd2d8052",
+			"8449;8450;0;f;f;f;8449;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8450;8451;0;f;f;f;8450;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8450;8451;2;f;f;t;0;11458f8d-cffd-491b-9d71-7e082f594d0d",
+			"8451;8452;0;f;f;f;8451;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8452;8453;0;f;f;f;8452;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8451;8453;2;f;f;t;0;1eab4afd-b780-49b9-a726-316ec1d25df9",
+			"8453;8454;0;f;f;f;8453;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8454;8455;0;f;f;f;8454;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8454;8455;2;f;f;t;0;b08f9ce4-df82-4475-892d-a9554d9f2df9",
+			"8455;8456;0;f;f;f;8455;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8456;8457;0;f;f;f;8456;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8455;8457;2;f;f;t;0;f52f5ca5-acf9-4a39-aeb7-fd3a2ac54121",
+			"8457;8458;0;f;f;f;8457;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8458;8459;0;f;f;f;8458;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8458;8459;2;f;f;t;0;2a054749-13db-48dd-8588-0902408ca520",
+			"8459;8460;0;f;f;f;8459;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8460;8461;0;f;f;f;8460;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8459;8461;2;f;f;t;0;b7d86bac-4b41-409a-8de6-65d7ca369e06",
+			"8461;8462;0;f;f;f;8461;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8462;8463;0;f;f;f;8462;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8462;8463;2;f;f;t;0;64efd493-3a23-4e03-a0d4-0f24e45c90e7",
+			"8463;8464;0;f;f;f;8463;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8464;8465;0;f;f;f;8464;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8464;8465;2;f;f;t;0;5ad33555-dee2-44c7-a354-81a9e832e944",
+			"8465;8466;0;f;f;f;8465;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8466;8467;0;f;f;f;8466;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8466;8467;2;f;f;t;0;02770426-0b02-4e9d-bba0-1198c1ea216f",
+			"8467;8468;0;f;f;f;8467;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8468;8469;0;f;f;f;8468;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8468;8469;2;f;f;t;0;f4461555-247b-4164-8836-58ff9bfa7bc8",
+			"8469;8470;0;f;f;f;8469;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8470;8471;0;f;f;f;8470;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8470;8471;2;f;f;t;0;ecbe3f87-09d7-4b97-9f0d-8a8eca9e1fe4",
+			"8471;8472;0;f;f;f;8471;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8472;8473;0;f;f;f;8472;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8472;8473;2;f;f;t;0;eb5fbc27-56b9-42d7-a927-4b1e3cf51611",
+			"8473;8474;0;f;f;f;8473;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8474;8475;0;f;f;f;8474;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8474;8475;2;f;f;t;0;ece18c1b-ae5e-4b5b-8e03-c7ac6dbef1f5",
+			"8475;8476;0;f;f;f;8475;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8476;8477;0;f;f;f;8476;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8476;8477;2;f;f;t;0;f7b4f075-2cc1-4a5d-93fd-e5708c4049b3",
+			"8477;8478;0;f;f;f;8477;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8478;8479;0;f;f;f;8478;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8478;8479;2;f;f;t;0;33958015-1a1b-42c7-83d9-892895ef4247",
+			"8479;8480;0;f;f;f;8479;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8480;8481;0;f;f;f;8480;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8480;8481;2;f;f;t;0;0c9d9814-21be-4bda-bdd4-8087385b9301",
+			"8481;8482;0;f;f;f;8481;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8482;8483;0;f;f;f;8482;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8482;8483;2;f;f;t;0;4216f22d-dd92-40f1-a519-8ead49cb761a",
+			"8483;8484;0;f;f;f;8483;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8484;8485;0;f;f;f;8484;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8484;8485;2;f;f;t;0;29154425-ab58-490b-8c83-d2647fe49be7",
+			"8485;8486;0;f;f;f;8485;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8486;8487;0;f;f;f;8486;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8486;8487;2;f;f;t;0;1e1625af-6603-4f52-8df8-97b1261a1bb2",
+			"8487;8488;0;f;f;f;8487;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8488;8489;0;f;f;f;8488;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8488;8489;2;f;f;t;0;c5556148-30b7-45d7-abad-28566b7e95b5",
+			"8489;8490;0;f;f;f;8489;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8490;8491;0;f;f;f;8490;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8490;8491;2;f;f;t;0;e1b01495-b433-4646-a4d3-828eeb7522f9",
+			"8491;8492;0;f;f;f;8491;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8492;8493;0;f;f;f;8492;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8492;8493;2;f;f;t;0;55a4c68b-cc0b-41a6-87d7-57591212d69e",
+			"8493;8494;0;f;f;f;8493;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8494;8495;0;f;f;f;8494;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8494;8495;2;f;f;t;0;d416822a-5379-4b7e-9a8e-1129467f9929",
+			"8495;8496;0;f;f;f;8495;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8496;8497;0;f;f;f;8496;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8496;8497;2;f;f;t;0;839a44b7-ca48-4f50-9d49-0d639b71351d",
+			"8497;8498;0;f;f;f;8497;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8498;8499;0;f;f;f;8498;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8498;8499;2;f;f;t;0;3fd43bea-4073-4e22-b202-e2ee05f150af",
+			"8499;8500;0;f;f;f;8499;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8500;8501;0;f;f;f;8500;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8500;8501;2;f;f;t;0;481f3935-c7d2-48b4-8295-022adc377897",
+			"8501;8502;0;f;f;f;8501;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8502;8503;0;f;f;f;8502;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8502;8503;2;f;f;t;0;b7b6a5c9-86fc-4c7b-8eb8-b6e5a6f68d68",
+			"8503;8504;0;f;f;f;8503;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8504;8505;0;f;f;f;8504;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8504;8505;2;f;f;t;0;08a2e9e7-a57c-4d94-915c-0501e063ac55",
+			"8505;8506;0;f;f;f;8505;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8506;8507;0;f;f;f;8506;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8506;8507;2;f;f;t;0;64c58d32-ff92-4a73-b0a3-2c726ad4c45f",
+			"8507;8508;0;f;f;f;8507;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8508;8509;0;f;f;f;8508;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8508;8509;2;f;f;t;0;dc89af0d-26d5-417a-b587-3a8157400365",
+			"8509;8510;0;f;f;f;8509;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8510;8511;0;f;f;f;8510;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8510;8511;2;f;f;t;0;3c48a616-d6e8-43b1-b369-1fa0adaace80",
+			"8511;8512;0;f;f;f;8511;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8512;8513;0;f;f;f;8512;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8512;8513;2;f;f;t;0;e4bee332-6626-4f75-b806-3e9dcdcf7e25",
+			"8513;8514;0;f;f;f;8513;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8514;8515;0;f;f;f;8514;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8514;8515;2;f;f;t;0;2c47ef6c-1bcc-466d-85f2-3b014b88c221",
+			"8515;8516;0;f;f;f;8515;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8516;8517;0;f;f;f;8516;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8516;8517;2;f;f;t;0;cb7ed01f-1b53-451b-86de-d1658944cbfa",
+			"8517;8518;0;f;f;f;8517;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8518;8519;0;f;f;f;8518;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8518;8519;2;f;f;t;0;9305c5ae-c3aa-43fa-9cb4-c12cdbb6ff6e",
+			"8519;8520;0;f;f;f;8519;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8520;8521;0;f;f;f;8520;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8520;8521;2;f;f;t;0;f623984e-76ac-4d0e-a0fc-9868abe43b54",
+			"8521;8522;0;f;f;f;8521;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8522;8523;0;f;f;f;8522;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8522;8523;2;f;f;t;0;f808838f-6b39-43bd-92f3-86d210646c1a",
+			"8523;8524;0;f;f;f;8523;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8524;8525;0;f;f;f;8524;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8524;8525;2;f;f;t;0;d761b6ba-c67a-4743-bac8-71d5dd5de2c9",
+			"8525;8526;0;f;f;f;8525;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8526;8527;0;f;f;f;8526;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8526;8527;2;f;f;t;0;de4d41f0-3e89-4edf-811c-8cff45c65f71",
+			"8527;8528;0;f;f;f;8527;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8528;8529;0;f;f;f;8528;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8528;8529;2;f;f;t;0;b0f47b4a-01df-4c35-b502-13600d8076e9",
+			"8529;8530;0;f;f;f;8529;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8530;8531;0;f;f;f;8530;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8530;8531;2;f;f;t;0;8adf03b5-0768-4d83-b3da-ad9b15cca906",
+			"8531;8532;0;f;f;f;8531;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8532;8533;0;f;f;f;8532;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8532;8533;2;f;f;t;0;7c0bb3f0-4c09-41b5-a538-d13a5ad8af46",
+			"8533;8534;0;f;f;f;8533;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8534;8535;0;f;f;f;8534;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8535;8536;0;f;f;f;8535;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8534;8536;2;f;f;t;0;47001df1-2aa6-4893-bdef-24c80c6115f3",
+			"8535;8536;2;f;f;t;0;51ee90c3-2cf6-4220-8e88-e49a2dab6070",
+			"8536;8537;0;f;f;f;8536;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8537;8538;0;f;f;f;8537;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8538;8539;0;f;f;f;8538;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8538;8539;2;f;f;t;0;374c6631-1623-4da5-90f2-174b68161b34",
+			"8539;8540;0;f;f;f;8539;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8540;8541;0;f;f;f;8540;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8540;8541;2;f;f;t;0;43dd47d1-659f-4bcd-b4a2-3d21787382fa",
+			"8541;8542;0;f;f;f;8541;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8542;8543;0;f;f;f;8542;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8542;8543;2;f;f;t;0;d5f429f6-b3fa-4b96-b099-8ca3313e9a9a",
+			"8543;8544;0;f;f;f;8543;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8544;8545;0;f;f;f;8544;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8544;8545;2;f;f;t;0;a06c9b80-f6e9-41f2-bdcd-c48be9e09709",
+			"8545;8546;0;f;f;f;8545;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8546;8547;0;f;f;f;8546;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8546;8547;2;f;f;t;0;56927209-7911-4349-b565-7c3d850a0b73",
+			"8547;8548;0;f;f;f;8547;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8548;8549;0;f;f;f;8548;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8547;8549;2;f;f;t;0;b13be7cb-0fc3-4cdd-875a-67eea76d83cc",
+			"8549;8550;0;f;f;f;8549;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8550;8551;0;f;f;f;8550;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8550;8551;2;f;f;t;0;8e9efe56-06ab-4094-abc7-e3ecc4c0418d",
+			"8551;8552;0;f;f;f;8551;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8552;8553;0;f;f;f;8552;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8552;8553;2;f;f;t;0;28864b66-afd9-41ae-acd8-a44f8c617971",
+			"8553;8554;0;f;f;f;8553;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8554;8555;0;f;f;f;8554;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8554;8555;2;f;f;t;0;892393dc-baa6-497b-8e40-6662b5da5aac",
+			"8555;8556;0;f;f;f;8555;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8556;8557;0;f;f;f;8556;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8556;8557;2;f;f;t;0;a7237bd2-5b75-4c46-8291-eca5a53d15b3",
+			"8557;8558;0;f;f;f;8557;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8558;8559;0;f;f;f;8558;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8558;8559;2;f;f;t;0;47e0a186-4a73-4096-b0fe-ecc512ccd06b",
+			"8559;8560;0;f;f;f;8559;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8560;8561;0;f;f;f;8560;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8560;8561;2;f;f;t;0;06aaa3ac-eabc-4661-a8e8-42cf8d1bc327",
+			"8561;8562;0;f;f;f;8561;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8562;8563;0;f;f;f;8562;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8562;8563;2;f;f;t;0;268a703c-0bd8-4cc1-bcf4-5da8fcf5fa26",
+			"8563;8564;0;f;f;f;8563;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8564;8565;0;f;f;f;8564;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8564;8565;2;f;f;t;0;0dabac5e-55c9-463d-90c3-5be67c1346d1",
+			"8565;8566;0;f;f;f;8565;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8566;8567;0;f;f;f;8566;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8566;8567;2;f;f;t;0;bd81cb4d-3b4e-483e-9023-0331bbccb8cc",
+			"8567;8568;0;f;f;f;8567;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8568;8569;0;f;f;f;8568;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8568;8569;2;f;f;t;0;a1962236-85d0-4e5e-b7ef-b410e697eabd",
+			"8569;8570;0;f;f;f;8569;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8570;8571;0;f;f;f;8570;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8570;8571;2;f;f;t;0;15567d35-dd47-4be1-96e7-1d2614be696e",
+			"8571;8572;0;f;f;f;8571;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8572;8573;0;f;f;f;8572;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8572;8573;2;f;f;t;0;68f8218a-7c2d-49e5-b62c-5ada3cb32b07",
+			"8573;8574;0;f;f;f;8573;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8574;8575;0;f;f;f;8574;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8574;8575;2;f;f;t;0;025b87c3-bb01-40bf-8017-01a7787e19d7",
+			"8575;8576;0;f;f;f;8575;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8576;8577;0;f;f;f;8576;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8576;8577;2;f;f;t;0;329e0c8c-7464-4835-b1e6-1bca6dcaab94",
+			"8577;8578;0;f;f;f;8577;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8578;8579;0;f;f;f;8578;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8578;8579;2;f;f;t;0;14952eae-ca7a-4960-b076-cfda943fecaa",
+			"8579;8580;0;f;f;f;8579;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8580;8581;0;f;f;f;8580;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8580;8581;2;f;f;t;0;ed5646d9-f949-47e8-adfe-23fb7df77859",
+			"8581;8582;0;f;f;f;8581;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8582;8583;0;f;f;f;8582;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8582;8583;2;f;f;t;0;04467061-e4ee-4ede-807b-70b2171cfa06",
+			"8583;8584;0;f;f;f;8583;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8584;8585;0;f;f;f;8584;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8584;8585;2;f;f;t;0;bf8e771e-180b-4f3d-9be4-606cc952574e",
+			"8585;8586;0;f;f;f;8585;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8586;8587;0;f;f;f;8586;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8586;8587;2;f;f;t;0;d42f4732-c1c8-40ca-85ba-7440869bc4ff",
+			"8587;8588;0;f;f;f;8587;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8588;8589;0;f;f;f;8588;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8588;8589;2;f;f;t;0;659f807e-38dd-4e8d-9931-22ff3db537ce",
+			"8589;8590;0;f;f;f;8589;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8590;8591;0;f;f;f;8590;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8590;8591;2;f;f;t;0;b25f95f8-8de4-42ee-90ec-511b76a7a258",
+			"8591;8592;0;f;f;f;8591;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8592;8593;0;f;f;f;8592;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8592;8593;2;f;f;t;0;a8cac293-ca26-40e7-b7a9-47ad51b46bd9",
+			"8593;8594;0;f;f;f;8593;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8594;8595;0;f;f;f;8594;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8594;8595;2;f;f;t;0;02426035-c8f9-4a0c-b559-f6a690dc367d",
+			"8595;8596;0;f;f;f;8595;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8596;8597;0;f;f;f;8596;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8596;8597;2;f;f;t;0;72c7061c-ebf0-4cad-8825-8ed79804ef3f",
+			"8597;8598;0;f;f;f;8597;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8598;8599;0;f;f;f;8598;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8598;8599;2;f;f;t;0;3500a7fa-8689-4c3d-b401-69fa62c4d7da",
+			"8599;8600;0;f;f;f;8599;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8600;8601;0;f;f;f;8600;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8600;8601;2;f;f;t;0;98641029-21b3-4c50-9dde-e83e96a98b5f",
+			"8601;8602;0;f;f;f;8601;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8602;8603;0;f;f;f;8602;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8602;8603;2;f;f;t;0;eaea5c2b-3ab2-4ea0-a481-4a64f33aeb67",
+			"8603;8604;0;f;f;f;8603;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8604;8605;0;f;f;f;8604;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8604;8605;2;f;f;t;0;9e5d4b66-3597-4af7-9f2d-e3d6edb3fc1f",
+			"8605;8606;0;f;f;f;8605;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8606;8607;0;f;f;f;8606;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8606;8607;2;f;f;t;0;11622dc6-0660-47ee-b521-768f07d81993",
+			"8607;8608;0;f;f;f;8607;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8608;8609;0;f;f;f;8608;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8608;8609;2;f;f;t;0;deb028d5-66c7-43cc-a141-37bdace9f65a",
+			"8609;8610;0;f;f;f;8609;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8610;8611;0;f;f;f;8610;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8610;8611;2;f;f;t;0;b51eea4f-b345-4273-bd8b-6735b23519ba",
+			"8611;8612;0;f;f;f;8611;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8612;8613;0;f;f;f;8612;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8611;8613;2;f;f;t;0;cc045c90-91c8-4556-9bf9-019072fb1e52",
+			"8613;8614;0;f;f;f;8613;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8614;8615;0;f;f;f;8614;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8614;8615;2;f;f;t;0;490179de-ab4b-4ed5-b092-164429e29174",
+			"8615;8616;0;f;f;f;8615;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8616;8617;0;f;f;f;8616;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8615;8617;2;f;f;t;0;1d24024b-5f35-49f2-b8e8-23f47c5716eb",
+			"8617;8618;0;f;f;f;8617;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8618;8619;0;f;f;f;8618;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8618;8619;2;f;f;t;0;1d55e7ad-497f-49f1-9642-2aaed8edf863",
+			"8619;8620;0;f;f;f;8619;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8620;8621;0;f;f;f;8620;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8620;8621;2;f;f;t;0;937ef4f3-e96a-4171-863c-cd6b654af369",
+			"8621;8622;0;f;f;f;8621;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8622;8623;0;f;f;f;8622;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8622;8623;2;f;f;t;0;4762b3a0-69de-4daf-b943-710042a1df1f",
+			"8623;8624;0;f;f;f;8623;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8624;8625;0;f;f;f;8624;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8624;8625;2;f;f;t;0;b9021254-f1e8-4d5f-a12d-afc1999b1aa8",
+			"8625;8626;0;f;f;f;8625;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8626;8627;0;f;f;f;8626;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8626;8627;2;f;f;t;0;143097be-c2b9-4423-800c-df7226950aa9",
+			"8627;8628;0;f;f;f;8627;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8628;8629;0;f;f;f;8628;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8628;8629;2;f;f;t;0;e49263a6-79db-4418-8b68-c08cef3e4e01",
+			"8629;8630;0;f;f;f;8629;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8630;8631;0;f;f;f;8630;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8630;8631;2;f;f;t;0;4c2c3af4-88d3-4a10-a31c-138911e80770",
+			"8631;8632;0;f;f;f;8631;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8632;8633;0;f;f;f;8632;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8631;8633;2;f;f;t;0;109397d6-807d-44aa-a21c-2231d8665654",
+			"8633;8634;0;f;f;f;8633;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8634;8635;0;f;f;f;8634;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8634;8635;2;f;f;t;0;1dfd3ac6-82c2-45cf-ab4e-16e74b58e7c2",
+			"8635;8636;0;f;f;f;8635;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8636;8637;0;f;f;f;8636;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8635;8637;2;f;f;t;0;fa2a70ac-2cba-4b97-a0ad-55efcecc127a",
+			"8637;8638;0;f;f;f;8637;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8638;8639;0;f;f;f;8638;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8639;8640;0;f;f;f;8639;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8638;8640;2;f;f;t;0;fdd15bdb-6ba6-4864-b884-129ad8acf080",
+			"8639;8640;2;f;f;t;0;6f4fa412-180c-4cb8-86d0-46ef0c98a98f",
+			"8640;8641;0;f;f;f;8640;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8641;8642;0;f;f;f;8641;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8642;8643;0;f;f;f;8642;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8642;8643;2;f;f;t;0;cbc27a9d-6e23-478c-9b3c-e1599d2fc31e",
+			"8643;8644;0;f;f;f;8643;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8644;8645;0;f;f;f;8644;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8644;8645;2;f;f;t;0;429c67fb-5a0a-43af-bcc4-898f8f3550dc",
+			"8645;8646;0;f;f;f;8645;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8646;8647;0;f;f;f;8646;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8646;8647;2;f;f;t;0;663f5c8e-f395-4709-a9f9-a326822541df",
+			"8647;8648;0;f;f;f;8647;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8648;8649;0;f;f;f;8648;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8648;8649;2;f;f;t;0;6ad28ad4-fdec-4f00-a9d4-e9182669d6f7",
+			"8649;8650;0;f;f;f;8649;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8650;8651;0;f;f;f;8650;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8650;8651;2;f;f;t;0;065c7556-98e8-4421-83d9-db6ad0248739",
+			"8651;8652;0;f;f;f;8651;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8652;8653;0;f;f;f;8652;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8652;8653;2;f;f;t;0;03e211ae-11d6-4e2b-a428-99536ab97c31",
+			"8653;8654;0;f;f;f;8653;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8654;8655;0;f;f;f;8654;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8654;8655;2;f;f;t;0;90c4303e-2e41-43df-85a0-34c5c3bafce1",
+			"8655;8656;0;f;f;f;8655;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8656;8657;0;f;f;f;8656;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8656;8657;2;f;f;t;0;f8066f37-12d3-422e-a396-665499ab9b34",
+			"8657;8658;0;f;f;f;8657;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8658;8659;0;f;f;f;8658;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8658;8659;2;f;f;t;0;23edd278-9784-445f-a987-c1ed4d61bdf4",
+			"8659;8660;0;f;f;f;8659;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8660;8661;0;f;f;f;8660;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8659;8661;2;f;f;t;0;2480985c-fe38-4791-84e5-8a0092ef4f07",
+			"8661;8662;0;f;f;f;8661;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8662;8663;0;f;f;f;8662;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8662;8663;2;f;f;t;0;a4941fdd-b5d5-4fe1-8273-93da9194078a",
+			"8663;8664;0;f;f;f;8663;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8664;8665;0;f;f;f;8664;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8664;8665;2;f;f;t;0;a9b32638-4ced-4485-8f08-e286d0f08ed3",
+			"8665;8666;0;f;f;f;8665;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8666;8667;0;f;f;f;8666;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8666;8667;2;f;f;t;0;a0bb1934-638e-46c3-913a-07a8f67bc575",
+			"8667;8668;0;f;f;f;8667;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8668;8669;0;f;f;f;8668;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8668;8669;2;f;f;t;0;5d8b0d58-46ff-4fa7-a231-7df17b9bbd2b",
+			"8669;8670;0;f;f;f;8669;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8670;8671;0;f;f;f;8670;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8670;8671;2;f;f;t;0;94a55232-1e09-4065-b891-8cd3a1bf5f9f",
+			"8671;8672;0;f;f;f;8671;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8672;8673;0;f;f;f;8672;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8672;8673;2;f;f;t;0;367eee51-e8e7-49e9-80fe-a374a51862b7",
+			"8673;8674;0;f;f;f;8673;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8674;8675;0;f;f;f;8674;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8674;8675;2;f;f;t;0;309b8494-337c-4a99-b58b-69e851b72d9f",
+			"8675;8676;0;f;f;f;8675;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8676;8677;0;f;f;f;8676;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8676;8677;2;f;f;t;0;2a16cad7-de40-45a3-b7b0-54754b0bc627",
+			"8677;8678;0;f;f;f;8677;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8678;8679;0;f;f;f;8678;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8678;8679;2;f;f;t;0;5ea775cd-5c37-4fe1-846d-31eaeed00822",
+			"8679;8680;0;f;f;f;8679;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8680;8681;0;f;f;f;8680;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8680;8681;2;f;f;t;0;32867582-d0ed-4bef-a185-faeeeb55205d",
+			"8681;8682;0;f;f;f;8681;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8682;8683;0;f;f;f;8682;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8682;8683;2;f;f;t;0;5da753f1-6f33-40d0-8a90-93a8fa7af91c",
+			"8683;8684;0;f;f;f;8683;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8684;8685;0;f;f;f;8684;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8684;8685;2;f;f;t;0;20ae6c15-8764-474f-959c-91035565ba10",
+			"8685;8686;0;f;f;f;8685;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8686;8687;0;f;f;f;8686;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8686;8687;2;f;f;t;0;ba683d2a-5f45-4a87-9e5e-254cbaf3c323",
+			"8687;8688;0;f;f;f;8687;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8688;8689;0;f;f;f;8688;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8688;8689;2;f;f;t;0;370cbedd-9f9a-4f81-8346-f095c94ca631",
+			"8689;8690;0;f;f;f;8689;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8690;8691;0;f;f;f;8690;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8690;8691;2;f;f;t;0;e6cbe44c-a405-4481-a123-3bba851aa1f5",
+			"8691;8692;0;f;f;f;8691;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8692;8693;0;f;f;f;8692;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8692;8693;2;f;f;t;0;277b9a86-cc38-4c22-aba2-ed002a227158",
+			"8693;8694;0;f;f;f;8693;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8694;8695;0;f;f;f;8694;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8694;8695;2;f;f;t;0;159bad31-772c-4ad3-b6db-a1a2d57fb600",
+			"8695;8696;0;f;f;f;8695;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8696;8697;0;f;f;f;8696;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8696;8697;2;f;f;t;0;92208da6-b0ec-42a6-b549-105684d0027e",
+			"8697;8698;0;f;f;f;8697;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8698;8699;0;f;f;f;8698;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8698;8699;2;f;f;t;0;5a20119d-5904-455c-a7fa-6e4c12d6b6b7",
+			"8699;8700;0;f;f;f;8699;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8700;8701;0;f;f;f;8700;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8700;8701;2;f;f;t;0;acef20e9-b3cd-4de6-8d8e-f2b68b2e0bb1",
+			"8701;8702;0;f;f;f;8701;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8702;8703;0;f;f;f;8702;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8702;8703;2;f;f;t;0;68542ffd-81a1-4f66-a079-7cb83e52f135",
+			"8703;8704;0;f;f;f;8703;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8704;8705;0;f;f;f;8704;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8704;8705;2;f;f;t;0;83b8186b-4789-417d-9d29-e9d8317449f4",
+			"8705;8706;0;f;f;f;8705;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8706;8707;0;f;f;f;8706;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8706;8707;2;f;f;t;0;939077d0-d3ff-4d8a-8f94-811215f3a004",
+			"8707;8708;0;f;f;f;8707;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8708;8709;0;f;f;f;8708;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8708;8709;2;f;f;t;0;cc6310bf-fba7-49d5-ba88-acbdd881b0af",
+			"8709;8710;0;f;f;f;8709;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8710;8711;0;f;f;f;8710;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8710;8711;2;f;f;t;0;127cbacb-0dbe-430f-96a2-626faf3d2675",
+			"8711;8712;0;f;f;f;8711;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8712;8713;0;f;f;f;8712;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8712;8713;2;f;f;t;0;e7e0d1bf-0008-4471-8e5e-817b2b39aec9",
+			"8713;8714;0;f;f;f;8713;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8714;8715;0;f;f;f;8714;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8714;8715;2;f;f;t;0;04efe551-4c25-4d16-827c-9b5ef709ac15",
+			"8715;8716;0;f;f;f;8715;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8716;8717;0;f;f;f;8716;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8716;8717;2;f;f;t;0;c6149310-e42a-4af0-8a5c-6ae967544a7d",
+			"8717;8718;0;f;f;f;8717;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8718;8719;0;f;f;f;8718;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8718;8719;2;f;f;t;0;87c405aa-0115-424d-bea7-6d5a566cc756",
+			"8719;8720;0;f;f;f;8719;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8720;8721;0;f;f;f;8720;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8720;8721;2;f;f;t;0;60dffa2c-aa84-4fb7-840a-8b829aa4616d",
+			"8721;8722;0;f;f;f;8721;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8722;8723;0;f;f;f;8722;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8722;8723;2;f;f;t;0;49e3a96a-c376-4a3a-ac75-55b00f644acc",
+			"8723;8724;0;f;f;f;8723;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8724;8725;0;f;f;f;8724;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8724;8725;2;f;f;t;0;f242de35-13ba-4aa6-bfb8-c87e67aeaff1",
+			"8725;8726;0;f;f;f;8725;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8726;8727;0;f;f;f;8726;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8726;8727;2;f;f;t;0;adae6161-64da-48c3-933d-73dfa3fefbfa",
+			"8727;8728;0;f;f;f;8727;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8728;8729;0;f;f;f;8728;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8728;8729;2;f;f;t;0;6bd9229e-a9f7-4a62-a63f-6b2c428f6e37",
+			"8729;8730;0;f;f;f;8729;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8730;8731;0;f;f;f;8730;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8730;8731;2;f;f;t;0;6ce307f6-ccba-417e-8798-64bc0df9cb15",
+			"8731;8732;0;f;f;f;8731;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8732;8733;0;f;f;f;8732;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8732;8733;2;f;f;t;0;01ca59ce-cc94-4cb1-9be4-76bf3572b5da",
+			"8733;8734;0;f;f;f;8733;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8734;8735;0;f;f;f;8734;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8734;8735;2;f;f;t;0;d3b19bdc-347e-4477-9e47-b291142f3ea9",
+			"8735;8736;0;f;f;f;8735;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8736;8737;0;f;f;f;8736;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8736;8737;2;f;f;t;0;ceac37ec-8e5d-479e-b11c-6773ade31406",
+			"8737;8738;0;f;f;f;8737;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8738;8739;0;f;f;f;8738;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8738;8739;2;f;f;t;0;0f708afb-2685-4120-9415-c9fc3a0b8943",
+			"8739;8740;0;f;f;f;8739;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8740;8741;0;f;f;f;8740;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8740;8741;2;f;f;t;0;58045ae5-89a2-483b-ba30-fcdfa9dbb84f",
+			"8741;8742;0;f;f;f;8741;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8742;8743;0;f;f;f;8742;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8742;8743;2;f;f;t;0;ab6b87f5-6650-43e9-838b-6173b20fa027",
+			"8743;8744;0;f;f;f;8743;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8744;8745;0;f;f;f;8744;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8744;8745;2;f;f;t;0;edd08b4c-15a8-47f3-92e9-0fb142439086",
+			"8745;8746;0;f;f;f;8745;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8746;8747;0;f;f;f;8746;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8746;8747;2;f;f;t;0;aeaa3244-83e2-4b66-ae1c-cb6c6d1ab4e4",
+			"8747;8748;0;f;f;f;8747;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8748;8749;0;f;f;f;8748;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8748;8749;2;f;f;t;0;a82b1020-7952-4e16-85c2-5664625712a8",
+			"8749;8750;0;f;f;f;8749;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8750;8751;0;f;f;f;8750;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8750;8751;2;f;f;t;0;745105f9-3685-4b97-b9e3-555bf4a42995",
+			"8751;8752;0;f;f;f;8751;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8752;8753;0;f;f;f;8752;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8752;8753;2;f;f;t;0;b2431787-a171-408a-bcc3-b433c66cec6b",
+			"8753;8754;0;f;f;f;8753;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8754;8755;0;f;f;f;8754;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8754;8755;2;f;f;t;0;9db17f1d-5576-4948-80ce-05f83e482c1f",
+			"8755;8756;0;f;f;f;8755;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8756;8757;0;f;f;f;8756;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8756;8757;2;f;f;t;0;09b3461b-5bed-40f5-b1a6-6e1045b90f30",
+			"8757;8758;0;f;f;f;8757;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8758;8759;0;f;f;f;8758;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8758;8759;2;f;f;t;0;a00b46d7-6f6f-4fb7-affb-3c34165f23dc",
+			"8759;8760;0;f;f;f;8759;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8760;8761;0;f;f;f;8760;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8760;8761;2;f;f;t;0;e301f341-1846-4e0a-ba15-e75302e3295a",
+			"8761;8762;0;f;f;f;8761;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8762;8763;0;f;f;f;8762;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8762;8763;2;f;f;t;0;3dbdea3e-8ae3-4a31-8412-a9d6c7d38065",
+			"8763;8764;0;f;f;f;8763;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8764;8765;0;f;f;f;8764;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8764;8765;2;f;f;t;0;c36caa1c-d2a8-43c4-8c7f-70254f89b985",
+			"8765;8766;0;f;f;f;8765;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8766;8767;0;f;f;f;8766;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8766;8767;2;f;f;t;0;957b6dc3-21ab-4178-8d46-c939c0dc7316",
+			"8767;8768;0;f;f;f;8767;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8768;8769;0;f;f;f;8768;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8768;8769;2;f;f;t;0;fad9d505-c51a-4925-b219-fbff77865d35",
+			"8769;8770;0;f;f;f;8769;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8770;8771;0;f;f;f;8770;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8770;8771;2;f;f;t;0;cfb087cd-8f9e-4d1c-9aec-ba03ed4ae769",
+			"8771;8772;0;f;f;f;8771;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8772;8773;0;f;f;f;8772;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8772;8773;2;f;f;t;0;0d99f2dd-1867-4a3e-84c7-0c083b09bdcf",
+			"8773;8774;0;f;f;f;8773;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8774;8775;0;f;f;f;8774;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8774;8775;2;f;f;t;0;af6801d9-487f-48ae-a350-b512883ff31f",
+			"8775;8776;0;f;f;f;8775;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8776;8777;0;f;f;f;8776;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8776;8777;2;f;f;t;0;3f544740-56b1-4664-a2c0-6e2e6ec332a7",
+			"8777;8778;0;f;f;f;8777;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8778;8779;0;f;f;f;8778;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8778;8779;2;f;f;t;0;8c71f129-bc6d-4a75-8706-77bfc05e3e90",
+			"8779;8780;0;f;f;f;8779;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8780;8781;0;f;f;f;8780;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8780;8781;2;f;f;t;0;b39c0d59-646c-4433-8d32-74f0a14367da",
+			"8781;8782;0;f;f;f;8781;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8782;8783;0;f;f;f;8782;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8782;8783;2;f;f;t;0;72a62b7c-22e0-47ce-a0cd-5d47a99e98c5",
+			"8783;8784;0;f;f;f;8783;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8784;8785;0;f;f;f;8784;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8784;8785;2;f;f;t;0;199f5ee6-c05f-4f6f-89d1-77c93fd27b8e",
+			"8785;8786;0;f;f;f;8785;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8786;8787;0;f;f;f;8786;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8786;8787;2;f;f;t;0;1f660f36-fdf7-4337-b74b-8dff127276d8",
+			"8787;8788;0;f;f;f;8787;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8788;8789;0;f;f;f;8788;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8788;8789;2;f;f;t;0;b385133a-4f41-4236-9abf-a9e7fe36400c",
+			"8789;8790;0;f;f;f;8789;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8790;8791;0;f;f;f;8790;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8790;8791;2;f;f;t;0;7ea3f8dc-71ff-45b9-a69f-ad7030a46f39",
+			"8791;8792;0;f;f;f;8791;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8792;8793;0;f;f;f;8792;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8792;8793;2;f;f;t;0;e42ecfd7-581d-49bb-9572-6d0fae09ac01",
+			"8793;8794;0;f;f;f;8793;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8794;8795;0;f;f;f;8794;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8794;8795;2;f;f;t;0;f8e4ac2f-16ab-4f29-9848-d16cd6ecbd85",
+			"8795;8796;0;f;f;f;8795;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8796;8797;0;f;f;f;8796;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8796;8797;2;f;f;t;0;4a6f4ee9-dc62-4e36-8c9c-2bd3b453f6e8",
+			"8797;8798;0;f;f;f;8797;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8798;8799;0;f;f;f;8798;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8798;8799;2;f;f;t;0;e3732f66-3a5a-4716-9b97-24a6f81516d2",
+			"8799;8800;0;f;f;f;8799;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8800;8801;0;f;f;f;8800;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8800;8801;2;f;f;t;0;ef4fd527-c07b-466b-8ed2-d8ba0b82e42f",
+			"8801;8802;0;f;f;f;8801;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8802;8803;0;f;f;f;8802;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8802;8803;2;f;f;t;0;6e82f46c-6f84-4c23-8bed-693d07e884ee",
+			"8803;8804;0;f;f;f;8803;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8804;8805;0;f;f;f;8804;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8804;8805;2;f;f;t;0;47c521ac-fe77-47bf-9aa5-377d33721783",
+			"8805;8806;0;f;f;f;8805;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8806;8807;0;f;f;f;8806;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8806;8807;2;f;f;t;0;e2f25569-da37-44ec-82a6-402959a976b5",
+			"8807;8808;0;f;f;f;8807;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8808;8809;0;f;f;f;8808;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8808;8809;2;f;f;t;0;01996fb0-5280-4679-ac35-9951eb8f1b48",
+			"8809;8810;0;f;f;f;8809;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8810;8811;0;f;f;f;8810;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8809;8811;2;f;f;t;0;7d0360f2-0c58-47e8-8859-eb80e60d5432",
+			"8811;8812;0;f;f;f;8811;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8812;8813;0;f;f;f;8812;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8813;8814;0;f;f;f;8813;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8812;8814;2;f;f;t;0;b55bd6f3-2cb3-4ac6-8974-81a60dc9a276",
+			"8813;8814;2;f;f;t;0;a84b5a7d-893d-4231-93ba-22b1ad9a3361",
+			"8814;8815;0;f;f;f;8814;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8815;8816;0;f;f;f;8815;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8816;8817;0;f;f;f;8816;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8816;8817;2;f;f;t;0;22891383-d08a-4cd2-8c19-d956bcd0df62",
+			"8817;8818;0;f;f;f;8817;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8818;8819;0;f;f;f;8818;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8818;8819;2;f;f;t;0;dd0e9dfb-1983-442f-be6c-9168cf52611e",
+			"8819;8820;0;f;f;f;8819;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8820;8821;0;f;f;f;8820;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8820;8821;2;f;f;t;0;593bf2cb-6f81-4584-9d6b-20d8c943bb85",
+			"8821;8822;0;f;f;f;8821;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8822;8823;0;f;f;f;8822;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8822;8823;2;f;f;t;0;f59f23fe-0494-4c8c-bbf8-214f350a0ea6",
+			"8823;8824;0;f;f;f;8823;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8824;8825;0;f;f;f;8824;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8824;8825;2;f;f;t;0;6c15c9a3-b294-4000-853a-06de036c6d8d",
+			"8825;8826;0;f;f;f;8825;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8826;8827;0;f;f;f;8826;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8826;8827;2;f;f;t;0;e535de92-24bd-4aa7-a7cd-2209cfd1b483",
+			"8827;8828;0;f;f;f;8827;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8828;8829;0;f;f;f;8828;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8828;8829;2;f;f;t;0;c1d39670-bbb3-471c-80aa-727bbc1212aa",
+			"8829;8830;0;f;f;f;8829;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8830;8831;0;f;f;f;8830;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8830;8831;2;f;f;t;0;b82cb4af-2c23-46ac-8605-0d3a39575a2e",
+			"8831;8832;0;f;f;f;8831;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8832;8833;0;f;f;f;8832;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8832;8833;2;f;f;t;0;6e5064b5-8728-424f-900f-efb0c116a4af",
+			"8833;8834;0;f;f;f;8833;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8834;8835;0;f;f;f;8834;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8834;8835;2;f;f;t;0;2c33703f-b501-4a21-850b-aa6566055b4f",
+			"8835;8836;0;f;f;f;8835;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8836;8837;0;f;f;f;8836;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8836;8837;2;f;f;t;0;f003a16f-bfdd-4707-be24-ab05e0d81ccf",
+			"8837;8838;0;f;f;f;8837;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8838;8839;0;f;f;f;8838;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8838;8839;2;f;f;t;0;6d5d511e-0f0e-4312-b0ce-25f2267c5c1c",
+			"8839;8840;0;f;f;f;8839;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8840;8841;0;f;f;f;8840;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8840;8841;2;f;f;t;0;0456c4d6-fe9d-4681-9059-a1baf35d2113",
+			"8841;8842;0;f;f;f;8841;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8842;8843;0;f;f;f;8842;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8842;8843;2;f;f;t;0;0d565ef3-86f5-41f2-b106-59c2afc84ee8",
+			"8843;8844;0;f;f;f;8843;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8844;8845;0;f;f;f;8844;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8844;8845;2;f;f;t;0;e20e72be-61b3-44a1-9bc4-cfbb5f781f77",
+			"8845;8846;0;f;f;f;8845;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8846;8847;0;f;f;f;8846;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8846;8847;2;f;f;t;0;3d42bca7-5c7b-4486-89b4-74dd3a17c600",
+			"8847;8848;0;f;f;f;8847;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8848;8849;0;f;f;f;8848;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8847;8849;2;f;f;t;0;2cc321df-a53b-4c66-964b-eaaa4c2f91de",
+			"8849;8850;0;f;f;f;8849;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8850;8851;0;f;f;f;8850;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8850;8851;2;f;f;t;0;be58fb41-e0d8-420f-9f41-f76f6e9d44f5",
+			"8851;8852;0;f;f;f;8851;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8852;8853;0;f;f;f;8852;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8851;8853;2;f;f;t;0;357ec812-e378-4ec3-b4e5-f54601014467",
+			"8853;8854;0;f;f;f;8853;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8854;8855;0;f;f;f;8854;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8854;8855;2;f;f;t;0;5e55f02f-590b-44f2-87aa-3ea75e55da82",
+			"8855;8856;0;f;f;f;8855;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8856;8857;0;f;f;f;8856;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8856;8857;2;f;f;t;0;a94b5567-c677-4b88-a13d-b9446ded30d1",
+			"8857;8858;0;f;f;f;8857;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8858;8859;0;f;f;f;8858;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8858;8859;2;f;f;t;0;bbb5a0f4-1a8b-4970-8b7b-2cf89f97e4b8",
+			"8859;8860;0;f;f;f;8859;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8860;8861;0;f;f;f;8860;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8860;8861;2;f;f;t;0;e3e5a5b0-5a44-46c7-a5af-515898caf7c0",
+			"8861;8862;0;f;f;f;8861;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8862;8863;0;f;f;f;8862;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8862;8863;2;f;f;t;0;45acd068-fcd3-47c7-a7f5-e213b94001f2",
+			"8863;8864;0;f;f;f;8863;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8864;8865;0;f;f;f;8864;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8864;8865;2;f;f;t;0;9feb4b43-2aa0-4387-b445-1b87c14b6e40",
+			"8865;8866;0;f;f;f;8865;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8866;8867;0;f;f;f;8866;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8866;8867;2;f;f;t;0;f2f71552-1b45-4da9-9ae2-6dbfc61b3a37",
+			"8867;8868;0;f;f;f;8867;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8868;8869;0;f;f;f;8868;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8868;8869;2;f;f;t;0;d2491055-71f9-4615-9334-4614ed3b80e0",
+			"8869;8870;0;f;f;f;8869;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8870;8871;0;f;f;f;8870;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8870;8871;2;f;f;t;0;2ad96554-52fb-4908-ae2c-5927e8f5fc05",
+			"8871;8872;0;f;f;f;8871;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8872;8873;0;f;f;f;8872;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8872;8873;2;f;f;t;0;2a44a4f5-6843-40e1-aad0-2e0e22403580",
+			"8873;8874;0;f;f;f;8873;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8874;8875;0;f;f;f;8874;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8874;8875;2;f;f;t;0;073bcdb9-ba00-4df2-91fe-c671155392c6",
+			"8875;8876;0;f;f;f;8875;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8876;8877;0;f;f;f;8876;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8876;8877;2;f;f;t;0;d3408f8f-b89f-4735-8234-e0f641b63aad",
+			"8877;8878;0;f;f;f;8877;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8878;8879;0;f;f;f;8878;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8878;8879;2;f;f;t;0;28602c06-8143-4e2f-a4ef-443e12903f18",
+			"8879;8880;0;f;f;f;8879;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8880;8881;0;f;f;f;8880;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8880;8881;2;f;f;t;0;373d6668-7803-482d-96db-1b6fd826cd19",
+			"8881;8882;0;f;f;f;8881;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8882;8883;0;f;f;f;8882;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8882;8883;2;f;f;t;0;cfb26b74-d38d-4e76-a6d6-3b759dbccc0f",
+			"8883;8884;0;f;f;f;8883;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8884;8885;0;f;f;f;8884;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8884;8885;2;f;f;t;0;17b0998e-715d-4361-9720-0d69159a1076",
+			"8885;8886;0;f;f;f;8885;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8886;8887;0;f;f;f;8886;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8886;8887;2;f;f;t;0;3a70733f-c771-40ba-bf25-b6040514e1c2",
+			"8887;8888;0;f;f;f;8887;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8888;8889;0;f;f;f;8888;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8888;8889;2;f;f;t;0;cefbb410-d593-4998-8ebb-7ac4f1475e60",
+			"8889;8890;0;f;f;f;8889;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8890;8891;0;f;f;f;8890;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8890;8891;2;f;f;t;0;dcf107a6-4c6a-4b0a-ab1e-3a3963d6565f",
+			"8891;8892;0;f;f;f;8891;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8892;8893;0;f;f;f;8892;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8892;8893;2;f;f;t;0;754438d1-1ea3-4e86-b252-38da076faf90",
+			"8893;8894;0;f;f;f;8893;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8894;8895;0;f;f;f;8894;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8894;8895;2;f;f;t;0;dbabeb78-4d28-455b-ab65-9ed86e6991e9",
+			"8895;8896;0;f;f;f;8895;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8896;8897;0;f;f;f;8896;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8896;8897;2;f;f;t;0;8b05f525-c055-4ca3-af9c-4c2b43231ba3",
+			"8897;8898;0;f;f;f;8897;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8898;8899;0;f;f;f;8898;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8898;8899;2;f;f;t;0;5be6b23d-79c9-4db6-97f5-58d410688d5d",
+			"8899;8900;0;f;f;f;8899;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8900;8901;0;f;f;f;8900;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8900;8901;2;f;f;t;0;6881e696-564d-46a2-b156-9b61187acd90",
+			"8901;8902;0;f;f;f;8901;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8902;8903;0;f;f;f;8902;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8902;8903;2;f;f;t;0;b76368f0-17e1-4e33-a384-281a64f030ec",
+			"8903;8904;0;f;f;f;8903;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8904;8905;0;f;f;f;8904;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8904;8905;2;f;f;t;0;ad288d89-3634-4a16-afa0-2bb1024167d9",
+			"8905;8906;0;f;f;f;8905;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8906;8907;0;f;f;f;8906;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8906;8907;2;f;f;t;0;51a32680-4a2c-4007-be4f-86345b8dac15",
+			"8907;8908;0;f;f;f;8907;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8908;8909;0;f;f;f;8908;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8908;8909;2;f;f;t;0;44656af8-a151-4ff4-890c-ed74659dc953",
+			"8909;8910;0;f;f;f;8909;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8910;8911;0;f;f;f;8910;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8910;8911;2;f;f;t;0;58b27933-e316-4113-8449-e8f0a9c4d0c1",
+			"8911;8912;0;f;f;f;8911;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8912;8913;0;f;f;f;8912;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8912;8913;2;f;f;t;0;706bb4c1-ecc2-4625-83ea-4ae0671059c3",
+			"8913;8914;0;f;f;f;8913;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8914;8915;0;f;f;f;8914;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8913;8915;2;f;f;t;0;396a38fb-d97f-4568-accf-d1b964589071",
+			"8915;8916;0;f;f;f;8915;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8916;8917;0;f;f;f;8916;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8916;8917;2;f;f;t;0;abce8067-965f-4757-98f3-1d6b09a5d2ea",
+			"8917;8918;0;f;f;f;8917;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8918;8919;0;f;f;f;8918;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8917;8919;2;f;f;t;0;64e6f45c-a657-4506-8bf0-7b9246567157",
+			"8919;8920;0;f;f;f;8919;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8920;8921;0;f;f;f;8920;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8921;8922;0;f;f;f;8921;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8920;8922;2;f;f;t;0;76e4e8b3-9dba-4c95-a59e-14bd27b7f723",
+			"8921;8922;2;f;f;t;0;16780393-8b65-4622-84af-559849765722",
+			"8922;8923;0;f;f;f;8922;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8923;8924;0;f;f;f;8923;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8924;8925;0;f;f;f;8924;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8925;8926;0;f;f;f;8925;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8924;8926;2;f;f;t;0;6d357169-05a6-4f74-9e19-0311161d3a6f",
+			"8925;8926;2;f;f;t;0;7e72a1c3-2628-47a5-91bf-d8c420fdcc5a",
+			"8926;8927;0;f;f;f;8926;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8927;8928;0;f;f;f;8927;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8928;8929;0;f;f;f;8928;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8928;8929;2;f;f;t;0;6b8e5afd-ebf6-4674-9e2d-543d0ceafe0a",
+			"8929;8930;0;f;f;f;8929;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8930;8931;0;f;f;f;8930;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8930;8931;2;f;f;t;0;fb8825d5-938b-408d-9d7a-60d92dbd1283",
+			"8931;8932;0;f;f;f;8931;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8932;8933;0;f;f;f;8932;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8932;8933;2;f;f;t;0;b956dd1a-f943-4519-81f5-497f683ee9c6",
+			"8933;8934;0;f;f;f;8933;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8934;8935;0;f;f;f;8934;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8933;8935;2;f;f;t;0;a2759ac0-c1f2-4aff-a092-a4ae7a94cb12",
+			"8935;8936;0;f;f;f;8935;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8936;8937;0;f;f;f;8936;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8936;8937;2;f;f;t;0;397c811d-bdad-4c72-bb12-98aceb49a03d",
+			"8937;8938;0;f;f;f;8937;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8938;8939;0;f;f;f;8938;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8938;8939;2;f;f;t;0;07249379-ccbe-41ca-89e7-7e77ca9201c7",
+			"8939;8940;0;f;f;f;8939;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8940;8941;0;f;f;f;8940;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8940;8941;2;f;f;t;0;8a9acb59-e5e7-45ce-9b53-7302b54fec22",
+			"8941;8942;0;f;f;f;8941;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8942;8943;0;f;f;f;8942;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8942;8943;2;f;f;t;0;b4b80df6-d0b2-4701-bf60-96b43d966da5",
+			"8943;8944;0;f;f;f;8943;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8944;8945;0;f;f;f;8944;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8945;8946;0;f;f;f;8945;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8944;8946;2;f;f;t;0;5322005c-506d-4d80-a5e9-8ad104d951ec",
+			"8945;8946;2;f;f;t;0;28bc1453-0033-42d5-9b44-73eca6acb675",
+			"8946;8947;0;f;f;f;8946;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8947;8948;0;f;f;f;8947;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8948;8949;0;f;f;f;8948;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8948;8949;2;f;f;t;0;8273c8df-1c28-4ad6-afa1-7af404f91439",
+			"8949;8950;0;f;f;f;8949;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8950;8951;0;f;f;f;8950;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8949;8951;2;f;f;t;0;89879286-a5a6-48a8-8947-6fcbb6bed545",
+			"8951;8952;0;f;f;f;8951;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8952;8953;0;f;f;f;8952;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8952;8953;2;f;f;t;0;2db59713-f67d-4aea-927c-5720fb179450",
+			"8953;8954;0;f;f;f;8953;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8954;8955;0;f;f;f;8954;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8953;8955;2;f;f;t;0;216d0494-17fc-4be1-86cd-1435b5238697",
+			"8955;8956;0;f;f;f;8955;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8956;8957;0;f;f;f;8956;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8956;8957;2;f;f;t;0;15b850f3-923c-41f0-b94c-2005e8a273b6",
+			"8957;8958;0;f;f;f;8957;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8958;8959;0;f;f;f;8958;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8957;8959;2;f;f;t;0;c7a36f1a-0850-4aa5-b7ee-5ba1b72f8a04",
+			"8959;8960;0;f;f;f;8959;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8960;8961;0;f;f;f;8960;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8960;8961;2;f;f;t;0;77e88049-be18-4e9a-ab1b-1f8597c272f4",
+			"8961;8962;0;f;f;f;8961;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8962;8963;0;f;f;f;8962;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8962;8963;2;f;f;t;0;11d12f9f-2b96-4b09-a5df-34cefe87bd85",
+			"8963;8964;0;f;f;f;8963;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8964;8965;0;f;f;f;8964;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8964;8965;2;f;f;t;0;2acde043-8fab-4158-b76b-900a8808cf05",
+			"8965;8966;0;f;f;f;8965;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8966;8967;0;f;f;f;8966;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8966;8967;2;f;f;t;0;01fca4dd-b202-49dc-90d6-ef323b0bc8db",
+			"8967;8968;0;f;f;f;8967;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8968;8969;0;f;f;f;8968;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8968;8969;2;f;f;t;0;90a43af8-dfac-4814-95cb-9af9ae5c025d",
+			"8969;8970;0;f;f;f;8969;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8970;8971;0;f;f;f;8970;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8970;8971;2;f;f;t;0;b2d22485-6700-4bae-9265-07bf2aa4b0a6",
+			"8971;8972;0;f;f;f;8971;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8972;8973;0;f;f;f;8972;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8972;8973;2;f;f;t;0;f4c6b765-5d8d-43eb-a9ac-cee0698d7f48",
+			"8973;8974;0;f;f;f;8973;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8974;8975;0;f;f;f;8974;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8974;8975;2;f;f;t;0;3d0bc071-4dca-4076-adef-513bc2b4e91a",
+			"8975;8976;0;f;f;f;8975;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8976;8977;0;f;f;f;8976;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8976;8977;2;f;f;t;0;55190117-403d-4e4d-a764-b7057d397a5f",
+			"8977;8978;0;f;f;f;8977;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8978;8979;0;f;f;f;8978;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8978;8979;2;f;f;t;0;9697caed-8162-446a-ab72-096502bbc41f",
+			"8979;8980;0;f;f;f;8979;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8980;8981;0;f;f;f;8980;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8980;8981;2;f;f;t;0;30d0344a-8b89-4097-aea0-bb7419a376a5",
+			"8981;8982;0;f;f;f;8981;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8982;8983;0;f;f;f;8982;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8982;8983;2;f;f;t;0;eddbe3f9-07f9-4de1-9d84-d66faee4cab4",
+			"8983;8984;0;f;f;f;8983;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8984;8985;0;f;f;f;8984;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8984;8985;2;f;f;t;0;b2400eed-d487-4aa1-8c36-2b5db239c75d",
+			"8985;8986;0;f;f;f;8985;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8986;8987;0;f;f;f;8986;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8986;8987;2;f;f;t;0;fc5a5392-3171-4a36-b7b1-ae672a0c2983",
+			"8987;8988;0;f;f;f;8987;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8988;8989;0;f;f;f;8988;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8988;8989;2;f;f;t;0;5711ea60-d2ea-4271-b77c-bf435c4abecb",
+			"8989;8990;0;f;f;f;8989;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8990;8991;0;f;f;f;8990;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8990;8991;2;f;f;t;0;8e2c687d-f965-4b5d-8d84-0bb186d9da7a",
+			"8991;8992;0;f;f;f;8991;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8992;8993;0;f;f;f;8992;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8992;8993;2;f;f;t;0;8beec8fa-8884-4abb-9aef-6000dc175be7",
+			"8993;8994;0;f;f;f;8993;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8994;8995;0;f;f;f;8994;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8994;8995;2;f;f;t;0;db16c1d0-5eab-41e8-9e09-d15c83904232",
+			"8995;8996;0;f;f;f;8995;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8996;8997;0;f;f;f;8996;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8996;8997;2;f;f;t;0;2bd000d1-e00f-46a5-b626-f4f670d237e9",
+			"8997;8998;0;f;f;f;8997;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8998;8999;0;f;f;f;8998;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"8998;8999;2;f;f;t;0;f3f42d0d-bcac-4ea3-9d8d-25df90271c0a",
+			"8999;9000;0;f;f;f;8999;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9000;9001;0;f;f;f;9000;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9000;9001;2;f;f;t;0;9c58737c-9c96-4625-93f4-cd7636eb5373",
+			"9001;9002;0;f;f;f;9001;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9002;9003;0;f;f;f;9002;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9002;9003;2;f;f;t;0;ebdd91d8-c059-4811-9d77-1944d779b857",
+			"9003;9004;0;f;f;f;9003;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9004;9005;0;f;f;f;9004;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9004;9005;2;f;f;t;0;d7bebe43-727c-4c34-bf89-406ab0f0c13d",
+			"9005;9006;0;f;f;f;9005;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9006;9007;0;f;f;f;9006;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9006;9007;2;f;f;t;0;0917007e-81b3-42df-9d22-d7efdb787352",
+			"9007;9008;0;f;f;f;9007;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9008;9009;0;f;f;f;9008;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9008;9009;2;f;f;t;0;e27c28da-8a9a-4d2b-bb2b-02dd7546904d",
+			"9009;9010;0;f;f;f;9009;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9010;9011;0;f;f;f;9010;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9010;9011;2;f;f;t;0;cd9ba10a-f943-4927-b371-961f6944e1d8",
+			"9011;9012;0;f;f;f;9011;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9012;9013;0;f;f;f;9012;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9012;9013;2;f;f;t;0;ee260020-f336-4451-b55e-a0a27af69caf",
+			"9013;9014;0;f;f;f;9013;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9014;9015;0;f;f;f;9014;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9014;9015;2;f;f;t;0;3795e864-1a1e-4ee1-9691-f639c9641fca",
+			"9015;9016;0;f;f;f;9015;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9016;9017;0;f;f;f;9016;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9016;9017;2;f;f;t;0;d152c75e-62f7-42d8-bcec-6932c8ea93c3",
+			"9017;9018;0;f;f;f;9017;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9018;9019;0;f;f;f;9018;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9018;9019;2;f;f;t;0;77804f70-a041-4137-9fc6-017b93a74fb5",
+			"9019;9020;0;f;f;f;9019;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9020;9021;0;f;f;f;9020;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9021;9022;0;f;f;f;9021;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9020;9022;2;f;f;t;0;55fc40dd-2364-4ff7-b9c2-81ff0090757d",
+			"9021;9022;2;f;f;t;0;a90bbb48-1ec7-42d5-97b9-f8e51dbe11f8",
+			"9022;9023;0;f;f;f;9022;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9023;9024;0;f;f;f;9023;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9024;9025;0;f;f;f;9024;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9024;9025;2;f;f;t;0;7767ca65-d596-4a1c-8eee-7d93fad7e49f",
+			"9025;9026;0;f;f;f;9025;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9026;9027;0;f;f;f;9026;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9025;9027;2;f;f;t;0;db5b3148-b547-47a6-b906-afc44f2355df",
+			"9027;9028;0;f;f;f;9027;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9028;9029;0;f;f;f;9028;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9028;9029;2;f;f;t;0;a10516e0-bd62-4a27-ad69-5cd4e2541356",
+			"9029;9030;0;f;f;f;9029;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9030;9031;0;f;f;f;9030;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9030;9031;2;f;f;t;0;44f51b83-9386-4e16-b617-4eece670b818",
+			"9031;9032;0;f;f;f;9031;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9032;9033;0;f;f;f;9032;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9032;9033;2;f;f;t;0;bd8fea0b-d804-4100-9b88-609deee81153",
+			"9033;9034;0;f;f;f;9033;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9034;9035;0;f;f;f;9034;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9034;9035;2;f;f;t;0;3a0ad49b-4910-42f6-bf11-d67e261af90e",
+			"9035;9036;0;f;f;f;9035;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9036;9037;0;f;f;f;9036;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9036;9037;2;f;f;t;0;770886c4-9873-4dab-bbbc-6b3343719419",
+			"9037;9038;0;f;f;f;9037;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9038;9039;0;f;f;f;9038;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9038;9039;2;f;f;t;0;68614091-41ab-4c81-a395-fdb5ca86655b",
+			"9039;9040;0;f;f;f;9039;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9040;9041;0;f;f;f;9040;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9040;9041;2;f;f;t;0;4ffa37e9-57c4-4d3f-bf44-f3f5674146f6",
+			"9041;9042;0;f;f;f;9041;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9042;9043;0;f;f;f;9042;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9042;9043;2;f;f;t;0;185fbdc4-ab68-482d-9af9-425ee7fc9c1b",
+			"9043;9044;0;f;f;f;9043;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9044;9045;0;f;f;f;9044;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9044;9045;2;f;f;t;0;55e1a3fb-635a-4570-8288-1179d6ed57f2",
+			"9045;9046;0;f;f;f;9045;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9046;9047;0;f;f;f;9046;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9046;9047;2;f;f;t;0;d51399c6-7a46-4e8a-9f93-e7e08d39fe34",
+			"9047;9048;0;f;f;f;9047;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9048;9049;0;f;f;f;9048;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9048;9049;2;f;f;t;0;97cd41ba-c046-4e66-a29c-a013a428bc2a",
+			"9049;9050;0;f;f;f;9049;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9050;9051;0;f;f;f;9050;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9049;9051;2;f;f;t;0;1b5e5318-0fef-4bb1-9d32-2d856765c175",
+			"9051;9052;0;f;f;f;9051;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9052;9053;0;f;f;f;9052;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9052;9053;2;f;f;t;0;f380d715-3813-4c0d-9b4b-4707e83250d8",
+			"9053;9054;0;f;f;f;9053;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9054;9055;0;f;f;f;9054;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9054;9055;2;f;f;t;0;e0381448-fd22-4446-a82b-c63b4a473d6b",
+			"9055;9056;0;f;f;f;9055;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9056;9057;0;f;f;f;9056;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9056;9057;2;f;f;t;0;2e4d9ee1-3962-496c-aeb9-ed50cdeae2ee",
+			"9057;9058;0;f;f;f;9057;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9058;9059;0;f;f;f;9058;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9058;9059;2;f;f;t;0;02a9329b-e188-45a1-a36e-97a39478476a",
+			"9059;9060;0;f;f;f;9059;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9060;9061;0;f;f;f;9060;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9060;9061;2;f;f;t;0;bde30eae-dcdb-4ca6-90f5-7f4605f83afb",
+			"9061;9062;0;f;f;f;9061;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9062;9063;0;f;f;f;9062;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9062;9063;2;f;f;t;0;320f1fcb-cb1f-4d47-acb8-13d6755a22d9",
+			"9063;9064;0;f;f;f;9063;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9064;9065;0;f;f;f;9064;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9064;9065;2;f;f;t;0;d52aedc4-b834-41e2-85d2-6fca299fea1f",
+			"9065;9066;0;f;f;f;9065;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9066;9067;0;f;f;f;9066;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9066;9067;2;f;f;t;0;66fb1c9f-5b2c-4fa3-91df-ae9c5582cd15",
+			"9067;9068;0;f;f;f;9067;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9068;9069;0;f;f;f;9068;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9067;9069;2;f;f;t;0;ceefcd44-c77d-47b3-8d73-e6fe7f6abe2f",
+			"9069;9070;0;f;f;f;9069;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9070;9071;0;f;f;f;9070;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9070;9071;2;f;f;t;0;ac95fd3e-b974-449e-9e93-efdcec44f097",
+			"9071;9072;0;f;f;f;9071;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9072;9073;0;f;f;f;9072;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9071;9073;2;f;f;t;0;26d1b787-210a-470c-aa0c-4c8ecc5f5343",
+			"9073;9074;0;f;f;f;9073;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9074;9075;0;f;f;f;9074;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9074;9075;2;f;f;t;0;202a1551-2fcb-4e6a-a1ff-41d0c633393d",
+			"9075;9076;0;f;f;f;9075;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9076;9077;0;f;f;f;9076;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9075;9077;2;f;f;t;0;44d2863a-5962-4b81-b4c2-bafa3c2ebe39",
+			"9077;9078;0;f;f;f;9077;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9078;9079;0;f;f;f;9078;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9078;9079;2;f;f;t;0;9f4896f9-d639-49a9-8b29-cf6dbe7ce672",
+			"9079;9080;0;f;f;f;9079;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9080;9081;0;f;f;f;9080;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9080;9081;2;f;f;t;0;7702c489-dcb1-4379-80b6-047a704a958c",
+			"9081;9082;0;f;f;f;9081;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9082;9083;0;f;f;f;9082;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9082;9083;2;f;f;t;0;18ced6e8-56fb-48e5-84b7-77d285d24bd1",
+			"9083;9084;0;f;f;f;9083;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9084;9085;0;f;f;f;9084;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9084;9085;2;f;f;t;0;5b472d4b-0df8-4afb-bb89-43b47f785a5e",
+			"9085;9086;0;f;f;f;9085;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9086;9087;0;f;f;f;9086;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9086;9087;2;f;f;t;0;73ec0e71-5455-445f-881e-ebb759ff3e3b",
+			"9087;9088;0;f;f;f;9087;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9088;9089;0;f;f;f;9088;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9088;9089;2;f;f;t;0;1dc49931-cc26-4910-ab8b-6992aa7d28e1",
+			"9089;9090;0;f;f;f;9089;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9090;9091;0;f;f;f;9090;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9090;9091;2;f;f;t;0;b8ff4753-e348-4fc3-a22d-68a4b9b39e77",
+			"9091;9092;0;f;f;f;9091;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9092;9093;0;f;f;f;9092;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9092;9093;2;f;f;t;0;1def3251-f3da-4ca7-b404-6d7b35c47740",
+			"9093;9094;0;f;f;f;9093;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9094;9095;0;f;f;f;9094;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9094;9095;2;f;f;t;0;ade17c64-23f7-4878-8f60-1a0bf6bb90a7",
+			"9095;9096;0;f;f;f;9095;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9096;9097;0;f;f;f;9096;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9096;9097;2;f;f;t;0;80180ae9-99ce-42dc-9fe1-3e3e24348273",
+			"9097;9098;0;f;f;f;9097;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9098;9099;0;f;f;f;9098;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9098;9099;2;f;f;t;0;32501783-28cd-4daa-8af6-d29b680aefa3",
+			"9099;9100;0;f;f;f;9099;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9100;9101;0;f;f;f;9100;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9100;9101;2;f;f;t;0;ec71a815-d03d-4a8f-bdfa-55071281da98",
+			"9101;9102;0;f;f;f;9101;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9102;9103;0;f;f;f;9102;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9102;9103;2;f;f;t;0;5ca8aae5-0fa4-41d5-bcaa-16bbcbe686a1",
+			"9103;9104;0;f;f;f;9103;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9104;9105;0;f;f;f;9104;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9103;9105;2;f;f;t;0;cfa4b4d5-4bfa-4433-81ec-09abb14c1e28",
+			"9105;9106;0;f;f;f;9105;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9106;9107;0;f;f;f;9106;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9107;9108;0;f;f;f;9107;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9106;9108;2;f;f;t;0;03d71d7c-c489-4b7e-a981-1e02f7541155",
+			"9107;9108;2;f;f;t;0;e0ee7897-d88d-425b-a90b-baf5cd108205",
+			"9108;9109;0;f;f;f;9108;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9109;9110;0;f;f;f;9109;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9110;9111;0;f;f;f;9110;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9111;9112;0;f;f;f;9111;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9110;9112;2;f;f;t;0;b12d9016-05a0-4455-9c7e-3fe7ca9fdbd1",
+			"9111;9112;2;f;f;t;0;2c8bf5c6-1b49-4cc0-b4fa-eedef4fd6270",
+			"9112;9113;0;f;f;f;9112;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9113;9114;0;f;f;f;9113;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9114;9115;0;f;f;f;9114;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9114;9115;2;f;f;t;0;d392c901-5f1a-48b0-991f-028202aa73d1",
+			"9115;9116;0;f;f;f;9115;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9116;9117;0;f;f;f;9116;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9115;9117;2;f;f;t;0;ada0c426-033f-4f4f-bf5b-03b08c86717b",
+			"9117;9118;0;f;f;f;9117;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9118;9119;0;f;f;f;9118;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9118;9119;2;f;f;t;0;02718fd7-e854-4dfd-abf2-cbc513030cf2",
+			"9119;9120;0;f;f;f;9119;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9120;9121;0;f;f;f;9120;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9120;9121;2;f;f;t;0;8c0b5a2a-8384-4218-b629-714ee310fefe",
+			"9121;9122;0;f;f;f;9121;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9122;9123;0;f;f;f;9122;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9122;9123;2;f;f;t;0;7affb4e3-4f77-491f-a9ee-449a8272db7d",
+			"9123;9124;0;f;f;f;9123;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9124;9125;0;f;f;f;9124;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9124;9125;2;f;f;t;0;b8b0376e-081d-410f-9b07-68c3be316f3d",
+			"9125;9126;0;f;f;f;9125;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9126;9127;0;f;f;f;9126;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9126;9127;2;f;f;t;0;221f48c5-a4ea-477b-a183-35a2a1ab6d8c",
+			"9127;9128;0;f;f;f;9127;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9128;9129;0;f;f;f;9128;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9128;9129;2;f;f;t;0;4bb3ad76-f762-429f-8af5-a8f753566297",
+			"9129;9130;0;f;f;f;9129;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9130;9131;0;f;f;f;9130;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9130;9131;2;f;f;t;0;6faffc37-288a-45b6-bf02-9f95bc1dbb10",
+			"9131;9132;0;f;f;f;9131;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9132;9133;0;f;f;f;9132;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9132;9133;2;f;f;t;0;95e47449-4f99-4095-a4af-84194df013e9",
+			"9133;9134;0;f;f;f;9133;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9134;9135;0;f;f;f;9134;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9134;9135;2;f;f;t;0;1693b552-542c-4165-b6a4-4bbb65a8da9a",
+			"9135;9136;0;f;f;f;9135;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9136;9137;0;f;f;f;9136;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9136;9137;2;f;f;t;0;ca61bc48-3f89-40fe-90ed-621074d247e9",
+			"9137;9138;0;f;f;f;9137;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9138;9139;0;f;f;f;9138;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9138;9139;2;f;f;t;0;2fb66a83-8ae4-4e9c-a306-ad813e20f21a",
+			"9139;9140;0;f;f;f;9139;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9140;9141;0;f;f;f;9140;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9140;9141;2;f;f;t;0;f8ff4d94-4f06-4eff-a40b-998053c2e8b4",
+			"9141;9142;0;f;f;f;9141;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9142;9143;0;f;f;f;9142;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9142;9143;2;f;f;t;0;20ac6b54-b180-4e1d-baec-d93938aced51",
+			"9143;9144;0;f;f;f;9143;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9144;9145;0;f;f;f;9144;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9144;9145;2;f;f;t;0;ccc3b9e0-bed8-49d3-bcd3-2d433302de4b",
+			"9145;9146;0;f;f;f;9145;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9146;9147;0;f;f;f;9146;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9146;9147;2;f;f;t;0;52aef3c0-e074-4b45-9a95-ee33abdb0daa",
+			"9147;9148;0;f;f;f;9147;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9148;9149;0;f;f;f;9148;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9148;9149;2;f;f;t;0;2eadd75a-630e-4b2e-a042-3d8b38ec9f01",
+			"9149;9150;0;f;f;f;9149;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9150;9151;0;f;f;f;9150;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9150;9151;2;f;f;t;0;adb36fd1-99c8-4bd6-9118-ec2c492d8efb",
+			"9151;9152;0;f;f;f;9151;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9152;9153;0;f;f;f;9152;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9152;9153;2;f;f;t;0;772cdade-aefd-432e-9939-4ebaa926b82b",
+			"9153;9154;0;f;f;f;9153;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9154;9155;0;f;f;f;9154;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9154;9155;2;f;f;t;0;c77ca343-6c6c-4ccd-bfa0-c8c406e9f06a",
+			"9155;9156;0;f;f;f;9155;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9156;9157;0;f;f;f;9156;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9156;9157;2;f;f;t;0;e129d5f8-c21d-4a58-9f8d-3941480a012b",
+			"9157;9158;0;f;f;f;9157;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9158;9159;0;f;f;f;9158;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9158;9159;2;f;f;t;0;a487841d-2844-40ed-9290-2d1c78b4411e",
+			"9159;9160;0;f;f;f;9159;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9160;9161;0;f;f;f;9160;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9160;9161;2;f;f;t;0;24359901-2358-480d-861b-61678c57d352",
+			"9161;9162;0;f;f;f;9161;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9162;9163;0;f;f;f;9162;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9162;9163;2;f;f;t;0;b46cdc7c-9448-4191-8d2e-721241f1dff8",
+			"9163;9164;0;f;f;f;9163;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9164;9165;0;f;f;f;9164;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9164;9165;2;f;f;t;0;ad789b50-8d8b-43db-8ae6-cdaad826f8fa",
+			"9165;9166;0;f;f;f;9165;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9166;9167;0;f;f;f;9166;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9166;9167;2;f;f;t;0;caa8347a-235a-47ad-a3e5-7a61e3e42e00",
+			"9167;9168;0;f;f;f;9167;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9168;9169;0;f;f;f;9168;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9168;9169;2;f;f;t;0;3e409b65-1fce-42b7-b8aa-a961b5b7d4b8",
+			"9169;9170;0;f;f;f;9169;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9170;9171;0;f;f;f;9170;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9170;9171;2;f;f;t;0;ad4d7e19-7949-492f-ac83-a3e30a5a25f7",
+			"9171;9172;0;f;f;f;9171;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9172;9173;0;f;f;f;9172;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9172;9173;2;f;f;t;0;f8f0d082-9ccc-49a4-8f97-a9a088cea7a5",
+			"9173;9174;0;f;f;f;9173;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9174;9175;0;f;f;f;9174;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9174;9175;2;f;f;t;0;9582e085-630c-4bc3-b1ef-af73a120fe4b",
+			"9175;9176;0;f;f;f;9175;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9176;9177;0;f;f;f;9176;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9176;9177;2;f;f;t;0;728c4b61-4f07-4f11-8f52-43532bd4686f",
+			"9177;9178;0;f;f;f;9177;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9178;9179;0;f;f;f;9178;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9178;9179;2;f;f;t;0;725696db-47b1-474a-9365-fffc73135bdf",
+			"9179;9180;0;f;f;f;9179;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9180;9181;0;f;f;f;9180;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9180;9181;2;f;f;t;0;36b94571-9550-4503-b864-10dbc60523a3",
+			"9181;9182;0;f;f;f;9181;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9182;9183;0;f;f;f;9182;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9183;9184;0;f;f;f;9183;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9182;9184;2;f;f;t;0;e68c510f-2bc7-429f-b82e-671974c69035",
+			"9183;9184;2;f;f;t;0;25f42880-ab93-49a6-a2f1-c4c395a441da",
+			"9184;9185;0;f;f;f;9184;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9185;9186;0;f;f;f;9185;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9186;9187;0;f;f;f;9186;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9186;9187;2;f;f;t;0;4ba65eed-d0e1-45db-851b-8375ff096a51",
+			"9187;9188;0;f;f;f;9187;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9188;9189;0;f;f;f;9188;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9188;9189;2;f;f;t;0;a05dbec6-f882-49e6-9b86-8ff8a1b556ce",
+			"9189;9190;0;f;f;f;9189;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9190;9191;0;f;f;f;9190;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9190;9191;2;f;f;t;0;528214cb-e2b3-4fdc-8d39-a9f969a384d8",
+			"9191;9192;0;f;f;f;9191;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9192;9193;0;f;f;f;9192;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9192;9193;2;f;f;t;0;5d163f90-eab9-42d9-a022-0f2c729848be",
+			"9193;9194;0;f;f;f;9193;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9194;9195;0;f;f;f;9194;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9195;9196;0;f;f;f;9195;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9194;9196;2;f;f;t;0;0c1131eb-9081-4de2-8d62-275c513b9080",
+			"9195;9196;2;f;f;t;0;a3a401f7-cf8c-4f50-9c8b-eddc5a662715",
+			"9196;9197;0;f;f;f;9196;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9197;9198;0;f;f;f;9197;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9198;9199;0;f;f;f;9198;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9198;9199;2;f;f;t;0;420de854-5501-4d0c-88a9-ffdb672bcf7d",
+			"9199;9200;0;f;f;f;9199;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9200;9201;0;f;f;f;9200;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9200;9201;2;f;f;t;0;1dd84f7c-89bb-4472-9ef5-4fa1d1a4e8e0",
+			"9201;9202;0;f;f;f;9201;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9202;9203;0;f;f;f;9202;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9202;9203;2;f;f;t;0;f6e19ada-9694-4c23-bcf8-70d41007e9f4",
+			"9203;9204;0;f;f;f;9203;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9204;9205;0;f;f;f;9204;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9204;9205;2;f;f;t;0;8481498a-f0a2-42b8-b2e6-e4534200b98a",
+			"9205;9206;0;f;f;f;9205;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9206;9207;0;f;f;f;9206;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9207;9208;0;f;f;f;9207;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9206;9208;2;f;f;t;0;7c3f4ecc-b2e8-4b0b-8eff-9d78fd503e2e",
+			"9207;9208;2;f;f;t;0;f115022b-4c43-498b-9c24-0d6eb1bd984c",
+			"9208;9209;0;f;f;f;9208;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9209;9210;0;f;f;f;9209;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9210;9211;0;f;f;f;9210;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9210;9211;2;f;f;t;0;bd27635d-ba05-4829-8c9c-38a272e4111f",
+			"9211;9212;0;f;f;f;9211;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9212;9213;0;f;f;f;9212;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9212;9213;2;f;f;t;0;810bce20-4b18-43d1-8cb5-c12d8819e403",
+			"9213;9214;0;f;f;f;9213;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9214;9215;0;f;f;f;9214;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9214;9215;2;f;f;t;0;202d13d2-008d-40e9-a647-30f40640e424",
+			"9215;9216;0;f;f;f;9215;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9216;9217;0;f;f;f;9216;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9216;9217;2;f;f;t;0;452b0510-84ed-49f5-9d69-51b3faf22bb3",
+			"9217;9218;0;f;f;f;9217;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9218;9219;0;f;f;f;9218;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9218;9219;2;f;f;t;0;edbc16b5-6204-4197-8c64-6db352559cc3",
+			"9219;9220;0;f;f;f;9219;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9220;9221;0;f;f;f;9220;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9220;9221;2;f;f;t;0;9820315a-6432-416f-a287-7a46fd555fa4",
+			"9221;9222;0;f;f;f;9221;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9222;9223;0;f;f;f;9222;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9222;9223;2;f;f;t;0;9d1fc2b7-5fd8-40d5-b699-7cfe21c2a0a3",
+			"9223;9224;0;f;f;f;9223;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9224;9225;0;f;f;f;9224;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9224;9225;2;f;f;t;0;60491333-c12e-4168-b026-9aa95860c69c",
+			"9225;9226;0;f;f;f;9225;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9226;9227;0;f;f;f;9226;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9226;9227;2;f;f;t;0;b2af7521-7857-4b25-8ada-38b6709c497b",
+			"9227;9228;0;f;f;f;9227;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9228;9229;0;f;f;f;9228;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9228;9229;2;f;f;t;0;43be7bd2-24ca-4fbb-b6bc-790f308230ec",
+			"9229;9230;0;f;f;f;9229;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9230;9231;0;f;f;f;9230;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9230;9231;2;f;f;t;0;4216d3fa-f07a-4d0a-8040-0b7e5f8df396",
+			"9231;9232;0;f;f;f;9231;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9232;9233;0;f;f;f;9232;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9232;9233;2;f;f;t;0;1ce1a45e-dd36-44f7-8687-be548ddac647",
+			"9233;9234;0;f;f;f;9233;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9234;9235;0;f;f;f;9234;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9234;9235;2;f;f;t;0;1d857452-e11b-4678-b66c-401bc77ec841",
+			"9235;9236;0;f;f;f;9235;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9236;9237;0;f;f;f;9236;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9236;9237;2;f;f;t;0;4ecc6f4d-cf1c-484a-89a0-648b80f40d44",
+			"9237;9238;0;f;f;f;9237;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9238;9239;0;f;f;f;9238;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9238;9239;2;f;f;t;0;bd119b5b-bd2d-47d4-8f3b-923757fae000",
+			"9239;9240;0;f;f;f;9239;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9240;9241;0;f;f;f;9240;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9240;9241;2;f;f;t;0;06494e1b-8b6b-490d-93f9-8a73141709fc",
+			"9241;9242;0;f;f;f;9241;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9242;9243;0;f;f;f;9242;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9242;9243;2;f;f;t;0;8c5829c3-2730-457c-8bc2-cce249962fdb",
+			"9243;9244;0;f;f;f;9243;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9244;9245;0;f;f;f;9244;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9244;9245;2;f;f;t;0;6995c648-f3f5-4e17-8b81-28f846e5cc30",
+			"9245;9246;0;f;f;f;9245;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9246;9247;0;f;f;f;9246;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9246;9247;2;f;f;t;0;6470a72f-d15d-4270-9c28-cdf6f35eb2d3",
+			"9247;9248;0;f;f;f;9247;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9248;9249;0;f;f;f;9248;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9248;9249;2;f;f;t;0;ed5569c9-cd73-453b-8dd4-c5dd41425951",
+			"9249;9250;0;f;f;f;9249;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9250;9251;0;f;f;f;9250;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9250;9251;2;f;f;t;0;aec8d362-2389-411b-a77f-792ef2677472",
+			"9251;9252;0;f;f;f;9251;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9252;9253;0;f;f;f;9252;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9252;9253;2;f;f;t;0;36a6ddef-9b5d-427a-8af9-e8fb3c91fa5d",
+			"9253;9254;0;f;f;f;9253;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9254;9255;0;f;f;f;9254;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9254;9255;2;f;f;t;0;adb42dd8-2dc2-45e9-9fd6-2cd3cbc37259",
+			"9255;9256;0;f;f;f;9255;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9256;9257;0;f;f;f;9256;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9256;9257;2;f;f;t;0;d84443da-ac5f-4c85-a149-a66e5df894c3",
+			"9257;9258;0;f;f;f;9257;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9258;9259;0;f;f;f;9258;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9258;9259;2;f;f;t;0;05aa24b2-3b4e-49db-86f0-36b85e4e22b8",
+			"9259;9260;0;f;f;f;9259;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9260;9261;0;f;f;f;9260;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9260;9261;2;f;f;t;0;ce495898-afba-4534-97ec-348c0c6ec78e",
+			"9261;9262;0;f;f;f;9261;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9262;9263;0;f;f;f;9262;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9262;9263;2;f;f;t;0;39af404e-94aa-4e96-bd86-18ecf36b9be4",
+			"9263;9264;0;f;f;f;9263;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9264;9265;0;f;f;f;9264;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9264;9265;2;f;f;t;0;c49b2730-ac93-4b53-959b-95f254808f66",
+			"9265;9266;0;f;f;f;9265;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9266;9267;0;f;f;f;9266;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9266;9267;2;f;f;t;0;61b3377c-c147-42d7-bf0d-9fa8ad62b463",
+			"9267;9268;0;f;f;f;9267;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9268;9269;0;f;f;f;9268;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9268;9269;2;f;f;t;0;3057300b-e7ac-44bd-9a96-3003b6c404f6",
+			"9269;9270;0;f;f;f;9269;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9270;9271;0;f;f;f;9270;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9270;9271;2;f;f;t;0;7e5682a9-3215-4343-8ef0-8c573600d8db",
+			"9271;9272;0;f;f;f;9271;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9272;9273;0;f;f;f;9272;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9272;9273;2;f;f;t;0;12f41837-0f0b-4a56-a4a0-98fcc8f4fcac",
+			"9273;9274;0;f;f;f;9273;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9274;9275;0;f;f;f;9274;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9274;9275;2;f;f;t;0;27828824-3359-4112-83d3-5cd6c0239fc9",
+			"9275;9276;0;f;f;f;9275;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9276;9277;0;f;f;f;9276;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9276;9277;2;f;f;t;0;c922590d-4cda-4f19-973c-0a003eb8692d",
+			"9277;9278;0;f;f;f;9277;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9278;9279;0;f;f;f;9278;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9278;9279;2;f;f;t;0;01edfbca-1819-46d6-9a73-a2c62cda3c6a",
+			"9279;9280;0;f;f;f;9279;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9280;9281;0;f;f;f;9280;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9280;9281;2;f;f;t;0;9c2a472e-7275-43ac-ab44-1047b803c499",
+			"9281;9282;0;f;f;f;9281;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9282;9283;0;f;f;f;9282;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9282;9283;2;f;f;t;0;ba829f5e-7d07-4688-b3cc-f206d244ffac",
+			"9283;9284;0;f;f;f;9283;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9284;9285;0;f;f;f;9284;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9284;9285;2;f;f;t;0;89caf4f2-0d5f-400f-a033-051e241d5d10",
+			"9285;9286;0;f;f;f;9285;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9286;9287;0;f;f;f;9286;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9286;9287;2;f;f;t;0;8af88267-3d43-4812-ad98-6a22a02c135e",
+			"9287;9288;0;f;f;f;9287;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9288;9289;0;f;f;f;9288;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9288;9289;2;f;f;t;0;9bb29212-54c4-43a3-a11e-770e57891499",
+			"9289;9290;0;f;f;f;9289;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9290;9291;0;f;f;f;9290;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9290;9291;2;f;f;t;0;7f1d24f1-667f-4ac5-8514-b1b3543565d1",
+			"9291;9292;0;f;f;f;9291;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9292;9293;0;f;f;f;9292;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9292;9293;2;f;f;t;0;dc375865-8f4a-4a4e-b322-ed0c1948d4bb",
+			"9293;9294;0;f;f;f;9293;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9294;9295;0;f;f;f;9294;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9294;9295;2;f;f;t;0;99025f9e-7975-4095-8d89-9bb9abd38dfd",
+			"9295;9296;0;f;f;f;9295;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9296;9297;0;f;f;f;9296;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9296;9297;2;f;f;t;0;8a62f8fc-2f66-492f-9d41-9c0e4be0238e",
+			"9297;9298;0;f;f;f;9297;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9298;9299;0;f;f;f;9298;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9298;9299;2;f;f;t;0;a4fef4af-75e0-4bd0-8e6e-b95a71b9e934",
+			"9299;9300;0;f;f;f;9299;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9300;9301;0;f;f;f;9300;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9300;9301;2;f;f;t;0;bbf800c8-9541-4c7f-9e67-169fce1bf210",
+			"9301;9302;0;f;f;f;9301;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9302;9303;0;f;f;f;9302;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9302;9303;2;f;f;t;0;d6f4a814-9016-408f-a105-8d91eec4cb43",
+			"9303;9304;0;f;f;f;9303;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9304;9305;0;f;f;f;9304;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9304;9305;2;f;f;t;0;08ee3143-dc62-4bc9-a6ba-075a4101ce17",
+			"9305;9306;0;f;f;f;9305;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9306;9307;0;f;f;f;9306;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9306;9307;2;f;f;t;0;2b17887d-6980-442d-b975-4cce1c9df711",
+			"9307;9308;0;f;f;f;9307;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9308;9309;0;f;f;f;9308;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9308;9309;2;f;f;t;0;2ab13628-5a31-4f35-b8ee-86cb7be57f7e",
+			"9309;9310;0;f;f;f;9309;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9310;9311;0;f;f;f;9310;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9310;9311;2;f;f;t;0;5a91c15d-6dc7-4603-b32e-62212048b06b",
+			"9311;9312;0;f;f;f;9311;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9312;9313;0;f;f;f;9312;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9312;9313;2;f;f;t;0;a16c4401-9a76-48d7-a801-c27c5c95be46",
+			"9313;9314;0;f;f;f;9313;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9314;9315;0;f;f;f;9314;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9314;9315;2;f;f;t;0;fc0f5e8d-8847-4b8c-8df7-e2e23b3b140e",
+			"9315;9316;0;f;f;f;9315;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9316;9317;0;f;f;f;9316;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9316;9317;2;f;f;t;0;da8c1479-36d0-4878-9b8f-5bca6a3533f6",
+			"9317;9318;0;f;f;f;9317;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9318;9319;0;f;f;f;9318;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9318;9319;2;f;f;t;0;1f1b5758-58a3-46a5-b741-5db380dfb0d4",
+			"9319;9320;0;f;f;f;9319;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9320;9321;0;f;f;f;9320;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9320;9321;2;f;f;t;0;12b430dc-bc1f-4a5c-b437-d0fea9267a1f",
+			"9321;9322;0;f;f;f;9321;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9322;9323;0;f;f;f;9322;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9322;9323;2;f;f;t;0;bf22011b-e238-4228-a338-6e226b2310e7",
+			"9323;9324;0;f;f;f;9323;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9324;9325;0;f;f;f;9324;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9324;9325;2;f;f;t;0;0c96c3eb-1a6e-4f1c-9883-6c145ec5e364",
+			"9325;9326;0;f;f;f;9325;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9326;9327;0;f;f;f;9326;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9326;9327;2;f;f;t;0;d554368c-aa1b-4f9c-b69a-35946af5fc9a",
+			"9327;9328;0;f;f;f;9327;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9328;9329;0;f;f;f;9328;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9328;9329;2;f;f;t;0;782c1c31-98d0-46ba-b6da-a4ebd798302e",
+			"9329;9330;0;f;f;f;9329;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9330;9331;0;f;f;f;9330;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9331;9332;0;f;f;f;9331;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9330;9332;2;f;f;t;0;dd6dbc6d-f1ae-46a3-adc2-e5110271b76c",
+			"9331;9332;2;f;f;t;0;9a35fe9b-0d9a-489c-b28b-13b06e3646ac",
+			"9332;9333;0;f;f;f;9332;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9333;9334;0;f;f;f;9333;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9334;9335;0;f;f;f;9334;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9334;9335;2;f;f;t;0;b381b420-5220-4e85-8308-2fd124ae041e",
+			"9335;9336;0;f;f;f;9335;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9336;9337;0;f;f;f;9336;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9335;9337;2;f;f;t;0;9f43ee6f-78e1-4385-8c76-c9fbec99b9d7",
+			"9337;9338;0;f;f;f;9337;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9338;9339;0;f;f;f;9338;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9338;9339;2;f;f;t;0;a643c50c-d882-4f02-9b56-06d83a7b6ed4",
+			"9339;9340;0;f;f;f;9339;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9340;9341;0;f;f;f;9340;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9340;9341;2;f;f;t;0;0e075a52-9d32-4f01-9082-ed0b4d06b4da",
+			"9341;9342;0;f;f;f;9341;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9342;9343;0;f;f;f;9342;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9342;9343;2;f;f;t;0;1c94535f-a6a7-41b0-9450-c49685a29aa5",
+			"9343;9344;0;f;f;f;9343;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9344;9345;0;f;f;f;9344;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9344;9345;2;f;f;t;0;5418bb41-4777-4b8d-a6b4-4853bceec743",
+			"9345;9346;0;f;f;f;9345;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9346;9347;0;f;f;f;9346;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9346;9347;2;f;f;t;0;be7099ba-530f-4ffb-a3ac-bd21c53d021a",
+			"9347;9348;0;f;f;f;9347;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9348;9349;0;f;f;f;9348;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9348;9349;2;f;f;t;0;cea7eead-c0fc-4815-9f72-a7b58cb42227",
+			"9349;9350;0;f;f;f;9349;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9350;9351;0;f;f;f;9350;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9350;9351;2;f;f;t;0;026c97e0-6ab6-4730-85f4-61fb4eac4783",
+			"9351;9352;0;f;f;f;9351;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9352;9353;0;f;f;f;9352;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9351;9353;2;f;f;t;0;35a67bc2-2d92-4152-8469-0ab24228a6cc",
+			"9353;9354;0;f;f;f;9353;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9354;9355;0;f;f;f;9354;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9354;9355;2;f;f;t;0;1d5501dd-2d3d-4524-ab61-1de13ac9e3f8",
+			"9355;9356;0;f;f;f;9355;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9356;9357;0;f;f;f;9356;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9355;9357;2;f;f;t;0;3e9cefce-f46e-4f19-b676-f3c42e5f7b4a",
+			"9357;9358;0;f;f;f;9357;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9358;9359;0;f;f;f;9358;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9358;9359;2;f;f;t;0;50f8f518-95b8-492e-ac4e-c8432fb564b8",
+			"9359;9360;0;f;f;f;9359;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9360;9361;0;f;f;f;9360;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9360;9361;2;f;f;t;0;257e5e8d-09ab-418c-ba6c-dd55f39a867c",
+			"9361;9362;0;f;f;f;9361;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9362;9363;0;f;f;f;9362;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9362;9363;2;f;f;t;0;85029f9e-add7-4cf8-ba4b-33fa58b5c120",
+			"9363;9364;0;f;f;f;9363;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9364;9365;0;f;f;f;9364;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9364;9365;2;f;f;t;0;f2484c72-f77a-4aa7-b40a-ac1f44696e7c",
+			"9365;9366;0;f;f;f;9365;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9366;9367;0;f;f;f;9366;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9367;9368;0;f;f;f;9367;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9366;9368;2;f;f;t;0;bea4e070-eabe-4336-a3dd-54d6d2e611cd",
+			"9367;9368;2;f;f;t;0;a74300e1-e2d4-481a-81fa-93df625ac8a7",
+			"9368;9369;0;f;f;f;9368;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9369;9370;0;f;f;f;9369;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9370;9371;0;f;f;f;9370;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9370;9371;2;f;f;t;0;14c9b6a2-50ab-46a8-8976-745ceb13bdce",
+			"9371;9372;0;f;f;f;9371;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9372;9373;0;f;f;f;9372;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9372;9373;2;f;f;t;0;f2f5d6bb-ed56-4b61-83ea-63cfedbe18f4",
+			"9373;9374;0;f;f;f;9373;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9374;9375;0;f;f;f;9374;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9374;9375;2;f;f;t;0;bd15cbdd-ae17-4d56-a4da-be065372e1a1",
+			"9375;9376;0;f;f;f;9375;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9376;9377;0;f;f;f;9376;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9376;9377;2;f;f;t;0;143f3e35-edf7-44c9-b103-ec1103620975",
+			"9377;9378;0;f;f;f;9377;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9378;9379;0;f;f;f;9378;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9378;9379;2;f;f;t;0;ef3b0e3d-042d-4087-af1e-098e0eef4e1f",
+			"9379;9380;0;f;f;f;9379;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9380;9381;0;f;f;f;9380;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9380;9381;2;f;f;t;0;386d9728-99ef-4f1e-aae1-333ac3c8f87d",
+			"9381;9382;0;f;f;f;9381;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9382;9383;0;f;f;f;9382;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9382;9383;2;f;f;t;0;1adac0f8-f25e-497c-a851-348eaf8f9b7f",
+			"9383;9384;0;f;f;f;9383;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9384;9385;0;f;f;f;9384;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9384;9385;2;f;f;t;0;ed51e298-2067-476e-b879-31fdf116e918",
+			"9385;9386;0;f;f;f;9385;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9386;9387;0;f;f;f;9386;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9386;9387;2;f;f;t;0;2b6ef980-dc57-4776-b820-c98ea3edba07",
+			"9387;9388;0;f;f;f;9387;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9388;9389;0;f;f;f;9388;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9389;9390;0;f;f;f;9389;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9388;9390;2;f;f;t;0;96fa16b9-a59f-471d-a3a2-a049db80655a",
+			"9389;9390;2;f;f;t;0;0bf1f0e6-a8c6-416a-b14f-21d6bdb0bdd9",
+			"9390;9391;0;f;f;f;9390;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9391;9392;0;f;f;f;9391;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9392;9393;0;f;f;f;9392;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9392;9393;2;f;f;t;0;a33b2d15-d89a-4fb2-8928-cea4f34d090c",
+			"9393;9394;0;f;f;f;9393;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9394;9395;0;f;f;f;9394;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9393;9395;2;f;f;t;0;b74ee134-753c-46f9-8028-caaf16fb942b",
+			"9395;9396;0;f;f;f;9395;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9396;9397;0;f;f;f;9396;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9396;9397;2;f;f;t;0;a94c1b94-79be-4de3-a493-9b089924d0c3",
+			"9397;9398;0;f;f;f;9397;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9398;9399;0;f;f;f;9398;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9398;9399;2;f;f;t;0;fa5e059d-e286-4823-9ca5-5828db94328e",
+			"9399;9400;0;f;f;f;9399;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9400;9401;0;f;f;f;9400;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9400;9401;2;f;f;t;0;fa0e7fa0-651e-4bff-8216-e200703d29d1",
+			"9401;9402;0;f;f;f;9401;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9402;9403;0;f;f;f;9402;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9402;9403;2;f;f;t;0;aa0f356d-fee0-4f2e-885e-50389bb8a505",
+			"9403;9404;0;f;f;f;9403;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9404;9405;0;f;f;f;9404;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9404;9405;2;f;f;t;0;7c153b04-c053-4a04-b943-3e6e220c543c",
+			"9405;9406;0;f;f;f;9405;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9406;9407;0;f;f;f;9406;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9406;9407;2;f;f;t;0;a2890df3-51bc-4863-94bb-e8de87ab598c",
+			"9407;9408;0;f;f;f;9407;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9408;9409;0;f;f;f;9408;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9408;9409;2;f;f;t;0;05361b52-e508-4e4d-b14c-507673b8a248",
+			"9409;9410;0;f;f;f;9409;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9410;9411;0;f;f;f;9410;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9410;9411;2;f;f;t;0;2a0be2c6-fd44-40a7-866d-1532ef4b03b3",
+			"9411;9412;0;f;f;f;9411;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9412;9413;0;f;f;f;9412;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9412;9413;2;f;f;t;0;baf2002d-d2b7-4222-a730-97776421c292",
+			"9413;9414;0;f;f;f;9413;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9414;9415;0;f;f;f;9414;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9414;9415;2;f;f;t;0;05639f6e-5e08-426d-a97f-1d1fb28e68f0",
+			"9415;9416;0;f;f;f;9415;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9416;9417;0;f;f;f;9416;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9416;9417;2;f;f;t;0;3f5f5a1c-f131-40ba-b759-ced09a0df1ab",
+			"9417;9418;0;f;f;f;9417;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9418;9419;0;f;f;f;9418;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9418;9419;2;f;f;t;0;c9e08e61-5599-42a3-b215-d94242795295",
+			"9419;9420;0;f;f;f;9419;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9420;9421;0;f;f;f;9420;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9420;9421;2;f;f;t;0;ebee0966-19dd-4f7d-bca1-0423061f6ac4",
+			"9421;9422;0;f;f;f;9421;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9422;9423;0;f;f;f;9422;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9422;9423;2;f;f;t;0;81ee39fe-f3db-4c92-8336-17b074cc7688",
+			"9423;9424;0;f;f;f;9423;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9424;9425;0;f;f;f;9424;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9424;9425;2;f;f;t;0;2ffa26a4-1cc9-4585-9ff5-6301766d107b",
+			"9425;9426;0;f;f;f;9425;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9426;9427;0;f;f;f;9426;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9426;9427;2;f;f;t;0;8edd7e8a-d52f-4696-965f-da9900f3458a",
+			"9427;9428;0;f;f;f;9427;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9428;9429;0;f;f;f;9428;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9428;9429;2;f;f;t;0;9337dd98-cd9a-43d9-9942-bf5506186827",
+			"9429;9430;0;f;f;f;9429;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9430;9431;0;f;f;f;9430;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9430;9431;2;f;f;t;0;eff8e21b-a722-4e8a-8c0d-562f71a611c8",
+			"9431;9432;0;f;f;f;9431;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9432;9433;0;f;f;f;9432;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9432;9433;2;f;f;t;0;60a475e5-61d4-41e6-980d-932ebf4189f8",
+			"9433;9434;0;f;f;f;9433;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9434;9435;0;f;f;f;9434;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9434;9435;2;f;f;t;0;79480699-4bda-4ea3-94b3-1ba2876c549c",
+			"9435;9436;0;f;f;f;9435;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9436;9437;0;f;f;f;9436;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9436;9437;2;f;f;t;0;a371ca21-61d4-4a4a-b92c-58ea450699d4",
+			"9437;9438;0;f;f;f;9437;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9438;9439;0;f;f;f;9438;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9438;9439;2;f;f;t;0;1656177a-abc2-4339-900b-753cccbc6d57",
+			"9439;9440;0;f;f;f;9439;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9440;9441;0;f;f;f;9440;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9440;9441;2;f;f;t;0;072774c7-9382-40cb-883b-c1ae17937257",
+			"9441;9442;0;f;f;f;9441;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9442;9443;0;f;f;f;9442;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9442;9443;2;f;f;t;0;d1df721b-72cf-4655-ab1f-afbd2a674a58",
+			"9443;9444;0;f;f;f;9443;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9444;9445;0;f;f;f;9444;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9444;9445;2;f;f;t;0;b42d03f4-7a93-47fe-b0a6-a030bf700770",
+			"9445;9446;0;f;f;f;9445;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9446;9447;0;f;f;f;9446;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9446;9447;2;f;f;t;0;c6c5b5b8-0126-43a1-85ff-27f01d76ed8e",
+			"9447;9448;0;f;f;f;9447;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9448;9449;0;f;f;f;9448;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9448;9449;2;f;f;t;0;aabff301-e105-4ed9-88a6-1f5f302d3f97",
+			"9449;9450;0;f;f;f;9449;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9450;9451;0;f;f;f;9450;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9450;9451;2;f;f;t;0;828d5126-eb8b-4023-bfd8-56c573ee52b0",
+			"9451;9452;0;f;f;f;9451;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9452;9453;0;f;f;f;9452;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9451;9453;2;f;f;t;0;67d2d2c2-f192-4d90-a25d-1b03a135f38e",
+			"9453;9454;0;f;f;f;9453;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9454;9455;0;f;f;f;9454;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9454;9455;2;f;f;t;0;f1902c2a-bba6-4d07-835d-e1d2bc6394ac",
+			"9455;9456;0;f;f;f;9455;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9456;9457;0;f;f;f;9456;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9456;9457;2;f;f;t;0;79d1440c-b998-49f4-b68d-f564bcb3d855",
+			"9457;9458;0;f;f;f;9457;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9458;9459;0;f;f;f;9458;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9458;9459;2;f;f;t;0;7655efaf-aa35-4101-b6d4-a4252781327f",
+			"9459;9460;0;f;f;f;9459;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9460;9461;0;f;f;f;9460;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9459;9461;2;f;f;t;0;65c5d9d5-f147-4ab5-84b8-44f44c252eab",
+			"9461;9462;0;f;f;f;9461;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9462;9463;0;f;f;f;9462;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9462;9463;2;f;f;t;0;590b90b3-739b-487e-b137-1ba99dcd0b99",
+			"9463;9464;0;f;f;f;9463;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9464;9465;0;f;f;f;9464;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9463;9465;2;f;f;t;0;24bcaed2-7440-4b68-977e-89179ace7c57",
+			"9465;9466;0;f;f;f;9465;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9466;9467;0;f;f;f;9466;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9466;9467;2;f;f;t;0;c3623668-b61c-4270-a30b-1531e260151e",
+			"9467;9468;0;f;f;f;9467;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9468;9469;0;f;f;f;9468;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9468;9469;2;f;f;t;0;997c5ca0-47bb-4c5b-a601-8161eb80dfe3",
+			"9469;9470;0;f;f;f;9469;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9470;9471;0;f;f;f;9470;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9470;9471;2;f;f;t;0;544821a2-ebbc-47ea-aee2-f1b1221ba8cc",
+			"9471;9472;0;f;f;f;9471;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9472;9473;0;f;f;f;9472;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9472;9473;2;f;f;t;0;9965ae9d-1de6-4be3-8fdf-70dcb3acdb5d",
+			"9473;9474;0;f;f;f;9473;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9474;9475;0;f;f;f;9474;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9474;9475;2;f;f;t;0;981b4ded-e37e-4278-8cd2-176dd584ac0e",
+			"9475;9476;0;f;f;f;9475;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9476;9477;0;f;f;f;9476;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9476;9477;2;f;f;t;0;dd82ea8c-da31-4888-9e81-8e961ff5d6b0",
+			"9477;9478;0;f;f;f;9477;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9478;9479;0;f;f;f;9478;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9478;9479;2;f;f;t;0;043afead-3a7c-45b9-91eb-7f6b0641ccdc",
+			"9479;9480;0;f;f;f;9479;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9480;9481;0;f;f;f;9480;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9480;9481;2;f;f;t;0;1b173979-b256-4c2d-802a-ce4a84f129ea",
+			"9481;9482;0;f;f;f;9481;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9482;9483;0;f;f;f;9482;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9482;9483;2;f;f;t;0;fb92e5cb-933f-49d2-ae6a-cb4be33a2bb6",
+			"9483;9484;0;f;f;f;9483;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9484;9485;0;f;f;f;9484;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9484;9485;2;f;f;t;0;9c0c72be-565a-4068-a38e-d8712cf8a71b",
+			"9485;9486;0;f;f;f;9485;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9486;9487;0;f;f;f;9486;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9486;9487;2;f;f;t;0;79abc1e3-1302-43b6-ba66-66cd637ab138",
+			"9487;9488;0;f;f;f;9487;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9488;9489;0;f;f;f;9488;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9488;9489;2;f;f;t;0;873db210-9a54-4d3c-8eab-5c70c61055f1",
+			"9489;9490;0;f;f;f;9489;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9490;9491;0;f;f;f;9490;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9490;9491;2;f;f;t;0;9ff425ed-744c-4c4a-8ea1-99492ccdff32",
+			"9491;9492;0;f;f;f;9491;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9492;9493;0;f;f;f;9492;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9492;9493;2;f;f;t;0;fc0a3614-07ad-42c2-8968-7b359f1d6c82",
+			"9493;9494;0;f;f;f;9493;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9494;9495;0;f;f;f;9494;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9494;9495;2;f;f;t;0;12048372-ab01-4f8c-840c-a9ef14764234",
+			"9495;9496;0;f;f;f;9495;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9496;9497;0;f;f;f;9496;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9496;9497;2;f;f;t;0;48eff012-cb3c-42b2-be8d-fa98ec14cded",
+			"9497;9498;0;f;f;f;9497;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9498;9499;0;f;f;f;9498;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9498;9499;2;f;f;t;0;0ed8d52d-119e-4b6f-a7f5-dba6ef88bdd6",
+			"9499;9500;0;f;f;f;9499;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9500;9501;0;f;f;f;9500;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9500;9501;2;f;f;t;0;ebd82881-011b-45d8-a7c2-172bfc666ee0",
+			"9501;9502;0;f;f;f;9501;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9502;9503;0;f;f;f;9502;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9502;9503;2;f;f;t;0;7bcb2f4c-5e0c-4965-9695-2aaf50b1df62",
+			"9503;9504;0;f;f;f;9503;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9504;9505;0;f;f;f;9504;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9504;9505;2;f;f;t;0;48553850-deb1-48d3-a5f8-0a64331fd15a",
+			"9505;9506;0;f;f;f;9505;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9506;9507;0;f;f;f;9506;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9506;9507;2;f;f;t;0;6144a082-0194-46bc-98ad-9c8f79261edb",
+			"9507;9508;0;f;f;f;9507;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9508;9509;0;f;f;f;9508;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9508;9509;2;f;f;t;0;32184643-3aaf-444f-863f-da6fe932a060",
+			"9509;9510;0;f;f;f;9509;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9510;9511;0;f;f;f;9510;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9510;9511;2;f;f;t;0;1c6a9aa7-f2fc-40d5-bc8a-0f909886f8b3",
+			"9511;9512;0;f;f;f;9511;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9512;9513;0;f;f;f;9512;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9512;9513;2;f;f;t;0;2285051d-fede-4d67-b903-116525d25ff4",
+			"9513;9514;0;f;f;f;9513;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9514;9515;0;f;f;f;9514;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9514;9515;2;f;f;t;0;c63e94c1-b88a-49b9-b50e-2f570e352c2d",
+			"9515;9516;0;f;f;f;9515;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9516;9517;0;f;f;f;9516;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9516;9517;2;f;f;t;0;0b3ca1a3-64c0-4642-a89b-77bb5c59c1ac",
+			"9517;9518;0;f;f;f;9517;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9518;9519;0;f;f;f;9518;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9518;9519;2;f;f;t;0;07e09ff3-daf9-4a3a-adcb-17874bd7dca4",
+			"9519;9520;0;f;f;f;9519;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9520;9521;0;f;f;f;9520;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9520;9521;2;f;f;t;0;69671679-2c96-4821-8477-0470097052c5",
+			"9521;9522;0;f;f;f;9521;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9522;9523;0;f;f;f;9522;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9522;9523;2;f;f;t;0;6835c379-94a6-47ec-814a-8d1692d91703",
+			"9523;9524;0;f;f;f;9523;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9524;9525;0;f;f;f;9524;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9524;9525;2;f;f;t;0;75a075ff-35f0-4dbe-8785-462d04fdd86c",
+			"9525;9526;0;f;f;f;9525;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9526;9527;0;f;f;f;9526;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9526;9527;2;f;f;t;0;8f580c0b-2e04-46f6-8232-0d4e290fb294",
+			"9527;9528;0;f;f;f;9527;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9528;9529;0;f;f;f;9528;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9528;9529;2;f;f;t;0;a7343e39-f76e-4432-8bd5-66de51c8a496",
+			"9529;9530;0;f;f;f;9529;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9530;9531;0;f;f;f;9530;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9530;9531;2;f;f;t;0;c7a9965d-20fe-423b-8a16-cce1affd9e5d",
+			"9531;9532;0;f;f;f;9531;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9532;9533;0;f;f;f;9532;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9532;9533;2;f;f;t;0;85f6efd5-bb21-4d10-a35a-8cb48238c6d1",
+			"9533;9534;0;f;f;f;9533;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9534;9535;0;f;f;f;9534;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9534;9535;2;f;f;t;0;a73e7c59-de74-463e-b2dd-4b63d5075b8d",
+			"9535;9536;0;f;f;f;9535;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9536;9537;0;f;f;f;9536;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9536;9537;2;f;f;t;0;2ffcecd2-2729-4d6d-bf13-720705fe236d",
+			"9537;9538;0;f;f;f;9537;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9538;9539;0;f;f;f;9538;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9538;9539;2;f;f;t;0;86aa18ab-4964-400e-b378-a3b69cd40467",
+			"9539;9540;0;f;f;f;9539;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9540;9541;0;f;f;f;9540;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9540;9541;2;f;f;t;0;77ba2313-8bf0-4499-a76f-5782c44061b3",
+			"9541;9542;0;f;f;f;9541;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9542;9543;0;f;f;f;9542;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9542;9543;2;f;f;t;0;4bd02e4b-f275-408f-bfb7-593920dca6ff",
+			"9543;9544;0;f;f;f;9543;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9544;9545;0;f;f;f;9544;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9544;9545;2;f;f;t;0;24c0cc32-23d2-4830-a542-fdc71e27c51e",
+			"9545;9546;0;f;f;f;9545;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9546;9547;0;f;f;f;9546;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9546;9547;2;f;f;t;0;6d9dba79-d59c-4da2-b24e-3d3e4fe3bc0d",
+			"9547;9548;0;f;f;f;9547;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9548;9549;0;f;f;f;9548;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9548;9549;2;f;f;t;0;38b3e245-7fc3-4281-b3b0-98e3a8da8f76",
+			"9549;9550;0;f;f;f;9549;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9550;9551;0;f;f;f;9550;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9550;9551;2;f;f;t;0;0db1ac2c-3594-421e-9438-74f4df546aaa",
+			"9551;9552;0;f;f;f;9551;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9552;9553;0;f;f;f;9552;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9552;9553;2;f;f;t;0;357ad8c7-feba-445b-8c16-0c618c685b1d",
+			"9553;9554;0;f;f;f;9553;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9554;9555;0;f;f;f;9554;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9554;9555;2;f;f;t;0;566b9336-0349-4c45-acfe-bcce673db8fa",
+			"9555;9556;0;f;f;f;9555;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9556;9557;0;f;f;f;9556;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9556;9557;2;f;f;t;0;b516d2ba-7244-45aa-bc09-749579ad0eac",
+			"9557;9558;0;f;f;f;9557;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9558;9559;0;f;f;f;9558;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9558;9559;2;f;f;t;0;62cf9478-9118-4c07-a9bd-4a8dcca5f25d",
+			"9559;9560;0;f;f;f;9559;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9560;9561;0;f;f;f;9560;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9560;9561;2;f;f;t;0;28d82df5-0f59-4bb8-bd90-87257e3225e1",
+			"9561;9562;0;f;f;f;9561;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9562;9563;0;f;f;f;9562;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9562;9563;2;f;f;t;0;d2a6bd18-7eed-416c-8a9a-10f7e54cff53",
+			"9563;9564;0;f;f;f;9563;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9564;9565;0;f;f;f;9564;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9564;9565;2;f;f;t;0;779f01d7-af86-4367-8fab-a07017746628",
+			"9565;9566;0;f;f;f;9565;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9566;9567;0;f;f;f;9566;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9566;9567;2;f;f;t;0;49365bd7-783f-4059-84e0-30f6087048e4",
+			"9567;9568;0;f;f;f;9567;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9568;9569;0;f;f;f;9568;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9568;9569;2;f;f;t;0;d45e20c8-3c44-4a54-8ffa-5b340e38ab1a",
+			"9569;9570;0;f;f;f;9569;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9570;9571;0;f;f;f;9570;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9570;9571;2;f;f;t;0;13503e8e-353b-43c8-89f2-731b0e6f6129",
+			"9571;9572;0;f;f;f;9571;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9572;9573;0;f;f;f;9572;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9572;9573;2;f;f;t;0;f806c04a-31f1-4d44-ae4e-530b6205a9fd",
+			"9573;9574;0;f;f;f;9573;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9574;9575;0;f;f;f;9574;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9574;9575;2;f;f;t;0;8edc5e4f-3a48-4930-a13d-deb37b8eb15e",
+			"9575;9576;0;f;f;f;9575;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9576;9577;0;f;f;f;9576;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9576;9577;2;f;f;t;0;9134afb3-131f-40fc-bb05-2984c34f2e9f",
+			"9577;9578;0;f;f;f;9577;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9578;9579;0;f;f;f;9578;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9578;9579;2;f;f;t;0;13ee5967-6937-4cc8-9462-2b084cde1aa0",
+			"9579;9580;0;f;f;f;9579;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9580;9581;0;f;f;f;9580;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9580;9581;2;f;f;t;0;0b9b4736-c88e-4d07-9e0c-2ae1a29f6130",
+			"9581;9582;0;f;f;f;9581;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9582;9583;0;f;f;f;9582;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9582;9583;2;f;f;t;0;24df3dc7-2c0a-4ddb-accb-dfd8ba9accb2",
+			"9583;9584;0;f;f;f;9583;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9584;9585;0;f;f;f;9584;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9584;9585;2;f;f;t;0;e97ca319-4c1a-4c89-af6e-445505824488",
+			"9585;9586;0;f;f;f;9585;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9586;9587;0;f;f;f;9586;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9586;9587;2;f;f;t;0;b8e68251-8529-4a5c-b114-10cc2c90cdf3",
+			"9587;9588;0;f;f;f;9587;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9588;9589;0;f;f;f;9588;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9588;9589;2;f;f;t;0;a097f018-33a3-4c21-87de-29639f7f2881",
+			"9589;9590;0;f;f;f;9589;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9590;9591;0;f;f;f;9590;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9590;9591;2;f;f;t;0;6507750e-9e06-43a9-8d6d-12f2f8958db2",
+			"9591;9592;0;f;f;f;9591;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9592;9593;0;f;f;f;9592;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9592;9593;2;f;f;t;0;4aee472c-7e64-4a9d-b400-f48bffd94601",
+			"9593;9594;0;f;f;f;9593;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9594;9595;0;f;f;f;9594;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9594;9595;2;f;f;t;0;c417d293-0f7a-4c74-9996-d65b62e94c40",
+			"9595;9596;0;f;f;f;9595;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9596;9597;0;f;f;f;9596;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9596;9597;2;f;f;t;0;8f22793f-5e6f-4e20-b10f-f2702caae8f7",
+			"9597;9598;0;f;f;f;9597;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9598;9599;0;f;f;f;9598;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9598;9599;2;f;f;t;0;4357a0e5-3598-4c07-89cc-2020af7904e0",
+			"9599;9600;0;f;f;f;9599;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9600;9601;0;f;f;f;9600;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9601;9602;0;f;f;f;9601;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9600;9602;2;f;f;t;0;bfc5d2ea-3d99-4270-abd0-83088b45c62d",
+			"9601;9602;2;f;f;t;0;853e71c2-adf3-4d9d-aca1-8b90a8470117",
+			"9602;9603;0;f;f;f;9602;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9603;9604;0;f;f;f;9603;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9604;9605;0;f;f;f;9604;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9604;9605;2;f;f;t;0;7b912908-2cbc-4637-9051-347d2c8dc30d",
+			"9605;9606;0;f;f;f;9605;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9606;9607;0;f;f;f;9606;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9605;9607;2;f;f;t;0;204b5f41-7f47-44b2-9b07-8d5412e248e9",
+			"9607;9608;0;f;f;f;9607;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9608;9609;0;f;f;f;9608;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9608;9609;2;f;f;t;0;7544699b-a1ed-410d-9eee-b38115ca34f8",
+			"9609;9610;0;f;f;f;9609;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9610;9611;0;f;f;f;9610;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9610;9611;2;f;f;t;0;5b96f52b-a647-450f-84ad-b0d89ee5fa80",
+			"9611;9612;0;f;f;f;9611;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9612;9613;0;f;f;f;9612;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9612;9613;2;f;f;t;0;70628da6-2ebe-4c16-a078-10deb79b3fde",
+			"9613;9614;0;f;f;f;9613;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9614;9615;0;f;f;f;9614;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9614;9615;2;f;f;t;0;18385722-5751-4834-8b44-2fa1df42f21d",
+			"9615;9616;0;f;f;f;9615;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9616;9617;0;f;f;f;9616;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9616;9617;2;f;f;t;0;d01c4de6-4047-45e4-9027-d5116a23acdd",
+			"9617;9618;0;f;f;f;9617;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9618;9619;0;f;f;f;9618;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9618;9619;2;f;f;t;0;acd89165-9517-41d5-9072-3d2e6ce82634",
+			"9619;9620;0;f;f;f;9619;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9620;9621;0;f;f;f;9620;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9620;9621;2;f;f;t;0;9f83e9a5-0add-4cc5-9265-7c7841697c9b",
+			"9621;9622;0;f;f;f;9621;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9622;9623;0;f;f;f;9622;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9622;9623;2;f;f;t;0;1b4dd89f-f244-475c-8d5c-07714696ad44",
+			"9623;9624;0;f;f;f;9623;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9624;9625;0;f;f;f;9624;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9624;9625;2;f;f;t;0;1f6701b9-0264-4429-86d4-65d5dd082cb3",
+			"9625;9626;0;f;f;f;9625;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9626;9627;0;f;f;f;9626;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9626;9627;2;f;f;t;0;a3c387d0-522b-4105-8a2c-fda5e9fa01c0",
+			"9627;9628;0;f;f;f;9627;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9628;9629;0;f;f;f;9628;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9628;9629;2;f;f;t;0;207178d7-778c-499d-9970-6a8ae2148ec6",
+			"9629;9630;0;f;f;f;9629;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9630;9631;0;f;f;f;9630;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9630;9631;2;f;f;t;0;99e59904-7bb9-4742-8dd3-ed8c0942d861",
+			"9631;9632;0;f;f;f;9631;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9632;9633;0;f;f;f;9632;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9632;9633;2;f;f;t;0;9e11368a-7cc8-40cd-ae07-4b540742cdea",
+			"9633;9634;0;f;f;f;9633;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9634;9635;0;f;f;f;9634;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9634;9635;2;f;f;t;0;573cf3c7-77d3-4797-84e6-8cb434872753",
+			"9635;9636;0;f;f;f;9635;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9636;9637;0;f;f;f;9636;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9636;9637;2;f;f;t;0;38befb7a-60b5-45d0-ad4d-37d38ee0c201",
+			"9637;9638;0;f;f;f;9637;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9638;9639;0;f;f;f;9638;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9638;9639;2;f;f;t;0;fe97b91b-42a8-4fdc-bd7e-d10237b3a48e",
+			"9639;9640;0;f;f;f;9639;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9640;9641;0;f;f;f;9640;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9640;9641;2;f;f;t;0;33d57826-7c68-4b8b-a63f-74306b5c2674",
+			"9641;9642;0;f;f;f;9641;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9642;9643;0;f;f;f;9642;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9642;9643;2;f;f;t;0;53fb7621-3f47-4f50-bce4-2adf9ef9fe37",
+			"9643;9644;0;f;f;f;9643;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9644;9645;0;f;f;f;9644;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9644;9645;2;f;f;t;0;34e14022-2e12-46a3-a075-40e24004bfef",
+			"9645;9646;0;f;f;f;9645;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9646;9647;0;f;f;f;9646;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9646;9647;2;f;f;t;0;fce55389-a23a-4ce9-8701-13cdb072e24d",
+			"9647;9648;0;f;f;f;9647;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9648;9649;0;f;f;f;9648;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9647;9649;2;f;f;t;0;07fd3653-5965-4663-9b09-c59710512ea8",
+			"9649;9650;0;f;f;f;9649;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9650;9651;0;f;f;f;9650;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9650;9651;2;f;f;t;0;f2b17a5e-6314-40a3-946b-bdf9be27fdbc",
+			"9651;9652;0;f;f;f;9651;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9652;9653;0;f;f;f;9652;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9651;9653;2;f;f;t;0;964e7108-6da9-4228-94cc-71380f749740",
+			"9653;9654;0;f;f;f;9653;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9654;9655;0;f;f;f;9654;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9654;9655;2;f;f;t;0;ca378d7b-4933-4957-830e-68cc44828f78",
+			"9655;9656;0;f;f;f;9655;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9656;9657;0;f;f;f;9656;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9655;9657;2;f;f;t;0;d2a313d6-fe73-4bba-ab40-dde2640b87ff",
+			"9657;9658;0;f;f;f;9657;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9658;9659;0;f;f;f;9658;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9659;9660;0;f;f;f;9659;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9658;9660;2;f;f;t;0;bcc9da23-c6f2-4007-bc86-7329c5a1c842",
+			"9659;9660;2;f;f;t;0;22a9aed9-96a2-4db0-81f1-0d74013f3cba",
+			"9660;9661;0;f;f;f;9660;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9661;9662;0;f;f;f;9661;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9662;9663;0;f;f;f;9662;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9662;9663;2;f;f;t;0;6af59c15-acd8-4a8e-981a-a3a0b585df8d",
+			"9663;9664;0;f;f;f;9663;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9664;9665;0;f;f;f;9664;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9664;9665;2;f;f;t;0;81e897a6-c538-40e1-ad8a-3bc9d46a19cc",
+			"9665;9666;0;f;f;f;9665;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9666;9667;0;f;f;f;9666;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9666;9667;2;f;f;t;0;29aef04a-caca-450a-b4e6-5f49d65070d4",
+			"9667;9668;0;f;f;f;9667;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9668;9669;0;f;f;f;9668;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9668;9669;2;f;f;t;0;67d9a7a9-2ef2-4dd4-b303-3556af3386d7",
+			"9669;9670;0;f;f;f;9669;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9670;9671;0;f;f;f;9670;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9670;9671;2;f;f;t;0;3ebffa7d-5e69-4e55-935f-132320e0739a",
+			"9671;9672;0;f;f;f;9671;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9672;9673;0;f;f;f;9672;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9672;9673;2;f;f;t;0;03dc1c61-a942-45d4-be05-9713af054c56",
+			"9673;9674;0;f;f;f;9673;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9674;9675;0;f;f;f;9674;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9674;9675;2;f;f;t;0;0dbd8544-9339-4246-bddf-a2c991e22a02",
+			"9675;9676;0;f;f;f;9675;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9676;9677;0;f;f;f;9676;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9676;9677;2;f;f;t;0;54bfef0f-7964-44b6-88dd-1a48b9aacea0",
+			"9677;9678;0;f;f;f;9677;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9678;9679;0;f;f;f;9678;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9678;9679;2;f;f;t;0;2a4fcd6a-9c48-4eda-8a69-775eca7a85b6",
+			"9679;9680;0;f;f;f;9679;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9680;9681;0;f;f;f;9680;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9680;9681;2;f;f;t;0;f73c066f-3284-4df3-aa05-b68dc1a2479a",
+			"9681;9682;0;f;f;f;9681;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9682;9683;0;f;f;f;9682;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9682;9683;2;f;f;t;0;08393df9-e944-4092-80a6-16616d73d3ad",
+			"9683;9684;0;f;f;f;9683;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9684;9685;0;f;f;f;9684;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9684;9685;2;f;f;t;0;f2d9955d-799a-475a-b5c5-9396e7cc057c",
+			"9685;9686;0;f;f;f;9685;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9686;9687;0;f;f;f;9686;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9686;9687;2;f;f;t;0;8c146678-63e3-4170-9400-33cf06aa2aa1",
+			"9687;9688;0;f;f;f;9687;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9688;9689;0;f;f;f;9688;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9688;9689;2;f;f;t;0;d32fe3b8-76c2-454c-b907-165bd6bc8166",
+			"9689;9690;0;f;f;f;9689;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9690;9691;0;f;f;f;9690;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9690;9691;2;f;f;t;0;d8fa9c1a-7f83-44f2-8e80-ccbd74491a80",
+			"9691;9692;0;f;f;f;9691;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9692;9693;0;f;f;f;9692;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9692;9693;2;f;f;t;0;a540166e-5a38-4765-8c97-5cf7f57196a4",
+			"9693;9694;0;f;f;f;9693;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9694;9695;0;f;f;f;9694;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9694;9695;2;f;f;t;0;0346dd1d-4cb5-47a1-acd5-74101cd436e6",
+			"9695;9696;0;f;f;f;9695;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9696;9697;0;f;f;f;9696;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9696;9697;2;f;f;t;0;61b4c1a2-d3d3-4490-bc15-e4d3d1241f3e",
+			"9697;9698;0;f;f;f;9697;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9698;9699;0;f;f;f;9698;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9698;9699;2;f;f;t;0;8c46d0b1-0fdb-4e27-8c33-28efa15631c1",
+			"9699;9700;0;f;f;f;9699;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9700;9701;0;f;f;f;9700;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9700;9701;2;f;f;t;0;d03f9d8b-8288-4da8-af5f-88be33ee24e7",
+			"9701;9702;0;f;f;f;9701;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9702;9703;0;f;f;f;9702;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9702;9703;2;f;f;t;0;74fd2df1-cc50-417d-b4d6-b72a6e2bc33d",
+			"9703;9704;0;f;f;f;9703;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9704;9705;0;f;f;f;9704;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9704;9705;2;f;f;t;0;c9f9e255-8a29-4df6-8c54-f52cd986b2b1",
+			"9705;9706;0;f;f;f;9705;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9706;9707;0;f;f;f;9706;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9706;9707;2;f;f;t;0;6c98f0bf-c017-4eed-82c1-902af6394279",
+			"9707;9708;0;f;f;f;9707;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9708;9709;0;f;f;f;9708;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9708;9709;2;f;f;t;0;157e9b4b-9327-496b-ba3c-2fc69b4b16eb",
+			"9709;9710;0;f;f;f;9709;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9710;9711;0;f;f;f;9710;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9710;9711;2;f;f;t;0;735a1e60-b7e4-48e5-a67b-6f3bc262d43f",
+			"9711;9712;0;f;f;f;9711;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9712;9713;0;f;f;f;9712;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9712;9713;2;f;f;t;0;0e94605d-cf88-4872-b4b5-9104d73b7d41",
+			"9713;9714;0;f;f;f;9713;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9714;9715;0;f;f;f;9714;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9713;9715;2;f;f;t;0;1dc60564-0b8f-4fae-aec8-4e8643e16845",
+			"9715;9716;0;f;f;f;9715;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9716;9717;0;f;f;f;9716;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9716;9717;2;f;f;t;0;b6ce24c0-34fd-4bd2-942b-38181daec1cb",
+			"9717;9718;0;f;f;f;9717;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9718;9719;0;f;f;f;9718;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9718;9719;2;f;f;t;0;8c657f18-1664-4a0f-a65d-6085142be3f0",
+			"9719;9720;0;f;f;f;9719;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9720;9721;0;f;f;f;9720;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9720;9721;2;f;f;t;0;9905a329-46dd-44d7-bf46-210219ec7c16",
+			"9721;9722;0;f;f;f;9721;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9722;9723;0;f;f;f;9722;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9722;9723;2;f;f;t;0;a521770a-b8cd-47ba-ba04-2cc5b1b4a7b0",
+			"9723;9724;0;f;f;f;9723;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9724;9725;0;f;f;f;9724;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9724;9725;2;f;f;t;0;48f2ea73-c425-4f85-b7d4-c3cf01a48c07",
+			"9725;9726;0;f;f;f;9725;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9726;9727;0;f;f;f;9726;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9726;9727;2;f;f;t;0;4fdd0bb2-fc10-49d5-a059-bae7c7991c52",
+			"9727;9728;0;f;f;f;9727;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9728;9729;0;f;f;f;9728;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9728;9729;2;f;f;t;0;d1dc2713-4bfd-4e0c-913d-16d6288e3ff8",
+			"9729;9730;0;f;f;f;9729;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9730;9731;0;f;f;f;9730;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9730;9731;2;f;f;t;0;60247f50-b6d8-4864-976b-c4d59664b87e",
+			"9731;9732;0;f;f;f;9731;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9732;9733;0;f;f;f;9732;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9732;9733;2;f;f;t;0;ac64509a-4085-41cb-9e2b-92014ea8ae2f",
+			"9733;9734;0;f;f;f;9733;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9734;9735;0;f;f;f;9734;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9734;9735;2;f;f;t;0;7850338b-4b74-40a0-b867-2692cccb96d9",
+			"9735;9736;0;f;f;f;9735;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9736;9737;0;f;f;f;9736;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9736;9737;2;f;f;t;0;a033b6f2-7a13-444a-b6c8-ab8da239524e",
+			"9737;9738;0;f;f;f;9737;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9738;9739;0;f;f;f;9738;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9738;9739;2;f;f;t;0;1ae7bd5a-b818-470e-acb2-0f0b3bf61dfb",
+			"9739;9740;0;f;f;f;9739;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9740;9741;0;f;f;f;9740;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9740;9741;2;f;f;t;0;2c80b643-f8c5-4627-a7fe-078bf6a63932",
+			"9741;9742;0;f;f;f;9741;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9742;9743;0;f;f;f;9742;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9742;9743;2;f;f;t;0;5dc541bd-86c5-48df-ab31-b0a6972267bc",
+			"9743;9744;0;f;f;f;9743;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9744;9745;0;f;f;f;9744;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9744;9745;2;f;f;t;0;7508f66b-24a3-4bf7-8b8e-b7ace92363d0",
+			"9745;9746;0;f;f;f;9745;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9746;9747;0;f;f;f;9746;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9746;9747;2;f;f;t;0;4ec3feee-1cd6-4215-8e9a-90f5714cc427",
+			"9747;9748;0;f;f;f;9747;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9748;9749;0;f;f;f;9748;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9748;9749;2;f;f;t;0;037b0294-6c1c-44f3-a20f-7c320b736701",
+			"9749;9750;0;f;f;f;9749;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9750;9751;0;f;f;f;9750;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9750;9751;2;f;f;t;0;59afbd27-f4ce-4c52-8fe7-43c90a504eb0",
+			"9751;9752;0;f;f;f;9751;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9752;9753;0;f;f;f;9752;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9752;9753;2;f;f;t;0;e4ce0cea-bb40-4a51-bce2-071d3dd03a40",
+			"9753;9754;0;f;f;f;9753;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9754;9755;0;f;f;f;9754;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9754;9755;2;f;f;t;0;c5156d56-8d44-4628-a897-4d07aad3bd89",
+			"9755;9756;0;f;f;f;9755;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9756;9757;0;f;f;f;9756;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9756;9757;2;f;f;t;0;375c641f-a3d1-4020-9c8e-400c67cfebe9",
+			"9757;9758;0;f;f;f;9757;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9758;9759;0;f;f;f;9758;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9758;9759;2;f;f;t;0;353df8d3-98da-4a5e-a00e-fe2d6ad77d64",
+			"9759;9760;0;f;f;f;9759;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9760;9761;0;f;f;f;9760;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9760;9761;2;f;f;t;0;a734b6eb-8e89-45d2-9c8e-8ce75043d118",
+			"9761;9762;0;f;f;f;9761;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9762;9763;0;f;f;f;9762;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9762;9763;2;f;f;t;0;8b4124ce-44a3-48eb-b941-fcd8b9ce275f",
+			"9763;9764;0;f;f;f;9763;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9764;9765;0;f;f;f;9764;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9764;9765;2;f;f;t;0;aca86daf-8980-473a-993a-6019bbc1a2cb",
+			"9765;9766;0;f;f;f;9765;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9766;9767;0;f;f;f;9766;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9766;9767;2;f;f;t;0;3e501049-65f5-4691-8acf-56d3f1a0735b",
+			"9767;9768;0;f;f;f;9767;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9768;9769;0;f;f;f;9768;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9768;9769;2;f;f;t;0;2d4f3e5c-b3a6-4c3b-80d5-bf4eb2ad49fa",
+			"9769;9770;0;f;f;f;9769;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9770;9771;0;f;f;f;9770;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9770;9771;2;f;f;t;0;db590359-bc77-4665-8a27-39c5461be1ca",
+			"9771;9772;0;f;f;f;9771;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9772;9773;0;f;f;f;9772;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9772;9773;2;f;f;t;0;19ce5c5d-7ad5-4f74-a959-fb1c54ebdedf",
+			"9773;9774;0;f;f;f;9773;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9774;9775;0;f;f;f;9774;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9774;9775;2;f;f;t;0;7d0f119d-eebc-4a95-97db-35a2c5c99fd0",
+			"9775;9776;0;f;f;f;9775;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9776;9777;0;f;f;f;9776;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9776;9777;2;f;f;t;0;f5a36221-c1a3-48e1-a6f6-25ade2c27456",
+			"9777;9778;0;f;f;f;9777;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9778;9779;0;f;f;f;9778;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9778;9779;2;f;f;t;0;808eaaf8-b0c2-4369-9f38-f8c3988c5ea3",
+			"9779;9780;0;f;f;f;9779;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9780;9781;0;f;f;f;9780;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9780;9781;2;f;f;t;0;7937ab5b-00f5-4ef9-9f97-8fc3ca2efa4f",
+			"9781;9782;0;f;f;f;9781;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9782;9783;0;f;f;f;9782;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9782;9783;2;f;f;t;0;ade5b83c-4084-47c9-af51-be49565f3088",
+			"9783;9784;0;f;f;f;9783;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9784;9785;0;f;f;f;9784;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9784;9785;2;f;f;t;0;b4064a7f-1e5e-4240-96c4-c6c55a6454c0",
+			"9785;9786;0;f;f;f;9785;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9786;9787;0;f;f;f;9786;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9786;9787;2;f;f;t;0;b2f19aa7-f060-42a8-93e7-c7d40ef7547e",
+			"9787;9788;0;f;f;f;9787;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9788;9789;0;f;f;f;9788;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9788;9789;2;f;f;t;0;c0e361ea-f834-409e-995f-ef2cb0f4d4c2",
+			"9789;9790;0;f;f;f;9789;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9790;9791;0;f;f;f;9790;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9790;9791;2;f;f;t;0;6142d648-6cdd-45ea-b285-f5e9af761982",
+			"9791;9792;0;f;f;f;9791;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9792;9793;0;f;f;f;9792;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9792;9793;2;f;f;t;0;65a96f36-3396-4936-b3a2-8ca66cd15952",
+			"9793;9794;0;f;f;f;9793;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9794;9795;0;f;f;f;9794;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9794;9795;2;f;f;t;0;e69acd1e-fc20-4785-a22e-029295600151",
+			"9795;9796;0;f;f;f;9795;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9796;9797;0;f;f;f;9796;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9796;9797;2;f;f;t;0;9c12d801-845d-4f80-8c25-6d0dee19737c",
+			"9797;9798;0;f;f;f;9797;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9798;9799;0;f;f;f;9798;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9798;9799;2;f;f;t;0;b3148e20-4f82-40b4-8aeb-05b676cdb1cf",
+			"9799;9800;0;f;f;f;9799;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9800;9801;0;f;f;f;9800;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9800;9801;2;f;f;t;0;9a370584-8cc4-417c-8629-1f62641f0230",
+			"9801;9802;0;f;f;f;9801;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9802;9803;0;f;f;f;9802;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9802;9803;2;f;f;t;0;4419b2b1-9190-4e4f-a974-92e71e84baa9",
+			"9803;9804;0;f;f;f;9803;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9804;9805;0;f;f;f;9804;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9804;9805;2;f;f;t;0;35cff489-1157-49ed-8e14-b6a71cd4c02f",
+			"9805;9806;0;f;f;f;9805;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9806;9807;0;f;f;f;9806;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9806;9807;2;f;f;t;0;80e93d77-877e-4c4b-98f2-f5ea59867c05",
+			"9807;9808;0;f;f;f;9807;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9808;9809;0;f;f;f;9808;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9808;9809;2;f;f;t;0;29b8a494-14ee-4711-b186-913b7f78dd77",
+			"9809;9810;0;f;f;f;9809;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9810;9811;0;f;f;f;9810;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9810;9811;2;f;f;t;0;fb8d4379-0481-46c6-ab44-058f9affb1d1",
+			"9811;9812;0;f;f;f;9811;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9812;9813;0;f;f;f;9812;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9812;9813;2;f;f;t;0;151812eb-3f56-4704-b031-fb6f5cf5911f",
+			"9813;9814;0;f;f;f;9813;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9814;9815;0;f;f;f;9814;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9814;9815;2;f;f;t;0;22d51d8a-462e-4e4e-b38a-f30408dc937d",
+			"9815;9816;0;f;f;f;9815;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9816;9817;0;f;f;f;9816;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9816;9817;2;f;f;t;0;65031c0d-3447-4acb-9447-0a48087d62a5",
+			"9817;9818;0;f;f;f;9817;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9818;9819;0;f;f;f;9818;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9818;9819;2;f;f;t;0;c54bf8ad-97e2-4828-ab8e-e5f5715b1c7c",
+			"9819;9820;0;f;f;f;9819;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9820;9821;0;f;f;f;9820;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9820;9821;2;f;f;t;0;7e8ddc3d-2e8d-4c4c-bd00-ef4c90598aac",
+			"9821;9822;0;f;f;f;9821;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9822;9823;0;f;f;f;9822;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9822;9823;2;f;f;t;0;c2a23bbd-341e-4675-8c81-3b9414aa6b7c",
+			"9823;9824;0;f;f;f;9823;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9824;9825;0;f;f;f;9824;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9824;9825;2;f;f;t;0;8616d81a-c331-4e32-b8cd-425598238e7e",
+			"9825;9826;0;f;f;f;9825;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9826;9827;0;f;f;f;9826;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9826;9827;2;f;f;t;0;bf01a827-6a96-47cc-91dc-f5d901fc2292",
+			"9827;9828;0;f;f;f;9827;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9828;9829;0;f;f;f;9828;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9828;9829;2;f;f;t;0;edeab2d2-b11c-4b60-ad39-cf5be158c9d1",
+			"9829;9830;0;f;f;f;9829;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9830;9831;0;f;f;f;9830;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9830;9831;2;f;f;t;0;99b54e35-c2e2-41e1-8acd-f6a48851e1ad",
+			"9831;9832;0;f;f;f;9831;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9832;9833;0;f;f;f;9832;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9832;9833;2;f;f;t;0;53c96180-cc80-4a64-baef-d879f591f133",
+			"9833;9834;0;f;f;f;9833;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9834;9835;0;f;f;f;9834;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9834;9835;2;f;f;t;0;91040b46-edc6-450c-9f65-b5f837ca4698",
+			"9835;9836;0;f;f;f;9835;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9836;9837;0;f;f;f;9836;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9836;9837;2;f;f;t;0;2f1ef841-838e-423b-9700-0b77c06405d6",
+			"9837;9838;0;f;f;f;9837;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9838;9839;0;f;f;f;9838;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9838;9839;2;f;f;t;0;fa474007-8c3c-4df9-970d-33a0afb4a18f",
+			"9839;9840;0;f;f;f;9839;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9840;9841;0;f;f;f;9840;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9840;9841;2;f;f;t;0;99ba96c7-e144-4538-9fca-8284479266be",
+			"9841;9842;0;f;f;f;9841;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9842;9843;0;f;f;f;9842;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9842;9843;2;f;f;t;0;db3b5631-a324-4e30-a5db-bec928af3af0",
+			"9843;9844;0;f;f;f;9843;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9844;9845;0;f;f;f;9844;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9844;9845;2;f;f;t;0;96039d94-6fc0-48c7-8406-484a4cc970d7",
+			"9845;9846;0;f;f;f;9845;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9846;9847;0;f;f;f;9846;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9846;9847;2;f;f;t;0;145c0cb2-a50a-45ed-bbd0-13b3463bfd8c",
+			"9847;9848;0;f;f;f;9847;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9848;9849;0;f;f;f;9848;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9848;9849;2;f;f;t;0;633f16d5-c3c7-4a8f-ab22-3a95c6432642",
+			"9849;9850;0;f;f;f;9849;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9850;9851;0;f;f;f;9850;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9850;9851;2;f;f;t;0;78cc4ce9-bbd0-4d84-aa67-42a920064313",
+			"9851;9852;0;f;f;f;9851;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9852;9853;0;f;f;f;9852;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9852;9853;2;f;f;t;0;5a8bdcdf-341c-458a-8871-9a042e181750",
+			"9853;9854;0;f;f;f;9853;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9854;9855;0;f;f;f;9854;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9854;9855;2;f;f;t;0;b2be20ce-bf8d-46b8-9152-6cec5ad0c3e8",
+			"9855;9856;0;f;f;f;9855;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9856;9857;0;f;f;f;9856;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9856;9857;2;f;f;t;0;ad7395ee-8537-4b77-9bda-505cb3f18664",
+			"9857;9858;0;f;f;f;9857;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9858;9859;0;f;f;f;9858;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9858;9859;2;f;f;t;0;e07b183b-0e4e-4530-a3bb-a88edd8b62f9",
+			"9859;9860;0;f;f;f;9859;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9860;9861;0;f;f;f;9860;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9860;9861;2;f;f;t;0;8fc90cff-e521-481b-a299-cdcc26eb6aac",
+			"9861;9862;0;f;f;f;9861;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9862;9863;0;f;f;f;9862;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9862;9863;2;f;f;t;0;71ea27d8-2196-4d93-b94b-742fa0a6979c",
+			"9863;9864;0;f;f;f;9863;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9864;9865;0;f;f;f;9864;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9863;9865;2;f;f;t;0;01358d6f-7d6e-4ef5-9ad3-5919b77dea0d",
+			"9865;9866;0;f;f;f;9865;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9866;9867;0;f;f;f;9866;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9866;9867;2;f;f;t;0;49d7146f-1343-4c6d-bab6-1718b392cf3d",
+			"9867;9868;0;f;f;f;9867;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9868;9869;0;f;f;f;9868;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9868;9869;2;f;f;t;0;f321aa47-aa92-439e-961d-03ffe9c2fbcf",
+			"9869;9870;0;f;f;f;9869;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9870;9871;0;f;f;f;9870;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9870;9871;2;f;f;t;0;d99d706f-449c-4fe0-bd49-c973a22c1bf4",
+			"9871;9872;0;f;f;f;9871;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9872;9873;0;f;f;f;9872;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9872;9873;2;f;f;t;0;607294a4-a749-483c-abf2-efa794686628",
+			"9873;9874;0;f;f;f;9873;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9874;9875;0;f;f;f;9874;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9874;9875;2;f;f;t;0;9ae4a18b-211a-4744-880c-cde3875cf911",
+			"9875;9876;0;f;f;f;9875;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9876;9877;0;f;f;f;9876;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9876;9877;2;f;f;t;0;9f571a5f-d5ab-4952-840f-72025fa8d2bd",
+			"9877;9878;0;f;f;f;9877;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9878;9879;0;f;f;f;9878;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9878;9879;2;f;f;t;0;fb78b3a6-8150-4225-9f49-1a721ff48b72",
+			"9879;9880;0;f;f;f;9879;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9880;9881;0;f;f;f;9880;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9880;9881;2;f;f;t;0;e3330143-3ed8-4a32-9b4e-f9f82f184c66",
+			"9881;9882;0;f;f;f;9881;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9882;9883;0;f;f;f;9882;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9882;9883;2;f;f;t;0;58b33e73-65e8-4db4-af5a-d439e84d423a",
+			"9883;9884;0;f;f;f;9883;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9884;9885;0;f;f;f;9884;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9884;9885;2;f;f;t;0;be56cf93-94dd-4a0b-8524-038d05af81b4",
+			"9885;9886;0;f;f;f;9885;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9886;9887;0;f;f;f;9886;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9886;9887;2;f;f;t;0;2e92bf6c-d29a-4276-8261-3959ce3bf19e",
+			"9887;9888;0;f;f;f;9887;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9888;9889;0;f;f;f;9888;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9888;9889;2;f;f;t;0;630cf59b-b942-4ebf-8e92-2badae4bbfb2",
+			"9889;9890;0;f;f;f;9889;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9890;9891;0;f;f;f;9890;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9890;9891;2;f;f;t;0;cb28ac35-d766-441a-bbc5-0dbfa0975263",
+			"9891;9892;0;f;f;f;9891;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9892;9893;0;f;f;f;9892;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9892;9893;2;f;f;t;0;1b4b2f53-1fc1-4f67-a725-19b0f8b6158b",
+			"9893;9894;0;f;f;f;9893;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9894;9895;0;f;f;f;9894;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9894;9895;2;f;f;t;0;4d1b008a-b8d8-4584-848c-852d0d99ffad",
+			"9895;9896;0;f;f;f;9895;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9896;9897;0;f;f;f;9896;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9896;9897;2;f;f;t;0;b82f5fff-85c2-468b-9f84-b94105b6effb",
+			"9897;9898;0;f;f;f;9897;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9898;9899;0;f;f;f;9898;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9898;9899;2;f;f;t;0;f9d57069-0367-4252-936b-dfc31bea3bde",
+			"9899;9900;0;f;f;f;9899;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9900;9901;0;f;f;f;9900;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9900;9901;2;f;f;t;0;deffb2f9-8a4f-4586-b2f9-b582d91937e8",
+			"9901;9902;0;f;f;f;9901;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9902;9903;0;f;f;f;9902;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9902;9903;2;f;f;t;0;0964f7cc-b94d-47ef-b47f-8e6e5b8f577e",
+			"9903;9904;0;f;f;f;9903;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9904;9905;0;f;f;f;9904;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9904;9905;2;f;f;t;0;c0d6b05c-e743-42cb-af08-93e509ab8f46",
+			"9905;9906;0;f;f;f;9905;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9906;9907;0;f;f;f;9906;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9906;9907;2;f;f;t;0;9d4d7f17-bd9b-4a29-8169-0f368663f448",
+			"9907;9908;0;f;f;f;9907;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9908;9909;0;f;f;f;9908;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9908;9909;2;f;f;t;0;906fb5d8-9c0a-4260-9804-8ebdddd82b96",
+			"9909;9910;0;f;f;f;9909;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9910;9911;0;f;f;f;9910;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9910;9911;2;f;f;t;0;891f3be1-ad53-4490-9ec9-bd84c49e8f2c",
+			"9911;9912;0;f;f;f;9911;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9912;9913;0;f;f;f;9912;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9912;9913;2;f;f;t;0;de69ba6d-4a3e-4f28-bedb-8580b1ecf109",
+			"9913;9914;0;f;f;f;9913;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9914;9915;0;f;f;f;9914;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9915;9916;0;f;f;f;9915;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9914;9916;2;f;f;t;0;1b4acd7e-e7a0-4a13-94f8-a6ee32c65288",
+			"9915;9916;2;f;f;t;0;4dffdfbf-1a7a-4c25-835a-6af87868743a",
+			"9916;9917;0;f;f;f;9916;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9917;9918;0;f;f;f;9917;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9918;9919;0;f;f;f;9918;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9918;9919;2;f;f;t;0;d8bee492-2be0-415f-ab04-d3314776c02e",
+			"9919;9920;0;f;f;f;9919;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9920;9921;0;f;f;f;9920;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9919;9921;2;f;f;t;0;9fbffdec-9fc5-481a-a9b3-0d2771b12850",
+			"9921;9922;0;f;f;f;9921;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9922;9923;0;f;f;f;9922;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9922;9923;2;f;f;t;0;dc87969a-4acb-4c0f-9abd-04fc87ee5f16",
+			"9923;9924;0;f;f;f;9923;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9924;9925;0;f;f;f;9924;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9923;9925;2;f;f;t;0;14d7e924-a09f-4b29-8f10-180e97668c0f",
+			"9925;9926;0;f;f;f;9925;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9926;9927;0;f;f;f;9926;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9926;9927;2;f;f;t;0;84277f7e-6f6b-4edd-9f95-38f24c2d830e",
+			"9927;9928;0;f;f;f;9927;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9928;9929;0;f;f;f;9928;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9927;9929;2;f;f;t;0;83d775c5-f39f-434e-b047-2fa51c8b95ee",
+			"9929;9930;0;f;f;f;9929;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9930;9931;0;f;f;f;9930;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9930;9931;2;f;f;t;0;53801f12-70f3-4785-8e92-142f790fa6b9",
+			"9931;9932;0;f;f;f;9931;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9932;9933;0;f;f;f;9932;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9932;9933;2;f;f;t;0;3da2dc39-65b0-4eea-89c6-bd40e87e9116",
+			"9933;9934;0;f;f;f;9933;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9934;9935;0;f;f;f;9934;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9934;9935;2;f;f;t;0;870b9b7e-7909-4508-8885-48384af40832",
+			"9935;9936;0;f;f;f;9935;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9936;9937;0;f;f;f;9936;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9936;9937;2;f;f;t;0;9ff9b379-39ed-425c-83d7-e31b607d28c8",
+			"9937;9938;0;f;f;f;9937;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9938;9939;0;f;f;f;9938;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9938;9939;2;f;f;t;0;c0b304b5-bd80-401e-a916-7d138c45a25c",
+			"9939;9940;0;f;f;f;9939;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9940;9941;0;f;f;f;9940;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9940;9941;2;f;f;t;0;041c3c06-b7c5-42f8-80a0-dfac161a22a6",
+			"9941;9942;0;f;f;f;9941;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9942;9943;0;f;f;f;9942;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9942;9943;2;f;f;t;0;71c25d70-7c2f-4f36-a9e4-446afaac9dc7",
+			"9943;9944;0;f;f;f;9943;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9944;9945;0;f;f;f;9944;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9944;9945;2;f;f;t;0;5bd82d22-02ef-4edf-b74d-6a0a2d013fcc",
+			"9945;9946;0;f;f;f;9945;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9946;9947;0;f;f;f;9946;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9946;9947;2;f;f;t;0;b12e6d42-5bf3-4517-9b8c-a6dd01b0e74b",
+			"9947;9948;0;f;f;f;9947;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9948;9949;0;f;f;f;9948;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9948;9949;2;f;f;t;0;05bd495f-4f4f-4978-8ed2-9703adf0436d",
+			"9949;9950;0;f;f;f;9949;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9950;9951;0;f;f;f;9950;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9950;9951;2;f;f;t;0;4983da28-96e3-4ff9-af3c-4c30d19b4415",
+			"9951;9952;0;f;f;f;9951;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9952;9953;0;f;f;f;9952;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9951;9953;2;f;f;t;0;e8693d44-7dea-49d2-b566-4dea75e7ad3d",
+			"9953;9954;0;f;f;f;9953;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9954;9955;0;f;f;f;9954;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9954;9955;2;f;f;t;0;152237d8-6190-4984-bbcc-b2ea8f10d028",
+			"9955;9956;0;f;f;f;9955;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9956;9957;0;f;f;f;9956;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9956;9957;2;f;f;t;0;1c3b0924-7e5a-4606-acb1-045f3a936fb2",
+			"9957;9958;0;f;f;f;9957;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9958;9959;0;f;f;f;9958;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9958;9959;2;f;f;t;0;7427deeb-c091-4fbf-9d2b-9c6b5b783e58",
+			"9959;9960;0;f;f;f;9959;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9960;9961;0;f;f;f;9960;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9960;9961;2;f;f;t;0;ee3916ff-2155-44c7-8770-c44ea47fbb6a",
+			"9961;9962;0;f;f;f;9961;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9962;9963;0;f;f;f;9962;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9962;9963;2;f;f;t;0;1a673964-377f-4fc3-99a0-5720ab08a603",
+			"9963;9964;0;f;f;f;9963;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9964;9965;0;f;f;f;9964;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9964;9965;2;f;f;t;0;f3b154da-108e-417c-8edc-898e82c1f2ce",
+			"9965;9966;0;f;f;f;9965;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9966;9967;0;f;f;f;9966;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9966;9967;2;f;f;t;0;c8d9a297-bc88-4016-9f3f-001b7d26cb69",
+			"9967;9968;0;f;f;f;9967;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9968;9969;0;f;f;f;9968;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9968;9969;2;f;f;t;0;ce10b439-0a55-44e9-bbd3-ff9178e33e44",
+			"9969;9970;0;f;f;f;9969;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9970;9971;0;f;f;f;9970;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9970;9971;2;f;f;t;0;b4500f14-8134-443f-82a1-3e65170313a8",
+			"9971;9972;0;f;f;f;9971;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9972;9973;0;f;f;f;9972;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9972;9973;2;f;f;t;0;a7d18648-383b-48d5-82ba-4ad347721480",
+			"9973;9974;0;f;f;f;9973;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9974;9975;0;f;f;f;9974;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9974;9975;2;f;f;t;0;f8aee5fb-167b-475f-9a33-07b12d48f36b",
+			"9975;9976;0;f;f;f;9975;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9976;9977;0;f;f;f;9976;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9976;9977;2;f;f;t;0;43785ad0-4b9b-4dbe-8f53-0ad0fd175c5b",
+			"9977;9978;0;f;f;f;9977;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9978;9979;0;f;f;f;9978;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9978;9979;2;f;f;t;0;41fce565-af53-4630-b857-4617dfea87aa",
+			"9979;9980;0;f;f;f;9979;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9980;9981;0;f;f;f;9980;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9980;9981;2;f;f;t;0;ab07f755-cded-4645-a669-d6851b210f47",
+			"9981;9982;0;f;f;f;9981;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9982;9983;0;f;f;f;9982;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9982;9983;2;f;f;t;0;d145eaca-1e6e-4afa-b943-d2a7d8367b4b",
+			"9983;9984;0;f;f;f;9983;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9984;9985;0;f;f;f;9984;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9984;9985;2;f;f;t;0;4e8c56a9-e439-47f3-a3e2-4f02cfc7a4ee",
+			"9985;9986;0;f;f;f;9985;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9986;9987;0;f;f;f;9986;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9986;9987;2;f;f;t;0;cd54ce4c-ba2d-4d67-bff1-483b68c0565e",
+			"9987;9988;0;f;f;f;9987;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9988;9989;0;f;f;f;9988;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9988;9989;2;f;f;t;0;c3e63362-801d-493c-ba6f-dcfc2bc21633",
+			"9989;9990;0;f;f;f;9989;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9990;9991;0;f;f;f;9990;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9990;9991;2;f;f;t;0;630f4ad8-e28e-4967-a926-1117cbeb0efb",
+			"9991;9992;0;f;f;f;9991;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9992;9993;0;f;f;f;9992;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9992;9993;2;f;f;t;0;04fe8acb-ce54-4e25-819b-20adb16675a8",
+			"9993;9994;0;f;f;f;9993;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9994;9995;0;f;f;f;9994;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9994;9995;2;f;f;t;0;603f09f7-c463-4baf-9894-4ea84607471a",
+			"9995;9996;0;f;f;f;9995;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9996;9997;0;f;f;f;9996;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9996;9997;2;f;f;t;0;a53f4123-5827-410e-895e-e5de5b9a9180",
+			"9997;9998;0;f;f;f;9997;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9998;9999;0;f;f;f;9998;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"9998;9999;2;f;f;t;0;ab695aa1-9c5e-4863-8172-5a9f925636b7",
+			"9999;10000;0;f;f;f;9999;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"0;10000;3;t;f;f;0;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"0;9999;1;t;f;f;0;3dbe3340-b92b-4d67-9558-4d20b3fecb58",
+			"0;9999;3;t;f;f;1;e4cfd28d-a5b9-47f0-96b9-82525fe6643a",
+			"0;9998;1;t;f;f;1;e4cfd28d-a5b9-47f0-96b9-82525fe6643a",
+			"0;9998;3;f;f;f;2;bd4e8d1a-af93-4690-9d23-567cd5aa4111",
+			"0;9997;1;f;f;f;2;bd4e8d1a-af93-4690-9d23-567cd5aa4111",
+			"2;9997;2;f;f;t;0;bd4e8d1a-af93-4690-9d23-567cd5aa4111",
+			"0;9997;3;f;f;f;3;f29be79c-0c7d-4d58-8845-5bfbdb604f6d",
+			"0;9996;1;f;f;f;3;f29be79c-0c7d-4d58-8845-5bfbdb604f6d",
+			"3;9996;2;f;f;t;0;f29be79c-0c7d-4d58-8845-5bfbdb604f6d",
+			"0;9996;3;t;f;f;4;f8b5a842-1cdd-4bf9-b320-b5cc9805357b",
+			"0;9995;1;t;f;f;4;f8b5a842-1cdd-4bf9-b320-b5cc9805357b",
+			"0;9995;3;t;f;f;5;e8af11c1-cc34-432d-9731-5268f94ece3e",
+			"0;9994;1;t;f;f;5;e8af11c1-cc34-432d-9731-5268f94ece3e",
+			"0;9994;3;f;f;f;6;50bc5d3a-3012-4579-9bf3-731315c039e5",
+			"0;9993;1;f;f;f;6;50bc5d3a-3012-4579-9bf3-731315c039e5",
+			"6;9993;2;f;f;t;0;50bc5d3a-3012-4579-9bf3-731315c039e5",
+			"0;9993;3;f;f;f;7;177d8ce5-128d-4180-903c-7c051e11e11b",
+			"0;9992;1;f;f;f;7;177d8ce5-128d-4180-903c-7c051e11e11b",
+			"7;9992;2;f;f;t;0;177d8ce5-128d-4180-903c-7c051e11e11b",
+			"0;9992;3;t;f;f;8;22bc860d-6c95-4a8e-b97c-694c167b742a",
+			"0;9991;1;t;f;f;8;22bc860d-6c95-4a8e-b97c-694c167b742a",
+			"0;9991;3;f;f;f;9;d4b7db4c-44b5-4277-8ad6-479d11dc9acb",
+			"0;9990;1;f;f;f;9;d4b7db4c-44b5-4277-8ad6-479d11dc9acb",
+			"9;9990;2;f;f;t;0;d4b7db4c-44b5-4277-8ad6-479d11dc9acb",
+			"0;9990;3;t;f;f;10;3e05cf61-ebaa-4f3d-9d5e-d7070e360931",
+			"0;9989;1;t;f;f;10;3e05cf61-ebaa-4f3d-9d5e-d7070e360931",
+			"0;9989;3;f;f;f;11;d923769d-e9e8-4323-9845-15723834cfce",
+			"0;9988;1;f;f;f;11;d923769d-e9e8-4323-9845-15723834cfce",
+			"11;9988;2;f;f;t;0;d923769d-e9e8-4323-9845-15723834cfce",
+			"0;9988;3;t;f;f;12;1c0a0f88-1426-471f-a4c8-918f12eb092e",
+			"0;9987;1;t;f;f;12;1c0a0f88-1426-471f-a4c8-918f12eb092e",
+			"0;9987;3;f;f;f;13;20129f07-10c4-4a9b-b7c2-21197f67c7cf",
+			"0;9986;1;f;f;f;13;20129f07-10c4-4a9b-b7c2-21197f67c7cf",
+			"13;9986;2;f;f;t;0;20129f07-10c4-4a9b-b7c2-21197f67c7cf",
+			"0;9986;3;t;f;f;14;69e6d3ca-9aa7-4367-b914-1ead42bfb4b9",
+			"0;9985;1;t;f;f;14;69e6d3ca-9aa7-4367-b914-1ead42bfb4b9",
+			"0;9985;3;f;f;f;15;64477323-8876-4f71-998a-3d814b208e7f",
+			"0;9984;1;f;f;f;15;64477323-8876-4f71-998a-3d814b208e7f",
+			"15;9984;2;f;f;t;0;64477323-8876-4f71-998a-3d814b208e7f",
+			"0;9984;3;t;f;f;16;2c5e2dc3-5ffc-4a5c-9837-c16f644a8128",
+			"0;9983;1;t;f;f;16;2c5e2dc3-5ffc-4a5c-9837-c16f644a8128",
+			"0;9983;3;t;f;f;17;9b873675-51c1-414e-a3ed-6ca13fb81320",
+			"0;9982;1;t;f;f;17;9b873675-51c1-414e-a3ed-6ca13fb81320",
+			"0;9982;3;f;f;f;18;3cb49e31-cd93-46fe-a113-d5f3c2d07ba8",
+			"0;9981;1;f;f;f;18;3cb49e31-cd93-46fe-a113-d5f3c2d07ba8",
+			"18;9981;2;f;f;t;0;3cb49e31-cd93-46fe-a113-d5f3c2d07ba8",
+			"0;9981;3;f;f;f;19;6b012efd-27c1-47af-9dc2-932778e57752",
+			"0;9980;1;f;f;f;19;6b012efd-27c1-47af-9dc2-932778e57752",
+			"19;9980;2;f;f;t;0;6b012efd-27c1-47af-9dc2-932778e57752",
+			"0;9980;3;t;f;f;20;57866729-dc0f-4886-b750-e518ece74fbf",
+			"0;9979;1;t;f;f;20;57866729-dc0f-4886-b750-e518ece74fbf",
+			"0;9979;3;t;f;f;21;d5d02c82-2b69-40de-926b-2fab11cf92a6",
+			"0;9978;1;t;f;f;21;d5d02c82-2b69-40de-926b-2fab11cf92a6",
+			"22;9978;2;f;f;t;0;449e58e2-bbfb-448f-b87c-f707f80f5844",
+			"0;9978;3;t;f;f;22;449e58e2-bbfb-448f-b87c-f707f80f5844",
+			"0;9977;1;t;f;f;22;449e58e2-bbfb-448f-b87c-f707f80f5844",
+			"0;9977;3;f;f;f;23;59195b81-5512-4600-9417-e961dcbb77d9",
+			"0;9976;1;f;f;f;23;59195b81-5512-4600-9417-e961dcbb77d9",
+			"23;9976;2;f;f;t;0;59195b81-5512-4600-9417-e961dcbb77d9",
+			"0;9976;3;t;f;f;24;676a0e40-75be-4f7c-a59d-3561c28fd154",
+			"0;9975;1;t;f;f;24;676a0e40-75be-4f7c-a59d-3561c28fd154",
+			"0;9975;3;f;f;f;25;49558446-0449-4f5c-9222-db980b884067",
+			"0;9974;1;f;f;f;25;49558446-0449-4f5c-9222-db980b884067",
+			"25;9974;2;f;f;t;0;49558446-0449-4f5c-9222-db980b884067",
+			"0;9974;3;t;f;f;26;54df1ca2-6cd1-44e8-ab1e-c51700fa2703",
+			"0;9973;1;t;f;f;26;54df1ca2-6cd1-44e8-ab1e-c51700fa2703",
+			"0;9973;3;t;f;f;27;a89b1c93-60e7-41e7-b2b3-8ea4e64f9364",
+			"0;9972;1;t;f;f;27;a89b1c93-60e7-41e7-b2b3-8ea4e64f9364",
+			"0;9972;3;f;f;f;28;1eeb18e3-cc7e-4463-af59-018d4be093dd",
+			"0;9971;1;f;f;f;28;1eeb18e3-cc7e-4463-af59-018d4be093dd",
+			"28;9971;2;f;f;t;0;1eeb18e3-cc7e-4463-af59-018d4be093dd",
+			"0;9971;3;f;f;f;29;e10881be-4e0b-46f5-a1a7-c3fd1162593e",
+			"0;9970;1;f;f;f;29;e10881be-4e0b-46f5-a1a7-c3fd1162593e",
+			"29;9970;2;f;f;t;0;e10881be-4e0b-46f5-a1a7-c3fd1162593e",
+			"0;9970;3;t;f;f;30;6f4359cb-9151-4365-9486-f75d06f94283",
+			"0;9969;1;t;f;f;30;6f4359cb-9151-4365-9486-f75d06f94283",
+			"0;9969;3;f;f;f;31;2a426b0c-e0e1-44d6-a250-c56ccb5caa64",
+			"0;9968;1;f;f;f;31;2a426b0c-e0e1-44d6-a250-c56ccb5caa64",
+			"31;9968;2;f;f;t;0;2a426b0c-e0e1-44d6-a250-c56ccb5caa64",
+			"0;9968;3;t;f;f;32;5f24e391-ffdf-471f-a76e-64b526700b20",
+			"0;9967;1;t;f;f;32;5f24e391-ffdf-471f-a76e-64b526700b20",
+			"0;9967;3;f;f;f;33;55f8050b-ec39-42ad-a52e-b53e322e28e0",
+			"0;9966;1;f;f;f;33;55f8050b-ec39-42ad-a52e-b53e322e28e0",
+			"33;9966;2;f;f;t;0;55f8050b-ec39-42ad-a52e-b53e322e28e0",
+			"0;9966;3;t;f;f;34;edc08629-4948-407c-9a60-d76a7709997d",
+			"0;9965;1;t;f;f;34;edc08629-4948-407c-9a60-d76a7709997d",
+			"0;9965;3;f;f;f;35;dffbaecb-b174-42c9-b133-9bdf5c1ae9db",
+			"0;9964;1;f;f;f;35;dffbaecb-b174-42c9-b133-9bdf5c1ae9db",
+			"35;9964;2;f;f;t;0;dffbaecb-b174-42c9-b133-9bdf5c1ae9db",
+			"0;9964;3;t;f;f;36;b109b9a6-f4e5-412d-a1ff-67c504b60f3e",
+			"0;9963;1;t;f;f;36;b109b9a6-f4e5-412d-a1ff-67c504b60f3e",
+			"0;9963;3;f;f;f;37;d99f6ed2-b0c2-47bc-bb99-2d5ec350cf22",
+			"0;9962;1;f;f;f;37;d99f6ed2-b0c2-47bc-bb99-2d5ec350cf22",
+			"37;9962;2;f;f;t;0;d99f6ed2-b0c2-47bc-bb99-2d5ec350cf22",
+			"0;9962;3;t;f;f;38;e292f9fe-2a0d-4e8c-bbd0-bd0bfaf7fdcc",
+			"0;9961;1;t;f;f;38;e292f9fe-2a0d-4e8c-bbd0-bd0bfaf7fdcc",
+			"0;9961;3;f;f;f;39;6d70bae1-cd03-4801-8e40-e8949ddce593",
+			"0;9960;1;f;f;f;39;6d70bae1-cd03-4801-8e40-e8949ddce593",
+			"39;9960;2;f;f;t;0;6d70bae1-cd03-4801-8e40-e8949ddce593",
+			"0;9960;3;t;f;f;40;dc63060c-a8d4-4e8f-bcd3-8e74da84564c",
+			"0;9959;1;t;f;f;40;dc63060c-a8d4-4e8f-bcd3-8e74da84564c",
+			"0;9959;3;f;f;f;41;69954bb5-3e55-43ec-a156-5bf1dd08fad3",
+			"0;9958;1;f;f;f;41;69954bb5-3e55-43ec-a156-5bf1dd08fad3",
+			"41;9958;2;f;f;t;0;69954bb5-3e55-43ec-a156-5bf1dd08fad3",
+			"0;9958;3;t;f;f;42;13aab0f5-b0d5-4814-b591-641c7c0caed0",
+			"0;9957;1;t;f;f;42;13aab0f5-b0d5-4814-b591-641c7c0caed0",
+			"0;9957;3;f;f;f;43;4c9c108e-7220-486b-81a7-e654bffd2264",
+			"0;9956;1;f;f;f;43;4c9c108e-7220-486b-81a7-e654bffd2264",
+			"43;9956;2;f;f;t;0;4c9c108e-7220-486b-81a7-e654bffd2264",
+			"0;9956;3;t;f;f;44;fe97fafa-dba3-4147-b550-072104f072a2",
+			"0;9955;1;t;f;f;44;fe97fafa-dba3-4147-b550-072104f072a2",
+			"0;9955;3;f;f;f;45;9c80042a-f773-4587-8615-f82ad700aede",
+			"0;9954;1;f;f;f;45;9c80042a-f773-4587-8615-f82ad700aede",
+			"45;9954;2;f;f;t;0;9c80042a-f773-4587-8615-f82ad700aede",
+			"0;9954;3;t;f;f;46;d4a5ae2b-3507-4010-8d8b-5385ec7f8852",
+			"0;9953;1;t;f;f;46;d4a5ae2b-3507-4010-8d8b-5385ec7f8852",
+			"0;9953;3;f;f;f;47;abec4b94-79a5-4b4b-ba45-001bfe62988c",
+			"0;9952;1;f;f;f;47;abec4b94-79a5-4b4b-ba45-001bfe62988c",
+			"47;9952;2;f;f;t;0;abec4b94-79a5-4b4b-ba45-001bfe62988c",
+			"0;9952;3;t;f;f;48;1eef0ac8-b8a6-406d-abf9-ac3e8e34ddaa",
+			"0;9951;1;t;f;f;48;1eef0ac8-b8a6-406d-abf9-ac3e8e34ddaa",
+			"0;9951;3;f;f;f;49;28abac8b-99f9-4e8d-9544-499a74156fcf",
+			"0;9950;1;f;f;f;49;28abac8b-99f9-4e8d-9544-499a74156fcf",
+			"49;9950;2;f;f;t;0;28abac8b-99f9-4e8d-9544-499a74156fcf",
+			"0;9950;3;t;f;f;50;179c1fc0-0fdf-4ab8-972d-caf9539f51ef",
+			"0;9949;1;t;f;f;50;179c1fc0-0fdf-4ab8-972d-caf9539f51ef",
+			"0;9949;3;f;f;f;51;818ce7fd-2004-4a68-8513-36242ea276b4",
+			"0;9948;1;f;f;f;51;818ce7fd-2004-4a68-8513-36242ea276b4",
+			"51;9948;2;f;f;t;0;818ce7fd-2004-4a68-8513-36242ea276b4",
+			"0;9948;3;t;f;f;52;18db6d02-344b-4f08-b014-bdda50ac9938",
+			"0;9947;1;t;f;f;52;18db6d02-344b-4f08-b014-bdda50ac9938",
+			"0;9947;3;f;f;f;53;fe5eabd6-c6be-4ee9-a0da-e3fd065faf92",
+			"0;9946;1;f;f;f;53;fe5eabd6-c6be-4ee9-a0da-e3fd065faf92",
+			"53;9946;2;f;f;t;0;fe5eabd6-c6be-4ee9-a0da-e3fd065faf92",
+			"0;9946;3;t;f;f;54;48aab669-ffae-41d8-af7c-8b40b2275b9d",
+			"0;9945;1;t;f;f;54;48aab669-ffae-41d8-af7c-8b40b2275b9d",
+			"0;9945;3;f;f;f;55;77aec83d-e54c-494b-a1c1-9609d762a66b",
+			"0;9944;1;f;f;f;55;77aec83d-e54c-494b-a1c1-9609d762a66b",
+			"55;9944;2;f;f;t;0;77aec83d-e54c-494b-a1c1-9609d762a66b",
+			"0;9944;3;t;f;f;56;c592f9e5-5c9c-420d-a2c2-1203c5884600",
+			"0;9943;1;t;f;f;56;c592f9e5-5c9c-420d-a2c2-1203c5884600",
+			"0;9943;3;f;f;f;57;552da699-c83e-48de-ba5e-cc050691956d",
+			"0;9942;1;f;f;f;57;552da699-c83e-48de-ba5e-cc050691956d",
+			"57;9942;2;f;f;t;0;552da699-c83e-48de-ba5e-cc050691956d",
+			"0;9942;3;t;f;f;58;48e048e6-303c-4171-aae7-38b6961ae227",
+			"0;9941;1;t;f;f;58;48e048e6-303c-4171-aae7-38b6961ae227",
+			"0;9941;3;f;f;f;59;574e497a-0836-40de-83df-6a68252cf892",
+			"0;9940;1;f;f;f;59;574e497a-0836-40de-83df-6a68252cf892",
+			"59;9940;2;f;f;t;0;574e497a-0836-40de-83df-6a68252cf892",
+			"0;9940;3;t;f;f;60;65daa9ed-5830-4199-80bc-b2ee04e05f83",
+			"0;9939;1;t;f;f;60;65daa9ed-5830-4199-80bc-b2ee04e05f83",
+			"0;9939;3;f;f;f;61;44650f2b-1b7f-479f-be79-7631efa8cf5a",
+			"0;9938;1;f;f;f;61;44650f2b-1b7f-479f-be79-7631efa8cf5a",
+			"61;9938;2;f;f;t;0;44650f2b-1b7f-479f-be79-7631efa8cf5a",
+			"0;9938;3;t;f;f;62;1291fa4f-1e5c-4f4f-ac87-a685467980cb",
+			"0;9937;1;t;f;f;62;1291fa4f-1e5c-4f4f-ac87-a685467980cb",
+			"0;9937;3;f;f;f;63;abdd1b36-df22-4ee4-bb4c-5ad6d96b02ab",
+			"0;9936;1;f;f;f;63;abdd1b36-df22-4ee4-bb4c-5ad6d96b02ab",
+			"63;9936;2;f;f;t;0;abdd1b36-df22-4ee4-bb4c-5ad6d96b02ab",
+			"0;9936;3;t;f;f;64;8df60bdb-071f-44c0-98bb-26598cb2e032",
+			"0;9935;1;t;f;f;64;8df60bdb-071f-44c0-98bb-26598cb2e032",
+			"0;9935;3;f;f;f;65;bc886471-0893-4673-9390-733da4e4a569",
+			"0;9934;1;f;f;f;65;bc886471-0893-4673-9390-733da4e4a569",
+			"65;9934;2;f;f;t;0;bc886471-0893-4673-9390-733da4e4a569",
+			"0;9934;3;t;f;f;66;ffc714de-e2b7-4664-b98a-55f4cfba70eb",
+			"0;9933;1;t;f;f;66;ffc714de-e2b7-4664-b98a-55f4cfba70eb",
+			"0;9933;3;f;f;f;67;f97af357-eb79-4098-bead-5ad223ceed85",
+			"0;9932;1;f;f;f;67;f97af357-eb79-4098-bead-5ad223ceed85",
+			"67;9932;2;f;f;t;0;f97af357-eb79-4098-bead-5ad223ceed85",
+			"0;9932;3;t;f;f;68;20c64a3e-3efe-47e1-9de1-cbb851e23e09",
+			"0;9931;1;t;f;f;68;20c64a3e-3efe-47e1-9de1-cbb851e23e09",
+			"0;9931;3;f;f;f;69;c455f261-2d35-4e69-b427-8c9c18e62365",
+			"0;9930;1;f;f;f;69;c455f261-2d35-4e69-b427-8c9c18e62365",
+			"69;9930;2;f;f;t;0;c455f261-2d35-4e69-b427-8c9c18e62365",
+			"0;9930;3;t;f;f;70;637d2187-68b4-473c-abbb-c4611ea4005f",
+			"0;9929;1;t;f;f;70;637d2187-68b4-473c-abbb-c4611ea4005f",
+			"0;9929;3;f;f;f;71;d5b772ba-a053-4220-b541-3b2e917ee23b",
+			"0;9928;1;f;f;f;71;d5b772ba-a053-4220-b541-3b2e917ee23b",
+			"71;9928;2;f;f;t;0;d5b772ba-a053-4220-b541-3b2e917ee23b",
+			"0;9928;3;t;f;f;72;9b31672d-5536-4a81-a616-e3954cdc6833",
+			"0;9927;1;t;f;f;72;9b31672d-5536-4a81-a616-e3954cdc6833",
+			"0;9927;3;f;f;f;73;06aeeaf5-386c-4bfe-94e5-afc9efd8b336",
+			"0;9926;1;f;f;f;73;06aeeaf5-386c-4bfe-94e5-afc9efd8b336",
+			"73;9926;2;f;f;t;0;06aeeaf5-386c-4bfe-94e5-afc9efd8b336",
+			"0;9926;3;t;f;f;74;67826e76-e2bb-41c3-927f-8829e81ed8c7",
+			"0;9925;1;t;f;f;74;67826e76-e2bb-41c3-927f-8829e81ed8c7",
+			"0;9925;3;f;f;f;75;94917bb5-c02e-414a-9f1a-a3bbaad27c38",
+			"0;9924;1;f;f;f;75;94917bb5-c02e-414a-9f1a-a3bbaad27c38",
+			"75;9924;2;f;f;t;0;94917bb5-c02e-414a-9f1a-a3bbaad27c38",
+			"0;9924;3;t;f;f;76;4b059aac-0959-42dd-900e-8d7921b4f8e1",
+			"0;9923;1;t;f;f;76;4b059aac-0959-42dd-900e-8d7921b4f8e1",
+			"0;9923;3;f;f;f;77;92af5ef4-d7ba-428c-96d3-86814e2949ea",
+			"0;9922;1;f;f;f;77;92af5ef4-d7ba-428c-96d3-86814e2949ea",
+			"77;9922;2;f;f;t;0;92af5ef4-d7ba-428c-96d3-86814e2949ea",
+			"0;9922;3;t;f;f;78;a7958417-65d3-4c43-9c74-8920a29d49cf",
+			"0;9921;1;t;f;f;78;a7958417-65d3-4c43-9c74-8920a29d49cf",
+			"0;9921;3;f;f;f;79;84bfbebb-e2c4-4784-ae5d-63492b402183",
+			"0;9920;1;f;f;f;79;84bfbebb-e2c4-4784-ae5d-63492b402183",
+			"79;9920;2;f;f;t;0;84bfbebb-e2c4-4784-ae5d-63492b402183",
+			"0;9920;3;t;f;f;80;a1476d09-5891-450d-95b3-513bc0a9ab9d",
+			"0;9919;1;t;f;f;80;a1476d09-5891-450d-95b3-513bc0a9ab9d",
+			"0;9919;3;f;f;f;81;fa901041-549a-4722-8d31-f32fd672b0f4",
+			"0;9918;1;f;f;f;81;fa901041-549a-4722-8d31-f32fd672b0f4",
+			"81;9918;2;f;f;t;0;fa901041-549a-4722-8d31-f32fd672b0f4",
+			"0;9918;3;t;f;f;82;fb95fd22-23b4-429d-8b1a-b31eed6be2a5",
+			"0;9917;1;t;f;f;82;fb95fd22-23b4-429d-8b1a-b31eed6be2a5",
+			"0;9917;3;f;f;f;83;657daa87-761e-4bcb-88a0-73218df8c149",
+			"0;9916;1;f;f;f;83;657daa87-761e-4bcb-88a0-73218df8c149",
+			"83;9916;2;f;f;t;0;657daa87-761e-4bcb-88a0-73218df8c149",
+			"0;9916;3;t;f;f;84;9e5422c5-659e-4538-91da-57ee2bbcebd5",
+			"0;9915;1;t;f;f;84;9e5422c5-659e-4538-91da-57ee2bbcebd5",
+			"0;9915;3;f;f;f;85;4ca44521-dd74-4cb2-b5c3-1a4413f5fb18",
+			"0;9914;1;f;f;f;85;4ca44521-dd74-4cb2-b5c3-1a4413f5fb18",
+			"85;9914;2;f;f;t;0;4ca44521-dd74-4cb2-b5c3-1a4413f5fb18",
+			"0;9914;3;t;f;f;86;59fcaa72-9968-4b34-8d5c-a2251cd21a27",
+			"0;9913;1;t;f;f;86;59fcaa72-9968-4b34-8d5c-a2251cd21a27",
+			"0;9913;3;f;f;f;87;762d942a-839a-4f37-bb43-5ca5130332b5",
+			"0;9912;1;f;f;f;87;762d942a-839a-4f37-bb43-5ca5130332b5",
+			"87;9912;2;f;f;t;0;762d942a-839a-4f37-bb43-5ca5130332b5",
+			"0;9912;3;t;f;f;88;eb2db33d-937b-4c20-8a9a-ddb2e219b9b4",
+			"0;9911;1;t;f;f;88;eb2db33d-937b-4c20-8a9a-ddb2e219b9b4",
+			"0;9911;3;f;f;f;89;fad689f8-96fe-47ed-b012-04c4b36005a9",
+			"0;9910;1;f;f;f;89;fad689f8-96fe-47ed-b012-04c4b36005a9",
+			"89;9910;2;f;f;t;0;fad689f8-96fe-47ed-b012-04c4b36005a9",
+			"0;9910;3;t;f;f;90;330988be-9f4e-4f4f-8264-b465d05fedca",
+			"0;9909;1;t;f;f;90;330988be-9f4e-4f4f-8264-b465d05fedca",
+			"0;9909;3;f;f;f;91;7ea3990b-a545-421a-8bdb-df14afc9f25f",
+			"0;9908;1;f;f;f;91;7ea3990b-a545-421a-8bdb-df14afc9f25f",
+			"91;9908;2;f;f;t;0;7ea3990b-a545-421a-8bdb-df14afc9f25f",
+			"0;9908;3;t;f;f;92;c3b04e2a-9e9b-482f-9ebc-b3f2a04ad20a",
+			"0;9907;1;t;f;f;92;c3b04e2a-9e9b-482f-9ebc-b3f2a04ad20a",
+			"0;9907;3;f;f;f;93;62c4bb44-6401-4184-a3b4-b0cc30262fbf",
+			"0;9906;1;f;f;f;93;62c4bb44-6401-4184-a3b4-b0cc30262fbf",
+			"93;9906;2;f;f;t;0;62c4bb44-6401-4184-a3b4-b0cc30262fbf",
+			"0;9906;3;t;f;f;94;df0e19dc-bcd2-4fd4-ab15-fb7bffabc4fd",
+			"0;9905;1;t;f;f;94;df0e19dc-bcd2-4fd4-ab15-fb7bffabc4fd",
+			"0;9905;3;f;f;f;95;dbaaf221-9fc0-4cf1-ae42-3855ce6d80b5",
+			"0;9904;1;f;f;f;95;dbaaf221-9fc0-4cf1-ae42-3855ce6d80b5",
+			"95;9904;2;f;f;t;0;dbaaf221-9fc0-4cf1-ae42-3855ce6d80b5",
+			"0;9904;3;t;f;f;96;28da0b6f-0575-4f51-80a4-08cffb0b10a1",
+			"0;9903;1;t;f;f;96;28da0b6f-0575-4f51-80a4-08cffb0b10a1",
+			"0;9903;3;f;f;f;97;372a0186-923f-4b1e-ad61-81ccfb2e8d61",
+			"0;9902;1;f;f;f;97;372a0186-923f-4b1e-ad61-81ccfb2e8d61",
+			"97;9902;2;f;f;t;0;372a0186-923f-4b1e-ad61-81ccfb2e8d61",
+			"0;9902;3;t;f;f;98;c6a2d740-6852-4377-bd89-7d8a19964778",
+			"0;9901;1;t;f;f;98;c6a2d740-6852-4377-bd89-7d8a19964778",
+			"0;9901;3;f;f;f;99;170a8755-502c-4f46-aa08-ab8c3c507cec",
+			"0;9900;1;f;f;f;99;170a8755-502c-4f46-aa08-ab8c3c507cec",
+			"99;9900;2;f;f;t;0;170a8755-502c-4f46-aa08-ab8c3c507cec",
+			"0;9900;3;t;f;f;100;15e607d4-cc6d-4d69-9232-bd6f4d4849b7",
+			"0;9899;1;t;f;f;100;15e607d4-cc6d-4d69-9232-bd6f4d4849b7",
+			"0;9899;3;f;f;f;101;a1f81864-caac-4476-b3cd-75b6aeaad364",
+			"0;9898;1;f;f;f;101;a1f81864-caac-4476-b3cd-75b6aeaad364",
+			"101;9898;2;f;f;t;0;a1f81864-caac-4476-b3cd-75b6aeaad364",
+			"0;9898;3;t;f;f;102;0a1c10c6-a55d-4ce8-b9bd-baa31f9a63ed",
+			"0;9897;1;t;f;f;102;0a1c10c6-a55d-4ce8-b9bd-baa31f9a63ed",
+			"0;9897;3;f;f;f;103;0d3f26ca-6438-483f-89bd-6eb8cdc01379",
+			"0;9896;1;f;f;f;103;0d3f26ca-6438-483f-89bd-6eb8cdc01379",
+			"103;9896;2;f;f;t;0;0d3f26ca-6438-483f-89bd-6eb8cdc01379",
+			"0;9896;3;t;f;f;104;569d55d6-da87-44c7-82fb-4471e5c88b6d",
+			"0;9895;1;t;f;f;104;569d55d6-da87-44c7-82fb-4471e5c88b6d",
+			"0;9895;3;f;f;f;105;e75ac473-b05f-4f16-84af-90e871f54ab5",
+			"0;9894;1;f;f;f;105;e75ac473-b05f-4f16-84af-90e871f54ab5",
+			"105;9894;2;f;f;t;0;e75ac473-b05f-4f16-84af-90e871f54ab5",
+			"0;9894;3;t;f;f;106;a7203713-22b8-4711-8c0f-e2a0ab9e928e",
+			"0;9893;1;t;f;f;106;a7203713-22b8-4711-8c0f-e2a0ab9e928e",
+			"0;9893;3;f;f;f;107;bd88b1b8-9725-4b90-8a7a-1e9bd36f50ce",
+			"0;9892;1;f;f;f;107;bd88b1b8-9725-4b90-8a7a-1e9bd36f50ce",
+			"107;9892;2;f;f;t;0;bd88b1b8-9725-4b90-8a7a-1e9bd36f50ce",
+			"0;9892;3;t;f;f;108;017f43a1-0aaa-49a8-a401-14959c690256",
+			"0;9891;1;t;f;f;108;017f43a1-0aaa-49a8-a401-14959c690256",
+			"0;9891;3;f;f;f;109;a5807394-d9e0-45d2-a969-ca598c38ae6d",
+			"0;9890;1;f;f;f;109;a5807394-d9e0-45d2-a969-ca598c38ae6d",
+			"109;9890;2;f;f;t;0;a5807394-d9e0-45d2-a969-ca598c38ae6d",
+			"0;9890;3;t;f;f;110;670aace9-84c8-4852-b18b-e6c29ad54e86",
+			"0;9889;1;t;f;f;110;670aace9-84c8-4852-b18b-e6c29ad54e86",
+			"0;9889;3;f;f;f;111;c5c31357-9395-4c4e-abfc-12c12f7d5b7e",
+			"0;9888;1;f;f;f;111;c5c31357-9395-4c4e-abfc-12c12f7d5b7e",
+			"111;9888;2;f;f;t;0;c5c31357-9395-4c4e-abfc-12c12f7d5b7e",
+			"0;9888;3;t;f;f;112;96621690-38e5-47a8-91e7-a2115e3599de",
+			"0;9887;1;t;f;f;112;96621690-38e5-47a8-91e7-a2115e3599de",
+			"0;9887;3;f;f;f;113;9575079f-6263-416c-bbf4-375a6fd82e97",
+			"0;9886;1;f;f;f;113;9575079f-6263-416c-bbf4-375a6fd82e97",
+			"113;9886;2;f;f;t;0;9575079f-6263-416c-bbf4-375a6fd82e97",
+			"0;9886;3;t;f;f;114;a22aaeac-bae6-4e57-a827-173ba6b94f8a",
+			"0;9885;1;t;f;f;114;a22aaeac-bae6-4e57-a827-173ba6b94f8a",
+			"0;9885;3;f;f;f;115;5fe4b914-df22-45f2-b96c-c8d469277c29",
+			"0;9884;1;f;f;f;115;5fe4b914-df22-45f2-b96c-c8d469277c29",
+			"115;9884;2;f;f;t;0;5fe4b914-df22-45f2-b96c-c8d469277c29",
+			"0;9884;3;t;f;f;116;7ae55f8c-fd53-49f2-863a-d51ec8630af5",
+			"0;9883;1;t;f;f;116;7ae55f8c-fd53-49f2-863a-d51ec8630af5",
+			"0;9883;3;f;f;f;117;aa7836b4-2e93-4215-8f63-18e3410b5766",
+			"0;9882;1;f;f;f;117;aa7836b4-2e93-4215-8f63-18e3410b5766",
+			"117;9882;2;f;f;t;0;aa7836b4-2e93-4215-8f63-18e3410b5766",
+			"0;9882;3;t;f;f;118;ec4d3bba-722c-40b7-b0fb-dcad8d2229ff",
+			"0;9881;1;t;f;f;118;ec4d3bba-722c-40b7-b0fb-dcad8d2229ff",
+			"0;9881;3;f;f;f;119;0e66f609-8751-4453-9d6f-a4679a93d031",
+			"0;9880;1;f;f;f;119;0e66f609-8751-4453-9d6f-a4679a93d031",
+			"119;9880;2;f;f;t;0;0e66f609-8751-4453-9d6f-a4679a93d031",
+			"0;9880;3;t;f;f;120;cf388741-622b-4422-b333-a0101f819e35",
+			"0;9879;1;t;f;f;120;cf388741-622b-4422-b333-a0101f819e35",
+			"0;9879;3;f;f;f;121;5819aea2-1445-4906-8f8c-7bfb3491131e",
+			"0;9878;1;f;f;f;121;5819aea2-1445-4906-8f8c-7bfb3491131e",
+			"121;9878;2;f;f;t;0;5819aea2-1445-4906-8f8c-7bfb3491131e",
+			"0;9878;3;t;f;f;122;221d8f2c-2d74-4675-ba35-62e1eb5fa510",
+			"0;9877;1;t;f;f;122;221d8f2c-2d74-4675-ba35-62e1eb5fa510",
+			"0;9877;3;f;f;f;123;ff12a411-e660-4caf-a5b3-7469c19aea2b",
+			"0;9876;1;f;f;f;123;ff12a411-e660-4caf-a5b3-7469c19aea2b",
+			"123;9876;2;f;f;t;0;ff12a411-e660-4caf-a5b3-7469c19aea2b",
+			"0;9876;3;t;f;f;124;a5cfcf50-6b09-453d-bdee-d13023a701f1",
+			"0;9875;1;t;f;f;124;a5cfcf50-6b09-453d-bdee-d13023a701f1",
+			"0;9875;3;f;f;f;125;c5a8a37b-1295-4fa1-8e3c-677990cff95c",
+			"0;9874;1;f;f;f;125;c5a8a37b-1295-4fa1-8e3c-677990cff95c",
+			"125;9874;2;f;f;t;0;c5a8a37b-1295-4fa1-8e3c-677990cff95c",
+			"0;9874;3;t;f;f;126;52fbcd7f-afa0-42ae-95e8-49df34b3910f",
+			"0;9873;1;t;f;f;126;52fbcd7f-afa0-42ae-95e8-49df34b3910f",
+			"0;9873;3;f;f;f;127;1eec6f44-c3bc-4b70-b84f-d74d3f739ea2",
+			"0;9872;1;f;f;f;127;1eec6f44-c3bc-4b70-b84f-d74d3f739ea2",
+			"127;9872;2;f;f;t;0;1eec6f44-c3bc-4b70-b84f-d74d3f739ea2",
+			"0;9872;3;t;f;f;128;f4d8cde0-d7b2-426b-a1e5-33ba3897f2e3",
+			"0;9871;1;t;f;f;128;f4d8cde0-d7b2-426b-a1e5-33ba3897f2e3",
+			"0;9871;3;f;f;f;129;e68aad0c-cc93-413c-bed7-8460c268a059",
+			"0;9870;1;f;f;f;129;e68aad0c-cc93-413c-bed7-8460c268a059",
+			"129;9870;2;f;f;t;0;e68aad0c-cc93-413c-bed7-8460c268a059",
+			"0;9870;3;t;f;f;130;630ac214-921e-4c81-85bf-5ac1115448a5",
+			"0;9869;1;t;f;f;130;630ac214-921e-4c81-85bf-5ac1115448a5",
+			"0;9869;3;f;f;f;131;b3a9ea64-5d1e-423f-b6e4-1739575e937b",
+			"0;9868;1;f;f;f;131;b3a9ea64-5d1e-423f-b6e4-1739575e937b",
+			"131;9868;2;f;f;t;0;b3a9ea64-5d1e-423f-b6e4-1739575e937b",
+			"0;9868;3;t;f;f;132;bd12dfe4-b95a-4b8f-bb33-be8d61f83e5c",
+			"0;9867;1;t;f;f;132;bd12dfe4-b95a-4b8f-bb33-be8d61f83e5c",
+			"0;9867;3;f;f;f;133;443064c4-cf30-4e57-9193-a2f072fd32e6",
+			"0;9866;1;f;f;f;133;443064c4-cf30-4e57-9193-a2f072fd32e6",
+			"133;9866;2;f;f;t;0;443064c4-cf30-4e57-9193-a2f072fd32e6",
+			"0;9866;3;t;f;f;134;99e03b55-0df1-416c-890f-6b1674322f7c",
+			"0;9865;1;t;f;f;134;99e03b55-0df1-416c-890f-6b1674322f7c",
+			"0;9865;3;f;f;f;135;453c9f54-c8cb-4faa-a7ef-28fea167c6dc",
+			"0;9864;1;f;f;f;135;453c9f54-c8cb-4faa-a7ef-28fea167c6dc",
+			"135;9864;2;f;f;t;0;453c9f54-c8cb-4faa-a7ef-28fea167c6dc",
+			"0;9864;3;t;f;f;136;cee8170f-48db-40c0-baf6-7e1bb3717517",
+			"0;9863;1;t;f;f;136;cee8170f-48db-40c0-baf6-7e1bb3717517",
+			"0;9863;3;t;f;f;137;ba4cdd7d-fe03-4619-bf8f-70afbe1127b8",
+			"0;9862;1;t;f;f;137;ba4cdd7d-fe03-4619-bf8f-70afbe1127b8",
+			"138;9862;2;f;f;t;0;ac5c4e24-a633-409d-8e71-25ca8f9993d3",
+			"0;9862;3;t;f;f;138;ac5c4e24-a633-409d-8e71-25ca8f9993d3",
+			"0;9861;1;t;f;f;138;ac5c4e24-a633-409d-8e71-25ca8f9993d3",
+			"0;9861;3;f;f;f;139;0e14e044-ca91-4b7b-8c88-16e3acc706ce",
+			"0;9860;1;f;f;f;139;0e14e044-ca91-4b7b-8c88-16e3acc706ce",
+			"139;9860;2;f;f;t;0;0e14e044-ca91-4b7b-8c88-16e3acc706ce",
+			"0;9860;3;t;f;f;140;0a001f9d-0f05-4c44-b279-6dee2dc6b821",
+			"0;9859;1;t;f;f;140;0a001f9d-0f05-4c44-b279-6dee2dc6b821",
+			"0;9859;3;f;f;f;141;221f0f20-0605-497e-8489-c4694d75567d",
+			"0;9858;1;f;f;f;141;221f0f20-0605-497e-8489-c4694d75567d",
+			"141;9858;2;f;f;t;0;221f0f20-0605-497e-8489-c4694d75567d",
+			"0;9858;3;t;f;f;142;cd0cf514-c6a3-4c27-97fa-c97324f9b11b",
+			"0;9857;1;t;f;f;142;cd0cf514-c6a3-4c27-97fa-c97324f9b11b",
+			"0;9857;3;f;f;f;143;c6ea1d17-7aad-4de1-aff0-22876b3d67b5",
+			"0;9856;1;f;f;f;143;c6ea1d17-7aad-4de1-aff0-22876b3d67b5",
+			"143;9856;2;f;f;t;0;c6ea1d17-7aad-4de1-aff0-22876b3d67b5",
+			"0;9856;3;t;f;f;144;77ecf363-72f3-48dc-ba71-83489684d60d",
+			"0;9855;1;t;f;f;144;77ecf363-72f3-48dc-ba71-83489684d60d",
+			"0;9855;3;f;f;f;145;1bd887a4-9b8c-43d1-8114-ebed468431d4",
+			"0;9854;1;f;f;f;145;1bd887a4-9b8c-43d1-8114-ebed468431d4",
+			"145;9854;2;f;f;t;0;1bd887a4-9b8c-43d1-8114-ebed468431d4",
+			"0;9854;3;t;f;f;146;e2d653e5-2368-4949-98c0-dd9e22a5a585",
+			"0;9853;1;t;f;f;146;e2d653e5-2368-4949-98c0-dd9e22a5a585",
+			"0;9853;3;f;f;f;147;3e360956-28ef-4417-98a4-b6a2e84c3ad7",
+			"0;9852;1;f;f;f;147;3e360956-28ef-4417-98a4-b6a2e84c3ad7",
+			"147;9852;2;f;f;t;0;3e360956-28ef-4417-98a4-b6a2e84c3ad7",
+			"0;9852;3;t;f;f;148;36f913ca-79f7-468d-85bd-1f9e57903df4",
+			"0;9851;1;t;f;f;148;36f913ca-79f7-468d-85bd-1f9e57903df4",
+			"0;9851;3;f;f;f;149;9c8895e2-7253-4e66-9baa-d6f2be25920b",
+			"0;9850;1;f;f;f;149;9c8895e2-7253-4e66-9baa-d6f2be25920b",
+			"149;9850;2;f;f;t;0;9c8895e2-7253-4e66-9baa-d6f2be25920b",
+			"0;9850;3;t;f;f;150;1684fc54-179c-4a88-8330-2c77a9fc2feb",
+			"0;9849;1;t;f;f;150;1684fc54-179c-4a88-8330-2c77a9fc2feb",
+			"0;9849;3;f;f;f;151;9212388c-fc9b-437b-82d3-d542c8b65e07",
+			"0;9848;1;f;f;f;151;9212388c-fc9b-437b-82d3-d542c8b65e07",
+			"151;9848;2;f;f;t;0;9212388c-fc9b-437b-82d3-d542c8b65e07",
+			"0;9848;3;t;f;f;152;1b2c263f-77b5-4c3d-b062-468833684788",
+			"0;9847;1;t;f;f;152;1b2c263f-77b5-4c3d-b062-468833684788",
+			"0;9847;3;f;f;f;153;0c7add4b-a479-4c5f-a84a-bfdb930346f4",
+			"0;9846;1;f;f;f;153;0c7add4b-a479-4c5f-a84a-bfdb930346f4",
+			"153;9846;2;f;f;t;0;0c7add4b-a479-4c5f-a84a-bfdb930346f4",
+			"0;9846;3;t;f;f;154;7f89b92a-ea20-4d07-a249-8a9a081f0d2d",
+			"0;9845;1;t;f;f;154;7f89b92a-ea20-4d07-a249-8a9a081f0d2d",
+			"0;9845;3;f;f;f;155;e7e3eb31-a412-43aa-b13f-6fc1ef9d0b3a",
+			"0;9844;1;f;f;f;155;e7e3eb31-a412-43aa-b13f-6fc1ef9d0b3a",
+			"155;9844;2;f;f;t;0;e7e3eb31-a412-43aa-b13f-6fc1ef9d0b3a",
+			"0;9844;3;t;f;f;156;51da55ed-7581-4cad-a9c9-0e6d235eceea",
+			"0;9843;1;t;f;f;156;51da55ed-7581-4cad-a9c9-0e6d235eceea",
+			"0;9843;3;f;f;f;157;5b0f6e0f-71d3-4dfc-8fcc-8bf0e5db58a0",
+			"0;9842;1;f;f;f;157;5b0f6e0f-71d3-4dfc-8fcc-8bf0e5db58a0",
+			"157;9842;2;f;f;t;0;5b0f6e0f-71d3-4dfc-8fcc-8bf0e5db58a0",
+			"0;9842;3;t;f;f;158;798fb117-c00a-4115-bf01-36918ce65b36",
+			"0;9841;1;t;f;f;158;798fb117-c00a-4115-bf01-36918ce65b36",
+			"0;9841;3;f;f;f;159;74b71bbd-7835-4e7a-a24f-08209a1b0ae7",
+			"0;9840;1;f;f;f;159;74b71bbd-7835-4e7a-a24f-08209a1b0ae7",
+			"159;9840;2;f;f;t;0;74b71bbd-7835-4e7a-a24f-08209a1b0ae7",
+			"0;9840;3;t;f;f;160;88f5128c-36f5-453f-aea6-9d8c1f2d4c1d",
+			"0;9839;1;t;f;f;160;88f5128c-36f5-453f-aea6-9d8c1f2d4c1d",
+			"0;9839;3;f;f;f;161;1e57e330-ddb5-455d-84c4-d3026752beba",
+			"0;9838;1;f;f;f;161;1e57e330-ddb5-455d-84c4-d3026752beba",
+			"161;9838;2;f;f;t;0;1e57e330-ddb5-455d-84c4-d3026752beba",
+			"0;9838;3;t;f;f;162;987cd2f3-6a85-4a1a-a2ae-4b9abf1c5a44",
+			"0;9837;1;t;f;f;162;987cd2f3-6a85-4a1a-a2ae-4b9abf1c5a44",
+			"0;9837;3;f;f;f;163;eccfab32-ea82-4d3d-9bb7-bcc1aa93c66b",
+			"0;9836;1;f;f;f;163;eccfab32-ea82-4d3d-9bb7-bcc1aa93c66b",
+			"163;9836;2;f;f;t;0;eccfab32-ea82-4d3d-9bb7-bcc1aa93c66b",
+			"0;9836;3;t;f;f;164;602ad5b3-cad2-4df7-b16e-a03c40e07f3b",
+			"0;9835;1;t;f;f;164;602ad5b3-cad2-4df7-b16e-a03c40e07f3b",
+			"0;9835;3;f;f;f;165;6ed906b9-9c2d-4143-aaf5-8a566b3db946",
+			"0;9834;1;f;f;f;165;6ed906b9-9c2d-4143-aaf5-8a566b3db946",
+			"165;9834;2;f;f;t;0;6ed906b9-9c2d-4143-aaf5-8a566b3db946",
+			"0;9834;3;t;f;f;166;a9a98216-e1bf-4f04-b811-0e1e9087ea37",
+			"0;9833;1;t;f;f;166;a9a98216-e1bf-4f04-b811-0e1e9087ea37",
+			"0;9833;3;f;f;f;167;72dadd9f-f3dc-449e-983d-4319f1c4835b",
+			"0;9832;1;f;f;f;167;72dadd9f-f3dc-449e-983d-4319f1c4835b",
+			"167;9832;2;f;f;t;0;72dadd9f-f3dc-449e-983d-4319f1c4835b",
+			"0;9832;3;t;f;f;168;a4f4a535-16d8-4c67-9bff-405ebf7fcb51",
+			"0;9831;1;t;f;f;168;a4f4a535-16d8-4c67-9bff-405ebf7fcb51",
+			"0;9831;3;f;f;f;169;613940f3-bbf1-4493-b7be-43c8b06533e7",
+			"0;9830;1;f;f;f;169;613940f3-bbf1-4493-b7be-43c8b06533e7",
+			"169;9830;2;f;f;t;0;613940f3-bbf1-4493-b7be-43c8b06533e7",
+			"0;9830;3;t;f;f;170;8391eddd-f85a-4534-a652-dc8f6f77c85b",
+			"0;9829;1;t;f;f;170;8391eddd-f85a-4534-a652-dc8f6f77c85b",
+			"0;9829;3;f;f;f;171;7f3c9089-4cfc-4b01-8a72-03ff6cd57992",
+			"0;9828;1;f;f;f;171;7f3c9089-4cfc-4b01-8a72-03ff6cd57992",
+			"171;9828;2;f;f;t;0;7f3c9089-4cfc-4b01-8a72-03ff6cd57992",
+			"0;9828;3;t;f;f;172;ba1592b1-aac0-4b8c-8a0d-f14636889eab",
+			"0;9827;1;t;f;f;172;ba1592b1-aac0-4b8c-8a0d-f14636889eab",
+			"0;9827;3;f;f;f;173;5550e09d-0cc1-4791-8eb4-7854b532c2b7",
+			"0;9826;1;f;f;f;173;5550e09d-0cc1-4791-8eb4-7854b532c2b7",
+			"173;9826;2;f;f;t;0;5550e09d-0cc1-4791-8eb4-7854b532c2b7",
+			"0;9826;3;t;f;f;174;e11f8272-f017-4f82-b643-fc0c197f20ab",
+			"0;9825;1;t;f;f;174;e11f8272-f017-4f82-b643-fc0c197f20ab",
+			"0;9825;3;f;f;f;175;74f9d7e0-ea68-49e1-8fb7-44c1fef60dca",
+			"0;9824;1;f;f;f;175;74f9d7e0-ea68-49e1-8fb7-44c1fef60dca",
+			"175;9824;2;f;f;t;0;74f9d7e0-ea68-49e1-8fb7-44c1fef60dca",
+			"0;9824;3;t;f;f;176;fa8da2d1-180b-4e66-b44e-4885833ca991",
+			"0;9823;1;t;f;f;176;fa8da2d1-180b-4e66-b44e-4885833ca991",
+			"0;9823;3;f;f;f;177;e1a0c735-3598-4ce2-b2d0-43873412299e",
+			"0;9822;1;f;f;f;177;e1a0c735-3598-4ce2-b2d0-43873412299e",
+			"177;9822;2;f;f;t;0;e1a0c735-3598-4ce2-b2d0-43873412299e",
+			"0;9822;3;t;f;f;178;67a70156-4b5b-48ae-8a09-04db933cc1f6",
+			"0;9821;1;t;f;f;178;67a70156-4b5b-48ae-8a09-04db933cc1f6",
+			"0;9821;3;f;f;f;179;ce460048-44a3-4214-8c49-26465e35a0b1",
+			"0;9820;1;f;f;f;179;ce460048-44a3-4214-8c49-26465e35a0b1",
+			"179;9820;2;f;f;t;0;ce460048-44a3-4214-8c49-26465e35a0b1",
+			"0;9820;3;t;f;f;180;e827dce7-9e74-4c4d-9e64-f657d71039b4",
+			"0;9819;1;t;f;f;180;e827dce7-9e74-4c4d-9e64-f657d71039b4",
+			"0;9819;3;f;f;f;181;0cb4d04d-c4f3-4d0a-af00-08384d271cde",
+			"0;9818;1;f;f;f;181;0cb4d04d-c4f3-4d0a-af00-08384d271cde",
+			"181;9818;2;f;f;t;0;0cb4d04d-c4f3-4d0a-af00-08384d271cde",
+			"0;9818;3;t;f;f;182;60ce7200-c390-41f5-b55b-fed766e2de19",
+			"0;9817;1;t;f;f;182;60ce7200-c390-41f5-b55b-fed766e2de19",
+			"0;9817;3;f;f;f;183;e14d42ba-30f7-41ab-8b61-cf047a60eefc",
+			"0;9816;1;f;f;f;183;e14d42ba-30f7-41ab-8b61-cf047a60eefc",
+			"183;9816;2;f;f;t;0;e14d42ba-30f7-41ab-8b61-cf047a60eefc",
+			"0;9816;3;t;f;f;184;1f245da8-3c2b-428f-a054-b6096a35bc99",
+			"0;9815;1;t;f;f;184;1f245da8-3c2b-428f-a054-b6096a35bc99",
+			"0;9815;3;f;f;f;185;80438c00-3897-4067-a86a-4b02ac83d34c",
+			"0;9814;1;f;f;f;185;80438c00-3897-4067-a86a-4b02ac83d34c",
+			"185;9814;2;f;f;t;0;80438c00-3897-4067-a86a-4b02ac83d34c",
+			"0;9814;3;t;f;f;186;04aaa402-83cf-41b2-a51c-e7e367614035",
+			"0;9813;1;t;f;f;186;04aaa402-83cf-41b2-a51c-e7e367614035",
+			"0;9813;3;f;f;f;187;eda74c1e-cb35-4c3e-a46a-2401d471c655",
+			"0;9812;1;f;f;f;187;eda74c1e-cb35-4c3e-a46a-2401d471c655",
+			"187;9812;2;f;f;t;0;eda74c1e-cb35-4c3e-a46a-2401d471c655",
+			"0;9812;3;t;f;f;188;747d2ce7-efd0-478b-adce-50f3bcae0449",
+			"0;9811;1;t;f;f;188;747d2ce7-efd0-478b-adce-50f3bcae0449",
+			"0;9811;3;f;f;f;189;3342299c-6f88-4b6e-8ff9-4af4905d4e61",
+			"0;9810;1;f;f;f;189;3342299c-6f88-4b6e-8ff9-4af4905d4e61",
+			"189;9810;2;f;f;t;0;3342299c-6f88-4b6e-8ff9-4af4905d4e61",
+			"0;9810;3;t;f;f;190;e09c5fe0-6a1f-4e0e-9bc4-4afbd2471e79",
+			"0;9809;1;t;f;f;190;e09c5fe0-6a1f-4e0e-9bc4-4afbd2471e79",
+			"0;9809;3;f;f;f;191;46492cb9-52ef-43cd-94ca-9d819eb0097c",
+			"0;9808;1;f;f;f;191;46492cb9-52ef-43cd-94ca-9d819eb0097c",
+			"191;9808;2;f;f;t;0;46492cb9-52ef-43cd-94ca-9d819eb0097c",
+			"0;9808;3;t;f;f;192;ce5f4b8f-23e6-4edd-ba21-fdc0ad374c0e",
+			"0;9807;1;t;f;f;192;ce5f4b8f-23e6-4edd-ba21-fdc0ad374c0e",
+			"0;9807;3;f;f;f;193;3f710987-0519-452a-a992-cbb77a308ab8",
+			"0;9806;1;f;f;f;193;3f710987-0519-452a-a992-cbb77a308ab8",
+			"193;9806;2;f;f;t;0;3f710987-0519-452a-a992-cbb77a308ab8",
+			"0;9806;3;t;f;f;194;85e4c9fd-2cb2-4cef-8e2f-b0fd8ca30e86",
+			"0;9805;1;t;f;f;194;85e4c9fd-2cb2-4cef-8e2f-b0fd8ca30e86",
+			"0;9805;3;f;f;f;195;5c77ddd6-4705-4578-bf86-ada93d864e42",
+			"0;9804;1;f;f;f;195;5c77ddd6-4705-4578-bf86-ada93d864e42",
+			"195;9804;2;f;f;t;0;5c77ddd6-4705-4578-bf86-ada93d864e42",
+			"0;9804;3;t;f;f;196;069fbf08-e410-48c5-92a9-3116ea3bc9b0",
+			"0;9803;1;t;f;f;196;069fbf08-e410-48c5-92a9-3116ea3bc9b0",
+			"0;9803;3;f;f;f;197;81bf1e1d-a812-4453-ad6e-f72cf3a9d8b3",
+			"0;9802;1;f;f;f;197;81bf1e1d-a812-4453-ad6e-f72cf3a9d8b3",
+			"197;9802;2;f;f;t;0;81bf1e1d-a812-4453-ad6e-f72cf3a9d8b3",
+			"0;9802;3;t;f;f;198;6bf9b25b-046c-4fff-86ee-19f84718e4fd",
+			"0;9801;1;t;f;f;198;6bf9b25b-046c-4fff-86ee-19f84718e4fd",
+			"0;9801;3;f;f;f;199;d851f9e0-78e8-4a55-b1dc-b80e8b4fb594",
+			"0;9800;1;f;f;f;199;d851f9e0-78e8-4a55-b1dc-b80e8b4fb594",
+			"199;9800;2;f;f;t;0;d851f9e0-78e8-4a55-b1dc-b80e8b4fb594",
+			"0;9800;3;t;f;f;200;b501f6a0-e685-4461-ae87-7ce950655840",
+			"0;9799;1;t;f;f;200;b501f6a0-e685-4461-ae87-7ce950655840",
+			"0;9799;3;f;f;f;201;1d89568c-cf39-4a11-ba04-5a2ec3f30612",
+			"0;9798;1;f;f;f;201;1d89568c-cf39-4a11-ba04-5a2ec3f30612",
+			"201;9798;2;f;f;t;0;1d89568c-cf39-4a11-ba04-5a2ec3f30612",
+			"0;9798;3;t;f;f;202;fad090fb-f8d9-45a2-88cf-f87e6f54baf9",
+			"0;9797;1;t;f;f;202;fad090fb-f8d9-45a2-88cf-f87e6f54baf9",
+			"0;9797;3;f;f;f;203;f8c27247-b8e2-49c0-bafb-df00e1a15882",
+			"0;9796;1;f;f;f;203;f8c27247-b8e2-49c0-bafb-df00e1a15882",
+			"203;9796;2;f;f;t;0;f8c27247-b8e2-49c0-bafb-df00e1a15882",
+			"0;9796;3;t;f;f;204;90051d21-32fe-4e52-9eab-7e1113ef3f82",
+			"0;9795;1;t;f;f;204;90051d21-32fe-4e52-9eab-7e1113ef3f82",
+			"0;9795;3;f;f;f;205;de0d52fd-bff3-430d-957d-6205bb5ae676",
+			"0;9794;1;f;f;f;205;de0d52fd-bff3-430d-957d-6205bb5ae676",
+			"205;9794;2;f;f;t;0;de0d52fd-bff3-430d-957d-6205bb5ae676",
+			"0;9794;3;t;f;f;206;1e5e9326-5afd-48ab-9089-df72009460ed",
+			"0;9793;1;t;f;f;206;1e5e9326-5afd-48ab-9089-df72009460ed",
+			"0;9793;3;f;f;f;207;103b364c-c93a-439c-b506-1c3e401c7385",
+			"0;9792;1;f;f;f;207;103b364c-c93a-439c-b506-1c3e401c7385",
+			"207;9792;2;f;f;t;0;103b364c-c93a-439c-b506-1c3e401c7385",
+			"0;9792;3;t;f;f;208;4cc075e6-5bc3-4e6c-a2d3-bcede5a86f68",
+			"0;9791;1;t;f;f;208;4cc075e6-5bc3-4e6c-a2d3-bcede5a86f68",
+			"0;9791;3;f;f;f;209;c21ce93b-b87f-4495-979b-a3e31a8dc86c",
+			"0;9790;1;f;f;f;209;c21ce93b-b87f-4495-979b-a3e31a8dc86c",
+			"209;9790;2;f;f;t;0;c21ce93b-b87f-4495-979b-a3e31a8dc86c",
+			"0;9790;3;t;f;f;210;095b03ca-37c6-49db-a08c-5996d0930255",
+			"0;9789;1;t;f;f;210;095b03ca-37c6-49db-a08c-5996d0930255",
+			"0;9789;3;f;f;f;211;b49176c9-66db-4e85-89fd-7915e69bfb96",
+			"0;9788;1;f;f;f;211;b49176c9-66db-4e85-89fd-7915e69bfb96",
+			"211;9788;2;f;f;t;0;b49176c9-66db-4e85-89fd-7915e69bfb96",
+			"0;9788;3;t;f;f;212;2adf52c2-47bf-44ab-bd91-b82e3f3a143c",
+			"0;9787;1;t;f;f;212;2adf52c2-47bf-44ab-bd91-b82e3f3a143c",
+			"0;9787;3;f;f;f;213;f08a5978-0aec-44eb-8ccc-a9f45a5c9905",
+			"0;9786;1;f;f;f;213;f08a5978-0aec-44eb-8ccc-a9f45a5c9905",
+			"213;9786;2;f;f;t;0;f08a5978-0aec-44eb-8ccc-a9f45a5c9905",
+			"0;9786;3;t;f;f;214;8b9bbb09-9317-4f29-9383-ce944c99c8df",
+			"0;9785;1;t;f;f;214;8b9bbb09-9317-4f29-9383-ce944c99c8df",
+			"0;9785;3;f;f;f;215;e055b888-7e45-459b-a20b-76034398b7d2",
+			"0;9784;1;f;f;f;215;e055b888-7e45-459b-a20b-76034398b7d2",
+			"215;9784;2;f;f;t;0;e055b888-7e45-459b-a20b-76034398b7d2",
+			"0;9784;3;t;f;f;216;44681b55-90e6-46d3-aed3-580bece11745",
+			"0;9783;1;t;f;f;216;44681b55-90e6-46d3-aed3-580bece11745",
+			"0;9783;3;f;f;f;217;eeab272b-54fa-4329-98d9-dc42635534c6",
+			"0;9782;1;f;f;f;217;eeab272b-54fa-4329-98d9-dc42635534c6",
+			"217;9782;2;f;f;t;0;eeab272b-54fa-4329-98d9-dc42635534c6",
+			"0;9782;3;t;f;f;218;2c83ac5f-8fb4-4932-a50d-90b1b827d59e",
+			"0;9781;1;t;f;f;218;2c83ac5f-8fb4-4932-a50d-90b1b827d59e",
+			"0;9781;3;f;f;f;219;28a3ee88-7fe0-453b-a4c5-5a083c5ead48",
+			"0;9780;1;f;f;f;219;28a3ee88-7fe0-453b-a4c5-5a083c5ead48",
+			"219;9780;2;f;f;t;0;28a3ee88-7fe0-453b-a4c5-5a083c5ead48",
+			"0;9780;3;t;f;f;220;eca5d58a-bb99-45aa-8ed2-f2460b70f7f7",
+			"0;9779;1;t;f;f;220;eca5d58a-bb99-45aa-8ed2-f2460b70f7f7",
+			"0;9779;3;f;f;f;221;132b178e-13db-48b4-9c57-88897fac3986",
+			"0;9778;1;f;f;f;221;132b178e-13db-48b4-9c57-88897fac3986",
+			"221;9778;2;f;f;t;0;132b178e-13db-48b4-9c57-88897fac3986",
+			"0;9778;3;t;f;f;222;adab4486-7bbb-4097-959a-1479d27242db",
+			"0;9777;1;t;f;f;222;adab4486-7bbb-4097-959a-1479d27242db",
+			"0;9777;3;f;f;f;223;84fe757d-59a0-4074-8a62-6e2757b6d3e3",
+			"0;9776;1;f;f;f;223;84fe757d-59a0-4074-8a62-6e2757b6d3e3",
+			"223;9776;2;f;f;t;0;84fe757d-59a0-4074-8a62-6e2757b6d3e3",
+			"0;9776;3;t;f;f;224;2eaacdf2-47a9-4249-92a0-b46e0ffcf6ee",
+			"0;9775;1;t;f;f;224;2eaacdf2-47a9-4249-92a0-b46e0ffcf6ee",
+			"0;9775;3;f;f;f;225;91b61bca-5d64-421a-8d05-4c0670fbc35b",
+			"0;9774;1;f;f;f;225;91b61bca-5d64-421a-8d05-4c0670fbc35b",
+			"225;9774;2;f;f;t;0;91b61bca-5d64-421a-8d05-4c0670fbc35b",
+			"0;9774;3;t;f;f;226;7de52192-77e5-43f9-83be-6b69e3040ce9",
+			"0;9773;1;t;f;f;226;7de52192-77e5-43f9-83be-6b69e3040ce9",
+			"0;9773;3;f;f;f;227;181b4a09-9f89-4691-9f61-975f463d7a10",
+			"0;9772;1;f;f;f;227;181b4a09-9f89-4691-9f61-975f463d7a10",
+			"227;9772;2;f;f;t;0;181b4a09-9f89-4691-9f61-975f463d7a10",
+			"0;9772;3;t;f;f;228;4b267b31-5432-4320-a141-927b39d662d2",
+			"0;9771;1;t;f;f;228;4b267b31-5432-4320-a141-927b39d662d2",
+			"0;9771;3;f;f;f;229;f608577b-25cc-4ea2-b693-2ca2617a3194",
+			"0;9770;1;f;f;f;229;f608577b-25cc-4ea2-b693-2ca2617a3194",
+			"229;9770;2;f;f;t;0;f608577b-25cc-4ea2-b693-2ca2617a3194",
+			"0;9770;3;t;f;f;230;41ddae5f-d6da-4444-afc0-adcb17657aa5",
+			"0;9769;1;t;f;f;230;41ddae5f-d6da-4444-afc0-adcb17657aa5",
+			"0;9769;3;f;f;f;231;8dc1a218-8d8f-4b5b-8300-65e2894be9ed",
+			"0;9768;1;f;f;f;231;8dc1a218-8d8f-4b5b-8300-65e2894be9ed",
+			"231;9768;2;f;f;t;0;8dc1a218-8d8f-4b5b-8300-65e2894be9ed",
+			"0;9768;3;t;f;f;232;16491431-ea5c-4310-8118-de567dc352b9",
+			"0;9767;1;t;f;f;232;16491431-ea5c-4310-8118-de567dc352b9",
+			"0;9767;3;f;f;f;233;311b4f78-bfe8-4621-b5ab-d1b30f775f53",
+			"0;9766;1;f;f;f;233;311b4f78-bfe8-4621-b5ab-d1b30f775f53",
+			"233;9766;2;f;f;t;0;311b4f78-bfe8-4621-b5ab-d1b30f775f53",
+			"0;9766;3;t;f;f;234;c5b490b3-f422-4a06-9941-03782497afab",
+			"0;9765;1;t;f;f;234;c5b490b3-f422-4a06-9941-03782497afab",
+			"0;9765;3;f;f;f;235;1594523e-abbf-4e05-9757-e09e2e9a51ef",
+			"0;9764;1;f;f;f;235;1594523e-abbf-4e05-9757-e09e2e9a51ef",
+			"235;9764;2;f;f;t;0;1594523e-abbf-4e05-9757-e09e2e9a51ef",
+			"0;9764;3;t;f;f;236;3d9a0858-a94d-439a-bc83-de65d22cc254",
+			"0;9763;1;t;f;f;236;3d9a0858-a94d-439a-bc83-de65d22cc254",
+			"0;9763;3;f;f;f;237;895741bb-da92-4ac6-89b5-85273978f912",
+			"0;9762;1;f;f;f;237;895741bb-da92-4ac6-89b5-85273978f912",
+			"237;9762;2;f;f;t;0;895741bb-da92-4ac6-89b5-85273978f912",
+			"0;9762;3;t;f;f;238;d9c08fa1-a460-42c2-9601-927983861d80",
+			"0;9761;1;t;f;f;238;d9c08fa1-a460-42c2-9601-927983861d80",
+			"0;9761;3;f;f;f;239;2adf589b-8777-4cb2-bab7-0d69c8a03d38",
+			"0;9760;1;f;f;f;239;2adf589b-8777-4cb2-bab7-0d69c8a03d38",
+			"239;9760;2;f;f;t;0;2adf589b-8777-4cb2-bab7-0d69c8a03d38",
+			"0;9760;3;t;f;f;240;7757cb47-88cf-40c6-80a7-f2f5980d1f86",
+			"0;9759;1;t;f;f;240;7757cb47-88cf-40c6-80a7-f2f5980d1f86",
+			"0;9759;3;f;f;f;241;f6d454a2-e868-4f3b-aa99-acaaf17f29ac",
+			"0;9758;1;f;f;f;241;f6d454a2-e868-4f3b-aa99-acaaf17f29ac",
+			"241;9758;2;f;f;t;0;f6d454a2-e868-4f3b-aa99-acaaf17f29ac",
+			"0;9758;3;t;f;f;242;93c551c3-a9af-4251-b6ea-a0f9c95ea3ce",
+			"0;9757;1;t;f;f;242;93c551c3-a9af-4251-b6ea-a0f9c95ea3ce",
+			"0;9757;3;f;f;f;243;39107c8d-0cac-4c8c-bf37-45c6e12be4f2",
+			"0;9756;1;f;f;f;243;39107c8d-0cac-4c8c-bf37-45c6e12be4f2",
+			"243;9756;2;f;f;t;0;39107c8d-0cac-4c8c-bf37-45c6e12be4f2",
+			"0;9756;3;t;f;f;244;112956c7-96a4-4680-b568-9f9baac14d6a",
+			"0;9755;1;t;f;f;244;112956c7-96a4-4680-b568-9f9baac14d6a",
+			"0;9755;3;f;f;f;245;922592a6-5995-4162-bdc5-3fdef7cb6cfa",
+			"0;9754;1;f;f;f;245;922592a6-5995-4162-bdc5-3fdef7cb6cfa",
+			"245;9754;2;f;f;t;0;922592a6-5995-4162-bdc5-3fdef7cb6cfa",
+			"0;9754;3;t;f;f;246;62dfd934-296e-4336-a221-6ef8aedfd67b",
+			"0;9753;1;t;f;f;246;62dfd934-296e-4336-a221-6ef8aedfd67b",
+			"0;9753;3;f;f;f;247;a2f37771-c081-474d-a5c7-dbed6b2f3105",
+			"0;9752;1;f;f;f;247;a2f37771-c081-474d-a5c7-dbed6b2f3105",
+			"247;9752;2;f;f;t;0;a2f37771-c081-474d-a5c7-dbed6b2f3105",
+			"0;9752;3;t;f;f;248;6e38bd4c-1100-4d91-8a4d-94ae6bb1e978",
+			"0;9751;1;t;f;f;248;6e38bd4c-1100-4d91-8a4d-94ae6bb1e978",
+			"0;9751;3;f;f;f;249;54a6be4a-5e05-49cb-882a-025fdb977552",
+			"0;9750;1;f;f;f;249;54a6be4a-5e05-49cb-882a-025fdb977552",
+			"249;9750;2;f;f;t;0;54a6be4a-5e05-49cb-882a-025fdb977552",
+			"0;9750;3;t;f;f;250;4d760557-063b-40e8-ad8f-d9bd4b159bc6",
+			"0;9749;1;t;f;f;250;4d760557-063b-40e8-ad8f-d9bd4b159bc6",
+			"0;9749;3;f;f;f;251;7fab81fb-4406-4bc7-a429-d269a40517b3",
+			"0;9748;1;f;f;f;251;7fab81fb-4406-4bc7-a429-d269a40517b3",
+			"251;9748;2;f;f;t;0;7fab81fb-4406-4bc7-a429-d269a40517b3",
+			"0;9748;3;t;f;f;252;57e48ef4-4190-4521-93e1-33b5a0fc50b0",
+			"0;9747;1;t;f;f;252;57e48ef4-4190-4521-93e1-33b5a0fc50b0",
+			"0;9747;3;f;f;f;253;c2302124-84b7-4afe-baba-d4c55ec3bcf9",
+			"0;9746;1;f;f;f;253;c2302124-84b7-4afe-baba-d4c55ec3bcf9",
+			"253;9746;2;f;f;t;0;c2302124-84b7-4afe-baba-d4c55ec3bcf9",
+			"0;9746;3;t;f;f;254;43eafc3b-96a9-4266-b885-f158762044b5",
+			"0;9745;1;t;f;f;254;43eafc3b-96a9-4266-b885-f158762044b5",
+			"0;9745;3;f;f;f;255;714917b8-1c99-4543-b142-b1a95d4ed09d",
+			"0;9744;1;f;f;f;255;714917b8-1c99-4543-b142-b1a95d4ed09d",
+			"255;9744;2;f;f;t;0;714917b8-1c99-4543-b142-b1a95d4ed09d",
+			"0;9744;3;t;f;f;256;c101894d-ea3e-45d1-a566-d12b270a1fbc",
+			"0;9743;1;t;f;f;256;c101894d-ea3e-45d1-a566-d12b270a1fbc",
+			"0;9743;3;f;f;f;257;34a63276-6455-412f-8603-61673ae02e24",
+			"0;9742;1;f;f;f;257;34a63276-6455-412f-8603-61673ae02e24",
+			"257;9742;2;f;f;t;0;34a63276-6455-412f-8603-61673ae02e24",
+			"0;9742;3;t;f;f;258;012fb829-d42b-4335-8d7a-6bb8b549f27b",
+			"0;9741;1;t;f;f;258;012fb829-d42b-4335-8d7a-6bb8b549f27b",
+			"0;9741;3;f;f;f;259;786117d0-1a2f-46b6-becc-d73dd7552f60",
+			"0;9740;1;f;f;f;259;786117d0-1a2f-46b6-becc-d73dd7552f60",
+			"259;9740;2;f;f;t;0;786117d0-1a2f-46b6-becc-d73dd7552f60",
+			"0;9740;3;t;f;f;260;95e78bcb-9d07-49e8-ae60-76ecd27fddb5",
+			"0;9739;1;t;f;f;260;95e78bcb-9d07-49e8-ae60-76ecd27fddb5",
+			"0;9739;3;f;f;f;261;5fa245a4-5706-47c7-931d-26bfc053b1fb",
+			"0;9738;1;f;f;f;261;5fa245a4-5706-47c7-931d-26bfc053b1fb",
+			"261;9738;2;f;f;t;0;5fa245a4-5706-47c7-931d-26bfc053b1fb",
+			"0;9738;3;t;f;f;262;6433b2c9-f241-49dc-9a64-fc6754c6db9b",
+			"0;9737;1;t;f;f;262;6433b2c9-f241-49dc-9a64-fc6754c6db9b",
+			"0;9737;3;f;f;f;263;b1c55d4a-fa57-4609-9df8-6942b1e0dd89",
+			"0;9736;1;f;f;f;263;b1c55d4a-fa57-4609-9df8-6942b1e0dd89",
+			"263;9736;2;f;f;t;0;b1c55d4a-fa57-4609-9df8-6942b1e0dd89",
+			"0;9736;3;t;f;f;264;da84dcc0-8724-4ec5-bfdc-e5365141c4e8",
+			"0;9735;1;t;f;f;264;da84dcc0-8724-4ec5-bfdc-e5365141c4e8",
+			"0;9735;3;f;f;f;265;a865bc08-5132-4533-87bf-57ce31e69fd7",
+			"0;9734;1;f;f;f;265;a865bc08-5132-4533-87bf-57ce31e69fd7",
+			"265;9734;2;f;f;t;0;a865bc08-5132-4533-87bf-57ce31e69fd7",
+			"0;9734;3;t;f;f;266;e614748b-3163-4d78-9240-53464c10a609",
+			"0;9733;1;t;f;f;266;e614748b-3163-4d78-9240-53464c10a609",
+			"0;9733;3;t;f;f;267;c9612b22-29da-4da0-b53a-54c1340b666c",
+			"0;9732;1;t;f;f;267;c9612b22-29da-4da0-b53a-54c1340b666c",
+			"0;9732;3;f;f;f;268;c1fcfd8b-16d5-43c6-bd72-28dcf4a21f38",
+			"0;9731;1;f;f;f;268;c1fcfd8b-16d5-43c6-bd72-28dcf4a21f38",
+			"268;9731;2;f;f;t;0;c1fcfd8b-16d5-43c6-bd72-28dcf4a21f38",
+			"0;9731;3;f;f;f;269;cfdfd1aa-1482-42a9-b384-69768c428f66",
+			"0;9730;1;f;f;f;269;cfdfd1aa-1482-42a9-b384-69768c428f66",
+			"269;9730;2;f;f;t;0;cfdfd1aa-1482-42a9-b384-69768c428f66",
+			"0;9730;3;t;f;f;270;2b26e15a-b433-4236-8a3c-2907080d50d9",
+			"0;9729;1;t;f;f;270;2b26e15a-b433-4236-8a3c-2907080d50d9",
+			"0;9729;3;f;f;f;271;debc4f1f-88d7-4b93-9a76-02338ea45010",
+			"0;9728;1;f;f;f;271;debc4f1f-88d7-4b93-9a76-02338ea45010",
+			"271;9728;2;f;f;t;0;debc4f1f-88d7-4b93-9a76-02338ea45010",
+			"0;9728;3;t;f;f;272;acee065a-2893-4a39-a198-3994ac859888",
+			"0;9727;1;t;f;f;272;acee065a-2893-4a39-a198-3994ac859888",
+			"0;9727;3;f;f;f;273;a6e5deb0-b4f6-4aa6-8261-4b099b9e2b30",
+			"0;9726;1;f;f;f;273;a6e5deb0-b4f6-4aa6-8261-4b099b9e2b30",
+			"273;9726;2;f;f;t;0;a6e5deb0-b4f6-4aa6-8261-4b099b9e2b30",
+			"0;9726;3;t;f;f;274;e64e83bc-7501-4f47-9e3c-9a4d14beaef3",
+			"0;9725;1;t;f;f;274;e64e83bc-7501-4f47-9e3c-9a4d14beaef3",
+			"0;9725;3;f;f;f;275;e2dc74c8-ea59-40ff-ae55-09c99f31ef42",
+			"0;9724;1;f;f;f;275;e2dc74c8-ea59-40ff-ae55-09c99f31ef42",
+			"275;9724;2;f;f;t;0;e2dc74c8-ea59-40ff-ae55-09c99f31ef42",
+			"0;9724;3;t;f;f;276;3e21ce9d-5906-4250-967c-966e995730b0",
+			"0;9723;1;t;f;f;276;3e21ce9d-5906-4250-967c-966e995730b0",
+			"0;9723;3;f;f;f;277;76f2481e-7966-4760-8d45-d1240f8755ea",
+			"0;9722;1;f;f;f;277;76f2481e-7966-4760-8d45-d1240f8755ea",
+			"277;9722;2;f;f;t;0;76f2481e-7966-4760-8d45-d1240f8755ea",
+			"0;9722;3;t;f;f;278;dd9a3e7c-a949-4d4b-a28f-027e404aff26",
+			"0;9721;1;t;f;f;278;dd9a3e7c-a949-4d4b-a28f-027e404aff26",
+			"0;9721;3;f;f;f;279;26dddae0-087f-46b7-ace1-cdceab19bede",
+			"0;9720;1;f;f;f;279;26dddae0-087f-46b7-ace1-cdceab19bede",
+			"279;9720;2;f;f;t;0;26dddae0-087f-46b7-ace1-cdceab19bede",
+			"0;9720;3;t;f;f;280;9ba49bb4-d5d2-4e4d-9ad3-54e1f2f008eb",
+			"0;9719;1;t;f;f;280;9ba49bb4-d5d2-4e4d-9ad3-54e1f2f008eb",
+			"0;9719;3;t;f;f;281;44b8beb8-2ad1-4480-bd87-fe4775118279",
+			"0;9718;1;t;f;f;281;44b8beb8-2ad1-4480-bd87-fe4775118279",
+			"282;9718;2;f;f;t;0;4e02cd70-ab6c-4b1a-b5a5-25f8f2a2055a",
+			"0;9718;3;t;f;f;282;4e02cd70-ab6c-4b1a-b5a5-25f8f2a2055a",
+			"0;9717;1;t;f;f;282;4e02cd70-ab6c-4b1a-b5a5-25f8f2a2055a",
+			"0;9717;3;f;f;f;283;a9554ae7-967d-4898-bf68-06836201e8dc",
+			"0;9716;1;f;f;f;283;a9554ae7-967d-4898-bf68-06836201e8dc",
+			"283;9716;2;f;f;t;0;a9554ae7-967d-4898-bf68-06836201e8dc",
+			"0;9716;3;t;f;f;284;e4faa0c7-43db-4bf2-9568-11e248087569",
+			"0;9715;1;t;f;f;284;e4faa0c7-43db-4bf2-9568-11e248087569",
+			"0;9715;3;t;f;f;285;2810c32c-f791-49e9-96a3-b43c3f39a4e5",
+			"0;9714;1;t;f;f;285;2810c32c-f791-49e9-96a3-b43c3f39a4e5",
+			"286;9714;2;f;f;t;0;1635860d-b8a0-4eb5-b157-93e40b758aa1",
+			"0;9714;3;t;f;f;286;1635860d-b8a0-4eb5-b157-93e40b758aa1",
+			"0;9713;1;t;f;f;286;1635860d-b8a0-4eb5-b157-93e40b758aa1",
+			"0;9713;3;f;f;f;287;fb05548c-74a8-402f-bdd5-857a67b17b5d",
+			"0;9712;1;f;f;f;287;fb05548c-74a8-402f-bdd5-857a67b17b5d",
+			"287;9712;2;f;f;t;0;fb05548c-74a8-402f-bdd5-857a67b17b5d",
+			"0;9712;3;t;f;f;288;3505a458-cd45-434b-92b2-f0c02a17f68e",
+			"0;9711;1;t;f;f;288;3505a458-cd45-434b-92b2-f0c02a17f68e",
+			"0;9711;3;t;f;f;289;5d6631b5-2ca8-45ff-b7ce-704e354ddf94",
+			"0;9710;1;t;f;f;289;5d6631b5-2ca8-45ff-b7ce-704e354ddf94",
+			"290;9710;2;f;f;t;0;b23c5066-8d87-43c3-a5db-5ff5ca2eb45f",
+			"0;9710;3;t;f;f;290;b23c5066-8d87-43c3-a5db-5ff5ca2eb45f",
+			"0;9709;1;t;f;f;290;b23c5066-8d87-43c3-a5db-5ff5ca2eb45f",
+			"0;9709;3;f;f;f;291;fbe15b3f-4eb0-425c-9e78-473918ceb18b",
+			"0;9708;1;f;f;f;291;fbe15b3f-4eb0-425c-9e78-473918ceb18b",
+			"291;9708;2;f;f;t;0;fbe15b3f-4eb0-425c-9e78-473918ceb18b",
+			"0;9708;3;t;f;f;292;67d0b3cc-fb36-40cb-9df6-d6bbc3f17fb1",
+			"0;9707;1;t;f;f;292;67d0b3cc-fb36-40cb-9df6-d6bbc3f17fb1",
+			"0;9707;3;t;f;f;293;408a04e6-0e71-41ad-b9ac-c2b9832fe95d",
+			"0;9706;1;t;f;f;293;408a04e6-0e71-41ad-b9ac-c2b9832fe95d",
+			"294;9706;2;f;f;t;0;5356af3d-742f-4161-9a40-8532ee1fcd97",
+			"0;9706;3;t;f;f;294;5356af3d-742f-4161-9a40-8532ee1fcd97",
+			"0;9705;1;t;f;f;294;5356af3d-742f-4161-9a40-8532ee1fcd97",
+			"0;9705;3;f;f;f;295;871b30d8-3c69-41f0-9d8e-fdf17e5b6839",
+			"0;9704;1;f;f;f;295;871b30d8-3c69-41f0-9d8e-fdf17e5b6839",
+			"295;9704;2;f;f;t;0;871b30d8-3c69-41f0-9d8e-fdf17e5b6839",
+			"0;9704;3;t;f;f;296;93084b92-6ae2-4f3b-83ef-81c688c054f3",
+			"0;9703;1;t;f;f;296;93084b92-6ae2-4f3b-83ef-81c688c054f3",
+			"0;9703;3;f;f;f;297;fbf2d3f0-7c2c-4a72-8a09-0ddc1ad2a9ba",
+			"0;9702;1;f;f;f;297;fbf2d3f0-7c2c-4a72-8a09-0ddc1ad2a9ba",
+			"297;9702;2;f;f;t;0;fbf2d3f0-7c2c-4a72-8a09-0ddc1ad2a9ba",
+			"0;9702;3;t;f;f;298;f57a5674-1c36-451d-a863-4873166d0af1",
+			"0;9701;1;t;f;f;298;f57a5674-1c36-451d-a863-4873166d0af1",
+			"0;9701;3;f;f;f;299;d5cec17c-a99e-4d31-9785-fa37de2c02e9",
+			"0;9700;1;f;f;f;299;d5cec17c-a99e-4d31-9785-fa37de2c02e9",
+			"299;9700;2;f;f;t;0;d5cec17c-a99e-4d31-9785-fa37de2c02e9",
+			"0;9700;3;t;f;f;300;62094559-d760-4fe8-9c95-fe084b5594c2",
+			"0;9699;1;t;f;f;300;62094559-d760-4fe8-9c95-fe084b5594c2",
+			"0;9699;3;f;f;f;301;517a2280-f10d-4df1-8575-2a3a785060c0",
+			"0;9698;1;f;f;f;301;517a2280-f10d-4df1-8575-2a3a785060c0",
+			"301;9698;2;f;f;t;0;517a2280-f10d-4df1-8575-2a3a785060c0",
+			"0;9698;3;t;f;f;302;7d266c4f-0a4a-4a2c-a47d-41f7a9cce2c2",
+			"0;9697;1;t;f;f;302;7d266c4f-0a4a-4a2c-a47d-41f7a9cce2c2",
+			"0;9697;3;f;f;f;303;786a1b14-84b7-4905-aa4a-1bcb7bcef91b",
+			"0;9696;1;f;f;f;303;786a1b14-84b7-4905-aa4a-1bcb7bcef91b",
+			"303;9696;2;f;f;t;0;786a1b14-84b7-4905-aa4a-1bcb7bcef91b",
+			"0;9696;3;t;f;f;304;9b68497b-0d77-487b-b46a-6484509cec47",
+			"0;9695;1;t;f;f;304;9b68497b-0d77-487b-b46a-6484509cec47",
+			"0;9695;3;f;f;f;305;7df01779-aadc-48ef-927d-13a6eba2310b",
+			"0;9694;1;f;f;f;305;7df01779-aadc-48ef-927d-13a6eba2310b",
+			"305;9694;2;f;f;t;0;7df01779-aadc-48ef-927d-13a6eba2310b",
+			"0;9694;3;t;f;f;306;c726e73b-59a1-48b6-99c6-918d146ce7b5",
+			"0;9693;1;t;f;f;306;c726e73b-59a1-48b6-99c6-918d146ce7b5",
+			"0;9693;3;f;f;f;307;452f0ba9-8e11-49b0-aaf4-7b2838fff37f",
+			"0;9692;1;f;f;f;307;452f0ba9-8e11-49b0-aaf4-7b2838fff37f",
+			"307;9692;2;f;f;t;0;452f0ba9-8e11-49b0-aaf4-7b2838fff37f",
+			"0;9692;3;t;f;f;308;45190f1f-43fd-4d30-8327-ce08ad03e8ed",
+			"0;9691;1;t;f;f;308;45190f1f-43fd-4d30-8327-ce08ad03e8ed",
+			"0;9691;3;f;f;f;309;b6795dd9-84df-4949-9643-6ded5dd8cc5e",
+			"0;9690;1;f;f;f;309;b6795dd9-84df-4949-9643-6ded5dd8cc5e",
+			"309;9690;2;f;f;t;0;b6795dd9-84df-4949-9643-6ded5dd8cc5e",
+			"0;9690;3;t;f;f;310;e58ae597-cdaa-4165-a39b-2c37e01477cd",
+			"0;9689;1;t;f;f;310;e58ae597-cdaa-4165-a39b-2c37e01477cd",
+			"0;9689;3;f;f;f;311;9356bf47-ad0a-4b5e-a445-28e9b3a51034",
+			"0;9688;1;f;f;f;311;9356bf47-ad0a-4b5e-a445-28e9b3a51034",
+			"311;9688;2;f;f;t;0;9356bf47-ad0a-4b5e-a445-28e9b3a51034",
+			"0;9688;3;t;f;f;312;7ed244a6-e390-48be-ad82-861ce78946fd",
+			"0;9687;1;t;f;f;312;7ed244a6-e390-48be-ad82-861ce78946fd",
+			"0;9687;3;f;f;f;313;ca8ac772-6337-4a3e-a539-5e5ecb792608",
+			"0;9686;1;f;f;f;313;ca8ac772-6337-4a3e-a539-5e5ecb792608",
+			"313;9686;2;f;f;t;0;ca8ac772-6337-4a3e-a539-5e5ecb792608",
+			"0;9686;3;t;f;f;314;3946dd39-d3d4-48e0-a6a1-09ce5d8051d5",
+			"0;9685;1;t;f;f;314;3946dd39-d3d4-48e0-a6a1-09ce5d8051d5",
+			"0;9685;3;f;f;f;315;e3331eab-76a6-4079-a975-0516d26dee08",
+			"0;9684;1;f;f;f;315;e3331eab-76a6-4079-a975-0516d26dee08",
+			"315;9684;2;f;f;t;0;e3331eab-76a6-4079-a975-0516d26dee08",
+			"0;9684;3;t;f;f;316;462323b8-c269-4cc1-919c-56ab740a5314",
+			"0;9683;1;t;f;f;316;462323b8-c269-4cc1-919c-56ab740a5314",
+			"0;9683;3;f;f;f;317;02c50d3d-3012-4704-b7f6-2ae5b86778c8",
+			"0;9682;1;f;f;f;317;02c50d3d-3012-4704-b7f6-2ae5b86778c8",
+			"317;9682;2;f;f;t;0;02c50d3d-3012-4704-b7f6-2ae5b86778c8",
+			"0;9682;3;t;f;f;318;1861bfc9-3e9d-46cf-8874-929b14a605ac",
+			"0;9681;1;t;f;f;318;1861bfc9-3e9d-46cf-8874-929b14a605ac",
+			"0;9681;3;f;f;f;319;f99255f7-c7c4-47d6-ba26-b960fa64cc7c",
+			"0;9680;1;f;f;f;319;f99255f7-c7c4-47d6-ba26-b960fa64cc7c",
+			"319;9680;2;f;f;t;0;f99255f7-c7c4-47d6-ba26-b960fa64cc7c",
+			"0;9680;3;t;f;f;320;e79e0380-03f7-492e-83b3-51f68d0b0ab0",
+			"0;9679;1;t;f;f;320;e79e0380-03f7-492e-83b3-51f68d0b0ab0",
+			"0;9679;3;f;f;f;321;408527ce-261e-4109-9cff-3430e8d6df02",
+			"0;9678;1;f;f;f;321;408527ce-261e-4109-9cff-3430e8d6df02",
+			"321;9678;2;f;f;t;0;408527ce-261e-4109-9cff-3430e8d6df02",
+			"0;9678;3;t;f;f;322;cab75e78-ebd0-4bfa-ba49-a6965fa7ac58",
+			"0;9677;1;t;f;f;322;cab75e78-ebd0-4bfa-ba49-a6965fa7ac58",
+			"0;9677;3;f;f;f;323;5c64a4b7-67d2-4e75-99ad-2e106969eabb",
+			"0;9676;1;f;f;f;323;5c64a4b7-67d2-4e75-99ad-2e106969eabb",
+			"323;9676;2;f;f;t;0;5c64a4b7-67d2-4e75-99ad-2e106969eabb",
+			"0;9676;3;t;f;f;324;4a522658-d030-4974-8648-bfff3fe586de",
+			"0;9675;1;t;f;f;324;4a522658-d030-4974-8648-bfff3fe586de",
+			"0;9675;3;f;f;f;325;31d1a49f-b39c-4465-9206-574be7880b1c",
+			"0;9674;1;f;f;f;325;31d1a49f-b39c-4465-9206-574be7880b1c",
+			"325;9674;2;f;f;t;0;31d1a49f-b39c-4465-9206-574be7880b1c",
+			"0;9674;3;t;f;f;326;b54b0631-8026-4c63-b2d6-f4cbedd5568f",
+			"0;9673;1;t;f;f;326;b54b0631-8026-4c63-b2d6-f4cbedd5568f",
+			"0;9673;3;f;f;f;327;82f9c5cc-fe87-487a-b7f3-364f4dffdf3d",
+			"0;9672;1;f;f;f;327;82f9c5cc-fe87-487a-b7f3-364f4dffdf3d",
+			"327;9672;2;f;f;t;0;82f9c5cc-fe87-487a-b7f3-364f4dffdf3d",
+			"0;9672;3;t;f;f;328;3545b64d-37ad-49d1-84ff-1fe5ce2a222e",
+			"0;9671;1;t;f;f;328;3545b64d-37ad-49d1-84ff-1fe5ce2a222e",
+			"0;9671;3;f;f;f;329;cee8dedf-1872-4fd2-82ef-42152740d737",
+			"0;9670;1;f;f;f;329;cee8dedf-1872-4fd2-82ef-42152740d737",
+			"329;9670;2;f;f;t;0;cee8dedf-1872-4fd2-82ef-42152740d737",
+			"0;9670;3;t;f;f;330;9c08127c-7a09-4903-ad10-5690877563d0",
+			"0;9669;1;t;f;f;330;9c08127c-7a09-4903-ad10-5690877563d0",
+			"0;9669;3;f;f;f;331;7df9cc5f-596d-4c3d-83ff-969953382310",
+			"0;9668;1;f;f;f;331;7df9cc5f-596d-4c3d-83ff-969953382310",
+			"331;9668;2;f;f;t;0;7df9cc5f-596d-4c3d-83ff-969953382310",
+			"0;9668;3;t;f;f;332;60cd0a8a-4661-4991-9458-87d9788aaf56",
+			"0;9667;1;t;f;f;332;60cd0a8a-4661-4991-9458-87d9788aaf56",
+			"0;9667;3;f;f;f;333;f119b557-123d-4ea6-a650-0e434b8eb24a",
+			"0;9666;1;f;f;f;333;f119b557-123d-4ea6-a650-0e434b8eb24a",
+			"333;9666;2;f;f;t;0;f119b557-123d-4ea6-a650-0e434b8eb24a",
+			"0;9666;3;t;f;f;334;ef76f4b4-7ded-4395-94bd-e19438d4b336",
+			"0;9665;1;t;f;f;334;ef76f4b4-7ded-4395-94bd-e19438d4b336",
+			"0;9665;3;f;f;f;335;22da7eaa-e8e0-4329-a186-ca4ca4fc9ee9",
+			"0;9664;1;f;f;f;335;22da7eaa-e8e0-4329-a186-ca4ca4fc9ee9",
+			"335;9664;2;f;f;t;0;22da7eaa-e8e0-4329-a186-ca4ca4fc9ee9",
+			"0;9664;3;t;f;f;336;7b274d75-c431-4842-a73f-561a638a24c4",
+			"0;9663;1;t;f;f;336;7b274d75-c431-4842-a73f-561a638a24c4",
+			"0;9663;3;f;f;f;337;ba9a3c92-15e1-4240-9602-ca9e686f014f",
+			"0;9662;1;f;f;f;337;ba9a3c92-15e1-4240-9602-ca9e686f014f",
+			"337;9662;2;f;f;t;0;ba9a3c92-15e1-4240-9602-ca9e686f014f",
+			"0;9662;3;t;f;f;338;2816ee86-12d8-4c00-96cd-d4a44238326f",
+			"0;9661;1;t;f;f;338;2816ee86-12d8-4c00-96cd-d4a44238326f",
+			"0;9661;3;f;f;f;339;6adc6f6f-0902-4d73-bf2f-067811a68882",
+			"0;9660;1;f;f;f;339;6adc6f6f-0902-4d73-bf2f-067811a68882",
+			"339;9660;2;f;f;t;0;6adc6f6f-0902-4d73-bf2f-067811a68882",
+			"0;9660;3;t;f;f;340;28e9027a-aa5d-4025-8d58-39299766741f",
+			"0;9659;1;t;f;f;340;28e9027a-aa5d-4025-8d58-39299766741f",
+			"0;9659;3;f;f;f;341;10d67e2a-6808-44b2-96ac-e9eb9080da05",
+			"0;9658;1;f;f;f;341;10d67e2a-6808-44b2-96ac-e9eb9080da05",
+			"341;9658;2;f;f;t;0;10d67e2a-6808-44b2-96ac-e9eb9080da05",
+			"0;9658;3;t;f;f;342;adf7a6ea-b202-4c6c-807f-509f0c2cdc6b",
+			"0;9657;1;t;f;f;342;adf7a6ea-b202-4c6c-807f-509f0c2cdc6b",
+			"0;9657;3;f;f;f;343;623c6af4-cc8e-4746-a00b-c2f02a622351",
+			"0;9656;1;f;f;f;343;623c6af4-cc8e-4746-a00b-c2f02a622351",
+			"343;9656;2;f;f;t;0;623c6af4-cc8e-4746-a00b-c2f02a622351",
+			"0;9656;3;t;f;f;344;123e678f-dacc-4577-8aad-498897ca3faf",
+			"0;9655;1;t;f;f;344;123e678f-dacc-4577-8aad-498897ca3faf",
+			"0;9655;3;f;f;f;345;21b40711-aceb-47e6-ac43-784c20d95f21",
+			"0;9654;1;f;f;f;345;21b40711-aceb-47e6-ac43-784c20d95f21",
+			"345;9654;2;f;f;t;0;21b40711-aceb-47e6-ac43-784c20d95f21",
+			"0;9654;3;t;f;f;346;e25fbb95-f791-4e2a-a22d-8f40b845397b",
+			"0;9653;1;t;f;f;346;e25fbb95-f791-4e2a-a22d-8f40b845397b",
+			"0;9653;3;f;f;f;347;b0efe40b-02bb-4092-97a8-edbd4608ded3",
+			"0;9652;1;f;f;f;347;b0efe40b-02bb-4092-97a8-edbd4608ded3",
+			"347;9652;2;f;f;t;0;b0efe40b-02bb-4092-97a8-edbd4608ded3",
+			"0;9652;3;t;f;f;348;e984d78d-44b7-440f-a8e6-b92fe5618e5e",
+			"0;9651;1;t;f;f;348;e984d78d-44b7-440f-a8e6-b92fe5618e5e",
+			"0;9651;3;f;f;f;349;f093d476-d6ed-47bc-bdcb-fde6a46b0858",
+			"0;9650;1;f;f;f;349;f093d476-d6ed-47bc-bdcb-fde6a46b0858",
+			"349;9650;2;f;f;t;0;f093d476-d6ed-47bc-bdcb-fde6a46b0858",
+			"0;9650;3;t;f;f;350;a274461c-fba1-46c2-9324-d6e45193510d",
+			"0;9649;1;t;f;f;350;a274461c-fba1-46c2-9324-d6e45193510d",
+			"0;9649;3;f;f;f;351;e5e19d4a-036c-4393-8a2c-dea3936d11e8",
+			"0;9648;1;f;f;f;351;e5e19d4a-036c-4393-8a2c-dea3936d11e8",
+			"351;9648;2;f;f;t;0;e5e19d4a-036c-4393-8a2c-dea3936d11e8",
+			"0;9648;3;t;f;f;352;c8ed320d-70fb-4512-a7fa-397c8f64272e",
+			"0;9647;1;t;f;f;352;c8ed320d-70fb-4512-a7fa-397c8f64272e",
+			"0;9647;3;f;f;f;353;18988f6d-a37c-4670-9c69-3e9c6ad81132",
+			"0;9646;1;f;f;f;353;18988f6d-a37c-4670-9c69-3e9c6ad81132",
+			"353;9646;2;f;f;t;0;18988f6d-a37c-4670-9c69-3e9c6ad81132",
+			"0;9646;3;t;f;f;354;5ec45071-2a32-4ff6-be78-342f767e4645",
+			"0;9645;1;t;f;f;354;5ec45071-2a32-4ff6-be78-342f767e4645",
+			"0;9645;3;f;f;f;355;eb52ca91-902c-4168-a016-7f1266c82dc2",
+			"0;9644;1;f;f;f;355;eb52ca91-902c-4168-a016-7f1266c82dc2",
+			"355;9644;2;f;f;t;0;eb52ca91-902c-4168-a016-7f1266c82dc2",
+			"0;9644;3;t;f;f;356;cc2858ae-e31c-49e4-abe3-a7f7841a079f",
+			"0;9643;1;t;f;f;356;cc2858ae-e31c-49e4-abe3-a7f7841a079f",
+			"0;9643;3;f;f;f;357;50c2a1f8-fc95-469d-9591-cd5945860279",
+			"0;9642;1;f;f;f;357;50c2a1f8-fc95-469d-9591-cd5945860279",
+			"357;9642;2;f;f;t;0;50c2a1f8-fc95-469d-9591-cd5945860279",
+			"0;9642;3;t;f;f;358;580a2b1e-c035-4ee2-9072-2257a63f5d05",
+			"0;9641;1;t;f;f;358;580a2b1e-c035-4ee2-9072-2257a63f5d05",
+			"0;9641;3;f;f;f;359;2d541a9c-95e1-4b07-9415-e00b2581e061",
+			"0;9640;1;f;f;f;359;2d541a9c-95e1-4b07-9415-e00b2581e061",
+			"359;9640;2;f;f;t;0;2d541a9c-95e1-4b07-9415-e00b2581e061",
+			"0;9640;3;t;f;f;360;491ae5f9-c2b5-49ed-9de0-f4af12d823ac",
+			"0;9639;1;t;f;f;360;491ae5f9-c2b5-49ed-9de0-f4af12d823ac",
+			"0;9639;3;f;f;f;361;0a23efd4-f480-443d-9c28-3067a9f82451",
+			"0;9638;1;f;f;f;361;0a23efd4-f480-443d-9c28-3067a9f82451",
+			"361;9638;2;f;f;t;0;0a23efd4-f480-443d-9c28-3067a9f82451",
+			"0;9638;3;t;f;f;362;e84c90b5-3508-4562-9697-34c0e376d4d4",
+			"0;9637;1;t;f;f;362;e84c90b5-3508-4562-9697-34c0e376d4d4",
+			"0;9637;3;f;f;f;363;587baa76-8773-4db2-884e-15ebd19cec2c",
+			"0;9636;1;f;f;f;363;587baa76-8773-4db2-884e-15ebd19cec2c",
+			"363;9636;2;f;f;t;0;587baa76-8773-4db2-884e-15ebd19cec2c",
+			"0;9636;3;t;f;f;364;5ec44013-0d47-4047-8473-3c6e944a1e0e",
+			"0;9635;1;t;f;f;364;5ec44013-0d47-4047-8473-3c6e944a1e0e",
+			"0;9635;3;f;f;f;365;21743d8e-cefb-422f-884b-e4ab1af8bb31",
+			"0;9634;1;f;f;f;365;21743d8e-cefb-422f-884b-e4ab1af8bb31",
+			"365;9634;2;f;f;t;0;21743d8e-cefb-422f-884b-e4ab1af8bb31",
+			"0;9634;3;t;f;f;366;17384b19-8239-4d70-b40b-59bd81e746f3",
+			"0;9633;1;t;f;f;366;17384b19-8239-4d70-b40b-59bd81e746f3",
+			"0;9633;3;f;f;f;367;14942cac-5eed-4ea3-8065-15da29e33c64",
+			"0;9632;1;f;f;f;367;14942cac-5eed-4ea3-8065-15da29e33c64",
+			"367;9632;2;f;f;t;0;14942cac-5eed-4ea3-8065-15da29e33c64",
+			"0;9632;3;t;f;f;368;478772b1-65ab-427e-a976-a4984942dba7",
+			"0;9631;1;t;f;f;368;478772b1-65ab-427e-a976-a4984942dba7",
+			"0;9631;3;f;f;f;369;ce5a91be-53f1-4b63-9d20-6323e10f78d5",
+			"0;9630;1;f;f;f;369;ce5a91be-53f1-4b63-9d20-6323e10f78d5",
+			"369;9630;2;f;f;t;0;ce5a91be-53f1-4b63-9d20-6323e10f78d5",
+			"0;9630;3;t;f;f;370;79e5ea25-04c5-4507-9064-baf91219a294",
+			"0;9629;1;t;f;f;370;79e5ea25-04c5-4507-9064-baf91219a294",
+			"0;9629;3;f;f;f;371;b5639251-296f-4b81-b0b6-320669e215da",
+			"0;9628;1;f;f;f;371;b5639251-296f-4b81-b0b6-320669e215da",
+			"371;9628;2;f;f;t;0;b5639251-296f-4b81-b0b6-320669e215da",
+			"0;9628;3;t;f;f;372;c00bd38e-14cc-44f3-b438-4bacf4b3819d",
+			"0;9627;1;t;f;f;372;c00bd38e-14cc-44f3-b438-4bacf4b3819d",
+			"0;9627;3;f;f;f;373;e8815913-26ca-462a-8b70-4484759efcee",
+			"0;9626;1;f;f;f;373;e8815913-26ca-462a-8b70-4484759efcee",
+			"373;9626;2;f;f;t;0;e8815913-26ca-462a-8b70-4484759efcee",
+			"0;9626;3;t;f;f;374;6e80fff2-9692-44e0-a944-20ba23ebe38e",
+			"0;9625;1;t;f;f;374;6e80fff2-9692-44e0-a944-20ba23ebe38e",
+			"0;9625;3;f;f;f;375;84712d4b-590b-4046-b00f-c32765a992d1",
+			"0;9624;1;f;f;f;375;84712d4b-590b-4046-b00f-c32765a992d1",
+			"375;9624;2;f;f;t;0;84712d4b-590b-4046-b00f-c32765a992d1",
+			"0;9624;3;t;f;f;376;a1c525f4-17b4-4542-8483-d8e99023e66f",
+			"0;9623;1;t;f;f;376;a1c525f4-17b4-4542-8483-d8e99023e66f",
+			"0;9623;3;f;f;f;377;15fd09c3-9c8d-490b-8df1-00afcbc48c2b",
+			"0;9622;1;f;f;f;377;15fd09c3-9c8d-490b-8df1-00afcbc48c2b",
+			"377;9622;2;f;f;t;0;15fd09c3-9c8d-490b-8df1-00afcbc48c2b",
+			"0;9622;3;t;f;f;378;3e201cbe-afe3-4435-8954-c676e56edf05",
+			"0;9621;1;t;f;f;378;3e201cbe-afe3-4435-8954-c676e56edf05",
+			"0;9621;3;f;f;f;379;a77ea1af-4f78-4d3b-bdbc-218957d3ac17",
+			"0;9620;1;f;f;f;379;a77ea1af-4f78-4d3b-bdbc-218957d3ac17",
+			"379;9620;2;f;f;t;0;a77ea1af-4f78-4d3b-bdbc-218957d3ac17",
+			"0;9620;3;t;f;f;380;058ecd03-cea0-4ac5-871e-2b6d85633cab",
+			"0;9619;1;t;f;f;380;058ecd03-cea0-4ac5-871e-2b6d85633cab",
+			"0;9619;3;t;f;f;381;c1b4f468-0c72-4a50-b5f8-dfe8450461ab",
+			"0;9618;1;t;f;f;381;c1b4f468-0c72-4a50-b5f8-dfe8450461ab",
+			"0;9618;3;f;f;f;382;da2965f2-c3c2-4120-86e2-edec5eff0efa",
+			"0;9617;1;f;f;f;382;da2965f2-c3c2-4120-86e2-edec5eff0efa",
+			"382;9617;2;f;f;t;0;da2965f2-c3c2-4120-86e2-edec5eff0efa",
+			"0;9617;3;f;f;f;383;bcfbbdda-84ba-4e38-a752-c1350ff2ead4",
+			"0;9616;1;f;f;f;383;bcfbbdda-84ba-4e38-a752-c1350ff2ead4",
+			"383;9616;2;f;f;t;0;bcfbbdda-84ba-4e38-a752-c1350ff2ead4",
+			"0;9616;3;t;f;f;384;0c6a5de2-faef-49b6-a21b-b019b7c01a99",
+			"0;9615;1;t;f;f;384;0c6a5de2-faef-49b6-a21b-b019b7c01a99",
+			"0;9615;3;f;f;f;385;90bed633-ad9c-461d-9e32-d465a488c0ef",
+			"0;9614;1;f;f;f;385;90bed633-ad9c-461d-9e32-d465a488c0ef",
+			"385;9614;2;f;f;t;0;90bed633-ad9c-461d-9e32-d465a488c0ef",
+			"0;9614;3;t;f;f;386;ec8d6bb2-0e58-418b-9257-832ebacd963d",
+			"0;9613;1;t;f;f;386;ec8d6bb2-0e58-418b-9257-832ebacd963d",
+			"0;9613;3;f;f;f;387;7fb497fe-36d7-4d6c-ab26-5b746af27157",
+			"0;9612;1;f;f;f;387;7fb497fe-36d7-4d6c-ab26-5b746af27157",
+			"387;9612;2;f;f;t;0;7fb497fe-36d7-4d6c-ab26-5b746af27157",
+			"0;9612;3;t;f;f;388;a6f4984f-d2aa-4b85-bbc1-894dafcd1a97",
+			"0;9611;1;t;f;f;388;a6f4984f-d2aa-4b85-bbc1-894dafcd1a97",
+			"0;9611;3;f;f;f;389;b94c16f0-415d-46f2-babb-3d5395daa307",
+			"0;9610;1;f;f;f;389;b94c16f0-415d-46f2-babb-3d5395daa307",
+			"389;9610;2;f;f;t;0;b94c16f0-415d-46f2-babb-3d5395daa307",
+			"0;9610;3;t;f;f;390;4d7513f1-3d3a-4bde-a5c6-d7587eeeb6fb",
+			"0;9609;1;t;f;f;390;4d7513f1-3d3a-4bde-a5c6-d7587eeeb6fb",
+			"0;9609;3;f;f;f;391;0181fa31-d590-4f20-969e-08d6e5a0fd12",
+			"0;9608;1;f;f;f;391;0181fa31-d590-4f20-969e-08d6e5a0fd12",
+			"391;9608;2;f;f;t;0;0181fa31-d590-4f20-969e-08d6e5a0fd12",
+			"0;9608;3;t;f;f;392;b5c86f6a-55ea-4d34-82c5-7cc719682a96",
+			"0;9607;1;t;f;f;392;b5c86f6a-55ea-4d34-82c5-7cc719682a96",
+			"0;9607;3;f;f;f;393;7ae92f08-645c-4682-b600-93cdc7e136c9",
+			"0;9606;1;f;f;f;393;7ae92f08-645c-4682-b600-93cdc7e136c9",
+			"393;9606;2;f;f;t;0;7ae92f08-645c-4682-b600-93cdc7e136c9",
+			"0;9606;3;t;f;f;394;b7ee18d6-fbf4-473c-8fe6-1d40ef87fe08",
+			"0;9605;1;t;f;f;394;b7ee18d6-fbf4-473c-8fe6-1d40ef87fe08",
+			"0;9605;3;f;f;f;395;9879a1ef-671e-4db4-be8c-380e515e1cb9",
+			"0;9604;1;f;f;f;395;9879a1ef-671e-4db4-be8c-380e515e1cb9",
+			"395;9604;2;f;f;t;0;9879a1ef-671e-4db4-be8c-380e515e1cb9",
+			"0;9604;3;t;f;f;396;5e79d97c-3d27-43c6-81e7-bfc844369bd0",
+			"0;9603;1;t;f;f;396;5e79d97c-3d27-43c6-81e7-bfc844369bd0",
+			"0;9603;3;f;f;f;397;102262d7-a5f7-4c64-a93f-419b101b6ca8",
+			"0;9602;1;f;f;f;397;102262d7-a5f7-4c64-a93f-419b101b6ca8",
+			"397;9602;2;f;f;t;0;102262d7-a5f7-4c64-a93f-419b101b6ca8",
+			"0;9602;3;t;f;f;398;a3c74d61-b6b1-485f-aa6a-69f9daa3c065",
+			"0;9601;1;t;f;f;398;a3c74d61-b6b1-485f-aa6a-69f9daa3c065",
+			"0;9601;3;f;f;f;399;003a5a18-6840-4bab-b42d-2dc8643c146c",
+			"0;9600;1;f;f;f;399;003a5a18-6840-4bab-b42d-2dc8643c146c",
+			"399;9600;2;f;f;t;0;003a5a18-6840-4bab-b42d-2dc8643c146c",
+			"0;9600;3;t;f;f;400;a917cae1-8b48-421a-ac75-6285304115d7",
+			"0;9599;1;t;f;f;400;a917cae1-8b48-421a-ac75-6285304115d7",
+			"0;9599;3;f;f;f;401;49044c3e-e68c-4207-a9dd-d733698bf67b",
+			"0;9598;1;f;f;f;401;49044c3e-e68c-4207-a9dd-d733698bf67b",
+			"401;9598;2;f;f;t;0;49044c3e-e68c-4207-a9dd-d733698bf67b",
+			"0;9598;3;t;f;f;402;22d9bbbe-771c-4322-8dc3-541557d9099c",
+			"0;9597;1;t;f;f;402;22d9bbbe-771c-4322-8dc3-541557d9099c",
+			"0;9597;3;f;f;f;403;62d81b41-021d-4a6e-954b-1f6d1c71e6c0",
+			"0;9596;1;f;f;f;403;62d81b41-021d-4a6e-954b-1f6d1c71e6c0",
+			"403;9596;2;f;f;t;0;62d81b41-021d-4a6e-954b-1f6d1c71e6c0",
+			"0;9596;3;t;f;f;404;389562fe-de05-4259-9e7f-df8c1dafef5d",
+			"0;9595;1;t;f;f;404;389562fe-de05-4259-9e7f-df8c1dafef5d",
+			"0;9595;3;f;f;f;405;e046380a-4199-4949-b1d9-59cee8ca7e22",
+			"0;9594;1;f;f;f;405;e046380a-4199-4949-b1d9-59cee8ca7e22",
+			"405;9594;2;f;f;t;0;e046380a-4199-4949-b1d9-59cee8ca7e22",
+			"0;9594;3;t;f;f;406;e49b2edb-599c-4fb3-88fb-5e262c3a162d",
+			"0;9593;1;t;f;f;406;e49b2edb-599c-4fb3-88fb-5e262c3a162d",
+			"0;9593;3;f;f;f;407;44ac8197-e9d4-4dfb-bbbd-7ebb24eab4ce",
+			"0;9592;1;f;f;f;407;44ac8197-e9d4-4dfb-bbbd-7ebb24eab4ce",
+			"407;9592;2;f;f;t;0;44ac8197-e9d4-4dfb-bbbd-7ebb24eab4ce",
+			"0;9592;3;t;f;f;408;662c4ec0-0522-412e-8dda-e83249e495b7",
+			"0;9591;1;t;f;f;408;662c4ec0-0522-412e-8dda-e83249e495b7",
+			"0;9591;3;f;f;f;409;5cebcc24-50ce-4b3a-969e-694f0cc19b12",
+			"0;9590;1;f;f;f;409;5cebcc24-50ce-4b3a-969e-694f0cc19b12",
+			"409;9590;2;f;f;t;0;5cebcc24-50ce-4b3a-969e-694f0cc19b12",
+			"0;9590;3;t;f;f;410;7560d53e-2a27-429a-95df-e4e3d5a05b5c",
+			"0;9589;1;t;f;f;410;7560d53e-2a27-429a-95df-e4e3d5a05b5c",
+			"0;9589;3;f;f;f;411;528c5974-7b45-49cb-a5d7-0422d8419fb8",
+			"0;9588;1;f;f;f;411;528c5974-7b45-49cb-a5d7-0422d8419fb8",
+			"411;9588;2;f;f;t;0;528c5974-7b45-49cb-a5d7-0422d8419fb8",
+			"0;9588;3;t;f;f;412;fe4f098e-1286-4b8e-beca-d92d09b04e7a",
+			"0;9587;1;t;f;f;412;fe4f098e-1286-4b8e-beca-d92d09b04e7a",
+			"0;9587;3;f;f;f;413;04de4cb1-60d6-4110-a4d6-7accc4961993",
+			"0;9586;1;f;f;f;413;04de4cb1-60d6-4110-a4d6-7accc4961993",
+			"413;9586;2;f;f;t;0;04de4cb1-60d6-4110-a4d6-7accc4961993",
+			"0;9586;3;t;f;f;414;62456cb0-2b28-4cb8-b965-ca197e9a7e71",
+			"0;9585;1;t;f;f;414;62456cb0-2b28-4cb8-b965-ca197e9a7e71",
+			"0;9585;3;f;f;f;415;70dbf319-a37c-4ad2-8197-645cc972e8b8",
+			"0;9584;1;f;f;f;415;70dbf319-a37c-4ad2-8197-645cc972e8b8",
+			"415;9584;2;f;f;t;0;70dbf319-a37c-4ad2-8197-645cc972e8b8",
+			"0;9584;3;t;f;f;416;d8beadb2-d560-4b59-9b7c-f484cadb300a",
+			"0;9583;1;t;f;f;416;d8beadb2-d560-4b59-9b7c-f484cadb300a",
+			"0;9583;3;f;f;f;417;2f06a430-4e07-454e-90e8-057059b092e6",
+			"0;9582;1;f;f;f;417;2f06a430-4e07-454e-90e8-057059b092e6",
+			"417;9582;2;f;f;t;0;2f06a430-4e07-454e-90e8-057059b092e6",
+			"0;9582;3;t;f;f;418;5ac04c87-f85f-4462-9450-b0adcc784da0",
+			"0;9581;1;t;f;f;418;5ac04c87-f85f-4462-9450-b0adcc784da0",
+			"0;9581;3;f;f;f;419;918ef082-58c6-4b44-bbdb-6f28353cd6c7",
+			"0;9580;1;f;f;f;419;918ef082-58c6-4b44-bbdb-6f28353cd6c7",
+			"419;9580;2;f;f;t;0;918ef082-58c6-4b44-bbdb-6f28353cd6c7",
+			"0;9580;3;t;f;f;420;5f579d5f-31d7-492c-8ab8-e258529426ee",
+			"0;9579;1;t;f;f;420;5f579d5f-31d7-492c-8ab8-e258529426ee",
+			"0;9579;3;f;f;f;421;56d0dd63-8e92-4ece-827d-a4ffa24dddcb",
+			"0;9578;1;f;f;f;421;56d0dd63-8e92-4ece-827d-a4ffa24dddcb",
+			"421;9578;2;f;f;t;0;56d0dd63-8e92-4ece-827d-a4ffa24dddcb",
+			"0;9578;3;t;f;f;422;82abfa8d-f821-461d-b54f-dda94b468f32",
+			"0;9577;1;t;f;f;422;82abfa8d-f821-461d-b54f-dda94b468f32",
+			"0;9577;3;f;f;f;423;31464f95-efca-4fd2-b621-6fde7d385072",
+			"0;9576;1;f;f;f;423;31464f95-efca-4fd2-b621-6fde7d385072",
+			"423;9576;2;f;f;t;0;31464f95-efca-4fd2-b621-6fde7d385072",
+			"0;9576;3;t;f;f;424;a7a9ad56-2c8d-4dc8-a242-3ae051051518",
+			"0;9575;1;t;f;f;424;a7a9ad56-2c8d-4dc8-a242-3ae051051518",
+			"0;9575;3;f;f;f;425;0dcb8a5a-2f83-44d2-8178-4c582e520374",
+			"0;9574;1;f;f;f;425;0dcb8a5a-2f83-44d2-8178-4c582e520374",
+			"425;9574;2;f;f;t;0;0dcb8a5a-2f83-44d2-8178-4c582e520374",
+			"0;9574;3;t;f;f;426;3ddaea8b-6029-44b3-8128-accd6ccd2846",
+			"0;9573;1;t;f;f;426;3ddaea8b-6029-44b3-8128-accd6ccd2846",
+			"0;9573;3;f;f;f;427;0f4ce334-4cb9-403f-8151-b28a01b41062",
+			"0;9572;1;f;f;f;427;0f4ce334-4cb9-403f-8151-b28a01b41062",
+			"427;9572;2;f;f;t;0;0f4ce334-4cb9-403f-8151-b28a01b41062",
+			"0;9572;3;t;f;f;428;1bf14e6a-5f08-4551-baa9-1b54ade40128",
+			"0;9571;1;t;f;f;428;1bf14e6a-5f08-4551-baa9-1b54ade40128",
+			"0;9571;3;t;f;f;429;50239995-4f77-4b7b-9050-1e3ff5cd53ad",
+			"0;9570;1;t;f;f;429;50239995-4f77-4b7b-9050-1e3ff5cd53ad",
+			"430;9570;2;f;f;t;0;1c329e3a-2489-44b5-b859-0a1eeb9f4307",
+			"0;9570;3;t;f;f;430;1c329e3a-2489-44b5-b859-0a1eeb9f4307",
+			"0;9569;1;t;f;f;430;1c329e3a-2489-44b5-b859-0a1eeb9f4307",
+			"0;9569;3;f;f;f;431;34f2b681-35a1-4d11-8d41-7e1c0f9088c8",
+			"0;9568;1;f;f;f;431;34f2b681-35a1-4d11-8d41-7e1c0f9088c8",
+			"431;9568;2;f;f;t;0;34f2b681-35a1-4d11-8d41-7e1c0f9088c8",
+			"0;9568;3;t;f;f;432;1289f481-fb33-415f-8e76-703c66407149",
+			"0;9567;1;t;f;f;432;1289f481-fb33-415f-8e76-703c66407149",
+			"0;9567;3;t;f;f;433;ba5d7092-549d-463d-bd16-e64177eac15a",
+			"0;9566;1;t;f;f;433;ba5d7092-549d-463d-bd16-e64177eac15a",
+			"0;9566;3;f;f;f;434;f3a5ed6b-e317-4efc-bb9c-05b374bf1819",
+			"0;9565;1;f;f;f;434;f3a5ed6b-e317-4efc-bb9c-05b374bf1819",
+			"434;9565;2;f;f;t;0;f3a5ed6b-e317-4efc-bb9c-05b374bf1819",
+			"0;9565;3;f;f;f;435;f9771f3e-a56f-4beb-9abd-8490132f2ce9",
+			"0;9564;1;f;f;f;435;f9771f3e-a56f-4beb-9abd-8490132f2ce9",
+			"435;9564;2;f;f;t;0;f9771f3e-a56f-4beb-9abd-8490132f2ce9",
+			"0;9564;3;t;f;f;436;bbf109b7-5346-431d-94ed-3f0f551f9cb0",
+			"0;9563;1;t;f;f;436;bbf109b7-5346-431d-94ed-3f0f551f9cb0",
+			"0;9563;3;t;f;f;437;f676f098-d9bc-4600-821f-84c2f999fcc6",
+			"0;9562;1;t;f;f;437;f676f098-d9bc-4600-821f-84c2f999fcc6",
+			"0;9562;3;f;f;f;438;c0e2cd79-11fe-4e41-bd46-d3c017761d73",
+			"0;9561;1;f;f;f;438;c0e2cd79-11fe-4e41-bd46-d3c017761d73",
+			"438;9561;2;f;f;t;0;c0e2cd79-11fe-4e41-bd46-d3c017761d73",
+			"0;9561;3;f;f;f;439;44a8247f-12ad-4e31-afca-b4e72242bceb",
+			"0;9560;1;f;f;f;439;44a8247f-12ad-4e31-afca-b4e72242bceb",
+			"439;9560;2;f;f;t;0;44a8247f-12ad-4e31-afca-b4e72242bceb",
+			"0;9560;3;t;f;f;440;a6ee3d80-90bd-4913-92c7-9ec6f9cbed83",
+			"0;9559;1;t;f;f;440;a6ee3d80-90bd-4913-92c7-9ec6f9cbed83",
+			"0;9559;3;f;f;f;441;76d29980-f2c2-4f92-83e5-6772ed3b4450",
+			"0;9558;1;f;f;f;441;76d29980-f2c2-4f92-83e5-6772ed3b4450",
+			"441;9558;2;f;f;t;0;76d29980-f2c2-4f92-83e5-6772ed3b4450",
+			"0;9558;3;t;f;f;442;72fbc70f-5040-4885-a01e-33e1af3e3048",
+			"0;9557;1;t;f;f;442;72fbc70f-5040-4885-a01e-33e1af3e3048",
+			"0;9557;3;f;f;f;443;a1b1630c-9477-4541-8ccb-5f6843ec958a",
+			"0;9556;1;f;f;f;443;a1b1630c-9477-4541-8ccb-5f6843ec958a",
+			"443;9556;2;f;f;t;0;a1b1630c-9477-4541-8ccb-5f6843ec958a",
+			"0;9556;3;t;f;f;444;df09bbea-b5b5-46f6-9008-ac96b82fda29",
+			"0;9555;1;t;f;f;444;df09bbea-b5b5-46f6-9008-ac96b82fda29",
+			"0;9555;3;f;f;f;445;67a61a39-4cf4-4159-950b-51d0871b92a5",
+			"0;9554;1;f;f;f;445;67a61a39-4cf4-4159-950b-51d0871b92a5",
+			"445;9554;2;f;f;t;0;67a61a39-4cf4-4159-950b-51d0871b92a5",
+			"0;9554;3;t;f;f;446;97abfa9f-6159-4ebb-9b02-9c1bde7b3e4d",
+			"0;9553;1;t;f;f;446;97abfa9f-6159-4ebb-9b02-9c1bde7b3e4d",
+			"0;9553;3;f;f;f;447;bce3d383-7d60-4df6-8d8f-17be735a23f0",
+			"0;9552;1;f;f;f;447;bce3d383-7d60-4df6-8d8f-17be735a23f0",
+			"447;9552;2;f;f;t;0;bce3d383-7d60-4df6-8d8f-17be735a23f0",
+			"0;9552;3;t;f;f;448;b52120e0-1d70-417b-a97b-fb4aff05d5ef",
+			"0;9551;1;t;f;f;448;b52120e0-1d70-417b-a97b-fb4aff05d5ef",
+			"0;9551;3;f;f;f;449;8b98f795-665c-42b0-9f5f-aa5e251fc256",
+			"0;9550;1;f;f;f;449;8b98f795-665c-42b0-9f5f-aa5e251fc256",
+			"449;9550;2;f;f;t;0;8b98f795-665c-42b0-9f5f-aa5e251fc256",
+			"0;9550;3;t;f;f;450;15a34538-88ce-4c67-a55f-6030dcfd1f42",
+			"0;9549;1;t;f;f;450;15a34538-88ce-4c67-a55f-6030dcfd1f42",
+			"0;9549;3;f;f;f;451;749ed549-170d-4951-82e8-5c125147dc14",
+			"0;9548;1;f;f;f;451;749ed549-170d-4951-82e8-5c125147dc14",
+			"451;9548;2;f;f;t;0;749ed549-170d-4951-82e8-5c125147dc14",
+			"0;9548;3;t;f;f;452;f251dbc0-23d2-415c-a65a-ade5a944cc06",
+			"0;9547;1;t;f;f;452;f251dbc0-23d2-415c-a65a-ade5a944cc06",
+			"0;9547;3;f;f;f;453;b64be5a2-37ab-4a97-a713-ef3186891d99",
+			"0;9546;1;f;f;f;453;b64be5a2-37ab-4a97-a713-ef3186891d99",
+			"453;9546;2;f;f;t;0;b64be5a2-37ab-4a97-a713-ef3186891d99",
+			"0;9546;3;t;f;f;454;0382aaa1-195c-4072-a7ac-400e36517c21",
+			"0;9545;1;t;f;f;454;0382aaa1-195c-4072-a7ac-400e36517c21",
+			"0;9545;3;f;f;f;455;10beb6f6-ba61-4344-a4ce-99a57721c7e3",
+			"0;9544;1;f;f;f;455;10beb6f6-ba61-4344-a4ce-99a57721c7e3",
+			"455;9544;2;f;f;t;0;10beb6f6-ba61-4344-a4ce-99a57721c7e3",
+			"0;9544;3;t;f;f;456;9e596c27-7e02-4715-a315-e17ccf2cf419",
+			"0;9543;1;t;f;f;456;9e596c27-7e02-4715-a315-e17ccf2cf419",
+			"0;9543;3;f;f;f;457;ef510960-1cdb-4aad-ab7a-f29077f40931",
+			"0;9542;1;f;f;f;457;ef510960-1cdb-4aad-ab7a-f29077f40931",
+			"457;9542;2;f;f;t;0;ef510960-1cdb-4aad-ab7a-f29077f40931",
+			"0;9542;3;t;f;f;458;6d17342a-9e38-41e7-a953-10a931e85789",
+			"0;9541;1;t;f;f;458;6d17342a-9e38-41e7-a953-10a931e85789",
+			"0;9541;3;f;f;f;459;4954e2af-c1a8-407b-8b68-59cf1a73e134",
+			"0;9540;1;f;f;f;459;4954e2af-c1a8-407b-8b68-59cf1a73e134",
+			"459;9540;2;f;f;t;0;4954e2af-c1a8-407b-8b68-59cf1a73e134",
+			"0;9540;3;t;f;f;460;9bca07d3-4eec-475a-bdc1-40b9a8c522ba",
+			"0;9539;1;t;f;f;460;9bca07d3-4eec-475a-bdc1-40b9a8c522ba",
+			"0;9539;3;f;f;f;461;e9d098de-f210-4035-90ff-64211df79799",
+			"0;9538;1;f;f;f;461;e9d098de-f210-4035-90ff-64211df79799",
+			"461;9538;2;f;f;t;0;e9d098de-f210-4035-90ff-64211df79799",
+			"0;9538;3;t;f;f;462;1eaa5f63-69c8-4c93-86c2-3db3d2c3f66f",
+			"0;9537;1;t;f;f;462;1eaa5f63-69c8-4c93-86c2-3db3d2c3f66f",
+			"0;9537;3;f;f;f;463;be8414eb-6f17-4acf-a309-e8a5a9d5b1ae",
+			"0;9536;1;f;f;f;463;be8414eb-6f17-4acf-a309-e8a5a9d5b1ae",
+			"463;9536;2;f;f;t;0;be8414eb-6f17-4acf-a309-e8a5a9d5b1ae",
+			"0;9536;3;t;f;f;464;5cbd70b7-047f-405e-9318-8f012b9e0793",
+			"0;9535;1;t;f;f;464;5cbd70b7-047f-405e-9318-8f012b9e0793",
+			"0;9535;3;f;f;f;465;a345742f-4882-4067-9f9c-c91d49d1dbeb",
+			"0;9534;1;f;f;f;465;a345742f-4882-4067-9f9c-c91d49d1dbeb",
+			"465;9534;2;f;f;t;0;a345742f-4882-4067-9f9c-c91d49d1dbeb",
+			"0;9534;3;t;f;f;466;4eeea00e-9aaf-4605-ba81-0e910294b7b1",
+			"0;9533;1;t;f;f;466;4eeea00e-9aaf-4605-ba81-0e910294b7b1",
+			"0;9533;3;f;f;f;467;135f770a-b335-4cfd-a268-692896400c72",
+			"0;9532;1;f;f;f;467;135f770a-b335-4cfd-a268-692896400c72",
+			"467;9532;2;f;f;t;0;135f770a-b335-4cfd-a268-692896400c72",
+			"0;9532;3;t;f;f;468;d0c48c48-460b-4b6d-b411-0d7421e3f085",
+			"0;9531;1;t;f;f;468;d0c48c48-460b-4b6d-b411-0d7421e3f085",
+			"0;9531;3;f;f;f;469;dd3a3e5c-e8f9-4874-b2d2-12cee37acb6c",
+			"0;9530;1;f;f;f;469;dd3a3e5c-e8f9-4874-b2d2-12cee37acb6c",
+			"469;9530;2;f;f;t;0;dd3a3e5c-e8f9-4874-b2d2-12cee37acb6c",
+			"0;9530;3;t;f;f;470;04b11e0f-5697-4c33-99d2-d0e2e1d2e6e4",
+			"0;9529;1;t;f;f;470;04b11e0f-5697-4c33-99d2-d0e2e1d2e6e4",
+			"0;9529;3;f;f;f;471;bca8629a-fbc4-404f-9a17-889b772f7a43",
+			"0;9528;1;f;f;f;471;bca8629a-fbc4-404f-9a17-889b772f7a43",
+			"471;9528;2;f;f;t;0;bca8629a-fbc4-404f-9a17-889b772f7a43",
+			"0;9528;3;t;f;f;472;27586b12-1a19-4389-b6d7-428d7cab91f0",
+			"0;9527;1;t;f;f;472;27586b12-1a19-4389-b6d7-428d7cab91f0",
+			"0;9527;3;f;f;f;473;8fb83b67-2523-4e50-ae6e-9635235ed2e1",
+			"0;9526;1;f;f;f;473;8fb83b67-2523-4e50-ae6e-9635235ed2e1",
+			"473;9526;2;f;f;t;0;8fb83b67-2523-4e50-ae6e-9635235ed2e1",
+			"0;9526;3;t;f;f;474;758ae2b5-fd2c-45cf-8141-1dcb31816e84",
+			"0;9525;1;t;f;f;474;758ae2b5-fd2c-45cf-8141-1dcb31816e84",
+			"0;9525;3;f;f;f;475;0c72dd3e-2ef6-41cc-91f2-422ae831b589",
+			"0;9524;1;f;f;f;475;0c72dd3e-2ef6-41cc-91f2-422ae831b589",
+			"475;9524;2;f;f;t;0;0c72dd3e-2ef6-41cc-91f2-422ae831b589",
+			"0;9524;3;t;f;f;476;885512a8-1496-4d42-8182-c15b0b17be00",
+			"0;9523;1;t;f;f;476;885512a8-1496-4d42-8182-c15b0b17be00",
+			"0;9523;3;f;f;f;477;d6e650ba-81da-4bf9-bbe7-0a0d467a3ed4",
+			"0;9522;1;f;f;f;477;d6e650ba-81da-4bf9-bbe7-0a0d467a3ed4",
+			"477;9522;2;f;f;t;0;d6e650ba-81da-4bf9-bbe7-0a0d467a3ed4",
+			"0;9522;3;t;f;f;478;46be2672-4dc8-43f0-a780-135b288f1f1e",
+			"0;9521;1;t;f;f;478;46be2672-4dc8-43f0-a780-135b288f1f1e",
+			"0;9521;3;f;f;f;479;08a37935-de3a-4fe8-9a31-3a3fd4b9a90e",
+			"0;9520;1;f;f;f;479;08a37935-de3a-4fe8-9a31-3a3fd4b9a90e",
+			"479;9520;2;f;f;t;0;08a37935-de3a-4fe8-9a31-3a3fd4b9a90e",
+			"0;9520;3;t;f;f;480;91cb98e5-20c4-44e6-bad6-c8c68807f6bd",
+			"0;9519;1;t;f;f;480;91cb98e5-20c4-44e6-bad6-c8c68807f6bd",
+			"0;9519;3;f;f;f;481;e820fa04-8c8b-472a-996d-8ee71050a14a",
+			"0;9518;1;f;f;f;481;e820fa04-8c8b-472a-996d-8ee71050a14a",
+			"481;9518;2;f;f;t;0;e820fa04-8c8b-472a-996d-8ee71050a14a",
+			"0;9518;3;t;f;f;482;ca4edd98-291e-4c7e-8a16-77929a083482",
+			"0;9517;1;t;f;f;482;ca4edd98-291e-4c7e-8a16-77929a083482",
+			"0;9517;3;f;f;f;483;4fc6007f-de9c-42be-9bcc-c6b297ffc16f",
+			"0;9516;1;f;f;f;483;4fc6007f-de9c-42be-9bcc-c6b297ffc16f",
+			"483;9516;2;f;f;t;0;4fc6007f-de9c-42be-9bcc-c6b297ffc16f",
+			"0;9516;3;t;f;f;484;0c6bfed8-9b94-471b-933d-3080d110d39b",
+			"0;9515;1;t;f;f;484;0c6bfed8-9b94-471b-933d-3080d110d39b",
+			"0;9515;3;f;f;f;485;9ac4bba6-e9bf-41ae-8ebb-55762260e18a",
+			"0;9514;1;f;f;f;485;9ac4bba6-e9bf-41ae-8ebb-55762260e18a",
+			"485;9514;2;f;f;t;0;9ac4bba6-e9bf-41ae-8ebb-55762260e18a",
+			"0;9514;3;t;f;f;486;c9cde792-2ab6-40b3-af7a-74d7f7e96e6e",
+			"0;9513;1;t;f;f;486;c9cde792-2ab6-40b3-af7a-74d7f7e96e6e",
+			"0;9513;3;f;f;f;487;277518a1-50f5-48e6-ae02-d91c490117aa",
+			"0;9512;1;f;f;f;487;277518a1-50f5-48e6-ae02-d91c490117aa",
+			"487;9512;2;f;f;t;0;277518a1-50f5-48e6-ae02-d91c490117aa",
+			"0;9512;3;t;f;f;488;6ecd4513-32fa-4523-8c10-eab16136e37b",
+			"0;9511;1;t;f;f;488;6ecd4513-32fa-4523-8c10-eab16136e37b",
+			"0;9511;3;f;f;f;489;42fb38f7-4be0-4ac8-95b7-7ca45db3843b",
+			"0;9510;1;f;f;f;489;42fb38f7-4be0-4ac8-95b7-7ca45db3843b",
+			"489;9510;2;f;f;t;0;42fb38f7-4be0-4ac8-95b7-7ca45db3843b",
+			"0;9510;3;t;f;f;490;fcd99fef-b672-4be8-8172-2beaa5ec73f9",
+			"0;9509;1;t;f;f;490;fcd99fef-b672-4be8-8172-2beaa5ec73f9",
+			"0;9509;3;f;f;f;491;970541ab-2f78-4572-a3bb-dccd78315863",
+			"0;9508;1;f;f;f;491;970541ab-2f78-4572-a3bb-dccd78315863",
+			"491;9508;2;f;f;t;0;970541ab-2f78-4572-a3bb-dccd78315863",
+			"0;9508;3;t;f;f;492;aa34a00d-83ba-4a2a-84cb-8074c4c4bd64",
+			"0;9507;1;t;f;f;492;aa34a00d-83ba-4a2a-84cb-8074c4c4bd64",
+			"0;9507;3;f;f;f;493;3a354c52-6119-45e8-9932-91539c7b97b7",
+			"0;9506;1;f;f;f;493;3a354c52-6119-45e8-9932-91539c7b97b7",
+			"493;9506;2;f;f;t;0;3a354c52-6119-45e8-9932-91539c7b97b7",
+			"0;9506;3;t;f;f;494;0094fd76-392d-4c60-bfd7-8fa34d805dc1",
+			"0;9505;1;t;f;f;494;0094fd76-392d-4c60-bfd7-8fa34d805dc1",
+			"0;9505;3;f;f;f;495;eb71fd44-4053-46ab-9039-00eb4b48a3b2",
+			"0;9504;1;f;f;f;495;eb71fd44-4053-46ab-9039-00eb4b48a3b2",
+			"495;9504;2;f;f;t;0;eb71fd44-4053-46ab-9039-00eb4b48a3b2",
+			"0;9504;3;t;f;f;496;c8515000-09cf-4e04-a7ce-d4362199afe4",
+			"0;9503;1;t;f;f;496;c8515000-09cf-4e04-a7ce-d4362199afe4",
+			"0;9503;3;f;f;f;497;716226ba-6106-4d7c-82fd-17d7f182fc00",
+			"0;9502;1;f;f;f;497;716226ba-6106-4d7c-82fd-17d7f182fc00",
+			"497;9502;2;f;f;t;0;716226ba-6106-4d7c-82fd-17d7f182fc00",
+			"0;9502;3;t;f;f;498;3d15b7bc-0ba9-4781-ae34-23d78690029f",
+			"0;9501;1;t;f;f;498;3d15b7bc-0ba9-4781-ae34-23d78690029f",
+			"0;9501;3;f;f;f;499;8c9363b8-6f23-43a5-9513-2e2526d5c873",
+			"0;9500;1;f;f;f;499;8c9363b8-6f23-43a5-9513-2e2526d5c873",
+			"499;9500;2;f;f;t;0;8c9363b8-6f23-43a5-9513-2e2526d5c873",
+			"0;9500;3;t;f;f;500;2ceafbfb-237f-48ea-81cd-7019b2211003",
+			"0;9499;1;t;f;f;500;2ceafbfb-237f-48ea-81cd-7019b2211003",
+			"0;9499;3;f;f;f;501;d30babb2-9bfa-451e-a07e-403c175a05b6",
+			"0;9498;1;f;f;f;501;d30babb2-9bfa-451e-a07e-403c175a05b6",
+			"501;9498;2;f;f;t;0;d30babb2-9bfa-451e-a07e-403c175a05b6",
+			"0;9498;3;t;f;f;502;a43ca104-f0c2-4cba-b316-dbac0d91d61e",
+			"0;9497;1;t;f;f;502;a43ca104-f0c2-4cba-b316-dbac0d91d61e",
+			"0;9497;3;f;f;f;503;93bb2bd2-6653-497c-ba51-5b76000e85fc",
+			"0;9496;1;f;f;f;503;93bb2bd2-6653-497c-ba51-5b76000e85fc",
+			"503;9496;2;f;f;t;0;93bb2bd2-6653-497c-ba51-5b76000e85fc",
+			"0;9496;3;t;f;f;504;1c4ecb38-b76a-4ee9-8c2b-c144ecb4ae7a",
+			"0;9495;1;t;f;f;504;1c4ecb38-b76a-4ee9-8c2b-c144ecb4ae7a",
+			"0;9495;3;f;f;f;505;ef4b6018-affc-4be5-8d27-671557aaaed1",
+			"0;9494;1;f;f;f;505;ef4b6018-affc-4be5-8d27-671557aaaed1",
+			"505;9494;2;f;f;t;0;ef4b6018-affc-4be5-8d27-671557aaaed1",
+			"0;9494;3;t;f;f;506;de473e0f-dd00-47e6-a354-ead585c631e7",
+			"0;9493;1;t;f;f;506;de473e0f-dd00-47e6-a354-ead585c631e7",
+			"0;9493;3;f;f;f;507;0c971dd9-aec1-4675-a410-447d63c80409",
+			"0;9492;1;f;f;f;507;0c971dd9-aec1-4675-a410-447d63c80409",
+			"507;9492;2;f;f;t;0;0c971dd9-aec1-4675-a410-447d63c80409",
+			"0;9492;3;t;f;f;508;ef99176d-46c3-4868-8d35-a656351d349f",
+			"0;9491;1;t;f;f;508;ef99176d-46c3-4868-8d35-a656351d349f",
+			"0;9491;3;f;f;f;509;d45e70fa-1d8c-4e81-b517-adf10292359c",
+			"0;9490;1;f;f;f;509;d45e70fa-1d8c-4e81-b517-adf10292359c",
+			"509;9490;2;f;f;t;0;d45e70fa-1d8c-4e81-b517-adf10292359c",
+			"0;9490;3;t;f;f;510;a59d4495-edf8-4602-b5ab-92eff40dae3f",
+			"0;9489;1;t;f;f;510;a59d4495-edf8-4602-b5ab-92eff40dae3f",
+			"0;9489;3;f;f;f;511;ef5f1f29-792b-4f42-97e6-2ee3a14f73e4",
+			"0;9488;1;f;f;f;511;ef5f1f29-792b-4f42-97e6-2ee3a14f73e4",
+			"511;9488;2;f;f;t;0;ef5f1f29-792b-4f42-97e6-2ee3a14f73e4",
+			"0;9488;3;t;f;f;512;a6dca1b7-68e6-4127-91a5-f61daee6bac4",
+			"0;9487;1;t;f;f;512;a6dca1b7-68e6-4127-91a5-f61daee6bac4",
+			"0;9487;3;f;f;f;513;13ed6fb7-ef60-4c16-b3c4-117206a9ea4f",
+			"0;9486;1;f;f;f;513;13ed6fb7-ef60-4c16-b3c4-117206a9ea4f",
+			"513;9486;2;f;f;t;0;13ed6fb7-ef60-4c16-b3c4-117206a9ea4f",
+			"0;9486;3;t;f;f;514;090ac35e-fb54-4298-acdd-00ec153157aa",
+			"0;9485;1;t;f;f;514;090ac35e-fb54-4298-acdd-00ec153157aa",
+			"0;9485;3;f;f;f;515;80a7c239-ad63-4ecc-b0bd-31f7b6bd38fe",
+			"0;9484;1;f;f;f;515;80a7c239-ad63-4ecc-b0bd-31f7b6bd38fe",
+			"515;9484;2;f;f;t;0;80a7c239-ad63-4ecc-b0bd-31f7b6bd38fe",
+			"0;9484;3;t;f;f;516;feba3e27-724b-41fb-8e57-d47d8605df14",
+			"0;9483;1;t;f;f;516;feba3e27-724b-41fb-8e57-d47d8605df14",
+			"0;9483;3;f;f;f;517;9920748e-f532-495f-bfe9-28318ee8b5af",
+			"0;9482;1;f;f;f;517;9920748e-f532-495f-bfe9-28318ee8b5af",
+			"517;9482;2;f;f;t;0;9920748e-f532-495f-bfe9-28318ee8b5af",
+			"0;9482;3;t;f;f;518;4a43e78a-8744-4c12-acac-7b87419cec4e",
+			"0;9481;1;t;f;f;518;4a43e78a-8744-4c12-acac-7b87419cec4e",
+			"0;9481;3;f;f;f;519;3ac4fdf2-f392-4b4c-8931-1b62b1fdef63",
+			"0;9480;1;f;f;f;519;3ac4fdf2-f392-4b4c-8931-1b62b1fdef63",
+			"519;9480;2;f;f;t;0;3ac4fdf2-f392-4b4c-8931-1b62b1fdef63",
+			"0;9480;3;t;f;f;520;8110491b-600a-4b88-9b07-1aa3e7d78fd7",
+			"0;9479;1;t;f;f;520;8110491b-600a-4b88-9b07-1aa3e7d78fd7",
+			"0;9479;3;f;f;f;521;d9508bc0-0d08-43db-a658-4df84a39272f",
+			"0;9478;1;f;f;f;521;d9508bc0-0d08-43db-a658-4df84a39272f",
+			"521;9478;2;f;f;t;0;d9508bc0-0d08-43db-a658-4df84a39272f",
+			"0;9478;3;t;f;f;522;a024c660-ad74-4a43-b3b8-c38c6949e42a",
+			"0;9477;1;t;f;f;522;a024c660-ad74-4a43-b3b8-c38c6949e42a",
+			"0;9477;3;f;f;f;523;f148816a-52d4-4e6a-989c-39c3d22e253a",
+			"0;9476;1;f;f;f;523;f148816a-52d4-4e6a-989c-39c3d22e253a",
+			"523;9476;2;f;f;t;0;f148816a-52d4-4e6a-989c-39c3d22e253a",
+			"0;9476;3;t;f;f;524;12e0f8ff-2aaa-4a9f-b0e9-eb500b4632ea",
+			"0;9475;1;t;f;f;524;12e0f8ff-2aaa-4a9f-b0e9-eb500b4632ea",
+			"0;9475;3;f;f;f;525;e7ca821e-12e8-4095-8218-6042ac47e609",
+			"0;9474;1;f;f;f;525;e7ca821e-12e8-4095-8218-6042ac47e609",
+			"525;9474;2;f;f;t;0;e7ca821e-12e8-4095-8218-6042ac47e609",
+			"0;9474;3;t;f;f;526;424665e8-d3ec-469e-b3e8-4fea5fa17b39",
+			"0;9473;1;t;f;f;526;424665e8-d3ec-469e-b3e8-4fea5fa17b39",
+			"0;9473;3;f;f;f;527;dcc5d10b-ecb1-4083-94f4-41a2ed34a646",
+			"0;9472;1;f;f;f;527;dcc5d10b-ecb1-4083-94f4-41a2ed34a646",
+			"527;9472;2;f;f;t;0;dcc5d10b-ecb1-4083-94f4-41a2ed34a646",
+			"0;9472;3;t;f;f;528;d4cbfff8-4f49-4d1e-bb03-fb13a97ecc8f",
+			"0;9471;1;t;f;f;528;d4cbfff8-4f49-4d1e-bb03-fb13a97ecc8f",
+			"0;9471;3;f;f;f;529;722d7df2-70b9-47a6-aacc-bb032ddde393",
+			"0;9470;1;f;f;f;529;722d7df2-70b9-47a6-aacc-bb032ddde393",
+			"529;9470;2;f;f;t;0;722d7df2-70b9-47a6-aacc-bb032ddde393",
+			"0;9470;3;t;f;f;530;c42b9469-db8e-449e-94a8-e53c22111a75",
+			"0;9469;1;t;f;f;530;c42b9469-db8e-449e-94a8-e53c22111a75",
+			"0;9469;3;f;f;f;531;d2104413-4e81-4d24-9cda-7339dfe469d2",
+			"0;9468;1;f;f;f;531;d2104413-4e81-4d24-9cda-7339dfe469d2",
+			"531;9468;2;f;f;t;0;d2104413-4e81-4d24-9cda-7339dfe469d2",
+			"0;9468;3;t;f;f;532;46576da6-e71c-4a34-b4f1-82903cf61bfb",
+			"0;9467;1;t;f;f;532;46576da6-e71c-4a34-b4f1-82903cf61bfb",
+			"0;9467;3;f;f;f;533;10a68871-8765-40ce-92c8-05b96931321c",
+			"0;9466;1;f;f;f;533;10a68871-8765-40ce-92c8-05b96931321c",
+			"533;9466;2;f;f;t;0;10a68871-8765-40ce-92c8-05b96931321c",
+			"0;9466;3;t;f;f;534;435b4593-9de6-4253-be1a-d202f6c28342",
+			"0;9465;1;t;f;f;534;435b4593-9de6-4253-be1a-d202f6c28342",
+			"0;9465;3;f;f;f;535;b02def9a-0761-4963-8553-afe2719eb70c",
+			"0;9464;1;f;f;f;535;b02def9a-0761-4963-8553-afe2719eb70c",
+			"535;9464;2;f;f;t;0;b02def9a-0761-4963-8553-afe2719eb70c",
+			"0;9464;3;t;f;f;536;ca5a4ceb-8f07-47a9-b36e-45f1662a6b40",
+			"0;9463;1;t;f;f;536;ca5a4ceb-8f07-47a9-b36e-45f1662a6b40",
+			"0;9463;3;f;f;f;537;09e4b00f-6cb8-4a3a-9a66-51746dfb8c9c",
+			"0;9462;1;f;f;f;537;09e4b00f-6cb8-4a3a-9a66-51746dfb8c9c",
+			"537;9462;2;f;f;t;0;09e4b00f-6cb8-4a3a-9a66-51746dfb8c9c",
+			"0;9462;3;t;f;f;538;0d333007-23c3-4a77-910b-6c34391f2628",
+			"0;9461;1;t;f;f;538;0d333007-23c3-4a77-910b-6c34391f2628",
+			"0;9461;3;f;f;f;539;9f491837-5bd4-4468-94a2-b7af2aab77f3",
+			"0;9460;1;f;f;f;539;9f491837-5bd4-4468-94a2-b7af2aab77f3",
+			"539;9460;2;f;f;t;0;9f491837-5bd4-4468-94a2-b7af2aab77f3",
+			"0;9460;3;t;f;f;540;d17d361c-69f0-4073-87c0-558b5f5abe09",
+			"0;9459;1;t;f;f;540;d17d361c-69f0-4073-87c0-558b5f5abe09",
+			"0;9459;3;f;f;f;541;5c023f0d-200c-409b-9744-59ff9505021c",
+			"0;9458;1;f;f;f;541;5c023f0d-200c-409b-9744-59ff9505021c",
+			"541;9458;2;f;f;t;0;5c023f0d-200c-409b-9744-59ff9505021c",
+			"0;9458;3;t;f;f;542;58ca5a5a-7a11-4676-8c05-c7ae71c92389",
+			"0;9457;1;t;f;f;542;58ca5a5a-7a11-4676-8c05-c7ae71c92389",
+			"0;9457;3;f;f;f;543;fcda008a-eb7f-4c3d-a5aa-07b61d1b697f",
+			"0;9456;1;f;f;f;543;fcda008a-eb7f-4c3d-a5aa-07b61d1b697f",
+			"543;9456;2;f;f;t;0;fcda008a-eb7f-4c3d-a5aa-07b61d1b697f",
+			"0;9456;3;t;f;f;544;0c74b804-5c0c-45ab-9d4f-ff505e187be3",
+			"0;9455;1;t;f;f;544;0c74b804-5c0c-45ab-9d4f-ff505e187be3",
+			"0;9455;3;f;f;f;545;c9e9ccc5-b219-48cf-9663-fb077f5e9d3b",
+			"0;9454;1;f;f;f;545;c9e9ccc5-b219-48cf-9663-fb077f5e9d3b",
+			"545;9454;2;f;f;t;0;c9e9ccc5-b219-48cf-9663-fb077f5e9d3b",
+			"0;9454;3;t;f;f;546;294d382d-1d8b-41e3-95ee-215e4411e744",
+			"0;9453;1;t;f;f;546;294d382d-1d8b-41e3-95ee-215e4411e744",
+			"0;9453;3;f;f;f;547;3e0a4f71-788e-47e6-9471-8c8ac0ee6fd7",
+			"0;9452;1;f;f;f;547;3e0a4f71-788e-47e6-9471-8c8ac0ee6fd7",
+			"547;9452;2;f;f;t;0;3e0a4f71-788e-47e6-9471-8c8ac0ee6fd7",
+			"0;9452;3;t;f;f;548;9ff8c2f0-4059-4d3f-8501-12fd25027e1a",
+			"0;9451;1;t;f;f;548;9ff8c2f0-4059-4d3f-8501-12fd25027e1a",
+			"0;9451;3;f;f;f;549;c343ac63-1340-4341-a4cf-2b7b6ca4a12d",
+			"0;9450;1;f;f;f;549;c343ac63-1340-4341-a4cf-2b7b6ca4a12d",
+			"549;9450;2;f;f;t;0;c343ac63-1340-4341-a4cf-2b7b6ca4a12d",
+			"0;9450;3;t;f;f;550;efa63f3b-2e95-440f-9eec-afe13cf8fd85",
+			"0;9449;1;t;f;f;550;efa63f3b-2e95-440f-9eec-afe13cf8fd85",
+			"0;9449;3;f;f;f;551;2ccb733c-bc01-41d8-89d5-12a649078a69",
+			"0;9448;1;f;f;f;551;2ccb733c-bc01-41d8-89d5-12a649078a69",
+			"551;9448;2;f;f;t;0;2ccb733c-bc01-41d8-89d5-12a649078a69",
+			"0;9448;3;t;f;f;552;2b817c86-1e64-4642-b377-5f154dd7d4b0",
+			"0;9447;1;t;f;f;552;2b817c86-1e64-4642-b377-5f154dd7d4b0",
+			"0;9447;3;f;f;f;553;96c520c8-0b51-4f96-8c90-09b29ea36f9c",
+			"0;9446;1;f;f;f;553;96c520c8-0b51-4f96-8c90-09b29ea36f9c",
+			"553;9446;2;f;f;t;0;96c520c8-0b51-4f96-8c90-09b29ea36f9c",
+			"0;9446;3;t;f;f;554;f50e1abe-b2dd-474d-9a65-c8e7fd51e35e",
+			"0;9445;1;t;f;f;554;f50e1abe-b2dd-474d-9a65-c8e7fd51e35e",
+			"0;9445;3;f;f;f;555;3856c49f-a363-4665-89fb-aabf8f1f2b33",
+			"0;9444;1;f;f;f;555;3856c49f-a363-4665-89fb-aabf8f1f2b33",
+			"555;9444;2;f;f;t;0;3856c49f-a363-4665-89fb-aabf8f1f2b33",
+			"0;9444;3;t;f;f;556;a8c4b365-cfda-46ec-b444-5c7a8519b227",
+			"0;9443;1;t;f;f;556;a8c4b365-cfda-46ec-b444-5c7a8519b227",
+			"0;9443;3;f;f;f;557;e47226ed-4ffb-4e00-a347-e6d1ad6717e5",
+			"0;9442;1;f;f;f;557;e47226ed-4ffb-4e00-a347-e6d1ad6717e5",
+			"557;9442;2;f;f;t;0;e47226ed-4ffb-4e00-a347-e6d1ad6717e5",
+			"0;9442;3;t;f;f;558;f6a58335-89b5-4a40-90e2-c5e1fc7a0ef9",
+			"0;9441;1;t;f;f;558;f6a58335-89b5-4a40-90e2-c5e1fc7a0ef9",
+			"0;9441;3;f;f;f;559;37497e5e-1b68-429a-90d5-f30265527deb",
+			"0;9440;1;f;f;f;559;37497e5e-1b68-429a-90d5-f30265527deb",
+			"559;9440;2;f;f;t;0;37497e5e-1b68-429a-90d5-f30265527deb",
+			"0;9440;3;t;f;f;560;85820e99-229a-4633-b9cb-fa2e9127e380",
+			"0;9439;1;t;f;f;560;85820e99-229a-4633-b9cb-fa2e9127e380",
+			"0;9439;3;f;f;f;561;a8003506-2628-4a5e-a4cc-9d5e0ad66baa",
+			"0;9438;1;f;f;f;561;a8003506-2628-4a5e-a4cc-9d5e0ad66baa",
+			"561;9438;2;f;f;t;0;a8003506-2628-4a5e-a4cc-9d5e0ad66baa",
+			"0;9438;3;t;f;f;562;451a8364-aa8c-4b5e-ad02-7d31b6a2ea6c",
+			"0;9437;1;t;f;f;562;451a8364-aa8c-4b5e-ad02-7d31b6a2ea6c",
+			"0;9437;3;f;f;f;563;b7ab9c6d-1635-4496-9276-bc3d8ad9f181",
+			"0;9436;1;f;f;f;563;b7ab9c6d-1635-4496-9276-bc3d8ad9f181",
+			"563;9436;2;f;f;t;0;b7ab9c6d-1635-4496-9276-bc3d8ad9f181",
+			"0;9436;3;t;f;f;564;91883121-90cd-4bdf-95a4-7a060f8a8b5a",
+			"0;9435;1;t;f;f;564;91883121-90cd-4bdf-95a4-7a060f8a8b5a",
+			"0;9435;3;f;f;f;565;6dc33dcd-92d9-4ad1-860b-db77fce9bcdf",
+			"0;9434;1;f;f;f;565;6dc33dcd-92d9-4ad1-860b-db77fce9bcdf",
+			"565;9434;2;f;f;t;0;6dc33dcd-92d9-4ad1-860b-db77fce9bcdf",
+			"0;9434;3;t;f;f;566;c0ff724a-f497-481c-b096-1792a89b9421",
+			"0;9433;1;t;f;f;566;c0ff724a-f497-481c-b096-1792a89b9421",
+			"0;9433;3;f;f;f;567;80c1d51d-b0f9-4194-8c22-df93de6f2d88",
+			"0;9432;1;f;f;f;567;80c1d51d-b0f9-4194-8c22-df93de6f2d88",
+			"567;9432;2;f;f;t;0;80c1d51d-b0f9-4194-8c22-df93de6f2d88",
+			"0;9432;3;t;f;f;568;fd6ce0c4-c8d5-45d0-a170-33d79a8887ae",
+			"0;9431;1;t;f;f;568;fd6ce0c4-c8d5-45d0-a170-33d79a8887ae",
+			"0;9431;3;f;f;f;569;c3ebf684-e178-4912-847e-81a275eae8d1",
+			"0;9430;1;f;f;f;569;c3ebf684-e178-4912-847e-81a275eae8d1",
+			"569;9430;2;f;f;t;0;c3ebf684-e178-4912-847e-81a275eae8d1",
+			"0;9430;3;t;f;f;570;24485efd-7ee9-4288-ac0e-01ffcc6c641f",
+			"0;9429;1;t;f;f;570;24485efd-7ee9-4288-ac0e-01ffcc6c641f",
+			"0;9429;3;f;f;f;571;65e494d6-d089-4c0d-9c40-503f85b16e1f",
+			"0;9428;1;f;f;f;571;65e494d6-d089-4c0d-9c40-503f85b16e1f",
+			"571;9428;2;f;f;t;0;65e494d6-d089-4c0d-9c40-503f85b16e1f",
+			"0;9428;3;t;f;f;572;097b16e8-2848-481e-b30c-9bb18f68bec8",
+			"0;9427;1;t;f;f;572;097b16e8-2848-481e-b30c-9bb18f68bec8",
+			"0;9427;3;f;f;f;573;2dce4ff9-9030-41e3-906c-1ddd25d93c46",
+			"0;9426;1;f;f;f;573;2dce4ff9-9030-41e3-906c-1ddd25d93c46",
+			"573;9426;2;f;f;t;0;2dce4ff9-9030-41e3-906c-1ddd25d93c46",
+			"0;9426;3;t;f;f;574;b14fc5d6-4df5-444c-b9df-0809c3557087",
+			"0;9425;1;t;f;f;574;b14fc5d6-4df5-444c-b9df-0809c3557087",
+			"0;9425;3;f;f;f;575;342287ea-c333-42bd-b838-c4bfde33694e",
+			"0;9424;1;f;f;f;575;342287ea-c333-42bd-b838-c4bfde33694e",
+			"575;9424;2;f;f;t;0;342287ea-c333-42bd-b838-c4bfde33694e",
+			"0;9424;3;t;f;f;576;e9793547-8a15-4a8a-8f38-162f88faeff6",
+			"0;9423;1;t;f;f;576;e9793547-8a15-4a8a-8f38-162f88faeff6",
+			"0;9423;3;f;f;f;577;c4ceeafd-1b66-4bc5-b257-10bd1a595622",
+			"0;9422;1;f;f;f;577;c4ceeafd-1b66-4bc5-b257-10bd1a595622",
+			"577;9422;2;f;f;t;0;c4ceeafd-1b66-4bc5-b257-10bd1a595622",
+			"0;9422;3;t;f;f;578;4c265bf3-b638-4bbb-bac7-2cf34b9e44c9",
+			"0;9421;1;t;f;f;578;4c265bf3-b638-4bbb-bac7-2cf34b9e44c9",
+			"0;9421;3;f;f;f;579;a82f9c55-5b72-42b3-bb23-b33e81947358",
+			"0;9420;1;f;f;f;579;a82f9c55-5b72-42b3-bb23-b33e81947358",
+			"579;9420;2;f;f;t;0;a82f9c55-5b72-42b3-bb23-b33e81947358",
+			"0;9420;3;t;f;f;580;d4d28daf-86e6-4543-9e2e-e962c52a1efd",
+			"0;9419;1;t;f;f;580;d4d28daf-86e6-4543-9e2e-e962c52a1efd",
+			"0;9419;3;f;f;f;581;25da4157-8e77-4157-a645-d90693a6feec",
+			"0;9418;1;f;f;f;581;25da4157-8e77-4157-a645-d90693a6feec",
+			"581;9418;2;f;f;t;0;25da4157-8e77-4157-a645-d90693a6feec",
+			"0;9418;3;t;f;f;582;a139e126-cdf8-4dba-904e-c40011fa27e6",
+			"0;9417;1;t;f;f;582;a139e126-cdf8-4dba-904e-c40011fa27e6",
+			"0;9417;3;f;f;f;583;812f5391-8bc9-4be7-bfc5-552c31b8c02a",
+			"0;9416;1;f;f;f;583;812f5391-8bc9-4be7-bfc5-552c31b8c02a",
+			"583;9416;2;f;f;t;0;812f5391-8bc9-4be7-bfc5-552c31b8c02a",
+			"0;9416;3;t;f;f;584;e6fa2641-c9dd-41cb-80b8-7342a412866c",
+			"0;9415;1;t;f;f;584;e6fa2641-c9dd-41cb-80b8-7342a412866c",
+			"0;9415;3;f;f;f;585;6fbab05e-87df-4edd-b52c-c827d489fa69",
+			"0;9414;1;f;f;f;585;6fbab05e-87df-4edd-b52c-c827d489fa69",
+			"585;9414;2;f;f;t;0;6fbab05e-87df-4edd-b52c-c827d489fa69",
+			"0;9414;3;t;f;f;586;8aaf1294-313d-42ee-a820-c07f96bf3620",
+			"0;9413;1;t;f;f;586;8aaf1294-313d-42ee-a820-c07f96bf3620",
+			"0;9413;3;f;f;f;587;243a46ea-d068-4f5a-96c7-ed01de2ab84a",
+			"0;9412;1;f;f;f;587;243a46ea-d068-4f5a-96c7-ed01de2ab84a",
+			"587;9412;2;f;f;t;0;243a46ea-d068-4f5a-96c7-ed01de2ab84a",
+			"0;9412;3;t;f;f;588;bf398bd5-de45-47fb-b1ff-c6e6cb76a6d0",
+			"0;9411;1;t;f;f;588;bf398bd5-de45-47fb-b1ff-c6e6cb76a6d0",
+			"0;9411;3;f;f;f;589;109aa637-65d9-4675-ae01-366d77c16572",
+			"0;9410;1;f;f;f;589;109aa637-65d9-4675-ae01-366d77c16572",
+			"589;9410;2;f;f;t;0;109aa637-65d9-4675-ae01-366d77c16572",
+			"0;9410;3;t;f;f;590;c2345dcf-0f0e-41dd-8722-1e0a4525c2a6",
+			"0;9409;1;t;f;f;590;c2345dcf-0f0e-41dd-8722-1e0a4525c2a6",
+			"0;9409;3;f;f;f;591;82b7793a-f6f3-460e-a6a1-8f8ca5371a06",
+			"0;9408;1;f;f;f;591;82b7793a-f6f3-460e-a6a1-8f8ca5371a06",
+			"591;9408;2;f;f;t;0;82b7793a-f6f3-460e-a6a1-8f8ca5371a06",
+			"0;9408;3;t;f;f;592;121434a5-8487-4f8f-bc1a-3e346339746f",
+			"0;9407;1;t;f;f;592;121434a5-8487-4f8f-bc1a-3e346339746f",
+			"0;9407;3;f;f;f;593;4d4ab653-c547-4cb1-ada4-2e77f57ff129",
+			"0;9406;1;f;f;f;593;4d4ab653-c547-4cb1-ada4-2e77f57ff129",
+			"593;9406;2;f;f;t;0;4d4ab653-c547-4cb1-ada4-2e77f57ff129",
+			"0;9406;3;t;f;f;594;98fb922b-5004-441f-8721-904e13a18032",
+			"0;9405;1;t;f;f;594;98fb922b-5004-441f-8721-904e13a18032",
+			"0;9405;3;f;f;f;595;c2813d55-3b08-4f0b-aff6-70f0c4568766",
+			"0;9404;1;f;f;f;595;c2813d55-3b08-4f0b-aff6-70f0c4568766",
+			"595;9404;2;f;f;t;0;c2813d55-3b08-4f0b-aff6-70f0c4568766",
+			"0;9404;3;t;f;f;596;c26db52e-4fdf-4718-80e4-6f6533a041c6",
+			"0;9403;1;t;f;f;596;c26db52e-4fdf-4718-80e4-6f6533a041c6",
+			"0;9403;3;t;f;f;597;221f25ed-cc96-46c0-9b85-43dbc8821dbe",
+			"0;9402;1;t;f;f;597;221f25ed-cc96-46c0-9b85-43dbc8821dbe",
+			"598;9402;2;f;f;t;0;1b70802b-3538-4cb4-ac5d-9ab847bbb2f2",
+			"0;9402;3;t;f;f;598;1b70802b-3538-4cb4-ac5d-9ab847bbb2f2",
+			"0;9401;1;t;f;f;598;1b70802b-3538-4cb4-ac5d-9ab847bbb2f2",
+			"0;9401;3;f;f;f;599;19bf4f28-aa24-4f98-ab03-c0a84a49fd93",
+			"0;9400;1;f;f;f;599;19bf4f28-aa24-4f98-ab03-c0a84a49fd93",
+			"599;9400;2;f;f;t;0;19bf4f28-aa24-4f98-ab03-c0a84a49fd93",
+			"0;9400;3;t;f;f;600;82048f41-98d1-4abe-a9c8-0e6dd4bd97af",
+			"0;9399;1;t;f;f;600;82048f41-98d1-4abe-a9c8-0e6dd4bd97af",
+			"0;9399;3;t;f;f;601;08b0aa1f-996e-495b-960e-ce28a8372568",
+			"0;9398;1;t;f;f;601;08b0aa1f-996e-495b-960e-ce28a8372568",
+			"602;9398;2;f;f;t;0;c78dc1db-012c-46e6-b360-7d0bab6419e4",
+			"0;9398;3;t;f;f;602;c78dc1db-012c-46e6-b360-7d0bab6419e4",
+			"0;9397;1;t;f;f;602;c78dc1db-012c-46e6-b360-7d0bab6419e4",
+			"0;9397;3;f;f;f;603;4b8a4600-385c-4584-b520-ccf68b3e3def",
+			"0;9396;1;f;f;f;603;4b8a4600-385c-4584-b520-ccf68b3e3def",
+			"603;9396;2;f;f;t;0;4b8a4600-385c-4584-b520-ccf68b3e3def",
+			"0;9396;3;t;f;f;604;4648b318-7fe5-4003-b92c-3a54c0ac4375",
+			"0;9395;1;t;f;f;604;4648b318-7fe5-4003-b92c-3a54c0ac4375",
+			"0;9395;3;f;f;f;605;7366ed76-cdae-4890-8da7-028c90148b28",
+			"0;9394;1;f;f;f;605;7366ed76-cdae-4890-8da7-028c90148b28",
+			"605;9394;2;f;f;t;0;7366ed76-cdae-4890-8da7-028c90148b28",
+			"0;9394;3;t;f;f;606;38fd81b9-f8ff-45b9-891a-fd07a0257c49",
+			"0;9393;1;t;f;f;606;38fd81b9-f8ff-45b9-891a-fd07a0257c49",
+			"0;9393;3;f;f;f;607;f31b845d-5e92-4c01-a317-d7fc5607ecd3",
+			"0;9392;1;f;f;f;607;f31b845d-5e92-4c01-a317-d7fc5607ecd3",
+			"607;9392;2;f;f;t;0;f31b845d-5e92-4c01-a317-d7fc5607ecd3",
+			"0;9392;3;t;f;f;608;2e08b584-e3b5-413d-85e3-2b5aa93c8dd1",
+			"0;9391;1;t;f;f;608;2e08b584-e3b5-413d-85e3-2b5aa93c8dd1",
+			"0;9391;3;f;f;f;609;ab865f36-8e83-4915-8169-7eace87de32c",
+			"0;9390;1;f;f;f;609;ab865f36-8e83-4915-8169-7eace87de32c",
+			"609;9390;2;f;f;t;0;ab865f36-8e83-4915-8169-7eace87de32c",
+			"0;9390;3;t;f;f;610;c9a6d5f3-837f-43d5-838d-3665e25724e4",
+			"0;9389;1;t;f;f;610;c9a6d5f3-837f-43d5-838d-3665e25724e4",
+			"0;9389;3;f;f;f;611;53ce4500-669f-43a8-a86f-d61118dc4195",
+			"0;9388;1;f;f;f;611;53ce4500-669f-43a8-a86f-d61118dc4195",
+			"611;9388;2;f;f;t;0;53ce4500-669f-43a8-a86f-d61118dc4195",
+			"0;9388;3;t;f;f;612;771ddc82-8362-4645-aabe-3c8746ebf1e9",
+			"0;9387;1;t;f;f;612;771ddc82-8362-4645-aabe-3c8746ebf1e9",
+			"0;9387;3;f;f;f;613;c6f33099-fbc6-4480-afa1-2f939c214e09",
+			"0;9386;1;f;f;f;613;c6f33099-fbc6-4480-afa1-2f939c214e09",
+			"613;9386;2;f;f;t;0;c6f33099-fbc6-4480-afa1-2f939c214e09",
+			"0;9386;3;t;f;f;614;fea2668b-a566-4957-83b8-81cfa7d0c3a2",
+			"0;9385;1;t;f;f;614;fea2668b-a566-4957-83b8-81cfa7d0c3a2",
+			"0;9385;3;f;f;f;615;61a53af1-6bd7-4c20-83e7-bcf23228fb74",
+			"0;9384;1;f;f;f;615;61a53af1-6bd7-4c20-83e7-bcf23228fb74",
+			"615;9384;2;f;f;t;0;61a53af1-6bd7-4c20-83e7-bcf23228fb74",
+			"0;9384;3;t;f;f;616;2b058393-5a87-4c42-b635-0637c5f2c67e",
+			"0;9383;1;t;f;f;616;2b058393-5a87-4c42-b635-0637c5f2c67e",
+			"0;9383;3;f;f;f;617;c51c549a-7abf-40c9-94fc-6aa9797af50f",
+			"0;9382;1;f;f;f;617;c51c549a-7abf-40c9-94fc-6aa9797af50f",
+			"617;9382;2;f;f;t;0;c51c549a-7abf-40c9-94fc-6aa9797af50f",
+			"0;9382;3;t;f;f;618;f7312fea-db2a-4e66-a061-ceba175dc137",
+			"0;9381;1;t;f;f;618;f7312fea-db2a-4e66-a061-ceba175dc137",
+			"0;9381;3;f;f;f;619;73cd7292-9ecc-45a7-a183-caf2b43b3454",
+			"0;9380;1;f;f;f;619;73cd7292-9ecc-45a7-a183-caf2b43b3454",
+			"619;9380;2;f;f;t;0;73cd7292-9ecc-45a7-a183-caf2b43b3454",
+			"0;9380;3;t;f;f;620;b0384790-7c8b-437a-bcf3-736426763e76",
+			"0;9379;1;t;f;f;620;b0384790-7c8b-437a-bcf3-736426763e76",
+			"0;9379;3;f;f;f;621;aed9ebe1-5f0b-4978-91a4-ea2b48d22aba",
+			"0;9378;1;f;f;f;621;aed9ebe1-5f0b-4978-91a4-ea2b48d22aba",
+			"621;9378;2;f;f;t;0;aed9ebe1-5f0b-4978-91a4-ea2b48d22aba",
+			"0;9378;3;t;f;f;622;9dcc1225-dc91-49d5-ac26-c5235d3b37b4",
+			"0;9377;1;t;f;f;622;9dcc1225-dc91-49d5-ac26-c5235d3b37b4",
+			"0;9377;3;f;f;f;623;1188ea94-3593-4e45-ba4a-ef20995dedab",
+			"0;9376;1;f;f;f;623;1188ea94-3593-4e45-ba4a-ef20995dedab",
+			"623;9376;2;f;f;t;0;1188ea94-3593-4e45-ba4a-ef20995dedab",
+			"0;9376;3;t;f;f;624;f4f935c2-7949-4ee5-a0c2-38d7a423bd25",
+			"0;9375;1;t;f;f;624;f4f935c2-7949-4ee5-a0c2-38d7a423bd25",
+			"0;9375;3;f;f;f;625;a91d90d6-92a1-433b-bbd5-198e1afe4d79",
+			"0;9374;1;f;f;f;625;a91d90d6-92a1-433b-bbd5-198e1afe4d79",
+			"625;9374;2;f;f;t;0;a91d90d6-92a1-433b-bbd5-198e1afe4d79",
+			"0;9374;3;t;f;f;626;d53e2e2e-2775-4e45-a793-c1991026f4d0",
+			"0;9373;1;t;f;f;626;d53e2e2e-2775-4e45-a793-c1991026f4d0",
+			"0;9373;3;f;f;f;627;66d6f267-b7da-4593-a86b-213edbbf3746",
+			"0;9372;1;f;f;f;627;66d6f267-b7da-4593-a86b-213edbbf3746",
+			"627;9372;2;f;f;t;0;66d6f267-b7da-4593-a86b-213edbbf3746",
+			"0;9372;3;t;f;f;628;3a2cbbab-264a-43c4-91d0-7c4d90f80ebf",
+			"0;9371;1;t;f;f;628;3a2cbbab-264a-43c4-91d0-7c4d90f80ebf",
+			"0;9371;3;f;f;f;629;952ff4e9-d401-4fdb-b326-29ab60a46688",
+			"0;9370;1;f;f;f;629;952ff4e9-d401-4fdb-b326-29ab60a46688",
+			"629;9370;2;f;f;t;0;952ff4e9-d401-4fdb-b326-29ab60a46688",
+			"0;9370;3;t;f;f;630;70c3b90e-f048-4799-ad66-8ef14384b2fe",
+			"0;9369;1;t;f;f;630;70c3b90e-f048-4799-ad66-8ef14384b2fe",
+			"0;9369;3;f;f;f;631;2a356aa6-2e45-497a-bb46-ef86832f36ca",
+			"0;9368;1;f;f;f;631;2a356aa6-2e45-497a-bb46-ef86832f36ca",
+			"631;9368;2;f;f;t;0;2a356aa6-2e45-497a-bb46-ef86832f36ca",
+			"0;9368;3;t;f;f;632;d0cedb34-0394-4f84-8e6a-1a0eb43fbc85",
+			"0;9367;1;t;f;f;632;d0cedb34-0394-4f84-8e6a-1a0eb43fbc85",
+			"0;9367;3;f;f;f;633;e38c660d-f5cb-48bd-b1d5-24e1f4ae2aa7",
+			"0;9366;1;f;f;f;633;e38c660d-f5cb-48bd-b1d5-24e1f4ae2aa7",
+			"633;9366;2;f;f;t;0;e38c660d-f5cb-48bd-b1d5-24e1f4ae2aa7",
+			"0;9366;3;t;f;f;634;3995b4b8-da73-40bc-9bad-387562d8597d",
+			"0;9365;1;t;f;f;634;3995b4b8-da73-40bc-9bad-387562d8597d",
+			"0;9365;3;f;f;f;635;aaa8e014-34a1-44bd-bf05-178b9431f2b3",
+			"0;9364;1;f;f;f;635;aaa8e014-34a1-44bd-bf05-178b9431f2b3",
+			"635;9364;2;f;f;t;0;aaa8e014-34a1-44bd-bf05-178b9431f2b3",
+			"0;9364;3;t;f;f;636;4cb485af-4ede-4a8f-83c4-f83f0b632759",
+			"0;9363;1;t;f;f;636;4cb485af-4ede-4a8f-83c4-f83f0b632759",
+			"0;9363;3;f;f;f;637;adeeacc5-7262-49c3-8d02-e3394ce177bf",
+			"0;9362;1;f;f;f;637;adeeacc5-7262-49c3-8d02-e3394ce177bf",
+			"637;9362;2;f;f;t;0;adeeacc5-7262-49c3-8d02-e3394ce177bf",
+			"0;9362;3;t;f;f;638;a40f3e60-b75d-48a3-8689-fc7c96a2f416",
+			"0;9361;1;t;f;f;638;a40f3e60-b75d-48a3-8689-fc7c96a2f416",
+			"0;9361;3;f;f;f;639;f7272c26-8bc8-465e-b8b4-acf85c875820",
+			"0;9360;1;f;f;f;639;f7272c26-8bc8-465e-b8b4-acf85c875820",
+			"639;9360;2;f;f;t;0;f7272c26-8bc8-465e-b8b4-acf85c875820",
+			"0;9360;3;t;f;f;640;9c8ff17e-2f5e-4a1a-b151-f098f0e67ec6",
+			"0;9359;1;t;f;f;640;9c8ff17e-2f5e-4a1a-b151-f098f0e67ec6",
+			"0;9359;3;f;f;f;641;028fe203-9d16-483d-ac96-75d48cacd119",
+			"0;9358;1;f;f;f;641;028fe203-9d16-483d-ac96-75d48cacd119",
+			"641;9358;2;f;f;t;0;028fe203-9d16-483d-ac96-75d48cacd119",
+			"0;9358;3;t;f;f;642;9ccf6d4c-97c4-4c94-a361-8ed50b48db6f",
+			"0;9357;1;t;f;f;642;9ccf6d4c-97c4-4c94-a361-8ed50b48db6f",
+			"0;9357;3;f;f;f;643;908f9fca-34c3-465b-bcd0-80783c8f4d80",
+			"0;9356;1;f;f;f;643;908f9fca-34c3-465b-bcd0-80783c8f4d80",
+			"643;9356;2;f;f;t;0;908f9fca-34c3-465b-bcd0-80783c8f4d80",
+			"0;9356;3;t;f;f;644;22b36c36-c1af-46a9-9001-51f1930fe85b",
+			"0;9355;1;t;f;f;644;22b36c36-c1af-46a9-9001-51f1930fe85b",
+			"0;9355;3;f;f;f;645;37772d6f-853f-443b-939c-a2ac16a6b387",
+			"0;9354;1;f;f;f;645;37772d6f-853f-443b-939c-a2ac16a6b387",
+			"645;9354;2;f;f;t;0;37772d6f-853f-443b-939c-a2ac16a6b387",
+			"0;9354;3;t;f;f;646;d95ac871-c324-425a-889f-a73c5c4b29c0",
+			"0;9353;1;t;f;f;646;d95ac871-c324-425a-889f-a73c5c4b29c0",
+			"0;9353;3;f;f;f;647;d77784e2-5df0-4bde-be2f-4d349d6ffcc5",
+			"0;9352;1;f;f;f;647;d77784e2-5df0-4bde-be2f-4d349d6ffcc5",
+			"647;9352;2;f;f;t;0;d77784e2-5df0-4bde-be2f-4d349d6ffcc5",
+			"0;9352;3;t;f;f;648;40114f62-62ee-48c0-a474-f54b1b0af056",
+			"0;9351;1;t;f;f;648;40114f62-62ee-48c0-a474-f54b1b0af056",
+			"0;9351;3;f;f;f;649;46bd0d50-6c39-4dc5-8aa7-aaa2d3d16be7",
+			"0;9350;1;f;f;f;649;46bd0d50-6c39-4dc5-8aa7-aaa2d3d16be7",
+			"649;9350;2;f;f;t;0;46bd0d50-6c39-4dc5-8aa7-aaa2d3d16be7",
+			"0;9350;3;t;f;f;650;93d48188-3c42-4b1e-8099-cb694dc206ae",
+			"0;9349;1;t;f;f;650;93d48188-3c42-4b1e-8099-cb694dc206ae",
+			"0;9349;3;f;f;f;651;fa05b100-a814-493d-9da1-7e6abdad1437",
+			"0;9348;1;f;f;f;651;fa05b100-a814-493d-9da1-7e6abdad1437",
+			"651;9348;2;f;f;t;0;fa05b100-a814-493d-9da1-7e6abdad1437",
+			"0;9348;3;t;f;f;652;1befbb08-7905-4067-a0b5-1936c3ffbd8c",
+			"0;9347;1;t;f;f;652;1befbb08-7905-4067-a0b5-1936c3ffbd8c",
+			"0;9347;3;f;f;f;653;caf3a114-220c-4621-ab5d-712a33ff4275",
+			"0;9346;1;f;f;f;653;caf3a114-220c-4621-ab5d-712a33ff4275",
+			"653;9346;2;f;f;t;0;caf3a114-220c-4621-ab5d-712a33ff4275",
+			"0;9346;3;t;f;f;654;4d6d7cd5-09e5-4b54-9dfe-6120b7b6338b",
+			"0;9345;1;t;f;f;654;4d6d7cd5-09e5-4b54-9dfe-6120b7b6338b",
+			"0;9345;3;f;f;f;655;44852be6-97a0-4a75-a9f8-0289bcc25898",
+			"0;9344;1;f;f;f;655;44852be6-97a0-4a75-a9f8-0289bcc25898",
+			"655;9344;2;f;f;t;0;44852be6-97a0-4a75-a9f8-0289bcc25898",
+			"0;9344;3;t;f;f;656;7ca969b5-baca-455f-9a49-c8bbae8823f4",
+			"0;9343;1;t;f;f;656;7ca969b5-baca-455f-9a49-c8bbae8823f4",
+			"0;9343;3;f;f;f;657;73d57375-1af8-4e45-8641-2a70bfb0ebd4",
+			"0;9342;1;f;f;f;657;73d57375-1af8-4e45-8641-2a70bfb0ebd4",
+			"657;9342;2;f;f;t;0;73d57375-1af8-4e45-8641-2a70bfb0ebd4",
+			"0;9342;3;t;f;f;658;11fc8f1b-0420-4077-be10-f3d96103d9ee",
+			"0;9341;1;t;f;f;658;11fc8f1b-0420-4077-be10-f3d96103d9ee",
+			"0;9341;3;f;f;f;659;c1d5b630-fb08-47cb-a208-84bb49b6915d",
+			"0;9340;1;f;f;f;659;c1d5b630-fb08-47cb-a208-84bb49b6915d",
+			"659;9340;2;f;f;t;0;c1d5b630-fb08-47cb-a208-84bb49b6915d",
+			"0;9340;3;t;f;f;660;82948cc5-0c6f-485a-b41f-0fe0a57039dc",
+			"0;9339;1;t;f;f;660;82948cc5-0c6f-485a-b41f-0fe0a57039dc",
+			"0;9339;3;f;f;f;661;10212605-0b05-4f8b-a175-13e6aea0fc5c",
+			"0;9338;1;f;f;f;661;10212605-0b05-4f8b-a175-13e6aea0fc5c",
+			"661;9338;2;f;f;t;0;10212605-0b05-4f8b-a175-13e6aea0fc5c",
+			"0;9338;3;t;f;f;662;63406615-967f-41c7-8faf-f8a397a0e9ab",
+			"0;9337;1;t;f;f;662;63406615-967f-41c7-8faf-f8a397a0e9ab",
+			"0;9337;3;f;f;f;663;f69873e7-0f62-49f8-a63f-b410979249f7",
+			"0;9336;1;f;f;f;663;f69873e7-0f62-49f8-a63f-b410979249f7",
+			"663;9336;2;f;f;t;0;f69873e7-0f62-49f8-a63f-b410979249f7",
+			"0;9336;3;t;f;f;664;c94ac8ff-8ae5-45cb-a6f0-898c04c8eb2a",
+			"0;9335;1;t;f;f;664;c94ac8ff-8ae5-45cb-a6f0-898c04c8eb2a",
+			"0;9335;3;f;f;f;665;803fea1f-41e0-4c96-b40c-8eb6724d7d57",
+			"0;9334;1;f;f;f;665;803fea1f-41e0-4c96-b40c-8eb6724d7d57",
+			"665;9334;2;f;f;t;0;803fea1f-41e0-4c96-b40c-8eb6724d7d57",
+			"0;9334;3;t;f;f;666;cc47192a-e2df-43b0-a906-62639d701c1d",
+			"0;9333;1;t;f;f;666;cc47192a-e2df-43b0-a906-62639d701c1d",
+			"0;9333;3;f;f;f;667;5587df97-590b-4870-a9d6-c94507fab10c",
+			"0;9332;1;f;f;f;667;5587df97-590b-4870-a9d6-c94507fab10c",
+			"667;9332;2;f;f;t;0;5587df97-590b-4870-a9d6-c94507fab10c",
+			"0;9332;3;t;f;f;668;04d6f1a3-1e44-434d-bb94-f4bf8c1c3194",
+			"0;9331;1;t;f;f;668;04d6f1a3-1e44-434d-bb94-f4bf8c1c3194",
+			"0;9331;3;f;f;f;669;76f054a1-5296-4aa5-8fa8-29317a998265",
+			"0;9330;1;f;f;f;669;76f054a1-5296-4aa5-8fa8-29317a998265",
+			"669;9330;2;f;f;t;0;76f054a1-5296-4aa5-8fa8-29317a998265",
+			"0;9330;3;t;f;f;670;4c045286-18bf-4650-b66c-0b7fd0bf8d95",
+			"0;9329;1;t;f;f;670;4c045286-18bf-4650-b66c-0b7fd0bf8d95",
+			"0;9329;3;f;f;f;671;ac35241f-94a3-4c08-9204-7e8138e22754",
+			"0;9328;1;f;f;f;671;ac35241f-94a3-4c08-9204-7e8138e22754",
+			"671;9328;2;f;f;t;0;ac35241f-94a3-4c08-9204-7e8138e22754",
+			"0;9328;3;t;f;f;672;285c548b-fc12-4e18-b30d-b60db63cab15",
+			"0;9327;1;t;f;f;672;285c548b-fc12-4e18-b30d-b60db63cab15",
+			"0;9327;3;f;f;f;673;8413420b-61ec-4516-b47e-b6efa34a6391",
+			"0;9326;1;f;f;f;673;8413420b-61ec-4516-b47e-b6efa34a6391",
+			"673;9326;2;f;f;t;0;8413420b-61ec-4516-b47e-b6efa34a6391",
+			"0;9326;3;t;f;f;674;961c6742-96d5-46a8-b694-0416684b5875",
+			"0;9325;1;t;f;f;674;961c6742-96d5-46a8-b694-0416684b5875",
+			"0;9325;3;t;f;f;675;a3168c5c-ffba-4f5d-8ca3-0c188c4ed7a3",
+			"0;9324;1;t;f;f;675;a3168c5c-ffba-4f5d-8ca3-0c188c4ed7a3",
+			"676;9324;2;f;f;t;0;e2ad4ea2-5f2f-45e2-ae00-a1b0cdab0dcc",
+			"0;9324;3;t;f;f;676;e2ad4ea2-5f2f-45e2-ae00-a1b0cdab0dcc",
+			"0;9323;1;t;f;f;676;e2ad4ea2-5f2f-45e2-ae00-a1b0cdab0dcc",
+			"0;9323;3;f;f;f;677;fffadc40-aeee-4a13-ae28-b9b4eda0d31b",
+			"0;9322;1;f;f;f;677;fffadc40-aeee-4a13-ae28-b9b4eda0d31b",
+			"677;9322;2;f;f;t;0;fffadc40-aeee-4a13-ae28-b9b4eda0d31b",
+			"0;9322;3;t;f;f;678;053aabf3-a5c9-42bc-92bf-5eb515ca3f7f",
+			"0;9321;1;t;f;f;678;053aabf3-a5c9-42bc-92bf-5eb515ca3f7f",
+			"0;9321;3;t;f;f;679;c4d0a352-664d-4b4f-8908-229dca256f05",
+			"0;9320;1;t;f;f;679;c4d0a352-664d-4b4f-8908-229dca256f05",
+			"680;9320;2;f;f;t;0;0ed6efbc-a72e-4db7-becc-e0d0921a3c2e",
+			"0;9320;3;t;f;f;680;0ed6efbc-a72e-4db7-becc-e0d0921a3c2e",
+			"0;9319;1;t;f;f;680;0ed6efbc-a72e-4db7-becc-e0d0921a3c2e",
+			"0;9319;3;f;f;f;681;66488d6c-5837-4845-bc23-6fe9ec6c13f4",
+			"0;9318;1;f;f;f;681;66488d6c-5837-4845-bc23-6fe9ec6c13f4",
+			"681;9318;2;f;f;t;0;66488d6c-5837-4845-bc23-6fe9ec6c13f4",
+			"0;9318;3;t;f;f;682;be1db328-a75b-41a2-8a03-ca2bd31cf3b0",
+			"0;9317;1;t;f;f;682;be1db328-a75b-41a2-8a03-ca2bd31cf3b0",
+			"0;9317;3;t;f;f;683;72b3f415-e388-4ca3-92b6-9d6d837fe8a2",
+			"0;9316;1;t;f;f;683;72b3f415-e388-4ca3-92b6-9d6d837fe8a2",
+			"684;9316;2;f;f;t;0;9b5bd43a-1185-44fb-b059-886f93ecb8eb",
+			"0;9316;3;t;f;f;684;9b5bd43a-1185-44fb-b059-886f93ecb8eb",
+			"0;9315;1;t;f;f;684;9b5bd43a-1185-44fb-b059-886f93ecb8eb",
+			"0;9315;3;f;f;f;685;d99ac479-9b3a-4e60-96c1-e0dcf316a47f",
+			"0;9314;1;f;f;f;685;d99ac479-9b3a-4e60-96c1-e0dcf316a47f",
+			"685;9314;2;f;f;t;0;d99ac479-9b3a-4e60-96c1-e0dcf316a47f",
+			"0;9314;3;t;f;f;686;ea039dc7-cceb-4450-922e-0d783f124e3e",
+			"0;9313;1;t;f;f;686;ea039dc7-cceb-4450-922e-0d783f124e3e",
+			"0;9313;3;t;f;f;687;0be232b4-f830-42f7-af36-83159bdcb25b",
+			"0;9312;1;t;f;f;687;0be232b4-f830-42f7-af36-83159bdcb25b",
+			"688;9312;2;f;f;t;0;a642e1dc-7e3a-4c5a-8aba-c0a3af78b813",
+			"0;9312;3;t;f;f;688;a642e1dc-7e3a-4c5a-8aba-c0a3af78b813",
+			"0;9311;1;t;f;f;688;a642e1dc-7e3a-4c5a-8aba-c0a3af78b813",
+			"0;9311;3;f;f;f;689;8ba3c21e-fdd7-46fc-b0a1-0f6b42e0db4e",
+			"0;9310;1;f;f;f;689;8ba3c21e-fdd7-46fc-b0a1-0f6b42e0db4e",
+			"689;9310;2;f;f;t;0;8ba3c21e-fdd7-46fc-b0a1-0f6b42e0db4e",
+			"0;9310;3;t;f;f;690;8d0fa97c-ec1f-4a9c-8c3b-963a9f467bab",
+			"0;9309;1;t;f;f;690;8d0fa97c-ec1f-4a9c-8c3b-963a9f467bab",
+			"0;9309;3;t;f;f;691;0b0bbf47-fac4-4a2f-8978-58b47dbac603",
+			"0;9308;1;t;f;f;691;0b0bbf47-fac4-4a2f-8978-58b47dbac603",
+			"692;9308;2;f;f;t;0;acfa7955-4fd9-4929-bca3-98b788170ac6",
+			"0;9308;3;t;f;f;692;acfa7955-4fd9-4929-bca3-98b788170ac6",
+			"0;9307;1;t;f;f;692;acfa7955-4fd9-4929-bca3-98b788170ac6",
+			"0;9307;3;f;f;f;693;c173e85c-74a2-4e63-8a3b-540058f41a8d",
+			"0;9306;1;f;f;f;693;c173e85c-74a2-4e63-8a3b-540058f41a8d",
+			"693;9306;2;f;f;t;0;c173e85c-74a2-4e63-8a3b-540058f41a8d",
+			"0;9306;3;t;f;f;694;bb7089ee-bc63-49b7-9b5a-25ca592a0658",
+			"0;9305;1;t;f;f;694;bb7089ee-bc63-49b7-9b5a-25ca592a0658",
+			"0;9305;3;t;f;f;695;ea0702c2-9af0-4c32-8e26-642e8ae97204",
+			"0;9304;1;t;f;f;695;ea0702c2-9af0-4c32-8e26-642e8ae97204",
+			"696;9304;2;f;f;t;0;24a7b132-40f7-46a3-9f8a-abdd413724ab",
+			"0;9304;3;t;f;f;696;24a7b132-40f7-46a3-9f8a-abdd413724ab",
+			"0;9303;1;t;f;f;696;24a7b132-40f7-46a3-9f8a-abdd413724ab",
+			"0;9303;3;f;f;f;697;f2a2dd68-02cd-4172-aa09-516fe7eb51cf",
+			"0;9302;1;f;f;f;697;f2a2dd68-02cd-4172-aa09-516fe7eb51cf",
+			"697;9302;2;f;f;t;0;f2a2dd68-02cd-4172-aa09-516fe7eb51cf",
+			"0;9302;3;t;f;f;698;4613bdcd-da8a-44d9-a945-b2e070f2b949",
+			"0;9301;1;t;f;f;698;4613bdcd-da8a-44d9-a945-b2e070f2b949",
+			"0;9301;3;t;f;f;699;6c0b6726-cef6-4089-918a-81b63c513921",
+			"0;9300;1;t;f;f;699;6c0b6726-cef6-4089-918a-81b63c513921",
+			"700;9300;2;f;f;t;0;762e7504-4cb5-4f62-87ba-26645f4ffbcb",
+			"0;9300;3;t;f;f;700;762e7504-4cb5-4f62-87ba-26645f4ffbcb",
+			"0;9299;1;t;f;f;700;762e7504-4cb5-4f62-87ba-26645f4ffbcb",
+			"0;9299;3;f;f;f;701;645a52b9-a8b6-4922-8f52-7f27177d4ca9",
+			"0;9298;1;f;f;f;701;645a52b9-a8b6-4922-8f52-7f27177d4ca9",
+			"701;9298;2;f;f;t;0;645a52b9-a8b6-4922-8f52-7f27177d4ca9",
+			"0;9298;3;t;f;f;702;0b588f83-870a-426d-b086-d25d345dc685",
+			"0;9297;1;t;f;f;702;0b588f83-870a-426d-b086-d25d345dc685",
+			"0;9297;3;t;f;f;703;eb973a38-82da-4da2-bc9a-f6cdd02edef6",
+			"0;9296;1;t;f;f;703;eb973a38-82da-4da2-bc9a-f6cdd02edef6",
+			"704;9296;2;f;f;t;0;07c25bb3-fd72-422a-adc6-2d457f75dbae",
+			"0;9296;3;t;f;f;704;07c25bb3-fd72-422a-adc6-2d457f75dbae",
+			"0;9295;1;t;f;f;704;07c25bb3-fd72-422a-adc6-2d457f75dbae",
+			"0;9295;3;f;f;f;705;4798f8cd-662d-41ab-9d92-f629c81def64",
+			"0;9294;1;f;f;f;705;4798f8cd-662d-41ab-9d92-f629c81def64",
+			"705;9294;2;f;f;t;0;4798f8cd-662d-41ab-9d92-f629c81def64",
+			"0;9294;3;t;f;f;706;258ffe1e-fbff-4993-9caf-f793f356ab0e",
+			"0;9293;1;t;f;f;706;258ffe1e-fbff-4993-9caf-f793f356ab0e",
+			"0;9293;3;f;f;f;707;cf141ccc-45a3-4036-a1a6-71c0ba3943e7",
+			"0;9292;1;f;f;f;707;cf141ccc-45a3-4036-a1a6-71c0ba3943e7",
+			"707;9292;2;f;f;t;0;cf141ccc-45a3-4036-a1a6-71c0ba3943e7",
+			"0;9292;3;t;f;f;708;fbb0ea28-ca2d-4018-969c-ddff0546a3c4",
+			"0;9291;1;t;f;f;708;fbb0ea28-ca2d-4018-969c-ddff0546a3c4",
+			"0;9291;3;f;f;f;709;f0a793b4-0e2d-477b-8ce4-9a8817ec2d2c",
+			"0;9290;1;f;f;f;709;f0a793b4-0e2d-477b-8ce4-9a8817ec2d2c",
+			"709;9290;2;f;f;t;0;f0a793b4-0e2d-477b-8ce4-9a8817ec2d2c",
+			"0;9290;3;t;f;f;710;5dda57fd-a664-41f4-85cb-fa4da0fbc49c",
+			"0;9289;1;t;f;f;710;5dda57fd-a664-41f4-85cb-fa4da0fbc49c",
+			"0;9289;3;f;f;f;711;a6dc2073-c54a-40f3-ab53-20e80931a63f",
+			"0;9288;1;f;f;f;711;a6dc2073-c54a-40f3-ab53-20e80931a63f",
+			"711;9288;2;f;f;t;0;a6dc2073-c54a-40f3-ab53-20e80931a63f",
+			"0;9288;3;t;f;f;712;fb1dade4-7add-463d-99e9-4799a5499db6",
+			"0;9287;1;t;f;f;712;fb1dade4-7add-463d-99e9-4799a5499db6",
+			"0;9287;3;f;f;f;713;5fdf8662-22a6-40d6-9400-22b724da6d34",
+			"0;9286;1;f;f;f;713;5fdf8662-22a6-40d6-9400-22b724da6d34",
+			"713;9286;2;f;f;t;0;5fdf8662-22a6-40d6-9400-22b724da6d34",
+			"0;9286;3;t;f;f;714;d3770399-b3d9-4784-85fd-58eec063f30b",
+			"0;9285;1;t;f;f;714;d3770399-b3d9-4784-85fd-58eec063f30b",
+			"0;9285;3;f;f;f;715;5dbd1e68-bd25-433f-a087-31724317d9a2",
+			"0;9284;1;f;f;f;715;5dbd1e68-bd25-433f-a087-31724317d9a2",
+			"715;9284;2;f;f;t;0;5dbd1e68-bd25-433f-a087-31724317d9a2",
+			"0;9284;3;t;f;f;716;ac9f9b2e-6aab-4bed-83da-d462e571f976",
+			"0;9283;1;t;f;f;716;ac9f9b2e-6aab-4bed-83da-d462e571f976",
+			"0;9283;3;f;f;f;717;373ce0be-0a85-4ed0-8517-018e4ef3b563",
+			"0;9282;1;f;f;f;717;373ce0be-0a85-4ed0-8517-018e4ef3b563",
+			"717;9282;2;f;f;t;0;373ce0be-0a85-4ed0-8517-018e4ef3b563",
+			"0;9282;3;t;f;f;718;95944aa5-bc55-4270-a83d-867a748f72b0",
+			"0;9281;1;t;f;f;718;95944aa5-bc55-4270-a83d-867a748f72b0",
+			"0;9281;3;f;f;f;719;d4d151bc-2def-48eb-9213-5e33c1e6b716",
+			"0;9280;1;f;f;f;719;d4d151bc-2def-48eb-9213-5e33c1e6b716",
+			"719;9280;2;f;f;t;0;d4d151bc-2def-48eb-9213-5e33c1e6b716",
+			"0;9280;3;t;f;f;720;9b207700-dce1-41d7-8666-fe5430ec7947",
+			"0;9279;1;t;f;f;720;9b207700-dce1-41d7-8666-fe5430ec7947",
+			"0;9279;3;t;f;f;721;ee10d42d-c536-4764-825e-6c6d2e02946d",
+			"0;9278;1;t;f;f;721;ee10d42d-c536-4764-825e-6c6d2e02946d",
+			"722;9278;2;f;f;t;0;fb5ec9a5-b851-41cd-8c0a-ab4f84f69042",
+			"0;9278;3;t;f;f;722;fb5ec9a5-b851-41cd-8c0a-ab4f84f69042",
+			"0;9277;1;t;f;f;722;fb5ec9a5-b851-41cd-8c0a-ab4f84f69042",
+			"0;9277;3;f;f;f;723;220df5f3-4f2b-4335-be7b-4aeea6a9522c",
+			"0;9276;1;f;f;f;723;220df5f3-4f2b-4335-be7b-4aeea6a9522c",
+			"723;9276;2;f;f;t;0;220df5f3-4f2b-4335-be7b-4aeea6a9522c",
+			"0;9276;3;t;f;f;724;db4072e4-7258-4c72-8727-e5a57c7ae81d",
+			"0;9275;1;t;f;f;724;db4072e4-7258-4c72-8727-e5a57c7ae81d",
+			"0;9275;3;t;f;f;725;dbe53e0a-77f1-4f09-ad3d-16811e2fa666",
+			"0;9274;1;t;f;f;725;dbe53e0a-77f1-4f09-ad3d-16811e2fa666",
+			"726;9274;2;f;f;t;0;0d4c3466-cfd9-43fc-9a74-ecb6bdc73c55",
+			"0;9274;3;t;f;f;726;0d4c3466-cfd9-43fc-9a74-ecb6bdc73c55",
+			"0;9273;1;t;f;f;726;0d4c3466-cfd9-43fc-9a74-ecb6bdc73c55",
+			"0;9273;3;f;f;f;727;30254434-cb76-4673-a272-cd55bd3ac687",
+			"0;9272;1;f;f;f;727;30254434-cb76-4673-a272-cd55bd3ac687",
+			"727;9272;2;f;f;t;0;30254434-cb76-4673-a272-cd55bd3ac687",
+			"0;9272;3;t;f;f;728;4afe8213-40a8-41b2-8ff0-e0a2eac57777",
+			"0;9271;1;t;f;f;728;4afe8213-40a8-41b2-8ff0-e0a2eac57777",
+			"0;9271;3;f;f;f;729;bdd33404-557c-41eb-ab6d-0155b3544915",
+			"0;9270;1;f;f;f;729;bdd33404-557c-41eb-ab6d-0155b3544915",
+			"729;9270;2;f;f;t;0;bdd33404-557c-41eb-ab6d-0155b3544915",
+			"0;9270;3;t;f;f;730;6f5c2e26-4fbe-4ade-8795-563eb6cbc4ad",
+			"0;9269;1;t;f;f;730;6f5c2e26-4fbe-4ade-8795-563eb6cbc4ad",
+			"0;9269;3;f;f;f;731;5f1951b3-e266-4a18-b552-5ae1a3c5ae99",
+			"0;9268;1;f;f;f;731;5f1951b3-e266-4a18-b552-5ae1a3c5ae99",
+			"731;9268;2;f;f;t;0;5f1951b3-e266-4a18-b552-5ae1a3c5ae99",
+			"0;9268;3;t;f;f;732;13d3f044-b956-43f4-a964-1235c4e1a407",
+			"0;9267;1;t;f;f;732;13d3f044-b956-43f4-a964-1235c4e1a407",
+			"0;9267;3;f;f;f;733;8183a4e0-456b-4a64-9e5f-98d16553a083",
+			"0;9266;1;f;f;f;733;8183a4e0-456b-4a64-9e5f-98d16553a083",
+			"733;9266;2;f;f;t;0;8183a4e0-456b-4a64-9e5f-98d16553a083",
+			"0;9266;3;t;f;f;734;05b67e9c-ca3e-48da-8fe0-f4b0ce42e5a2",
+			"0;9265;1;t;f;f;734;05b67e9c-ca3e-48da-8fe0-f4b0ce42e5a2",
+			"0;9265;3;f;f;f;735;b7c7285d-68fc-4e00-8efc-20ca2941c4d5",
+			"0;9264;1;f;f;f;735;b7c7285d-68fc-4e00-8efc-20ca2941c4d5",
+			"735;9264;2;f;f;t;0;b7c7285d-68fc-4e00-8efc-20ca2941c4d5",
+			"0;9264;3;t;f;f;736;bc9cf5db-999c-4337-b33e-25193921fe5f",
+			"0;9263;1;t;f;f;736;bc9cf5db-999c-4337-b33e-25193921fe5f",
+			"0;9263;3;f;f;f;737;1b64c912-71c9-449a-8ec0-bb474f516403",
+			"0;9262;1;f;f;f;737;1b64c912-71c9-449a-8ec0-bb474f516403",
+			"737;9262;2;f;f;t;0;1b64c912-71c9-449a-8ec0-bb474f516403",
+			"0;9262;3;t;f;f;738;66870a64-60e4-4f06-9ed6-85566c2337b8",
+			"0;9261;1;t;f;f;738;66870a64-60e4-4f06-9ed6-85566c2337b8",
+			"0;9261;3;f;f;f;739;c1e4f2ff-e92b-41d6-ad2a-91e7e435da7d",
+			"0;9260;1;f;f;f;739;c1e4f2ff-e92b-41d6-ad2a-91e7e435da7d",
+			"739;9260;2;f;f;t;0;c1e4f2ff-e92b-41d6-ad2a-91e7e435da7d",
+			"0;9260;3;t;f;f;740;8b14e997-1717-4481-9eda-491bf4019496",
+			"0;9259;1;t;f;f;740;8b14e997-1717-4481-9eda-491bf4019496",
+			"0;9259;3;f;f;f;741;17dc59e1-c2b6-4ec3-9b35-764e7810249c",
+			"0;9258;1;f;f;f;741;17dc59e1-c2b6-4ec3-9b35-764e7810249c",
+			"741;9258;2;f;f;t;0;17dc59e1-c2b6-4ec3-9b35-764e7810249c",
+			"0;9258;3;t;f;f;742;d23ed89d-7693-472d-b68c-ada5e44d070e",
+			"0;9257;1;t;f;f;742;d23ed89d-7693-472d-b68c-ada5e44d070e",
+			"0;9257;3;f;f;f;743;8fcf3502-c80b-400a-9c06-24f450be2c9b",
+			"0;9256;1;f;f;f;743;8fcf3502-c80b-400a-9c06-24f450be2c9b",
+			"743;9256;2;f;f;t;0;8fcf3502-c80b-400a-9c06-24f450be2c9b",
+			"0;9256;3;t;f;f;744;bc2098da-6fb2-406a-adc2-aca455e38ac4",
+			"0;9255;1;t;f;f;744;bc2098da-6fb2-406a-adc2-aca455e38ac4",
+			"0;9255;3;f;f;f;745;2c9408d1-5a3e-4d3f-a783-f5fcacd39bbd",
+			"0;9254;1;f;f;f;745;2c9408d1-5a3e-4d3f-a783-f5fcacd39bbd",
+			"745;9254;2;f;f;t;0;2c9408d1-5a3e-4d3f-a783-f5fcacd39bbd",
+			"0;9254;3;t;f;f;746;f4eb0942-b48b-47cf-8bb1-5688f343e3f6",
+			"0;9253;1;t;f;f;746;f4eb0942-b48b-47cf-8bb1-5688f343e3f6",
+			"0;9253;3;f;f;f;747;e0f9b880-6dd2-4bcd-92cb-908c29a41e6b",
+			"0;9252;1;f;f;f;747;e0f9b880-6dd2-4bcd-92cb-908c29a41e6b",
+			"747;9252;2;f;f;t;0;e0f9b880-6dd2-4bcd-92cb-908c29a41e6b",
+			"0;9252;3;t;f;f;748;351d44ae-a227-4842-85ea-139545bf4b82",
+			"0;9251;1;t;f;f;748;351d44ae-a227-4842-85ea-139545bf4b82",
+			"0;9251;3;f;f;f;749;f3c58afe-b64b-4c7c-8b43-9935d829b384",
+			"0;9250;1;f;f;f;749;f3c58afe-b64b-4c7c-8b43-9935d829b384",
+			"749;9250;2;f;f;t;0;f3c58afe-b64b-4c7c-8b43-9935d829b384",
+			"0;9250;3;t;f;f;750;9ab7623e-c6bb-4d63-9566-ba22eef5ed8a",
+			"0;9249;1;t;f;f;750;9ab7623e-c6bb-4d63-9566-ba22eef5ed8a",
+			"0;9249;3;f;f;f;751;c1c629eb-a3b0-4363-a3f0-7826535c6482",
+			"0;9248;1;f;f;f;751;c1c629eb-a3b0-4363-a3f0-7826535c6482",
+			"751;9248;2;f;f;t;0;c1c629eb-a3b0-4363-a3f0-7826535c6482",
+			"0;9248;3;t;f;f;752;0723b70a-ed6a-4f06-b564-627f34e3765a",
+			"0;9247;1;t;f;f;752;0723b70a-ed6a-4f06-b564-627f34e3765a",
+			"0;9247;3;f;f;f;753;fd5e9dc1-18dc-4309-9f8e-5e0d84dce8dd",
+			"0;9246;1;f;f;f;753;fd5e9dc1-18dc-4309-9f8e-5e0d84dce8dd",
+			"753;9246;2;f;f;t;0;fd5e9dc1-18dc-4309-9f8e-5e0d84dce8dd",
+			"0;9246;3;t;f;f;754;dfb07667-4b9d-469a-9947-425537cc9ddc",
+			"0;9245;1;t;f;f;754;dfb07667-4b9d-469a-9947-425537cc9ddc",
+			"0;9245;3;f;f;f;755;a90754d6-aeb4-43de-b9f3-dcf696113f10",
+			"0;9244;1;f;f;f;755;a90754d6-aeb4-43de-b9f3-dcf696113f10",
+			"755;9244;2;f;f;t;0;a90754d6-aeb4-43de-b9f3-dcf696113f10",
+			"0;9244;3;t;f;f;756;b2ddcbd2-2c08-44ab-9d5f-0133861c0625",
+			"0;9243;1;t;f;f;756;b2ddcbd2-2c08-44ab-9d5f-0133861c0625",
+			"0;9243;3;f;f;f;757;c2c2697f-3dfc-4264-b0b8-fe158f60640e",
+			"0;9242;1;f;f;f;757;c2c2697f-3dfc-4264-b0b8-fe158f60640e",
+			"757;9242;2;f;f;t;0;c2c2697f-3dfc-4264-b0b8-fe158f60640e",
+			"0;9242;3;t;f;f;758;2aeea825-52ed-45fd-943d-7a378c194316",
+			"0;9241;1;t;f;f;758;2aeea825-52ed-45fd-943d-7a378c194316",
+			"0;9241;3;f;f;f;759;d8ae9153-6fbe-473f-8536-19cfc7ab29d1",
+			"0;9240;1;f;f;f;759;d8ae9153-6fbe-473f-8536-19cfc7ab29d1",
+			"759;9240;2;f;f;t;0;d8ae9153-6fbe-473f-8536-19cfc7ab29d1",
+			"0;9240;3;t;f;f;760;e5bdcd9d-7703-465c-a467-0ab9d737949a",
+			"0;9239;1;t;f;f;760;e5bdcd9d-7703-465c-a467-0ab9d737949a",
+			"0;9239;3;f;f;f;761;e11b0cfb-d956-44e9-a528-efa0f94e341d",
+			"0;9238;1;f;f;f;761;e11b0cfb-d956-44e9-a528-efa0f94e341d",
+			"761;9238;2;f;f;t;0;e11b0cfb-d956-44e9-a528-efa0f94e341d",
+			"0;9238;3;t;f;f;762;5129c340-1026-47d1-ba8f-44c6c0dfbe9f",
+			"0;9237;1;t;f;f;762;5129c340-1026-47d1-ba8f-44c6c0dfbe9f",
+			"0;9237;3;f;f;f;763;9001b770-beee-4520-8517-f4d5cc1e9bd8",
+			"0;9236;1;f;f;f;763;9001b770-beee-4520-8517-f4d5cc1e9bd8",
+			"763;9236;2;f;f;t;0;9001b770-beee-4520-8517-f4d5cc1e9bd8",
+			"0;9236;3;t;f;f;764;7f9cfea5-705b-4d2a-9b10-c1c3bc452aa8",
+			"0;9235;1;t;f;f;764;7f9cfea5-705b-4d2a-9b10-c1c3bc452aa8",
+			"0;9235;3;f;f;f;765;63669baf-890c-425e-8f99-e5411dd8dc4f",
+			"0;9234;1;f;f;f;765;63669baf-890c-425e-8f99-e5411dd8dc4f",
+			"765;9234;2;f;f;t;0;63669baf-890c-425e-8f99-e5411dd8dc4f",
+			"0;9234;3;t;f;f;766;81d1e646-6ae3-4cc2-94de-0842de541d98",
+			"0;9233;1;t;f;f;766;81d1e646-6ae3-4cc2-94de-0842de541d98",
+			"0;9233;3;f;f;f;767;32d81f14-94aa-4b81-9217-705294e635d1",
+			"0;9232;1;f;f;f;767;32d81f14-94aa-4b81-9217-705294e635d1",
+			"767;9232;2;f;f;t;0;32d81f14-94aa-4b81-9217-705294e635d1",
+			"0;9232;3;t;f;f;768;f987106e-7b73-41c4-a51d-25863eda16b9",
+			"0;9231;1;t;f;f;768;f987106e-7b73-41c4-a51d-25863eda16b9",
+			"0;9231;3;f;f;f;769;b3d6a3fe-c636-439c-b0bf-fc706a201f75",
+			"0;9230;1;f;f;f;769;b3d6a3fe-c636-439c-b0bf-fc706a201f75",
+			"769;9230;2;f;f;t;0;b3d6a3fe-c636-439c-b0bf-fc706a201f75",
+			"0;9230;3;t;f;f;770;5f4f393d-13b3-41a4-b3ec-c349dd879fa8",
+			"0;9229;1;t;f;f;770;5f4f393d-13b3-41a4-b3ec-c349dd879fa8",
+			"0;9229;3;f;f;f;771;46f8fcd0-3423-49bf-9919-a4f12c580b8d",
+			"0;9228;1;f;f;f;771;46f8fcd0-3423-49bf-9919-a4f12c580b8d",
+			"771;9228;2;f;f;t;0;46f8fcd0-3423-49bf-9919-a4f12c580b8d",
+			"0;9228;3;t;f;f;772;9f7fd0be-8ef8-47ab-a9aa-eda174716b84",
+			"0;9227;1;t;f;f;772;9f7fd0be-8ef8-47ab-a9aa-eda174716b84",
+			"0;9227;3;f;f;f;773;0d3dba8c-7c1c-4e3b-a028-91323bd8df64",
+			"0;9226;1;f;f;f;773;0d3dba8c-7c1c-4e3b-a028-91323bd8df64",
+			"773;9226;2;f;f;t;0;0d3dba8c-7c1c-4e3b-a028-91323bd8df64",
+			"0;9226;3;t;f;f;774;318c58a9-836d-4ff3-8968-7c58fd60b7d7",
+			"0;9225;1;t;f;f;774;318c58a9-836d-4ff3-8968-7c58fd60b7d7",
+			"0;9225;3;f;f;f;775;cb1c957b-71c7-4a09-aef2-9d4094fda58d",
+			"0;9224;1;f;f;f;775;cb1c957b-71c7-4a09-aef2-9d4094fda58d",
+			"775;9224;2;f;f;t;0;cb1c957b-71c7-4a09-aef2-9d4094fda58d",
+			"0;9224;3;t;f;f;776;fd6fbf25-b681-4657-89c9-4ed28ffe972e",
+			"0;9223;1;t;f;f;776;fd6fbf25-b681-4657-89c9-4ed28ffe972e",
+			"0;9223;3;f;f;f;777;9aacbd96-1e0c-4ad1-a5a6-d1bc4551f0df",
+			"0;9222;1;f;f;f;777;9aacbd96-1e0c-4ad1-a5a6-d1bc4551f0df",
+			"777;9222;2;f;f;t;0;9aacbd96-1e0c-4ad1-a5a6-d1bc4551f0df",
+			"0;9222;3;t;f;f;778;aa53ea1b-faec-4b7b-83dc-efdaefcbccc5",
+			"0;9221;1;t;f;f;778;aa53ea1b-faec-4b7b-83dc-efdaefcbccc5",
+			"0;9221;3;t;f;f;779;8dd7cc7c-fcc7-4aec-b2b3-b203e8f2c96b",
+			"0;9220;1;t;f;f;779;8dd7cc7c-fcc7-4aec-b2b3-b203e8f2c96b",
+			"780;9220;2;f;f;t;0;7f7bad4e-2173-4e21-80b3-ad22419deac2",
+			"0;9220;3;t;f;f;780;7f7bad4e-2173-4e21-80b3-ad22419deac2",
+			"0;9219;1;t;f;f;780;7f7bad4e-2173-4e21-80b3-ad22419deac2",
+			"0;9219;3;f;f;f;781;2121df60-ca7f-4551-861c-a25a95a80ba6",
+			"0;9218;1;f;f;f;781;2121df60-ca7f-4551-861c-a25a95a80ba6",
+			"781;9218;2;f;f;t;0;2121df60-ca7f-4551-861c-a25a95a80ba6",
+			"0;9218;3;t;f;f;782;2f70ebfa-f9a3-426d-b800-3bd89c4b108e",
+			"0;9217;1;t;f;f;782;2f70ebfa-f9a3-426d-b800-3bd89c4b108e",
+			"0;9217;3;t;f;f;783;d7dcd599-12a3-4d23-a28f-96a1dde773e4",
+			"0;9216;1;t;f;f;783;d7dcd599-12a3-4d23-a28f-96a1dde773e4",
+			"784;9216;2;f;f;t;0;1c4501bc-5a49-4385-9a55-b0ef7af9704d",
+			"0;9216;3;t;f;f;784;1c4501bc-5a49-4385-9a55-b0ef7af9704d",
+			"0;9215;1;t;f;f;784;1c4501bc-5a49-4385-9a55-b0ef7af9704d",
+			"0;9215;3;f;f;f;785;b234f05d-a6da-4dc7-884d-005c5bd6f476",
+			"0;9214;1;f;f;f;785;b234f05d-a6da-4dc7-884d-005c5bd6f476",
+			"785;9214;2;f;f;t;0;b234f05d-a6da-4dc7-884d-005c5bd6f476",
+			"0;9214;3;t;f;f;786;ffaf02fc-2b43-487a-a04e-c599835b9c2a",
+			"0;9213;1;t;f;f;786;ffaf02fc-2b43-487a-a04e-c599835b9c2a",
+			"0;9213;3;t;f;f;787;7a3f2231-2fca-4153-8de7-b3a4a9853648",
+			"0;9212;1;t;f;f;787;7a3f2231-2fca-4153-8de7-b3a4a9853648",
+			"788;9212;2;f;f;t;0;ee6900ba-b1e7-428c-a3b9-6a64629cc506",
+			"0;9212;3;t;f;f;788;ee6900ba-b1e7-428c-a3b9-6a64629cc506",
+			"0;9211;1;t;f;f;788;ee6900ba-b1e7-428c-a3b9-6a64629cc506",
+			"0;9211;3;f;f;f;789;ee21a366-75f0-48a1-9f50-86281b37a3a1",
+			"0;9210;1;f;f;f;789;ee21a366-75f0-48a1-9f50-86281b37a3a1",
+			"789;9210;2;f;f;t;0;ee21a366-75f0-48a1-9f50-86281b37a3a1",
+			"0;9210;3;t;f;f;790;31c54794-e2f1-442e-bcf5-5bccbd2a878c",
+			"0;9209;1;t;f;f;790;31c54794-e2f1-442e-bcf5-5bccbd2a878c",
+			"0;9209;3;t;f;f;791;85d943ae-d0b7-47be-a027-32bb8482ec21",
+			"0;9208;1;t;f;f;791;85d943ae-d0b7-47be-a027-32bb8482ec21",
+			"792;9208;2;f;f;t;0;4f293a2d-3593-43e6-93ed-c0f495f2609c",
+			"0;9208;3;t;f;f;792;4f293a2d-3593-43e6-93ed-c0f495f2609c",
+			"0;9207;1;t;f;f;792;4f293a2d-3593-43e6-93ed-c0f495f2609c",
+			"0;9207;3;f;f;f;793;c3729bb5-69f1-437e-b5e4-eb89ba8720f6",
+			"0;9206;1;f;f;f;793;c3729bb5-69f1-437e-b5e4-eb89ba8720f6",
+			"793;9206;2;f;f;t;0;c3729bb5-69f1-437e-b5e4-eb89ba8720f6",
+			"0;9206;3;t;f;f;794;dd830491-cf61-442b-939d-ebdf1be72005",
+			"0;9205;1;t;f;f;794;dd830491-cf61-442b-939d-ebdf1be72005",
+			"0;9205;3;f;f;f;795;a82b7ea0-37c1-4c60-a583-8f5762c1f637",
+			"0;9204;1;f;f;f;795;a82b7ea0-37c1-4c60-a583-8f5762c1f637",
+			"795;9204;2;f;f;t;0;a82b7ea0-37c1-4c60-a583-8f5762c1f637",
+			"0;9204;3;t;f;f;796;c7161fdd-1f70-45f1-9952-5b24483499aa",
+			"0;9203;1;t;f;f;796;c7161fdd-1f70-45f1-9952-5b24483499aa",
+			"0;9203;3;f;f;f;797;bf5a8520-0ee2-47b7-b29c-5565e688690f",
+			"0;9202;1;f;f;f;797;bf5a8520-0ee2-47b7-b29c-5565e688690f",
+			"797;9202;2;f;f;t;0;bf5a8520-0ee2-47b7-b29c-5565e688690f",
+			"0;9202;3;t;f;f;798;0057dc2f-fa3e-448e-8a14-a21f956b2592",
+			"0;9201;1;t;f;f;798;0057dc2f-fa3e-448e-8a14-a21f956b2592",
+			"0;9201;3;f;f;f;799;4268b46b-ecd3-47b4-9117-5c25aca91008",
+			"0;9200;1;f;f;f;799;4268b46b-ecd3-47b4-9117-5c25aca91008",
+			"799;9200;2;f;f;t;0;4268b46b-ecd3-47b4-9117-5c25aca91008",
+			"0;9200;3;t;f;f;800;9e2e6ef6-236a-4aaa-84a7-b2a0d72bf1ee",
+			"0;9199;1;t;f;f;800;9e2e6ef6-236a-4aaa-84a7-b2a0d72bf1ee",
+			"0;9199;3;f;f;f;801;227f48ad-f990-4da9-8ae0-f0eab9c660ca",
+			"0;9198;1;f;f;f;801;227f48ad-f990-4da9-8ae0-f0eab9c660ca",
+			"801;9198;2;f;f;t;0;227f48ad-f990-4da9-8ae0-f0eab9c660ca",
+			"0;9198;3;t;f;f;802;57804b8b-13a0-48a8-99a9-3e2b11e942f6",
+			"0;9197;1;t;f;f;802;57804b8b-13a0-48a8-99a9-3e2b11e942f6",
+			"0;9197;3;f;f;f;803;27b5d545-2642-4fa4-83bc-a6a0cc5129ea",
+			"0;9196;1;f;f;f;803;27b5d545-2642-4fa4-83bc-a6a0cc5129ea",
+			"803;9196;2;f;f;t;0;27b5d545-2642-4fa4-83bc-a6a0cc5129ea",
+			"0;9196;3;t;f;f;804;f4445ab3-ed72-4275-b0b2-58d2bb7ce5e0",
+			"0;9195;1;t;f;f;804;f4445ab3-ed72-4275-b0b2-58d2bb7ce5e0",
+			"0;9195;3;f;f;f;805;cb3292f0-d058-4c48-b5f5-1d2111f4e139",
+			"0;9194;1;f;f;f;805;cb3292f0-d058-4c48-b5f5-1d2111f4e139",
+			"805;9194;2;f;f;t;0;cb3292f0-d058-4c48-b5f5-1d2111f4e139",
+			"0;9194;3;t;f;f;806;47e3b75b-b4e8-4729-9b91-155f2827917b",
+			"0;9193;1;t;f;f;806;47e3b75b-b4e8-4729-9b91-155f2827917b",
+			"0;9193;3;f;f;f;807;26169891-ab27-4a78-98b3-f21a53d7d417",
+			"0;9192;1;f;f;f;807;26169891-ab27-4a78-98b3-f21a53d7d417",
+			"807;9192;2;f;f;t;0;26169891-ab27-4a78-98b3-f21a53d7d417",
+			"0;9192;3;t;f;f;808;6a4c5ccc-a6f7-40e1-939f-362ddb368cfc",
+			"0;9191;1;t;f;f;808;6a4c5ccc-a6f7-40e1-939f-362ddb368cfc",
+			"0;9191;3;f;f;f;809;3c937659-30d8-47a9-beb8-d4543a30e5af",
+			"0;9190;1;f;f;f;809;3c937659-30d8-47a9-beb8-d4543a30e5af",
+			"809;9190;2;f;f;t;0;3c937659-30d8-47a9-beb8-d4543a30e5af",
+			"0;9190;3;t;f;f;810;2b545c93-10f1-45cf-be9c-21b3b9cf5565",
+			"0;9189;1;t;f;f;810;2b545c93-10f1-45cf-be9c-21b3b9cf5565",
+			"0;9189;3;f;f;f;811;c41456dc-f3ca-4b3a-a3d5-b72663c92b46",
+			"0;9188;1;f;f;f;811;c41456dc-f3ca-4b3a-a3d5-b72663c92b46",
+			"811;9188;2;f;f;t;0;c41456dc-f3ca-4b3a-a3d5-b72663c92b46",
+			"0;9188;3;t;f;f;812;07eacd91-bd9e-40e0-90c2-d81e862b12e1",
+			"0;9187;1;t;f;f;812;07eacd91-bd9e-40e0-90c2-d81e862b12e1",
+			"0;9187;3;f;f;f;813;b66444f2-5c05-48a4-8325-69a9ee7bdb98",
+			"0;9186;1;f;f;f;813;b66444f2-5c05-48a4-8325-69a9ee7bdb98",
+			"813;9186;2;f;f;t;0;b66444f2-5c05-48a4-8325-69a9ee7bdb98",
+			"0;9186;3;t;f;f;814;b4093ee8-4fe7-4255-8643-87548ce4dd59",
+			"0;9185;1;t;f;f;814;b4093ee8-4fe7-4255-8643-87548ce4dd59",
+			"0;9185;3;f;f;f;815;3e1b2327-ae0b-45f3-bfe7-2a6d8a871b1b",
+			"0;9184;1;f;f;f;815;3e1b2327-ae0b-45f3-bfe7-2a6d8a871b1b",
+			"815;9184;2;f;f;t;0;3e1b2327-ae0b-45f3-bfe7-2a6d8a871b1b",
+			"0;9184;3;t;f;f;816;a76d1773-213a-464c-81b2-e4e3e7519853",
+			"0;9183;1;t;f;f;816;a76d1773-213a-464c-81b2-e4e3e7519853",
+			"0;9183;3;f;f;f;817;33a725db-f79a-45bc-8059-09a78cdb3ba3",
+			"0;9182;1;f;f;f;817;33a725db-f79a-45bc-8059-09a78cdb3ba3",
+			"817;9182;2;f;f;t;0;33a725db-f79a-45bc-8059-09a78cdb3ba3",
+			"0;9182;3;t;f;f;818;98e01ece-fcf3-4695-ad06-674c0fd75c9a",
+			"0;9181;1;t;f;f;818;98e01ece-fcf3-4695-ad06-674c0fd75c9a",
+			"0;9181;3;f;f;f;819;1503d1aa-1c97-4645-9a39-8a60e2ad20c9",
+			"0;9180;1;f;f;f;819;1503d1aa-1c97-4645-9a39-8a60e2ad20c9",
+			"819;9180;2;f;f;t;0;1503d1aa-1c97-4645-9a39-8a60e2ad20c9",
+			"0;9180;3;t;f;f;820;f8e384b3-370e-4847-a4f0-26ac090d3237",
+			"0;9179;1;t;f;f;820;f8e384b3-370e-4847-a4f0-26ac090d3237",
+			"0;9179;3;f;f;f;821;756768c6-8110-4c6e-b22d-77bd7e3a3db8",
+			"0;9178;1;f;f;f;821;756768c6-8110-4c6e-b22d-77bd7e3a3db8",
+			"821;9178;2;f;f;t;0;756768c6-8110-4c6e-b22d-77bd7e3a3db8",
+			"0;9178;3;t;f;f;822;e296a24f-e07c-4886-9552-303d1b87a9c5",
+			"0;9177;1;t;f;f;822;e296a24f-e07c-4886-9552-303d1b87a9c5",
+			"0;9177;3;f;f;f;823;12013652-ae67-4564-a905-c3f9e4c53f3f",
+			"0;9176;1;f;f;f;823;12013652-ae67-4564-a905-c3f9e4c53f3f",
+			"823;9176;2;f;f;t;0;12013652-ae67-4564-a905-c3f9e4c53f3f",
+			"0;9176;3;t;f;f;824;f30f40b7-853a-4145-966b-2c96a76df21b",
+			"0;9175;1;t;f;f;824;f30f40b7-853a-4145-966b-2c96a76df21b",
+			"0;9175;3;f;f;f;825;cc9ec025-6124-4be3-9f07-791cb828c0c2",
+			"0;9174;1;f;f;f;825;cc9ec025-6124-4be3-9f07-791cb828c0c2",
+			"825;9174;2;f;f;t;0;cc9ec025-6124-4be3-9f07-791cb828c0c2",
+			"0;9174;3;t;f;f;826;e79ffbef-0c3b-4eb2-8988-68be43b3d2c5",
+			"0;9173;1;t;f;f;826;e79ffbef-0c3b-4eb2-8988-68be43b3d2c5",
+			"0;9173;3;f;f;f;827;0aef493d-13dc-4952-a0ac-f3dd1db41d85",
+			"0;9172;1;f;f;f;827;0aef493d-13dc-4952-a0ac-f3dd1db41d85",
+			"827;9172;2;f;f;t;0;0aef493d-13dc-4952-a0ac-f3dd1db41d85",
+			"0;9172;3;t;f;f;828;4c456202-7871-4a01-94a8-4b9938e8bcd5",
+			"0;9171;1;t;f;f;828;4c456202-7871-4a01-94a8-4b9938e8bcd5",
+			"0;9171;3;t;f;f;829;21ded0c6-9697-408a-aadc-7d2d57dbcf90",
+			"0;9170;1;t;f;f;829;21ded0c6-9697-408a-aadc-7d2d57dbcf90",
+			"830;9170;2;f;f;t;0;58f49282-4180-4b50-abc0-dd609af66e70",
+			"0;9170;3;t;f;f;830;58f49282-4180-4b50-abc0-dd609af66e70",
+			"0;9169;1;t;f;f;830;58f49282-4180-4b50-abc0-dd609af66e70",
+			"0;9169;3;f;f;f;831;90535582-19e8-483f-bb8a-4c6c40d6167a",
+			"0;9168;1;f;f;f;831;90535582-19e8-483f-bb8a-4c6c40d6167a",
+			"831;9168;2;f;f;t;0;90535582-19e8-483f-bb8a-4c6c40d6167a",
+			"0;9168;3;t;f;f;832;7d9b4e15-c8ff-4343-8cd3-c8a0db20701a",
+			"0;9167;1;t;f;f;832;7d9b4e15-c8ff-4343-8cd3-c8a0db20701a",
+			"0;9167;3;f;f;f;833;376a9cc6-f788-4fc0-9199-ac31c5f07411",
+			"0;9166;1;f;f;f;833;376a9cc6-f788-4fc0-9199-ac31c5f07411",
+			"833;9166;2;f;f;t;0;376a9cc6-f788-4fc0-9199-ac31c5f07411",
+			"0;9166;3;t;f;f;834;96cbe101-1fa0-46b0-a4be-d1465c959235",
+			"0;9165;1;t;f;f;834;96cbe101-1fa0-46b0-a4be-d1465c959235",
+			"0;9165;3;f;f;f;835;33241309-93c1-4e02-a91a-5bdb69ff2a65",
+			"0;9164;1;f;f;f;835;33241309-93c1-4e02-a91a-5bdb69ff2a65",
+			"835;9164;2;f;f;t;0;33241309-93c1-4e02-a91a-5bdb69ff2a65",
+			"0;9164;3;t;f;f;836;a8ed6614-4a63-45d3-bcce-e888561d966e",
+			"0;9163;1;t;f;f;836;a8ed6614-4a63-45d3-bcce-e888561d966e",
+			"0;9163;3;f;f;f;837;2428fe3c-8042-468b-81bb-847acbc53efa",
+			"0;9162;1;f;f;f;837;2428fe3c-8042-468b-81bb-847acbc53efa",
+			"837;9162;2;f;f;t;0;2428fe3c-8042-468b-81bb-847acbc53efa",
+			"0;9162;3;t;f;f;838;3b22fc13-ca51-4aea-9416-c46f968b59af",
+			"0;9161;1;t;f;f;838;3b22fc13-ca51-4aea-9416-c46f968b59af",
+			"0;9161;3;f;f;f;839;8b2dcc30-1d34-4122-9802-ed42a0ad4472",
+			"0;9160;1;f;f;f;839;8b2dcc30-1d34-4122-9802-ed42a0ad4472",
+			"839;9160;2;f;f;t;0;8b2dcc30-1d34-4122-9802-ed42a0ad4472",
+			"0;9160;3;t;f;f;840;df8fe420-c1b3-45e0-aa90-c6aaef237ac5",
+			"0;9159;1;t;f;f;840;df8fe420-c1b3-45e0-aa90-c6aaef237ac5",
+			"0;9159;3;t;f;f;841;d0746357-ac5b-4b94-9ff3-1ed50a769e55",
+			"0;9158;1;t;f;f;841;d0746357-ac5b-4b94-9ff3-1ed50a769e55",
+			"842;9158;2;f;f;t;0;db24d694-6d82-45e9-8da4-7fe3297c2102",
+			"0;9158;3;t;f;f;842;db24d694-6d82-45e9-8da4-7fe3297c2102",
+			"0;9157;1;t;f;f;842;db24d694-6d82-45e9-8da4-7fe3297c2102",
+			"0;9157;3;f;f;f;843;efeefabe-7a5b-411b-b435-1db14063f3a7",
+			"0;9156;1;f;f;f;843;efeefabe-7a5b-411b-b435-1db14063f3a7",
+			"843;9156;2;f;f;t;0;efeefabe-7a5b-411b-b435-1db14063f3a7",
+			"0;9156;3;t;f;f;844;f6c8dbe3-8aae-4a38-b25f-a8a5c73e48c2",
+			"0;9155;1;t;f;f;844;f6c8dbe3-8aae-4a38-b25f-a8a5c73e48c2",
+			"0;9155;3;f;f;f;845;1b5e7ec1-d3df-4846-8fa9-2b94b07ad50b",
+			"0;9154;1;f;f;f;845;1b5e7ec1-d3df-4846-8fa9-2b94b07ad50b",
+			"845;9154;2;f;f;t;0;1b5e7ec1-d3df-4846-8fa9-2b94b07ad50b",
+			"0;9154;3;t;f;f;846;0063e646-2513-4388-8d20-fecd276b5874",
+			"0;9153;1;t;f;f;846;0063e646-2513-4388-8d20-fecd276b5874",
+			"0;9153;3;f;f;f;847;5ed7a218-8201-4850-be69-1b5d157b0a7e",
+			"0;9152;1;f;f;f;847;5ed7a218-8201-4850-be69-1b5d157b0a7e",
+			"847;9152;2;f;f;t;0;5ed7a218-8201-4850-be69-1b5d157b0a7e",
+			"0;9152;3;t;f;f;848;c5327c49-62f2-4702-95ea-c2a8f6392e86",
+			"0;9151;1;t;f;f;848;c5327c49-62f2-4702-95ea-c2a8f6392e86",
+			"0;9151;3;f;f;f;849;f6247c82-24ca-4fab-a5f0-513235ff27c7",
+			"0;9150;1;f;f;f;849;f6247c82-24ca-4fab-a5f0-513235ff27c7",
+			"849;9150;2;f;f;t;0;f6247c82-24ca-4fab-a5f0-513235ff27c7",
+			"0;9150;3;t;f;f;850;dc7d8d5e-e438-4a9f-87cd-13cc44f9d3f1",
+			"0;9149;1;t;f;f;850;dc7d8d5e-e438-4a9f-87cd-13cc44f9d3f1",
+			"0;9149;3;f;f;f;851;b449ff9e-baa0-4ff4-8dc6-8fc881fec814",
+			"0;9148;1;f;f;f;851;b449ff9e-baa0-4ff4-8dc6-8fc881fec814",
+			"851;9148;2;f;f;t;0;b449ff9e-baa0-4ff4-8dc6-8fc881fec814",
+			"0;9148;3;t;f;f;852;adecf9f6-1f3b-42d1-87b2-023e8d09e9b1",
+			"0;9147;1;t;f;f;852;adecf9f6-1f3b-42d1-87b2-023e8d09e9b1",
+			"0;9147;3;f;f;f;853;dd01f1a9-d10b-478b-b9a3-dc0bdfaaf30c",
+			"0;9146;1;f;f;f;853;dd01f1a9-d10b-478b-b9a3-dc0bdfaaf30c",
+			"853;9146;2;f;f;t;0;dd01f1a9-d10b-478b-b9a3-dc0bdfaaf30c",
+			"0;9146;3;t;f;f;854;105ec791-8387-4e7d-8947-798af2644a6c",
+			"0;9145;1;t;f;f;854;105ec791-8387-4e7d-8947-798af2644a6c",
+			"0;9145;3;f;f;f;855;6c28682e-cfca-4540-ae40-9e56255d4278",
+			"0;9144;1;f;f;f;855;6c28682e-cfca-4540-ae40-9e56255d4278",
+			"855;9144;2;f;f;t;0;6c28682e-cfca-4540-ae40-9e56255d4278",
+			"0;9144;3;t;f;f;856;c750d23f-1785-4e4c-93aa-251d78abdf62",
+			"0;9143;1;t;f;f;856;c750d23f-1785-4e4c-93aa-251d78abdf62",
+			"0;9143;3;f;f;f;857;dc070f25-abeb-4b0f-9c2b-c9d3234e35d7",
+			"0;9142;1;f;f;f;857;dc070f25-abeb-4b0f-9c2b-c9d3234e35d7",
+			"857;9142;2;f;f;t;0;dc070f25-abeb-4b0f-9c2b-c9d3234e35d7",
+			"0;9142;3;t;f;f;858;00908ed8-2894-4a70-a826-3995ec85bf9a",
+			"0;9141;1;t;f;f;858;00908ed8-2894-4a70-a826-3995ec85bf9a",
+			"0;9141;3;t;f;f;859;41d00ac6-04e2-4518-b383-080f77c030da",
+			"0;9140;1;t;f;f;859;41d00ac6-04e2-4518-b383-080f77c030da",
+			"0;9140;3;f;f;f;860;2385c604-bdbb-4d64-8b84-b75bb81c5ed5",
+			"0;9139;1;f;f;f;860;2385c604-bdbb-4d64-8b84-b75bb81c5ed5",
+			"860;9139;2;f;f;t;0;2385c604-bdbb-4d64-8b84-b75bb81c5ed5",
+			"0;9139;3;f;f;f;861;51d9d812-44d2-42bd-9355-27f7ccccf7c8",
+			"0;9138;1;f;f;f;861;51d9d812-44d2-42bd-9355-27f7ccccf7c8",
+			"861;9138;2;f;f;t;0;51d9d812-44d2-42bd-9355-27f7ccccf7c8",
+			"0;9138;3;t;f;f;862;5fd24336-656a-4df7-a7e3-d54b35495d51",
+			"0;9137;1;t;f;f;862;5fd24336-656a-4df7-a7e3-d54b35495d51",
+			"0;9137;3;t;f;f;863;185eca20-1d6b-4655-975f-2ce233787417",
+			"0;9136;1;t;f;f;863;185eca20-1d6b-4655-975f-2ce233787417",
+			"864;9136;2;f;f;t;0;ebcc6ccf-4861-424e-a37f-aa96df675397",
+			"0;9136;3;t;f;f;864;ebcc6ccf-4861-424e-a37f-aa96df675397",
+			"0;9135;1;t;f;f;864;ebcc6ccf-4861-424e-a37f-aa96df675397",
+			"0;9135;3;f;f;f;865;8e14ee0b-4182-498e-9cf9-8103919133cc",
+			"0;9134;1;f;f;f;865;8e14ee0b-4182-498e-9cf9-8103919133cc",
+			"865;9134;2;f;f;t;0;8e14ee0b-4182-498e-9cf9-8103919133cc",
+			"0;9134;3;t;f;f;866;d01a4e49-6449-4eaa-ad83-a804656b3320",
+			"0;9133;1;t;f;f;866;d01a4e49-6449-4eaa-ad83-a804656b3320",
+			"0;9133;3;t;f;f;867;8905d35f-108e-4468-a61e-5365825a59fe",
+			"0;9132;1;t;f;f;867;8905d35f-108e-4468-a61e-5365825a59fe",
+			"868;9132;2;f;f;t;0;927c7e97-8067-4039-bdaf-62feb3aec744",
+			"0;9132;3;t;f;f;868;927c7e97-8067-4039-bdaf-62feb3aec744",
+			"0;9131;1;t;f;f;868;927c7e97-8067-4039-bdaf-62feb3aec744",
+			"0;9131;3;f;f;f;869;d35e7210-c643-417b-ab11-df47734442d2",
+			"0;9130;1;f;f;f;869;d35e7210-c643-417b-ab11-df47734442d2",
+			"869;9130;2;f;f;t;0;d35e7210-c643-417b-ab11-df47734442d2",
+			"0;9130;3;t;f;f;870;5865ca32-522f-46e7-9014-41bd9b47757f",
+			"0;9129;1;t;f;f;870;5865ca32-522f-46e7-9014-41bd9b47757f",
+			"0;9129;3;f;f;f;871;a8407159-3fa1-4552-9e03-83845db2d97a",
+			"0;9128;1;f;f;f;871;a8407159-3fa1-4552-9e03-83845db2d97a",
+			"871;9128;2;f;f;t;0;a8407159-3fa1-4552-9e03-83845db2d97a",
+			"0;9128;3;t;f;f;872;b65384fb-91ae-471e-a159-2f5eb3be2fd1",
+			"0;9127;1;t;f;f;872;b65384fb-91ae-471e-a159-2f5eb3be2fd1",
+			"0;9127;3;f;f;f;873;5dcba171-0fbe-408c-ba0a-41d79242695d",
+			"0;9126;1;f;f;f;873;5dcba171-0fbe-408c-ba0a-41d79242695d",
+			"873;9126;2;f;f;t;0;5dcba171-0fbe-408c-ba0a-41d79242695d",
+			"0;9126;3;t;f;f;874;8441b9fe-c292-424b-ad02-49338fbc7c87",
+			"0;9125;1;t;f;f;874;8441b9fe-c292-424b-ad02-49338fbc7c87",
+			"0;9125;3;f;f;f;875;99ada401-60dc-4439-9137-05d62c5dd6cc",
+			"0;9124;1;f;f;f;875;99ada401-60dc-4439-9137-05d62c5dd6cc",
+			"875;9124;2;f;f;t;0;99ada401-60dc-4439-9137-05d62c5dd6cc",
+			"0;9124;3;t;f;f;876;32611694-df6c-4f4d-8b26-f698044a6a98",
+			"0;9123;1;t;f;f;876;32611694-df6c-4f4d-8b26-f698044a6a98",
+			"0;9123;3;f;f;f;877;a15dd438-4180-4162-a774-35998c3c6ba3",
+			"0;9122;1;f;f;f;877;a15dd438-4180-4162-a774-35998c3c6ba3",
+			"877;9122;2;f;f;t;0;a15dd438-4180-4162-a774-35998c3c6ba3",
+			"0;9122;3;t;f;f;878;b1a36403-e661-4fff-abe1-7438e8fb9995",
+			"0;9121;1;t;f;f;878;b1a36403-e661-4fff-abe1-7438e8fb9995",
+			"0;9121;3;f;f;f;879;9a612395-303e-4a4c-b9f6-401e2f2de834",
+			"0;9120;1;f;f;f;879;9a612395-303e-4a4c-b9f6-401e2f2de834",
+			"879;9120;2;f;f;t;0;9a612395-303e-4a4c-b9f6-401e2f2de834",
+			"0;9120;3;t;f;f;880;7a56d9fd-ecd9-4f1f-8f92-c9c1ff67f0b8",
+			"0;9119;1;t;f;f;880;7a56d9fd-ecd9-4f1f-8f92-c9c1ff67f0b8",
+			"0;9119;3;f;f;f;881;247ef532-dc7b-4e74-9ad4-2e327fdbbcf3",
+			"0;9118;1;f;f;f;881;247ef532-dc7b-4e74-9ad4-2e327fdbbcf3",
+			"881;9118;2;f;f;t;0;247ef532-dc7b-4e74-9ad4-2e327fdbbcf3",
+			"0;9118;3;t;f;f;882;e922b840-bc78-48d5-8648-6921b0039619",
+			"0;9117;1;t;f;f;882;e922b840-bc78-48d5-8648-6921b0039619",
+			"0;9117;3;f;f;f;883;a08888b1-877d-42e4-b397-9d9f8a99107e",
+			"0;9116;1;f;f;f;883;a08888b1-877d-42e4-b397-9d9f8a99107e",
+			"883;9116;2;f;f;t;0;a08888b1-877d-42e4-b397-9d9f8a99107e",
+			"0;9116;3;t;f;f;884;c4dc5a64-c97f-4a3f-bc62-ab59689fcca9",
+			"0;9115;1;t;f;f;884;c4dc5a64-c97f-4a3f-bc62-ab59689fcca9",
+			"0;9115;3;f;f;f;885;2664ab55-6448-44b6-98b3-56bf0b46393c",
+			"0;9114;1;f;f;f;885;2664ab55-6448-44b6-98b3-56bf0b46393c",
+			"885;9114;2;f;f;t;0;2664ab55-6448-44b6-98b3-56bf0b46393c",
+			"0;9114;3;t;f;f;886;963f6bec-632f-4bac-9552-ef9a01f236d7",
+			"0;9113;1;t;f;f;886;963f6bec-632f-4bac-9552-ef9a01f236d7",
+			"0;9113;3;f;f;f;887;d3cb334a-a548-46ce-9350-8fef1f8c52fa",
+			"0;9112;1;f;f;f;887;d3cb334a-a548-46ce-9350-8fef1f8c52fa",
+			"887;9112;2;f;f;t;0;d3cb334a-a548-46ce-9350-8fef1f8c52fa",
+			"0;9112;3;t;f;f;888;7323fdcc-51a1-43d1-a489-07a03b6de939",
+			"0;9111;1;t;f;f;888;7323fdcc-51a1-43d1-a489-07a03b6de939",
+			"0;9111;3;f;f;f;889;c338db74-ac32-4956-8ed6-844a80d331d5",
+			"0;9110;1;f;f;f;889;c338db74-ac32-4956-8ed6-844a80d331d5",
+			"889;9110;2;f;f;t;0;c338db74-ac32-4956-8ed6-844a80d331d5",
+			"0;9110;3;t;f;f;890;0fdd3dbe-4d33-4b89-9e17-3d75cf0a238b",
+			"0;9109;1;t;f;f;890;0fdd3dbe-4d33-4b89-9e17-3d75cf0a238b",
+			"0;9109;3;f;f;f;891;55b75477-b37f-42aa-9cdc-3d18b7d45885",
+			"0;9108;1;f;f;f;891;55b75477-b37f-42aa-9cdc-3d18b7d45885",
+			"891;9108;2;f;f;t;0;55b75477-b37f-42aa-9cdc-3d18b7d45885",
+			"0;9108;3;t;f;f;892;f812eb90-27a5-4b3d-bfb9-a23e0df73a5d",
+			"0;9107;1;t;f;f;892;f812eb90-27a5-4b3d-bfb9-a23e0df73a5d",
+			"0;9107;3;f;f;f;893;d345233c-8bd0-441c-97ac-55db54409ffc",
+			"0;9106;1;f;f;f;893;d345233c-8bd0-441c-97ac-55db54409ffc",
+			"893;9106;2;f;f;t;0;d345233c-8bd0-441c-97ac-55db54409ffc",
+			"0;9106;3;t;f;f;894;edc302d1-b8ec-4f59-8ff7-e6e515f67dc1",
+			"0;9105;1;t;f;f;894;edc302d1-b8ec-4f59-8ff7-e6e515f67dc1",
+			"0;9105;3;f;f;f;895;8c160fcb-2bca-42f0-8bf7-623d058d1422",
+			"0;9104;1;f;f;f;895;8c160fcb-2bca-42f0-8bf7-623d058d1422",
+			"895;9104;2;f;f;t;0;8c160fcb-2bca-42f0-8bf7-623d058d1422",
+			"0;9104;3;t;f;f;896;f4ef13b1-681d-4fb2-85ae-208b75183aae",
+			"0;9103;1;t;f;f;896;f4ef13b1-681d-4fb2-85ae-208b75183aae",
+			"0;9103;3;f;f;f;897;267e3d91-27e6-48aa-a5db-0148d782d965",
+			"0;9102;1;f;f;f;897;267e3d91-27e6-48aa-a5db-0148d782d965",
+			"897;9102;2;f;f;t;0;267e3d91-27e6-48aa-a5db-0148d782d965",
+			"0;9102;3;t;f;f;898;0dea0b6e-9acb-48af-b7be-9f97c4f1677c",
+			"0;9101;1;t;f;f;898;0dea0b6e-9acb-48af-b7be-9f97c4f1677c",
+			"0;9101;3;f;f;f;899;58595197-7463-435c-a3d9-6e2b4c4577b0",
+			"0;9100;1;f;f;f;899;58595197-7463-435c-a3d9-6e2b4c4577b0",
+			"899;9100;2;f;f;t;0;58595197-7463-435c-a3d9-6e2b4c4577b0",
+			"0;9100;3;t;f;f;900;cb2985cc-54a2-401b-ae32-8aa2eb0e76e4",
+			"0;9099;1;t;f;f;900;cb2985cc-54a2-401b-ae32-8aa2eb0e76e4",
+			"0;9099;3;f;f;f;901;2de354e1-5be2-4c55-8d77-37d2c983bed7",
+			"0;9098;1;f;f;f;901;2de354e1-5be2-4c55-8d77-37d2c983bed7",
+			"901;9098;2;f;f;t;0;2de354e1-5be2-4c55-8d77-37d2c983bed7",
+			"0;9098;3;t;f;f;902;d14cae5f-ebfa-43a0-9509-e147a7b44c4d",
+			"0;9097;1;t;f;f;902;d14cae5f-ebfa-43a0-9509-e147a7b44c4d",
+			"0;9097;3;f;f;f;903;b3917254-bc2b-4dec-9903-16da369881fb",
+			"0;9096;1;f;f;f;903;b3917254-bc2b-4dec-9903-16da369881fb",
+			"903;9096;2;f;f;t;0;b3917254-bc2b-4dec-9903-16da369881fb",
+			"0;9096;3;t;f;f;904;a3d0bb67-59a1-4231-84e3-486b78baebc4",
+			"0;9095;1;t;f;f;904;a3d0bb67-59a1-4231-84e3-486b78baebc4",
+			"0;9095;3;f;f;f;905;4036ac04-5705-4ebf-af10-48582a8fa44f",
+			"0;9094;1;f;f;f;905;4036ac04-5705-4ebf-af10-48582a8fa44f",
+			"905;9094;2;f;f;t;0;4036ac04-5705-4ebf-af10-48582a8fa44f",
+			"0;9094;3;t;f;f;906;5613430d-c7f2-4f37-a003-788f73b3be41",
+			"0;9093;1;t;f;f;906;5613430d-c7f2-4f37-a003-788f73b3be41",
+			"0;9093;3;f;f;f;907;42022fc4-d9cf-45a1-ac3d-20472fb3e3c9",
+			"0;9092;1;f;f;f;907;42022fc4-d9cf-45a1-ac3d-20472fb3e3c9",
+			"907;9092;2;f;f;t;0;42022fc4-d9cf-45a1-ac3d-20472fb3e3c9",
+			"0;9092;3;t;f;f;908;f184a9c9-a99c-4d32-bd6d-150fbdc30cc9",
+			"0;9091;1;t;f;f;908;f184a9c9-a99c-4d32-bd6d-150fbdc30cc9",
+			"0;9091;3;f;f;f;909;18b6ccbc-0f5c-416a-9e5f-a76929eee3e7",
+			"0;9090;1;f;f;f;909;18b6ccbc-0f5c-416a-9e5f-a76929eee3e7",
+			"909;9090;2;f;f;t;0;18b6ccbc-0f5c-416a-9e5f-a76929eee3e7",
+			"0;9090;3;t;f;f;910;b30230e3-44e8-4f7f-b76d-33de410b2b83",
+			"0;9089;1;t;f;f;910;b30230e3-44e8-4f7f-b76d-33de410b2b83",
+			"0;9089;3;f;f;f;911;115bc6e7-bf13-46dc-a40d-3907d560696e",
+			"0;9088;1;f;f;f;911;115bc6e7-bf13-46dc-a40d-3907d560696e",
+			"911;9088;2;f;f;t;0;115bc6e7-bf13-46dc-a40d-3907d560696e",
+			"0;9088;3;t;f;f;912;b1dbe6c3-9832-447c-801c-f0fbe5287155",
+			"0;9087;1;t;f;f;912;b1dbe6c3-9832-447c-801c-f0fbe5287155",
+			"0;9087;3;f;f;f;913;a6794128-5ade-42ab-9f0d-ce0c90dabf1a",
+			"0;9086;1;f;f;f;913;a6794128-5ade-42ab-9f0d-ce0c90dabf1a",
+			"913;9086;2;f;f;t;0;a6794128-5ade-42ab-9f0d-ce0c90dabf1a",
+			"0;9086;3;t;f;f;914;60262683-8e90-4f2d-934a-7f33c30567ef",
+			"0;9085;1;t;f;f;914;60262683-8e90-4f2d-934a-7f33c30567ef",
+			"0;9085;3;t;f;f;915;65e4a3e3-4401-4150-ade2-967090772c57",
+			"0;9084;1;t;f;f;915;65e4a3e3-4401-4150-ade2-967090772c57",
+			"916;9084;2;f;f;t;0;a7bf3322-0f1d-4cdc-b223-b25cac821777",
+			"0;9084;3;t;f;f;916;a7bf3322-0f1d-4cdc-b223-b25cac821777",
+			"0;9083;1;t;f;f;916;a7bf3322-0f1d-4cdc-b223-b25cac821777",
+			"0;9083;3;f;f;f;917;537e3138-fe35-4de1-b0da-e2b534b73905",
+			"0;9082;1;f;f;f;917;537e3138-fe35-4de1-b0da-e2b534b73905",
+			"917;9082;2;f;f;t;0;537e3138-fe35-4de1-b0da-e2b534b73905",
+			"0;9082;3;t;f;f;918;bc5c8576-2238-4a29-b21d-64b62f6bc6a0",
+			"0;9081;1;t;f;f;918;bc5c8576-2238-4a29-b21d-64b62f6bc6a0",
+			"0;9081;3;t;f;f;919;ba444d8c-169a-4234-bc32-e55ece47c92b",
+			"0;9080;1;t;f;f;919;ba444d8c-169a-4234-bc32-e55ece47c92b",
+			"920;9080;2;f;f;t;0;f89d9eca-25d9-4146-9d80-fb7787c3130a",
+			"0;9080;3;t;f;f;920;f89d9eca-25d9-4146-9d80-fb7787c3130a",
+			"0;9079;1;t;f;f;920;f89d9eca-25d9-4146-9d80-fb7787c3130a",
+			"0;9079;3;f;f;f;921;d100c1e9-5426-4cd2-a533-c79037f1ecd1",
+			"0;9078;1;f;f;f;921;d100c1e9-5426-4cd2-a533-c79037f1ecd1",
+			"921;9078;2;f;f;t;0;d100c1e9-5426-4cd2-a533-c79037f1ecd1",
+			"0;9078;3;t;f;f;922;6e461967-b710-422d-83db-975c949135a2",
+			"0;9077;1;t;f;f;922;6e461967-b710-422d-83db-975c949135a2",
+			"0;9077;3;t;f;f;923;6372fe9d-4c42-4f17-a401-e7356b5ce813",
+			"0;9076;1;t;f;f;923;6372fe9d-4c42-4f17-a401-e7356b5ce813",
+			"924;9076;2;f;f;t;0;0dd2f123-c45b-4dab-99b5-3d26c45c959d",
+			"0;9076;3;t;f;f;924;0dd2f123-c45b-4dab-99b5-3d26c45c959d",
+			"0;9075;1;t;f;f;924;0dd2f123-c45b-4dab-99b5-3d26c45c959d",
+			"0;9075;3;f;f;f;925;1800242f-767b-4ecd-8eda-8fa77d0b9fc1",
+			"0;9074;1;f;f;f;925;1800242f-767b-4ecd-8eda-8fa77d0b9fc1",
+			"925;9074;2;f;f;t;0;1800242f-767b-4ecd-8eda-8fa77d0b9fc1",
+			"0;9074;3;t;f;f;926;f50e302d-861f-483b-a17d-a61b43ac1854",
+			"0;9073;1;t;f;f;926;f50e302d-861f-483b-a17d-a61b43ac1854",
+			"0;9073;3;t;f;f;927;a111cff2-ed6f-4538-8a5e-82966e40fb0a",
+			"0;9072;1;t;f;f;927;a111cff2-ed6f-4538-8a5e-82966e40fb0a",
+			"928;9072;2;f;f;t;0;ed51f919-4b48-4983-81ad-82b00ed66f55",
+			"0;9072;3;t;f;f;928;ed51f919-4b48-4983-81ad-82b00ed66f55",
+			"0;9071;1;t;f;f;928;ed51f919-4b48-4983-81ad-82b00ed66f55",
+			"0;9071;3;f;f;f;929;d3f70da3-0d81-4059-a1e5-17898f148398",
+			"0;9070;1;f;f;f;929;d3f70da3-0d81-4059-a1e5-17898f148398",
+			"929;9070;2;f;f;t;0;d3f70da3-0d81-4059-a1e5-17898f148398",
+			"0;9070;3;t;f;f;930;b2364685-4bbc-4a8b-b044-d7eafc1d1b20",
+			"0;9069;1;t;f;f;930;b2364685-4bbc-4a8b-b044-d7eafc1d1b20",
+			"0;9069;3;t;f;f;931;911c0dcd-297f-46c4-a118-adff928a8d8b",
+			"0;9068;1;t;f;f;931;911c0dcd-297f-46c4-a118-adff928a8d8b",
+			"932;9068;2;f;f;t;0;6275d780-2658-448d-91a6-22f09d4b9aaf",
+			"0;9068;3;t;f;f;932;6275d780-2658-448d-91a6-22f09d4b9aaf",
+			"0;9067;1;t;f;f;932;6275d780-2658-448d-91a6-22f09d4b9aaf",
+			"0;9067;3;f;f;f;933;6c26b152-2b18-49d1-b4f0-a73a4680b2b4",
+			"0;9066;1;f;f;f;933;6c26b152-2b18-49d1-b4f0-a73a4680b2b4",
+			"933;9066;2;f;f;t;0;6c26b152-2b18-49d1-b4f0-a73a4680b2b4",
+			"0;9066;3;t;f;f;934;c3f07a71-9605-48b6-a1d0-ca774072041f",
+			"0;9065;1;t;f;f;934;c3f07a71-9605-48b6-a1d0-ca774072041f",
+			"0;9065;3;t;f;f;935;8ed56ef1-4ce6-448c-a5df-747f5044b371",
+			"0;9064;1;t;f;f;935;8ed56ef1-4ce6-448c-a5df-747f5044b371",
+			"0;9064;3;f;f;f;936;68ab23e7-b1c4-4bb6-8378-e16edb18364a",
+			"0;9063;1;f;f;f;936;68ab23e7-b1c4-4bb6-8378-e16edb18364a",
+			"936;9063;2;f;f;t;0;68ab23e7-b1c4-4bb6-8378-e16edb18364a",
+			"0;9063;3;f;f;f;937;e3e32194-d5bc-4862-9cc4-3d6ce6ef4eef",
+			"0;9062;1;f;f;f;937;e3e32194-d5bc-4862-9cc4-3d6ce6ef4eef",
+			"937;9062;2;f;f;t;0;e3e32194-d5bc-4862-9cc4-3d6ce6ef4eef",
+			"0;9062;3;t;f;f;938;b1cf65d5-244a-4c86-9ebe-c4da655a45b9",
+			"0;9061;1;t;f;f;938;b1cf65d5-244a-4c86-9ebe-c4da655a45b9",
+			"0;9061;3;f;f;f;939;48fa9af5-9d86-4922-bbf0-d0a68258bd6b",
+			"0;9060;1;f;f;f;939;48fa9af5-9d86-4922-bbf0-d0a68258bd6b",
+			"939;9060;2;f;f;t;0;48fa9af5-9d86-4922-bbf0-d0a68258bd6b",
+			"0;9060;3;t;f;f;940;b2dd0d9c-4d0a-4523-b3ff-7e63d5bd67ac",
+			"0;9059;1;t;f;f;940;b2dd0d9c-4d0a-4523-b3ff-7e63d5bd67ac",
+			"0;9059;3;f;f;f;941;df5e1877-b60b-4f36-8045-1b0dbf504b12",
+			"0;9058;1;f;f;f;941;df5e1877-b60b-4f36-8045-1b0dbf504b12",
+			"941;9058;2;f;f;t;0;df5e1877-b60b-4f36-8045-1b0dbf504b12",
+			"0;9058;3;t;f;f;942;4736cc1d-4584-4f35-b670-75c89b79becc",
+			"0;9057;1;t;f;f;942;4736cc1d-4584-4f35-b670-75c89b79becc",
+			"0;9057;3;f;f;f;943;93780188-b660-4363-a062-f4244bb07ee2",
+			"0;9056;1;f;f;f;943;93780188-b660-4363-a062-f4244bb07ee2",
+			"943;9056;2;f;f;t;0;93780188-b660-4363-a062-f4244bb07ee2",
+			"0;9056;3;t;f;f;944;375ec02e-1ba1-42b6-9a7d-b2655602780f",
+			"0;9055;1;t;f;f;944;375ec02e-1ba1-42b6-9a7d-b2655602780f",
+			"0;9055;3;f;f;f;945;1ed7eaa3-efac-4d62-aa4b-c8cc1347a70f",
+			"0;9054;1;f;f;f;945;1ed7eaa3-efac-4d62-aa4b-c8cc1347a70f",
+			"945;9054;2;f;f;t;0;1ed7eaa3-efac-4d62-aa4b-c8cc1347a70f",
+			"0;9054;3;t;f;f;946;4c0d2b6d-eda8-47ea-9a9f-2476c8950223",
+			"0;9053;1;t;f;f;946;4c0d2b6d-eda8-47ea-9a9f-2476c8950223",
+			"0;9053;3;f;f;f;947;389c3d84-98ce-461d-8485-64621b12a5c3",
+			"0;9052;1;f;f;f;947;389c3d84-98ce-461d-8485-64621b12a5c3",
+			"947;9052;2;f;f;t;0;389c3d84-98ce-461d-8485-64621b12a5c3",
+			"0;9052;3;t;f;f;948;ac990d77-32c9-4c36-9f39-5a9d464a1f5e",
+			"0;9051;1;t;f;f;948;ac990d77-32c9-4c36-9f39-5a9d464a1f5e",
+			"0;9051;3;f;f;f;949;0b0cc318-5b63-4ee0-a0b2-58574699f808",
+			"0;9050;1;f;f;f;949;0b0cc318-5b63-4ee0-a0b2-58574699f808",
+			"949;9050;2;f;f;t;0;0b0cc318-5b63-4ee0-a0b2-58574699f808",
+			"0;9050;3;t;f;f;950;68d6988a-dac1-40cc-a129-23ff1be2e9b0",
+			"0;9049;1;t;f;f;950;68d6988a-dac1-40cc-a129-23ff1be2e9b0",
+			"0;9049;3;f;f;f;951;9381294d-3b42-4ff6-b839-e2fba8ac47ab",
+			"0;9048;1;f;f;f;951;9381294d-3b42-4ff6-b839-e2fba8ac47ab",
+			"951;9048;2;f;f;t;0;9381294d-3b42-4ff6-b839-e2fba8ac47ab",
+			"0;9048;3;t;f;f;952;58d7af45-e0cf-4f07-92d0-a4279020b8e0",
+			"0;9047;1;t;f;f;952;58d7af45-e0cf-4f07-92d0-a4279020b8e0",
+			"0;9047;3;f;f;f;953;6ab38eba-499e-4da9-a462-726a62c47db1",
+			"0;9046;1;f;f;f;953;6ab38eba-499e-4da9-a462-726a62c47db1",
+			"953;9046;2;f;f;t;0;6ab38eba-499e-4da9-a462-726a62c47db1",
+			"0;9046;3;t;f;f;954;3f4269ed-bb6b-4f54-8158-f979c9151ef5",
+			"0;9045;1;t;f;f;954;3f4269ed-bb6b-4f54-8158-f979c9151ef5",
+			"0;9045;3;f;f;f;955;a92ed91c-98ca-405c-bd43-25a805d2c595",
+			"0;9044;1;f;f;f;955;a92ed91c-98ca-405c-bd43-25a805d2c595",
+			"955;9044;2;f;f;t;0;a92ed91c-98ca-405c-bd43-25a805d2c595",
+			"0;9044;3;t;f;f;956;7d7ef695-90d8-47a4-bf12-412983dea5fe",
+			"0;9043;1;t;f;f;956;7d7ef695-90d8-47a4-bf12-412983dea5fe",
+			"0;9043;3;f;f;f;957;6e71edf2-d1b0-49f9-9240-88dd7b73cd7f",
+			"0;9042;1;f;f;f;957;6e71edf2-d1b0-49f9-9240-88dd7b73cd7f",
+			"957;9042;2;f;f;t;0;6e71edf2-d1b0-49f9-9240-88dd7b73cd7f",
+			"0;9042;3;t;f;f;958;4cd09b3a-64fc-4865-9751-eebe29d81f55",
+			"0;9041;1;t;f;f;958;4cd09b3a-64fc-4865-9751-eebe29d81f55",
+			"0;9041;3;f;f;f;959;39626ea9-8ec6-4d62-8fc7-6da55f69af81",
+			"0;9040;1;f;f;f;959;39626ea9-8ec6-4d62-8fc7-6da55f69af81",
+			"959;9040;2;f;f;t;0;39626ea9-8ec6-4d62-8fc7-6da55f69af81",
+			"0;9040;3;t;f;f;960;6c196840-e449-4116-be05-ec3d297117f1",
+			"0;9039;1;t;f;f;960;6c196840-e449-4116-be05-ec3d297117f1",
+			"0;9039;3;f;f;f;961;1f19fd5c-5d3b-495e-8ec3-79b651574b01",
+			"0;9038;1;f;f;f;961;1f19fd5c-5d3b-495e-8ec3-79b651574b01",
+			"961;9038;2;f;f;t;0;1f19fd5c-5d3b-495e-8ec3-79b651574b01",
+			"0;9038;3;t;f;f;962;cfa0f129-e89a-4118-a3b4-f00d2ae798de",
+			"0;9037;1;t;f;f;962;cfa0f129-e89a-4118-a3b4-f00d2ae798de",
+			"0;9037;3;f;f;f;963;ecd728a1-6fce-403e-9d46-c71c4574f816",
+			"0;9036;1;f;f;f;963;ecd728a1-6fce-403e-9d46-c71c4574f816",
+			"963;9036;2;f;f;t;0;ecd728a1-6fce-403e-9d46-c71c4574f816",
+			"0;9036;3;t;f;f;964;107f26bf-125f-470d-a053-2ee56f161807",
+			"0;9035;1;t;f;f;964;107f26bf-125f-470d-a053-2ee56f161807",
+			"0;9035;3;f;f;f;965;bf81056d-10de-4273-a91e-74faf1e068eb",
+			"0;9034;1;f;f;f;965;bf81056d-10de-4273-a91e-74faf1e068eb",
+			"965;9034;2;f;f;t;0;bf81056d-10de-4273-a91e-74faf1e068eb",
+			"0;9034;3;t;f;f;966;07d7638e-e98f-4630-b1d8-1d039679d9e2",
+			"0;9033;1;t;f;f;966;07d7638e-e98f-4630-b1d8-1d039679d9e2",
+			"0;9033;3;f;f;f;967;4684e3f2-ad92-4f32-a32e-7dbdd967cca0",
+			"0;9032;1;f;f;f;967;4684e3f2-ad92-4f32-a32e-7dbdd967cca0",
+			"967;9032;2;f;f;t;0;4684e3f2-ad92-4f32-a32e-7dbdd967cca0",
+			"0;9032;3;t;f;f;968;aedf2ae7-92c8-43a8-8a62-9ae81f22d40f",
+			"0;9031;1;t;f;f;968;aedf2ae7-92c8-43a8-8a62-9ae81f22d40f",
+			"0;9031;3;f;f;f;969;a34c5947-b5ff-4cee-b386-f60901a477b2",
+			"0;9030;1;f;f;f;969;a34c5947-b5ff-4cee-b386-f60901a477b2",
+			"969;9030;2;f;f;t;0;a34c5947-b5ff-4cee-b386-f60901a477b2",
+			"0;9030;3;t;f;f;970;e9a5f8d8-6f31-42b0-bde3-c1867facead5",
+			"0;9029;1;t;f;f;970;e9a5f8d8-6f31-42b0-bde3-c1867facead5",
+			"0;9029;3;f;f;f;971;c5cb664d-daee-4f39-b701-0b3f65e17432",
+			"0;9028;1;f;f;f;971;c5cb664d-daee-4f39-b701-0b3f65e17432",
+			"971;9028;2;f;f;t;0;c5cb664d-daee-4f39-b701-0b3f65e17432",
+			"0;9028;3;t;f;f;972;c2820817-09f8-4102-a2dc-41d7b669823a",
+			"0;9027;1;t;f;f;972;c2820817-09f8-4102-a2dc-41d7b669823a",
+			"0;9027;3;f;f;f;973;34395bed-964f-4396-94e8-e3279599c0d5",
+			"0;9026;1;f;f;f;973;34395bed-964f-4396-94e8-e3279599c0d5",
+			"973;9026;2;f;f;t;0;34395bed-964f-4396-94e8-e3279599c0d5",
+			"0;9026;3;t;f;f;974;6af4b586-cfe3-4cbc-952b-f42d6fb36285",
+			"0;9025;1;t;f;f;974;6af4b586-cfe3-4cbc-952b-f42d6fb36285",
+			"0;9025;3;f;f;f;975;a9cb5cde-03b2-4442-b058-2cad025f95c4",
+			"0;9024;1;f;f;f;975;a9cb5cde-03b2-4442-b058-2cad025f95c4",
+			"975;9024;2;f;f;t;0;a9cb5cde-03b2-4442-b058-2cad025f95c4",
+			"0;9024;3;t;f;f;976;b735dacc-6610-4d1c-b2e6-883f8cc47295",
+			"0;9023;1;t;f;f;976;b735dacc-6610-4d1c-b2e6-883f8cc47295",
+			"0;9023;3;f;f;f;977;c7045445-e7bb-4387-817f-379987650ccd",
+			"0;9022;1;f;f;f;977;c7045445-e7bb-4387-817f-379987650ccd",
+			"977;9022;2;f;f;t;0;c7045445-e7bb-4387-817f-379987650ccd",
+			"0;9022;3;t;f;f;978;08106254-bb17-4afb-899b-a5e9a4d55c4d",
+			"0;9021;1;t;f;f;978;08106254-bb17-4afb-899b-a5e9a4d55c4d",
+			"0;9021;3;f;f;f;979;ac49e22b-de22-4abb-9e27-4dd2d46f6236",
+			"0;9020;1;f;f;f;979;ac49e22b-de22-4abb-9e27-4dd2d46f6236",
+			"979;9020;2;f;f;t;0;ac49e22b-de22-4abb-9e27-4dd2d46f6236",
+			"0;9020;3;t;f;f;980;eb1fbb5c-775e-499e-84bd-a0c71f8981f8",
+			"0;9019;1;t;f;f;980;eb1fbb5c-775e-499e-84bd-a0c71f8981f8",
+			"0;9019;3;f;f;f;981;9179100d-9e95-45f1-aa40-1dd8b982f0b1",
+			"0;9018;1;f;f;f;981;9179100d-9e95-45f1-aa40-1dd8b982f0b1",
+			"981;9018;2;f;f;t;0;9179100d-9e95-45f1-aa40-1dd8b982f0b1",
+			"0;9018;3;t;f;f;982;d857e232-5c4e-4a30-a230-f9721bda7b50",
+			"0;9017;1;t;f;f;982;d857e232-5c4e-4a30-a230-f9721bda7b50",
+			"0;9017;3;f;f;f;983;6d6a954f-0f17-47c9-9f82-c78e6417221e",
+			"0;9016;1;f;f;f;983;6d6a954f-0f17-47c9-9f82-c78e6417221e",
+			"983;9016;2;f;f;t;0;6d6a954f-0f17-47c9-9f82-c78e6417221e",
+			"0;9016;3;t;f;f;984;6822a499-73ff-4840-b4ef-0e9a4aa59919",
+			"0;9015;1;t;f;f;984;6822a499-73ff-4840-b4ef-0e9a4aa59919",
+			"0;9015;3;f;f;f;985;363df3e7-447c-440e-b64d-d15808b5f3c2",
+			"0;9014;1;f;f;f;985;363df3e7-447c-440e-b64d-d15808b5f3c2",
+			"985;9014;2;f;f;t;0;363df3e7-447c-440e-b64d-d15808b5f3c2",
+			"0;9014;3;t;f;f;986;1dad384f-b11c-4d9b-8183-88386e8fab2c",
+			"0;9013;1;t;f;f;986;1dad384f-b11c-4d9b-8183-88386e8fab2c",
+			"0;9013;3;f;f;f;987;d4923d94-8781-4929-92a9-6a4318f4eb47",
+			"0;9012;1;f;f;f;987;d4923d94-8781-4929-92a9-6a4318f4eb47",
+			"987;9012;2;f;f;t;0;d4923d94-8781-4929-92a9-6a4318f4eb47",
+			"0;9012;3;t;f;f;988;13f0c8f5-e208-4616-b63b-4d8366514df5",
+			"0;9011;1;t;f;f;988;13f0c8f5-e208-4616-b63b-4d8366514df5",
+			"0;9011;3;f;f;f;989;67ec21a8-982b-49a2-8492-c1ee3267c8a6",
+			"0;9010;1;f;f;f;989;67ec21a8-982b-49a2-8492-c1ee3267c8a6",
+			"989;9010;2;f;f;t;0;67ec21a8-982b-49a2-8492-c1ee3267c8a6",
+			"0;9010;3;t;f;f;990;59985bad-0f2f-4c26-866d-289430fe60be",
+			"0;9009;1;t;f;f;990;59985bad-0f2f-4c26-866d-289430fe60be",
+			"0;9009;3;f;f;f;991;68707e52-931a-4977-ba4a-cb9cdd58cca0",
+			"0;9008;1;f;f;f;991;68707e52-931a-4977-ba4a-cb9cdd58cca0",
+			"991;9008;2;f;f;t;0;68707e52-931a-4977-ba4a-cb9cdd58cca0",
+			"0;9008;3;t;f;f;992;ea6c69e6-400e-4835-9e71-7ddb07a9b551",
+			"0;9007;1;t;f;f;992;ea6c69e6-400e-4835-9e71-7ddb07a9b551",
+			"0;9007;3;f;f;f;993;708b86d4-3486-4a46-8392-e514706af25e",
+			"0;9006;1;f;f;f;993;708b86d4-3486-4a46-8392-e514706af25e",
+			"993;9006;2;f;f;t;0;708b86d4-3486-4a46-8392-e514706af25e",
+			"0;9006;3;t;f;f;994;02995fa5-036a-4acb-8849-9ecd592118ce",
+			"0;9005;1;t;f;f;994;02995fa5-036a-4acb-8849-9ecd592118ce",
+			"0;9005;3;f;f;f;995;044009e2-1659-4d8a-9c61-4ca37a817cb9",
+			"0;9004;1;f;f;f;995;044009e2-1659-4d8a-9c61-4ca37a817cb9",
+			"995;9004;2;f;f;t;0;044009e2-1659-4d8a-9c61-4ca37a817cb9",
+			"0;9004;3;t;f;f;996;93aa0db8-b96b-4909-988f-3b2cd0f07b36",
+			"0;9003;1;t;f;f;996;93aa0db8-b96b-4909-988f-3b2cd0f07b36",
+			"0;9003;3;f;f;f;997;8099bf20-2527-4dca-9d60-0632f3fb61ef",
+			"0;9002;1;f;f;f;997;8099bf20-2527-4dca-9d60-0632f3fb61ef",
+			"997;9002;2;f;f;t;0;8099bf20-2527-4dca-9d60-0632f3fb61ef",
+			"0;9002;3;t;f;f;998;fba2aa95-3595-4c8e-aeb6-829a7513b780",
+			"0;9001;1;t;f;f;998;fba2aa95-3595-4c8e-aeb6-829a7513b780",
+			"0;9001;3;f;f;f;999;f1fe58ac-0428-41d4-816f-f2e25b3f729b",
+			"0;9000;1;f;f;f;999;f1fe58ac-0428-41d4-816f-f2e25b3f729b",
+			"999;9000;2;f;f;t;0;f1fe58ac-0428-41d4-816f-f2e25b3f729b",
+			"0;9000;3;t;f;f;1000;0fea2aae-a5cd-4b57-b6ff-b765e092d74b",
+			"0;8999;1;t;f;f;1000;0fea2aae-a5cd-4b57-b6ff-b765e092d74b",
+			"0;8999;3;f;f;f;1001;87ade2d5-4dd4-4e99-aba6-e64673aa4b81",
+			"0;8998;1;f;f;f;1001;87ade2d5-4dd4-4e99-aba6-e64673aa4b81",
+			"1001;8998;2;f;f;t;0;87ade2d5-4dd4-4e99-aba6-e64673aa4b81",
+			"0;8998;3;t;f;f;1002;4109925d-1acf-4ec6-b5a9-bbf77780a642",
+			"0;8997;1;t;f;f;1002;4109925d-1acf-4ec6-b5a9-bbf77780a642",
+			"0;8997;3;f;f;f;1003;25cf6147-1ccc-4be8-98f7-250154654ea2",
+			"0;8996;1;f;f;f;1003;25cf6147-1ccc-4be8-98f7-250154654ea2",
+			"1003;8996;2;f;f;t;0;25cf6147-1ccc-4be8-98f7-250154654ea2",
+			"0;8996;3;t;f;f;1004;4d722aa6-c6a6-45cc-8b90-7b86757e490b",
+			"0;8995;1;t;f;f;1004;4d722aa6-c6a6-45cc-8b90-7b86757e490b",
+			"0;8995;3;f;f;f;1005;70d8f8ff-8a50-45ee-a976-23b36ff62387",
+			"0;8994;1;f;f;f;1005;70d8f8ff-8a50-45ee-a976-23b36ff62387",
+			"1005;8994;2;f;f;t;0;70d8f8ff-8a50-45ee-a976-23b36ff62387",
+			"0;8994;3;t;f;f;1006;1addff10-f707-4f09-be56-9d0975458c08",
+			"0;8993;1;t;f;f;1006;1addff10-f707-4f09-be56-9d0975458c08",
+			"0;8993;3;f;f;f;1007;03a7b6b3-b6f0-4635-b534-61f1c7e6fd77",
+			"0;8992;1;f;f;f;1007;03a7b6b3-b6f0-4635-b534-61f1c7e6fd77",
+			"1007;8992;2;f;f;t;0;03a7b6b3-b6f0-4635-b534-61f1c7e6fd77",
+			"0;8992;3;t;f;f;1008;ca520375-5644-4084-af01-272349aed4c0",
+			"0;8991;1;t;f;f;1008;ca520375-5644-4084-af01-272349aed4c0",
+			"0;8991;3;f;f;f;1009;c5263852-c2ad-423e-8f9f-3516ca67c5e2",
+			"0;8990;1;f;f;f;1009;c5263852-c2ad-423e-8f9f-3516ca67c5e2",
+			"1009;8990;2;f;f;t;0;c5263852-c2ad-423e-8f9f-3516ca67c5e2",
+			"0;8990;3;t;f;f;1010;09067463-08bd-443b-a120-a3f92fe2d2d1",
+			"0;8989;1;t;f;f;1010;09067463-08bd-443b-a120-a3f92fe2d2d1",
+			"0;8989;3;f;f;f;1011;6230f97a-3ece-466a-9c79-f9422dd99233",
+			"0;8988;1;f;f;f;1011;6230f97a-3ece-466a-9c79-f9422dd99233",
+			"1011;8988;2;f;f;t;0;6230f97a-3ece-466a-9c79-f9422dd99233",
+			"0;8988;3;t;f;f;1012;2560af91-a559-48f2-ae77-0e51fae5036d",
+			"0;8987;1;t;f;f;1012;2560af91-a559-48f2-ae77-0e51fae5036d",
+			"0;8987;3;f;f;f;1013;d3c73be6-7404-4487-a0bf-8a2786b284db",
+			"0;8986;1;f;f;f;1013;d3c73be6-7404-4487-a0bf-8a2786b284db",
+			"1013;8986;2;f;f;t;0;d3c73be6-7404-4487-a0bf-8a2786b284db",
+			"0;8986;3;t;f;f;1014;a5a20013-a2d2-40ea-85d7-3db745814eb5",
+			"0;8985;1;t;f;f;1014;a5a20013-a2d2-40ea-85d7-3db745814eb5",
+			"0;8985;3;f;f;f;1015;1fefb606-2507-4a6d-90f7-329888f6626c",
+			"0;8984;1;f;f;f;1015;1fefb606-2507-4a6d-90f7-329888f6626c",
+			"1015;8984;2;f;f;t;0;1fefb606-2507-4a6d-90f7-329888f6626c",
+			"0;8984;3;t;f;f;1016;34d73310-f08b-46f4-90f4-14e1e232f3a8",
+			"0;8983;1;t;f;f;1016;34d73310-f08b-46f4-90f4-14e1e232f3a8",
+			"0;8983;3;f;f;f;1017;98626d69-d07b-41a3-bb72-0a90efbe52e7",
+			"0;8982;1;f;f;f;1017;98626d69-d07b-41a3-bb72-0a90efbe52e7",
+			"1017;8982;2;f;f;t;0;98626d69-d07b-41a3-bb72-0a90efbe52e7",
+			"0;8982;3;t;f;f;1018;8801850b-57b8-47f8-8799-057f56614e06",
+			"0;8981;1;t;f;f;1018;8801850b-57b8-47f8-8799-057f56614e06",
+			"0;8981;3;f;f;f;1019;1fc2ec37-b877-4eed-bb79-d46be8b8a22a",
+			"0;8980;1;f;f;f;1019;1fc2ec37-b877-4eed-bb79-d46be8b8a22a",
+			"1019;8980;2;f;f;t;0;1fc2ec37-b877-4eed-bb79-d46be8b8a22a",
+			"0;8980;3;t;f;f;1020;df408277-5aa6-4da6-8780-b705090b3e0d",
+			"0;8979;1;t;f;f;1020;df408277-5aa6-4da6-8780-b705090b3e0d",
+			"0;8979;3;f;f;f;1021;9a125186-3585-4f1e-a8e2-a143bb1667fe",
+			"0;8978;1;f;f;f;1021;9a125186-3585-4f1e-a8e2-a143bb1667fe",
+			"1021;8978;2;f;f;t;0;9a125186-3585-4f1e-a8e2-a143bb1667fe",
+			"0;8978;3;t;f;f;1022;4f75b617-13a6-42e5-a6d2-3486b86c7e5f",
+			"0;8977;1;t;f;f;1022;4f75b617-13a6-42e5-a6d2-3486b86c7e5f",
+			"0;8977;3;f;f;f;1023;a8f45375-0198-42f7-96f2-e58722a7dc19",
+			"0;8976;1;f;f;f;1023;a8f45375-0198-42f7-96f2-e58722a7dc19",
+			"1023;8976;2;f;f;t;0;a8f45375-0198-42f7-96f2-e58722a7dc19",
+			"0;8976;3;t;f;f;1024;1266c929-875c-46b9-8e23-a119e09f2b82",
+			"0;8975;1;t;f;f;1024;1266c929-875c-46b9-8e23-a119e09f2b82",
+			"0;8975;3;f;f;f;1025;cc092b46-e253-41dd-a1c8-4f2bfd648ec6",
+			"0;8974;1;f;f;f;1025;cc092b46-e253-41dd-a1c8-4f2bfd648ec6",
+			"1025;8974;2;f;f;t;0;cc092b46-e253-41dd-a1c8-4f2bfd648ec6",
+			"0;8974;3;t;f;f;1026;423115b9-837a-4bb7-842c-afd419ce74e9",
+			"0;8973;1;t;f;f;1026;423115b9-837a-4bb7-842c-afd419ce74e9",
+			"0;8973;3;f;f;f;1027;5c284446-7331-46c8-8dea-8c5283406fc1",
+			"0;8972;1;f;f;f;1027;5c284446-7331-46c8-8dea-8c5283406fc1",
+			"1027;8972;2;f;f;t;0;5c284446-7331-46c8-8dea-8c5283406fc1",
+			"0;8972;3;t;f;f;1028;ee4cce01-c489-4c79-aff9-44cce60043f1",
+			"0;8971;1;t;f;f;1028;ee4cce01-c489-4c79-aff9-44cce60043f1",
+			"0;8971;3;f;f;f;1029;0091633c-c21d-48e1-8987-c7d5d81d63a1",
+			"0;8970;1;f;f;f;1029;0091633c-c21d-48e1-8987-c7d5d81d63a1",
+			"1029;8970;2;f;f;t;0;0091633c-c21d-48e1-8987-c7d5d81d63a1",
+			"0;8970;3;t;f;f;1030;dcf30a73-7613-4353-bd1b-1e857202eb97",
+			"0;8969;1;t;f;f;1030;dcf30a73-7613-4353-bd1b-1e857202eb97",
+			"0;8969;3;f;f;f;1031;b21d4726-b751-4514-a55c-01935d5476ed",
+			"0;8968;1;f;f;f;1031;b21d4726-b751-4514-a55c-01935d5476ed",
+			"1031;8968;2;f;f;t;0;b21d4726-b751-4514-a55c-01935d5476ed",
+			"0;8968;3;t;f;f;1032;a4fe5853-0d22-4511-be01-89479f9e7db2",
+			"0;8967;1;t;f;f;1032;a4fe5853-0d22-4511-be01-89479f9e7db2",
+			"0;8967;3;f;f;f;1033;e12476a1-2418-4127-9de4-fb8a6ff09de6",
+			"0;8966;1;f;f;f;1033;e12476a1-2418-4127-9de4-fb8a6ff09de6",
+			"1033;8966;2;f;f;t;0;e12476a1-2418-4127-9de4-fb8a6ff09de6",
+			"0;8966;3;t;f;f;1034;ece2e405-c00e-4909-93eb-c7bd57b21935",
+			"0;8965;1;t;f;f;1034;ece2e405-c00e-4909-93eb-c7bd57b21935",
+			"0;8965;3;f;f;f;1035;5610b731-d0c0-4709-9ea7-84f796c75052",
+			"0;8964;1;f;f;f;1035;5610b731-d0c0-4709-9ea7-84f796c75052",
+			"1035;8964;2;f;f;t;0;5610b731-d0c0-4709-9ea7-84f796c75052",
+			"0;8964;3;t;f;f;1036;b5afc4f0-c5e2-4d23-a711-bceb324ee9f5",
+			"0;8963;1;t;f;f;1036;b5afc4f0-c5e2-4d23-a711-bceb324ee9f5",
+			"0;8963;3;f;f;f;1037;87f7a7b5-906c-4135-a90b-4f635a2ecd95",
+			"0;8962;1;f;f;f;1037;87f7a7b5-906c-4135-a90b-4f635a2ecd95",
+			"1037;8962;2;f;f;t;0;87f7a7b5-906c-4135-a90b-4f635a2ecd95",
+			"0;8962;3;t;f;f;1038;2a848428-3974-4bb2-88ef-ec8f9067ba78",
+			"0;8961;1;t;f;f;1038;2a848428-3974-4bb2-88ef-ec8f9067ba78",
+			"0;8961;3;f;f;f;1039;de65f3a4-542f-4f05-b21e-de4625f4e8dc",
+			"0;8960;1;f;f;f;1039;de65f3a4-542f-4f05-b21e-de4625f4e8dc",
+			"1039;8960;2;f;f;t;0;de65f3a4-542f-4f05-b21e-de4625f4e8dc",
+			"0;8960;3;t;f;f;1040;d2184972-b24a-4f88-9a42-dd6496121b9d",
+			"0;8959;1;t;f;f;1040;d2184972-b24a-4f88-9a42-dd6496121b9d",
+			"0;8959;3;t;f;f;1041;5278a50e-e72e-474f-9c47-bbb4cc0bbc8d",
+			"0;8958;1;t;f;f;1041;5278a50e-e72e-474f-9c47-bbb4cc0bbc8d",
+			"0;8958;3;f;f;f;1042;6ca79531-2b63-4981-af09-6b05a69223ce",
+			"0;8957;1;f;f;f;1042;6ca79531-2b63-4981-af09-6b05a69223ce",
+			"1042;8957;2;f;f;t;0;6ca79531-2b63-4981-af09-6b05a69223ce",
+			"0;8957;3;f;f;f;1043;6438b0ce-4551-483d-8ba4-88e958faa067",
+			"0;8956;1;f;f;f;1043;6438b0ce-4551-483d-8ba4-88e958faa067",
+			"1043;8956;2;f;f;t;0;6438b0ce-4551-483d-8ba4-88e958faa067",
+			"0;8956;3;t;f;f;1044;664ded0c-aff2-4fb5-bbb6-aabb3189eca1",
+			"0;8955;1;t;f;f;1044;664ded0c-aff2-4fb5-bbb6-aabb3189eca1",
+			"0;8955;3;t;f;f;1045;c83dd033-3279-4c80-9f27-25a9a2ffdca8",
+			"0;8954;1;t;f;f;1045;c83dd033-3279-4c80-9f27-25a9a2ffdca8",
+			"0;8954;3;f;f;f;1046;d9e2514a-a186-451e-8dc0-9341ccd5522c",
+			"0;8953;1;f;f;f;1046;d9e2514a-a186-451e-8dc0-9341ccd5522c",
+			"1046;8953;2;f;f;t;0;d9e2514a-a186-451e-8dc0-9341ccd5522c",
+			"0;8953;3;f;f;f;1047;3b27fcff-2739-4187-92e9-473cb5d7405f",
+			"0;8952;1;f;f;f;1047;3b27fcff-2739-4187-92e9-473cb5d7405f",
+			"1047;8952;2;f;f;t;0;3b27fcff-2739-4187-92e9-473cb5d7405f",
+			"0;8952;3;t;f;f;1048;9e309993-dd78-4b31-b126-6822634eaf09",
+			"0;8951;1;t;f;f;1048;9e309993-dd78-4b31-b126-6822634eaf09",
+			"0;8951;3;f;f;f;1049;c77c4bf8-b5a6-4777-b8c2-66a194788ee0",
+			"0;8950;1;f;f;f;1049;c77c4bf8-b5a6-4777-b8c2-66a194788ee0",
+			"1049;8950;2;f;f;t;0;c77c4bf8-b5a6-4777-b8c2-66a194788ee0",
+			"0;8950;3;t;f;f;1050;afe4224c-816b-484f-8a99-a8c6d5a3bbe3",
+			"0;8949;1;t;f;f;1050;afe4224c-816b-484f-8a99-a8c6d5a3bbe3",
+			"0;8949;3;f;f;f;1051;d84ccf85-f492-4719-aae8-be03d0da63dc",
+			"0;8948;1;f;f;f;1051;d84ccf85-f492-4719-aae8-be03d0da63dc",
+			"1051;8948;2;f;f;t;0;d84ccf85-f492-4719-aae8-be03d0da63dc",
+			"0;8948;3;t;f;f;1052;290a23de-8085-494b-aa11-d8ffd0a275d8",
+			"0;8947;1;t;f;f;1052;290a23de-8085-494b-aa11-d8ffd0a275d8",
+			"0;8947;3;f;f;f;1053;5e8af49b-4ff0-4032-9b80-35b1063c0b50",
+			"0;8946;1;f;f;f;1053;5e8af49b-4ff0-4032-9b80-35b1063c0b50",
+			"1053;8946;2;f;f;t;0;5e8af49b-4ff0-4032-9b80-35b1063c0b50",
+			"0;8946;3;t;f;f;1054;34cf3433-1d33-41f4-913b-3500a37dac57",
+			"0;8945;1;t;f;f;1054;34cf3433-1d33-41f4-913b-3500a37dac57",
+			"0;8945;3;f;f;f;1055;bb2f85b2-8021-4b31-bd25-1f5422fecd14",
+			"0;8944;1;f;f;f;1055;bb2f85b2-8021-4b31-bd25-1f5422fecd14",
+			"1055;8944;2;f;f;t;0;bb2f85b2-8021-4b31-bd25-1f5422fecd14",
+			"0;8944;3;t;f;f;1056;25389378-5e33-4320-9bcb-9ccfafd52f2c",
+			"0;8943;1;t;f;f;1056;25389378-5e33-4320-9bcb-9ccfafd52f2c",
+			"0;8943;3;t;f;f;1057;9d3408b2-be3d-484d-b6c1-76c450cc090b",
+			"0;8942;1;t;f;f;1057;9d3408b2-be3d-484d-b6c1-76c450cc090b",
+			"1058;8942;2;f;f;t;0;693dd39d-1213-4535-85d7-0621d8017c2e",
+			"0;8942;3;t;f;f;1058;693dd39d-1213-4535-85d7-0621d8017c2e",
+			"0;8941;1;t;f;f;1058;693dd39d-1213-4535-85d7-0621d8017c2e",
+			"0;8941;3;f;f;f;1059;4d62ae3c-29f5-436c-8571-5946d2e83c79",
+			"0;8940;1;f;f;f;1059;4d62ae3c-29f5-436c-8571-5946d2e83c79",
+			"1059;8940;2;f;f;t;0;4d62ae3c-29f5-436c-8571-5946d2e83c79",
+			"0;8940;3;t;f;f;1060;0c5d12e4-0a98-4d93-9209-3f30524a3106",
+			"0;8939;1;t;f;f;1060;0c5d12e4-0a98-4d93-9209-3f30524a3106",
+			"0;8939;3;f;f;f;1061;846c85b4-b670-482a-9ef8-2ad1a7b55f7c",
+			"0;8938;1;f;f;f;1061;846c85b4-b670-482a-9ef8-2ad1a7b55f7c",
+			"1061;8938;2;f;f;t;0;846c85b4-b670-482a-9ef8-2ad1a7b55f7c",
+			"0;8938;3;t;f;f;1062;89d53f09-cbe9-45b3-a4c6-766c28e62b57",
+			"0;8937;1;t;f;f;1062;89d53f09-cbe9-45b3-a4c6-766c28e62b57",
+			"0;8937;3;f;f;f;1063;5bd66711-de05-47ae-b9bf-3dad13763e5a",
+			"0;8936;1;f;f;f;1063;5bd66711-de05-47ae-b9bf-3dad13763e5a",
+			"1063;8936;2;f;f;t;0;5bd66711-de05-47ae-b9bf-3dad13763e5a",
+			"0;8936;3;t;f;f;1064;79ae3bc3-a679-456a-8043-b321a3324015",
+			"0;8935;1;t;f;f;1064;79ae3bc3-a679-456a-8043-b321a3324015",
+			"0;8935;3;f;f;f;1065;85163a8c-ecaa-451d-9e24-7b0ac0d221af",
+			"0;8934;1;f;f;f;1065;85163a8c-ecaa-451d-9e24-7b0ac0d221af",
+			"1065;8934;2;f;f;t;0;85163a8c-ecaa-451d-9e24-7b0ac0d221af",
+			"0;8934;3;t;f;f;1066;e61bc7a0-4c93-4e0a-b070-1fb0f8129236",
+			"0;8933;1;t;f;f;1066;e61bc7a0-4c93-4e0a-b070-1fb0f8129236",
+			"0;8933;3;f;f;f;1067;6643744c-7efd-4fe2-a2b6-b3c675737b8c",
+			"0;8932;1;f;f;f;1067;6643744c-7efd-4fe2-a2b6-b3c675737b8c",
+			"1067;8932;2;f;f;t;0;6643744c-7efd-4fe2-a2b6-b3c675737b8c",
+			"0;8932;3;t;f;f;1068;988b45fa-dbc7-4a11-a3a0-a0fd498cf8b5",
+			"0;8931;1;t;f;f;1068;988b45fa-dbc7-4a11-a3a0-a0fd498cf8b5",
+			"0;8931;3;t;f;f;1069;641d5947-9d66-4fb5-a9b2-e1f5c4a64612",
+			"0;8930;1;t;f;f;1069;641d5947-9d66-4fb5-a9b2-e1f5c4a64612",
+			"1070;8930;2;f;f;t;0;7116640a-347e-4d72-944d-a0a1fef1d9d7",
+			"0;8930;3;t;f;f;1070;7116640a-347e-4d72-944d-a0a1fef1d9d7",
+			"0;8929;1;t;f;f;1070;7116640a-347e-4d72-944d-a0a1fef1d9d7",
+			"0;8929;3;f;f;f;1071;1044b009-a7b4-4ded-9280-67e9e52d5a7e",
+			"0;8928;1;f;f;f;1071;1044b009-a7b4-4ded-9280-67e9e52d5a7e",
+			"1071;8928;2;f;f;t;0;1044b009-a7b4-4ded-9280-67e9e52d5a7e",
+			"0;8928;3;t;f;f;1072;f365705e-d51c-42e2-be36-c88c8df346a1",
+			"0;8927;1;t;f;f;1072;f365705e-d51c-42e2-be36-c88c8df346a1",
+			"0;8927;3;f;f;f;1073;aca2d35b-03df-467e-9b5b-c714a9c078d1",
+			"0;8926;1;f;f;f;1073;aca2d35b-03df-467e-9b5b-c714a9c078d1",
+			"1073;8926;2;f;f;t;0;aca2d35b-03df-467e-9b5b-c714a9c078d1",
+			"0;8926;3;t;f;f;1074;6b480a30-8345-46f0-94ac-bcc6fa9a4f2c",
+			"0;8925;1;t;f;f;1074;6b480a30-8345-46f0-94ac-bcc6fa9a4f2c",
+			"0;8925;3;f;f;f;1075;3b422843-4f66-4dd2-b652-d29c966fc717",
+			"0;8924;1;f;f;f;1075;3b422843-4f66-4dd2-b652-d29c966fc717",
+			"1075;8924;2;f;f;t;0;3b422843-4f66-4dd2-b652-d29c966fc717",
+			"0;8924;3;t;f;f;1076;32ff1d89-aba5-4a81-a21b-78e3ddb9e417",
+			"0;8923;1;t;f;f;1076;32ff1d89-aba5-4a81-a21b-78e3ddb9e417",
+			"0;8923;3;f;f;f;1077;6315128e-c48d-4fae-8d24-c49a67dbf965",
+			"0;8922;1;f;f;f;1077;6315128e-c48d-4fae-8d24-c49a67dbf965",
+			"1077;8922;2;f;f;t;0;6315128e-c48d-4fae-8d24-c49a67dbf965",
+			"0;8922;3;t;f;f;1078;bdea5d85-4475-49f5-90bd-6040fc616a6f",
+			"0;8921;1;t;f;f;1078;bdea5d85-4475-49f5-90bd-6040fc616a6f",
+			"0;8921;3;f;f;f;1079;44b3de08-9337-4a9d-ad23-464d5d2873c6",
+			"0;8920;1;f;f;f;1079;44b3de08-9337-4a9d-ad23-464d5d2873c6",
+			"1079;8920;2;f;f;t;0;44b3de08-9337-4a9d-ad23-464d5d2873c6",
+			"0;8920;3;t;f;f;1080;0dcbeb1c-8cd0-4c6f-aba3-462265a0785e",
+			"0;8919;1;t;f;f;1080;0dcbeb1c-8cd0-4c6f-aba3-462265a0785e",
+			"0;8919;3;f;f;f;1081;72c4d936-145d-4a7d-a28e-22a764fb9fb2",
+			"0;8918;1;f;f;f;1081;72c4d936-145d-4a7d-a28e-22a764fb9fb2",
+			"1081;8918;2;f;f;t;0;72c4d936-145d-4a7d-a28e-22a764fb9fb2",
+			"0;8918;3;t;f;f;1082;c2a36988-7571-4db5-9634-129dcbd521a0",
+			"0;8917;1;t;f;f;1082;c2a36988-7571-4db5-9634-129dcbd521a0",
+			"0;8917;3;f;f;f;1083;26a0be2c-9c10-4726-b691-8408067a6ab6",
+			"0;8916;1;f;f;f;1083;26a0be2c-9c10-4726-b691-8408067a6ab6",
+			"1083;8916;2;f;f;t;0;26a0be2c-9c10-4726-b691-8408067a6ab6",
+			"0;8916;3;t;f;f;1084;c0d920fe-f45b-41b4-9881-50e4fd05300e",
+			"0;8915;1;t;f;f;1084;c0d920fe-f45b-41b4-9881-50e4fd05300e",
+			"0;8915;3;f;f;f;1085;02671573-6fbb-443f-afd0-56919078aa43",
+			"0;8914;1;f;f;f;1085;02671573-6fbb-443f-afd0-56919078aa43",
+			"1085;8914;2;f;f;t;0;02671573-6fbb-443f-afd0-56919078aa43",
+			"0;8914;3;t;f;f;1086;7a8d2370-c07e-47c9-86ed-267889c80a9b",
+			"0;8913;1;t;f;f;1086;7a8d2370-c07e-47c9-86ed-267889c80a9b",
+			"0;8913;3;f;f;f;1087;0ce030e9-1324-4e92-9db0-295036d8bd51",
+			"0;8912;1;f;f;f;1087;0ce030e9-1324-4e92-9db0-295036d8bd51",
+			"1087;8912;2;f;f;t;0;0ce030e9-1324-4e92-9db0-295036d8bd51",
+			"0;8912;3;t;f;f;1088;2d376eb0-b08f-4317-bb92-347b460f3fdb",
+			"0;8911;1;t;f;f;1088;2d376eb0-b08f-4317-bb92-347b460f3fdb",
+			"0;8911;3;f;f;f;1089;94638410-3685-405b-b01f-b6e67d7f9794",
+			"0;8910;1;f;f;f;1089;94638410-3685-405b-b01f-b6e67d7f9794",
+			"1089;8910;2;f;f;t;0;94638410-3685-405b-b01f-b6e67d7f9794",
+			"0;8910;3;t;f;f;1090;2faa43ae-37cd-4ab6-96e0-34a41edbe992",
+			"0;8909;1;t;f;f;1090;2faa43ae-37cd-4ab6-96e0-34a41edbe992",
+			"0;8909;3;f;f;f;1091;48a9e91c-3d2f-4ce0-b4fe-ad8d2bc5c953",
+			"0;8908;1;f;f;f;1091;48a9e91c-3d2f-4ce0-b4fe-ad8d2bc5c953",
+			"1091;8908;2;f;f;t;0;48a9e91c-3d2f-4ce0-b4fe-ad8d2bc5c953",
+			"0;8908;3;t;f;f;1092;70ce0e1f-4b2a-4816-aa24-719f4be71008",
+			"0;8907;1;t;f;f;1092;70ce0e1f-4b2a-4816-aa24-719f4be71008",
+			"0;8907;3;f;f;f;1093;fe569872-b0d0-4d28-a033-346d3a66a4de",
+			"0;8906;1;f;f;f;1093;fe569872-b0d0-4d28-a033-346d3a66a4de",
+			"1093;8906;2;f;f;t;0;fe569872-b0d0-4d28-a033-346d3a66a4de",
+			"0;8906;3;t;f;f;1094;ef3380d2-f234-446f-8c80-8f7bbb6f812a",
+			"0;8905;1;t;f;f;1094;ef3380d2-f234-446f-8c80-8f7bbb6f812a",
+			"0;8905;3;f;f;f;1095;7a97ccd9-9a4c-4d7d-a043-6857bce962a9",
+			"0;8904;1;f;f;f;1095;7a97ccd9-9a4c-4d7d-a043-6857bce962a9",
+			"1095;8904;2;f;f;t;0;7a97ccd9-9a4c-4d7d-a043-6857bce962a9",
+			"0;8904;3;t;f;f;1096;cfbe6183-2766-4a8f-b20f-1ae6243bbfaa",
+			"0;8903;1;t;f;f;1096;cfbe6183-2766-4a8f-b20f-1ae6243bbfaa",
+			"0;8903;3;f;f;f;1097;738a3ba4-b32b-48d8-87f4-2e743547ade5",
+			"0;8902;1;f;f;f;1097;738a3ba4-b32b-48d8-87f4-2e743547ade5",
+			"1097;8902;2;f;f;t;0;738a3ba4-b32b-48d8-87f4-2e743547ade5",
+			"0;8902;3;t;f;f;1098;893606a3-2001-464f-8d83-42d825dc1ba5",
+			"0;8901;1;t;f;f;1098;893606a3-2001-464f-8d83-42d825dc1ba5",
+			"0;8901;3;f;f;f;1099;67b4391a-7f66-43f6-8fd0-14ca80b21999",
+			"0;8900;1;f;f;f;1099;67b4391a-7f66-43f6-8fd0-14ca80b21999",
+			"1099;8900;2;f;f;t;0;67b4391a-7f66-43f6-8fd0-14ca80b21999",
+			"0;8900;3;t;f;f;1100;1d8f6c8a-9f2e-4c33-854e-7974c820c8c4",
+			"0;8899;1;t;f;f;1100;1d8f6c8a-9f2e-4c33-854e-7974c820c8c4",
+			"0;8899;3;f;f;f;1101;a78136eb-e889-428c-8452-b8878dbf2685",
+			"0;8898;1;f;f;f;1101;a78136eb-e889-428c-8452-b8878dbf2685",
+			"1101;8898;2;f;f;t;0;a78136eb-e889-428c-8452-b8878dbf2685",
+			"0;8898;3;t;f;f;1102;54a5b6d5-5f33-468b-9afc-d83d85ebd295",
+			"0;8897;1;t;f;f;1102;54a5b6d5-5f33-468b-9afc-d83d85ebd295",
+			"0;8897;3;t;f;f;1103;a55404f9-553d-404e-9c69-3b9fbe44d498",
+			"0;8896;1;t;f;f;1103;a55404f9-553d-404e-9c69-3b9fbe44d498",
+			"1104;8896;2;f;f;t;0;1b14e1b9-b5c2-4444-9413-7d64750f6dc9",
+			"0;8896;3;t;f;f;1104;1b14e1b9-b5c2-4444-9413-7d64750f6dc9",
+			"0;8895;1;t;f;f;1104;1b14e1b9-b5c2-4444-9413-7d64750f6dc9",
+			"0;8895;3;f;f;f;1105;1b9990e6-0336-4ece-bf1b-e4b856a6f5a5",
+			"0;8894;1;f;f;f;1105;1b9990e6-0336-4ece-bf1b-e4b856a6f5a5",
+			"1105;8894;2;f;f;t;0;1b9990e6-0336-4ece-bf1b-e4b856a6f5a5",
+			"0;8894;3;t;f;f;1106;ddcc2316-f976-4ab1-99a6-e27ccacb2ee2",
+			"0;8893;1;t;f;f;1106;ddcc2316-f976-4ab1-99a6-e27ccacb2ee2",
+			"0;8893;3;t;f;f;1107;7e5cbcac-4393-4d09-aa38-2f5599601251",
+			"0;8892;1;t;f;f;1107;7e5cbcac-4393-4d09-aa38-2f5599601251",
+			"0;8892;3;f;f;f;1108;58b21369-036d-40e4-8972-ba5dc5f5ef47",
+			"0;8891;1;f;f;f;1108;58b21369-036d-40e4-8972-ba5dc5f5ef47",
+			"1108;8891;2;f;f;t;0;58b21369-036d-40e4-8972-ba5dc5f5ef47",
+			"0;8891;3;f;f;f;1109;1af076d8-b33d-49e8-b246-8e2b05a4f0dc",
+			"0;8890;1;f;f;f;1109;1af076d8-b33d-49e8-b246-8e2b05a4f0dc",
+			"1109;8890;2;f;f;t;0;1af076d8-b33d-49e8-b246-8e2b05a4f0dc",
+			"0;8890;3;t;f;f;1110;51028c97-94f6-4002-9ee3-6b525f255dbb",
+			"0;8889;1;t;f;f;1110;51028c97-94f6-4002-9ee3-6b525f255dbb",
+			"0;8889;3;f;f;f;1111;e2779d59-092d-47ae-b6a5-62b647da8527",
+			"0;8888;1;f;f;f;1111;e2779d59-092d-47ae-b6a5-62b647da8527",
+			"1111;8888;2;f;f;t;0;e2779d59-092d-47ae-b6a5-62b647da8527",
+			"0;8888;3;t;f;f;1112;359e14d1-5b43-497e-b4c0-c28fed26e287",
+			"0;8887;1;t;f;f;1112;359e14d1-5b43-497e-b4c0-c28fed26e287",
+			"0;8887;3;f;f;f;1113;85ad416b-6a12-43e2-b857-c538cc60fb4f",
+			"0;8886;1;f;f;f;1113;85ad416b-6a12-43e2-b857-c538cc60fb4f",
+			"1113;8886;2;f;f;t;0;85ad416b-6a12-43e2-b857-c538cc60fb4f",
+			"0;8886;3;t;f;f;1114;55fa0d16-ec92-4d17-8911-cb5124f56042",
+			"0;8885;1;t;f;f;1114;55fa0d16-ec92-4d17-8911-cb5124f56042",
+			"0;8885;3;f;f;f;1115;13ffcba6-2fea-49ee-8fe8-575147f208fd",
+			"0;8884;1;f;f;f;1115;13ffcba6-2fea-49ee-8fe8-575147f208fd",
+			"1115;8884;2;f;f;t;0;13ffcba6-2fea-49ee-8fe8-575147f208fd",
+			"0;8884;3;t;f;f;1116;92237699-9d6e-4670-bacf-84e1cc1e5c02",
+			"0;8883;1;t;f;f;1116;92237699-9d6e-4670-bacf-84e1cc1e5c02",
+			"0;8883;3;f;f;f;1117;41136dbc-a50f-42b6-8142-4bce5484f0ef",
+			"0;8882;1;f;f;f;1117;41136dbc-a50f-42b6-8142-4bce5484f0ef",
+			"1117;8882;2;f;f;t;0;41136dbc-a50f-42b6-8142-4bce5484f0ef",
+			"0;8882;3;t;f;f;1118;22ac0aa6-54cc-4a11-9eaf-e9b784ac4f19",
+			"0;8881;1;t;f;f;1118;22ac0aa6-54cc-4a11-9eaf-e9b784ac4f19",
+			"0;8881;3;t;f;f;1119;dd67f391-5bfc-4819-bae0-2ebbcd529f17",
+			"0;8880;1;t;f;f;1119;dd67f391-5bfc-4819-bae0-2ebbcd529f17",
+			"1120;8880;2;f;f;t;0;8c3bf21f-fd1b-4f15-b1ef-7f8be67ecd5e",
+			"0;8880;3;t;f;f;1120;8c3bf21f-fd1b-4f15-b1ef-7f8be67ecd5e",
+			"0;8879;1;t;f;f;1120;8c3bf21f-fd1b-4f15-b1ef-7f8be67ecd5e",
+			"0;8879;3;f;f;f;1121;e93738dc-bd71-4837-8a97-e8614ce98368",
+			"0;8878;1;f;f;f;1121;e93738dc-bd71-4837-8a97-e8614ce98368",
+			"1121;8878;2;f;f;t;0;e93738dc-bd71-4837-8a97-e8614ce98368",
+			"0;8878;3;t;f;f;1122;fa43730c-b84b-49ab-953b-bd1ed88b9aa0",
+			"0;8877;1;t;f;f;1122;fa43730c-b84b-49ab-953b-bd1ed88b9aa0",
+			"0;8877;3;t;f;f;1123;6db051ce-363b-48b1-884e-1503e33925ae",
+			"0;8876;1;t;f;f;1123;6db051ce-363b-48b1-884e-1503e33925ae",
+			"1124;8876;2;f;f;t;0;a1a7f1e9-53ec-47f9-be3d-14ead1289e13",
+			"0;8876;3;t;f;f;1124;a1a7f1e9-53ec-47f9-be3d-14ead1289e13",
+			"0;8875;1;t;f;f;1124;a1a7f1e9-53ec-47f9-be3d-14ead1289e13",
+			"0;8875;3;f;f;f;1125;d9e9b52d-4700-4983-9245-d4d9443dee2e",
+			"0;8874;1;f;f;f;1125;d9e9b52d-4700-4983-9245-d4d9443dee2e",
+			"1125;8874;2;f;f;t;0;d9e9b52d-4700-4983-9245-d4d9443dee2e",
+			"0;8874;3;t;f;f;1126;40374382-2e4e-433d-a148-2908f239c6f8",
+			"0;8873;1;t;f;f;1126;40374382-2e4e-433d-a148-2908f239c6f8",
+			"0;8873;3;t;f;f;1127;f22ae9ee-dfd4-4a6f-a097-901fa2e2bebe",
+			"0;8872;1;t;f;f;1127;f22ae9ee-dfd4-4a6f-a097-901fa2e2bebe",
+			"1128;8872;2;f;f;t;0;9bfe8874-85ac-42d0-ab90-64b1901f8688",
+			"0;8872;3;t;f;f;1128;9bfe8874-85ac-42d0-ab90-64b1901f8688",
+			"0;8871;1;t;f;f;1128;9bfe8874-85ac-42d0-ab90-64b1901f8688",
+			"0;8871;3;f;f;f;1129;1a9030a7-ff66-474b-823b-c760f264e62d",
+			"0;8870;1;f;f;f;1129;1a9030a7-ff66-474b-823b-c760f264e62d",
+			"1129;8870;2;f;f;t;0;1a9030a7-ff66-474b-823b-c760f264e62d",
+			"0;8870;3;t;f;f;1130;e39e64a2-d35b-4716-891f-51fc5062527a",
+			"0;8869;1;t;f;f;1130;e39e64a2-d35b-4716-891f-51fc5062527a",
+			"0;8869;3;f;f;f;1131;a538613e-7539-4696-8f85-f6bb68903aba",
+			"0;8868;1;f;f;f;1131;a538613e-7539-4696-8f85-f6bb68903aba",
+			"1131;8868;2;f;f;t;0;a538613e-7539-4696-8f85-f6bb68903aba",
+			"0;8868;3;t;f;f;1132;34c5e6ad-c036-44f3-9cd0-7db53078f68f",
+			"0;8867;1;t;f;f;1132;34c5e6ad-c036-44f3-9cd0-7db53078f68f",
+			"0;8867;3;f;f;f;1133;ab33dfd5-8d6a-4371-b0c3-528d00bee085",
+			"0;8866;1;f;f;f;1133;ab33dfd5-8d6a-4371-b0c3-528d00bee085",
+			"1133;8866;2;f;f;t;0;ab33dfd5-8d6a-4371-b0c3-528d00bee085",
+			"0;8866;3;t;f;f;1134;ddc00283-b3f0-4348-a0d3-462d7be77bd1",
+			"0;8865;1;t;f;f;1134;ddc00283-b3f0-4348-a0d3-462d7be77bd1",
+			"0;8865;3;t;f;f;1135;7f5fcba8-70b8-438f-943b-127842b529bb",
+			"0;8864;1;t;f;f;1135;7f5fcba8-70b8-438f-943b-127842b529bb",
+			"1136;8864;2;f;f;t;0;78cf0698-5b5b-48bb-9873-ef3326f4096f",
+			"0;8864;3;t;f;f;1136;78cf0698-5b5b-48bb-9873-ef3326f4096f",
+			"0;8863;1;t;f;f;1136;78cf0698-5b5b-48bb-9873-ef3326f4096f",
+			"0;8863;3;f;f;f;1137;4eb71d71-fef9-4c99-9385-719e7c1507bc",
+			"0;8862;1;f;f;f;1137;4eb71d71-fef9-4c99-9385-719e7c1507bc",
+			"1137;8862;2;f;f;t;0;4eb71d71-fef9-4c99-9385-719e7c1507bc",
+			"0;8862;3;t;f;f;1138;1baccbe9-3c6c-4fd6-a484-297c2bea7a6c",
+			"0;8861;1;t;f;f;1138;1baccbe9-3c6c-4fd6-a484-297c2bea7a6c",
+			"0;8861;3;f;f;f;1139;09b9249f-a36f-4d59-be85-7ed77d158d0f",
+			"0;8860;1;f;f;f;1139;09b9249f-a36f-4d59-be85-7ed77d158d0f",
+			"1139;8860;2;f;f;t;0;09b9249f-a36f-4d59-be85-7ed77d158d0f",
+			"0;8860;3;t;f;f;1140;fae72b6d-0ffb-494d-97ce-771cf17ae1ec",
+			"0;8859;1;t;f;f;1140;fae72b6d-0ffb-494d-97ce-771cf17ae1ec",
+			"0;8859;3;f;f;f;1141;b79d41be-3947-42b2-a64e-11903a143c35",
+			"0;8858;1;f;f;f;1141;b79d41be-3947-42b2-a64e-11903a143c35",
+			"1141;8858;2;f;f;t;0;b79d41be-3947-42b2-a64e-11903a143c35",
+			"0;8858;3;t;f;f;1142;42d3236c-56fe-4de2-b574-dfecb0b44727",
+			"0;8857;1;t;f;f;1142;42d3236c-56fe-4de2-b574-dfecb0b44727",
+			"0;8857;3;f;f;f;1143;27726c2d-876f-47e9-a572-8b0ffa09d81d",
+			"0;8856;1;f;f;f;1143;27726c2d-876f-47e9-a572-8b0ffa09d81d",
+			"1143;8856;2;f;f;t;0;27726c2d-876f-47e9-a572-8b0ffa09d81d",
+			"0;8856;3;t;f;f;1144;ba44ec93-3932-4d1a-aaab-868398ae5416",
+			"0;8855;1;t;f;f;1144;ba44ec93-3932-4d1a-aaab-868398ae5416",
+			"0;8855;3;f;f;f;1145;8cde280a-54c7-4f1f-99ca-6ecfb54c476a",
+			"0;8854;1;f;f;f;1145;8cde280a-54c7-4f1f-99ca-6ecfb54c476a",
+			"1145;8854;2;f;f;t;0;8cde280a-54c7-4f1f-99ca-6ecfb54c476a",
+			"0;8854;3;t;f;f;1146;ff61300c-d14a-4585-89fd-bed33e0eeb11",
+			"0;8853;1;t;f;f;1146;ff61300c-d14a-4585-89fd-bed33e0eeb11",
+			"0;8853;3;f;f;f;1147;6d6512db-d826-4f41-bf24-c77b9b88c162",
+			"0;8852;1;f;f;f;1147;6d6512db-d826-4f41-bf24-c77b9b88c162",
+			"1147;8852;2;f;f;t;0;6d6512db-d826-4f41-bf24-c77b9b88c162",
+			"0;8852;3;t;f;f;1148;285667e0-580b-4f1c-879b-1e4c6ddaa23f",
+			"0;8851;1;t;f;f;1148;285667e0-580b-4f1c-879b-1e4c6ddaa23f",
+			"0;8851;3;f;f;f;1149;f444d31b-04da-4f8e-9f1b-08d532766a22",
+			"0;8850;1;f;f;f;1149;f444d31b-04da-4f8e-9f1b-08d532766a22",
+			"1149;8850;2;f;f;t;0;f444d31b-04da-4f8e-9f1b-08d532766a22",
+			"0;8850;3;t;f;f;1150;14c1a33c-a695-4c52-8287-2a466fff06fb",
+			"0;8849;1;t;f;f;1150;14c1a33c-a695-4c52-8287-2a466fff06fb",
+			"0;8849;3;f;f;f;1151;005b339d-97b5-4649-87f6-6fb403cb4ced",
+			"0;8848;1;f;f;f;1151;005b339d-97b5-4649-87f6-6fb403cb4ced",
+			"1151;8848;2;f;f;t;0;005b339d-97b5-4649-87f6-6fb403cb4ced",
+			"0;8848;3;t;f;f;1152;56e05af3-1bf6-4038-a8f8-6414fe29145e",
+			"0;8847;1;t;f;f;1152;56e05af3-1bf6-4038-a8f8-6414fe29145e",
+			"0;8847;3;f;f;f;1153;6db9dc29-df0f-4716-bbe3-d01be981f226",
+			"0;8846;1;f;f;f;1153;6db9dc29-df0f-4716-bbe3-d01be981f226",
+			"1153;8846;2;f;f;t;0;6db9dc29-df0f-4716-bbe3-d01be981f226",
+			"0;8846;3;t;f;f;1154;920a41a0-e7f5-488a-888a-5c6d1415268a",
+			"0;8845;1;t;f;f;1154;920a41a0-e7f5-488a-888a-5c6d1415268a",
+			"0;8845;3;f;f;f;1155;9d7750c0-988b-49e8-a7ce-02c532f0b3a8",
+			"0;8844;1;f;f;f;1155;9d7750c0-988b-49e8-a7ce-02c532f0b3a8",
+			"1155;8844;2;f;f;t;0;9d7750c0-988b-49e8-a7ce-02c532f0b3a8",
+			"0;8844;3;t;f;f;1156;cafd64d8-5af6-4e72-8092-10147e464eea",
+			"0;8843;1;t;f;f;1156;cafd64d8-5af6-4e72-8092-10147e464eea",
+			"0;8843;3;f;f;f;1157;6d876b2e-cc1e-46d2-8aca-6e8a27c2d842",
+			"0;8842;1;f;f;f;1157;6d876b2e-cc1e-46d2-8aca-6e8a27c2d842",
+			"1157;8842;2;f;f;t;0;6d876b2e-cc1e-46d2-8aca-6e8a27c2d842",
+			"0;8842;3;t;f;f;1158;971903ec-bfe6-486c-b155-40198eab9fa0",
+			"0;8841;1;t;f;f;1158;971903ec-bfe6-486c-b155-40198eab9fa0",
+			"0;8841;3;f;f;f;1159;4fcaaa47-ed84-4579-896f-994ead78af90",
+			"0;8840;1;f;f;f;1159;4fcaaa47-ed84-4579-896f-994ead78af90",
+			"1159;8840;2;f;f;t;0;4fcaaa47-ed84-4579-896f-994ead78af90",
+			"0;8840;3;t;f;f;1160;8b0812fb-39a3-4e69-a19c-35bc6ffc1c63",
+			"0;8839;1;t;f;f;1160;8b0812fb-39a3-4e69-a19c-35bc6ffc1c63",
+			"0;8839;3;f;f;f;1161;246cc7d4-abe7-4ddd-aae4-da1e2fed099a",
+			"0;8838;1;f;f;f;1161;246cc7d4-abe7-4ddd-aae4-da1e2fed099a",
+			"1161;8838;2;f;f;t;0;246cc7d4-abe7-4ddd-aae4-da1e2fed099a",
+			"0;8838;3;t;f;f;1162;0ada153c-af4e-4766-9d97-cbd3130e19eb",
+			"0;8837;1;t;f;f;1162;0ada153c-af4e-4766-9d97-cbd3130e19eb",
+			"0;8837;3;f;f;f;1163;81b1bd92-0592-4450-acc8-85d0665d04c4",
+			"0;8836;1;f;f;f;1163;81b1bd92-0592-4450-acc8-85d0665d04c4",
+			"1163;8836;2;f;f;t;0;81b1bd92-0592-4450-acc8-85d0665d04c4",
+			"0;8836;3;t;f;f;1164;ee794ca1-f3cb-4ef9-9cf4-117f3e6f88d4",
+			"0;8835;1;t;f;f;1164;ee794ca1-f3cb-4ef9-9cf4-117f3e6f88d4",
+			"0;8835;3;f;f;f;1165;57021061-bbf3-4d9a-96eb-50f5d70bea46",
+			"0;8834;1;f;f;f;1165;57021061-bbf3-4d9a-96eb-50f5d70bea46",
+			"1165;8834;2;f;f;t;0;57021061-bbf3-4d9a-96eb-50f5d70bea46",
+			"0;8834;3;t;f;f;1166;f91bd102-39d6-4569-b267-dda8880f625a",
+			"0;8833;1;t;f;f;1166;f91bd102-39d6-4569-b267-dda8880f625a",
+			"0;8833;3;f;f;f;1167;6ca4badc-1075-4706-a737-d411875a59e2",
+			"0;8832;1;f;f;f;1167;6ca4badc-1075-4706-a737-d411875a59e2",
+			"1167;8832;2;f;f;t;0;6ca4badc-1075-4706-a737-d411875a59e2",
+			"0;8832;3;t;f;f;1168;18692645-045d-417a-b2a0-291de6baa378",
+			"0;8831;1;t;f;f;1168;18692645-045d-417a-b2a0-291de6baa378",
+			"0;8831;3;f;f;f;1169;95e829b9-ac3c-42a6-bc79-5cb8cf54c1cb",
+			"0;8830;1;f;f;f;1169;95e829b9-ac3c-42a6-bc79-5cb8cf54c1cb",
+			"1169;8830;2;f;f;t;0;95e829b9-ac3c-42a6-bc79-5cb8cf54c1cb",
+			"0;8830;3;t;f;f;1170;4c14ce62-f75b-4145-aef1-e60652d6f150",
+			"0;8829;1;t;f;f;1170;4c14ce62-f75b-4145-aef1-e60652d6f150",
+			"0;8829;3;f;f;f;1171;999c42a4-5e04-4eec-9a5f-b6426880a4f4",
+			"0;8828;1;f;f;f;1171;999c42a4-5e04-4eec-9a5f-b6426880a4f4",
+			"1171;8828;2;f;f;t;0;999c42a4-5e04-4eec-9a5f-b6426880a4f4",
+			"0;8828;3;t;f;f;1172;63879818-7a21-42fe-a486-a0987e62ec29",
+			"0;8827;1;t;f;f;1172;63879818-7a21-42fe-a486-a0987e62ec29",
+			"0;8827;3;f;f;f;1173;e9d43bb6-5176-401d-938c-44d461f11e65",
+			"0;8826;1;f;f;f;1173;e9d43bb6-5176-401d-938c-44d461f11e65",
+			"1173;8826;2;f;f;t;0;e9d43bb6-5176-401d-938c-44d461f11e65",
+			"0;8826;3;t;f;f;1174;3c37cdd9-2781-4162-a7be-b646227e1107",
+			"0;8825;1;t;f;f;1174;3c37cdd9-2781-4162-a7be-b646227e1107",
+			"0;8825;3;f;f;f;1175;13563dff-1ddc-4543-bcd0-8068893f6be9",
+			"0;8824;1;f;f;f;1175;13563dff-1ddc-4543-bcd0-8068893f6be9",
+			"1175;8824;2;f;f;t;0;13563dff-1ddc-4543-bcd0-8068893f6be9",
+			"0;8824;3;t;f;f;1176;137ddb5f-c2e6-41cc-aa5e-13a8f62c75a1",
+			"0;8823;1;t;f;f;1176;137ddb5f-c2e6-41cc-aa5e-13a8f62c75a1",
+			"0;8823;3;f;f;f;1177;e3ec41af-7e87-4446-a739-488cf5e3d6e8",
+			"0;8822;1;f;f;f;1177;e3ec41af-7e87-4446-a739-488cf5e3d6e8",
+			"1177;8822;2;f;f;t;0;e3ec41af-7e87-4446-a739-488cf5e3d6e8",
+			"0;8822;3;t;f;f;1178;e03e56f7-8e92-4bc2-bd81-04b283f2f896",
+			"0;8821;1;t;f;f;1178;e03e56f7-8e92-4bc2-bd81-04b283f2f896",
+			"0;8821;3;f;f;f;1179;b5846cf0-ddbd-484d-b35a-2ef9eda23599",
+			"0;8820;1;f;f;f;1179;b5846cf0-ddbd-484d-b35a-2ef9eda23599",
+			"1179;8820;2;f;f;t;0;b5846cf0-ddbd-484d-b35a-2ef9eda23599",
+			"0;8820;3;t;f;f;1180;82215050-9ff3-41a2-97d1-426008a8813a",
+			"0;8819;1;t;f;f;1180;82215050-9ff3-41a2-97d1-426008a8813a",
+			"0;8819;3;t;f;f;1181;f3d13f9d-ee50-47ca-9fc9-ac7cc76caa15",
+			"0;8818;1;t;f;f;1181;f3d13f9d-ee50-47ca-9fc9-ac7cc76caa15",
+			"1182;8818;2;f;f;t;0;0862f8d2-bd48-4db4-85ff-7a8ef349220c",
+			"0;8818;3;t;f;f;1182;0862f8d2-bd48-4db4-85ff-7a8ef349220c",
+			"0;8817;1;t;f;f;1182;0862f8d2-bd48-4db4-85ff-7a8ef349220c",
+			"0;8817;3;f;f;f;1183;7cb738eb-80d0-4fde-b4a5-7d3d3fa462ae",
+			"0;8816;1;f;f;f;1183;7cb738eb-80d0-4fde-b4a5-7d3d3fa462ae",
+			"1183;8816;2;f;f;t;0;7cb738eb-80d0-4fde-b4a5-7d3d3fa462ae",
+			"0;8816;3;t;f;f;1184;897576ea-e792-4156-b8c3-69ca01e2254d",
+			"0;8815;1;t;f;f;1184;897576ea-e792-4156-b8c3-69ca01e2254d",
+			"0;8815;3;f;f;f;1185;c3f37be0-6dbf-4bf7-b443-24617df72a54",
+			"0;8814;1;f;f;f;1185;c3f37be0-6dbf-4bf7-b443-24617df72a54",
+			"1185;8814;2;f;f;t;0;c3f37be0-6dbf-4bf7-b443-24617df72a54",
+			"0;8814;3;t;f;f;1186;183f6db1-6ada-4fa1-a4fe-0b9388bd2895",
+			"0;8813;1;t;f;f;1186;183f6db1-6ada-4fa1-a4fe-0b9388bd2895",
+			"0;8813;3;f;f;f;1187;1756c274-28b4-4f79-8126-9340b29578fb",
+			"0;8812;1;f;f;f;1187;1756c274-28b4-4f79-8126-9340b29578fb",
+			"1187;8812;2;f;f;t;0;1756c274-28b4-4f79-8126-9340b29578fb",
+			"0;8812;3;t;f;f;1188;dbd5e162-6f29-4a02-a9c4-d6bdf8efde74",
+			"0;8811;1;t;f;f;1188;dbd5e162-6f29-4a02-a9c4-d6bdf8efde74",
+			"0;8811;3;f;f;f;1189;fedfc62a-dc47-423b-a79b-07f261b9db93",
+			"0;8810;1;f;f;f;1189;fedfc62a-dc47-423b-a79b-07f261b9db93",
+			"1189;8810;2;f;f;t;0;fedfc62a-dc47-423b-a79b-07f261b9db93",
+			"0;8810;3;t;f;f;1190;ab570bb8-3f1c-4326-88f2-ddd43dd8455f",
+			"0;8809;1;t;f;f;1190;ab570bb8-3f1c-4326-88f2-ddd43dd8455f",
+			"0;8809;3;f;f;f;1191;1c8573f8-1d0d-4ed4-a6ec-23f5fd13d92e",
+			"0;8808;1;f;f;f;1191;1c8573f8-1d0d-4ed4-a6ec-23f5fd13d92e",
+			"1191;8808;2;f;f;t;0;1c8573f8-1d0d-4ed4-a6ec-23f5fd13d92e",
+			"0;8808;3;t;f;f;1192;adf2caa4-2472-4f20-b2a0-d67b94dff19a",
+			"0;8807;1;t;f;f;1192;adf2caa4-2472-4f20-b2a0-d67b94dff19a",
+			"0;8807;3;f;f;f;1193;3a85a9cf-f1ba-4b7c-942a-e5b9caa54725",
+			"0;8806;1;f;f;f;1193;3a85a9cf-f1ba-4b7c-942a-e5b9caa54725",
+			"1193;8806;2;f;f;t;0;3a85a9cf-f1ba-4b7c-942a-e5b9caa54725",
+			"0;8806;3;t;f;f;1194;7b04af31-e4f0-49cd-ba7a-74fb7b7f3c39",
+			"0;8805;1;t;f;f;1194;7b04af31-e4f0-49cd-ba7a-74fb7b7f3c39",
+			"0;8805;3;f;f;f;1195;fd38a1da-7b2a-4f40-bf29-7514133708ad",
+			"0;8804;1;f;f;f;1195;fd38a1da-7b2a-4f40-bf29-7514133708ad",
+			"1195;8804;2;f;f;t;0;fd38a1da-7b2a-4f40-bf29-7514133708ad",
+			"0;8804;3;t;f;f;1196;2c56ca92-e7ed-4b30-a37b-c63bbcfdec62",
+			"0;8803;1;t;f;f;1196;2c56ca92-e7ed-4b30-a37b-c63bbcfdec62",
+			"0;8803;3;f;f;f;1197;6d6faf72-b5f1-42a2-90b4-0d9271fe7507",
+			"0;8802;1;f;f;f;1197;6d6faf72-b5f1-42a2-90b4-0d9271fe7507",
+			"1197;8802;2;f;f;t;0;6d6faf72-b5f1-42a2-90b4-0d9271fe7507",
+			"0;8802;3;t;f;f;1198;9d9890eb-58d9-4025-ab20-d92d94b825b7",
+			"0;8801;1;t;f;f;1198;9d9890eb-58d9-4025-ab20-d92d94b825b7",
+			"0;8801;3;f;f;f;1199;fadb708d-a4df-41d9-b3cf-ab8e8496745c",
+			"0;8800;1;f;f;f;1199;fadb708d-a4df-41d9-b3cf-ab8e8496745c",
+			"1199;8800;2;f;f;t;0;fadb708d-a4df-41d9-b3cf-ab8e8496745c",
+			"0;8800;3;t;f;f;1200;94b7e09d-5a72-4e7c-91b0-6a4f2db74e16",
+			"0;8799;1;t;f;f;1200;94b7e09d-5a72-4e7c-91b0-6a4f2db74e16",
+			"0;8799;3;f;f;f;1201;0e5972fc-ac70-41ea-9d75-f6c355340033",
+			"0;8798;1;f;f;f;1201;0e5972fc-ac70-41ea-9d75-f6c355340033",
+			"1201;8798;2;f;f;t;0;0e5972fc-ac70-41ea-9d75-f6c355340033",
+			"0;8798;3;t;f;f;1202;b87d764d-faf3-4281-a4a2-ae9435c2292f",
+			"0;8797;1;t;f;f;1202;b87d764d-faf3-4281-a4a2-ae9435c2292f",
+			"0;8797;3;f;f;f;1203;66824fe9-b37d-4149-99d1-a91b157ebd7c",
+			"0;8796;1;f;f;f;1203;66824fe9-b37d-4149-99d1-a91b157ebd7c",
+			"1203;8796;2;f;f;t;0;66824fe9-b37d-4149-99d1-a91b157ebd7c",
+			"0;8796;3;t;f;f;1204;d0a85322-6c35-4731-b2f3-931aa732e87f",
+			"0;8795;1;t;f;f;1204;d0a85322-6c35-4731-b2f3-931aa732e87f",
+			"0;8795;3;t;f;f;1205;f3bf4841-b3db-4062-a885-8efd807677ba",
+			"0;8794;1;t;f;f;1205;f3bf4841-b3db-4062-a885-8efd807677ba",
+			"1206;8794;2;f;f;t;0;25b9f72f-6838-4f55-8032-d8c38485b7e7",
+			"0;8794;3;t;f;f;1206;25b9f72f-6838-4f55-8032-d8c38485b7e7",
+			"0;8793;1;t;f;f;1206;25b9f72f-6838-4f55-8032-d8c38485b7e7",
+			"0;8793;3;f;f;f;1207;58e166f6-1408-4a9e-a532-6f4aba781428",
+			"0;8792;1;f;f;f;1207;58e166f6-1408-4a9e-a532-6f4aba781428",
+			"1207;8792;2;f;f;t;0;58e166f6-1408-4a9e-a532-6f4aba781428",
+			"0;8792;3;t;f;f;1208;c8e7e461-db39-4889-9a4d-d390b48cbbda",
+			"0;8791;1;t;f;f;1208;c8e7e461-db39-4889-9a4d-d390b48cbbda",
+			"0;8791;3;t;f;f;1209;792d39ad-1d5f-4447-990b-53c3fdc8d1a1",
+			"0;8790;1;t;f;f;1209;792d39ad-1d5f-4447-990b-53c3fdc8d1a1",
+			"1210;8790;2;f;f;t;0;8df69088-91b5-4700-84d3-fe51db110930",
+			"0;8790;3;t;f;f;1210;8df69088-91b5-4700-84d3-fe51db110930",
+			"0;8789;1;t;f;f;1210;8df69088-91b5-4700-84d3-fe51db110930",
+			"0;8789;3;f;f;f;1211;077f6f30-1fd9-4827-8e06-f895e09bb260",
+			"0;8788;1;f;f;f;1211;077f6f30-1fd9-4827-8e06-f895e09bb260",
+			"1211;8788;2;f;f;t;0;077f6f30-1fd9-4827-8e06-f895e09bb260",
+			"0;8788;3;t;f;f;1212;be44eb12-657e-4fd5-b009-46c4ddf5286d",
+			"0;8787;1;t;f;f;1212;be44eb12-657e-4fd5-b009-46c4ddf5286d",
+			"0;8787;3;f;f;f;1213;3dfefc73-d662-46cf-967e-5720d5d62411",
+			"0;8786;1;f;f;f;1213;3dfefc73-d662-46cf-967e-5720d5d62411",
+			"1213;8786;2;f;f;t;0;3dfefc73-d662-46cf-967e-5720d5d62411",
+			"0;8786;3;t;f;f;1214;efdedbac-a041-47e8-971a-74536ea5ad36",
+			"0;8785;1;t;f;f;1214;efdedbac-a041-47e8-971a-74536ea5ad36",
+			"0;8785;3;f;f;f;1215;bc46a4b2-5781-4062-9176-fe086ddb33ff",
+			"0;8784;1;f;f;f;1215;bc46a4b2-5781-4062-9176-fe086ddb33ff",
+			"1215;8784;2;f;f;t;0;bc46a4b2-5781-4062-9176-fe086ddb33ff",
+			"0;8784;3;t;f;f;1216;61411ee6-dff9-4e29-b0d8-05c5213df6e6",
+			"0;8783;1;t;f;f;1216;61411ee6-dff9-4e29-b0d8-05c5213df6e6",
+			"0;8783;3;f;f;f;1217;b7367be2-ba6d-47ab-91a5-11a75aeee8bf",
+			"0;8782;1;f;f;f;1217;b7367be2-ba6d-47ab-91a5-11a75aeee8bf",
+			"1217;8782;2;f;f;t;0;b7367be2-ba6d-47ab-91a5-11a75aeee8bf",
+			"0;8782;3;t;f;f;1218;ca1c0d13-5721-43f2-916c-1e4688525a77",
+			"0;8781;1;t;f;f;1218;ca1c0d13-5721-43f2-916c-1e4688525a77",
+			"0;8781;3;f;f;f;1219;9df890d3-5e8b-4484-bf07-4a672f9fa7f4",
+			"0;8780;1;f;f;f;1219;9df890d3-5e8b-4484-bf07-4a672f9fa7f4",
+			"1219;8780;2;f;f;t;0;9df890d3-5e8b-4484-bf07-4a672f9fa7f4",
+			"0;8780;3;t;f;f;1220;8a48a941-68c9-4b10-8267-e96fce120413",
+			"0;8779;1;t;f;f;1220;8a48a941-68c9-4b10-8267-e96fce120413",
+			"0;8779;3;f;f;f;1221;f1e98e64-fd5a-4b53-8b91-5bec732166be",
+			"0;8778;1;f;f;f;1221;f1e98e64-fd5a-4b53-8b91-5bec732166be",
+			"1221;8778;2;f;f;t;0;f1e98e64-fd5a-4b53-8b91-5bec732166be",
+			"0;8778;3;t;f;f;1222;6cb0a381-4948-4c71-98c8-e0d9dcc360a4",
+			"0;8777;1;t;f;f;1222;6cb0a381-4948-4c71-98c8-e0d9dcc360a4",
+			"0;8777;3;f;f;f;1223;79c39345-9fb2-4174-8b25-1916691b6b44",
+			"0;8776;1;f;f;f;1223;79c39345-9fb2-4174-8b25-1916691b6b44",
+			"1223;8776;2;f;f;t;0;79c39345-9fb2-4174-8b25-1916691b6b44",
+			"0;8776;3;t;f;f;1224;f9002769-6b1a-48a3-977e-178b759d7160",
+			"0;8775;1;t;f;f;1224;f9002769-6b1a-48a3-977e-178b759d7160",
+			"0;8775;3;f;f;f;1225;193f4a35-8cd7-4412-bcb5-8299f34d2c90",
+			"0;8774;1;f;f;f;1225;193f4a35-8cd7-4412-bcb5-8299f34d2c90",
+			"1225;8774;2;f;f;t;0;193f4a35-8cd7-4412-bcb5-8299f34d2c90",
+			"0;8774;3;t;f;f;1226;2915f979-4f64-4a62-b6b1-60f50ab6ce4e",
+			"0;8773;1;t;f;f;1226;2915f979-4f64-4a62-b6b1-60f50ab6ce4e",
+			"0;8773;3;t;f;f;1227;93c9ee56-3798-4a4d-a033-91bd7d12bbd8",
+			"0;8772;1;t;f;f;1227;93c9ee56-3798-4a4d-a033-91bd7d12bbd8",
+			"1228;8772;2;f;f;t;0;1ac5a9ab-c087-4120-82dc-5b7fdaa23621",
+			"0;8772;3;t;f;f;1228;1ac5a9ab-c087-4120-82dc-5b7fdaa23621",
+			"0;8771;1;t;f;f;1228;1ac5a9ab-c087-4120-82dc-5b7fdaa23621",
+			"0;8771;3;f;f;f;1229;d1987a25-e85b-48f0-aae7-b65ba01c7915",
+			"0;8770;1;f;f;f;1229;d1987a25-e85b-48f0-aae7-b65ba01c7915",
+			"1229;8770;2;f;f;t;0;d1987a25-e85b-48f0-aae7-b65ba01c7915",
+			"0;8770;3;t;f;f;1230;5e466723-7313-4602-8d11-a9f3532e61a4",
+			"0;8769;1;t;f;f;1230;5e466723-7313-4602-8d11-a9f3532e61a4",
+			"0;8769;3;t;f;f;1231;0bf89fd8-1405-44d0-b86a-0853a7f634e4",
+			"0;8768;1;t;f;f;1231;0bf89fd8-1405-44d0-b86a-0853a7f634e4",
+			"1232;8768;2;f;f;t;0;c1789709-4b76-41e1-b701-a4d4c661c08c",
+			"0;8768;3;t;f;f;1232;c1789709-4b76-41e1-b701-a4d4c661c08c",
+			"0;8767;1;t;f;f;1232;c1789709-4b76-41e1-b701-a4d4c661c08c",
+			"0;8767;3;f;f;f;1233;d8b3e251-a80e-4911-88d4-d66d84880554",
+			"0;8766;1;f;f;f;1233;d8b3e251-a80e-4911-88d4-d66d84880554",
+			"1233;8766;2;f;f;t;0;d8b3e251-a80e-4911-88d4-d66d84880554",
+			"0;8766;3;t;f;f;1234;39a2a91e-903f-43db-b238-312a62c2c678",
+			"0;8765;1;t;f;f;1234;39a2a91e-903f-43db-b238-312a62c2c678",
+			"0;8765;3;t;f;f;1235;19f8b1dd-22a3-4ac8-b985-ad3d7799e5d0",
+			"0;8764;1;t;f;f;1235;19f8b1dd-22a3-4ac8-b985-ad3d7799e5d0",
+			"1236;8764;2;f;f;t;0;21e81bc3-b8c2-44a2-8ab2-90e7b9330cd6",
+			"0;8764;3;t;f;f;1236;21e81bc3-b8c2-44a2-8ab2-90e7b9330cd6",
+			"0;8763;1;t;f;f;1236;21e81bc3-b8c2-44a2-8ab2-90e7b9330cd6",
+			"0;8763;3;f;f;f;1237;66f75ca9-7fa5-482d-968a-d7c6ed3bba3a",
+			"0;8762;1;f;f;f;1237;66f75ca9-7fa5-482d-968a-d7c6ed3bba3a",
+			"1237;8762;2;f;f;t;0;66f75ca9-7fa5-482d-968a-d7c6ed3bba3a",
+			"0;8762;3;t;f;f;1238;bcb8bf6b-e507-4a8a-a506-d6a6a03fe7f8",
+			"0;8761;1;t;f;f;1238;bcb8bf6b-e507-4a8a-a506-d6a6a03fe7f8",
+			"0;8761;3;t;f;f;1239;096e5a85-451b-4495-9f7a-067f10af85d7",
+			"0;8760;1;t;f;f;1239;096e5a85-451b-4495-9f7a-067f10af85d7",
+			"1240;8760;2;f;f;t;0;5f5c1af0-7217-4aab-9dcb-5b8c97d48073",
+			"0;8760;3;t;f;f;1240;5f5c1af0-7217-4aab-9dcb-5b8c97d48073",
+			"0;8759;1;t;f;f;1240;5f5c1af0-7217-4aab-9dcb-5b8c97d48073",
+			"0;8759;3;f;f;f;1241;6e18508a-e1d6-44c9-976b-62b6858062b0",
+			"0;8758;1;f;f;f;1241;6e18508a-e1d6-44c9-976b-62b6858062b0",
+			"1241;8758;2;f;f;t;0;6e18508a-e1d6-44c9-976b-62b6858062b0",
+			"0;8758;3;t;f;f;1242;9cc7e457-c94a-43e5-b49d-54335ba44db5",
+			"0;8757;1;t;f;f;1242;9cc7e457-c94a-43e5-b49d-54335ba44db5",
+			"0;8757;3;f;f;f;1243;2a892623-fd63-4eeb-983d-8c9b253fe9fe",
+			"0;8756;1;f;f;f;1243;2a892623-fd63-4eeb-983d-8c9b253fe9fe",
+			"1243;8756;2;f;f;t;0;2a892623-fd63-4eeb-983d-8c9b253fe9fe",
+			"0;8756;3;t;f;f;1244;9f7ef9ff-9271-4c3c-ba84-c76739d1c51f",
+			"0;8755;1;t;f;f;1244;9f7ef9ff-9271-4c3c-ba84-c76739d1c51f",
+			"0;8755;3;f;f;f;1245;1570a152-2d91-4aa2-ab39-ccdc7a156cdb",
+			"0;8754;1;f;f;f;1245;1570a152-2d91-4aa2-ab39-ccdc7a156cdb",
+			"1245;8754;2;f;f;t;0;1570a152-2d91-4aa2-ab39-ccdc7a156cdb",
+			"0;8754;3;t;f;f;1246;59bdd2a3-9019-44c6-847e-5e67f33fc5a1",
+			"0;8753;1;t;f;f;1246;59bdd2a3-9019-44c6-847e-5e67f33fc5a1",
+			"0;8753;3;t;f;f;1247;edaf2a67-8d55-44c9-aa69-a08748be422b",
+			"0;8752;1;t;f;f;1247;edaf2a67-8d55-44c9-aa69-a08748be422b",
+			"1248;8752;2;f;f;t;0;ca1c09df-628b-4a9e-b6c5-851f2427c36b",
+			"0;8752;3;t;f;f;1248;ca1c09df-628b-4a9e-b6c5-851f2427c36b",
+			"0;8751;1;t;f;f;1248;ca1c09df-628b-4a9e-b6c5-851f2427c36b",
+			"0;8751;3;f;f;f;1249;a8c6c9c5-92ca-43e9-ae71-2868db3f64c1",
+			"0;8750;1;f;f;f;1249;a8c6c9c5-92ca-43e9-ae71-2868db3f64c1",
+			"1249;8750;2;f;f;t;0;a8c6c9c5-92ca-43e9-ae71-2868db3f64c1",
+			"0;8750;3;t;f;f;1250;e391d47b-62be-4b26-8721-4896fa9507e5",
+			"0;8749;1;t;f;f;1250;e391d47b-62be-4b26-8721-4896fa9507e5",
+			"0;8749;3;t;f;f;1251;20fe4bca-2078-4930-920a-85a8914cd518",
+			"0;8748;1;t;f;f;1251;20fe4bca-2078-4930-920a-85a8914cd518",
+			"1252;8748;2;f;f;t;0;427e407f-b6e0-4077-99d6-0528ff4dced0",
+			"0;8748;3;t;f;f;1252;427e407f-b6e0-4077-99d6-0528ff4dced0",
+			"0;8747;1;t;f;f;1252;427e407f-b6e0-4077-99d6-0528ff4dced0",
+			"0;8747;3;f;f;f;1253;ac37a579-8f1b-47d4-948e-8e7c9d6ad8e4",
+			"0;8746;1;f;f;f;1253;ac37a579-8f1b-47d4-948e-8e7c9d6ad8e4",
+			"1253;8746;2;f;f;t;0;ac37a579-8f1b-47d4-948e-8e7c9d6ad8e4",
+			"0;8746;3;t;f;f;1254;baeaa69b-ec3e-4ab3-a7c4-4d5d16acd014",
+			"0;8745;1;t;f;f;1254;baeaa69b-ec3e-4ab3-a7c4-4d5d16acd014",
+			"0;8745;3;t;f;f;1255;06794cd6-eebc-493a-80db-137119b61e67",
+			"0;8744;1;t;f;f;1255;06794cd6-eebc-493a-80db-137119b61e67",
+			"0;8744;3;f;f;f;1256;5398e73a-0676-4a69-9796-5380ab8adeec",
+			"0;8743;1;f;f;f;1256;5398e73a-0676-4a69-9796-5380ab8adeec",
+			"1256;8743;2;f;f;t;0;5398e73a-0676-4a69-9796-5380ab8adeec",
+			"0;8743;3;f;f;f;1257;7d367dc0-a7ee-4cd9-b6c2-0ce85d93f787",
+			"0;8742;1;f;f;f;1257;7d367dc0-a7ee-4cd9-b6c2-0ce85d93f787",
+			"1257;8742;2;f;f;t;0;7d367dc0-a7ee-4cd9-b6c2-0ce85d93f787",
+			"0;8742;3;t;f;f;1258;6c1cfd38-be74-4dfc-8a79-024a53e1926c",
+			"0;8741;1;t;f;f;1258;6c1cfd38-be74-4dfc-8a79-024a53e1926c",
+			"0;8741;3;t;f;f;1259;096ad74d-76eb-440e-88a5-625b40826c16",
+			"0;8740;1;t;f;f;1259;096ad74d-76eb-440e-88a5-625b40826c16",
+			"1260;8740;2;f;f;t;0;b93d9a14-74be-4cf2-80a3-caaa195ab4b6",
+			"0;8740;3;t;f;f;1260;b93d9a14-74be-4cf2-80a3-caaa195ab4b6",
+			"0;8739;1;t;f;f;1260;b93d9a14-74be-4cf2-80a3-caaa195ab4b6",
+			"0;8739;3;f;f;f;1261;e69da8c2-4047-4e14-8f1c-4c31ea90a8ab",
+			"0;8738;1;f;f;f;1261;e69da8c2-4047-4e14-8f1c-4c31ea90a8ab",
+			"1261;8738;2;f;f;t;0;e69da8c2-4047-4e14-8f1c-4c31ea90a8ab",
+			"0;8738;3;t;f;f;1262;a050b92e-9590-445e-8cd2-e11793883f71",
+			"0;8737;1;t;f;f;1262;a050b92e-9590-445e-8cd2-e11793883f71",
+			"0;8737;3;f;f;f;1263;d81f7138-0975-42a5-aeb4-6839bb17b7e4",
+			"0;8736;1;f;f;f;1263;d81f7138-0975-42a5-aeb4-6839bb17b7e4",
+			"1263;8736;2;f;f;t;0;d81f7138-0975-42a5-aeb4-6839bb17b7e4",
+			"0;8736;3;t;f;f;1264;f460b24f-6970-4258-8791-13f753447f53",
+			"0;8735;1;t;f;f;1264;f460b24f-6970-4258-8791-13f753447f53",
+			"0;8735;3;f;f;f;1265;4ebb0331-bce0-4964-b504-f0719323b457",
+			"0;8734;1;f;f;f;1265;4ebb0331-bce0-4964-b504-f0719323b457",
+			"1265;8734;2;f;f;t;0;4ebb0331-bce0-4964-b504-f0719323b457",
+			"0;8734;3;t;f;f;1266;349efe16-8ba6-44d6-9fdb-ad0cac0788b0",
+			"0;8733;1;t;f;f;1266;349efe16-8ba6-44d6-9fdb-ad0cac0788b0",
+			"0;8733;3;f;f;f;1267;fe9e54f9-f617-4711-b894-06f98b60dfd2",
+			"0;8732;1;f;f;f;1267;fe9e54f9-f617-4711-b894-06f98b60dfd2",
+			"1267;8732;2;f;f;t;0;fe9e54f9-f617-4711-b894-06f98b60dfd2",
+			"0;8732;3;t;f;f;1268;c02a3438-3bdb-48b7-9f6a-10d75c2549a7",
+			"0;8731;1;t;f;f;1268;c02a3438-3bdb-48b7-9f6a-10d75c2549a7",
+			"0;8731;3;f;f;f;1269;681b2957-be1e-403f-b04a-a6b52c7f81ab",
+			"0;8730;1;f;f;f;1269;681b2957-be1e-403f-b04a-a6b52c7f81ab",
+			"1269;8730;2;f;f;t;0;681b2957-be1e-403f-b04a-a6b52c7f81ab",
+			"0;8730;3;t;f;f;1270;4fa8e6d9-ab32-4bae-abbc-97cb4386fa56",
+			"0;8729;1;t;f;f;1270;4fa8e6d9-ab32-4bae-abbc-97cb4386fa56",
+			"0;8729;3;f;f;f;1271;6b939aef-1c7c-4b7c-ad20-90f7433b0dc1",
+			"0;8728;1;f;f;f;1271;6b939aef-1c7c-4b7c-ad20-90f7433b0dc1",
+			"1271;8728;2;f;f;t;0;6b939aef-1c7c-4b7c-ad20-90f7433b0dc1",
+			"0;8728;3;t;f;f;1272;5b11bb87-f6a6-4266-ae70-5ab7d855352f",
+			"0;8727;1;t;f;f;1272;5b11bb87-f6a6-4266-ae70-5ab7d855352f",
+			"0;8727;3;f;f;f;1273;ce02ea99-56a2-42fa-b338-af221896ad8f",
+			"0;8726;1;f;f;f;1273;ce02ea99-56a2-42fa-b338-af221896ad8f",
+			"1273;8726;2;f;f;t;0;ce02ea99-56a2-42fa-b338-af221896ad8f",
+			"0;8726;3;t;f;f;1274;ca82e364-f6c7-4eab-9ea2-0040e231ee78",
+			"0;8725;1;t;f;f;1274;ca82e364-f6c7-4eab-9ea2-0040e231ee78",
+			"0;8725;3;f;f;f;1275;b83afa12-e2fa-4d7a-a2b8-e5f850908e28",
+			"0;8724;1;f;f;f;1275;b83afa12-e2fa-4d7a-a2b8-e5f850908e28",
+			"1275;8724;2;f;f;t;0;b83afa12-e2fa-4d7a-a2b8-e5f850908e28",
+			"0;8724;3;t;f;f;1276;2164c7b6-67bb-4a0b-9e8f-d3f9e5e3ceac",
+			"0;8723;1;t;f;f;1276;2164c7b6-67bb-4a0b-9e8f-d3f9e5e3ceac",
+			"0;8723;3;f;f;f;1277;4528ebeb-db83-47ef-8b4c-310607805b0d",
+			"0;8722;1;f;f;f;1277;4528ebeb-db83-47ef-8b4c-310607805b0d",
+			"1277;8722;2;f;f;t;0;4528ebeb-db83-47ef-8b4c-310607805b0d",
+			"0;8722;3;t;f;f;1278;90759a4e-364c-4593-8337-e7d350c97685",
+			"0;8721;1;t;f;f;1278;90759a4e-364c-4593-8337-e7d350c97685",
+			"0;8721;3;f;f;f;1279;b70e3bc7-8e47-40db-a0a4-10efd79dcb1d",
+			"0;8720;1;f;f;f;1279;b70e3bc7-8e47-40db-a0a4-10efd79dcb1d",
+			"1279;8720;2;f;f;t;0;b70e3bc7-8e47-40db-a0a4-10efd79dcb1d",
+			"0;8720;3;t;f;f;1280;d31b86c1-0f61-4096-bb5e-900edcfd5384",
+			"0;8719;1;t;f;f;1280;d31b86c1-0f61-4096-bb5e-900edcfd5384",
+			"0;8719;3;f;f;f;1281;947c21cc-b2da-44e2-b1dc-a7124589c451",
+			"0;8718;1;f;f;f;1281;947c21cc-b2da-44e2-b1dc-a7124589c451",
+			"1281;8718;2;f;f;t;0;947c21cc-b2da-44e2-b1dc-a7124589c451",
+			"0;8718;3;t;f;f;1282;f99bc8f4-8541-41bf-bb2d-1fb518ddfb64",
+			"0;8717;1;t;f;f;1282;f99bc8f4-8541-41bf-bb2d-1fb518ddfb64",
+			"0;8717;3;t;f;f;1283;5624e685-c69b-4450-b62a-4b43c3103b37",
+			"0;8716;1;t;f;f;1283;5624e685-c69b-4450-b62a-4b43c3103b37",
+			"0;8716;3;f;f;f;1284;0983a524-ac13-4489-b7aa-4cdbd540bb41",
+			"0;8715;1;f;f;f;1284;0983a524-ac13-4489-b7aa-4cdbd540bb41",
+			"1284;8715;2;f;f;t;0;0983a524-ac13-4489-b7aa-4cdbd540bb41",
+			"0;8715;3;f;f;f;1285;a4d6afe5-507f-4436-acd8-d5a1941ec143",
+			"0;8714;1;f;f;f;1285;a4d6afe5-507f-4436-acd8-d5a1941ec143",
+			"1285;8714;2;f;f;t;0;a4d6afe5-507f-4436-acd8-d5a1941ec143",
+			"0;8714;3;t;f;f;1286;714fd8d9-0f96-4208-88f6-c7ce7a7fdcfc",
+			"0;8713;1;t;f;f;1286;714fd8d9-0f96-4208-88f6-c7ce7a7fdcfc",
+			"0;8713;3;f;f;f;1287;9aa4368d-dc1c-4541-8e68-eb97f06f9655",
+			"0;8712;1;f;f;f;1287;9aa4368d-dc1c-4541-8e68-eb97f06f9655",
+			"1287;8712;2;f;f;t;0;9aa4368d-dc1c-4541-8e68-eb97f06f9655",
+			"0;8712;3;t;f;f;1288;b3ad8f07-d28f-4af9-907c-9f154eb3ac58",
+			"0;8711;1;t;f;f;1288;b3ad8f07-d28f-4af9-907c-9f154eb3ac58",
+			"0;8711;3;f;f;f;1289;651c174a-6d6a-4d5e-8a05-3da5d9a4f44b",
+			"0;8710;1;f;f;f;1289;651c174a-6d6a-4d5e-8a05-3da5d9a4f44b",
+			"1289;8710;2;f;f;t;0;651c174a-6d6a-4d5e-8a05-3da5d9a4f44b",
+			"0;8710;3;t;f;f;1290;5b5b0a54-cb86-415b-85d2-3d432efeadbc",
+			"0;8709;1;t;f;f;1290;5b5b0a54-cb86-415b-85d2-3d432efeadbc",
+			"0;8709;3;f;f;f;1291;97b77009-8044-4a49-89f6-2aee7aece722",
+			"0;8708;1;f;f;f;1291;97b77009-8044-4a49-89f6-2aee7aece722",
+			"1291;8708;2;f;f;t;0;97b77009-8044-4a49-89f6-2aee7aece722",
+			"0;8708;3;t;f;f;1292;31da00fb-6825-4f95-ae57-4aaf52498ed6",
+			"0;8707;1;t;f;f;1292;31da00fb-6825-4f95-ae57-4aaf52498ed6",
+			"0;8707;3;f;f;f;1293;1dfe47f5-db1b-4c49-80c1-3538260bcf27",
+			"0;8706;1;f;f;f;1293;1dfe47f5-db1b-4c49-80c1-3538260bcf27",
+			"1293;8706;2;f;f;t;0;1dfe47f5-db1b-4c49-80c1-3538260bcf27",
+			"0;8706;3;t;f;f;1294;b0ace1ec-28ac-4a9b-9888-2d437b788b0e",
+			"0;8705;1;t;f;f;1294;b0ace1ec-28ac-4a9b-9888-2d437b788b0e",
+			"0;8705;3;t;f;f;1295;0626b0bb-2112-4a5f-9e34-0747ac5caa8d",
+			"0;8704;1;t;f;f;1295;0626b0bb-2112-4a5f-9e34-0747ac5caa8d",
+			"1296;8704;2;f;f;t;0;ebfd25ec-0b8e-4c0f-9e50-dbcc4c7e5f70",
+			"0;8704;3;t;f;f;1296;ebfd25ec-0b8e-4c0f-9e50-dbcc4c7e5f70",
+			"0;8703;1;t;f;f;1296;ebfd25ec-0b8e-4c0f-9e50-dbcc4c7e5f70",
+			"0;8703;3;f;f;f;1297;2bc08492-4f92-4e64-a132-9761c289c697",
+			"0;8702;1;f;f;f;1297;2bc08492-4f92-4e64-a132-9761c289c697",
+			"1297;8702;2;f;f;t;0;2bc08492-4f92-4e64-a132-9761c289c697",
+			"0;8702;3;t;f;f;1298;53283158-b84c-41c0-ae1d-78a8e6c1989e",
+			"0;8701;1;t;f;f;1298;53283158-b84c-41c0-ae1d-78a8e6c1989e",
+			"0;8701;3;f;f;f;1299;18013c1d-4251-40f8-be9b-a4e27f962901",
+			"0;8700;1;f;f;f;1299;18013c1d-4251-40f8-be9b-a4e27f962901",
+			"1299;8700;2;f;f;t;0;18013c1d-4251-40f8-be9b-a4e27f962901",
+			"0;8700;3;t;f;f;1300;cce6101e-49de-4575-99b7-d5edcba9d2f2",
+			"0;8699;1;t;f;f;1300;cce6101e-49de-4575-99b7-d5edcba9d2f2",
+			"0;8699;3;f;f;f;1301;f818bc6b-22d1-485e-8340-615e87a504d3",
+			"0;8698;1;f;f;f;1301;f818bc6b-22d1-485e-8340-615e87a504d3",
+			"1301;8698;2;f;f;t;0;f818bc6b-22d1-485e-8340-615e87a504d3",
+			"0;8698;3;t;f;f;1302;2707a820-66af-4621-b41c-f2e01e0fde1f",
+			"0;8697;1;t;f;f;1302;2707a820-66af-4621-b41c-f2e01e0fde1f",
+			"0;8697;3;t;f;f;1303;e8eb9d74-f1eb-4a1f-90c6-7b9dfa2046ca",
+			"0;8696;1;t;f;f;1303;e8eb9d74-f1eb-4a1f-90c6-7b9dfa2046ca",
+			"1304;8696;2;f;f;t;0;9476ba7a-0618-43c7-809d-b16565af1f4d",
+			"0;8696;3;t;f;f;1304;9476ba7a-0618-43c7-809d-b16565af1f4d",
+			"0;8695;1;t;f;f;1304;9476ba7a-0618-43c7-809d-b16565af1f4d",
+			"0;8695;3;f;f;f;1305;416b1cbf-e5eb-4a3c-b460-0257bc8ddacb",
+			"0;8694;1;f;f;f;1305;416b1cbf-e5eb-4a3c-b460-0257bc8ddacb",
+			"1305;8694;2;f;f;t;0;416b1cbf-e5eb-4a3c-b460-0257bc8ddacb",
+			"0;8694;3;t;f;f;1306;a69ea498-9fbe-4460-aed8-4b58ff5b9b45",
+			"0;8693;1;t;f;f;1306;a69ea498-9fbe-4460-aed8-4b58ff5b9b45",
+			"0;8693;3;t;f;f;1307;67c0b88f-1e9f-42d9-ab36-41ca3a2c9155",
+			"0;8692;1;t;f;f;1307;67c0b88f-1e9f-42d9-ab36-41ca3a2c9155",
+			"0;8692;3;f;f;f;1308;fd0a7b1e-7577-4b59-ba4f-9777150c5a65",
+			"0;8691;1;f;f;f;1308;fd0a7b1e-7577-4b59-ba4f-9777150c5a65",
+			"1308;8691;2;f;f;t;0;fd0a7b1e-7577-4b59-ba4f-9777150c5a65",
+			"0;8691;3;f;f;f;1309;ca29fb22-d705-4310-b133-cfae3c519177",
+			"0;8690;1;f;f;f;1309;ca29fb22-d705-4310-b133-cfae3c519177",
+			"1309;8690;2;f;f;t;0;ca29fb22-d705-4310-b133-cfae3c519177",
+			"0;8690;3;t;f;f;1310;08d03f7b-e95e-4833-99b8-961e2e600e69",
+			"0;8689;1;t;f;f;1310;08d03f7b-e95e-4833-99b8-961e2e600e69",
+			"0;8689;3;t;f;f;1311;acbc820e-01dd-43b8-b0f3-e2be076f6eb1",
+			"0;8688;1;t;f;f;1311;acbc820e-01dd-43b8-b0f3-e2be076f6eb1",
+			"0;8688;3;f;f;f;1312;971969b5-b18e-498a-bb38-c2facd0ea240",
+			"0;8687;1;f;f;f;1312;971969b5-b18e-498a-bb38-c2facd0ea240",
+			"1312;8687;2;f;f;t;0;971969b5-b18e-498a-bb38-c2facd0ea240",
+			"0;8687;3;f;f;f;1313;8a656dd3-9fad-48e2-90f1-308c9bcb5aa4",
+			"0;8686;1;f;f;f;1313;8a656dd3-9fad-48e2-90f1-308c9bcb5aa4",
+			"1313;8686;2;f;f;t;0;8a656dd3-9fad-48e2-90f1-308c9bcb5aa4",
+			"0;8686;3;t;f;f;1314;43e62a1b-d1a6-47b4-a12f-8ca331f7367a",
+			"0;8685;1;t;f;f;1314;43e62a1b-d1a6-47b4-a12f-8ca331f7367a",
+			"0;8685;3;f;f;f;1315;d4010989-36a0-4010-a259-62ed8f3f7d9c",
+			"0;8684;1;f;f;f;1315;d4010989-36a0-4010-a259-62ed8f3f7d9c",
+			"1315;8684;2;f;f;t;0;d4010989-36a0-4010-a259-62ed8f3f7d9c",
+			"0;8684;3;t;f;f;1316;4fa6a2b9-a251-4f65-8b4c-d1a45e66e432",
+			"0;8683;1;t;f;f;1316;4fa6a2b9-a251-4f65-8b4c-d1a45e66e432",
+			"0;8683;3;f;f;f;1317;97860061-55bc-4dd8-b728-8599db770c82",
+			"0;8682;1;f;f;f;1317;97860061-55bc-4dd8-b728-8599db770c82",
+			"1317;8682;2;f;f;t;0;97860061-55bc-4dd8-b728-8599db770c82",
+			"0;8682;3;t;f;f;1318;74b7e695-9723-42c2-9f4c-f1fe2b71c042",
+			"0;8681;1;t;f;f;1318;74b7e695-9723-42c2-9f4c-f1fe2b71c042",
+			"0;8681;3;f;f;f;1319;0386b99c-8904-40a1-8373-f7794fdcf58b",
+			"0;8680;1;f;f;f;1319;0386b99c-8904-40a1-8373-f7794fdcf58b",
+			"1319;8680;2;f;f;t;0;0386b99c-8904-40a1-8373-f7794fdcf58b",
+			"0;8680;3;t;f;f;1320;f642c32f-aecd-478f-a6af-c532746aff33",
+			"0;8679;1;t;f;f;1320;f642c32f-aecd-478f-a6af-c532746aff33",
+			"0;8679;3;f;f;f;1321;eac5dea4-ef12-4dbe-81fe-a401b42d288d",
+			"0;8678;1;f;f;f;1321;eac5dea4-ef12-4dbe-81fe-a401b42d288d",
+			"1321;8678;2;f;f;t;0;eac5dea4-ef12-4dbe-81fe-a401b42d288d",
+			"0;8678;3;t;f;f;1322;6578139b-a98a-4450-9902-e813cd1c4473",
+			"0;8677;1;t;f;f;1322;6578139b-a98a-4450-9902-e813cd1c4473",
+			"0;8677;3;f;f;f;1323;687943ec-d61f-49b0-bab6-aa962f1406b6",
+			"0;8676;1;f;f;f;1323;687943ec-d61f-49b0-bab6-aa962f1406b6",
+			"1323;8676;2;f;f;t;0;687943ec-d61f-49b0-bab6-aa962f1406b6",
+			"0;8676;3;t;f;f;1324;99a2da7a-b6e2-4848-9a79-7f7e9be6a54a",
+			"0;8675;1;t;f;f;1324;99a2da7a-b6e2-4848-9a79-7f7e9be6a54a",
+			"0;8675;3;f;f;f;1325;5393cda3-a876-4700-8e3d-bc6cb6a1cd44",
+			"0;8674;1;f;f;f;1325;5393cda3-a876-4700-8e3d-bc6cb6a1cd44",
+			"1325;8674;2;f;f;t;0;5393cda3-a876-4700-8e3d-bc6cb6a1cd44",
+			"0;8674;3;t;f;f;1326;06afd65f-f4f6-442f-9039-d5d990be9675",
+			"0;8673;1;t;f;f;1326;06afd65f-f4f6-442f-9039-d5d990be9675",
+			"0;8673;3;f;f;f;1327;67572c74-adcd-4d9e-8418-3594e78e6334",
+			"0;8672;1;f;f;f;1327;67572c74-adcd-4d9e-8418-3594e78e6334",
+			"1327;8672;2;f;f;t;0;67572c74-adcd-4d9e-8418-3594e78e6334",
+			"0;8672;3;t;f;f;1328;b37d681e-ad3e-46ae-8ff2-8a819c7e5422",
+			"0;8671;1;t;f;f;1328;b37d681e-ad3e-46ae-8ff2-8a819c7e5422",
+			"0;8671;3;f;f;f;1329;71549b0e-3062-41ec-ba7a-3d2b4c46caf5",
+			"0;8670;1;f;f;f;1329;71549b0e-3062-41ec-ba7a-3d2b4c46caf5",
+			"1329;8670;2;f;f;t;0;71549b0e-3062-41ec-ba7a-3d2b4c46caf5",
+			"0;8670;3;t;f;f;1330;dab3ba1d-c649-40ec-a4f8-3d82c8c27caf",
+			"0;8669;1;t;f;f;1330;dab3ba1d-c649-40ec-a4f8-3d82c8c27caf",
+			"0;8669;3;t;f;f;1331;d228eaeb-c92b-42b3-85f5-3fb4a49e387f",
+			"0;8668;1;t;f;f;1331;d228eaeb-c92b-42b3-85f5-3fb4a49e387f",
+			"1332;8668;2;f;f;t;0;e00562ef-c633-433e-9b15-267507cc3fce",
+			"0;8668;3;t;f;f;1332;e00562ef-c633-433e-9b15-267507cc3fce",
+			"0;8667;1;t;f;f;1332;e00562ef-c633-433e-9b15-267507cc3fce",
+			"0;8667;3;f;f;f;1333;b95c9fd8-d23e-4230-aa48-bcb5dcdcd305",
+			"0;8666;1;f;f;f;1333;b95c9fd8-d23e-4230-aa48-bcb5dcdcd305",
+			"1333;8666;2;f;f;t;0;b95c9fd8-d23e-4230-aa48-bcb5dcdcd305",
+			"0;8666;3;t;f;f;1334;3119eedb-fc3b-4ce8-8c66-fae9ae259941",
+			"0;8665;1;t;f;f;1334;3119eedb-fc3b-4ce8-8c66-fae9ae259941",
+			"0;8665;3;t;f;f;1335;10745f8f-7e96-4e03-9381-d93adbe321a0",
+			"0;8664;1;t;f;f;1335;10745f8f-7e96-4e03-9381-d93adbe321a0",
+			"1336;8664;2;f;f;t;0;c16b543b-db4f-417b-a164-a3b0edb9ad5b",
+			"0;8664;3;t;f;f;1336;c16b543b-db4f-417b-a164-a3b0edb9ad5b",
+			"0;8663;1;t;f;f;1336;c16b543b-db4f-417b-a164-a3b0edb9ad5b",
+			"0;8663;3;f;f;f;1337;b0e5c601-d357-44aa-a1a0-f3f30bef2b91",
+			"0;8662;1;f;f;f;1337;b0e5c601-d357-44aa-a1a0-f3f30bef2b91",
+			"1337;8662;2;f;f;t;0;b0e5c601-d357-44aa-a1a0-f3f30bef2b91",
+			"0;8662;3;t;f;f;1338;1603543f-4442-454b-82a5-0ffde1ceccaa",
+			"0;8661;1;t;f;f;1338;1603543f-4442-454b-82a5-0ffde1ceccaa",
+			"0;8661;3;t;f;f;1339;a0a88296-6b03-489d-b86e-a603cda838c7",
+			"0;8660;1;t;f;f;1339;a0a88296-6b03-489d-b86e-a603cda838c7",
+			"1340;8660;2;f;f;t;0;6353336d-7470-4bea-8fce-1f11a54f843f",
+			"0;8660;3;t;f;f;1340;6353336d-7470-4bea-8fce-1f11a54f843f",
+			"0;8659;1;t;f;f;1340;6353336d-7470-4bea-8fce-1f11a54f843f",
+			"0;8659;3;f;f;f;1341;f6fe454a-8ad0-4e95-8367-b031c73543ca",
+			"0;8658;1;f;f;f;1341;f6fe454a-8ad0-4e95-8367-b031c73543ca",
+			"1341;8658;2;f;f;t;0;f6fe454a-8ad0-4e95-8367-b031c73543ca",
+			"0;8658;3;t;f;f;1342;7ba89588-83af-435f-b9bc-6acd36f9087b",
+			"0;8657;1;t;f;f;1342;7ba89588-83af-435f-b9bc-6acd36f9087b",
+			"0;8657;3;t;f;f;1343;10e8ed74-efc6-437f-9cba-6033dd52db09",
+			"0;8656;1;t;f;f;1343;10e8ed74-efc6-437f-9cba-6033dd52db09",
+			"1344;8656;2;f;f;t;0;eca2f766-86d9-45bd-b0bc-69914b211f93",
+			"0;8656;3;t;f;f;1344;eca2f766-86d9-45bd-b0bc-69914b211f93",
+			"0;8655;1;t;f;f;1344;eca2f766-86d9-45bd-b0bc-69914b211f93",
+			"0;8655;3;f;f;f;1345;f046bb2b-957d-4c90-a8f6-ad31feb2591d",
+			"0;8654;1;f;f;f;1345;f046bb2b-957d-4c90-a8f6-ad31feb2591d",
+			"1345;8654;2;f;f;t;0;f046bb2b-957d-4c90-a8f6-ad31feb2591d",
+			"0;8654;3;t;f;f;1346;03049502-54e3-4cb0-9093-1c4bd62466ef",
+			"0;8653;1;t;f;f;1346;03049502-54e3-4cb0-9093-1c4bd62466ef",
+			"0;8653;3;f;f;f;1347;6b0556b7-2cdd-4846-9ae4-6dae7cd9701d",
+			"0;8652;1;f;f;f;1347;6b0556b7-2cdd-4846-9ae4-6dae7cd9701d",
+			"1347;8652;2;f;f;t;0;6b0556b7-2cdd-4846-9ae4-6dae7cd9701d",
+			"0;8652;3;t;f;f;1348;928ff974-288f-4cc5-af32-47432f889bbd",
+			"0;8651;1;t;f;f;1348;928ff974-288f-4cc5-af32-47432f889bbd",
+			"0;8651;3;f;f;f;1349;fd5a2a92-ec38-45dd-9ad9-8d96c3cc978f",
+			"0;8650;1;f;f;f;1349;fd5a2a92-ec38-45dd-9ad9-8d96c3cc978f",
+			"1349;8650;2;f;f;t;0;fd5a2a92-ec38-45dd-9ad9-8d96c3cc978f",
+			"0;8650;3;t;f;f;1350;a87abc5c-45d8-42f4-adcd-c159e4f34853",
+			"0;8649;1;t;f;f;1350;a87abc5c-45d8-42f4-adcd-c159e4f34853",
+			"0;8649;3;f;f;f;1351;76ead4d9-fafa-41b7-abad-a7bed6cfe7a6",
+			"0;8648;1;f;f;f;1351;76ead4d9-fafa-41b7-abad-a7bed6cfe7a6",
+			"1351;8648;2;f;f;t;0;76ead4d9-fafa-41b7-abad-a7bed6cfe7a6",
+			"0;8648;3;t;f;f;1352;e833fba6-e2da-49b0-a93f-b293fe7541f6",
+			"0;8647;1;t;f;f;1352;e833fba6-e2da-49b0-a93f-b293fe7541f6",
+			"0;8647;3;f;f;f;1353;8cd3bbf5-b726-4d62-97d2-8bfe06a47ca4",
+			"0;8646;1;f;f;f;1353;8cd3bbf5-b726-4d62-97d2-8bfe06a47ca4",
+			"1353;8646;2;f;f;t;0;8cd3bbf5-b726-4d62-97d2-8bfe06a47ca4",
+			"0;8646;3;t;f;f;1354;2eb89337-3af3-4e97-8979-970417ab441f",
+			"0;8645;1;t;f;f;1354;2eb89337-3af3-4e97-8979-970417ab441f",
+			"0;8645;3;t;f;f;1355;edba4a2b-d7ba-434c-aa3e-6e8bd87f2df0",
+			"0;8644;1;t;f;f;1355;edba4a2b-d7ba-434c-aa3e-6e8bd87f2df0",
+			"1356;8644;2;f;f;t;0;636f946c-6a6a-4464-ac27-b6ed61cc0834",
+			"0;8644;3;t;f;f;1356;636f946c-6a6a-4464-ac27-b6ed61cc0834",
+			"0;8643;1;t;f;f;1356;636f946c-6a6a-4464-ac27-b6ed61cc0834",
+			"0;8643;3;f;f;f;1357;c4a73155-63ad-4df6-ab39-6bd2d34fe34c",
+			"0;8642;1;f;f;f;1357;c4a73155-63ad-4df6-ab39-6bd2d34fe34c",
+			"1357;8642;2;f;f;t;0;c4a73155-63ad-4df6-ab39-6bd2d34fe34c",
+			"0;8642;3;t;f;f;1358;23d19b6a-4a31-43b7-a103-498835fac22e",
+			"0;8641;1;t;f;f;1358;23d19b6a-4a31-43b7-a103-498835fac22e",
+			"0;8641;3;f;f;f;1359;cd61f56c-f894-42de-b3cc-5e4408532fa3",
+			"0;8640;1;f;f;f;1359;cd61f56c-f894-42de-b3cc-5e4408532fa3",
+			"1359;8640;2;f;f;t;0;cd61f56c-f894-42de-b3cc-5e4408532fa3",
+			"0;8640;3;t;f;f;1360;d65546b3-0160-4c04-b3db-643f593efd0d",
+			"0;8639;1;t;f;f;1360;d65546b3-0160-4c04-b3db-643f593efd0d",
+			"0;8639;3;f;f;f;1361;2bc21a29-6f3b-41cd-b6e1-79cc6f80735b",
+			"0;8638;1;f;f;f;1361;2bc21a29-6f3b-41cd-b6e1-79cc6f80735b",
+			"1361;8638;2;f;f;t;0;2bc21a29-6f3b-41cd-b6e1-79cc6f80735b",
+			"0;8638;3;t;f;f;1362;fa088caf-36b6-4869-9fc3-a1ac72289b73",
+			"0;8637;1;t;f;f;1362;fa088caf-36b6-4869-9fc3-a1ac72289b73",
+			"0;8637;3;f;f;f;1363;8c78ee25-9191-46ac-b709-f471afe76dd6",
+			"0;8636;1;f;f;f;1363;8c78ee25-9191-46ac-b709-f471afe76dd6",
+			"1363;8636;2;f;f;t;0;8c78ee25-9191-46ac-b709-f471afe76dd6",
+			"0;8636;3;t;f;f;1364;5a339ee3-ad42-47e6-92c0-07a33a690c46",
+			"0;8635;1;t;f;f;1364;5a339ee3-ad42-47e6-92c0-07a33a690c46",
+			"0;8635;3;f;f;f;1365;9c15b271-eb44-42d6-a178-6c858137078f",
+			"0;8634;1;f;f;f;1365;9c15b271-eb44-42d6-a178-6c858137078f",
+			"1365;8634;2;f;f;t;0;9c15b271-eb44-42d6-a178-6c858137078f",
+			"0;8634;3;t;f;f;1366;e8142120-5fdf-4d98-933b-ab7e7e659d38",
+			"0;8633;1;t;f;f;1366;e8142120-5fdf-4d98-933b-ab7e7e659d38",
+			"0;8633;3;f;f;f;1367;18ccb0ef-8dad-4d0f-a015-ba04c52a3ff2",
+			"0;8632;1;f;f;f;1367;18ccb0ef-8dad-4d0f-a015-ba04c52a3ff2",
+			"1367;8632;2;f;f;t;0;18ccb0ef-8dad-4d0f-a015-ba04c52a3ff2",
+			"0;8632;3;t;f;f;1368;c3cb35fb-b9ea-4c50-a520-95edb859d08f",
+			"0;8631;1;t;f;f;1368;c3cb35fb-b9ea-4c50-a520-95edb859d08f",
+			"0;8631;3;f;f;f;1369;cbb93e0d-5d75-4ad9-819f-759283454bd9",
+			"0;8630;1;f;f;f;1369;cbb93e0d-5d75-4ad9-819f-759283454bd9",
+			"1369;8630;2;f;f;t;0;cbb93e0d-5d75-4ad9-819f-759283454bd9",
+			"0;8630;3;t;f;f;1370;b6d06749-392e-40e4-8fda-97c662dd9234",
+			"0;8629;1;t;f;f;1370;b6d06749-392e-40e4-8fda-97c662dd9234",
+			"0;8629;3;f;f;f;1371;3f4d2b0c-e434-49bd-854b-d5bbb54ca528",
+			"0;8628;1;f;f;f;1371;3f4d2b0c-e434-49bd-854b-d5bbb54ca528",
+			"1371;8628;2;f;f;t;0;3f4d2b0c-e434-49bd-854b-d5bbb54ca528",
+			"0;8628;3;t;f;f;1372;145cda3a-57b5-4c93-9f0b-0d804f6162cc",
+			"0;8627;1;t;f;f;1372;145cda3a-57b5-4c93-9f0b-0d804f6162cc",
+			"0;8627;3;f;f;f;1373;8846a175-3dbd-4f99-9a23-fdae1283717e",
+			"0;8626;1;f;f;f;1373;8846a175-3dbd-4f99-9a23-fdae1283717e",
+			"1373;8626;2;f;f;t;0;8846a175-3dbd-4f99-9a23-fdae1283717e",
+			"0;8626;3;t;f;f;1374;9c92ec6c-6c3d-47f8-b4c1-489058b6fe85",
+			"0;8625;1;t;f;f;1374;9c92ec6c-6c3d-47f8-b4c1-489058b6fe85",
+			"0;8625;3;t;f;f;1375;a2155aba-b89a-455c-b400-2961aaab8b32",
+			"0;8624;1;t;f;f;1375;a2155aba-b89a-455c-b400-2961aaab8b32",
+			"1376;8624;2;f;f;t;0;ad580bb1-1fa4-48ad-849b-a06e2cb18f35",
+			"0;8624;3;t;f;f;1376;ad580bb1-1fa4-48ad-849b-a06e2cb18f35",
+			"0;8623;1;t;f;f;1376;ad580bb1-1fa4-48ad-849b-a06e2cb18f35",
+			"0;8623;3;f;f;f;1377;2e4eff29-6613-4667-bce3-cca61c0f355a",
+			"0;8622;1;f;f;f;1377;2e4eff29-6613-4667-bce3-cca61c0f355a",
+			"1377;8622;2;f;f;t;0;2e4eff29-6613-4667-bce3-cca61c0f355a",
+			"0;8622;3;t;f;f;1378;3f29a4eb-7ba7-4497-a961-d5b94f955090",
+			"0;8621;1;t;f;f;1378;3f29a4eb-7ba7-4497-a961-d5b94f955090",
+			"0;8621;3;f;f;f;1379;0c07cc77-2f48-45d4-998f-88f66199f8bf",
+			"0;8620;1;f;f;f;1379;0c07cc77-2f48-45d4-998f-88f66199f8bf",
+			"1379;8620;2;f;f;t;0;0c07cc77-2f48-45d4-998f-88f66199f8bf",
+			"0;8620;3;t;f;f;1380;43a7cc34-80dc-4009-a949-74b6b7093b5d",
+			"0;8619;1;t;f;f;1380;43a7cc34-80dc-4009-a949-74b6b7093b5d",
+			"0;8619;3;f;f;f;1381;38b49133-7ba3-4ee1-9f28-10dae0edf68e",
+			"0;8618;1;f;f;f;1381;38b49133-7ba3-4ee1-9f28-10dae0edf68e",
+			"1381;8618;2;f;f;t;0;38b49133-7ba3-4ee1-9f28-10dae0edf68e",
+			"0;8618;3;t;f;f;1382;8477ad78-4371-4c07-adfd-7ceb78e79939",
+			"0;8617;1;t;f;f;1382;8477ad78-4371-4c07-adfd-7ceb78e79939",
+			"0;8617;3;f;f;f;1383;9b4d4366-2e33-42c7-85b3-9e9214400035",
+			"0;8616;1;f;f;f;1383;9b4d4366-2e33-42c7-85b3-9e9214400035",
+			"1383;8616;2;f;f;t;0;9b4d4366-2e33-42c7-85b3-9e9214400035",
+			"0;8616;3;t;f;f;1384;3b20c1b0-57f2-42d2-a1bf-82d3d8d2922e",
+			"0;8615;1;t;f;f;1384;3b20c1b0-57f2-42d2-a1bf-82d3d8d2922e",
+			"0;8615;3;f;f;f;1385;d8d881f4-58dc-48ca-be30-c4f99e6cc497",
+			"0;8614;1;f;f;f;1385;d8d881f4-58dc-48ca-be30-c4f99e6cc497",
+			"1385;8614;2;f;f;t;0;d8d881f4-58dc-48ca-be30-c4f99e6cc497",
+			"0;8614;3;t;f;f;1386;1994a4db-28dc-4d7a-899d-6e276e6d2bbc",
+			"0;8613;1;t;f;f;1386;1994a4db-28dc-4d7a-899d-6e276e6d2bbc",
+			"0;8613;3;f;f;f;1387;e1b0c104-9531-4366-8c1b-691ede6904cd",
+			"0;8612;1;f;f;f;1387;e1b0c104-9531-4366-8c1b-691ede6904cd",
+			"1387;8612;2;f;f;t;0;e1b0c104-9531-4366-8c1b-691ede6904cd",
+			"0;8612;3;t;f;f;1388;ab08eda9-e299-46b3-b3a0-5e7a6425a9bb",
+			"0;8611;1;t;f;f;1388;ab08eda9-e299-46b3-b3a0-5e7a6425a9bb",
+			"0;8611;3;f;f;f;1389;af3d286a-1628-4882-999f-adf2db8ba975",
+			"0;8610;1;f;f;f;1389;af3d286a-1628-4882-999f-adf2db8ba975",
+			"1389;8610;2;f;f;t;0;af3d286a-1628-4882-999f-adf2db8ba975",
+			"0;8610;3;t;f;f;1390;296c2964-f5ef-4566-945e-da8d7174364b",
+			"0;8609;1;t;f;f;1390;296c2964-f5ef-4566-945e-da8d7174364b",
+			"0;8609;3;f;f;f;1391;cbb2751a-5e51-40e8-b533-bc49699f3c74",
+			"0;8608;1;f;f;f;1391;cbb2751a-5e51-40e8-b533-bc49699f3c74",
+			"1391;8608;2;f;f;t;0;cbb2751a-5e51-40e8-b533-bc49699f3c74",
+			"0;8608;3;t;f;f;1392;9703dc89-7738-41b8-9ec8-d76bbbe18ab3",
+			"0;8607;1;t;f;f;1392;9703dc89-7738-41b8-9ec8-d76bbbe18ab3",
+			"0;8607;3;f;f;f;1393;eeb54afc-1bb6-499b-8655-617f8bd67d9f",
+			"0;8606;1;f;f;f;1393;eeb54afc-1bb6-499b-8655-617f8bd67d9f",
+			"1393;8606;2;f;f;t;0;eeb54afc-1bb6-499b-8655-617f8bd67d9f",
+			"0;8606;3;t;f;f;1394;34dd9a3c-4063-41bd-9673-830f8ff40cd3",
+			"0;8605;1;t;f;f;1394;34dd9a3c-4063-41bd-9673-830f8ff40cd3",
+			"0;8605;3;f;f;f;1395;98f67dcc-5af1-4ada-a2b1-d4607dcc6b61",
+			"0;8604;1;f;f;f;1395;98f67dcc-5af1-4ada-a2b1-d4607dcc6b61",
+			"1395;8604;2;f;f;t;0;98f67dcc-5af1-4ada-a2b1-d4607dcc6b61",
+			"0;8604;3;t;f;f;1396;83ab65e5-bda9-491c-a839-b2a19b253c07",
+			"0;8603;1;t;f;f;1396;83ab65e5-bda9-491c-a839-b2a19b253c07",
+			"0;8603;3;f;f;f;1397;d49ead67-6e00-4f07-916b-f7ce52ab817f",
+			"0;8602;1;f;f;f;1397;d49ead67-6e00-4f07-916b-f7ce52ab817f",
+			"1397;8602;2;f;f;t;0;d49ead67-6e00-4f07-916b-f7ce52ab817f",
+			"0;8602;3;t;f;f;1398;0f88eb9e-a60c-445a-8bac-233e39adf30b",
+			"0;8601;1;t;f;f;1398;0f88eb9e-a60c-445a-8bac-233e39adf30b",
+			"0;8601;3;f;f;f;1399;613a1987-1e7a-4e19-8aa6-96afb0263e6d",
+			"0;8600;1;f;f;f;1399;613a1987-1e7a-4e19-8aa6-96afb0263e6d",
+			"1399;8600;2;f;f;t;0;613a1987-1e7a-4e19-8aa6-96afb0263e6d",
+			"0;8600;3;t;f;f;1400;0f768adc-be28-47bc-9923-69bcc0694ed6",
+			"0;8599;1;t;f;f;1400;0f768adc-be28-47bc-9923-69bcc0694ed6",
+			"0;8599;3;f;f;f;1401;f8a7b6c2-241f-4fc0-96d9-998713f05705",
+			"0;8598;1;f;f;f;1401;f8a7b6c2-241f-4fc0-96d9-998713f05705",
+			"1401;8598;2;f;f;t;0;f8a7b6c2-241f-4fc0-96d9-998713f05705",
+			"0;8598;3;t;f;f;1402;beb2581e-92a2-4271-ba89-87c560227120",
+			"0;8597;1;t;f;f;1402;beb2581e-92a2-4271-ba89-87c560227120",
+			"0;8597;3;f;f;f;1403;860e4737-837b-49a5-aca4-eb672be4653c",
+			"0;8596;1;f;f;f;1403;860e4737-837b-49a5-aca4-eb672be4653c",
+			"1403;8596;2;f;f;t;0;860e4737-837b-49a5-aca4-eb672be4653c",
+			"0;8596;3;t;f;f;1404;e6b968d4-86d6-4c66-93aa-d86db4115ab5",
+			"0;8595;1;t;f;f;1404;e6b968d4-86d6-4c66-93aa-d86db4115ab5",
+			"0;8595;3;f;f;f;1405;6fa67f5f-25f9-4c18-9159-6425e394f576",
+			"0;8594;1;f;f;f;1405;6fa67f5f-25f9-4c18-9159-6425e394f576",
+			"1405;8594;2;f;f;t;0;6fa67f5f-25f9-4c18-9159-6425e394f576",
+			"0;8594;3;t;f;f;1406;b0832885-6812-4879-86e6-a32f7f552193",
+			"0;8593;1;t;f;f;1406;b0832885-6812-4879-86e6-a32f7f552193",
+			"0;8593;3;f;f;f;1407;ff79bf11-dcb2-491b-a75f-6ff680f5b93e",
+			"0;8592;1;f;f;f;1407;ff79bf11-dcb2-491b-a75f-6ff680f5b93e",
+			"1407;8592;2;f;f;t;0;ff79bf11-dcb2-491b-a75f-6ff680f5b93e",
+			"0;8592;3;t;f;f;1408;a7865101-8b57-465d-b3c8-5976eb228371",
+			"0;8591;1;t;f;f;1408;a7865101-8b57-465d-b3c8-5976eb228371",
+			"0;8591;3;f;f;f;1409;b9c2c7b0-ac91-447e-95e4-bf1e18841d42",
+			"0;8590;1;f;f;f;1409;b9c2c7b0-ac91-447e-95e4-bf1e18841d42",
+			"1409;8590;2;f;f;t;0;b9c2c7b0-ac91-447e-95e4-bf1e18841d42",
+			"0;8590;3;t;f;f;1410;0312e0f5-319d-4471-8eff-55e3176629f9",
+			"0;8589;1;t;f;f;1410;0312e0f5-319d-4471-8eff-55e3176629f9",
+			"0;8589;3;f;f;f;1411;c9c5c3b8-b56d-47aa-bfa4-46f46508fe1b",
+			"0;8588;1;f;f;f;1411;c9c5c3b8-b56d-47aa-bfa4-46f46508fe1b",
+			"1411;8588;2;f;f;t;0;c9c5c3b8-b56d-47aa-bfa4-46f46508fe1b",
+			"0;8588;3;t;f;f;1412;65998618-4123-4dff-a3b4-0d5b41caa088",
+			"0;8587;1;t;f;f;1412;65998618-4123-4dff-a3b4-0d5b41caa088",
+			"0;8587;3;f;f;f;1413;5fe00940-c744-4c6a-886c-d57a98727fdb",
+			"0;8586;1;f;f;f;1413;5fe00940-c744-4c6a-886c-d57a98727fdb",
+			"1413;8586;2;f;f;t;0;5fe00940-c744-4c6a-886c-d57a98727fdb",
+			"0;8586;3;t;f;f;1414;f690cd9d-83b9-4a4c-92be-d65277c7ab25",
+			"0;8585;1;t;f;f;1414;f690cd9d-83b9-4a4c-92be-d65277c7ab25",
+			"0;8585;3;f;f;f;1415;fd4c4130-fa78-428a-a941-bf0a2cfea25b",
+			"0;8584;1;f;f;f;1415;fd4c4130-fa78-428a-a941-bf0a2cfea25b",
+			"1415;8584;2;f;f;t;0;fd4c4130-fa78-428a-a941-bf0a2cfea25b",
+			"0;8584;3;t;f;f;1416;c18d7449-fee9-47f2-82f1-c3093e40cd25",
+			"0;8583;1;t;f;f;1416;c18d7449-fee9-47f2-82f1-c3093e40cd25",
+			"0;8583;3;f;f;f;1417;bd61f77b-577d-47e1-a221-8d4e66864559",
+			"0;8582;1;f;f;f;1417;bd61f77b-577d-47e1-a221-8d4e66864559",
+			"1417;8582;2;f;f;t;0;bd61f77b-577d-47e1-a221-8d4e66864559",
+			"0;8582;3;t;f;f;1418;bc87c997-b9b5-4fd8-90bf-472421119a8f",
+			"0;8581;1;t;f;f;1418;bc87c997-b9b5-4fd8-90bf-472421119a8f",
+			"0;8581;3;f;f;f;1419;4ee81f68-4b5f-4c24-ae58-a2d70d1341a2",
+			"0;8580;1;f;f;f;1419;4ee81f68-4b5f-4c24-ae58-a2d70d1341a2",
+			"1419;8580;2;f;f;t;0;4ee81f68-4b5f-4c24-ae58-a2d70d1341a2",
+			"0;8580;3;t;f;f;1420;9947d9b8-5ec7-493d-959c-9cc5b8c7500c",
+			"0;8579;1;t;f;f;1420;9947d9b8-5ec7-493d-959c-9cc5b8c7500c",
+			"0;8579;3;f;f;f;1421;ed0c84dc-223a-4773-a1c2-8fed86a92a55",
+			"0;8578;1;f;f;f;1421;ed0c84dc-223a-4773-a1c2-8fed86a92a55",
+			"1421;8578;2;f;f;t;0;ed0c84dc-223a-4773-a1c2-8fed86a92a55",
+			"0;8578;3;t;f;f;1422;3c64e33f-834d-4afc-8e1f-b81a725d473b",
+			"0;8577;1;t;f;f;1422;3c64e33f-834d-4afc-8e1f-b81a725d473b",
+			"0;8577;3;f;f;f;1423;0736f95e-1aed-40dd-902a-e5b43595a752",
+			"0;8576;1;f;f;f;1423;0736f95e-1aed-40dd-902a-e5b43595a752",
+			"1423;8576;2;f;f;t;0;0736f95e-1aed-40dd-902a-e5b43595a752",
+			"0;8576;3;t;f;f;1424;c75103db-9005-469d-897e-9bae176d147b",
+			"0;8575;1;t;f;f;1424;c75103db-9005-469d-897e-9bae176d147b",
+			"0;8575;3;t;f;f;1425;32b4f9df-bfc4-40a3-b093-6da8ebf3e228",
+			"0;8574;1;t;f;f;1425;32b4f9df-bfc4-40a3-b093-6da8ebf3e228",
+			"1426;8574;2;f;f;t;0;58a58c36-cad9-4835-a9cc-881a276c1a8b",
+			"0;8574;3;t;f;f;1426;58a58c36-cad9-4835-a9cc-881a276c1a8b",
+			"0;8573;1;t;f;f;1426;58a58c36-cad9-4835-a9cc-881a276c1a8b",
+			"0;8573;3;f;f;f;1427;bf8938d6-d0ff-4cd7-9b9c-f3f3dda7b750",
+			"0;8572;1;f;f;f;1427;bf8938d6-d0ff-4cd7-9b9c-f3f3dda7b750",
+			"1427;8572;2;f;f;t;0;bf8938d6-d0ff-4cd7-9b9c-f3f3dda7b750",
+			"0;8572;3;t;f;f;1428;cc06c1f6-5f54-4c52-bc8b-3d2fea6da04c",
+			"0;8571;1;t;f;f;1428;cc06c1f6-5f54-4c52-bc8b-3d2fea6da04c",
+			"0;8571;3;f;f;f;1429;9be8e4c9-8259-4164-a822-6c7021ba0827",
+			"0;8570;1;f;f;f;1429;9be8e4c9-8259-4164-a822-6c7021ba0827",
+			"1429;8570;2;f;f;t;0;9be8e4c9-8259-4164-a822-6c7021ba0827",
+			"0;8570;3;t;f;f;1430;b0bf8030-ddf3-45d5-bd05-a57a811a938c",
+			"0;8569;1;t;f;f;1430;b0bf8030-ddf3-45d5-bd05-a57a811a938c",
+			"0;8569;3;f;f;f;1431;61bd18a9-4be4-465b-b6f4-f0f521740849",
+			"0;8568;1;f;f;f;1431;61bd18a9-4be4-465b-b6f4-f0f521740849",
+			"1431;8568;2;f;f;t;0;61bd18a9-4be4-465b-b6f4-f0f521740849",
+			"0;8568;3;t;f;f;1432;13e6f515-e109-4561-bff8-28edbefc3f0c",
+			"0;8567;1;t;f;f;1432;13e6f515-e109-4561-bff8-28edbefc3f0c",
+			"0;8567;3;f;f;f;1433;4e4a0201-a08d-443f-b857-4a7fb3ae9d3a",
+			"0;8566;1;f;f;f;1433;4e4a0201-a08d-443f-b857-4a7fb3ae9d3a",
+			"1433;8566;2;f;f;t;0;4e4a0201-a08d-443f-b857-4a7fb3ae9d3a",
+			"0;8566;3;t;f;f;1434;1f9ba5d4-296a-425f-9ab5-017cc3b3c38e",
+			"0;8565;1;t;f;f;1434;1f9ba5d4-296a-425f-9ab5-017cc3b3c38e",
+			"0;8565;3;f;f;f;1435;bb6c4fb9-9ba7-4185-86fe-965429fab71a",
+			"0;8564;1;f;f;f;1435;bb6c4fb9-9ba7-4185-86fe-965429fab71a",
+			"1435;8564;2;f;f;t;0;bb6c4fb9-9ba7-4185-86fe-965429fab71a",
+			"0;8564;3;t;f;f;1436;361c625e-0d3c-4295-b383-755f4d4670a4",
+			"0;8563;1;t;f;f;1436;361c625e-0d3c-4295-b383-755f4d4670a4",
+			"0;8563;3;f;f;f;1437;e46dd4f0-f9ae-4904-a7ed-7b0e2fea4e9b",
+			"0;8562;1;f;f;f;1437;e46dd4f0-f9ae-4904-a7ed-7b0e2fea4e9b",
+			"1437;8562;2;f;f;t;0;e46dd4f0-f9ae-4904-a7ed-7b0e2fea4e9b",
+			"0;8562;3;t;f;f;1438;867f5045-5f1b-4518-bb63-b8f4283d13a6",
+			"0;8561;1;t;f;f;1438;867f5045-5f1b-4518-bb63-b8f4283d13a6",
+			"0;8561;3;f;f;f;1439;dcddd51c-4e5b-4213-852a-9faec82f1156",
+			"0;8560;1;f;f;f;1439;dcddd51c-4e5b-4213-852a-9faec82f1156",
+			"1439;8560;2;f;f;t;0;dcddd51c-4e5b-4213-852a-9faec82f1156",
+			"0;8560;3;t;f;f;1440;e8667b32-8058-4533-86a5-aeff8dfbe0f2",
+			"0;8559;1;t;f;f;1440;e8667b32-8058-4533-86a5-aeff8dfbe0f2",
+			"0;8559;3;f;f;f;1441;c922c4f8-7f87-4a31-ac16-acc69ee7bc89",
+			"0;8558;1;f;f;f;1441;c922c4f8-7f87-4a31-ac16-acc69ee7bc89",
+			"1441;8558;2;f;f;t;0;c922c4f8-7f87-4a31-ac16-acc69ee7bc89",
+			"0;8558;3;t;f;f;1442;04d1b2e6-e702-41a9-bc64-0e6444efeb09",
+			"0;8557;1;t;f;f;1442;04d1b2e6-e702-41a9-bc64-0e6444efeb09",
+			"0;8557;3;f;f;f;1443;6cfc0be1-778f-4548-a0dd-d54fb501ce9f",
+			"0;8556;1;f;f;f;1443;6cfc0be1-778f-4548-a0dd-d54fb501ce9f",
+			"1443;8556;2;f;f;t;0;6cfc0be1-778f-4548-a0dd-d54fb501ce9f",
+			"0;8556;3;t;f;f;1444;12cce1d7-4938-42f9-bd9b-9bc507525707",
+			"0;8555;1;t;f;f;1444;12cce1d7-4938-42f9-bd9b-9bc507525707",
+			"0;8555;3;f;f;f;1445;4f40385d-c099-4dd1-8e0e-28231a6574cb",
+			"0;8554;1;f;f;f;1445;4f40385d-c099-4dd1-8e0e-28231a6574cb",
+			"1445;8554;2;f;f;t;0;4f40385d-c099-4dd1-8e0e-28231a6574cb",
+			"0;8554;3;t;f;f;1446;d618b5ee-e4ce-40d4-b5e3-2ba6e0efa3a8",
+			"0;8553;1;t;f;f;1446;d618b5ee-e4ce-40d4-b5e3-2ba6e0efa3a8",
+			"0;8553;3;f;f;f;1447;7e12c6d4-a5f4-4190-aa5d-a6491df8750e",
+			"0;8552;1;f;f;f;1447;7e12c6d4-a5f4-4190-aa5d-a6491df8750e",
+			"1447;8552;2;f;f;t;0;7e12c6d4-a5f4-4190-aa5d-a6491df8750e",
+			"0;8552;3;t;f;f;1448;3b99a8a0-3d7a-4e4b-9544-73abb346c1dd",
+			"0;8551;1;t;f;f;1448;3b99a8a0-3d7a-4e4b-9544-73abb346c1dd",
+			"0;8551;3;f;f;f;1449;cb7fd12a-e70d-42a2-b2c6-9e95af886635",
+			"0;8550;1;f;f;f;1449;cb7fd12a-e70d-42a2-b2c6-9e95af886635",
+			"1449;8550;2;f;f;t;0;cb7fd12a-e70d-42a2-b2c6-9e95af886635",
+			"0;8550;3;t;f;f;1450;267368ca-d5fb-4e48-8c90-7bce79eca45c",
+			"0;8549;1;t;f;f;1450;267368ca-d5fb-4e48-8c90-7bce79eca45c",
+			"0;8549;3;f;f;f;1451;1e49f5a4-96cd-413e-b277-e2d10fd08ed8",
+			"0;8548;1;f;f;f;1451;1e49f5a4-96cd-413e-b277-e2d10fd08ed8",
+			"1451;8548;2;f;f;t;0;1e49f5a4-96cd-413e-b277-e2d10fd08ed8",
+			"0;8548;3;t;f;f;1452;01fc6d0e-dfcc-4316-a7db-4c81195668ff",
+			"0;8547;1;t;f;f;1452;01fc6d0e-dfcc-4316-a7db-4c81195668ff",
+			"0;8547;3;f;f;f;1453;18a2e6a9-27de-4b7b-a379-08a74b2a8681",
+			"0;8546;1;f;f;f;1453;18a2e6a9-27de-4b7b-a379-08a74b2a8681",
+			"1453;8546;2;f;f;t;0;18a2e6a9-27de-4b7b-a379-08a74b2a8681",
+			"0;8546;3;t;f;f;1454;73abb6ae-6e33-48b1-9ec9-7993fabe5a6e",
+			"0;8545;1;t;f;f;1454;73abb6ae-6e33-48b1-9ec9-7993fabe5a6e",
+			"0;8545;3;f;f;f;1455;886bc030-4751-40c0-805e-705d1b326619",
+			"0;8544;1;f;f;f;1455;886bc030-4751-40c0-805e-705d1b326619",
+			"1455;8544;2;f;f;t;0;886bc030-4751-40c0-805e-705d1b326619",
+			"0;8544;3;t;f;f;1456;2a37b787-b08d-477c-a8f5-eb4df2a2d9e8",
+			"0;8543;1;t;f;f;1456;2a37b787-b08d-477c-a8f5-eb4df2a2d9e8",
+			"0;8543;3;f;f;f;1457;4b89fb42-9635-41a7-bbcd-1fe41379c05a",
+			"0;8542;1;f;f;f;1457;4b89fb42-9635-41a7-bbcd-1fe41379c05a",
+			"1457;8542;2;f;f;t;0;4b89fb42-9635-41a7-bbcd-1fe41379c05a",
+			"0;8542;3;t;f;f;1458;ca13f14f-c0d8-4d6c-a44d-6513630ef61d",
+			"0;8541;1;t;f;f;1458;ca13f14f-c0d8-4d6c-a44d-6513630ef61d",
+			"0;8541;3;f;f;f;1459;406a6290-3848-4fff-bb18-9da3d1a344c5",
+			"0;8540;1;f;f;f;1459;406a6290-3848-4fff-bb18-9da3d1a344c5",
+			"1459;8540;2;f;f;t;0;406a6290-3848-4fff-bb18-9da3d1a344c5",
+			"0;8540;3;t;f;f;1460;7419f1f2-bbdd-4050-a75e-e4c7f610e3bd",
+			"0;8539;1;t;f;f;1460;7419f1f2-bbdd-4050-a75e-e4c7f610e3bd",
+			"0;8539;3;f;f;f;1461;2054a5d3-1076-4d9e-8a7b-58828139ec3c",
+			"0;8538;1;f;f;f;1461;2054a5d3-1076-4d9e-8a7b-58828139ec3c",
+			"1461;8538;2;f;f;t;0;2054a5d3-1076-4d9e-8a7b-58828139ec3c",
+			"0;8538;3;t;f;f;1462;91a9b07f-ba95-4c3c-ae73-a08c44870b63",
+			"0;8537;1;t;f;f;1462;91a9b07f-ba95-4c3c-ae73-a08c44870b63",
+			"0;8537;3;f;f;f;1463;93318c00-351e-4884-8d26-dafda3586601",
+			"0;8536;1;f;f;f;1463;93318c00-351e-4884-8d26-dafda3586601",
+			"1463;8536;2;f;f;t;0;93318c00-351e-4884-8d26-dafda3586601",
+			"0;8536;3;t;f;f;1464;4cd5e8cb-e851-4384-8e66-60294c9ed145",
+			"0;8535;1;t;f;f;1464;4cd5e8cb-e851-4384-8e66-60294c9ed145",
+			"0;8535;3;f;f;f;1465;57ce0b3c-ac6e-4387-a0ba-85fee7c4a112",
+			"0;8534;1;f;f;f;1465;57ce0b3c-ac6e-4387-a0ba-85fee7c4a112",
+			"1465;8534;2;f;f;t;0;57ce0b3c-ac6e-4387-a0ba-85fee7c4a112",
+			"0;8534;3;t;f;f;1466;92749b40-5b38-4b68-9b7e-70e0469a5aae",
+			"0;8533;1;t;f;f;1466;92749b40-5b38-4b68-9b7e-70e0469a5aae",
+			"0;8533;3;f;f;f;1467;3333f741-6906-4485-91e4-86a527548512",
+			"0;8532;1;f;f;f;1467;3333f741-6906-4485-91e4-86a527548512",
+			"1467;8532;2;f;f;t;0;3333f741-6906-4485-91e4-86a527548512",
+			"0;8532;3;t;f;f;1468;42a4b5d2-d391-4fb5-80d3-e8e62fb263c7",
+			"0;8531;1;t;f;f;1468;42a4b5d2-d391-4fb5-80d3-e8e62fb263c7",
+			"0;8531;3;f;f;f;1469;d633b8ff-217e-4da1-80a7-cd7af8fb8a9a",
+			"0;8530;1;f;f;f;1469;d633b8ff-217e-4da1-80a7-cd7af8fb8a9a",
+			"1469;8530;2;f;f;t;0;d633b8ff-217e-4da1-80a7-cd7af8fb8a9a",
+			"0;8530;3;t;f;f;1470;03479308-474a-4a80-868d-628e1edd2e21",
+			"0;8529;1;t;f;f;1470;03479308-474a-4a80-868d-628e1edd2e21",
+			"0;8529;3;f;f;f;1471;ef9d6257-b6d6-49a2-829d-0d33a7c2237d",
+			"0;8528;1;f;f;f;1471;ef9d6257-b6d6-49a2-829d-0d33a7c2237d",
+			"1471;8528;2;f;f;t;0;ef9d6257-b6d6-49a2-829d-0d33a7c2237d",
+			"0;8528;3;t;f;f;1472;e7a7d651-69cf-45e7-b276-c932d24fee0b",
+			"0;8527;1;t;f;f;1472;e7a7d651-69cf-45e7-b276-c932d24fee0b",
+			"0;8527;3;f;f;f;1473;a078d743-26e2-4327-8fb9-bea03a97fabb",
+			"0;8526;1;f;f;f;1473;a078d743-26e2-4327-8fb9-bea03a97fabb",
+			"1473;8526;2;f;f;t;0;a078d743-26e2-4327-8fb9-bea03a97fabb",
+			"0;8526;3;t;f;f;1474;fd7ff4d2-c64f-4781-9ceb-d02efa9f9bef",
+			"0;8525;1;t;f;f;1474;fd7ff4d2-c64f-4781-9ceb-d02efa9f9bef",
+			"0;8525;3;f;f;f;1475;826dc92f-b49e-45ac-80b2-306a8b64a575",
+			"0;8524;1;f;f;f;1475;826dc92f-b49e-45ac-80b2-306a8b64a575",
+			"1475;8524;2;f;f;t;0;826dc92f-b49e-45ac-80b2-306a8b64a575",
+			"0;8524;3;t;f;f;1476;af6f5e0f-e9a7-4f3f-ab28-78bee33ce571",
+			"0;8523;1;t;f;f;1476;af6f5e0f-e9a7-4f3f-ab28-78bee33ce571",
+			"0;8523;3;f;f;f;1477;31b74735-a17d-4c0f-b9d4-d1e3d012e6a2",
+			"0;8522;1;f;f;f;1477;31b74735-a17d-4c0f-b9d4-d1e3d012e6a2",
+			"1477;8522;2;f;f;t;0;31b74735-a17d-4c0f-b9d4-d1e3d012e6a2",
+			"0;8522;3;t;f;f;1478;c542f262-d980-4736-a854-e8e83fb79065",
+			"0;8521;1;t;f;f;1478;c542f262-d980-4736-a854-e8e83fb79065",
+			"0;8521;3;f;f;f;1479;00800bd0-013d-4945-ba39-f2c2157c8f98",
+			"0;8520;1;f;f;f;1479;00800bd0-013d-4945-ba39-f2c2157c8f98",
+			"1479;8520;2;f;f;t;0;00800bd0-013d-4945-ba39-f2c2157c8f98",
+			"0;8520;3;t;f;f;1480;b795cb83-3beb-40de-8854-459279abea8a",
+			"0;8519;1;t;f;f;1480;b795cb83-3beb-40de-8854-459279abea8a",
+			"0;8519;3;f;f;f;1481;0eabc02d-b41c-4eee-b288-7556471df3f8",
+			"0;8518;1;f;f;f;1481;0eabc02d-b41c-4eee-b288-7556471df3f8",
+			"1481;8518;2;f;f;t;0;0eabc02d-b41c-4eee-b288-7556471df3f8",
+			"0;8518;3;t;f;f;1482;73df5515-cb5c-4ef5-92dd-1b023f138a15",
+			"0;8517;1;t;f;f;1482;73df5515-cb5c-4ef5-92dd-1b023f138a15",
+			"0;8517;3;f;f;f;1483;1e2bbd83-0fdd-441b-9449-1d28fb5ae5a9",
+			"0;8516;1;f;f;f;1483;1e2bbd83-0fdd-441b-9449-1d28fb5ae5a9",
+			"1483;8516;2;f;f;t;0;1e2bbd83-0fdd-441b-9449-1d28fb5ae5a9",
+			"0;8516;3;t;f;f;1484;2a663add-22f8-4463-8879-ab228bd909a0",
+			"0;8515;1;t;f;f;1484;2a663add-22f8-4463-8879-ab228bd909a0",
+			"0;8515;3;f;f;f;1485;dde43199-3071-4719-bd17-9da8ef364ae7",
+			"0;8514;1;f;f;f;1485;dde43199-3071-4719-bd17-9da8ef364ae7",
+			"1485;8514;2;f;f;t;0;dde43199-3071-4719-bd17-9da8ef364ae7",
+			"0;8514;3;t;f;f;1486;58557ed6-c901-4904-aeb8-cfb4224f2283",
+			"0;8513;1;t;f;f;1486;58557ed6-c901-4904-aeb8-cfb4224f2283",
+			"0;8513;3;f;f;f;1487;a1a37a76-4f0f-42dd-be9f-f49d8bb2f5c0",
+			"0;8512;1;f;f;f;1487;a1a37a76-4f0f-42dd-be9f-f49d8bb2f5c0",
+			"1487;8512;2;f;f;t;0;a1a37a76-4f0f-42dd-be9f-f49d8bb2f5c0",
+			"0;8512;3;t;f;f;1488;aeb800c0-0349-4eb3-a1d0-59460f63dcf6",
+			"0;8511;1;t;f;f;1488;aeb800c0-0349-4eb3-a1d0-59460f63dcf6",
+			"0;8511;3;f;f;f;1489;05e56aab-2f82-48c3-8aa8-d8c45e78abea",
+			"0;8510;1;f;f;f;1489;05e56aab-2f82-48c3-8aa8-d8c45e78abea",
+			"1489;8510;2;f;f;t;0;05e56aab-2f82-48c3-8aa8-d8c45e78abea",
+			"0;8510;3;t;f;f;1490;aacceca4-65c7-45d2-8e68-fbd5517f7afc",
+			"0;8509;1;t;f;f;1490;aacceca4-65c7-45d2-8e68-fbd5517f7afc",
+			"0;8509;3;f;f;f;1491;14e6251f-5c06-45d3-8a37-2c9e8efe52eb",
+			"0;8508;1;f;f;f;1491;14e6251f-5c06-45d3-8a37-2c9e8efe52eb",
+			"1491;8508;2;f;f;t;0;14e6251f-5c06-45d3-8a37-2c9e8efe52eb",
+			"0;8508;3;t;f;f;1492;933d4e9e-5d79-4c86-b348-51508b66be9d",
+			"0;8507;1;t;f;f;1492;933d4e9e-5d79-4c86-b348-51508b66be9d",
+			"0;8507;3;f;f;f;1493;cea20405-b551-4afe-b4dc-6718037f9bb5",
+			"0;8506;1;f;f;f;1493;cea20405-b551-4afe-b4dc-6718037f9bb5",
+			"1493;8506;2;f;f;t;0;cea20405-b551-4afe-b4dc-6718037f9bb5",
+			"0;8506;3;t;f;f;1494;118a3885-60ba-4205-a2c8-817caf595f1e",
+			"0;8505;1;t;f;f;1494;118a3885-60ba-4205-a2c8-817caf595f1e",
+			"0;8505;3;t;f;f;1495;f3d5aa34-1ec6-4797-ad29-8fd595d33733",
+			"0;8504;1;t;f;f;1495;f3d5aa34-1ec6-4797-ad29-8fd595d33733",
+			"1496;8504;2;f;f;t;0;396d17db-e8fa-405f-9227-fbeb2b88df98",
+			"0;8504;3;t;f;f;1496;396d17db-e8fa-405f-9227-fbeb2b88df98",
+			"0;8503;1;t;f;f;1496;396d17db-e8fa-405f-9227-fbeb2b88df98",
+			"0;8503;3;f;f;f;1497;9a798bc7-2260-4c64-a46a-af358401c9de",
+			"0;8502;1;f;f;f;1497;9a798bc7-2260-4c64-a46a-af358401c9de",
+			"1497;8502;2;f;f;t;0;9a798bc7-2260-4c64-a46a-af358401c9de",
+			"0;8502;3;t;f;f;1498;e1e555a3-4e01-4762-96c2-1ad25270968e",
+			"0;8501;1;t;f;f;1498;e1e555a3-4e01-4762-96c2-1ad25270968e",
+			"0;8501;3;f;f;f;1499;e2b04e4b-dd5d-4866-8a8c-f4c3d32fbaff",
+			"0;8500;1;f;f;f;1499;e2b04e4b-dd5d-4866-8a8c-f4c3d32fbaff",
+			"1499;8500;2;f;f;t;0;e2b04e4b-dd5d-4866-8a8c-f4c3d32fbaff",
+			"0;8500;3;t;f;f;1500;46097c8a-4409-4277-a890-c43090896435",
+			"0;8499;1;t;f;f;1500;46097c8a-4409-4277-a890-c43090896435",
+			"0;8499;3;f;f;f;1501;cd0c4914-f0d2-4b98-89d9-c99e7009a26b",
+			"0;8498;1;f;f;f;1501;cd0c4914-f0d2-4b98-89d9-c99e7009a26b",
+			"1501;8498;2;f;f;t;0;cd0c4914-f0d2-4b98-89d9-c99e7009a26b",
+			"0;8498;3;t;f;f;1502;a36db956-41d8-49c5-b3a7-1294a6fed97a",
+			"0;8497;1;t;f;f;1502;a36db956-41d8-49c5-b3a7-1294a6fed97a",
+			"0;8497;3;f;f;f;1503;eb540a30-3ffa-4058-860c-5f2f2295f707",
+			"0;8496;1;f;f;f;1503;eb540a30-3ffa-4058-860c-5f2f2295f707",
+			"1503;8496;2;f;f;t;0;eb540a30-3ffa-4058-860c-5f2f2295f707",
+			"0;8496;3;t;f;f;1504;16da5074-d7e7-4670-85bd-bcb066fb370a",
+			"0;8495;1;t;f;f;1504;16da5074-d7e7-4670-85bd-bcb066fb370a",
+			"0;8495;3;f;f;f;1505;53c52ae0-b957-4940-ba27-7a350b1aef2a",
+			"0;8494;1;f;f;f;1505;53c52ae0-b957-4940-ba27-7a350b1aef2a",
+			"1505;8494;2;f;f;t;0;53c52ae0-b957-4940-ba27-7a350b1aef2a",
+			"0;8494;3;t;f;f;1506;f3ce8539-fa6e-4328-9b97-5c90a9781711",
+			"0;8493;1;t;f;f;1506;f3ce8539-fa6e-4328-9b97-5c90a9781711",
+			"0;8493;3;f;f;f;1507;57d2d028-42f8-42d8-b4f2-975e420b8917",
+			"0;8492;1;f;f;f;1507;57d2d028-42f8-42d8-b4f2-975e420b8917",
+			"1507;8492;2;f;f;t;0;57d2d028-42f8-42d8-b4f2-975e420b8917",
+			"0;8492;3;t;f;f;1508;d0679eed-9b75-427c-8116-668bfe686f14",
+			"0;8491;1;t;f;f;1508;d0679eed-9b75-427c-8116-668bfe686f14",
+			"0;8491;3;f;f;f;1509;6314395e-22c4-4c16-9948-d293c5734aa1",
+			"0;8490;1;f;f;f;1509;6314395e-22c4-4c16-9948-d293c5734aa1",
+			"1509;8490;2;f;f;t;0;6314395e-22c4-4c16-9948-d293c5734aa1",
+			"0;8490;3;t;f;f;1510;b0f7ee10-65ed-424e-9478-6e1f5dd8cbed",
+			"0;8489;1;t;f;f;1510;b0f7ee10-65ed-424e-9478-6e1f5dd8cbed",
+			"0;8489;3;f;f;f;1511;716610fc-a493-4955-92e5-c70627a50957",
+			"0;8488;1;f;f;f;1511;716610fc-a493-4955-92e5-c70627a50957",
+			"1511;8488;2;f;f;t;0;716610fc-a493-4955-92e5-c70627a50957",
+			"0;8488;3;t;f;f;1512;16b4189e-3a17-4deb-9289-ddfced1237ec",
+			"0;8487;1;t;f;f;1512;16b4189e-3a17-4deb-9289-ddfced1237ec",
+			"0;8487;3;f;f;f;1513;e0a7ae05-07ce-495d-a1fa-df22cd54d575",
+			"0;8486;1;f;f;f;1513;e0a7ae05-07ce-495d-a1fa-df22cd54d575",
+			"1513;8486;2;f;f;t;0;e0a7ae05-07ce-495d-a1fa-df22cd54d575",
+			"0;8486;3;t;f;f;1514;3dd65e8d-2659-4ec3-98a8-c7d740863a53",
+			"0;8485;1;t;f;f;1514;3dd65e8d-2659-4ec3-98a8-c7d740863a53",
+			"0;8485;3;f;f;f;1515;acdbd391-5a6d-47b3-bd51-d8815113c698",
+			"0;8484;1;f;f;f;1515;acdbd391-5a6d-47b3-bd51-d8815113c698",
+			"1515;8484;2;f;f;t;0;acdbd391-5a6d-47b3-bd51-d8815113c698",
+			"0;8484;3;t;f;f;1516;847fe440-ee42-43af-9aeb-ce77d0d0ad0b",
+			"0;8483;1;t;f;f;1516;847fe440-ee42-43af-9aeb-ce77d0d0ad0b",
+			"0;8483;3;f;f;f;1517;cdf5ab59-0fb7-4a5e-8d63-f43ccbdd10ea",
+			"0;8482;1;f;f;f;1517;cdf5ab59-0fb7-4a5e-8d63-f43ccbdd10ea",
+			"1517;8482;2;f;f;t;0;cdf5ab59-0fb7-4a5e-8d63-f43ccbdd10ea",
+			"0;8482;3;t;f;f;1518;2e1bf2cf-7a73-4265-883b-b696dcfbf7be",
+			"0;8481;1;t;f;f;1518;2e1bf2cf-7a73-4265-883b-b696dcfbf7be",
+			"0;8481;3;f;f;f;1519;05f8ca7b-bf33-414f-8141-b66d4e00ea3b",
+			"0;8480;1;f;f;f;1519;05f8ca7b-bf33-414f-8141-b66d4e00ea3b",
+			"1519;8480;2;f;f;t;0;05f8ca7b-bf33-414f-8141-b66d4e00ea3b",
+			"0;8480;3;t;f;f;1520;cef4572e-30d9-455a-a174-87d5b8bcc022",
+			"0;8479;1;t;f;f;1520;cef4572e-30d9-455a-a174-87d5b8bcc022",
+			"0;8479;3;f;f;f;1521;3cdb1af8-9cce-4953-bb60-d0c9383bbba5",
+			"0;8478;1;f;f;f;1521;3cdb1af8-9cce-4953-bb60-d0c9383bbba5",
+			"1521;8478;2;f;f;t;0;3cdb1af8-9cce-4953-bb60-d0c9383bbba5",
+			"0;8478;3;t;f;f;1522;3ce58092-980c-4423-a0ff-8a81e1ee263a",
+			"0;8477;1;t;f;f;1522;3ce58092-980c-4423-a0ff-8a81e1ee263a",
+			"0;8477;3;f;f;f;1523;1513e22c-d73b-4add-a3d7-51e696a708e5",
+			"0;8476;1;f;f;f;1523;1513e22c-d73b-4add-a3d7-51e696a708e5",
+			"1523;8476;2;f;f;t;0;1513e22c-d73b-4add-a3d7-51e696a708e5",
+			"0;8476;3;t;f;f;1524;4fce0d99-e0bd-4e16-a1c1-b2c979d3cebf",
+			"0;8475;1;t;f;f;1524;4fce0d99-e0bd-4e16-a1c1-b2c979d3cebf",
+			"0;8475;3;t;f;f;1525;197a90e5-4fb0-4a06-8956-5a847c1b18b3",
+			"0;8474;1;t;f;f;1525;197a90e5-4fb0-4a06-8956-5a847c1b18b3",
+			"1526;8474;2;f;f;t;0;d32ead57-c4b9-4c02-b57a-d56a93b35c80",
+			"0;8474;3;t;f;f;1526;d32ead57-c4b9-4c02-b57a-d56a93b35c80",
+			"0;8473;1;t;f;f;1526;d32ead57-c4b9-4c02-b57a-d56a93b35c80",
+			"0;8473;3;f;f;f;1527;6adc75de-e0b9-43c0-8bcf-f4f0d583781d",
+			"0;8472;1;f;f;f;1527;6adc75de-e0b9-43c0-8bcf-f4f0d583781d",
+			"1527;8472;2;f;f;t;0;6adc75de-e0b9-43c0-8bcf-f4f0d583781d",
+			"0;8472;3;t;f;f;1528;150ce0aa-2478-4d05-a098-4d55fa8b47d6",
+			"0;8471;1;t;f;f;1528;150ce0aa-2478-4d05-a098-4d55fa8b47d6",
+			"0;8471;3;f;f;f;1529;04035f4a-0a04-4156-961e-3e7fa6dd51ad",
+			"0;8470;1;f;f;f;1529;04035f4a-0a04-4156-961e-3e7fa6dd51ad",
+			"1529;8470;2;f;f;t;0;04035f4a-0a04-4156-961e-3e7fa6dd51ad",
+			"0;8470;3;t;f;f;1530;0f3f4e94-ff7c-4cd2-b20c-b3083f4a1292",
+			"0;8469;1;t;f;f;1530;0f3f4e94-ff7c-4cd2-b20c-b3083f4a1292",
+			"0;8469;3;f;f;f;1531;fcac16f6-6a00-4881-8299-3239266dccd3",
+			"0;8468;1;f;f;f;1531;fcac16f6-6a00-4881-8299-3239266dccd3",
+			"1531;8468;2;f;f;t;0;fcac16f6-6a00-4881-8299-3239266dccd3",
+			"0;8468;3;t;f;f;1532;fbe7ab54-ccd8-41aa-95b4-a8d1ecffc365",
+			"0;8467;1;t;f;f;1532;fbe7ab54-ccd8-41aa-95b4-a8d1ecffc365",
+			"0;8467;3;f;f;f;1533;aea10a6b-c020-4d93-893f-82a0b0106a21",
+			"0;8466;1;f;f;f;1533;aea10a6b-c020-4d93-893f-82a0b0106a21",
+			"1533;8466;2;f;f;t;0;aea10a6b-c020-4d93-893f-82a0b0106a21",
+			"0;8466;3;t;f;f;1534;d972ddc5-a4fd-4c46-a3ae-503dce199c7d",
+			"0;8465;1;t;f;f;1534;d972ddc5-a4fd-4c46-a3ae-503dce199c7d",
+			"0;8465;3;f;f;f;1535;10a83069-0a00-4b3a-9295-e0b061dd5626",
+			"0;8464;1;f;f;f;1535;10a83069-0a00-4b3a-9295-e0b061dd5626",
+			"1535;8464;2;f;f;t;0;10a83069-0a00-4b3a-9295-e0b061dd5626",
+			"0;8464;3;t;f;f;1536;0c24d092-f4bd-400f-9c09-8ed52b6e991d",
+			"0;8463;1;t;f;f;1536;0c24d092-f4bd-400f-9c09-8ed52b6e991d",
+			"0;8463;3;t;f;f;1537;766dc5e2-c07b-48ae-b904-63f3a95eae43",
+			"0;8462;1;t;f;f;1537;766dc5e2-c07b-48ae-b904-63f3a95eae43",
+			"1538;8462;2;f;f;t;0;2c92aec5-3842-4410-9700-9990f620bc5f",
+			"0;8462;3;t;f;f;1538;2c92aec5-3842-4410-9700-9990f620bc5f",
+			"0;8461;1;t;f;f;1538;2c92aec5-3842-4410-9700-9990f620bc5f",
+			"0;8461;3;f;f;f;1539;becea6ad-3c2c-46a8-ad3b-302a3d4c7b8e",
+			"0;8460;1;f;f;f;1539;becea6ad-3c2c-46a8-ad3b-302a3d4c7b8e",
+			"1539;8460;2;f;f;t;0;becea6ad-3c2c-46a8-ad3b-302a3d4c7b8e",
+			"0;8460;3;t;f;f;1540;ce2f147e-bd77-415c-8e46-61ee4cc73feb",
+			"0;8459;1;t;f;f;1540;ce2f147e-bd77-415c-8e46-61ee4cc73feb",
+			"0;8459;3;f;f;f;1541;5836e3ee-e93f-43e8-b3cf-f889feaf65ea",
+			"0;8458;1;f;f;f;1541;5836e3ee-e93f-43e8-b3cf-f889feaf65ea",
+			"1541;8458;2;f;f;t;0;5836e3ee-e93f-43e8-b3cf-f889feaf65ea",
+			"0;8458;3;t;f;f;1542;247a9490-275a-4aa0-a194-d7c29313cb35",
+			"0;8457;1;t;f;f;1542;247a9490-275a-4aa0-a194-d7c29313cb35",
+			"0;8457;3;f;f;f;1543;45cf9637-b408-4fcf-996b-ace95382c54a",
+			"0;8456;1;f;f;f;1543;45cf9637-b408-4fcf-996b-ace95382c54a",
+			"1543;8456;2;f;f;t;0;45cf9637-b408-4fcf-996b-ace95382c54a",
+			"0;8456;3;t;f;f;1544;74f452f0-befd-429c-8f64-90caef860f53",
+			"0;8455;1;t;f;f;1544;74f452f0-befd-429c-8f64-90caef860f53",
+			"0;8455;3;f;f;f;1545;2a5c58b0-2726-4c3f-8d9c-6d5a3d305f0b",
+			"0;8454;1;f;f;f;1545;2a5c58b0-2726-4c3f-8d9c-6d5a3d305f0b",
+			"1545;8454;2;f;f;t;0;2a5c58b0-2726-4c3f-8d9c-6d5a3d305f0b",
+			"0;8454;3;t;f;f;1546;1a2d7ce0-75e8-400c-88a7-6183ba7934d7",
+			"0;8453;1;t;f;f;1546;1a2d7ce0-75e8-400c-88a7-6183ba7934d7",
+			"0;8453;3;f;f;f;1547;eb427b50-57a2-4a08-9152-5c66019e27bf",
+			"0;8452;1;f;f;f;1547;eb427b50-57a2-4a08-9152-5c66019e27bf",
+			"1547;8452;2;f;f;t;0;eb427b50-57a2-4a08-9152-5c66019e27bf",
+			"0;8452;3;t;f;f;1548;7bbca99a-37ec-48fa-bd7b-bd70b5073930",
+			"0;8451;1;t;f;f;1548;7bbca99a-37ec-48fa-bd7b-bd70b5073930",
+			"0;8451;3;f;f;f;1549;5213a2fc-3139-476e-90a8-90395d7adf77",
+			"0;8450;1;f;f;f;1549;5213a2fc-3139-476e-90a8-90395d7adf77",
+			"1549;8450;2;f;f;t;0;5213a2fc-3139-476e-90a8-90395d7adf77",
+			"0;8450;3;t;f;f;1550;224d5831-5d86-42f8-8163-58f92fe4fffa",
+			"0;8449;1;t;f;f;1550;224d5831-5d86-42f8-8163-58f92fe4fffa",
+			"0;8449;3;f;f;f;1551;ce6ca96c-da62-474e-bd68-bdcd616892e5",
+			"0;8448;1;f;f;f;1551;ce6ca96c-da62-474e-bd68-bdcd616892e5",
+			"1551;8448;2;f;f;t;0;ce6ca96c-da62-474e-bd68-bdcd616892e5",
+			"0;8448;3;t;f;f;1552;d698ff30-0b6d-492b-989a-57f01aa72b7e",
+			"0;8447;1;t;f;f;1552;d698ff30-0b6d-492b-989a-57f01aa72b7e",
+			"0;8447;3;f;f;f;1553;7c49091e-1d73-4357-9559-c1e8b38f4ea3",
+			"0;8446;1;f;f;f;1553;7c49091e-1d73-4357-9559-c1e8b38f4ea3",
+			"1553;8446;2;f;f;t;0;7c49091e-1d73-4357-9559-c1e8b38f4ea3",
+			"0;8446;3;t;f;f;1554;49b12048-242a-49e1-a7ed-5e33dc0e2889",
+			"0;8445;1;t;f;f;1554;49b12048-242a-49e1-a7ed-5e33dc0e2889",
+			"0;8445;3;f;f;f;1555;dd678890-1d1a-4736-b797-31353f8a93ac",
+			"0;8444;1;f;f;f;1555;dd678890-1d1a-4736-b797-31353f8a93ac",
+			"1555;8444;2;f;f;t;0;dd678890-1d1a-4736-b797-31353f8a93ac",
+			"0;8444;3;t;f;f;1556;9237e8ae-a616-4224-a169-7da5f5c6d1ff",
+			"0;8443;1;t;f;f;1556;9237e8ae-a616-4224-a169-7da5f5c6d1ff",
+			"0;8443;3;f;f;f;1557;75e80b2a-8c38-427d-9eaa-6716ee088e7c",
+			"0;8442;1;f;f;f;1557;75e80b2a-8c38-427d-9eaa-6716ee088e7c",
+			"1557;8442;2;f;f;t;0;75e80b2a-8c38-427d-9eaa-6716ee088e7c",
+			"0;8442;3;t;f;f;1558;0ac8b7bd-5dbb-4767-bacf-7404b19adb80",
+			"0;8441;1;t;f;f;1558;0ac8b7bd-5dbb-4767-bacf-7404b19adb80",
+			"0;8441;3;f;f;f;1559;dc3c8efd-da83-4a7b-b1b9-65974d90d1c8",
+			"0;8440;1;f;f;f;1559;dc3c8efd-da83-4a7b-b1b9-65974d90d1c8",
+			"1559;8440;2;f;f;t;0;dc3c8efd-da83-4a7b-b1b9-65974d90d1c8",
+			"0;8440;3;t;f;f;1560;8c0e8766-a287-4435-9247-bd2c9b4c3c75",
+			"0;8439;1;t;f;f;1560;8c0e8766-a287-4435-9247-bd2c9b4c3c75",
+			"0;8439;3;f;f;f;1561;cbfb4893-380f-49ab-99d5-4b0ebcdccb57",
+			"0;8438;1;f;f;f;1561;cbfb4893-380f-49ab-99d5-4b0ebcdccb57",
+			"1561;8438;2;f;f;t;0;cbfb4893-380f-49ab-99d5-4b0ebcdccb57",
+			"0;8438;3;t;f;f;1562;1cc9e65b-4bb3-4db5-929c-aba26283fd0e",
+			"0;8437;1;t;f;f;1562;1cc9e65b-4bb3-4db5-929c-aba26283fd0e",
+			"0;8437;3;t;f;f;1563;336753ec-9f41-43e0-8276-8dbd682d948a",
+			"0;8436;1;t;f;f;1563;336753ec-9f41-43e0-8276-8dbd682d948a",
+			"0;8436;3;f;f;f;1564;4d40e18f-d373-43bd-8858-31e3c1372a42",
+			"0;8435;1;f;f;f;1564;4d40e18f-d373-43bd-8858-31e3c1372a42",
+			"1564;8435;2;f;f;t;0;4d40e18f-d373-43bd-8858-31e3c1372a42",
+			"0;8435;3;f;f;f;1565;bb53383c-0e18-4c25-b380-9aae5578dc7b",
+			"0;8434;1;f;f;f;1565;bb53383c-0e18-4c25-b380-9aae5578dc7b",
+			"1565;8434;2;f;f;t;0;bb53383c-0e18-4c25-b380-9aae5578dc7b",
+			"0;8434;3;t;f;f;1566;d22f64b8-f219-41db-a360-2bbf2f24a538",
+			"0;8433;1;t;f;f;1566;d22f64b8-f219-41db-a360-2bbf2f24a538",
+			"0;8433;3;f;f;f;1567;4b90f6ee-9fef-4564-8005-789b22ef9cc6",
+			"0;8432;1;f;f;f;1567;4b90f6ee-9fef-4564-8005-789b22ef9cc6",
+			"1567;8432;2;f;f;t;0;4b90f6ee-9fef-4564-8005-789b22ef9cc6",
+			"0;8432;3;t;f;f;1568;4516f3b0-face-4117-bb53-20f83a357125",
+			"0;8431;1;t;f;f;1568;4516f3b0-face-4117-bb53-20f83a357125",
+			"0;8431;3;f;f;f;1569;f8143cf9-e1ab-49d3-887d-8c0e2686ad85",
+			"0;8430;1;f;f;f;1569;f8143cf9-e1ab-49d3-887d-8c0e2686ad85",
+			"1569;8430;2;f;f;t;0;f8143cf9-e1ab-49d3-887d-8c0e2686ad85",
+			"0;8430;3;t;f;f;1570;176d9d09-2e08-4773-97a1-f2499ea5a06d",
+			"0;8429;1;t;f;f;1570;176d9d09-2e08-4773-97a1-f2499ea5a06d",
+			"0;8429;3;f;f;f;1571;10ad8e4f-cdc4-4d72-bcc5-cb8384e57035",
+			"0;8428;1;f;f;f;1571;10ad8e4f-cdc4-4d72-bcc5-cb8384e57035",
+			"1571;8428;2;f;f;t;0;10ad8e4f-cdc4-4d72-bcc5-cb8384e57035",
+			"0;8428;3;t;f;f;1572;2bc62700-54ae-46f6-aebe-0e7b24731902",
+			"0;8427;1;t;f;f;1572;2bc62700-54ae-46f6-aebe-0e7b24731902",
+			"0;8427;3;t;f;f;1573;4d7764e7-5685-49ff-8a63-8c0c817f8e34",
+			"0;8426;1;t;f;f;1573;4d7764e7-5685-49ff-8a63-8c0c817f8e34",
+			"1574;8426;2;f;f;t;0;73e20c6f-e826-48b6-af06-fb572ae989b8",
+			"0;8426;3;t;f;f;1574;73e20c6f-e826-48b6-af06-fb572ae989b8",
+			"0;8425;1;t;f;f;1574;73e20c6f-e826-48b6-af06-fb572ae989b8",
+			"0;8425;3;f;f;f;1575;7a68472a-4380-4462-ad89-632ba85b87a1",
+			"0;8424;1;f;f;f;1575;7a68472a-4380-4462-ad89-632ba85b87a1",
+			"1575;8424;2;f;f;t;0;7a68472a-4380-4462-ad89-632ba85b87a1",
+			"0;8424;3;t;f;f;1576;b219481f-abd8-4cb5-91fb-04e0612b5272",
+			"0;8423;1;t;f;f;1576;b219481f-abd8-4cb5-91fb-04e0612b5272",
+			"0;8423;3;t;f;f;1577;2473dade-614a-41d1-a1e9-bbae58457f5e",
+			"0;8422;1;t;f;f;1577;2473dade-614a-41d1-a1e9-bbae58457f5e",
+			"0;8422;3;f;f;f;1578;0fde9c06-e11f-4bc9-b1c4-af5b494c7ce2",
+			"0;8421;1;f;f;f;1578;0fde9c06-e11f-4bc9-b1c4-af5b494c7ce2",
+			"1578;8421;2;f;f;t;0;0fde9c06-e11f-4bc9-b1c4-af5b494c7ce2",
+			"0;8421;3;f;f;f;1579;d1e94994-b61a-45ff-9d72-aa6ec2bbbc4d",
+			"0;8420;1;f;f;f;1579;d1e94994-b61a-45ff-9d72-aa6ec2bbbc4d",
+			"1579;8420;2;f;f;t;0;d1e94994-b61a-45ff-9d72-aa6ec2bbbc4d",
+			"0;8420;3;t;f;f;1580;7304362e-84fa-4d8d-b9b6-d65270882c7e",
+			"0;8419;1;t;f;f;1580;7304362e-84fa-4d8d-b9b6-d65270882c7e",
+			"0;8419;3;f;f;f;1581;574fbf2c-5585-444f-bcd0-c456712c922e",
+			"0;8418;1;f;f;f;1581;574fbf2c-5585-444f-bcd0-c456712c922e",
+			"1581;8418;2;f;f;t;0;574fbf2c-5585-444f-bcd0-c456712c922e",
+			"0;8418;3;t;f;f;1582;ed9ff16a-9a4b-43bd-a6cd-2c7e7eb41e21",
+			"0;8417;1;t;f;f;1582;ed9ff16a-9a4b-43bd-a6cd-2c7e7eb41e21",
+			"0;8417;3;f;f;f;1583;19e2db0f-cb37-43c0-8a18-2cfc978a59d9",
+			"0;8416;1;f;f;f;1583;19e2db0f-cb37-43c0-8a18-2cfc978a59d9",
+			"1583;8416;2;f;f;t;0;19e2db0f-cb37-43c0-8a18-2cfc978a59d9",
+			"0;8416;3;t;f;f;1584;9319975f-3ec5-4a92-9579-f840066e8316",
+			"0;8415;1;t;f;f;1584;9319975f-3ec5-4a92-9579-f840066e8316",
+			"0;8415;3;t;f;f;1585;192a58cf-cb17-43b3-88e9-bc6a32fc69e1",
+			"0;8414;1;t;f;f;1585;192a58cf-cb17-43b3-88e9-bc6a32fc69e1",
+			"1586;8414;2;f;f;t;0;35aab7b5-f8fc-4832-a790-e7c6b6b3832a",
+			"0;8414;3;t;f;f;1586;35aab7b5-f8fc-4832-a790-e7c6b6b3832a",
+			"0;8413;1;t;f;f;1586;35aab7b5-f8fc-4832-a790-e7c6b6b3832a",
+			"0;8413;3;f;f;f;1587;fc49c7ee-b20e-41f0-b47d-5d8f4da81522",
+			"0;8412;1;f;f;f;1587;fc49c7ee-b20e-41f0-b47d-5d8f4da81522",
+			"1587;8412;2;f;f;t;0;fc49c7ee-b20e-41f0-b47d-5d8f4da81522",
+			"0;8412;3;t;f;f;1588;6026d334-c270-42ff-b968-0c0cade84ac8",
+			"0;8411;1;t;f;f;1588;6026d334-c270-42ff-b968-0c0cade84ac8",
+			"0;8411;3;f;f;f;1589;8ca77dc8-cb9d-4150-bb6f-a5b2f678bc0f",
+			"0;8410;1;f;f;f;1589;8ca77dc8-cb9d-4150-bb6f-a5b2f678bc0f",
+			"1589;8410;2;f;f;t;0;8ca77dc8-cb9d-4150-bb6f-a5b2f678bc0f",
+			"0;8410;3;t;f;f;1590;da72a538-e3c6-4c0a-8008-b2e31ef90f98",
+			"0;8409;1;t;f;f;1590;da72a538-e3c6-4c0a-8008-b2e31ef90f98",
+			"0;8409;3;f;f;f;1591;705b4a0c-081a-41e2-bcb0-2c76fd6fcf52",
+			"0;8408;1;f;f;f;1591;705b4a0c-081a-41e2-bcb0-2c76fd6fcf52",
+			"1591;8408;2;f;f;t;0;705b4a0c-081a-41e2-bcb0-2c76fd6fcf52",
+			"0;8408;3;t;f;f;1592;1d15b9f4-de9c-465f-842e-8a3d57c80890",
+			"0;8407;1;t;f;f;1592;1d15b9f4-de9c-465f-842e-8a3d57c80890",
+			"0;8407;3;f;f;f;1593;f479d206-ba46-4b62-b473-227d319e143b",
+			"0;8406;1;f;f;f;1593;f479d206-ba46-4b62-b473-227d319e143b",
+			"1593;8406;2;f;f;t;0;f479d206-ba46-4b62-b473-227d319e143b",
+			"0;8406;3;t;f;f;1594;e37a1f9e-a41c-422b-aec6-be21125af6fb",
+			"0;8405;1;t;f;f;1594;e37a1f9e-a41c-422b-aec6-be21125af6fb",
+			"0;8405;3;f;f;f;1595;8217ff54-9a92-42ee-aada-9b2f68d34080",
+			"0;8404;1;f;f;f;1595;8217ff54-9a92-42ee-aada-9b2f68d34080",
+			"1595;8404;2;f;f;t;0;8217ff54-9a92-42ee-aada-9b2f68d34080",
+			"0;8404;3;t;f;f;1596;4c9dd180-504f-4805-a2b7-6e299da55c91",
+			"0;8403;1;t;f;f;1596;4c9dd180-504f-4805-a2b7-6e299da55c91",
+			"0;8403;3;f;f;f;1597;210d0b0e-e886-4605-8dd5-80acad629638",
+			"0;8402;1;f;f;f;1597;210d0b0e-e886-4605-8dd5-80acad629638",
+			"1597;8402;2;f;f;t;0;210d0b0e-e886-4605-8dd5-80acad629638",
+			"0;8402;3;t;f;f;1598;874709a9-6718-4d35-b503-3f33ff104baf",
+			"0;8401;1;t;f;f;1598;874709a9-6718-4d35-b503-3f33ff104baf",
+			"0;8401;3;f;f;f;1599;8b55a782-8339-47c0-9658-c394b9ca57e8",
+			"0;8400;1;f;f;f;1599;8b55a782-8339-47c0-9658-c394b9ca57e8",
+			"1599;8400;2;f;f;t;0;8b55a782-8339-47c0-9658-c394b9ca57e8",
+			"0;8400;3;t;f;f;1600;ac1cb7d1-fe26-465e-89d4-42b3859cbee6",
+			"0;8399;1;t;f;f;1600;ac1cb7d1-fe26-465e-89d4-42b3859cbee6",
+			"0;8399;3;f;f;f;1601;1661332c-f87e-4ab6-8240-dc55d436d081",
+			"0;8398;1;f;f;f;1601;1661332c-f87e-4ab6-8240-dc55d436d081",
+			"1601;8398;2;f;f;t;0;1661332c-f87e-4ab6-8240-dc55d436d081",
+			"0;8398;3;t;f;f;1602;d81ec963-a8d7-4f5c-995c-20c46990064d",
+			"0;8397;1;t;f;f;1602;d81ec963-a8d7-4f5c-995c-20c46990064d",
+			"0;8397;3;f;f;f;1603;54965dd0-f348-488e-86cd-ad3a62d55571",
+			"0;8396;1;f;f;f;1603;54965dd0-f348-488e-86cd-ad3a62d55571",
+			"1603;8396;2;f;f;t;0;54965dd0-f348-488e-86cd-ad3a62d55571",
+			"0;8396;3;t;f;f;1604;fe0f7193-a203-4190-8af9-612e47eddf89",
+			"0;8395;1;t;f;f;1604;fe0f7193-a203-4190-8af9-612e47eddf89",
+			"0;8395;3;f;f;f;1605;da7d34f8-52e2-484b-ae89-d35b048aa84d",
+			"0;8394;1;f;f;f;1605;da7d34f8-52e2-484b-ae89-d35b048aa84d",
+			"1605;8394;2;f;f;t;0;da7d34f8-52e2-484b-ae89-d35b048aa84d",
+			"0;8394;3;t;f;f;1606;fae9cf1f-02a1-4742-83c0-9d8fb2913edd",
+			"0;8393;1;t;f;f;1606;fae9cf1f-02a1-4742-83c0-9d8fb2913edd",
+			"0;8393;3;f;f;f;1607;de38e6bc-6be1-47cd-a98c-9c6d84d841f7",
+			"0;8392;1;f;f;f;1607;de38e6bc-6be1-47cd-a98c-9c6d84d841f7",
+			"1607;8392;2;f;f;t;0;de38e6bc-6be1-47cd-a98c-9c6d84d841f7",
+			"0;8392;3;t;f;f;1608;78d5b0ff-eaf0-4152-993d-c3199e979d49",
+			"0;8391;1;t;f;f;1608;78d5b0ff-eaf0-4152-993d-c3199e979d49",
+			"0;8391;3;f;f;f;1609;6686d152-dd5e-4323-abdb-d4d24d5e3c66",
+			"0;8390;1;f;f;f;1609;6686d152-dd5e-4323-abdb-d4d24d5e3c66",
+			"1609;8390;2;f;f;t;0;6686d152-dd5e-4323-abdb-d4d24d5e3c66",
+			"0;8390;3;t;f;f;1610;431d2cfd-c6fc-430d-82d6-f2f60d821662",
+			"0;8389;1;t;f;f;1610;431d2cfd-c6fc-430d-82d6-f2f60d821662",
+			"0;8389;3;f;f;f;1611;1bee1978-8f1b-45d4-82c5-440b87473500",
+			"0;8388;1;f;f;f;1611;1bee1978-8f1b-45d4-82c5-440b87473500",
+			"1611;8388;2;f;f;t;0;1bee1978-8f1b-45d4-82c5-440b87473500",
+			"0;8388;3;t;f;f;1612;e06c25bf-023d-4b60-99d8-683b2a03fa07",
+			"0;8387;1;t;f;f;1612;e06c25bf-023d-4b60-99d8-683b2a03fa07",
+			"0;8387;3;f;f;f;1613;1f8ed110-b4c4-426c-b1e3-30858d32187b",
+			"0;8386;1;f;f;f;1613;1f8ed110-b4c4-426c-b1e3-30858d32187b",
+			"1613;8386;2;f;f;t;0;1f8ed110-b4c4-426c-b1e3-30858d32187b",
+			"0;8386;3;t;f;f;1614;1706d7d6-1777-47d9-8976-15b05faba96b",
+			"0;8385;1;t;f;f;1614;1706d7d6-1777-47d9-8976-15b05faba96b",
+			"0;8385;3;f;f;f;1615;fdf312b2-893f-477b-88cf-1ccfc8babb84",
+			"0;8384;1;f;f;f;1615;fdf312b2-893f-477b-88cf-1ccfc8babb84",
+			"1615;8384;2;f;f;t;0;fdf312b2-893f-477b-88cf-1ccfc8babb84",
+			"0;8384;3;t;f;f;1616;e23cd4e6-5265-47d4-b94f-3baa1b8a1454",
+			"0;8383;1;t;f;f;1616;e23cd4e6-5265-47d4-b94f-3baa1b8a1454",
+			"0;8383;3;f;f;f;1617;cb2cb5b1-2d74-4723-977c-370623ccefdb",
+			"0;8382;1;f;f;f;1617;cb2cb5b1-2d74-4723-977c-370623ccefdb",
+			"1617;8382;2;f;f;t;0;cb2cb5b1-2d74-4723-977c-370623ccefdb",
+			"0;8382;3;t;f;f;1618;f3468dc5-da72-4333-b154-c3c4060beacc",
+			"0;8381;1;t;f;f;1618;f3468dc5-da72-4333-b154-c3c4060beacc",
+			"0;8381;3;f;f;f;1619;d2ba86cf-6f59-43f9-a89b-66bc7736dc27",
+			"0;8380;1;f;f;f;1619;d2ba86cf-6f59-43f9-a89b-66bc7736dc27",
+			"1619;8380;2;f;f;t;0;d2ba86cf-6f59-43f9-a89b-66bc7736dc27",
+			"0;8380;3;t;f;f;1620;993b5a0d-6722-485e-8102-5143620842ff",
+			"0;8379;1;t;f;f;1620;993b5a0d-6722-485e-8102-5143620842ff",
+			"0;8379;3;f;f;f;1621;3af5cd43-9525-4a96-bc82-9c88600088f2",
+			"0;8378;1;f;f;f;1621;3af5cd43-9525-4a96-bc82-9c88600088f2",
+			"1621;8378;2;f;f;t;0;3af5cd43-9525-4a96-bc82-9c88600088f2",
+			"0;8378;3;t;f;f;1622;5b2fe348-7c91-44e2-9165-b6f6a3b8cfd7",
+			"0;8377;1;t;f;f;1622;5b2fe348-7c91-44e2-9165-b6f6a3b8cfd7",
+			"0;8377;3;f;f;f;1623;6ef57f1b-8329-45c2-91ce-d31268d146fb",
+			"0;8376;1;f;f;f;1623;6ef57f1b-8329-45c2-91ce-d31268d146fb",
+			"1623;8376;2;f;f;t;0;6ef57f1b-8329-45c2-91ce-d31268d146fb",
+			"0;8376;3;t;f;f;1624;8274130b-a907-42ad-abbd-047d58d764b3",
+			"0;8375;1;t;f;f;1624;8274130b-a907-42ad-abbd-047d58d764b3",
+			"0;8375;3;f;f;f;1625;6b0d7877-d3d2-4be7-be0d-a271536c5c10",
+			"0;8374;1;f;f;f;1625;6b0d7877-d3d2-4be7-be0d-a271536c5c10",
+			"1625;8374;2;f;f;t;0;6b0d7877-d3d2-4be7-be0d-a271536c5c10",
+			"0;8374;3;t;f;f;1626;9ef19412-886d-483f-ba09-f504d104bc8a",
+			"0;8373;1;t;f;f;1626;9ef19412-886d-483f-ba09-f504d104bc8a",
+			"0;8373;3;f;f;f;1627;a44baaa3-4d95-4744-b8bf-c7b26c8d2133",
+			"0;8372;1;f;f;f;1627;a44baaa3-4d95-4744-b8bf-c7b26c8d2133",
+			"1627;8372;2;f;f;t;0;a44baaa3-4d95-4744-b8bf-c7b26c8d2133",
+			"0;8372;3;t;f;f;1628;63ab3269-ef68-4f2e-afb3-42acefdfebd1",
+			"0;8371;1;t;f;f;1628;63ab3269-ef68-4f2e-afb3-42acefdfebd1",
+			"0;8371;3;f;f;f;1629;3bb85876-2642-4a49-8f78-017f0dae333d",
+			"0;8370;1;f;f;f;1629;3bb85876-2642-4a49-8f78-017f0dae333d",
+			"1629;8370;2;f;f;t;0;3bb85876-2642-4a49-8f78-017f0dae333d",
+			"0;8370;3;t;f;f;1630;530da215-57be-43ed-8d65-59843fec082e",
+			"0;8369;1;t;f;f;1630;530da215-57be-43ed-8d65-59843fec082e",
+			"0;8369;3;f;f;f;1631;48f8f803-a821-4455-af6f-f8e62d3b8a1e",
+			"0;8368;1;f;f;f;1631;48f8f803-a821-4455-af6f-f8e62d3b8a1e",
+			"1631;8368;2;f;f;t;0;48f8f803-a821-4455-af6f-f8e62d3b8a1e",
+			"0;8368;3;t;f;f;1632;c13cd338-152e-47cd-a8df-53a1da6eaac7",
+			"0;8367;1;t;f;f;1632;c13cd338-152e-47cd-a8df-53a1da6eaac7",
+			"0;8367;3;f;f;f;1633;97fff9e4-e732-4986-849c-f99edbdb5c16",
+			"0;8366;1;f;f;f;1633;97fff9e4-e732-4986-849c-f99edbdb5c16",
+			"1633;8366;2;f;f;t;0;97fff9e4-e732-4986-849c-f99edbdb5c16",
+			"0;8366;3;t;f;f;1634;c3fff76f-870a-4aa0-9510-48aea49699c1",
+			"0;8365;1;t;f;f;1634;c3fff76f-870a-4aa0-9510-48aea49699c1",
+			"0;8365;3;f;f;f;1635;ac529d54-d8cf-4d1f-82ac-0de0835b2094",
+			"0;8364;1;f;f;f;1635;ac529d54-d8cf-4d1f-82ac-0de0835b2094",
+			"1635;8364;2;f;f;t;0;ac529d54-d8cf-4d1f-82ac-0de0835b2094",
+			"0;8364;3;t;f;f;1636;4c43aea1-1ef2-491b-ba45-76aa936a62a6",
+			"0;8363;1;t;f;f;1636;4c43aea1-1ef2-491b-ba45-76aa936a62a6",
+			"0;8363;3;t;f;f;1637;11642e1e-0217-4a9c-830a-eab131cf07ed",
+			"0;8362;1;t;f;f;1637;11642e1e-0217-4a9c-830a-eab131cf07ed",
+			"1638;8362;2;f;f;t;0;83be4fe9-1df8-49ba-8d19-20cf8f9fde26",
+			"0;8362;3;t;f;f;1638;83be4fe9-1df8-49ba-8d19-20cf8f9fde26",
+			"0;8361;1;t;f;f;1638;83be4fe9-1df8-49ba-8d19-20cf8f9fde26",
+			"0;8361;3;f;f;f;1639;2723e053-1188-425e-885c-fcf204013e6d",
+			"0;8360;1;f;f;f;1639;2723e053-1188-425e-885c-fcf204013e6d",
+			"1639;8360;2;f;f;t;0;2723e053-1188-425e-885c-fcf204013e6d",
+			"0;8360;3;t;f;f;1640;eb529555-aa02-4dcc-9431-2e60c3e7806f",
+			"0;8359;1;t;f;f;1640;eb529555-aa02-4dcc-9431-2e60c3e7806f",
+			"0;8359;3;f;f;f;1641;d58229c5-ca5b-4fd4-98fc-4a3a4dcb41b5",
+			"0;8358;1;f;f;f;1641;d58229c5-ca5b-4fd4-98fc-4a3a4dcb41b5",
+			"1641;8358;2;f;f;t;0;d58229c5-ca5b-4fd4-98fc-4a3a4dcb41b5",
+			"0;8358;3;t;f;f;1642;6a0d309e-2f4f-477b-b121-b1bff5f80044",
+			"0;8357;1;t;f;f;1642;6a0d309e-2f4f-477b-b121-b1bff5f80044",
+			"0;8357;3;f;f;f;1643;799fbe50-9e99-4372-b92a-87ff9b8d26d1",
+			"0;8356;1;f;f;f;1643;799fbe50-9e99-4372-b92a-87ff9b8d26d1",
+			"1643;8356;2;f;f;t;0;799fbe50-9e99-4372-b92a-87ff9b8d26d1",
+			"0;8356;3;t;f;f;1644;d9cb3f36-4acc-4df7-8268-1036369325d3",
+			"0;8355;1;t;f;f;1644;d9cb3f36-4acc-4df7-8268-1036369325d3",
+			"0;8355;3;f;f;f;1645;b46bca7a-d5b0-44c4-aabb-7f089eeaaaa4",
+			"0;8354;1;f;f;f;1645;b46bca7a-d5b0-44c4-aabb-7f089eeaaaa4",
+			"1645;8354;2;f;f;t;0;b46bca7a-d5b0-44c4-aabb-7f089eeaaaa4",
+			"0;8354;3;t;f;f;1646;6bd615fd-f62e-4e98-82dc-dfe6a0fd76df",
+			"0;8353;1;t;f;f;1646;6bd615fd-f62e-4e98-82dc-dfe6a0fd76df",
+			"0;8353;3;f;f;f;1647;c35cc225-0e2b-4e62-b31b-337788e30090",
+			"0;8352;1;f;f;f;1647;c35cc225-0e2b-4e62-b31b-337788e30090",
+			"1647;8352;2;f;f;t;0;c35cc225-0e2b-4e62-b31b-337788e30090",
+			"0;8352;3;t;f;f;1648;aa9ccbd7-5f13-4236-931f-64da932ec229",
+			"0;8351;1;t;f;f;1648;aa9ccbd7-5f13-4236-931f-64da932ec229",
+			"0;8351;3;f;f;f;1649;efa64f6f-6de7-4fba-bc6d-fa09da2becc4",
+			"0;8350;1;f;f;f;1649;efa64f6f-6de7-4fba-bc6d-fa09da2becc4",
+			"1649;8350;2;f;f;t;0;efa64f6f-6de7-4fba-bc6d-fa09da2becc4",
+			"0;8350;3;t;f;f;1650;756600ab-fa05-4c9d-b7e8-03a65fd08cd5",
+			"0;8349;1;t;f;f;1650;756600ab-fa05-4c9d-b7e8-03a65fd08cd5",
+			"0;8349;3;f;f;f;1651;368f24c0-85e7-4f4e-9a7b-c38885a59801",
+			"0;8348;1;f;f;f;1651;368f24c0-85e7-4f4e-9a7b-c38885a59801",
+			"1651;8348;2;f;f;t;0;368f24c0-85e7-4f4e-9a7b-c38885a59801",
+			"0;8348;3;t;f;f;1652;387152e6-7339-4ea7-8b5b-5324a0ac4636",
+			"0;8347;1;t;f;f;1652;387152e6-7339-4ea7-8b5b-5324a0ac4636",
+			"0;8347;3;f;f;f;1653;ffb80217-8dcf-4268-9fa2-7a1f599f1b78",
+			"0;8346;1;f;f;f;1653;ffb80217-8dcf-4268-9fa2-7a1f599f1b78",
+			"1653;8346;2;f;f;t;0;ffb80217-8dcf-4268-9fa2-7a1f599f1b78",
+			"0;8346;3;t;f;f;1654;8e22d13e-9c2d-4190-8477-82c8b2837589",
+			"0;8345;1;t;f;f;1654;8e22d13e-9c2d-4190-8477-82c8b2837589",
+			"0;8345;3;f;f;f;1655;ea42ca19-31ef-4eaa-ba37-ef477b0e71b4",
+			"0;8344;1;f;f;f;1655;ea42ca19-31ef-4eaa-ba37-ef477b0e71b4",
+			"1655;8344;2;f;f;t;0;ea42ca19-31ef-4eaa-ba37-ef477b0e71b4",
+			"0;8344;3;t;f;f;1656;b8c155b9-358c-4ade-9f76-0f4dcd03a8c3",
+			"0;8343;1;t;f;f;1656;b8c155b9-358c-4ade-9f76-0f4dcd03a8c3",
+			"0;8343;3;f;f;f;1657;75486746-c85c-490e-b629-a752e25ec07c",
+			"0;8342;1;f;f;f;1657;75486746-c85c-490e-b629-a752e25ec07c",
+			"1657;8342;2;f;f;t;0;75486746-c85c-490e-b629-a752e25ec07c",
+			"0;8342;3;t;f;f;1658;62ea04c8-f3d4-4ae0-84ca-1b4f88e795d7",
+			"0;8341;1;t;f;f;1658;62ea04c8-f3d4-4ae0-84ca-1b4f88e795d7",
+			"0;8341;3;t;f;f;1659;8b79ef3c-be0c-4567-9378-1b5eaf58587b",
+			"0;8340;1;t;f;f;1659;8b79ef3c-be0c-4567-9378-1b5eaf58587b",
+			"1660;8340;2;f;f;t;0;032d1dc8-63c3-4afd-82e6-da9d3f49bfc1",
+			"0;8340;3;t;f;f;1660;032d1dc8-63c3-4afd-82e6-da9d3f49bfc1",
+			"0;8339;1;t;f;f;1660;032d1dc8-63c3-4afd-82e6-da9d3f49bfc1",
+			"0;8339;3;f;f;f;1661;24fbc225-6925-4901-9a4e-f018954996b1",
+			"0;8338;1;f;f;f;1661;24fbc225-6925-4901-9a4e-f018954996b1",
+			"1661;8338;2;f;f;t;0;24fbc225-6925-4901-9a4e-f018954996b1",
+			"0;8338;3;t;f;f;1662;cbce4de5-eb75-4fc1-b456-80c993a6b465",
+			"0;8337;1;t;f;f;1662;cbce4de5-eb75-4fc1-b456-80c993a6b465",
+			"0;8337;3;f;f;f;1663;a481f162-c173-40f4-a61a-ffa5613cd49f",
+			"0;8336;1;f;f;f;1663;a481f162-c173-40f4-a61a-ffa5613cd49f",
+			"1663;8336;2;f;f;t;0;a481f162-c173-40f4-a61a-ffa5613cd49f",
+			"0;8336;3;t;f;f;1664;9b7653f3-c622-41d5-8a4a-3222d00d7118",
+			"0;8335;1;t;f;f;1664;9b7653f3-c622-41d5-8a4a-3222d00d7118",
+			"0;8335;3;f;f;f;1665;f95a5427-4299-429e-997f-9e3782e17462",
+			"0;8334;1;f;f;f;1665;f95a5427-4299-429e-997f-9e3782e17462",
+			"1665;8334;2;f;f;t;0;f95a5427-4299-429e-997f-9e3782e17462",
+			"0;8334;3;t;f;f;1666;d1460041-d8d8-4f38-b374-593742e69ecc",
+			"0;8333;1;t;f;f;1666;d1460041-d8d8-4f38-b374-593742e69ecc",
+			"0;8333;3;f;f;f;1667;1bae3ee8-92ce-4e57-8dcd-7b06393b0e08",
+			"0;8332;1;f;f;f;1667;1bae3ee8-92ce-4e57-8dcd-7b06393b0e08",
+			"1667;8332;2;f;f;t;0;1bae3ee8-92ce-4e57-8dcd-7b06393b0e08",
+			"0;8332;3;t;f;f;1668;e96fdb01-88cb-49d3-9473-991a8cbe9964",
+			"0;8331;1;t;f;f;1668;e96fdb01-88cb-49d3-9473-991a8cbe9964",
+			"0;8331;3;f;f;f;1669;11af0d21-24fc-47b4-9be7-106c0469d8ff",
+			"0;8330;1;f;f;f;1669;11af0d21-24fc-47b4-9be7-106c0469d8ff",
+			"1669;8330;2;f;f;t;0;11af0d21-24fc-47b4-9be7-106c0469d8ff",
+			"0;8330;3;t;f;f;1670;2b5d3d46-2f08-4df7-ac42-7f904afc56d8",
+			"0;8329;1;t;f;f;1670;2b5d3d46-2f08-4df7-ac42-7f904afc56d8",
+			"0;8329;3;f;f;f;1671;12ffd422-569e-4686-b503-b35e544c7eb4",
+			"0;8328;1;f;f;f;1671;12ffd422-569e-4686-b503-b35e544c7eb4",
+			"1671;8328;2;f;f;t;0;12ffd422-569e-4686-b503-b35e544c7eb4",
+			"0;8328;3;t;f;f;1672;83aaa3fc-0fdc-4695-874b-11c8eb9e6fcc",
+			"0;8327;1;t;f;f;1672;83aaa3fc-0fdc-4695-874b-11c8eb9e6fcc",
+			"0;8327;3;f;f;f;1673;45cc7ee9-7eeb-4bd8-873b-773de5a2f052",
+			"0;8326;1;f;f;f;1673;45cc7ee9-7eeb-4bd8-873b-773de5a2f052",
+			"1673;8326;2;f;f;t;0;45cc7ee9-7eeb-4bd8-873b-773de5a2f052",
+			"0;8326;3;t;f;f;1674;74475127-3faf-45ce-b33f-1b4625b7b78d",
+			"0;8325;1;t;f;f;1674;74475127-3faf-45ce-b33f-1b4625b7b78d",
+			"0;8325;3;t;f;f;1675;ae76daa9-cc3a-4450-bfaf-4db8c21236a1",
+			"0;8324;1;t;f;f;1675;ae76daa9-cc3a-4450-bfaf-4db8c21236a1",
+			"1676;8324;2;f;f;t;0;57305f3b-2bca-42a3-b311-1920dd493d9a",
+			"0;8324;3;t;f;f;1676;57305f3b-2bca-42a3-b311-1920dd493d9a",
+			"0;8323;1;t;f;f;1676;57305f3b-2bca-42a3-b311-1920dd493d9a",
+			"0;8323;3;f;f;f;1677;dd66b062-c152-4e54-b9bd-4bc93c8b6648",
+			"0;8322;1;f;f;f;1677;dd66b062-c152-4e54-b9bd-4bc93c8b6648",
+			"1677;8322;2;f;f;t;0;dd66b062-c152-4e54-b9bd-4bc93c8b6648",
+			"0;8322;3;t;f;f;1678;57dd32a7-382c-49f6-ab6a-fda432b1e6e0",
+			"0;8321;1;t;f;f;1678;57dd32a7-382c-49f6-ab6a-fda432b1e6e0",
+			"0;8321;3;t;f;f;1679;8bf2701d-edee-4d7e-aa2f-133f9b854c83",
+			"0;8320;1;t;f;f;1679;8bf2701d-edee-4d7e-aa2f-133f9b854c83",
+			"1680;8320;2;f;f;t;0;3e76b701-0bc9-4e1a-b1bb-33fcc1afeea7",
+			"0;8320;3;t;f;f;1680;3e76b701-0bc9-4e1a-b1bb-33fcc1afeea7",
+			"0;8319;1;t;f;f;1680;3e76b701-0bc9-4e1a-b1bb-33fcc1afeea7",
+			"0;8319;3;f;f;f;1681;ee0b3f01-02db-40ca-865e-15efafa2433c",
+			"0;8318;1;f;f;f;1681;ee0b3f01-02db-40ca-865e-15efafa2433c",
+			"1681;8318;2;f;f;t;0;ee0b3f01-02db-40ca-865e-15efafa2433c",
+			"0;8318;3;t;f;f;1682;55eb1c73-3dac-4b25-bcab-b650b2b4f767",
+			"0;8317;1;t;f;f;1682;55eb1c73-3dac-4b25-bcab-b650b2b4f767",
+			"0;8317;3;f;f;f;1683;204ee9c4-8779-4af1-a2fe-64ba063b73ce",
+			"0;8316;1;f;f;f;1683;204ee9c4-8779-4af1-a2fe-64ba063b73ce",
+			"1683;8316;2;f;f;t;0;204ee9c4-8779-4af1-a2fe-64ba063b73ce",
+			"0;8316;3;t;f;f;1684;ed02733e-58fe-4bde-952d-1a44ab2dd9a6",
+			"0;8315;1;t;f;f;1684;ed02733e-58fe-4bde-952d-1a44ab2dd9a6",
+			"0;8315;3;f;f;f;1685;fd2960f6-f543-4456-822e-981c4fb9f950",
+			"0;8314;1;f;f;f;1685;fd2960f6-f543-4456-822e-981c4fb9f950",
+			"1685;8314;2;f;f;t;0;fd2960f6-f543-4456-822e-981c4fb9f950",
+			"0;8314;3;t;f;f;1686;488a0cc6-916f-47c7-9a0a-37bad8493b6a",
+			"0;8313;1;t;f;f;1686;488a0cc6-916f-47c7-9a0a-37bad8493b6a",
+			"0;8313;3;f;f;f;1687;0d801fd8-c301-45d9-a41d-3fc33bb870f0",
+			"0;8312;1;f;f;f;1687;0d801fd8-c301-45d9-a41d-3fc33bb870f0",
+			"1687;8312;2;f;f;t;0;0d801fd8-c301-45d9-a41d-3fc33bb870f0",
+			"0;8312;3;t;f;f;1688;270064bd-4358-4328-80a4-28691ad8e24b",
+			"0;8311;1;t;f;f;1688;270064bd-4358-4328-80a4-28691ad8e24b",
+			"0;8311;3;f;f;f;1689;0627c5e4-3cba-48a6-b7e4-0d2f07faa175",
+			"0;8310;1;f;f;f;1689;0627c5e4-3cba-48a6-b7e4-0d2f07faa175",
+			"1689;8310;2;f;f;t;0;0627c5e4-3cba-48a6-b7e4-0d2f07faa175",
+			"0;8310;3;t;f;f;1690;29ea1f8e-052a-4a92-8262-e346ab23f46e",
+			"0;8309;1;t;f;f;1690;29ea1f8e-052a-4a92-8262-e346ab23f46e",
+			"0;8309;3;f;f;f;1691;fd6bacaa-82cb-4f7d-8567-54f054d09185",
+			"0;8308;1;f;f;f;1691;fd6bacaa-82cb-4f7d-8567-54f054d09185",
+			"1691;8308;2;f;f;t;0;fd6bacaa-82cb-4f7d-8567-54f054d09185",
+			"0;8308;3;t;f;f;1692;165d5b9c-14e2-429b-a5f1-7a37296f2e18",
+			"0;8307;1;t;f;f;1692;165d5b9c-14e2-429b-a5f1-7a37296f2e18",
+			"0;8307;3;f;f;f;1693;6b77a8b3-ad22-485f-9722-7939913b6371",
+			"0;8306;1;f;f;f;1693;6b77a8b3-ad22-485f-9722-7939913b6371",
+			"1693;8306;2;f;f;t;0;6b77a8b3-ad22-485f-9722-7939913b6371",
+			"0;8306;3;t;f;f;1694;86ab5979-2dec-4a9a-a0e4-2cbfc90ec33c",
+			"0;8305;1;t;f;f;1694;86ab5979-2dec-4a9a-a0e4-2cbfc90ec33c",
+			"0;8305;3;f;f;f;1695;a2ee0af2-11ff-47f5-aea8-26d9a5748e87",
+			"0;8304;1;f;f;f;1695;a2ee0af2-11ff-47f5-aea8-26d9a5748e87",
+			"1695;8304;2;f;f;t;0;a2ee0af2-11ff-47f5-aea8-26d9a5748e87",
+			"0;8304;3;t;f;f;1696;fdede59f-4fbe-4a4f-a6cd-7e52b47853b8",
+			"0;8303;1;t;f;f;1696;fdede59f-4fbe-4a4f-a6cd-7e52b47853b8",
+			"0;8303;3;f;f;f;1697;77e937ec-9983-4b0a-b090-2f402c868562",
+			"0;8302;1;f;f;f;1697;77e937ec-9983-4b0a-b090-2f402c868562",
+			"1697;8302;2;f;f;t;0;77e937ec-9983-4b0a-b090-2f402c868562",
+			"0;8302;3;t;f;f;1698;9c44e854-33d1-400f-8d2b-8c7f400269b7",
+			"0;8301;1;t;f;f;1698;9c44e854-33d1-400f-8d2b-8c7f400269b7",
+			"0;8301;3;f;f;f;1699;541db58f-272f-429a-b2c3-d10747784cef",
+			"0;8300;1;f;f;f;1699;541db58f-272f-429a-b2c3-d10747784cef",
+			"1699;8300;2;f;f;t;0;541db58f-272f-429a-b2c3-d10747784cef",
+			"0;8300;3;t;f;f;1700;c1b36e5c-d0ef-4580-81f3-25f1d4f48b9e",
+			"0;8299;1;t;f;f;1700;c1b36e5c-d0ef-4580-81f3-25f1d4f48b9e",
+			"0;8299;3;f;f;f;1701;280236fc-aed6-471a-a63c-5adb4b58d12b",
+			"0;8298;1;f;f;f;1701;280236fc-aed6-471a-a63c-5adb4b58d12b",
+			"1701;8298;2;f;f;t;0;280236fc-aed6-471a-a63c-5adb4b58d12b",
+			"0;8298;3;t;f;f;1702;587c7723-7d1e-4e1b-9742-a97dc4df1b43",
+			"0;8297;1;t;f;f;1702;587c7723-7d1e-4e1b-9742-a97dc4df1b43",
+			"0;8297;3;f;f;f;1703;5ac2947c-ef91-4257-b707-8fdf26c122d9",
+			"0;8296;1;f;f;f;1703;5ac2947c-ef91-4257-b707-8fdf26c122d9",
+			"1703;8296;2;f;f;t;0;5ac2947c-ef91-4257-b707-8fdf26c122d9",
+			"0;8296;3;t;f;f;1704;217f5090-fcff-4b4d-bc7e-a195b6c52800",
+			"0;8295;1;t;f;f;1704;217f5090-fcff-4b4d-bc7e-a195b6c52800",
+			"0;8295;3;f;f;f;1705;72227160-2022-43bb-9144-bcd499c16fbe",
+			"0;8294;1;f;f;f;1705;72227160-2022-43bb-9144-bcd499c16fbe",
+			"1705;8294;2;f;f;t;0;72227160-2022-43bb-9144-bcd499c16fbe",
+			"0;8294;3;t;f;f;1706;12dcb271-e2d9-4155-aef9-8890f43c4ccb",
+			"0;8293;1;t;f;f;1706;12dcb271-e2d9-4155-aef9-8890f43c4ccb",
+			"0;8293;3;f;f;f;1707;07ce9cbf-8f88-42e8-8080-767a000483de",
+			"0;8292;1;f;f;f;1707;07ce9cbf-8f88-42e8-8080-767a000483de",
+			"1707;8292;2;f;f;t;0;07ce9cbf-8f88-42e8-8080-767a000483de",
+			"0;8292;3;t;f;f;1708;74a43494-214d-4aee-8dfd-f6429382a446",
+			"0;8291;1;t;f;f;1708;74a43494-214d-4aee-8dfd-f6429382a446",
+			"0;8291;3;f;f;f;1709;207b8580-3070-46b0-a9af-ad594a11c855",
+			"0;8290;1;f;f;f;1709;207b8580-3070-46b0-a9af-ad594a11c855",
+			"1709;8290;2;f;f;t;0;207b8580-3070-46b0-a9af-ad594a11c855",
+			"0;8290;3;t;f;f;1710;e3888f6a-8952-4726-8e5d-c579ed9851d7",
+			"0;8289;1;t;f;f;1710;e3888f6a-8952-4726-8e5d-c579ed9851d7",
+			"0;8289;3;f;f;f;1711;cfe2429e-1937-46a3-ac83-faaa0f3276c4",
+			"0;8288;1;f;f;f;1711;cfe2429e-1937-46a3-ac83-faaa0f3276c4",
+			"1711;8288;2;f;f;t;0;cfe2429e-1937-46a3-ac83-faaa0f3276c4",
+			"0;8288;3;t;f;f;1712;fd0d3c26-bbea-4d4e-8084-49e812987bac",
+			"0;8287;1;t;f;f;1712;fd0d3c26-bbea-4d4e-8084-49e812987bac",
+			"0;8287;3;f;f;f;1713;a64c178d-2b30-4f8c-bf19-42c4c9a03354",
+			"0;8286;1;f;f;f;1713;a64c178d-2b30-4f8c-bf19-42c4c9a03354",
+			"1713;8286;2;f;f;t;0;a64c178d-2b30-4f8c-bf19-42c4c9a03354",
+			"0;8286;3;t;f;f;1714;f31888e9-1be4-4baa-860e-6b8457719cfb",
+			"0;8285;1;t;f;f;1714;f31888e9-1be4-4baa-860e-6b8457719cfb",
+			"0;8285;3;f;f;f;1715;8cccdb63-4b61-4be9-a257-46141d92b30b",
+			"0;8284;1;f;f;f;1715;8cccdb63-4b61-4be9-a257-46141d92b30b",
+			"1715;8284;2;f;f;t;0;8cccdb63-4b61-4be9-a257-46141d92b30b",
+			"0;8284;3;t;f;f;1716;0d261890-6269-4f06-a0a9-3068b9d3526a",
+			"0;8283;1;t;f;f;1716;0d261890-6269-4f06-a0a9-3068b9d3526a",
+			"0;8283;3;f;f;f;1717;d2fd7a0f-e9be-460f-b7bb-5ab0692bb521",
+			"0;8282;1;f;f;f;1717;d2fd7a0f-e9be-460f-b7bb-5ab0692bb521",
+			"1717;8282;2;f;f;t;0;d2fd7a0f-e9be-460f-b7bb-5ab0692bb521",
+			"0;8282;3;t;f;f;1718;f9297ea4-99db-4895-a95c-73ca9e3dd14c",
+			"0;8281;1;t;f;f;1718;f9297ea4-99db-4895-a95c-73ca9e3dd14c",
+			"0;8281;3;f;f;f;1719;34176bfe-8db9-4f52-b509-a2f6939c1c18",
+			"0;8280;1;f;f;f;1719;34176bfe-8db9-4f52-b509-a2f6939c1c18",
+			"1719;8280;2;f;f;t;0;34176bfe-8db9-4f52-b509-a2f6939c1c18",
+			"0;8280;3;t;f;f;1720;70d9508a-0354-43ad-8bfe-e9982ef093bc",
+			"0;8279;1;t;f;f;1720;70d9508a-0354-43ad-8bfe-e9982ef093bc",
+			"0;8279;3;f;f;f;1721;8e7f9740-7991-4e84-998a-11f50d89654f",
+			"0;8278;1;f;f;f;1721;8e7f9740-7991-4e84-998a-11f50d89654f",
+			"1721;8278;2;f;f;t;0;8e7f9740-7991-4e84-998a-11f50d89654f",
+			"0;8278;3;t;f;f;1722;a66abf55-f339-4845-b68d-0da414c89d6f",
+			"0;8277;1;t;f;f;1722;a66abf55-f339-4845-b68d-0da414c89d6f",
+			"0;8277;3;f;f;f;1723;b703be81-1f73-4891-bd7e-a73fb0d881f1",
+			"0;8276;1;f;f;f;1723;b703be81-1f73-4891-bd7e-a73fb0d881f1",
+			"1723;8276;2;f;f;t;0;b703be81-1f73-4891-bd7e-a73fb0d881f1",
+			"0;8276;3;t;f;f;1724;36e33a0f-795a-4270-9140-8eef60691d0d",
+			"0;8275;1;t;f;f;1724;36e33a0f-795a-4270-9140-8eef60691d0d",
+			"0;8275;3;f;f;f;1725;82399844-5c44-45a1-b755-7242fe7f0634",
+			"0;8274;1;f;f;f;1725;82399844-5c44-45a1-b755-7242fe7f0634",
+			"1725;8274;2;f;f;t;0;82399844-5c44-45a1-b755-7242fe7f0634",
+			"0;8274;3;t;f;f;1726;3205bdf0-e9dd-4c67-93d8-58d524932a3d",
+			"0;8273;1;t;f;f;1726;3205bdf0-e9dd-4c67-93d8-58d524932a3d",
+			"0;8273;3;f;f;f;1727;d7b9abac-0d8f-458f-ba61-7026bb9836b8",
+			"0;8272;1;f;f;f;1727;d7b9abac-0d8f-458f-ba61-7026bb9836b8",
+			"1727;8272;2;f;f;t;0;d7b9abac-0d8f-458f-ba61-7026bb9836b8",
+			"0;8272;3;t;f;f;1728;3e359f57-202c-4bbf-ae61-4643cecc80a5",
+			"0;8271;1;t;f;f;1728;3e359f57-202c-4bbf-ae61-4643cecc80a5",
+			"0;8271;3;f;f;f;1729;64c67027-e915-4561-b67a-f573b90ab4d2",
+			"0;8270;1;f;f;f;1729;64c67027-e915-4561-b67a-f573b90ab4d2",
+			"1729;8270;2;f;f;t;0;64c67027-e915-4561-b67a-f573b90ab4d2",
+			"0;8270;3;t;f;f;1730;8c2a1f4b-f6b9-492f-a552-897f0028d0d3",
+			"0;8269;1;t;f;f;1730;8c2a1f4b-f6b9-492f-a552-897f0028d0d3",
+			"0;8269;3;f;f;f;1731;3d59094d-b194-4082-9a84-8f961379a9c8",
+			"0;8268;1;f;f;f;1731;3d59094d-b194-4082-9a84-8f961379a9c8",
+			"1731;8268;2;f;f;t;0;3d59094d-b194-4082-9a84-8f961379a9c8",
+			"0;8268;3;t;f;f;1732;07b68859-e2e8-4bcd-ad0a-d9baff39f899",
+			"0;8267;1;t;f;f;1732;07b68859-e2e8-4bcd-ad0a-d9baff39f899",
+			"0;8267;3;f;f;f;1733;3ca96c65-4f63-4d18-b2ed-22fe7290c730",
+			"0;8266;1;f;f;f;1733;3ca96c65-4f63-4d18-b2ed-22fe7290c730",
+			"1733;8266;2;f;f;t;0;3ca96c65-4f63-4d18-b2ed-22fe7290c730",
+			"0;8266;3;t;f;f;1734;dcc88ba7-4160-42c4-a295-14ac5c07a6d1",
+			"0;8265;1;t;f;f;1734;dcc88ba7-4160-42c4-a295-14ac5c07a6d1",
+			"0;8265;3;f;f;f;1735;1898af5b-8d0e-44b1-a4ca-03a1a9443729",
+			"0;8264;1;f;f;f;1735;1898af5b-8d0e-44b1-a4ca-03a1a9443729",
+			"1735;8264;2;f;f;t;0;1898af5b-8d0e-44b1-a4ca-03a1a9443729",
+			"0;8264;3;t;f;f;1736;f7283563-df86-4b4f-b18d-7a583c9154b7",
+			"0;8263;1;t;f;f;1736;f7283563-df86-4b4f-b18d-7a583c9154b7",
+			"0;8263;3;f;f;f;1737;552aea33-e771-4ccc-aca9-b1f1f778a499",
+			"0;8262;1;f;f;f;1737;552aea33-e771-4ccc-aca9-b1f1f778a499",
+			"1737;8262;2;f;f;t;0;552aea33-e771-4ccc-aca9-b1f1f778a499",
+			"0;8262;3;t;f;f;1738;dac5532f-b70d-4736-88da-9ba1c6c80d2e",
+			"0;8261;1;t;f;f;1738;dac5532f-b70d-4736-88da-9ba1c6c80d2e",
+			"0;8261;3;f;f;f;1739;fc037fe5-e879-4d5b-981f-69f41197c8bf",
+			"0;8260;1;f;f;f;1739;fc037fe5-e879-4d5b-981f-69f41197c8bf",
+			"1739;8260;2;f;f;t;0;fc037fe5-e879-4d5b-981f-69f41197c8bf",
+			"0;8260;3;t;f;f;1740;c099b83d-dcd7-4a2c-805d-5d881d09fe86",
+			"0;8259;1;t;f;f;1740;c099b83d-dcd7-4a2c-805d-5d881d09fe86",
+			"0;8259;3;f;f;f;1741;663db190-7042-4ef6-8a2d-6abbaeeb8f4f",
+			"0;8258;1;f;f;f;1741;663db190-7042-4ef6-8a2d-6abbaeeb8f4f",
+			"1741;8258;2;f;f;t;0;663db190-7042-4ef6-8a2d-6abbaeeb8f4f",
+			"0;8258;3;t;f;f;1742;df1d0394-aa80-4b32-aab1-0b17f7f4435b",
+			"0;8257;1;t;f;f;1742;df1d0394-aa80-4b32-aab1-0b17f7f4435b",
+			"0;8257;3;f;f;f;1743;66e1f148-af25-43b1-9811-eb4e1dc3b149",
+			"0;8256;1;f;f;f;1743;66e1f148-af25-43b1-9811-eb4e1dc3b149",
+			"1743;8256;2;f;f;t;0;66e1f148-af25-43b1-9811-eb4e1dc3b149",
+			"0;8256;3;t;f;f;1744;07d5c9e3-ba43-4d20-87d9-f058c6a46131",
+			"0;8255;1;t;f;f;1744;07d5c9e3-ba43-4d20-87d9-f058c6a46131",
+			"0;8255;3;t;f;f;1745;a59e5225-4620-4a07-a253-97d3c0817ea9",
+			"0;8254;1;t;f;f;1745;a59e5225-4620-4a07-a253-97d3c0817ea9",
+			"1746;8254;2;f;f;t;0;9d3ed0bf-b5ab-4c26-9088-89e8d15a1706",
+			"0;8254;3;t;f;f;1746;9d3ed0bf-b5ab-4c26-9088-89e8d15a1706",
+			"0;8253;1;t;f;f;1746;9d3ed0bf-b5ab-4c26-9088-89e8d15a1706",
+			"0;8253;3;f;f;f;1747;0fc87aaf-0d5d-4191-83be-17d54c305721",
+			"0;8252;1;f;f;f;1747;0fc87aaf-0d5d-4191-83be-17d54c305721",
+			"1747;8252;2;f;f;t;0;0fc87aaf-0d5d-4191-83be-17d54c305721",
+			"0;8252;3;t;f;f;1748;ec9dea5f-e187-410b-9647-38cf2f190388",
+			"0;8251;1;t;f;f;1748;ec9dea5f-e187-410b-9647-38cf2f190388",
+			"0;8251;3;t;f;f;1749;a94157b2-a193-4f33-a5f3-72e12718ab2e",
+			"0;8250;1;t;f;f;1749;a94157b2-a193-4f33-a5f3-72e12718ab2e",
+			"1750;8250;2;f;f;t;0;02ebb136-690e-413a-b76b-f508a590bd40",
+			"0;8250;3;t;f;f;1750;02ebb136-690e-413a-b76b-f508a590bd40",
+			"0;8249;1;t;f;f;1750;02ebb136-690e-413a-b76b-f508a590bd40",
+			"0;8249;3;f;f;f;1751;6cdb3beb-df0d-43ef-9589-1f0ea716e069",
+			"0;8248;1;f;f;f;1751;6cdb3beb-df0d-43ef-9589-1f0ea716e069",
+			"1751;8248;2;f;f;t;0;6cdb3beb-df0d-43ef-9589-1f0ea716e069",
+			"0;8248;3;t;f;f;1752;3b2a4a9e-d08d-4333-a498-244878ff5415",
+			"0;8247;1;t;f;f;1752;3b2a4a9e-d08d-4333-a498-244878ff5415",
+			"0;8247;3;f;f;f;1753;cec7f452-a583-493b-9336-feb73f5664ac",
+			"0;8246;1;f;f;f;1753;cec7f452-a583-493b-9336-feb73f5664ac",
+			"1753;8246;2;f;f;t;0;cec7f452-a583-493b-9336-feb73f5664ac",
+			"0;8246;3;t;f;f;1754;6d59fdf7-fc45-4126-b7f3-6a9709a3ef63",
+			"0;8245;1;t;f;f;1754;6d59fdf7-fc45-4126-b7f3-6a9709a3ef63",
+			"0;8245;3;f;f;f;1755;809e5cd2-e842-4201-bd0d-615ae2e23808",
+			"0;8244;1;f;f;f;1755;809e5cd2-e842-4201-bd0d-615ae2e23808",
+			"1755;8244;2;f;f;t;0;809e5cd2-e842-4201-bd0d-615ae2e23808",
+			"0;8244;3;t;f;f;1756;366b3f40-c1e7-4449-aa6c-d19e7c5df1b1",
+			"0;8243;1;t;f;f;1756;366b3f40-c1e7-4449-aa6c-d19e7c5df1b1",
+			"0;8243;3;t;f;f;1757;d1ef24af-a1af-45c6-b425-e13b3a692f50",
+			"0;8242;1;t;f;f;1757;d1ef24af-a1af-45c6-b425-e13b3a692f50",
+			"1758;8242;2;f;f;t;0;0291e6ec-3c54-4729-bb70-24d0d2b03d32",
+			"0;8242;3;t;f;f;1758;0291e6ec-3c54-4729-bb70-24d0d2b03d32",
+			"0;8241;1;t;f;f;1758;0291e6ec-3c54-4729-bb70-24d0d2b03d32",
+			"0;8241;3;f;f;f;1759;bedefb20-ae0b-4a16-841a-fb42f2a1b326",
+			"0;8240;1;f;f;f;1759;bedefb20-ae0b-4a16-841a-fb42f2a1b326",
+			"1759;8240;2;f;f;t;0;bedefb20-ae0b-4a16-841a-fb42f2a1b326",
+			"0;8240;3;t;f;f;1760;0668f746-eb44-43a7-b80c-624eaffa9d8f",
+			"0;8239;1;t;f;f;1760;0668f746-eb44-43a7-b80c-624eaffa9d8f",
+			"0;8239;3;t;f;f;1761;cb189d45-d97d-447c-bf7e-986e8f4beb47",
+			"0;8238;1;t;f;f;1761;cb189d45-d97d-447c-bf7e-986e8f4beb47",
+			"1762;8238;2;f;f;t;0;d0322bc9-1542-4572-9ddb-015b7572af47",
+			"0;8238;3;t;f;f;1762;d0322bc9-1542-4572-9ddb-015b7572af47",
+			"0;8237;1;t;f;f;1762;d0322bc9-1542-4572-9ddb-015b7572af47",
+			"0;8237;3;f;f;f;1763;2a8effcd-7b5e-4fe0-96d0-9c60144c56c8",
+			"0;8236;1;f;f;f;1763;2a8effcd-7b5e-4fe0-96d0-9c60144c56c8",
+			"1763;8236;2;f;f;t;0;2a8effcd-7b5e-4fe0-96d0-9c60144c56c8",
+			"0;8236;3;t;f;f;1764;eb8822a5-8122-46cf-820a-e34687d795dc",
+			"0;8235;1;t;f;f;1764;eb8822a5-8122-46cf-820a-e34687d795dc",
+			"0;8235;3;t;f;f;1765;d19cc0e7-f433-442e-a0cd-cbd0461d9543",
+			"0;8234;1;t;f;f;1765;d19cc0e7-f433-442e-a0cd-cbd0461d9543",
+			"1766;8234;2;f;f;t;0;388626dc-2748-4779-9763-3bc43c1dd672",
+			"0;8234;3;t;f;f;1766;388626dc-2748-4779-9763-3bc43c1dd672",
+			"0;8233;1;t;f;f;1766;388626dc-2748-4779-9763-3bc43c1dd672",
+			"0;8233;3;f;f;f;1767;be4c4cfe-1aa3-4e42-8f71-bc4ea31c9fee",
+			"0;8232;1;f;f;f;1767;be4c4cfe-1aa3-4e42-8f71-bc4ea31c9fee",
+			"1767;8232;2;f;f;t;0;be4c4cfe-1aa3-4e42-8f71-bc4ea31c9fee",
+			"0;8232;3;t;f;f;1768;e18ae7e6-6753-4f58-b02a-a7e427093b33",
+			"0;8231;1;t;f;f;1768;e18ae7e6-6753-4f58-b02a-a7e427093b33",
+			"0;8231;3;t;f;f;1769;1c22ab4e-d732-4d4d-b0fe-d861e4f2b52b",
+			"0;8230;1;t;f;f;1769;1c22ab4e-d732-4d4d-b0fe-d861e4f2b52b",
+			"1770;8230;2;f;f;t;0;0046c2ac-ba5f-474d-8e5c-ac2b2c1c14b3",
+			"0;8230;3;t;f;f;1770;0046c2ac-ba5f-474d-8e5c-ac2b2c1c14b3",
+			"0;8229;1;t;f;f;1770;0046c2ac-ba5f-474d-8e5c-ac2b2c1c14b3",
+			"0;8229;3;f;f;f;1771;b6a45bc4-e259-4143-9d08-8e61bb5c019f",
+			"0;8228;1;f;f;f;1771;b6a45bc4-e259-4143-9d08-8e61bb5c019f",
+			"1771;8228;2;f;f;t;0;b6a45bc4-e259-4143-9d08-8e61bb5c019f",
+			"0;8228;3;t;f;f;1772;1d1c7be5-fb08-422b-ae72-694608f63f91",
+			"0;8227;1;t;f;f;1772;1d1c7be5-fb08-422b-ae72-694608f63f91",
+			"0;8227;3;f;f;f;1773;683ee08f-c516-4cc5-af98-ccdf949fab99",
+			"0;8226;1;f;f;f;1773;683ee08f-c516-4cc5-af98-ccdf949fab99",
+			"1773;8226;2;f;f;t;0;683ee08f-c516-4cc5-af98-ccdf949fab99",
+			"0;8226;3;t;f;f;1774;aed2996a-2c13-41d8-b5c3-6139af90a2a1",
+			"0;8225;1;t;f;f;1774;aed2996a-2c13-41d8-b5c3-6139af90a2a1",
+			"0;8225;3;f;f;f;1775;46837846-5830-4ef7-9d96-9b7529a193be",
+			"0;8224;1;f;f;f;1775;46837846-5830-4ef7-9d96-9b7529a193be",
+			"1775;8224;2;f;f;t;0;46837846-5830-4ef7-9d96-9b7529a193be",
+			"0;8224;3;t;f;f;1776;aeda9d96-c049-436d-8184-84bcc40cbb2a",
+			"0;8223;1;t;f;f;1776;aeda9d96-c049-436d-8184-84bcc40cbb2a",
+			"0;8223;3;f;f;f;1777;c04311da-3109-471a-b842-90f6df0b6729",
+			"0;8222;1;f;f;f;1777;c04311da-3109-471a-b842-90f6df0b6729",
+			"1777;8222;2;f;f;t;0;c04311da-3109-471a-b842-90f6df0b6729",
+			"0;8222;3;t;f;f;1778;958375fd-80bf-4d10-b156-a28f977da9da",
+			"0;8221;1;t;f;f;1778;958375fd-80bf-4d10-b156-a28f977da9da",
+			"0;8221;3;f;f;f;1779;1ad3d7cc-8e2b-4a68-8236-5b0763636f91",
+			"0;8220;1;f;f;f;1779;1ad3d7cc-8e2b-4a68-8236-5b0763636f91",
+			"1779;8220;2;f;f;t;0;1ad3d7cc-8e2b-4a68-8236-5b0763636f91",
+			"0;8220;3;t;f;f;1780;26832254-c551-460c-b389-0ed98585a7dc",
+			"0;8219;1;t;f;f;1780;26832254-c551-460c-b389-0ed98585a7dc",
+			"0;8219;3;f;f;f;1781;95cb0094-e5d4-4c70-ae6b-5808d96bd743",
+			"0;8218;1;f;f;f;1781;95cb0094-e5d4-4c70-ae6b-5808d96bd743",
+			"1781;8218;2;f;f;t;0;95cb0094-e5d4-4c70-ae6b-5808d96bd743",
+			"0;8218;3;t;f;f;1782;0db64a55-4159-42aa-a715-23e2ace1061e",
+			"0;8217;1;t;f;f;1782;0db64a55-4159-42aa-a715-23e2ace1061e",
+			"0;8217;3;f;f;f;1783;2c2e5cb2-22d8-4cfb-87f3-718a6fe8da51",
+			"0;8216;1;f;f;f;1783;2c2e5cb2-22d8-4cfb-87f3-718a6fe8da51",
+			"1783;8216;2;f;f;t;0;2c2e5cb2-22d8-4cfb-87f3-718a6fe8da51",
+			"0;8216;3;t;f;f;1784;456eabe1-a33c-4158-89e2-2f533462b756",
+			"0;8215;1;t;f;f;1784;456eabe1-a33c-4158-89e2-2f533462b756",
+			"0;8215;3;f;f;f;1785;8618d0c0-c2fd-45d5-a91c-3369726965fc",
+			"0;8214;1;f;f;f;1785;8618d0c0-c2fd-45d5-a91c-3369726965fc",
+			"1785;8214;2;f;f;t;0;8618d0c0-c2fd-45d5-a91c-3369726965fc",
+			"0;8214;3;t;f;f;1786;d324d9d4-7140-4569-bbb0-ea508ebd6f74",
+			"0;8213;1;t;f;f;1786;d324d9d4-7140-4569-bbb0-ea508ebd6f74",
+			"0;8213;3;f;f;f;1787;1b1bc25f-bf39-4459-baf3-cf90a402a940",
+			"0;8212;1;f;f;f;1787;1b1bc25f-bf39-4459-baf3-cf90a402a940",
+			"1787;8212;2;f;f;t;0;1b1bc25f-bf39-4459-baf3-cf90a402a940",
+			"0;8212;3;t;f;f;1788;a0a790fe-a203-4b86-84a4-c5fb02ef2de8",
+			"0;8211;1;t;f;f;1788;a0a790fe-a203-4b86-84a4-c5fb02ef2de8",
+			"0;8211;3;f;f;f;1789;25a29a8e-c143-4dd8-90f7-998fd0f9e356",
+			"0;8210;1;f;f;f;1789;25a29a8e-c143-4dd8-90f7-998fd0f9e356",
+			"1789;8210;2;f;f;t;0;25a29a8e-c143-4dd8-90f7-998fd0f9e356",
+			"0;8210;3;t;f;f;1790;cbbf1c83-c3e7-4f07-b8b2-894b3f58af7c",
+			"0;8209;1;t;f;f;1790;cbbf1c83-c3e7-4f07-b8b2-894b3f58af7c",
+			"0;8209;3;f;f;f;1791;97cf7ed2-fb09-4d57-8f65-37acb75b1688",
+			"0;8208;1;f;f;f;1791;97cf7ed2-fb09-4d57-8f65-37acb75b1688",
+			"1791;8208;2;f;f;t;0;97cf7ed2-fb09-4d57-8f65-37acb75b1688",
+			"0;8208;3;t;f;f;1792;2e26f6a6-cc4b-4fb7-85bf-a67e8730655f",
+			"0;8207;1;t;f;f;1792;2e26f6a6-cc4b-4fb7-85bf-a67e8730655f",
+			"0;8207;3;f;f;f;1793;83b74995-6553-4865-b3b2-335fb8ea7a7d",
+			"0;8206;1;f;f;f;1793;83b74995-6553-4865-b3b2-335fb8ea7a7d",
+			"1793;8206;2;f;f;t;0;83b74995-6553-4865-b3b2-335fb8ea7a7d",
+			"0;8206;3;t;f;f;1794;9fadd86e-d5b6-4805-ac2f-beffef03d626",
+			"0;8205;1;t;f;f;1794;9fadd86e-d5b6-4805-ac2f-beffef03d626",
+			"0;8205;3;f;f;f;1795;839b8816-ccf1-43e0-a67c-5117eee65b1f",
+			"0;8204;1;f;f;f;1795;839b8816-ccf1-43e0-a67c-5117eee65b1f",
+			"1795;8204;2;f;f;t;0;839b8816-ccf1-43e0-a67c-5117eee65b1f",
+			"0;8204;3;t;f;f;1796;fb8f2aec-b22e-4a76-9f40-cc44cdf79bb4",
+			"0;8203;1;t;f;f;1796;fb8f2aec-b22e-4a76-9f40-cc44cdf79bb4",
+			"0;8203;3;f;f;f;1797;226ddf13-5c48-42da-a223-7991fba59c8b",
+			"0;8202;1;f;f;f;1797;226ddf13-5c48-42da-a223-7991fba59c8b",
+			"1797;8202;2;f;f;t;0;226ddf13-5c48-42da-a223-7991fba59c8b",
+			"0;8202;3;t;f;f;1798;a64b6e8d-c15a-49cf-bfe6-58c630a5178a",
+			"0;8201;1;t;f;f;1798;a64b6e8d-c15a-49cf-bfe6-58c630a5178a",
+			"0;8201;3;f;f;f;1799;254eda48-4e97-41d2-b57a-cf5f22bb19ed",
+			"0;8200;1;f;f;f;1799;254eda48-4e97-41d2-b57a-cf5f22bb19ed",
+			"1799;8200;2;f;f;t;0;254eda48-4e97-41d2-b57a-cf5f22bb19ed",
+			"0;8200;3;t;f;f;1800;2b3f15e5-7add-4ce8-883d-be2935f90453",
+			"0;8199;1;t;f;f;1800;2b3f15e5-7add-4ce8-883d-be2935f90453",
+			"0;8199;3;t;f;f;1801;4b2a8d0a-c98b-451f-8b1c-2038c62da094",
+			"0;8198;1;t;f;f;1801;4b2a8d0a-c98b-451f-8b1c-2038c62da094",
+			"0;8198;3;f;f;f;1802;f282dcbd-8f95-4ea0-bee0-d395f9c9a3bb",
+			"0;8197;1;f;f;f;1802;f282dcbd-8f95-4ea0-bee0-d395f9c9a3bb",
+			"1802;8197;2;f;f;t;0;f282dcbd-8f95-4ea0-bee0-d395f9c9a3bb",
+			"0;8197;3;f;f;f;1803;921aa048-be44-49c0-a405-05ab47179a4d",
+			"0;8196;1;f;f;f;1803;921aa048-be44-49c0-a405-05ab47179a4d",
+			"1803;8196;2;f;f;t;0;921aa048-be44-49c0-a405-05ab47179a4d",
+			"0;8196;3;t;f;f;1804;5e586fa0-23f3-4615-a5d5-901c7a10b15b",
+			"0;8195;1;t;f;f;1804;5e586fa0-23f3-4615-a5d5-901c7a10b15b",
+			"0;8195;3;f;f;f;1805;5d7c47ac-a36e-4f89-8920-0ca937352c6f",
+			"0;8194;1;f;f;f;1805;5d7c47ac-a36e-4f89-8920-0ca937352c6f",
+			"1805;8194;2;f;f;t;0;5d7c47ac-a36e-4f89-8920-0ca937352c6f",
+			"0;8194;3;t;f;f;1806;6e4bfc0f-1a62-4446-8fac-d94577c983af",
+			"0;8193;1;t;f;f;1806;6e4bfc0f-1a62-4446-8fac-d94577c983af",
+			"0;8193;3;f;f;f;1807;9f39b719-2797-4f7a-a9ec-4c552a8080ff",
+			"0;8192;1;f;f;f;1807;9f39b719-2797-4f7a-a9ec-4c552a8080ff",
+			"1807;8192;2;f;f;t;0;9f39b719-2797-4f7a-a9ec-4c552a8080ff",
+			"0;8192;3;t;f;f;1808;52061300-ad31-44d8-ae24-2c1ba1f3dced",
+			"0;8191;1;t;f;f;1808;52061300-ad31-44d8-ae24-2c1ba1f3dced",
+			"0;8191;3;f;f;f;1809;994558bf-52c8-453e-9c52-6b30f06292c4",
+			"0;8190;1;f;f;f;1809;994558bf-52c8-453e-9c52-6b30f06292c4",
+			"1809;8190;2;f;f;t;0;994558bf-52c8-453e-9c52-6b30f06292c4",
+			"0;8190;3;t;f;f;1810;3bddb66f-da23-4da7-8423-d16c76a9e9de",
+			"0;8190;4;f;f;f;0;",
+			"0;8189;1;t;f;f;1810;3bddb66f-da23-4da7-8423-d16c76a9e9de",
+			"0;8188;1;f;f;f;1811;b33c92a0-7bf6-40aa-8411-a553b71c92dc",
+			"0;8187;1;t;f;f;1812;36b7282f-1a0f-4854-913e-a6b088980cc0",
+			"0;8186;1;f;f;f;1813;4bc4d942-24db-4678-933f-d40dcc1df9dc",
+			"0;8185;1;t;f;f;1814;bbe9a8d6-711e-4c6b-b4db-9568b01cb923",
+			"0;8184;1;f;f;f;1815;31ca4712-0242-4f13-a095-e2aad8cbc574",
+			"0;8183;1;t;f;f;1816;73914d2d-e06f-4ea2-8c03-d07b745b2319",
+			"0;8182;1;f;f;f;1817;5a95d374-21b9-4320-aee7-a88bc6249dac",
+			"0;8181;1;t;f;f;1818;7794ef47-2943-452b-9de8-a05abc4f20d5",
+			"0;8180;1;f;f;f;1819;a03099d5-3096-435c-ac8f-f1f1de5f2af7",
+			"0;8179;1;t;f;f;1820;fc9ca623-7b84-4599-80ca-a50f2f3789b1",
+			"0;8178;1;f;f;f;1821;1c880efb-2ede-45ea-a77f-3f0b850ab9d4",
+			"0;8177;1;t;f;f;1822;b423e2b7-2f48-4807-a64d-39879ed7015a",
+			"0;8176;1;t;f;f;1823;4d16d5cf-2c95-4d73-bb17-d6b655aad8fb",
+			"0;8175;1;f;f;f;1824;b5c11a67-3c00-4416-a0ad-888340335565",
+			"0;8174;1;f;f;f;1825;c4bbf9f3-4d05-4798-86b6-3845c55e5b2b",
+			"0;8173;1;t;f;f;1826;fc05a54d-2c6c-4272-9b54-a97903615243",
+			"0;8172;1;t;f;f;1827;32bd836d-79ea-45c7-9a19-c16db75a74fe",
+			"0;8171;1;f;f;f;1828;d75d2697-324a-406a-9694-f9c22f3c46e8",
+			"0;8170;1;f;f;f;1829;0fa88455-6be0-44c6-b6dd-ab054b5f92c3",
+			"0;8169;1;t;f;f;1830;159ddf6d-a581-4205-85ec-3dc9b2a658de",
+			"0;8168;1;f;f;f;1831;c397301c-0924-4244-ac70-5da718760334",
+			"0;8167;1;t;f;f;1832;dd04d646-0c13-4546-bf13-848f72b33517",
+			"0;8166;1;f;f;f;1833;9500d75b-89d4-4de2-8b5b-4411755a6e5d",
+			"0;8165;1;t;f;f;1834;c9b5e124-2116-46d5-9995-3f2adaa6ddd1",
+			"0;8164;1;f;f;f;1835;e41718ad-0ddd-4f90-899e-f7a83930fa80",
+			"0;8163;1;t;f;f;1836;6395aed0-5b57-42c1-bc4f-0736c23eb2c8",
+			"0;8162;1;f;f;f;1837;1145cf1c-2b32-4e57-9ff7-df3b3fe36ac1",
+			"0;8161;1;t;f;f;1838;f0133541-9782-45a4-a915-230e422e4de7",
+			"0;8160;1;f;f;f;1839;a84ed089-3469-44a0-b2a3-186abaaefecf",
+			"0;8159;1;t;f;f;1840;414a0d07-c780-4a32-8a40-6a0bfc0c0f5d",
+			"0;8158;1;f;f;f;1841;d90e6f6e-1516-4adf-b86a-25fb583503ae",
+			"0;8157;1;t;f;f;1842;fd263848-4823-4ec1-82fe-07aac3dabc39",
+			"0;8156;1;f;f;f;1843;8ac4bbfc-d608-45d1-b60d-ede35f83d09f",
+			"0;8155;1;t;f;f;1844;e65115a7-7177-41f6-a528-b951275a58e0",
+			"0;8154;1;f;f;f;1845;3bfaa642-f63c-462b-94ea-c9c31a80a742",
+			"0;8153;1;t;f;f;1846;8ca03025-df3d-482c-8b7e-216a2142165a",
+			"0;8152;1;f;f;f;1847;2ca14eaa-94f9-49f0-b380-736857fae01b",
+			"0;8151;1;t;f;f;1848;54835146-c878-4040-85a9-1dbbed8ed4e1",
+			"0;8150;1;f;f;f;1849;ebd28a40-f46c-42a1-a8cb-20305b944e65",
+			"0;8149;1;t;f;f;1850;a07ec7ec-50d4-4134-97a5-3933d5a29596",
+			"0;8148;1;f;f;f;1851;770e0221-04d4-4d5d-a4a1-ce6774d243a8",
+			"0;8147;1;t;f;f;1852;a0d30082-f37b-4a55-87e4-1f136e82f0b9",
+			"0;8146;1;f;f;f;1853;578b143d-6db0-4476-ac23-1dec8294de9b",
+			"0;8145;1;t;f;f;1854;2b4fe74a-3d82-4415-87aa-49f3a2921950",
+			"0;8144;1;t;f;f;1855;a9f8e112-7a10-4586-a62d-b8ae897cca1e",
+			"0;8143;1;f;f;f;1856;33ba2d68-ad25-4826-a912-423a182d3687",
+			"0;8142;1;f;f;f;1857;02fac3d6-fca3-4623-baf3-0277af0d741f",
+			"0;8141;1;t;f;f;1858;c3f25d51-75e4-485a-8f64-aa87d0ee223d",
+			"0;8140;1;f;f;f;1859;8ee3addc-0aa0-4979-ab87-7398a948949b",
+			"0;8139;1;t;f;f;1860;62d717e2-61a8-4105-9e07-2c2697050ef4",
+			"0;8138;1;f;f;f;1861;d45b038c-318a-4a15-b899-54d43cec1e5e",
+			"0;8137;1;t;f;f;1862;f7a2d0d2-093c-4323-9be3-1b6ff1f8c1ee",
+			"0;8136;1;f;f;f;1863;b426963b-0358-4ce7-8cb1-440cf73cda83",
+			"0;8135;1;t;f;f;1864;3eeee0a7-a6d6-43d8-b614-ef3d79f59573",
+			"0;8134;1;f;f;f;1865;290a9100-d2d6-43f8-8904-31f0414b5192",
+			"0;8133;1;t;f;f;1866;25b941da-eae6-42e7-b73a-4ed4c7578f30",
+			"0;8132;1;f;f;f;1867;062f0608-8dc4-418b-96a4-f9dae6c08388",
+			"0;8131;1;t;f;f;1868;24d3d52e-d38a-4681-8ff0-7d9c71dd7bb8",
+			"0;8130;1;f;f;f;1869;dc521f59-a41c-46cf-85f7-a417b7428d31",
+			"0;8129;1;t;f;f;1870;8e83287b-89df-49b8-9596-e489688529d7",
+			"0;8128;1;f;f;f;1871;22253bfd-cb8e-4130-9104-d402b6d95862",
+			"0;8127;1;t;f;f;1872;58d3222e-1adf-40c8-b45e-88be3d218441",
+			"0;8126;1;f;f;f;1873;51fc2d2f-8e8f-4c4a-9be3-2f94e49043ab",
+			"0;8125;1;t;f;f;1874;e11d9fe3-cacd-49e9-9549-97b1e88eccb0",
+			"0;8124;1;f;f;f;1875;6dcc7c63-ad8b-4c66-b107-13f57409ca03",
+			"0;8123;1;t;f;f;1876;943d521c-f1c6-4180-ab30-7467584dcf04",
+			"0;8122;1;f;f;f;1877;fe67977b-43c7-4216-a8aa-6ca0c10be9a1",
+			"0;8121;1;t;f;f;1878;d3c6905c-1f27-41ad-a879-0d6b7624e914",
+			"0;8120;1;f;f;f;1879;4d8cf9b0-7685-4e4e-9fd5-d78e9f66625e",
+			"0;8119;1;t;f;f;1880;08e24663-6c9a-46f6-b0a5-34c5ef3c7b11",
+			"0;8118;1;f;f;f;1881;aa4d7abf-feed-4f59-91c2-eefd01a1fc87",
+			"0;8117;1;t;f;f;1882;21436a5e-2808-4342-a6e9-514ff7046950",
+			"0;8116;1;f;f;f;1883;bd08f074-db42-4061-a5bf-1d9b880eb9fe",
+			"0;8115;1;t;f;f;1884;90d20836-0888-45c4-ae27-a6615a65d610",
+			"0;8114;1;f;f;f;1885;5e197f35-1d83-45a8-aac5-23e36a18f79f",
+			"0;8113;1;t;f;f;1886;94076aea-b7ac-4bd0-803c-4e0ae8c32086",
+			"0;8112;1;f;f;f;1887;158bd763-12d6-420b-8497-5b2b22dc8084",
+			"0;8111;1;t;f;f;1888;f68e2cad-0a1c-457c-a795-1baf2734fbac",
+			"0;8110;1;f;f;f;1889;17424d2f-6949-4ae4-8ccd-268fc2dac806",
+			"0;8109;1;t;f;f;1890;818ffe1c-1cae-4bc3-84a7-9be6c7b23c4f",
+			"0;8108;1;f;f;f;1891;6cc49823-6cb6-4327-9634-6b903cb4666e",
+			"0;8107;1;t;f;f;1892;5448809f-5678-472e-a3e9-18645faf6f94",
+			"0;8106;1;f;f;f;1893;58503f86-3b75-488a-9b65-50340b8a65a7",
+			"0;8105;1;t;f;f;1894;27be37de-cef4-492a-8834-308e2bd11cc9",
+			"0;8104;1;f;f;f;1895;7ad1cddb-6bfc-49a6-901f-a0dcaf264cd1",
+			"0;8103;1;t;f;f;1896;81df581c-0e7b-47ae-b455-ef742f9866c1",
+			"0;8102;1;f;f;f;1897;d79e8ed9-ed23-4477-86a2-3dcc81d5d177",
+			"0;8101;1;t;f;f;1898;46ee8c2a-f1fd-4492-bd37-9ed81a579e7a",
+			"0;8100;1;f;f;f;1899;58956695-ca7a-4653-81a7-cc404c19d0a6",
+			"0;8099;1;t;f;f;1900;9dc2a71e-485a-4c6d-889d-58db3b798f7f",
+			"0;8098;1;f;f;f;1901;58acb42d-2032-4ec3-a61c-e60621ec2082",
+			"0;8097;1;t;f;f;1902;4af88519-36fe-44a3-98aa-7def48263c0b",
+			"0;8096;1;f;f;f;1903;3227df69-0284-45d6-9d55-9140bd241c04",
+			"0;8095;1;t;f;f;1904;0ab0c6f8-3ca5-4ae7-9e6f-5e15b593adc6",
+			"0;8094;1;f;f;f;1905;73d06a13-9104-4491-beb4-abdc514d4075",
+			"0;8093;1;t;f;f;1906;acf44da3-fa41-4864-b456-a8e9a3742d22",
+			"0;8092;1;f;f;f;1907;635c3d6d-a8e7-4740-9c5a-26635ce99cea",
+			"0;8091;1;t;f;f;1908;a5883f99-754e-4508-b9f7-b028a1ad3984",
+			"0;8090;1;f;f;f;1909;18715892-02b2-4f93-b9f8-6ae0e9b03b55",
+			"0;8089;1;t;f;f;1910;59db9922-de7c-499a-8921-93325b334cd8",
+			"0;8088;1;t;f;f;1911;927ae569-2e7b-4eff-9efd-4721d01ade71",
+			"0;8087;1;f;f;f;1912;fd102daa-3c19-4da4-8ea6-dde86983bd10",
+			"0;8086;1;f;f;f;1913;08b49363-0e25-44ba-afe2-b296b15dc935",
+			"0;8085;1;t;f;f;1914;0a0f9ae4-d39b-46ca-ae51-b6fa1db454ca",
+			"0;8084;1;f;f;f;1915;e73ccb99-ff2f-4d8f-ad37-3321b53f403d",
+			"0;8083;1;t;f;f;1916;286860cb-6033-40b0-b670-1645f388df2d",
+			"0;8082;1;f;f;f;1917;ffee48ce-9570-4a70-8350-176f169fffb4",
+			"0;8081;1;t;f;f;1918;4d645a32-875a-4543-b26a-3be521387e7b",
+			"0;8080;1;f;f;f;1919;7bf19823-684f-4fb0-b9fe-b8ab0d3e8eab",
+			"0;8079;1;t;f;f;1920;c20c7fdb-88dc-40b5-aed1-003487fba2ce",
+			"0;8078;1;f;f;f;1921;a1093c21-f91f-4ca1-9701-eb365e1d7dfb",
+			"0;8077;1;t;f;f;1922;387213c6-2466-44b9-ad91-309addc9daa1",
+			"0;8076;1;f;f;f;1923;3e8f3b84-328a-44d3-841c-3f192ad73a7d",
+			"0;8075;1;t;f;f;1924;7fe2137a-b5a9-485f-bb63-ae823a215b92",
+			"0;8074;1;f;f;f;1925;c23fb82e-c402-4b31-b7d2-a41485812424",
+			"0;8073;1;t;f;f;1926;a5e66609-4334-43a9-92ed-685d3d039048",
+			"0;8072;1;f;f;f;1927;12dfaf6b-c744-4e80-963b-256340f3b82f",
+			"0;8071;1;t;f;f;1928;32733635-74c8-46d5-8af6-bedbb370eefc",
+			"0;8070;1;f;f;f;1929;c675092f-c882-408b-a38a-a5238b9a0e9d",
+			"0;8069;1;t;f;f;1930;a15703d6-0182-4504-9575-b85ff62c7982",
+			"0;8068;1;f;f;f;1931;0308df3b-0c25-4240-97c6-9487c0e32719",
+			"0;8067;1;t;f;f;1932;54debf71-8a78-43f4-84b4-08bd41643224",
+			"0;8066;1;f;f;f;1933;f0d2b7ce-1a78-46d4-ad05-b9a90403bd0d",
+			"0;8065;1;t;f;f;1934;ab677cdf-ac7a-481a-a711-903e22bc68a1",
+			"0;8064;1;f;f;f;1935;3ffe2cbf-d59e-48de-8030-be27660456a7",
+			"0;8063;1;t;f;f;1936;c61091d9-e324-43f9-a60f-6f57d1ac5fe2",
+			"0;8062;1;f;f;f;1937;36bd361c-ec52-43b2-bd47-528e82cad28f",
+			"0;8061;1;t;f;f;1938;28e2ba82-932b-4099-bb79-0efe8e0ebbdf",
+			"0;8060;1;f;f;f;1939;a76a3592-17a4-469b-8be6-63726a536194",
+			"0;8059;1;t;f;f;1940;9ff471df-e73a-46e3-a408-869aef1d31a3",
+			"0;8058;1;f;f;f;1941;d04bba14-f59f-4af7-90ee-d9d918c7993b",
+			"0;8057;1;t;f;f;1942;526a66aa-6a6b-4f3c-a35f-b24d16054b3d",
+			"0;8056;1;f;f;f;1943;84ee90fb-a9ba-4f40-b02d-d1766a294c40",
+			"0;8055;1;t;f;f;1944;c63dfe7c-aa3d-432e-86e7-8b51c0c2b186",
+			"0;8054;1;f;f;f;1945;f0d852f5-18a9-46fc-97ff-a8fe3bae576d",
+			"0;8053;1;t;f;f;1946;c38cd398-f196-440b-b178-236c3b8e69fa",
+			"0;8052;1;f;f;f;1947;1bbca6f2-69ba-4d77-a3fe-d043a1b015a3",
+			"0;8051;1;t;f;f;1948;9a0a4850-9d6a-476c-a064-54e8268942e6",
+			"0;8050;1;f;f;f;1949;24e27a21-25d2-4c3c-ad42-fc9235e1c9c0",
+			"0;8049;1;t;f;f;1950;5fda5bee-368f-4ba5-8cb2-efca6f1c8a57",
+			"0;8048;1;f;f;f;1951;251ce1e8-9cdc-4177-a33a-9f2d0a026daa",
+			"0;8047;1;t;f;f;1952;6d53e89e-7c1f-431e-af10-a3f9a460e3a8",
+			"0;8046;1;f;f;f;1953;39e67041-fa4b-4f21-bf33-df58916d6ccf",
+			"0;8045;1;t;f;f;1954;9f15492c-52c8-4f15-92cc-4006231f0d9b",
+			"0;8044;1;f;f;f;1955;f03222ed-6fc4-4186-9dbf-14faa522f3f3",
+			"0;8043;1;t;f;f;1956;028ed6e2-cd67-4c55-918e-fdae0ac8c231",
+			"0;8042;1;f;f;f;1957;40699fa4-a733-4bb5-862e-29fce1d21c64",
+			"0;8041;1;t;f;f;1958;bd87e5ef-049e-45f9-8762-4f876e25e520",
+			"0;8040;1;f;f;f;1959;c3c471e1-7132-4cc2-950e-bd4e617ce431",
+			"0;8039;1;t;f;f;1960;680afba7-df4f-40a0-9ff0-af5cc83de9be",
+			"0;8038;1;f;f;f;1961;8b7d5365-e8bb-46d5-b297-ae65ad15f44f",
+			"0;8037;1;t;f;f;1962;1ca78f3c-51e4-4243-acd5-d392759f7ded",
+			"0;8036;1;f;f;f;1963;e6fee72d-5a0b-41f0-ac62-a02c4807ba93",
+			"0;8035;1;t;f;f;1964;043a2f93-2d6e-40ba-a84e-8dbb46da90db",
+			"0;8034;1;f;f;f;1965;fcea2250-4829-4df1-94ec-a00e373da065",
+			"0;8033;1;t;f;f;1966;192e46cc-c88a-45de-9418-ca8b7f6e8dc4",
+			"0;8032;1;f;f;f;1967;69c944ee-b59c-403e-9c27-bce8e9f80d0b",
+			"0;8031;1;t;f;f;1968;3476f92a-a359-4072-8965-d0ff956ca3ec",
+			"0;8030;1;f;f;f;1969;984d41ff-e6b3-478d-a6d8-5604fb10ac95",
+			"0;8029;1;t;f;f;1970;c445e307-5e57-4f96-92f4-e0d0ff9ef14e",
+			"0;8028;1;f;f;f;1971;fcfbdc90-07f2-4cb4-8632-1f58e97fecd5",
+			"0;8027;1;t;f;f;1972;861eca2e-39c6-49a0-a843-dc364ff5f424",
+			"0;8026;1;f;f;f;1973;69b1ccc3-09cd-4ff8-a07e-d0a72cce3b42",
+			"0;8025;1;t;f;f;1974;c59705b4-7be1-432f-ad1c-02ada949922a",
+			"0;8024;1;f;f;f;1975;4e6b4cab-1382-4df6-bc18-1ec893976bcc",
+			"0;8023;1;t;f;f;1976;128129ac-3fd5-4484-b05f-669f7cfe3e3b",
+			"0;8022;1;f;f;f;1977;588c1c23-4d5a-4deb-ac6b-68dba1507b2e",
+			"0;8021;1;t;f;f;1978;15811f19-50ec-4381-ac86-b474fd11a928",
+			"0;8020;1;t;f;f;1979;3bc9491e-7e22-47f2-8b64-0832e909c0c3",
+			"0;8019;1;f;f;f;1980;f56a021a-71d4-4341-a7fd-57582f968ce8",
+			"0;8018;1;f;f;f;1981;69b71750-646c-4ce9-b016-5aa47bdd6e88",
+			"0;8017;1;t;f;f;1982;87d2518d-8e6c-4290-8089-ad268c698c86",
+			"0;8016;1;f;f;f;1983;ffbcbdcd-c8e2-483e-990f-6131f58d613b",
+			"0;8015;1;t;f;f;1984;49bccab2-365e-425f-82bf-b9097e3769ac",
+			"0;8014;1;f;f;f;1985;ebb3b875-5f12-409e-9895-9bc6d41a1f6b",
+			"0;8013;1;t;f;f;1986;c4c467e8-a177-4fc1-9647-82457c8fa651",
+			"0;8012;1;f;f;f;1987;7b2ae686-23f0-4c36-921f-1c1ec10a06ee",
+			"0;8011;1;t;f;f;1988;a17b548a-38bc-4b0e-87c1-69576746d4ce",
+			"0;8010;1;f;f;f;1989;899759fd-7e90-45cd-a39f-e3fca14ecc54",
+			"0;8009;1;t;f;f;1990;03a4b0a4-1426-4485-8f64-33a5404d6df8",
+			"0;8008;1;f;f;f;1991;deaba7c0-121d-476e-8a4c-3772f1bc7b46",
+			"0;8007;1;t;f;f;1992;5ebdbe76-810a-440d-922e-8e5b839d71b3",
+			"0;8006;1;f;f;f;1993;60f64bf5-5877-461b-96c9-f372ff54d776",
+			"0;8005;1;t;f;f;1994;e2974875-9b4b-4bd9-b059-15174502e5ca",
+			"0;8004;1;t;f;f;1995;b3d9bcc7-656b-402e-bd9f-4b8c0d3dc4d1",
+			"0;8003;1;f;f;f;1996;8d01aab3-4899-4f04-953d-6aac5bdf376f",
+			"0;8002;1;f;f;f;1997;538a8605-40f6-4e74-bb3c-a6ee50232f94",
+			"0;8001;1;t;f;f;1998;152e9701-82c7-4a1f-ae49-e7cea8727473",
+			"0;8000;1;f;f;f;1999;66be6545-7f32-41f1-b60a-56c6377a705f",
+			"0;7999;1;t;f;f;2000;36235176-ad5f-4349-9468-99aa8e8e1741",
+			"0;7998;1;f;f;f;2001;3cb79838-d15e-4271-84a2-3c9a6269f7a3",
+			"0;7997;1;t;f;f;2002;4d6dd505-a086-4e2c-9c57-d6098960fd70",
+			"0;7996;1;f;f;f;2003;64fe7773-84c8-4b5c-924e-dc4313c1cb95",
+			"0;7995;1;t;f;f;2004;7926afa8-c5b4-4fe3-b1c9-f32ac3c5dc92",
+			"0;7994;1;f;f;f;2005;8b4d679d-a202-4515-8dee-19a3ea18813e",
+			"0;7993;1;t;f;f;2006;2f4dbc6e-fd96-43b0-8599-865e58dcc903",
+			"0;7992;1;f;f;f;2007;4b9e09b7-1ca8-407a-b79d-36471b83f33b",
+			"0;7991;1;t;f;f;2008;8b945c0e-5cdc-4aa8-b792-d7cc25c83e90",
+			"0;7990;1;f;f;f;2009;8cefdb7d-34a8-40a9-ae85-d3b0f5d6b6b5",
+			"0;7989;1;t;f;f;2010;9c564d0b-35e6-4e7c-8b1d-99504f743a85",
+			"0;7988;1;f;f;f;2011;0d18bdc7-a2c9-410a-b393-6252a5b822fc",
+			"0;7987;1;t;f;f;2012;6e7c957e-dcbe-4aaa-b19c-814c4949cc98",
+			"0;7986;1;f;f;f;2013;b288f290-c41a-4e68-b88d-3d372253fd7b",
+			"0;7985;1;t;f;f;2014;e9a18aec-2c8a-4a64-a763-7edf86e58d5f",
+			"0;7984;1;f;f;f;2015;05e259ef-c694-431f-be1a-5fca0852dc9b",
+			"0;7983;1;t;f;f;2016;cf341d0f-df5d-4704-83cf-50de9340f3ec",
+			"0;7982;1;f;f;f;2017;0bef8313-a4cc-4d76-9df1-b2e5bb4e43c2",
+			"0;7981;1;t;f;f;2018;95200fdd-72f5-4d7a-becc-1ccba7cccc27",
+			"0;7980;1;f;f;f;2019;bde1b50e-55db-432a-8837-d2da40aebddf",
+			"0;7979;1;t;f;f;2020;7a6736e9-0072-4b31-9084-7c3373bbe282",
+			"0;7978;1;f;f;f;2021;0f42b6c2-4249-42f9-bf67-85897d497a6d",
+			"0;7977;1;t;f;f;2022;f522693b-faf0-452b-9f9b-ed71ef5d197e",
+			"0;7976;1;f;f;f;2023;1d4094e7-bead-4abc-865b-9f22cb67c310",
+			"0;7975;1;t;f;f;2024;f16df662-0bc6-46bd-abda-6c5858f438c5",
+			"0;7974;1;f;f;f;2025;22eb7bf7-b260-473d-9ecf-c2ff6eb80712",
+			"0;7973;1;t;f;f;2026;ec79f3cd-ea25-4fcc-8321-ab9290d40b4e",
+			"0;7972;1;f;f;f;2027;f6a66f62-4bbc-418f-a4b6-b6854e9b872c",
+			"0;7971;1;t;f;f;2028;4dbaad31-8503-4e09-97cd-8cd515698ecf",
+			"0;7970;1;f;f;f;2029;73ec3de5-2c7a-410d-a221-16a08d09ea95",
+			"0;7969;1;t;f;f;2030;7f532341-6310-4b8b-9568-5ea23d5c993e",
+			"0;7968;1;f;f;f;2031;faf65ae3-1ed4-42e4-bbf5-7fb0feefaa98",
+			"0;7967;1;t;f;f;2032;c8af94f4-eaaa-412b-8c88-e045c301e0f5",
+			"0;7966;1;f;f;f;2033;6f8eb9d6-a73d-4b8b-a2c7-d54ff463ec3a",
+			"0;7965;1;t;f;f;2034;f01e50d9-eef3-490f-8f1c-6561f4ada37e",
+			"0;7964;1;f;f;f;2035;9930bb43-32b8-433e-a463-91abad43d976",
+			"0;7963;1;t;f;f;2036;6ac235b0-1ac4-47df-92f7-600bc0f9309c",
+			"0;7962;1;f;f;f;2037;9f3d9976-5e64-4f37-bdd2-25c2cc2e2e86",
+			"0;7961;1;t;f;f;2038;2ec5500e-e1c0-4cbd-8701-36725e1127b6",
+			"0;7960;1;f;f;f;2039;73f070b1-6e0b-41a1-9d1a-71516e3f6799",
+			"0;7959;1;t;f;f;2040;3585c69c-d514-4d2e-82a3-95428b2593c9",
+			"0;7958;1;f;f;f;2041;ac9614f2-da4c-4eca-8e13-9a757f2a2636",
+			"0;7957;1;t;f;f;2042;8bcabdfe-3c82-49a9-b3fd-43e999be9c74",
+			"0;7956;1;f;f;f;2043;1a449e52-d37f-4d9c-8ab4-a216425deece",
+			"0;7955;1;t;f;f;2044;b65b94fb-6009-4e29-94df-1c10ba7d60bc",
+			"0;7954;1;f;f;f;2045;e6ee48b2-3533-4e2a-8393-e29cb1b6cc0b",
+			"0;7953;1;t;f;f;2046;7c47171c-1b98-4d77-ab7f-f58b320a3fbf",
+			"0;7952;1;f;f;f;2047;c0a5dbd0-d571-4eae-8898-31c66d859874",
+			"0;7951;1;t;f;f;2048;7014acee-aa78-490a-bfc0-2f9c005105a9",
+			"0;7950;1;f;f;f;2049;0e604377-dff3-4cb0-9fe5-7e5736e5505b",
+			"0;7949;1;t;f;f;2050;c2c483a7-d305-40ae-b1b7-3ae046f59a19",
+			"0;7948;1;f;f;f;2051;4ed5ce6b-c767-40a1-bf0f-b4f591158254",
+			"0;7947;1;t;f;f;2052;f1adcf95-ce9b-48cc-afd1-d7d566b9745d",
+			"0;7946;1;f;f;f;2053;3663a74f-2fa4-452f-90b0-d236ffca8f71",
+			"0;7945;1;t;f;f;2054;470dcd2d-e3cc-4187-a2c6-97af5bfa5180",
+			"0;7944;1;f;f;f;2055;82fc1e64-8034-41b8-a9d9-80b3737ff382",
+			"0;7943;1;t;f;f;2056;1721a9ef-1ea1-42e1-9a52-f765b4c4cc72",
+			"0;7942;1;f;f;f;2057;b7b84ce4-7da2-431c-b461-bdc0888b9c8b",
+			"0;7941;1;t;f;f;2058;4c7c5370-d37d-49ca-af38-1c40a1f1afe2",
+			"0;7940;1;f;f;f;2059;8bf90f00-99c7-4cfd-acb7-ed2f6ea3716c",
+			"0;7939;1;t;f;f;2060;25cc3d07-6341-4c81-a734-13b0a17d69a0",
+			"0;7938;1;f;f;f;2061;1a20f430-f5d6-4757-b0f0-381722bfe424",
+			"0;7937;1;t;f;f;2062;dad02f5e-74b9-49ea-9723-a68c8390ecdf",
+			"0;7936;1;f;f;f;2063;462a538b-9520-40ff-8ec9-5f12ad457dc5",
+			"0;7935;1;t;f;f;2064;18fc4924-ef27-4b34-9986-ea867c78a054",
+			"0;7934;1;f;f;f;2065;ff7c2766-fa91-493b-964b-46f33202bf1c",
+			"0;7933;1;t;f;f;2066;3cbe77c9-5071-4b60-ab00-fe3ad8a3f39d",
+			"0;7932;1;f;f;f;2067;17d600cf-f24d-4f32-8bd8-76b7ed8d5929",
+			"0;7931;1;t;f;f;2068;fbae5f06-cb4d-4eac-bbe0-32168e778776",
+			"0;7930;1;f;f;f;2069;e0c4f809-d4a7-4d2e-8f79-23f96d950eb3",
+			"0;7929;1;t;f;f;2070;60e13237-967e-4195-bf77-b5d8a2f5a758",
+			"0;7928;1;f;f;f;2071;12940afe-f2eb-431e-a6c3-1d4eb15f05e2",
+			"0;7927;1;t;f;f;2072;5c25319d-9c1b-422d-afca-ab321001f09e",
+			"0;7926;1;t;f;f;2073;eaf9bdec-4136-45f6-9d98-5733942d2311",
+			"0;7925;1;f;f;f;2074;b99a35a5-d520-484b-aab5-1965677b9e5d",
+			"0;7924;1;f;f;f;2075;b39ede76-6cf6-4894-9b7b-1e7c1e7290d0",
+			"0;7923;1;t;f;f;2076;e678eee2-24e3-45e1-8f22-46f3bf4de3dd",
+			"0;7922;1;t;f;f;2077;3d2322d0-9387-4145-b6c3-83546078e8df",
+			"0;7921;1;f;f;f;2078;763f0342-99f9-4949-b021-d95f11a464f9",
+			"0;7920;1;f;f;f;2079;f6653530-da1b-44e2-ac28-2e9b0ac25792",
+			"0;7919;1;t;f;f;2080;31906017-b14b-455d-bcb6-bc7dab8794e5",
+			"0;7918;1;f;f;f;2081;9fcfd9c8-26b5-46bd-a6be-93b23e8a39ad",
+			"0;7917;1;t;f;f;2082;d59e7945-c968-43a0-837f-e8984469db07",
+			"0;7916;1;f;f;f;2083;70bcaca5-42bc-40b4-bb53-4fee539d52a9",
+			"0;7915;1;t;f;f;2084;d7080a0d-a905-4cfd-92f7-1120bed777ea",
+			"0;7914;1;f;f;f;2085;b72df704-bf2f-4218-9eac-650206fe200c",
+			"0;7913;1;t;f;f;2086;1e0d41d6-103c-458a-8fde-83022d7b965e",
+			"0;7912;1;f;f;f;2087;813185d0-8574-48f8-99f6-2f7157809c1b",
+			"0;7911;1;t;f;f;2088;39301137-2927-4fc5-b3e3-34429caf0a3e",
+			"0;7910;1;f;f;f;2089;263f5083-8089-48a3-b6ff-d7d189a9dd32",
+			"0;7909;1;t;f;f;2090;298a1d36-0423-4d0b-8be5-babfc2f2fe85",
+			"0;7908;1;f;f;f;2091;6638a4eb-9aaf-4d78-8220-3bc6779ce1c7",
+			"0;7907;1;t;f;f;2092;0059fada-0acc-4cf9-af86-4fda9c8d1dfe",
+			"0;7906;1;f;f;f;2093;cd6df723-4b8a-444b-9900-012c8df0af07",
+			"0;7905;1;t;f;f;2094;780666ed-c146-4abe-b01e-466e7882d8f9",
+			"0;7904;1;f;f;f;2095;3410401d-e67c-4fb6-923d-aa5d6285bcd2",
+			"0;7903;1;t;f;f;2096;67da200d-8f12-4554-8603-e05af514d8b8",
+			"0;7902;1;f;f;f;2097;6b35cb2c-8346-4504-bcea-38699d9098dd",
+			"0;7901;1;t;f;f;2098;9e22bd5e-5807-4f3d-a6a4-d1d144f0ac75",
+			"0;7900;1;f;f;f;2099;698b5b7e-b691-4b22-89e9-ef487498e52c",
+			"0;7899;1;t;f;f;2100;14a28656-b143-4389-ae13-ec98190c3ed7",
+			"0;7898;1;f;f;f;2101;3cfb9976-5c92-434b-aca6-c4399911cbf3",
+			"0;7897;1;t;f;f;2102;e4965156-0f7a-46f6-8e0c-4a7f1ba155aa",
+			"0;7896;1;f;f;f;2103;196b8031-2f7d-4602-85e9-43cc222ad172",
+			"0;7895;1;t;f;f;2104;c59dc76a-5eeb-4ca9-8b84-6c58b0ef3a37",
+			"0;7894;1;f;f;f;2105;d08ee7c3-bbe4-45aa-88d9-78f2c105a45d",
+			"0;7893;1;t;f;f;2106;5a28f082-cadc-49ae-a691-0d0b6061732a",
+			"0;7892;1;f;f;f;2107;c020b30a-0dc6-4407-9937-359062da0b04",
+			"0;7891;1;t;f;f;2108;16a1943a-e1f2-46bc-8bdb-0582e9466622",
+			"0;7890;1;f;f;f;2109;9b9c0856-63fb-41e4-86f7-6ef873a177d5",
+			"0;7889;1;t;f;f;2110;4d30454f-caa6-4fdb-b286-c092375ffa65",
+			"0;7888;1;f;f;f;2111;9e9be771-89bb-4eca-8d3e-f3c10a36c518",
+			"0;7887;1;t;f;f;2112;85baaae2-5423-495d-8141-a2e2e4335b1c",
+			"0;7886;1;f;f;f;2113;859689da-33fd-4351-bd7a-72032fa24229",
+			"0;7885;1;t;f;f;2114;9430d068-9c5c-4d3d-acd4-d1dafe2c5079",
+			"0;7884;1;f;f;f;2115;d64c6e70-f82b-446f-aaeb-4c3018358dc9",
+			"0;7883;1;t;f;f;2116;46c86657-fef8-4839-b0a8-3506166eb014",
+			"0;7882;1;f;f;f;2117;101f74e4-bfde-46e3-9611-d4ed0a8d99cc",
+			"0;7881;1;t;f;f;2118;19f74597-2196-4be1-ba05-489ee68263be",
+			"0;7880;1;f;f;f;2119;8e362d4f-4a97-4013-bcdc-72f1d74cf64e",
+			"0;7879;1;t;f;f;2120;a5884c8b-62a2-4660-8377-99a16b4399eb",
+			"0;7878;1;f;f;f;2121;bc965aff-a8d3-4682-9ae4-8dee632a458f",
+			"0;7877;1;t;f;f;2122;b8c274ea-3586-43da-aa90-46e2c0acfcd7",
+			"0;7876;1;f;f;f;2123;4d3ad654-29a1-48c9-b6a8-0e3751b09cf8",
+			"0;7875;1;t;f;f;2124;4b1d016a-554e-4313-97b0-06d7ed627254",
+			"0;7874;1;f;f;f;2125;09fdf600-0d69-4b19-9a35-5de92c96d707",
+			"0;7873;1;t;f;f;2126;93442ca9-bbc7-4dd6-aa3d-27a2a391f5fa",
+			"0;7872;1;t;f;f;2127;12880e03-4124-4bf3-bb8f-67bb89791af5",
+			"0;7871;1;f;f;f;2128;21ce0a5c-b0d6-4121-b92e-408240335955",
+			"0;7870;1;f;f;f;2129;365c2a99-a50b-4868-9f86-ae72d28cb7ec",
+			"0;7869;1;t;f;f;2130;7e12ce0b-da01-480f-8f4f-af0ffb4523f3",
+			"0;7868;1;t;f;f;2131;3c6b9f18-4d3d-49c4-a70f-7b413ad9a28b",
+			"0;7867;1;f;f;f;2132;415eec02-f81f-4279-9f83-d20032897adc",
+			"0;7866;1;f;f;f;2133;f41e617c-d1a6-460c-8baf-33e727409b5a",
+			"0;7865;1;t;f;f;2134;d376fcd0-9ac5-45ca-aad2-3c08e4ecb25c",
+			"0;7864;1;f;f;f;2135;1779a32d-6894-475a-aa11-77f2ec829703",
+			"0;7863;1;t;f;f;2136;a7ab7dd3-af3e-4905-bb2a-c736d307d479",
+			"0;7862;1;f;f;f;2137;0ed3fbf3-3162-4c86-8d0e-eb342c4558a5",
+			"0;7861;1;t;f;f;2138;3b46f02f-bacc-40b8-9a83-70faa159253a",
+			"0;7860;1;f;f;f;2139;1172a64d-8714-4cc8-b3e8-4c0ac8cd17b0",
+			"0;7859;1;t;f;f;2140;4a8a60cb-cf84-481e-aa63-8f75f21b5587",
+			"0;7858;1;f;f;f;2141;c03f1604-e129-4253-8958-7ce4ccba7ffe",
+			"0;7857;1;t;f;f;2142;dfd7f7c8-2bed-4fe6-a5fe-12497dcee1ff",
+			"0;7856;1;f;f;f;2143;17a6ae31-ddb8-4e67-83c4-07df50a4077e",
+			"0;7855;1;t;f;f;2144;b0deef47-9d01-4883-b035-78b9dd5c0507",
+			"0;7854;1;f;f;f;2145;c9392647-b646-40b6-91d8-de9bdec572eb",
+			"0;7853;1;t;f;f;2146;53dc9048-6a20-4ce2-8569-1219fa1ba8ec",
+			"0;7852;1;f;f;f;2147;e2b98de9-f268-4a50-b1a5-6172fe4cfe74",
+			"0;7851;1;t;f;f;2148;2acd325c-c948-412f-8503-565baef36333",
+			"0;7850;1;f;f;f;2149;23a43247-6d4b-4ef9-9c17-a1877d73111c",
+			"0;7849;1;t;f;f;2150;d421106f-7ba1-4467-b98e-3cfef8f46fbb",
+			"0;7848;1;f;f;f;2151;c13138de-6b05-4993-8df5-5dcb2159f4e8",
+			"0;7847;1;t;f;f;2152;d1148382-abb1-4aa8-b4d2-021b81c9b751",
+			"0;7846;1;f;f;f;2153;56247241-d70e-447f-8494-2fb578f6d073",
+			"0;7845;1;t;f;f;2154;6928fc76-9609-4e3e-84ba-c1b8e4051c92",
+			"0;7844;1;f;f;f;2155;1d3d9a6a-01f6-456b-8fed-06f85071a9c4",
+			"0;7843;1;t;f;f;2156;8eb38055-e295-4a45-bea9-170e0ebb040a",
+			"0;7842;1;f;f;f;2157;78f16cf8-f063-482c-8ec2-291e9119b044",
+			"0;7841;1;t;f;f;2158;f05f617e-4962-4ef5-83cb-d40fd639bb78",
+			"0;7840;1;f;f;f;2159;e8e20932-c546-478e-a4b9-d93c8c751117",
+			"0;7839;1;t;f;f;2160;b8c4c8f5-390e-469d-8091-6bc9d93703c5",
+			"0;7838;1;f;f;f;2161;af693dbf-17f5-4903-9637-fe2f4df21b7f",
+			"0;7837;1;t;f;f;2162;cebc289f-bbee-4605-90b2-d2fc9c1d4211",
+			"0;7836;1;f;f;f;2163;12ebf24c-0e88-49e0-a2bf-81988e1744ca",
+			"0;7835;1;t;f;f;2164;096d9bc7-bf4a-4115-87c7-e98a2279e524",
+			"0;7834;1;f;f;f;2165;9376de73-e45a-40bc-b7db-0ce38bebdc40",
+			"0;7833;1;t;f;f;2166;84477b1b-db94-4d7c-8919-85a25b08a4c3",
+			"0;7832;1;f;f;f;2167;61e8630f-d90d-43d3-b7a0-5ffa58cd9e18",
+			"0;7831;1;t;f;f;2168;38a57840-33d6-4b36-820b-2883e5debc93",
+			"0;7830;1;f;f;f;2169;ec883f7b-aa29-41f5-81c6-063eff48051d",
+			"0;7829;1;t;f;f;2170;c91c3152-9ecc-4398-86f8-ea9a31adc2b8",
+			"0;7828;1;f;f;f;2171;638fdd49-c489-4fd1-a1d5-6fc30f5b9464",
+			"0;7827;1;t;f;f;2172;28a084c1-4b45-43a0-b2ac-6a14148c9ff0",
+			"0;7826;1;f;f;f;2173;a9a3a30a-b9ea-4abc-89d2-0d5726f6e216",
+			"0;7825;1;t;f;f;2174;2c185e97-1dc4-4229-b4bc-e6d0d95e74b5",
+			"0;7824;1;f;f;f;2175;dc804281-cff6-4ced-a607-7b7afb19732c",
+			"0;7823;1;t;f;f;2176;73c654b4-a8bc-485f-b233-29ab103c5a31",
+			"0;7822;1;f;f;f;2177;64ffaade-2527-482e-9218-cb168045b45a",
+			"0;7821;1;t;f;f;2178;60b556d5-6f04-47b3-8a5e-ae548467c248",
+			"0;7820;1;f;f;f;2179;2c65efbc-32be-4fd0-bca4-108ac6d4f097",
+			"0;7819;1;t;f;f;2180;2886960e-2b35-4260-8864-4b61c7394c7c",
+			"0;7818;1;f;f;f;2181;1c23e612-b237-41ad-b8e4-b8373496d335",
+			"0;7817;1;t;f;f;2182;345a13ce-3195-4e89-9155-0e98cd9011ac",
+			"0;7816;1;f;f;f;2183;89868bf3-feaf-48ed-8da9-af0475e0558c",
+			"0;7815;1;t;f;f;2184;1d2346da-7acc-4f3b-87a1-4bff014a3fc5",
+			"0;7814;1;f;f;f;2185;fc434ffe-2a8e-4f0b-99c0-c79ec5c9822a",
+			"0;7813;1;t;f;f;2186;d7b1bd5a-e769-439a-b3f6-60f2dd74bbdd",
+			"0;7812;1;f;f;f;2187;24a849d2-af7f-43aa-8f1b-61990bf1d026",
+			"0;7811;1;t;f;f;2188;1b465b56-32a3-4c97-892c-73702035a915",
+			"0;7810;1;f;f;f;2189;7293c8d4-0960-44f4-84a7-df2c4c9c5d5a",
+			"0;7809;1;t;f;f;2190;88839630-69b1-4d27-a50f-71a2dc1cd5e4",
+			"0;7808;1;f;f;f;2191;dc3b3e51-e4af-4880-8a86-83497f56234f",
+			"0;7807;1;t;f;f;2192;cb9e0130-8697-4750-b920-02229b094a46",
+			"0;7806;1;f;f;f;2193;48e4d7df-f705-4160-9bd5-57216f7794df",
+			"0;7805;1;t;f;f;2194;d883bc61-08b6-4d6c-a2d7-daab8940db0f",
+			"0;7804;1;f;f;f;2195;b0688edb-aa5c-4a60-8547-07e6ff26fe14",
+			"0;7803;1;t;f;f;2196;dd3056de-2035-4e3c-8858-24e8f6ce4a61",
+			"0;7802;1;f;f;f;2197;7e230ed0-758c-428a-a95c-181716cb6909",
+			"0;7801;1;t;f;f;2198;6619848a-1138-448f-91fa-5db4cfaee918",
+			"0;7800;1;f;f;f;2199;1760410c-5792-4d9a-8d51-f10d68e7fe61",
+			"0;7799;1;t;f;f;2200;f88cfac6-628a-4101-a19c-2f9e43d3e4a9",
+			"0;7798;1;f;f;f;2201;bebe25fa-4917-4f58-8094-1b5fdf88b923",
+			"0;7797;1;t;f;f;2202;b7f74ae0-c4bb-4c29-909e-3418f75c8b04",
+			"0;7796;1;f;f;f;2203;a8824b6d-d689-4e8b-a72f-fb7022f335fc",
+			"0;7795;1;t;f;f;2204;d684a2ba-118f-4970-b3c8-6b5b7aeafa9b",
+			"0;7794;1;f;f;f;2205;4774caa0-79a8-41ce-bf39-4ed1829912c5",
+			"0;7793;1;t;f;f;2206;9643d02f-6018-47bb-9c7e-aba6c172a522",
+			"0;7792;1;f;f;f;2207;adf5026a-6f1f-4aae-b8c5-09b6ce0421f3",
+			"0;7791;1;t;f;f;2208;6efdf68c-edb7-4ba7-9cf5-400f105ec790",
+			"0;7790;1;f;f;f;2209;2554b8c2-ce9c-4925-9caf-2f21c768d5d8",
+			"0;7789;1;t;f;f;2210;edb0b8bf-2c80-44af-ac77-9b4d921d5bc6",
+			"0;7788;1;f;f;f;2211;7eee5e66-d856-4171-8f30-f7ca2c920341",
+			"0;7787;1;t;f;f;2212;b2f283c4-21a0-4354-a824-973bfe168f3c",
+			"0;7786;1;f;f;f;2213;bfed17e6-3557-471b-9f4b-464490defdfe",
+			"0;7785;1;t;f;f;2214;e689a024-170b-4120-9b05-6c3ce8fe7f31",
+			"0;7784;1;f;f;f;2215;4c207fff-c883-4e66-a298-6c7bd99039ec",
+			"0;7783;1;t;f;f;2216;43edc656-3b2a-468d-978e-6adeb8529c84",
+			"0;7782;1;f;f;f;2217;74d1e64c-253c-4738-9ed8-a7061340664e",
+			"0;7781;1;t;f;f;2218;3f569c4c-f61b-4887-989c-44cb098320b0",
+			"0;7780;1;f;f;f;2219;2880b751-c8ed-4d01-9b0c-6c97467e5aab",
+			"0;7779;1;t;f;f;2220;99664bbf-8f3e-4549-88c1-fb8810fc56fb",
+			"0;7778;1;f;f;f;2221;fb7b1ef9-8f4d-4d9a-99e3-cfd05b295a2f",
+			"0;7777;1;t;f;f;2222;96cb35f9-eecb-4170-84e0-d0beae654a07",
+			"0;7776;1;f;f;f;2223;b59a70a7-37b8-451e-a4d4-e874b9863304",
+			"0;7775;1;t;f;f;2224;fde1e939-231f-4b8b-967a-95c06667b021",
+			"0;7774;1;f;f;f;2225;137ddbdf-82fb-4aee-8497-79d4102df1b3",
+			"0;7773;1;t;f;f;2226;038e0d05-ac69-4f22-adf1-224670cda638",
+			"0;7772;1;f;f;f;2227;62ae1676-3697-4c12-8fb7-8d65a44f3a36",
+			"0;7771;1;t;f;f;2228;eafd83c5-8390-4e17-9580-00df3038dfb7",
+			"0;7770;1;f;f;f;2229;bc986321-a5ae-4ad3-b05d-3a2fd9df859f",
+			"0;7769;1;t;f;f;2230;2da81332-2123-4714-8d66-d7682a95e791",
+			"0;7768;1;f;f;f;2231;6b6b9f73-eed9-418b-8b0a-47b63ca6ddf6",
+			"0;7767;1;t;f;f;2232;46f5b5a7-3b9a-45d2-ae33-b43eccb2acb5",
+			"0;7766;1;f;f;f;2233;e51f4c33-e479-462a-8f7f-c02af819926f",
+			"0;7765;1;t;f;f;2234;ab3199b8-310c-43f3-aabd-d86f04042f2d",
+			"0;7764;1;f;f;f;2235;469c3514-3d56-4f09-8f27-1bf784fd9bf4",
+			"0;7763;1;t;f;f;2236;5361069f-7d09-438e-be74-3dbbaddce6b3",
+			"0;7762;1;f;f;f;2237;d2c36534-012f-4e56-bc47-d13244d6875b",
+			"0;7761;1;t;f;f;2238;bdfbd8c4-16fa-4c24-9c03-cde05a310534",
+			"0;7760;1;f;f;f;2239;a503afe6-3ee2-46f7-b19b-8945dfdaea84",
+			"0;7759;1;t;f;f;2240;96eca9ea-6313-47f1-acf1-dd66a9de0f34",
+			"0;7758;1;f;f;f;2241;982a99d5-182d-4a6c-a320-23b72b633ebd",
+			"0;7757;1;t;f;f;2242;163cf318-06b4-45b7-8f91-aeae8747eaa4",
+			"0;7756;1;f;f;f;2243;8aecf793-9253-4182-8b2f-4283df71d7c3",
+			"0;7755;1;t;f;f;2244;8650bc71-f473-4a03-b2be-e2e3bf6ab9a2",
+			"0;7754;1;f;f;f;2245;fc4ae963-8467-4b1c-b310-7dd13551d0e9",
+			"0;7753;1;t;f;f;2246;e4e86c16-050d-4dc6-a36f-2621defb820e",
+			"0;7752;1;f;f;f;2247;9fb8f9e2-2d36-449c-b0f3-efce0812fab0",
+			"0;7751;1;t;f;f;2248;93f29202-ad1f-4a28-a996-3b84455887bd",
+			"0;7750;1;f;f;f;2249;bf477fc7-9151-4f10-8ec9-f7c20c0a04a0",
+			"0;7749;1;t;f;f;2250;d752bba8-1412-42c5-bd63-f8b7d9ade34e",
+			"0;7748;1;f;f;f;2251;a0bcdda4-43d0-4f5b-81d7-8adfd99c2336",
+			"0;7747;1;t;f;f;2252;108c42f9-3b5a-495d-9ff8-88031e9cc739",
+			"0;7746;1;f;f;f;2253;24cc78cf-1dfc-46f1-a9d7-93d1476d76a0",
+			"0;7745;1;t;f;f;2254;bde008d9-24aa-4506-a39b-e3709d100209",
+			"0;7744;1;f;f;f;2255;f49577d0-2b72-4d93-9cb2-d10e94c1e294",
+			"0;7743;1;t;f;f;2256;9d859310-fc06-48a8-9097-ca3ee32949cf",
+			"0;7742;1;f;f;f;2257;333ee46e-70ed-4b12-8119-7bbaa2cb7e3f",
+			"0;7741;1;t;f;f;2258;7fbee612-6e9c-4f79-be86-d0fdb3975620",
+			"0;7740;1;f;f;f;2259;baebd7f4-2b5f-43ae-8c3d-7bc2c23cd098",
+			"0;7739;1;t;f;f;2260;be3f59e1-513a-469b-9abe-d994c38b7fbf",
+			"0;7738;1;f;f;f;2261;b49af4ab-415b-4406-806d-01edddf19e36",
+			"0;7737;1;t;f;f;2262;3fa6ffa2-e669-402d-be50-ba5051854076",
+			"0;7736;1;f;f;f;2263;929fa641-a8fe-420d-87a7-9e7aaf2b2ee0",
+			"0;7735;1;t;f;f;2264;9673f5d3-f590-46d1-b7f2-5b2d78b92378",
+			"0;7734;1;f;f;f;2265;c50d39f8-c743-4d70-a4a2-9463116d930f",
+			"0;7733;1;t;f;f;2266;787da756-0338-49d5-a697-4cd3ce4779f7",
+			"0;7732;1;f;f;f;2267;9cbb40e0-7924-4a9e-81e4-229f14c3bc17",
+			"0;7731;1;t;f;f;2268;98f5d239-8c21-4a7a-963d-acb5d5612920",
+			"0;7730;1;f;f;f;2269;68f8660e-5f70-4dca-90e0-e07d69f2e027",
+			"0;7729;1;t;f;f;2270;58d42cd7-e159-4fe5-a0ae-776c20df1be8",
+			"0;7728;1;f;f;f;2271;a6deb0c8-e1cd-468e-a428-84c74651c1bb",
+			"0;7727;1;t;f;f;2272;ae8d433a-bef4-437e-ba33-96b82bdaecc1",
+			"0;7726;1;t;f;f;2273;b18b2db8-0203-4ce4-a342-a6c95c221d8a",
+			"0;7725;1;f;f;f;2274;eb033be5-f0bd-47d1-8f34-522764feb99a",
+			"0;7724;1;f;f;f;2275;4a11992b-e9aa-4db8-a16a-575a4d9531b6",
+			"0;7723;1;t;f;f;2276;f86f6993-47a5-4fd0-8e38-91e9c50f6512",
+			"0;7722;1;f;f;f;2277;00995634-3a78-4af4-ab08-885a16fc3cde",
+			"0;7721;1;t;f;f;2278;eef4df4b-c3ff-4882-929d-e2c576d2f69a",
+			"0;7720;1;f;f;f;2279;02412306-3a26-4ea2-96d9-1108d0061c53",
+			"0;7719;1;t;f;f;2280;793b26ce-1794-478c-b7b9-612dea2429a3",
+			"0;7718;1;f;f;f;2281;6bb9257a-71c6-4291-a500-692e12c3423c",
+			"0;7717;1;t;f;f;2282;899eedb2-29fe-4e14-b2c6-a7d78d5443bf",
+			"0;7716;1;f;f;f;2283;54a6337a-62a8-49e0-a2c9-b1b253186e63",
+			"0;7715;1;t;f;f;2284;d9f14889-1e29-4eb0-a0c4-aae5dbc24082",
+			"0;7714;1;f;f;f;2285;5754a997-c2ef-432b-9346-3cdce252ce48",
+			"0;7713;1;t;f;f;2286;f75e6d5d-13f5-4f06-9faa-8093157ce005",
+			"0;7712;1;f;f;f;2287;d128cc41-0a86-4712-9617-36167e6b7ae6",
+			"0;7711;1;t;f;f;2288;c713961f-88ad-4e99-8952-0db86a4e718d",
+			"0;7710;1;f;f;f;2289;1c03efad-ddfe-44b9-ae47-753f89a39a37",
+			"0;7709;1;t;f;f;2290;01fc52ae-6a5a-4a12-bab9-0c4b0fcf9f4e",
+			"0;7708;1;f;f;f;2291;92fb46c2-0b28-45d1-993f-adf55f911336",
+			"0;7707;1;t;f;f;2292;683b4b73-5909-4fc8-b2b5-f089c6614860",
+			"0;7706;1;t;f;f;2293;416c9346-7b02-4060-98d6-d7744c810f37",
+			"0;7705;1;f;f;f;2294;97c75c34-2837-4276-8cdd-722d447e49ed",
+			"0;7704;1;f;f;f;2295;cbe38fc4-f01f-42ac-87ad-5c42defb8607",
+			"0;7703;1;t;f;f;2296;28f48197-b020-4759-ae3e-03850ee7e7d5",
+			"0;7702;1;f;f;f;2297;7ff27178-92a4-45b1-aa1f-2c90037e6c95",
+			"0;7701;1;t;f;f;2298;293d98e5-88c5-4847-8576-01569d2bca43",
+			"0;7700;1;f;f;f;2299;c8471107-c32c-442c-9078-bfc47a225882",
+			"0;7699;1;t;f;f;2300;cbf67133-10d5-4233-ab95-4e691f678ee2",
+			"0;7698;1;f;f;f;2301;777ee702-b759-4441-99bc-c7a3c197d945",
+			"0;7697;1;t;f;f;2302;55e002a8-2955-4e79-8b52-7b8ddcb23adf",
+			"0;7696;1;t;f;f;2303;17a736fa-a6f3-40ca-a479-68f963547cbc",
+			"0;7695;1;f;f;f;2304;75235d7b-6b54-4f86-9726-caa16847a12c",
+			"0;7694;1;f;f;f;2305;951aad94-18b6-49e8-aa5b-d5abbe8db529",
+			"0;7693;1;t;f;f;2306;91200657-2a85-4a14-abfd-dea63b57a817",
+			"0;7692;1;t;f;f;2307;f86d6129-50e1-4d9b-8053-4cb94ae076db",
+			"0;7691;1;f;f;f;2308;fe4e0577-6a26-4037-980d-cf1c128fb57c",
+			"0;7690;1;f;f;f;2309;cad44d1d-a52e-49a7-bfbc-43e1f2a859cc",
+			"0;7689;1;t;f;f;2310;e5c084d9-fc57-42ec-9931-e983ece5b96a",
+			"0;7688;1;t;f;f;2311;b8e2f543-6116-4582-9db1-72370eecc7a0",
+			"0;7687;1;f;f;f;2312;acd6333a-f336-4d12-82fa-ac1795381c6f",
+			"0;7686;1;f;f;f;2313;ba374cc9-bed7-4012-ba63-a9c5e88c60e2",
+			"0;7685;1;t;f;f;2314;9e43312c-013f-4648-bcb3-523e8741b288",
+			"0;7684;1;t;f;f;2315;701e78df-9193-4e68-bbd1-89342acc2ee6",
+			"0;7683;1;f;f;f;2316;bafd9582-0890-4d70-a373-66a7ec96300d",
+			"0;7682;1;f;f;f;2317;cd8baf8d-bcdb-4654-8601-c0c018c86b01",
+			"0;7681;1;t;f;f;2318;b1242494-2b4c-48ab-9346-b2f32c2961f6",
+			"0;7680;1;f;f;f;2319;71b0b78a-735a-4439-b091-3346c684ef04",
+			"0;7679;1;t;f;f;2320;7fbad290-7ace-43c5-a0c1-bc4b18b43076",
+			"0;7678;1;f;f;f;2321;98ca29be-f779-4902-bd1c-66b346269c3d",
+			"0;7677;1;t;f;f;2322;4b9e1c07-8fdd-4e5c-a929-d8813c52ee13",
+			"0;7676;1;f;f;f;2323;725f3bd4-b283-4b91-a0cb-93259579a7f3",
+			"0;7675;1;t;f;f;2324;a1fc7463-a7ee-401c-b9a7-f7cfbf09e04c",
+			"0;7674;1;f;f;f;2325;944eb9e0-d87d-4903-8344-601503fa6441",
+			"0;7673;1;t;f;f;2326;dd24ad08-6aca-433d-bb26-71ca59770663",
+			"0;7672;1;f;f;f;2327;4396b622-5dbf-4a93-9dee-03c67209e010",
+			"0;7671;1;t;f;f;2328;b256b782-d427-4672-87da-5a731b6f2086",
+			"0;7670;1;f;f;f;2329;3849ca88-0221-4509-909d-91dbc6c37b7b",
+			"0;7669;1;t;f;f;2330;06a657e9-2c82-4131-8e33-caf3c93783fb",
+			"0;7668;1;f;f;f;2331;765cd9dc-0952-4106-9b16-24010692b3ce",
+			"0;7667;1;t;f;f;2332;17b3455e-53b5-44c7-9eed-b06712124553",
+			"0;7666;1;f;f;f;2333;d13a7bb0-baec-4afb-a0b5-18eb7629c517",
+			"0;7665;1;t;f;f;2334;9d477c35-a35e-45d6-b298-aa74cf1c419b",
+			"0;7664;1;f;f;f;2335;9d898e0e-2a86-4c4c-b179-53eb19ec7668",
+			"0;7663;1;t;f;f;2336;a8bb3d60-d782-43ca-b343-2b4e4a1b083e",
+			"0;7662;1;f;f;f;2337;595eac58-f788-4924-9a00-e3daf5a4f4f6",
+			"0;7661;1;t;f;f;2338;57371758-c6a8-48d9-952a-c0b0f07976c0",
+			"0;7660;1;f;f;f;2339;93cf2120-7685-44e0-bd7d-2841b908d20f",
+			"0;7659;1;t;f;f;2340;932a1f93-2641-4f51-862b-477d7c593e25",
+			"0;7658;1;f;f;f;2341;d963c195-20a7-4970-943c-182d3fb997be",
+			"0;7657;1;t;f;f;2342;86e4dbe8-f5c4-4a91-8609-90de0e2bcacd",
+			"0;7656;1;f;f;f;2343;7684ce60-93fe-4aa8-a137-f24071fd7623",
+			"0;7655;1;t;f;f;2344;0bf89f75-2fe7-4e3f-810d-355a6768d15f",
+			"0;7654;1;t;f;f;2345;b3c2b14f-4e94-44ce-8aeb-2339b4f16d57",
+			"0;7653;1;f;f;f;2346;0c607d25-653a-450c-9a2b-12361c24d9b5",
+			"0;7652;1;f;f;f;2347;a30ee6c1-9a53-490c-9f53-237a49f5fdbc",
+			"0;7651;1;t;f;f;2348;eb68deeb-92c8-45c3-ab05-aeb04e511f22",
+			"0;7650;1;t;f;f;2349;94b28dfb-7956-4ae3-b656-7e17bc0ecca2",
+			"0;7649;1;f;f;f;2350;38dcbf18-b49e-4f25-9006-7bb60742dd7f",
+			"0;7648;1;f;f;f;2351;59349120-f328-4a1d-b754-5dd2937fcbdf",
+			"0;7647;1;t;f;f;2352;606f7faa-6b6c-4524-9a24-b5070bcdf18c",
+			"0;7646;1;t;f;f;2353;4c4d5a9e-e128-4639-9ee0-4f77a0dd4e61",
+			"0;7645;1;f;f;f;2354;4944d3f7-df26-4288-9710-67d4aae98b3b",
+			"0;7644;1;f;f;f;2355;7dac34ad-38f8-4f68-8ffd-bef0d41b6774",
+			"0;7643;1;t;f;f;2356;22ab2d68-5fc8-4e76-b939-50a1019f7d2f",
+			"0;7642;1;t;f;f;2357;c7882f5e-af3d-4265-a37b-f6f34c0f7c5d",
+			"0;7641;1;f;f;f;2358;fd644039-0bbd-4720-977a-24bcd62e1a28",
+			"0;7640;1;f;f;f;2359;649d4bfc-7618-4833-9f06-eb642e5b8ecd",
+			"0;7639;1;t;f;f;2360;8d86379e-6c4c-4b72-bcce-5ae9fe33d0b4",
+			"0;7638;1;t;f;f;2361;b85a2258-93f1-4e5e-8250-5b2fe3698848",
+			"0;7637;1;f;f;f;2362;106f96e6-766d-48ee-9e25-da2256b3d322",
+			"0;7636;1;f;f;f;2363;dfa9b36e-7531-4c5f-9f0e-76de42db1392",
+			"0;7635;1;t;f;f;2364;63bdf3d5-6610-4b89-b244-d8f5bda5934d",
+			"0;7634;1;f;f;f;2365;07638a7c-6484-4e2b-85d4-e315270736c8",
+			"0;7633;1;t;f;f;2366;fed8b7dd-1fa0-4c2f-a51b-2fcab7ffb064",
+			"0;7632;1;f;f;f;2367;afcfbf58-9b95-4243-917f-f9f3ffdbbc6f",
+			"0;7631;1;t;f;f;2368;15011e7d-0fc5-4ac8-afd1-4282536a2ff9",
+			"0;7630;1;f;f;f;2369;6a023171-26c7-4271-aee9-9e7d81af3152",
+			"0;7629;1;t;f;f;2370;5c407822-677a-4a19-a58a-04efeb3cd140",
+			"0;7628;1;f;f;f;2371;1d42638c-658d-4831-b7f6-3f83525ae244",
+			"0;7627;1;t;f;f;2372;8536e4ff-076f-4c7a-8fd7-695c0dabad3d",
+			"0;7626;1;f;f;f;2373;534eec4d-7bd5-4ee1-a98b-c3945e1326e8",
+			"0;7625;1;t;f;f;2374;32cca841-3706-448e-bf71-3ccc5a7f47eb",
+			"0;7624;1;f;f;f;2375;cbeaf50e-1bed-4f11-a014-6d3a9b0c0ceb",
+			"0;7623;1;t;f;f;2376;fc0a7d8b-b58f-4661-91a3-8efae80465db",
+			"0;7622;1;t;f;f;2377;170e5ca4-5105-4102-9523-1bcc4434fb2b",
+			"0;7621;1;f;f;f;2378;db93229d-3d55-45b7-887e-7c0d9854e0d2",
+			"0;7620;1;f;f;f;2379;33aaaf5b-4a92-432c-851a-a63a6fcd90f7",
+			"0;7619;1;t;f;f;2380;9accdcc6-42f6-403e-89ab-34330e88e3c1",
+			"0;7618;1;f;f;f;2381;a8f8a8bd-3ebc-49a7-ae0c-92bbf74f6d0c",
+			"0;7617;1;t;f;f;2382;0d324124-0c68-435d-9ce6-47f965d7b6bf",
+			"0;7616;1;f;f;f;2383;8989ffff-63c2-49e7-b289-566107f14a92",
+			"0;7615;1;t;f;f;2384;e15d737b-b838-40db-aa49-1e7cdaff2cb4",
+			"0;7614;1;f;f;f;2385;6e66b024-3bc2-4e16-886a-5bf97fa12913",
+			"0;7613;1;t;f;f;2386;3b0ca772-42ee-43fc-8b78-e4fb32eced44",
+			"0;7612;1;f;f;f;2387;fd050ff2-720c-4227-8f9d-e6b95c7237c5",
+			"0;7611;1;t;f;f;2388;94f15d3d-1290-4db3-a958-85151275c208",
+			"0;7610;1;f;f;f;2389;3965ede4-935b-42f1-9571-8b2b775d0060",
+			"0;7609;1;t;f;f;2390;2bf31255-73f8-46af-a5e9-c4e0a5aa7d77",
+			"0;7608;1;f;f;f;2391;a185956c-5093-4ae1-92d1-3c7b81e35ed3",
+			"0;7607;1;t;f;f;2392;7b3fbe4c-e0c1-4fab-aaeb-37b59b0834a2",
+			"0;7606;1;f;f;f;2393;160e1784-7a26-41aa-9510-f4f53392d05a",
+			"0;7605;1;t;f;f;2394;5472b780-c912-41fb-bfd3-55fa0703f726",
+			"0;7604;1;f;f;f;2395;7a1e9854-aa83-44be-a5bb-99ba84664311",
+			"0;7603;1;t;f;f;2396;7737998d-67ff-48b3-96a9-9bdcee2f33fa",
+			"0;7602;1;f;f;f;2397;03866134-3537-4727-a9ce-9827b9ce8dee",
+			"0;7601;1;t;f;f;2398;35913389-4135-46dd-a81b-3e9c1b0ddcd3",
+			"0;7600;1;f;f;f;2399;ece66d47-3673-4703-9986-1cfcc9423cca",
+			"0;7599;1;t;f;f;2400;70e5e5c4-8d2a-4a3b-877b-9838e638d906",
+			"0;7598;1;f;f;f;2401;fc57d174-35fb-467a-a558-60be0a6a3584",
+			"0;7597;1;t;f;f;2402;0628e69d-7626-41ef-a9b8-271a751d0f7a",
+			"0;7596;1;t;f;f;2403;d0b13f9e-1038-4eca-b48d-92bf403c5399",
+			"0;7595;1;f;f;f;2404;637ddcd5-a2da-4559-ad4a-69f2d889dd40",
+			"0;7594;1;f;f;f;2405;1b09fc67-b83b-4cb0-8d08-c588eea2fbf9",
+			"0;7593;1;t;f;f;2406;0395d455-c2da-4244-a2a1-6b86fb5916db",
+			"0;7592;1;f;f;f;2407;3da6a86f-89c5-42da-9420-4a270645a8f4",
+			"0;7591;1;t;f;f;2408;d9ac1169-259b-4683-b1cf-325e7d1948c7",
+			"0;7590;1;f;f;f;2409;a3b11c8d-a2b0-48dc-9152-de32c425c7b6",
+			"0;7589;1;t;f;f;2410;9523de64-a019-4ae1-bf50-0df7deecbb44",
+			"0;7588;1;f;f;f;2411;3b0c4103-4429-41db-96d1-ab72a0e1cd3d",
+			"0;7587;1;t;f;f;2412;368f2559-8a14-4832-918a-69e8592eac3b",
+			"0;7586;1;f;f;f;2413;65a51314-ae4f-4058-924f-96da856c7cb9",
+			"0;7585;1;t;f;f;2414;d935e585-652c-4f0a-b5a5-b2811da879c4",
+			"0;7584;1;t;f;f;2415;59a2a331-a89a-462a-849f-dadce44ff546",
+			"0;7583;1;f;f;f;2416;0d80c2bb-98c7-47c1-83b6-ff2f9787a524",
+			"0;7582;1;f;f;f;2417;69ff1246-42a5-4dd9-a637-a08d0fb5ca47",
+			"0;7581;1;t;f;f;2418;be6aefb6-79aa-403c-83cd-068a9fe462c5",
+			"0;7580;1;t;f;f;2419;b0ba3244-a8ad-437a-b105-b034ba52b625",
+			"0;7579;1;f;f;f;2420;b869c608-3532-4bb2-b8e8-06095975c8e3",
+			"0;7578;1;f;f;f;2421;2b804a1b-abe0-404a-81e4-b47c68f9fdf9",
+			"0;7577;1;t;f;f;2422;815852a3-7acf-47ec-8ab2-1dbf84568584",
+			"0;7576;1;f;f;f;2423;39e8c0ea-96e6-40ea-bf35-23884ebbff12",
+			"0;7575;1;t;f;f;2424;47f3115e-7917-4291-bfca-a95701b760a3",
+			"0;7574;1;f;f;f;2425;e26ef0bc-8b1a-4039-a29f-8befe2e5d9ad",
+			"0;7573;1;t;f;f;2426;4aaaf17e-eb68-4811-b948-f623e42bbefc",
+			"0;7572;1;f;f;f;2427;dde50ace-90be-462c-8223-dcba7ec40c21",
+			"0;7571;1;t;f;f;2428;22a1c3fe-731c-4965-905e-0c71c405b1f6",
+			"0;7570;1;f;f;f;2429;ffee7dba-6d74-458a-977a-d542e3be3061",
+			"0;7569;1;t;f;f;2430;352cf795-2236-4051-ae5f-d20298b156c7",
+			"0;7568;1;f;f;f;2431;4c3b9f50-0da6-46a9-ad75-ddb6871c805f",
+			"0;7567;1;t;f;f;2432;8056598b-e7ed-406a-a0d8-ac8a515ce613",
+			"0;7566;1;f;f;f;2433;4e172376-8bb8-4aef-bea9-c784adc66835",
+			"0;7565;1;t;f;f;2434;ccd5eb42-6f84-4295-ba41-e535b165b02d",
+			"0;7564;1;f;f;f;2435;3282965c-b31e-43f5-bfe0-5a027e44675d",
+			"0;7563;1;t;f;f;2436;22178c9e-915b-4fb5-8750-8a5755a282a4",
+			"0;7562;1;f;f;f;2437;48c76c34-73cf-4527-a6e1-eef5de22aa5b",
+			"0;7561;1;t;f;f;2438;8aa75b91-aa70-47e1-ab45-725321eeae07",
+			"0;7560;1;f;f;f;2439;486d4aaa-d8e2-4638-8d4f-9f92e1be1b76",
+			"0;7559;1;t;f;f;2440;49b617f7-e025-4f38-8122-ea29de057ac2",
+			"0;7558;1;f;f;f;2441;b4544e00-569f-4141-a832-b3284574005b",
+			"0;7557;1;t;f;f;2442;1cdfc4f6-5a8f-471b-9454-2be9083c2f68",
+			"0;7556;1;f;f;f;2443;e9c93f70-dc34-4366-98dd-3ce6fa6dc9a9",
+			"0;7555;1;t;f;f;2444;d6c16ba6-2442-4e1f-aae6-5d4c88f58fd3",
+			"0;7554;1;f;f;f;2445;93b02dec-0acc-4be8-9264-3d5b8f384e4e",
+			"0;7553;1;t;f;f;2446;2fdf0897-1434-46d1-b9f9-6ac00e8e9e47",
+			"0;7552;1;f;f;f;2447;b9ca641c-5cbe-4ed9-96b3-3df0e088bd0e",
+			"0;7551;1;t;f;f;2448;80d55d4c-ee7a-49c7-a6a6-46aee2b5a94e",
+			"0;7550;1;f;f;f;2449;e5cc135d-7ab2-41f7-aefc-62e7522ccfff",
+			"0;7549;1;t;f;f;2450;b3c6e77b-f0e0-41eb-825e-c85e00b29f81",
+			"0;7548;1;f;f;f;2451;6daa486a-4770-45da-8b05-f83e196fab0d",
+			"0;7547;1;t;f;f;2452;7a3c87b2-fa27-4671-ae34-d6c6f08ebc71",
+			"0;7546;1;f;f;f;2453;7476163f-33eb-451a-a390-a3ef6025a45d",
+			"0;7545;1;t;f;f;2454;aa88d251-8f53-4e9c-bf2d-8dd79b5e3dfb",
+			"0;7544;1;f;f;f;2455;81e2ca72-0f6e-45bb-936d-613a15e71fd7",
+			"0;7543;1;t;f;f;2456;0fd49329-c656-4f60-a3e8-f21e668c62ef",
+			"0;7542;1;f;f;f;2457;c583579f-e62e-4c2f-9218-5a0e30e2f1db",
+			"0;7541;1;t;f;f;2458;723d821f-d0db-4acb-8729-ff814f1e68b6",
+			"0;7540;1;f;f;f;2459;35dbbbb0-c132-4d31-b33a-7a72d6f36ae4",
+			"0;7539;1;t;f;f;2460;a3051e5f-568b-4423-9013-c7440b34c664",
+			"0;7538;1;f;f;f;2461;2bb5b757-f564-4d37-b25b-5e978afe83dd",
+			"0;7537;1;t;f;f;2462;ed41d499-027a-45d1-9b7c-649c60fbe4c0",
+			"0;7536;1;f;f;f;2463;847304d9-2850-4ea3-b738-050231f69450",
+			"0;7535;1;t;f;f;2464;9af033a6-0de5-4e90-8f9d-67743a4d091d",
+			"0;7534;1;f;f;f;2465;578d2259-b3f0-496f-bd8b-8747cbde64eb",
+			"0;7533;1;t;f;f;2466;d3df5352-5c74-45b7-8437-4f6c50a8e732",
+			"0;7532;1;f;f;f;2467;ae75f75b-7e26-4ef1-a27f-48bb605887da",
+			"0;7531;1;t;f;f;2468;a9fe46f8-92d9-47f5-9c10-174ff6bfbc41",
+			"0;7530;1;f;f;f;2469;ddd455af-cb16-472c-af27-2434ff2a4645",
+			"0;7529;1;t;f;f;2470;a5b2ba0a-d608-4908-8319-3a085cc5bf3d",
+			"0;7528;1;f;f;f;2471;35b39c0f-ac2f-4b37-b237-d00073134604",
+			"0;7527;1;t;f;f;2472;923fc3a5-4f6a-4b77-bdfe-1f9bf74d180c",
+			"0;7526;1;f;f;f;2473;64df0423-f963-4aee-a6bf-c8682b95da3e",
+			"0;7525;1;t;f;f;2474;6c4184f0-5287-4924-8181-3ce1da7a4bef",
+			"0;7524;1;f;f;f;2475;f88c26e9-8e6e-41c9-8157-3dbd87cedf91",
+			"0;7523;1;t;f;f;2476;7c8f812c-daa0-4a29-ae16-173337abb9eb",
+			"0;7522;1;t;f;f;2477;1a1183b3-4014-4ef1-88e4-0864213a9642",
+			"0;7521;1;f;f;f;2478;2e356fad-06d9-4bd8-95bb-fb25286ea23b",
+			"0;7520;1;f;f;f;2479;e07cf2c3-d999-4157-a053-88619e67e7a1",
+			"0;7519;1;t;f;f;2480;1f7a06e0-acb0-46bf-b864-ede652c8c890",
+			"0;7518;1;t;f;f;2481;92cfc57d-fa5e-43f2-ba4d-fc4401a0b763",
+			"0;7517;1;f;f;f;2482;51409e58-da72-4993-95c2-f43e3298ac0a",
+			"0;7516;1;f;f;f;2483;9f40de48-5d06-420c-991b-44846b39eb81",
+			"0;7515;1;t;f;f;2484;fc8ffb54-ce89-4a1f-8552-183c3d1a28cb",
+			"0;7514;1;t;f;f;2485;cef8a5bd-4c34-44d1-b20e-f57ce4824ab2",
+			"0;7513;1;f;f;f;2486;2d13054e-f3a9-484a-9588-98fed8b22f77",
+			"0;7512;1;f;f;f;2487;7073274b-5653-4372-bb90-d7b2e5c09cf2",
+			"0;7511;1;t;f;f;2488;ea333f61-1d3a-4580-bf08-dc3d391008e6",
+			"0;7510;1;t;f;f;2489;964001f6-ddd8-4d94-b8c7-28c780df0ea4",
+			"0;7509;1;f;f;f;2490;420d7b75-26dc-4ac0-9577-b04668adacfe",
+			"0;7508;1;f;f;f;2491;9be835ef-d7cb-4362-a6b7-eefe1c5ebb9d",
+			"0;7507;1;t;f;f;2492;78fc2834-5b0b-4a64-ad61-a13a14d5fe85",
+			"0;7506;1;f;f;f;2493;625834e7-9ffe-4a89-aa4a-80b8ee4b30d5",
+			"0;7505;1;t;f;f;2494;43139dc2-ec99-4953-ac00-01831fe38e98",
+			"0;7504;1;f;f;f;2495;128970a7-74fe-431b-81db-a3cb08076058",
+			"0;7503;1;t;f;f;2496;b668a58b-71e8-4b4a-b88a-8cd309c7fe64",
+			"0;7502;1;f;f;f;2497;4a66a7cb-a4d0-4bbc-a44d-18490d02f6d8",
+			"0;7501;1;t;f;f;2498;9ba921b6-c513-42e2-8b88-82aa5be4a4be",
+			"0;7500;1;f;f;f;2499;7d0f326c-ecf5-4ae0-b170-02a155275aaf",
+			"0;7499;1;t;f;f;2500;433bf8d1-68fa-482d-b8d2-61d730897159",
+			"0;7498;1;t;f;f;2501;3779233a-89f9-4770-a9f5-40f419e77bcb",
+			"0;7497;1;f;f;f;2502;e6d6fcaa-da19-4840-b9c1-38aa4f0cda11",
+			"0;7496;1;f;f;f;2503;45db0989-ae32-4cae-96ca-eea6a401b02a",
+			"0;7495;1;t;f;f;2504;1b2616dc-0c79-4e23-b96e-f01f53c20110",
+			"0;7494;1;t;f;f;2505;f240b34d-9c9e-4885-b45f-de0afe60f252",
+			"0;7493;1;f;f;f;2506;4f6acd94-dba6-4275-8418-16deb0f2feee",
+			"0;7492;1;f;f;f;2507;773a3e8d-083e-4490-972f-7b464fc10968",
+			"0;7491;1;t;f;f;2508;59cda61f-1f97-4f53-847a-707f1929fad0",
+			"0;7490;1;t;f;f;2509;1d3a4422-3cb0-436f-b567-11492fa651f1",
+			"0;7489;1;f;f;f;2510;eb70888e-2163-4919-8234-0a25c2cd783a",
+			"0;7488;1;f;f;f;2511;42ce9cd6-8eef-4f45-91b8-beb6fc6f4515",
+			"0;7487;1;t;f;f;2512;4e00dd8f-1e7a-40b6-85d2-bb93a63dff2a",
+			"0;7486;1;f;f;f;2513;4ff97fff-4b9d-41c6-bdc6-681ab03eb3bb",
+			"0;7485;1;t;f;f;2514;c911063c-6f55-4338-9446-90d4463b734f",
+			"0;7484;1;f;f;f;2515;d474a5b2-cc10-487c-a64c-3612bcea9a30",
+			"0;7483;1;t;f;f;2516;731aadfc-601f-4e06-a74c-0f5a4b854b82",
+			"0;7482;1;t;f;f;2517;4edc9f56-75eb-40a2-a741-af04d157640e",
+			"0;7481;1;f;f;f;2518;400139f3-5b0d-4cf2-89cb-1a2508c68c4d",
+			"0;7480;1;f;f;f;2519;2bc1bc40-473e-44db-aa7d-523e8cb89c2c",
+			"0;7479;1;t;f;f;2520;494814f7-e032-4316-8c5d-25300c44ffe3",
+			"0;7478;1;t;f;f;2521;c8c25a98-c3a1-4922-9609-9038fff8d0cd",
+			"0;7477;1;f;f;f;2522;ef77060f-9192-4dae-8e60-e45d18fec26d",
+			"0;7476;1;f;f;f;2523;f0bdc6ce-f18a-4fe9-ae6e-8973222c928f",
+			"0;7475;1;t;f;f;2524;c5d82de6-2cf5-431e-aca6-9d6cf46ae3fa",
+			"0;7474;1;t;f;f;2525;db9746c2-a93b-4c5a-8366-45b593d01cbc",
+			"0;7473;1;f;f;f;2526;a0cbe476-fa0f-441c-9181-55cc42ee59c0",
+			"0;7472;1;f;f;f;2527;8e7d7993-d972-42e5-95bb-d162cf1bd307",
+			"0;7471;1;t;f;f;2528;a5a32be4-b439-40e4-a0c2-cbc916190372",
+			"0;7470;1;t;f;f;2529;a8a01e93-4a8e-4425-acfe-855cf76a547d",
+			"0;7469;1;f;f;f;2530;93d2f769-448a-4219-8a44-9a48773cfde9",
+			"0;7468;1;f;f;f;2531;e0b5af27-ff81-433b-ba7d-9095b03c5584",
+			"0;7467;1;t;f;f;2532;bebf1671-b3ab-4130-946d-9e67d404d6a0",
+			"0;7466;1;t;f;f;2533;8e59f4b1-c41d-454e-8925-07dfd1c9eef9",
+			"0;7465;1;f;f;f;2534;a27b9bed-7923-4c50-9209-f1bae6a54bbe",
+			"0;7464;1;f;f;f;2535;7cb7f352-4dab-4827-a289-757429291963",
+			"0;7463;1;t;f;f;2536;548b1343-9331-4681-be3d-5f466e8ad42b",
+			"0;7462;1;t;f;f;2537;cc9ed685-54f5-4cd7-9b3a-8fb590198460",
+			"0;7461;1;f;f;f;2538;425ed24d-4e98-47d6-b699-8a59f5b5d034",
+			"0;7460;1;f;f;f;2539;b745247c-75a8-4d39-a80e-87fa1998ca54",
+			"0;7459;1;t;f;f;2540;8b1109c3-85b2-4242-a8e9-268c5ddda0b1",
+			"0;7458;1;f;f;f;2541;635ef3d3-8519-4ae4-85ec-fe0eb6e8b069",
+			"0;7457;1;t;f;f;2542;995b5bb9-fe1d-4c67-84c8-d7cda73d9f32",
+			"0;7456;1;f;f;f;2543;f7c6c0fb-7fb4-4ee0-846e-3d258753f452",
+			"0;7455;1;t;f;f;2544;c7538c2d-12f0-4d0c-a580-546f46b3278d",
+			"0;7454;1;f;f;f;2545;5d627b6b-c78b-4ae0-bbdd-a16f740af409",
+			"0;7453;1;t;f;f;2546;2d08ecea-f13f-4638-ae96-d8e6001ad584",
+			"0;7452;1;f;f;f;2547;1cd77ae4-da33-4748-a2d3-c2b92c4833e8",
+			"0;7451;1;t;f;f;2548;2a3eecb8-9ab9-4ef5-a24c-58b4bed7d348",
+			"0;7450;1;f;f;f;2549;c3bd6716-43b1-4c9c-aecb-bd2cba9e3f78",
+			"0;7449;1;t;f;f;2550;bddcd5f6-8105-49ff-b9f8-dce0692cddab",
+			"0;7448;1;t;f;f;2551;290f4355-5d3c-4c84-9213-9b2b642e04ff",
+			"0;7447;1;f;f;f;2552;0a12d60d-68aa-4e79-b639-79d5134a07ad",
+			"0;7446;1;f;f;f;2553;8cc5dd7e-770b-418d-afab-930e0f936893",
+			"0;7445;1;t;f;f;2554;710daf87-396b-45a3-8310-1e153ada607e",
+			"0;7444;1;f;f;f;2555;4abb947e-765c-4763-a4d1-a14f27b53750",
+			"0;7443;1;t;f;f;2556;039df684-0523-442f-a6f2-e2e5fca77e1a",
+			"0;7442;1;f;f;f;2557;a0bbe639-9fe4-4f21-865d-37754bec9976",
+			"0;7441;1;t;f;f;2558;214c01b6-d9cb-494e-959b-9facca998ec2",
+			"0;7440;1;t;f;f;2559;32b0ce94-6f66-4d6d-b263-e0001746faef",
+			"0;7439;1;f;f;f;2560;d864d908-fefe-4f05-9de5-b3248e88de41",
+			"0;7438;1;f;f;f;2561;d7b38795-5c93-4656-b9d4-5e11b1e6eccc",
+			"0;7437;1;t;f;f;2562;67102c4f-3b90-412f-a9c8-c75b13cbbc61",
+			"0;7436;1;f;f;f;2563;390a6de5-6b66-4e97-aa1b-38dc88b3bf06",
+			"0;7435;1;t;f;f;2564;12f186a8-f699-4f94-bb4c-adbbe7969962",
+			"0;7434;1;f;f;f;2565;75e0a7ce-9202-4c35-81d7-91be92c6de3f",
+			"0;7433;1;t;f;f;2566;fca8d6cf-b809-4dce-a0f6-16796e613b71",
+			"0;7432;1;f;f;f;2567;a505f28b-613d-4f99-9625-e927729fa1b5",
+			"0;7431;1;t;f;f;2568;1266a91b-ca7f-49b1-8784-b05cdb5a8463",
+			"0;7430;1;f;f;f;2569;649371ff-33e0-46f3-a405-385cd2fe5cec",
+			"0;7429;1;t;f;f;2570;f36f977b-9779-4f1b-b0b9-d2f0adaeae9e",
+			"0;7428;1;f;f;f;2571;0c787f76-be07-4c33-ad4e-b87a2ccb9fff",
+			"0;7427;1;t;f;f;2572;86d1bc0b-7ff7-457f-8427-f4dc52a2efb1",
+			"0;7426;1;f;f;f;2573;a440ad02-5130-401e-99e9-65b2ca5fbe4e",
+			"0;7425;1;t;f;f;2574;7a7ad1d4-316f-485f-aa25-6ee4647d9b58",
+			"0;7424;1;f;f;f;2575;b5575f46-f225-42fa-b8e2-69167ca33f2c",
+			"0;7423;1;t;f;f;2576;72c057a3-7664-413f-ae7f-56a82ddffa91",
+			"0;7422;1;f;f;f;2577;4d7b8393-f287-4ece-99f9-af026b40b839",
+			"0;7421;1;t;f;f;2578;e4448702-345d-43ad-beb6-60a7bda350f0",
+			"0;7420;1;f;f;f;2579;7608d73f-bf91-416d-8288-887f9bce31db",
+			"0;7419;1;t;f;f;2580;bae62070-58b0-497e-aba6-67e678325773",
+			"0;7418;1;f;f;f;2581;67c39fde-df0a-47d5-9f4b-77c36d7a8eb2",
+			"0;7417;1;t;f;f;2582;20781dde-ed9f-4ece-8662-4efbd4283a29",
+			"0;7416;1;f;f;f;2583;1902662c-698a-4205-8322-7949f8df4f8d",
+			"0;7415;1;t;f;f;2584;e1666454-17d1-4db6-a608-f979de2062a6",
+			"0;7414;1;f;f;f;2585;cf61f284-6539-49fc-8c07-2329b4092405",
+			"0;7413;1;t;f;f;2586;10672fd2-fb25-46e4-9e26-848281ef0321",
+			"0;7412;1;f;f;f;2587;35f81837-6b96-4017-92d5-3ae44ccf7822",
+			"0;7411;1;t;f;f;2588;71dac638-7a04-40f4-b974-1d615826daae",
+			"0;7410;1;f;f;f;2589;4f145fed-3dcc-44ed-9396-7add6776d9c2",
+			"0;7409;1;t;f;f;2590;0096ed05-4bbf-4b75-b879-4f0ceacb3ee2",
+			"0;7408;1;f;f;f;2591;915cf746-3867-472c-9151-ec25adc18096",
+			"0;7407;1;t;f;f;2592;8e7bdbe3-c78b-49eb-8d16-ed9ce8a8b8d6",
+			"0;7406;1;f;f;f;2593;0d0c6cde-6f88-49a9-83dc-fd291e521f9b",
+			"0;7405;1;t;f;f;2594;e93e352d-ceb3-4c16-ad23-c35c948e3724",
+			"0;7404;1;f;f;f;2595;11812209-8842-4ab5-80ff-d9756e4cdc1d",
+			"0;7403;1;t;f;f;2596;901fbe51-45f4-4411-83e5-590f3031e8ac",
+			"0;7402;1;f;f;f;2597;3508b77b-d15d-4b7e-ac55-20f17d518afa",
+			"0;7401;1;t;f;f;2598;2f2522d5-5079-408b-b810-430b3be49c3b",
+			"0;7400;1;f;f;f;2599;c423f3a7-f6a7-470d-8ec4-62f6dfb61439",
+			"0;7399;1;t;f;f;2600;4b332cd3-d90d-4391-909b-175863d101a8",
+			"0;7398;1;f;f;f;2601;41a2a644-d0fb-4a3b-b5df-5e6395693c8f",
+			"0;7397;1;t;f;f;2602;a6bcd5ba-15c7-4a5e-b59f-e20ea1f1ba90",
+			"0;7396;1;f;f;f;2603;6b7074ce-1633-40be-891f-b5d90ca875c5",
+			"0;7395;1;t;f;f;2604;81789b19-82af-431c-ae8e-f8121cd5f741",
+			"0;7394;1;f;f;f;2605;05be78d9-09f3-41b0-b701-af685346144d",
+			"0;7393;1;t;f;f;2606;3fd11330-c098-41dd-b8e9-ac0f7467060d",
+			"0;7392;1;f;f;f;2607;5471870b-4cc1-4aee-964b-294b03a8b563",
+			"0;7391;1;t;f;f;2608;9ce2cb5e-82c3-4c45-bd00-1ef1905fbddb",
+			"0;7390;1;t;f;f;2609;a6f9b560-d722-4b6c-8b4d-946f98814e5f",
+			"0;7389;1;f;f;f;2610;6fbaa47f-b4c2-4cb4-b7fc-da19dd86935c",
+			"0;7388;1;f;f;f;2611;c2b9dcec-f851-4d95-8f56-9f11d4945799",
+			"0;7387;1;t;f;f;2612;7f369f32-a86f-4c79-a4a6-c3b03eece929",
+			"0;7386;1;t;f;f;2613;fda9d5fb-481a-475b-9de0-87aabb9ea406",
+			"0;7385;1;f;f;f;2614;ad50d7c7-5276-4875-91e1-4a651a1c1f1d",
+			"0;7384;1;f;f;f;2615;ccbca7e8-f98e-4d06-b6ee-88e1839a5fff",
+			"0;7383;1;t;f;f;2616;67a769a1-833d-47f6-9de4-1f7da7ee8f9e",
+			"0;7382;1;t;f;f;2617;8aebb5a9-d7be-4d55-be74-640d95111b9b",
+			"0;7381;1;f;f;f;2618;a32bfbe5-a2ea-42ee-9e70-62ee9b615f79",
+			"0;7380;1;f;f;f;2619;ac9739bd-e69b-430a-b28f-589428b27ab9",
+			"0;7379;1;t;f;f;2620;9ab7bb08-b73a-4a2f-93b3-f8ea23e289d9",
+			"0;7378;1;f;f;f;2621;edfb5ffe-7281-4157-8224-9419ecea69d3",
+			"0;7377;1;t;f;f;2622;bc9c641a-84ec-4715-9245-40b6e220c1c7",
+			"0;7376;1;f;f;f;2623;31e3bd83-72f5-4c41-9408-b32e056d0d1f",
+			"0;7375;1;t;f;f;2624;45a608dc-90a0-4755-90c9-bd29a2e49768",
+			"0;7374;1;t;f;f;2625;a0c511a9-ccfe-4e66-adff-bef6c78c3a8d",
+			"0;7373;1;f;f;f;2626;b48cceac-404c-416a-8266-d9c7d0132977",
+			"0;7372;1;f;f;f;2627;e70c9271-d5c7-467f-8672-0cf633272511",
+			"0;7371;1;t;f;f;2628;b740628f-1748-474f-911d-557f60d8965f",
+			"0;7370;1;t;f;f;2629;019063ab-d4fb-4ab8-8cb6-bb46de5908d6",
+			"0;7369;1;f;f;f;2630;d399a6a9-3931-4bae-9a06-0ac13a817850",
+			"0;7368;1;f;f;f;2631;ee4bc694-6cc4-404d-a2e8-1459ae0049eb",
+			"0;7367;1;t;f;f;2632;c0d7af11-ea89-45a9-9975-ce7fe47716f9",
+			"0;7366;1;f;f;f;2633;9697fa94-7ab3-4e6e-9738-52ced700f340",
+			"0;7365;1;t;f;f;2634;f932bee1-80f2-4d04-833b-680c464e6244",
+			"0;7364;1;f;f;f;2635;5386efb8-3c62-46a6-b09f-966fad5947cb",
+			"0;7363;1;t;f;f;2636;11bbc661-1bd3-4c41-b7bb-d69609dd251b",
+			"0;7362;1;f;f;f;2637;79b17288-b384-40b0-a058-628daf9caa3d",
+			"0;7361;1;t;f;f;2638;83605b52-0b0d-4635-9f89-75d666a3d37f",
+			"0;7360;1;f;f;f;2639;56e99ad1-4fc3-4685-acf8-f620d09c07b5",
+			"0;7359;1;t;f;f;2640;7e413b63-bffc-4d87-b84f-87331a145c04",
+			"0;7358;1;t;f;f;2641;1c580751-6ca0-4f2b-a775-2199375e1749",
+			"0;7357;1;f;f;f;2642;fd5812b9-163a-443c-aa79-3629e22b94e6",
+			"0;7356;1;f;f;f;2643;ef53e980-88aa-4008-b41f-0180b2ebc5fd",
+			"0;7355;1;t;f;f;2644;ce10bf2e-4e20-4762-ac9f-1402acbde35d",
+			"0;7354;1;f;f;f;2645;86cfdf5e-a918-4960-833d-d159613f12a5",
+			"0;7353;1;t;f;f;2646;3f0996b6-e2ca-45ec-b040-b3e11031976e",
+			"0;7352;1;f;f;f;2647;91c82b0a-c5be-4616-a214-1b5ed613ab5f",
+			"0;7351;1;t;f;f;2648;1f2701d5-ab61-416e-bbcc-490b6353130c",
+			"0;7350;1;t;f;f;2649;c222b06c-c5eb-4547-8112-c130771c9df1",
+			"0;7349;1;f;f;f;2650;d589662c-c6ee-476f-a435-1fd91bea3971",
+			"0;7348;1;f;f;f;2651;faf22db0-69c8-492a-926d-c1c0d673ce62",
+			"0;7347;1;t;f;f;2652;4a95966e-3d6c-4a14-a104-0b65a0eaab61",
+			"0;7346;1;t;f;f;2653;fb23ae88-fe11-45a4-b0f2-ebddc8b06e3b",
+			"0;7345;1;f;f;f;2654;0db24d05-de52-4c90-ba61-c7cb79dd8bc9",
+			"0;7344;1;f;f;f;2655;0dc12281-ccf8-40b8-872b-2f2b5bfe2f76",
+			"0;7343;1;t;f;f;2656;194bb161-e7f4-4916-8876-922d4ba8f7b4",
+			"0;7342;1;f;f;f;2657;7990123d-4fc5-4db8-80c1-56c6c8191617",
+			"0;7341;1;t;f;f;2658;4947956d-d421-40e4-adc5-eb42ab8f9357",
+			"0;7340;1;f;f;f;2659;f88695f1-54dd-448a-9460-57d06d5ac420",
+			"0;7339;1;t;f;f;2660;57320816-86eb-4673-bc28-6f9fa2aea262",
+			"0;7338;1;f;f;f;2661;959bf3b8-d25c-44f3-b9b0-d9439814df5f",
+			"0;7337;1;t;f;f;2662;2a69c254-8ffd-4c44-9e07-5b10698fc5aa",
+			"0;7336;1;f;f;f;2663;0ec41b38-f58d-4054-a5f2-818c8eb05abc",
+			"0;7335;1;t;f;f;2664;cb0f53cd-76c4-4f9f-b422-627bbd0ac3fd",
+			"0;7334;1;f;f;f;2665;d1a56947-97c6-4a34-9ef6-798ba719df79",
+			"0;7333;1;t;f;f;2666;353a4a12-c9e3-4a3f-b4a0-cea68c3aaee2",
+			"0;7332;1;f;f;f;2667;cef54365-2ff3-42f4-ab07-1e3897f46e61",
+			"0;7331;1;t;f;f;2668;c74c8e31-8593-480a-9c76-4dbc2a2d6b0c",
+			"0;7330;1;f;f;f;2669;b29b50b7-c4a2-421a-bdf7-fb400c2e0691",
+			"0;7329;1;t;f;f;2670;0fd7d6e6-581a-4826-895b-50c78f20733b",
+			"0;7328;1;f;f;f;2671;14e589c1-2e2f-42b9-a168-7c2f06f8b572",
+			"0;7327;1;t;f;f;2672;99c499fa-43b3-458e-990c-7397b404718a",
+			"0;7326;1;f;f;f;2673;08d2b136-ba9e-4e38-8190-8789bc6b9363",
+			"0;7325;1;t;f;f;2674;8f5a476a-20c6-41a3-b8d9-c5f6ee1f1fe7",
+			"0;7324;1;f;f;f;2675;59eb774f-db6f-40b4-92f1-1b2d981d328a",
+			"0;7323;1;t;f;f;2676;850265b7-c3b3-4a53-909f-efb2fc26096e",
+			"0;7322;1;f;f;f;2677;5de9fbb1-f6c1-436e-9060-a2580ef207dd",
+			"0;7321;1;t;f;f;2678;22fa1358-48d8-42cd-a031-cb9570cb238f",
+			"0;7320;1;f;f;f;2679;204498c2-0d24-4f6b-ad57-52f612594d49",
+			"0;7319;1;t;f;f;2680;b34e2f1e-1cab-41be-b20a-f414616cbe02",
+			"0;7318;1;f;f;f;2681;9479f731-68d4-4979-81ca-bf4bf29794c0",
+			"0;7317;1;t;f;f;2682;6286181c-c25e-4d82-891f-c06329b73f0c",
+			"0;7316;1;f;f;f;2683;d76e06b0-9187-48f9-83df-cc39422617bc",
+			"0;7315;1;t;f;f;2684;b6a2834b-522b-4858-aa5d-de426055637e",
+			"0;7314;1;f;f;f;2685;3491720d-fc8f-47e3-a826-56ab65fa9911",
+			"0;7313;1;t;f;f;2686;a3df661e-241a-49fc-839f-0d267f8a1de4",
+			"0;7312;1;f;f;f;2687;f2328632-69be-4e03-ba3e-da3016a09c04",
+			"0;7311;1;t;f;f;2688;33770425-358f-40a1-b5c3-b61b2016e20c",
+			"0;7310;1;f;f;f;2689;744b047e-4b85-4f68-840e-5fbea23e68be",
+			"0;7309;1;t;f;f;2690;da265381-0c63-4006-8c0d-06bc96ae95eb",
+			"0;7308;1;f;f;f;2691;945d59a1-081e-46f8-b0a2-12bf28f1d9de",
+			"0;7307;1;t;f;f;2692;6264c359-6883-4b2b-84ab-b69bcaa66733",
+			"0;7306;1;f;f;f;2693;54864784-bae2-4347-9829-9e561912b5f4",
+			"0;7305;1;t;f;f;2694;792fb6c9-9103-4fe5-92a5-f55c3650ea4a",
+			"0;7304;1;f;f;f;2695;cdc56ad9-6b00-47a3-8bc1-f8586a1fadec",
+			"0;7303;1;t;f;f;2696;4ea24258-3906-407d-ba9f-b7fa537921af",
+			"0;7302;1;f;f;f;2697;42d1c449-0f24-47f0-9d58-e833255018ea",
+			"0;7301;1;t;f;f;2698;2cc7ec4e-188d-4263-b3aa-5f7d6582a20d",
+			"0;7300;1;f;f;f;2699;82c43411-e1d0-4ed1-bf97-dff75fb050b6",
+			"0;7299;1;t;f;f;2700;689725d9-8fa0-4c65-a0f0-25920f434ea7",
+			"0;7298;1;f;f;f;2701;5810f0b0-f5c4-47dd-9a8b-ec4b4bcd6a56",
+			"0;7297;1;t;f;f;2702;4bc2ae36-c56a-42db-8cf3-f462b09a64af",
+			"0;7296;1;f;f;f;2703;306ccde3-c034-45e8-a5dc-89df288b5ee7",
+			"0;7295;1;t;f;f;2704;9c5ddbca-2eea-4831-826c-16d53ad654d5",
+			"0;7294;1;f;f;f;2705;3a675011-0a55-4363-8a6d-9a2b905f13e9",
+			"0;7293;1;t;f;f;2706;19f18136-1431-44de-91ef-e0a0f44b9284",
+			"0;7292;1;f;f;f;2707;ef259e70-95cb-4780-b03a-5deee4102eda",
+			"0;7291;1;t;f;f;2708;af90efdd-d574-4871-bacb-85937977d888",
+			"0;7290;1;f;f;f;2709;7404bf63-b17c-4bb7-a116-ef3b6fbdfb92",
+			"0;7289;1;t;f;f;2710;ae4a77ae-07b0-4770-bcde-f8e0c285dcaa",
+			"0;7288;1;f;f;f;2711;4c11a5ad-b474-4aa3-90f7-2b706e8d8755",
+			"0;7287;1;t;f;f;2712;eef0df07-f23f-4519-bb56-0820b0bb2fa9",
+			"0;7286;1;f;f;f;2713;cde9a2d4-8782-4b8b-b1c9-ad5ecd302a07",
+			"0;7285;1;t;f;f;2714;f62402c8-a196-4ac5-9514-567ed102f9e4",
+			"0;7284;1;f;f;f;2715;c52796ec-b875-4a6b-8d04-b151e23278c1",
+			"0;7283;1;t;f;f;2716;00939f1e-a5cb-4e4f-9dd8-cf6a686331fd",
+			"0;7282;1;f;f;f;2717;37e60e3f-09d3-4946-af32-7b4be173c9b5",
+			"0;7281;1;t;f;f;2718;1111f3de-1bea-4863-adfd-84b3a1d2eb66",
+			"0;7280;1;f;f;f;2719;60947d86-d839-4792-bf1a-4a919b5fa8a9",
+			"0;7279;1;t;f;f;2720;92363c86-1fdd-45af-ad6f-4147a3c5a560",
+			"0;7278;1;f;f;f;2721;96c123c8-cee0-4a92-bd1a-b2c6d5831086",
+			"0;7277;1;t;f;f;2722;070fcc24-c35b-4c3f-a45b-ea76df160e3a",
+			"0;7276;1;f;f;f;2723;1bb042dc-50b5-4d72-90fc-6d7f4c39f0b1",
+			"0;7275;1;t;f;f;2724;ec1c6e06-3dd3-48e1-be4a-f4ece59999d7",
+			"0;7274;1;f;f;f;2725;49c3f183-fed6-420b-9051-a45263f53ea6",
+			"0;7273;1;t;f;f;2726;40c841cb-4ed0-41ab-93a3-be9f4db6f3b9",
+			"0;7272;1;f;f;f;2727;8f9ecc1f-2c0c-4b7c-b0aa-d626160ffeee",
+			"0;7271;1;t;f;f;2728;6c982b08-87cd-4991-a71f-37d9d513d739",
+			"0;7270;1;f;f;f;2729;ada28555-e090-4a10-82cc-bee54a04a923",
+			"0;7269;1;t;f;f;2730;6eac7b13-9dbe-4a47-8a25-0ff18a9ffd3a",
+			"0;7268;1;f;f;f;2731;dbc0b551-beb5-44aa-98c0-078d84fb81b0",
+			"0;7267;1;t;f;f;2732;0892d4c3-af5d-42f9-93bf-a7c19105db1e",
+			"0;7266;1;f;f;f;2733;0f350bb5-6c32-4b92-8ec7-4d64a1b585c5",
+			"0;7265;1;t;f;f;2734;068ac978-1ea4-4723-93c6-0f2ca256c0a5",
+			"0;7264;1;f;f;f;2735;2bf9047f-8757-4b1c-840d-a74d01ef119e",
+			"0;7263;1;t;f;f;2736;422e45c8-44b6-486c-8171-4d5add237775",
+			"0;7262;1;f;f;f;2737;358d754c-9e48-4bc1-a00d-1293f08f6ba9",
+			"0;7261;1;t;f;f;2738;ace25896-a073-4e49-a4d9-7b69a669c8ae",
+			"0;7260;1;f;f;f;2739;23e3c6f9-a79f-4d27-8f6e-e631bec9bc99",
+			"0;7259;1;t;f;f;2740;8869d088-b76b-454d-a9c7-454c57e6e375",
+			"0;7258;1;f;f;f;2741;0592fcea-2a26-41d4-b5e9-d3039b9f1552",
+			"0;7257;1;t;f;f;2742;b25ec793-63dc-43c7-8473-7c9ed07678f6",
+			"0;7256;1;f;f;f;2743;15273cf5-07a0-4d52-9125-5af03b90c98a",
+			"0;7255;1;t;f;f;2744;b24ea336-e812-4df6-9159-5158d74e2031",
+			"0;7254;1;f;f;f;2745;ad8b3cab-fc66-4707-9212-672c4a851e42",
+			"0;7253;1;t;f;f;2746;4037b86f-13c6-4b8d-9e3f-3b06ac4fc963",
+			"0;7252;1;f;f;f;2747;8f9c090f-6ef3-4acf-baab-d5b05a363af5",
+			"0;7251;1;t;f;f;2748;a74f40a0-d4b0-41a5-8271-7cb5ceb3e62a",
+			"0;7250;1;f;f;f;2749;d20713ed-a506-45ad-9f71-de311a244a8b",
+			"0;7249;1;t;f;f;2750;2403cafe-6c27-4a4a-a2d9-4779607e6363",
+			"0;7248;1;f;f;f;2751;195a9994-1db1-41f0-b050-773a7599ae66",
+			"0;7247;1;t;f;f;2752;ac39c779-9bd8-42c5-a89d-165662343051",
+			"0;7246;1;f;f;f;2753;cc97d08e-3364-413d-aff6-1351b6874d96",
+			"0;7245;1;t;f;f;2754;0ba0ad45-b4e8-417c-91f8-1987ec0c428a",
+			"0;7244;1;f;f;f;2755;27a142d3-092d-4adb-8842-154cedb5121c",
+			"0;7243;1;t;f;f;2756;a3fea3b1-eb24-496b-b349-3d38017b52f7",
+			"0;7242;1;f;f;f;2757;d300cb6c-cfb9-4253-9b83-4ca03933acc4",
+			"0;7241;1;t;f;f;2758;304458a9-dbc7-41c6-985c-5efb66d79183",
+			"0;7240;1;f;f;f;2759;db013ec0-1b5f-4465-b26d-73ad81f0131f",
+			"0;7239;1;t;f;f;2760;09a46007-1543-4741-8397-ff1e489ff646",
+			"0;7238;1;f;f;f;2761;7ba51870-c354-4666-9757-5d5cb80e05d0",
+			"0;7237;1;t;f;f;2762;99258ff0-bb4a-4d6f-ac1f-933a40e14a1d",
+			"0;7236;1;f;f;f;2763;03e69225-179c-4951-8f24-3e115cc572b9",
+			"0;7235;1;t;f;f;2764;5fcc9158-c6c8-4abb-9ef5-e1121f8f033b",
+			"0;7234;1;t;f;f;2765;d588a4be-27e5-4121-b853-a791486f8d48",
+			"0;7233;1;f;f;f;2766;5f2a6568-105f-4e63-9d27-f99cdffab1fd",
+			"0;7232;1;f;f;f;2767;7b6c9d9e-ae71-4cbc-87e3-4c665b5aa227",
+			"0;7231;1;t;f;f;2768;fe737f38-2d40-4df6-8fcb-0836ec3dcaec",
+			"0;7230;1;t;f;f;2769;82c300f7-527b-45fc-a85b-1569e2975b0d",
+			"0;7229;1;f;f;f;2770;30494dab-cbe4-4525-b4dc-69876c6a90a7",
+			"0;7228;1;f;f;f;2771;9b0f297c-6b7e-4f57-b69b-df4693a15bf7",
+			"0;7227;1;t;f;f;2772;d310dfd0-a058-4edd-9c35-08572146a950",
+			"0;7226;1;t;f;f;2773;38a36fa2-faaf-4c3b-9271-4873a7609280",
+			"0;7225;1;f;f;f;2774;ace74664-ada8-44de-8d41-d9b05872f654",
+			"0;7224;1;f;f;f;2775;9e5edd58-fddb-4b09-9140-d3c25d081948",
+			"0;7223;1;t;f;f;2776;10743c8d-d9da-4a38-84b5-4c35f88694b4",
+			"0;7222;1;t;f;f;2777;eec5dfea-a725-451b-b8a0-d445e39cea20",
+			"0;7221;1;f;f;f;2778;091d4776-48de-4c35-a2ef-7f08396ca408",
+			"0;7220;1;f;f;f;2779;2358d1e3-23a3-4d94-a47d-ac2f15d32b72",
+			"0;7219;1;t;f;f;2780;a550693d-4492-427f-832f-b076879e328c",
+			"0;7218;1;t;f;f;2781;fa52b001-22f1-4f39-9461-8b2e32dbf948",
+			"0;7217;1;f;f;f;2782;5cf8f3c4-3519-499c-8443-05481b9bf45d",
+			"0;7216;1;f;f;f;2783;a8a07b86-281e-4aba-8dc3-0906f9d1b3e6",
+			"0;7215;1;t;f;f;2784;cd342cfb-47fc-404e-a9be-8a46a372db0d",
+			"0;7214;1;f;f;f;2785;f84da360-fccb-4365-9099-1c6a59322c5b",
+			"0;7213;1;t;f;f;2786;f174ec39-7a65-4dbb-9985-721b1b8dcc84",
+			"0;7212;1;f;f;f;2787;7bbdd494-ff6f-4ea0-b17a-2938b0be7bfe",
+			"0;7211;1;t;f;f;2788;3e91f9a3-cd79-4203-91cf-306eb8dada36",
+			"0;7210;1;f;f;f;2789;86f79ffe-409c-4155-a3f2-2de9603250e5",
+			"0;7209;1;t;f;f;2790;325119ba-9007-4b61-904f-aab82441707f",
+			"0;7208;1;f;f;f;2791;f42caf89-4aeb-4ab4-95ae-f28ed84e3e78",
+			"0;7207;1;t;f;f;2792;fd1f98d7-dae4-4758-9c15-d981092369d7",
+			"0;7206;1;f;f;f;2793;cc0fda7a-029e-475d-b47c-29400a51da6e",
+			"0;7205;1;t;f;f;2794;391acb2f-3c55-4e3a-8d54-cd9a133af6d3",
+			"0;7204;1;f;f;f;2795;dc11afec-4321-405f-8d41-e60751cf6d2b",
+			"0;7203;1;t;f;f;2796;e0fef7eb-5a39-4748-92a0-86afac445006",
+			"0;7202;1;f;f;f;2797;200374e8-ebbd-4133-8f04-94c32535b459",
+			"0;7201;1;t;f;f;2798;57e4d611-4163-4c20-9a61-1b8134aa7e2a",
+			"0;7200;1;f;f;f;2799;6e49a126-ddf5-418b-8a5f-2039a1dc43b9",
+			"0;7199;1;t;f;f;2800;80050438-efca-4069-b040-687e850ccb82",
+			"0;7198;1;f;f;f;2801;fc3fa2e0-f4f8-4170-98f9-f77cddc4a135",
+			"0;7197;1;t;f;f;2802;27ed1bc1-5f8c-44f2-8d68-812699f6a82f",
+			"0;7196;1;f;f;f;2803;6b21cba4-7f2a-4538-a351-4c92ac0ad7e0",
+			"0;7195;1;t;f;f;2804;fe87e479-5c18-4d0e-8229-d96068f4d807",
+			"0;7194;1;f;f;f;2805;3a98a1bd-c70c-4125-8726-700389b12650",
+			"0;7193;1;t;f;f;2806;f2cba162-f44e-4be9-b021-c75066db841f",
+			"0;7192;1;f;f;f;2807;f820a08f-bc01-473c-9fcd-539046b378dc",
+			"0;7191;1;t;f;f;2808;fbda37ff-58ae-4870-aacc-fce68d3e4e92",
+			"0;7190;1;f;f;f;2809;4a704009-84ab-4f7b-ab91-5839d3a3e51a",
+			"0;7189;1;t;f;f;2810;e7b04733-ba37-461b-b046-0eb306db679f",
+			"0;7188;1;f;f;f;2811;89baf664-c394-4de1-a65c-55ae7327ad35",
+			"0;7187;1;t;f;f;2812;7c2f6f75-2d51-4b33-9719-9bd5d1f1c393",
+			"0;7186;1;f;f;f;2813;ce2fb9dc-cd3d-47ca-b5c8-c21710698b4f",
+			"0;7185;1;t;f;f;2814;00e535b4-102c-47e3-81e0-429b978f352e",
+			"0;7184;1;f;f;f;2815;eb4e8f44-2f0d-40b2-b2c6-914b060ecd3d",
+			"0;7183;1;t;f;f;2816;c4426513-e768-4655-8f37-1b786288be69",
+			"0;7182;1;f;f;f;2817;e5f4aed4-623a-4338-a193-5257ccd446ec",
+			"0;7181;1;t;f;f;2818;23040961-58ee-4ab9-812c-3f758edd56c6",
+			"0;7180;1;f;f;f;2819;3edfdf06-e882-48fd-827d-b67ce32d66f3",
+			"0;7179;1;t;f;f;2820;1fb94c68-c619-4a95-8aaf-667867da3974",
+			"0;7178;1;f;f;f;2821;52c20558-78ba-4e2b-baca-4c7871e484e7",
+			"0;7177;1;t;f;f;2822;964123a4-56e2-4ca3-9e81-08db3cf91e76",
+			"0;7176;1;f;f;f;2823;baf35f37-7884-4f97-bc1a-255d8010868a",
+			"0;7175;1;t;f;f;2824;84425026-9ff0-45ba-974a-8765522bc759",
+			"0;7174;1;f;f;f;2825;8d7533f2-abdb-4551-88fd-851bd90ed5d4",
+			"0;7173;1;t;f;f;2826;a8238007-0ba3-40a5-ac81-0020fbc2e8e7",
+			"0;7172;1;f;f;f;2827;e1025f2f-8dca-46c6-8e47-1ffcf39de7fa",
+			"0;7171;1;t;f;f;2828;cfca7aec-3f36-4148-bf8b-158874eb68f3",
+			"0;7170;1;f;f;f;2829;e3ea238b-b0a1-473e-b87f-6b99d92f79f4",
+			"0;7169;1;t;f;f;2830;2b8e54f7-be92-4a2a-927c-8e3a37eca17e",
+			"0;7168;1;f;f;f;2831;72b77415-6ca3-4448-a0af-53c1c35af0a5",
+			"0;7167;1;t;f;f;2832;54813edd-f31a-493b-bc7a-d8dd82d2e4ff",
+			"0;7166;1;f;f;f;2833;089ea335-73b1-4fc5-b68a-2b4ecb8ca96c",
+			"0;7165;1;t;f;f;2834;41bf1466-10d4-4712-bae9-ca483aa45414",
+			"0;7164;1;f;f;f;2835;ad357011-0b63-40d9-adc0-a5c15e1ca519",
+			"0;7163;1;t;f;f;2836;d1e1adeb-e23a-4c5b-86ee-5b6aca4de16e",
+			"0;7162;1;t;f;f;2837;15a41702-5d2f-410b-91ce-6b187d0e0087",
+			"0;7161;1;f;f;f;2838;6bd13122-9d1e-42da-bbd2-e168d30d67e8",
+			"0;7160;1;f;f;f;2839;5163efd6-dc80-4608-803e-867efcf0d73b",
+			"0;7159;1;t;f;f;2840;aad981a3-7b27-4813-9b33-8f0c9d977644",
+			"0;7158;1;t;f;f;2841;d406ef74-cd1a-46ab-9181-678e0bce941d",
+			"0;7157;1;f;f;f;2842;3f061175-47ef-488e-bd62-d5dace3fae5c",
+			"0;7156;1;f;f;f;2843;f1b842c1-b084-461d-9dc5-81390c56afce",
+			"0;7155;1;t;f;f;2844;5e743fce-21b7-46bb-b509-59fd5a8483ea",
+			"0;7154;1;t;f;f;2845;a00433f2-2928-441d-8bae-f424e48fddf0",
+			"0;7153;1;f;f;f;2846;2101d72c-7a47-4e1d-a3c4-702baa52c412",
+			"0;7152;1;f;f;f;2847;c557915a-322c-4884-ad70-35790cbcf4ed",
+			"0;7151;1;t;f;f;2848;3947f33b-f0a6-48d5-93c2-ed991ad306eb",
+			"0;7150;1;t;f;f;2849;9a24de30-2400-4b8a-b5eb-865e2c840514",
+			"0;7149;1;f;f;f;2850;b9650206-6ad4-486c-a81b-5d35e758b473",
+			"0;7148;1;f;f;f;2851;518b0405-3c71-4b96-b3f7-19c1d76b0322",
+			"0;7147;1;t;f;f;2852;d9c622e5-6503-4241-9c3d-80bb51a85e9a",
+			"0;7146;1;t;f;f;2853;05619386-6070-4014-9eae-0a863926b091",
+			"0;7145;1;f;f;f;2854;954d31e0-6bce-49a2-9e1f-9d6aec2bb727",
+			"0;7144;1;f;f;f;2855;5e6f2671-b506-450c-b713-2c16eb4bd4ad",
+			"0;7143;1;t;f;f;2856;0f71544b-0387-4c49-9c18-4e0189ae328f",
+			"0;7142;1;t;f;f;2857;8cf72c4b-1b0e-4509-b0a2-db78c05abb01",
+			"0;7141;1;f;f;f;2858;f1a44c7f-950e-4c0f-b9dd-cf6b7f5967f5",
+			"0;7140;1;f;f;f;2859;e6812c5c-af12-45b0-84b1-fd7e2dbbf819",
+			"0;7139;1;t;f;f;2860;4e11b16c-85c8-47d7-bd2c-8881d9e7a05e",
+			"0;7138;1;t;f;f;2861;fef6a615-953b-44bf-944e-280ee6ffe87a",
+			"0;7137;1;f;f;f;2862;66c06daf-2af0-427a-b532-ed168b5d140b",
+			"0;7136;1;f;f;f;2863;1a036d63-6e66-431a-a41b-30e27aa4052d",
+			"0;7135;1;t;f;f;2864;8ae02ed2-1747-434a-8c86-d172a5c51e81",
+			"0;7134;1;f;f;f;2865;b44bd04f-6d8e-4569-81e0-48a54e59a3cb",
+			"0;7133;1;t;f;f;2866;62ba571c-28b1-44f4-bc2e-dada34b71a4b",
+			"0;7132;1;f;f;f;2867;f0925639-e8c5-41ca-b7ab-5360058e4e31",
+			"0;7131;1;t;f;f;2868;1bd890f2-5cd5-404c-84c1-602cfb51f869",
+			"0;7130;1;f;f;f;2869;f1c66e6c-bb3e-4357-8781-be7243af00c8",
+			"0;7129;1;t;f;f;2870;bd43d9c9-6d17-470d-bc2e-d6f6e2b4065e",
+			"0;7128;1;f;f;f;2871;ffd27c7c-9f59-43b9-afde-6d37312f58d4",
+			"0;7127;1;t;f;f;2872;88f9d848-b53f-4423-8c66-2975540ae9b4",
+			"0;7126;1;f;f;f;2873;e5a79ad1-fc3d-4697-a8b5-4c4e2a0bc30c",
+			"0;7125;1;t;f;f;2874;37f9263b-3ca0-4128-aca4-06e9b50eb5ac",
+			"0;7124;1;f;f;f;2875;f5da7e49-8583-4493-a235-657f371ad66a",
+			"0;7123;1;t;f;f;2876;e96311d8-c5c8-4d39-abd1-6d7e2134ad54",
+			"0;7122;1;f;f;f;2877;3c4393ff-496b-4da4-8eab-d65b8b07036c",
+			"0;7121;1;t;f;f;2878;0e71db75-1b8e-4459-bb4b-fbe953a935e5",
+			"0;7120;1;f;f;f;2879;37371b8e-1d19-46ff-8368-9b747e004839",
+			"0;7119;1;t;f;f;2880;10b4308f-b946-498d-a62b-4b43e5e83a6b",
+			"0;7118;1;t;f;f;2881;a2d449ba-9652-4707-a52f-fec746e33d87",
+			"0;7117;1;f;f;f;2882;b9ade865-0a1b-414b-b28c-72cf1a10ddea",
+			"0;7116;1;f;f;f;2883;6978cb53-940e-4d44-b68e-aa5bdec78c81",
+			"0;7115;1;t;f;f;2884;230fbbc3-2666-4cd0-b11d-f9de4eb57ca1",
+			"0;7114;1;f;f;f;2885;f47e9da0-5d25-4e7a-af42-b385d4d73bf8",
+			"0;7113;1;t;f;f;2886;97497a5f-ae28-4371-bd13-a6cd0e0ac258",
+			"0;7112;1;f;f;f;2887;ba1f4cdc-8b0e-4ae6-a413-9e928d7b18bf",
+			"0;7111;1;t;f;f;2888;faa4486b-8caf-4e7a-ad25-b412eac22f9b",
+			"0;7110;1;f;f;f;2889;2495d5db-64b9-4f34-88de-9dc300657a1e",
+			"0;7109;1;t;f;f;2890;5173a4f8-e23d-486d-bed0-0b6b3354ce93",
+			"0;7108;1;f;f;f;2891;cb47a7a3-e208-4885-8858-047f95a204eb",
+			"0;7107;1;t;f;f;2892;cc8f08f7-3d72-463a-8b74-e5a4c4449d4f",
+			"0;7106;1;f;f;f;2893;aeb8c556-3f64-4b8f-94c6-0d9b5094edad",
+			"0;7105;1;t;f;f;2894;a548262c-b660-4770-830a-ca0a2b1a679a",
+			"0;7104;1;f;f;f;2895;0c394acf-1c29-4be1-b312-a0ac05c9c3bc",
+			"0;7103;1;t;f;f;2896;b73cd7af-2a26-410c-b099-29278b16c5d6",
+			"0;7102;1;f;f;f;2897;1ecba76e-ebe0-462f-a571-fb75c5618890",
+			"0;7101;1;t;f;f;2898;73766493-004d-449a-942d-f56da5997b52",
+			"0;7100;1;f;f;f;2899;d50697f8-7699-401e-9a28-bfd5fcbe1402",
+			"0;7099;1;t;f;f;2900;d36cbe6c-b0c6-41c0-b674-f3a540612a81",
+			"0;7098;1;f;f;f;2901;d08397ad-96e6-403a-ae0c-0d06623aea26",
+			"0;7097;1;t;f;f;2902;4ad3bf21-2e1d-4473-b82c-e2bb5f47c5e5",
+			"0;7096;1;f;f;f;2903;e6f49929-fcfa-4d1a-bd56-5c9fd16be080",
+			"0;7095;1;t;f;f;2904;9cd2e75f-8b79-400e-9669-02ae232c95f4",
+			"0;7094;1;f;f;f;2905;32ea053a-9297-4910-9c37-e5b4f5a974e0",
+			"0;7093;1;t;f;f;2906;bb41fe26-a876-470d-ab8a-9cadd1aa7765",
+			"0;7092;1;f;f;f;2907;f73c5ef6-2cab-41c9-93a2-76e585bf174a",
+			"0;7091;1;t;f;f;2908;3329cf2a-9f8d-4157-8487-28f6bdcd1fda",
+			"0;7090;1;f;f;f;2909;6d52593e-4114-46b2-940a-350f7f8f2888",
+			"0;7089;1;t;f;f;2910;12c74f51-9715-4d90-962f-98ca45d26f19",
+			"0;7088;1;f;f;f;2911;af02824d-da96-472f-9d81-cacb90259ebc",
+			"0;7087;1;t;f;f;2912;0f520eda-8edb-45b5-b248-474b2e6be651",
+			"0;7086;1;f;f;f;2913;b9917d87-440a-4a1c-9fcf-03847853a63c",
+			"0;7085;1;t;f;f;2914;2bb1470a-d7ad-47c6-8475-8e2c64a9388d",
+			"0;7084;1;f;f;f;2915;1399b92f-8767-44ab-a430-742ca1dd2256",
+			"0;7083;1;t;f;f;2916;6beafa56-0450-4053-a17f-0082b5940c23",
+			"0;7082;1;f;f;f;2917;92654bf8-58db-4184-8ca1-237fe546725b",
+			"0;7081;1;t;f;f;2918;cf7fd92c-b6b6-4110-8cb4-8719653fea5c",
+			"0;7080;1;t;f;f;2919;b7a84969-32d5-403a-a2c4-9599014f9b00",
+			"0;7079;1;f;f;f;2920;5e1fb4cb-70ad-4bab-bf6e-e79108694ba9",
+			"0;7078;1;f;f;f;2921;db6c7839-f268-4b93-b34e-542ed0bfcc21",
+			"0;7077;1;t;f;f;2922;fd4d952c-8456-4d8c-8175-fdee64c70ad7",
+			"0;7076;1;f;f;f;2923;b60aac14-56b7-4db7-875e-3d355decdf00",
+			"0;7075;1;t;f;f;2924;a2f6ad90-6362-4e21-a050-bef7ea46f474",
+			"0;7074;1;f;f;f;2925;477d9380-2338-4f8c-9460-34209309ce70",
+			"0;7073;1;t;f;f;2926;55bf6b0b-175d-4b7e-a820-1870be93eed8",
+			"0;7072;1;f;f;f;2927;2363059a-d7a6-43f5-b28a-c6df0af6a734",
+			"0;7071;1;t;f;f;2928;007f1dfb-e607-4dcc-ae43-846c108ca68c",
+			"0;7070;1;f;f;f;2929;e1691ff8-4304-47c8-b0a2-6a16a5e26050",
+			"0;7069;1;t;f;f;2930;63c57a76-e54d-43bc-ac8b-8c3fe82e86bd",
+			"0;7068;1;f;f;f;2931;a4b2d272-d1e8-4a56-a7f5-3624fb930bd7",
+			"0;7067;1;t;f;f;2932;a44edba3-9bf0-4dd3-9c4a-88f354e39406",
+			"0;7066;1;f;f;f;2933;7db0103c-c1bb-428b-a78f-23fc1b9e63b6",
+			"0;7065;1;t;f;f;2934;5d4f9947-5f1a-4562-bb34-afc2e71d531a",
+			"0;7064;1;f;f;f;2935;e607155c-4b36-48b2-b264-3a8b6112e5bc",
+			"0;7063;1;t;f;f;2936;65b8fd0a-d816-4438-83ea-799a20da1719",
+			"0;7062;1;f;f;f;2937;53a90bf5-09dc-4514-8657-a214ef8f374d",
+			"0;7061;1;t;f;f;2938;2ebe3a76-9f61-4651-821f-e993cdeada24",
+			"0;7060;1;f;f;f;2939;d1285a21-6dd0-41ec-82e1-afa9621b540b",
+			"0;7059;1;t;f;f;2940;485ee851-0ab5-4ee5-b3bc-c52201002325",
+			"0;7058;1;f;f;f;2941;79b298ed-de34-456a-884f-68e121d4c9cf",
+			"0;7057;1;t;f;f;2942;44366426-e07f-446a-bd6e-f640d50916c2",
+			"0;7056;1;f;f;f;2943;83136721-ebae-483d-859b-7dfe6dde2791",
+			"0;7055;1;t;f;f;2944;df183868-f082-4e60-9a20-c73f4cb371fe",
+			"0;7054;1;f;f;f;2945;3ecda82a-8266-450a-9f44-f7fb0e456be2",
+			"0;7053;1;t;f;f;2946;99609845-9129-4962-b5bb-5976c1c236b7",
+			"0;7052;1;f;f;f;2947;bddaca2f-ae68-4723-bdac-d1a4aaea6748",
+			"0;7051;1;t;f;f;2948;95dd63b9-c9a3-4a9a-b195-6d9dac433dcf",
+			"0;7050;1;f;f;f;2949;6bdcdb0c-f9ef-49c9-92b5-221b88ea80f9",
+			"0;7049;1;t;f;f;2950;7ad5da8b-a62c-4a98-ab1c-0bf05e8ce5de",
+			"0;7048;1;f;f;f;2951;39890e3c-f0aa-4845-a34b-f70ccac22b9e",
+			"0;7047;1;t;f;f;2952;419de3dd-e2b7-4b42-a7fb-e3d38abd787c",
+			"0;7046;1;f;f;f;2953;a52bfab6-371e-4ce5-953e-36c6ced1c82d",
+			"0;7045;1;t;f;f;2954;bd6f92c0-5cad-4184-8ea8-025592ebba67",
+			"0;7044;1;f;f;f;2955;6b37ac15-ea1a-4b8a-8032-f762fe00f07f",
+			"0;7043;1;t;f;f;2956;dab299c0-2dc8-40d5-a94c-fa6529fe26d1",
+			"0;7042;1;f;f;f;2957;084ad376-da96-4c9f-a4d7-9bad087da2a6",
+			"0;7041;1;t;f;f;2958;fc47ebb3-6a62-43ba-9120-76f2d3429aab",
+			"0;7040;1;f;f;f;2959;86b7f4fb-3e29-465a-b25f-cd65f2c9f40b",
+			"0;7039;1;t;f;f;2960;c77fe101-ff46-46fc-b519-78a0b9ec700f",
+			"0;7038;1;f;f;f;2961;eb5150d0-86dc-4d47-a238-b759debdf66d",
+			"0;7037;1;t;f;f;2962;b2d0064a-654a-4e24-a72e-937f1e142b5e",
+			"0;7036;1;f;f;f;2963;46fd5530-af76-4269-b07c-da80d5df099a",
+			"0;7035;1;t;f;f;2964;957cc987-07fa-4cfe-ba3e-531405ba7bfb",
+			"0;7034;1;f;f;f;2965;2319d290-6954-4779-a964-719a5d23d0e3",
+			"0;7033;1;t;f;f;2966;be775d05-31e5-4d18-9948-2cc41abe22ec",
+			"0;7032;1;f;f;f;2967;20bd4c5b-a3ff-4a81-a15e-3bf83ba8b07e",
+			"0;7031;1;t;f;f;2968;108a0849-d788-4ae8-a296-8f29f7f93538",
+			"0;7030;1;f;f;f;2969;c3348f6e-1b5f-4f44-b94e-c484ba61073f",
+			"0;7029;1;t;f;f;2970;d3347c5a-5bd3-4c1d-9370-f7cb118480ad",
+			"0;7028;1;f;f;f;2971;f5048cc0-9152-4eb6-97a6-a53a602a70d0",
+			"0;7027;1;t;f;f;2972;1fd7ad02-63b1-4751-a8a4-5c71c96c6774",
+			"0;7026;1;f;f;f;2973;d9cf0eb8-9b05-4c1f-bc20-eec8b3f3efaf",
+			"0;7025;1;t;f;f;2974;418369e5-1c69-4fe9-ad65-b4b2b6a68ef3",
+			"0;7024;1;f;f;f;2975;9eba5589-a746-440f-9865-7a0b782943e5",
+			"0;7023;1;t;f;f;2976;85328856-2af9-48ae-ad9e-74fde714aa21",
+			"0;7022;1;f;f;f;2977;2f348035-9360-47e0-a510-a9dfe1903646",
+			"0;7021;1;t;f;f;2978;91675e94-366c-4407-be0e-3c29583bbfb5",
+			"0;7020;1;f;f;f;2979;a8766c14-fb59-4db3-8ac1-4a887df155e1",
+			"0;7019;1;t;f;f;2980;b3ac4b28-f9a4-4e86-8919-1b4f024ae210",
+			"0;7018;1;f;f;f;2981;e1e7b8df-65ce-431a-9a0e-3bbc5fb30e15",
+			"0;7017;1;t;f;f;2982;bf267cc2-f828-4f37-a102-fb8bf69e278a",
+			"0;7016;1;f;f;f;2983;869460f4-c420-42f1-bc0b-934caf9bc5b9",
+			"0;7015;1;t;f;f;2984;c9a0d6e3-93dd-4844-b0bd-38a3440ee01a",
+			"0;7014;1;f;f;f;2985;4c212a9d-e61f-4927-a276-bdf4703ca8e0",
+			"0;7013;1;t;f;f;2986;d26243a3-c90b-4e21-bd27-c9fd537f3912",
+			"0;7012;1;f;f;f;2987;f3138e02-9d46-4292-b5b2-16ec7bea06ab",
+			"0;7011;1;t;f;f;2988;3fac957d-90db-4cb0-83cd-82d9d35b5c86",
+			"0;7010;1;f;f;f;2989;f69035c8-5437-454f-91fe-631c6339f132",
+			"0;7009;1;t;f;f;2990;3401807e-71fc-427c-923a-5fb9f9f48748",
+			"0;7008;1;t;f;f;2991;8f82ca83-1f4c-4bed-a09b-38d0ebecf29d",
+			"0;7007;1;f;f;f;2992;3d649531-fce5-455d-9544-318420c7718a",
+			"0;7006;1;f;f;f;2993;5f357c45-0866-4021-9688-26a0a4c63bab",
+			"0;7005;1;t;f;f;2994;02b76c55-f941-40a4-9edf-79738c88db5d",
+			"0;7004;1;f;f;f;2995;a02b9cd9-2926-4461-8845-166c68e91e90",
+			"0;7003;1;t;f;f;2996;2c747f58-1539-49d2-b781-2024fed6967e",
+			"0;7002;1;f;f;f;2997;882605d5-c3d4-4c7f-ba20-1531f9b29f78",
+			"0;7001;1;t;f;f;2998;984c185c-3d7f-4a2d-aff1-48736af79841",
+			"0;7000;1;f;f;f;2999;4d0e906c-c965-4264-aae0-738c4f55db70",
+			"0;6999;1;t;f;f;3000;1ef0f47c-041d-4e9b-b50d-73ed6ee05d2a",
+			"0;6998;1;f;f;f;3001;c4636e06-505a-48a6-be99-09798f6fcb7f",
+			"0;6997;1;t;f;f;3002;cac33164-6cc2-4a93-bb3e-e2442b60adee",
+			"0;6996;1;t;f;f;3003;bf102440-1757-4d19-aff2-9572cc53888c",
+			"0;6995;1;f;f;f;3004;7115fa90-7109-4680-afd8-0e6db7c19bd9",
+			"0;6994;1;f;f;f;3005;e8372fe9-6007-436a-804a-08ca720fda7b",
+			"0;6993;1;t;f;f;3006;c3339f4d-a8af-4885-9390-8ebe05eaefdc",
+			"0;6992;1;f;f;f;3007;df5b017b-000f-4546-b870-913d8a480e12",
+			"0;6991;1;t;f;f;3008;42705612-b6cf-4f87-86a3-7b14e03cf6cb",
+			"0;6990;1;f;f;f;3009;88185bd3-25a1-4fe2-b3c8-da381c576462",
+			"0;6989;1;t;f;f;3010;5f0632ea-586b-4820-b529-ee744e8dced9",
+			"0;6988;1;f;f;f;3011;1364c796-fcee-4cbd-9656-a1d279bb9298",
+			"0;6987;1;t;f;f;3012;e55cf9d9-0bbe-4664-b227-a19b4be8999c",
+			"0;6986;1;t;f;f;3013;5252e79b-dff2-49fa-a1f2-1cff17bbde8b",
+			"0;6985;1;f;f;f;3014;54540839-5661-46ca-9421-4091aab0d85d",
+			"0;6984;1;f;f;f;3015;fd3c8113-d1fa-4072-8818-6c17bd5221c1",
+			"0;6983;1;t;f;f;3016;6ab81d7c-9b22-4fa8-abce-541c4b1068d3",
+			"0;6982;1;f;f;f;3017;42f232de-ec5b-427f-910b-776542ff669a",
+			"0;6981;1;t;f;f;3018;4a53bd08-668f-465b-a3ef-1524ed87b247",
+			"0;6980;1;f;f;f;3019;209a63cb-bb9b-4dfd-9071-f252959420f8",
+			"0;6979;1;t;f;f;3020;30bd53f0-07b9-4787-958e-886c15bdcb06",
+			"0;6978;1;f;f;f;3021;94e433e7-c2c2-4f92-bbf6-14e1ee9f4aad",
+			"0;6977;1;t;f;f;3022;7890596e-7ab5-423d-9baa-cfe49c7de809",
+			"0;6976;1;f;f;f;3023;b4b4d929-e700-41d2-abdf-8044aa8b7b7d",
+			"0;6975;1;t;f;f;3024;5af9fc36-347e-4724-98c4-0ee245043f4e",
+			"0;6974;1;t;f;f;3025;fd9d53ab-fcea-40f5-b5a3-4bb7083a4001",
+			"0;6973;1;f;f;f;3026;ee9f9493-aa2c-47c0-9d76-adb4ba79cff4",
+			"0;6972;1;f;f;f;3027;d881e7e4-3d7d-4bef-a14c-beba8ce52283",
+			"0;6971;1;t;f;f;3028;0524ac29-3580-460f-8d5d-543d6168b290",
+			"0;6970;1;t;f;f;3029;1dd85c66-b587-4515-9d0d-d1c964bcb0df",
+			"0;6969;1;f;f;f;3030;0c626917-b405-4ed5-81be-c646ece947ac",
+			"0;6968;1;f;f;f;3031;db30031a-e549-4f49-840b-c58f7c86e79d",
+			"0;6967;1;t;f;f;3032;d506882b-3a33-4cc0-9575-585a9dfdf20e",
+			"0;6966;1;t;f;f;3033;03f983de-10f2-4865-8b43-3979699c1afc",
+			"0;6965;1;f;f;f;3034;a026eb67-1cd6-4a1d-9472-f599b5ab2dc8",
+			"0;6964;1;f;f;f;3035;ecca2437-9c5b-400d-bfee-616689039afd",
+			"0;6963;1;t;f;f;3036;e84801ae-2de6-4547-bdb1-eebc1fd52a46",
+			"0;6962;1;f;f;f;3037;22d5f54b-eaaf-4efc-a7b0-2a38dfa12d0f",
+			"0;6961;1;t;f;f;3038;7fd1af4b-1c5f-4772-a024-388cadf4fe8a",
+			"0;6960;1;f;f;f;3039;7156e9c2-cbbe-4e01-bd16-511061959f92",
+			"0;6959;1;t;f;f;3040;060558da-f1b4-4131-a106-9b020b6102fe",
+			"0;6958;1;f;f;f;3041;1ad73bc2-020e-42ea-ba44-2a9444cb5c93",
+			"0;6957;1;t;f;f;3042;9e019674-0b76-4a7e-9313-7cf0fe5417b8",
+			"0;6956;1;f;f;f;3043;d304eaff-c65c-412e-8afa-f037980fae9b",
+			"0;6955;1;t;f;f;3044;2951410d-d5dd-42a9-b2bb-c9a9c68a9ea9",
+			"0;6954;1;f;f;f;3045;acd9ce64-a8e7-4fd5-8121-759765e970be",
+			"0;6953;1;t;f;f;3046;bf72ce51-d18d-4ee5-90b0-758562a37431",
+			"0;6952;1;f;f;f;3047;172dac4a-ebdd-42c9-b843-f8a6b516eb15",
+			"0;6951;1;t;f;f;3048;c76f11c2-4d64-4ebe-845f-d9f2cea2b1e5",
+			"0;6950;1;f;f;f;3049;aca35b21-b83b-42aa-bff7-8ab79333ef50",
+			"0;6949;1;t;f;f;3050;85bfdf9c-0472-4fba-b26f-cbc428fc7136",
+			"0;6948;1;f;f;f;3051;a06391ea-2dc0-40ff-aad0-35f5e5796b2e",
+			"0;6947;1;t;f;f;3052;54150295-e0e7-4224-9d9a-f578bb817841",
+			"0;6946;1;f;f;f;3053;a0d9c552-6216-4430-bafd-b3b13c6a5cd4",
+			"0;6945;1;t;f;f;3054;f1f2146c-5d64-4b09-8e34-1f933ffc36fe",
+			"0;6944;1;f;f;f;3055;f4e9a963-efef-40eb-a328-7eaf80d8ead8",
+			"0;6943;1;t;f;f;3056;54b28f15-6e16-42c5-bc48-bf8f6f7a382d",
+			"0;6942;1;f;f;f;3057;c95a0d7f-782e-42f1-8dff-a3bf69b4c22c",
+			"0;6941;1;t;f;f;3058;cd66806a-bc16-4ebf-8fb2-a8c50d733eb2",
+			"0;6940;1;f;f;f;3059;d2447aed-6096-4af1-b986-3211e89ac6b3",
+			"0;6939;1;t;f;f;3060;7a4f9a86-b0d0-4381-8a7c-2a44244cb767",
+			"0;6938;1;f;f;f;3061;21c26035-e940-42e3-a75c-673fa3065609",
+			"0;6937;1;t;f;f;3062;e003366b-ddc7-4686-8508-519f549154c8",
+			"0;6936;1;f;f;f;3063;a273735f-700f-4212-9c37-e0a5dc674b56",
+			"0;6935;1;t;f;f;3064;552bd7ea-4f56-4434-8aa3-f3624758dded",
+			"0;6934;1;f;f;f;3065;4fa8cea4-4ff4-4157-9198-e5dbf4b72e61",
+			"0;6933;1;t;f;f;3066;7f57311b-5afc-4437-b010-72bde99b1aba",
+			"0;6932;1;f;f;f;3067;356a91f3-ee77-4e2f-a307-9a770368e191",
+			"0;6931;1;t;f;f;3068;4cc65b98-fd13-4ed2-87bd-881670f0923d",
+			"0;6930;1;f;f;f;3069;ef9474a8-636e-419a-8b67-188c021b6061",
+			"0;6929;1;t;f;f;3070;7f7a7c77-5cab-4317-9a1f-982989ff2c89",
+			"0;6928;1;f;f;f;3071;51f51933-34b7-47e4-901e-0c696287747c",
+			"0;6927;1;t;f;f;3072;04a70227-23a7-49f9-b01d-7ae7716ecf56",
+			"0;6926;1;f;f;f;3073;3382d30f-8713-43ef-b3b8-dbc7bd10fd51",
+			"0;6925;1;t;f;f;3074;a885bd37-5432-4dd0-842b-44e5751f740d",
+			"0;6924;1;f;f;f;3075;7d7f7735-2c32-4fb7-bb38-9ad7e56fbbb3",
+			"0;6923;1;t;f;f;3076;9c54afd0-1ffe-41f2-b422-0cdf7b114311",
+			"0;6922;1;f;f;f;3077;c7b58b79-087f-42aa-8051-91f5fbca1981",
+			"0;6921;1;t;f;f;3078;646f48a6-bfd8-4210-8c3b-96d52972251d",
+			"0;6920;1;f;f;f;3079;1d000c49-5d62-4fb8-a079-7ec623900873",
+			"0;6919;1;t;f;f;3080;7db6dba1-0b0b-4589-9a70-2a754d367790",
+			"0;6918;1;f;f;f;3081;0cb58acf-0393-40bd-a6cc-9b9cf380eb56",
+			"0;6917;1;t;f;f;3082;42b4bb0f-4f98-4247-892d-e047d7a4b5f2",
+			"0;6916;1;f;f;f;3083;12c31169-2684-450c-bd07-8c0c0d2ff044",
+			"0;6915;1;t;f;f;3084;8bd7456c-428a-4e86-880d-96d752ac500d",
+			"0;6914;1;f;f;f;3085;43a3a5f4-5616-4b8a-a212-cabff1af5251",
+			"0;6913;1;t;f;f;3086;cd9fed43-4535-4a37-a0c3-9214c8c93cf6",
+			"0;6912;1;f;f;f;3087;b4482151-3800-4111-9b6f-b8b0dc955c51",
+			"0;6911;1;t;f;f;3088;a655b683-5cfd-4e90-839a-e53fc5fae740",
+			"0;6910;1;f;f;f;3089;fd059340-4721-452e-a844-2546f92e2fc8",
+			"0;6909;1;t;f;f;3090;33c1b55a-fa35-4177-aa4b-d40a6b4ed15c",
+			"0;6908;1;f;f;f;3091;8a5112e9-c009-410b-a709-3fd0b58b9e94",
+			"0;6907;1;t;f;f;3092;dfdecf80-a50d-492c-a867-f310b8fd3d4a",
+			"0;6906;1;f;f;f;3093;d5910038-6ea1-49ce-baff-43416e32e70d",
+			"0;6905;1;t;f;f;3094;50bfc5bb-fb69-455b-ac3d-c13c6b85e960",
+			"0;6904;1;f;f;f;3095;180c46e5-0aab-41c7-ae27-b894e7c66fbb",
+			"0;6903;1;t;f;f;3096;037007b0-b966-4f63-8589-eca3221791a3",
+			"0;6902;1;f;f;f;3097;fc01f1da-9b3d-41c5-9a8c-323c5623ad47",
+			"0;6901;1;t;f;f;3098;c7c5c0e2-6097-49e4-9533-ecf2010d8d04",
+			"0;6900;1;f;f;f;3099;5bdf6bbf-7a14-46ce-9174-14dfd4f059dd",
+			"0;6899;1;t;f;f;3100;07f5037a-319b-4d0e-b74a-3041aeaf6703",
+			"0;6898;1;f;f;f;3101;4717d164-3909-4e9b-9909-b82e395a4a9b",
+			"0;6897;1;t;f;f;3102;a2a3032e-f5bc-450c-947b-c9ffc221beb2",
+			"0;6896;1;f;f;f;3103;3ad710e7-c16b-4bdf-89b4-09a7752316d1",
+			"0;6895;1;t;f;f;3104;50a9dc63-7c87-4a63-a478-73d2100119b5",
+			"0;6894;1;f;f;f;3105;2adbcfdb-7e56-4286-809b-c6122f792462",
+			"0;6893;1;t;f;f;3106;c3ad269a-c910-4c95-a768-b0b083f29a32",
+			"0;6892;1;f;f;f;3107;ac83020b-ee7f-4f20-92c6-21bee1dec54e",
+			"0;6891;1;t;f;f;3108;66352cf4-3152-4525-bfc3-ab8069730fff",
+			"0;6890;1;f;f;f;3109;1987a1f7-ad0a-4c0f-8eaa-28da554fd958",
+			"0;6889;1;t;f;f;3110;6371aa61-5882-45f1-b23d-4021a1e16611",
+			"0;6888;1;f;f;f;3111;23e9e59c-ef9e-4aed-9496-0adf376f6150",
+			"0;6887;1;t;f;f;3112;62345aa7-3ed6-4707-9fa2-bd7003e60e0b",
+			"0;6886;1;f;f;f;3113;5722563a-8296-467a-8f0c-6a1e0c619256",
+			"0;6885;1;t;f;f;3114;d5ea0f39-dfde-4099-a569-bd5369c88cbd",
+			"0;6884;1;f;f;f;3115;7cb9bc1c-ad5f-4195-9efd-b4d3b22fd5e4",
+			"0;6883;1;t;f;f;3116;43e5be97-a90c-413c-b038-d11525937694",
+			"0;6882;1;t;f;f;3117;c4636014-7118-4b7c-968f-9547430409ed",
+			"0;6881;1;f;f;f;3118;75961e34-42a8-4229-9aee-35e6fb45398c",
+			"0;6880;1;f;f;f;3119;18fecc24-308e-4138-8c49-f9a68ea126e2",
+			"0;6879;1;t;f;f;3120;79e80c90-cd53-43a0-a630-7d3573664f7f",
+			"0;6878;1;t;f;f;3121;778de49c-afca-414f-871c-5436102d4991",
+			"0;6877;1;f;f;f;3122;957b73a3-a5df-4498-996e-58184ebf3c1f",
+			"0;6876;1;f;f;f;3123;42516b69-5e26-4713-a655-1773e8bbf7fb",
+			"0;6875;1;t;f;f;3124;841a3c7a-32e0-4c2e-846c-4161b265a02b",
+			"0;6874;1;t;f;f;3125;caf8a5fe-4639-409d-b9cd-667eca4b1524",
+			"0;6873;1;f;f;f;3126;680a88f5-5af4-4f7d-bc70-c516e26b62b7",
+			"0;6872;1;f;f;f;3127;25b68b92-744a-474a-85da-0faa12430cf2",
+			"0;6871;1;t;f;f;3128;3acfbb2f-17a3-4665-9e8f-02698b171e00",
+			"0;6870;1;f;f;f;3129;fbb27103-2e74-49ff-9d0d-295f376e7145",
+			"0;6869;1;t;f;f;3130;70cf0b01-5e3d-4d5e-b80b-930d0afe5be4",
+			"0;6868;1;f;f;f;3131;ec117ccf-85eb-4aa6-81ed-087af4691931",
+			"0;6867;1;t;f;f;3132;b1c759c6-a35b-446f-a730-86f05852c891",
+			"0;6866;1;f;f;f;3133;f5a26e07-b4fe-40cb-ac3a-3e642dac23b0",
+			"0;6865;1;t;f;f;3134;b19a0d49-9685-47d5-b048-daeece11c5a9",
+			"0;6864;1;f;f;f;3135;a89b2411-74f0-4b25-837a-b7ad10ceb62b",
+			"0;6863;1;t;f;f;3136;37b92cf5-f7b7-45f3-94f7-9c1f3aaa8baa",
+			"0;6862;1;f;f;f;3137;81cedf3e-f48c-4835-baee-5b2421a3e258",
+			"0;6861;1;t;f;f;3138;dcd626c5-231f-485a-8cb8-0f71d65825f9",
+			"0;6860;1;t;f;f;3139;cf97c139-6991-41c7-95b0-f33c5a72c29e",
+			"0;6859;1;f;f;f;3140;4984a71f-8d97-4370-b709-d86ffdec40bd",
+			"0;6858;1;f;f;f;3141;127c8d10-4178-4b84-8d3a-5c4727c57548",
+			"0;6857;1;t;f;f;3142;3b6355e0-2e3a-4753-bcd5-821f4ea33567",
+			"0;6856;1;f;f;f;3143;e78cc492-5810-456c-a628-063fa500481b",
+			"0;6855;1;t;f;f;3144;96b4c453-3609-4627-abd3-7f630880cb31",
+			"0;6854;1;f;f;f;3145;630622ee-1929-4240-9f93-3ea84d8c80e6",
+			"0;6853;1;t;f;f;3146;bc7715ff-25d2-46a6-8849-0e2a31021fbc",
+			"0;6852;1;f;f;f;3147;7695c412-b873-4ade-92a2-ba0ba9648488",
+			"0;6851;1;t;f;f;3148;2372d421-bd33-4ea7-829d-153230cd47bc",
+			"0;6850;1;f;f;f;3149;6f6b19e6-b915-4fec-b11a-80b705a8e8cf",
+			"0;6849;1;t;f;f;3150;205f360d-956d-4e0a-9472-44720f74d0f4",
+			"0;6848;1;f;f;f;3151;b443cc8b-1b1c-4929-b57b-a324feff12a5",
+			"0;6847;1;t;f;f;3152;7600f676-b80d-40b3-a056-d4a0dc3d3866",
+			"0;6846;1;f;f;f;3153;c98a170b-b5f1-4cde-b5a8-3315bcf055eb",
+			"0;6845;1;t;f;f;3154;5a869036-e9b9-49c6-82d4-78d72b09d393",
+			"0;6844;1;f;f;f;3155;2c2e41fa-b88a-486f-8503-2f7be2df4227",
+			"0;6843;1;t;f;f;3156;474504f9-3cee-4452-bfa0-2e9adc7580c4",
+			"0;6842;1;f;f;f;3157;0ba080f9-e881-423c-843f-78f4983717f2",
+			"0;6841;1;t;f;f;3158;601ce2f3-db56-409e-bf38-7e504bfda10b",
+			"0;6840;1;f;f;f;3159;ff0a1770-45c9-49c0-89cf-cd75cf5521cc",
+			"0;6839;1;t;f;f;3160;a08e632b-9339-46d0-a033-0da8d935a0ff",
+			"0;6838;1;f;f;f;3161;06ef22a4-a07e-4c3a-9624-122cffb6efcc",
+			"0;6837;1;t;f;f;3162;d364d844-12c1-4df6-9569-6fa410b04aec",
+			"0;6836;1;f;f;f;3163;91155f72-8ba6-4600-86ed-4e4a4adb931c",
+			"0;6835;1;t;f;f;3164;b783011a-8e07-4cdc-a0c4-0adadcd31aba",
+			"0;6834;1;f;f;f;3165;e53adb82-a4e6-4c5d-ad4a-58daabc688cc",
+			"0;6833;1;t;f;f;3166;e5259b42-ae30-4583-a954-ab8d92705b44",
+			"0;6832;1;f;f;f;3167;cdf0714d-95c4-4da7-892c-eb949a171313",
+			"0;6831;1;t;f;f;3168;7f2ab910-f091-4c8b-95b1-57d002eaa0b4",
+			"0;6830;1;f;f;f;3169;47738913-5f9d-4cb3-a910-3100076d8c5d",
+			"0;6829;1;t;f;f;3170;71c1461b-8809-4d37-9155-9b337848b499",
+			"0;6828;1;f;f;f;3171;48281e0f-d5ba-4d14-9e45-ae37b55f474a",
+			"0;6827;1;t;f;f;3172;bdd2a50e-9c08-41eb-b22d-9110636dc7ea",
+			"0;6826;1;t;f;f;3173;23f9ba8d-bfb4-4b2a-9af6-c9348184bb30",
+			"0;6825;1;f;f;f;3174;05ee3cdc-0645-47e6-8a76-7e63520626cd",
+			"0;6824;1;f;f;f;3175;a0f4214f-0102-4e09-b149-cbcb31ee7ef5",
+			"0;6823;1;t;f;f;3176;05c1f059-7e6a-4c1a-b087-de65ddca4fe9",
+			"0;6822;1;t;f;f;3177;e269ad7f-44b5-480f-8ca2-a3c8aac469f3",
+			"0;6821;1;f;f;f;3178;6514d0ef-d43a-40dd-b8c3-adb9ce91fbe2",
+			"0;6820;1;f;f;f;3179;7d14cd12-e738-4c95-86d4-4ea498b353bd",
+			"0;6819;1;t;f;f;3180;6cf6aa72-8dc5-441d-b63c-c2aac67290e0",
+			"0;6818;1;f;f;f;3181;489180ca-0eeb-4f64-aa42-c2fc163059c6",
+			"0;6817;1;t;f;f;3182;3d41a0f0-240b-4ab3-847a-0e756228cc02",
+			"0;6816;1;f;f;f;3183;d506c6f3-3d29-4383-b933-b904cd33d094",
+			"0;6815;1;t;f;f;3184;4f0cab8e-6fe6-44f2-bf67-1e4786c1402b",
+			"0;6814;1;f;f;f;3185;cf78763d-5564-4f9f-880e-edc3f2c34d9b",
+			"0;6813;1;t;f;f;3186;41acd40b-e3a6-4cd3-94b3-d598d0108971",
+			"0;6812;1;f;f;f;3187;dc4ad70b-88b1-4c0b-9a7a-6c8bf08900b3",
+			"0;6811;1;t;f;f;3188;b297aff3-d4a0-4e9e-b675-b137532a3f57",
+			"0;6810;1;f;f;f;3189;01cdf027-e472-4197-a9cc-775f47f4fb17",
+			"0;6809;1;t;f;f;3190;448361d9-7c36-442a-90c4-25e9e6faa7a6",
+			"0;6808;1;f;f;f;3191;ca18eb16-c4c0-4683-a440-3bd4fb2f6ec0",
+			"0;6807;1;t;f;f;3192;310a4d7e-c4bc-46c2-9969-77aa6fe68f9f",
+			"0;6806;1;f;f;f;3193;185c2c36-2a13-4143-9ec3-f17d488a319d",
+			"0;6805;1;t;f;f;3194;76b138c1-85f4-42b1-89a4-1ab7930803dc",
+			"0;6804;1;f;f;f;3195;fda0d596-07a3-4f35-9e7c-fcb8e3f3396d",
+			"0;6803;1;t;f;f;3196;e35e84e5-427f-4612-8cac-03ead8613212",
+			"0;6802;1;f;f;f;3197;ee4ada29-fdbf-466d-8e01-574ec5c1449c",
+			"0;6801;1;t;f;f;3198;bf1a91c7-e48b-4687-8a79-57b1ee2f1055",
+			"0;6800;1;t;f;f;3199;44c42bbf-11e5-469c-82ac-4d1d6e087151",
+			"0;6799;1;f;f;f;3200;0cf478f1-5206-4245-9a0c-a4d446621288",
+			"0;6798;1;f;f;f;3201;ec939b7e-2c99-4a23-b7df-ab358b038d38",
+			"0;6797;1;t;f;f;3202;18b23692-b30a-438d-8bf6-237f42532266",
+			"0;6796;1;f;f;f;3203;b6171cc5-3294-48cc-b83c-100edcd09d80",
+			"0;6795;1;t;f;f;3204;53bf3665-852b-45a3-bf5d-2c49f8a8621e",
+			"0;6794;1;f;f;f;3205;995921b4-c7c4-4a06-834e-cfd4270ba1ae",
+			"0;6793;1;t;f;f;3206;524b8307-f22c-4990-90ed-ee136bf3b2b6",
+			"0;6792;1;f;f;f;3207;3c6f17a3-0eac-4fe7-8fc3-56815e076ee1",
+			"0;6791;1;t;f;f;3208;e4be72d0-ed5c-466a-bc46-124ac4e98af1",
+			"0;6790;1;f;f;f;3209;308f043a-d8b7-4d50-988f-2497cdc98c7f",
+			"0;6789;1;t;f;f;3210;f798d83a-06ed-4aa3-a069-c9e9d34e7459",
+			"0;6788;1;f;f;f;3211;a17caefa-b188-4cb5-9eec-b63d03004b90",
+			"0;6787;1;t;f;f;3212;ff016402-49e7-44a9-a821-e49eac90a4a0",
+			"0;6786;1;f;f;f;3213;457cf7e5-1e73-4f7e-a671-d25deb0452aa",
+			"0;6785;1;t;f;f;3214;e31d0ea7-b2de-439f-9dfc-5a4d48b2d405",
+			"0;6784;1;f;f;f;3215;6755a82f-308a-4315-a6c5-e3949d305c1e",
+			"0;6783;1;t;f;f;3216;0cdc3b5e-134c-44ca-b719-d4beb1ce7dd4",
+			"0;6782;1;f;f;f;3217;b2abd081-e55e-4440-9a97-aed17833653f",
+			"0;6781;1;t;f;f;3218;c7091b98-dd08-46bc-9bed-3bc3e6a68056",
+			"0;6780;1;f;f;f;3219;21ecede1-160d-457f-96ca-5fda32ac20bf",
+			"0;6779;1;t;f;f;3220;089f228a-3d0c-46c3-a451-3b4ce79a0b2a",
+			"0;6778;1;f;f;f;3221;c2ae9d69-704b-4868-a029-b8965793e370",
+			"0;6777;1;t;f;f;3222;3f7b4b55-5894-456d-bf2a-c05644841ad2",
+			"0;6776;1;f;f;f;3223;bda64453-f36a-4a68-8f37-a95c6db1676c",
+			"0;6775;1;t;f;f;3224;342ad596-3079-4e9c-9f31-b6a5aeb6f0f4",
+			"0;6774;1;f;f;f;3225;d32a0f99-ecc8-4956-bfbf-3e8f7ecd3c46",
+			"0;6773;1;t;f;f;3226;1ee77c13-20dd-49d8-b490-38a08e5e3026",
+			"0;6772;1;f;f;f;3227;07f59561-1461-46d7-a485-dd7e7549ade1",
+			"0;6771;1;t;f;f;3228;c5d332d3-f37f-4146-a9ac-7ad2d983cfea",
+			"0;6770;1;f;f;f;3229;e997bf52-0d1e-442f-b8fe-0a488a57e7d5",
+			"0;6769;1;t;f;f;3230;83bc983e-0d27-4aa3-8bdc-d9cfbe21af72",
+			"0;6768;1;f;f;f;3231;b2ef4272-8e61-4d30-92b5-4c3142002f4b",
+			"0;6767;1;t;f;f;3232;beca5d63-e526-49a6-95fe-1f65a5ace8ea",
+			"0;6766;1;f;f;f;3233;0ab56733-fd38-4606-a00b-604ffa832923",
+			"0;6765;1;t;f;f;3234;62e09408-73d3-491b-bd08-a50825917046",
+			"0;6764;1;f;f;f;3235;402292ed-8194-4205-b56b-61fa7f848bb8",
+			"0;6763;1;t;f;f;3236;1f8e6192-09a3-4f19-bce6-3790db31fd8b",
+			"0;6762;1;f;f;f;3237;2053d36c-4ec7-4d02-8f23-42d5b4049fa3",
+			"0;6761;1;t;f;f;3238;e6f83a00-1a53-4b14-bdf5-04f3b52ec4f8",
+			"0;6760;1;f;f;f;3239;47e47723-0b3a-479b-8dad-4fe3565bf769",
+			"0;6759;1;t;f;f;3240;26117441-992b-4160-8d9d-4c620c1b4e3e",
+			"0;6758;1;f;f;f;3241;479cace0-0302-449f-a4c6-b30627e91ca6",
+			"0;6757;1;t;f;f;3242;b6b7b2ec-81bb-4666-acf6-00c99da812d7",
+			"0;6756;1;f;f;f;3243;3e62497a-80e7-4940-b7be-69c3bf3a7e09",
+			"0;6755;1;t;f;f;3244;e4809e8e-cde4-4407-9bb8-d893fdb64bab",
+			"0;6754;1;f;f;f;3245;3729805b-3258-4390-97fb-5a79e9a2c74f",
+			"0;6753;1;t;f;f;3246;04f87534-af4d-463c-8936-5cb6dd85fe6f",
+			"0;6752;1;f;f;f;3247;94118a7b-96b4-4f5b-b730-0adb21525971",
+			"0;6751;1;t;f;f;3248;536e0782-648a-4467-b30d-96cf7aa8dd3c",
+			"0;6750;1;f;f;f;3249;b7ce0029-cb3d-4d8f-8267-d2f2706343ec",
+			"0;6749;1;t;f;f;3250;19b75110-1552-441b-887a-98fddf1fc9d2",
+			"0;6748;1;f;f;f;3251;da6ef34b-fd46-4bad-9081-f8d3b32ec542",
+			"0;6747;1;t;f;f;3252;ed10e8dd-17e0-445e-8d16-5806f184c04d",
+			"0;6746;1;f;f;f;3253;6f769929-f99f-4f75-ab0e-2df9712b8908",
+			"0;6745;1;t;f;f;3254;ea69868f-d08f-4cac-ac31-d89a289fab31",
+			"0;6744;1;f;f;f;3255;cf96a990-4929-4516-a1d3-03ca89836401",
+			"0;6743;1;t;f;f;3256;1230566d-240a-4f0f-b1e5-bf59ee8bcc99",
+			"0;6742;1;f;f;f;3257;904a39d9-0097-4fc2-9204-be8cf7104577",
+			"0;6741;1;t;f;f;3258;b615e853-8e2b-4c7b-852b-0ce4f33c8514",
+			"0;6740;1;t;f;f;3259;68cabd1e-939f-4198-b5a2-0d297c68fa19",
+			"0;6739;1;f;f;f;3260;e5bc3135-a8e8-4d97-b5aa-80b1c633da4b",
+			"0;6738;1;f;f;f;3261;1cc7d7b9-8552-42d1-b53e-2c746ae175b5",
+			"0;6737;1;t;f;f;3262;ce984044-ce4e-4274-8dfb-5db257eb1645",
+			"0;6736;1;f;f;f;3263;721624a5-2c18-447d-8e52-ee567d6e39c0",
+			"0;6735;1;t;f;f;3264;c5409e37-896f-4827-87fb-1d2b064d25c1",
+			"0;6734;1;f;f;f;3265;a74df7dd-124e-45bf-bcfa-fdaea69ed4ea",
+			"0;6733;1;t;f;f;3266;a6aa6d34-535a-4e6a-9154-190ed7ac3cc7",
+			"0;6732;1;f;f;f;3267;49d9f139-80e3-4020-b3c7-acea43b306cc",
+			"0;6731;1;t;f;f;3268;de3790f3-e4c3-428c-9083-cab1f7215b44",
+			"0;6730;1;f;f;f;3269;408b57cd-876f-45ad-87f0-0ad3308aa1ee",
+			"0;6729;1;t;f;f;3270;5ce4ab0e-f9c8-4339-b1e1-0bc7b3673848",
+			"0;6728;1;f;f;f;3271;f42c59cd-650b-4a3c-8177-bac28e98d83b",
+			"0;6727;1;t;f;f;3272;2426ca62-fa83-4682-baee-214258b1f0f8",
+			"0;6726;1;f;f;f;3273;f5d87999-d9e3-4fe5-bc0f-9c38251b2aa4",
+			"0;6725;1;t;f;f;3274;d10f2018-58fc-4e22-ba01-4a32b08273ea",
+			"0;6724;1;f;f;f;3275;ecd80384-384f-4d96-9d10-57d9cb298499",
+			"0;6723;1;t;f;f;3276;32061672-fa7b-45ac-aadf-a1c2e6f7e526",
+			"0;6722;1;f;f;f;3277;5f07661d-fcec-4ed2-b38f-78ffcf96d473",
+			"0;6721;1;t;f;f;3278;0e9446ae-3ce0-4b91-9fbe-ae6ea9f18662",
+			"0;6720;1;f;f;f;3279;d56144e6-33fb-42f7-84fd-9ba6ee26e82b",
+			"0;6719;1;t;f;f;3280;2471b876-561c-45da-953e-03039d3dc9b7",
+			"0;6718;1;f;f;f;3281;71e66964-96b2-45a0-ba11-8d748d5d79ca",
+			"0;6717;1;t;f;f;3282;b6c18184-aeb3-4484-bf87-6b53e8a70cb7",
+			"0;6716;1;f;f;f;3283;a64ce4d8-c909-4ebf-8641-30bbe956384a",
+			"0;6715;1;t;f;f;3284;33e6fd06-2a45-4268-b9fe-2963aef8a222",
+			"0;6714;1;f;f;f;3285;9b8531b1-3ec3-4f22-ae40-5b2a49413ddc",
+			"0;6713;1;t;f;f;3286;2a0a3da4-4cdb-4832-8ae0-6f56a4e76762",
+			"0;6712;1;f;f;f;3287;ba3fd4a5-0bec-4bb4-83a0-4e096fee3a9b",
+			"0;6711;1;t;f;f;3288;83d26347-7f12-4797-aecd-5f3c56964692",
+			"0;6710;1;f;f;f;3289;da99ebec-745f-4d4f-a300-7ff6fdb30148",
+			"0;6709;1;t;f;f;3290;aeba61f6-50a5-442b-8f27-3adb6023fc5e",
+			"0;6708;1;f;f;f;3291;207c26d6-2881-4658-888a-26be8b2ff7cd",
+			"0;6707;1;t;f;f;3292;c273e372-7991-4212-b5b0-c09ccfa372c8",
+			"0;6706;1;f;f;f;3293;368e16ef-1e8e-4e64-a485-ed3c426b0424",
+			"0;6705;1;t;f;f;3294;131be772-1065-4613-9d74-2aa072a9e9a9",
+			"0;6704;1;f;f;f;3295;445f3863-96f1-4902-b6d2-e4cf3c1d27eb",
+			"0;6703;1;t;f;f;3296;2ee39cb8-5646-44b9-9ace-b3df11d1f0ed",
+			"0;6702;1;f;f;f;3297;63f248d9-b53a-4f99-a13c-4a7e56a61630",
+			"0;6701;1;t;f;f;3298;7d51d2ba-e5f1-4164-9e7e-8402d9d4d814",
+			"0;6700;1;f;f;f;3299;4889d8fa-7677-4029-918d-28e73887fbcf",
+			"0;6699;1;t;f;f;3300;ae0f2494-0303-4704-be93-bec413352ac0",
+			"0;6698;1;f;f;f;3301;6375ef6c-0f95-493a-9219-32c376dc3b15",
+			"0;6697;1;t;f;f;3302;8313289d-ffa2-4e03-b41c-6c4d6b6262b3",
+			"0;6696;1;f;f;f;3303;ca1b22a6-73d3-47fc-8107-f1f8bf79221a",
+			"0;6695;1;t;f;f;3304;c36618c9-d163-4a1e-b1d9-7b5ed1cd8452",
+			"0;6694;1;f;f;f;3305;c78d2cda-0ae7-4fa7-89cd-66f2a1c97ddf",
+			"0;6693;1;t;f;f;3306;915038bc-52c5-48e7-ba8d-e48502a65de5",
+			"0;6692;1;f;f;f;3307;e4fd45e0-521c-4dcc-8de1-fa2a8a22d4e5",
+			"0;6691;1;t;f;f;3308;b0bbea4d-5bdb-446e-8260-03c82f1ea652",
+			"0;6690;1;t;f;f;3309;a2946b8d-afa4-46ed-9ae3-fcaa1ace0de9",
+			"0;6689;1;f;f;f;3310;ad802582-9b3b-4f3b-ae89-ef3f8ff20cfa",
+			"0;6688;1;f;f;f;3311;85322f19-cd33-4c1d-98c6-c3e34bf73dc6",
+			"0;6687;1;t;f;f;3312;440a410e-fc21-45ce-8582-d31533ca28b1",
+			"0;6686;1;f;f;f;3313;20ac145a-5180-479c-b030-3dd9fa149353",
+			"0;6685;1;t;f;f;3314;72c51d8b-bf44-4042-941f-48e55ee0e8f9",
+			"0;6684;1;f;f;f;3315;b27ffb47-c623-474e-86b2-487ee8ff1650",
+			"0;6683;1;t;f;f;3316;d7d53709-e901-47ac-a215-e8d687f266b0",
+			"0;6682;1;f;f;f;3317;e6f7a46d-3203-4e32-813c-373f202d8eec",
+			"0;6681;1;t;f;f;3318;b3989a60-e144-4fb7-aee0-1d9b415bf4c3",
+			"0;6680;1;f;f;f;3319;a3750423-9e49-4c61-aeb9-57a9f401f2ac",
+			"0;6679;1;t;f;f;3320;57179dc7-d68f-4207-ac25-85bb000e007b",
+			"0;6678;1;f;f;f;3321;5abacb06-f97d-4c29-96b2-03f3544c7cb6",
+			"0;6677;1;t;f;f;3322;390ee69c-980e-4d13-b77a-128cd0e84cf9",
+			"0;6676;1;f;f;f;3323;364598ef-4a4f-43c0-9bb5-455718efdd86",
+			"0;6675;1;t;f;f;3324;0d0d6ce7-591f-4410-a5cd-a99706cd4917",
+			"0;6674;1;f;f;f;3325;5c2bef13-dc77-413c-ba73-023bd8b8d050",
+			"0;6673;1;t;f;f;3326;f2ac7e28-c12d-4338-a28e-b98769f7b10f",
+			"0;6672;1;f;f;f;3327;98c55e45-9404-4a81-a0cc-fdeacf517a6f",
+			"0;6671;1;t;f;f;3328;1d70d5ea-1294-42d5-b837-267a86d9602b",
+			"0;6670;1;f;f;f;3329;734367ef-1917-4fff-94b6-2d480fa1a87f",
+			"0;6669;1;t;f;f;3330;138ee4ae-5aca-42d2-a291-be15d3a96579",
+			"0;6668;1;t;f;f;3331;0df3ae2e-3736-484d-af92-c79a211347ec",
+			"0;6667;1;f;f;f;3332;56184199-9072-4639-995d-f29a952c5f24",
+			"0;6666;1;f;f;f;3333;3d6b9e48-0b61-4f20-a36f-0fb8772db9f0",
+			"0;6665;1;t;f;f;3334;11f1992b-17e3-4e7e-8b41-06dc98c80a74",
+			"0;6664;1;f;f;f;3335;a0e5de03-14f8-40de-b3b8-fc187227e119",
+			"0;6663;1;t;f;f;3336;e3481f6e-d689-4464-bcbc-227a88426b3d",
+			"0;6662;1;f;f;f;3337;3bc45185-6d5f-4b2d-8938-579ea4997db4",
+			"0;6661;1;t;f;f;3338;eea9d7bc-0ca7-43f5-943f-0d7662965d29",
+			"0;6660;1;f;f;f;3339;3a703137-29fb-44ea-8bd7-9830e27aceff",
+			"0;6659;1;t;f;f;3340;e0ea6539-cb76-46c0-891f-ba441a5157b1",
+			"0;6658;1;f;f;f;3341;203b9b94-d0e3-407d-a230-b61044e57a3e",
+			"0;6657;1;t;f;f;3342;f08eea45-3137-471d-8a6c-ad1d5738d8af",
+			"0;6656;1;f;f;f;3343;a4663f69-e6ca-478d-8ab7-25608f98b3e2",
+			"0;6655;1;t;f;f;3344;d0c94c76-7ff1-46e0-916a-4630b64c09ab",
+			"0;6654;1;f;f;f;3345;2a5e22c6-3608-46a3-99d2-1fc788b65996",
+			"0;6653;1;t;f;f;3346;7870e7c6-4751-442f-a25c-31880400fa15",
+			"0;6652;1;f;f;f;3347;6b9c8952-3a90-41fe-a110-1253f760ff87",
+			"0;6651;1;t;f;f;3348;777dc7e5-4671-41db-8a78-ad3bdd4adf98",
+			"0;6650;1;f;f;f;3349;071f0a23-1a2d-4bbc-9b00-2aed1c79f85c",
+			"0;6649;1;t;f;f;3350;e31d0b38-f7a6-4338-9d9e-24e44eecbc1b",
+			"0;6648;1;f;f;f;3351;3202e8a1-72a8-48e1-af9f-21a2792077f1",
+			"0;6647;1;t;f;f;3352;dced0ab9-fd80-48c2-bc64-4baad9f73652",
+			"0;6646;1;t;f;f;3353;8dfcb7a5-ed2c-4cc0-b225-864ffc8abcad",
+			"0;6645;1;f;f;f;3354;19cc488b-73de-45b5-ace4-d4f00fdc3980",
+			"0;6644;1;f;f;f;3355;e2205ed3-aa6d-40f2-b687-f4f284ce3ea9",
+			"0;6643;1;t;f;f;3356;66cabf7a-45b4-4a65-a92a-95bc55172e98",
+			"0;6642;1;t;f;f;3357;60e74e17-bae7-47b4-9e17-915fe70254b0",
+			"0;6641;1;f;f;f;3358;f8fdc7cb-16ba-48ab-853e-6d3a499dc531",
+			"0;6640;1;f;f;f;3359;136fb2ab-5eb9-4768-a1ad-ee8fba447382",
+			"0;6639;1;t;f;f;3360;2b12bea0-2216-4ba1-8362-5b90a2482835",
+			"0;6638;1;t;f;f;3361;f56c8736-bcb5-4e19-9b76-8f6faf5c93ae",
+			"0;6637;1;f;f;f;3362;75b18c40-a707-43d1-a287-39be3a7ee731",
+			"0;6636;1;f;f;f;3363;95501596-0f18-411a-b7b9-f97c9455db22",
+			"0;6635;1;t;f;f;3364;50520e2d-c8ea-4d05-a537-6f5347b7f718",
+			"0;6634;1;f;f;f;3365;b1b91ea0-f36b-4ecb-bdfe-b5d613d1fa10",
+			"0;6633;1;t;f;f;3366;b639e278-33ce-4c09-8b20-769a5fe9a78a",
+			"0;6632;1;f;f;f;3367;f9001158-c3c2-46ab-8d45-67c709600404",
+			"0;6631;1;t;f;f;3368;d5e55fc7-1942-4e9c-a650-b8ee1405db7b",
+			"0;6630;1;f;f;f;3369;c82bd944-a6c4-4493-886e-b8136aa3872f",
+			"0;6629;1;t;f;f;3370;470096a6-a575-4491-a4a4-0589b6c329fc",
+			"0;6628;1;f;f;f;3371;08b0a0ac-bd84-4686-88f2-9a31dfc6276f",
+			"0;6627;1;t;f;f;3372;6f6b5e42-6e73-45d6-b160-67d47f961b55",
+			"0;6626;1;f;f;f;3373;dbc4c4ff-833e-4c2a-8eef-0977c479a5af",
+			"0;6625;1;t;f;f;3374;cca4aa18-668a-468d-8a08-f08aba4f72d3",
+			"0;6624;1;t;f;f;3375;c1ec19ba-dc96-4cf0-8dd7-c55ff3d9100d",
+			"0;6623;1;f;f;f;3376;f798b438-7f33-4cce-9792-27942021d7b8",
+			"0;6622;1;f;f;f;3377;2c4f91d8-01cd-4ea4-95eb-2409f0948a32",
+			"0;6621;1;t;f;f;3378;015ed94e-c100-44f7-93f0-b8d45a2fc546",
+			"0;6620;1;f;f;f;3379;99e98e23-1a48-435b-a8cb-e07adbfcf826",
+			"0;6619;1;t;f;f;3380;dbc239e4-9562-4c57-b3c0-7e09bbcf4264",
+			"0;6618;1;f;f;f;3381;183fd38e-6efe-4c35-b6d5-3c9e0430c931",
+			"0;6617;1;t;f;f;3382;bb266f01-64cf-4d7a-868c-99bc84bc4021",
+			"0;6616;1;f;f;f;3383;92407362-2bc5-4162-a02b-4f98ddd6690e",
+			"0;6615;1;t;f;f;3384;9eef3e00-8ed9-4021-8577-b2b4d68ab934",
+			"0;6614;1;f;f;f;3385;92737f64-c352-4335-bfba-b5f35d1a95e5",
+			"0;6613;1;t;f;f;3386;6c75cc15-572e-414d-ab10-370edc1a8318",
+			"0;6612;1;t;f;f;3387;22bdcde9-c3b9-4085-8bc9-a04508e9da89",
+			"0;6611;1;f;f;f;3388;19db1d2f-180f-4fd3-868a-5d20525b480f",
+			"0;6610;1;f;f;f;3389;55072c89-77b5-4e8a-b2fe-8d1429de6e99",
+			"0;6609;1;t;f;f;3390;2e0c1f2a-c18a-45a6-bff4-e67d91fccd24",
+			"0;6608;1;f;f;f;3391;fd4d19e5-dea9-4c70-a0ba-9b94a406224f",
+			"0;6607;1;t;f;f;3392;d1370add-c568-4ecc-aadc-1913cf371876",
+			"0;6606;1;f;f;f;3393;f4b2ddb7-3987-4ada-a3e0-b9c8aab9c785",
+			"0;6605;1;t;f;f;3394;b189d548-fbdf-4e21-b236-da26242bcb69",
+			"0;6604;1;f;f;f;3395;9c7c8fcf-f7ba-4727-99d5-1b28966cb81c",
+			"0;6603;1;t;f;f;3396;233531f0-ff0e-475c-9a09-dc650c8d9e16",
+			"0;6602;1;f;f;f;3397;d0f6291f-5fc2-4d08-a9e5-bd1a7bf9e30b",
+			"0;6601;1;t;f;f;3398;a9d401f7-b5b9-44d1-8425-c0a0f5a1ba53",
+			"0;6600;1;f;f;f;3399;67c1261d-7fa4-4f60-92f6-46b325aee6a1",
+			"0;6599;1;t;f;f;3400;706989fb-c726-46c0-bdeb-00e2acfd9610",
+			"0;6598;1;f;f;f;3401;b4671d4e-813a-4576-bbcd-dff10af6cebd",
+			"0;6597;1;t;f;f;3402;ddde8bb9-2bc8-473b-a06b-f32ccf897bb4",
+			"0;6596;1;f;f;f;3403;bb766112-e2da-4bef-9b9c-2bc6b9b21e1b",
+			"0;6595;1;t;f;f;3404;f8c3ae69-a74c-4db1-ac50-29f481da1483",
+			"0;6594;1;f;f;f;3405;9bdb1050-ea4a-4aa3-abe7-bd1037cda81d",
+			"0;6593;1;t;f;f;3406;ecb13f85-95aa-4312-9c84-d8383a733f58",
+			"0;6592;1;f;f;f;3407;b6cdde2b-d3e5-4017-8712-64f51c8ab091",
+			"0;6591;1;t;f;f;3408;2c98e07a-b061-4322-a033-eb04ce6dde6b",
+			"0;6590;1;f;f;f;3409;c6f82698-22a0-49d0-951e-ec8d780a3414",
+			"0;6589;1;t;f;f;3410;69ae94d9-97cf-4a60-b52d-46b26394dc58",
+			"0;6588;1;f;f;f;3411;bea65f56-5857-429b-9460-ce5522e6441e",
+			"0;6587;1;t;f;f;3412;363ccc2e-502c-46b7-a7f0-3dd9830dedd1",
+			"0;6586;1;f;f;f;3413;3d6facf5-5622-4b55-861f-2cd96b24486c",
+			"0;6585;1;t;f;f;3414;ba99feee-5819-4d14-ae27-447f3d831c97",
+			"0;6584;1;f;f;f;3415;f2296d1c-dfea-4795-8013-2b9d4997e5af",
+			"0;6583;1;t;f;f;3416;5edc5568-62fa-4f55-a36b-2940d76c512a",
+			"0;6582;1;f;f;f;3417;f9882e54-66c4-49dc-a3b6-3ce530e331d6",
+			"0;6581;1;t;f;f;3418;c9da0bb6-71fd-4c49-95bf-706902357041",
+			"0;6580;1;f;f;f;3419;48146868-db30-4237-af43-c143f49b6270",
+			"0;6579;1;t;f;f;3420;19e66842-4540-4a0d-9476-dce1b0baecd4",
+			"0;6578;1;f;f;f;3421;6e786f04-a421-4957-bceb-6f4575f6dc41",
+			"0;6577;1;t;f;f;3422;12e8f3a4-90ad-4f39-b618-3c6cded4fc3d",
+			"0;6576;1;f;f;f;3423;a6fe04ce-7163-4320-a704-2b0f9753083a",
+			"0;6575;1;t;f;f;3424;5c8eb0cb-deff-42bf-a09f-034c77ea4c72",
+			"0;6574;1;f;f;f;3425;790fa581-1165-45c1-a759-8c5ffed6526e",
+			"0;6573;1;t;f;f;3426;9b05ba17-b65b-487a-9edd-6abaa32032c4",
+			"0;6572;1;f;f;f;3427;4ca3440e-98cf-4de7-8119-600f0582ab1d",
+			"0;6571;1;t;f;f;3428;938bc526-1c64-4dc7-9b57-e0c6af86c24c",
+			"0;6570;1;f;f;f;3429;b0cf435d-c472-405d-92eb-49209bcc3122",
+			"0;6569;1;t;f;f;3430;129d81d9-f5a3-4ae5-ad7a-0d06bb5695bb",
+			"0;6568;1;f;f;f;3431;660c823a-1cd7-4eae-8172-d088bb19f258",
+			"0;6567;1;t;f;f;3432;9c781f41-7a3d-46f6-a929-49ebd72f0fe3",
+			"0;6566;1;f;f;f;3433;67262ee7-8d66-405a-a12d-fe0a86a4757e",
+			"0;6565;1;t;f;f;3434;790bfc93-f6ee-4bbf-849e-eddd828c63ef",
+			"0;6564;1;f;f;f;3435;5ae72413-8ad9-4c16-835d-61b5df963792",
+			"0;6563;1;t;f;f;3436;250fe01e-4009-4604-82f0-16ba368e22d2",
+			"0;6562;1;f;f;f;3437;86fa1984-b40e-4815-ab52-c9e6b37917f0",
+			"0;6561;1;t;f;f;3438;e218d429-d268-4c20-9867-dffc660706ca",
+			"0;6560;1;f;f;f;3439;e216c1d3-9553-4047-949c-1618cd8bb8d4",
+			"0;6559;1;t;f;f;3440;c529718b-0b79-4c05-bc64-b09c0694e754",
+			"0;6558;1;f;f;f;3441;d10114dc-0cde-443a-ba8a-8baaeecece58",
+			"0;6557;1;t;f;f;3442;d4fe83a3-538e-43ad-855e-e765bbedf28d",
+			"0;6556;1;f;f;f;3443;994f0369-9d74-4666-9dca-be28a573eade",
+			"0;6555;1;t;f;f;3444;b6423d39-6fe4-4aff-bde2-4377d58eaa9a",
+			"0;6554;1;f;f;f;3445;7deb93be-40b2-49f9-b07a-d894162b927d",
+			"0;6553;1;t;f;f;3446;d0785054-a6bc-4ffb-bdc3-2bd962736ce9",
+			"0;6552;1;f;f;f;3447;15edf358-d1a6-4d48-a7b6-843de9468648",
+			"0;6551;1;t;f;f;3448;dc4be62d-649c-4f8d-92b4-a0a1c6ebe670",
+			"0;6550;1;f;f;f;3449;05276a3f-3dbb-4a05-9eed-dc7ad69f0fc9",
+			"0;6549;1;t;f;f;3450;655bc9ee-b635-4b9b-a2bb-ec255f8216d8",
+			"0;6548;1;f;f;f;3451;195cbc7f-9d36-4d8a-b2f6-90bcfabc2732",
+			"0;6547;1;t;f;f;3452;a24e82ad-5a79-4da1-8411-8d49c4e60d68",
+			"0;6546;1;f;f;f;3453;a7f22670-95d4-4f87-9769-c0a2b855352a",
+			"0;6545;1;t;f;f;3454;81284f87-f633-4873-b9b1-91d8fec7f415",
+			"0;6544;1;f;f;f;3455;25284434-b88c-4715-a05a-59ced40e4f25",
+			"0;6543;1;t;f;f;3456;4bb88488-6777-4150-958d-5266f03eab31",
+			"0;6542;1;f;f;f;3457;cfbabaaf-4b3b-4e20-9701-68b399b6b119",
+			"0;6541;1;t;f;f;3458;70e9a291-4537-47a7-a853-f3bee0b3fe62",
+			"0;6540;1;f;f;f;3459;09d0fc54-825d-4205-8522-59a1453b13bc",
+			"0;6539;1;t;f;f;3460;91077cfd-187c-4801-81ac-b306bd14998a",
+			"0;6538;1;f;f;f;3461;470da3ca-cbd7-48c9-b54a-1902cd209d61",
+			"0;6537;1;t;f;f;3462;5d6b2265-3504-4cf4-ad00-69252d09820c",
+			"0;6536;1;f;f;f;3463;07187c41-d877-4d78-80a2-e23305a8fd1c",
+			"0;6535;1;t;f;f;3464;4db0eae1-4e28-4adf-933b-1ab9cf553eda",
+			"0;6534;1;f;f;f;3465;771a5320-9b20-4153-8680-4ab6ba187181",
+			"0;6533;1;t;f;f;3466;f03e53a6-ed8c-4ec1-ba9d-899b31ab4e0c",
+			"0;6532;1;f;f;f;3467;6d2eb618-47ff-452b-965a-49a328e28354",
+			"0;6531;1;t;f;f;3468;4273841f-ffdd-4d0f-b4ec-ae3c86f5aace",
+			"0;6530;1;f;f;f;3469;e28a58dd-b15c-421f-b42a-dbd3aa5faec2",
+			"0;6529;1;t;f;f;3470;02ba6c06-1a07-49b9-a115-780b7548758a",
+			"0;6528;1;f;f;f;3471;718af78f-20e8-4192-8355-7547fe4edf63",
+			"0;6527;1;t;f;f;3472;a5e6cd38-dc5f-41b5-827e-b8ce0c549fd1",
+			"0;6526;1;f;f;f;3473;83572c07-a9f2-425d-9dd1-f2caf6f805ac",
+			"0;6525;1;t;f;f;3474;f046497b-93b5-4998-bf8f-f2eaa1a2a9e5",
+			"0;6524;1;f;f;f;3475;5ec86285-3f07-494f-b1d8-3388f49ba045",
+			"0;6523;1;t;f;f;3476;aa9dd01d-d607-4493-a045-daec0106d2e9",
+			"0;6522;1;f;f;f;3477;1628d1a9-bd18-4447-bb31-4704b911281a",
+			"0;6521;1;t;f;f;3478;55bedbf1-2124-4aea-820a-0c7cfd45397e",
+			"0;6520;1;f;f;f;3479;d4e64dec-0a40-4d2c-b95b-fe8b2b29aff5",
+			"0;6519;1;t;f;f;3480;751568b3-2b4e-4741-bc8d-82f1c3e8a3d7",
+			"0;6518;1;f;f;f;3481;41d5d96b-e73d-4600-a1fd-9a3b9b3b4284",
+			"0;6517;1;t;f;f;3482;cf4ee611-2b75-4bbd-8d8e-624e51d9a1b0",
+			"0;6516;1;f;f;f;3483;926c4b22-f73b-4f2c-870b-8528239e7f61",
+			"0;6515;1;t;f;f;3484;905831e5-0a96-4aec-9348-66b849c5b27d",
+			"0;6514;1;f;f;f;3485;1710871f-aa66-4945-ba6c-3cb0ba9b43c5",
+			"0;6513;1;t;f;f;3486;183e012b-e1ac-4513-83a3-ef801ffac81f",
+			"0;6512;1;f;f;f;3487;6e94fa75-fdf6-4a19-94a0-d7f11eeadf15",
+			"0;6511;1;t;f;f;3488;6bc1e728-4ce3-410b-a745-9285d70f6a96",
+			"0;6510;1;f;f;f;3489;d448c489-a22f-4a2e-bef8-319eb5a14c01",
+			"0;6509;1;t;f;f;3490;257e54ac-2f3c-4d44-85b4-9f4c4a228c6a",
+			"0;6508;1;f;f;f;3491;efa911d9-0f71-4dae-a3cb-5844d5e5bcaf",
+			"0;6507;1;t;f;f;3492;189cb98b-6b9b-4084-a5fe-2e42c497990f",
+			"0;6506;1;f;f;f;3493;2f008541-5da4-4559-9125-0fe1971264f5",
+			"0;6505;1;t;f;f;3494;2b57e209-1cb2-45ba-862b-a979114b6938",
+			"0;6504;1;f;f;f;3495;d44b1a99-b4fd-467c-bbbe-38dd509a467b",
+			"0;6503;1;t;f;f;3496;98e4f7fd-f290-4ed8-b3f6-c337a42bc4f2",
+			"0;6502;1;f;f;f;3497;956b6221-b839-45b6-be99-04fa3e06535b",
+			"0;6501;1;t;f;f;3498;92444102-81fd-44e5-a4bf-540308fb4802",
+			"0;6500;1;f;f;f;3499;8339aa95-5bb2-4fa4-86a7-52fb59518248",
+			"0;6499;1;t;f;f;3500;81cb6952-9bed-4e15-ac95-e6d8426004ea",
+			"0;6498;1;f;f;f;3501;574a5aca-f798-4270-b441-6b31f27282cb",
+			"0;6497;1;t;f;f;3502;c9454449-15ea-4f1a-8268-3fdca78a9d77",
+			"0;6496;1;f;f;f;3503;dff133a2-7ad4-4eed-8948-9031d641875b",
+			"0;6495;1;t;f;f;3504;5443de2f-5959-48c7-8b79-09d9d58ed8bf",
+			"0;6494;1;f;f;f;3505;2422848e-6365-4166-b4ea-bd56194f698f",
+			"0;6493;1;t;f;f;3506;7aaf3f6a-fb5d-41e1-8b51-7a0877bcfd3d",
+			"0;6492;1;f;f;f;3507;3680ef05-6471-493b-8be6-39bd83897154",
+			"0;6491;1;t;f;f;3508;116a82a4-b692-48c5-a4f7-d817c58bae54",
+			"0;6490;1;t;f;f;3509;8f3ce937-f1c6-4b7a-b416-3b7ec8b12b06",
+			"0;6489;1;f;f;f;3510;4b5f8fdd-e2a7-4b94-9c13-efc4f6689bf5",
+			"0;6488;1;f;f;f;3511;0b551821-4675-4ddb-a871-da54ef5edf17",
+			"0;6487;1;t;f;f;3512;1048342c-e468-431e-aae6-bd6a66b4a14b",
+			"0;6486;1;t;f;f;3513;ccd07fee-f608-401b-a750-1ece3e63ea8b",
+			"0;6485;1;f;f;f;3514;28dd0172-319d-4c21-b06d-641d19937266",
+			"0;6484;1;f;f;f;3515;287685d5-865f-4b59-bc4c-97d32eaacc5e",
+			"0;6483;1;t;f;f;3516;837a052b-04f8-4fe4-94d3-2973c498ad9a",
+			"0;6482;1;t;f;f;3517;827ca399-23bc-48d4-bb64-18ef19695599",
+			"0;6481;1;f;f;f;3518;34f74ff1-faa5-4290-82dd-88a6038beee8",
+			"0;6480;1;f;f;f;3519;f44c4a05-a52c-4d20-84d8-1fa270edf828",
+			"0;6479;1;t;f;f;3520;49aa0fbd-eee9-4b5d-8133-3f5613ce8869",
+			"0;6478;1;t;f;f;3521;9cd105ff-b4cf-4906-8385-cf47229e4f3f",
+			"0;6477;1;f;f;f;3522;3e7ed3a4-6532-48f1-9ae2-942e19a0ba45",
+			"0;6476;1;f;f;f;3523;8f962923-f05c-473b-b4d3-e518f58df9a6",
+			"0;6475;1;t;f;f;3524;1529e919-c1b2-4d19-8bf3-f69db94bec59",
+			"0;6474;1;f;f;f;3525;4fa8addb-87d7-4940-aba7-f216aaf89131",
+			"0;6473;1;t;f;f;3526;c14c028f-0a7a-4b21-bf8a-08c0fb57ff49",
+			"0;6472;1;f;f;f;3527;c65f4ba7-7506-4572-bdda-91d5c8ca5cc9",
+			"0;6471;1;t;f;f;3528;258a9a8e-b0e8-4408-ab5a-25c80bf29677",
+			"0;6470;1;f;f;f;3529;92fc9ec5-61c7-4d64-8c78-d717fc791d3c",
+			"0;6469;1;t;f;f;3530;ec7b1e94-88b0-4a88-84de-412c7f1457d1",
+			"0;6468;1;f;f;f;3531;f8c5a07a-2549-49c4-a0a4-739a0e64d671",
+			"0;6467;1;t;f;f;3532;e25b24b4-e1e7-4bf7-81d4-e4c7fc00aa16",
+			"0;6466;1;t;f;f;3533;171a7ccb-729e-412b-871e-05eab01dc842",
+			"0;6465;1;f;f;f;3534;e29ffdc2-a217-40b5-a1b9-4d7034d5f448",
+			"0;6464;1;f;f;f;3535;326e27ad-2048-4bcc-ba49-98bff96d3973",
+			"0;6463;1;t;f;f;3536;0953855a-81f3-413f-8ccd-7c6d76e723f8",
+			"0;6462;1;t;f;f;3537;0f49577f-b2dd-4987-b290-9a375b7ff7bc",
+			"0;6461;1;f;f;f;3538;6790c6eb-686d-4ead-b1fb-9a740d22106c",
+			"0;6460;1;f;f;f;3539;628d7e8d-9ee8-478a-b6f5-b3bc06600cb0",
+			"0;6459;1;t;f;f;3540;9d6778b4-b30a-4de6-9be1-f62c3867e0c9",
+			"0;6458;1;f;f;f;3541;7305e850-adfd-4fb8-95cc-42352a0036db",
+			"0;6457;1;t;f;f;3542;a035f809-9c0c-4041-ac5c-65f5a5f00cf8",
+			"0;6456;1;f;f;f;3543;974faef7-be05-4475-ad86-7bbcee9572c9",
+			"0;6455;1;t;f;f;3544;7da41b4a-ede3-482c-8d13-20b6afc175bf",
+			"0;6454;1;f;f;f;3545;5b946e83-dc78-4116-8c96-c0cf01ca7c7c",
+			"0;6453;1;t;f;f;3546;49548a79-4b1a-4b19-a3aa-6fb55b9e777d",
+			"0;6452;1;f;f;f;3547;5f8fe20b-e0df-4b9a-8991-e4648f39928b",
+			"0;6451;1;t;f;f;3548;e6708b03-e9a8-49fd-af03-0c7f76f24c79",
+			"0;6450;1;f;f;f;3549;7195f6fd-7049-43e0-ab27-5419647d2004",
+			"0;6449;1;t;f;f;3550;dde14670-0ad9-41fb-9e01-08975938a76b",
+			"0;6448;1;f;f;f;3551;dbe31192-8d7b-46f2-96e1-6910b9321426",
+			"0;6447;1;t;f;f;3552;11d30ce3-e482-459e-81ee-20f2651ffbb5",
+			"0;6446;1;f;f;f;3553;2d8ed7bb-4163-40f2-b626-c72b48bd58c8",
+			"0;6445;1;t;f;f;3554;7acdedd9-5641-47ae-89b2-fa1b6fd757cd",
+			"0;6444;1;f;f;f;3555;a0f06234-0964-4370-9a02-3a37949eced2",
+			"0;6443;1;t;f;f;3556;dbb5cf13-232f-48f8-8178-bb9eed4ab538",
+			"0;6442;1;f;f;f;3557;584ec40e-d1b9-484a-ba31-c5a54a9e73b4",
+			"0;6441;1;t;f;f;3558;17b928b5-68d4-4094-8eea-9ce47ecce5b1",
+			"0;6440;1;t;f;f;3559;6340e54a-84cf-49c7-b579-7ffced254c45",
+			"0;6439;1;f;f;f;3560;5b012c70-4b44-41f3-a19b-126e294acca0",
+			"0;6438;1;f;f;f;3561;76325d6b-f572-4419-aab0-67abc230562d",
+			"0;6437;1;t;f;f;3562;43dc5107-5e8b-41fc-8867-6542318f9047",
+			"0;6436;1;t;f;f;3563;29047860-21e9-4ce0-aac4-da4c4b0593e4",
+			"0;6435;1;f;f;f;3564;2cd662c9-cb3e-4938-a3ac-fd4898cba7db",
+			"0;6434;1;f;f;f;3565;0db3e5ce-0540-4332-8c3b-79faf302f4b0",
+			"0;6433;1;t;f;f;3566;25561831-0008-4a6e-993c-3f4652279bb4",
+			"0;6432;1;f;f;f;3567;56a9241f-f39d-4c01-8321-aa9f8830e59d",
+			"0;6431;1;t;f;f;3568;ce5240b1-041d-49d1-9b7b-940c5a8a0dba",
+			"0;6430;1;f;f;f;3569;009ba705-9595-4cbc-ae95-766dd7d4c0cf",
+			"0;6429;1;t;f;f;3570;a5f79724-2745-4703-8690-ca3df52898ce",
+			"0;6428;1;f;f;f;3571;74ce06a5-7fc5-47e3-8b16-bed0c87013fb",
+			"0;6427;1;t;f;f;3572;a622a838-6272-4048-b1c2-0cb12697655b",
+			"0;6426;1;f;f;f;3573;85e8ef03-c785-4f8e-9a87-35aa9a5872a9",
+			"0;6425;1;t;f;f;3574;927b1669-4f62-4ed1-b282-8df80a7ac7dd",
+			"0;6424;1;t;f;f;3575;0a92956c-e712-4354-a9b5-c3fdbbd71a49",
+			"0;6423;1;f;f;f;3576;f4664edc-6674-49f2-a013-95c4a0a4a91f",
+			"0;6422;1;f;f;f;3577;f093f2f3-e5da-4d50-88e5-8af872c11da0",
+			"0;6421;1;t;f;f;3578;594c85cb-46eb-4844-be58-823d3036f26d",
+			"0;6420;1;f;f;f;3579;2d4a539c-0c7b-4894-b447-42ed313bb2ac",
+			"0;6419;1;t;f;f;3580;5cc01d8a-bd32-458f-a39a-9b26d7a6cc4f",
+			"0;6418;1;f;f;f;3581;20900dd4-3c8e-4057-b0cc-ea7d5b6e5790",
+			"0;6417;1;t;f;f;3582;27c99b85-0fa8-4b20-acba-3ae0beb8f9e4",
+			"0;6416;1;f;f;f;3583;90216d2e-f290-4916-b70e-29204c96c23a",
+			"0;6415;1;t;f;f;3584;f91506f4-35d3-4d00-ad98-07bf1db58ab7",
+			"0;6414;1;f;f;f;3585;c213a363-e6cb-45d1-8ab0-37d702d9f2ba",
+			"0;6413;1;t;f;f;3586;a0ebce6e-d1c2-4df6-96d9-85cfcb863e2a",
+			"0;6412;1;f;f;f;3587;34ff1079-4f14-4386-b022-bce72e0703cd",
+			"0;6411;1;t;f;f;3588;8ab9813f-5d8c-41f4-97d3-7a15eda38bc9",
+			"0;6410;1;f;f;f;3589;56e8950a-d118-42b0-a8dc-8f9886eb3255",
+			"0;6409;1;t;f;f;3590;9dc213a6-810d-4358-a62a-ae623d09f416",
+			"0;6408;1;f;f;f;3591;08c3c3b3-e05b-4728-8e07-511dd30aec80",
+			"0;6407;1;t;f;f;3592;65e3336f-e2e9-47be-a718-790c033e8907",
+			"0;6406;1;f;f;f;3593;0743a658-7a49-4900-b6d2-147ebe77992b",
+			"0;6405;1;t;f;f;3594;b4915a74-e195-4e2b-a444-e6a60679bfe9",
+			"0;6404;1;f;f;f;3595;2560f274-d526-40bd-8619-3434f17a619d",
+			"0;6403;1;t;f;f;3596;4a9af21a-28a6-4f81-8b1a-c7a8ffc64d75",
+			"0;6402;1;f;f;f;3597;9014e75d-14b1-43b5-a191-4c0fbe908f35",
+			"0;6401;1;t;f;f;3598;defdd800-3566-4398-a5c4-3d3603599ffe",
+			"0;6400;1;f;f;f;3599;36dbfd6f-4c57-4374-adb3-ebf315849607",
+			"0;6399;1;t;f;f;3600;52bedeaf-56c6-4d94-8a6f-f4097869be49",
+			"0;6398;1;f;f;f;3601;059e86e3-2fae-41fc-bf91-e3cbead9e05d",
+			"0;6397;1;t;f;f;3602;98f74db3-c676-416e-89c8-addfa876105f",
+			"0;6396;1;f;f;f;3603;dcdfe673-e045-4341-ad36-003836b695b8",
+			"0;6395;1;t;f;f;3604;22084a44-d192-4e39-b7a2-023c09b79326",
+			"0;6394;1;f;f;f;3605;ccc57871-6ea8-43fa-bf0d-7ed3fa846907",
+			"0;6393;1;t;f;f;3606;27ccce08-ab9f-42a4-8fd5-1cdeca98aef6",
+			"0;6392;1;f;f;f;3607;c1b7a2d6-3754-4370-9183-a162f7f1bf61",
+			"0;6391;1;t;f;f;3608;60340d74-d787-4869-a668-4c6d45b43628",
+			"0;6390;1;t;f;f;3609;34132316-5b2a-4bf7-8b5d-4c6b12aafadc",
+			"0;6389;1;f;f;f;3610;eb95d14a-830b-481b-b7fb-eb59c420c98c",
+			"0;6388;1;f;f;f;3611;09f719cb-0bd5-40ff-8642-088676a4459b",
+			"0;6387;1;t;f;f;3612;cb885723-e543-4e68-a3cc-64dab2a2758a",
+			"0;6386;1;f;f;f;3613;ccea32bf-cce7-4620-a8b9-b08a6d39dd34",
+			"0;6385;1;t;f;f;3614;dc39e77e-f5fe-4c2e-affb-f9de039c79ac",
+			"0;6384;1;f;f;f;3615;530913cc-624b-41db-8fb1-a7ec0812c9a5",
+			"0;6383;1;t;f;f;3616;5a56e4a9-319c-4224-969e-6d94075c6b38",
+			"0;6382;1;f;f;f;3617;94bf7d2c-b990-4631-b17c-801033f138c1",
+			"0;6381;1;t;f;f;3618;dcad618d-f82a-49f0-95ba-e48ea9371f72",
+			"0;6380;1;f;f;f;3619;46625941-4024-46bd-b6f1-dec32bd8d03f",
+			"0;6379;1;t;f;f;3620;99f159fb-b393-46db-8f2c-30f531f93a77",
+			"0;6378;1;f;f;f;3621;3a23edaa-847b-4057-a006-43217f467e20",
+			"0;6377;1;t;f;f;3622;2e043fb9-13da-439c-a5e8-a0b7b830a9f5",
+			"0;6376;1;f;f;f;3623;84e7551c-69cc-43ba-b553-161b1094a8c2",
+			"0;6375;1;t;f;f;3624;75f195c7-96de-490b-b769-d08d6e94c2ab",
+			"0;6374;1;f;f;f;3625;a57da6ae-7c51-4701-8a0e-db04a4d4c09a",
+			"0;6373;1;t;f;f;3626;c4ac825e-95b1-4b5c-bf25-4f4c6cefe8a4",
+			"0;6372;1;f;f;f;3627;87e684fc-1cb9-4ffb-ac0e-02b35df90c6d",
+			"0;6371;1;t;f;f;3628;f7fa3f80-b83f-46ab-9b3d-788a534180ab",
+			"0;6370;1;f;f;f;3629;c6f05c34-44c4-4193-a56b-1f7dd719e977",
+			"0;6369;1;t;f;f;3630;14fbe572-bfa5-48b0-bb18-2e7860d1f5e1",
+			"0;6368;1;f;f;f;3631;2f818918-7707-469e-a6f7-b9aecfdc0a43",
+			"0;6367;1;t;f;f;3632;fe9d9f51-5eba-424f-8a50-410204118af7",
+			"0;6366;1;f;f;f;3633;18eb2690-befa-4990-8313-5f837f1b911b",
+			"0;6365;1;t;f;f;3634;ceaaef5f-17f2-4672-8cec-f21c808adae8",
+			"0;6364;1;f;f;f;3635;2032cee7-fb81-4bfc-91af-c283d3cbb990",
+			"0;6363;1;t;f;f;3636;586768fa-8522-43ae-8123-d95ff80c439a",
+			"0;6362;1;f;f;f;3637;3f56fe8f-1cd6-4c36-ae9d-5c8d36ba2bd6",
+			"0;6361;1;t;f;f;3638;2d21cf63-ea01-4374-ad37-2a3adde0290b",
+			"0;6360;1;f;f;f;3639;c11d2154-152a-4cd7-9247-45a5949cc4e3",
+			"0;6359;1;t;f;f;3640;ce3bed0a-0ea3-4bfe-b2ef-8c57a03b7f0d",
+			"0;6358;1;f;f;f;3641;73066056-16e7-45ec-84cb-10f2182054b4",
+			"0;6357;1;t;f;f;3642;6dc3bfca-1886-4660-a85d-ab5d0c4647f0",
+			"0;6356;1;f;f;f;3643;78d28fa7-40d7-4255-88c0-017a8764d62b",
+			"0;6355;1;t;f;f;3644;52454089-2369-4fdc-8bc6-8b8c1c6dfdb4",
+			"0;6354;1;f;f;f;3645;9cb5e8e4-82c6-4f77-84dc-9e0b4679b837",
+			"0;6353;1;t;f;f;3646;6f4ec6b8-cc01-40ab-bcc6-6138a0cb45ad",
+			"0;6352;1;f;f;f;3647;00b09e81-7be3-4bfd-b127-cf2487067fe8",
+			"0;6351;1;t;f;f;3648;91c24964-faba-4a9a-8001-eda382ba13a3",
+			"0;6350;1;t;f;f;3649;e9090439-aef1-4f8f-8783-9c4d372f9a18",
+			"0;6349;1;f;f;f;3650;4b98b069-5484-40c9-bc02-1b7785631280",
+			"0;6348;1;f;f;f;3651;10617bd7-bf2a-4400-86b5-3b916ddb39ad",
+			"0;6347;1;t;f;f;3652;0d4a25b2-58a1-4d6c-929d-098e6798025d",
+			"0;6346;1;t;f;f;3653;ed2abb67-8202-4e48-88bb-d776c13167cf",
+			"0;6345;1;f;f;f;3654;ffc631cb-398f-4a02-8faf-4730e737a523",
+			"0;6344;1;f;f;f;3655;1fc210a6-5207-4ab7-b73b-c48c01e5ff0f",
+			"0;6343;1;t;f;f;3656;f31478f5-b845-4208-930a-a5c085732b70",
+			"0;6342;1;t;f;f;3657;38b401d9-5e56-477c-9456-abd51955636a",
+			"0;6341;1;f;f;f;3658;17ec6706-839e-486d-9e1f-715424b39b0a",
+			"0;6340;1;f;f;f;3659;9e3d698f-820a-4635-b945-337e0e70f8c0",
+			"0;6339;1;t;f;f;3660;c28a3f86-84fb-49dc-841d-54c84dc61f17",
+			"0;6338;1;t;f;f;3661;90ee78a9-2304-4729-adf2-84cefa2c3bf7",
+			"0;6337;1;f;f;f;3662;d96cf89a-0df2-4481-a68e-67ebb866d619",
+			"0;6336;1;f;f;f;3663;d6ba6833-158d-4a5e-8e6b-9ab9e64ceac2",
+			"0;6335;1;t;f;f;3664;5b25bae9-5d28-4c8b-bd33-d162ca5ae43c",
+			"0;6334;1;t;f;f;3665;3f35b302-c6ac-4bdf-9950-cb8387affca8",
+			"0;6333;1;f;f;f;3666;806ea7a1-2d8e-4b3d-9978-248dfa6422f7",
+			"0;6332;1;f;f;f;3667;4ca8de44-21c1-410a-9739-3c74ca7552a6",
+			"0;6331;1;t;f;f;3668;2d6ee2c9-f40c-42d1-864c-ccb779e9efa7",
+			"0;6330;1;t;f;f;3669;05c12160-ebd4-4e95-8a83-2650e464e923",
+			"0;6329;1;f;f;f;3670;d0d64243-dc94-4f64-98d8-e5c7eb55f25b",
+			"0;6328;1;f;f;f;3671;ec845885-f8a5-4111-bbd2-ce37704bb04d",
+			"0;6327;1;t;f;f;3672;b2be01ae-764d-45ec-8881-35caa033205e",
+			"0;6326;1;f;f;f;3673;35e0a7b0-8cc4-4275-ae78-f8490983a2b0",
+			"0;6325;1;t;f;f;3674;1a2524be-526d-49a4-afe2-3d1dcb4b60b2",
+			"0;6324;1;f;f;f;3675;bdc70559-62dc-4521-8957-3c4fd3ea12be",
+			"0;6323;1;t;f;f;3676;c2d18998-6ec6-490a-abd9-9e2c03d7c368",
+			"0;6322;1;f;f;f;3677;107057d8-beda-4e55-aa89-75f14e2a1008",
+			"0;6321;1;t;f;f;3678;7cd617cd-0cf3-4e18-898b-825ca59eb289",
+			"0;6320;1;f;f;f;3679;3e14f82a-eb9d-40ea-b064-7d0ff2b0bbad",
+			"0;6319;1;t;f;f;3680;17b86ffe-b6b9-422a-a0e0-7461d91667ce",
+			"0;6318;1;f;f;f;3681;0da02b15-c1f9-438c-a53e-08c61461bafb",
+			"0;6317;1;t;f;f;3682;0bc18a7e-6a91-4170-a764-e4011dac8106",
+			"0;6316;1;f;f;f;3683;6ad276d8-9038-4db4-81fd-fcbae0154164",
+			"0;6315;1;t;f;f;3684;5c0e6e67-e13e-4ecc-84ae-2e82e38e13be",
+			"0;6314;1;f;f;f;3685;5c800f95-c062-40d1-8930-3807d7134b14",
+			"0;6313;1;t;f;f;3686;28d5ced1-4c18-48dd-ac41-504886c06071",
+			"0;6312;1;f;f;f;3687;3a8c7932-0c7d-49e6-9ad8-4c642a94ed52",
+			"0;6311;1;t;f;f;3688;aad9e284-470f-4ac7-88f2-e310038fa526",
+			"0;6310;1;f;f;f;3689;b16e7181-6628-47ea-9c4b-fee045e9fdaf",
+			"0;6309;1;t;f;f;3690;a75a2a47-a0dd-4552-8540-14d1abefc84d",
+			"0;6308;1;f;f;f;3691;49fe016b-3afb-4868-9d2e-61bde51e3e65",
+			"0;6307;1;t;f;f;3692;28f0c0d7-f92a-4b5c-a86d-259c84bbc515",
+			"0;6306;1;f;f;f;3693;e1318348-c7f0-4890-94bf-a4c8bdc34360",
+			"0;6305;1;t;f;f;3694;d8c504d5-7190-44e7-90e9-b2dc2a2d082f",
+			"0;6304;1;f;f;f;3695;3db50f74-05ec-4807-a33f-ea3a69b6ff12",
+			"0;6303;1;t;f;f;3696;365ecdd8-274e-4c43-8e5b-5a8980d2f6a7",
+			"0;6302;1;f;f;f;3697;81335f7b-8914-4c96-b1fa-92345db2b0ce",
+			"0;6301;1;t;f;f;3698;32078048-9d23-44e3-9e8f-d3fde4a15c73",
+			"0;6300;1;f;f;f;3699;3048128b-1d85-4db0-aaea-4d29ade0163b",
+			"0;6299;1;t;f;f;3700;15bb988f-e579-4217-bb23-93b730ab1a87",
+			"0;6298;1;f;f;f;3701;fb5691ae-0b21-4793-94da-0a7a4e4a25da",
+			"0;6297;1;t;f;f;3702;b95fab28-0cb2-418f-a83e-c5383925da71",
+			"0;6296;1;f;f;f;3703;7d242592-0a6d-49ea-8b5c-8b5ae16e35bf",
+			"0;6295;1;t;f;f;3704;c050d231-bdc2-4002-85af-10b93d89df98",
+			"0;6294;1;t;f;f;3705;cb9e7dbc-d08b-4367-b582-9ca72eb780dd",
+			"0;6293;1;f;f;f;3706;165b0287-09cd-4079-b7c8-e57a7d990c78",
+			"0;6292;1;f;f;f;3707;96bfa1b5-6402-41d3-a4d9-30bcdda16fd8",
+			"0;6291;1;t;f;f;3708;6ed7a2d8-1e69-4658-a8d4-21839b77e251",
+			"0;6290;1;t;f;f;3709;9b732cff-c005-415c-9835-3d2802311f8b",
+			"0;6289;1;f;f;f;3710;cfc6cd29-6ab0-4ce6-8fd0-1a835b268dc6",
+			"0;6288;1;f;f;f;3711;3e72b444-ebaf-4e55-983a-eee9b9722229",
+			"0;6287;1;t;f;f;3712;1086343b-31d3-4d09-8e87-6ce7a1bde7ca",
+			"0;6286;1;t;f;f;3713;ad4ca89c-2c81-45d7-a984-e7e81635b452",
+			"0;6285;1;f;f;f;3714;c06fa165-b621-4a94-a83c-ff1230262308",
+			"0;6284;1;f;f;f;3715;35aa4432-9934-4f3b-a707-3a90950183f0",
+			"0;6283;1;t;f;f;3716;91145c30-47db-4bb7-837f-4ddbcfebc637",
+			"0;6282;1;t;f;f;3717;cbd49992-a934-463c-aa97-9cf5ccee366e",
+			"0;6281;1;f;f;f;3718;828a71e1-798e-4c7e-a855-2e466684cefd",
+			"0;6280;1;f;f;f;3719;0e246730-bb96-4205-ae51-569795fe7f20",
+			"0;6279;1;t;f;f;3720;4144e0aa-16a8-4e27-93f9-8ddb13bd96de",
+			"0;6278;1;f;f;f;3721;91918570-4d45-4fe2-b286-10cd7a078db4",
+			"0;6277;1;t;f;f;3722;40f1afe7-6fae-4f51-93df-89deafcf7184",
+			"0;6276;1;f;f;f;3723;3a8d9cd2-569e-4d97-ac2e-49a1a13c93e1",
+			"0;6275;1;t;f;f;3724;b029d827-1945-4742-8ac2-43adeb63bf1c",
+			"0;6274;1;f;f;f;3725;4bb2ffb5-ee99-4b75-bfa1-633624d5951d",
+			"0;6273;1;t;f;f;3726;032e31aa-8301-4ad0-8a65-6ffa0c0f26e6",
+			"0;6272;1;f;f;f;3727;364a3734-c323-45b1-8361-f03c8feea2c1",
+			"0;6271;1;t;f;f;3728;ae311e33-e2a9-4f3b-b9b0-7db5bfc9beb0",
+			"0;6270;1;f;f;f;3729;108241ea-039a-475b-a98a-1d053e71b22f",
+			"0;6269;1;t;f;f;3730;1abfec37-7fa2-4b0a-b0fe-0c255c069346",
+			"0;6268;1;f;f;f;3731;57c49c23-8b16-40bf-98f6-ec6aa7b7cc58",
+			"0;6267;1;t;f;f;3732;5e54bcb9-ae56-414e-8b50-12a0cbc6569a",
+			"0;6266;1;f;f;f;3733;4a0a1594-8434-4c39-8124-c7f1244dfd23",
+			"0;6265;1;t;f;f;3734;e4223ddb-925a-4795-bd85-cfc09c66653f",
+			"0;6264;1;f;f;f;3735;47c9a0f8-a35c-4146-9c28-9b12985109d1",
+			"0;6263;1;t;f;f;3736;6f950eff-51ba-446d-bac0-6a0f64724332",
+			"0;6262;1;f;f;f;3737;f3ed2262-57b1-4d3c-82ff-35fae0032a99",
+			"0;6261;1;t;f;f;3738;b7c9a39a-3ac0-4800-8809-a7b55ee75c00",
+			"0;6260;1;f;f;f;3739;5ffd8c1a-4280-4cba-b951-031f5b26a965",
+			"0;6259;1;t;f;f;3740;c3552aa2-1e11-4d91-a6bd-9154ac9f3f56",
+			"0;6258;1;t;f;f;3741;e68c6edb-e7ae-48ea-bfe7-06d5bbc6e5d7",
+			"0;6257;1;f;f;f;3742;b862234d-88f2-4750-993c-24d669c7f3a5",
+			"0;6256;1;f;f;f;3743;21007093-4fe8-44a3-a516-60c2d988b12f",
+			"0;6255;1;t;f;f;3744;9ccd8769-2314-45b3-b49f-eed58b702ab5",
+			"0;6254;1;f;f;f;3745;7798310b-8af7-47cc-b645-f6b62706ca7b",
+			"0;6253;1;t;f;f;3746;47587f1d-866b-4e03-9efa-36cdb6439041",
+			"0;6252;1;f;f;f;3747;27aed61b-49bc-462d-bf0a-229b367d557c",
+			"0;6251;1;t;f;f;3748;53255f82-8b5d-4abe-ab9c-435601123670",
+			"0;6250;1;f;f;f;3749;4f7602fc-dc9e-4b0e-ab66-c9687ea59650",
+			"0;6249;1;t;f;f;3750;b7897ec1-8769-4455-bd10-eb93f8b73524",
+			"0;6248;1;f;f;f;3751;2d90f39e-d479-4ef4-881b-b57bd6e2935c",
+			"0;6247;1;t;f;f;3752;2f91bd1b-7d6b-44dc-b43b-a36376636f98",
+			"0;6246;1;f;f;f;3753;da651af4-fed3-414d-96eb-33cdac2d561f",
+			"0;6245;1;t;f;f;3754;b5c7280b-b9c6-4dd8-bd2e-e37b4987b3bc",
+			"0;6244;1;f;f;f;3755;18098089-477e-4145-9733-f565e58aa775",
+			"0;6243;1;t;f;f;3756;85585b96-b5e5-4ee5-9a3d-e79896ad0565",
+			"0;6242;1;f;f;f;3757;32aa6b96-9b72-49ea-98fb-54150544d7a0",
+			"0;6241;1;t;f;f;3758;409e873c-87e1-48a6-9485-e3764e9d54d6",
+			"0;6240;1;f;f;f;3759;3bff06f6-4cb7-4083-bb29-17b293437cdd",
+			"0;6239;1;t;f;f;3760;3d5f5860-d3de-414c-af56-5410d6fbbdd3",
+			"0;6238;1;t;f;f;3761;8efa0d10-82a8-4994-9e18-e3949f97defd",
+			"0;6237;1;f;f;f;3762;3b4f6d2a-bf15-48a3-a706-9b45557bd9d6",
+			"0;6236;1;f;f;f;3763;0eecb86e-90cc-413a-a11a-8f3f7815b899",
+			"0;6235;1;t;f;f;3764;eaf248b2-ac47-422a-b1d2-92cd48ebd31d",
+			"0;6234;1;f;f;f;3765;c6587c21-1793-45db-87a8-011cf8e4eccc",
+			"0;6233;1;t;f;f;3766;87b9ce9f-1af4-433f-bdb0-317b8247df89",
+			"0;6232;1;f;f;f;3767;b3c723a3-69c4-4a7f-ba64-756a11d7884d",
+			"0;6231;1;t;f;f;3768;51c5cda1-dc6f-4f09-a135-5d3a388930e0",
+			"0;6230;1;f;f;f;3769;16797613-a1cc-4f34-b83e-bb568fa334a5",
+			"0;6229;1;t;f;f;3770;46e75ae4-c640-4597-8a72-8d51c600a1ef",
+			"0;6228;1;f;f;f;3771;9d15e4a6-d43c-4fb5-ad40-79786ce412db",
+			"0;6227;1;t;f;f;3772;736a8a00-15f3-42b2-8495-729c20d00322",
+			"0;6226;1;f;f;f;3773;5c86f99e-9a30-4fef-b7d3-cd7534d66aed",
+			"0;6225;1;t;f;f;3774;7f32ec33-bdae-487a-8bd5-de364ac4ed48",
+			"0;6224;1;f;f;f;3775;cd35d8e8-4631-4ee8-8b8f-fd9e69ed49b2",
+			"0;6223;1;t;f;f;3776;04573f31-1408-4eb7-bca6-7fe2a179d287",
+			"0;6222;1;f;f;f;3777;fc747544-9b8f-4242-968e-2441ec048d34",
+			"0;6221;1;t;f;f;3778;9340db80-51a4-42a7-8c28-289bac942188",
+			"0;6220;1;f;f;f;3779;b51fd80b-037c-476d-bccd-212f579ad9e0",
+			"0;6219;1;t;f;f;3780;cc96bc1a-3b66-4ed4-b1a0-693b6c8ee66f",
+			"0;6218;1;f;f;f;3781;27366149-1358-4642-96ab-977d09150e93",
+			"0;6217;1;t;f;f;3782;c8a8aa46-2ab5-476a-b5bf-a4d6af2775a0",
+			"0;6216;1;f;f;f;3783;5791efbf-4196-4daa-be9b-e402676a4533",
+			"0;6215;1;t;f;f;3784;fccab7c4-883a-4fa8-b948-6b30a93c36bd",
+			"0;6214;1;f;f;f;3785;3dddc528-1b1e-4427-9188-62b3e1ebfe18",
+			"0;6213;1;t;f;f;3786;0528d540-b732-48c3-8da5-d5ee11279c28",
+			"0;6212;1;f;f;f;3787;9509b875-6081-4893-a503-7b5b95ed3a43",
+			"0;6211;1;t;f;f;3788;6d9de6bb-1f26-44ba-bb57-a86986a1ba66",
+			"0;6210;1;f;f;f;3789;8025954d-21f1-4402-b35e-a6a9a565deb7",
+			"0;6209;1;t;f;f;3790;2b95671a-a0ab-4c63-b06e-51d1c98f0207",
+			"0;6208;1;f;f;f;3791;fa898a64-707e-47dd-a128-2847297f821b",
+			"0;6207;1;t;f;f;3792;30817828-98ac-4e37-8c6e-931d695de8ac",
+			"0;6206;1;f;f;f;3793;1c60ee74-7de3-4f9a-ba85-b92a26a75c1e",
+			"0;6205;1;t;f;f;3794;d7df661d-c454-472f-8799-67b7c99279f4",
+			"0;6204;1;f;f;f;3795;a15de340-326b-43eb-a809-4bef2771fd74",
+			"0;6203;1;t;f;f;3796;6d8f80c3-210d-4aa8-8599-6ed5d56f317a",
+			"0;6202;1;f;f;f;3797;829de3b4-aa06-45d2-83b8-9dc006106197",
+			"0;6201;1;t;f;f;3798;073d8fac-051e-484c-86c2-8574c256cd89",
+			"0;6200;1;f;f;f;3799;a56ce44a-31d9-4cd2-897e-e68a72b3d3ea",
+			"0;6199;1;t;f;f;3800;a13abe1d-018e-481c-b7e2-b72b5b70cb57",
+			"0;6198;1;f;f;f;3801;a18e6b37-5e64-4957-9572-c9855e0c804c",
+			"0;6197;1;t;f;f;3802;acf672b5-02aa-46bf-a865-f823618c9b3d",
+			"0;6196;1;f;f;f;3803;4e4cdc5f-93d8-46ba-a598-6d1a6ee4800b",
+			"0;6195;1;t;f;f;3804;a69ed287-df0b-4143-b881-799fe5086295",
+			"0;6194;1;f;f;f;3805;7faa6cf4-c42a-4107-90c3-c604e620e18c",
+			"0;6193;1;t;f;f;3806;3b522a30-5731-4f72-b0d7-ac66fb28a12a",
+			"0;6192;1;f;f;f;3807;12ece234-f4d3-4bcf-8677-cb8ed6354c55",
+			"0;6191;1;t;f;f;3808;d5c98503-f32b-4061-a186-af4bc7cf9ecf",
+			"0;6190;1;f;f;f;3809;6a1b11fd-5e0c-45c0-b9c3-6f62e85808a1",
+			"0;6189;1;t;f;f;3810;008ed601-1d6d-46d0-9b40-371faff82627",
+			"0;6188;1;f;f;f;3811;71500d9c-9098-4154-b478-f65447f0b8f5",
+			"0;6187;1;t;f;f;3812;1a22981d-8428-49b6-8171-33b1ba3c6685",
+			"0;6186;1;f;f;f;3813;ed4c7a2b-a853-40ae-b8df-3698e11cbd39",
+			"0;6185;1;t;f;f;3814;9c0bda42-b341-4f9e-a99c-e82389dbceb7",
+			"0;6184;1;f;f;f;3815;8013ed85-8d5c-4d21-87a2-4ddd848094e8",
+			"0;6183;1;t;f;f;3816;6caf3322-300c-48b1-9762-c64902f4a698",
+			"0;6182;1;f;f;f;3817;7d4c345e-955e-499f-b534-ad5721aca501",
+			"0;6181;1;t;f;f;3818;22e3a417-e573-45ae-b221-d1091d73c4dd",
+			"0;6180;1;f;f;f;3819;468dd78a-4c5e-43d3-a5a5-00fdbf2facd0",
+			"0;6179;1;t;f;f;3820;f0806d06-780f-48b2-80a3-5a9e1ef5393d",
+			"0;6178;1;f;f;f;3821;5ea4051a-31a7-4666-bdcd-ad1a1af5ea98",
+			"0;6177;1;t;f;f;3822;6b192bef-62eb-4794-9f5b-929bc805a402",
+			"0;6176;1;f;f;f;3823;b9352291-8f5a-4dcd-9f8a-9fb0c8a0dafe",
+			"0;6175;1;t;f;f;3824;d35e8acd-02b2-4474-8c0e-2185e78ecdf0",
+			"0;6174;1;f;f;f;3825;ce6d3a10-51a3-4f31-8ce6-8a426f02d8b0",
+			"0;6173;1;t;f;f;3826;0b45c701-6d71-4c65-87be-fa0481bdbff0",
+			"0;6172;1;f;f;f;3827;bdf9fd54-16cd-4b29-bf1d-520eeece20b3",
+			"0;6171;1;t;f;f;3828;92d21e9e-6d74-4211-abd3-fa58310e1484",
+			"0;6170;1;f;f;f;3829;04ee64ca-495a-4164-bb87-eb29770851d4",
+			"0;6169;1;t;f;f;3830;248e7961-9582-4f35-ad9a-f346c0792945",
+			"0;6168;1;f;f;f;3831;a7921d91-15ed-4531-852d-1006e4bcce90",
+			"0;6167;1;t;f;f;3832;3b6739f1-2bdd-4bb5-b16c-5e27fcb2ef00",
+			"0;6166;1;f;f;f;3833;299d9366-231f-4646-b4a8-6c2c4c83ee05",
+			"0;6165;1;t;f;f;3834;d1da48c3-829a-4aef-8dcd-21bcba179263",
+			"0;6164;1;f;f;f;3835;81773ac6-87c9-425f-8e88-ba258869be86",
+			"0;6163;1;t;f;f;3836;7b5d9f16-780f-44ce-addd-cc834d9ceeab",
+			"0;6162;1;f;f;f;3837;945bb8d6-56e5-446d-b6c6-8cb856221c06",
+			"0;6161;1;t;f;f;3838;ac728a26-29f7-4c8a-956d-ab4f5aabea32",
+			"0;6160;1;f;f;f;3839;6514eda8-8bc1-4442-8919-f3db7110ba57",
+			"0;6159;1;t;f;f;3840;6afaf2bf-e001-4ed5-a4b5-7d409c5714e2",
+			"0;6158;1;f;f;f;3841;82dca873-cf87-4ea3-9a3f-4ca9a1e1fe6d",
+			"0;6157;1;t;f;f;3842;0b861b6c-07be-4d00-a9b5-e1ef6cc72c1a",
+			"0;6156;1;f;f;f;3843;0b7c901b-6c6c-4e9d-996a-c2e22800914b",
+			"0;6155;1;t;f;f;3844;29e0ff08-6013-48d0-9050-2b556d92e68a",
+			"0;6154;1;f;f;f;3845;6835c20a-3bab-45f7-894c-331f2604e741",
+			"0;6153;1;t;f;f;3846;f3fde750-e8a6-456d-83ba-f9545d908170",
+			"0;6152;1;f;f;f;3847;672e47ec-47bc-4366-91d8-8b8376b44163",
+			"0;6151;1;t;f;f;3848;c48349b6-e40a-4dbb-b2e1-7ae0b0b1738a",
+			"0;6150;1;f;f;f;3849;f4b2d7ff-8ec8-4722-956b-16621183624d",
+			"0;6149;1;t;f;f;3850;cff42067-74d3-41ba-970c-6f7b57577478",
+			"0;6148;1;f;f;f;3851;4729c81d-339a-412f-a7ae-4272afc2b676",
+			"0;6147;1;t;f;f;3852;40f4f655-8a40-4f89-84fc-e0f3dbacb3e2",
+			"0;6146;1;f;f;f;3853;3054a816-46af-4023-9cd7-4f56aa7d8c76",
+			"0;6145;1;t;f;f;3854;6b5ab728-3d1c-4486-bf53-48c70ce86487",
+			"0;6144;1;f;f;f;3855;1158d486-0b5d-41b6-a00a-43a5b6ddc4ca",
+			"0;6143;1;t;f;f;3856;a84989d3-f334-44cb-ae2a-ea200b39de6b",
+			"0;6142;1;f;f;f;3857;e9f9cf76-2551-4738-8cfb-c9f11670f91f",
+			"0;6141;1;t;f;f;3858;7fd8ccd7-ae6f-48e5-9326-15067a668ca4",
+			"0;6140;1;f;f;f;3859;a422570e-9e11-4e50-aa3f-f5814b14dba8",
+			"0;6139;1;t;f;f;3860;81d820c9-7a47-4904-975f-ab88ec88b315",
+			"0;6138;1;f;f;f;3861;3039a79e-632a-455f-b647-6ab132bf8431",
+			"0;6137;1;t;f;f;3862;8227ae66-1ede-4b2d-befe-ab674e6cf3e8",
+			"0;6136;1;f;f;f;3863;ec73d54a-2157-4e82-b8a8-a31c3192b3cc",
+			"0;6135;1;t;f;f;3864;ffaeeeef-4556-4975-b50c-9b90ccc6da68",
+			"0;6134;1;f;f;f;3865;2786ed6f-4925-4729-bbf7-132276364c9a",
+			"0;6133;1;t;f;f;3866;bc32ba0f-5fbd-44fa-bf6a-1ad87e071cd4",
+			"0;6132;1;f;f;f;3867;dacb7b54-544e-4732-a857-34436eee19c9",
+			"0;6131;1;t;f;f;3868;c86a9aed-5c97-4fb9-8fd7-02bfdfe784d4",
+			"0;6130;1;f;f;f;3869;6846f17f-f03c-42dc-8a1d-dc4187307256",
+			"0;6129;1;t;f;f;3870;1b727671-0332-4c32-a932-45978afcda89",
+			"0;6128;1;f;f;f;3871;802c42db-3e2b-43aa-9ad2-6c6aea225684",
+			"0;6127;1;t;f;f;3872;2ef0bf17-aeb5-4569-8bef-f38af2c44142",
+			"0;6126;1;f;f;f;3873;f0a1b138-5d50-4a30-8ec7-c806f31f2fe6",
+			"0;6125;1;t;f;f;3874;95bfdbc5-bd05-4466-8ffc-4b3bdbb67902",
+			"0;6124;1;f;f;f;3875;bf794a94-6c63-48b1-a9ec-388e50bccbec",
+			"0;6123;1;t;f;f;3876;215b2dbf-9a24-4a51-b354-d2387226a4c2",
+			"0;6122;1;t;f;f;3877;d1d8b7a0-6bcc-4a59-a734-73a3acaa21cf",
+			"0;6121;1;f;f;f;3878;91ee5d78-4f67-488f-b441-c1bfec9e6bbd",
+			"0;6120;1;f;f;f;3879;5fac8ba7-8bf0-4d56-a18f-08ba1c38bdc4",
+			"0;6119;1;t;f;f;3880;75bdad05-b277-435f-85d2-f065e0fa7dd2",
+			"0;6118;1;t;f;f;3881;43de5aed-51df-4f30-a91e-6daba5fdd78a",
+			"0;6117;1;f;f;f;3882;1d46b3a4-5dfa-445c-be91-fe9aed02ba13",
+			"0;6116;1;f;f;f;3883;10379297-ef4b-4ad5-8bbc-69738f95611f",
+			"0;6115;1;t;f;f;3884;00a2b50f-8993-431f-bcba-c0e6cf9cd6d8",
+			"0;6114;1;t;f;f;3885;162b4f6d-07cf-47f0-8cf3-28e48d337477",
+			"0;6113;1;f;f;f;3886;5d61beca-da51-41e6-ab66-dd2ccc0069ec",
+			"0;6112;1;f;f;f;3887;409e8f58-e06b-4796-9472-8e54c37e00b7",
+			"0;6111;1;t;f;f;3888;3357c03a-fa9f-4280-83e7-4122b6af80b2",
+			"0;6110;1;f;f;f;3889;3b148078-90e4-43d5-a936-7a02f60b1b1b",
+			"0;6109;1;t;f;f;3890;4a9669d7-373b-4df5-a08b-8ec0d72a5520",
+			"0;6108;1;f;f;f;3891;651f8dd5-5669-46f9-b178-ad5f2cb97289",
+			"0;6107;1;t;f;f;3892;92e1d40c-25b1-4cf7-8e7f-813628e90889",
+			"0;6106;1;t;f;f;3893;a36bcacc-fb67-4de4-99d3-8faf218d568b",
+			"0;6105;1;f;f;f;3894;d5075e24-0408-4027-90d0-cf27315ddd3c",
+			"0;6104;1;f;f;f;3895;17f9be6b-881c-4ca9-9a40-cb754f989874",
+			"0;6103;1;t;f;f;3896;4e1dca4c-dc64-4231-8983-37a8c68388cd",
+			"0;6102;1;t;f;f;3897;1d009e80-deb0-4ede-9b98-b9327dc021a7",
+			"0;6101;1;f;f;f;3898;6c6a3e48-9a90-43b4-a0f5-6f4b37781d5a",
+			"0;6100;1;f;f;f;3899;e9f39969-b7d7-4b8a-b5ba-55e9d1b45e78",
+			"0;6099;1;t;f;f;3900;f4dbeef8-d8a8-4625-93c1-74cb7112a4f1",
+			"0;6098;1;f;f;f;3901;84bf24f0-5892-4de1-8080-fdc8b925577f",
+			"0;6097;1;t;f;f;3902;ec8e7c95-e96e-479e-873f-82c3ed1d0c29",
+			"0;6096;1;f;f;f;3903;e8b2e391-da9f-46fd-92b2-0b6fc8a2d56e",
+			"0;6095;1;t;f;f;3904;9e430c89-94e1-41e6-8a2a-35cec05d95fe",
+			"0;6094;1;f;f;f;3905;813c06f8-ee9b-4a17-b0f9-848cb97329e4",
+			"0;6093;1;t;f;f;3906;c643af6b-8ea0-490b-a973-8d36a6ecc850",
+			"0;6092;1;f;f;f;3907;5faf729f-16ca-4f93-ba7a-5456ca1fbdaa",
+			"0;6091;1;t;f;f;3908;d3895185-9c27-49cd-8cb1-aa756feee205",
+			"0;6090;1;f;f;f;3909;6044eee0-585f-4536-8a91-818ff05a0e03",
+			"0;6089;1;t;f;f;3910;fa77173b-6168-4b0d-bac5-5c1e564a94c1",
+			"0;6088;1;f;f;f;3911;1ae27269-64bd-44bf-a6b0-adb654acce7e",
+			"0;6087;1;t;f;f;3912;83e229a8-2f56-411a-b5df-9b29daa45802",
+			"0;6086;1;t;f;f;3913;9a80cc01-ac7b-40aa-bfa7-1e91aeb561ae",
+			"0;6085;1;f;f;f;3914;6c198b8f-c3c5-4d1f-8fdf-d0c866f8ef2d",
+			"0;6084;1;f;f;f;3915;279bd038-93a7-4e64-ad84-1e230d98c9df",
+			"0;6083;1;t;f;f;3916;97341d7c-cf4c-4c38-9308-79d94dd04aee",
+			"0;6082;1;t;f;f;3917;c101a3fd-f924-4ce4-ae8a-8ee1734027ea",
+			"0;6081;1;f;f;f;3918;41cac1f8-ea62-432b-994e-abd07241eb74",
+			"0;6080;1;f;f;f;3919;fff79c40-ddad-486a-8be9-141e861e23ea",
+			"0;6079;1;t;f;f;3920;b4a558ce-d14f-41e4-9dca-580ab71fd5d2",
+			"0;6078;1;t;f;f;3921;746ec905-5a50-4ee1-8678-1be4325dd94f",
+			"0;6077;1;f;f;f;3922;cdb6dc5d-639f-4169-ba00-474cb4f03e56",
+			"0;6076;1;f;f;f;3923;cca9b20f-7398-4120-8ce3-01efb1e5f767",
+			"0;6075;1;t;f;f;3924;54c09206-7013-4f59-9a6e-f950eae05222",
+			"0;6074;1;f;f;f;3925;408bc712-9a1a-480a-8f06-a1d473672796",
+			"0;6073;1;t;f;f;3926;e370fe65-a7e6-4e39-9e38-16677e58b57d",
+			"0;6072;1;f;f;f;3927;7af17e72-77ac-44e5-aeb6-9efa591832f9",
+			"0;6071;1;t;f;f;3928;23c2e7c5-7691-4397-bf31-a70aba6ab1f8",
+			"0;6070;1;f;f;f;3929;117cb3ed-0cab-4b88-94ee-1d12e5358b2e",
+			"0;6069;1;t;f;f;3930;ba81c9ae-354d-4ca7-bf29-2cef9f041824",
+			"0;6068;1;f;f;f;3931;4fbfeed9-37d5-4870-9e9a-bb85f9b67af3",
+			"0;6067;1;t;f;f;3932;e40c1849-5613-4cc1-9e37-1b33ede5d0cb",
+			"0;6066;1;f;f;f;3933;26f9b403-7625-42e2-86dd-c87643a90be4",
+			"0;6065;1;t;f;f;3934;3ba608ba-0ff8-4154-a445-2e87f508559c",
+			"0;6064;1;f;f;f;3935;6353bc98-049c-4391-9b5a-37680afd8ab2",
+			"0;6063;1;t;f;f;3936;479584a3-c685-41ca-bfd4-c177bbc82584",
+			"0;6062;1;f;f;f;3937;cace1925-ae76-40b8-9451-e160dabc5812",
+			"0;6061;1;t;f;f;3938;58e9e287-9e62-44c7-af32-151627c08cc9",
+			"0;6060;1;f;f;f;3939;6c537634-c558-4d39-be83-359d9458e0e6",
+			"0;6059;1;t;f;f;3940;af9b1b7a-d4e5-4f24-baa4-d088c27c7237",
+			"0;6058;1;t;f;f;3941;426e1de9-303b-4668-bb74-73c50cda3dd1",
+			"0;6057;1;f;f;f;3942;d72483ed-e69e-4810-98e5-80099662d588",
+			"0;6056;1;f;f;f;3943;45e16461-3866-4078-b043-cc1a12be6d99",
+			"0;6055;1;t;f;f;3944;72748bed-fda6-41bc-880d-71585a932c8f",
+			"0;6054;1;t;f;f;3945;c98fc8b9-eb5a-4d20-b983-839c5795ac5c",
+			"0;6053;1;f;f;f;3946;23fc9aaa-1174-43d0-8795-ef2aa8fdc011",
+			"0;6052;1;f;f;f;3947;72af1748-82c3-4f0e-abb3-31a3d318035c",
+			"0;6051;1;t;f;f;3948;a6878274-842e-407a-b588-6ee1629aef83",
+			"0;6050;1;f;f;f;3949;b3604f22-7918-4434-8be2-fcefc596f03a",
+			"0;6049;1;t;f;f;3950;5f5a84af-3cfc-45fe-811c-f52b5aac36b2",
+			"0;6048;1;f;f;f;3951;762a4c7c-4c7e-4a2a-99b0-a5f6a7a894ce",
+			"0;6047;1;t;f;f;3952;490fa6f2-5429-4414-92a6-8d8b6c26de15",
+			"0;6046;1;f;f;f;3953;4b151e7a-e58c-440c-9966-a6dedb976309",
+			"0;6045;1;t;f;f;3954;5fffcda5-071c-44b9-817e-6a25a67f6731",
+			"0;6044;1;f;f;f;3955;c0ac96b5-d5a0-4be0-99bf-9199033e4e80",
+			"0;6043;1;t;f;f;3956;bb246d16-d4ce-41c1-bd36-4dd870c72c72",
+			"0;6042;1;f;f;f;3957;81ab5f92-e73b-40b1-9c1a-7d7c49e8b472",
+			"0;6041;1;t;f;f;3958;9b7beb02-49e8-4247-a41b-a75ee0599b90",
+			"0;6040;1;f;f;f;3959;a66fecac-ee8e-419e-8ba9-80ac85e76481",
+			"0;6039;1;t;f;f;3960;5eb66fe0-5f34-493c-a737-29366aa488f0",
+			"0;6038;1;f;f;f;3961;3aa9436e-71d9-4160-b3cb-5fb6d983e785",
+			"0;6037;1;t;f;f;3962;558fd4a5-7e7c-4045-8d48-12f023d14fc5",
+			"0;6036;1;t;f;f;3963;a658ed32-cbf3-42a9-8696-354443c6156a",
+			"0;6035;1;f;f;f;3964;ef5d6877-403a-4a67-be4c-d9501ed531d6",
+			"0;6034;1;f;f;f;3965;9e4159a1-0dd6-41ae-9f9e-fa45dbb79ad8",
+			"0;6033;1;t;f;f;3966;7a82576d-e282-435d-aae8-ac23bb873666",
+			"0;6032;1;t;f;f;3967;83fe3683-8491-4225-854d-21ffe6b72515",
+			"0;6031;1;f;f;f;3968;8fd39c5c-1c69-454e-9a11-8c661491ce91",
+			"0;6030;1;f;f;f;3969;342137e7-5c59-4ba8-977a-1cc41eb904ce",
+			"0;6029;1;t;f;f;3970;7d34aa2c-c08d-4bfc-b670-412e61fd695c",
+			"0;6028;1;t;f;f;3971;3e6036bc-7268-450d-abb0-94eca86430a9",
+			"0;6027;1;f;f;f;3972;8cf86140-c697-44a8-9b55-9dcc066cdc35",
+			"0;6026;1;f;f;f;3973;4286cd16-cb76-4515-8241-6dcc6f238504",
+			"0;6025;1;t;f;f;3974;0dfe24a9-c62d-456c-9b3e-4ae79a1d7c54",
+			"0;6024;1;f;f;f;3975;05bfa0e9-87e3-4965-87f0-c490f4ea0df8",
+			"0;6023;1;t;f;f;3976;910d50f2-3af2-4414-8894-6c64ba3dad69",
+			"0;6022;1;f;f;f;3977;5a4a8a4e-9546-4aba-95ec-5a2bff5d9c9a",
+			"0;6021;1;t;f;f;3978;212294f3-aa46-425f-bf6d-1f51f75542ee",
+			"0;6020;1;f;f;f;3979;dc585ffa-1a36-4ac9-8816-c11d3b9cb62f",
+			"0;6019;1;t;f;f;3980;38b72ec7-d51e-4a5a-a070-384102e4fc02",
+			"0;6018;1;f;f;f;3981;2e06ee1c-982f-42a4-9f90-9615aab077f9",
+			"0;6017;1;t;f;f;3982;a355ee2f-9c5f-4903-9727-d378f9f83b88",
+			"0;6016;1;f;f;f;3983;f7482821-d1ab-4110-b3ba-9655b982445f",
+			"0;6015;1;t;f;f;3984;e327c931-f7dc-4d67-8f48-eba046a2dbd7",
+			"0;6014;1;f;f;f;3985;2d5cadca-4241-4a82-9491-c384e739e628",
+			"0;6013;1;t;f;f;3986;493db4a5-cb3b-45f0-ab9f-aa04e7b71787",
+			"0;6012;1;f;f;f;3987;b01fbe45-c4b7-406d-9040-d2a7413bf144",
+			"0;6011;1;t;f;f;3988;6a080dcd-f16b-442b-b69b-99480e8167b3",
+			"0;6010;1;f;f;f;3989;190483c0-d2ff-46b9-b96d-374571e81d56",
+			"0;6009;1;t;f;f;3990;a93a2ffe-cff7-42b6-917a-5c226a16b708",
+			"0;6008;1;f;f;f;3991;f954c0a4-1125-42e7-a32a-caca5502f1b3",
+			"0;6007;1;t;f;f;3992;158d2b8a-c1fc-452b-a60b-1a9feb65ac78",
+			"0;6006;1;f;f;f;3993;050edb67-036e-4eb5-a055-4577adeb0eae",
+			"0;6005;1;t;f;f;3994;bb886316-b893-4ae4-bdea-768f80019c04",
+			"0;6004;1;f;f;f;3995;1e1b15d9-2e7f-4d95-9fd3-1c3bb64700e3",
+			"0;6003;1;t;f;f;3996;825ebf20-970a-4b9c-ad5a-a9dd88d42f3f",
+			"0;6002;1;f;f;f;3997;c77846ed-823f-4830-9bf5-2343219af465",
+			"0;6001;1;t;f;f;3998;5a078be7-a9e1-4436-8957-36799865cc64",
+			"0;6000;1;f;f;f;3999;e8f9c04c-74bd-4eb9-b57e-9e111a52772b",
+			"0;5999;1;t;f;f;4000;8151b057-fac3-4d8f-85a6-bf91bcd4aa0f",
+			"0;5998;1;f;f;f;4001;b93bd24e-c015-4459-840e-f72efcfd82b4",
+			"0;5997;1;t;f;f;4002;e3b8c08e-12c1-4219-8c30-9e893432d91d",
+			"0;5996;1;f;f;f;4003;1503a8ab-e03e-454b-b764-4caeecbaa443",
+			"0;5995;1;t;f;f;4004;5531b566-d352-4c6a-a515-0492f5f88b5b",
+			"0;5994;1;f;f;f;4005;3a92bc71-bcc1-471c-9970-fd92a18a68a7",
+			"0;5993;1;t;f;f;4006;a98e9895-07cd-4fa9-8af5-e357345cee9b",
+			"0;5992;1;f;f;f;4007;4e60b7dc-ba1f-43ad-ba4a-bf422545ddd2",
+			"0;5991;1;t;f;f;4008;e74bc934-2f9d-45bb-aeab-28b7347ad240",
+			"0;5990;1;f;f;f;4009;28e434be-8119-4d8a-9b47-a7124ab1b3c2",
+			"0;5989;1;t;f;f;4010;546ebf14-7fbb-4ce7-a0b2-ef9662bb6a6c",
+			"0;5988;1;f;f;f;4011;716bb0b9-df06-48c7-91da-cdec5715b62a",
+			"0;5987;1;t;f;f;4012;0e8a04a8-cf57-46de-a29a-e46895d9015b",
+			"0;5986;1;f;f;f;4013;fbff1f84-ace4-40dc-aeb3-2729b5cb32d9",
+			"0;5985;1;t;f;f;4014;bf14aa83-1a6a-422d-9c0e-3fa0d1e2a300",
+			"0;5984;1;f;f;f;4015;d99854f3-de3b-490e-ab27-94bbdcd1b85a",
+			"0;5983;1;t;f;f;4016;4ae0ff6d-0ac5-4264-bb36-f268fe80fc54",
+			"0;5982;1;f;f;f;4017;03b6763f-e4db-424d-b08c-33f9863505c4",
+			"0;5981;1;t;f;f;4018;1a8e87d3-0c2b-4bc4-87c6-072ba7f5ba48",
+			"0;5980;1;t;f;f;4019;e91643a7-5dca-4e7b-9e18-ed1f55f441a7",
+			"0;5979;1;f;f;f;4020;38b486a1-a78b-46dd-b8d6-862a682c99de",
+			"0;5978;1;f;f;f;4021;e5f40044-8ea8-4d26-9fab-e26ca030aeab",
+			"0;5977;1;t;f;f;4022;09ca5aa6-9df3-418b-bd74-c0dcc8b85a11",
+			"0;5976;1;t;f;f;4023;6f1fd816-e1c8-4531-96fc-9e2976e6e86d",
+			"0;5975;1;f;f;f;4024;5ce16763-9a75-4683-b90a-65eee0a6b0ee",
+			"0;5974;1;f;f;f;4025;2cb88909-23c0-4725-b076-ef34e608a1d6",
+			"0;5973;1;t;f;f;4026;2a7acde9-aa86-496f-97a8-dc325f4bc567",
+			"0;5972;1;f;f;f;4027;0f77d283-53a4-4174-9396-250095ae31e4",
+			"0;5971;1;t;f;f;4028;faaf1cd7-ffe4-4420-b41e-5961999419ab",
+			"0;5970;1;f;f;f;4029;612c6301-f991-4a5e-9845-94afd184b2dc",
+			"0;5969;1;t;f;f;4030;350e0eb1-9c67-40e0-a860-ceb099eea78c",
+			"0;5968;1;f;f;f;4031;7c42631b-7cea-49be-8cd7-ec799895ebc9",
+			"0;5967;1;t;f;f;4032;994a0ec9-635c-401f-a1c5-79b623bf55a3",
+			"0;5966;1;f;f;f;4033;10659162-f4cd-4e48-8d3a-e786c6898131",
+			"0;5965;1;t;f;f;4034;115728a6-cf76-42cb-83c6-9ae6baba3079",
+			"0;5964;1;f;f;f;4035;9debec22-ec1a-4b22-849c-8a177b97ebb2",
+			"0;5963;1;t;f;f;4036;0070d43b-5742-4a5a-841b-28f7401b7295",
+			"0;5962;1;f;f;f;4037;47fda501-eb7d-423b-928f-8c1191eea91c",
+			"0;5961;1;t;f;f;4038;21f0f613-48d5-4d27-9bbf-eabb742b58b1",
+			"0;5960;1;f;f;f;4039;c69fa578-28ce-456f-9f5f-3d73c312ed92",
+			"0;5959;1;t;f;f;4040;ba6fefa5-1431-44c3-b22d-2e177eeaeaea",
+			"0;5958;1;f;f;f;4041;2d1d13df-cb96-4501-91a7-864cfd4d2fb7",
+			"0;5957;1;t;f;f;4042;acee1dd0-f368-4088-8935-66103b16fe7d",
+			"0;5956;1;f;f;f;4043;a7fcd401-ae89-46f8-b8cc-3e47b8bdbd54",
+			"0;5955;1;t;f;f;4044;332d6c87-993f-4d07-9444-5fa13027cc7a",
+			"0;5954;1;f;f;f;4045;4676474b-3dea-4d44-a7a4-2fff9fd079c0",
+			"0;5953;1;t;f;f;4046;c6eb25d0-a4e0-4768-9b4f-bbda174fffa2",
+			"0;5952;1;f;f;f;4047;8ee0a35c-6a31-478a-b2ca-3eb069e33268",
+			"0;5951;1;t;f;f;4048;f08ce0d1-813a-45dd-aa88-1196c30c5f40",
+			"0;5950;1;f;f;f;4049;0c3ecad1-7cae-4371-af47-dac23fdc8e9e",
+			"0;5949;1;t;f;f;4050;1cadece8-a736-426e-ab1a-f5d00f423508",
+			"0;5948;1;f;f;f;4051;53db35ab-95a5-497a-a81f-dc51cbe03cfa",
+			"0;5947;1;t;f;f;4052;18a116af-cd4d-40a5-a7ae-806bdf16ab00",
+			"0;5946;1;f;f;f;4053;e8f6038b-848c-4daa-b186-81a9d5525b08",
+			"0;5945;1;t;f;f;4054;ee704104-7204-4416-84dc-b3fbe5d5c910",
+			"0;5944;1;f;f;f;4055;963d9bc3-7fd9-4e5b-a93c-ffe5e83ed150",
+			"0;5943;1;t;f;f;4056;66699e75-8240-4d57-87f0-a15188511954",
+			"0;5942;1;f;f;f;4057;043bb85d-5f0c-451b-9b19-ef6e2788fa83",
+			"0;5941;1;t;f;f;4058;e37d6d49-6688-4f9d-aeb6-8f0064f2e31b",
+			"0;5940;1;f;f;f;4059;6040540a-f6b7-4d82-b89a-067e4945d2ef",
+			"0;5939;1;t;f;f;4060;074b3e29-7018-4b15-a0f0-b95eb0542a4f",
+			"0;5938;1;f;f;f;4061;af99d34f-d87c-4de7-a215-b45b739281c2",
+			"0;5937;1;t;f;f;4062;072a2477-6328-4206-9612-cb1265e18176",
+			"0;5936;1;f;f;f;4063;da6977da-70c9-46e4-a618-ee13299e5f6b",
+			"0;5935;1;t;f;f;4064;34da5b91-4641-464e-ab21-ae0972f9703e",
+			"0;5934;1;t;f;f;4065;a52f3c0c-795b-4dc5-93c1-d7ddbd94c892",
+			"0;5933;1;f;f;f;4066;4cfed9dd-ff96-42de-bc95-eef7573e2af4",
+			"0;5932;1;f;f;f;4067;1f059ef2-f5fc-46d8-b0b1-9e9b6a926879",
+			"0;5931;1;t;f;f;4068;540ed558-9dc8-4ff3-b1a6-441015ba28f7",
+			"0;5930;1;t;f;f;4069;2ddd7d2c-6192-42c2-a9ec-1f01356ff77f",
+			"0;5929;1;f;f;f;4070;53aa588d-91d3-4305-8639-84083559578b",
+			"0;5928;1;f;f;f;4071;9b342014-6c0b-49b1-9a67-9577e14476e7",
+			"0;5927;1;t;f;f;4072;f9ece21d-2e4b-4463-9882-e98711929c8a",
+			"0;5926;1;f;f;f;4073;87dd5e67-a8fa-40c9-9609-ed25d38b3cc9",
+			"0;5925;1;t;f;f;4074;693fd07e-c8da-440e-b095-b4fd4a6a4819",
+			"0;5924;1;f;f;f;4075;2cc1c6bf-1cf1-419e-ad1e-2c6dc6ac95be",
+			"0;5923;1;t;f;f;4076;948b34b3-1d8d-4fbd-8347-ed7adac80f73",
+			"0;5922;1;f;f;f;4077;e49ba434-674d-4553-99eb-5cf119b3fb7d",
+			"0;5921;1;t;f;f;4078;eeb7e41e-6e7a-4a7d-93e4-48e5339b6f6d",
+			"0;5920;1;f;f;f;4079;424a07ca-bb84-4352-83e6-2d9ef64bc188",
+			"0;5919;1;t;f;f;4080;ec901d50-8760-47da-b9f9-842eaefde366",
+			"0;5918;1;f;f;f;4081;abc149b7-eb63-4dd0-8b3b-9b32ea09d20f",
+			"0;5917;1;t;f;f;4082;f9bc1694-6ec3-4916-89f6-f344e9de9de6",
+			"0;5916;1;f;f;f;4083;8a8dec26-2b7f-4269-9083-598910eee501",
+			"0;5915;1;t;f;f;4084;b40a7ed3-9fbd-499d-8168-dacca169d493",
+			"0;5914;1;f;f;f;4085;308017c8-31a8-46d8-89eb-4fb29c70b8e2",
+			"0;5913;1;t;f;f;4086;6b6bd430-e20b-4873-a07e-00a4300351fc",
+			"0;5912;1;f;f;f;4087;97cf82c9-7dbe-44b1-b515-69a96d05ca5a",
+			"0;5911;1;t;f;f;4088;32f29c03-459c-4dbc-a23b-b618b4ee4846",
+			"0;5910;1;f;f;f;4089;02ab4aa1-77a8-4dab-af61-ab29663d8350",
+			"0;5909;1;t;f;f;4090;f26db5ae-eb0d-4a9a-bfc4-975a42fb2191",
+			"0;5908;1;f;f;f;4091;84a9b26b-a41f-44da-8dd5-2f52f98716ae",
+			"0;5907;1;t;f;f;4092;e1781b5f-a956-404d-a4bf-4e754257179a",
+			"0;5906;1;f;f;f;4093;e2938120-10d3-4272-9503-f1783ae593e7",
+			"0;5905;1;t;f;f;4094;7a899668-2f92-4e5c-9c3e-e36d64c1dddc",
+			"0;5904;1;t;f;f;4095;425430cf-49a2-4e96-85da-6b5704e0a0e6",
+			"0;5903;1;f;f;f;4096;d0007d89-43bd-4ba0-8772-054e9a4a48c5",
+			"0;5902;1;f;f;f;4097;b7d7f754-833d-4fb6-850d-8f383074377e",
+			"0;5901;1;t;f;f;4098;519ffa36-aa7b-47b4-af07-6f47af70a020",
+			"0;5900;1;t;f;f;4099;d145ab8a-f442-4eff-859d-0b6f4a83f839",
+			"0;5899;1;f;f;f;4100;65cb17da-a7d1-477d-bf92-95bf029f4b3b",
+			"0;5898;1;f;f;f;4101;16f271fd-4719-4d92-9c4d-47742518c4ee",
+			"0;5897;1;t;f;f;4102;1be56c99-177f-4730-8d3f-f9d0eee372d4",
+			"0;5896;1;f;f;f;4103;5933d61b-0c95-4b96-a192-48fc78071818",
+			"0;5895;1;t;f;f;4104;9f4eaa8d-61be-44a5-9f9d-bec1596e2880",
+			"0;5894;1;f;f;f;4105;4093c2a3-3c56-43ca-b0de-bfa3328cb708",
+			"0;5893;1;t;f;f;4106;73956398-0ff4-4a02-83e1-c0b343837ff8",
+			"0;5892;1;f;f;f;4107;b44a0065-b8e5-4dd4-a84c-6aefb35b71fa",
+			"0;5891;1;t;f;f;4108;0b941ad5-4a8c-47de-94aa-1a860afe7d14",
+			"0;5890;1;f;f;f;4109;93b5407f-e772-4c05-b54c-4919f2e3e7ad",
+			"0;5889;1;t;f;f;4110;1cf2ea81-2fb9-4382-a6ae-67a73bf86467",
+			"0;5888;1;f;f;f;4111;ef507faa-ba08-481d-b800-1b381e742910",
+			"0;5887;1;t;f;f;4112;5ad7002d-0c15-4c11-9da3-e3f1deaf386a",
+			"0;5886;1;f;f;f;4113;dd5b5f5c-7beb-4061-93dc-9898494df613",
+			"0;5885;1;t;f;f;4114;5d627968-9055-4cfe-86b1-c51089ce2e9a",
+			"0;5884;1;f;f;f;4115;b0aca98b-dcdf-404d-bf0a-5609460d4b78",
+			"0;5883;1;t;f;f;4116;c926c348-2a51-4574-b66c-6c67bed41fa0",
+			"0;5882;1;f;f;f;4117;e0a8321e-7465-4828-9c9d-949efe1f96cf",
+			"0;5881;1;t;f;f;4118;0a46018e-fab7-4cc4-a18e-932759183288",
+			"0;5880;1;f;f;f;4119;a8025f96-5e20-4b54-a4f1-6b424e4d8431",
+			"0;5879;1;t;f;f;4120;0b597bb3-09ad-4321-afc5-a61ee566f8a6",
+			"0;5878;1;f;f;f;4121;d33314cc-abb8-44b2-8f71-345ca782aa6d",
+			"0;5877;1;t;f;f;4122;a5b67094-b700-45ee-aab3-95812ac57e38",
+			"0;5876;1;f;f;f;4123;8f263d23-a179-4da9-bbd0-6130eab70b83",
+			"0;5875;1;t;f;f;4124;1a8ecfa5-1680-4fa6-8dd4-03e4f4b001d1",
+			"0;5874;1;f;f;f;4125;52e05e8a-fc9e-4a82-9a54-bceb0810712b",
+			"0;5873;1;t;f;f;4126;e281210c-876f-4d97-af2d-d569e621d6e6",
+			"0;5872;1;f;f;f;4127;127ae9e4-3190-402e-a640-93219d644741",
+			"0;5871;1;t;f;f;4128;69ae1dc5-ddc3-49e2-b28c-c7b7029ff374",
+			"0;5870;1;t;f;f;4129;b5ca0fef-983b-4212-9934-54b7e94c6569",
+			"0;5869;1;f;f;f;4130;71a88b59-99ef-49a9-9ea9-daa9573afae7",
+			"0;5868;1;f;f;f;4131;16fa88c4-d743-45ed-8658-9dcee0462fcc",
+			"0;5867;1;t;f;f;4132;940ebfc6-afb0-43af-b6aa-8aca7534ec84",
+			"0;5866;1;t;f;f;4133;e657f6f4-bed0-461d-a206-9e7f4f2e942a",
+			"0;5865;1;f;f;f;4134;8c9e2cc9-7903-4f61-9621-21df62fd499f",
+			"0;5864;1;f;f;f;4135;6cb3669f-9e36-4c09-9c33-a70db029ee37",
+			"0;5863;1;t;f;f;4136;e613a421-fd3c-4746-9d4b-e9d93974e31a",
+			"0;5862;1;t;f;f;4137;75b873a9-222e-4b94-b6bf-bc989f3ad0a1",
+			"0;5861;1;f;f;f;4138;680557b8-1911-4689-8d13-4883427e0eb9",
+			"0;5860;1;f;f;f;4139;21d74765-486c-40a8-b707-5f3cbebedf80",
+			"0;5859;1;t;f;f;4140;be2810e4-73d0-4286-a2f4-1baced3647b0",
+			"0;5858;1;f;f;f;4141;d2d68ac9-5718-4fd8-a2aa-b414f754434b",
+			"0;5857;1;t;f;f;4142;b7157871-30c6-4ce6-9d3f-0bab272cc4f7",
+			"0;5856;1;f;f;f;4143;3dff2050-f489-45ce-bdd6-4eaecadad1f8",
+			"0;5855;1;t;f;f;4144;55fa6b66-d06c-4351-8abd-77d523faaa2c",
+			"0;5854;1;f;f;f;4145;a7e1017e-3500-42bb-bd1e-cf20c3a37acc",
+			"0;5853;1;t;f;f;4146;c34ced7d-a468-4250-9157-286cfb6578ae",
+			"0;5852;1;f;f;f;4147;4ce6145c-b44d-4f93-8bdf-c0f35508a501",
+			"0;5851;1;t;f;f;4148;6cae0d4e-f0f3-425e-b555-6203289cdb3c",
+			"0;5850;1;f;f;f;4149;f94827e5-2ff5-427c-971c-8f3112aef2b7",
+			"0;5849;1;t;f;f;4150;9cce8b20-7604-46d6-ac4b-fef2c27f995f",
+			"0;5848;1;t;f;f;4151;f0dab194-4c23-4396-ab23-c1f2074f3f43",
+			"0;5847;1;f;f;f;4152;f24b3836-2cb1-4291-82a9-0daaf69d2fd4",
+			"0;5846;1;f;f;f;4153;2b4ecee3-56b3-422a-8068-bf8a67e5f180",
+			"0;5845;1;t;f;f;4154;956ae65d-2826-4ae6-a141-41ab0d6ba567",
+			"0;5844;1;t;f;f;4155;e869debe-40da-4826-835d-a1e744bc8572",
+			"0;5843;1;f;f;f;4156;d6b93d98-06fb-4d4e-9fef-e21a0ad62944",
+			"0;5842;1;f;f;f;4157;69a8c6d7-bb32-43a1-a15b-718c33fe2cd3",
+			"0;5841;1;t;f;f;4158;2d6a939e-b089-4805-a8ee-889e775b801a",
+			"0;5840;1;f;f;f;4159;ea7024eb-2442-4ef6-b68d-7187af07f810",
+			"0;5839;1;t;f;f;4160;a879e30b-1728-41f3-bd6c-201d951ba5d9",
+			"0;5838;1;f;f;f;4161;8cdb5568-ec25-4708-960b-2aaef87b7592",
+			"0;5837;1;t;f;f;4162;0054e4cb-c026-4b27-b0bf-1557f223780a",
+			"0;5836;1;t;f;f;4163;f16bf07a-50a5-4025-80be-b94f51e3a0bd",
+			"0;5835;1;f;f;f;4164;267e8a5e-075e-4d25-9d30-4d1e644d860d",
+			"0;5834;1;f;f;f;4165;8ac2f382-79f1-4667-bd79-4df89cc761d1",
+			"0;5833;1;t;f;f;4166;464cadf1-3aa7-4ffd-90dc-0e5a079495c8",
+			"0;5832;1;f;f;f;4167;6daacf98-51a7-47f8-a270-ddf638bec145",
+			"0;5831;1;t;f;f;4168;477f7e10-c4c0-4438-a768-d75324479da2",
+			"0;5830;1;f;f;f;4169;0843e3f0-93bd-4a44-b5d7-8addb4c627d8",
+			"0;5829;1;t;f;f;4170;a32e615a-e3a5-4fff-bd54-a267ddc3538c",
+			"0;5828;1;t;f;f;4171;f143b584-dc57-48b6-9c8c-b33e3ed6c34d",
+			"0;5827;1;f;f;f;4172;abd6bc4d-fc11-4266-8a6e-6ef2b2f95f11",
+			"0;5826;1;f;f;f;4173;2751e90b-5b4f-4fa2-85c6-646ffa5628c8",
+			"0;5825;1;t;f;f;4174;8b09a096-a2cc-452c-9743-02824f81077c",
+			"0;5824;1;f;f;f;4175;10fdbcb5-db9f-4121-a8e9-d10c3ee08cff",
+			"0;5823;1;t;f;f;4176;7dbf5e34-9cd0-4be5-98c8-3a4871f47e94",
+			"0;5822;1;f;f;f;4177;954b5f5e-925c-4934-879c-fbd962dedaa4",
+			"0;5821;1;t;f;f;4178;8ab69787-8f90-4142-895d-e4da49ec6617",
+			"0;5820;1;t;f;f;4179;aa745d28-ce4c-4fef-a262-332b57267075",
+			"0;5819;1;f;f;f;4180;f52bf112-2309-46f3-8fe6-113f5ad65a86",
+			"0;5818;1;f;f;f;4181;e59a0aba-167f-43d2-8a4c-e9677cdb5ea9",
+			"0;5817;1;t;f;f;4182;f1fa045d-d26c-409e-9a28-ad920d7a0126",
+			"0;5816;1;t;f;f;4183;a7b5c98e-50b5-49f9-b183-1fa6f4fe3232",
+			"0;5815;1;f;f;f;4184;8d7fed6b-b837-4885-9155-0a11f51bd994",
+			"0;5814;1;f;f;f;4185;2391dc1f-d05f-44fd-a7ae-b4e4fca30b78",
+			"0;5813;1;t;f;f;4186;89e1e522-7c88-4fa9-8130-c3d9fb1d82d8",
+			"0;5812;1;t;f;f;4187;fc09c966-480c-42ad-a2c8-2098fc3518af",
+			"0;5811;1;f;f;f;4188;c3d5e5c3-11e5-4f33-95b4-25dabc9c3858",
+			"0;5810;1;f;f;f;4189;19372bbc-c2ea-4d34-aa29-52a523d650d3",
+			"0;5809;1;t;f;f;4190;c87cd0cb-2554-40f8-9f9d-077ba3934750",
+			"0;5808;1;f;f;f;4191;2bf37219-2dbe-415c-923c-2a2a911f2e09",
+			"0;5807;1;t;f;f;4192;5a9aecd2-8d04-4965-a077-d50cb518a58a",
+			"0;5806;1;f;f;f;4193;2b9b9f55-30aa-4540-8c28-81a35821b6a6",
+			"0;5805;1;t;f;f;4194;f698144c-e909-4672-9841-97b6ade9a991",
+			"0;5804;1;f;f;f;4195;3954c15f-6db4-40cc-9ab2-5c55286df243",
+			"0;5803;1;t;f;f;4196;6d853fa7-832a-4162-a63d-56bd84b21a55",
+			"0;5802;1;f;f;f;4197;2da30171-3ea3-4ca7-9d7f-72e9259a7173",
+			"0;5801;1;t;f;f;4198;03687f94-ae08-4203-bffd-78dbcd3ff022",
+			"0;5800;1;f;f;f;4199;4f2eb655-7295-4e77-8d0a-74d6a96cfa30",
+			"0;5799;1;t;f;f;4200;1967df2b-faf5-4f88-84fc-86b588e71e9c",
+			"0;5798;1;f;f;f;4201;8be8023b-72c3-41d3-b07e-9bf3e48101f9",
+			"0;5797;1;t;f;f;4202;c0010106-968d-48d6-8614-706e9d9e45df",
+			"0;5796;1;f;f;f;4203;80e57763-d7ad-4dc3-8c06-0cf59cf8768f",
+			"0;5795;1;t;f;f;4204;643caaeb-5600-4447-8975-5de1d3a76076",
+			"0;5794;1;f;f;f;4205;706f6cda-ee5c-4e6e-a6f7-0f8b79ed03bc",
+			"0;5793;1;t;f;f;4206;f188752b-5b44-40b4-9101-381b8084160b",
+			"0;5792;1;f;f;f;4207;4a89db75-4be4-4e2e-b671-290cb9b070b1",
+			"0;5791;1;t;f;f;4208;170705bc-b8a4-4cf4-b208-d0c8145487b3",
+			"0;5790;1;f;f;f;4209;bd0f1e59-1acf-434f-aa5a-73be4e2447cf",
+			"0;5789;1;t;f;f;4210;63b9ea74-1322-4b22-8bbc-59ae352e17af",
+			"0;5788;1;f;f;f;4211;bd302f29-99cc-407d-8de2-fda0175f4bf4",
+			"0;5787;1;t;f;f;4212;71ca2bc3-fad6-4cda-8c87-80b4bc554f4f",
+			"0;5786;1;f;f;f;4213;d18784b1-c3f5-4225-99f0-3540d405c42a",
+			"0;5785;1;t;f;f;4214;e93c818e-b963-43f5-a1a0-2328420aef6e",
+			"0;5784;1;f;f;f;4215;8d2661ab-1b35-4f0d-9365-08cb7a401dd1",
+			"0;5783;1;t;f;f;4216;6a468114-4e8e-4f18-9ef6-6ba417b0aa96",
+			"0;5782;1;f;f;f;4217;79514c8d-16d7-43b0-9f1a-daaae1151b4d",
+			"0;5781;1;t;f;f;4218;bd4dd879-9e00-4ab8-af8a-939918d59970",
+			"0;5780;1;f;f;f;4219;1409a6b4-c9e9-47d2-9f59-0d746d29c37e",
+			"0;5779;1;t;f;f;4220;93e326f6-75dc-4c7d-832b-c8a4afa1f7d3",
+			"0;5778;1;f;f;f;4221;863fba35-fd60-4f8f-a364-da9291ff5a50",
+			"0;5777;1;t;f;f;4222;36f29146-b5fb-4df7-9d91-d57ba69e6c9d",
+			"0;5776;1;f;f;f;4223;ba3b95ff-af97-4f01-9dcb-f1535f72d3c0",
+			"0;5775;1;t;f;f;4224;137c4c79-55cf-45ca-9658-c2cc4de53b19",
+			"0;5774;1;f;f;f;4225;471d7aa0-61d3-4299-9c88-9e02339cb9a9",
+			"0;5773;1;t;f;f;4226;cd8fa51d-4661-473b-87e6-5d584886de4b",
+			"0;5772;1;f;f;f;4227;ad76a8a3-158f-4ff8-ac62-71be1ece312d",
+			"0;5771;1;t;f;f;4228;5d5276ba-bded-4582-98a7-591aea00bc2e",
+			"0;5770;1;f;f;f;4229;1c606785-c7e5-4f8c-a7d6-0ca6b2a5c425",
+			"0;5769;1;t;f;f;4230;6df53d14-8c93-4609-8c51-9f4693a4c54d",
+			"0;5768;1;f;f;f;4231;e39d6eff-2e65-4035-9bce-0e86c8104b61",
+			"0;5767;1;t;f;f;4232;70e0456d-e80c-4395-be28-a5f62b1ef32d",
+			"0;5766;1;f;f;f;4233;aa7eb68a-23f3-4b99-85b6-e5660576d1e2",
+			"0;5765;1;t;f;f;4234;dc72e4ec-dc4a-4a99-b2b4-44ab5f0385e5",
+			"0;5764;1;f;f;f;4235;2ad3e662-d907-4bf3-982b-a7c54d960bb1",
+			"0;5763;1;t;f;f;4236;4ba76d8c-af1b-45b7-8375-1123f55885ac",
+			"0;5762;1;f;f;f;4237;8a91f283-6f5b-4402-b730-687830b9c236",
+			"0;5761;1;t;f;f;4238;5af7a413-8995-4c70-bd97-0aab706f94d1",
+			"0;5760;1;f;f;f;4239;9723a832-8f2f-45e5-98ce-44319c562193",
+			"0;5759;1;t;f;f;4240;d26be43b-e362-4351-aa1a-da36260a0546",
+			"0;5758;1;f;f;f;4241;faf8f75c-44ed-4fad-b981-13a34bc87b21",
+			"0;5757;1;t;f;f;4242;ab96a349-e1d2-4b88-9374-976a5de8ccc5",
+			"0;5756;1;f;f;f;4243;bd053766-f234-4555-b77f-62d11a35f14a",
+			"0;5755;1;t;f;f;4244;d8c8e5b1-87c1-4b1c-b9f8-2d032a72df57",
+			"0;5754;1;f;f;f;4245;3b529f3d-5f97-4b61-abb0-6c5ea5a364d3",
+			"0;5753;1;t;f;f;4246;ea909d1e-8f44-4dbe-ba53-6bb97371fcc3",
+			"0;5752;1;f;f;f;4247;1c69d911-b436-4870-a1d8-76eacffe2383",
+			"0;5751;1;t;f;f;4248;2c300421-9210-41ac-9de3-bfdd39b4efed",
+			"0;5750;1;f;f;f;4249;0d8bbc6c-7966-4d4f-8048-a86f09553651",
+			"0;5749;1;t;f;f;4250;39030fae-7204-4a8e-81a3-c724e399da53",
+			"0;5748;1;f;f;f;4251;57ff9189-d6bd-4826-bc41-8d62f1dfe5ab",
+			"0;5747;1;t;f;f;4252;e17f009b-629b-46bf-ad12-3df66bd2c520",
+			"0;5746;1;f;f;f;4253;6d1afe65-6fb3-4d1b-acec-b47085704051",
+			"0;5745;1;t;f;f;4254;347f1414-cab7-4a9a-8631-3e906610ea92",
+			"0;5744;1;f;f;f;4255;b6195a3a-f41c-4492-923f-cb5f68ee28e1",
+			"0;5743;1;t;f;f;4256;95122888-1027-48c5-858d-845a17a020f4",
+			"0;5742;1;f;f;f;4257;74c7a828-e0c2-426a-9a2d-ee481cc2ec41",
+			"0;5741;1;t;f;f;4258;d25bb0ef-0192-4433-abd6-1d50d7c6e5d2",
+			"0;5740;1;f;f;f;4259;203806f1-3af7-43b0-9ecf-4f657473449c",
+			"0;5739;1;t;f;f;4260;af293601-4047-44e7-8fed-037201ad8840",
+			"0;5738;1;f;f;f;4261;8779aae1-8139-4664-975c-27205592848b",
+			"0;5737;1;t;f;f;4262;8695f732-ab03-480e-93ff-4979e9f0216a",
+			"0;5736;1;f;f;f;4263;9a36ddae-5287-46e1-b29a-506d8d9d7eeb",
+			"0;5735;1;t;f;f;4264;47ffc1a3-35c9-4192-bb39-be758b011ced",
+			"0;5734;1;f;f;f;4265;2c15811d-3487-46a9-b8b2-5e86e18e1e99",
+			"0;5733;1;t;f;f;4266;e0bd0f4d-05e4-4bdb-94c9-5111fd588756",
+			"0;5732;1;f;f;f;4267;a2b645ac-e9e2-479b-b7b2-6f4555daa604",
+			"0;5731;1;t;f;f;4268;26d33485-2cf1-4285-8466-0ca26ee986be",
+			"0;5730;1;f;f;f;4269;45d59310-d8e8-4359-99da-8d603ffbf98e",
+			"0;5729;1;t;f;f;4270;4baa7825-be48-4876-8616-8dff9402c411",
+			"0;5728;1;f;f;f;4271;80ad17aa-f260-4095-bbbb-03597c56e145",
+			"0;5727;1;t;f;f;4272;914436e9-44e1-4fb1-8da5-ea09dee80aad",
+			"0;5726;1;f;f;f;4273;627fd90d-6628-442b-9fd3-79e8854ddeda",
+			"0;5725;1;t;f;f;4274;9f0d819c-3c33-49d4-bb09-fa9c09f83984",
+			"0;5724;1;f;f;f;4275;cbd65624-c1ff-405f-8b6e-5988b6dd7e3b",
+			"0;5723;1;t;f;f;4276;41320f26-5bd2-4f2b-84b1-f20b6a8ff794",
+			"0;5722;1;f;f;f;4277;46b9180a-b46f-4211-af81-570ec75142a7",
+			"0;5721;1;t;f;f;4278;035c4230-d71d-45c6-8140-4737588dbaf6",
+			"0;5720;1;f;f;f;4279;5de18833-ca56-4d15-ab5a-5a3536c9f971",
+			"0;5719;1;t;f;f;4280;b9866b49-89f5-4499-9d06-e970125e41eb",
+			"0;5718;1;f;f;f;4281;67dbede2-5e65-4904-ab7e-b584c66d9baa",
+			"0;5717;1;t;f;f;4282;bcf42dab-3c77-4c08-a8a4-a9c726341672",
+			"0;5716;1;f;f;f;4283;45906be6-7e00-4898-8e18-f9567d930d30",
+			"0;5715;1;t;f;f;4284;53231bf3-5348-4871-a04f-954c6a9a7da7",
+			"0;5714;1;f;f;f;4285;f1e8f589-fc0c-4696-b55b-e875f4ba5108",
+			"0;5713;1;t;f;f;4286;91aa4915-15a8-4129-9604-00bf64ee62bb",
+			"0;5712;1;f;f;f;4287;f7ef2a81-c021-475d-8586-1caede923357",
+			"0;5711;1;t;f;f;4288;17af430a-38d0-4528-a1cb-0d1d60c2b29c",
+			"0;5710;1;t;f;f;4289;fca76499-9f10-476f-a7cb-e3cd66dfded8",
+			"0;5709;1;f;f;f;4290;f35446b0-abb2-4e71-9d16-8db3931e4774",
+			"0;5708;1;f;f;f;4291;55967bcc-02b4-46ad-a7b9-cf1be309b9db",
+			"0;5707;1;t;f;f;4292;c5e13de5-76a1-4441-b326-b8092e4479c8",
+			"0;5706;1;f;f;f;4293;24c4c68e-7f94-405e-b43a-c95712c9318e",
+			"0;5705;1;t;f;f;4294;94f5a09c-5c38-4852-ae04-f655f2c329e4",
+			"0;5704;1;f;f;f;4295;5093a25c-dd48-440b-b0b8-264f24a8ba31",
+			"0;5703;1;t;f;f;4296;99eb8819-3e50-4aa5-9c2a-015c86db4ad1",
+			"0;5702;1;f;f;f;4297;4abd0944-8e3a-428d-8153-5ff9dbf7e149",
+			"0;5701;1;t;f;f;4298;f28ec309-21d4-4ccb-800c-edbde5d3697a",
+			"0;5700;1;f;f;f;4299;093233f8-ef06-4d9b-93a0-630c54684f54",
+			"0;5699;1;t;f;f;4300;6e0d9120-33a0-414c-b637-bed9bcdd6e4a",
+			"0;5698;1;f;f;f;4301;61641c1f-5d8c-4577-8508-a2dbf2e66f72",
+			"0;5697;1;t;f;f;4302;200a897d-95eb-4ada-8210-02ce5a263015",
+			"0;5696;1;f;f;f;4303;2362eafe-c327-46c4-bcb3-2b93bc1cd0cd",
+			"0;5695;1;t;f;f;4304;ec6ebf98-fc60-409c-bab8-51d45597b76d",
+			"0;5694;1;f;f;f;4305;b2ec6063-ea1c-4414-bd8a-8915959abc18",
+			"0;5693;1;t;f;f;4306;ff36e0b0-70d4-49cd-8008-bfe77295e77d",
+			"0;5692;1;f;f;f;4307;489858e9-f823-4ba8-a930-d85d5b755810",
+			"0;5691;1;t;f;f;4308;fb09b734-c235-4814-9904-a660e688b346",
+			"0;5690;1;f;f;f;4309;9f6a8c36-7b5c-4460-8766-e0d75b515fa5",
+			"0;5689;1;t;f;f;4310;efbcc278-e69e-48b5-a6ea-46055d882aee",
+			"0;5688;1;f;f;f;4311;5ebf77e1-68af-4658-81a3-7b5d7b2932c7",
+			"0;5687;1;t;f;f;4312;858dabc6-678d-4831-ba1f-ffb683e71f4e",
+			"0;5686;1;f;f;f;4313;4f701ffb-3892-421c-bf42-5a2b23387ef3",
+			"0;5685;1;t;f;f;4314;536453e5-940c-4b40-841a-a7c6573dbc89",
+			"0;5684;1;f;f;f;4315;127f9880-67b6-47ab-ad32-301ad8eb5edf",
+			"0;5683;1;t;f;f;4316;cd814b2a-a6e6-4a3a-9406-30290f537113",
+			"0;5682;1;f;f;f;4317;5257cf9f-ebb1-4508-b8fe-af773ce9c631",
+			"0;5681;1;t;f;f;4318;13adfb62-20af-4b50-b7de-c3f25e51d1bf",
+			"0;5680;1;f;f;f;4319;45e750b8-a7ea-4635-b3b4-24baa3b82c3d",
+			"0;5679;1;t;f;f;4320;a1468a8a-12f8-49d3-b199-36504fb27558",
+			"0;5678;1;f;f;f;4321;70552b9f-9392-4c07-88ec-01c2106fa6af",
+			"0;5677;1;t;f;f;4322;8267acab-d62f-4084-97c8-24147ccde908",
+			"0;5676;1;f;f;f;4323;0943d7b5-b3d4-4d87-9d42-7113e9f0c2b4",
+			"0;5675;1;t;f;f;4324;77358b25-1fef-4ac3-9d6d-62165e4369dc",
+			"0;5674;1;f;f;f;4325;04b53e31-42f3-47cf-9102-cfe859d61a23",
+			"0;5673;1;t;f;f;4326;844acc7c-d865-4748-8647-1c045901aa7c",
+			"0;5672;1;t;f;f;4327;d4246fca-631a-43c5-9231-ec878b7b5961",
+			"0;5671;1;f;f;f;4328;2bd4a739-c2d0-4dbf-afdd-114285a15ba6",
+			"0;5670;1;f;f;f;4329;56c3e5d5-0c42-4040-865c-52e0d2a4e917",
+			"0;5669;1;t;f;f;4330;4dd938e3-009d-40a0-a23a-41607003a0c6",
+			"0;5668;1;f;f;f;4331;bfb3fa83-df1d-47fc-b497-c85cd739e324",
+			"0;5667;1;t;f;f;4332;e083251f-aaab-4743-acf6-c7e91f81a33f",
+			"0;5666;1;f;f;f;4333;00fb4e46-c293-44cf-bcda-ee046a62b711",
+			"0;5665;1;t;f;f;4334;e908847e-2d38-4f32-bca3-c2aa6d162172",
+			"0;5664;1;f;f;f;4335;9cfe5f25-602e-44cd-b545-da51e574640e",
+			"0;5663;1;t;f;f;4336;fcf18972-4ccf-4322-ba68-ddaae496e0f0",
+			"0;5662;1;t;f;f;4337;e983da6b-f895-4a88-a88c-e66e0f79c5bf",
+			"0;5661;1;f;f;f;4338;6603cef1-c84e-4cb0-b7c9-6b1bfa5866d0",
+			"0;5660;1;f;f;f;4339;22496808-1434-4764-8584-2d6802829e1c",
+			"0;5659;1;t;f;f;4340;32e609b8-fd2f-46fc-99a2-5795c8f1f7f0",
+			"0;5658;1;f;f;f;4341;55991bb8-3d3c-4864-9e88-439ff7e735be",
+			"0;5657;1;t;f;f;4342;2e99ecac-1a83-4ba3-9281-9edcad3fed4e",
+			"0;5656;1;f;f;f;4343;f61214d8-b472-45bb-9aa2-3cca21a95ace",
+			"0;5655;1;t;f;f;4344;77ca5705-4952-4565-ba78-8d5072364ea3",
+			"0;5654;1;t;f;f;4345;387e805e-3294-4742-a675-1c6f1164c328",
+			"0;5653;1;f;f;f;4346;1ae6bf3e-e73d-4536-9f4e-98636a9663bf",
+			"0;5652;1;f;f;f;4347;895613f5-2830-4880-ba43-85181522006e",
+			"0;5651;1;t;f;f;4348;6b272493-9efc-468c-a613-3a7614c36676",
+			"0;5650;1;f;f;f;4349;60884306-7ac9-43e8-b6ef-d6756ded9d15",
+			"0;5649;1;t;f;f;4350;e2a79c74-f435-461a-a0c2-3202900f6dfe",
+			"0;5648;1;f;f;f;4351;fda72fd2-b79c-4f55-9629-8e4d9950658d",
+			"0;5647;1;t;f;f;4352;6b47a08e-8d7f-4bb3-8fd0-ec19a0c9915d",
+			"0;5646;1;t;f;f;4353;ac76bd74-c006-45d0-bf42-33e93d80ab6c",
+			"0;5645;1;f;f;f;4354;3bb77edd-18e7-4348-b47b-90821372ccf4",
+			"0;5644;1;f;f;f;4355;0b017bae-9814-4788-a675-bca275fe18df",
+			"0;5643;1;t;f;f;4356;99fc2547-9cce-4a5a-81f2-1bef0e19a7c6",
+			"0;5642;1;f;f;f;4357;bf6092e3-f83c-4829-8b15-912c1d79cad0",
+			"0;5641;1;t;f;f;4358;070a6411-2af2-4a47-8b46-04886b71c531",
+			"0;5640;1;f;f;f;4359;edfe1d6b-cd79-4815-bc13-6160e7317786",
+			"0;5639;1;t;f;f;4360;ad1f77db-ecd3-4b7d-ac1b-89424856ab1b",
+			"0;5638;1;f;f;f;4361;f5c74859-5ff5-4c1c-9237-afe20f12c888",
+			"0;5637;1;t;f;f;4362;198f012e-40ae-4421-a923-e5a09e9d0b7e",
+			"0;5636;1;f;f;f;4363;07cacff2-4d80-47cd-86fb-046e5bf2cd90",
+			"0;5635;1;t;f;f;4364;9334e514-fea4-478a-af1b-1d77760bd83e",
+			"0;5634;1;f;f;f;4365;1286d6a5-a290-4700-b523-5186b79d3119",
+			"0;5633;1;t;f;f;4366;28cca5da-240b-4773-b21b-aeb85c980586",
+			"0;5632;1;f;f;f;4367;113d9f1a-8129-4747-a5b5-190533a6f813",
+			"0;5631;1;t;f;f;4368;404532b0-d4a1-4a2b-bca7-501392a69085",
+			"0;5630;1;f;f;f;4369;0ee734aa-f948-489b-84d3-ebb0027a0931",
+			"0;5629;1;t;f;f;4370;87196f78-10a8-43a1-a27c-5be5b08513ee",
+			"0;5628;1;f;f;f;4371;d62623e4-a355-4ef5-8684-92db300d9874",
+			"0;5627;1;t;f;f;4372;9791aa99-43e4-4c22-abbb-d89432d51e4f",
+			"0;5626;1;f;f;f;4373;20d5ea3b-eed8-43eb-9314-16dd15e5a348",
+			"0;5625;1;t;f;f;4374;1ed3f1b1-3215-4a06-a387-0b2e78efafc6",
+			"0;5624;1;f;f;f;4375;bb077f0d-3a7d-447f-b8ea-92cb64fb7d41",
+			"0;5623;1;t;f;f;4376;9842de3b-8a94-4efb-b145-235cc9d8e0b6",
+			"0;5622;1;f;f;f;4377;111c5a80-22c6-4325-9624-41e0ce2a5bb6",
+			"0;5621;1;t;f;f;4378;fa9943a5-8d5c-49fe-b589-c89cccfb52e6",
+			"0;5620;1;f;f;f;4379;e166cef4-c45e-4cb2-8eb4-d7640c28c8cc",
+			"0;5619;1;t;f;f;4380;080b2ecd-03aa-4de3-8afa-12a41eda1b4d",
+			"0;5618;1;f;f;f;4381;0da3ca2d-964a-4ad5-8ec4-7a0831e22fdb",
+			"0;5617;1;t;f;f;4382;a0ca78ab-3034-4b3d-949c-6cd632ba3469",
+			"0;5616;1;f;f;f;4383;984ba8d0-7807-415b-b256-8b779683bb86",
+			"0;5615;1;t;f;f;4384;ed9049e5-2558-4cec-8920-850cac9592b8",
+			"0;5614;1;f;f;f;4385;a60a1d78-bbe7-4923-8a1a-341db9dc0f5a",
+			"0;5613;1;t;f;f;4386;58a2c41c-6568-4264-bbee-4a9ac928e164",
+			"0;5612;1;f;f;f;4387;0ebfd110-7dd4-4037-a94b-16accab11f8c",
+			"0;5611;1;t;f;f;4388;94e33e74-e9a6-4d7e-bf2c-ad4e6b6ca980",
+			"0;5610;1;f;f;f;4389;9233b68e-3c7f-42a6-8695-b0fc1a52224e",
+			"0;5609;1;t;f;f;4390;546a6774-f410-4db2-9148-663cf3a9c88b",
+			"0;5608;1;f;f;f;4391;6ec8b4b8-44db-4eb9-bab8-92326f6bc1ba",
+			"0;5607;1;t;f;f;4392;87a5553b-cc71-4e2c-b9da-6bceb5b5127a",
+			"0;5606;1;f;f;f;4393;52d3eec8-6fb2-4513-880e-e7d2ba05a553",
+			"0;5605;1;t;f;f;4394;f7ab4d1e-170c-4f70-8b35-b2fa58afbfa2",
+			"0;5604;1;f;f;f;4395;5f2b18c5-bac0-451f-b26e-466aae559992",
+			"0;5603;1;t;f;f;4396;5785ab57-139e-4c1d-abcb-48d570d9f521",
+			"0;5602;1;f;f;f;4397;70295c06-c4a1-4e53-98aa-2c383fc3ca71",
+			"0;5601;1;t;f;f;4398;3307da38-d047-4ab2-b0f2-633c92a78872",
+			"0;5600;1;f;f;f;4399;9e3a08c9-5abc-47b6-84ae-3fb16b347f9c",
+			"0;5599;1;t;f;f;4400;122761c5-c8aa-4889-b2e5-efff9e902a93",
+			"0;5598;1;f;f;f;4401;9389ce52-5608-4ac3-82c4-d16cafc82828",
+			"0;5597;1;t;f;f;4402;0c540597-b6df-4c22-88df-323fe19aedd0",
+			"0;5596;1;f;f;f;4403;d59c7c73-bdfe-4d44-a5e8-12c90f6dee52",
+			"0;5595;1;t;f;f;4404;3d189423-d7c5-4a1e-8997-0ca844517d6a",
+			"0;5594;1;f;f;f;4405;7aa31acb-9976-4e32-afb9-11711e9003d5",
+			"0;5593;1;t;f;f;4406;cc4b8f54-7eec-47bd-82db-610d5b3e2144",
+			"0;5592;1;f;f;f;4407;0515d89e-2533-46cc-b47e-b860e8b083a1",
+			"0;5591;1;t;f;f;4408;d779c2e6-2cce-4ccc-b65f-707d7228d948",
+			"0;5590;1;f;f;f;4409;79d63ad3-f0b7-4a8f-b3e2-25fe7477dad0",
+			"0;5589;1;t;f;f;4410;12b76862-c9c5-43ca-a7c6-8f9db908c7fe",
+			"0;5588;1;f;f;f;4411;00d59130-df4f-48ff-a8b7-852a3e1c568c",
+			"0;5587;1;t;f;f;4412;363c709d-aff2-4acc-a1d1-9cc0e17bca6d",
+			"0;5586;1;f;f;f;4413;872f4ca1-258a-42ff-80c5-ed4f32673aa1",
+			"0;5585;1;t;f;f;4414;6ba7c738-43d1-4355-881c-36cb36a7d8d7",
+			"0;5584;1;f;f;f;4415;2a62969d-0a54-46bb-989e-5b96d107321e",
+			"0;5583;1;t;f;f;4416;a827d177-6a07-4604-a303-193378929b5d",
+			"0;5582;1;f;f;f;4417;55ec6bbc-deec-4342-bee1-5d0050a8e940",
+			"0;5581;1;t;f;f;4418;b85c3ac8-d7bc-47bc-82ca-ae462cb18477",
+			"0;5580;1;f;f;f;4419;192f3ae3-4a02-45dd-ba8b-abf8a440bf7a",
+			"0;5579;1;t;f;f;4420;ade074d5-7a43-45dc-99ba-2f6ca1ba0058",
+			"0;5578;1;f;f;f;4421;fb7e2f90-d9c4-4c29-8125-f5b64a816543",
+			"0;5577;1;t;f;f;4422;3b09edf5-05f0-43e3-be47-f41c1725090d",
+			"0;5576;1;f;f;f;4423;74f229a3-442b-4043-9d99-427ab12e84ba",
+			"0;5575;1;t;f;f;4424;2defd5c9-8a22-41af-bd95-41fcec6c2f3d",
+			"0;5574;1;f;f;f;4425;e4d84fd9-a74d-4b32-91fd-e74532580cbe",
+			"0;5573;1;t;f;f;4426;ea80a1b0-c3aa-45ae-9804-565547ffbe69",
+			"0;5572;1;f;f;f;4427;eb68956f-5e14-4769-a0d2-b2bf7fdaa6c5",
+			"0;5571;1;t;f;f;4428;4ba4b131-2a91-4264-a64b-3635484a6925",
+			"0;5570;1;f;f;f;4429;5c12acae-7bc0-44d4-ac72-1aba35a6e231",
+			"0;5569;1;t;f;f;4430;81b36d8a-fdba-49f7-b5a3-bed1e18461f3",
+			"0;5568;1;f;f;f;4431;a0b99de2-5439-49eb-a064-0fcffe56ee93",
+			"0;5567;1;t;f;f;4432;db03d60c-c8e7-4a5f-9221-2bc563086401",
+			"0;5566;1;f;f;f;4433;3d3c565c-b3c3-4540-9b25-00f19805703a",
+			"0;5565;1;t;f;f;4434;a79150be-d112-4979-821d-373d26fb4de7",
+			"0;5564;1;f;f;f;4435;790b0eb3-104f-468d-8a5c-e063b03b52ef",
+			"0;5563;1;t;f;f;4436;4e4f008e-6693-4dd5-a222-10fab336462e",
+			"0;5562;1;f;f;f;4437;a76f9b1c-9df0-4726-b364-1fe46a127ce1",
+			"0;5561;1;t;f;f;4438;723efd99-ae79-4a1f-a547-65c25c1a9382",
+			"0;5560;1;f;f;f;4439;efcda365-df77-464a-ae38-8e9d2efe9507",
+			"0;5559;1;t;f;f;4440;a7b67032-12aa-4517-b596-b30f42067b30",
+			"0;5558;1;f;f;f;4441;ddcd796e-fa9e-4ebc-b99d-4b888a11ad5b",
+			"0;5557;1;t;f;f;4442;9f5e3284-bc1f-47d6-8eea-a0a808e3763b",
+			"0;5556;1;f;f;f;4443;bf893656-243f-46a6-9e1c-b5553a70571b",
+			"0;5555;1;t;f;f;4444;2ab6a603-5363-46fa-b064-0371a7f00756",
+			"0;5554;1;f;f;f;4445;b705d2ae-75df-4eb1-832b-44b8be23fad9",
+			"0;5553;1;t;f;f;4446;ff3e55d8-8e7c-4c92-b578-0043cae15127",
+			"0;5552;1;f;f;f;4447;54a6d14a-12ad-4a83-be79-c4b660f84ab7",
+			"0;5551;1;t;f;f;4448;f661f9f0-fcca-48ea-8509-c664c57d0945",
+			"0;5550;1;f;f;f;4449;315a4995-9e40-46d8-8372-8caceebbd939",
+			"0;5549;1;t;f;f;4450;0c0684cc-b98b-4e7b-99a7-abf3ff020adb",
+			"0;5548;1;f;f;f;4451;0472407d-8980-43d3-9011-f613e9ba4542",
+			"0;5547;1;t;f;f;4452;316eef97-68a9-42a4-b285-84c5992bf985",
+			"0;5546;1;f;f;f;4453;0099f533-d00d-45e0-9d47-6a73ea6c767b",
+			"0;5545;1;t;f;f;4454;91a5628d-9ba0-45c5-8c88-8aaef6aac1f7",
+			"0;5544;1;f;f;f;4455;dcefceaf-915b-4364-9835-eb50c39d918a",
+			"0;5543;1;t;f;f;4456;bdfda388-4f03-4234-8ace-e0792c50c88d",
+			"0;5542;1;f;f;f;4457;ee4f931b-2779-49f9-8bfe-728d82a812e4",
+			"0;5541;1;t;f;f;4458;df0c150e-2be4-4c4c-b889-77147a9a49d9",
+			"0;5540;1;f;f;f;4459;4257933c-9830-48a7-80ff-080af0ca48d5",
+			"0;5539;1;t;f;f;4460;7d417b7b-d502-49e5-a3db-927fceb16363",
+			"0;5538;1;f;f;f;4461;0595a5bc-9848-476b-b5c0-5fb032c5e2e9",
+			"0;5537;1;t;f;f;4462;4f87ca79-c951-4266-98ad-e1cbddca717a",
+			"0;5536;1;f;f;f;4463;ddd9b840-211b-44d0-942c-0706725fc869",
+			"0;5535;1;t;f;f;4464;31c749e1-cc10-4b31-8253-3a1d915db36b",
+			"0;5534;1;f;f;f;4465;d6d6ad9f-d93f-4f78-9a5e-2fc9f7784303",
+			"0;5533;1;t;f;f;4466;18aa7df6-203a-4b6b-8d23-358bb6720462",
+			"0;5532;1;f;f;f;4467;abb62639-68f8-427d-9f8d-ad41b6080e98",
+			"0;5531;1;t;f;f;4468;7a915e05-6551-4462-ab87-77a288bba4c6",
+			"0;5530;1;f;f;f;4469;cc52b64c-cfbf-4e0b-a11d-e4d3b4f1c0d6",
+			"0;5529;1;t;f;f;4470;010ad420-7481-4521-83e5-b43b2a2cee38",
+			"0;5528;1;f;f;f;4471;7aacab9d-c1ad-4fa4-aeae-cee2c9f89b6d",
+			"0;5527;1;t;f;f;4472;237eeaf3-f996-4e9d-a105-b32572ce8fe7",
+			"0;5526;1;f;f;f;4473;f8f7b18b-004f-4999-9c7b-1cdc6389d9c1",
+			"0;5525;1;t;f;f;4474;1e4f6581-9ebf-4eaa-9c56-db2fabc568d4",
+			"0;5524;1;f;f;f;4475;9ab27d92-995b-414e-8d8b-e89a35485a5e",
+			"0;5523;1;t;f;f;4476;b90ed6d4-4f30-45d4-a333-87d0b8a63a71",
+			"0;5522;1;f;f;f;4477;e25e09ba-8a7b-468a-a68b-7b3e240669e5",
+			"0;5521;1;t;f;f;4478;2dad71e5-a587-498f-8dfc-cf28332ab6e6",
+			"0;5520;1;f;f;f;4479;5ff8e653-5840-4efd-9450-063ac570cd55",
+			"0;5519;1;t;f;f;4480;a0419a7f-02d6-434b-b5ac-5e5a0e071ecf",
+			"0;5518;1;f;f;f;4481;f1b1ec48-d702-4f42-890f-4244665064ef",
+			"0;5517;1;t;f;f;4482;177bb460-03cd-4005-a156-1af39e2f8d78",
+			"0;5516;1;f;f;f;4483;d83e5ec7-5d1f-4150-966b-896ada9173b7",
+			"0;5515;1;t;f;f;4484;a367fa0a-9dc5-41f4-9b4e-15885b1a3292",
+			"0;5514;1;f;f;f;4485;bcd16d5e-807d-4ad8-8e50-cb277ab97dd5",
+			"0;5513;1;t;f;f;4486;99750d3b-fde3-4390-b6af-8531da31ccfa",
+			"0;5512;1;f;f;f;4487;3dc851ac-13da-4837-8a03-2467664ba0a6",
+			"0;5511;1;t;f;f;4488;34d412e9-12b4-4531-8951-a9e5c4190878",
+			"0;5510;1;f;f;f;4489;8028eda9-ea41-481b-8872-60f3ac1c7447",
+			"0;5509;1;t;f;f;4490;420f0d14-4af5-437d-9026-8b5c9cb5f7b3",
+			"0;5508;1;f;f;f;4491;867ed39c-bb08-4dbf-bff0-42ad5d66330a",
+			"0;5507;1;t;f;f;4492;8a5a335d-f299-4697-bb4b-b038644303a5",
+			"0;5506;1;f;f;f;4493;8fe4ae84-c456-4ccc-9791-c5c7c2778ef3",
+			"0;5505;1;t;f;f;4494;fd295288-cae8-4346-90aa-6ada57afa26b",
+			"0;5504;1;f;f;f;4495;6e99ea7f-f2ce-4048-98f8-f12715633f69",
+			"0;5503;1;t;f;f;4496;a7cb56b6-7528-4890-8456-c821846e4000",
+			"0;5502;1;t;f;f;4497;f08cf877-69e1-43dc-b9a3-d9d92fe87e55",
+			"0;5501;1;f;f;f;4498;99d56ab3-c103-4fe0-9a81-eedd5ae86d9f",
+			"0;5500;1;f;f;f;4499;69001cb3-27f6-4162-ad48-3ce7365a6cac",
+			"0;5499;1;t;f;f;4500;97c55ad6-7c51-4755-9dc1-6123e3fe2047",
+			"0;5498;1;t;f;f;4501;8eae6c3a-25c5-495d-8460-7451e324ec12",
+			"0;5497;1;f;f;f;4502;6482d511-fe76-4181-bcad-3bba55816bf5",
+			"0;5496;1;f;f;f;4503;bb6a2711-6a9a-4d1a-9a57-48bc91d74034",
+			"0;5495;1;t;f;f;4504;fd4dc490-f314-4917-bfe3-654bd89c9984",
+			"0;5494;1;f;f;f;4505;b780d0ff-6548-483d-aee7-a006ae058421",
+			"0;5493;1;t;f;f;4506;fea04b48-443c-4449-8ac0-d4d71129369b",
+			"0;5492;1;f;f;f;4507;e8ca1988-4cb4-45f1-8c7c-4edfef44f458",
+			"0;5491;1;t;f;f;4508;2e8acb30-07d7-43c3-a99a-32f4b8f29353",
+			"0;5490;1;f;f;f;4509;07d7c811-24c7-4f81-a423-46993d123d6e",
+			"0;5489;1;t;f;f;4510;438b5e75-3df9-461c-a49e-a1b51fd41bdf",
+			"0;5488;1;f;f;f;4511;e67c6344-cc1e-47c4-9ad6-2d235ac86164",
+			"0;5487;1;t;f;f;4512;422c0c29-aa64-47cf-b4ba-7d89a72221d4",
+			"0;5486;1;f;f;f;4513;69c2afc3-41f2-4292-a2a1-235372940f71",
+			"0;5485;1;t;f;f;4514;b4c1065f-4ece-4991-9452-a4c2f8ec24fa",
+			"0;5484;1;t;f;f;4515;de4753be-4ed3-4b40-8f21-ea6a34d8c10a",
+			"0;5483;1;f;f;f;4516;0c3a3903-650c-4a43-9dab-b953ca09927d",
+			"0;5482;1;f;f;f;4517;a29ab082-1ce7-4bd7-aa67-1da7661cf13f",
+			"0;5481;1;t;f;f;4518;c26f207e-5246-4d28-a668-609cff02ee5c",
+			"0;5480;1;t;f;f;4519;0542684a-b9c1-4ed9-8a93-884d039f0738",
+			"0;5479;1;f;f;f;4520;915856db-fb08-44ac-ab8f-542399a5d9e2",
+			"0;5478;1;f;f;f;4521;1d2d2b49-0156-49ba-b966-4f72ed01dfd1",
+			"0;5477;1;t;f;f;4522;d6808b12-5529-47eb-9e99-62770b91f61e",
+			"0;5476;1;f;f;f;4523;9e3b6d28-a4ca-4bae-ab89-7645b227743b",
+			"0;5475;1;t;f;f;4524;76f32237-9e57-441f-8f4b-f149a22cd78e",
+			"0;5474;1;f;f;f;4525;6e7fc871-d4a2-4ce4-a9b4-e2a1bd5c0fce",
+			"0;5473;1;t;f;f;4526;a2cb3e47-31bd-44aa-ad4b-e88c4f881de2",
+			"0;5472;1;f;f;f;4527;6a85cad9-6a59-4a49-8245-e363fdfa03c6",
+			"0;5471;1;t;f;f;4528;d8c73e13-4629-4814-b167-8027bae30d15",
+			"0;5470;1;f;f;f;4529;e221a9f4-4d88-4973-95d2-b28e697bdd30",
+			"0;5469;1;t;f;f;4530;b8d66bca-9276-4285-8e8f-6a730cd95829",
+			"0;5468;1;f;f;f;4531;5c0a4957-761e-461e-a54b-9352a5c08445",
+			"0;5467;1;t;f;f;4532;5b12ae33-bbd1-4410-a6e8-554c3abc14b0",
+			"0;5466;1;f;f;f;4533;8a755e10-7fb2-4c38-8297-5d299356a7d2",
+			"0;5465;1;t;f;f;4534;31c1b2d6-1f69-4aac-be17-7f9d6b16eef4",
+			"0;5464;1;f;f;f;4535;b63346ee-f621-4ef1-b12a-1b999c69546d",
+			"0;5463;1;t;f;f;4536;55de92f3-8e35-4622-b857-60423ac12bdc",
+			"0;5462;1;f;f;f;4537;a32995ed-2244-4dc0-a057-312754580ade",
+			"0;5461;1;t;f;f;4538;0aee4e1a-c328-498d-961a-fd3aa8b57131",
+			"0;5460;1;f;f;f;4539;0ccc8a99-652f-4cc6-add4-bbd88ed67e6e",
+			"0;5459;1;t;f;f;4540;54fc4b98-899d-4974-a63e-bc6c5d0ba583",
+			"0;5458;1;f;f;f;4541;f3732bc9-b2b3-4867-97c9-0f9db1a02454",
+			"0;5457;1;t;f;f;4542;b3fdbc0b-6c36-4bbe-b648-13870a333b9e",
+			"0;5456;1;f;f;f;4543;fada1eca-3cf4-407a-86cf-a35e0c01303e",
+			"0;5455;1;t;f;f;4544;70e9d9ab-705a-4228-b842-04a618d54a70",
+			"0;5454;1;f;f;f;4545;2b61e7df-2163-4948-bea5-141d0bdf0547",
+			"0;5453;1;t;f;f;4546;29cdbedf-6fb9-41d4-ab18-d370a9d1da34",
+			"0;5452;1;f;f;f;4547;dd1778da-9174-4c77-8797-60f5c6501e88",
+			"0;5451;1;t;f;f;4548;99d7c8d3-4410-445d-9496-e73afa7e2045",
+			"0;5450;1;f;f;f;4549;578a48d5-eefa-4e25-a75f-2fc0106fd647",
+			"0;5449;1;t;f;f;4550;6354dee8-794c-46ce-837b-a135a2943a06",
+			"0;5448;1;f;f;f;4551;2c7e057c-9383-4458-b738-c5cfcf7e761d",
+			"0;5447;1;t;f;f;4552;fc9fc491-c62c-409f-b1bd-892b10242469",
+			"0;5446;1;f;f;f;4553;986b1f8d-41a3-487c-a245-5d5563e95722",
+			"0;5445;1;t;f;f;4554;75330201-a6d9-409b-8743-41f3532494d1",
+			"0;5444;1;f;f;f;4555;b8546332-514b-4ccc-a009-6f3e317d4b60",
+			"0;5443;1;t;f;f;4556;2f2a6b20-661d-4c62-8864-dcee8c6b387f",
+			"0;5442;1;f;f;f;4557;1c98aa4b-7a11-47dc-89d0-37d32959c007",
+			"0;5441;1;t;f;f;4558;53b27248-f5d9-443b-901a-a814d68ab3af",
+			"0;5440;1;f;f;f;4559;9f3a9905-c58d-4cc9-9086-d87f32d9fe36",
+			"0;5439;1;t;f;f;4560;649bb2b8-0d1d-410f-93fe-690fc3f63a37",
+			"0;5438;1;f;f;f;4561;96fb36e1-35f6-4f69-a8f5-d7f68bfd4a40",
+			"0;5437;1;t;f;f;4562;98a3bab9-751d-4baf-879d-5cfb435b333e",
+			"0;5436;1;f;f;f;4563;ba86d4f8-030a-4458-8941-9456f36f5232",
+			"0;5435;1;t;f;f;4564;0c6d5358-dac2-4886-909e-f6904f2d06c5",
+			"0;5434;1;f;f;f;4565;9d3e543c-b3e2-4479-8441-ae556e0c555f",
+			"0;5433;1;t;f;f;4566;fd28f60a-a98c-43ee-a489-0e2c26253030",
+			"0;5432;1;f;f;f;4567;c8e91c05-b4f9-49c9-81cc-3917e8f69080",
+			"0;5431;1;t;f;f;4568;62e9df22-ccc3-485a-805d-87cbe334d971",
+			"0;5430;1;f;f;f;4569;f2de7a13-8b0a-4732-8974-c3b533b1302c",
+			"0;5429;1;t;f;f;4570;28754026-f2b4-4b6a-abb4-a13d7afb71a1",
+			"0;5428;1;f;f;f;4571;3a3d86bf-52a7-44a6-9b37-7b371db5ba46",
+			"0;5427;1;t;f;f;4572;055b8b40-d9b4-40a6-ae31-c628f0d984fd",
+			"0;5426;1;f;f;f;4573;3f39a4ae-3164-4fa7-9624-1db480de17a1",
+			"0;5425;1;t;f;f;4574;4e0e5f9b-d3fd-4606-a138-8ccce8e835cc",
+			"0;5424;1;f;f;f;4575;809c0c57-649f-4806-b567-ca62e20da4eb",
+			"0;5423;1;t;f;f;4576;6fc9cb9d-8621-4e3f-b2d6-fbce718d6b44",
+			"0;5422;1;f;f;f;4577;5bd6b854-782d-4eb0-b422-5daba3b75670",
+			"0;5421;1;t;f;f;4578;186aadff-a0bc-45b3-8510-e519ea656e90",
+			"0;5420;1;f;f;f;4579;d1191f23-2fbf-405c-9f6d-591f60ffa1c5",
+			"0;5419;1;t;f;f;4580;4cf078bb-415d-421c-8f20-30a882d5b730",
+			"0;5418;1;f;f;f;4581;01f265b5-4235-42a7-b027-a45548060d49",
+			"0;5417;1;t;f;f;4582;bc8a0046-7f46-46e6-b625-4a5936ff5874",
+			"0;5416;1;f;f;f;4583;79642007-401d-4bd2-a3a7-126f12b8c243",
+			"0;5415;1;t;f;f;4584;c303b456-4614-44c6-8584-2fad7a6c26a1",
+			"0;5414;1;f;f;f;4585;72f8d2e6-36e9-417a-9802-d8e4bf08b752",
+			"0;5413;1;t;f;f;4586;2732177e-0f1b-414f-bd2e-28e7ac6f55b3",
+			"0;5412;1;f;f;f;4587;e7c603be-445c-41e4-a303-81af81f663df",
+			"0;5411;1;t;f;f;4588;34a097a9-9c8c-425e-97ea-5b0be4e1fc5e",
+			"0;5410;1;f;f;f;4589;82809e8a-314d-488f-8264-0dd992c56d39",
+			"0;5409;1;t;f;f;4590;89999cca-ff90-4b27-a568-599617de7f8d",
+			"0;5408;1;f;f;f;4591;0bdf8870-f899-4eeb-be99-572690948b2b",
+			"0;5407;1;t;f;f;4592;5abe10e2-423c-467e-8c42-1d800e8592b0",
+			"0;5406;1;f;f;f;4593;b0715e4b-f2f5-4407-af90-4bd46dc67323",
+			"0;5405;1;t;f;f;4594;1e37d771-a565-4a30-9dd4-991f236d761a",
+			"0;5404;1;f;f;f;4595;19bcc578-8fe3-48ee-a596-117c0a5b11ae",
+			"0;5403;1;t;f;f;4596;6ccc6ed5-63fb-499f-afe0-12e1d4bee198",
+			"0;5402;1;f;f;f;4597;c4d56473-0654-40f5-9aaf-f8846085f189",
+			"0;5401;1;t;f;f;4598;cb10c377-3a36-4aa5-a0b1-26665dafa924",
+			"0;5400;1;f;f;f;4599;7b9e05d4-5511-4255-9079-bf19d07911c0",
+			"0;5399;1;t;f;f;4600;6e0cec2b-3ee0-4ffd-97be-b4c5e518fcd2",
+			"0;5398;1;f;f;f;4601;de058fb5-65c2-49ba-834c-ce2b58c25bf7",
+			"0;5397;1;t;f;f;4602;f7b735d6-9c03-4e5f-bf72-9993daf7338f",
+			"0;5396;1;f;f;f;4603;d40009a3-6243-4b19-bd81-8794f23cf9d3",
+			"0;5395;1;t;f;f;4604;c6843ca7-3198-44c1-9ec7-92aa6f17c70a",
+			"0;5394;1;f;f;f;4605;1e4af71c-2f47-4d13-8bf8-1a3ac9918704",
+			"0;5393;1;t;f;f;4606;ae38d91e-a458-4afc-bfd4-df2463e72022",
+			"0;5392;1;f;f;f;4607;5eb2f890-89f2-4a30-96b4-b6f0deedb35b",
+			"0;5391;1;t;f;f;4608;32e8624c-824b-4e13-b2ae-9f6796cec743",
+			"0;5390;1;f;f;f;4609;b7cabd7c-f296-4592-b95b-121a31cbf590",
+			"0;5389;1;t;f;f;4610;453e734a-7e71-4e68-9136-d08931083983",
+			"0;5388;1;f;f;f;4611;0b567079-6442-4423-b777-bb0995300f88",
+			"0;5387;1;t;f;f;4612;6045c6fb-9ff8-4b58-a63c-438890243f13",
+			"0;5386;1;f;f;f;4613;cdfaafed-3241-4866-b42f-261399632db7",
+			"0;5385;1;t;f;f;4614;d3dd7da1-6523-40ca-9e95-5a8fda834a8d",
+			"0;5384;1;f;f;f;4615;64b98143-8845-4abb-849f-53e9ad05ee52",
+			"0;5383;1;t;f;f;4616;4f5de744-2fd0-4adb-bd32-509bc60b3cce",
+			"0;5382;1;f;f;f;4617;dea5514b-de2b-4a8d-9fd7-92c72c8d08da",
+			"0;5381;1;t;f;f;4618;0bae1a2a-e197-415d-a2f7-8bf91c61f39c",
+			"0;5380;1;f;f;f;4619;9e912ff1-c109-466c-9897-3859bd9277d4",
+			"0;5379;1;t;f;f;4620;da9db4f4-8c9a-4103-8ceb-fcd69ba47994",
+			"0;5378;1;f;f;f;4621;4706380e-ed15-408e-9a6f-f7c429b63c46",
+			"0;5377;1;t;f;f;4622;50b283b1-c7d0-45f8-8ec4-d806988f6219",
+			"0;5376;1;f;f;f;4623;3dd0cf0d-a4a8-47ea-a609-c01e8dd3fae9",
+			"0;5375;1;t;f;f;4624;fc4e04c7-f37f-4bae-b2fe-0160c7bcafbb",
+			"0;5374;1;f;f;f;4625;ffc718e4-b493-4d0d-b318-1b7dcdb515f9",
+			"0;5373;1;t;f;f;4626;9456be96-ea58-4ce9-82a7-deb540d6b4bb",
+			"0;5372;1;f;f;f;4627;a3dca6cf-3451-4099-b5b3-675ed76fc66f",
+			"0;5371;1;t;f;f;4628;6aa57c61-f9ea-4a67-909b-88a615b88bcc",
+			"0;5370;1;f;f;f;4629;5a08d961-41ac-4f16-b8cd-749bad73b0bc",
+			"0;5369;1;t;f;f;4630;119bfcb6-63f8-4176-9358-cdd5d458999c",
+			"0;5368;1;f;f;f;4631;fbb3bbcc-ebd3-45f1-b84a-372f72307895",
+			"0;5367;1;t;f;f;4632;477ad103-ac84-4c1c-9703-4e0261b30f5f",
+			"0;5366;1;f;f;f;4633;5ca13e6b-5f4b-4e10-bd2e-0c0a3bced9df",
+			"0;5365;1;t;f;f;4634;601da87e-2ceb-4dcb-b0a1-e26842524190",
+			"0;5364;1;f;f;f;4635;1b27616e-e4e0-426e-8d20-0d4a0087b688",
+			"0;5363;1;t;f;f;4636;3aed1507-6c6c-442b-8896-828e1e67823f",
+			"0;5362;1;f;f;f;4637;dc0208af-23d7-44f8-92a4-7371ca49ef9c",
+			"0;5361;1;t;f;f;4638;9bbfab5a-2595-4a04-8552-6866a3402e2d",
+			"0;5360;1;f;f;f;4639;a6cda210-d59e-4d4a-8746-6d21e773187a",
+			"0;5359;1;t;f;f;4640;a8c9407d-153c-4748-bea8-93dc5723fad3",
+			"0;5358;1;f;f;f;4641;72d88d1e-d40f-4746-a791-f16c0ba71d88",
+			"0;5357;1;t;f;f;4642;989fc7fc-cbdf-4eba-aac8-eb299a422d07",
+			"0;5356;1;f;f;f;4643;3baf572d-b5f9-451c-b26f-9f224935dab5",
+			"0;5355;1;t;f;f;4644;430ba15a-efe9-4d6d-a8e4-abf83ef52ac3",
+			"0;5354;1;f;f;f;4645;7005a5b4-81c3-4736-bb62-2c0f25a8cd86",
+			"0;5353;1;t;f;f;4646;d1c87aad-fb40-49e0-afc8-429a96589c08",
+			"0;5352;1;f;f;f;4647;e90aa3b2-091d-445f-a7b9-ecaf85693ced",
+			"0;5351;1;t;f;f;4648;426d9bb6-562e-4b7c-803a-9f926d28b7f9",
+			"0;5350;1;f;f;f;4649;55a0bf13-36e5-4edd-b71e-5f0708ff9c39",
+			"0;5349;1;t;f;f;4650;77ca1ece-be0e-4cb3-829e-da85e0e97878",
+			"0;5348;1;f;f;f;4651;93ce7af8-6fb9-4477-82eb-1370a8a7c384",
+			"0;5347;1;t;f;f;4652;3c30f4fc-def0-4457-b0b5-2b67273831bc",
+			"0;5346;1;f;f;f;4653;c37863ad-33e9-444d-a201-c0df0ab0b24f",
+			"0;5345;1;t;f;f;4654;2ac25658-86c5-4bb2-b9fc-e62b28328e37",
+			"0;5344;1;f;f;f;4655;5df73588-d6b3-4574-9301-1552ff36cd72",
+			"0;5343;1;t;f;f;4656;e130dc78-2d88-4c00-9a30-8e0acce03bf1",
+			"0;5342;1;f;f;f;4657;96288aa3-92b4-44f2-a510-aa3fa17547f8",
+			"0;5341;1;t;f;f;4658;3562dd35-6f45-49b7-a7e6-5557ecc79054",
+			"0;5340;1;f;f;f;4659;e132d23b-6620-4f00-904d-369bf435387b",
+			"0;5339;1;t;f;f;4660;f60110bf-f7e1-4d9b-87f9-ce242ff7bd46",
+			"0;5338;1;f;f;f;4661;eb623af0-ff8b-48da-be17-048233cf134e",
+			"0;5337;1;t;f;f;4662;9d6cabc5-a53c-4849-83d2-c6a400fef2ed",
+			"0;5336;1;f;f;f;4663;967c106f-bac6-4e5f-9130-0cb6297ee45f",
+			"0;5335;1;t;f;f;4664;54cd650a-19c2-4f60-8c3b-e3521e427877",
+			"0;5334;1;f;f;f;4665;bdf4ac87-dc99-4794-bfe9-401c1a857335",
+			"0;5333;1;t;f;f;4666;40188065-e704-43f6-af9b-cc5d0052083f",
+			"0;5332;1;f;f;f;4667;5215b07e-b55a-4355-8ef3-9d5043083180",
+			"0;5331;1;t;f;f;4668;826ffd55-4a7e-418a-848a-e8adf5e5618e",
+			"0;5330;1;f;f;f;4669;062438c4-62f5-4e5f-b5a4-d05185bd9af8",
+			"0;5329;1;t;f;f;4670;77d9304c-10b3-49cc-b359-c378b27ee459",
+			"0;5328;1;f;f;f;4671;7d4626f6-4074-4d11-b902-6b15c913d758",
+			"0;5327;1;t;f;f;4672;80866130-bc83-4ba2-9b5d-424cb48a0fad",
+			"0;5326;1;f;f;f;4673;b67633ea-65bf-45e4-8608-4fb3de7c65a6",
+			"0;5325;1;t;f;f;4674;d2e65120-b456-4ac9-b309-8012a3ca1bbc",
+			"0;5324;1;f;f;f;4675;111e356f-92e0-4a43-9375-8faa7d025b1b",
+			"0;5323;1;t;f;f;4676;62c9fc62-82fa-45e7-b737-27f987f3737b",
+			"0;5322;1;f;f;f;4677;d5f7a61c-fd9d-4c98-a832-89e47d319ffb",
+			"0;5321;1;t;f;f;4678;d053405e-8347-478c-a3f6-d17fc13cffe9",
+			"0;5320;1;f;f;f;4679;792ad733-7b6c-4b46-8b89-16ff8bd6d3ec",
+			"0;5319;1;t;f;f;4680;bb4645cd-eaf6-4f05-b79f-172f3cdcc9b3",
+			"0;5318;1;f;f;f;4681;193e6439-cfa5-4660-b841-bd0f41298d0c",
+			"0;5317;1;t;f;f;4682;42e54416-2e14-426a-9e58-c082602ba9ed",
+			"0;5316;1;f;f;f;4683;20d7adf1-8302-4e5f-b2cc-04b7bb440134",
+			"0;5315;1;t;f;f;4684;ceac2d60-82da-4cbe-8131-4dea37adcb1e",
+			"0;5314;1;f;f;f;4685;dc90ad48-3e22-4c52-95d7-c51dc06037a4",
+			"0;5313;1;t;f;f;4686;6e5b509d-d15b-4e94-84c2-80964533a1ae",
+			"0;5312;1;f;f;f;4687;34cd4c72-bef0-4c44-9f5f-3969bdabc850",
+			"0;5311;1;t;f;f;4688;ea0cacd9-6c1f-468f-ac59-2672b40e1aef",
+			"0;5310;1;f;f;f;4689;470f7740-9c1b-4243-b4d9-796fafc5f81f",
+			"0;5309;1;t;f;f;4690;a31a5dc1-5ea4-43d7-abf7-71dae2d263c1",
+			"0;5308;1;f;f;f;4691;a8a11cd4-6492-422f-baa6-ef359723b85a",
+			"0;5307;1;t;f;f;4692;6da72e6f-d9e6-4622-af6d-3d7407797127",
+			"0;5306;1;f;f;f;4693;5335b892-7d74-41b5-8e43-d0be40734599",
+			"0;5305;1;t;f;f;4694;3028a83c-ffdb-4a22-b7ba-2b3f5b69aa59",
+			"0;5304;1;f;f;f;4695;84bc8a8d-cb73-4f7a-9bf1-6d4d002b0fb9",
+			"0;5303;1;t;f;f;4696;97073649-9910-4c20-8e61-e40108f68e68",
+			"0;5302;1;f;f;f;4697;1d28628c-e5f2-4590-86be-db0cdce49535",
+			"0;5301;1;t;f;f;4698;19aaae86-0edc-4ebe-8a82-db36c963c827",
+			"0;5300;1;f;f;f;4699;e3fc5ffc-5728-47a6-8be2-5da5c958cefe",
+			"0;5299;1;t;f;f;4700;cf7fd6eb-94a0-4224-a9dd-162e671357b9",
+			"0;5298;1;f;f;f;4701;cc825996-fe42-4787-aec1-25b5e2435fa6",
+			"0;5297;1;t;f;f;4702;e815978d-e3a0-4979-8ad2-4d4c642113a9",
+			"0;5296;1;f;f;f;4703;51cf7284-d49a-4512-a2a1-41e326a685a8",
+			"0;5295;1;t;f;f;4704;ad2a2230-bc08-4337-86c9-fe605e7ac5df",
+			"0;5294;1;f;f;f;4705;03b8b0a3-2848-4e6a-86f7-2c900071410f",
+			"0;5293;1;t;f;f;4706;2ea1e145-3aa3-4d82-8db5-8bb24dd6c215",
+			"0;5292;1;f;f;f;4707;ae59aeb5-1892-4f60-8fa3-81adff7bc9c8",
+			"0;5291;1;t;f;f;4708;ff80336a-4cc6-45e7-833c-ac8356ba0771",
+			"0;5290;1;f;f;f;4709;4ad04baf-a96a-4bf8-8495-290c2b356820",
+			"0;5289;1;t;f;f;4710;4c990d9e-4ccb-42ea-8359-ece6ac0598e4",
+			"0;5288;1;f;f;f;4711;762b3ffe-365d-4937-ac8d-70cea809c4d7",
+			"0;5287;1;t;f;f;4712;5a03083b-0a18-4661-a7ee-020a50fd41ff",
+			"0;5286;1;f;f;f;4713;b7842920-2641-4fe3-bd1d-abe51990ec6f",
+			"0;5285;1;t;f;f;4714;9e3c4844-d1ed-4559-89cf-5cf662545159",
+			"0;5284;1;f;f;f;4715;2859ce0a-5445-4925-a44a-ffae4104698c",
+			"0;5283;1;t;f;f;4716;6770325d-4ad6-4b40-b67f-3c43b8bc05da",
+			"0;5282;1;f;f;f;4717;9d4c7121-7394-40a1-9fb4-6998236f0b16",
+			"0;5281;1;t;f;f;4718;b51cb525-7d11-42f0-a88c-8a102793eec5",
+			"0;5280;1;f;f;f;4719;62cde540-6bbd-42d1-b5e7-c9bb955a72b7",
+			"0;5279;1;t;f;f;4720;d2c53566-ab65-4037-8b69-29997360b2fa",
+			"0;5278;1;f;f;f;4721;8c046af4-e008-4875-a818-65f9202c3bcc",
+			"0;5277;1;t;f;f;4722;7ed65ee5-3093-4b68-b80a-23fc3cb654da",
+			"0;5276;1;f;f;f;4723;8bedcd0e-5695-4faa-b9af-432bd340c6ec",
+			"0;5275;1;t;f;f;4724;5b55f2e4-6cb8-4253-bc6b-e73988e2b2d0",
+			"0;5274;1;f;f;f;4725;a19e8ae0-d258-4dff-84d3-327786e0dd16",
+			"0;5273;1;t;f;f;4726;55c9877e-dd37-4333-8840-64897109f944",
+			"0;5272;1;f;f;f;4727;b5e81753-fca3-4466-805c-60ee70c3b3e2",
+			"0;5271;1;t;f;f;4728;06af868d-9b89-47df-bce0-479dc57ad6e8",
+			"0;5270;1;f;f;f;4729;b0a9f132-8e0d-4856-b7a9-04560a44c70b",
+			"0;5269;1;t;f;f;4730;8a60e026-c4dd-4903-83f5-8885f7899937",
+			"0;5268;1;f;f;f;4731;dcff30d0-1d38-48fe-b5c8-38de3b11fb72",
+			"0;5267;1;t;f;f;4732;7284681d-8361-4854-9122-066dbe14458d",
+			"0;5266;1;f;f;f;4733;5b3106cc-aabc-4143-b762-5a3b2126b18a",
+			"0;5265;1;t;f;f;4734;a4a11b47-9760-4ddf-ad1a-24b1d1f2ea40",
+			"0;5264;1;f;f;f;4735;83610df6-8711-477e-99ef-a288ffd9d77c",
+			"0;5263;1;t;f;f;4736;b4057bc9-1766-4e23-a040-12df278e42f3",
+			"0;5262;1;f;f;f;4737;ca264e12-ebc1-4d83-9c43-13295370e782",
+			"0;5261;1;t;f;f;4738;3f111d1e-85e0-4ae2-a254-4977cbccb5ea",
+			"0;5260;1;f;f;f;4739;21bd50fe-3f44-4b6c-9777-96cdce9a1ace",
+			"0;5259;1;t;f;f;4740;1a3c39df-2571-4736-bbe3-f2fae4788a23",
+			"0;5258;1;f;f;f;4741;76b34bbc-adc9-46c4-8882-1b236e19a9a2",
+			"0;5257;1;t;f;f;4742;4ed6f1ad-39f0-4cfd-9271-a99f2fa6e5cb",
+			"0;5256;1;f;f;f;4743;56346021-f643-42f5-ae6e-0234173e127b",
+			"0;5255;1;t;f;f;4744;d87e2b21-fc1a-45e6-940e-c0742c9ab033",
+			"0;5254;1;f;f;f;4745;c30124c3-a4ce-4e0f-ae62-8cfb25a91717",
+			"0;5253;1;t;f;f;4746;b34b6ef0-0bbf-4eae-861e-4cf569dee7b0",
+			"0;5252;1;f;f;f;4747;00d82b6b-265e-4a43-bb11-a20d6f56f9c9",
+			"0;5251;1;t;f;f;4748;1b4c3830-3bbf-4633-999a-a88bf71511c4",
+			"0;5250;1;f;f;f;4749;3d5b8475-c6ef-4bcb-ad33-661fab2c5dc3",
+			"0;5249;1;t;f;f;4750;b4aeac31-cba2-4049-9565-54c4a3097241",
+			"0;5248;1;f;f;f;4751;42374baf-a0ce-4176-934a-ccce074e09b7",
+			"0;5247;1;t;f;f;4752;d489b228-307a-4858-a37f-61fecfd286d8",
+			"0;5246;1;f;f;f;4753;ae00ccaf-8c82-4843-813d-27711a095b7b",
+			"0;5245;1;t;f;f;4754;d2638b8a-3821-4ab1-8e05-e7f937e422d8",
+			"0;5244;1;f;f;f;4755;c9b00107-b4ed-404d-a9ca-1060feab40cf",
+			"0;5243;1;t;f;f;4756;2488c6dc-8447-4058-aede-2b2feba4de76",
+			"0;5242;1;t;f;f;4757;de09104c-7d05-42c5-b0cb-d39d9a393994",
+			"0;5241;1;f;f;f;4758;63f33bce-f676-44e0-944d-4c43fa9f1d9d",
+			"0;5240;1;f;f;f;4759;34ccfd1a-97ad-40df-bebc-edf86a4a648e",
+			"0;5239;1;t;f;f;4760;91c891b6-4b52-4b58-8cbb-6ce7e11e90cc",
+			"0;5238;1;f;f;f;4761;b23adbdb-5caf-4443-bf7f-7ed5cf6960dc",
+			"0;5237;1;t;f;f;4762;a47468a3-386a-4a08-9106-51d7b404fca6",
+			"0;5236;1;f;f;f;4763;ce0c49ec-a398-4708-9a48-045f6cfe36b4",
+			"0;5235;1;t;f;f;4764;21ce3792-9b7d-4513-96f6-4b5802d387d8",
+			"0;5234;1;f;f;f;4765;a43083c7-b808-43fc-ad3c-b6c836a3cf5f",
+			"0;5233;1;t;f;f;4766;fd0ed1e3-a8ac-4db3-ae83-9bf2bf46b570",
+			"0;5232;1;f;f;f;4767;568cad8b-1a6c-4a6c-a078-a4c91f07337f",
+			"0;5231;1;t;f;f;4768;323335f0-c57e-439a-bd62-946baf95427b",
+			"0;5230;1;f;f;f;4769;e1f58c76-27cd-458b-a2b7-8f1d0b71de33",
+			"0;5229;1;t;f;f;4770;3695372f-1849-427c-ba56-961ef842a5a7",
+			"0;5228;1;f;f;f;4771;6cad2c27-a51c-4a71-93eb-74e242cecc21",
+			"0;5227;1;t;f;f;4772;19f29417-0355-41ef-9fc3-e65999729d88",
+			"0;5226;1;f;f;f;4773;95911c7a-1017-4e90-8ac1-2cfc54439fab",
+			"0;5225;1;t;f;f;4774;83aceade-8f31-45ed-b90d-14f83ddc4591",
+			"0;5224;1;f;f;f;4775;9466aefb-81d9-494f-aec2-8b8795e60ce8",
+			"0;5223;1;t;f;f;4776;5d64b853-afb4-4530-9918-dca3c401dad4",
+			"0;5222;1;f;f;f;4777;7c8e8d96-204d-4c46-a14f-8580b0eab899",
+			"0;5221;1;t;f;f;4778;5245c905-fe3f-439f-b160-6ec817c57d00",
+			"0;5220;1;f;f;f;4779;b7b50a90-3646-4eeb-8276-51a565bfd739",
+			"0;5219;1;t;f;f;4780;97088501-9e8d-416c-bd87-11dc544964c7",
+			"0;5218;1;f;f;f;4781;44ed6756-f548-4dc8-8962-7939b901a4a3",
+			"0;5217;1;t;f;f;4782;01a8b7ae-4a91-465f-8ee7-05c5feb081db",
+			"0;5216;1;f;f;f;4783;d571c56b-474d-464b-b116-6348e9b1c913",
+			"0;5215;1;t;f;f;4784;857c5c93-63a5-4c2e-a8c8-d6dc1aaf347f",
+			"0;5214;1;f;f;f;4785;b3a57569-9705-4714-8a83-17ce79b4c2ff",
+			"0;5213;1;t;f;f;4786;682e7b82-0e31-42c2-8aee-c57a6d3cc950",
+			"0;5212;1;f;f;f;4787;4c13d3f5-5cdf-4785-bba3-cfb1994f3513",
+			"0;5211;1;t;f;f;4788;7c977cbd-2928-4dad-b019-157f779b893b",
+			"0;5210;1;f;f;f;4789;b4616544-dc45-417e-9b1e-bf249c4ce133",
+			"0;5209;1;t;f;f;4790;9ebedb38-c940-436e-987a-7a75f67e14f1",
+			"0;5208;1;f;f;f;4791;1b9e37b7-2d36-4248-8b9e-158c724db8f6",
+			"0;5207;1;t;f;f;4792;02cbdb48-319a-4e92-a165-e798cd2e8ae6",
+			"0;5206;1;f;f;f;4793;2d8a0f2a-3705-402c-9105-fd35b15751ee",
+			"0;5205;1;t;f;f;4794;562e5387-4d11-4525-8319-fcb228b5f53d",
+			"0;5204;1;f;f;f;4795;741a3220-d4dd-4654-93c6-5262c59d6164",
+			"0;5203;1;t;f;f;4796;16afd25f-0129-4413-b081-e5aca1d9768f",
+			"0;5202;1;f;f;f;4797;e8861e2d-515c-4028-aef8-b4500c13b308",
+			"0;5201;1;t;f;f;4798;cb1cc603-915c-46fb-9ec1-f0668bf5ed7d",
+			"0;5200;1;f;f;f;4799;68dba7c2-920f-48ea-a30d-c6a1c4499fde",
+			"0;5199;1;t;f;f;4800;a4502d9c-295a-4572-a7e7-75799e25ac73",
+			"0;5198;1;t;f;f;4801;78d8ead7-6f57-43e3-bb2b-013ba7bf60db",
+			"0;5197;1;f;f;f;4802;91e06de2-9697-4cf3-866f-423d905a567a",
+			"0;5196;1;f;f;f;4803;d65567f2-147b-4829-9e10-7f50a8c8d415",
+			"0;5195;1;t;f;f;4804;56627fef-2d30-4bdc-93f8-34d441837952",
+			"0;5194;1;t;f;f;4805;2140f95f-0211-4e07-b00b-a0351a02645b",
+			"0;5193;1;f;f;f;4806;47851d6a-fc97-4b65-a61b-8da4b809e386",
+			"0;5192;1;f;f;f;4807;dc7c8201-5d94-44c8-b05d-dc6c9132964f",
+			"0;5191;1;t;f;f;4808;a9d056bb-7551-478f-af25-cbb537ebad5a",
+			"0;5190;1;t;f;f;4809;45280810-37b0-45df-94c9-e2b9a8d0e772",
+			"0;5189;1;f;f;f;4810;bd247486-6d45-4a65-b1ff-61d1a04ec1c5",
+			"0;5188;1;f;f;f;4811;5d3d6580-979c-4001-b9da-45b63ff33a70",
+			"0;5187;1;t;f;f;4812;67cb34d2-a89f-4e9d-9f01-e687feceeea5",
+			"0;5186;1;t;f;f;4813;80ced8d9-a23f-43eb-ad25-60b9e8281bda",
+			"0;5185;1;f;f;f;4814;c18e0340-576d-40be-ae93-ab0fe3316399",
+			"0;5184;1;f;f;f;4815;e1361333-e3ed-485e-8e9d-52e2084621d8",
+			"0;5183;1;t;f;f;4816;a83d9d5a-76dc-4bbd-8ff7-6796f9af4ed2",
+			"0;5182;1;f;f;f;4817;b4b6f8f1-e0bc-4fda-8c13-467f6f185278",
+			"0;5181;1;t;f;f;4818;f4f165f3-a5d2-4aac-aed2-3b02b226f589",
+			"0;5180;1;f;f;f;4819;d89e533b-74fe-4720-84a4-bc8471c933d5",
+			"0;5179;1;t;f;f;4820;cdeb2f97-aa97-4ef0-95f3-a1f527e6f0c9",
+			"0;5178;1;f;f;f;4821;96777050-c585-4409-8c87-6e69cc962b40",
+			"0;5177;1;t;f;f;4822;f302e527-ec7c-4b4b-b264-7a23b18af3f2",
+			"0;5176;1;f;f;f;4823;9d67a42e-b215-44f2-8dc0-608dbc7de081",
+			"0;5175;1;t;f;f;4824;5800f4cf-5b33-4e12-98bc-d01ab2709d91",
+			"0;5174;1;f;f;f;4825;c28c95c0-feb7-499b-81e8-415f42a24333",
+			"0;5173;1;t;f;f;4826;d46d8992-2b46-4286-8e92-0024d13e67d6",
+			"0;5172;1;f;f;f;4827;07691c9b-c466-4d73-bc07-cfe870a12099",
+			"0;5171;1;t;f;f;4828;b746ecb7-5d20-4c15-ac5f-99ae4bd756fe",
+			"0;5170;1;f;f;f;4829;81c5004f-9e82-4c4b-9112-5c83ab861452",
+			"0;5169;1;t;f;f;4830;a558dfb4-459e-4af6-87f6-584a80d0f764",
+			"0;5168;1;f;f;f;4831;bc1214fc-bc98-4846-a8a3-7de56b38fb09",
+			"0;5167;1;t;f;f;4832;ea56d1bd-5714-4b67-9cca-1e686241c49c",
+			"0;5166;1;f;f;f;4833;6e2195a7-ec37-4dc6-be5a-95bb6b92c001",
+			"0;5165;1;t;f;f;4834;4c852196-7b7c-47fe-ae70-2088f73f18c9",
+			"0;5164;1;f;f;f;4835;f8b8080f-4b1e-47dc-97bf-f21fe9c6a815",
+			"0;5163;1;t;f;f;4836;6d0d0dfa-e4a5-4a73-8f2d-ef598a0480bb",
+			"0;5162;1;f;f;f;4837;fd46cd3b-754b-4a14-9af3-ccd2b9e8b00d",
+			"0;5161;1;t;f;f;4838;7ab16593-5935-4149-9788-6ca0c62f84c6",
+			"0;5160;1;f;f;f;4839;53feceed-a7e9-417a-9455-316daa5d202c",
+			"0;5159;1;t;f;f;4840;05c759c9-00ba-41f0-b0fb-6b9ab3fb22f5",
+			"0;5158;1;f;f;f;4841;08069a77-d695-43f2-979e-94139ff3eeef",
+			"0;5157;1;t;f;f;4842;fc113ade-1f61-4024-aea1-a961815823e0",
+			"0;5156;1;f;f;f;4843;24acf6f8-03e9-4797-9d5e-4dcdcfba31c6",
+			"0;5155;1;t;f;f;4844;0cb0fdfd-df78-4332-9c32-d114dd18ef9e",
+			"0;5154;1;f;f;f;4845;d825e4e9-b95c-4bb0-9862-505efe6108bf",
+			"0;5153;1;t;f;f;4846;c345d184-60e9-4fa1-96f0-5a29d8fc2798",
+			"0;5152;1;f;f;f;4847;5498f1bf-69c3-437d-b17b-218e24c4a2fe",
+			"0;5151;1;t;f;f;4848;5cd1f5c8-e01f-4345-9279-6fb0d56492da",
+			"0;5150;1;t;f;f;4849;810dec81-c4da-4055-85fc-9241a1304716",
+			"0;5149;1;f;f;f;4850;c9948835-be1a-4daa-b239-63b73c4ed067",
+			"0;5148;1;f;f;f;4851;bcf7e88a-774b-41c3-813f-588ba3315f53",
+			"0;5147;1;t;f;f;4852;70dcc327-eb38-4862-b06c-1fcc2a064f7a",
+			"0;5146;1;f;f;f;4853;dc524501-c98a-43f5-83e3-eca026b04c6f",
+			"0;5145;1;t;f;f;4854;7faa2d68-ca23-4f12-bef7-2c932edaf93a",
+			"0;5144;1;f;f;f;4855;6c60d568-272a-4589-9112-8e1646f0046e",
+			"0;5143;1;t;f;f;4856;78a19b52-f59a-4501-881b-94952ed9e741",
+			"0;5142;1;f;f;f;4857;bca29f20-7e9b-432b-9570-97464c448b1b",
+			"0;5141;1;t;f;f;4858;1a786685-71b6-4c80-a5ae-ebc2927818ba",
+			"0;5140;1;f;f;f;4859;72ab81c2-0be3-4831-ba59-619ebdf77de1",
+			"0;5139;1;t;f;f;4860;01133a96-e84f-41d3-a725-dd0dbfaf88ad",
+			"0;5138;1;f;f;f;4861;d7ff03c2-6310-45e0-91ef-7eefcc846602",
+			"0;5137;1;t;f;f;4862;43994c02-b36c-4d17-b13d-a2cc4e7d6d46",
+			"0;5136;1;f;f;f;4863;f689b3c3-1c0d-464c-b115-8f0b6496e91a",
+			"0;5135;1;t;f;f;4864;ffccac55-1039-4007-a994-ce7ab25b0a22",
+			"0;5134;1;f;f;f;4865;d954a97a-dfc5-4265-82b2-a1dfd17870e1",
+			"0;5133;1;t;f;f;4866;8ffc9f62-23c2-4caa-bdad-ba2ab93ae371",
+			"0;5132;1;f;f;f;4867;56846173-2d79-4c1a-a758-4513f52ed376",
+			"0;5131;1;t;f;f;4868;430193b0-10da-46ab-9619-f38c0cd4b6f3",
+			"0;5130;1;f;f;f;4869;1e2b9074-015d-4260-8933-fa938dc5e279",
+			"0;5129;1;t;f;f;4870;b6a48713-57bf-4638-b233-21194aa6fcf9",
+			"0;5128;1;f;f;f;4871;8237438f-42af-4659-8bba-d0f007d00e97",
+			"0;5127;1;t;f;f;4872;745a269a-efd8-4de0-8f8e-f5d7f8a0d875",
+			"0;5126;1;f;f;f;4873;3ee1e446-a1b5-4860-ae1c-898665c10f07",
+			"0;5125;1;t;f;f;4874;4d433860-5ac9-4b73-86c6-486b272f92cf",
+			"0;5124;1;f;f;f;4875;b7fe7185-9e0f-4107-8101-08db52a32942",
+			"0;5123;1;t;f;f;4876;d99f8dea-c7f0-4e6b-929d-7f5612ac7193",
+			"0;5122;1;f;f;f;4877;a51dd1a6-e907-4e9c-b3f5-8c333c299b97",
+			"0;5121;1;t;f;f;4878;7523d108-ea76-4e76-821d-32cf37558a24",
+			"0;5120;1;f;f;f;4879;60edf6d9-a9b4-4d62-a3fd-ef71106b3ae1",
+			"0;5119;1;t;f;f;4880;afad6fd8-da15-4bcd-beaa-2699496b0ae5",
+			"0;5118;1;f;f;f;4881;9bd85cf3-9033-4e9c-84fb-560bfd237413",
+			"0;5117;1;t;f;f;4882;05aebad9-061f-417a-aaae-fbea13eb4a97",
+			"0;5116;1;f;f;f;4883;f989f8f9-4448-43cd-a5f7-e91bc9767f37",
+			"0;5115;1;t;f;f;4884;50624c97-1ceb-4db1-9511-d1379ae16ead",
+			"0;5114;1;f;f;f;4885;c149320c-b63c-4776-bcae-2d71a31b200a",
+			"0;5113;1;t;f;f;4886;18d602ea-537e-40dd-b0d5-1416fb683779",
+			"0;5112;1;f;f;f;4887;23eae410-e724-448e-a13d-a7922671e0a9",
+			"0;5111;1;t;f;f;4888;504ee49d-6537-40b8-bce5-ca08e893c745",
+			"0;5110;1;f;f;f;4889;a2e1fcc2-8cb7-4899-9e4d-7846bd17cc96",
+			"0;5109;1;t;f;f;4890;1c7a4da4-fad4-4814-998e-eda621a4bd2a",
+			"0;5108;1;f;f;f;4891;ea0ca5d5-3397-404b-9d9b-f8bcf6a1beb9",
+			"0;5107;1;t;f;f;4892;cfdf636c-ad86-45f5-ae1c-aa082e8e52c3",
+			"0;5106;1;f;f;f;4893;51786d09-f6ec-4d62-bfb0-f6131f15ad3c",
+			"0;5105;1;t;f;f;4894;db877d3d-aacb-4a5c-8d57-57df34946974",
+			"0;5104;1;f;f;f;4895;da7a1de5-266e-4430-9a80-85a667f25b6b",
+			"0;5103;1;t;f;f;4896;cf42e294-1dd4-43fc-a3f0-54576ef8a0c2",
+			"0;5102;1;f;f;f;4897;a8c83ff8-1503-49c2-a8c8-dca2e9dbbf32",
+			"0;5101;1;t;f;f;4898;c93e709e-5de3-4129-840f-b3ecb386747e",
+			"0;5100;1;f;f;f;4899;bf353be1-5a77-4cb3-978f-5b42a766a076",
+			"0;5099;1;t;f;f;4900;8cd277ec-92e0-4cb8-bed1-790775402431",
+			"0;5098;1;f;f;f;4901;aa54ec27-8a8d-45ea-948c-2270ff4a33f4",
+			"0;5097;1;t;f;f;4902;dff48ccd-aabe-4793-9096-f914a2ac23f7",
+			"0;5096;1;f;f;f;4903;7ad482c0-c23f-4a7a-82f2-10946b972c98",
+			"0;5095;1;t;f;f;4904;f4350889-5344-4a66-b579-64358f055b64",
+			"0;5094;1;f;f;f;4905;4b7d2eb9-5509-4fa3-a7ce-18915c5e11ae",
+			"0;5093;1;t;f;f;4906;ec9ed1bf-060f-4c98-babf-65c647ded426",
+			"0;5092;1;f;f;f;4907;fdbba924-1863-4699-923b-334838100c38",
+			"0;5091;1;t;f;f;4908;55654de4-3e14-46c6-a782-c7fcd6999227",
+			"0;5090;1;f;f;f;4909;2312fd0a-9a28-4ad4-8eb3-4116a15afafe",
+			"0;5089;1;t;f;f;4910;fb9cf472-eff7-4ec6-8eb6-2ce38e7f41bc",
+			"0;5088;1;f;f;f;4911;e45a33b8-3d81-4d55-b8be-45ec6331a950",
+			"0;5087;1;t;f;f;4912;705c4932-9978-4a73-bd8e-07aa2d37e39e",
+			"0;5086;1;f;f;f;4913;c6b49457-ada2-48f3-a3f2-686e0afdfa96",
+			"0;5085;1;t;f;f;4914;822caa4d-2229-4060-890d-b424cbcd2633",
+			"0;5084;1;f;f;f;4915;f52cefea-a909-452e-8174-b2b6919b29a0",
+			"0;5083;1;t;f;f;4916;64263d65-6ce5-4289-ba88-22ae8a4396ed",
+			"0;5082;1;f;f;f;4917;51fd10b0-03de-440d-b311-5d26546eddaa",
+			"0;5081;1;t;f;f;4918;b45fa431-8ee1-41e2-af2e-586b3feb7061",
+			"0;5080;1;f;f;f;4919;846b6d53-a565-422e-83f5-d0aa5386ffbf",
+			"0;5079;1;t;f;f;4920;c4724a86-965a-4976-acad-cb812c5a4985",
+			"0;5078;1;t;f;f;4921;e1a3a827-35d0-4e2d-8d6d-8733de6225c4",
+			"0;5077;1;f;f;f;4922;c2176931-6eb7-4d52-be7b-49a24d6d55fe",
+			"0;5076;1;f;f;f;4923;1dbb2bc8-8a3b-489e-9edc-61995538d7ba",
+			"0;5075;1;t;f;f;4924;5ec887ce-1764-43ad-b3a6-35c54365860b",
+			"0;5074;1;t;f;f;4925;c9fbf1fc-903d-40d6-a922-7c0f89a9f08a",
+			"0;5073;1;f;f;f;4926;0ba65c43-7cbf-41eb-bdd6-0584f78a3bf0",
+			"0;5072;1;f;f;f;4927;224bb71f-9513-4217-a0d4-ee347a4db57c",
+			"0;5071;1;t;f;f;4928;f87126de-340f-482c-9baa-ff515cb45619",
+			"0;5070;1;t;f;f;4929;64ceba83-7249-4795-872c-d94b5a3737eb",
+			"0;5069;1;f;f;f;4930;d826b913-6059-4e5e-9a16-2a4762e81770",
+			"0;5068;1;f;f;f;4931;13981a92-7331-49b9-802c-2691d3c61de2",
+			"0;5067;1;t;f;f;4932;65ab1fce-f90c-4709-87b8-244c516d273b",
+			"0;5066;1;f;f;f;4933;6d17fa68-b6ff-476f-b7e7-3ef06ec5033c",
+			"0;5065;1;t;f;f;4934;9c9f4ae3-a5c3-4f15-8cd3-0efb8505df33",
+			"0;5064;1;f;f;f;4935;edae865b-0466-46a9-a7c4-0be46ba3193e",
+			"0;5063;1;t;f;f;4936;73669ef9-7c81-4796-99a2-b2eadb1e26ff",
+			"0;5062;1;f;f;f;4937;3c812b10-c095-48f7-9c00-4ce75848aaf5",
+			"0;5061;1;t;f;f;4938;ddb4a74c-2a33-4013-a311-208d036c2ea7",
+			"0;5060;1;f;f;f;4939;a0f843ae-49f2-4c01-83d4-9a6990fb4d2c",
+			"0;5059;1;t;f;f;4940;721e79f9-d869-4caf-9165-651b13290387",
+			"0;5058;1;f;f;f;4941;74338481-e420-46d2-a358-6303b0352bba",
+			"0;5057;1;t;f;f;4942;bf3cdefd-5396-4ffc-8b32-7cfdd61c4419",
+			"0;5056;1;f;f;f;4943;1161855a-fd14-4136-9355-274d198fd90d",
+			"0;5055;1;t;f;f;4944;a25bf44d-82f2-48f0-b47e-515c53e6ab39",
+			"0;5054;1;f;f;f;4945;49d39e5a-7cca-46eb-92b6-beac776f1b1e",
+			"0;5053;1;t;f;f;4946;bbcee3c2-0f23-49ec-a5c5-c1a2f998a8a4",
+			"0;5052;1;f;f;f;4947;0388fbc6-17a2-4869-b942-adcc6f939116",
+			"0;5051;1;t;f;f;4948;a5aa66c5-5d51-4a2a-afcc-cf10bd045cff",
+			"0;5050;1;f;f;f;4949;c7fccc78-a7bc-44c9-bdf3-415ecb4f59b2",
+			"0;5049;1;t;f;f;4950;8d4fad36-8a49-4723-9aed-c7b776e35a06",
+			"0;5048;1;f;f;f;4951;e3d05a5a-8c87-42c8-983f-0b623065ce14",
+			"0;5047;1;t;f;f;4952;5e970a67-49c4-438d-9b16-df88bad22776",
+			"0;5046;1;f;f;f;4953;b1b39c7f-9781-4790-a4d1-d3eedc7adbd7",
+			"0;5045;1;t;f;f;4954;a8091672-fb4b-4a35-abd4-739548b397f1",
+			"0;5044;1;f;f;f;4955;604bc11b-7e5d-45bc-917b-9b64876ecfba",
+			"0;5043;1;t;f;f;4956;04ab00d1-cd1a-471c-b259-78b1679bed6c",
+			"0;5042;1;f;f;f;4957;bd6b9b6d-7fe9-44ef-8330-341612b07389",
+			"0;5041;1;t;f;f;4958;c277c5e0-8649-4503-90fe-406153dbb958",
+			"0;5040;1;f;f;f;4959;b623e5c4-56e2-436d-bea6-b727fa8f2bdc",
+			"0;5039;1;t;f;f;4960;77d7b74b-744e-4645-bff5-35d56df87bac",
+			"0;5038;1;f;f;f;4961;1ad4350f-2a31-4ab7-b8a5-79daa16f5abc",
+			"0;5037;1;t;f;f;4962;ba174ed6-6fa3-4ca3-8ff0-4c1ee187dcc9",
+			"0;5036;1;f;f;f;4963;e8125493-c2b5-40dd-a0da-0613cdbe9507",
+			"0;5035;1;t;f;f;4964;4da87432-d058-4839-8425-58a65fa1fb75",
+			"0;5034;1;f;f;f;4965;49a1f6c5-d15a-41a4-94c8-6ef529e0e66b",
+			"0;5033;1;t;f;f;4966;9ec8fc3d-5003-4611-afde-8d07f46440a6",
+			"0;5032;1;f;f;f;4967;52f66c47-247a-4f13-94b1-575a9ad020d2",
+			"0;5031;1;t;f;f;4968;bc1ff10d-5048-42ac-8325-b6c37125ea4a",
+			"0;5030;1;f;f;f;4969;d200f7e8-3153-4bfe-9356-74d52164d1ce",
+			"0;5029;1;t;f;f;4970;ad6d80db-5201-4155-8f94-791815a6f5b9",
+			"0;5028;1;f;f;f;4971;2976937b-c2b0-4957-b2ec-eaf649a22c54",
+			"0;5027;1;t;f;f;4972;59f49ab3-d433-4eaf-bf06-e139b7d89377",
+			"0;5026;1;f;f;f;4973;80892be2-d332-4f79-9e7e-c76261e63467",
+			"0;5025;1;t;f;f;4974;2c72d40d-0d07-4c01-b3a0-e2b6f00b0f99",
+			"0;5024;1;f;f;f;4975;bd47d57e-5ee5-4fdc-baf6-ee93222e6468",
+			"0;5023;1;t;f;f;4976;2eeb4a65-6992-42a0-bd34-1cff08972eea",
+			"0;5022;1;f;f;f;4977;68fd8cbb-523a-4283-bdbd-b4a5bf188c59",
+			"0;5021;1;t;f;f;4978;5737f5d5-00b1-4cc3-873c-f68b4f03dd56",
+			"0;5020;1;f;f;f;4979;59ce8c56-2777-4eb5-b97d-a199ee2a020f",
+			"0;5019;1;t;f;f;4980;62de46a8-b71b-4667-ac8e-d7cbd0357cc9",
+			"0;5018;1;f;f;f;4981;9e85030e-747c-46bc-8d83-97bcf4c7b7aa",
+			"0;5017;1;t;f;f;4982;94d499a8-e0a0-40c6-92be-65c3415c921e",
+			"0;5016;1;f;f;f;4983;993a3839-2c50-4523-970f-8aea46543d29",
+			"0;5015;1;t;f;f;4984;7cc26558-4b81-456a-bca0-b43522dc27f2",
+			"0;5014;1;f;f;f;4985;e3bb4581-e1e2-4223-bb27-1fb23b8b78e9",
+			"0;5013;1;t;f;f;4986;39e66718-f16f-4e98-a8de-282d944e88c3",
+			"0;5012;1;f;f;f;4987;ff6b5bd6-d5ea-4cf3-8502-05d79cc07f47",
+			"0;5011;1;t;f;f;4988;04be06de-c7ac-4ef0-95cc-d4534fcd6f71",
+			"0;5010;1;f;f;f;4989;dba02e43-dddb-4f11-bcb6-5b4adebf249c",
+			"0;5009;1;t;f;f;4990;18fe266c-bd2f-4f2d-b1ff-647c59369af8",
+			"0;5008;1;f;f;f;4991;3227777b-164f-4398-b88e-33e55ccc7349",
+			"0;5007;1;t;f;f;4992;07e5e3df-803c-4b54-9eef-92bd7c5541a6",
+			"0;5006;1;f;f;f;4993;33ad65fb-e53f-4406-b680-49c022f60937",
+			"0;5005;1;t;f;f;4994;8dc94eb9-2347-4d58-a11f-b959718ad8d1",
+			"0;5004;1;f;f;f;4995;563167a9-b43c-42e2-9bbe-a9c3ddd6efba",
+			"0;5003;1;t;f;f;4996;7827eb2f-2936-4284-98cf-b3ede5e3b648",
+			"0;5002;1;f;f;f;4997;e0216937-7da5-4f3c-b044-6adad0c3a5e4",
+			"0;5001;1;t;f;f;4998;16481f0a-bafd-43ce-b17a-eebde12339b6",
+			"0;5000;1;f;f;f;4999;aaa46e7c-fd4e-477f-abb0-9c385b7983ca",
+			"0;4999;1;t;f;f;5000;31c28b22-4d56-415a-af6e-2d80a91a83f4",
+			"0;4998;1;f;f;f;5001;c8b134b8-0bbc-4ab4-9dbc-55f7a650ce25",
+			"0;4997;1;t;f;f;5002;e4d25e34-c093-4bc9-9077-e71c1d61e595",
+			"0;4996;1;f;f;f;5003;e716226b-9c30-4c7a-94be-55a535b0e4b0",
+			"0;4995;1;t;f;f;5004;92e22ebc-7b02-4591-ae54-6f50ff126f4a",
+			"0;4994;1;f;f;f;5005;31ef2b9f-b736-4c6e-b942-46894f19d079",
+			"0;4993;1;t;f;f;5006;d1d28131-d3cf-4aeb-aeba-e56897cdf09c",
+			"0;4992;1;f;f;f;5007;dfa5d5f7-6727-4899-a1e9-abde60089498",
+			"0;4991;1;t;f;f;5008;487c182f-5fbd-445f-9c83-2d1b6e5e97de",
+			"0;4990;1;f;f;f;5009;77306f4a-755e-422d-9e46-31b320bb357b",
+			"0;4989;1;t;f;f;5010;8e1085df-827c-4a0d-a6ac-f2d8c1c0eb47",
+			"0;4988;1;f;f;f;5011;5ad41cca-1fdf-42ce-926e-324eeac4e3c3",
+			"0;4987;1;t;f;f;5012;d3de654a-9738-4e9b-a4a6-d94e6d49b886",
+			"0;4986;1;f;f;f;5013;ec5f743a-643c-43f5-ad74-578ba83af7c7",
+			"0;4985;1;t;f;f;5014;1c9475dd-6b8d-45b2-a0e5-80f1d1c9b21b",
+			"0;4984;1;f;f;f;5015;3b6100ad-9785-482b-8d40-eeb21a2fc033",
+			"0;4983;1;t;f;f;5016;616965dc-c89e-4f50-a79f-21fe6f8328f5",
+			"0;4982;1;f;f;f;5017;41cbefa3-5dd8-493e-8c1d-c24049e55437",
+			"0;4981;1;t;f;f;5018;628e10bd-3b0f-4acb-b416-8da9b7b828e5",
+			"0;4980;1;f;f;f;5019;0986442a-5648-4c73-a9df-848c92eef80f",
+			"0;4979;1;t;f;f;5020;723044fa-7ea3-49a2-bbc8-47aa021a1129",
+			"0;4978;1;f;f;f;5021;023b4fb2-66a8-4bb2-be18-09375b6571cf",
+			"0;4977;1;t;f;f;5022;16574834-db37-46d8-8629-a1da02ade248",
+			"0;4976;1;f;f;f;5023;d1c7a046-3463-4500-87e9-367f8ff8e664",
+			"0;4975;1;t;f;f;5024;a14d308e-4e97-47d9-ac61-19f3ed3df9ef",
+			"0;4974;1;f;f;f;5025;3792c8e6-9812-4458-a34a-57aa869e6ce0",
+			"0;4973;1;t;f;f;5026;5d7ae254-630e-410c-90b9-ce4affec1d6e",
+			"0;4972;1;f;f;f;5027;afd31354-4174-466b-8882-a78a62be7f5e",
+			"0;4971;1;t;f;f;5028;bf90e90e-d22d-4f6b-9740-c3c3faef34b3",
+			"0;4970;1;f;f;f;5029;fe2055fb-2450-42a5-84bf-493b307d4025",
+			"0;4969;1;t;f;f;5030;839fcafe-0524-45b4-be59-443cdb77306e",
+			"0;4968;1;f;f;f;5031;6b1bbd4a-c3f1-45c0-ab7a-08f05ba3686d",
+			"0;4967;1;t;f;f;5032;149af195-1061-4628-b021-88b837aa0dd4",
+			"0;4966;1;f;f;f;5033;b5cd5c29-a056-48df-97c6-909803df2e41",
+			"0;4965;1;t;f;f;5034;1c4a79da-b661-48aa-8619-b96e51504884",
+			"0;4964;1;f;f;f;5035;52b65009-e0bc-4cca-bb67-c03777b0ecd6",
+			"0;4963;1;t;f;f;5036;d32210f4-0925-4f57-a4dc-be22750b17eb",
+			"0;4962;1;f;f;f;5037;d058098b-1fbd-4a9b-bf38-eb245b13b488",
+			"0;4961;1;t;f;f;5038;473c6397-dfd1-469a-b761-4ea99c79a176",
+			"0;4960;1;f;f;f;5039;638d18c4-d1e6-4901-b7d7-985bcb6a2a94",
+			"0;4959;1;t;f;f;5040;b064a3bb-064e-4313-8635-704090ce76e0",
+			"0;4958;1;f;f;f;5041;2f55c645-a561-4b83-ace0-0a1479ec844c",
+			"0;4957;1;t;f;f;5042;17978f3d-1429-46d4-9edd-de9182b3e4cf",
+			"0;4956;1;f;f;f;5043;2be49e34-7e87-42b6-ba11-1ae736d20484",
+			"0;4955;1;t;f;f;5044;de40ccd1-1344-41a3-bcb4-590443a6b86e",
+			"0;4954;1;t;f;f;5045;8a08724e-66e5-4c5f-91be-476e7c72847d",
+			"0;4953;1;f;f;f;5046;f038e2c6-76a3-4484-8ab1-97f0eae69393",
+			"0;4952;1;f;f;f;5047;39a35751-d56c-450e-ab04-2f0b3e083867",
+			"0;4951;1;t;f;f;5048;807d9821-11c7-45ae-ba27-a7fc8a44bebe",
+			"0;4950;1;f;f;f;5049;4242a5f8-34fc-4948-982a-fdf8157a2361",
+			"0;4949;1;t;f;f;5050;c06637a7-4f84-4751-959d-1a5456fbbe52",
+			"0;4948;1;f;f;f;5051;3ea5659f-926e-4916-acf9-22b0c80ae6c5",
+			"0;4947;1;t;f;f;5052;c7d929f1-0d86-438c-b88a-a464afe46294",
+			"0;4946;1;t;f;f;5053;2b321682-38ac-48f7-9112-8926db1d26b3",
+			"0;4945;1;f;f;f;5054;c6a1dd60-fec4-47ac-a72b-2f2f4dd5b3db",
+			"0;4944;1;f;f;f;5055;23757df1-dd27-4add-81e0-d5d95d05a4b9",
+			"0;4943;1;t;f;f;5056;98d58d47-8443-4859-ab67-3fb1023d523b",
+			"0;4942;1;t;f;f;5057;036db5e1-4b7a-44e8-95bf-e417d21b49c1",
+			"0;4941;1;f;f;f;5058;d433357e-caf7-4695-9ee9-52746220321e",
+			"0;4940;1;f;f;f;5059;d65bd184-29a9-4112-9144-a5e86885db36",
+			"0;4939;1;t;f;f;5060;b4fdcdc0-8251-445e-9078-42a1420e26be",
+			"0;4938;1;f;f;f;5061;8098d67a-6e9e-42ca-86be-5ce92415f714",
+			"0;4937;1;t;f;f;5062;fcb0860e-5596-413c-a028-570e961022e1",
+			"0;4936;1;f;f;f;5063;659ecbde-42e0-4219-b4f4-13444037a7f8",
+			"0;4935;1;t;f;f;5064;14705cf3-ab3a-49db-bd5b-4d1ec135976e",
+			"0;4934;1;t;f;f;5065;a01c2635-d50f-44a5-b5d5-9f39f49f0682",
+			"0;4933;1;f;f;f;5066;e65c016e-2d71-4e95-8606-ded975fbe967",
+			"0;4932;1;f;f;f;5067;8309e323-1efe-480c-a47d-c1d33594162c",
+			"0;4931;1;t;f;f;5068;ddc25701-651f-4872-8c03-c803521eff58",
+			"0;4930;1;t;f;f;5069;4685073f-223b-42dc-b415-4470fcfedd0f",
+			"0;4929;1;f;f;f;5070;a38190f8-1a54-4ec1-9e7b-c4bde520b0dc",
+			"0;4928;1;f;f;f;5071;516f78b2-5bea-4b2e-ad1e-4ad6d3e44bd5",
+			"0;4927;1;t;f;f;5072;b2db5f3d-649d-418f-adc8-743b52dc7674",
+			"0;4926;1;f;f;f;5073;da3da481-401d-4d11-90e1-37e4ed09c018",
+			"0;4925;1;t;f;f;5074;605bb036-68e5-4e55-abe7-91f76f74c700",
+			"0;4924;1;f;f;f;5075;8d0ef664-da41-4cd1-883f-0e63c6ac60e5",
+			"0;4923;1;t;f;f;5076;983537a1-e3ab-481f-9b99-44d5f864d70a",
+			"0;4922;1;f;f;f;5077;7a288c73-766b-48b4-b247-b6f460e1cfa2",
+			"0;4921;1;t;f;f;5078;d46ec1d8-06bb-4993-b7d2-aefd300bc345",
+			"0;4920;1;f;f;f;5079;1fdb1e4b-dd87-4094-91e0-6df652958a83",
+			"0;4919;1;t;f;f;5080;9181c705-7fad-4fd8-83d6-51684bbaa384",
+			"0;4918;1;f;f;f;5081;0acedc65-1a95-436a-81f7-d17e0a0cbb34",
+			"0;4917;1;t;f;f;5082;32b029b4-9b1b-47e9-b31b-dd33ddfa6d8f",
+			"0;4916;1;f;f;f;5083;e51cbf9a-7a8f-493f-acdb-ca1ce2bf1f10",
+			"0;4915;1;t;f;f;5084;07082a49-50f2-4d1d-b6a4-48cbeccd1cf6",
+			"0;4914;1;f;f;f;5085;eee6c063-d564-46bc-8b74-fac305038942",
+			"0;4913;1;t;f;f;5086;98ab86a6-3175-425b-ae98-c7b67baa0e31",
+			"0;4912;1;f;f;f;5087;53b8d155-c436-4c34-946f-0bdc4e8bf150",
+			"0;4911;1;t;f;f;5088;8d997ae5-cc30-449f-8d64-0ff95f52636f",
+			"0;4910;1;f;f;f;5089;38cfbdbb-6054-4c46-bddc-768530d044dd",
+			"0;4909;1;t;f;f;5090;d0a73bb2-52f4-4293-8a0f-0617761f8be2",
+			"0;4908;1;f;f;f;5091;e1646ff5-3f6b-4e1d-91a5-cf0b74aefa6b",
+			"0;4907;1;t;f;f;5092;17ab70c0-0e49-4de2-a49f-0cd681ae288b",
+			"0;4906;1;f;f;f;5093;1e9ee70e-588f-4d9b-8931-16c3393ebdb8",
+			"0;4905;1;t;f;f;5094;30ca3990-b7b2-4254-9df6-b991bb8158f4",
+			"0;4904;1;t;f;f;5095;93f9ae0f-1087-4f8d-bc80-9b0d764323d5",
+			"0;4903;1;f;f;f;5096;4f2fea9c-83af-43fb-ad23-cac1a66a29fa",
+			"0;4902;1;f;f;f;5097;79c2459c-55da-421a-8bb1-aeefce735ccb",
+			"0;4901;1;t;f;f;5098;0ef9c5db-4357-444a-bcef-867406ce8e01",
+			"0;4900;1;f;f;f;5099;af43dc96-38f3-47a7-a838-65d2d2ce7617",
+			"0;4899;1;t;f;f;5100;b5bc4ab7-e515-4f1e-9232-e21ef849ee26",
+			"0;4898;1;f;f;f;5101;891d4d2a-f5e9-4051-a87f-4446649a9b3f",
+			"0;4897;1;t;f;f;5102;b722b861-82ef-466a-9bd6-958e19fc4bba",
+			"0;4896;1;f;f;f;5103;c9dd9de9-458b-4783-ae27-9a6f1eeefdbe",
+			"0;4895;1;t;f;f;5104;03284959-eb8c-47fc-96d7-e132924c05e0",
+			"0;4894;1;f;f;f;5105;79740933-a683-4d21-9d68-85d9aba0a4e3",
+			"0;4893;1;t;f;f;5106;4ac5726d-56e2-4e49-8717-f09c405faf58",
+			"0;4892;1;f;f;f;5107;96368baf-1acb-4153-9fc5-70d14710bd26",
+			"0;4891;1;t;f;f;5108;1099e478-2546-4094-8c8a-87dac7937077",
+			"0;4890;1;f;f;f;5109;ee77a7cd-66de-4f4b-85f2-772eab5842e5",
+			"0;4889;1;t;f;f;5110;228aa89a-5c57-4011-9859-85fed8389dcf",
+			"0;4888;1;f;f;f;5111;3ca3c454-0bd3-4615-bac7-757a244bb7cf",
+			"0;4887;1;t;f;f;5112;32ad2e48-e7f5-43dd-9d94-73e3b57ad159",
+			"0;4886;1;f;f;f;5113;a39c7396-3c6e-49ad-baad-4edd6eee90c7",
+			"0;4885;1;t;f;f;5114;8b8682cb-21c7-4cc2-9434-fc3301803e64",
+			"0;4884;1;f;f;f;5115;ef9b925e-547d-44e7-8bee-29b261c75bf1",
+			"0;4883;1;t;f;f;5116;4d9cf4b9-f405-43de-b07d-ffbbe420f3c2",
+			"0;4882;1;f;f;f;5117;53d68c7d-9a6d-4446-801c-1c62e333c7e8",
+			"0;4881;1;t;f;f;5118;b2f36c39-9197-4e5a-b815-983c5b729bf3",
+			"0;4880;1;f;f;f;5119;80be266f-6cc9-44c0-a504-d97694022684",
+			"0;4879;1;t;f;f;5120;a826db9d-df26-403b-8af9-4aeb9cbda9af",
+			"0;4878;1;f;f;f;5121;0256337a-310a-42cd-a702-f3ff56e18fb6",
+			"0;4877;1;t;f;f;5122;85de3b46-98ad-4682-b3a8-02651564e9c8",
+			"0;4876;1;f;f;f;5123;d04afa54-9f1e-4994-9c3e-b249dc7fc895",
+			"0;4875;1;t;f;f;5124;4fe23a70-d5a6-458b-9a93-e2867a96271f",
+			"0;4874;1;f;f;f;5125;d5743c14-f08c-4ae5-b821-346485b26f4a",
+			"0;4873;1;t;f;f;5126;7b0687e4-aa33-4f32-ac00-33c7ba5ca4f0",
+			"0;4872;1;f;f;f;5127;93d89688-8906-4a47-9942-e4df2ef8536b",
+			"0;4871;1;t;f;f;5128;8f24b555-57a7-4fcd-8b7a-8c1f171c2ad1",
+			"0;4870;1;f;f;f;5129;87aeaf19-4be2-4145-a949-fb3de1c36f64",
+			"0;4869;1;t;f;f;5130;aaddd126-4262-4bc1-b437-9812f5adae6a",
+			"0;4868;1;f;f;f;5131;e17698b9-1311-48c8-b7ff-c1c1e8a394e4",
+			"0;4867;1;t;f;f;5132;a36ed465-e2da-4c32-80e2-ac3b897e6a1c",
+			"0;4866;1;f;f;f;5133;1c5822ae-8a80-4b33-af6a-29a773073f6f",
+			"0;4865;1;t;f;f;5134;5dc69616-0eaa-4d70-a9a5-f39f90d38ca9",
+			"0;4864;1;f;f;f;5135;995fef4c-0154-41fa-a3ea-e382e9eb866d",
+			"0;4863;1;t;f;f;5136;6deb6313-cc2a-4324-9921-75303f967fca",
+			"0;4862;1;f;f;f;5137;c7c34773-ffb1-4ce3-962f-2d8c1642ea21",
+			"0;4861;1;t;f;f;5138;2e8f9e6e-5dfa-466e-a03e-9ce9dcd394db",
+			"0;4860;1;f;f;f;5139;fdbd4882-c95c-4996-bc05-d4452c91bc75",
+			"0;4859;1;t;f;f;5140;eb26bb84-7238-4ce5-83f7-d4446f2da8b7",
+			"0;4858;1;f;f;f;5141;906cf08b-e100-4bb9-a60b-7ec9ca015c87",
+			"0;4857;1;t;f;f;5142;8842e760-4ac6-4bb8-a496-48105917527d",
+			"0;4856;1;f;f;f;5143;dd4769c5-5e13-49fb-a991-4e3241c5576f",
+			"0;4855;1;t;f;f;5144;8233e018-1c6e-41b9-b364-187410ef9bb1",
+			"0;4854;1;f;f;f;5145;a1f36780-5bbc-42b4-a009-eac89185ee83",
+			"0;4853;1;t;f;f;5146;b2f2af30-7036-4891-a3aa-c8b8774cbe01",
+			"0;4852;1;f;f;f;5147;8b7a435a-bd0e-4cac-a32a-93f15afe9aea",
+			"0;4851;1;t;f;f;5148;0431f136-e2c3-4634-ab9b-9b162276a678",
+			"0;4850;1;f;f;f;5149;346c2bd8-17e3-4366-afd4-7803ce7a121c",
+			"0;4849;1;t;f;f;5150;e965b2fe-3d90-4b1d-a143-cefd891703ec",
+			"0;4848;1;f;f;f;5151;5cc49781-e19c-4af2-a934-3b23033b6a78",
+			"0;4847;1;t;f;f;5152;41282d9e-3b4a-4b51-af8d-6531e0ba2667",
+			"0;4846;1;f;f;f;5153;95230755-e346-476d-8fa9-1c04543dd29b",
+			"0;4845;1;t;f;f;5154;e2d680aa-cf23-4da7-9598-ba991ee2c4c0",
+			"0;4844;1;f;f;f;5155;bb5c81ac-8a67-47c3-a268-71cfdfca8291",
+			"0;4843;1;t;f;f;5156;58ea9850-bb00-4297-8ea1-db07018829e0",
+			"0;4842;1;f;f;f;5157;7f8ce0d4-be9d-4424-beae-f7c948630c2a",
+			"0;4841;1;t;f;f;5158;18182cca-8604-47b2-b820-dad63f030438",
+			"0;4840;1;f;f;f;5159;d53fb28d-4414-4a73-a270-40bcd0c50a01",
+			"0;4839;1;t;f;f;5160;7e3da007-f779-401e-bdef-fe310f4ba642",
+			"0;4838;1;f;f;f;5161;5f243bdd-4555-4851-b91f-d171155a6d53",
+			"0;4837;1;t;f;f;5162;637f45ca-37f0-4fb7-8f91-34769a7e81b4",
+			"0;4836;1;f;f;f;5163;af311fe5-c8de-4c8a-9c7c-2e97f473b179",
+			"0;4835;1;t;f;f;5164;9b0618da-4506-4efc-95e5-d21d735b02d0",
+			"0;4834;1;f;f;f;5165;f897690b-0761-42dd-a28e-47babf156c09",
+			"0;4833;1;t;f;f;5166;5f4eda18-6589-419b-8283-a41cab270dc8",
+			"0;4832;1;f;f;f;5167;f7726801-a399-4e3d-a957-8c43f4629b32",
+			"0;4831;1;t;f;f;5168;dc556700-b67c-487b-a847-5c214f17f00c",
+			"0;4830;1;t;f;f;5169;43ce66c3-1075-4a93-8af6-8d4a714c95ab",
+			"0;4829;1;f;f;f;5170;d2e1f4cd-4518-4ec9-a114-71ec75b1ed5f",
+			"0;4828;1;f;f;f;5171;c3fa8c06-d487-4802-b89d-84912ed03050",
+			"0;4827;1;t;f;f;5172;d4a7b669-b31d-4208-9126-e02e9234c662",
+			"0;4826;1;t;f;f;5173;b6c95caf-0923-491c-9e22-9343a7dddb1d",
+			"0;4825;1;f;f;f;5174;8094b40a-11c9-47e3-8e9d-081da8c62894",
+			"0;4824;1;f;f;f;5175;946b7f12-3e13-451c-b740-a1d883aea237",
+			"0;4823;1;t;f;f;5176;25521398-5e27-4e0a-9003-7505ff2b1fe6",
+			"0;4822;1;f;f;f;5177;56288411-9180-4996-8664-90789dfc613d",
+			"0;4821;1;t;f;f;5178;09e00d42-9497-4b62-b445-9518258a1aba",
+			"0;4820;1;f;f;f;5179;b3fa0013-5df3-45fe-9968-af1bc2cb9241",
+			"0;4819;1;t;f;f;5180;7d35c919-00ab-4d26-b2f5-e57d021e8e68",
+			"0;4818;1;f;f;f;5181;8a088401-158f-493b-88cc-72bf1ff46f5b",
+			"0;4817;1;t;f;f;5182;03534025-3d79-4344-bd2e-e2e0479aae87",
+			"0;4816;1;f;f;f;5183;58d8aa7f-1412-4c7a-b8fa-0e8780a1d011",
+			"0;4815;1;t;f;f;5184;e185a37f-bab1-48e4-b8d0-aa3078e9f9d5",
+			"0;4814;1;f;f;f;5185;30b209ee-5afe-4ac0-83fd-abf7478fef9b",
+			"0;4813;1;t;f;f;5186;5d34294b-7e54-4d92-9d75-3532a8c64033",
+			"0;4812;1;f;f;f;5187;1ae65217-dc38-43d4-821e-f6e61efaa82e",
+			"0;4811;1;t;f;f;5188;eada8fa4-f2ec-4b49-b428-f94ceca29e3b",
+			"0;4810;1;f;f;f;5189;3bc1b988-76d1-4f64-9db7-988fc94d0e98",
+			"0;4809;1;t;f;f;5190;b289d69a-7a48-49a2-9141-8ab485377191",
+			"0;4808;1;f;f;f;5191;4d0dda04-747a-4757-82c7-95d0e9a5bba0",
+			"0;4807;1;t;f;f;5192;51c98281-597d-4245-a313-89f79bb4b38f",
+			"0;4806;1;f;f;f;5193;6acbab35-0223-49ab-a1d0-81752ae13294",
+			"0;4805;1;t;f;f;5194;ed771d09-542e-4f09-9525-3444f3c1cff2",
+			"0;4804;1;f;f;f;5195;d746517b-128c-415d-81e8-0c2ef172ab88",
+			"0;4803;1;t;f;f;5196;c8008cf4-384c-4af3-adc2-56a4a01889f2",
+			"0;4802;1;f;f;f;5197;f481b532-0a6b-4d93-b393-71cf06582d9c",
+			"0;4801;1;t;f;f;5198;63eb5e7d-70b1-4acd-bbd0-59027ce1d8e2",
+			"0;4800;1;f;f;f;5199;c9baa73c-4f0f-4ffd-973e-5557b9890a3d",
+			"0;4799;1;t;f;f;5200;9d8447cb-8021-4610-90c7-b0bc2a070c4c",
+			"0;4798;1;f;f;f;5201;5b2a8390-cedb-4a7c-9a4f-aebfea8024c4",
+			"0;4797;1;t;f;f;5202;8ef9d63d-6370-4861-9135-f01116e7cab2",
+			"0;4796;1;t;f;f;5203;9e477d7b-21ef-4565-96a4-35f28f663cf8",
+			"0;4795;1;f;f;f;5204;62cf7e85-3369-44d7-96de-2799ad952e3e",
+			"0;4794;1;f;f;f;5205;d9e66691-ef05-49fd-af02-c904271e3b4c",
+			"0;4793;1;t;f;f;5206;eddc3896-15c7-48ed-8d94-7c7fc8742f29",
+			"0;4792;1;t;f;f;5207;cca82f78-6ffe-4ad0-b4cc-a4fe8da58ba6",
+			"0;4791;1;f;f;f;5208;e85c1ddd-b3a4-4309-a06c-303a21afd49c",
+			"0;4790;1;f;f;f;5209;c6c9de90-5861-48e9-85d4-f32822a383cb",
+			"0;4789;1;t;f;f;5210;990dcec4-b11c-47c8-8acc-259890caabe6",
+			"0;4788;1;t;f;f;5211;66a85d8b-4520-47af-b71f-6eb87ff730e5",
+			"0;4787;1;f;f;f;5212;3688c34b-4431-421b-910a-d2fd03188f8e",
+			"0;4786;1;f;f;f;5213;c491b4e7-f972-4b08-ad93-b5b96dd4f83b",
+			"0;4785;1;t;f;f;5214;06ef6afa-3f50-4430-8b5f-0decc244f07b",
+			"0;4784;1;t;f;f;5215;4244eb40-514f-422c-a9ad-f208378ffbe0",
+			"0;4783;1;f;f;f;5216;319ab845-67e8-41d6-8ea1-10b029a86f45",
+			"0;4782;1;f;f;f;5217;f31cc70d-f4f4-40ae-ad94-0c5c9fb5fec5",
+			"0;4781;1;t;f;f;5218;d377ed14-4bb1-4d9d-92bd-5e3ed108502d",
+			"0;4780;1;f;f;f;5219;908c4c98-64e3-4c0e-9d3e-74d2561b4d27",
+			"0;4779;1;t;f;f;5220;97e1626f-a0e4-4f8a-b58d-f9fc50491fc2",
+			"0;4778;1;f;f;f;5221;f1327545-324f-4dc8-b6cf-4a9a5dada3c5",
+			"0;4777;1;t;f;f;5222;c8faae5b-b76e-426f-959a-8addbbc91f96",
+			"0;4776;1;f;f;f;5223;23c43366-656d-4ef5-9d32-bbde22408953",
+			"0;4775;1;t;f;f;5224;2bc72f4b-5601-4593-9344-a30b71f433ed",
+			"0;4774;1;f;f;f;5225;189c76a1-b10e-44c3-ba1e-044c84acb3d3",
+			"0;4773;1;t;f;f;5226;51c42570-ee4b-4c89-ad4e-a3ecb96c9ff4",
+			"0;4772;1;f;f;f;5227;3d140e81-9559-4a45-b485-3e9a11aafb39",
+			"0;4771;1;t;f;f;5228;edafad3c-658b-4025-9e93-2bbfda22974f",
+			"0;4770;1;f;f;f;5229;cdb1b231-8a5e-465b-a721-08f2271e4243",
+			"0;4769;1;t;f;f;5230;c3a5a1ee-2eb6-4c72-a990-6e29c0c745c4",
+			"0;4768;1;f;f;f;5231;f05aa6bd-2b0f-4d48-b93b-c5df975796d1",
+			"0;4767;1;t;f;f;5232;a9be0b6f-aad0-4b44-a7c2-00af5794e065",
+			"0;4766;1;f;f;f;5233;71758cea-a591-46ba-a193-9b73119ca9b6",
+			"0;4765;1;t;f;f;5234;b6b27fc6-f525-4bed-9e34-05ecfa245de5",
+			"0;4764;1;f;f;f;5235;c54e9eb2-cc2d-4fae-9fbf-80dc6fcff00b",
+			"0;4763;1;t;f;f;5236;4e2565e0-8bd1-479d-bc68-e4c90127fdb2",
+			"0;4762;1;f;f;f;5237;2cb3d8ef-823e-4f80-bc02-a1245c208d14",
+			"0;4761;1;t;f;f;5238;cb386ab1-1b0a-45f7-8814-0fbecf2c5040",
+			"0;4760;1;t;f;f;5239;3ef2011a-d27a-4d16-a13f-69c8c7f5cca5",
+			"0;4759;1;f;f;f;5240;10e7ce08-3faa-47d0-8df5-4d1c14511fd8",
+			"0;4758;1;f;f;f;5241;62180cfd-94f4-4731-a332-7ef6db7a55db",
+			"0;4757;1;t;f;f;5242;ae526a16-9bf6-4b7e-beb2-975d4b6d936e",
+			"0;4756;1;t;f;f;5243;1b7daaef-792b-4c74-999e-74d4652643cb",
+			"0;4755;1;f;f;f;5244;f2efde1b-8289-4df6-8d1f-1a56a47400f0",
+			"0;4754;1;f;f;f;5245;e30dc06f-e6f3-4126-ba29-7da2400a0ab2",
+			"0;4753;1;t;f;f;5246;36534ed0-b663-4854-84c6-7db7b2ea5e4c",
+			"0;4752;1;f;f;f;5247;500655c4-00b6-4b2e-bd11-3f7becba2a38",
+			"0;4751;1;t;f;f;5248;77f9b8a3-ca54-4622-bad8-e883607f853d",
+			"0;4750;1;f;f;f;5249;879c7e29-238d-4c74-84bf-cdd7404fd13b",
+			"0;4749;1;t;f;f;5250;8da1d8cb-f452-4b42-b9e2-2ce916930351",
+			"0;4748;1;f;f;f;5251;07f71655-902b-413c-a490-6b295f5edf21",
+			"0;4747;1;t;f;f;5252;8e98fb53-8afb-4692-a68e-657d8d598b4b",
+			"0;4746;1;f;f;f;5253;da98aefe-0be4-4a5a-bca9-831945c14347",
+			"0;4745;1;t;f;f;5254;4a26f817-330d-45d3-a4f7-a5721eb2faf8",
+			"0;4744;1;t;f;f;5255;5cc593b2-d81b-4de8-b39b-9081b8dad6bc",
+			"0;4743;1;f;f;f;5256;2b4caa2c-52ae-4658-8cff-3038263ebd1a",
+			"0;4742;1;f;f;f;5257;4dd13362-18ea-4432-a0fc-e4a09bf49f76",
+			"0;4741;1;t;f;f;5258;d9dba50b-8b65-42a6-abb6-a30d92ecea63",
+			"0;4740;1;t;f;f;5259;e7bf16d0-d406-44ba-8624-f7e60fe0b2ab",
+			"0;4739;1;f;f;f;5260;fc6df661-522a-4098-a904-99046e4bebb8",
+			"0;4738;1;f;f;f;5261;9c23c10d-cee8-46be-93e2-26c46f6ab13f",
+			"0;4737;1;t;f;f;5262;ff517497-1ee1-421e-b6c3-6c2658c94f79",
+			"0;4736;1;f;f;f;5263;31fc98ed-c8be-43c0-a60b-7be6f02182b4",
+			"0;4735;1;t;f;f;5264;15f60243-76ef-4821-8da3-0c4ec917ebbf",
+			"0;4734;1;f;f;f;5265;d430fafc-ec03-4fc8-80f0-4a0425c1888f",
+			"0;4733;1;t;f;f;5266;73f8befa-8ad3-4793-86ee-d8d8f5db54e3",
+			"0;4732;1;f;f;f;5267;fd783571-fa15-40f1-9c70-395ab9540c24",
+			"0;4731;1;t;f;f;5268;93798b9b-8cda-48df-bcbb-735acf83abeb",
+			"0;4730;1;f;f;f;5269;cc24dd17-711a-45e8-8285-c4f1d62cabc2",
+			"0;4729;1;t;f;f;5270;b3e31e51-2454-4502-86de-3ab93c0b15ba",
+			"0;4728;1;f;f;f;5271;023dc1f5-8dc8-44b4-a3e7-98e8cb8027dc",
+			"0;4727;1;t;f;f;5272;48c1b92c-d360-47ed-8894-2d8cd9a5eacd",
+			"0;4726;1;f;f;f;5273;9c021865-83de-4e38-a940-988d7080e46b",
+			"0;4725;1;t;f;f;5274;7d9296c4-0232-47e4-aae3-92bafa61a6fb",
+			"0;4724;1;f;f;f;5275;5ca41927-4809-45ed-83b2-65554d648074",
+			"0;4723;1;t;f;f;5276;0c955cd6-507b-4057-ba35-b99013b46799",
+			"0;4722;1;f;f;f;5277;686e913d-07f4-4242-a8b1-49e85e63f78f",
+			"0;4721;1;t;f;f;5278;3c59d2b3-6a6c-41f9-bff1-66ff91344f15",
+			"0;4720;1;f;f;f;5279;2ce50754-2832-41fc-86e6-a13c9c2af83a",
+			"0;4719;1;t;f;f;5280;93c68e53-afaf-445c-84b2-580c05566be0",
+			"0;4718;1;f;f;f;5281;3479b784-1d0b-4254-bb5d-94b470802b10",
+			"0;4717;1;t;f;f;5282;4687172e-2e88-4aa8-b9f7-0f70393b92c0",
+			"0;4716;1;f;f;f;5283;c303fec4-bb4b-4462-a805-775485871b32",
+			"0;4715;1;t;f;f;5284;880c59ed-3814-4a7f-bfd4-5f7fe73bdfd0",
+			"0;4714;1;f;f;f;5285;b9d92f1f-29a6-4dee-a9d5-e279c72b31cf",
+			"0;4713;1;t;f;f;5286;f71e1d71-94f8-45c4-89fb-934e68e90996",
+			"0;4712;1;f;f;f;5287;f84d9b16-0d1b-406b-b7a4-dc43a6fe7671",
+			"0;4711;1;t;f;f;5288;d88c6ee3-4f28-4b32-b456-3a82552ee04c",
+			"0;4710;1;f;f;f;5289;e2f11a68-bfeb-454e-b9c4-606c8dde9f54",
+			"0;4709;1;t;f;f;5290;7b3c0ac7-ab8d-4a4f-8b29-bbfa55791cb9",
+			"0;4708;1;f;f;f;5291;57db02df-9471-4a22-bf25-e1ceaa74acd4",
+			"0;4707;1;t;f;f;5292;13f746b5-7f68-414f-87fe-f71677972b56",
+			"0;4706;1;f;f;f;5293;89d4904b-300c-4746-af54-917677324d2c",
+			"0;4705;1;t;f;f;5294;30c4ba12-78b3-4a6c-b4ef-643112549c13",
+			"0;4704;1;f;f;f;5295;9d55b08d-54fb-4a0e-9119-5a602d98360c",
+			"0;4703;1;t;f;f;5296;11a5ad3b-0afa-4729-b4c0-8c870c34510c",
+			"0;4702;1;f;f;f;5297;422541df-500b-4459-820b-966ddf5d55fc",
+			"0;4701;1;t;f;f;5298;d46897bd-5550-42ec-921d-4a907435d3f5",
+			"0;4700;1;f;f;f;5299;8b1311aa-cf50-4ac8-92d2-0042c8e21df6",
+			"0;4699;1;t;f;f;5300;1a3299bb-f185-402d-939f-db2fb5559af8",
+			"0;4698;1;f;f;f;5301;49d9e2d8-6d16-4b31-9f60-76034c6d2257",
+			"0;4697;1;t;f;f;5302;54550e10-b5fc-4c2d-b708-58677429a5f3",
+			"0;4696;1;f;f;f;5303;336c0a80-8bd5-432b-ad2c-cfc72bd00ca5",
+			"0;4695;1;t;f;f;5304;025c3d4f-0d06-445b-90a1-f87705df6649",
+			"0;4694;1;f;f;f;5305;a46e46d7-842e-4499-ae49-13d77f098e35",
+			"0;4693;1;t;f;f;5306;ec2b01c8-d42c-4a02-857d-77337dfd99a6",
+			"0;4692;1;f;f;f;5307;aac8d62f-df5b-4c28-9b9b-00849c709f18",
+			"0;4691;1;t;f;f;5308;73cd6faa-b9f6-4c18-b2c2-24778c73c7ab",
+			"0;4690;1;f;f;f;5309;3f50c761-895e-4a68-ac94-783a343fd1ae",
+			"0;4689;1;t;f;f;5310;f46b2d7d-823f-4437-9a0d-2d2620e70cc9",
+			"0;4688;1;f;f;f;5311;85c94460-2240-4ef9-ba4a-c6a5e0f5fa6d",
+			"0;4687;1;t;f;f;5312;51880799-887a-4dc7-8cf1-f0cbab4a11ab",
+			"0;4686;1;f;f;f;5313;0c725444-5d2d-468e-9383-26420678516a",
+			"0;4685;1;t;f;f;5314;f7361c3d-4d24-462b-9537-047e8735c2c6",
+			"0;4684;1;f;f;f;5315;3ae7910b-67f4-4299-8ba5-810053b75c55",
+			"0;4683;1;t;f;f;5316;10f493e2-c8e5-4488-94de-558d66277be4",
+			"0;4682;1;f;f;f;5317;b27888af-770e-44e4-888a-ed9fc19f64ef",
+			"0;4681;1;t;f;f;5318;491b2932-f835-4775-b208-c88d1e5b239c",
+			"0;4680;1;f;f;f;5319;42b8c183-60a0-4b71-9f91-b20d860e44f4",
+			"0;4679;1;t;f;f;5320;52646c70-2e69-463d-89ee-4d3b2df63213",
+			"0;4678;1;f;f;f;5321;c79c481e-540d-454c-9b02-bc21dec32867",
+			"0;4677;1;t;f;f;5322;fe51e911-9001-4b9f-b5ef-66a794eda6e7",
+			"0;4676;1;f;f;f;5323;1b639ea3-6c31-4369-8b93-61fb06c0c355",
+			"0;4675;1;t;f;f;5324;bba5b55c-aa70-4075-8fa7-8e86f739d01f",
+			"0;4674;1;f;f;f;5325;33de5ac5-5bf9-465d-a58b-ae46751fea72",
+			"0;4673;1;t;f;f;5326;2834e737-cb92-4382-9657-f71f190475af",
+			"0;4672;1;f;f;f;5327;6057edf1-7c50-4dad-a77c-da2687a431a9",
+			"0;4671;1;t;f;f;5328;2d7570dc-62ad-4b74-8361-bd1f2d9e06e4",
+			"0;4670;1;f;f;f;5329;879ddc68-d44a-4952-9b1c-a40e925e7d2f",
+			"0;4669;1;t;f;f;5330;b7190738-3755-4fca-9544-695a75206f38",
+			"0;4668;1;f;f;f;5331;c56c501b-a11b-40a8-8bdf-dab96e03e4b1",
+			"0;4667;1;t;f;f;5332;fc8c11bc-dbca-4aaa-beb2-b750f6ea3dd3",
+			"0;4666;1;f;f;f;5333;a90ce7d7-42a9-41b7-a497-84cf2979ae66",
+			"0;4665;1;t;f;f;5334;0331519b-cfb1-4811-a977-f9ee98b86bb8",
+			"0;4664;1;f;f;f;5335;4ffc20f7-b139-4c71-ba62-cd9a0b98e595",
+			"0;4663;1;t;f;f;5336;e46057f4-c408-43c5-8a27-63dcb4ab348f",
+			"0;4662;1;f;f;f;5337;d557bc21-e4eb-4b6e-9bdb-978d6db520d0",
+			"0;4661;1;t;f;f;5338;1f4376d0-fd56-4dda-8789-58bf5af5bf8c",
+			"0;4660;1;f;f;f;5339;5db3ca84-0c5c-479d-b3c0-63ed6f92bfba",
+			"0;4659;1;t;f;f;5340;408502a3-8542-4171-acf2-39e29b61f700",
+			"0;4658;1;f;f;f;5341;749779a5-5179-49a3-974c-b0384cfdfdf4",
+			"0;4657;1;t;f;f;5342;87d0342f-cc36-490f-97da-2715a0bcd3be",
+			"0;4656;1;f;f;f;5343;8cb57f76-d2bd-49ea-a3d0-56dc333bb40e",
+			"0;4655;1;t;f;f;5344;6999cb5d-4f25-4fb0-bfd2-045193ee653c",
+			"0;4654;1;f;f;f;5345;65f2d9a4-7e38-4ae7-898d-29fe59ae52a8",
+			"0;4653;1;t;f;f;5346;9994d086-3229-4e12-ae14-c8dbea931729",
+			"0;4652;1;f;f;f;5347;b415f88c-5b5b-41a4-bafb-21e284f53b6a",
+			"0;4651;1;t;f;f;5348;0ae6c713-4a3a-4b30-898e-e7e7fbd83842",
+			"0;4650;1;t;f;f;5349;98e1dc6d-58dd-4876-b0e6-065b64f3e192",
+			"0;4649;1;f;f;f;5350;fda9122d-f12c-4064-a38b-d497658b30a5",
+			"0;4648;1;f;f;f;5351;5cadc154-905a-4d6c-8003-76b719514084",
+			"0;4647;1;t;f;f;5352;855bafe8-6b72-4fc7-a96e-dc9ddc1c8712",
+			"0;4646;1;t;f;f;5353;a8b6a396-6311-4e0d-b08a-5bd03187b47e",
+			"0;4645;1;f;f;f;5354;9aad4f7d-b7c7-4395-899d-6ed0a20ffcc2",
+			"0;4644;1;f;f;f;5355;1f416f5b-de28-4873-aaa3-7481a471fd3f",
+			"0;4643;1;t;f;f;5356;02472caa-85e6-49eb-9787-decd745a322b",
+			"0;4642;1;t;f;f;5357;29e1f8e5-17e5-4f88-bec2-4dfe7313800c",
+			"0;4641;1;f;f;f;5358;843fc4a7-638e-4867-92c8-4a9dbfe4b31d",
+			"0;4640;1;f;f;f;5359;b42cbb24-466d-4f8f-80ed-6634e0b214ef",
+			"0;4639;1;t;f;f;5360;2c5eeb32-2019-45d3-b100-a10dd794f99a",
+			"0;4638;1;f;f;f;5361;b29d5385-36f8-4c8a-aaa5-b0db923fe05c",
+			"0;4637;1;t;f;f;5362;99deef45-9830-4748-b437-9df1555ff5f0",
+			"0;4636;1;f;f;f;5363;7d866d81-2a97-4768-8e53-f75fa23ef99f",
+			"0;4635;1;t;f;f;5364;4e31895c-84ec-4447-ae67-abd70d8f0036",
+			"0;4634;1;f;f;f;5365;9532b12f-2812-497b-be6e-ce16f10a0d0c",
+			"0;4633;1;t;f;f;5366;8dcdc82b-b318-4db3-88ae-b90d584f5539",
+			"0;4632;1;f;f;f;5367;bb899283-9e6f-4bc1-8cb1-dad19b3a5b27",
+			"0;4631;1;t;f;f;5368;abfddf27-bf59-4a4d-aea8-b83bf2d83a9a",
+			"0;4630;1;f;f;f;5369;b38dd2b5-5718-4cd0-b9fc-ba1321567434",
+			"0;4629;1;t;f;f;5370;d351ec63-7346-4bfc-a73e-926aa3d56e58",
+			"0;4628;1;f;f;f;5371;caf0f5e1-6f51-4918-ad3b-8962e8b93f5d",
+			"0;4627;1;t;f;f;5372;76226f41-55f5-40e6-b918-e7a8a4664b52",
+			"0;4626;1;f;f;f;5373;cd0bdaa5-9615-4a3e-8eb7-4e204e510dc1",
+			"0;4625;1;t;f;f;5374;1b23b270-abcd-408e-a0ae-0aceb8ebc873",
+			"0;4624;1;f;f;f;5375;e1ebbc52-9262-412e-b67e-e14015054049",
+			"0;4623;1;t;f;f;5376;2b320ad3-37a3-444d-9484-92a34e8e21be",
+			"0;4622;1;f;f;f;5377;f16c5ce6-9335-41c7-9bd8-381b4b7407de",
+			"0;4621;1;t;f;f;5378;92703ce0-c074-47cc-a0c9-9353133dab1d",
+			"0;4620;1;f;f;f;5379;44e74548-8f53-4726-b499-935a2d8acef8",
+			"0;4619;1;t;f;f;5380;e5aedff1-f380-4fbd-a9a8-851c120583eb",
+			"0;4618;1;f;f;f;5381;5c6e7ee8-af21-4ea4-9638-5e4ba499b861",
+			"0;4617;1;t;f;f;5382;21523b8e-cf5a-466d-8393-91f55b101dbb",
+			"0;4616;1;f;f;f;5383;70c1866e-3160-4f9e-ba7a-6467b899b20c",
+			"0;4615;1;t;f;f;5384;c8cacb21-9e02-4f1c-8e7e-a0154a479a4e",
+			"0;4614;1;f;f;f;5385;c88db96b-5efb-487e-a4b2-9accbfb4b776",
+			"0;4613;1;t;f;f;5386;b1695e31-ee79-4c31-8656-3bcb739d2058",
+			"0;4612;1;f;f;f;5387;cd83c02b-ea5c-4501-838a-ec4daaf44dc1",
+			"0;4611;1;t;f;f;5388;c0c73e16-b967-4c43-a4d1-7360e5df9b84",
+			"0;4610;1;f;f;f;5389;9e014ac4-ba8d-4b0a-8e13-2374bee24d7e",
+			"0;4609;1;t;f;f;5390;874230d9-f49d-4d62-baeb-f118688a83f7",
+			"0;4608;1;f;f;f;5391;8c10163c-a7a5-45b5-85dc-e300b81ca3c9",
+			"0;4607;1;t;f;f;5392;0db2848e-e533-42d4-97c0-d7116ffb4a4e",
+			"0;4606;1;f;f;f;5393;527dc28e-8fc9-427d-8bbd-48cc747f6937",
+			"0;4605;1;t;f;f;5394;8b21cbd0-1140-459b-8a52-4959bed78d29",
+			"0;4604;1;f;f;f;5395;b6166743-69e9-46ec-9357-92d42b38f810",
+			"0;4603;1;t;f;f;5396;1eac9fce-fbad-4e9c-a972-e7442a25c7ea",
+			"0;4602;1;f;f;f;5397;7c87d49c-3fe4-4581-b35f-40bbeb8bf70c",
+			"0;4601;1;t;f;f;5398;08463e43-6577-49ad-ad54-6b2f90a45daa",
+			"0;4600;1;f;f;f;5399;3aeba862-98c5-4522-8077-298511f74b9f",
+			"0;4599;1;t;f;f;5400;63a6ef3c-ff3c-4c59-b2f2-6d415735a969",
+			"0;4598;1;f;f;f;5401;7ccd4b3e-0a96-4380-ae84-f94de686bddc",
+			"0;4597;1;t;f;f;5402;5eff645b-097e-427e-b2f2-ba528a26d964",
+			"0;4596;1;f;f;f;5403;f0638a89-429f-4afc-af3c-24043d38d6d3",
+			"0;4595;1;t;f;f;5404;ca8c562b-bdad-4fc5-af70-5004330a812a",
+			"0;4594;1;f;f;f;5405;a054ad8d-e3e8-4758-8ba7-aa4eabf4da9e",
+			"0;4593;1;t;f;f;5406;729ef6e0-12bb-40a5-84f2-85c097648b53",
+			"0;4592;1;f;f;f;5407;c09e7363-b0b0-4165-a4c4-a7fa88e4149b",
+			"0;4591;1;t;f;f;5408;2e9c864b-a74e-43cb-b3cd-bfce095c6aa6",
+			"0;4590;1;t;f;f;5409;88f7387e-1d5b-4b02-97d4-fdced118a6b5",
+			"0;4589;1;f;f;f;5410;c2355299-cc50-4e1c-b7a3-3f8751b2f34b",
+			"0;4588;1;f;f;f;5411;3dfb4973-6377-40b4-989c-6e314248fc7f",
+			"0;4587;1;t;f;f;5412;3c03cdb3-503c-4afc-b5cf-0140e0c2e0db",
+			"0;4586;1;f;f;f;5413;bde19c0a-781c-4111-923e-db4efe361024",
+			"0;4585;1;t;f;f;5414;20ec6d94-e464-4a9d-8517-9af7a696ae86",
+			"0;4584;1;f;f;f;5415;20b4894b-175d-4b24-b7f2-d3ef72f7736b",
+			"0;4583;1;t;f;f;5416;d4c68cc8-2472-4110-9f95-ab6ea037ba4d",
+			"0;4582;1;f;f;f;5417;a93428c0-5008-4a11-b152-a234691f4354",
+			"0;4581;1;t;f;f;5418;78dd422a-e7cb-495c-9a06-b8db47b99ab0",
+			"0;4580;1;f;f;f;5419;b32d6125-f09f-44d8-91a2-78c02a2c49b3",
+			"0;4579;1;t;f;f;5420;507a12e9-7232-48f3-a8e4-d3199d14baf2",
+			"0;4578;1;f;f;f;5421;eb4f7f6d-de99-4c7d-b993-b8fe3571e19e",
+			"0;4577;1;t;f;f;5422;e4d05b3d-caba-47f9-9f46-9d130cda6a5d",
+			"0;4576;1;f;f;f;5423;b1a07dd5-af8a-45e1-8d3d-714f418c46b8",
+			"0;4575;1;t;f;f;5424;6f7278a4-5471-49e9-ab63-9de22ac29515",
+			"0;4574;1;f;f;f;5425;dd4d7ce8-6a42-465d-a859-26ca9d90d3f5",
+			"0;4573;1;t;f;f;5426;b6e3371b-e11e-4881-bf0f-2073af318104",
+			"0;4572;1;f;f;f;5427;3c412a47-a5ec-4ad4-be0b-0e8368d221b3",
+			"0;4571;1;t;f;f;5428;c4355514-c952-4e22-8fda-b6c1e5a79122",
+			"0;4570;1;f;f;f;5429;73fd0c65-b281-4962-9e1a-cf94d748a2f3",
+			"0;4569;1;t;f;f;5430;2405ce81-3818-4f9e-805a-db6172a5b4cf",
+			"0;4568;1;f;f;f;5431;762cec1b-df09-480d-9f12-a56383865a49",
+			"0;4567;1;t;f;f;5432;85c88099-650f-4f78-9375-eea4bd6239a9",
+			"0;4566;1;f;f;f;5433;5a5b8e88-e23f-430c-8841-16ecf80ba81c",
+			"0;4565;1;t;f;f;5434;3541a4d1-de21-4b37-a254-7d8a4aed235c",
+			"0;4564;1;f;f;f;5435;7c947bd3-1757-4af5-b56b-1a7a6fd2d727",
+			"0;4563;1;t;f;f;5436;11f63ae7-3282-4428-ad22-a6b78fd840f6",
+			"0;4562;1;f;f;f;5437;9cb549b2-1fcf-4efe-816e-bac78064862c",
+			"0;4561;1;t;f;f;5438;346646a3-9cf1-48cb-a766-2a5bc68e580c",
+			"0;4560;1;f;f;f;5439;c89ef7b1-8a1c-4013-ac8b-994443f1cfed",
+			"0;4559;1;t;f;f;5440;718d9a98-815f-46fe-a639-29aace567874",
+			"0;4558;1;f;f;f;5441;6c90684c-b097-4a38-becd-b2705e53386c",
+			"0;4557;1;t;f;f;5442;15d1bebd-da36-4d11-bb69-ebad501e6b74",
+			"0;4556;1;f;f;f;5443;d2b983e8-e6b1-445a-bcc8-aafe5ad961b4",
+			"0;4555;1;t;f;f;5444;120cbd33-1bc8-4e9f-b52c-ef0caa5fab72",
+			"0;4554;1;f;f;f;5445;a7c2a94a-917c-4cc8-9e82-07bcc93ca5cb",
+			"0;4553;1;t;f;f;5446;3ac1d4cf-7d5d-41db-b96b-50d73b8c6a35",
+			"0;4552;1;f;f;f;5447;38681017-eb88-4998-833e-f094f6127403",
+			"0;4551;1;t;f;f;5448;6950b5c9-c54a-4d97-99c4-c59ad3b7976e",
+			"0;4550;1;f;f;f;5449;55909375-c485-4663-acb0-9eeb3dae4a79",
+			"0;4549;1;t;f;f;5450;f1532487-d4c9-4d0f-8d9c-8219bf3031b5",
+			"0;4548;1;f;f;f;5451;1022b6a9-68ca-41b7-b805-2aae9e4944a8",
+			"0;4547;1;t;f;f;5452;6f2b2bdc-3ccb-4252-8f9d-c9f80ab82785",
+			"0;4546;1;f;f;f;5453;4d31d6dc-3d4c-4593-b1d3-2726facc2ac9",
+			"0;4545;1;t;f;f;5454;72b206b1-1b72-4054-bbb2-71dd6444d23c",
+			"0;4544;1;f;f;f;5455;d331a439-5038-4a78-be7e-fcac824c50eb",
+			"0;4543;1;t;f;f;5456;f68e4040-363e-4548-863f-b812cc025b9c",
+			"0;4542;1;f;f;f;5457;69544f01-3705-4b07-9968-2fbfe91159af",
+			"0;4541;1;t;f;f;5458;dbcfc726-e182-481f-9e83-59549d8a6b82",
+			"0;4540;1;f;f;f;5459;b61a10ed-1bb6-4b23-a74d-f39abf674bc9",
+			"0;4539;1;t;f;f;5460;25b4dfde-ed8c-4659-8724-b96095298a9e",
+			"0;4538;1;f;f;f;5461;a626e8aa-8ee4-4412-b21e-fc8df0435599",
+			"0;4537;1;t;f;f;5462;dac03e5a-bba6-4279-8983-7109a9a7485e",
+			"0;4536;1;f;f;f;5463;fcde3f85-45ab-48a5-857f-c09bdbd12a64",
+			"0;4535;1;t;f;f;5464;31e6468d-8e9b-4f21-a90c-1da9781919f4",
+			"0;4534;1;f;f;f;5465;264810a2-4091-40a9-89ff-3255070b34a2",
+			"0;4533;1;t;f;f;5466;7ba96246-2884-4bec-afd0-e030fe5c8f73",
+			"0;4532;1;f;f;f;5467;9eec1734-54b2-4f1c-a94f-90e255e2b931",
+			"0;4531;1;t;f;f;5468;860af44a-253f-4870-b211-dd626210e5c9",
+			"0;4530;1;f;f;f;5469;469a91bc-fb8d-44cd-bd92-b872eeaaea02",
+			"0;4529;1;t;f;f;5470;243d5497-1c72-4b8e-bfb3-8cc1e0c25cc3",
+			"0;4528;1;f;f;f;5471;0dd17713-2292-45a4-a993-4c619ef1ff07",
+			"0;4527;1;t;f;f;5472;197f984d-d65e-4348-9b36-e202053306ca",
+			"0;4526;1;f;f;f;5473;d4378198-e152-4190-8788-0c8f8b039ce8",
+			"0;4525;1;t;f;f;5474;db19f892-e82a-40ba-a557-f68872cba142",
+			"0;4524;1;f;f;f;5475;8afef485-9b7f-4d9d-a8b9-c0b8d518c3b5",
+			"0;4523;1;t;f;f;5476;f2c3e5ef-e300-49ef-8e0c-2c5378e533d0",
+			"0;4522;1;f;f;f;5477;80f98df5-1e35-45bc-aa28-eca8112753f1",
+			"0;4521;1;t;f;f;5478;a3205302-4af6-4181-8f89-252d5f637c90",
+			"0;4520;1;f;f;f;5479;c8cb1e13-53f0-4dd8-954d-ec4e0a28d004",
+			"0;4519;1;t;f;f;5480;cd715bbe-e985-4af8-b72a-ead82583d223",
+			"0;4518;1;f;f;f;5481;b5a47d7f-43fe-44d0-bbaa-a93ddd14390b",
+			"0;4517;1;t;f;f;5482;eca4b1ce-70c2-4eee-a27e-4515ea5935fc",
+			"0;4516;1;f;f;f;5483;c2cae1dc-11eb-4c1e-83c5-93b20ac203d8",
+			"0;4515;1;t;f;f;5484;89ef9713-5a41-4d97-a634-4a63852c1982",
+			"0;4514;1;f;f;f;5485;098d2451-7627-4af9-accf-07d0ad363295",
+			"0;4513;1;t;f;f;5486;ed969a8a-6957-4e96-bb67-50616257e4cb",
+			"0;4512;1;f;f;f;5487;c04b935e-bcbb-4652-b35f-4583e5260a25",
+			"0;4511;1;t;f;f;5488;8a2cc739-e3fb-4be7-8947-9b77aefd1e17",
+			"0;4510;1;f;f;f;5489;0adb4151-e3ac-4a90-8956-64df9fd5644c",
+			"0;4509;1;t;f;f;5490;5d2fb034-c6b9-416a-8a06-63c01b16e90d",
+			"0;4508;1;f;f;f;5491;fc2a2c05-8771-4345-a5dd-64140be5fb75",
+			"0;4507;1;t;f;f;5492;804f1237-788a-4355-928c-c33104c03b1b",
+			"0;4506;1;f;f;f;5493;af436bb6-6c4a-45ae-acfa-f1a48ed10428",
+			"0;4505;1;t;f;f;5494;baaec040-0cdc-42f6-86a1-6ed20707ecca",
+			"0;4504;1;f;f;f;5495;0319d5b8-1510-4179-904e-e7ec64f3129b",
+			"0;4503;1;t;f;f;5496;7e87805e-c32c-4ea5-abfb-d8964c880d3e",
+			"0;4502;1;f;f;f;5497;208e8b2d-df22-4473-9819-fa49dadc1003",
+			"0;4501;1;t;f;f;5498;f9a45c7b-7dcb-4750-b2f4-cbb8907ed6f7",
+			"0;4500;1;f;f;f;5499;792eaae5-d934-45c8-aafc-69bdae762c1a",
+			"0;4499;1;t;f;f;5500;a6057b1c-40a7-4203-aea7-ab57ba6f2904",
+			"0;4498;1;f;f;f;5501;be3bd742-9e7b-4c4f-81fb-69ae634a14b4",
+			"0;4497;1;t;f;f;5502;0616ac83-36d8-408c-bc9f-1d206c8bf79c",
+			"0;4496;1;f;f;f;5503;fe79d45b-597f-4c8e-9caa-119e72104449",
+			"0;4495;1;t;f;f;5504;d0ad7841-30be-4618-b4df-d850a35518a4",
+			"0;4494;1;f;f;f;5505;4213410f-d4d6-49e5-ae20-6a96d441ae95",
+			"0;4493;1;t;f;f;5506;8ff50aec-a800-43ea-9c7a-5262e35af5a3",
+			"0;4492;1;f;f;f;5507;0d5f5d6d-80e4-49cf-b2fc-7a6917e70c7c",
+			"0;4491;1;t;f;f;5508;e9812591-3fc2-410e-ab25-3c95325230c2",
+			"0;4490;1;f;f;f;5509;c6b38886-3e60-451b-ae5e-d0a5e472d114",
+			"0;4489;1;t;f;f;5510;8503f485-1591-481b-ad7d-63f7eff899d5",
+			"0;4488;1;f;f;f;5511;66697261-2be4-4831-b737-6d8bf8397c9f",
+			"0;4487;1;t;f;f;5512;cf36ff26-eff7-46ac-911a-06c337801357",
+			"0;4486;1;f;f;f;5513;757358a7-f3df-4c29-a2bb-808b9fb3342a",
+			"0;4485;1;t;f;f;5514;85fe1e75-73b8-4453-bd4a-ca50a3b80980",
+			"0;4484;1;f;f;f;5515;efdacb8f-911a-452e-88f4-ea29679c288b",
+			"0;4483;1;t;f;f;5516;46be7ae2-dba7-43ca-b979-515f6ed72e1e",
+			"0;4482;1;f;f;f;5517;a2eb31e2-ac6a-4021-96ac-9c6d36cfdefb",
+			"0;4481;1;t;f;f;5518;2d5cc978-09db-482c-a4e6-7324f57627db",
+			"0;4480;1;f;f;f;5519;9c7c5ba7-fe85-4dbf-815b-cc80288061dd",
+			"0;4479;1;t;f;f;5520;39404249-1c94-483a-bc0d-9cb8be19b30a",
+			"0;4478;1;f;f;f;5521;0c37f162-6c40-4052-a64b-8d8286d1abdb",
+			"0;4477;1;t;f;f;5522;abcc5bef-1b16-48bb-8449-834cb9fc43cf",
+			"0;4476;1;f;f;f;5523;eb7c7bce-865c-4737-934e-4d16f2a10e88",
+			"0;4475;1;t;f;f;5524;1ce8353c-0866-4644-b3c2-19e908991bea",
+			"0;4474;1;f;f;f;5525;368b342b-2e17-4716-ad9a-0ff5e53a3aed",
+			"0;4473;1;t;f;f;5526;9c4bd295-68ad-4bc5-a5b5-f49eda3b386b",
+			"0;4472;1;f;f;f;5527;f7379625-eeb0-461c-ab27-cabcf73509be",
+			"0;4471;1;t;f;f;5528;987cfc51-f919-47b8-ba0b-22cba1a7c091",
+			"0;4470;1;f;f;f;5529;f5f494d4-c566-4367-a918-cba967cc1742",
+			"0;4469;1;t;f;f;5530;4eed7040-e00b-4933-b653-0fc6b689d95e",
+			"0;4468;1;f;f;f;5531;f27024fc-92b7-4dc5-b821-e94a71734049",
+			"0;4467;1;t;f;f;5532;8c13800f-3a8d-40ce-80c5-a98b31e16bcf",
+			"0;4466;1;f;f;f;5533;98a780c4-58b8-49d1-8f6b-28651450651f",
+			"0;4465;1;t;f;f;5534;a40f9053-2349-48a6-80ad-893b56caaae2",
+			"0;4464;1;f;f;f;5535;7d5cae1a-0adb-43c8-8e15-115f96fa46dd",
+			"0;4463;1;t;f;f;5536;350698a8-68c3-4430-a50b-49cf0badd14d",
+			"0;4462;1;f;f;f;5537;314bbc72-d569-45fb-b9d5-caf48c1a248a",
+			"0;4461;1;t;f;f;5538;0f78a157-1d12-4430-9db5-fab4e9257dcd",
+			"0;4460;1;f;f;f;5539;90b99243-a500-45ee-9372-fc7ec50633ae",
+			"0;4459;1;t;f;f;5540;7866dfb9-72f6-4d0b-a63d-5db9df5028cb",
+			"0;4458;1;f;f;f;5541;3c1a4b81-a906-4f20-a86d-37924a37422b",
+			"0;4457;1;t;f;f;5542;a945b1b2-5c07-4a35-a32e-ef31c2f0cf46",
+			"0;4456;1;f;f;f;5543;832a4c45-7c08-425b-8182-016399a65915",
+			"0;4455;1;t;f;f;5544;9a0d2b22-c858-4e77-9b5e-b5926030c6aa",
+			"0;4454;1;f;f;f;5545;3cd5a699-a311-4293-853b-f9fa641c923b",
+			"0;4453;1;t;f;f;5546;65d77456-2f65-4bfa-b46a-645c80e3e24c",
+			"0;4452;1;f;f;f;5547;94638902-4884-41c7-9222-3294c5cc0d9f",
+			"0;4451;1;t;f;f;5548;93c4c632-bbf2-494a-b1d3-0ec46298e2cd",
+			"0;4450;1;f;f;f;5549;ab6ccc78-8c1e-411b-a0b6-28eb55529abe",
+			"0;4449;1;t;f;f;5550;30fdb01e-49bb-4d8c-9737-13745f2b7df2",
+			"0;4448;1;f;f;f;5551;9753de31-94e5-493b-8dcf-3a095f2be274",
+			"0;4447;1;t;f;f;5552;26d74936-8290-45fd-8e2a-12919967bec0",
+			"0;4446;1;f;f;f;5553;711ce649-2537-4186-93a1-21db250450a0",
+			"0;4445;1;t;f;f;5554;96aae0ae-2dfe-4168-9e87-abf576413c63",
+			"0;4444;1;f;f;f;5555;6b6fc980-883d-40f8-a693-09dbd01b073a",
+			"0;4443;1;t;f;f;5556;319d2962-88da-46a7-9f97-08ba0637e39a",
+			"0;4442;1;f;f;f;5557;68614e8b-474d-47b8-8164-702a14351af4",
+			"0;4441;1;t;f;f;5558;a83c0e94-d6f1-46d5-a3a6-6cc0e72d129f",
+			"0;4440;1;f;f;f;5559;3eefee7f-519f-485f-81e2-5973319f51ac",
+			"0;4439;1;t;f;f;5560;9dfa9081-cc2a-4b7f-aeef-6b32ba64d2ad",
+			"0;4438;1;f;f;f;5561;29e71490-0094-476a-94a4-b7cb3acdeb62",
+			"0;4437;1;t;f;f;5562;fe325f70-c92e-4d46-8f18-1ab156a4274f",
+			"0;4436;1;f;f;f;5563;b7cd8c85-dfb3-4d26-b20f-0cc17e37d21a",
+			"0;4435;1;t;f;f;5564;9dd2a9c8-8e9e-490c-bacd-ad4cf2e7f72a",
+			"0;4434;1;f;f;f;5565;3cc82412-1375-4582-8ec3-64e5625784dc",
+			"0;4433;1;t;f;f;5566;7530980a-148e-4975-8de6-f16704736b7a",
+			"0;4432;1;f;f;f;5567;7841d2ae-f254-4967-83c8-d1feb3ba9a83",
+			"0;4431;1;t;f;f;5568;7e9b8f09-6dcb-4c2c-b209-6d0f0ad67afb",
+			"0;4430;1;f;f;f;5569;92270fc0-29c1-402f-8c0c-1549f3286cb5",
+			"0;4429;1;t;f;f;5570;c0b3285f-a21c-4943-8a19-406b496c71ca",
+			"0;4428;1;f;f;f;5571;83bbfdb9-25e7-4a1f-a38c-3bcf47ef30ec",
+			"0;4427;1;t;f;f;5572;a6a10384-5b57-41f2-b856-9e488d765cc2",
+			"0;4426;1;f;f;f;5573;0b7bc139-8d96-488b-941f-3beaa1b789ce",
+			"0;4425;1;t;f;f;5574;f07a2073-7f60-493d-917b-5edb5cb77be9",
+			"0;4424;1;f;f;f;5575;7d3fad2c-fb5b-4987-8e6a-9bb7e2a57c45",
+			"0;4423;1;t;f;f;5576;cd1bcf96-cde6-4cc4-b019-6e32b07f5694",
+			"0;4422;1;f;f;f;5577;5f170f59-1dd6-43b9-9bcb-b767253098d6",
+			"0;4421;1;t;f;f;5578;610f830e-a4b5-412f-9437-b830541a353f",
+			"0;4420;1;f;f;f;5579;d42be921-d37f-4992-882b-b74b3a1089ad",
+			"0;4419;1;t;f;f;5580;b3d5feb1-528c-4fcc-a07d-9d31c5dad338",
+			"0;4418;1;f;f;f;5581;327fb64c-c718-4cd4-8a40-739ac6b7347c",
+			"0;4417;1;t;f;f;5582;24fad070-ea53-48ae-b666-226389a5883f",
+			"0;4416;1;f;f;f;5583;45e9d165-1b18-4bee-86da-5c6263ff101c",
+			"0;4415;1;t;f;f;5584;f1584bd6-9864-4c70-990e-69b1cd3d5a44",
+			"0;4414;1;f;f;f;5585;1d935bea-ce13-4d53-920e-043ff01e2a76",
+			"0;4413;1;t;f;f;5586;9194ba09-09a5-4745-b2fc-c03c96c5c376",
+			"0;4412;1;f;f;f;5587;f35ff4c4-b8ec-4e56-a94b-b2e68862767f",
+			"0;4411;1;t;f;f;5588;ee319599-7875-4af1-85a3-989f5a35f284",
+			"0;4410;1;f;f;f;5589;2aea0707-50d0-4dfa-adf5-d85a51fcddf7",
+			"0;4409;1;t;f;f;5590;ece27d6d-7cdd-4a0f-a0ec-dd3c2a59d523",
+			"0;4408;1;f;f;f;5591;799f541f-e3aa-4e07-ad63-c2069297fd64",
+			"0;4407;1;t;f;f;5592;8bde790c-104e-4985-acec-4444c8334763",
+			"0;4406;1;f;f;f;5593;b5a73035-e831-49d1-b8d4-106fd68e603f",
+			"0;4405;1;t;f;f;5594;bd10c6f3-4201-492c-b7f1-58950acaad95",
+			"0;4404;1;f;f;f;5595;571f320d-2abc-4ba8-ac62-442cb3869c3e",
+			"0;4403;1;t;f;f;5596;ccbd76e2-d8d2-40e4-8e71-22976af8cd61",
+			"0;4402;1;f;f;f;5597;b06d5728-e193-44bb-a9a7-4859f54d5de0",
+			"0;4401;1;t;f;f;5598;54a299e1-4078-489a-92af-74c3783a6deb",
+			"0;4400;1;f;f;f;5599;4c1584bf-be71-4709-95af-30db5cc3f15d",
+			"0;4399;1;t;f;f;5600;92d9e878-fd89-412d-8b5a-8d29a2bde744",
+			"0;4398;1;f;f;f;5601;3f9afa99-2d95-4aef-b793-ff61c1cb547c",
+			"0;4397;1;t;f;f;5602;69af743c-0818-4757-88a2-a086b4060589",
+			"0;4396;1;f;f;f;5603;98faa74a-d319-4079-95a0-d1ccacc02c8b",
+			"0;4395;1;t;f;f;5604;0d5542ea-7f78-4b4a-b765-1bb45cd524c3",
+			"0;4394;1;f;f;f;5605;6a1c97cc-a2c5-4249-9fd9-557849d5af78",
+			"0;4393;1;t;f;f;5606;b39f3c10-307e-4313-b719-1b81b16b1656",
+			"0;4392;1;f;f;f;5607;64000f96-b6a8-41e9-99e5-f5e3e9030c3d",
+			"0;4391;1;t;f;f;5608;abccda11-9760-401f-aefb-fc49b3070670",
+			"0;4390;1;f;f;f;5609;785aba82-7aa0-4e5f-bfb3-6fb86c52df72",
+			"0;4389;1;t;f;f;5610;ef17d7c9-86b7-483c-a067-93a393d250a8",
+			"0;4388;1;f;f;f;5611;d383ce2a-2c0b-4ae8-ad51-cc6eb91f8806",
+			"0;4387;1;t;f;f;5612;1be2b70c-0f20-4348-aa35-3a1578df5d69",
+			"0;4386;1;f;f;f;5613;b7c3bba6-2285-47d5-ba11-127f39d8ef15",
+			"0;4385;1;t;f;f;5614;9831c6ad-fa01-4ac2-820d-6a3de15c2314",
+			"0;4384;1;f;f;f;5615;a61061fe-b060-4b93-8ebc-6ca57a585b20",
+			"0;4383;1;t;f;f;5616;2ef04a2b-8a10-49d5-9c43-15d4913bd8f7",
+			"0;4382;1;f;f;f;5617;9ba6d5aa-0aaa-4d02-ae31-5655ce107261",
+			"0;4381;1;t;f;f;5618;0194aded-eb61-4fbf-a9c4-20ddcc06811e",
+			"0;4380;1;f;f;f;5619;f2402b87-fa59-402c-914a-f1aa6371eef8",
+			"0;4379;1;t;f;f;5620;eae2d78c-c179-442a-9edf-e99dc19e34a3",
+			"0;4378;1;f;f;f;5621;64345d8c-e9bf-45d1-8cef-9806fccc22d6",
+			"0;4377;1;t;f;f;5622;7c6179f1-117b-4bb3-969b-98ab4fedf216",
+			"0;4376;1;f;f;f;5623;a1e8e53d-4f3c-49a7-bf7b-5cb9cf1a3f5b",
+			"0;4375;1;t;f;f;5624;a60f462f-a82f-48f0-a12b-d41b03dc7c3b",
+			"0;4374;1;f;f;f;5625;d94118e3-42d7-4325-8145-23cbe7f9a41c",
+			"0;4373;1;t;f;f;5626;5633f482-ec06-42c1-8e32-7c90b62c7410",
+			"0;4372;1;f;f;f;5627;8d010392-4a30-45bc-8eba-6dd0469edbdd",
+			"0;4371;1;t;f;f;5628;6219dd19-ab21-4261-9834-88919ce3c62c",
+			"0;4370;1;f;f;f;5629;adfe0cdf-60e4-491b-ac7d-334be234d8fa",
+			"0;4369;1;t;f;f;5630;983352a9-49e9-468e-b3fe-13ce0d868ce4",
+			"0;4368;1;f;f;f;5631;26c320c9-69b5-4317-8b25-a31bf2768cea",
+			"0;4367;1;t;f;f;5632;6af892c2-e506-437d-943b-ff04529bbd97",
+			"0;4366;1;f;f;f;5633;e13e1fd7-e0a9-4e06-a9fb-c2edfb54e1d7",
+			"0;4365;1;t;f;f;5634;50607cab-dc9f-4452-bbd8-8398e44516dd",
+			"0;4364;1;f;f;f;5635;b5980029-ae56-460b-b87e-017f86b2c26f",
+			"0;4363;1;t;f;f;5636;272840dc-a033-4958-a6ba-05bf4e0977c7",
+			"0;4362;1;f;f;f;5637;2e69a6a3-1dc5-4e82-8d5a-27130d03653f",
+			"0;4361;1;t;f;f;5638;8de08712-5dfe-4629-9210-eb64b9e1e44a",
+			"0;4360;1;f;f;f;5639;4f204337-0e87-4011-83b9-d59b038e02c2",
+			"0;4359;1;t;f;f;5640;b01a9a03-6af2-4c72-a0be-01493bf33828",
+			"0;4358;1;f;f;f;5641;7e8454eb-9876-4fb0-a0e7-c1f3c406f4b3",
+			"0;4357;1;t;f;f;5642;a4bf221f-9c0b-4dfc-a8d1-8eeef1a652ac",
+			"0;4356;1;f;f;f;5643;052eaf09-3f74-4348-8f41-4f6799218702",
+			"0;4355;1;t;f;f;5644;00ab3ce9-0c91-4328-ae9d-434c54724b1d",
+			"0;4354;1;f;f;f;5645;9c339244-585d-4022-a8e3-0656fc04d8ca",
+			"0;4353;1;t;f;f;5646;e39bce1f-e74a-4b8f-bc3e-e1a9ac7ab407",
+			"0;4352;1;f;f;f;5647;dcaae777-872d-4779-8132-2e7ec96570a0",
+			"0;4351;1;t;f;f;5648;7eb6dce4-6481-4d69-abdd-dc87e7d111ca",
+			"0;4350;1;f;f;f;5649;5a88dca1-8383-4b68-a779-c5ba89930b80",
+			"0;4349;1;t;f;f;5650;c4153f05-1f5e-4434-a2f1-87dff43d7618",
+			"0;4348;1;f;f;f;5651;9f554edd-d799-4178-b668-77629e77ce74",
+			"0;4347;1;t;f;f;5652;89d191ca-cd35-4f4e-9fd4-1fc0e9056e22",
+			"0;4346;1;f;f;f;5653;a6b3733f-74b6-4bd8-924c-6809c4d799c4",
+			"0;4345;1;t;f;f;5654;eb034dcf-ecb4-4c08-a4f2-0831c82afda2",
+			"0;4344;1;f;f;f;5655;8a423bb7-995b-4f7b-bb03-819d4832e52e",
+			"0;4343;1;t;f;f;5656;195baa54-9e48-4491-84c7-0b287de59e1f",
+			"0;4342;1;f;f;f;5657;f5fe55b7-1b39-4619-96f9-4b3ef097ca4f",
+			"0;4341;1;t;f;f;5658;7c082ff0-07cd-448a-bfbd-99060d440460",
+			"0;4340;1;f;f;f;5659;de7a39ac-9b36-4645-b30e-3cf9086111cd",
+			"0;4339;1;t;f;f;5660;5177de00-b5f2-440b-9556-5be15bd7d228",
+			"0;4338;1;f;f;f;5661;bfeeb357-b95a-4bbd-b586-ec2e64a2378c",
+			"0;4337;1;t;f;f;5662;f5c91c36-6b40-4f5d-abe1-1b16454aac7b",
+			"0;4336;1;f;f;f;5663;99c88948-4d69-4638-8309-84a3cba2e584",
+			"0;4335;1;t;f;f;5664;bba2648f-314a-4d19-8dd7-425ca32367a7",
+			"0;4334;1;f;f;f;5665;6f348d13-c9dd-4370-82cd-0c0471556877",
+			"0;4333;1;t;f;f;5666;1eb919ee-03ab-4f59-a504-1c6681588154",
+			"0;4332;1;f;f;f;5667;90feca02-1f73-4dbc-acbf-51322c31db95",
+			"0;4331;1;t;f;f;5668;bf237d89-a32c-4044-8756-64d641f8704f",
+			"0;4330;1;f;f;f;5669;236eac41-a8de-493d-b27d-77d9a0e3cb4b",
+			"0;4329;1;t;f;f;5670;a89a2b19-cbfb-435c-a381-80194c07fa40",
+			"0;4328;1;f;f;f;5671;8872015f-876e-4cd4-80d6-a7476f875aa6",
+			"0;4327;1;t;f;f;5672;560df4d1-4757-4a27-995f-11ed9b5ada2f",
+			"0;4326;1;f;f;f;5673;20e4159c-4600-433f-a589-d876f715386c",
+			"0;4325;1;t;f;f;5674;cdaf698e-0bb3-46a3-8534-5609eb907201",
+			"0;4324;1;f;f;f;5675;b131f3ac-6a9b-4cb8-94d2-b83070722ad3",
+			"0;4323;1;t;f;f;5676;29c694ad-2fb9-4d53-a88c-f7aed3081a1c",
+			"0;4322;1;f;f;f;5677;566c6ed1-799c-4d2a-abd0-8eea371d6b47",
+			"0;4321;1;t;f;f;5678;f2ebbba4-fcb1-4d55-9d84-32832a48c322",
+			"0;4320;1;f;f;f;5679;1caf0bd8-abe3-4c30-888f-307331978395",
+			"0;4319;1;t;f;f;5680;a8d1d896-c19a-40b7-880b-b300677f16ef",
+			"0;4318;1;f;f;f;5681;c390bb17-5062-40fa-9d42-f85ae69a7ee9",
+			"0;4317;1;t;f;f;5682;42c0ef96-6f91-4b7a-9bbc-c5ea1848988c",
+			"0;4316;1;f;f;f;5683;83ea5f0a-b943-4301-8cee-3359499aeb34",
+			"0;4315;1;t;f;f;5684;3c0a7c2c-46a3-413a-b830-535593c9c98c",
+			"0;4314;1;f;f;f;5685;609631eb-ef46-4663-b47f-6151e58e2183",
+			"0;4313;1;t;f;f;5686;859a3dfe-718c-4f9f-a6c4-863565c102e6",
+			"0;4312;1;f;f;f;5687;659c9a3e-2bb3-4a3a-9ba8-3dd3969bb9ef",
+			"0;4311;1;t;f;f;5688;709b5c83-142c-42b1-8f11-485de41589f1",
+			"0;4310;1;f;f;f;5689;d8e64eb2-4b7b-4cf9-b67f-d6256ca69e6f",
+			"0;4309;1;t;f;f;5690;b8df2a31-5041-4bad-81ee-83239b20b616",
+			"0;4308;1;f;f;f;5691;e2c625dc-90c1-414f-a8cd-7b4078ae1c44",
+			"0;4307;1;t;f;f;5692;2d6311a7-d2bd-444b-8498-7837ba492082",
+			"0;4306;1;f;f;f;5693;5f87e9e1-bf8e-42cd-8ebe-6aa04f59932f",
+			"0;4305;1;t;f;f;5694;80d92fcd-3904-468b-9a5e-13af7055776b",
+			"0;4304;1;f;f;f;5695;fd2740f7-7f15-4eae-a9e3-9efa70e1ca1f",
+			"0;4303;1;t;f;f;5696;619a1937-9fec-4e31-bd1d-d8a1f4df5f94",
+			"0;4302;1;f;f;f;5697;bca5c6a4-d944-4873-bd97-7b7d4e1ee38c",
+			"0;4301;1;t;f;f;5698;bc6945d7-e85c-48fc-a110-778206e3622e",
+			"0;4300;1;f;f;f;5699;d3bc5711-7cbd-476f-a8eb-03ef3b8defb6",
+			"0;4299;1;t;f;f;5700;11c44e4b-af3a-41f1-977b-a80cae3fbfe7",
+			"0;4298;1;f;f;f;5701;0e221ae3-a19d-443f-81aa-5c1816d32956",
+			"0;4297;1;t;f;f;5702;4f2850ef-52a4-4005-9b4f-2ada01333e49",
+			"0;4296;1;f;f;f;5703;baa2d32a-356c-43ae-b406-fec1e4f64c51",
+			"0;4295;1;t;f;f;5704;83f6aedd-ad71-4cf3-a99f-33f885a16834",
+			"0;4294;1;f;f;f;5705;65805eb3-4daf-4f54-a936-983460ad896a",
+			"0;4293;1;t;f;f;5706;7a7856c6-d354-401e-a165-803bb436850f",
+			"0;4292;1;f;f;f;5707;6c73ce45-f873-4650-b684-bcc3be7bd2c4",
+			"0;4291;1;t;f;f;5708;8e8b592d-2e38-4a23-8f55-2a0ea26c930b",
+			"0;4290;1;f;f;f;5709;ee2ca07b-25f5-4839-adcf-dea012c77f5a",
+			"0;4289;1;t;f;f;5710;a065b46b-7327-4a69-be38-9e61a46368ef",
+			"0;4288;1;f;f;f;5711;2269b62a-d143-451f-9193-926ce98a60a9",
+			"0;4287;1;t;f;f;5712;ebd6a9bb-019c-402d-afa2-c54b30c56588",
+			"0;4286;1;t;f;f;5713;21434957-acbe-4531-8f1a-d3996866b0e0",
+			"0;4285;1;f;f;f;5714;6ee755df-4f38-4e56-bae9-d1373cf9e293",
+			"0;4284;1;f;f;f;5715;ae8a5d46-1d30-4bb3-b40f-5e50732cfacc",
+			"0;4283;1;t;f;f;5716;29f17964-dc95-4e3a-ada7-772c791108e6",
+			"0;4282;1;t;f;f;5717;9b4d065a-b62a-405d-832b-8e434ed23612",
+			"0;4281;1;f;f;f;5718;aae3646f-b8de-4cf2-8238-63744177ec0a",
+			"0;4280;1;f;f;f;5719;c9d164c1-adbb-49e8-85ab-91036bdb2627",
+			"0;4279;1;t;f;f;5720;b576372b-5c98-4df1-8c90-892d99152172",
+			"0;4278;1;f;f;f;5721;4e480b2c-51da-4903-80d5-8a0b3c6758c3",
+			"0;4277;1;t;f;f;5722;5725c813-2838-400d-8910-b07c66bd93b6",
+			"0;4276;1;f;f;f;5723;e905628a-c3bb-4442-939f-2f3786373199",
+			"0;4275;1;t;f;f;5724;80872aa5-fa8c-4635-97e1-27f696041f9f",
+			"0;4274;1;f;f;f;5725;c3867d61-b89c-463f-87e0-6a2bf9072174",
+			"0;4273;1;t;f;f;5726;f371678c-78c8-47ed-a168-178440f58b62",
+			"0;4272;1;f;f;f;5727;4830553f-cbb5-4025-ac4c-74afd195b8c4",
+			"0;4271;1;t;f;f;5728;273dfa60-cd7a-4f38-b91d-e965d1386783",
+			"0;4270;1;f;f;f;5729;3e13cf7e-3e98-4154-b563-d230f19f0461",
+			"0;4269;1;t;f;f;5730;ec390c8d-8693-4f97-80f3-d3d0686e4bf7",
+			"0;4268;1;f;f;f;5731;2a83a79b-a91e-4c86-b3df-a17a60462717",
+			"0;4267;1;t;f;f;5732;74e79851-df58-424f-932e-7000534133b8",
+			"0;4266;1;f;f;f;5733;e1e04e48-a3b2-4878-aeb4-e197bf028995",
+			"0;4265;1;t;f;f;5734;e01f7875-cd84-49a3-af10-4d2c81dde6d9",
+			"0;4264;1;f;f;f;5735;cce854a3-fa74-4eb9-85b6-9add15a483d7",
+			"0;4263;1;t;f;f;5736;a2f5fcb4-a50c-4e02-848a-5ae32475b7b9",
+			"0;4262;1;f;f;f;5737;576aced0-68c0-4f99-964b-c63be0ea161c",
+			"0;4261;1;t;f;f;5738;0b82966d-2dc9-4724-bb3d-2a9a7aa98bef",
+			"0;4260;1;f;f;f;5739;1f35f6c3-ad0e-4a16-a322-76492dca1ef9",
+			"0;4259;1;t;f;f;5740;5bda306f-68a6-45ed-9a85-e78145c12a22",
+			"0;4258;1;f;f;f;5741;232c63b6-ba00-41d9-b71d-9e3c5e4e5b43",
+			"0;4257;1;t;f;f;5742;25215a02-0bfe-4061-992b-8bdfc5fe9872",
+			"0;4256;1;f;f;f;5743;9657d8a2-c06a-41ad-b02e-69fe69e6e138",
+			"0;4255;1;t;f;f;5744;ed6e19fe-9620-4520-9871-7eeb8e1de1c1",
+			"0;4254;1;f;f;f;5745;53aca499-a207-4ba9-a099-0e90059d971d",
+			"0;4253;1;t;f;f;5746;965fafe8-5f5e-439d-930c-e73af7c8e38f",
+			"0;4252;1;f;f;f;5747;705c4294-ab2a-439b-afe2-fc54171bdb98",
+			"0;4251;1;t;f;f;5748;bda50fad-b887-4125-8fa3-1bf7325751e6",
+			"0;4250;1;f;f;f;5749;f253ee64-7a0b-4007-91af-074408580133",
+			"0;4249;1;t;f;f;5750;0e9bc9cb-4e20-4f1c-9522-7b9028ac7870",
+			"0;4248;1;f;f;f;5751;79a4485f-6bdc-40da-a1a1-db2dad9c3f2a",
+			"0;4247;1;t;f;f;5752;32f53adf-1ad0-4f70-8c34-722b2b008ad2",
+			"0;4246;1;f;f;f;5753;2c3d0e11-79da-49dc-9d0b-b7cd74cc60dd",
+			"0;4245;1;t;f;f;5754;caec8f7b-e2aa-4759-bd3e-5c68319f5d96",
+			"0;4244;1;f;f;f;5755;11393b42-5eb8-4ecc-b682-4eab52dc7977",
+			"0;4243;1;t;f;f;5756;bc49d04e-b98a-45bc-bf9c-034ecc208046",
+			"0;4242;1;f;f;f;5757;db57d524-5e6e-4e96-89a9-8fa4365c7722",
+			"0;4241;1;t;f;f;5758;f8eb17e7-4377-41b8-94f2-98bbffe84480",
+			"0;4240;1;f;f;f;5759;ec6e30e4-5ec7-4360-9fc9-6a3af3a2177b",
+			"0;4239;1;t;f;f;5760;04f8d2cb-2410-4067-bd8a-c678e2992b4a",
+			"0;4238;1;f;f;f;5761;a65c855e-9dfe-4d55-b056-bda9df3fd44b",
+			"0;4237;1;t;f;f;5762;f5de9920-d8d4-4a96-a25a-e46e61a0e594",
+			"0;4236;1;f;f;f;5763;d7563f82-95f2-47a3-bd68-4f097274ccce",
+			"0;4235;1;t;f;f;5764;453e793d-fdf4-4733-9748-f1743764f1e0",
+			"0;4234;1;t;f;f;5765;5a3556ce-30d7-402b-8f76-a2a4e84f74d7",
+			"0;4233;1;f;f;f;5766;f28450b2-5e83-4868-9014-bd76fff1af35",
+			"0;4232;1;f;f;f;5767;6c82b0f7-8da5-43f8-a6a9-830a5b9367fc",
+			"0;4231;1;t;f;f;5768;63e29579-8df9-449a-a62f-787411d56c19",
+			"0;4230;1;f;f;f;5769;f7c21ac6-5f65-498d-9f61-7ecbe0ad5d77",
+			"0;4229;1;t;f;f;5770;7c40fd44-5fb7-41b7-8fcf-0a9bcb033dd1",
+			"0;4228;1;f;f;f;5771;ab02c97d-3273-4ab0-a215-23723c6a1ede",
+			"0;4227;1;t;f;f;5772;545fcf58-108e-44e1-894c-a21ad1c47369",
+			"0;4226;1;f;f;f;5773;167ae6a0-f5d0-4f9f-9a78-bda6cdecee35",
+			"0;4225;1;t;f;f;5774;7588acc1-bef0-4c8f-94a3-080b7af7900a",
+			"0;4224;1;f;f;f;5775;db54f544-3ab7-4654-9174-334e56812590",
+			"0;4223;1;t;f;f;5776;a5ee5f9c-fb48-49df-8964-52e20eab8430",
+			"0;4222;1;f;f;f;5777;04df9ad4-afc7-460b-967d-6324ef008018",
+			"0;4221;1;t;f;f;5778;27d2bd82-6bd3-45f3-94c5-3687809a6ac4",
+			"0;4220;1;t;f;f;5779;f2dcfab7-46d1-49cc-9261-55851a3637bb",
+			"0;4219;1;f;f;f;5780;5583e251-524e-47e1-8dc8-085d88fb36d7",
+			"0;4218;1;f;f;f;5781;cebd7482-1d15-4fb2-a1d0-30b5fb38547f",
+			"0;4217;1;t;f;f;5782;6d472cd9-29df-4ef5-b648-22654d395fde",
+			"0;4216;1;t;f;f;5783;2ccb7857-20af-4c3f-a4a0-5617309df244",
+			"0;4215;1;f;f;f;5784;a2cd3bfd-d20f-403d-871a-8e2d187f3433",
+			"0;4214;1;f;f;f;5785;b9e1c446-bd06-4dbb-9a23-1fb41d29a21e",
+			"0;4213;1;t;f;f;5786;91c0b2a2-a9b4-4bff-b2cf-472586e5215d",
+			"0;4212;1;t;f;f;5787;c6e68f5a-7013-434b-a77e-da970b1aa1d3",
+			"0;4211;1;f;f;f;5788;b1fbda6a-4872-4eb7-b96a-2f888b30cef3",
+			"0;4210;1;f;f;f;5789;5176c115-eec7-4397-99bc-32d1fad84284",
+			"0;4209;1;t;f;f;5790;50a7c454-cc85-49fe-aeea-5bdb8c299c2f",
+			"0;4208;1;t;f;f;5791;13b081e9-23df-4913-b439-974723755ef6",
+			"0;4207;1;f;f;f;5792;78c7f21d-06bf-4dc4-9ffb-60b4fdfc35f9",
+			"0;4206;1;f;f;f;5793;7a62c7f1-39aa-4c3b-91e8-428c84bed1f7",
+			"0;4205;1;t;f;f;5794;0b4fd32f-4ccf-471f-9eee-64c066e85cf5",
+			"0;4204;1;t;f;f;5795;515a1543-e60d-41e9-88eb-fcfc9f5f987d",
+			"0;4203;1;f;f;f;5796;fddb465f-47f6-4c1a-b84e-90e831300397",
+			"0;4202;1;f;f;f;5797;96f43e87-6336-4bab-9e80-edfdb185b22c",
+			"0;4201;1;t;f;f;5798;d28626fa-887a-406c-955c-837887ea0420",
+			"0;4200;1;f;f;f;5799;d36a700d-6a57-4807-92ae-8fdfce75fcf2",
+			"0;4199;1;t;f;f;5800;8abdc436-9e64-428b-a496-afa975002f48",
+			"0;4198;1;f;f;f;5801;c0426860-1c0c-4921-b6e0-a9361f6b5fda",
+			"0;4197;1;t;f;f;5802;a6b45bab-3ee0-48cc-babb-0efc1ac0cd8c",
+			"0;4196;1;f;f;f;5803;f88b4e38-eb21-41c9-b4f4-c39d4af1ece5",
+			"0;4195;1;t;f;f;5804;5fcfecbc-fc4a-4b84-aa22-f729e7fbccd4",
+			"0;4194;1;f;f;f;5805;718877ad-184d-41f9-be42-c3e9f341cdcd",
+			"0;4193;1;t;f;f;5806;96aade3a-e02c-4aa7-a821-2092b9faac81",
+			"0;4192;1;f;f;f;5807;966298b6-03c1-444e-aa19-2e38f1517b4e",
+			"0;4191;1;t;f;f;5808;dbbc06c1-f5e1-4c58-b669-5c5725249691",
+			"0;4190;1;f;f;f;5809;0381562f-3adb-4efa-abe3-36594042bd36",
+			"0;4189;1;t;f;f;5810;5c5ceef1-f5b7-43b1-ae8d-2a4acd896804",
+			"0;4188;1;f;f;f;5811;45997db3-5a2a-4dc7-8648-a4968167349c",
+			"0;4187;1;t;f;f;5812;585041ed-1172-4553-a58e-c0d6b5acf83a",
+			"0;4186;1;f;f;f;5813;f6875a51-6c19-4547-a434-a0dc603c46a8",
+			"0;4185;1;t;f;f;5814;6f6911de-8d4a-41ae-b42b-12ba6eed2279",
+			"0;4184;1;f;f;f;5815;2f13f137-1db2-4372-b022-d87ddd2a1de2",
+			"0;4183;1;t;f;f;5816;c190eda8-f47c-43a6-a613-578f9c0aad7a",
+			"0;4182;1;f;f;f;5817;4ca45579-3247-461b-82e7-bb517f45899b",
+			"0;4181;1;t;f;f;5818;dd94430a-5952-4d3d-ba42-12fc07166c2a",
+			"0;4180;1;f;f;f;5819;06be7a8e-9ef5-410c-b7e3-742dc276b3e4",
+			"0;4179;1;t;f;f;5820;466d2acc-08e8-4b90-bd5d-9ac93c7f83f6",
+			"0;4178;1;f;f;f;5821;9d9ca156-e83f-45bf-afed-f063119727e4",
+			"0;4177;1;t;f;f;5822;f6ce0eb9-80f7-4315-9c0c-23470c08a9c8",
+			"0;4176;1;f;f;f;5823;5e497e01-ae13-40c7-9ff1-e90a6f72b269",
+			"0;4175;1;t;f;f;5824;ff494c92-e5c4-4c55-b85e-6f5062188f98",
+			"0;4174;1;f;f;f;5825;0c1fad33-06bf-4f11-a4ad-fe5ee1382039",
+			"0;4173;1;t;f;f;5826;9a8c7506-e7cd-4872-9c06-a2629ee3abf0",
+			"0;4172;1;f;f;f;5827;150264a6-41b2-4f32-a2d2-9e272ec2c3c9",
+			"0;4171;1;t;f;f;5828;d35cfba5-f3e5-479b-8aaf-0dc1e57b24e2",
+			"0;4170;1;f;f;f;5829;294b3ca0-1f08-4226-be41-849b8f65a9d2",
+			"0;4169;1;t;f;f;5830;057dc51d-bb21-4f40-9897-4fa8cdb5e1d6",
+			"0;4168;1;f;f;f;5831;ecc80363-4a9f-44aa-9c07-930f48e3e052",
+			"0;4167;1;t;f;f;5832;79d4ebbe-fffd-4606-8d8f-9a1df31093e5",
+			"0;4166;1;f;f;f;5833;eee400d0-5278-4e26-92a0-9e311cd86394",
+			"0;4165;1;t;f;f;5834;21f9df46-58fd-4d4a-a53c-ab0211d8ffb4",
+			"0;4164;1;f;f;f;5835;3a1f66b6-0286-4043-8153-6361eb9c8b21",
+			"0;4163;1;t;f;f;5836;8e813913-981e-4d3f-ae4e-a6e4536c0f12",
+			"0;4162;1;f;f;f;5837;d9a8c0e3-8413-42f2-8355-7610f8d9e393",
+			"0;4161;1;t;f;f;5838;7c7f5bd1-a823-4221-b52d-aeb17c0de209",
+			"0;4160;1;f;f;f;5839;cea9d6e0-519f-45c8-84a1-364c60fc7e79",
+			"0;4159;1;t;f;f;5840;f97a900b-65ef-4f29-a16d-a1bc83979f98",
+			"0;4158;1;f;f;f;5841;628a2f71-6775-4ade-ad36-4e07fd74ce95",
+			"0;4157;1;t;f;f;5842;400efa9a-3862-4765-8735-d2d83eb580a8",
+			"0;4156;1;f;f;f;5843;6fa89b84-649a-4822-ac6c-06199a806402",
+			"0;4155;1;t;f;f;5844;19c11166-12c9-42cc-8d6c-bfe1286bffb4",
+			"0;4154;1;f;f;f;5845;2fdec549-d8d7-4ee8-8fba-0a8df286952b",
+			"0;4153;1;t;f;f;5846;ccf838b5-972c-461f-ac6f-28a8ea43cebe",
+			"0;4152;1;f;f;f;5847;96730679-b368-47df-90a9-f4d9648d6070",
+			"0;4151;1;t;f;f;5848;1734734d-1381-4e08-b6ef-696b5551768d",
+			"0;4150;1;f;f;f;5849;1b8ac1a3-42d3-41a9-a9ab-e2e08ac7f294",
+			"0;4149;1;t;f;f;5850;ee5ff4e6-ec81-4ced-9dbf-2cc8f3716755",
+			"0;4148;1;f;f;f;5851;19e5d93d-d1d0-43f7-b0d9-165a827075ca",
+			"0;4147;1;t;f;f;5852;201d6a2e-9d88-4c7c-8025-e314a363f423",
+			"0;4146;1;f;f;f;5853;56510d7e-aa32-4eaa-912e-ae0094faeca9",
+			"0;4145;1;t;f;f;5854;f5e80a29-5a55-4c3a-affb-7ccbb1d3c07c",
+			"0;4144;1;f;f;f;5855;8a495add-b994-40ff-9183-04f86554b9b1",
+			"0;4143;1;t;f;f;5856;e4665d5b-cca0-4107-bd06-6155396379ae",
+			"0;4142;1;f;f;f;5857;4d501ce1-c104-4f78-8bfc-8f310c3e039f",
+			"0;4141;1;t;f;f;5858;45531399-3d8d-457a-b920-2d411cf082cd",
+			"0;4140;1;f;f;f;5859;50994781-5368-4401-bbd2-1ff59e4b05dd",
+			"0;4139;1;t;f;f;5860;cbc0b03a-4497-4d1f-a0fe-3ad6b7c0ce11",
+			"0;4138;1;f;f;f;5861;c388a7b8-3c99-41d2-9047-590ab5d04e73",
+			"0;4137;1;t;f;f;5862;4947ab6c-15d3-4379-bbb2-7345e48b6af0",
+			"0;4136;1;f;f;f;5863;1775e27d-4c37-4046-8e50-c9e4d9a68091",
+			"0;4135;1;t;f;f;5864;34387865-78d9-4ea1-9c4f-d25f31d9821c",
+			"0;4134;1;f;f;f;5865;75c89e67-b8a6-4210-a225-48309d4e09e0",
+			"0;4133;1;t;f;f;5866;a0f80682-044b-4e53-bbcc-ae908d040660",
+			"0;4132;1;f;f;f;5867;6e065817-0ecd-4179-8389-6e41f90419bd",
+			"0;4131;1;t;f;f;5868;3e9f93f8-7e27-41d7-bfc2-8d6349f6f73c",
+			"0;4130;1;f;f;f;5869;daf3d6bb-0fe2-4143-83f8-dd6be5b633e0",
+			"0;4129;1;t;f;f;5870;7eba6dfe-8718-4162-8700-dff89a89f8ad",
+			"0;4128;1;t;f;f;5871;d9834419-9ce3-4c06-b4dc-d1926ec4cd49",
+			"0;4127;1;f;f;f;5872;803c2fbe-e25a-45f0-bb36-45c0b071eb47",
+			"0;4126;1;f;f;f;5873;74669faf-d65f-47d1-b175-ec46620188d1",
+			"0;4125;1;t;f;f;5874;c7257441-ac1b-4396-9fd0-512d0ec27051",
+			"0;4124;1;f;f;f;5875;16005ebe-5752-4c26-ac58-c164fbee2e4f",
+			"0;4123;1;t;f;f;5876;4121d0b9-69ff-4ffe-ad70-22444e0c39fb",
+			"0;4122;1;f;f;f;5877;6ce344a6-c2e0-48f1-9495-b14034de416b",
+			"0;4121;1;t;f;f;5878;656446ab-6d24-4cfb-874c-fd21507d7557",
+			"0;4120;1;f;f;f;5879;9d4a6821-0404-40bb-a5fd-4b1aad015e76",
+			"0;4119;1;t;f;f;5880;91e154e1-7483-4426-b384-34a130790f48",
+			"0;4118;1;f;f;f;5881;e333539a-0f7f-465a-9916-0de40336308b",
+			"0;4117;1;t;f;f;5882;c668ccb6-7795-4620-a165-e21f5a87ed00",
+			"0;4116;1;f;f;f;5883;a221cc2c-13e3-45d8-bbef-89f11020c395",
+			"0;4115;1;t;f;f;5884;e27e8bfe-1611-488f-85b9-41901a2ae4ab",
+			"0;4114;1;f;f;f;5885;e5383efb-fac2-4ece-b72d-e9af003c3bf5",
+			"0;4113;1;t;f;f;5886;d6289ef4-d27f-46f0-84c3-ba36bc8d2472",
+			"0;4112;1;f;f;f;5887;cea06dcb-cd07-4fdb-b3e2-cc16b50856b8",
+			"0;4111;1;t;f;f;5888;eaf51a41-ed9f-496a-8bac-de58cee964c0",
+			"0;4110;1;f;f;f;5889;5d16a60a-e583-4efc-b47d-f887e494a524",
+			"0;4109;1;t;f;f;5890;0fb1b952-c3ed-456b-8462-f16f01292f01",
+			"0;4108;1;f;f;f;5891;637670ad-5c0b-4312-81c5-79c397c75e0c",
+			"0;4107;1;t;f;f;5892;91d5f0ce-34c4-4500-a784-8685b3c2b288",
+			"0;4106;1;f;f;f;5893;1c4ee467-b758-4020-b489-c8804ba3265a",
+			"0;4105;1;t;f;f;5894;5bcd658b-089a-4899-a98f-9321c01bb0b3",
+			"0;4104;1;f;f;f;5895;fa64fa20-2abe-485a-9a03-d875a6a80f14",
+			"0;4103;1;t;f;f;5896;0cd293c4-e7ca-4acf-948c-1eb079b8f592",
+			"0;4102;1;f;f;f;5897;4a773039-20f8-4977-93d9-e9489e25ced7",
+			"0;4101;1;t;f;f;5898;d7dfc0a5-44a0-4fea-a834-749347a64825",
+			"0;4100;1;f;f;f;5899;a09c146a-9f41-4ea9-9331-35a407d814df",
+			"0;4099;1;t;f;f;5900;dd72e8a6-3cc7-463f-b26f-43ca07c7f850",
+			"0;4098;1;f;f;f;5901;7e6e5e0e-f9a8-40c1-9408-49c62b9c39ba",
+			"0;4097;1;t;f;f;5902;3b6682d0-e003-434f-8702-ebdb7b00f2fe",
+			"0;4096;1;f;f;f;5903;767b2d8b-2d27-4894-a367-6566a9383842",
+			"0;4095;1;t;f;f;5904;949a7705-9b1f-41bb-9422-77c02d560005",
+			"0;4094;1;f;f;f;5905;03271354-d351-469f-b0bc-fbe858e1a725",
+			"0;4093;1;t;f;f;5906;5ad68dfb-30df-4b52-a7cd-52432540cc4c",
+			"0;4092;1;t;f;f;5907;2afe8301-1d59-45c9-bcef-bb752d2a1a6c",
+			"0;4091;1;f;f;f;5908;3b9528b2-08ca-45e3-b717-93608fb52af6",
+			"0;4090;1;f;f;f;5909;ee9757d2-489e-44d2-bf4f-a1591de37f11",
+			"0;4089;1;t;f;f;5910;94aef4ab-6365-4899-8565-f09795be783c",
+			"0;4088;1;t;f;f;5911;b4210498-3df6-4546-9b1a-7f9c50dba25f",
+			"0;4087;1;f;f;f;5912;8e9e5f0f-5582-4981-8bc8-4072acae8e44",
+			"0;4086;1;f;f;f;5913;ab84f779-e6b6-44eb-bfda-da6437fe4cc7",
+			"0;4085;1;t;f;f;5914;f8f67ca9-6a4b-47d4-baed-828aa75d108e",
+			"0;4084;1;f;f;f;5915;98bbeec9-dc00-4d0e-832e-a562c70410d5",
+			"0;4083;1;t;f;f;5916;7039972f-5ab2-4d9e-bb47-8427049fd3bd",
+			"0;4082;1;f;f;f;5917;b622f9e9-9d45-4f7a-aec1-e5b1848b3bfe",
+			"0;4081;1;t;f;f;5918;99be1849-37ef-472b-a77a-34ad49c5d17e",
+			"0;4080;1;f;f;f;5919;67cc418d-9542-4f66-b04e-3ba51c54e0de",
+			"0;4079;1;t;f;f;5920;ca3787bd-104d-48a8-9f6c-f12fc738163c",
+			"0;4078;1;f;f;f;5921;ad586e0a-45eb-4d04-b514-592319c26f8d",
+			"0;4077;1;t;f;f;5922;b4372f13-282a-4699-a08c-5539e56805a4",
+			"0;4076;1;f;f;f;5923;ff9a5a70-ac57-4f66-9d25-2a0e3d65ca72",
+			"0;4075;1;t;f;f;5924;b40d7c9f-ebc4-497c-8f64-195e54239a88",
+			"0;4074;1;f;f;f;5925;c671367c-87da-4afb-b9f1-9ec27ca8c426",
+			"0;4073;1;t;f;f;5926;3ce01f17-6cfd-4b19-b2b8-5a09bc59e0eb",
+			"0;4072;1;f;f;f;5927;9a9c4d72-b976-4b4a-b5c6-6835715c3d80",
+			"0;4071;1;t;f;f;5928;3492a088-0dae-4b28-831e-92623562a776",
+			"0;4070;1;f;f;f;5929;56d61d42-09fc-4ab8-83a8-95b66da6a832",
+			"0;4069;1;t;f;f;5930;3cc680ea-12f5-4d3c-8992-c7e4b0f54209",
+			"0;4068;1;f;f;f;5931;0dd4954c-3917-40d7-82a4-74357f38464b",
+			"0;4067;1;t;f;f;5932;e2f2d566-5631-45b3-b835-8f2d5dcb0658",
+			"0;4066;1;f;f;f;5933;4387624a-b7f8-4136-8988-2952c500e612",
+			"0;4065;1;t;f;f;5934;b22f21c6-cf64-464d-81f7-f5dcb15b5b47",
+			"0;4064;1;f;f;f;5935;357e6698-11dd-46d8-801b-5e57e74cae55",
+			"0;4063;1;t;f;f;5936;a9f46f3b-d8b8-4fca-9193-93acc9ee141e",
+			"0;4062;1;f;f;f;5937;548c9f53-6e5b-43eb-bd2d-aba2598207c6",
+			"0;4061;1;t;f;f;5938;41a4be40-7ba6-40dc-9050-75ca108a0bad",
+			"0;4060;1;f;f;f;5939;f22a5f9c-38fe-48dc-9765-f1e7c9aedb29",
+			"0;4059;1;t;f;f;5940;0d988202-3f54-4bfd-af5c-e168d2118178",
+			"0;4058;1;f;f;f;5941;4ca44021-dc7e-4a29-8fb3-b748fac6de4a",
+			"0;4057;1;t;f;f;5942;e2834249-7847-4be1-b6c9-4f6ebcd56d73",
+			"0;4056;1;f;f;f;5943;9b310dd4-d94e-456f-a985-c11cd1a10f9f",
+			"0;4055;1;t;f;f;5944;95327849-ab70-4e1e-bf10-27fe3a8cc9d4",
+			"0;4054;1;f;f;f;5945;51b0266d-2279-4975-8c4b-4fc9a847c04a",
+			"0;4053;1;t;f;f;5946;273d4982-6ce6-45d6-827a-aaeed3ce51a7",
+			"0;4052;1;f;f;f;5947;c06d0d13-e8c4-49e8-bdfa-88496813433f",
+			"0;4051;1;t;f;f;5948;e2ccfca3-37ec-4729-bfa0-6cb1801a22e2",
+			"0;4050;1;f;f;f;5949;dcadaecf-adb1-4cc9-b1cb-bd556f09b0f8",
+			"0;4049;1;t;f;f;5950;ba955b52-dd77-411f-bce9-6fda9f277e95",
+			"0;4048;1;f;f;f;5951;fc85f392-e6c2-40f9-b4bf-8a27de9d6a3c",
+			"0;4047;1;t;f;f;5952;cd4f5d46-f5d4-464d-9062-23dcf8bacb31",
+			"0;4046;1;f;f;f;5953;d9dd6b01-401f-4400-bb96-1776ce919356",
+			"0;4045;1;t;f;f;5954;67c52c0f-9ffe-4a9b-a639-dc9f454f7a0a",
+			"0;4044;1;f;f;f;5955;4263fdb2-918e-4a39-bd36-5a412321d084",
+			"0;4043;1;t;f;f;5956;abb79383-4422-4465-b512-aace76556d19",
+			"0;4042;1;f;f;f;5957;9ae9ec9b-fd9b-468e-b4bc-cf29295ed58d",
+			"0;4041;1;t;f;f;5958;c198ad95-7ba1-4859-b124-c8f0e9efd8e1",
+			"0;4040;1;f;f;f;5959;05cac71f-7a9d-4635-a0b2-40369a3ff71e",
+			"0;4039;1;t;f;f;5960;976530b5-feef-40f5-ae8b-4c5444a02a17",
+			"0;4038;1;f;f;f;5961;764b495c-4618-4b96-b552-e8b008c1859e",
+			"0;4037;1;t;f;f;5962;ffe8d84e-57f7-438b-aa46-8175041fdcab",
+			"0;4036;1;f;f;f;5963;8a014365-ce88-4985-ab6d-874a55a3037e",
+			"0;4035;1;t;f;f;5964;86259a3a-3a64-40e7-956f-b34e355aaacb",
+			"0;4034;1;t;f;f;5965;9e00259f-36af-4ded-81d4-3f6b7f1a021a",
+			"0;4033;1;f;f;f;5966;88286e97-cd02-4b90-a293-fd9417b329d7",
+			"0;4032;1;f;f;f;5967;483fb22d-9f9d-41aa-b7bc-d2d30b867d82",
+			"0;4031;1;t;f;f;5968;3813c74a-747c-4349-ad70-6380f6b6c1eb",
+			"0;4030;1;f;f;f;5969;d293917e-fad0-4f4e-a24c-ef960df99c33",
+			"0;4029;1;t;f;f;5970;224c8262-2ff5-444b-8ee0-75c5e5a0c851",
+			"0;4028;1;f;f;f;5971;4899ff67-7f21-4bb9-98bd-007f2a90b4ea",
+			"0;4027;1;t;f;f;5972;2f11600e-491c-4463-a115-601bd46e20d8",
+			"0;4026;1;f;f;f;5973;d252cfda-3bab-4428-8e62-0a8d36c417f0",
+			"0;4025;1;t;f;f;5974;4b94c70b-0828-4537-b783-4db97695877b",
+			"0;4024;1;f;f;f;5975;aa28de3d-a0ed-4ed0-9d95-3599a4f20148",
+			"0;4023;1;t;f;f;5976;62cffc2b-fedb-47aa-bcc7-707f75bfb8e3",
+			"0;4022;1;f;f;f;5977;aa213314-7ce3-4694-9aa4-a1704b8f6369",
+			"0;4021;1;t;f;f;5978;eb965b6c-5df1-49cc-8951-b72250455143",
+			"0;4020;1;f;f;f;5979;53370ffd-02ea-492a-ad2b-b6f33160649b",
+			"0;4019;1;t;f;f;5980;10aa2245-3377-48d7-b33e-e6dfabd55d68",
+			"0;4018;1;f;f;f;5981;a5922c91-8fc0-4be0-862d-38810cba8ea5",
+			"0;4017;1;t;f;f;5982;e9c54f28-beab-49ab-a2ad-95b41922d51a",
+			"0;4016;1;f;f;f;5983;89604290-860a-438a-b8a8-f22f8095231e",
+			"0;4015;1;t;f;f;5984;584a5ebc-4f30-4e37-9761-c329f6f1c24e",
+			"0;4014;1;f;f;f;5985;a815f4a9-8c63-4daa-869d-62282dd81178",
+			"0;4013;1;t;f;f;5986;9a3f8091-8603-4f3f-b287-5a3a11faa787",
+			"0;4012;1;f;f;f;5987;b2b2c7ef-3c59-473e-97fa-ea79b965a609",
+			"0;4011;1;t;f;f;5988;2d67e2f2-2e4e-45ac-93ee-f1449336e2d3",
+			"0;4010;1;f;f;f;5989;fd659f95-cad6-4a08-ac4a-17a73ea8847b",
+			"0;4009;1;t;f;f;5990;15f55bc4-00be-47ba-92cb-82ae9501f2d4",
+			"0;4008;1;f;f;f;5991;ed67f758-eace-4c7d-b651-ff25fb8adccf",
+			"0;4007;1;t;f;f;5992;a129bdd4-a3fd-40bf-970d-809e74f7ea6b",
+			"0;4006;1;f;f;f;5993;e188b6aa-e2ce-4eeb-b7ec-94165716acfe",
+			"0;4005;1;t;f;f;5994;bc889d80-8881-4bba-9949-856e5cadcdce",
+			"0;4004;1;f;f;f;5995;765849ae-83aa-47e5-b694-5dcc1c81cb9f",
+			"0;4003;1;t;f;f;5996;22845de0-b963-44ed-baf6-c2d74e5f32c9",
+			"0;4002;1;f;f;f;5997;380d0cbc-6910-4ecb-9ec3-572dad76de67",
+			"0;4001;1;t;f;f;5998;3a0fe646-7aa2-4e76-9ba9-315cfd065ee2",
+			"0;4000;1;f;f;f;5999;8a32ac01-0608-426f-91e6-d1c099a53860",
+			"0;3999;1;t;f;f;6000;5e83dda1-09e4-4172-8839-ec1f5ef6a842",
+			"0;3998;1;f;f;f;6001;25a10400-f8c0-48c6-81f4-5287a8e0d1cb",
+			"0;3997;1;t;f;f;6002;fcff7e87-9e96-430d-a57e-a76a20dd18e7",
+			"0;3996;1;f;f;f;6003;4e3b2b74-1ec2-4d66-9d35-e1b63a7b1c81",
+			"0;3995;1;t;f;f;6004;5983144a-3438-4020-b5d7-7845e4711534",
+			"0;3994;1;t;f;f;6005;83755e63-86b6-41e2-9ff5-74b834af5246",
+			"0;3993;1;f;f;f;6006;9dfb74ea-0fb3-4bfe-88e8-6f5bb8fe0107",
+			"0;3992;1;f;f;f;6007;8721291c-a67d-4cc1-a087-49b277ba91c1",
+			"0;3991;1;t;f;f;6008;9cce5194-d24f-47c4-b604-39c6cd98b43b",
+			"0;3990;1;f;f;f;6009;149a895c-c254-4aa0-b005-367d3f8632db",
+			"0;3989;1;t;f;f;6010;30591b04-1837-46a9-8d6f-7024db6d6dea",
+			"0;3988;1;f;f;f;6011;b0328ac0-fbf3-425d-a6c9-56b40d85ac54",
+			"0;3987;1;t;f;f;6012;d758829f-1981-41e0-a0c7-8708b1bcef8c",
+			"0;3986;1;f;f;f;6013;0deaad56-5bb5-4da4-97ab-991765f16206",
+			"0;3985;1;t;f;f;6014;419b6e57-ea30-49d8-af28-a9accdfdef25",
+			"0;3984;1;f;f;f;6015;7a3367d1-abd4-4dce-a268-e1ba57b8dc54",
+			"0;3983;1;t;f;f;6016;43f25dcd-9878-4ee6-8f44-4d4a3745a04b",
+			"0;3982;1;f;f;f;6017;7fcd4e80-7a95-4877-ae19-dbe0117050fe",
+			"0;3981;1;t;f;f;6018;f139a3a5-48d2-4112-adbd-0a0b87509801",
+			"0;3980;1;f;f;f;6019;a4c4880e-2141-4fed-a795-65f97191c1d6",
+			"0;3979;1;t;f;f;6020;c40d0433-9857-40f3-b677-ddcf9e1afe08",
+			"0;3978;1;f;f;f;6021;3abb35b4-0bae-4192-9020-7cbb91207ff8",
+			"0;3977;1;t;f;f;6022;32eebd39-5c6d-4282-bef0-f15b57f256a5",
+			"0;3976;1;f;f;f;6023;f04c46eb-bc1b-42bb-83eb-2199f34fd9df",
+			"0;3975;1;t;f;f;6024;8aecab76-51e5-4edf-9097-8ae343d9b7e6",
+			"0;3974;1;f;f;f;6025;dfcdae36-9445-4431-afe4-d55244504bd0",
+			"0;3973;1;t;f;f;6026;cc37b6a1-5798-46fd-ad29-9d65fade2db1",
+			"0;3972;1;f;f;f;6027;76977392-17b6-4f88-b4d2-4a99ef47dd6e",
+			"0;3971;1;t;f;f;6028;5a0c351f-3571-4be8-8918-499aba44b8f2",
+			"0;3970;1;f;f;f;6029;62f435d2-4615-4997-87fc-95e33769a18a",
+			"0;3969;1;t;f;f;6030;e3cc7e07-a4d7-4fdd-9645-33d1c6c30b43",
+			"0;3968;1;f;f;f;6031;3e74f2c2-3a89-42e0-9658-c78bbc09d3eb",
+			"0;3967;1;t;f;f;6032;bba69bcf-d223-43a7-b48f-33e8b7b37d47",
+			"0;3966;1;f;f;f;6033;3725b860-8d2f-46d4-8ad9-2fda80550eb5",
+			"0;3965;1;t;f;f;6034;de64c8bb-6a13-425d-8aec-5e1397001aa1",
+			"0;3964;1;f;f;f;6035;c6c28bbd-65e0-448f-b8d0-0cd61eacf7a2",
+			"0;3963;1;t;f;f;6036;3666ed83-5054-401a-81ef-8ff36926fc77",
+			"0;3962;1;f;f;f;6037;2e960ffe-182c-4b81-8c20-b242165751d8",
+			"0;3961;1;t;f;f;6038;ca733951-b629-45d8-b448-fb120244f46c",
+			"0;3960;1;f;f;f;6039;2f2017e3-358d-4bc8-a127-06870d019aaa",
+			"0;3959;1;t;f;f;6040;f3c125a4-6d47-4b31-bbf9-38fc06bf9a6a",
+			"0;3958;1;f;f;f;6041;50980959-9265-4272-bfd1-14b4da9b67df",
+			"0;3957;1;t;f;f;6042;f3921b33-4fe2-40ef-af5f-8f8a0c8f4861",
+			"0;3956;1;f;f;f;6043;9d8d2894-094f-4637-a09f-1a5f5a39f961",
+			"0;3955;1;t;f;f;6044;104d3921-47ef-493d-8756-939f7384f691",
+			"0;3954;1;f;f;f;6045;e896ab3a-fcd4-456b-b664-427a8a9fbefa",
+			"0;3953;1;t;f;f;6046;1fcad3bd-6990-43a0-a62f-f5e3c9021eac",
+			"0;3952;1;f;f;f;6047;88d1ef1a-6b73-4090-9884-e3b4ede68eeb",
+			"0;3951;1;t;f;f;6048;357fa520-2277-4e3f-9a15-1496af6afb1f",
+			"0;3950;1;f;f;f;6049;7ec79cdd-6a72-4d47-b3e4-b330ef450a7f",
+			"0;3949;1;t;f;f;6050;a12e6552-c28f-4053-afa9-b28a75d13f52",
+			"0;3948;1;f;f;f;6051;3eef0a78-e4aa-4d46-9224-d6b9754ddde0",
+			"0;3947;1;t;f;f;6052;9eb2d53c-fd5d-40f9-896e-69a83d3f07a4",
+			"0;3946;1;f;f;f;6053;6c59a318-d4be-48aa-91b6-d3cebbd1c2fa",
+			"0;3945;1;t;f;f;6054;6558faca-f89d-4bc6-948f-9281e8bbb003",
+			"0;3944;1;f;f;f;6055;046d7978-ca3f-4dab-9171-fe23f23b77fc",
+			"0;3943;1;t;f;f;6056;d34f7c42-0383-496b-aba8-9586f89cfaa4",
+			"0;3942;1;f;f;f;6057;1ad22e58-324d-41cc-a172-7f3c8b1cabc4",
+			"0;3941;1;t;f;f;6058;53b2ee13-d157-493a-90af-2875ef0ca9c4",
+			"0;3940;1;f;f;f;6059;09461eb5-a3f1-4ff8-9b04-cfd791a6f127",
+			"0;3939;1;t;f;f;6060;dd2aad1d-9515-4e21-93c6-471acab9d040",
+			"0;3938;1;f;f;f;6061;a497ca9c-65f8-4d73-a0ce-b7de4e01b04b",
+			"0;3937;1;t;f;f;6062;ea442633-7bcf-4308-9b6d-71cc530988e8",
+			"0;3936;1;t;f;f;6063;fd3ec40d-34b9-4ce3-8216-5378f5c9419a",
+			"0;3935;1;f;f;f;6064;f258499e-1ea1-4977-86ae-0ddbe6400f06",
+			"0;3934;1;f;f;f;6065;c68c300a-8cd9-406c-a013-4489b13b4535",
+			"0;3933;1;t;f;f;6066;e82596f4-e116-4d6c-ab63-fb2de725ef32",
+			"0;3932;1;f;f;f;6067;7eab72b0-722f-4dae-a6bb-f4c31a59d287",
+			"0;3931;1;t;f;f;6068;b2d0be24-a28d-43c9-b3d9-77e1aa25d278",
+			"0;3930;1;f;f;f;6069;8c0c5d06-6e0f-421e-93fe-0bbac592d114",
+			"0;3929;1;t;f;f;6070;e4914fc1-9e89-4c54-a04d-74a987664d1b",
+			"0;3928;1;f;f;f;6071;f26ae137-5790-47ec-aa46-3bebd0934b7d",
+			"0;3927;1;t;f;f;6072;58e73475-a97e-4a21-aa7c-9a4a5d7c3664",
+			"0;3926;1;f;f;f;6073;74b16aed-309d-4934-8332-d037f9ddd6fb",
+			"0;3925;1;t;f;f;6074;735221d6-8506-43ea-9e20-6a264b729936",
+			"0;3924;1;t;f;f;6075;8f0e0df4-8c1b-4e9f-91a9-434f60f91a24",
+			"0;3923;1;f;f;f;6076;86946c10-50d2-4c07-bd35-a1824396fe6b",
+			"0;3922;1;f;f;f;6077;d169f2eb-2422-47f1-97a8-653f847a1ee7",
+			"0;3921;1;t;f;f;6078;f10b54bf-3f94-4d4f-8fb2-a7ef3bd9502f",
+			"0;3920;1;t;f;f;6079;c3fd273d-1c52-4f18-83b8-d116475622da",
+			"0;3919;1;f;f;f;6080;bfb6d019-edba-4d68-9559-38f08842559a",
+			"0;3918;1;f;f;f;6081;ab43b4e2-618f-4161-8932-97d3c009e699",
+			"0;3917;1;t;f;f;6082;a1609868-9c02-455f-a830-f6263e7be638",
+			"0;3916;1;f;f;f;6083;74d9bd70-ff0a-4b86-b2c7-67b44315d565",
+			"0;3915;1;t;f;f;6084;b74e01d1-d73c-45d0-8485-d7adb1d7621b",
+			"0;3914;1;f;f;f;6085;ef84df6e-5451-4eae-87de-384b173e6118",
+			"0;3913;1;t;f;f;6086;831ad200-897c-4b48-8cdd-77cc6b81b718",
+			"0;3912;1;f;f;f;6087;a1818837-4d76-4503-b3d4-49f31146b8b7",
+			"0;3911;1;t;f;f;6088;733f2a5a-b517-406d-be72-72484c528aeb",
+			"0;3910;1;f;f;f;6089;2f552c38-c6d4-43e0-a608-96acb6db8e6e",
+			"0;3909;1;t;f;f;6090;de14858c-f116-45bf-adf6-9f874790023c",
+			"0;3908;1;t;f;f;6091;066f9319-4b5b-4756-8757-26e3eb2146da",
+			"0;3907;1;f;f;f;6092;9ea32586-0bc8-4352-b5b9-3ab29f26110d",
+			"0;3906;1;f;f;f;6093;c470c06b-31ae-4c9e-b0ce-3cf0d72316c3",
+			"0;3905;1;t;f;f;6094;678d8cd4-9b81-4b00-98d3-7d77177b94fc",
+			"0;3904;1;t;f;f;6095;bc00f27a-5580-46da-8963-44ef2cbe65f6",
+			"0;3903;1;f;f;f;6096;948a6121-7378-48c4-9947-e63ed30ff21c",
+			"0;3902;1;f;f;f;6097;eb81d2d7-3ee0-40d6-a794-3392604a55ad",
+			"0;3901;1;t;f;f;6098;f0c0295a-a061-4ac8-811c-2df3258c740d",
+			"0;3900;1;f;f;f;6099;645036a5-b94d-450b-b532-3f21ffd78e44",
+			"0;3899;1;t;f;f;6100;101ab54a-24db-48c5-8d4b-9984a380a4f2",
+			"0;3898;1;f;f;f;6101;15ea4a6b-2294-48bb-8b81-baf018489e56",
+			"0;3897;1;t;f;f;6102;16940efc-2a4f-4e73-b7ea-2512b40c36cc",
+			"0;3896;1;f;f;f;6103;7b931ff6-bcab-469b-b691-e28ea38f5f7d",
+			"0;3895;1;t;f;f;6104;de3cc2a6-4d8e-4d39-9e5b-1b7c1cc794c4",
+			"0;3894;1;f;f;f;6105;64fe142b-7de5-41d7-a229-dcce32a0e8b5",
+			"0;3893;1;t;f;f;6106;269fdb39-ea81-4799-9adb-306a4bdca24a",
+			"0;3892;1;t;f;f;6107;e6e2c47e-aa24-477b-ae2c-3fd7a2f66190",
+			"0;3891;1;f;f;f;6108;db6a6a6a-3db1-4ba4-bb52-0c32f2808e15",
+			"0;3890;1;f;f;f;6109;56676c80-0919-46e3-9094-24384596b420",
+			"0;3889;1;t;f;f;6110;ea8fcef2-22a9-4b93-8bd6-571ac1012127",
+			"0;3888;1;t;f;f;6111;c8200044-61ff-4538-aff1-2089e1591a27",
+			"0;3887;1;f;f;f;6112;5bd1748f-fd01-42ed-bbf4-faf2b9212dcb",
+			"0;3886;1;f;f;f;6113;541d067d-6c5b-4dfe-a590-9be39b4fad83",
+			"0;3885;1;t;f;f;6114;8ecf0fe2-9e4a-49d5-aad2-36dd529bbc72",
+			"0;3884;1;t;f;f;6115;2f982d04-fbed-4506-86f9-c1dcb163099e",
+			"0;3883;1;f;f;f;6116;f05c6cd4-e5f3-48d4-aa31-85a1215a1d21",
+			"0;3882;1;f;f;f;6117;fae2f75b-3a9f-4448-9e1a-f61db6e9d81c",
+			"0;3881;1;t;f;f;6118;e0f70374-bf21-4eaa-bf6d-d6afb0b45fb8",
+			"0;3880;1;f;f;f;6119;836d6928-8b70-457b-b3ab-1e3ae0e44d61",
+			"0;3879;1;t;f;f;6120;2018e8a7-333d-4cba-bfda-f0b28756039f",
+			"0;3878;1;f;f;f;6121;36cbcde7-64e7-4ac2-8b1e-909c02256676",
+			"0;3877;1;t;f;f;6122;b900bf41-b689-4f4c-87fc-a722a3b59cce",
+			"0;3876;1;f;f;f;6123;1ca730b2-a1bd-46ff-955c-e7c44140dc71",
+			"0;3875;1;t;f;f;6124;3c769828-34c7-4f6a-b827-216286ec6632",
+			"0;3874;1;f;f;f;6125;cee3ba3a-c984-4033-b327-8c5f56c01b73",
+			"0;3873;1;t;f;f;6126;de07d1c9-a250-430d-9789-69ad841056d9",
+			"0;3872;1;f;f;f;6127;932883c9-61ca-4f61-8c34-de8a94cb732b",
+			"0;3871;1;t;f;f;6128;20c629fe-3edb-4f73-854a-e5ead5266535",
+			"0;3870;1;f;f;f;6129;076b8681-736d-4fb5-977a-ccb4de9f236b",
+			"0;3869;1;t;f;f;6130;6d93c8cc-9f78-4b44-864b-9c86504cf2cb",
+			"0;3868;1;f;f;f;6131;e7840a48-3233-43aa-b239-c2d6eb8dd74a",
+			"0;3867;1;t;f;f;6132;bbf3e99a-b33e-4bfb-9c35-45be10ea610f",
+			"0;3866;1;f;f;f;6133;45514911-d8d6-45fc-95ec-9e4b8225fd48",
+			"0;3865;1;t;f;f;6134;8598d35d-fa73-4bf3-823f-7ebc2b6240ea",
+			"0;3864;1;f;f;f;6135;70604f99-a9c0-4425-b9b7-4541c44c758c",
+			"0;3863;1;t;f;f;6136;81c8372b-1e71-4771-981f-919c69625d48",
+			"0;3862;1;f;f;f;6137;dc4757a1-be46-4f25-8aa6-c59f78ede46b",
+			"0;3861;1;t;f;f;6138;d30368ce-4cf0-43ac-8ed1-a8092f10b687",
+			"0;3860;1;f;f;f;6139;54df0edc-ced0-4396-8724-97f3c20522a2",
+			"0;3859;1;t;f;f;6140;43e3685a-3471-4b7e-b246-9ff4197211eb",
+			"0;3858;1;f;f;f;6141;1c988738-b175-424e-aa5d-b5ce32956d8e",
+			"0;3857;1;t;f;f;6142;aaa934a8-321a-4be9-b202-a6205e7936c9",
+			"0;3856;1;t;f;f;6143;300d3116-8780-4dc7-bede-0515118386f7",
+			"0;3855;1;f;f;f;6144;e811c346-58ee-4c0b-8b90-aba9116d828a",
+			"0;3854;1;f;f;f;6145;bd28ab1e-7ae2-42bd-817e-b0638f8eb4aa",
+			"0;3853;1;t;f;f;6146;9116ecf6-7cbb-4457-887b-f82c1c4a1f9f",
+			"0;3852;1;t;f;f;6147;cccebf78-533f-46c9-9227-a9361e742fa8",
+			"0;3851;1;f;f;f;6148;039aaad7-d426-442f-9512-da8d4fafffac",
+			"0;3850;1;f;f;f;6149;b42fe5b6-66ce-4528-8d1a-ba06bf9ce90d",
+			"0;3849;1;t;f;f;6150;a3217044-6bb5-4f1e-8003-0f82413cb318",
+			"0;3848;1;t;f;f;6151;40509c36-1156-427c-a820-a1b5b7bada2f",
+			"0;3847;1;f;f;f;6152;099768c4-6429-4109-a11b-69d03508a6c9",
+			"0;3846;1;f;f;f;6153;88876b72-720f-4737-a33d-1cd5be00bb51",
+			"0;3845;1;t;f;f;6154;0d83be77-4ba8-4e05-982b-63e5ee9a07d5",
+			"0;3844;1;f;f;f;6155;b47042b0-16ac-4d44-b777-b64a5b2f003b",
+			"0;3843;1;t;f;f;6156;132f34f6-0abb-40ac-80dc-6e4c83f22923",
+			"0;3842;1;f;f;f;6157;0eec7801-4fbd-42e5-9c46-2a1fc62d827c",
+			"0;3841;1;t;f;f;6158;95d8e2f1-7308-47fd-9dd3-6524306eb79c",
+			"0;3840;1;f;f;f;6159;1f1061c7-c827-46b0-ae07-da73a7105dac",
+			"0;3839;1;t;f;f;6160;84739076-c730-4daa-a270-37735cd5f244",
+			"0;3838;1;f;f;f;6161;7fdd7ba4-c822-4e02-85af-f3e063da499e",
+			"0;3837;1;t;f;f;6162;03f47ac2-d0c9-44ce-9c18-80f8ddd9aeb4",
+			"0;3836;1;f;f;f;6163;33af90d1-5da1-4ae0-a271-36456f68dd8c",
+			"0;3835;1;t;f;f;6164;dfd230cf-8851-47d3-a426-d96820ccb632",
+			"0;3834;1;f;f;f;6165;24207b62-5221-4b8e-bd30-00109d467901",
+			"0;3833;1;t;f;f;6166;a2c82061-d5fa-4e45-bb40-ec825467ad6f",
+			"0;3832;1;f;f;f;6167;a44af660-1713-4a0a-9c47-8eabb3bbd8d1",
+			"0;3831;1;t;f;f;6168;3d339c55-2ddc-405d-ac81-b830d4250cc4",
+			"0;3830;1;f;f;f;6169;8091306a-45aa-4629-8d6c-3aa1c43c0ca1",
+			"0;3829;1;t;f;f;6170;a7dcf59e-4e03-4a3e-b4c4-22a3c2138592",
+			"0;3828;1;f;f;f;6171;b2daba8a-18c9-4a4e-9ba0-bae58dc35270",
+			"0;3827;1;t;f;f;6172;fa1f49b2-5345-461c-abf0-ac743ff26122",
+			"0;3826;1;f;f;f;6173;db594704-ae92-42ed-9e6d-a931e22f5c1d",
+			"0;3825;1;t;f;f;6174;40fdd556-ac47-4b15-a162-d70ec4c6aada",
+			"0;3824;1;f;f;f;6175;bee4ff83-cf76-4b80-88d0-235d233e42d0",
+			"0;3823;1;t;f;f;6176;b96e79c3-e4d2-4e86-8e70-dad416cd970d",
+			"0;3822;1;f;f;f;6177;ec8da4db-c4ae-424e-a023-3a34e2cf967b",
+			"0;3821;1;t;f;f;6178;95937b5c-d940-4691-a8e2-ffae128c121b",
+			"0;3820;1;f;f;f;6179;880818e7-d532-4a99-a86a-450174a598fc",
+			"0;3819;1;t;f;f;6180;f9d06cb1-f8dd-4519-b7aa-4db39661f0d7",
+			"0;3818;1;f;f;f;6181;02a29452-3f9f-4123-9af1-dc94bccb51b7",
+			"0;3817;1;t;f;f;6182;e41155ac-6a43-4244-8ab7-ef5d007b9989",
+			"0;3816;1;f;f;f;6183;910629b1-69fb-41ab-8709-da8bfc45f5f5",
+			"0;3815;1;t;f;f;6184;0d64f210-d3b7-4dcd-93a0-0cedd96a75b2",
+			"0;3814;1;f;f;f;6185;2f9164b7-4790-4e5a-96d3-11f1a5679609",
+			"0;3813;1;t;f;f;6186;9ae0f213-bb5f-4e80-b11f-45835ce172db",
+			"0;3812;1;f;f;f;6187;b6f9a619-04a7-44a9-a2f8-0a1097d5281a",
+			"0;3811;1;t;f;f;6188;fae465e6-dc7f-4afe-8dac-4dd3798ad552",
+			"0;3810;1;f;f;f;6189;8a5ea363-34b4-4314-94b7-c37518d1262f",
+			"0;3809;1;t;f;f;6190;3034cc85-459e-45c9-ba10-ff3138a7e96a",
+			"0;3808;1;f;f;f;6191;2f67ac1c-6cfd-4def-868c-7a2a77c6224b",
+			"0;3807;1;t;f;f;6192;c81c2f64-8d9d-4024-86e0-4d193162486c",
+			"0;3806;1;t;f;f;6193;1ffcb406-9824-41b0-99ec-e9d9c36851bd",
+			"0;3805;1;f;f;f;6194;343658f7-0917-4dd6-b151-f51c4cddd338",
+			"0;3804;1;f;f;f;6195;05f98d67-bbd5-4cfc-8742-eaaf9e7a0f95",
+			"0;3803;1;t;f;f;6196;5b4881eb-58fa-4b31-9770-f862b78270b5",
+			"0;3802;1;f;f;f;6197;b7da3af4-dbbf-43a4-b5a7-7dd0d7eded19",
+			"0;3801;1;t;f;f;6198;822ae166-7335-416c-bdd7-2f2c3e22a4ec",
+			"0;3800;1;f;f;f;6199;35b3ad87-b4a8-457d-8a96-3bf15b6879d5",
+			"0;3799;1;t;f;f;6200;aba78d03-1cae-422e-8d9a-4262f1dee7ac",
+			"0;3798;1;f;f;f;6201;a70926c5-5119-4eb5-a706-0e60851a86ea",
+			"0;3797;1;t;f;f;6202;452490ab-e487-422f-bc7f-2ac0d5af4bc1",
+			"0;3796;1;f;f;f;6203;7fcf74a4-1dce-494c-a41c-a871ab14ff15",
+			"0;3795;1;t;f;f;6204;52acb30c-6095-4364-a045-b34667999977",
+			"0;3794;1;f;f;f;6205;be002ed7-d4b3-4884-aa2d-e641ca6b610c",
+			"0;3793;1;t;f;f;6206;87b2ff84-5390-478c-a5c9-dde50e1c93d3",
+			"0;3792;1;f;f;f;6207;94e75fc2-7895-4964-9adb-1b06d9bce14a",
+			"0;3791;1;t;f;f;6208;8a0e0e56-cf93-4709-8a23-d3b6fa321735",
+			"0;3790;1;f;f;f;6209;1ad53575-8234-42d7-b012-eb1758207c21",
+			"0;3789;1;t;f;f;6210;5517635b-c197-404f-a4c6-19d71596818f",
+			"0;3788;1;f;f;f;6211;ed2fbfb8-b612-4996-bf60-9dc7e97c8a73",
+			"0;3787;1;t;f;f;6212;73e16be3-6e54-41dd-b460-50220e53bbae",
+			"0;3786;1;f;f;f;6213;0a6e4527-3778-4500-8e4a-6de9f0a21c2f",
+			"0;3785;1;t;f;f;6214;397affd8-0622-4039-bef5-2fa755000e7a",
+			"0;3784;1;f;f;f;6215;f7d08645-1b9f-4fc8-bc25-5ac398faa9a5",
+			"0;3783;1;t;f;f;6216;9ccb1d33-09c0-4890-acc3-0410e4d414b3",
+			"0;3782;1;f;f;f;6217;584ab4bf-6f6c-4788-a9ea-a07b7824bd0f",
+			"0;3781;1;t;f;f;6218;339b3cee-de55-459f-893d-d8bce13d2db6",
+			"0;3780;1;f;f;f;6219;a080cc31-2dfb-4062-a95b-1c5e9316b9af",
+			"0;3779;1;t;f;f;6220;98349737-f6bf-4ab6-aecf-8ef6e7388925",
+			"0;3778;1;f;f;f;6221;855db630-9b8d-468d-8f7e-3bccf9adcc72",
+			"0;3777;1;t;f;f;6222;f6bba1ae-b9c3-45e0-bb02-3dee6e0cde0d",
+			"0;3776;1;f;f;f;6223;fcd50bc7-f52e-40b8-91dc-474e96d1649a",
+			"0;3775;1;t;f;f;6224;85c2c8d7-df5a-4c2d-a5aa-227c4c9e53d5",
+			"0;3774;1;f;f;f;6225;febe4d83-42d8-43da-b003-b21ce6de7714",
+			"0;3773;1;t;f;f;6226;b637836b-a8d3-4cb4-85bd-8f3c527ea15f",
+			"0;3772;1;f;f;f;6227;e1e1f1c2-c921-4e0c-a77c-6c76dbb7a67f",
+			"0;3771;1;t;f;f;6228;cfe149fd-2fd1-408e-b12b-9ed641fb929c",
+			"0;3770;1;f;f;f;6229;733330c5-17d3-43df-88a7-3179590c93e3",
+			"0;3769;1;t;f;f;6230;1d57eccf-c483-46e7-b758-fe41312677e5",
+			"0;3768;1;f;f;f;6231;a170a9c0-88c1-4562-9b7b-2e891e88a13e",
+			"0;3767;1;t;f;f;6232;9ec0f487-3511-45db-8eb1-5f8fa2e9a703",
+			"0;3766;1;f;f;f;6233;a2de7041-242d-4846-a0c5-5e8990cbcede",
+			"0;3765;1;t;f;f;6234;669a278b-700e-40f7-ae36-a7150c587e16",
+			"0;3764;1;f;f;f;6235;8b975701-7184-4094-8d5f-edd4ba591406",
+			"0;3763;1;t;f;f;6236;bd2e7f5e-4fc5-4ffa-8110-b59609f62cdd",
+			"0;3762;1;f;f;f;6237;c450464f-1d9e-41b9-b194-3f26cd33ecbd",
+			"0;3761;1;t;f;f;6238;90223073-ca25-4ce9-ac1b-73d6a212a8aa",
+			"0;3760;1;f;f;f;6239;81e4bca5-7f06-4a93-a868-5af261473914",
+			"0;3759;1;t;f;f;6240;54fe0c79-4473-4611-9ed1-81bfa1ae1019",
+			"0;3758;1;f;f;f;6241;75de8b40-0b37-4d91-9974-271dd6a7955b",
+			"0;3757;1;t;f;f;6242;c5886774-3497-4866-8306-84538390a1bf",
+			"0;3756;1;f;f;f;6243;fb74c1b2-38a5-45b2-bc83-d991ef731191",
+			"0;3755;1;t;f;f;6244;4da01798-d423-4603-9af4-e54b57baec19",
+			"0;3754;1;f;f;f;6245;bff4dd3d-e7cd-41a1-827e-5972a9dc4819",
+			"0;3753;1;t;f;f;6246;d9f59b2e-bb3d-4de3-8004-2b6b9cf5561e",
+			"0;3752;1;f;f;f;6247;29faa384-278e-4d12-b047-27e9d03534c0",
+			"0;3751;1;t;f;f;6248;c7a875c2-3281-41cb-81c1-15d24164adaf",
+			"0;3750;1;f;f;f;6249;bbc420d7-d742-4ea2-94e4-9e33980db144",
+			"0;3749;1;t;f;f;6250;616ea058-285e-4034-9829-c91b91f356bc",
+			"0;3748;1;f;f;f;6251;f8ea348e-5f42-456a-91fa-3ca4c72e9791",
+			"0;3747;1;t;f;f;6252;0ea6a4a3-b043-4ab8-990f-ce2a3d63d8b3",
+			"0;3746;1;f;f;f;6253;25272c85-31e1-41a7-ba22-8cdd6020b455",
+			"0;3745;1;t;f;f;6254;2c53d537-6218-410e-a34b-a3a99dc2b723",
+			"0;3744;1;f;f;f;6255;3988956d-50ae-4452-861f-667b64af2e47",
+			"0;3743;1;t;f;f;6256;a960aaf3-969f-4f98-b1b3-0b1d1ca25cc8",
+			"0;3742;1;f;f;f;6257;81a951bc-6082-4197-a4a1-b03ee8df998b",
+			"0;3741;1;t;f;f;6258;219ccf85-1463-4f82-8a2c-abf433806b2b",
+			"0;3740;1;t;f;f;6259;f2562e6b-c8f8-42ff-990d-17692f1f6d30",
+			"0;3739;1;f;f;f;6260;934da5f9-7dc1-4047-9eda-512536084e13",
+			"0;3738;1;f;f;f;6261;7612f079-71a3-4127-8b62-d5624f1b703d",
+			"0;3737;1;t;f;f;6262;95ed64ae-fab4-44df-9936-b81536db1c40",
+			"0;3736;1;t;f;f;6263;74761662-806e-4607-9120-e7d358902027",
+			"0;3735;1;f;f;f;6264;3dfe486c-6166-4e66-b676-0f8341f8a29c",
+			"0;3734;1;f;f;f;6265;c98f0b8b-ec61-4843-996e-84b17cdf0917",
+			"0;3733;1;t;f;f;6266;a4943170-682c-478e-ad86-d57a76e94641",
+			"0;3732;1;f;f;f;6267;cc6ca140-9466-42cb-826c-2c2f9f80a7d8",
+			"0;3731;1;t;f;f;6268;d8774772-623d-4467-b44b-efe52120e0b6",
+			"0;3730;1;f;f;f;6269;a1e2efc6-128a-45c8-a5f5-ac25091c21d2",
+			"0;3729;1;t;f;f;6270;4b535c4a-825a-4fc2-9423-f756d24b163b",
+			"0;3728;1;f;f;f;6271;380548e9-a370-4d40-827f-444ac39f7899",
+			"0;3727;1;t;f;f;6272;719b42f9-cab5-47cf-9387-8146089e3c09",
+			"0;3726;1;f;f;f;6273;0c5009f8-2c9d-4769-a346-fa6df15bb8f8",
+			"0;3725;1;t;f;f;6274;f3dffea2-bd5b-4a4d-88ea-a67d3bc9f167",
+			"0;3724;1;t;f;f;6275;9105e0d2-2510-40df-8c60-e46f32df0e3c",
+			"0;3723;1;f;f;f;6276;96d1deca-b920-4d06-97e9-947ccc62666a",
+			"0;3722;1;f;f;f;6277;4047fbff-4371-4c45-8cbc-ca9ffdb5ce54",
+			"0;3721;1;t;f;f;6278;8df97469-3e8c-4eb7-a7e6-825a6cc4b0a0",
+			"0;3720;1;f;f;f;6279;ed9ef1f7-d312-4267-9b04-9b7706a905c9",
+			"0;3719;1;t;f;f;6280;2a3e6575-6b95-4743-91cd-05a227698fc9",
+			"0;3718;1;f;f;f;6281;a766e2e2-b800-48a6-9c5d-ba4e68dc9a36",
+			"0;3717;1;t;f;f;6282;947d5736-d5c1-476b-a668-6e35e4c3be0c",
+			"0;3716;1;t;f;f;6283;89013286-4619-41ba-bf98-100d38275b5a",
+			"0;3715;1;f;f;f;6284;4cc46e37-087b-41c8-ae3a-a20bb0f912ea",
+			"0;3714;1;f;f;f;6285;cc4ade46-7de9-4eff-abf9-cd76e1a0e2d3",
+			"0;3713;1;t;f;f;6286;19b18e11-f146-4f02-9eee-b36323178ee5",
+			"0;3712;1;f;f;f;6287;7eff37cb-e529-4c81-82b6-ea593ee254a4",
+			"0;3711;1;t;f;f;6288;50b2b662-8797-4fcf-a936-87a4904384ad",
+			"0;3710;1;f;f;f;6289;807d5238-d784-40f4-b5af-29f8e45ef489",
+			"0;3709;1;t;f;f;6290;a97f8c88-0253-4632-b2f3-dd124262d761",
+			"0;3708;1;f;f;f;6291;1e4652b2-b648-4619-88a4-000d7529413b",
+			"0;3707;1;t;f;f;6292;f5e4b992-5228-4d0c-88ae-23564f8e0a81",
+			"0;3706;1;f;f;f;6293;98c55f47-9d5a-4369-9bac-7345fa2acf78",
+			"0;3705;1;t;f;f;6294;cd563c66-af61-45b2-badf-bc215d61ceed",
+			"0;3704;1;f;f;f;6295;ffaa99ea-7e7b-45e6-847f-616b73439429",
+			"0;3703;1;t;f;f;6296;612e85e8-0e55-417f-a649-9e946918ecf0",
+			"0;3702;1;f;f;f;6297;525fcc93-0d1c-430a-9c1e-8e70f00d9fe9",
+			"0;3701;1;t;f;f;6298;38f0ec51-030c-49a0-8671-f4e5ff4aee35",
+			"0;3700;1;f;f;f;6299;7e3074dd-9b5f-4172-a445-f91defe7a96a",
+			"0;3699;1;t;f;f;6300;d9340ed5-1e97-48e5-b565-a782fbdff7a5",
+			"0;3698;1;f;f;f;6301;560e4209-b234-413b-8453-2ca1186791a6",
+			"0;3697;1;t;f;f;6302;ca56b1b1-547a-4c7f-bb7a-d12966cee056",
+			"0;3696;1;f;f;f;6303;d5f0deb1-f588-4b21-be11-ecf538ddee1d",
+			"0;3695;1;t;f;f;6304;6443b7f8-a072-4ffc-946a-a5d853ca1540",
+			"0;3694;1;f;f;f;6305;21d7e147-97fe-429c-9b82-87d29f038eec",
+			"0;3693;1;t;f;f;6306;112ae5f3-afe4-4a93-be1a-2f443c8519a4",
+			"0;3692;1;f;f;f;6307;39445ab0-6674-4e55-aebf-e6636ba4c7bc",
+			"0;3691;1;t;f;f;6308;deed2b82-1e18-4945-b3fb-3522873db012",
+			"0;3690;1;f;f;f;6309;665ce8e9-189d-496c-ace7-08b2d291df80",
+			"0;3689;1;t;f;f;6310;353e57e6-b1be-4bfd-81c9-650e937f8522",
+			"0;3688;1;f;f;f;6311;5e77490b-70f8-4fa7-b14c-8e7a87872ab2",
+			"0;3687;1;t;f;f;6312;53decf68-2371-4a3e-aa98-7e10d754f766",
+			"0;3686;1;f;f;f;6313;44c0549b-566f-4c19-b841-36913fa72114",
+			"0;3685;1;t;f;f;6314;bb0f9ff1-7ca2-406a-88d9-aaee39f37042",
+			"0;3684;1;f;f;f;6315;c7b836f2-8fd9-4910-9aeb-13cac6d1dbba",
+			"0;3683;1;t;f;f;6316;61920a40-a2eb-49a4-812c-ddbf01321b07",
+			"0;3682;1;t;f;f;6317;b7959140-68ef-4e3c-9145-d6a28b588090",
+			"0;3681;1;f;f;f;6318;b3d2f97b-2cf8-4dd8-8526-e740020ae38e",
+			"0;3680;1;f;f;f;6319;26c7d39d-0ab9-4b94-8f5c-fb6f5dc5cf0a",
+			"0;3679;1;t;f;f;6320;fbbbaa88-40d6-4e5b-9432-1c8dd4f5f257",
+			"0;3678;1;t;f;f;6321;f06e27a2-14d5-48a5-b4e8-dfefdccfe42e",
+			"0;3677;1;f;f;f;6322;04145110-25d5-4a11-b072-545c04d8f04e",
+			"0;3676;1;f;f;f;6323;e319e7f1-a0b8-48f3-aef4-b4d4c711b2f4",
+			"0;3675;1;t;f;f;6324;cb371d92-1de8-4883-b2ba-1359a48f0835",
+			"0;3674;1;t;f;f;6325;27149e60-b060-4d68-8bfd-1630193c4cee",
+			"0;3673;1;f;f;f;6326;281c9d76-09fa-4ae0-bd5a-e1cf29cf08f0",
+			"0;3672;1;f;f;f;6327;f0f7c7f6-d250-401b-ba32-05feab2a30fa",
+			"0;3671;1;t;f;f;6328;00ccf302-a7f5-4e05-92c6-9523fcf07e7d",
+			"0;3670;1;t;f;f;6329;d393f1d8-a3bc-4e54-befb-f7cb4545f10c",
+			"0;3669;1;f;f;f;6330;0145397a-0d98-48fb-8b17-a14ac3b900d8",
+			"0;3668;1;f;f;f;6331;0164287e-7dd6-4528-87b1-d3d7fd8f8bf0",
+			"0;3667;1;t;f;f;6332;27b1bcc1-9823-4089-8e3f-782253eb0730",
+			"0;3666;1;t;f;f;6333;853bef68-765b-44ed-ac68-e6ac65738c5e",
+			"0;3665;1;f;f;f;6334;4e71ec30-7130-4739-988c-a1072cac60f3",
+			"0;3664;1;f;f;f;6335;91a80e41-eb37-4284-aa3f-b33ce9840073",
+			"0;3663;1;t;f;f;6336;0da138b5-e797-4cd1-b613-a68024d1abf2",
+			"0;3662;1;t;f;f;6337;bbc1c5ec-b1d1-4e7b-95fb-a16d80a91c1b",
+			"0;3661;1;f;f;f;6338;6348faa6-fed0-483c-8dd0-7508ccd9ba3d",
+			"0;3660;1;f;f;f;6339;eea5c4be-8a1c-49f3-b8a2-02f73d5f6715",
+			"0;3659;1;t;f;f;6340;c639cb8a-203d-4cd3-8fe8-24c6f19c156b",
+			"0;3658;1;t;f;f;6341;7cf7e0ad-52b2-4f6d-be2e-fa80171f8dc8",
+			"0;3657;1;f;f;f;6342;dede3360-a7b5-43fa-b4b5-92961fabd45a",
+			"0;3656;1;f;f;f;6343;12be7aa7-3148-4486-9b40-8e20583845b4",
+			"0;3655;1;t;f;f;6344;903c169a-63df-4dcb-a047-f8c3214c6415",
+			"0;3654;1;f;f;f;6345;079caf88-6116-493e-92fc-a06ffd14c439",
+			"0;3653;1;t;f;f;6346;12b5b875-1595-4b03-9144-d9b76e48fa9d",
+			"0;3652;1;f;f;f;6347;9029dd7f-f5a0-43cd-95ad-6391b7e17dfc",
+			"0;3651;1;t;f;f;6348;3b39497c-ecd4-4d0a-98b7-d86d788d64e6",
+			"0;3650;1;f;f;f;6349;19b9aaf9-267c-48f1-8676-aec461db7e1c",
+			"0;3649;1;t;f;f;6350;d4785f88-ce8d-4a2d-a471-e423efa03196",
+			"0;3648;1;f;f;f;6351;0654da32-99b3-4fb8-b143-74ba9010f29c",
+			"0;3647;1;t;f;f;6352;4663a120-7dc6-4f53-9021-cb4ce3a4e32a",
+			"0;3646;1;f;f;f;6353;2fb57f69-1558-44fe-92ad-3f0344c45a8b",
+			"0;3645;1;t;f;f;6354;b6b5986e-baf2-4510-b0a1-4cd6a4bd64b4",
+			"0;3644;1;f;f;f;6355;4691ce14-59b1-4a48-9b62-01609a092d68",
+			"0;3643;1;t;f;f;6356;67732b11-137d-42fd-9dad-6577753b9dce",
+			"0;3642;1;f;f;f;6357;efba07b1-e38b-48fc-acf0-37e33feab65b",
+			"0;3641;1;t;f;f;6358;3db8d5f0-0db2-4d9f-bd40-c3f269414f22",
+			"0;3640;1;f;f;f;6359;fb8a69dd-586a-4dd6-aecc-d5d501ea7ad0",
+			"0;3639;1;t;f;f;6360;b8875b85-39ce-4b0f-ab8c-39e6135ba350",
+			"0;3638;1;f;f;f;6361;a1b9fdd1-8c27-4c46-9f7c-928156495c26",
+			"0;3637;1;t;f;f;6362;846f845a-ad4c-4037-98ff-0cf640db92ad",
+			"0;3636;1;f;f;f;6363;c26f67f1-e506-4b78-b070-4ba17f0a2d38",
+			"0;3635;1;t;f;f;6364;b6d6b2f5-10a5-4bee-9a6a-b435bd055890",
+			"0;3634;1;f;f;f;6365;eeaf37a5-1e9c-48b9-8ffe-16f8c22afbf1",
+			"0;3633;1;t;f;f;6366;6442f83c-c1d3-4a92-90ab-59182511f24e",
+			"0;3632;1;t;f;f;6367;32e6a12c-25e3-477b-b8ce-39d7fa12e2d3",
+			"0;3631;1;f;f;f;6368;b0e84a0f-9cca-433f-946e-275a277bcb70",
+			"0;3630;1;f;f;f;6369;47b00479-c3d5-454a-975d-920d8737c913",
+			"0;3629;1;t;f;f;6370;c6aaf33b-bac2-45f5-8473-efed9114f0c9",
+			"0;3628;1;f;f;f;6371;e2a7a60c-6795-4125-a569-59662dd809ae",
+			"0;3627;1;t;f;f;6372;e787f36f-931f-4c47-a7ed-9561b5da304f",
+			"0;3626;1;f;f;f;6373;ef67c59b-ffa8-4a62-b6da-7c4fe64be174",
+			"0;3625;1;t;f;f;6374;5e31e705-b4d3-4d16-bd82-9daad9da4285",
+			"0;3624;1;f;f;f;6375;5d60ddb2-2144-49ae-9de9-e5f66de32af7",
+			"0;3623;1;t;f;f;6376;484f9630-cad4-46c8-8621-983993dc7982",
+			"0;3622;1;f;f;f;6377;53787ba4-eb2b-4dfd-922e-09ae5ec05301",
+			"0;3621;1;t;f;f;6378;129cee46-a8b3-49ed-8ede-7b920d2ec652",
+			"0;3620;1;f;f;f;6379;2b114cc8-e570-439e-823c-e59fc77114ae",
+			"0;3619;1;t;f;f;6380;73d64027-92b7-450a-9050-4a726cbde14f",
+			"0;3618;1;f;f;f;6381;d1545c3c-1161-4a22-b207-6a397ea4cb72",
+			"0;3617;1;t;f;f;6382;b0883e0e-bb1a-4cad-ad0b-021e1429fed4",
+			"0;3616;1;f;f;f;6383;01fd9e72-fba3-4bb8-bd46-9d908147d497",
+			"0;3615;1;t;f;f;6384;f9544364-2055-447d-9db8-fad23fdfb67e",
+			"0;3614;1;f;f;f;6385;e6cd2993-ecff-4472-8cd2-5b6e47cd1620",
+			"0;3613;1;t;f;f;6386;9edd4e03-2009-495c-af84-bd4e706ed949",
+			"0;3612;1;f;f;f;6387;898f83b9-31f9-40c5-ac58-b0b105a45ec4",
+			"0;3611;1;t;f;f;6388;f020bcc1-b591-4c29-86a5-ec7579012ceb",
+			"0;3610;1;f;f;f;6389;18c9dc12-08ab-4aac-bb85-c151b0743d94",
+			"0;3609;1;t;f;f;6390;59cbdcaf-b89e-4322-b8ac-1df279ac806f",
+			"0;3608;1;f;f;f;6391;1f946859-4f2e-4bb3-83b2-4ca875e80fc4",
+			"0;3607;1;t;f;f;6392;0448e158-bc27-4af0-8228-8a8bfec54d99",
+			"0;3606;1;f;f;f;6393;3b7e7ab4-4a4f-4ef3-9062-50dd643dfbd2",
+			"0;3605;1;t;f;f;6394;7250b113-8bb2-401e-9ae5-c991668836b2",
+			"0;3604;1;f;f;f;6395;b0ffa4fd-542a-4328-b100-f6b422fac405",
+			"0;3603;1;t;f;f;6396;97b9bea7-f48c-47a3-abc4-2b3a3bf279d3",
+			"0;3602;1;f;f;f;6397;141ab2f6-0b6e-498d-8afc-915f53d32917",
+			"0;3601;1;t;f;f;6398;291a9676-598c-4917-b1bc-3fe0d89b5fd4",
+			"0;3600;1;f;f;f;6399;a9758dcf-e971-4d7e-a92a-dd86f91b8640",
+			"0;3599;1;t;f;f;6400;86b62aac-d14f-4f0c-ad25-5e18e83b99b7",
+			"0;3598;1;f;f;f;6401;7a213f8e-9d31-4407-89f0-86974fa97afb",
+			"0;3597;1;t;f;f;6402;4e9db70e-7e33-41ef-9e12-8d4413e6ed6e",
+			"0;3596;1;f;f;f;6403;7501d2a6-6684-41f6-84fa-8869eccadbed",
+			"0;3595;1;t;f;f;6404;c25af85e-92a8-4e9c-a52a-11abfb2906a2",
+			"0;3594;1;f;f;f;6405;6ff98c8d-917c-4e42-969e-c693832bfb89",
+			"0;3593;1;t;f;f;6406;9c340c84-dbb8-4f60-877e-c8800893e3f1",
+			"0;3592;1;f;f;f;6407;72f0bea0-176c-411c-a8db-73bec4b81fb9",
+			"0;3591;1;t;f;f;6408;528c8ef8-5667-4f79-b212-1152fd0ec8d1",
+			"0;3590;1;f;f;f;6409;80fc26f1-4dac-424e-8de5-2ae815fb3558",
+			"0;3589;1;t;f;f;6410;bfd163e7-e649-4a7d-9862-d34060a8a5b5",
+			"0;3588;1;f;f;f;6411;b5eeeffb-c9bd-4342-aaac-7c5ea8789226",
+			"0;3587;1;t;f;f;6412;9852d1c5-316a-4a54-8c03-2b3e1a283929",
+			"0;3586;1;f;f;f;6413;79bc9497-b4eb-4017-b34f-83e453fc6d32",
+			"0;3585;1;t;f;f;6414;599f062e-2907-4a38-a7e4-7534130629ab",
+			"0;3584;1;f;f;f;6415;5f9f2089-9ba9-442c-b33c-bd7b6368c78f",
+			"0;3583;1;t;f;f;6416;eb6c46e1-eda8-4a76-8789-10a0f579017f",
+			"0;3582;1;f;f;f;6417;f42dcf2c-b495-4fe0-aeee-920c51152b0a",
+			"0;3581;1;t;f;f;6418;9cae1043-0095-443e-a64f-50bee9d4bf9b",
+			"0;3580;1;f;f;f;6419;7fadb0bc-2721-44fd-8e77-184c4b9d5a56",
+			"0;3579;1;t;f;f;6420;144b8e01-47a3-420a-95af-576089b18d9d",
+			"0;3578;1;f;f;f;6421;f14ded64-ca87-4248-9c00-f6c82c8e2e3e",
+			"0;3577;1;t;f;f;6422;9e344e6b-050a-4a0d-ad19-8554e4e1f741",
+			"0;3576;1;f;f;f;6423;2cf9b52b-3397-4073-a223-02f276b0db00",
+			"0;3575;1;t;f;f;6424;c7344b7b-e341-476c-980d-d21c2ded6e17",
+			"0;3574;1;f;f;f;6425;27b5d4a6-f5f8-48f6-9be0-49cdb5f51828",
+			"0;3573;1;t;f;f;6426;674ff554-c9e5-4f62-a7d9-a592deab6773",
+			"0;3572;1;f;f;f;6427;5c9674e2-f435-4468-b849-82e87ea55b8e",
+			"0;3571;1;t;f;f;6428;97499ffb-3256-4ee1-9a44-dde310e3ff0c",
+			"0;3570;1;f;f;f;6429;f326efd7-5d10-40ae-b694-ed1bcb77c4ab",
+			"0;3569;1;t;f;f;6430;e30f4eef-f47c-447e-8617-c3abef24b400",
+			"0;3568;1;f;f;f;6431;eb309ef4-37f5-4eb9-a697-e10ff83fdfd2",
+			"0;3567;1;t;f;f;6432;692e0252-7aa0-4594-9dff-f294df2d46f2",
+			"0;3566;1;f;f;f;6433;79d64365-2bc4-4cf9-bf5e-6e8076e85092",
+			"0;3565;1;t;f;f;6434;75d6bd33-34b4-438e-a2ba-48a12a8ee64c",
+			"0;3564;1;f;f;f;6435;9109e2d9-3518-4362-ba72-4f2f83705474",
+			"0;3563;1;t;f;f;6436;4cdb2e3c-d16a-46ac-92d0-c10552263909",
+			"0;3562;1;t;f;f;6437;c438632a-e04a-444a-a0b7-e53d36bc87c6",
+			"0;3561;1;f;f;f;6438;4735452d-582f-45b5-8adf-8aece053790f",
+			"0;3560;1;f;f;f;6439;5c7ef789-9188-46cd-98dc-d2324b5ed2d2",
+			"0;3559;1;t;f;f;6440;a53910ef-7963-4bf0-8680-e1761009cb03",
+			"0;3558;1;f;f;f;6441;3ac6b849-c4a8-40f2-9f79-800d07ea34f9",
+			"0;3557;1;t;f;f;6442;eef44cd0-faa4-47df-b3f9-4dd2e6b2e9fc",
+			"0;3556;1;f;f;f;6443;75b33371-cc44-477a-bf98-4e08b9a67dc5",
+			"0;3555;1;t;f;f;6444;bd4ae324-d674-437f-94a7-6aba9002036c",
+			"0;3554;1;f;f;f;6445;fe04d9cb-6eb2-4a7b-bf6b-29ed45cf1078",
+			"0;3553;1;t;f;f;6446;d38f4605-f434-4804-b38f-9ae49d7780aa",
+			"0;3552;1;f;f;f;6447;cc8f577b-3bed-4996-b79b-e36ac2497c73",
+			"0;3551;1;t;f;f;6448;1e46ac0c-bbd2-4525-a603-47c8e5788aa2",
+			"0;3550;1;f;f;f;6449;675fe3cb-2812-4c2e-9062-22b9b5b52c62",
+			"0;3549;1;t;f;f;6450;4017754b-c98d-4441-9e50-fa18684a5584",
+			"0;3548;1;f;f;f;6451;edd44379-80b9-4610-a401-a3c3593df850",
+			"0;3547;1;t;f;f;6452;537928f1-2cc5-48c7-8c00-3fe1f91a5014",
+			"0;3546;1;f;f;f;6453;6be4ef85-92f4-4628-9ed9-22a41d019651",
+			"0;3545;1;t;f;f;6454;e7411a52-cf10-4175-8afb-623a5f4f243a",
+			"0;3544;1;f;f;f;6455;e68f0029-56a3-4d11-b35f-49b01fdb1705",
+			"0;3543;1;t;f;f;6456;369edbf8-6ef5-46df-a553-f62bf76875f7",
+			"0;3542;1;f;f;f;6457;9b89b036-40bf-4bf3-ac8b-24931e133cde",
+			"0;3541;1;t;f;f;6458;d5a5f2f0-9bfd-43ba-b9e4-d4e2ea7d7986",
+			"0;3540;1;f;f;f;6459;e9ba934a-984d-4b9f-81fd-ccf9b37133fb",
+			"0;3539;1;t;f;f;6460;042434ae-e5ce-46a6-850c-86cbf348b24f",
+			"0;3538;1;f;f;f;6461;61c84e8b-fb6b-4a40-b886-d10df2d4e707",
+			"0;3537;1;t;f;f;6462;1bc33f29-ed84-49d4-9f07-fea187a5e7bc",
+			"0;3536;1;f;f;f;6463;2df5e0a8-64da-41d8-8a29-7048ffa39950",
+			"0;3535;1;t;f;f;6464;3284c7f0-5e26-4075-bd3e-8c18b714ea7e",
+			"0;3534;1;f;f;f;6465;4a731d44-610d-4da6-a24e-3f79e8cd64d0",
+			"0;3533;1;t;f;f;6466;f3cc45d1-9766-4175-827a-54b3586be45b",
+			"0;3532;1;f;f;f;6467;d3371529-9f11-4b4c-998e-924a978a4366",
+			"0;3531;1;t;f;f;6468;6938fd1f-1e44-4952-aec4-be32bc221e28",
+			"0;3530;1;f;f;f;6469;80d2c9a8-54ca-494d-9b98-4a0472611f97",
+			"0;3529;1;t;f;f;6470;b5f8e9cb-1b07-456d-8be9-f1307454617d",
+			"0;3528;1;f;f;f;6471;139adc6d-72f7-4cd8-aabf-09bf7945339e",
+			"0;3527;1;t;f;f;6472;21e57bfe-76ed-4289-870a-7837fc99a7af",
+			"0;3526;1;f;f;f;6473;9866c773-80a3-46f3-92a6-16030896ebf3",
+			"0;3525;1;t;f;f;6474;7d12fad3-46f4-4055-b1e8-dfef0ac29b5e",
+			"0;3524;1;f;f;f;6475;517bbab7-f5f4-4195-a04d-98d8493a4dea",
+			"0;3523;1;t;f;f;6476;0de7569b-c41d-4f98-b576-a0d795d8f6d8",
+			"0;3522;1;f;f;f;6477;5c948697-68ad-412a-a355-82e7d925e0b4",
+			"0;3521;1;t;f;f;6478;82e6b95f-8634-420d-abc3-181ac5c0bae0",
+			"0;3520;1;f;f;f;6479;c0b6478d-69c6-430d-ac41-0b4154b57d32",
+			"0;3519;1;t;f;f;6480;642589e5-3d22-400b-8c3c-86c5b9554e34",
+			"0;3518;1;f;f;f;6481;8bc39ae4-9b17-44c1-944e-f6f8aeb288c2",
+			"0;3517;1;t;f;f;6482;f7b77ee3-fde8-4fb7-9f4f-df31969f428d",
+			"0;3516;1;f;f;f;6483;022d7d92-c331-4729-b484-61a1d9f8d87e",
+			"0;3515;1;t;f;f;6484;e18c7f3f-420d-4221-b732-868ef068379b",
+			"0;3514;1;f;f;f;6485;ef996aef-b347-48fb-93e2-4adf85276e78",
+			"0;3513;1;t;f;f;6486;5557cf45-1135-4eb9-a275-65f91fcbdfff",
+			"0;3512;1;f;f;f;6487;6015010b-b1f5-4b18-b046-3172b9a915d7",
+			"0;3511;1;t;f;f;6488;3a10eaae-8541-440d-8e5d-86f58e8de9e6",
+			"0;3510;1;f;f;f;6489;10ebb88f-5d21-4b6f-8c4e-2d68d0b34bdb",
+			"0;3509;1;t;f;f;6490;8581d4d0-0298-455a-9ca1-5ddc1f887760",
+			"0;3508;1;f;f;f;6491;b883d811-ae84-41a9-8574-1eb6eb407955",
+			"0;3507;1;t;f;f;6492;2c8633da-dafb-47e0-9fa0-ffa3e9114fa7",
+			"0;3506;1;f;f;f;6493;fdf6972f-f12f-4af5-9f2d-03091b2c62aa",
+			"0;3505;1;t;f;f;6494;e9acf48d-21c8-45ff-b00c-376233f2847d",
+			"0;3504;1;f;f;f;6495;35384554-fbd9-42d0-8d1d-ebbb759b73f8",
+			"0;3503;1;t;f;f;6496;9778cbfa-fe3e-4d6b-8688-4d836e851582",
+			"0;3502;1;f;f;f;6497;1de7d4c6-76ec-4b14-8d00-a64dcdf5f750",
+			"0;3501;1;t;f;f;6498;967b8db0-e922-4303-9e51-63c1a9c5dcc7",
+			"0;3500;1;f;f;f;6499;f0b13959-56e3-4da9-8f15-e1d9325e29b6",
+			"0;3499;1;t;f;f;6500;211595ea-9e6c-4b39-9867-0b7a0c9faf23",
+			"0;3498;1;f;f;f;6501;a43858ac-675d-4491-a004-a7d12d8b03d5",
+			"0;3497;1;t;f;f;6502;6d090115-2346-470a-98db-088614b045f1",
+			"0;3496;1;f;f;f;6503;72602442-8dc7-40f5-a946-5c1b01004ebf",
+			"0;3495;1;t;f;f;6504;dab15981-015e-4950-b22d-393196f10a77",
+			"0;3494;1;f;f;f;6505;2a7d7950-695c-4ea4-96ce-b45048dddcef",
+			"0;3493;1;t;f;f;6506;e26adaf7-2a0f-493c-ac24-9fa9aecaaefd",
+			"0;3492;1;f;f;f;6507;8b862bf1-c005-4dd3-9645-4f886f7b477b",
+			"0;3491;1;t;f;f;6508;cbe83e46-5b96-46cd-9455-af2f715d19dd",
+			"0;3490;1;f;f;f;6509;d600fb08-48b3-48d8-b82f-abcdb402c9c0",
+			"0;3489;1;t;f;f;6510;8070b7d3-904f-466d-b783-1e4c8275a0d1",
+			"0;3488;1;f;f;f;6511;954d4de7-7fc1-4dcf-b0ec-c56c4a82aec4",
+			"0;3487;1;t;f;f;6512;03e05644-db66-48ff-911b-3ebe6c7710be",
+			"0;3486;1;f;f;f;6513;4a6bf95d-1663-4241-aaf8-2be1f388af5a",
+			"0;3485;1;t;f;f;6514;28b492a1-5c5c-408e-b635-4e8458043abc",
+			"0;3484;1;f;f;f;6515;2b4f121b-1d31-4af5-9358-1d575b40d6e8",
+			"0;3483;1;t;f;f;6516;6dbd9935-fa03-4723-bd20-4d5884e1d78b",
+			"0;3482;1;f;f;f;6517;7326781b-a1d8-4aac-9b36-23feffd6cbd7",
+			"0;3481;1;t;f;f;6518;fc275c90-b1ee-4e69-9b61-854e5ba19a1f",
+			"0;3480;1;f;f;f;6519;2ae2d4de-a2b9-47c8-b216-04b1e5f35b93",
+			"0;3479;1;t;f;f;6520;efeb8dbc-8791-419d-893f-937baf413398",
+			"0;3478;1;f;f;f;6521;0e4fb984-fa7e-4bde-b37a-5bbf2ca7f190",
+			"0;3477;1;t;f;f;6522;78981689-9428-435f-b3bd-0abe2a07938c",
+			"0;3476;1;f;f;f;6523;8218e3f6-41e9-4995-9407-33b04637979a",
+			"0;3475;1;t;f;f;6524;9fbe0c90-896f-4bfa-af73-1b1073dfe70d",
+			"0;3474;1;f;f;f;6525;6e31243c-473e-4e93-81c4-f864407350c5",
+			"0;3473;1;t;f;f;6526;3fc90e7e-3db9-46ae-bd52-c32af9e43dea",
+			"0;3472;1;t;f;f;6527;bf9d8598-c43b-408e-bd36-1423b29205dd",
+			"0;3471;1;f;f;f;6528;f84cc4a4-1add-460e-b151-dc2f44772e27",
+			"0;3470;1;f;f;f;6529;fe4c8885-c089-4725-8dc3-44607a803443",
+			"0;3469;1;t;f;f;6530;d647f262-675c-458a-ac1a-803be92bac73",
+			"0;3468;1;f;f;f;6531;725c72c1-10b0-49e7-b0a7-94c11244119c",
+			"0;3467;1;t;f;f;6532;9926b718-02d4-4dcd-b740-0644f7cc95a5",
+			"0;3466;1;f;f;f;6533;07250ea9-28ff-4514-931e-87e8dfdcf51b",
+			"0;3465;1;t;f;f;6534;d7409830-2c19-4b32-93ff-a92d14c0569e",
+			"0;3464;1;t;f;f;6535;19f91baa-f557-4af7-b318-2c8e1f7c2784",
+			"0;3463;1;f;f;f;6536;3df9a8b7-ad54-4647-9ab7-7cad5eefcbcf",
+			"0;3462;1;f;f;f;6537;d62ed5f9-ea1f-46fd-b911-b39e54799f0f",
+			"0;3461;1;t;f;f;6538;3c9e3f34-5623-482e-a446-0f4db717fdf1",
+			"0;3460;1;t;f;f;6539;04fd898b-1bda-4bad-8507-91112bc02edf",
+			"0;3459;1;f;f;f;6540;fc16d056-8a5d-4616-b3cf-c68602fdc565",
+			"0;3458;1;f;f;f;6541;13be4e94-0aa7-456a-b1d0-3e1dd9e7e4cd",
+			"0;3457;1;t;f;f;6542;ebef9368-1a29-4152-8e4c-5ada392176a5",
+			"0;3456;1;t;f;f;6543;7604392a-e694-4105-a55b-4866ced7215d",
+			"0;3455;1;f;f;f;6544;edf30165-ab91-426e-806b-b07223223c3c",
+			"0;3454;1;f;f;f;6545;21588ef5-eb84-4e92-bd6d-325e9f75bfaa",
+			"0;3453;1;t;f;f;6546;9b4f1cb3-c02f-4c49-94b8-57807a7efade",
+			"0;3452;1;t;f;f;6547;d04c597b-7ea3-404a-acc0-7bb95ef7d2e3",
+			"0;3451;1;f;f;f;6548;79038e67-79e0-4355-89d9-38b473640b3a",
+			"0;3450;1;f;f;f;6549;572d2cdc-a009-4f6b-a34c-e4d52a03cd79",
+			"0;3449;1;t;f;f;6550;3d07dc0d-7641-43e1-b683-2178a1c54e2c",
+			"0;3448;1;t;f;f;6551;80f1f770-7685-4059-bd75-5f297713eb23",
+			"0;3447;1;f;f;f;6552;cd30c0c4-a928-41e5-ab4e-d97be17e6c71",
+			"0;3446;1;f;f;f;6553;4b4cb8c3-feea-42fd-99f5-71bf73b794f5",
+			"0;3445;1;t;f;f;6554;1b45db35-ca60-4e3d-b596-c2bbd323ed6b",
+			"0;3444;1;f;f;f;6555;bdc63f8a-e9fe-470e-8c70-c07e96d5160f",
+			"0;3443;1;t;f;f;6556;a18927d6-3848-4354-bfff-ab34f6841e24",
+			"0;3442;1;f;f;f;6557;3d3f8c7d-8615-4e54-8c62-df4b6776020d",
+			"0;3441;1;t;f;f;6558;a0a7062c-a68d-490c-8dd4-82d1992fbde2",
+			"0;3440;1;f;f;f;6559;1482bbe0-49df-4cca-b09f-3199de2b0c10",
+			"0;3439;1;t;f;f;6560;4df57e6b-a388-4a2a-bd76-f011cb31acf3",
+			"0;3438;1;f;f;f;6561;82249eca-665e-44dd-adab-c621af8a2d90",
+			"0;3437;1;t;f;f;6562;abf5d5e0-5862-49d1-9066-e369f2eb1174",
+			"0;3436;1;f;f;f;6563;d0ca591b-8ffd-44ad-842c-9d098417f14f",
+			"0;3435;1;t;f;f;6564;abe42649-15b8-4d02-b43b-d2afcb854a2c",
+			"0;3434;1;f;f;f;6565;4de6a77d-21e3-4eac-8b6a-4024fdce12e6",
+			"0;3433;1;t;f;f;6566;b3cc1723-667b-4791-8308-a1e9b9fa29ff",
+			"0;3432;1;f;f;f;6567;020f3b93-0c6c-4d77-9774-1094d96b9b03",
+			"0;3431;1;t;f;f;6568;037fe21f-5570-4b92-b591-8f15152c16cc",
+			"0;3430;1;f;f;f;6569;2a457b89-0830-40e8-bfd6-8fa8955cce5d",
+			"0;3429;1;t;f;f;6570;8c7bbbfc-3c7f-4720-884a-b7c963ee7f13",
+			"0;3428;1;f;f;f;6571;5ddcc1ca-90ea-4b2d-9bd1-379df9881ae8",
+			"0;3427;1;t;f;f;6572;672824cd-d677-4ab0-9e9d-aba134b16adc",
+			"0;3426;1;f;f;f;6573;0991f621-60bf-4e28-a11b-ea71967ea2d3",
+			"0;3425;1;t;f;f;6574;2fdaee78-24d1-44f7-80a7-3410706b8bef",
+			"0;3424;1;f;f;f;6575;623d9fe3-bfd6-4623-857c-82a2ad3b55b5",
+			"0;3423;1;t;f;f;6576;bebd6356-dea2-42ff-9928-b6bd5c1fd34d",
+			"0;3422;1;f;f;f;6577;93be3f6f-3a04-457f-948b-316849c4e2ff",
+			"0;3421;1;t;f;f;6578;f2cb6687-a468-4fe5-8a98-5c79ca528cfe",
+			"0;3420;1;f;f;f;6579;5fef4a8c-ba4a-4b40-972a-5aa4c2dad9c5",
+			"0;3419;1;t;f;f;6580;41661b9b-5759-488a-81ac-48dc1f804dbe",
+			"0;3418;1;f;f;f;6581;153fd0b5-d8be-4aea-936b-5160584c8ade",
+			"0;3417;1;t;f;f;6582;f9a4fe2f-bd0e-444c-9d96-898233d3a28f",
+			"0;3416;1;f;f;f;6583;f713545c-8856-4601-988d-b750d5abc547",
+			"0;3415;1;t;f;f;6584;1fcd221f-7d40-400e-a035-9a6658db6108",
+			"0;3414;1;f;f;f;6585;a5a67cd5-8b89-4918-af0c-eb7ee3e7e565",
+			"0;3413;1;t;f;f;6586;58218167-50ae-4209-a1fe-d5b3626e5108",
+			"0;3412;1;f;f;f;6587;72799ae6-4e02-4a30-9d4e-6a63b2e8f67a",
+			"0;3411;1;t;f;f;6588;bc3d1d07-d829-4de0-8b1a-5601e47ad8f8",
+			"0;3410;1;f;f;f;6589;c2dcd293-a720-4a50-9716-4cbb7d210b7a",
+			"0;3409;1;t;f;f;6590;a5dd5492-a27a-4f50-b249-418d521885fe",
+			"0;3408;1;f;f;f;6591;401722f6-5311-4c2f-a89f-ef6c1fc91ef6",
+			"0;3407;1;t;f;f;6592;cf1bae2c-5209-4214-80d0-75a865e1b2db",
+			"0;3406;1;f;f;f;6593;97304d3a-df1a-444d-ace9-abe3b132c282",
+			"0;3405;1;t;f;f;6594;14866f9f-1b39-439d-93aa-8a5984332d63",
+			"0;3404;1;f;f;f;6595;bfea7867-a03c-41f9-b765-d1bc3f8604e3",
+			"0;3403;1;t;f;f;6596;d4228fc2-fbc8-426a-a6b9-81f9f4f33c5c",
+			"0;3402;1;f;f;f;6597;e581e7f2-4dbd-4a91-b3ef-7af740f473ec",
+			"0;3401;1;t;f;f;6598;48c7125f-e4fe-44ac-9480-319f1e9b017f",
+			"0;3400;1;f;f;f;6599;91193e07-b5a6-43f5-98a7-66e9a8966681",
+			"0;3399;1;t;f;f;6600;455e0672-27b9-4b22-b5f3-ab2a09977dba",
+			"0;3398;1;f;f;f;6601;e3925164-ce1c-4afd-aa6b-2a2b4ee40439",
+			"0;3397;1;t;f;f;6602;1ba28834-5106-4702-8fc5-3b91eb76d9c6",
+			"0;3396;1;f;f;f;6603;8512affe-7a1b-4437-923f-acc96d94cb6e",
+			"0;3395;1;t;f;f;6604;74948bab-b17f-447f-917f-5ea2ecca8b3c",
+			"0;3394;1;f;f;f;6605;37744ed7-f23e-47d5-9a1b-66bc7577784c",
+			"0;3393;1;t;f;f;6606;d0430601-1f11-41f5-8f7c-9e7a0126aac1",
+			"0;3392;1;f;f;f;6607;0423b404-1b35-4249-97c1-b6f625e11139",
+			"0;3391;1;t;f;f;6608;f98b9f1a-acb1-487c-93d8-0dfb52c6a1b5",
+			"0;3390;1;f;f;f;6609;5fedd003-e27f-4cf3-853e-0f0eb87a6f2e",
+			"0;3389;1;t;f;f;6610;d707341f-dfa0-454f-9214-6314262aea77",
+			"0;3388;1;f;f;f;6611;3d413842-6c26-4c72-b973-893c1fed78ef",
+			"0;3387;1;t;f;f;6612;e4e16e14-1798-4387-a7b8-4a176d0ee860",
+			"0;3386;1;f;f;f;6613;62b9a301-00f6-4bec-94de-43268f0e37f9",
+			"0;3385;1;t;f;f;6614;9b2200d1-4c95-4f7d-94ec-3ef9ca2cb684",
+			"0;3384;1;f;f;f;6615;aecd8736-495c-45ab-91f4-cbfe0a963111",
+			"0;3383;1;t;f;f;6616;9f0cf26d-bc6b-46a3-b90b-f08c30e49e71",
+			"0;3382;1;f;f;f;6617;83d6f52c-d2de-4280-adfa-2179fb2a7ea0",
+			"0;3381;1;t;f;f;6618;8b5a6acb-c939-4f9f-baf0-c041264bcd40",
+			"0;3380;1;t;f;f;6619;1991acf8-9356-431d-887a-1b1624ede377",
+			"0;3379;1;f;f;f;6620;ea9e4ae6-2221-449e-9290-5fd538ee0d03",
+			"0;3378;1;f;f;f;6621;96cf6f5e-4d0c-4030-9f7b-d092e092e3e1",
+			"0;3377;1;t;f;f;6622;f386f469-903b-4c46-ad0a-74b5aff69a45",
+			"0;3376;1;t;f;f;6623;9392941d-06a1-4c16-ba39-7a5d5fd6d1bc",
+			"0;3375;1;f;f;f;6624;72e85f23-5447-48a2-8a69-c08dacce7e44",
+			"0;3374;1;f;f;f;6625;f4ee152b-7658-4d40-b7fd-92ccc8fa9555",
+			"0;3373;1;t;f;f;6626;199a1e96-889d-42cb-a408-4407ed8502ad",
+			"0;3372;1;t;f;f;6627;8d0848d9-07ea-42c2-a17c-1debb3cbc808",
+			"0;3371;1;f;f;f;6628;cba0df5e-cddd-419c-90e8-125f2a50a8f2",
+			"0;3370;1;f;f;f;6629;579bd78c-8950-4f2a-9cca-511e38054890",
+			"0;3369;1;t;f;f;6630;3c171bd1-4ed5-485e-9d16-53320df15295",
+			"0;3368;1;t;f;f;6631;0c0fd599-0da1-453f-b8df-d5fe00e9b387",
+			"0;3367;1;f;f;f;6632;c7d6bc1a-7fa5-46c2-a87d-0b69016303d6",
+			"0;3366;1;f;f;f;6633;2dd98717-6bad-4d35-aba1-fd0fd3cec429",
+			"0;3365;1;t;f;f;6634;63ef00c3-64ce-4a8d-9fa0-a2ef1f588303",
+			"0;3364;1;f;f;f;6635;5c748b55-de9e-4383-b11e-520f71d66851",
+			"0;3363;1;t;f;f;6636;f48cfdac-79a8-4f12-bf57-2863ff4e59ad",
+			"0;3362;1;f;f;f;6637;9e39dac6-d7f9-4c47-a990-4b9c3b8ebd36",
+			"0;3361;1;t;f;f;6638;b975d573-a3e3-47ff-8361-bf13b8747ee0",
+			"0;3360;1;f;f;f;6639;0477e460-a5a6-40c3-841b-ae7c0e3c78f7",
+			"0;3359;1;t;f;f;6640;c81210f0-4e94-4eb2-82cf-640ee1256ec7",
+			"0;3358;1;f;f;f;6641;82595fd2-2f44-40d1-805b-78cb11d07d06",
+			"0;3357;1;t;f;f;6642;2b3d6d56-6e1d-443b-ac85-9046d0fa02b9",
+			"0;3356;1;f;f;f;6643;7ba5437f-2312-4f9a-b1f0-8ba2a5c28c67",
+			"0;3355;1;t;f;f;6644;172bb3e6-5417-4b69-8d47-d845cbcd08ca",
+			"0;3354;1;f;f;f;6645;46923adf-bfe3-4bbf-bfd8-ddf7d46154fc",
+			"0;3353;1;t;f;f;6646;093e16bc-e177-4e99-86a3-c1ce93a0b7a6",
+			"0;3352;1;f;f;f;6647;a12e9ba2-e2b3-40fa-b5f3-a6c388843690",
+			"0;3351;1;t;f;f;6648;e8f44601-fdb9-4dcd-a1dd-0c407134ed4e",
+			"0;3350;1;f;f;f;6649;b57487c2-3996-49db-bf55-fa58b5c5b8cd",
+			"0;3349;1;t;f;f;6650;e09e20fb-07a6-4582-8ec3-bf4aec1753bf",
+			"0;3348;1;f;f;f;6651;8ffc9093-2212-4c24-8040-a918a0736eee",
+			"0;3347;1;t;f;f;6652;01205e41-a9fb-4958-8799-c88fef50e469",
+			"0;3346;1;f;f;f;6653;b1bc16fc-caa5-4559-91b7-c181ab26e9b5",
+			"0;3345;1;t;f;f;6654;ee794637-537b-409c-87bf-d97272bb2e3c",
+			"0;3344;1;f;f;f;6655;f32f8b65-cde2-4bfd-ac26-e2cc34ce3124",
+			"0;3343;1;t;f;f;6656;436ba70d-1a73-492e-ab8b-d11e7c519e0f",
+			"0;3342;1;f;f;f;6657;a69fbbe1-cbf6-4efb-9355-f07034060b1d",
+			"0;3341;1;t;f;f;6658;376a8faf-057a-45ab-8544-ac3bd67df467",
+			"0;3340;1;f;f;f;6659;abe610db-3b59-46c5-bfe7-5e3c7481d70a",
+			"0;3339;1;t;f;f;6660;33eabae1-d51c-425e-9554-1fde07a4f303",
+			"0;3338;1;f;f;f;6661;3172966b-08ba-461f-82e9-e22d07bb19fd",
+			"0;3337;1;t;f;f;6662;3f2b77e7-1371-45e0-905e-ee2b52bbb6f9",
+			"0;3336;1;f;f;f;6663;36f0abcf-7e86-4af7-9bef-f755f9e6226c",
+			"0;3335;1;t;f;f;6664;68755ada-eb20-40cb-8594-cf3c56234836",
+			"0;3334;1;f;f;f;6665;de60d277-e3ee-4315-bd62-845dd8cd1750",
+			"0;3333;1;t;f;f;6666;38f8b480-8f51-42d3-a6f6-8a9c65fbaf51",
+			"0;3332;1;f;f;f;6667;22bca675-eba7-4817-9b26-a40bd2995af6",
+			"0;3331;1;t;f;f;6668;36ecc347-ff66-4c1a-ab0a-94fa0424f03b",
+			"0;3330;1;f;f;f;6669;00c1fcb1-365d-4ba7-896a-ca4e391df888",
+			"0;3329;1;t;f;f;6670;227ee249-aa2b-4791-9520-a7a0cef1d928",
+			"0;3328;1;f;f;f;6671;49e6fc9b-4e4b-4e8a-b5eb-5863173fab78",
+			"0;3327;1;t;f;f;6672;7f96e5b7-a5b3-43f9-bfba-971a3f8e8b48",
+			"0;3326;1;f;f;f;6673;dd438c81-a2b7-4c69-a71a-365f490123b1",
+			"0;3325;1;t;f;f;6674;63c0c406-a6c7-4e16-8d30-a677e1e9ff8d",
+			"0;3324;1;t;f;f;6675;6fe6611e-c1ec-44c6-a20a-edd972796992",
+			"0;3323;1;f;f;f;6676;8c63f5ca-0056-44d1-ab8c-0e8232e2a895",
+			"0;3322;1;f;f;f;6677;899c10ed-2600-4c7c-b975-87f7374a9fae",
+			"0;3321;1;t;f;f;6678;29106bc9-282b-4777-8799-50f00c9acc13",
+			"0;3320;1;f;f;f;6679;ea8010f7-c06f-4ad2-a6f8-015e933ccc00",
+			"0;3319;1;t;f;f;6680;9d5cc85e-cde3-44e6-a28c-b2c663ee2b87",
+			"0;3318;1;f;f;f;6681;aa6dc0f5-85c9-48aa-8f24-207369be4eac",
+			"0;3317;1;t;f;f;6682;598ed07a-c8b2-42c8-be8a-cd28a7c5870f",
+			"0;3316;1;f;f;f;6683;2e73ec43-bff2-4bfc-8b56-235244e5f551",
+			"0;3315;1;t;f;f;6684;dbe7d339-2698-493b-921f-2b0af98fd8ac",
+			"0;3314;1;f;f;f;6685;10c16a19-b8ab-4636-a1bc-2082c35011ff",
+			"0;3313;1;t;f;f;6686;6d80194b-e9da-4032-a3f4-f7a3d2eacee4",
+			"0;3312;1;f;f;f;6687;997e2492-664d-4052-9dc6-a62b7f28f106",
+			"0;3311;1;t;f;f;6688;d653ca36-6db9-45c3-a8c3-eea1a68dc020",
+			"0;3310;1;t;f;f;6689;ef43148f-e25b-43f7-aeed-5d2bc8862810",
+			"0;3309;1;f;f;f;6690;17d7c456-b714-4124-9725-a524b2249c1a",
+			"0;3308;1;f;f;f;6691;7390984b-6e36-4d24-82b9-5ff4cf4be4e3",
+			"0;3307;1;t;f;f;6692;ca56fea1-310e-45ea-a998-46875e557f35",
+			"0;3306;1;t;f;f;6693;aa186297-f4d2-4134-8c79-f964781baa0b",
+			"0;3305;1;f;f;f;6694;3fb12cad-b044-4043-9a34-e0dcefcbd582",
+			"0;3304;1;f;f;f;6695;6e3fe3e6-fc12-4eb6-9670-aac37ed15d19",
+			"0;3303;1;t;f;f;6696;6663d942-a13c-475a-b945-df2139b4d03d",
+			"0;3302;1;f;f;f;6697;49da7dfe-acda-416b-8e05-92aae8adac01",
+			"0;3301;1;t;f;f;6698;61c3459f-b163-49bf-ad20-7c14e981af73",
+			"0;3300;1;f;f;f;6699;fc781b87-c993-44b3-a753-38ba48d215d0",
+			"0;3299;1;t;f;f;6700;fc7d2c0c-dcd7-41a1-9e9a-b45a3ca183d8",
+			"0;3298;1;f;f;f;6701;91c7005a-ea6d-47a6-bb79-b57435d26651",
+			"0;3297;1;t;f;f;6702;5cf20f36-3e13-4994-8364-aeb90026f076",
+			"0;3296;1;f;f;f;6703;25243bcb-0c64-4e54-9989-3449c22fa1c8",
+			"0;3295;1;t;f;f;6704;b3c3530e-4bb7-440a-9656-26a2434a9c3c",
+			"0;3294;1;f;f;f;6705;8670bbbb-8898-4b1a-815a-49aad1e59111",
+			"0;3293;1;t;f;f;6706;a81900c9-3651-4e59-8c74-3958e802b915",
+			"0;3292;1;f;f;f;6707;001be45d-bf86-4e55-8a01-ff41454fb366",
+			"0;3291;1;t;f;f;6708;de28633d-f154-4ece-a85b-fd78ef74a19b",
+			"0;3290;1;f;f;f;6709;6fcb11b3-4de3-40b8-8c9c-4434cfaf947f",
+			"0;3289;1;t;f;f;6710;7a0ae8ae-8199-4291-bb0f-7f45242eb0e7",
+			"0;3288;1;f;f;f;6711;be7fe66b-0b2d-47fd-870b-931f5b18b6a4",
+			"0;3287;1;t;f;f;6712;4444b1bc-84f0-4c88-81a3-c15395c5d6f1",
+			"0;3286;1;f;f;f;6713;ca3eec47-fda4-4cd5-b118-67aca69caafd",
+			"0;3285;1;t;f;f;6714;b208b2e7-30ec-49a9-bf78-9b2a71e7fbc3",
+			"0;3284;1;f;f;f;6715;2921baab-9480-4439-8cca-4c0fb3a36062",
+			"0;3283;1;t;f;f;6716;f8432d6a-cf8f-41d6-839b-e9e12d631c68",
+			"0;3282;1;f;f;f;6717;4ceaf33b-b9fe-43df-a6cd-60e170c73ff2",
+			"0;3281;1;t;f;f;6718;cda28356-7f47-4ab9-8247-a56892ccc38f",
+			"0;3280;1;f;f;f;6719;b44d1506-8f93-4d5a-9e9b-7466375ac43c",
+			"0;3279;1;t;f;f;6720;226e06ab-11a9-4e90-af7b-a4ae40799d66",
+			"0;3278;1;f;f;f;6721;c95bf208-ccb5-4df4-9b90-b3c9f3a25eca",
+			"0;3277;1;t;f;f;6722;1b1142a4-a819-4c88-96c5-9d2ecccee915",
+			"0;3276;1;f;f;f;6723;e489f244-7154-4f80-8c17-5a4e0cb45656",
+			"0;3275;1;t;f;f;6724;0e6e6189-d002-42ad-b89d-6c805b68cf52",
+			"0;3274;1;f;f;f;6725;3fea24ab-3771-4159-ae2f-f902488ab194",
+			"0;3273;1;t;f;f;6726;2b950f8d-3d2d-4c46-890c-5850b3295c07",
+			"0;3272;1;f;f;f;6727;8a5df7ca-77cf-4bbc-b34c-6b916a3b10c3",
+			"0;3271;1;t;f;f;6728;427f7a69-c0af-4397-96a1-5cae94109def",
+			"0;3270;1;f;f;f;6729;19a93676-edbe-4203-a2e7-e3ad995f9a8b",
+			"0;3269;1;t;f;f;6730;d68da443-0234-4177-8c6f-e2a5c00f6062",
+			"0;3268;1;f;f;f;6731;9be0c178-13e5-4dbd-9f43-b87766de6b4d",
+			"0;3267;1;t;f;f;6732;cd53525a-4d0e-41d5-afbf-a70165030e62",
+			"0;3266;1;f;f;f;6733;3ceecf24-9523-4d5c-b247-d8fbaa6e0477",
+			"0;3265;1;t;f;f;6734;1e4323fc-d558-4698-9216-f2a896b5c97f",
+			"0;3264;1;t;f;f;6735;c99a2e58-2522-4729-82f4-8c306870fcc1",
+			"0;3263;1;f;f;f;6736;e900d63b-0cb5-4911-b8bc-9eb16410ab55",
+			"0;3262;1;f;f;f;6737;71e38550-c79e-4e9b-89fd-18bb31200559",
+			"0;3261;1;t;f;f;6738;6c5b3746-a5f6-4f0d-a62c-93f8c2831aef",
+			"0;3260;1;t;f;f;6739;584b25a6-61df-4139-a011-ec512c8594ef",
+			"0;3259;1;f;f;f;6740;00fde672-c666-4745-ac46-368558f96277",
+			"0;3258;1;f;f;f;6741;634f17cb-1118-491d-8e13-abbc1d51eeeb",
+			"0;3257;1;t;f;f;6742;cac79ede-671f-4296-a336-e34e214aea24",
+			"0;3256;1;f;f;f;6743;db23edc7-563d-4cd9-a164-0721764d0797",
+			"0;3255;1;t;f;f;6744;a7c45ebd-6bd8-49c5-83f8-d476378555f8",
+			"0;3254;1;f;f;f;6745;6bdbc1e4-47ba-4957-9024-6dbd3675abef",
+			"0;3253;1;t;f;f;6746;3c515d35-2303-4b3d-9cb5-0781fe0cd4c1",
+			"0;3252;1;t;f;f;6747;8f86a105-fe30-485f-a22d-d69838acd43e",
+			"0;3251;1;f;f;f;6748;d6312518-b118-48e4-b7ee-a74d30ee51a0",
+			"0;3250;1;f;f;f;6749;bba0c136-28a4-4816-bed1-11cf9666210a",
+			"0;3249;1;t;f;f;6750;2db392fb-86c2-4d55-b59d-4940a86abd05",
+			"0;3248;1;t;f;f;6751;1402e6eb-0f6d-4e3b-b6ca-99214a37ee22",
+			"0;3247;1;f;f;f;6752;7067c179-18fe-4b15-acbd-6bfed3ebf7f7",
+			"0;3246;1;f;f;f;6753;f712ffdd-bdb5-4b5d-a777-1c95141a116d",
+			"0;3245;1;t;f;f;6754;d2bea55e-bca8-4245-a3c9-ad36cafde0a1",
+			"0;3244;1;t;f;f;6755;963b3a7c-ea04-4dde-b560-8c6aba5f805c",
+			"0;3243;1;f;f;f;6756;34b728cb-4949-47b3-ba59-38936b10ec57",
+			"0;3242;1;f;f;f;6757;4dd64da4-40cd-49cd-9312-cac7aa9aa53b",
+			"0;3241;1;t;f;f;6758;828b438e-9cb2-42d6-bffb-ec1ce2582d8d",
+			"0;3240;1;f;f;f;6759;d99f6f21-6a91-4faf-8c58-bf6ba0394e63",
+			"0;3239;1;t;f;f;6760;c705bf5b-8b49-4736-9f50-92deb57f97dc",
+			"0;3238;1;f;f;f;6761;8fe02716-116b-4340-8e32-933348237e55",
+			"0;3237;1;t;f;f;6762;ffea800d-92a0-4e74-a87f-ae57d749cb0d",
+			"0;3236;1;f;f;f;6763;df069989-409b-4f4d-acf4-e3d3a604cb18",
+			"0;3235;1;t;f;f;6764;1819204b-6385-4bc7-9b30-d9f5b6acf6b2",
+			"0;3234;1;f;f;f;6765;a0530a70-9e5d-4933-8750-46315ccd648e",
+			"0;3233;1;t;f;f;6766;02c76047-da13-4198-bfba-fa26895e5d75",
+			"0;3232;1;f;f;f;6767;09be2df1-979e-4702-8439-019edf004cae",
+			"0;3231;1;t;f;f;6768;a95f7aa5-9d20-49ec-869f-39eecb55122d",
+			"0;3230;1;f;f;f;6769;9622ee9c-c8e6-4c71-9458-c3739d76be05",
+			"0;3229;1;t;f;f;6770;3f635dec-c5cf-4053-aa6e-a3708e5f0aed",
+			"0;3228;1;f;f;f;6771;f9a1c50e-bc47-41eb-ad8f-ba842f5319c1",
+			"0;3227;1;t;f;f;6772;2c0408f2-26a3-48bc-b7f5-6e9ba72a85e8",
+			"0;3226;1;f;f;f;6773;aba72d7b-a984-4d2d-b98e-823ed15f22c7",
+			"0;3225;1;t;f;f;6774;c0f75e60-591c-40b8-bb4f-931bc7a848a2",
+			"0;3224;1;f;f;f;6775;ea47f61b-84be-420f-b56e-026590bcd7f5",
+			"0;3223;1;t;f;f;6776;a59e12c1-5dc4-4c35-bc09-5ece350ce4a5",
+			"0;3222;1;f;f;f;6777;fb8e6778-04a6-4826-8f17-ecdb0f7e0244",
+			"0;3221;1;t;f;f;6778;290c3e3d-ceef-470e-8ca5-8214e3cbd868",
+			"0;3220;1;t;f;f;6779;bd461a31-2e8a-4430-b2e6-b8af45395c24",
+			"0;3219;1;f;f;f;6780;5645e6ad-43d2-4614-b409-ec53d852bb8b",
+			"0;3218;1;f;f;f;6781;26f36321-bf98-4985-80cf-12063915a21d",
+			"0;3217;1;t;f;f;6782;21cbd8e0-75a5-440e-b2a2-cd14ef4c9a9f",
+			"0;3216;1;t;f;f;6783;07a52f3d-c67d-4369-afc4-a6a587f39375",
+			"0;3215;1;f;f;f;6784;e74043e6-8193-4049-a917-28b25090fcb7",
+			"0;3214;1;f;f;f;6785;46ecd124-aab5-4fbe-b444-36eb0c5605d1",
+			"0;3213;1;t;f;f;6786;72229391-565a-4da6-9349-d749cea7d223",
+			"0;3212;1;t;f;f;6787;1d8a6919-a9de-4825-b083-fb605dd3306b",
+			"0;3211;1;f;f;f;6788;9a725a62-fa14-41f1-a10e-ae63bd61fcdc",
+			"0;3210;1;f;f;f;6789;8459338e-2c5e-4c2f-8bfe-f413db1314dd",
+			"0;3209;1;t;f;f;6790;7f7bdfa7-4587-4f45-a79e-95de5c549bed",
+			"0;3208;1;f;f;f;6791;e6502ef7-3a0d-4ee2-b407-de7a3c34c2ea",
+			"0;3207;1;t;f;f;6792;c9839b6b-e36a-4414-91bb-7c0074762878",
+			"0;3206;1;f;f;f;6793;3cf76eb9-c256-425e-a9ba-b170ca607ae2",
+			"0;3205;1;t;f;f;6794;ed79e429-92b8-4e20-a54a-92a9fae10671",
+			"0;3204;1;f;f;f;6795;8ba0711f-5bb6-4eb5-8432-b13c0a29788e",
+			"0;3203;1;t;f;f;6796;e6c310fd-80f4-4cb7-a086-20b3b6ef0be9",
+			"0;3202;1;f;f;f;6797;20b7e71d-6d01-47b9-93e1-fb0a892682bc",
+			"0;3201;1;t;f;f;6798;e616cee5-8fac-4505-a2ef-6db76786c553",
+			"0;3200;1;f;f;f;6799;e4c14238-4d71-4559-a2c7-67ec82fb1c6b",
+			"0;3199;1;t;f;f;6800;f4042b35-f4ae-4ecd-a290-99bb65e03fca",
+			"0;3198;1;f;f;f;6801;456de2bc-bc19-4400-996e-8ed87d2ffebe",
+			"0;3197;1;t;f;f;6802;0e95c63a-da65-4ec1-97f1-a9a8a8aee7d6",
+			"0;3196;1;f;f;f;6803;47a09862-4e1d-458b-a376-19882e552887",
+			"0;3195;1;t;f;f;6804;569a41b4-a746-4ce5-ab9a-8f27fbcdbf01",
+			"0;3194;1;f;f;f;6805;a78439c1-5079-49d4-866d-71a499e4e79a",
+			"0;3193;1;t;f;f;6806;81d81bb5-065d-4406-977c-1e8d5b3cb1a2",
+			"0;3192;1;f;f;f;6807;9326db4e-d3b8-44d8-a854-5276e7dfcf64",
+			"0;3191;1;t;f;f;6808;68435b27-347c-4dcc-82a4-0161bd783e67",
+			"0;3190;1;t;f;f;6809;8337fae5-ee4d-4c0d-af48-2fbe2b802738",
+			"0;3189;1;f;f;f;6810;47948284-003d-426d-9c05-0235c48c7849",
+			"0;3188;1;f;f;f;6811;36b0967d-c0d3-42f1-b2fd-803507b8ddb5",
+			"0;3187;1;t;f;f;6812;d93bf783-e315-4976-99c9-9fe57aeb082e",
+			"0;3186;1;f;f;f;6813;fe591480-4fdf-4f01-8f2b-5b8baef00170",
+			"0;3185;1;t;f;f;6814;8027d520-7c6b-47f8-8285-32197661e3de",
+			"0;3184;1;f;f;f;6815;68f9d5dc-6b83-4018-b389-2924467474ba",
+			"0;3183;1;t;f;f;6816;0830afdf-a919-4b95-8691-4f9b0645afb0",
+			"0;3182;1;f;f;f;6817;5e1ced93-e4b8-43b0-9cff-ead2431b398e",
+			"0;3181;1;t;f;f;6818;9aed38cc-dc0b-478b-bf40-5fe973b0cb10",
+			"0;3180;1;f;f;f;6819;81eb952f-2d63-445a-a7a9-03963219adbf",
+			"0;3179;1;t;f;f;6820;d9694ffc-80c8-4fe1-8b0e-50503d3dfbfb",
+			"0;3178;1;f;f;f;6821;6700f431-0727-4adb-9980-be7c0a82e8b9",
+			"0;3177;1;t;f;f;6822;25f83a2b-de28-44bd-a400-34d23f487a23",
+			"0;3176;1;f;f;f;6823;94f2d8b2-5eef-4d0b-bf2c-13d3a5851f9c",
+			"0;3175;1;t;f;f;6824;12dfb298-f1ee-4f01-a8fb-938e93f98bfa",
+			"0;3174;1;f;f;f;6825;8df9df48-aa4a-4724-8cb6-2a4551c3bab6",
+			"0;3173;1;t;f;f;6826;2e1213fc-d886-431c-a91c-d49ad8c255e4",
+			"0;3172;1;f;f;f;6827;c2a02d74-dfb5-473e-aa86-fbd3637141bb",
+			"0;3171;1;t;f;f;6828;2adf9a6a-8ed8-400b-81bb-3404232f5d88",
+			"0;3170;1;f;f;f;6829;dc05c03d-4af6-4b04-8aa3-6a8098c24bb6",
+			"0;3169;1;t;f;f;6830;42152216-8865-409b-8029-4f00cecb5bc7",
+			"0;3168;1;f;f;f;6831;7c89915c-af54-42b1-bad2-86bdf166027f",
+			"0;3167;1;t;f;f;6832;e3c100ac-4c7f-4e95-bd21-39cb2effd2ba",
+			"0;3166;1;f;f;f;6833;05d61b8c-4875-4d00-9afa-f3c18fe33777",
+			"0;3165;1;t;f;f;6834;83333c9a-716e-468e-82c6-8c573bd8d279",
+			"0;3164;1;f;f;f;6835;2f26b7fc-de79-4850-b6af-82bce43a5000",
+			"0;3163;1;t;f;f;6836;9d5a5a80-6ada-4ef8-98f7-fdfdd9f023ec",
+			"0;3162;1;f;f;f;6837;53e778eb-5c41-4242-b7a4-639a291d97ea",
+			"0;3161;1;t;f;f;6838;110cceeb-f172-432e-8de2-cc7ab9262815",
+			"0;3160;1;f;f;f;6839;9adf5916-79eb-4b33-913a-2d1c87c46dc8",
+			"0;3159;1;t;f;f;6840;8298bf96-c3a7-41af-9cc8-3c607bee79e5",
+			"0;3158;1;f;f;f;6841;9f568ea4-3a01-4a82-a895-f2f2f6462c7e",
+			"0;3157;1;t;f;f;6842;ca4691e2-b053-4a2d-8881-7fbccd1a4cac",
+			"0;3156;1;f;f;f;6843;93492bfe-9a3d-40ee-994e-16101097bf5d",
+			"0;3155;1;t;f;f;6844;0f77c6c6-1aaa-453b-90a5-629936e8fe29",
+			"0;3154;1;f;f;f;6845;3141a079-25dd-4fcc-9a86-2b2e1a801ffb",
+			"0;3153;1;t;f;f;6846;344df2f7-a7d3-4486-acff-c7f30941283d",
+			"0;3152;1;f;f;f;6847;da39d381-8936-4c80-879f-03779f2072a4",
+			"0;3151;1;t;f;f;6848;f8e88969-9046-4f72-ac02-e778418bc6a3",
+			"0;3150;1;f;f;f;6849;782ef2c8-24c1-4b50-a875-735741f9f4e5",
+			"0;3149;1;t;f;f;6850;cca003a0-08c4-4e7e-8dc5-605408d13e20",
+			"0;3148;1;f;f;f;6851;7a35c32f-34de-4ed4-8c78-4fd595b52c1c",
+			"0;3147;1;t;f;f;6852;73871c5b-96b6-4bc6-af10-4da9cfac7ea8",
+			"0;3146;1;f;f;f;6853;54695ad3-3e45-4e5e-ba76-d11471b7ed0b",
+			"0;3145;1;t;f;f;6854;0a6f79dc-151e-44ae-ab4b-015e35dcc186",
+			"0;3144;1;f;f;f;6855;806ba261-7f51-4f09-bea1-37eb2a5b2828",
+			"0;3143;1;t;f;f;6856;bc2fb6cf-f276-4a16-8beb-a95c8a8435ff",
+			"0;3142;1;f;f;f;6857;f1527fdc-7415-44a6-91b1-ce37c7a7d289",
+			"0;3141;1;t;f;f;6858;9afc932c-8b6f-4ff0-93e6-e06c9c2958f8",
+			"0;3140;1;f;f;f;6859;f1c45c14-be95-4b6d-995f-6a364623271b",
+			"0;3139;1;t;f;f;6860;0b4f0732-c440-4d7e-8816-99a1412bdf04",
+			"0;3138;1;f;f;f;6861;cc107717-4094-40e4-a237-b0f6496662d1",
+			"0;3137;1;t;f;f;6862;63c3ad60-d2fb-4b6f-87ff-050fb01333c5",
+			"0;3136;1;f;f;f;6863;02cbf11c-75f2-4199-a09b-93595e618b20",
+			"0;3135;1;t;f;f;6864;9aceae63-1e2f-4acf-afcf-f1310a21c2bf",
+			"0;3134;1;f;f;f;6865;6e6279ad-2730-4a4c-95b8-09765dbae508",
+			"0;3133;1;t;f;f;6866;55267641-5a82-406b-bd35-6a8ec290e420",
+			"0;3132;1;f;f;f;6867;7083c5c0-69be-4770-8cda-c7447d14bd16",
+			"0;3131;1;t;f;f;6868;010c6e82-ca54-4153-afee-538a23f1656c",
+			"0;3130;1;f;f;f;6869;0a9613c6-9943-46de-afe0-eaa6a346b306",
+			"0;3129;1;t;f;f;6870;e8e23cb8-40ca-4afe-8205-5dedea3cce0b",
+			"0;3128;1;f;f;f;6871;a76ce9f6-e8c0-443f-b923-c9e500c7fdef",
+			"0;3127;1;t;f;f;6872;1367683e-8bb8-4d5a-9dbc-6b99ad6cf7a1",
+			"0;3126;1;f;f;f;6873;439946e1-b593-4a5c-a1c2-d18ba54a8c49",
+			"0;3125;1;t;f;f;6874;449d29d6-9248-4c32-9f52-41a791dcca94",
+			"0;3124;1;f;f;f;6875;0bd723c4-3317-45fe-83b1-65aa0c184eaf",
+			"0;3123;1;t;f;f;6876;405055fb-afb2-4fe4-8bd9-4905c4712ffa",
+			"0;3122;1;f;f;f;6877;51459786-1b2d-4813-94d3-a4b5c2a2f6e8",
+			"0;3121;1;t;f;f;6878;702749d1-4828-4e18-bbf5-d482ed19dcf8",
+			"0;3120;1;f;f;f;6879;ea44db08-2018-47ed-af2d-81c63b487c5a",
+			"0;3119;1;t;f;f;6880;1b051aea-5a25-4581-b32d-596caf5d9266",
+			"0;3118;1;f;f;f;6881;1f238b8f-2dee-4965-af24-4de2a18a01c4",
+			"0;3117;1;t;f;f;6882;508a59e2-e386-4169-848c-5cc9850bfa8b",
+			"0;3116;1;t;f;f;6883;dc1453d2-935d-4b09-a88d-d7b3658bdf12",
+			"0;3115;1;f;f;f;6884;1f4651bc-ebb7-4261-9655-2748ef1da9ff",
+			"0;3114;1;f;f;f;6885;e1754bbf-c468-45d6-92ea-b75b1b77172e",
+			"0;3113;1;t;f;f;6886;92b407f6-2961-40f7-8a9a-dbf4e3fc7b67",
+			"0;3112;1;f;f;f;6887;7b0b13fe-0a4e-432a-a416-1a44605fa667",
+			"0;3111;1;t;f;f;6888;1e63de43-963f-4d2a-baf6-2ad2a59b33eb",
+			"0;3110;1;f;f;f;6889;f573011a-a470-4068-906f-39753d150956",
+			"0;3109;1;t;f;f;6890;55b61130-746f-442e-90db-184fc1533028",
+			"0;3108;1;f;f;f;6891;29e006a3-5278-4a92-a723-dc86625d4829",
+			"0;3107;1;t;f;f;6892;4769a4e4-490c-4314-9b7e-6fdc89217165",
+			"0;3106;1;f;f;f;6893;4e94a801-5720-4bac-a1d6-d596ea3c676e",
+			"0;3105;1;t;f;f;6894;9d40a860-48d7-434b-b8e8-9f23070aeb3c",
+			"0;3104;1;f;f;f;6895;78ea320e-c067-4bf7-ba71-c00f090beee4",
+			"0;3103;1;t;f;f;6896;53fe5921-6b9d-4396-a9de-f622729414b1",
+			"0;3102;1;f;f;f;6897;ff161247-cc88-4c18-94d5-baeb2d7efd80",
+			"0;3101;1;t;f;f;6898;a1293060-6525-4baf-a809-a570197ddcda",
+			"0;3100;1;f;f;f;6899;2652e3c0-f9f8-4535-bb77-ba1402dc007e",
+			"0;3099;1;t;f;f;6900;e5619c4e-6640-4903-b212-d75e6fc61914",
+			"0;3098;1;f;f;f;6901;d512caf0-75d9-4e44-b5ec-0cc799652ff6",
+			"0;3097;1;t;f;f;6902;09268cb9-08fa-4387-86e2-5af49ff69f92",
+			"0;3096;1;t;f;f;6903;83f8199c-d7ff-402c-bcea-b0ededf8f641",
+			"0;3095;1;f;f;f;6904;4d6e66e9-6743-4026-bdaf-487f0e426f30",
+			"0;3094;1;f;f;f;6905;089b6984-1fe2-435a-84eb-518558545e46",
+			"0;3093;1;t;f;f;6906;0cf23a77-919a-49d1-9504-478014b3974a",
+			"0;3092;1;t;f;f;6907;893cc795-9a76-403b-b3da-165d7f26f35a",
+			"0;3091;1;f;f;f;6908;ebc5bc50-5e28-4ad6-9272-ff68e2fd2f2b",
+			"0;3090;1;f;f;f;6909;589412ef-f023-4ddf-9a9e-2703560bd2be",
+			"0;3089;1;t;f;f;6910;3e0295f4-65dd-4ff4-b384-3cac30b8dc4b",
+			"0;3088;1;f;f;f;6911;071f00ac-b7eb-47c4-b80a-9057e25b74e5",
+			"0;3087;1;t;f;f;6912;a4a38def-4d60-4b2d-bcc3-14a5f5344b85",
+			"0;3086;1;f;f;f;6913;f3dd23ef-76f0-4d05-acec-202f79537e44",
+			"0;3085;1;t;f;f;6914;1ea56e93-98f5-41f6-86c8-3ab1339a8dd3",
+			"0;3084;1;t;f;f;6915;be0e4330-2418-4250-b4c7-4992b1236daa",
+			"0;3083;1;f;f;f;6916;36f0447e-16d0-44b4-b518-eb54060a4f92",
+			"0;3082;1;f;f;f;6917;ed5129d1-b074-4abb-8131-8ef1703e8d9d",
+			"0;3081;1;t;f;f;6918;6c92507d-b161-4d5f-8c51-2750c7a7f549",
+			"0;3080;1;f;f;f;6919;87dbfccd-819e-45b4-b56c-4c60aceb08f0",
+			"0;3079;1;t;f;f;6920;61242723-9823-4536-b656-6e0adee630f8",
+			"0;3078;1;f;f;f;6921;f8a67509-86a5-4f7a-ba74-0fbb314b314d",
+			"0;3077;1;t;f;f;6922;8dd2ba84-1ed4-4362-bb0a-b38187a157d6",
+			"0;3076;1;f;f;f;6923;d48cb3ff-0894-4069-a2d9-bb6d7ad82939",
+			"0;3075;1;t;f;f;6924;5b4ddbe6-bef4-412f-a7e3-b750e4560207",
+			"0;3074;1;f;f;f;6925;e42540fb-fc34-4f87-a7ea-65f44c14629b",
+			"0;3073;1;t;f;f;6926;a1428dfe-f8ce-4037-b020-d3943a5f236b",
+			"0;3072;1;f;f;f;6927;c2561db8-d1f7-48e8-9b53-3a52ef54c5cf",
+			"0;3071;1;t;f;f;6928;f71c8645-be93-478e-ad68-1ee741ad15b5",
+			"0;3070;1;f;f;f;6929;c35ed362-84d6-4b5b-98e0-0825801c5283",
+			"0;3069;1;t;f;f;6930;cf5d3659-be0a-4c27-b16a-a8aeeb92ed23",
+			"0;3068;1;f;f;f;6931;48f5392f-d28f-4bc3-80d9-6fc64961eae7",
+			"0;3067;1;t;f;f;6932;d5258d86-3813-4af0-af73-4b1700964fa3",
+			"0;3066;1;f;f;f;6933;4c404e42-c368-4d25-a010-0883b44d40bb",
+			"0;3065;1;t;f;f;6934;d9e5b048-ed7e-44cf-8f27-d39578e73b82",
+			"0;3064;1;f;f;f;6935;3fb598d4-88d3-47ec-8e04-86173209e362",
+			"0;3063;1;t;f;f;6936;e1650e75-2c6d-4e63-93bf-2aeee11d0f9f",
+			"0;3062;1;f;f;f;6937;b2d1ab27-cdb2-48ab-8dd3-5150b58583dc",
+			"0;3061;1;t;f;f;6938;6faba3a8-a9c8-4d52-b7e8-a6c230510c5b",
+			"0;3060;1;f;f;f;6939;8bcd39a7-a635-4c83-b6b1-02142bee8bc4",
+			"0;3059;1;t;f;f;6940;62208c4b-ca76-4018-b8ef-988c44ee6071",
+			"0;3058;1;f;f;f;6941;b5521caa-7562-4bbc-a70c-28d22c9ee6d4",
+			"0;3057;1;t;f;f;6942;23d62cb0-c71a-4a65-95fb-110f9153b361",
+			"0;3056;1;f;f;f;6943;7ba542f5-5b83-4c24-9e66-b66c331ee437",
+			"0;3055;1;t;f;f;6944;6509a77c-7af6-4e39-a770-b22fb97702f6",
+			"0;3054;1;f;f;f;6945;734d2fcf-2f3a-44d6-8fae-42ba0809eff9",
+			"0;3053;1;t;f;f;6946;e3d9c826-99a0-4395-98ba-8b868e1b7b55",
+			"0;3052;1;f;f;f;6947;1fb5eaeb-027d-4cca-9ea1-3cfea1ade986",
+			"0;3051;1;t;f;f;6948;b40c8bfe-3c5c-4d77-b3e5-a15e3e89bb0e",
+			"0;3050;1;f;f;f;6949;1f731680-6d93-417d-b32e-5c1d6bfec009",
+			"0;3049;1;t;f;f;6950;37304196-6d9d-48fe-8515-41bbfa620d65",
+			"0;3048;1;f;f;f;6951;0690131a-1d28-4471-ba44-8ac53ea8ec5b",
+			"0;3047;1;t;f;f;6952;903952cc-84c7-48e0-96c8-718d0f3180fd",
+			"0;3046;1;f;f;f;6953;d7fa87d2-e527-42e3-ade8-1f35d93339d6",
+			"0;3045;1;t;f;f;6954;2187a3ef-b8a5-4b18-950e-112974511348",
+			"0;3044;1;f;f;f;6955;104892e2-67a5-41fa-b612-40c47b49569b",
+			"0;3043;1;t;f;f;6956;a59efcc4-9cb2-4665-b303-82b2a82a9449",
+			"0;3042;1;f;f;f;6957;28764823-3282-436e-9679-68de1e167e09",
+			"0;3041;1;t;f;f;6958;e4757787-dfe8-4394-9726-b0ff615ac322",
+			"0;3040;1;t;f;f;6959;9aae0f48-39c5-4002-ab11-e5503b1697bc",
+			"0;3039;1;f;f;f;6960;e041c892-d999-4e34-96dc-1ff90069601b",
+			"0;3038;1;f;f;f;6961;92b8c579-db5b-4c0c-97b0-ca103d560c53",
+			"0;3037;1;t;f;f;6962;c6a18f08-e233-4081-899f-8c6fdbaf2b4d",
+			"0;3036;1;t;f;f;6963;aaf6b621-914f-4814-be31-d428a0cec25b",
+			"0;3035;1;f;f;f;6964;0ab405be-e0e4-443e-a4dc-7df48b21eb93",
+			"0;3034;1;f;f;f;6965;c60b900c-74d4-4ff5-9e21-699a0d54bb7b",
+			"0;3033;1;t;f;f;6966;843f8060-a4df-45cc-9696-15fa9bce9213",
+			"0;3032;1;t;f;f;6967;58bbcf55-a3a1-48c4-9eae-13259522a24e",
+			"0;3031;1;f;f;f;6968;2f298a04-d94f-45a8-af95-f97929d80dd0",
+			"0;3030;1;f;f;f;6969;de622c34-b0f3-4f86-8ca4-5c1e81dcdb6d",
+			"0;3029;1;t;f;f;6970;0be652c9-ad75-4a4b-a068-8b10900a23be",
+			"0;3028;1;f;f;f;6971;1dc5c3c1-a772-4ce8-8efe-5264d96a91dd",
+			"0;3027;1;t;f;f;6972;44ded9f4-ac50-4173-84cb-1d2c2facc52a",
+			"0;3026;1;f;f;f;6973;fdd36a1a-48d1-4dab-8f24-5911057a9563",
+			"0;3025;1;t;f;f;6974;ac1227b4-1416-4f85-82b9-72100c299d69",
+			"0;3024;1;f;f;f;6975;3d2443ee-7436-4f95-a80f-51546c87c7c9",
+			"0;3023;1;t;f;f;6976;4c7e4ed7-7b76-40bb-96be-d9dbdfc6daa3",
+			"0;3022;1;f;f;f;6977;392c8bb1-5410-4b05-bf3d-c9e83237a375",
+			"0;3021;1;t;f;f;6978;29b8e28e-7179-44d3-94e4-19319d2abae8",
+			"0;3020;1;f;f;f;6979;489335e7-084c-40d1-b8fe-00554e3ffce8",
+			"0;3019;1;t;f;f;6980;14e38db7-6037-4ec9-b70b-c956d8a56ce5",
+			"0;3018;1;f;f;f;6981;be065449-26ea-4a5e-a593-fd1d3384fe97",
+			"0;3017;1;t;f;f;6982;6abe885b-a9c1-4538-aee9-608e5a960e17",
+			"0;3016;1;f;f;f;6983;cd2c0742-a283-4e5a-92db-f3b8291bcb80",
+			"0;3015;1;t;f;f;6984;9807abe2-4c84-449b-889b-255b4d0259d6",
+			"0;3014;1;f;f;f;6985;c3849b9f-bcde-4fa6-b065-0b02f694e1f0",
+			"0;3013;1;t;f;f;6986;9f3059d5-4852-4a7f-b2d9-61e1685be184",
+			"0;3012;1;f;f;f;6987;7bed130e-7585-4e1c-88e6-6f3e85a4c7e2",
+			"0;3011;1;t;f;f;6988;eea8075a-dde3-46c4-a91c-262c64fd99d8",
+			"0;3010;1;t;f;f;6989;34766f07-f0e5-4db4-a129-14ca6279f79c",
+			"0;3009;1;f;f;f;6990;8a92280b-2d04-43ba-bf08-74c7eae992cf",
+			"0;3008;1;f;f;f;6991;da277a7c-264d-4e10-b999-95b78089f164",
+			"0;3007;1;t;f;f;6992;875aef83-e158-418d-8703-b53d273fa0ec",
+			"0;3006;1;f;f;f;6993;d76aa66e-5a6e-4a2b-a5d2-365227bfd96d",
+			"0;3005;1;t;f;f;6994;4bd990ce-de60-448d-8668-40210d1a0d6a",
+			"0;3004;1;f;f;f;6995;3242532e-bc16-4940-84cb-2235024dab43",
+			"0;3003;1;t;f;f;6996;c0a31632-d9b8-4890-82ee-2dc3512f90b8",
+			"0;3002;1;f;f;f;6997;7cda2eb4-5b31-4e27-aa1a-6295d8291a0e",
+			"0;3001;1;t;f;f;6998;6f4a627c-d5df-40b4-bcf7-4a01ccdca277",
+			"0;3000;1;f;f;f;6999;94720de3-a63c-4130-8a55-5e3a6138e3e7",
+			"0;2999;1;t;f;f;7000;81480ba9-e353-4364-9a33-56f57d513eff",
+			"0;2998;1;f;f;f;7001;cb0d67b7-8600-4be1-b9e2-8d8263e2d933",
+			"0;2997;1;t;f;f;7002;6164ee95-5a77-4af7-aa8b-b396414c0c9d",
+			"0;2996;1;f;f;f;7003;d6b4c392-55b3-4e10-8627-59e52754ea25",
+			"0;2995;1;t;f;f;7004;82aca708-4471-4306-9c42-518f3aa3bd6b",
+			"0;2994;1;f;f;f;7005;1c06be10-8b9e-448a-a5cc-129c8a2b6e29",
+			"0;2993;1;t;f;f;7006;612a9984-7718-4084-9fd4-56e64064bed1",
+			"0;2992;1;f;f;f;7007;2cc61e3b-7287-4399-a430-abb3ef8cdddb",
+			"0;2991;1;t;f;f;7008;bf2dca19-0d44-42d8-af12-6c380e95f84c",
+			"0;2990;1;f;f;f;7009;ad19d43a-4b50-4964-8523-5ca4e545e032",
+			"0;2989;1;t;f;f;7010;15615fcd-57ce-4cca-9f8f-95bde3500418",
+			"0;2988;1;f;f;f;7011;e569b416-88e8-4469-ad18-7d03aa0e79aa",
+			"0;2987;1;t;f;f;7012;d41fb306-4aae-4a48-b606-645f77884f7f",
+			"0;2986;1;f;f;f;7013;ad265028-d2c5-4c7c-b5dc-1f06dc33e538",
+			"0;2985;1;t;f;f;7014;c6ca9f34-32e6-455b-98a7-bf032ebb22a3",
+			"0;2984;1;f;f;f;7015;b50c9c60-4787-43fc-835e-e8c2bd0dd103",
+			"0;2983;1;t;f;f;7016;22389237-f4c4-4f6e-b4f8-0d4f02934afc",
+			"0;2982;1;f;f;f;7017;fa091a76-03ee-4dbb-8f63-cb45beeb801f",
+			"0;2981;1;t;f;f;7018;683c17ef-582a-4de5-9076-6713ac3d9fa4",
+			"0;2980;1;f;f;f;7019;41d90995-5f5c-4123-b6b5-66f4dedef7e7",
+			"0;2979;1;t;f;f;7020;0030bf51-8404-4afc-96fe-e2546f544a6a",
+			"0;2978;1;f;f;f;7021;6ce3587b-ab96-4190-90d7-290195fcc2ad",
+			"0;2977;1;t;f;f;7022;eefa2d62-3ec4-4f6e-8f39-46c75b1e1776",
+			"0;2976;1;f;f;f;7023;98ab6e8c-3ee3-47ec-93a7-5e8f45bfb8e6",
+			"0;2975;1;t;f;f;7024;91205530-789c-4c7d-84e1-18f26484cc15",
+			"0;2974;1;f;f;f;7025;caad03e8-8392-405b-951e-2ebad0693bf9",
+			"0;2973;1;t;f;f;7026;c878ecc7-f549-4f45-b1e5-1279d780b2bb",
+			"0;2972;1;f;f;f;7027;a815072c-7970-4f21-a803-4c3a623f4093",
+			"0;2971;1;t;f;f;7028;2badfc0c-ab2c-483c-9623-8481d3422f37",
+			"0;2970;1;f;f;f;7029;38a6047f-8ac9-4356-b3cf-09b0e096b19c",
+			"0;2969;1;t;f;f;7030;0d90da00-ad53-4e83-883d-17e79ac592a9",
+			"0;2968;1;f;f;f;7031;776c4a69-cbbe-482e-92e1-3a65a3853bb6",
+			"0;2967;1;t;f;f;7032;46e68391-5adf-4c6e-86b4-1d0b85f54bb2",
+			"0;2966;1;f;f;f;7033;8ae56d74-6149-4cd7-9785-5cf3771f10a1",
+			"0;2965;1;t;f;f;7034;a7347739-f6f7-4bec-b28f-44e45bb68920",
+			"0;2964;1;t;f;f;7035;26147e00-750f-4d30-bdf9-3d2c372b3891",
+			"0;2963;1;f;f;f;7036;8f4d0a05-86c0-4b61-a4fe-2e58c7d7b902",
+			"0;2962;1;f;f;f;7037;d2d8917c-7e9f-4dfb-a334-9f9264651be5",
+			"0;2961;1;t;f;f;7038;6376b983-2bc8-4564-ae70-91619b09dc1d",
+			"0;2960;1;f;f;f;7039;6cd8a16d-24eb-46b3-93ad-5a694fd27b9a",
+			"0;2959;1;t;f;f;7040;83f459dd-6adf-44b0-abd5-ec91bad4fbe1",
+			"0;2958;1;f;f;f;7041;9ccb4569-9d5e-410b-bc6b-97b93914d11d",
+			"0;2957;1;t;f;f;7042;b22a8fd1-e3c7-417d-8f26-c88da82968ee",
+			"0;2956;1;f;f;f;7043;c3455a39-cdf4-4fb4-8535-f50727fcd4da",
+			"0;2955;1;t;f;f;7044;5557d205-2db8-4daf-a271-6157a5241a9d",
+			"0;2954;1;f;f;f;7045;a2ebfe0a-7c17-46c2-8b63-879a42c0dfb0",
+			"0;2953;1;t;f;f;7046;6cb8d798-b1ab-46a3-98c1-194fb49533e3",
+			"0;2952;1;f;f;f;7047;5f792464-94de-4952-aa37-f347f4289b18",
+			"0;2951;1;t;f;f;7048;5105b282-86a2-4f7c-a4b2-1a2163dbf67b",
+			"0;2950;1;f;f;f;7049;0826538b-1ee9-49d1-9067-edf42a4f33a8",
+			"0;2949;1;t;f;f;7050;6514f9da-fcf1-4c20-a3fe-96248002387f",
+			"0;2948;1;f;f;f;7051;0e14e6ce-65aa-4c18-8302-813a67914d87",
+			"0;2947;1;t;f;f;7052;7616d1e5-fe11-40d3-9538-2b61458a940f",
+			"0;2946;1;f;f;f;7053;6e64f992-34fd-475c-a053-bfa344cdf35a",
+			"0;2945;1;t;f;f;7054;bb85a5ae-92a4-4af4-8966-f8dc7799a5a5",
+			"0;2944;1;f;f;f;7055;1e97911f-0c10-4f77-bbf4-97a26e779fb9",
+			"0;2943;1;t;f;f;7056;0fd4ff8e-cca6-4b0b-b75c-3bdd7c315f2e",
+			"0;2942;1;f;f;f;7057;57ef8ba0-f695-4d90-916b-342bfc35fffb",
+			"0;2941;1;t;f;f;7058;794db01c-396d-44b9-a431-c17c8469ab23",
+			"0;2940;1;f;f;f;7059;f01f8434-b28c-4837-9a39-01f6f4a4470f",
+			"0;2939;1;t;f;f;7060;e99b6ed2-0cab-4c6c-b690-b3a41a0173cc",
+			"0;2938;1;f;f;f;7061;15cb332e-2c95-459d-b3e3-86292c547bc8",
+			"0;2937;1;t;f;f;7062;8e83d6a5-7b72-426c-913a-fa6f8d30728c",
+			"0;2936;1;f;f;f;7063;4b46d88e-aab2-45e5-b8e1-8230b8f9c3dc",
+			"0;2935;1;t;f;f;7064;f8b4ebf2-49eb-435d-a6a4-2381ce38abfa",
+			"0;2934;1;f;f;f;7065;e006801c-79b0-4525-bfa0-f0cce2b51ad1",
+			"0;2933;1;t;f;f;7066;92383994-5165-4056-b9e1-1ba99bbe6e56",
+			"0;2932;1;f;f;f;7067;d0aa950d-e81f-4745-a2a5-407893911ec7",
+			"0;2931;1;t;f;f;7068;9a80444e-6096-4ece-9809-3ce146a69dcb",
+			"0;2930;1;f;f;f;7069;2a86365d-cf8e-4e1b-83f3-c755b0acc233",
+			"0;2929;1;t;f;f;7070;aefd88d0-6246-4a87-b552-be16a7ef8565",
+			"0;2928;1;f;f;f;7071;eabe3b4e-8c6f-433d-b76e-81e121b2c713",
+			"0;2927;1;t;f;f;7072;7f026b74-5fb5-4e73-bab6-563cfc879df4",
+			"0;2926;1;f;f;f;7073;b0c62990-5a15-4fe6-8d64-e308a9738e49",
+			"0;2925;1;t;f;f;7074;89bdb11b-734f-4e7e-a4ef-801770fc0e2f",
+			"0;2924;1;f;f;f;7075;59d4d0ef-13ac-441f-9e31-81454be2590a",
+			"0;2923;1;t;f;f;7076;a6c9e75d-299b-4fd1-bc82-26235f107d08",
+			"0;2922;1;t;f;f;7077;e3f1752c-6688-4fe6-a3dc-a11bf333ff97",
+			"0;2921;1;f;f;f;7078;c182b8bd-23f4-450a-9d61-e599456d323b",
+			"0;2920;1;f;f;f;7079;0bd8f0da-5039-4221-b4ba-d9108d11b77a",
+			"0;2919;1;t;f;f;7080;d0b821e0-c729-423b-97ce-c4b8d02f982b",
+			"0;2918;1;t;f;f;7081;d6d3b233-1c03-494f-bc46-d9239cf77a42",
+			"0;2917;1;f;f;f;7082;50762090-55d0-436d-be2e-7465e9f5b6c9",
+			"0;2916;1;f;f;f;7083;c43e7fee-c1c0-49e8-a8a7-51d06dd02545",
+			"0;2915;1;t;f;f;7084;166b4556-7c5d-49ed-96e7-6ac20ff581ff",
+			"0;2914;1;t;f;f;7085;d519577f-ae68-4ab8-92cc-7d60a4fa148e",
+			"0;2913;1;f;f;f;7086;8e7944f6-11f7-4992-82ea-227ac0db9907",
+			"0;2912;1;f;f;f;7087;58f215a4-00f4-41cc-80e7-07e5ab51bfde",
+			"0;2911;1;t;f;f;7088;027913d5-fa05-4ec1-9e84-087a765fd5c4",
+			"0;2910;1;t;f;f;7089;3100d7eb-4f57-4a85-8205-779444f2472b",
+			"0;2909;1;f;f;f;7090;c64ea82a-a2c4-4e5f-b6d8-92ffa9555758",
+			"0;2908;1;f;f;f;7091;12ef1ebc-d6ce-46ad-b3ce-be21054e683e",
+			"0;2907;1;t;f;f;7092;92aaddea-ad52-4cee-8452-d279e6b8a8d9",
+			"0;2906;1;f;f;f;7093;815a4834-a4c8-4c4e-bc21-0359dfebf2b0",
+			"0;2905;1;t;f;f;7094;c4c0ba1f-cb56-4ac6-9b9c-86416bd2d1a2",
+			"0;2904;1;f;f;f;7095;2f0066ac-cd68-4b7c-bfb5-bd972e0e9510",
+			"0;2903;1;t;f;f;7096;5bff9e23-506d-492e-9b65-5681e03262ca",
+			"0;2902;1;f;f;f;7097;3557b1bd-4079-40b8-a0d1-d4dabb598ab7",
+			"0;2901;1;t;f;f;7098;1b0901c7-e415-452c-b818-62f44c93144e",
+			"0;2900;1;f;f;f;7099;e9ca23ef-217b-4422-8231-289f97e36ab1",
+			"0;2899;1;t;f;f;7100;7a133ab9-4b83-411a-bc50-3c40f15239ca",
+			"0;2898;1;f;f;f;7101;ab27dafa-5a1a-4f51-94bb-63b81b55ab7b",
+			"0;2897;1;t;f;f;7102;bd66ffbd-4b0b-4255-9d75-411d9f72bb73",
+			"0;2896;1;f;f;f;7103;4e4915d6-e7fa-4a00-b5b6-63f1cc8d80a5",
+			"0;2895;1;t;f;f;7104;8388ed64-c016-4780-afbb-33569a935646",
+			"0;2894;1;f;f;f;7105;60a54254-61a8-431c-95c2-3ba786bda6f3",
+			"0;2893;1;t;f;f;7106;f4da936c-c301-4a43-965d-fa7ce9e7e0e2",
+			"0;2892;1;f;f;f;7107;7457bd49-ea8e-4136-ab30-25ab085d0150",
+			"0;2891;1;t;f;f;7108;3b08fac6-2640-4ebc-a5e2-b03d2d1a2d3d",
+			"0;2890;1;f;f;f;7109;806e515c-a871-43e4-9d72-c7f2727bdcff",
+			"0;2889;1;t;f;f;7110;1e073022-c3a0-4f22-bb88-5d115a6fd655",
+			"0;2888;1;f;f;f;7111;732018e2-ce8d-4e4d-be68-675248559bd6",
+			"0;2887;1;t;f;f;7112;cc3b47fc-7b88-485b-96cd-d003df851aa4",
+			"0;2886;1;f;f;f;7113;a89f9ebe-6fd9-4892-9d1e-05f14cff720b",
+			"0;2885;1;t;f;f;7114;07bdc8fa-a989-49d9-90bf-6427d256c2eb",
+			"0;2884;1;t;f;f;7115;3b6f6a5c-a6ef-4dc0-a36b-00efb134ccfe",
+			"0;2883;1;f;f;f;7116;aee21b98-4b75-47f1-85ce-012b275e8a67",
+			"0;2882;1;f;f;f;7117;e865df73-a597-4809-b7d7-37b1753a9a6b",
+			"0;2881;1;t;f;f;7118;37007e9f-1b3c-4753-8e04-32b9e350facb",
+			"0;2880;1;f;f;f;7119;7111b57b-f6af-429b-94e7-62e27f3310f5",
+			"0;2879;1;t;f;f;7120;0c31d19d-1de0-488b-8bcb-6647e30a785a",
+			"0;2878;1;f;f;f;7121;24884096-a338-4ebd-9f5b-a6281a91f4fa",
+			"0;2877;1;t;f;f;7122;b84197d0-634f-451a-833a-db0533db4269",
+			"0;2876;1;f;f;f;7123;aaba5873-f9a8-4233-bd31-985af795faf7",
+			"0;2875;1;t;f;f;7124;5eb99200-dff5-4ae5-bf0b-3c0087841f1b",
+			"0;2874;1;t;f;f;7125;d1f46fb8-59b5-4c1e-8c6f-5012b4448bfb",
+			"0;2873;1;f;f;f;7126;6dc65a70-ec1e-41fa-91e3-20cda495b28a",
+			"0;2872;1;f;f;f;7127;df94bd2d-ed17-4667-8436-fecdb03f6bda",
+			"0;2871;1;t;f;f;7128;8510cb73-2bb2-43b7-8157-628d4f3a2785",
+			"0;2870;1;f;f;f;7129;cf31e522-d565-4fa1-b7f9-52c046671163",
+			"0;2869;1;t;f;f;7130;9969cb8f-3a17-40a0-bc47-a9554936b94b",
+			"0;2868;1;f;f;f;7131;2bbe4d0c-1fc0-4757-9118-1bccf21fe5c1",
+			"0;2867;1;t;f;f;7132;5eb520d3-5b36-4fc4-b670-b0ef524f0b8e",
+			"0;2866;1;f;f;f;7133;be0f3085-cc1e-4b94-afbe-e1e0ff996dae",
+			"0;2865;1;t;f;f;7134;fdd07fd1-03ef-431f-9db9-ce8977133c86",
+			"0;2864;1;f;f;f;7135;79cdb759-bdc6-4a39-9845-2411086f4dad",
+			"0;2863;1;t;f;f;7136;c2ef7491-bb58-4409-b3c7-6ec30435d47f",
+			"0;2862;1;f;f;f;7137;90ba79ec-c04b-4260-90ea-b8421fbbbd04",
+			"0;2861;1;t;f;f;7138;d7e15cdd-90bf-4596-9823-dfd92eebb4c4",
+			"0;2860;1;f;f;f;7139;2250cc8e-03f5-4636-ac12-390ac52b2a7f",
+			"0;2859;1;t;f;f;7140;ef0e645f-6429-4f36-9319-a74169c9b9cf",
+			"0;2858;1;f;f;f;7141;cdb08285-6fae-489f-9a5b-89edc4d303f9",
+			"0;2857;1;t;f;f;7142;c468f187-27a9-477f-9768-cad754e88f0c",
+			"0;2856;1;f;f;f;7143;a6565133-2e33-42f0-bb03-e180247331da",
+			"0;2855;1;t;f;f;7144;5e0e6446-a4d6-4b1a-b4e6-0b325536016d",
+			"0;2854;1;f;f;f;7145;878c9d6a-36f5-4cef-933f-d5a7dfc511af",
+			"0;2853;1;t;f;f;7146;e45021b3-0903-450c-bb83-eafbb1017a43",
+			"0;2852;1;f;f;f;7147;1dc5c92b-153c-4afe-ab3f-337a866fd0ad",
+			"0;2851;1;t;f;f;7148;f0202bcb-51df-4f78-8479-52a77680cb37",
+			"0;2850;1;f;f;f;7149;2f4a4e8a-8ee0-4693-a61a-3416616bc341",
+			"0;2849;1;t;f;f;7150;0add4534-8bbd-40bd-aa2c-0d5c417953bc",
+			"0;2848;1;f;f;f;7151;f23cf11a-5623-4da1-ac67-2e751bfa698a",
+			"0;2847;1;t;f;f;7152;8a3c849e-51ec-4237-a859-32c82fad9494",
+			"0;2846;1;f;f;f;7153;653d7e8a-2ecf-40b7-830e-cb1c0577f8b0",
+			"0;2845;1;t;f;f;7154;5463f0fa-609e-4bb6-a475-956e96c35c0c",
+			"0;2844;1;f;f;f;7155;b4f3005a-3225-4010-a1cf-a7cf05963256",
+			"0;2843;1;t;f;f;7156;585e6326-f4e1-4952-ba70-78dd6e58e0d6",
+			"0;2842;1;f;f;f;7157;6ebc5ad0-6efb-42c7-8505-f10eda76159e",
+			"0;2841;1;t;f;f;7158;9acd542d-630e-4b8c-b99a-95317426b3c9",
+			"0;2840;1;f;f;f;7159;6806b557-5a4f-48f5-b398-39d11678ccb9",
+			"0;2839;1;t;f;f;7160;94943376-fbe9-41f8-8f71-1cf637d1bef8",
+			"0;2838;1;f;f;f;7161;60ab7de8-a1fd-4d25-b7a4-a6e06ede226a",
+			"0;2837;1;t;f;f;7162;d583dd1a-c1fe-4395-9e5a-4c4673d3d7f0",
+			"0;2836;1;f;f;f;7163;f90af31c-f97a-455b-9a60-d97a2b7d756f",
+			"0;2835;1;t;f;f;7164;e4e06252-fb93-4859-bd71-2ee21f088ad3",
+			"0;2834;1;f;f;f;7165;a20a02d5-71fc-48cc-88a1-c8fdedc9b56b",
+			"0;2833;1;t;f;f;7166;d4fcf6dd-4b90-4a69-aceb-e152dc06509b",
+			"0;2832;1;f;f;f;7167;b2e50074-3a52-45f7-a9bc-370fd46b6e21",
+			"0;2831;1;t;f;f;7168;e3ebb6f8-9798-4787-85d8-9e3ae2df2d68",
+			"0;2830;1;f;f;f;7169;f1547af3-7046-4e40-ad1f-d1c087d5e5bc",
+			"0;2829;1;t;f;f;7170;137954e0-d464-453b-bcef-41acb626dcff",
+			"0;2828;1;f;f;f;7171;811a514d-cc14-4eaa-b0a8-cab41beedc64",
+			"0;2827;1;t;f;f;7172;29a0f877-15fd-4c1c-80bb-3924b5f994e1",
+			"0;2826;1;f;f;f;7173;a68ff72d-5da5-47df-aba6-5aa06ae3f69a",
+			"0;2825;1;t;f;f;7174;3caf2e40-ed51-4b7b-9c53-b584d15ae8f2",
+			"0;2824;1;f;f;f;7175;0923fd3b-b269-408c-b098-54ef6d8d0f43",
+			"0;2823;1;t;f;f;7176;2a252abd-f8f4-4e12-a978-92387c4ed85e",
+			"0;2822;1;f;f;f;7177;6ed0a272-f2ce-4b9c-80e5-221455cb9412",
+			"0;2821;1;t;f;f;7178;5430d9d1-422f-4a2f-ab41-afe6b9c93ec6",
+			"0;2820;1;f;f;f;7179;659d6104-0264-4678-800b-80a6dd409090",
+			"0;2819;1;t;f;f;7180;680ac101-13c2-49ed-a690-b1a8e06cc922",
+			"0;2818;1;f;f;f;7181;5ce6cfec-b139-4fd2-9df3-47839187d131",
+			"0;2817;1;t;f;f;7182;1cc8d346-a04e-449c-8e4d-d02d5763c14f",
+			"0;2816;1;f;f;f;7183;7c42bdc2-d3c8-4a39-bed2-198bec597c07",
+			"0;2815;1;t;f;f;7184;690da3a7-887a-4749-9f15-282127c6799f",
+			"0;2814;1;f;f;f;7185;cc9c8add-5f02-46ba-bb51-1fa838911268",
+			"0;2813;1;t;f;f;7186;173c8221-ab68-4fb7-a291-be5a76c75e7a",
+			"0;2812;1;f;f;f;7187;3e9a3713-b68b-474b-a5d6-5fb5c0b772fe",
+			"0;2811;1;t;f;f;7188;c5e8bbc7-2303-4588-8261-80483a8a9dd7",
+			"0;2810;1;f;f;f;7189;78d594f8-9b8c-47d6-8474-54819f9a30af",
+			"0;2809;1;t;f;f;7190;51035e29-9356-42b4-b5f8-ae8c05ab1a50",
+			"0;2808;1;f;f;f;7191;2808f44e-ed2e-4159-af4f-7a7a5236b2d1",
+			"0;2807;1;t;f;f;7192;9581153e-4619-4a6f-bdfb-cebf2933cd89",
+			"0;2806;1;f;f;f;7193;4ac2a7d5-7a2f-45bb-937d-3233a9b4df4e",
+			"0;2805;1;t;f;f;7194;f7b2875b-56e2-4986-abfa-dfd5b57912c9",
+			"0;2804;1;f;f;f;7195;e5046735-8a95-4caf-814a-5e4763bfae25",
+			"0;2803;1;t;f;f;7196;d7eb9503-0cd6-4441-954e-4c07ff06d7a0",
+			"0;2802;1;f;f;f;7197;690f0c88-3bb4-4a3e-b8ce-90a2448fedbc",
+			"0;2801;1;t;f;f;7198;63f86e34-315e-4a78-952c-f65e309eaa73",
+			"0;2800;1;f;f;f;7199;805a0948-7d5a-4eb9-a311-e3aec2a71270",
+			"0;2799;1;t;f;f;7200;b6213b8c-939a-427c-b3dc-ddaebc26236e",
+			"0;2798;1;f;f;f;7201;fa992b82-bbc5-4af3-89a5-e5f5dab56688",
+			"0;2797;1;t;f;f;7202;fc45b1a9-d3c0-48f9-9033-ce9856e850ac",
+			"0;2796;1;f;f;f;7203;e379e253-8280-43e1-9e78-ee827e3f2376",
+			"0;2795;1;t;f;f;7204;c987a2e8-5407-4989-90fd-d113e3208ef9",
+			"0;2794;1;f;f;f;7205;e0398b72-fd38-4523-96b2-e584addfafe4",
+			"0;2793;1;t;f;f;7206;9a18eec1-75ae-446c-a2f0-c6d3e947a526",
+			"0;2792;1;f;f;f;7207;543e3d86-6527-4472-a130-f08ec08b23ff",
+			"0;2791;1;t;f;f;7208;19a76e25-4915-4ce2-a371-63e2726fe08f",
+			"0;2790;1;f;f;f;7209;615a149d-9cc7-4b6e-9d7f-1ace568fb2a0",
+			"0;2789;1;t;f;f;7210;2520929d-3888-4278-a15f-155081f60e69",
+			"0;2788;1;f;f;f;7211;a583515b-ec16-4af4-9423-9cec4e3c2d0c",
+			"0;2787;1;t;f;f;7212;9330f9f1-5951-46c7-a202-5fffb2470704",
+			"0;2786;1;f;f;f;7213;4fab2f4a-10f6-43eb-9e76-8766f1de7e94",
+			"0;2785;1;t;f;f;7214;ba698653-b3ea-439e-bf91-52cfa9415161",
+			"0;2784;1;f;f;f;7215;9be4db90-25da-4251-a532-64e4981ec488",
+			"0;2783;1;t;f;f;7216;12e5a126-8e4f-4475-a4cc-10bdf2e97aec",
+			"0;2782;1;f;f;f;7217;46bb82a9-42ef-46a9-bc62-131a900d897e",
+			"0;2781;1;t;f;f;7218;8d4dce95-5023-4231-ad23-9fea5766cb3a",
+			"0;2780;1;f;f;f;7219;45a12a3e-5ff8-4596-ba19-50f31a7ddb89",
+			"0;2779;1;t;f;f;7220;526fa62d-08f4-4b92-961e-b96227177d4e",
+			"0;2778;1;f;f;f;7221;deed52ea-42f6-43ec-a572-a376a5ecc2ef",
+			"0;2777;1;t;f;f;7222;d12677ab-abe6-4661-8544-86f6c4144f60",
+			"0;2776;1;f;f;f;7223;09c6357d-76d8-444e-8834-2dfa52f47747",
+			"0;2775;1;t;f;f;7224;4cd941bd-6d76-4203-bb39-55f806cfa3a5",
+			"0;2774;1;f;f;f;7225;a44e9056-5783-4628-96b0-72bd4ecd5d53",
+			"0;2773;1;t;f;f;7226;486a933b-d85e-4cca-9229-760e743a27cd",
+			"0;2772;1;f;f;f;7227;55020dfe-0d6f-4ccb-9a60-03b903310d3c",
+			"0;2771;1;t;f;f;7228;a76315c4-e23b-4b85-b4a3-61f5033667dc",
+			"0;2770;1;f;f;f;7229;bc474d35-e8ba-48fe-906b-be6fddb02349",
+			"0;2769;1;t;f;f;7230;f42ce3a0-0a67-4d4a-9d8e-6887e91b132e",
+			"0;2768;1;f;f;f;7231;ff374855-a63f-4392-86cd-2d824f6c3d30",
+			"0;2767;1;t;f;f;7232;a4f32b0d-9f22-4393-8be0-9809d14e752e",
+			"0;2766;1;f;f;f;7233;4f46a57e-6a9c-44ef-bf58-209a3f76f990",
+			"0;2765;1;t;f;f;7234;5764cc7d-1782-413a-bb6d-17119c468362",
+			"0;2764;1;f;f;f;7235;04cba2d0-d378-43e5-8848-9470fe0e0927",
+			"0;2763;1;t;f;f;7236;7023944b-ed72-4b35-b9be-141ffc6b4ae3",
+			"0;2762;1;f;f;f;7237;2ec199e2-191a-49f8-8732-9aedf67c4829",
+			"0;2761;1;t;f;f;7238;2dd2bad7-df18-4d55-b09d-b11b5091f9c2",
+			"0;2760;1;t;f;f;7239;717fc9e5-bd63-4b24-acb0-930362013a6e",
+			"0;2759;1;f;f;f;7240;a8c3b498-f245-45a6-a778-a05d81e2531c",
+			"0;2758;1;f;f;f;7241;30aa45e6-a69e-4fd5-84e1-31d3470c7cef",
+			"0;2757;1;t;f;f;7242;ff2e33e1-bfa9-4cea-8d15-3e02c82d1158",
+			"0;2756;1;t;f;f;7243;57387fbb-2418-4565-96ef-7623c50ab36b",
+			"0;2755;1;f;f;f;7244;993c94fe-a5e2-4a94-a6e5-25f088f1d378",
+			"0;2754;1;f;f;f;7245;7747e78b-72f4-4ce7-bf55-bd34198c86f2",
+			"0;2753;1;t;f;f;7246;13613b65-cc38-4dc0-b4ef-fcd7b7598a3e",
+			"0;2752;1;t;f;f;7247;e0d55879-e8a2-4b2e-a2b8-6c328afd41ac",
+			"0;2751;1;f;f;f;7248;c7ca11f2-6c94-4b81-992a-4920857d46a7",
+			"0;2750;1;f;f;f;7249;25f424d9-d356-4598-8bd5-dd763fb0e689",
+			"0;2749;1;t;f;f;7250;f8b40209-55cc-4a62-9eb9-3506b6af1cda",
+			"0;2748;1;f;f;f;7251;656be1bd-fe22-41c8-b163-0e7f688ff078",
+			"0;2747;1;t;f;f;7252;d1bf8e72-5054-466b-aca2-95b7c1c8efe7",
+			"0;2746;1;f;f;f;7253;7a1ae155-c195-43dc-8569-a24030086e35",
+			"0;2745;1;t;f;f;7254;67e6ee87-5ea1-453a-9e43-cd149d5aa07f",
+			"0;2744;1;f;f;f;7255;30b56cb9-1686-4cbd-8cea-e21a80063d21",
+			"0;2743;1;t;f;f;7256;b731d2ea-19a1-446a-8514-658a052dc5a8",
+			"0;2742;1;f;f;f;7257;05d30a61-92ff-4cfb-bb48-d5644d7706d1",
+			"0;2741;1;t;f;f;7258;dacb0a14-12f6-4927-8643-08be90411aa0",
+			"0;2740;1;t;f;f;7259;3545aa88-38b8-448c-89c1-c1f67f9b9b0c",
+			"0;2739;1;f;f;f;7260;717e5d9f-afec-452f-bbcd-19c54cd711aa",
+			"0;2738;1;f;f;f;7261;263c498d-a975-4a35-bf86-da480eb0568f",
+			"0;2737;1;t;f;f;7262;229cbf83-481c-4a0d-a4a8-ff1516795466",
+			"0;2736;1;t;f;f;7263;10371d02-89b6-4746-9692-96f7a1c4a073",
+			"0;2735;1;f;f;f;7264;e56f2938-9be1-47a0-9255-0d65f5cb6668",
+			"0;2734;1;f;f;f;7265;aaae5cf9-797a-43a5-afec-862d2d374717",
+			"0;2733;1;t;f;f;7266;e046bbe0-83ce-4f1a-a22a-dfa849cb5eeb",
+			"0;2732;1;t;f;f;7267;2681ae29-8f2b-4407-99b0-6307c58d927d",
+			"0;2731;1;f;f;f;7268;0d222bcf-a02c-47d1-a958-815aac8f294b",
+			"0;2730;1;f;f;f;7269;291f190c-1a20-460a-9dba-01d24913841b",
+			"0;2729;1;t;f;f;7270;8482eb3b-94b0-4a77-9fb8-a5e910c57f11",
+			"0;2728;1;f;f;f;7271;bf61c954-4248-4d64-9383-b33b00f3faeb",
+			"0;2727;1;t;f;f;7272;4999d108-e9a1-4caa-b1f7-57b3abf63739",
+			"0;2726;1;f;f;f;7273;ff0b3b0f-63e4-4560-a782-635df277a406",
+			"0;2725;1;t;f;f;7274;514607e2-7cd1-40de-90a1-38ee3af753d3",
+			"0;2724;1;f;f;f;7275;7f8f3722-de4b-40ec-ba8f-148c65d04ad6",
+			"0;2723;1;t;f;f;7276;91b95f33-03d7-4e2a-9034-321a65b2aa93",
+			"0;2722;1;f;f;f;7277;e511305b-fb03-4885-b6d7-7e02daead1e1",
+			"0;2721;1;t;f;f;7278;0ed7a63e-aea6-4c0f-abab-7f61c02b9494",
+			"0;2720;1;f;f;f;7279;a8f2308c-135e-4b19-b8f2-aa2575e2aa04",
+			"0;2719;1;t;f;f;7280;1593607b-462b-48c0-82dc-faa622c339ee",
+			"0;2718;1;f;f;f;7281;38b6973a-d770-45aa-8007-1153ebf563c5",
+			"0;2717;1;t;f;f;7282;9d72b84f-aafa-4c6a-812e-cdc86d4df3fc",
+			"0;2716;1;f;f;f;7283;7d51844e-2ac2-4bcb-83cb-21b6d08eb56a",
+			"0;2715;1;t;f;f;7284;3c765471-763a-46bf-9d19-4ed7e4cca994",
+			"0;2714;1;f;f;f;7285;f2b6bb39-8437-48c0-8e28-8b7f8a4d00d0",
+			"0;2713;1;t;f;f;7286;b87bad0a-a255-4bdf-bbeb-fb2ae3fff277",
+			"0;2712;1;f;f;f;7287;58c5a03f-f03a-431b-9d8d-d9bb4177ea51",
+			"0;2711;1;t;f;f;7288;61af81e5-74c8-4183-83be-89e8c07446e5",
+			"0;2710;1;f;f;f;7289;19ca61a6-a35d-4c8d-b7bf-27ab03332380",
+			"0;2709;1;t;f;f;7290;22227c37-891f-4394-8eba-5defc6de3847",
+			"0;2708;1;f;f;f;7291;76535fc7-8b4d-4058-aad9-03b62ffeb772",
+			"0;2707;1;t;f;f;7292;5d92663a-1a4e-4da5-b26c-20bdc4a20673",
+			"0;2706;1;f;f;f;7293;98236d99-2491-41df-bb70-e40eb44c2e28",
+			"0;2705;1;t;f;f;7294;9db732b5-e870-4645-bcd8-fd10d9c0e819",
+			"0;2704;1;f;f;f;7295;1a4f3d27-915b-442d-ac5b-6fadd98e84fc",
+			"0;2703;1;t;f;f;7296;7ece1d24-5ae8-49aa-b5e7-faa176520d2c",
+			"0;2702;1;f;f;f;7297;5405c35f-6d92-42f9-8be2-db055707f51b",
+			"0;2701;1;t;f;f;7298;46cb75c7-ed18-4b43-8c03-19bd79b0f4f5",
+			"0;2700;1;f;f;f;7299;830ad84b-1609-457f-8d2f-86f178dd145a",
+			"0;2699;1;t;f;f;7300;1cc1622b-7afe-4306-b232-8857adeee370",
+			"0;2698;1;f;f;f;7301;ad2c6740-5afb-413d-9b95-85d06a95e04e",
+			"0;2697;1;t;f;f;7302;036a1e92-f853-4e71-bb7c-82d96c2c7bea",
+			"0;2696;1;f;f;f;7303;aa806c96-5869-43d7-9fb9-db014e86ff45",
+			"0;2695;1;t;f;f;7304;e5663be6-a852-4dad-a554-5aa2b4f1af16",
+			"0;2694;1;f;f;f;7305;78c8abd5-7412-4733-a7a8-20f43f196610",
+			"0;2693;1;t;f;f;7306;264e7ec8-7406-4e5d-b169-929f11ec098e",
+			"0;2692;1;f;f;f;7307;1196bb5c-4b3e-4a67-bf1f-efadd3b8fd80",
+			"0;2691;1;t;f;f;7308;8a8cb77a-74cc-451e-b68f-95aff904a8f9",
+			"0;2690;1;f;f;f;7309;fdd9af8d-e8fd-4c5a-9c58-4ec5a6bb306a",
+			"0;2689;1;t;f;f;7310;bb5506b1-7376-4d86-9a2f-f647329556fb",
+			"0;2688;1;f;f;f;7311;b97769a7-3b7a-4334-90c4-2938ace4af69",
+			"0;2687;1;t;f;f;7312;f9d5d173-6cf9-4a6e-af29-fd8ff23917a2",
+			"0;2686;1;f;f;f;7313;5f1ad98d-b4d6-45d8-b675-473ec11964fc",
+			"0;2685;1;t;f;f;7314;d8f96732-a38a-4679-9e37-db6ec4efeb0f",
+			"0;2684;1;f;f;f;7315;64ff4364-d80c-42b2-b821-8264fc10ed5d",
+			"0;2683;1;t;f;f;7316;73768c9a-39f1-449d-ba73-0dd0676060b9",
+			"0;2682;1;f;f;f;7317;5f346b3a-d37e-4228-9586-f6ba73b31c9e",
+			"0;2681;1;t;f;f;7318;8afb10dd-4b1a-4a5e-a698-d236e11fcc38",
+			"0;2680;1;f;f;f;7319;a05ea240-1b7f-414d-9b6a-ddc3c37649f8",
+			"0;2679;1;t;f;f;7320;bc7bd933-150f-468b-b475-a8b2dad15cf7",
+			"0;2678;1;f;f;f;7321;e6be58ff-0b5b-4aa6-bd6b-abf087f7c42a",
+			"0;2677;1;t;f;f;7322;f5263767-e3a5-4bf2-9e4b-c2c036fb6dc9",
+			"0;2676;1;f;f;f;7323;bae6e1f0-3438-4d4a-b4cd-907b9ff62a2f",
+			"0;2675;1;t;f;f;7324;bb21a5d8-bfa1-4d58-bea5-4f4dd175dbd9",
+			"0;2674;1;f;f;f;7325;2980bf38-f0ad-461b-b607-95a93085e83b",
+			"0;2673;1;t;f;f;7326;df373baf-2264-4137-ad89-7e9fbf7d745d",
+			"0;2672;1;f;f;f;7327;033ad5ca-e548-4ba5-af63-3a1fb0742f8b",
+			"0;2671;1;t;f;f;7328;e7ac99fa-91f9-4328-b7f3-63ee1d1b79a8",
+			"0;2670;1;f;f;f;7329;141ef7a7-e969-4e39-9a17-227802a3c7b1",
+			"0;2669;1;t;f;f;7330;a016f554-134f-4251-8261-09104901cc7f",
+			"0;2668;1;f;f;f;7331;1f4dfc2f-1dc0-4b60-b85f-9495103a75f2",
+			"0;2667;1;t;f;f;7332;e31a23f9-2c18-472d-996b-cbf51fb5e236",
+			"0;2666;1;f;f;f;7333;c03742e1-185c-45ab-9409-fc387f6eecd9",
+			"0;2665;1;t;f;f;7334;dbf0095a-0237-4280-9322-3f974a80197f",
+			"0;2664;1;f;f;f;7335;64d664e2-6639-4e5a-85a0-8edd2b528b16",
+			"0;2663;1;t;f;f;7336;c8356a90-5845-4cf5-a056-33dec9b3146e",
+			"0;2662;1;t;f;f;7337;9c672229-4a6b-4b88-8cff-852e123b2dad",
+			"0;2661;1;f;f;f;7338;921cea63-1f6d-47fb-8f56-c4d0e98548ce",
+			"0;2660;1;f;f;f;7339;f6e7811a-7a80-4b30-a665-6805a3f957ce",
+			"0;2659;1;t;f;f;7340;05e26e05-6e02-43a2-a9a4-06fd5900387f",
+			"0;2658;1;t;f;f;7341;4d7b728e-cf97-49b8-b5a0-67fdc22145d2",
+			"0;2657;1;f;f;f;7342;fd88a2e8-6f27-4ffd-8324-073703ca9a4a",
+			"0;2656;1;f;f;f;7343;c47f9967-b80e-42e1-8afe-b89b5c5e59e9",
+			"0;2655;1;t;f;f;7344;b2df5cf3-09e4-4973-aa59-cc6869abf9de",
+			"0;2654;1;f;f;f;7345;663d7839-6fbb-4a55-b69c-2e44d84961d5",
+			"0;2653;1;t;f;f;7346;2530115c-6b8a-4dbb-9ee0-36e7c4f3c78d",
+			"0;2652;1;f;f;f;7347;a1a56b96-b478-4bc1-bd9f-da1c06806b42",
+			"0;2651;1;t;f;f;7348;18cc404f-442d-400a-ab2d-1234b9e3e8e9",
+			"0;2650;1;f;f;f;7349;b3818163-44ee-41d7-a19e-c595aaa7c9ce",
+			"0;2649;1;t;f;f;7350;a7c8cc18-f010-40ca-b766-55d160f224e4",
+			"0;2648;1;t;f;f;7351;65cd6633-218a-4a01-9686-ff049bc6b4bd",
+			"0;2647;1;f;f;f;7352;cdbd8393-bf5b-438b-9d1b-80636ebd98d8",
+			"0;2646;1;f;f;f;7353;c3368193-48ca-490f-9608-9e48f01840cd",
+			"0;2645;1;t;f;f;7354;d9fa6adc-f671-46fe-bd19-a5115d17a4e8",
+			"0;2644;1;t;f;f;7355;cf8ba68c-51f7-4e52-8638-33c2c8c16fb4",
+			"0;2643;1;f;f;f;7356;9fe912e3-6a95-4a31-912c-b036d55cf622",
+			"0;2642;1;f;f;f;7357;77f6ce16-4d04-4742-9d3a-f8df75082451",
+			"0;2641;1;t;f;f;7358;36611521-b425-4a0e-bab3-bf746fee5a8a",
+			"0;2640;1;f;f;f;7359;d7297bcf-ca00-44df-9a05-f5e07af3f3ca",
+			"0;2639;1;t;f;f;7360;12f921db-b1e8-4763-8c79-506524ddc809",
+			"0;2638;1;f;f;f;7361;de7174c0-da89-4ba0-87e2-a49b16a21a89",
+			"0;2637;1;t;f;f;7362;cd61cd9a-6946-4d61-b6f5-6776cf0179fc",
+			"0;2636;1;f;f;f;7363;fc27fa7e-658c-43e6-b21b-cb3d73c406b6",
+			"0;2635;1;t;f;f;7364;3ff5d70f-f200-4f67-aa37-73752d67f123",
+			"0;2634;1;f;f;f;7365;d76024b2-4e81-467f-a15b-c0b9c2ba2606",
+			"0;2633;1;t;f;f;7366;82add2a7-e543-482e-9b94-e0e37523146c",
+			"0;2632;1;f;f;f;7367;147fb244-3f00-4bfe-a2bc-898e6d40db4c",
+			"0;2631;1;t;f;f;7368;9b9de0ab-79b3-4217-9948-07d3a77a7ce6",
+			"0;2630;1;f;f;f;7369;729750a4-3524-4e8a-acb8-3af426392364",
+			"0;2629;1;t;f;f;7370;756bfd1f-197a-486c-aa8b-00af6b77cc21",
+			"0;2628;1;f;f;f;7371;57b0e2e3-ed84-4d7a-826a-ee07718a5910",
+			"0;2627;1;t;f;f;7372;85cf698c-9d6e-413d-87ea-b7568c44d4d7",
+			"0;2626;1;t;f;f;7373;ac87dbd1-8ab2-4135-b5af-a457fc5d436d",
+			"0;2625;1;f;f;f;7374;1820f9e7-3ae7-4c53-8948-e9d1cbf012df",
+			"0;2624;1;f;f;f;7375;2dd7c56b-6c10-4401-8d3c-fafa39e9152c",
+			"0;2623;1;t;f;f;7376;12f3dc45-493d-48c0-9dd7-3d97c96aef9e",
+			"0;2622;1;f;f;f;7377;b35c18f5-c4ea-4235-a70d-ad3e843055fa",
+			"0;2621;1;t;f;f;7378;6198aee0-c0d7-4c5b-a9ac-a23e7cba4448",
+			"0;2620;1;f;f;f;7379;33a5fa87-4b88-43f4-88ef-8e03f309b0c6",
+			"0;2619;1;t;f;f;7380;68a49603-790e-4a4b-9f4e-994fae4c3787",
+			"0;2618;1;f;f;f;7381;d00a06f8-9626-4bf0-989c-8414502f73d5",
+			"0;2617;1;t;f;f;7382;56154664-23bc-4d35-8c22-e6fe69b56d2d",
+			"0;2616;1;f;f;f;7383;e9ffaa87-e951-4281-82e1-bed3f6dcbdde",
+			"0;2615;1;t;f;f;7384;14e2bf74-89fe-4f84-baa7-ffbb7c798ff2",
+			"0;2614;1;f;f;f;7385;6f1987fc-cf25-45c0-bd9c-9612ebe51a50",
+			"0;2613;1;t;f;f;7386;846c417a-3061-4068-9815-a0b933d3c1c4",
+			"0;2612;1;f;f;f;7387;57430e73-bb61-4a87-847e-05041e360bf9",
+			"0;2611;1;t;f;f;7388;81678403-db3f-495e-99ba-da92001a5597",
+			"0;2610;1;f;f;f;7389;6687ce03-fefe-4824-8b02-2032baba93ae",
+			"0;2609;1;t;f;f;7390;322123a5-155e-4339-810c-4a2cbebfa5e9",
+			"0;2608;1;f;f;f;7391;1eade60c-9501-41f5-81e8-3c04059e2259",
+			"0;2607;1;t;f;f;7392;55fa97cd-a14c-44d5-b152-faa4c18527ff",
+			"0;2606;1;f;f;f;7393;d658d752-4f29-4eb3-8fe9-ba1e2a3705bc",
+			"0;2605;1;t;f;f;7394;8c7dc27d-2a00-46eb-a546-7e2fa34870be",
+			"0;2604;1;t;f;f;7395;8aab4fc2-0dc0-4923-8e59-f26c3d0143e8",
+			"0;2603;1;f;f;f;7396;aa4a5221-38b3-4a46-acb7-ac1452a752a4",
+			"0;2602;1;f;f;f;7397;4e809349-bab3-4895-bb4c-d18686b0ca4c",
+			"0;2601;1;t;f;f;7398;dcaa1dc3-b836-44cc-9135-f5fec86f70bb",
+			"0;2600;1;f;f;f;7399;0e46c64b-fe79-45f9-847f-53549a410a5e",
+			"0;2599;1;t;f;f;7400;4fd54d21-2d35-423b-a7ea-b70122ce0b8a",
+			"0;2598;1;f;f;f;7401;e62e1e69-9944-411c-a904-65e333c6179a",
+			"0;2597;1;t;f;f;7402;447be62f-8d90-4f33-ba45-9079fd1c14a1",
+			"0;2596;1;t;f;f;7403;c263fbc7-07c3-4589-a0d7-afabc163c6ba",
+			"0;2595;1;f;f;f;7404;aac740c8-ad76-4271-8ee0-469848796309",
+			"0;2594;1;f;f;f;7405;c714ec24-c31f-412b-8685-91ac2eaac44c",
+			"0;2593;1;t;f;f;7406;57ba6156-1f3b-40f5-9dc8-e9f31d8382de",
+			"0;2592;1;t;f;f;7407;c2dad4a6-9063-4639-96b0-dfe0f5133ae5",
+			"0;2591;1;f;f;f;7408;08b50134-e775-466b-b3d1-8f374be0276a",
+			"0;2590;1;f;f;f;7409;d76ca304-1206-4c36-aac3-00afb3cd1bc5",
+			"0;2589;1;t;f;f;7410;10abd2e0-55d8-43f3-a7c5-6181c094a08e",
+			"0;2588;1;t;f;f;7411;916e7629-a703-4e65-bb8c-26e632d2c7b9",
+			"0;2587;1;f;f;f;7412;30e06f27-ffdf-48b5-b524-19fd332679ad",
+			"0;2586;1;f;f;f;7413;a93b52f3-2766-4482-87a2-0bc5e3140ea5",
+			"0;2585;1;t;f;f;7414;b0ad5bdb-74ea-4c97-a3a4-cfd6a91c4b4c",
+			"0;2584;1;t;f;f;7415;70fb77cb-294f-4de2-a72d-cf2c31717231",
+			"0;2583;1;f;f;f;7416;4a4b13ee-ba73-4c7a-9fcf-81a8fc927313",
+			"0;2582;1;f;f;f;7417;5c7b3f94-30cb-438a-af37-4473f0c91696",
+			"0;2581;1;t;f;f;7418;a07b6c65-e2dc-4a1e-898a-4be9d13004a2",
+			"0;2580;1;t;f;f;7419;be5c3f71-a6b9-4e59-9d66-c9fff999267c",
+			"0;2579;1;f;f;f;7420;96ad8d4b-838c-4c0f-b9dd-1ad782f3710f",
+			"0;2578;1;f;f;f;7421;086a0705-d85d-46f6-97b5-3e29c9768dc7",
+			"0;2577;1;t;f;f;7422;25dee78a-901e-40eb-ba0e-7b9e2a6dcb9d",
+			"0;2576;1;f;f;f;7423;f6a3ffd2-aea7-426b-9aa3-a55d237bc459",
+			"0;2575;1;t;f;f;7424;b061a13f-ea1c-40a1-a599-c743651f00e2",
+			"0;2574;1;f;f;f;7425;87e76d66-492b-4f11-a633-9bc6c95cdf61",
+			"0;2573;1;t;f;f;7426;1979aa64-9ae3-4e1b-ae95-5975a711df69",
+			"0;2572;1;f;f;f;7427;c6a7a57a-1169-46c3-b429-4c8e8ac9b5a3",
+			"0;2571;1;t;f;f;7428;20ce14d7-668c-4e96-b534-52f10837400b",
+			"0;2570;1;f;f;f;7429;e22f45f7-028f-4773-970c-aac2f91450a9",
+			"0;2569;1;t;f;f;7430;e6fdb82e-ecfa-4fd8-9857-7e967fd01c12",
+			"0;2568;1;f;f;f;7431;0dc4d342-a4a7-434b-9d57-a9b1aa506440",
+			"0;2567;1;t;f;f;7432;58f67941-81c2-4298-ba2d-8a464ce50dca",
+			"0;2566;1;f;f;f;7433;2c5d186a-0706-45aa-9626-cd7b9005d90f",
+			"0;2565;1;t;f;f;7434;baae55d3-55e9-4f72-95a7-7ef74a7aab6b",
+			"0;2564;1;f;f;f;7435;3712cde9-9d15-4265-bce4-c0a46096ff5b",
+			"0;2563;1;t;f;f;7436;6dbf7142-b9f4-4a6a-8567-e0e2273e109e",
+			"0;2562;1;f;f;f;7437;4390c883-ef16-4b75-bc40-e86ee7079369",
+			"0;2561;1;t;f;f;7438;5fe16c87-b921-4ed4-af95-07ae0542ba2c",
+			"0;2560;1;f;f;f;7439;1b07416d-bb9a-43e0-9b35-4d9f476b1ec3",
+			"0;2559;1;t;f;f;7440;5b6adc6c-e922-4f43-81c3-f601321424b3",
+			"0;2558;1;f;f;f;7441;c65189db-809d-42ae-b8c0-67e4669e3699",
+			"0;2557;1;t;f;f;7442;0c272df7-3888-4cca-bbd5-ee0351e7089c",
+			"0;2556;1;f;f;f;7443;2e352985-ce97-404b-99f0-a33160c294e0",
+			"0;2555;1;t;f;f;7444;45d86719-173b-4075-9d49-036d2180af06",
+			"0;2554;1;f;f;f;7445;fe95f4e2-4396-431a-8b91-afda99a7beb0",
+			"0;2553;1;t;f;f;7446;8389e9a4-3bd0-4729-aa05-343d6f3f0832",
+			"0;2552;1;f;f;f;7447;6196da5a-0c07-4506-b268-312095c59934",
+			"0;2551;1;t;f;f;7448;c59e0eff-f7c4-4027-8286-e4d4d77b563c",
+			"0;2550;1;f;f;f;7449;1f91ddb1-435c-4376-87b2-954c33b5f0d6",
+			"0;2549;1;t;f;f;7450;94cdca31-202c-43e8-82a7-736444fbc83c",
+			"0;2548;1;t;f;f;7451;5b54ae27-0452-422d-8041-12d55ec1c95e",
+			"0;2547;1;f;f;f;7452;b43b0951-7509-40ac-a9e4-16ffebcbe1ff",
+			"0;2546;1;f;f;f;7453;c9ed88ae-5bfc-4e1d-bd38-cc8f81cb9dc2",
+			"0;2545;1;t;f;f;7454;e8100d38-154e-4efa-9b4f-68716dfd50fc",
+			"0;2544;1;f;f;f;7455;16c80de5-8781-4360-b3ef-c3c68ee78cbc",
+			"0;2543;1;t;f;f;7456;3a124e12-115f-4374-b8e8-4f78fa3b3f4f",
+			"0;2542;1;f;f;f;7457;81af8bab-a8ed-40d4-a2fa-369548bb5db8",
+			"0;2541;1;t;f;f;7458;ad17d6b4-7bfc-4e50-b056-5c6df12f683a",
+			"0;2540;1;f;f;f;7459;9cccc938-b6a9-4c7a-9dd1-329ac812d541",
+			"0;2539;1;t;f;f;7460;1462f881-5ad4-4843-88ba-da4d8ee3fbdc",
+			"0;2538;1;f;f;f;7461;da64b682-3293-459d-9131-10b616429c54",
+			"0;2537;1;t;f;f;7462;7c510855-2fe2-41bb-8f84-90cc3ee332db",
+			"0;2536;1;f;f;f;7463;2205845e-5e31-4458-b672-a2ab38cfb242",
+			"0;2535;1;t;f;f;7464;26f52abd-173e-4c5c-9168-540819b963a7",
+			"0;2534;1;f;f;f;7465;f3f20068-63a8-4405-b94d-af420bcf5007",
+			"0;2533;1;t;f;f;7466;83449a6f-2a65-4337-b1ae-6172191f18c0",
+			"0;2532;1;f;f;f;7467;3d36157e-171c-4d05-9de5-34407a554bcd",
+			"0;2531;1;t;f;f;7468;1d562a6b-ce03-40c5-b4e8-a9874a05fee9",
+			"0;2530;1;f;f;f;7469;b5a4cabf-dbb2-428a-be66-fa2d1dfb05b9",
+			"0;2529;1;t;f;f;7470;f515a600-1308-4d9b-9c7a-ee8dc9e69e89",
+			"0;2528;1;f;f;f;7471;c6e124f8-393a-4b19-89f4-7488e1c7c127",
+			"0;2527;1;t;f;f;7472;82a940f4-3a59-4b63-baf6-27ae8ca4d2d5",
+			"0;2526;1;f;f;f;7473;2e42370c-4e6e-4e6e-96db-a8f24bc9c87c",
+			"0;2525;1;t;f;f;7474;e28585c7-1ebf-4fda-a11b-092b7f1943a8",
+			"0;2524;1;f;f;f;7475;128e0423-03f1-4504-b037-c138d92572ef",
+			"0;2523;1;t;f;f;7476;9854e866-1c81-48e0-816e-0d2ec680ffde",
+			"0;2522;1;f;f;f;7477;86870c5e-048c-4aa8-bf3b-b86f55a5f6fb",
+			"0;2521;1;t;f;f;7478;43b32f3c-3dca-44e5-b417-2c5915335b05",
+			"0;2520;1;f;f;f;7479;8dc7a298-b82f-4d84-9cbf-0c61d8d44443",
+			"0;2519;1;t;f;f;7480;7d4ae655-81f9-4629-9337-621feab0dbf0",
+			"0;2518;1;t;f;f;7481;1ae4ee03-c425-45e4-8bed-d92ae95ae5d9",
+			"0;2517;1;f;f;f;7482;824f8c1b-9c94-4786-af43-c130d45acf38",
+			"0;2516;1;f;f;f;7483;c3b8b4f9-cc6f-4b81-8f4a-fe7105a8aa11",
+			"0;2515;1;t;f;f;7484;1d2075e7-bb66-4eb6-814a-23f07ca16064",
+			"0;2514;1;f;f;f;7485;64354e91-550e-4d6f-9959-29f209c5c28c",
+			"0;2513;1;t;f;f;7486;e321e651-db25-49c0-911e-7d2d58f1bd6f",
+			"0;2512;1;f;f;f;7487;61fe9ddb-08cf-4d6f-b183-fef646686b9f",
+			"0;2511;1;t;f;f;7488;35596d0a-179b-4584-a5b2-2919866e65a7",
+			"0;2510;1;f;f;f;7489;aabe5809-c5ff-4469-869e-a7a4ebc97e18",
+			"0;2509;1;t;f;f;7490;7009d956-a507-48f7-abc0-43540468c9a4",
+			"0;2508;1;f;f;f;7491;12449114-135d-4b38-8fe1-cbf376b56d8f",
+			"0;2507;1;t;f;f;7492;0ce018ad-7d9d-4918-836c-3eec18fe94ef",
+			"0;2506;1;t;f;f;7493;ab6b8c8c-07c6-44fe-ad0a-4fab1f6cf219",
+			"0;2505;1;f;f;f;7494;1afbbdfb-c819-45b2-9865-f98edeffb421",
+			"0;2504;1;f;f;f;7495;11570590-76e8-4999-9caa-328419084073",
+			"0;2503;1;t;f;f;7496;b949e508-32b7-4f96-986f-8ecd8ec606e8",
+			"0;2502;1;t;f;f;7497;b853cc77-7ce0-4c83-989e-2b39666e50bd",
+			"0;2501;1;f;f;f;7498;83df0b02-8c19-4d93-8c42-3060f545085b",
+			"0;2500;1;f;f;f;7499;1c2857b0-2659-4dde-9253-0a47b455c4ff",
+			"0;2499;1;t;f;f;7500;04dd0801-9892-49c3-beb7-5b62be5f4853",
+			"0;2498;1;t;f;f;7501;4d0b085f-5bc8-4bc7-9eb2-1074de9fec97",
+			"0;2497;1;f;f;f;7502;8516723c-a2e5-4ac5-ad34-13afa343326a",
+			"0;2496;1;f;f;f;7503;193f21de-a558-4cdf-ac2b-829cd8ab1db2",
+			"0;2495;1;t;f;f;7504;4bcd8741-113f-4544-8877-290c3e578c9d",
+			"0;2494;1;f;f;f;7505;0609c803-6dfb-453b-bb63-dadbf33601f4",
+			"0;2493;1;t;f;f;7506;a81a6c1d-4771-49e7-8908-2a68ac256029",
+			"0;2492;1;f;f;f;7507;e76a3530-e64c-4602-b251-6b1fb55f6ed2",
+			"0;2491;1;t;f;f;7508;3747fede-decd-4291-a9cc-302f33030f15",
+			"0;2490;1;f;f;f;7509;53036649-192a-4cc0-9283-5b3fa41b2a05",
+			"0;2489;1;t;f;f;7510;c82f7f44-3050-4bb8-ba45-b468f21eeb1f",
+			"0;2488;1;f;f;f;7511;c5207fe5-deee-407c-8249-39eab46857d1",
+			"0;2487;1;t;f;f;7512;d395b712-5721-48e9-b465-b6f1bcc8f6e3",
+			"0;2486;1;f;f;f;7513;7f7036f7-9aae-431f-9205-1e637665e006",
+			"0;2485;1;t;f;f;7514;dc3fc479-de88-4aea-9efd-e133dbef3d78",
+			"0;2484;1;f;f;f;7515;a0c49ca1-da9f-473d-a58b-766dc5ef4a7e",
+			"0;2483;1;t;f;f;7516;57e35db4-aaf3-41be-9c5f-844157942425",
+			"0;2482;1;f;f;f;7517;6c2ba59d-0ab5-4e5a-8d91-9383e0e25469",
+			"0;2481;1;t;f;f;7518;b6db7bbb-a097-422a-9987-bcf92c9e7185",
+			"0;2480;1;f;f;f;7519;64d4ae6d-d706-4f8f-98c2-f60e45585a7c",
+			"0;2479;1;t;f;f;7520;19ac7336-dec3-4c9f-aa77-aaf79bc52f7d",
+			"0;2478;1;f;f;f;7521;6af659e3-a324-4a1f-999c-c8ee348089e3",
+			"0;2477;1;t;f;f;7522;a746a164-19de-493d-a310-16cfdfa2e7c2",
+			"0;2476;1;f;f;f;7523;0f02a37d-f592-457e-aec7-f534c9ed1b61",
+			"0;2475;1;t;f;f;7524;152e22e7-80c9-4212-b808-1bb1d1464095",
+			"0;2474;1;f;f;f;7525;40477b88-e7e3-4430-921b-454c6e676910",
+			"0;2473;1;t;f;f;7526;9a0b72d9-8811-467f-8bf2-033aaa23c80a",
+			"0;2472;1;f;f;f;7527;0c8dd472-5a14-42b1-9e8b-ef61d14d2c2a",
+			"0;2471;1;t;f;f;7528;f02db664-b67a-4d5d-a042-470315f1f868",
+			"0;2470;1;f;f;f;7529;94762968-73b5-42e0-a838-059c7484b34d",
+			"0;2469;1;t;f;f;7530;1812fdc5-9ef1-45a8-bd94-a44087a54ef5",
+			"0;2468;1;f;f;f;7531;ef718a8a-f977-4775-a3c7-2ac246efccc5",
+			"0;2467;1;t;f;f;7532;0b1e34c9-3be8-4edc-9de0-066ce968d06e",
+			"0;2466;1;f;f;f;7533;6938a711-36be-4906-a677-78e66837ed91",
+			"0;2465;1;t;f;f;7534;ffa194f0-2148-424b-8865-4d9b4187362d",
+			"0;2464;1;f;f;f;7535;37327c02-d77b-46ff-a281-1e15cebd2491",
+			"0;2463;1;t;f;f;7536;110f44ac-4689-4854-aef6-b56691e3cebc",
+			"0;2462;1;f;f;f;7537;37765632-8af6-45d5-a1ab-39675974e692",
+			"0;2461;1;t;f;f;7538;92989081-f1bd-40be-b35b-6e83b47a3552",
+			"0;2460;1;f;f;f;7539;98f85db7-df9d-48b3-ad96-50a4c9167ea7",
+			"0;2459;1;t;f;f;7540;43a39c84-9421-46a4-9b8f-46aba9ba59d5",
+			"0;2458;1;f;f;f;7541;1eb9ff22-7751-43ca-a353-ad97d28d5e0f",
+			"0;2457;1;t;f;f;7542;9938a611-7855-4899-84f8-b67dddbdd277",
+			"0;2456;1;f;f;f;7543;5b7a7749-6714-4e62-bf7b-33ed32c9f70e",
+			"0;2455;1;t;f;f;7544;113712ee-6cfe-4200-90da-9d84c0ed7f47",
+			"0;2454;1;f;f;f;7545;ffc4ddbc-c634-465c-831e-5a3862b329e2",
+			"0;2453;1;t;f;f;7546;a62361bc-8045-4f90-a687-6005c623267f",
+			"0;2452;1;f;f;f;7547;8d6bd4d8-6b3b-4fd4-8f60-1b95a99d0264",
+			"0;2451;1;t;f;f;7548;ab4eaad7-9f73-4d06-85f2-601e56cc763e",
+			"0;2450;1;f;f;f;7549;64b6aad2-7d20-4519-b33c-39f90dbadf6f",
+			"0;2449;1;t;f;f;7550;ae71a8eb-6567-439f-8105-27cab7641152",
+			"0;2448;1;f;f;f;7551;9d47be81-2b66-489c-ab09-4ce7229d892f",
+			"0;2447;1;t;f;f;7552;cfecdeb8-5b32-49f9-b8a3-733e70952b92",
+			"0;2446;1;f;f;f;7553;0177bd52-1a03-4d78-b9f0-8c29d21de0dc",
+			"0;2445;1;t;f;f;7554;7bc07176-e3b1-407d-9feb-f4f8809f6e1a",
+			"0;2444;1;f;f;f;7555;6e4b0674-270a-4c13-a29a-afa6eb99322f",
+			"0;2443;1;t;f;f;7556;5505fb89-2053-49cb-b0b2-8cd43f76d4a0",
+			"0;2442;1;f;f;f;7557;18cb021c-4faa-41b9-b9cc-0c4257526320",
+			"0;2441;1;t;f;f;7558;9f9e2185-f321-4745-a07f-36735e3a37da",
+			"0;2440;1;f;f;f;7559;821b8d0d-38f9-4959-baf4-2cfd6977d507",
+			"0;2439;1;t;f;f;7560;c53867fb-154a-443d-81e9-cfae567d5be3",
+			"0;2438;1;f;f;f;7561;11420c77-e21e-4ca0-bb8a-c01a040fa5d5",
+			"0;2437;1;t;f;f;7562;8012bf85-7b37-41e5-9ecf-f3d9f093645e",
+			"0;2436;1;f;f;f;7563;af1b20da-d091-4b86-a191-518567953472",
+			"0;2435;1;t;f;f;7564;c79cc733-7d86-4dbf-a818-b256bc606151",
+			"0;2434;1;f;f;f;7565;991199b1-4869-4456-bd78-e43a9aee54ea",
+			"0;2433;1;t;f;f;7566;96c6383e-0d02-405d-bb85-5b7a58121262",
+			"0;2432;1;f;f;f;7567;ef44c59b-d03e-4bcb-8f78-e8dc3ac1a16c",
+			"0;2431;1;t;f;f;7568;0741d398-482a-4a41-a6fa-476a44470b4c",
+			"0;2430;1;f;f;f;7569;b2917bc2-cda3-4e54-9ea8-a41b0b6943f1",
+			"0;2429;1;t;f;f;7570;671f4579-feb7-4c8d-bccb-bd3222f88515",
+			"0;2428;1;f;f;f;7571;16e356d4-ea4a-4253-9e33-9040de15a0ce",
+			"0;2427;1;t;f;f;7572;69481acd-cba3-40d0-849d-b4a1ea98c778",
+			"0;2426;1;f;f;f;7573;1cb84126-4795-4d32-b113-1bc50dabb92c",
+			"0;2425;1;t;f;f;7574;5dafaff5-e4f2-4eb0-ad09-2f1041a3f62b",
+			"0;2424;1;f;f;f;7575;89ee5d22-4e26-4fdf-abd3-6790373f7b8b",
+			"0;2423;1;t;f;f;7576;48f38ac4-68b2-413f-bb16-1ae5384b238a",
+			"0;2422;1;f;f;f;7577;0e465db6-6844-4be0-a576-648c38cb494e",
+			"0;2421;1;t;f;f;7578;756ab397-74e8-496c-8d6e-76dafdc7bba7",
+			"0;2420;1;f;f;f;7579;549da28e-1c6c-44dc-8a0e-2ae6a4df7f35",
+			"0;2419;1;t;f;f;7580;538a619b-71f6-433a-b778-f76403e0557b",
+			"0;2418;1;f;f;f;7581;ce34c89e-f1d9-4c80-a08e-f3e9560c8ad3",
+			"0;2417;1;t;f;f;7582;d7d32895-d142-45c1-8fc8-93d1d4fffeab",
+			"0;2416;1;f;f;f;7583;1e34cdf9-fc90-4bf6-a627-abb51bc65675",
+			"0;2415;1;t;f;f;7584;d441543e-a877-4b1b-8d27-792ef448186d",
+			"0;2414;1;f;f;f;7585;bf0e2ff5-54f2-4fc4-bf1f-cbdeb6de3e07",
+			"0;2413;1;t;f;f;7586;3d6477e1-ca78-4ac6-aee2-443439a952cc",
+			"0;2412;1;f;f;f;7587;153fe3c6-0439-47f2-bf4d-4df1cb967505",
+			"0;2411;1;t;f;f;7588;be00d860-3cd5-4d39-becb-32a16bcba83b",
+			"0;2410;1;f;f;f;7589;d0894ca9-94b4-4563-b701-4dfa1f634e53",
+			"0;2409;1;t;f;f;7590;fbd92adc-cde7-4c4e-9577-e884aaac1093",
+			"0;2408;1;f;f;f;7591;c7d7ab3a-509d-4f4a-b276-816d4ff93f10",
+			"0;2407;1;t;f;f;7592;22226b8f-97e3-4352-9d40-5a7e504dc23c",
+			"0;2406;1;f;f;f;7593;d6609167-0d4d-457b-a339-6c88d283ee54",
+			"0;2405;1;t;f;f;7594;b33205e2-52d4-4148-897d-5add943e4c19",
+			"0;2404;1;f;f;f;7595;ca125e62-3118-4f54-a90e-0587435ef2d8",
+			"0;2403;1;t;f;f;7596;513561a7-ebc9-4623-9938-b77ab7baf884",
+			"0;2402;1;f;f;f;7597;ed3ad1e6-5f81-45ce-91d0-04cb0c7a0673",
+			"0;2401;1;t;f;f;7598;a8394f54-49bc-497a-984f-0b1db68bfdaf",
+			"0;2400;1;t;f;f;7599;04f0ba99-4767-4e31-93dd-5493c31d9200",
+			"0;2399;1;f;f;f;7600;601c7652-1d70-4a3e-b96b-6992f4154248",
+			"0;2398;1;f;f;f;7601;ca9cd470-4a90-4396-b488-1da65cc1363d",
+			"0;2397;1;t;f;f;7602;05c41e41-eb13-43c7-b1c1-5f92d67b0e13",
+			"0;2396;1;f;f;f;7603;dc0af319-d211-40ff-a395-066d284ac0e0",
+			"0;2395;1;t;f;f;7604;a62316bb-9d11-48d7-b02b-dfd02cf32151",
+			"0;2394;1;f;f;f;7605;26e8b110-e2e4-4327-afe8-36ea33b650d3",
+			"0;2393;1;t;f;f;7606;0fb618fd-1b0c-436d-8508-ae89bd1c6f80",
+			"0;2392;1;f;f;f;7607;aeea6330-474b-426c-a3f1-cc4685cd44ce",
+			"0;2391;1;t;f;f;7608;a311294e-b37b-44cc-a5fc-692e6c2cebe7",
+			"0;2390;1;f;f;f;7609;30ec52b4-a808-44ed-90cd-968de9c06f57",
+			"0;2389;1;t;f;f;7610;388aeb65-f03b-4524-8160-153902bab11b",
+			"0;2388;1;f;f;f;7611;59adb681-d68a-4488-a98e-b0996c3c9fc3",
+			"0;2387;1;t;f;f;7612;de8f7e41-7f21-496b-a160-c96e293b7cc0",
+			"0;2386;1;f;f;f;7613;2c78c2b9-2bdc-4992-b292-02dbfa05903d",
+			"0;2385;1;t;f;f;7614;2e2d72a4-e091-4391-9b78-13e597fec794",
+			"0;2384;1;f;f;f;7615;2f0358ff-3fb5-42ea-a2ca-d019447758bb",
+			"0;2383;1;t;f;f;7616;a751f2d5-02d3-4738-94a3-7c9c97dfe89a",
+			"0;2382;1;f;f;f;7617;9585ad58-f07b-4afa-a653-42185deed528",
+			"0;2381;1;t;f;f;7618;a068c2b1-4b33-4e21-aae1-c36f6a8758cb",
+			"0;2380;1;f;f;f;7619;9efcfb2a-04fb-4655-b84d-7d805ccbc541",
+			"0;2379;1;t;f;f;7620;a623e8ec-1227-4d2e-b1b9-d1300486f832",
+			"0;2378;1;f;f;f;7621;8bed8851-f13d-43d0-bcef-6ce4cec21f20",
+			"0;2377;1;t;f;f;7622;f0321d1c-7a73-4b52-93f2-fb9d0b8f717c",
+			"0;2376;1;f;f;f;7623;8e558a38-d907-4627-8190-4ffe656d4879",
+			"0;2375;1;t;f;f;7624;935ddd57-ab5b-4c76-bf6d-87874604850d",
+			"0;2374;1;f;f;f;7625;7f5bdb9d-2c6b-41e4-ba68-a04227774dde",
+			"0;2373;1;t;f;f;7626;c465dd9c-acee-40d3-b6fd-1db814cbc7ae",
+			"0;2372;1;f;f;f;7627;1095757f-a4bf-4f0f-a64c-57cefbbdc347",
+			"0;2371;1;t;f;f;7628;cd6a8191-e24a-4f4e-8197-aeaeb9c73827",
+			"0;2370;1;f;f;f;7629;d58cf1c8-e76a-4ba8-8476-be9bc2679a59",
+			"0;2369;1;t;f;f;7630;85888a08-1267-4010-a025-05830b773089",
+			"0;2368;1;f;f;f;7631;6d95d87a-3195-4cda-b744-7e540a94dd71",
+			"0;2367;1;t;f;f;7632;482be7cb-6be9-4e7b-9b36-54257ffe955d",
+			"0;2366;1;f;f;f;7633;bd6872d5-08b6-4a67-991d-88eb02424b69",
+			"0;2365;1;t;f;f;7634;113e93b3-b5ae-4f70-ad56-ff12b0a7a9b4",
+			"0;2364;1;f;f;f;7635;288f921d-1248-4973-9f83-15497f477b6d",
+			"0;2363;1;t;f;f;7636;8b010dd8-e92f-440e-be60-a5f334d6ee8c",
+			"0;2362;1;f;f;f;7637;5091524c-7997-439c-b213-bd68913a41c1",
+			"0;2361;1;t;f;f;7638;b1c384e1-e3de-4536-adb3-ddd258ad680b",
+			"0;2360;1;f;f;f;7639;0017815c-3937-4ae1-8969-e1189b457eb6",
+			"0;2359;1;t;f;f;7640;78225f5b-090d-43f6-8f3c-e7f7203f74ad",
+			"0;2358;1;t;f;f;7641;b6ba4ab6-c98e-4eab-bf43-5d53a2742a2c",
+			"0;2357;1;f;f;f;7642;d9cfed80-db9d-407c-8408-6e54cc6187bc",
+			"0;2356;1;f;f;f;7643;209fc80e-40e9-4737-a86d-8b425ed5ccd9",
+			"0;2355;1;t;f;f;7644;2f2d91fb-5fcf-4f8c-a3de-5b5ef647a39a",
+			"0;2354;1;f;f;f;7645;02602259-5bdc-49e1-ada1-2f5ed6252090",
+			"0;2353;1;t;f;f;7646;dd2ab6c9-b866-43ec-91b9-f51c7288a5eb",
+			"0;2352;1;f;f;f;7647;9dfeca08-7c2d-460d-a1cb-68cbf5eae423",
+			"0;2351;1;t;f;f;7648;57324904-7ac8-4ddc-b789-e05b6a3ed27b",
+			"0;2350;1;f;f;f;7649;e2263204-ca16-48d6-beb6-be351ef9cd22",
+			"0;2349;1;t;f;f;7650;030a8d38-69f6-4bc2-a450-43d3d2882470",
+			"0;2348;1;f;f;f;7651;1a02843d-8188-40a6-bb84-a77167562ee6",
+			"0;2347;1;t;f;f;7652;cfac162f-c7fe-4b38-9d8f-df4819ed8432",
+			"0;2346;1;f;f;f;7653;e357faf8-4dd7-43da-9d7e-7fa741896ce3",
+			"0;2345;1;t;f;f;7654;6ca91759-7aea-4a1a-a99e-006e0076074a",
+			"0;2344;1;f;f;f;7655;6126cf30-8835-4201-8d4e-199e24e72699",
+			"0;2343;1;t;f;f;7656;faabec1c-ce15-40ed-9594-7a95ed10e08e",
+			"0;2342;1;f;f;f;7657;b88fb8fb-c987-4f9e-8219-ac25bb669c84",
+			"0;2341;1;t;f;f;7658;164f682a-edcf-4280-a076-f9506df76293",
+			"0;2340;1;f;f;f;7659;50980e31-c99a-417d-93d8-0ca71c7beb47",
+			"0;2339;1;t;f;f;7660;2488cdf7-9846-475d-bc7f-fe647db41b59",
+			"0;2338;1;f;f;f;7661;35100f7b-c7a2-4158-acfa-2328bf70ea7a",
+			"0;2337;1;t;f;f;7662;941f225b-ad07-47e1-ab5b-c55f54621a4d",
+			"0;2336;1;f;f;f;7663;104fe84a-e6bd-4c45-b52b-e3ac69bed338",
+			"0;2335;1;t;f;f;7664;a52a0ddf-2ef2-4d3e-a4d3-473bed245a09",
+			"0;2334;1;f;f;f;7665;eefcfb20-7bad-4581-9bbf-9acf1537ba2a",
+			"0;2333;1;t;f;f;7666;a6c4f423-de37-4f35-9a3b-7e46d94ecc83",
+			"0;2332;1;f;f;f;7667;29077599-babe-4173-8456-423e5b77c3b0",
+			"0;2331;1;t;f;f;7668;e70e9511-772a-455f-94e8-645b0adbcc68",
+			"0;2330;1;f;f;f;7669;43c2283b-7e93-43aa-82f3-65f618491d4b",
+			"0;2329;1;t;f;f;7670;89b26b77-19e2-4fb0-aaef-51d06ef647a3",
+			"0;2328;1;f;f;f;7671;f7edca67-66f2-4032-ba90-c98bb910ad2f",
+			"0;2327;1;t;f;f;7672;3b4fad55-3343-47cf-b3d8-13fbf028fa1b",
+			"0;2326;1;f;f;f;7673;1483e2d3-4dd5-4dce-ab33-2c7793ca6915",
+			"0;2325;1;t;f;f;7674;173a5b61-a7d1-4a70-9cb7-144bdbc07804",
+			"0;2324;1;f;f;f;7675;67adad2e-9735-417a-a4de-994f0a8573ef",
+			"0;2323;1;t;f;f;7676;5db70592-a746-4c14-9bf4-1c4c6ed76b81",
+			"0;2322;1;f;f;f;7677;197cf3ae-f5e0-4489-83b6-374cc750d712",
+			"0;2321;1;t;f;f;7678;d3dc4e35-eaea-41be-b7e6-e11902086d10",
+			"0;2320;1;f;f;f;7679;1178a43e-9438-48a9-8743-9a42835217f0",
+			"0;2319;1;t;f;f;7680;8f98dc40-ffec-4686-84d4-e56e4d34d272",
+			"0;2318;1;f;f;f;7681;0d40930c-6cfc-4ac1-994b-b2cff704a6fb",
+			"0;2317;1;t;f;f;7682;9df9394e-54e2-4a5c-bca8-49ce81c33b36",
+			"0;2316;1;f;f;f;7683;f4ca0ad6-f43b-48ed-aacc-f3db3d45d731",
+			"0;2315;1;t;f;f;7684;69a8c939-4472-4228-96cc-0074f9a608ab",
+			"0;2314;1;f;f;f;7685;7c173a29-ea73-4dfc-8e0b-2fe64cb361a2",
+			"0;2313;1;t;f;f;7686;f1a85eb8-c5ba-4b25-9037-1ac326c7b195",
+			"0;2312;1;f;f;f;7687;1eaeee29-768a-4782-adba-c3ce58e1663d",
+			"0;2311;1;t;f;f;7688;d98afd5d-2959-41c0-a56e-8bc8ad88b42d",
+			"0;2310;1;f;f;f;7689;60f70a9f-8cc2-428e-9442-5163d1e4d4d9",
+			"0;2309;1;t;f;f;7690;d5ff49f9-38e7-46e8-96b6-89cf7e6edcbc",
+			"0;2308;1;f;f;f;7691;71051468-7f70-47d5-9917-6a35d5781346",
+			"0;2307;1;t;f;f;7692;bdfab295-179f-4211-86d0-1f27f6d1197d",
+			"0;2306;1;f;f;f;7693;6663024b-2606-465e-8efd-1bc4519df392",
+			"0;2305;1;t;f;f;7694;27964485-820e-4ff5-98f2-1012fffe7012",
+			"0;2304;1;f;f;f;7695;91631973-c386-4d8f-83d9-bd3149c5ad51",
+			"0;2303;1;t;f;f;7696;cd5cf3cd-c240-4a0f-96cc-e46630088e08",
+			"0;2302;1;f;f;f;7697;6793198c-c565-4302-9166-0475cf56ed86",
+			"0;2301;1;t;f;f;7698;721eefbb-c473-4d8f-bff7-edbb741cbd1b",
+			"0;2300;1;f;f;f;7699;bfdd7912-d01f-466b-881c-dc8f6d38e9cb",
+			"0;2299;1;t;f;f;7700;6c942aaf-a9d4-488c-a40b-b5da864fac07",
+			"0;2298;1;f;f;f;7701;4ec807f8-d29a-43ce-af47-42ea4cc179c9",
+			"0;2297;1;t;f;f;7702;5bbcfcc4-51e1-4e31-afcf-2d74d4409a29",
+			"0;2296;1;f;f;f;7703;61771a6e-2fb0-4a92-80a2-249365d7804d",
+			"0;2295;1;t;f;f;7704;bd76f7d4-fd66-41ca-8de3-c5871815b66f",
+			"0;2294;1;f;f;f;7705;ddedff82-a73f-4314-91f7-3e769c9c9b0c",
+			"0;2293;1;t;f;f;7706;0ca4511a-f0ec-4c39-b12d-4ccf0faacd05",
+			"0;2292;1;t;f;f;7707;cd609ae4-82a3-4341-a74d-a637cb9756fc",
+			"0;2291;1;f;f;f;7708;31fd1bcd-3280-4dc3-980e-3a8c393b789e",
+			"0;2290;1;f;f;f;7709;2f480022-3abb-4a5d-acce-b523206d2625",
+			"0;2289;1;t;f;f;7710;cd5473cc-4832-480d-a787-ce1d8ee05129",
+			"0;2288;1;t;f;f;7711;e480c1c8-923e-49be-a6f9-090188427296",
+			"0;2287;1;f;f;f;7712;a4251a49-7979-4522-a147-63e0a5d89067",
+			"0;2286;1;f;f;f;7713;d28aa64b-1add-4c68-ac85-993fb952a0a5",
+			"0;2285;1;t;f;f;7714;a40af70f-b73b-413a-aebc-2bea5b93106a",
+			"0;2284;1;f;f;f;7715;706309ab-6072-41e1-b86f-4306270f38e5",
+			"0;2283;1;t;f;f;7716;b6e63b8d-485e-4183-b13d-da95b42731e1",
+			"0;2282;1;f;f;f;7717;43346c76-cd83-455c-b748-2b8c89f1e07b",
+			"0;2281;1;t;f;f;7718;65f46dda-5c30-451e-8e3c-3962db7d70e9",
+			"0;2280;1;f;f;f;7719;4a74e06b-69d8-4636-803e-7b496cb36b07",
+			"0;2279;1;t;f;f;7720;3e68c99e-a763-45af-895a-a1a4c3a41fe2",
+			"0;2278;1;f;f;f;7721;d999a744-bb8b-453c-a720-54e0bd3bd61d",
+			"0;2277;1;t;f;f;7722;1e0452ec-7447-4b98-9164-4ba2d6aa74b2",
+			"0;2276;1;f;f;f;7723;5eedfeff-2db0-4eab-b48c-529b15947e3e",
+			"0;2275;1;t;f;f;7724;dee610fc-d855-475b-8eb4-0400a0510053",
+			"0;2274;1;f;f;f;7725;c370b232-1ff3-416b-8cac-d6171db713fa",
+			"0;2273;1;t;f;f;7726;d6499c1f-7e6d-4e59-8e17-913668de466e",
+			"0;2272;1;f;f;f;7727;9e3fd282-b08d-4120-831f-effa0aea8814",
+			"0;2271;1;t;f;f;7728;e8c64e1a-61db-4728-b58c-82726abdf17b",
+			"0;2270;1;f;f;f;7729;e5ee574b-14d5-4a42-bf9e-fb2a1ba49179",
+			"0;2269;1;t;f;f;7730;6c023d2b-ffd0-479c-b5d0-476ea807c583",
+			"0;2268;1;f;f;f;7731;0fea7a66-faf5-4b65-9395-d0d01202ac1d",
+			"0;2267;1;t;f;f;7732;d4e28fd1-86b8-458d-a82b-9b0761f75385",
+			"0;2266;1;f;f;f;7733;f9e1e088-21c2-4a2c-bde9-3dc23a2f8cdd",
+			"0;2265;1;t;f;f;7734;25703730-f828-4e66-8c7d-2805ff0427d3",
+			"0;2264;1;f;f;f;7735;63ce136e-0ce9-4829-8fd9-27140361c8d3",
+			"0;2263;1;t;f;f;7736;b4a5d9aa-94bc-444a-ba77-a9d14d331fca",
+			"0;2262;1;f;f;f;7737;fc7a06b5-c8db-467a-9b88-82cb933f8f54",
+			"0;2261;1;t;f;f;7738;a4e6d3d0-1074-4637-822b-9f2a7b32ebb5",
+			"0;2260;1;f;f;f;7739;3c7fdb1f-20af-4b12-ae1c-169e028b68b5",
+			"0;2259;1;t;f;f;7740;a3b32990-ea72-4e6a-8275-94724975ad7c",
+			"0;2258;1;f;f;f;7741;9782ef58-d096-4695-b7ee-564a1a3ef36e",
+			"0;2257;1;t;f;f;7742;8e03d265-9a1f-41ab-a334-f8a16c3a5be2",
+			"0;2256;1;t;f;f;7743;cb9241a1-7924-4418-a7ad-0873f448dbcb",
+			"0;2255;1;f;f;f;7744;c41340eb-4aa3-4d05-842a-d17963df76b5",
+			"0;2254;1;f;f;f;7745;dd47c443-6c32-4a59-b24a-6731984047a2",
+			"0;2253;1;t;f;f;7746;50e2115f-a890-4815-9f95-7e0b96af91d6",
+			"0;2252;1;f;f;f;7747;d7270ed2-f971-4a50-a2fd-c8943334e196",
+			"0;2251;1;t;f;f;7748;7b9f5f5f-b012-43b6-8ab4-8c07a1cb8a60",
+			"0;2250;1;f;f;f;7749;4fccb972-313c-47ea-92a2-82da463e249f",
+			"0;2249;1;t;f;f;7750;fbbd1390-7bae-4222-b6fa-953b6a344c54",
+			"0;2248;1;f;f;f;7751;7085abf6-df31-4b57-89ad-5ef47592fc4b",
+			"0;2247;1;t;f;f;7752;9a9dea7a-93d9-4740-9da4-cfa3601260ef",
+			"0;2246;1;f;f;f;7753;3d316506-61fe-44fa-b253-90e0c20c6c09",
+			"0;2245;1;t;f;f;7754;98a2f738-4616-4dc7-8497-1ab61470c758",
+			"0;2244;1;f;f;f;7755;3c2a388e-8e89-47fc-a30a-20f1e7c0fe8e",
+			"0;2243;1;t;f;f;7756;551edc60-3d81-4d04-b943-5f232c4b7d31",
+			"0;2242;1;f;f;f;7757;eaed5adb-461b-41fa-b173-c5f1a45d8e01",
+			"0;2241;1;t;f;f;7758;12bc6810-30bb-4bc1-bb2a-8e28268b45d0",
+			"0;2240;1;f;f;f;7759;028d79e7-98a7-402a-876c-cc1c7c37d1fe",
+			"0;2239;1;t;f;f;7760;6e226685-300c-4855-964d-56ab722f9d83",
+			"0;2238;1;f;f;f;7761;54b4682a-25cc-4694-a46e-4c4091afeea2",
+			"0;2237;1;t;f;f;7762;9a95d8e4-e8db-4150-be24-bcff602b5183",
+			"0;2236;1;f;f;f;7763;9a91fa3b-1bb6-4349-85d8-593456813203",
+			"0;2235;1;t;f;f;7764;953b3b33-48f3-4c7d-8695-14c18c60a111",
+			"0;2234;1;f;f;f;7765;5ff386da-17e6-46e9-8cae-069ae8dfafb8",
+			"0;2233;1;t;f;f;7766;6442e9bd-00f7-4f7c-8739-c0690a4c792a",
+			"0;2232;1;f;f;f;7767;08643f40-cc19-42f6-af16-670cb154d819",
+			"0;2231;1;t;f;f;7768;113af18c-0aab-4ba5-a98a-9d52d37e80ea",
+			"0;2230;1;f;f;f;7769;94412bd4-9fd7-4742-b8c7-ae44e130b15a",
+			"0;2229;1;t;f;f;7770;fbb1f442-6c8c-4b41-90d8-1d4b6deeedfe",
+			"0;2228;1;f;f;f;7771;c7151ec7-f85e-4219-99ef-ec97f6b36f99",
+			"0;2227;1;t;f;f;7772;778e76f1-4d60-4361-9336-693bc51f1834",
+			"0;2226;1;f;f;f;7773;b4127f14-31a6-4ecc-8e9d-a5df69671063",
+			"0;2225;1;t;f;f;7774;ca194e05-4fac-40df-b18b-aca55243fe35",
+			"0;2224;1;f;f;f;7775;a677c7be-3b7a-4a3d-ae51-0451c93a5eba",
+			"0;2223;1;t;f;f;7776;62ca73dc-2478-416e-ab63-3f386bf91dc9",
+			"0;2222;1;f;f;f;7777;546270a1-3258-470e-8435-09ebc85633e2",
+			"0;2221;1;t;f;f;7778;636190ec-5807-4749-b838-052ce2ab17a6",
+			"0;2220;1;f;f;f;7779;803eebec-d948-4766-9e76-895c15d75e13",
+			"0;2219;1;t;f;f;7780;93e11375-0c41-4024-9089-b6e75f4b39cb",
+			"0;2218;1;f;f;f;7781;3aee4f89-f9e5-4819-bf35-d0ba5cf515bd",
+			"0;2217;1;t;f;f;7782;f96a195b-b740-4116-8bdb-fae29c9b3929",
+			"0;2216;1;f;f;f;7783;a729249e-87f3-4024-8ca2-4b9f4a3f3050",
+			"0;2215;1;t;f;f;7784;0bbeb8b1-f7ba-4ff0-894c-e752a15e6258",
+			"0;2214;1;f;f;f;7785;cb942809-791e-4fb2-a6ce-62b3e31481f7",
+			"0;2213;1;t;f;f;7786;53891ee1-00da-4098-9d5d-01f4ac985519",
+			"0;2212;1;f;f;f;7787;8d4f9075-e93c-4481-8152-ca0b4afd3c09",
+			"0;2211;1;t;f;f;7788;b40fa6c1-58f7-46ac-b321-4ef88c35ecec",
+			"0;2210;1;f;f;f;7789;34a10d89-b9e1-4009-aad4-4b7910828b9c",
+			"0;2209;1;t;f;f;7790;43009936-504b-4d7e-8871-e908b25fb272",
+			"0;2208;1;f;f;f;7791;0845d8e2-f78c-4f82-a189-a51cc07af9ed",
+			"0;2207;1;t;f;f;7792;b2219a55-e1e8-45b3-862a-03a13e442f40",
+			"0;2206;1;f;f;f;7793;77c12ad1-7a50-4ff7-b372-385bec790321",
+			"0;2205;1;t;f;f;7794;b22b302f-6797-450d-ae92-2fadef05859e",
+			"0;2204;1;f;f;f;7795;2cc9880f-c8eb-4417-9c79-98ebb8707387",
+			"0;2203;1;t;f;f;7796;e0746b24-7d37-43f7-9365-3e7cddd6106f",
+			"0;2202;1;f;f;f;7797;f79eeb00-f212-453a-b023-73bd50402cf9",
+			"0;2201;1;t;f;f;7798;be2534fb-12f2-49ed-b3e2-b1fbdccaeebd",
+			"0;2200;1;f;f;f;7799;af5a3796-5694-4f2f-8dfc-920cba77e38d",
+			"0;2199;1;t;f;f;7800;3069f41c-e7de-440b-92f4-8b00eb52e5f4",
+			"0;2198;1;f;f;f;7801;511bff8e-cfd3-4565-84e1-39483d455acd",
+			"0;2197;1;t;f;f;7802;9ea435d3-62d1-4994-9807-1f76251cfeef",
+			"0;2196;1;f;f;f;7803;1eb4f04f-c152-4189-bb79-ae99805e9f5f",
+			"0;2195;1;t;f;f;7804;3c5013a3-6d8a-48fe-903f-88aebc5587eb",
+			"0;2194;1;f;f;f;7805;36104116-a378-4f89-9bef-e5f0743fac31",
+			"0;2193;1;t;f;f;7806;ec136813-be91-411a-b25d-91da2f43d59d",
+			"0;2192;1;f;f;f;7807;9cbe3985-9d49-4d8e-adf0-90a6dd04296b",
+			"0;2191;1;t;f;f;7808;c19d2a2c-5001-4ed3-828f-489003caf403",
+			"0;2190;1;f;f;f;7809;c6e87212-2241-4715-902a-693b40102ad0",
+			"0;2189;1;t;f;f;7810;ee47ec48-60d9-4361-9c92-6c2c100957e2",
+			"0;2188;1;f;f;f;7811;5cc4d4e0-6200-4aaf-bc4f-114b08e890b8",
+			"0;2187;1;t;f;f;7812;aaa6c01f-7939-46d1-b383-e8e59363c701",
+			"0;2186;1;f;f;f;7813;fe664c63-bf9e-4813-a396-b37cca86a9d9",
+			"0;2185;1;t;f;f;7814;51dc0d97-6a71-477b-a54e-683985e6d4b7",
+			"0;2184;1;f;f;f;7815;add3be71-d8bb-4138-8cfd-905fb42e7229",
+			"0;2183;1;t;f;f;7816;a9ee15f5-ab90-4875-9860-f440a87c40ed",
+			"0;2182;1;t;f;f;7817;13fcbd0f-e2e7-4dd2-9851-8d00dccbf0f4",
+			"0;2181;1;f;f;f;7818;fa00554b-f4d5-4cd4-a466-32cd4d081b71",
+			"0;2180;1;f;f;f;7819;da7f691a-1409-4806-8328-5d6dbb46ed72",
+			"0;2179;1;t;f;f;7820;552f84d3-2fbe-4d79-98bb-84ad500e1208",
+			"0;2178;1;t;f;f;7821;6bd0932a-a124-4d5c-a670-230a4ef2de43",
+			"0;2177;1;f;f;f;7822;d5360efc-3fd8-4b0a-9c27-0f9d6fd93c1e",
+			"0;2176;1;f;f;f;7823;f7459c9c-e95a-4c9d-80be-e313434a109b",
+			"0;2175;1;t;f;f;7824;1207f723-b8d3-4a9b-8bff-204f3be90748",
+			"0;2174;1;t;f;f;7825;93e34a7b-69e7-47bd-9e93-378ce6ad2ac9",
+			"0;2173;1;f;f;f;7826;0c66dab2-3d57-4faa-861f-368d40f33be9",
+			"0;2172;1;f;f;f;7827;1ba4c085-5af9-4472-9c1a-dbe4dc42d1aa",
+			"0;2171;1;t;f;f;7828;6454e7f2-3a4f-4555-a4f5-a0624d40ecbb",
+			"0;2170;1;f;f;f;7829;189f64a2-10eb-452f-904b-21e0d243df4d",
+			"0;2169;1;t;f;f;7830;d2d1724e-29ee-4ebd-8e21-7421f32f1413",
+			"0;2168;1;f;f;f;7831;f1e3b975-e104-4de9-8c55-f41e109c5406",
+			"0;2167;1;t;f;f;7832;0b91d7a1-47d5-472b-84eb-3d2cbc962e38",
+			"0;2166;1;f;f;f;7833;f6750139-27a1-41d5-9c97-8bd5945b5cc6",
+			"0;2165;1;t;f;f;7834;14c9b66c-edb8-4c48-836d-56cb3ec34432",
+			"0;2164;1;f;f;f;7835;406e6e21-c202-4b69-871c-84a073eb2b6e",
+			"0;2163;1;t;f;f;7836;d5f0afe1-d364-434f-94cf-c512bf7365f4",
+			"0;2162;1;f;f;f;7837;bddd50bb-c6d7-461b-80b9-a88eda3c4a65",
+			"0;2161;1;t;f;f;7838;9f831dc2-90ec-4e66-899e-9b00fb4138bc",
+			"0;2160;1;f;f;f;7839;b920520f-16f0-4c6a-9aaf-8f499997cd64",
+			"0;2159;1;t;f;f;7840;1431d17e-2849-4050-85e7-402e69da416d",
+			"0;2158;1;f;f;f;7841;225ade5e-e1d6-44ca-b6da-071a243459db",
+			"0;2157;1;t;f;f;7842;71dc3188-52aa-4420-abec-731dbe480ec3",
+			"0;2156;1;f;f;f;7843;96592524-2c26-41e9-85e8-b806379dcb8d",
+			"0;2155;1;t;f;f;7844;9625ac03-7791-413f-9471-2b4e4e4c70ba",
+			"0;2154;1;f;f;f;7845;b34f04ba-52ae-48ff-bfee-74fb62155b9f",
+			"0;2153;1;t;f;f;7846;2e79c4b5-bb97-42bf-a506-214a07d107bc",
+			"0;2152;1;f;f;f;7847;2e16b46f-3cd5-49da-8eef-ba159aabdacd",
+			"0;2151;1;t;f;f;7848;925fb226-2a3c-4358-8468-7dbfc07f4596",
+			"0;2150;1;t;f;f;7849;e4f5bc12-393e-45b2-a569-067d1faa86aa",
+			"0;2149;1;f;f;f;7850;84d9fc39-41c7-439c-875a-0646f8edbf12",
+			"0;2148;1;f;f;f;7851;60ecc8e3-3fa2-422f-95d8-de6cfae79919",
+			"0;2147;1;t;f;f;7852;718a10c5-3fed-47e0-b730-acad2b6b9c1a",
+			"0;2146;1;f;f;f;7853;c377ca2d-70d4-4f67-809a-c1bd111a3bf1",
+			"0;2145;1;t;f;f;7854;2d0da1dc-57e3-45ce-b714-984382f5cb48",
+			"0;2144;1;f;f;f;7855;d100f3b2-4b23-4319-824c-a1d722b2d79a",
+			"0;2143;1;t;f;f;7856;f3bb6962-141c-420d-9cac-d5a3dd4213fb",
+			"0;2142;1;f;f;f;7857;a0a0fe6c-0aae-402f-8628-8a94df80ce47",
+			"0;2141;1;t;f;f;7858;24aa81d3-1987-4d3b-8e17-d29066a2c3e5",
+			"0;2140;1;f;f;f;7859;31a4d536-62f2-4461-9f50-6fca9794ab8e",
+			"0;2139;1;t;f;f;7860;3874e5b4-b21a-4938-bff1-f9d3b91a6565",
+			"0;2138;1;f;f;f;7861;d11bcfd0-c1c3-49db-b376-23a1bf6cecb9",
+			"0;2137;1;t;f;f;7862;35675760-2ea0-4ba1-8bd6-f17fbdc8d1cd",
+			"0;2136;1;f;f;f;7863;19fb73ec-1397-4e91-865b-e7506c4a522e",
+			"0;2135;1;t;f;f;7864;1f3774a3-2093-4793-9242-1c406485c461",
+			"0;2134;1;f;f;f;7865;ab4f6d1d-acab-4914-880a-dc1b23ea61d7",
+			"0;2133;1;t;f;f;7866;b6c2ac87-eaef-4b0d-8a3c-b3a26c39cb3f",
+			"0;2132;1;f;f;f;7867;29e45ee7-d915-4057-9693-090067a42b91",
+			"0;2131;1;t;f;f;7868;1e418777-d61c-4d0e-9a6c-6b6aa968ee1c",
+			"0;2130;1;f;f;f;7869;f53b7af5-347b-4970-9065-42dd4f272ba8",
+			"0;2129;1;t;f;f;7870;eb2fa186-85f6-4a0c-be75-9442d6e9b048",
+			"0;2128;1;f;f;f;7871;a75c434b-b5a3-42e8-99f0-e72d0f95990d",
+			"0;2127;1;t;f;f;7872;cd00605c-cc1d-4682-b020-038d975faec6",
+			"0;2126;1;f;f;f;7873;7266dccf-2963-4e49-b593-2078dbfd0386",
+			"0;2125;1;t;f;f;7874;faa54652-f434-429b-a8f4-23bdd00b0a5b",
+			"0;2124;1;f;f;f;7875;094d3b98-0415-46d0-8f6a-f7b27b671185",
+			"0;2123;1;t;f;f;7876;53266868-b071-4e3a-b84a-224fd1233a63",
+			"0;2122;1;f;f;f;7877;02aec5fb-0df0-4fb1-86a4-523d9e538ebb",
+			"0;2121;1;t;f;f;7878;8cdb2baf-c034-4f7a-a93a-1a844f7da762",
+			"0;2120;1;f;f;f;7879;5bfc0be6-2c38-4e54-b813-e17e695c229d",
+			"0;2119;1;t;f;f;7880;cdf52c0f-01a9-4eea-83a3-fc8d9d135472",
+			"0;2118;1;f;f;f;7881;1a15edb4-d3bc-4c93-b45a-99d574fb897c",
+			"0;2117;1;t;f;f;7882;5109b865-e4d9-4ceb-8c70-420ba13215b6",
+			"0;2116;1;f;f;f;7883;60c333cf-72fe-45eb-993b-d1099b58d19d",
+			"0;2115;1;t;f;f;7884;82b5f3cb-4287-46e9-b524-4b0d99f827b5",
+			"0;2114;1;f;f;f;7885;426cf5fd-4b8d-4983-98b9-d382048f9416",
+			"0;2113;1;t;f;f;7886;fb85cd45-4458-4fa4-b509-19260db554af",
+			"0;2112;1;f;f;f;7887;fcd2fc06-8f14-4cc9-b9a7-9fb25b7ba14b",
+			"0;2111;1;t;f;f;7888;5fb72b2c-d2b7-4576-a4a5-46cf3429bb06",
+			"0;2110;1;f;f;f;7889;475d9876-1f10-44ad-ae3f-41ebc1782bfb",
+			"0;2109;1;t;f;f;7890;1f9dccbd-c8d3-4ba3-8d4a-353d30200048",
+			"0;2108;1;f;f;f;7891;6f841b65-0325-43c6-a521-26d3e38d3150",
+			"0;2107;1;t;f;f;7892;1f6c0fea-d4e6-4187-a4c6-b2c31c48938c",
+			"0;2106;1;f;f;f;7893;192c1e33-1a66-4907-8e6a-bfd6a2cf51f8",
+			"0;2105;1;t;f;f;7894;d4336fc1-63c1-4682-88d4-770f65e9ff4e",
+			"0;2104;1;f;f;f;7895;03450f0e-fb78-437e-8785-516c4a54edb9",
+			"0;2103;1;t;f;f;7896;9a9bfa03-3b70-4557-9fe7-2bad0a5ca62a",
+			"0;2102;1;f;f;f;7897;b11dfe87-1ca9-4339-becf-46b9426999f9",
+			"0;2101;1;t;f;f;7898;4a53e550-a28e-4791-87a9-29db635dea1f",
+			"0;2100;1;f;f;f;7899;b45f324b-25da-4234-946e-c062c5ed0b36",
+			"0;2099;1;t;f;f;7900;5e32b73e-4bc3-4297-bcad-9d454d38c9b3",
+			"0;2098;1;f;f;f;7901;bb5fbef8-ba6b-4b15-a9f6-fe07847a5961",
+			"0;2097;1;t;f;f;7902;0404af4d-67f2-451f-a44e-18a68fcbb4c5",
+			"0;2096;1;f;f;f;7903;8cd2ae54-50e7-4f8b-a75f-c5cebaf292a3",
+			"0;2095;1;t;f;f;7904;63d6980b-9fac-461d-9cd3-399b8a99a812",
+			"0;2094;1;t;f;f;7905;d9d17f3b-362b-4290-9a32-43457e140fcc",
+			"0;2093;1;f;f;f;7906;a12f86c1-4205-4393-8ada-ba11dd6cbd24",
+			"0;2092;1;f;f;f;7907;ffad625a-6e45-4439-ab42-0e2f3989e385",
+			"0;2091;1;t;f;f;7908;eea06e07-37bb-40e4-a2d7-778720fff2d2",
+			"0;2090;1;t;f;f;7909;96978a6a-776c-4a98-bc35-53f8760d3e5e",
+			"0;2089;1;f;f;f;7910;e4b3f195-dc88-40aa-89e3-b184e59ead0e",
+			"0;2088;1;f;f;f;7911;346df67b-5ac7-480d-b397-22ce5e07fb66",
+			"0;2087;1;t;f;f;7912;4ce51ceb-ab09-4ec4-82b6-51cba4ead16c",
+			"0;2086;1;t;f;f;7913;eb126181-14a9-43e1-86ce-d95abb36169c",
+			"0;2085;1;f;f;f;7914;d2ba1ea3-5c10-4457-a684-e9e83ead8976",
+			"0;2084;1;f;f;f;7915;c06cbc88-63ab-4563-ad58-9aee58ab328e",
+			"0;2083;1;t;f;f;7916;f1b9cc10-79da-4114-8eba-fe508ad41e63",
+			"0;2082;1;f;f;f;7917;2915fbc7-3223-41d0-9cc8-44a3327d9c1c",
+			"0;2081;1;t;f;f;7918;0fc59682-2a25-49b2-9efc-a9fcb6894bac",
+			"0;2080;1;f;f;f;7919;96e2b51e-c66d-4473-baab-e117abdd7c9c",
+			"0;2079;1;t;f;f;7920;8b9e60d8-7020-4143-a44d-e42ac36b9f37",
+			"0;2078;1;f;f;f;7921;465710c6-6511-4b22-81d1-530e99ac2416",
+			"0;2077;1;t;f;f;7922;5cf859a0-1051-4408-aef0-0ab56bc8acda",
+			"0;2076;1;f;f;f;7923;30067c1a-3d47-484c-9bc7-7c1cc56399c1",
+			"0;2075;1;t;f;f;7924;0a9f0404-ac12-4709-b047-d3f2597e562a",
+			"0;2074;1;f;f;f;7925;d00030c4-f2c8-455a-ad36-e2c73a1f5f14",
+			"0;2073;1;t;f;f;7926;e979ece9-cc5e-40b6-9df5-b014201fe36e",
+			"0;2072;1;f;f;f;7927;178490fc-4b95-4a06-8c08-3cc4827edb01",
+			"0;2071;1;t;f;f;7928;42eccec5-2e76-4115-8aa4-f4d267256ac4",
+			"0;2070;1;f;f;f;7929;3172781c-bccb-484e-820d-71f0d2717931",
+			"0;2069;1;t;f;f;7930;a466d71d-739a-4860-bea1-ef8ebbcf4171",
+			"0;2068;1;f;f;f;7931;ceb0a524-fe5d-4309-b9bd-e2176b7b3ed4",
+			"0;2067;1;t;f;f;7932;406d2753-abc6-4e4d-b85e-bc51334e934c",
+			"0;2066;1;f;f;f;7933;a0341703-409e-457a-9d00-808072cf0444",
+			"0;2065;1;t;f;f;7934;253d9fda-fd06-4a42-92b5-8aa9edd46b39",
+			"0;2064;1;f;f;f;7935;943fac8a-a9f8-4e49-9dec-757bec568492",
+			"0;2063;1;t;f;f;7936;0f5d9720-8e5b-4c7c-bf8a-af49631f2ff3",
+			"0;2062;1;f;f;f;7937;3a124107-fd7b-495f-beae-1a7ac5f001a4",
+			"0;2061;1;t;f;f;7938;36296b0f-7eb2-4d84-8408-7d14c2188f07",
+			"0;2060;1;f;f;f;7939;14f7295e-b71b-428f-8041-dd38ca28a11d",
+			"0;2059;1;t;f;f;7940;90da93d5-5be4-471f-9e93-f76edb81ba74",
+			"0;2058;1;f;f;f;7941;678914fb-d0ae-4e0e-975e-d7bf9c9b9aa0",
+			"0;2057;1;t;f;f;7942;25cafacc-85a6-48aa-aa9b-aaf97d9857f7",
+			"0;2056;1;t;f;f;7943;4d2ba716-3bf5-4ca3-a2aa-a119441d4805",
+			"0;2055;1;f;f;f;7944;529e021c-743d-481d-9e94-ce3af8e0486e",
+			"0;2054;1;f;f;f;7945;9e877bbf-9a34-400b-a09f-01b98ad24a33",
+			"0;2053;1;t;f;f;7946;4afd3b0a-8f2a-43fa-b1ea-af20741380b0",
+			"0;2052;1;f;f;f;7947;547a2d16-7a27-42b8-8485-cf4725e17bb3",
+			"0;2051;1;t;f;f;7948;a29e3f50-e937-4736-bd7a-eef7102ee2ea",
+			"0;2050;1;f;f;f;7949;51bf6026-911a-4804-863d-576d9a2a08b2",
+			"0;2049;1;t;f;f;7950;0dfe2a8c-af61-4441-bd08-e1d67647227a",
+			"0;2048;1;f;f;f;7951;5734dc9f-6446-4d73-96ae-496e4321e364",
+			"0;2047;1;t;f;f;7952;890a75d9-84e2-45f8-a4dc-b34ddec16a50",
+			"0;2046;1;f;f;f;7953;4f0cdc8b-8a71-45da-ad68-d5b89cf5992b",
+			"0;2045;1;t;f;f;7954;24f43e13-1627-45b8-bbaf-f9e0e31a6ba4",
+			"0;2044;1;f;f;f;7955;40903af4-d2b8-4003-817a-dbd3518eed6b",
+			"0;2043;1;t;f;f;7956;61d0f814-afb0-417c-b017-897b4eef8745",
+			"0;2042;1;f;f;f;7957;10f8fda1-d458-4aaa-803f-ea56bcdedb23",
+			"0;2041;1;t;f;f;7958;9abb7dc8-695e-4469-80ea-31a72a49fa4f",
+			"0;2040;1;f;f;f;7959;2aee02c6-ee5c-4884-936f-ca5b2b0588e3",
+			"0;2039;1;t;f;f;7960;a5cef252-ab09-4794-93b4-4a4b03911a03",
+			"0;2038;1;f;f;f;7961;f8dbaceb-6f5c-41a6-a46c-32672b097748",
+			"0;2037;1;t;f;f;7962;7bc11a57-82a8-43c3-a775-0bb21fde4ac9",
+			"0;2036;1;f;f;f;7963;8c39e341-3a54-4eb4-8576-521fca223248",
+			"0;2035;1;t;f;f;7964;88c0601e-3780-4cdf-8b42-fd8efe7ac937",
+			"0;2034;1;f;f;f;7965;7d1c75ff-e002-426d-bc84-8c0526e206eb",
+			"0;2033;1;t;f;f;7966;08c6b088-c60b-4290-9308-d086d47eb20f",
+			"0;2032;1;f;f;f;7967;bd493ee1-d12c-4990-9a96-f95c208cb442",
+			"0;2031;1;t;f;f;7968;f1e8a7ea-64dd-47a4-93a3-db107fc13d79",
+			"0;2030;1;f;f;f;7969;c92c3c9b-4847-434e-9a27-c7e6ba6d31e8",
+			"0;2029;1;t;f;f;7970;cd462529-72b7-41a0-b4ab-625180acda0a",
+			"0;2028;1;f;f;f;7971;118406e8-d749-4071-a123-c4d97c406c69",
+			"0;2027;1;t;f;f;7972;ec11da52-18a8-4bb7-afb5-fabffc6b9291",
+			"0;2026;1;f;f;f;7973;c4d3f1a1-8fc2-4191-b44c-c4afed3d0a8d",
+			"0;2025;1;t;f;f;7974;c816b731-7df8-4e74-9d73-6b3a0a97e849",
+			"0;2024;1;f;f;f;7975;e31bb9c6-49e1-45e4-b7a8-999a3d62608a",
+			"0;2023;1;t;f;f;7976;135252b3-fad8-4358-aadf-fe2eefa2b3ce",
+			"0;2022;1;f;f;f;7977;450b172f-38ee-4817-899a-57c924d67282",
+			"0;2021;1;t;f;f;7978;3d3e23cd-0a32-4600-8a9f-576026af88f0",
+			"0;2020;1;f;f;f;7979;d684b278-47c7-48d3-9129-d8ece912ccbb",
+			"0;2019;1;t;f;f;7980;aca76928-1aa0-48ba-b259-d0eb055ae933",
+			"0;2018;1;f;f;f;7981;91e3514b-3446-4cd5-9290-f87f04fc0f35",
+			"0;2017;1;t;f;f;7982;6d3e73c2-414a-45d3-b0fd-8e591f8f7a4e",
+			"0;2016;1;f;f;f;7983;f4b2e7f2-f330-493a-b6b0-f8f63a2b0fd2",
+			"0;2015;1;t;f;f;7984;3125f272-b57e-4ba6-9c61-56db03903905",
+			"0;2014;1;f;f;f;7985;73b91c71-127e-4adf-bb5e-73814d9bece8",
+			"0;2013;1;t;f;f;7986;8207b8fd-a71b-4135-a689-6b3bd3bf4c5c",
+			"0;2012;1;f;f;f;7987;377b99a8-b3f5-4e14-a506-72a47422429d",
+			"0;2011;1;t;f;f;7988;d8dd00f7-d5a4-4ed7-a71c-7254299f14e7",
+			"0;2010;1;f;f;f;7989;2f7b63f5-4dde-4a33-a630-a88773287691",
+			"0;2009;1;t;f;f;7990;42534aee-0935-40f8-a3ef-3c59f78c7fe4",
+			"0;2008;1;f;f;f;7991;3be402cb-5e3e-4531-b05b-6c0147a4620b",
+			"0;2007;1;t;f;f;7992;55aa886b-22a0-4c41-804f-ea1946f3e90b",
+			"0;2006;1;f;f;f;7993;b30f1f87-b834-4081-a625-e2ac6a506579",
+			"0;2005;1;t;f;f;7994;7ae82b86-7b69-4bb1-aa5c-06ccb3329c35",
+			"0;2004;1;f;f;f;7995;5c25b233-75de-4d5a-b957-f43acc1f986c",
+			"0;2003;1;t;f;f;7996;ed8a9c16-0391-41b4-81fb-66046bf4b3fa",
+			"0;2002;1;f;f;f;7997;2ddb4f8c-3907-446b-aa7d-5bba35bb9a67",
+			"0;2001;1;t;f;f;7998;687708ef-bae9-4671-888e-3094f2402029",
+			"0;2000;1;f;f;f;7999;5e56a856-1220-4fa4-ad0f-1f88cf89887a",
+			"0;1999;1;t;f;f;8000;9a98364f-0977-4cb6-a6de-cc149c582552",
+			"0;1998;1;f;f;f;8001;0e4fab8d-4fec-4025-985a-b0822e2e93af",
+			"0;1997;1;t;f;f;8002;e0078fb7-65d1-4933-8018-a1734c343816",
+			"0;1996;1;f;f;f;8003;70d2bb95-0c6a-42a3-b092-f91ef86dbbde",
+			"0;1995;1;t;f;f;8004;ca79adc9-49f0-4f43-bdd1-68bebf3ac0c5",
+			"0;1994;1;f;f;f;8005;464f153e-d03a-478d-9e9b-9b235d5d9c20",
+			"0;1993;1;t;f;f;8006;f407f213-637d-4f3d-af0b-97b1b1a84e39",
+			"0;1992;1;t;f;f;8007;e8f0601a-5198-4bad-a4cd-c2815c7b4ebf",
+			"0;1991;1;f;f;f;8008;eafe262f-b70d-4fe6-a37d-d322465cbe23",
+			"0;1990;1;f;f;f;8009;6f21d524-258f-44fe-9f63-75f236bd3a41",
+			"0;1989;1;t;f;f;8010;c0156533-cc99-41c4-847e-ff0e33428ccd",
+			"0;1988;1;f;f;f;8011;f7e4a56f-88b9-43e0-988a-d61687d26aa8",
+			"0;1987;1;t;f;f;8012;4759338a-5114-4ac6-a367-c16ee186f839",
+			"0;1986;1;f;f;f;8013;ea644d78-1072-42dd-bbaf-8381b0e7b815",
+			"0;1985;1;t;f;f;8014;4825d6a1-d54c-4765-97db-4aa5d3fd48c3",
+			"0;1984;1;f;f;f;8015;e1308f25-9d40-4fe3-844a-feaf1a030f52",
+			"0;1983;1;t;f;f;8016;724f31f8-d365-4226-b12d-240ecd031727",
+			"0;1982;1;f;f;f;8017;63b7df71-de83-4468-8002-b867ce062a04",
+			"0;1981;1;t;f;f;8018;e62068c6-a202-430d-a079-dce3da01fdc5",
+			"0;1980;1;f;f;f;8019;328e1a61-f6ca-4934-86a1-713dba16abd1",
+			"0;1979;1;t;f;f;8020;5cc7d730-f533-478b-b870-506537f1f984",
+			"0;1978;1;f;f;f;8021;390ef43f-39fb-42c5-a6d4-bf6ba3e974dd",
+			"0;1977;1;t;f;f;8022;b6488dee-0b22-4eeb-8213-f99bee07ae24",
+			"0;1976;1;f;f;f;8023;8b2b2b74-e647-4ea8-a3aa-944435128b84",
+			"0;1975;1;t;f;f;8024;0c0abd90-53da-49ad-8a4a-dadb029bc9ca",
+			"0;1974;1;f;f;f;8025;151c788e-fa7a-4dd2-a71a-fdb023d878fd",
+			"0;1973;1;t;f;f;8026;ea5b955b-4d00-4c51-b2f9-c95bf5f2d2fb",
+			"0;1972;1;f;f;f;8027;b6d19af7-0a28-4175-bd22-b878b990c145",
+			"0;1971;1;t;f;f;8028;7c86127c-f029-4ccf-80dc-092974856576",
+			"0;1970;1;f;f;f;8029;962a1bc6-5e96-41c4-a702-1af2eef40de4",
+			"0;1969;1;t;f;f;8030;2968383f-a3b1-4d10-a3a1-174959c3e4dc",
+			"0;1968;1;f;f;f;8031;604fc1e3-5de8-4256-bf2e-8ea37237db1e",
+			"0;1967;1;t;f;f;8032;479f53b3-9b85-4f09-9f97-19bd2994dd9c",
+			"0;1966;1;f;f;f;8033;3d613e2f-95af-4058-80e4-8026fd90d493",
+			"0;1965;1;t;f;f;8034;bac68d80-cf49-47dc-bf28-c8cdf45d8c4c",
+			"0;1964;1;f;f;f;8035;d4042178-55c0-46ca-a1c6-ce9c75e5bc71",
+			"0;1963;1;t;f;f;8036;c8244aee-c1e6-4085-8bd5-4f255d0a3052",
+			"0;1962;1;f;f;f;8037;a6918d6e-62f3-4cca-9950-9ee8e52da107",
+			"0;1961;1;t;f;f;8038;cb1842da-88ec-4975-88f2-a03d8e690ad4",
+			"0;1960;1;f;f;f;8039;c4e16398-39fe-4492-9ff1-73c5c7cd6433",
+			"0;1959;1;t;f;f;8040;b4f54060-9f7b-4abf-8f93-9442e94aaedc",
+			"0;1958;1;f;f;f;8041;b5d30244-ba4e-48c2-938a-51e8baf5c462",
+			"0;1957;1;t;f;f;8042;432e4fa8-bed7-48a7-ad06-4fe999afcc07",
+			"0;1956;1;f;f;f;8043;e9851af0-4f33-4222-9ff5-1a69409ff427",
+			"0;1955;1;t;f;f;8044;940535a3-599d-4dea-9523-3771b62c0ed9",
+			"0;1954;1;f;f;f;8045;dacdb7ff-b91f-438c-bbea-b83ac915465d",
+			"0;1953;1;t;f;f;8046;a31b2a93-3783-4688-a8f0-162c6a9c96b4",
+			"0;1952;1;f;f;f;8047;a744d0c2-a0e6-4706-9db3-8b721fba0a2d",
+			"0;1951;1;t;f;f;8048;295690ac-1a2d-414e-9bb5-e43409330e58",
+			"0;1950;1;f;f;f;8049;87baed4d-f414-41fb-86dc-04f78de4a293",
+			"0;1949;1;t;f;f;8050;1cc2c3bd-89d0-4201-a21e-a474c47c1dd0",
+			"0;1948;1;f;f;f;8051;9752df05-32c2-451d-a367-4a96009d4ba5",
+			"0;1947;1;t;f;f;8052;71b0135a-b052-4879-9417-5e5a43aaa894",
+			"0;1946;1;f;f;f;8053;7184b52a-f65f-42c0-b80f-978adc7966a3",
+			"0;1945;1;t;f;f;8054;52ff61f7-0e40-4c1d-9a54-d91c8b9cd9a9",
+			"0;1944;1;t;f;f;8055;c87f0b6a-fd1d-4a21-990e-7b3aa48d51e3",
+			"0;1943;1;f;f;f;8056;25fcc742-428d-4d90-adfe-fc65f2c3d435",
+			"0;1942;1;f;f;f;8057;24a0742b-b9be-42a6-82d6-7a5aa20e421b",
+			"0;1941;1;t;f;f;8058;84dfb834-024e-43d5-a971-03a3cb1017fb",
+			"0;1940;1;f;f;f;8059;1fb6e6d8-afac-435d-9972-ed094f2ced53",
+			"0;1939;1;t;f;f;8060;a55b8e18-725e-4101-b2d9-0762975434a5",
+			"0;1938;1;f;f;f;8061;a7785f66-1115-4c1d-bd36-919f8b472c35",
+			"0;1937;1;t;f;f;8062;2d7bf0a2-01fc-4cc2-91b8-cd22ef7e6c87",
+			"0;1936;1;f;f;f;8063;c91b0762-5dc3-4de9-963b-72e644ed7e03",
+			"0;1935;1;t;f;f;8064;3893d689-138b-4dae-9a96-b8708d3c74fb",
+			"0;1934;1;f;f;f;8065;a41d0425-8dc6-4c38-9bbc-ed08e5911e62",
+			"0;1933;1;t;f;f;8066;8b50ebd4-d7f4-476d-8a60-49b64e8cec53",
+			"0;1932;1;f;f;f;8067;854c1b12-91b2-498d-b5c8-354e5ae46109",
+			"0;1931;1;t;f;f;8068;86e23e57-8b48-429b-8fb2-1847a336fade",
+			"0;1930;1;f;f;f;8069;6a74fca3-704c-4a7f-bd6e-0f01de355409",
+			"0;1929;1;t;f;f;8070;6280295a-890c-46b0-b3c1-373a72afa345",
+			"0;1928;1;f;f;f;8071;4d91986a-f36d-4f8b-a523-9b70fe48fdbf",
+			"0;1927;1;t;f;f;8072;2ab32505-50bc-466f-8070-11e6b7c0d707",
+			"0;1926;1;f;f;f;8073;5bbe4cf5-e627-46c6-b512-2e5754c865f3",
+			"0;1925;1;t;f;f;8074;b25d77bc-a293-45ad-ae95-a8e5f8cc441d",
+			"0;1924;1;f;f;f;8075;b4d69b78-ac63-471d-b32d-0d738d2b4e75",
+			"0;1923;1;t;f;f;8076;23b2cb08-3a4b-40c8-91c9-b08f635757ae",
+			"0;1922;1;f;f;f;8077;1778530d-18b4-4a34-95bc-1fdef03c294f",
+			"0;1921;1;t;f;f;8078;a043e2c3-2d1b-4e92-88b4-22bc5e8ca064",
+			"0;1920;1;f;f;f;8079;00d8d010-3e04-41ae-9a5c-2d14c984e280",
+			"0;1919;1;t;f;f;8080;8411abfe-2013-416b-8374-765542290afb",
+			"0;1918;1;f;f;f;8081;ffe09fe7-5ad0-4e31-ad44-6ff0b741b8ac",
+			"0;1917;1;t;f;f;8082;e79a723c-8511-497c-ac22-25284c1e7750",
+			"0;1916;1;f;f;f;8083;c46851ba-e0bc-4536-998e-3f1704617586",
+			"0;1915;1;t;f;f;8084;6d1cfc0d-2484-4e5f-8887-b8e8aef213f5",
+			"0;1914;1;f;f;f;8085;8ab697f2-afcd-41fd-9255-0df90690faa1",
+			"0;1913;1;t;f;f;8086;82aa0b29-f8cc-4185-9570-6df461e650fb",
+			"0;1912;1;f;f;f;8087;7bf8851e-fa12-4daf-aaf4-061a520ab61b",
+			"0;1911;1;t;f;f;8088;11082329-5561-42d3-8070-e36e54861393",
+			"0;1910;1;f;f;f;8089;8b26a67d-3937-47a2-8806-66264ffe1948",
+			"0;1909;1;t;f;f;8090;bb618102-297d-4e21-84c6-a91cfc3f9d15",
+			"0;1908;1;f;f;f;8091;c30c63ec-5b50-4e62-a2b0-0e81da0be55b",
+			"0;1907;1;t;f;f;8092;e4741aea-fb68-42a7-a4a5-31e6e675f4f2",
+			"0;1906;1;f;f;f;8093;3bf25c42-ed84-4af5-8b8f-74b25008af2a",
+			"0;1905;1;t;f;f;8094;da60c6c5-0edb-43fa-ae1d-8ad30fcd81b5",
+			"0;1904;1;f;f;f;8095;62461f3c-b208-48b3-a1a5-218d9996edaa",
+			"0;1903;1;t;f;f;8096;ec2eccd2-ebaa-426b-b4d4-fde9be90af71",
+			"0;1902;1;t;f;f;8097;c8613d90-4885-4428-9071-66a695477128",
+			"0;1901;1;f;f;f;8098;23b75b04-b92d-4e54-ad23-5dd31e0a4f52",
+			"0;1900;1;f;f;f;8099;c071014c-f3f6-4e3c-9d1f-d301b0a6b6d8",
+			"0;1899;1;t;f;f;8100;ce2cac48-1ed3-459b-b4dd-40a805d0bd51",
+			"0;1898;1;t;f;f;8101;61144068-c9bf-414b-9296-7c593e0a8e01",
+			"0;1897;1;f;f;f;8102;c9932cf8-cb7b-4181-96da-8c4d4c4222cc",
+			"0;1896;1;f;f;f;8103;3815fed9-b54b-4998-bfda-f5f705084f60",
+			"0;1895;1;t;f;f;8104;43797f6a-3e77-4992-9c54-6479db0c7432",
+			"0;1894;1;t;f;f;8105;9e54b2b1-8b5e-4fde-b620-dabc4265aa37",
+			"0;1893;1;f;f;f;8106;bb263f82-937a-4bfc-9c00-bd8cbbe7d8f2",
+			"0;1892;1;f;f;f;8107;31b4f261-d932-427d-90df-23fd1f164107",
+			"0;1891;1;t;f;f;8108;0426d70c-2092-440f-b770-2bfa73a185dc",
+			"0;1890;1;t;f;f;8109;dcf94e28-f47c-4c47-af0e-47a37b8fb1d7",
+			"0;1889;1;f;f;f;8110;6494ee0c-339e-4d7a-8672-34bda36fe83b",
+			"0;1888;1;f;f;f;8111;6e4dcd30-692c-49a2-b5e3-bda174f1d471",
+			"0;1887;1;t;f;f;8112;77682a1c-8f5a-43fb-a7f7-209c0baa52da",
+			"0;1886;1;f;f;f;8113;4ea5b572-81c2-4523-8d89-01ba4e669fcd",
+			"0;1885;1;t;f;f;8114;06e97826-3f3d-40b1-93da-6209cb037deb",
+			"0;1884;1;f;f;f;8115;d3b49dfb-2a91-448c-bc2a-d3bd2ae98729",
+			"0;1883;1;t;f;f;8116;dadc5adc-f457-4a07-ae6f-b8c490a80165",
+			"0;1882;1;f;f;f;8117;30397046-b302-405d-88d7-73281251a9a9",
+			"0;1881;1;t;f;f;8118;bc24f53f-ac31-4197-881c-36b1a033b3ef",
+			"0;1880;1;f;f;f;8119;a90d26f3-9fe7-41b2-b884-625193dbb9c4",
+			"0;1879;1;t;f;f;8120;b6d358df-f1f7-429b-b7c5-97217d60c440",
+			"0;1878;1;f;f;f;8121;3acfb027-6bfa-40bf-9f65-bbc46529e9f4",
+			"0;1877;1;t;f;f;8122;69f82e67-2d3d-44cb-9ce9-ad125483612a",
+			"0;1876;1;f;f;f;8123;e8bb4787-afdd-4366-8a3d-9a3099f2ba91",
+			"0;1875;1;t;f;f;8124;9f5d479c-e614-4678-8094-313b41964492",
+			"0;1874;1;f;f;f;8125;e8eb660e-fb90-4034-b9fa-c51fb3d9a1d7",
+			"0;1873;1;t;f;f;8126;dafbf369-3db1-4199-bbda-d7828c26a386",
+			"0;1872;1;f;f;f;8127;68a15f9e-08fa-4ce4-a05b-6b80978a20ec",
+			"0;1871;1;t;f;f;8128;47f6c8da-4b69-40e4-aff7-c7b572379098",
+			"0;1870;1;f;f;f;8129;0adfe0bb-4874-42c3-9321-513d042ebc17",
+			"0;1869;1;t;f;f;8130;8b4d4038-6a2e-4a8e-b392-1ff7435609de",
+			"0;1868;1;f;f;f;8131;e40ba82a-b215-467f-8e6b-171079a18cb3",
+			"0;1867;1;t;f;f;8132;231b3aea-873d-4cfa-9ce1-6afeb5d4cd60",
+			"0;1866;1;f;f;f;8133;c2544076-14b9-4a6e-98f0-3866abe4f4a3",
+			"0;1865;1;t;f;f;8134;a8c5fa92-46eb-445f-afc8-a15c8137129d",
+			"0;1864;1;f;f;f;8135;a437ee85-07e6-4a61-9a62-1320983e08d4",
+			"0;1863;1;t;f;f;8136;cb5c7f9d-a38d-41f6-8847-ae63666e37e4",
+			"0;1862;1;f;f;f;8137;4eb37ad6-0c1a-4ad0-a7fa-149d0f512cc4",
+			"0;1861;1;t;f;f;8138;458d251d-06ff-4a86-a52a-35bdec135194",
+			"0;1860;1;f;f;f;8139;046b51af-e70c-4c8a-b4c8-e3a83d2318d6",
+			"0;1859;1;t;f;f;8140;e89baa9a-7dc7-4d23-82ce-a16ba3547b57",
+			"0;1858;1;f;f;f;8141;a68bbcc7-085b-4059-b686-14647b898e10",
+			"0;1857;1;t;f;f;8142;979f10c4-6780-45fb-8eb9-3707774ef344",
+			"0;1856;1;f;f;f;8143;c5b18570-216d-4bd7-8435-4710803b5a77",
+			"0;1855;1;t;f;f;8144;88e1c90f-c7ee-4b2c-aaf5-c8c41d93283a",
+			"0;1854;1;f;f;f;8145;3ae6a4fe-3986-4c74-844a-ac4d486ff0b8",
+			"0;1853;1;t;f;f;8146;d98bf427-343e-4bea-bf3c-e06b51b2c6ab",
+			"0;1852;1;f;f;f;8147;e69cd96f-fe4a-4039-b4dc-3ae66a06a123",
+			"0;1851;1;t;f;f;8148;f1eb23b8-f15d-4d06-8f29-11fe2f4b79fa",
+			"0;1850;1;f;f;f;8149;e22b85f7-085d-4caa-9b98-657304e70c3f",
+			"0;1849;1;t;f;f;8150;867777ec-1dc0-4e6d-b76d-20c3ab721c41",
+			"0;1848;1;f;f;f;8151;8184e201-95b5-4295-99ea-bba52e026b48",
+			"0;1847;1;t;f;f;8152;2950b017-cb9b-44b1-aec3-fc69dac3d046",
+			"0;1846;1;f;f;f;8153;632b9ec5-b126-4f0d-860a-b25ad3b5440c",
+			"0;1845;1;t;f;f;8154;84d1915b-07da-47a1-83ba-e9b0b468aef7",
+			"0;1844;1;f;f;f;8155;5058cb33-73e1-44a2-84ae-deb6af3627a8",
+			"0;1843;1;t;f;f;8156;56e47f38-253e-4ab1-89db-df47cd0b0dbc",
+			"0;1842;1;f;f;f;8157;86cf7375-dada-4e32-b531-66486dc1d8d7",
+			"0;1841;1;t;f;f;8158;2e1aa8f5-91ce-413b-a853-5434d0624e03",
+			"0;1840;1;f;f;f;8159;9f1d1c99-0655-4241-be33-799e16067ae7",
+			"0;1839;1;t;f;f;8160;50d4612f-c3e7-4b4a-a004-6e84e7b5ef01",
+			"0;1838;1;f;f;f;8161;e22436ef-8b4a-4a35-b914-afb419002d81",
+			"0;1837;1;t;f;f;8162;a76b3c5a-e29b-49c6-acee-a894fa87c6f3",
+			"0;1836;1;f;f;f;8163;9323eb12-825e-4c6a-b3bb-254d8372239a",
+			"0;1835;1;t;f;f;8164;4c115064-b9bc-42b7-a598-eedbbcc1adfb",
+			"0;1834;1;f;f;f;8165;41687473-8ddf-43f9-afaa-8718b9b4ac48",
+			"0;1833;1;t;f;f;8166;c746d1bc-5f2a-403a-bd26-26f401e810d5",
+			"0;1832;1;f;f;f;8167;48bf85d2-58a0-48a8-b94a-26f86b928d8a",
+			"0;1831;1;t;f;f;8168;3dad8dc0-8dd6-43a8-a7c3-79307e2c3fe2",
+			"0;1830;1;f;f;f;8169;eea91a17-9950-4aac-99b6-038ca7ad7a4d",
+			"0;1829;1;t;f;f;8170;a376f227-15e7-425e-b99b-5b50389769ec",
+			"0;1828;1;f;f;f;8171;cc2e453b-8941-46de-9c0a-b041453271d9",
+			"0;1827;1;t;f;f;8172;7d9103de-a313-4f54-8336-3a8c0553bd17",
+			"0;1826;1;f;f;f;8173;bcf3732d-7172-4906-ab58-7c4c9c6d4f97",
+			"0;1825;1;t;f;f;8174;484526a7-6822-4de7-bd64-d542b418f909",
+			"0;1824;1;f;f;f;8175;de86a50d-ac40-4500-b94d-b9402536ba87",
+			"0;1823;1;t;f;f;8176;73faf2c9-fa8c-482c-b097-97b4031a8d86",
+			"0;1822;1;f;f;f;8177;79491001-3148-4ab9-8dd5-db69ba9a3811",
+			"0;1821;1;t;f;f;8178;e648b6c0-0b45-41d3-b6ef-df32c2bedbbb",
+			"0;1820;1;f;f;f;8179;505655bb-2519-4f1f-8adf-9042d7d9744e",
+			"0;1819;1;t;f;f;8180;66fdbf75-c7d5-4e9b-aceb-1756144ec314",
+			"0;1818;1;f;f;f;8181;42b1a7c0-1386-4051-9b07-563a8de774e0",
+			"0;1817;1;t;f;f;8182;a97644df-d906-4ce2-a266-66c411de6c20",
+			"0;1816;1;f;f;f;8183;830b4bee-4760-4da4-99bb-7b138b5095f4",
+			"0;1815;1;t;f;f;8184;b6592f02-7622-4b91-b0c3-4c2aa2cdd041",
+			"0;1814;1;f;f;f;8185;d23245b4-0ec6-4611-bdbd-44812acea2f5",
+			"0;1813;1;t;f;f;8186;f1025eac-76a0-4c88-b140-256552ec99b6",
+			"0;1812;1;f;f;f;8187;ad4ba2fa-f399-4cec-b643-afca62afbd32",
+			"0;1811;1;t;f;f;8188;05aed5b2-0136-479b-91c7-bbb9785de1cc",
+			"0;1810;1;f;f;f;8189;e8211dbb-9e2d-4061-9d5b-38188db82e28",
+			"0;1809;1;t;f;f;8190;08dc5357-a657-4895-8843-12b8ac48094f",
+			"0;1808;1;f;f;f;8191;bc0c4174-e0f1-4666-abf9-7c57e7414aae",
+			"0;1807;1;t;f;f;8192;d53d3ba2-6635-47e0-a2b7-ece07cbd9ece",
+			"0;1806;1;t;f;f;8193;826a4628-31b6-467d-8916-4951cdc9a4c6",
+			"0;1805;1;f;f;f;8194;e46e218b-58bd-42e0-aea7-7c6512348dff",
+			"0;1804;1;f;f;f;8195;c1e7b35a-c4a5-4057-bf42-798d8320d1ce",
+			"0;1803;1;t;f;f;8196;53b97852-9798-44e7-94fe-2d09f12f196a",
+			"0;1802;1;f;f;f;8197;ce63a481-d9ae-4d23-879b-94c4f72dad60",
+			"0;1801;1;t;f;f;8198;bb9903d5-9b40-4f45-b9b5-a3b15af1cd8a",
+			"0;1800;1;f;f;f;8199;a1c6eb47-d734-4d49-b23d-c36e4b0f09cb",
+			"0;1799;1;t;f;f;8200;ed155ccd-1fd5-4aee-8ce6-8e623a4a2cbb",
+			"0;1798;1;f;f;f;8201;ea500627-6aff-4678-bebe-51e1a145cff1",
+			"0;1797;1;t;f;f;8202;5c9abd53-cade-4905-be41-c01bd805e820",
+			"0;1796;1;f;f;f;8203;d5f6397e-53fc-462c-b253-fabf637df2ab",
+			"0;1795;1;t;f;f;8204;c5e44094-5aa2-4c5d-b79e-57bdcae51e67",
+			"0;1794;1;f;f;f;8205;5ba4b5b9-4295-4a36-9950-2e317320b95a",
+			"0;1793;1;t;f;f;8206;0e4c3106-c497-4ea9-8d2c-4463dd1ce926",
+			"0;1792;1;f;f;f;8207;057295c0-7f06-4984-ae18-ab06f27cad1b",
+			"0;1791;1;t;f;f;8208;0d3e345d-920e-48af-9040-d5a9969f23d1",
+			"0;1790;1;f;f;f;8209;0fb77cf5-b856-4ee0-8fa3-df269e27d194",
+			"0;1789;1;t;f;f;8210;769f580f-123b-41e1-913e-c8045ddc14d3",
+			"0;1788;1;f;f;f;8211;5b1c6c77-36da-437b-b5df-4f4e0e4f80c4",
+			"0;1787;1;t;f;f;8212;f345ddbb-76d5-4dac-9ed3-ec2dc94f3b82",
+			"0;1786;1;f;f;f;8213;86ec76e7-369f-41db-977a-4153a7bc7848",
+			"0;1785;1;t;f;f;8214;df253295-a6bf-4c2f-9da3-a8bbe61a65c9",
+			"0;1784;1;t;f;f;8215;fd3b4286-b5bc-479d-9838-18216a4fec40",
+			"0;1783;1;f;f;f;8216;6f99cc4e-1691-4abb-abc2-782032f3a2b1",
+			"0;1782;1;f;f;f;8217;010e73cc-060c-41f4-bdd7-f2433257d29d",
+			"0;1781;1;t;f;f;8218;5fc1ecfd-ae69-4026-b39e-02de39b9fb05",
+			"0;1780;1;t;f;f;8219;6498b861-5aa5-4610-b470-f0c7287d800d",
+			"0;1779;1;f;f;f;8220;b07f9aae-d4e7-4911-a047-ae259bdce76c",
+			"0;1778;1;f;f;f;8221;671bf01c-8899-4f79-9f76-93122484a554",
+			"0;1777;1;t;f;f;8222;4ce81f51-bd26-42b2-ba00-ea761eb8e142",
+			"0;1776;1;f;f;f;8223;b92db4d3-a467-4663-8249-0bef1cc74327",
+			"0;1775;1;t;f;f;8224;338bdc7f-9904-46c1-87ad-3d5c5e2f2b68",
+			"0;1774;1;f;f;f;8225;dec8ba69-41d0-4da0-afe8-fea4593b2cdf",
+			"0;1773;1;t;f;f;8226;ae0f7e83-2bec-4d9d-b7f7-aeee858f051b",
+			"0;1772;1;t;f;f;8227;3809f903-f505-4c51-a3c2-9b52248a767a",
+			"0;1771;1;f;f;f;8228;8b1558c7-ffc8-4deb-95c7-1d0e247ec368",
+			"0;1770;1;f;f;f;8229;2904b125-6efe-42d5-b1be-a8798cd045ea",
+			"0;1769;1;t;f;f;8230;25f04bfc-50ac-43b4-a43e-62061775171e",
+			"0;1768;1;t;f;f;8231;bc8a383a-a985-43b3-b21d-4ab862efff1d",
+			"0;1767;1;f;f;f;8232;2bdc9441-1ca8-44d7-8af6-2c31b412143f",
+			"0;1766;1;f;f;f;8233;269099a2-a1d8-4b81-9eee-49ba9d7a3d29",
+			"0;1765;1;t;f;f;8234;d63a2ea6-54e6-4f99-8a5e-01b0e9278f6f",
+			"0;1764;1;t;f;f;8235;ba5e6bad-b86d-40ba-950e-5601b571295a",
+			"0;1763;1;f;f;f;8236;8954d382-5d29-4905-b1ab-df274dadb97f",
+			"0;1762;1;f;f;f;8237;facd3b62-3b5e-4131-ab73-bb139f741422",
+			"0;1761;1;t;f;f;8238;c68dd224-52b9-444b-b59b-41cf52acbe4d",
+			"0;1760;1;f;f;f;8239;f8c65a2a-13bb-4cc3-927b-5996e255947a",
+			"0;1759;1;t;f;f;8240;21e061c1-c922-4a99-b5b6-871a52c262e0",
+			"0;1758;1;f;f;f;8241;9a47bb0e-b038-4a2f-9054-9bff13a6465b",
+			"0;1757;1;t;f;f;8242;8d4380dc-9098-4502-89fa-bfd19ef4ce25",
+			"0;1756;1;f;f;f;8243;af0693f9-3b2a-4e22-a759-9158405ed1a1",
+			"0;1755;1;t;f;f;8244;9ffaecf9-a0cd-407b-900d-72d5f58e268d",
+			"0;1754;1;f;f;f;8245;9c1e67fe-ee45-409e-a104-2f2a43e5ab70",
+			"0;1753;1;t;f;f;8246;f122969c-0dc8-40b2-9f8c-15546ceee6fe",
+			"0;1752;1;f;f;f;8247;797c3f63-2ac1-4175-af9c-5f7d55c88806",
+			"0;1751;1;t;f;f;8248;e2cb4216-07d7-4ec8-8841-9a6c320a3bd3",
+			"0;1750;1;f;f;f;8249;b91bc64b-9308-4f8c-a90d-9bc7ffffbb04",
+			"0;1749;1;t;f;f;8250;8bbacb77-1a5d-4fc3-87be-a92cbf5cbcfe",
+			"0;1748;1;f;f;f;8251;6f497915-1c32-44f6-8ee3-d04d3e9d16b5",
+			"0;1747;1;t;f;f;8252;e4e417a7-efee-47ee-8c8a-bfe3a5eb6031",
+			"0;1746;1;f;f;f;8253;88d2cac2-59aa-46fd-9cfa-fc885dbcfcf5",
+			"0;1745;1;t;f;f;8254;e0575b68-1a4b-4c60-87c9-5b90968e0d4c",
+			"0;1744;1;f;f;f;8255;b80dc351-0f09-4759-ab1a-7583a0c887fa",
+			"0;1743;1;t;f;f;8256;2c076dc5-2ba4-42ed-be4b-c54c39383743",
+			"0;1742;1;f;f;f;8257;ec1e1c66-6059-42b8-8200-15212ec541a5",
+			"0;1741;1;t;f;f;8258;3e6084fb-4bb9-4a1b-a422-d956f7257580",
+			"0;1740;1;f;f;f;8259;0a0acc1c-d76d-419c-8ec1-bdd95e9599c5",
+			"0;1739;1;t;f;f;8260;779b12d1-fdcb-4b61-a606-6e15a014bc11",
+			"0;1738;1;f;f;f;8261;288405e4-6a17-41c2-90f9-9101478766a9",
+			"0;1737;1;t;f;f;8262;2c6600a2-3572-4f36-bf18-3d773f661a73",
+			"0;1736;1;f;f;f;8263;9165f5de-df0b-4645-8776-33652bb5650b",
+			"0;1735;1;t;f;f;8264;b750fc08-4d60-4c1e-a133-86da711ccd7b",
+			"0;1734;1;f;f;f;8265;6c6341bf-08fc-4fc7-8f9a-4e7460f8e992",
+			"0;1733;1;t;f;f;8266;2d4bd089-2bb6-405d-bee4-55d3201071a2",
+			"0;1732;1;f;f;f;8267;7c08dbbe-7223-4475-a144-9cba1bc18ccb",
+			"0;1731;1;t;f;f;8268;40be7d9a-7d32-4d9c-91dd-ed269fc64411",
+			"0;1730;1;f;f;f;8269;1310acd2-017e-4307-b7e4-efc8075e48fe",
+			"0;1729;1;t;f;f;8270;9bc01977-73f0-4a3c-a666-4bc1c7ea486c",
+			"0;1728;1;f;f;f;8271;63cb8109-ed7e-4288-ab60-af45d2a93094",
+			"0;1727;1;t;f;f;8272;9cf9f8c4-7de9-45f3-8950-6e25af81fbb9",
+			"0;1726;1;f;f;f;8273;233b9df0-0904-4a5a-aa32-3b393e938d66",
+			"0;1725;1;t;f;f;8274;b74815cc-1a3d-4a09-8a63-ae4dc16562aa",
+			"0;1724;1;f;f;f;8275;9bdb84e0-fdb3-4e97-b0f6-de522bf9cf22",
+			"0;1723;1;t;f;f;8276;20fb2e02-be17-4c83-a782-944af18710b4",
+			"0;1722;1;f;f;f;8277;6745d57d-738a-41c7-9910-2348d43bcf4d",
+			"0;1721;1;t;f;f;8278;daf1c2b6-f412-4ba0-a15e-9575f6eff4e4",
+			"0;1720;1;f;f;f;8279;786e1fce-e964-4c4c-ba54-3c38db1874ff",
+			"0;1719;1;t;f;f;8280;17ca1233-6435-4213-98bc-7c5c8f478bce",
+			"0;1718;1;f;f;f;8281;7167c1d4-aeb1-4d4c-8654-8bb087e05b6c",
+			"0;1717;1;t;f;f;8282;edbd68c5-97aa-4e56-bb98-56dee8522493",
+			"0;1716;1;f;f;f;8283;ba7fbb24-8c86-45ac-9427-cc8875daf71c",
+			"0;1715;1;t;f;f;8284;7005a739-da1f-41f2-be5a-cbd9e2a98e91",
+			"0;1714;1;f;f;f;8285;9f5729c6-38d5-4b36-94b7-2b4c870461d8",
+			"0;1713;1;t;f;f;8286;2d23676e-d488-45fb-9390-5a6cf8c139d2",
+			"0;1712;1;f;f;f;8287;80ab97ba-fc69-4143-bd6f-eaceabcb70d7",
+			"0;1711;1;t;f;f;8288;9d18cdba-ad4d-4765-83ab-24ac44fcbbe7",
+			"0;1710;1;f;f;f;8289;80416408-87af-4ceb-bdb4-b7767c9bac76",
+			"0;1709;1;t;f;f;8290;7fe9668c-ba1c-43ce-9928-dfe5b80adb5d",
+			"0;1708;1;f;f;f;8291;2e4b3a16-21e5-43d3-80ba-8754d50feea9",
+			"0;1707;1;t;f;f;8292;0d45ca15-00cd-4cc3-a3e6-d53303479087",
+			"0;1706;1;f;f;f;8293;0f0f5d03-073b-43f1-b053-ae6d065e2c16",
+			"0;1705;1;t;f;f;8294;c699e2a3-197a-4d47-86eb-850dd350c4f1",
+			"0;1704;1;f;f;f;8295;5808014e-5930-4249-8ca8-62b91cfcd18a",
+			"0;1703;1;t;f;f;8296;85a75774-c73f-4ae7-845b-b3f0e34be46b",
+			"0;1702;1;f;f;f;8297;ab5b3ef8-2ae9-4138-b5cd-3666d7fc4334",
+			"0;1701;1;t;f;f;8298;1eb658d0-29f7-43b8-8535-d42c0bb123c0",
+			"0;1700;1;f;f;f;8299;b7a38b2d-784e-4674-9f4b-9f026e5d814e",
+			"0;1699;1;t;f;f;8300;cb11e6fd-bdb5-411c-8769-6f467ff780c5",
+			"0;1698;1;f;f;f;8301;f5449d61-01aa-4d58-85ae-9d8d5a47dc2d",
+			"0;1697;1;t;f;f;8302;0eabd31a-8384-4172-be87-0c14851cc007",
+			"0;1696;1;f;f;f;8303;150ba0ac-68f6-4527-ae90-34a30091de5e",
+			"0;1695;1;t;f;f;8304;1ddcdc0f-0cd8-4574-b032-8dbee3716197",
+			"0;1694;1;f;f;f;8305;6c619020-9a89-409b-b11a-f1a53b619416",
+			"0;1693;1;t;f;f;8306;6865bea8-2cc1-4411-a167-88b3385a9509",
+			"0;1692;1;f;f;f;8307;6f7e7c5c-4c2a-46cb-9426-832a8dd9453f",
+			"0;1691;1;t;f;f;8308;1a29a920-a9ae-43a2-b552-8cfbec59ab7a",
+			"0;1690;1;f;f;f;8309;ccd1248b-fb62-4757-b386-31035afedb4a",
+			"0;1689;1;t;f;f;8310;ee1d7bc2-28ab-40c7-b84e-fa3b06101026",
+			"0;1688;1;f;f;f;8311;44ac7746-e5cf-4489-98f9-f15e1d286863",
+			"0;1687;1;t;f;f;8312;db7777eb-176f-4ad6-91f9-274680f51d07",
+			"0;1686;1;f;f;f;8313;b9008393-352e-4ce3-a2d0-40cd0246c896",
+			"0;1685;1;t;f;f;8314;de945cab-c7f1-4b58-9b6d-84e3de901056",
+			"0;1684;1;f;f;f;8315;e0bbc760-1cec-45e6-9786-0467433a1bde",
+			"0;1683;1;t;f;f;8316;cd01050c-b3f7-4540-8eaf-76bd134b7ae5",
+			"0;1682;1;f;f;f;8317;8847f339-8979-4525-903b-ca37f6e092ec",
+			"0;1681;1;t;f;f;8318;74fe5ec2-35b2-4d2d-9e6d-45b53e81e903",
+			"0;1680;1;f;f;f;8319;e27033de-a67e-45f2-873f-36bedf507d05",
+			"0;1679;1;t;f;f;8320;3b338736-a33a-458e-86b7-6868b749f005",
+			"0;1678;1;f;f;f;8321;5191238a-c929-42d8-94ce-027fb6e2fee1",
+			"0;1677;1;t;f;f;8322;c1acfe8b-acd7-49d6-9eaa-977fa2dfad45",
+			"0;1676;1;t;f;f;8323;cf5495f7-dfd0-429d-86ab-1814736213ae",
+			"0;1675;1;f;f;f;8324;62c834c4-c57f-41e9-9455-a6e8d3aba002",
+			"0;1674;1;f;f;f;8325;5752836c-c091-40c8-bc9b-525988a2db87",
+			"0;1673;1;t;f;f;8326;cc304263-db4d-4850-916b-26d3a47eef91",
+			"0;1672;1;f;f;f;8327;9670ac3d-465c-4101-ac0b-9aee33fd28e4",
+			"0;1671;1;t;f;f;8328;7855901e-e7b2-450a-9fe4-6687ca28dfb3",
+			"0;1670;1;f;f;f;8329;1e507849-40db-47e3-a763-48af5a431bd0",
+			"0;1669;1;t;f;f;8330;7db333c2-89b3-4f31-8a09-404298b3de6f",
+			"0;1668;1;f;f;f;8331;996f7072-a1e6-4882-be58-fe47bd153dd2",
+			"0;1667;1;t;f;f;8332;c9c6f119-4157-4795-8171-ecc2c595c545",
+			"0;1666;1;f;f;f;8333;af8c0ecf-d887-4ae4-b134-a486705db6b4",
+			"0;1665;1;t;f;f;8334;10f6c625-a1a9-478e-ae88-2dbb7dfe23a5",
+			"0;1664;1;f;f;f;8335;8c25acb4-d7f8-43e7-8fd1-60d749ed2ba8",
+			"0;1663;1;t;f;f;8336;e2ae1764-3643-4049-9164-7aeeb786248c",
+			"0;1662;1;f;f;f;8337;528019b0-7ab7-4664-a0b6-c599a29ab7ec",
+			"0;1661;1;t;f;f;8338;52ed57e7-1eef-427c-99f9-8b9b353a0adc",
+			"0;1660;1;f;f;f;8339;e44e14bb-7b00-4763-9fea-19330bafbdb8",
+			"0;1659;1;t;f;f;8340;18e0b586-4761-47a3-b6d2-a215d3c3e8a5",
+			"0;1658;1;f;f;f;8341;77768152-2571-4b29-b5fa-2a4fb4d91b8c",
+			"0;1657;1;t;f;f;8342;58db5ad7-607f-44e2-b7ff-1ed64c16f1ed",
+			"0;1656;1;f;f;f;8343;e4835b35-b243-4995-a1dc-38a64751ae26",
+			"0;1655;1;t;f;f;8344;1cffaf10-03ef-4968-9818-04bbcc2bbbd3",
+			"0;1654;1;f;f;f;8345;32d69ec0-6bb1-43e7-8cd8-72075577afbf",
+			"0;1653;1;t;f;f;8346;d7e2c30f-767c-4ca7-a98a-cca8245ab825",
+			"0;1652;1;f;f;f;8347;e9484169-be8c-4fd3-a8ad-bb36a76059e6",
+			"0;1651;1;t;f;f;8348;9c5e9d4d-3c68-471e-b539-fd29ced7a424",
+			"0;1650;1;f;f;f;8349;4cfc49e5-be53-4e12-b214-f855b0111bc4",
+			"0;1649;1;t;f;f;8350;8de90af0-7851-42aa-bdbf-488eed5ab78d",
+			"0;1648;1;f;f;f;8351;be00d983-229b-464b-a60f-06776d8d2162",
+			"0;1647;1;t;f;f;8352;3e287995-3322-430c-bff2-61817fbf330a",
+			"0;1646;1;f;f;f;8353;febdc8b4-f8d0-45af-94e2-8b7c5cec4227",
+			"0;1645;1;t;f;f;8354;61b36164-c942-4814-8d9c-a6f264c69d5b",
+			"0;1644;1;f;f;f;8355;942c01c2-10c1-42d6-954c-565cfbbac162",
+			"0;1643;1;t;f;f;8356;98882b09-23ae-4243-adca-fadd65e52612",
+			"0;1642;1;f;f;f;8357;fc71f751-34a4-4c8c-8bb9-90aaabc27a7f",
+			"0;1641;1;t;f;f;8358;8860cbf9-93ab-42a3-9e6e-4ba422581e8b",
+			"0;1640;1;f;f;f;8359;94b620db-0f07-4a83-9f04-0065c0e3cd1a",
+			"0;1639;1;t;f;f;8360;5f5eb0ec-111c-439e-a87d-c27d578009e5",
+			"0;1638;1;f;f;f;8361;ad7fdd18-59f1-4e4f-8102-3447b5452aff",
+			"0;1637;1;t;f;f;8362;75506813-124d-4326-8248-f9cd29915a5f",
+			"0;1636;1;f;f;f;8363;309d7395-288f-4268-93e4-cae8b713dd93",
+			"0;1635;1;t;f;f;8364;8b0b2503-9b45-4657-9f9c-e68ceb5b75b3",
+			"0;1634;1;f;f;f;8365;4ab1a914-0996-4862-b9fa-ec22f0634c75",
+			"0;1633;1;t;f;f;8366;ccf4e2f7-e50c-468c-92af-063bf59d11c6",
+			"0;1632;1;f;f;f;8367;da891251-a4ca-45e3-8207-85d714eab924",
+			"0;1631;1;t;f;f;8368;e0e50954-3ef2-4332-81ad-695f96b0e4fb",
+			"0;1630;1;f;f;f;8369;e0fe4033-aa10-4c5a-b047-c05ee6654601",
+			"0;1629;1;t;f;f;8370;c6bd86ee-8930-4d90-858d-e6c6dc69eba2",
+			"0;1628;1;f;f;f;8371;53f88f9d-39b4-4172-a2b4-54e5a37ef6ee",
+			"0;1627;1;t;f;f;8372;38535339-7a8c-4969-bfff-3e8ff18d9d34",
+			"0;1626;1;f;f;f;8373;f48ad08e-bfc2-487e-a44d-69091c0540b8",
+			"0;1625;1;t;f;f;8374;d8111c5b-4af5-47e7-ab0d-e9ca81dc6163",
+			"0;1624;1;f;f;f;8375;36dfba30-2293-438a-a794-9ed143a6f2f8",
+			"0;1623;1;t;f;f;8376;3e453fda-0824-4434-a864-7a4ef64043ee",
+			"0;1622;1;f;f;f;8377;341da387-60a2-4a8b-848b-106cc0fc4ef0",
+			"0;1621;1;t;f;f;8378;34786e7a-df1c-47f1-aa75-da375453c08f",
+			"0;1620;1;f;f;f;8379;676d8e00-7877-4747-8979-f769326898a8",
+			"0;1619;1;t;f;f;8380;bc5ba6d0-d2e4-4819-8e3b-5f954014ffb6",
+			"0;1618;1;f;f;f;8381;5db9bfee-1ffd-4849-8f12-f22fd1ba44cc",
+			"0;1617;1;t;f;f;8382;cab6fb17-6736-4d1f-82f3-359437e784b4",
+			"0;1616;1;f;f;f;8383;906473a2-fdfc-4e0d-aed2-4aaf36329842",
+			"0;1615;1;t;f;f;8384;4f5db753-9bc0-4750-a17e-c9a5ea2e3191",
+			"0;1614;1;f;f;f;8385;e345a3d4-07c0-4a30-a4ae-2714336e06e8",
+			"0;1613;1;t;f;f;8386;42de742c-1295-4255-a9b1-c0326e7f079f",
+			"0;1612;1;f;f;f;8387;7fabf0e9-efe6-477f-9ed4-b8f1cf992ecd",
+			"0;1611;1;t;f;f;8388;c8bb690a-22e5-4401-943b-aff8e52b82d4",
+			"0;1610;1;f;f;f;8389;4b056a5c-68ae-443a-9be1-b267746b6a0e",
+			"0;1609;1;t;f;f;8390;33899858-0585-41d0-9abd-4d29ca49d8fb",
+			"0;1608;1;f;f;f;8391;f9cae423-57eb-4f5d-8560-cf4897cd3acf",
+			"0;1607;1;t;f;f;8392;eff20567-d488-4853-824d-2067529ce193",
+			"0;1606;1;f;f;f;8393;664fe902-2845-489b-91b7-193604eebd6b",
+			"0;1605;1;t;f;f;8394;eac1b35a-0805-4034-89ea-0173d5207a1a",
+			"0;1604;1;f;f;f;8395;b6bd6424-2fb7-49bd-8083-0bd61295ccba",
+			"0;1603;1;t;f;f;8396;56fc1592-5393-4fd9-8e81-59fd25c66eee",
+			"0;1602;1;f;f;f;8397;c5d19c56-cc97-498b-b798-fc411594d77e",
+			"0;1601;1;t;f;f;8398;e6ac9213-c8ca-4d8d-b3f3-c67cc4a3a865",
+			"0;1600;1;f;f;f;8399;8272a9d4-1a9f-4166-8492-aaa27202e16b",
+			"0;1599;1;t;f;f;8400;dd2c17bb-1f8b-4961-8e5e-e2ed16fb7824",
+			"0;1598;1;f;f;f;8401;e718bee9-1e90-49d3-b5e5-b921f14713b3",
+			"0;1597;1;t;f;f;8402;84251741-ae28-413f-abc5-fb5f623ea89d",
+			"0;1596;1;f;f;f;8403;7ab660f4-a579-45ed-957d-5cdf1f631399",
+			"0;1595;1;t;f;f;8404;5566fd4a-b06e-4ed8-91a2-7d2d16337e23",
+			"0;1594;1;f;f;f;8405;54d70d92-97be-4398-a06e-555506b63da7",
+			"0;1593;1;t;f;f;8406;8d43f170-bf30-4d9e-bcb4-10ba3e0d3dd9",
+			"0;1592;1;f;f;f;8407;40a0651c-ac7a-4afc-ad7d-60405f9ef77a",
+			"0;1591;1;t;f;f;8408;c9932216-ebba-48f2-b035-937ec3f50298",
+			"0;1590;1;f;f;f;8409;27d687f0-15e2-4021-9814-a440b782e65b",
+			"0;1589;1;t;f;f;8410;847548ac-c106-4c3f-82e3-aa041022f5d7",
+			"0;1588;1;f;f;f;8411;69ffcec7-d75f-490a-8849-de6c0c86c650",
+			"0;1587;1;t;f;f;8412;f94a8cc7-a642-4f73-a905-2d34b9e2f28e",
+			"0;1586;1;f;f;f;8413;4d049d47-2ca4-4fad-ba94-9cbd59b66356",
+			"0;1585;1;t;f;f;8414;67d4759d-0423-469c-a7c4-f13be029067f",
+			"0;1584;1;f;f;f;8415;929c5edb-b546-47a1-be17-0140c491ac71",
+			"0;1583;1;t;f;f;8416;50044e06-1f07-4eaa-b859-7b04fcd3f50d",
+			"0;1582;1;f;f;f;8417;bd7e676c-8d41-4dce-839e-a8ee14d95bce",
+			"0;1581;1;t;f;f;8418;6a94d7cd-6c35-4db3-bb07-6ac0e651a474",
+			"0;1580;1;f;f;f;8419;9d04fb5c-057c-4674-b6b8-f3ceb3b2e044",
+			"0;1579;1;t;f;f;8420;e2f79022-f35f-4785-bc52-1da01eea4f77",
+			"0;1578;1;f;f;f;8421;8f6a7643-31ee-4dbe-a4c4-972d56a49f0e",
+			"0;1577;1;t;f;f;8422;1ccc3a5a-90c9-4a22-95a2-87ea209932a4",
+			"0;1576;1;f;f;f;8423;28cbc771-92e7-47f2-9c9b-9fe93f90e14c",
+			"0;1575;1;t;f;f;8424;fc326f5c-e284-4a15-bde5-b6c4dc1d881a",
+			"0;1574;1;f;f;f;8425;253633f6-7079-43d1-93fb-b712923b4a28",
+			"0;1573;1;t;f;f;8426;f58ef02f-2d21-408d-85d9-4ace7ad3cb51",
+			"0;1572;1;f;f;f;8427;a1394af7-0676-4993-8567-32fc23e5184d",
+			"0;1571;1;t;f;f;8428;8b10489f-a6e3-46a7-9018-6434a80e3391",
+			"0;1570;1;f;f;f;8429;2cac5584-f83b-44ea-8a39-6200a8a6c5ba",
+			"0;1569;1;t;f;f;8430;d235ce58-797c-48fb-98fe-7aa0b2b4c550",
+			"0;1568;1;f;f;f;8431;d8113c55-5aeb-49dd-9846-d069249bccfe",
+			"0;1567;1;t;f;f;8432;59f41179-4895-4845-a267-aa0b9caf00b0",
+			"0;1566;1;f;f;f;8433;da60dd19-dd66-4f68-b052-25e66f664d09",
+			"0;1565;1;t;f;f;8434;b05de842-e305-4b83-8001-858e5973764b",
+			"0;1564;1;f;f;f;8435;0203fcde-ebcd-4be1-b450-f3d78de3e584",
+			"0;1563;1;t;f;f;8436;3a8daced-6735-49d7-b795-c565b4bd89a5",
+			"0;1562;1;f;f;f;8437;8a977417-56d4-4a5d-ae06-daf656a6cee2",
+			"0;1561;1;t;f;f;8438;138d3361-bdb3-4e94-8271-fbe2e83df79a",
+			"0;1560;1;f;f;f;8439;78684c4d-e5d3-4b40-815b-d17476ff70c6",
+			"0;1559;1;t;f;f;8440;6ac2f7de-8e37-455d-a164-9a4e7a1c2359",
+			"0;1558;1;f;f;f;8441;05fbacb1-e995-41ee-a316-5c2a5cfb45a8",
+			"0;1557;1;t;f;f;8442;832702dd-6211-4ac0-98c2-bcbeabdf691d",
+			"0;1556;1;f;f;f;8443;fb92a21f-7a30-4193-8854-b64b026990f8",
+			"0;1555;1;t;f;f;8444;60772705-5b0a-4394-8563-7f39ab3b94bd",
+			"0;1554;1;f;f;f;8445;ff6f71ad-af28-46ab-8f1b-73f8d8e92508",
+			"0;1553;1;t;f;f;8446;f619e7cb-c153-4e22-a2cc-e3f407b8381b",
+			"0;1552;1;f;f;f;8447;38cf9ebe-3f94-432c-bef1-83c24fee33fe",
+			"0;1551;1;t;f;f;8448;6868847e-a34d-4f46-8221-77dacd2d8052",
+			"0;1550;1;f;f;f;8449;e4d8a16d-b304-461b-81f3-0c4b5e0f8b19",
+			"0;1549;1;t;f;f;8450;11458f8d-cffd-491b-9d71-7e082f594d0d",
+			"0;1548;1;t;f;f;8451;1eab4afd-b780-49b9-a726-316ec1d25df9",
+			"0;1547;1;f;f;f;8452;a9f628f0-ed9a-44cc-a49d-40b2f75b6d19",
+			"0;1546;1;f;f;f;8453;69ed8ded-8b1c-4ba8-9c76-3cd5e13e2e1f",
+			"0;1545;1;t;f;f;8454;b08f9ce4-df82-4475-892d-a9554d9f2df9",
+			"0;1544;1;t;f;f;8455;f52f5ca5-acf9-4a39-aeb7-fd3a2ac54121",
+			"0;1543;1;f;f;f;8456;123d29e0-8e85-4ff0-88e2-da1b996e4ef6",
+			"0;1542;1;f;f;f;8457;5c1667fc-9e27-45a2-8938-7a404e79489b",
+			"0;1541;1;t;f;f;8458;2a054749-13db-48dd-8588-0902408ca520",
+			"0;1540;1;t;f;f;8459;b7d86bac-4b41-409a-8de6-65d7ca369e06",
+			"0;1539;1;f;f;f;8460;768a78d9-cd18-4be5-9383-5cfddea0e675",
+			"0;1538;1;f;f;f;8461;09490ead-8738-4d4d-86eb-946d4d680cd1",
+			"0;1537;1;t;f;f;8462;64efd493-3a23-4e03-a0d4-0f24e45c90e7",
+			"0;1536;1;f;f;f;8463;31404cd5-8042-45c2-9c66-08c201690b6c",
+			"0;1535;1;t;f;f;8464;5ad33555-dee2-44c7-a354-81a9e832e944",
+			"0;1534;1;f;f;f;8465;9f51dac5-bbcb-4d24-b58a-776ddaef5f70",
+			"0;1533;1;t;f;f;8466;02770426-0b02-4e9d-bba0-1198c1ea216f",
+			"0;1532;1;f;f;f;8467;78e7b250-8337-4aa7-ac5c-60bfd912bbba",
+			"0;1531;1;t;f;f;8468;f4461555-247b-4164-8836-58ff9bfa7bc8",
+			"0;1530;1;f;f;f;8469;b6fe0188-1f1c-448e-9fef-f96bbab34406",
+			"0;1529;1;t;f;f;8470;ecbe3f87-09d7-4b97-9f0d-8a8eca9e1fe4",
+			"0;1528;1;f;f;f;8471;7b89c24a-0fd0-40ae-bb93-8f0ad264aa22",
+			"0;1527;1;t;f;f;8472;eb5fbc27-56b9-42d7-a927-4b1e3cf51611",
+			"0;1526;1;f;f;f;8473;731bca84-ec4b-4271-9fec-1a19b1d5b479",
+			"0;1525;1;t;f;f;8474;ece18c1b-ae5e-4b5b-8e03-c7ac6dbef1f5",
+			"0;1524;1;f;f;f;8475;7e576f21-5842-47cc-9804-1c8512db9be6",
+			"0;1523;1;t;f;f;8476;f7b4f075-2cc1-4a5d-93fd-e5708c4049b3",
+			"0;1522;1;f;f;f;8477;150acddb-c12b-4349-aaa9-541361e44e8c",
+			"0;1521;1;t;f;f;8478;33958015-1a1b-42c7-83d9-892895ef4247",
+			"0;1520;1;f;f;f;8479;5f3cf168-b289-46e3-a006-da2e57dd4924",
+			"0;1519;1;t;f;f;8480;0c9d9814-21be-4bda-bdd4-8087385b9301",
+			"0;1518;1;f;f;f;8481;e9070234-4a53-4a61-b968-d7fd0d4063cb",
+			"0;1517;1;t;f;f;8482;4216f22d-dd92-40f1-a519-8ead49cb761a",
+			"0;1516;1;f;f;f;8483;9cd768ff-21ef-434d-b91c-1ba76e4843bb",
+			"0;1515;1;t;f;f;8484;29154425-ab58-490b-8c83-d2647fe49be7",
+			"0;1514;1;f;f;f;8485;f41bc09b-994c-47d0-9251-bb292b928980",
+			"0;1513;1;t;f;f;8486;1e1625af-6603-4f52-8df8-97b1261a1bb2",
+			"0;1512;1;f;f;f;8487;b3d81e55-e2ae-40a6-8d0b-31c1b023f608",
+			"0;1511;1;t;f;f;8488;c5556148-30b7-45d7-abad-28566b7e95b5",
+			"0;1510;1;f;f;f;8489;4c1745e1-2f03-4f4c-b570-2784b7678a70",
+			"0;1509;1;t;f;f;8490;e1b01495-b433-4646-a4d3-828eeb7522f9",
+			"0;1508;1;f;f;f;8491;55a899e5-6221-40f8-8b54-76728be3ffe4",
+			"0;1507;1;t;f;f;8492;55a4c68b-cc0b-41a6-87d7-57591212d69e",
+			"0;1506;1;f;f;f;8493;2f4cfa55-4eaa-4380-b4c4-f289145b9cfe",
+			"0;1505;1;t;f;f;8494;d416822a-5379-4b7e-9a8e-1129467f9929",
+			"0;1504;1;f;f;f;8495;fd4a24c8-39c9-4ae4-ac74-c76887f988ad",
+			"0;1503;1;t;f;f;8496;839a44b7-ca48-4f50-9d49-0d639b71351d",
+			"0;1502;1;f;f;f;8497;1e9b7ee3-a9a5-43a5-911e-171eae759588",
+			"0;1501;1;t;f;f;8498;3fd43bea-4073-4e22-b202-e2ee05f150af",
+			"0;1500;1;f;f;f;8499;f3728b27-0bfd-4de0-a986-b76ace6f131a",
+			"0;1499;1;t;f;f;8500;481f3935-c7d2-48b4-8295-022adc377897",
+			"0;1498;1;f;f;f;8501;a78c7b2d-1971-4b85-b1c0-7d7e9e059fb5",
+			"0;1497;1;t;f;f;8502;b7b6a5c9-86fc-4c7b-8eb8-b6e5a6f68d68",
+			"0;1496;1;f;f;f;8503;639ac64a-09c1-47ee-b9bb-38926054d90a",
+			"0;1495;1;t;f;f;8504;08a2e9e7-a57c-4d94-915c-0501e063ac55",
+			"0;1494;1;f;f;f;8505;fd9246bb-20b2-4a71-a524-741f63082249",
+			"0;1493;1;t;f;f;8506;64c58d32-ff92-4a73-b0a3-2c726ad4c45f",
+			"0;1492;1;f;f;f;8507;cddab611-3e39-48b8-ba6b-66fa5eb163af",
+			"0;1491;1;t;f;f;8508;dc89af0d-26d5-417a-b587-3a8157400365",
+			"0;1490;1;f;f;f;8509;cfa59b8a-5098-4309-9516-4f827d9257fa",
+			"0;1489;1;t;f;f;8510;3c48a616-d6e8-43b1-b369-1fa0adaace80",
+			"0;1488;1;f;f;f;8511;0f165273-8c53-486d-9dd9-703d0434c1c4",
+			"0;1487;1;t;f;f;8512;e4bee332-6626-4f75-b806-3e9dcdcf7e25",
+			"0;1486;1;f;f;f;8513;20fba861-ead7-4f8e-a66c-ca0471181850",
+			"0;1485;1;t;f;f;8514;2c47ef6c-1bcc-466d-85f2-3b014b88c221",
+			"0;1484;1;f;f;f;8515;a4e387bb-eca2-4252-a736-b1e01e7814d7",
+			"0;1483;1;t;f;f;8516;cb7ed01f-1b53-451b-86de-d1658944cbfa",
+			"0;1482;1;f;f;f;8517;4942bfdd-7b14-43e2-a815-a1630a15e7fa",
+			"0;1481;1;t;f;f;8518;9305c5ae-c3aa-43fa-9cb4-c12cdbb6ff6e",
+			"0;1480;1;f;f;f;8519;a78a9fa3-d9a3-4d4b-ba18-67deb4da7d71",
+			"0;1479;1;t;f;f;8520;f623984e-76ac-4d0e-a0fc-9868abe43b54",
+			"0;1478;1;f;f;f;8521;21256003-d431-4412-9745-030391b08c74",
+			"0;1477;1;t;f;f;8522;f808838f-6b39-43bd-92f3-86d210646c1a",
+			"0;1476;1;f;f;f;8523;140fdd38-02a6-42bc-9017-806dcbde5587",
+			"0;1475;1;t;f;f;8524;d761b6ba-c67a-4743-bac8-71d5dd5de2c9",
+			"0;1474;1;f;f;f;8525;b2d004c4-5384-480c-a725-7d5aac8d1f1d",
+			"0;1473;1;t;f;f;8526;de4d41f0-3e89-4edf-811c-8cff45c65f71",
+			"0;1472;1;f;f;f;8527;6d88736a-f5f3-41fc-abea-e372a887be5e",
+			"0;1471;1;t;f;f;8528;b0f47b4a-01df-4c35-b502-13600d8076e9",
+			"0;1470;1;f;f;f;8529;f4665100-74cd-4004-af06-4b8941c93f1e",
+			"0;1469;1;t;f;f;8530;8adf03b5-0768-4d83-b3da-ad9b15cca906",
+			"0;1468;1;f;f;f;8531;e90bcaec-4767-49ae-a6b6-4308992d4115",
+			"0;1467;1;t;f;f;8532;7c0bb3f0-4c09-41b5-a538-d13a5ad8af46",
+			"0;1466;1;f;f;f;8533;f7010a10-e016-4133-aef7-20f07b15c1eb",
+			"0;1465;1;t;f;f;8534;47001df1-2aa6-4893-bdef-24c80c6115f3",
+			"0;1464;1;t;f;f;8535;51ee90c3-2cf6-4220-8e88-e49a2dab6070",
+			"0;1463;1;f;f;f;8536;574d9fd4-ff6d-4278-9bc1-1efe6d526b1c",
+			"0;1462;1;f;f;f;8537;781a7fa7-7924-427d-b7fc-5d8869e87f50",
+			"0;1461;1;t;f;f;8538;374c6631-1623-4da5-90f2-174b68161b34",
+			"0;1460;1;f;f;f;8539;a2d3ee88-765b-4a6a-8886-79aa98a6522b",
+			"0;1459;1;t;f;f;8540;43dd47d1-659f-4bcd-b4a2-3d21787382fa",
+			"0;1458;1;f;f;f;8541;9f8213ca-0b1a-42f3-9571-01d6fe28cffd",
+			"0;1457;1;t;f;f;8542;d5f429f6-b3fa-4b96-b099-8ca3313e9a9a",
+			"0;1456;1;f;f;f;8543;d725cd6a-3552-4669-b605-406e7d56433a",
+			"0;1455;1;t;f;f;8544;a06c9b80-f6e9-41f2-bdcd-c48be9e09709",
+			"0;1454;1;f;f;f;8545;70f83710-3ea2-4428-8d44-492863548ea3",
+			"0;1453;1;t;f;f;8546;56927209-7911-4349-b565-7c3d850a0b73",
+			"0;1452;1;t;f;f;8547;b13be7cb-0fc3-4cdd-875a-67eea76d83cc",
+			"0;1451;1;f;f;f;8548;fb78bc76-e355-4f3b-83c3-5a92c47e5734",
+			"0;1450;1;f;f;f;8549;dc750b51-1e8c-4494-ab1e-6cbaf280165a",
+			"0;1449;1;t;f;f;8550;8e9efe56-06ab-4094-abc7-e3ecc4c0418d",
+			"0;1448;1;f;f;f;8551;c377a4e2-2cb9-417a-b23f-fb0c3e4e511c",
+			"0;1447;1;t;f;f;8552;28864b66-afd9-41ae-acd8-a44f8c617971",
+			"0;1446;1;f;f;f;8553;3ec0c3cc-812d-45cc-a924-c7d806df8027",
+			"0;1445;1;t;f;f;8554;892393dc-baa6-497b-8e40-6662b5da5aac",
+			"0;1444;1;f;f;f;8555;d7dcf5a9-f028-456b-ba58-222d307fa3aa",
+			"0;1443;1;t;f;f;8556;a7237bd2-5b75-4c46-8291-eca5a53d15b3",
+			"0;1442;1;f;f;f;8557;2f11caf3-24ea-4a04-ac82-36a50e4ef720",
+			"0;1441;1;t;f;f;8558;47e0a186-4a73-4096-b0fe-ecc512ccd06b",
+			"0;1440;1;f;f;f;8559;8f10d093-46f9-4020-bd48-ffb456ebbb88",
+			"0;1439;1;t;f;f;8560;06aaa3ac-eabc-4661-a8e8-42cf8d1bc327",
+			"0;1438;1;f;f;f;8561;d1bd8aa3-99c0-4ad4-a9eb-520b1d38b759",
+			"0;1437;1;t;f;f;8562;268a703c-0bd8-4cc1-bcf4-5da8fcf5fa26",
+			"0;1436;1;f;f;f;8563;a9bddbf9-75ba-4ddb-bc2d-f2c572a1b6f0",
+			"0;1435;1;t;f;f;8564;0dabac5e-55c9-463d-90c3-5be67c1346d1",
+			"0;1434;1;f;f;f;8565;4c65d476-78ca-4300-80dc-757bb3954f8a",
+			"0;1433;1;t;f;f;8566;bd81cb4d-3b4e-483e-9023-0331bbccb8cc",
+			"0;1432;1;f;f;f;8567;204c8277-6291-4b73-8337-bcdd8afac906",
+			"0;1431;1;t;f;f;8568;a1962236-85d0-4e5e-b7ef-b410e697eabd",
+			"0;1430;1;f;f;f;8569;fefca059-25d4-4f47-a55b-e1df270e194b",
+			"0;1429;1;t;f;f;8570;15567d35-dd47-4be1-96e7-1d2614be696e",
+			"0;1428;1;f;f;f;8571;4660040a-112a-4fa1-9478-9057504585a3",
+			"0;1427;1;t;f;f;8572;68f8218a-7c2d-49e5-b62c-5ada3cb32b07",
+			"0;1426;1;f;f;f;8573;498ebcb9-a74b-4f78-bf49-9e1c40fe7090",
+			"0;1425;1;t;f;f;8574;025b87c3-bb01-40bf-8017-01a7787e19d7",
+			"0;1424;1;f;f;f;8575;bb2c395b-10e7-4e26-bd38-d651de8fc52e",
+			"0;1423;1;t;f;f;8576;329e0c8c-7464-4835-b1e6-1bca6dcaab94",
+			"0;1422;1;f;f;f;8577;8bece778-9a78-4d3c-9352-be8d91d16a48",
+			"0;1421;1;t;f;f;8578;14952eae-ca7a-4960-b076-cfda943fecaa",
+			"0;1420;1;f;f;f;8579;0a97821f-0954-4513-bd94-721ffd8eaaa7",
+			"0;1419;1;t;f;f;8580;ed5646d9-f949-47e8-adfe-23fb7df77859",
+			"0;1418;1;f;f;f;8581;4d29b6b0-7fad-449d-994f-a107a6d93e9c",
+			"0;1417;1;t;f;f;8582;04467061-e4ee-4ede-807b-70b2171cfa06",
+			"0;1416;1;f;f;f;8583;c0d5ae89-6acf-4543-9ab4-f52fd98de03e",
+			"0;1415;1;t;f;f;8584;bf8e771e-180b-4f3d-9be4-606cc952574e",
+			"0;1414;1;f;f;f;8585;67d83406-d0b2-4f29-9c1c-f3ac07cff219",
+			"0;1413;1;t;f;f;8586;d42f4732-c1c8-40ca-85ba-7440869bc4ff",
+			"0;1412;1;f;f;f;8587;310468e6-52f8-40fb-9400-1fa603790096",
+			"0;1411;1;t;f;f;8588;659f807e-38dd-4e8d-9931-22ff3db537ce",
+			"0;1410;1;f;f;f;8589;67c66aca-d2d5-4f7c-9f1b-f72c98f656c9",
+			"0;1409;1;t;f;f;8590;b25f95f8-8de4-42ee-90ec-511b76a7a258",
+			"0;1408;1;f;f;f;8591;a139ca08-6729-4064-b531-9c8098186924",
+			"0;1407;1;t;f;f;8592;a8cac293-ca26-40e7-b7a9-47ad51b46bd9",
+			"0;1406;1;f;f;f;8593;8d0d4dcc-b446-4450-ab1f-f6f1a0b5f3b0",
+			"0;1405;1;t;f;f;8594;02426035-c8f9-4a0c-b559-f6a690dc367d",
+			"0;1404;1;f;f;f;8595;c8f6e186-c5f8-4da0-81e6-7c7b243ab9c6",
+			"0;1403;1;t;f;f;8596;72c7061c-ebf0-4cad-8825-8ed79804ef3f",
+			"0;1402;1;f;f;f;8597;cb93dec3-e87a-42ce-b6dd-545e77371e22",
+			"0;1401;1;t;f;f;8598;3500a7fa-8689-4c3d-b401-69fa62c4d7da",
+			"0;1400;1;f;f;f;8599;f16150fc-8129-4810-b582-13b2dcfdc6ec",
+			"0;1399;1;t;f;f;8600;98641029-21b3-4c50-9dde-e83e96a98b5f",
+			"0;1398;1;f;f;f;8601;4e838e63-2335-4d58-a326-563b372aa4a2",
+			"0;1397;1;t;f;f;8602;eaea5c2b-3ab2-4ea0-a481-4a64f33aeb67",
+			"0;1396;1;f;f;f;8603;199579a7-f28f-41bf-b3cc-aba5d8053a55",
+			"0;1395;1;t;f;f;8604;9e5d4b66-3597-4af7-9f2d-e3d6edb3fc1f",
+			"0;1394;1;f;f;f;8605;6dce4fd4-0352-4730-a7be-e83e42c4365d",
+			"0;1393;1;t;f;f;8606;11622dc6-0660-47ee-b521-768f07d81993",
+			"0;1392;1;f;f;f;8607;d3aa447b-32c6-4ea4-8f0e-b784f9c6ccfc",
+			"0;1391;1;t;f;f;8608;deb028d5-66c7-43cc-a141-37bdace9f65a",
+			"0;1390;1;f;f;f;8609;148c40e6-667d-4763-9c1d-75a71ccdf91c",
+			"0;1389;1;t;f;f;8610;b51eea4f-b345-4273-bd8b-6735b23519ba",
+			"0;1388;1;t;f;f;8611;cc045c90-91c8-4556-9bf9-019072fb1e52",
+			"0;1387;1;f;f;f;8612;f4066b80-cc81-449c-bd8e-c9e64de83aea",
+			"0;1386;1;f;f;f;8613;0dc4a5f0-add6-4642-b785-4a8c9e37684e",
+			"0;1385;1;t;f;f;8614;490179de-ab4b-4ed5-b092-164429e29174",
+			"0;1384;1;t;f;f;8615;1d24024b-5f35-49f2-b8e8-23f47c5716eb",
+			"0;1383;1;f;f;f;8616;97ed6882-ebd9-4d2a-aa32-8e30644c8c1c",
+			"0;1382;1;f;f;f;8617;cb83f8c5-abf2-4a5f-87b6-01d731157757",
+			"0;1381;1;t;f;f;8618;1d55e7ad-497f-49f1-9642-2aaed8edf863",
+			"0;1380;1;f;f;f;8619;928ae296-b1b1-4398-b691-7e9de9f949f3",
+			"0;1379;1;t;f;f;8620;937ef4f3-e96a-4171-863c-cd6b654af369",
+			"0;1378;1;f;f;f;8621;e05bf839-d877-4a41-9a85-4e73906b5e0f",
+			"0;1377;1;t;f;f;8622;4762b3a0-69de-4daf-b943-710042a1df1f",
+			"0;1376;1;f;f;f;8623;1e169f4b-43ec-4b14-b75e-1090602bdd6a",
+			"0;1375;1;t;f;f;8624;b9021254-f1e8-4d5f-a12d-afc1999b1aa8",
+			"0;1374;1;f;f;f;8625;4a5c632b-6bbf-46a7-b225-94c8dd4868a7",
+			"0;1373;1;t;f;f;8626;143097be-c2b9-4423-800c-df7226950aa9",
+			"0;1372;1;f;f;f;8627;29104e58-e432-4764-a7d3-ccdd070821fa",
+			"0;1371;1;t;f;f;8628;e49263a6-79db-4418-8b68-c08cef3e4e01",
+			"0;1370;1;f;f;f;8629;a492ab6a-5ae9-46a2-8305-1665a7358e2d",
+			"0;1369;1;t;f;f;8630;4c2c3af4-88d3-4a10-a31c-138911e80770",
+			"0;1368;1;t;f;f;8631;109397d6-807d-44aa-a21c-2231d8665654",
+			"0;1367;1;f;f;f;8632;7f31be82-0cc7-46c7-b2e5-e2d5e3badcec",
+			"0;1366;1;f;f;f;8633;1816d342-ad2e-40c5-93ee-8dee220d0e03",
+			"0;1365;1;t;f;f;8634;1dfd3ac6-82c2-45cf-ab4e-16e74b58e7c2",
+			"0;1364;1;t;f;f;8635;fa2a70ac-2cba-4b97-a0ad-55efcecc127a",
+			"0;1363;1;f;f;f;8636;9b5dee91-b246-498f-9aee-cab9732da878",
+			"0;1362;1;f;f;f;8637;ae9d02c6-36c8-4f8e-ad9f-48b228766738",
+			"0;1361;1;t;f;f;8638;fdd15bdb-6ba6-4864-b884-129ad8acf080",
+			"0;1360;1;t;f;f;8639;6f4fa412-180c-4cb8-86d0-46ef0c98a98f",
+			"0;1359;1;f;f;f;8640;41357c6b-50f6-4364-88f9-468b1217e868",
+			"0;1358;1;f;f;f;8641;7432e206-8629-4d80-ba87-dedb5200e0df",
+			"0;1357;1;t;f;f;8642;cbc27a9d-6e23-478c-9b3c-e1599d2fc31e",
+			"0;1356;1;f;f;f;8643;86deefb8-b664-41ed-87fb-0a73f4e1056e",
+			"0;1355;1;t;f;f;8644;429c67fb-5a0a-43af-bcc4-898f8f3550dc",
+			"0;1354;1;f;f;f;8645;27837126-267f-4a33-88eb-ecb6df13d9e3",
+			"0;1353;1;t;f;f;8646;663f5c8e-f395-4709-a9f9-a326822541df",
+			"0;1352;1;f;f;f;8647;4162e841-6863-402b-8cb9-133e6bb9efb0",
+			"0;1351;1;t;f;f;8648;6ad28ad4-fdec-4f00-a9d4-e9182669d6f7",
+			"0;1350;1;f;f;f;8649;5eb46c29-84fa-4d0f-bb6e-d23af16ec4c1",
+			"0;1349;1;t;f;f;8650;065c7556-98e8-4421-83d9-db6ad0248739",
+			"0;1348;1;f;f;f;8651;6c3e2f1c-733e-41d8-9c4d-874bfd1292ee",
+			"0;1347;1;t;f;f;8652;03e211ae-11d6-4e2b-a428-99536ab97c31",
+			"0;1346;1;f;f;f;8653;62f52b11-7b73-4ffd-bfd2-d1616ddd4311",
+			"0;1345;1;t;f;f;8654;90c4303e-2e41-43df-85a0-34c5c3bafce1",
+			"0;1344;1;f;f;f;8655;a2282048-73a6-4e65-90bf-d47261976e9e",
+			"0;1343;1;t;f;f;8656;f8066f37-12d3-422e-a396-665499ab9b34",
+			"0;1342;1;f;f;f;8657;a7166e26-3087-413f-9be9-897eefc1eb56",
+			"0;1341;1;t;f;f;8658;23edd278-9784-445f-a987-c1ed4d61bdf4",
+			"0;1340;1;t;f;f;8659;2480985c-fe38-4791-84e5-8a0092ef4f07",
+			"0;1339;1;f;f;f;8660;fb5dcd5f-bbca-429f-8a1d-96faa2fa8277",
+			"0;1338;1;f;f;f;8661;2871cfc4-067b-4cd3-8edc-22cea7734299",
+			"0;1337;1;t;f;f;8662;a4941fdd-b5d5-4fe1-8273-93da9194078a",
+			"0;1336;1;f;f;f;8663;052a607c-908b-49ed-85ea-a84a2f1ac0e5",
+			"0;1335;1;t;f;f;8664;a9b32638-4ced-4485-8f08-e286d0f08ed3",
+			"0;1334;1;f;f;f;8665;4ce4e721-8274-4457-8496-4f7f57c42a25",
+			"0;1333;1;t;f;f;8666;a0bb1934-638e-46c3-913a-07a8f67bc575",
+			"0;1332;1;f;f;f;8667;47f290c2-8c61-4396-ad45-3148e4ecab9a",
+			"0;1331;1;t;f;f;8668;5d8b0d58-46ff-4fa7-a231-7df17b9bbd2b",
+			"0;1330;1;f;f;f;8669;f62d9e4d-a866-471f-b8d2-c69787dfe70f",
+			"0;1329;1;t;f;f;8670;94a55232-1e09-4065-b891-8cd3a1bf5f9f",
+			"0;1328;1;f;f;f;8671;499e88a9-123b-4e0c-9470-c47ab94f95cd",
+			"0;1327;1;t;f;f;8672;367eee51-e8e7-49e9-80fe-a374a51862b7",
+			"0;1326;1;f;f;f;8673;d8d0d057-9d5c-4f37-a051-779e81fad309",
+			"0;1325;1;t;f;f;8674;309b8494-337c-4a99-b58b-69e851b72d9f",
+			"0;1324;1;f;f;f;8675;e0282e67-2bb2-408d-aafd-9cd66dad4c71",
+			"0;1323;1;t;f;f;8676;2a16cad7-de40-45a3-b7b0-54754b0bc627",
+			"0;1322;1;f;f;f;8677;14184ce3-5e34-4d81-9b73-df6c6684dbd1",
+			"0;1321;1;t;f;f;8678;5ea775cd-5c37-4fe1-846d-31eaeed00822",
+			"0;1320;1;f;f;f;8679;7347f422-9135-4011-aaa2-4da0d5bdf2c1",
+			"0;1319;1;t;f;f;8680;32867582-d0ed-4bef-a185-faeeeb55205d",
+			"0;1318;1;f;f;f;8681;79eac331-1967-491c-84bf-6ee9371f129d",
+			"0;1317;1;t;f;f;8682;5da753f1-6f33-40d0-8a90-93a8fa7af91c",
+			"0;1316;1;f;f;f;8683;2a19d579-d683-4199-baab-bba2f6d754f3",
+			"0;1315;1;t;f;f;8684;20ae6c15-8764-474f-959c-91035565ba10",
+			"0;1314;1;f;f;f;8685;f2e2af9a-b6fe-4653-96b1-7a2c76236d84",
+			"0;1313;1;t;f;f;8686;ba683d2a-5f45-4a87-9e5e-254cbaf3c323",
+			"0;1312;1;f;f;f;8687;fc9ca2a0-a14c-4356-8ed9-c7c3ea6ef095",
+			"0;1311;1;t;f;f;8688;370cbedd-9f9a-4f81-8346-f095c94ca631",
+			"0;1310;1;f;f;f;8689;44f4cb49-c403-4371-9574-852797178118",
+			"0;1309;1;t;f;f;8690;e6cbe44c-a405-4481-a123-3bba851aa1f5",
+			"0;1308;1;f;f;f;8691;3dafdfce-477e-4188-9732-18812acb3caf",
+			"0;1307;1;t;f;f;8692;277b9a86-cc38-4c22-aba2-ed002a227158",
+			"0;1306;1;f;f;f;8693;fdf325a8-ae4a-4dfb-bced-a4d27950e484",
+			"0;1305;1;t;f;f;8694;159bad31-772c-4ad3-b6db-a1a2d57fb600",
+			"0;1304;1;f;f;f;8695;2b200a50-a8fa-48bb-9e80-0cdb86da7eb1",
+			"0;1303;1;t;f;f;8696;92208da6-b0ec-42a6-b549-105684d0027e",
+			"0;1302;1;f;f;f;8697;97bcb06c-64b9-428d-b52b-42c5838efb0c",
+			"0;1301;1;t;f;f;8698;5a20119d-5904-455c-a7fa-6e4c12d6b6b7",
+			"0;1300;1;f;f;f;8699;0794e94b-e09b-4243-a470-1a99447de226",
+			"0;1299;1;t;f;f;8700;acef20e9-b3cd-4de6-8d8e-f2b68b2e0bb1",
+			"0;1298;1;f;f;f;8701;f54506a1-2ef8-4494-aa19-9fc71cf63e00",
+			"0;1297;1;t;f;f;8702;68542ffd-81a1-4f66-a079-7cb83e52f135",
+			"0;1296;1;f;f;f;8703;8bdcb9be-9fae-4196-971d-789349077781",
+			"0;1295;1;t;f;f;8704;83b8186b-4789-417d-9d29-e9d8317449f4",
+			"0;1294;1;f;f;f;8705;d4b326b3-a121-411d-ba0a-d6cc5c5da9bf",
+			"0;1293;1;t;f;f;8706;939077d0-d3ff-4d8a-8f94-811215f3a004",
+			"0;1292;1;f;f;f;8707;e7ee4bf6-2de9-47cf-b2fe-673a905d64ca",
+			"0;1291;1;t;f;f;8708;cc6310bf-fba7-49d5-ba88-acbdd881b0af",
+			"0;1290;1;f;f;f;8709;0ef443c3-09ca-40a3-91af-157c40e12d37",
+			"0;1289;1;t;f;f;8710;127cbacb-0dbe-430f-96a2-626faf3d2675",
+			"0;1288;1;f;f;f;8711;36ed83c9-73e6-4ad1-98f7-aadce88e5566",
+			"0;1287;1;t;f;f;8712;e7e0d1bf-0008-4471-8e5e-817b2b39aec9",
+			"0;1286;1;f;f;f;8713;d3001db4-fb28-41e1-9d84-c5c5ccb89a5f",
+			"0;1285;1;t;f;f;8714;04efe551-4c25-4d16-827c-9b5ef709ac15",
+			"0;1284;1;f;f;f;8715;49b51c14-19e7-4fdb-aad7-b5bbe0407616",
+			"0;1283;1;t;f;f;8716;c6149310-e42a-4af0-8a5c-6ae967544a7d",
+			"0;1282;1;f;f;f;8717;1cb9e572-c608-4e3e-a159-cb4c92da1097",
+			"0;1281;1;t;f;f;8718;87c405aa-0115-424d-bea7-6d5a566cc756",
+			"0;1280;1;f;f;f;8719;68520ff9-7944-4a27-98c0-cdce016b12f2",
+			"0;1279;1;t;f;f;8720;60dffa2c-aa84-4fb7-840a-8b829aa4616d",
+			"0;1278;1;f;f;f;8721;999a9d02-3959-4007-b1d9-a384381c8929",
+			"0;1277;1;t;f;f;8722;49e3a96a-c376-4a3a-ac75-55b00f644acc",
+			"0;1276;1;f;f;f;8723;4ad05848-b29a-4aa3-a7d8-f38c0f69c545",
+			"0;1275;1;t;f;f;8724;f242de35-13ba-4aa6-bfb8-c87e67aeaff1",
+			"0;1274;1;f;f;f;8725;9aa42bed-497f-4799-aa77-9317d5759dbe",
+			"0;1273;1;t;f;f;8726;adae6161-64da-48c3-933d-73dfa3fefbfa",
+			"0;1272;1;f;f;f;8727;052b4f44-b5dc-4571-b3dc-e95b01a4f6c6",
+			"0;1271;1;t;f;f;8728;6bd9229e-a9f7-4a62-a63f-6b2c428f6e37",
+			"0;1270;1;f;f;f;8729;bac8c9b2-ae9a-4edd-8546-edc5c93fcc6d",
+			"0;1269;1;t;f;f;8730;6ce307f6-ccba-417e-8798-64bc0df9cb15",
+			"0;1268;1;f;f;f;8731;a1b079a8-00c5-40c9-a6d8-c7365bbfb543",
+			"0;1267;1;t;f;f;8732;01ca59ce-cc94-4cb1-9be4-76bf3572b5da",
+			"0;1266;1;f;f;f;8733;e70182d4-e229-4942-bff4-e383bcf5a486",
+			"0;1265;1;t;f;f;8734;d3b19bdc-347e-4477-9e47-b291142f3ea9",
+			"0;1264;1;f;f;f;8735;c42b2a14-ee7d-4bfd-9898-7d73da304885",
+			"0;1263;1;t;f;f;8736;ceac37ec-8e5d-479e-b11c-6773ade31406",
+			"0;1262;1;f;f;f;8737;156855d2-d313-4db5-9d8b-20357b831e69",
+			"0;1261;1;t;f;f;8738;0f708afb-2685-4120-9415-c9fc3a0b8943",
+			"0;1260;1;f;f;f;8739;e3160b15-bc97-4f70-a056-f86ed58620fc",
+			"0;1259;1;t;f;f;8740;58045ae5-89a2-483b-ba30-fcdfa9dbb84f",
+			"0;1258;1;f;f;f;8741;f60e8f3e-a79b-4bf2-ad08-a23c89796c15",
+			"0;1257;1;t;f;f;8742;ab6b87f5-6650-43e9-838b-6173b20fa027",
+			"0;1256;1;f;f;f;8743;186ebe06-d6c1-4453-a382-9da254646dc0",
+			"0;1255;1;t;f;f;8744;edd08b4c-15a8-47f3-92e9-0fb142439086",
+			"0;1254;1;f;f;f;8745;03d4afe8-035b-4446-aa84-3da2327ae33b",
+			"0;1253;1;t;f;f;8746;aeaa3244-83e2-4b66-ae1c-cb6c6d1ab4e4",
+			"0;1252;1;f;f;f;8747;e9e1437a-771a-4334-a883-151ed0580b16",
+			"0;1251;1;t;f;f;8748;a82b1020-7952-4e16-85c2-5664625712a8",
+			"0;1250;1;f;f;f;8749;2bd2d134-c8dd-4b11-bae4-5c6ed9b055af",
+			"0;1249;1;t;f;f;8750;745105f9-3685-4b97-b9e3-555bf4a42995",
+			"0;1248;1;f;f;f;8751;f69b45cd-a3e2-4d68-bbfd-d67762b206b7",
+			"0;1247;1;t;f;f;8752;b2431787-a171-408a-bcc3-b433c66cec6b",
+			"0;1246;1;f;f;f;8753;ef0b8eb0-f03b-4988-9740-abac80c827a2",
+			"0;1245;1;t;f;f;8754;9db17f1d-5576-4948-80ce-05f83e482c1f",
+			"0;1244;1;f;f;f;8755;0a1dac8d-a180-43aa-a241-7d94eed1bdf2",
+			"0;1243;1;t;f;f;8756;09b3461b-5bed-40f5-b1a6-6e1045b90f30",
+			"0;1242;1;f;f;f;8757;6c10c1fd-ceee-4236-93c3-3bdaa87fd239",
+			"0;1241;1;t;f;f;8758;a00b46d7-6f6f-4fb7-affb-3c34165f23dc",
+			"0;1240;1;f;f;f;8759;eb8943c3-e48a-4ff9-a95b-56e5e265cd5a",
+			"0;1239;1;t;f;f;8760;e301f341-1846-4e0a-ba15-e75302e3295a",
+			"0;1238;1;f;f;f;8761;106ade44-86c4-4dfe-b9d6-0b418e02bea8",
+			"0;1237;1;t;f;f;8762;3dbdea3e-8ae3-4a31-8412-a9d6c7d38065",
+			"0;1236;1;f;f;f;8763;62562495-89b7-440b-acbd-39730f6b7c12",
+			"0;1235;1;t;f;f;8764;c36caa1c-d2a8-43c4-8c7f-70254f89b985",
+			"0;1234;1;f;f;f;8765;24c82eb9-044b-4caf-a32f-ae9125c145c9",
+			"0;1233;1;t;f;f;8766;957b6dc3-21ab-4178-8d46-c939c0dc7316",
+			"0;1232;1;f;f;f;8767;a2abcb3d-dd0f-4ead-8dac-8844e95802f7",
+			"0;1231;1;t;f;f;8768;fad9d505-c51a-4925-b219-fbff77865d35",
+			"0;1230;1;f;f;f;8769;3cea5493-e29b-4859-ac58-6f2f276b8e42",
+			"0;1229;1;t;f;f;8770;cfb087cd-8f9e-4d1c-9aec-ba03ed4ae769",
+			"0;1228;1;f;f;f;8771;5c9bfc83-f857-41ca-8ee5-73fce2b9e059",
+			"0;1227;1;t;f;f;8772;0d99f2dd-1867-4a3e-84c7-0c083b09bdcf",
+			"0;1226;1;f;f;f;8773;1e883d6c-c25f-40de-a150-6576bb0eff72",
+			"0;1225;1;t;f;f;8774;af6801d9-487f-48ae-a350-b512883ff31f",
+			"0;1224;1;f;f;f;8775;410748d4-3982-4cc2-b712-d7f8eaa443b6",
+			"0;1223;1;t;f;f;8776;3f544740-56b1-4664-a2c0-6e2e6ec332a7",
+			"0;1222;1;f;f;f;8777;3f4e8c84-ba19-4873-8758-d2143f143516",
+			"0;1221;1;t;f;f;8778;8c71f129-bc6d-4a75-8706-77bfc05e3e90",
+			"0;1220;1;f;f;f;8779;24a08ff0-1880-4f2a-bb08-afaafa10ddd8",
+			"0;1219;1;t;f;f;8780;b39c0d59-646c-4433-8d32-74f0a14367da",
+			"0;1218;1;f;f;f;8781;8c2f6d2b-ae5b-419a-bf74-24b6e6418646",
+			"0;1217;1;t;f;f;8782;72a62b7c-22e0-47ce-a0cd-5d47a99e98c5",
+			"0;1216;1;f;f;f;8783;bc7b2aa2-4942-4145-96b9-a7551ea945f1",
+			"0;1215;1;t;f;f;8784;199f5ee6-c05f-4f6f-89d1-77c93fd27b8e",
+			"0;1214;1;f;f;f;8785;9c963de1-761b-437a-8f2c-17a9c62ca7ef",
+			"0;1213;1;t;f;f;8786;1f660f36-fdf7-4337-b74b-8dff127276d8",
+			"0;1212;1;f;f;f;8787;a44529d0-4829-459d-a8ad-8436af24b969",
+			"0;1211;1;t;f;f;8788;b385133a-4f41-4236-9abf-a9e7fe36400c",
+			"0;1210;1;f;f;f;8789;6f6f7948-08f8-478f-b321-2ce51cc93556",
+			"0;1209;1;t;f;f;8790;7ea3f8dc-71ff-45b9-a69f-ad7030a46f39",
+			"0;1208;1;f;f;f;8791;598aaeb6-ce07-44e0-a48e-398ba4f8b3d3",
+			"0;1207;1;t;f;f;8792;e42ecfd7-581d-49bb-9572-6d0fae09ac01",
+			"0;1206;1;f;f;f;8793;cc28a082-f720-41f7-8217-4874ceb13df5",
+			"0;1205;1;t;f;f;8794;f8e4ac2f-16ab-4f29-9848-d16cd6ecbd85",
+			"0;1204;1;f;f;f;8795;d85f9ecd-4efb-4f6e-89b5-f4ae846241b6",
+			"0;1203;1;t;f;f;8796;4a6f4ee9-dc62-4e36-8c9c-2bd3b453f6e8",
+			"0;1202;1;f;f;f;8797;ca6e7d4f-d045-44d0-89eb-922cfb997b3b",
+			"0;1201;1;t;f;f;8798;e3732f66-3a5a-4716-9b97-24a6f81516d2",
+			"0;1200;1;f;f;f;8799;2b971d70-84cf-4180-a890-1175cce29bd2",
+			"0;1199;1;t;f;f;8800;ef4fd527-c07b-466b-8ed2-d8ba0b82e42f",
+			"0;1198;1;f;f;f;8801;a679652e-c6e6-4079-bbc5-37ad4d26ed32",
+			"0;1197;1;t;f;f;8802;6e82f46c-6f84-4c23-8bed-693d07e884ee",
+			"0;1196;1;f;f;f;8803;e3211133-c9a1-4d18-b914-61416800c9e2",
+			"0;1195;1;t;f;f;8804;47c521ac-fe77-47bf-9aa5-377d33721783",
+			"0;1194;1;f;f;f;8805;e40b77f5-5905-4ec4-b6b9-d8eea886083e",
+			"0;1193;1;t;f;f;8806;e2f25569-da37-44ec-82a6-402959a976b5",
+			"0;1192;1;f;f;f;8807;c08f6498-99c6-41fb-961b-b561ff19e4b3",
+			"0;1191;1;t;f;f;8808;01996fb0-5280-4679-ac35-9951eb8f1b48",
+			"0;1190;1;t;f;f;8809;7d0360f2-0c58-47e8-8859-eb80e60d5432",
+			"0;1189;1;f;f;f;8810;d26191af-5244-4d04-b2bb-fb00ef8ab841",
+			"0;1188;1;f;f;f;8811;b8f96afa-ffb8-4d1d-a4c4-539e672d276f",
+			"0;1187;1;t;f;f;8812;b55bd6f3-2cb3-4ac6-8974-81a60dc9a276",
+			"0;1186;1;t;f;f;8813;a84b5a7d-893d-4231-93ba-22b1ad9a3361",
+			"0;1185;1;f;f;f;8814;a50ecb5f-e6f7-4352-afbe-8548b7a5c14e",
+			"0;1184;1;f;f;f;8815;1617e03b-e58a-4834-854d-d0de19a55137",
+			"0;1183;1;t;f;f;8816;22891383-d08a-4cd2-8c19-d956bcd0df62",
+			"0;1182;1;f;f;f;8817;aa1e935b-5db9-4b27-becc-d8cdb1b465cb",
+			"0;1181;1;t;f;f;8818;dd0e9dfb-1983-442f-be6c-9168cf52611e",
+			"0;1180;1;f;f;f;8819;2942db03-5f88-4edb-9159-ddd06edfda40",
+			"0;1179;1;t;f;f;8820;593bf2cb-6f81-4584-9d6b-20d8c943bb85",
+			"0;1178;1;f;f;f;8821;0a016683-333c-481c-a28a-7dbce7dd273f",
+			"0;1177;1;t;f;f;8822;f59f23fe-0494-4c8c-bbf8-214f350a0ea6",
+			"0;1176;1;f;f;f;8823;1142db28-9d36-4e98-83f3-4bd80aabec1d",
+			"0;1175;1;t;f;f;8824;6c15c9a3-b294-4000-853a-06de036c6d8d",
+			"0;1174;1;f;f;f;8825;f866bcb8-cd07-43d5-a8cc-c7eb138b2aeb",
+			"0;1173;1;t;f;f;8826;e535de92-24bd-4aa7-a7cd-2209cfd1b483",
+			"0;1172;1;f;f;f;8827;29839f26-62a8-43ab-b047-4e349ffb84c8",
+			"0;1171;1;t;f;f;8828;c1d39670-bbb3-471c-80aa-727bbc1212aa",
+			"0;1170;1;f;f;f;8829;925edc69-e450-4fc7-840b-315dd2ebd0f7",
+			"0;1169;1;t;f;f;8830;b82cb4af-2c23-46ac-8605-0d3a39575a2e",
+			"0;1168;1;f;f;f;8831;f021bb00-6ac4-4f1a-8bb8-c593c3b81eb3",
+			"0;1167;1;t;f;f;8832;6e5064b5-8728-424f-900f-efb0c116a4af",
+			"0;1166;1;f;f;f;8833;a61e73b0-2e93-4022-8427-bdaa74634f41",
+			"0;1165;1;t;f;f;8834;2c33703f-b501-4a21-850b-aa6566055b4f",
+			"0;1164;1;f;f;f;8835;a95e9938-a417-417c-b6ab-467b446c0571",
+			"0;1163;1;t;f;f;8836;f003a16f-bfdd-4707-be24-ab05e0d81ccf",
+			"0;1162;1;f;f;f;8837;f885c463-0156-4d76-b2ba-94f26ce6be69",
+			"0;1161;1;t;f;f;8838;6d5d511e-0f0e-4312-b0ce-25f2267c5c1c",
+			"0;1160;1;f;f;f;8839;da1b3349-d268-4b01-913c-c557c75ce29d",
+			"0;1159;1;t;f;f;8840;0456c4d6-fe9d-4681-9059-a1baf35d2113",
+			"0;1158;1;f;f;f;8841;071c1617-9d3b-4db7-84bd-f70028fa0f47",
+			"0;1157;1;t;f;f;8842;0d565ef3-86f5-41f2-b106-59c2afc84ee8",
+			"0;1156;1;f;f;f;8843;463b7291-ee4a-40a6-a6d2-f4d0df7f61f2",
+			"0;1155;1;t;f;f;8844;e20e72be-61b3-44a1-9bc4-cfbb5f781f77",
+			"0;1154;1;f;f;f;8845;d8956e6d-ece0-497b-8a53-e7384cbe27e5",
+			"0;1153;1;t;f;f;8846;3d42bca7-5c7b-4486-89b4-74dd3a17c600",
+			"0;1152;1;t;f;f;8847;2cc321df-a53b-4c66-964b-eaaa4c2f91de",
+			"0;1151;1;f;f;f;8848;b48015a6-b541-47fc-a1fb-016fa746b9d1",
+			"0;1150;1;f;f;f;8849;5a162501-33b6-4e36-a445-3cf68bd25bf7",
+			"0;1149;1;t;f;f;8850;be58fb41-e0d8-420f-9f41-f76f6e9d44f5",
+			"0;1148;1;t;f;f;8851;357ec812-e378-4ec3-b4e5-f54601014467",
+			"0;1147;1;f;f;f;8852;9b8e28a0-d8a7-4d18-8e4a-171f16769b04",
+			"0;1146;1;f;f;f;8853;aeb57f6d-df7c-4c6b-b0c2-ab9a0cd11884",
+			"0;1145;1;t;f;f;8854;5e55f02f-590b-44f2-87aa-3ea75e55da82",
+			"0;1144;1;f;f;f;8855;26727b76-95ce-4a8f-aabd-9714b76ed169",
+			"0;1143;1;t;f;f;8856;a94b5567-c677-4b88-a13d-b9446ded30d1",
+			"0;1142;1;f;f;f;8857;63b99d16-1646-4d32-b367-8fa0b7dd34c9",
+			"0;1141;1;t;f;f;8858;bbb5a0f4-1a8b-4970-8b7b-2cf89f97e4b8",
+			"0;1140;1;f;f;f;8859;e114bd5d-6a6a-4a42-ac2e-b9234a561ed7",
+			"0;1139;1;t;f;f;8860;e3e5a5b0-5a44-46c7-a5af-515898caf7c0",
+			"0;1138;1;f;f;f;8861;b92529d4-70c9-463e-90ac-9f99c5dafa91",
+			"0;1137;1;t;f;f;8862;45acd068-fcd3-47c7-a7f5-e213b94001f2",
+			"0;1136;1;f;f;f;8863;a667a3c0-0e54-48fb-b527-40e2a904ca45",
+			"0;1135;1;t;f;f;8864;9feb4b43-2aa0-4387-b445-1b87c14b6e40",
+			"0;1134;1;f;f;f;8865;cc71f936-4179-4eab-a59c-50b11a91576e",
+			"0;1133;1;t;f;f;8866;f2f71552-1b45-4da9-9ae2-6dbfc61b3a37",
+			"0;1132;1;f;f;f;8867;1e78f060-b752-4d8a-a4fd-d9fa8846006b",
+			"0;1131;1;t;f;f;8868;d2491055-71f9-4615-9334-4614ed3b80e0",
+			"0;1130;1;f;f;f;8869;c7c390aa-018e-448f-8dd6-160c4d7142bd",
+			"0;1129;1;t;f;f;8870;2ad96554-52fb-4908-ae2c-5927e8f5fc05",
+			"0;1128;1;f;f;f;8871;cebcb848-bd0b-4d16-86fa-b4579b4366ab",
+			"0;1127;1;t;f;f;8872;2a44a4f5-6843-40e1-aad0-2e0e22403580",
+			"0;1126;1;f;f;f;8873;34027bf5-36f4-4514-807f-315cc0a436d2",
+			"0;1125;1;t;f;f;8874;073bcdb9-ba00-4df2-91fe-c671155392c6",
+			"0;1124;1;f;f;f;8875;6d384fea-cf9e-40e3-91d2-521598e687ed",
+			"0;1123;1;t;f;f;8876;d3408f8f-b89f-4735-8234-e0f641b63aad",
+			"0;1122;1;f;f;f;8877;e44c9de1-aefa-45e9-8b20-d2a8df253400",
+			"0;1121;1;t;f;f;8878;28602c06-8143-4e2f-a4ef-443e12903f18",
+			"0;1120;1;f;f;f;8879;e78ed7f3-3399-4fc4-8f29-2765b355076e",
+			"0;1119;1;t;f;f;8880;373d6668-7803-482d-96db-1b6fd826cd19",
+			"0;1118;1;f;f;f;8881;5dc56d2a-b9a1-4271-9a65-88e445093e9e",
+			"0;1117;1;t;f;f;8882;cfb26b74-d38d-4e76-a6d6-3b759dbccc0f",
+			"0;1116;1;f;f;f;8883;13ab8ee4-fd12-4aa9-bf82-141114c14dd7",
+			"0;1115;1;t;f;f;8884;17b0998e-715d-4361-9720-0d69159a1076",
+			"0;1114;1;f;f;f;8885;7d2e244e-3cad-485e-9a4d-bac4d6bff70f",
+			"0;1113;1;t;f;f;8886;3a70733f-c771-40ba-bf25-b6040514e1c2",
+			"0;1112;1;f;f;f;8887;fad4d74e-7d9b-4ccf-88a7-476088fd6687",
+			"0;1111;1;t;f;f;8888;cefbb410-d593-4998-8ebb-7ac4f1475e60",
+			"0;1110;1;f;f;f;8889;c5077a4f-0dfb-414d-ab73-27b85391cb71",
+			"0;1109;1;t;f;f;8890;dcf107a6-4c6a-4b0a-ab1e-3a3963d6565f",
+			"0;1108;1;f;f;f;8891;90ea1eab-f722-4df7-a9f0-1a6119af7653",
+			"0;1107;1;t;f;f;8892;754438d1-1ea3-4e86-b252-38da076faf90",
+			"0;1106;1;f;f;f;8893;af13a0ab-bfe5-4cd1-87b7-6db83a9025e1",
+			"0;1105;1;t;f;f;8894;dbabeb78-4d28-455b-ab65-9ed86e6991e9",
+			"0;1104;1;f;f;f;8895;38329922-3987-45f1-8058-6db9de163d35",
+			"0;1103;1;t;f;f;8896;8b05f525-c055-4ca3-af9c-4c2b43231ba3",
+			"0;1102;1;f;f;f;8897;10a82135-abc0-44cc-879c-e381f583de25",
+			"0;1101;1;t;f;f;8898;5be6b23d-79c9-4db6-97f5-58d410688d5d",
+			"0;1100;1;f;f;f;8899;ce3a4d70-1219-4400-bf2a-d5ba245cf669",
+			"0;1099;1;t;f;f;8900;6881e696-564d-46a2-b156-9b61187acd90",
+			"0;1098;1;f;f;f;8901;e814b396-d467-46dd-90a7-21388ea127ee",
+			"0;1097;1;t;f;f;8902;b76368f0-17e1-4e33-a384-281a64f030ec",
+			"0;1096;1;f;f;f;8903;e481982f-f541-4f5e-8b6a-0edf6e295581",
+			"0;1095;1;t;f;f;8904;ad288d89-3634-4a16-afa0-2bb1024167d9",
+			"0;1094;1;f;f;f;8905;4cc76eb0-902a-4b32-8a22-34cd81878af5",
+			"0;1093;1;t;f;f;8906;51a32680-4a2c-4007-be4f-86345b8dac15",
+			"0;1092;1;f;f;f;8907;689cecc6-cd16-422e-abee-00b147061628",
+			"0;1091;1;t;f;f;8908;44656af8-a151-4ff4-890c-ed74659dc953",
+			"0;1090;1;f;f;f;8909;3edac3df-aae2-4b0e-b782-eab94e0b287c",
+			"0;1089;1;t;f;f;8910;58b27933-e316-4113-8449-e8f0a9c4d0c1",
+			"0;1088;1;f;f;f;8911;c3539ce2-8268-4d55-b7a0-a2d8f60db281",
+			"0;1087;1;t;f;f;8912;706bb4c1-ecc2-4625-83ea-4ae0671059c3",
+			"0;1086;1;t;f;f;8913;396a38fb-d97f-4568-accf-d1b964589071",
+			"0;1085;1;f;f;f;8914;71cace79-32b8-46bb-b76f-7a093dfaddd6",
+			"0;1084;1;f;f;f;8915;5041ccfa-db6a-4d33-9234-0399618ff9d4",
+			"0;1083;1;t;f;f;8916;abce8067-965f-4757-98f3-1d6b09a5d2ea",
+			"0;1082;1;t;f;f;8917;64e6f45c-a657-4506-8bf0-7b9246567157",
+			"0;1081;1;f;f;f;8918;0c4f0ae8-42ee-4b83-bf3b-5fae68612daf",
+			"0;1080;1;f;f;f;8919;660109e3-1749-4dab-ad01-18fa05464b3d",
+			"0;1079;1;t;f;f;8920;76e4e8b3-9dba-4c95-a59e-14bd27b7f723",
+			"0;1078;1;t;f;f;8921;16780393-8b65-4622-84af-559849765722",
+			"0;1077;1;f;f;f;8922;0777ffdc-eb9c-40ea-bc46-ec7af4d9b095",
+			"0;1076;1;f;f;f;8923;245c4316-71f6-4613-8760-8b67034e51b3",
+			"0;1075;1;t;f;f;8924;6d357169-05a6-4f74-9e19-0311161d3a6f",
+			"0;1074;1;t;f;f;8925;7e72a1c3-2628-47a5-91bf-d8c420fdcc5a",
+			"0;1073;1;f;f;f;8926;b9be2231-5658-4b8e-bf61-3fd26a61675f",
+			"0;1072;1;f;f;f;8927;a2bb2b7c-ba8d-4920-90bc-8afaaa25f081",
+			"0;1071;1;t;f;f;8928;6b8e5afd-ebf6-4674-9e2d-543d0ceafe0a",
+			"0;1070;1;f;f;f;8929;57d2c3eb-c661-4c7f-8976-c96b4cfca39f",
+			"0;1069;1;t;f;f;8930;fb8825d5-938b-408d-9d7a-60d92dbd1283",
+			"0;1068;1;f;f;f;8931;e217171b-97c7-48de-9ddf-c97c3abfb268",
+			"0;1067;1;t;f;f;8932;b956dd1a-f943-4519-81f5-497f683ee9c6",
+			"0;1066;1;t;f;f;8933;a2759ac0-c1f2-4aff-a092-a4ae7a94cb12",
+			"0;1065;1;f;f;f;8934;09e4f3cf-231b-4130-94b6-c6d1ed378cfd",
+			"0;1064;1;f;f;f;8935;d25c5ca2-ae8e-4d7e-915b-966b5b8ea4a6",
+			"0;1063;1;t;f;f;8936;397c811d-bdad-4c72-bb12-98aceb49a03d",
+			"0;1062;1;f;f;f;8937;ec9b9d8f-6c7c-40a6-a987-35e0166f7195",
+			"0;1061;1;t;f;f;8938;07249379-ccbe-41ca-89e7-7e77ca9201c7",
+			"0;1060;1;f;f;f;8939;1125c10e-d1e2-4f21-8a6a-b44e1af8bac1",
+			"0;1059;1;t;f;f;8940;8a9acb59-e5e7-45ce-9b53-7302b54fec22",
+			"0;1058;1;f;f;f;8941;1fd76f42-c4f7-417a-813a-93859a151c88",
+			"0;1057;1;t;f;f;8942;b4b80df6-d0b2-4701-bf60-96b43d966da5",
+			"0;1056;1;f;f;f;8943;52905498-1463-46be-ab90-9828d700b17e",
+			"0;1055;1;t;f;f;8944;5322005c-506d-4d80-a5e9-8ad104d951ec",
+			"0;1054;1;t;f;f;8945;28bc1453-0033-42d5-9b44-73eca6acb675",
+			"0;1053;1;f;f;f;8946;244d5dee-ef75-4d2f-bc2b-19207bb6ba33",
+			"0;1052;1;f;f;f;8947;22ee35b3-2eb2-475c-8177-2b2aba30ff80",
+			"0;1051;1;t;f;f;8948;8273c8df-1c28-4ad6-afa1-7af404f91439",
+			"0;1050;1;t;f;f;8949;89879286-a5a6-48a8-8947-6fcbb6bed545",
+			"0;1049;1;f;f;f;8950;0f7b4f76-d574-474e-962c-99cbe3115a00",
+			"0;1048;1;f;f;f;8951;2d668259-230e-49c3-942c-f41160b09608",
+			"0;1047;1;t;f;f;8952;2db59713-f67d-4aea-927c-5720fb179450",
+			"0;1046;1;t;f;f;8953;216d0494-17fc-4be1-86cd-1435b5238697",
+			"0;1045;1;f;f;f;8954;ca77b64f-b1f0-4567-9c11-a57792150fcb",
+			"0;1044;1;f;f;f;8955;bdf3f274-28ea-4bce-81d6-5cffe207db8c",
+			"0;1043;1;t;f;f;8956;15b850f3-923c-41f0-b94c-2005e8a273b6",
+			"0;1042;1;t;f;f;8957;c7a36f1a-0850-4aa5-b7ee-5ba1b72f8a04",
+			"0;1041;1;f;f;f;8958;68554672-c176-47d3-b043-ecb1d114fbc3",
+			"0;1040;1;f;f;f;8959;cf967f76-0a34-46fb-86a6-36ac8189f05a",
+			"0;1039;1;t;f;f;8960;77e88049-be18-4e9a-ab1b-1f8597c272f4",
+			"0;1038;1;f;f;f;8961;66dc4e2f-af50-40ea-8822-0cca4f8c1e2e",
+			"0;1037;1;t;f;f;8962;11d12f9f-2b96-4b09-a5df-34cefe87bd85",
+			"0;1036;1;f;f;f;8963;a607b7c7-81a2-4d6b-94cf-7aa2fa860f1c",
+			"0;1035;1;t;f;f;8964;2acde043-8fab-4158-b76b-900a8808cf05",
+			"0;1034;1;f;f;f;8965;c7d83722-cf2d-4185-ada2-29663a34c1ee",
+			"0;1033;1;t;f;f;8966;01fca4dd-b202-49dc-90d6-ef323b0bc8db",
+			"0;1032;1;f;f;f;8967;57887a84-4fcd-473a-91a0-0a85029bd2ac",
+			"0;1031;1;t;f;f;8968;90a43af8-dfac-4814-95cb-9af9ae5c025d",
+			"0;1030;1;f;f;f;8969;60ffadb0-dc80-4a25-8ce1-088244fe2b55",
+			"0;1029;1;t;f;f;8970;b2d22485-6700-4bae-9265-07bf2aa4b0a6",
+			"0;1028;1;f;f;f;8971;5c82d61c-a215-412c-acf8-77f5c323a611",
+			"0;1027;1;t;f;f;8972;f4c6b765-5d8d-43eb-a9ac-cee0698d7f48",
+			"0;1026;1;f;f;f;8973;e9cd6cad-1576-407b-a4de-3ba5b6cb2487",
+			"0;1025;1;t;f;f;8974;3d0bc071-4dca-4076-adef-513bc2b4e91a",
+			"0;1024;1;f;f;f;8975;d8e00889-325a-4f49-a0d4-b9021b450b5d",
+			"0;1023;1;t;f;f;8976;55190117-403d-4e4d-a764-b7057d397a5f",
+			"0;1022;1;f;f;f;8977;19a1cee9-3462-44bb-93ad-903c8e1b2a63",
+			"0;1021;1;t;f;f;8978;9697caed-8162-446a-ab72-096502bbc41f",
+			"0;1020;1;f;f;f;8979;318328d0-fff6-4c49-b233-3138d4c8b63f",
+			"0;1019;1;t;f;f;8980;30d0344a-8b89-4097-aea0-bb7419a376a5",
+			"0;1018;1;f;f;f;8981;9d8a704c-3658-4195-8b8b-c073090c2edb",
+			"0;1017;1;t;f;f;8982;eddbe3f9-07f9-4de1-9d84-d66faee4cab4",
+			"0;1016;1;f;f;f;8983;2a23fa41-fc3b-4b4a-9860-afac802b36f9",
+			"0;1015;1;t;f;f;8984;b2400eed-d487-4aa1-8c36-2b5db239c75d",
+			"0;1014;1;f;f;f;8985;400ab812-71ad-45bd-81a4-b5f37c0e7d7f",
+			"0;1013;1;t;f;f;8986;fc5a5392-3171-4a36-b7b1-ae672a0c2983",
+			"0;1012;1;f;f;f;8987;133678f0-4c5e-4fa0-a7e2-23e5177d90ef",
+			"0;1011;1;t;f;f;8988;5711ea60-d2ea-4271-b77c-bf435c4abecb",
+			"0;1010;1;f;f;f;8989;218f0865-7dd9-423f-8c4f-d4fc7af25e94",
+			"0;1009;1;t;f;f;8990;8e2c687d-f965-4b5d-8d84-0bb186d9da7a",
+			"0;1008;1;f;f;f;8991;efae374a-8fa7-48c4-9d27-3dc6a3e3d0bc",
+			"0;1007;1;t;f;f;8992;8beec8fa-8884-4abb-9aef-6000dc175be7",
+			"0;1006;1;f;f;f;8993;fe97fc04-0d58-4df8-89ad-42082961f264",
+			"0;1005;1;t;f;f;8994;db16c1d0-5eab-41e8-9e09-d15c83904232",
+			"0;1004;1;f;f;f;8995;78d2f70a-2459-40b1-8346-4ae6a6c62aad",
+			"0;1003;1;t;f;f;8996;2bd000d1-e00f-46a5-b626-f4f670d237e9",
+			"0;1002;1;f;f;f;8997;596efbca-6ea8-40f4-a086-e30ce48089fb",
+			"0;1001;1;t;f;f;8998;f3f42d0d-bcac-4ea3-9d8d-25df90271c0a",
+			"0;1000;1;f;f;f;8999;27ccfcee-b729-4ff3-8c1a-cf73f077b203",
+			"0;999;1;t;f;f;9000;9c58737c-9c96-4625-93f4-cd7636eb5373",
+			"0;998;1;f;f;f;9001;917a95b1-f500-4bd9-8572-ed56e3e69e06",
+			"0;997;1;t;f;f;9002;ebdd91d8-c059-4811-9d77-1944d779b857",
+			"0;996;1;f;f;f;9003;679a66c7-a2ae-4673-944d-a9dc76f47de3",
+			"0;995;1;t;f;f;9004;d7bebe43-727c-4c34-bf89-406ab0f0c13d",
+			"0;994;1;f;f;f;9005;65a55164-6579-4a6f-9a52-903d3f31d69b",
+			"0;993;1;t;f;f;9006;0917007e-81b3-42df-9d22-d7efdb787352",
+			"0;992;1;f;f;f;9007;98a2beb5-cc22-4939-9afe-b474b2906840",
+			"0;991;1;t;f;f;9008;e27c28da-8a9a-4d2b-bb2b-02dd7546904d",
+			"0;990;1;f;f;f;9009;d73c0b3d-ac16-415c-9528-cc105dd63214",
+			"0;989;1;t;f;f;9010;cd9ba10a-f943-4927-b371-961f6944e1d8",
+			"0;988;1;f;f;f;9011;9b991b2f-7bc2-481d-b049-e1c06a1b7362",
+			"0;987;1;t;f;f;9012;ee260020-f336-4451-b55e-a0a27af69caf",
+			"0;986;1;f;f;f;9013;ee7b9919-0faf-4d19-ad6a-76988c0f646f",
+			"0;985;1;t;f;f;9014;3795e864-1a1e-4ee1-9691-f639c9641fca",
+			"0;984;1;f;f;f;9015;93917147-3384-491c-af8a-2d5c40df596c",
+			"0;983;1;t;f;f;9016;d152c75e-62f7-42d8-bcec-6932c8ea93c3",
+			"0;982;1;f;f;f;9017;ec8d46fd-2c59-45ac-8e38-800e45dbfc97",
+			"0;981;1;t;f;f;9018;77804f70-a041-4137-9fc6-017b93a74fb5",
+			"0;980;1;f;f;f;9019;f1206fba-2cc3-46da-8324-0c4f937b4aab",
+			"0;979;1;t;f;f;9020;55fc40dd-2364-4ff7-b9c2-81ff0090757d",
+			"0;978;1;t;f;f;9021;a90bbb48-1ec7-42d5-97b9-f8e51dbe11f8",
+			"0;977;1;f;f;f;9022;6c56169e-b422-4f31-b5c1-cc620dae278c",
+			"0;976;1;f;f;f;9023;c17335b9-c7bf-42fb-9015-423a5171f580",
+			"0;975;1;t;f;f;9024;7767ca65-d596-4a1c-8eee-7d93fad7e49f",
+			"0;974;1;t;f;f;9025;db5b3148-b547-47a6-b906-afc44f2355df",
+			"0;973;1;f;f;f;9026;8b8ede80-a317-46d6-a235-7d908d861e26",
+			"0;972;1;f;f;f;9027;cf6a46ff-4789-430b-8a02-34e6baf8faae",
+			"0;971;1;t;f;f;9028;a10516e0-bd62-4a27-ad69-5cd4e2541356",
+			"0;970;1;f;f;f;9029;1b1a91e5-b934-406a-af36-9bef038e246b",
+			"0;969;1;t;f;f;9030;44f51b83-9386-4e16-b617-4eece670b818",
+			"0;968;1;f;f;f;9031;0de11967-fc1f-430f-8e77-481872a000f3",
+			"0;967;1;t;f;f;9032;bd8fea0b-d804-4100-9b88-609deee81153",
+			"0;966;1;f;f;f;9033;70eafeae-c9c0-4aff-99ea-87c6c5bdbb74",
+			"0;965;1;t;f;f;9034;3a0ad49b-4910-42f6-bf11-d67e261af90e",
+			"0;964;1;f;f;f;9035;9657cd2d-03d0-42dd-82df-6017526b1117",
+			"0;963;1;t;f;f;9036;770886c4-9873-4dab-bbbc-6b3343719419",
+			"0;962;1;f;f;f;9037;c9ba89a7-5bd8-4534-a51a-661841cac4d0",
+			"0;961;1;t;f;f;9038;68614091-41ab-4c81-a395-fdb5ca86655b",
+			"0;960;1;f;f;f;9039;d0050110-e206-47e0-a7e0-e1a96407def0",
+			"0;959;1;t;f;f;9040;4ffa37e9-57c4-4d3f-bf44-f3f5674146f6",
+			"0;958;1;f;f;f;9041;ff6edea7-88d1-49c2-a592-d0a4c810522f",
+			"0;957;1;t;f;f;9042;185fbdc4-ab68-482d-9af9-425ee7fc9c1b",
+			"0;956;1;f;f;f;9043;79394185-2fc6-49b7-9126-b37ea4e1bdc5",
+			"0;955;1;t;f;f;9044;55e1a3fb-635a-4570-8288-1179d6ed57f2",
+			"0;954;1;f;f;f;9045;e0c842b3-cdef-47f2-8c11-57a2afeb3d72",
+			"0;953;1;t;f;f;9046;d51399c6-7a46-4e8a-9f93-e7e08d39fe34",
+			"0;952;1;f;f;f;9047;5dedd0f1-8af2-4f41-9124-980802a0603b",
+			"0;951;1;t;f;f;9048;97cd41ba-c046-4e66-a29c-a013a428bc2a",
+			"0;950;1;t;f;f;9049;1b5e5318-0fef-4bb1-9d32-2d856765c175",
+			"0;949;1;f;f;f;9050;046a607a-2578-4119-8e17-dd746554b38f",
+			"0;948;1;f;f;f;9051;abee912b-4ba3-4ca9-bd1c-7e372ccc8551",
+			"0;947;1;t;f;f;9052;f380d715-3813-4c0d-9b4b-4707e83250d8",
+			"0;946;1;f;f;f;9053;147f970b-b0d6-47c4-842a-3dcf600a3a93",
+			"0;945;1;t;f;f;9054;e0381448-fd22-4446-a82b-c63b4a473d6b",
+			"0;944;1;f;f;f;9055;ee55de9c-d892-40b1-bf0f-f3b2ac4fd3ad",
+			"0;943;1;t;f;f;9056;2e4d9ee1-3962-496c-aeb9-ed50cdeae2ee",
+			"0;942;1;f;f;f;9057;fca9d8b1-6707-4d59-b3af-d24b83c2aaa9",
+			"0;941;1;t;f;f;9058;02a9329b-e188-45a1-a36e-97a39478476a",
+			"0;940;1;f;f;f;9059;ee768c4b-9dd4-4e05-affe-9dc90d68683e",
+			"0;939;1;t;f;f;9060;bde30eae-dcdb-4ca6-90f5-7f4605f83afb",
+			"0;938;1;f;f;f;9061;d18973fa-dccb-4c8a-8aa1-441193b08994",
+			"0;937;1;t;f;f;9062;320f1fcb-cb1f-4d47-acb8-13d6755a22d9",
+			"0;936;1;f;f;f;9063;04b25134-1fd2-40e5-bdfa-a1ba47f6d55a",
+			"0;935;1;t;f;f;9064;d52aedc4-b834-41e2-85d2-6fca299fea1f",
+			"0;934;1;f;f;f;9065;c3bd73ca-c59a-47d4-9a5f-9a40ab9b72df",
+			"0;933;1;t;f;f;9066;66fb1c9f-5b2c-4fa3-91df-ae9c5582cd15",
+			"0;932;1;t;f;f;9067;ceefcd44-c77d-47b3-8d73-e6fe7f6abe2f",
+			"0;931;1;f;f;f;9068;1b76ae30-dc3d-4ac2-a909-79cda3fcc0ee",
+			"0;930;1;f;f;f;9069;4fe10c48-275b-416e-ba4c-e3f036829c03",
+			"0;929;1;t;f;f;9070;ac95fd3e-b974-449e-9e93-efdcec44f097",
+			"0;928;1;t;f;f;9071;26d1b787-210a-470c-aa0c-4c8ecc5f5343",
+			"0;927;1;f;f;f;9072;0c6349ce-250c-4869-aeb1-8d569051e159",
+			"0;926;1;f;f;f;9073;95f608b9-779f-44e4-9d5f-6e50d70767a0",
+			"0;925;1;t;f;f;9074;202a1551-2fcb-4e6a-a1ff-41d0c633393d",
+			"0;924;1;t;f;f;9075;44d2863a-5962-4b81-b4c2-bafa3c2ebe39",
+			"0;923;1;f;f;f;9076;58178995-58aa-4343-8322-8ce9af30fa3c",
+			"0;922;1;f;f;f;9077;95d6d98a-7e33-48f7-be5b-5deeccdcffa3",
+			"0;921;1;t;f;f;9078;9f4896f9-d639-49a9-8b29-cf6dbe7ce672",
+			"0;920;1;f;f;f;9079;c1a95640-bdcc-4ac6-ad36-ffcd84fc66d8",
+			"0;919;1;t;f;f;9080;7702c489-dcb1-4379-80b6-047a704a958c",
+			"0;918;1;f;f;f;9081;c60784f8-1c34-4789-95dd-895fc4a7398c",
+			"0;917;1;t;f;f;9082;18ced6e8-56fb-48e5-84b7-77d285d24bd1",
+			"0;916;1;f;f;f;9083;6be8ec58-e453-4aff-a4bd-3f434b3a58a7",
+			"0;915;1;t;f;f;9084;5b472d4b-0df8-4afb-bb89-43b47f785a5e",
+			"0;914;1;f;f;f;9085;35153fcd-fadc-4dca-934b-ad6d7b06776d",
+			"0;913;1;t;f;f;9086;73ec0e71-5455-445f-881e-ebb759ff3e3b",
+			"0;912;1;f;f;f;9087;c036279a-7f84-4881-9cf4-85bd483f24d6",
+			"0;911;1;t;f;f;9088;1dc49931-cc26-4910-ab8b-6992aa7d28e1",
+			"0;910;1;f;f;f;9089;eac2251b-55f6-4235-910f-9cc896066560",
+			"0;909;1;t;f;f;9090;b8ff4753-e348-4fc3-a22d-68a4b9b39e77",
+			"0;908;1;f;f;f;9091;e0013108-3254-4292-9fbf-19bb7e4c0baa",
+			"0;907;1;t;f;f;9092;1def3251-f3da-4ca7-b404-6d7b35c47740",
+			"0;906;1;f;f;f;9093;bccbcc77-ed3a-4a02-aa22-507be642e196",
+			"0;905;1;t;f;f;9094;ade17c64-23f7-4878-8f60-1a0bf6bb90a7",
+			"0;904;1;f;f;f;9095;da6e7ba4-127b-4082-8856-666b1173c980",
+			"0;903;1;t;f;f;9096;80180ae9-99ce-42dc-9fe1-3e3e24348273",
+			"0;902;1;f;f;f;9097;59e4a1f5-fc9e-4a1b-880f-8b7c44cc96ef",
+			"0;901;1;t;f;f;9098;32501783-28cd-4daa-8af6-d29b680aefa3",
+			"0;900;1;f;f;f;9099;cab0a76d-b445-4682-89c3-2092d2c17df2",
+			"0;899;1;t;f;f;9100;ec71a815-d03d-4a8f-bdfa-55071281da98",
+			"0;898;1;f;f;f;9101;0608b817-a5da-47f4-adcf-a62daca8dfd4",
+			"0;897;1;t;f;f;9102;5ca8aae5-0fa4-41d5-bcaa-16bbcbe686a1",
+			"0;896;1;t;f;f;9103;cfa4b4d5-4bfa-4433-81ec-09abb14c1e28",
+			"0;895;1;f;f;f;9104;7de9a4b4-ac06-4f5d-9062-427ea6ddbdf0",
+			"0;894;1;f;f;f;9105;9a09c11f-89c9-4af5-ae9c-950bd7e7d592",
+			"0;893;1;t;f;f;9106;03d71d7c-c489-4b7e-a981-1e02f7541155",
+			"0;892;1;t;f;f;9107;e0ee7897-d88d-425b-a90b-baf5cd108205",
+			"0;891;1;f;f;f;9108;04b4b279-bdae-4264-8241-c7d41f791912",
+			"0;890;1;f;f;f;9109;d4fe90f5-2feb-43d2-8f23-ff1e854e4bd5",
+			"0;889;1;t;f;f;9110;b12d9016-05a0-4455-9c7e-3fe7ca9fdbd1",
+			"0;888;1;t;f;f;9111;2c8bf5c6-1b49-4cc0-b4fa-eedef4fd6270",
+			"0;887;1;f;f;f;9112;47262884-10d7-4964-b248-d8f0cdc56c01",
+			"0;886;1;f;f;f;9113;0da1f023-7280-488d-b0f8-a664c7d0db9d",
+			"0;885;1;t;f;f;9114;d392c901-5f1a-48b0-991f-028202aa73d1",
+			"0;884;1;t;f;f;9115;ada0c426-033f-4f4f-bf5b-03b08c86717b",
+			"0;883;1;f;f;f;9116;f6a22504-2dfd-42fe-a9b1-d14499e263c2",
+			"0;882;1;f;f;f;9117;52f90a21-9dbc-4a1c-b37a-6af3daea8ec1",
+			"0;881;1;t;f;f;9118;02718fd7-e854-4dfd-abf2-cbc513030cf2",
+			"0;880;1;f;f;f;9119;07f40030-6c25-485c-89e9-94c2e955574f",
+			"0;879;1;t;f;f;9120;8c0b5a2a-8384-4218-b629-714ee310fefe",
+			"0;878;1;f;f;f;9121;ceb97d5c-9474-4f3d-831f-885085de3351",
+			"0;877;1;t;f;f;9122;7affb4e3-4f77-491f-a9ee-449a8272db7d",
+			"0;876;1;f;f;f;9123;14c34d1b-bcf5-487c-abcd-7e358506d035",
+			"0;875;1;t;f;f;9124;b8b0376e-081d-410f-9b07-68c3be316f3d",
+			"0;874;1;f;f;f;9125;ec0c6fea-f11b-456a-8046-14a95b3cab6f",
+			"0;873;1;t;f;f;9126;221f48c5-a4ea-477b-a183-35a2a1ab6d8c",
+			"0;872;1;f;f;f;9127;9b3af9a9-7165-4c3a-a1d3-3f83d2bc29c8",
+			"0;871;1;t;f;f;9128;4bb3ad76-f762-429f-8af5-a8f753566297",
+			"0;870;1;f;f;f;9129;622dd19d-c7fd-434d-be47-cd1082c84834",
+			"0;869;1;t;f;f;9130;6faffc37-288a-45b6-bf02-9f95bc1dbb10",
+			"0;868;1;f;f;f;9131;0a26d148-5f68-43b4-98f5-0de80feefe3a",
+			"0;867;1;t;f;f;9132;95e47449-4f99-4095-a4af-84194df013e9",
+			"0;866;1;f;f;f;9133;8e7804e8-652b-4fa6-880e-dfab14740fc7",
+			"0;865;1;t;f;f;9134;1693b552-542c-4165-b6a4-4bbb65a8da9a",
+			"0;864;1;f;f;f;9135;a0307755-105c-4275-97c8-d55e88274fae",
+			"0;863;1;t;f;f;9136;ca61bc48-3f89-40fe-90ed-621074d247e9",
+			"0;862;1;f;f;f;9137;12e93e13-7965-46e0-af20-3ceae152bd28",
+			"0;861;1;t;f;f;9138;2fb66a83-8ae4-4e9c-a306-ad813e20f21a",
+			"0;860;1;f;f;f;9139;7278d430-a03b-4352-88ad-578dbefe5e38",
+			"0;859;1;t;f;f;9140;f8ff4d94-4f06-4eff-a40b-998053c2e8b4",
+			"0;858;1;f;f;f;9141;837ed5dc-a7ad-443b-8bf3-0f29ee554aca",
+			"0;857;1;t;f;f;9142;20ac6b54-b180-4e1d-baec-d93938aced51",
+			"0;856;1;f;f;f;9143;b497b470-0564-403e-a635-42bfc311f738",
+			"0;855;1;t;f;f;9144;ccc3b9e0-bed8-49d3-bcd3-2d433302de4b",
+			"0;854;1;f;f;f;9145;bda25050-1a17-407a-973d-8712a5924906",
+			"0;853;1;t;f;f;9146;52aef3c0-e074-4b45-9a95-ee33abdb0daa",
+			"0;852;1;f;f;f;9147;ca7bbb65-b852-4a50-b8e8-9b84c6f446c7",
+			"0;851;1;t;f;f;9148;2eadd75a-630e-4b2e-a042-3d8b38ec9f01",
+			"0;850;1;f;f;f;9149;94884b35-94f8-4371-85f4-897a177122dc",
+			"0;849;1;t;f;f;9150;adb36fd1-99c8-4bd6-9118-ec2c492d8efb",
+			"0;848;1;f;f;f;9151;f530d3fc-8792-40ac-a4a6-d21ca10baab7",
+			"0;847;1;t;f;f;9152;772cdade-aefd-432e-9939-4ebaa926b82b",
+			"0;846;1;f;f;f;9153;34628b90-94aa-45f6-97fe-639479a2c80d",
+			"0;845;1;t;f;f;9154;c77ca343-6c6c-4ccd-bfa0-c8c406e9f06a",
+			"0;844;1;f;f;f;9155;3593f53a-e871-4ed9-a04e-51ae639ff682",
+			"0;843;1;t;f;f;9156;e129d5f8-c21d-4a58-9f8d-3941480a012b",
+			"0;842;1;f;f;f;9157;31240507-fb1d-40e6-be27-76c8086d3de8",
+			"0;841;1;t;f;f;9158;a487841d-2844-40ed-9290-2d1c78b4411e",
+			"0;840;1;f;f;f;9159;0286b0b9-80ce-488b-8006-478d3e76c2da",
+			"0;839;1;t;f;f;9160;24359901-2358-480d-861b-61678c57d352",
+			"0;838;1;f;f;f;9161;c68b516d-6c31-4303-8b91-a19ab7867794",
+			"0;837;1;t;f;f;9162;b46cdc7c-9448-4191-8d2e-721241f1dff8",
+			"0;836;1;f;f;f;9163;df3220c9-bc90-4dcb-8e46-3a616f95d6fb",
+			"0;835;1;t;f;f;9164;ad789b50-8d8b-43db-8ae6-cdaad826f8fa",
+			"0;834;1;f;f;f;9165;beb420b4-7dee-45b2-9018-6f362a51c091",
+			"0;833;1;t;f;f;9166;caa8347a-235a-47ad-a3e5-7a61e3e42e00",
+			"0;832;1;f;f;f;9167;ea55e14a-d93f-4a25-901d-1fe28dfafa47",
+			"0;831;1;t;f;f;9168;3e409b65-1fce-42b7-b8aa-a961b5b7d4b8",
+			"0;830;1;f;f;f;9169;f7b2ac32-40d5-44b6-9278-273eceeffaac",
+			"0;829;1;t;f;f;9170;ad4d7e19-7949-492f-ac83-a3e30a5a25f7",
+			"0;828;1;f;f;f;9171;575b65c1-a1ef-467d-9e96-d33ac742ae62",
+			"0;827;1;t;f;f;9172;f8f0d082-9ccc-49a4-8f97-a9a088cea7a5",
+			"0;826;1;f;f;f;9173;18c21927-bb15-4308-a43f-e0f584df40a4",
+			"0;825;1;t;f;f;9174;9582e085-630c-4bc3-b1ef-af73a120fe4b",
+			"0;824;1;f;f;f;9175;046e1ef3-1833-4a2d-b7f4-f35ede3d4134",
+			"0;823;1;t;f;f;9176;728c4b61-4f07-4f11-8f52-43532bd4686f",
+			"0;822;1;f;f;f;9177;5f1e2991-c7d3-4386-8837-0ca853af8849",
+			"0;821;1;t;f;f;9178;725696db-47b1-474a-9365-fffc73135bdf",
+			"0;820;1;f;f;f;9179;55749a68-c652-4c8a-a7d9-de016c76d198",
+			"0;819;1;t;f;f;9180;36b94571-9550-4503-b864-10dbc60523a3",
+			"0;818;1;f;f;f;9181;146875a3-faa0-48b2-9588-dc1b1b1dee9c",
+			"0;817;1;t;f;f;9182;e68c510f-2bc7-429f-b82e-671974c69035",
+			"0;816;1;t;f;f;9183;25f42880-ab93-49a6-a2f1-c4c395a441da",
+			"0;815;1;f;f;f;9184;63773a10-a0bf-40b1-b25a-9582f6b0d419",
+			"0;814;1;f;f;f;9185;980c7f05-a7ca-48f1-af95-c3d5fdcc5557",
+			"0;813;1;t;f;f;9186;4ba65eed-d0e1-45db-851b-8375ff096a51",
+			"0;812;1;f;f;f;9187;ee1435ee-6b22-4636-8d55-85ab2b771d81",
+			"0;811;1;t;f;f;9188;a05dbec6-f882-49e6-9b86-8ff8a1b556ce",
+			"0;810;1;f;f;f;9189;900a1746-ea58-48ca-b2d1-c25de4b2e416",
+			"0;809;1;t;f;f;9190;528214cb-e2b3-4fdc-8d39-a9f969a384d8",
+			"0;808;1;f;f;f;9191;ad1179ca-e49b-42b3-b4c4-3c10c7af2425",
+			"0;807;1;t;f;f;9192;5d163f90-eab9-42d9-a022-0f2c729848be",
+			"0;806;1;f;f;f;9193;5c4a226a-0343-4f8d-a3e6-c232420833a7",
+			"0;805;1;t;f;f;9194;0c1131eb-9081-4de2-8d62-275c513b9080",
+			"0;804;1;t;f;f;9195;a3a401f7-cf8c-4f50-9c8b-eddc5a662715",
+			"0;803;1;f;f;f;9196;50662716-429b-48c6-8b55-6f06af69c34e",
+			"0;802;1;f;f;f;9197;4d0b8451-7f8a-4793-b93b-870e5d7b95e7",
+			"0;801;1;t;f;f;9198;420de854-5501-4d0c-88a9-ffdb672bcf7d",
+			"0;800;1;f;f;f;9199;903d89ef-b1ad-47cc-bb46-d4896c58cc46",
+			"0;799;1;t;f;f;9200;1dd84f7c-89bb-4472-9ef5-4fa1d1a4e8e0",
+			"0;798;1;f;f;f;9201;c64d2246-3a2e-42e5-b9d2-a2024d345c8e",
+			"0;797;1;t;f;f;9202;f6e19ada-9694-4c23-bcf8-70d41007e9f4",
+			"0;796;1;f;f;f;9203;a1b87578-5a78-4843-b3f1-aa86aced93b3",
+			"0;795;1;t;f;f;9204;8481498a-f0a2-42b8-b2e6-e4534200b98a",
+			"0;794;1;f;f;f;9205;f7b995a2-ffae-44cf-96aa-abfaa0173195",
+			"0;793;1;t;f;f;9206;7c3f4ecc-b2e8-4b0b-8eff-9d78fd503e2e",
+			"0;792;1;t;f;f;9207;f115022b-4c43-498b-9c24-0d6eb1bd984c",
+			"0;791;1;f;f;f;9208;0e28bb59-cc21-49bc-8e90-73cb36f2d3f3",
+			"0;790;1;f;f;f;9209;10680949-21a5-40cc-811b-999aed5a0dfb",
+			"0;789;1;t;f;f;9210;bd27635d-ba05-4829-8c9c-38a272e4111f",
+			"0;788;1;f;f;f;9211;1ce4f8e2-4cdd-4a3f-bd11-b3171c99019b",
+			"0;787;1;t;f;f;9212;810bce20-4b18-43d1-8cb5-c12d8819e403",
+			"0;786;1;f;f;f;9213;908d0f4b-787a-4829-aaaf-c00adf9fa0a9",
+			"0;785;1;t;f;f;9214;202d13d2-008d-40e9-a647-30f40640e424",
+			"0;784;1;f;f;f;9215;f01fca5e-e705-43cd-9224-2f11df05a952",
+			"0;783;1;t;f;f;9216;452b0510-84ed-49f5-9d69-51b3faf22bb3",
+			"0;782;1;f;f;f;9217;71b882f6-08a9-4915-beea-583b2d14b212",
+			"0;781;1;t;f;f;9218;edbc16b5-6204-4197-8c64-6db352559cc3",
+			"0;780;1;f;f;f;9219;5bf01550-7d43-441b-b37b-bec1fa9e75a1",
+			"0;779;1;t;f;f;9220;9820315a-6432-416f-a287-7a46fd555fa4",
+			"0;778;1;f;f;f;9221;00d2bbbe-d216-4973-b2be-be8d3de92560",
+			"0;777;1;t;f;f;9222;9d1fc2b7-5fd8-40d5-b699-7cfe21c2a0a3",
+			"0;776;1;f;f;f;9223;5b1064fa-5193-43ec-b99f-f6d411e9d133",
+			"0;775;1;t;f;f;9224;60491333-c12e-4168-b026-9aa95860c69c",
+			"0;774;1;f;f;f;9225;8610017d-326d-4a88-b1bd-4852a1568f43",
+			"0;773;1;t;f;f;9226;b2af7521-7857-4b25-8ada-38b6709c497b",
+			"0;772;1;f;f;f;9227;63517e0e-6559-430e-a89c-ec1cf02fc55d",
+			"0;771;1;t;f;f;9228;43be7bd2-24ca-4fbb-b6bc-790f308230ec",
+			"0;770;1;f;f;f;9229;2d0dba4e-05db-406b-9a63-bebf63b7a02c",
+			"0;769;1;t;f;f;9230;4216d3fa-f07a-4d0a-8040-0b7e5f8df396",
+			"0;768;1;f;f;f;9231;5668731f-0269-414f-afda-2658b1acf01a",
+			"0;767;1;t;f;f;9232;1ce1a45e-dd36-44f7-8687-be548ddac647",
+			"0;766;1;f;f;f;9233;eabaead9-19d9-4bbb-8976-ed6a591c05e1",
+			"0;765;1;t;f;f;9234;1d857452-e11b-4678-b66c-401bc77ec841",
+			"0;764;1;f;f;f;9235;8889d8d8-240d-4a32-844e-6120944312c0",
+			"0;763;1;t;f;f;9236;4ecc6f4d-cf1c-484a-89a0-648b80f40d44",
+			"0;762;1;f;f;f;9237;97902583-ddd7-421b-9985-05f5756fe005",
+			"0;761;1;t;f;f;9238;bd119b5b-bd2d-47d4-8f3b-923757fae000",
+			"0;760;1;f;f;f;9239;33062589-5b2f-4464-89e4-1709b0b82bde",
+			"0;759;1;t;f;f;9240;06494e1b-8b6b-490d-93f9-8a73141709fc",
+			"0;758;1;f;f;f;9241;3216892b-1c80-4d57-9849-e6e63177c332",
+			"0;757;1;t;f;f;9242;8c5829c3-2730-457c-8bc2-cce249962fdb",
+			"0;756;1;f;f;f;9243;5db914ca-0bf3-40ba-bc43-082ec9c54b2d",
+			"0;755;1;t;f;f;9244;6995c648-f3f5-4e17-8b81-28f846e5cc30",
+			"0;754;1;f;f;f;9245;e6d612d6-3749-4623-982f-c75afd0f775d",
+			"0;753;1;t;f;f;9246;6470a72f-d15d-4270-9c28-cdf6f35eb2d3",
+			"0;752;1;f;f;f;9247;95a7016d-94fe-4399-87f1-3841526c9d86",
+			"0;751;1;t;f;f;9248;ed5569c9-cd73-453b-8dd4-c5dd41425951",
+			"0;750;1;f;f;f;9249;35bb1a1f-bf53-4282-ba7c-9e4d08074f86",
+			"0;749;1;t;f;f;9250;aec8d362-2389-411b-a77f-792ef2677472",
+			"0;748;1;f;f;f;9251;a4ebbdd9-19bd-4668-9646-8456a4c9aff2",
+			"0;747;1;t;f;f;9252;36a6ddef-9b5d-427a-8af9-e8fb3c91fa5d",
+			"0;746;1;f;f;f;9253;5de0e04f-a6b4-4936-a161-f0fa6307b22f",
+			"0;745;1;t;f;f;9254;adb42dd8-2dc2-45e9-9fd6-2cd3cbc37259",
+			"0;744;1;f;f;f;9255;6001a7fc-6cc4-49ce-9e24-499bd556edd8",
+			"0;743;1;t;f;f;9256;d84443da-ac5f-4c85-a149-a66e5df894c3",
+			"0;742;1;f;f;f;9257;dc313d5b-f5d2-4544-a794-1c5297bdc306",
+			"0;741;1;t;f;f;9258;05aa24b2-3b4e-49db-86f0-36b85e4e22b8",
+			"0;740;1;f;f;f;9259;0394572b-b60e-49f8-ae83-37d4264a5a27",
+			"0;739;1;t;f;f;9260;ce495898-afba-4534-97ec-348c0c6ec78e",
+			"0;738;1;f;f;f;9261;4979e9cb-04e0-413e-81e0-2b848b61dbc0",
+			"0;737;1;t;f;f;9262;39af404e-94aa-4e96-bd86-18ecf36b9be4",
+			"0;736;1;f;f;f;9263;cbaa77ec-9655-4ffb-8a74-425deed4687a",
+			"0;735;1;t;f;f;9264;c49b2730-ac93-4b53-959b-95f254808f66",
+			"0;734;1;f;f;f;9265;2b745767-e992-451f-97ad-5fb0a4b60b2f",
+			"0;733;1;t;f;f;9266;61b3377c-c147-42d7-bf0d-9fa8ad62b463",
+			"0;732;1;f;f;f;9267;dece37fa-dccc-48f7-a008-60e26f8bab79",
+			"0;731;1;t;f;f;9268;3057300b-e7ac-44bd-9a96-3003b6c404f6",
+			"0;730;1;f;f;f;9269;91acf3c2-3c0c-4651-9d5f-42c24b8e3134",
+			"0;729;1;t;f;f;9270;7e5682a9-3215-4343-8ef0-8c573600d8db",
+			"0;728;1;f;f;f;9271;af8f826d-0831-4847-ba3b-92ae4b5611d7",
+			"0;727;1;t;f;f;9272;12f41837-0f0b-4a56-a4a0-98fcc8f4fcac",
+			"0;726;1;f;f;f;9273;9b107092-db25-4456-a4d2-8bc5dbc7bd35",
+			"0;725;1;t;f;f;9274;27828824-3359-4112-83d3-5cd6c0239fc9",
+			"0;724;1;f;f;f;9275;54d5583c-f290-477f-978f-0a2fab5c27d6",
+			"0;723;1;t;f;f;9276;c922590d-4cda-4f19-973c-0a003eb8692d",
+			"0;722;1;f;f;f;9277;ded2307f-7cd6-4ecb-bce4-696243dfeeb2",
+			"0;721;1;t;f;f;9278;01edfbca-1819-46d6-9a73-a2c62cda3c6a",
+			"0;720;1;f;f;f;9279;fcf889e4-ffaa-4058-94b4-220ad6dfcb21",
+			"0;719;1;t;f;f;9280;9c2a472e-7275-43ac-ab44-1047b803c499",
+			"0;718;1;f;f;f;9281;d3c4c933-fd18-4806-8212-21dfde6e3907",
+			"0;717;1;t;f;f;9282;ba829f5e-7d07-4688-b3cc-f206d244ffac",
+			"0;716;1;f;f;f;9283;ec7ce00d-9fa5-4a73-859d-ddaa3d3a9d5b",
+			"0;715;1;t;f;f;9284;89caf4f2-0d5f-400f-a033-051e241d5d10",
+			"0;714;1;f;f;f;9285;e6186815-004b-4766-bae3-7d07dd9c0cd5",
+			"0;713;1;t;f;f;9286;8af88267-3d43-4812-ad98-6a22a02c135e",
+			"0;712;1;f;f;f;9287;a4866fe4-c3cd-4b29-9630-c22289bc8e28",
+			"0;711;1;t;f;f;9288;9bb29212-54c4-43a3-a11e-770e57891499",
+			"0;710;1;f;f;f;9289;614f0e8a-127c-429a-bf1c-46be2dee15f0",
+			"0;709;1;t;f;f;9290;7f1d24f1-667f-4ac5-8514-b1b3543565d1",
+			"0;708;1;f;f;f;9291;b9211418-dc50-4888-908f-7420f02abb6a",
+			"0;707;1;t;f;f;9292;dc375865-8f4a-4a4e-b322-ed0c1948d4bb",
+			"0;706;1;f;f;f;9293;f6ece070-ae88-452d-9998-64c722f4e73d",
+			"0;705;1;t;f;f;9294;99025f9e-7975-4095-8d89-9bb9abd38dfd",
+			"0;704;1;f;f;f;9295;471e59c2-c6cf-4354-ba42-1e767c32574f",
+			"0;703;1;t;f;f;9296;8a62f8fc-2f66-492f-9d41-9c0e4be0238e",
+			"0;702;1;f;f;f;9297;2f34a39c-7c9c-47cf-8698-943a32f4bd3e",
+			"0;701;1;t;f;f;9298;a4fef4af-75e0-4bd0-8e6e-b95a71b9e934",
+			"0;700;1;f;f;f;9299;94483cba-430d-45a2-b53a-50a966c0058c",
+			"0;699;1;t;f;f;9300;bbf800c8-9541-4c7f-9e67-169fce1bf210",
+			"0;698;1;f;f;f;9301;1c512877-b1a7-4827-922c-ce3fe2ada8b7",
+			"0;697;1;t;f;f;9302;d6f4a814-9016-408f-a105-8d91eec4cb43",
+			"0;696;1;f;f;f;9303;943e101f-6793-4763-897b-880e48966768",
+			"0;695;1;t;f;f;9304;08ee3143-dc62-4bc9-a6ba-075a4101ce17",
+			"0;694;1;f;f;f;9305;de94a911-cdaf-4f24-9db2-e6174b951165",
+			"0;693;1;t;f;f;9306;2b17887d-6980-442d-b975-4cce1c9df711",
+			"0;692;1;f;f;f;9307;8adff041-bc18-48db-9d8e-9d9ab1579f28",
+			"0;691;1;t;f;f;9308;2ab13628-5a31-4f35-b8ee-86cb7be57f7e",
+			"0;690;1;f;f;f;9309;c18a80fb-853c-4144-9c1f-96b8de2b1968",
+			"0;689;1;t;f;f;9310;5a91c15d-6dc7-4603-b32e-62212048b06b",
+			"0;688;1;f;f;f;9311;21a7568c-2bd1-4591-82e9-61be36ee2ddd",
+			"0;687;1;t;f;f;9312;a16c4401-9a76-48d7-a801-c27c5c95be46",
+			"0;686;1;f;f;f;9313;24e8e5c7-cc3d-4319-a51d-08aef4470e91",
+			"0;685;1;t;f;f;9314;fc0f5e8d-8847-4b8c-8df7-e2e23b3b140e",
+			"0;684;1;f;f;f;9315;414431f1-110a-437a-820e-76ec5f4f166a",
+			"0;683;1;t;f;f;9316;da8c1479-36d0-4878-9b8f-5bca6a3533f6",
+			"0;682;1;f;f;f;9317;34d32e43-d2e7-40ae-82ae-e520141bae21",
+			"0;681;1;t;f;f;9318;1f1b5758-58a3-46a5-b741-5db380dfb0d4",
+			"0;680;1;f;f;f;9319;6e86f6ac-e814-453f-9797-0996e6a95b82",
+			"0;679;1;t;f;f;9320;12b430dc-bc1f-4a5c-b437-d0fea9267a1f",
+			"0;678;1;f;f;f;9321;bb081f73-3649-44f1-85ff-80d88cfdbb83",
+			"0;677;1;t;f;f;9322;bf22011b-e238-4228-a338-6e226b2310e7",
+			"0;676;1;f;f;f;9323;ff572f7c-4739-4a2c-9eac-bc118944c364",
+			"0;675;1;t;f;f;9324;0c96c3eb-1a6e-4f1c-9883-6c145ec5e364",
+			"0;674;1;f;f;f;9325;a6b580c4-48d9-40cf-aaad-e657b84444d6",
+			"0;673;1;t;f;f;9326;d554368c-aa1b-4f9c-b69a-35946af5fc9a",
+			"0;672;1;f;f;f;9327;4798dac8-b6d7-40cf-95d5-c928f3fcd0a9",
+			"0;671;1;t;f;f;9328;782c1c31-98d0-46ba-b6da-a4ebd798302e",
+			"0;670;1;f;f;f;9329;2aba1c73-d7ec-4678-9c63-90049e8fd986",
+			"0;669;1;t;f;f;9330;dd6dbc6d-f1ae-46a3-adc2-e5110271b76c",
+			"0;668;1;t;f;f;9331;9a35fe9b-0d9a-489c-b28b-13b06e3646ac",
+			"0;667;1;f;f;f;9332;3bd25c74-79d3-42c1-877d-e3ab18453c8b",
+			"0;666;1;f;f;f;9333;9392fe3e-0a03-488e-87b7-4325bdea0890",
+			"0;665;1;t;f;f;9334;b381b420-5220-4e85-8308-2fd124ae041e",
+			"0;664;1;t;f;f;9335;9f43ee6f-78e1-4385-8c76-c9fbec99b9d7",
+			"0;663;1;f;f;f;9336;345235b3-ed73-401d-9ce9-7d6a77cbf35b",
+			"0;662;1;f;f;f;9337;fd05362b-d48d-451e-9bda-8ada3eab78a0",
+			"0;661;1;t;f;f;9338;a643c50c-d882-4f02-9b56-06d83a7b6ed4",
+			"0;660;1;f;f;f;9339;199f6f16-422c-478b-b1ba-07d342735e48",
+			"0;659;1;t;f;f;9340;0e075a52-9d32-4f01-9082-ed0b4d06b4da",
+			"0;658;1;f;f;f;9341;80a58046-7a91-451e-8994-1ed461102871",
+			"0;657;1;t;f;f;9342;1c94535f-a6a7-41b0-9450-c49685a29aa5",
+			"0;656;1;f;f;f;9343;291dc35f-39d0-4262-8e05-26117167288b",
+			"0;655;1;t;f;f;9344;5418bb41-4777-4b8d-a6b4-4853bceec743",
+			"0;654;1;f;f;f;9345;fb93c6e7-dc15-41ce-9b7a-5a8e7c965fc9",
+			"0;653;1;t;f;f;9346;be7099ba-530f-4ffb-a3ac-bd21c53d021a",
+			"0;652;1;f;f;f;9347;28275e95-cde0-436b-b934-2f6783f944b9",
+			"0;651;1;t;f;f;9348;cea7eead-c0fc-4815-9f72-a7b58cb42227",
+			"0;650;1;f;f;f;9349;3379c26f-4033-4210-9fa2-55294787c7a9",
+			"0;649;1;t;f;f;9350;026c97e0-6ab6-4730-85f4-61fb4eac4783",
+			"0;648;1;t;f;f;9351;35a67bc2-2d92-4152-8469-0ab24228a6cc",
+			"0;647;1;f;f;f;9352;f96499f2-e933-4b78-86f5-ac632cd1852b",
+			"0;646;1;f;f;f;9353;f3b3329e-95f5-4b54-83d9-387ca361e02b",
+			"0;645;1;t;f;f;9354;1d5501dd-2d3d-4524-ab61-1de13ac9e3f8",
+			"0;644;1;t;f;f;9355;3e9cefce-f46e-4f19-b676-f3c42e5f7b4a",
+			"0;643;1;f;f;f;9356;39f1c66d-dc1b-4c32-a55a-501268755376",
+			"0;642;1;f;f;f;9357;f8cc682f-82e6-45be-8b36-29f709d85270",
+			"0;641;1;t;f;f;9358;50f8f518-95b8-492e-ac4e-c8432fb564b8",
+			"0;640;1;f;f;f;9359;27f2171f-1374-4c16-8cdb-64f1cd7215e3",
+			"0;639;1;t;f;f;9360;257e5e8d-09ab-418c-ba6c-dd55f39a867c",
+			"0;638;1;f;f;f;9361;358d0777-51a4-46e5-870d-4a7c6ea802b2",
+			"0;637;1;t;f;f;9362;85029f9e-add7-4cf8-ba4b-33fa58b5c120",
+			"0;636;1;f;f;f;9363;3011ef4d-0fc3-4a7f-a9e6-e35c39fd40dd",
+			"0;635;1;t;f;f;9364;f2484c72-f77a-4aa7-b40a-ac1f44696e7c",
+			"0;634;1;f;f;f;9365;f986e194-4734-41c1-88d7-8ce41dddf83b",
+			"0;633;1;t;f;f;9366;bea4e070-eabe-4336-a3dd-54d6d2e611cd",
+			"0;632;1;t;f;f;9367;a74300e1-e2d4-481a-81fa-93df625ac8a7",
+			"0;631;1;f;f;f;9368;d065e09f-3ae3-4afc-9ca6-db945da21e91",
+			"0;630;1;f;f;f;9369;e6016493-22dd-4e20-b090-10a88050d63b",
+			"0;629;1;t;f;f;9370;14c9b6a2-50ab-46a8-8976-745ceb13bdce",
+			"0;628;1;f;f;f;9371;33dd42b4-bcbf-4ee8-9bfa-02e9ac232ccc",
+			"0;627;1;t;f;f;9372;f2f5d6bb-ed56-4b61-83ea-63cfedbe18f4",
+			"0;626;1;f;f;f;9373;093d25d4-7049-4845-b5d0-cf28f43412e3",
+			"0;625;1;t;f;f;9374;bd15cbdd-ae17-4d56-a4da-be065372e1a1",
+			"0;624;1;f;f;f;9375;7813c181-4c8c-435e-83e3-4d32b3f577bf",
+			"0;623;1;t;f;f;9376;143f3e35-edf7-44c9-b103-ec1103620975",
+			"0;622;1;f;f;f;9377;10059090-918d-451a-ad33-a43fa9338c31",
+			"0;621;1;t;f;f;9378;ef3b0e3d-042d-4087-af1e-098e0eef4e1f",
+			"0;620;1;f;f;f;9379;048aecf5-27d5-49bf-87a1-e91e30a32bb1",
+			"0;619;1;t;f;f;9380;386d9728-99ef-4f1e-aae1-333ac3c8f87d",
+			"0;618;1;f;f;f;9381;a40ea9fa-a631-47b0-b8c0-ec985c08830b",
+			"0;617;1;t;f;f;9382;1adac0f8-f25e-497c-a851-348eaf8f9b7f",
+			"0;616;1;f;f;f;9383;355c331f-b8cb-4e8e-9ee7-0d2ab903fdc0",
+			"0;615;1;t;f;f;9384;ed51e298-2067-476e-b879-31fdf116e918",
+			"0;614;1;f;f;f;9385;f19b254a-4457-42c9-a1eb-10de9ebf1f2f",
+			"0;613;1;t;f;f;9386;2b6ef980-dc57-4776-b820-c98ea3edba07",
+			"0;612;1;f;f;f;9387;f6e26782-95ee-48ef-9f5e-6ee79cac95f2",
+			"0;611;1;t;f;f;9388;96fa16b9-a59f-471d-a3a2-a049db80655a",
+			"0;610;1;t;f;f;9389;0bf1f0e6-a8c6-416a-b14f-21d6bdb0bdd9",
+			"0;609;1;f;f;f;9390;a5f5861c-0917-4eb0-8abe-5b41deffcb91",
+			"0;608;1;f;f;f;9391;08757c44-1004-42e7-bbd5-da953dc1f3bc",
+			"0;607;1;t;f;f;9392;a33b2d15-d89a-4fb2-8928-cea4f34d090c",
+			"0;606;1;t;f;f;9393;b74ee134-753c-46f9-8028-caaf16fb942b",
+			"0;605;1;f;f;f;9394;87b1cef2-8d98-46e8-9254-e404ee93d314",
+			"0;604;1;f;f;f;9395;729ea2c0-0bbb-43ef-b160-5ad6f798d001",
+			"0;603;1;t;f;f;9396;a94c1b94-79be-4de3-a493-9b089924d0c3",
+			"0;602;1;f;f;f;9397;c048b3d4-abad-4037-9bf7-7e22afb10f44",
+			"0;601;1;t;f;f;9398;fa5e059d-e286-4823-9ca5-5828db94328e",
+			"0;600;1;f;f;f;9399;cda2f576-7ae2-429f-8df2-dceef987efce",
+			"0;599;1;t;f;f;9400;fa0e7fa0-651e-4bff-8216-e200703d29d1",
+			"0;598;1;f;f;f;9401;a3ee00a1-f86f-495a-bc4b-6eaefc621a43",
+			"0;597;1;t;f;f;9402;aa0f356d-fee0-4f2e-885e-50389bb8a505",
+			"0;596;1;f;f;f;9403;055ca6b1-6089-4c36-8f03-6ede57e68698",
+			"0;595;1;t;f;f;9404;7c153b04-c053-4a04-b943-3e6e220c543c",
+			"0;594;1;f;f;f;9405;a3fd89c6-3618-413e-9188-d617f940d908",
+			"0;593;1;t;f;f;9406;a2890df3-51bc-4863-94bb-e8de87ab598c",
+			"0;592;1;f;f;f;9407;708f728d-1110-4984-8463-a242f6ebc2c4",
+			"0;591;1;t;f;f;9408;05361b52-e508-4e4d-b14c-507673b8a248",
+			"0;590;1;f;f;f;9409;ab3a0427-92ae-4a83-b482-818a7b6bbc05",
+			"0;589;1;t;f;f;9410;2a0be2c6-fd44-40a7-866d-1532ef4b03b3",
+			"0;588;1;f;f;f;9411;7b5661ea-c987-426c-885b-f10aec980fe5",
+			"0;587;1;t;f;f;9412;baf2002d-d2b7-4222-a730-97776421c292",
+			"0;586;1;f;f;f;9413;fa083259-46e7-4bb9-90de-cae47d349705",
+			"0;585;1;t;f;f;9414;05639f6e-5e08-426d-a97f-1d1fb28e68f0",
+			"0;584;1;f;f;f;9415;46a7907f-832d-45fa-9f6a-f9ae8f488484",
+			"0;583;1;t;f;f;9416;3f5f5a1c-f131-40ba-b759-ced09a0df1ab",
+			"0;582;1;f;f;f;9417;1b2661b5-1118-4cdf-9184-50645a0343e8",
+			"0;581;1;t;f;f;9418;c9e08e61-5599-42a3-b215-d94242795295",
+			"0;580;1;f;f;f;9419;c9775af2-2fa0-4a7a-93ff-f9346c93598a",
+			"0;579;1;t;f;f;9420;ebee0966-19dd-4f7d-bca1-0423061f6ac4",
+			"0;578;1;f;f;f;9421;be4d2b9f-7098-4593-a9ef-8fa63ba6576e",
+			"0;577;1;t;f;f;9422;81ee39fe-f3db-4c92-8336-17b074cc7688",
+			"0;576;1;f;f;f;9423;084272b7-fa8c-4a5c-a8c9-9fa0503f3106",
+			"0;575;1;t;f;f;9424;2ffa26a4-1cc9-4585-9ff5-6301766d107b",
+			"0;574;1;f;f;f;9425;2e4b65b8-0ead-4723-ac0b-2a5e4fbe65b3",
+			"0;573;1;t;f;f;9426;8edd7e8a-d52f-4696-965f-da9900f3458a",
+			"0;572;1;f;f;f;9427;5c1d8638-6a38-40bd-baa1-c435c29a7b05",
+			"0;571;1;t;f;f;9428;9337dd98-cd9a-43d9-9942-bf5506186827",
+			"0;570;1;f;f;f;9429;c432b8dc-766a-4c83-926e-ba087b4bd013",
+			"0;569;1;t;f;f;9430;eff8e21b-a722-4e8a-8c0d-562f71a611c8",
+			"0;568;1;f;f;f;9431;cab7761d-6b78-46b4-b8ec-b9b45dccb43e",
+			"0;567;1;t;f;f;9432;60a475e5-61d4-41e6-980d-932ebf4189f8",
+			"0;566;1;f;f;f;9433;5130f6c5-b702-446f-a31a-3b658993e058",
+			"0;565;1;t;f;f;9434;79480699-4bda-4ea3-94b3-1ba2876c549c",
+			"0;564;1;f;f;f;9435;f0a5728b-11e0-467a-af2a-525e35c6c64b",
+			"0;563;1;t;f;f;9436;a371ca21-61d4-4a4a-b92c-58ea450699d4",
+			"0;562;1;f;f;f;9437;47240125-145f-476e-a7d7-cd5f9fd9b723",
+			"0;561;1;t;f;f;9438;1656177a-abc2-4339-900b-753cccbc6d57",
+			"0;560;1;f;f;f;9439;61962b84-c1bd-4d05-a517-dddacdf20241",
+			"0;559;1;t;f;f;9440;072774c7-9382-40cb-883b-c1ae17937257",
+			"0;558;1;f;f;f;9441;d7bdfe59-7d14-4e84-a586-40f1a24c8de2",
+			"0;557;1;t;f;f;9442;d1df721b-72cf-4655-ab1f-afbd2a674a58",
+			"0;556;1;f;f;f;9443;702198c1-49b2-4f9a-8b3f-a1ed1d19cdd0",
+			"0;555;1;t;f;f;9444;b42d03f4-7a93-47fe-b0a6-a030bf700770",
+			"0;554;1;f;f;f;9445;3e55f26e-749f-48a3-a01e-2f0f76a83a53",
+			"0;553;1;t;f;f;9446;c6c5b5b8-0126-43a1-85ff-27f01d76ed8e",
+			"0;552;1;f;f;f;9447;81fffcd9-f191-48ba-af36-1436d479512d",
+			"0;551;1;t;f;f;9448;aabff301-e105-4ed9-88a6-1f5f302d3f97",
+			"0;550;1;f;f;f;9449;bd384487-ca2a-4d99-aebb-4851ee4ec056",
+			"0;549;1;t;f;f;9450;828d5126-eb8b-4023-bfd8-56c573ee52b0",
+			"0;548;1;t;f;f;9451;67d2d2c2-f192-4d90-a25d-1b03a135f38e",
+			"0;547;1;f;f;f;9452;f5cd9da4-d2b8-4508-8034-5cd17e885fbb",
+			"0;546;1;f;f;f;9453;8fe73d8a-ce01-4e31-a55b-6b0d6de79723",
+			"0;545;1;t;f;f;9454;f1902c2a-bba6-4d07-835d-e1d2bc6394ac",
+			"0;544;1;f;f;f;9455;e1217fee-b660-4bfb-929c-36d1bbe83cf3",
+			"0;543;1;t;f;f;9456;79d1440c-b998-49f4-b68d-f564bcb3d855",
+			"0;542;1;f;f;f;9457;c2a05ecc-0622-4cdb-87f7-52f7e4d68820",
+			"0;541;1;t;f;f;9458;7655efaf-aa35-4101-b6d4-a4252781327f",
+			"0;540;1;t;f;f;9459;65c5d9d5-f147-4ab5-84b8-44f44c252eab",
+			"0;539;1;f;f;f;9460;60d49735-7355-4250-b159-00d7648b73c4",
+			"0;538;1;f;f;f;9461;f3401650-a668-437c-9477-b30278615739",
+			"0;537;1;t;f;f;9462;590b90b3-739b-487e-b137-1ba99dcd0b99",
+			"0;536;1;t;f;f;9463;24bcaed2-7440-4b68-977e-89179ace7c57",
+			"0;535;1;f;f;f;9464;26558bda-1a3d-4bd4-af98-a9d55ba821fb",
+			"0;534;1;f;f;f;9465;38e0fcbd-2a73-40f3-8913-804eb92a2320",
+			"0;533;1;t;f;f;9466;c3623668-b61c-4270-a30b-1531e260151e",
+			"0;532;1;f;f;f;9467;e920cc7d-5e5f-4ab1-b85e-8f25c837a4eb",
+			"0;531;1;t;f;f;9468;997c5ca0-47bb-4c5b-a601-8161eb80dfe3",
+			"0;530;1;f;f;f;9469;8694d192-bfde-4f69-a5e6-0c1189488386",
+			"0;529;1;t;f;f;9470;544821a2-ebbc-47ea-aee2-f1b1221ba8cc",
+			"0;528;1;f;f;f;9471;fc8f08a4-2962-4ca4-b5bb-28bed82411d4",
+			"0;527;1;t;f;f;9472;9965ae9d-1de6-4be3-8fdf-70dcb3acdb5d",
+			"0;526;1;f;f;f;9473;2e4a9b76-be50-4add-9403-2639d7c65764",
+			"0;525;1;t;f;f;9474;981b4ded-e37e-4278-8cd2-176dd584ac0e",
+			"0;524;1;f;f;f;9475;5296db61-6db7-48f9-a19c-d13c2052612a",
+			"0;523;1;t;f;f;9476;dd82ea8c-da31-4888-9e81-8e961ff5d6b0",
+			"0;522;1;f;f;f;9477;cb635441-69d1-40f2-8403-e7045132ad4f",
+			"0;521;1;t;f;f;9478;043afead-3a7c-45b9-91eb-7f6b0641ccdc",
+			"0;520;1;f;f;f;9479;93e86299-7ed4-4df6-8c76-f9631a588806",
+			"0;519;1;t;f;f;9480;1b173979-b256-4c2d-802a-ce4a84f129ea",
+			"0;518;1;f;f;f;9481;e851da84-393d-4b73-9758-3b539f5d31eb",
+			"0;517;1;t;f;f;9482;fb92e5cb-933f-49d2-ae6a-cb4be33a2bb6",
+			"0;516;1;f;f;f;9483;ce9eecb4-5278-4f46-af5c-d295aa3bd2c7",
+			"0;515;1;t;f;f;9484;9c0c72be-565a-4068-a38e-d8712cf8a71b",
+			"0;514;1;f;f;f;9485;6eaa0b3a-1684-4923-960e-e4bb5faf3ad6",
+			"0;513;1;t;f;f;9486;79abc1e3-1302-43b6-ba66-66cd637ab138",
+			"0;512;1;f;f;f;9487;c0f7d17c-5f46-42da-a5a2-23f0e0c505ce",
+			"0;511;1;t;f;f;9488;873db210-9a54-4d3c-8eab-5c70c61055f1",
+			"0;510;1;f;f;f;9489;de49aa44-f718-474b-969d-f44a9db59b14",
+			"0;509;1;t;f;f;9490;9ff425ed-744c-4c4a-8ea1-99492ccdff32",
+			"0;508;1;f;f;f;9491;ed035fbd-51d2-4167-a049-b9bd48de286f",
+			"0;507;1;t;f;f;9492;fc0a3614-07ad-42c2-8968-7b359f1d6c82",
+			"0;506;1;f;f;f;9493;144a362f-a288-42e0-a6d4-111684939580",
+			"0;505;1;t;f;f;9494;12048372-ab01-4f8c-840c-a9ef14764234",
+			"0;504;1;f;f;f;9495;23be9fe1-d4f1-4cb8-97a4-6c7e2790fc0e",
+			"0;503;1;t;f;f;9496;48eff012-cb3c-42b2-be8d-fa98ec14cded",
+			"0;502;1;f;f;f;9497;f464d202-3e9b-40c5-bf7f-20099349b0d0",
+			"0;501;1;t;f;f;9498;0ed8d52d-119e-4b6f-a7f5-dba6ef88bdd6",
+			"0;500;1;f;f;f;9499;1cfa7a7d-9dad-49d1-a8ca-cbb25c547b3d",
+			"0;499;1;t;f;f;9500;ebd82881-011b-45d8-a7c2-172bfc666ee0",
+			"0;498;1;f;f;f;9501;e74c4cce-6930-4fa4-9aa5-d12d93b77eff",
+			"0;497;1;t;f;f;9502;7bcb2f4c-5e0c-4965-9695-2aaf50b1df62",
+			"0;496;1;f;f;f;9503;49f5b9c5-b48b-423b-87b9-9c5a0f4f7428",
+			"0;495;1;t;f;f;9504;48553850-deb1-48d3-a5f8-0a64331fd15a",
+			"0;494;1;f;f;f;9505;5713087e-6e71-4b8a-b771-80a2c454ca18",
+			"0;493;1;t;f;f;9506;6144a082-0194-46bc-98ad-9c8f79261edb",
+			"0;492;1;f;f;f;9507;fd8bd8cb-e4d0-451b-b64f-66325009998a",
+			"0;491;1;t;f;f;9508;32184643-3aaf-444f-863f-da6fe932a060",
+			"0;490;1;f;f;f;9509;79665c05-c408-45b4-93cb-210d74c3399f",
+			"0;489;1;t;f;f;9510;1c6a9aa7-f2fc-40d5-bc8a-0f909886f8b3",
+			"0;488;1;f;f;f;9511;52792b75-02a5-45db-bd7a-631582bfaa61",
+			"0;487;1;t;f;f;9512;2285051d-fede-4d67-b903-116525d25ff4",
+			"0;486;1;f;f;f;9513;ac76cceb-37e1-430c-b20d-1c630f04812e",
+			"0;485;1;t;f;f;9514;c63e94c1-b88a-49b9-b50e-2f570e352c2d",
+			"0;484;1;f;f;f;9515;b5534a98-1e62-4e3f-8242-d1e578e855df",
+			"0;483;1;t;f;f;9516;0b3ca1a3-64c0-4642-a89b-77bb5c59c1ac",
+			"0;482;1;f;f;f;9517;fd40bf20-61ac-4adc-96f0-66dac629d236",
+			"0;481;1;t;f;f;9518;07e09ff3-daf9-4a3a-adcb-17874bd7dca4",
+			"0;480;1;f;f;f;9519;9ed39d32-4e49-493e-91ed-80e88e9ed0ce",
+			"0;479;1;t;f;f;9520;69671679-2c96-4821-8477-0470097052c5",
+			"0;478;1;f;f;f;9521;56cad074-0e9d-4aa0-a5c1-04a330c10d3d",
+			"0;477;1;t;f;f;9522;6835c379-94a6-47ec-814a-8d1692d91703",
+			"0;476;1;f;f;f;9523;11e1de6b-d884-43da-89d9-c5963369593f",
+			"0;475;1;t;f;f;9524;75a075ff-35f0-4dbe-8785-462d04fdd86c",
+			"0;474;1;f;f;f;9525;f32bbf30-d9ac-4a45-bbac-b909084c66d2",
+			"0;473;1;t;f;f;9526;8f580c0b-2e04-46f6-8232-0d4e290fb294",
+			"0;472;1;f;f;f;9527;72d42713-c66e-489e-af23-b44f018f3ba3",
+			"0;471;1;t;f;f;9528;a7343e39-f76e-4432-8bd5-66de51c8a496",
+			"0;470;1;f;f;f;9529;83a53f13-ea19-4d3a-8b6d-d1e49d2e7414",
+			"0;469;1;t;f;f;9530;c7a9965d-20fe-423b-8a16-cce1affd9e5d",
+			"0;468;1;f;f;f;9531;0c933649-c629-494f-b140-67f2f36a327d",
+			"0;467;1;t;f;f;9532;85f6efd5-bb21-4d10-a35a-8cb48238c6d1",
+			"0;466;1;f;f;f;9533;bf2c4a9f-da42-4814-a965-a5ec47abfe4d",
+			"0;465;1;t;f;f;9534;a73e7c59-de74-463e-b2dd-4b63d5075b8d",
+			"0;464;1;f;f;f;9535;04810922-0f46-447e-b35c-197bd849659f",
+			"0;463;1;t;f;f;9536;2ffcecd2-2729-4d6d-bf13-720705fe236d",
+			"0;462;1;f;f;f;9537;d9b94660-1cfe-40f2-a3a5-911dabd3ac2f",
+			"0;461;1;t;f;f;9538;86aa18ab-4964-400e-b378-a3b69cd40467",
+			"0;460;1;f;f;f;9539;a2251b86-65e7-4b98-b809-80eb1d9f3a71",
+			"0;459;1;t;f;f;9540;77ba2313-8bf0-4499-a76f-5782c44061b3",
+			"0;458;1;f;f;f;9541;abe2d46f-a883-4ed7-a9e4-8247f3661959",
+			"0;457;1;t;f;f;9542;4bd02e4b-f275-408f-bfb7-593920dca6ff",
+			"0;456;1;f;f;f;9543;2a520dd0-5d03-4ba9-992a-6c7a0cf4e9ce",
+			"0;455;1;t;f;f;9544;24c0cc32-23d2-4830-a542-fdc71e27c51e",
+			"0;454;1;f;f;f;9545;2ce4eb9a-c82f-4244-9473-80aea02b4c58",
+			"0;453;1;t;f;f;9546;6d9dba79-d59c-4da2-b24e-3d3e4fe3bc0d",
+			"0;452;1;f;f;f;9547;15b69269-8cb1-4cbc-95cb-514c4d729698",
+			"0;451;1;t;f;f;9548;38b3e245-7fc3-4281-b3b0-98e3a8da8f76",
+			"0;450;1;f;f;f;9549;98fd7ebf-16a6-440d-b8cd-6b557ace040a",
+			"0;449;1;t;f;f;9550;0db1ac2c-3594-421e-9438-74f4df546aaa",
+			"0;448;1;f;f;f;9551;2f151c78-1f9c-4a4b-86b9-8a5e434e9abc",
+			"0;447;1;t;f;f;9552;357ad8c7-feba-445b-8c16-0c618c685b1d",
+			"0;446;1;f;f;f;9553;110c216b-f9b0-42d3-b984-39301f533366",
+			"0;445;1;t;f;f;9554;566b9336-0349-4c45-acfe-bcce673db8fa",
+			"0;444;1;f;f;f;9555;383d3240-a122-499e-9c78-dcf197699ba8",
+			"0;443;1;t;f;f;9556;b516d2ba-7244-45aa-bc09-749579ad0eac",
+			"0;442;1;f;f;f;9557;d63fe288-daa4-4227-b651-e0edd508653c",
+			"0;441;1;t;f;f;9558;62cf9478-9118-4c07-a9bd-4a8dcca5f25d",
+			"0;440;1;f;f;f;9559;007dc067-2b65-4d0c-8909-017d255bf285",
+			"0;439;1;t;f;f;9560;28d82df5-0f59-4bb8-bd90-87257e3225e1",
+			"0;438;1;f;f;f;9561;3ba5cc0a-b479-4e0b-84cb-b49f86ab54b9",
+			"0;437;1;t;f;f;9562;d2a6bd18-7eed-416c-8a9a-10f7e54cff53",
+			"0;436;1;f;f;f;9563;5a8c8d78-c3d7-4a8b-b991-b743dd25c13f",
+			"0;435;1;t;f;f;9564;779f01d7-af86-4367-8fab-a07017746628",
+			"0;434;1;f;f;f;9565;a4093334-d08f-4761-abf0-ec049d527b7f",
+			"0;433;1;t;f;f;9566;49365bd7-783f-4059-84e0-30f6087048e4",
+			"0;432;1;f;f;f;9567;3b277207-7656-4348-8ea6-19ee190a5a73",
+			"0;431;1;t;f;f;9568;d45e20c8-3c44-4a54-8ffa-5b340e38ab1a",
+			"0;430;1;f;f;f;9569;6d20faba-cd88-4117-8ca8-12a25ff916ce",
+			"0;429;1;t;f;f;9570;13503e8e-353b-43c8-89f2-731b0e6f6129",
+			"0;428;1;f;f;f;9571;2480a315-1e18-40c0-9796-a97eb7644f2f",
+			"0;427;1;t;f;f;9572;f806c04a-31f1-4d44-ae4e-530b6205a9fd",
+			"0;426;1;f;f;f;9573;cc9cce1b-a6da-4222-9dd9-c7661978f138",
+			"0;425;1;t;f;f;9574;8edc5e4f-3a48-4930-a13d-deb37b8eb15e",
+			"0;424;1;f;f;f;9575;798a797d-fc7e-4e8d-955a-7d5fecab06c3",
+			"0;423;1;t;f;f;9576;9134afb3-131f-40fc-bb05-2984c34f2e9f",
+			"0;422;1;f;f;f;9577;66986369-d407-4887-a564-d35cd4fe002b",
+			"0;421;1;t;f;f;9578;13ee5967-6937-4cc8-9462-2b084cde1aa0",
+			"0;420;1;f;f;f;9579;260456f8-0778-4355-a7de-a4960349f471",
+			"0;419;1;t;f;f;9580;0b9b4736-c88e-4d07-9e0c-2ae1a29f6130",
+			"0;418;1;f;f;f;9581;1beb8ce1-8d0e-44e6-a7c8-eb03faa9b5ac",
+			"0;417;1;t;f;f;9582;24df3dc7-2c0a-4ddb-accb-dfd8ba9accb2",
+			"0;416;1;f;f;f;9583;0750efdb-4dc9-444a-b61e-d1d129e7770d",
+			"0;415;1;t;f;f;9584;e97ca319-4c1a-4c89-af6e-445505824488",
+			"0;414;1;f;f;f;9585;5c2c47e1-418d-41ac-aa35-51f9d190e965",
+			"0;413;1;t;f;f;9586;b8e68251-8529-4a5c-b114-10cc2c90cdf3",
+			"0;412;1;f;f;f;9587;02ec7efc-f47e-480b-9a5d-329467c280c7",
+			"0;411;1;t;f;f;9588;a097f018-33a3-4c21-87de-29639f7f2881",
+			"0;410;1;f;f;f;9589;b319e9ee-8866-46d4-962e-76d8506b61ad",
+			"0;409;1;t;f;f;9590;6507750e-9e06-43a9-8d6d-12f2f8958db2",
+			"0;408;1;f;f;f;9591;f12b2372-a4ed-4f63-b41d-8f79a6e5f10f",
+			"0;407;1;t;f;f;9592;4aee472c-7e64-4a9d-b400-f48bffd94601",
+			"0;406;1;f;f;f;9593;c4ab97eb-29fc-4230-adb8-44ccf3fca813",
+			"0;405;1;t;f;f;9594;c417d293-0f7a-4c74-9996-d65b62e94c40",
+			"0;404;1;f;f;f;9595;11fc4644-feb0-46e9-b05f-602030d06ea0",
+			"0;403;1;t;f;f;9596;8f22793f-5e6f-4e20-b10f-f2702caae8f7",
+			"0;402;1;f;f;f;9597;c125c6b8-a72c-4adf-b2cc-05bd79fd1f42",
+			"0;401;1;t;f;f;9598;4357a0e5-3598-4c07-89cc-2020af7904e0",
+			"0;400;1;f;f;f;9599;4ab368a9-cf59-4388-abb4-0a30e2ccba1e",
+			"0;399;1;t;f;f;9600;bfc5d2ea-3d99-4270-abd0-83088b45c62d",
+			"0;398;1;t;f;f;9601;853e71c2-adf3-4d9d-aca1-8b90a8470117",
+			"0;397;1;f;f;f;9602;59db885c-9e25-46c0-ab86-4a011b8be2a0",
+			"0;396;1;f;f;f;9603;b5ad0720-42c6-49c4-b74a-936091c0d4c7",
+			"0;395;1;t;f;f;9604;7b912908-2cbc-4637-9051-347d2c8dc30d",
+			"0;394;1;t;f;f;9605;204b5f41-7f47-44b2-9b07-8d5412e248e9",
+			"0;393;1;f;f;f;9606;438ad8db-2d6d-49b7-8b54-fde247a2c81a",
+			"0;392;1;f;f;f;9607;d426edae-a764-4c89-ae8c-17dbb57e3d85",
+			"0;391;1;t;f;f;9608;7544699b-a1ed-410d-9eee-b38115ca34f8",
+			"0;390;1;f;f;f;9609;709a6e54-4a7e-4286-ad7f-17b85c509711",
+			"0;389;1;t;f;f;9610;5b96f52b-a647-450f-84ad-b0d89ee5fa80",
+			"0;388;1;f;f;f;9611;0297c783-aa48-4258-88f4-a1d7a69697e1",
+			"0;387;1;t;f;f;9612;70628da6-2ebe-4c16-a078-10deb79b3fde",
+			"0;386;1;f;f;f;9613;32ba6f9b-3610-43eb-b446-5bc0e90830f3",
+			"0;385;1;t;f;f;9614;18385722-5751-4834-8b44-2fa1df42f21d",
+			"0;384;1;f;f;f;9615;3ae432ed-aeae-4238-b34a-bc076099e9c2",
+			"0;383;1;t;f;f;9616;d01c4de6-4047-45e4-9027-d5116a23acdd",
+			"0;382;1;f;f;f;9617;fc4497fd-279b-44ed-a85f-4242a68b16aa",
+			"0;381;1;t;f;f;9618;acd89165-9517-41d5-9072-3d2e6ce82634",
+			"0;380;1;f;f;f;9619;515838bc-6924-4902-8a66-92c252710d50",
+			"0;379;1;t;f;f;9620;9f83e9a5-0add-4cc5-9265-7c7841697c9b",
+			"0;378;1;f;f;f;9621;834a051c-1ae3-4cc7-816e-692d18a5f2b5",
+			"0;377;1;t;f;f;9622;1b4dd89f-f244-475c-8d5c-07714696ad44",
+			"0;376;1;f;f;f;9623;e6e7d688-835e-4a8c-995c-364e12b06f2e",
+			"0;375;1;t;f;f;9624;1f6701b9-0264-4429-86d4-65d5dd082cb3",
+			"0;374;1;f;f;f;9625;85d224ee-f84f-4664-9a3d-0ac27c6edb83",
+			"0;373;1;t;f;f;9626;a3c387d0-522b-4105-8a2c-fda5e9fa01c0",
+			"0;372;1;f;f;f;9627;36a12d47-f8cf-4b40-b2c9-ec2bac6a5edb",
+			"0;371;1;t;f;f;9628;207178d7-778c-499d-9970-6a8ae2148ec6",
+			"0;370;1;f;f;f;9629;59bd8352-b5da-4ba9-9095-7c6aa9c4eaa1",
+			"0;369;1;t;f;f;9630;99e59904-7bb9-4742-8dd3-ed8c0942d861",
+			"0;368;1;f;f;f;9631;0dc78a9d-8883-4f08-8a08-302e2500edb4",
+			"0;367;1;t;f;f;9632;9e11368a-7cc8-40cd-ae07-4b540742cdea",
+			"0;366;1;f;f;f;9633;a3b9994e-3fee-45e3-b6d5-bd0e85393204",
+			"0;365;1;t;f;f;9634;573cf3c7-77d3-4797-84e6-8cb434872753",
+			"0;364;1;f;f;f;9635;0bf302f6-1637-4d66-874f-fbb694dda9e9",
+			"0;363;1;t;f;f;9636;38befb7a-60b5-45d0-ad4d-37d38ee0c201",
+			"0;362;1;f;f;f;9637;66b129f9-9931-45b0-bf14-00a39ae14db0",
+			"0;361;1;t;f;f;9638;fe97b91b-42a8-4fdc-bd7e-d10237b3a48e",
+			"0;360;1;f;f;f;9639;1782bbbe-7664-401e-a7bd-f409f35b4f83",
+			"0;359;1;t;f;f;9640;33d57826-7c68-4b8b-a63f-74306b5c2674",
+			"0;358;1;f;f;f;9641;6bad55d7-77b6-4570-affe-0e5be2dcd2b5",
+			"0;357;1;t;f;f;9642;53fb7621-3f47-4f50-bce4-2adf9ef9fe37",
+			"0;356;1;f;f;f;9643;db7bb336-9c26-4cb7-b771-6b9270abc190",
+			"0;355;1;t;f;f;9644;34e14022-2e12-46a3-a075-40e24004bfef",
+			"0;354;1;f;f;f;9645;3c5934fb-2b68-48c2-94ef-35354a73fc95",
+			"0;353;1;t;f;f;9646;fce55389-a23a-4ce9-8701-13cdb072e24d",
+			"0;352;1;t;f;f;9647;07fd3653-5965-4663-9b09-c59710512ea8",
+			"0;351;1;f;f;f;9648;01599627-83f4-4f4b-8c76-d6e90e9a0adf",
+			"0;350;1;f;f;f;9649;4fb9536a-12cc-4400-9a26-d34749a9b1be",
+			"0;349;1;t;f;f;9650;f2b17a5e-6314-40a3-946b-bdf9be27fdbc",
+			"0;348;1;t;f;f;9651;964e7108-6da9-4228-94cc-71380f749740",
+			"0;347;1;f;f;f;9652;7c402dca-4b32-4491-b19a-a91ca198764e",
+			"0;346;1;f;f;f;9653;2ed5910a-ca22-4520-9176-f738028af2a3",
+			"0;345;1;t;f;f;9654;ca378d7b-4933-4957-830e-68cc44828f78",
+			"0;344;1;t;f;f;9655;d2a313d6-fe73-4bba-ab40-dde2640b87ff",
+			"0;343;1;f;f;f;9656;21732d06-aab0-4a8e-b6ea-52dc986183b7",
+			"0;342;1;f;f;f;9657;8d8ec4ac-395f-4999-89eb-41ff7d9f68fb",
+			"0;341;1;t;f;f;9658;bcc9da23-c6f2-4007-bc86-7329c5a1c842",
+			"0;340;1;t;f;f;9659;22a9aed9-96a2-4db0-81f1-0d74013f3cba",
+			"0;339;1;f;f;f;9660;0893f348-d4d7-418c-9796-3b46e0226175",
+			"0;338;1;f;f;f;9661;18639be8-4c3c-41f7-ba15-b35d0b74694f",
+			"0;337;1;t;f;f;9662;6af59c15-acd8-4a8e-981a-a3a0b585df8d",
+			"0;336;1;f;f;f;9663;1d8024b7-1c55-4fa7-be06-d4fbb0e24530",
+			"0;335;1;t;f;f;9664;81e897a6-c538-40e1-ad8a-3bc9d46a19cc",
+			"0;334;1;f;f;f;9665;27d16fb1-8efd-4d2f-b13e-39cd894b943a",
+			"0;333;1;t;f;f;9666;29aef04a-caca-450a-b4e6-5f49d65070d4",
+			"0;332;1;f;f;f;9667;51d7f51b-1eef-43d2-8c34-8735dbff4f91",
+			"0;331;1;t;f;f;9668;67d9a7a9-2ef2-4dd4-b303-3556af3386d7",
+			"0;330;1;f;f;f;9669;8cfdf146-3201-45e7-9336-9e00514ca491",
+			"0;329;1;t;f;f;9670;3ebffa7d-5e69-4e55-935f-132320e0739a",
+			"0;328;1;f;f;f;9671;f310b8e6-d926-45fe-b2d6-9f7b9539478e",
+			"0;327;1;t;f;f;9672;03dc1c61-a942-45d4-be05-9713af054c56",
+			"0;326;1;f;f;f;9673;5e01a11d-fcf1-446b-a8be-da0343db2c02",
+			"0;325;1;t;f;f;9674;0dbd8544-9339-4246-bddf-a2c991e22a02",
+			"0;324;1;f;f;f;9675;e7ec1b0c-a336-460b-b4fe-7f009373911c",
+			"0;323;1;t;f;f;9676;54bfef0f-7964-44b6-88dd-1a48b9aacea0",
+			"0;322;1;f;f;f;9677;a80feb7e-07b1-4771-8a8f-3b797f076d0d",
+			"0;321;1;t;f;f;9678;2a4fcd6a-9c48-4eda-8a69-775eca7a85b6",
+			"0;320;1;f;f;f;9679;9972bb7d-3a01-498a-97b4-f1e5919a410d",
+			"0;319;1;t;f;f;9680;f73c066f-3284-4df3-aa05-b68dc1a2479a",
+			"0;318;1;f;f;f;9681;7c3dd8de-d53c-4eaf-85b6-a75c3539c65d",
+			"0;317;1;t;f;f;9682;08393df9-e944-4092-80a6-16616d73d3ad",
+			"0;316;1;f;f;f;9683;5b7dab14-79a1-46e1-904e-481e25243d04",
+			"0;315;1;t;f;f;9684;f2d9955d-799a-475a-b5c5-9396e7cc057c",
+			"0;314;1;f;f;f;9685;62c7e964-995e-4d50-a93d-72caf7b786f4",
+			"0;313;1;t;f;f;9686;8c146678-63e3-4170-9400-33cf06aa2aa1",
+			"0;312;1;f;f;f;9687;e3042a78-ddb4-45cb-9db5-d283c767a715",
+			"0;311;1;t;f;f;9688;d32fe3b8-76c2-454c-b907-165bd6bc8166",
+			"0;310;1;f;f;f;9689;543ae789-7e6d-466f-afd2-10ac527eacaf",
+			"0;309;1;t;f;f;9690;d8fa9c1a-7f83-44f2-8e80-ccbd74491a80",
+			"0;308;1;f;f;f;9691;a5a65048-d8bd-4f20-bc74-b3146945ce34",
+			"0;307;1;t;f;f;9692;a540166e-5a38-4765-8c97-5cf7f57196a4",
+			"0;306;1;f;f;f;9693;5b836a01-c3ef-42bd-aa2a-92b0a34bc906",
+			"0;305;1;t;f;f;9694;0346dd1d-4cb5-47a1-acd5-74101cd436e6",
+			"0;304;1;f;f;f;9695;1704898d-5ed8-41ae-bb85-2c6f589d4613",
+			"0;303;1;t;f;f;9696;61b4c1a2-d3d3-4490-bc15-e4d3d1241f3e",
+			"0;302;1;f;f;f;9697;d12edc14-f3e6-4d3e-b27d-525dbeff37d0",
+			"0;301;1;t;f;f;9698;8c46d0b1-0fdb-4e27-8c33-28efa15631c1",
+			"0;300;1;f;f;f;9699;b8513d58-d603-46d6-b2c7-9461b1ef3081",
+			"0;299;1;t;f;f;9700;d03f9d8b-8288-4da8-af5f-88be33ee24e7",
+			"0;298;1;f;f;f;9701;ab8bb737-f8a7-45dd-bf81-a1d7d3454c82",
+			"0;297;1;t;f;f;9702;74fd2df1-cc50-417d-b4d6-b72a6e2bc33d",
+			"0;296;1;f;f;f;9703;74713a13-6ccc-439b-a714-29fb2f593267",
+			"0;295;1;t;f;f;9704;c9f9e255-8a29-4df6-8c54-f52cd986b2b1",
+			"0;294;1;f;f;f;9705;2e6bc5f1-8f1d-4241-9f7b-66ff727cedca",
+			"0;293;1;t;f;f;9706;6c98f0bf-c017-4eed-82c1-902af6394279",
+			"0;292;1;f;f;f;9707;cde34684-5410-40eb-bf0f-c88307f0814f",
+			"0;291;1;t;f;f;9708;157e9b4b-9327-496b-ba3c-2fc69b4b16eb",
+			"0;290;1;f;f;f;9709;d5b0388d-44f0-4989-8bc5-b45dda3aca71",
+			"0;289;1;t;f;f;9710;735a1e60-b7e4-48e5-a67b-6f3bc262d43f",
+			"0;288;1;f;f;f;9711;513c0242-c547-483d-92bf-3a2a1225b28b",
+			"0;287;1;t;f;f;9712;0e94605d-cf88-4872-b4b5-9104d73b7d41",
+			"0;286;1;t;f;f;9713;1dc60564-0b8f-4fae-aec8-4e8643e16845",
+			"0;285;1;f;f;f;9714;abfe46d7-5c6e-47aa-be6e-658dc21c5b4f",
+			"0;284;1;f;f;f;9715;03019fdd-c065-400b-83d1-2bac3d7f9821",
+			"0;283;1;t;f;f;9716;b6ce24c0-34fd-4bd2-942b-38181daec1cb",
+			"0;282;1;f;f;f;9717;e574e7ce-335d-44f3-813e-27f682c75905",
+			"0;281;1;t;f;f;9718;8c657f18-1664-4a0f-a65d-6085142be3f0",
+			"0;280;1;f;f;f;9719;e3f6115f-e5b3-4c3c-8c08-d159d90669fc",
+			"0;279;1;t;f;f;9720;9905a329-46dd-44d7-bf46-210219ec7c16",
+			"0;278;1;f;f;f;9721;c94cc422-be83-4437-b4d5-79ca327e2c47",
+			"0;277;1;t;f;f;9722;a521770a-b8cd-47ba-ba04-2cc5b1b4a7b0",
+			"0;276;1;f;f;f;9723;42e9b7db-9f32-411a-86b1-3eb009310c0b",
+			"0;275;1;t;f;f;9724;48f2ea73-c425-4f85-b7d4-c3cf01a48c07",
+			"0;274;1;f;f;f;9725;ff939fca-5cae-4dd9-b986-00dfc6c97962",
+			"0;273;1;t;f;f;9726;4fdd0bb2-fc10-49d5-a059-bae7c7991c52",
+			"0;272;1;f;f;f;9727;a37f5a1d-c75b-47d9-bf5b-91e8aee6a1f9",
+			"0;271;1;t;f;f;9728;d1dc2713-4bfd-4e0c-913d-16d6288e3ff8",
+			"0;270;1;f;f;f;9729;4d9f90e1-c51f-4454-8044-c7282893aae2",
+			"0;269;1;t;f;f;9730;60247f50-b6d8-4864-976b-c4d59664b87e",
+			"0;268;1;f;f;f;9731;48259f07-9afd-452d-b112-2856b20a9f63",
+			"0;267;1;t;f;f;9732;ac64509a-4085-41cb-9e2b-92014ea8ae2f",
+			"0;266;1;f;f;f;9733;d23f8281-b8d8-4b69-8212-197a36311f15",
+			"0;265;1;t;f;f;9734;7850338b-4b74-40a0-b867-2692cccb96d9",
+			"0;264;1;f;f;f;9735;dcd35b30-8fcc-4e98-bcd2-0dfb7e4b3ae4",
+			"0;263;1;t;f;f;9736;a033b6f2-7a13-444a-b6c8-ab8da239524e",
+			"0;262;1;f;f;f;9737;d1ed1481-b886-48cb-97cb-f22e7450e175",
+			"0;261;1;t;f;f;9738;1ae7bd5a-b818-470e-acb2-0f0b3bf61dfb",
+			"0;260;1;f;f;f;9739;e1498af7-d7bf-459d-9b94-b8227ab9a1d9",
+			"0;259;1;t;f;f;9740;2c80b643-f8c5-4627-a7fe-078bf6a63932",
+			"0;258;1;f;f;f;9741;3445519a-0d08-4c24-b4a1-209e7849b7fb",
+			"0;257;1;t;f;f;9742;5dc541bd-86c5-48df-ab31-b0a6972267bc",
+			"0;256;1;f;f;f;9743;a64fd3e9-eacd-4768-a5d1-1beda6733037",
+			"0;255;1;t;f;f;9744;7508f66b-24a3-4bf7-8b8e-b7ace92363d0",
+			"0;254;1;f;f;f;9745;ff2b2ae2-07a6-46ee-8d66-48424f009620",
+			"0;253;1;t;f;f;9746;4ec3feee-1cd6-4215-8e9a-90f5714cc427",
+			"0;252;1;f;f;f;9747;6f7dff5d-79e9-45c5-ac99-306052d468c2",
+			"0;251;1;t;f;f;9748;037b0294-6c1c-44f3-a20f-7c320b736701",
+			"0;250;1;f;f;f;9749;9eeb52bc-40b2-4020-a338-0d6c536a0c27",
+			"0;249;1;t;f;f;9750;59afbd27-f4ce-4c52-8fe7-43c90a504eb0",
+			"0;248;1;f;f;f;9751;f9d80f04-b571-4c1a-a55f-2fa1475ce265",
+			"0;247;1;t;f;f;9752;e4ce0cea-bb40-4a51-bce2-071d3dd03a40",
+			"0;246;1;f;f;f;9753;b5a2a106-f058-41dc-89ae-d0e260ff4635",
+			"0;245;1;t;f;f;9754;c5156d56-8d44-4628-a897-4d07aad3bd89",
+			"0;244;1;f;f;f;9755;95648c52-e002-4ad0-bf97-1e5d67511e07",
+			"0;243;1;t;f;f;9756;375c641f-a3d1-4020-9c8e-400c67cfebe9",
+			"0;242;1;f;f;f;9757;550d9c11-78f6-4343-9a1c-cd9a4b2dfc47",
+			"0;241;1;t;f;f;9758;353df8d3-98da-4a5e-a00e-fe2d6ad77d64",
+			"0;240;1;f;f;f;9759;ae07998c-5b9c-4ab9-b091-5fcdfa6de469",
+			"0;239;1;t;f;f;9760;a734b6eb-8e89-45d2-9c8e-8ce75043d118",
+			"0;238;1;f;f;f;9761;8ae9921e-2b05-4ef7-be7a-daed671ff07c",
+			"0;237;1;t;f;f;9762;8b4124ce-44a3-48eb-b941-fcd8b9ce275f",
+			"0;236;1;f;f;f;9763;85c2e84e-5fe1-4764-9589-d1673cdbd9e0",
+			"0;235;1;t;f;f;9764;aca86daf-8980-473a-993a-6019bbc1a2cb",
+			"0;234;1;f;f;f;9765;abd41eae-4cce-4be2-837d-c4b351068c42",
+			"0;233;1;t;f;f;9766;3e501049-65f5-4691-8acf-56d3f1a0735b",
+			"0;232;1;f;f;f;9767;5d7f2a26-9c62-4c07-9e3f-8b2522a94fa4",
+			"0;231;1;t;f;f;9768;2d4f3e5c-b3a6-4c3b-80d5-bf4eb2ad49fa",
+			"0;230;1;f;f;f;9769;3c78e97a-b511-4e65-bd84-d6e94a03cc04",
+			"0;229;1;t;f;f;9770;db590359-bc77-4665-8a27-39c5461be1ca",
+			"0;228;1;f;f;f;9771;3ee52432-5ce4-4e91-9458-f9c79cefb365",
+			"0;227;1;t;f;f;9772;19ce5c5d-7ad5-4f74-a959-fb1c54ebdedf",
+			"0;226;1;f;f;f;9773;6a627b9d-6965-4a11-8832-d10e586dd6df",
+			"0;225;1;t;f;f;9774;7d0f119d-eebc-4a95-97db-35a2c5c99fd0",
+			"0;224;1;f;f;f;9775;41de9e39-e849-4a1c-a2fa-6d03a051af24",
+			"0;223;1;t;f;f;9776;f5a36221-c1a3-48e1-a6f6-25ade2c27456",
+			"0;222;1;f;f;f;9777;9559b55a-9f2a-4342-b88f-71bfe289ccc6",
+			"0;221;1;t;f;f;9778;808eaaf8-b0c2-4369-9f38-f8c3988c5ea3",
+			"0;220;1;f;f;f;9779;4d910888-db5b-4613-8626-a40361c4bbc1",
+			"0;219;1;t;f;f;9780;7937ab5b-00f5-4ef9-9f97-8fc3ca2efa4f",
+			"0;218;1;f;f;f;9781;a7d8d774-8daa-4a1f-84ba-3b6c6e30dd8b",
+			"0;217;1;t;f;f;9782;ade5b83c-4084-47c9-af51-be49565f3088",
+			"0;216;1;f;f;f;9783;4c329dd4-2eb4-44f5-87ce-cc91e46e284c",
+			"0;215;1;t;f;f;9784;b4064a7f-1e5e-4240-96c4-c6c55a6454c0",
+			"0;214;1;f;f;f;9785;15e5ced2-a0fc-4ab4-b08b-250d66f83ed7",
+			"0;213;1;t;f;f;9786;b2f19aa7-f060-42a8-93e7-c7d40ef7547e",
+			"0;212;1;f;f;f;9787;85870304-0ab9-4fb8-acfb-40c7417ce6df",
+			"0;211;1;t;f;f;9788;c0e361ea-f834-409e-995f-ef2cb0f4d4c2",
+			"0;210;1;f;f;f;9789;97daa25f-9903-4f0f-8b52-bf5badb6585b",
+			"0;209;1;t;f;f;9790;6142d648-6cdd-45ea-b285-f5e9af761982",
+			"0;208;1;f;f;f;9791;892193a6-ba23-4033-9ca6-36476ee35ea7",
+			"0;207;1;t;f;f;9792;65a96f36-3396-4936-b3a2-8ca66cd15952",
+			"0;206;1;f;f;f;9793;c67910b3-3546-446e-94a9-458ae12a70e8",
+			"0;205;1;t;f;f;9794;e69acd1e-fc20-4785-a22e-029295600151",
+			"0;204;1;f;f;f;9795;dab67860-cda7-4462-ab2a-4aaa4367d24f",
+			"0;203;1;t;f;f;9796;9c12d801-845d-4f80-8c25-6d0dee19737c",
+			"0;202;1;f;f;f;9797;7a1882a3-239a-426a-b230-8bc8787b23b6",
+			"0;201;1;t;f;f;9798;b3148e20-4f82-40b4-8aeb-05b676cdb1cf",
+			"0;200;1;f;f;f;9799;b1640aca-4f0e-42fc-82e8-cab5e30bba63",
+			"0;199;1;t;f;f;9800;9a370584-8cc4-417c-8629-1f62641f0230",
+			"0;198;1;f;f;f;9801;26880e63-2358-4dba-a7aa-89c09412df50",
+			"0;197;1;t;f;f;9802;4419b2b1-9190-4e4f-a974-92e71e84baa9",
+			"0;196;1;f;f;f;9803;69a2cdc2-38eb-4efa-bdbc-00dec4161ebf",
+			"0;195;1;t;f;f;9804;35cff489-1157-49ed-8e14-b6a71cd4c02f",
+			"0;194;1;f;f;f;9805;c2aa9405-096a-464a-b3c6-ec4226dc2d6d",
+			"0;193;1;t;f;f;9806;80e93d77-877e-4c4b-98f2-f5ea59867c05",
+			"0;192;1;f;f;f;9807;90e58b19-eeb5-4787-b97a-fc1a7c005380",
+			"0;191;1;t;f;f;9808;29b8a494-14ee-4711-b186-913b7f78dd77",
+			"0;190;1;f;f;f;9809;50142ab3-5d42-484e-8127-aaeb84fae9c7",
+			"0;189;1;t;f;f;9810;fb8d4379-0481-46c6-ab44-058f9affb1d1",
+			"0;188;1;f;f;f;9811;34155ac2-37be-4add-a41f-ecf2927da952",
+			"0;187;1;t;f;f;9812;151812eb-3f56-4704-b031-fb6f5cf5911f",
+			"0;186;1;f;f;f;9813;cdb608ad-2f85-4b15-a1bf-53ab5e144d9e",
+			"0;185;1;t;f;f;9814;22d51d8a-462e-4e4e-b38a-f30408dc937d",
+			"0;184;1;f;f;f;9815;1770547c-9c89-4bb3-af34-5c19e2781997",
+			"0;183;1;t;f;f;9816;65031c0d-3447-4acb-9447-0a48087d62a5",
+			"0;182;1;f;f;f;9817;9a8d2a6b-7fb5-45ed-aeaf-a8a52519cc00",
+			"0;181;1;t;f;f;9818;c54bf8ad-97e2-4828-ab8e-e5f5715b1c7c",
+			"0;180;1;f;f;f;9819;65f7dcc7-5f19-4f50-9235-43cb6961223b",
+			"0;179;1;t;f;f;9820;7e8ddc3d-2e8d-4c4c-bd00-ef4c90598aac",
+			"0;178;1;f;f;f;9821;0415220b-b515-49f8-b9f1-c70b489735aa",
+			"0;177;1;t;f;f;9822;c2a23bbd-341e-4675-8c81-3b9414aa6b7c",
+			"0;176;1;f;f;f;9823;9f57a244-6fb8-48b1-8f36-72901666c84e",
+			"0;175;1;t;f;f;9824;8616d81a-c331-4e32-b8cd-425598238e7e",
+			"0;174;1;f;f;f;9825;7660c000-b30d-4a2e-bc59-c4157fc2b34d",
+			"0;173;1;t;f;f;9826;bf01a827-6a96-47cc-91dc-f5d901fc2292",
+			"0;172;1;f;f;f;9827;6e17aee3-98c9-4931-9e77-7528eb2c0215",
+			"0;171;1;t;f;f;9828;edeab2d2-b11c-4b60-ad39-cf5be158c9d1",
+			"0;170;1;f;f;f;9829;38729516-75bb-4b51-9c30-6457045ac25c",
+			"0;169;1;t;f;f;9830;99b54e35-c2e2-41e1-8acd-f6a48851e1ad",
+			"0;168;1;f;f;f;9831;1eeea609-6ba7-40a0-94b0-060f673f5029",
+			"0;167;1;t;f;f;9832;53c96180-cc80-4a64-baef-d879f591f133",
+			"0;166;1;f;f;f;9833;26df11bf-91b1-47a5-8481-b0b240a74d97",
+			"0;165;1;t;f;f;9834;91040b46-edc6-450c-9f65-b5f837ca4698",
+			"0;164;1;f;f;f;9835;523920d2-e3a7-4e39-88b3-1357f5c7724e",
+			"0;163;1;t;f;f;9836;2f1ef841-838e-423b-9700-0b77c06405d6",
+			"0;162;1;f;f;f;9837;34aaa7a2-69b5-4bec-a2eb-ed0f01fedb54",
+			"0;161;1;t;f;f;9838;fa474007-8c3c-4df9-970d-33a0afb4a18f",
+			"0;160;1;f;f;f;9839;69ed15aa-a961-4c57-aa55-7f0e9b93919b",
+			"0;159;1;t;f;f;9840;99ba96c7-e144-4538-9fca-8284479266be",
+			"0;158;1;f;f;f;9841;112ce54e-79ee-4fd0-8406-f3b4aaeab082",
+			"0;157;1;t;f;f;9842;db3b5631-a324-4e30-a5db-bec928af3af0",
+			"0;156;1;f;f;f;9843;c2e144b3-e716-42e5-9346-6becad9091f2",
+			"0;155;1;t;f;f;9844;96039d94-6fc0-48c7-8406-484a4cc970d7",
+			"0;154;1;f;f;f;9845;c948f3eb-7157-42d9-b5b3-f1f0ab24bc43",
+			"0;153;1;t;f;f;9846;145c0cb2-a50a-45ed-bbd0-13b3463bfd8c",
+			"0;152;1;f;f;f;9847;8b227e08-3c2f-48e3-a0ba-5ffc11af3098",
+			"0;151;1;t;f;f;9848;633f16d5-c3c7-4a8f-ab22-3a95c6432642",
+			"0;150;1;f;f;f;9849;a63aece9-3bb2-4853-b6c9-1da56ce3643a",
+			"0;149;1;t;f;f;9850;78cc4ce9-bbd0-4d84-aa67-42a920064313",
+			"0;148;1;f;f;f;9851;17330dbc-66a0-4ebb-bc6c-9d84d2c75356",
+			"0;147;1;t;f;f;9852;5a8bdcdf-341c-458a-8871-9a042e181750",
+			"0;146;1;f;f;f;9853;dd532a21-25e0-4fa4-8ac2-64a2ee8ea673",
+			"0;145;1;t;f;f;9854;b2be20ce-bf8d-46b8-9152-6cec5ad0c3e8",
+			"0;144;1;f;f;f;9855;76153bb9-d0f1-4cb9-b44a-6c2d5de08e20",
+			"0;143;1;t;f;f;9856;ad7395ee-8537-4b77-9bda-505cb3f18664",
+			"0;142;1;f;f;f;9857;f6160a84-3a50-4066-9be0-f962db3b2fd0",
+			"0;141;1;t;f;f;9858;e07b183b-0e4e-4530-a3bb-a88edd8b62f9",
+			"0;140;1;f;f;f;9859;60a6a841-2034-4705-8201-c73346f918e1",
+			"0;139;1;t;f;f;9860;8fc90cff-e521-481b-a299-cdcc26eb6aac",
+			"0;138;1;f;f;f;9861;188e9a4f-c8b0-4ee5-aab4-530b8b27bc1c",
+			"0;137;1;t;f;f;9862;71ea27d8-2196-4d93-b94b-742fa0a6979c",
+			"0;136;1;t;f;f;9863;01358d6f-7d6e-4ef5-9ad3-5919b77dea0d",
+			"0;135;1;f;f;f;9864;3ca83258-db9e-4b1c-8b16-458d1c6f56ab",
+			"0;134;1;f;f;f;9865;f17789b7-da20-41a6-adf3-2e794bb84e11",
+			"0;133;1;t;f;f;9866;49d7146f-1343-4c6d-bab6-1718b392cf3d",
+			"0;132;1;f;f;f;9867;7d4b500f-8307-4862-980f-56539e6a0a8a",
+			"0;131;1;t;f;f;9868;f321aa47-aa92-439e-961d-03ffe9c2fbcf",
+			"0;130;1;f;f;f;9869;c0d51be6-d985-4ff4-b5d5-89fa1e19d1b7",
+			"0;129;1;t;f;f;9870;d99d706f-449c-4fe0-bd49-c973a22c1bf4",
+			"0;128;1;f;f;f;9871;5ddc4ad4-773b-40dd-86bb-07c854695e7c",
+			"0;127;1;t;f;f;9872;607294a4-a749-483c-abf2-efa794686628",
+			"0;126;1;f;f;f;9873;41efc0fe-e279-4b51-93a8-228792ea8309",
+			"0;125;1;t;f;f;9874;9ae4a18b-211a-4744-880c-cde3875cf911",
+			"0;124;1;f;f;f;9875;73fc8c94-3c71-44c1-95d8-fb775b50495f",
+			"0;123;1;t;f;f;9876;9f571a5f-d5ab-4952-840f-72025fa8d2bd",
+			"0;122;1;f;f;f;9877;0ad1cc29-d999-4a7e-acd8-b3cefa209324",
+			"0;121;1;t;f;f;9878;fb78b3a6-8150-4225-9f49-1a721ff48b72",
+			"0;120;1;f;f;f;9879;e3d9b485-e1d7-4b34-8baa-e22848ccb25e",
+			"0;119;1;t;f;f;9880;e3330143-3ed8-4a32-9b4e-f9f82f184c66",
+			"0;118;1;f;f;f;9881;53b29ee3-98d6-4f34-98bb-bad64d1557c0",
+			"0;117;1;t;f;f;9882;58b33e73-65e8-4db4-af5a-d439e84d423a",
+			"0;116;1;f;f;f;9883;b9d4f567-4867-49e6-a19e-867f365a8a78",
+			"0;115;1;t;f;f;9884;be56cf93-94dd-4a0b-8524-038d05af81b4",
+			"0;114;1;f;f;f;9885;ff08396f-9cdc-46b7-b8c7-384c4c344542",
+			"0;113;1;t;f;f;9886;2e92bf6c-d29a-4276-8261-3959ce3bf19e",
+			"0;112;1;f;f;f;9887;0db7c1f7-d37b-4ae7-99df-9fe7df48f663",
+			"0;111;1;t;f;f;9888;630cf59b-b942-4ebf-8e92-2badae4bbfb2",
+			"0;110;1;f;f;f;9889;3f9bfddd-f4dd-4654-b6fe-3465e627f576",
+			"0;109;1;t;f;f;9890;cb28ac35-d766-441a-bbc5-0dbfa0975263",
+			"0;108;1;f;f;f;9891;c58da6cc-0b66-4c2f-a91e-ffca3c8fbfe4",
+			"0;107;1;t;f;f;9892;1b4b2f53-1fc1-4f67-a725-19b0f8b6158b",
+			"0;106;1;f;f;f;9893;f7a92f73-e583-4c41-aaf2-6c6a8f2d9320",
+			"0;105;1;t;f;f;9894;4d1b008a-b8d8-4584-848c-852d0d99ffad",
+			"0;104;1;f;f;f;9895;cb37b2cb-f157-42d8-9ea8-39ade2ec563b",
+			"0;103;1;t;f;f;9896;b82f5fff-85c2-468b-9f84-b94105b6effb",
+			"0;102;1;f;f;f;9897;901c0c8f-95c9-439b-a85b-dca8811c579f",
+			"0;101;1;t;f;f;9898;f9d57069-0367-4252-936b-dfc31bea3bde",
+			"0;100;1;f;f;f;9899;f98a32fa-605b-4735-ad7f-4eb703af6a95",
+			"0;99;1;t;f;f;9900;deffb2f9-8a4f-4586-b2f9-b582d91937e8",
+			"0;98;1;f;f;f;9901;57141e47-7234-4bf1-8604-512c8f3f5793",
+			"0;97;1;t;f;f;9902;0964f7cc-b94d-47ef-b47f-8e6e5b8f577e",
+			"0;96;1;f;f;f;9903;2b99dc01-aecb-4e13-89a1-6f2bc96b9118",
+			"0;95;1;t;f;f;9904;c0d6b05c-e743-42cb-af08-93e509ab8f46",
+			"0;94;1;f;f;f;9905;21394954-24bd-4ab2-8cab-62ada417da03",
+			"0;93;1;t;f;f;9906;9d4d7f17-bd9b-4a29-8169-0f368663f448",
+			"0;92;1;f;f;f;9907;c3f5cfe9-f296-481b-aefa-ab2a2f450b89",
+			"0;91;1;t;f;f;9908;906fb5d8-9c0a-4260-9804-8ebdddd82b96",
+			"0;90;1;f;f;f;9909;a369b77a-a184-49e5-bdb7-ac6278cb0eb2",
+			"0;89;1;t;f;f;9910;891f3be1-ad53-4490-9ec9-bd84c49e8f2c",
+			"0;88;1;f;f;f;9911;b3a3016d-428c-4d97-a4d5-6cdb858dbd61",
+			"0;87;1;t;f;f;9912;de69ba6d-4a3e-4f28-bedb-8580b1ecf109",
+			"0;86;1;f;f;f;9913;ed9985e0-006e-4bb5-bd22-80dc6f7a9f00",
+			"0;85;1;t;f;f;9914;1b4acd7e-e7a0-4a13-94f8-a6ee32c65288",
+			"0;84;1;t;f;f;9915;4dffdfbf-1a7a-4c25-835a-6af87868743a",
+			"0;83;1;f;f;f;9916;267688b8-8d9c-4289-b2a2-168623ce1c04",
+			"0;82;1;f;f;f;9917;70d3f56a-a5ee-42bc-ba6b-76e81efcd597",
+			"0;81;1;t;f;f;9918;d8bee492-2be0-415f-ab04-d3314776c02e",
+			"0;80;1;t;f;f;9919;9fbffdec-9fc5-481a-a9b3-0d2771b12850",
+			"0;79;1;f;f;f;9920;3f946e3f-ca0b-4300-b4b0-90738ba3f897",
+			"0;78;1;f;f;f;9921;bdf8d9f6-d082-49fa-afd9-ef150ba188c9",
+			"0;77;1;t;f;f;9922;dc87969a-4acb-4c0f-9abd-04fc87ee5f16",
+			"0;76;1;t;f;f;9923;14d7e924-a09f-4b29-8f10-180e97668c0f",
+			"0;75;1;f;f;f;9924;a7c0b3e9-b71d-4dd6-9498-50601dbfac53",
+			"0;74;1;f;f;f;9925;7ba7fe5c-45a8-442e-a7ff-d5986c8cf33f",
+			"0;73;1;t;f;f;9926;84277f7e-6f6b-4edd-9f95-38f24c2d830e",
+			"0;72;1;t;f;f;9927;83d775c5-f39f-434e-b047-2fa51c8b95ee",
+			"0;71;1;f;f;f;9928;f64547b4-94ab-4697-987e-b2a2998cc83b",
+			"0;70;1;f;f;f;9929;6d29be75-5ec3-4bfc-be5e-e24f4f9e6787",
+			"0;69;1;t;f;f;9930;53801f12-70f3-4785-8e92-142f790fa6b9",
+			"0;68;1;f;f;f;9931;749d06a7-228c-42c8-9e37-521ad99b34e6",
+			"0;67;1;t;f;f;9932;3da2dc39-65b0-4eea-89c6-bd40e87e9116",
+			"0;66;1;f;f;f;9933;39c19107-7427-46ec-9615-6b9d36640382",
+			"0;65;1;t;f;f;9934;870b9b7e-7909-4508-8885-48384af40832",
+			"0;64;1;f;f;f;9935;3a206975-4239-4e0f-8dbd-aacda3b85537",
+			"0;63;1;t;f;f;9936;9ff9b379-39ed-425c-83d7-e31b607d28c8",
+			"0;62;1;f;f;f;9937;e57c4141-0e08-4e03-8c5a-158637108492",
+			"0;61;1;t;f;f;9938;c0b304b5-bd80-401e-a916-7d138c45a25c",
+			"0;60;1;f;f;f;9939;86e24931-9606-4762-9db9-2ac3bc7c0ce8",
+			"0;59;1;t;f;f;9940;041c3c06-b7c5-42f8-80a0-dfac161a22a6",
+			"0;58;1;f;f;f;9941;852374f7-d8a7-4ce5-ae13-a4c26360ec0c",
+			"0;57;1;t;f;f;9942;71c25d70-7c2f-4f36-a9e4-446afaac9dc7",
+			"0;56;1;f;f;f;9943;377b50b4-f71b-4221-b4b0-03047839d633",
+			"0;55;1;t;f;f;9944;5bd82d22-02ef-4edf-b74d-6a0a2d013fcc",
+			"0;54;1;f;f;f;9945;d8d451e5-216b-48b9-8fae-bba0330d0153",
+			"0;53;1;t;f;f;9946;b12e6d42-5bf3-4517-9b8c-a6dd01b0e74b",
+			"0;52;1;f;f;f;9947;5709fdec-3a42-498a-82c6-791dfd864db4",
+			"0;51;1;t;f;f;9948;05bd495f-4f4f-4978-8ed2-9703adf0436d",
+			"0;50;1;f;f;f;9949;972d3df8-858f-4861-8972-8dd348180750",
+			"0;49;1;t;f;f;9950;4983da28-96e3-4ff9-af3c-4c30d19b4415",
+			"0;48;1;t;f;f;9951;e8693d44-7dea-49d2-b566-4dea75e7ad3d",
+			"0;47;1;f;f;f;9952;a50d7bf6-19cc-4838-be4b-6e5209d0f491",
+			"0;46;1;f;f;f;9953;0a3aedbd-ca0e-44f8-94ec-7d686e806ec4",
+			"0;45;1;t;f;f;9954;152237d8-6190-4984-bbcc-b2ea8f10d028",
+			"0;44;1;f;f;f;9955;2f9210be-a61d-4c21-b6f6-df1a94b6a221",
+			"0;43;1;t;f;f;9956;1c3b0924-7e5a-4606-acb1-045f3a936fb2",
+			"0;42;1;f;f;f;9957;7f59504e-4fb7-4826-a1b8-55268b3a7554",
+			"0;41;1;t;f;f;9958;7427deeb-c091-4fbf-9d2b-9c6b5b783e58",
+			"0;40;1;f;f;f;9959;d2f0b66a-4f80-47bc-8a1c-8592eba09742",
+			"0;39;1;t;f;f;9960;ee3916ff-2155-44c7-8770-c44ea47fbb6a",
+			"0;38;1;f;f;f;9961;1dd24430-75c5-4e65-b217-cddeebf7ba8c",
+			"0;37;1;t;f;f;9962;1a673964-377f-4fc3-99a0-5720ab08a603",
+			"0;36;1;f;f;f;9963;14140a27-1d08-4ee0-9605-5b21fff96bfe",
+			"0;35;1;t;f;f;9964;f3b154da-108e-417c-8edc-898e82c1f2ce",
+			"0;34;1;f;f;f;9965;d7af3469-066c-403e-b9b5-e2d31cc9bcc9",
+			"0;33;1;t;f;f;9966;c8d9a297-bc88-4016-9f3f-001b7d26cb69",
+			"0;32;1;f;f;f;9967;9097fda3-b2b5-4038-a1b1-71d4a1eb8557",
+			"0;31;1;t;f;f;9968;ce10b439-0a55-44e9-bbd3-ff9178e33e44",
+			"0;30;1;f;f;f;9969;35586e42-b824-4e0d-9f45-724514b64707",
+			"0;29;1;t;f;f;9970;b4500f14-8134-443f-82a1-3e65170313a8",
+			"0;28;1;f;f;f;9971;0086fd1d-6b8c-4266-afb8-0b54e741842d",
+			"0;27;1;t;f;f;9972;a7d18648-383b-48d5-82ba-4ad347721480",
+			"0;26;1;f;f;f;9973;54e5e7ad-cdf0-4277-b98e-8c4ff520003f",
+			"0;25;1;t;f;f;9974;f8aee5fb-167b-475f-9a33-07b12d48f36b",
+			"0;24;1;f;f;f;9975;fd154af1-1c45-40ce-9f5e-c86f1c03269f",
+			"0;23;1;t;f;f;9976;43785ad0-4b9b-4dbe-8f53-0ad0fd175c5b",
+			"0;22;1;f;f;f;9977;20d8346c-e7b8-4c32-9221-9123ba5fe220",
+			"0;21;1;t;f;f;9978;41fce565-af53-4630-b857-4617dfea87aa",
+			"0;20;1;f;f;f;9979;f3f7bfde-4efc-4d8b-bef3-10625235eaa1",
+			"0;19;1;t;f;f;9980;ab07f755-cded-4645-a669-d6851b210f47",
+			"0;18;1;f;f;f;9981;ebfdaa38-1fb0-474f-9589-a61473ec4f68",
+			"0;17;1;t;f;f;9982;d145eaca-1e6e-4afa-b943-d2a7d8367b4b",
+			"0;16;1;f;f;f;9983;da6ce100-69fb-4932-8688-bcf2ac9ff5ff",
+			"0;15;1;t;f;f;9984;4e8c56a9-e439-47f3-a3e2-4f02cfc7a4ee",
+			"0;14;1;f;f;f;9985;43663128-3a42-4058-97e7-a2c7793f44e2",
+			"0;13;1;t;f;f;9986;cd54ce4c-ba2d-4d67-bff1-483b68c0565e",
+			"0;12;1;f;f;f;9987;0d8202d4-554d-4426-b085-2dbaf91b885c",
+			"0;11;1;t;f;f;9988;c3e63362-801d-493c-ba6f-dcfc2bc21633",
+			"0;10;1;f;f;f;9989;6dfe62af-d8bf-4baa-b5fd-0ccfefeebb90",
+			"0;9;1;t;f;f;9990;630f4ad8-e28e-4967-a926-1117cbeb0efb",
+			"0;8;1;f;f;f;9991;c579e2be-c44b-499c-becd-d64f0e301c7b",
+			"0;7;1;t;f;f;9992;04fe8acb-ce54-4e25-819b-20adb16675a8",
+			"0;6;1;f;f;f;9993;8a9afa92-f2e0-4a54-8f5a-a217b02be56d",
+			"0;5;1;t;f;f;9994;603f09f7-c463-4baf-9894-4ea84607471a",
+			"0;4;1;f;f;f;9995;3720dc75-07b1-4be3-811b-1c8ea8e9de0e",
+			"0;3;1;t;f;f;9996;a53f4123-5827-410e-895e-e5de5b9a9180",
+			"0;2;1;f;f;f;9997;fe1d2065-d81a-4a48-aebb-7e8bdfd76548",
+			"0;1;1;t;f;f;9998;ab695aa1-9c5e-4863-8172-5a9f925636b7",
+			"0;0;1;f;f;f;9999;e0a5ed3d-900b-4d0f-95ac-58d559a25dbc",
+		};
 
+		[Test (Description="Generated from sequence file cache_pq_sequence_2010-11-18_01-38-13.seq")]
+		public void Sequence_0005 ()
+		{
+			RunTest (tests_00005, list_00005);
 		}
 	}
 }
diff --git a/mcs/class/System.Web/Test/System.Web.Caching/ChangeLog b/mcs/class/System.Web/Test/System.Web.Caching/ChangeLog
index f37c9d7..aa06212 100644
--- a/mcs/class/System.Web/Test/System.Web.Caching/ChangeLog
+++ b/mcs/class/System.Web/Test/System.Web.Caching/ChangeLog
@@ -1,3 +1,29 @@
+2011-01-05  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Disabled a racy test
+
+2011-01-05  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Rewrote CacheItemPriorityQueue tests generator to
+	produce simpler test case.
+
+	The new test case uses arrays and postpones creation of
+	CacheItemPriorityQueueTestItem and TestCacheItem instances till
+	the actual test is ran. This reduces complexity of the
+	CacheItemPrioritQueueTest class constructor and allows the code to
+	run successfully on 32 bit machines.
+
+2010-11-19  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Disabled array clearing on heap resize in
+	CacheItemPriorityQueue as it causes NREX to be thrown with > 8192
+	items in the queue.
+
+	- Rewrote the CacheItem priority queue test generator to generate
+	better code. - CacheItem in System.Web doesn't have the unused
+	Guid field now (the field is used only for tests) - Added a huge
+	sequence to CacheItem priority queue tests (10k entries)
+
 2010-02-03  Marek Habersack  <mhabersack at novell.com>
 
 	* CacheItemPriorityQueueTest_generated.cs: added
diff --git a/mcs/class/System.Web/Test/System.Web.Caching/ChangeLog b/mcs/class/System.Web/Test/System.Web.Caching/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Web/Test/System.Web.Caching/ChangeLog
copy to mcs/class/System.Web/Test/System.Web.Caching/ChangeLog.old
diff --git a/mcs/class/System.Web/Test/System.Web.Compilation/ChangeLog b/mcs/class/System.Web/Test/System.Web.Compilation/ChangeLog
index d059f58..f865761 100644
--- a/mcs/class/System.Web/Test/System.Web.Compilation/ChangeLog
+++ b/mcs/class/System.Web/Test/System.Web.Compilation/ChangeLog
@@ -1,3 +1,7 @@
+2011-01-10  Marek Safar  <marek.safar at gmail.com>
+
+	Fixed more protected internal modifiers
+
 2010-01-19  Marek Habersack  <mhabersack at novell.com>
 
 	* TemplateControlCompilerTest.cs: added test for bug #568631
diff --git a/mcs/class/System.Web/Test/System.Web.Compilation/ChangeLog b/mcs/class/System.Web/Test/System.Web.Compilation/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Web/Test/System.Web.Compilation/ChangeLog
copy to mcs/class/System.Web/Test/System.Web.Compilation/ChangeLog.old
diff --git a/mcs/class/System.Web/Test/System.Web.Compilation/RouteUrlExpressionBuilderTest.cs b/mcs/class/System.Web/Test/System.Web.Compilation/RouteUrlExpressionBuilderTest.cs
index 454f830..a549dd5 100644
--- a/mcs/class/System.Web/Test/System.Web.Compilation/RouteUrlExpressionBuilderTest.cs
+++ b/mcs/class/System.Web/Test/System.Web.Compilation/RouteUrlExpressionBuilderTest.cs
@@ -44,7 +44,6 @@ using MonoTests.Common;
 
 namespace MonoTests.System.Web.Compilation
 {
-#if NET_4_0
 	[TestFixture]
 	public class RouteUrlExpressionBuilderTest
 	{
@@ -272,7 +271,7 @@ namespace MonoTests.System.Web.Compilation
 		private HttpContext ctx;
 
 		// don't call base class (so _context is never set to a non-null value)
-		protected override HttpContext Context
+		protected internal override HttpContext Context
 		{
 			get
 			{
@@ -286,6 +285,5 @@ namespace MonoTests.System.Web.Compilation
 			}
 		}
 	}
-#endif
 }
-#endif
\ No newline at end of file
+#endif
diff --git a/mcs/class/System.Web/Test/System.Web.Security/ChangeLog b/mcs/class/System.Web/Test/System.Web.Security/ChangeLog
index f1dff97..f3655f3 100644
--- a/mcs/class/System.Web/Test/System.Web.Security/ChangeLog
+++ b/mcs/class/System.Web/Test/System.Web.Security/ChangeLog
@@ -1,7 +1,7 @@
-2010-10-04  Sebastien Pouliot  <sebastien at ximian.com>
+2010-10-27  Marek Habersack  <grendel at twistedcode.net>
 
-	* Test/System.Web.Security/FormsAuthenticationTest.cs: Small
-	change to make sure the hash name is not case sensitive
+	[asp.net] Fix for bug #643847. Membership.CreateUser overloads
+	must check username and password for correctness.
 
 2010-10-08  Sebastien Pouliot  <sebastien at ximian.com>
 
@@ -9,6 +9,11 @@
 	case to ensure HashPasswordForStoringInConfigFile is not case
 	sensitive.
 
+2010-10-04  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* Test/System.Web.Security/FormsAuthenticationTest.cs: Small
+	change to make sure the hash name is not case sensitive
+
 2010-02-11  Marek Habersack  <mhabersack at novell.com>
 
 	* RolesTest.cs: added a test for IsUserInRole. Patch from Tiaan
diff --git a/mcs/class/System.Web/Test/System.Web.Security/MembershipTest.cs b/mcs/class/System.Web/Test/System.Web.Security/MembershipTest.cs
index 15b509c..a42ca98 100644
--- a/mcs/class/System.Web/Test/System.Web.Security/MembershipTest.cs
+++ b/mcs/class/System.Web/Test/System.Web.Security/MembershipTest.cs
@@ -29,9 +29,11 @@
 #if NET_2_0
 
 using System;
+using System.Text;
 using System.Web.Security;
 
 using NUnit.Framework;
+using MonoTests.Common;
 
 namespace MonoTests.System.Web.Security {
 
@@ -63,6 +65,28 @@ namespace MonoTests.System.Web.Security {
 					count++;
 			Assert.IsTrue (count >= 1, "A2");
 		}
+
+		[Test (Description = "Bug #647631")]
+		public void CreatePassword_InvalidInput ()
+		{
+			MembershipUser user;
+
+			AssertExtensions.Throws<MembershipCreateUserException> (() => {
+				user = Membership.CreateUser (null, "password");
+			}, "#A1");
+
+			AssertExtensions.Throws<MembershipCreateUserException> (() => {
+				user = Membership.CreateUser (String.Empty, "password");
+			}, "#A2");
+
+			AssertExtensions.Throws<MembershipCreateUserException> (() => {
+				user = Membership.CreateUser ("user", null);
+			}, "#B1");
+
+			AssertExtensions.Throws<MembershipCreateUserException> (() => {
+				user = Membership.CreateUser ("user", String.Empty);
+			}, "#B2");
+		}
 	}
 }
 
diff --git a/mcs/class/System.Web/Test/System.Web.UI.Adapters/ChangeLog b/mcs/class/System.Web/Test/System.Web.UI.Adapters/ChangeLog
index acf3662..dbf118c 100644
--- a/mcs/class/System.Web/Test/System.Web.UI.Adapters/ChangeLog
+++ b/mcs/class/System.Web/Test/System.Web.UI.Adapters/ChangeLog
@@ -1,3 +1,7 @@
+2011-01-10  Marek Safar  <marek.safar at gmail.com>
+
+	Fixed more missing protected internal modifiers
+
 2009-08-20  Marek Habersack  <mhabersack at novell.com>
 
 	* ControlAdapterTest.cs: added test for bug #517172
diff --git a/mcs/class/System.Web/Test/System.Web.UI.Adapters/ChangeLog b/mcs/class/System.Web/Test/System.Web.UI.Adapters/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Web/Test/System.Web.UI.Adapters/ChangeLog
copy to mcs/class/System.Web/Test/System.Web.UI.Adapters/ChangeLog.old
diff --git a/mcs/class/System.Web/Test/System.Web.UI.Adapters/ControlAdapterTest.cs b/mcs/class/System.Web/Test/System.Web.UI.Adapters/ControlAdapterTest.cs
index eec9349..5bc0ee8 100644
--- a/mcs/class/System.Web/Test/System.Web.UI.Adapters/ControlAdapterTest.cs
+++ b/mcs/class/System.Web/Test/System.Web.UI.Adapters/ControlAdapterTest.cs
@@ -227,43 +227,43 @@ namespace MonoTests.System.Web.UI.Adapters
 		class MyControl : Control
 		{
 			internal bool create_child_controls_called;
-			protected override void CreateChildControls ()
+			protected internal override void CreateChildControls ()
 			{
 				create_child_controls_called = true;
 			}
 			
 			internal bool render_called = false;
-			protected override void Render (HtmlTextWriter w)
+			protected internal override void Render (HtmlTextWriter w)
 			{
 				render_called = true;
 			}
 			
 			internal bool render_children_called = false;
-			protected override void RenderChildren (HtmlTextWriter w)
+			protected internal override void RenderChildren (HtmlTextWriter w)
 			{
 				render_children_called = true;
 			}
 
 			internal EventArgs on_init_arg = null;
-			protected override void OnInit (EventArgs e)
+			protected internal override void OnInit (EventArgs e)
 			{
 				on_init_arg = e;
 			}
 
 			internal EventArgs on_load_arg = null;
-			protected override void OnLoad (EventArgs e)
+			protected internal override void OnLoad (EventArgs e)
 			{
 				on_load_arg = e;
 			}
 			
 			internal EventArgs on_pre_render_arg = null;
-			protected override void OnPreRender (EventArgs e)
+			protected internal override void OnPreRender (EventArgs e)
 			{
 				on_pre_render_arg = e;
 			}
 
 			internal EventArgs on_unload_arg = null;
-			protected override void OnUnload (EventArgs e)
+			protected internal override void OnUnload (EventArgs e)
 			{
 				on_unload_arg = e;
 			}
diff --git a/mcs/class/System.Web/Test/System.Web.UI.Adapters/PageAdapterTest.cs b/mcs/class/System.Web/Test/System.Web.UI.Adapters/PageAdapterTest.cs
index df20dd9..db2ea35 100644
--- a/mcs/class/System.Web/Test/System.Web.UI.Adapters/PageAdapterTest.cs
+++ b/mcs/class/System.Web/Test/System.Web.UI.Adapters/PageAdapterTest.cs
@@ -281,7 +281,7 @@ namespace MonoTests.System.Web.UI.Adapters
 		{
 			NameValueCollection post_back_mode = new NameValueCollection ();
 			
-			override protected NameValueCollection DeterminePostBackMode ()
+			override protected internal NameValueCollection DeterminePostBackMode ()
 			{
 				return post_back_mode;
 			}
diff --git a/mcs/class/System.Web/Test/System.Web.UI.HtmlControls/ChangeLog b/mcs/class/System.Web/Test/System.Web.UI.HtmlControls/ChangeLog
index 6060283..220aadd 100644
--- a/mcs/class/System.Web/Test/System.Web.UI.HtmlControls/ChangeLog
+++ b/mcs/class/System.Web/Test/System.Web.UI.HtmlControls/ChangeLog
@@ -1,3 +1,12 @@
+2011-01-11  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Fix for bug #662918. Do not create the HtmlTitle child
+	control for HtmlHead if <title> wasn't used in the page code.
+
+2011-01-10  Marek Safar  <marek.safar at gmail.com>
+
+	Fixed more missing protected internal modifiers
+
 2010-06-21  Marek Habersack  <mhabersack at novell.com>
 
 	* HtmlImageTest.cs: fixed an invalid test.
diff --git a/mcs/class/System.Web/Test/System.Web.UI.HtmlControls/ChangeLog b/mcs/class/System.Web/Test/System.Web.UI.HtmlControls/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Web/Test/System.Web.UI.HtmlControls/ChangeLog
copy to mcs/class/System.Web/Test/System.Web.UI.HtmlControls/ChangeLog.old
diff --git a/mcs/class/System.Web/Test/System.Web.UI.HtmlControls/HtmlFormTest.cs b/mcs/class/System.Web/Test/System.Web.UI.HtmlControls/HtmlFormTest.cs
index 8212fe0..d578aae 100644
--- a/mcs/class/System.Web/Test/System.Web.UI.HtmlControls/HtmlFormTest.cs
+++ b/mcs/class/System.Web/Test/System.Web.UI.HtmlControls/HtmlFormTest.cs
@@ -43,7 +43,7 @@ namespace MonoTests.System.Web.UI.HtmlControls {
 		private HttpContext ctx;
 
 		// don't call base class (so _context is never set to a non-null value)
-		protected override HttpContext Context {
+		protected internal override HttpContext Context {
 			get {
 				if (ctx == null) {
 					ctx = new HttpContext (
diff --git a/mcs/class/System.Web/Test/System.Web.UI.HtmlControls/HtmlHeadTest.cs b/mcs/class/System.Web/Test/System.Web.UI.HtmlControls/HtmlHeadTest.cs
new file mode 100644
index 0000000..577b394
--- /dev/null
+++ b/mcs/class/System.Web/Test/System.Web.UI.HtmlControls/HtmlHeadTest.cs
@@ -0,0 +1,56 @@
+//
+// Author:
+//      Marek Habersack <grendel at twistedcode.net>
+//
+// Copyright (C) 2011 Novell, Inc (http://novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Web;
+using System.Web.Compilation;
+using System.Threading;
+
+using NUnit.Framework;
+using MonoTests.SystemWeb.Framework;
+using MonoTests.stand_alone.WebHarness;
+
+namespace MonoTests.System.Web.UI.HtmlControls
+{
+        [TestFixture]
+	public class HtmlHeadTest
+	{
+		[TestFixtureSetUp]
+		public void SetUp ()
+		{
+			WebTest.CopyResource (this.GetType (), "HtmlTitleCodeRender_Bug662918.aspx", "HtmlTitleCodeRender_Bug662918.aspx");
+		}
+		
+		[Test (Description="Bug #662918")]
+		public void HtmlTitleCodeRender_Bug662918 ()
+		{
+			string origHtml = "<head><title>\r\n\tTitle text\r\n</title></head>";
+			string pageHtml = new WebTest ("HtmlTitleCodeRender_Bug662918.aspx").Run ();
+			string renderedHtml = HtmlDiff.GetControlFromPageHtml (pageHtml);
+
+			HtmlDiff.AssertAreEqual (origHtml, renderedHtml, "#A1");
+		}
+	}
+}
diff --git a/mcs/class/System.Web/Test/System.Web.UI.WebControls.Adapters/ChangeLog b/mcs/class/System.Web/Test/System.Web.UI.WebControls.Adapters/ChangeLog
index ee68fa8..e83251b 100644
--- a/mcs/class/System.Web/Test/System.Web.UI.WebControls.Adapters/ChangeLog
+++ b/mcs/class/System.Web/Test/System.Web.UI.WebControls.Adapters/ChangeLog
@@ -1,3 +1,11 @@
+2011-01-10  Marek Safar  <marek.safar at gmail.com>
+
+	Fixed more missing protected internal modifiers
+
+2010-08-19  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Menu 4.0 List mode rendering
+
 2009-07-07  Raja R Harinath  <harinath at hurrynot.org>
 
 	* DataBoundControlAdapterTest.cs: Derive from
diff --git a/mcs/class/System.Web/Test/System.Web.UI.WebControls.Adapters/ChangeLog b/mcs/class/System.Web/Test/System.Web.UI.WebControls.Adapters/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Web/Test/System.Web.UI.WebControls.Adapters/ChangeLog
copy to mcs/class/System.Web/Test/System.Web.UI.WebControls.Adapters/ChangeLog.old
diff --git a/mcs/class/System.Web/Test/System.Web.UI.WebControls.Adapters/DataBoundControlAdapterTest.cs b/mcs/class/System.Web/Test/System.Web.UI.WebControls.Adapters/DataBoundControlAdapterTest.cs
index 4b46bf1..7cf05a5 100644
--- a/mcs/class/System.Web/Test/System.Web.UI.WebControls.Adapters/DataBoundControlAdapterTest.cs
+++ b/mcs/class/System.Web/Test/System.Web.UI.WebControls.Adapters/DataBoundControlAdapterTest.cs
@@ -76,7 +76,7 @@ namespace MonoTests.System.Web.UI.WebControls.Adapters
 		{
 			internal IEnumerable data;
 			
-			protected override void PerformDataBinding (IEnumerable data)
+			protected internal override void PerformDataBinding (IEnumerable data)
 			{
 				this.data = data;
 			}
diff --git a/mcs/class/System.Web/Test/System.Web.UI.WebControls.Adapters/HideDisabledControlAdapterTest.cs b/mcs/class/System.Web/Test/System.Web.UI.WebControls.Adapters/HideDisabledControlAdapterTest.cs
index 8272b76..0a1a0db 100644
--- a/mcs/class/System.Web/Test/System.Web.UI.WebControls.Adapters/HideDisabledControlAdapterTest.cs
+++ b/mcs/class/System.Web/Test/System.Web.UI.WebControls.Adapters/HideDisabledControlAdapterTest.cs
@@ -85,7 +85,7 @@ namespace MonoTests.System.Web.UI.WebControls.Adapters
 				w.WriteLine("RenderBeginTag");
 			}
 
-			protected override void RenderContents (HtmlTextWriter w)
+			protected internal override void RenderContents (HtmlTextWriter w)
 			{
 				w.WriteLine("RenderContents");
 			}
diff --git a/mcs/class/System.Web/Test/System.Web.UI.WebControls.Adapters/HierarchicalDataBoundControlAdapterTest.cs b/mcs/class/System.Web/Test/System.Web.UI.WebControls.Adapters/HierarchicalDataBoundControlAdapterTest.cs
index ecdd1a9..df35c5f 100644
--- a/mcs/class/System.Web/Test/System.Web.UI.WebControls.Adapters/HierarchicalDataBoundControlAdapterTest.cs
+++ b/mcs/class/System.Web/Test/System.Web.UI.WebControls.Adapters/HierarchicalDataBoundControlAdapterTest.cs
@@ -75,7 +75,7 @@ namespace MonoTests.System.Web.UI.WebControls.Adapters
 		{
 			internal bool perform_data_binding_called;
 			
-			protected override void PerformDataBinding ()
+			protected internal override void PerformDataBinding ()
 			{
 				perform_data_binding_called = true;
 			}
diff --git a/mcs/class/System.Web/Test/System.Web.UI.WebControls.Adapters/MenuAdapterTest.cs b/mcs/class/System.Web/Test/System.Web.UI.WebControls.Adapters/MenuAdapterTest.cs
index 6df6df7..48c7a17 100644
--- a/mcs/class/System.Web/Test/System.Web.UI.WebControls.Adapters/MenuAdapterTest.cs
+++ b/mcs/class/System.Web/Test/System.Web.UI.WebControls.Adapters/MenuAdapterTest.cs
@@ -58,6 +58,9 @@ namespace MonoTests.System.Web.UI.WebControls.Adapters
 		{
 			p = new Page ();
 			c = new MyMenu ();
+#if NET_4_0
+			c.RenderingMode = MenuRenderingMode.Table;
+#endif
 			a = new MyMenuAdapter (c);
 			p.Controls.Add(c);
 			sw = new StringWriter ();
@@ -135,21 +138,21 @@ namespace MonoTests.System.Web.UI.WebControls.Adapters
 		{
 		
 			internal EventArgs on_init_arg;
-			protected override void OnInit (EventArgs e)
+			protected internal override void OnInit (EventArgs e)
 			{
 				on_init_arg = e;
 				base.OnInit (e);
 			}
 
 			internal EventArgs on_pre_render_arg;
-			protected override void OnPreRender (EventArgs e)
+			protected internal override void OnPreRender (EventArgs e)
 			{
 				on_pre_render_arg = e;
 				base.OnPreRender (e);
 			}
 
 			internal string raise_post_back_event_arg;
-			protected override void RaisePostBackEvent (string eventArgument)
+			protected internal override void RaisePostBackEvent (string eventArgument)
 			{
 				raise_post_back_event_arg = eventArgument;
 			}
@@ -159,7 +162,7 @@ namespace MonoTests.System.Web.UI.WebControls.Adapters
 				w.WriteLine("RenderBeginTag");
 			}
 
-			protected override void RenderContents (HtmlTextWriter w)
+			protected internal override void RenderContents (HtmlTextWriter w)
 			{
 				w.WriteLine("RenderContents");
 			}
diff --git a/mcs/class/System.Web/Test/System.Web.UI.WebControls.Adapters/WebControlAdapterTest.cs b/mcs/class/System.Web/Test/System.Web.UI.WebControls.Adapters/WebControlAdapterTest.cs
index ba440f8..2351b53 100644
--- a/mcs/class/System.Web/Test/System.Web.UI.WebControls.Adapters/WebControlAdapterTest.cs
+++ b/mcs/class/System.Web/Test/System.Web.UI.WebControls.Adapters/WebControlAdapterTest.cs
@@ -116,7 +116,7 @@ namespace MonoTests.System.Web.UI.WebControls.Adapters
 				w.WriteLine("RenderBeginTag");
 			}
 
-			protected override void RenderContents (HtmlTextWriter w)
+			protected internal override void RenderContents (HtmlTextWriter w)
 			{
 				w.WriteLine("RenderContents");
 			}
diff --git a/mcs/class/System.Web/Test/System.Web.UI.WebControls/BaseDataListTest.cs b/mcs/class/System.Web/Test/System.Web.UI.WebControls/BaseDataListTest.cs
index 78861d0..732c7e9 100644
--- a/mcs/class/System.Web/Test/System.Web.UI.WebControls/BaseDataListTest.cs
+++ b/mcs/class/System.Web/Test/System.Web.UI.WebControls/BaseDataListTest.cs
@@ -170,7 +170,7 @@ namespace MonoTests.System.Web.UI.WebControls {
 			set { initCalled = value; }
 		}
 
-		protected override void OnInit (EventArgs e)
+		protected internal override void OnInit (EventArgs e)
 		{
 			initCalled = true;
 			base.OnInit (e);
@@ -186,7 +186,7 @@ namespace MonoTests.System.Web.UI.WebControls {
 			set { loadCalled = value; }
 		}
 
-		protected override void OnLoad (EventArgs e)
+		protected internal override void OnLoad (EventArgs e)
 		{
 			loadCalled = true;
 			base.OnLoad (e);
@@ -202,7 +202,7 @@ namespace MonoTests.System.Web.UI.WebControls {
 			set { preRenderCalled = value; }
 		}
 
-		protected override void OnPreRender (EventArgs e)
+		protected internal override void OnPreRender (EventArgs e)
 		{
 			preRenderCalled = true;
 			base.OnPreRender (e);
@@ -259,7 +259,7 @@ namespace MonoTests.System.Web.UI.WebControls {
 		{
 		}
 
-		protected override IEnumerable ExecuteSelect (DataSourceSelectArguments arguments)
+		protected internal override IEnumerable ExecuteSelect (DataSourceSelectArguments arguments)
 		{
 			ArrayList al = new ArrayList (3);
 			for (int i=0; i < 3; i++)
diff --git a/mcs/class/System.Web/Test/System.Web.UI.WebControls/BoundFieldTest.cs b/mcs/class/System.Web/Test/System.Web.UI.WebControls/BoundFieldTest.cs
index 2035112..44e784a 100644
--- a/mcs/class/System.Web/Test/System.Web.UI.WebControls/BoundFieldTest.cs
+++ b/mcs/class/System.Web/Test/System.Web.UI.WebControls/BoundFieldTest.cs
@@ -121,6 +121,36 @@ namespace MonoTests.System.Web.UI.WebControls
 	[TestFixture]
 	public class BoundFieldTest
 	{
+		[TestFixtureSetUp]
+		public void SetUp ()
+		{
+			WebTest.CopyResource (GetType (), "BoundField_Bug646505.aspx", "BoundField_Bug646505.aspx");
+			WebTest.CopyResource (GetType (), "BoundField_Bug646505.aspx.cs", "BoundField_Bug646505.aspx.cs");
+		}
+
+		[Test (Description="Bug 646505")]
+		public void BoundField_Bug646505 ()
+		{
+#if NET_4_0
+			string originalHtml = "<div>\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" id=\"gridView\" style=\"border-collapse:collapse;\">\n\t\t<tr>\n\t\t\t<th scope=\"col\"> </th><th scope=\"col\"> </th>\n\t\t</tr><tr>\n\t\t\t<td><a href=\"javascript:__doPostBack('gridView$ctl02$ctl00','')\">Update</a> <a href=\"javascript:__doPostBack('gridView','Cancel$0')\">Cancel</a></td><td><input name=\"gridView$ctl02$ctl02\" type=\"text\" value=\"False\" /></td>\n\t\t</tr><tr>\n\t\t\t<td><a href=\"javascript:__doPostBack('gridView','Edit$1')\">Edit</a></td><td>False</td>\n\t\t</tr>\n\t</table>\n</div>\n";
+#else
+			string originalHtml = "<div>\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" id=\"gridView\" style=\"border-collapse:collapse;\">\n\t\t<tr>\n\t\t\t<th scope=\"col\"> </th><th scope=\"col\"> </th>\n\t\t</tr><tr>\n\t\t\t<td><a href=\"javascript:__doPostBack('gridView$ctl02$ctl00','')\">Update</a> <a href=\"javascript:__doPostBack('gridView','Cancel$0')\">Cancel</a></td><td><input name=\"gridView$ctl02$ctl02\" type=\"text\" value=\"False\" /></td>\n\t\t</tr><tr>\n\t\t\t<td><a href=\"javascript:__doPostBack('gridView','Edit$1')\">Edit</a></td><td>False</td>\n\t\t</tr>\n\t</table>\n</div>\n";
+#endif
+			WebTest t = new WebTest ("BoundField_Bug646505.aspx");
+			t.Run ();
+
+			FormRequest fr = new FormRequest (t.Response, "form1");
+			fr.Controls.Add ("__EVENTTARGET");
+			fr.Controls.Add ("__EVENTARGUMENT");
+			fr.Controls ["__EVENTTARGET"].Value = "gridView";
+			fr.Controls ["__EVENTARGUMENT"].Value = "Edit$0";
+			t.Request = fr;
+			string pageHtml = t.Run ();
+			string renderedHtml = HtmlDiff.GetControlFromPageHtml (pageHtml);
+
+			HtmlDiff.AssertAreEqual (originalHtml, renderedHtml, "#A1");
+		}
+		
 		[Test]
 		public void BoundField_DefaultProperty () {
 			PokerBoundField bf = new PokerBoundField ();
diff --git a/mcs/class/System.Web/Test/System.Web.UI.WebControls/ChangeLog b/mcs/class/System.Web/Test/System.Web.UI.WebControls/ChangeLog
index f712661..0e40a8e 100644
--- a/mcs/class/System.Web/Test/System.Web.UI.WebControls/ChangeLog
+++ b/mcs/class/System.Web/Test/System.Web.UI.WebControls/ChangeLog
@@ -1,3 +1,28 @@
+2011-01-10  Marek Safar  <marek.safar at gmail.com>
+
+	Fixed more protected internal modifiers
+
+2011-01-10  Marek Safar  <marek.safar at gmail.com>
+
+	Fixed more missing protected internal modifiers
+
+2010-10-29  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Fix for bug #646505. BoundField must not assume the
+	sender of the OnDataBindField is DataControlFieldCell.
+
+2010-10-26  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Fix for bug #649198. Implement
+	MasterPage.InstantiateInContentPlaceHolder
+
+	Code based on patch from Rikard Johansson <rajoo at mail.com>,
+	thanks!
+
+2010-08-19  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Menu 4.0 List mode rendering
+
 2010-08-13  Marek Habersack  <grendel at twistedcode.net>
 
 	[asp.net] Fix for bug #626829. Nodes need to be re-populated on
diff --git a/mcs/class/System.Web/Test/System.Web.UI.WebControls/CheckBoxTest.cs b/mcs/class/System.Web/Test/System.Web.UI.WebControls/CheckBoxTest.cs
index 93bb0fa..06af1d4 100644
--- a/mcs/class/System.Web/Test/System.Web.UI.WebControls/CheckBoxTest.cs
+++ b/mcs/class/System.Web/Test/System.Web.UI.WebControls/CheckBoxTest.cs
@@ -131,7 +131,7 @@ namespace MonoTests.System.Web.UI.WebControls {
 			return base.LoadPostData (postDataKey, postCollection);
 		}
 
-		protected override void OnLoad (EventArgs e)
+		protected internal override void OnLoad (EventArgs e)
 		{
 			if (this.Page.IsPostBack) {
 				if (WebTest.CurrentTest.UserData == null) {
diff --git a/mcs/class/System.Web/Test/System.Web.UI.WebControls/CompositeControlTest.cs b/mcs/class/System.Web/Test/System.Web.UI.WebControls/CompositeControlTest.cs
index 001f76c..7453019 100644
--- a/mcs/class/System.Web/Test/System.Web.UI.WebControls/CompositeControlTest.cs
+++ b/mcs/class/System.Web/Test/System.Web.UI.WebControls/CompositeControlTest.cs
@@ -40,7 +40,7 @@ namespace MonoTests.System.Web.UI.WebControls {
   [TestFixture]
   public class CompositeControlTest {
   	class Poker : CompositeControl {
-		protected override void CreateChildControls ()
+		protected internal override void CreateChildControls ()
 		{
 			Controls.Clear ();
 
diff --git a/mcs/class/System.Web/Test/System.Web.UI.WebControls/CompositeDataBoundControlTest.cs b/mcs/class/System.Web/Test/System.Web.UI.WebControls/CompositeDataBoundControlTest.cs
index 564e672..5c5e505 100644
--- a/mcs/class/System.Web/Test/System.Web.UI.WebControls/CompositeDataBoundControlTest.cs
+++ b/mcs/class/System.Web/Test/System.Web.UI.WebControls/CompositeDataBoundControlTest.cs
@@ -83,7 +83,7 @@ namespace MonoTests.System.Web.UI.WebControls
 				ensureCreateChildControls = true;
 			}
 
-			protected override void CreateChildControls () {
+			protected internal override void CreateChildControls () {
 				base.CreateChildControls ();
 				createChildControls1 = true;
 			}
diff --git a/mcs/class/System.Web/Test/System.Web.UI.WebControls/CreateUserWizardTest.cs b/mcs/class/System.Web/Test/System.Web.UI.WebControls/CreateUserWizardTest.cs
index 8ae0582..728dbe5 100644
--- a/mcs/class/System.Web/Test/System.Web.UI.WebControls/CreateUserWizardTest.cs
+++ b/mcs/class/System.Web/Test/System.Web.UI.WebControls/CreateUserWizardTest.cs
@@ -124,7 +124,7 @@ namespace MonoTests.System.Web.UI.WebControls
 
 		public int ActiveStepIndex_Before_Init;
 		public int ActiveStepIndex_After_Init;
-		protected override void OnInit (EventArgs e) {
+		protected internal override void OnInit (EventArgs e) {
 			ActiveStepIndex_Before_Init = ActiveStepIndex;
 			base.OnInit (e);
 			ActiveStepIndex_After_Init = ActiveStepIndex;
diff --git a/mcs/class/System.Web/Test/System.Web.UI.WebControls/DataBoundControlTest.cs b/mcs/class/System.Web/Test/System.Web.UI.WebControls/DataBoundControlTest.cs
index 44b3f03..b401838 100644
--- a/mcs/class/System.Web/Test/System.Web.UI.WebControls/DataBoundControlTest.cs
+++ b/mcs/class/System.Web/Test/System.Web.UI.WebControls/DataBoundControlTest.cs
@@ -56,7 +56,7 @@ namespace MonoTests.System.Web.UI.WebControls
 				Assert.IsFalse (RequiresDataBinding);
 			}
 
-			protected override void PerformDataBinding (IEnumerable data)
+			protected internal override void PerformDataBinding (IEnumerable data)
 			{
 				Assert.IsFalse (RequiresDataBinding);
 				base.PerformDataBinding (data);
@@ -119,7 +119,7 @@ namespace MonoTests.System.Web.UI.WebControls
 				dataBindTrace.Append ("[End PerformSelect]");
 			}
 			
-			protected override void PerformDataBinding (IEnumerable data) {
+			protected internal override void PerformDataBinding (IEnumerable data) {
 				dataBindTrace.Append ("[Start PerformDataBinding]");
 				base.PerformDataBinding (data);
 				dataBindTrace.Append ("[End PerformDataBinding]");
@@ -360,7 +360,7 @@ namespace MonoTests.System.Web.UI.WebControls
 		class MyDataBoundControlAdapter : DataBoundControlAdapter
 		{
 			internal bool perform_data_binding_called;
-			protected override void PerformDataBinding (IEnumerable data)
+			protected internal override void PerformDataBinding (IEnumerable data)
 			{
 				perform_data_binding_called = true;
 			}
diff --git a/mcs/class/System.Web/Test/System.Web.UI.WebControls/DataSourceViewTest.cs b/mcs/class/System.Web/Test/System.Web.UI.WebControls/DataSourceViewTest.cs
index ee4161a..3164a70 100644
--- a/mcs/class/System.Web/Test/System.Web.UI.WebControls/DataSourceViewTest.cs
+++ b/mcs/class/System.Web/Test/System.Web.UI.WebControls/DataSourceViewTest.cs
@@ -74,7 +74,7 @@ namespace MonoTests.System.Web.UI.WebControls
 			base.OnDataSourceViewChanged (e);
 		}
 
-		protected override IEnumerable ExecuteSelect (DataSourceSelectArguments arguments)
+		protected internal override IEnumerable ExecuteSelect (DataSourceSelectArguments arguments)
 		{
 			throw new Exception ("The method or operation is not implemented.");
 		}
diff --git a/mcs/class/System.Web/Test/System.Web.UI.WebControls/DetailsViewTest.cs b/mcs/class/System.Web/Test/System.Web.UI.WebControls/DetailsViewTest.cs
index 9725b52..5b3a370 100644
--- a/mcs/class/System.Web/Test/System.Web.UI.WebControls/DetailsViewTest.cs
+++ b/mcs/class/System.Web/Test/System.Web.UI.WebControls/DetailsViewTest.cs
@@ -314,7 +314,7 @@ namespace MonoTests.System.Web.UI.WebControls
 				ensureCreateChildControls = true;
 			}
 
-			protected override void CreateChildControls ()
+			protected internal override void CreateChildControls ()
 			{
 				base.CreateChildControls ();
 				createChildControls1 = true;
@@ -362,7 +362,7 @@ namespace MonoTests.System.Web.UI.WebControls
 				PerformDataBinding (data);
 			}
 
-			protected override void PrepareControlHierarchy ()
+			protected internal override void PrepareControlHierarchy ()
 			{
 				base.PrepareControlHierarchy ();
 				controlHierarchy = true;
diff --git a/mcs/class/System.Web/Test/System.Web.UI.WebControls/FormViewTest.cs b/mcs/class/System.Web/Test/System.Web.UI.WebControls/FormViewTest.cs
index fe5faa8..d1a2618 100644
--- a/mcs/class/System.Web/Test/System.Web.UI.WebControls/FormViewTest.cs
+++ b/mcs/class/System.Web/Test/System.Web.UI.WebControls/FormViewTest.cs
@@ -274,7 +274,7 @@ namespace MonoTests.System.Web.UI.WebControls
 				PerformDataBinding (data);
 			}
 
-			protected override void PrepareControlHierarchy ()
+			protected internal override void PrepareControlHierarchy ()
 			{
 
 				base.PrepareControlHierarchy ();
diff --git a/mcs/class/System.Web/Test/System.Web.UI.WebControls/GridViewTest.cs b/mcs/class/System.Web/Test/System.Web.UI.WebControls/GridViewTest.cs
index 2767637..8836ff7 100644
--- a/mcs/class/System.Web/Test/System.Web.UI.WebControls/GridViewTest.cs
+++ b/mcs/class/System.Web/Test/System.Web.UI.WebControls/GridViewTest.cs
@@ -283,7 +283,7 @@ namespace MonoTests.System.Web.UI.WebControls
 			base.PerformDataBinding (data);
 		}
 
-		protected override void PrepareControlHierarchy ()
+		protected internal override void PrepareControlHierarchy ()
 		{
 			base.PrepareControlHierarchy ();
 			controlHierarchy = true;
diff --git a/mcs/class/System.Web/Test/System.Web.UI.WebControls/HierarchicalDataBoundControlTest.cs b/mcs/class/System.Web/Test/System.Web.UI.WebControls/HierarchicalDataBoundControlTest.cs
index f47f59d..7c9a6c3 100644
--- a/mcs/class/System.Web/Test/System.Web.UI.WebControls/HierarchicalDataBoundControlTest.cs
+++ b/mcs/class/System.Web/Test/System.Web.UI.WebControls/HierarchicalDataBoundControlTest.cs
@@ -75,7 +75,7 @@ namespace MonoTests.System.Web.UI.WebControls
 				dataBindTrace.Append ("[End PerformSelect]");
 			}
 
-			protected override void PerformDataBinding () {
+			protected internal override void PerformDataBinding () {
 				dataBindTrace.Append ("[Start PerformDataBinding]");
 				base.PerformDataBinding ();
 				dataBindTrace.Append ("[End PerformDataBinding]");
@@ -130,7 +130,7 @@ namespace MonoTests.System.Web.UI.WebControls
 		class MyHierarchicalDataBoundControlAdapter : HierarchicalDataBoundControlAdapter
 		{
 			internal bool perform_data_binding_called;
-			protected override void PerformDataBinding ()
+			protected internal override void PerformDataBinding ()
 			{
 				perform_data_binding_called = true;
 			}
diff --git a/mcs/class/System.Web/Test/System.Web.UI.WebControls/HotSpotTest.cs b/mcs/class/System.Web/Test/System.Web.UI.WebControls/HotSpotTest.cs
index ef52269..c3fee96 100644
--- a/mcs/class/System.Web/Test/System.Web.UI.WebControls/HotSpotTest.cs
+++ b/mcs/class/System.Web/Test/System.Web.UI.WebControls/HotSpotTest.cs
@@ -70,7 +70,7 @@ namespace MonoTests.System.Web.UI.WebControls
         }
 
         // Implementation for abstract members
-        protected override string MarkupName
+        protected internal override string MarkupName
         {
             get { return (""); }
         }
diff --git a/mcs/class/System.Web/Test/System.Web.UI.WebControls/ListControlTest.cs b/mcs/class/System.Web/Test/System.Web.UI.WebControls/ListControlTest.cs
index d8ab825..e534f1a 100644
--- a/mcs/class/System.Web/Test/System.Web.UI.WebControls/ListControlTest.cs
+++ b/mcs/class/System.Web/Test/System.Web.UI.WebControls/ListControlTest.cs
@@ -165,7 +165,7 @@ namespace MonoTests.System.Web.UI.WebControls
 				base.AddAttributesToRender (writer);
 			}
 
-			protected override void PerformDataBinding (IEnumerable dataSource)
+			protected internal override void PerformDataBinding (IEnumerable dataSource)
 			{
 				base.PerformDataBinding (Databound());
 			}
diff --git a/mcs/class/System.Web/Test/System.Web.UI.WebControls/LoginNameTest.cs b/mcs/class/System.Web/Test/System.Web.UI.WebControls/LoginNameTest.cs
index 0e7f615..e762ece 100644
--- a/mcs/class/System.Web/Test/System.Web.UI.WebControls/LoginNameTest.cs
+++ b/mcs/class/System.Web/Test/System.Web.UI.WebControls/LoginNameTest.cs
@@ -107,7 +107,7 @@ namespace MonoTests.System.Web.UI.WebControls {
 			Context.User = principal;
 		}
 
-		protected override HttpContext Context {
+		protected internal override HttpContext Context {
 			get {
 				if (ctx == null) {
 					ctx = new HttpContext (
diff --git a/mcs/class/System.Web/Test/System.Web.UI.WebControls/LoginStatusTest.cs b/mcs/class/System.Web/Test/System.Web.UI.WebControls/LoginStatusTest.cs
index 8708f4a..65dc7b7 100644
--- a/mcs/class/System.Web/Test/System.Web.UI.WebControls/LoginStatusTest.cs
+++ b/mcs/class/System.Web/Test/System.Web.UI.WebControls/LoginStatusTest.cs
@@ -125,7 +125,7 @@ namespace MonoTests.System.Web.UI.WebControls {
 			set { onPreRender = value; }
 		}
 
-		protected override void OnPreRender (EventArgs e)
+		protected internal override void OnPreRender (EventArgs e)
 		{
 			onPreRender = true;
 			base.OnPreRender (e);
diff --git a/mcs/class/System.Web/Test/System.Web.UI.WebControls/MasterPageTest.cs b/mcs/class/System.Web/Test/System.Web.UI.WebControls/MasterPageTest.cs
index cda7201..dfba12c 100644
--- a/mcs/class/System.Web/Test/System.Web.UI.WebControls/MasterPageTest.cs
+++ b/mcs/class/System.Web/Test/System.Web.UI.WebControls/MasterPageTest.cs
@@ -43,7 +43,7 @@ using System.Collections;
 using MonoTests.SystemWeb.Framework;
 using MonoTests.stand_alone.WebHarness;
 using System.Threading;
-
+using MonoTests.Common;
 
 namespace MonoTests.System.Web.UI.WebControls
 {
@@ -74,6 +74,27 @@ namespace MonoTests.System.Web.UI.WebControls
 	[TestFixture]
 	public class MasterPageTest
 	{
+#if NET_4_0
+		class MyTemplate : ITemplate
+		{
+			public const string MyText = "|MyTemplate.InstantiateIn called|";
+
+			public void InstantiateIn (Control container)
+			{
+				container.Controls.Add (new LiteralControl (MyText));
+			}
+		}
+
+		class MyContentTemplate : Content, ITemplate
+		{
+			public const string MyText = "|MyContentTemplate.InstantiateIn called|";
+
+			public void InstantiateIn (Control container)
+			{
+				container.Controls.Add (new LiteralControl (MyText));
+			}
+		}
+#endif
 		[TestFixtureSetUp]
 		public void CopyTestResources ()
 		{
@@ -195,7 +216,87 @@ namespace MonoTests.System.Web.UI.WebControls
 			if (PageRenderHtml.IndexOf ("FromMasterMethod") < 0)
 				Assert.Fail ("MasterType TypeName test failed");
 		}
+#if NET_4_0
+		[Test]
+		public void InstantiateInContentPlaceHolder ()
+		{
+			var mp = new MasterPage ();
+			ITemplate template = new MyTemplate ();
 
+			AssertExtensions.Throws<NullReferenceException> (() => {
+				mp.InstantiateInContentPlaceHolder (null, template);
+			}, "#A1-1");
+
+			Control container = new Control ();
+			AssertExtensions.Throws<NullReferenceException> (() => {
+				mp.InstantiateInContentPlaceHolder (container, null);
+			}, "#A1-2");
+#if DOTNET
+			// TODO: why does it throw? Unchecked 'as' type cast?
+			AssertExtensions.Throws<NullReferenceException> (() => {
+				mp.InstantiateInContentPlaceHolder (container, template);
+			}, "#B1-1");
+#endif
+			// TODO: Still throws a NREX, probably needs a full web request context, as it works below in the
+			// InstantiateInContentPlaceHolder_WithPage test
+			//
+			//template = new MyContentTemplate ();
+			//mp.InstantiateInContentPlaceHolder (container, template);
+		}
+
+		[Test]
+		public void InstantiateInContentPlaceHolder_WithPage ()
+		{
+			WebTest t = new WebTest ("MyPageWithDerivedMaster.aspx");
+			var pd = new PageDelegates ();
+			pd.Load = InstantiateInContentPlaceHolder_WithPage_Load;
+			t.Invoker = new PageInvoker (pd);
+			t.Run ();
+		}
+
+		public static void InstantiateInContentPlaceHolder_WithPage_Load (Page p)
+		{
+			MasterPage mp = p.Master;
+			Assert.IsNotNull (mp, "#A0");
+
+			ITemplate template = new MyTemplate ();
+
+			AssertExtensions.Throws<NullReferenceException> (() => {
+				mp.InstantiateInContentPlaceHolder (null, template);
+			}, "#A1-1");
+
+			Control container = new Control ();
+			AssertExtensions.Throws<NullReferenceException> (() => {
+				mp.InstantiateInContentPlaceHolder (container, null);
+			}, "#A1-2");
+
+			mp.InstantiateInContentPlaceHolder (container, template);
+			Assert.IsTrue (HasLiteralWithText (container, MyTemplate.MyText), "#B1-1");
+
+			template = new MyContentTemplate ();
+			mp.InstantiateInContentPlaceHolder (container, template);
+			Assert.IsTrue (HasLiteralWithText (container, MyContentTemplate.MyText), "#B1-2");
+		}
+
+		static bool HasLiteralWithText (Control container, string text)
+		{
+			if (container == null || container.Controls.Count == 0)
+				return false;
+
+			LiteralControl ctl;
+			foreach (Control c in container.Controls) {
+				ctl = c as LiteralControl;
+				if (ctl == null)
+					continue;
+
+				if (String.Compare (ctl.Text, text, StringComparison.Ordinal) == 0)
+					return true;
+			}
+
+			return false;
+		}
+
+#endif
 		public static void _RenderDefault (Page p)
 		{
 			p.Form.Controls.Add(new LiteralControl("Page dynamic text"));
diff --git a/mcs/class/System.Web/Test/System.Web.UI.WebControls/MenuTest.cs b/mcs/class/System.Web/Test/System.Web.UI.WebControls/MenuTest.cs
index 84a2e35..8e072b8 100644
--- a/mcs/class/System.Web/Test/System.Web.UI.WebControls/MenuTest.cs
+++ b/mcs/class/System.Web/Test/System.Web.UI.WebControls/MenuTest.cs
@@ -52,9 +52,17 @@ using MonoTests.Common;
 
 namespace MonoTests.System.Web.UI.WebControls
 {
+	class MenuTable : Menu
+	{
+		public MenuTable ()
+		{
+#if NET_4_0
+			RenderingMode = MenuRenderingMode.Table;
+#endif
+		}
+	}
 	
-	
-	class PokerMenu:Menu
+	class PokerMenu : Menu
 	{
 		public PokerMenu ()
 		{
@@ -420,7 +428,29 @@ namespace MonoTests.System.Web.UI.WebControls
 #endif
 			HtmlDiff.AssertAreEqual(OriginControlHtml,RenderedControlHtml,"RenderBeginTag");
 		}
+#if NET_4_0
+		[Test]
+		[Category ("NunitWeb")]
+		public void Menu_RenderBeginTag_List ()
+		{
+			new WebTest (PageInvoker.CreateOnLoad (_BeginTagRender_List)).Run ();
+		}
+
+		public static void _BeginTagRender_List (Page p)
+		{
+			PokerMenu pm = new PokerMenu ();
+			pm.RenderingCompatibility = new Version (4, 0);
+			pm.RenderingMode = MenuRenderingMode.List;
 
+			p.Form.Controls.Add (pm);
+			StringWriter sw = new StringWriter ();
+			HtmlTextWriter tw = new HtmlTextWriter (sw);
+			pm.RenderBeginTag (tw);
+			string RenderedControlHtml = sw.ToString ();
+			string OriginControlHtml = "<a href=\"#ctl01_SkipLink\"><img alt=\"Skip Navigation Links\" src=\"/NunitWeb/WebResource.axd?d=8VpphgAbakKUC_J8R6hR0Q2&t=634067491135766272\" width=\"0\" height=\"0\" style=\"border-width:0px;\" /></a><div id=\"ctl01\">\r\n";
+			HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "RenderBeginTag_List");
+		}
+#endif
 		[Test]
 		[Category ("NunitWeb")]
 		public void Menu_RenderEndTag ()
@@ -446,7 +476,29 @@ namespace MonoTests.System.Web.UI.WebControls
 #endif
 			HtmlDiff.AssertAreEqual(OriginControlHtml, RenderedControlHtml,"RenderEndTag");	
 		}
+#if NET_4_0
+		[Test]
+		[Category ("NunitWeb")]
+		public void Menu_RenderEndTag_List ()
+		{
+			new WebTest (PageInvoker.CreateOnLoad (_EndTagRender_List)).Run ();
+		}
+		public static void _EndTagRender_List (Page p)
+		{
+			PokerMenu pm = new PokerMenu ();
+			pm.RenderingCompatibility = new Version (4, 0);
+			pm.RenderingMode = MenuRenderingMode.List;
 
+			p.Form.Controls.Add (pm);
+			StringWriter sw = new StringWriter ();
+			HtmlTextWriter tw = new HtmlTextWriter (sw);
+			pm.RenderBeginTag (tw);
+			pm.RenderEndTag (tw);
+			string RenderedControlHtml = sw.ToString ();
+			string OriginControlHtml = "<a href=\"#ctl01_SkipLink\"><img alt=\"Skip Navigation Links\" src=\"/NunitWeb/WebResource.axd?d=8VpphgAbakKUC_J8R6hR0Q2&t=634067491135766272\" width=\"0\" height=\"0\" style=\"border-width:0px;\" /></a><div id=\"ctl01\">\r\n\r\n</div><a id=\"ctl01_SkipLink\"></a>";
+			HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "RenderEndTag");
+		}
+#endif
 		[Test]
 		public void Menu_DataBind () {
 			Page p = new Page ();
@@ -477,7 +529,7 @@ namespace MonoTests.System.Web.UI.WebControls
 		}
 
 		static Menu CreateMenu () {
-			Menu m = new Menu ();
+			Menu m = new MenuTable ();
 			MenuItem rootItem = new MenuItem ("RootItem-Text", "RootItem-Value");
 			m.Items.Add (rootItem);
 			rootItem.ChildItems.Add (new MenuItem ("Node1-Text", "Node1-Value"));
@@ -504,6 +556,9 @@ namespace MonoTests.System.Web.UI.WebControls
 			p.Form.Controls.Add (xmlDs);
 
 			Menu m = CreateMenu ();
+#if NET_4_0
+			m.RenderingMode = MenuRenderingMode.Table;
+#endif
 			m.DataSourceID = "XmlDataSource";
 			m.MenuItemDataBound += new MenuEventHandler (m_MenuItemDataBound);
 			p.Form.Controls.Add (m);
@@ -859,7 +914,7 @@ namespace MonoTests.System.Web.UI.WebControls
 
 		[Test]
 		public void Menu_DataBindings () {
-			Menu m = new Menu ();
+			Menu m = new MenuTable ();
 			SetDataBindings (m);
 			m.DataSource = CreateXmlDataSource ();
 			m.DataBind ();
@@ -886,7 +941,7 @@ namespace MonoTests.System.Web.UI.WebControls
 		{
 			LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
 			LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
-			Menu menu = new Menu ();
+			Menu menu = new MenuTable ();
 			p.Form.Controls.Add (lcb);
 			p.Form.Controls.Add (menu);
 			p.Form.Controls.Add (lce);
@@ -1025,9 +1080,6 @@ namespace MonoTests.System.Web.UI.WebControls
 			#endregion
 			RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (Menu_RenderStaticItems_Vertical)).Run ();
 			RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml);
-			Console.WriteLine (OriginControlHtml);
-			Console.WriteLine ("----------------");
-			Console.WriteLine (RenderedControlHtml);
 			HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "Menu_RenderStaticItems_Vertical");
 #if !NET_4_0 || (NET_4_0 && !DOT_NET)
 			// Throws NREX on .NET 4.0, most probably because the adapter's Control is null
@@ -1143,10 +1195,41 @@ namespace MonoTests.System.Web.UI.WebControls
 			HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "Menu_RenderStaticItemsWithBaseAdapter_Horizontal");
 #endif
 		}
-
+#if NET_4_0
+		[Test]
+		[Category ("NunitWeb")]
+		[Ignore ("Disabled temporarily")]
+		public void Menu_RenderStaticItems_List ()
+		{
+			string RenderedPageHtml, RenderedControlHtml, OriginControlHtml;
+			#region OriginControlHtml
+			OriginControlHtml = "<a href=\"#Menu_SkipLink\"><img alt=\"Skip Navigation Links\" src=\"/NunitWeb/WebResource.axd?d=8VpphgAbakKUC_J8R6hR0Q2&t=634067491135766272\" width=\"0\" height=\"0\" style=\"border-width:0px;\" /></a><div id=\"Menu\">\r\n\t<ul class=\"level1\">\r\n\t\t<li><a class=\"level1\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value')\">one-black</a></li><li><a class=\"level2\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-1-value')\">two-black-1</a></li><li><a class=\"level3\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-1-value\\\\three-black-1-value')\">three-black-1</a></li><li><a class=\"level4\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-1-value\\\\three-black-1-value\\\\four-black-1-value')\">four-black-1</a></li><li><a class=\"level4\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-1-value\\\\three-black-1-value\\\\four-black-2-value')\">four-black-2</a></li><li><a class=\"level3\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-1-value\\\\three-black-2-value')\">three-black-2</a></li><li><a class=\"level4\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-1-value\\\\three-black-2-value\\\\four-black-3-value')\">four-black-3</a></li><li><a class=\"level4\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-1-value\\\\three-black-2-value\\\\four-black-4-value')\">four-black-4</a></li><li><a class=\"level2\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-2-value')\">two-black-2</a></li><li><a class=\"level3\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-2-value\\\\three-black-3-value')\">three-black-3</a></li><li><a class=\"level4\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-2-value\\\\three-black-3-value\\\\four-black-5-value')\">four-black-5</a></li><li><a class=\"level4\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-2-value\\\\three-black-3-value\\\\four-black-6-value')\">four-black-6</a></li><li><a class=\"level3\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-2-value\\\\three-black-4-value')\">three-black-4</a></li><li><a class=\"level4\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-2-value\\\\three-black-4-value\\\\four-black-7-value')\">four-black-7</a></li><li><a class=\"level4\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-2-value\\\\three-black-4-value\\\\four-black-8-value')\">four-black-8</a></li>\r\n\t</ul>\r\n</div><a id=\"Menu_SkipLink\"></a>";
+			#endregion
+			RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (Menu_RenderStaticItems_Vertical_List)).Run ();
+			RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml);
+			HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "Menu_RenderStaticItems_Vertical");
+#if !DOT_NET
+			// Throws NREX on .NET 4.0, most probably because the adapter's Control is null
+			RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (Menu_RenderStaticItemsWithBaseAdapter_Vertical)).Run ();
+			RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml);
+			HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "Menu_RenderStaticItemsWithDefaultAdapter_Vertical");
+#endif
+			#region OriginControlHtml
+			OriginControlHtml = "<a href=\"#Menu_SkipLink\"><img alt=\"Skip Navigation Links\" src=\"/NunitWeb/WebResource.axd?d=8VpphgAbakKUC_J8R6hR0Q2&t=634067491135766272\" width=\"0\" height=\"0\" style=\"border-width:0px;\" /></a><div id=\"Menu\">\r\n\t<ul class=\"level1\">\r\n\t\t<li><a class=\"level1\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value')\">one-black</a></li><li><a class=\"level2\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-1-value')\">two-black-1</a></li><li><a class=\"level3\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-1-value\\\\three-black-1-value')\">three-black-1</a></li><li><a class=\"level4\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-1-value\\\\three-black-1-value\\\\four-black-1-value')\">four-black-1</a></li><li><a class=\"level4\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-1-value\\\\three-black-1-value\\\\four-black-2-value')\">four-black-2</a></li><li><a class=\"level3\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-1-value\\\\three-black-2-value')\">three-black-2</a></li><li><a class=\"level4\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-1-value\\\\three-black-2-value\\\\four-black-3-value')\">four-black-3</a></li><li><a class=\"level4\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-1-value\\\\three-black-2-value\\\\four-black-4-value')\">four-black-4</a></li><li><a class=\"level2\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-2-value')\">two-black-2</a></li><li><a class=\"level3\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-2-value\\\\three-black-3-value')\">three-black-3</a></li><li><a class=\"level4\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-2-value\\\\three-black-3-value\\\\four-black-5-value')\">four-black-5</a></li><li><a class=\"level4\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-2-value\\\\three-black-3-value\\\\four-black-6-value')\">four-black-6</a></li><li><a class=\"level3\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-2-value\\\\three-black-4-value')\">three-black-4</a></li><li><a class=\"level4\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-2-value\\\\three-black-4-value\\\\four-black-7-value')\">four-black-7</a></li><li><a class=\"level4\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-2-value\\\\three-black-4-value\\\\four-black-8-value')\">four-black-8</a></li>\r\n\t</ul>\r\n</div><a id=\"Menu_SkipLink\"></a>";
+			#endregion
+			RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (Menu_RenderStaticItems_Horizontal_List)).Run ();
+			RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml);
+			HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "Menu_RenderStaticItems_Horizontal");
+#if !DOT_NET
+			RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (Menu_RenderStaticItemsWithBaseAdapter_Horizontal)).Run ();
+			RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml);
+			HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "Menu_RenderStaticItemsWithBaseAdapter_Horizontal");
+#endif
+		}
+#endif
 		class MyMenuAdapter : global::System.Web.UI.WebControls.Adapters.MenuAdapter
 		{
-			protected override void RenderItem (HtmlTextWriter writer, 
+			protected internal override void RenderItem (HtmlTextWriter writer, 
 								    MenuItem item,
 								    int position)
 			{
@@ -1402,7 +1485,26 @@ namespace MonoTests.System.Web.UI.WebControls
 			m.StaticDisplayLevels = 4;
 			AddMenuToPage (p, m);
 		}
+#if NET_4_0
+		public static void Menu_RenderStaticItems_Vertical_List (Page p)
+		{
+			Menu m = CreateMenuForRenderTests (null, false);
+			m.RenderingCompatibility = new Version (4, 0);
+			m.RenderingMode = MenuRenderingMode.List;
+			m.StaticDisplayLevels = 4;
+			AddMenuToPage (p, m);
+		}
 
+		public static void Menu_RenderStaticItems_Horizontal_List (Page p)
+		{
+			Menu m = CreateMenuForRenderTests (null, false);
+			m.Orientation = Orientation.Horizontal;
+			m.StaticDisplayLevels = 4;
+			m.RenderingCompatibility = new Version (4, 0);
+			m.RenderingMode = MenuRenderingMode.List;
+			AddMenuToPage (p, m);
+		}
+#endif
 		public static void Menu_RenderStaticItemsWithBaseAdapter_Vertical (Page p) {
 			Menu m = CreateMenuForRenderTests (new MyWebControl.Adapters.MenuAdapter());
 			m.StaticDisplayLevels = 4;
@@ -1651,7 +1753,11 @@ namespace MonoTests.System.Web.UI.WebControls
 		[Category ("NotDotNet")] // implementation specific
 		public void Menu_PostBack ()
 		{
+			PageDelegates pd = new PageDelegates ();
+			pd.Init = Menu_SetTableMode;
 			WebTest t = new WebTest ("PostBackMenuTest.aspx");
+			t.Invoker = new PageInvoker (pd);
+
 			string str = t.Run ();
 			FormRequest fr = new FormRequest (t.Response, "form1");
 			fr.Controls.Add ("__EVENTTARGET");
@@ -1659,12 +1765,20 @@ namespace MonoTests.System.Web.UI.WebControls
 			fr.Controls["__EVENTTARGET"].Value = "Menu1";
 			fr.Controls ["__EVENTARGUMENT"].Value = "0_1";
 			t.Request = fr;
-			PageDelegates pd = new PageDelegates ();
 			pd.PreRender = _MenuItemsPost;
 			t.Invoker = new PageInvoker (pd);
 			t.Run ();
 		}
 
+		public static void Menu_SetTableMode (Page p)
+		{
+#if NET_4_0
+			Menu m = p.Form.FindControl ("Menu1") as Menu;
+			Assert.IsNotNull (m, "Menu present");
+			m.RenderingMode = MenuRenderingMode.Table;
+#endif
+		}
+		
 		public static void _MenuItemsPost (Page p)
 		{
 			foreach (Control c in p.Form.Controls) {
@@ -1679,7 +1793,11 @@ namespace MonoTests.System.Web.UI.WebControls
 		[Category ("NunitWeb")]
 		public void Menu_PostBackFireEvents_1 ()
 		{
+			PageDelegates pd = new PageDelegates ();
+			pd.Init = Menu_SetTableMode;
 			WebTest t = new WebTest ("PostBackMenuTest.aspx");
+			t.Invoker = new PageInvoker (pd);
+			
 			string str = t.Run ();
 			FormRequest fr = new FormRequest (t.Response, "form1");
 			fr.Controls.Add ("__EVENTTARGET");
@@ -1709,7 +1827,8 @@ namespace MonoTests.System.Web.UI.WebControls
 
 		public static void PostBackFireEvents_Init (Page p)
 		{
-			Menu m = new Menu ();
+			Menu_SetTableMode (p);
+			Menu m = new MenuTable ();
 			m.MenuItemDataBound += new MenuEventHandler (MenuItemDataBound_Event);
 			m.DataSource = LoadXml ();
 			p.Controls.Add (m);
@@ -1737,7 +1856,7 @@ namespace MonoTests.System.Web.UI.WebControls
 		[Test]
 		public void MenuItemCollection1 ()
 		{
-			Menu m = new Menu ();
+			Menu m = new MenuTable ();
 			fillMenu (m);
 
 			((IStateManager) m.Items).TrackViewState ();
@@ -1746,7 +1865,7 @@ namespace MonoTests.System.Web.UI.WebControls
 			m.Items [0].ChildItems [0].ChildItems [0].Text = "subnode";
 			object state = ((IStateManager) m.Items).SaveViewState ();
 
-			Menu copy = new Menu ();
+			Menu copy = new MenuTable ();
 			fillMenu (copy);
 			((IStateManager) copy.Items).TrackViewState ();
 			((IStateManager) copy.Items).LoadViewState (state);
@@ -1763,7 +1882,7 @@ namespace MonoTests.System.Web.UI.WebControls
 		[Test]
 		public void MenuItemCollection2 ()
 		{
-			Menu m = new Menu ();
+			Menu m = new MenuTable ();
 			fillMenu (m);
 
 			((IStateManager) m.Items).TrackViewState ();
@@ -1773,7 +1892,7 @@ namespace MonoTests.System.Web.UI.WebControls
 			m.Items.Add (new MenuItem ("root 2"));
 			object state = ((IStateManager) m.Items).SaveViewState ();
 
-			Menu copy = new Menu ();
+			Menu copy = new MenuTable ();
 			fillMenu (copy);
 			((IStateManager) copy.Items).TrackViewState ();
 			((IStateManager) copy.Items).LoadViewState (state);
@@ -1791,7 +1910,7 @@ namespace MonoTests.System.Web.UI.WebControls
 		[Test]
 		public void MenuItemCollection3 ()
 		{
-			Menu m = new Menu ();
+			Menu m = new MenuTable ();
 			fillMenu (m);
 			m.Items.Add (new MenuItem ("root 2"));
 
@@ -1802,7 +1921,7 @@ namespace MonoTests.System.Web.UI.WebControls
 			m.Items.RemoveAt (1);
 			object state = ((IStateManager) m.Items).SaveViewState ();
 
-			Menu copy = new Menu ();
+			Menu copy = new MenuTable ();
 			fillMenu (copy);
 			copy.Items.Add (new MenuItem ("root 2"));
 			((IStateManager) copy.Items).TrackViewState ();
@@ -1820,7 +1939,7 @@ namespace MonoTests.System.Web.UI.WebControls
 		[Test]
 		public void MenuItemCollection4 ()
 		{
-			Menu m = new Menu ();
+			Menu m = new MenuTable ();
 			fillMenu (m);
 			m.Items.Add (new MenuItem ("root 2"));
 			m.Items [0].ChildItems.RemoveAt (1);
@@ -1831,7 +1950,7 @@ namespace MonoTests.System.Web.UI.WebControls
 			m.Items [0].ChildItems [0].ChildItems [0].Text = "subnode";
 			object state = ((IStateManager) m.Items).SaveViewState ();
 
-			Menu copy = new Menu ();
+			Menu copy = new MenuTable ();
 			fillMenu (copy);
 			copy.Items.Add (new MenuItem ("root 2"));
 			copy.Items [0].ChildItems.RemoveAt (1);
@@ -1850,13 +1969,13 @@ namespace MonoTests.System.Web.UI.WebControls
 		[Test]
 		public void MenuItemCollection5 ()
 		{
-			Menu m = new Menu ();
+			Menu m = new MenuTable ();
 			((IStateManager) m.Items).TrackViewState ();
 			fillMenu (m);
 
 			object state = ((IStateManager) m.Items).SaveViewState ();
 
-			Menu copy = new Menu ();
+			Menu copy = new MenuTable ();
 			((IStateManager) copy.Items).TrackViewState ();
 			((IStateManager) copy.Items).LoadViewState (state);
 
diff --git a/mcs/class/System.Web/Test/System.Web.UI.WebControls/ObjectDataSourceViewTest.cs b/mcs/class/System.Web/Test/System.Web.UI.WebControls/ObjectDataSourceViewTest.cs
index 2d56a4d..6fde378 100644
--- a/mcs/class/System.Web/Test/System.Web.UI.WebControls/ObjectDataSourceViewTest.cs
+++ b/mcs/class/System.Web/Test/System.Web.UI.WebControls/ObjectDataSourceViewTest.cs
@@ -924,6 +924,9 @@ namespace MonoTests.System.Web.UI.WebControls
 				evaluateCount = 0;
 			}
 
+#if NET_4_0
+			internal
+#endif
 			protected override object Evaluate (HttpContext context, Control control) 
 			{
 				evaluateCount++;
diff --git a/mcs/class/System.Web/Test/System.Web.UI.WebControls/RadioButtonListTest.cs b/mcs/class/System.Web/Test/System.Web.UI.WebControls/RadioButtonListTest.cs
index bfcdf19..76ef732 100644
--- a/mcs/class/System.Web/Test/System.Web.UI.WebControls/RadioButtonListTest.cs
+++ b/mcs/class/System.Web/Test/System.Web.UI.WebControls/RadioButtonListTest.cs
@@ -439,7 +439,7 @@ namespace MonoTests.System.Web.UI.WebControls {
 				return base.LoadPostData (postDataKey, postCollection);
 			}
 			
-			protected override void OnLoad (EventArgs e)
+			protected internal override void OnLoad (EventArgs e)
 			{
 				if (WebTest.CurrentTest.UserData == null) {
 					ArrayList list = new ArrayList ();
diff --git a/mcs/class/System.Web/Test/System.Web.UI.WebControls/RadioButtonTest.cs b/mcs/class/System.Web/Test/System.Web.UI.WebControls/RadioButtonTest.cs
index 1929be3..de2b073 100644
--- a/mcs/class/System.Web/Test/System.Web.UI.WebControls/RadioButtonTest.cs
+++ b/mcs/class/System.Web/Test/System.Web.UI.WebControls/RadioButtonTest.cs
@@ -287,7 +287,7 @@ namespace MonoTests.System.Web.UI.WebControls {
 				return base.LoadPostData (postDataKey, postCollection);
 			}
 
-			protected override void OnLoad (EventArgs e)
+			protected internal override void OnLoad (EventArgs e)
 			{
 				if (WebTest.CurrentTest.UserData == null) {
 					ArrayList list = new ArrayList ();
diff --git a/mcs/class/System.Web/Test/System.Web.UI.WebControls/SiteMapDataSourceTest.cs b/mcs/class/System.Web/Test/System.Web.UI.WebControls/SiteMapDataSourceTest.cs
index 71adf40..2b22358 100644
--- a/mcs/class/System.Web/Test/System.Web.UI.WebControls/SiteMapDataSourceTest.cs
+++ b/mcs/class/System.Web/Test/System.Web.UI.WebControls/SiteMapDataSourceTest.cs
@@ -239,7 +239,7 @@ namespace MonoTests.System.Web.UI.WebControls
 				return temp;
 			}
 		}
-		protected override SiteMapNode GetRootNodeCore ()
+		protected internal override SiteMapNode GetRootNodeCore ()
 		{
 			return RootNode;
 		}
diff --git a/mcs/class/System.Web/Test/System.Web.UI.WebControls/SqlDataSourceViewTest.cs b/mcs/class/System.Web/Test/System.Web.UI.WebControls/SqlDataSourceViewTest.cs
index d81c16f..fa2642c 100644
--- a/mcs/class/System.Web/Test/System.Web.UI.WebControls/SqlDataSourceViewTest.cs
+++ b/mcs/class/System.Web/Test/System.Web.UI.WebControls/SqlDataSourceViewTest.cs
@@ -453,6 +453,9 @@ namespace MonoTests.System.Web.UI.WebControls
 				evaluateCount = 0;
 			}
 
+#if NET_4_0
+			internal
+#endif
 			protected override object Evaluate (HttpContext context, Control control) {
 				evaluateCount++;
 				return String.Format ("{0}{1}", DefaultValue, evaluateCount);
diff --git a/mcs/class/System.Web/Test/System.Web.UI.WebControls/StyleTest.cs b/mcs/class/System.Web/Test/System.Web.UI.WebControls/StyleTest.cs
index ad671c2..86eccc4 100644
--- a/mcs/class/System.Web/Test/System.Web.UI.WebControls/StyleTest.cs
+++ b/mcs/class/System.Web/Test/System.Web.UI.WebControls/StyleTest.cs
@@ -127,7 +127,7 @@ namespace MonoTests.System.Web.UI.WebControls
 
 		public bool SetBitCalledFlag = false;
 		public int SetBitCalledValue = 0;
-		protected override void SetBit (int bit) {
+		protected internal override void SetBit (int bit) {
 			SetBitCalledFlag = true;
 			SetBitCalledValue = bit;
 			base.SetBit (bit);
diff --git a/mcs/class/System.Web/Test/System.Web.UI.WebControls/TableItemStyleTest.cs b/mcs/class/System.Web/Test/System.Web.UI.WebControls/TableItemStyleTest.cs
index 11585ff..2166a69 100644
--- a/mcs/class/System.Web/Test/System.Web.UI.WebControls/TableItemStyleTest.cs
+++ b/mcs/class/System.Web/Test/System.Web.UI.WebControls/TableItemStyleTest.cs
@@ -59,7 +59,7 @@ namespace MonoTests.System.Web.UI.WebControls {
 
 		public bool SetBitCalledFlag = false;
 		public int SetBitCalledValue = 0;
-		protected override void SetBit (int bit) {
+		protected internal override void SetBit (int bit) {
 			SetBitCalledFlag = true;
 			SetBitCalledValue = bit;
 			base.SetBit (bit);
diff --git a/mcs/class/System.Web/Test/System.Web.UI.WebControls/TableStyleTest.cs b/mcs/class/System.Web/Test/System.Web.UI.WebControls/TableStyleTest.cs
index 971f03f..60e741c 100644
--- a/mcs/class/System.Web/Test/System.Web.UI.WebControls/TableStyleTest.cs
+++ b/mcs/class/System.Web/Test/System.Web.UI.WebControls/TableStyleTest.cs
@@ -71,16 +71,15 @@ namespace MonoTests.System.Web.UI.WebControls {
 		{
 			return SaveViewState ();
 		}
-#if NET_2_0
+
 		public void Fill (CssStyleCollection attributes, IUrlResolutionService urlResolver)
 		{
 			base.FillStyleAttributes (attributes, urlResolver);
 		}
-#endif
 
 		public bool SetBitCalledFlag = false;
 		public int SetBitCalledValue = 0;
-		protected override void SetBit (int bit) {
+		protected internal override void SetBit (int bit) {
 			SetBitCalledFlag = true;
 			SetBitCalledValue = bit;
 			base.SetBit (bit);
diff --git a/mcs/class/System.Web/Test/System.Web.UI.WebControls/TextBoxTest.cs b/mcs/class/System.Web/Test/System.Web.UI.WebControls/TextBoxTest.cs
index 62d20f9..2287470 100644
--- a/mcs/class/System.Web/Test/System.Web.UI.WebControls/TextBoxTest.cs
+++ b/mcs/class/System.Web/Test/System.Web.UI.WebControls/TextBoxTest.cs
@@ -233,7 +233,7 @@ namespace MonoTests.System.Web.UI.WebControls {
 				return base.LoadPostData (postDataKey, postCollection);
 			}
 
-			protected override void OnLoad (EventArgs e)
+			protected internal override void OnLoad (EventArgs e)
 			{
 				if (this.Page.IsPostBack) {
 					if (WebTest.CurrentTest.UserData == null) {
diff --git a/mcs/class/System.Web/Test/System.Web.UI.WebControls/WebControlTest.cs b/mcs/class/System.Web/Test/System.Web.UI.WebControls/WebControlTest.cs
index a30db3a..1c83789 100644
--- a/mcs/class/System.Web/Test/System.Web.UI.WebControls/WebControlTest.cs
+++ b/mcs/class/System.Web/Test/System.Web.UI.WebControls/WebControlTest.cs
@@ -688,7 +688,7 @@ namespace MonoTests.System.Web.UI.WebControls
 #if NET_2_0
 		class MyControlAdapter : ControlAdapter
 		{
-			protected override void Render (HtmlTextWriter w)
+			protected internal override void Render (HtmlTextWriter w)
 			{
 				w.WriteLine("MyControlAdapter.Render");
 			}
diff --git a/mcs/class/System.Web/Test/System.Web.UI/ChangeLog b/mcs/class/System.Web/Test/System.Web.UI/ChangeLog
index 0689632..6153832 100644
--- a/mcs/class/System.Web/Test/System.Web.UI/ChangeLog
+++ b/mcs/class/System.Web/Test/System.Web.UI/ChangeLog
@@ -1,3 +1,18 @@
+2011-01-10  Marek Safar  <marek.safar at gmail.com>
+
+	Fixed more missing protected internal modifiers
+
+2010-10-29  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Fix for bug #649551. The LosFormatter (bool, string)
+	constructor does not expect a base64-encoded string.
+
+	Telerik controls pass the string "string" as the macKeyModifier
+	parameter to the constructor. Tests show that .NET accepts such
+	input without throwing an error. The passed string is now
+	converted into a byte array and passed to the LosFormatter (bool,
+	byte[]) constructor.
+
 2010-10-08  Sebastien Pouliot  <sebastien at ximian.com>
 
 	* Test/System.Web.UI/LosFormatterTest.cs: Add some rountrip test
diff --git a/mcs/class/System.Web/Test/System.Web.UI/ControlTest.cs b/mcs/class/System.Web/Test/System.Web.UI/ControlTest.cs
index 9dd92b2..ddf3812 100644
--- a/mcs/class/System.Web/Test/System.Web.UI/ControlTest.cs
+++ b/mcs/class/System.Web/Test/System.Web.UI/ControlTest.cs
@@ -1158,18 +1158,18 @@ namespace MonoTests.System.Web.UI
 				set { ViewState ["Viewstate"] = value; }
 			}
 
-			protected override void OnInit (EventArgs e)
+			protected internal override void OnInit (EventArgs e)
 			{
 				base.OnInit (e);
 				Page.RegisterRequiresControlState (this);
 			}
 
-			protected override object SaveControlState ()
+			protected internal override object SaveControlState ()
 			{
 				return State;
 			}
 
-			protected override void LoadControlState (object savedState)
+			protected internal override void LoadControlState (object savedState)
 			{
 				State = (string) savedState;
 			}
@@ -1283,7 +1283,7 @@ namespace MonoTests.System.Web.UI
 				set { _template = value; }
 			}
 
-			protected override void CreateChildControls ()
+			protected internal override void CreateChildControls ()
 			{
 				Controls.Clear ();
 
@@ -1327,7 +1327,7 @@ namespace MonoTests.System.Web.UI
 
 	public class ChildControlsCreatedControl : Control
 	{
-		protected override void CreateChildControls () {
+		protected internal override void CreateChildControls () {
 			Controls.Add (new Control ());
 		}
 
diff --git a/mcs/class/System.Web/Test/System.Web.UI/DataSourceSelectArgumentsTest.cs b/mcs/class/System.Web/Test/System.Web.UI/DataSourceSelectArgumentsTest.cs
index 20bf403..9575382 100644
--- a/mcs/class/System.Web/Test/System.Web.UI/DataSourceSelectArgumentsTest.cs
+++ b/mcs/class/System.Web/Test/System.Web.UI/DataSourceSelectArgumentsTest.cs
@@ -71,11 +71,11 @@ namespace MonoCasTests.System.Web.UI
 				}
 			}
 
-			protected override IEnumerable ExecuteSelect (DataSourceSelectArguments arguments) {
+			protected internal override IEnumerable ExecuteSelect (DataSourceSelectArguments arguments) {
 				throw new Exception ("The method or operation is not implemented.");
 			}
 
-			protected override void RaiseUnsupportedCapabilityError (DataSourceCapabilities capability) {
+			protected internal override void RaiseUnsupportedCapabilityError (DataSourceCapabilities capability) {
 				RaiseUnsupportedCapabilityErrorCalled = true;
 				DataSourceCapabilities = capability;
 			}
diff --git a/mcs/class/System.Web/Test/System.Web.UI/LosFormatterTest.cs b/mcs/class/System.Web/Test/System.Web.UI/LosFormatterTest.cs
index f1d9b08..9ae597d 100644
--- a/mcs/class/System.Web/Test/System.Web.UI/LosFormatterTest.cs
+++ b/mcs/class/System.Web/Test/System.Web.UI/LosFormatterTest.cs
@@ -121,6 +121,9 @@ namespace MonoTests.System.Web.UI
 			// 20 bytes == 160 bits -> match HMACSHA1 as default
 			Assert.AreEqual (20, signed_data.Length - data.Length, "signature length");
 #endif
+			LosFormatter lf6 = new LosFormatter (true, "string"); // bug #649551
+			signed = NoKeyRoundTrip (lf6, "true, plain");
+			Assert.AreNotEqual (expected, signed, "6");
 		}
 
 		string SerializeOverloads (LosFormatter lf, string message)
diff --git a/mcs/class/System.Web/Test/System.Web.UI/PageTest.cs b/mcs/class/System.Web/Test/System.Web.UI/PageTest.cs
index 689fd87..a09c17f 100644
--- a/mcs/class/System.Web/Test/System.Web.UI/PageTest.cs
+++ b/mcs/class/System.Web/Test/System.Web.UI/PageTest.cs
@@ -53,7 +53,7 @@ namespace MonoTests.System.Web.UI {
 		private HttpContext ctx;
 
 		// don't call base class (so _context is never set to a non-null value)
-		protected override HttpContext Context {
+		protected internal override HttpContext Context {
 			get {
 				if (ctx == null) {
 					ctx = new HttpContext (null);
@@ -96,7 +96,7 @@ namespace MonoTests.System.Web.UI {
 		private HttpContext ctx;
 
 		// don't call base class (so _context is never set to a non-null value)
-		protected override HttpContext Context {
+		protected internal override HttpContext Context {
 			get {
 				if (ctx == null) {
 					ctx = new HttpContext (
@@ -1263,7 +1263,7 @@ namespace MonoTests.System.Web.UI {
 
 		class CustomPostBackDataHandler : WebControl, IPostBackDataHandler
 		{
-			protected override void OnInit (EventArgs e)
+			protected internal override void OnInit (EventArgs e)
 			{
 				base.OnInit (e);
 				Page.RegisterRequiresPostBack (this);
@@ -1410,7 +1410,7 @@ namespace MonoTests.System.Web.UI {
 			return persister;
 		}
 
-		protected override string GetPostBackFormReference (string formId)
+		protected internal override string GetPostBackFormReference (string formId)
 		{
 			return String.Format("/* testFormReference */{0}", 
 				base.GetPostBackFormReference (formId));
diff --git a/mcs/class/System.Web/Test/System.Web.Util/ChangeLog b/mcs/class/System.Web/Test/System.Web.Util/ChangeLog
index 608c86c..571d3dc 100644
--- a/mcs/class/System.Web/Test/System.Web.Util/ChangeLog
+++ b/mcs/class/System.Web/Test/System.Web.Util/ChangeLog
@@ -1,3 +1,8 @@
+2010-11-29  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* MachineKeySectionUtilsTest.cs: Do not assume xor will change a
+	byte
+
 2010-10-12  Sebastien Pouliot  <sebastien at ximian.com>
 
 	* Test/System.Web.Util/MachineKeySectionUtilsTest.cs: Moved from
diff --git a/mcs/class/System.Web/Test/System.Web.Util/MachineKeySectionUtilsTest.cs b/mcs/class/System.Web/Test/System.Web.Util/MachineKeySectionUtilsTest.cs
index 2beebff..ee7207a 100644
--- a/mcs/class/System.Web/Test/System.Web.Util/MachineKeySectionUtilsTest.cs
+++ b/mcs/class/System.Web/Test/System.Web.Util/MachineKeySectionUtilsTest.cs
@@ -37,6 +37,11 @@ namespace MonoTests.System.Web.Util {
 	[TestFixture]
 	public class MachineKeySectionUtilsTest {
 
+		static byte ChangeByte (byte b)
+		{
+			return (b == Byte.MaxValue) ? Byte.MinValue : (byte) (b + 1);
+		}
+
 		public void Encrypt_RoundTrip (MachineKeySection section)
 		{
 			byte [] data = new byte [14];
@@ -51,7 +56,7 @@ namespace MonoTests.System.Web.Util {
 
 			// changing last byte (padding)
 			byte be = encdata [encdata.Length - 1];
-			encdata [encdata.Length - 1] ^= (byte) (be + 1);
+			encdata [encdata.Length - 1] = ChangeByte (be);
 			Assert.IsNull (MachineKeySectionUtils.Decrypt (section, encdata), "bad padding");
 		}
 
@@ -134,13 +139,13 @@ namespace MonoTests.System.Web.Util {
 
 			// changing a byte of the data
 			byte b0 = block [0];
-			block [0] ^= b0;
+			block [0] = ChangeByte (b0);
 			Assert.IsNull (MachineKeySectionUtils.VerifyDecrypt (section, block), "bad data");
 			block [0] = b0;
 
 			// changing a byte of the signature
 			byte be = block [block.Length - 1];
-			block [block.Length - 1] ^= (byte) (be + 1);
+			block [block.Length - 1] = ChangeByte (be);
 			Assert.IsNull (MachineKeySectionUtils.VerifyDecrypt (section, block), "bad signature");
 		}
 
@@ -223,7 +228,7 @@ namespace MonoTests.System.Web.Util {
 			// changing last byte
 			for (int i = 0; i < data.Length; i++) {
 				byte b = block [i];
-				block [i] ^= 0xFF;
+				block [i] = ChangeByte (b);
 				Assert.IsNull (MachineKeySectionUtils.Verify (section, block), "bad-" + i.ToString ());
 				block [i] = b;
 			}
diff --git a/mcs/class/System.Web/Test/System.Web/ChangeLog b/mcs/class/System.Web/Test/System.Web/ChangeLog
index a370dd2..30aef1c 100644
--- a/mcs/class/System.Web/Test/System.Web/ChangeLog
+++ b/mcs/class/System.Web/Test/System.Web/ChangeLog
@@ -1,3 +1,16 @@
+2011-01-10  Marek Safar  <marek.safar at gmail.com>
+
+	Fixed more missing protected internal modifiers
+
+2010-10-29  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] HttpRequest.MapPath changes to match .NET
+
+	When MapPath is passed a rooted, absolute path which is not in the
+	current application's virtual root, it should throw an exception.
+	If the path is rooted and within the current application, it will
+	be mapped as if it was relative to the root.
+
 2010-08-11  Marek Habersack  <grendel at twistedcode.net>
 
 	[asp.net] Partial fix for bug #575600. Convert virtual path to
diff --git a/mcs/class/System.Web/Test/System.Web/HttpRequestTest.cs b/mcs/class/System.Web/Test/System.Web/HttpRequestTest.cs
index 73d9325..e9295b6 100644
--- a/mcs/class/System.Web/Test/System.Web/HttpRequestTest.cs
+++ b/mcs/class/System.Web/Test/System.Web/HttpRequestTest.cs
@@ -205,6 +205,26 @@ namespace MonoTests.System.Web {
 				r.MapPath ("Web.config", "~", false), "test10");
 			Assert.AreEqual (Path.Combine (appBase, "DIR" + Path.DirectorySeparatorChar + "Web.config"),
 				r.MapPath ("Web.config", "~/DIR", false), "test11");
+
+			AssertExtensions.Throws<InvalidOperationException> (() => {
+				// Throws because the test's virtual dir is /NunitWeb and / is above it
+				r.MapPath ("/test.txt");
+			}, "test12");
+
+			AssertExtensions.Throws<InvalidOperationException> (() => {
+				// Throws because the test's virtual dir is /NunitWeb and /NunitWeb1 does not match it
+				r.MapPath ("/NunitWeb1/test.txt");
+			}, "test13");
+
+			AssertExtensions.Throws<ArgumentException> (() => {
+				r.MapPath ("/test.txt", "/", false);
+			}, "test14");
+
+			AssertExtensions.Throws<ArgumentException> (() => {
+				r.MapPath ("/test.txt", "/NunitWeb", false);
+			}, "test15");
+
+			Assert.AreEqual (Path.Combine (appBase, "test.txt"), r.MapPath ("/NunitWeb/test.txt", "/NunitWeb", true), "test16");
 		}
 	
 		[Test]
diff --git a/mcs/class/System.Web/Test/System.Web/SiteMapNodeTest.cs b/mcs/class/System.Web/Test/System.Web/SiteMapNodeTest.cs
index 4acee5a..ba0d8fe 100644
--- a/mcs/class/System.Web/Test/System.Web/SiteMapNodeTest.cs
+++ b/mcs/class/System.Web/Test/System.Web/SiteMapNodeTest.cs
@@ -55,7 +55,7 @@ namespace MonoTests.System.Web
 			throw new Exception ("The method or operation is not implemented.");
 		}
 
-		protected override SiteMapNode GetRootNodeCore ()
+		protected internal override SiteMapNode GetRootNodeCore ()
 		{
 			throw new Exception ("The method or operation is not implemented.");
 		}
diff --git a/mcs/class/System.Web/Test/System.Web/SiteMapProviderTest.cs b/mcs/class/System.Web/Test/System.Web/SiteMapProviderTest.cs
index 274303d..b1e7e1a 100644
--- a/mcs/class/System.Web/Test/System.Web/SiteMapProviderTest.cs
+++ b/mcs/class/System.Web/Test/System.Web/SiteMapProviderTest.cs
@@ -69,7 +69,7 @@ namespace MonoTests.System.Web {
 			throw new NotImplementedException ();
 		}
 
-		protected override SiteMapNode GetRootNodeCore ()
+		protected internal override SiteMapNode GetRootNodeCore ()
 		{
 			return new SiteMapNode (this, "rootKey", "rootUrl");
 		}
diff --git a/mcs/class/System.Web/Test/System.Web/StaticSiteMapProviderTest.cs b/mcs/class/System.Web/Test/System.Web/StaticSiteMapProviderTest.cs
index 19ed9a9..0d72d68 100644
--- a/mcs/class/System.Web/Test/System.Web/StaticSiteMapProviderTest.cs
+++ b/mcs/class/System.Web/Test/System.Web/StaticSiteMapProviderTest.cs
@@ -73,7 +73,7 @@ namespace MonoTests.System.Web {
 			return root;
 		}
 
-		protected override SiteMapNode GetRootNodeCore ()
+		protected internal override SiteMapNode GetRootNodeCore ()
 		{
 			return BuildSiteMap ();
 		}
diff --git a/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/ChangeLog b/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/ChangeLog
index 1e10835..80c0bfa 100644
--- a/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/ChangeLog
+++ b/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/ChangeLog
@@ -1,3 +1,32 @@
+2011-01-10  Marek Safar  <marek.safar at gmail.com>
+
+	Fixed another missing protected internal modifier
+
+2011-01-10  Marek Safar  <marek.safar at gmail.com>
+
+	Fixed more protected internal modifiers
+
+2011-01-10  Marek Safar  <marek.safar at gmail.com>
+
+	Fixed more missing protected internal modifiers
+
+2011-01-04  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Don't attempt to use System.Web resources in
+	System.Web.Extensions test build
+
+	WebTest is now a partial class and every code outside System.Web
+	that uses it can copy its own resources in addition to the common
+	ones by implementing the CopyResourcesLocal partial method.
+
+2010-12-13  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Test suite configuration updates for 4.0
+
+	When running the tests on the 4.0 profile, the configuration must
+	no longer include the System.Web.Extensions section declarations
+	as they are merged with machine.config right now.
+
 2010-08-11  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
 
 	Adapt to new exception in threadpool behavior.
diff --git a/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/MyTemplateControls.cs b/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/MyTemplateControls.cs
index 6f0556b..edd0a5d 100644
--- a/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/MyTemplateControls.cs
+++ b/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/MyTemplateControls.cs
@@ -36,7 +36,7 @@ namespace MyTemplateControls
       container = new TestContainerControl (this);
     }
 
-    protected override void CreateChildControls ()
+    protected internal override void CreateChildControls ()
     {
       Controls.Clear ();
       container.AddItem ();
diff --git a/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/Resources/Web.mono.config.1.1 b/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/Resources/Web.mono.config.1.1
deleted file mode 100755
index 7692044..0000000
--- a/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/Resources/Web.mono.config.1.1
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<configuration>
-  <appSettings>
-    <add key="strvalue" value="str" />
-    <add key="intvalue" value="123" />
-  </appSettings>
-  <system.web>
-    <siteMap enabled="true"/>
-    <compilation debug="true" batch="false">
-    </compilation>
-    <httpHandlers>
-      <add path="WebResource.axd" verb="GET" type="System.Web.Handlers.AssemblyResourceLoader" validate="true" />
-    </httpHandlers>
-    <pages enableSessionState="false" />
-    <membership defaultProvider="FakeProvider">
-      <providers>
-        <add name="FakeProvider" type="MonoTests.SystemWeb.Framework.FakeMembershipProvider"
-             enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true"
-             applicationName="/" requiresUniqueEmail="false" passwordFormat="Hashed"
-             maxInvalidPasswordAttempts="5" minRequiredPasswordLength="7"
-             minRequiredNonalphanumericCharacters="1" passwordAttemptWindow="10"
-             passwordStrengthRegularExpression="" />
-      </providers>
-    </membership>
-  </system.web>
-  <system.net>
-    <mailSettings>
-      <smtp from="heh at heh.com">
-        <network host="localhost" port="125"/>
-      </smtp>
-    </mailSettings>
-  </system.net>
-</configuration>
diff --git a/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/Resources/Web.mono.config.4.0 b/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/Resources/Web.mono.config.4.0
new file mode 100644
index 0000000..db81e2e
--- /dev/null
+++ b/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/Resources/Web.mono.config.4.0
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+	<configSections>
+		<section name="CustomTags" restartOnExternalChanges="false" type="MonoTests.SystemWeb.Framework.CustomSection, System.Web_test_net_4_0" />
+	</configSections>
+	<appSettings>
+		<add key="strvalue" value="str" />
+		<add key="intvalue" value="123" />
+	</appSettings>
+	
+	<!-- DO NOT REMOVE: USED BY TESTS -->
+	<CustomTags>
+		<sections>
+			<add area="activityTemplateTitle">
+				<add name="a" />
+			</add>
+			<add area="Something">
+			</add>
+		</sections>
+	</CustomTags>
+	
+	<system.web>
+		<siteMap enabled="true">
+			<providers>
+				<add name="TestSiteMapProvider" type="Tests.TestSiteMapProvider" />
+			</providers>
+		</siteMap>
+		<compilation debug="true" batch="false" numRecompilesBeforeAppRestart="100000" />
+		<httpHandlers>
+			<add path="WebResource.axd" verb="GET" type="System.Web.Handlers.AssemblyResourceLoader" validate="true" />
+			<remove verb="*" path="*.asmx"/>
+			<add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
+		</httpHandlers>
+		<pages enableSessionState="false" />
+		<membership defaultProvider="FakeProvider">
+			<providers>
+				<add name="FakeProvider" type="MonoTests.SystemWeb.Framework.FakeMembershipProvider"
+				     enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true"
+				     applicationName="/" requiresUniqueEmail="false" passwordFormat="Hashed"
+				     maxInvalidPasswordAttempts="5" minRequiredPasswordLength="7"
+				     minRequiredNonalphanumericCharacters="1" passwordAttemptWindow="10"
+				     passwordStrengthRegularExpression="" />
+			</providers>
+		</membership>
+
+		<roleManager defaultProvider="TheRoleProvider" enabled="true">
+			<providers>
+				<clear />
+				<add name="TheRoleProvider" type="MonoTests.SystemWeb.Framework.TestRoleProvider"/>
+			</providers>
+		</roleManager>
+	</system.web>
+	<system.net>
+		<mailSettings>
+			<smtp from="heh at heh.com">
+				<network host="localhost" port="125"/>
+			</smtp>
+		</mailSettings>
+	</system.net>
+</configuration>
diff --git a/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/Tests/Book.cs b/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/Tests/Book.cs
index 8c35515..f901ec7 100644
--- a/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/Tests/Book.cs
+++ b/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/Tests/Book.cs
@@ -123,7 +123,7 @@ namespace Samples.AspNet.CS.Controls
             }
         }
 
-        protected override void RenderContents(HtmlTextWriter writer)
+        protected internal override void RenderContents(HtmlTextWriter writer)
         {
             writer.RenderBeginTag(HtmlTextWriterTag.Table);
 
diff --git a/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/Tests/TestSiteMapProvider.cs b/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/Tests/TestSiteMapProvider.cs
index cee33ee..9cdf41c 100644
--- a/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/Tests/TestSiteMapProvider.cs
+++ b/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/Tests/TestSiteMapProvider.cs
@@ -12,7 +12,7 @@ namespace Tests {
 			get { return BuildSiteMap(); }
 		}
 
-		protected override SiteMapNode GetRootNodeCore() {
+		protected internal override SiteMapNode GetRootNodeCore() {
 			return BuildSiteMap();
 		}
 
diff --git a/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/WebTest.cs b/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/WebTest.cs
index de3227d..3496770 100644
--- a/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/WebTest.cs
+++ b/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/WebTest.cs
@@ -22,7 +22,7 @@ namespace MonoTests.SystemWeb.Framework
 	/// <seealso cref="Invoker"/>
 	/// <seealso cref="Run"/>
 	[Serializable]
-	public class WebTest
+	public partial class WebTest
 	{
 		/// <summary>
 		/// Thrown when trying to copy a resource after appdomain was created. Please call
@@ -599,24 +599,15 @@ namespace MonoTests.SystemWeb.Framework
 			
 			CopyResource (myself, "My.ashx", "My.ashx");
 			CopyResource (myself, "Global.asax", "Global.asax");
-#if NET_2_0
-#if INSIDE_SYSTEM_WEB || DOTNET
-			CopyPrefixedResources (myself, "App_GlobalResources/", "App_GlobalResources");
-			CopyPrefixedResources (myself, "App_Code/", "App_Code");
-#endif
-#if DOTNET
-			CopyResource (myself, "Web.config", "Web.config");
-#else
-			CopyResource (myself, "Web.mono.config", "Web.config");
-#endif
-#else
-			CopyResource (myself, "Web.mono.config.1.1", "Web.config");
-#endif
 			CopyResource (myself, "MyPage.aspx", "MyPage.aspx");
 			CopyResource (myself, "MyPage.aspx.cs", "MyPage.aspx.cs");
 			CopyResource (myself, "MyPageWithMaster.aspx", "MyPageWithMaster.aspx");
 			CopyResource (myself, "My.master", "My.master");
+
+			CopyResourcesLocal ();
 		}
+
+		static partial void CopyResourcesLocal ();
 #endif
 	}
 }
diff --git a/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/WebTestLocal.cs b/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/WebTestLocal.cs
new file mode 100644
index 0000000..a05f654
--- /dev/null
+++ b/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/WebTestLocal.cs
@@ -0,0 +1,27 @@
+using System;
+
+namespace MonoTests.SystemWeb.Framework
+{
+	public partial class WebTest
+	{
+		static partial void CopyResourcesLocal ()
+		{
+			Type myself = typeof (WebTest);
+#if NET_2_0
+			CopyPrefixedResources (myself, "App_GlobalResources/", "App_GlobalResources");
+			CopyPrefixedResources (myself, "App_Code/", "App_Code");
+#if DOTNET
+			CopyResource (myself, "Web.config", "Web.config");
+#else
+#if NET_4_0
+			CopyResource (myself, "Web.mono.config.4.0", "Web.config");
+#else
+			CopyResource (myself, "Web.mono.config", "Web.config");
+#endif
+#endif
+#else
+			CopyResource (myself, "Web.mono.config.1.1", "Web.config");
+#endif
+		}
+	}
+}
diff --git a/mcs/class/System.Web/Test/mainsoft/NunitWebResources/BoundField_Bug646505.aspx b/mcs/class/System.Web/Test/mainsoft/NunitWebResources/BoundField_Bug646505.aspx
new file mode 100644
index 0000000..f827504
--- /dev/null
+++ b/mcs/class/System.Web/Test/mainsoft/NunitWebResources/BoundField_Bug646505.aspx
@@ -0,0 +1,21 @@
+<%@ Page Language="C#" AutoEventWireup="true" CodeFile="BoundField_Bug646505.aspx.cs" Inherits="MonoBoundFieldCompatibilityIssue._Default" %>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head runat="server">
+    <title></title>
+</head>
+<body>
+    <form id="form1" runat="server">
+    <div>
+        <%= MonoTests.stand_alone.WebHarness.HtmlDiff.BEGIN_TAG %><asp:GridView runat="server" ID="gridView" 
+            OnInit="OnGridViewInit" 
+            AutoGenerateColumns="False"
+            AutoGenerateEditButton="True"
+            OnRowUpdating="OnGridViewEditCancelling"
+            OnRowCancelingEdit="OnGridViewEditCancelling" 
+            OnRowEditing="OnGridViewRowEditing" /><%= MonoTests.stand_alone.WebHarness.HtmlDiff.END_TAG %>
+    </div>
+    </form>
+</body>
+</html>
diff --git a/mcs/class/System.Web/Test/mainsoft/NunitWebResources/BoundField_Bug646505.aspx.cs b/mcs/class/System.Web/Test/mainsoft/NunitWebResources/BoundField_Bug646505.aspx.cs
new file mode 100644
index 0000000..95a8bfc
--- /dev/null
+++ b/mcs/class/System.Web/Test/mainsoft/NunitWebResources/BoundField_Bug646505.aspx.cs
@@ -0,0 +1,59 @@
+using System;
+using System.Web.UI.WebControls;
+
+namespace MonoBoundFieldCompatibilityIssue
+{
+	public partial class _Default : System.Web.UI.Page
+	{
+		#region [ -- Custom Column Definition -- ]
+
+		/// <summary>
+		/// Custom Column for the GridView
+		/// </summary>
+		class CustomColumn : BoundField
+		{
+			protected override void InitializeDataCell (DataControlFieldCell cell, DataControlRowState rowState)
+			{
+				if ((rowState & DataControlRowState.Edit) != DataControlRowState.Normal) {
+					TextBox textBox = new TextBox ();
+					cell.Controls.Add (textBox);
+					textBox.DataBinding += OnDataBindField;
+				} else
+					base.InitializeDataCell (cell, rowState);
+			}
+		}
+
+		#endregion
+
+		protected void Page_Load (object sender, EventArgs e)
+		{
+			if (IsPostBack) return;
+			BindGridView ();
+		}
+
+		protected void OnGridViewInit (object sender, EventArgs e)
+		{
+			CustomColumn column = new CustomColumn (); 
+			column.DataField = BoundField.ThisExpression;
+			gridView.Columns.Add (column);
+		}
+
+		protected void OnGridViewRowEditing (object sender, GridViewEditEventArgs e)
+		{
+			gridView.EditIndex = e.NewEditIndex;
+			BindGridView ();
+		}
+
+		protected void OnGridViewEditCancelling (object sender, EventArgs e)
+		{
+			gridView.EditIndex = -1;
+			BindGridView ();
+		}
+
+		private void BindGridView ()
+		{
+			gridView.DataSource = new bool [2];
+			gridView.DataBind ();
+		}
+	}
+}
\ No newline at end of file
diff --git a/mcs/class/System.Web/Test/mainsoft/NunitWebResources/HtmlTitleCodeRender_Bug662918.aspx b/mcs/class/System.Web/Test/mainsoft/NunitWebResources/HtmlTitleCodeRender_Bug662918.aspx
new file mode 100644
index 0000000..329e5b0
--- /dev/null
+++ b/mcs/class/System.Web/Test/mainsoft/NunitWebResources/HtmlTitleCodeRender_Bug662918.aspx
@@ -0,0 +1,8 @@
+<%@ Page Language="C#" AutoEventWireup="true" CodeFile="MyPage.aspx.cs" Inherits="MyPage" %>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<%= MonoTests.stand_alone.WebHarness.HtmlDiff.BEGIN_TAG %><head runat="server"><% this.Title = "Title text"; %></head><%= MonoTests.stand_alone.WebHarness.HtmlDiff.END_TAG %>
+<body>
+Hello
+</body>
+</html>
diff --git a/mcs/class/System.Web/Test/mainsoft/NunitWebResources/StateFormatter_CollectionConverter.aspx b/mcs/class/System.Web/Test/mainsoft/NunitWebResources/StateFormatter_CollectionConverter.aspx
index 22f5452..ff5425e 100644
--- a/mcs/class/System.Web/Test/mainsoft/NunitWebResources/StateFormatter_CollectionConverter.aspx
+++ b/mcs/class/System.Web/Test/mainsoft/NunitWebResources/StateFormatter_CollectionConverter.aspx
@@ -1,4 +1,4 @@
-<%@ Page Language="C#" AutoEventWireup="true" CodeFile="StateFormatter_CollectionConverter.aspx.cs" Inherits="Sections_ECCN_test" Title="ECCN Finder" %>
+<%@ Page Language="C#" AutoEventWireup="true" CodeFile="StateFormatter_CollectionConverter.aspx.cs" Culture="en-US" UICulture="en-US" Inherits="Sections_ECCN_test" Title="ECCN Finder" %>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" >
 <head id="Head1" runat="server"></head>
diff --git a/mcs/class/System.Web/Test/standalone-runner-support/Helpers.cs b/mcs/class/System.Web/Test/standalone-runner-support/Helpers.cs
index 40391a5..b4003c4 100644
--- a/mcs/class/System.Web/Test/standalone-runner-support/Helpers.cs
+++ b/mcs/class/System.Web/Test/standalone-runner-support/Helpers.cs
@@ -28,6 +28,7 @@
 using System;
 using System.Collections.Generic;
 using System.Text;
+using System.Text.RegularExpressions;
 using System.Web;
 using System.Web.Hosting;
 
@@ -61,24 +62,9 @@ namespace StandAloneRunnerSupport
 		{
 			if (String.IsNullOrEmpty (origHtml))
 				return origHtml;
-			
-			// Naive approach, enough for now
-			int idx = origHtml.IndexOf (delimiter + "/WebResource.axd");
-			if (idx == -1)
-				return origHtml;
 
-			var sb = new StringBuilder ();
-			sb.Append (origHtml.Substring (0, idx));
-			sb.Append (delimiter);
-			idx++;
-			int idx2 = origHtml.IndexOf (delimiter, idx);
-			string webRes;
-			sb.Append ("/WebResource.axd");
-			
-			if (idx2 > -1)
-				sb.Append (origHtml.Substring (idx2));
-
-			return sb.ToString ();
+			// Naive approach, enough for now
+			return new Regex (delimiter + "/WebResource\\.axd.*?" + delimiter).Replace (origHtml, delimiter + "/WebResource.axd" + delimiter);
 		}
 
 		public static bool HasException (string html, Type exceptionType)
diff --git a/mcs/class/System.Web/Test/standalone-runner-support/StandaloneTest.cs b/mcs/class/System.Web/Test/standalone-runner-support/StandaloneTest.cs
index 37183fe..f880275 100644
--- a/mcs/class/System.Web/Test/standalone-runner-support/StandaloneTest.cs
+++ b/mcs/class/System.Web/Test/standalone-runner-support/StandaloneTest.cs
@@ -101,11 +101,11 @@ namespace StandAloneRunnerSupport
 			Info = info;
 		}
 
-		public void Run (ApplicationManager appMan)
+		public void Run (ApplicationManager appMan, bool verbose)
 		{
 			try {
 				Success = true;
-				RunInternal (appMan);
+				RunInternal (appMan, verbose);
 			} catch (TestCaseFailureException ex) {
 				Exception = ex;
 				Success = false;
@@ -116,7 +116,7 @@ namespace StandAloneRunnerSupport
 			}
 		}
 		
-		void RunInternal (ApplicationManager appMan)
+		void RunInternal (ApplicationManager appMan, bool verbose)
 		{
 			ITestCase test = Activator.CreateInstance (TestType) as ITestCase;
 			var runItems = new List <TestRunItem> ();			
@@ -138,10 +138,15 @@ namespace StandAloneRunnerSupport
 			
 			try {
 				Console.Write ('[');
+				if (verbose)
+					Console.WriteLine ("{0} ({1}: {2})]", TestType, Info.Name, Info.Description);
 				foreach (var tri in runItems) {
 					if (tri == null)
 						continue;
 
+					if (verbose)
+						Console.Write ("\t{0} ({1}) ", tri.Callback != null ? tri.Callback.Method.ToString () : "<null>", 
+							       !String.IsNullOrEmpty (tri.UrlDescription) ? tri.UrlDescription : tri.Url);
 					runner = null;
 					response = null;
 					try {
@@ -168,7 +173,7 @@ namespace StandAloneRunnerSupport
 
 						if (tri.Callback != null)
 							tri.Callback (response.Body, tri);
-						
+
 						Console.Write ('.');
 					} catch (Exception) {
 						FailedUrl = tri.Url;
@@ -192,7 +197,10 @@ namespace StandAloneRunnerSupport
 			} catch (AssertionException ex) {
 				throw new TestCaseFailureException ("Assertion failed.", ex.Message, ex);
 			} finally {
-				Console.Write (']');
+				if (verbose)
+					Console.WriteLine ();
+				else
+					Console.Write (']');
 			}
 		}
 
diff --git a/mcs/class/System.Web/Test/standalone-tests/EnableFormsAuthentication.cs b/mcs/class/System.Web/Test/standalone-tests/EnableFormsAuthentication.cs
new file mode 100644
index 0000000..ed62e88
--- /dev/null
+++ b/mcs/class/System.Web/Test/standalone-tests/EnableFormsAuthentication.cs
@@ -0,0 +1,323 @@
+//
+// Authors:
+//   Marek Habersack (mhabersack at novell.com)
+//
+// (C) 2010 Novell, Inc http://novell.com/
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+#if NET_4_0
+using System;
+using System.Collections.Generic;
+using System.Configuration;
+using System.Configuration.Provider;
+using System.IO;
+using System.Web;
+using System.Web.Hosting;
+
+using StandAloneRunnerSupport;
+using StandAloneTests;
+
+using NUnit.Framework;
+
+namespace StandAloneTests.EnableFormsAuthentication
+{
+	[TestCase ("EnableFormsAuthentication 01", "Check if null is accepted as the parameter")]
+	public sealed class EnableFormsAuthentication_01 : ITestCase
+	{
+		public string PhysicalPath {
+			get {
+				return Path.Combine (
+					Consts.BasePhysicalDir,
+					"EnableFormsAuthentication",
+					"Test_01"
+				);
+			}
+		}
+		
+		public string VirtualPath  {
+			get { return "/"; }
+		}
+
+		public bool SetUp (List <TestRunItem> runItems)
+		{
+			runItems.Add (new TestRunItem ("/default.aspx", Default_Aspx));
+			
+			return true;
+		}
+
+		void Default_Aspx (string result, TestRunItem runItem)
+		{
+			string originalHtml = @"<div>Default URL: /default.aspx<br />Login URL: /login.aspx</div>";
+			Helpers.ExtractAndCompareCodeFromHtml (result, originalHtml, "#A1");
+		}
+	}
+
+	[TestCase ("EnableFormsAuthentication 02", "Check if an empty collection is accepted as the parameter")]
+	public sealed class EnableFormsAuthentication_02 : ITestCase
+	{
+		public string PhysicalPath {
+			get {
+				return Path.Combine (
+					Consts.BasePhysicalDir,
+					"EnableFormsAuthentication",
+					"Test_02"
+				);
+			}
+		}
+		
+		public string VirtualPath  {
+			get { return "/"; }
+		}
+
+		public bool SetUp (List <TestRunItem> runItems)
+		{
+			runItems.Add (new TestRunItem ("/default.aspx", Default_Aspx));
+			
+			return true;
+		}
+
+		void Default_Aspx (string result, TestRunItem runItem)
+		{
+			string originalHtml = @"<div>Default URL: /default.aspx<br />Login URL: /login.aspx</div>";
+			Helpers.ExtractAndCompareCodeFromHtml (result, originalHtml, "#A1");
+		}
+	}
+
+	[TestCase ("EnableFormsAuthentication 03", "Sets both documented properties.")]
+	public sealed class EnableFormsAuthentication_03 : ITestCase
+	{
+		public string PhysicalPath {
+			get {
+				return Path.Combine (
+					Consts.BasePhysicalDir,
+					"EnableFormsAuthentication",
+					"Test_03"
+				);
+			}
+		}
+		
+		public string VirtualPath  {
+			get { return "/"; }
+		}
+
+		public bool SetUp (List <TestRunItem> runItems)
+		{
+			runItems.Add (new TestRunItem ("/default.aspx", Default_Aspx));
+			
+			return true;
+		}
+
+		void Default_Aspx (string result, TestRunItem runItem)
+		{
+			string originalHtml = @"<div>Default URL: /myDefault.aspx<br />Login URL: /myLogin.aspx</div>";
+			Helpers.ExtractAndCompareCodeFromHtml (result, originalHtml, "#A1");
+		}
+	}
+
+	[TestCase ("EnableFormsAuthentication 04", "Checks whether empty strings are accepted as config items value")]
+	public sealed class EnableFormsAuthentication_04 : ITestCase
+	{
+		public string PhysicalPath {
+			get {
+				return Path.Combine (
+					Consts.BasePhysicalDir,
+					"EnableFormsAuthentication",
+					"Test_04"
+				);
+			}
+		}
+		
+		public string VirtualPath  {
+			get { return "/"; }
+		}
+
+		public bool SetUp (List <TestRunItem> runItems)
+		{
+			runItems.Add (new TestRunItem ("/default.aspx", Default_Aspx));
+			
+			return true;
+		}
+
+		void Default_Aspx (string result, TestRunItem runItem)
+		{
+			string originalHtml = @"<div>Default URL: /default.aspx<br />Login URL: /login.aspx</div>";
+			Helpers.ExtractAndCompareCodeFromHtml (result, originalHtml, "#A1");
+		}
+	}
+
+	[TestCase ("EnableFormsAuthentication 05", "Checks whether null is accepted as config items value")]
+	public sealed class EnableFormsAuthentication_05 : ITestCase
+	{
+		public string PhysicalPath {
+			get {
+				return Path.Combine (
+					Consts.BasePhysicalDir,
+					"EnableFormsAuthentication",
+					"Test_05"
+				);
+			}
+		}
+		
+		public string VirtualPath  {
+			get { return "/"; }
+		}
+
+		public bool SetUp (List <TestRunItem> runItems)
+		{
+			runItems.Add (new TestRunItem ("/default.aspx", Default_Aspx));
+			
+			return true;
+		}
+
+		void Default_Aspx (string result, TestRunItem runItem)
+		{
+			string originalHtml = @"<div>Default URL: /default.aspx<br />Login URL: /login.aspx</div>";
+			Helpers.ExtractAndCompareCodeFromHtml (result, originalHtml, "#A1");
+		}
+	}
+
+	[TestCase ("EnableFormsAuthentication 06", "Checks whether config item names are case-sensitive.")]
+	public sealed class EnableFormsAuthentication_06 : ITestCase
+	{
+		public string PhysicalPath {
+			get {
+				return Path.Combine (
+					Consts.BasePhysicalDir,
+					"EnableFormsAuthentication",
+					"Test_06"
+				);
+			}
+		}
+		
+		public string VirtualPath  {
+			get { return "/"; }
+		}
+
+		public bool SetUp (List <TestRunItem> runItems)
+		{
+			runItems.Add (new TestRunItem ("/default.aspx", Default_Aspx));
+			
+			return true;
+		}
+
+		void Default_Aspx (string result, TestRunItem runItem)
+		{
+			string originalHtml = @"<div>Default URL: /myDefault.aspx<br />Login URL: /myLogin.aspx</div>";
+			Helpers.ExtractAndCompareCodeFromHtml (result, originalHtml, "#A1");
+		}
+	}
+
+	[TestCase ("EnableFormsAuthentication 07", "Checks if only loginUrl and defaultUrl are set with this method.")]
+	public sealed class EnableFormsAuthentication_07 : ITestCase
+	{
+		public string PhysicalPath {
+			get {
+				return Path.Combine (
+					Consts.BasePhysicalDir,
+					"EnableFormsAuthentication",
+					"Test_07"
+				);
+			}
+		}
+		
+		public string VirtualPath  {
+			get { return "/"; }
+		}
+
+		public bool SetUp (List <TestRunItem> runItems)
+		{
+			runItems.Add (new TestRunItem ("/default.aspx", Default_Aspx));
+			
+			return true;
+		}
+
+		void Default_Aspx (string result, TestRunItem runItem)
+		{
+			string originalHtml = @"<div>Default URL: /myDefault.aspx<br />Login URL: /myLogin.aspx<br />Cookie domain: </div>";
+			Helpers.ExtractAndCompareCodeFromHtml (result, originalHtml, "#A1");
+		}
+	}
+
+	[TestCase ("EnableFormsAuthentication 08", "Checks whether multiple calls to the method are possible and that the last values passed take precedence.")]
+	public sealed class EnableFormsAuthentication_08 : ITestCase
+	{
+		public string PhysicalPath {
+			get {
+				return Path.Combine (
+					Consts.BasePhysicalDir,
+					"EnableFormsAuthentication",
+					"Test_08"
+				);
+			}
+		}
+		
+		public string VirtualPath  {
+			get { return "/"; }
+		}
+
+		public bool SetUp (List <TestRunItem> runItems)
+		{
+			runItems.Add (new TestRunItem ("/default.aspx", Default_Aspx));
+			
+			return true;
+		}
+
+		void Default_Aspx (string result, TestRunItem runItem)
+		{
+			string originalHtml = @"<div>Default URL: /myOtherDefault.aspx<br />Login URL: /myOtherLogin.aspx<br />Cookie domain: </div>";
+			Helpers.ExtractAndCompareCodeFromHtml (result, originalHtml, "#A1");
+		}
+	}
+
+	[TestCase ("EnableFormsAuthentication 09", "Check whether values passed to the method take precedence over those in web.config")]
+	public sealed class EnableFormsAuthentication_09 : ITestCase
+	{
+		public string PhysicalPath {
+			get {
+				return Path.Combine (
+					Consts.BasePhysicalDir,
+					"EnableFormsAuthentication",
+					"Test_09"
+				);
+			}
+		}
+		
+		public string VirtualPath  {
+			get { return "/"; }
+		}
+
+		public bool SetUp (List <TestRunItem> runItems)
+		{
+			runItems.Add (new TestRunItem ("/default.aspx", Default_Aspx));
+			
+			return true;
+		}
+
+		void Default_Aspx (string result, TestRunItem runItem)
+		{
+			string originalHtml = @"<div>Default URL: /myDefault.aspx<br />Login URL: /myLogin.aspx<br />Cookie domain: </div>";
+			Helpers.ExtractAndCompareCodeFromHtml (result, originalHtml, "#A1");
+		}
+	}
+}
+#endif
\ No newline at end of file
diff --git a/mcs/class/System.Web/Test/standalone-tests/Menu_4.0_List.cs b/mcs/class/System.Web/Test/standalone-tests/Menu_4.0_List.cs
new file mode 100644
index 0000000..cd0ef6a
--- /dev/null
+++ b/mcs/class/System.Web/Test/standalone-tests/Menu_4.0_List.cs
@@ -0,0 +1,65 @@
+//
+// Authors:
+//   Marek Habersack (mhabersack at novell.com)
+//
+// (C) 2010 Novell, Inc http://novell.com/
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+#if NET_4_0
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Web.Util;
+
+using StandAloneRunnerSupport;
+using StandAloneTests;
+
+using NUnit.Framework;
+
+namespace StandAloneTests.Menu_40_List
+{
+	[TestCase ("Menu_40_List", "Menu control List rendering mode for 4.0", Disabled=true)]
+	public sealed class Test_01 : ITestCase
+	{
+		public string PhysicalPath {
+			get { return Path.Combine (Consts.BasePhysicalDir, "Menu_4.0_List"); }
+		}
+		
+		public string VirtualPath  {
+			get { return "/"; }
+		}
+
+		public bool SetUp (List <TestRunItem> runItems)
+		{
+			runItems.Add (new TestRunItem ("test_01.aspx", Test_01_Aspx));
+			return true;
+		}
+		
+		void Test_01_Aspx (string result, TestRunItem runItem)
+		{
+			string originalHtml = "<a href=\"#MyMenu1_SkipLink\"><img alt=\"Skip Navigation Links\" src=\"/WebResource.axd\" width=\"0\" height=\"0\" style=\"border-width:0px;\" /></a><div id=\"MyMenu1\">\r\n\t<ul class=\"level1\">\r\n\t\t<li><a title=\"Root description\" class=\"popout level1\" href=\"./\">Root</a><ul class=\"level2\">\r\n\t\t\t<li><a title=\"Mono Project Home Page\" class=\"popout level2\" href=\"http://mono-project.com/\">Mono</a><ul class=\"level3\">\r\n\t\t\t\t<li><a title=\"How to report Mono bugs\" class=\"popout level3\" href=\"http://mono-project.com/Bugs\">Mono Bugs</a><ul class=\"level4\">\r\n\t\t\t\t\t<li><a title=\"Includes Mono bugs interface\" class=\"level4\" href=\"http://bugzilla.novell.com\">Novell Bugzilla</a></li>\r\n\t\t\t\t</ul></li>\r\n\t\t\t</ul></li><li><a title=\"Main page of the Google search engine\" class=\"popout level2\" href=\"http://google.com\">Google</a><ul class=\"level3\">\r\n\t\t\t\t<li><a title=\"Google language translation interface\" class=\"level3\" href=\"http://translate.google.com\">Translator</a></li><li><a title=\"Google code search engine\" class=\"level3\" href=\"http://google.com/codesearch\">Code Search</a></li>\r\n\t\t\t</ul></li>\r\n\t\t</ul></li>\r\n\t</ul>\r\n</div><a id=\"MyMenu1_SkipLink\"></a>";
+			Helpers.ExtractAndCompareCodeFromHtml (Helpers.StripWebResourceAxdQuery (result), originalHtml, "#A1");
+		}
+	}
+}
+#endif
diff --git a/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_01/Makefile b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_01/Makefile
new file mode 100644
index 0000000..17464eb
--- /dev/null
+++ b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_01/Makefile
@@ -0,0 +1,31 @@
+TESTNUM=01
+thisdir = class/System.Web/Test/standalone/EnableFormsAuthentication/Test_$(TESTNUM)
+include ../../../../../../build/rules.make
+
+APPLICATION_ASSEMBLY = bin/EnableFormsAuthentication_Test_$(TESTNUM).dll
+
+APPLICATION_ASSEMBLY_SOURCES = \
+	Properties/AssemblyInfo.cs \
+	Tests/PreStart.cs
+
+APPLICATION_ASSEMBLY_MCS_FLAGS = \
+	-debug:full \
+	-r:System.Web.dll
+
+VALID_PROFILE := $(filter 4.0, $(FRAMEWORK_VERSION))
+
+ifndef VALID_PROFILE
+all:
+else
+all: $(APPLICATION_ASSEMBLY)
+
+$(APPLICATION_ASSEMBLY): bin/.stamp $(APPLICATION_ASSEMBLY_SOURCES)
+	$(CSCOMPILE) $(APPLICATION_ASSEMBLY_MCS_FLAGS) $(APPLICATION_ASSEMBLY_SOURCES) -target:library -out:$(APPLICATION_ASSEMBLY)
+
+bin/.stamp:
+	install -d -m 755 bin/
+	touch bin/.stamp
+endif
+
+clean:
+	rm -rf bin/
diff --git a/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_01/Properties/AssemblyInfo.cs b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_01/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..0d33d2a
--- /dev/null
+++ b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_01/Properties/AssemblyInfo.cs
@@ -0,0 +1,38 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using System.Web;
+
+[assembly: PreApplicationStartMethod (typeof (Test_01.Tests.PreStart), "FormsAuthenticationSetUp")]
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle ("Test_01")]
+[assembly: AssemblyDescription ("")]
+[assembly: AssemblyConfiguration ("")]
+[assembly: AssemblyCompany ("")]
+[assembly: AssemblyProduct ("Test_01")]
+[assembly: AssemblyCopyright ("Copyright ©  2010")]
+[assembly: AssemblyTrademark ("")]
+[assembly: AssemblyCulture ("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible (false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid ("4887e1f7-a77c-4569-b29f-e87dbc7b0d45")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Revision and Build Numbers 
+// by using the '*' as shown below:
+[assembly: AssemblyVersion ("1.0.0.0")]
+[assembly: AssemblyFileVersion ("1.0.0.0")]
diff --git a/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_01/Tests/PreStart.cs b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_01/Tests/PreStart.cs
new file mode 100644
index 0000000..d17684c
--- /dev/null
+++ b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_01/Tests/PreStart.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Web;
+using System.Web.Security;
+
+namespace Test_01.Tests
+{
+	public class PreStart
+	{
+		public static void FormsAuthenticationSetUp ()
+		{
+			FormsAuthentication.EnableFormsAuthentication (null);
+		}
+	}
+}
\ No newline at end of file
diff --git a/mcs/class/System.Web/Test/standalone/RegisterBuildProvider/Web.config b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_01/Web.config
similarity index 100%
copy from mcs/class/System.Web/Test/standalone/RegisterBuildProvider/Web.config
copy to mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_01/Web.config
diff --git a/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_01/default.aspx b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_01/default.aspx
new file mode 100644
index 0000000..fa9f3eb
--- /dev/null
+++ b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_01/default.aspx
@@ -0,0 +1,14 @@
+<%@ Page Language="C#" AutoEventWireup="true" %>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head runat="server">
+    <title>Test 01</title>
+</head>
+<body>
+    <form id="form1" runat="server">
+    <%= AppDomain.CurrentDomain.GetData ("BEGIN_CODE_MARKER") %><div>Default URL: <%= FormsAuthentication.DefaultUrl %><br />Login URL: <%= FormsAuthentication.LoginUrl %></div><%= AppDomain.CurrentDomain.GetData ("END_CODE_MARKER") %>
+    </form>
+</body>
+</html>
diff --git a/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_02/Makefile b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_02/Makefile
new file mode 100644
index 0000000..5ebdf8d
--- /dev/null
+++ b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_02/Makefile
@@ -0,0 +1,31 @@
+TESTNUM=02
+thisdir = class/System.Web/Test/standalone/EnableFormsAuthentication/Test_$(TESTNUM)
+include ../../../../../../build/rules.make
+
+APPLICATION_ASSEMBLY = bin/EnableFormsAuthentication_Test_$(TESTNUM).dll
+
+APPLICATION_ASSEMBLY_SOURCES = \
+	Properties/AssemblyInfo.cs \
+	Tests/PreStart.cs
+
+APPLICATION_ASSEMBLY_MCS_FLAGS = \
+	-debug:full \
+	-r:System.Web.dll
+
+VALID_PROFILE := $(filter 4.0, $(FRAMEWORK_VERSION))
+
+ifndef VALID_PROFILE
+all:
+else
+all: $(APPLICATION_ASSEMBLY)
+
+$(APPLICATION_ASSEMBLY): bin/.stamp $(APPLICATION_ASSEMBLY_SOURCES)
+	$(CSCOMPILE) $(APPLICATION_ASSEMBLY_MCS_FLAGS) $(APPLICATION_ASSEMBLY_SOURCES) -target:library -out:$(APPLICATION_ASSEMBLY)
+
+bin/.stamp:
+	install -d -m 755 bin/
+	touch bin/.stamp
+endif
+
+clean:
+	rm -rf bin/
diff --git a/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_02/Properties/AssemblyInfo.cs b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_02/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..40b57a9
--- /dev/null
+++ b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_02/Properties/AssemblyInfo.cs
@@ -0,0 +1,38 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using System.Web;
+
+[assembly: PreApplicationStartMethod (typeof (Test_02.Tests.PreStart), "FormsAuthenticationSetUp")]
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle ("Test_02")]
+[assembly: AssemblyDescription ("")]
+[assembly: AssemblyConfiguration ("")]
+[assembly: AssemblyCompany ("")]
+[assembly: AssemblyProduct ("Test_02")]
+[assembly: AssemblyCopyright ("Copyright ©  2010")]
+[assembly: AssemblyTrademark ("")]
+[assembly: AssemblyCulture ("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible (false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid ("0dc2d49d-12b6-423c-98d5-c0c9095238a1")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Revision and Build Numbers 
+// by using the '*' as shown below:
+[assembly: AssemblyVersion ("1.0.0.0")]
+[assembly: AssemblyFileVersion ("1.0.0.0")]
diff --git a/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_02/Tests/PreStart.cs b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_02/Tests/PreStart.cs
new file mode 100644
index 0000000..9c0647e
--- /dev/null
+++ b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_02/Tests/PreStart.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Web;
+using System.Web.Security;
+using System.Collections.Specialized;
+
+namespace Test_02.Tests
+{
+	public class PreStart
+	{
+		public static void FormsAuthenticationSetUp ()
+		{
+			FormsAuthentication.EnableFormsAuthentication (new NameValueCollection ());
+		}
+	}
+}
\ No newline at end of file
diff --git a/mcs/class/System.Web/Test/standalone/RegisterBuildProvider/Web.config b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_02/Web.config
similarity index 100%
copy from mcs/class/System.Web/Test/standalone/RegisterBuildProvider/Web.config
copy to mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_02/Web.config
diff --git a/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_02/default.aspx b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_02/default.aspx
new file mode 100644
index 0000000..894652b
--- /dev/null
+++ b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_02/default.aspx
@@ -0,0 +1,14 @@
+<%@ Page Language="C#" AutoEventWireup="true" %>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head runat="server">
+    <title>Test 02</title>
+</head>
+<body>
+    <form id="form1" runat="server">
+    <%= AppDomain.CurrentDomain.GetData ("BEGIN_CODE_MARKER") %><div>Default URL: <%= FormsAuthentication.DefaultUrl %><br />Login URL: <%= FormsAuthentication.LoginUrl %></div><%= AppDomain.CurrentDomain.GetData ("END_CODE_MARKER") %>
+    </form>
+</body>
+</html>
diff --git a/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_03/Makefile b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_03/Makefile
new file mode 100644
index 0000000..a1c22ea
--- /dev/null
+++ b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_03/Makefile
@@ -0,0 +1,31 @@
+TESTNUM=03
+thisdir = class/System.Web/Test/standalone/EnableFormsAuthentication/Test_$(TESTNUM)
+include ../../../../../../build/rules.make
+
+APPLICATION_ASSEMBLY = bin/EnableFormsAuthentication_Test_$(TESTNUM).dll
+
+APPLICATION_ASSEMBLY_SOURCES = \
+	Properties/AssemblyInfo.cs \
+	Tests/PreStart.cs
+
+APPLICATION_ASSEMBLY_MCS_FLAGS = \
+	-debug:full \
+	-r:System.Web.dll
+
+VALID_PROFILE := $(filter 4.0, $(FRAMEWORK_VERSION))
+
+ifndef VALID_PROFILE
+all:
+else
+all: $(APPLICATION_ASSEMBLY)
+
+$(APPLICATION_ASSEMBLY): bin/.stamp $(APPLICATION_ASSEMBLY_SOURCES)
+	$(CSCOMPILE) $(APPLICATION_ASSEMBLY_MCS_FLAGS) $(APPLICATION_ASSEMBLY_SOURCES) -target:library -out:$(APPLICATION_ASSEMBLY)
+
+bin/.stamp:
+	install -d -m 755 bin/
+	touch bin/.stamp
+endif
+
+clean:
+	rm -rf bin/
diff --git a/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_03/Properties/AssemblyInfo.cs b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_03/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..678cf51
--- /dev/null
+++ b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_03/Properties/AssemblyInfo.cs
@@ -0,0 +1,38 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using System.Web;
+
+[assembly: PreApplicationStartMethod (typeof (Test_03.Tests.PreStart), "FormsAuthenticationSetUp")]
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle ("Test_03")]
+[assembly: AssemblyDescription ("")]
+[assembly: AssemblyConfiguration ("")]
+[assembly: AssemblyCompany ("")]
+[assembly: AssemblyProduct ("Test_03")]
+[assembly: AssemblyCopyright ("Copyright ©  2010")]
+[assembly: AssemblyTrademark ("")]
+[assembly: AssemblyCulture ("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible (false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid ("4a43e6d3-488d-40e7-9c60-fc25120b6b56")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Revision and Build Numbers 
+// by using the '*' as shown below:
+[assembly: AssemblyVersion ("1.0.0.0")]
+[assembly: AssemblyFileVersion ("1.0.0.0")]
diff --git a/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_03/Tests/PreStart.cs b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_03/Tests/PreStart.cs
new file mode 100644
index 0000000..5cf6347
--- /dev/null
+++ b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_03/Tests/PreStart.cs
@@ -0,0 +1,20 @@
+using System;
+using System.Web;
+using System.Web.Security;
+using System.Collections.Specialized;
+
+namespace Test_03.Tests
+{
+	public class PreStart
+	{
+		public static void FormsAuthenticationSetUp ()
+		{
+			var nvc = new NameValueCollection ();
+
+			nvc.Add ("loginUrl", "/myLogin.aspx");
+			nvc.Add ("defaultUrl", "/myDefault.aspx");
+
+			FormsAuthentication.EnableFormsAuthentication (nvc);
+		}
+	}
+}
\ No newline at end of file
diff --git a/mcs/class/System.Web/Test/standalone/RegisterBuildProvider/Web.config b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_03/Web.config
similarity index 100%
copy from mcs/class/System.Web/Test/standalone/RegisterBuildProvider/Web.config
copy to mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_03/Web.config
diff --git a/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_03/default.aspx b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_03/default.aspx
new file mode 100644
index 0000000..83ceb47
--- /dev/null
+++ b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_03/default.aspx
@@ -0,0 +1,14 @@
+<%@ Page Language="C#" AutoEventWireup="true" %>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head runat="server">
+    <title>Test 03</title>
+</head>
+<body>
+    <form id="form1" runat="server">
+    <%= AppDomain.CurrentDomain.GetData ("BEGIN_CODE_MARKER") %><div>Default URL: <%= FormsAuthentication.DefaultUrl %><br />Login URL: <%= FormsAuthentication.LoginUrl %></div><%= AppDomain.CurrentDomain.GetData ("END_CODE_MARKER") %>
+    </form>
+</body>
+</html>
diff --git a/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_04/Makefile b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_04/Makefile
new file mode 100644
index 0000000..ed1c11f
--- /dev/null
+++ b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_04/Makefile
@@ -0,0 +1,31 @@
+TESTNUM=04
+thisdir = class/System.Web/Test/standalone/EnableFormsAuthentication/Test_$(TESTNUM)
+include ../../../../../../build/rules.make
+
+APPLICATION_ASSEMBLY = bin/EnableFormsAuthentication_Test_$(TESTNUM).dll
+
+APPLICATION_ASSEMBLY_SOURCES = \
+	Properties/AssemblyInfo.cs \
+	Tests/PreStart.cs
+
+APPLICATION_ASSEMBLY_MCS_FLAGS = \
+	-debug:full \
+	-r:System.Web.dll
+
+VALID_PROFILE := $(filter 4.0, $(FRAMEWORK_VERSION))
+
+ifndef VALID_PROFILE
+all:
+else
+all: $(APPLICATION_ASSEMBLY)
+
+$(APPLICATION_ASSEMBLY): bin/.stamp $(APPLICATION_ASSEMBLY_SOURCES)
+	$(CSCOMPILE) $(APPLICATION_ASSEMBLY_MCS_FLAGS) $(APPLICATION_ASSEMBLY_SOURCES) -target:library -out:$(APPLICATION_ASSEMBLY)
+
+bin/.stamp:
+	install -d -m 755 bin/
+	touch bin/.stamp
+endif
+
+clean:
+	rm -rf bin/
diff --git a/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_04/Properties/AssemblyInfo.cs b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_04/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..fb0dda2
--- /dev/null
+++ b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_04/Properties/AssemblyInfo.cs
@@ -0,0 +1,38 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using System.Web;
+
+[assembly: PreApplicationStartMethod (typeof (Test_04.Tests.PreStart), "FormsAuthenticationSetUp")]
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle ("Test_04")]
+[assembly: AssemblyDescription ("")]
+[assembly: AssemblyConfiguration ("")]
+[assembly: AssemblyCompany ("")]
+[assembly: AssemblyProduct ("Test_04")]
+[assembly: AssemblyCopyright ("Copyright ©  2010")]
+[assembly: AssemblyTrademark ("")]
+[assembly: AssemblyCulture ("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible (false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid ("afba031c-91ac-4e82-9f7e-0b11f4d0d5da")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Revision and Build Numbers 
+// by using the '*' as shown below:
+[assembly: AssemblyVersion ("1.0.0.0")]
+[assembly: AssemblyFileVersion ("1.0.0.0")]
diff --git a/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_04/Tests/PreStart.cs b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_04/Tests/PreStart.cs
new file mode 100644
index 0000000..958194c
--- /dev/null
+++ b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_04/Tests/PreStart.cs
@@ -0,0 +1,20 @@
+using System;
+using System.Web;
+using System.Web.Security;
+using System.Collections.Specialized;
+
+namespace Test_04.Tests
+{
+	public class PreStart
+	{
+		public static void FormsAuthenticationSetUp ()
+		{
+			var nvc = new NameValueCollection ();
+
+			nvc.Add ("loginUrl", String.Empty);
+			nvc.Add ("defaultUrl", String.Empty);
+
+			FormsAuthentication.EnableFormsAuthentication (nvc);
+		}
+	}
+}
\ No newline at end of file
diff --git a/mcs/class/System.Web/Test/standalone/RegisterBuildProvider/Web.config b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_04/Web.config
similarity index 100%
copy from mcs/class/System.Web/Test/standalone/RegisterBuildProvider/Web.config
copy to mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_04/Web.config
diff --git a/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_04/default.aspx b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_04/default.aspx
new file mode 100644
index 0000000..14a0626
--- /dev/null
+++ b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_04/default.aspx
@@ -0,0 +1,14 @@
+<%@ Page Language="C#" AutoEventWireup="true" %>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head runat="server">
+    <title>Test 04</title>
+</head>
+<body>
+    <form id="form1" runat="server">
+    <%= AppDomain.CurrentDomain.GetData ("BEGIN_CODE_MARKER") %><div>Default URL: <%= FormsAuthentication.DefaultUrl %><br />Login URL: <%= FormsAuthentication.LoginUrl %></div><%= AppDomain.CurrentDomain.GetData ("END_CODE_MARKER") %>
+    </form>
+</body>
+</html>
diff --git a/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_05/Makefile b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_05/Makefile
new file mode 100644
index 0000000..1c62f87
--- /dev/null
+++ b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_05/Makefile
@@ -0,0 +1,31 @@
+TESTNUM=05
+thisdir = class/System.Web/Test/standalone/EnableFormsAuthentication/Test_$(TESTNUM)
+include ../../../../../../build/rules.make
+
+APPLICATION_ASSEMBLY = bin/EnableFormsAuthentication_Test_$(TESTNUM).dll
+
+APPLICATION_ASSEMBLY_SOURCES = \
+	Properties/AssemblyInfo.cs \
+	Tests/PreStart.cs
+
+APPLICATION_ASSEMBLY_MCS_FLAGS = \
+	-debug:full \
+	-r:System.Web.dll
+
+VALID_PROFILE := $(filter 4.0, $(FRAMEWORK_VERSION))
+
+ifndef VALID_PROFILE
+all:
+else
+all: $(APPLICATION_ASSEMBLY)
+
+$(APPLICATION_ASSEMBLY): bin/.stamp $(APPLICATION_ASSEMBLY_SOURCES)
+	$(CSCOMPILE) $(APPLICATION_ASSEMBLY_MCS_FLAGS) $(APPLICATION_ASSEMBLY_SOURCES) -target:library -out:$(APPLICATION_ASSEMBLY)
+
+bin/.stamp:
+	install -d -m 755 bin/
+	touch bin/.stamp
+endif
+
+clean:
+	rm -rf bin/
diff --git a/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_05/Properties/AssemblyInfo.cs b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_05/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..1a88d38
--- /dev/null
+++ b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_05/Properties/AssemblyInfo.cs
@@ -0,0 +1,38 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using System.Web;
+
+[assembly: PreApplicationStartMethod (typeof (Test_05.Tests.PreStart), "FormsAuthenticationSetUp")]
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle ("Test_05")]
+[assembly: AssemblyDescription ("")]
+[assembly: AssemblyConfiguration ("")]
+[assembly: AssemblyCompany ("")]
+[assembly: AssemblyProduct ("Test_05")]
+[assembly: AssemblyCopyright ("Copyright ©  2010")]
+[assembly: AssemblyTrademark ("")]
+[assembly: AssemblyCulture ("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible (false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid ("3ac444a6-3f13-4f78-812f-9bf45754e0a8")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Revision and Build Numbers 
+// by using the '*' as shown below:
+[assembly: AssemblyVersion ("1.0.0.0")]
+[assembly: AssemblyFileVersion ("1.0.0.0")]
diff --git a/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_05/Tests/PreStart.cs b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_05/Tests/PreStart.cs
new file mode 100644
index 0000000..1923862
--- /dev/null
+++ b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_05/Tests/PreStart.cs
@@ -0,0 +1,20 @@
+using System;
+using System.Web;
+using System.Web.Security;
+using System.Collections.Specialized;
+
+namespace Test_05.Tests
+{
+	public class PreStart
+	{
+		public static void FormsAuthenticationSetUp ()
+		{
+			var nvc = new NameValueCollection ();
+
+			nvc.Add ("loginUrl", null);
+			nvc.Add ("defaultUrl", null);
+
+			FormsAuthentication.EnableFormsAuthentication (nvc);
+		}
+	}
+}
\ No newline at end of file
diff --git a/mcs/class/System.Web/Test/standalone/RegisterBuildProvider/Web.config b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_05/Web.config
similarity index 100%
copy from mcs/class/System.Web/Test/standalone/RegisterBuildProvider/Web.config
copy to mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_05/Web.config
diff --git a/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_05/default.aspx b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_05/default.aspx
new file mode 100644
index 0000000..d661191
--- /dev/null
+++ b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_05/default.aspx
@@ -0,0 +1,14 @@
+<%@ Page Language="C#" AutoEventWireup="true" %>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head runat="server">
+    <title>Test 05</title>
+</head>
+<body>
+    <form id="form1" runat="server">
+    <%= AppDomain.CurrentDomain.GetData ("BEGIN_CODE_MARKER") %><div>Default URL: <%= FormsAuthentication.DefaultUrl %><br />Login URL: <%= FormsAuthentication.LoginUrl %></div><%= AppDomain.CurrentDomain.GetData ("END_CODE_MARKER") %>
+    </form>
+</body>
+</html>
diff --git a/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_06/Makefile b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_06/Makefile
new file mode 100644
index 0000000..0b88be3
--- /dev/null
+++ b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_06/Makefile
@@ -0,0 +1,31 @@
+TESTNUM=06
+thisdir = class/System.Web/Test/standalone/EnableFormsAuthentication/Test_$(TESTNUM)
+include ../../../../../../build/rules.make
+
+APPLICATION_ASSEMBLY = bin/EnableFormsAuthentication_Test_$(TESTNUM).dll
+
+APPLICATION_ASSEMBLY_SOURCES = \
+	Properties/AssemblyInfo.cs \
+	Tests/PreStart.cs
+
+APPLICATION_ASSEMBLY_MCS_FLAGS = \
+	-debug:full \
+	-r:System.Web.dll
+
+VALID_PROFILE := $(filter 4.0, $(FRAMEWORK_VERSION))
+
+ifndef VALID_PROFILE
+all:
+else
+all: $(APPLICATION_ASSEMBLY)
+
+$(APPLICATION_ASSEMBLY): bin/.stamp $(APPLICATION_ASSEMBLY_SOURCES)
+	$(CSCOMPILE) $(APPLICATION_ASSEMBLY_MCS_FLAGS) $(APPLICATION_ASSEMBLY_SOURCES) -target:library -out:$(APPLICATION_ASSEMBLY)
+
+bin/.stamp:
+	install -d -m 755 bin/
+	touch bin/.stamp
+endif
+
+clean:
+	rm -rf bin/
diff --git a/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_06/Properties/AssemblyInfo.cs b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_06/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..50814bb
--- /dev/null
+++ b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_06/Properties/AssemblyInfo.cs
@@ -0,0 +1,38 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using System.Web;
+
+[assembly: PreApplicationStartMethod (typeof (Test_06.Tests.PreStart), "FormsAuthenticationSetUp")]
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle ("Test_06")]
+[assembly: AssemblyDescription ("")]
+[assembly: AssemblyConfiguration ("")]
+[assembly: AssemblyCompany ("")]
+[assembly: AssemblyProduct ("Test_06")]
+[assembly: AssemblyCopyright ("Copyright ©  2010")]
+[assembly: AssemblyTrademark ("")]
+[assembly: AssemblyCulture ("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible (false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid ("2ea3e1bb-4b24-486d-a58f-cc667e50e6a0")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Revision and Build Numbers 
+// by using the '*' as shown below:
+[assembly: AssemblyVersion ("1.0.0.0")]
+[assembly: AssemblyFileVersion ("1.0.0.0")]
diff --git a/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_06/Tests/PreStart.cs b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_06/Tests/PreStart.cs
new file mode 100644
index 0000000..7606496
--- /dev/null
+++ b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_06/Tests/PreStart.cs
@@ -0,0 +1,20 @@
+using System;
+using System.Web;
+using System.Web.Security;
+using System.Collections.Specialized;
+
+namespace Test_06.Tests
+{
+	public class PreStart
+	{
+		public static void FormsAuthenticationSetUp ()
+		{
+			var nvc = new NameValueCollection ();
+
+			nvc.Add ("LoginURL", "/myLogin.aspx");
+			nvc.Add ("DefaultURL", "/myDefault.aspx");
+
+			FormsAuthentication.EnableFormsAuthentication (nvc);
+		}
+	}
+}
\ No newline at end of file
diff --git a/mcs/class/System.Web/Test/standalone/RegisterBuildProvider/Web.config b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_06/Web.config
similarity index 100%
copy from mcs/class/System.Web/Test/standalone/RegisterBuildProvider/Web.config
copy to mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_06/Web.config
diff --git a/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_06/default.aspx b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_06/default.aspx
new file mode 100644
index 0000000..5be1453
--- /dev/null
+++ b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_06/default.aspx
@@ -0,0 +1,14 @@
+<%@ Page Language="C#" AutoEventWireup="true" %>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head runat="server">
+    <title>Test 06</title>
+</head>
+<body>
+    <form id="form1" runat="server">
+    <%= AppDomain.CurrentDomain.GetData ("BEGIN_CODE_MARKER") %><div>Default URL: <%= FormsAuthentication.DefaultUrl %><br />Login URL: <%= FormsAuthentication.LoginUrl %></div><%= AppDomain.CurrentDomain.GetData ("END_CODE_MARKER") %>
+    </form>
+</body>
+</html>
diff --git a/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_07/Makefile b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_07/Makefile
new file mode 100644
index 0000000..d912fce
--- /dev/null
+++ b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_07/Makefile
@@ -0,0 +1,31 @@
+TESTNUM=07
+thisdir = class/System.Web/Test/standalone/EnableFormsAuthentication/Test_$(TESTNUM)
+include ../../../../../../build/rules.make
+
+APPLICATION_ASSEMBLY = bin/EnableFormsAuthentication_Test_$(TESTNUM).dll
+
+APPLICATION_ASSEMBLY_SOURCES = \
+	Properties/AssemblyInfo.cs \
+	Tests/PreStart.cs
+
+APPLICATION_ASSEMBLY_MCS_FLAGS = \
+	-debug:full \
+	-r:System.Web.dll
+
+VALID_PROFILE := $(filter 4.0, $(FRAMEWORK_VERSION))
+
+ifndef VALID_PROFILE
+all:
+else
+all: $(APPLICATION_ASSEMBLY)
+
+$(APPLICATION_ASSEMBLY): bin/.stamp $(APPLICATION_ASSEMBLY_SOURCES)
+	$(CSCOMPILE) $(APPLICATION_ASSEMBLY_MCS_FLAGS) $(APPLICATION_ASSEMBLY_SOURCES) -target:library -out:$(APPLICATION_ASSEMBLY)
+
+bin/.stamp:
+	install -d -m 755 bin/
+	touch bin/.stamp
+endif
+
+clean:
+	rm -rf bin/
diff --git a/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_07/Properties/AssemblyInfo.cs b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_07/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..380bf20
--- /dev/null
+++ b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_07/Properties/AssemblyInfo.cs
@@ -0,0 +1,38 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using System.Web;
+
+[assembly: PreApplicationStartMethod (typeof (Test_07.Tests.PreStart), "FormsAuthenticationSetUp")]
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle ("Test_07")]
+[assembly: AssemblyDescription ("")]
+[assembly: AssemblyConfiguration ("")]
+[assembly: AssemblyCompany ("")]
+[assembly: AssemblyProduct ("Test_07")]
+[assembly: AssemblyCopyright ("Copyright ©  2010")]
+[assembly: AssemblyTrademark ("")]
+[assembly: AssemblyCulture ("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible (false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid ("41e43061-9e44-45c3-a7f1-3c62b34f5744")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Revision and Build Numbers 
+// by using the '*' as shown below:
+[assembly: AssemblyVersion ("1.0.0.0")]
+[assembly: AssemblyFileVersion ("1.0.0.0")]
diff --git a/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_07/Tests/PreStart.cs b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_07/Tests/PreStart.cs
new file mode 100644
index 0000000..9235014
--- /dev/null
+++ b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_07/Tests/PreStart.cs
@@ -0,0 +1,21 @@
+using System;
+using System.Web;
+using System.Web.Security;
+using System.Collections.Specialized;
+
+namespace Test_07.Tests
+{
+	public class PreStart
+	{
+		public static void FormsAuthenticationSetUp ()
+		{
+			var nvc = new NameValueCollection ();
+
+			nvc.Add ("loginUrl", "/myLogin.aspx");
+			nvc.Add ("defaultUrl", "/myDefault.aspx");
+			nvc.Add ("cookieDomain", "MyCookieDomain.com");
+
+			FormsAuthentication.EnableFormsAuthentication (nvc);
+		}
+	}
+}
\ No newline at end of file
diff --git a/mcs/class/System.Web/Test/standalone/RegisterBuildProvider/Web.config b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_07/Web.config
similarity index 100%
copy from mcs/class/System.Web/Test/standalone/RegisterBuildProvider/Web.config
copy to mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_07/Web.config
diff --git a/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_07/default.aspx b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_07/default.aspx
new file mode 100644
index 0000000..46ae8bc
--- /dev/null
+++ b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_07/default.aspx
@@ -0,0 +1,14 @@
+<%@ Page Language="C#" AutoEventWireup="true" %>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head runat="server">
+    <title>Test 07</title>
+</head>
+<body>
+    <form id="form1" runat="server">
+    <%= AppDomain.CurrentDomain.GetData ("BEGIN_CODE_MARKER") %><div>Default URL: <%= FormsAuthentication.DefaultUrl %><br />Login URL: <%= FormsAuthentication.LoginUrl %><br />Cookie domain: <%= FormsAuthentication.CookieDomain %></div><%= AppDomain.CurrentDomain.GetData ("END_CODE_MARKER") %>
+    </form>
+</body>
+</html>
diff --git a/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_08/Makefile b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_08/Makefile
new file mode 100644
index 0000000..667e288
--- /dev/null
+++ b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_08/Makefile
@@ -0,0 +1,31 @@
+TESTNUM=08
+thisdir = class/System.Web/Test/standalone/EnableFormsAuthentication/Test_$(TESTNUM)
+include ../../../../../../build/rules.make
+
+APPLICATION_ASSEMBLY = bin/EnableFormsAuthentication_Test_$(TESTNUM).dll
+
+APPLICATION_ASSEMBLY_SOURCES = \
+	Properties/AssemblyInfo.cs \
+	Tests/PreStart.cs
+
+APPLICATION_ASSEMBLY_MCS_FLAGS = \
+	-debug:full \
+	-r:System.Web.dll
+
+VALID_PROFILE := $(filter 4.0, $(FRAMEWORK_VERSION))
+
+ifndef VALID_PROFILE
+all:
+else
+all: $(APPLICATION_ASSEMBLY)
+
+$(APPLICATION_ASSEMBLY): bin/.stamp $(APPLICATION_ASSEMBLY_SOURCES)
+	$(CSCOMPILE) $(APPLICATION_ASSEMBLY_MCS_FLAGS) $(APPLICATION_ASSEMBLY_SOURCES) -target:library -out:$(APPLICATION_ASSEMBLY)
+
+bin/.stamp:
+	install -d -m 755 bin/
+	touch bin/.stamp
+endif
+
+clean:
+	rm -rf bin/
diff --git a/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_08/Properties/AssemblyInfo.cs b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_08/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..09e0518
--- /dev/null
+++ b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_08/Properties/AssemblyInfo.cs
@@ -0,0 +1,38 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using System.Web;
+
+[assembly: PreApplicationStartMethod (typeof (Test_08.Tests.PreStart), "FormsAuthenticationSetUp")]
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle ("Test_08")]
+[assembly: AssemblyDescription ("")]
+[assembly: AssemblyConfiguration ("")]
+[assembly: AssemblyCompany ("")]
+[assembly: AssemblyProduct ("Test_08")]
+[assembly: AssemblyCopyright ("Copyright ©  2010")]
+[assembly: AssemblyTrademark ("")]
+[assembly: AssemblyCulture ("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible (false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid ("5b072f76-4d18-4087-8f20-41c2c05eb18a")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Revision and Build Numbers 
+// by using the '*' as shown below:
+[assembly: AssemblyVersion ("1.0.0.0")]
+[assembly: AssemblyFileVersion ("1.0.0.0")]
diff --git a/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_08/Tests/PreStart.cs b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_08/Tests/PreStart.cs
new file mode 100644
index 0000000..1582635
--- /dev/null
+++ b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_08/Tests/PreStart.cs
@@ -0,0 +1,24 @@
+using System;
+using System.Web;
+using System.Web.Security;
+using System.Collections.Specialized;
+
+namespace Test_08.Tests
+{
+	public class PreStart
+	{
+		public static void FormsAuthenticationSetUp ()
+		{
+			var nvc = new NameValueCollection ();
+
+			nvc.Add ("loginUrl", "/myLogin.aspx");
+			nvc.Add ("defaultUrl", "/myDefault.aspx");
+			nvc.Add ("cookieDomain", "MyCookieDomain.com");
+			FormsAuthentication.EnableFormsAuthentication (nvc);
+
+			nvc ["loginUrl"] = "/myOtherLogin.aspx";
+			nvc ["defaultUrl"] = "/myOtherDefault.aspx";
+			FormsAuthentication.EnableFormsAuthentication (nvc);
+		}
+	}
+}
\ No newline at end of file
diff --git a/mcs/class/System.Web/Test/standalone/RegisterBuildProvider/Web.config b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_08/Web.config
similarity index 100%
copy from mcs/class/System.Web/Test/standalone/RegisterBuildProvider/Web.config
copy to mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_08/Web.config
diff --git a/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_08/default.aspx b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_08/default.aspx
new file mode 100644
index 0000000..b6e2425
--- /dev/null
+++ b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_08/default.aspx
@@ -0,0 +1,14 @@
+<%@ Page Language="C#" AutoEventWireup="true" %>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head runat="server">
+    <title>Test 08</title>
+</head>
+<body>
+    <form id="form1" runat="server">
+    <%= AppDomain.CurrentDomain.GetData ("BEGIN_CODE_MARKER") %><div>Default URL: <%= FormsAuthentication.DefaultUrl %><br />Login URL: <%= FormsAuthentication.LoginUrl %><br />Cookie domain: <%= FormsAuthentication.CookieDomain %></div><%= AppDomain.CurrentDomain.GetData ("END_CODE_MARKER") %>
+    </form>
+</body>
+</html>
diff --git a/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_09/Makefile b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_09/Makefile
new file mode 100644
index 0000000..228532c
--- /dev/null
+++ b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_09/Makefile
@@ -0,0 +1,31 @@
+TESTNUM=09
+thisdir = class/System.Web/Test/standalone/EnableFormsAuthentication/Test_$(TESTNUM)
+include ../../../../../../build/rules.make
+
+APPLICATION_ASSEMBLY = bin/EnableFormsAuthentication_Test_$(TESTNUM).dll
+
+APPLICATION_ASSEMBLY_SOURCES = \
+	Properties/AssemblyInfo.cs \
+	Tests/PreStart.cs
+
+APPLICATION_ASSEMBLY_MCS_FLAGS = \
+	-debug:full \
+	-r:System.Web.dll
+
+VALID_PROFILE := $(filter 4.0, $(FRAMEWORK_VERSION))
+
+ifndef VALID_PROFILE
+all:
+else
+all: $(APPLICATION_ASSEMBLY)
+
+$(APPLICATION_ASSEMBLY): bin/.stamp $(APPLICATION_ASSEMBLY_SOURCES)
+	$(CSCOMPILE) $(APPLICATION_ASSEMBLY_MCS_FLAGS) $(APPLICATION_ASSEMBLY_SOURCES) -target:library -out:$(APPLICATION_ASSEMBLY)
+
+bin/.stamp:
+	install -d -m 755 bin/
+	touch bin/.stamp
+endif
+
+clean:
+	rm -rf bin/
diff --git a/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_09/Properties/AssemblyInfo.cs b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_09/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..49b2ad2
--- /dev/null
+++ b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_09/Properties/AssemblyInfo.cs
@@ -0,0 +1,38 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using System.Web;
+
+[assembly: PreApplicationStartMethod (typeof (Test_09.Tests.PreStart), "FormsAuthenticationSetUp")]
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle ("Test_09")]
+[assembly: AssemblyDescription ("")]
+[assembly: AssemblyConfiguration ("")]
+[assembly: AssemblyCompany ("")]
+[assembly: AssemblyProduct ("Test_09")]
+[assembly: AssemblyCopyright ("Copyright ©  2010")]
+[assembly: AssemblyTrademark ("")]
+[assembly: AssemblyCulture ("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible (false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid ("ef2e428c-6031-4c71-bbe2-97c43ef6ed9d")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Revision and Build Numbers 
+// by using the '*' as shown below:
+[assembly: AssemblyVersion ("1.0.0.0")]
+[assembly: AssemblyFileVersion ("1.0.0.0")]
diff --git a/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_09/Tests/PreStart.cs b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_09/Tests/PreStart.cs
new file mode 100644
index 0000000..06d75d6
--- /dev/null
+++ b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_09/Tests/PreStart.cs
@@ -0,0 +1,19 @@
+using System;
+using System.Web;
+using System.Web.Security;
+using System.Collections.Specialized;
+
+namespace Test_09.Tests
+{
+	public class PreStart
+	{
+		public static void FormsAuthenticationSetUp ()
+		{
+			var nvc = new NameValueCollection ();
+
+			nvc.Add ("loginUrl", "/myLogin.aspx");
+			nvc.Add ("defaultUrl", "/myDefault.aspx");
+			FormsAuthentication.EnableFormsAuthentication (nvc);
+		}
+	}
+}
\ No newline at end of file
diff --git a/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_09/Web.config b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_09/Web.config
new file mode 100644
index 0000000..399240a
--- /dev/null
+++ b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_09/Web.config
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+
+<!--
+  For more information on how to configure your ASP.NET application, please visit
+  http://go.microsoft.com/fwlink/?LinkId=169433
+  -->
+
+<configuration>
+    <system.web>
+	<compilation debug="true" targetFramework="4.0" />
+	    <authentication mode="Forms">
+		    <forms defaultUrl="/defaultUrlFromConfig.aspx" loginUrl="/loginUrlFromConfig.aspx"/>
+	    </authentication>
+    </system.web>
+
+</configuration>
diff --git a/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_09/default.aspx b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_09/default.aspx
new file mode 100644
index 0000000..f45fe52
--- /dev/null
+++ b/mcs/class/System.Web/Test/standalone/EnableFormsAuthentication/Test_09/default.aspx
@@ -0,0 +1,14 @@
+<%@ Page Language="C#" AutoEventWireup="true" %>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head runat="server">
+    <title>Test 09</title>
+</head>
+<body>
+    <form id="form1" runat="server">
+    <%= AppDomain.CurrentDomain.GetData ("BEGIN_CODE_MARKER") %><div>Default URL: <%= FormsAuthentication.DefaultUrl %><br />Login URL: <%= FormsAuthentication.LoginUrl %><br />Cookie domain: <%= FormsAuthentication.CookieDomain %></div><%= AppDomain.CurrentDomain.GetData ("END_CODE_MARKER") %>
+    </form>
+</body>
+</html>
diff --git a/mcs/class/System.Web/Test/standalone/Menu_4.0_List/App_Data/MenuData.xml b/mcs/class/System.Web/Test/standalone/Menu_4.0_List/App_Data/MenuData.xml
new file mode 100644
index 0000000..9e431cd
--- /dev/null
+++ b/mcs/class/System.Web/Test/standalone/Menu_4.0_List/App_Data/MenuData.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<MenuRoot url="~/" title="Root" description="Root description">
+	<MenuNode url="http://mono-project.com/" title="Mono" description="Mono Project Home Page">
+		<MenuNode url="http://mono-project.com/Bugs" title="Mono Bugs" description="How to report Mono bugs">
+			<MenuNode url="http://bugzilla.novell.com" title="Novell Bugzilla" description="Includes Mono bugs interface"/>
+		</MenuNode>
+	</MenuNode>
+	<MenuNode url="http://google.com" title="Google" description="Main page of the Google search engine">
+		<MenuNode url="http://translate.google.com" title="Translator" description="Google language translation interface"/>
+		<MenuNode url="http://google.com/codesearch" title="Code Search" description="Google code search engine"/>
+	</MenuNode>
+</MenuRoot>
\ No newline at end of file
diff --git a/mcs/class/System.Web/Test/standalone/Menu_4.0_List/test_01.aspx b/mcs/class/System.Web/Test/standalone/Menu_4.0_List/test_01.aspx
new file mode 100644
index 0000000..af5be86
--- /dev/null
+++ b/mcs/class/System.Web/Test/standalone/Menu_4.0_List/test_01.aspx
@@ -0,0 +1,25 @@
+<%@ Page Language="C#" AutoEventWireup="true" %>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head runat="server">
+    <title></title>
+</head>
+<body>
+    <form id="form1" runat="server">
+    <div>
+	
+	    <!-- START --><%= AppDomain.CurrentDomain.GetData ("BEGIN_CODE_MARKER") %><asp:Menu ID="MyMenu1" runat="server" RenderingMode="List" DataSourceID="MenuDataSource" StaticDisplayLevels="1">
+	    <DataBindings>
+	    <asp:MenuItemBinding DataMember="MenuRoot" Depth="0" TextField="title" NavigateUrlField="url" ToolTipField="description" />
+	    <asp:MenuItemBinding DataMember="MenuNode" Depth="1" TextField="title" NavigateUrlField="url" ToolTipField="description" />
+	    <asp:MenuItemBinding DataMember="MenuNode" Depth="2" TextField="title" NavigateUrlField="url" ToolTipField="description" />
+	    <asp:MenuItemBinding DataMember="MenuNode" Depth="3" TextField="title" NavigateUrlField="url" ToolTipField="description" />
+	    </DataBindings>
+	    </asp:Menu><%= AppDomain.CurrentDomain.GetData ("END_CODE_MARKER") %><!-- END -->
+	    <asp:XmlDataSource ID="MenuDataSource" runat="server" DataFile="~/App_Data/MenuData.xml" />
+    </div>
+    </form>
+</body>
+</html>
diff --git a/mcs/class/System.Web/Test/standalone/Menu_4.0_List/web.config b/mcs/class/System.Web/Test/standalone/Menu_4.0_List/web.config
new file mode 100644
index 0000000..a965c3a
--- /dev/null
+++ b/mcs/class/System.Web/Test/standalone/Menu_4.0_List/web.config
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<configuration>
+	<system.web>
+		<compilation debug="true" targetFramework="4.0" />
+		<customErrors mode="Off"/>
+	</system.web>
+</configuration>
diff --git a/mcs/class/System.Web/Test/tools/CachePQTestGenerator/PriorityQueueState.cs b/mcs/class/System.Web/Test/tools/CachePQTestGenerator/PriorityQueueState.cs
index 7542660..dc514b1 100644
--- a/mcs/class/System.Web/Test/tools/CachePQTestGenerator/PriorityQueueState.cs
+++ b/mcs/class/System.Web/Test/tools/CachePQTestGenerator/PriorityQueueState.cs
@@ -44,15 +44,14 @@ namespace Tester
 	{
 		public readonly BinaryPriorityQueue Queue;
 		public readonly string ListName;
-		public readonly string QueueName;
-		public readonly string ItemName;
+		public readonly string TestsName;
 		
 		public int EnqueueCount;
 		public int DequeueCount;
 		public int DisableCount;
 		public int PeekCount;
 		
-		public PriorityQueueState (string listName, string queueName, string itemName)
+		public PriorityQueueState (string listName, string testsName)
 		{
 			Queue = new BinaryPriorityQueue (new CacheItemComparer ());
 			EnqueueCount = 0;
@@ -60,8 +59,7 @@ namespace Tester
 			DisableCount = 0;
 			PeekCount = 0;
 			ListName = listName;
-			QueueName = queueName;
-			ItemName = itemName;
+			TestsName = testsName;
 		}
 
 		public void Enqueue (CacheItem item)
diff --git a/mcs/class/System.Web/Test/tools/CachePQTestGenerator/Sequences.cs b/mcs/class/System.Web/Test/tools/CachePQTestGenerator/Sequences.cs
index a546ad2..016d708 100644
--- a/mcs/class/System.Web/Test/tools/CachePQTestGenerator/Sequences.cs
+++ b/mcs/class/System.Web/Test/tools/CachePQTestGenerator/Sequences.cs
@@ -67,14 +67,18 @@ namespace Tester
 			if (edSequence == null || edSequence.Count == 0)
 				return;
 
+
+			string listName = String.Format ("list_{0:00000}", seqNum);
+			string testsName = String.Format ("tests_{0:00000}", seqNum);
+			sb.AppendLine ();
+			sb.FormatList (initialIndent, listName, cacheItems);
+
+			sb.AppendLine ();
+			sb.AppendFormat ("{0} string[] {1} = {{\n", initialIndent, testsName);
+
 			string indent = initialIndent + "\t";
-			sb.SequenceMethodStart (initialIndent, file, seqNum);
-			sb.FormatList (indent, "list", cacheItems);
-			sb.Append (indent + "var queue = new CacheItemPriorityQueue ();\n");
-			sb.Append (indent + "CacheItem item;\n\n");
-			
 			int idx;
-			var pq = new PriorityQueueState ("list", "queue", "item");
+			var pq = new PriorityQueueState (listName, testsName);
 			foreach (EDSequenceEntry entry in edSequence) {
 				idx = cacheIndex [entry.Item.Guid];
 
@@ -101,6 +105,12 @@ namespace Tester
 
 			while (pq.Queue.Count > 0)
 				sb.FormatDequeue (indent, pq);
+			sb.AppendFormat ("{0}}};", initialIndent);
+			sb.AppendLine ();
+			
+			sb.SequenceMethodStart (initialIndent, file, seqNum);
+ 			sb.AppendFormat ("{0}RunTest ({1}, {2});", indent, testsName, listName);
+			sb.AppendLine ();
 			
 			sb.SequenceMethodEnd (initialIndent);
 		}
diff --git a/mcs/class/System.Web/Test/tools/CachePQTestGenerator/Sequences/cache_pq_sequence_2010-11-18_01-38-13.seq.gz b/mcs/class/System.Web/Test/tools/CachePQTestGenerator/Sequences/cache_pq_sequence_2010-11-18_01-38-13.seq.gz
new file mode 100644
index 0000000..04eac20
Binary files /dev/null and b/mcs/class/System.Web/Test/tools/CachePQTestGenerator/Sequences/cache_pq_sequence_2010-11-18_01-38-13.seq.gz differ
diff --git a/mcs/class/System.Web/Test/tools/CachePQTestGenerator/Utils.cs b/mcs/class/System.Web/Test/tools/CachePQTestGenerator/Utils.cs
index ab47a7e..fbbfe18 100644
--- a/mcs/class/System.Web/Test/tools/CachePQTestGenerator/Utils.cs
+++ b/mcs/class/System.Web/Test/tools/CachePQTestGenerator/Utils.cs
@@ -41,6 +41,8 @@ using System.Web.Caching;
 using System.Xml;
 using System.Xml.XPath;
 
+using MonoTests.System.Web.Caching;
+
 namespace Tester
 {
 	static class Utils
@@ -89,36 +91,33 @@ namespace Tester
 		public static void FormatQueueSize (this StringBuilder sb, string indent, PriorityQueueState qs)
 		{
 			sb.Append (indent);
-			sb.AppendFormat ("Assert.AreEqual ({0}, {1}.Count, \"Queue size after sequence\");\n\n",
-					 qs.Queue.Count, qs.QueueName);
+			var ti = new CacheItemPriorityQueueTestItem () {
+				Operation = QueueOperation.QueueSize,
+				QueueCount = qs.Queue.Count
+			};
+			sb.AppendFormat ("\"{0}\",", ti.Serialize ());
+			sb.AppendLine ();
 		}
 		
 		public static void FormatDisableItem (this StringBuilder sb, string indent, PriorityQueueState qs, List <CacheItem> list, int index)
 		{
 			CacheItem item = list [index];
 			sb.Append (indent);
-			sb.AppendFormat ("{0} = {1} [{2}];\n", qs.ItemName, qs.ListName, index);
-			sb.Append (indent);
-			
-			if (item == null) {
-				sb.AppendFormat ("Assert.IsNull ({0}, \"Disable-{1:0000}-1\");\n",
-						 qs.ItemName, qs.DisableCount);
-				return;
-			}
-			
-			sb.AppendFormat ("Assert.IsNotNull ({0}, \"Disable-{1:0000}-1\");\n",
-					 qs.ItemName, qs.DisableCount);
 
-			sb.Append (indent);
-			sb.AppendFormat ("Assert.AreEqual (\"{0}\", {1}.Guid.ToString(), \"Disable-{2:0000}-3\");\n",
-					 item.Guid.ToString (), qs.ItemName, qs.DisableCount);
-			
-			sb.Append (indent);
-			sb.AppendFormat ("Assert.AreEqual ({0}, {1}.Disabled, \"Disable-{2:0000}-3\");\n",
-					 item.Disabled.ToString ().ToLowerInvariant (),
-					 qs.ItemName, qs.DisableCount);
-			sb.Append (indent);
-			sb.AppendFormat ("{0}.Disabled = true;\n\n", qs.ItemName);
+			var ti = new CacheItemPriorityQueueTestItem () {
+				Operation = QueueOperation.Disable,
+				QueueCount = qs.Queue.Count,
+				ListIndex = index
+			};
+			if (item == null)
+				ti.IsNull = true;
+			else {
+				ti.Guid = item.Guid.ToString ();
+				ti.IsDisabled = item.Disabled;
+				ti.Disable = true;
+			}
+			sb.AppendFormat ("\"{0}\",", ti.Serialize ());
+			sb.AppendLine ();
 
 			item.Disabled = true;
 			
@@ -128,27 +127,21 @@ namespace Tester
 		public static void FormatDequeue (this StringBuilder sb, string indent, PriorityQueueState qs)
 		{
 			CacheItem item = qs.Dequeue ();
-
-			sb.Append (indent);
-			sb.AppendFormat ("{0} = {1}.Dequeue ();\n", qs.ItemName, qs.QueueName);
-			sb.Append (indent);
-			if (item != null)
-				sb.AppendFormat ("Assert.IsNotNull ({0}, \"Dequeue-{1:0000}-1\");\n", qs.ItemName, qs.DequeueCount);
-			else
-				sb.AppendFormat ("Assert.IsNull ({0}, \"Dequeue-{1:0000}-1\");\n", qs.ItemName, qs.DequeueCount);
 			
 			sb.Append (indent);
-			sb.AppendFormat ("Assert.AreEqual ({0}, {1}.Count, \"Dequeue-{2:0000}-2\");\n",
-					 qs.Queue.Count, qs.QueueName, qs.DequeueCount);
-
+			var ti = new CacheItemPriorityQueueTestItem () {
+				Operation = QueueOperation.Dequeue,
+				QueueCount = qs.Queue.Count,
+				OperationCount = qs.DequeueCount
+			};
 			if (item != null) {
-				sb.Append (indent);
-				sb.AppendFormat ("Assert.AreEqual (\"{0}\", {1}.Guid.ToString (), \"Dequeue-{2:0000}-3\");\n",
-						 item.Guid.ToString (), qs.ItemName, qs.DequeueCount);
-				sb.Append (indent);
-				sb.AppendFormat ("Assert.AreEqual ({0}, {1}.Disabled, \"Dequeue-{2:0000}-4\");\n\n",
-						 item.Disabled.ToString ().ToLowerInvariant (), qs.ItemName, qs.DequeueCount);
-			}
+				ti.Guid = item.Guid.ToString ();
+				ti.IsDisabled = item.Disabled;
+			} else
+				ti.IsNull = true;
+			
+			sb.AppendFormat ("\"{0}\",", ti.Serialize ());
+			sb.AppendLine ();
 			
 			qs.DequeueCount++;
 		}
@@ -156,27 +149,22 @@ namespace Tester
 		public static void FormatPeek (this StringBuilder sb, string indent, PriorityQueueState qs)
 		{
 			CacheItem item = qs.Peek ();
-
-			sb.Append (indent);
-			sb.AppendFormat ("{0} = {1}.Peek ();\n", qs.ItemName, qs.QueueName);
-			sb.Append (indent);
-			if (item != null)
-				sb.AppendFormat ("Assert.IsNotNull ({0}, \"Peek-{1:0000}-1\");\n", qs.ItemName, qs.PeekCount);
-			else
-				sb.AppendFormat ("Assert.IsNull ({0}, \"Peek-{1:0000}-1\");\n", qs.ItemName, qs.PeekCount);
-
+			
 			sb.Append (indent);
-			sb.AppendFormat ("Assert.AreEqual ({0}, {1}.Count, \"Peek-{2:0000}-2\");\n", qs.Queue.Count, qs.QueueName, qs.PeekCount);
-
+			var ti = new CacheItemPriorityQueueTestItem () {
+				Operation = QueueOperation.Peek,
+				QueueCount = qs.Queue.Count,
+				OperationCount = qs.PeekCount
+			};
 			if (item != null) {
-				sb.Append (indent);
-				sb.AppendFormat ("Assert.AreEqual (\"{0}\", {1}.Guid.ToString (), \"Peek-{2:0000}-3\");\n",
-						 item.Guid.ToString (), qs.ItemName, qs.PeekCount);
-				sb.Append (indent);
-				sb.AppendFormat ("Assert.AreEqual ({0}, {1}.Disabled, \"Peek-{2:0000}-4\");\n\n",
-						 item.Disabled.ToString ().ToLowerInvariant (), qs.ItemName, qs.PeekCount);
-			}
-
+				ti.Guid = item.Guid.ToString ();
+				ti.IsDisabled = item.Disabled;
+			} else
+				ti.IsNull = true;
+			
+			sb.AppendFormat ("\"{0}\",", ti.Serialize ());
+			sb.AppendLine ();
+			
 			qs.PeekCount++;
 		}
 		
@@ -184,25 +172,31 @@ namespace Tester
 		{
 			qs.Enqueue (list [index]);
 			sb.Append (indent);
-			sb.AppendFormat ("{0}.Enqueue ({1} [{2}]);\n", qs.QueueName, qs.ListName, index);
-			sb.Append (indent);
-			sb.AppendFormat ("Assert.AreEqual ({0}, {1}.Count, \"Enqueue-{2:0000}-1\");\n",
-					 qs.Queue.Count, qs.QueueName, qs.EnqueueCount);
-			sb.Append (indent);
-			sb.AppendFormat ("Assert.AreEqual (\"{0}\", {1}.Peek ().Guid.ToString(), \"Enqueue-{2:0000}-2\");\n\n",
-					 qs.Peek ().Guid.ToString (), qs.QueueName, qs.EnqueueCount);
 
+			var ti = new CacheItemPriorityQueueTestItem () {
+				Operation = QueueOperation.Enqueue,
+				QueueCount = qs.Queue.Count,
+				ListIndex = index,
+				Guid = qs.Peek ().Guid.ToString (),
+				OperationCount = qs.EnqueueCount
+			};
+			
+			sb.AppendFormat ("\"{0}\",", ti.Serialize ());
+			sb.AppendLine ();
+			
 			qs.EnqueueCount++;
 		}
-
+		
 		public static void FormatList (this StringBuilder sb, string indent, string listName, List <CacheItem> list)
 		{
 			if (list == null || list.Count == 0) {
-				sb.AppendFormat (indent + "var {0} = new List <CacheItem> ();\n", listName);
+				sb.AppendFormat (indent + "object[] {0} = {{};\n", listName);
 				return;
 			}
 
-			sb.AppendFormat (indent + "var {0} = new List <CacheItem> {{\n", listName);
+			sb.Append (indent + "// Each row contains TestCacheItem fields, in the following order:\n");
+			sb.Append (indent + "// Key, AbsoluteExpiration, SlidingExpiration, Priority, LastChange, ExpiresAt, Disabled, Guid\n");
+			sb.AppendFormat (indent + "object[] {0} = {{\n", listName);
 
 			foreach (CacheItem ci in list)
 				CreateNewCacheItemInstanceCode (indent + "\t", sb, ci);
@@ -211,15 +205,15 @@ namespace Tester
 
 		static void CreateNewCacheItemInstanceCode (string indent, StringBuilder sb, CacheItem item)
 		{
-			sb.Append (indent + "new CacheItem {");
-			sb.AppendFormat ("Key = \"{0}\", ", item.Key.Replace ("\n", "\\n").Replace ("\r", "\\r"));
-			sb.AppendFormat ("AbsoluteExpiration = DateTime.Parse (\"{0}\"), ", item.AbsoluteExpiration.ToString ());
-			sb.AppendFormat ("SlidingExpiration = TimeSpan.Parse (\"{0}\"), ", item.SlidingExpiration.ToString ());
-			sb.AppendFormat ("Priority = CacheItemPriority.{0}, ", item.Priority);
-			sb.AppendFormat ("LastChange = DateTime.Parse (\"{0}\"), ", item.LastChange.ToString ());
-			sb.AppendFormat ("ExpiresAt = {0}, ", item.ExpiresAt);
-			sb.AppendFormat ("Disabled = {0}, ", item.Disabled.ToString ().ToLowerInvariant ());
-			sb.AppendFormat ("Guid = new Guid (\"{0}\")}}, \n", item.Guid.ToString ());
+			sb.Append (indent);
+			sb.AppendFormat ("\"{0}\", ", item.Key.Replace ("\n", "\\n").Replace ("\r", "\\r"));
+			sb.AppendFormat ("\"{0}\", ", item.AbsoluteExpiration.ToString ());
+			sb.AppendFormat ("\"{0}\", ", item.SlidingExpiration.ToString ());
+			sb.AppendFormat ("CacheItemPriority.{0}, ", item.Priority);
+			sb.AppendFormat ("\"{0}\", ", item.LastChange.ToString ());
+			sb.AppendFormat ("{0}, ", item.ExpiresAt);
+			sb.AppendFormat ("{0}, ", item.Disabled.ToString ().ToLowerInvariant ());
+			sb.AppendFormat ("\"{0}\",\n", item.Guid.ToString ());
 		}
 	}
 }
diff --git a/mcs/class/System.Web/Test/tools/CachePQTestGenerator/cache-pq-test-generator.cs b/mcs/class/System.Web/Test/tools/CachePQTestGenerator/cache-pq-test-generator.cs
index db53d64..4738d64 100644
--- a/mcs/class/System.Web/Test/tools/CachePQTestGenerator/cache-pq-test-generator.cs
+++ b/mcs/class/System.Web/Test/tools/CachePQTestGenerator/cache-pq-test-generator.cs
@@ -24,9 +24,13 @@ namespace Tester
 			}
 			
 			var sb = new StringBuilder ();
-			sb.Append (@"//
+			sb.AppendFormat (@"//
 // This source was autogenerated - do not modify it, changes may not be preserved
 //
+// Generated on: {0}
+//
+// The test generator can be found in the ../tools/CachePQTestGenerator directory
+//
 #if !TARGET_DOTNET
 using System;
 using System.Collections.Generic;
@@ -36,9 +40,9 @@ using System.Web.Caching;
 using NUnit.Framework;
 
 namespace MonoTests.System.Web.Caching
-{
+{{
 	public partial class CacheItemPriorityQueueTest
-	{");
+	{{", DateTime.Now);
 			Sequences.Run (sb, args [0], "\t\t");
 			sb.Append ("	}\n}\n#endif\n");
 
diff --git a/mcs/class/System.Web/Test/tools/ChangeLog b/mcs/class/System.Web/Test/tools/ChangeLog
index e27c31e..c3e1f31 100644
--- a/mcs/class/System.Web/Test/tools/ChangeLog
+++ b/mcs/class/System.Web/Test/tools/ChangeLog
@@ -1,3 +1,29 @@
+2011-01-05  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Rewrote CacheItemPriorityQueue tests generator to
+	produce simpler test case.
+
+	The new test case uses arrays and postpones creation of
+	CacheItemPriorityQueueTestItem and TestCacheItem instances till
+	the actual test is ran. This reduces complexity of the
+	CacheItemPrioritQueueTest class constructor and allows the code to
+	run successfully on 32 bit machines.
+
+2010-12-14  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Added verbose mode to the standalone test runner
+
+2010-11-19  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net] Disabled array clearing on heap resize in
+	CacheItemPriorityQueue as it causes NREX to be thrown with > 8192
+	items in the queue.
+
+	- Rewrote the CacheItem priority queue test generator to generate
+	better code. - CacheItem in System.Web doesn't have the unused
+	Guid field now (the field is used only for tests) - Added a huge
+	sequence to CacheItem priority queue tests (10k entries)
+
 2010-06-18  Marek Habersack  <mhabersack at novell.com>
 
 	* standalone-runner.cs: added new command line parameter, --test,
diff --git a/mcs/class/System.Web/Test/tools/ChangeLog b/mcs/class/System.Web/Test/tools/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Web/Test/tools/ChangeLog
copy to mcs/class/System.Web/Test/tools/ChangeLog.old
diff --git a/mcs/class/System.Web/Test/tools/Makefile b/mcs/class/System.Web/Test/tools/Makefile
index 6f2f28d..b2e1f45 100644
--- a/mcs/class/System.Web/Test/tools/Makefile
+++ b/mcs/class/System.Web/Test/tools/Makefile
@@ -23,12 +23,15 @@ CACHE_PQ_TEST_GENERATOR_SOURCES = \
 	CachePQTestGenerator/cache-pq-test-generator.cs \
 	../../System.Web.Caching/CacheItem.cs \
 	../../System.Web.Caching/CacheItemPriorityQueue.cs \
-	../../System.Web.Caching/CacheItemPriorityQueueDebug.cs
+	../../System.Web.Caching/CacheItemPriorityQueueDebug.cs \
+	../System.Web.Caching/CacheItemPriorityQueueTestSupport.cs
 
 CACHE_PQ_TEST_GENERATOR_REFERENCES = \
+	-lib:$(CLASSLIB_DIR) \
 	-pkg:dotnet
 
 CACHE_PQ_TEST_SEQUENCES = $(wildcard ./CachePQTestGenerator/Sequences/*.seq)
+CACHE_PQ_TEST_PACKED_SEQUENCES = $(wildcard ./CachePQTestGenerator/Sequences/*.seq.gz)
 
 all-local: HtmlWriter.dll standalone-runner.exe cache-pq-test-generator.exe
 
@@ -42,7 +45,10 @@ cache-pq-test-generator.exe: $(CACHE_PQ_TEST_GENERATOR_SOURCES)
 	$(MCS) -debug:full -d:DEBUG $(CACHE_PQ_TEST_GENERATOR_REFERENCES) -out:$@ $(CACHE_PQ_TEST_GENERATOR_SOURCES)
 
 generate-cache-pq-tests: cache-pq-test-generator.exe 
-	$(RUNTIME) cache-pq-test-generator.exe ./CachePQTestGenerator/Sequences/ > ../System.Web.Caching/CacheItemPriorityQueueTest_generated.cs
+	for f in $(patsubst %.seq.gz,%.seq,$(CACHE_PQ_TEST_PACKED_SEQUENCES)); do \
+		gunzip -c $$f.gz > $$f ; \
+	done ;
+	$(RUNTIME) --debug cache-pq-test-generator.exe ./CachePQTestGenerator/Sequences/ > ../System.Web.Caching/CacheItemPriorityQueueTest_generated.cs
 
 deps:
 ifndef STANDALONE_SUPPORT_BUILT
@@ -52,3 +58,6 @@ endif
 clean:
 	rm -f HtmlWriter.dll HtmlWriter.*db
 	rm -f standalone-runner.exe standalone-runner.*db
+	for f in $(patsubst %.seq.gz,%.seq,$(CACHE_PQ_TEST_PACKED_SEQUENCES)); do \
+		rm -f $$f ; \
+	done ;
diff --git a/mcs/class/System.Web/Test/tools/standalone-runner.cs b/mcs/class/System.Web/Test/tools/standalone-runner.cs
index f421324..d3de824 100644
--- a/mcs/class/System.Web/Test/tools/standalone-runner.cs
+++ b/mcs/class/System.Web/Test/tools/standalone-runner.cs
@@ -84,11 +84,13 @@ namespace StandAloneRunner
 			bool showHelp = false;
 			string testName = null;
 			string outputName = null;
-			
+			bool verbose = false;
+
 			var options = new OptionSet () {
 				{"?|h|help", "Show short usage screen.", v => showHelp = true},
 				{"t=|test=", "Run this test only (full type name)", (string s) => testName = s},
 				{"o=|output=", "Output test results to the console and to the indicated file", (string s) => outputName = s},
+				{"v|verbose", "Print the running test name", v => verbose = true}
 			}; 
 			
 			List <string> extra = options.Parse (args);
@@ -126,7 +128,7 @@ namespace StandAloneRunner
 						continue;
 				}
 				
-				test.Run (appMan);
+				test.Run (appMan, verbose);
 				runCounter++;
 				if (!test.Success) {
 					failedCounter++;
diff --git a/mcs/class/System.Web/net_4_0_System.Web.dll.sources b/mcs/class/System.Web/net_4_0_System.Web.dll.sources
index dee93c1..0cd8a34 100644
--- a/mcs/class/System.Web/net_4_0_System.Web.dll.sources
+++ b/mcs/class/System.Web/net_4_0_System.Web.dll.sources
@@ -22,6 +22,7 @@ System.Web.SessionState_2.0/SessionStateBehavior.cs
 System.Web.Routing/PageRouteHandler.cs
 System.Web.UI/ClientIDMode.cs
 System.Web.UI/DataKeyPropertyAttribute.cs
+System.Web.UI/FileLevelMasterPageControlBuilder.cs
 System.Web.UI/IDataKeysControl.cs
 System.Web.UI/ViewStateMode.cs
 System.Web.UI.WebControls/IDataBoundControl.cs
@@ -29,8 +30,11 @@ System.Web.UI.WebControls/IDataBoundItemControl.cs
 System.Web.UI.WebControls/IDataBoundListControl.cs
 System.Web.UI.WebControls/IFieldControl.cs
 System.Web.UI.WebControls/IRenderOuterTable.cs
+System.Web.UI.WebControls/MenuListRenderer.cs
 System.Web.UI.WebControls/MenuRenderingMode.cs
+System.Web.UI.WebControls/NamedCssStyleCollection.cs
 System.Web.UI.WebControls/RouteParameter.cs
+System.Web.UI.WebControls/StyleBlock.cs
 System.Web.UI.WebControls/WizardLayoutContainer.cs
 System.Web.UI.WebControls/WizardLayoutNavigationContainer.cs
 System.Web.Util/RequestValidationSource.cs
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/Makefile b/mcs/class/System.Windows.Forms.DataVisualization/Makefile
index 20cf295..538bdda 100644
--- a/mcs/class/System.Windows.Forms.DataVisualization/Makefile
+++ b/mcs/class/System.Windows.Forms.DataVisualization/Makefile
@@ -3,7 +3,7 @@ SUBDIRS =
 include ../../build/rules.make
 
 LIBRARY = System.Windows.Forms.DataVisualization.dll
-LIB_MCS_FLAGS = -r:System.Drawing -r:System.Windows.Forms -r:System.Core
+LIB_MCS_FLAGS = -r:System -r:System.Drawing -r:System.Windows.Forms -r:System.Core
 TEST_MCS_FLAGS = $(LIB_MCS_FLAGS)
 
 EXTRA_DISTFILES =
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/AnchorStyle.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/AnchorStyle.cs
deleted file mode 100644
index b050463..0000000
--- a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/AnchorStyle.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-//
-// Authors:
-// Jonathan Pobst (monkey at jpobst.com)
-//
-// Copyright (C) 2009 Novell, Inc (http://www.novell.com) 
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-using System;
-
-namespace System.Windows.Forms.DataVisualization.Charting
-{
-	public enum MarkerStyle
-	{
-		Simple = 0,
-		DoubleArrow = 1,
-		Tailed = 2
-	}
-}
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/Chart.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/Chart.cs
index 420dd7c..0e394c0 100644
--- a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/Chart.cs
+++ b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/Chart.cs
@@ -34,23 +34,51 @@ namespace System.Windows.Forms.DataVisualization.Charting
 		public Chart ()
 		{
 			BackColor = Color.White;
-			ChartAreas = new List<ChartArea> ();
-			Series = new List<Series> ();
+			ChartAreas = new ChartAreaCollection ();
+			Series = new SeriesCollection ();
 		}
 
-		public List<ChartArea> ChartAreas { get; private set; }
-		public List<Series> Series { get; private set; }
+		public ChartAreaCollection ChartAreas { get; private set; }
+		public SeriesCollection Series { get; private set; }
 
 		#region Protected Properties
 		protected override void OnPaint (PaintEventArgs e)
 		{
 			base.OnPaint (e);
+
+			ChartGraphics g = new ChartGraphics (e.Graphics);
+
+			PaintElement (g, this, new ElementPosition (0, 0, 100, 100));
+
+			foreach (var area in ChartAreas)
+				PaintElement (g, area, new ElementPosition (9.299009f, 6.15f, 86.12599f, 81.1875f));
+
+			foreach (var series in Series)
+				PaintElement (g, series, new ElementPosition (9.299009f, 6.15f, 86.12599f, 81.1875f));
 		}
 
 		protected override void OnPaintBackground (PaintEventArgs pevent)
 		{
 			base.OnPaintBackground (pevent);
 		}
+
+		protected virtual void OnPostPaint (ChartPaintEventArgs e)
+		{
+		}
+
+		protected virtual void OnPrePaint (ChartPaintEventArgs e)
+		{
+		}
+		#endregion
+
+		#region Private Methods
+		private void PaintElement (ChartGraphics g, object element, ElementPosition position)
+		{
+			ChartPaintEventArgs e = new ChartPaintEventArgs (this, element, g, position);
+
+			OnPrePaint (e);
+			OnPostPaint (e);
+		}
 		#endregion
 	}
 }
\ No newline at end of file
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/ChartArea.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/ChartArea.cs
index 81d1e6a..0d8a4c1 100644
--- a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/ChartArea.cs
+++ b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/ChartArea.cs
@@ -27,8 +27,8 @@ using System;
 
 namespace System.Windows.Forms.DataVisualization.Charting
 {
-	public class ChartArea
+	public class ChartArea : ChartNamedElement
 	{
-		public string Name { get; set; }
+		public override string Name { get; set; }
 	}
 }
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/ChartAreaCollection.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/ChartAreaCollection.cs
new file mode 100644
index 0000000..a8f4d28
--- /dev/null
+++ b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/ChartAreaCollection.cs
@@ -0,0 +1,21 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+	public class ChartAreaCollection : ChartNamedElementCollection<ChartArea>
+	{
+		#region Public Methods
+		public ChartArea Add (string name)
+		{
+			ChartArea ca = new ChartArea ();
+			ca.Name = name;
+
+			Add (ca);
+			return ca;
+		}
+		#endregion
+	}
+}
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/ChartElement.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/ChartElement.cs
index c4169eb..20dbaf0 100644
--- a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/ChartElement.cs
+++ b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/ChartElement.cs
@@ -24,10 +24,11 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 using System;
+using System.ComponentModel;
 
 namespace System.Windows.Forms.DataVisualization.Charting
 {
-	public abstract class ChartElement
+	public abstract class ChartElement : IDisposable
 	{
 		#region Constructors
 		protected ChartElement ()
@@ -36,6 +37,7 @@ namespace System.Windows.Forms.DataVisualization.Charting
 		#endregion
 
 		#region Public Properties
+		[DefaultValue (null)]
 		public object Tag { get; set; }
 		#endregion
 
@@ -56,6 +58,9 @@ namespace System.Windows.Forms.DataVisualization.Charting
 
 		public override string ToString ()
 		{
+			if (this is ChartNamedElement)
+				return string.Format ("{0}-{1}", GetType ().Name, (this as ChartNamedElement).Name);
+
 			return GetType ().Name;
 		}
 		#endregion
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/ChartGraphics.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/ChartGraphics.cs
new file mode 100644
index 0000000..7e3429b
--- /dev/null
+++ b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/ChartGraphics.cs
@@ -0,0 +1,45 @@
+//
+// Authors:
+// Jonathan Pobst (monkey at jpobst.com)
+//
+// Copyright (C) 2009 Novell, Inc (http://www.novell.com) 
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+using System;
+using System.Collections.Generic;
+using System.Drawing;
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+	public class ChartGraphics : ChartElement, IDisposable
+	{
+		#region Constructors
+		internal ChartGraphics (Graphics graphics)
+		{
+			Graphics = graphics;
+		}
+		#endregion
+
+		#region Public Properties
+		public Graphics Graphics { get; set; }
+		#endregion
+	}
+}
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/ChartNamedElement.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/ChartNamedElement.cs
index 464fef6..648e648 100644
--- a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/ChartNamedElement.cs
+++ b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/ChartNamedElement.cs
@@ -24,6 +24,7 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 using System;
+using System.ComponentModel;
 
 namespace System.Windows.Forms.DataVisualization.Charting
 {
@@ -41,6 +42,7 @@ namespace System.Windows.Forms.DataVisualization.Charting
 		#endregion
 
 		#region Public Properties
+		[DefaultValue ("")]
 		public virtual string Name { get; set; }
 		#endregion
 	}
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/ChartNamedElementCollection.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/ChartNamedElementCollection.cs
index e66ef88..69bcba6 100644
--- a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/ChartNamedElementCollection.cs
+++ b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/ChartNamedElementCollection.cs
@@ -27,7 +27,7 @@ using System;
 
 namespace System.Windows.Forms.DataVisualization.Charting
 {
-	public class ChartNamedElementCollection<T> where T : ChartNamedElement
+	public class ChartNamedElementCollection<T> : ChartElementCollection<T> where T : ChartNamedElement
 	{
 	}
 }
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/ChartPaintEventArgs.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/ChartPaintEventArgs.cs
new file mode 100644
index 0000000..1d5b7de
--- /dev/null
+++ b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/ChartPaintEventArgs.cs
@@ -0,0 +1,51 @@
+//
+// Authors:
+// Jonathan Pobst (monkey at jpobst.com)
+//
+// Copyright (C) 2009 Novell, Inc (http://www.novell.com) 
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+using System;
+using System.Collections.Generic;
+using System.Drawing;
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+	public class ChartPaintEventArgs : EventArgs
+	{
+		#region Constructors
+		internal ChartPaintEventArgs (Chart chart, object chartElement, ChartGraphics chartGraphics, ElementPosition position)
+		{
+			Chart = chart;
+			ChartElement = chartElement;
+			ChartGraphics = chartGraphics;
+			Position = position;
+		}
+		#endregion
+
+		#region Public Properties
+		public Chart Chart { get; private set; }
+		public object ChartElement { get; private set; }
+		public ChartGraphics ChartGraphics { get; private set; }
+		public ElementPosition Position { get; private set; }
+		#endregion
+	}
+}
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/ElementPosition.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/ElementPosition.cs
new file mode 100644
index 0000000..f141444
--- /dev/null
+++ b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/ElementPosition.cs
@@ -0,0 +1,79 @@
+//
+// Authors:
+// Jonathan Pobst (monkey at jpobst.com)
+//
+// Copyright (C) 2009 Novell, Inc (http://www.novell.com) 
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+using System;
+using System.Collections.Generic;
+using System.Drawing;
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+	public class ElementPosition : ChartElement
+	{
+		#region Constructors
+		public ElementPosition ()
+		{
+		}
+
+		public ElementPosition (float x, float y, float width, float height)
+		{
+			X = x;
+			Y = y;
+			Width = width;
+			Height = height;
+		}
+		#endregion
+
+		#region Public Properties
+		public bool Auto { get; set; }
+		public float Bottom { get { return Y + Height; }  }
+		public float Height { get; set; }
+		public float Right { get { return X + Width; } }
+		public SizeF Size { get { return new SizeF (Width, Height); } }
+		public float Width { get; set; }
+		public float X { get; set; }
+		public float Y { get; set; }
+		#endregion
+
+		#region Public Methods
+		public void FromRectangleF (RectangleF rect)
+		{
+			X = rect.X;
+			Y = rect.Y;
+			Width = rect.Width;
+			Height = rect.Height;
+		}
+
+		public RectangleF ToRectangleF ()
+		{
+			return new RectangleF (X, Y, Width, Height);
+		}
+		#endregion
+
+		public override string ToString ()
+		{
+			return string.Format ("{0}, {1}, {2}, {3}", X, Y, Width, Height);
+		}
+	}
+}
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/FormatNumberEventArgs.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/FormatNumberEventArgs.cs
new file mode 100644
index 0000000..6200623
--- /dev/null
+++ b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/FormatNumberEventArgs.cs
@@ -0,0 +1,49 @@
+//
+// Authors:
+// Jonathan Pobst (monkey at jpobst.com)
+//
+// Copyright (C) 2009 Novell, Inc (http://www.novell.com) 
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+using System;
+using System.ComponentModel;
+using System.Drawing;
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+	public class FormatNumberEventArgs : EventArgs
+	{
+		#region Constructors
+		internal FormatNumberEventArgs ()
+		{
+		}
+		#endregion
+
+		#region Public Properties
+		public ChartElementType ElementType { get; private set; }
+		public string Format { get; private set; }
+		public string LocalizedValue { get; set; }
+		public object SenderTag { get; private set; }
+		public double Value { get; private set; }
+		public ChartValueType ValueType { get; private set; }
+		#endregion
+	}
+}
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/Margins.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/Margins.cs
new file mode 100644
index 0000000..71309c3
--- /dev/null
+++ b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/Margins.cs
@@ -0,0 +1,92 @@
+//
+// Authors:
+// Jonathan Pobst (monkey at jpobst.com)
+//
+// Copyright (C) 2009 Novell, Inc (http://www.novell.com) 
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+using System;
+using System.ComponentModel;
+using System.Drawing;
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+	public class Margins
+	{
+		#region Constructors
+		public Margins ()
+		{
+		}
+
+		public Margins (int top, int bottom, int left, int right)
+		{
+			Bottom = bottom;
+			Left = left;
+			Right = right;
+			Top = top;
+		}
+		#endregion
+
+		#region Public Properties
+		[DefaultValue (0)]
+		public int Bottom { get; set; }
+
+		[DefaultValue (0)]
+		public int Left { get; set; }
+
+		[DefaultValue (0)]
+		public int Right { get; set; }
+
+		[DefaultValue (0)]
+		public int Top { get; set; }
+		#endregion
+
+		#region Public Methods
+		public override bool Equals (object obj)
+		{
+			Margins a = (Margins)obj;
+			return a.Bottom == Bottom && a.Left == Left && a.Right == Right && a.Top == Top;
+		}
+
+		[MonoTODO ()]
+		public override int GetHashCode ()
+		{
+			return base.GetHashCode ();
+		}
+
+		public bool IsEmpty ()
+		{
+			return Bottom == 0 && Left == 0 && Right == 0 && Top == 0;
+		}
+
+		public RectangleF ToRectangleF ()
+		{
+			return new RectangleF (Left, Top, Right, Bottom);
+		}
+
+		[MonoTODO ()]
+		public override string ToString ()
+		{
+			return base.ToString ();
+		}
+		#endregion
+	}
+}
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/MarkerStyle.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/MarkerStyle.cs
new file mode 100644
index 0000000..af0f5ca
--- /dev/null
+++ b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/MarkerStyle.cs
@@ -0,0 +1,43 @@
+//
+// Authors:
+// Jonathan Pobst (monkey at jpobst.com)
+//
+// Copyright (C) 2009 Novell, Inc (http://www.novell.com) 
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+using System;
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+	public enum MarkerStyle
+	{
+		None = 0,
+		Square = 1,
+		Circle = 2,
+		Diamond = 3,
+		Triangle = 4,
+		Cross = 5,
+		Star4 = 6,
+		Star5 = 7,
+		Star6 = 8,
+		Star10 = 9
+	}
+}
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/NamedImage.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/NamedImage.cs
new file mode 100644
index 0000000..6ab7d28
--- /dev/null
+++ b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/NamedImage.cs
@@ -0,0 +1,68 @@
+//
+// Authors:
+// Jonathan Pobst (monkey at jpobst.com)
+//
+// Copyright (C) 2009 Novell, Inc (http://www.novell.com) 
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+using System;
+using System.ComponentModel;
+using System.Drawing;
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+	[DefaultProperty ("Name")]
+	public class NamedImage : ChartNamedElement, IDisposable
+	{
+		private string name;
+
+		#region Constructors
+		public NamedImage ()
+		{
+		}
+
+		public NamedImage (string name, Image image)
+		{
+		}
+		#endregion
+
+		#region Public Properties
+		[Bindable (false)]
+		public Image Image { get; set; }
+
+		[Bindable (false)]
+		public override string Name {
+			get { return name; }
+			set { name = value; }
+		}
+		#endregion
+
+		#region Protected Methods
+		protected override void Dispose (bool disposing)
+		{
+			base.Dispose (disposing);
+
+			if (Image != null)
+				Image.Dispose ();
+		}
+		#endregion
+	}
+}
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/NamedImagesCollection.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/NamedImagesCollection.cs
new file mode 100644
index 0000000..d0a3ec4
--- /dev/null
+++ b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/NamedImagesCollection.cs
@@ -0,0 +1,33 @@
+//
+// Authors:
+// Jonathan Pobst (monkey at jpobst.com)
+//
+// Copyright (C) 2009 Novell, Inc (http://www.novell.com) 
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+using System;
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+	public class NamedImagesCollection : ChartNamedElementCollection<NamedImage>
+	{
+	}
+}
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/Point3D.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/Point3D.cs
new file mode 100644
index 0000000..529f8a0
--- /dev/null
+++ b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/Point3D.cs
@@ -0,0 +1,68 @@
+//
+// Authors:
+// Jonathan Pobst (monkey at jpobst.com)
+//
+// Copyright (C) 2009 Novell, Inc (http://www.novell.com) 
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+using System;
+using System.Drawing;
+using System.ComponentModel;
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+	public class Point3D
+	{
+		#region Constructors
+		public Point3D ()
+		{
+		}
+
+		public Point3D (float x, float y, float z)
+		{
+			X = x;
+			Y = y;
+			Z = z;
+		}
+		#endregion
+
+		#region Public Properties
+		[Bindable (false)]
+		[DefaultValue ("0f, 0f")]
+		public PointF PointF {
+			get { return new PointF (X, Y); }
+			set { X = value.X; Y = value.Y; }
+		}
+
+		[Bindable (false)]
+		[DefaultValue (0f)]
+		public float X { get; set; }
+
+		[Bindable (false)]
+		[DefaultValue (0f)]
+		public float Y { get; set; }
+
+		[Bindable (false)]
+		[DefaultValue (0f)]
+		public float Z { get; set; }
+		#endregion
+	}
+}
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/SeriesCollection.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/SeriesCollection.cs
index cd95d0d..94f1087 100644
--- a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/SeriesCollection.cs
+++ b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/SeriesCollection.cs
@@ -29,5 +29,16 @@ namespace System.Windows.Forms.DataVisualization.Charting
 {
 	public class SeriesCollection : ChartNamedElementCollection<Series>
 	{
+		#region Public Methods
+		public Series Add (string name)
+		{
+			Series s = new Series ();
+			s.Name = name;
+
+			this.Add (s);
+
+			return s;
+		}
+		#endregion
 	}
 }
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.dll.sources b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.dll.sources
index ecaf55a..873a00f 100644
--- a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.dll.sources
+++ b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.dll.sources
@@ -1,7 +1,6 @@
 ../../build/common/Consts.cs
 ../../build/common/MonoTODOAttribute.cs
 Assembly/AssemblyInfo.cs
-System.Windows.Forms.DataVisualization.Charting/AnchorStyle.cs
 System.Windows.Forms.DataVisualization.Charting/AnnotationPathPoint.cs
 System.Windows.Forms.DataVisualization.Charting/AnnotationPathPointCollection.cs
 System.Windows.Forms.DataVisualization.Charting/AnovaResult.cs
@@ -20,17 +19,20 @@ System.Windows.Forms.DataVisualization.Charting/BreakLineStyle.cs
 System.Windows.Forms.DataVisualization.Charting/CalloutStyle.cs
 System.Windows.Forms.DataVisualization.Charting/Chart.cs
 System.Windows.Forms.DataVisualization.Charting/ChartArea.cs
+System.Windows.Forms.DataVisualization.Charting/ChartAreaCollection.cs
 System.Windows.Forms.DataVisualization.Charting/ChartColorPalette.cs
 System.Windows.Forms.DataVisualization.Charting/ChartDashStyle.cs
 System.Windows.Forms.DataVisualization.Charting/ChartElement.cs
 System.Windows.Forms.DataVisualization.Charting/ChartElementCollection.cs
 System.Windows.Forms.DataVisualization.Charting/ChartElementType.cs
+System.Windows.Forms.DataVisualization.Charting/ChartGraphics.cs
 System.Windows.Forms.DataVisualization.Charting/ChartHatchStyle.cs
 System.Windows.Forms.DataVisualization.Charting/ChartImageAlignmentStyle.cs
 System.Windows.Forms.DataVisualization.Charting/ChartImageFormat.cs
 System.Windows.Forms.DataVisualization.Charting/ChartImageWrapMode.cs
 System.Windows.Forms.DataVisualization.Charting/ChartNamedElement.cs
 System.Windows.Forms.DataVisualization.Charting/ChartNamedElementCollection.cs
+System.Windows.Forms.DataVisualization.Charting/ChartPaintEventArgs.cs
 System.Windows.Forms.DataVisualization.Charting/ChartValueType.cs
 System.Windows.Forms.DataVisualization.Charting/CompareMethod.cs
 System.Windows.Forms.DataVisualization.Charting/DataPoint.cs
@@ -39,7 +41,9 @@ System.Windows.Forms.DataVisualization.Charting/DataPointCustomProperties.cs
 System.Windows.Forms.DataVisualization.Charting/DateRangeType.cs
 System.Windows.Forms.DataVisualization.Charting/DateTimeIntervalType.cs
 System.Windows.Forms.DataVisualization.Charting/Docking.cs
+System.Windows.Forms.DataVisualization.Charting/ElementPosition.cs
 System.Windows.Forms.DataVisualization.Charting/FinancialFormula.cs
+System.Windows.Forms.DataVisualization.Charting/FormatNumberEventArgs.cs
 System.Windows.Forms.DataVisualization.Charting/GradientStyle.cs
 System.Windows.Forms.DataVisualization.Charting/GridTickTypes.cs
 System.Windows.Forms.DataVisualization.Charting/IDataPointFilter.cs
@@ -59,7 +63,12 @@ System.Windows.Forms.DataVisualization.Charting/LegendStyle.cs
 System.Windows.Forms.DataVisualization.Charting/LegendTableStyle.cs
 System.Windows.Forms.DataVisualization.Charting/LightStyle.cs
 System.Windows.Forms.DataVisualization.Charting/LineAnchorCapStyle.cs
+System.Windows.Forms.DataVisualization.Charting/Margins.cs
+System.Windows.Forms.DataVisualization.Charting/MarkerStyle.cs
+System.Windows.Forms.DataVisualization.Charting/NamedImage.cs
+System.Windows.Forms.DataVisualization.Charting/NamedImagesCollection.cs
 System.Windows.Forms.DataVisualization.Charting/PointSortOrder.cs
+System.Windows.Forms.DataVisualization.Charting/Point3D.cs
 System.Windows.Forms.DataVisualization.Charting/ScrollBarButtonStyles.cs
 System.Windows.Forms.DataVisualization.Charting/ScrollBarButtonType.cs
 System.Windows.Forms.DataVisualization.Charting/ScrollType.cs
diff --git a/mcs/class/System.XML/ChangeLog b/mcs/class/System.XML/ChangeLog
index 5f2b4ab..0500107 100644
--- a/mcs/class/System.XML/ChangeLog
+++ b/mcs/class/System.XML/ChangeLog
@@ -1,3 +1,20 @@
+2010-12-16  Marek Safar  <marek.safar at gmail.com>
+
+	Switch to single mcs compiler for all managed code build
+
+2010-12-06  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	[System.Xml] Enable existing API under 4.0 profile too
+
+2010-09-08  Jb Evain  <jbevain at gmail.com>
+
+	Factorize the System.Xml monotouch and monodroid sources into a
+	mobile.sources
+
+2010-09-08  Jb Evain  <jbevain at gmail.com>
+
+	Enable the System.Xml build for monodroid
+
 2010-06-30  Atsushi Enomoto  <atsushi at ximian.com>
 
 	* System.Xml.dll.sources,
diff --git a/mcs/class/System.XML/ChangeLog b/mcs/class/System.XML/ChangeLog.old
similarity index 100%
copy from mcs/class/System.XML/ChangeLog
copy to mcs/class/System.XML/ChangeLog.old
diff --git a/mcs/class/System.XML/Makefile b/mcs/class/System.XML/Makefile
index ff68bdc..418e94f 100644
--- a/mcs/class/System.XML/Makefile
+++ b/mcs/class/System.XML/Makefile
@@ -10,10 +10,6 @@ ifndef lib_file
 USE_BOOT_COMPILE = yes
 endif
 
-ifeq (monotouch, $(PROFILE))
-BOOTSTRAP_MCS = MONO_PATH="$(topdir)/class/lib/monotouch$(PLATFORM_PATH_SEPARATOR)$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" $(INTERNAL_SMCS)
-endif
-
 ifdef USE_BOOT_COMPILE
 LIBRARY_COMPILE = $(BOOT_COMPILE)
 endif
diff --git a/mcs/class/System.XML/Mono.Xml.Schema/ChangeLog b/mcs/class/System.XML/Mono.Xml.Schema/ChangeLog
index a98adf0..b37b4bd 100644
--- a/mcs/class/System.XML/Mono.Xml.Schema/ChangeLog
+++ b/mcs/class/System.XML/Mono.Xml.Schema/ChangeLog
@@ -1,3 +1,12 @@
+2010-11-29  Atsushi Eno  <atsushi at ximian.com>
+
+	Return different instances of XmlSchemaInfo for each validated
+	node in XmlSchemaValidatingReader.
+
+2010-11-12  myeisha  <github at quasiparticle.net>
+
+	Don't add IDREFs to set of missing IDs multiple times
+
 2009-01-30  Atsushi Enomoto  <atsushi at ximian.com>
 
 	* XsdValidatingReader.cs : when xsi:nil is true, do not validate
diff --git a/mcs/class/System.XML/Mono.Xml.Schema/ChangeLog b/mcs/class/System.XML/Mono.Xml.Schema/ChangeLog.old
similarity index 100%
copy from mcs/class/System.XML/Mono.Xml.Schema/ChangeLog
copy to mcs/class/System.XML/Mono.Xml.Schema/ChangeLog.old
diff --git a/mcs/class/System.XML/Mono.Xml.Schema/XmlSchemaValidatingReader.cs b/mcs/class/System.XML/Mono.Xml.Schema/XmlSchemaValidatingReader.cs
index b0db744..23e3d4e 100644
--- a/mcs/class/System.XML/Mono.Xml.Schema/XmlSchemaValidatingReader.cs
+++ b/mcs/class/System.XML/Mono.Xml.Schema/XmlSchemaValidatingReader.cs
@@ -391,7 +391,18 @@ namespace Mono.Xml.Schema
 		}
 
 		public override IXmlSchemaInfo SchemaInfo {
-			get { return this; }
+			get {
+				return new XmlSchemaInfo () {
+					//ContentType = this.ContentType,
+					IsDefault = this.IsDefault,
+					IsNil = this.IsNil,
+					MemberType = this.MemberType,
+					SchemaAttribute = this.SchemaAttribute,
+					SchemaElement = this.SchemaElement,
+					SchemaType = this.SchemaType,
+					Validity = this.Validity
+					};
+			}
 		}
 
 		public override string Value {
diff --git a/mcs/class/System.XML/Mono.Xml.Schema/XsdValidatingReader.cs b/mcs/class/System.XML/Mono.Xml.Schema/XsdValidatingReader.cs
index f6ae29c..8eea3d3 100644
--- a/mcs/class/System.XML/Mono.Xml.Schema/XsdValidatingReader.cs
+++ b/mcs/class/System.XML/Mono.Xml.Schema/XsdValidatingReader.cs
@@ -1809,14 +1809,14 @@ namespace Mono.Xml.Schema
 					MissingIDReferences.Remove (str);
 				break;
 			case XmlTokenizedType.IDREF:
-				if (!idList.Contains (str))
+				if (!idList.Contains (str) && !MissingIDReferences.Contains (str))
 					MissingIDReferences.Add (str);
 				break;
 			case XmlTokenizedType.IDREFS:
 				string [] idrefs = (string []) parsedValue;
 				for (int i = 0; i < idrefs.Length; i++) {
 					string id = idrefs [i];
-					if (!idList.Contains (id))
+					if (!idList.Contains (id) && !MissingIDReferences.Contains (str))
 						MissingIDReferences.Add (id);
 				}
 				break;
diff --git a/mcs/class/System.XML/Mono.Xml.Xsl/ChangeLog b/mcs/class/System.XML/Mono.Xml.Xsl/ChangeLog
index a87e785..8a08275 100644
--- a/mcs/class/System.XML/Mono.Xml.Xsl/ChangeLog
+++ b/mcs/class/System.XML/Mono.Xml.Xsl/ChangeLog
@@ -1,3 +1,7 @@
+2010-09-08  Jb Evain  <jbevain at gmail.com>
+
+	Enable the System.Xml build for monodroid
+
 2010-08-10  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
 
 	* XslFunctions.cs: avoid nullref in simple transformation. Fixes
diff --git a/mcs/class/System.XML/Mono.Xml.Xsl/MSXslScriptManager.cs b/mcs/class/System.XML/Mono.Xml.Xsl/MSXslScriptManager.cs
index bf5e98d..545ca1c 100644
--- a/mcs/class/System.XML/Mono.Xml.Xsl/MSXslScriptManager.cs
+++ b/mcs/class/System.XML/Mono.Xml.Xsl/MSXslScriptManager.cs
@@ -129,7 +129,7 @@ namespace Mono.Xml.Xsl {
 			
 			public object Compile (XPathNavigator node)
 			{
-#if TARGET_JVM || MONOTOUCH
+#if TARGET_JVM || MOBILE
 				throw new NotImplementedException ();
 #else
 				string suffix = "";
diff --git a/mcs/class/System.XML/System.Xml.Schema/ChangeLog b/mcs/class/System.XML/System.Xml.Schema/ChangeLog
index fa4e6d8..4baa422 100644
--- a/mcs/class/System.XML/System.Xml.Schema/ChangeLog
+++ b/mcs/class/System.XML/System.Xml.Schema/ChangeLog
@@ -1,3 +1,16 @@
+2010-11-30  Atsushi Eno  <atsushi at ximian.com>
+
+	Use AttributeSchemaType as it is 2.0 API. This fixes incorrectly
+	skipped type validation.
+
+2010-11-30  Atsushi Eno  <atsushi at ximian.com>
+
+	Handle more type conversion.
+
+2010-09-08  Jb Evain  <jbevain at gmail.com>
+
+	Enable the System.Xml build for monodroid
+
 2010-06-14  Atsushi Enomoto  <atsushi at ximian.com>
 
 	* XmlSchemaValidator.cs : limit validity initialization. In some
diff --git a/mcs/class/System.XML/System.Xml.Schema/ChangeLog b/mcs/class/System.XML/System.Xml.Schema/ChangeLog.old
similarity index 100%
copy from mcs/class/System.XML/System.Xml.Schema/ChangeLog
copy to mcs/class/System.XML/System.Xml.Schema/ChangeLog.old
diff --git a/mcs/class/System.XML/System.Xml.Schema/XmlAtomicValue.cs b/mcs/class/System.XML/System.Xml.Schema/XmlAtomicValue.cs
index 54d27f4..c1a03ee 100644
--- a/mcs/class/System.XML/System.Xml.Schema/XmlAtomicValue.cs
+++ b/mcs/class/System.XML/System.Xml.Schema/XmlAtomicValue.cs
@@ -365,6 +365,8 @@ namespace System.Xml.Schema
 				case XmlTypeCode.Boolean:
 					stringValue = XQueryConvert.BooleanToString (ValueAsBoolean);
 					break;
+				case XmlTypeCode.Date:
+				case XmlTypeCode.Time:
 				case XmlTypeCode.DateTime:
 					stringValue = XQueryConvert.DateTimeToString (ValueAsDateTime);
 					break;
@@ -372,6 +374,7 @@ namespace System.Xml.Schema
 				case XmlTypeCode.Double:
 					stringValue = XQueryConvert.DoubleToString (ValueAsDouble);
 					break;
+				case XmlTypeCode.Integer:
 				case XmlTypeCode.Decimal:
 					stringValue = XQueryConvert.DecimalToString (ValueAsDecimal);
 					break;
@@ -401,6 +404,12 @@ namespace System.Xml.Schema
 					case XmlTypeCode.String:
 						stringValue = (string) objectValue;
 						break;
+					case XmlTypeCode.Date:
+						stringValue = XQueryConvert.DateToString ((DateTime) objectValue);
+						break;
+					case XmlTypeCode.Time:
+						stringValue = XQueryConvert.TimeToString ((DateTime) objectValue);
+						break;
 					case XmlTypeCode.DateTime:
 						stringValue = XQueryConvert.DateTimeToString ((DateTime) objectValue);
 						break;
@@ -413,6 +422,7 @@ namespace System.Xml.Schema
 					case XmlTypeCode.Double:
 						stringValue = XQueryConvert.DoubleToString ((double) objectValue);
 						break;
+					case XmlTypeCode.Integer:
 					case XmlTypeCode.Decimal:
 						stringValue = XQueryConvert.DecimalToString ((decimal) objectValue);
 						break;
diff --git a/mcs/class/System.XML/System.Xml.Schema/XmlSchemaException.cs b/mcs/class/System.XML/System.Xml.Schema/XmlSchemaException.cs
index aa90279..649df76 100644
--- a/mcs/class/System.XML/System.Xml.Schema/XmlSchemaException.cs
+++ b/mcs/class/System.XML/System.Xml.Schema/XmlSchemaException.cs
@@ -113,7 +113,7 @@ namespace System.Xml.Schema
 				innerException)
 		{
 			hasLineInfo = true;
-#if !MONOTOUCH
+#if !MOBILE
 			this.lineNumber = sourceObject.LineNumber;
 			this.linePosition = sourceObject.LinePosition;
 			this.sourceObj	=	sourceObject;
@@ -163,7 +163,7 @@ namespace System.Xml.Schema
 					(sourceUri != null && sourceUri != "") ? "URI: " + sourceUri + " ." : "",
 					lineNumber,
 					linePosition);
-#if !MONOTOUCH
+#if !MOBILE
 			if (sourceObj != null)
 				msg += String.Format (CultureInfo.InvariantCulture, " Related schema item SourceUri: {0}, Line {1}, Position {2}.",
 					sourceObj.SourceUri, sourceObj.LineNumber, sourceObj.LinePosition);
diff --git a/mcs/class/System.XML/System.Xml.Schema/XmlSchemaValidator.cs b/mcs/class/System.XML/System.Xml.Schema/XmlSchemaValidator.cs
index 04faed0..602287a 100644
--- a/mcs/class/System.XML/System.Xml.Schema/XmlSchemaValidator.cs
+++ b/mcs/class/System.XML/System.Xml.Schema/XmlSchemaValidator.cs
@@ -128,6 +128,7 @@ namespace System.Xml.Schema
 		ValidationFlags options;
 
 		// Validation state
+		bool initial = true;
 		Transition transition;
 		XsdParticleStateManager state;
 
@@ -360,7 +361,11 @@ namespace System.Xml.Schema
 			if (attributeValue == null)
 				throw new ArgumentNullException ("attributeValue");
 
-			CheckState (Transition.StartTag);
+			bool wasInitial = initial;
+			if (initial)
+				initial = false;
+			else
+				CheckState (Transition.StartTag);
 
 			QName qname = new QName (localName, ns);
 			if (occuredAtts.Contains (qname))
@@ -373,6 +378,13 @@ namespace System.Xml.Schema
 			if (schemas.Count == 0)
 				return null;
 
+			if (wasInitial) {
+				var xa = startType as XmlSchemaAttribute;
+				if (xa == null)
+					return null;
+				return AssessAttributeLocallyValid (xa, info, attributeValue);
+			}
+
 			if (Context.Element != null && Context.XsiType == null) {
 
 				// 3.3.4 Element Locally Valid (Type) - attribute
@@ -648,6 +660,7 @@ namespace System.Xml.Schema
 
 		private void CheckState (Transition expected)
 		{
+			initial = false;
 			if (transition != expected) {
 				if (transition == Transition.None)
 					throw new InvalidOperationException ("Initialize() must be called before processing validation.");
@@ -866,6 +879,11 @@ namespace System.Xml.Schema
 		// 3.2.4 Attribute Locally Valid and 3.4.4
 		private object AssessAttributeLocallyValid (XsAttribute attr, XmlSchemaInfo info, XmlValueGetter getter)
 		{
+			if (info != null) {
+				info.SchemaAttribute = attr;
+				info.SchemaType = attr.AttributeSchemaType;
+			}
+
 			// 2. - 4.
 			if (attr.AttributeType == null)
 				HandleError ("Attribute type is missing for " + attr.QualifiedName);
@@ -885,9 +903,17 @@ namespace System.Xml.Schema
 				}
 
 				// check part of 3.14.4 StringValid
-				SimpleType st = attr.AttributeType as SimpleType;
-				if (st != null)
-					ValidateRestrictedSimpleTypeValue (st, ref dt, new XmlAtomicValue (parsedValue, attr.AttributeSchemaType).Value);
+				SimpleType st = attr.AttributeSchemaType;
+				if (st != null) {
+					string xav = null;
+					try {
+						xav = new XmlAtomicValue (parsedValue, attr.AttributeSchemaType).Value;
+					} catch (Exception ex) {
+						HandleError (String.Format ("Failed to convert attribute value to type {0}", st.QualifiedName), ex);
+					}
+					if (xav != null)
+						ValidateRestrictedSimpleTypeValue (st, ref dt, xav);
+				}
 
 				if (attr.ValidatedFixedValue != null) {
 					if (!XmlSchemaUtil.AreSchemaDatatypeEqual (attr.AttributeSchemaType, attr.ValidatedFixedTypedValue, attr.AttributeSchemaType, parsedValue))
diff --git a/mcs/class/System.XML/System.Xml.Serialization/ChangeLog b/mcs/class/System.XML/System.Xml.Serialization/ChangeLog
index 6300882..ecc94da 100644
--- a/mcs/class/System.XML/System.Xml.Serialization/ChangeLog
+++ b/mcs/class/System.XML/System.Xml.Serialization/ChangeLog
@@ -1,3 +1,38 @@
+2010-12-13  Lluis Sanchez  <lluis at novell.com>
+
+	Fix several issues in the code generator
+
+	Issues include: casts not being properly generated for nullable
+	types, missing cast when the type of a member does not match the
+	forced serialization type, and incorrect code generated for
+	handling [XmlText] members.
+
+2010-12-13  Lluis Sanchez  <lluis at novell.com>
+
+	Fix code generation issue with nested generic types
+
+	The type argument list for generic nested types include all types
+	arguments for the whole declaring type chain. When generating the
+	C# name of the class, each type argument has to be assigned to the
+	correct class in the chain.
+
+2010-12-13  Lluis Sanchez  <lluis at novell.com>
+
+	Throw correct exceptions when using generated serializer
+
+	Invocations to generated serializers are done through reflection,
+	so exceptions are masked by TargetInvocationException. The inner
+	exception has to be rethrown so that the client code gets the
+	correct exception.
+
+2010-09-08  Jb Evain  <jbevain at gmail.com>
+
+	Fix the monodroid and monotouch profile builds
+
+2010-09-08  Jb Evain  <jbevain at gmail.com>
+
+	Enable the System.Xml build for monodroid
+
 2010-03-29  Atsushi Enomoto  <atsushi at ximian.com>
 
 	* XmlTypeMapping.cs, XmlReflectionImporter.cs: XmlRoot takes higher
diff --git a/mcs/class/System.XML/System.Xml.Serialization/ChangeLog b/mcs/class/System.XML/System.Xml.Serialization/ChangeLog.old
similarity index 100%
copy from mcs/class/System.XML/System.Xml.Serialization/ChangeLog
copy to mcs/class/System.XML/System.Xml.Serialization/ChangeLog.old
diff --git a/mcs/class/System.XML/System.Xml.Serialization/SerializationCodeGenerator.cs b/mcs/class/System.XML/System.Xml.Serialization/SerializationCodeGenerator.cs
index 4e43a4f..9168fd3 100644
--- a/mcs/class/System.XML/System.Xml.Serialization/SerializationCodeGenerator.cs
+++ b/mcs/class/System.XML/System.Xml.Serialization/SerializationCodeGenerator.cs
@@ -843,7 +843,8 @@ namespace System.Xml.Serialization
 						else if (memType == typeof(XmlTypeMapMemberElement))
 						{
 							if (member.ElementInfo.Count == 1) {
-								GenerateWriteMemberElement ((XmlTypeMapElementInfo)member.ElementInfo[0], memberValue);
+								XmlTypeMapElementInfo elem = (XmlTypeMapElementInfo)member.ElementInfo[0];
+								GenerateWriteMemberElement (elem, GetCast(elem.TypeData, member.TypeData, memberValue));
 							}
 							else if (member.ChoiceMember != null)
 							{
@@ -973,20 +974,19 @@ namespace System.Xml.Serialization
 			bool singleElement = (member.TypeData.Type == typeof (XmlElement));
 			string var, var2;
 			
-			var2 = GetObTempVar ();
+			var = GetObTempVar ();
 			if (singleElement)
-				var = memberValue;
+				var2 = memberValue;
 			else {
-				var = GetObTempVar ();
+				var2 = GetObTempVar ();
 				WriteLineInd ("foreach (object " + var2 + " in " + memberValue + ") {");
 			}
 			WriteLine ("XmlNode " + var + " = " + var2 + " as XmlNode;");
-			WriteLine ("if (" + var + " == null && " + var2 + "!= null) throw new InvalidOperationException (\"A member with XmlAnyElementAttribute can only serialize and deserialize certain XmlNode types.");
-			WriteLineUni ("}");
+			WriteLine ("if (" + var + " == null && " + var2 + "!= null) throw new InvalidOperationException (\"A member with XmlAnyElementAttribute can only serialize and deserialize certain XmlNode types.\");");
 
 			string elem = GetObTempVar ();
 			WriteLine ("XmlNode " + elem + " = " + var + ";");
-			WriteLine ("if (" + elem + " is XmlElement) {");
+			WriteLineInd ("if (" + elem + " is XmlElement) {");
 			
 			if (!member.IsDefaultAny) {
 				for (int n=0; n<member.ElementInfo.Count; n++) {
@@ -997,8 +997,6 @@ namespace System.Xml.Serialization
 					else WriteLine ("|| " + txt);
 				}				
 			}
-			WriteLine ("}");
-			WriteLine ("else " + elem + ".WriteTo (Writer);");
 
 			if (_format == SerializationFormat.Literal) 
 				WriteLine ("WriteElementLiteral (" + elem + ", \"\", \"\", false, true);");
@@ -1011,6 +1009,8 @@ namespace System.Xml.Serialization
 				WriteLine ("throw CreateUnknownAnyElementException (" + elem + ".Name, " + elem + ".NamespaceURI);");
 				Unindent ();
 			}
+			WriteLineUni ("}");
+			WriteLine ("else " + elem + ".WriteTo (Writer);");
 			
 			if (!singleElement)
 				WriteLineUni ("}");
@@ -1743,7 +1743,10 @@ namespace System.Xml.Serialization
 							if (!map.IgnoreMemberNamespace) elemCond += " && Reader.NamespaceURI == " + GetLiteral (info.Namespace);
 							elemCond += " && ";
 						}
-						elemCond += "!" + readFlag[info.Member.Index] + ") {";
+						if (readFlag[info.Member.Index] != null)
+							elemCond += "!" + readFlag[info.Member.Index] + ") {";
+						else
+							elemCond += "true) {";
 						WriteLineInd (elemCond);
 					}
 	
@@ -2741,7 +2744,10 @@ namespace System.Xml.Serialization
 
 		string GetCast (TypeData td, string val)
 		{
-			return "((" + td.CSharpFullName + ") " + val + ")";
+			if (td.IsNullable && td.IsValueType)
+				return "((" + td.CSharpFullName + "?) " + val + ")";
+			else
+				return "((" + td.CSharpFullName + ") " + val + ")";
 		}
 
 		string GetCast (Type td, string val)
diff --git a/mcs/class/System.XML/System.Xml.Serialization/TypeData.cs b/mcs/class/System.XML/System.Xml.Serialization/TypeData.cs
index 00e9beb..5c8c480 100644
--- a/mcs/class/System.XML/System.Xml.Serialization/TypeData.cs
+++ b/mcs/class/System.XML/System.Xml.Serialization/TypeData.cs
@@ -162,8 +162,9 @@ namespace System.Xml.Serialization
 		public static string ToCSharpName (Type type, bool full)
 		{
 			// return csprovider.GetTypeOutput (new System.CodeDom.CodeTypeReference (type));
+			StringBuilder sb = new StringBuilder ();
+			
 			if (type.IsArray) {
-				StringBuilder sb = new StringBuilder ();
 				sb.Append (ToCSharpName (type.GetElementType (), full));
 				sb.Append ('[');
 				int rank = type.GetArrayRank ();
@@ -173,25 +174,48 @@ namespace System.Xml.Serialization
 				return sb.ToString ();
 			}
 #if NET_2_0
+			// Generic nested types return the complete list of type arguments,
+			// including type arguments for the declaring class. This requires
+			// some special handling
 			if (type.IsGenericType && !type.IsGenericTypeDefinition) {
-				StringBuilder sb = new StringBuilder ();
-				sb.Append (ToCSharpName (type.GetGenericTypeDefinition (), full));
-				sb.Append ('<');
-				foreach (Type arg in type.GetGenericArguments ())
-					sb.Append (ToCSharpName (arg, full)).Append (',');
-				sb.Length--;
-				sb.Append ('>');
+				Type[] args = type.GetGenericArguments ();
+				int nt = args.Length - 1;
+				Type pt = type;
+				// Loop throguh the declaring class chain, consuming type arguments for every
+				// generic class in the chain
+				while (pt != null) {
+					if (sb.Length > 0)
+						sb.Insert (0, '.');
+					int i = pt.Name.IndexOf ('`');
+					if (i != -1) {
+						int na = nt - int.Parse (pt.Name.Substring (i+1));
+						sb.Insert (0,'>');
+						for (;nt > na; nt--) {
+							sb.Insert (0, ToCSharpName (args[nt],full));
+							if (nt - 1 != na)
+								sb.Insert (0, ',');
+						}
+						sb.Insert (0,'<');
+						sb.Insert (0, pt.Name.Substring (0, i));
+					} else
+						sb.Insert (0, pt.Name);
+					pt = pt.DeclaringType;
+				}
+				if (full && type.Namespace.Length > 0)
+					sb.Insert (0, type.Namespace + ".");
 				return sb.ToString ();
 			}
 #endif
-			string name = full ? type.FullName : type.Name;
-			name = name.Replace ('+', '.');
-			int idx = name.IndexOf ('`'); // generic definition has extra `n.
-			name = idx > 0 ? name.Substring (0, idx) : name;
-			if (IsKeyword (name))
-				return "@" + name;
-			else
-				return name;
+			if (type.DeclaringType != null) {
+				sb.Append (ToCSharpName (type.DeclaringType, full)).Append ('.');
+				sb.Append (type.Name);
+			}
+			else {
+				if (full && type.Namespace.Length > 0)
+					sb.Append (type.Namespace).Append ('.');
+				sb.Append (type.Name);
+			}
+			return sb.ToString ();
 		}
 		
 		static bool IsKeyword (string name)
diff --git a/mcs/class/System.XML/System.Xml.Serialization/XmlMemberMapping.cs b/mcs/class/System.XML/System.Xml.Serialization/XmlMemberMapping.cs
index 9bdea9d..36046c9 100644
--- a/mcs/class/System.XML/System.Xml.Serialization/XmlMemberMapping.cs
+++ b/mcs/class/System.XML/System.Xml.Serialization/XmlMemberMapping.cs
@@ -127,7 +127,7 @@ namespace System.Xml.Serialization
 		{
 			get { return _mapMember.Name; }
 		}
-#if !TARGET_JVM	&& !MONOTOUCH
+#if !TARGET_JVM	&& !MOBILE
 		public string GenerateTypeName (System.CodeDom.Compiler.CodeDomProvider codeProvider)
 		{
 			string ret = codeProvider.CreateValidIdentifier (_mapMember.TypeData.FullTypeName);
diff --git a/mcs/class/System.XML/System.Xml.Serialization/XmlSchemaImporter.cs b/mcs/class/System.XML/System.Xml.Serialization/XmlSchemaImporter.cs
index 91e8fac..079fadd 100644
--- a/mcs/class/System.XML/System.Xml.Serialization/XmlSchemaImporter.cs
+++ b/mcs/class/System.XML/System.Xml.Serialization/XmlSchemaImporter.cs
@@ -30,7 +30,7 @@
 //
 
 using System.Xml;
-#if !TARGET_JVM && !MONOTOUCH
+#if !TARGET_JVM && !MOBILE
 using System.CodeDom.Compiler;
 #endif
 using System.Xml.Schema;
@@ -43,7 +43,7 @@ using System.Xml.Serialization.Configuration;
 namespace System.Xml.Serialization 
 {
 	public class XmlSchemaImporter
-#if NET_2_0 && !MONOTOUCH
+#if NET_2_0 && !MOBILE
 		: SchemaImporter
 #endif
 	{
@@ -100,7 +100,7 @@ namespace System.Xml.Serialization
 		}
 		
 #if NET_2_0
-#if !TARGET_JVM && !MONOTOUCH
+#if !TARGET_JVM && !MOBILE
 		[MonoTODO]
 		public XmlSchemaImporter (XmlSchemas schemas, CodeGenerationOptions options, CodeDomProvider codeProvider, ImportContext context)
 		{
diff --git a/mcs/class/System.XML/System.Xml.Serialization/XmlSerializer.cs b/mcs/class/System.XML/System.Xml.Serialization/XmlSerializer.cs
index 380774f..0c270d7 100644
--- a/mcs/class/System.XML/System.Xml.Serialization/XmlSerializer.cs
+++ b/mcs/class/System.XML/System.Xml.Serialization/XmlSerializer.cs
@@ -37,7 +37,7 @@ using System.Reflection;
 using System.Xml;
 using System.Xml.Schema;
 using System.Text;
-#if !TARGET_JVM && !MONOTOUCH
+#if !TARGET_JVM && !MOBILE
 using System.CodeDom;
 using System.CodeDom.Compiler;
 using Microsoft.CSharp;
@@ -120,7 +120,7 @@ namespace System.Xml.Serialization
 			//       debugging pourposes by adding the "nofallback" option.
 			//       For example: MONO_XMLSERIALIZER_THS=0,nofallback
 			
-#if TARGET_JVM || MONOTOUCH
+#if TARGET_JVM || MOBILE
 			string db = null;
 			string th = null;
 			generationThreshold = -1;
@@ -150,7 +150,7 @@ namespace System.Xml.Serialization
 			}
 #endif
 			deleteTempFiles = (db == null || db == "no");
-#if !MONOTOUCH			
+#if !MOBILE
 			IDictionary table = (IDictionary) ConfigurationSettings.GetConfig("system.diagnostics");
 			if (table != null) 
 			{
@@ -359,8 +359,13 @@ namespace System.Xml.Serialization
 			try {
 				if (reader is XmlSerializationReaderInterpreter)
 					return ((XmlSerializationReaderInterpreter) reader).ReadRoot ();
-				else
-					return serializerData.ReaderMethod.Invoke (reader, null);
+				else {
+					try {
+						return serializerData.ReaderMethod.Invoke (reader, null);
+					} catch (TargetInvocationException ex) {
+						throw ex.InnerException;
+					}
+				}
 			} catch (Exception ex) {
 				if (ex is InvalidOperationException || ex is InvalidCastException)
 					throw new InvalidOperationException ("There is an error in"
@@ -407,8 +412,13 @@ namespace System.Xml.Serialization
 				
 			if (writer is XmlSerializationWriterInterpreter)
 				((XmlSerializationWriterInterpreter)writer).WriteRoot (o);
-			else
-				serializerData.WriterMethod.Invoke (writer, new object[] {o});
+			else {
+				try {
+					serializerData.WriterMethod.Invoke (writer, new object[] {o});
+				} catch (TargetInvocationException ex) {
+					throw ex.InnerException;
+				}
+			}
 		}
 
 		public void Serialize (Stream stream, object o)
@@ -513,7 +523,7 @@ namespace System.Xml.Serialization
 			throw new NotImplementedException ();
 		}
 
-#if !TARGET_JVM && !MONOTOUCH
+#if !TARGET_JVM && !MOBILE
 		public static Assembly GenerateSerializer (Type[] types, XmlMapping[] mappings)
 		{
 			return GenerateSerializer (types, mappings, null);
@@ -619,7 +629,7 @@ namespace System.Xml.Serialization
 			return new XmlSerializationReaderInterpreter (typeMapping);
 		}
 		
-#if TARGET_JVM || MONOTOUCH
+#if TARGET_JVM || MOBILE
  		void CheckGeneratedTypes (XmlMapping typeMapping)
  		{
 			throw new NotImplementedException();
diff --git a/mcs/class/System.XML/System.Xml.Xsl/ChangeLog b/mcs/class/System.XML/System.Xml.Xsl/ChangeLog
index 5771e12..78fe855 100644
--- a/mcs/class/System.XML/System.Xml.Xsl/ChangeLog
+++ b/mcs/class/System.XML/System.Xml.Xsl/ChangeLog
@@ -1,3 +1,7 @@
+2010-09-08  Jb Evain  <jbevain at gmail.com>
+
+	Enable the System.Xml build for monodroid
+
 2009-11-09  Jb Evain  <jbevain at novell.com>
 
 	* XslCompiledTransform.cs: ifdef the temporary files collection
diff --git a/mcs/class/System.XML/System.Xml.Xsl/ChangeLog b/mcs/class/System.XML/System.Xml.Xsl/ChangeLog.old
similarity index 100%
copy from mcs/class/System.XML/System.Xml.Xsl/ChangeLog
copy to mcs/class/System.XML/System.Xml.Xsl/ChangeLog.old
diff --git a/mcs/class/System.XML/System.Xml.Xsl/XslCompiledTransform.cs b/mcs/class/System.XML/System.Xml.Xsl/XslCompiledTransform.cs
index d6687cc..3500e44 100644
--- a/mcs/class/System.XML/System.Xml.Xsl/XslCompiledTransform.cs
+++ b/mcs/class/System.XML/System.Xml.Xsl/XslCompiledTransform.cs
@@ -49,7 +49,7 @@ namespace System.Xml.Xsl
 		bool enable_debug;
 		object debugger;
 		CompiledStylesheet s;
-#if !TARGET_JVM && !MONOTOUCH
+#if !TARGET_JVM && !MOBILE
 //		TempFileCollection temporary_files;
 #endif
 		XmlWriterSettings output_settings = new XmlWriterSettings ();
@@ -72,7 +72,7 @@ namespace System.Xml.Xsl
 			get { return output_settings; }
 		}
 
-#if !TARGET_JVM && !MONOTOUCH
+#if !TARGET_JVM && !MOBILE
 		[MonoTODO]
 		public TempFileCollection TemporaryFiles {
 			get { return null; /*temporary_files;*/ }
diff --git a/mcs/class/System.XML/System.Xml.dll.sources b/mcs/class/System.XML/System.Xml.dll.sources
index 514fc77..e4fd486 100644
--- a/mcs/class/System.XML/System.Xml.dll.sources
+++ b/mcs/class/System.XML/System.Xml.dll.sources
@@ -145,6 +145,7 @@ System.Xml/XmlQualifiedName.cs
 System.Xml/XmlReader.cs
 System.Xml/XmlReaderBinarySupport.cs
 System.Xml/XmlReaderSettings.cs
+System.Xml/DtdProcessing.cs
 System.Xml/XmlResolver.cs
 System.Xml/XmlSecureResolver.cs
 System.Xml/XmlSignificantWhitespace.cs
diff --git a/mcs/class/System.XML/System.Xml/ChangeLog b/mcs/class/System.XML/System.Xml/ChangeLog
index 1b57040..752d1e5 100644
--- a/mcs/class/System.XML/System.Xml/ChangeLog
+++ b/mcs/class/System.XML/System.Xml/ChangeLog
@@ -1,3 +1,71 @@
+2011-01-06  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Revert
+
+2011-01-06  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	[Windows] Implement GetDrives.
+
+	Drive names are ok, but the type is always 'Fixed'. Fixes bug
+	#660907.
+
+2011-01-06  Marek Habersack  <grendel at twistedcode.net>
+
+	[xml] Out of range errors should be swallowed when doing string ->
+	datetime conversion
+
+2011-01-05  Atsushi Eno  <atsushi at ximian.com>
+
+	Fix ToDateTime() with serialization mode to not mess hour based on
+	timezone.
+
+	Fixed bug #661787.
+
+2010-12-06  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	[System.Xml] Enable existing API under 4.0 profile too
+
+2010-11-26  Atsushi Eno  <atsushi at ximian.com>
+
+	Do not add 'zzz' to all DateTime formats blindly. Fixed bug
+	#655089.
+
+2010-11-12  Andreia Gaita  <shana at jitted.com>
+
+	[Xml] duh, don't hide the stacktrace
+
+2010-11-12  Andreia Gaita  <shana at jitted.com>
+
+	[Xml] Check if the underlying writer supports LookupPrefix and
+	return empty instead of blowing up.
+
+2010-11-09  Andreia Gaita  <shana at jitted.com>
+
+	[Xml] Only call Close on the base Writer if it hasn't been closed
+	yet. Fixes #651647
+
+	The serialization classes provided by the SL toolkit
+	(System.Runtime.Serialization.dll) don't like having Close called
+	more than once, so it seems that they don't check their own state
+	and we have to do it to avoid making repeated Close calls.
+
+2010-10-27  Andreia Gaita  <shana at jitted.com>
+
+	[Xml] Fix GetAttribute to handle null namespaces properly, add
+	unit test.
+
+2010-10-18  Atsushi Eno  <atsushi at ximian.com>
+
+	XmlDocument.InnerText is overriden to explicitly throw IOE in 4.0.
+
+2010-09-08  Jb Evain  <jbevain at gmail.com>
+
+	Enable the System.Xml build for monodroid
+
+2010-09-01  Atsushi Eno  <atsushi at ximian.com>
+
+	Allow empty element in ReadElementContent*() e.g. for empty list.
+
 2010-08-30  Atsushi Eno  <atsushi at ximian.com>
 
 	Uri was also not supported in Read*ContentAs().
diff --git a/mcs/class/System.XML/System.Xml/DefaultXmlWriter.cs b/mcs/class/System.XML/System.Xml/DefaultXmlWriter.cs
index 1c3895c..db7951b 100644
--- a/mcs/class/System.XML/System.Xml/DefaultXmlWriter.cs
+++ b/mcs/class/System.XML/System.Xml/DefaultXmlWriter.cs
@@ -17,6 +17,7 @@ namespace System.Xml
 		XmlWriter writer;
 		WriteState state = WriteState.Start;
 		bool delegate_write_state;
+		bool supports_lookup;
 
 		public DefaultXmlWriter (XmlWriter writer)
 			: this (writer, true)
@@ -27,6 +28,7 @@ namespace System.Xml
 		{
 			this.writer = writer;
 			delegate_write_state = delegateWriteState;
+			supports_lookup = true;
 		}
 	
 		protected XmlWriter Writer {
@@ -40,7 +42,8 @@ namespace System.Xml
 
 		public override void Close ()
 		{
-			writer.Close ();
+			if (state != WriteState.Closed)
+				writer.Close ();
 			state = WriteState.Closed;
 		}
 	
@@ -51,7 +54,16 @@ namespace System.Xml
 	
 		public override string LookupPrefix (string ns)
 		{
-			return writer.LookupPrefix (ns);
+			if (!supports_lookup)
+				return String.Empty;
+			try {
+				return writer.LookupPrefix (ns);
+			} catch (NotSupportedException ex) {
+				supports_lookup = false;
+				return String.Empty;
+			} catch (Exception ex) {
+				throw;
+			}
 		}
 	
 		public override void WriteBase64 (byte [] buffer, int index, int count)
diff --git a/mcs/class/System.XML/System.Xml/DtdProcessing.cs b/mcs/class/System.XML/System.Xml/DtdProcessing.cs
index c69f2e2..2eb9f2b 100644
--- a/mcs/class/System.XML/System.Xml/DtdProcessing.cs
+++ b/mcs/class/System.XML/System.Xml/DtdProcessing.cs
@@ -28,7 +28,7 @@
 
 
 namespace System.Xml {
-#if NET_2_1
+#if NET_2_1 || NET_4_0
 	public enum DtdProcessing 
 	{
 		Prohibit = 0,
diff --git a/mcs/class/System.XML/System.Xml/XmlConvert.cs b/mcs/class/System.XML/System.Xml/XmlConvert.cs
index 99b2030..0be0b0e 100644
--- a/mcs/class/System.XML/System.Xml/XmlConvert.cs
+++ b/mcs/class/System.XML/System.Xml/XmlConvert.cs
@@ -166,7 +166,7 @@ namespace System.Xml {
 			unspecifiedDateTimeFormats = new string [l * 4];
 			for (int i = 0; i < l; i++) {
 				string s = defaultDateTimeFormats [i];
-				localDateTimeFormats [i] = s + "zzz";
+				localDateTimeFormats [i] = s + (s [s.Length - 1] == 's' || s [s.Length - 1] == 'F' ? "zzz" : String.Empty);
 				roundtripDateTimeFormats [i] = s + 'K';
 				utcDateTimeFormats [i * 3] = s;
 				utcDateTimeFormats [i * 3 + 1] = s + 'Z';
@@ -369,12 +369,12 @@ namespace System.Xml {
 			switch (mode) {
 			case XmlDateTimeSerializationMode.Local:
 				dt = ToDateTime (value, localDateTimeFormats);
-				return dt == DateTime.MinValue || dt == DateTime.MaxValue ? dt : dt.ToLocalTime ();
+				return new DateTime (dt.Ticks, DateTimeKind.Local);
 			case XmlDateTimeSerializationMode.RoundtripKind:
 				return ToDateTime (value, roundtripDateTimeFormats, _defaultStyle | DateTimeStyles.RoundtripKind);
 			case XmlDateTimeSerializationMode.Utc:
 				dt = ToDateTime (value, utcDateTimeFormats);
-				return dt == DateTime.MinValue || dt == DateTime.MaxValue ? dt : dt.ToUniversalTime ();
+				return new DateTime (dt.Ticks, DateTimeKind.Utc);
 			case XmlDateTimeSerializationMode.Unspecified:
 				return ToDateTime (value, unspecifiedDateTimeFormats);
 			default:
@@ -399,7 +399,11 @@ namespace System.Xml {
 
 		private static DateTime ToDateTime (string s, string [] formats, DateTimeStyles style) 
 		{
-			return DateTime.ParseExact (s, formats, DateTimeFormatInfo.InvariantInfo, style);
+			try {
+				return DateTime.ParseExact (s, formats, DateTimeFormatInfo.InvariantInfo, style);
+			} catch (ArgumentOutOfRangeException) {
+				return DateTime.MinValue;
+			}
 		}
 		
 		public static Decimal ToDecimal(string s)
diff --git a/mcs/class/System.XML/System.Xml/XmlDocument.cs b/mcs/class/System.XML/System.Xml/XmlDocument.cs
index 7e2ad74..3378021 100644
--- a/mcs/class/System.XML/System.Xml/XmlDocument.cs
+++ b/mcs/class/System.XML/System.Xml/XmlDocument.cs
@@ -179,6 +179,12 @@ namespace System.Xml
 			get { return implementation; }
 		}
 
+#if NET_4_0
+		public override string InnerText {
+			set { throw new InvalidOperationException (); }
+		}
+#endif
+
 		public override string InnerXml {
 			get {
 				return base.InnerXml;
diff --git a/mcs/class/System.XML/System.Xml/XmlReader.cs b/mcs/class/System.XML/System.Xml/XmlReader.cs
index e14ee48..8817670 100644
--- a/mcs/class/System.XML/System.Xml/XmlReader.cs
+++ b/mcs/class/System.XML/System.Xml/XmlReader.cs
@@ -971,7 +971,10 @@ namespace System.Xml
 
 		public virtual object ReadElementContentAs (Type type, IXmlNamespaceResolver resolver, string localName, string namespaceURI)
 		{
+			bool isEmpty = IsEmptyElement;
 			ReadStartElement (localName, namespaceURI);
+			if (isEmpty)
+				return ValueAs (String.Empty, type, resolver, false);
 			object obj = ReadContentAs (type, resolver);
 			ReadEndElement ();
 			return obj;
diff --git a/mcs/class/System.XML/System.Xml/XmlReaderSettings.cs b/mcs/class/System.XML/System.Xml/XmlReaderSettings.cs
index 444ec80..0ae140e 100644
--- a/mcs/class/System.XML/System.Xml/XmlReaderSettings.cs
+++ b/mcs/class/System.XML/System.Xml/XmlReaderSettings.cs
@@ -60,7 +60,7 @@ namespace System.Xml
 		private ValidationType validationType;
 #endif
 		private XmlResolver xmlResolver;
-#if MOONLIGHT
+#if MOONLIGHT || NET_4_0
 		private DtdProcessing dtdProcessing;
 		private long maxCharactersFromEntities;
 		private long maxCharactersInDocument;
@@ -118,7 +118,7 @@ namespace System.Xml
 			get { return conformance; }
 			set { conformance = value; }
 		}
-#if MOONLIGHT
+#if MOONLIGHT || NET_4_0
 		public DtdProcessing DtdProcessing {
 			get { return dtdProcessing; }
 			set {
diff --git a/mcs/class/System.XML/System.Xml/XmlTextReader.cs b/mcs/class/System.XML/System.Xml/XmlTextReader.cs
index f9422aa..44d5423 100644
--- a/mcs/class/System.XML/System.Xml/XmlTextReader.cs
+++ b/mcs/class/System.XML/System.Xml/XmlTextReader.cs
@@ -424,6 +424,7 @@ namespace System.Xml
 
 		private int GetIndexOfQualifiedAttribute (string localName, string namespaceURI)
 		{
+			namespaceURI = namespaceURI ?? String.Empty;
 			for (int i = 0; i < attributeCount; i++) {
 				XmlAttributeTokenInfo ti = attributeTokens [i];
 				if (ti.LocalName == localName && ti.NamespaceURI == namespaceURI)
diff --git a/mcs/class/System.XML/System.Xml/XmlXapResolver.cs b/mcs/class/System.XML/System.Xml/XmlXapResolver.cs
index b84a5d1..f11ad5f 100644
--- a/mcs/class/System.XML/System.Xml/XmlXapResolver.cs
+++ b/mcs/class/System.XML/System.Xml/XmlXapResolver.cs
@@ -31,7 +31,7 @@
 using System.IO;
 using System.Reflection;
 
-#if !MONOTOUCH
+#if !MOBILE
 namespace System.Xml
 {
 	public class XmlXapResolver : XmlResolver
diff --git a/mcs/class/System.XML/Test/System.Xml.Schema/ChangeLog b/mcs/class/System.XML/Test/System.Xml.Schema/ChangeLog
index b5a4f30..2cfab9e 100644
--- a/mcs/class/System.XML/Test/System.Xml.Schema/ChangeLog
+++ b/mcs/class/System.XML/Test/System.Xml.Schema/ChangeLog
@@ -1,3 +1,7 @@
+2010-11-16  myeisha  <github at quasiparticle.net>
+
+	Add testcase for multiple missing IDs
+
 2010-03-15  Atsushi Enomoto  <atsushi at ximian.com>
 
 	* XmlSchemaValidatorTests.cs : added test for bug #584664.
diff --git a/mcs/class/System.XML/Test/System.Xml.Schema/ChangeLog b/mcs/class/System.XML/Test/System.Xml.Schema/ChangeLog.old
similarity index 100%
copy from mcs/class/System.XML/Test/System.Xml.Schema/ChangeLog
copy to mcs/class/System.XML/Test/System.Xml.Schema/ChangeLog.old
diff --git a/mcs/class/System.XML/Test/System.Xml.Schema/XmlSchemaValidatorTests.cs b/mcs/class/System.XML/Test/System.Xml.Schema/XmlSchemaValidatorTests.cs
index e58e24c..9d5da5f 100644
--- a/mcs/class/System.XML/Test/System.Xml.Schema/XmlSchemaValidatorTests.cs
+++ b/mcs/class/System.XML/Test/System.Xml.Schema/XmlSchemaValidatorTests.cs
@@ -297,6 +297,37 @@ namespace MonoTests.System.Xml
 			Validate (File.ReadAllText ("Test/XmlFiles/xsd/584664a.xml"), File.ReadAllText ("Test/XmlFiles/xsd/584664a.xsd"));
 			Validate (File.ReadAllText ("Test/XmlFiles/xsd/584664b.xml"), File.ReadAllText ("Test/XmlFiles/xsd/584664b.xsd"));
 		}
+
+		[Test]
+		public void MultipleMissingIds ()
+		{
+			var schema = XmlSchema.Read (new StringReader (@"<?xml version=""1.0"" encoding=""utf-8""?>
+<xs:schema targetNamespace=""urn:multiple-ids"" elementFormDefault=""qualified"" xmlns=""urn:multiple-ids"" xmlns:xs=""http://www.w3.org/2001/XMLSchema"">
+	<xs:element name=""root"">
+		<xs:complexType>
+			<xs:sequence minOccurs=""0"" maxOccurs=""unbounded"">
+				<xs:element name=""item"">
+					<xs:complexType>
+						<xs:attribute name=""id"" type=""xs:ID"" />
+						<xs:attribute name=""parent"" type=""xs:IDREF"" />
+					</xs:complexType>
+				</xs:element>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+</xs:schema>"), null);
+			var xml = @"<?xml version=""1.0"" encoding=""utf-8""?>
+<root xmlns=""urn:multiple-ids"">
+	<item id=""id2"" parent=""id1"" />
+	<item id=""id3"" parent=""id1"" />
+	<item id=""id1"" parent=""id1"" />
+</root>";
+			var document = new XmlDocument ();
+			document.LoadXml (xml);
+			document.Schemas = new XmlSchemaSet ();
+			document.Schemas.Add (schema);
+			document.Validate (null);
+		}
 	}
 }
 
diff --git a/mcs/class/System.XML/Test/System.Xml/ChangeLog b/mcs/class/System.XML/Test/System.Xml/ChangeLog
index fd03a65..6357fd8 100644
--- a/mcs/class/System.XML/Test/System.Xml/ChangeLog
+++ b/mcs/class/System.XML/Test/System.Xml/ChangeLog
@@ -1,3 +1,29 @@
+2011-01-05  Atsushi Eno  <atsushi at ximian.com>
+
+	Fix ToDateTime() with serialization mode to not mess hour based on
+	timezone.
+
+	Fixed bug #661787.
+
+2010-11-29  Atsushi Eno  <atsushi at ximian.com>
+
+	Return different instances of XmlSchemaInfo for each validated
+	node in XmlSchemaValidatingReader.
+
+2010-11-26  Atsushi Eno  <atsushi at ximian.com>
+
+	Do not add 'zzz' to all DateTime formats blindly. Fixed bug
+	#655089.
+
+2010-11-19  Atsushi Eno  <atsushi at ximian.com>
+
+	The test is network dependent.
+
+2010-10-27  Andreia Gaita  <shana at jitted.com>
+
+	[Xml] Fix GetAttribute to handle null namespaces properly, add
+	unit test.
+
 2010-08-09  atsushieno  <atsushi at ximian.com>
 
 	Parse list type, and parse QName without prefix, as expected.
diff --git a/mcs/class/System.XML/Test/System.Xml/XmlConvertTests.cs b/mcs/class/System.XML/Test/System.Xml/XmlConvertTests.cs
index f8d698e..3f5ac6e 100644
--- a/mcs/class/System.XML/Test/System.Xml/XmlConvertTests.cs
+++ b/mcs/class/System.XML/Test/System.Xml/XmlConvertTests.cs
@@ -684,6 +684,13 @@ namespace MonoTests.System.Xml
 		}
 		
 		[Test]
+		public void XmlDateTimeSerializationModeLocal ()
+		{
+			XmlConvert.ToDateTime ("2010-11-10", XmlDateTimeSerializationMode.Local); // bug #655089
+			XmlConvert.ToDateTime ("2010-11", XmlDateTimeSerializationMode.Local);
+		}
+		
+		[Test]
 		public void XmlDateTimeSerializationModeUtc ()
 		{
 			Assert.AreEqual (27, XmlConvert.ToString (new DateTime (DateTime.MaxValue.Ticks, DateTimeKind.Utc), XmlDateTimeSerializationMode.Unspecified).Length, "#1");
@@ -756,6 +763,14 @@ namespace MonoTests.System.Xml
 			var s = "   2010-01-02T00:00:00Z \t";
 			XmlConvert.ToDateTime (s);
 		}
+		
+		[Test]
+		public void ToDateTimeUtc ()
+		{
+			// bug #661787
+			var date = XmlConvert.ToDateTime ("2010-12-29T22:01:15.1619814", XmlDateTimeSerializationMode.Utc);
+			Assert.AreEqual (22, date.Hour, "#1");
+		}
 #endif
 	}
 }
diff --git a/mcs/class/System.XML/Test/System.Xml/XmlElementTests.cs b/mcs/class/System.XML/Test/System.Xml/XmlElementTests.cs
index efba911..e92df56 100644
--- a/mcs/class/System.XML/Test/System.Xml/XmlElementTests.cs
+++ b/mcs/class/System.XML/Test/System.Xml/XmlElementTests.cs
@@ -608,6 +608,8 @@ namespace MonoTests.System.Xml
 		}
 
 		[Test] // bug #380720
+		[Category ("Networking")]
+		[Ignore ("The server takes too much time to respond")]
 		public void SetAttributeWithIdentity ()
 		{
 			XmlDocument doc = new XmlDocument ();
diff --git a/mcs/class/System.XML/Test/System.Xml/XmlTextReaderTests.cs b/mcs/class/System.XML/Test/System.Xml/XmlTextReaderTests.cs
index 5d245a7..63d226d 100644
--- a/mcs/class/System.XML/Test/System.Xml/XmlTextReaderTests.cs
+++ b/mcs/class/System.XML/Test/System.Xml/XmlTextReaderTests.cs
@@ -1348,5 +1348,15 @@ namespace MonoTests.System.Xml
 			XmlDocument doc = new XmlDocument ();
 			doc.LoadXml ("<root xml:base='' />");
 		}
+
+		[Test]
+		public void GetAttribute ()
+		{
+			StringReader sr = new StringReader("<rootElement myAttribute=\"the value\"></rootElement>");
+			using (XmlReader reader = XmlReader.Create(sr)) {
+				reader.Read ();
+				Assert.AreEqual (reader.GetAttribute("myAttribute", null), "the value", "#1");
+			}
+		}
 	}
 }
diff --git a/mcs/class/System.XML/monotouch_System.Xml.dll.sources b/mcs/class/System.XML/mobile_System.Xml.dll.sources
similarity index 100%
copy from mcs/class/System.XML/monotouch_System.Xml.dll.sources
copy to mcs/class/System.XML/mobile_System.Xml.dll.sources
diff --git a/mcs/class/System.XML/monodroid_System.Xml.dll.sources b/mcs/class/System.XML/monodroid_System.Xml.dll.sources
new file mode 100644
index 0000000..b663093
--- /dev/null
+++ b/mcs/class/System.XML/monodroid_System.Xml.dll.sources
@@ -0,0 +1 @@
+#include mobile_System.Xml.dll.sources
diff --git a/mcs/class/System.XML/monotouch_System.Xml.dll.sources b/mcs/class/System.XML/monotouch_System.Xml.dll.sources
index 096a177..b663093 100644
--- a/mcs/class/System.XML/monotouch_System.Xml.dll.sources
+++ b/mcs/class/System.XML/monotouch_System.Xml.dll.sources
@@ -1,372 +1 @@
-Assembly/AssemblyInfo.cs
-../../build/common/Consts.cs
-../../build/common/Locale.cs
-
-Mono.Xml.Schema/XmlSchemaValidatingReader.cs
-Mono.Xml.Schema/XsdIdentityPath.cs
-Mono.Xml.Schema/XsdIdentityState.cs
-Mono.Xml.Schema/XsdKeyTable.cs
-Mono.Xml.Schema/XsdParticleValidationState.cs
-Mono.Xml.Schema/XsdValidatingReader.cs
-Mono.Xml.Schema/XsdWildcard.cs
-Mono.Xml.XPath/DTMXPathDocument.cs
-Mono.Xml.XPath/DTMXPathDocumentBuilder.cs
-Mono.Xml.XPath/DTMXPathDocumentWriter.cs
-Mono.Xml.XPath/DTMXPathNavigator.cs
-Mono.Xml.XPath/DTMXPathNode.cs
-Mono.Xml.XPath/DTMXPathDocument2.cs
-Mono.Xml.XPath/DTMXPathDocumentBuilder2.cs
-Mono.Xml.XPath/DTMXPathDocumentWriter2.cs
-Mono.Xml.XPath/DTMXPathNavigator2.cs
-Mono.Xml.XPath/DTMXPathNode2.cs
-Mono.Xml.XPath/IdPattern.cs
-Mono.Xml.XPath/KeyPattern.cs
-Mono.Xml.XPath/LocationPathPattern.cs
-Mono.Xml.XPath/Pattern.cs
-Mono.Xml.XPath/UnionPattern.cs
-Mono.Xml.XPath/XPathEditableDocument.cs
-Mono.Xml.XPath/XPathNavigatorReader.cs
-Mono.Xml.Xsl.Operations/XslApplyImports.cs
-Mono.Xml.Xsl.Operations/XslApplyTemplates.cs
-Mono.Xml.Xsl.Operations/XslAttribute.cs
-Mono.Xml.Xsl.Operations/XslAvt.cs
-Mono.Xml.Xsl.Operations/XslCallTemplate.cs
-Mono.Xml.Xsl.Operations/XslChoose.cs
-Mono.Xml.Xsl.Operations/XslComment.cs
-Mono.Xml.Xsl.Operations/XslCompiledElement.cs
-Mono.Xml.Xsl.Operations/XslCopy.cs
-Mono.Xml.Xsl.Operations/XslCopyOf.cs
-Mono.Xml.Xsl.Operations/XslElement.cs
-Mono.Xml.Xsl.Operations/XslFallback.cs
-Mono.Xml.Xsl.Operations/XslForEach.cs
-Mono.Xml.Xsl.Operations/XslIf.cs
-Mono.Xml.Xsl.Operations/XslLiteralElement.cs
-Mono.Xml.Xsl.Operations/XslMessage.cs
-Mono.Xml.Xsl.Operations/XslNotSupportedOperation.cs
-Mono.Xml.Xsl.Operations/XslNumber.cs
-Mono.Xml.Xsl.Operations/XslOperation.cs
-Mono.Xml.Xsl.Operations/XslProcessingInstruction.cs
-Mono.Xml.Xsl.Operations/XslTemplateContent.cs
-Mono.Xml.Xsl.Operations/XslText.cs
-Mono.Xml.Xsl.Operations/XslValueOf.cs
-Mono.Xml.Xsl.Operations/XslVariable.cs
-Mono.Xml.Xsl/Attribute.cs
-Mono.Xml.Xsl/Compiler.cs
-Mono.Xml.Xsl/Debug.cs
-Mono.Xml.Xsl/Emitter.cs
-Mono.Xml.Xsl/GenericOutputter.cs
-Mono.Xml.Xsl/HtmlEmitter.cs
-Mono.Xml.Xsl/MSXslScriptManager.cs
-Mono.Xml.Xsl/Outputter.cs
-Mono.Xml.Xsl/TextEmitter.cs
-Mono.Xml.Xsl/TextOutputter.cs
-Mono.Xml.Xsl/XmlWriterEmitter.cs
-Mono.Xml.Xsl/XslAttributeSet.cs
-Mono.Xml.Xsl/XslDecimalFormat.cs
-Mono.Xml.Xsl/XslKey.cs
-Mono.Xml.Xsl/XslOutput.cs
-Mono.Xml.Xsl/XslSortEvaluator.cs
-Mono.Xml.Xsl/XslStylesheet.cs
-Mono.Xml.Xsl/XslTemplate.cs
-Mono.Xml.Xsl/XslTransformProcessor.cs
-Mono.Xml.Xsl/XsltCompiledContext.cs
-Mono.Xml.Xsl/XsltDebuggerWrapper.cs
-Mono.Xml.Xsl/XslFunctions.cs
-Mono.Xml/IHasXmlParserContext.cs
-Mono.Xml/IHasXmlSchemaInfo.cs
-Mono.Xml/SubtreeXmlReader.cs
-Mono.Xml/XmlFilterReader.cs
-Mono.Xml/XmlNodeWriter.cs
-System.Xml/ConformanceLevel.cs
-System.Xml/DTDAutomata.cs
-System.Xml/DTDObjectModel.cs
-System.Xml/DTDReader.cs
-System.Xml/DTDValidatingReader2.cs
-System.Xml/DefaultXmlWriter.cs
-System.Xml/EntityResolvingXmlReader.cs
-System.Xml/EntityHandling.cs
-System.Xml/Formatting.cs
-System.Xml/IHasXmlNode.cs
-System.Xml/IXmlLineInfo.cs
-System.Xml/IHasXmlChildNode.cs
-System.Xml/IXmlNamespaceResolver.cs
-System.Xml/MonoFIXAttribute.cs
-System.Xml/NamespaceHandling.cs
-System.Xml/NameTable.cs
-System.Xml/NewLineHandling.cs
-System.Xml/ReadState.cs
-../../build/common/MonoTODOAttribute.cs
-System.Xml/ValidationType.cs
-System.Xml/WhitespaceHandling.cs
-System.Xml/WriteState.cs
-System.Xml/XmlEntity.cs
-System.Xml/XmlAttribute.cs
-System.Xml/XmlAttributeCollection.cs
-System.Xml/XmlCDataSection.cs
-System.Xml/XmlConstructs.cs
-System.Xml/XmlChar.cs
-System.Xml/XmlCharacterData.cs
-System.Xml/XmlComment.cs
-System.Xml/XmlNotation.cs
-System.Xml/XmlDeclaration.cs
-System.Xml/XmlDocument.cs
-System.Xml/XmlDocumentFragment.cs
-System.Xml/XmlDocumentNavigator.cs
-System.Xml/XmlDocumentType.cs
-System.Xml/XmlElement.cs
-System.Xml/XmlEntityReference.cs
-System.Xml/XmlException.cs
-System.Xml/XmlImplementation.cs
-System.Xml/XmlConvert.cs
-System.Xml/XmlDateTimeSerializationMode.cs
-System.Xml/XmlLinkedNode.cs
-System.Xml/XmlNameEntry.cs
-System.Xml/XmlNameEntryCache.cs
-System.Xml/XmlNameTable.cs
-System.Xml/XmlNamedNodeMap.cs
-System.Xml/XmlNamespaceScope.cs
-System.Xml/XmlNamespaceManager.cs
-System.Xml/XmlNode.cs
-System.Xml/XmlNodeChangedAction.cs
-System.Xml/XmlNodeChangedEventArgs.cs
-System.Xml/XmlNodeChangedEventHandler.cs
-System.Xml/XmlNodeList.cs
-System.Xml/XmlNodeListChildren.cs
-System.Xml/XmlNodeArrayList.cs
-System.Xml/XmlIteratorNodeList.cs
-System.Xml/XmlNodeOrder.cs
-System.Xml/XmlNodeReader2.cs
-System.Xml/XmlNodeReaderImpl.cs
-System.Xml/XmlNodeType.cs
-System.Xml/XmlOutputMethod.cs
-System.Xml/XmlParserContext.cs
-System.Xml/XmlProcessingInstruction.cs
-System.Xml/XmlQualifiedName.cs
-System.Xml/XmlReader.cs
-System.Xml/XmlReaderBinarySupport.cs
-System.Xml/XmlReaderSettings.cs
-System.Xml/XmlResolver.cs
-System.Xml/XmlSignificantWhitespace.cs
-System.Xml/XmlSpace.cs
-System.Xml/XmlText.cs
-System.Xml/XmlTextReader.cs
-System.Xml/XmlTextReader2.cs
-System.Xml/XmlTokenizedType.cs
-System.Xml/XmlUrlResolver.cs
-System.Xml/XmlValidatingReader.cs
-System.Xml/XmlWhitespace.cs
-System.Xml/XmlWriter.cs
-System.Xml/XmlWriterSettings.cs
-System.Xml/XmlTextWriter2.cs
-System.Xml/XmlInputStream.cs
-System.Xml/XmlParserInput.cs
-System.Xml.XPath/IXPathNavigable.cs
-System.Xml.XPath/XPathNavigator.cs
-System.Xml.XPath/XPathExpression.cs
-System.Xml.XPath/XPathItem.cs
-System.Xml.XPath/XPathNamespaceScope.cs
-System.Xml.XPath/XPathNodeIterator.cs
-System.Xml.XPath/XPathResultType.cs
-System.Xml.XPath/XPathNodeType.cs
-System.Xml.XPath/XmlDataType.cs
-System.Xml.XPath/XmlSortOrder.cs
-System.Xml.XPath/XmlCaseOrder.cs
-System.Xml.XPath/XPathDocument.cs
-System.Xml.XPath/XPathException.cs
-System.Xml.XPath/XPathComparer.cs
-System.Xml.XPath/DefaultContext.cs
-System.Xml.XPath/Expression.cs
-System.Xml.XPath/Iterator.cs
-System.Xml.XPath/Tokenizer.cs
-System.Xml.Xsl/IXsltContextFunction.cs
-System.Xml.Xsl/IXsltContextVariable.cs
-System.Xml.Xsl/XslTransform.cs
-System.Xml.Xsl/XslCompiledTransform.cs
-System.Xml.Xsl/XsltArgumentList.cs
-System.Xml.Xsl/XsltCompileException.cs
-System.Xml.Xsl/XsltContext.cs
-System.Xml.Xsl/XsltException.cs
-System.Xml.Xsl/XsltMessageEncounteredEventArgs.cs
-System.Xml.Xsl/XsltMessageEncounteredEventHandler.cs
-System.Xml.Xsl/XsltSettings.cs
-System.Xml.Schema/BuiltInDatatype.cs
-System.Xml.Schema/IXmlSchemaInfo.cs
-System.Xml.Schema/SchemaDataValueType.cs
-System.Xml.Schema/ValidationEventArgs.cs
-System.Xml.Schema/XmlAtomicValue.cs
-System.Xml.Schema/XmlSchema.cs
-System.Xml.Schema/XmlSchemaAll.cs
-System.Xml.Schema/XmlSchemaAnnotated.cs
-System.Xml.Schema/XmlSchemaAnnotation.cs
-System.Xml.Schema/XmlSchemaAny.cs
-System.Xml.Schema/XmlSchemaAnyAttribute.cs
-System.Xml.Schema/XmlSchemaAppInfo.cs
-System.Xml.Schema/XmlSchemaAttribute.cs
-System.Xml.Schema/XmlSchemaAttributeGroup.cs
-System.Xml.Schema/XmlSchemaAttributeGroupRef.cs
-System.Xml.Schema/XmlSchemaChoice.cs
-System.Xml.Schema/XmlSchemaCollection.cs
-System.Xml.Schema/XmlSchemaCollectionEnumerator.cs
-System.Xml.Schema/XmlSchemaCompilationSettings.cs
-System.Xml.Schema/XmlSchemaComplexContent.cs
-System.Xml.Schema/XmlSchemaComplexContentExtension.cs
-System.Xml.Schema/XmlSchemaComplexContentRestriction.cs
-System.Xml.Schema/XmlSchemaComplexType.cs
-System.Xml.Schema/XmlSchemaContent.cs
-System.Xml.Schema/XmlSchemaContentModel.cs
-System.Xml.Schema/XmlSchemaContentProcessing.cs
-System.Xml.Schema/XmlSchemaContentType.cs
-System.Xml.Schema/XmlSchemaDatatype.cs
-System.Xml.Schema/XmlSchemaDatatypeVariety.cs
-System.Xml.Schema/XmlSchemaDerivationMethod.cs
-System.Xml.Schema/XmlSchemaDocumentation.cs
-System.Xml.Schema/XmlSchemaElement.cs
-System.Xml.Schema/XmlSchemaEnumerationFacet.cs
-System.Xml.Schema/XmlSchemaException.cs
-System.Xml.Schema/XmlSchemaExternal.cs
-System.Xml.Schema/XmlSchemaFacet.cs
-System.Xml.Schema/XmlSchemaForm.cs
-System.Xml.Schema/XmlSchemaFractionDigitsFacet.cs
-System.Xml.Schema/XmlSchemaGroup.cs
-System.Xml.Schema/XmlSchemaGroupBase.cs
-System.Xml.Schema/XmlSchemaGroupRef.cs
-System.Xml.Schema/XmlSchemaIdentityConstraint.cs
-System.Xml.Schema/XmlSchemaImport.cs
-System.Xml.Schema/XmlSchemaInclude.cs
-System.Xml.Schema/XmlSchemaInference.cs
-System.Xml.Schema/XmlSchemaInferenceException.cs
-System.Xml.Schema/XmlSchemaInfo.cs
-System.Xml.Schema/XmlSchemaKey.cs
-System.Xml.Schema/XmlSchemaKeyref.cs
-System.Xml.Schema/XmlSchemaLengthFacet.cs
-System.Xml.Schema/XmlSchemaMaxExclusiveFacet.cs
-System.Xml.Schema/XmlSchemaMaxInclusiveFacet.cs
-System.Xml.Schema/XmlSchemaMaxLengthFacet.cs
-System.Xml.Schema/XmlSchemaMinExclusiveFacet.cs
-System.Xml.Schema/XmlSchemaMinInclusiveFacet.cs
-System.Xml.Schema/XmlSchemaMinLengthFacet.cs
-System.Xml.Schema/XmlSchemaNotation.cs
-System.Xml.Schema/XmlSchemaNumericFacet.cs
-System.Xml.Schema/XmlSchemaObject.cs
-System.Xml.Schema/XmlSchemaObjectCollection.cs
-System.Xml.Schema/XmlSchemaObjectEnumerator.cs
-System.Xml.Schema/XmlSchemaObjectTable.cs
-System.Xml.Schema/XmlSchemaParticle.cs
-System.Xml.Schema/XmlSchemaPatternFacet.cs
-System.Xml.Schema/XmlSchemaRedefine.cs
-System.Xml.Schema/XmlSchemaSet.cs
-System.Xml.Schema/XmlSchemaSequence.cs
-System.Xml.Schema/XmlSchemaSerializer.cs
-System.Xml.Schema/XmlSchemaSimpleContent.cs
-System.Xml.Schema/XmlSchemaSimpleContentExtension.cs
-System.Xml.Schema/XmlSchemaSimpleContentRestriction.cs
-System.Xml.Schema/XmlSchemaSimpleType.cs
-System.Xml.Schema/XmlSchemaSimpleTypeContent.cs
-System.Xml.Schema/XmlSchemaSimpleTypeList.cs
-System.Xml.Schema/XmlSchemaSimpleTypeRestriction.cs
-System.Xml.Schema/XmlSchemaSimpleTypeUnion.cs
-System.Xml.Schema/XmlSchemaTotalDigitsFacet.cs
-System.Xml.Schema/XmlSchemaType.cs
-System.Xml.Schema/XmlSchemaUnique.cs
-System.Xml.Schema/XmlSchemaUse.cs
-System.Xml.Schema/XmlSchemaValidator.cs
-System.Xml.Schema/XmlSchemaValidity.cs
-System.Xml.Schema/XmlSchemaValidationException.cs
-System.Xml.Schema/XmlSchemaWhiteSpaceFacet.cs
-System.Xml.Schema/XmlSchemaXPath.cs
-System.Xml.Schema/XmlSeverityType.cs
-System.Xml.Schema/ValidationHandler.cs
-System.Xml.Schema/XmlSchemaUtil.cs
-System.Xml.Schema/XmlSchemaReader.cs
-System.Xml.Schema/XmlSchemaValidationFlags.cs
-System.Xml.Schema/XmlTypeCode.cs
-System.Xml.Schema/XmlValueGetter.cs
-System.Xml.Serialization/IXmlTextParser.cs
-System.Xml.Serialization/CodeGenerationOptions.cs
-System.Xml.Serialization/CodeIdentifier.cs
-System.Xml.Serialization/CodeIdentifiers.cs
-System.Xml.Serialization/IXmlSerializable.cs
-System.Xml.Serialization/ImportContext.cs
-System.Xml.Serialization/KeyHelper.cs
-System.Xml.Serialization/ReflectionHelper.cs
-System.Xml.Serialization/SchemaTypes.cs
-System.Xml.Serialization/SerializationCodeGenerator.cs
-System.Xml.Serialization/SerializationCodeGeneratorConfiguration.cs
-System.Xml.Serialization/SerializationSource.cs
-System.Xml.Serialization/SoapAttributeAttribute.cs
-System.Xml.Serialization/SoapAttributeOverrides.cs
-System.Xml.Serialization/SoapAttributes.cs
-System.Xml.Serialization/SoapElementAttribute.cs
-System.Xml.Serialization/SoapEnumAttribute.cs
-System.Xml.Serialization/SoapIgnoreAttribute.cs
-System.Xml.Serialization/SoapIncludeAttribute.cs
-System.Xml.Serialization/SoapSchemaMember.cs
-System.Xml.Serialization/SoapReflectionImporter.cs
-System.Xml.Serialization/SoapTypeAttribute.cs
-System.Xml.Serialization/TypeData.cs
-System.Xml.Serialization/TypeMember.cs
-System.Xml.Serialization/TypeTranslator.cs
-System.Xml.Serialization/UnreferencedObjectEventArgs.cs
-System.Xml.Serialization/UnreferencedObjectEventHandler.cs
-System.Xml.Serialization/XmlAnyAttributeAttribute.cs
-System.Xml.Serialization/XmlAnyElementAttribute.cs
-System.Xml.Serialization/XmlAnyElementAttributes.cs
-System.Xml.Serialization/XmlArrayAttribute.cs
-System.Xml.Serialization/XmlArrayItemAttribute.cs
-System.Xml.Serialization/XmlArrayItemAttributes.cs
-System.Xml.Serialization/XmlAttributeAttribute.cs
-System.Xml.Serialization/XmlAttributeEventArgs.cs
-System.Xml.Serialization/XmlAttributeEventHandler.cs
-System.Xml.Serialization/XmlAttributeOverrides.cs
-System.Xml.Serialization/XmlAttributes.cs
-System.Xml.Serialization/XmlChoiceIdentifierAttribute.cs
-System.Xml.Serialization/XmlCustomFormatter.cs
-System.Xml.Serialization/XmlDeserializationEvents.cs
-System.Xml.Serialization/XmlElementAttribute.cs
-System.Xml.Serialization/XmlElementAttributes.cs
-System.Xml.Serialization/XmlElementEventArgs.cs
-System.Xml.Serialization/XmlEnumAttribute.cs
-System.Xml.Serialization/XmlIgnoreAttribute.cs
-System.Xml.Serialization/XmlIncludeAttribute.cs
-System.Xml.Serialization/XmlMemberMapping.cs
-System.Xml.Serialization/XmlMembersMapping.cs
-System.Xml.Serialization/XmlMapping.cs
-System.Xml.Serialization/XmlMappingAccess.cs
-System.Xml.Serialization/XmlNamespaceDeclarationsAttribute.cs
-System.Xml.Serialization/XmlNodeEventArgs.cs
-System.Xml.Serialization/XmlReflectionImporter.cs
-System.Xml.Serialization/XmlReflectionMember.cs
-System.Xml.Serialization/XmlRootAttribute.cs
-System.Xml.Serialization/XmlSchemaEnumerator.cs
-System.Xml.Serialization/XmlSchemaExporter.cs
-System.Xml.Serialization/XmlSchemaImporter.cs
-System.Xml.Serialization/XmlSchemaProviderAttribute.cs
-System.Xml.Serialization/XmlSchemas.cs
-System.Xml.Serialization/XmlSerializationCollectionFixupCallback.cs
-System.Xml.Serialization/XmlSerializationFixupCallback.cs
-System.Xml.Serialization/XmlSerializationGeneratedCode.cs
-System.Xml.Serialization/XmlSerializationReadCallback.cs
-System.Xml.Serialization/XmlSerializationReader.cs
-System.Xml.Serialization/XmlSerializationReaderInterpreter.cs
-System.Xml.Serialization/XmlSerializationWriteCallback.cs
-System.Xml.Serialization/XmlSerializationWriter.cs
-System.Xml.Serialization/XmlSerializationWriterInterpreter.cs
-System.Xml.Serialization/XmlSerializer.cs
-System.Xml.Serialization/XmlSerializerAssemblyAttribute.cs
-System.Xml.Serialization/XmlSerializerFactory.cs
-System.Xml.Serialization/XmlSerializerImplementation.cs
-System.Xml.Serialization/XmlSerializerNamespaces.cs
-System.Xml.Serialization/XmlSerializerVersionAttribute.cs
-System.Xml.Serialization/XmlTextAttribute.cs
-System.Xml.Serialization/XmlTypeAttribute.cs
-System.Xml.Serialization/XmlTypeMapElementInfo.cs
-System.Xml.Serialization/XmlTypeMapMember.cs
-System.Xml.Serialization/XmlTypeMapMemberAttribute.cs
-System.Xml.Serialization/XmlTypeMapMemberElement.cs
-System.Xml.Serialization/XmlTypeMapMemberNamespaces.cs
-System.Xml.Serialization/XmlTypeMapping.cs
-System.Xml.Serialization/XmlElementEventHandler.cs
-System.Xml.Serialization/XmlNodeEventHandler.cs
-
-System.Xml/XQueryConvert.cs
-
+#include mobile_System.Xml.dll.sources
diff --git a/mcs/class/System.Xaml/ChangeLog b/mcs/class/System.Xaml/ChangeLog
index bbd519f..34ea587 100644
--- a/mcs/class/System.Xaml/ChangeLog
+++ b/mcs/class/System.Xaml/ChangeLog
@@ -1,3 +1,131 @@
+2010-12-20  Atsushi Eno  <atsushi at ximian.com>
+
+	Implemented support for attached properties in xamlreaders and
+	xamlwriters.
+
+2010-12-06  Atsushi Eno  <atsushi at ximian.com>
+
+	Implemented Reference resolution in XamlObjectWriter.
+
+2010-12-03  Atsushi Eno  <atsushi at ximian.com>
+
+	Split internal base class into new file.
+
+2010-12-03  Atsushi Eno  <atsushi at ximian.com>
+
+	Rename source.
+
+2010-11-30  Atsushi Eno  <atsushi at ximian.com>
+
+	Renamed test files.
+
+2010-11-30  Atsushi Eno  <atsushi at ximian.com>
+
+	Extract XamlObjectReaderTest class into another file. Files are to
+	be renamed.
+
+2010-11-25  Atsushi Eno  <atsushi at ximian.com>
+
+	Add refresh XamlObjectWriter implementation.
+
+	This writer can process a lot more xaml inputs. It is now unified
+	to XamlXmlWriter, sharing some internals (already existed in
+	XamlXmlWriter.cs).
+
+	Had to disable a few minor tests that used to pass for invalid
+	inputs.
+
+2010-11-19  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Fix the build.
+
+2010-11-19  Atsushi Eno  <atsushi at ximian.com>
+
+	Implement XamlType.CanAssignTo(). Remove extra writer state
+	members.
+
+2010-11-18  Atsushi Eno  <atsushi at ximian.com>
+
+	Rewrote ValueSerializer.GetSerializerFor() with couple of tests.
+
+2010-11-12  Atsushi Eno  <atsushi at ximian.com>
+
+	Add support for MarkupExtension attribute in XamlXmlReader.
+
+2010-11-12  Atsushi Eno  <atsushi at ximian.com>
+
+	Add new ValueSerializerContext and use it everywhere appropriate.
+
+	This change was basically for string serialization of
+	XamlTypeName, namely PropertyDefinition serialization. Turned out
+	it should be used in a lot of places where IServiceProvider and
+	ITypeDescriptorContext is expected. IServiceProvider
+	implementations in XamlWriters are replaced.
+
+2010-11-11  Atsushi Eno  <atsushi at ximian.com>
+
+	Remove old code (overwrite).
+
+2010-11-11  Atsushi Eno  <atsushi at ximian.com>
+
+	Split XamlNode.cs to object-reader specific code and else.
+
+2010-11-06  Atsushi Eno  <atsushi at ximian.com>
+
+	Add new XamlXmlWriter implementation. Marked some as NotWorking
+	while removed a lot.
+
+2010-11-03  Atsushi Eno  <atsushi at ximian.com>
+
+	Extracted PrefixLookup to another file. Add more
+	XamlTypeName.ToString() tests.
+
+2010-10-29  Atsushi Eno  <atsushi at ximian.com>
+
+	(Finally) replace old XamlObjectReader implementation with new
+	one.
+
+2010-10-29  Atsushi Eno  <atsushi at ximian.com>
+
+	Introduce new XamlObjectReader implementation.
+
+	Nodes are iterated in XamlNodeIterator which is used by
+	XamlObjectReader. It collects namespace declarations as it does in
+	the reading the objects. The new code is somewhat better, with
+	less "special" hardcoded rules.
+
+	It can be even compiled with .NET (with TypeExtensionMethods).
+
+2010-10-29  Atsushi Eno  <atsushi at ximian.com>
+
+	Collected tested types into a new file.
+
+2010-10-15  Marek Safar  <marek.safar at gmail.com>
+
+	Clean up few more warnings
+
+2010-10-07  Atsushi Eno  <atsushi at ximian.com>
+
+	Significant XamlObjectWriter rewrite for solid state transition.
+	And now it supports Array(Extension) and other MarkupExtension
+	types.
+
+2010-10-06  Atsushi Eno  <atsushi at ximian.com>
+
+	Use MarkupExtension.ProvideValue() so that XamlObjectReader can
+	return expected Result. Implement internal IXamlNameResolver for
+	Reference resolution.
+
+2010-10-04  Atsushi Eno  <atsushi at ximian.com>
+
+	remove extraneous reference to sys.configuration.
+
+2010-10-04  Atsushi Eno  <atsushi at ximian.com>
+
+	A couple of fixes around
+	XamlSchemaContext.GetXamlType(XamlTypeName) and get XamlXmlReader
+	pass with unknown type names.
+
 2010-04-15  Atsushi Enomoto  <atsushi at ximian.com>
 
 	* System.Xaml_test.dll.sources : add XDataTest.cs.
diff --git a/mcs/class/System.Xaml/ChangeLog b/mcs/class/System.Xaml/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Xaml/ChangeLog
copy to mcs/class/System.Xaml/ChangeLog.old
diff --git a/mcs/class/System.Xaml/Makefile b/mcs/class/System.Xaml/Makefile
index 2d19490..8aa4c70 100644
--- a/mcs/class/System.Xaml/Makefile
+++ b/mcs/class/System.Xaml/Makefile
@@ -11,15 +11,12 @@ LIB_MCS_FLAGS = \
 		/r:System.Core.dll \
 	        $(RESOURCE_FILES:%=/resource:%)
 
-ifneq (2.1, $(FRAMEWORK_VERSION))
-LIB_MCS_FLAGS += /r:System.Configuration.dll
-endif
-
 TEST_MCS_FLAGS = $(LIB_MCS_FLAGS)
 
 EXTRA_DISTFILES = $(RESOURCE_FILES) $(TEST_EXTRA_DISTFILES)
 TEST_EXTRA_DISTFILES = \
-	Test/XmlFiles/*.xml
+	Test/XmlFiles/*.xml \
+	Test/XmlFiles/*.xaml
 
 VALID_PROFILE := $(filter 4.0, $(FRAMEWORK_VERSION))
 ifndef VALID_PROFILE
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/AmbientAttribute.cs b/mcs/class/System.Xaml/System.Windows.Markup/AmbientAttribute.cs
index 003f0c7..ff55aef 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/AmbientAttribute.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/AmbientAttribute.cs
@@ -31,7 +31,9 @@ using System.Xaml.Schema;
 namespace System.Windows.Markup
 {
 	[AttributeUsage (AttributeTargets.Class | AttributeTargets.Method | AttributeTargets.Property, Inherited = true)]
+#if !NET_2_1
 	[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
+#endif
 	public sealed class AmbientAttribute : Attribute
 	{
 	}
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/ArrayExtension.cs b/mcs/class/System.Xaml/System.Windows.Markup/ArrayExtension.cs
index 7b1a929..4693396 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/ArrayExtension.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/ArrayExtension.cs
@@ -32,12 +32,18 @@ namespace System.Windows.Markup
 {
 	[MarkupExtensionReturnType (typeof (Array))]
 	[ContentProperty ("Items")]
+#if !NET_2_1
 	[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyPresentationFramework_3_5)]
+#endif
 	public class ArrayExtension : MarkupExtension
 	{
 		public ArrayExtension ()
-		{
-			Items = new List<object> ();
+		{		
+#if MOONLIGHT
+			items = new List<object> ();
+#else
+			items = new ArrayList ();
+#endif
 		}
 
 		public ArrayExtension (Array elements)
@@ -45,9 +51,13 @@ namespace System.Windows.Markup
 			if (elements == null)
 				throw new ArgumentNullException ("elements");
 			Type = elements.GetType ().GetElementType ();
-			Items = new List<object> (elements.Length);
-			foreach (var o in elements)
-				Items.Add (o);
+#if MOONLIGHT
+			items = new List<object> ();
+			foreach (var element in elements)
+				items.Add (element);
+#else
+			items = new ArrayList (elements);
+#endif
 		}
 
 		public ArrayExtension (Type arrayType)
@@ -55,14 +65,24 @@ namespace System.Windows.Markup
 			if (arrayType == null)
 				throw new ArgumentNullException ("arrayType");
 			Type = arrayType;
-			Items = new List<object> ();
+#if MOONLIGHT
+			items = new List<object> ();
+#else
+			items = new ArrayList ();
+#endif
 		}
 
-		public IList Items { get; private set; }
-
 		[ConstructorArgument ("arrayType")]
 		public Type Type { get; set; }
 
+		IList items;
+#if !NET_2_1
+		[DesignerSerializationVisibility (DesignerSerializationVisibility.Content)]
+#endif
+		public IList Items {
+			get { return items; }
+		}
+
 		public void AddChild (Object value)
 		{
 			// null is allowed.
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/ChangeLog b/mcs/class/System.Xaml/System.Windows.Markup/ChangeLog
index 510a2b8..bf7b94e 100644
--- a/mcs/class/System.Xaml/System.Windows.Markup/ChangeLog
+++ b/mcs/class/System.Xaml/System.Windows.Markup/ChangeLog
@@ -1,3 +1,81 @@
+2010-12-28  Atsushi Eno  <atsushi at ximian.com>
+
+	Actually we have almost what we need on mobile profiles.
+
+2010-12-15  Atsushi Eno  <atsushi at ximian.com>
+
+	Add experimental "#if NET_2_1" mode (it builds w/o
+	s.x.permissions).
+
+2010-12-06  Atsushi Eno  <atsushi at ximian.com>
+
+	Finally got XData tests that make sense. Implemented IsXData.
+
+2010-11-19  Atsushi Eno  <atsushi at ximian.com>
+
+	Fix TypeValueSerializer and ValueSerializerContext to work fine
+	with XamlObjectWriter.
+
+2010-11-18  Atsushi Eno  <atsushi at ximian.com>
+
+	Add TypeValueSerializer, as it does not seem to work fine with
+	TypeConverter. And tests.
+
+2010-11-18  Atsushi Eno  <atsushi at ximian.com>
+
+	Rewrote ValueSerializer.GetSerializerFor() with couple of tests.
+
+2010-11-17  Atsushi Eno  <atsushi at ximian.com>
+
+	Made a couple of PositionalParameter related fixes, disabling
+	test, etc.
+
+2010-11-17  Atsushi Eno  <atsushi at ximian.com>
+
+	Remove some illogical hacks in GetSerializerFor().
+
+2010-11-15  Atsushi Eno  <atsushi at ximian.com>
+
+	Pass IValueSerializerContext as ITypeDescriptorContext.
+
+2010-11-12  Atsushi Eno  <atsushi at ximian.com>
+
+	Add new ValueSerializerContext and use it everywhere appropriate.
+
+	This change was basically for string serialization of
+	XamlTypeName, namely PropertyDefinition serialization. Turned out
+	it should be used in a lot of places where IServiceProvider and
+	ITypeDescriptorContext is expected. IServiceProvider
+	implementations in XamlWriters are replaced.
+
+2010-10-29  Atsushi Eno  <atsushi at ximian.com>
+
+	GetAllMSeveral fixes regarding property readability and
+	writability.
+
+	XamlMember.IsReadOnly returns false if there is private get
+	accessor. This is used to filter nonpublic accessors out, so
+	replaced its usage with !IsWritePublic to check truly read-only
+	members.
+
+	This fix also required some changes in markup types (as IsReadOnly
+	value now differs).
+
+2010-10-29  Atsushi Eno  <atsushi at ximian.com>
+
+	Use ArrayList like .NET (no practical changes).
+
+2010-10-15  Atsushi Eno  <atsushi at ximian.com>
+
+	Support ArrayExtension Items and GetObject node in
+	XamlObjectReader.
+
+2010-10-07  Atsushi Eno  <atsushi at ximian.com>
+
+	Significant XamlObjectWriter rewrite for solid state transition.
+	And now it supports Array(Extension) and other MarkupExtension
+	types.
+
 2010-04-22  Atsushi Enomoto  <atsushi at ximian.com>
 
 	* XamlObjectReader.cs, TypeExtensionMethods.cs : now it can return
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/ChangeLog b/mcs/class/System.Xaml/System.Windows.Markup/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Xaml/System.Windows.Markup/ChangeLog
copy to mcs/class/System.Xaml/System.Windows.Markup/ChangeLog.old
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/ConstructorArgumentAttribute.cs b/mcs/class/System.Xaml/System.Windows.Markup/ConstructorArgumentAttribute.cs
index 7708fe7..69a8b3f 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/ConstructorArgumentAttribute.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/ConstructorArgumentAttribute.cs
@@ -25,7 +25,9 @@ using System;
 namespace System.Windows.Markup
 {
 	[AttributeUsage (AttributeTargets.Property, AllowMultiple = false, Inherited = false)]
+#if !NET_2_1
 	[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
+#endif
 	public sealed class ConstructorArgumentAttribute : Attribute
 	{
 		public ConstructorArgumentAttribute (string argumentName)
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/ContentPropertyAttribute.cs b/mcs/class/System.Xaml/System.Windows.Markup/ContentPropertyAttribute.cs
index e07000b..f772a2b 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/ContentPropertyAttribute.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/ContentPropertyAttribute.cs
@@ -24,8 +24,14 @@ using System;
 
 namespace System.Windows.Markup
 {
+	// This type affects on serialization by XamlXmlWriter.
+	// It does not affect on XamlObjectReader - it returns the content
+	// member regardless of this attribute.
+
 	[AttributeUsage (AttributeTargets.Class, AllowMultiple = false, Inherited = true)]
+#if !NET_2_1
 	[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
+#endif
 	public sealed class ContentPropertyAttribute : Attribute
 	{
 		public ContentPropertyAttribute ()
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/ContentWrapperAttribute.cs b/mcs/class/System.Xaml/System.Windows.Markup/ContentWrapperAttribute.cs
index 0407a18..c18653f 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/ContentWrapperAttribute.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/ContentWrapperAttribute.cs
@@ -25,7 +25,9 @@ using System;
 namespace System.Windows.Markup
 {
 	[AttributeUsage (AttributeTargets.Class, AllowMultiple = true, Inherited = true)]
+#if !NET_2_1
 	[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
+#endif
 	public sealed class ContentWrapperAttribute : Attribute
 	{
 		public ContentWrapperAttribute (Type contentWrapper)
@@ -34,9 +36,11 @@ namespace System.Windows.Markup
 		}
 		
 		public Type ContentWrapper { get; private set; }
+#if !NET_2_1
 		public override Object TypeId {
 			get { return ContentWrapper; }
 		}
+#endif
 
 		public override bool Equals (object other)
 		{
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/DateTimeValueSerializer.cs b/mcs/class/System.Xaml/System.Windows.Markup/DateTimeValueSerializer.cs
index 720a351..5556e7f 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/DateTimeValueSerializer.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/DateTimeValueSerializer.cs
@@ -28,7 +28,9 @@ using System.Globalization;
 
 namespace System.Windows.Markup
 {
+#if !NET_2_1
 	[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
+#endif
 	public class DateTimeValueSerializer : ValueSerializer
 	{
 		const DateTimeStyles styles = DateTimeStyles.RoundtripKind | DateTimeStyles.NoCurrentDateDefault | DateTimeStyles.AllowLeadingWhite | DateTimeStyles.AllowTrailingWhite;
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/DependsOnAttribute.cs b/mcs/class/System.Xaml/System.Windows.Markup/DependsOnAttribute.cs
index 0ae0fa7..47e1158 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/DependsOnAttribute.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/DependsOnAttribute.cs
@@ -25,7 +25,9 @@ using System;
 namespace System.Windows.Markup
 {
 	[AttributeUsage (AttributeTargets.Method | AttributeTargets.Property, AllowMultiple = true)]
+#if !NET_2_1
 	[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
+#endif
 	public sealed class DependsOnAttribute : Attribute
 	{
 		public DependsOnAttribute (string name)
@@ -35,9 +37,11 @@ namespace System.Windows.Markup
 		
 		public string Name { get; private set; }
 
+#if !NET_2_1
 		// really? I doubt it should be overriden.
 		public override Object TypeId {
 			get { return base.TypeId; }
 		}
+#endif
 	}
 }
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/DictionaryKeyPropertyAttribute.cs b/mcs/class/System.Xaml/System.Windows.Markup/DictionaryKeyPropertyAttribute.cs
index 1664fe2..df7f448 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/DictionaryKeyPropertyAttribute.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/DictionaryKeyPropertyAttribute.cs
@@ -25,7 +25,9 @@ using System;
 namespace System.Windows.Markup
 {
 	[AttributeUsageAttribute(AttributeTargets.Class, AllowMultiple = false, Inherited = true)]
+#if !NET_2_1
 	[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
+#endif
 	public sealed class DictionaryKeyPropertyAttribute : Attribute
 	{
 		public DictionaryKeyPropertyAttribute (string name)
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/IComponentConnector.cs b/mcs/class/System.Xaml/System.Windows.Markup/IComponentConnector.cs
index 5e60816..8b143b9 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/IComponentConnector.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/IComponentConnector.cs
@@ -28,7 +28,9 @@ using System.Xaml.Schema;
 
 namespace System.Windows.Markup
 {
+#if !NET_2_1
 	[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
+#endif
 	public interface IComponentConnector
 	{
 		void Connect (int connectionId, object target);
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/INameScope.cs b/mcs/class/System.Xaml/System.Windows.Markup/INameScope.cs
index 3035a7c..5c142ec 100644
--- a/mcs/class/System.Xaml/System.Windows.Markup/INameScope.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/INameScope.cs
@@ -25,7 +25,9 @@ using System.Collections.Generic;
 
 namespace System.Windows.Markup
 {
+#if !NET_2_1
 	[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
+#endif
 	public interface INameScope
 	{
 		object FindName (string name);
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/IProvideValueTarget.cs b/mcs/class/System.Xaml/System.Windows.Markup/IProvideValueTarget.cs
index 6a44ce0..65c124b 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/IProvideValueTarget.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/IProvideValueTarget.cs
@@ -28,7 +28,9 @@ using System.Xaml.Schema;
 
 namespace System.Windows.Markup
 {
+#if !NET_2_1
 	[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyPresentationFramework_3_5)]
+#endif
 	public interface IProvideValueTarget
 	{
 		object TargetObject { get; }
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/IUriContext.cs b/mcs/class/System.Xaml/System.Windows.Markup/IUriContext.cs
index 252ab69..7ace4b7 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/IUriContext.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/IUriContext.cs
@@ -28,7 +28,9 @@ using System.Xaml.Schema;
 
 namespace System.Windows.Markup
 {
+#if !NET_2_1
 	[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyPresentationCore_3_5)]
+#endif
 	public interface IUriContext
 	{
 		Uri BaseUri { get; set; }
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/IValueSerializerContext.cs b/mcs/class/System.Xaml/System.Windows.Markup/IValueSerializerContext.cs
index bfc1e0a..011c32e 100644
--- a/mcs/class/System.Xaml/System.Windows.Markup/IValueSerializerContext.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/IValueSerializerContext.cs
@@ -29,7 +29,9 @@ using System.Xaml;
 
 namespace System.Windows.Markup
 {
+#if !NET_2_1
 	[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
+#endif
 	public interface IValueSerializerContext : ITypeDescriptorContext, IServiceProvider
 	{
 		ValueSerializer GetValueSerializerFor (PropertyDescriptor descriptor);
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/IXamlTypeResolver.cs b/mcs/class/System.Xaml/System.Windows.Markup/IXamlTypeResolver.cs
index 563387c..c78be09 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/IXamlTypeResolver.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/IXamlTypeResolver.cs
@@ -28,7 +28,9 @@ using System.Xaml.Schema;
 
 namespace System.Windows.Markup
 {
+#if !NET_2_1
 	[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
+#endif
 	public interface IXamlTypeResolver
 	{
 		Type Resolve (string qualifiedTypeName);
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/MarkupExtension.cs b/mcs/class/System.Xaml/System.Windows.Markup/MarkupExtension.cs
index f79cefd..9277a3c 100644
--- a/mcs/class/System.Xaml/System.Windows.Markup/MarkupExtension.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/MarkupExtension.cs
@@ -29,7 +29,9 @@ using System.Xaml.Schema;
 
 namespace System.Windows.Markup
 {
+#if !NET_2_1
 	[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
+#endif
 	public abstract class MarkupExtension
 	{
 		public abstract object ProvideValue (IServiceProvider serviceProvider);
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/NameScopePropertyAttribute.cs b/mcs/class/System.Xaml/System.Windows.Markup/NameScopePropertyAttribute.cs
index 8e33e01..3ecd55b 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/NameScopePropertyAttribute.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/NameScopePropertyAttribute.cs
@@ -25,7 +25,9 @@ using System;
 namespace System.Windows.Markup
 {
 	[AttributeUsage (AttributeTargets.Class, AllowMultiple = false, Inherited = true)]
+#if !NET_2_1
 	[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
+#endif
 	public sealed class NameScopePropertyAttribute : Attribute
 	{
 		public NameScopePropertyAttribute (string name)
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/NullExtension.cs b/mcs/class/System.Xaml/System.Windows.Markup/NullExtension.cs
index 19cd2cb..9aef4b4 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/NullExtension.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/NullExtension.cs
@@ -29,7 +29,9 @@ using System.Xaml.Schema;
 namespace System.Windows.Markup
 {
 	[MarkupExtensionReturnType (typeof (Object))]
+#if !NET_2_1
 	[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyPresentationFramework_3_5)]
+#endif
 	public class NullExtension : MarkupExtension
 	{
 		public override Object ProvideValue (IServiceProvider serviceProvider)
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/PropertyDefinition.cs b/mcs/class/System.Xaml/System.Windows.Markup/PropertyDefinition.cs
index 4a4e9fe..cc6a781 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/PropertyDefinition.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/PropertyDefinition.cs
@@ -33,10 +33,13 @@ namespace System.Windows.Markup
 	{
 		public PropertyDefinition ()
 		{
-			Attributes = new List<Attribute> ();
+			attributes = new List<Attribute> ();
 		}
 
-		public IList<Attribute> Attributes { get; private set; }
+		List<Attribute> attributes;
+		public IList<Attribute> Attributes {
+			get { return attributes; }
+		}
 
 		[DefaultValue ("public")]
 		public string Modifier { get; set; }
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/Reference.cs b/mcs/class/System.Xaml/System.Windows.Markup/Reference.cs
index 6d3429e..6913ed0 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/Reference.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/Reference.cs
@@ -51,10 +51,13 @@ namespace System.Windows.Markup
 				throw new ArgumentNullException ("serviceProvider");
 			if (Name == null)
 				throw new InvalidOperationException ("Name property is not set");
-			var r = ((object) serviceProvider) as IXamlNameResolver;
+			var r = serviceProvider.GetService (typeof (IXamlNameResolver)) as IXamlNameResolver;
 			if (r == null)
-				throw new ArgumentException ("serviceProvider does not implement IXamlNameResolver");
-			return r.Resolve (Name);
+				throw new InvalidOperationException ("serviceProvider does not implement IXamlNameResolver");
+			var ret = r.Resolve (Name);
+			if (ret == null)
+				ret = r.GetFixupToken (new string [] {Name}, true);
+			return ret;
 		}
 	}
 }
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/RootNamespaceAttribute.cs b/mcs/class/System.Xaml/System.Windows.Markup/RootNamespaceAttribute.cs
index 040f194..392968b 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/RootNamespaceAttribute.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/RootNamespaceAttribute.cs
@@ -25,7 +25,9 @@ using System;
 namespace System.Windows.Markup
 {
 	[AttributeUsage (AttributeTargets.Assembly)]
+#if !NET_2_1
 	[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
+#endif
 	public sealed class RootNamespaceAttribute : Attribute
 	{
 		public RootNamespaceAttribute (string nameSpace)
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/RuntimeNamePropertyAttribute.cs b/mcs/class/System.Xaml/System.Windows.Markup/RuntimeNamePropertyAttribute.cs
index 44c3706..ccd2cbc 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/RuntimeNamePropertyAttribute.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/RuntimeNamePropertyAttribute.cs
@@ -25,7 +25,9 @@ using System;
 namespace System.Windows.Markup
 {
 	[AttributeUsage (AttributeTargets.Class)]
+#if !NET_2_1
 	[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
+#endif
 	public sealed class RuntimeNamePropertyAttribute : Attribute
 	{
 		public RuntimeNamePropertyAttribute (string name)
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/StaticExtension.cs b/mcs/class/System.Xaml/System.Windows.Markup/StaticExtension.cs
index 24df4f5..465ba56 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/StaticExtension.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/StaticExtension.cs
@@ -30,7 +30,9 @@ namespace System.Windows.Markup
 {
 	[MarkupExtensionReturnType (typeof (object))]
 	[TypeConverter (typeof (StaticExtensionConverter))]
+#if !NET_2_1
 	[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyPresentationFramework_3_5)]
+#endif
 	public class StaticExtension : MarkupExtension
 	{
 		public StaticExtension ()
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/TrimSurroundingWhitespaceAttribute.cs b/mcs/class/System.Xaml/System.Windows.Markup/TrimSurroundingWhitespaceAttribute.cs
index 371e3e0..bf4309d 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/TrimSurroundingWhitespaceAttribute.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/TrimSurroundingWhitespaceAttribute.cs
@@ -31,7 +31,9 @@ using System.Xaml.Schema;
 namespace System.Windows.Markup
 {
 	[AttributeUsage (AttributeTargets.Class, AllowMultiple = false, Inherited = true)]
+#if !NET_2_1
 	[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
+#endif
 	public sealed class TrimSurroundingWhitespaceAttribute : Attribute
 	{
 	}
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/TypeExtension.cs b/mcs/class/System.Xaml/System.Windows.Markup/TypeExtension.cs
index 83c13d3..00af705 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/TypeExtension.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/TypeExtension.cs
@@ -30,7 +30,9 @@ namespace System.Windows.Markup
 {
 	[MarkupExtensionReturnType (typeof (Type))]
 	[TypeConverter (typeof (TypeExtensionConverter))]
+#if !NET_2_1
 	[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyPresentationFramework_3_5)]
+#endif
 	public class TypeExtension : MarkupExtension
 	{
 		public TypeExtension ()
@@ -54,6 +56,9 @@ namespace System.Windows.Markup
 		[ConstructorArgument ("type")]
 		[DefaultValue (null)]
 		public Type Type { get; set; }
+#if !NET_2_1
+		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
+#endif
 		public string TypeName { get; set; }
 
 		public override object ProvideValue (IServiceProvider serviceProvider)
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/TypeExtensionConverter.cs b/mcs/class/System.Xaml/System.Windows.Markup/TypeExtensionConverter.cs
index de4e357..ba95b02 100644
--- a/mcs/class/System.Xaml/System.Windows.Markup/TypeExtensionConverter.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/TypeExtensionConverter.cs
@@ -34,7 +34,12 @@ namespace System.Windows.Markup
 	{
 		public override bool CanConvertFrom (ITypeDescriptorContext context, Type sourceType)
 		{
-			return false;
+			// unlike implied at http://msdn.microsoft.com/en-us/library/ee621338.aspx , it does not support IXamlTypeResolver.
+			//if (sourceType == typeof (string) && context != null) {
+			//	var xtr = context.GetService (typeof (IXamlTypeResolver)) as IXamlTypeResolver;
+			//	return xtr != null;
+			//}
+			return base.CanConvertFrom (context, sourceType);
 		}
 
 		public override bool CanConvertTo (ITypeDescriptorContext context, Type destinationType)
@@ -44,19 +49,17 @@ namespace System.Windows.Markup
 
 		public override object ConvertFrom (ITypeDescriptorContext context, CultureInfo culture, object value)
 		{
-			throw new NotSupportedException (String.Format ("Conversion from type {0} is not supported", value != null ? value.GetType () : null));
+			return base.ConvertFrom (context, culture, value);
 		}
 
 		public override object ConvertTo (ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
 		{
-			var xt = value as XamlType;
-			if (xt != null) {
-				if (destinationType == typeof (string))
-					return xt.ToString ();
-				throw new NotSupportedException (String.Format ("Conversion to type {0} is not supported", destinationType));
-			}
-			else
+			var tx = value as TypeExtension;
+			if (!CanConvertTo (context, destinationType) || tx == null)
 				return base.ConvertTo (context, culture, value, destinationType); // it seems it still handles not-supported types (such as int).
+			var vctx = (IValueSerializerContext) context;
+			var lookup = vctx != null ? (INamespacePrefixLookup) vctx.GetService (typeof (INamespacePrefixLookup)) : null;
+			return tx.TypeName ?? new XamlTypeName ((XamlType) tx.ProvideValue (vctx)).ToString (lookup);
 		}
 	}
 }
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/UidPropertyAttribute.cs b/mcs/class/System.Xaml/System.Windows.Markup/UidPropertyAttribute.cs
index 1898e16..bd66ca2 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/UidPropertyAttribute.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/UidPropertyAttribute.cs
@@ -31,7 +31,9 @@ using System.Xaml.Schema;
 namespace System.Windows.Markup
 {
 	[AttributeUsage (AttributeTargets.Class, AllowMultiple = false)]
+#if !NET_2_1
 	[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
+#endif
 	public sealed class UidPropertyAttribute : Attribute
 	{
 		public UidPropertyAttribute (string name)
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/ValueSerializer.cs b/mcs/class/System.Xaml/System.Windows.Markup/ValueSerializer.cs
index 157f098..bee7ad6 100644
--- a/mcs/class/System.Xaml/System.Windows.Markup/ValueSerializer.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/ValueSerializer.cs
@@ -24,42 +24,90 @@ using System;
 using System.Collections;
 using System.Collections.Generic;
 using System.ComponentModel;
+using System.Globalization;
+using System.Linq;
 using System.Reflection;
 using System.Xaml;
+using System.Xaml.Schema;
 
 namespace System.Windows.Markup
 {
+#if !NET_2_1
 	[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
+#endif
 	public abstract class ValueSerializer
 	{
+#if !NET_2_1
 		public static ValueSerializer GetSerializerFor (PropertyDescriptor descriptor)
 		{
 			return GetSerializerFor (descriptor, null);
 		}
+#endif
 
 		public static ValueSerializer GetSerializerFor (Type type)
 		{
 			return GetSerializerFor (type, null);
 		}
 
+#if !NET_2_1
+		// untested
 		public static ValueSerializer GetSerializerFor (PropertyDescriptor descriptor, IValueSerializerContext context)
 		{
-			throw new NotImplementedException ();
+			if (descriptor == null)
+				throw new ArgumentNullException ("descriptor");
+			if (context != null)
+				return context.GetValueSerializerFor (descriptor);
+
+			var tc = descriptor.Converter;
+			if (tc != null && tc.GetType () != typeof (TypeConverter))
+				return new TypeConverterValueSerializer (tc);
+			return null;
 		}
+#endif
 
-		[MonoTODO ("IValueSerializerContext parameter is not supported")]
 		public static ValueSerializer GetSerializerFor (Type type, IValueSerializerContext context)
 		{
 			if (type == null)
 				throw new ArgumentNullException ("type");
-
-			// FIXME: it is likely a hack.
-			if (Type.GetTypeCode (type) != TypeCode.Object)
-				return new TypeConverterValueSerializer (type);
+			if (context != null)
+				return context.GetValueSerializerFor (type);
+
+			// Standard MarkupExtensions are serialized without ValueSerializer.
+			if (typeof (MarkupExtension).IsAssignableFrom (type) && XamlLanguage.AllTypes.Any (x => x.UnderlyingType == type))
+				return null;
+
+			// DateTime is documented as special.
+			if (type == typeof (DateTime))
+				return new DateTimeValueSerializer ();
+			// String too.
+			if (type == typeof (string))
+				return new StringValueSerializer ();
+
+			// FIXME: this is hack. The complete condition is fully documented at http://msdn.microsoft.com/en-us/library/ms590363.aspx
+			if (type.GetCustomAttribute<TypeConverterAttribute> (true) != null) {
+				var tc = type.GetTypeConverter ();
+				if (tc != null && tc.GetType () != typeof (TypeConverter))
+					return new TypeConverterValueSerializer (tc);
+			}
+
+			// Undocumented, but System.Type seems also special. While other MarkupExtension returned types are not handled specially, this method returns a valid instance for System.Type. Note that it doesn't for TypeExtension.
+			if (type == typeof (Type))
+				// Since System.Type does not have a valid TypeConverter, I use TypeExtensionConverter (may sound funny considering the above notes!) for this serializer.
+				return new TypeValueSerializer ();
+
+			// Undocumented, but several primitive types get a valid serializer while it does not have TypeConverter.
+			switch (Type.GetTypeCode (type)) {
+			case TypeCode.Object:
+			case TypeCode.DBNull:
+				break;
+			default:
+				return new TypeConverterValueSerializer (type.GetTypeConverter ());
+			}
+
+			// There is still exceptional type! TimeSpan. Why aren't they documented?
 			if (type == typeof (TimeSpan))
-				return new TypeConverterValueSerializer (typeof (TimeSpan));
-			if (type == typeof (Uri))
-				return new TypeConverterValueSerializer (typeof (Uri));
+				return new TypeConverterValueSerializer (type.GetTypeConverter ());
+
 			return null;
 		}
 
@@ -77,30 +125,32 @@ namespace System.Windows.Markup
 
 		public virtual object ConvertFromString (string value, IValueSerializerContext context)
 		{
-			throw new NotSupportedException (String.Format ("Conversion from string '{0}' is not supported", value));
+			throw GetConvertFromException (value);
 		}
 
 		public virtual string ConvertToString (object value,     IValueSerializerContext context)
 		{
-			throw new NotSupportedException (String.Format ("Conversion from '{0}' to string is not supported", value != null ? value.GetType ().Name : "(null)"));
+			throw GetConvertToException (value, typeof (string));
 		}
 
 		protected Exception GetConvertFromException (object value)
 		{
-			throw new NotImplementedException ();
+			return new NotSupportedException (String.Format ("Conversion from string '{0}' is not supported", value));
 		}
 
 		protected Exception GetConvertToException (object value, Type destinationType)
 		{
-			throw new NotImplementedException ();
+			return new NotSupportedException (String.Format ("Conversion from '{0}' to {1} is not supported", value != null ? value.GetType ().Name : "(null)", destinationType));
 		}
 
 		public virtual IEnumerable<Type> TypeReferences (object value, IValueSerializerContext context)
 		{
-			throw new NotImplementedException ();
+			yield break;
 		}
 	}
 
+	#region Internal implementations.
+
 	internal class StringValueSerializer : ValueSerializer
 	{
 		public override bool CanConvertFromString (string value, IValueSerializerContext context)
@@ -115,7 +165,7 @@ namespace System.Windows.Markup
 
 		public override object ConvertFromString (string value, IValueSerializerContext context)
 		{
-			throw new NotImplementedException ();
+			return value;
 		}
 
 		public override string ConvertToString (object value,     IValueSerializerContext context)
@@ -129,43 +179,67 @@ namespace System.Windows.Markup
 		}
 	}
 
-	#region Internal implementations.
-
-	internal class TypeConverterValueSerializer<T> : TypeConverterValueSerializer
+	internal class TypeValueSerializer : ValueSerializer
 	{
-		public TypeConverterValueSerializer ()
-			: base (typeof (T))
+		TypeExtensionConverter txc = new TypeExtensionConverter ();
+
+		public override bool CanConvertFromString (string value, IValueSerializerContext context)
+		{
+			return true;
+		}
+
+		public override bool CanConvertToString (object value, IValueSerializerContext context)
 		{
+			return true;
+		}
+
+		public override object ConvertFromString (string value, IValueSerializerContext context)
+		{
+			if (context == null)
+				return base.ConvertFromString (value, context);
+			var nsr = (IXamlNamespaceResolver) context.GetService (typeof (IXamlNamespaceResolver));
+			var scp = (IXamlSchemaContextProvider) context.GetService (typeof (IXamlSchemaContextProvider));
+			return scp.SchemaContext.GetXamlType (XamlTypeName.Parse (value, nsr)).UnderlyingType;
+		}
+
+		public override string ConvertToString (object value,     IValueSerializerContext context)
+		{
+			return (string) txc.ConvertTo (context, CultureInfo.InvariantCulture, value, typeof (string));
+		}
+
+		public override IEnumerable<Type> TypeReferences (object value, IValueSerializerContext context)
+		{
+			throw new NotImplementedException ();
 		}
 	}
 
 	internal class TypeConverterValueSerializer : ValueSerializer
 	{
-		public TypeConverterValueSerializer (Type type)
+		public TypeConverterValueSerializer (TypeConverter typeConverter)
 		{
-			c = TypeDescriptor.GetConverter (type);
+			c = typeConverter;
 		}
 
 		TypeConverter c;
 
 		public override bool CanConvertFromString (string value, IValueSerializerContext context)
 		{
-			return c.CanConvertFrom (typeof (string));
+			return c.CanConvertFrom (context, typeof (string));
 		}
 
 		public override bool CanConvertToString (object value, IValueSerializerContext context)
 		{
-			return c.CanConvertTo (typeof (string));
+			return c.CanConvertTo (context, typeof (string));
 		}
 
 		public override object ConvertFromString (string value, IValueSerializerContext context)
 		{
-			return c.ConvertFromInvariantString (value);
+			return c.ConvertFrom (context, CultureInfo.InvariantCulture, value);
 		}
 
 		public override string ConvertToString (object value,     IValueSerializerContext context)
 		{
-			return value == null ? String.Empty : c.ConvertToInvariantString (value);
+			return value == null ? String.Empty : (string) c.ConvertTo (context, CultureInfo.InvariantCulture, value, typeof (string));
 		}
 
 		public override IEnumerable<Type> TypeReferences (object value, IValueSerializerContext context)
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/ValueSerializerAttribute.cs b/mcs/class/System.Xaml/System.Windows.Markup/ValueSerializerAttribute.cs
index 37dec52..fdb4e95 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/ValueSerializerAttribute.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/ValueSerializerAttribute.cs
@@ -31,7 +31,9 @@ using System.Xaml.Schema;
 namespace System.Windows.Markup
 {
 	[AttributeUsage (AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Interface, AllowMultiple = false, Inherited = true)]
+#if !NET_2_1
 	[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
+#endif
 	public sealed class ValueSerializerAttribute : Attribute
 	{
 		public ValueSerializerAttribute (string valueSerializerTypeName)
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/WhitespaceSignificantCollectionAttribute.cs b/mcs/class/System.Xaml/System.Windows.Markup/WhitespaceSignificantCollectionAttribute.cs
index 36cdf56..893d79c 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/WhitespaceSignificantCollectionAttribute.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/WhitespaceSignificantCollectionAttribute.cs
@@ -31,7 +31,9 @@ using System.Xaml.Schema;
 namespace System.Windows.Markup
 {
 	[AttributeUsage (AttributeTargets.Class, AllowMultiple = false, Inherited = true)]
+#if !NET_2_1
 	[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
+#endif
 	public sealed class WhitespaceSignificantCollectionAttribute : Attribute
 	{
 	}
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/XmlLangPropertyAttribute.cs b/mcs/class/System.Xaml/System.Windows.Markup/XmlLangPropertyAttribute.cs
index 4789120..18978a8 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/XmlLangPropertyAttribute.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/XmlLangPropertyAttribute.cs
@@ -31,7 +31,9 @@ using System.Xaml.Schema;
 namespace System.Windows.Markup
 {
 	[AttributeUsage (AttributeTargets.Class, AllowMultiple = false)]
+#if !NET_2_1
 	[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
+#endif
 	public sealed class XmlLangPropertyAttribute : Attribute
 	{
 		public XmlLangPropertyAttribute (string name)
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/XmlnsCompatibleWithAttribute.cs b/mcs/class/System.Xaml/System.Windows.Markup/XmlnsCompatibleWithAttribute.cs
index 0e16db2..e77ae35 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/XmlnsCompatibleWithAttribute.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/XmlnsCompatibleWithAttribute.cs
@@ -31,7 +31,9 @@ using System.Xaml.Schema;
 namespace System.Windows.Markup
 {
 	[AttributeUsage (AttributeTargets.Assembly, AllowMultiple = true)]
+#if !NET_2_1
 	[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
+#endif
 	public sealed class XmlnsCompatibleWithAttribute : Attribute
 	{
 		public XmlnsCompatibleWithAttribute (string oldNamespace, string newNamespace)
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/XmlnsDefinitionAttribute.cs b/mcs/class/System.Xaml/System.Windows.Markup/XmlnsDefinitionAttribute.cs
index 81be2da..078623f 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/XmlnsDefinitionAttribute.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/XmlnsDefinitionAttribute.cs
@@ -31,7 +31,9 @@ using System.Xaml.Schema;
 namespace System.Windows.Markup
 {
 	[AttributeUsage (AttributeTargets.Assembly, AllowMultiple = true)]
+#if !NET_2_1
 	[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
+#endif
 	public sealed class XmlnsDefinitionAttribute : Attribute
 	{
 		public XmlnsDefinitionAttribute (string xmlNamespace, string clrNamespace)
diff --git a/mcs/class/System.Xaml/System.Windows.Markup/XmlnsPrefixAttribute.cs b/mcs/class/System.Xaml/System.Windows.Markup/XmlnsPrefixAttribute.cs
index c907c8e..4bdf0d9 100755
--- a/mcs/class/System.Xaml/System.Windows.Markup/XmlnsPrefixAttribute.cs
+++ b/mcs/class/System.Xaml/System.Windows.Markup/XmlnsPrefixAttribute.cs
@@ -31,7 +31,9 @@ using System.Xaml.Schema;
 namespace System.Windows.Markup
 {
 	[AttributeUsage (AttributeTargets.Assembly, AllowMultiple = true)]
+#if !NET_2_1
 	[System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblyWindowsBase)]
+#endif
 	public sealed class XmlnsPrefixAttribute : Attribute
 	{
 		public XmlnsPrefixAttribute (string xmlNamespace, string prefix)
diff --git a/mcs/class/System.Xaml/System.Xaml.Schema/ChangeLog b/mcs/class/System.Xaml/System.Xaml.Schema/ChangeLog
index 1d56e12..843dc0f 100644
--- a/mcs/class/System.Xaml/System.Xaml.Schema/ChangeLog
+++ b/mcs/class/System.Xaml/System.Xaml.Schema/ChangeLog
@@ -1,3 +1,58 @@
+2010-11-25  Atsushi Eno  <atsushi at ximian.com>
+
+	ParseNameList() failed to parse nested generic type names.
+
+2010-11-25  Atsushi Eno  <atsushi at ximian.com>
+
+	Parse() and ToString() array type name correctly.
+
+2010-11-18  Atsushi Eno  <atsushi at ximian.com>
+
+	Rewrote ValueSerializer.GetSerializerFor() with couple of tests.
+
+2010-11-12  Atsushi Eno  <atsushi at ximian.com>
+
+	Add new ValueSerializerContext and use it everywhere appropriate.
+
+	This change was basically for string serialization of
+	XamlTypeName, namely PropertyDefinition serialization. Turned out
+	it should be used in a lot of places where IServiceProvider and
+	ITypeDescriptorContext is expected. IServiceProvider
+	implementations in XamlWriters are replaced.
+
+2010-11-11  Atsushi Eno  <atsushi at ximian.com>
+
+	When collection instance returned null, do not try to GetItems().
+
+2010-11-09  Atsushi Eno  <atsushi at ximian.com>
+
+	Fix generic XamlTypeName output and GetType() to get some xml
+	reader case working.
+
+2010-11-06  Atsushi Eno  <atsushi at ximian.com>
+
+	Dictionary key might be inappropriately serialized into an
+	attribute.
+
+2010-10-27  Atsushi Eno  <atsushi at ximian.com>
+
+	Uncommend code that prohibits XamlMemberInvoker.GetValue() on
+	XamlDirective.
+
+2010-10-27  Atsushi Eno  <atsushi at ximian.com>
+
+	XamlLanguage.Items is not correctly supported in XamlObjectReader.
+
+2010-10-15  Marek Safar  <marek.safar at gmail.com>
+
+	Clean up few more warnings
+
+2010-10-07  Atsushi Eno  <atsushi at ximian.com>
+
+	Significant XamlObjectWriter rewrite for solid state transition.
+	And now it supports Array(Extension) and other MarkupExtension
+	types.
+
 2010-04-22  Atsushi Enomoto  <atsushi at ximian.com>
 
 	* XamlMemberInvoker.cs : make sure GetValue() is not supported
diff --git a/mcs/class/System.Xaml/System.Xaml.Schema/ChangeLog b/mcs/class/System.Xaml/System.Xaml.Schema/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Xaml/System.Xaml.Schema/ChangeLog
copy to mcs/class/System.Xaml/System.Xaml.Schema/ChangeLog.old
diff --git a/mcs/class/System.Xaml/System.Xaml.Schema/XamlMemberInvoker.cs b/mcs/class/System.Xaml/System.Xaml.Schema/XamlMemberInvoker.cs
index 7295679..2eafb46 100644
--- a/mcs/class/System.Xaml/System.Xaml.Schema/XamlMemberInvoker.cs
+++ b/mcs/class/System.Xaml/System.Xaml.Schema/XamlMemberInvoker.cs
@@ -57,20 +57,20 @@ namespace System.Xaml.Schema
 		{
 			if (instance == null)
 				throw new ArgumentNullException ("instance");
-			if (this is XamlDirective)
-				throw new NotSupportedException ("not supported operation on directive members.");
+			if (member is XamlDirective)
+				throw new NotSupportedException (String.Format ("not supported operation on directive member {0}", member));
 			if (UnderlyingGetter == null)
-				throw new NotSupportedException ("Attempt to get value from write-only property or event");
+				throw new NotSupportedException (String.Format ("Attempt to get value from write-only property or event {0}", member));
 			return UnderlyingGetter.Invoke (instance, new object [0]);
 		}
 		public virtual void SetValue (object instance, object value)
 		{
 			if (instance == null)
 				throw new ArgumentNullException ("instance");
-			if (this is XamlDirective)
-				throw new NotSupportedException ("not supported operation on directive members.");
+			if (member is XamlDirective)
+				throw new NotSupportedException (String.Format ("not supported operation on directive member {0}", member));
 			if (UnderlyingSetter == null)
-				throw new NotSupportedException ("Attempt to get value from read-only property");
+				throw new NotSupportedException (String.Format ("Attempt to set value from read-only property {0}", member));
 			UnderlyingSetter.Invoke (instance, new object [] {value});
 		}
 
diff --git a/mcs/class/System.Xaml/System.Xaml.Schema/XamlTypeInvoker.cs b/mcs/class/System.Xaml/System.Xaml.Schema/XamlTypeInvoker.cs
index 09f85b6..2e27cf6 100644
--- a/mcs/class/System.Xaml/System.Xaml.Schema/XamlTypeInvoker.cs
+++ b/mcs/class/System.Xaml/System.Xaml.Schema/XamlTypeInvoker.cs
@@ -50,7 +50,7 @@ namespace System.Xaml.Schema
 		void ThrowIfUnknown ()
 		{
 			if (type.UnderlyingType == null)
-				throw new InvalidOperationException (String.Format ("Current operation is valid only when the underlying type on a XamlType is known, but it is unknown for '{0}'", type));
+				throw new NotSupportedException (String.Format ("Current operation is valid only when the underlying type on a XamlType is known, but it is unknown for '{0}'", type));
 		}
 
 		public EventHandler<XamlSetMarkupExtensionEventArgs> SetMarkupExtensionHandler {
@@ -67,6 +67,11 @@ namespace System.Xaml.Schema
 				throw new ArgumentNullException ("instance");
 
 			var t = instance.GetType ();
+			if (type.UnderlyingType != null) {
+				if (!type.SchemaContext.GetXamlType (t).IsCollection) // not sure why this check is done only when UnderlyingType exists...
+					throw new NotSupportedException (String.Format ("Non-collection type '{0}' does not support this operation", t));
+			}
+
 			MethodInfo mi;
 			if (t.IsGenericType)
 				mi = instance.GetType ().GetMethod ("Add", t.GetGenericArguments ());
@@ -105,7 +110,9 @@ namespace System.Xaml.Schema
 		}
 		public virtual IEnumerator GetItems (object instance)
 		{
-			throw new NotImplementedException ();
+			if (instance == null)
+				throw new ArgumentNullException ("instance");
+			return ((IEnumerable) instance).GetEnumerator ();
 		}
 	}
 }
diff --git a/mcs/class/System.Xaml/System.Xaml.Schema/XamlTypeName.cs b/mcs/class/System.Xaml/System.Xaml.Schema/XamlTypeName.cs
index 137c03e..5cd7901 100644
--- a/mcs/class/System.Xaml/System.Xaml.Schema/XamlTypeName.cs
+++ b/mcs/class/System.Xaml/System.Xaml.Schema/XamlTypeName.cs
@@ -45,8 +45,27 @@ namespace System.Xaml.Schema
 
 			result = null;
 			IList<XamlTypeName> args = null;
+			int nArray = 0;
+			int idx;
 
-			int idx = typeName.IndexOf ('(');
+			if (typeName.Length > 2 && typeName [typeName.Length - 1] == ']') {
+				idx = typeName.LastIndexOf ('[');
+				if (idx < 0)
+					return false; // mismatch brace
+				nArray = 1;
+				for (int i = idx + 1; i < typeName.Length - 1; i++) {
+					if (typeName [i] != ',')
+						return false; // only ',' is expected
+					nArray++;
+				}
+				if (!TryParse (typeName.Substring (0, idx), namespaceResolver, out result))
+					return false;
+				// Weird result, but Name ends with '[]'
+				result = new XamlTypeName (result.Namespace, result.Name + '[' + new string (',', nArray - 1) + ']', result.TypeArguments);
+				return true;
+			}
+
+			idx = typeName.IndexOf ('(');
 			if (idx >= 0) {
 				if (typeName [typeName.Length - 1] != ')')
 					return false;
@@ -76,8 +95,6 @@ namespace System.Xaml.Schema
 			return true;
 		}
 
-		static readonly char [] commas = {','};
-
 		public static IList<XamlTypeName> ParseList (string typeNameList, IXamlNamespaceResolver namespaceResolver)
 		{
 			IList<XamlTypeName> list;
@@ -86,6 +103,8 @@ namespace System.Xaml.Schema
 			return list;
 		}
 
+		static readonly char [] comma_or_parens = new char [] {',', '(', ')'};
+
 		public static bool TryParseList (string typeNameList, IXamlNamespaceResolver namespaceResolver, out IList<XamlTypeName> list)
 		{
 			if (typeNameList == null)
@@ -94,21 +113,47 @@ namespace System.Xaml.Schema
 				throw new ArgumentNullException ("namespaceResolver");
 
 			list = null;
-			var split = typeNameList.Split (commas);
-			if (split.Length == 0)
-				return false;
+			int idx = 0;
+			int parens = 0;
+			XamlTypeName tn;
 
-			var arr = new XamlTypeName [split.Length];
+			List<string> l = new List<string> ();
+			int lastToken = 0;
+			while (true) {
+				int i = typeNameList.IndexOfAny (comma_or_parens, idx);
+				if (i < 0) {
+					l.Add (typeNameList.Substring (lastToken));
+					break;
+				}
+				
+				switch (typeNameList [i]) {
+				case ',':
+					if (parens != 0)
+						break;
+					l.Add (typeNameList.Substring (idx, i - idx));
+					break;
+				case '(':
+					parens++;
+					break;
+				case ')':
+					parens--;
+					break;
+				}
+				idx = i + 1;
+				while (idx < typeNameList.Length && typeNameList [idx] == ' ')
+					idx++;
+				if (parens == 0 && typeNameList [i] == ',')
+					lastToken = idx;
+			}
 
-			for (int i = 0; i < split.Length; i++) {
-				var s = split [i].Trim ();
-				XamlTypeName tn;
+			var ret = new List<XamlTypeName> ();
+		 	foreach (var s in l) {
 				if (!TryParse (s, namespaceResolver, out tn))
 					return false;
-				arr [i] = tn;
+				ret.Add (tn);
 			}
 
-			list = arr;
+			list = ret;
 			return true;
 		}
 
@@ -140,11 +185,13 @@ namespace System.Xaml.Schema
 
 		public XamlTypeName ()
 		{
+			TypeArguments = empty_type_args;
 		}
 
 		static readonly XamlTypeName [] empty_type_args = new XamlTypeName [0];
 
 		public XamlTypeName (XamlType xamlType)
+			: this ()
 		{
 			if (xamlType == null)
 				throw new ArgumentNullException ("xamlType");
@@ -155,8 +202,6 @@ namespace System.Xaml.Schema
 				l.AddRange (from x in xamlType.TypeArguments.AsQueryable () select new XamlTypeName (x));
 				TypeArguments = l;
 			}
-			else
-				TypeArguments = empty_type_args;
 		}
 		
 		public XamlTypeName (string xamlNamespace, string name)
@@ -165,6 +210,7 @@ namespace System.Xaml.Schema
 		}
 
 		public XamlTypeName (string xamlNamespace, string name, IEnumerable<XamlTypeName> typeArguments)
+			: this ()
 		{
 			Namespace = xamlNamespace;
 			Name = name;
@@ -175,8 +221,6 @@ namespace System.Xaml.Schema
 				l.AddRange (typeArguments);
 				TypeArguments = l;
 			}
-			else
-				TypeArguments = empty_type_args;
 		}
 
 		public string Name { get; set; }
@@ -204,11 +248,17 @@ namespace System.Xaml.Schema
 					throw new InvalidOperationException (String.Format ("Could not lookup prefix for namespace '{0}'", Namespace));
 				ret = p.Length == 0 ? Name : p + ":" + Name;
 			}
+			string arr = null;
+			if (ret [ret.Length - 1] == ']') {
+				int idx = ret.LastIndexOf ('[');
+				arr = ret.Substring (idx);
+				ret = ret.Substring (0, idx);
+			}
 
 			if (TypeArguments.Count > 0)
 				ret += String.Concat ("(", DoToString (TypeArguments, prefixLookup), ")");
 
-			return ret;
+			return ret + arr;
 		}
 	}
 }
diff --git a/mcs/class/System.Xaml/System.Xaml.Schema/XamlTypeTypeConverter.cs b/mcs/class/System.Xaml/System.Xaml.Schema/XamlTypeTypeConverter.cs
index acb6926..dc5333a 100644
--- a/mcs/class/System.Xaml/System.Xaml.Schema/XamlTypeTypeConverter.cs
+++ b/mcs/class/System.Xaml/System.Xaml.Schema/XamlTypeTypeConverter.cs
@@ -24,6 +24,8 @@ using System;
 using System.Collections.Generic;
 using System.ComponentModel;
 using System.Globalization;
+using System.Windows.Markup;
+using System.Xaml;
 
 namespace System.Xaml.Schema
 {
@@ -46,11 +48,17 @@ namespace System.Xaml.Schema
 
 		public override object ConvertTo (ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
 		{
+			if (!CanConvertTo (context, destinationType))
+				throw new NotSupportedException (String.Format ("Conversion to type {0} is not supported", destinationType));
+
+			var vctx = (IValueSerializerContext) context;
+			var lookup = vctx != null ? (INamespacePrefixLookup) vctx.GetService (typeof (INamespacePrefixLookup)) : null;
 			var xt = value as XamlType;
-			if (xt != null) {
-				if (destinationType == typeof (string))
+			if (xt != null && destinationType == typeof (string)) {
+				if (lookup != null)
+					return new XamlTypeName (xt).ToString (lookup);
+				else
 					return xt.UnderlyingType != null ? xt.UnderlyingType.ToString () : xt.ToString ();
-				throw new NotSupportedException (String.Format ("Conversion to type {0} is not supported", destinationType));
 			}
 			else
 				return base.ConvertTo (context, culture, value, destinationType); // it seems it still handles not-supported types (such as int).
diff --git a/mcs/class/System.Xaml/System.Xaml.Schema/XamlValueConverter.cs b/mcs/class/System.Xaml/System.Xaml.Schema/XamlValueConverter.cs
old mode 100644
new mode 100755
diff --git a/mcs/class/System.Xaml/System.Xaml.dll.sources b/mcs/class/System.Xaml/System.Xaml.dll.sources
index 0b60bbf..83da29c 100644
--- a/mcs/class/System.Xaml/System.Xaml.dll.sources
+++ b/mcs/class/System.Xaml/System.Xaml.dll.sources
@@ -1,7 +1,6 @@
 ../../build/common/Consts.cs
 ../../build/common/Locale.cs
 ../../build/common/MonoTODOAttribute.cs
-../../build/common/basic-profile-check.cs
 Assembly/AssemblyInfo.cs
 System.Windows.Markup/AmbientAttribute.cs
 System.Windows.Markup/ArrayExtension.cs
@@ -76,8 +75,12 @@ System.Xaml/IXamlNameResolver.cs
 System.Xaml/IXamlNamespaceResolver.cs
 System.Xaml/IXamlObjectWriterFactory.cs
 System.Xaml/IXamlSchemaContextProvider.cs
+System.Xaml/NameScope.cs
 System.Xaml/NamespaceDeclaration.cs
+System.Xaml/ParsedMarkupExtensionInfo.cs
+System.Xaml/PrefixLookup.cs
 System.Xaml/TypeExtensionMethods.cs
+System.Xaml/ValueSerializerContext.cs
 System.Xaml/XamlBackgroundReader.cs
 System.Xaml/XamlDeferringLoader.cs
 System.Xaml/XamlDirective.cs
@@ -86,10 +89,13 @@ System.Xaml/XamlException.cs
 System.Xaml/XamlInternalException.cs
 System.Xaml/XamlLanguage.cs
 System.Xaml/XamlMember.cs
+System.Xaml/XamlNameResolver.cs
+System.Xaml/XamlNode.cs
 System.Xaml/XamlNodeList.cs
 System.Xaml/XamlNodeQueue.cs
 System.Xaml/XamlNodeType.cs
 System.Xaml/XamlObjectEventArgs.cs
+System.Xaml/XamlObjectNodeIterator.cs
 System.Xaml/XamlObjectReader.cs
 System.Xaml/XamlObjectReaderException.cs
 System.Xaml/XamlObjectReaderSettings.cs
@@ -105,6 +111,7 @@ System.Xaml/XamlSchemaException.cs
 System.Xaml/XamlServices.cs
 System.Xaml/XamlType.cs
 System.Xaml/XamlWriter.cs
+System.Xaml/XamlWriterInternalBase.cs
 System.Xaml/XamlWriterSettings.cs
 System.Xaml/XamlWriterStateManager.cs
 System.Xaml/XamlXmlReader.cs
diff --git a/mcs/class/System.Xaml/System.Xaml/AttachablePropertyServices.cs b/mcs/class/System.Xaml/System.Xaml/AttachablePropertyServices.cs
index 575a281..fe7be75 100644
--- a/mcs/class/System.Xaml/System.Xaml/AttachablePropertyServices.cs
+++ b/mcs/class/System.Xaml/System.Xaml/AttachablePropertyServices.cs
@@ -6,34 +6,67 @@ namespace System.Xaml
 {
 	public static class AttachablePropertyServices
 	{
+		class Table : Dictionary<AttachableMemberIdentifier,object>
+		{
+		}
+
+		static Dictionary<object,Table> props = new Dictionary<object,Table> ();
+
 		public static void CopyPropertiesTo (object instance, KeyValuePair<AttachableMemberIdentifier,object> [] array, int index)
 		{
-			throw new NotImplementedException ();
+			Table t;
+			if (instance == null || !props.TryGetValue (instance, out t))
+				return;
+			((ICollection<KeyValuePair<AttachableMemberIdentifier,object>>) t).CopyTo (array, index);
 		}
 
 		public static int GetAttachedPropertyCount (object instance)
 		{
-			throw new NotImplementedException ();
+			Table t;
+			return instance != null && props.TryGetValue (instance, out t) ? t.Count : 0;
 		}
 
 		public static bool RemoveProperty (object instance, AttachableMemberIdentifier name)
 		{
-			throw new NotImplementedException ();
+			if (name == null)
+				throw new ArgumentNullException ("name");
+
+			Table t;
+			return instance != null && props.TryGetValue (instance, out t) ? t.Remove (name) : false;
 		}
 
 		public static void SetProperty (object instance, AttachableMemberIdentifier name, object value)
 		{
-			throw new NotImplementedException ();
+			if (name == null)
+				throw new ArgumentNullException ("name");
+
+			Table t;
+			if (!props.TryGetValue (instance, out t)) {
+				t = new Table ();
+				props [instance] = t;
+			}
+			t [name] = value;
 		}
 
 		public static bool TryGetProperty (object instance, AttachableMemberIdentifier name, out object value)
 		{
-			throw new NotImplementedException ();
+			if (name == null)
+				throw new ArgumentNullException ("name");
+
+			Table t;
+			value = null;
+			return instance != null && props.TryGetValue (instance, out t) ? t.TryGetValue (name, out value) : false;
 		}
 
 		public static bool TryGetProperty<T> (object instance, AttachableMemberIdentifier name, out T value)
 		{
-			throw new NotImplementedException ();
+			object ret;
+			if (!TryGetProperty (instance, name, out ret)) {
+				value = default (T);
+				return false;
+			}
+			value = (T) ret;
+			return true;
 		}
 	}
 }
diff --git a/mcs/class/System.Xaml/System.Xaml/ChangeLog b/mcs/class/System.Xaml/System.Xaml/ChangeLog
index ef12e8f..5cc7743 100644
--- a/mcs/class/System.Xaml/System.Xaml/ChangeLog
+++ b/mcs/class/System.Xaml/System.Xaml/ChangeLog
@@ -1,3 +1,608 @@
+2010-12-28  Atsushi Eno  <atsushi at ximian.com>
+
+	Actually we have almost what we need on mobile profiles.
+
+2010-12-20  Atsushi Eno  <atsushi at ximian.com>
+
+	Implemented support for attached properties in xamlreaders and
+	xamlwriters.
+
+2010-12-17  Atsushi Eno  <atsushi at ximian.com>
+
+	Add attachable event support in XamlType (not yet in readers and
+	writers).
+
+2010-12-16  Atsushi Eno  <atsushi at ximian.com>
+
+	Implement XamlType.GetAllAttachableProperties() and family, except
+	for events.
+
+2010-12-16  Atsushi Eno  <atsushi at ximian.com>
+
+	For IXmlSerializable/XData, Instance property returns null (!)
+
+2010-12-15  Atsushi Eno  <atsushi at ximian.com>
+
+	Add experimental "#if NET_2_1" mode (it builds w/o
+	s.x.permissions).
+
+2010-12-14  Atsushi Eno  <atsushi at ximian.com>
+
+	add missing method in IAmbientProvider.
+
+2010-12-07  Atsushi Eno  <atsushi at ximian.com>
+
+	Implemented XData support in XamlObjectWriter.
+
+2010-12-07  Atsushi Eno  <atsushi at ximian.com>
+
+	Implement XData support in XamlXmlReader.
+
+2010-12-07  Atsushi Eno  <atsushi at ximian.com>
+
+	XData support in XamlXmlWriter.
+
+2010-12-07  Atsushi Eno  <atsushi at ximian.com>
+
+	Implemented XData object reader support. Add missing test files.
+
+2010-12-06  Atsushi Eno  <atsushi at ximian.com>
+
+	Finally got XData tests that make sense. Implemented IsXData.
+
+2010-12-06  Atsushi Eno  <atsushi at ximian.com>
+
+	Add missing files.
+
+2010-12-06  Atsushi Eno  <atsushi at ximian.com>
+
+	Implemented Reference resolution in XamlObjectWriter.
+
+2010-12-03  Atsushi Eno  <atsushi at ximian.com>
+
+	name resolver could also be name provider.
+
+2010-12-03  Atsushi Eno  <atsushi at ximian.com>
+
+	Split internal base class into new file.
+
+2010-12-03  Atsushi Eno  <atsushi at ximian.com>
+
+	Rename source.
+
+2010-12-03  Atsushi Eno  <atsushi at ximian.com>
+
+	Now object reader returns PositionalParameters for non-root
+	Reference objects.
+
+2010-12-03  Atsushi Eno  <atsushi at ximian.com>
+
+	Implemented reference support (almost working, except for
+	Reference contents).
+
+	There are several refactorings as well as some hacky workarounds
+	to avoid wrong saving of names. References should return
+	PositionalParameters, but in the standalone tests they don't
+	return it, so I have to sort both out. Enabled xml writer tests as
+	they are working.
+
+2010-12-03  Atsushi Eno  <atsushi at ximian.com>
+
+	Members are not ordered by collection kind.
+
+2010-12-02  Atsushi Eno  <atsushi at ximian.com>
+
+	Make room for XamlNameResolver in XamlObjectReader, and some
+	related changes.
+
+2010-11-30  Atsushi Eno  <atsushi at ximian.com>
+
+	empty namespace should be successfully parsed.
+
+2010-11-30  Atsushi Eno  <atsushi at ximian.com>
+
+	Call GetObject only once per current member.
+
+	Previous code was errorneous if there is an array inside a
+	collection.
+
+2010-11-30  Atsushi Eno  <atsushi at ximian.com>
+
+	Do not retrive properties with get parameters (indexers).
+
+2010-11-29  Atsushi Eno  <atsushi at ximian.com>
+
+	TypeExtension and StaticExtension should now be correctly written
+	and read.
+
+2010-11-29  Atsushi Eno  <atsushi at ximian.com>
+
+	Refactoring Instance handling for consistent MarkupExtension
+	reading.
+
+	Removed tricky GetWrappedValue() while attempting to reduce its
+	use (could totally remove it out) to identify which parts these
+	readers and writers need it. Now It is in TypeExtensionMethods.
+	Still needs fix for StaticExtension.
+
+	Add another tricky test case: List of Array (not working) which
+	also involves MarkupExtension.
+
+2010-11-26  Atsushi Eno  <atsushi at ximian.com>
+
+	Add List of Type test case, and some FIXMEs.
+
+2010-11-25  Atsushi Eno  <atsushi at ximian.com>
+
+	Remove extra CWL.
+
+2010-11-25  Atsushi Eno  <atsushi at ximian.com>
+
+	Add refresh XamlObjectWriter implementation.
+
+	This writer can process a lot more xaml inputs. It is now unified
+	to XamlXmlWriter, sharing some internals (already existed in
+	XamlXmlWriter.cs).
+
+	Had to disable a few minor tests that used to pass for invalid
+	inputs.
+
+2010-11-25  Atsushi Eno  <atsushi at ximian.com>
+
+	More changes for XamlObjectWriter unification.
+
+2010-11-19  Atsushi Eno  <atsushi at ximian.com>
+
+	Implement XamlType.CanAssignTo(). Remove extra writer state
+	members.
+
+2010-11-19  Atsushi Eno  <atsushi at ximian.com>
+
+	Call OnWriteStratObject() after pushing current state.
+
+2010-11-19  Atsushi Eno  <atsushi at ximian.com>
+
+	Fix TypeValueSerializer and ValueSerializerContext to work fine
+	with XamlObjectWriter.
+
+2010-11-19  Atsushi Eno  <atsushi at ximian.com>
+
+	Remove unnecessary code. String type check is only for
+	XamlXmlWriter.
+
+2010-11-18  Atsushi Eno  <atsushi at ximian.com>
+
+	Support x:Arguments in XamlObjectWriter.
+
+2010-11-18  Atsushi Eno  <atsushi at ximian.com>
+
+	Avoid examining converted type after using TypeConverter. Add
+	ArgumentAttributed test for object writer.
+
+2010-11-18  Atsushi Eno  <atsushi at ximian.com>
+
+	Gave up finding "correct" way to deserialize XamlType and made it
+	special case :(
+
+2010-11-17  Atsushi Eno  <atsushi at ximian.com>
+
+	Get object instantiation correctly invoked when non-constructive
+	StartMember is invoked.
+
+2010-11-17  Atsushi Eno  <atsushi at ximian.com>
+
+	Consider PositionalParametesr in XamlObjectWriter.
+
+2010-11-17  Atsushi Eno  <atsushi at ximian.com>
+
+	Made a couple of PositionalParameter related fixes, disabling
+	test, etc.
+
+2010-11-16  Atsushi Eno  <atsushi at ximian.com>
+
+	ContentProperty will just show up as an ordinal property, so no
+	need to worry here.
+
+2010-11-16  Atsushi Eno  <atsushi at ximian.com>
+
+	Remove for-object-writer-only code from common non-object writer
+	base.
+
+2010-11-16  Atsushi Eno  <atsushi at ximian.com>
+
+	Removed unused code / commented out unused test lines.
+
+2010-11-16  Atsushi Eno  <atsushi at ximian.com>
+
+	cleaning up some FIXMEs.
+
+2010-11-15  Atsushi Eno  <atsushi at ximian.com>
+
+	Make string convertibility check more strictly.
+
+2010-11-15  Atsushi Eno  <atsushi at ximian.com>
+
+	Use CanConvertTo(typeof(string)) before converting to string. Add
+	Object writer tests.
+
+2010-11-12  Atsushi Eno  <atsushi at ximian.com>
+
+	Return XamlLanguage.Items for dictionary and ContentProperty as
+	implicit member.
+
+2010-11-12  Atsushi Eno  <atsushi at ximian.com>
+
+	Fix wrong attribute value string indexing.
+
+2010-11-12  Atsushi Eno  <atsushi at ximian.com>
+
+	XamlSchemaContext.GetXamlType(XamlTypeName) now resolves
+	assemblies then types.
+
+	And use it in appropriate place. Fixed part of
+	XamlXmlReaderTest.PositionalParameters2().
+
+2010-11-12  Atsushi Eno  <atsushi at ximian.com>
+
+	Extension types may have omitted "Extension" from XML name.
+
+2010-11-12  Atsushi Eno  <atsushi at ximian.com>
+
+	Fix XamlMember comparison and get relevant tests working.
+
+2010-11-12  Atsushi Eno  <atsushi at ximian.com>
+
+	Add support for MarkupExtension attribute in XamlXmlReader.
+
+2010-11-12  Atsushi Eno  <atsushi at ximian.com>
+
+	Add new ValueSerializerContext and use it everywhere appropriate.
+
+	This change was basically for string serialization of
+	XamlTypeName, namely PropertyDefinition serialization. Turned out
+	it should be used in a lot of places where IServiceProvider and
+	ITypeDescriptorContext is expected. IServiceProvider
+	implementations in XamlWriters are replaced.
+
+2010-11-11  Atsushi Eno  <atsushi at ximian.com>
+
+	XamlMember.TypeConverter should return correct converter now.
+
+	Also adding usage of that member, but not perfectly working yet.
+
+	Disabled broken tests that depends on not-implemented
+	XamlObjectWriter part.
+
+2010-11-11  Atsushi Eno  <atsushi at ximian.com>
+
+	When collection instance returned null, do not try to GetItems().
+
+2010-11-11  Atsushi Eno  <atsushi at ximian.com>
+
+	Remove old code (overwrite).
+
+2010-11-11  Atsushi Eno  <atsushi at ximian.com>
+
+	Remove extra copy lines.
+
+2010-11-11  Atsushi Eno  <atsushi at ximian.com>
+
+	Split XamlNode.cs to object-reader specific code and else.
+
+2010-11-11  Atsushi Eno  <atsushi at ximian.com>
+
+	Fix readonly collection check (should use IsWritePublic).
+
+2010-11-09  Atsushi Eno  <atsushi at ximian.com>
+
+	Fix generic XamlTypeName output and GetType() to get some xml
+	reader case working.
+
+2010-11-08  Atsushi Eno  <atsushi at ximian.com>
+
+	Fix positional parameter argument output location check.
+
+	MarkupExtension with multiple arguments are prohibited at top
+	level.
+
+2010-11-08  Atsushi Eno  <atsushi at ximian.com>
+
+	Fix attribute state management to handle x:Key inside
+	MarkupExtension correctly.
+
+	Namely TypeExtension (it got working).
+
+2010-11-08  Atsushi Eno  <atsushi at ximian.com>
+
+	Fix PositionalParameter serialization in collections.
+
+	Dictionary still needs another fix.
+
+2010-11-08  Atsushi Eno  <atsushi at ximian.com>
+
+	Forgot to remove old internal stuff.
+
+2010-11-08  Atsushi Eno  <atsushi at ximian.com>
+
+	Fixed member order in Dictionary key and item in XamlObjectReader.
+
+	This requires messy and complicated change and sort of illogical
+	member ordering!
+
+2010-11-06  Atsushi Eno  <atsushi at ximian.com>
+
+	Dictionary key might be inappropriately serialized into an
+	attribute.
+
+2010-11-06  Atsushi Eno  <atsushi at ximian.com>
+
+	Add support for ContentPropertyAttribute (e.g. Reference) in
+	XamlXmlWriter.
+
+2010-11-06  Atsushi Eno  <atsushi at ximian.com>
+
+	Implement member pending at StartMember when it should be
+	indeterminant. Lots of code cleanup.
+
+2010-11-06  Atsushi Eno  <atsushi at ximian.com>
+
+	Add new XamlXmlWriter implementation. Marked some as NotWorking
+	while removed a lot.
+
+2010-11-06  Atsushi Eno  <atsushi at ximian.com>
+
+	MarkupExtension type xml names are omitted their "Extension"
+	parts.
+
+2010-11-06  Atsushi Eno  <atsushi at ximian.com>
+
+	indent text xml.
+
+2010-11-06  U-monkeytimeline2\atsushi  <atsushi at monkeytimeline2.(none)>
+
+	A few refactoring for new XamlXmlWriter. Add tests for
+	[ContentProperty].
+
+2010-11-04  Atsushi Eno  <atsushi at ximian.com>
+
+	Move XamlType-generic PositionalParameter stuff from
+	XamlObjectReader-specific source for writer support.
+
+2010-11-03  Atsushi Eno  <atsushi at ximian.com>
+
+	Extracted PrefixLookup to another file. Add more
+	XamlTypeName.ToString() tests.
+
+2010-11-02  Atsushi Eno  <atsushi at ximian.com>
+
+	Move around some members (to correct/appropriate places) for
+	isolated xaml writer implementation.
+
+2010-10-29  Atsushi Eno  <atsushi at ximian.com>
+
+	Remove old code.
+
+2010-10-29  Atsushi Eno  <atsushi at ximian.com>
+
+	(Finally) replace old XamlObjectReader implementation with new
+	one.
+
+2010-10-29  Atsushi Eno  <atsushi at ximian.com>
+
+	Added some notes on how we can use and/or test this XamlReader
+	under .NET.
+
+2010-10-29  Atsushi Eno  <atsushi at ximian.com>
+
+	Make it strict to apply PositionalParameters to limit to only
+	simple arguments.
+
+	Simple arguments can be written as "{foobar}" markup string within
+	an attribute.
+
+2010-10-29  Atsushi Eno  <atsushi at ximian.com>
+
+	More compliant ordering of GetAllMembers() results.
+	ConstructorArguments and PositionalParameters go first.
+
+2010-10-29  Atsushi Eno  <atsushi at ximian.com>
+
+	GetAllMSeveral fixes regarding property readability and
+	writability.
+
+	XamlMember.IsReadOnly returns false if there is private get
+	accessor. This is used to filter nonpublic accessors out, so
+	replaced its usage with !IsWritePublic to check truly read-only
+	members.
+
+	This fix also required some changes in markup types (as IsReadOnly
+	value now differs).
+
+2010-10-29  Atsushi Eno  <atsushi at ximian.com>
+
+	Introduce new XamlObjectReader implementation.
+
+	Nodes are iterated in XamlNodeIterator which is used by
+	XamlObjectReader. It collects namespace declarations as it does in
+	the reading the objects. The new code is somewhat better, with
+	less "special" hardcoded rules.
+
+	It can be even compiled with .NET (with TypeExtensionMethods).
+
+2010-10-29  Atsushi Eno  <atsushi at ximian.com>
+
+	Fix XamlType.Name to take TypeArguments into consideration.
+
+2010-10-28  Atsushi Eno  <atsushi at ximian.com>
+
+	Remove extra DateTime handling and add some rules for
+	PositionalParameters.
+
+2010-10-27  Atsushi Eno  <atsushi at ximian.com>
+
+	Some internal refactoring for new XamlObjectReader implementation.
+
+2010-10-27  Atsushi Eno  <atsushi at ximian.com>
+
+	Move member ordering code to LookupAllMembers().
+
+2010-10-27  Atsushi Eno  <atsushi at ximian.com>
+
+	Uncommend code that prohibits XamlMemberInvoker.GetValue() on
+	XamlDirective.
+
+2010-10-27  Atsushi Eno  <atsushi at ximian.com>
+
+	Fix wrong lookup base call.
+
+2010-10-27  Atsushi Eno  <atsushi at ximian.com>
+
+	XamlLanguage.Items is not correctly supported in XamlObjectReader.
+
+2010-10-27  Atsushi Eno  <atsushi at ximian.com>
+
+	ItemType returns Value item for Dictionary type.
+
+2010-10-26  Atsushi Eno  <atsushi at ximian.com>
+
+	Improve namespace collector implementation to prepare for
+	positional parameters.
+
+2010-10-25  Atsushi Eno  <atsushi at ximian.com>
+
+	Refactoring namespace declaration output for getting .NET-like
+	attribute output.
+
+2010-10-25  Atsushi Eno  <atsushi at ximian.com>
+
+	Write some special names back when writing xaml to XmlWriter.
+
+2010-10-25  Atsushi Eno  <atsushi at ximian.com>
+
+	Add a couple of writer tests (NotWorking) and fixed XamlServices
+	to not omit xmldecl.
+
+2010-10-19  Atsushi Eno  <atsushi at ximian.com>
+
+	Add complicated dictionary state and support dictionary in
+	XamlObjectReader.
+
+2010-10-19  Atsushi Eno  <atsushi at ximian.com>
+
+	Make XamlType.GetMember() and XamlType.GetAllMembers() consistent.
+	Return Items for Dictionary.
+
+2010-10-19  Atsushi Eno  <atsushi at ximian.com>
+
+	Add Dictionary reader test and made some fixes towards it.
+
+2010-10-19  Atsushi Eno  <atsushi at ximian.com>
+
+	Array takes ArrayExtension shape and thus won't reach here, so
+	remove NIE.
+
+2010-10-19  Atsushi Eno  <atsushi at ximian.com>
+
+	Implement FactoryMethod and Arguments support in XamlObjectWriter.
+
+2010-10-19  Atsushi Eno  <atsushi at ximian.com>
+
+	Handle x:* attributes and look for standard directives in
+	XamlXmlReader. Factory method got working.
+
+2010-10-19  Atsushi Eno  <atsushi at ximian.com>
+
+	StaticExtension also puts PositionalParameters (not sure why, but
+	it's like TypeExtension).
+
+2010-10-18  Atsushi Eno  <atsushi at ximian.com>
+
+	Several fixes for types that include static members.
+
+2010-10-18  Atsushi Eno  <atsushi at ximian.com>
+
+	Take TypeConverter into consideration in XamlObjectReader.
+
+2010-10-18  Atsushi Eno  <atsushi at ximian.com>
+
+	XamlXmlWriter.WriteValue() accepts only string.
+
+2010-10-16  Atsushi Eno  <atsushi at ximian.com>
+
+	For empty collection, do not put meaningless Items member and
+	GetObject.
+
+2010-10-16  Atsushi Eno  <atsushi at ximian.com>
+
+	Write null value as NullExtension regardless of its member type.
+
+2010-10-15  Marek Safar  <marek.safar at gmail.com>
+
+	Clean up few more warnings
+
+2010-10-15  Atsushi Eno  <atsushi at ximian.com>
+
+	Remove wrong stack push of members.
+
+2010-10-15  Atsushi Eno  <atsushi at ximian.com>
+
+	Differentiate Instance property and internal object stack to
+	retrieve properties.
+
+2010-10-15  Atsushi Eno  <atsushi at ximian.com>
+
+	Support ArrayExtension Items and GetObject node in
+	XamlObjectReader.
+
+2010-10-09  Atsushi Eno  <atsushi at ximian.com>
+
+	Add couple of (not-working) object reader testcases. Add some
+	comments and commented code on XamlObjectReader.
+
+2010-10-07  Atsushi Eno  <atsushi at ximian.com>
+
+	Significant XamlObjectWriter rewrite for solid state transition.
+	And now it supports Array(Extension) and other MarkupExtension
+	types.
+
+2010-10-06  Atsushi Eno  <atsushi at ximian.com>
+
+	Add more complicated state transition to XamlXmlReader and now it
+	can handle GetObject.
+
+2010-10-06  Atsushi Eno  <atsushi at ximian.com>
+
+	Use MarkupExtension.ProvideValue() so that XamlObjectReader can
+	return expected Result. Implement internal IXamlNameResolver for
+	Reference resolution.
+
+2010-10-06  Atsushi Eno  <atsushi at ximian.com>
+
+	Add ContentProperty support in XamlXmlReader. Add some testcases.
+
+2010-10-05  Atsushi Eno  <atsushi at ximian.com>
+
+	Get List<int> working with XamlXmlReader and XamlObjectWriter.
+
+	XamlObjectWriter needs stack of content object list so that List
+	can store items correctly with nested state. XamlXmlReader now
+	outputs Items, and to handle it I needed special reader states.
+
+2010-10-04  Atsushi Eno  <atsushi at ximian.com>
+
+	Handle Initialization correctly.
+
+2010-10-04  Atsushi Eno  <atsushi at ximian.com>
+
+	Get constructor arguments (x:Arguments) working on XamlXmlWriter
+	and XamlObjectReader.
+
+2010-10-04  Atsushi Eno  <atsushi at ximian.com>
+
+	A couple of fixes around
+	XamlSchemaContext.GetXamlType(XamlTypeName) and get XamlXmlReader
+	pass with unknown type names.
+
 2010-05-17  Atsushi Enomoto  <atsushi at ximian.com>
 
 	* XamlWriterStateManager.cs : on object writer, reject more write
diff --git a/mcs/class/System.Xaml/System.Xaml/ChangeLog b/mcs/class/System.Xaml/System.Xaml/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Xaml/System.Xaml/ChangeLog
copy to mcs/class/System.Xaml/System.Xaml/ChangeLog.old
diff --git a/mcs/class/System.Xaml/System.Xaml/IAmbientProvider.cs b/mcs/class/System.Xaml/System.Xaml/IAmbientProvider.cs
index 211edba..0ad6e98 100644
--- a/mcs/class/System.Xaml/System.Xaml/IAmbientProvider.cs
+++ b/mcs/class/System.Xaml/System.Xaml/IAmbientProvider.cs
@@ -30,6 +30,7 @@ namespace System.Xaml
 	{
 		IEnumerable<Object> GetAllAmbientValues (params XamlType[] types);
 		IEnumerable<AmbientPropertyValue> GetAllAmbientValues (IEnumerable<XamlType> ceilingTypes, params XamlMember [] properties);
+		IEnumerable<AmbientPropertyValue> GetAllAmbientValues (IEnumerable<XamlType> ceilingTypes, bool searchLiveStackOnly, IEnumerable<XamlType> types, params XamlMember[] properties);
 		Object GetFirstAmbientValue (params XamlType [] types);
 		AmbientPropertyValue GetFirstAmbientValue (IEnumerable<XamlType> ceilingTypes, params XamlMember [] properties);
 	}
diff --git a/mcs/class/System.Xaml/System.Xaml/NameScope.cs b/mcs/class/System.Xaml/System.Xaml/NameScope.cs
new file mode 100644
index 0000000..7f90346
--- /dev/null
+++ b/mcs/class/System.Xaml/System.Xaml/NameScope.cs
@@ -0,0 +1,60 @@
+//
+// Copyright (C) 2010 Novell Inc. http://novell.com
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Reflection;
+using System.Windows.Markup;
+using System.Xaml.Schema;
+
+namespace System.Xaml
+{
+	class NameScope : INameScope
+	{
+		Dictionary<string,object> table = new Dictionary<string,object> ();
+
+		public object FindName (string name)
+		{
+			object obj;
+			return table.TryGetValue (name, out obj) ? obj : null;
+		}
+
+		public string GetNameForObject (object obj)
+		{
+			var p = table.FirstOrDefault (kvp => kvp.Value == obj);
+			return p.Key;
+		}
+
+		public void RegisterName (string name, object scopedElement)
+		{
+			table.Add (name, scopedElement);
+		}
+
+		public void UnregisterName (string name)
+		{
+			table.Remove (name);
+		}
+	}
+}
diff --git a/mcs/class/System.Xaml/System.Xaml/ParsedMarkupExtensionInfo.cs b/mcs/class/System.Xaml/System.Xaml/ParsedMarkupExtensionInfo.cs
new file mode 100644
index 0000000..1245a3e
--- /dev/null
+++ b/mcs/class/System.Xaml/System.Xaml/ParsedMarkupExtensionInfo.cs
@@ -0,0 +1,99 @@
+//
+// Copyright (C) 2010 Novell Inc. http://novell.com
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Xml;
+using System.Xaml.Schema;
+
+namespace System.Xaml
+{
+	internal class ParsedMarkupExtensionInfo
+	{
+		Dictionary<XamlMember,object> args = new Dictionary<XamlMember,object> ();
+		public Dictionary<XamlMember,object> Arguments {
+			get { return args; }
+		}
+	
+		public XamlType Type { get; set; }
+
+		public static ParsedMarkupExtensionInfo Parse (string raw, IXamlNamespaceResolver nsResolver, XamlSchemaContext sctx)
+		{
+			if (raw == null)
+				throw new ArgumentNullException ("raw");
+			if (raw.Length == 0 || raw [0] != '{')
+				throw Error ("Invalid markup extension attribute. It should begin with '{{', but was {0}", raw);
+			var ret = new ParsedMarkupExtensionInfo ();
+			int idx = raw.IndexOf ('}');
+			if (idx < 0)
+				throw Error ("Expected '}}' in the markup extension attribute: '{0}'", raw);
+			raw = raw.Substring (1, idx - 1);
+			idx = raw.IndexOf (' ');
+			string name = idx < 0 ? raw : raw.Substring (0, idx);
+
+			XamlTypeName xtn;
+			if (!XamlTypeName.TryParse (name, nsResolver, out xtn))
+				throw Error ("Failed to parse type name '{0}'", name);
+			var xt = sctx.GetXamlType (xtn);
+			ret.Type = xt;
+
+			if (idx < 0)
+				return ret;
+
+			string [] vpairs = raw.Substring (idx + 1, raw.Length - idx - 1).Split (',');
+			List<string> posPrms = null;
+			foreach (string vpair in vpairs) {
+				idx = vpair.IndexOf ('=');
+				// FIXME: unescape string (e.g. comma)
+				if (idx < 0) {
+					if (posPrms == null) {
+						posPrms = new List<string> ();
+						ret.Arguments.Add (XamlLanguage.PositionalParameters, posPrms);
+					}
+					posPrms.Add (UnescapeValue (vpair.Trim ()));
+				} else {
+					var key = vpair.Substring (0, idx).Trim ();
+					// FIXME: is unknown member always isAttacheable = false?
+					var xm = xt.GetMember (key) ?? new XamlMember (key, xt, false);
+					ret.Arguments.Add (xm, UnescapeValue (vpair.Substring (idx + 1).Trim ()));
+				}
+			}
+			return ret;
+		}
+		
+		static string UnescapeValue (string s)
+		{
+			// change XamlXmlWriter too if we change here.
+			if (s == "\"\"") // FIXME: there could be some escape syntax.
+				return String.Empty;
+			else
+				return s;
+		}
+
+		static Exception Error (string format, params object [] args)
+		{
+			return new XamlParseException (String.Format (format, args));
+		}
+	}
+}
diff --git a/mcs/class/System.Xaml/System.Xaml/PrefixLookup.cs b/mcs/class/System.Xaml/System.Xaml/PrefixLookup.cs
new file mode 100644
index 0000000..190bec0
--- /dev/null
+++ b/mcs/class/System.Xaml/System.Xaml/PrefixLookup.cs
@@ -0,0 +1,90 @@
+//
+// Copyright (C) 2010 Novell Inc. http://novell.com
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Linq;
+using System.Reflection;
+using System.Windows.Markup;
+using System.Xaml.Schema;
+using System.Xml;
+
+namespace System.Xaml
+{
+	internal class PrefixLookup : INamespacePrefixLookup
+	{
+		public PrefixLookup (XamlSchemaContext schemaContext)
+		{
+			sctx = schemaContext;
+			Namespaces = new List<NamespaceDeclaration> ();
+		}
+		
+		XamlSchemaContext sctx;
+		
+		public bool IsCollectingNamespaces { get; set; }
+		
+		public List<NamespaceDeclaration> Namespaces { get; private set; }
+
+		public string LookupPrefix (string ns)
+		{
+			var nd = Namespaces.FirstOrDefault (n => n.Namespace == ns);
+			if (nd == null && IsCollectingNamespaces)
+				return AddNamespace (ns);
+			else
+				return nd != null ? nd.Prefix : null;
+		}
+		
+		public string AddNamespace (string ns)
+		{
+			var l = Namespaces;
+			string prefix, s;
+			if (ns == XamlLanguage.Xaml2006Namespace)
+				prefix = "x";
+			else if (!l.Any (i => i.Prefix == String.Empty))
+				prefix = String.Empty;
+			else if ((s = GetAcronym (ns)) != null && !l.Any (i => i.Prefix == s))
+				prefix = s;
+			else
+				prefix = sctx.GetPreferredPrefix (ns);
+			l.Add (new NamespaceDeclaration (ns, prefix));
+			return prefix;
+		}
+		
+		string GetAcronym (string ns)
+		{
+			int idx = ns.IndexOf (';');
+			if (idx < 0)
+				return null;
+			string pre = "clr-namespace:";
+			if (!ns.StartsWith (pre, StringComparison.Ordinal))
+				return null;
+			ns = ns.Substring (pre.Length, idx - pre.Length);
+			string ac = "";
+			foreach (string nsp in ns.Split ('.'))
+				if (nsp.Length > 0)
+					ac += nsp [0];
+			return ac.Length > 0 ? ac.ToLower (CultureInfo.InvariantCulture) : null;
+		}
+	}
+}
diff --git a/mcs/class/System.Xaml/System.Xaml/TypeExtensionMethods.cs b/mcs/class/System.Xaml/System.Xaml/TypeExtensionMethods.cs
index 2baf023..1a8d4af 100644
--- a/mcs/class/System.Xaml/System.Xaml/TypeExtensionMethods.cs
+++ b/mcs/class/System.Xaml/System.Xaml/TypeExtensionMethods.cs
@@ -24,6 +24,7 @@ using System;
 using System.Collections;
 using System.Collections.Generic;
 using System.ComponentModel;
+using System.Globalization;
 using System.Linq;
 using System.Reflection;
 using System.Windows.Markup;
@@ -33,14 +34,6 @@ namespace System.Xaml
 {
 	static class TypeExtensionMethods
 	{
-		// FIXME: this likely needs to be replaced with XamlTypeName
-		public static string GetXamlName (this Type type)
-		{
-			if (!type.IsNested)
-				return type.Name;
-			return type.DeclaringType.GetXamlName () + "+" + type.Name;
-		}
-
 		#region inheritance search and custom attribute provision
 
 		public static T GetCustomAttribute<T> (this ICustomAttributeProvider type, bool inherit) where T : Attribute
@@ -55,7 +48,7 @@ namespace System.Xaml
 			if (type.UnderlyingType == null)
 				return null;
 
-			T ret = type.CustomAttributeProvider.GetCustomAttribute<T> (true);
+			T ret = type.GetCustomAttributeProvider ().GetCustomAttribute<T> (true);
 			if (ret != null)
 				return ret;
 			if (type.BaseType != null)
@@ -74,6 +67,8 @@ namespace System.Xaml
 				throw new ArgumentNullException ("type");
 			if (definition == null)
 				throw new ArgumentNullException ("definition");
+			if (type == definition)
+				return true;
 
 			foreach (var iface in type.GetInterfaces ())
 				if (iface == definition || (iface.IsGenericType && iface.GetGenericTypeDefinition () == definition))
@@ -85,103 +80,104 @@ namespace System.Xaml
 		
 		#region type conversion and member value retrieval
 		
-		public static string GetStringValue (this XamlType xt, object obj, INamespacePrefixLookup prefixLookup)
+		static readonly NullExtension null_value = new NullExtension ();
+
+		public static object GetExtensionWrapped (object o)
+		{
+			// FIXME: should this manually checked, or is there any way to automate it?
+			// Also XamlSchemaContext might be involved but this method signature does not take it consideration.
+			if (o == null)
+				return null_value;
+			if (o is Array)
+				return new ArrayExtension ((Array) o);
+			if (o is Type)
+				return new TypeExtension ((Type) o);
+			return o;
+		}
+		
+		public static string GetStringValue (XamlType xt, XamlMember xm, object obj, IValueSerializerContext vsctx)
 		{
 			if (obj == null)
 				return String.Empty;
 			if (obj is Type)
-				return new XamlTypeName (xt.SchemaContext.GetXamlType ((Type) obj)).ToString (prefixLookup);
+				return new XamlTypeName (xt.SchemaContext.GetXamlType ((Type) obj)).ToString (vsctx != null ? vsctx.GetService (typeof (INamespacePrefixLookup)) as INamespacePrefixLookup : null);
 
-			if (obj is DateTime)
-				// FIXME: DateTimeValueSerializer should apply
-				return (string) TypeDescriptor.GetConverter (typeof (DateTime)).ConvertToInvariantString (obj);
-			else
-				return (string) xt.ConvertObject (obj, typeof (string));
-		}
+			var vs = (xm != null ? xm.ValueSerializer : null) ?? xt.ValueSerializer;
+			if (vs != null)
+				return vs.ConverterInstance.ConvertToString (obj, vsctx);
 
-		public static object ConvertObject (this XamlType xt, object target, Type explicitTargetType)
-		{
-			return DoConvert (xt.TypeConverter, target, explicitTargetType ?? xt.UnderlyingType);
+			// FIXME: does this make sense?
+			var vc = (xm != null ? xm.TypeConverter : null) ?? xt.TypeConverter;
+			var tc = vc != null ? vc.ConverterInstance : null;
+			if (tc != null && typeof (string) != null && tc.CanConvertTo (vsctx, typeof (string)))
+				return (string) tc.ConvertTo (vsctx, CultureInfo.InvariantCulture, obj, typeof (string));
+			if (obj is string || obj == null)
+				return (string) obj;
+			throw new InvalidCastException (String.Format ("Cannot cast object '{0}' to string", obj.GetType ()));
 		}
 		
-		public static object GetMemberValueForObjectReader (this XamlMember xm, XamlType xt, object target, INamespacePrefixLookup prefixLookup)
+		public static TypeConverter GetTypeConverter (this Type type)
 		{
-			object native = GetPropertyOrFieldValueForObjectReader (xm, xt, target, prefixLookup);
-			var convertedType = xm.Type == null ? null : xm.Type.UnderlyingType;
-			return DoConvert (xm.TypeConverter, native, convertedType);
+#if MOONLIGHT
+			if (typeof (IConvertible).IsAssignableFrom (type))
+				return (TypeConverter) Activator.CreateInstance (typeof (ConvertibleTypeConverter<>).MakeGenericType (new Type [] {type}));
+			var name = type.GetCustomAttribute<TypeConverterAttribute> (true).ConverterTypeName;
+			return (TypeConverter) Activator.CreateInstance (type.Assembly.GetType (name) ?? Type.GetType (name));
+#else
+			return TypeDescriptor.GetConverter (type);
+#endif
 		}
 		
-		static object DoConvert (XamlValueConverter<TypeConverter> converter, object value, Type targetType)
-		{
-			// First get member value, then convert it to appropriate target type.
-			var tc = converter != null ? converter.ConverterInstance : null;
-			if (tc != null && targetType != null && tc.CanConvertTo (targetType))
-				return tc.ConvertTo (value, targetType);
-			return value;
-		}
-
-		static object GetPropertyOrFieldValueForObjectReader (this XamlMember xm, XamlType xt, object target, INamespacePrefixLookup prefixLookup)
-		{
-			// FIXME: should this be done here??
-			if (xm == XamlLanguage.Initialization)
-				return target;
-			if (xm == XamlLanguage.PositionalParameters) {
-				var argdefs = xt.GetConstructorArguments ().ToArray ();
-				string [] args = new string [argdefs.Length];
-				for (int i = 0; i < args.Length; i++) {
-					var am = argdefs [i];
-					args [i] = GetStringValue (am.Type, GetMemberValueForObjectReader (am, xt, target, prefixLookup), prefixLookup);
-				}
-				return String.Join (", ", args);
+		// FIXME: I want this to cover all the existing types and make it valid in both NET_2_1 and !NET_2_1.
+		class ConvertibleTypeConverter<T> : TypeConverter
+		{
+			Type type;
+			public ConvertibleTypeConverter ()
+			{
+				this.type = typeof (T);
+			}
+			public override bool CanConvertFrom (ITypeDescriptorContext context, Type sourceType)
+			{
+				return sourceType == typeof (string);
+			}
+			public override bool CanConvertTo (ITypeDescriptorContext context, Type destinationType)
+			{
+				return destinationType == typeof (string);
+			}
+			public override object ConvertFrom (ITypeDescriptorContext context, CultureInfo culture, object value)
+			{
+				if (type == typeof (DateTime))
+					return System.Xml.XmlConvert.ToDateTime ((string) value, System.Xml.XmlDateTimeSerializationMode.Unspecified);
+				return ((IConvertible) value).ToType (type, CultureInfo.InvariantCulture);
+			}
+			public override object ConvertTo (ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
+			{
+				if (value is DateTime)
+					return System.Xml.XmlConvert.ToString ((DateTime) value);
+				return ((IConvertible) value).ToType (destinationType, CultureInfo.InvariantCulture);
 			}
-
-			var mi = xm.UnderlyingMember;
-			var fi = mi as FieldInfo;
-			if (fi != null)
-				return fi.GetValue (target);
-			var pi = mi as PropertyInfo;
-			if (pi != null)
-				return pi.GetValue (target, null);
-
-			throw new NotImplementedException (String.Format ("Cannot get value for {0}", xm));
 		}
-		
+
 		#endregion
 
-		public static bool IsContentValue (this XamlMember member)
+		public static bool IsContentValue (this XamlMember member, IValueSerializerContext vsctx)
 		{
 			if (member == XamlLanguage.Initialization)
 				return true;
-			if (member == XamlLanguage.PositionalParameters)
+			if (member == XamlLanguage.PositionalParameters || member == XamlLanguage.Arguments)
+				return false; // it's up to the argument (no need to check them though, as IList<object> is not of value)
+			if (member.TypeConverter != null && member.TypeConverter.ConverterInstance != null && member.TypeConverter.ConverterInstance.CanConvertTo (vsctx, typeof (string)))
 				return true;
-			return IsContentValue (member.Type);
+			return IsContentValue (member.Type,vsctx);
 		}
 
-		public static bool IsContentValue (this XamlType type)
+		public static bool IsContentValue (this XamlType type, IValueSerializerContext vsctx)
 		{
-			var t = type.UnderlyingType;
-			if (Type.GetTypeCode (t) != TypeCode.Object)
-				return true;
-			else if (t == typeof (Type) || t == typeof (TimeSpan) || t == typeof (Uri)) // special predefined types
+			if (type.TypeConverter != null && type.TypeConverter.ConverterInstance != null && type.TypeConverter.ConverterInstance.CanConvertTo (vsctx, typeof (string)))
 				return true;
 			return false;
 		}
 
-		public static IEnumerable<XamlMember> GetAllReadWriteMembers (this XamlType type)
-		{
-			// FIXME: find out why only TypeExtension yields this directive. Seealso XamlObjectReaderTest
-			if (type == XamlLanguage.Type) {
-				yield return XamlLanguage.PositionalParameters;
-				yield break;
-			}
-
-			if (type.IsContentValue ())
-				yield return XamlLanguage.Initialization;
-
-			foreach (var m in type.GetAllMembers ())
-				yield return m;
-		}
-
 		public static bool ListEquals (this IList<XamlType> a1, IList<XamlType> a2)
 		{
 			if (a1 == null || a1.Count == 0)
@@ -195,5 +191,116 @@ namespace System.Xaml
 					return false;
 			return true;
 		}
+
+		public static bool HasPositionalParameters (this XamlType type, IValueSerializerContext vsctx)
+		{
+			// FIXME: find out why only TypeExtension and StaticExtension yield this directive. Seealso XamlObjectReaderTest.Read_CustomMarkupExtension*()
+			return  type == XamlLanguage.Type ||
+				type == XamlLanguage.Static ||
+				ExaminePositionalParametersApplicable (type, vsctx) && type.ConstructionRequiresArguments;
+		}
+		
+		static bool ExaminePositionalParametersApplicable (this XamlType type, IValueSerializerContext vsctx)
+		{
+			if (!type.IsMarkupExtension || type.UnderlyingType == null)
+				return false;
+
+			var args = type.GetSortedConstructorArguments ();
+			if (args == null)
+				return false;
+
+			foreach (var arg in args)
+				if (arg.Type != null && !arg.Type.IsContentValue (vsctx))
+					return false;
+
+			Type [] argTypes = (from arg in args select arg.Type.UnderlyingType).ToArray ();
+			if (argTypes.Any (at => at == null))
+				return false;
+			var ci = type.UnderlyingType.GetConstructor (argTypes);
+			return ci != null;
+		}
+		
+		public static IEnumerable<XamlMember> GetConstructorArguments (this XamlType type)
+		{
+			return type.GetAllMembers ().Where (m => m.UnderlyingMember != null && m.GetCustomAttributeProvider ().GetCustomAttribute<ConstructorArgumentAttribute> (false) != null);
+		}
+
+		public static IEnumerable<XamlMember> GetSortedConstructorArguments (this XamlType type)
+		{
+			var args = type.GetConstructorArguments ().ToArray ();
+			foreach (var ci in type.UnderlyingType.GetConstructors ().Where (c => c.GetParameters ().Length == args.Length)) {
+				var pis = ci.GetParameters ();
+				if (args.Length != pis.Length)
+					continue;
+				bool mismatch = false;
+				foreach (var pi in pis)
+				for (int i = 0; i < args.Length; i++)
+					if (!args.Any (a => a.ConstructorArgumentName () == pi.Name))
+						mismatch = true;
+				if (mismatch)
+					continue;
+				return args.OrderBy (c => pis.FindParameterWithName (c.ConstructorArgumentName ()).Position);
+			}
+			return null;
+		}
+
+		static ParameterInfo FindParameterWithName (this IEnumerable<ParameterInfo> pis, string name)
+		{
+			return pis.FirstOrDefault (pi => pi.Name == name);
+		}
+
+		public static string ConstructorArgumentName (this XamlMember xm)
+		{
+			var caa = xm.GetCustomAttributeProvider ().GetCustomAttribute<ConstructorArgumentAttribute> (false);
+			return caa.ArgumentName;
+		}
+		
+
+		internal static int CompareMembers (XamlMember m1, XamlMember m2)
+		{
+			// ConstructorArguments and PositionalParameters go first.
+			if (m1 == XamlLanguage.PositionalParameters)
+				return -1;
+			if (m2 == XamlLanguage.PositionalParameters)
+				return 1;
+			if (m1.IsConstructorArgument ()) {
+				if (!m2.IsConstructorArgument ())
+					return -1;
+			}
+			else if (m2.IsConstructorArgument ())
+				return 1;
+
+			// ContentProperty is returned at last.
+			if (m1.DeclaringType != null && m1.DeclaringType.ContentProperty == m1)
+				return 1;
+			if (m2.DeclaringType != null && m2.DeclaringType.ContentProperty == m2)
+				return -1;
+
+			// then, compare names.
+			return String.CompareOrdinal (m1.Name, m2.Name);
+		}
+
+		internal static bool IsConstructorArgument (this XamlMember xm)
+		{
+			var ap = xm.GetCustomAttributeProvider ();
+			return ap != null && ap.GetCustomAttributes (typeof (ConstructorArgumentAttribute), false).Length > 0;
+		}
+
+		internal static string GetInternalXmlName (this XamlMember xm)
+		{
+			return xm.IsAttachable ? String.Concat (xm.DeclaringType.GetInternalXmlName (), ".", xm.Name) : xm.Name;
+		}
+
+#if DOTNET
+		internal static ICustomAttributeProvider GetCustomAttributeProvider (this XamlType type)
+		{
+			return type.UnderlyingType;
+		}
+		
+		internal static ICustomAttributeProvider GetCustomAttributeProvider (this XamlMember member)
+		{
+			return member.UnderlyingMember;
+		}
+#endif
 	}
 }
diff --git a/mcs/class/System.Xaml/System.Xaml/ValueSerializerContext.cs b/mcs/class/System.Xaml/System.Xaml/ValueSerializerContext.cs
new file mode 100644
index 0000000..edc3706
--- /dev/null
+++ b/mcs/class/System.Xaml/System.Xaml/ValueSerializerContext.cs
@@ -0,0 +1,147 @@
+//
+// Copyright (C) 2010 Novell Inc. http://novell.com
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Windows.Markup;
+using System.Xaml;
+using System.Xaml.Schema;
+using System.Xml;
+
+namespace System.Xaml
+{
+	internal class ValueSerializerContext : IValueSerializerContext, IXamlSchemaContextProvider
+	{
+		XamlNameResolver name_resolver = new XamlNameResolver ();
+		XamlTypeResolver type_resolver;
+		NamespaceResolver namespace_resolver;
+		PrefixLookup prefix_lookup;
+		XamlSchemaContext sctx;
+
+		public ValueSerializerContext (PrefixLookup prefixLookup, XamlSchemaContext schemaContext)
+		{
+			if (prefixLookup == null)
+				throw new ArgumentNullException ("prefixLookup");
+			if (schemaContext == null)
+				throw new ArgumentNullException ("schemaContext");
+			prefix_lookup = prefixLookup;
+			namespace_resolver = new NamespaceResolver (prefix_lookup.Namespaces);
+			type_resolver = new XamlTypeResolver (namespace_resolver, schemaContext);
+			sctx = schemaContext;
+		}
+
+		public object GetService (Type serviceType)
+		{
+			if (serviceType == typeof (INamespacePrefixLookup))
+				return prefix_lookup;
+			if (serviceType == typeof (IXamlNamespaceResolver))
+				return namespace_resolver;
+			if (serviceType == typeof (IXamlNameResolver))
+				return name_resolver;
+			if (serviceType == typeof (IXamlNameProvider))
+				return name_resolver;
+			if (serviceType == typeof (IXamlTypeResolver))
+				return type_resolver;
+			if (serviceType == typeof (IXamlSchemaContextProvider))
+				return this;
+			return null;
+		}
+		
+		XamlSchemaContext IXamlSchemaContextProvider.SchemaContext {
+			get { return sctx; }
+		}
+		
+		public IContainer Container {
+			get { throw new NotImplementedException (); }
+		}
+		public object Instance {
+			get { throw new NotImplementedException (); }
+		}
+		public PropertyDescriptor PropertyDescriptor {
+			get { throw new NotImplementedException (); }
+		}
+		public void OnComponentChanged ()
+		{
+			throw new NotImplementedException ();
+		}
+		public bool OnComponentChanging ()
+		{
+			throw new NotImplementedException ();
+		}
+		public ValueSerializer GetValueSerializerFor (PropertyDescriptor descriptor)
+		{
+			throw new NotImplementedException ();
+		}
+		public ValueSerializer GetValueSerializerFor (Type type)
+		{
+			throw new NotImplementedException ();
+		}
+	}
+
+	internal class XamlTypeResolver : IXamlTypeResolver
+	{
+		NamespaceResolver ns_resolver;
+		XamlSchemaContext schema_context;
+
+		public XamlTypeResolver (NamespaceResolver namespaceResolver, XamlSchemaContext schemaContext)
+		{
+			ns_resolver = namespaceResolver;
+			schema_context = schemaContext;
+		}
+
+		public Type Resolve (string typeName)
+		{
+			var tn = XamlTypeName.Parse (typeName, ns_resolver);
+			var xt = schema_context.GetXamlType (tn);
+			return xt != null ? xt.UnderlyingType : null;
+		}
+	}
+
+	internal class NamespaceResolver : IXamlNamespaceResolver
+	{
+		public NamespaceResolver (IList<NamespaceDeclaration> source)
+		{
+			this.source = source;
+		}
+	
+		IList<NamespaceDeclaration> source;
+	
+		public string GetNamespace (string prefix)
+		{
+			foreach (var nsd in source)
+				if (nsd.Prefix == prefix)
+					return nsd.Namespace;
+			return null;
+		}
+	
+		public IEnumerable<NamespaceDeclaration> GetNamespacePrefixes ()
+		{
+			return source;
+		}
+	}
+}
diff --git a/mcs/class/System.Xaml/System.Xaml/XamlDirective.cs b/mcs/class/System.Xaml/System.Xaml/XamlDirective.cs
index 65e4dcc..5d34d6a 100644
--- a/mcs/class/System.Xaml/System.Xaml/XamlDirective.cs
+++ b/mcs/class/System.Xaml/System.Xaml/XamlDirective.cs
@@ -36,6 +36,7 @@ namespace System.Xaml
 			XamlDirective directive;
 
 			public DirectiveMemberInvoker (XamlDirective directive)
+				: base (directive)
 			{
 			}
 		}
@@ -78,7 +79,7 @@ namespace System.Xaml
 
 		public override int GetHashCode ()
 		{
-			throw new NotImplementedException ();
+			return ToString ().GetHashCode ();
 		}
 
 		public override IList<string> GetXamlNamespaces ()
diff --git a/mcs/class/System.Xaml/System.Xaml/XamlDuplicateMemberException.cs b/mcs/class/System.Xaml/System.Xaml/XamlDuplicateMemberException.cs
index 10e1858..e65e23f 100644
--- a/mcs/class/System.Xaml/System.Xaml/XamlDuplicateMemberException.cs
+++ b/mcs/class/System.Xaml/System.Xaml/XamlDuplicateMemberException.cs
@@ -27,7 +27,9 @@ using System.Runtime.Serialization;
 
 namespace System.Xaml
 {
+#if !NET_2_1
 	[Serializable]
+#endif
 	public class XamlDuplicateMemberException : XamlException
 	{
 		public XamlDuplicateMemberException ()
@@ -52,21 +54,25 @@ namespace System.Xaml
 		{
 		}
 
+#if !NET_2_1
 		protected XamlDuplicateMemberException (SerializationInfo info, StreamingContext context)
 			: base (info, context)
 		{
 			DuplicateMember = (XamlMember) info.GetValue ("member", typeof (XamlMember));
 			ParentType = (XamlType) info.GetValue ("type", typeof (XamlType));
 		}
+#endif
 
 		public XamlMember DuplicateMember { get; set; }
 		public XamlType ParentType { get; set; }
 
+#if !NET_2_1
 		public override void GetObjectData (SerializationInfo info, StreamingContext context)
 		{
 			base.GetObjectData (info, context);
 			info.AddValue ("member", DuplicateMember);
 			info.AddValue ("type", ParentType);
 		}
+#endif
 	}
 }
diff --git a/mcs/class/System.Xaml/System.Xaml/XamlException.cs b/mcs/class/System.Xaml/System.Xaml/XamlException.cs
index 216a606..ecccbb4 100644
--- a/mcs/class/System.Xaml/System.Xaml/XamlException.cs
+++ b/mcs/class/System.Xaml/System.Xaml/XamlException.cs
@@ -27,7 +27,9 @@ using System.Runtime.Serialization;
 
 namespace System.Xaml
 {
+#if !NET_2_1
 	[Serializable]
+#endif
 	public class XamlException : Exception
 	{
 		public XamlException ()
@@ -61,23 +63,27 @@ namespace System.Xaml
 			LinePosition = linePosition;
 		}
 
+#if !NET_2_1
 		protected XamlException (SerializationInfo info, StreamingContext context)
 			: base (info, context)
 		{
 			LineNumber = info.GetInt32 ("lineNumber");
 			LinePosition = info.GetInt32 ("linePosition");
 		}
+#endif
 
-		public int LineNumber { get; protected set; }
-		public int LinePosition { get; protected set; }
+		public int LineNumber { get; protected internal set; }
+		public int LinePosition { get; protected internal set; }
 		public override string Message {
 			get { return FormatLine (base.Message, LineNumber, LinePosition); }
 		}
 
+#if !NET_2_1
 		public override void GetObjectData (SerializationInfo info, StreamingContext context)
 		{
 			info.AddValue ("lineNumber", LineNumber);
 			info.AddValue ("linePosition", LinePosition);
 		}
+#endif
 	}
 }
diff --git a/mcs/class/System.Xaml/System.Xaml/XamlInternalException.cs b/mcs/class/System.Xaml/System.Xaml/XamlInternalException.cs
index d98aa4c..a24cffe 100644
--- a/mcs/class/System.Xaml/System.Xaml/XamlInternalException.cs
+++ b/mcs/class/System.Xaml/System.Xaml/XamlInternalException.cs
@@ -27,7 +27,9 @@ using System.Runtime.Serialization;
 
 namespace System.Xaml
 {
+#if !NET_2_1
 	[Serializable]
+#endif
 	public class XamlInternalException : XamlException
 	{
 		public XamlInternalException ()
@@ -45,9 +47,11 @@ namespace System.Xaml
 		{
 		}
 
+#if !NET_2_1
 		protected XamlInternalException (SerializationInfo info, StreamingContext context)
 			: base (info, context)
 		{
 		}
+#endif
 	}
 }
diff --git a/mcs/class/System.Xaml/System.Xaml/XamlLanguage.cs b/mcs/class/System.Xaml/System.Xaml/XamlLanguage.cs
old mode 100644
new mode 100755
index 7113059..01ed9a8
--- a/mcs/class/System.Xaml/System.Xaml/XamlLanguage.cs
+++ b/mcs/class/System.Xaml/System.Xaml/XamlLanguage.cs
@@ -39,6 +39,38 @@ namespace System.Xaml
 		public const string Xml1998Namespace = "http://www.w3.org/XML/1998/namespace";
 		internal const string Xmlns2000Namespace = "http://www.w3.org/2000/xmlns/";
 
+		// FIXME: I'm not sure if these "special names" should be resolved like this. I couldn't find any rule so far.
+		internal static readonly SpecialTypeNameList SpecialNames;
+
+		internal class SpecialTypeNameList : List<SpecialTypeName>
+		{
+			internal SpecialTypeNameList ()
+			{
+				Add (new SpecialTypeName ("Member", XamlLanguage.Member));
+				Add (new SpecialTypeName ("Property", XamlLanguage.Property));
+			}
+
+			public XamlType Find (string name, string ns)
+			{
+				if (ns != XamlLanguage.Xaml2006Namespace)
+					return null;
+				var stn = this.FirstOrDefault (s => s.Name == name);
+				return stn != null ? stn.Type : null;
+			}
+		}
+
+		internal class SpecialTypeName
+		{
+			public SpecialTypeName (string name, XamlType type)
+			{
+				Name = name;
+				Type = type;
+			}
+			
+			public string Name { get; private set; }
+			public XamlType Type { get; private set; }
+		}
+
 		static readonly XamlSchemaContext sctx = new XamlSchemaContext (new Assembly [] {typeof (XamlType).Assembly});
 
 		static XamlType XT<T> ()
@@ -52,6 +84,7 @@ namespace System.Xaml
 		static XamlLanguage ()
 		{
 			InitializingTypes = true;
+
 			// types
 
 			Array = XT<ArrayExtension> ();
@@ -117,6 +150,8 @@ namespace System.Xaml
 			AllDirectives = new ReadOnlyCollection<XamlDirective> (new XamlDirective [] {Arguments, AsyncRecords, Base, Class, ClassAttributes, ClassModifier, Code, ConnectionId, FactoryMethod, FieldModifier, Initialization, Items, Key, Lang, Members, Name, PositionalParameters, Space, Subclass, SynchronousMode, Shared, TypeArguments, Uid, UnknownContent});
 
 			InitializingDirectives = false;
+
+			SpecialNames = new SpecialTypeNameList ();
 		}
 
 		static readonly string [] xaml_nss = new string [] {Xaml2006Namespace};
@@ -214,73 +249,5 @@ namespace System.Xaml
 				return false;
 			}
 		}
-
-		internal static XamlType GetSpecialXaml2006Type (string name)
-		{
-			// FIXME: I'm not really sure if these *special* names 
-			// should be resolved here and there. There just does
-			// not seem to be any other appropriate places.
-			switch (name) {
-			case "Array":
-				return XamlLanguage.Array;
-			case "Member":
-				return XamlLanguage.Member;
-			case "Null":
-				return XamlLanguage.Null;
-			case "Property":
-				return XamlLanguage.Property;
-			case "Static":
-				return XamlLanguage.Static;
-			case "Type":
-				return XamlLanguage.Type;
-			}
-			return null;
-		}
-
-		static readonly int clr_ns_len = "clr-namespace:".Length;
-		static readonly int clr_ass_len = "assembly=".Length;
-
-		internal static Type ResolveXamlTypeName (string xmlNamespace, string xmlLocalName, IList<XamlTypeName> typeArguments, IXamlNamespaceResolver nsResolver)
-		{
-			string ns = xmlNamespace;
-			string name = xmlLocalName;
-
-			if (ns == XamlLanguage.Xaml2006Namespace) {
-				var xt = GetSpecialXaml2006Type (name);
-				if (xt == null)
-					xt = AllTypes.FirstOrDefault (t => t.Name == xmlLocalName);
-				if (xt == null)
-					throw new FormatException (string.Format ("There is no type '{0}' in XAML namespace", name));
-				return xt.UnderlyingType;
-			}
-			else if (!ns.StartsWith ("clr-namespace:", StringComparison.Ordinal))
-				throw new FormatException (string.Format ("Unexpected XAML namespace '{0}'", ns));
-
-			Type [] genArgs = null;
-			if (typeArguments != null) {
-				var xtns = typeArguments;
-				genArgs = new Type [xtns.Count];
-				for (int i = 0; i < genArgs.Length; i++) {
-					var xtn = xtns [i];
-					genArgs [i] = ResolveXamlTypeName (xtn.Namespace, xtn.Name, xtn.TypeArguments, nsResolver);
-				}
-			}
-
-			// convert xml namespace to clr namespace and assembly
-			string [] split = ns.Split (';');
-			if (split.Length != 2 || split [0].Length <= clr_ns_len || split [1].Length <= clr_ass_len)
-				throw new XamlParseException (string.Format ("Cannot resolve runtime namespace from XML namespace '{0}'", ns));
-			string tns = split [0].Substring (clr_ns_len);
-			string aname = split [1].Substring (clr_ass_len);
-
-			string tfn = tns.Length > 0 ? tns + '.' + name : name;
-			if (genArgs != null)
-				tfn += "`" + genArgs.Length;
-			string taqn = tfn + (aname.Length > 0 ? ", " + aname : string.Empty);
-			var ret = System.Type.GetType (taqn);
-			if (ret == null)
-				throw new XamlParseException (string.Format ("Cannot resolve runtime type from XML namespace '{0}', local name '{1}' with {2} type arguments ({3})", ns, name, typeArguments.Count, taqn));
-			return genArgs == null ? ret : ret.MakeGenericType (genArgs);
-		}
 	}
 }
diff --git a/mcs/class/System.Xaml/System.Xaml/XamlMember.cs b/mcs/class/System.Xaml/System.Xaml/XamlMember.cs
index 6700d16..7b85eb3 100644
--- a/mcs/class/System.Xaml/System.Xaml/XamlMember.cs
+++ b/mcs/class/System.Xaml/System.Xaml/XamlMember.cs
@@ -63,8 +63,8 @@ namespace System.Xaml
 			underlying_member = propertyInfo;
 			DeclaringType = schemaContext.GetXamlType (propertyInfo.DeclaringType);
 			target_type = DeclaringType;
-			UnderlyingGetter = propertyInfo.GetGetMethod ();
-			UnderlyingSetter = propertyInfo.GetSetMethod ();
+			UnderlyingGetter = propertyInfo.GetGetMethod (true);
+			UnderlyingSetter = propertyInfo.GetSetMethod (true);
 		}
 
 		public XamlMember (string attachableEventName, MethodInfo adder, XamlSchemaContext schemaContext)
@@ -150,10 +150,6 @@ namespace System.Xaml
 		bool is_predefined_directive = XamlLanguage.InitializingDirectives;
 		string directive_ns;
 
-		internal ICustomAttributeProvider CustomAttributeProvider {
-			get { return LookupCustomAttributeProvider (); }
-		}
-
 		internal MethodInfo UnderlyingGetter {
 			get { return LookupUnderlyingGetter (); }
 			private set { underlying_getter = value; }
@@ -170,13 +166,15 @@ namespace System.Xaml
 			get { return directive_ns ?? (DeclaringType == null ? null : DeclaringType.PreferredXamlNamespace); }
 		}
 		
-		[MonoTODO]
+#if !NET_2_1
 		public DesignerSerializationVisibility SerializationVisibility {
 			get {
-				// FIXME: probably use attribute.
-				return DesignerSerializationVisibility.Visible;
+				var c= GetCustomAttributeProvider ();
+				var a = c == null ? null : c.GetCustomAttribute<DesignerSerializationVisibilityAttribute> (false);
+				return a != null ? a.Visibility : DesignerSerializationVisibility.Visible;
 			}
 		}
+#endif
 
 		public bool IsAttachable {
 			get { return is_attachable; }
@@ -266,8 +264,8 @@ namespace System.Xaml
 			// this should be in general correct; XamlMembers are almost not comparable.
 			if (Object.ReferenceEquals (this, other))
 				return true;
+			// It does not compare XamlSchemaContext.
 			return !IsNull (other) &&
-				context == other.context &&
 				underlying_member == other.underlying_member &&
 				underlying_getter == other.underlying_getter &&
 				underlying_setter == other.underlying_setter &&
@@ -282,6 +280,7 @@ namespace System.Xaml
 			return ToString ().GetHashCode (); // should in general work.
 		}
 
+		[MonoTODO ("there are some patterns that return different kind of value: e.g. List<int>.Capacity")]
 		public override string ToString ()
 		{
 			if (is_attachable || String.IsNullOrEmpty (PreferredXamlNamespace)) {
@@ -301,6 +300,11 @@ namespace System.Xaml
 
 		// lookups
 
+		internal ICustomAttributeProvider GetCustomAttributeProvider ()
+		{
+			return LookupCustomAttributeProvider ();
+		}
+
 		protected virtual ICustomAttributeProvider LookupCustomAttributeProvider ()
 		{
 			return UnderlyingMember;
@@ -308,7 +312,7 @@ namespace System.Xaml
 
 		protected virtual XamlValueConverter<XamlDeferringLoader> LookupDeferringLoader ()
 		{
-			// FIXME: probably fill from attribute.
+			// FIXME: use XamlDeferLoadAttribute.
 			return null;
 		}
 
@@ -404,6 +408,12 @@ namespace System.Xaml
 				return null;
 			if (t == typeof (object)) // it is different from XamlType.LookupTypeConverter().
 				return null;
+
+			var a = GetCustomAttributeProvider ();
+			var ca = a != null ? a.GetCustomAttribute<TypeConverterAttribute> (false) : null;
+			if (ca != null)
+				return context.GetValueConverter<TypeConverter> (System.Type.GetType (ca.ConverterTypeName), Type);
+
 			return Type.TypeConverter;
 		}
 
diff --git a/mcs/class/System.Xaml/System.Xaml/XamlNameResolver.cs b/mcs/class/System.Xaml/System.Xaml/XamlNameResolver.cs
new file mode 100644
index 0000000..a24e482
--- /dev/null
+++ b/mcs/class/System.Xaml/System.Xaml/XamlNameResolver.cs
@@ -0,0 +1,170 @@
+//
+// Copyright (C) 2010 Novell Inc. http://novell.com
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Windows.Markup;
+
+namespace System.Xaml
+{
+	internal class XamlNameResolver : IXamlNameResolver, IXamlNameProvider
+	{
+		public XamlNameResolver ()
+		{
+		}
+		
+		public bool IsCollectingReferences { get; set; }
+
+		internal class NamedObject
+		{
+			public NamedObject (string name, object value, bool fullyInitialized)
+			{
+				Name = name;
+				Value = value;
+				FullyInitialized = fullyInitialized;
+			}
+			public string Name { get; set; }
+			public object Value { get; set; }
+			public bool FullyInitialized { get; set; }
+		}
+
+		Dictionary<string,NamedObject> objects = new Dictionary<string,NamedObject> ();
+		List<object> referenced = new List<object> ();
+
+		[MonoTODO]
+		public bool IsFixupTokenAvailable {
+			get { throw new NotImplementedException (); }
+		}
+
+		public event EventHandler OnNameScopeInitializationComplete;
+
+		internal void NameScopeInitializationCompleted (object sender)
+		{
+			if (OnNameScopeInitializationComplete != null)
+				OnNameScopeInitializationComplete (sender, EventArgs.Empty);
+			objects.Clear ();
+		}
+		
+		int saved_count, saved_referenced_count;
+		public void Save ()
+		{
+			if (saved_count != 0)
+				throw new Exception ();
+			saved_count = objects.Count;
+			saved_referenced_count = referenced.Count;
+		}
+		public void Restore ()
+		{
+			while (saved_count < objects.Count)
+				objects.Remove (objects.Last ().Key);
+				referenced.Remove (objects.Last ().Key);
+			saved_count = 0;
+			referenced.RemoveRange (saved_referenced_count, referenced.Count - saved_referenced_count);
+			saved_referenced_count = 0;
+		}
+
+		internal void SetNamedObject (string name, object value, bool fullyInitialized)
+		{
+			if (value == null)
+				throw new ArgumentNullException ("value");
+			objects [name] = new NamedObject (name, value, fullyInitialized);
+		}
+		
+		internal bool Contains (string name)
+		{
+			return objects.ContainsKey (name);
+		}
+		
+		public string GetName (object value)
+		{
+			foreach (var no in objects.Values)
+				if (object.ReferenceEquals (no.Value, value))
+					return no.Name;
+			return null;
+		}
+
+		internal void SaveAsReferenced (object val)
+		{
+			referenced.Add (val);
+		}
+		
+		internal string GetReferencedName (object val)
+		{
+			if (!referenced.Contains (val))
+				return null;
+			return GetName (val);
+		}
+		
+		public object GetFixupToken (IEnumerable<string> names)
+		{
+			return new NameFixupRequired (names, false);
+		}
+
+		public object GetFixupToken (IEnumerable<string> names, bool canAssignDirectly)
+		{
+			return new NameFixupRequired (names, canAssignDirectly);
+		}
+
+		public IEnumerable<KeyValuePair<string, object>> GetAllNamesAndValuesInScope ()
+		{
+			foreach (var pair in objects)
+				yield return new KeyValuePair<string,object> (pair.Key, pair.Value.Value);
+		}
+
+		public object Resolve (string name)
+		{
+			NamedObject ret;
+			return objects.TryGetValue (name, out ret) ? ret.Value : null;
+		}
+
+		public object Resolve (string name, out bool isFullyInitialized)
+		{
+			NamedObject ret;
+			if (objects.TryGetValue (name, out ret)) {
+				isFullyInitialized = ret.FullyInitialized;
+				return ret.Value;
+			} else {
+				isFullyInitialized = false;
+				return null;
+			}
+		}
+	}
+	
+	internal class NameFixupRequired
+	{
+		public NameFixupRequired (IEnumerable<string> names, bool canAssignDirectly)
+		{
+			CanAssignDirectly = canAssignDirectly;
+			Names = names.ToArray ();
+		}
+		
+		public XamlType ParentType { get; set; }
+		public XamlMember ParentMember { get; set; }
+		public object ParentValue { get; set; }
+
+		public bool CanAssignDirectly { get; set; }
+		public IList<string> Names { get; set; }
+	}
+}
+
diff --git a/mcs/class/System.Xaml/System.Xaml/XamlNode.cs b/mcs/class/System.Xaml/System.Xaml/XamlNode.cs
new file mode 100644
index 0000000..9525de7
--- /dev/null
+++ b/mcs/class/System.Xaml/System.Xaml/XamlNode.cs
@@ -0,0 +1,221 @@
+//
+// Copyright (C) 2010 Novell Inc. http://novell.com
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Linq;
+using System.Reflection;
+using System.Windows.Markup;
+using System.Xaml.Schema;
+using System.Xml;
+
+namespace System.Xaml
+{
+	internal struct XamlNodeInfo
+	{
+		public XamlNodeInfo (XamlNodeType nodeType, XamlObject value)
+		{
+			node_type = nodeType;
+			this.value = value;
+			member = default (XamlNodeMember);
+		}
+		
+		public XamlNodeInfo (XamlNodeType nodeType, XamlNodeMember member)
+		{
+			node_type = nodeType;
+			this.value = default (XamlObject);
+			this.member = member;
+		}
+		
+		public XamlNodeInfo (string value)
+		{
+			node_type = XamlNodeType.Value;
+			this.value = value;
+			member = default (XamlNodeMember);
+		}
+		
+		XamlNodeType node_type;
+		object value;
+		XamlNodeMember member;
+		
+		public XamlNodeType NodeType {
+			get { return node_type; }
+		}
+		public XamlObject Object {
+			get { return (XamlObject) value; }
+		}
+		public XamlNodeMember Member {
+			get { return member; }
+		}
+		public object Value {
+			get { return value; }
+		}
+	}
+	
+	internal struct XamlObject
+	{
+		public XamlObject (XamlType type, object instance)
+			: this (type, new InstanceContext (instance))
+		{
+		}
+
+		public XamlObject (XamlType type, InstanceContext context)
+		{
+			this.type = type;
+			this.context = context;
+		}
+		
+		readonly XamlType type;
+		readonly InstanceContext context;
+		
+		public XamlType Type {
+			get { return type; }
+		}
+		
+		public InstanceContext Context {
+			get { return context; }
+		}
+		
+		XamlType GetType (object obj)
+		{
+			return type.SchemaContext.GetXamlType (obj.GetType ());
+		}
+		
+		public object GetRawValue ()
+		{
+			return context.GetRawValue ();
+		}
+	}
+	
+	internal struct XamlNodeMember
+	{
+		public XamlNodeMember (XamlObject owner, XamlMember member)
+		{
+			this.owner = owner;
+			this.member = member;
+		}
+		
+		readonly XamlObject owner;
+		readonly XamlMember member;
+		
+		public XamlObject Owner {
+			get { return owner; }
+		}
+		public XamlMember Member {
+			get { return member; }
+		}
+		public XamlObject Value {
+			get {
+				var mv = Owner.GetMemberValue (Member);
+				return new XamlObject (GetType (mv), mv);
+			}
+		}
+
+		XamlType GetType (object obj)
+		{
+			return obj == null ? XamlLanguage.Null : owner.Type.SchemaContext.GetXamlType (new InstanceContext (obj).GetRawValue ().GetType ());
+		}
+	}
+	
+	// Its original purpose was to enable delayed reflection, but it's not supported yet.
+	internal struct InstanceContext
+	{
+		public InstanceContext (object value)
+		{
+			this.value = value;
+		}
+		
+		object value;
+		
+		public object GetRawValue ()
+		{
+			return value; // so far.
+		}
+	}
+
+	internal static class TypeExtensionMethods2
+	{
+		// Note that this returns XamlMember which might not actually appear in XamlObjectReader. For example, XamlLanguage.Items won't be returned when there is no item in the collection.
+		public static IEnumerable<XamlMember> GetAllObjectReaderMembersByType (this XamlType type, IValueSerializerContext vsctx)
+		{
+			if (type.HasPositionalParameters (vsctx)) {
+				yield return XamlLanguage.PositionalParameters;
+				yield break;
+			}
+
+			// Note that if the XamlType has the default constructor, we don't need "Arguments".
+			IEnumerable<XamlMember> args = type.ConstructionRequiresArguments ? type.GetSortedConstructorArguments () : null;
+			if (args != null && args.Any ())
+				yield return XamlLanguage.Arguments;
+
+			if (type.IsContentValue (vsctx)) {
+				yield return XamlLanguage.Initialization;
+				yield break;
+			}
+
+			if (type.IsDictionary) {
+				yield return XamlLanguage.Items;
+				yield break;
+			}
+
+			foreach (var m in type.GetAllMembers ()) {
+				// do not read constructor arguments twice (they are written inside Arguments).
+				if (args != null && args.Contains (m))
+					continue;
+				// do not return non-public members. Not sure why .NET filters out them though.
+				if (!m.IsReadPublic)
+					continue;
+
+				yield return m;
+			}
+			
+			if (type.IsCollection)
+				yield return XamlLanguage.Items;
+		}
+	}
+	
+	internal static class XamlNodeExtensions
+	{
+		internal static object GetMemberValue (this XamlObject xobj, XamlMember xm)
+		{
+			if (xm.IsUnknown)
+				return null;
+
+			if (xm.IsAttachable)
+				return xobj.GetRawValue (); // attachable property value
+
+			// FIXME: this looks like an ugly hack. Is this really true? What if there's MarkupExtension that uses another MarkupExtension type as a member type.
+			var obj = xobj.Context.GetRawValue ();
+			if (xm == XamlLanguage.Initialization)
+				return obj;
+			if (xm == XamlLanguage.Items) // collection itself.
+				return obj;
+			if (xm == XamlLanguage.Arguments) // object itself
+				return obj;
+			if (xm == XamlLanguage.PositionalParameters)
+				return xobj.GetRawValue (); // dummy value
+			return xm.Invoker.GetValue (xobj.GetRawValue ());
+		}
+	}
+}
diff --git a/mcs/class/System.Xaml/System.Xaml/XamlObjectNodeIterator.cs b/mcs/class/System.Xaml/System.Xaml/XamlObjectNodeIterator.cs
new file mode 100644
index 0000000..5d5840c
--- /dev/null
+++ b/mcs/class/System.Xaml/System.Xaml/XamlObjectNodeIterator.cs
@@ -0,0 +1,398 @@
+//
+// Copyright (C) 2010 Novell Inc. http://novell.com
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.IO;
+using System.Linq;
+using System.Windows.Markup;
+using System.Xaml;
+using System.Xaml.Schema;
+using System.Xml;
+using System.Xml.Serialization;
+
+namespace System.Xaml
+{
+	internal class XamlObjectNodeIterator
+	{
+		static readonly XamlObject null_object = new XamlObject (XamlLanguage.Null, null);
+
+		public XamlObjectNodeIterator (object root, XamlSchemaContext schemaContext, IValueSerializerContext vctx)
+		{
+			ctx = schemaContext;
+			this.root = root;
+			value_serializer_ctx = vctx;
+		}
+		
+		XamlSchemaContext ctx;
+		object root;
+		IValueSerializerContext value_serializer_ctx;
+		
+		PrefixLookup PrefixLookup {
+			get { return (PrefixLookup) value_serializer_ctx.GetService (typeof (INamespacePrefixLookup)); }
+		}
+		XamlNameResolver NameResolver {
+			get { return (XamlNameResolver) value_serializer_ctx.GetService (typeof (IXamlNameResolver)); }
+		}
+
+		public XamlSchemaContext SchemaContext {
+			get { return ctx; }
+		}
+		
+		XamlType GetType (object obj)
+		{
+			return obj == null ? XamlLanguage.Null : ctx.GetXamlType (obj.GetType ());
+		}
+		
+		// returns StartObject, StartMember, Value, EndMember and EndObject. (NamespaceDeclaration is not included)
+		public IEnumerable<XamlNodeInfo> GetNodes ()
+		{
+			var xobj = new XamlObject (GetType (root), root);
+			foreach (var node in GetNodes (null, xobj))
+				yield return node;
+		}
+		
+		IEnumerable<XamlNodeInfo> GetNodes (XamlMember xm, XamlObject xobj)
+		{
+			return GetNodes (xm, xobj, null, false);
+		}
+
+		IEnumerable<XamlNodeInfo> GetNodes (XamlMember xm, XamlObject xobj, XamlType overrideMemberType, bool partOfPositionalParameters)
+		{
+			// collection items: each item is exposed as a standalone object that has StartObject, EndObject and contents.
+			if (xm == XamlLanguage.Items) {
+				foreach (var xn in GetItemsNodes (xm, xobj))
+					yield return xn;
+				yield break;
+			}
+			
+			// Arguments: each argument is written as a standalone object
+			if (xm == XamlLanguage.Arguments) {
+				foreach (var argm in xobj.Type.GetSortedConstructorArguments ()) {
+					var argv = argm.Invoker.GetValue (xobj.GetRawValue ());
+					var xarg = new XamlObject (argm.Type, argv);
+					foreach (var cn in GetNodes (null, xarg))
+						yield return cn;
+				}
+				yield break;
+			}
+
+			// PositionalParameters: items are from constructor arguments, written as Value node sequentially. Note that not all of them are in simple string value. Also, null values are not written as NullExtension
+			if (xm == XamlLanguage.PositionalParameters) {
+				foreach (var argm in xobj.Type.GetSortedConstructorArguments ()) {
+					foreach (var cn in GetNodes (argm, new XamlObject (argm.Type, xobj.GetMemberValue (argm)), null, true))
+						yield return cn;
+				}
+				yield break;
+			}
+
+			if (xm == XamlLanguage.Initialization) {
+				yield return new XamlNodeInfo (TypeExtensionMethods.GetStringValue (xobj.Type, xm, xobj.GetRawValue (), value_serializer_ctx));
+				yield break;
+			}
+
+			// Value - only for non-top-level node (thus xm != null)
+			if (xm != null) {
+				// overrideMemberType is (so far) used for XamlLanguage.Key.
+				var xtt = overrideMemberType ?? xm.Type;
+				if (!xtt.IsMarkupExtension && // this condition is to not serialize MarkupExtension whose type has TypeConverterAttribute (e.g. StaticExtension) as a string.
+				    (xtt.IsContentValue (value_serializer_ctx) || xm.IsContentValue (value_serializer_ctx))) {
+					// though null value is special: it is written as a standalone object.
+					var val = xobj.GetRawValue ();
+					if (val == null) {
+						if (!partOfPositionalParameters)
+							foreach (var xn in GetNodes (null, null_object))
+								yield return xn;
+						else
+							yield return new XamlNodeInfo (String.Empty);
+					}
+					else
+						yield return new XamlNodeInfo (TypeExtensionMethods.GetStringValue (xtt, xm, val, value_serializer_ctx));
+					yield break;
+				}
+			}
+
+			// collection items: return GetObject and Items.
+			if (xm != null && xm.Type.IsCollection && !xm.IsWritePublic) {
+				yield return new XamlNodeInfo (XamlNodeType.GetObject, xobj);
+				// Write Items member only when there are items (i.e. do not write it if it is empty).
+				var xnm = new XamlNodeMember (xobj, XamlLanguage.Items);
+				var en = GetNodes (XamlLanguage.Items, xnm.Value).GetEnumerator ();
+				if (en.MoveNext ()) {
+					yield return new XamlNodeInfo (XamlNodeType.StartMember, xnm);
+					do {
+						yield return en.Current;
+					} while (en.MoveNext ());
+					yield return new XamlNodeInfo (XamlNodeType.EndMember, xnm);
+				}
+				yield return new XamlNodeInfo (XamlNodeType.EndObject, xobj);
+			} else if (xm != null && xm.Type.IsXData) {
+				var sw = new StringWriter ();
+				var xw = XmlWriter.Create (sw, new XmlWriterSettings () { OmitXmlDeclaration = true, ConformanceLevel = ConformanceLevel.Auto });
+				var val = xobj.GetRawValue () as IXmlSerializable;
+				if (val == null)
+					yield break; // do not output anything
+				val.WriteXml (xw);
+				xw.Close ();
+				var obj = new XData () { Text = sw.ToString () };
+				foreach (var xn in GetNodes (null, new XamlObject (XamlLanguage.XData, obj)))
+					yield return xn;
+			} else {
+				// Object - could become Reference
+				var val = xobj.GetRawValue ();
+				if (!xobj.Type.IsContentValue (value_serializer_ctx) && val != null) {
+					string refName = NameResolver.GetName (val);
+					if (refName != null) {
+						// The target object is already retrieved, so we don't return the same object again.
+						NameResolver.SaveAsReferenced (val); // Record it as named object.
+						// Then return Reference object instead.
+						foreach (var xn in GetNodes (null, new XamlObject (XamlLanguage.Reference, new Reference (refName))))
+							yield return xn;
+						yield break;
+					} else {
+						// The object appeared in the xaml tree for the first time. So we store the reference with a unique name so that it could be referenced later.
+						refName = GetReferenceName (xobj);
+						if (NameResolver.IsCollectingReferences && NameResolver.Contains (refName))
+							throw new InvalidOperationException (String.Format ("There is already an object of type {0} named as '{1}'. Object names must be unique.", val.GetType (), refName));
+						NameResolver.SetNamedObject (refName, val, true); // probably fullyInitialized is always true here.
+					}
+				}
+				yield return new XamlNodeInfo (XamlNodeType.StartObject, xobj);
+				// If this object is referenced and there is no [RuntimeNameProperty] member, then return Name property in addition.
+				if (val != null && xobj.Type.GetAliasedProperty (XamlLanguage.Name) == null) {
+					string name = NameResolver.GetReferencedName (val);
+					if (name != null) {
+						var sobj = new XamlObject (XamlLanguage.String, name);
+						foreach (var cn in GetMemberNodes (new XamlNodeMember (sobj, XamlLanguage.Name), new XamlNodeInfo [] { new XamlNodeInfo (name)}))
+							yield return cn;
+					}
+				}
+				foreach (var xn in GetObjectMemberNodes (xobj))
+					yield return xn;
+				yield return new XamlNodeInfo (XamlNodeType.EndObject, xobj);
+			}
+		}
+		
+		int used_reference_ids;
+		
+		string GetReferenceName (XamlObject xobj)
+		{
+			var xm = xobj.Type.GetAliasedProperty (XamlLanguage.Name);
+			if (xm != null)
+				return (string) xm.Invoker.GetValue (xobj.GetRawValue ());
+			return "__ReferenceID" + used_reference_ids++;
+		}
+
+		IEnumerable<XamlNodeInfo> GetMemberNodes (XamlNodeMember member, IEnumerable<XamlNodeInfo> contents)
+		{
+				yield return new XamlNodeInfo (XamlNodeType.StartMember, member);
+				foreach (var cn in contents)
+					yield return cn;
+				yield return new XamlNodeInfo (XamlNodeType.EndMember, member);
+		}
+
+		IEnumerable<XamlNodeMember> GetNodeMembers (XamlObject xobj, IValueSerializerContext vsctx)
+		{
+			// XData.XmlReader is not returned.
+			if (xobj.Type == XamlLanguage.XData) {
+				yield return new XamlNodeMember (xobj, XamlLanguage.XData.GetMember ("Text"));
+				yield break;
+			}
+
+			// FIXME: find out why root Reference has PositionalParameters.
+			if (xobj.GetRawValue() != root && xobj.Type == XamlLanguage.Reference)
+				yield return new XamlNodeMember (xobj, XamlLanguage.PositionalParameters);
+			else {
+				var inst = xobj.GetRawValue ();
+				var atts = new KeyValuePair<AttachableMemberIdentifier,object> [AttachablePropertyServices.GetAttachedPropertyCount (inst)];
+				AttachablePropertyServices.CopyPropertiesTo (inst, atts, 0);
+				foreach (var p in atts) {
+					var axt = ctx.GetXamlType (p.Key.DeclaringType);
+					yield return new XamlNodeMember (new XamlObject (axt, p.Value), axt.GetAttachableMember (p.Key.MemberName));
+				}
+				foreach (var xm in xobj.Type.GetAllObjectReaderMembersByType (vsctx))
+					yield return new XamlNodeMember (xobj, xm);
+			}
+		}
+
+		IEnumerable<XamlNodeInfo> GetObjectMemberNodes (XamlObject xobj)
+		{
+			var xce = GetNodeMembers (xobj, value_serializer_ctx).GetEnumerator ();
+			while (xce.MoveNext ()) {
+				// XamlLanguage.Items does not show up if the content is empty.
+				if (xce.Current.Member == XamlLanguage.Items) {
+					// FIXME: this is nasty, but this name resolution is the only side effect of this iteration model. Save-Restore procedure is required.
+					NameResolver.Save ();
+					try {
+						if (!GetNodes (xce.Current.Member, xce.Current.Value).GetEnumerator ().MoveNext ())
+							continue;
+					} finally {
+						NameResolver.Restore ();
+					}
+				}
+
+				// Other collections as well, but needs different iteration (as nodes contain GetObject and EndObject).
+				if (!xce.Current.Member.IsWritePublic && xce.Current.Member.Type != null && xce.Current.Member.Type.IsCollection) {
+					var e = GetNodes (xce.Current.Member, xce.Current.Value).GetEnumerator ();
+					// FIXME: this is nasty, but this name resolution is the only side effect of this iteration model. Save-Restore procedure is required.
+					NameResolver.Save ();
+					try {
+						if (!(e.MoveNext () && e.MoveNext () && e.MoveNext ())) // GetObject, EndObject and more
+							continue;
+					} finally {
+						NameResolver.Restore ();
+					}
+				}
+
+				foreach (var cn in GetMemberNodes (xce.Current, GetNodes (xce.Current.Member, xce.Current.Value)))
+					yield return cn;
+			}
+		}
+
+		IEnumerable<XamlNodeInfo> GetItemsNodes (XamlMember xm, XamlObject xobj)
+		{
+			var obj = xobj.GetRawValue ();
+			if (obj == null)
+				yield break;
+			var ie = xobj.Type.Invoker.GetItems (obj);
+			while (ie.MoveNext ()) {
+				var iobj = ie.Current;
+				// If it is dictionary, then retrieve the key, and rewrite the item as the Value part.
+				object ikey = null;
+				if (xobj.Type.IsDictionary) {
+					Type kvpType = iobj.GetType ();
+					bool isNonGeneric = kvpType == typeof (DictionaryEntry);
+					var kp = isNonGeneric ? null : kvpType.GetProperty ("Key");
+					var vp = isNonGeneric ? null : kvpType.GetProperty ("Value");
+					ikey = isNonGeneric ? ((DictionaryEntry) iobj).Key : kp.GetValue (iobj, null);
+					iobj = isNonGeneric ? ((DictionaryEntry) iobj).Value : vp.GetValue (iobj, null);
+				}
+
+				var wobj = TypeExtensionMethods.GetExtensionWrapped (iobj);
+				var xiobj = new XamlObject (GetType (wobj), wobj);
+				if (ikey != null) {
+					// Key member is written *inside* the item object.
+					//
+					// It is messy, but Key and Value are *sorted*. In most cases Key goes first, but for example PositionalParameters comes first.
+					// To achieve this behavior, we compare XamlLanguage.Key and value's Member and returns in order. It's all nasty hack, but at least it could be achieved like this!
+
+					var en = GetNodes (null, xiobj).ToArray ();
+					yield return en [0]; // StartObject
+
+					var xknm = new XamlNodeMember (xobj, XamlLanguage.Key);
+					var nodes1 = en.Skip (1).Take (en.Length - 2);
+					var nodes2 = GetKeyNodes (ikey, xobj.Type.KeyType, xknm);
+					foreach (var xn in EnumerateMixingMember (nodes1, XamlLanguage.Key, nodes2))
+						yield return xn;
+					yield return en [en.Length - 1];
+				}
+				else
+					foreach (var xn in GetNodes (null, xiobj))
+						yield return xn;
+			}
+		}
+		
+		IEnumerable<XamlNodeInfo> EnumerateMixingMember (IEnumerable<XamlNodeInfo> nodes1, XamlMember m2, IEnumerable<XamlNodeInfo> nodes2)
+		{
+			if (nodes2 == null) {
+				foreach (var cn in nodes1)
+					yield return cn;
+				yield break;
+			}
+
+			var e1 = nodes1.GetEnumerator ();
+			var e2 = nodes2.GetEnumerator ();
+			int nest = 0;
+			while (e1.MoveNext ()) {
+				if (e1.Current.NodeType == XamlNodeType.StartMember) {
+					if (nest > 0)
+						nest++;
+					else
+						if (TypeExtensionMethods.CompareMembers (m2, e1.Current.Member.Member) < 0) {
+							while (e2.MoveNext ())
+								yield return e2.Current;
+						}
+						else
+							nest++;
+				}
+				else if (e1.Current.NodeType == XamlNodeType.EndMember)
+					nest--;
+				yield return e1.Current;
+			}
+			while (e2.MoveNext ())
+				yield return e2.Current;
+		}
+
+		IEnumerable<XamlNodeInfo> GetKeyNodes (object ikey, XamlType keyType, XamlNodeMember xknm)
+		{
+			foreach (var xn in GetMemberNodes (xknm, GetNodes (XamlLanguage.Key, new XamlObject (GetType (ikey), ikey), keyType, false)))
+				yield return xn;
+		}
+
+		// Namespace and Reference retrieval.
+		// It is iterated before iterating the actual object nodes,
+		// and results are cached for use in XamlObjectReader.
+		public void PrepareReading ()
+		{
+			PrefixLookup.IsCollectingNamespaces = true;
+			NameResolver.IsCollectingReferences = true;
+			foreach (var xn in GetNodes ()) {
+				if (xn.NodeType == XamlNodeType.GetObject)
+					continue; // it is out of consideration here.
+				if (xn.NodeType == XamlNodeType.StartObject) {
+					foreach (var ns in NamespacesInType (xn.Object.Type))
+						PrefixLookup.LookupPrefix (ns);
+				} else if (xn.NodeType == XamlNodeType.StartMember) {
+					var xm = xn.Member.Member;
+					// This filtering is done as a black list so far. There does not seem to be any usable property on XamlDirective.
+					if (xm == XamlLanguage.Items || xm == XamlLanguage.PositionalParameters || xm == XamlLanguage.Initialization)
+						continue;
+					PrefixLookup.LookupPrefix (xn.Member.Member.PreferredXamlNamespace);
+				} else {
+					if (xn.NodeType == XamlNodeType.Value && xn.Value is Type)
+						// this tries to lookup existing prefix, and if there isn't any, then adds a new declaration.
+						TypeExtensionMethods.GetStringValue (XamlLanguage.Type, xn.Member.Member, xn.Value, value_serializer_ctx);
+					continue;
+				}
+			}
+			PrefixLookup.Namespaces.Sort ((nd1, nd2) => String.CompareOrdinal (nd1.Prefix, nd2.Prefix));
+			PrefixLookup.IsCollectingNamespaces = false;
+			NameResolver.IsCollectingReferences = false;
+			NameResolver.NameScopeInitializationCompleted (this);
+		}
+		
+		IEnumerable<string> NamespacesInType (XamlType xt)
+		{
+			yield return xt.PreferredXamlNamespace;
+			if (xt.TypeArguments != null) {
+				// It is for x:TypeArguments
+				yield return XamlLanguage.Xaml2006Namespace;
+				foreach (var targ in xt.TypeArguments)
+					foreach (var ns in NamespacesInType (targ))
+						yield return ns;
+			}
+		}
+	}
+}
diff --git a/mcs/class/System.Xaml/System.Xaml/XamlObjectReader.cs b/mcs/class/System.Xaml/System.Xaml/XamlObjectReader.cs
index aa8c8d0..0a418cb 100644
--- a/mcs/class/System.Xaml/System.Xaml/XamlObjectReader.cs
+++ b/mcs/class/System.Xaml/System.Xaml/XamlObjectReader.cs
@@ -20,91 +20,43 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
+
 using System;
 using System.Collections;
 using System.Collections.Generic;
 using System.ComponentModel;
 using System.Linq;
 using System.Windows.Markup;
+using System.Xaml;
 using System.Xaml.Schema;
 
+//
+// This implementation can be compiled under .NET, using different namespace
+// (Mono.Xaml). To compile it into a usable library, use the following compile
+// optons and sources:
+//
+//	dmcs -d:DOTNET -t:library -r:System.Xaml.dll \
+//		System.Xaml/XamlObjectReader.cs \
+//		System.Xaml/XamlObjectNodeIterator.cs \
+//		System.Xaml/XamlNode.cs \
+//		System.Xaml/PrefixLookup.cs \
+//		System.Xaml/ValueSerializerContext.cs \
+//		System.Xaml/TypeExtensionMethods.cs
+//
+// (At least it should compile as of the revision that this comment is added.)
+//
+// Adding Test/System.Xaml/TestedTypes.cs might also be useful to examine this
+// reader behavior under .NET and see where bugs are alive.
+//
+
+#if DOTNET
+namespace Mono.Xaml
+#else
 namespace System.Xaml
+#endif
 {
 	public class XamlObjectReader : XamlReader
 	{
-		#region nested types
-
-		class NSList : List<NamespaceDeclaration>
-		{
-			public NSList (XamlNodeType ownerType, IEnumerable<NamespaceDeclaration> nsdecls)
-				: base (nsdecls)
-			{
-				OwnerType = ownerType;
-			}
-			
-			public XamlNodeType OwnerType { get; set; }
-
-			public IEnumerator<NamespaceDeclaration> GetEnumerator ()
-			{
-				return new NSEnumerator (this, base.GetEnumerator ());
-			}
-		}
-
-		class NSEnumerator : IEnumerator<NamespaceDeclaration>
-		{
-			NSList list;
-			IEnumerator<NamespaceDeclaration> e;
-
-			public NSEnumerator (NSList list, IEnumerator<NamespaceDeclaration> e)
-			{
-				this.list= list;
-				this.e = e;
-			}
-			
-			public XamlNodeType OwnerType {
-				get { return list.OwnerType; }
-			}
-
-			public void Dispose ()
-			{
-			}
-
-			public bool MoveNext ()
-			{
-				return e.MoveNext ();
-			}
-
-			public NamespaceDeclaration Current {
-				get { return e.Current; }
-			}
-
-			object IEnumerator.Current {
-				get { return Current; }
-			}
-
-			public void Reset ()
-			{
-				throw new NotSupportedException ();
-			}
-		}
-	
-		class PrefixLookup : INamespacePrefixLookup
-		{
-			XamlObjectReader source;
-
-			public PrefixLookup (XamlObjectReader source)
-			{
-				this.source = source;
-			}
-
-			public string LookupPrefix (string ns)
-			{
-				return source.LookupPrefix (ns);
-			}
-		}
-
-		#endregion nested types
-
 		public XamlObjectReader (object instance)
 			: this (instance, new XamlSchemaContext (null, null), null)
 		{
@@ -124,46 +76,55 @@ namespace System.Xaml
 		{
 			if (schemaContext == null)
 				throw new ArgumentNullException ("schemaContext");
-			// FIXME: special case? or can it be generalized?
+			// FIXME: special case? or can it be generalized? In .NET, For Type instance Instance returns TypeExtension at root StartObject, while for Array it remains to return Array.
 			if (instance is Type)
 				instance = new TypeExtension ((Type) instance);
 
-			this.instance = instance;
+			// See also Instance property for this weirdness.
+			this.root_raw = instance;
+			instance = TypeExtensionMethods.GetExtensionWrapped (instance);
+			this.root = instance;
+
 			sctx = schemaContext;
 			this.settings = settings;
 
-			prefix_lookup = new PrefixLookup (this);
-
+			// check type validity. Note that some checks also needs done at Read() phase. (it is likely FIXME:)
 			if (instance != null) {
-				// check type validity. Note that some checks are done at Read() phase.
-				var type = instance.GetType ();
+				var type = new InstanceContext (instance).GetRawValue ().GetType ();
 				if (!type.IsPublic)
 					throw new XamlObjectReaderException (String.Format ("instance type '{0}' must be public and non-nested.", type));
-				root_type = SchemaContext.GetXamlType (instance.GetType ());
-				if (root_type.ConstructionRequiresArguments && root_type.TypeConverter == null)
+				var xt = SchemaContext.GetXamlType (type);
+				if (xt.ConstructionRequiresArguments && !xt.GetConstructorArguments ().Any () && xt.TypeConverter == null)
 					throw new XamlObjectReaderException (String.Format ("instance type '{0}' has no default constructor.", type));
 			}
-			else
-				root_type = XamlLanguage.Null;
-		}
 
-		object instance;
-		XamlType root_type;
+			value_serializer_context = new ValueSerializerContext (new PrefixLookup (sctx), sctx);
+			new XamlObjectNodeIterator (instance, sctx, value_serializer_context).PrepareReading ();
+		}
+		
+		bool is_eof;
+		object root, root_raw;
 		XamlSchemaContext sctx;
 		XamlObjectReaderSettings settings;
+		IValueSerializerContext value_serializer_context;
 
-		INamespacePrefixLookup prefix_lookup;
-
-		Stack<XamlType> types = new Stack<XamlType> ();
-		Stack<object> objects = new Stack<object> ();
-		Stack<IEnumerator<XamlMember>> members_stack = new Stack<IEnumerator<XamlMember>> ();
-		NSList namespaces;
 		IEnumerator<NamespaceDeclaration> ns_iterator;
-		XamlNodeType node_type = XamlNodeType.None;
-		bool is_eof;
+		IEnumerator<XamlNodeInfo> nodes;
+
+		PrefixLookup PrefixLookup {
+			get { return (PrefixLookup) value_serializer_context.GetService (typeof (INamespacePrefixLookup)); }
+		}
 
+		// This property value is weird.
+		// - For root Type it returns TypeExtension.
+		// - For root Array it returns Array.
+		// - For non-root Type it returns Type.
+		// - For IXmlSerializable, it does not either return the raw IXmlSerializable or interpreted XData (it just returns null).
 		public virtual object Instance {
-			get { return NodeType == XamlNodeType.StartObject && objects.Count > 0 ? objects.Peek () : null; }
+			get {
+				var cur = NodeType == XamlNodeType.StartObject ? nodes.Current.Object.GetRawValue () : null;
+				return cur == root ? root_raw : cur is XData ? null : cur;
+			}
 		}
 
 		public override bool IsEof {
@@ -171,7 +132,7 @@ namespace System.Xaml
 		}
 
 		public override XamlMember Member {
-			get { return NodeType == XamlNodeType.StartMember ? members_stack.Peek ().Current : null; }
+			get { return NodeType == XamlNodeType.StartMember ? nodes.Current.Member.Member : null; }
 		}
 
 		public override NamespaceDeclaration Namespace {
@@ -179,7 +140,16 @@ namespace System.Xaml
 		}
 
 		public override XamlNodeType NodeType {
-			get { return node_type; }
+			get {
+				if (is_eof)
+					return XamlNodeType.None;
+				else if (nodes != null)
+					return nodes.Current.NodeType;
+				else if (ns_iterator != null)
+					return XamlNodeType.NamespaceDeclaration;
+				else
+					return XamlNodeType.None;
+			}
 		}
 
 		public override XamlSchemaContext SchemaContext {
@@ -187,19 +157,15 @@ namespace System.Xaml
 		}
 
 		public override XamlType Type {
-			get { return NodeType == XamlNodeType.StartObject ? types.Peek () : null; }
+			get { return NodeType == XamlNodeType.StartObject ? nodes.Current.Object.Type : null; }
 		}
 
 		public override object Value {
-			get { return NodeType == XamlNodeType.Value ? objects.Peek () : null; }
-		}
-
-		internal string LookupPrefix (string ns)
-		{
-			foreach (var nsd in namespaces)
-				if (nsd.Namespace == ns)
-					return nsd.Prefix;
-			return null;
+			get {
+				if (NodeType != XamlNodeType.Value)
+					return null;
+				return nodes.Current.Value;
+			}
 		}
 
 		public override bool Read ()
@@ -208,197 +174,18 @@ namespace System.Xaml
 				throw new ObjectDisposedException ("reader");
 			if (IsEof)
 				return false;
-			IEnumerator<XamlMember> members;
-			switch (NodeType) {
-			case XamlNodeType.None:
-			default:
-				// -> namespaces
-				var d = new Dictionary<string,string> ();
-				//l.Sort ((p1, p2) => String.CompareOrdinal (p1.Key, p2.Key));
-				CollectNamespaces (d, instance, root_type);
-				var nss = from k in d.Keys select new NamespaceDeclaration (k, d [k]);
-				namespaces = new NSList (XamlNodeType.StartObject, nss);
-				namespaces.Sort ((n1, n2) => String.CompareOrdinal (n1.Prefix, n2.Prefix));
-				ns_iterator = namespaces.GetEnumerator ();
-
-				ns_iterator.MoveNext ();
-				node_type = XamlNodeType.NamespaceDeclaration;
-				return true;
-
-			case XamlNodeType.NamespaceDeclaration:
-				if (ns_iterator.MoveNext ())
-					return true;
-				node_type = ((NSEnumerator) ns_iterator).OwnerType; // StartObject or StartMember
-				if (node_type == XamlNodeType.StartObject)
-					StartNextObject ();
-				else
-					StartNextMemberOrNamespace ();
-				return true;
-
-			case XamlNodeType.StartObject:
-				var xt = types.Peek ();
-				members = xt.GetAllReadWriteMembers ().GetEnumerator ();
-				if (members.MoveNext ()) {
-					members_stack.Push (members);
-					StartNextMemberOrNamespace ();
-					return true;
-				}
-				else
-					node_type = XamlNodeType.EndObject;
-				return true;
-
-			case XamlNodeType.StartMember:
-				if (!members_stack.Peek ().Current.IsContentValue ())
-					StartNextObject ();
-				else {
-					var obj = GetMemberValueOrRootInstance ();
-					objects.Push (obj);
-					node_type = XamlNodeType.Value;
-				}
+			
+			if (ns_iterator == null)
+				ns_iterator = PrefixLookup.Namespaces.GetEnumerator ();
+			if (ns_iterator.MoveNext ())
 				return true;
-
-			case XamlNodeType.Value:
-				objects.Pop ();
-				node_type = XamlNodeType.EndMember;
+			if (nodes == null)
+				nodes = new XamlObjectNodeIterator (root, sctx, value_serializer_context).GetNodes ().GetEnumerator ();
+			if (nodes.MoveNext ())
 				return true;
-
-			case XamlNodeType.GetObject:
-				// how do we get here?
-				throw new NotImplementedException ();
-
-			case XamlNodeType.EndMember:
-				members = members_stack.Peek ();
-				if (members.MoveNext ()) {
-					members_stack.Push (members);
-					StartNextMemberOrNamespace ();
-				} else {
-					members_stack.Pop ();
-					node_type = XamlNodeType.EndObject;
-				}
-				return true;
-
-			case XamlNodeType.EndObject:
-				// It might be either end of the entire object tree or just the end of an object value.
-				types.Pop ();
-				objects.Pop ();
-				if (objects.Count == 0) {
-					node_type = XamlNodeType.None;
-					is_eof = true;
-					return false;
-				}
-				members = members_stack.Peek ();
-				if (members.MoveNext ()) {
-					StartNextMemberOrNamespace ();
-					return true;
-				}
-				// then, move to the end of current object member.
-				node_type = XamlNodeType.EndMember;
-				return true;
-			}
-		}
-
-		void CollectNamespaces (Dictionary<string,string> d, object o, XamlType xt)
-		{
-			if (xt == null)
-				return;
-			if (o == null) {
-				// it becomes NullExtension, so check standard ns.
-				CheckAddNamespace (d, XamlLanguage.Xaml2006Namespace);
-				return;
-			}
-			var ns = xt.PreferredXamlNamespace;
-			CheckAddNamespace (d, ns);
-
-			foreach (var xm in xt.GetAllMembers ()) {
-				ns = xm.PreferredXamlNamespace;
-				if (xm is XamlDirective && ns == XamlLanguage.Xaml2006Namespace)
-					continue;
-				if (xm.Type.IsCollection || xm.Type.IsDictionary || xm.Type.IsArray)
-					continue; // FIXME: process them too.
-				var mv = GetMemberValueOf (xm, o, xt, d);
-				CollectNamespaces (d, mv, xm.Type);
-			}
-		}
-
-		// This assumes that the next member is already on current position on current iterator.
-		void StartNextMemberOrNamespace ()
-		{
-			// FIXME: there might be NamespaceDeclarations.
-			node_type = XamlNodeType.StartMember;
-		}
-
-		void StartNextObject ()
-		{
-			var obj = GetMemberValueOrRootInstance ();
-			var xt = Object.ReferenceEquals (obj, instance) ? root_type : obj != null ? SchemaContext.GetXamlType (obj.GetType ()) : XamlLanguage.Null;
-
-			// FIXME: enable these lines.
-			// FIXME: if there is an applicable instance descriptor, then it could be still valid.
-			//var type = xt.UnderlyingType;
-			//if (type.GetConstructor (System.Type.EmptyTypes) == null)
-			//	throw new XamlObjectReaderException (String.Format ("Type {0} has no default constructor or an instance descriptor.", type));
-
-			objects.Push (obj);
-			types.Push (xt);
-			node_type = XamlNodeType.StartObject;
-		}
-		
-		object GetMemberValueOrRootInstance ()
-		{
-			if (objects.Count == 0)
-				return instance;
-
-			var xm = members_stack.Peek ().Current;
-			var obj = objects.Peek ();
-			var xt = types.Peek ();
-			return GetMemberValueOf (xm, obj, xt, null);
-		}
-
-		object GetMemberValueOf (XamlMember xm, object obj, XamlType xt, Dictionary<string,string> collectingNamespaces)
-		{
-			object retobj;
-			XamlType retxt;
-			if (xt.IsContentValue ()) {
-				retxt = xt;
-				retobj = obj;
-			} else {
-				retxt = xm.Type;
-				retobj = xm.GetMemberValueForObjectReader (xt, obj, prefix_lookup);
-			}
-
-			if (collectingNamespaces != null) {
-				if (retobj is Type || retobj is TypeExtension) {
-					var type = (retobj as Type) ?? ((TypeExtension) retobj).Type;
-					if (type == null) // only TypeExtension.TypeName
-						return null;
-					var xtt = SchemaContext.GetXamlType (type);
-					var ns = xtt.PreferredXamlNamespace;
-					var nss = collectingNamespaces;
-					CheckAddNamespace (collectingNamespaces, ns);
-					return null;
-				}
-				else if (retxt.IsContentValue ())
-					return null;
-				else
-					return retobj;
-			} else if (retxt.IsContentValue ()) {
-				// FIXME: I'm not sure if this should be really done 
-				// here, but every primitive values seem to be exposed
-				// as a string, not a typed object in XamlObjectReader.
-				return retxt.GetStringValue (retobj, prefix_lookup);
-			}
-			else
-				return retobj;
-		}
-
-		void CheckAddNamespace (Dictionary<string,string> d, string ns)
-		{
-			if (ns == XamlLanguage.Xaml2006Namespace)
-				d [XamlLanguage.Xaml2006Namespace] = "x";
-			else if (!d.ContainsValue (String.Empty))
-				d [ns] = String.Empty;
-			else if (!d.ContainsKey (ns))
-				d.Add (ns, SchemaContext.GetPreferredPrefix (ns));
+			if (!is_eof)
+				is_eof = true;
+			return false;
 		}
 	}
 }
diff --git a/mcs/class/System.Xaml/System.Xaml/XamlObjectReaderException.cs b/mcs/class/System.Xaml/System.Xaml/XamlObjectReaderException.cs
index 0bad880..89c64fe 100644
--- a/mcs/class/System.Xaml/System.Xaml/XamlObjectReaderException.cs
+++ b/mcs/class/System.Xaml/System.Xaml/XamlObjectReaderException.cs
@@ -27,7 +27,9 @@ using System.Runtime.Serialization;
 
 namespace System.Xaml
 {
+#if !NET_2_1
 	[Serializable]
+#endif
 	public class XamlObjectReaderException : XamlException
 	{
 		public XamlObjectReaderException ()
@@ -45,9 +47,11 @@ namespace System.Xaml
 		{
 		}
 
+#if !NET_2_1
 		protected XamlObjectReaderException (SerializationInfo info, StreamingContext context)
 			: base (info, context)
 		{
 		}
+#endif
 	}
 }
diff --git a/mcs/class/System.Xaml/System.Xaml/XamlObjectWriter.cs b/mcs/class/System.Xaml/System.Xaml/XamlObjectWriter.cs
index c4abc3d..71c42d3 100644
--- a/mcs/class/System.Xaml/System.Xaml/XamlObjectWriter.cs
+++ b/mcs/class/System.Xaml/System.Xaml/XamlObjectWriter.cs
@@ -21,10 +21,50 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 using System;
+using System.Collections;
 using System.Collections.Generic;
+using System.Globalization;
+using System.Linq;
+using System.Reflection;
 using System.Windows.Markup;
+using System.Xaml;
+using System.Xaml.Schema;
+using System.Xml;
+using System.Xml.Serialization;
 
+// To use this under .NET, compile sources as:
+//
+//	dmcs -d:DOTNET -r:System.Xaml -debug System.Xaml/XamlObjectWriter.cs System.Xaml/XamlWriterInternalBase.cs System.Xaml/TypeExtensionMethods.cs System.Xaml/XamlWriterStateManager.cs System.Xaml/XamlNameResolver.cs System.Xaml/PrefixLookup.cs System.Xaml/ValueSerializerContext.cs ../../build/common/MonoTODOAttribute.cs Test/System.Xaml/TestedTypes.cs
+
+/*
+
+State transition:
+
+* StartObject or GetObject
+	These start a new object instance, either by creating new or getting
+	from parent.
+* Value
+	This either becomes an entire property value, or an item of current
+	collection, or a key or a value item of current dictionary, or an
+	entire object if it is either Initialization.
+* EndObject
+	Almost the same as Value. Though the it is likely already instantiated.
+* StartMember
+	Indicates a new property as current.
+* EndMember
+	It accompanies a property value (might be lacking), or ends a
+	collection (including those for PositionalParameters), or ends a key
+	property of a dictionary element (if it is Key), or ends an entire
+	value of current object if it is Initialization.
+
+
+*/
+
+#if DOTNET
+namespace Mono.Xaml
+#else
 namespace System.Xaml
+#endif
 {
 	public class XamlObjectWriter : XamlWriter, IXamlLineInfoConsumer
 	{
@@ -39,27 +79,20 @@ namespace System.Xaml
 				throw new ArgumentNullException ("schemaContext");
 			this.sctx = schemaContext;
 			this.settings = settings ?? new XamlObjectWriterSettings ();
+			var manager = new XamlWriterStateManager<XamlObjectWriterException, XamlObjectWriterException> (false);
+			intl = new XamlObjectWriterInternal (this, sctx, manager);
 		}
 
 		XamlSchemaContext sctx;
 		XamlObjectWriterSettings settings;
 
-		XamlWriterStateManager manager = new XamlWriterStateManager<XamlObjectWriterException, XamlObjectWriterException> (false);
-		object result;
-		int line = -1, column = -1;
-		Stack<object> objects = new Stack<object> ();
-		Stack<XamlType> types = new Stack<XamlType> ();
-		Stack<XamlMember> members = new Stack<XamlMember> ();
+		XamlObjectWriterInternal intl;
 
-		List<object> arguments = new List<object> ();
-		string factory_method;
-		bool object_instantiated;
-		List<object> contents = new List<object> ();
-		List<object> objects_from_getter = new List<object> ();
-		Stack<List<XamlMember>> written_properties_stack = new Stack<List<XamlMember>> ();
+		int line, column;
+		bool lineinfo_was_given;
 
 		public virtual object Result {
-			get { return result; }
+			get { return intl.Result; }
 		}
 
 		public INameScope RootNameScope {
@@ -71,7 +104,14 @@ namespace System.Xaml
 		}
 
 		public bool ShouldProvideLineInfo {
-			get { return line > 0 && column > 0; }
+			get { return lineinfo_was_given; }
+		}
+
+		public void SetLineInfo (int lineNumber, int linePosition)
+		{
+			line = lineNumber;
+			column = linePosition;
+			lineinfo_was_given = true;
 		}
 		
 		public void Clear ()
@@ -84,34 +124,34 @@ namespace System.Xaml
 			if (!disposing)
 				return;
 
-			while (types.Count > 0) {
-				WriteEndObject ();
-				if (types.Count > 0)
-					WriteEndMember ();
-			}
+			intl.CloseAll ();
 		}
 
-		protected virtual void OnAfterBeginInit (object value)
+		protected internal virtual void OnAfterBeginInit (object value)
 		{
-			throw new NotImplementedException ();
+			if (settings.AfterBeginInitHandler != null)
+				settings.AfterBeginInitHandler (this, new XamlObjectEventArgs (value));
 		}
 
-		protected virtual void OnAfterEndInit (object value)
+		protected internal virtual void OnAfterEndInit (object value)
 		{
-			throw new NotImplementedException ();
+			if (settings.AfterEndInitHandler != null)
+				settings.AfterEndInitHandler (this, new XamlObjectEventArgs (value));
 		}
 
-		protected virtual void OnAfterProperties (object value)
+		protected internal virtual void OnAfterProperties (object value)
 		{
-			throw new NotImplementedException ();
+			if (settings.AfterPropertiesHandler != null)
+				settings.AfterPropertiesHandler (this, new XamlObjectEventArgs (value));
 		}
 
-		protected virtual void OnBeforeProperties (object value)
+		protected internal virtual void OnBeforeProperties (object value)
 		{
-			throw new NotImplementedException ();
+			if (settings.BeforePropertiesHandler != null)
+				settings.BeforePropertiesHandler (this, new XamlObjectEventArgs (value));
 		}
 
-		protected virtual bool OnSetValue (object eventSender, XamlMember member, object value)
+		protected internal virtual bool OnSetValue (object eventSender, XamlMember member, object value)
 		{
 			if (settings.XamlSetValueHandler != null) {
 				settings.XamlSetValueHandler (eventSender, new XamlSetValueEventArgs (member, value));
@@ -120,178 +160,364 @@ namespace System.Xaml
 			return false;
 		}
 
-		public void SetLineInfo (int lineNumber, int linePosition)
+		public override void WriteGetObject ()
 		{
-			line = lineNumber;
-			column = linePosition;
+			intl.WriteGetObject ();
 		}
 
-		[MonoTODO ("Array and Dictionary needs implementation")]
-		public override void WriteEndMember ()
+		public override void WriteNamespace (NamespaceDeclaration namespaceDeclaration)
 		{
-			manager.EndMember ();
-			
-			var xm = members.Pop ();
-			var xt = xm.Type;
-
-			if (xt.IsArray) {
-				throw new NotImplementedException ();
-			} else if (xt.IsCollection) {
-				var obj = objects.Peek ();
-				foreach (var content in contents)
-					xt.Invoker.AddToCollection (obj, content);
-			} else if (xt.IsDictionary) {
-				throw new NotImplementedException ();
-			} else {
-				if (contents.Count > 1)
-					throw new XamlDuplicateMemberException (String.Format ("Value for {0} is assigned more than once", xm.Name));
-				if (contents.Count == 1) {
-					var value = GetCorrectlyTypedValue (xm, contents [0]);
-					if (!objects_from_getter.Remove (value))
-						if (!OnSetValue (this, xm, value))
-							xm.Invoker.SetValue (objects.Peek (), value);
-				}
-			}
-
-			contents.Clear ();
-			written_properties_stack.Peek ().Add (xm);
+			intl.WriteNamespace (namespaceDeclaration);
 		}
 
-		object GetCorrectlyTypedValue (XamlMember xm, object value)
+		public override void WriteStartObject (XamlType xamlType)
 		{
-			var xt = xm.Type;
-			if (IsAllowedType (xt, value))
-				return value;
-			if (xt.TypeConverter != null && value != null) {
-				var tc = xt.TypeConverter.ConverterInstance;
-				if (tc != null && tc.CanConvertFrom (value.GetType ()))
-					value = tc.ConvertFrom (value);
-				if (IsAllowedType (xt, value))
-					return value;
-			}
-			throw new XamlObjectWriterException (String.Format ("Value is not of type {0}", xt));
+			intl.WriteStartObject (xamlType);
 		}
-
-		bool IsAllowedType (XamlType xt, object value)
+		
+		public override void WriteValue (object value)
 		{
-			return xt == null || xt.UnderlyingType == null || xt.UnderlyingType.IsInstanceOfType (value);
+			intl.WriteValue (value);
 		}
-
+		
+		public override void WriteStartMember (XamlMember property)
+		{
+			intl.WriteStartMember (property);
+		}
+		
 		public override void WriteEndObject ()
 		{
-			manager.EndObject (types.Count > 0);
+			intl.WriteEndObject ();
+		}
+
+		public override void WriteEndMember ()
+		{
+			intl.WriteEndMember ();
+		}
+	}
 
-			InitializeObjectIfRequired (); // this is required for such case that there was no StartMember call.
+	// specific implementation
+	class XamlObjectWriterInternal : XamlWriterInternalBase
+	{
+		const string Xmlns2000Namespace = "http://www.w3.org/2000/xmlns/";
 
-			types.Pop ();
-			written_properties_stack.Pop ();
-			var obj = objects.Pop ();
-			if (members.Count > 0)
-				contents.Add (obj);
-			if (objects.Count == 0)
-				result = obj;
+		public XamlObjectWriterInternal (XamlObjectWriter source, XamlSchemaContext schemaContext, XamlWriterStateManager manager)
+			: base (schemaContext, manager)
+		{
+			this.source = source;
+			this.sctx = schemaContext;
 		}
+		
+		XamlObjectWriter source;
+		XamlSchemaContext sctx;
+		INameScope name_scope = new NameScope ();
+		List<NameFixupRequired> pending_name_references = new List<NameFixupRequired> ();
 
-		public override void WriteGetObject ()
+		public object Result { get; set; }
+		
+		protected override void OnWriteStartObject ()
 		{
-			manager.GetObject ();
+			var state = object_states.Pop ();
+			if (object_states.Count > 0) {
+				var pstate = object_states.Peek ();
+				if (CurrentMemberState.Value != null)
+					throw new XamlDuplicateMemberException (String.Format ("Member '{0}' is already written to current type '{1}'", CurrentMember, pstate.Type));
+			}
+			object_states.Push (state);
+			if (!state.Type.IsContentValue (service_provider))
+				InitializeObjectIfRequired (true);
+
 
-			var xm = members.Peek ();
-			// see GetObjectOnNonNullString() test
-			//if (!xm.Type.IsCollection)
-			//	throw new XamlObjectWriterException (String.Format ("WriteGetObject method can be invoked only when current member '{0}' is of collection type", xm.Name));
+		}
 
-			var obj = xm.Invoker.GetValue (objects.Peek ());
-			if (obj == null)
+		protected override void OnWriteGetObject ()
+		{
+			var state = object_states.Pop ();
+			var xm = CurrentMember;
+			var instance = xm.Invoker.GetValue (object_states.Peek ().Value);
+			if (instance == null)
 				throw new XamlObjectWriterException (String.Format ("The value  for '{0}' property is null", xm.Name));
+			state.Value = instance;
+			state.IsInstantiated = true;
+			object_states.Push (state);
+		}
+
+		protected override void OnWriteEndObject ()
+		{
+			InitializeObjectIfRequired (false); // this is required for such case that there was no StartMember call.
 
-			types.Push (SchemaContext.GetXamlType (obj.GetType ()));
-			ObjectInitialized (obj);
-			objects_from_getter.Add (obj);
+			var state = object_states.Pop ();
+			var obj = state.Value;
+			
+			if (obj is MarkupExtension) {
+				try {
+					obj = ((MarkupExtension) obj).ProvideValue (service_provider);
+				} catch (XamlObjectWriterException) {
+					throw;
+				} catch (Exception ex) {
+					throw new XamlObjectWriterException ("An error occured on getting provided value", ex);
+				}
+			}
+			var nfr = obj as NameFixupRequired;
+			if (nfr != null && object_states.Count > 0) { // IF the root object to be written is x:Reference, then the Result property will become the NameFixupRequired. That's what .NET also does.
+				// actually .NET seems to seek "parent" object in its own IXamlNameResolver implementation.
+				var pstate = object_states.Peek ();
+				nfr.ParentType = pstate.Type;
+				nfr.ParentMember = CurrentMember; // Note that it is a member of the pstate.
+				nfr.ParentValue = pstate.Value;
+				pending_name_references.Add ((NameFixupRequired) obj);
+			}
+			else
+				StoreAppropriatelyTypedValue (obj, state.KeyValue);
+			object_states.Push (state);
+			if (object_states.Count == 1) {
+				Result = obj;
+				ResolvePendingReferences ();
+			}
 		}
 
-		public override void WriteNamespace (NamespaceDeclaration namespaceDeclaration)
+		Stack<object> escaped_objects = new Stack<object> ();
+
+		protected override void OnWriteStartMember (XamlMember property)
 		{
-			if (namespaceDeclaration == null)
-				throw new ArgumentNullException ("namespaceDeclaration");
+			if (property == XamlLanguage.PositionalParameters ||
+			    property == XamlLanguage.Arguments) {
+				var state = object_states.Peek ();
+				escaped_objects.Push (state.Value);
+				state.Value = new List<object> ();
+			}
 
-			manager.Namespace ();
+			// FIXME: this condition needs to be examined. What is known to be prevented are: PositionalParameters, Initialization and Base (the last one sort of indicates there's a lot more).
+			else if (!(property is XamlDirective))
+				InitializeObjectIfRequired (false);
+		}
 
-			// FIXME: find out what to do.
+		static readonly BindingFlags static_flags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static;
+
+		protected override void OnWriteEndMember ()
+		{
+			var xm = CurrentMember;
+			var state = object_states.Peek ();
+
+			if (xm == XamlLanguage.PositionalParameters) {
+				var l = (List<object>) state.Value;
+				state.Value = escaped_objects.Pop ();
+				state.IsInstantiated = true;
+				PopulateObject (true, l);
+				return;
+			} else if (xm == XamlLanguage.Arguments) {
+				if (state.FactoryMethod != null) {
+					var contents = (List<object>) state.Value;
+					var mi = state.Type.UnderlyingType.GetMethods (static_flags).FirstOrDefault (mii => mii.Name == state.FactoryMethod && mii.GetParameters ().Length == contents.Count);
+					if (mi == null)
+						throw new XamlObjectWriterException (String.Format ("Specified static factory method '{0}' for type '{1}' was not found", state.FactoryMethod, state.Type));
+					state.Value = mi.Invoke (null, contents.ToArray ());
+				}
+				else
+					PopulateObject (false, (List<object>) state.Value);
+				state.IsInstantiated = true;
+				escaped_objects.Pop ();
+			} else if (xm == XamlLanguage.Initialization) {
+				// ... and no need to do anything. The object value to pop *is* the return value.
+			} else if (xm == XamlLanguage.Name || xm == state.Type.GetAliasedProperty (XamlLanguage.Name)) {
+				string name = (string) CurrentMemberState.Value;
+				name_scope.RegisterName (name, state.Value);
+			} else {
+				if (!xm.IsReadOnly) // exclude read-only object such as collection item.
+					SetValue (xm, CurrentMemberState.Value);
+			}
 		}
 
-		public override void WriteStartMember (XamlMember property)
+		void SetValue (XamlMember member, object value)
 		{
-			if (property == null)
-				throw new ArgumentNullException ("property");
+			if (member == XamlLanguage.FactoryMethod)
+				object_states.Peek ().FactoryMethod = (string) value;
+			else if (member.IsDirective)
+				return;
+			else if (member.IsAttachable)
+				AttachablePropertyServices.SetProperty (object_states.Peek ().Value, new AttachableMemberIdentifier (member.DeclaringType.UnderlyingType, member.Name), value);
+			else if (!source.OnSetValue (this, member, value))
+				member.Invoker.SetValue (object_states.Peek ().Value, value);
+		}
 
-			manager.StartMember ();
+		void PopulateObject (bool considerPositionalParameters, IList<object> contents)
+		{
+			var state = object_states.Peek ();
 
-			var wpl = written_properties_stack.Peek ();
-			if (wpl.Contains (property))
-				throw new XamlDuplicateMemberException (String.Format ("Property '{0}' is already set to this '{1}' object", property.Name, types.Peek ().Name));
-			wpl.Add (property);
+			var args = state.Type.GetSortedConstructorArguments ();
+			var argt = args != null ? (IList<XamlType>) (from arg in args select arg.Type).ToArray () : considerPositionalParameters ? state.Type.GetPositionalParameters (contents.Count) : null;
 
-			members.Push (property);
+			var argv = new object [argt.Count];
+			for (int i = 0; i < argv.Length; i++)
+				argv [i] = GetCorrectlyTypedValue (argt [i], contents [i]);
+			state.Value = state.Type.Invoker.CreateInstance (argv);
+			state.IsInstantiated = true;
+		}
 
-			if (property == XamlLanguage.Initialization)
-				return;
-			else
-				InitializeObjectIfRequired ();
+		protected override void OnWriteValue (object value)
+		{
+			if (CurrentMemberState.Value != null)
+				throw new XamlDuplicateMemberException (String.Format ("Member '{0}' is already written to current type '{1}'", CurrentMember, object_states.Peek ().Type));
+			StoreAppropriatelyTypedValue (value, null);
 		}
 
-		void InitializeObjectIfRequired ()
+		protected override void OnWriteNamespace (NamespaceDeclaration nd)
 		{
-			if (object_instantiated)
-				return;
+			// nothing to do here.
+		}
+		
+		void StoreAppropriatelyTypedValue (object obj, object keyObj)
+		{
+			var ms = CurrentMemberState; // note that this retrieves parent's current property for EndObject.
+			if (ms != null) {
+				var state = object_states.Peek ();
+				var parent = state.Value;
+				var xt = state.Type;
+				var xm = ms.Member;
+				if (xm == XamlLanguage.Initialization) {
+					state.Value = GetCorrectlyTypedValue (xt, obj);
+					state.IsInstantiated = true;
+				}
+				else if (xm.Type.IsXData) {
+					var xdata = (XData) obj;
+					var ixser = xm.Invoker.GetValue (state.Value) as IXmlSerializable;
+					if (ixser != null)
+						ixser.ReadXml ((XmlReader) xdata.XmlReader);
+				}
+				else if (xm == XamlLanguage.Base)
+					ms.Value = GetCorrectlyTypedValue (xm.Type, obj);
+				else if (xm == XamlLanguage.Name || xm == xt.GetAliasedProperty (XamlLanguage.Name))
+					ms.Value = GetCorrectlyTypedValue (XamlLanguage.String, obj);
+				else if (xm == XamlLanguage.Key)
+					state.KeyValue = GetCorrectlyTypedValue (xt.KeyType, obj);
+				else {
+					if (!AddToCollectionIfAppropriate (xt, xm, parent, obj, keyObj)) {
+						if (!xm.IsReadOnly)
+							ms.Value = GetCorrectlyTypedValue (xm.Type, obj);
+					}
+				}
+			}
+		}
 
-			// FIXME: "The default techniques in absence of a factory method are to attempt to find a default constructor, then attempt to find an identified type converter on type, member, or destination type."
-			// http://msdn.microsoft.com/en-us/library/system.xaml.xamllanguage.factorymethod%28VS.100%29.aspx
-			object obj;
-			var args = arguments.ToArray ();
-			if (factory_method != null)
-				obj = types.Peek ().UnderlyingType.GetMethod (factory_method).Invoke (null, args);
+		bool AddToCollectionIfAppropriate (XamlType xt, XamlMember xm, object parent, object obj, object keyObj)
+		{
+			var mt = xm.Type;
+			if (xm == XamlLanguage.Items ||
+			    xm == XamlLanguage.PositionalParameters ||
+			    xm == XamlLanguage.Arguments) {
+				if (xt.IsDictionary)
+					mt.Invoker.AddToDictionary (parent, GetCorrectlyTypedValue (xt.KeyType, keyObj), GetCorrectlyTypedValue (xt.ItemType, obj));
+				else // collection. Note that state.Type isn't usable for PositionalParameters to identify collection kind.
+					mt.Invoker.AddToCollection (parent, GetCorrectlyTypedValue (xt.ItemType, obj));
+				return true;
+			}
 			else
-				obj = types.Peek ().Invoker.CreateInstance (args);
-			ObjectInitialized (obj);
+				return false;
 		}
 
-		public override void WriteStartObject (XamlType xamlType)
+		object GetCorrectlyTypedValue (XamlType xt, object value)
 		{
-			if (xamlType == null)
-				throw new ArgumentNullException ("xamlType");
+			try {
+				return DoGetCorrectlyTypedValue (xt, value);
+			} catch (XamlObjectWriterException) {
+				throw;
+			} catch (Exception ex) {
+				// For + ex.Message, the runtime should print InnerException message like .NET does.
+				throw new XamlObjectWriterException (String.Format ("Could not convert object \'{0}' (of type {1}) to {2}: ", value, value != null ? (object) value.GetType () : "(null)", xt)  + ex.Message, ex);
+			}
+		}
 
-			manager.StartObject ();
+		// It expects that it is not invoked when there is no value to 
+		// assign.
+		// When it is passed null, then it returns a default instance.
+		// For example, passing null as Int32 results in 0.
+		object DoGetCorrectlyTypedValue (XamlType xt, object value)
+		{
+			if (value == null) {
+				if (xt.IsContentValue (service_provider)) // it is for collection/dictionary key and item
+					return null;
+				else
+					return xt.Invoker.CreateInstance (new object [0]);
+			}
+			if (xt == null)
+				return value;
+
+			// Not sure if this is really required though...
+			var vt = sctx.GetXamlType (value.GetType ());
+			if (vt.CanAssignTo (xt))
+				return value;
 
-			types.Push (xamlType);
+			// FIXME: this could be generalized by some means, but I cannot find any.
+			if (xt.UnderlyingType == typeof (XamlType) && value is string) {
+				var nsr = (IXamlNamespaceResolver) service_provider.GetService (typeof (IXamlNamespaceResolver));
+				value = sctx.GetXamlType (XamlTypeName.Parse ((string) value, nsr));
+			}
 
-			object_instantiated = false;
+			// FIXME: this could be generalized by some means, but I cannot find any.
+			if (xt.UnderlyingType == typeof (Type))
+				value = new TypeExtension ((string) value).ProvideValue (service_provider);
+			if (xt == XamlLanguage.Type && value is string)
+				value = new TypeExtension ((string) value);
+			
+			if (IsAllowedType (xt, value))
+				return value;
+
+			if (xt.TypeConverter != null && value != null) {
+				var tc = xt.TypeConverter.ConverterInstance;
+				if (tc != null && tc.CanConvertFrom (value.GetType ()))
+					value = tc.ConvertFrom (value);
+				return value;
+			}
 
-			written_properties_stack.Push (new List<XamlMember> ());
+			throw new XamlObjectWriterException (String.Format ("Value '{1}' (of type {2}) is not of or convertible to type {0}", xt, value, value != null ? (object) value.GetType () : "(null)"));
 		}
 
-		public override void WriteValue (object value)
+		bool IsAllowedType (XamlType xt, object value)
 		{
-			manager.Value ();
+			return  xt == null ||
+				xt.UnderlyingType == null ||
+				xt.UnderlyingType.IsInstanceOfType (value) ||
+				value == null && xt == XamlLanguage.Null ||
+				xt.IsMarkupExtension && IsAllowedType (xt.MarkupExtensionReturnType, value);
+		}
+		
+		void InitializeObjectIfRequired (bool waitForParameters)
+		{
+			var state = object_states.Peek ();
+			if (state.IsInstantiated)
+				return;
 
-			var xm = members.Peek ();
+			if (waitForParameters && (state.Type.ConstructionRequiresArguments || state.Type.HasPositionalParameters (service_provider)))
+				return;
 
-			if (xm == XamlLanguage.Initialization)
-				ObjectInitialized (value);
-			else if (xm == XamlLanguage.Arguments)
-				arguments.Add (value);
-			else if (xm == XamlLanguage.FactoryMethod)
-				factory_method = (string) value;
+			// FIXME: "The default techniques in absence of a factory method are to attempt to find a default constructor, then attempt to find an identified type converter on type, member, or destination type."
+			// http://msdn.microsoft.com/en-us/library/system.xaml.xamllanguage.factorymethod%28VS.100%29.aspx
+			object obj;
+			if (state.FactoryMethod != null) // FIXME: it must be implemented and verified with tests.
+				throw new NotImplementedException ();
 			else
-				contents.Add (value);
+				obj = state.Type.Invoker.CreateInstance (null);
+			state.Value = obj;
+			state.IsInstantiated = true;
 		}
 
-		void ObjectInitialized (object obj)
+		internal IXamlNameResolver name_resolver {
+			get { return (IXamlNameResolver) service_provider.GetService (typeof (IXamlNameResolver)); }
+		}
+
+		void ResolvePendingReferences ()
 		{
-			objects.Push (obj);
-			object_instantiated = true;
-			arguments.Clear ();
-			factory_method = null;
+			foreach (var fixup in pending_name_references) {
+				foreach (var name in fixup.Names) {
+					bool isFullyInitialized;
+					// FIXME: sort out relationship between name_scope and name_resolver. (unify to name_resolver, probably)
+					var obj = name_scope.FindName (name) ?? name_resolver.Resolve (name, out isFullyInitialized);
+					if (obj == null)
+						throw new XamlObjectWriterException (String.Format ("Unresolved object reference '{0}' was found", name));
+					if (!AddToCollectionIfAppropriate (fixup.ParentType, fixup.ParentMember, fixup.ParentValue, obj, null)) // FIXME: is keyObj always null?
+						fixup.ParentMember.Invoker.SetValue (fixup.ParentValue, obj);
+				}
+			}
 		}
 	}
 }
diff --git a/mcs/class/System.Xaml/System.Xaml/XamlObjectWriterException.cs b/mcs/class/System.Xaml/System.Xaml/XamlObjectWriterException.cs
index 17708cc..b5ce0b3 100644
--- a/mcs/class/System.Xaml/System.Xaml/XamlObjectWriterException.cs
+++ b/mcs/class/System.Xaml/System.Xaml/XamlObjectWriterException.cs
@@ -27,7 +27,9 @@ using System.Runtime.Serialization;
 
 namespace System.Xaml
 {
+#if !NET_2_1
 	[Serializable]
+#endif
 	public class XamlObjectWriterException : XamlException
 	{
 		public XamlObjectWriterException ()
@@ -45,9 +47,11 @@ namespace System.Xaml
 		{
 		}
 
+#if !NET_2_1
 		protected XamlObjectWriterException (SerializationInfo info, StreamingContext context)
 			: base (info, context)
 		{
 		}
+#endif
 	}
 }
diff --git a/mcs/class/System.Xaml/System.Xaml/XamlObjectWriterSettings.cs b/mcs/class/System.Xaml/System.Xaml/XamlObjectWriterSettings.cs
index ba5ff21..559373a 100644
--- a/mcs/class/System.Xaml/System.Xaml/XamlObjectWriterSettings.cs
+++ b/mcs/class/System.Xaml/System.Xaml/XamlObjectWriterSettings.cs
@@ -25,7 +25,9 @@ using System.Collections.Generic;
 using System.ComponentModel;
 using System.Reflection;
 using System.Windows.Markup;
+#if !NET_2_1
 using System.Xaml.Permissions;
+#endif
 using System.Xaml.Schema;
 
 namespace System.Xaml
@@ -40,7 +42,9 @@ namespace System.Xaml
 			: base (settings)
 		{
 			var s = settings;
+#if !NET_2_1
 			AccessLevel = s.AccessLevel;
+#endif
 			AfterBeginInitHandler = s.AfterBeginInitHandler;
 			AfterEndInitHandler = s.AfterEndInitHandler;
 			AfterPropertiesHandler = s.AfterPropertiesHandler;
@@ -55,19 +59,29 @@ namespace System.Xaml
 			XamlSetValueHandler = s.XamlSetValueHandler;
 		}
 
-		public XamlAccessLevel AccessLevel { get; set; }
 		public EventHandler<XamlObjectEventArgs> AfterBeginInitHandler { get; set; }
 		public EventHandler<XamlObjectEventArgs> AfterEndInitHandler { get; set; }
 		public EventHandler<XamlObjectEventArgs> AfterPropertiesHandler { get; set; }
 		public EventHandler<XamlObjectEventArgs> BeforePropertiesHandler { get; set; }
+		public EventHandler<XamlSetValueEventArgs> XamlSetValueHandler { get; set; }
+
+#if !NET_2_1
+		[MonoTODO ("Ignored")]
+		public XamlAccessLevel AccessLevel { get; set; }
+#endif
+		[MonoTODO ("Ignored")]
 		public INameScope ExternalNameScope { get; set; }
+		[MonoTODO ("Ignored")]
 		public bool IgnoreCanConvert { get; set; }
+		[MonoTODO ("Ignored")]
 		public bool PreferUnconvertedDictionaryKeys { get; set; }
+		[MonoTODO ("Ignored")]
 		public bool RegisterNamesOnExternalNamescope { get; set; }
+		[MonoTODO ("Ignored")]
 		public object RootObjectInstance { get; set; }
+		[MonoTODO ("Ignored")]
 		public bool SkipDuplicatePropertyCheck { get; set; }
+		[MonoTODO ("Ignored")]
 		public bool SkipProvideValueOnRoot { get; set; }
-		public EventHandler<XamlSetValueEventArgs> XamlSetValueHandler { get; set; }
-
 	}
 }
diff --git a/mcs/class/System.Xaml/System.Xaml/XamlParseException.cs b/mcs/class/System.Xaml/System.Xaml/XamlParseException.cs
index 4bb8340..1ae1667 100644
--- a/mcs/class/System.Xaml/System.Xaml/XamlParseException.cs
+++ b/mcs/class/System.Xaml/System.Xaml/XamlParseException.cs
@@ -27,7 +27,9 @@ using System.Runtime.Serialization;
 
 namespace System.Xaml
 {
+#if !NET_2_1
 	[Serializable]
+#endif
 	public class XamlParseException : XamlException
 	{
 		public XamlParseException ()
@@ -45,9 +47,11 @@ namespace System.Xaml
 		{
 		}
 
+#if !NET_2_1
 		protected XamlParseException (SerializationInfo info, StreamingContext context)
 			: base (info, context)
 		{
 		}
+#endif
 	}
 }
diff --git a/mcs/class/System.Xaml/System.Xaml/XamlReader.cs b/mcs/class/System.Xaml/System.Xaml/XamlReader.cs
index 039daab..0e60751 100644
--- a/mcs/class/System.Xaml/System.Xaml/XamlReader.cs
+++ b/mcs/class/System.Xaml/System.Xaml/XamlReader.cs
@@ -82,7 +82,7 @@ namespace System.Xaml
 						continue;
 					}
 				}
-				return;
+
 			default:
 				Read ();
 				return;
diff --git a/mcs/class/System.Xaml/System.Xaml/XamlSchemaContext.cs b/mcs/class/System.Xaml/System.Xaml/XamlSchemaContext.cs
index 7a9d13b..62e8098 100644
--- a/mcs/class/System.Xaml/System.Xaml/XamlSchemaContext.cs
+++ b/mcs/class/System.Xaml/System.Xaml/XamlSchemaContext.cs
@@ -57,8 +57,10 @@ namespace System.Xaml
 		{
 			if (referenceAssemblies != null)
 				reference_assemblies = new List<Assembly> (referenceAssemblies);
+#if !NET_2_1
 			else
 				AppDomain.CurrentDomain.AssemblyLoad += OnAssemblyLoaded;
+#endif
 
 			if (settings == null)
 				return;
@@ -67,11 +69,13 @@ namespace System.Xaml
 			SupportMarkupExtensionsWithDuplicateArity = settings.SupportMarkupExtensionsWithDuplicateArity;
 		}
 
+#if !NET_2_1
 		~XamlSchemaContext ()
 		{
 			if (reference_assemblies == null)
 				AppDomain.CurrentDomain.AssemblyLoad -= OnAssemblyLoaded;
 		}
+#endif
 
 		IList<Assembly> reference_assemblies;
 
@@ -81,6 +85,7 @@ namespace System.Xaml
 		Dictionary<string,string> compat_nss;
 		Dictionary<string,List<XamlType>> all_xaml_types;
 		XamlType [] empty_xaml_types = new XamlType [0];
+		List<XamlType> run_time_types = new List<XamlType> ();
 
 		public bool FullyQualifyAssemblyNamesInClrNamespaces { get; private set; }
 
@@ -89,7 +94,11 @@ namespace System.Xaml
 		}
 
 		IEnumerable<Assembly> AssembliesInScope {
+#if MOONLIGHT
+			get { return reference_assemblies; }
+#else
 			get { return reference_assemblies ?? AppDomain.CurrentDomain.GetAssemblies (); }
+#endif
 		}
 
 		public bool SupportMarkupExtensionsWithDuplicateArity { get; private set; }
@@ -155,16 +164,18 @@ namespace System.Xaml
 			return t;
 		}
 		
-		Dictionary<Type,XamlType> xaml_types = new Dictionary<Type,XamlType> ();
-		
 		public virtual XamlType GetXamlType (Type type)
 		{
-			XamlType t;
-			if (!xaml_types.TryGetValue (type, out t)) {
-				t = new XamlType (type, this);
-				xaml_types.Add (type, t);
+			XamlType xt = run_time_types.FirstOrDefault (t => t.UnderlyingType == type);
+			if (xt == null)
+				foreach (var ns in GetAllXamlNamespaces ())
+					if ((xt = GetAllXamlTypes (ns).FirstOrDefault (t => t.UnderlyingType == type)) != null)
+						break;
+			if (xt == null) {
+				xt = new XamlType (type, this);
+				run_time_types.Add (xt);
 			}
-			return t;
+			return xt;
 		}
 		
 		public XamlType GetXamlType (XamlTypeName xamlTypeName)
@@ -191,23 +202,43 @@ namespace System.Xaml
 
 			XamlType ret;
 			if (xamlNamespace == XamlLanguage.Xaml2006Namespace) {
-				ret = XamlLanguage.GetSpecialXaml2006Type (name);
+				ret = XamlLanguage.SpecialNames.Find (name, xamlNamespace);
 				if (ret == null)
 					ret = XamlLanguage.AllTypes.FirstOrDefault (t => TypeMatches (t, xamlNamespace, name, typeArguments));
 				if (ret != null)
 					return ret;
 			}
-			return GetAllXamlTypes (xamlNamespace).FirstOrDefault (t => TypeMatches (t, xamlNamespace, name, typeArguments));
+			ret = run_time_types.FirstOrDefault (t => TypeMatches (t, xamlNamespace, name, typeArguments));
+			if (ret == null)
+				ret = GetAllXamlTypes (xamlNamespace).FirstOrDefault (t => TypeMatches (t, xamlNamespace, name, typeArguments));
+
+			if (reference_assemblies == null) {
+				var type = ResolveXamlTypeName (xamlNamespace, name, typeArguments);
+				if (type != null)
+					ret = GetXamlType (type);
+			}
+
+			// If the type was not found, it just returns null.
+			return ret;
 		}
 
 		bool TypeMatches (XamlType t, string ns, string name, XamlType [] typeArgs)
 		{
-			return t.PreferredXamlNamespace == ns && t.Name == name && t.TypeArguments.ListEquals (typeArgs);
+			if (t.PreferredXamlNamespace == ns && t.Name == name && t.TypeArguments.ListEquals (typeArgs))
+				return true;
+			if (t.IsMarkupExtension)
+				return t.PreferredXamlNamespace == ns && t.Name.Substring (0, t.Name.Length - 9) == name && t.TypeArguments.ListEquals (typeArgs);
+			else
+				return false;
 		}
 
 		protected internal virtual Assembly OnAssemblyResolve (string assemblyName)
 		{
-			return null;
+#if MOONLIGHT
+			return Assembly.Load (assemblyName);
+#else
+			return Assembly.LoadWithPartialName (assemblyName);
+#endif
 		}
 
 		public virtual bool TryGetCompatibleXamlNamespace (string xamlNamespace, out string compatibleNamespace)
@@ -222,6 +253,7 @@ namespace System.Xaml
 			return compat_nss.TryGetValue (xamlNamespace, out compatibleNamespace);
 		}
 
+#if !NET_2_1
 		void OnAssemblyLoaded (object o, AssemblyLoadEventArgs e)
 		{
 			if (reference_assemblies != null)
@@ -236,6 +268,7 @@ namespace System.Xaml
 			if (all_xaml_types != null)
 				FillAllXamlTypes (e.LoadedAssembly);
 		}
+#endif
 		
 		// cache updater methods
 		void FillXamlNamespaces (Assembly ass)
@@ -266,5 +299,58 @@ namespace System.Xaml
 						l.Add (GetXamlType (t));
 			}
 		}
+
+		// XamlTypeName -> Type resolution
+
+		static readonly int clr_ns_len = "clr-namespace:".Length;
+		static readonly int clr_ass_len = "assembly=".Length;
+
+		Type ResolveXamlTypeName (string xmlNamespace, string xmlLocalName, IList<XamlType> typeArguments)
+		{
+			string ns = xmlNamespace;
+			string name = xmlLocalName;
+
+			if (ns == XamlLanguage.Xaml2006Namespace) {
+				var xt = XamlLanguage.SpecialNames.Find (name, ns);
+				if (xt == null)
+					xt = XamlLanguage.AllTypes.FirstOrDefault (t => t.Name == xmlLocalName);
+				if (xt == null)
+					throw new FormatException (string.Format ("There is no type '{0}' in XAML namespace", name));
+				return xt.UnderlyingType;
+			}
+			else if (!ns.StartsWith ("clr-namespace:", StringComparison.Ordinal))
+				return null;
+
+			Type [] genArgs = null;
+			if (typeArguments != null && typeArguments.Count > 0) {
+				var xtns = typeArguments;
+				genArgs = (from t in typeArguments select t.UnderlyingType).ToArray ();
+				if (genArgs.Any (t => t == null))
+					return null;
+			}
+
+			// convert xml namespace to clr namespace and assembly
+			string [] split = ns.Split (';');
+			if (split.Length != 2 || split [0].Length < clr_ns_len || split [1].Length <= clr_ass_len)
+				throw new XamlParseException (string.Format ("Cannot resolve runtime namespace from XML namespace '{0}'", ns));
+			string tns = split [0].Substring (clr_ns_len);
+			string aname = split [1].Substring (clr_ass_len);
+
+			string taqn = GetTypeName (tns, name, genArgs);
+			var ass = OnAssemblyResolve (aname);
+			// MarkupExtension type could omit "Extension" part in XML name.
+			Type ret = ass == null ? null : ass.GetType (taqn) ?? ass.GetType (GetTypeName (tns, name + "Extension", genArgs));
+			if (ret == null)
+				throw new XamlParseException (string.Format ("Cannot resolve runtime type from XML namespace '{0}', local name '{1}' with {2} type arguments ({3})", ns, name, typeArguments !=null ? typeArguments.Count : 0, taqn));
+			return genArgs == null ? ret : ret.MakeGenericType (genArgs);
+		}
+		
+		static string GetTypeName (string tns, string name, Type [] genArgs)
+		{
+			string tfn = tns.Length > 0 ? tns + '.' + name : name;
+			if (genArgs != null)
+				tfn += "`" + genArgs.Length;
+			return tfn;
+		}
 	}
 }
diff --git a/mcs/class/System.Xaml/System.Xaml/XamlSchemaException.cs b/mcs/class/System.Xaml/System.Xaml/XamlSchemaException.cs
index 78de4f8..9681927 100644
--- a/mcs/class/System.Xaml/System.Xaml/XamlSchemaException.cs
+++ b/mcs/class/System.Xaml/System.Xaml/XamlSchemaException.cs
@@ -27,7 +27,9 @@ using System.Runtime.Serialization;
 
 namespace System.Xaml
 {
+#if !NET_2_1
 	[Serializable]
+#endif
 	public class XamlSchemaException : XamlException
 	{
 		public XamlSchemaException ()
@@ -45,9 +47,11 @@ namespace System.Xaml
 		{
 		}
 
+#if !NET_2_1
 		protected XamlSchemaException (SerializationInfo info, StreamingContext context)
 			: base (info, context)
 		{
 		}
+#endif
 	}
 }
diff --git a/mcs/class/System.Xaml/System.Xaml/XamlServices.cs b/mcs/class/System.Xaml/System.Xaml/XamlServices.cs
old mode 100644
new mode 100755
index b70f876..cf686d8
--- a/mcs/class/System.Xaml/System.Xaml/XamlServices.cs
+++ b/mcs/class/System.Xaml/System.Xaml/XamlServices.cs
@@ -71,20 +71,24 @@ namespace System.Xaml
 			return sw.ToString ();
 		}
 
+#if !NET_2_1
 		public static void Save (string fileName, object instance)
 		{
-			using (var xw = XmlWriter.Create (fileName, new XmlWriterSettings () { OmitXmlDeclaration = true }))
+			using (var xw = XmlWriter.Create (fileName, new XmlWriterSettings () { OmitXmlDeclaration = true, Indent = true }))
 				Save (xw, instance);
 		}
+#endif
 
 		public static void Save (Stream stream, object instance)
 		{
-			Save (new XamlXmlWriter (stream, new XamlSchemaContext ()), instance);
+			using (var xw = XmlWriter.Create (stream, new XmlWriterSettings () { OmitXmlDeclaration = true, Indent = true }))
+				Save (xw, instance);
 		}
 
 		public static void Save (TextWriter textWriter, object instance)
 		{
-			Save (new XamlXmlWriter (textWriter, new XamlSchemaContext ()), instance);
+			using (var xw = XmlWriter.Create (textWriter, new XmlWriterSettings () { OmitXmlDeclaration = true, Indent = true }))
+				Save (xw, instance);
 		}
 
 		public static void Save (XmlWriter xmlWriter, object instance)
diff --git a/mcs/class/System.Xaml/System.Xaml/XamlType.cs b/mcs/class/System.Xaml/System.Xaml/XamlType.cs
old mode 100644
new mode 100755
index 9113484..ac31f2c
--- a/mcs/class/System.Xaml/System.Xaml/XamlType.cs
+++ b/mcs/class/System.Xaml/System.Xaml/XamlType.cs
@@ -28,6 +28,7 @@ using System.Linq;
 using System.Reflection;
 using System.Windows.Markup;
 using System.Xaml.Schema;
+using System.Xml.Serialization;
 
 namespace System.Xaml
 {
@@ -38,9 +39,9 @@ namespace System.Xaml
 		{
 		}
 
-		static readonly Type [] predefined_types = {
-				typeof (XData), typeof (Uri), typeof (TimeSpan), typeof (PropertyDefinition), typeof (MemberDefinition), typeof (Reference)
-			};
+//		static readonly Type [] predefined_types = {
+//				typeof (XData), typeof (Uri), typeof (TimeSpan), typeof (PropertyDefinition), typeof (MemberDefinition), typeof (Reference)
+//			};
 
 		public XamlType (Type underlyingType, XamlSchemaContext schemaContext, XamlTypeInvoker invoker)
 			: this (schemaContext, invoker)
@@ -52,15 +53,26 @@ namespace System.Xaml
 
 			XamlType xt;
 			if (XamlLanguage.InitializingTypes) {
-				Name = type.GetXamlName ();
+				// These are special. Only XamlLanguage members are with shorthand name.
+				if (type == typeof (PropertyDefinition))
+					Name = "Property";
+				else if (type == typeof (MemberDefinition))
+					Name = "Member";
+				else
+					Name = GetXamlName (type);
 				PreferredXamlNamespace = XamlLanguage.Xaml2006Namespace;
 			} else if ((xt = XamlLanguage.AllTypes.FirstOrDefault (t => t.UnderlyingType == type)) != null) {
 				Name = xt.Name;
 				PreferredXamlNamespace = XamlLanguage.Xaml2006Namespace;
 			} else {
-				Name = type.GetXamlName ();
+				Name = GetXamlName (type);
 				PreferredXamlNamespace = String.Format ("clr-namespace:{0};assembly={1}", type.Namespace, type.Assembly.GetName ().Name);
 			}
+			if (type.IsGenericType) {
+				TypeArguments = new List<XamlType> ();
+				foreach (var gta in type.GetGenericArguments ())
+					TypeArguments.Add (schemaContext.GetXamlType (gta));
+			}
 		}
 
 		public XamlType (string unknownTypeNamespace, string unknownTypeName, IList<XamlType> typeArguments, XamlSchemaContext schemaContext)
@@ -232,6 +244,14 @@ namespace System.Xaml
 			get { return LookupValueSerializer (); }
 		}
 
+		internal string GetInternalXmlName ()
+		{
+			if (IsMarkupExtension && Name.EndsWith ("Extension", StringComparison.Ordinal))
+				return Name.Substring (0, Name.Length - 9);
+			var stn = XamlLanguage.SpecialNames.FirstOrDefault (s => s.Type == this);
+			return stn != null ? stn.Name : Name;
+		}
+
 		public static bool operator == (XamlType left, XamlType right)
 		{
 			return IsNull (left) ? IsNull (right) : left.Equals (right);
@@ -249,6 +269,7 @@ namespace System.Xaml
 		
 		public bool Equals (XamlType other)
 		{
+			// It does not compare XamlSchemaContext.
 			return !IsNull (other) &&
 				UnderlyingType == other.UnderlyingType &&
 				Name == other.Name &&
@@ -274,12 +295,16 @@ namespace System.Xaml
 
 		public override string ToString ()
 		{
-			return String.IsNullOrEmpty (PreferredXamlNamespace) ? Name : String.Concat ("{", PreferredXamlNamespace, "}", Name);
+			return new XamlTypeName (this).ToString ();
+			//return String.IsNullOrEmpty (PreferredXamlNamespace) ? Name : String.Concat ("{", PreferredXamlNamespace, "}", Name);
 		}
 
 		public virtual bool CanAssignTo (XamlType xamlType)
 		{
-			throw new NotImplementedException ();
+			if (this.UnderlyingType == null)
+				return xamlType == XamlLanguage.Object;
+			var ut = xamlType.UnderlyingType ?? typeof (object);
+			return ut.IsAssignableFrom (UnderlyingType);
 		}
 
 		public XamlMember GetAliasedProperty (XamlDirective directive)
@@ -304,7 +329,7 @@ namespace System.Xaml
 
 		public XamlMember GetMember (string name)
 		{
-			return LookupMember (name, false);
+			return LookupMember (name, true);
 		}
 
 		public IList<XamlType> GetPositionalParameters (int parameterCount)
@@ -351,31 +376,114 @@ namespace System.Xaml
 		protected virtual IEnumerable<XamlMember> LookupAllAttachableMembers ()
 		{
 			if (UnderlyingType == null)
-				return BaseType != null ? BaseType.GetAllMembers () : null;
-			return DoLookupAllAttachableMembers ();
+				return BaseType != null ? BaseType.GetAllAttachableMembers () : empty_array;
+			if (all_attachable_members_cache == null) {
+				all_attachable_members_cache = new List<XamlMember> (DoLookupAllAttachableMembers ());
+				all_attachable_members_cache.Sort (TypeExtensionMethods.CompareMembers);
+			}
+			return all_attachable_members_cache;
 		}
 
 		IEnumerable<XamlMember> DoLookupAllAttachableMembers ()
 		{
-			yield break; // FIXME: what to return here?
+			// based on http://msdn.microsoft.com/en-us/library/ff184560.aspx
+			var bf = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static;
+
+			var gl = new Dictionary<string,MethodInfo> ();
+			var sl = new Dictionary<string,MethodInfo> ();
+			var al = new Dictionary<string,MethodInfo> ();
+			//var rl = new Dictionary<string,MethodInfo> ();
+			var nl = new List<string> ();
+			foreach (var mi in UnderlyingType.GetMethods (bf)) {
+				string name = null;
+				if (mi.Name.StartsWith ("Get", StringComparison.Ordinal)) {
+					if (mi.ReturnType == typeof (void))
+						continue;
+					var args = mi.GetParameters ();
+					if (args.Length != 1)
+						continue;
+					name = mi.Name.Substring (3);
+					gl.Add (name, mi);
+				} else if (mi.Name.StartsWith ("Set", StringComparison.Ordinal)) {
+					// looks like the return type is *ignored*
+					//if (mi.ReturnType != typeof (void))
+					//	continue;
+					var args = mi.GetParameters ();
+					if (args.Length != 2)
+						continue;
+					name = mi.Name.Substring (3);
+					sl.Add (name, mi);
+				} else if (mi.Name.EndsWith ("Handler", StringComparison.Ordinal)) {
+					var args = mi.GetParameters ();
+					if (args.Length != 2)
+						continue;
+					if (mi.Name.StartsWith ("Add", StringComparison.Ordinal)) {
+						name = mi.Name.Substring (3, mi.Name.Length - 3 - 7);
+						al.Add (name, mi);
+					}/* else if (mi.Name.StartsWith ("Remove", StringComparison.Ordinal)) {
+						name = mi.Name.Substring (6, mi.Name.Length - 6 - 7);
+						rl.Add (name, mi);
+					}*/
+				}
+				if (name != null && !nl.Contains (name))
+					nl.Add (name);
+			}
+
+			foreach (var name in nl) {
+				MethodInfo m;
+				var g = gl.TryGetValue (name, out m) ? m : null;
+				var s = sl.TryGetValue (name, out m) ? m : null;
+				if (g != null || s != null)
+					yield return new XamlMember (name, g, s, SchemaContext);
+				var a = al.TryGetValue (name, out m) ? m : null;
+				//var r = rl.TryGetValue (name, out m) ? m : null;
+				if (a != null)
+					yield return new XamlMember (name, a, SchemaContext);
+			}
 		}
 
+		static readonly XamlMember [] empty_array = new XamlMember [0];
+
 		protected virtual IEnumerable<XamlMember> LookupAllMembers ()
 		{
 			if (UnderlyingType == null)
-				return BaseType != null ? BaseType.GetAllMembers () : null;
-			if (all_members_cache == null)
+				return BaseType != null ? BaseType.GetAllMembers () : empty_array;
+			if (all_members_cache == null) {
 				all_members_cache = new List<XamlMember> (DoLookupAllMembers ());
+				all_members_cache.Sort (TypeExtensionMethods.CompareMembers);
+			}
 			return all_members_cache;
 		}
-
+		
 		List<XamlMember> all_members_cache;
+		List<XamlMember> all_attachable_members_cache;
 
 		IEnumerable<XamlMember> DoLookupAllMembers ()
 		{
-			foreach (var pi in UnderlyingType.GetProperties ())
-				if (pi.CanRead && pi.CanWrite && pi.GetIndexParameters ().Length == 0)
+			// This is a hack that is likely required due to internal implementation difference in System.Uri. Our Uri has two readonly collection properties
+			if (this == XamlLanguage.Uri)
+				yield break;
+
+			var bf = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance;
+
+			foreach (var pi in UnderlyingType.GetProperties (bf))
+				if (pi.CanRead && (pi.CanWrite || IsCollectionType (pi.PropertyType) || typeof (IXmlSerializable).IsAssignableFrom (pi.PropertyType)) && pi.GetIndexParameters ().Length == 0)
 					yield return new XamlMember (pi, SchemaContext);
+			foreach (var ei in UnderlyingType.GetEvents (bf))
+				yield return new XamlMember (ei, SchemaContext);
+		}
+		
+		static bool IsPublicAccessor (MethodInfo mi)
+		{
+			return mi != null && mi.IsPublic;
+		}
+
+		bool IsCollectionType (Type type)
+		{
+			if (type == null)
+				return false;
+			var xt = SchemaContext.GetXamlType (type);
+			return xt.LookupCollectionKind () != XamlCollectionKind.None;
 		}
 
 		protected virtual IList<XamlType> LookupAllowedContentTypes ()
@@ -397,7 +505,7 @@ namespace System.Xaml
 
 		protected virtual XamlMember LookupAttachableMember (string name)
 		{
-			throw new NotImplementedException ();
+			return GetAllAttachableMembers ().FirstOrDefault (m => m.Name == name);
 		}
 
 		[MonoTODO]
@@ -424,7 +532,7 @@ namespace System.Xaml
 			if (type.ImplementsAnyInterfacesOf (typeof (IDictionary), typeof (IDictionary<,>)))
 				return XamlCollectionKind.Dictionary;
 
-			if (type.ImplementsAnyInterfacesOf (typeof (ICollection), typeof (ICollection<>)))
+			if (type.ImplementsAnyInterfacesOf (typeof (IList), typeof (ICollection<>)))
 				return XamlCollectionKind.Collection;
 
 			return XamlCollectionKind.None;
@@ -462,10 +570,10 @@ namespace System.Xaml
 
 		protected virtual IList<XamlType> LookupContentWrappers ()
 		{
-			if (CustomAttributeProvider == null)
+			if (GetCustomAttributeProvider () == null)
 				return null;
 
-			var arr = CustomAttributeProvider.GetCustomAttributes (typeof (ContentWrapperAttribute), false);
+			var arr = GetCustomAttributeProvider ().GetCustomAttributes (typeof (ContentWrapperAttribute), false);
 			if (arr == null || arr.Length == 0)
 				return null;
 			var l = new XamlType [arr.Length];
@@ -474,14 +582,16 @@ namespace System.Xaml
 			return l;
 		}
 
-		internal ICustomAttributeProvider CustomAttributeProvider {
-			get { return LookupCustomAttributeProvider (); }
+		internal ICustomAttributeProvider GetCustomAttributeProvider ()
+		{
+			return LookupCustomAttributeProvider ();
 		}
 
-		protected virtual ICustomAttributeProvider LookupCustomAttributeProvider ()
+		protected internal virtual ICustomAttributeProvider LookupCustomAttributeProvider ()
 		{
 			return UnderlyingType;
 		}
+		
 		protected virtual XamlValueConverter<XamlDeferringLoader> LookupDeferringLoader ()
 		{
 			throw new NotImplementedException ();
@@ -546,15 +656,18 @@ namespace System.Xaml
 
 		protected virtual bool LookupIsXData ()
 		{
-			// huh? XamlLanguage.XData.IsXData returns false(!)
-			// return typeof (XData).IsAssignableFrom (UnderlyingType);
-			return false;
+			return CanAssignTo (SchemaContext.GetXamlType (typeof (IXmlSerializable)));
 		}
 
 		protected virtual XamlType LookupItemType ()
 		{
 			if (IsArray)
 				return new XamlType (type.GetElementType (), SchemaContext);
+			if (IsDictionary) {
+				if (!IsGeneric)
+					return new XamlType (typeof (object), SchemaContext);
+				return new XamlType (type.GetGenericArguments () [1], SchemaContext);
+			}
 			if (!IsCollection)
 				return null;
 			if (!IsGeneric)
@@ -579,13 +692,8 @@ namespace System.Xaml
 
 		protected virtual XamlMember LookupMember (string name, bool skipReadOnlyCheck)
 		{
-			var pi = UnderlyingType.GetProperty (name);
-			if (pi != null && (skipReadOnlyCheck || pi.CanWrite))
-				return new XamlMember (pi, SchemaContext);
-			var ei = UnderlyingType.GetEvent (name);
-			if (ei != null)
-				return new XamlMember (ei, SchemaContext);
-			return null;
+			// FIXME: verify if this does not filter out events.
+			return GetAllMembers ().FirstOrDefault (m => m.Name == name && (skipReadOnlyCheck || !m.IsReadOnly || m.Type.IsCollection || m.Type.IsDictionary || m.Type.IsArray));
 		}
 
 		protected virtual IList<XamlType> LookupPositionalParameters (int parameterCount)
@@ -597,7 +705,7 @@ namespace System.Xaml
 			// If there is, then return its type.
 			if (parameterCount == 1) {
 				foreach (var xm in GetAllMembers ()) {
-					var ca = xm.CustomAttributeProvider.GetCustomAttribute<ConstructorArgumentAttribute> (false);
+					var ca = xm.GetCustomAttributeProvider ().GetCustomAttribute<ConstructorArgumentAttribute> (false);
 					if (ca != null)
 						return new XamlType [] {xm.Type};
 				}
@@ -652,16 +760,21 @@ namespace System.Xaml
 			if (t == typeof (Type))
 				t = typeof (TypeExtension);
 
-			var a = CustomAttributeProvider.GetCustomAttribute<TypeConverterAttribute> (false);
-			if (a != null)
-				return SchemaContext.GetValueConverter<TypeConverter> (Type.GetType (a.ConverterTypeName), this);
+			var a = GetCustomAttributeProvider ();
+			var ca = a != null ? a.GetCustomAttribute<TypeConverterAttribute> (false) : null;
+			if (ca != null)
+				return SchemaContext.GetValueConverter<TypeConverter> (Type.GetType (ca.ConverterTypeName), this);
 
-			if (t == typeof (object))
-				return SchemaContext.GetValueConverter<TypeConverter> (typeof (TypeConverter), this);
+			if (t == typeof (object)) // This is a special case. ConverterType is null.
+				return SchemaContext.GetValueConverter<TypeConverter> (null, this);
 
 			// It's still not decent to check CollectionConverter.
-			var tct = TypeDescriptor.GetConverter (t).GetType ();
+			var tct = t.GetTypeConverter ().GetType ();
+#if MOONLIGHT
+			if (tct != typeof (TypeConverter) && tct.Name != "CollectionConverter" && tct.Name != "ReferenceConverter")
+#else
 			if (tct != typeof (TypeConverter) && tct != typeof (CollectionConverter) && tct != typeof (ReferenceConverter))
+#endif
 				return SchemaContext.GetValueConverter<TypeConverter> (tct, this);
 			return null;
 		}
@@ -681,7 +794,7 @@ namespace System.Xaml
 
 		protected virtual XamlValueConverter<ValueSerializer> LookupValueSerializer ()
 		{
-			return LookupValueSerializer (this, CustomAttributeProvider);
+			return LookupValueSerializer (this, GetCustomAttributeProvider ());
 		}
 
 		internal static XamlValueConverter<ValueSerializer> LookupValueSerializer (XamlType targetType, ICustomAttributeProvider provider)
@@ -708,9 +821,17 @@ namespace System.Xaml
 			return null;
 		}
 
-		internal IEnumerable<XamlMember> GetConstructorArguments ()
+		static string GetXamlName (Type type)
 		{
-			return GetAllMembers ().Where (m => m.UnderlyingMember != null && m.CustomAttributeProvider.GetCustomAttribute<ConstructorArgumentAttribute> (false) != null);
+			string n;
+			if (!type.IsNestedPublic && !type.IsNestedAssembly && !type.IsNestedPrivate)
+				n = type.Name;
+			else
+				n = GetXamlName (type.DeclaringType) + "+" + type.Name;
+			if (type.IsGenericType && !type.ContainsGenericParameters) // the latter condition is to filter out "nested non-generic type within generic type".
+				return n.Substring (0, n.IndexOf ('`'));
+			else
+				return n;
 		}
 	}
 }
diff --git a/mcs/class/System.Xaml/System.Xaml/XamlWriterInternalBase.cs b/mcs/class/System.Xaml/System.Xaml/XamlWriterInternalBase.cs
new file mode 100644
index 0000000..f083ba0
--- /dev/null
+++ b/mcs/class/System.Xaml/System.Xaml/XamlWriterInternalBase.cs
@@ -0,0 +1,246 @@
+//
+// Copyright (C) 2010 Novell Inc. http://novell.com
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Globalization;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Windows.Markup;
+using System.Xaml;
+using System.Xaml.Schema;
+using System.Xml;
+
+#if DOTNET
+namespace Mono.Xaml
+#else
+namespace System.Xaml
+#endif
+{
+	internal abstract class XamlWriterInternalBase
+	{
+		public XamlWriterInternalBase (XamlSchemaContext schemaContext, XamlWriterStateManager manager)
+		{
+			this.sctx = schemaContext;
+			this.manager = manager;
+			var p = new PrefixLookup (sctx) { IsCollectingNamespaces = true }; // it does not raise unknown namespace error.
+			service_provider = new ValueSerializerContext (p, schemaContext);
+		}
+
+		XamlSchemaContext sctx;
+		XamlWriterStateManager manager;
+
+		internal IValueSerializerContext service_provider;
+
+		internal Stack<ObjectState> object_states = new Stack<ObjectState> ();
+		internal PrefixLookup prefix_lookup {
+			get { return (PrefixLookup) service_provider.GetService (typeof (INamespacePrefixLookup)); }
+		}
+
+		List<NamespaceDeclaration> namespaces {
+			get { return prefix_lookup.Namespaces; }
+		}
+
+		internal class ObjectState
+		{
+			public XamlType Type;
+			public bool IsGetObject;
+			public int PositionalParameterIndex = -1;
+
+			public string FactoryMethod;
+			public object Value;
+			public object KeyValue;
+			public List<MemberAndValue> WrittenProperties = new List<MemberAndValue> ();
+			public bool IsInstantiated;
+		}
+		
+		internal class MemberAndValue
+		{
+			public MemberAndValue (XamlMember xm)
+			{
+				Member = xm;
+			}
+
+			public XamlMember Member;
+			public object Value;
+			public AllowedMemberLocations OccuredAs = AllowedMemberLocations.None;
+		}
+
+		public void CloseAll ()
+		{
+			while (object_states.Count > 0) {
+				switch (manager.State) {
+				case XamlWriteState.MemberDone:
+				case XamlWriteState.ObjectStarted: // StartObject without member
+					WriteEndObject ();
+					break;
+				case XamlWriteState.ValueWritten:
+				case XamlWriteState.ObjectWritten:
+				case XamlWriteState.MemberStarted: // StartMember without content
+					manager.OnClosingItem ();
+					WriteEndMember ();
+					break;
+				default:
+					throw new NotImplementedException (manager.State.ToString ()); // there shouldn't be anything though
+				}
+			}
+		}
+
+		internal string GetPrefix (string ns)
+		{
+			foreach (var nd in namespaces)
+				if (nd.Namespace == ns)
+					return nd.Prefix;
+			return null;
+		}
+
+		protected MemberAndValue CurrentMemberState {
+			get { return object_states.Count > 0 ? object_states.Peek ().WrittenProperties.LastOrDefault () : null; }
+		}
+
+		protected XamlMember CurrentMember {
+			get {
+				var mv = CurrentMemberState;
+				return mv != null ? mv.Member : null;
+			}
+		}
+
+		public void WriteGetObject ()
+		{
+			manager.GetObject ();
+
+			var xm = CurrentMember;
+
+			var state = new ObjectState () {Type = xm.Type, IsGetObject = true};
+
+			object_states.Push (state);
+
+			OnWriteGetObject ();
+		}
+
+		public void WriteNamespace (NamespaceDeclaration namespaceDeclaration)
+		{
+			if (namespaceDeclaration == null)
+				throw new ArgumentNullException ("namespaceDeclaration");
+
+			manager.Namespace ();
+
+			namespaces.Add (namespaceDeclaration);
+			OnWriteNamespace (namespaceDeclaration);
+		}
+
+		public void WriteStartObject (XamlType xamlType)
+		{
+			if (xamlType == null)
+				throw new ArgumentNullException ("xamlType");
+
+			manager.StartObject ();
+
+			var cstate = new ObjectState () {Type = xamlType};
+			object_states.Push (cstate);
+
+			OnWriteStartObject ();
+		}
+		
+		public void WriteValue (object value)
+		{
+			manager.Value ();
+
+			OnWriteValue (value);
+		}
+		
+		public void WriteStartMember (XamlMember property)
+		{
+			if (property == null)
+				throw new ArgumentNullException ("property");
+
+			manager.StartMember ();
+			if (property == XamlLanguage.PositionalParameters)
+				// this is an exception that indicates the state manager to accept more than values within this member.
+				manager.AcceptMultipleValues = true;
+
+			var state = object_states.Peek ();
+			var wpl = state.WrittenProperties;
+			if (wpl.Any (wp => wp.Member == property))
+				throw new XamlDuplicateMemberException (String.Format ("Property '{0}' is already set to this '{1}' object", property, object_states.Peek ().Type));
+			wpl.Add (new MemberAndValue (property));
+			if (property == XamlLanguage.PositionalParameters)
+				state.PositionalParameterIndex = 0;
+
+			OnWriteStartMember (property);
+		}
+		
+		public void WriteEndObject ()
+		{
+			manager.EndObject (object_states.Count > 1);
+
+			OnWriteEndObject ();
+
+			object_states.Pop ();
+		}
+
+		public void WriteEndMember ()
+		{
+			manager.EndMember ();
+
+			OnWriteEndMember ();
+			
+			var state = object_states.Peek ();
+			if (CurrentMember == XamlLanguage.PositionalParameters) {
+				manager.AcceptMultipleValues = false;
+				state.PositionalParameterIndex = -1;
+			}
+		}
+
+		protected abstract void OnWriteEndObject ();
+
+		protected abstract void OnWriteEndMember ();
+
+		protected abstract void OnWriteStartObject ();
+
+		protected abstract void OnWriteGetObject ();
+
+		protected abstract void OnWriteStartMember (XamlMember xm);
+
+		protected abstract void OnWriteValue (object value);
+
+		protected abstract void OnWriteNamespace (NamespaceDeclaration nd);
+		
+		protected string GetValueString (XamlMember xm, object value)
+		{
+			// change XamlXmlReader too if we change here.
+			if ((value as string) == String.Empty) // FIXME: there could be some escape syntax.
+				return "\"\"";
+
+			var xt = value == null ? XamlLanguage.Null : sctx.GetXamlType (value.GetType ());
+			var vs = xm.ValueSerializer ?? xt.ValueSerializer;
+			if (vs != null)
+				return vs.ConverterInstance.ConvertToString (value, service_provider);
+			else
+				throw new XamlXmlWriterException (String.Format ("Value type is '{0}' but it must be either string or any type that is convertible to string indicated by TypeConverterAttribute.", value != null ? value.GetType () : null));
+		}
+	}
+}
diff --git a/mcs/class/System.Xaml/System.Xaml/XamlWriterStateManager.cs b/mcs/class/System.Xaml/System.Xaml/XamlWriterStateManager.cs
old mode 100644
new mode 100755
index 295a20a..bc034f2
--- a/mcs/class/System.Xaml/System.Xaml/XamlWriterStateManager.cs
+++ b/mcs/class/System.Xaml/System.Xaml/XamlWriterStateManager.cs
@@ -89,6 +89,17 @@ namespace System.Xaml
 		}
 	}
 
+	internal enum XamlWriteState
+	{
+		Initial,
+		ObjectStarted,
+		MemberStarted,
+		ObjectWritten,
+		ValueWritten,
+		MemberDone,
+		End
+	}
+
 	internal abstract class XamlWriterStateManager
 	{
 		public XamlWriterStateManager (bool isXmlWriter)
@@ -97,25 +108,26 @@ namespace System.Xaml
 			allow_object_after_value = isXmlWriter;
 			allow_parallel_values = !isXmlWriter;
 			allow_empty_member = !isXmlWriter;
-		}
-
-		enum XamlWriteState
-		{
-			Initial,
-			ObjectStarted,
-			MemberStarted,
-			ObjectWritten,
-			ValueWritten,
-			MemberDone,
-			End
+			allow_multiple_results = !isXmlWriter;
 		}
 
 		// configuration
-		bool allow_ns_at_value, allow_object_after_value, allow_parallel_values, allow_empty_member;
+		bool allow_ns_at_value, allow_object_after_value, allow_parallel_values, allow_empty_member, allow_multiple_results;
 
 		// state
 		XamlWriteState state = XamlWriteState.Initial;
 		bool ns_pushed;
+		bool accept_multiple_values; // It is PositionalParameters-specific state.
+
+		public XamlWriteState State {
+			get { return state; }
+		}
+		
+		// FIXME: actually this property is a hack. It should preserve stacked flag values for each nested member in current tree state.
+		public bool AcceptMultipleValues {
+			get { return accept_multiple_values; }
+			set { accept_multiple_values = value; }
+		}
 
 		public void OnClosingItem ()
 		{
@@ -135,7 +147,7 @@ namespace System.Xaml
 		{
 			RejectNamespaces (XamlNodeType.EndObject);
 			CheckState (XamlNodeType.EndObject);
-			state = hasMoreNodes ? XamlWriteState.ObjectWritten : XamlWriteState.End;
+			state = hasMoreNodes ? XamlWriteState.ObjectWritten : allow_multiple_results ? XamlWriteState.Initial : XamlWriteState.End;
 		}
 
 		public void GetObject ()
@@ -217,7 +229,7 @@ namespace System.Xaml
 			case XamlWriteState.ValueWritten:
 				switch (next) {
 				case XamlNodeType.Value:
-					if (allow_parallel_values)
+					if (allow_parallel_values | accept_multiple_values)
 						return;
 					break;
 				case XamlNodeType.StartObject:
diff --git a/mcs/class/System.Xaml/System.Xaml/XamlXmlReader.cs b/mcs/class/System.Xaml/System.Xaml/XamlXmlReader.cs
index eab4174..c90fd21 100644
--- a/mcs/class/System.Xaml/System.Xaml/XamlXmlReader.cs
+++ b/mcs/class/System.Xaml/System.Xaml/XamlXmlReader.cs
@@ -31,7 +31,6 @@ using Pair = System.Collections.Generic.KeyValuePair<System.Xaml.XamlMember,stri
 
 namespace System.Xaml
 {
-	// FIXME: is GetObject supported by this reader?
 	public class XamlXmlReader : XamlReader, IXamlLineInfo
 	{
 		#region constructors
@@ -145,11 +144,11 @@ namespace System.Xaml
 		XamlNodeType node_type;
 		
 		object current;
-		bool inside_object_not_member, is_empty_object, is_empty_member;
+		bool inside_object_not_member, is_xdata, is_empty_object, is_empty_member;
 		Stack<XamlType> types = new Stack<XamlType> ();
+		Stack<XamlMember> members = new Stack<XamlMember> ();
 		XamlMember current_member;
 
-		List<Pair> stored_members = new List<Pair> ();
 		IEnumerator<Pair> stored_member_enumerator;
 		IXamlNamespaceResolver xaml_namespace_resolver;
 
@@ -200,9 +199,14 @@ namespace System.Xaml
 				return false;
 
 			// check this before is_empty_* so that they aren't ignored.
-			if (MoveToNextAttributeMember ())
+			if (MoveToNextStoredMember ())
 				return true;
 
+			if (is_xdata) {
+				is_xdata = false;
+				SetEndOfObject ();
+				return true;
+			}
 			if (is_empty_object) {
 				is_empty_object = false;
 				ReadEndType ();
@@ -238,29 +242,82 @@ namespace System.Xaml
 						return true;
 				r.MoveToElement ();
 				
-				if (inside_object_not_member)
-					ReadStartMember ();
-				else
-					ReadStartType ();
+				if (inside_object_not_member) {
+					if (!ReadExtraStartMember ())
+						ReadStartMember ();
+				} else {
+					if (node_type == XamlNodeType.StartMember && current_member != null && !current_member.IsWritePublic) {
+						if (current_member.Type.IsXData)
+							ReadStartXData ();
+						else if (current_member.Type.IsCollection)
+							SetGetObject ();
+						else
+							throw new XamlParseException (String.Format ("Read-only member '{0}' showed up in the source XML, and the xml contains element content that cannot be read.", current_member.Name)) { LineNumber = this.LineNumber, LinePosition = this.LinePosition };
+					}
+					else
+						ReadStartType ();
+				}
 				return true;
 
 			case XmlNodeType.EndElement:
 
 				// could be: EndObject, EndMember
-				if (inside_object_not_member)
-					ReadEndType ();
-				else
-					ReadEndMember ();
+				if (inside_object_not_member) {
+					var xm = members.Count > 0 ? members.Peek () : null;
+					if (xm != null && !xm.IsWritePublic && xm.Type.IsCollection)
+						SetEndOfObject ();
+					else
+						ReadEndType ();
+				}
+				else {
+					if (!ReadExtraEndMember ())
+						ReadEndMember ();
+				}
 				return true;
 
 			default:
 
-				// could be: Value
+				// could be: normal property Value (Initialization and ContentProperty are handled at ReadStartType()).
 				ReadValue ();
 				return true;
 			}
 		}
 
+		// returns an optional member without xml node.
+		XamlMember GetExtraMember (XamlType xt)
+		{
+			if (xt.IsCollection || xt.IsDictionary)
+				return XamlLanguage.Items;
+			if (xt.ContentProperty != null) // e.g. Array.Items
+				return xt.ContentProperty;
+			return null;
+		}
+
+		bool ReadExtraStartMember ()
+		{
+			var xm = GetExtraMember (types.Peek ());
+			if (xm != null) {
+				inside_object_not_member = false;
+				current = current_member = xm;
+				members.Push (xm);
+				node_type = XamlNodeType.StartMember;
+				return true;
+			}
+			return false;
+		}
+
+		bool ReadExtraEndMember ()
+		{
+			var xm = GetExtraMember (types.Peek ());
+			if (xm != null) {
+				inside_object_not_member = true;
+				current_member = members.Pop ();
+				node_type = XamlNodeType.EndMember;
+				return true;
+			}
+			return false;
+		}
+
 		bool CheckNextNamespace ()
 		{
 			do {
@@ -278,7 +335,30 @@ namespace System.Xaml
 			string name = r.LocalName;
 			string ns = r.NamespaceURI;
 			string typeArgNames = null;
-			var atts = ProcessAttributes ();
+			var members = new List<Pair> ();
+			var atts = ProcessAttributes (members);
+
+			// check TypeArguments to resolve Type, and remove them from the list. They don't appear as a node.
+			var l = new List<Pair> ();
+			foreach (var p in members) {
+				if (p.Key == XamlLanguage.TypeArguments) {
+					typeArgNames = p.Value;
+					l.Add (p);
+					break;
+				}
+			}
+			foreach (var p in l)
+				members.Remove (p);
+
+			XamlType xt;
+			IList<XamlTypeName> typeArgs = typeArgNames == null ? null : XamlTypeName.ParseList (typeArgNames, xaml_namespace_resolver);
+			var xtn = new XamlTypeName (ns, name, typeArgs);
+			xt = sctx.GetXamlType (xtn);
+			if (xt == null)
+				// creates name-only XamlType. Also, it does not seem that it does not store this XamlType to XamlSchemaContext (Try GetXamlType(xtn) after reading such xaml node, it will return null).
+				xt = new XamlType (ns, name, typeArgs == null ? null : typeArgs.Select<XamlTypeName,XamlType> (xxtn => sctx.GetXamlType (xxtn)).ToArray (), sctx);
+			types.Push (xt);
+			current = xt;
 
 			if (!r.IsEmptyElement) {
 				r.Read ();
@@ -290,9 +370,11 @@ namespace System.Xaml
 					case XmlNodeType.EndElement:
 						break;
 					default:
-						// this value is for Initialization
-						// FIXME: this could also be a WrappedContents
-						stored_members.Add (new Pair (XamlLanguage.Initialization, r.Value));
+						// this value is for Initialization, or Content property value
+						if (xt.ContentProperty != null)
+							members.Add (new Pair (xt.ContentProperty, r.Value));
+						else
+							members.Add (new Pair (XamlLanguage.Initialization, r.Value));
 						r.Read ();
 						continue;
 					}
@@ -302,32 +384,24 @@ namespace System.Xaml
 			else
 				is_empty_object = true;
 
-			// check TypeArguments to resolve Type, and remove them from the list. They don't appear as a node.
-			foreach (var p in stored_members) {
-				if (p.Key == XamlLanguage.TypeArguments) {
-					typeArgNames = p.Value;
-					stored_members.Remove (p);
-					break;
-				}
-			}
-
-			XamlType xt;
-			IList<XamlTypeName> typeArgs = typeArgNames == null ? null : XamlTypeName.ParseList (typeArgNames, xaml_namespace_resolver);
-			Type rtype = XamlLanguage.ResolveXamlTypeName (ns, name, typeArgs, xaml_namespace_resolver);
-			if (rtype == null)
-				throw new XamlParseException (String.Format ("Cannot resolve runtime namespace from XML namespace '{0}', local name '{1}' and type argument '{2}'", ns, name, typeArgNames));
-			xt = sctx.GetXamlType (rtype);
-			if (xt == null)
-				// FIXME: .NET just treats the node as empty!
-				// we have to sort out what to do here.
-				throw new XamlParseException (String.Format ("Failed to create a XAML type for '{0}' in namespace '{1}'", name, ns));
-			types.Push (xt);
-			current = xt;
-
 			foreach (var p in atts) {
-				var xm = xt.GetMember (p.Key);
+				int idx = p.Key.IndexOf (':');
+				string prefix = idx > 0 ? p.Key.Substring (0, idx) : String.Empty;
+				string aname = idx > 0 ? p.Key.Substring (idx + 1) : p.Key;
+				idx = aname.IndexOf ('.');
+				if (idx > 0) {
+					string apns = prefix.Length > 0 ? r.LookupNamespace (prefix) : r.NamespaceURI;
+					var apname = aname.Substring (0, idx);
+					var axtn = new XamlTypeName (apns, apname, null);
+					var at = sctx.GetXamlType (axtn);
+					var am = at.GetAttachableMember (aname.Substring (idx + 1));
+					if (am != null)
+						members.Add (new Pair (am, p.Value));
+					// ignore unknown attribute
+				}
+				var xm = xt.GetMember (aname);
 				if (xm != null)
-					stored_members.Add (new Pair (xm, p.Value));
+					members.Add (new Pair (xm, p.Value));
 				// ignore unknown attribute
 			}
 
@@ -335,24 +409,55 @@ namespace System.Xaml
 			inside_object_not_member = true;
 
 			// The next Read() results are likely directives.
-			stored_member_enumerator = stored_members.GetEnumerator ();
+			stored_member_enumerator = members.GetEnumerator ();
+		}
+
+		void ReadStartXData ()
+		{
+			var xt = XamlLanguage.XData;
+			string xdata = r.ReadInnerXml ();
+			stored_member_enumerator = new List<Pair> (new Pair [] { new Pair (xt.GetMember ("Text"), xdata) }).GetEnumerator ();
+			
+			types.Push (xt);
+			current = xt;
+			node_type = XamlNodeType.StartObject;
+			inside_object_not_member = true;
+			is_xdata = true;
 		}
 		
 		void ReadStartMember ()
 		{
+			var xt = types.Peek ();
 			var name = r.LocalName;
+			int idx = name.IndexOf ('.');
+			if (idx >= 0) {
+				string tname = name.Substring (0, idx);
+				var xtn = new XamlTypeName (r.NamespaceURI, tname, null);
+				xt = SchemaContext.GetXamlType (xtn) ?? new XamlType (xtn.Namespace, xtn.Name, null, SchemaContext);
+				name = name.Substring (idx + 1);
+			}
 
-			current_member = types.Peek ().GetMember (name);
-			current = current_member;
+			var xm = (XamlMember) FindStandardDirective (name, AllowedMemberLocations.MemberElement) ?? xt.GetAttachableMember (name) ?? xt.GetMember (name);
+			if (xm == null)
+				// create unknown member.
+				xm = new XamlMember (name, xt, false); // FIXME: not sure if isAttachable is always false.
+			current = current_member = xm;
+			members.Push (xm);
 
 			node_type = XamlNodeType.StartMember;
 			inside_object_not_member = false;
+			
+			r.Read ();
 		}
 		
 		void ReadEndType ()
 		{
 			r.Read ();
-
+			SetEndOfObject ();
+		}
+		
+		void SetEndOfObject ()
+		{
 			types.Pop ();
 			current = null;
 			node_type = XamlNodeType.EndObject;
@@ -363,7 +468,8 @@ namespace System.Xaml
 		{
 			r.Read ();
 
-			current = current_member = null;
+			current_member = members.Pop ();
+			current = null;
 			node_type = XamlNodeType.EndMember;
 			inside_object_not_member = true;
 		}
@@ -377,11 +483,24 @@ namespace System.Xaml
 
 			node_type = XamlNodeType.Value;
 		}
+		
+		void SetGetObject ()
+		{
+			current = null; // do not clear current_member as it is reused in the next Read().
+			node_type = XamlNodeType.GetObject;
+			inside_object_not_member = true;
+			types.Push (current_member.Type);
+		}
+
+		XamlDirective FindStandardDirective (string name, AllowedMemberLocations loc)
+		{
+			return XamlLanguage.AllDirectives.FirstOrDefault (dd => (dd.AllowedLocation & loc) != 0 && dd.Name == name);
+		}
 
 		// returns remaining attributes to be processed
-		Dictionary<string,string> ProcessAttributes ()
+		Dictionary<string,string> ProcessAttributes (List<Pair> members)
 		{
-			var l = stored_members;
+			var l = members;
 
 			// base
 			string xmlbase = r.GetAttribute ("base", XamlLanguage.Xml1998Namespace) ?? r.BaseURI;
@@ -392,27 +511,95 @@ namespace System.Xaml
 
 			if (r.MoveToFirstAttribute ()) {
 				do {
-					if (r.NamespaceURI == XamlLanguage.Xmlns2000Namespace)
-						continue;
-					XamlDirective d = XamlLanguage.AllDirectives.FirstOrDefault (dd => (dd.AllowedLocation & AllowedMemberLocations.Attribute) != 0 && dd.Name == r.LocalName);
-					if (d != null) {
-						l.Add (new Pair (d, r.Value));
-						continue;
-					}
-					if (r.NamespaceURI == String.Empty) {
-						atts.Add (r.LocalName, r.Value);
+					switch (r.NamespaceURI) {
+					case XamlLanguage.Xml1998Namespace:
+						switch (r.LocalName) {
+						case "base":
+							continue; // already processed.
+						case "lang":
+							l.Add (new Pair (XamlLanguage.Lang, r.Value));
+							continue;
+						case "space":
+							l.Add (new Pair (XamlLanguage.Space, r.Value));
+							continue;
+						}
+						break;
+					case XamlLanguage.Xmlns2000Namespace:
 						continue;
+					case XamlLanguage.Xaml2006Namespace:
+						XamlDirective d = FindStandardDirective (r.LocalName, AllowedMemberLocations.Attribute);
+						if (d != null) {
+							l.Add (new Pair (d, r.Value));
+							continue;
+						}
+						throw new NotSupportedException (String.Format ("Attribute '{0}' is not supported", r.Name));
+					default:
+						if (r.NamespaceURI == String.Empty) {
+							atts.Add (r.Name, r.Value);
+							continue;
+						}
+						// Should we just ignore unknown attribute in XAML namespace or any other namespaces ?
+						// Probably yes for compatibility with future version.
+						break;
 					}
-					// Should we just ignore unknown attribute in XAML namespace or any other namespaces ?
-					// Probably yes for compatibility with future version.
 				} while (r.MoveToNextAttribute ());
 				r.MoveToElement ();
 			}
 			return atts;
 		}
+		
+		IEnumerator<KeyValuePair<XamlMember,object>> markup_extension_attr_members;
+		IEnumerator<string> markup_extension_attr_values;
 
-		bool MoveToNextAttributeMember ()
+		bool MoveToNextMarkupExtensionAttributeMember ()
 		{
+			if (markup_extension_attr_members != null) {
+				switch (node_type) {
+				case XamlNodeType.StartObject:
+				case XamlNodeType.EndMember:
+					// -> next member or end object
+					if (!markup_extension_attr_members.MoveNext ()) {
+						node_type = XamlNodeType.EndObject;
+					} else {
+						current = current_member = markup_extension_attr_members.Current.Key;
+						members.Push (current_member);
+						node_type = XamlNodeType.StartMember;
+					}
+					return true;
+				case XamlNodeType.EndObject:
+					types.Pop ();
+					markup_extension_attr_members = null;
+					return false;
+				case XamlNodeType.StartMember:
+					node_type = XamlNodeType.Value;
+					current = markup_extension_attr_members.Current.Value;
+					if (current_member == XamlLanguage.PositionalParameters) {
+						markup_extension_attr_values = ((List<string>) current).GetEnumerator ();
+						goto case XamlNodeType.Value;
+					}
+					return true;
+				case XamlNodeType.Value:
+					if (markup_extension_attr_values != null) {
+						if (markup_extension_attr_values.MoveNext ())
+							current = markup_extension_attr_values.Current;
+						else {
+							node_type = XamlNodeType.EndMember;
+							markup_extension_attr_values = null;
+						}
+					}
+					else
+						node_type = XamlNodeType.EndMember;
+					return true;
+				}
+			}
+			return false;
+		}
+
+		bool MoveToNextStoredMember ()
+		{
+			if (MoveToNextMarkupExtensionAttributeMember ())
+				return true;
+
 			if (stored_member_enumerator != null) {
 				// FIXME: value might have to be deserialized.
 				switch (node_type) {
@@ -426,10 +613,22 @@ namespace System.Xaml
 					}
 					break;
 				case XamlNodeType.StartMember:
-					// -> Value
-					current = stored_member_enumerator.Current.Value;
-					node_type = XamlNodeType.Value;
+					// -> Value or StartObject (of MarkupExtension)
+					var v = stored_member_enumerator.Current.Value;
+					current = v;
+					// Try markup extension
+					// FIXME: is this rule correct?
+					if (!String.IsNullOrEmpty (v) && v [0] == '{') {
+						var pai = ParsedMarkupExtensionInfo.Parse (v, xaml_namespace_resolver, sctx);
+						types.Push (pai.Type);
+						current = pai.Type;
+						node_type = XamlNodeType.StartObject;
+						markup_extension_attr_members = pai.Arguments.GetEnumerator ();
+					}
+					else
+						node_type = XamlNodeType.Value;
 					return true;
+				case XamlNodeType.EndObject: // of MarkupExtension
 				case XamlNodeType.Value:
 					// -> EndMember
 					current = null;
@@ -438,16 +637,10 @@ namespace System.Xaml
 				}
 			}
 
-			stored_members.Clear ();
 			stored_member_enumerator = null;
 			return false;
 		}
 		
-		string GetLineString ()
-		{
-			return HasLineInfo ? String.Format (" Line {0}, at {1}", LineNumber, LinePosition) : String.Empty;
-		}
-
 		class NamespaceResolver : IXamlNamespaceResolver
 		{
 			IXmlNamespaceResolver source;
@@ -470,3 +663,4 @@ namespace System.Xaml
 		}
 	}
 }
+
diff --git a/mcs/class/System.Xaml/System.Xaml/XamlXmlWriter.cs b/mcs/class/System.Xaml/System.Xaml/XamlXmlWriter.cs
old mode 100644
new mode 100755
index 9a583aa..e6a35ac
--- a/mcs/class/System.Xaml/System.Xaml/XamlXmlWriter.cs
+++ b/mcs/class/System.Xaml/System.Xaml/XamlXmlWriter.cs
@@ -20,24 +20,43 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
+
+// To use this under .NET, compile sources as:
+//
+//	dmcs -d:DOTNET -r:System.Xaml -debug System.Xaml/XamlXmlWriter.cs System.Xaml/XamlWriterInternalBase.cs System.Xaml/TypeExtensionMethods.cs System.Xaml/XamlWriterStateManager.cs System.Xaml/XamlNameResolver.cs System.Xaml/PrefixLookup.cs System.Xaml/ValueSerializerContext.cs ../../build/common/MonoTODOAttribute.cs Test/System.Xaml/TestedTypes.cs
+
 using System;
 using System.Collections.Generic;
 using System.ComponentModel;
+using System.Globalization;
 using System.IO;
 using System.Linq;
+using System.Reflection;
+using System.Text;
 using System.Windows.Markup;
+using System.Xaml;
+using System.Xaml.Schema;
 using System.Xml;
 
-/*
-
-** Value output node type
-
-When an object contains a member:
-- it becomes an attribute when it contains a value.
-- it becomes an element when it contains an object.
-*/
+//
+// XamlWriter expects write operations in premised orders.
+// The most basic one is:
+//
+//	[NamespaceDeclaration]* -> StartObject -> [ StartMember -> Value | StartObject ... EndObject -> EndMember ]* -> EndObject
+//
+// For collections:
+//	[NamespaceDeclaration]* -> StartObject -> (members)* -> StartMember XamlLanguage.Items -> [ StartObject ... EndObject ]* -> EndMember -> EndObject
+//
+// For MarkupExtension with PositionalParameters:
+//
+//	[NamespaceDeclaration]* -> StartObject -> StartMember XamlLanguage.PositionalParameters -> [Value]* -> EndMember -> ... -> EndObject
+//
 
+#if DOTNET
+namespace Mono.Xaml
+#else
 namespace System.Xaml
+#endif
 {
 	public class XamlXmlWriter : XamlWriter
 	{
@@ -75,19 +94,15 @@ namespace System.Xaml
 			this.w = xmlWriter;
 			this.sctx = schemaContext;
 			this.settings = settings ?? new XamlXmlWriterSettings ();
-			this.manager = new XamlWriterStateManager<XamlXmlWriterException, InvalidOperationException> (true);
+			var manager = new XamlWriterStateManager<XamlXmlWriterException, InvalidOperationException> (true);
+			intl = new XamlXmlWriterInternal (xmlWriter, sctx, manager);
 		}
 
 		XmlWriter w;
 		XamlSchemaContext sctx;
 		XamlXmlWriterSettings settings;
-		IValueSerializerContext serializer_context;
-
-		XamlWriterStateManager manager;
 
-		Stack<object> nodes = new Stack<object> ();
-		bool is_first_member_content, has_namespace;
-		object first_member_value;
+		XamlXmlWriterInternal intl;
 
 		public override XamlSchemaContext SchemaContext {
 			get { return sctx; }
@@ -102,17 +117,8 @@ namespace System.Xaml
 			if (!disposing)
 				return;
 
-			while (nodes.Count > 0) {
-				var obj = nodes.Peek ();
-				if (obj is XamlMember) {
-					manager.OnClosingItem ();
-					WriteEndMember ();
-				}
-				else if (obj is XamlType)
-					WriteEndObject ();
-				else
-					nodes.Pop ();
-			}
+			intl.CloseAll ();
+
 			if (settings.CloseOutput)
 				w.Close ();
 		}
@@ -122,235 +128,424 @@ namespace System.Xaml
 			w.Flush ();
 		}
 
-		public override void WriteEndMember ()
+		public override void WriteGetObject ()
 		{
-			manager.EndMember ();
-			WriteStackedStartMember (XamlNodeType.EndMember);
-			DoEndMember ();
+			intl.WriteGetObject ();
+		}
 
+		public override void WriteNamespace (NamespaceDeclaration namespaceDeclaration)
+		{
+			intl.WriteNamespace (namespaceDeclaration);
 		}
 
+		public override void WriteStartObject (XamlType xamlType)
+		{
+			intl.WriteStartObject (xamlType);
+		}
+		
+		public override void WriteValue (object value)
+		{
+			intl.WriteValue (value);
+		}
+		
+		public override void WriteStartMember (XamlMember property)
+		{
+			intl.WriteStartMember (property);
+		}
+		
 		public override void WriteEndObject ()
 		{
-			manager.EndObject (nodes.Count > 1);
-			w.WriteEndElement ();
-			nodes.Pop ();
+			intl.WriteEndObject ();
 		}
 
-		public override void WriteGetObject ()
+		public override void WriteEndMember ()
 		{
-			manager.GetObject ();
-			WriteStackedStartMember (XamlNodeType.GetObject);
-
-			var xm = (XamlMember) GetNonNamespaceNode ();
-			if (!xm.Type.IsCollection)
-				throw new InvalidOperationException (String.Format ("WriteGetObject method can be invoked only when current member '{0}' is of collection type", xm.Name));
+			intl.WriteEndMember ();
+		}
+	}
+	
+	// specific implementation
+	class XamlXmlWriterInternal : XamlWriterInternalBase
+	{
+		const string Xmlns2000Namespace = "http://www.w3.org/2000/xmlns/";
 
-			DoEndMember ();
-			
-			// FIXME: it likely has to write the "retrieved" object here.
+		public XamlXmlWriterInternal (XmlWriter w, XamlSchemaContext schemaContext, XamlWriterStateManager manager)
+			: base (schemaContext, manager)
+		{
+			this.w = w;
+			this.sctx = schemaContext;
+		}
+		
+		XmlWriter w;
+		XamlSchemaContext sctx;
+		
+		// Here's a complication.
+		// - local_nss holds namespace declarations that are written *before* current element.
+		// - local_nss2 holds namespace declarations that are wrtten *after* current element.
+		//   (current element == StartObject or StartMember)
+		// - When the next element or content is being written, local_nss items are written *within* current element, BUT after all attribute members are written. Hence I had to preserve all those nsdecls at such late.
+		// - When current *start* element is closed, then copy local_nss2 items into local_nss.
+		// - When there was no children i.e. end element immediately occurs, local_nss should be written at this stage too, and local_nss2 are *ignored*.
+		List<NamespaceDeclaration> local_nss = new List<NamespaceDeclaration> ();
+		List<NamespaceDeclaration> local_nss2 = new List<NamespaceDeclaration> ();
+		bool inside_toplevel_positional_parameter;
+		bool inside_attribute_object;
+
+		protected override void OnWriteEndObject ()
+		{
+			WritePendingStartMember (XamlNodeType.EndObject);
+
+			var state = object_states.Count > 0 ? object_states.Peek () : null;
+			if (state != null && state.IsGetObject) {
+				// do nothing
+				state.IsGetObject = false;
+			} else if (w.WriteState == WriteState.Attribute) {
+				w.WriteString ("}");
+				inside_attribute_object = false;
+			} else {
+				WritePendingNamespaces ();
+				w.WriteEndElement ();
+			}
 		}
 
-		public override void WriteNamespace (NamespaceDeclaration namespaceDeclaration)
+		protected override void OnWriteEndMember ()
 		{
-			if (namespaceDeclaration == null)
-				throw new ArgumentNullException ("namespaceDeclaration");
+			WritePendingStartMember (XamlNodeType.EndMember);
 
-			manager.Namespace ();
+			var member = CurrentMember;
+			if (member == XamlLanguage.Initialization)
+				return;
+			if (member == XamlLanguage.Items)
+				return;
+			if (member.Type.IsCollection && member.IsReadOnly)
+				return;
+			if (member.DeclaringType != null && member == member.DeclaringType.ContentProperty)
+				return;
 
-			nodes.Push (namespaceDeclaration);
-			has_namespace = true;
+			if (inside_toplevel_positional_parameter) {
+				w.WriteEndAttribute ();
+				inside_toplevel_positional_parameter = false;
+			} else if (inside_attribute_object) {
+				// do nothing. It didn't open this attribute.
+			} else {
+				switch (CurrentMemberState.OccuredAs) {
+				case AllowedMemberLocations.Attribute:
+					w.WriteEndAttribute ();
+					break;
+				case AllowedMemberLocations.MemberElement:
+					WritePendingNamespaces ();
+					w.WriteEndElement ();
+					break;
+				// case (AllowedMemberLocations) 0xFF:
+				//	do nothing
+				}
+			}
 		}
-
-		public override void WriteStartMember (XamlMember property)
+		
+		protected override void OnWriteStartObject ()
 		{
-			if (property == null)
-				throw new ArgumentNullException ("property");
+			var tmp = object_states.Pop ();
+			XamlType xamlType = tmp.Type;
+
+			WritePendingStartMember (XamlNodeType.StartObject);
 
-			manager.StartMember ();
-			nodes.Push (property);
+			string ns = xamlType.PreferredXamlNamespace;
+			string prefix = GetPrefix (ns); // null prefix is not rejected...
 
-			is_first_member_content = true;
+			if (w.WriteState == WriteState.Attribute) {
+				// MarkupExtension
+				w.WriteString ("{");
+				if (!String.IsNullOrEmpty (prefix)) {
+					w.WriteString (prefix);
+					w.WriteString (":");
+				}
+				string name = ns == XamlLanguage.Xaml2006Namespace ? xamlType.GetInternalXmlName () : xamlType.Name;
+				w.WriteString (name);
+				// space between type and first member (if any).
+				if (xamlType.IsMarkupExtension && xamlType.GetSortedConstructorArguments ().GetEnumerator ().MoveNext ())
+					w.WriteString (" ");
+			} else {
+				WritePendingNamespaces ();
+				w.WriteStartElement (prefix, xamlType.GetInternalXmlName (), xamlType.PreferredXamlNamespace);
+				var l = xamlType.TypeArguments;
+				if (l != null) {
+					w.WriteStartAttribute ("x", "TypeArguments", XamlLanguage.Xaml2006Namespace);
+					for (int i = 0; i < l.Count; i++) {
+						if (i > 0)
+							w.WriteString (", ");
+						w.WriteString (new XamlTypeName (l [i]).ToString (prefix_lookup));
+					}
+					w.WriteEndAttribute ();
+				}
+			}
+
+			object_states.Push (tmp);
 		}
 
-		public override void WriteStartObject (XamlType xamlType)
+		protected override void OnWriteGetObject ()
 		{
-			if (xamlType == null)
-				throw new ArgumentNullException ("xamlType");
+			if (object_states.Count > 1) {
+				var state = object_states.Pop ();
 
-			manager.StartObject ();
+				if (!CurrentMember.Type.IsCollection)
+					throw new InvalidOperationException (String.Format ("WriteGetObject method can be invoked only when current member '{0}' is of collection type", CurrentMember));
 
-			WriteStackedStartMember (XamlNodeType.StartObject);
+				object_states.Push (state);
+			}
 
-			nodes.Push (xamlType);
-			DoWriteStartObject (xamlType);
+			WritePendingStartMember (XamlNodeType.GetObject);
 		}
 		
-		public override void WriteValue (object value)
+		void WritePendingStartMember (XamlNodeType nodeType)
+		{
+			var cm = CurrentMemberState;
+			if (cm == null || cm.OccuredAs != AllowedMemberLocations.Any)
+				return;
+
+			var state = object_states.Peek ();
+			if (nodeType == XamlNodeType.Value)
+				OnWriteStartMemberAttribute (state.Type, CurrentMember);
+			else
+				OnWriteStartMemberElement (state.Type, CurrentMember);
+		}
+		
+		protected override void OnWriteStartMember (XamlMember member)
 		{
-			manager.Value ();
+			if (member == XamlLanguage.Initialization)
+				return;
+			if (member == XamlLanguage.Items)
+				return;
+			if (member.Type.IsCollection && member.IsReadOnly)
+				return;
+			if (member.DeclaringType != null && member == member.DeclaringType.ContentProperty)
+				return;
 
-			var xt = GetCurrentType ();
+			var state = object_states.Peek ();
 			
-			var xm = GetNonNamespaceNode () as XamlMember;
-			if (xm == XamlLanguage.Initialization) {
-				// do not reject type mismatch, as the value will be a string.
+			// Top-level positional parameters are somehow special.
+			// - If it has only one parameter, it is written as an
+			//   attribute using the actual argument's member name.
+			// - If there are more than one, then it is an error at
+			//   the second constructor argument.
+			// (Here "top-level" means an object that involves
+			//  StartObject i.e. the root or a collection item.)
+			var posprms = member == XamlLanguage.PositionalParameters && IsAtTopLevelObject () && object_states.Peek ().Type.HasPositionalParameters (service_provider) ? state.Type.GetSortedConstructorArguments ().GetEnumerator () : null;
+			if (posprms != null) {
+				posprms.MoveNext ();
+				var arg = posprms.Current;
+				w.WriteStartAttribute (arg.GetInternalXmlName ());
+				inside_toplevel_positional_parameter = true;
 			}
-			else if (xt != null && xt.UnderlyingType != null && !xt.UnderlyingType.IsInstanceOfType (value))
-				throw new ArgumentException (String.Format ("Value is not of type {0} but {1}", xt, value != null ? value.GetType ().FullName : "(null)"));
-
-			if (!is_first_member_content) {
-				WriteStackedStartMember (XamlNodeType.Value);
-				DoWriteValue (value);
+			else if (w.WriteState == WriteState.Attribute)
+				inside_attribute_object = true;
+
+			if (w.WriteState == WriteState.Attribute) {
+				if (state.PositionalParameterIndex < 0) {
+					w.WriteString (" ");
+					w.WriteString (member.Name);
+					w.WriteString ("=");
+				}
+			}
+			else if (member == XamlLanguage.PositionalParameters && posprms == null && state.Type.GetSortedConstructorArguments ().All (m => m == state.Type.ContentProperty)) // PositionalParameters and ContentProperty, excluding such cases that it is already processed above (as attribute).
+				OnWriteStartMemberContent (state.Type, member);
+			else {
+				switch (IsAttribute (state.Type, member)) {
+				case AllowedMemberLocations.Attribute:
+					OnWriteStartMemberAttribute (state.Type, member);
+					break;
+				case AllowedMemberLocations.MemberElement:
+					OnWriteStartMemberElement (state.Type, member);
+					break;
+				default: // otherwise - pending output
+					CurrentMemberState.OccuredAs = AllowedMemberLocations.Any; // differentiate from .None
+					break;
+				}
 			}
-			else
-				first_member_value = value;
 		}
 
-		void DoEndMember ()
+		bool IsAtTopLevelObject ()
 		{
-			var xm = nodes.Pop (); // XamlMember
-			if (xm == XamlLanguage.Initialization)
-				; // do nothing
-			else if (w.WriteState == WriteState.Content)
-				w.WriteEndElement ();
-			else
-				w.WriteEndAttribute ();
+			if (object_states.Count == 1)
+				return true;
+			var tmp = object_states.Pop ();
+			var parentMember = object_states.Peek ().WrittenProperties.LastOrDefault ().Member;
+			object_states.Push (tmp);
 
-			is_first_member_content = false;
-			first_member_value = null;
+			return parentMember == XamlLanguage.Items;
 		}
 
-		void WriteStackedStartMember (XamlNodeType next)
+		AllowedMemberLocations IsAttribute (XamlType ownerType, XamlMember xm)
 		{
-			if (!is_first_member_content)
-				return;
-
-			var xm = GetNonNamespaceNode () as XamlMember;
-			if (xm == null)
-				return;
+			var xt = ownerType;
+			var mt = xm.Type;
+			if (xm == XamlLanguage.Key) {
+				var tmp = object_states.Pop ();
+				mt = object_states.Peek ().Type.KeyType;
+				object_states.Push (tmp);
+			}
 
 			if (xm == XamlLanguage.Initialization)
-				; // do nothing
-			else if (next == XamlNodeType.StartObject || w.WriteState == WriteState.Content || has_namespace)
-				DoWriteStartMemberElement (xm);
-			else
-				DoWriteStartMemberAttribute (xm);
-			if (first_member_value != null)
-				DoWriteValue (first_member_value);
-			is_first_member_content = false;
+				return AllowedMemberLocations.MemberElement;
+			if (mt.HasPositionalParameters (service_provider))
+				return AllowedMemberLocations.Attribute;
+			if (w.WriteState == WriteState.Content)
+				return AllowedMemberLocations.MemberElement;
+			if (xt.IsDictionary && xm != XamlLanguage.Key)
+				return AllowedMemberLocations.MemberElement; // as each item holds a key.
+
+			var xd = xm as XamlDirective;
+			if (xd != null && (xd.AllowedLocation & AllowedMemberLocations.Attribute) == 0)
+				return AllowedMemberLocations.MemberElement;
+
+			// surprisingly, WriteNamespace() can affect this.
+			if (local_nss2.Count > 0)
+				return AllowedMemberLocations.MemberElement;
+
+			// Somehow such a "stranger" is processed as an element.
+			if (xd == null && !xt.GetAllMembers ().Contains (xm))
+				return AllowedMemberLocations.None;
+
+			if (xm.IsContentValue (service_provider) || mt.IsContentValue (service_provider))
+				return AllowedMemberLocations.Attribute;
+
+			return AllowedMemberLocations.MemberElement;
 		}
 
-		void DoWriteStartObject (XamlType xamlType)
-		{
-			string prefix = GetPrefix (xamlType.PreferredXamlNamespace);
-			w.WriteStartElement (prefix, xamlType.Name, xamlType.PreferredXamlNamespace);
-			WriteAndClearNamespaces ();
-		}
-		
-		void DoWriteStartMemberElement (XamlMember xm)
+		void OnWriteStartMemberElement (XamlType xt, XamlMember xm)
 		{
-			var xt = GetCurrentType ();
+			CurrentMemberState.OccuredAs = AllowedMemberLocations.MemberElement;
 			string prefix = GetPrefix (xm.PreferredXamlNamespace);
-			w.WriteStartElement (prefix, String.Concat (xt.Name, ".", xm.Name), xm.PreferredXamlNamespace);
-			WriteAndClearNamespaces ();
+			string name = xm.IsDirective ? xm.Name : String.Concat (xt.GetInternalXmlName (), ".", xm.Name);
+			WritePendingNamespaces ();
+			w.WriteStartElement (prefix, name, xm.PreferredXamlNamespace);
 		}
 		
-		void DoWriteStartMemberAttribute (XamlMember xm)
+		void OnWriteStartMemberAttribute (XamlType xt, XamlMember xm)
 		{
-			WriteAndClearNamespaces ();
-			
-			var xt = GetCurrentType ();
-			if (xt.PreferredXamlNamespace == xm.PreferredXamlNamespace)
-				w.WriteStartAttribute (xm.Name);
+			CurrentMemberState.OccuredAs = AllowedMemberLocations.Attribute;
+			string name = xm.GetInternalXmlName ();
+			if (xt.PreferredXamlNamespace == xm.PreferredXamlNamespace &&
+			    !(xm is XamlDirective)) // e.g. x:Key inside x:Int should not be written as Key.
+				w.WriteStartAttribute (name);
 			else {
 				string prefix = GetPrefix (xm.PreferredXamlNamespace);
-				w.WriteStartAttribute (prefix, xm.Name, xm.PreferredXamlNamespace);
+				w.WriteStartAttribute (prefix, name, xm.PreferredXamlNamespace);
 			}
 		}
 
-		void DoWriteValue (object value)
+		void OnWriteStartMemberContent (XamlType xt, XamlMember member)
 		{
-			var xt = value == null ? XamlLanguage.Null : SchemaContext.GetXamlType (value.GetType ());
-			var vs = xt.TypeConverter;
-			var c = vs != null ? vs.ConverterInstance : null;
-			if (c != null && c.CanConvertTo (typeof (string)))
-				w.WriteString (c.ConvertToInvariantString (value));
-			else
-				w.WriteValue (value);
+			// FIXME: well, it is sorta nasty, would be better to define different enum.
+			CurrentMemberState.OccuredAs = (AllowedMemberLocations) 0xFF;
 		}
 
-		object GetNonNamespaceNode ()
+		protected override void OnWriteValue (object value)
 		{
-			if (nodes.Count == 0)
-				return null;
-			var obj = nodes.Pop ();
-			try {
-				if (obj is NamespaceDeclaration)
-					return GetNonNamespaceNode ();
-				else
-					return obj;
-			} finally {
-				nodes.Push (obj);
+			if (value != null && !(value is string))
+				throw new ArgumentException ("Non-string value cannot be written.");
+
+			XamlMember xm = CurrentMember;
+			WritePendingStartMember (XamlNodeType.Value);
+
+			if (w.WriteState != WriteState.Attribute)
+				WritePendingNamespaces ();
+
+			string s = GetValueString (xm, value);
+
+			// It looks like a bad practice, but since .NET disables
+			// indent around XData, I assume they do this, instead
+			// of examining valid Text value by creating XmlReader
+			// and call XmlWriter.WriteNode().
+			if (xm.DeclaringType == XamlLanguage.XData && xm == XamlLanguage.XData.GetMember ("Text")) {
+				w.WriteRaw (s);
+				return;
+			}
+
+			var state = object_states.Peek ();
+			switch (state.PositionalParameterIndex) {
+			case -1:
+				break;
+			case 0:
+				state.PositionalParameterIndex++;
+				break;
+			default:
+				if (inside_toplevel_positional_parameter)
+					throw new XamlXmlWriterException (String.Format ("The XAML reader input has more than one positional parameter values within a top-level object {0} because it tries to write all of the argument values as an attribute value of the first argument. While XamlObjectReader can read such an object, XamlXmlWriter cannot write such an object to XML.", state.Type));
+
+				state.PositionalParameterIndex++;
+				w.WriteString (", ");
+				break;
 			}
+			w.WriteString (s);
 		}
 
-		XamlType GetCurrentType ()
+		protected override void OnWriteNamespace (NamespaceDeclaration nd)
 		{
-			if (nodes.Count == 0)
-				return null;
-			var obj = nodes.Pop ();
-			try {
-				if (obj is XamlType)
-					return (XamlType) obj;
+			local_nss2.Add (nd);
+		}
+		
+		void WritePendingNamespaces ()
+		{
+			foreach (var nd in local_nss) {
+				if (String.IsNullOrEmpty (nd.Prefix))
+					w.WriteAttributeString ("xmlns", nd.Namespace);
 				else
-					return GetCurrentType ();
-			} finally {
-				nodes.Push (obj);
+					w.WriteAttributeString ("xmlns", nd.Prefix, Xmlns2000Namespace, nd.Namespace);
 			}
+			local_nss.Clear ();
+
+			local_nss.AddRange (local_nss2);
+			local_nss2.Clear ();
 		}
+	}
 
-		string GetPrefix (string ns)
+#if DOTNET
+	internal static class TypeExtensionMethods2
+	{
+		static TypeExtensionMethods2 ()
 		{
-			var decl = nodes.LastOrDefault (d => d is NamespaceDeclaration && ((NamespaceDeclaration) d).Namespace == ns) as NamespaceDeclaration;
-			if (decl != null)
-				return decl.Prefix;
-			return w.LookupPrefix (ns);
+			SpecialNames = new SpecialTypeNameList ();
 		}
 
-		Stack<NamespaceDeclaration> tmp_nss = new Stack<NamespaceDeclaration> ();
-
-		void WriteAndClearNamespaces ()
+		public static string GetInternalXmlName (this XamlType type)
 		{
-			// write namespace that are put *before* current item.
+			if (type.IsMarkupExtension && type.Name.EndsWith ("Extension", StringComparison.Ordinal))
+				return type.Name.Substring (0, type.Name.Length - 9);
+			var stn = SpecialNames.FirstOrDefault (s => s.Type == type);
+			return stn != null ? stn.Name : type.Name;
+		}
 
-			var top = nodes.Pop (); // temporarily pop out
+		// FIXME: I'm not sure if these "special names" should be resolved like this. I couldn't find any rule so far.
+		internal static readonly SpecialTypeNameList SpecialNames;
 
-			while (nodes.Count > 0) {
-				var obj = nodes.Pop ();
-				var nd = obj as NamespaceDeclaration;
-				if (nd == null) {
-					nodes.Push (obj);
-					break;
-				}
-				tmp_nss.Push (nd);
-			}
-			while (tmp_nss.Count > 0) {
-				var nd = tmp_nss.Pop ();
-				DoWriteNamespace (nd);
+		internal class SpecialTypeNameList : List<SpecialTypeName>
+		{
+			internal SpecialTypeNameList ()
+			{
+				Add (new SpecialTypeName ("Member", XamlLanguage.Member));
+				Add (new SpecialTypeName ("Property", XamlLanguage.Property));
 			}
-			has_namespace = false;
-			manager.NamespaceCleanedUp ();
 
-			nodes.Push (top); // push back
+			public XamlType Find (string name, string ns)
+			{
+				if (ns != XamlLanguage.Xaml2006Namespace)
+					return null;
+				var stn = this.FirstOrDefault (s => s.Name == name);
+				return stn != null ? stn.Type : null;
+			}
 		}
 
-		void DoWriteNamespace (NamespaceDeclaration nd)
+		internal class SpecialTypeName
 		{
-			if (String.IsNullOrEmpty (nd.Prefix))
-				w.WriteAttributeString ("xmlns", nd.Namespace);
-			else
-				w.WriteAttributeString ("xmlns", nd.Prefix, XamlLanguage.Xmlns2000Namespace, nd.Namespace);
+			public SpecialTypeName (string name, XamlType type)
+			{
+				Name = name;
+				Type = type;
+			}
+			
+			public string Name { get; private set; }
+			public XamlType Type { get; private set; }
 		}
 	}
+#endif
 }
diff --git a/mcs/class/System.Xaml/System.Xaml/XamlXmlWriterException.cs b/mcs/class/System.Xaml/System.Xaml/XamlXmlWriterException.cs
index ffa402c..d784b9d 100644
--- a/mcs/class/System.Xaml/System.Xaml/XamlXmlWriterException.cs
+++ b/mcs/class/System.Xaml/System.Xaml/XamlXmlWriterException.cs
@@ -27,7 +27,9 @@ using System.Runtime.Serialization;
 
 namespace System.Xaml
 {
+#if !NET_2_1
 	[Serializable]
+#endif
 	public class XamlXmlWriterException : XamlException
 	{
 		public XamlXmlWriterException ()
@@ -45,9 +47,11 @@ namespace System.Xaml
 		{
 		}
 
+#if !NET_2_1
 		protected XamlXmlWriterException (SerializationInfo info, StreamingContext context)
 			: base (info, context)
 		{
 		}
+#endif
 	}
 }
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/ArgumentAttributed.xml b/mcs/class/System.Xaml/Test/XmlFiles/ArgumentAttributed.xml
new file mode 100644
index 0000000..3a267cb
--- /dev/null
+++ b/mcs/class/System.Xaml/Test/XmlFiles/ArgumentAttributed.xml
@@ -0,0 +1,6 @@
+<ArgumentAttributed xmlns="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
+  <x:Arguments>
+    <x:String>foo</x:String>
+    <x:String>bar</x:String>
+  </x:Arguments>
+</ArgumentAttributed>
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/ArrayExtension.xml b/mcs/class/System.Xaml/Test/XmlFiles/ArrayExtension.xml
new file mode 100644
index 0000000..c309a3a
--- /dev/null
+++ b/mcs/class/System.Xaml/Test/XmlFiles/ArrayExtension.xml
@@ -0,0 +1,5 @@
+<x:Array Type="x:Int32" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
+  <x:Int32>5</x:Int32>
+  <x:Int32>-3</x:Int32>
+  <x:Int32>0</x:Int32>
+</x:Array>
\ No newline at end of file
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/ArrayExtension2.xml b/mcs/class/System.Xaml/Test/XmlFiles/ArrayExtension2.xml
new file mode 100644
index 0000000..5aa526b
--- /dev/null
+++ b/mcs/class/System.Xaml/Test/XmlFiles/ArrayExtension2.xml
@@ -0,0 +1 @@
+<x:Array Type="x:Int32" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" />
\ No newline at end of file
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/ArrayList.xml b/mcs/class/System.Xaml/Test/XmlFiles/ArrayList.xml
new file mode 100644
index 0000000..1dc0b5b
--- /dev/null
+++ b/mcs/class/System.Xaml/Test/XmlFiles/ArrayList.xml
@@ -0,0 +1,5 @@
+<ArrayList Capacity="3" xmlns="clr-namespace:System.Collections;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
+  <x:Int32>5</x:Int32>
+  <x:Int32>-3</x:Int32>
+  <x:Int32>0</x:Int32>
+</ArrayList>
\ No newline at end of file
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/ComplexPositionalParameterWrapper.xml b/mcs/class/System.Xaml/Test/XmlFiles/ComplexPositionalParameterWrapper.xml
new file mode 100644
index 0000000..8bee4b0
--- /dev/null
+++ b/mcs/class/System.Xaml/Test/XmlFiles/ComplexPositionalParameterWrapper.xml
@@ -0,0 +1,9 @@
+<ComplexPositionalParameterWrapper xmlns="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
+  <ComplexPositionalParameterWrapper.Param>
+    <ComplexPositionalParameterClass>
+      <x:Arguments>
+        <ComplexPositionalParameterValue Foo="foo" />
+      </x:Arguments>
+    </ComplexPositionalParameterClass>
+  </ComplexPositionalParameterWrapper.Param>
+</ComplexPositionalParameterWrapper>
\ No newline at end of file
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/ContentIncluded.xml b/mcs/class/System.Xaml/Test/XmlFiles/ContentIncluded.xml
new file mode 100644
index 0000000..53eb81e
--- /dev/null
+++ b/mcs/class/System.Xaml/Test/XmlFiles/ContentIncluded.xml
@@ -0,0 +1 @@
+<ContentIncludedClass xmlns="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0">foo</ContentIncludedClass>
\ No newline at end of file
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/Dictionary_String_Double.xml b/mcs/class/System.Xaml/Test/XmlFiles/Dictionary_String_Double.xml
new file mode 100644
index 0000000..6ace8fb
--- /dev/null
+++ b/mcs/class/System.Xaml/Test/XmlFiles/Dictionary_String_Double.xml
@@ -0,0 +1,4 @@
+<Dictionary x:TypeArguments="x:String, x:Object" xmlns="clr-namespace:System.Collections.Generic;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
+  <x:Double x:Key="Foo">5</x:Double>
+  <x:Double x:Key="Bar">-6.5</x:Double>
+</Dictionary>
\ No newline at end of file
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/Dictionary_String_Type_2.xml b/mcs/class/System.Xaml/Test/XmlFiles/Dictionary_String_Type_2.xml
new file mode 100644
index 0000000..304244e
--- /dev/null
+++ b/mcs/class/System.Xaml/Test/XmlFiles/Dictionary_String_Type_2.xml
@@ -0,0 +1,4 @@
+<Dictionary x:TypeArguments="x:String, s:Type" xmlns="clr-namespace:System.Collections.Generic;assembly=mscorlib" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:sx="clr-namespace:System.Xaml;assembly=System.Xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
+  <x:Type Type="x:Int32" x:Key="Foo" />
+  <x:Type Type="Dictionary(s:Type, sx:XamlType)" x:Key="Bar" />
+</Dictionary>
\ No newline at end of file
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/EventContainer.xml b/mcs/class/System.Xaml/Test/XmlFiles/EventContainer.xml
new file mode 100644
index 0000000..3dc1153
--- /dev/null
+++ b/mcs/class/System.Xaml/Test/XmlFiles/EventContainer.xml
@@ -0,0 +1 @@
+<EventContainer xmlns="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0" />
\ No newline at end of file
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/Guid.xml b/mcs/class/System.Xaml/Test/XmlFiles/Guid.xml
new file mode 100644
index 0000000..cbffde0
--- /dev/null
+++ b/mcs/class/System.Xaml/Test/XmlFiles/Guid.xml
@@ -0,0 +1 @@
+<Guid xmlns="clr-namespace:System;assembly=mscorlib">9c3345ec-8922-4662-8e8d-a4e41f47cf09</Guid>
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/GuidFactoryMethod.xml b/mcs/class/System.Xaml/Test/XmlFiles/GuidFactoryMethod.xml
new file mode 100644
index 0000000..c890c02
--- /dev/null
+++ b/mcs/class/System.Xaml/Test/XmlFiles/GuidFactoryMethod.xml
@@ -0,0 +1,8 @@
+<Guid
+ xmlns="clr-namespace:System;assembly=mscorlib"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ x:FactoryMethod="Parse">
+  <x:Arguments>
+    <x:String>9c3345ec-8922-4662-8e8d-a4e41f47cf09</x:String>
+  </x:Arguments>
+</Guid>
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/ListWrapper.xml b/mcs/class/System.Xaml/Test/XmlFiles/ListWrapper.xml
new file mode 100644
index 0000000..42979c2
--- /dev/null
+++ b/mcs/class/System.Xaml/Test/XmlFiles/ListWrapper.xml
@@ -0,0 +1,7 @@
+<ListWrapper xmlns="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
+  <ListWrapper.Items>
+    <x:Int32>5</x:Int32>
+    <x:Int32>-3</x:Int32>
+    <x:Int32>0</x:Int32>
+  </ListWrapper.Items>
+</ListWrapper>
\ No newline at end of file
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/ListWrapper2.xml b/mcs/class/System.Xaml/Test/XmlFiles/ListWrapper2.xml
new file mode 100644
index 0000000..f698168
--- /dev/null
+++ b/mcs/class/System.Xaml/Test/XmlFiles/ListWrapper2.xml
@@ -0,0 +1,9 @@
+<ListWrapper2 xmlns="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0" xmlns:scg="clr-namespace:System.Collections.Generic;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
+  <ListWrapper2.Items>
+    <scg:List x:TypeArguments="x:Int32" Capacity="3">
+      <x:Int32>5</x:Int32>
+      <x:Int32>-3</x:Int32>
+      <x:Int32>0</x:Int32>
+    </scg:List>
+  </ListWrapper2.Items>
+</ListWrapper2>
\ No newline at end of file
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/List_Array.xml b/mcs/class/System.Xaml/Test/XmlFiles/List_Array.xml
new file mode 100644
index 0000000..7ebb70e
--- /dev/null
+++ b/mcs/class/System.Xaml/Test/XmlFiles/List_Array.xml
@@ -0,0 +1,12 @@
+<List x:TypeArguments="s:Array" Capacity="2" xmlns="clr-namespace:System.Collections.Generic;assembly=mscorlib" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
+  <x:Array Type="x:Int32">
+    <x:Int32>1</x:Int32>
+    <x:Int32>2</x:Int32>
+    <x:Int32>3</x:Int32>
+  </x:Array>
+  <x:Array Type="x:String">
+    <x:String>foo</x:String>
+    <x:String>bar</x:String>
+    <x:String>baz</x:String>
+  </x:Array>
+</List>
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/List_Int32.xml b/mcs/class/System.Xaml/Test/XmlFiles/List_Int32.xml
index b2f35f9..c5d86ad 100644
--- a/mcs/class/System.Xaml/Test/XmlFiles/List_Int32.xml
+++ b/mcs/class/System.Xaml/Test/XmlFiles/List_Int32.xml
@@ -1,7 +1,6 @@
-<List x:TypeArguments="x:Int32" Capacity="5" xmlns="clr-namespace:System.Collections.Generic;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
-  <x:Int32>4</x:Int32>
-  <x:Int32>-5</x:Int32>
-  <x:Int32>0</x:Int32>
-  <x:Int32>255</x:Int32>
+<List x:TypeArguments="x:Int32" Capacity="4" xmlns="clr-namespace:System.Collections.Generic;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
+  <x:Int32>5</x:Int32>
+  <x:Int32>-3</x:Int32>
   <x:Int32>2147483647</x:Int32>
-</List>
\ No newline at end of file
+  <x:Int32>0</x:Int32>
+</List>
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/List_Int32_2.xml b/mcs/class/System.Xaml/Test/XmlFiles/List_Int32_2.xml
new file mode 100644
index 0000000..2670de8
--- /dev/null
+++ b/mcs/class/System.Xaml/Test/XmlFiles/List_Int32_2.xml
@@ -0,0 +1 @@
+<List x:TypeArguments="x:Int32" Capacity="0" xmlns="clr-namespace:System.Collections.Generic;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" />
\ No newline at end of file
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/List_Type.xml b/mcs/class/System.Xaml/Test/XmlFiles/List_Type.xml
new file mode 100644
index 0000000..3af77b3
--- /dev/null
+++ b/mcs/class/System.Xaml/Test/XmlFiles/List_Type.xml
@@ -0,0 +1,4 @@
+<List x:TypeArguments="s:Type" Capacity="2" xmlns="clr-namespace:System.Collections.Generic;assembly=mscorlib" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:sx="clr-namespace:System.Xaml;assembly=System.Xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
+  <x:Type Type="x:Int32" />
+  <x:Type Type="Dictionary(s:Type, sx:XamlType)" />
+</List>
\ No newline at end of file
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/List_XmlSerializable.xml b/mcs/class/System.Xaml/Test/XmlFiles/List_XmlSerializable.xml
new file mode 100644
index 0000000..29f0585
--- /dev/null
+++ b/mcs/class/System.Xaml/Test/XmlFiles/List_XmlSerializable.xml
@@ -0,0 +1,3 @@
+<List x:TypeArguments="msx:XmlSerializable" Capacity="4" xmlns="clr-namespace:System.Collections.Generic;assembly=mscorlib" xmlns:msx="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
+  <msx:XmlSerializable />
+</List>
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/MyArrayExtension.xml b/mcs/class/System.Xaml/Test/XmlFiles/MyArrayExtension.xml
new file mode 100644
index 0000000..897f1f1
--- /dev/null
+++ b/mcs/class/System.Xaml/Test/XmlFiles/MyArrayExtension.xml
@@ -0,0 +1,7 @@
+<MyArray Type="x:Int32" xmlns="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
+  <MyArray.Items>
+    <x:Int32>5</x:Int32>
+    <x:Int32>-3</x:Int32>
+    <x:Int32>0</x:Int32>
+  </MyArray.Items>
+</MyArray>
\ No newline at end of file
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/MyArrayExtensionA.xml b/mcs/class/System.Xaml/Test/XmlFiles/MyArrayExtensionA.xml
new file mode 100755
index 0000000..ca21e2e
--- /dev/null
+++ b/mcs/class/System.Xaml/Test/XmlFiles/MyArrayExtensionA.xml
@@ -0,0 +1,7 @@
+<MyArrayExtensionA Type="x:Int32" xmlns="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
+  <MyArrayExtensionA.Items>
+    <x:Int32>5</x:Int32>
+    <x:Int32>-3</x:Int32>
+    <x:Int32>0</x:Int32>
+  </MyArrayExtensionA.Items>
+</MyArrayExtensionA>
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/MyExtension.xml b/mcs/class/System.Xaml/Test/XmlFiles/MyExtension.xml
new file mode 100644
index 0000000..783ea45
--- /dev/null
+++ b/mcs/class/System.Xaml/Test/XmlFiles/MyExtension.xml
@@ -0,0 +1 @@
+<My Bar="v2" Baz="v7" Foo="x:Int32" xmlns="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" />
\ No newline at end of file
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/MyExtension2.xml b/mcs/class/System.Xaml/Test/XmlFiles/MyExtension2.xml
new file mode 100644
index 0000000..f0762e1
--- /dev/null
+++ b/mcs/class/System.Xaml/Test/XmlFiles/MyExtension2.xml
@@ -0,0 +1 @@
+<MyExtension2 xmlns="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0">MonoTests.System.Xaml.MyExtension2</MyExtension2>
\ No newline at end of file
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/MyExtension3.xml b/mcs/class/System.Xaml/Test/XmlFiles/MyExtension3.xml
new file mode 100644
index 0000000..e90a661
--- /dev/null
+++ b/mcs/class/System.Xaml/Test/XmlFiles/MyExtension3.xml
@@ -0,0 +1 @@
+<MyExtension3 xmlns="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0">MonoTests.System.Xaml.MyExtension3</MyExtension3>
\ No newline at end of file
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/MyExtension4.xml b/mcs/class/System.Xaml/Test/XmlFiles/MyExtension4.xml
new file mode 100644
index 0000000..26c9b29
--- /dev/null
+++ b/mcs/class/System.Xaml/Test/XmlFiles/MyExtension4.xml
@@ -0,0 +1 @@
+<MyExtension4 xmlns="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0">MonoTests.System.Xaml.MyExtension4</MyExtension4>
\ No newline at end of file
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/MyExtension6.xml b/mcs/class/System.Xaml/Test/XmlFiles/MyExtension6.xml
new file mode 100644
index 0000000..65b02a5
--- /dev/null
+++ b/mcs/class/System.Xaml/Test/XmlFiles/MyExtension6.xml
@@ -0,0 +1 @@
+<MyExtension6 Foo="foo" xmlns="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0" />
\ No newline at end of file
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/NamedItems.xml b/mcs/class/System.Xaml/Test/XmlFiles/NamedItems.xml
new file mode 100644
index 0000000..e419534
--- /dev/null
+++ b/mcs/class/System.Xaml/Test/XmlFiles/NamedItems.xml
@@ -0,0 +1,10 @@
+<NamedItem x:Name="__ReferenceID0" ItemName="foo" xmlns="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
+  <NamedItem.References>
+    <NamedItem ItemName="bar">
+      <NamedItem.References>
+        <x:Reference>__ReferenceID0</x:Reference>
+      </NamedItem.References>
+    </NamedItem>
+    <NamedItem ItemName="baz" />
+  </NamedItem.References>
+</NamedItem>
\ No newline at end of file
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/NamedItems2.xml b/mcs/class/System.Xaml/Test/XmlFiles/NamedItems2.xml
new file mode 100644
index 0000000..91394c9
--- /dev/null
+++ b/mcs/class/System.Xaml/Test/XmlFiles/NamedItems2.xml
@@ -0,0 +1,14 @@
+<NamedItem2 ItemName="i1" xmlns="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
+  <NamedItem2.References>
+    <NamedItem2 ItemName="i2">
+      <NamedItem2.References>
+        <NamedItem2 ItemName="i3" />
+      </NamedItem2.References>
+    </NamedItem2>
+    <NamedItem2 ItemName="i4">
+      <NamedItem2.References>
+        <x:Reference>i3</x:Reference>
+      </NamedItem2.References>
+    </NamedItem2>
+  </NamedItem2.References>
+</NamedItem2>
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/NonPrimitive.xml b/mcs/class/System.Xaml/Test/XmlFiles/NonPrimitive.xml
new file mode 100644
index 0000000..ef4f24a
--- /dev/null
+++ b/mcs/class/System.Xaml/Test/XmlFiles/NonPrimitive.xml
@@ -0,0 +1 @@
+<TestClass3 Nested="{x:Null}" xmlns="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" />
\ No newline at end of file
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/NullExtension.xml b/mcs/class/System.Xaml/Test/XmlFiles/NullExtension.xml
new file mode 100644
index 0000000..fe9bbb3
--- /dev/null
+++ b/mcs/class/System.Xaml/Test/XmlFiles/NullExtension.xml
@@ -0,0 +1 @@
+<x:Null xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" />
\ No newline at end of file
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/PositionalParametersWrapper.xml b/mcs/class/System.Xaml/Test/XmlFiles/PositionalParametersWrapper.xml
new file mode 100644
index 0000000..ea945a6
--- /dev/null
+++ b/mcs/class/System.Xaml/Test/XmlFiles/PositionalParametersWrapper.xml
@@ -0,0 +1 @@
+<PositionalParametersWrapper Body="{PositionalParametersClass1 foo, 5}" xmlns="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0" />
\ No newline at end of file
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/PropertyDefinition.xml b/mcs/class/System.Xaml/Test/XmlFiles/PropertyDefinition.xml
new file mode 100644
index 0000000..632b4ff
--- /dev/null
+++ b/mcs/class/System.Xaml/Test/XmlFiles/PropertyDefinition.xml
@@ -0,0 +1 @@
+<x:Property Modifier="protected" Name="foo" Type="x:String" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" />
\ No newline at end of file
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/Reference.xml b/mcs/class/System.Xaml/Test/XmlFiles/Reference.xml
new file mode 100644
index 0000000..db71dec
--- /dev/null
+++ b/mcs/class/System.Xaml/Test/XmlFiles/Reference.xml
@@ -0,0 +1 @@
+<x:Reference xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">FooBar</x:Reference>
\ No newline at end of file
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/SilverlightApp1.xaml b/mcs/class/System.Xaml/Test/XmlFiles/SilverlightApp1.xaml
new file mode 100644
index 0000000..770a98b
--- /dev/null
+++ b/mcs/class/System.Xaml/Test/XmlFiles/SilverlightApp1.xaml
@@ -0,0 +1,8 @@
+<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
+             x:Class="MoonVorbisTest.App"
+             >
+    <Application.Resources>
+        
+    </Application.Resources>
+</Application>
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/StaticExtension.xml b/mcs/class/System.Xaml/Test/XmlFiles/StaticExtension.xml
new file mode 100644
index 0000000..132af27
--- /dev/null
+++ b/mcs/class/System.Xaml/Test/XmlFiles/StaticExtension.xml
@@ -0,0 +1 @@
+<x:Static Member="FooBar" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" />
\ No newline at end of file
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/StaticExtension2.xml b/mcs/class/System.Xaml/Test/XmlFiles/StaticExtension2.xml
new file mode 100644
index 0000000..1acb64b
--- /dev/null
+++ b/mcs/class/System.Xaml/Test/XmlFiles/StaticExtension2.xml
@@ -0,0 +1 @@
+<x:Static Member="FooBar" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" />
\ No newline at end of file
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/StaticExtensionWrapper.xml b/mcs/class/System.Xaml/Test/XmlFiles/StaticExtensionWrapper.xml
new file mode 100644
index 0000000..a90278d
--- /dev/null
+++ b/mcs/class/System.Xaml/Test/XmlFiles/StaticExtensionWrapper.xml
@@ -0,0 +1 @@
+<StaticExtensionWrapper Param="{x:Static StaticExtensionWrapper.Foo}" xmlns="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" />
\ No newline at end of file
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/StaticMember.xml b/mcs/class/System.Xaml/Test/XmlFiles/StaticMember.xml
new file mode 100644
index 0000000..555e86b
--- /dev/null
+++ b/mcs/class/System.Xaml/Test/XmlFiles/StaticMember.xml
@@ -0,0 +1 @@
+<TestClass5 Bar="{x:Null}" xmlns="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" />
\ No newline at end of file
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/TestClass4.xml b/mcs/class/System.Xaml/Test/XmlFiles/TestClass4.xml
new file mode 100644
index 0000000..840f36d
--- /dev/null
+++ b/mcs/class/System.Xaml/Test/XmlFiles/TestClass4.xml
@@ -0,0 +1 @@
+<TestClass4 Bar="{x:Null}" Foo="{x:Null}" xmlns="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" />
\ No newline at end of file
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/TestClass5.xml b/mcs/class/System.Xaml/Test/XmlFiles/TestClass5.xml
new file mode 100644
index 0000000..555e86b
--- /dev/null
+++ b/mcs/class/System.Xaml/Test/XmlFiles/TestClass5.xml
@@ -0,0 +1 @@
+<TestClass5 Bar="{x:Null}" xmlns="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" />
\ No newline at end of file
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/Type2.xml b/mcs/class/System.Xaml/Test/XmlFiles/Type2.xml
new file mode 100644
index 0000000..ac8261e
--- /dev/null
+++ b/mcs/class/System.Xaml/Test/XmlFiles/Type2.xml
@@ -0,0 +1 @@
+<x:Type Type="TestClass1" xmlns="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" />
\ No newline at end of file
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/TypeExtensionWrapper.xml b/mcs/class/System.Xaml/Test/XmlFiles/TypeExtensionWrapper.xml
new file mode 100644
index 0000000..2e8aa60
--- /dev/null
+++ b/mcs/class/System.Xaml/Test/XmlFiles/TypeExtensionWrapper.xml
@@ -0,0 +1 @@
+<TypeExtensionWrapper Param="{x:Type ""}" xmlns="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" />
\ No newline at end of file
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/Uri.xml b/mcs/class/System.Xaml/Test/XmlFiles/Uri.xml
new file mode 100644
index 0000000..fe3b3f0
--- /dev/null
+++ b/mcs/class/System.Xaml/Test/XmlFiles/Uri.xml
@@ -0,0 +1 @@
+<x:Uri xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">urn:foo</x:Uri>
\ No newline at end of file
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/XmlDocument.xml b/mcs/class/System.Xaml/Test/XmlFiles/XmlDocument.xml
new file mode 100644
index 0000000..e64c467
--- /dev/null
+++ b/mcs/class/System.Xaml/Test/XmlFiles/XmlDocument.xml
@@ -0,0 +1,9 @@
+<XmlDocument Value="{x:Null}" InnerXml="<root xmlns="urn:foo"><elem attr="val" /></root>" Prefix="" PreserveWhitespace="False" xmlns="clr-namespace:System.Xml;assembly=System.Xml" xmlns:sxs="clr-namespace:System.Xml.Schema;assembly=System.Xml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
+  <XmlDocument.Schemas>
+    <sxs:XmlSchemaSet>
+      <sxs:XmlSchemaSet.CompilationSettings>
+        <sxs:XmlSchemaCompilationSettings EnableUpaCheck="True" />
+      </sxs:XmlSchemaSet.CompilationSettings>
+    </sxs:XmlSchemaSet>
+  </XmlDocument.Schemas>
+</XmlDocument>
\ No newline at end of file
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/XmlSerializable.xml b/mcs/class/System.Xaml/Test/XmlFiles/XmlSerializable.xml
new file mode 100644
index 0000000..3e0323c
--- /dev/null
+++ b/mcs/class/System.Xaml/Test/XmlFiles/XmlSerializable.xml
@@ -0,0 +1 @@
+<XmlSerializable xmlns="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0" />
\ No newline at end of file
diff --git a/mcs/class/System.Xaml/Test/XmlFiles/XmlSerializableWrapper.xml b/mcs/class/System.Xaml/Test/XmlFiles/XmlSerializableWrapper.xml
new file mode 100644
index 0000000..8cfbca0
--- /dev/null
+++ b/mcs/class/System.Xaml/Test/XmlFiles/XmlSerializableWrapper.xml
@@ -0,0 +1,3 @@
+<XmlSerializableWrapper xmlns="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
+  <x:XData><root /></x:XData>
+</XmlSerializableWrapper>
\ No newline at end of file
diff --git a/mcs/class/System.Xml.Linq/ChangeLog b/mcs/class/System.Xml.Linq/ChangeLog
index 182c0d2..b53a402 100644
--- a/mcs/class/System.Xml.Linq/ChangeLog
+++ b/mcs/class/System.Xml.Linq/ChangeLog
@@ -1,3 +1,21 @@
+2010-12-22  Atsushi Eno  <atsushi at ximian.com>
+
+	Fix incorrect internal node cleanup in MoveToRoot(). Fixed bug
+	#654433.
+
+2010-12-22  Atsushi Eno  <atsushi at ximian.com>
+
+	Add tests from XPathNavigatorEvaluateTests.
+
+2010-12-22  Atsushi Eno  <atsushi at ximian.com>
+
+	Add another bunch of tests from XPathNavigatorTests.
+
+2010-12-22  Atsushi Eno  <atsushi at ximian.com>
+
+	Several fixes in XNodeNavigator to pass XPath tests from
+	System.Xml.
+
 2010-05-28  Atsushi Enomoto  <atsushi at ximian.com>
 
 	* System.Xml.Linq_test.dll.sources :
diff --git a/mcs/class/System.Xml.Linq/ChangeLog b/mcs/class/System.Xml.Linq/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Xml.Linq/ChangeLog
copy to mcs/class/System.Xml.Linq/ChangeLog.old
diff --git a/mcs/class/System.Xml.Linq/System.Xml.Linq/ChangeLog b/mcs/class/System.Xml.Linq/System.Xml.Linq/ChangeLog
index d65d2ac..20ec53a 100644
--- a/mcs/class/System.Xml.Linq/System.Xml.Linq/ChangeLog
+++ b/mcs/class/System.Xml.Linq/System.Xml.Linq/ChangeLog
@@ -1,3 +1,17 @@
+2010-12-22  Atsushi Eno  <atsushi at ximian.com>
+
+	Fix incorrect internal node cleanup in MoveToRoot(). Fixed bug
+	#654433.
+
+2010-12-22  Atsushi Eno  <atsushi at ximian.com>
+
+	Several fixes in XNodeNavigator to pass XPath tests from
+	System.Xml.
+
+2010-11-29  Atsushi Eno  <atsushi at ximian.com>
+
+	Implemented XDocument.Validate().
+
 2010-04-21  Sebastien Pouliot  <sebastien at ximian.com>
 
 	* XDocument.cs: Don't use XmlReaderSettings.ProhibitDtd when 
diff --git a/mcs/class/System.Xml.Linq/System.Xml.Linq/ChangeLog b/mcs/class/System.Xml.Linq/System.Xml.Linq/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Xml.Linq/System.Xml.Linq/ChangeLog
copy to mcs/class/System.Xml.Linq/System.Xml.Linq/ChangeLog.old
diff --git a/mcs/class/System.Xml.Linq/System.Xml.Linq/XNodeNavigator.cs b/mcs/class/System.Xml.Linq/System.Xml.Linq/XNodeNavigator.cs
index ab25200..b79d362 100644
--- a/mcs/class/System.Xml.Linq/System.Xml.Linq/XNodeNavigator.cs
+++ b/mcs/class/System.Xml.Linq/System.Xml.Linq/XNodeNavigator.cs
@@ -68,13 +68,22 @@ namespace System.Xml.Linq
 
 		public override bool HasAttributes {
 			get {
+				if (attr != null)
+					return false;
 				XElement el = node as XElement;
-				return el != null && el.HasAttributes;
+				if (el == null)
+					return false;
+				foreach (var at in el.Attributes ())
+					if (!at.IsNamespaceDeclaration)
+						return true;
+				return false;
 			}
 		}
 
 		public override bool HasChildren {
 			get {
+				if (attr != null)
+					return false;
 				XContainer c = node as XContainer;
 				return c != null && c.FirstNode != null;
 			}
@@ -82,6 +91,8 @@ namespace System.Xml.Linq
 
 		public override bool IsEmptyElement {
 			get {
+				if (attr != null)
+					return false;
 				XElement el = node as XElement;
 				return el != null && el.IsEmpty;
 			}
@@ -130,8 +141,9 @@ namespace System.Xml.Linq
 		public override string NamespaceURI {
 			get {
 				switch (NodeType) {
+				case XPathNodeType.ProcessingInstruction:
 				case XPathNodeType.Namespace:
-					return attr.Value;
+					return String.Empty;
 				case XPathNodeType.Attribute:
 					return attr.Name.NamespaceName;
 				case XPathNodeType.Element:
@@ -171,6 +183,9 @@ namespace System.Xml.Linq
 			get {
 				XName name = null;
 				switch (NodeType) {
+				case XPathNodeType.ProcessingInstruction:
+				case XPathNodeType.Namespace:
+					return String.Empty;
 				case XPathNodeType.Attribute:
 					name = attr.Name;
 					break;
@@ -208,7 +223,10 @@ namespace System.Xml.Linq
 				case XPathNodeType.ProcessingInstruction:
 					return ((XPI) node).Data;
 				case XPathNodeType.Text:
-					return ((XText) node).Value;
+					string s = String.Empty;
+					for (var xn = node as XText; xn != null; xn = xn.NextNode as XText)
+						s += xn.Value;
+					return s;
 				case XPathNodeType.Element:
 				case XPathNodeType.Root:
 					return GetInnerText ((XContainer) node);
@@ -257,7 +275,7 @@ namespace System.Xml.Linq
 		public override bool MoveTo (XPathNavigator other)
 		{
 			XNodeNavigator nav = other as XNodeNavigator;
-			if (nav == null || nav.node.Owner != node.Owner)
+			if (nav == null || nav.node.Document != node.Document)
 				return false;
 			node = nav.node;
 			attr = nav.attr;
@@ -266,6 +284,8 @@ namespace System.Xml.Linq
 
 		public override bool MoveToFirstAttribute ()
 		{
+			if (attr != null)
+				return false;
 			XElement el = node as XElement;
 			if (el == null || !el.HasAttributes)
 				return false;
@@ -279,6 +299,8 @@ namespace System.Xml.Linq
 
 		public override bool MoveToFirstChild ()
 		{
+			if (attr != null)
+				return false;
 			XContainer c = node as XContainer;
 			if (c == null || c.FirstNode == null)
 				return false;
@@ -289,6 +311,8 @@ namespace System.Xml.Linq
 
 		public override bool MoveToFirstNamespace (XPathNamespaceScope scope)
 		{
+			if (NodeType != XPathNodeType.Element)
+				return false;
 			for (XElement el = node as XElement; el != null; el = el.Parent) {
 				foreach (XAttribute a in el.Attributes ())
 					if (a.IsNamespaceDeclaration) {
@@ -311,9 +335,14 @@ namespace System.Xml.Linq
 
 		public override bool MoveToNext ()
 		{
-			if (node.NextNode == null)
+			XNode xn = node.NextNode;
+			if (node is XText)
+				for (; xn != null; xn = xn.NextNode)
+					if (!(xn.NextNode is XText))
+						break;
+			if (xn == null)
 				return false;
-			node = node.NextNode;
+			node = xn;
 			attr = null;
 			return true;
 		}
@@ -345,6 +374,9 @@ namespace System.Xml.Linq
 			if (scope == XPathNamespaceScope.Local)
 				return false;
 
+			if (attr == attr_ns_xml)
+				return false; // no next attribute
+
 			for (XElement el = ((XElement) attr.Parent).Parent; el != null; el = el.Parent) {
 				foreach (XAttribute a in el.Attributes ())
 					if (a.IsNamespaceDeclaration) {
@@ -364,9 +396,9 @@ namespace System.Xml.Linq
 				attr = null;
 				return true;
 			}
-			if (node.Parent == null)
+			if (node.Owner == null)
 				return false;
-			node = node.Parent;
+			node = node.Owner;
 			return true;
 		}
 
@@ -381,7 +413,7 @@ namespace System.Xml.Linq
 
 		public override void MoveToRoot ()
 		{
-			node = node.Owner;
+			node = node.Document ?? node;
 			attr = null;
 		}
 	}
diff --git a/mcs/class/System.Xml.Linq/System.Xml.Linq/XNodeReader.cs b/mcs/class/System.Xml.Linq/System.Xml.Linq/XNodeReader.cs
index 5083346..942f177 100644
--- a/mcs/class/System.Xml.Linq/System.Xml.Linq/XNodeReader.cs
+++ b/mcs/class/System.Xml.Linq/System.Xml.Linq/XNodeReader.cs
@@ -130,7 +130,7 @@ namespace System.Xml.Linq
 			get { return !EOF && attr < 0 && node is XElement ? ((XElement) node).IsEmpty : false; }
 		}
 
-		XAttribute GetCurrentAttribute ()
+		internal XAttribute GetCurrentAttribute ()
 		{
 			return GetXAttribute (attr);
 		}
@@ -515,5 +515,10 @@ namespace System.Xml.Linq
 		{
 			throw new NotSupportedException ();
 		}
+		
+		// Note that this does not return attribute node.
+		internal XNode CurrentNode {
+			get { return node; }
+		}
 	}
 }
diff --git a/mcs/class/System.Xml.Linq/System.Xml.Linq/XObject.cs b/mcs/class/System.Xml.Linq/System.Xml.Linq/XObject.cs
index f73b7ad..1f80220 100644
--- a/mcs/class/System.Xml.Linq/System.Xml.Linq/XObject.cs
+++ b/mcs/class/System.Xml.Linq/System.Xml.Linq/XObject.cs
@@ -26,6 +26,7 @@
 
 using System;
 using System.Collections.Generic;
+using System.Linq;
 using System.Xml;
 
 namespace System.Xml.Linq
@@ -92,11 +93,7 @@ namespace System.Xml.Linq
 
 		public object Annotation (Type type)
 		{
-			if (annotations != null)
-				foreach (object o in annotations)
-					if (o.GetType () == type)
-						return o;
-			return null;
+			return Annotations (type).FirstOrDefault ();
 		}
 
 		public IEnumerable<T> Annotations<T> () where T : class
@@ -107,10 +104,12 @@ namespace System.Xml.Linq
 
 		public IEnumerable<object> Annotations (Type type)
 		{
+			if (type == null)
+				throw new ArgumentNullException ("type");
 			if (annotations == null)
 				yield break;
 			foreach (object o in annotations)
-				if (o.GetType () == type)
+				if (type.IsAssignableFrom (o.GetType ()))
 					yield return o;
 		}
 
@@ -124,7 +123,7 @@ namespace System.Xml.Linq
 			if (annotations == null)
 				return;
 			for (int i = 0; i < annotations.Count; i++)
-				if (annotations [i].GetType () == type)
+				if (type.IsAssignableFrom (annotations [i].GetType ()))
 					annotations.RemoveAt (i);
 		}
 
diff --git a/mcs/class/System.Xml.Linq/System.Xml.Linq_test.dll.sources b/mcs/class/System.Xml.Linq/System.Xml.Linq_test.dll.sources
index fc68463..77007ae 100644
--- a/mcs/class/System.Xml.Linq/System.Xml.Linq_test.dll.sources
+++ b/mcs/class/System.Xml.Linq/System.Xml.Linq_test.dll.sources
@@ -14,3 +14,7 @@ System.Xml.Linq/XProcessingInstructionTest.cs
 System.Xml.Linq/XStreamingElementTest.cs
 System.Xml.Linq/XTextTest.cs
 System.Xml.Schema/ExtensionsTest.cs
+System.Xml.XPath/ExtensionsTest.cs
+System.Xml.XPath/ExtensionsTest2.cs
+System.Xml.XPath/ExtensionsTest3.cs
+System.Xml.XPath/ExtensionsTest4.cs
diff --git a/mcs/class/System.Xml.Linq/System.Xml.Schema/ChangeLog b/mcs/class/System.Xml.Linq/System.Xml.Schema/ChangeLog
index aa8706b..1522ebe 100644
--- a/mcs/class/System.Xml.Linq/System.Xml.Schema/ChangeLog
+++ b/mcs/class/System.Xml.Linq/System.Xml.Schema/ChangeLog
@@ -1,3 +1,11 @@
+2010-11-30  Atsushi Eno  <atsushi at ximian.com>
+
+	Support attribute validation.
+
+2010-11-29  Atsushi Eno  <atsushi at ximian.com>
+
+	Implemented XDocument.Validate().
+
 2009-07-20  Jb Evain  <jbevain at novell.com>
 
 	* Extensions.cs: do not compile for a NET_2_1 profile.
diff --git a/mcs/class/System.Xml.Linq/System.Xml.Schema/ChangeLog b/mcs/class/System.Xml.Linq/System.Xml.Schema/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Xml.Linq/System.Xml.Schema/ChangeLog
copy to mcs/class/System.Xml.Linq/System.Xml.Schema/ChangeLog.old
diff --git a/mcs/class/System.Xml.Linq/System.Xml.Schema/Extensions.cs b/mcs/class/System.Xml.Linq/System.Xml.Schema/Extensions.cs
index fe8a41c..086257d 100644
--- a/mcs/class/System.Xml.Linq/System.Xml.Schema/Extensions.cs
+++ b/mcs/class/System.Xml.Linq/System.Xml.Schema/Extensions.cs
@@ -32,43 +32,68 @@ using System.Xml.Linq;
 
 namespace System.Xml.Schema
 {
-	[MonoTODO]
 	public static class Extensions
 	{
-		[MonoTODO]
 		public static IXmlSchemaInfo GetSchemaInfo (this XAttribute attribute)
 		{
-			throw new NotImplementedException ();
+			return attribute.Annotation<IXmlSchemaInfo> ();
 		}
 
-		[MonoTODO]
 		public static IXmlSchemaInfo GetSchemaInfo (this XElement element)
 		{
-			throw new NotImplementedException ();
+			return element.Annotation<IXmlSchemaInfo> ();
 		}
 
-		[MonoTODO]
 		public static void Validate (this XAttribute attribute, XmlSchemaObject partialValidationType, XmlSchemaSet schemas, ValidationEventHandler handler)
 		{
-			throw new NotImplementedException ();
+			Validate (attribute, partialValidationType, schemas, handler, false);
 		}
 
-		[MonoTODO]
 		public static void Validate (this XAttribute attribute, XmlSchemaObject partialValidationType, XmlSchemaSet schemas, ValidationEventHandler handler, bool addSchemaInfo)
 		{
-			throw new NotImplementedException ();
+			if (attribute == null)
+				throw new ArgumentNullException ("attribute");
+			if (schemas == null)
+				throw new ArgumentNullException ("schemas");
+			var nsmgr = new XmlNamespaceManager (new NameTable ());
+			var v = new XmlSchemaValidator (nsmgr.NameTable, schemas, nsmgr, XmlSchemaValidationFlags.None);
+			if (handler != null)
+				v.ValidationEventHandler += handler;
+			if (partialValidationType != null)
+				v.Initialize (partialValidationType);
+			else
+				v.Initialize ();
+			var xi = addSchemaInfo ? new XmlSchemaInfo () : null;
+			v.ValidateAttribute (attribute.Name.LocalName, attribute.Name.NamespaceName, attribute.Value, xi);
 		}
 
-		[MonoTODO]
 		public static void Validate (this XDocument document, XmlSchemaSet schemas, ValidationEventHandler handler)
 		{
-			throw new NotImplementedException ();
+			Validate (document, schemas, handler, false);
 		}
 
-		[MonoTODO]
 		public static void Validate (this XDocument document, XmlSchemaSet schemas, ValidationEventHandler handler, bool addSchemaInfo)
 		{
-			throw new NotImplementedException ();
+			if (document == null)
+				throw new ArgumentNullException ("document");
+			if (schemas == null)
+				throw new ArgumentNullException ("schemas");
+			var xrs = new XmlReaderSettings () { ValidationType = ValidationType.Schema };
+			xrs.Schemas = schemas;
+			xrs.ValidationEventHandler += handler;
+			var source = new XNodeReader (document);
+			var xr = XmlReader.Create (source, xrs);
+			while (xr.Read ()) {
+				if (addSchemaInfo) {
+					if (xr.NodeType == XmlNodeType.Element) {
+						source.CurrentNode.AddAnnotation (xr.SchemaInfo);
+						while (xr.MoveToNextAttribute ())
+							if (xr.NamespaceURI != XUtil.XmlnsNamespace)
+								source.GetCurrentAttribute ().AddAnnotation (xr.SchemaInfo);
+						xr.MoveToElement ();
+					}
+				}
+			}
 		}
 
 		[MonoTODO]
diff --git a/mcs/class/System.Xml.Linq/Test/System.Xml.Schema/ChangeLog b/mcs/class/System.Xml.Linq/Test/System.Xml.Schema/ChangeLog
index c8d17d2..592bdd7 100644
--- a/mcs/class/System.Xml.Linq/Test/System.Xml.Schema/ChangeLog
+++ b/mcs/class/System.Xml.Linq/Test/System.Xml.Schema/ChangeLog
@@ -1,3 +1,11 @@
+2010-11-30  Atsushi Eno  <atsushi at ximian.com>
+
+	Support attribute validation.
+
+2010-11-29  Atsushi Eno  <atsushi at ximian.com>
+
+	Implemented XDocument.Validate().
+
 2010-05-28  Atsushi Enomoto  <atsushi at ximian.com>
 
 	* ExtensionsTest.cs :
diff --git a/mcs/class/System.Xml.Linq/Test/System.Xml.Schema/ChangeLog b/mcs/class/System.Xml.Linq/Test/System.Xml.Schema/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Xml.Linq/Test/System.Xml.Schema/ChangeLog
copy to mcs/class/System.Xml.Linq/Test/System.Xml.Schema/ChangeLog.old
diff --git a/mcs/class/System.Xml.Linq/Test/System.Xml.Schema/ExtensionsTest.cs b/mcs/class/System.Xml.Linq/Test/System.Xml.Schema/ExtensionsTest.cs
index 691b8ab..2ed1b5d 100644
--- a/mcs/class/System.Xml.Linq/Test/System.Xml.Schema/ExtensionsTest.cs
+++ b/mcs/class/System.Xml.Linq/Test/System.Xml.Schema/ExtensionsTest.cs
@@ -128,7 +128,6 @@ namespace MonoTests.System.Xml.Schema
 
 		// test succesfull validation
 		[Test]
-		[Category ("NotWorking")]
 		public void XDocumentSuccessValidate () 
 		{       
 			validationSucceded = true;
@@ -139,7 +138,6 @@ namespace MonoTests.System.Xml.Schema
 
 		// test failed validation
 		[Test]
-		[Category ("NotWorking")]
 		public void XDocumentFailValidate ()
 		{       
 			String elementName = "AlteringElementName";
@@ -161,7 +159,6 @@ namespace MonoTests.System.Xml.Schema
 		 */
 		[Test]
 		[ExpectedException (typeof (XmlSchemaValidationException))]
-		[Category ("NotWorking")]
 		public void XDocumentThrowExceptionValidate ()
 		{
 			String elementName = "AlteringElementName";
@@ -179,7 +176,6 @@ namespace MonoTests.System.Xml.Schema
 		 * the post-schema-validation infoset (PSVI)
 		 */
 		[Test]
-		[Category ("NotWorking")]
 		public void XDocumentAddSchemaInfoValidate ()
 		{      
 			// no. of elements before validation
@@ -231,7 +227,6 @@ namespace MonoTests.System.Xml.Schema
 		 * the post-schema-validation infoset (PSVI).
 		 */
 		[Test]
-		[Category ("NotWorking")]
 		public void XDocumentNoSchemaInfoValidate ()
 		{
 			// no. of elements before validation
@@ -281,7 +276,6 @@ namespace MonoTests.System.Xml.Schema
 
 		// attribute validation succeeds after change
 		[Test]
-		[Category ("NotWorking")]
 		public void XAttributeSuccessValidate ()
 		{
 			String elementName = "note";
@@ -304,7 +298,6 @@ namespace MonoTests.System.Xml.Schema
 
 		// attribute validation fails after change
 		[Test]
-		[Category ("NotWorking")]
 		public void XAttributeFailValidate ()
 		{
 			String elementName = "note";
@@ -331,7 +324,6 @@ namespace MonoTests.System.Xml.Schema
 		 */
 		[Test]
 		[ExpectedException (typeof (XmlSchemaValidationException))]
-		[Category ("NotWorking")]
 		public void XAttributeThrowExceptionValidate ()
 		{
 			String elementName = "note";
diff --git a/mcs/class/System.Xml.Linq/Test/System.Xml.XPath/ExtensionsTest.cs b/mcs/class/System.Xml.Linq/Test/System.Xml.XPath/ExtensionsTest.cs
new file mode 100644
index 0000000..84ca719
--- /dev/null
+++ b/mcs/class/System.Xml.Linq/Test/System.Xml.XPath/ExtensionsTest.cs
@@ -0,0 +1,456 @@
+//
+// Author:
+//	Atsushi Enomoto <atsushi at ximian.com>
+//
+// Copyright (C) 2010 Novell, Inc.
+// (C) 2003 Atsushi Enomoto <ginga at kit.hi-ho.ne.jp>
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+//
+// (based on XPathNavigatorCommonTests)
+//
+
+using System;
+using System.IO;
+using System.Linq;
+using System.Xml;
+using System.Xml.Linq;
+using System.Xml.XPath;
+using NUnit.Framework;
+
+namespace MonoTests.System.Xml
+{
+	[TestFixture]
+	public class ExtensionsTest
+	{
+		XPathNavigator nav;
+
+		private void AssertNavigator (string label, XPathNavigator nav, XPathNodeType type, string prefix, string localName, string ns, string name, string value, bool hasAttributes, bool hasChildren, bool isEmptyElement)
+		{
+			label += nav.GetType ();
+			Assert.AreEqual (type, nav.NodeType, label + "NodeType");
+			Assert.AreEqual (prefix, nav.Prefix, label + "Prefix");
+			Assert.AreEqual (localName, nav.LocalName, label + "LocalName");
+			Assert.AreEqual (ns, nav.NamespaceURI, label + "Namespace");
+			Assert.AreEqual (name, nav.Name, label + "Name");
+			Assert.AreEqual (value, nav.Value, label + "Value");
+			Assert.AreEqual (hasAttributes, nav.HasAttributes, label + "HasAttributes");
+			Assert.AreEqual (hasChildren, nav.HasChildren, label + "HasChildren");
+			Assert.AreEqual (isEmptyElement, nav.IsEmptyElement, label + "IsEmptyElement");
+		}
+
+		[Test]
+		public void DocumentWithXmlDeclaration ()
+		{
+			string xml = "<?xml version=\"1.0\" standalone=\"yes\"?><foo>bar</foo>";
+
+			nav = XDocument.Parse (xml).CreateNavigator ();
+			DocumentWithXmlDeclaration (nav);
+		}
+
+		public void DocumentWithXmlDeclaration (XPathNavigator nav)
+		{
+			nav.MoveToFirstChild ();
+			AssertNavigator ("#1", nav, XPathNodeType.Element, "", "foo", "", "foo", "bar", false, true, false);
+		}
+
+		[Test]
+		public void DocumentWithProcessingInstruction ()
+		{
+			string xml = "<?xml-stylesheet href='foo.xsl' type='text/xsl' ?><foo />";
+
+			nav = XDocument.Parse (xml).CreateNavigator ();
+			DocumentWithProcessingInstruction (nav);
+		}
+
+		public void DocumentWithProcessingInstruction (XPathNavigator nav)
+		{
+			Assert.IsTrue (nav.MoveToFirstChild ());
+			AssertNavigator ("#1", nav, XPathNodeType.ProcessingInstruction, "", "xml-stylesheet", "", "xml-stylesheet", "href='foo.xsl' type='text/xsl' ", false, false, false);
+			Assert.IsTrue (!nav.MoveToFirstChild ());
+		}
+
+		[Test]
+		public void XmlRootElementOnly ()
+		{
+			string xml = "<foo />";
+
+			nav = XDocument.Parse (xml).CreateNavigator ();
+			XmlRootElementOnly (nav);
+		}
+
+		private void XmlRootElementOnly (XPathNavigator nav)
+		{
+			AssertNavigator ("#1", nav, XPathNodeType.Root, "", "", "", "", "", false, true, false);
+			Assert.IsTrue (nav.MoveToFirstChild ());
+			AssertNavigator ("#2", nav, XPathNodeType.Element, "", "foo", "", "foo", "", false, false, true);
+			Assert.IsTrue (!nav.MoveToFirstChild ());
+			Assert.IsTrue (!nav.MoveToNext ());
+			Assert.IsTrue (!nav.MoveToPrevious ());
+			nav.MoveToRoot ();
+			AssertNavigator ("#3", nav, XPathNodeType.Root, "", "", "", "", "", false, true, false);
+			Assert.IsTrue (!nav.MoveToNext ());
+		}
+
+		[Test]
+		public void XmlSimpleTextContent ()
+		{
+			string xml = "<foo>Test.</foo>";
+
+			nav = XDocument.Parse (xml).CreateNavigator ();
+			XmlSimpleTextContent (nav);
+		}
+
+		private void XmlSimpleTextContent (XPathNavigator nav)
+		{
+			AssertNavigator ("#1", nav, XPathNodeType.Root, "", "", "", "", "Test.", false, true, false);
+			Assert.IsTrue (nav.MoveToFirstChild (), "#x1");
+			AssertNavigator ("#2", nav, XPathNodeType.Element, "", "foo", "", "foo", "Test.", false, true, false);
+			Assert.IsTrue (!nav.MoveToNext (), "#x2");
+			Assert.IsTrue (!nav.MoveToPrevious (), "#x3");
+			Assert.IsTrue (nav.MoveToFirstChild (), "#x4");
+			AssertNavigator ("#3", nav, XPathNodeType.Text, "", "", "", "", "Test.", false, false, false);
+
+			Assert.IsTrue (nav.MoveToParent (), "#x5");
+			AssertNavigator ("#4", nav, XPathNodeType.Element, "", "foo", "", "foo", "Test.", false, true, false);
+
+			Assert.IsTrue (nav.MoveToParent (), "#x6");
+			AssertNavigator ("#5", nav, XPathNodeType.Root, "", "", "", "", "Test.", false, true, false);
+
+			nav.MoveToFirstChild ();
+			nav.MoveToFirstChild ();
+			nav.MoveToRoot ();
+			AssertNavigator ("#6", nav, XPathNodeType.Root, "", "", "", "", "Test.", false, true, false);
+			Assert.IsTrue (!nav.MoveToNext (), "#x7");
+		}
+
+		[Test]
+		public void XmlSimpleElementContent ()
+		{
+			string xml = "<foo><bar /></foo>";
+
+			nav = XDocument.Parse (xml).CreateNavigator ();
+			XmlSimpleElementContent (nav);
+		}
+
+		private void XmlSimpleElementContent (XPathNavigator nav)
+		{
+			AssertNavigator ("#1", nav, XPathNodeType.Root, "", "", "", "", "", false, true, false);
+			Assert.IsTrue (nav.MoveToFirstChild ());
+			AssertNavigator ("#2", nav, XPathNodeType.Element, "", "foo", "", "foo", "", false, true, false);
+			Assert.IsTrue (!nav.MoveToNext ());
+			Assert.IsTrue (!nav.MoveToPrevious ());
+
+			Assert.IsTrue (nav.MoveToFirstChild ());
+			AssertNavigator ("#3", nav, XPathNodeType.Element, "", "bar", "", "bar", "", false, false, true);
+
+			Assert.IsTrue (nav.MoveToParent ());
+			AssertNavigator ("#4", nav, XPathNodeType.Element, "", "foo", "", "foo", "", false, true, false);
+
+			nav.MoveToRoot ();
+			AssertNavigator ("#5", nav, XPathNodeType.Root, "", "", "", "", "", false, true, false);
+			Assert.IsTrue (!nav.MoveToNext ());
+		}
+
+		[Test]
+		public void XmlTwoElementsContent ()
+		{
+			string xml = "<foo><bar /><baz /></foo>";
+
+			nav = XDocument.Parse (xml).CreateNavigator ();
+			XmlTwoElementsContent (nav);
+		}
+
+		private void XmlTwoElementsContent (XPathNavigator nav)
+		{
+			AssertNavigator ("#1", nav, XPathNodeType.Root, "", "", "", "", "", false, true, false);
+
+			Assert.IsTrue (nav.MoveToFirstChild ());
+			AssertNavigator ("#2", nav, XPathNodeType.Element, "", "foo", "", "foo", "", false, true, false);
+			Assert.IsTrue (!nav.MoveToNext ());
+			Assert.IsTrue (!nav.MoveToPrevious ());
+
+			Assert.IsTrue (nav.MoveToFirstChild ());
+			AssertNavigator ("#3", nav, XPathNodeType.Element, "", "bar", "", "bar", "", false, false, true);
+			Assert.IsTrue (!nav.MoveToFirstChild ());
+
+			Assert.IsTrue (nav.MoveToNext ());
+			AssertNavigator ("#4", nav, XPathNodeType.Element, "", "baz", "", "baz", "", false, false, true);
+			Assert.IsTrue (!nav.MoveToFirstChild ());
+
+			Assert.IsTrue (nav.MoveToPrevious ());
+			AssertNavigator ("#5", nav, XPathNodeType.Element, "", "bar", "", "bar", "", false, false, true);
+
+			nav.MoveToRoot ();
+			AssertNavigator ("#6", nav, XPathNodeType.Root, "", "", "", "", "", false, true, false);
+			Assert.IsTrue (!nav.MoveToNext ());
+		}
+
+		[Test]
+		public void XmlElementWithAttributes ()
+		{
+			string xml = "<img src='foo.png' alt='image Fooooooo!' />";
+
+			nav = XDocument.Parse (xml).CreateNavigator ();
+			XmlElementWithAttributes (nav);
+		}
+
+		private void XmlElementWithAttributes (XPathNavigator nav)
+		{
+			nav.MoveToFirstChild ();
+			AssertNavigator ("#1", nav, XPathNodeType.Element, "", "img", "", "img", "", true, false, true);
+			Assert.IsTrue (!nav.MoveToNext (), "#x1");
+			Assert.IsTrue (!nav.MoveToPrevious (), "#x2");
+
+			Assert.IsTrue (nav.MoveToFirstAttribute (), "#x3");
+			AssertNavigator ("#2", nav, XPathNodeType.Attribute, "", "src", "", "src", "foo.png", false, false, false);
+			Assert.IsTrue (!nav.MoveToFirstAttribute (), "#x4");	// On attributes, it fails.
+
+			Assert.IsTrue (nav.MoveToNextAttribute (), "#x5");
+			AssertNavigator ("#3", nav, XPathNodeType.Attribute, "", "alt", "", "alt", "image Fooooooo!", false, false, false);
+			Assert.IsTrue (!nav.MoveToNextAttribute (), "#x6");
+
+			Assert.IsTrue (nav.MoveToParent (), "#x7");
+			AssertNavigator ("#4", nav, XPathNodeType.Element, "", "img", "", "img", "", true, false, true);
+
+			Assert.IsTrue (nav.MoveToAttribute ("alt", ""), "#x8");
+			AssertNavigator ("#5", nav, XPathNodeType.Attribute, "", "alt", "", "alt", "image Fooooooo!", false, false, false);
+			Assert.IsTrue (!nav.MoveToAttribute ("src", ""), "#x9");	// On attributes, it fails.
+			Assert.IsTrue (nav.MoveToParent (), "#x10");
+			Assert.IsTrue (nav.MoveToAttribute ("src", ""), "#x11");
+			AssertNavigator ("#6", nav, XPathNodeType.Attribute, "", "src", "", "src", "foo.png", false, false, false);
+
+			nav.MoveToRoot ();
+			AssertNavigator ("#7", nav, XPathNodeType.Root, "", "", "", "", "", false, true, false);
+		}
+
+		[Test]
+		// seems like MS does not want to fix their long-time-known
+		// XPathNavigator bug, so just set it as NotDotNet.
+		// We are better.
+		[Category ("NotDotNet")]
+		public void XmlNamespaceNode ()
+		{
+			string xml = "<html xmlns='http://www.w3.org/1999/xhtml'><body>test.</body></html>";
+
+			nav = XDocument.Parse (xml).CreateNavigator ();
+			XmlNamespaceNode (nav);
+		}
+
+		private void XmlNamespaceNode (XPathNavigator nav)
+		{
+			string xhtml = "http://www.w3.org/1999/xhtml";
+			string xmlNS = "http://www.w3.org/XML/1998/namespace";
+			nav.MoveToFirstChild ();
+			AssertNavigator ("#1", nav, XPathNodeType.Element,
+				"", "html", xhtml, "html", "test.", false, true, false);
+			Assert.IsTrue (nav.MoveToFirstNamespace (XPathNamespaceScope.Local));
+			AssertNavigator ("#2", nav, XPathNodeType.Namespace,
+				"", "", "", "", xhtml, false, false, false);
+
+			// Test difference between Local, ExcludeXml and All.
+			Assert.IsTrue (!nav.MoveToNextNamespace (XPathNamespaceScope.Local));
+			Assert.IsTrue (!nav.MoveToNextNamespace (XPathNamespaceScope.ExcludeXml));
+			// LAMESPEC: MS.NET 1.0 XmlDocument seems to have some bugs around here.
+			// see http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q316808
+#if true
+			Assert.IsTrue (nav.MoveToNextNamespace (XPathNamespaceScope.All));
+			AssertNavigator ("#3", nav, XPathNodeType.Namespace,
+				"", "xml", "", "xml", xmlNS, false, false, false);
+			Assert.IsTrue (!nav.MoveToNextNamespace (XPathNamespaceScope.All));
+#endif
+			// Test to check if MoveToRoot() resets Namespace node status.
+			nav.MoveToRoot ();
+			AssertNavigator ("#4", nav, XPathNodeType.Root, "", "", "", "", "test.", false, true, false);
+			nav.MoveToFirstChild ();
+
+			// Test without XPathNamespaceScope argument.
+			Assert.IsTrue (nav.MoveToFirstNamespace ());
+			Assert.IsTrue (nav.MoveToNextNamespace ());
+			AssertNavigator ("#5", nav, XPathNodeType.Namespace,
+				"", "xml", "", "xml", xmlNS, false, false, false);
+
+			// Test MoveToParent()
+			Assert.IsTrue (nav.MoveToParent ());
+			AssertNavigator ("#6", nav, XPathNodeType.Element,
+				"", "html", xhtml, "html", "test.", false, true, false);
+
+			nav.MoveToFirstChild ();	// body
+			// Test difference between Local and ExcludeXml
+			Assert.IsTrue (!nav.MoveToFirstNamespace (XPathNamespaceScope.Local), "Local should fail");
+			Assert.IsTrue (nav.MoveToFirstNamespace (XPathNamespaceScope.ExcludeXml), "ExcludeXml should succeed");
+			AssertNavigator ("#7", nav, XPathNodeType.Namespace,
+				"", "", "", "", xhtml, false, false, false);
+
+			Assert.IsTrue (nav.MoveToNextNamespace (XPathNamespaceScope.All));
+			AssertNavigator ("#8", nav, XPathNodeType.Namespace,
+				"", "xml", "", "xml", xmlNS, false, false, false);
+			Assert.IsTrue (nav.MoveToParent ());
+			AssertNavigator ("#9", nav, XPathNodeType.Element,
+				"", "body", xhtml, "body", "test.", false, true, false);
+
+			nav.MoveToRoot ();
+			AssertNavigator ("#10", nav, XPathNodeType.Root, "", "", "", "", "test.", false, true, false);
+		}
+
+		[Test]
+		public void MoveToNamespaces ()
+		{
+			string xml = "<a xmlns:x='urn:x'><b xmlns:y='urn:y'/><c/><d><e attr='a'/></d></a>";
+
+			nav = XDocument.Parse (xml).CreateNavigator ();
+			MoveToNamespaces (nav);
+		}
+
+		private void MoveToNamespaces (XPathNavigator nav)
+		{
+			XPathNodeIterator iter = nav.Select ("//e");
+			iter.MoveNext ();
+			nav.MoveTo (iter.Current);
+			Assert.AreEqual ("e", nav.Name, "#1");
+			nav.MoveToFirstNamespace ();
+			Assert.AreEqual ("x", nav.Name, "#2");
+			nav.MoveToNextNamespace ();
+			Assert.AreEqual ("xml", nav.Name, "#3");
+		}
+
+		[Test]
+		public void IsDescendant ()
+		{
+			string xml = "<a><b/><c/><d><e attr='a'/></d></a>";
+
+			nav = XDocument.Parse (xml).CreateNavigator ();
+			IsDescendant (nav);
+		}
+
+		private void IsDescendant (XPathNavigator nav)
+		{
+			XPathNavigator tmp = nav.Clone ();
+			XPathNodeIterator iter = nav.Select ("//e");
+			iter.MoveNext ();
+			Assert.IsTrue (nav.MoveTo (iter.Current), "#1");
+			Assert.IsTrue (nav.MoveToFirstAttribute (), "#2");
+			Assert.AreEqual ("attr", nav.Name, "#3");
+			Assert.AreEqual ("", tmp.Name, "#4");
+			Assert.IsTrue (tmp.IsDescendant (nav), "#5");
+			Assert.IsTrue (!nav.IsDescendant (tmp), "#6");
+			tmp.MoveToFirstChild ();
+			Assert.AreEqual ("a", tmp.Name, "#7");
+			Assert.IsTrue (tmp.IsDescendant (nav), "#8");
+			Assert.IsTrue (!nav.IsDescendant (tmp), "#9");
+			tmp.MoveTo (iter.Current);
+			Assert.AreEqual ("e", tmp.Name, "#10");
+			Assert.IsTrue (tmp.IsDescendant (nav), "#11");
+			Assert.IsTrue (!nav.IsDescendant (tmp), "#12");
+		}
+
+		[Test]
+		public void LiterallySplitText ()
+		{
+			string xml = "<root><![CDATA[test]]> string</root>";
+
+			nav = XDocument.Parse (xml).CreateNavigator ();
+			LiterallySplitText (nav);
+		}
+
+		private void LiterallySplitText (XPathNavigator nav)
+		{
+			nav.MoveToFirstChild ();
+			nav.MoveToFirstChild ();
+			Assert.AreEqual (XPathNodeType.Text, nav.NodeType, "#1");
+			Assert.AreEqual ("test string", nav.Value, "#2");
+		}
+
+		// bug #75609
+		[Test]
+		public void SelectChildren ()
+		{
+			string xml = "<root><foo xmlns='urn:foo' /><ns:foo xmlns:ns='urn:foo' /></root>";
+
+			nav = XDocument.Parse (xml).CreateNavigator ();
+			SelectChildrenNS (nav);
+		}
+
+		private void SelectChildrenNS (XPathNavigator nav)
+		{
+			nav.MoveToFirstChild (); // root
+			XPathNodeIterator iter = nav.SelectChildren ("foo", "urn:foo");
+			Assert.AreEqual (2, iter.Count, "#1");
+		}
+
+#if NET_2_0
+
+		[Test]
+		// bug #78067
+		public void OuterXml ()
+		{
+			string xml = @"<?xml version=""1.0""?>
+<one>
+        <two>Some data.</two>
+</one>";
+
+			nav = XDocument.Parse (xml).CreateNavigator ();
+			OuterXml (nav);
+		}
+
+		private void OuterXml (XPathNavigator nav)
+		{
+			string ret = @"<one>
+  <two>Some data.</two>
+</one>";
+			Assert.AreEqual (ret, nav.OuterXml.Replace ("\r\n", "\n"), "#1");
+		}
+
+		[Test]
+		public void ReadSubtreeLookupNamespace ()
+		{
+			string xml = "<x:foo xmlns:x='urn:x'><bar>x:val</bar></x:foo>";
+			var doc = new XmlDocument ();
+			doc.LoadXml (xml);
+			XPathNavigator nav = doc.LastChild.LastChild.CreateNavigator ();
+			var xr = nav.ReadSubtree ();
+			xr.MoveToContent ();
+			xr.Read (); // should be at x:val
+			Assert.AreEqual ("urn:x", xr.LookupNamespace ("x"), "#1");
+		}
+#endif
+
+		[Test]
+		public void GetNamespaceConsistentTree ()
+		{
+			string xml = "<x:root xmlns:x='urn:x'>  <x:foo xmlns='ns1'> <x:bar /> </x:foo>  <x:foo xmlns:y='ns2'> <x:bar /> </x:foo></x:root>";
+			nav = XDocument.Parse (xml).CreateNavigator ();
+			GetNamespaceConsistentTree (nav);
+		}
+
+		private void GetNamespaceConsistentTree (XPathNavigator nav)
+		{
+			nav.MoveToFirstChild ();
+			nav.MoveToFirstChild ();
+			nav.MoveToNext ();
+			Assert.AreEqual (String.Empty, nav.GetNamespace (""), "#1." + nav.GetType ());
+			nav.MoveToNext ();
+			nav.MoveToNext ();
+			Assert.AreEqual ("", nav.GetNamespace (""), "#2." + nav.GetType ());
+		}
+	}
+}
\ No newline at end of file
diff --git a/mcs/class/System.Xml.Linq/Test/System.Xml.XPath/ExtensionsTest2.cs b/mcs/class/System.Xml.Linq/Test/System.Xml.XPath/ExtensionsTest2.cs
new file mode 100644
index 0000000..ad8d016
--- /dev/null
+++ b/mcs/class/System.Xml.Linq/Test/System.Xml.XPath/ExtensionsTest2.cs
@@ -0,0 +1,692 @@
+//
+// Authors:
+//   Jason Diamond <jason at injektilo.org>
+//   Martin Willemoes Hansen <mwh at sysrq.dk>
+//   Atsushi Enomoto <atsushi at ximian.com>
+//
+// (C) 2002 Jason Diamond
+// (C) 2003 Martin Willemoes Hansen
+// (C) 2004-2006 Novell, Inc.
+// (C) 2003 Atsushi Enomoto <ginga at kit.hi-ho.ne.jp>
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+//
+// imported from XPathNavigatorTests
+//
+
+using System;
+using System.IO;
+using System.Linq;
+using System.Xml;
+using System.Xml.Linq;
+using System.Xml.XPath;
+using System.Xml.Xsl;
+
+using NUnit.Framework;
+
+namespace MonoTests.System.Xml
+{
+	[TestFixture]
+	public class ExtensionsTest2
+	{
+		XPathNavigator navigator;
+		
+		[Test]
+		public void CreateNavigator ()
+		{
+			navigator = XDocument.Parse ("<foo />").CreateNavigator ();
+			Assert.IsNotNull (navigator);
+		}
+
+		[Test]
+		public void PropertiesOnDocument ()
+		{
+			navigator = XDocument.Parse ("<foo:bar xmlns:foo='#foo' />").CreateNavigator ();
+			
+			Assert.AreEqual (XPathNodeType.Root, navigator.NodeType, "#1");
+			Assert.AreEqual (String.Empty, navigator.Name, "#2");
+			Assert.AreEqual (String.Empty, navigator.LocalName, "#3");
+			Assert.AreEqual (String.Empty, navigator.NamespaceURI, "#4");
+			Assert.AreEqual (String.Empty, navigator.Prefix, "#5");
+			Assert.IsTrue (!navigator.HasAttributes, "#6");
+			Assert.IsTrue (navigator.HasChildren, "#7");
+			Assert.IsTrue (!navigator.IsEmptyElement, "#8");
+		}
+
+		[Test]
+		public void PropertiesOnElement ()
+		{
+			navigator = XDocument.Parse ("<foo:bar xmlns:foo='#foo' />").FirstNode.CreateNavigator ();
+			
+			Assert.AreEqual (XPathNodeType.Element, navigator.NodeType, "#1");
+			Assert.AreEqual ("foo:bar", navigator.Name, "#2");
+			Assert.AreEqual ("bar", navigator.LocalName, "#3");
+			Assert.AreEqual ("#foo", navigator.NamespaceURI, "#4");
+			Assert.AreEqual ("foo", navigator.Prefix, "#5");
+			Assert.IsTrue (!navigator.HasAttributes, "#6");
+			Assert.IsTrue (!navigator.HasChildren, "#7");
+			Assert.IsTrue (navigator.IsEmptyElement, "#8");
+		}
+
+		[Test]
+		public void Navigation ()
+		{
+			navigator = XDocument.Parse ("<foo><bar /><baz /></foo>").FirstNode.CreateNavigator ();
+			
+			Assert.AreEqual ("foo", navigator.Name, "#1");
+			Assert.IsTrue (navigator.MoveToFirstChild (), "#2");
+			Assert.AreEqual ("bar", navigator.Name, "#3");
+			Assert.IsTrue (navigator.MoveToNext (), "#4");
+			Assert.AreEqual ("baz", navigator.Name, "#5");
+			Assert.IsTrue (!navigator.MoveToNext (), "#6");
+			Assert.AreEqual ("baz", navigator.Name, "#7");
+			Assert.IsTrue (navigator.MoveToPrevious (), "#8");
+			Assert.AreEqual ("bar", navigator.Name, "#9");
+			Assert.IsTrue (!navigator.MoveToPrevious (), "#10");
+			Assert.IsTrue (navigator.MoveToParent (), "#11");
+			Assert.AreEqual ("foo", navigator.Name, "#12");
+			navigator.MoveToRoot ();
+			Assert.AreEqual (XPathNodeType.Root, navigator.NodeType, "#13");
+			Assert.IsTrue (!navigator.MoveToParent (), "#14");
+			Assert.AreEqual (XPathNodeType.Root, navigator.NodeType, "#15");
+			Assert.IsTrue (navigator.MoveToFirstChild (), "#16");
+			Assert.AreEqual ("foo", navigator.Name, "#17");
+			Assert.IsTrue (navigator.MoveToFirst (), "#18");
+			Assert.AreEqual ("foo", navigator.Name, "#19");
+			Assert.IsTrue (navigator.MoveToFirstChild (), "#20");
+			Assert.AreEqual ("bar", navigator.Name, "#21");
+			Assert.IsTrue (navigator.MoveToNext (), "#22");
+			Assert.AreEqual ("baz", navigator.Name, "#23");
+			Assert.IsTrue (navigator.MoveToFirst (), "#24");
+			Assert.AreEqual ("bar", navigator.Name, "#25");
+		}
+
+		[Test]
+		[Category ("NotDotNet")] // fails to differentiate document instances
+		public void MoveToAndIsSamePosition ()
+		{
+			var doc1 = XDocument.Parse ("<foo><bar /></foo>");
+			XPathNavigator navigator1a = doc1.FirstNode.CreateNavigator ();
+			XPathNavigator navigator1b = doc1.FirstNode.CreateNavigator ();
+
+			var doc2 = XDocument.Parse ("<foo><bar /></foo>");
+			XPathNavigator navigator2 = doc2.FirstNode.CreateNavigator ();
+
+			Assert.AreEqual ("foo", navigator1a.Name, "#1");
+			Assert.IsTrue (navigator1a.MoveToFirstChild (), "#2");
+			Assert.AreEqual ("bar", navigator1a.Name, "#3");
+
+			Assert.IsTrue (!navigator1b.IsSamePosition (navigator1a), "#4");
+			Assert.AreEqual ("foo", navigator1b.Name, "#5");
+			Assert.IsTrue (navigator1b.MoveTo (navigator1a), "#6");
+			Assert.IsTrue (navigator1b.IsSamePosition (navigator1a), "#7");
+			Assert.AreEqual ("bar", navigator1b.Name, "#8");
+
+			Assert.IsTrue (!navigator2.IsSamePosition (navigator1a), "#9");
+			Assert.AreEqual ("foo", navigator2.Name, "#10");
+			Assert.IsFalse (navigator2.MoveTo (navigator1a), "#11");
+			Assert.AreEqual ("foo", navigator2.Name, "#12");
+		}
+
+		[Test]
+		public void AttributeNavigation ()
+		{
+			navigator = XDocument.Parse ("<foo bar='baz' quux='quuux' />").FirstNode.CreateNavigator ();
+
+			Assert.AreEqual (XPathNodeType.Element, navigator.NodeType, "#1");
+			Assert.AreEqual ("foo", navigator.Name, "#2");
+			Assert.IsTrue (navigator.MoveToFirstAttribute (), "#3");
+			Assert.AreEqual (XPathNodeType.Attribute, navigator.NodeType, "#4");
+			Assert.AreEqual ("bar", navigator.Name, "#5");
+			Assert.AreEqual ("baz", navigator.Value, "#6");
+			Assert.IsTrue (navigator.MoveToNextAttribute (), "#7");
+			Assert.AreEqual (XPathNodeType.Attribute, navigator.NodeType, "#8");
+			Assert.AreEqual ("quux", navigator.Name, "#9");
+			Assert.AreEqual ("quuux", navigator.Value, "#10");
+		}
+
+		[Test]
+		public void ElementAndRootValues()
+		{
+			navigator = XDocument.Parse ("<foo><bar>baz</bar><quux>quuux</quux></foo>").FirstNode.CreateNavigator ();
+
+			Assert.AreEqual (XPathNodeType.Element, navigator.NodeType, "#1");
+			Assert.AreEqual ("foo", navigator.Name, "#2");
+			//Assert.AreEqual ("bazquuux", navigator.Value, "#3");
+
+			navigator.MoveToRoot ();
+			//Assert.AreEqual ("bazquuux", navigator.Value, "#4");
+		}
+
+		[Test]
+		public void DocumentWithXmlDeclaration ()
+		{
+			navigator = XDocument.Parse ("<?xml version=\"1.0\" standalone=\"yes\"?><Root><foo>bar</foo></Root>").CreateNavigator ();
+
+			navigator.MoveToRoot ();
+			navigator.MoveToFirstChild ();
+			Assert.AreEqual (XPathNodeType.Element, navigator.NodeType, "#1");
+			Assert.AreEqual ("Root", navigator.Name, "#2");
+		}
+
+		[Test]
+		public void DocumentWithProcessingInstruction ()
+		{
+			navigator = XDocument.Parse ("<?xml-stylesheet href='foo.xsl' type='text/xsl' ?><foo />").CreateNavigator ();
+
+			Assert.IsTrue (navigator.MoveToFirstChild ());
+			Assert.AreEqual (XPathNodeType.ProcessingInstruction, navigator.NodeType, "#1");
+			Assert.AreEqual ("xml-stylesheet", navigator.Name, "#2");
+
+			XPathNodeIterator iter = navigator.SelectChildren (XPathNodeType.Element);
+			Assert.AreEqual (0, iter.Count, "#3");
+		}
+
+		/*
+		[Test]
+		public void SelectFromOrphan ()
+		{
+			// SelectSingleNode () from node without parent.
+			XmlDocument doc = new XmlDocument ();
+			doc.LoadXml ("<foo><include id='original' /></foo>");
+
+			XmlNode node = doc.CreateElement ("child");
+			node.InnerXml = "<include id='new' />";
+
+			XmlNode new_include = node.SelectSingleNode ("//include");
+			Assert.AreEqual ("<include id=\"new\" />", new_include.OuterXml, "#1");
+
+			// In this case 'node2' has parent 'node'
+			doc = new XmlDocument ();
+			doc.LoadXml ("<foo><include id='original' /></foo>");
+
+			node = doc.CreateElement ("child");
+			XmlNode node2 = doc.CreateElement ("grandchild");
+			node.AppendChild (node2);
+			node2.InnerXml = "<include id='new' />";
+
+			new_include = node2.SelectSingleNode ("/");
+			Assert.AreEqual ("<child><grandchild><include id=\"new\" /></grandchild></child>",
+				new_include.OuterXml, "#2");
+		}
+		*/
+
+		[Test]
+		[ExpectedException (typeof (NotSupportedException))]
+		public void XPathDocumentMoveToId ()
+		{
+			string dtd = "<!DOCTYPE root [<!ELEMENT root EMPTY><!ATTLIST root id ID #REQUIRED>]>";
+			string xml = dtd + "<root id='aaa'/>";
+			XPathNavigator nav = navigator = XDocument.Parse (xml).CreateNavigator ();
+			Assert.IsTrue (nav.MoveToId ("aaa"), "ctor() from TextReader");
+
+			XmlValidatingReader xvr = new XmlValidatingReader (xml, XmlNodeType.Document, null);
+			nav = new XPathDocument (xvr).CreateNavigator ();
+			nav.MoveToId ("aaa"); // it does not support this method
+		}
+
+		[Test]
+		public void SignificantWhitespaceConstruction ()
+		{
+			string xml = @"<root>
+        <child xml:space='preserve'>    <!-- -->   </child>
+        <child xml:space='preserve'>    </child>
+</root>";
+			XPathNavigator nav = XDocument.Parse (xml, LoadOptions.PreserveWhitespace).CreateNavigator ();
+			nav.MoveToFirstChild ();
+			nav.MoveToFirstChild ();
+			Assert.AreEqual (XPathNodeType.Text, nav.NodeType, "#1"); // not Whitespace but Text
+			nav.MoveToNext ();
+			nav.MoveToFirstChild ();
+			Assert.AreEqual (XPathNodeType.Text, nav.NodeType, "#2"); // not SignificantWhitespace but Text
+		}
+
+		[Test]
+		public void VariableReference ()
+		{
+			XPathDocument xpd = new XPathDocument (
+				new StringReader ("<root>sample text</root>"));
+			XPathNavigator nav = xpd.CreateNavigator ();
+
+			XPathExpression expr = nav.Compile ("foo(string(.),$idx)");
+			XsltArgumentList args = new XsltArgumentList ();
+			args.AddParam ("idx", "", 5);
+			MyContext ctx = new MyContext (nav.NameTable as NameTable, args);
+			ctx.AddNamespace ("x", "urn:foo");
+
+			expr.SetContext (ctx);
+
+			XPathNodeIterator iter = nav.Select ("/root");
+			iter.MoveNext ();
+			Assert.AreEqual ("e", iter.Current.Evaluate (expr), "#1");
+		}
+
+		class MyContext : XsltContext
+		{
+			XsltArgumentList args;
+
+			public MyContext (NameTable nt, XsltArgumentList args)
+				: base (nt)
+			{
+				this.args = args;
+			}
+
+			public override IXsltContextFunction ResolveFunction (
+				string prefix, string name, XPathResultType [] argtypes)
+			{
+				if (name == "foo")
+					return new MyFunction (argtypes);
+				return null;
+			}
+
+			public override IXsltContextVariable ResolveVariable (string prefix, string name)
+			{
+				return new MyVariable (name);
+			}
+
+			public override bool PreserveWhitespace (XPathNavigator nav)
+			{
+				return false;
+			}
+
+			public override int CompareDocument (string uri1, string uri2)
+			{
+				return String.CompareOrdinal (uri1, uri2);
+			}
+
+			public override bool Whitespace {
+				get { return false; }
+			}
+
+			public object GetParam (string name, string ns)
+			{
+				return args.GetParam (name, ns);
+			}
+		}
+
+		public class MyFunction : IXsltContextFunction
+		{
+			XPathResultType [] argtypes;
+
+			public MyFunction (XPathResultType [] argtypes)
+			{
+				this.argtypes = argtypes;
+			}
+
+			public XPathResultType [] ArgTypes {
+				get { return argtypes; }
+			}
+
+			public int Maxargs {
+				get { return 2; }
+			}
+
+			public int Minargs {
+				get { return 2; }
+			}
+
+			public XPathResultType ReturnType {
+				get { return XPathResultType.String; }
+			}
+
+			public object Invoke (XsltContext xsltContext,
+				object [] args, XPathNavigator instanceContext)
+			{
+				return ((string) args [0]) [(int) (double) args [1]].ToString ();
+			}
+		}
+
+		public class MyVariable : IXsltContextVariable
+		{
+			string name;
+
+			public MyVariable (string name)
+			{
+				this.name = name;
+			}
+
+			public object Evaluate (XsltContext ctx)
+			{
+				return ((MyContext) ctx).GetParam (name, String.Empty);
+			}
+
+			public bool IsLocal {
+				get { return false; }
+			}
+
+			public bool IsParam {
+				get { return false; }
+			}
+
+			public XPathResultType VariableType {
+				get { return XPathResultType.Any; }
+			}
+		}
+
+		[Test]
+		public void TextMatchesWhitespace ()
+		{
+			string xml = "<root><ws>   </ws><sws xml:space='preserve'> </sws></root>";
+			XmlDocument doc = new XmlDocument ();
+			doc.PreserveWhitespace = true;
+			doc.LoadXml (xml);
+			XPathNavigator nav = doc.CreateNavigator ();
+			nav.MoveToFirstChild (); // root
+			nav.MoveToFirstChild (); // ws
+			nav.MoveToFirstChild (); // '   '
+			Assert.AreEqual (true, nav.Matches ("text()"), "#1");
+			nav.MoveToParent ();
+			nav.MoveToNext (); // sws
+			nav.MoveToFirstChild (); // ' '
+			Assert.AreEqual (true, nav.Matches ("text()"), "#2");
+		}
+
+		[Test]
+		public void Bug456103 ()
+		{
+			XmlDocument doc = new XmlDocument ();
+			doc.LoadXml ("<root><X/></root>");
+
+			XPathNavigator nav = doc.DocumentElement.CreateNavigator ();
+			// ".//*" does not reproduce the bug.
+			var i = nav.Select ("descendant::*");
+
+			// without this call to get_Count() the bug does not reproduce.
+			Assert.AreEqual (1, i.Count, "#1");
+
+			Assert.IsTrue (i.MoveNext (), "#2");
+		}
+
+#if NET_2_0
+		[Test]
+		public void ValueAsBoolean ()
+		{
+			string xml = "<root>1</root>";
+			XmlDocument doc = new XmlDocument ();
+			doc.LoadXml (xml);
+			XPathNavigator nav = doc.CreateNavigator ();
+			nav.MoveToFirstChild ();
+			Assert.AreEqual (true, nav.ValueAsBoolean, "#1");
+			nav.MoveToFirstChild ();
+			Assert.AreEqual (true, nav.ValueAsBoolean, "#2");
+		}
+
+		[Test]
+		[ExpectedException (typeof (FormatException))]
+		public void ValueAsBooleanFail ()
+		{
+			string xml = "<root>1.0</root>";
+			XmlDocument doc = new XmlDocument ();
+			doc.LoadXml (xml);
+			XPathNavigator nav = doc.CreateNavigator ();
+			nav.MoveToFirstChild ();
+			bool i = nav.ValueAsBoolean;
+		}
+
+		[Test]
+		public void ValueAsDateTime ()
+		{
+			DateTime time = new DateTime (2005, 12, 13);
+			string xml = "<root>2005-12-13</root>";
+			XmlDocument doc = new XmlDocument ();
+			doc.LoadXml (xml);
+			XPathNavigator nav = doc.CreateNavigator ();
+			nav.MoveToFirstChild ();
+			Assert.AreEqual (time, nav.ValueAsDateTime, "#1");
+			nav.MoveToFirstChild ();
+			Assert.AreEqual (time, nav.ValueAsDateTime, "#2");
+		}
+
+		[Test]
+		[ExpectedException (typeof (FormatException))]
+		public void ValueAsDateTimeFail ()
+		{
+			string xml = "<root>dating time</root>";
+			XmlDocument doc = new XmlDocument ();
+			doc.LoadXml (xml);
+			XPathNavigator nav = doc.CreateNavigator ();
+			nav.MoveToFirstChild ();
+			DateTime time = nav.ValueAsDateTime;
+		}
+
+		[Test]
+		public void ValueAsDouble ()
+		{
+			string xml = "<root>3.14159265359</root>";
+			XmlDocument doc = new XmlDocument ();
+			doc.LoadXml (xml);
+			XPathNavigator nav = doc.CreateNavigator ();
+			nav.MoveToFirstChild ();
+			Assert.AreEqual (3.14159265359, nav.ValueAsDouble, "#1");
+			nav.MoveToFirstChild ();
+			Assert.AreEqual (3.14159265359, nav.ValueAsDouble, "#2");
+		}
+
+		[Test]
+		[ExpectedException (typeof (FormatException))]
+		public void ValueAsDoubleFail ()
+		{
+			string xml = "<root>Double Dealer</root>";
+			XmlDocument doc = new XmlDocument ();
+			doc.LoadXml (xml);
+			XPathNavigator nav = doc.CreateNavigator ();
+			nav.MoveToFirstChild ();
+			Double dealer = nav.ValueAsDouble;
+		}
+
+		[Test]
+		public void ValueAsInt ()
+		{
+			string xml = "<root>1</root>";
+			XmlDocument doc = new XmlDocument ();
+			doc.LoadXml (xml);
+			XPathNavigator nav = doc.CreateNavigator ();
+			nav.MoveToFirstChild ();
+			Assert.AreEqual (1, nav.ValueAsInt, "#1");
+			nav.MoveToFirstChild ();
+			Assert.AreEqual (1, nav.ValueAsInt, "#2");
+		}
+
+		[Test]
+		// Here, it seems to be using XQueryConvert (whatever was called)
+		[ExpectedException (typeof (FormatException))]
+		public void ValueAsIntFail ()
+		{
+			string xml = "<root>1.0</root>";
+			XmlDocument doc = new XmlDocument ();
+			doc.LoadXml (xml);
+			XPathNavigator nav = doc.CreateNavigator ();
+			nav.MoveToFirstChild ();
+			int i = nav.ValueAsInt;
+		}
+
+		[Test]
+		public void ValueAsLong ()
+		{
+			string xml = "<root>10000000000000000</root>";
+			XmlDocument doc = new XmlDocument ();
+			doc.LoadXml (xml);
+			XPathNavigator nav = doc.CreateNavigator ();
+			nav.MoveToFirstChild ();
+			Assert.AreEqual (10000000000000000, nav.ValueAsLong, "#1");
+			nav.MoveToFirstChild ();
+			Assert.AreEqual (10000000000000000, nav.ValueAsLong, "#2");
+		}
+
+		[Test]
+		// Here, it seems to be using XQueryConvert (whatever was called)
+		[ExpectedException (typeof (FormatException))]
+		public void ValueAsLongFail ()
+		{
+			string xml = "<root>0x10000000000000000</root>";
+			XmlDocument doc = new XmlDocument ();
+			doc.LoadXml (xml);
+			XPathNavigator nav = doc.CreateNavigator ();
+			nav.MoveToFirstChild ();
+			long l = nav.ValueAsLong;
+		}
+
+		[Test] // bug #79874
+		public void InnerXmlText ()
+		{
+			StringReader sr = new StringReader ("<Abc><Foo>Hello</Foo></Abc>");
+			XPathDocument doc = new XPathDocument (sr);
+			XPathNavigator nav = doc.CreateNavigator ();
+			XPathNodeIterator iter = nav.Select ("/Abc/Foo");
+			iter.MoveNext ();
+			Assert.AreEqual ("Hello", iter.Current.InnerXml, "#1");
+			Assert.AreEqual ("<Foo>Hello</Foo>", iter.Current.OuterXml, "#2");
+			iter = nav.Select ("/Abc/Foo/text()");
+			iter.MoveNext ();
+			Assert.AreEqual (String.Empty, iter.Current.InnerXml, "#3");
+			Assert.AreEqual ("Hello", iter.Current.OuterXml, "#4");
+		}
+
+		[Test] // bug #79875
+		public void InnerXmlAttribute ()
+		{
+			StringReader sr = new StringReader ("<Abc><Foo attr='val1'/></Abc>");
+			XPathDocument doc = new XPathDocument (sr);
+			XPathNavigator nav = doc.CreateNavigator ();
+
+			XPathNodeIterator iter = nav.Select ("/Abc/Foo/@attr");
+			iter.MoveNext ();
+			Assert.AreEqual ("val1", iter.Current.InnerXml, "#1");
+		}
+
+		[Test]
+		public void InnerXmlTextEscape ()
+		{
+			StringReader sr = new StringReader ("<Abc><Foo>Hello<\r\nInnerXml</Foo></Abc>");
+			XPathDocument doc = new XPathDocument (sr);
+			XPathNavigator nav = doc.CreateNavigator ();
+			XPathNodeIterator iter = nav.Select ("/Abc/Foo");
+			iter.MoveNext ();
+			Assert.AreEqual ("Hello<\r\nInnerXml", iter.Current.InnerXml, "#1");
+			Assert.AreEqual ("<Foo>Hello<\r\nInnerXml</Foo>", iter.Current.OuterXml, "#2");
+			iter = nav.Select ("/Abc/Foo/text()");
+			iter.MoveNext ();
+			Assert.AreEqual (String.Empty, iter.Current.InnerXml, "#3");
+			Assert.AreEqual ("Hello<\r\nInnerXml", iter.Current.OuterXml, "#4");
+		}
+
+		[Test]
+		[Category ("NotDotNet")] // .NET bug; it should escape value
+		public void InnerXmlAttributeEscape ()
+		{
+			StringReader sr = new StringReader ("<Abc><Foo attr='val"1
>'/></Abc>");
+			XPathDocument doc = new XPathDocument (sr);
+			XPathNavigator nav = doc.CreateNavigator ();
+
+			XPathNodeIterator iter = nav.Select ("/Abc/Foo/@attr");
+			iter.MoveNext ();
+			Assert.AreEqual ("val"1
>", iter.Current.InnerXml, "#1");
+		}
+
+		[Test]
+		public void WriterAttributePrefix ()
+		{
+			XmlDocument doc = new XmlDocument ();
+			XmlWriter w = doc.CreateNavigator ().AppendChild ();
+			w.WriteStartElement ("foo");
+			w.WriteAttributeString ("xmlns", "x", "http://www.w3.org/2000/xmlns/", "urn:foo");
+			Assert.AreEqual ("x", w.LookupPrefix ("urn:foo"), "#0");
+			w.WriteStartElement (null, "bar", "urn:foo");
+			w.WriteAttributeString (null, "ext", "urn:foo", "bah");
+			w.WriteEndElement ();
+			w.WriteEndElement ();
+			w.Close ();
+			Assert.AreEqual ("x", doc.FirstChild.FirstChild.Prefix, "#1");
+			Assert.AreEqual ("x", doc.FirstChild.FirstChild.Attributes [0].Prefix, "#2");
+		}
+
+		[Test]
+		public void ValueAs ()
+		{
+			string xml = "<root>1</root>";
+			XPathNavigator nav = new XPathDocument (XmlReader.Create (new StringReader (xml))).CreateNavigator ();
+			nav.MoveToFirstChild ();
+			nav.MoveToFirstChild ();
+			Assert.AreEqual ("1", nav.ValueAs (typeof (string), null), "#1");
+			Assert.AreEqual (1, nav.ValueAs (typeof (int), null), "#2");
+		}
+
+		[Test]
+		public void MoveToFollowingNodeTypeAll ()
+		{
+			XmlDocument doc = new XmlDocument ();
+			doc.LoadXml ("<root><child/><child2/></root>");
+			XPathNavigator nav = doc.CreateNavigator ();
+			Assert.IsTrue (nav.MoveToFollowing (XPathNodeType.All), "#1");
+			Assert.IsTrue (nav.MoveToFollowing (XPathNodeType.All), "#2");
+			Assert.AreEqual ("child", nav.LocalName, "#3");
+			Assert.IsTrue (nav.MoveToNext (XPathNodeType.All), "#4");
+			Assert.AreEqual ("child2", nav.LocalName, "#5");
+		}
+
+		[Test] // bug #324606.
+		public void XPathDocumentFromSubtreeNodes ()
+		{
+			string xml = "<root><child1><nest1><nest2>hello!</nest2></nest1></child1><child2/><child3/></root>";
+			XmlReader r = new XmlTextReader (new StringReader (xml));
+			while (r.Read ()) {
+				if (r.Name == "child1")
+					break;
+			}
+			XPathDocument d = new XPathDocument (r);
+			XPathNavigator n = d.CreateNavigator ();
+			string result = @"<child1>
+  <nest1>
+    <nest2>hello!</nest2>
+  </nest1>
+</child1>
+<child2 />
+<child3 />";
+			Assert.AreEqual (result, n.OuterXml.Replace ("\r\n", "\n"), "#1");
+		}
+
+		[Test] // bug #376191
+		public void InnerXmlOnRoot ()
+		{
+			string xml = @"<test>
+			<node>z</node>
+			<node>a</node>
+			<node>b</node>
+			<node>q</node>
+			</test>";
+			navigator = XDocument.Parse (xml).CreateNavigator ();
+			Assert.AreEqual (navigator.OuterXml, navigator.InnerXml, "#1");
+		}
+
+		[Test] // bug #515136
+		public void SelectChildrenEmpty ()
+		{
+			string s = "<root> <foo> </foo> </root>";
+			XPathNavigator nav = XDocument.Parse (s).CreateNavigator ();
+			XPathNodeIterator it = nav.SelectChildren (String.Empty, String.Empty);
+			foreach (XPathNavigator xpn in it)
+				return;
+			Assert.Fail ("no selection");
+		}
+#endif
+	}
+}
diff --git a/mcs/class/System.Xml.Linq/Test/System.Xml.XPath/ExtensionsTest3.cs b/mcs/class/System.Xml.Linq/Test/System.Xml.XPath/ExtensionsTest3.cs
new file mode 100644
index 0000000..8be9804
--- /dev/null
+++ b/mcs/class/System.Xml.Linq/Test/System.Xml.XPath/ExtensionsTest3.cs
@@ -0,0 +1,259 @@
+//
+// Authors:
+//   Kral Ferch <kral_ferch at hotmail.com>
+//   Martin Willemoes Hansen <mwh at sysrq.dk>
+//   Atsushi Enomoto <atsushi at ximian.com>
+//
+// (C) 2002 Kral Ferch
+// (C) 2003 Martin Willemoes Hansen
+// Copyright (C) 2010 Novell, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+//
+// imported from XPathNavigatorEvaluateTests
+//
+
+using System;
+using System.Xml;
+using System.Xml.Linq;
+using System.Xml.XPath;
+
+using NUnit.Framework;
+
+namespace MonoTests.System.Xml
+{
+	[TestFixture]
+	public class ExtensionsTest3
+	{
+		XDocument document;
+		XPathNavigator navigator;
+		XDocument document2;
+		XPathNavigator navigator2;
+		XDocument document3;
+		XPathNavigator navigator3;
+		XPathExpression expression;
+		XPathNodeIterator iterator;
+
+		[SetUp]
+		public void GetReady ()
+		{
+			document = XDocument.Parse ("<foo><bar/><baz/><qux/><squonk/></foo>");
+			navigator = document.CreateNavigator ();
+
+			document2 = XDocument.Parse ("<foo><bar baz='1'/><bar baz='2'/><bar baz='3'/></foo>");
+			navigator2 = document2.CreateNavigator ();
+
+			document3 = XDocument.Parse ("<foo><bar/><baz/><qux/></foo>");
+			navigator3 = document3.CreateNavigator ();
+		}
+
+		// Testing Core Funcetion Library functions defined at: http://www.w3.org/TR/xpath#corelib
+		[Test]
+#if !NET_2_0
+		// .NET 2.0 is fixed for last() to return 1 for the
+		// initial context position. Someone thinks we should follow
+		// the fix, but in reality we should just discard this
+		// pointless test. The positional value under those conditions
+		// does not make any sense.
+		[Category ("NotDotNet")]
+#endif
+		public void CoreFunctionNodeSetLast ()
+		{
+			expression = navigator.Compile("last()");
+			iterator = navigator.Select("/foo");
+			Assert.AreEqual ("1", navigator.Evaluate ("last()").ToString(), "#1");
+			Assert.AreEqual ("1", navigator.Evaluate (expression, null).ToString (), "#2");
+			Assert.AreEqual ("1", navigator.Evaluate (expression, iterator).ToString (), "#3");
+			iterator = navigator.Select("/foo/*");
+			Assert.AreEqual ("4", navigator.Evaluate (expression, iterator).ToString (), "#4");
+			
+			Assert.AreEqual("3", navigator2.Evaluate ("string(//bar[last()]/@baz)"), "#5");
+		}
+
+		[Test]
+#if !NET_2_0
+		// .NET 2.0 is fixed for position() to return 1 for the
+		// initial context position. Someone thinks we should follow
+		// the fix, but in reality we should just discard this
+		// pointless test. The positional value under those conditions
+		// does not make any sense.
+//		[Category ("NotWorking")]
+		[Category ("NotDotNet")]
+#endif
+		public void CoreFunctionNodeSetPosition ()
+		{
+			expression = navigator.Compile("position()");
+			iterator = navigator.Select("/foo");
+			Assert.AreEqual ("1", navigator.Evaluate ("position()").ToString (), "#1");
+			Assert.AreEqual ("1", navigator.Evaluate (expression, null).ToString (), "#2");
+			Assert.AreEqual ("0", navigator.Evaluate (expression, iterator).ToString (), "#3");
+			iterator = navigator.Select("/foo/*");
+			Assert.AreEqual ("0", navigator.Evaluate (expression, iterator).ToString (), "#4");
+			iterator.MoveNext();
+			Assert.AreEqual ("1", navigator.Evaluate (expression, iterator).ToString (), "#5");
+			iterator.MoveNext ();
+			Assert.AreEqual ("2", navigator.Evaluate (expression, iterator).ToString (), "#6");
+			iterator.MoveNext ();
+			Assert.AreEqual ("3", navigator.Evaluate (expression, iterator).ToString (), "#7");
+		}
+
+		[Test]
+		public void CoreFunctionNodeSetCount ()
+		{
+			Assert.AreEqual ("5", navigator.Evaluate ("count(//*)").ToString (), "#1");
+			Assert.AreEqual ("1", navigator.Evaluate ("count(//foo)").ToString (), "#2");
+			Assert.AreEqual ("1", navigator.Evaluate ("count(/foo)").ToString (), "#3");
+			Assert.AreEqual ("1", navigator.Evaluate ("count(/foo/bar)").ToString (), "#4");
+
+			Assert.AreEqual ("3", navigator2.Evaluate ("count(//bar)").ToString (), "#5");
+		}
+
+		public void saveTestCoreFunctionNodeSetID ()
+		{
+			document = XDocument.Parse (
+				"<!DOCTYPE foo [" +
+				"<!ELEMENT foo (bar)>" +
+				"<!ELEMENT bar EMPTY>" +
+				"<!ATTLIST bar baz ID #REQUIRED>" +
+				"]>" +
+				"<foo><bar baz='1' qux='hello' /><bar baz='2' qux='world' /></foo>");
+			navigator = document.CreateNavigator ();
+
+			Assert.AreEqual ("hello", navigator.Evaluate ("string(id('1')/@qux)").ToString (), "#1");
+			Assert.AreEqual ("world", navigator.Evaluate ("string(id('2')/@qux)").ToString (), "#2");
+		}
+
+		[Test]
+		public void CoreFunctionLocalName ()
+		{
+			Assert.AreEqual ("", navigator.Evaluate ("local-name()").ToString (), "#1");
+			Assert.AreEqual ("", navigator.Evaluate ("local-name(/bogus)").ToString (), "#2");
+			Assert.AreEqual ("foo", navigator.Evaluate ("local-name(/foo)").ToString (), "#3");
+			Assert.AreEqual ("bar", navigator3.Evaluate ("local-name(/foo/*)").ToString (), "#4");
+		}
+
+		// TODO:  umm.  Unable to make this return a namespace-uri so far...
+		[Test]
+		public void CoreFunctionNamespaceURI ()
+		{
+			document = XDocument.Parse ("<foo:bar xmlns:foo='#foo'><foo:baz><foo:qux /></foo:baz></foo:bar>");
+			navigator = document.CreateNavigator ();
+
+			Assert.AreEqual ("", navigator.Evaluate ("namespace-uri()").ToString (), "#1");
+			Assert.AreEqual ("", navigator.Evaluate ("namespace-uri(/bogus)").ToString (), "#2");
+			//Assert.AreEqual("foo", navigator.Evaluate ("namespace-uri(/bar)").ToString (), "#3");
+			Assert.AreEqual ("", navigator2.Evaluate ("namespace-uri(//bar)").ToString (), "#4");
+		}
+
+		public void saveTestCoreFunctionString ()
+		{
+			document = XDocument.Parse ("<foo>hello<bar>world</bar><baz>how are you</baz></foo>");
+			navigator = document.CreateNavigator ();
+
+			Assert.AreEqual ("world", navigator.Evaluate ("string(/foo/*)").ToString (), "#1");
+			Assert.AreEqual ("NaN", navigator.Evaluate ("string(0 div 0)").ToString (), "#2");
+			
+			try {
+				navigator.Evaluate ("string(+0)");
+				Assert.Fail ("Expected an XPathException to be thrown.");
+			} catch (XPathException) {}
+			
+			Assert.AreEqual ("0", navigator.Evaluate ("string(-0)").ToString (), "#3");
+			Assert.AreEqual ("Infinity", navigator.Evaluate ("string(1 div 0)").ToString (), "#4");
+			Assert.AreEqual ("-Infinity", navigator.Evaluate ("string(-1 div 0)").ToString (), "#5");
+			Assert.AreEqual ("45", navigator.Evaluate ("string(45)").ToString (), "#6");
+			Assert.AreEqual ("-22", navigator.Evaluate ("string(-22)").ToString (), "#7");
+			Assert.AreEqual ("0.25", navigator.Evaluate ("string(.25)").ToString (), "#8");
+			Assert.AreEqual ("-0.25", navigator.Evaluate ("string(-.25)").ToString (), "#9");
+			Assert.AreEqual ("2", navigator.Evaluate ("string(2.0)").ToString (), "#10");
+			Assert.AreEqual ("2.01", navigator.Evaluate ("string(2.01)").ToString (), "#11");
+			Assert.AreEqual ("-3", navigator.Evaluate ("string(-3.0)").ToString (), "#12");
+			Assert.AreEqual ("3.45", navigator.Evaluate ("string(3.45)").ToString (), "#13");
+
+			// Wonder what this will look like under a different platform.
+			Assert.AreEqual("0.33333333333333331", navigator.Evaluate ("string(1 div 3)").ToString (), "#14");
+		}
+
+		[Test]
+		public void CoreFunctionConcat ()
+		{
+			try {
+				navigator.Evaluate ("concat()");
+				Assert.Fail ("Expected an XPathException to be thrown.");
+			} catch (XPathException) {}
+
+			try {
+				navigator.Evaluate ("concat('foo')");
+				Assert.Fail ("Expected an XPathException to be thrown.");
+			} catch (XPathException) {}
+
+			Assert.AreEqual ("foobar", navigator.Evaluate ("concat('foo', 'bar')").ToString (), "#1");
+			Assert.AreEqual ("foobarbaz", navigator.Evaluate ("concat('foo', 'bar', 'baz')").ToString (), "#2");
+			Assert.AreEqual ("foobarbazqux", navigator.Evaluate ("concat('foo', 'bar', 'baz', 'qux')").ToString (), "#3");
+			Assert.AreEqual ("foobarbazquxquux", navigator.Evaluate ("concat('foo', 'bar', 'baz', 'qux', 'quux')").ToString (), "#4");
+		}
+
+		[Test]
+		public void CoreFunctionStartsWith ()
+		{
+			try {
+				navigator.Evaluate ("starts-with()");
+				Assert.Fail ("Expected an XPathException to be thrown.");
+			} catch (XPathException) {}
+
+			try {
+				navigator.Evaluate ("starts-with('foo')");
+				Assert.Fail ("Expected an XPathException to be thrown.");
+			} catch (XPathException) {}
+
+			try {
+				navigator.Evaluate ("starts-with('foo', 'bar', 'baz')");
+				Assert.Fail ("Expected an XPathException to be thrown.");
+			} catch (XPathException) {}
+
+			Assert.IsTrue ((bool)navigator.Evaluate ("starts-with('foobar', 'foo')"));
+			Assert.IsTrue (!(bool)navigator.Evaluate ("starts-with('foobar', 'bar')"));
+		}
+
+		[Test]
+		public void CoreFunctionContains ()
+		{
+			try {
+				navigator.Evaluate ("contains()");
+				Assert.Fail ("Expected an XPathException to be thrown.");
+			} catch (XPathException) {}
+
+			try {
+				navigator.Evaluate ("contains('foo')");
+				Assert.Fail ("Expected an XPathException to be thrown.");
+			} catch (XPathException) {}
+
+			try {
+				navigator.Evaluate ("contains('foobar', 'oob', 'baz')");
+				Assert.Fail ("Expected an XPathException to be thrown.");
+			} catch (XPathException) {}
+
+			Assert.IsTrue ((bool)navigator.Evaluate ("contains('foobar', 'oob')"));
+			Assert.IsTrue (!(bool)navigator.Evaluate ("contains('foobar', 'baz')"));
+		}
+	}
+}
diff --git a/mcs/class/System.Xml.Linq/Test/System.Xml.XPath/ExtensionsTest4.cs b/mcs/class/System.Xml.Linq/Test/System.Xml.XPath/ExtensionsTest4.cs
new file mode 100644
index 0000000..3c92a83
--- /dev/null
+++ b/mcs/class/System.Xml.Linq/Test/System.Xml.XPath/ExtensionsTest4.cs
@@ -0,0 +1,48 @@
+//
+// Author:
+//	Atsushi Enomoto <atsushi at ximian.com>
+//
+// Copyright (C) 2010 Novell, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.IO;
+using System.Linq;
+using System.Xml;
+using System.Xml.Linq;
+using System.Xml.XPath;
+using NUnit.Framework;
+
+namespace MonoTests.System.Xml
+{
+	[TestFixture]
+	public class ExtensionsTest4
+	{
+		[Test]
+		public void Bug654433 ()
+		{
+			string test = "<rt guid=\"ee964002-519f-468e-accb-3784ccca366e\" class=\"StTxtPara\" ownerguid=\"b890ba7a-5841-46a7-b0cd-78266c95eb26\">  <Contents>    <Str>      <Run ws=\"en\">CmPossibility.Discussion is an StTxtPara  StTxtPara.Contents is a   String-big   </Run>      <Run ws=\"en\" externalLink=\"AudioVisual\\Untitled5.WMV\" namedStyle=\"Hyperlink\"> link here</Run> <Run ws=\"en\">      more text</Run>    </Str>  </Contents>  <ParseIsCurrent val=\"False\" />  <Segments>  </Segments></rt>";
+			var nav = XElement.Parse (test).CreateNavigator ();
+			Assert.AreEqual (3, nav.Select ("//Run").Count, "#1");
+		}
+	}
+}
diff --git a/mcs/class/System.Xml.Serialization/ChangeLog b/mcs/class/System.Xml.Serialization/ChangeLog
index 8038f0a..853c94e 100644
--- a/mcs/class/System.Xml.Serialization/ChangeLog
+++ b/mcs/class/System.Xml.Serialization/ChangeLog
@@ -1,3 +1,7 @@
+2010-10-21  Atsushi Eno  <atsushi at ximian.com>
+
+	Add some WCF types in moonlight_raw System.Xml.Serialization.dll.
+
 2010-03-16  Rolf Bjarne Kvinge  <RKvinge at novell.com>
 
 	* Makefile: 
diff --git a/mcs/class/System.Xml.Serialization/ChangeLog b/mcs/class/System.Xml.Serialization/ChangeLog.old
similarity index 100%
copy from mcs/class/System.Xml.Serialization/ChangeLog
copy to mcs/class/System.Xml.Serialization/ChangeLog.old
diff --git a/mcs/class/System.Xml.Serialization/Makefile b/mcs/class/System.Xml.Serialization/Makefile
index ee8337a..bba6b6e 100644
--- a/mcs/class/System.Xml.Serialization/Makefile
+++ b/mcs/class/System.Xml.Serialization/Makefile
@@ -3,7 +3,7 @@ SUBDIRS =
 include ../../build/rules.make
 
 LIBRARY = System.Xml.Serialization.dll
-LIB_MCS_FLAGS =  -unsafe -r:System.dll -r:System.Core.dll -r:System.Xml.dll -d:NET_2_1 -d:NET_2_0 -d:NET_1_1
+LIB_MCS_FLAGS =  -unsafe -r:System.dll -r:System.Core.dll -r:System.Xml.dll -r:System.ServiceModel.dll -d:NET_2_1 -d:NET_2_0 -d:NET_1_1
 
 ifneq (2.1, $(FRAMEWORK_VERSION))
 LIB_MCS_FLAGS += -d:NET_3_5 -nowarn:1720
diff --git a/mcs/class/System.Xml.Serialization/moonlight_raw_System.Xml.Serialization.dll.sources b/mcs/class/System.Xml.Serialization/moonlight_raw_System.Xml.Serialization.dll.sources
index 1e0ecb0..db2ee51 100644
--- a/mcs/class/System.Xml.Serialization/moonlight_raw_System.Xml.Serialization.dll.sources
+++ b/mcs/class/System.Xml.Serialization/moonlight_raw_System.Xml.Serialization.dll.sources
@@ -2,6 +2,8 @@ Assembly/AssemblyInfo.cs
 ../System.XML/../../build/common/Consts.cs
 ../System.XML/../../build/common/Locale.cs
 ../System.XML/../../build/common/MonoTODOAttribute.cs
+../System.ServiceModel/System.ServiceModel/XmlSerializerFormatAttribute.cs
+../System.ServiceModel/System.ServiceModel.Description/XmlSerializerOperationBehavior.cs
 System.Xml.Serialization/XmlAttributeOverrides.cs
 System.Xml.Serialization/XmlAttributes.cs
 System.Xml.Serialization/XmlMapping.cs
@@ -11,3 +13,4 @@ System.Xml.Serialization/XmlSerializationWriter.cs
 System.Xml.Serialization/XmlSerializer.cs
 System.Xml.Serialization/XmlSerializerNamespaces.cs
 System.Xml.Serialization/XmlTypeMapping.cs
+
diff --git a/mcs/class/System/ChangeLog b/mcs/class/System/ChangeLog
index eee8e9f..fa7cdba 100644
--- a/mcs/class/System/ChangeLog
+++ b/mcs/class/System/ChangeLog
@@ -1,3 +1,89 @@
+2011-01-04  Marek Habersack  <grendel at twistedcode.net>
+
+	[system] Unbreak a 4.0 System.ServiceModel test.
+
+	This type is instantiated by one of the tests for the
+	System.ServiceModel.Channels.HttpTransportBindingElement type.
+
+2010-12-29  Marek Safar  <marek.safar at gmail.com>
+
+	Remove no longer used bootstrap profiles
+
+2010-11-05  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* System.dll.sources: * mobile_System.dll.sources: *
+	moonlight_shared_System.dll.sources: Add new CookieParser.cs to
+	the build
+
+2010-10-26  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* moonlight_shared_System.dll.sources: Add Stopwatch to fix the
+	build
+
+2010-10-20  Atsushi Eno  <atsushi at ximian.com>
+
+	ExtendedProtection Configuration types are also used in WCF 4.0.
+
+2010-10-20  Atsushi Eno  <atsushi at ximian.com>
+
+	Add System.Security.Authentication.ExtendedProtection stubs,
+	referenced by WCF 4.0.
+
+2010-09-22  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	LocalEndPoint works now for non-blocking connects
+
+	We didn't keep the endpoint around for non-blocking connects and
+	later, when Poll() was called, we didn't have the information.
+	Also 'isbound' wasn't being set in a few places and UDP sockets
+	needed to be marked as not connected after a call to Connect()
+	with an Any address.
+
+	Removed an old test for Connect(Any) with UDP sockets, since this
+	is used to disconnect them now.
+
+	Fixes bug #640749.
+
+2010-09-21  Carlos Alberto Cortez  <calberto.cortez at gmail.com>
+
+	* System.dll.sources: Add IDesignerLoaderHost2.cs to our build.
+
+2010-09-20  Carlos Alberto Cortez  <calberto.cortez at gmail.com>
+
+	* System.dll.sources: Add IDesignerHostTransactionState.cs and
+	TypeDescriptionProviderService.cs to our build.
+
+2010-09-13  Carlos Alberto Cortez  <calberto.cortez at gmail.com>
+
+	* System_test.dll.sources: Include TypeDescriptionProviderTest.cs
+	in our build.
+
+2010-09-09  Jb Evain  <jbevain at gmail.com>
+
+	Fix System usage of bootstrap .sources from the normal .sources
+
+2010-09-08  Jb Evain  <jbevain at gmail.com>
+
+	Fix the monodroid and monotouch profile builds
+
+2010-09-08  Jb Evain  <jbevain at gmail.com>
+
+	Factorize the monotouch and monodroid sources into a
+	mobile.sources
+
+2010-09-08  Jb Evain  <jbevain at gmail.com>
+
+	Enable the System build for monodroid
+
+2010-09-07  Carlos Alberto Cortez  <calberto.cortez at gmail.com>
+
+	* System.dll.sources: Add DateTimeOffsetConverter.cs. *
+	System_test.dll.sources: Add DateTimeOffsetConverterTests.cs.
+
+2010-09-03  Carlos Alberto Cortez  <calberto.cortez at gmail.com>
+
+	* System_test.dll.sources: Add AttributeCollectionTest.cs.
+
 2010-08-17  Jérémie Laval  <jeremie.laval at gmail.com>
 
 	Update file hierarchy change in System too
diff --git a/mcs/class/System/Makefile b/mcs/class/System/Makefile
index 26b47c9..2187246 100644
--- a/mcs/class/System/Makefile
+++ b/mcs/class/System/Makefile
@@ -27,7 +27,7 @@ ifneq (1, $(FRAMEWORK_VERSION_MAJOR))
 LIB_MCS_FLAGS = -nowarn:618 -d:CONFIGURATION_2_0 -unsafe $(RESOURCE_FILES:%=-resource:%)
 TEST_MCS_FLAGS += -r:System.Configuration
 PROFILE_2_OR_4 := $(filter net_2_0 net_4_0, $(PROFILE))
-NOT_SL := $(filter net_2_0 net_4_0 monotouch, $(PROFILE))
+NOT_SL := $(filter net_2_0 net_4_0 monotouch monodroid, $(PROFILE))
 endif
 ifeq (2.1, $(FRAMEWORK_VERSION))
 LIB_MCS_FLAGS += -d:INSIDE_SYSTEM
diff --git a/mcs/class/System/System.CodeDom.Compiler/ChangeLog b/mcs/class/System/System.CodeDom.Compiler/ChangeLog
index add3550..99c2403 100644
--- a/mcs/class/System/System.CodeDom.Compiler/ChangeLog
+++ b/mcs/class/System/System.CodeDom.Compiler/ChangeLog
@@ -1,3 +1,9 @@
+2010-12-13  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Change parameter name.
+
+	Fixes bug #659123.
+
 2010-04-13  Jonathan Pryor  <jpryor at novell.com>
 
 	* CodeGenerator.cs: Clear out the current member when beginning Type
diff --git a/mcs/class/System/System.CodeDom.Compiler/ChangeLog b/mcs/class/System/System.CodeDom.Compiler/ChangeLog.old
similarity index 100%
copy from mcs/class/System/System.CodeDom.Compiler/ChangeLog
copy to mcs/class/System/System.CodeDom.Compiler/ChangeLog.old
diff --git a/mcs/class/System/System.CodeDom.Compiler/CodeDomProvider.cs b/mcs/class/System/System.CodeDom.Compiler/CodeDomProvider.cs
index 417c3c6..2dd84d2 100644
--- a/mcs/class/System/System.CodeDom.Compiler/CodeDomProvider.cs
+++ b/mcs/class/System/System.CodeDom.Compiler/CodeDomProvider.cs
@@ -120,12 +120,12 @@ namespace System.CodeDom.Compiler {
 			return cc.CompileAssemblyFromFileBatch (options, fileNames);
 		}
 
-		public virtual CompilerResults CompileAssemblyFromSource (CompilerParameters options, params string[] fileNames)
+		public virtual CompilerResults CompileAssemblyFromSource (CompilerParameters options, params string[] sources)
 		{
 			ICodeCompiler cc = CreateCompiler ();
 			if (cc == null)
 				throw GetNotImplemented ();
-			return cc.CompileAssemblyFromSourceBatch (options, fileNames);
+			return cc.CompileAssemblyFromSourceBatch (options, sources);
 		}
 
 		public virtual string CreateEscapedIdentifier (string value)
diff --git a/mcs/class/System/System.Collections.Concurrent/BlockingCollection.cs b/mcs/class/System/System.Collections.Concurrent/BlockingCollection.cs
index 75d7784..41a241b 100644
--- a/mcs/class/System/System.Collections.Concurrent/BlockingCollection.cs
+++ b/mcs/class/System/System.Collections.Concurrent/BlockingCollection.cs
@@ -23,7 +23,7 @@
 //
 //
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
 
 using System;
 using System.Threading;
@@ -48,7 +48,7 @@ namespace System.Collections.Concurrent
 		long completeId;
 
 		/* The whole idea of the collection is to use these two long values in a transactional
-		 * to track and manage the actual data inside the underlying lock-free collection
+		 * way to track and manage the actual data inside the underlying lock-free collection
 		 * instead of directly working with it or using external locking.
 		 *
 		 * They are manipulated with CAS and are guaranteed to increase over time and use
@@ -63,26 +63,30 @@ namespace System.Collections.Concurrent
 		ManualResetEventSlim mreAdd = new ManualResetEventSlim (true);
 		ManualResetEventSlim mreRemove = new ManualResetEventSlim (true);
 
+		/* For time based operations, we share this instance of Stopwatch and base calculation
+		   on a time offset at each of these method call */
+		static Stopwatch watch = new Stopwatch ();
+
 		#region ctors
 		public BlockingCollection ()
 			: this (new ConcurrentQueue<T> (), -1)
 		{
 		}
 
-		public BlockingCollection (int upperBound)
-			: this (new ConcurrentQueue<T> (), upperBound)
+		public BlockingCollection (int boundedCapacity)
+			: this (new ConcurrentQueue<T> (), boundedCapacity)
 		{
 		}
 
-		public BlockingCollection (IProducerConsumerCollection<T> underlyingColl)
-			: this (underlyingColl, -1)
+		public BlockingCollection (IProducerConsumerCollection<T> collection)
+			: this (collection, -1)
 		{
 		}
 
-		public BlockingCollection (IProducerConsumerCollection<T> underlyingColl, int upperBound)
+		public BlockingCollection (IProducerConsumerCollection<T> collection, int boundedCapacity)
 		{
-			this.underlyingColl = underlyingColl;
-			this.upperBound     = upperBound;
+			this.underlyingColl = collection;
+			this.upperBound     = boundedCapacity;
 			this.isComplete     = new AtomicBoolean ();
 		}
 		#endregion
@@ -93,172 +97,143 @@ namespace System.Collections.Concurrent
 			Add (item, CancellationToken.None);
 		}
 
-		public void Add (T item, CancellationToken token)
+		public void Add (T item, CancellationToken cancellationToken)
 		{
-			SpinWait sw = new SpinWait ();
-			long cachedAddId;
-
-			while (true) {
-				token.ThrowIfCancellationRequested ();
-
-				cachedAddId = addId;
-				long cachedRemoveId = removeId;
-
-				if (upperBound != -1) {
-					if (cachedAddId - cachedRemoveId > upperBound) {
-						if (sw.Count <= spinCount) {
-							sw.SpinOnce ();
-						} else {
-							if (mreRemove.IsSet)
-								continue;
-							if (cachedRemoveId != removeId)
-								continue;
-
-							mreRemove.Wait (token);
-							mreRemove.Reset ();
-						}
-
-						continue;
-					}
-				}
-
-				// Check our transaction id against completed stored one
-				if (isComplete.Value && cachedAddId >= completeId)
-					ThrowCompleteException ();
-				if (Interlocked.CompareExchange (ref addId, cachedAddId + 1, cachedAddId) == cachedAddId)
-					break;
-			}
-
-			if (isComplete.Value && cachedAddId >= completeId)
-				ThrowCompleteException ();
-
-			while (!underlyingColl.TryAdd (item));
-
-			if (!mreAdd.IsSet)
-				mreAdd.Set ();
+			TryAdd (item, -1, cancellationToken);
 		}
 
-		public T Take ()
+		public bool TryAdd (T item)
 		{
-			return Take (CancellationToken.None);
+			return TryAdd (item, 0, CancellationToken.None);
 		}
 
-		public T Take (CancellationToken token)
+		public bool TryAdd (T item, int millisecondsTimeout, CancellationToken cancellationToken)
 		{
+			if (millisecondsTimeout < -1)
+				throw new ArgumentOutOfRangeException ("millisecondsTimeout");
+
+			long start = millisecondsTimeout == -1 ? 0 : watch.ElapsedMilliseconds;
 			SpinWait sw = new SpinWait ();
 
-			while (true) {
-				token.ThrowIfCancellationRequested ();
+			do {
+				cancellationToken.ThrowIfCancellationRequested ();
 
-				long cachedRemoveId = removeId;
 				long cachedAddId = addId;
+				long cachedRemoveId = removeId;
 
-				// Empty case
-				if (cachedRemoveId == cachedAddId) {
-					if (IsCompleted)
-						ThrowCompleteException ();
+				// If needed, we check and wait that the collection isn't full
+				if (upperBound != -1 && cachedAddId - cachedRemoveId > upperBound) {
+					if (millisecondsTimeout == 0)
+						return false;
 
 					if (sw.Count <= spinCount) {
 						sw.SpinOnce ();
 					} else {
-						if (cachedAddId != addId)
+						mreRemove.Reset ();
+						if (cachedRemoveId != removeId || cachedAddId != addId) {
+							mreRemove.Set ();
 							continue;
-						if (IsCompleted)
-							ThrowCompleteException ();
+						}
 
-						mreAdd.Wait (token);
-						mreAdd.Reset ();
+						mreRemove.Wait (ComputeTimeout (millisecondsTimeout, start), cancellationToken);
 					}
 
 					continue;
 				}
 
-				if (Interlocked.CompareExchange (ref removeId, cachedRemoveId + 1, cachedRemoveId) == cachedRemoveId)
-					break;
-			}
-
-			T item;
-			while (!underlyingColl.TryTake (out item));
-
-			if (!mreRemove.IsSet)
-				mreRemove.Set ();
-
-			return item;
-		}
-
-		public bool TryAdd (T item)
-		{
-			return TryAdd (item, () => false, CancellationToken.None);
-		}
-
-		bool TryAdd (T item, Func<bool> contFunc, CancellationToken token)
-		{
-			do {
-				token.ThrowIfCancellationRequested ();
-
-				long cachedAddId = addId;
-				long cachedRemoveId = removeId;
-
-				if (upperBound != -1)
-					if (cachedAddId - cachedRemoveId > upperBound)
-						continue;
-
 				// Check our transaction id against completed stored one
 				if (isComplete.Value && cachedAddId >= completeId)
-					throw new InvalidOperationException ("The BlockingCollection<T> has"
-					                                     + " been marked as complete with regards to additions.");
+					ThrowCompleteException ();
 
+				// Validate the steps we have been doing until now
 				if (Interlocked.CompareExchange (ref addId, cachedAddId + 1, cachedAddId) != cachedAddId)
 					continue;
 
-				while (!underlyingColl.TryAdd (item));
+				// We have a slot reserved in the underlying collection, try to take it
+				if (!underlyingColl.TryAdd (item))
+					throw new InvalidOperationException ("The underlying collection didn't accept the item.");
 
-				if (!mreAdd.IsSet)
-					mreAdd.Set ();
+				// Wake up process that may have been sleeping
+				mreAdd.Set ();
 
 				return true;
-			} while (contFunc ());
+			} while (millisecondsTimeout == -1 || (watch.ElapsedMilliseconds - start) < millisecondsTimeout);
 
 			return false;
 		}
 
-		public bool TryAdd (T item, TimeSpan ts)
+		public bool TryAdd (T item, TimeSpan timeout)
 		{
-			return TryAdd (item, (int)ts.TotalMilliseconds);
+			return TryAdd (item, (int)timeout.TotalMilliseconds);
 		}
 
 		public bool TryAdd (T item, int millisecondsTimeout)
 		{
-			Stopwatch sw = Stopwatch.StartNew ();
-			return TryAdd (item, () => sw.ElapsedMilliseconds < millisecondsTimeout, CancellationToken.None);
+			return TryAdd (item, millisecondsTimeout, CancellationToken.None);
 		}
 
-		public bool TryAdd (T item, int millisecondsTimeout, CancellationToken token)
+		public T Take ()
 		{
-			Stopwatch sw = Stopwatch.StartNew ();
-			return TryAdd (item, () => sw.ElapsedMilliseconds < millisecondsTimeout, token);
+			return Take (CancellationToken.None);
+		}
+
+		public T Take (CancellationToken cancellationToken)
+		{
+			T item;
+			TryTake (out item, -1, cancellationToken, true);
+
+			return item;
 		}
 
 		public bool TryTake (out T item)
 		{
-			return TryTake (out item, () => false, CancellationToken.None);
+			return TryTake (out item, 0, CancellationToken.None);
 		}
 
-		bool TryTake (out T item, Func<bool> contFunc, CancellationToken token)
+		public bool TryTake (out T item, int millisecondsTimeout, CancellationToken cancellationToken)
 		{
+			return TryTake (out item, millisecondsTimeout, cancellationToken, false);
+		}
+
+		bool TryTake (out T item, int milliseconds, CancellationToken cancellationToken, bool throwComplete)
+		{
+			if (milliseconds < -1)
+				throw new ArgumentOutOfRangeException ("milliseconds");
+
 			item = default (T);
+			SpinWait sw = new SpinWait ();
+			long start = milliseconds == -1 ? 0 : watch.ElapsedMilliseconds;
 
 			do {
-				token.ThrowIfCancellationRequested ();
+				cancellationToken.ThrowIfCancellationRequested ();
 
 				long cachedRemoveId = removeId;
 				long cachedAddId = addId;
 
 				// Empty case
 				if (cachedRemoveId == cachedAddId) {
-					if (IsCompleted)
+					if (milliseconds == 0)
 						return false;
 
+					if (IsCompleted) {
+						if (throwComplete)
+							ThrowCompleteException ();
+						else
+							return false;
+					}
+
+					if (sw.Count <= spinCount) {
+						sw.SpinOnce ();
+					} else {
+						mreAdd.Reset ();
+						if (cachedRemoveId != removeId || cachedAddId != addId) {
+							mreAdd.Set ();
+							continue;
+						}
+
+						mreAdd.Wait (ComputeTimeout (milliseconds, start), cancellationToken);
+					}
+
 					continue;
 				}
 
@@ -267,32 +242,30 @@ namespace System.Collections.Concurrent
 
 				while (!underlyingColl.TryTake (out item));
 
-				if (!mreRemove.IsSet)
-					mreRemove.Set ();
-			} while (contFunc ());
+				mreRemove.Set ();
+
+				return true;
+
+			} while (milliseconds == -1 || (watch.ElapsedMilliseconds - start) < milliseconds);
 
 			return false;
 		}
 
-		public bool TryTake (out T item, TimeSpan ts)
+		public bool TryTake (out T item, TimeSpan timeout)
 		{
-			return TryTake (out item, (int)ts.TotalMilliseconds);
+			return TryTake (out item, (int)timeout.TotalMilliseconds);
 		}
 
 		public bool TryTake (out T item, int millisecondsTimeout)
 		{
 			item = default (T);
-			Stopwatch sw = Stopwatch.StartNew ();
 
-			return TryTake (out item, () => sw.ElapsedMilliseconds < millisecondsTimeout, CancellationToken.None);
+			return TryTake (out item, millisecondsTimeout, CancellationToken.None, false);
 		}
 
-		public bool TryTake (out T item, int millisecondsTimeout, CancellationToken token)
+		static int ComputeTimeout (int millisecondsTimeout, long start)
 		{
-			item = default (T);
-			Stopwatch sw = Stopwatch.StartNew ();
-
-			return TryTake (out item, () => sw.ElapsedMilliseconds < millisecondsTimeout, token);
+			return millisecondsTimeout == -1 ? 500 : (int)Math.Max (watch.ElapsedMilliseconds - start - millisecondsTimeout, 1);
 		}
 		#endregion
 
@@ -327,13 +300,13 @@ namespace System.Collections.Concurrent
 			return -1;
 		}
 
-		public static int AddToAny (BlockingCollection<T>[] collections, T item, CancellationToken token)
+		public static int AddToAny (BlockingCollection<T>[] collections, T item, CancellationToken cancellationToken)
 		{
 			CheckArray (collections);
 			int index = 0;
 			foreach (var coll in collections) {
 				try {
-					coll.Add (item, token);
+					coll.Add (item, cancellationToken);
 					return index;
 				} catch {}
 				index++;
@@ -353,12 +326,12 @@ namespace System.Collections.Concurrent
 			return -1;
 		}
 
-		public static int TryAddToAny (BlockingCollection<T>[] collections, T item, TimeSpan ts)
+		public static int TryAddToAny (BlockingCollection<T>[] collections, T item, TimeSpan timeout)
 		{
 			CheckArray (collections);
 			int index = 0;
 			foreach (var coll in collections) {
-				if (coll.TryAdd (item, ts))
+				if (coll.TryAdd (item, timeout))
 					return index;
 				index++;
 			}
@@ -378,12 +351,12 @@ namespace System.Collections.Concurrent
 		}
 
 		public static int TryAddToAny (BlockingCollection<T>[] collections, T item, int millisecondsTimeout,
-		                               CancellationToken token)
+		                               CancellationToken cancellationToken)
 		{
 			CheckArray (collections);
 			int index = 0;
 			foreach (var coll in collections) {
-				if (coll.TryAdd (item, millisecondsTimeout, token))
+				if (coll.TryAdd (item, millisecondsTimeout, cancellationToken))
 					return index;
 				index++;
 			}
@@ -405,14 +378,14 @@ namespace System.Collections.Concurrent
 			return -1;
 		}
 
-		public static int TakeFromAny (BlockingCollection<T>[] collections, out T item, CancellationToken token)
+		public static int TakeFromAny (BlockingCollection<T>[] collections, out T item, CancellationToken cancellationToken)
 		{
 			item = default (T);
 			CheckArray (collections);
 			int index = 0;
 			foreach (var coll in collections) {
 				try {
-					item = coll.Take (token);
+					item = coll.Take (cancellationToken);
 					return index;
 				} catch {}
 				index++;
@@ -434,14 +407,14 @@ namespace System.Collections.Concurrent
 			return -1;
 		}
 
-		public static int TryTakeFromAny (BlockingCollection<T>[] collections, out T item, TimeSpan ts)
+		public static int TryTakeFromAny (BlockingCollection<T>[] collections, out T item, TimeSpan timeout)
 		{
 			item = default (T);
 
 			CheckArray (collections);
 			int index = 0;
 			foreach (var coll in collections) {
-				if (coll.TryTake (out item, ts))
+				if (coll.TryTake (out item, timeout))
 					return index;
 				index++;
 			}
@@ -463,14 +436,14 @@ namespace System.Collections.Concurrent
 		}
 
 		public static int TryTakeFromAny (BlockingCollection<T>[] collections, out T item, int millisecondsTimeout,
-		                                  CancellationToken token)
+		                                  CancellationToken cancellationToken)
 		{
 			item = default (T);
 
 			CheckArray (collections);
 			int index = 0;
 			foreach (var coll in collections) {
-				if (coll.TryTake (out item, millisecondsTimeout, token))
+				if (coll.TryTake (out item, millisecondsTimeout, cancellationToken))
 					return index;
 				index++;
 			}
@@ -506,23 +479,22 @@ namespace System.Collections.Concurrent
 
 		public IEnumerable<T> GetConsumingEnumerable ()
 		{
-			return GetConsumingEnumerable (Take);
+			return GetConsumingEnumerable (CancellationToken.None);
 		}
 
-		public IEnumerable<T> GetConsumingEnumerable (CancellationToken token)
-		{
-			return GetConsumingEnumerable (() => Take (token));
-		}
-
-		IEnumerable<T> GetConsumingEnumerable (Func<T> getFunc)
+		public IEnumerable<T> GetConsumingEnumerable (CancellationToken cancellationToken)
 		{
 			while (true) {
 				T item = default (T);
 
 				try {
-					item = getFunc ();
+					item = Take (cancellationToken);
 				} catch {
-					break;
+					// Then the exception is perfectly normal
+					if (IsCompleted)
+						break;
+					// otherwise rethrow
+					throw;
 				}
 
 				yield return item;
@@ -544,7 +516,7 @@ namespace System.Collections.Concurrent
 
 		}
 
-		protected virtual void Dispose (bool managedRes)
+		protected virtual void Dispose (bool disposing)
 		{
 
 		}
diff --git a/mcs/class/System/System.Collections.Concurrent/ChangeLog b/mcs/class/System/System.Collections.Concurrent/ChangeLog
index 512899e..db2feb6 100644
--- a/mcs/class/System/System.Collections.Concurrent/ChangeLog
+++ b/mcs/class/System/System.Collections.Concurrent/ChangeLog
@@ -1,3 +1,22 @@
+2011-01-06  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Fix .NET 4 API
+
+2010-12-09  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Refactor Add/Take/TryAdd/TryTake methods into a common block in
+	BlockingCollection
+
+2010-12-09  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Fix GetConsumingEnumerable exception handling in
+	BlockingCollection
+
+2010-12-07  Guillaume Pouillet  <nekresh at gmail.com>
+
+	Fix bug in BlockingCollection<T>.TryTake Add corresponding unit
+	test
+
 2010-08-27  Jérémie Laval  <jeremie.laval at gmail.com>
 
 	Don't PopTop from our personnal bag in ConcurrentBag.
diff --git a/mcs/class/System/System.Collections.Concurrent/ConcurrentBag.cs b/mcs/class/System/System.Collections.Concurrent/ConcurrentBag.cs
index f54bbb2..076e0cd 100644
--- a/mcs/class/System/System.Collections.Concurrent/ConcurrentBag.cs
+++ b/mcs/class/System/System.Collections.Concurrent/ConcurrentBag.cs
@@ -55,9 +55,9 @@ namespace System.Collections.Concurrent
 		{
 		}
 		
-		public ConcurrentBag (IEnumerable<T> enumerable) : this ()
+		public ConcurrentBag (IEnumerable<T> collection) : this ()
 		{
-			foreach (T item in enumerable)
+			foreach (T item in collection)
 				Add (item);
 		}
 		
@@ -80,9 +80,9 @@ namespace System.Collections.Concurrent
 			return true;
 		}
 		
-		public bool TryTake (out T item)
+		public bool TryTake (out T result)
 		{
-			item = default (T);
+			result = default (T);
 
 			if (count == 0)
 				return false;
@@ -91,17 +91,17 @@ namespace System.Collections.Concurrent
 			CyclicDeque<T> bag = GetBag (out hintIndex);
 			bool hintEnabled = container.Count > hintThreshold;
 			
-			if (bag == null || bag.PopBottom (out item) != PopResult.Succeed) {
+			if (bag == null || bag.PopBottom (out result) != PopResult.Succeed) {
 				foreach (var other in container) {
 					// Try to retrieve something based on a hint
-					bool result = hintEnabled && addHints.TryDequeue (out hintIndex) && container[hintIndex].PopTop (out item) == PopResult.Succeed;
+					bool ret = hintEnabled && addHints.TryDequeue (out hintIndex) && container[hintIndex].PopTop (out result) == PopResult.Succeed;
 
 					// We fall back to testing our slot
-					if (!result && other.Value != bag)
-						result = other.Value.PopTop (out item) == PopResult.Succeed;
+					if (!ret && other.Value != bag)
+						ret = other.Value.PopTop (out result) == PopResult.Succeed;
 					
 					// If we found something, stop
-					if (result) {
+					if (ret) {
 						Interlocked.Decrement (ref count);
 						return true;
 					}
@@ -113,6 +113,11 @@ namespace System.Collections.Concurrent
 			
 			return false;
 		}
+
+		public bool TryPeek (out T result)
+		{
+			throw new NotImplementedException ();
+		}
 		
 		public int Count {
 			get {
diff --git a/mcs/class/System/System.Collections.Generic/ChangeLog b/mcs/class/System/System.Collections.Generic/ChangeLog
index 75074d1..a080fb3 100644
--- a/mcs/class/System/System.Collections.Generic/ChangeLog
+++ b/mcs/class/System/System.Collections.Generic/ChangeLog
@@ -1,3 +1,7 @@
+2010-12-26  Luke Halliwell  <luke.j.halliwell at gmail.com>
+
+	Fix for bug 349053 - unable to serialize SortedDictionary
+
 2010-04-09  Raja R Harinath  <harinath at hurrynot.org>
 
 	Don't maintain state in the view
diff --git a/mcs/class/System/System.Collections.Generic/ChangeLog b/mcs/class/System/System.Collections.Generic/ChangeLog.old
similarity index 100%
copy from mcs/class/System/System.Collections.Generic/ChangeLog
copy to mcs/class/System/System.Collections.Generic/ChangeLog.old
diff --git a/mcs/class/System/System.Collections.Generic/ISet.cs b/mcs/class/System/System.Collections.Generic/ISet.cs
index 74f142f..6118379 100644
--- a/mcs/class/System/System.Collections.Generic/ISet.cs
+++ b/mcs/class/System/System.Collections.Generic/ISet.cs
@@ -25,7 +25,7 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-#if NET_2_1 || NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_2_1 || NET_4_0
 
 namespace System.Collections.Generic {
 	public interface ISet<T> : ICollection<T>
diff --git a/mcs/class/System/System.Collections.Generic/SortedDictionary.cs b/mcs/class/System/System.Collections.Generic/SortedDictionary.cs
index b535aa6..e8354d3 100644
--- a/mcs/class/System/System.Collections.Generic/SortedDictionary.cs
+++ b/mcs/class/System/System.Collections.Generic/SortedDictionary.cs
@@ -35,13 +35,15 @@
 using System;
 using System.Collections;
 using System.Diagnostics;
+using System.Runtime.Serialization;
+using System.Security.Permissions;
 
 namespace System.Collections.Generic
 {
 	[Serializable]
 	[DebuggerDisplay ("Count={Count}")]
 	[DebuggerTypeProxy (typeof (CollectionDebuggerView<,>))]
-	public class SortedDictionary<TKey,TValue> : IDictionary<TKey,TValue>, ICollection<KeyValuePair<TKey,TValue>>, IEnumerable<KeyValuePair<TKey,TValue>>, IDictionary, ICollection, IEnumerable
+	public class SortedDictionary<TKey,TValue> : IDictionary<TKey,TValue>, ICollection<KeyValuePair<TKey,TValue>>, IEnumerable<KeyValuePair<TKey,TValue>>, IDictionary, ICollection, IEnumerable, ISerializable
 	{
 		class Node : RBTree.Node {
 			public TKey key;
@@ -76,6 +78,7 @@ namespace System.Collections.Generic
 			}
 		}
 
+		[Serializable]
 		class NodeHelper : RBTree.INodeHelper<TKey> {
 			public IComparer<TKey> cmp;
 
@@ -127,6 +130,17 @@ namespace System.Collections.Generic
 			foreach (KeyValuePair<TKey, TValue> entry in dic)
 				Add (entry.Key, entry.Value);
 		}
+
+		protected SortedDictionary (SerializationInfo info, StreamingContext context)
+		{
+			hlp = (NodeHelper)info.GetValue("Helper", typeof(NodeHelper));
+			tree = new RBTree (hlp);
+
+			KeyValuePair<TKey, TValue> [] data = (KeyValuePair<TKey, TValue>[])info.GetValue("KeyValuePairs", typeof(KeyValuePair<TKey, TValue>[]));
+			foreach (KeyValuePair<TKey, TValue> entry in data)
+				Add(entry.Key, entry.Value);
+		}
+
 		#endregion
 
 		#region PublicProperty
@@ -226,6 +240,18 @@ namespace System.Collections.Generic
 			return n != null;
 		}
 
+		[SecurityPermission (SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.SerializationFormatter)]
+		public virtual void GetObjectData (SerializationInfo info, StreamingContext context)
+		{
+			if (info == null)
+				throw new ArgumentNullException ("info");
+
+			KeyValuePair<TKey, TValue> [] data = new KeyValuePair<TKey,TValue> [Count];
+			CopyTo (data, 0);
+			info.AddValue ("KeyValuePairs", data);
+			info.AddValue ("Helper", hlp);
+		}
+
 		#endregion
 
 		#region PrivateMethod
@@ -280,7 +306,7 @@ namespace System.Collections.Generic
 		{
 			TValue value;
 			return TryGetValue (item.Key, out value) &&
- 				EqualityComparer<TValue>.Default.Equals (item.Value, value) &&
+				EqualityComparer<TValue>.Default.Equals (item.Value, value) &&
 				Remove (item.Key);
 		}
 
@@ -466,7 +492,7 @@ namespace System.Collections.Generic
 
 			IEnumerator IEnumerable.GetEnumerator ()
 			{
- 				return new Enumerator (_dic);
+				return new Enumerator (_dic);
 			}
 
 			public struct Enumerator : IEnumerator<TValue>,IEnumerator, IDisposable
@@ -601,7 +627,7 @@ namespace System.Collections.Generic
 
 			IEnumerator IEnumerable.GetEnumerator ()
 			{
- 				return new Enumerator (_dic);
+				return new Enumerator (_dic);
 			}
 
 			public struct Enumerator : IEnumerator<TKey>, IEnumerator, IDisposable
diff --git a/mcs/class/System/System.Collections.Specialized/ChangeLog b/mcs/class/System/System.Collections.Specialized/ChangeLog
index d52fea6..e77fedd 100644
--- a/mcs/class/System/System.Collections.Specialized/ChangeLog
+++ b/mcs/class/System/System.Collections.Specialized/ChangeLog
@@ -1,3 +1,8 @@
+2010-11-18  Marek Habersack  <grendel at twistedcode.net>
+
+	[system] NameObjectCollections.Init clears the items container and
+	array before reallocating them.
+
 2009-11-02  Miguel de Icaza  <miguel at novell.com>
 
 	* Copy some collections from WindowsBase here for 4.0 support.
diff --git a/mcs/class/System/System.Collections.Specialized/ChangeLog b/mcs/class/System/System.Collections.Specialized/ChangeLog.old
similarity index 100%
copy from mcs/class/System/System.Collections.Specialized/ChangeLog
copy to mcs/class/System/System.Collections.Specialized/ChangeLog.old
diff --git a/mcs/class/System/System.Collections.Specialized/NameObjectCollectionBase.cs b/mcs/class/System/System.Collections.Specialized/NameObjectCollectionBase.cs
index c934a32..84be4fb 100644
--- a/mcs/class/System/System.Collections.Specialized/NameObjectCollectionBase.cs
+++ b/mcs/class/System/System.Collections.Specialized/NameObjectCollectionBase.cs
@@ -278,6 +278,15 @@ namespace System.Collections.Specialized
 		
 		private void Init ()
 		{
+			if (m_ItemsContainer != null) {
+				m_ItemsContainer.Clear ();
+				m_ItemsContainer = null;
+			}
+			
+			if (m_ItemsArray != null) {
+				m_ItemsArray.Clear ();
+				m_ItemsArray = null;
+			}
 #if NET_2_0
 			if (equality_comparer != null)
 				m_ItemsContainer = new Hashtable (m_defCapacity, equality_comparer);
diff --git a/mcs/class/System/System.ComponentModel.Design.Serialization/ChangeLog b/mcs/class/System/System.ComponentModel.Design.Serialization/ChangeLog
old mode 100755
new mode 100644
index 3d9e9f9..7e33d3b
--- a/mcs/class/System/System.ComponentModel.Design.Serialization/ChangeLog
+++ b/mcs/class/System/System.ComponentModel.Design.Serialization/ChangeLog
@@ -1,3 +1,7 @@
+2010-09-21  Carlos Alberto Cortez  <calberto.cortez at gmail.com>
+
+	* IDesignerLoaderHost2.cs: New 4.0 interface.
+
 2009-06-06  Gert Driesen  <drieseng at users.sourceforge.net>
 
 	* ContextStack.cs: Added argument check to Type indexer, avoiding a
diff --git a/mcs/class/System/System.ComponentModel.Design.Serialization/ChangeLog b/mcs/class/System/System.ComponentModel.Design.Serialization/ChangeLog.old
similarity index 100%
copy from mcs/class/System/System.ComponentModel.Design.Serialization/ChangeLog
copy to mcs/class/System/System.ComponentModel.Design.Serialization/ChangeLog.old
diff --git a/mcs/class/System/System.ComponentModel.Design.Serialization/IDesignerLoaderHost2.cs b/mcs/class/System/System.ComponentModel.Design.Serialization/IDesignerLoaderHost2.cs
new file mode 100644
index 0000000..6c7e0e6
--- /dev/null
+++ b/mcs/class/System/System.ComponentModel.Design.Serialization/IDesignerLoaderHost2.cs
@@ -0,0 +1,43 @@
+//
+// IDesignerLoaderHost2.cs
+//
+// Author:
+// 	Carlos Alberto Cortez (calberto.cortez at gmail.com)
+//
+// Copyright (C) 2010 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if NET_4_0
+
+using System;
+
+namespace System.ComponentModel.Design.Serialization
+{
+	public interface IDesignerLoaderHost2 : IDesignerLoaderHost
+	{
+		bool CanReloadWithErrors { get; set; }
+		bool IgnoreErrorsDuringReload { get; set; }
+	}
+}
+
+#endif
+
diff --git a/mcs/class/System/System.ComponentModel.Design/Changelog b/mcs/class/System/System.ComponentModel.Design/Changelog
index 4dc0a8c..d6d07ba 100644
--- a/mcs/class/System/System.ComponentModel.Design/Changelog
+++ b/mcs/class/System/System.ComponentModel.Design/Changelog
@@ -1,3 +1,11 @@
+2010-09-20  Carlos Alberto Cortez  <calberto.cortez at gmail.com>
+
+	* IDesignerHostTransactionState.cs: New 4.0 interface.
+
+2010-09-20  Carlos Alberto Cortez  <calberto.cortez at gmail.com>
+
+	* TypeDescriptionProviderService.cs: New class.
+
 2009-10-21  Carlo Kok  <ck at remobjects.com>
 
 	* RuntimeLicenseContext.cs: Support for the resourceAssembly parameter.
diff --git a/mcs/class/System/System.ComponentModel.Design/Changelog b/mcs/class/System/System.ComponentModel.Design/Changelog.old
similarity index 100%
copy from mcs/class/System/System.ComponentModel.Design/Changelog
copy to mcs/class/System/System.ComponentModel.Design/Changelog.old
diff --git a/mcs/class/System/System.ComponentModel.Design/IDesignerHostTransactionState.cs b/mcs/class/System/System.ComponentModel.Design/IDesignerHostTransactionState.cs
new file mode 100644
index 0000000..3d4d4aa
--- /dev/null
+++ b/mcs/class/System/System.ComponentModel.Design/IDesignerHostTransactionState.cs
@@ -0,0 +1,42 @@
+//
+// IDesignerHostTransactionState.cs
+//
+// Author:
+// 	Carlos Alberto Cortez (calberto.cortez at gmail.com)
+//
+// Copyright (C) 2010 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if NET_4_0
+
+using System;
+
+namespace System.ComponentModel.Design
+{
+	public interface IDesignerHostTransactionState
+	{
+		bool IsClosingTransaction { get; }
+	}
+}
+
+#endif
+
diff --git a/mcs/class/System/System.ComponentModel.Design/TypeDescriptionProviderService.cs b/mcs/class/System/System.ComponentModel.Design/TypeDescriptionProviderService.cs
new file mode 100644
index 0000000..0a49c54
--- /dev/null
+++ b/mcs/class/System/System.ComponentModel.Design/TypeDescriptionProviderService.cs
@@ -0,0 +1,47 @@
+//
+// TypeDescriptionProviderService.cs
+//
+// Author:
+// 	Carlos Alberto Cortez (calberto.cortez at gmail.com)
+//
+// Copyright (C) 2010 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if NET_4_0
+
+using System;
+
+namespace System.ComponentModel.Design
+{
+	public abstract class TypeDescriptionProviderService
+	{
+		protected TypeDescriptionProviderService ()
+		{
+		}
+
+		public abstract TypeDescriptionProvider GetProvider (object instance);
+		public abstract TypeDescriptionProvider GetProvider (Type type);
+	}
+}
+
+#endif
+
diff --git a/mcs/class/System/System.ComponentModel/AttributeCollection.cs b/mcs/class/System/System.ComponentModel/AttributeCollection.cs
index 2c35ceb..e021bb0 100644
--- a/mcs/class/System/System.ComponentModel/AttributeCollection.cs
+++ b/mcs/class/System/System.ComponentModel/AttributeCollection.cs
@@ -48,18 +48,19 @@ namespace System.ComponentModel
 				attrList = attributes;
 		}
 		
-#if NET_2_0
 		public AttributeCollection (params Attribute[] attributes)
-#else
-		public AttributeCollection (Attribute[] attributes)
-#endif
 		{
 			if (attributes != null)
 				for (int i = 0; i < attributes.Length; i++)
 					attrList.Add (attributes[i]);
 		}
 
-#if NET_2_0
+#if NET_4_0
+		protected AttributeCollection ()
+		{
+		}
+#endif
+
 		public static AttributeCollection FromExisting (AttributeCollection existing, params Attribute [] newAttributes)
 		{
 			if (existing == null)
@@ -70,7 +71,6 @@ namespace System.ComponentModel
 				ret.attrList.AddRange (newAttributes);
 			return ret;
 		}
-#endif
 
 		public bool Contains (Attribute attr)
 		{
@@ -190,5 +190,22 @@ namespace System.ComponentModel
 				return (Attribute) attrList [index];
 			}
 		}
+
+#if NET_4_0
+		Attribute [] attributes_arr;
+
+		// MSDN doesn't mention it, but this property is returning the same instance always.
+		protected virtual Attribute [] Attributes {
+			get {
+				if (attrList == null || attrList.Count == 0)
+					return null;
+
+				if (attributes_arr == null)
+					attributes_arr = (Attribute[]) attrList.ToArray (typeof (Attribute));
+
+				return attributes_arr;
+			}
+		}
+#endif
 	}
 }
diff --git a/mcs/class/System/System.ComponentModel/ChangeLog b/mcs/class/System/System.ComponentModel/ChangeLog
index c4c7010..1d75b46 100644
--- a/mcs/class/System/System.ComponentModel/ChangeLog
+++ b/mcs/class/System/System.ComponentModel/ChangeLog
@@ -1,3 +1,61 @@
+2010-09-20  Carlos Alberto Cortez  <calberto.cortez at gmail.com>
+
+	* TypeDescriptor.cs: Implement AddProviderTransparent and
+	RemoveProviderTransparent - we only call to the already existing
+	AddProvider and RemoveProvider methods respectively.
+
+2010-09-14  Carlos Alberto Cortez  <calberto.cortez at gmail.com>
+
+	* TypeConverter.cs: The constructors of SimplePropertyDescriptor
+	are protected in 4.0.
+
+2010-09-14  Carlos Alberto Cortez  <calberto.cortez at gmail.com>
+
+	* TypeDescriptor.cs: Implement 4.0 InterfaceType property, which
+	seems to be a simple dummy and empty class in .Net, internally
+	used to represent all interfaces.
+
+2010-09-14  Carlos Alberto Cortez  <calberto.cortez at gmail.com>
+
+	* TypeDescriptor.cs: Remove the NET_2_0 directives, as we don't
+	need them anymore.
+
+2010-09-13  Carlos Alberto Cortez  <calberto.cortez at gmail.com>
+
+	* TypeDescriptionProvider.cs: Implement 4.0 IsSupportedType,
+	GetExtenderProviders and GetRuntimeType methods.
+
+2010-09-13  Carlos Alberto Cortez  <calberto.cortez at gmail.com>
+
+	* TypeDescriptionProvider.cs: Remove the NET_2_0 directive.
+
+2010-09-10  Carlos Alberto Cortez  <calberto.cortez at gmail.com>
+
+	* DateTimeOffsetConverter.cs: Use the same DateTimeOffset .ctor
+	that .net uses when converting to a InstanceDescriptor.
+
+2010-09-07  Carlos Alberto Cortez  <calberto.cortez at gmail.com>
+
+	* DateTimeOffsetConverter.cs: Implement new 4.0 class.
+
+2010-09-05  Carlos Alberto Cortez  <calberto.cortez at gmail.com>
+
+	* CultureInfoConverter.cs: Implement GetCultureName.
+
+2010-09-03  Carlos Alberto Cortez  <calberto.cortez at gmail.com>
+
+	* CultureInfoConverter.cs: Remove the NET_2_0 directive.
+
+2010-09-03  Carlos Alberto Cortez  <calberto.cortez at gmail.com>
+
+	* AttributeCollection.cs: Add 4.0 Attributes property as well as a
+	new parameterless ctor.
+
+2010-09-03  Carlos Alberto Cortez  <calberto.cortez at gmail.com>
+
+	* AttributeCollection.cs: Remove the NET_2_0 directives, as well
+	as the else case for it (we are always NET_2_0 now).
+
 2010-07-19  Marek Habersack  <mhabersack at novell.com>
 
 	* MultilineStringConverter.cs: implemented
diff --git a/mcs/class/System/System.ComponentModel/ChangeLog b/mcs/class/System/System.ComponentModel/ChangeLog.old
similarity index 100%
copy from mcs/class/System/System.ComponentModel/ChangeLog
copy to mcs/class/System/System.ComponentModel/ChangeLog.old
diff --git a/mcs/class/System/System.ComponentModel/CultureInfoConverter.cs b/mcs/class/System/System.ComponentModel/CultureInfoConverter.cs
index 149dbd9..b0c72d3 100644
--- a/mcs/class/System/System.ComponentModel/CultureInfoConverter.cs
+++ b/mcs/class/System/System.ComponentModel/CultureInfoConverter.cs
@@ -88,11 +88,7 @@ namespace System.ComponentModel
 		{
 			string culture_string = value as string;
 			if (culture_string != null) {
-#if NET_2_0
 				if (String.Compare (culture_string, "(Default)", false) == 0)
-#else
-				if (String.Compare (culture_string, "(Default)", true) == 0)
-#endif
 					return CultureInfo.InvariantCulture;
 
 				try {
@@ -156,5 +152,13 @@ namespace System.ComponentModel
 			return true;
 		}
 
+#if NET_4_0
+		protected virtual string GetCultureName (CultureInfo culture)
+		{
+			// .Net doesn't throw ArgumentNullException here, ugh.
+			return culture.Name;
+		}
+#endif
+
 	}
 }
diff --git a/mcs/class/System/System.ComponentModel/DateTimeOffsetConverter.cs b/mcs/class/System/System.ComponentModel/DateTimeOffsetConverter.cs
new file mode 100644
index 0000000..29c5767
--- /dev/null
+++ b/mcs/class/System/System.ComponentModel/DateTimeOffsetConverter.cs
@@ -0,0 +1,142 @@
+//
+// DateTimeOffsetConverter.cs
+//
+// Author:
+// 	Carlos Alberto Cortez (calberto.cortez at gmail.com)
+//
+// Copyright (C) 2010 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if NET_4_0
+
+using System;
+using System.Globalization;
+using System.ComponentModel.Design.Serialization;
+using System.Reflection;
+
+namespace System.ComponentModel
+{
+	public class DateTimeOffsetConverter : TypeConverter
+	{
+		static readonly string OffsetPattern = "K";
+		static readonly string InvariantDatePattern = "yyyy-MM-dd";
+
+		public DateTimeOffsetConverter ()
+		{
+		}
+
+		public override bool CanConvertFrom (ITypeDescriptorContext context, Type sourceType)
+		{
+			if (sourceType == typeof (string))
+				return true;
+
+			return base.CanConvertFrom (context, sourceType);
+		}
+
+		public override bool CanConvertTo (ITypeDescriptorContext context, Type destinationType)
+		{
+			if (destinationType == typeof (string) || destinationType == typeof (InstanceDescriptor))
+				return true;
+
+			return base.CanConvertTo (context, destinationType);
+		}
+
+		public override object ConvertFrom (ITypeDescriptorContext context, CultureInfo culture, object value)
+		{
+			if (value is string) {
+				string s = ((string) value).Trim ();
+				if (s.Length == 0)
+					return DateTimeOffset.MinValue;
+
+				DateTimeOffset retval;
+				if (culture == null) {
+					if (DateTimeOffset.TryParse (s, out retval))
+						return retval;
+				} else {
+					DateTimeFormatInfo info = (DateTimeFormatInfo) culture.GetFormat (typeof (DateTimeFormatInfo));
+					if (DateTimeOffset.TryParse (s, info, DateTimeStyles.None, out retval))
+						return retval;
+				}
+
+				throw new FormatException (s + " is not a valid DateTimeOffset value.");
+			}
+
+			return base.ConvertFrom (context, culture, value);
+		}
+
+		public override object ConvertTo (ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
+		{
+			if (value is DateTimeOffset) {
+				DateTimeOffset dt_offset = (DateTimeOffset) value;
+
+				if (destinationType == typeof (string)) {
+					if (dt_offset == DateTimeOffset.MinValue)
+						return String.Empty;
+
+					if (culture == null)
+						culture = CultureInfo.CurrentCulture;
+
+					// InvariantCulture gets special handling.
+					if (culture == CultureInfo.InvariantCulture) {
+						if (dt_offset.DateTime == dt_offset.Date)
+							return dt_offset.ToString (InvariantDatePattern + " " + OffsetPattern);
+
+						return dt_offset.ToString (culture);
+					}
+
+					DateTimeFormatInfo info = (DateTimeFormatInfo) culture.GetFormat (typeof (DateTimeFormatInfo));
+					if (dt_offset.DateTime == dt_offset.Date)
+						return dt_offset.ToString (info.ShortDatePattern + " " + OffsetPattern);
+
+					// No need to pass CultureInfo, as we already consumed the proper patterns.
+					return dt_offset.ToString (info.ShortDatePattern + " " + info.ShortTimePattern + " " + OffsetPattern, null);
+				}
+
+				if (destinationType == typeof (InstanceDescriptor)) {
+					ConstructorInfo ctor = typeof (DateTimeOffset).GetConstructor ( GetDateTimeOffsetArgumentTypes ());
+					object [] ctor_args = new object [] { dt_offset.Year, dt_offset.Month, dt_offset.Day, 
+						dt_offset.Hour, dt_offset.Minute, dt_offset.Second, dt_offset.Millisecond,
+						dt_offset.Offset };
+					return new InstanceDescriptor (ctor, ctor_args);
+				}
+			}
+
+			return base.ConvertTo (context, culture, value, destinationType);
+		}
+
+		static Type [] ctor_argument_types;
+
+		static Type [] GetDateTimeOffsetArgumentTypes ()
+		{
+			if (ctor_argument_types == null) {
+				Type int_type = typeof (int);
+				ctor_argument_types = new Type [] { int_type, int_type, int_type, int_type, int_type, int_type, int_type,
+					typeof (TimeSpan) };
+			}
+
+			return ctor_argument_types;
+		}
+	}
+}
+
+#endif
+
diff --git a/mcs/class/System/System.ComponentModel/TypeConverter.cs b/mcs/class/System/System.ComponentModel/TypeConverter.cs
index 419764a..a9a6a03 100644
--- a/mcs/class/System/System.ComponentModel/TypeConverter.cs
+++ b/mcs/class/System/System.ComponentModel/TypeConverter.cs
@@ -321,14 +321,24 @@ namespace System.ComponentModel
 			private Type componentType;
 			private Type propertyType;
 
-			public SimplePropertyDescriptor (Type componentType,
+#if NET_4_0
+			protected
+#else
+			public
+#endif
+			SimplePropertyDescriptor (Type componentType,
 							 string name,
 							 Type propertyType) :
 				this (componentType, name, propertyType, null)
 			{
 			}
 
-			public SimplePropertyDescriptor (Type componentType,
+#if NET_4_0
+			protected
+#else
+			public
+#endif
+			SimplePropertyDescriptor (Type componentType,
 							 string name,
 							 Type propertyType,
 							 Attribute [] attributes) : base (name, attributes)
diff --git a/mcs/class/System/System.ComponentModel/TypeDescriptionProvider.cs b/mcs/class/System/System.ComponentModel/TypeDescriptionProvider.cs
index 63e18d0..dc57272 100644
--- a/mcs/class/System/System.ComponentModel/TypeDescriptionProvider.cs
+++ b/mcs/class/System/System.ComponentModel/TypeDescriptionProvider.cs
@@ -27,7 +27,6 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if NET_2_0
 
 using System;
 using System.Collections;
@@ -143,8 +142,42 @@ namespace System.ComponentModel
 			return _emptyCustomTypeDescriptor;
 		}
 
+#if NET_4_0
+		public virtual bool IsSupportedType (Type type)
+		{
+			if (type == null)
+				throw new ArgumentNullException ("type");
+
+			if (_parent != null)
+				return _parent.IsSupportedType (type);
+
+			return true;
+		}
+
+		public virtual Type GetRuntimeType (Type reflectionType)
+		{
+			if (reflectionType == null)
+				throw new ArgumentNullException ("reflectionType");
+
+			if (_parent != null)
+				return _parent.GetRuntimeType (reflectionType);
+
+			return reflectionType;
+		}
+
+		protected internal virtual IExtenderProvider[] GetExtenderProviders (object instance)
+		{
+			if (instance == null)
+				throw new ArgumentNullException ("instance");
+
+			if (_parent != null)
+				return _parent.GetExtenderProviders (instance);
+
+			return new IExtenderProvider [] { };
+		}
+#endif
+
 	}
 
 }
 
-#endif
diff --git a/mcs/class/System/System.ComponentModel/TypeDescriptor.cs b/mcs/class/System/System.ComponentModel/TypeDescriptor.cs
index 35df4f0..15bab7b 100644
--- a/mcs/class/System/System.ComponentModel/TypeDescriptor.cs
+++ b/mcs/class/System/System.ComponentModel/TypeDescriptor.cs
@@ -39,9 +39,7 @@ using System.Globalization;
 using System.ComponentModel.Design;
 using System.Security.Permissions;
 
-#if NET_2_0
 using System.Collections.Generic;
-#endif
 
 namespace System.ComponentModel
 {
@@ -55,7 +53,6 @@ public sealed class TypeDescriptor
 	private static Hashtable typeTable = new Hashtable ();
 	private static Hashtable editors;
 
-#if NET_2_0
 	static object typeDescriptionProvidersLock = new object ();
 	static Dictionary <Type, LinkedList <TypeDescriptionProvider>> typeDescriptionProviders;
 
@@ -67,18 +64,26 @@ public sealed class TypeDescriptor
 		typeDescriptionProviders = new Dictionary <Type, LinkedList <TypeDescriptionProvider>> ();
 		componentDescriptionProviders = new Dictionary <WeakObjectWrapper, LinkedList <TypeDescriptionProvider>> (new WeakObjectWrapperComparer ());
 	}
-#endif
+
 	private TypeDescriptor ()
 	{
 	}
 
-#if NET_2_0
 	[MonoNotSupported ("Mono does not support COM")]
 	[EditorBrowsable (EditorBrowsableState.Advanced)]
 	public static Type ComObjectType {
 		get { throw new NotImplementedException (); }
 	}
 
+#if NET_4_0
+	[EditorBrowsable (EditorBrowsableState.Advanced)]
+	public static Type InterfaceType {
+		get {
+			return typeof (TypeDescriptorInterface);
+		}
+	}
+#endif
+
 	[EditorBrowsable (EditorBrowsableState.Advanced)]
 	public static TypeDescriptionProvider AddAttributes (object instance, params Attribute [] attributes)
 	{
@@ -151,6 +156,22 @@ public sealed class TypeDescriptor
 		}
 	}
 
+#if NET_4_0
+	[MonoLimitation ("Security not applied.")]
+	[EditorBrowsable (EditorBrowsableState.Advanced)]
+	public static void AddProviderTransparent (TypeDescriptionProvider provider, object instance)
+	{
+		AddProvider (provider, instance);
+	}
+
+	[MonoLimitation ("Security not applied.")]
+	[EditorBrowsable (EditorBrowsableState.Advanced)]
+	public static void AddProviderTransparent (TypeDescriptionProvider provider, Type type)
+	{
+		AddProvider (provider, type);
+	}
+#endif
+
 	[MonoTODO]
 	public static object CreateInstance (IServiceProvider provider, Type objectType, Type [] argTypes, object [] args)
 	{
@@ -172,11 +193,8 @@ public sealed class TypeDescriptor
 
 		return instance;
 	}
-#endif
 
-#if NET_2_0
 	[EditorBrowsable (EditorBrowsableState.Advanced)]
-#endif
 #if !NET_2_1
 	public
 #else
@@ -258,9 +276,7 @@ public sealed class TypeDescriptor
 		return GetAttributes (component, false);
 	}
 
-#if NET_2_0
 	[EditorBrowsable (EditorBrowsableState.Advanced)]
-#endif
 	public static AttributeCollection GetAttributes (object component, bool noCustomTypeDesc)
 	{
 		if (component == null)
@@ -282,9 +298,7 @@ public sealed class TypeDescriptor
 		return GetClassName (component, false);
 	}
 
-#if NET_2_0
 	[EditorBrowsable (EditorBrowsableState.Advanced)]
-#endif
 	public static string GetClassName (object component, bool noCustomTypeDesc)
 	{
 		if (component == null)
@@ -307,9 +321,7 @@ public sealed class TypeDescriptor
 		return GetComponentName (component, false);
 	}
 
-#if NET_2_0
 	[EditorBrowsable (EditorBrowsableState.Advanced)]
-#endif
 	public static string GetComponentName (object component, bool noCustomTypeDesc)
 	{
 		if (component == null)
@@ -321,15 +333,10 @@ public sealed class TypeDescriptor
 			IComponent c = component as IComponent;
 			if (c != null && c.Site != null)
 				return c.Site.Name;
-#if NET_2_0
 			return null;
-#else
-			return component.GetType().Name;
-#endif
 		}
 	}
 
-#if NET_2_0
 	[MonoNotSupported("")]
 	public static string GetFullComponentName (object component)
 	{
@@ -341,16 +348,13 @@ public sealed class TypeDescriptor
 	{
 		throw new NotImplementedException ();
 	}
-#endif
 
 	public static TypeConverter GetConverter (object component)
 	{
 		return GetConverter (component, false);
 	}
 
-#if NET_2_0
 	[EditorBrowsable (EditorBrowsableState.Advanced)]
-#endif
 	public static TypeConverter GetConverter (object component, bool noCustomTypeDesc)
 	{
 		if (component == null)
@@ -442,10 +446,8 @@ public sealed class TypeDescriptor
 	{
 		Type converterType = null;
 		if (type != null) {
-#if NET_2_0
 			if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>))
 				return typeof(NullableConverter);
-#endif
 			// Is there a default converter
 			foreach (DictionaryEntry entry in DefaultConverters) {
 				if ((Type)entry.Key == type)
@@ -486,9 +488,7 @@ public sealed class TypeDescriptor
 		return GetDefaultEvent (component, false);
 	}
 
-#if NET_2_0
 	[EditorBrowsable (EditorBrowsableState.Advanced)]
-#endif
 	public static EventDescriptor GetDefaultEvent (object component, bool noCustomTypeDesc)
 	{
 		if (!noCustomTypeDesc && (component is ICustomTypeDescriptor))
@@ -512,9 +512,7 @@ public sealed class TypeDescriptor
 		return GetDefaultProperty (component, false);
 	}
 
-#if NET_2_0
 	[EditorBrowsable (EditorBrowsableState.Advanced)]
-#endif
 	public static PropertyDescriptor GetDefaultProperty (object component, bool noCustomTypeDesc)
 	{
 		if (!noCustomTypeDesc && (component is ICustomTypeDescriptor))
@@ -620,9 +618,7 @@ public sealed class TypeDescriptor
 		return GetEditor (component, editorBaseType, false);
 	}
 
-#if NET_2_0
 	[EditorBrowsable (EditorBrowsableState.Advanced)]
-#endif
 	public static object GetEditor (object component, Type editorBaseType, bool noCustomTypeDesc)
 	{
 		if (component == null)
@@ -663,9 +659,7 @@ public sealed class TypeDescriptor
 		return GetEvents (component, attributes, false);
 	}
 
-#if NET_2_0
 	[EditorBrowsable (EditorBrowsableState.Advanced)]
-#endif
 	public static EventDescriptorCollection GetEvents (object component, bool noCustomTypeDesc)
 	{
 		if (!noCustomTypeDesc && (component is ICustomTypeDescriptor))
@@ -684,9 +678,7 @@ public sealed class TypeDescriptor
 		return GetTypeInfo (componentType).GetEvents (attributes);
 	}
 
-#if NET_2_0
 	[EditorBrowsable (EditorBrowsableState.Advanced)]
-#endif
 	public static EventDescriptorCollection GetEvents (object component, Attribute [] attributes, bool noCustomTypeDesc)
 	{
 		if (!noCustomTypeDesc && (component is ICustomTypeDescriptor))
@@ -731,9 +723,7 @@ public sealed class TypeDescriptor
 		}
 	}
 
-#if NET_2_0
 	[EditorBrowsable (EditorBrowsableState.Advanced)]
-#endif
 	public static PropertyDescriptorCollection GetProperties (object component, bool noCustomTypeDesc)
 	{
 		if (component == null)
@@ -755,7 +745,6 @@ public sealed class TypeDescriptor
 		return GetTypeInfo (componentType).GetProperties (attributes);
 	}
 
-#if NET_2_0
 	[EditorBrowsable (EditorBrowsableState.Advanced)]
 	public static TypeDescriptionProvider GetProvider (object instance)
 	{
@@ -902,6 +891,22 @@ public sealed class TypeDescriptor
 			refreshed (new RefreshEventArgs (type));
 	}
 
+#if NET_4_0
+	[MonoLimitation ("Security not applied.")]
+	[EditorBrowsable (EditorBrowsableState.Advanced)]
+	public static void RemoveProviderTransparent (TypeDescriptionProvider provider, object instance)
+	{
+		RemoveProvider (provider, instance);
+	}
+
+	[MonoLimitation ("Security not applied.")]
+	[EditorBrowsable (EditorBrowsableState.Advanced)]
+	public static void RemoveProviderTransparent (TypeDescriptionProvider provider, Type type)
+	{
+		RemoveProvider (provider, type);
+	}
+#endif
+
 	static void RemoveProvider (TypeDescriptionProvider provider, LinkedList <TypeDescriptionProvider> plist)
 	{
 		LinkedListNode <TypeDescriptionProvider> node = plist.Last;
@@ -921,7 +926,6 @@ public sealed class TypeDescriptor
 					
 		} while (true);
 	}
-#endif
 
 	public static void SortDescriptorArray (IList infos)
 	{
@@ -937,10 +941,8 @@ public sealed class TypeDescriptor
 			infos.Add (ob);
 	}
 
-#if NET_2_0
 	// well, ComObjectType is not implemented, but we don't support COM anyways ...
 	[Obsolete ("Use ComObjectType")]
-#endif
 	public static IComNativeDescriptorHandler ComNativeDescriptorHandler {
 		[PermissionSet (SecurityAction.LinkDemand, Unrestricted = true)]
 		get { return descriptorHandler; }
@@ -1032,7 +1034,6 @@ public sealed class TypeDescriptor
 		return type;
 	}
 
-#if NET_2_0
 	sealed class AttributeProvider : TypeDescriptionProvider
 	{
 		Attribute[] attributes;
@@ -1226,7 +1227,6 @@ public sealed class TypeDescriptor
 			return new DefaultTypeDescriptor (this, objectType, instance);
 		}
 	}
-#endif
 }
 
 	internal abstract class Info
@@ -1491,4 +1491,13 @@ public sealed class TypeDescriptor
 			return _properties;
 		}
 	}
+
+#if NET_4_0
+	// In .net this class seems to be a dummy and empty class
+	// used to represent internally any extender provider associated with
+	// all the interfaces.
+	sealed class TypeDescriptorInterface
+	{
+	}
+#endif
 }
diff --git a/mcs/class/System/System.Configuration/ApplicationSettingsBase.cs b/mcs/class/System/System.Configuration/ApplicationSettingsBase.cs
index 9e96e49..6061a55 100644
--- a/mcs/class/System/System.Configuration/ApplicationSettingsBase.cs
+++ b/mcs/class/System/System.Configuration/ApplicationSettingsBase.cs
@@ -272,11 +272,24 @@ namespace System.Configuration {
 
 				try {
 					if (properties == null) {
-						LocalFileSettingsProvider local_provider = null;
+						SettingsProvider local_provider = null;
 
 						properties = new SettingsPropertyCollection ();
 
-						foreach (PropertyInfo prop in GetType ().GetProperties ()) { // only public properties
+						Type this_type = GetType();
+						SettingsProviderAttribute[] provider_attrs = (SettingsProviderAttribute[])this_type.GetCustomAttributes (typeof (SettingsProviderAttribute), false);;
+						if (provider_attrs != null && provider_attrs.Length != 0) {
+							Type provider_type = Type.GetType (provider_attrs[0].ProviderTypeName);
+							SettingsProvider provider = (SettingsProvider) Activator.CreateInstance (provider_type);
+							provider.Initialize (null, null);
+							if (provider != null && Providers [provider.Name] == null) {
+								Providers.Add (provider);
+								local_provider = provider;
+							}
+						}
+
+						PropertyInfo[] type_props = this_type.GetProperties ();
+						foreach (PropertyInfo prop in type_props) { // only public properties
 							SettingAttribute[] setting_attrs = (SettingAttribute[])prop.GetCustomAttributes (typeof (SettingAttribute), false);
 							if (setting_attrs == null || setting_attrs.Length == 0)
 								continue;
@@ -292,7 +305,7 @@ namespace System.Configuration {
 			}
 		}
 
-		void CreateSettingsProperty (PropertyInfo prop, SettingsPropertyCollection properties, ref LocalFileSettingsProvider local_provider)
+		void CreateSettingsProperty (PropertyInfo prop, SettingsPropertyCollection properties, ref SettingsProvider local_provider)
 		{
 			SettingsAttributeDictionary dict = new SettingsAttributeDictionary ();
 			SettingsProvider provider = null;
@@ -346,7 +359,7 @@ namespace System.Configuration {
 
 			if (provider == null) {
 				if (local_provider == null) {
-					local_provider = new LocalFileSettingsProvider ();
+					local_provider = new LocalFileSettingsProvider () as SettingsProvider;
 					local_provider.Initialize (null, null);
 				}
 				setting.Provider = local_provider;
diff --git a/mcs/class/System/System.Configuration/ChangeLog b/mcs/class/System/System.Configuration/ChangeLog
index 57e3f5c..64d2cc0 100644
--- a/mcs/class/System/System.Configuration/ChangeLog
+++ b/mcs/class/System/System.Configuration/ChangeLog
@@ -1,3 +1,45 @@
+2010-08-22  Carsten Schlote  <schlote at vahanus.net>
+
+	[System.Configuration] Added check for SettingProviderAttribute on
+	settings class
+
+	There is no checkfor the SettingProviderAttribute attached to a
+	Settings class. .NET uses this to replace the default
+	LocalSettingsProvider with your own SettingsProvider.
+
+	The patch adds this feature.
+
+	Signed-off-by: Carsten Schlote <schlote at vahanus.net>
+
+2010-08-22  Carsten Schlote  <schlote at vahanus.net>
+
+	[System.Configuration] Fixed GetProductName() function
+
+	Added missing check for empty strongname. This case is now handled
+	the same way as a missing strongname.
+
+	GetProductName() now correctly uses _Url_ and
+	assembly.EscapedCodeBase for its output.
+
+	Signed-off-by: Carsten Schlote <schlote at vahanus.net>
+
+2010-08-22  Carsten Schlote  <schlote at vahanus.net>
+
+	[System.Configuration] Fixed GetEvidenceHash() function to produce
+	valid filenames
+
+	The previous implementation creates eventually invalid filenames
+	in a random fashion on linux, mac, windows by having '/' or '\'
+	chars in the base64 output. As a result you can't save or retrieve
+	your settings due to filesystem errors.
+
+	This patch changes the output to plain hex values. This is a bit
+	longer then a base64 string, but also 100% filesystem safe.
+
+	Might
+
+	Signed-off-by: Carsten Schlote <schlote at vahanus.net>
+
 2010-02-16 Carlos Alberto Cortez <calberto.cortez at gmail.com>
 
 	* CustomizableLocalFileSettingsProvider.cs: When saving the
diff --git a/mcs/class/System/System.Configuration/ChangeLog b/mcs/class/System/System.Configuration/ChangeLog.old
similarity index 100%
copy from mcs/class/System/System.Configuration/ChangeLog
copy to mcs/class/System/System.Configuration/ChangeLog.old
diff --git a/mcs/class/System/System.Configuration/CustomizableFileSettingsProvider.cs b/mcs/class/System/System.Configuration/CustomizableFileSettingsProvider.cs
index 3b5715d..ddf742a 100644
--- a/mcs/class/System/System.Configuration/CustomizableFileSettingsProvider.cs
+++ b/mcs/class/System/System.Configuration/CustomizableFileSettingsProvider.cs
@@ -282,13 +282,11 @@ namespace System.Configuration
 				assembly = Assembly.GetCallingAssembly ();
 
 #if !TARGET_JVM
-
 			byte [] pkt = assembly.GetName ().GetPublicKeyToken ();
 			return String.Format ("{0}_{1}_{2}",
 				AppDomain.CurrentDomain.FriendlyName,
-				pkt != null ? "StrongName" : "Url",
+				pkt != null && pkt.Length > 0 ? "StrongName" : "Url",
 				GetEvidenceHash());
-
 #else // AssemblyProductAttribute-based code
 			AssemblyProductAttribute [] attrs = (AssemblyProductAttribute[]) assembly.GetCustomAttributes (typeof (AssemblyProductAttribute), true);
 		
@@ -299,8 +297,10 @@ namespace System.Configuration
 #endif
 		}
 
-		// FIXME: it seems that something else is used
-		// here, to convert hash bytes to string.
+		// Note: Changed from base64() to hex output to avoid unexpected chars like '\' or '/' with filesystem meaning.
+		//       Otherwise eventually filenames, which are invalid on linux or windows, might be created.
+		// Signed-off-by:  Carsten Schlote <schlote at vahanus.net>
+		// TODO: Compare with .NET. It might be also, that their way isn't suitable for Unix OS derivates (slahes in output)
 		private static string GetEvidenceHash ()
 		{
 			Assembly assembly = Assembly.GetEntryAssembly ();
@@ -308,9 +308,11 @@ namespace System.Configuration
 				assembly = Assembly.GetCallingAssembly ();
 
 			byte [] pkt = assembly.GetName ().GetPublicKeyToken ();
-			byte [] hash = SHA1.Create ().ComputeHash (pkt != null ? pkt : Encoding.UTF8.GetBytes (assembly.EscapedCodeBase));
-
-			return Convert.ToBase64String (hash);
+			byte [] hash = SHA1.Create ().ComputeHash (pkt != null && pkt.Length >0 ? pkt : Encoding.UTF8.GetBytes (assembly.EscapedCodeBase));
+			System.Text.StringBuilder evidence_string = new System.Text.StringBuilder();
+			foreach (byte b in hash)
+				evidence_string.AppendFormat("{0:x2}",b);
+			return evidence_string.ToString ();
 		}
 
 		private static string GetProductVersion ()
diff --git a/mcs/class/System/System.Diagnostics/ChangeLog b/mcs/class/System/System.Diagnostics/ChangeLog
index 4c0b8b4..9b48182 100644
--- a/mcs/class/System/System.Diagnostics/ChangeLog
+++ b/mcs/class/System/System.Diagnostics/ChangeLog
@@ -1,3 +1,47 @@
+2010-10-22  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Remove arbitrary 1024 limit in GetProcesses
+
+	Reallocate the array of PIDs if EnumProcesses used all of it and
+	try again.
+
+2010-10-18  Jonathan Pryor  <jonpryor at vt.edu>
+
+	Don't load app.config when we're processing app.config
+
+	Fixes #605033.
+
+	'cause stack overflow is back, mkay?
+
+	at System.Diagnostics.TraceImpl.InitOnce () <0x0005b> at
+	System.Diagnostics.TraceImpl.get_IndentLevel () <0x0000b> at
+	System.Diagnostics.TraceListenerCollection.InitializeListener
+	(System.Diagnostics.TraceListener) <0x0000f> at
+	System.Diagnostics.TraceListenerCollection.Add
+	(System.Diagnostics.TraceListener) <0x00017> at
+	System.Diagnostics.TraceListenerCollection..ctor (bool) <0x0007f>
+	at System.Diagnostics.TraceListenerCollection..ctor () <0x00013>
+	at
+	System.Diagnostics.DiagnosticsConfigurationHandler.GetSharedListeners
+	(System.Collections.IDictionary) <0x00083> at
+	System.Diagnostics.DiagnosticsConfigurationHandler.Create
+	(object,object,System.Xml.XmlNode) <0x003cf> at
+	System.Configuration.ConfigurationSection.GetRuntimeObject ()
+	<0x0033d> at
+	System.Configuration.ClientConfigurationSystem.System.Configuration.Internal.IInternalConfigSystem.GetSection
+	(string) <0x00041> at
+	System.Configuration.ConfigurationManager.GetSection (string)
+	<0x00030> at System.Configuration.ConfigurationSettings.GetConfig
+	(string) <0x0000f> at
+	System.Diagnostics.DiagnosticsConfiguration.get_Settings ()
+	<0x00043> at System.Diagnostics.TraceImpl.InitOnce () <0x0005b>
+
+	Thus, when we're getting the <sharedListeners/> element, we
+	shouldn't call the TraceListenerCollection default constructor, as
+	that will attempt to add the DefaultTraceListener (which isn't
+	needed anyway, as the DefaultTraceListener is explicitly added by
+	TraceImplSettings).
+
 2010-09-15  Miguel de Icaza  <miguel at gnome.org>
 
 	Revert
@@ -14,6 +58,10 @@
 	the code is not really used right now, but could cause problems in
 	the future as we extend Process.
 
+2010-09-08  Jb Evain  <jbevain at gmail.com>
+
+	Enable the System build for monodroid
+
 2010-07-06 Gonzalo Paniagua Javier <gonzalo at novell.com>
 
 	* Process.cs: allow the exit callback to be used more than once. Fixes
diff --git a/mcs/class/System/System.Diagnostics/DiagnosticsConfigurationHandler.cs b/mcs/class/System/System.Diagnostics/DiagnosticsConfigurationHandler.cs
index aa5296c..1db8b09 100644
--- a/mcs/class/System/System.Diagnostics/DiagnosticsConfigurationHandler.cs
+++ b/mcs/class/System/System.Diagnostics/DiagnosticsConfigurationHandler.cs
@@ -307,7 +307,7 @@ namespace System.Diagnostics
 		{
 			TraceListenerCollection shared_listeners = d ["sharedListeners"] as TraceListenerCollection;
 			if (shared_listeners == null) {
-				shared_listeners = new TraceListenerCollection ();
+				shared_listeners = new TraceListenerCollection (false);
 				d ["sharedListeners"] = shared_listeners;
 			}
 			return shared_listeners;
diff --git a/mcs/class/System/System.Diagnostics/Process.cs b/mcs/class/System/System.Diagnostics/Process.cs
index 75787d0..b9478e1 100644
--- a/mcs/class/System/System.Diagnostics/Process.cs
+++ b/mcs/class/System/System.Diagnostics/Process.cs
@@ -856,11 +856,10 @@ namespace System.Diagnostics {
 		public static Process[] GetProcesses()
 		{
 			int [] pids = GetProcesses_internal ();
-			ArrayList proclist = new ArrayList ();
-
 			if (pids == null)
 				return new Process [0];
-			
+
+			ArrayList proclist = new ArrayList (pids.Length);
 			for (int i = 0; i < pids.Length; i++) {
 				try {
 					proclist.Add (GetProcessById (pids [i]));
@@ -893,7 +892,7 @@ namespace System.Diagnostics {
 			if (pids == null)
 				return new Process [0];
 			
-			ArrayList proclist = new ArrayList ();
+			ArrayList proclist = new ArrayList (pids.Length);
 			for (int i = 0; i < pids.Length; i++) {
 				try {
 					Process p = GetProcessById (pids [i]);
diff --git a/mcs/class/System/System.Diagnostics/ProcessStartInfo.cs b/mcs/class/System/System.Diagnostics/ProcessStartInfo.cs
index 41936f4..56d391b 100644
--- a/mcs/class/System/System.Diagnostics/ProcessStartInfo.cs
+++ b/mcs/class/System/System.Diagnostics/ProcessStartInfo.cs
@@ -267,7 +267,7 @@ namespace System.Diagnostics
 				if (ext == null)
 					return empty;
 
-#if MONOTOUCH
+#if MOBILE
 				return empty;
 #else
 
diff --git a/mcs/class/System/System.IO.Compression/ChangeLog b/mcs/class/System/System.IO.Compression/ChangeLog
index bb6f278..9d4d856 100644
--- a/mcs/class/System/System.IO.Compression/ChangeLog
+++ b/mcs/class/System/System.IO.Compression/ChangeLog
@@ -1,3 +1,19 @@
+2011-01-07  Jonathan Pryor  <jonpryor at vt.edu>
+
+	[monodroid] Look for zlib support functions from __Internal.
+
+	Partial fix for #660928; the rest of the fix will require
+	embedding the zlib functions within libmonodroid.so.
+
+2010-10-24  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Throw exceptions here instead of in DeflateStream
+
+	To get the same stack trace as in bug #647948, we need to set the
+	underlying DeflateStream to null and throw the
+	ObjectDisposedException from this class. Same applies to the
+	NotSupportedException.
+
 2010-04-14 Gonzalo Paniagua Javier <gonzalo at novell.com>
 
 	* DeflateStream.cs: the delegate uses Cdecl calling convention on
diff --git a/mcs/class/System/System.IO.Compression/ChangeLog b/mcs/class/System/System.IO.Compression/ChangeLog.old
similarity index 100%
copy from mcs/class/System/System.IO.Compression/ChangeLog
copy to mcs/class/System/System.IO.Compression/ChangeLog.old
diff --git a/mcs/class/System/System.IO.Compression/DeflateStream.cs b/mcs/class/System/System.IO.Compression/DeflateStream.cs
index 5d48412..0344db4 100644
--- a/mcs/class/System/System.IO.Compression/DeflateStream.cs
+++ b/mcs/class/System/System.IO.Compression/DeflateStream.cs
@@ -416,7 +416,7 @@ namespace System.IO.Compression {
 			set { throw new NotSupportedException(); }
 		}
 
-#if MONOTOUCH
+#if MONOTOUCH || MONODROID
 		const string LIBNAME = "__Internal";
 #else
 		const string LIBNAME = "MonoPosixHelper";
diff --git a/mcs/class/System/System.IO.Compression/GZipStream.cs b/mcs/class/System/System.IO.Compression/GZipStream.cs
index 183bd72..7c4cbe0 100644
--- a/mcs/class/System/System.IO.Compression/GZipStream.cs
+++ b/mcs/class/System/System.IO.Compression/GZipStream.cs
@@ -4,8 +4,9 @@
 //
 // Authors:
 //	Christopher James Lahey <clahey at ximian.com>
+//	Gonzalo Paniagua Javier <gonzalo at novell.com>
 //
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
+// Copyright (C) 2004-2010 Novell, Inc (http://www.novell.com)
 //
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -50,89 +51,129 @@ namespace System.IO.Compression {
 
 		protected override void Dispose (bool disposing)
 		{
-			if (disposing)
-				deflateStream.Dispose ();
+			if (disposing) {
+				if (deflateStream != null) {
+					deflateStream.Dispose ();
+					deflateStream = null;
+				}
+			}
 			base.Dispose (disposing);
 		}
 
 		public override int Read (byte[] dest, int dest_offset, int count)
 		{
+			if (deflateStream == null)
+				throw new ObjectDisposedException (GetType ().FullName);
+
 			return deflateStream.Read(dest, dest_offset, count);
 		}
 
 
 		public override void Write (byte[] src, int src_offset, int count)
 		{
+			if (deflateStream == null)
+				throw new ObjectDisposedException (GetType ().FullName);
+
 			deflateStream.Write (src, src_offset, count);
 		}
 
-		public override void Flush() {
+		public override void Flush()
+		{
+			if (deflateStream == null)
+				throw new ObjectDisposedException (GetType ().FullName);
+
 			deflateStream.Flush();
 		}
 
-		public override long Seek (long offset, SeekOrigin origin) {
-			return deflateStream.Seek (offset, origin);
+		public override long Seek (long offset, SeekOrigin origin)
+		{
+			throw new NotSupportedException();
 		}
 
-		public override void SetLength (long value) {
-			deflateStream.SetLength (value);
+		public override void SetLength (long value)
+		{
+			throw new NotSupportedException();
 		}
 
 		public override IAsyncResult BeginRead (byte [] buffer, int offset, int count,
 							AsyncCallback cback, object state)
 		{
+			if (deflateStream == null)
+				throw new ObjectDisposedException (GetType ().FullName);
+
 			return deflateStream.BeginRead (buffer, offset, count, cback, state);
 		}
 
 		public override IAsyncResult BeginWrite (byte [] buffer, int offset, int count,
 							AsyncCallback cback, object state)
 		{
+			if (deflateStream == null)
+				throw new ObjectDisposedException (GetType ().FullName);
+
 			return deflateStream.BeginWrite (buffer, offset, count, cback, state);
 		}
 
 		public override int EndRead(IAsyncResult async_result) {
+			if (deflateStream == null)
+				throw new ObjectDisposedException (GetType ().FullName);
+
 			return deflateStream.EndRead (async_result);
 		}
 
 		public override void EndWrite (IAsyncResult async_result)
 		{
+			if (deflateStream == null)
+				throw new ObjectDisposedException (GetType ().FullName);
+
 			deflateStream.EndWrite (async_result);
 		}
 
 		public Stream BaseStream {
 			get {
+				if (deflateStream == null)
+					return null;
+
 				return deflateStream.BaseStream;
 			}
 		}
+
 		public override bool CanRead {
 			get {
+				if (deflateStream == null)
+					return false;
+
 				return deflateStream.CanRead;
 			}
 		}
+
 		public override bool CanSeek {
 			get {
+				if (deflateStream == null)
+					return false;
+
 				return deflateStream.CanSeek;
 			}
 		}
+
 		public override bool CanWrite {
 			get {
+				if (deflateStream == null)
+					return false;
+
 				return deflateStream.CanWrite;
 			}
 		}
+
 		public override long Length {
-			get {
-				return deflateStream.Length;
-			}
+			get { throw new NotSupportedException(); }
 		}
+
 		public override long Position {
-			get {
-				return deflateStream.Position;
-			}
-			set {
-				deflateStream.Position = value;
-			}
+			get { throw new NotSupportedException(); }
+			set { throw new NotSupportedException(); }
 		}
 	}
 }
 
 #endif
+
diff --git a/mcs/class/System/System.Net.Mail/ChangeLog b/mcs/class/System/System.Net.Mail/ChangeLog
index feb06ed..b1eaa4d 100644
--- a/mcs/class/System/System.Net.Mail/ChangeLog
+++ b/mcs/class/System/System.Net.Mail/ChangeLog
@@ -1,3 +1,19 @@
+2010-10-31  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Check that the default from is not empty
+
+	This should fix a bunch of tests failing since MailAddress parsing
+	was fixed.
+
+2010-10-13  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Misc. fixes
+
+	-Fix validation of display name and email. -Cache user, host and
+	ToString() values. -Fix Equals and GetHashCode.
+
+	Fixes bug 645871.
+
 2010-10-08  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
 
 	Add support for EnableSsl in smtp config.
diff --git a/mcs/class/System/System.Net.Mail/MailAddress.cs b/mcs/class/System/System.Net.Mail/MailAddress.cs
index a5d9fc6..695b53e 100644
--- a/mcs/class/System/System.Net.Mail/MailAddress.cs
+++ b/mcs/class/System/System.Net.Mail/MailAddress.cs
@@ -39,6 +39,9 @@ namespace System.Net.Mail {
 
 		string address;
 		string displayName;
+		string host;
+		string user;
+		string to_string;
 		//Encoding displayNameEncoding;
 
 		#endregion // Fields
@@ -49,46 +52,69 @@ namespace System.Net.Mail {
 		{
 		}
 
-		public MailAddress (string address, string displayName) : this (address, displayName, Encoding.Default)
+		public MailAddress (string address, string displayName) : this (address, displayName, Encoding.UTF8)
 		{
 		}
 
+		[MonoTODO ("We don't do anything with displayNameEncoding")]
 		public MailAddress (string address, string displayName, Encoding displayNameEncoding)
 		{
 			if (address == null)
 				throw new ArgumentNullException ("address");
+			if (address.Length == 0)
+				throw new ArgumentException ("address");
 
-			// either displayname is enclosed in quotes, and/or e-mail address
-			// is enclosed in less than / greater than characters
-			int quoteStart = address.IndexOf ('"');
-			if (quoteStart == 0) {
-				int quoteEnd = address.IndexOf ('"', quoteStart + 1);
-				if (quoteEnd == -1)
-					throw CreateFormatException ();
-				this.displayName = address.Substring (quoteStart + 1, quoteEnd - 1).Trim ();
-				address = address.Substring (quoteEnd + 1);
-			}
+			if (displayName != null)
+				this.displayName = displayName.Trim ();
+			ParseAddress (address);
+		}
 
-			int addressStart = address.IndexOf ('<');
-			if (addressStart != -1) {
-				if (addressStart + 1 >= address.Length)
+		void ParseAddress (string address)
+		{
+			// 1. Quotes for display name
+			address = address.Trim ();
+			int idx = address.IndexOf ('"');
+			if (idx != -1) {
+				if (idx != 0 || address.Length == 1)
 					throw CreateFormatException ();
-				int addressEnd = address.IndexOf ('>', addressStart + 1);
-				if (addressEnd == -1)
+
+				int closing = address.LastIndexOf ('"');
+				if (closing == idx)
 					throw CreateFormatException ();
+
 				if (this.displayName == null)
-					this.displayName = address.Substring (0, addressStart).Trim ();
-				address = address.Substring (++addressStart, addressEnd - addressStart);
+					this.displayName = address.Substring (idx + 1, closing - idx - 1).Trim ();
+				address = address.Substring (closing + 1).Trim ();
 			}
 
-			// LAMESPEC: zero-length displayName should not override display name
-			// specified in address
-			// https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=283163
-			if (displayName != null)
-				this.displayName = displayName.Trim ();
+			// 2. <email>
+			idx = address.IndexOf ('<');
+			if (idx >= 0) {
+				if (this.displayName == null)
+					this.displayName = address.Substring (0, idx).Trim ();
+				if (address.Length - 1 == idx)
+					throw CreateFormatException ();
 
-			this.address = address.Trim ();
-			//this.displayNameEncoding = displayNameEncoding;
+				int end = address.IndexOf ('>', idx + 1);
+				if (end == -1)
+					throw CreateFormatException ();
+
+				address = address.Substring (idx + 1, end - idx - 1).Trim ();
+			}
+			this.address = address;
+			// 3. email
+			idx = address.IndexOf ('@');
+			if (idx <= 0)
+				throw CreateFormatException ();
+			if (idx != address.LastIndexOf ('@'))
+				throw CreateFormatException ();
+
+			this.user = address.Substring (0, idx).Trim ();
+			if (user.Length == 0)
+				throw CreateFormatException ();
+			this.host = address.Substring (idx + 1).Trim ();
+			if (host.Length == 0)
+				throw CreateFormatException ();
 		}
 
 		#endregion // Constructors
@@ -108,11 +134,11 @@ namespace System.Net.Mail {
 		}
 
 		public string Host {
-			get { return Address.Substring (address.IndexOf ("@") + 1); }
+			get { return host; }
 		}
 
 		public string User {
-			get { return Address.Substring (0, address.IndexOf ("@")); }
+			get { return user; }
 		}
 
 #endregion // Properties
@@ -121,36 +147,28 @@ namespace System.Net.Mail {
 		
 		public override bool Equals (object obj)
 		{
-			return Equals (obj as MailAddress);
-		}
+			if (obj == null)
+				return false;
 
-		bool Equals (MailAddress other)
-		{
-			return other != null && Address == other.Address;
+			return (0 == String.Compare (ToString (), obj.ToString (), StringComparison.OrdinalIgnoreCase));
 		}
 
 		public override int GetHashCode ()
 		{
-			return address.GetHashCode ();
+			return ToString ().GetHashCode ();
 		}
 
 		public override string ToString ()
 		{
-			StringBuilder sb = new StringBuilder ();
-			if (DisplayName != null && DisplayName.Length > 0) {
-				sb.Append ("\"");
-				sb.Append (DisplayName);
-				sb.Append ("\"");
-				sb.Append (" ");
-				sb.Append ("<");
-				sb.Append (Address);
-				sb.Append (">");
-			}
-			else {
-				sb.Append (Address);
-			}
+			if (to_string != null)
+				return to_string;
+
+			if (!String.IsNullOrEmpty (displayName))
+				to_string = String.Format ("\"{0}\" <{1}>", DisplayName, Address);
+			else
+				to_string = address;
 
-			return sb.ToString ();
+			return to_string;
 		}
 
 		private static FormatException CreateFormatException () {
diff --git a/mcs/class/System/System.Net.Mail/SmtpClient.cs b/mcs/class/System/System.Net.Mail/SmtpClient.cs
index d525660..f1e1de3 100644
--- a/mcs/class/System/System.Net.Mail/SmtpClient.cs
+++ b/mcs/class/System/System.Net.Mail/SmtpClient.cs
@@ -135,7 +135,7 @@ namespace System.Net.Mail {
 					Credentials = new CCredentialsByHost (cfg.Network.UserName, password);
 				}
 
-				if (cfg.From != null)
+				if (!String.IsNullOrEmpty (cfg.From))
 					defaultFrom = new MailAddress (cfg.From);
 			}
 #else
diff --git a/mcs/class/System/System.Net.NetworkInformation/ChangeLog b/mcs/class/System/System.Net.NetworkInformation/ChangeLog
index 44ab005..d7d34c7 100644
--- a/mcs/class/System/System.Net.NetworkInformation/ChangeLog
+++ b/mcs/class/System/System.Net.NetworkInformation/ChangeLog
@@ -1,3 +1,11 @@
+2010-09-29  Atsushi Eno  <atsushi at ximian.com>
+
+	Add some missing StructLayoutAttributes.
+
+2010-09-06  Atsushi Eno  <atsushieno at Atsushi-Eno-no-MacBook.local>
+
+	Fix NetworkInterface marshaling size on OSX and avoid crash.
+
 2010-08-11  Atsushi Eno  <atsushi at ximian.com>
 
 	Fix pinvoked function name and marshaling of MIB stats.
diff --git a/mcs/class/System/System.Net.NetworkInformation/NetworkInterface.cs b/mcs/class/System/System.Net.NetworkInformation/NetworkInterface.cs
index c737106..58a6189 100644
--- a/mcs/class/System/System.Net.NetworkInformation/NetworkInterface.cs
+++ b/mcs/class/System/System.Net.NetworkInformation/NetworkInterface.cs
@@ -481,7 +481,7 @@ namespace System.Net.NetworkInformation {
 							MacOsStructs.sockaddr_dl sockaddrdl = (MacOsStructs.sockaddr_dl) Marshal.PtrToStructure (addr.ifa_addr, typeof (MacOsStructs.sockaddr_dl));
 
 							macAddress = new byte [(int) sockaddrdl.sdl_alen];
-							Array.Copy (sockaddrdl.sdl_data, sockaddrdl.sdl_nlen, macAddress, 0, macAddress.Length);
+							Array.Copy (sockaddrdl.sdl_data, sockaddrdl.sdl_alen, macAddress, 0, macAddress.Length);
 							index = sockaddrdl.sdl_index;
 
 							int hwtype = (int) sockaddrdl.sdl_type;
diff --git a/mcs/class/System/System.Net.NetworkInformation/Win32NetworkInterfaceMarshal.cs b/mcs/class/System/System.Net.NetworkInformation/Win32NetworkInterfaceMarshal.cs
index f7ead0a..a987cdb 100644
--- a/mcs/class/System/System.Net.NetworkInformation/Win32NetworkInterfaceMarshal.cs
+++ b/mcs/class/System/System.Net.NetworkInformation/Win32NetworkInterfaceMarshal.cs
@@ -210,6 +210,7 @@ namespace System.Net.NetworkInformation
 		public byte [] Descr;
 	}
 
+	[StructLayout (LayoutKind.Sequential)]
 	struct Win32_IP_ADDR_STRING
 	{
 		public IntPtr Next; // to Win32_IP_ADDR_STRING
@@ -280,6 +281,7 @@ namespace System.Net.NetworkInformation
 
 	}
 
+	[StructLayout (LayoutKind.Sequential)]
 	struct Win32_SOCKADDR
 	{
 		public ushort AddressFamily;
@@ -288,6 +290,7 @@ namespace System.Net.NetworkInformation
 	}
 
 	// FIXME: it somehow fails to marshal.
+	[StructLayout (LayoutKind.Sequential)]
 	struct Win32_SOCKET_ADDRESS
 	{
 		public IntPtr Sockaddr; // to Win32_SOCKADDR
diff --git a/mcs/class/System/System.Net.Sockets/ChangeLog b/mcs/class/System/System.Net.Sockets/ChangeLog
index 8f507f9..1d16c3f 100644
--- a/mcs/class/System/System.Net.Sockets/ChangeLog
+++ b/mcs/class/System/System.Net.Sockets/ChangeLog
@@ -1,14 +1,53 @@
-2010-09-09  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+2011-01-06  Zoltan Varga  <vargaz at gmail.com>
 
-	UDP sockets allow connections to Any
+	Change some usages of ArrayList to List<T> to avoid calls to the
+	slow ArrayList.ToArray(Type) method.
 
-	UDP sockets that call Connect() to set a default address for
-	datagrams sent, can call Connect() again with IPv6Any or Any to
-	'disconnect'.
+2011-01-03  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
 
-	Fixes bug #639098.
+	Socket is not connected after error
+
+2010-12-13  Michael Hutchinson  <mhutchinson at novell.com>
+
+	Socket.Dispose is public in 4.0.
+
+2010-12-13  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Don't throw in EndReceive/EndSend + out error
+
+	The overloads of EndReceive and EndSend that have an out
+	SocketError parameter do not throw.
+
+	Patch by Sven Groot that fixes bug #659056.
+
+2010-12-04  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Handle closed sockets in the callbacks
+
+	Accept returns a Socket in AcceptSocket even when the listener is
+	closed. Handle ObjectDisposedException for the other callbacks.
+
+	Fixes bug #657593.
+
+2010-11-24  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	[Sockets] Support Remote/LocalEndPoint for AF_UNIX
+
+	We were not handling correctly the AF_UNIX family when getting the
+	socket name or the peer name.
+
+	Fixes bug #655637.
+
+2010-10-15  Marek Safar  <marek.safar at gmail.com>
+
+	Clean up few more warnings
 
-2010-10-20  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+2010-10-13  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* SocketAsyncEventArgs.cs: Remove TODO on SocketClientAccessPolicy
+	Protocol property
+
+2010-10-12  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
 
 	Handle special case when disposing a socket.
 
@@ -16,10 +55,31 @@
 	read/write pending, one of the callbacks could call
 	DisposeAllOnClose() while another one is waiting on the lock. Once
 	the lock is acquired, queue.Count will be 0 and Dequeue would
-	fail. This is fixed now.
+	fail. This if fixed now.
 
 	Fixes bug #645675.
 
+2010-10-02  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	The EndPoint cannot be null
+
+	The EndPoint argument in Begin/EndSendTo cannot be null.
+
+2010-09-30  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Handle error in BeginAcceptReceive
+
+	We were ignore possible errors when reading after a socket has
+	been accepted.
+
+2010-09-30  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Schedule the user callback from unmanaged code
+
+	When possible, schedule the user callback from unmanaged code. We
+	pass it from the IO pool to the regular pool after our internal
+	callback is finished.
+
 2010-09-30  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
 
 	Invoke the callback in separate threads
@@ -29,6 +89,126 @@
 
 	Fixes bug #639656.
 
+2010-09-29  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* System.Net.Sockets/Socket_2_1.cs: Fix, by explicitely throwing
+	an NRE, the checks in [Receive|Send]Async methods - otherwise an
+	exception would occur later, on another thread and close the
+	socket (leading to other, unexpected, exceptions)
+
+2010-09-29  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* System.Net.Sockets/SocketAsyncEventArgs.cs: Move policy
+	restriction and elevated trust check outside of loop since its
+	value won't change based on the ipaddress
+
+2010-09-28  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* System.Net.Sockets/Socket_2_1.cs: Do not #id-def out
+	[Receive|Send] Generic from moonlight build
+
+2010-09-24  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* System.Net.Sockets/SocketAsyncEventArgs.cs: Set the Socket
+	RemoteEndPoint to our RemoteEndPoint on Connect operation. *
+	System.Net.Sockets/Socket_2_1.cs: Return the 'candidate' EndPoint
+	provided by SocketAsyncEventArgs in ConnectAsync (intead of null)
+	until the connection is completed.
+
+2010-09-27  Jb Evain  <jbevain at gmail.com>
+
+	Fix the moonlight build
+
+2010-09-27  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Set LastOperation properly
+
+	SocketAsyncEventArgs.LastOperation is set when the operation is
+	invoked. Reset the error status before each new *Async() call.
+
+2010-09-26  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Bypass BeginInvoke for asynch. operations
+
+	The code involved in a delegate BeginInvoke is too heavy and of no
+	use for socket asynchronous operations. With these changes, we
+	bypass all that and send the work items directly to the
+	asynchronous IO queue, improving performance and lowering memory
+	use.
+
+2010-09-25  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	ConnectAsync() security checks
+
+	-ConnectAsync() changed to make security checks for all endpoints
+	before trying to connect for the first time. -Use the socket
+	Connect() call instead of repeating the same stuff. Connect should
+	be splitted in 2 pieces (DNS + Connection attempts).
+
+2010-09-25  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Added support for ArraySegment
+
+	-Removed NET_2_0 -Implemented support for the Receive/Send
+	overloads that take a list of ArraySegments.
+
+2010-09-25  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Made the moonlight profile happy.
+
+	Disabled operations not allowed under moonlight.
+
+2010-09-25  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Move async IO code to Socket_2_1
+
+	Moved internal classes to Socket_2_1.
+
+2010-09-24  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Rework SocketAsyncEventArgs internals
+
+	-Removed #if NET_2_0 -All the *Async() calls but ConnectAsync()
+	are routed through the asynch IO threadpool instead of creating a
+	new short-lived thread for every operation. -When reusing a
+	SocketAsyncEventArgs only 1 new object, a delegate, is created.
+
+2010-09-22  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* System.Net.Sockets/Socket_2_1.cs: Add checks for invalid
+	AddressFamily, SocketType and ProtocolType (to throw
+	ArgumentException). Add negative check for Ttl property. Add
+	AddressFamily mismatch checks to ConnectAsync methods
+
+2010-09-22  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	LocalEndPoint works now for non-blocking connects
+
+	We didn't keep the endpoint around for non-blocking connects and
+	later, when Poll() was called, we didn't have the information.
+	Also 'isbound' wasn't being set in a few places and UDP sockets
+	needed to be marked as not connected after a call to Connect()
+	with an Any address.
+
+	Removed an old test for Connect(Any) with UDP sockets, since this
+	is used to disconnect them now.
+
+	Fixes bug #640749.
+
+2010-09-10  Jb Evain  <jbevain at gmail.com>
+
+	Fix the moonlight build
+
+2010-09-09  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	UDP sockets allow connections to Any
+
+	UDP sockets that call Connect() to set a default address for
+	datagrams sent, can call Connect() again with IPv6Any or Any to
+	'disconnect'.
+
+	Fixes bug #639098.
+
 2010-04-21  Sebastien Pouliot  <sebastien at ximian.com>
 
 	* SocketAsyncEventArgs.cs: Add check for elevated permissions on
diff --git a/mcs/class/System/System.Net.Sockets/Socket.cs b/mcs/class/System/System.Net.Sockets/Socket.cs
index af02ac3..6cc289c 100644
--- a/mcs/class/System/System.Net.Sockets/Socket.cs
+++ b/mcs/class/System/System.Net.Sockets/Socket.cs
@@ -53,569 +53,10 @@ namespace System.Net.Sockets
 {
 	public partial class Socket : IDisposable
 	{
-		enum SocketOperation {
-			Accept,
-			Connect,
-			Receive,
-			ReceiveFrom,
-			Send,
-			SendTo,
-			UsedInManaged1,
-			UsedInManaged2,
-			UsedInProcess,
-			UsedInConsole2,
-			Disconnect,
-			AcceptReceive,
-			ReceiveGeneric,
-			SendGeneric
-		}
-
-		[StructLayout (LayoutKind.Sequential)]
-		struct WSABUF 
-		{
-			public int len;
-			public IntPtr buf;
-		};
-
-		[StructLayout (LayoutKind.Sequential)]
-		private sealed class SocketAsyncResult: IAsyncResult
-		{
-			/* Same structure in the runtime */
-			/*
-			  Keep this in sync with MonoSocketAsyncResult in
-  			  metadata/socket-io.h and ProcessAsyncReader
-  			  in System.Diagnostics/Process.cs.
-			*/
-
-			public Socket Sock;
-			public IntPtr handle;
-			object state;
-			AsyncCallback callback;
-			WaitHandle waithandle;
-
-			Exception delayedException;
-
-			public EndPoint EndPoint;	// Connect,ReceiveFrom,SendTo
-			public byte [] Buffer;		// Receive,ReceiveFrom,Send,SendTo
-			public int Offset;		// Receive,ReceiveFrom,Send,SendTo
-			public int Size;		// Receive,ReceiveFrom,Send,SendTo
-			public SocketFlags SockFlags;	// Receive,ReceiveFrom,Send,SendTo
-			public Socket AcceptSocket;	// AcceptReceive
-			public IPAddress[] Addresses;	// Connect
-			public int Port;		// Connect
-#if NET_2_0
-			public IList<ArraySegment<byte>> Buffers;	// Receive, Send
-#else
-			public object Buffers;		// Reserve this slot in older profiles
-#endif
-			public bool ReuseSocket;	// Disconnect
-
-			// Return values
-			Socket acc_socket;
-			int total;
-
-			bool completed_sync;
-			bool completed;
-			public bool blocking;
-			internal int error;
-			SocketOperation operation;
-			public object ares;
-			public int EndCalled;
-
-			public SocketAsyncResult (Socket sock, object state, AsyncCallback callback, SocketOperation operation)
-			{
-				this.Sock = sock;
-				this.blocking = sock.blocking;
-				this.handle = sock.socket;
-				this.state = state;
-				this.callback = callback;
-				this.operation = operation;
-				SockFlags = SocketFlags.None;
-			}
-
-			public void CheckIfThrowDelayedException ()
-			{
-				if (delayedException != null) {
-					Sock.connected = false;
-					throw delayedException;
-				}
-
-				if (error != 0) {
-					Sock.connected = false;
-					throw new SocketException (error);
-				}
-			}
-
-			void CompleteAllOnDispose (Queue queue)
-			{
-				object [] pending = queue.ToArray ();
-				queue.Clear ();
-
-				WaitCallback cb;
-				for (int i = 0; i < pending.Length; i++) {
-					SocketAsyncResult ares = (SocketAsyncResult) pending [i];
-					cb = new WaitCallback (ares.CompleteDisposed);
-					ThreadPool.QueueUserWorkItem (cb, null);
-				}
-				if (pending.Length == 0)
-					Buffer = null;
-			}
-
-			void CompleteDisposed (object unused)
-			{
-				Complete ();
-			}
-
-			public void Complete ()
-			{
-				if (operation != SocketOperation.Receive && Sock.disposed)
-					delayedException = new ObjectDisposedException (Sock.GetType ().ToString ());
-
-				IsCompleted = true;
-
-				Queue queue = null;
-				if (operation == SocketOperation.Receive || operation == SocketOperation.ReceiveFrom) {
-					queue = Sock.readQ;
-				} else if (operation == SocketOperation.Send || operation == SocketOperation.SendTo) {
-					queue = Sock.writeQ;
-				}
-
-				if (queue != null) {
-					SocketAsyncCall sac = null;
-					SocketAsyncResult req = null;
-					lock (queue) {
-						// queue.Count will only be 0 if the socket is closed while receive/send
-						// operation(s) are pending and at least one call to this method is
-						// waiting on the lock while another one calls CompleteAllOnDispose()
-						if (queue.Count > 0)
-							queue.Dequeue (); // remove ourselves
-						if (queue.Count > 0) {
-							req = (SocketAsyncResult) queue.Peek ();
-							if (!Sock.disposed) {
-								Worker worker = new Worker (req);
-								sac = GetDelegate (worker, req.operation);
-							} else {
-								CompleteAllOnDispose (queue);
-							}
-						}
-					}
-
-					if (sac != null)
-						sac.BeginInvoke (null, req);
-				}
-
-				if (callback != null)
-					ThreadPool.QueueUserWorkItem (CB, null);
-				Buffer = null;
-			}
-
-			void CB (object unused)
-			{
-				callback (this);
-			}
-
-			SocketAsyncCall GetDelegate (Worker worker, SocketOperation op)
-			{
-				switch (op) {
-				case SocketOperation.Receive:
-					return new SocketAsyncCall (worker.Receive);
-				case SocketOperation.ReceiveFrom:
-					return new SocketAsyncCall (worker.ReceiveFrom);
-				case SocketOperation.Send:
-					return new SocketAsyncCall (worker.Send);
-				case SocketOperation.SendTo:
-					return new SocketAsyncCall (worker.SendTo);
-				default:
-					return null; // never happens
-				}
-			}
-
-			public void Complete (bool synch)
-			{
-				completed_sync = synch;
-				Complete ();
-			}
-
-			public void Complete (int total)
-			{
-				this.total = total;
-				Complete ();
-			}
-
-			public void Complete (Exception e, bool synch)
-			{
-				completed_sync = synch;
-				delayedException = e;
-				Complete ();
-			}
-
-			public void Complete (Exception e)
-			{
-				delayedException = e;
-				Complete ();
-			}
-
-			public void Complete (Socket s)
-			{
-				acc_socket = s;
-				Complete ();
-			}
-
-			public void Complete (Socket s, int total)
-			{
-				acc_socket = s;
-				this.total = total;
-				Complete ();
-			}
-
-			public object AsyncState {
-				get {
-					return state;
-				}
-			}
-
-			public WaitHandle AsyncWaitHandle {
-				get {
-					lock (this) {
-						if (waithandle == null)
-							waithandle = new ManualResetEvent (completed);
-					}
-
-					return waithandle;
-				}
-				set {
-					waithandle=value;
-				}
-			}
-
-			public bool CompletedSynchronously {
-				get {
-					return(completed_sync);
-				}
-			}
-
-			public bool IsCompleted {
-				get {
-					return(completed);
-				}
-				set {
-					completed=value;
-					lock (this) {
-						if (waithandle != null && value) {
-							((ManualResetEvent) waithandle).Set ();
-						}
-					}
-				}
-			}
-			
-			public Socket Socket {
-				get {
-					return acc_socket;
-				}
-			}
-
-			public int Total {
-				get { return total; }
-				set { total = value; }
-			}
-
-			public SocketError ErrorCode
-			{
-				get {
-#if NET_2_0
-					SocketException ex = delayedException as SocketException;
-					
-					if (ex != null)
-						return(ex.SocketErrorCode);
-
-					if (error != 0)
-						return((SocketError)error);
-#endif
-					return(SocketError.Success);
-				}
-			}
-		}
-
-		private sealed class Worker 
-		{
-			SocketAsyncResult result;
-
-			public Worker (SocketAsyncResult ares)
-			{
-				this.result = ares;
-			}
-
-			public void Accept ()
-			{
-				Socket acc_socket = null;
-				try {
-					acc_socket = result.Sock.Accept ();
-				} catch (Exception e) {
-					result.Complete (e);
-					return;
-				}
-
-				result.Complete (acc_socket);
-			}
-
-			/* only used in 2.0 profile and newer, but
-			 * leave in older profiles to keep interface
-			 * to runtime consistent
-			 */
-			public void AcceptReceive ()
-			{
-				Socket acc_socket = null;
-				
-				try {
-					if (result.AcceptSocket == null) {
-						acc_socket = result.Sock.Accept ();
-					} else {
-						acc_socket = result.AcceptSocket;
-						result.Sock.Accept (acc_socket);
-					}
-				} catch (Exception e) {
-					result.Complete (e);
-					return;
-				}
-
-				/* It seems the MS runtime
-				 * special-cases 0-length requested
-				 * receive data.  See bug 464201.
-				 */
-				int total = 0;
-				if (result.Size > 0) {
-					try {
-						SocketError error;
-					
-						total = acc_socket.Receive_nochecks (result.Buffer,
-										     result.Offset,
-										     result.Size,
-										     result.SockFlags,
-										     out error);
-					} catch (Exception e) {
-						result.Complete (e);
-						return;
-					}
-				}
-
-				result.Complete (acc_socket, total);
-			}
-
-			public void Connect ()
-			{
-				/* If result.EndPoint is non-null,
-				 * this is the standard one-address
-				 * connect attempt.  Otherwise
-				 * Addresses must be non-null and
-				 * contain a list of addresses to try
-				 * to connect to; the first one to
-				 * succeed causes the rest of the list
-				 * to be ignored.
-				 */
-				if (result.EndPoint != null) {
-					try {
-						if (!result.Sock.Blocking) {
-							int success;
-							result.Sock.Poll (-1, SelectMode.SelectWrite, out success);
-							if (success == 0) {
-								result.Sock.connected = true;
-							} else {
-								result.Complete (new SocketException (success));
-								return;
-							}
-						} else {
-							result.Sock.seed_endpoint = result.EndPoint;
-							result.Sock.Connect (result.EndPoint);
-							result.Sock.connected = true;
-						}
-					} catch (Exception e) {
-						result.Complete (e);
-						return;
-					}
-
-					result.Complete ();
-				} else if (result.Addresses != null) {
-					int error = (int) SocketError.InProgress; // why?
-					foreach(IPAddress address in result.Addresses) {
-						IPEndPoint iep = new IPEndPoint (address, result.Port);
-						SocketAddress serial = iep.Serialize ();
-						
-						Socket.Connect_internal (result.Sock.socket, serial, out error);
-						if (error == 0) {
-							result.Sock.connected = true;
-							result.Sock.seed_endpoint = iep;
-							result.Complete ();
-							return;
-						} else if (error != (int)SocketError.InProgress &&
-							   error != (int)SocketError.WouldBlock) {
-							continue;
-						}
-
-						if (!result.Sock.Blocking) {
-							int success;
-							result.Sock.Poll (-1, SelectMode.SelectWrite, out success);
-							if (success == 0) {
-								result.Sock.connected = true;
-								result.Sock.seed_endpoint = iep;
-								result.Complete ();
-								return;
-							}
-						}
-					}
-					
-					result.Complete (new SocketException (error));
-				} else {
-					result.Complete (new SocketException ((int)SocketError.AddressNotAvailable));
-				}
-			}
-
-			/* Also only used in 2.0 profile and newer */
-			public void Disconnect ()
-			{
-#if NET_2_0
-				try {
-					result.Sock.Disconnect (result.ReuseSocket);
-				} catch (Exception e) {
-					result.Complete (e);
-					return;
-				}
-				result.Complete ();
-#else
-				result.Complete (new SocketException ((int)SocketError.Fault));
-#endif
-			}
-
-			public void Receive ()
-			{
-				// Actual recv() done in the runtime
-				result.Complete ();
-			}
-
-			public void ReceiveFrom ()
-			{
-				int total = 0;
-				try {
-					total = result.Sock.ReceiveFrom_nochecks (result.Buffer,
-									 result.Offset,
-									 result.Size,
-									 result.SockFlags,
-									 ref result.EndPoint);
-				} catch (Exception e) {
-					result.Complete (e);
-					return;
-				}
-
-				result.Complete (total);
-			}
-
-			public void ReceiveGeneric ()
-			{
-#if NET_2_0
-				int total = 0;
-				try {
-					SocketError error;
-					
-					total = result.Sock.Receive (result.Buffers, result.SockFlags, out error);
-				} catch (Exception e) {
-					result.Complete (e);
-					return;
-				}
-				
-				result.Complete (total);
-#else
-				result.Complete (new SocketException ((int)SocketError.Fault));
-#endif
-			}
-
-			int send_so_far;
-
-			void UpdateSendValues (int last_sent)
-			{
-				if (result.error == 0) {
-					send_so_far += last_sent;
-					result.Offset += last_sent;
-					result.Size -= last_sent;
-				}
-			}
-
-			public void Send ()
-			{
-				// Actual send() done in the runtime
-				if (result.error == 0) {
-					UpdateSendValues (result.Total);
-					if (result.Sock.disposed) {
-						result.Complete ();
-						return;
-					}
-
-					if (result.Size > 0) {
-						SocketAsyncCall sac = new SocketAsyncCall (this.Send);
-						sac.BeginInvoke (null, result);
-						return; // Have to finish writing everything. See bug #74475.
-					}
-					result.Total = send_so_far;
-				}
-				result.Complete ();
-			}
-
-			public void SendTo ()
-			{
-				int total = 0;
-				try {
-					total = result.Sock.SendTo_nochecks (result.Buffer,
-								    result.Offset,
-								    result.Size,
-								    result.SockFlags,
-								    result.EndPoint);
-
-					UpdateSendValues (total);
-					if (result.Size > 0) {
-						SocketAsyncCall sac = new SocketAsyncCall (this.SendTo);
-						sac.BeginInvoke (null, result);
-						return; // Have to finish writing everything. See bug #74475.
-					}
-					result.Total = send_so_far;
-				} catch (Exception e) {
-					result.Complete (e);
-					return;
-				}
-
-				result.Complete ();
-			}
-
-			public void SendGeneric ()
-			{
-#if NET_2_0
-				int total = 0;
-				try {
-					SocketError error;
-					
-					total = result.Sock.Send (result.Buffers, result.SockFlags, out error);
-				} catch (Exception e) {
-					result.Complete (e);
-					return;
-				}
-				
-				result.Complete (total);
-#else
-				result.Complete (new SocketException ((int)SocketError.Fault));
-#endif
-			}
-		}
-			
-
-		private Queue readQ = new Queue (2);
-		private Queue writeQ = new Queue (2);
-
-		delegate void SocketAsyncCall ();
-
-#if NET_2_0
 		private bool islistening;
 		private bool useoverlappedIO;
-#endif
-		
 
-		static void AddSockets (ArrayList sockets, IList list, string name)
+		static void AddSockets (List<Socket> sockets, IList list, string name)
 		{
 			if (list != null) {
 				foreach (Socket sock in list) {
@@ -635,7 +76,7 @@ namespace System.Net.Sockets
 #endif
 		public static void Select (IList checkRead, IList checkWrite, IList checkError, int microSeconds)
 		{
-			ArrayList list = new ArrayList ();
+			var list = new List<Socket> ();
 			AddSockets (list, checkRead, "checkRead");
 			AddSockets (list, checkWrite, "checkWrite");
 			AddSockets (list, checkError, "checkError");
@@ -651,7 +92,7 @@ namespace System.Net.Sockets
 			 * 				 WRITE socket 0-n, null,
 			 *				 ERROR socket 0-n, null
 			 */
-			Socket [] sockets = (Socket []) list.ToArray (typeof (Socket));
+			Socket [] sockets = list.ToArray ();
 			Select_internal (ref sockets, microSeconds, out error);
 
 			if (error != 0)
@@ -702,7 +143,7 @@ namespace System.Net.Sockets
 
 		// private constructor used by Accept, which already
 		// has a socket handle to use
-		private Socket(AddressFamily family, SocketType type,
+		internal Socket(AddressFamily family, SocketType type,
 			       ProtocolType proto, IntPtr sock)
 		{
 			address_family=family;
@@ -715,7 +156,6 @@ namespace System.Net.Sockets
 
 		private void SocketDefaults ()
 		{
-#if NET_2_0
 			try {
 				if (address_family == AddressFamily.InterNetwork /* Need to test IPv6 further ||
 										   address_family == AddressFamily.InterNetworkV6 */) {
@@ -738,11 +178,9 @@ namespace System.Net.Sockets
 				//this.SendBufferSize = 8192;
 			} catch (SocketException) {
 			}
-#endif
 		}
 
 
-#if NET_2_0
 		[MonoTODO]
 		public Socket (SocketInformation socketInformation)
 		{
@@ -765,7 +203,6 @@ namespace System.Net.Sockets
 			SocketDefaults ();
 #endif
 		}
-#endif
 
 #if !TARGET_JVM
 		// Returns the amount of data waiting to be read on socket
@@ -790,7 +227,6 @@ namespace System.Net.Sockets
 		}
 
 
-#if NET_2_0
 		public bool DontFragment {
 			get {
 				if (disposed && closed) {
@@ -965,7 +401,6 @@ namespace System.Net.Sockets
 				useoverlappedIO = value;
 			}
 		}
-#endif
 
 		public IntPtr Handle {
 			get {
@@ -976,7 +411,7 @@ namespace System.Net.Sockets
 #if !TARGET_JVM
 		// Returns the local endpoint details in addr and port
 		[MethodImplAttribute(MethodImplOptions.InternalCall)]
-		private extern static SocketAddress LocalEndPoint_internal(IntPtr socket, out int error);
+		private extern static SocketAddress LocalEndPoint_internal(IntPtr socket, int family, out int error);
 #endif
 
 		// Wish:  support non-IP endpoints.
@@ -996,7 +431,7 @@ namespace System.Net.Sockets
 				SocketAddress sa;
 				int error;
 				
-				sa=LocalEndPoint_internal(socket, out error);
+				sa=LocalEndPoint_internal(socket, (int) address_family, out error);
 
 				if (error != 0)
 					throw new SocketException (error);
@@ -1011,7 +446,6 @@ namespace System.Net.Sockets
 			}
 		}
 
-#if NET_2_0
 		public int SendTimeout {
 			get {
 				if (disposed && closed)
@@ -1068,6 +502,7 @@ namespace System.Net.Sockets
 			}
 		}
 
+#if !MOONLIGHT
 		public bool AcceptAsync (SocketAsyncEventArgs e)
 		{
 			// NO check is made whether e != null in MS.NET (NRE is thrown in such case)
@@ -1082,26 +517,20 @@ namespace System.Net.Sockets
 				throw new ArgumentException ("Multiple buffers cannot be used with this method.");
 			if (e.Count < 0)
 				throw new ArgumentOutOfRangeException ("e.Count");
-			
+
 			Socket acceptSocket = e.AcceptSocket;
 			if (acceptSocket != null) {
 				if (acceptSocket.IsBound || acceptSocket.Connected)
 					throw new InvalidOperationException ("AcceptSocket: The socket must not be bound or connected.");
-			} else
-				e.AcceptSocket = new Socket (AddressFamily, SocketType, ProtocolType);
-
-			try {
-				e.DoOperation (SocketAsyncOperation.Accept, this);
-			} catch {
-				((IDisposable)e).Dispose ();
-				throw;
 			}
 
-			// We always return true for now
+			e.curSocket = this;
+			Worker w = e.Worker;
+			w.Init (this, null, e.AcceptCallback, SocketOperation.Accept);
+			socket_pool_queue (w.Accept, w.result);
 			return true;
 		}
 #endif
-		
 		// Creates a new system socket, returning the handle
 		[MethodImplAttribute(MethodImplOptions.InternalCall)]
 		private extern static IntPtr Accept_internal(IntPtr sock, out int error, bool blocking);
@@ -1171,26 +600,20 @@ namespace System.Net.Sockets
 			 */
 		}
 
-		public IAsyncResult BeginAccept(AsyncCallback callback,
-						object state)
+		public IAsyncResult BeginAccept(AsyncCallback callback, object state)
 		{
 			if (disposed && closed)
 				throw new ObjectDisposedException (GetType ().ToString ());
 
-#if NET_2_0
-			/* FIXME: check the 1.1 docs for this too */
 			if (!isbound || !islistening)
 				throw new InvalidOperationException ();
-#endif
 
 			SocketAsyncResult req = new SocketAsyncResult (this, state, callback, SocketOperation.Accept);
 			Worker worker = new Worker (req);
-			SocketAsyncCall sac = new SocketAsyncCall (worker.Accept);
-			sac.BeginInvoke (null, req);
-			return(req);
+			socket_pool_queue (worker.Accept, req);
+			return req;
 		}
 
-#if NET_2_0
 		public IAsyncResult BeginAccept (int receiveSize,
 						 AsyncCallback callback,
 						 object state)
@@ -1203,15 +626,12 @@ namespace System.Net.Sockets
 
 			SocketAsyncResult req = new SocketAsyncResult (this, state, callback, SocketOperation.AcceptReceive);
 			Worker worker = new Worker (req);
-			SocketAsyncCall sac = new SocketAsyncCall (worker.AcceptReceive);
-			
 			req.Buffer = new byte[receiveSize];
 			req.Offset = 0;
 			req.Size = receiveSize;
 			req.SockFlags = SocketFlags.None;
-
-			sac.BeginInvoke (null, req);
-			return(req);
+			socket_pool_queue (worker.AcceptReceive, req);
+			return req;
 		}
 
 		public IAsyncResult BeginAccept (Socket acceptSocket,
@@ -1243,18 +663,14 @@ namespace System.Net.Sockets
 			
 			SocketAsyncResult req = new SocketAsyncResult (this, state, callback, SocketOperation.AcceptReceive);
 			Worker worker = new Worker (req);
-			SocketAsyncCall sac = new SocketAsyncCall (worker.AcceptReceive);
-			
 			req.Buffer = new byte[receiveSize];
 			req.Offset = 0;
 			req.Size = receiveSize;
 			req.SockFlags = SocketFlags.None;
 			req.AcceptSocket = acceptSocket;
-
-			sac.BeginInvoke (null, req);
+			socket_pool_queue (worker.AcceptReceive, req);
 			return(req);
 		}
-#endif
 
 		public IAsyncResult BeginConnect(EndPoint end_point,
 						 AsyncCallback callback,
@@ -1297,14 +713,12 @@ namespace System.Net.Sockets
 				// continue asynch
 				connected = false;
 				Worker worker = new Worker (req);
-				SocketAsyncCall sac = new SocketAsyncCall (worker.Connect);
-				sac.BeginInvoke (null, req);
+				socket_pool_queue (worker.Connect, req);
 			}
 
 			return(req);
 		}
 
-#if NET_2_0
 		public IAsyncResult BeginConnect (IPAddress address, int port,
 						  AsyncCallback callback,
 						  object state)
@@ -1349,8 +763,7 @@ namespace System.Net.Sockets
 			
 			connected = false;
 			Worker worker = new Worker (req);
-			SocketAsyncCall sac = new SocketAsyncCall (worker.Connect);
-			sac.BeginInvoke (null, req);
+			socket_pool_queue (worker.Connect, req);
 			
 			return(req);
 		}
@@ -1387,12 +800,10 @@ namespace System.Net.Sockets
 			req.ReuseSocket = reuseSocket;
 			
 			Worker worker = new Worker (req);
-			SocketAsyncCall sac = new SocketAsyncCall (worker.Disconnect);
-			sac.BeginInvoke (null, req);
+			socket_pool_queue (worker.Disconnect, req);
 			
 			return(req);
 		}
-#endif
 		
 		public IAsyncResult BeginReceive(byte[] buffer, int offset,
 						 int size,
@@ -1412,24 +823,22 @@ namespace System.Net.Sockets
 			if (size < 0 || offset + size > buffer.Length)
 				throw new ArgumentOutOfRangeException ("size");
 
-			SocketAsyncResult req;
+			SocketAsyncResult req = new SocketAsyncResult (this, state, callback, SocketOperation.Receive);
+			req.Buffer = buffer;
+			req.Offset = offset;
+			req.Size = size;
+			req.SockFlags = socket_flags;
+			Worker worker = new Worker (req);
+			int count;
 			lock (readQ) {
-				req = new SocketAsyncResult (this, state, callback, SocketOperation.Receive);
-				req.Buffer = buffer;
-				req.Offset = offset;
-				req.Size = size;
-				req.SockFlags = socket_flags;
-				readQ.Enqueue (req);
-				if (readQ.Count == 1) {
-					Worker worker = new Worker (req);
-					SocketAsyncCall sac = new SocketAsyncCall (worker.Receive);
-					sac.BeginInvoke (null, req);
-				}
+				readQ.Enqueue (worker);
+				count = readQ.Count;
 			}
-
+			if (count == 1)
+				socket_pool_queue (worker.Receive, req);
 			return req;
 		}
-#if NET_2_0
+
 		public IAsyncResult BeginReceive (byte[] buffer, int offset,
 						  int size, SocketFlags flags,
 						  out SocketError error,
@@ -1459,20 +868,18 @@ namespace System.Net.Sockets
 			if (buffers == null)
 				throw new ArgumentNullException ("buffers");
 
-			SocketAsyncResult req;
+			SocketAsyncResult req = new SocketAsyncResult (this, state, callback, SocketOperation.ReceiveGeneric);
+			req.Buffers = buffers;
+			req.SockFlags = socketFlags;
+			Worker worker = new Worker (req);
+			int count;
 			lock(readQ) {
-				req = new SocketAsyncResult (this, state, callback, SocketOperation.ReceiveGeneric);
-				req.Buffers = buffers;
-				req.SockFlags = socketFlags;
-				readQ.Enqueue (req);
-				if (readQ.Count == 1) {
-					Worker worker = new Worker (req);
-					SocketAsyncCall sac = new SocketAsyncCall (worker.ReceiveGeneric);
-					sac.BeginInvoke (null, req);
-				}
+				readQ.Enqueue (worker);
+				count = readQ.Count;
 			}
-			
-			return(req);
+			if (count == 1)
+				socket_pool_queue (worker.ReceiveGeneric, req);
+			return req;
 		}
 		
 		[CLSCompliant (false)]
@@ -1488,7 +895,6 @@ namespace System.Net.Sockets
 			errorCode = SocketError.Success;
 			return (BeginReceive (buffers, socketFlags, callback, state));
 		}
-#endif
 
 		public IAsyncResult BeginReceiveFrom(byte[] buffer, int offset,
 						     int size,
@@ -1502,6 +908,9 @@ namespace System.Net.Sockets
 			if (buffer == null)
 				throw new ArgumentNullException ("buffer");
 
+			if (remote_end == null)
+				throw new ArgumentNullException ("remote_end");
+
 			if (offset < 0)
 				throw new ArgumentOutOfRangeException ("offset", "offset must be >= 0");
 
@@ -1511,25 +920,23 @@ namespace System.Net.Sockets
 			if (offset + size > buffer.Length)
 				throw new ArgumentOutOfRangeException ("offset, size", "offset + size exceeds the buffer length");
 
-			SocketAsyncResult req;
+			SocketAsyncResult req = new SocketAsyncResult (this, state, callback, SocketOperation.ReceiveFrom);
+			req.Buffer = buffer;
+			req.Offset = offset;
+			req.Size = size;
+			req.SockFlags = socket_flags;
+			req.EndPoint = remote_end;
+			Worker worker = new Worker (req);
+			int count;
 			lock (readQ) {
-				req = new SocketAsyncResult (this, state, callback, SocketOperation.ReceiveFrom);
-				req.Buffer = buffer;
-				req.Offset = offset;
-				req.Size = size;
-				req.SockFlags = socket_flags;
-				req.EndPoint = remote_end;
-				readQ.Enqueue (req);
-				if (readQ.Count == 1) {
-					Worker worker = new Worker (req);
-					SocketAsyncCall sac = new SocketAsyncCall (worker.ReceiveFrom);
-					sac.BeginInvoke (null, req);
-				}
+				readQ.Enqueue (worker);
+				count = readQ.Count;
 			}
+			if (count == 1)
+				socket_pool_queue (worker.ReceiveFrom, req);
 			return req;
 		}
 
-#if NET_2_0
 		[MonoTODO]
 		public IAsyncResult BeginReceiveMessageFrom (
 			byte[] buffer, int offset, int size,
@@ -1553,7 +960,6 @@ namespace System.Net.Sockets
 
 			throw new NotImplementedException ();
 		}
-#endif
 
 		public IAsyncResult BeginSend (byte[] buffer, int offset, int size, SocketFlags socket_flags,
 					       AsyncCallback callback, object state)
@@ -1573,30 +979,25 @@ namespace System.Net.Sockets
 			if (offset + size > buffer.Length)
 				throw new ArgumentOutOfRangeException ("offset, size", "offset + size exceeds the buffer length");
 
-#if NET_2_0
-			/* TODO: Check this exception in the 1.1 profile */
 			if (!connected)
 				throw new SocketException ((int)SocketError.NotConnected);
-#endif
 
-			SocketAsyncResult req;
+			SocketAsyncResult req = new SocketAsyncResult (this, state, callback, SocketOperation.Send);
+			req.Buffer = buffer;
+			req.Offset = offset;
+			req.Size = size;
+			req.SockFlags = socket_flags;
+			Worker worker = new Worker (req);
+			int count;
 			lock (writeQ) {
-				req = new SocketAsyncResult (this, state, callback, SocketOperation.Send);
-				req.Buffer = buffer;
-				req.Offset = offset;
-				req.Size = size;
-				req.SockFlags = socket_flags;
-				writeQ.Enqueue (req);
-				if (writeQ.Count == 1) {
-					Worker worker = new Worker (req);
-					SocketAsyncCall sac = new SocketAsyncCall (worker.Send);
-					sac.BeginInvoke (null, req);
-				}
+				writeQ.Enqueue (worker);
+				count = writeQ.Count;
 			}
+			if (count == 1)
+				socket_pool_queue (worker.Send, req);
 			return req;
 		}
 
-#if NET_2_0
 		public IAsyncResult BeginSend (byte[] buffer, int offset,
 					       int size,
 					       SocketFlags socketFlags,
@@ -1629,20 +1030,18 @@ namespace System.Net.Sockets
 			if (!connected)
 				throw new SocketException ((int)SocketError.NotConnected);
 
-			SocketAsyncResult req;
+			SocketAsyncResult req = new SocketAsyncResult (this, state, callback, SocketOperation.SendGeneric);
+			req.Buffers = buffers;
+			req.SockFlags = socketFlags;
+			Worker worker = new Worker (req);
+			int count;
 			lock (writeQ) {
-				req = new SocketAsyncResult (this, state, callback, SocketOperation.SendGeneric);
-				req.Buffers = buffers;
-				req.SockFlags = socketFlags;
-				writeQ.Enqueue (req);
-				if (writeQ.Count == 1) {
-					Worker worker = new Worker (req);
-					SocketAsyncCall sac = new SocketAsyncCall (worker.SendGeneric);
-					sac.BeginInvoke (null, req);
-				}
+				writeQ.Enqueue (worker);
+				count = writeQ.Count;
 			}
-			
-			return(req);
+			if (count == 1)
+				socket_pool_queue (worker.SendGeneric, req);
+			return req;
 		}
 
 		[CLSCompliant (false)]
@@ -1733,7 +1132,6 @@ namespace System.Net.Sockets
 			SendFileHandler d = new SendFileHandler (SendFile);
 			return new SendFileAsyncResult (d, d.BeginInvoke (fileName, preBuffer, postBuffer, flags, callback, state));
 		}
-#endif
 
 		public IAsyncResult BeginSendTo(byte[] buffer, int offset,
 						int size,
@@ -1756,21 +1154,20 @@ namespace System.Net.Sockets
 			if (offset + size > buffer.Length)
 				throw new ArgumentOutOfRangeException ("offset, size", "offset + size exceeds the buffer length");
 
-			SocketAsyncResult req;
+			SocketAsyncResult req = new SocketAsyncResult (this, state, callback, SocketOperation.SendTo);
+			req.Buffer = buffer;
+			req.Offset = offset;
+			req.Size = size;
+			req.SockFlags = socket_flags;
+			req.EndPoint = remote_end;
+			Worker worker = new Worker (req);
+			int count;
 			lock (writeQ) {
-				req = new SocketAsyncResult (this, state, callback, SocketOperation.SendTo);
-				req.Buffer = buffer;
-				req.Offset = offset;
-				req.Size = size;
-				req.SockFlags = socket_flags;
-				req.EndPoint = remote_end;
-				writeQ.Enqueue (req);
-				if (writeQ.Count == 1) {
-					Worker worker = new Worker (req);
-					SocketAsyncCall sac = new SocketAsyncCall (worker.SendTo);
-					sac.BeginInvoke (null, req);
-				}
+				writeQ.Enqueue (worker);
+				count = writeQ.Count;
 			}
+			if (count == 1)
+				socket_pool_queue (worker.SendTo, req);
 			return req;
 		}
 
@@ -1792,10 +1189,8 @@ namespace System.Net.Sockets
 			Bind_internal(socket, local_end.Serialize(), out error);
 			if (error != 0)
 				throw new SocketException (error);
-#if NET_2_0
 			if (error == 0)
 				isbound = true;
-#endif
 			
 			seed_endpoint = local_end;
 		}
@@ -1821,7 +1216,6 @@ namespace System.Net.Sockets
 		}
 #endif
 		
-#if NET_2_0
 		public void Connect (IPAddress address, int port)
 		{
 			Connect (new IPEndPoint (address, port));
@@ -1851,6 +1245,7 @@ namespace System.Net.Sockets
 				Connect_internal (socket, serial, out error);
 				if (error == 0) {
 					connected = true;
+					isbound = true;
 					seed_endpoint = iep;
 					return;
 				} else if (error != (int)SocketError.InProgress &&
@@ -1863,6 +1258,7 @@ namespace System.Net.Sockets
 					error = (int)GetSocketOption (SocketOptionLevel.Socket, SocketOptionName.Error);
 					if (error == 0) {
 						connected = true;
+						isbound = true;
 						seed_endpoint = iep;
 						return;
 					}
@@ -1878,22 +1274,22 @@ namespace System.Net.Sockets
 			Connect (addresses, port);
 		}
 
-#if NET_2_0
+#if !MOONLIGHT
 		public bool DisconnectAsync (SocketAsyncEventArgs e)
 		{
 			// NO check is made whether e != null in MS.NET (NRE is thrown in such case)
 			if (disposed && closed)
 				throw new ObjectDisposedException (GetType ().ToString ());
 
-			e.DoOperation (SocketAsyncOperation.Disconnect, this);
-
+			e.curSocket = this;
+			e.Worker.Init (this, null, e.DisconnectCallback, SocketOperation.Disconnect);
+			socket_pool_queue (e.Worker.Disconnect, e.Worker.result);
 			return true;
 		}
 #endif
+
 		[MethodImplAttribute(MethodImplOptions.InternalCall)]
-		private extern static void Disconnect_internal(IntPtr sock,
-							       bool reuse,
-							       out int error);
+		extern static void Disconnect_internal(IntPtr sock, bool reuse, out int error);
 
 		/* According to the docs, the MS runtime will throw
 		 * PlatformNotSupportedException if the platform is
@@ -1934,8 +1330,7 @@ namespace System.Net.Sockets
 			 */
 			throw new NotImplementedException ();
 		}
-#endif
-		
+
 		public Socket EndAccept (IAsyncResult result)
 		{
 			int bytes;
@@ -1944,23 +1339,13 @@ namespace System.Net.Sockets
 			return(EndAccept (out buffer, out bytes, result));
 		}
 
-#if NET_2_0
-		public Socket EndAccept (out byte[] buffer,
-					 IAsyncResult asyncResult)
+		public Socket EndAccept (out byte[] buffer, IAsyncResult asyncResult)
 		{
 			int bytes;
-			
 			return(EndAccept (out buffer, out bytes, asyncResult));
 		}
-#endif
 
-#if NET_2_0
-		public
-#else
-		private
-#endif
-		Socket EndAccept (out byte[] buffer, out int bytesTransferred,
-				  IAsyncResult asyncResult)
+		public Socket EndAccept (out byte[] buffer, out int bytesTransferred, IAsyncResult asyncResult)
 		{
 			if (disposed && closed)
 				throw new ObjectDisposedException (GetType ().ToString ());
@@ -2005,7 +1390,7 @@ namespace System.Net.Sockets
 			req.CheckIfThrowDelayedException();
 		}
 
-#if NET_2_0
+#if !MOONLIGHT
 		public void EndDisconnect (IAsyncResult asyncResult)
 		{
 			if (disposed && closed)
@@ -2027,64 +1412,6 @@ namespace System.Net.Sockets
 		}
 #endif
 
-		public int EndReceive (IAsyncResult result)
-		{
-			SocketError error;
-			
-			return (EndReceive (result, out error));
-		}
-
-#if NET_2_0
-		public
-#else
-		private
-#endif
-		int EndReceive (IAsyncResult asyncResult, out SocketError errorCode)
-		{
-			if (disposed && closed)
-				throw new ObjectDisposedException (GetType ().ToString ());
-
-			if (asyncResult == null)
-				throw new ArgumentNullException ("asyncResult");
-
-			SocketAsyncResult req = asyncResult as SocketAsyncResult;
-			if (req == null)
-				throw new ArgumentException ("Invalid IAsyncResult", "asyncResult");
-
-			if (Interlocked.CompareExchange (ref req.EndCalled, 1, 0) == 1)
-				throw InvalidAsyncOp ("EndReceive");
-			if (!asyncResult.IsCompleted)
-				asyncResult.AsyncWaitHandle.WaitOne ();
-
-			errorCode = req.ErrorCode;
-			req.CheckIfThrowDelayedException ();
-			
-			return(req.Total);
-		}
-
-		public int EndReceiveFrom(IAsyncResult result, ref EndPoint end_point)
-		{
-			if (disposed && closed)
-				throw new ObjectDisposedException (GetType ().ToString ());
-
-			if (result == null)
-				throw new ArgumentNullException ("result");
-
-			SocketAsyncResult req = result as SocketAsyncResult;
-			if (req == null)
-				throw new ArgumentException ("Invalid IAsyncResult", "result");
-
-			if (Interlocked.CompareExchange (ref req.EndCalled, 1, 0) == 1)
-				throw InvalidAsyncOp ("EndReceiveFrom");
-			if (!result.IsCompleted)
-				result.AsyncWaitHandle.WaitOne();
-
- 			req.CheckIfThrowDelayedException();
-			end_point = req.EndPoint;
-			return req.Total;
-		}
-
-#if NET_2_0
 		[MonoTODO]
 		public int EndReceiveMessageFrom (IAsyncResult asyncResult,
 						  ref SocketFlags socketFlags,
@@ -2108,44 +1435,7 @@ namespace System.Net.Sockets
 				throw InvalidAsyncOp ("EndReceiveMessageFrom");
 			throw new NotImplementedException ();
 		}
-#endif
-
-		public int EndSend (IAsyncResult result)
-		{
-			SocketError error;
-			
-			return(EndSend (result, out error));
-		}
-
-#if NET_2_0
-		public
-#else
-		private
-#endif
-		int EndSend (IAsyncResult asyncResult, out SocketError errorCode)
-		{
-			if (disposed && closed)
-				throw new ObjectDisposedException (GetType ().ToString ());
-
-			if (asyncResult == null)
-				throw new ArgumentNullException ("asyncResult");
-			
-			SocketAsyncResult req = asyncResult as SocketAsyncResult;
-			if (req == null)
-				throw new ArgumentException ("Invalid IAsyncResult", "result");
-
-			if (Interlocked.CompareExchange (ref req.EndCalled, 1, 0) == 1)
-				throw InvalidAsyncOp ("EndSend");
-			if (!asyncResult.IsCompleted)
-				asyncResult.AsyncWaitHandle.WaitOne ();
-
-			errorCode = req.ErrorCode;
-			req.CheckIfThrowDelayedException ();
-			
-			return(req.Total);
-		}
 
-#if NET_2_0
 		public void EndSendFile (IAsyncResult asyncResult)
 		{
 			if (disposed && closed)
@@ -2160,13 +1450,8 @@ namespace System.Net.Sockets
 
 			ares.Delegate.EndInvoke (ares.Original);
 		}
-#endif
-
-		Exception InvalidAsyncOp (string method)
-		{
-			return new InvalidOperationException (method + " can only be called once per asynchronous operation");
-		}
 
+#if !MOONLIGHT
 		public int EndSendTo (IAsyncResult result)
 		{
 			if (disposed && closed)
@@ -2187,6 +1472,7 @@ namespace System.Net.Sockets
 			req.CheckIfThrowDelayedException();
 			return req.Total;
 		}
+#endif
 
 		[MethodImplAttribute(MethodImplOptions.InternalCall)]
 		private extern static void GetSocketOption_arr_internal(IntPtr socket,
@@ -2252,46 +1538,33 @@ namespace System.Net.Sockets
 			return result;
 		}
 
-#if NET_2_0
 		[MonoTODO]
-		public int IOControl (IOControlCode ioControlCode,
-				      byte[] optionInValue,
-				      byte[] optionOutValue)
+		public int IOControl (IOControlCode ioControlCode, byte[] optionInValue, byte[] optionOutValue)
 		{
 			/* Probably just needs to mirror the int
 			 * overload, but more investigation needed.
 			 */
 			throw new NotImplementedException ();
 		}
-#endif
 
 		[MethodImplAttribute(MethodImplOptions.InternalCall)]
-		private extern static void Listen_internal(IntPtr sock, int backlog,
-			out int error);
+		private extern static void Listen_internal(IntPtr sock, int backlog, out int error);
 
 		public void Listen (int backlog)
 		{
 			if (disposed && closed)
 				throw new ObjectDisposedException (GetType ().ToString ());
 
-#if NET_2_0
-			/* TODO: check if this should be thrown in the
-			 * 1.1 profile too
-			 */
 			if (!isbound)
 				throw new SocketException ((int)SocketError.InvalidArgument);
-#endif
 
 			int error;
-			
 			Listen_internal(socket, backlog, out error);
 
 			if (error != 0)
 				throw new SocketException (error);
 
-#if NET_2_0
 			islistening = true;
-#endif
 		}
 
 		public bool Poll (int time_us, SelectMode mode)
@@ -2413,7 +1686,6 @@ namespace System.Net.Sockets
 			return ret;
 		}
 
-#if NET_2_0
 		public int Receive (byte [] buffer, int offset, int size, SocketFlags flags, out SocketError error)
 		{
 			if (disposed && closed)
@@ -2431,91 +1703,7 @@ namespace System.Net.Sockets
 			return Receive_nochecks (buffer, offset, size, flags, out error);
 		}
 
-		[MethodImplAttribute (MethodImplOptions.InternalCall)]
-		private extern static int Receive_internal (IntPtr sock,
-							    WSABUF[] bufarray,
-							    SocketFlags flags,
-							    out int error);
-		
-		public int Receive (IList<ArraySegment<byte>> buffers)
-		{
-			int ret;
-			SocketError error;
-			
-			ret = Receive (buffers, SocketFlags.None, out error);
-			if (error != SocketError.Success) {
-				throw new SocketException ((int)error);
-			}
-			
-			return(ret);
-		}
-		
-		[CLSCompliant (false)]
-		public int Receive (IList<ArraySegment<byte>> buffers,
-				    SocketFlags socketFlags)
-		{
-			int ret;
-			SocketError error;
-			
-			ret = Receive (buffers, socketFlags, out error);
-			if (error != SocketError.Success) {
-				throw new SocketException ((int)error);
-			}
-			
-			return(ret);
-		}
-
-		[CLSCompliant (false)]
-		public int Receive (IList<ArraySegment<byte>> buffers,
-				    SocketFlags socketFlags,
-				    out SocketError errorCode)
-		{
-			if (disposed && closed)
-				throw new ObjectDisposedException (GetType ().ToString ());
-
-			if (buffers == null ||
-			    buffers.Count == 0) {
-				throw new ArgumentNullException ("buffers");
-			}
-
-			int numsegments = buffers.Count;
-			int nativeError;
-			int ret;
-
-			/* Only example I can find of sending a byte
-			 * array reference directly into an internal
-			 * call is in
-			 * System.Runtime.Remoting/System.Runtime.Remoting.Channels.Ipc.Win32/NamedPipeSocket.cs,
-			 * so taking a lead from that...
-			 */
-			WSABUF[] bufarray = new WSABUF[numsegments];
-			GCHandle[] gch = new GCHandle[numsegments];
-
-			for(int i = 0; i < numsegments; i++) {
-				ArraySegment<byte> segment = buffers[i];
-				gch[i] = GCHandle.Alloc (segment.Array, GCHandleType.Pinned);
-				bufarray[i].len = segment.Count;
-				bufarray[i].buf = Marshal.UnsafeAddrOfPinnedArrayElement (segment.Array, segment.Offset);
-			}
-			
-			try {
-				ret = Receive_internal (socket, bufarray,
-							socketFlags,
-							out nativeError);
-			} finally {
-				for(int i = 0; i < numsegments; i++) {
-					if (gch[i].IsAllocated) {
-						gch[i].Free ();
-					}
-				}
-			}
-
-			errorCode = (SocketError)nativeError;
-			return(ret);
-		}
-#endif
-
-#if NET_2_0
+#if !MOONLIGHT
 		public bool ReceiveFromAsync (SocketAsyncEventArgs e)
 		{
 			if (disposed && closed)
@@ -2527,9 +1715,22 @@ namespace System.Net.Sockets
 			if (e.RemoteEndPoint == null)
 				throw new ArgumentNullException ("remoteEP", "Value cannot be null.");
 
-			e.DoOperation (SocketAsyncOperation.ReceiveFrom, this);
-
-			// We always return true for now
+			e.curSocket = this;
+			e.Worker.Init (this, null, e.ReceiveFromCallback, SocketOperation.ReceiveFrom);
+			SocketAsyncResult res = e.Worker.result;
+			res.Buffer = e.Buffer;
+			res.Offset = e.Offset;
+			res.Size = e.Count;
+			res.EndPoint = e.RemoteEndPoint;
+			res.SockFlags = e.SocketFlags;
+			Worker worker = new Worker (e);
+			int count;
+			lock (readQ) {
+				readQ.Enqueue (worker);
+				count = readQ.Count;
+			}
+			if (count == 1)
+				socket_pool_queue (e.Worker.ReceiveFrom, res);
 			return true;
 		}
 #endif
@@ -2639,10 +1840,7 @@ namespace System.Net.Sockets
 			}
 
 			connected = true;
-
-#if NET_2_0
 			isbound = true;
-#endif
 
 			// If sockaddr is null then we're a connection
 			// oriented protocol and should ignore the
@@ -2660,7 +1858,6 @@ namespace System.Net.Sockets
 			return cnt;
 		}
 
-#if NET_2_0
 		[MonoTODO ("Not implemented")]
 		public bool ReceiveMessageFromAsync (SocketAsyncEventArgs e)
 		{
@@ -2710,8 +1907,6 @@ namespace System.Net.Sockets
 			throw new NotImplementedException ();
 		}
 
-#endif
-
 		public int Send (byte [] buf)
 		{
 			if (disposed && closed)
@@ -2793,7 +1988,6 @@ namespace System.Net.Sockets
 			return ret;
 		}
 
-#if NET_2_0
 		public int Send (byte [] buf, int offset, int size, SocketFlags flags, out SocketError error)
 		{
 			if (disposed && closed)
@@ -2811,86 +2005,6 @@ namespace System.Net.Sockets
 			return Send_nochecks (buf, offset, size, flags, out error);
 		}
 
-		[MethodImplAttribute (MethodImplOptions.InternalCall)]
-		private extern static int Send_internal (IntPtr sock,
-							 WSABUF[] bufarray,
-							 SocketFlags flags,
-							 out int error);
-
-		public int Send (IList<ArraySegment<byte>> buffers)
-		{
-			int ret;
-			SocketError error;
-			
-			ret = Send (buffers, SocketFlags.None, out error);
-			if (error != SocketError.Success) {
-				throw new SocketException ((int)error);
-			}
-			
-			return(ret);
-		}
-
-		public int Send (IList<ArraySegment<byte>> buffers,
-				 SocketFlags socketFlags)
-		{
-			int ret;
-			SocketError error;
-			
-			ret = Send (buffers, socketFlags, out error);
-			if (error != SocketError.Success) {
-				throw new SocketException ((int)error);
-			}
-			
-			return(ret);
-		}
-
-		[CLSCompliant (false)]
-		public int Send (IList<ArraySegment<byte>> buffers,
-				 SocketFlags socketFlags,
-				 out SocketError errorCode)
-		{
-			if (disposed && closed) {
-				throw new ObjectDisposedException (GetType ().ToString ());
-			}
-			
-			if (buffers == null) {
-				throw new ArgumentNullException ("buffers");
-			}
-			
-			if (buffers.Count == 0) {
-				throw new ArgumentException ("Buffer is empty", "buffers");
-			}
-			
-			int numsegments = buffers.Count;
-			int nativeError;
-			int ret;
-			
-			WSABUF[] bufarray = new WSABUF[numsegments];
-			GCHandle[] gch = new GCHandle[numsegments];
-			
-			for(int i = 0; i < numsegments; i++) {
-				ArraySegment<byte> segment = buffers[i];
-				gch[i] = GCHandle.Alloc (segment.Array, GCHandleType.Pinned);
-				bufarray[i].len = segment.Count;
-				bufarray[i].buf = Marshal.UnsafeAddrOfPinnedArrayElement (segment.Array, segment.Offset);
-			}
-			
-			try {
-				ret = Send_internal (socket, bufarray,
-						     socketFlags,
-						     out nativeError);
-			} finally {
-				for(int i = 0; i < numsegments; i++) {
-					if (gch[i].IsAllocated) {
-						gch[i].Free ();
-					}
-				}
-			}
-			
-			errorCode = (SocketError)nativeError;
-			return(ret);
-		}
-
 		[MethodImplAttribute(MethodImplOptions.InternalCall)]
 		private extern static bool SendFile (IntPtr sock, string filename, byte [] pre_buffer, byte [] post_buffer, TransmitFileOptions flags);
 
@@ -2927,18 +2041,34 @@ namespace System.Net.Sockets
 			}
 		}
 
+#if !MOONLIGHT
 		public bool SendToAsync (SocketAsyncEventArgs e)
 		{
 			// NO check is made whether e != null in MS.NET (NRE is thrown in such case)
 			
 			if (disposed && closed)
 				throw new ObjectDisposedException (GetType ().ToString ());
+			if (e.BufferList != null)
+				throw new NotSupportedException ("Mono doesn't support using BufferList at this point.");
 			if (e.RemoteEndPoint == null)
 				throw new ArgumentNullException ("remoteEP", "Value cannot be null.");
-			
-			e.DoOperation (SocketAsyncOperation.SendTo, this);
 
-			// We always return true for now
+			e.curSocket = this;
+			e.Worker.Init (this, null, e.SendToCallback, SocketOperation.SendTo);
+			SocketAsyncResult res = e.Worker.result;
+			res.Buffer = e.Buffer;
+			res.Offset = e.Offset;
+			res.Size = e.Count;
+			res.SockFlags = e.SocketFlags;
+			res.EndPoint = e.RemoteEndPoint;
+			Worker worker = new Worker (e);
+			int count;
+			lock (writeQ) {
+				writeQ.Enqueue (worker);
+				count = writeQ.Count;
+			}
+			if (count == 1)
+				socket_pool_queue (e.Worker.SendTo, res);
 			return true;
 		}
 #endif
@@ -3036,11 +2166,7 @@ namespace System.Net.Sockets
 			}
 
 			connected = true;
-
-#if NET_2_0
 			isbound = true;
-#endif
-			
 			seed_endpoint = remote_end;
 			
 			return ret;
@@ -3082,36 +2208,20 @@ namespace System.Net.Sockets
 			if (optionLevel == SocketOptionLevel.Socket && optionName == SocketOptionName.Linger) {
 				LingerOption linger = optionValue as LingerOption;
 				if (linger == null)
-#if NET_2_0
 					throw new ArgumentException ("A 'LingerOption' value must be specified.", "optionValue");
-#else
-					throw new ArgumentException ("optionValue");
-#endif
 				SetSocketOption_internal (socket, optionLevel, optionName, linger, null, 0, out error);
 			} else if (optionLevel == SocketOptionLevel.IP && (optionName == SocketOptionName.AddMembership || optionName == SocketOptionName.DropMembership)) {
 				MulticastOption multicast = optionValue as MulticastOption;
 				if (multicast == null)
-#if NET_2_0
 					throw new ArgumentException ("A 'MulticastOption' value must be specified.", "optionValue");
-#else
-					throw new ArgumentException ("optionValue");
-#endif
 				SetSocketOption_internal (socket, optionLevel, optionName, multicast, null, 0, out error);
 			} else if (optionLevel == SocketOptionLevel.IPv6 && (optionName == SocketOptionName.AddMembership || optionName == SocketOptionName.DropMembership)) {
 				IPv6MulticastOption multicast = optionValue as IPv6MulticastOption;
 				if (multicast == null)
-#if NET_2_0
 					throw new ArgumentException ("A 'IPv6MulticastOption' value must be specified.", "optionValue");
-#else
-					throw new ArgumentException ("optionValue");
-#endif
 				SetSocketOption_internal (socket, optionLevel, optionName, multicast, null, 0, out error);
 			} else {
-#if NET_2_0
 				throw new ArgumentException ("Invalid value specified.", "optionValue");
-#else
-				throw new ArgumentException ("optionValue");
-#endif
 			}
 
 			if (error != 0) {
@@ -3121,7 +2231,6 @@ namespace System.Net.Sockets
 			}
 		}
 
-#if NET_2_0
 		public void SetSocketOption (SocketOptionLevel optionLevel, SocketOptionName optionName, bool optionValue)
 		{
 			if (disposed && closed)
@@ -3136,17 +2245,6 @@ namespace System.Net.Sockets
 				throw new SocketException (error);
 			}
 		}
-#endif
-
-#if ONLY_1_1
-		public override int GetHashCode ()
-		{
-			// LAMESPEC:
-			// The socket is not suitable to serve as a hash code,
-			// because it will change during its lifetime, but
-			// this is how MS.NET 1.1 implemented this method.
-			return (int) socket; 
-		}
-#endif
 	}
 }
+
diff --git a/mcs/class/System/System.Net.Sockets/SocketAsyncEventArgs.cs b/mcs/class/System/System.Net.Sockets/SocketAsyncEventArgs.cs
index 22d763d..34425b6 100644
--- a/mcs/class/System/System.Net.Sockets/SocketAsyncEventArgs.cs
+++ b/mcs/class/System/System.Net.Sockets/SocketAsyncEventArgs.cs
@@ -2,8 +2,9 @@
 //
 // Authors:
 //	Marek Habersack (mhabersack at novell.com)
+//	Gonzalo Paniagua Javier (gonzalo at novell.com)
 //
-// Copyright (c) 2008 Novell, Inc. (http://www.novell.com)
+// Copyright (c) 2008,2010 Novell, Inc. (http://www.novell.com)
 //
 
 //
@@ -26,7 +27,6 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-#if NET_2_0
 using System;
 using System.Collections.Generic;
 using System.Reflection;
@@ -40,6 +40,8 @@ namespace System.Net.Sockets
 {
 	public class SocketAsyncEventArgs : EventArgs, IDisposable
 	{
+		internal Socket.Worker Worker;
+		EndPoint remote_ep;
 #if MOONLIGHT || NET_4_0
 		public Exception ConnectByNameError { get; internal set; }
 #endif
@@ -51,7 +53,6 @@ namespace System.Net.Sockets
 		public Socket AcceptSocket { get; set; }
 		public byte[] Buffer { get; private set; }
 
-		[MonoTODO ("not supported in all cases")]
 		public IList<ArraySegment<byte>> BufferList {
 			get { return _bufferList; }
 			set {
@@ -66,7 +67,10 @@ namespace System.Net.Sockets
 		public bool DisconnectReuseSocket { get; set; }
 		public SocketAsyncOperation LastOperation { get; private set; }
 		public int Offset { get; private set; }
-		public EndPoint RemoteEndPoint { get; set; }
+		public EndPoint RemoteEndPoint {
+			get { return remote_ep; }
+			set { remote_ep = value; }
+		}
 #if !NET_2_1
 		public IPPacketInformation ReceiveMessageFromPacketInfo { get; private set; }
 		public SendPacketsElement[] SendPacketsElements { get; set; }
@@ -81,7 +85,6 @@ namespace System.Net.Sockets
 #if MOONLIGHT && !INSIDE_SYSTEM
 		private SocketClientAccessPolicyProtocol policy_protocol;
 
-		[MonoTODO ("Only TCP is currently supported by Moonlight")]
 		public SocketClientAccessPolicyProtocol SocketClientAccessPolicyProtocol {
 			get { return policy_protocol; }
 			set {
@@ -92,7 +95,7 @@ namespace System.Net.Sockets
 		}
 #endif
 
-		Socket curSocket;
+		internal Socket curSocket;
 #if NET_2_1
 		public Socket ConnectSocket {
 			get {
@@ -116,6 +119,7 @@ namespace System.Net.Sockets
 		
 		public SocketAsyncEventArgs ()
 		{
+			Worker = new Socket.Worker (this);
 			AcceptSocket = null;
 			Buffer = null;
 			BufferList = null;
@@ -146,19 +150,33 @@ namespace System.Net.Sockets
 
 		void Dispose (bool disposing)
 		{
-			Socket acceptSocket = AcceptSocket;
-			if (acceptSocket != null)
-				acceptSocket.Close ();
-
-			if (disposing)
-				GC.SuppressFinalize (this);
+			if (disposing) {
+				if (Worker != null) {
+					Worker.Dispose ();
+					Worker = null;
+				}
+			}
+			AcceptSocket = null;
+			Buffer = null;
+			BufferList = null;
+			RemoteEndPoint = null;
+			UserToken = null;
+#if !NET_2_1
+			SendPacketsElements = null;
+#endif
 		}		
 
 		public void Dispose ()
 		{
 			Dispose (true);
+			GC.SuppressFinalize (this);
 		}
-		
+
+		internal void SetLastOperation (SocketAsyncOperation op)
+		{
+			LastOperation = op;
+		}
+
 		protected virtual void OnCompleted (SocketAsyncEventArgs e)
 		{
 			if (e == null)
@@ -199,29 +217,21 @@ namespace System.Net.Sockets
 		}
 
 #region Internals
-		void ReceiveCallback ()
+		internal void ReceiveCallback (IAsyncResult ares)
 		{
-			SocketError = SocketError.Success;
-			LastOperation = SocketAsyncOperation.Receive;
-			SocketError error = SocketError.Success;
-
-			if (!curSocket.Connected) {
-				SocketError = SocketError.NotConnected;
-				return;
-			}
-			
 			try {
-				// FIXME: this does not support using BufferList
-				BytesTransferred = curSocket.Receive_nochecks (Buffer, Offset, Count, SocketFlags, out error);
+				BytesTransferred = curSocket.EndReceive (ares);
+			} catch (SocketException se){
+				SocketError = se.SocketErrorCode;
+			} catch (ObjectDisposedException) {
+				SocketError = SocketError.OperationAborted;
 			} finally {
-				SocketError = error;
 				OnCompleted (this);
 			}
 		}
 
 		void ConnectCallback ()
 		{
-			LastOperation = SocketAsyncOperation.Connect;
 			SocketError error = SocketError.AccessDenied;
 			try {
 #if MOONLIGHT || NET_4_0
@@ -231,24 +241,45 @@ namespace System.Net.Sockets
 				DnsEndPoint dep = (RemoteEndPoint as DnsEndPoint);
 				if (dep != null) {
 					IPAddress[] addresses = Dns.GetHostAddresses (dep.Host);
+					IPEndPoint endpoint;
+#if MOONLIGHT && !INSIDE_SYSTEM
+					if (!PolicyRestricted && !SecurityManager.HasElevatedPermissions) {
+						List<IPAddress> valid = new List<IPAddress> ();
+						foreach (IPAddress a in addresses) {
+							// if we're not downloading a socket policy then check the policy
+							// and if we're not running with elevated permissions (SL4 OoB option)
+							endpoint = new IPEndPoint (a, dep.Port);
+							if (!CrossDomainPolicyManager.CheckEndPoint (endpoint, policy_protocol))
+								continue;
+							valid.Add (a);
+						}
+						addresses = valid.ToArray ();
+					}
+#endif
 					foreach (IPAddress addr in addresses) {
 						try {
 							if (curSocket.AddressFamily == addr.AddressFamily) {
-								error = TryConnect (new IPEndPoint (addr, dep.Port));
+								endpoint = new IPEndPoint (addr, dep.Port);
+								error = TryConnect (endpoint);
 								if (error == SocketError.Success) {
 									ConnectByNameError = null;
 									break;
 								}
 							}
-						}
-						catch (SocketException se) {
+						} catch (SocketException se) {
 							ConnectByNameError = se;
 							error = SocketError.AccessDenied;
 						}
 					}
 				} else {
 					ConnectByNameError = null;
-					error = TryConnect (RemoteEndPoint);
+#if MOONLIGHT && !INSIDE_SYSTEM
+					if (!PolicyRestricted && !SecurityManager.HasElevatedPermissions) {
+						if (CrossDomainPolicyManager.CheckEndPoint (RemoteEndPoint, policy_protocol))
+							error = TryConnect (RemoteEndPoint);
+					} else
+#endif
+						error = TryConnect (RemoteEndPoint);
 				}
 #else
 				error = TryConnect (RemoteEndPoint);
@@ -261,175 +292,100 @@ namespace System.Net.Sockets
 
 		SocketError TryConnect (EndPoint endpoint)
 		{
-			curSocket.Connected = false;
-			SocketError error = SocketError.Success;
-#if MOONLIGHT && !INSIDE_SYSTEM
-			// if we're not downloading a socket policy then check the policy
-			// and if we're not running with elevated permissions (SL4 OoB option)
-			if (!PolicyRestricted && !SecurityManager.HasElevatedPermissions) {
-				error = SocketError.AccessDenied;
-				if (!CrossDomainPolicyManager.CheckEndPoint (endpoint, policy_protocol)) {
-					return error;
-				}
-				error = SocketError.Success;
-			}
-#endif
 			try {
-#if !NET_2_1
-				if (!curSocket.Blocking) {
-					int success;
-					curSocket.Poll (-1, SelectMode.SelectWrite, out success);
-					error = (SocketError)success;
-					if (success == 0)
-						curSocket.Connected = true;
-					else
-						return error;
-				} else
-#endif
-				{
-					curSocket.seed_endpoint = endpoint;
-					curSocket.Connect (endpoint);
-					curSocket.Connected = true;
-				}
+				curSocket.Connect (endpoint);
+				return (curSocket.Connected ? 0 : SocketError);
 			} catch (SocketException se){
-				error = se.SocketErrorCode;
+				return se.SocketErrorCode;
+			} catch (ObjectDisposedException) {
+				return SocketError.OperationAborted;
 			}
-			return error;
 		}
 
-		void SendCallback ()
+		internal void SendCallback (IAsyncResult ares)
 		{
-			SocketError = SocketError.Success;
-			LastOperation = SocketAsyncOperation.Send;
-			SocketError error = SocketError.Success;
-
-			if (!curSocket.Connected) {
-				SocketError = SocketError.NotConnected;
-				return;
-			}
-
 			try {
-				if (Buffer != null) {
-					BytesTransferred = curSocket.Send_nochecks (Buffer, Offset, Count, SocketFlags.None, out error);
-				} else if (BufferList != null) {
-					BytesTransferred = 0;
-					foreach (ArraySegment<byte> asb in BufferList) {
-						BytesTransferred += curSocket.Send_nochecks (asb.Array, asb.Offset, asb.Count, 
-							SocketFlags.None, out error);
-						if (error != SocketError.Success)
-							break;
-					}
-				}
+				BytesTransferred = curSocket.EndSend (ares);
+			} catch (SocketException se){
+				SocketError = se.SocketErrorCode;
+			} catch (ObjectDisposedException) {
+				SocketError = SocketError.OperationAborted;
 			} finally {
-				SocketError = error;
 				OnCompleted (this);
 			}
 		}
-#if !NET_2_1
-		void AcceptCallback ()
+
+#if !MOONLIGHT
+		internal void AcceptCallback (IAsyncResult ares)
 		{
-			SocketError = SocketError.Success;
-			LastOperation = SocketAsyncOperation.Accept;
 			try {
-				curSocket.Accept (AcceptSocket);
+				AcceptSocket = curSocket.EndAccept (ares);
 			} catch (SocketException ex) {
 				SocketError = ex.SocketErrorCode;
-				throw;
+			} catch (ObjectDisposedException) {
+				SocketError = SocketError.OperationAborted;
 			} finally {
+				if (AcceptSocket == null)
+					AcceptSocket = new Socket (curSocket.AddressFamily, curSocket.SocketType, curSocket.ProtocolType, (IntPtr)(-1));
 				OnCompleted (this);
 			}
 		}
 
-		void DisconnectCallback ()
+		internal void DisconnectCallback (IAsyncResult ares)
 		{
-			SocketError = SocketError.Success;
-			LastOperation = SocketAsyncOperation.Disconnect;
-
 			try {
-				curSocket.Disconnect (DisconnectReuseSocket);
+				curSocket.EndDisconnect (ares);
 			} catch (SocketException ex) {
 				SocketError = ex.SocketErrorCode;
-				throw;
+			} catch (ObjectDisposedException) {
+				SocketError = SocketError.OperationAborted;
 			} finally {
 				OnCompleted (this);
 			}
 		}
 
-		void ReceiveFromCallback ()
+		internal void ReceiveFromCallback (IAsyncResult ares)
 		{
-			SocketError = SocketError.Success;
-			LastOperation = SocketAsyncOperation.ReceiveFrom;
-
 			try {
-				EndPoint ep = RemoteEndPoint;
-				if (Buffer != null) {
-					BytesTransferred = curSocket.ReceiveFrom_nochecks (Buffer, Offset, Count, SocketFlags, ref ep);
-				} else if (BufferList != null) {
-					throw new NotImplementedException ();
-				}
+				BytesTransferred = curSocket.EndReceiveFrom (ares, ref remote_ep);
 			} catch (SocketException ex) {
 				SocketError = ex.SocketErrorCode;
-				throw;
+			} catch (ObjectDisposedException) {
+				SocketError = SocketError.OperationAborted;
 			} finally {
 				OnCompleted (this);
 			}
 		}
 
-		void SendToCallback ()
+		internal void SendToCallback (IAsyncResult ares)
 		{
-			SocketError = SocketError.Success;
-			LastOperation = SocketAsyncOperation.SendTo;
-			int total = 0;
-			
 			try {
-				int count = Count;
-
-				while (total < count)
-					total += curSocket.SendTo_nochecks (Buffer, Offset, count, SocketFlags, RemoteEndPoint);
-				BytesTransferred = total;
+				BytesTransferred = curSocket.EndSendTo (ares);
 			} catch (SocketException ex) {
 				SocketError = ex.SocketErrorCode;
-				throw;
+			} catch (ObjectDisposedException) {
+				SocketError = SocketError.OperationAborted;
 			} finally {
 				OnCompleted (this);
 			}
 		}
+
 #endif
 		internal void DoOperation (SocketAsyncOperation operation, Socket socket)
 		{
-			ThreadStart callback;
+			ThreadStart callback = null;
 			curSocket = socket;
 			
 			switch (operation) {
-#if !NET_2_1
-				case SocketAsyncOperation.Accept:
-					callback = new ThreadStart (AcceptCallback);
-					break;
-
-				case SocketAsyncOperation.Disconnect:
-					callback = new ThreadStart (DisconnectCallback);
-					break;
-
-				case SocketAsyncOperation.ReceiveFrom:
-					callback = new ThreadStart (ReceiveFromCallback);
-					break;
-
-				case SocketAsyncOperation.SendTo:
-					callback = new ThreadStart (SendToCallback);
-					break;
-#endif
-				case SocketAsyncOperation.Receive:
-					callback = new ThreadStart (ReceiveCallback);
-					break;
-
 				case SocketAsyncOperation.Connect:
+#if MOONLIGHT
+					socket.seed_endpoint = RemoteEndPoint;
+#endif
 					callback = new ThreadStart (ConnectCallback);
+					SocketError = SocketError.Success;
+					LastOperation = operation;
 					break;
 
-				case SocketAsyncOperation.Send:
-					callback = new ThreadStart (SendCallback);
-					break;
-				
 				default:
 					throw new NotSupportedException ();
 			}
@@ -441,4 +397,3 @@ namespace System.Net.Sockets
 #endregion
 	}
 }
-#endif
diff --git a/mcs/class/System/System.Net.Sockets/SocketAsyncOperation.cs b/mcs/class/System/System.Net.Sockets/SocketAsyncOperation.cs
index 2d7e987..87d6de5 100644
--- a/mcs/class/System/System.Net.Sockets/SocketAsyncOperation.cs
+++ b/mcs/class/System/System.Net.Sockets/SocketAsyncOperation.cs
@@ -26,7 +26,6 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-#if NET_2_0
 namespace System.Net.Sockets
 {
 	public enum SocketAsyncOperation
@@ -43,4 +42,3 @@ namespace System.Net.Sockets
 		SendTo
 	}
 }
-#endif
diff --git a/mcs/class/System/System.Net.Sockets/Socket_2_1.cs b/mcs/class/System/System.Net.Sockets/Socket_2_1.cs
index 2f27e2e..157e668 100644
--- a/mcs/class/System/System.Net.Sockets/Socket_2_1.cs
+++ b/mcs/class/System/System.Net.Sockets/Socket_2_1.cs
@@ -36,6 +36,7 @@
 using System;
 using System.Net;
 using System.Collections;
+using System.Collections.Generic;
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
 using System.Threading;
@@ -45,18 +46,679 @@ using System.Text;
 
 #if !NET_2_1
 using System.Net.Configuration;
-#endif
-
-#if NET_2_0
-using System.Collections.Generic;
-#if !NET_2_1
 using System.Net.NetworkInformation;
 #endif
-#endif
 
 namespace System.Net.Sockets {
 
 	public partial class Socket : IDisposable {
+		[StructLayout (LayoutKind.Sequential)]
+		struct WSABUF {
+			public int len;
+			public IntPtr buf;
+		}
+
+		// Used by the runtime
+		internal enum SocketOperation {
+			Accept,
+			Connect,
+			Receive,
+			ReceiveFrom,
+			Send,
+			SendTo,
+			UsedInManaged1,
+			UsedInManaged2,
+			UsedInProcess,
+			UsedInConsole2,
+			Disconnect,
+			AcceptReceive,
+			ReceiveGeneric,
+			SendGeneric
+		}
+
+		[StructLayout (LayoutKind.Sequential)]
+		internal sealed class SocketAsyncResult: IAsyncResult
+		{
+			/* Same structure in the runtime */
+			/*
+			  Keep this in sync with MonoSocketAsyncResult in
+			  metadata/socket-io.h and ProcessAsyncReader
+			  in System.Diagnostics/Process.cs.
+			*/
+
+			public Socket Sock;
+			public IntPtr handle;
+			object state;
+			AsyncCallback callback;
+			WaitHandle waithandle;
+
+			Exception delayedException;
+
+			public EndPoint EndPoint;	// Connect,ReceiveFrom,SendTo
+			public byte [] Buffer;		// Receive,ReceiveFrom,Send,SendTo
+			public int Offset;		// Receive,ReceiveFrom,Send,SendTo
+			public int Size;		// Receive,ReceiveFrom,Send,SendTo
+			public SocketFlags SockFlags;	// Receive,ReceiveFrom,Send,SendTo
+			public Socket AcceptSocket;	// AcceptReceive
+			public IPAddress[] Addresses;	// Connect
+			public int Port;		// Connect
+			public IList<ArraySegment<byte>> Buffers;	// Receive, Send
+			public bool ReuseSocket;	// Disconnect
+
+			// Return values
+			Socket acc_socket;
+			int total;
+
+			bool completed_sync;
+			bool completed;
+			public bool blocking;
+			internal int error;
+			public SocketOperation operation;
+			public object ares;
+			public int EndCalled;
+
+			public SocketAsyncResult ()
+			{
+			}
+
+			public void Init (Socket sock, object state, AsyncCallback callback, SocketOperation operation)
+			{
+				this.Sock = sock;
+				if (sock != null) {
+					this.blocking = sock.blocking;
+					this.handle = sock.socket;
+				} else {
+					this.blocking = true;
+					this.handle = IntPtr.Zero;
+				}
+				this.state = state;
+				this.callback = callback;
+				this.operation = operation;
+				SockFlags = SocketFlags.None;
+				if (waithandle != null)
+					((ManualResetEvent) waithandle).Reset ();
+
+				delayedException = null;
+
+				EndPoint = null;
+				Buffer = null;
+				Offset = 0;
+				Size = 0;
+				SockFlags = 0;
+				AcceptSocket = null;
+				Addresses = null;
+				Port = 0;
+				Buffers = null;
+				ReuseSocket = false;
+				acc_socket = null;
+				total = 0;
+
+				completed_sync = false;
+				completed = false;
+				blocking = false;
+				error = 0;
+				ares = null;
+				EndCalled = 0;
+			}
+
+			public void Dispose ()
+			{
+				Init (null, null, null, 0);
+				if (waithandle != null) {
+					waithandle.Close ();
+					waithandle = null;
+				}
+			}
+
+			public SocketAsyncResult (Socket sock, object state, AsyncCallback callback, SocketOperation operation)
+			{
+				this.Sock = sock;
+				this.blocking = sock.blocking;
+				this.handle = sock.socket;
+				this.state = state;
+				this.callback = callback;
+				this.operation = operation;
+				SockFlags = SocketFlags.None;
+			}
+
+			public void CheckIfThrowDelayedException ()
+			{
+				if (delayedException != null) {
+					Sock.connected = false;
+					throw delayedException;
+				}
+
+				if (error != 0) {
+					Sock.connected = false;
+					throw new SocketException (error);
+				}
+			}
+
+			void CompleteAllOnDispose (Queue queue)
+			{
+				object [] pending = queue.ToArray ();
+				queue.Clear ();
+
+				WaitCallback cb;
+				for (int i = 0; i < pending.Length; i++) {
+					SocketAsyncResult ares = (SocketAsyncResult) pending [i];
+					cb = new WaitCallback (ares.CompleteDisposed);
+					ThreadPool.QueueUserWorkItem (cb, null);
+				}
+			}
+
+			void CompleteDisposed (object unused)
+			{
+				Complete ();
+			}
+
+			public void Complete ()
+			{
+				if (operation != SocketOperation.Receive && Sock.disposed)
+					delayedException = new ObjectDisposedException (Sock.GetType ().ToString ());
+
+				IsCompleted = true;
+
+				Queue queue = null;
+				if (operation == SocketOperation.Receive ||
+				    operation == SocketOperation.ReceiveFrom ||
+				    operation == SocketOperation.ReceiveGeneric) {
+					queue = Sock.readQ;
+				} else if (operation == SocketOperation.Send ||
+					   operation == SocketOperation.SendTo ||
+					   operation == SocketOperation.SendGeneric) {
+
+					queue = Sock.writeQ;
+				}
+
+				if (queue != null) {
+					Worker worker = null;
+					SocketAsyncCall sac = null;
+					lock (queue) {
+						// queue.Count will only be 0 if the socket is closed while receive/send
+						// operation(s) are pending and at least one call to this method is
+						// waiting on the lock while another one calls CompleteAllOnDispose()
+						if (queue.Count > 0)
+							queue.Dequeue (); // remove ourselves
+						if (queue.Count > 0) {
+							worker = (Worker) queue.Peek ();
+							if (!Sock.disposed) {
+								sac = GetDelegate (worker, worker.result.operation);
+							} else {
+								CompleteAllOnDispose (queue);
+							}
+						}
+					}
+
+					if (sac != null)
+						Socket.socket_pool_queue (sac, worker.result);
+				}
+				// IMPORTANT: 'callback', if any is scheduled from unmanaged code
+			}
+
+			SocketAsyncCall GetDelegate (Worker worker, SocketOperation op)
+			{
+				switch (op) {
+				case SocketOperation.ReceiveGeneric:
+					goto case SocketOperation.Receive;
+				case SocketOperation.Receive:
+					return new SocketAsyncCall (worker.Receive);
+				case SocketOperation.ReceiveFrom:
+					return new SocketAsyncCall (worker.ReceiveFrom);
+				case SocketOperation.SendGeneric:
+					goto case SocketOperation.Send;
+				case SocketOperation.Send:
+					return new SocketAsyncCall (worker.Send);
+				case SocketOperation.SendTo:
+					return new SocketAsyncCall (worker.SendTo);
+				default:
+					return null; // never happens
+				}
+			}
+
+			public void Complete (bool synch)
+			{
+				completed_sync = synch;
+				Complete ();
+			}
+
+			public void Complete (int total)
+			{
+				this.total = total;
+				Complete ();
+			}
+
+			public void Complete (Exception e, bool synch)
+			{
+				completed_sync = synch;
+				delayedException = e;
+				Complete ();
+			}
+
+			public void Complete (Exception e)
+			{
+				delayedException = e;
+				Complete ();
+			}
+
+			public void Complete (Socket s)
+			{
+				acc_socket = s;
+				Complete ();
+			}
+
+			public void Complete (Socket s, int total)
+			{
+				acc_socket = s;
+				this.total = total;
+				Complete ();
+			}
+
+			public object AsyncState {
+				get {
+					return state;
+				}
+			}
+
+			public WaitHandle AsyncWaitHandle {
+				get {
+					lock (this) {
+						if (waithandle == null)
+							waithandle = new ManualResetEvent (completed);
+					}
+
+					return waithandle;
+				}
+				set {
+					waithandle=value;
+				}
+			}
+
+			public bool CompletedSynchronously {
+				get {
+					return(completed_sync);
+				}
+			}
+
+			public bool IsCompleted {
+				get {
+					return(completed);
+				}
+				set {
+					completed=value;
+					lock (this) {
+						if (waithandle != null && value) {
+							((ManualResetEvent) waithandle).Set ();
+						}
+					}
+				}
+			}
+
+			public Socket Socket {
+				get {
+					return acc_socket;
+				}
+			}
+
+			public int Total {
+				get { return total; }
+				set { total = value; }
+			}
+
+			public SocketError ErrorCode
+			{
+				get {
+					SocketException ex = delayedException as SocketException;
+					if (ex != null)
+						return(ex.SocketErrorCode);
+
+					if (error != 0)
+						return((SocketError)error);
+
+					return(SocketError.Success);
+				}
+			}
+		}
+
+		internal sealed class Worker
+		{
+			public SocketAsyncResult result;
+			SocketAsyncEventArgs args;
+
+			public Worker (SocketAsyncEventArgs args)
+			{
+				this.args = args;
+				result = new SocketAsyncResult ();
+			}
+
+			public Worker (SocketAsyncResult ares)
+			{
+				this.result = ares;
+			}
+
+			public void Dispose ()
+			{
+				if (result != null) {
+					result.Dispose ();
+					result = null;
+					args = null;
+				}
+			}
+
+			/* This is called when reusing a SocketAsyncEventArgs */
+			public void Init (Socket sock, object state, AsyncCallback callback, SocketOperation op)
+			{
+				result.Init (sock, state, callback, op);
+				SocketAsyncOperation async_op;
+
+				// Notes;
+				// 	-SocketOperation.AcceptReceive not used in SocketAsyncEventArgs
+				//	-SendPackets and ReceiveMessageFrom are not implemented yet
+				if (op == Socket.SocketOperation.Connect)
+					async_op = SocketAsyncOperation.Connect;
+#if !MOONLIGHT
+				else if (op == Socket.SocketOperation.Accept)
+					async_op = SocketAsyncOperation.Accept;
+				else if (op == Socket.SocketOperation.Disconnect)
+					async_op = SocketAsyncOperation.Disconnect;
+#endif
+				else if (op == Socket.SocketOperation.Receive || op == Socket.SocketOperation.ReceiveGeneric)
+					async_op = SocketAsyncOperation.Receive;
+#if !MOONLIGHT
+				else if (op == Socket.SocketOperation.ReceiveFrom)
+					async_op = SocketAsyncOperation.ReceiveFrom;
+#endif
+				/*
+				else if (op == Socket.SocketOperation.ReceiveMessageFrom)
+					async_op = SocketAsyncOperation.ReceiveMessageFrom;
+				*/
+				else if (op == Socket.SocketOperation.Send || op == Socket.SocketOperation.SendGeneric)
+					async_op = SocketAsyncOperation.Send;
+#if !MOONLIGHT
+				/*
+				else if (op == Socket.SocketOperation.SendPackets)
+					async_op = SocketAsyncOperation.SendPackets;
+				*/
+				else if (op == Socket.SocketOperation.SendTo)
+					async_op = SocketAsyncOperation.SendTo;
+#endif
+				else
+					throw new NotImplementedException (String.Format ("Operation {0} is not implemented", op));
+
+				args.SetLastOperation (async_op);
+				args.SocketError = SocketError.Success;
+			}
+
+			public void Accept ()
+			{
+#if !MOONLIGHT
+				Socket acc_socket = null;
+				try {
+					if (args != null && args.AcceptSocket != null) {
+						result.Sock.Accept (args.AcceptSocket);
+						acc_socket = args.AcceptSocket;
+					} else {
+						acc_socket = result.Sock.Accept ();
+						if (args != null)
+							args.AcceptSocket = acc_socket;
+					}
+				} catch (Exception e) {
+					result.Complete (e);
+					return;
+				}
+
+				result.Complete (acc_socket);
+#endif
+			}
+
+			/* only used in 2.0 profile and newer, but
+			 * leave in older profiles to keep interface
+			 * to runtime consistent
+			 */
+			public void AcceptReceive ()
+			{
+#if !MOONLIGHT
+				Socket acc_socket = null;
+				try {
+					if (result.AcceptSocket == null) {
+						acc_socket = result.Sock.Accept ();
+					} else {
+						acc_socket = result.AcceptSocket;
+						result.Sock.Accept (acc_socket);
+					}
+				} catch (Exception e) {
+					result.Complete (e);
+					return;
+				}
+
+				/* It seems the MS runtime
+				 * special-cases 0-length requested
+				 * receive data.  See bug 464201.
+				 */
+				int total = 0;
+				if (result.Size > 0) {
+					try {
+						SocketError error;
+						total = acc_socket.Receive_nochecks (result.Buffer,
+										     result.Offset,
+										     result.Size,
+										     result.SockFlags,
+										     out error);
+						if (error != 0) {
+							result.Complete (new SocketException ((int) error));
+							return;
+						}
+					} catch (Exception e) {
+						result.Complete (e);
+						return;
+					}
+				}
+
+				result.Complete (acc_socket, total);
+#endif
+			}
+
+			public void Connect ()
+			{
+				/* If result.EndPoint is non-null,
+				 * this is the standard one-address
+				 * connect attempt.  Otherwise
+				 * Addresses must be non-null and
+				 * contain a list of addresses to try
+				 * to connect to; the first one to
+				 * succeed causes the rest of the list
+				 * to be ignored.
+				 */
+				if (result.EndPoint != null) {
+					try {
+						if (!result.Sock.Blocking) {
+							int success;
+							result.Sock.Poll (-1, SelectMode.SelectWrite, out success);
+							if (success == 0) {
+								result.Sock.seed_endpoint = result.EndPoint;
+								result.Sock.connected = true;
+							} else {
+								result.Complete (new SocketException (success));
+								return;
+							}
+						} else {
+							result.Sock.seed_endpoint = result.EndPoint;
+							result.Sock.Connect (result.EndPoint);
+							result.Sock.connected = true;
+						}
+					} catch (Exception e) {
+						result.Complete (e);
+						return;
+					}
+
+					result.Complete ();
+				} else if (result.Addresses != null) {
+					int error = (int) SocketError.InProgress; // why?
+					foreach(IPAddress address in result.Addresses) {
+						IPEndPoint iep = new IPEndPoint (address, result.Port);
+						SocketAddress serial = iep.Serialize ();
+						Socket.Connect_internal (result.Sock.socket, serial, out error);
+						if (error == 0) {
+							result.Sock.connected = true;
+							result.Sock.seed_endpoint = iep;
+							result.Complete ();
+							return;
+						} else if (error != (int)SocketError.InProgress &&
+							   error != (int)SocketError.WouldBlock) {
+							continue;
+						}
+
+						if (!result.Sock.Blocking) {
+							int success;
+							result.Sock.Poll (-1, SelectMode.SelectWrite, out success);
+							if (success == 0) {
+								result.Sock.connected = true;
+								result.Sock.seed_endpoint = iep;
+								result.Complete ();
+								return;
+							}
+						}
+					}
+					result.Complete (new SocketException (error));
+				} else {
+					result.Complete (new SocketException ((int)SocketError.AddressNotAvailable));
+				}
+			}
+
+			/* Also only used in 2.0 profile and newer */
+			public void Disconnect ()
+			{
+#if !MOONLIGHT
+				try {
+					if (args != null)
+						result.ReuseSocket = args.DisconnectReuseSocket;
+					result.Sock.Disconnect (result.ReuseSocket);
+				} catch (Exception e) {
+					result.Complete (e);
+					return;
+				}
+				result.Complete ();
+#endif
+			}
+
+			public void Receive ()
+			{
+				if (result.operation == SocketOperation.ReceiveGeneric) {
+					ReceiveGeneric ();
+					return;
+				}
+				// Actual recv() done in the runtime
+				result.Complete ();
+			}
+
+			public void ReceiveFrom ()
+			{
+#if !MOONLIGHT
+				int total = 0;
+				try {
+					total = result.Sock.ReceiveFrom_nochecks (result.Buffer,
+									 result.Offset,
+									 result.Size,
+									 result.SockFlags,
+									 ref result.EndPoint);
+				} catch (Exception e) {
+					result.Complete (e);
+					return;
+				}
+
+				result.Complete (total);
+#endif
+			}
+
+			public void ReceiveGeneric ()
+			{
+				int total = 0;
+				try {
+					total = result.Sock.Receive (result.Buffers, result.SockFlags);
+				} catch (Exception e) {
+					result.Complete (e);
+					return;
+				}
+				result.Complete (total);
+			}
+
+			int send_so_far;
+
+			void UpdateSendValues (int last_sent)
+			{
+				if (result.error == 0) {
+					send_so_far += last_sent;
+					result.Offset += last_sent;
+					result.Size -= last_sent;
+				}
+			}
+
+			public void Send ()
+			{
+				if (result.operation == SocketOperation.SendGeneric) {
+					SendGeneric ();
+					return;
+				}
+				// Actual send() done in the runtime
+				if (result.error == 0) {
+					UpdateSendValues (result.Total);
+					if (result.Sock.disposed) {
+						result.Complete ();
+						return;
+					}
+
+					if (result.Size > 0) {
+						Socket.socket_pool_queue (this.Send, result);
+						return; // Have to finish writing everything. See bug #74475.
+					}
+					result.Total = send_so_far;
+				}
+				result.Complete ();
+			}
+
+			public void SendTo ()
+			{
+#if !MOONLIGHT
+				int total = 0;
+				try {
+					total = result.Sock.SendTo_nochecks (result.Buffer,
+								    result.Offset,
+								    result.Size,
+								    result.SockFlags,
+								    result.EndPoint);
+
+					UpdateSendValues (total);
+					if (result.Size > 0) {
+						Socket.socket_pool_queue (this.SendTo, result);
+						return; // Have to finish writing everything. See bug #74475.
+					}
+					result.Total = send_so_far;
+				} catch (Exception e) {
+					result.Complete (e);
+					return;
+				}
+
+				result.Complete ();
+#endif
+			}
+
+			public void SendGeneric ()
+			{
+				int total = 0;
+				try {
+					total = result.Sock.Send (result.Buffers, result.SockFlags);
+				} catch (Exception e) {
+					result.Complete (e);
+					return;
+				}
+				result.Complete (total);
+			}
+		}
+
+		private Queue readQ = new Queue (2);
+		private Queue writeQ = new Queue (2);
+
+		delegate void SocketAsyncCall ();
 
 		/*
 		 *	These two fields are looked up by name by the runtime, don't change
@@ -86,7 +748,7 @@ namespace System.Net.Sockets {
 
 			if (ipv6Supported == -1) {
 #if !NET_2_1
-#if NET_2_0 && CONFIGURATION_DEP
+#if CONFIGURATION_DEP
 				SettingsSection config;
 				config = (SettingsSection) System.Configuration.ConfigurationManager.GetSection ("system.net/settings");
 				if (config != null)
@@ -117,9 +779,7 @@ namespace System.Net.Sockets {
 			}
 		}
 
-#if NET_2_0
 		[ObsoleteAttribute ("Use OSSupportsIPv6 instead")]
-#endif
 		public static bool SupportsIPv6 {
 			get {
 				CheckProtocolSupport();
@@ -141,7 +801,7 @@ namespace System.Net.Sockets {
 				return ipv6Supported == 1;
 			}
 		}
-#elif NET_2_0
+#else
 		public static bool OSSupportsIPv6 {
 			get {
 				NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces ();
@@ -162,9 +822,7 @@ namespace System.Net.Sockets {
 		private ProtocolType protocol_type;
 		internal bool blocking=true;
 		Thread blocking_thread;
-#if NET_2_0
 		private bool isbound;
-#endif
 		/* When true, the socket was connected at the time of
 		 * the last IO operation
 		 */
@@ -194,8 +852,32 @@ namespace System.Net.Sockets {
 		public Socket(AddressFamily family, SocketType type, ProtocolType proto)
 		{
 #if NET_2_1
-			if (family == AddressFamily.Unspecified)
+			switch (family) {
+			case AddressFamily.InterNetwork:	// ok
+			case AddressFamily.InterNetworkV6:	// ok
+			case AddressFamily.Unknown:		// SocketException will be thrown later (with right error #)
+				break;
+			// case AddressFamily.Unspecified:
+			default:
 				throw new ArgumentException ("family");
+			}
+
+			switch (type) {
+			case SocketType.Stream:			// ok
+			case SocketType.Unknown:		// SocketException will be thrown later (with right error #)
+				break;
+			default:
+				throw new ArgumentException ("type");
+			}
+
+			switch (proto) {
+			case ProtocolType.Tcp:			// ok
+			case ProtocolType.Unspecified:		// ok
+			case ProtocolType.Unknown:		// SocketException will be thrown later (with right error #)
+				break;
+			default:
+				throw new ArgumentException ("proto");
+			}
 #endif
 			address_family=family;
 			socket_type=type;
@@ -255,7 +937,7 @@ namespace System.Net.Sockets {
 		public ProtocolType ProtocolType {
 			get { return protocol_type; }
 		}
-#if NET_2_0
+
 		public bool NoDelay {
 			get {
 				if (disposed && closed)
@@ -342,6 +1024,9 @@ namespace System.Net.Sockets {
 				if (disposed && closed) {
 					throw new ObjectDisposedException (GetType ().ToString ());
 				}
+				if (value < 0) {
+					throw new ArgumentOutOfRangeException ("value", "The value specified for a set operation is less than zero");
+				}
 				
 				if (address_family == AddressFamily.InterNetwork) {
 					SetSocketOption (SocketOptionLevel.IP, SocketOptionName.IpTimeToLive, value);
@@ -352,28 +1037,32 @@ namespace System.Net.Sockets {
 				}
 			}
 		}
-#endif
+
 		// Returns the remote endpoint details in addr and port
 		[MethodImplAttribute(MethodImplOptions.InternalCall)]
-		private extern static SocketAddress RemoteEndPoint_internal(IntPtr socket, out int error);
+		private extern static SocketAddress RemoteEndPoint_internal(IntPtr socket, int family, out int error);
 
 		public EndPoint RemoteEndPoint {
 			get {
 				if (disposed && closed)
 					throw new ObjectDisposedException (GetType ().ToString ());
 				
+#if MOONLIGHT
+				if (!connected)
+					return seed_endpoint;
+#else
 				/*
 				 * If the seed EndPoint is null, Connect, Bind,
 				 * etc has not yet been called. MS returns null
 				 * in this case.
 				 */
-				if (seed_endpoint == null)
+				if (!connected || seed_endpoint == null)
 					return null;
-				
+#endif			
 				SocketAddress sa;
 				int error;
 				
-				sa=RemoteEndPoint_internal(socket, out error);
+				sa=RemoteEndPoint_internal(socket, (int) address_family, out error);
 
 				if (error != 0)
 					throw new SocketException (error);
@@ -440,7 +1129,7 @@ namespace System.Net.Sockets {
 			}
 		}
 
-#if NET_2_1
+#if NET_2_1 || NET_4_0
 		public void Dispose ()
 #else
 		void IDisposable.Dispose ()
@@ -460,13 +1149,11 @@ namespace System.Net.Sockets {
 			((IDisposable) this).Dispose ();
 		}
 
-#if NET_2_0
 		public void Close (int timeout) 
 		{
 			linger_timeout = timeout;
 			((IDisposable) this).Dispose ();
 		}
-#endif
 
 		// Connects to the remote address
 		[MethodImplAttribute(MethodImplOptions.InternalCall)]
@@ -485,15 +1172,18 @@ namespace System.Net.Sockets {
 				throw new ArgumentNullException ("remoteEP");
 
 			IPEndPoint ep = remoteEP as IPEndPoint;
+#if !MOONLIGHT
 			if (ep != null && socket_type != SocketType.Dgram) /* Dgram uses Any to 'disconnect' */
+#else
+			if (ep != null)
+#endif
 				if (ep.Address.Equals (IPAddress.Any) || ep.Address.Equals (IPAddress.IPv6Any))
 					throw new SocketException ((int) SocketError.AddressNotAvailable);
 
 #if MOONLIGHT
 			if (protocol_type != ProtocolType.Tcp)
 				throw new SocketException ((int) SocketError.AccessDenied);
-#elif NET_2_0
-			/* TODO: check this for the 1.1 profile too */
+#else
 			if (islistening)
 				throw new InvalidOperationException ();
 #endif
@@ -513,55 +1203,93 @@ namespace System.Net.Sockets {
 				blocking_thread = null;
 			}
 
+			if (error == 0 || error == 10035)
+				seed_endpoint = remoteEP; // Keep the ep around for non-blocking sockets
+
 			if (error != 0)
 				throw new SocketException (error);
 
-			if (socket_type != SocketType.Dgram)
-				connected=true;
-
-#if NET_2_0
-			isbound = true;
+#if !MOONLIGHT
+			if (socket_type == SocketType.Dgram && (ep.Address.Equals (IPAddress.Any) || ep.Address.Equals (IPAddress.IPv6Any)))
+				connected = false;
+			else
+				connected = true;
+#else
+			connected = true;
 #endif
-
-			seed_endpoint = remoteEP;
+			isbound = true;
 		}
 
-#if NET_2_0
 		public bool ReceiveAsync (SocketAsyncEventArgs e)
 		{
 			// NO check is made whether e != null in MS.NET (NRE is thrown in such case)
-			//
-			// LAME SPEC: the ArgumentException is never thrown, instead an NRE is
-			// thrown when e.Buffer and e.BufferList are null (works fine when one is
-			// set to a valid object)
 			if (disposed && closed)
 				throw new ObjectDisposedException (GetType ().ToString ());
 
-			// We do not support recv into multiple buffers yet
-			if (e.BufferList != null)
-				throw new NotSupportedException ("Mono doesn't support using BufferList at this point.");
-			
-			e.DoOperation (SocketAsyncOperation.Receive, this);
+			// LAME SPEC: the ArgumentException is never thrown, instead an NRE is
+			// thrown when e.Buffer and e.BufferList are null (works fine when one is
+			// set to a valid object)
+			if (e.Buffer == null && e.BufferList == null)
+				throw new NullReferenceException ("Either e.Buffer or e.BufferList must be valid buffers.");
+
+			e.curSocket = this;
+			SocketOperation op = (e.Buffer != null) ? SocketOperation.Receive : SocketOperation.ReceiveGeneric;
+			e.Worker.Init (this, null, e.ReceiveCallback, op);
+			SocketAsyncResult res = e.Worker.result;
+			if (e.Buffer != null) {
+				res.Buffer = e.Buffer;
+				res.Offset = e.Offset;
+				res.Size = e.Count;
+			} else {
+				res.Buffers = e.BufferList;
+			}
+			res.SockFlags = e.SocketFlags;
+			Worker worker = new Worker (e);
+			int count;
+			lock (readQ) {
+				readQ.Enqueue (worker);
+				count = readQ.Count;
+			}
+			if (count == 1) {
+				// Receive takes care of ReceiveGeneric
+				socket_pool_queue (e.Worker.Receive, res);
+			}
 
-			// We always return true for now
 			return true;
 		}
 
 		public bool SendAsync (SocketAsyncEventArgs e)
 		{
 			// NO check is made whether e != null in MS.NET (NRE is thrown in such case)
-			
 			if (disposed && closed)
 				throw new ObjectDisposedException (GetType ().ToString ());
 			if (e.Buffer == null && e.BufferList == null)
-				throw new ArgumentException ("Either e.Buffer or e.BufferList must be valid buffers.");
-
-			e.DoOperation (SocketAsyncOperation.Send, this);
-
-			// We always return true for now
+				throw new NullReferenceException ("Either e.Buffer or e.BufferList must be valid buffers.");
+
+			e.curSocket = this;
+			SocketOperation op = (e.Buffer != null) ? SocketOperation.Send : SocketOperation.SendGeneric;
+			e.Worker.Init (this, null, e.SendCallback, op);
+			SocketAsyncResult res = e.Worker.result;
+			if (e.Buffer != null) {
+				res.Buffer = e.Buffer;
+				res.Offset = e.Offset;
+				res.Size = e.Count;
+			} else {
+				res.Buffers = e.BufferList;
+			}
+			res.SockFlags = e.SocketFlags;
+			Worker worker = new Worker (e);
+			int count;
+			lock (writeQ) {
+				writeQ.Enqueue (worker);
+				count = writeQ.Count;
+			}
+			if (count == 1) {
+				// Send takes care of SendGeneric
+				socket_pool_queue (e.Worker.Send, res);
+			}
 			return true;
 		}
-#endif
 
 		[MethodImplAttribute(MethodImplOptions.InternalCall)]
 		extern static bool Poll_internal (IntPtr socket, SelectMode mode, int timeout, out int error);
@@ -595,6 +1323,7 @@ namespace System.Net.Sockets {
 				 */
 				if (socket_error == 0) {
 					connected = true;
+					isbound = true;
 				}
 			}
 			
@@ -614,10 +1343,12 @@ namespace System.Net.Sockets {
 			int nativeError;
 			int ret = Receive_internal (socket, buf, offset, size, flags, out nativeError);
 			error = (SocketError) nativeError;
-			if (error != SocketError.Success && error != SocketError.WouldBlock && error != SocketError.InProgress)
+			if (error != SocketError.Success && error != SocketError.WouldBlock && error != SocketError.InProgress) {
 				connected = false;
-			else
+				isbound = false;
+			} else {
 				connected = true;
+			}
 			
 			return ret;
 		}
@@ -647,10 +1378,12 @@ namespace System.Net.Sockets {
 
 			error = (SocketError)nativeError;
 
-			if (error != SocketError.Success && error != SocketError.WouldBlock && error != SocketError.InProgress)
+			if (error != SocketError.Success && error != SocketError.WouldBlock && error != SocketError.InProgress) {
 				connected = false;
-			else
+				isbound = false;
+			} else {
 				connected = true;
+			}
 
 			return ret;
 		}
@@ -743,6 +1476,10 @@ namespace System.Net.Sockets {
 				throw new ObjectDisposedException (GetType ().ToString ());
 
 			CheckConnect (e);
+			// if an address family is specified then they must match
+			AddressFamily raf = e.RemoteEndPoint.AddressFamily;
+			if ((raf != AddressFamily.Unspecified) && (raf != AddressFamily))
+				throw new NotSupportedException ("AddressFamily mismatch between socket and endpoint");
 
 			e.DoOperation (SocketAsyncOperation.Connect, this);
 
@@ -755,7 +1492,11 @@ namespace System.Net.Sockets {
 			// exception ordering requires to check before creating the socket (good thing resource wise too)
 			CheckConnect (e);
 
-			Socket s = new Socket (AddressFamily.InterNetwork, socketType, protocolType);
+			// create socket based on the endpoint address family (if specified), otherwise default fo IPv4
+			AddressFamily raf = e.RemoteEndPoint.AddressFamily;
+			if (raf == AddressFamily.Unspecified)
+				raf = AddressFamily.InterNetwork;
+			Socket s = new Socket (raf, socketType, protocolType);
 			e.DoOperation (SocketAsyncOperation.Connect, s);
 
 			// We always return true for now
@@ -772,6 +1513,300 @@ namespace System.Net.Sockets {
 				s.blocking_thread.Abort ();
 		}
 #endif
+		[MethodImplAttribute (MethodImplOptions.InternalCall)]
+		private extern static int Receive_internal (IntPtr sock, WSABUF[] bufarray, SocketFlags flags, out int error);
+#if !MOONLIGHT
+		public
+#else
+		internal
+#endif
+		int Receive (IList<ArraySegment<byte>> buffers)
+		{
+			int ret;
+			SocketError error;
+			ret = Receive (buffers, SocketFlags.None, out error);
+			if (error != SocketError.Success) {
+				throw new SocketException ((int)error);
+			}
+			return(ret);
+		}
+
+		[CLSCompliant (false)]
+#if !MOONLIGHT
+		public
+#else
+		internal
+#endif
+		int Receive (IList<ArraySegment<byte>> buffers, SocketFlags socketFlags)
+		{
+			int ret;
+			SocketError error;
+			ret = Receive (buffers, socketFlags, out error);
+			if (error != SocketError.Success) {
+				throw new SocketException ((int)error);
+			}
+			return(ret);
+		}
+
+		[CLSCompliant (false)]
+#if !MOONLIGHT
+		public
+#else
+		internal
+#endif
+		int Receive (IList<ArraySegment<byte>> buffers, SocketFlags socketFlags, out SocketError errorCode)
+		{
+			if (disposed && closed)
+				throw new ObjectDisposedException (GetType ().ToString ());
+
+			if (buffers == null ||
+			    buffers.Count == 0) {
+				throw new ArgumentNullException ("buffers");
+			}
+
+			int numsegments = buffers.Count;
+			int nativeError;
+			int ret;
+
+			/* Only example I can find of sending a byte
+			 * array reference directly into an internal
+			 * call is in
+			 * System.Runtime.Remoting/System.Runtime.Remoting.Channels.Ipc.Win32/NamedPipeSocket.cs,
+			 * so taking a lead from that...
+			 */
+			WSABUF[] bufarray = new WSABUF[numsegments];
+			GCHandle[] gch = new GCHandle[numsegments];
+
+			for(int i = 0; i < numsegments; i++) {
+				ArraySegment<byte> segment = buffers[i];
+				gch[i] = GCHandle.Alloc (segment.Array, GCHandleType.Pinned);
+				bufarray[i].len = segment.Count;
+				bufarray[i].buf = Marshal.UnsafeAddrOfPinnedArrayElement (segment.Array, segment.Offset);
+			}
+
+			try {
+				ret = Receive_internal (socket, bufarray,
+							socketFlags,
+							out nativeError);
+			} finally {
+				for(int i = 0; i < numsegments; i++) {
+					if (gch[i].IsAllocated) {
+						gch[i].Free ();
+					}
+				}
+			}
+
+			errorCode = (SocketError)nativeError;
+			return(ret);
+		}
+
+		[MethodImplAttribute (MethodImplOptions.InternalCall)]
+		private extern static int Send_internal (IntPtr sock, WSABUF[] bufarray, SocketFlags flags, out int error);
+#if !MOONLIGHT
+		public
+#else
+		internal
+#endif
+		int Send (IList<ArraySegment<byte>> buffers)
+		{
+			int ret;
+			SocketError error;
+			ret = Send (buffers, SocketFlags.None, out error);
+			if (error != SocketError.Success) {
+				throw new SocketException ((int)error);
+			}
+			return(ret);
+		}
+
+#if !MOONLIGHT
+		public
+#else
+		internal
+#endif
+		int Send (IList<ArraySegment<byte>> buffers, SocketFlags socketFlags)
+		{
+			int ret;
+			SocketError error;
+			ret = Send (buffers, socketFlags, out error);
+			if (error != SocketError.Success) {
+				throw new SocketException ((int)error);
+			}
+			return(ret);
+		}
+
+		[CLSCompliant (false)]
+#if !MOONLIGHT
+		public
+#else
+		internal
+#endif
+		int Send (IList<ArraySegment<byte>> buffers, SocketFlags socketFlags, out SocketError errorCode)
+		{
+			if (disposed && closed)
+				throw new ObjectDisposedException (GetType ().ToString ());
+			if (buffers == null)
+				throw new ArgumentNullException ("buffers");
+			if (buffers.Count == 0)
+				throw new ArgumentException ("Buffer is empty", "buffers");
+			int numsegments = buffers.Count;
+			int nativeError;
+			int ret;
+
+			WSABUF[] bufarray = new WSABUF[numsegments];
+			GCHandle[] gch = new GCHandle[numsegments];
+			for(int i = 0; i < numsegments; i++) {
+				ArraySegment<byte> segment = buffers[i];
+				gch[i] = GCHandle.Alloc (segment.Array, GCHandleType.Pinned);
+				bufarray[i].len = segment.Count;
+				bufarray[i].buf = Marshal.UnsafeAddrOfPinnedArrayElement (segment.Array, segment.Offset);
+			}
+
+			try {
+				ret = Send_internal (socket, bufarray, socketFlags, out nativeError);
+			} finally {
+				for(int i = 0; i < numsegments; i++) {
+					if (gch[i].IsAllocated) {
+						gch[i].Free ();
+					}
+				}
+			}
+			errorCode = (SocketError)nativeError;
+			return(ret);
+		}
+
+		Exception InvalidAsyncOp (string method)
+		{
+			return new InvalidOperationException (method + " can only be called once per asynchronous operation");
+		}
+
+#if !MOONLIGHT
+		public
+#else
+		internal
+#endif
+		int EndReceive (IAsyncResult result)
+		{
+			SocketError error;
+			int bytesReceived = EndReceive (result, out error);
+			if (error != SocketError.Success) {
+				if (error != SocketError.WouldBlock && error != SocketError.InProgress)
+					connected = false;
+				throw new SocketException ((int)error);
+			}
+			return bytesReceived;
+		}
+
+#if !MOONLIGHT
+		public
+#else
+		internal
+#endif
+		int EndReceive (IAsyncResult asyncResult, out SocketError errorCode)
+		{
+			if (disposed && closed)
+				throw new ObjectDisposedException (GetType ().ToString ());
+
+			if (asyncResult == null)
+				throw new ArgumentNullException ("asyncResult");
+
+			SocketAsyncResult req = asyncResult as SocketAsyncResult;
+			if (req == null)
+				throw new ArgumentException ("Invalid IAsyncResult", "asyncResult");
+
+			if (Interlocked.CompareExchange (ref req.EndCalled, 1, 0) == 1)
+				throw InvalidAsyncOp ("EndReceive");
+			if (!asyncResult.IsCompleted)
+				asyncResult.AsyncWaitHandle.WaitOne ();
+
+			errorCode = req.ErrorCode;
+			// If no socket error occurred, call CheckIfThrowDelayedException in case there are other
+			// kinds of exceptions that should be thrown.
+			if (errorCode == SocketError.Success)
+				req.CheckIfThrowDelayedException();
+
+			return(req.Total);
+		}
+
+#if !MOONLIGHT
+		public
+#else
+		internal
+#endif
+		int EndSend (IAsyncResult result)
+		{
+			SocketError error;
+			int bytesSent = EndSend (result, out error);
+			if (error != SocketError.Success) {
+				if (error != SocketError.WouldBlock && error != SocketError.InProgress)
+					connected = false;
+				throw new SocketException ((int)error);
+			}
+			return bytesSent;
+		}
+
+#if !MOONLIGHT
+		public
+#else
+		internal
+#endif
+		int EndSend (IAsyncResult asyncResult, out SocketError errorCode)
+		{
+			if (disposed && closed)
+				throw new ObjectDisposedException (GetType ().ToString ());
+			if (asyncResult == null)
+				throw new ArgumentNullException ("asyncResult");
+
+			SocketAsyncResult req = asyncResult as SocketAsyncResult;
+			if (req == null)
+				throw new ArgumentException ("Invalid IAsyncResult", "result");
+
+			if (Interlocked.CompareExchange (ref req.EndCalled, 1, 0) == 1)
+				throw InvalidAsyncOp ("EndSend");
+			if (!asyncResult.IsCompleted)
+				asyncResult.AsyncWaitHandle.WaitOne ();
+
+			errorCode = req.ErrorCode;
+			// If no socket error occurred, call CheckIfThrowDelayedException in case there are other
+			// kinds of exceptions that should be thrown.
+			if (errorCode == SocketError.Success)
+				req.CheckIfThrowDelayedException ();
+
+			return(req.Total);
+		}
+
+		// Used by Udpclient
+#if !MOONLIGHT
+		public
+#else
+		internal
+#endif
+		int EndReceiveFrom(IAsyncResult result, ref EndPoint end_point)
+		{
+			if (disposed && closed)
+				throw new ObjectDisposedException (GetType ().ToString ());
+
+			if (result == null)
+				throw new ArgumentNullException ("result");
+
+			if (end_point == null)
+				throw new ArgumentNullException ("remote_end");
+
+			SocketAsyncResult req = result as SocketAsyncResult;
+			if (req == null)
+				throw new ArgumentException ("Invalid IAsyncResult", "result");
+
+			if (Interlocked.CompareExchange (ref req.EndCalled, 1, 0) == 1)
+				throw InvalidAsyncOp ("EndReceiveFrom");
+			if (!result.IsCompleted)
+				result.AsyncWaitHandle.WaitOne();
+
+ 			req.CheckIfThrowDelayedException();
+			end_point = req.EndPoint;
+			return req.Total;
+		}
+
+		[MethodImplAttribute(MethodImplOptions.InternalCall)]
+		static extern void socket_pool_queue (SocketAsyncCall d, SocketAsyncResult r);
 	}
 }
 
diff --git a/mcs/class/System/System.Net/BasicClient.cs b/mcs/class/System/System.Net/BasicClient.cs
index 5d89b26..6385d8f 100644
--- a/mcs/class/System/System.Net/BasicClient.cs
+++ b/mcs/class/System/System.Net/BasicClient.cs
@@ -39,7 +39,7 @@ namespace System.Net
 				return null;
 
 			string header = challenge.Trim ();
-			if (header.ToLower ().IndexOf ("basic") == -1)
+			if (header.ToLower ().IndexOf ("basic", StringComparison.Ordinal) == -1)
 				return null;
 
 			return InternalAuthenticate (webRequest, credentials);
diff --git a/mcs/class/System/System.Net/ChangeLog b/mcs/class/System/System.Net/ChangeLog
index 51a0fa3..2a916d3 100644
--- a/mcs/class/System/System.Net/ChangeLog
+++ b/mcs/class/System/System.Net/ChangeLog
@@ -1,9 +1,103 @@
+2010-12-06  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Workaround bug in AcquireWriterLock
+
+	AcquireWriteLock should be the same as UpgradeToWriterLock when
+	the thread is already a reader.
+
+	Fixes bug #656850.
+
+2010-11-20  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	[HttpListener] Reduce the code inside lock {}
+
+	Avoid nesting locks when they are not needed.
+
+2010-11-20  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	[HttpListener] Use RWL instead of lock()
+
+	Most of the time we just want to read the prefixes instead of
+	adding/removing one.
+
+2010-11-05  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* System.Net/CookieParser.cs: Add more common/shared code *
+	System.Net/HttpWebResponse.cs: Move out CookieParser class and
+	some utility methods so they can be shared with Moonlight http
+	client stack
+
 2010-11-01  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
 
 	Avoid killing the thread if socket already null
 
 	In some weird cases socket is null when we try to close it.
 
+2010-10-31  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	More StringComparison.Ordinal
+
+	Use StringComparison.Ordinal when calling IndexOf to find the
+	index of an ASCII string.
+
+2010-10-31  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Use ordinal comparison when looking for "::"
+
+	This should fix 650355, but it might just hide the actual problem
+	which seems to be related to loading CJK encodings data.
+
+2010-10-25  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Send Keep-Alive when reusing
+
+	Send Keep-Alive headers when reusing a connection and limit reuses
+	to 100.
+
+2010-10-25  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Add connection timers and reuses
+
+	Use a timer to handle read timeouts and extend reuses to regular
+	connections, not just chunked. The timer is set to 90s for the
+	first request and 15s for subsequent requests.
+
+2010-10-25  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Implemente HttpListenerRequest.KeepAlive
+
+	Ditto.
+
+2010-10-25  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Use SocketAsyncEventArgs
+
+	BeginAccept/EndAccept replaced by AcceptAsync.
+
+2010-10-15  Marek Safar  <marek.safar at gmail.com>
+
+	Clean up few more warnings
+
+2010-10-12  Jonathan Pryor  <jonpryor at vt.edu>
+
+	Add preliminary HTTPS handling support for Android.
+
+	The problem is that Android only exposes Java APIs for ~everything
+	of consequence, including/especially X509 Certificate validation.
+	Since we want Mono-based HTTPS support to use the underlying
+	platform certificates, this requires some amount of Java-using
+	glue. However, we don't want to pull in a ton of Java glue into
+	System.dll (bleh!), so we'll instead place the glue into
+	Mono.Android.dll's
+	Android.Runtime.AndroidEnvironment.TrustEvaluateSsl(), and instead
+	create a delegate which will invoke TrustEvaluateSsl() when
+	needed.
+
+2010-10-07  Geoff Norton  <grompf at sublimeintervention.com>
+
+	Expose ICredentialsByHost on NetworkCredential in the MOBILE
+	profiles
+
 2010-10-04  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
 
 	Set have_response
@@ -13,6 +107,13 @@
 
 2010-09-30  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
 
+	Create only 1 callback instance for read/write
+
+	Read/Write were creating one callback instance per call. Now we
+	keep the same delegate around for all the calls.
+
+2010-09-30  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
 	Invoke the callback in separate threads
 
 	The callbacks need to be invoked in different threads to avoid
@@ -20,6 +121,12 @@
 
 	Fixes bug #639656.
 
+2010-09-22  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* System.Net/IPAddress.cs: ScopeId can only be set on IPv6 or it
+	throws a SocketException (not an Exception). ScopeId is also
+	limited from 0 to 2^32.
+
 2010-09-17  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
 
 	Revert my last patch
@@ -33,6 +140,15 @@
 	Why on earth this wasn't found earlier? $20 reward to whoever
 	gives a plausible explanation.
 
+2010-09-08  Jb Evain  <jbevain at gmail.com>
+
+	Enable the System build for monodroid
+
+2010-09-03  Jb Evain  <jbevain at gmail.com>
+
+	Fix the visiblity of WebExceptionStatus for moonlight in the same
+	way as WebException
+
 2010-09-01  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
 
 	Remove Content-Length header when not needed
diff --git a/mcs/class/System/System.Net/CookieParser.cs b/mcs/class/System/System.Net/CookieParser.cs
new file mode 100644
index 0000000..c670e6a
--- /dev/null
+++ b/mcs/class/System/System.Net/CookieParser.cs
@@ -0,0 +1,146 @@
+//
+// System.Net.CookieParser
+//
+// Authors:
+// 	Lawrence Pit (loz at cable.a2000.nl)
+// 	Gonzalo Paniagua Javier (gonzalo at ximian.com)
+//      Daniel Nauck    (dna(at)mono-project(dot)de)
+//
+// (c) 2002 Lawrence Pit
+// (c) 2003 Ximian, Inc. (http://www.ximian.com)
+// (c) 2008 Daniel Nauck
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections;
+using System.Globalization;
+
+namespace System.Net {
+
+	class CookieParser {
+		string header;
+		int pos;
+		int length;
+
+		public CookieParser (string header) : this (header, 0)
+		{
+		}
+
+		public CookieParser (string header, int position)
+		{
+			this.header = header;
+			this.pos = position;
+			this.length = header.Length;
+		}
+
+		public bool GetNextNameValue (out string name, out string val)
+		{
+			name = null;
+			val = null;
+
+			if (pos >= length)
+				return false;
+
+			name = GetCookieName ();
+			if (pos < header.Length && header [pos] == '=') {
+				pos++;
+				val = GetCookieValue ();
+			}
+
+			if (pos < length && header [pos] == ';')
+				pos++;
+
+			return true;
+		}
+
+		string GetCookieName ()
+		{
+			int k = pos;
+			while (k < length && Char.IsWhiteSpace (header [k]))
+				k++;
+
+			int begin = k;
+			while (k < length && header [k] != ';' &&  header [k] != '=')
+				k++;
+
+			pos = k;
+			return header.Substring (begin, k - begin).Trim ();
+		}
+
+		string GetCookieValue ()
+		{
+			if (pos >= length)
+				return null;
+
+			int k = pos;
+			while (k < length && Char.IsWhiteSpace (header [k]))
+				k++;
+
+			int begin;
+			if (header [k] == '"'){
+				int j;
+				begin = ++k;
+
+				while (k < length && header [k] != '"')
+					k++;
+
+				for (j = k; j < length && header [j] != ';'; j++)
+					;
+				pos = j;
+			} else {
+				begin = k;
+				while (k < length && header [k] != ';')
+					k++;
+				pos = k;
+			}
+				
+			return header.Substring (begin, k - begin).Trim ();
+		}
+
+		static string[] cookieExpiresFormats =
+			new string[] { "r",
+					"ddd, dd'-'MMM'-'yyyy HH':'mm':'ss 'GMT'",
+					"ddd, dd'-'MMM'-'yy HH':'mm':'ss 'GMT'" };
+
+		static public DateTime TryParseCookieExpires (string value)
+		{
+			if (String.IsNullOrEmpty (value))
+				return DateTime.MinValue;
+
+			for (int i = 0; i < cookieExpiresFormats.Length; i++) {
+				try {
+					DateTime cookieExpiresUtc = DateTime.ParseExact (value, cookieExpiresFormats [i], CultureInfo.InvariantCulture);
+
+					//convert UTC/GMT time to local time
+					cookieExpiresUtc = DateTime.SpecifyKind (cookieExpiresUtc, DateTimeKind.Utc);
+					return TimeZone.CurrentTimeZone.ToLocalTime (cookieExpiresUtc);
+				} catch {}
+			}
+
+			//If we can't parse Expires, use cookie as session cookie (expires is DateTime.MinValue)
+			return DateTime.MinValue;
+		}
+	}
+}
+
diff --git a/mcs/class/System/System.Net/EndPointListener.cs b/mcs/class/System/System.Net/EndPointListener.cs
index a3e5b4a..22edac0 100644
--- a/mcs/class/System/System.Net/EndPointListener.cs
+++ b/mcs/class/System/System.Net/EndPointListener.cs
@@ -33,6 +33,7 @@ using System.Net.Sockets;
 using System.Collections;
 using System.Security.Cryptography;
 using System.Security.Cryptography.X509Certificates;
+using System.Threading;
 using Mono.Security.Authenticode;
 
 namespace System.Net {
@@ -40,6 +41,7 @@ namespace System.Net {
 	{
 		IPEndPoint endpoint;
 		Socket sock;
+		ReaderWriterLock plock;
 		Hashtable prefixes;  // Dictionary <ListenerPrefix, HttpListener>
 		ArrayList unhandled; // List<ListenerPrefix> unhandled; host = '*'
 		ArrayList all;       // List<ListenerPrefix> all;  host = '+'
@@ -58,8 +60,12 @@ namespace System.Net {
 			sock = new Socket (addr.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
 			sock.Bind (endpoint);
 			sock.Listen (500);
-			sock.BeginAccept (OnAccept, this);
+			SocketAsyncEventArgs args = new SocketAsyncEventArgs ();
+			args.UserToken = this;
+			args.Completed += OnAccept;
+			sock.AcceptAsync (args);
 			prefixes = new Hashtable ();
+			plock = new ReaderWriterLock ();
 		}
 
 		void LoadCertificateAndKey (IPAddress addr, int port)
@@ -78,28 +84,27 @@ namespace System.Net {
 			}
 		}
 
-		static void OnAccept (IAsyncResult ares)
+		static void OnAccept (object sender, EventArgs e)
 		{
-			EndPointListener epl = (EndPointListener) ares.AsyncState;
+			SocketAsyncEventArgs args = (SocketAsyncEventArgs) e;
+			EndPointListener epl = (EndPointListener) args.UserToken;
 			Socket accepted = null;
+			if (args.SocketError == SocketError.Success) {
+				accepted = args.AcceptSocket;
+				args.AcceptSocket = null;
+			}
+
 			try {
 				if (epl.sock != null)
-					accepted = epl.sock.EndAccept (ares);
+					epl.sock.AcceptAsync (args);
 			} catch {
-				// Anything to do here?
-			} finally {
-				try {
-					if (epl.sock != null)
-						epl.sock.BeginAccept (OnAccept, epl);
-				} catch {
-					if (accepted != null) {
-						try {
-							accepted.Close ();
-						} catch {}
-						accepted = null;
-					}
-				} 
-			}
+				if (accepted != null) {
+					try {
+						accepted.Close ();
+					} catch {}
+					accepted = null;
+				}
+			} 
 
 			if (accepted == null)
 				return;
@@ -157,7 +162,8 @@ namespace System.Net {
 			HttpListener best_match = null;
 			int best_length = -1;
 
-			lock (prefixes) {
+			try {
+				plock.AcquireReaderLock (-1);
 				if (host != null && host != "") {
 					foreach (ListenerPrefix p in prefixes.Keys) {
 						string ppath = p.Path;
@@ -181,6 +187,10 @@ namespace System.Net {
 				best_match = MatchFromList (host, path, all, out prefix);
 				if (best_match != null)
 					return best_match;
+			} finally {
+				try {
+					plock.ReleaseReaderLock ();
+				} catch {}
 			}
 			return null;
 		}
@@ -214,12 +224,19 @@ namespace System.Net {
 			if (coll == null)
 				return;
 
-			foreach (ListenerPrefix p in coll) {
-				if (p.Path == prefix.Path) //TODO: code
-					throw new HttpListenerException (400, "Prefix already in use.");
+			try {
+				plock.AcquireReaderLock (-1);
+				foreach (ListenerPrefix p in coll) {
+					if (p.Path == prefix.Path) //TODO: code
+						throw new HttpListenerException (400, "Prefix already in use.");
+				}
+				plock.UpgradeToWriterLock (-1);
+				coll.Add (prefix);
+			} finally {
+				try {
+					plock.ReleaseReaderLock (); // This releases the writer lock if held.
+				} catch { }
 			}
-
-			coll.Add (prefix);
 		}
 
 		void RemoveSpecial (ArrayList coll, ListenerPrefix prefix)
@@ -227,17 +244,26 @@ namespace System.Net {
 			if (coll == null)
 				return;
 
-			int c = coll.Count;
-			for (int i = 0; i < c; i++) {
-				ListenerPrefix p = (ListenerPrefix) coll [i];
-				if (p.Path == prefix.Path) {
-					coll.RemoveAt (i);
-					CheckIfRemove ();
-					return;
+			try {
+				plock.AcquireReaderLock (-1);
+				int c = coll.Count;
+				for (int i = 0; i < c; i++) {
+					ListenerPrefix p = (ListenerPrefix) coll [i];
+					if (p.Path == prefix.Path) {
+						plock.UpgradeToWriterLock (-1);
+						coll.RemoveAt (i);
+						CheckIfRemove ();
+						return;
+					}
 				}
+			} finally {
+				try {
+					plock.ReleaseReaderLock (); // Releases the writer lock if held
+				} catch {}
 			}
 		}
 
+		// Writer lock held when calling (could use just reader)
 		void CheckIfRemove ()
 		{
 			if (prefixes.Count > 0)
@@ -259,52 +285,63 @@ namespace System.Net {
 
 		public void AddPrefix (ListenerPrefix prefix, HttpListener listener)
 		{
-			lock (prefixes) {
-				if (prefix.Host == "*") {
-					if (unhandled == null)
-						unhandled = new ArrayList ();
+			if (prefix.Host == "*") {
+				if (unhandled == null)
+					unhandled = new ArrayList ();
 
-					prefix.Listener = listener;
-					AddSpecial (unhandled, prefix);
-					return;
-				}
+				prefix.Listener = listener;
+				AddSpecial (unhandled, prefix);
+				return;
+			}
 
-				if (prefix.Host == "+") {
-					if (all == null)
-						all = new ArrayList ();
-					prefix.Listener = listener;
-					AddSpecial (all, prefix);
-					return;
-				}
+			if (prefix.Host == "+") {
+				if (all == null)
+					all = new ArrayList ();
+				prefix.Listener = listener;
+				AddSpecial (all, prefix);
+				return;
+			}
 
+			try { 
+				plock.AcquireReaderLock (-1);
 				if (prefixes.ContainsKey (prefix)) {
 					HttpListener other = (HttpListener) prefixes [prefix];
 					if (other != listener) // TODO: code.
 						throw new HttpListenerException (400, "There's another listener for " + prefix);
 					return;
 				}
-
+				plock.UpgradeToWriterLock (-1);
 				prefixes [prefix] = listener;
+			} finally {
+				try {
+					plock.ReleaseReaderLock ();
+				} catch {}
 			}
 		}
 
 		public void RemovePrefix (ListenerPrefix prefix, HttpListener listener)
 		{
-			lock (prefixes) {
-				if (prefix.Host == "*") {
-					RemoveSpecial (unhandled, prefix);
-					return;
-				}
+			if (prefix.Host == "*") {
+				RemoveSpecial (unhandled, prefix);
+				return;
+			}
 
-				if (prefix.Host == "+") {
-					RemoveSpecial (all, prefix);
-					return;
-				}
+			if (prefix.Host == "+") {
+				RemoveSpecial (all, prefix);
+				return;
+			}
 
+			try {
+				plock.AcquireReaderLock (-1);
 				if (prefixes.ContainsKey (prefix)) {
+					plock.UpgradeToWriterLock (-1);
 					prefixes.Remove (prefix);
 					CheckIfRemove ();
 				}
+			} finally {
+				try {
+					plock.ReleaseReaderLock ();
+				} catch {}
 			}
 		}
 	}
diff --git a/mcs/class/System/System.Net/EndPointManager.cs b/mcs/class/System/System.Net/EndPointManager.cs
index 33c5940..dc05a33 100644
--- a/mcs/class/System/System.Net/EndPointManager.cs
+++ b/mcs/class/System/System.Net/EndPointManager.cs
@@ -71,7 +71,7 @@ namespace System.Net {
 			if (lp.Path.IndexOf ('%') != -1)
 				throw new HttpListenerException (400, "Invalid path.");
 
-			if (lp.Path.IndexOf ("//") != -1) // TODO: Code?
+			if (lp.Path.IndexOf ("//", StringComparison.Ordinal) != -1) // TODO: Code?
 				throw new HttpListenerException (400, "Invalid path.");
 
 			// Always listens on all the interfaces, no matter the host name/ip used.
@@ -136,7 +136,7 @@ namespace System.Net {
 			if (lp.Path.IndexOf ('%') != -1)
 				return;
 
-			if (lp.Path.IndexOf ("//") != -1)
+			if (lp.Path.IndexOf ("//", StringComparison.Ordinal) != -1)
 				return;
 
 			EndPointListener epl = GetEPListener (IPAddress.Any, lp.Port, listener, lp.Secure);
diff --git a/mcs/class/System/System.Net/HttpConnection.cs b/mcs/class/System/System.Net/HttpConnection.cs
index 927c03f..c492128 100644
--- a/mcs/class/System/System.Net/HttpConnection.cs
+++ b/mcs/class/System/System.Net/HttpConnection.cs
@@ -32,6 +32,7 @@ using System.IO;
 using System.Net.Sockets;
 using System.Reflection;
 using System.Text;
+using System.Threading;
 using System.Security.Cryptography;
 using System.Security.Cryptography.X509Certificates;
 using Mono.Security.Protocol.Tls;
@@ -51,10 +52,12 @@ namespace System.Net {
 		RequestStream i_stream;
 		ResponseStream o_stream;
 		bool chunked;
-		int chunked_uses;
+		int reuses;
 		bool context_bound;
 		bool secure;
 		AsymmetricAlgorithm key;
+		int s_timeout = 90000; // 90k ms for first request, 15k ms from then on
+		Timer timer;
 
 		public HttpConnection (Socket sock, EndPointListener epl, bool secure, X509Certificate2 cert, AsymmetricAlgorithm key)
 		{
@@ -69,6 +72,7 @@ namespace System.Net {
 				ssl_stream.PrivateKeyCertSelectionDelegate += OnPVKSelection;
 				stream = ssl_stream;
 			}
+			timer = new Timer (OnTimeout, null, Timeout.Infinite, Timeout.Infinite);
 			Init ();
 		}
 
@@ -91,8 +95,8 @@ namespace System.Net {
 			context = new HttpListenerContext (this);
 		}
 
-		public int ChunkedUses {
-			get { return chunked_uses; }
+		public int Reuses {
+			get { return reuses; }
 		}
 
 		public IPEndPoint LocalEndPoint {
@@ -112,11 +116,23 @@ namespace System.Net {
 			set { prefix = value; }
 		}
 
+		void OnTimeout (object unused)
+		{
+			Unbind ();
+			try {
+				sock.Close (); // stream disposed
+			} catch {
+			}
+		}
+
 		public void BeginReadRequest ()
 		{
 			if (buffer == null)
 				buffer = new byte [BufferSize];
 			try {
+				if (reuses == 1)
+					s_timeout = 15000;
+				timer.Change (s_timeout, Timeout.Infinite);
 				stream.BeginRead (buffer, 0, BufferSize, OnRead, this);
 			} catch {
 				CloseSocket ();
@@ -153,6 +169,7 @@ namespace System.Net {
 
 		void OnRead (IAsyncResult ares)
 		{
+			timer.Change (Timeout.Infinite, Timeout.Infinite);
 			HttpConnection cnc = (HttpConnection) ares.AsyncState;
 			int nread = -1;
 			try {
@@ -365,26 +382,30 @@ namespace System.Net {
 			}
 
 			if (sock != null) {
-				force_close |= (context.Request.Headers ["connection"] == "close");
+				force_close |= !context.Request.KeepAlive;
+				if (!force_close)
+					force_close = (context.Response.Headers ["connection"] == "close");
+				/*
 				if (!force_close) {
-					int status_code = context.Response.StatusCode;
-					bool conn_close = (status_code == 400 || status_code == 408 || status_code == 411 ||
-							status_code == 413 || status_code == 414 || status_code == 500 ||
-							status_code == 503);
+//					bool conn_close = (status_code == 400 || status_code == 408 || status_code == 411 ||
+//							status_code == 413 || status_code == 414 || status_code == 500 ||
+//							status_code == 503);
 
 					force_close |= (context.Request.ProtocolVersion <= HttpVersion.Version10);
 				}
+				*/
 
 				if (!force_close && context.Request.FlushInput ()) {
 					if (chunked && context.Response.ForceCloseChunked == false) {
 						// Don't close. Keep working.
-						chunked_uses++;
+						reuses++;
 						Unbind ();
 						Init ();
 						BeginReadRequest ();
 						return;
 					}
 
+					reuses++;
 					Unbind ();
 					Init ();
 					BeginReadRequest ();
diff --git a/mcs/class/System/System.Net/HttpListener.cs b/mcs/class/System/System.Net/HttpListener.cs
index 8b9f731..79d4aac 100644
--- a/mcs/class/System/System.Net/HttpListener.cs
+++ b/mcs/class/System/System.Net/HttpListener.cs
@@ -283,37 +283,31 @@ namespace System.Net {
 
 		internal void RegisterContext (HttpListenerContext context)
 		{
-			try {
-				Monitor.Enter (registry);
+			lock (registry)
 				registry [context] = context;
-				Monitor.Enter (wait_queue);
-				Monitor.Enter (ctx_queue);
+
+			ListenerAsyncResult ares = null;
+			lock (wait_queue) {
 				if (wait_queue.Count == 0) {
-					ctx_queue.Add (context);
+					lock (ctx_queue)
+						ctx_queue.Add (context);
 				} else {
-					ListenerAsyncResult ares = (ListenerAsyncResult) wait_queue [0];
+					ares = (ListenerAsyncResult) wait_queue [0];
 					wait_queue.RemoveAt (0);
-					ares.Complete (context);
 				}
-			} finally {
-				Monitor.Exit (ctx_queue);
-				Monitor.Exit (wait_queue);
-				Monitor.Exit (registry);
 			}
+			if (ares != null)
+				ares.Complete (context);
 		}
 
 		internal void UnregisterContext (HttpListenerContext context)
 		{
-			try {
-				Monitor.Enter (registry);
-				Monitor.Enter (ctx_queue);
+			lock (registry)
+				registry.Remove (context);
+			lock (ctx_queue) {
 				int idx = ctx_queue.IndexOf (context);
 				if (idx >= 0)
 					ctx_queue.RemoveAt (idx);
-				registry.Remove (context);
-			} finally {
-				Monitor.Exit (ctx_queue);
-				Monitor.Exit (registry);
 			}
 		}
 	}
diff --git a/mcs/class/System/System.Net/HttpListenerRequest.cs b/mcs/class/System/System.Net/HttpListenerRequest.cs
index 4ff468f..491a7a8 100644
--- a/mcs/class/System/System.Net/HttpListenerRequest.cs
+++ b/mcs/class/System/System.Net/HttpListenerRequest.cs
@@ -50,12 +50,13 @@ namespace System.Net {
 		Version version;
 		NameValueCollection query_string; // check if null is ok, check if read-only, check case-sensitiveness
 		string raw_url;
-		Guid identifier;
 		Uri url;
 		Uri referrer;
 		string [] user_languages;
 		HttpListenerContext context;
 		bool is_chunked;
+		bool ka_set;
+		bool keep_alive;
 		static byte [] _100continue = Encoding.ASCII.GetBytes ("HTTP/1.1 100 Continue\r\n\r\n");
 		static readonly string [] no_body_methods = new string [] {
 			"GET", "HEAD", "DELETE" };
@@ -258,22 +259,22 @@ namespace System.Net {
 						if (str.Length == 0)
 							continue;
 						if (str.StartsWith ("$Version")) {
-							version = Int32.Parse (Unquote (str.Substring (str.IndexOf ("=") + 1)));
+							version = Int32.Parse (Unquote (str.Substring (str.IndexOf ('=') + 1)));
 						} else if (str.StartsWith ("$Path")) {
 							if (current != null)
-								current.Path = str.Substring (str.IndexOf ("=") + 1).Trim ();
+								current.Path = str.Substring (str.IndexOf ('=') + 1).Trim ();
 						} else if (str.StartsWith ("$Domain")) {
 							if (current != null)
-								current.Domain = str.Substring (str.IndexOf ("=") + 1).Trim ();
+								current.Domain = str.Substring (str.IndexOf ('=') + 1).Trim ();
 						} else if (str.StartsWith ("$Port")) {
 							if (current != null)
-								current.Port = str.Substring (str.IndexOf ("=") + 1).Trim ();
+								current.Port = str.Substring (str.IndexOf ('=') + 1).Trim ();
 						} else {
 							if (current != null) {
 								cookies.Add (current);
 							}
 							current = new Cookie ();
-							int idx = str.IndexOf ("=");
+							int idx = str.IndexOf ('=');
 							if (idx > 0) {
 								current.Name = str.Substring (0, idx).Trim ();
 								current.Value =  str.Substring (idx + 1).Trim ();
@@ -385,7 +386,26 @@ namespace System.Net {
 		}
 
 		public bool KeepAlive {
-			get { return false; }
+			get {
+				if (ka_set)
+					return keep_alive;
+
+				ka_set = true;
+				// 1. Connection header
+				// 2. Protocol (1.1 == keep-alive by default)
+				// 3. Keep-Alive header
+				string cnc = headers ["Connection"];
+				if (!String.IsNullOrEmpty (cnc)) {
+					keep_alive = (0 == String.Compare (cnc, "keep-alive", StringComparison.OrdinalIgnoreCase));
+				} else if (version == HttpVersion.Version11) {
+					keep_alive = true;
+				} else {
+					cnc = headers ["keep-alive"];
+					if (!String.IsNullOrEmpty (cnc))
+						keep_alive = (0 != String.Compare (cnc, "closed", StringComparison.OrdinalIgnoreCase));
+				}
+				return keep_alive;
+			}
 		}
 
 		public IPEndPoint LocalEndPoint {
@@ -408,8 +428,9 @@ namespace System.Net {
 			get { return context.Connection.RemoteEndPoint; }
 		}
 
+		[MonoTODO ("Always returns Guid.Empty")]
 		public Guid RequestTraceIdentifier {
-			get { return identifier; }
+			get { return Guid.Empty; }
 		}
 
 		public Uri Url {
diff --git a/mcs/class/System/System.Net/HttpListenerResponse.cs b/mcs/class/System/System.Net/HttpListenerResponse.cs
index 413326f..3d46500 100644
--- a/mcs/class/System/System.Net/HttpListenerResponse.cs
+++ b/mcs/class/System/System.Net/HttpListenerResponse.cs
@@ -393,13 +393,12 @@ namespace System.Net {
 
 		internal void SendHeaders (bool closing, MemoryStream ms)
 		{
-			//TODO: When do we send KeepAlive?
 			Encoding encoding = content_encoding;
 			if (encoding == null)
 				encoding = Encoding.Default;
 
 			if (content_type != null) {
-				if (content_encoding != null && content_type.IndexOf ("charset=") == -1) {
+				if (content_encoding != null && content_type.IndexOf ("charset=", StringComparison.Ordinal) == -1) {
 					string enc_name = content_encoding.WebName;
 					headers.SetInternal ("Content-Type", content_type + "; charset=" + enc_name);
 				} else {
@@ -441,23 +440,31 @@ namespace System.Net {
 					status_code == 413 || status_code == 414 || status_code == 500 ||
 					status_code == 503);
 
-			if (conn_close == false) {
-				conn_close = (context.Request.Headers ["connection"] == "close");
-				conn_close |= (v <= HttpVersion.Version10);
-			}
+			if (conn_close == false)
+				conn_close = !context.Request.KeepAlive;
 
 			// They sent both KeepAlive: true and Connection: close!?
-			if (!keep_alive || conn_close)
+			if (!keep_alive || conn_close) {
 				headers.SetInternal ("Connection", "close");
+				conn_close = true;
+			}
 
 			if (chunked)
 				headers.SetInternal ("Transfer-Encoding", "chunked");
 
-			int chunked_uses = context.Connection.ChunkedUses;
-			if (chunked_uses >= 100) {
+			int reuses = context.Connection.Reuses;
+			if (reuses >= 100) {
 				force_close_chunked = true;
-				if (!conn_close)
+				if (!conn_close) {
 					headers.SetInternal ("Connection", "close");
+					conn_close = true;
+				}
+			}
+
+			if (!conn_close) {
+				headers.SetInternal ("Keep-Alive", String.Format ("timeout=15,max={0}", 100 - reuses));
+				if (context.Request.ProtocolVersion <= HttpVersion.Version10)
+					headers.SetInternal ("Connection", "keep-alive");
 			}
 
 			if (location != null)
diff --git a/mcs/class/System/System.Net/HttpWebRequest.cs b/mcs/class/System/System.Net/HttpWebRequest.cs
index fcad9f2..0aa0f03 100644
--- a/mcs/class/System/System.Net/HttpWebRequest.cs
+++ b/mcs/class/System/System.Net/HttpWebRequest.cs
@@ -241,7 +241,7 @@ namespace System.Net
 				if (val == "keep-alive" || val == "close") 
 					throw new ArgumentException ("Keep-Alive and Close may not be set with this property");
 
-				if (keepAlive && val.IndexOf ("keep-alive") == -1)
+				if (keepAlive && val.IndexOf ("keep-alive", StringComparison.Ordinal) == -1)
 					value = value + ", Keep-Alive";
 				
 				webHeaders.RemoveAndAdd ("Connection", value);
diff --git a/mcs/class/System/System.Net/HttpWebResponse.cs b/mcs/class/System/System.Net/HttpWebResponse.cs
index 83eef98..9747da9 100644
--- a/mcs/class/System/System.Net/HttpWebResponse.cs
+++ b/mcs/class/System/System.Net/HttpWebResponse.cs
@@ -123,7 +123,7 @@ namespace System.Net
 				if (contentType == null)
 					return "ISO-8859-1";
 				string val = contentType.ToLower (); 					
-				int pos = val.IndexOf ("charset=");
+				int pos = val.IndexOf ("charset=", StringComparison.Ordinal);
 				if (pos == -1)
 					return "ISO-8859-1";
 				pos += 8;
@@ -401,7 +401,7 @@ namespace System.Net
 					if (cookie.Expires != DateTime.MinValue)
 						break;
 
-					cookie.Expires = TryParseCookieExpires (val);
+					cookie.Expires = CookieParser.TryParseCookieExpires (val);
 					break;
 				case "PATH":
 					cookie.Path = val;
@@ -439,112 +439,6 @@ namespace System.Net
 			foreach (string cookie_str in cookies)
 				SetCookie (cookie_str);
 		}
-
-		string[] cookieExpiresFormats =
-			new string[] { "r",
-					"ddd, dd'-'MMM'-'yyyy HH':'mm':'ss 'GMT'",
-					"ddd, dd'-'MMM'-'yy HH':'mm':'ss 'GMT'" };
-
-		DateTime TryParseCookieExpires (string value)
-		{
-			if (value == null || value.Length == 0)
-				return DateTime.MinValue;
-
-			for (int i = 0; i < cookieExpiresFormats.Length; i++)
-			{
-				try {
-					DateTime cookieExpiresUtc = DateTime.ParseExact (value, cookieExpiresFormats [i], CultureInfo.InvariantCulture);
-
-					//convert UTC/GMT time to local time
-					cookieExpiresUtc = DateTime.SpecifyKind (cookieExpiresUtc, DateTimeKind.Utc);
-					return TimeZone.CurrentTimeZone.ToLocalTime (cookieExpiresUtc);
-				} catch {}
-			}
-
-			//If we can't parse Expires, use cookie as session cookie (expires is DateTime.MinValue)
-			return DateTime.MinValue;
-		}
 	}	
-
-	class CookieParser {
-		string header;
-		int pos;
-		int length;
-
-		public CookieParser (string header) : this (header, 0)
-		{
-		}
-
-		public CookieParser (string header, int position)
-		{
-			this.header = header;
-			this.pos = position;
-			this.length = header.Length;
-		}
-
-		public bool GetNextNameValue (out string name, out string val)
-		{
-			name = null;
-			val = null;
-
-			if (pos >= length)
-				return false;
-
-			name = GetCookieName ();
-			if (pos < header.Length && header [pos] == '=') {
-				pos++;
-				val = GetCookieValue ();
-			}
-
-			if (pos < length && header [pos] == ';')
-				pos++;
-
-			return true;
-		}
-
-		string GetCookieName ()
-		{
-			int k = pos;
-			while (k < length && Char.IsWhiteSpace (header [k]))
-				k++;
-
-			int begin = k;
-			while (k < length && header [k] != ';' &&  header [k] != '=')
-				k++;
-
-			pos = k;
-			return header.Substring (begin, k - begin).Trim ();
-		}
-
-		string GetCookieValue ()
-		{
-			if (pos >= length)
-				return null;
-
-			int k = pos;
-			while (k < length && Char.IsWhiteSpace (header [k]))
-				k++;
-
-			int begin;
-			if (header [k] == '"'){
-				int j;
-				begin = ++k;
-
-				while (k < length && header [k] != '"')
-					k++;
-
-				for (j = k; j < length && header [j] != ';'; j++)
-					;
-				pos = j;
-			} else {
-				begin = k;
-				while (k < length && header [k] != ';')
-					k++;
-				pos = k;
-			}
-				
-			return header.Substring (begin, k - begin).Trim ();
-		}
-	}
 }
 
diff --git a/mcs/class/System/System.Net/IPAddress.cs b/mcs/class/System/System.Net/IPAddress.cs
index 121b29c..06a3deb 100644
--- a/mcs/class/System/System.Net/IPAddress.cs
+++ b/mcs/class/System/System.Net/IPAddress.cs
@@ -365,14 +365,16 @@ namespace System.Net {
 
 		public long ScopeId {
 			get {
-				if(m_Family != AddressFamily.InterNetworkV6)
-					throw new Exception("The attempted operation is not supported for the type of object referenced");
+				if (m_Family != AddressFamily.InterNetworkV6)
+					throw new SocketException ((int) SocketError.OperationNotSupported);
 
 				return m_ScopeId;
 			}
 			set {
-				if(m_Family != AddressFamily.InterNetworkV6)
-					throw new Exception("The attempted operation is not supported for the type of object referenced");
+				if (m_Family != AddressFamily.InterNetworkV6)
+					throw new SocketException ((int) SocketError.OperationNotSupported);
+				if ((value < 0) || (value > UInt32.MaxValue))
+					throw new ArgumentOutOfRangeException ();
 
 				m_ScopeId = value;
 			}
@@ -409,6 +411,11 @@ namespace System.Net {
 		/// <returns></returns>
 		public static bool IsLoopback (IPAddress addr)
 		{
+#if MOONLIGHT
+			// even 4.0 throws an NRE
+			if (addr == null)
+				throw new ArgumentNullException ("addr");
+#endif
 			if(addr.m_Family == AddressFamily.InterNetwork)
 				return (addr.m_Address & 0xFF) == 127;
 			else {
diff --git a/mcs/class/System/System.Net/IPv6Address.cs b/mcs/class/System/System.Net/IPv6Address.cs
index 7e2e4dd..7165fb2 100644
--- a/mcs/class/System/System.Net/IPv6Address.cs
+++ b/mcs/class/System/System.Net/IPv6Address.cs
@@ -95,7 +95,7 @@ namespace System.Net {
 				return 0;
 			
 			// Catch double uses of ::
-			if (ipString.IndexOf ("::") != -1)
+			if (ipString.IndexOf ("::", StringComparison.Ordinal) != -1)
 				return -1;
 
 			for (int i = 0; i < ipString.Length; i++){
@@ -223,7 +223,7 @@ namespace System.Net {
 			// Only an ipv6 block remains, either:
 			// "hexnumbers::hexnumbers", "hexnumbers::" or "hexnumbers"
 			//
-			int c = ipString.IndexOf ("::");
+			int c = ipString.IndexOf ("::", StringComparison.Ordinal);
 			if (c != -1){
 				int right_slots = Fill (addr, ipString.Substring (c+2));
 				if (right_slots == -1){
diff --git a/mcs/class/System/System.Net/NetworkCredential.cs b/mcs/class/System/System.Net/NetworkCredential.cs
index 9e7b3aa..0b591a8 100644
--- a/mcs/class/System/System.Net/NetworkCredential.cs
+++ b/mcs/class/System/System.Net/NetworkCredential.cs
@@ -29,7 +29,7 @@
 namespace System.Net
 {
 	public class NetworkCredential : ICredentials
-#if NET_2_0 && !NET_2_1
+#if !MOONLIGHT
 					, ICredentialsByHost
 #endif
 	{
@@ -78,7 +78,7 @@ namespace System.Net
 			return this;
 		}
 
-#if NET_2_0 && !NET_2_1
+#if !MOONLIGHT
 		public NetworkCredential GetCredential (string host, int port, string authenticationType)
 		{
 			return this;
diff --git a/mcs/class/System/System.Net/ServicePointManager.cs b/mcs/class/System/System.Net/ServicePointManager.cs
index 35f0aee..0b41c7d 100644
--- a/mcs/class/System/System.Net/ServicePointManager.cs
+++ b/mcs/class/System/System.Net/ServicePointManager.cs
@@ -402,8 +402,19 @@ namespace System.Net
 			static bool is_macosx = System.IO.File.Exists (MSX.OSX509Certificates.SecurityLibrary);
 			static X509RevocationMode revocation_mode;
 
+#if MONODROID
+			static readonly Converter<Mono.Security.X509.X509CertificateCollection, bool> monodroidCallback;
+#endif
+
 			static ChainValidationHelper ()
 			{
+#if MONODROID
+				monodroidCallback = (Converter<Mono.Security.X509.X509CertificateCollection, bool>)
+					Delegate.CreateDelegate (typeof(Converter<Mono.Security.X509.X509CertificateCollection, bool>), 
+							Type.GetType ("Android.Runtime.AndroidEnvironment, Mono.Android", true)
+							.GetMethod ("TrustEvaluateSsl", 
+								System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic));
+#endif
 				revocation_mode = X509RevocationMode.NoCheck;
 				try {
 					string str = Environment.GetEnvironmentVariable ("MONO_X509_REVOCATION_MODE");
@@ -498,6 +509,14 @@ namespace System.Net
 				}
 #endif
 
+#if MONODROID
+				result = monodroidCallback (certs);
+				if (result) {
+					status11 = 0;
+					errors = 0;
+				}
+#endif
+
 				if (policy != null && (!(policy is DefaultCertificatePolicy) || cb == null)) {
 					ServicePoint sp = null;
 					HttpWebRequest req = sender as HttpWebRequest;
@@ -627,7 +646,7 @@ namespace System.Net
 					X509Extension ext = cert.Extensions ["2.16.840.1.113730.1.1"];
 					if (ext != null) {
 						string text = ext.NetscapeCertType (false);
-						return text.IndexOf ("SSL Server Authentication") != -1;
+						return text.IndexOf ("SSL Server Authentication", StringComparison.Ordinal) != -1;
 					}
 					return true;
 				} catch (Exception e) {
diff --git a/mcs/class/System/System.Net/WebClient.cs b/mcs/class/System/System.Net/WebClient.cs
index cbce8bc..d47cf41 100644
--- a/mcs/class/System/System.Net/WebClient.cs
+++ b/mcs/class/System/System.Net/WebClient.cs
@@ -86,7 +86,7 @@ namespace System.Net
 		Thread async_thread;
 		Encoding encoding = Encoding.Default;
 		IWebProxy proxy;
-		RequestCachePolicy cache_policy;
+//		RequestCachePolicy cache_policy;
 
 		// Constructors
 		static WebClient ()
@@ -137,7 +137,7 @@ namespace System.Net
 			get {
 				throw GetMustImplement ();
 			}
-			set { cache_policy = value; }
+			set { /*cache_policy = value;*/ }
 		}
 
 		[MonoTODO ("Value can be set but is ignored")]
diff --git a/mcs/class/System/System.Net/WebConnection.cs b/mcs/class/System/System.Net/WebConnection.cs
index 0b55b9c..4e0e504 100644
--- a/mcs/class/System/System.Net/WebConnection.cs
+++ b/mcs/class/System/System.Net/WebConnection.cs
@@ -468,7 +468,7 @@ namespace System.Net
 			WebConnectionStream stream = new WebConnectionStream (cnc);
 
 			string contentType = data.Headers ["Transfer-Encoding"];
-			cnc.chunkedRead = (contentType != null && contentType.ToLower ().IndexOf ("chunked") != -1);
+			cnc.chunkedRead = (contentType != null && contentType.IndexOf ("chunked", StringComparison.OrdinalIgnoreCase) != -1);
 			if (!cnc.chunkedRead) {
 				stream.ReadBuffer = cnc.buffer;
 				stream.ReadBufferOffset = pos;
@@ -709,11 +709,11 @@ namespace System.Net
 				bool keepAlive = (Data.Version == HttpVersion.Version11 && this.keepAlive);
 				if (cncHeader != null) {
 					cncHeader = cncHeader.ToLower ();
-					keepAlive = (this.keepAlive && cncHeader.IndexOf ("keep-alive") != -1);
+					keepAlive = (this.keepAlive && cncHeader.IndexOf ("keep-alive", StringComparison.Ordinal) != -1);
 				}
 
 				if ((socket != null && !socket.Connected) ||
-				   (!keepAlive || (cncHeader != null && cncHeader.IndexOf ("close") != -1))) {
+				   (!keepAlive || (cncHeader != null && cncHeader.IndexOf ("close", StringComparison.Ordinal) != -1))) {
 					Close (false);
 				}
 
diff --git a/mcs/class/System/System.Net/WebConnectionStream.cs b/mcs/class/System/System.Net/WebConnectionStream.cs
index 0b71f79..4b261d5 100644
--- a/mcs/class/System/System.Net/WebConnectionStream.cs
+++ b/mcs/class/System/System.Net/WebConnectionStream.cs
@@ -64,17 +64,19 @@ namespace System.Net
 		bool complete_request_written;
 		int read_timeout;
 		int write_timeout;
+		AsyncCallback cb_wrapper; // Calls to ReadCallbackWrapper or WriteCallbacWrapper
 
 		public WebConnectionStream (WebConnection cnc)
 		{
 			isRead = true;
+			cb_wrapper = new AsyncCallback (ReadCallbackWrapper);
 			pending = new ManualResetEvent (true);
 			this.request = cnc.Data.request;
 			read_timeout = request.ReadWriteTimeout;
 			write_timeout = read_timeout;
 			this.cnc = cnc;
 			string contentType = cnc.Data.Headers ["Transfer-Encoding"];
-			bool chunkedRead = (contentType != null && contentType.ToLower ().IndexOf ("chunked") != -1);
+			bool chunkedRead = (contentType != null && contentType.IndexOf ("chunked", StringComparison.OrdinalIgnoreCase) != -1);
 			string clength = cnc.Data.Headers ["Content-Length"];
 			if (!chunkedRead && clength != null && clength != "") {
 				try {
@@ -95,6 +97,7 @@ namespace System.Net
 			read_timeout = request.ReadWriteTimeout;
 			write_timeout = read_timeout;
 			isRead = false;
+			cb_wrapper = new AsyncCallback (WriteCallbackWrapper);
 			this.cnc = cnc;
 			this.request = request;
 			allowBuffering = request.InternalAllowBuffering;
@@ -110,7 +113,7 @@ namespace System.Net
 			bool isProxy = (request.Proxy != null && !request.Proxy.IsBypassed (request.Address));
 			string header_name = (isProxy) ? "Proxy-Authenticate" : "WWW-Authenticate";
 			string authHeader = cnc.Data.Headers [header_name];
-			return (authHeader != null && authHeader.IndexOf ("NTLM") != -1);
+			return (authHeader != null && authHeader.IndexOf ("NTLM", StringComparison.Ordinal) != -1);
 		}
 
 		internal void CheckResponseInBuffer ()
@@ -310,7 +313,7 @@ namespace System.Net
 
 		public override int Read (byte [] buffer, int offset, int size)
 		{
-			AsyncCallback cb = new AsyncCallback (ReadCallbackWrapper);
+			AsyncCallback cb = cb_wrapper;
 			WebAsyncResult res = (WebAsyncResult) BeginRead (buffer, offset, size, cb, null);
 			if (!res.IsCompleted && !res.WaitUntilComplete (ReadTimeout, false)) {
 				nextReadCalled = true;
@@ -365,7 +368,7 @@ namespace System.Net
 			}
 
 			if (cb != null)
-				cb = new AsyncCallback (ReadCallbackWrapper);
+				cb = cb_wrapper;
 
 			if (contentLength != Int32.MaxValue && contentLength - totalRead < size)
 				size = contentLength - totalRead;
@@ -509,7 +512,7 @@ namespace System.Net
 
 			AsyncCallback callback = null;
 			if (cb != null)
-				callback = new AsyncCallback (WriteCallbackWrapper);
+				callback = cb_wrapper;
 
 			if (sendChunked) {
 				WriteRequest ();
@@ -595,7 +598,7 @@ namespace System.Net
 		
 		public override void Write (byte [] buffer, int offset, int size)
 		{
-			AsyncCallback cb = new AsyncCallback (WriteCallbackWrapper);
+			AsyncCallback cb = cb_wrapper;
 			WebAsyncResult res = (WebAsyncResult) BeginWrite (buffer, offset, size, cb, null);
 			if (!res.IsCompleted && !res.WaitUntilComplete (WriteTimeout, false)) {
 				KillBuffer ();
diff --git a/mcs/class/System/System.Net/WebExceptionStatus.cs b/mcs/class/System/System.Net/WebExceptionStatus.cs
index 184927f..ceeadb9 100644
--- a/mcs/class/System/System.Net/WebExceptionStatus.cs
+++ b/mcs/class/System/System.Net/WebExceptionStatus.cs
@@ -29,7 +29,12 @@
 
 namespace System.Net 
 {
-	public enum WebExceptionStatus 
+#if MOONLIGHT && INSIDE_SYSTEM
+	internal
+#else
+	public
+#endif
+	enum WebExceptionStatus 
 	{
 		Success = 0,
 		NameResolutionFailure = 1,
diff --git a/mcs/class/System/System.Net/WebProxy.cs b/mcs/class/System/System.Net/WebProxy.cs
index 9232dbf..5ef0b10 100644
--- a/mcs/class/System/System.Net/WebProxy.cs
+++ b/mcs/class/System/System.Net/WebProxy.cs
@@ -258,7 +258,7 @@ namespace System.Net
 			if (address == null)
 				return null;
 				
-			if (address.IndexOf ("://") == -1) 
+			if (address.IndexOf ("://", StringComparison.Ordinal) == -1) 
 				address = "http://" + address;
 
 			return new Uri (address);
diff --git a/mcs/class/System/System.Net/WebRequest.cs b/mcs/class/System/System.Net/WebRequest.cs
index 123b22a..533dd17 100644
--- a/mcs/class/System/System.Net/WebRequest.cs
+++ b/mcs/class/System/System.Net/WebRequest.cs
@@ -70,7 +70,7 @@ namespace System.Net
 #if NET_2_1
 			AddPrefix ("http", typeof (HttpRequestCreator));
 			AddPrefix ("https", typeof (HttpRequestCreator));
-	#if MONOTOUCH
+	#if MOBILE
 			AddPrefix ("file", typeof (FileWebRequestCreator));
 			AddPrefix ("ftp", typeof (FtpRequestCreator));
 	#endif
diff --git a/mcs/class/System/System.Runtime.InteropServices/DefaultParameterValueAttribute.cs b/mcs/class/System/System.Runtime.InteropServices/DefaultParameterValueAttribute.cs
index d1915a2..e8988f0 100644
--- a/mcs/class/System/System.Runtime.InteropServices/DefaultParameterValueAttribute.cs
+++ b/mcs/class/System/System.Runtime.InteropServices/DefaultParameterValueAttribute.cs
@@ -29,8 +29,6 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if NET_2_0 || BOOTSTRAP_NET_2_0
-
 using System;
 
 namespace System.Runtime.InteropServices {
@@ -51,5 +49,3 @@ namespace System.Runtime.InteropServices {
 		}
 	}
 }
-
-#endif
diff --git a/mcs/class/System/System.Security.Authentication.ExtendedProtection.Configuration/ConfigUtil.cs b/mcs/class/System/System.Security.Authentication.ExtendedProtection.Configuration/ConfigUtil.cs
new file mode 100644
index 0000000..16e8bf8
--- /dev/null
+++ b/mcs/class/System/System.Security.Authentication.ExtendedProtection.Configuration/ConfigUtil.cs
@@ -0,0 +1,72 @@
+//
+// ConfigUtil.cs
+//
+// Author:
+//	Atsushi Enomoto <atsushi at ximian.com>
+//
+// Copyright (C) 2006,2010 Novell, Inc.  http://www.novell.com
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+#if NET_4_0 && CONFIGURATION_DEP
+
+extern alias PrebuiltSystem;
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.ComponentModel;
+using System.Configuration;
+using System.Linq;
+using System.Net;
+using System.Net.Security;
+using System.Reflection;
+using System.Runtime.Serialization;
+using System.Text;
+using System.Xml;
+
+using TypeConverter = PrebuiltSystem::System.ComponentModel.TypeConverter;
+
+namespace System.Security.Authentication.ExtendedProtection.Configuration
+{
+	internal static class ConfigUtil
+	{
+		// ugh, we cannot use extension methods yet.
+		internal static T GetCustomAttribute<T> (MemberInfo m, bool inherit)
+		{
+			var atts = m.GetCustomAttributes (typeof (T), false);
+			return atts.Length > 0 ? (T) atts [0] : default (T);
+		}
+
+		internal static ConfigurationProperty BuildProperty (Type t, string name)
+		{
+			var mi = t.GetProperty (name);
+
+			var a = GetCustomAttribute<ConfigurationPropertyAttribute> (mi, false);
+			var tca = GetCustomAttribute<TypeConverterAttribute> (mi, false);
+			var va = GetCustomAttribute<ConfigurationValidatorAttribute> (mi, false);
+
+			return new ConfigurationProperty (a.Name, mi.PropertyType, a.DefaultValue, tca != null ? (TypeConverter) Activator.CreateInstance (Type.GetType (tca.ConverterTypeName)) : null, va != null ? va.ValidatorInstance : null, a.Options);
+		}
+	}
+}
+
+#endif
diff --git a/mcs/class/System/System.Security.Authentication.ExtendedProtection.Configuration/ExtendedProtectionPolicyElement.cs b/mcs/class/System/System.Security.Authentication.ExtendedProtection.Configuration/ExtendedProtectionPolicyElement.cs
new file mode 100644
index 0000000..6fa5e8c
--- /dev/null
+++ b/mcs/class/System/System.Security.Authentication.ExtendedProtection.Configuration/ExtendedProtectionPolicyElement.cs
@@ -0,0 +1,92 @@
+//
+// ExtendedProtectionPolicyElement.cs
+//
+// Author:
+//	Atsushi Enomoto <atsushi at ximian.com>
+//
+// Copyright (C) 2010 Novell, Inc.  http://www.novell.com
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+#if NET_4_0 && CONFIGURATION_DEP
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.ComponentModel;
+using System.Configuration;
+using System.Net;
+using System.Net.Security;
+using System.Reflection;
+using System.Runtime.Serialization;
+using System.Text;
+using System.Xml;
+
+namespace System.Security.Authentication.ExtendedProtection.Configuration
+{
+	[MonoTODO]
+	public sealed class ExtendedProtectionPolicyElement : ConfigurationElement
+	{
+		static ConfigurationPropertyCollection properties;
+		static ConfigurationProperty custom_service_names, policy_enforcement, protection_scenario;
+
+		static ExtendedProtectionPolicyElement ()
+		{
+			properties = new ConfigurationPropertyCollection ();
+
+			var t = typeof (ExtendedProtectionPolicyElement);
+			custom_service_names = ConfigUtil.BuildProperty (t, "CustomServiceNames");
+			policy_enforcement = ConfigUtil.BuildProperty (t, "PolicyEnforcement");
+			protection_scenario = ConfigUtil.BuildProperty (t, "ProtectionScenario");
+
+			foreach (var cp in new ConfigurationProperty [] {custom_service_names, policy_enforcement, protection_scenario})
+				properties.Add (cp);
+		}
+		
+		[ConfigurationProperty ("customServiceNames")]
+		public ServiceNameElementCollection CustomServiceNames {
+			get { return (ServiceNameElementCollection) this [custom_service_names]; }
+		}
+
+		[ConfigurationProperty ("policyEnforcement")]
+		public PolicyEnforcement PolicyEnforcement {
+			get { return (PolicyEnforcement) this [policy_enforcement]; }
+			set { this [policy_enforcement] = value; }
+		}
+
+		[ConfigurationProperty ("protectionScenario", DefaultValue = ProtectionScenario.TransportSelected)]
+		public ProtectionScenario ProtectionScenario {
+			get { return (ProtectionScenario) this [protection_scenario]; }
+			set { this [protection_scenario] = value; }
+		}
+
+		protected override ConfigurationPropertyCollection Properties {
+			get { return properties; }
+		}
+
+		public ExtendedProtectionPolicy BuildPolicy ()
+		{
+			throw new NotImplementedException ();
+		}
+	}
+}
+
+#endif
diff --git a/mcs/class/System/System.Security.Authentication.ExtendedProtection.Configuration/ServiceNameElement.cs b/mcs/class/System/System.Security.Authentication.ExtendedProtection.Configuration/ServiceNameElement.cs
new file mode 100644
index 0000000..9639488
--- /dev/null
+++ b/mcs/class/System/System.Security.Authentication.ExtendedProtection.Configuration/ServiceNameElement.cs
@@ -0,0 +1,71 @@
+//
+// ServiceNameElement.cs
+//
+// Author:
+//	Atsushi Enomoto <atsushi at ximian.com>
+//
+// Copyright (C) 2010 Novell, Inc.  http://www.novell.com
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+#if NET_4_0 && CONFIGURATION_DEP
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.ComponentModel;
+using System.Configuration;
+using System.Net;
+using System.Net.Security;
+using System.Reflection;
+using System.Runtime.Serialization;
+using System.Text;
+using System.Xml;
+
+namespace System.Security.Authentication.ExtendedProtection.Configuration
+{
+	public sealed class ServiceNameElement : ConfigurationElement
+	{
+		static ConfigurationPropertyCollection properties;
+		static ConfigurationProperty name;
+
+		static ServiceNameElement ()
+		{
+			properties = new ConfigurationPropertyCollection ();
+
+			var t = typeof (ServiceNameElement);
+			name = ConfigUtil.BuildProperty (t, "Name");
+
+			properties.Add (name);
+		}
+		
+		[ConfigurationProperty ("name")]
+		public string Name {
+			get { return (string) this [name]; }
+		}
+
+		protected override ConfigurationPropertyCollection Properties {
+			get { return properties; }
+		}
+	}
+}
+
+#endif
diff --git a/mcs/class/System/System.Security.Authentication.ExtendedProtection.Configuration/ServiceNameElementCollection.cs b/mcs/class/System/System.Security.Authentication.ExtendedProtection.Configuration/ServiceNameElementCollection.cs
new file mode 100644
index 0000000..bc7884f
--- /dev/null
+++ b/mcs/class/System/System.Security.Authentication.ExtendedProtection.Configuration/ServiceNameElementCollection.cs
@@ -0,0 +1,101 @@
+//
+// ServiceNameElementCollection.cs
+//
+// Author:
+//	Atsushi Enomoto <atsushi at ximian.com>
+//
+// Copyright (C) 2010 Novell, Inc.  http://www.novell.com
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+#if NET_4_0 && CONFIGURATION_DEP
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.ComponentModel;
+using System.Configuration;
+using System.Linq;
+using System.Net;
+using System.Net.Security;
+using System.Reflection;
+using System.Runtime.Serialization;
+using System.Text;
+using System.Xml;
+
+namespace System.Security.Authentication.ExtendedProtection.Configuration
+{
+	[ConfigurationCollection (typeof (ServiceNameElement))]
+	public sealed class ServiceNameElementCollection : ConfigurationElementCollection
+	{
+		public ServiceNameElement this [int index] {
+			get { return (ServiceNameElement) BaseGet (index); }
+		}
+
+		public new ServiceNameElement this [string name] {
+			get { return (ServiceNameElement) BaseGet (name); }
+		}
+
+		public void Add (ServiceNameElement element)
+		{
+			throw new NotImplementedException ();
+		}
+
+		public void Clear ()
+		{
+			throw new NotImplementedException ();
+		}
+		
+		protected override ConfigurationElement CreateNewElement ()
+		{
+			return new ServiceNameElement ();
+		}
+		
+		protected override object GetElementKey (ConfigurationElement element)
+		{
+			if (element == null)
+				throw new ArgumentNullException ("element");
+			return ((ServiceNameElement) element).Name;
+		}
+		
+		public int IndexOf (ServiceNameElement element)
+		{
+			throw new NotImplementedException ();
+		}
+		
+		public void Remove (string name)
+		{
+			throw new NotImplementedException ();
+		}
+
+		public void Remove (ServiceNameElement element)
+		{
+			throw new NotImplementedException ();
+		}
+		
+		public void RemoveAt (int index)
+		{
+			throw new NotImplementedException ();
+		}
+	}
+}
+
+#endif
diff --git a/mcs/class/System/System.Security.Authentication.ExtendedProtection/ChannelBindingKind.cs b/mcs/class/System/System.Security.Authentication.ExtendedProtection/ChannelBindingKind.cs
new file mode 100644
index 0000000..bd62e6e
--- /dev/null
+++ b/mcs/class/System/System.Security.Authentication.ExtendedProtection/ChannelBindingKind.cs
@@ -0,0 +1,41 @@
+//
+// ChannelBindingKind.cs 
+//
+// Authors:
+//      Atsushi Enomoto  <atsushi at ximian.com>
+//
+
+//
+// Copyright (C) 2010 Novell, Inc (http://novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+#if NET_4_0
+
+namespace System.Security.Authentication.ExtendedProtection
+{
+	public enum ChannelBindingKind
+	{
+		Unknown,
+		Unique,
+		Endpoint
+	}
+}
+#endif
diff --git a/mcs/class/System/System.Security.Authentication.ExtendedProtection/ExtendedProtectionPolicy.cs b/mcs/class/System/System.Security.Authentication.ExtendedProtection/ExtendedProtectionPolicy.cs
new file mode 100644
index 0000000..3dd7f4b
--- /dev/null
+++ b/mcs/class/System/System.Security.Authentication.ExtendedProtection/ExtendedProtectionPolicy.cs
@@ -0,0 +1,104 @@
+//
+// ExtendedProtectionPolicy.cs 
+//
+// Authors:
+//      Atsushi Enomoto  <atsushi at ximian.com>
+//
+
+//
+// Copyright (C) 2010 Novell, Inc (http://novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+#if NET_4_0
+using System;
+using System.Collections;
+using System.ComponentModel;
+using System.Runtime.Serialization;
+using System.Security.Permissions;
+
+namespace System.Security.Authentication.ExtendedProtection
+{
+	[MonoTODO]
+	[Serializable]
+	[TypeConverter (typeof (ExtendedProtectionPolicyTypeConverter))]
+	public class ExtendedProtectionPolicy : ISerializable
+	{
+		[MonoTODO ("Not implemented.")]
+		public ExtendedProtectionPolicy (PolicyEnforcement policyEnforcement)
+		{
+			// Do not throw NotImplementedException - System.ServiceModel.Channels.HttpTransportBindingElement tests
+			// instantiate this type
+		}
+
+		public ExtendedProtectionPolicy (PolicyEnforcement policyEnforcement, ChannelBinding customChannelBinding)
+		{
+			throw new NotImplementedException ();
+		}
+
+		public ExtendedProtectionPolicy (PolicyEnforcement policyEnforcement, ProtectionScenario protectionScenario, ICollection customServiceNames)
+		{
+			throw new NotImplementedException ();
+		}
+
+		public ExtendedProtectionPolicy (PolicyEnforcement policyEnforcement, ProtectionScenario protectionScenario, ServiceNameCollection customServiceNames)
+		{
+			throw new NotImplementedException ();
+		}
+
+		protected ExtendedProtectionPolicy (SerializationInfo info, StreamingContext context)
+		{
+			throw new NotImplementedException ();
+		}
+
+		public ChannelBinding CustomChannelBinding {
+			get { throw new NotImplementedException (); }
+		}
+
+		public ServiceNameCollection CustomServiceNames {
+			get { throw new NotImplementedException (); }
+		}
+
+		public static bool OSSupportsExtendedProtection {
+			get { throw new NotImplementedException (); }
+		}
+
+		public PolicyEnforcement PolicyEnforcement {
+			get { throw new NotImplementedException (); }
+		}
+
+		public ProtectionScenario ProtectionScenario {
+			get { throw new NotImplementedException (); }
+		}
+
+		[MonoTODO]
+		public override string ToString ()
+		{
+			return base.ToString ();
+		}
+
+		[SecurityPermission (SecurityAction.LinkDemand, SerializationFormatter = true)]
+		void ISerializable.GetObjectData (SerializationInfo info, StreamingContext context)
+		{
+			throw new NotImplementedException ();
+		}
+	}
+}
+#endif
diff --git a/mcs/class/System/System.Security.Authentication.ExtendedProtection/ExtendedProtectionPolicyTypeConverter.cs b/mcs/class/System/System.Security.Authentication.ExtendedProtection/ExtendedProtectionPolicyTypeConverter.cs
new file mode 100644
index 0000000..63dc572
--- /dev/null
+++ b/mcs/class/System/System.Security.Authentication.ExtendedProtection/ExtendedProtectionPolicyTypeConverter.cs
@@ -0,0 +1,52 @@
+//
+// ExtendedProtectionPolicyTypeConverter.cs 
+//
+// Authors:
+//      Atsushi Enomoto  <atsushi at ximian.com>
+//
+
+//
+// Copyright (C) 2010 Novell, Inc (http://novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+#if NET_4_0
+using System;
+using System.ComponentModel;
+using System.Globalization;
+using System.Runtime.Serialization;
+
+namespace System.Security.Authentication.ExtendedProtection
+{
+	[MonoTODO]
+	public class ExtendedProtectionPolicyTypeConverter : TypeConverter
+	{
+		public override bool CanConvertTo (ITypeDescriptorContext context, Type destinationType)
+		{
+			throw new NotImplementedException ();
+		}
+
+		public override object ConvertTo (ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
+		{
+			throw new NotImplementedException ();
+		}
+	}
+}
+#endif
diff --git a/mcs/class/System/System.Security.Authentication.ExtendedProtection/PolicyEnforcement.cs b/mcs/class/System/System.Security.Authentication.ExtendedProtection/PolicyEnforcement.cs
new file mode 100644
index 0000000..2baea55
--- /dev/null
+++ b/mcs/class/System/System.Security.Authentication.ExtendedProtection/PolicyEnforcement.cs
@@ -0,0 +1,41 @@
+//
+// PolicyEnforcement.cs
+//
+// Authors:
+//      Atsushi Enomoto  <atsushi at ximian.com>
+//
+
+//
+// Copyright (C) 2010 Novell, Inc (http://novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+#if NET_4_0
+
+namespace System.Security.Authentication.ExtendedProtection
+{
+	public enum PolicyEnforcement
+	{
+		Never,
+		WhenSupported,
+		Always
+	}
+}
+#endif
diff --git a/mcs/class/System/System.Security.Authentication.ExtendedProtection/ProtectionScenario.cs b/mcs/class/System/System.Security.Authentication.ExtendedProtection/ProtectionScenario.cs
new file mode 100644
index 0000000..5d99a59
--- /dev/null
+++ b/mcs/class/System/System.Security.Authentication.ExtendedProtection/ProtectionScenario.cs
@@ -0,0 +1,40 @@
+//
+// ProtectionScenario.cs
+//
+// Authors:
+//      Atsushi Enomoto  <atsushi at ximian.com>
+//
+
+//
+// Copyright (C) 2010 Novell, Inc (http://novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+#if NET_4_0
+
+namespace System.Security.Authentication.ExtendedProtection
+{
+	public enum ProtectionScenario
+	{
+		TransportSelected,
+		TrustedProxy
+	}
+}
+#endif
diff --git a/mcs/class/System/System.Security.Authentication.ExtendedProtection/ServiceNameCollection.cs b/mcs/class/System/System.Security.Authentication.ExtendedProtection/ServiceNameCollection.cs
new file mode 100644
index 0000000..ec038d7
--- /dev/null
+++ b/mcs/class/System/System.Security.Authentication.ExtendedProtection/ServiceNameCollection.cs
@@ -0,0 +1,57 @@
+//
+// ServiceNameCollection.cs
+//
+// Authors:
+//      Atsushi Enomoto  <atsushi at ximian.com>
+//
+
+//
+// Copyright (C) 2010 Novell, Inc (http://novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+#if NET_4_0
+using System;
+using System.Collections;
+
+namespace System.Security.Authentication.ExtendedProtection
+{
+	[MonoTODO]
+	[Serializable]
+	public class ServiceNameCollection : ReadOnlyCollectionBase
+	{
+		public ServiceNameCollection (ICollection items)
+		{
+			throw new NotImplementedException ();
+		}
+
+		public ServiceNameCollection Merge (IEnumerable serviceNames)
+		{
+			throw new NotImplementedException ();
+		}
+		
+		public ServiceNameCollection Merge (string serviceName)
+		{
+			throw new NotImplementedException ();
+		}
+	}
+}
+
+#endif
diff --git a/mcs/class/System/System.Security.Cryptography.X509Certificates/X509_2_1_bootstrap.cs b/mcs/class/System/System.Security.Cryptography.X509Certificates/X509_2_1_bootstrap.cs
deleted file mode 100644
index ff8ba92..0000000
--- a/mcs/class/System/System.Security.Cryptography.X509Certificates/X509_2_1_bootstrap.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-namespace System.Security.Cryptography.X509Certificates {
-
-	public class X509Certificate2 : X509Certificate {
-		public X509Certificate2 (byte[] rawData)
-		{
-		}
-	}
-
-	public class X509Chain {
-		public bool Build (X509Certificate2 cert)
-		{
-			return false;
-		}
-	}
-}
-
diff --git a/mcs/class/System/System.Text.RegularExpressions/BaseMachine.cs b/mcs/class/System/System.Text.RegularExpressions/BaseMachine.cs
index 1d89c4e..d6104cc 100644
--- a/mcs/class/System/System.Text.RegularExpressions/BaseMachine.cs
+++ b/mcs/class/System/System.Text.RegularExpressions/BaseMachine.cs
@@ -31,6 +31,7 @@
 using System;
 using System.Collections;
 using System.Collections.Specialized;
+using System.Collections.Generic;
 
 namespace System.Text.RegularExpressions
 {
@@ -49,7 +50,7 @@ namespace System.Text.RegularExpressions
 
 		virtual public string [] Split (Regex regex, string input, int count, int startat)
 		{
-			ArrayList splits = new ArrayList ();
+			var splits = new List<string> ();
 			if (count == 0)
 				count = Int32.MaxValue;
 
@@ -88,7 +89,7 @@ namespace System.Text.RegularExpressions
 			if (!regex.RightToLeft && ptr <= input.Length)
 				splits.Add (input.Substring (ptr));
 
-			return (string []) splits.ToArray (typeof (string));
+			return splits.ToArray ();
 		}
 
 		virtual public Match Scan (Regex regex, string text, int start, int end)
diff --git a/mcs/class/System/System.Text.RegularExpressions/ChangeLog b/mcs/class/System/System.Text.RegularExpressions/ChangeLog
index 56f7381..0ecbf8e 100644
--- a/mcs/class/System/System.Text.RegularExpressions/ChangeLog
+++ b/mcs/class/System/System.Text.RegularExpressions/ChangeLog
@@ -1,3 +1,12 @@
+2011-01-06  Zoltan Varga  <vargaz at gmail.com>
+
+	Change some usages of ArrayList to List<T> to avoid calls to the
+	slow ArrayList.ToArray(Type) method.
+
+2010-10-15  Marek Safar  <marek.safar at gmail.com>
+
+	Clean up few more warnings
+
 2010-07-20  Miguel de Icaza  <miguel at novell.com>
 
 	* parser.cs (ParseEscape): Now parses with some context, whether
diff --git a/mcs/class/System/System.Text.RegularExpressions/ChangeLog b/mcs/class/System/System.Text.RegularExpressions/ChangeLog.old
similarity index 100%
copy from mcs/class/System/System.Text.RegularExpressions/ChangeLog
copy to mcs/class/System/System.Text.RegularExpressions/ChangeLog.old
diff --git a/mcs/class/System/System.Text.RegularExpressions/parser.cs b/mcs/class/System/System.Text.RegularExpressions/parser.cs
index 98cc0e8..ff6a6e5 100644
--- a/mcs/class/System/System.Text.RegularExpressions/parser.cs
+++ b/mcs/class/System/System.Text.RegularExpressions/parser.cs
@@ -860,7 +860,6 @@ namespace System.Text.RegularExpressions.Syntax {
 			case '1': case '2': case '3': case '4': case '5':
 			case '6': case '7': case '8': case '9': {
 				ptr --;
-				int oldptr = ptr;
 				int n = ParseNumber (10, 1, 0);
 				if (n < 0) {
 					ptr = p;
diff --git a/mcs/class/System/System.Threading/Barrier.cs b/mcs/class/System/System.Threading/Barrier.cs
index a1e7efb..b448add 100644
--- a/mcs/class/System/System.Threading/Barrier.cs
+++ b/mcs/class/System/System.Threading/Barrier.cs
@@ -24,7 +24,7 @@
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
 
 using System;
 
diff --git a/mcs/class/System/System.Threading/BarrierPostPhaseException.cs b/mcs/class/System/System.Threading/BarrierPostPhaseException.cs
index 3d22cbf..a3fa446 100644
--- a/mcs/class/System/System.Threading/BarrierPostPhaseException.cs
+++ b/mcs/class/System/System.Threading/BarrierPostPhaseException.cs
@@ -24,7 +24,7 @@
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
 
 using System;
 using System.Runtime.Serialization;
diff --git a/mcs/class/System/System.Threading/SemaphoreFullException.cs b/mcs/class/System/System.Threading/SemaphoreFullException.cs
index 4b8b237..6995b35 100644
--- a/mcs/class/System/System.Threading/SemaphoreFullException.cs
+++ b/mcs/class/System/System.Threading/SemaphoreFullException.cs
@@ -26,7 +26,7 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if (!NET_4_0 && NET_2_0 && !INSIDE_CORLIB) || ((NET_4_0 || BOOTSTRAP_NET_4_0) && INSIDE_CORLIB)
+#if (!NET_4_0 && !INSIDE_CORLIB) || (NET_4_0 && INSIDE_CORLIB)
 
 using System.Runtime.InteropServices;
 using System.Runtime.Serialization;
@@ -34,7 +34,7 @@ using System.Runtime.CompilerServices;
 
 namespace System.Threading {
 
-#if (NET_4_0 || BOOTSTRAP_NET_4_0) && INSIDE_CORLIB
+#if NET_4_0 && INSIDE_CORLIB
 	[TypeForwardedFrom (Consts.AssemblySystem_2_0)]
 #endif
 	[ComVisible (false)]
@@ -63,7 +63,7 @@ namespace System.Threading {
 	}
 
 }
-#elif (NET_4_0 || BOOTSTRAP_NET_4_0) && !INSIDE_CORLIB
+#elif NET_4_0 && !INSIDE_CORLIB
 using System.Runtime.CompilerServices;
 using System.Threading;
 
diff --git a/mcs/class/System/System.dll.sources b/mcs/class/System/System.dll.sources
index ec5a4b9..90be83c 100644
--- a/mcs/class/System/System.dll.sources
+++ b/mcs/class/System/System.dll.sources
@@ -209,6 +209,7 @@ System.ComponentModel/DataObjectFieldAttribute.cs
 System.ComponentModel/DataObjectMethodAttribute.cs
 System.ComponentModel/DataObjectMethodType.cs
 System.ComponentModel/DateTimeConverter.cs
+System.ComponentModel/DateTimeOffsetConverter.cs
 System.ComponentModel/DecimalConverter.cs
 System.ComponentModel/DefaultBindingPropertyAttribute.cs
 System.ComponentModel/DefaultEventAttribute.cs
@@ -239,6 +240,8 @@ System.ComponentModel.Design/DesignerVerbCollection.cs
 System.ComponentModel.Design/DesignerVerb.cs
 System.ComponentModel.Design/DesigntimeLicenseContext.cs
 System.ComponentModel.Design/DesigntimeLicenseContextSerializer.cs
+System.ComponentModel.Design/IDesignerHostTransactionState.cs
+System.ComponentModel.Design/TypeDescriptionProviderService.cs
 System.ComponentModel/DesignerAttribute.cs
 System.ComponentModel/DesignerCategoryAttribute.cs
 System.ComponentModel/DesignerSerializationVisibilityAttribute.cs
@@ -279,6 +282,7 @@ System.ComponentModel.Design.Serialization/ContextStack.cs
 System.ComponentModel.Design.Serialization/DesignerLoader.cs
 System.ComponentModel.Design.Serialization/DesignerSerializerAttribute.cs
 System.ComponentModel.Design.Serialization/IDesignerLoaderHost.cs
+System.ComponentModel.Design.Serialization/IDesignerLoaderHost2.cs
 System.ComponentModel.Design.Serialization/IDesignerLoaderService.cs
 System.ComponentModel.Design.Serialization/IDesignerSerializationManager.cs   
 System.ComponentModel.Design.Serialization/IDesignerSerializationProvider.cs
@@ -675,6 +679,7 @@ System.Net/CookieCollection.cs
 System.Net/CookieContainer.cs
 System.Net/Cookie.cs
 System.Net/CookieException.cs
+System.Net/CookieParser.cs
 System.Net/CredentialCache.cs
 System.Net/DecompressionMethods.cs
 System.Net/DefaultCertificatePolicy.cs
@@ -887,6 +892,16 @@ System.Security.Authentication/HashAlgorithmType.cs
 System.Security.Authentication/SslProtocols.cs
 System.Security.Authentication/InvalidCredentialException.cs
 System.Security.Authentication.ExtendedProtection/ChannelBinding.cs
+System.Security.Authentication.ExtendedProtection/ChannelBindingKind.cs
+System.Security.Authentication.ExtendedProtection/ExtendedProtectionPolicy.cs
+System.Security.Authentication.ExtendedProtection/ExtendedProtectionPolicyTypeConverter.cs
+System.Security.Authentication.ExtendedProtection/PolicyEnforcement.cs
+System.Security.Authentication.ExtendedProtection/ProtectionScenario.cs
+System.Security.Authentication.ExtendedProtection/ServiceNameCollection.cs
+System.Security.Authentication.ExtendedProtection.Configuration/ConfigUtil.cs
+System.Security.Authentication.ExtendedProtection.Configuration/ExtendedProtectionPolicyElement.cs
+System.Security.Authentication.ExtendedProtection.Configuration/ServiceNameElement.cs
+System.Security.Authentication.ExtendedProtection.Configuration/ServiceNameElementCollection.cs
 System.Security.Cryptography/AsnEncodedDataCollection.cs
 System.Security.Cryptography/AsnEncodedData.cs
 System.Security.Cryptography/AsnEncodedDataEnumerator.cs
diff --git a/mcs/class/System/System/ChangeLog b/mcs/class/System/System/ChangeLog
index e690585..8967b72 100644
--- a/mcs/class/System/System/ChangeLog
+++ b/mcs/class/System/System/ChangeLog
@@ -1,3 +1,232 @@
+2010-11-18  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* System/Uri.cs: Add support for 'safe' unescaping rules *
+	System/UriParser.cs: Add support for SafeUnescaped in Format.
+	Avoid escaping the # when adding a fragment at the end of the Uri
+
+2010-10-15  Marek Safar  <marek.safar at gmail.com>
+
+	Clean up few more warnings
+
+2010-09-27  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* System/Uri.cs: Avoid the culture-specific String.EndsWith when
+	reducing an URI
+
+2010-09-25  Miguel de Icaza  <miguel at gnome.org>
+
+	Improve the Uri parsing speed
+
+	This affects MonoTouch startup as our dictionaries are a little
+	bit slow to be created now that we use Dictionary<> hashes for
+	switch statements.
+
+	Some timings:
+
+	Using a simple block of if's is twice as slow as the compiler
+	generated switch statement. But using this tuned code is faster
+	than the compiler generated code, with a million loops on x86-64:
+
+	With "http": .10 vs .51 (first check) with "https": .16 vs .51
+	(second check) with "foo": .22 vs .31 (never found) with "mailto":
+	.12 vs .51 (last check)
+
+2010-09-24  Andreia Gaita  <shana at jitted.com>
+
+	Fix UriParser.GetComponents for the PathAndQuery case
+
+	PathAndQuery should always return the path starting with /, even
+	when it's empty
+
+2010-09-22  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* System/Uri.cs: Fix escaping non-ascii host names. Avoid memory
+	allocations (UTF8.GetBytes) when it is not necessary while
+	escaping.
+
+2010-09-21  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* System/Uri.cs: Update some NET_4_0 to include MOONLIGHT too
+
+2010-09-21  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* System/Uri.cs: A bit more strict when parsing the port number
+
+2010-09-21  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* System/Uri.cs: Fix host name checks. Delay port check until the
+	host name is checked (compatibility). Fix exception messages to
+	match the expected values from the NCL tests.
+
+2010-09-20  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* System/Uri.cs: Unescape LocalPath
+
+2010-09-20  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* System/Uri.cs: Compute the expected OriginalString when an
+	absolute URI is merged with a (String or Uri) relative Uri to
+	create a new Uri instance. Keep original fragment around for
+	ToString
+
+2010-09-20  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* System/Uri.cs: Exception message does not specify Authority when
+	a file:// URI is parsed
+
+2010-09-20  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* System/Uri.cs: An empty username/password is treated differently
+	than having none, i.e. the '@' character is kept present in the
+	URI
+
+2010-09-20  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* System/Uri.cs: IsUnc returns true for file:/// URI on Windows
+	only. This makes us closer to Mac-behavior (see NCL tests) since
+	the other properties, e.g. LocalPath, match this. Also fix some
+	exception text where the values are checked by some test cases.
+
+2010-09-20  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* System/Uri.cs: Fix merging URI where a relative URI contains a
+	':' but no valid scheme
+
+2010-09-17  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* System/Uri.cs: While parsing only escape the path for absolute
+	URI. Do not unescape relative URI in ToString and avoid calling
+	AppendQueryAndFragment on them (relative) since both are not
+	parsed as such.
+
+2010-09-17  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* System/Uri.cs: Fix DnsSafeHost for IPv6 addresses, removing the
+	[] brackets and adding, when available, the scope id
+
+2010-09-17  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* System/Uri.cs: Fix parsing the port/host when a ':' is present
+	without a port number on non-file:// URI
+
+2010-09-17  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* System/UriBuilder.cs: Fix typo from previous change
+
+2010-09-17  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* System/UriBuilder.cs: Refactor constructors to share
+	Initialization methods. Allow a second chance to .ctor(string) to
+	parse an URI by assuming it's an HTTP URI
+
+2010-09-17  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* System/UriBuilder.cs: Fix Host property to add the missing
+	brackets on IPv6 address (if missing from input)
+
+2010-09-17  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* System/UriBuilder.cs: Update UriBuilder.Path once the Uri has
+	been created using Uri.AbsolutePath
+
+2010-09-16  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* System/UriBuilder.cs: Update UriBuilder.Host once the Uri has
+	been created
+
+2010-09-16  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* System/Uri.cs: Add EscapeCommonHexBracketsQuery constant since ?
+	also needs to be escaped from UriBuilder * System/UriBuilder.cs:
+	Fix Equals (escaping '?') and UserInfo. Fix NRE in ctor that was
+	fixed in FX4. Drop NET_2_0 defines.
+
+2010-09-16  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* System/UriBuilder.cs: Fix line endings
+
+2010-09-16  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* System/Uri.cs (Reduce): Process %2E while reducing a path.
+	Avoid, when possible, the creation of StringBuilder and replace
+	ArrayList with generics
+
+2010-09-16  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* System/Uri.cs: Fix TryCreate overloads wrt NotWorking unit tests
+
+2010-09-16  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* System/Uri.cs: Fix 'file' URI since they can't have a query
+
+2010-09-15  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* System/Uri.cs: Fix 'ftp' support, mostly same fixes as 'nntp'
+
+2010-09-15  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* System/Uri.cs: Fix 'nntp' support which is close to 'news' (no
+	query) but still has an Host, Autority, Port...
+
+2010-09-15  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* System/Uri.cs: Remove condition/code wrt 'news:' that occurs
+	after the new "shortcut".
+
+2010-09-15  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* System/Uri.cs: Make it easier to reuse EscapeString without
+	adding new boolean parameters. Shortcut parsing for 'news' since
+	it's simpler (no query, host, authority...) Avoid creating
+	StringBuilder instance when [un]escape-ing empty strings *
+	System/UriBuilder.cs: Adjust for EscapeString API change *
+	System/UriParser.cs: Fix default news port and adjust for
+	EscapeString API change
+
+2010-09-15  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* System/Uri.cs: Keep the cached 'segments' as a List<string> and
+	return a new array (ToArray) when the Segment propery is called.
+
+2010-09-15  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* System/Uri.cs: Fix ToString (Unescape) to ignore '\\' and let it
+	be outputed as %5C * Test/System/UriTest2.cs: Add test case for
+	above
+
+2010-09-15  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* System/Uri.cs: Reimplement Segment property to reduce copying
+	and string allocations. Fix case with slashes (separate, not
+	single, segments)
+
+2010-09-14  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* System/Uri.cs: Handle multiple starting slash correctly *
+	Test/System/UriTest2.cs: Add test cases with multiple slashes
+
+2010-09-14  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* System/Uri.cs: Fix Segments and username/password (unsupported)
+	on file:// URI * Test/System/UriTest.cs: Remove
+	[Category("NotWorking")] from some tests and add a few additional
+	(helpful) asserts.
+
+2010-09-14  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* System/Uri.cs: For most scheme a drive letter is converted into
+	an host name (minus the ':' character)
+
+2010-09-14  Atsushi Eno  <atsushi at ximian.com>
+
+	Remove Console.WriteLine.
+
+2010-09-13  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* System/Uri.cs: Fix some "bugs" that are not part of FX4 anymore.
+	Change how Query/Fragment are merged to match FX4 (while keeping
+	it compatible with buggy FX2 under the NET_2_0 profile)
+
 2010-08-31  Rolf Bjarne Kvinge  <RKvinge at novell.com>
 
 	Trim the uri in UriParser::GetComponents, just like we do in
diff --git a/mcs/class/System/System/Uri.cs b/mcs/class/System/System/Uri.cs
index d950223..a03bbc1 100644
--- a/mcs/class/System/System/Uri.cs
+++ b/mcs/class/System/System/Uri.cs
@@ -45,6 +45,7 @@ using System.Net;
 using System.Runtime.Serialization;
 using System.Text;
 using System.Collections;
+using System.Collections.Generic;
 using System.Globalization;
 
 //
@@ -76,12 +77,13 @@ namespace System {
 		private string path = String.Empty;
 		private string query = String.Empty;
 		private string fragment = String.Empty;
-		private string userinfo = String.Empty;
+		private string userinfo;
 		private bool isUnc;
 		private bool isOpaquePart;
 		private bool isAbsoluteUri = true;
+		private long scope_id;
 
-		private string [] segments;
+		private List<string> segments;
 		
 		private bool userEscaped;
 		private string cachedAbsoluteUri;
@@ -90,6 +92,9 @@ namespace System {
 		private int cachedHashCode;
 
 		private static readonly string hexUpperChars = "0123456789ABCDEF";
+		private static readonly string [] Empty = new string [0];
+		private static bool isWin32 = (Path.DirectorySeparatorChar == '\\');
+
 	
 		// Fields
 		
@@ -266,11 +271,19 @@ namespace System {
 					// 3) the relative URI path is absolute.
 					if (String.CompareOrdinal (baseUri.Scheme, 0, relativeUri, 0, pos) != 0 ||
 					    !IsPredefinedScheme (baseUri.Scheme) ||
-					    relativeUri.Length > pos + 1 &&
-					    relativeUri [pos + 1] == '/') {
-						source = relativeUri;
-						ParseUri (UriKind.Absolute);
-						return;
+					    (relativeUri.Length > pos + 1 && relativeUri [pos + 1] == '/')) {
+						Uri tmp = null;
+						if (Uri.TryCreate (relativeUri, UriKind.Absolute, out tmp)) {
+							source = relativeUri;
+							ParseUri (UriKind.Absolute);
+							return;
+						} else if (pos == 1) {
+							// special case as this looks like a windows path
+							string msg = ParseAsWindowsAbsoluteFilePath (relativeUri);
+							if (msg != null)
+								throw new UriFormatException (msg);
+						}
+						// otherwise continue with 'full' relativeUri
 					}
 					else
 						relativeUri = relativeUri.Substring (pos + 1);
@@ -285,31 +298,41 @@ namespace System {
 			this.isUnixFilePath = baseUri.isUnixFilePath;
 			this.isOpaquePart = baseUri.isOpaquePart;
 
-			if (relativeUri == String.Empty) {
+			if (relativeUri.Length == 0) {
 				this.path = baseUri.path;
 				this.query = baseUri.query;
 				this.fragment = baseUri.fragment;
 				return;
 			}
-			
+
 			// 8 fragment
 			// Note that in relative constructor, file URI cannot handle '#' as a filename character, but just regarded as a fragment identifier.
+			string original_fragment = String.Empty;
 			pos = relativeUri.IndexOf ('#');
 			if (pos != -1) {
+				original_fragment = relativeUri.Substring (pos);
 				if (userEscaped)
-					fragment = relativeUri.Substring (pos);
+					fragment = original_fragment;
 				else
 					fragment = "#" + EscapeString (relativeUri.Substring (pos+1));
-				relativeUri = relativeUri.Substring (0, pos);
+				relativeUri = pos == 0 ? String.Empty : relativeUri.Substring (0, pos);
 			}
 
+			bool consider_query = false;
+
 			// 6 query
 			pos = relativeUri.IndexOf ('?');
 			if (pos != -1) {
 				query = relativeUri.Substring (pos);
 				if (!userEscaped)
 					query = EscapeString (query);
-				relativeUri = relativeUri.Substring (0, pos);
+#if !NET_4_0 && !MOONLIGHT
+				consider_query = query.Length > 0;
+#endif
+				relativeUri = pos == 0 ? String.Empty : relativeUri.Substring (0, pos);
+			} else if (relativeUri.Length == 0) {
+				// if there is no relative path then we keep the Query and Fragment from the absolute
+				query = baseUri.query;
 			}
 
 			if (relativeUri.Length > 0 && relativeUri [0] == '/') {
@@ -327,18 +350,17 @@ namespace System {
 			
 			// par 5.2 step 6 a)
 			path = baseUri.path;
-#if NET_4_0
-			if (relativeUri.Length > 0) {
-#else
-			if (relativeUri.Length > 0 || query.Length > 0) {
-#endif
+			if ((relativeUri.Length > 0) || consider_query) {
 				pos = path.LastIndexOf ('/');
 				if (pos >= 0) 
 					path = path.Substring (0, pos + 1);
 			}
 
-			if(relativeUri.Length == 0)
+			if (relativeUri.Length == 0) {
+				// when merging URI the OriginalString is not quite original
+				source = GetLeftPart (UriPartial.Authority) + query + original_fragment;
 				return;
+			}
 	
 			// 6 b)
 			path += relativeUri;
@@ -393,33 +415,33 @@ namespace System {
 			}
 			
 			// 6 g)
-			while (path.StartsWith ("/../"))
+			while (path.StartsWith ("/../", StringComparison.Ordinal))
 				path = path.Substring (3);
 			
 			if (!userEscaped)
 				path = EscapeString (path);
-		}		
+
+			// when merging URI the OriginalString is not quite original
+			source = GetLeftPart (UriPartial.Authority) + path + query + original_fragment;
+		}
 		
 		// Properties
 		
 		public string AbsolutePath { 
 			get {
 				EnsureAbsoluteUri ();
-				switch (Scheme) {
-				case "mailto":
-				case "file":
+				if (scheme == "mailto" || scheme == "file")
 					// faster (mailto) and special (file) cases
 					return path;
-				default:
-					if (path.Length == 0) {
-						string start = Scheme + SchemeDelimiter;
-						if (path.StartsWith (start))
-							return "/";
-						else
-							return String.Empty;
-					}
-					return path;
+				
+				if (path.Length == 0) {
+					string start = scheme + SchemeDelimiter;
+					if (path.StartsWith (start, StringComparison.Ordinal))
+						return "/";
+					else
+						return String.Empty;
 				}
+				return path;
 			}
 		}
 
@@ -465,12 +487,10 @@ namespace System {
 				UriHostNameType ret = CheckHostName (Host);
 				if (ret != UriHostNameType.Unknown)
 					return ret;
-				switch (Scheme) {
-				case "mailto":
+
+				if (scheme == "mailto")
 					return UriHostNameType.Basic;
-				default:
-					return (IsFile) ? UriHostNameType.Basic : ret;
-				}
+				return (IsFile) ? UriHostNameType.Basic : ret;
 			} 
 		}
 
@@ -524,24 +544,34 @@ namespace System {
 			} 
 		}
 
+		private bool IsLocalIdenticalToAbsolutePath ()
+		{
+			if (IsFile)
+				return false;
+
+			if ((scheme == Uri.UriSchemeNews) || (scheme == Uri.UriSchemeNntp) || (scheme == Uri.UriSchemeFtp))
+				return false;
+
+			return IsWellFormedOriginalString ();
+		}
+
 		public string LocalPath { 
 			get {
 				EnsureAbsoluteUri ();
 				if (cachedLocalPath != null)
 					return cachedLocalPath;
-				if (!IsFile)
-					return AbsolutePath;
 
-				bool windows = (path.Length > 3 && path [1] == ':' &&
-						(path [2] == '\\' || path [2] == '/'));
+				if (IsLocalIdenticalToAbsolutePath ()) {
+					cachedLocalPath = Unescape (AbsolutePath);
+					return cachedLocalPath;
+				}
 
 				if (!IsUnc) {
 					string p = Unescape (path);
-					bool replace = windows;
-#if ONLY_1_1
-					replace |= (System.IO.Path.DirectorySeparatorChar == '\\');
-#endif
-					if (replace)
+					bool windows = (path.Length > 3 && path [1] == ':' &&
+						(path [2] == '\\' || path [2] == '/'));
+
+					if (windows)
 						cachedLocalPath = p.Replace ('/', '\\');
 					else
 						cachedLocalPath = p;
@@ -602,40 +632,51 @@ namespace System {
 		public string [] Segments { 
 			get { 
 				EnsureAbsoluteUri ();
+
+				// return a (pre-allocated) empty array
+				if (path.Length == 0)
+					return Empty;
+				// do not return the original array (since items can be changed)
 				if (segments != null)
-					return segments;
+					return segments.ToArray ();
 
-				if (path.Length == 0) {
-					segments = new string [0];
-					return segments;
+				List<string> list = new List<string> ();
+				StringBuilder current = new StringBuilder ();
+				for (int i = 0; i < path.Length; i++) {
+					switch (path [i]) {
+					case '/':
+					case '\\':
+						current.Append (path [i]);
+						list.Add (current.ToString ());
+						current.Length = 0;
+						break;
+					case '%':
+						if ((i < path.Length - 2) && (path [i + 1] == '5' && path [i + 2] == 'C')) {
+							current.Append ("%5C");
+							list.Add (current.ToString ());
+							current.Length = 0;
+							i += 2;
+						} else {
+							current.Append ('%');
+						}
+						break;
+					default:
+						current.Append (path [i]);
+						break;
+					}
 				}
 
-				string [] parts = path.Split ('/');
-				segments = parts;
-				bool endSlash = path.EndsWith ("/");
-				if (parts.Length > 0 && endSlash) {
-					string [] newParts = new string [parts.Length - 1];
-					Array.Copy (parts, 0, newParts, 0, parts.Length - 1);
-					parts = newParts;
-				}
+				if (current.Length > 0)
+					list.Add (current.ToString ());
 
-				int i = 0;
-				if (IsFile && path.Length > 1 && path [1] == ':') {
-					string [] newParts = new string [parts.Length + 1];
-					Array.Copy (parts, 1, newParts, 2, parts.Length - 1);
-					parts = newParts;
-					parts [0] = path.Substring (0, 2);
-					parts [1] = String.Empty;
-					i++;
+				if (IsFile && (list.Count > 0)) {
+					string first = list [0];
+					if ((first.Length > 1) && (first [1] == ':')) {
+						list.Insert (0, "/");
+					}
 				}
-				
-				int end = parts.Length;
-				for (; i < end; i++) 
-					if (i != end - 1 || endSlash)
-						parts [i] += '/';
-
-				segments = parts;
-				return segments;
+				segments = list;
+				return segments.ToArray ();
 			} 
 		}
 
@@ -646,15 +687,20 @@ namespace System {
 		public string UserInfo { 
 			get { 
 				EnsureAbsoluteUri ();
-				return userinfo; 
+				return userinfo == null ? String.Empty : userinfo;
 			}
 		}
 		
-		[MonoTODO ("add support for IPv6 address")]
 		public string DnsSafeHost {
 			get {
 				EnsureAbsoluteUri ();
-				return Unescape (Host);
+				string host = Host;
+				if (HostNameType == UriHostNameType.IPv6) {
+					host = Host.Substring (1, Host.Length - 2);
+					if (scope_id != 0)
+						host += "%" + scope_id.ToString ();
+				}
+				return Unescape (host);
 			}
 		}
 
@@ -728,6 +774,9 @@ namespace System {
 					if (!Char.IsLetterOrDigit (c))
 						return false;
 				} else if (c == '.') {
+					// www..host.com is bad
+					if (i + 1 < len && name [i + 1] == '.')
+						return false;
 					count = 0;
 				} else if (!Char.IsLetterOrDigit (c) && c != '-' && c != '_') {
 					return false;
@@ -860,7 +909,7 @@ namespace System {
 				s.Append (GetOpaqueWiseSchemeDelimiter ());
 				if (path.Length > 1 && path [1] == ':' && (Uri.UriSchemeFile == scheme)) 
 					s.Append ('/');  // win32 file
-				if (userinfo.Length > 0) 
+				if (userinfo != null) 
 					s.Append (userinfo).Append ('@');
 				s.Append (host);
 				defaultPort = GetDefaultPort (scheme);
@@ -873,7 +922,7 @@ namespace System {
 				sb.Append (GetOpaqueWiseSchemeDelimiter ());
 				if (path.Length > 1 && path [1] == ':' && (Uri.UriSchemeFile == scheme)) 
 					sb.Append ('/');  // win32 file
-				if (userinfo.Length > 0) 
+				if (userinfo != null) 
 					sb.Append (userinfo).Append ('@');
 				sb.Append (host);
 				defaultPort = GetDefaultPort (scheme);
@@ -881,15 +930,10 @@ namespace System {
 					sb.Append (':').Append (port);
 
 				if (path.Length > 0) {
-					switch (Scheme) {
-					case "mailto":
-					case "news":
+					if (scheme == "mailto" || scheme == "news")
 						sb.Append (path);
-						break;
-					default:
-						sb.Append (Reduce (path, CompactEscaped (Scheme)));
-						break;
-					}
+					else 
+						sb.Append (Reduce (path, CompactEscaped (scheme)));
 				}
 				return sb.ToString ();
 			}
@@ -960,9 +1004,10 @@ namespace System {
 		//
 		public Uri MakeRelativeUri (Uri uri)
 		{
+#if NET_4_0 || MOONLIGHT
 			if (uri == null)
 				throw new ArgumentNullException ("uri");
-
+#endif
 			if (Host != uri.Host || Scheme != uri.Scheme)
 				return uri;
 
@@ -1019,11 +1064,11 @@ namespace System {
 		void AppendQueryAndFragment (ref string result)
 		{
 			if (query.Length > 0) {
-				string q = query [0] == '?' ? '?' + Unescape (query.Substring (1), false) : Unescape (query, false);
+				string q = query [0] == '?' ? '?' + Unescape (query.Substring (1), true, false) : Unescape (query, false);
 				result += q;
 			}
 			if (fragment.Length > 0)
-				result += fragment;
+				result += Unescape (fragment, true, false);
 		}
 		
 		public override string ToString () 
@@ -1031,14 +1076,14 @@ namespace System {
 			if (cachedToString != null) 
 				return cachedToString;
 
-			if (isAbsoluteUri)
+			if (isAbsoluteUri) {
 				cachedToString = Unescape (GetLeftPart (UriPartial.Path), true);
-			else {
+				AppendQueryAndFragment (ref cachedToString);
+			} else {
 				// Everything is contained in path in this case. 
-				cachedToString = Unescape (path);
+				cachedToString = path;
 			}
 
-			AppendQueryAndFragment (ref cachedToString);
 			return cachedToString;
 		}
 
@@ -1073,12 +1118,28 @@ namespace System {
 		protected static string EscapeString (string str) 
 #endif
 		{
-			return EscapeString (str, false, true, true);
+			return EscapeString (str, Uri.EscapeCommonHexBrackets);
 		}
-		
-		internal static string EscapeString (string str, bool escapeReserved, bool escapeHex, bool escapeBrackets) 
+
+		private const string EscapeCommon = "<>%\"{}|\\^`";
+		private const string EscapeReserved = ";/?:@&=+$,";
+		private const string EscapeFragment = "#";
+		private const string EscapeBrackets = "[]";
+
+		private const string EscapeNews = EscapeCommon + EscapeBrackets + "?";
+		private const string EscapeCommonHex = EscapeCommon + EscapeFragment;
+		private const string EscapeCommonBrackets = EscapeCommon + EscapeBrackets;
+		internal const string EscapeCommonHexBrackets = EscapeCommon + EscapeFragment + EscapeBrackets;
+		internal const string EscapeCommonHexBracketsQuery = EscapeCommonHexBrackets + "?";
+
+		internal static string EscapeString (string str, string escape)
 		{
-			if (str == null)
+			return EscapeString (str, escape, true);
+		}
+
+		internal static string EscapeString (string str, string escape, bool nonAsciiEscape) 
+		{
+			if (String.IsNullOrEmpty (str))
 				return String.Empty;
 			
 			StringBuilder s = new StringBuilder ();
@@ -1102,18 +1163,22 @@ namespace System {
 					continue;
 				}
 
-				byte [] data = Encoding.UTF8.GetBytes (new char[] {str[i]});
-				int length = data.Length;
-				for (int j = 0; j < length; j++) {
-					char c = (char) data [j];
-					if ((c <= 0x20) || (c >= 0x7f) || 
-					    ("<>%\"{}|\\^`".IndexOf (c) != -1) ||
-					    (escapeHex && (c == '#')) ||
-					    (escapeBrackets && (c == '[' || c == ']')) ||
-					    (escapeReserved && (";/?:@&=+$,".IndexOf (c) != -1))) {
-						s.Append (HexEscape (c));
-						continue;
-					}	
+				char c = str [i];
+				bool outside_limited_ascii = ((c <= 0x20) || (c >= 0x7f));
+				bool needs_escape = (escape.IndexOf (c) != -1);
+				if (nonAsciiEscape && outside_limited_ascii) {
+					byte [] data = Encoding.UTF8.GetBytes (new char [] { c });
+					int length = data.Length;
+					for (int j = 0; j < length; j++) {
+						c = (char) data [j];
+						if (needs_escape || nonAsciiEscape)
+							s.Append (HexEscape (c));
+						else
+							s.Append (c);
+					}
+				} else if (needs_escape) {
+					s.Append (HexEscape (c));
+				} else {
 					s.Append (c);
 				}
 			}
@@ -1136,15 +1201,15 @@ namespace System {
 			if (userEscaped)
 				return;
 
-			host = EscapeString (host, false, true, false);
+			// non-ascii characters are not escaped for the host name
+			host = EscapeString (host, EscapeCommonHex, false);
 			if (host.Length > 1 && host [0] != '[' && host [host.Length - 1] != ']') {
 				// host name present (but not an IPv6 address)
 				host = host.ToLower (CultureInfo.InvariantCulture);
 			}
 
-			if (path.Length > 0) {
+			if (isAbsoluteUri && (path.Length > 0))
 				path = EscapeString (path);
-			}
 		}
 
 #if MOONLIGHT
@@ -1154,13 +1219,19 @@ namespace System {
 		protected virtual string Unescape (string str)
 #endif
 		{
-			return Unescape (str, false);
+			return Unescape (str, false, false);
+		}
+
+		internal static string Unescape (string str, bool excludeSpecial)
+		{
+			return Unescape (str, excludeSpecial, excludeSpecial);
 		}
 		
-		internal static string Unescape (string str, bool excludeSpecial) 
+		internal static string Unescape (string str, bool excludeSpecial, bool excludeBackslash) 
 		{
-			if (str == null)
+			if (String.IsNullOrEmpty (str))
 				return String.Empty;
+
 			StringBuilder s = new StringBuilder ();
 			int len = str.Length;
 			for (int i = 0; i < len; i++) {
@@ -1174,6 +1245,8 @@ namespace System {
 						s.Append ("%25");
 					else if (excludeSpecial && x == '?')
 						s.Append ("%3F");
+					else if (excludeBackslash && x == '\\')
+						s.Append ("%5C");
 					else {
 						s.Append (x);
 						if (surrogate != char.MinValue)
@@ -1268,6 +1341,11 @@ namespace System {
 				throw new UriFormatException (s);
 		}
 
+		private bool SupportsQuery ()
+		{
+			return ((scheme != Uri.UriSchemeNntp) && (scheme != Uri.UriSchemeFtp) && (scheme != Uri.UriSchemeFile));
+		}
+
 		//
 		// This parse method will not throw exceptions on failure
 		//
@@ -1331,7 +1409,7 @@ namespace System {
 			} else if (pos == 1) {
 				if (!IsAlpha (uriString [0])) {
 					if (kind == UriKind.Absolute)
-						return "URI scheme must start with a letter.";
+						return "Invalid URI: The URI scheme is not valid.";
 					isAbsoluteUri = false;
 					path = uriString;
 					return null;
@@ -1350,7 +1428,7 @@ namespace System {
 			// Note: different checks in 1.x and 2.0
 			if (!CheckSchemeName (scheme)) {
 				if (kind == UriKind.Absolute)
-					return Locale.GetText ("URI scheme must start with a letter and must consist of one of alphabet, digits, '+', '-' or '.' character.");
+					return "Invalid URI: The URI scheme is not valid.";
 				isAbsoluteUri = false;
 				path = uriString;
 				return null;
@@ -1371,17 +1449,27 @@ namespace System {
 				endpos = pos;
 			}
 
-			// 6 query
-			pos = uriString.IndexOf ('?', startpos, endpos-startpos);
-			if (pos != -1) {
-				query = uriString.Substring (pos, endpos-pos);
-				endpos = pos;
-				if (!userEscaped)
-					query = EscapeString (query);
+			// special case: there is no query part for 'news'
+			if (scheme == Uri.UriSchemeNews) {
+				pos = scheme.Length + 1;
+				path = EscapeString (uriString.Substring (pos, endpos - pos), EscapeNews);
+				return null;
+			}
+
+			// special case: there is no query part for 'nntp', 'file' and 'ftp' but there is an host, port, user...
+			if (SupportsQuery ()) {
+				// 6 query
+				pos = uriString.IndexOf ('?', startpos, endpos-startpos);
+				if (pos != -1) {
+					query = uriString.Substring (pos, endpos-pos);
+					endpos = pos;
+					if (!userEscaped)
+						query = EscapeString (query);
+				}
 			}
 
 			// 3
-			if (IsPredefinedScheme (scheme) && scheme != UriSchemeMailto && scheme != UriSchemeNews && (
+			if (IsPredefinedScheme (scheme) && scheme != UriSchemeMailto && (
 				(endpos-startpos < 2) ||
 				(endpos-startpos >= 2 && uriString [startpos] == '/' && uriString [startpos+1] != '/')))				
 				return "Invalid URI: The Authority/Host could not be parsed.";
@@ -1394,7 +1482,7 @@ namespace System {
 				if (kind == UriKind.Relative)
 					return "Absolute URI when we expected a relative one";
 				
-				if (scheme != UriSchemeMailto && scheme != UriSchemeNews)
+				if (scheme != UriSchemeMailto)
 					startpos += 2;
 
 				if (scheme == UriSchemeFile) {
@@ -1429,21 +1517,21 @@ namespace System {
 			if (unixAbsPath) {
 				pos = -1;
 			} else {
-				pos = uriString.IndexOf ('/', startpos, endpos-startpos);
+				pos = uriString.IndexOf ('/', startpos, endpos - startpos);
 				if (pos == -1 && windowsFilePath)
-					pos = uriString.IndexOf ('\\', startpos, endpos-startpos);
+					pos = uriString.IndexOf ('\\', startpos, endpos - startpos);
 			}
-
-			if (pos == -1) {
-				if ((scheme != Uri.UriSchemeMailto) &&
-#if ONLY_1_1
-				    (scheme != Uri.UriSchemeFile) &&
-#endif
-				    (scheme != Uri.UriSchemeNews))
-					path = "/";
-			} else {
-				path = uriString.Substring (pos, endpos-pos);
+			if (pos != -1) {
+				path = uriString.Substring (pos, endpos - pos);
+				if (!SupportsQuery ()) {
+					if (scheme != Uri.UriSchemeNntp)
+						path = path.Replace ('\\', '/');
+					path = EscapeString (path, EscapeNews);
+				}
 				endpos = pos;
+			} else {
+				if (scheme != Uri.UriSchemeMailto)
+					path = "/";
 			}
 
 			// 4.a user info
@@ -1452,11 +1540,15 @@ namespace System {
 			else
 				pos = uriString.IndexOf ('@', startpos, endpos-startpos);
 			if (pos != -1) {
+				// supplying username / password on a file URI is not supported
+				if (scheme == UriSchemeFile)
+					return "Invalid host";
 				userinfo = uriString.Substring (startpos, pos-startpos);
 				startpos = pos + 1;
 			}
 
 			// 4.b port
+			bool valid_port = true;
 			port = -1;
 			if (unixAbsPath)
 				pos = -1;
@@ -1465,19 +1557,24 @@ namespace System {
 			if (pos != -1 && pos != endpos - 1) {
 				string portStr = uriString.Substring(pos + 1, endpos - (pos + 1));
 				if (portStr.Length > 0 && portStr[portStr.Length - 1] != ']') {
-					if (!Int32.TryParse (portStr, NumberStyles.Integer, CultureInfo.InvariantCulture, out port) ||
+					if (!Int32.TryParse (portStr, NumberStyles.None, CultureInfo.InvariantCulture, out port) ||
 					    port < 0 || port > UInt16.MaxValue)
-						return "Invalid URI: Invalid port number";
-					endpos = pos;
+						valid_port = false; // delay reporting
+					else
+						endpos = pos;
 				} else {
 					if (port == -1) {
 						port = GetDefaultPort (scheme);
 					}
 				}
-			} else {
-				if (port == -1) {
+			} else if (!IsFile) {
+				// if no port is specified by a colon ':' is present then we must ignore it
+				// since it would be part of the host name and, as such, would be invalid
+				if (pos == endpos - 1)
+					endpos--;
+
+				if (port == -1)
 					port = GetDefaultPort (scheme);
-				}
 			}
 			
 			// 4 authority
@@ -1488,37 +1585,47 @@ namespace System {
 				path = Reduce ('/' + uriString, true);
 				host = String.Empty;
 			} else if (host.Length == 2 && host [1] == ':') {
-				// windows filepath
-				path = host + path;
-				host = String.Empty;
+				if (scheme != UriSchemeFile) {
+					host = host [0].ToString ();
+				} else {
+					// windows filepath
+					path = host + path;
+					host = String.Empty;
+				}
 			} else if (isUnixFilePath) {
 				uriString = "//" + uriString;
 				host = String.Empty;
 			} else if (scheme == UriSchemeFile) {
-				isUnc = true;
-			} else if (scheme == UriSchemeNews) {
-				// no host for 'news', misinterpreted path
-				if (host.Length > 0) {
-					path = host;
-					host = String.Empty;
-				}
+				// under Windows all file:// URI are considered UNC, which is not the case other MacOS (e.g. Silverlight)
+				isUnc = isWin32;
 			} else if (host.Length == 0 &&
 				   (scheme == UriSchemeHttp || scheme == UriSchemeGopher || scheme == UriSchemeNntp ||
 				    scheme == UriSchemeHttps || scheme == UriSchemeFtp)) {
-				return "Invalid URI: The hostname could not be parsed";
+				return "Invalid URI: The Authority/Host could not be parsed.";
 			}
 
-			bool badhost = ((host.Length > 0) && (CheckHostName (host) == UriHostNameType.Unknown));
-			if (!badhost && (host.Length > 1) && (host[0] == '[') && (host[host.Length - 1] == ']')) {
-				IPv6Address ipv6addr;
-				
-				if (IPv6Address.TryParse (host, out ipv6addr))
-					host = "[" + ipv6addr.ToString (true) + "]";
-				else
-					badhost = true;
+			if (host.Length > 0) {
+				switch (CheckHostName (host)) {
+				case UriHostNameType.Unknown:
+					if ((host [0] == ':') || (host [0] == '@'))
+						return "Invalid URI: The hostname could not be parsed.";
+					if (host.IndexOf (':') != -1)
+						return "Invalid URI: Invalid port specified.";
+					if (Parser is DefaultUriParser || Parser == null)
+						return "Invalid URI: The hostname could not be parsed.";
+					break;
+				case UriHostNameType.IPv6:
+					IPv6Address ipv6addr;
+					if (IPv6Address.TryParse (host, out ipv6addr)) {
+						host = "[" + ipv6addr.ToString (true) + "]";
+						scope_id = ipv6addr.ScopeId;
+					}
+					break;
+				}
 			}
-			if (badhost && (Parser is DefaultUriParser || Parser == null))
-				return Locale.GetText ("Invalid URI: The hostname could not be parsed. (" + host + ")");
+			// delayed reporting (to throw the expected exception in the right order)
+			if (!valid_port)
+				return "Invalid URI: Invalid port number";
 
 			UriFormatException ex = null;
 			if (Parser != null)
@@ -1526,9 +1633,7 @@ namespace System {
 			if (ex != null)
 				return ex.Message;
 
-			if ((scheme != Uri.UriSchemeMailto) &&
-					(scheme != Uri.UriSchemeNews) &&
-					(scheme != Uri.UriSchemeFile)) {
+			if ((scheme != Uri.UriSchemeMailto) && (scheme != Uri.UriSchemeFile)) {
 				path = Reduce (path, CompactEscaped (scheme));
 			}
 
@@ -1537,17 +1642,50 @@ namespace System {
 
 		private static bool CompactEscaped (string scheme)
 		{
-			switch (scheme) {
-			case "file":
-			case "http":
-			case "https":
-			case "net.pipe":
-			case "net.tcp":
+			if (scheme == null || scheme.Length < 4)
+				return false;
+
+			char first = scheme [0];
+			if (first == 'h'){
+				return scheme == "http" || scheme == "https";
+			} else if (first == 'f' && scheme == "file"){
 				return true;
-			}
+			} else if (first == 'n')
+				return scheme == "net.pipe" || scheme == "net.tcp";
+
 			return false;
 		}
 
+		// replace '\', %5C ('\') and %2f ('/') into '/'
+		// replace %2e ('.') into '.'
+		private static string NormalizePath (string path)
+		{
+			StringBuilder res = new StringBuilder ();
+			for (int i = 0; i < path.Length; i++) {
+				char c = path [i];
+				switch (c) {
+				case '\\':
+					c = '/';
+					break;
+				case '%':
+					if (i < path.Length - 2) {
+						char c1 = path [i + 1];
+						char c2 = Char.ToUpper (path [i + 2]);
+						if ((c1 == '2') && (c2 == 'E')) {
+							c = '.';
+							i += 2;
+						} else if (((c1 == '2') && (c2 == 'F')) || ((c1 == '5') && (c2 == 'C'))) {
+							c = '/';
+							i += 2;
+						}
+					}
+					break;
+				}
+				res.Append (c);
+			}
+			return res.ToString ();
+		}
+
 		// This is called "compacting" in the MSDN documentation
 		private static string Reduce (string path, bool compact_escaped)
 		{
@@ -1555,51 +1693,28 @@ namespace System {
 			if (path == "/")
 				return path;
 
-			StringBuilder res = new StringBuilder();
-
-			if (compact_escaped) {
-				// replace '\', %5C ('\') and %2f ('/') into '/'
+			if (compact_escaped && (path.IndexOf ('%') != -1)) {
+				// replace '\', %2f, %5c with '/' and replace %2e with '.'
 				// other escaped values seems to survive this step
-				for (int i=0; i < path.Length; i++) {
-					char c = path [i];
-					switch (c) {
-					case '\\':
-						res.Append ('/');
-						break;
-					case '%':
-						if (i < path.Length - 2) {
-							char c1 = path [i + 1];
-							char c2 = Char.ToUpper (path [i + 2]);
-							if (((c1 == '2') && (c2 == 'F')) || ((c1 == '5') && (c2 == 'C'))) {
-								res.Append ('/');
-								i += 2;
-							} else {
-								res.Append (c);
-							}
-						} else {
-							res.Append (c);
-						}
-						break;
-					default:
-						res.Append (c);
-						break;
-					}
-				}
-				path = res.ToString ();
+				path = NormalizePath (path);
 			} else {
+				// (always) replace '\' with '/'
 				path = path.Replace ('\\', '/');
 			}
 
-			ArrayList result = new ArrayList ();
+			List<string> result = new List<string> ();
 
 			bool begin = true;
 			for (int startpos = 0; startpos < path.Length; ) {
-				int endpos = path.IndexOf('/', startpos);
-				if (endpos == -1) endpos = path.Length;
+				int endpos = path.IndexOf ('/', startpos);
+				if (endpos == -1)
+					endpos = path.Length;
 				string current = path.Substring (startpos, endpos-startpos);
 				startpos = endpos + 1;
-				if ((begin && current.Length == 0) || current == "." )
+				if ((begin && current.Length == 0) || current == "." ) {
+					begin = false;
 					continue;
+				}
 
 				begin = false;
 				if (current == "..") {
@@ -1619,7 +1734,8 @@ namespace System {
 			if (result.Count == 0)
 				return "/";
 
-			res.Length = 0;
+			StringBuilder res = new StringBuilder ();
+
 			if (path [0] == '/')
 				res.Append ('/');
 
@@ -1633,7 +1749,7 @@ namespace System {
 				res.Append(part);
 			}
 
-			if (path.EndsWith ("/"))
+			if (path [path.Length - 1] == '/')
 				res.Append ('/');
 				
 			return res.ToString();
@@ -1826,23 +1942,40 @@ namespace System {
 			return IsPredefinedScheme (s.Substring (0, p));
 		}
 		
+		//
+		// Using a simple block of if's is twice as slow as the compiler generated
+		// switch statement.   But using this tuned code is faster than the
+		// compiler generated code, with a million loops on x86-64:
+		//
+		// With "http": .10 vs .51 (first check)
+		// with "https": .16 vs .51 (second check)
+		// with "foo": .22 vs .31 (never found)
+		// with "mailto": .12 vs .51  (last check)
+		//
+		//
 		private static bool IsPredefinedScheme (string scheme)
 		{
-			switch (scheme) {
-			case "http":
-			case "https":
-			case "file":
-			case "ftp":
-			case "nntp":
-			case "gopher":
-			case "mailto":
-			case "news":
-			case "net.pipe":
-			case "net.tcp":
-				return true;
-			default:
+			if (scheme == null && scheme.Length < 3)
+				return false;
+			
+			char c = scheme [0];
+			if (c == 'h')
+				return (scheme == "http" || scheme == "https");
+			if (c == 'f')
+				return (scheme == "file" || scheme == "ftp");
+				
+			if (c == 'n'){
+				c = scheme [1];
+				if (c == 'e')
+					return (scheme == "news" || scheme == "net.pipe" || scheme == "net.tcp");
+				if (scheme == "nntp")
+					return true;
 				return false;
 			}
+			if ((c == 'g' && scheme == "gopher") || (c == 'm' && scheme == "mailto"))
+				return true;
+
+			return false;
 		}
 
 		[Obsolete]
@@ -1878,6 +2011,10 @@ namespace System {
 
 		public bool IsBaseOf (Uri uri)
 		{
+#if NET_4_0 || MOONLIGHT
+			if (uri == null)
+				throw new ArgumentNullException ("uri");
+#endif
 			return Parser.IsBaseOf (this, uri);
 		}
 
@@ -1885,7 +2022,7 @@ namespace System {
 		{
 			// funny, but it does not use the Parser's IsWellFormedOriginalString().
 			// Also, it seems we need to *not* escape hex.
-			return EscapeString (OriginalString, false, false, true) == OriginalString;
+			return EscapeString (OriginalString, EscapeCommonBrackets) == OriginalString;
 		}
 
 		// static methods
@@ -2020,12 +2157,21 @@ namespace System {
 		// [MonoTODO ("rework code to avoid exception catching")]
 		public static bool TryCreate (Uri baseUri, string relativeUri, out Uri result)
 		{
+			result = null;
+			if (relativeUri == null)
+				return false;
+
 			try {
-				// FIXME: this should call UriParser.Resolve
-				result = new Uri (baseUri, relativeUri);
-				return true;
+				Uri relative = new Uri (relativeUri, UriKind.RelativeOrAbsolute);
+				if ((baseUri != null) && baseUri.IsAbsoluteUri) {
+					// FIXME: this should call UriParser.Resolve
+					result = new Uri (baseUri, relative);
+				} else if (relative.IsAbsoluteUri) {
+					// special case - see unit tests
+					result = relative;
+				}
+				return (result != null);
 			} catch (UriFormatException) {
-				result = null;
 				return false;
 			}
 		}
@@ -2033,18 +2179,29 @@ namespace System {
 		//[MonoTODO ("rework code to avoid exception catching")]
 		public static bool TryCreate (Uri baseUri, Uri relativeUri, out Uri result)
 		{
+			result = null;
+			if ((baseUri == null) || !baseUri.IsAbsoluteUri)
+				return false;
+#if NET_4_0 || MOONLIGHT
+			if (relativeUri == null)
+				return false;
+#endif
 			try {
 				// FIXME: this should call UriParser.Resolve
 				result = new Uri (baseUri, relativeUri.OriginalString);
 				return true;
 			} catch (UriFormatException) {
-				result = null;
 				return false;
 			}
 		}
 
 		public static string UnescapeDataString (string stringToUnescape)
 		{
+			return UnescapeDataString (stringToUnescape, false);
+		}
+
+		internal static string UnescapeDataString (string stringToUnescape, bool safe)
+		{
 			if (stringToUnescape == null)
 				throw new ArgumentNullException ("stringToUnescape");
 
@@ -2064,7 +2221,7 @@ namespace System {
 							bytes.SetLength (0);
 						}
 
-						xchar = GetChar (stringToUnescape, i + 2, 4);
+						xchar = GetChar (stringToUnescape, i + 2, 4, safe);
 						if (xchar != -1) {
 							output.Append ((char) xchar);
 							i += 5;
@@ -2073,7 +2230,7 @@ namespace System {
 							output.Append ('%');
 						}
 					}
-					else if ((xchar = GetChar (stringToUnescape, i + 1, 2)) != -1) {
+					else if ((xchar = GetChar (stringToUnescape, i + 1, 2, safe)) != -1) {
 						bytes.WriteByte ((byte) xchar);
 						i += 2;
 					}
@@ -2114,7 +2271,7 @@ namespace System {
 			return -1;
 		}
 
-		private static int GetChar (string str, int offset, int length)
+		private static int GetChar (string str, int offset, int length, bool safe)
 		{
 			int val = 0;
 			int end = length + offset;
@@ -2129,7 +2286,21 @@ namespace System {
 				val = (val << 4) + current;
 			}
 
-			return val;
+			if (!safe)
+				return val;
+
+			switch ((char) val) {
+			case '%':
+			case '#':
+			case '?':
+			case '/':
+			case '\\':
+			case '@':
+			case '&': // not documented
+				return -1;
+			default:
+				return val;
+			}
 		}
 
 		private static char [] GetChars (MemoryStream b, Encoding e)
diff --git a/mcs/class/System/System/UriBuilder.cs b/mcs/class/System/System/UriBuilder.cs
index 15a7846..702bd33 100644
--- a/mcs/class/System/System/UriBuilder.cs
+++ b/mcs/class/System/System/UriBuilder.cs
@@ -1,279 +1,294 @@
-//
-// System.UriBuilder
-//
-// Author:
-//   Lawrence Pit (loz at cable.a2000.nl)
-//
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.Runtime.Serialization;
-using System.Text;
-
-// See RFC 2396 for more info on URI's.
-
-namespace System 
-{
-	public class UriBuilder
-	{
-		private string scheme;
-		private string host;
-		private int port;
-		private string path;
-		private string query;
-		private string fragment;
-		private string username;
-		private string password;
-		
-		private Uri uri;
-		private bool modified;
-		
-		
-		// Constructors
-		
-		public UriBuilder ()
-#if NET_2_0
-			: this (Uri.UriSchemeHttp, "localhost")
-#else
-			: this (Uri.UriSchemeHttp, "loopback")
-#endif
-		{
-		}
-
-		public UriBuilder (string uri) : this (new Uri (uri))
-		{
-		}
-		
-		public UriBuilder (Uri uri)
-		{
-			scheme = uri.Scheme;
-			host = uri.Host;
-			port = uri.Port;
-			path = uri.AbsolutePath;
-			query = uri.Query;
-			fragment = uri.Fragment;
-			username = uri.UserInfo;
-			int pos = username.IndexOf (':');
-			if (pos != -1) {
-				password = username.Substring (pos + 1);
-				username = username.Substring (0, pos);
-			} else {
-				password = String.Empty;
-			}
-			modified = true;
-		}
-		
-		public UriBuilder (string schemeName, string hostName) 
-		{
-			Scheme = schemeName;
-			Host = hostName;
-			port = -1;
-			Path = String.Empty;   // dependent on scheme it may set path to "/"
-			query = String.Empty;
-			fragment = String.Empty;
-			username = String.Empty;
-			password = String.Empty;
-			modified = true;
-		}
-		
-		public UriBuilder (string scheme, string host, int portNumber) 
-			: this (scheme, host)
-		{
-			Port = portNumber;
-		}
-		
-		public UriBuilder (string scheme, string host, int port, string pathValue)
-			: this (scheme, host, port)
-		{
-			Path = pathValue;
-		}
-
-		public UriBuilder (string scheme, string host, int port, string pathValue, string extraValue)
-			: this (scheme, host, port, pathValue)
-		{
-			if (extraValue == null || extraValue.Length == 0)
-				return;
-				
-			if (extraValue [0] == '#') 
-				Fragment = extraValue.Remove (0, 1);
-			else if (extraValue [0] == '?') 
-				Query = extraValue.Remove (0, 1);
-			else 
-				throw new ArgumentException ("extraValue");
-		}
-
-		
-		// Properties
-		
-		public string Fragment {
-			get { return fragment; }
-			set {
-				fragment = value;
-				if (fragment == null)
-					fragment = String.Empty;
-				else if (fragment.Length > 0)
-//					fragment = "#" + EncodeUtf8 (value.Replace ("%23", "#"));
-					fragment = "#" + value.Replace ("%23", "#");
-#if !NET_2_0
-				query = String.Empty;
-#endif
-				modified = true;
-			}
-		}
-
-		public string Host {
-			get { return host; }
-			set {
-				host = (value == null) ? String.Empty : value;;
-				modified = true;
-			}
-		}
-
-		public string Password {
-			get { return password; }
-			set {
-				password = (value == null) ? String.Empty : value;;
-				modified = true;
-			}
-		}
-		
-		public string Path {
-			get { return path; }
-			set {
-				if (value == null || value.Length == 0) {
-					path = "/";
-				} else {
-					path = Uri.EscapeString (value.Replace ('\\', '/'), false, true, true);
-				}
-				modified = true;
-			}
-		}
-		
-		public int Port {
-			get { return port; }
-			set {
-#if NET_2_0
-				if (value < -1)
-					throw new ArgumentOutOfRangeException ("value");
-#else
-				if (value < 0)
-					throw new ArgumentOutOfRangeException ("value");
-#endif
-				// apparently it is
-				port = value;
-				modified = true;
-			}
-		}
-		
-		public string Query {
-			get { return query; }
-			set {
-				// LAMESPEC: it doesn't say to always prepend a 
-				// question mark to the value.. it does say this 
-				// for fragment.
-				if (value == null || value.Length == 0)
-					query = String.Empty;
-				else
-//					query = "?" + EncodeUtf8 (value);
-					query = "?" + value;
-#if !NET_2_0
-				fragment = String.Empty;
-#endif
-				modified = true;
-			}
-		}
-		
-		public string Scheme {
-			get { return scheme; }
-			set {
-				if (value == null)
-					value = String.Empty;
-				int colonPos = value.IndexOf (':');
-				if (colonPos != -1)
-					value = value.Substring (0, colonPos);
-				scheme = value.ToLower ();
-				modified = true;
-			}
-		}
-		
-		public Uri Uri {
-			get {
-				if (!modified) 
-					return uri;
-				uri = new Uri (ToString (), true);
-				modified = false;
-				return uri;
-			}
-		}
-		
-		public string UserName {
-			get { return username; }
-			set {
-				username = (value == null) ? String.Empty : value;;
-				modified = true;
-			}
-		}
-
-		// Methods
-		
-		public override bool Equals (object rparam) 
-		{
-			return (rparam == null) ? false : this.Uri.Equals (rparam.ToString ());
-		}
-		
-		public override int GetHashCode ()
-		{
-			return this.Uri.GetHashCode ();
-		}
-		
-		public override string ToString ()
-		{
-			StringBuilder builder = new StringBuilder ();
-
-			builder.Append (scheme);
-			builder.Append ("://");
-
-			if (username != String.Empty) {
-				builder.Append (username);
-				if (password != String.Empty)
-					builder.Append (":" + password);
-				builder.Append ('@');
-			}
-
-			builder.Append (host);
-			if (port > 0)
-				builder.Append (":" + port);
-
-			if (path != String.Empty &&
-			    builder [builder.Length - 1] != '/' &&
-			    path.Length > 0 && path [0] != '/')
-				builder.Append ('/');
-			builder.Append (path);
-			builder.Append (query);
-			builder.Append (fragment);
-
-			return builder.ToString ();
-		}
-	}
-}
+//
+// System.UriBuilder
+//
+// Author:
+//   Lawrence Pit (loz at cable.a2000.nl)
+//
+// Copyright (C) 2005, 2010 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections;
+using System.Runtime.Serialization;
+using System.Text;
+
+// See RFC 2396 for more info on URI's.
+
+namespace System 
+{
+	public class UriBuilder
+	{
+		private string scheme;
+		private string host;
+		private int port;
+		private string path;
+		private string query;
+		private string fragment;
+		private string username;
+		private string password;
+		
+		private Uri uri;
+		private bool modified;
+		
+		
+		// Constructors
+		
+		public UriBuilder ()
+		{
+			Initialize (Uri.UriSchemeHttp, "localhost", -1, String.Empty, String.Empty);
+		}
+
+		public UriBuilder (string uri)
+		{
+			if (uri == null)
+				throw new ArgumentNullException ("uriString");
+
+			Uri u = null;
+			if (Uri.TryCreate (uri, UriKind.Absolute, out u)) {
+				Initialize (u);
+			} else if (!uri.Contains (Uri.SchemeDelimiter)) {
+				// second chance, UriBuilder parsing is more forgiving than Uri
+				Initialize (new Uri (Uri.UriSchemeHttp + Uri.SchemeDelimiter + uri));
+			} else
+				throw new UriFormatException ();
+		}
+		
+		public UriBuilder (Uri uri)
+		{
+#if NET_4_0
+			if (uri == null)
+				throw new ArgumentNullException ("uri");
+#endif
+			Initialize (uri);
+		}
+		
+		public UriBuilder (string schemeName, string hostName) 
+		{
+			Initialize (schemeName, hostName, -1, String.Empty, String.Empty);
+		}
+
+		public UriBuilder (string scheme, string hostName, int portNumber) 
+		{
+			Initialize (scheme, hostName, portNumber, String.Empty, String.Empty);
+		}
+		
+		public UriBuilder (string scheme, string host, int port, string pathValue)
+		{
+			Initialize (scheme, host, port, pathValue, String.Empty);
+		}
+
+		public UriBuilder (string scheme, string host, int port, string pathValue, string extraValue)
+		{
+			Initialize (scheme, host, port, pathValue, extraValue);
+		}
+
+		private void Initialize (Uri uri)
+		{
+			Initialize (uri.Scheme, uri.Host, uri.Port, uri.AbsolutePath, String.Empty);
+			fragment = uri.Fragment;
+			query = uri.Query;
+			username = uri.UserInfo;
+			int pos = username.IndexOf (':');
+			if (pos != -1) {
+				password = username.Substring (pos + 1);
+				username = username.Substring (0, pos);
+			} else {
+				password = String.Empty;
+			}
+		}
+
+		private void Initialize (string scheme, string host, int port, string pathValue, string extraValue)
+		{
+			modified = true;
+
+			Scheme = scheme;
+			Host = host;
+			Port = port;
+			Path = pathValue;
+			query = String.Empty;
+			fragment = String.Empty;
+			Path = pathValue;
+			username = String.Empty;
+			password = String.Empty;
+
+			if (String.IsNullOrEmpty (extraValue))
+				return;
+
+			if (extraValue [0] == '#')
+				Fragment = extraValue.Remove (0, 1);
+			else if (extraValue [0] == '?')
+				Query = extraValue.Remove (0, 1);
+			else
+				throw new ArgumentException ("extraValue");
+		}
+		
+		// Properties
+		
+		public string Fragment {
+			get { return fragment; }
+			set {
+				fragment = value;
+				if (fragment == null)
+					fragment = String.Empty;
+				else if (fragment.Length > 0)
+					fragment = "#" + value.Replace ("%23", "#");
+				modified = true;
+			}
+		}
+
+		public string Host {
+			get { return host; }
+			set {
+				if (String.IsNullOrEmpty (value))
+					host = String.Empty;
+				else if ((value.IndexOf (':') != -1) && (value [0] != '[')) {
+					host = "[" + value + "]";
+				} else {
+					host = value;
+				}
+				modified = true;
+			}
+		}
+
+		public string Password {
+			get { return password; }
+			set {
+				password = (value == null) ? String.Empty : value;
+			}
+		}
+		
+		public string Path {
+			get { return path; }
+			set {
+				if (value == null || value.Length == 0) {
+					path = "/";
+				} else {
+					path = Uri.EscapeString (value.Replace ('\\', '/'), Uri.EscapeCommonHexBracketsQuery);
+				}
+				modified = true;
+			}
+		}
+		
+		public int Port {
+			get { return port; }
+			set {
+				if (value < -1)
+					throw new ArgumentOutOfRangeException ("value");
+				// apparently it is
+				port = value;
+				modified = true;
+			}
+		}
+		
+		public string Query {
+			get { return query; }
+			set {
+				// LAMESPEC: it doesn't say to always prepend a 
+				// question mark to the value.. it does say this 
+				// for fragment.
+				if (value == null || value.Length == 0)
+					query = String.Empty;
+				else
+					query = "?" + value;
+				modified = true;
+			}
+		}
+		
+		public string Scheme {
+			get { return scheme; }
+			set {
+				if (value == null)
+					value = String.Empty;
+				int colonPos = value.IndexOf (':');
+				if (colonPos != -1)
+					value = value.Substring (0, colonPos);
+				scheme = value.ToLower ();
+				modified = true;
+			}
+		}
+		
+		public Uri Uri {
+			get {
+				if (!modified) 
+					return uri;
+				uri = new Uri (ToString (), true);
+				// some properties are updated once the Uri is created - see unit tests
+				host = uri.Host;
+				path = uri.AbsolutePath;
+				modified = false;
+				return uri;
+			}
+		}
+		
+		public string UserName {
+			get { return username; }
+			set {
+				username = (value == null) ? String.Empty : value;
+				modified = true;
+			}
+		}
+
+		// Methods
+		
+		public override bool Equals (object rparam) 
+		{
+			return (rparam == null) ? false : this.Uri.Equals (rparam.ToString ());
+		}
+		
+		public override int GetHashCode ()
+		{
+			return this.Uri.GetHashCode ();
+		}
+		
+		public override string ToString ()
+		{
+			StringBuilder builder = new StringBuilder ();
+
+			builder.Append (scheme);
+			// note: mailto and news use ':', not "://", as their delimiter
+			builder.Append (Uri.GetSchemeDelimiter (scheme));
+
+			if (username != String.Empty) {
+				builder.Append (username);
+				if (password != String.Empty)
+					builder.Append (":" + password);
+				builder.Append ('@');
+			}
+
+			if (host.Length > 0) {
+				builder.Append (host);
+				if (port > 0)
+					builder.Append (":" + port);
+			}
+
+			if (path != String.Empty &&
+			    builder [builder.Length - 1] != '/' &&
+			    path.Length > 0 && path [0] != '/')
+				builder.Append ('/');
+			builder.Append (path);
+			builder.Append (query);
+			builder.Append (fragment);
+
+			return builder.ToString ();
+		}
+	}
+}
diff --git a/mcs/class/System/System/UriParser.cs b/mcs/class/System/System/UriParser.cs
index 7a948b4..1a85b7d 100644
--- a/mcs/class/System/System/UriParser.cs
+++ b/mcs/class/System/System/UriParser.cs
@@ -117,6 +117,7 @@ namespace System {
 			// now we deal with multiple flags...
 
 			StringBuilder sb = new StringBuilder ();
+
 			if ((components & UriComponents.Scheme) != 0) {
 				sb.Append (scheme);
 				sb.Append (Uri.GetSchemeDelimiter (scheme));
@@ -141,16 +142,26 @@ namespace System {
 					sb.Append (am.Groups [4].Value);
 			}
 
-			if ((components & UriComponents.Path) != 0)
+			if ((components & UriComponents.Path) != 0) {
+				if ((components & UriComponents.PathAndQuery) != 0 &&
+					(m.Groups [5].Value == null || !m.Groups [5].Value.StartsWith ("/")))
+					sb.Append ("/");
 				sb.Append (m.Groups [5]);
+			}
 
 			if ((components & UriComponents.Query) != 0)
 				sb.Append (m.Groups [6]);
 
-			if ((components & UriComponents.Fragment) != 0)
-				sb.Append (m.Groups [8]);
-
-			return Format (sb.ToString (), format);
+			string result = Format (sb.ToString (), format);
+			if ((components & UriComponents.Fragment) != 0) {
+				string f = m.Groups [8].Value;
+				if (!String.IsNullOrEmpty (f)) {
+					// make sure the '#' does not get escaped by 'format'
+					f = f.Substring (1);
+					result += "#" + Format (f, format);
+				}
+			}
+			return result;
 		}
 
 		protected internal virtual void InitializeAndValidate (Uri uri, out UriFormatException parsingError)
@@ -233,11 +244,9 @@ namespace System {
 
 			switch (format) {
 			case UriFormat.UriEscaped:
-				return Uri.EscapeString (s, false, true, true);
+				return Uri.EscapeString (s, Uri.EscapeCommonHexBrackets);
 			case UriFormat.SafeUnescaped:
-				// TODO subset of escape rules
-				s = Uri.Unescape (s, false);
-				return s; //Uri.EscapeString (s, false, true, true);
+				return Uri.UnescapeDataString (s, true);
 			case UriFormat.Unescaped:
 				return Uri.Unescape (s, false);
 			default:
@@ -259,11 +268,9 @@ namespace System {
 			InternalRegister (newtable, new DefaultUriParser (), Uri.UriSchemeHttp, 80);
 			InternalRegister (newtable, new DefaultUriParser (), Uri.UriSchemeHttps, 443);
 			InternalRegister (newtable, new DefaultUriParser (), Uri.UriSchemeMailto, 25);
-#if NET_2_0
 			InternalRegister (newtable, new DefaultUriParser (), Uri.UriSchemeNetPipe, -1);
 			InternalRegister (newtable, new DefaultUriParser (), Uri.UriSchemeNetTcp, -1);
-#endif
-			InternalRegister (newtable, new DefaultUriParser (), Uri.UriSchemeNews, 119);
+			InternalRegister (newtable, new DefaultUriParser (), Uri.UriSchemeNews, -1);
 			InternalRegister (newtable, new DefaultUriParser (), Uri.UriSchemeNntp, 119);
 			// not defined in Uri.UriScheme* but a parser class exists
 			InternalRegister (newtable, new DefaultUriParser (), "ldap", 389);
diff --git a/mcs/class/System/System/UriTypeConverter.cs b/mcs/class/System/System/UriTypeConverter.cs
index 355f015..6d8b74e 100644
--- a/mcs/class/System/System/UriTypeConverter.cs
+++ b/mcs/class/System/System/UriTypeConverter.cs
@@ -87,7 +87,6 @@ namespace System {
 #endif
 			}
 
-			Console.WriteLine ("Converting: '{0}' of type '{1}'", value, value.GetType ().Name);
 			if (!CanConvertFrom (context, value.GetType ()))
 				throw new NotSupportedException (Locale.GetText ("Cannot convert from value."));
 
diff --git a/mcs/class/System/System_test.dll.sources b/mcs/class/System/System_test.dll.sources
index 1d86f9d..532586c 100644
--- a/mcs/class/System/System_test.dll.sources
+++ b/mcs/class/System/System_test.dll.sources
@@ -110,6 +110,7 @@ System.Collections.Specialized/StringCollectionTest.cs
 System.Collections.Specialized/StringDictionaryTest.cs
 System.ComponentModel/ArrayConverterTests.cs
 System.ComponentModel/AsyncOperationManagerTest.cs
+System.ComponentModel/AttributeCollectionTest.cs
 System.ComponentModel/AttributeProviderAttributeTest.cs
 System.ComponentModel/BackgroundWorkerTest.cs
 System.ComponentModel/BindingListTest.cs
@@ -123,6 +124,7 @@ System.ComponentModel/ContainerTest.cs
 System.ComponentModel/CultureInfoConverterTest.cs
 System.ComponentModel/DataObjectMethodAttributeTests.cs
 System.ComponentModel/DateTimeConverterTests.cs
+System.ComponentModel/DateTimeOffsetConverterTests.cs
 System.ComponentModel/DefaultBindingPropertyAttributeTest.cs
 System.ComponentModel/DefaultValueAttributeTest.cs
 System.ComponentModel/DecimalConverterTests.cs
@@ -150,6 +152,7 @@ System.ComponentModel/SByteConverterTests.cs
 System.ComponentModel/SingleConverterTests.cs
 System.ComponentModel/ToolboxItemAttributeTests.cs
 System.ComponentModel/TypeConverterTests.cs
+System.ComponentModel/TypeDescriptionProviderTest.cs
 System.ComponentModel/TypeDescriptorTests.cs
 System.ComponentModel/UInt16ConverterTests.cs
 System.ComponentModel/UInt32ConverterTests.cs
diff --git a/mcs/class/System/Test/System.Collections.Concurrent/BlockingCollectionTests.cs b/mcs/class/System/Test/System.Collections.Concurrent/BlockingCollectionTests.cs
index c9a5829..b88479f 100644
--- a/mcs/class/System/Test/System.Collections.Concurrent/BlockingCollectionTests.cs
+++ b/mcs/class/System/Test/System.Collections.Concurrent/BlockingCollectionTests.cs
@@ -166,6 +166,22 @@ namespace MonoTests.System.Collections.Concurrent
 			}
 			Assert.AreEqual(0, defaultCollection.Count, "#" + i);
 		}
+
+		[TestAttribute]
+		public void TryTakeTestCase ()
+		{
+			defaultCollection.Add (1);
+
+			int value = default (int);
+			bool firstTake = defaultCollection.TryTake (out value);
+			int value2 = default (int);
+			bool secondTake = defaultCollection.TryTake (out value2);
+
+			Assert.AreEqual (1, value);
+			Assert.IsTrue (firstTake);
+			Assert.AreEqual (default (int), value2);
+			Assert.IsFalse (secondTake);
+		}
 	}
 }
 #endif
diff --git a/mcs/class/System/Test/System.Collections.Concurrent/ChangeLog b/mcs/class/System/Test/System.Collections.Concurrent/ChangeLog
index 1c8ce37..6036981 100644
--- a/mcs/class/System/Test/System.Collections.Concurrent/ChangeLog
+++ b/mcs/class/System/Test/System.Collections.Concurrent/ChangeLog
@@ -1,3 +1,8 @@
+2010-12-07  Guillaume Pouillet  <nekresh at gmail.com>
+
+	Fix bug in BlockingCollection<T>.TryTake Add corresponding unit
+	test
+
 2010-04-23  Jérémie Laval  <jeremie.laval at gmail.com>
 
 	* BlockingCollectionTests.cs: Add IsCompletedEmptyTestCase,
diff --git a/mcs/class/System/Test/System.Collections.Concurrent/ChangeLog b/mcs/class/System/Test/System.Collections.Concurrent/ChangeLog.old
similarity index 100%
copy from mcs/class/System/Test/System.Collections.Concurrent/ChangeLog
copy to mcs/class/System/Test/System.Collections.Concurrent/ChangeLog.old
diff --git a/mcs/class/System/Test/System.Collections.Generic/ChangeLog b/mcs/class/System/Test/System.Collections.Generic/ChangeLog
index e404504..9a58535 100644
--- a/mcs/class/System/Test/System.Collections.Generic/ChangeLog
+++ b/mcs/class/System/Test/System.Collections.Generic/ChangeLog
@@ -1,3 +1,7 @@
+2010-12-26  Luke Halliwell  <luke.j.halliwell at gmail.com>
+
+	Fix for bug 349053 - unable to serialize SortedDictionary
+
 2010-04-09  Raja R Harinath  <harinath at hurrynot.org>
 
 	* SortedSetTest.cs (ViewCount): Test that count reflects changes
diff --git a/mcs/class/System/Test/System.Collections.Generic/ChangeLog b/mcs/class/System/Test/System.Collections.Generic/ChangeLog.old
similarity index 100%
copy from mcs/class/System/Test/System.Collections.Generic/ChangeLog
copy to mcs/class/System/Test/System.Collections.Generic/ChangeLog.old
diff --git a/mcs/class/System/Test/System.Collections.Generic/SortedDictionaryTest.cs b/mcs/class/System/Test/System.Collections.Generic/SortedDictionaryTest.cs
index 5fd1f6b..bb1c225 100644
--- a/mcs/class/System/Test/System.Collections.Generic/SortedDictionaryTest.cs
+++ b/mcs/class/System/Test/System.Collections.Generic/SortedDictionaryTest.cs
@@ -29,16 +29,17 @@
 #if NET_2_0
 
 using System;
+using System.IO;
 using System.Collections;
 using System.Collections.Generic;
-using System.Runtime.Serialization;
+using System.Runtime.Serialization.Formatters.Binary;
 
 using NUnit.Framework;
 
 namespace MonoTests.System.Collections.Generic
 {
 	[TestFixture]
-        public class SortedDictionaryTest
+	public class SortedDictionaryTest
 	{
 		[Test]
 		public void CtorNullComparer ()
@@ -565,8 +566,58 @@ namespace MonoTests.System.Collections.Generic
 			((IDisposable) e4).Dispose ();
 			Assert.IsTrue (Throws (delegate { var x = e4.Current; GC.KeepAlive (x); }));
 		}
+
+		// Serialize a dictionary out and deserialize it back in again
+		SortedDictionary<int, string> Roundtrip(SortedDictionary<int, string> dic)
+		{
+			BinaryFormatter bf = new BinaryFormatter ();
+			MemoryStream stream = new MemoryStream ();
+			bf.Serialize (stream, dic);
+			stream.Position = 0;
+			return (SortedDictionary<int, string>)bf.Deserialize (stream);
+		}
+	    
+		[Test]
+		public void Serialize()
+		{
+			SortedDictionary<int, string> test = new SortedDictionary<int, string>();
+			test.Add(1, "a");
+			test.Add(3, "c");
+			test.Add(2, "b");
+
+			SortedDictionary<int, string> result = Roundtrip(test);
+			Assert.AreEqual(3, result.Count);
+
+			Assert.AreEqual("a", result[1]);
+			Assert.AreEqual("b", result[2]);
+			Assert.AreEqual("c", result[3]);
+		}
+
+		[Test]
+		public void SerializeReverseComparer()
+		{
+			SortedDictionary<int,string> test =
+				new SortedDictionary<int,string> (
+					ReverseComparer<int>.Instance);
+
+			test.Add (1, "A");
+			test.Add (3, "B");
+			test.Add (2, "C");
+
+			SortedDictionary<int,string> result = Roundtrip (test);
+		    
+			SortedDictionary<int,string>.Enumerator e = result.GetEnumerator ();
+			Assert.IsTrue (e.MoveNext (), "#1");
+			Assert.AreEqual ("B", e.Current.Value, "#2");
+			Assert.IsTrue (e.MoveNext (), "#3");
+			Assert.AreEqual ("C", e.Current.Value, "#4");
+			Assert.IsTrue (e.MoveNext (), "#5");
+			Assert.AreEqual ("A", e.Current.Value, "#6");
+			Assert.IsFalse (e.MoveNext (), "#7");
+		}
 	}
 
+	[Serializable]
 	class ReverseComparer<T> : IComparer<T>
 	{
 		static ReverseComparer<T> instance = new ReverseComparer<T> ();
diff --git a/mcs/class/System/Test/System.ComponentModel/AttributeCollectionTest.cs b/mcs/class/System/Test/System.ComponentModel/AttributeCollectionTest.cs
new file mode 100644
index 0000000..9badf43
--- /dev/null
+++ b/mcs/class/System/Test/System.ComponentModel/AttributeCollectionTest.cs
@@ -0,0 +1,82 @@
+//
+// AttributeCollectionTest.cs
+//
+// Author:
+// 	Carlos Alberto Cortez <calberto.cortez at gmail.com>
+//
+// Copyright (C) 2010 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.ComponentModel;
+using NUnit.Framework;
+
+namespace MonoTests.System.ComponentModel {
+
+	[TestFixture]
+	public class AttributeCollectionTest {
+
+#if NET_4_0
+		[Test]
+		public void Ctor_4_0 ()
+		{
+			CustomAttributeCollection attr_coll = new CustomAttributeCollection ();
+			Attribute [] attributes = attr_coll.GetAttributes ();
+			Assert.AreEqual (true, attributes == null, "#A0");
+		}
+
+		[Test]
+		public void AttributesTest ()
+		{
+			SerializableAttribute serializable_attr = new SerializableAttribute ();
+			FlagsAttribute flags_attr = new FlagsAttribute ();
+
+			CustomAttributeCollection attr_coll = new CustomAttributeCollection (serializable_attr, flags_attr);
+			Attribute [] attributes = attr_coll.GetAttributes ();
+			Assert.AreEqual (true, attributes != null, "#A0");
+			Assert.AreEqual (2, attributes.Length, "#A1");
+
+			// The property is supposed to be giving us the same instance in all the invocations
+			Assert.AreSame (attributes, attr_coll.GetAttributes (), "#A2");
+		}
+
+		class CustomAttributeCollection : AttributeCollection
+		{
+			public CustomAttributeCollection (params Attribute [] attributes)
+				: base (attributes)
+			{
+			}
+
+			public CustomAttributeCollection ()
+				: base ()
+			{
+			}
+
+			public Attribute [] GetAttributes ()
+			{
+				return Attributes;
+			}
+		}
+#endif
+	}
+}
+
diff --git a/mcs/class/System/Test/System.ComponentModel/ChangeLog b/mcs/class/System/Test/System.ComponentModel/ChangeLog
index ce4099e..5a24103 100644
--- a/mcs/class/System/Test/System.ComponentModel/ChangeLog
+++ b/mcs/class/System/Test/System.ComponentModel/ChangeLog
@@ -1,3 +1,33 @@
+2010-09-14  Carlos Alberto Cortez  <calberto.cortez at gmail.com>
+
+	* TypeDescriptorTests.cs: New test for InterfaceType.
+
+2010-09-14  Carlos Alberto Cortez  <calberto.cortez at gmail.com>
+
+	* TypeDescriptorTests.cs: Remove the NET_2_0 and ONLY_1_1
+	directives, as we don't need them anymore.
+
+2010-09-13  Carlos Alberto Cortez  <calberto.cortez at gmail.com>
+
+	* TypeDescriptionProviderTest.cs: New test file.
+
+2010-09-10  Carlos Alberto Cortez  <calberto.cortez at gmail.com>
+
+	* DateTimeOffsetConverterTests.cs: New test for conversions to
+	InstanceDescriptor.
+
+2010-09-07  Carlos Alberto Cortez  <calberto.cortez at gmail.com>
+
+	* DateTimeOffsetConverterTests.cs: New file.
+
+2010-09-05  Carlos Alberto Cortez  <calberto.cortez at gmail.com>
+
+	* CultureInfoConverterTest.cs: New test for GetCultureName.
+
+2010-09-03  Carlos Alberto Cortez  <calberto.cortez at gmail.com>
+
+	* AttributeCollectionTest.cs: New test file.
+
 2010-08-09  Zoltan Varga  <vargaz at gmail.com>
 
 	Remove some hash code tests which can fail.
diff --git a/mcs/class/System/Test/System.ComponentModel/CultureInfoConverterTest.cs b/mcs/class/System/Test/System.ComponentModel/CultureInfoConverterTest.cs
index cfd281a..d14caa7 100644
--- a/mcs/class/System/Test/System.ComponentModel/CultureInfoConverterTest.cs
+++ b/mcs/class/System/Test/System.ComponentModel/CultureInfoConverterTest.cs
@@ -207,5 +207,27 @@ namespace MonoTests.System.ComponentModel
 				get { return "english"; }
 			}
 		}
+
+#if NET_4_0
+		[Test]
+		public void GetCultureName ()
+		{
+			CustomCultureInfoConverter custom_converter = new CustomCultureInfoConverter ();
+
+			CultureInfo fr_culture = CultureInfo.GetCultureInfo ("fr-FR");
+			Assert.AreEqual (fr_culture.Name, custom_converter.GetCultureName (fr_culture), "#A1");
+
+			CultureInfo es_culture = CultureInfo.GetCultureInfo ("es-MX");
+			Assert.AreEqual (es_culture.Name, custom_converter.GetCultureName (es_culture), "#A2");
+		}
+
+		class CustomCultureInfoConverter : CultureInfoConverter
+		{
+			public new string GetCultureName (CultureInfo culture)
+			{
+				return base.GetCultureName (culture);
+			}
+		}
+#endif
 	}
 }
diff --git a/mcs/class/System/Test/System.ComponentModel/DateTimeOffsetConverterTests.cs b/mcs/class/System/Test/System.ComponentModel/DateTimeOffsetConverterTests.cs
new file mode 100644
index 0000000..c3a1162
--- /dev/null
+++ b/mcs/class/System/Test/System.ComponentModel/DateTimeOffsetConverterTests.cs
@@ -0,0 +1,240 @@
+//
+// DateTimeOffsetConverterTests.cs
+//
+// Author:
+//	Carlos Alberto Cortez (calberto.cortez at gmail.com)
+//
+// Copyright (C) 2010 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if NET_4_0
+
+using System;
+using System.ComponentModel;
+using System.ComponentModel.Design.Serialization;
+using System.Globalization;
+using NUnit.Framework;
+
+namespace MonoTests.System.ComponentModel
+{
+	[TestFixture]
+	public class DateTimeOffsetConverterTests
+	{
+		DateTimeOffsetConverter converter;
+        
+		[SetUp]
+		public void SetUp ()
+		{
+			converter = new DateTimeOffsetConverter ();
+		}
+
+		[Test]
+		public void CanConvertFrom ()
+		{
+			Assert.IsTrue (converter.CanConvertFrom (typeof (string)), "#A1");
+			Assert.IsFalse (converter.CanConvertFrom (typeof (DateTime)), "#A2");
+			Assert.IsFalse (converter.CanConvertFrom (typeof (DateTimeOffset)), "#A3");
+			Assert.IsFalse (converter.CanConvertFrom (typeof (object)), "#A4");
+			Assert.IsTrue (converter.CanConvertFrom (typeof (InstanceDescriptor)), "#A5");
+		}
+
+		[Test]
+		public void CanConvertTo ()
+		{
+			Assert.IsTrue (converter.CanConvertTo (typeof (string)), "#A1");
+			Assert.IsFalse (converter.CanConvertTo (typeof (object)), "#A2");
+			Assert.IsFalse (converter.CanConvertTo (typeof (DateTime)), "#A3");
+			Assert.IsFalse (converter.CanConvertTo (typeof (DateTimeOffset)), "#A4");
+			Assert.IsTrue (converter.CanConvertTo (typeof (InstanceDescriptor)), "#A5");
+		}
+
+		[Test]
+		public void ConvertFrom_String ()
+		{
+			DateTimeOffset dateOffset = DateTimeOffset.Now;
+			DateTimeOffset newDateOffset = (DateTimeOffset) converter.ConvertFrom (null, CultureInfo.InvariantCulture, 
+					dateOffset.ToString (CultureInfo.InvariantCulture));
+
+			Assert.AreEqual (dateOffset.Date, newDateOffset.Date, "#A1");
+			Assert.AreEqual (dateOffset.Hour, newDateOffset.Hour, "#A2");
+			Assert.AreEqual (dateOffset.Minute, newDateOffset.Minute, "#A3");
+			Assert.AreEqual (dateOffset.Second, newDateOffset.Second, "#A4");
+			Assert.AreEqual (dateOffset.Offset, newDateOffset.Offset, "#A5");
+
+			newDateOffset = (DateTimeOffset) converter.ConvertFrom (null, CultureInfo.InvariantCulture, String.Empty);
+			Assert.AreEqual (DateTimeOffset.MinValue, newDateOffset, "#B1");
+		}
+
+		[Test]
+		[ExpectedException (typeof (NotSupportedException))]
+		public void ConvertFrom_Object ()
+		{
+			converter.ConvertFrom (new object ());
+		}
+
+		[Test]
+		[ExpectedException (typeof (NotSupportedException))]
+		public void ConvertFrom_Int32 ()
+		{
+			converter.ConvertFrom (10);
+		}
+
+		[Test]
+		public void ConvertTo_MinValue ()
+		{
+			Assert.AreEqual (String.Empty, converter.ConvertTo (null, 
+				CultureInfo.InvariantCulture, DateTimeOffset.MinValue, typeof (string)), "#A1");
+			Assert.AreEqual (String.Empty, converter.ConvertTo (null, 
+				CultureInfo.CurrentCulture, DateTimeOffset.MinValue, typeof (string)), "#A2");
+			Assert.AreEqual (String.Empty, converter.ConvertTo (DateTimeOffset.MinValue, 
+				typeof (string)), "#A3");
+		}
+
+		[Test]
+		public void ConvertTo_MaxValue ()
+		{
+			Assert.AreEqual (DateTimeOffset.MaxValue.ToString (CultureInfo.InvariantCulture), 
+				converter.ConvertTo (null, CultureInfo.InvariantCulture, DateTimeOffset.MaxValue, 
+				typeof (string)), "#A1");
+		}
+
+		[Test]
+		[ExpectedException (typeof (NotSupportedException))]
+		public void ConvertTo_object ()
+		{
+			converter.ConvertTo (DateTimeOffset.Now, typeof (object));
+		}
+
+		[Test]
+		[ExpectedException (typeof (NotSupportedException))]
+		public void ConvertTo_int ()
+		{
+			converter.ConvertTo (DateTimeOffset.Now, typeof (int));
+		}
+
+		[Test]
+		[ExpectedException (typeof (NotSupportedException))]
+		public void ConvertTo_DateTime ()
+		{
+			converter.ConvertTo (DateTimeOffset.Now, typeof (DateTime));
+		}
+
+		[Test]
+		[ExpectedException (typeof (NotSupportedException))]
+		public void ConvertTo_DateTimeOffset ()
+		{
+			converter.ConvertTo (DateTimeOffset.Now, typeof (DateTimeOffset));
+		}
+
+		[Test]
+		public void ConvertToString_MinValue ()
+		{
+			Assert.AreEqual (String.Empty, converter.ConvertToString (null, 
+				CultureInfo.InvariantCulture, DateTimeOffset.MinValue), "#A1");
+
+			Assert.AreEqual (String.Empty, converter.ConvertToString (null, DateTimeOffset.MinValue), "#A2");
+			Assert.AreEqual (String.Empty, converter.ConvertToString (null, 
+				CultureInfo.CurrentCulture, DateTimeOffset.MinValue), "#A3");
+			Assert.AreEqual (String.Empty, converter.ConvertToString (DateTimeOffset.MinValue), "#A4");
+		}
+
+		[Test]
+		public void ConvertToString_MaxValue ()
+		{
+			Assert.AreEqual (DateTimeOffset.MaxValue.ToString (CultureInfo.InvariantCulture), 
+				converter.ConvertToString (null, CultureInfo.InvariantCulture, DateTimeOffset.MaxValue), "#A1");
+		}
+
+		[Test]
+		public void ConvertToString ()
+		{
+			CultureInfo ciUS = new CultureInfo("en-US");
+			CultureInfo ciGB = new CultureInfo("en-GB");
+			CultureInfo ciDE = new CultureInfo("de-DE");
+
+			DateTimeOffset dateOffset = new DateTimeOffset (2008, 12, 31, 23, 59, 58, 5, new TimeSpan (3, 6, 0));
+			DoTestToString ("12/31/2008 11:59 p.m. +03:06", dateOffset, ciUS);
+			DoTestToString ("31/12/2008 23:59 +03:06", dateOffset, ciGB);
+			DoTestToString ("31.12.2008 23:59 +03:06", dateOffset, ciDE);
+			DoTestToString ("12/31/2008 23:59:58 +03:06", dateOffset, CultureInfo.InvariantCulture);
+			Assert.AreEqual ("12/31/2008 23:59:58 +03:06", converter.ConvertToInvariantString (dateOffset), "Invariant");
+
+			dateOffset = new DateTimeOffset (new DateTime (2008, 12, 31), new TimeSpan (0, 0, 0));
+			DoTestToString ("12/31/2008 +00:00", dateOffset, ciUS);
+			DoTestToString ("31/12/2008 +00:00", dateOffset, ciGB);
+			DoTestToString ("31.12.2008 +00:00", dateOffset, ciDE);
+			DoTestToString ("2008-12-31 +00:00", dateOffset, CultureInfo.InvariantCulture);
+			Assert.AreEqual ("2008-12-31 +00:00", converter.ConvertToInvariantString (dateOffset), "Invariant");
+		}
+
+		void DoTestToString (string expected, DateTimeOffset value, CultureInfo ci)
+		{
+			String message = ci.Name;
+			if (message == null || message.Length == 0)
+				message = "?Invariant";
+			Assert.AreEqual (expected, converter.ConvertTo (null, ci, value, typeof (string)), message);
+		}
+
+		[Test]
+		[ExpectedException (typeof (FormatException))]
+		public void ConvertFrom_InvalidValue ()
+		{
+			converter.ConvertFrom ("*1");
+		}
+
+		[Test]
+		[ExpectedException (typeof (FormatException))]
+		public void ConvertFrom_InvalidValue_Invariant ()
+		{
+			converter.ConvertFrom (null, CultureInfo.InvariantCulture, "*1");
+		}
+
+		[Test]
+		[ExpectedException (typeof (FormatException))]
+		public void ConvertFromString_InvalidValue ()
+		{
+			converter.ConvertFromString ("*1");
+		}
+
+		[Test]
+		[ExpectedException (typeof (FormatException))]
+		public void ConvertFromString_InvalidValue_Invariant ()
+		{
+			converter.ConvertFromString (null, CultureInfo.InvariantCulture, "*1");
+		}
+
+		[Test]
+		public void ConvertTo_InstanceDescriptor ()
+		{
+			DateTimeOffset dto = new DateTimeOffset (new DateTime (2010, 10, 11), new TimeSpan (3, 6, 0));
+			InstanceDescriptor descriptor = (InstanceDescriptor) converter.ConvertTo (dto, typeof (InstanceDescriptor));
+
+			Assert.AreEqual (".ctor", descriptor.MemberInfo.Name, "#A0");
+			Assert.AreEqual (8, descriptor.Arguments.Count, "#A1");
+			DateTimeOffset dto2 = (DateTimeOffset) descriptor.Invoke ();
+			Assert.AreEqual (dto, dto2, "#A2");
+		}
+	}
+}
+
+#endif
+
diff --git a/mcs/class/System/Test/System.ComponentModel/TypeDescriptionProviderTest.cs b/mcs/class/System/Test/System.ComponentModel/TypeDescriptionProviderTest.cs
new file mode 100644
index 0000000..1c2a1e5
--- /dev/null
+++ b/mcs/class/System/Test/System.ComponentModel/TypeDescriptionProviderTest.cs
@@ -0,0 +1,77 @@
+//
+// TypeDescriptionProviderTest.cs
+//
+// Author:
+//	Carlos Alberto Cortez (calberto.cortez at gmail.com)
+//
+// Copyright (C) 2010 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.ComponentModel;
+using System.ComponentModel.Design.Serialization;
+using System.Globalization;
+using NUnit.Framework;
+
+namespace MonoTests.System.ComponentModel
+{
+	[TestFixture]
+	public class TypeDescriptionProviderTest
+	{
+#if NET_4_0
+		[Test]
+		public void IsSupportedType ()
+		{
+			CustomDescriptionProvider provider = new CustomDescriptionProvider ();
+			Assert.IsTrue (provider.IsSupportedType (typeof (string)), "#A1");
+			Assert.IsTrue (provider.IsSupportedType (typeof (object)), "#A2");
+			Assert.IsTrue (provider.IsSupportedType (typeof (CustomDescriptionProvider)), "#A3");
+		}
+
+		[Test]
+		public void GetRuntimeType ()
+		{
+			CustomDescriptionProvider provider = new CustomDescriptionProvider ();
+			Assert.AreEqual (typeof (CustomDescriptionProvider), provider.GetRuntimeType (typeof (CustomDescriptionProvider)), "#A0");
+			Assert.AreEqual (typeof (object), provider.GetRuntimeType (typeof (object)), "#A1");
+		}
+
+		[Test]
+		public void GetExtenderProviders ()
+		{
+			CustomDescriptionProvider provider = new CustomDescriptionProvider ();
+			IExtenderProvider [] providers = provider.GetExtenderProviders (typeof (object));
+			Assert.IsNotNull (providers, "#A0");
+			Assert.AreEqual (0, providers.Length, "#A1");
+		}
+
+		class CustomDescriptionProvider : TypeDescriptionProvider
+		{
+			public new IExtenderProvider [] GetExtenderProviders (object instance)
+			{
+				return base.GetExtenderProviders (instance);
+			}
+		}
+#endif
+	}
+}
+
diff --git a/mcs/class/System/Test/System.ComponentModel/TypeDescriptorTests.cs b/mcs/class/System/Test/System.ComponentModel/TypeDescriptorTests.cs
index 82ef991..7ae9130 100644
--- a/mcs/class/System/Test/System.ComponentModel/TypeDescriptorTests.cs
+++ b/mcs/class/System/Test/System.ComponentModel/TypeDescriptorTests.cs
@@ -14,11 +14,10 @@ using DescriptionAttribute = System.ComponentModel.DescriptionAttribute;
 using System.ComponentModel.Design;
 using System.Globalization;
 
-#if NET_2_0
 using System.Collections.Generic;
-#endif
 
 using NUnit.Framework;
+using System.Reflection;
 
 namespace MonoTests.System.ComponentModel
 {
@@ -460,7 +459,6 @@ namespace MonoTests.System.ComponentModel
 		}
 	}
 
-#if NET_2_0
 	class MyCustomTypeDescriptor : CustomTypeDescriptor
 	{
 		public MyTypeDescriptionProvider Provider { get; private set; }
@@ -502,7 +500,6 @@ namespace MonoTests.System.ComponentModel
 			return base.CreateInstance (provider, objectType, argTypes, args);
 		}
 	}
-#endif
 
 	[TestFixture]
 	public class TypeDescriptorTests
@@ -512,7 +509,6 @@ namespace MonoTests.System.ComponentModel
 		MyComponent nfscom = new MyComponent (new NoFilterSite (new MyContainer ()));
 		AnotherComponent anothercom = new AnotherComponent ();
 		
-#if NET_2_0
 		[Test]
 		[ExpectedException (typeof (ArgumentNullException))]
 		public void TestAddAttributes_Type_Attributes_1 ()
@@ -1054,7 +1050,6 @@ namespace MonoTests.System.ComponentModel
 			Assert.IsNotNull (type, "#F1");
 			Assert.AreEqual (typeof (int), type, "#F1-1");
 		}
-#endif
 
 		[Test]
 		public void TestICustomTypeDescriptor ()
@@ -1185,7 +1180,6 @@ namespace MonoTests.System.ComponentModel
 		[Test]
 		public void TestGetComponentName ()
 		{
-#if NET_2_0
 			// in MS.NET 2.0, GetComponentName no longer returns
 			// the type name if there's no custom typedescriptor
 			// and no site
@@ -1195,14 +1189,6 @@ namespace MonoTests.System.ComponentModel
 			Assert.IsNull (TypeDescriptor.GetComponentName (new Exception (), false), "#4");
 			Assert.IsNull (TypeDescriptor.GetComponentName (typeof (Exception)), "#4");
 			Assert.IsNull (TypeDescriptor.GetComponentName (typeof (Exception), false), "#6");
-#else
-			Assert.AreEqual ("MyComponent", TypeDescriptor.GetComponentName (com), "#1");
-			Assert.AreEqual ("MyComponent", TypeDescriptor.GetComponentName (com, false), "#2");
-			Assert.AreEqual ("Exception", TypeDescriptor.GetComponentName (new Exception ()), "#3");
-			Assert.AreEqual ("Exception", TypeDescriptor.GetComponentName (new Exception (), false), "#4");
-			Assert.IsNotNull (TypeDescriptor.GetComponentName (typeof (Exception)), "#5");
-			Assert.IsNotNull (TypeDescriptor.GetComponentName (typeof (Exception), false), "#6");
-#endif
 			Assert.AreEqual ("TestName", TypeDescriptor.GetComponentName (sitedcom), "#7");
 			Assert.AreEqual ("TestName", TypeDescriptor.GetComponentName (sitedcom), "#8");
 		}
@@ -1248,16 +1234,12 @@ namespace MonoTests.System.ComponentModel
 			Assert.AreEqual (typeof (TypeConverter), TypeDescriptor.GetConverter (new TestStruct ()).GetType (), "#26");
 			Assert.AreEqual (typeof (CollectionConverter), TypeDescriptor.GetConverter (new Hashtable ()).GetType (), "#27");
 
-#if NET_2_0
 			// Test from bug #76686
 			Assert.AreEqual  (typeof (Int32Converter), TypeDescriptor.GetConverter ((int?) 1).GetType (), "#28");
-#endif
 			Assert.IsTrue (TypeDescriptor.GetConverter (typeof (Component)) is ComponentConverter, "#29");
 			Assert.IsTrue (TypeDescriptor.GetConverter (new Component()) is ComponentConverter, "#30");
 
-#if NET_2_0
 			Assert.AreEqual (typeof (NullableConverter), TypeDescriptor.GetConverter (typeof (int?)).GetType (), "#31");
-#endif
 		}
 		
 		[Test]
@@ -1278,12 +1260,7 @@ namespace MonoTests.System.ComponentModel
 			Assert.AreEqual ("AnotherEvent", des.Name, "#D2");
 
 			des = TypeDescriptor.GetDefaultEvent (sitedcom);
-#if NET_2_0
 			Assert.IsNull (des, "#E1");
-#else
-			Assert.IsNotNull (des, "#E1");
-			Assert.AreEqual ("AnotherEvent", des.Name, "#E2");
-#endif
 
 			des = TypeDescriptor.GetDefaultEvent (new MyComponent(new AnotherSite ()));
 			Assert.IsNotNull (des, "#F1");
@@ -1313,11 +1290,6 @@ namespace MonoTests.System.ComponentModel
 		}
 		
 		[Test]
-#if ONLY_1_1
-		// throws NullReferenceException on MS.NET 1.x due to bug
-		// which is fixed in MS.NET 2.0
-		[NUnit.Framework.Category("NotDotNet")]
-#endif
 		public void TestGetDefaultProperty2 ()
 		{
 			PropertyDescriptor des = TypeDescriptor.GetDefaultProperty (sitedcom);
@@ -1474,11 +1446,6 @@ namespace MonoTests.System.ComponentModel
 		}
 
 		[Test]
-#if ONLY_1_1
-		// throws NullReferenceException on MS.NET 1.x due to bug
-		// which is fixed in MS.NET 2.0
-		[NUnit.Framework.Category("NotDotNet")]
-#endif
 		public void TestGetProperties2 ()
 		{
 			PropertyDescriptorCollection col = TypeDescriptor.GetProperties (sitedcom);
@@ -1492,9 +1459,6 @@ namespace MonoTests.System.ComponentModel
 		}
 
 		[Test]
-#if ONLY_1_1
-		[NUnit.Framework.Category ("NotDotNet")] // .NET 1.x (or csc 1.x) does not retain the original order
-#endif
 		public void GetProperties_Order ()
 		{
 			MyComponent com = new MyComponent (new MyContainer ());
@@ -1548,5 +1512,19 @@ namespace MonoTests.System.ComponentModel
 			Assert.AreEqual (1, pc.Count, "#1");
 			Assert.AreEqual ("Length", pc [0].Name, "#2");
 		}
+
+#if NET_4_0
+		[Test]
+		public void InterfaceType ()
+		{
+			Type interface_type = TypeDescriptor.InterfaceType;
+			Assert.AreEqual ("TypeDescriptorInterface", interface_type.Name, "#A0");
+			Assert.IsTrue (interface_type.IsClass, "#A1");
+			Assert.IsTrue (interface_type.IsSealed, "#A2");
+			Assert.AreEqual (typeof (object), interface_type.BaseType, "#A3");
+			Assert.IsFalse (interface_type.IsInterface, "#A4");
+			Assert.IsFalse (interface_type.IsPublic, "#A5");
+		}
+#endif
 	}
 }
diff --git a/mcs/class/System/Test/System.Net.Mail/ChangeLog b/mcs/class/System/Test/System.Net.Mail/ChangeLog
index 020c900..4981b5e 100644
--- a/mcs/class/System/Test/System.Net.Mail/ChangeLog
+++ b/mcs/class/System/Test/System.Net.Mail/ChangeLog
@@ -1,3 +1,12 @@
+2010-10-13  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Misc. fixes
+
+	-Fix validation of display name and email. -Cache user, host and
+	ToString() values. -Fix Equals and GetHashCode.
+
+	Fixes bug 645871.
+
 2010-08-04  Raja R Harinath  <harinath at hurrynot.org>
 
 	Implement envelope sender semantics in SmtpClient
diff --git a/mcs/class/System/Test/System.Net.Mail/MailAddressTest.cs b/mcs/class/System/Test/System.Net.Mail/MailAddressTest.cs
index cc3d149..fd5fcce 100644
--- a/mcs/class/System/Test/System.Net.Mail/MailAddressTest.cs
+++ b/mcs/class/System/Test/System.Net.Mail/MailAddressTest.cs
@@ -107,7 +107,13 @@ namespace MonoTests.System.Net.Mail
 		}
 
 		[Test]
-		[Category ("NotWorking")]
+		[ExpectedException (typeof (ArgumentException))]
+		public void Constructor_Address_Empty ()
+		{
+			new MailAddress ("");
+		}
+
+		[Test]
 		public void Constructor0_Address_Invalid ()
 		{
 			try {
@@ -246,6 +252,58 @@ namespace MonoTests.System.Net.Mail
 		}
 
 		[Test]
+		public void DisplayName_Precedence ()
+		{
+			var ma = new MailAddress ("Hola <foo at bar.com>");
+			Assert.AreEqual (ma.DisplayName, "Hola");
+			ma = new MailAddress ("Hola <foo at bar.com>", "Adios");
+			Assert.AreEqual (ma.DisplayName, "Adios");
+			ma = new MailAddress ("Hola <foo at bar.com>", "");
+			Assert.AreEqual (ma.DisplayName, "");
+		}
+
+		[Test]
+		[ExpectedException (typeof (FormatException))]
+		public void Address_Invalid ()
+		{
+			new MailAddress ("foobar");
+		}
+
+		[Test]
+		public void Address_QuoteFirst ()
+		{
+			new MailAddress ("\"Hola\" <foo at bar.com>");
+		}
+
+		[Test]
+		[ExpectedException (typeof (FormatException))]
+		public void Address_QuoteNotFirst ()
+		{
+			new MailAddress ("H\"ola\" <foo at bar.com>");
+		}
+
+		[Test]
+		[ExpectedException (typeof (FormatException))]
+		public void Address_NoClosingQuote ()
+		{
+			new MailAddress ("\"Hola <foo at bar.com>");
+		}
+
+		[Test]
+		[ExpectedException (typeof (FormatException))]
+		public void Address_NoUser ()
+		{
+			new MailAddress ("Hola <@bar.com>");
+		}
+
+		[Test]
+		[ExpectedException (typeof (FormatException))]
+		public void Address_NoUserNoHost ()
+		{
+			new MailAddress ("Hola <@>");
+		}
+
+		[Test]
 		public void Address ()
 		{
 			Assert.AreEqual ("foo at example.com", address.Address);
@@ -274,6 +332,21 @@ namespace MonoTests.System.Net.Mail
 		{
 			Assert.AreEqual ("\"Mr. Foo Bar\" <foo at example.com>", address.ToString ());
 		}
+
+		[Test]
+		public void EqualsTest ()
+		{
+			var n = new MailAddress ("Mr. Bar <a at example.com>");
+			var n2 = new MailAddress ("a at example.com", "Mr. Bar");
+			Assert.AreEqual (n, n2);
+		}
+		[Test]
+		public void EqualsTest2 ()
+		{
+			var n = new MailAddress ("Mr. Bar <a at example.com>");
+			var n2 = new MailAddress ("MR. BAR <a at EXAMPLE.com>");
+			Assert.AreEqual (n, n2);
+		}
 	}
 }
 #endif
diff --git a/mcs/class/System/Test/System.Net.Sockets/ChangeLog b/mcs/class/System/Test/System.Net.Sockets/ChangeLog
index 8222d23..378054e 100644
--- a/mcs/class/System/Test/System.Net.Sockets/ChangeLog
+++ b/mcs/class/System/Test/System.Net.Sockets/ChangeLog
@@ -1,3 +1,29 @@
+2010-09-29  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* Test/System.Net.Sockets/SocketTest.cs: Add parameter validation
+	test cases for both ReceiveAsync and SendAsync
+
+2010-09-23  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* Test/System.Net.Sockets/SocketTest.cs: Add test case where
+	buffers can be set to 0 under Windows (but has a 256 bytes minimum
+	on Linux)
+
+2010-09-22  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	LocalEndPoint works now for non-blocking connects
+
+	We didn't keep the endpoint around for non-blocking connects and
+	later, when Poll() was called, we didn't have the information.
+	Also 'isbound' wasn't being set in a few places and UDP sockets
+	needed to be marked as not connected after a call to Connect()
+	with an Any address.
+
+	Removed an old test for Connect(Any) with UDP sockets, since this
+	is used to disconnect them now.
+
+	Fixes bug #640749.
+
 2009-09-26  Sebastien Pouliot  <sebastien at ximian.com>
 
 	* SocketAsyncEventArgsTest.cs: New. Unit tests
diff --git a/mcs/class/System/Test/System.Net.Sockets/ChangeLog b/mcs/class/System/Test/System.Net.Sockets/ChangeLog.old
similarity index 100%
copy from mcs/class/System/Test/System.Net.Sockets/ChangeLog
copy to mcs/class/System/Test/System.Net.Sockets/ChangeLog.old
diff --git a/mcs/class/System/Test/System.Net.Sockets/SocketTest.cs b/mcs/class/System/Test/System.Net.Sockets/SocketTest.cs
index aeb93a0..15ac731 100644
--- a/mcs/class/System/Test/System.Net.Sockets/SocketTest.cs
+++ b/mcs/class/System/Test/System.Net.Sockets/SocketTest.cs
@@ -33,6 +33,7 @@ namespace MonoTests.System.Net.Sockets
 		{
 			IPEndPoint ep = new IPEndPoint (IPAddress.Any, 0);
 
+			/* UDP sockets use Any to disconnect
 			try {
 				using (Socket s = new Socket (AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp)) {
 					s.Connect (ep);
@@ -42,6 +43,7 @@ namespace MonoTests.System.Net.Sockets
 			} catch (SocketException ex) {
 				Assert.AreEqual (10049, ex.ErrorCode, "#2");
 			}
+			*/
 
 			try {
 				using (Socket s = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)) {
@@ -889,6 +891,21 @@ namespace MonoTests.System.Net.Sockets
 		}
 
 		[Test]
+		[Category("NotWorking")] // We cannot totally remove buffers (minimum is set to 256
+		public void BuffersCheck_None ()
+		{
+			using (Socket s = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)) {
+				int original = s.ReceiveBufferSize;
+				s.ReceiveBufferSize = 0;
+				Assert.AreEqual (0, s.ReceiveBufferSize, "ReceiveBufferSize " + original.ToString ());
+
+				original = s.SendBufferSize;
+				s.SendBufferSize = 0;
+				Assert.AreEqual (0, s.SendBufferSize, "SendBufferSize " + original.ToString ());
+			}
+		}
+
+		[Test]
 		[ExpectedException (typeof(ObjectDisposedException))]
 		public void ReceiveBufferSizeClosed ()
 		{
@@ -4013,6 +4030,86 @@ namespace MonoTests.System.Net.Sockets
 				s.Close ();
 			}
 		}
+
+		[Test]
+		[ExpectedException (typeof (NullReferenceException))]
+		public void ReceiveAsync_Null ()
+		{
+			using (Socket s = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)) {
+				s.ReceiveAsync (null);
+			}
+		}
+
+		[Test]
+		[ExpectedException (typeof (NullReferenceException))]
+		public void ReceiveAsync_Default ()
+		{
+			using (Socket s = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)) {
+				SocketAsyncEventArgs saea = new SocketAsyncEventArgs ();
+				s.ReceiveAsync (saea);
+			}
+		}
+
+
+		[Test]
+		[ExpectedException (typeof (NullReferenceException))]
+		public void ReceiveAsync_NullBuffer ()
+		{
+			using (Socket s = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)) {
+				SocketAsyncEventArgs saea = new SocketAsyncEventArgs ();
+				saea.SetBuffer (null, 0, 0);
+				s.ReceiveAsync (null);
+			}
+		}
+
+		[Test]
+		[ExpectedException (typeof (ObjectDisposedException))]
+		public void ReceiveAsync_ClosedSocket ()
+		{
+			Socket s = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
+			s.Close ();
+			s.ReceiveAsync (null);
+		}
+
+		[Test]
+		[ExpectedException (typeof (NullReferenceException))]
+		public void SendAsync_Null ()
+		{
+			using (Socket s = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)) {
+				s.SendAsync (null);
+			}
+		}
+
+		[Test]
+		[ExpectedException (typeof (NullReferenceException))]
+		public void SendAsync_Default ()
+		{
+			using (Socket s = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)) {
+				SocketAsyncEventArgs saea = new SocketAsyncEventArgs ();
+				s.SendAsync (saea);
+			}
+		}
+
+
+		[Test]
+		[ExpectedException (typeof (NullReferenceException))]
+		public void SendAsync_NullBuffer ()
+		{
+			using (Socket s = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)) {
+				SocketAsyncEventArgs saea = new SocketAsyncEventArgs ();
+				saea.SetBuffer (null, 0, 0);
+				s.SendAsync (null);
+			}
+		}
+
+		[Test]
+		[ExpectedException (typeof (ObjectDisposedException))]
+		public void SendAsync_ClosedSocket ()
+		{
+			Socket s = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
+			s.Close ();
+			s.SendAsync (null);
+		}
 	}
 }
 
diff --git a/mcs/class/System/Test/System/ChangeLog b/mcs/class/System/Test/System/ChangeLog
index 9917419..a9e3129 100644
--- a/mcs/class/System/Test/System/ChangeLog
+++ b/mcs/class/System/Test/System/ChangeLog
@@ -1,3 +1,180 @@
+2010-11-18  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* Test/System/UriTest.cs: More test cases for GetComponents wrt
+	different UriFormat
+
+2010-10-08  Sebastien Pouliot  <sebastien at ximian.com>
+
+	Fix ASP.NET HttpResponse not to depend on a (fixed) bug in
+	UriBuilder
+
+2010-09-22  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* Test/System/UriTest2.cs: Add test case where host name is β
+	(beta)
+
+2010-09-21  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* Test/System/UriTest2.cs: Add test cases with different, mostly
+	invalid, ports (e.g. negative, float, too big...)
+
+2010-09-21  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* Test/System/UriTest2.cs: Add some test cases for host names
+
+2010-09-20  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* Test/System/UriTest2.cs: Add test case where an original URI
+	contains an escaped path.
+
+2010-09-20  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* Test/System/UriTest2.cs: Add test cases for Fragment and Query
+	when special characters are used. Most of them are not escaped in
+	ToString * Test/System/UriTest3.cs: Uncomment an Assert that is
+	now fixed.
+
+2010-09-20  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* Test/System/UriTest2.cs: Add test case with an empty UserInfo
+
+2010-09-20  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* Test/System/UriTest.cs: Adjust some test cases wrt Win32 *
+	Test/System/UriTest2.cs: Adjust a test case wrt Win32
+
+2010-09-20  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* Test/System/UriTest.cs: Remove NET_2_0 and ONLY_1_1
+
+2010-09-20  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* Test/System/UriTest2.cs: Add test cases where some bad (if
+	absolute) URI are valid when merged (as relative) with an absolute
+	URI
+
+2010-09-17  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* Test/System/UriTest2.cs: Add test case to show that a relative
+	URI is NOT escaped by ToString
+
+2010-09-17  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* Test/System/UriTest2.cs: Add DnsSafeHost test cases for IPv6
+	address, one without scope id, another with a scope id
+
+2010-09-17  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* Test/System/UriTest2.cs: Add test cases where an URI contains a
+	':' but is not followed by a port number
+
+2010-09-17  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* Test/System/UriBuilderTest.cs: Add regression test for that
+	.ctor
+
+2010-09-17  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* Test/System/UriBuilderTest.cs: Add test case with string URI
+	that do not provide a scheme - UriBuilder will default them to
+	http:// even if Uri would not parse them
+
+2010-09-17  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* Test/System/UriBuilderTest.cs: Add test cases with incomplete
+	IPv6 addresses. Add test case with a relative Uri used in
+	UriBuilder ctor
+
+2010-09-17  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* Test/System/UriBuilderTest.cs: Add test case with path missing
+	the initial / which shows the UriBuilder.Path property is being
+	updated after the creation of the Uri instance.
+
+2010-09-16  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* Test/System/UriBuilderTest.cs: Add test case with IPv6 host
+	(address) which shows the UriBuilder.Host property is being
+	updated after the creation of the Uri instance.
+
+2010-09-16  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* Test/System/UriBuilderTest.cs: Drop NET_2_0 defines and add new
+	ones for NET_4_0. Add more asserts in the test cases that were
+	failing.
+
+2010-09-16  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* Test/System/UriTest2.cs: Add test case where %2e and %2E are
+	used
+
+2010-09-16  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* Test/System/UriTest2.cs: Remove NET_2_0 and ONLY_1_1 defines
+	from tests * Test/System/UriTest3.cs: Remove NET_2_0 and
+	[Category("NotWorking")] from tests. Merge
+	MakeRelativeUri_Uri_Null_[MS|Mono] together since the (reported)
+	issue was fixed in NET_4_0
+
+2010-09-16  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* Test/System/UriTest2.cs: Add new test case for 'file' URIs and
+	some asserts on "custom" URI (which do support queries)
+
+2010-09-15  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* Test/System/UriTest2.cs: Add new test case for 'ftp' including
+	dealing with custom port and user/password data.
+
+2010-09-15  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* Test/System/UriTest2.cs: Add test cases for 'nntp://'
+
+2010-09-15  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* Test/System/UriTest2.cs: Add test case for 'news:' showing the
+	lack of Query and Port (but support for Fragment) and the
+	escape-ing differences.
+
+2010-09-15  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* Test/System/UriTest.cs: Add test case to show that the segments
+	cannot be modified by accessing the elements of the Segment
+	property.
+
+2010-09-15  Sebastien Pouliot  <sebastien at ximian.com>
+
+	Fix Uri.ToString when forward slashes are used
+
+2010-09-15  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* Test/System/UriTest2.cs: Add test cases for segments on an URI
+	that contains a drive letter and (forward) slashes.
+
+2010-09-15  Raja R Harinath  <harinath at hurrynot.org>
+
+	Fix a few CRLF issues
+
+2010-09-14  Sebastien Pouliot  <sebastien at ximian.com>
+
+	Correctly handle the (uncommon) 4 slashes //// case in Uri
+
+2010-09-14  Sebastien Pouliot  <sebastien at ximian.com>
+
+	Fix some (long standing) NotWorking test cases on Uri
+
+2010-09-14  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* Test/System/UriTest2.cs: Add test cases for drives versus hosts
+
+2010-09-13  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* Test/System/UriTest.cs: Adjust test cases to work with 4.0. Mark
+	with NotDotNet two test cases that are Mono/Unix-specific *
+	Test/System/UriTest2.cs: Add new test cases where a relative Uri
+	is merged with an absolute Uri (some changes in SL4/FX4 wrt FX2) *
+	Test/System/UriTest3.cs: Adjust for bugs fixed after FX 2.0.
+
 2010-08-31  Rolf Bjarne Kvinge  <RKvinge at novell.com>
 
 	Trim the uri in UriParser::GetComponents, just like we do in
diff --git a/mcs/class/System/Test/System/UriBuilderTest.cs b/mcs/class/System/Test/System/UriBuilderTest.cs
index 48906ac..bf341af 100644
--- a/mcs/class/System/Test/System/UriBuilderTest.cs
+++ b/mcs/class/System/Test/System/UriBuilderTest.cs
@@ -6,6 +6,7 @@
 //   Martin Willemoes Hansen (mwh at sysrq.dk)
 //
 // (C) 2003 Martin Willemoes Hansen
+// Copyright (C) 2010 Novell, Inc (http://www.novell.com)
 //
 
 using NUnit.Framework;
@@ -29,11 +30,7 @@ namespace MonoTests.System
 		{
 			b = new UriBuilder ();
 			Assert.AreEqual ("http", b.Scheme, "#1");
-#if NET_2_0
 			Assert.AreEqual ("localhost", b.Host, "#2");
-#else
-			Assert.AreEqual ("loopback", b.Host, "#3");
-#endif
 			Assert.AreEqual (-1, b.Port, "#4");
 			Assert.AreEqual (string.Empty, b.Query, "#5");
 			Assert.AreEqual (string.Empty, b.Fragment, "#6");
@@ -61,23 +58,16 @@ namespace MonoTests.System
 			Assert.AreEqual (80, b.Port, "#B5");
 			Assert.AreEqual ("?name=50", b.Query, "#B5");
 			Assert.AreEqual ("http", b.Scheme, "#B6");
-#if NET_2_0
-			// our 1.0 behavior matches that of .NET 2.0
 			Assert.AreEqual ("http://www.ximian.com/?name=50#test", b.Uri.ToString (), "#B7");
-#endif
 			Assert.AreEqual (string.Empty, b.UserName, "#B8");
 		}
 
 		[Test] // ctor (string)
-#if ONLY_1_1
-		[Category ("NotWorking")] // we always throw an ArgumentNullException
-#endif
 		public void Constructor1_Uri_Null ()
 		{
 			try {
 				new UriBuilder ((string) null);
 				Assert.Fail ("#1");
-#if NET_2_0
 			} catch (ArgumentNullException ex) {
 				Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
 				Assert.IsNull (ex.InnerException, "#3");
@@ -85,14 +75,14 @@ namespace MonoTests.System
 				Assert.IsNotNull (ex.ParamName, "#5");
 				Assert.AreEqual ("uriString", ex.ParamName, "#6");
 			}
-#else
-			} catch (NullReferenceException) {
-			}
-#endif
 		}
 
 		[Test] // ctor (Uri)
+#if NET_4_0
+		[ExpectedException (typeof (ArgumentNullException))]
+#else
 		[ExpectedException (typeof (NullReferenceException))]
+#endif
 		public void Constructor2_Uri_Null ()
 		{
 			new UriBuilder ((Uri) null);
@@ -113,24 +103,43 @@ namespace MonoTests.System
 		}
 		
 		[Test]
-		// This test does not make sense, will fix soon
-		[Category ("NotWorking")] // bug #75144
+		public void Constructor_StringStringInt ()
+		{
+			UriBuilder ub = new UriBuilder ("http", "www.mono-project.com", 80);
+			Assert.AreEqual ("http://www.mono-project.com/", ub.Uri.AbsoluteUri, "Uri.AbsoluteUri");
+		}
+
+		[Test]
+		[ExpectedException (typeof (InvalidOperationException))]
+		public void Constructor_RelativeUri ()
+		{
+			Uri relative = new Uri ("../dir/subdir/file", UriKind.RelativeOrAbsolute);
+			UriBuilder ub = new UriBuilder (relative);
+		}
+
+		[Test]
 		public void UserInfo ()
 		{
-			b = new UriBuilder ("mailto://myname:mypwd@contoso.com?subject=hello");
-#if NET_2_0
-			Assert.AreEqual (string.Empty, b.UserName, "#1");
-			Assert.AreEqual (string.Empty, b.Password, "#2");
-#else
-			// NotWorking here for 1.x (bad behaviour in 1.x - may not be worth fixing)
-			Assert.AreEqual ("myname", b.UserName, "#1");
-			Assert.AreEqual ("mypwd", b.Password, "#2");
-#endif			
+			string s = "mailto://myname:mypwd@contoso.com?subject=hello";
+			b = new UriBuilder (s);
+			Assert.AreEqual (s, b.ToString (), "1.ToString");
+			Assert.AreEqual (string.Empty, b.UserName, "1.UserName");
+			Assert.AreEqual (string.Empty, b.Password, "1.Password");
+			Assert.AreEqual ("//myname:mypwd at contoso.com", b.Uri.LocalPath, "1.Uri.LocalPath");
+
+			// weird ?caching? issue, UserInfo is not updated if we look at the value of UserName before setting Password
 			b = new UriBuilder ("mailto", "contoso.com");
 			b.UserName = "myname";
+			Assert.AreEqual ("myname", b.Uri.UserInfo, "2.UserName");
 			b.Password = "mypwd";
-			// NotWorking here for 2.0 - worth fixing
-			Assert.AreEqual ("myname:mypwd", b.Uri.UserInfo, "#3");
+			Assert.AreEqual ("myname", b.Uri.UserInfo, "2.Password");
+			Assert.AreEqual ("/", b.Uri.LocalPath, "2.Uri.LocalPath");
+
+			b = new UriBuilder ("mailto", "contoso.com");
+			b.UserName = "myname";
+			b.Password = "mypwd";
+			Assert.AreEqual ("myname:mypwd", b.Uri.UserInfo, "3.Uri.UserInfo");
+			Assert.AreEqual ("/", b.Uri.LocalPath, "3.Uri.LocalPath");
 		}
 
 		[Test]
@@ -146,7 +155,7 @@ namespace MonoTests.System
 		{
 			b.Port = -12345;
 		}
-#if NET_2_0
+
 		[Test]
 		public void DefaultPort ()
 		{
@@ -154,14 +163,7 @@ namespace MonoTests.System
 			Assert.AreEqual (-1, b.Port, "#1");
 			Assert.AreEqual ("http://www.ximian.com/foo/bar/index.html", b.ToString (), "#2");
 		}
-#else
-		[Test]
-		[ExpectedException (typeof (ArgumentOutOfRangeException))]
-		public void BadPort3 ()
-		{
-			b.Port = -1;
-		}
-#endif
+
 		[Test]
 		public void Query ()
 		{
@@ -175,20 +177,12 @@ namespace MonoTests.System
 			b.Fragment = "test";
 			Assert.AreEqual ("#test", b.Fragment, "#5");
 			b.Query = "name";
-#if NET_2_0
 			Assert.AreEqual ("#test", b.Fragment, "#6");
-#else
-			Assert.AreEqual (string.Empty, b.Fragment, "#6");
-#endif
 			Assert.AreEqual ("?name", b.Query, "#7");
 			b.Fragment = "run";
 			Assert.AreEqual ("#run", b.Fragment, "#8");
 			b.Query = null;
-#if NET_2_0
 			Assert.AreEqual ("#run", b.Fragment, "#9");
-#else
-			Assert.AreEqual (string.Empty, b.Fragment, "#9");
-#endif
 			Assert.AreEqual (string.Empty, b.Query, "#10");
 		}
 		
@@ -205,11 +199,7 @@ namespace MonoTests.System
 			b.Query = "name";
 			Assert.AreEqual ("?name", b.Query, "#5");
 			b.Fragment = null;
-#if NET_2_0
 			Assert.AreEqual ("?name", b.Query, "#6");
-#else
-			Assert.AreEqual (string.Empty, b.Query, "#6");
-#endif
 			Assert.AreEqual (string.Empty, b.Fragment, "#7");
 		}
 		
@@ -233,25 +223,22 @@ namespace MonoTests.System
 		}
 		
 		[Test]
-#if NET_2_0
-		[Category ("NotWorking")] // equals changed in 2.0
-#endif
 		public void Equals ()
 		{
 			b = new UriBuilder ("http://", "www.ximian.com", 80, "foo/bar/index.html?item=1");
+			Assert.AreEqual ("foo/bar/index.html%3Fitem=1", b.Path, "1.Path");
+			Assert.AreEqual ("http://www.ximian.com:80/foo/bar/index.html%3Fitem=1", b.ToString (), "1.ToString");
+
 			b2 = new UriBuilder ("http", "www.ximian.com", 80, "/foo/bar/index.html", "?item=1");
+			Assert.AreEqual ("http://www.ximian.com:80/foo/bar/index.html?item=1", b2.ToString (), "2.ToString");
+
 			b3 = new UriBuilder (new Uri ("http://www.ximian.com/foo/bar/index.html?item=1"));
-#if NET_2_0
+			Assert.AreEqual ("http://www.ximian.com:80/foo/bar/index.html?item=1", b3.ToString (), "3.ToString");
+
 			Assert.IsFalse (b.Equals (b2), "#1");
 			Assert.IsFalse (b.Uri.Equals (b2.Uri), "#2");
 			Assert.IsFalse (b.Equals (b3), "#3");
 			Assert.IsFalse (b3.Equals (b), "#4");
-#else
-			Assert.IsTrue (b.Equals (b2), "#1");
-			Assert.IsTrue (b.Uri.Equals (b2.Uri), "#2");
-			Assert.IsTrue (b.Equals (b3), "#3");
-			Assert.IsTrue (b3.Equals (b), "#4");
-#endif
 			Assert.IsTrue (b2.Equals (b3), "#5");
 		}
 		
@@ -293,6 +280,99 @@ namespace MonoTests.System
 			Assert.AreEqual ("#Features", uri.Fragment, "#1");
 			Assert.AreEqual ("http://www.mono-project.com/Main_Page#Features", uri.Uri.ToString (), "#2");
 		}
+
+		[Test]
+		public void IPv6_Host ()
+		{
+			UriBuilder ub = new UriBuilder ("http", "[1:2:3:4:5:6:7:8]", 8080, "/dir/subdir/file");
+			Assert.AreEqual ("[1:2:3:4:5:6:7:8]", ub.Host, "Host.1");
+			Assert.AreEqual ("[0001:0002:0003:0004:0005:0006:0007:0008]", ub.Uri.Host, "Uri.Host");
+			// once the Uri is created then some builder properties may change
+			Assert.AreEqual ("[0001:0002:0003:0004:0005:0006:0007:0008]", ub.Host, "Host.2");
+		}
+
+		[Test]
+		public void IPv6_Host_IncompleteAddress ()
+		{
+			UriBuilder ub = new UriBuilder ("http", "1:2:3:4:5:6:7:8", 8080, "/dir/subdir/file");
+			Assert.AreEqual ("[1:2:3:4:5:6:7:8]", ub.Host, "1.Host");
+			Assert.AreEqual ("http://[1:2:3:4:5:6:7:8]:8080/dir/subdir/file", ub.ToString (), "1.ToString ()");
+
+			ub = new UriBuilder ("http", "1:", 8080, "/dir/subdir/file");
+			Assert.AreEqual ("[1:]", ub.Host, "2.Host");
+			Assert.AreEqual ("http://[1:]:8080/dir/subdir/file", ub.ToString (), "2.ToString ()");
+
+			ub = new UriBuilder ("http", "[1:", 8080, "/dir/subdir/file");
+			Assert.AreEqual ("[1:", ub.Host, "3.Host");
+			Assert.AreEqual ("http://[1::8080/dir/subdir/file", ub.ToString (), "3.ToString ()");
+
+			ub = new UriBuilder ("http", "1:2]", 8080, "/dir/subdir/file");
+			Assert.AreEqual ("[1:2]]", ub.Host, "4.Host");
+			Assert.AreEqual ("http://[1:2]]:8080/dir/subdir/file", ub.ToString (), "4.ToString ()");
+		}
+
+		[Test]
+		public void Path_UriAbsolutePath_Path ()
+		{
+			UriBuilder ub = new UriBuilder ("http", "127.0.0.1", 80, "dir/subdir/file");
+			Assert.AreEqual ("dir/subdir/file", ub.Path, "Path.1");
+			Assert.AreEqual ("/dir/subdir/file", ub.Uri.AbsolutePath, "Uri.AbsolutePath");
+			// once the Uri is created then some builder properties may change
+			Assert.AreEqual ("/dir/subdir/file", ub.Path, "Path.2");
+		}
+
+		[Test]
+		public void UnparsableUri ()
+		{
+			// some URI can't be parsed by System.Uri but are accepted by UriBuilder
+			Uri u = null;
+			string uri = "www.mono-project.com";
+			Assert.IsFalse (Uri.TryCreate (uri, UriKind.Absolute, out u), "1.Uri.TryCreate");
+			UriBuilder ub = new UriBuilder (uri);
+			Assert.AreEqual ("www.mono-project.com", ub.Host, "1.Host");
+			Assert.AreEqual ("http", ub.Scheme, "1.Scheme");
+			Assert.AreEqual (80, ub.Port, "1.Port");
+			Assert.AreEqual ("/", ub.Path, "1.Path");
+
+			// always assume http, port 80
+			uri = "ftp.novell.com/dir/subdir/file";
+			ub = new UriBuilder (uri);
+			Assert.IsFalse (Uri.TryCreate (uri, UriKind.Absolute, out u), "2.Uri.TryCreate");
+			Assert.AreEqual ("ftp.novell.com", ub.Host, "2.Host");
+			Assert.AreEqual ("http", ub.Scheme, "2.Scheme");
+			Assert.AreEqual (80, ub.Port, "2.Port");
+			Assert.AreEqual ("/dir/subdir/file", ub.Path, "2.Path");
+		}
+
+		[Test]
+		public void AspNetRedirectUsage_Old ()
+		{
+			Uri uri = new Uri ("http://192.168.0.21:80/WebResource.axd?d=AAAAAAAAAAEAAAAAAAAAAA2");
+			UriBuilder ub = new UriBuilder (uri);
+			ub.Path = "error404.aspx?aspxerrorpath=/WebResource.axd";
+			ub.Fragment = null;
+			ub.Password = null;
+			ub.Query = null;
+			ub.UserName = null;
+			// a bug in older UriBuilder did not encode the ? - existing ASP.NET depends on buggy behavior
+			Assert.AreEqual ("http://192.168.0.21/error404.aspx%3Faspxerrorpath=/WebResource.axd", ub.Uri.ToString ());
+		}
+
+		[Test]
+		public void AspNetRedirectUsage_New ()
+		{
+			string path = "error404.aspx?aspxerrorpath=/WebResource.axd";
+			Uri uri = new Uri ("http://192.168.0.21:80/WebResource.axd?d=AAAAAAAAAAEAAAAAAAAAAA2");
+			UriBuilder ub = new UriBuilder (uri);
+			int qpos = path.IndexOf ('?');
+			ub.Path = path.Substring (0, qpos);
+			ub.Fragment = null;
+			ub.Password = null;
+			ub.Query = path.Substring (qpos + 1);
+			ub.UserName = null;
+			// this is what ASP.NET really means (the ?)
+			Assert.AreEqual ("http://192.168.0.21/error404.aspx?aspxerrorpath=/WebResource.axd", ub.Uri.ToString ());
+		}
 	}
 }
 
diff --git a/mcs/class/System/Test/System/UriTest.cs b/mcs/class/System/Test/System/UriTest.cs
index 2c9d43c..f3d2dd7 100644
--- a/mcs/class/System/Test/System/UriTest.cs
+++ b/mcs/class/System/Test/System/UriTest.cs
@@ -155,12 +155,9 @@ namespace MonoTests.System
 			uri = new Uri (new Uri("http://www.contoso.com/xxx/yyy/index.htm"), "../foo/bar/Hello World.htm?x=0:8", false);
 			Assert.AreEqual ("http://www.contoso.com/xxx/foo/bar/Hello%20World.htm?x=0:8", uri.AbsoluteUri, "#rel8");
 			uri = new Uri (new Uri("http://www.contoso.com/xxx/yyy/index.htm"), "../../../foo/bar/Hello World.htm?x=0:8", false);
-#if NET_2_0
 			Assert.AreEqual ("http://www.contoso.com/foo/bar/Hello%20World.htm?x=0:8", uri.AbsoluteUri, "#rel9");
 			Assert.AreEqual ("/foo/bar/Hello%20World.htm", uri.AbsolutePath, "#rel9-path");
-#else
-			Assert.AreEqual ("http://www.contoso.com/../foo/bar/Hello%20World.htm?x=0:8", uri.AbsoluteUri, "#rel9");
-#endif
+
 			uri = new Uri (new Uri("http://www.contoso.com/xxx/yyy/index.htm"), "./foo/bar/Hello World.htm?x=0:8", false);
 			Assert.AreEqual ("http://www.contoso.com/xxx/yyy/foo/bar/Hello%20World.htm?x=0:8", uri.AbsoluteUri, "#rel10");
 
@@ -175,7 +172,7 @@ namespace MonoTests.System
 #endif
 			uri = new Uri (new Uri("http://www.xxx.com/index.htm"), "#here");
 			Assert.AreEqual ("http://www.xxx.com/index.htm#here", uri.ToString(), "#rel32");
-#if NET_2_0
+
 			uri = new Uri ("relative", UriKind.Relative);
 			uri = new Uri ("relative/abc", UriKind.Relative);
 			uri = new Uri ("relative", UriKind.RelativeOrAbsolute);
@@ -183,7 +180,6 @@ namespace MonoTests.System
 			Assert.IsTrue (!uri.IsAbsoluteUri, "#rel33");
 			Assert.AreEqual (uri.OriginalString, "relative", "#rel34");
 			Assert.IsTrue (!uri.UserEscaped, "#rel35");
-#endif
 		}
 
 		[Test]
@@ -211,30 +207,20 @@ namespace MonoTests.System
 			Assert.IsTrue (!uri.IsLoopback, "IsLoopback");
 			Assert.IsTrue (!uri.IsUnc, "IsUnc");
 			Assert.IsTrue (!uri.UserEscaped, "UserEscaped");
-#if NET_2_0
+
 			Assert.AreEqual (UriHostNameType.Unknown, uri.HostNameType, "HostNameType");
 			Assert.IsTrue (uri.IsAbsoluteUri, "IsAbsoluteUri");
 			Assert.AreEqual (relative, uri.OriginalString, "OriginalString");
-#else
-			Assert.AreEqual (UriHostNameType.Basic, uri.HostNameType, "HostNameType");
-#endif
 		}
 
 		[Test]
-#if NET_2_0
 		[ExpectedException (typeof (ArgumentNullException))]
-#else
-		[ExpectedException (typeof (NullReferenceException))]
-#endif
 		public void Constructor_NullStringBool ()
 		{
 			new Uri (null, "http://www.contoso.com/index.htm", false);
 		}
 
 		[Test]
-#if ONLY_1_1
-		[ExpectedException (typeof (NullReferenceException))]
-#endif
 		public void Constructor_UriNullBool ()
 		{
 			new Uri (new Uri ("http://www.contoso.com"), null, false);
@@ -261,7 +247,7 @@ namespace MonoTests.System
 			Assert.AreEqual ("?q=r;.%20a", u.Query, "#6");
 		}
 
-#if NET_2_0
+
 		[Test]
 		[ExpectedException (typeof (UriFormatException))]
 		public void RelativeCtor_11_Crasher ()
@@ -270,7 +256,6 @@ namespace MonoTests.System
 			// this causes crash under MS.NET 1.1
 			Assert.AreEqual ("g:h", new Uri (b, "g:h").ToString (), "g:h");
 		}
-#endif
 
 		[Test]
 		[ExpectedException (typeof (UriFormatException))]
@@ -280,9 +265,6 @@ namespace MonoTests.System
 		}
 
 		[Test]
-#if ONLY_1_1
-		[Category ("NotDotNet")]
-#endif
 		public void LeadingSlashes_ShouldFailOn1x ()
 		{
 			// doesn't (but should) fail under 1.x
@@ -291,108 +273,56 @@ namespace MonoTests.System
 		}
 
 		[Test]
-#if ONLY_1_1
-		[Category ("NotWorking")]
-#endif
 		public void LeadingSlashes_BadResultsOn1x ()
 		{
 			// strange behaviours of 1.x - it's probably not worth to fix it
 			// on Mono as 2.0 has been fixed
 			Uri u = new Uri ("file:///foo/bar");
-#if NET_2_0
 			Assert.AreEqual (String.Empty, u.Host, "#3a");
 			Assert.AreEqual (UriHostNameType.Basic, u.HostNameType, "#3b");
 			Assert.AreEqual ("file:///foo/bar", u.ToString (), "#3c");
 			Assert.AreEqual (false, u.IsUnc, "#3d");
-#else
-			// 1.x misinterpret the first path element as the host name
-			Assert.AreEqual ("foo", u.Host, "#3a");
-			Assert.AreEqual (UriHostNameType.Dns, u.HostNameType, "#3b");
-			Assert.AreEqual ("file://foo/bar", u.ToString (), "#3c");
-			Assert.AreEqual (true, u.IsUnc, "#3d");
-#endif
+
 			u = new Uri ("mailto:/foo");
-#if NET_2_0
 			Assert.AreEqual (String.Empty, u.Host, "#13a");
 			Assert.AreEqual (UriHostNameType.Basic, u.HostNameType, "#13b");
 			Assert.AreEqual ("mailto:/foo", u.ToString (), "#13c");
-#else
-			// 1.x misinterpret the first path element as the host name
-			Assert.AreEqual ("foo", u.Host, "#13a");
-			Assert.AreEqual (UriHostNameType.Dns, u.HostNameType, "#13b");
-			Assert.AreEqual ("mailto:foo", u.ToString (), "#13c");
-#endif
+
 			u = new Uri ("mailto://foo");
-#if NET_2_0
 			Assert.AreEqual (String.Empty, u.Host, "#14a");
 			Assert.AreEqual (UriHostNameType.Basic, u.HostNameType, "#14b");
 			Assert.AreEqual ("mailto://foo", u.ToString (), "#14c");
-#else
-			// 1.x misinterpret the first path element as the host name
-			Assert.AreEqual ("foo", u.Host, "#14a");
-			Assert.AreEqual (UriHostNameType.Dns, u.HostNameType, "#14b");
-			Assert.AreEqual ("mailto://foo/", u.ToString (), "#14c");
-#endif
+
 			u = new Uri ("news:/");
 			Assert.AreEqual (String.Empty, u.Host, "#18a");
-#if NET_2_0
 			Assert.AreEqual (UriHostNameType.Unknown, u.HostNameType, "#18b");
 			Assert.AreEqual ("news:/", u.ToString (), "#18c");
 			Assert.AreEqual ("/", u.AbsolutePath, "#18d");
 			Assert.AreEqual ("news:/", u.AbsoluteUri, "#18e");
-#else
-			Assert.AreEqual (UriHostNameType.Basic, u.HostNameType, "#18b");
-			Assert.AreEqual ("news:", u.ToString (), "#18c");
-			Assert.AreEqual (String.Empty, u.AbsolutePath, "#18d");
-			Assert.AreEqual ("news:", u.AbsoluteUri, "#18e");
-#endif
+
 			u = new Uri ("news:/foo");
 			Assert.AreEqual (String.Empty, u.Host, "#19a");
-#if NET_2_0
 			Assert.AreEqual (UriHostNameType.Unknown, u.HostNameType, "#19b");
 			Assert.AreEqual ("news:/foo", u.ToString (), "#19c");
 			Assert.AreEqual ("/foo", u.AbsolutePath, "#19d");
 			Assert.AreEqual ("news:/foo", u.AbsoluteUri, "#19e");
-#else
-			Assert.AreEqual (UriHostNameType.Basic, u.HostNameType, "#19b");
-			Assert.AreEqual ("news:foo", u.ToString (), "#19c");
-			Assert.AreEqual ("foo", u.AbsolutePath, "#19d");
-			Assert.AreEqual ("news:foo", u.AbsoluteUri, "#19e");
-#endif
+
 			u = new Uri ("news://foo");
-#if NET_2_0
 			Assert.AreEqual (String.Empty, u.Host, "#20a");
 			Assert.AreEqual (UriHostNameType.Unknown, u.HostNameType, "#20b");
 			Assert.AreEqual ("news://foo", u.ToString (), "#20c");
 			Assert.AreEqual ("//foo", u.AbsolutePath, "#20d");
 			Assert.AreEqual ("news://foo", u.AbsoluteUri, "#20e");
-#else
-			Assert.AreEqual ("foo", u.Host, "#20a");
-			Assert.AreEqual (UriHostNameType.Dns, u.HostNameType, "#20b");
-			Assert.AreEqual ("news://foo/", u.ToString (), "#20c");
-			Assert.AreEqual ("/", u.AbsolutePath, "#20d");
-			Assert.AreEqual ("news://foo/", u.AbsoluteUri, "#20e");
-#endif
+
 			u = new Uri ("news://foo/bar");
-#if NET_2_0
 			Assert.AreEqual (String.Empty, u.Host, "#22a");
 			Assert.AreEqual (UriHostNameType.Unknown, u.HostNameType, "#22b");
 			Assert.AreEqual ("news://foo/bar", u.ToString (), "#22c");
 			Assert.AreEqual ("//foo/bar", u.AbsolutePath, "#22d");
 			Assert.AreEqual ("news://foo/bar", u.AbsoluteUri, "#22e");
-#else
-			Assert.AreEqual ("foo", u.Host, "#22a");
-			Assert.AreEqual (UriHostNameType.Dns, u.HostNameType, "#22b");
-			Assert.AreEqual ("news://foo/bar", u.ToString (), "#22c");
-			Assert.AreEqual ("/bar", u.AbsolutePath, "#22d");
-			Assert.AreEqual ("news://foo/bar", u.AbsoluteUri, "#22e");
-#endif
 		}
 
 		[Test]
-#if ONLY_1_1
-		[Category ("NotDotNet")] // does (but shouldn't) fail under 1.x
-#endif
 		public void LeadingSlashes_FailOn1x ()
 		{
 			// 1.x throws an UriFormatException because it can't decode the host name
@@ -416,11 +346,7 @@ namespace MonoTests.System
 			// 1.x throws an UriFormatException because it cannot detect the format
 			u = new Uri ("news:///foo");
 			Assert.AreEqual (String.Empty, u.Host, "#21a");
-#if NET_2_0
 			Assert.AreEqual (UriHostNameType.Unknown, u.HostNameType, "#21b");
-#else
-			Assert.AreEqual (UriHostNameType.Basic, u.HostNameType, "#21b");
-#endif
 			Assert.AreEqual ("news:///foo", u.ToString (), "#21c");
 			Assert.AreEqual ("///foo", u.AbsolutePath, "#21d");
 			Assert.AreEqual ("news:///foo", u.AbsoluteUri, "#21e");
@@ -434,13 +360,13 @@ namespace MonoTests.System
 			Assert.AreEqual ("foo", u.Host, "#5a");
 			Assert.AreEqual (UriHostNameType.Dns, u.HostNameType, "#5b");
 			Assert.AreEqual ("file://foo/bar", u.ToString (), "#5c");
-			Assert.AreEqual (true, u.IsUnc, "#5d");
+			Assert.AreEqual (isWin32, u.IsUnc, "#5d");
 
 			u = new Uri ("file:////foo/bar");
 			Assert.AreEqual ("foo", u.Host, "#7a");
 			Assert.AreEqual (UriHostNameType.Dns, u.HostNameType, "#7b");
 			Assert.AreEqual ("file://foo/bar", u.ToString (), "#7c");
-			Assert.AreEqual (true, u.IsUnc, "#7d");
+			Assert.AreEqual (isWin32, u.IsUnc, "#7d");
 
 			Assert.AreEqual ("file://foo/bar", new Uri ("file://///foo/bar").ToString(), "#9");
 
@@ -451,20 +377,12 @@ namespace MonoTests.System
 
 			u = new Uri ("news:");
 			Assert.AreEqual (String.Empty, u.Host, "#16a");
-#if NET_2_0
 			Assert.AreEqual (UriHostNameType.Unknown, u.HostNameType, "#16b");
-#else
-			Assert.AreEqual (UriHostNameType.Basic, u.HostNameType, "#16b");
-#endif
 			Assert.AreEqual ("news:", u.ToString (), "#16c");
 
 			u = new Uri ("news:foo");
 			Assert.AreEqual (String.Empty, u.Host, "#17a");
-#if NET_2_0
 			Assert.AreEqual (UriHostNameType.Unknown, u.HostNameType, "#17b");
-#else
-			Assert.AreEqual (UriHostNameType.Basic, u.HostNameType, "#17b");
-#endif
 			Assert.AreEqual ("news:foo", u.ToString (), "#17c");
 			Assert.AreEqual ("foo", u.AbsolutePath, "#17d");
 			Assert.AreEqual ("news:foo", u.AbsoluteUri, "#17e");
@@ -479,9 +397,6 @@ namespace MonoTests.System
 
 		[Test]
 		[ExpectedException (typeof (UriFormatException))]
-#if ONLY_1_1
-		[Category ("NotDotNet")] // doesn't fail under 1.x
-#endif
 		public void HttpHostname2 ()
 		{
 			new Uri ("http:a");
@@ -496,9 +411,6 @@ namespace MonoTests.System
 
 		[Test]
 		[ExpectedException (typeof (UriFormatException))]
-#if ONLY_1_1
-		[Category ("NotDotNet")] // doesn't fail under 1.x
-#endif
 		public void HttpHostname4 ()
 		{
 			new Uri ("http:/foo");
@@ -627,17 +539,10 @@ namespace MonoTests.System
 		{
 			// Hmm, they should be regarded just as a host name, since all URIs are base on absolute path.
 			Uri uri = new Uri("file://one_file.txt");
-#if NET_2_0
 			Assert.AreEqual ("file://one_file.txt/", uri.ToString(), "#6a");
 			Assert.AreEqual ("/", uri.AbsolutePath, "#6e");
 			Assert.AreEqual ("/", uri.PathAndQuery, "#6f");
 			Assert.AreEqual ("file://one_file.txt/", uri.GetLeftPart (UriPartial.Path), "#6g");
-#else
-			Assert.AreEqual ("file://one_file.txt", uri.ToString(), "#6a");
-			Assert.AreEqual ("", uri.AbsolutePath, "#6e");
-			Assert.AreEqual ("", uri.PathAndQuery, "#6f");
-			Assert.AreEqual ("file://one_file.txt", uri.GetLeftPart (UriPartial.Path), "#6g");
-#endif
 			if (isWin32)
 				Assert.AreEqual ("\\\\one_file.txt", uri.LocalPath, "#6b");
 			else
@@ -668,26 +573,14 @@ namespace MonoTests.System
 			// escape
 			Uri uri = new Uri ("file:///tmp/a%20a");
 			if (isWin32) {
-#if NET_2_0
 				Assert.IsTrue (uri.LocalPath.EndsWith ("/tmp/a a"), "#7a:" + uri.LocalPath);
-#else
-				// actually MS.NET treats /// as \\ thus it fails here.
-				Assert.IsTrue (uri.LocalPath.EndsWith ("\\tmp\\a a"), "#7a:" + uri.LocalPath);
-#endif
 			} else
 				Assert.AreEqual ("/tmp/a a", uri.LocalPath, "#7b");
 
 			uri = new Uri ("file:///tmp/foo%25bar");
 			if (isWin32) {
-#if NET_2_0
 				Assert.IsTrue (uri.LocalPath.EndsWith ("/tmp/foo%bar"), "#8a:" + uri.LocalPath);
 				Assert.IsTrue (uri.ToString ().EndsWith ("//tmp/foo%25bar"), "#8c:" + uri.ToString ());
-#else
-				// actually MS.NET treats /// as \\ thus it fails here.
-				Assert.IsTrue (uri.LocalPath.EndsWith ("\\tmp\\foo%bar"), "#8a:" + uri.LocalPath);
-				// ditto, file://tmp/foo%25bar (bug in 1.x)
-				Assert.IsTrue (uri.ToString ().EndsWith ("//tmp/foo%bar"), "#8c:" + uri.ToString ());
-#endif
 			} else {
 				Assert.AreEqual ("/tmp/foo%bar", uri.LocalPath, "#8b");
 				Assert.AreEqual ("file:///tmp/foo%25bar", uri.ToString (), "#8d");
@@ -695,12 +588,7 @@ namespace MonoTests.System
 			// bug #76643
 			uri = new Uri ("file:///foo%25bar");
 			if (isWin32) {
-#if NET_2_0
 				Assert.IsTrue (uri.LocalPath.EndsWith ("/foo%bar"), "#9a:" + uri.LocalPath);
-#else
-				// actually MS.NET treats /// as \\ thus it fails here.
-				Assert.IsTrue (uri.LocalPath.EndsWith ("\\foo%25bar"), "#9a:" + uri.LocalPath);
-#endif
 				// ditto, file://tmp/foo%25bar (bug in 1.x)
 				Assert.IsTrue (uri.ToString ().EndsWith ("//foo%25bar"), "#9c:" + uri.ToString ());
 			} else {
@@ -716,8 +604,8 @@ namespace MonoTests.System
 			Uri u1 = new Uri("http://localhost:8080/test.aspx?ReturnUrl=%2fSearchDoc%2fSearcher.aspx");
 			Uri u2 = new Uri("http://localhost:8080/test.aspx?ReturnUrl=%252fSearchDoc%252fSearcher.aspx");
 
-			Assert.AreEqual (u1.ToString (), "http://localhost:8080/test.aspx?ReturnUrl=/SearchDoc/Searcher.aspx", "QE1");
-			Assert.AreEqual (u2.ToString (), "http://localhost:8080/test.aspx?ReturnUrl=%2fSearchDoc%2fSearcher.aspx", "QE2");
+			Assert.AreEqual ("http://localhost:8080/test.aspx?ReturnUrl=/SearchDoc/Searcher.aspx", u1.ToString (), "QE1");
+			Assert.AreEqual ("http://localhost:8080/test.aspx?ReturnUrl=%252fSearchDoc%252fSearcher.aspx", u2.ToString (), "QE2");
 		}
 
 		[Test]
@@ -736,7 +624,7 @@ namespace MonoTests.System
 			Assert.IsTrue (!uri.IsUnc, "#2");
 
 			uri = new Uri ("file://server/filename.ext");
-			Assert.IsTrue (uri.IsUnc, "#3");
+			Assert.AreEqual (isWin32, uri.IsUnc, "#3");
 
 			uri = new Uri (@"\\server\share\filename.ext");
 			Assert.IsTrue (uri.IsUnc, "#6");
@@ -853,11 +741,6 @@ namespace MonoTests.System
 			Assert.AreEqual (4, i, "#12");
 		}
 
-#if !NET_2_0
-		// These won't pass exactly with MS.NET 1.x, due to differences in the
-		// handling of backslashes/forwardslashes
-		[Category ("NotDotNet")]
-#endif
 		[Test]
 		public void HexUnescapeMultiByte ()
 		{
@@ -976,7 +859,6 @@ namespace MonoTests.System
 			Assert.AreEqual (n.Fragment, "#main#start", "#4");
 		}
 
-#if NET_2_0
 		[Test]
 		public void Fragment_RelativeUri ()
 		{
@@ -994,7 +876,6 @@ namespace MonoTests.System
 				Assert.IsNotNull (ex.Message, "#4");
 			}
 		}
-#endif
 
 		[Test]
 		[ExpectedException(typeof(UriFormatException))]
@@ -1101,11 +982,7 @@ namespace MonoTests.System
 		public void IsLoopback_File ()
 		{
 			Uri uri = new Uri ("file:///index.html");
-#if NET_2_0
 			Assert.IsTrue (uri.IsLoopback, "file");
-#else
-			Assert.IsTrue (!uri.IsLoopback, "file");
-#endif
 		}
 
 		[Test]
@@ -1135,9 +1012,6 @@ namespace MonoTests.System
 		}
 
 		[Test]
-#if !NET_2_0
-		[Category("NotDotNet")]
-#endif
 		public void Equals2 ()
 		{
 			Uri uri1 = new Uri ("http://www.contoso.com/index.htm#main");
@@ -1163,13 +1037,11 @@ namespace MonoTests.System
 
 			a = new Uri ("mailto:user:pwd at go-mono.com?subject=uri");
 			b = new Uri ("MAILTO:USER:PWD at GO-MONO.COM?SUBJECT=URI");
-#if NET_2_0
+
 			Assert.IsTrue (a != b, "#2");
 			Assert.AreEqual ("mailto:user:pwd at go-mono.com?subject=uri", a.ToString (), "#2a");
 			Assert.AreEqual ("mailto:USER:PWD at go-mono.com?SUBJECT=URI", b.ToString (), "#2b");
-#else
-			Assert.AreEqual (a, b, "#2");
-#endif
+
 			a = new Uri ("http://www.go-mono.com/ports/");
 			b = new Uri ("http://www.go-mono.com/PORTS/");
 
@@ -1210,7 +1082,6 @@ namespace MonoTests.System
 			Assert.IsTrue (uri1.GetHashCode () != uri2.GetHashCode (), "#4");
 		}
 
-#if NET_2_0
 		[Test]
 		public void RelativeEqualsTest()
 		{
@@ -1273,7 +1144,6 @@ namespace MonoTests.System
 			Assert.AreEqual (uri1.GetHashCode(), uri2.GetHashCode(), "#1");
 			Assert.IsTrue (uri1.GetHashCode() != uri3.GetHashCode(), "#2");
 		}
-#endif
 
 		[Test]
 		public void MakeRelative ()
@@ -1320,18 +1190,10 @@ namespace MonoTests.System
 		public void RelativeUri ()
 		{
 			Uri u = new Uri("http://localhost/../../../a");
-#if NET_2_0
 			Assert.AreEqual ("http://localhost/a", u.ToString ());
-#else
-			Assert.AreEqual ("http://localhost/../../../a", u.ToString ());
-#endif
 
 			u = new Uri ("http://localhost/../c/b/../a");
-#if NET_2_0
 			Assert.AreEqual ("http://localhost/c/a", u.ToString ());
-#else
-			Assert.AreEqual ("http://localhost/../c/a", u.ToString ());
-#endif
 		}
 
 		[Test]
@@ -1373,11 +1235,7 @@ namespace MonoTests.System
 			Assert.AreEqual (false, Uri.CheckSchemeName ("+http"), "#09");
 			Assert.AreEqual (true, Uri.CheckSchemeName ("htt+p6"), "#10");
 			// 0x00E1 -> ã
-#if NET_2_0
 			Assert.IsTrue (!Uri.CheckSchemeName ("htt\u00E1+p6"), "#11");
-#else
-			Assert.IsTrue (Uri.CheckSchemeName ("htt\u00E1+p6"), "#11");
-#endif
 		}
 
 		[Test]
@@ -1387,12 +1245,8 @@ namespace MonoTests.System
 				string s = String.Format ("#{0}", i);
 				char c = (char) i;
 				bool b = Uri.CheckSchemeName (c.ToString ());
-#if NET_2_0
 				bool valid = (((i >= 0x41) && (i <= 0x5A)) || ((i >= 0x61) && (i <= 0x7A)));
 				Assert.AreEqual (valid, b, s);
-#else
-				Assert.AreEqual (Char.IsLetter (c), b, s);
-#endif
 			}
 		}
 
@@ -1405,12 +1259,8 @@ namespace MonoTests.System
 				string scheme = String.Format ("a+b-c.d{0}", c);
 				bool b = Uri.CheckSchemeName (scheme);
 				bool common = Char.IsDigit (c) || (c == '+') || (c == '-') || (c == '.');
-#if NET_2_0
 				bool valid = (common || ((i >= 0x41) && (i <= 0x5A)) || ((i >= 0x61) && (i <= 0x7A)));
 				Assert.AreEqual (valid, b, s);
-#else
-				Assert.AreEqual ((Char.IsLetter (c) || common), b, s);
-#endif
 			}
 		}
 
@@ -1422,10 +1272,6 @@ namespace MonoTests.System
 		}
 
 		[Test]
-#if !NET_2_0
-		// MS.NET 1.x throws an IndexOutOfRangeException
-		[Category("NotDotNet")]
-#endif
 		public void NoHostname2 ()
 		{
 			// bug 75144
@@ -1442,11 +1288,7 @@ namespace MonoTests.System
 			Assert.AreEqual (UriHostNameType.Basic, uri.HostNameType, "#10");
 			Assert.AreEqual (string.Empty, uri.Fragment, "#11");
 			Assert.AreEqual (true, uri.IsDefaultPort, "#12");
-#if NET_2_0
 			Assert.IsTrue (uri.IsLoopback, "#13");
-#else
-			Assert.IsTrue (!uri.IsLoopback, "#13");
-#endif
 			Assert.AreEqual ("/", uri.PathAndQuery, "#14");
 			Assert.AreEqual (false, uri.UserEscaped, "#15");
 			Assert.AreEqual (string.Empty, uri.UserInfo, "#16");
@@ -1476,6 +1318,18 @@ namespace MonoTests.System
 		}
 
 		[Test]
+		public void CachingSegments ()
+		{
+			Uri uri = new Uri ("http://localhost/dir/dummypage.html");
+			uri.Segments [0] = uri.Segments [1] = uri.Segments [2] = "*";
+			string [] segments = uri.Segments;
+			Assert.AreEqual (3, segments.Length, "#01");
+			Assert.AreEqual ("/", segments [0], "#02");
+			Assert.AreEqual ("dir/", segments [1], "#03");
+			Assert.AreEqual ("dummypage.html", segments [2], "#04");
+		}
+
+		[Test]
 		public void Segments3 ()
 		{
 			Uri uri = new Uri ("http://localhost/dir/dummypage/");
@@ -1487,21 +1341,17 @@ namespace MonoTests.System
 		}
 
 		[Test]
-#if NET_2_0
-		[Category ("NotWorking")]
-#endif
 		public void Segments4 ()
 		{
 			Uri uri = new Uri ("file:///c:/hello");
+
+			Assert.AreEqual ("c:/hello", uri.AbsolutePath, "AbsolutePath");
+			Assert.AreEqual ("c:\\hello", uri.LocalPath, "LocalPath");
+
 			string [] segments = uri.Segments;
 			Assert.AreEqual (3, segments.Length, "#01");
-#if NET_2_0
 			Assert.AreEqual ("/", segments [0], "#02");
 			Assert.AreEqual ("c:/", segments[1], "#03");
-#else
-			Assert.AreEqual ("c:", segments [0], "#02");
-			Assert.AreEqual ("/", segments [1], "#03");
-#endif
 			Assert.AreEqual ("hello", segments [2], "#04");
 		}
 
@@ -1531,10 +1381,8 @@ namespace MonoTests.System
 			new Uri ("hey");
 		}
 
-#if NET_2_0
 		// on .NET 2.0 a port number is limited to UInt16.MaxValue
 		[ExpectedException (typeof (UriFormatException))]
-#endif
 		[Test]
 		public void InvalidPort1 ()
 		{
@@ -1542,9 +1390,7 @@ namespace MonoTests.System
 			Assert.AreEqual (65536, uri.Port);
 		}
 
-#if NET_2_0
 		[ExpectedException (typeof (UriFormatException))]
-#endif
 		[Test]
 		public void InvalidPort2 ()
 		{
@@ -1553,9 +1399,7 @@ namespace MonoTests.System
 			Assert.AreEqual (-1, uri.Port);
 		}
 
-#if NET_2_0
 		[ExpectedException (typeof (UriFormatException))]
-#endif
 		[Test]
 		public void InvalidPort3 ()
 		{
@@ -1564,7 +1408,6 @@ namespace MonoTests.System
 			Assert.AreEqual (-2147483648, uri.Port);
 		}
 
-#if NET_2_0
 		[Test]
 		public void PortMax ()
 		{
@@ -1572,7 +1415,6 @@ namespace MonoTests.System
 			Uri uri = new Uri ("http://www.contoso.com:65535/foo/bar/");
 			Assert.AreEqual (65535, uri.Port);
 		}
-#endif
 
 		class UriEx2 : Uri
 		{
@@ -1585,10 +1427,8 @@ namespace MonoTests.System
 			}
 		}
 
-#if NET_2_0
 		// Parse method is no longer used on .NET 2.0
 		[ExpectedException (typeof (UriFormatException))]
-#endif
 		[Test]
 		public void ParseOverride ()
 		{
@@ -1617,7 +1457,6 @@ namespace MonoTests.System
 			new Uri (@"file:///J:\Wrldwide\MSFin\Flash\FLASH.xls");
 		}
 
-#if NET_2_0
 		[Test]
 		public void TestEscapeDataString ()
 		{
@@ -1642,7 +1481,6 @@ namespace MonoTests.System
 				Uri.EscapeUriString (sb.ToString ()));
 			Assert.AreEqual ("%C3%A1", Uri.EscapeDataString ("á"));
 		}
-#endif
 
 		//bnc #363320
 		[Test]
@@ -1652,8 +1490,12 @@ namespace MonoTests.System
 				"file:///tmp/x (%232).jpg",
 				"file:///tmp/ü (%232).jpg" };
 
-			foreach (string test in tests)
-				Assert.AreEqual (test, new Uri (test).ToString ());
+			foreach (string test in tests) {
+				Uri uri = new Uri (test);
+				Assert.IsFalse (uri.IsWellFormedOriginalString (), "IsWellFormedOriginalString/" + test);
+				Assert.AreEqual (test, uri.OriginalString, "OriginalString/" + test);
+				Assert.AreEqual (test, uri.ToString (), "ToString/" + test);
+			}
 		}
 
 		// This test doesn't work on Linux, and arguably shouldn't work.
@@ -1668,19 +1510,12 @@ namespace MonoTests.System
 		// You are surrounded by conditional-compilation code, all alike.
 		// You are likely to be eaten by a Grue...
 		[Test]
-#if !NET_2_0
-		[Category ("NotDotNet")]
-#endif
 		public void UnixLocalPath_WTF ()
 		{
 			// Empty path == localhost, in theory
 			string path = "file:///tmp/foo/bar";
 			Uri fileUri = new Uri( path );
-//#if NET_2_0
 			Assert.AreEqual ("/tmp/foo/bar", fileUri.AbsolutePath, path);
-//#else
-//			Assert.AreEqual ("/foo/bar", fileUri.AbsolutePath, path);
-//#endif
 
 			// bug #76643
 			string path2 = "file:///foo%25bar";
@@ -1733,7 +1568,6 @@ namespace MonoTests.System
 		}
 
 //BNC#533572
-#if NET_2_0
 		[Test]
 		public void LocalPath_FileNameWithAtSign1 ()
 		{
@@ -1786,7 +1620,7 @@ namespace MonoTests.System
 			Assert.IsFalse (fileUri.IsUnc, "LocalPath_FileNameWithAtSign IsUnc");
 
 			Assert.AreEqual (fullpath, fileUri.OriginalString, "LocalPath_FileNameWithAtSign OriginalString");
-			Assert.AreEqual (path, new DerivedUri (fullpath).TestUnescape(path), "LocalPath_FileNameWithAtSign ProtectedUnescape");
+			Assert.AreEqual (path, new DerivedUri (fullpath).TestUnescape (path), "LocalPath_FileNameWithAtSign ProtectedUnescape");
 			Assert.AreEqual (path, fileUri.AbsolutePath, "LocalPath_FileNameWithAtSign AbsPath");
 			Assert.AreEqual (path, fileUri.LocalPath, "LocalPath_FileNameWithAtSign LocalPath");
 		}
@@ -1802,7 +1636,7 @@ namespace MonoTests.System
 			Assert.AreEqual (fileUri.Host, "localhost", "LocalPath_FileNameWithAtSign Host");
 			Assert.IsTrue (fileUri.IsFile, "LocalPath_FileNameWithAtSign IsFile");
 			Assert.IsTrue (fileUri.IsAbsoluteUri, "LocalPath_FileNameWithAtSign IsAbsUri");
-			Assert.IsTrue (fileUri.IsUnc, "LocalPath_FileNameWithAtSign IsUnc");
+			Assert.AreEqual (isWin32, fileUri.IsUnc, "LocalPath_FileNameWithAtSign IsUnc");
 
 			Assert.AreEqual (fullpath, fileUri.OriginalString, "LocalPath_FileNameWithAtSign OriginalString");
 			Assert.AreEqual (path, new DerivedUri (fullpath).TestUnescape (path), "LocalPath_FileNameWithAtSign ProtectedUnescape");
@@ -1812,18 +1646,17 @@ namespace MonoTests.System
 		}
 
 		[Test]
-		[Category ("NotWorking")]
 		public void LocalPath_FileNameWithAtSign5 ()
 		{
 			string path = "/some/path/file_with_an_ at _sign.mp3";
 			string fullpath = "file://localhost" + path;
 			Uri fileUri = new Uri (fullpath);
 
-			Assert.AreEqual ("\\\\localhost" + path.Replace ("/", "\\"), fileUri.LocalPath, "LocalPath_FileNameWithAtSign LocalPath");
+			string expected = isWin32 ? "\\\\localhost" + path.Replace ("/", "\\") : "/some/path/file_with_an_ at _sign.mp3";
+			Assert.AreEqual (expected, fileUri.LocalPath, "LocalPath_FileNameWithAtSign LocalPath");
 		}
 
 		[Test]
-		[Category ("NotWorking")] // MS.NET seems not to like userinfo in a file:// uri...
 		[ExpectedException (typeof (UriFormatException))]
 		public void LocalPath_FileNameWithAtSign6 ()
 		{
@@ -1833,6 +1666,7 @@ namespace MonoTests.System
 		}
 
 		[Test]
+		[Category ("NotDotNet")]
 		public void UnixAbsoluteFilePath_WithSpecialChars1 ()
 		{
 			Uri unixuri = new Uri ("/home/user/a at b");
@@ -1840,6 +1674,7 @@ namespace MonoTests.System
 		}
 
 		[Test]
+		[Category ("NotDotNet")]
 		public void UnixAbsoluteFilePath_WithSpecialChars2 ()
 		{
 			Uri unixuri = new Uri ("/home/user/a:b");
@@ -1862,9 +1697,9 @@ namespace MonoTests.System
 			Assert.AreEqual ("http://media.libsyn.com/bounce/http://cdn4.libsyn.com/nerdist/somestuff.txt", uri.ToString ());
 		}
 
-		public class DerivedUri : Uri
-		{
-			public DerivedUri (string uriString) : base (uriString)
+		public class DerivedUri : Uri {
+			public DerivedUri (string uriString)
+				: base (uriString)
 			{
 			}
 
@@ -1873,6 +1708,155 @@ namespace MonoTests.System
 				return base.Unescape (path);
 			}
 		}
-#endif
+
+		[Test]
+		[ExpectedException (typeof (InvalidOperationException))]
+		public void GetComponents_Relative ()
+		{
+			Uri rel = new Uri ("/relative/path/with?query", UriKind.Relative);
+			rel.GetComponents (UriComponents.Query, UriFormat.SafeUnescaped);
+		}
+
+		[Test]
+		public void GetComponents_AbsoluteUri ()
+		{
+			Uri uri = new Uri ("http://mono-project.com/list?id=1%262&sort=asc#fragment%263");
+
+			Assert.AreEqual ("http://mono-project.com/list?id=1%262&sort=asc#fragment%263", uri.AbsoluteUri, "AbsoluteUri");
+
+			string safe = uri.GetComponents (UriComponents.AbsoluteUri, UriFormat.SafeUnescaped);
+			Assert.AreEqual ("http://mono-project.com/list?id=1%262&sort=asc#fragment%263", safe, "SafeUnescaped");
+
+			string unescaped = uri.GetComponents (UriComponents.AbsoluteUri, UriFormat.Unescaped);
+			Assert.AreEqual ("http://mono-project.com/list?id=1&2&sort=asc#fragment&3", unescaped, "Unescaped");
+
+			string escaped = uri.GetComponents (UriComponents.AbsoluteUri, UriFormat.UriEscaped);
+			Assert.AreEqual ("http://mono-project.com/list?id=1%262&sort=asc#fragment%263", escaped, "UriEscaped");
+		}
+
+		[Test]
+		public void GetComponents_HttpRequestUrl ()
+		{
+			Uri uri = new Uri ("http://mono-project.com/list?id=1%262&sort=asc#fragment%263");
+
+			string safe = uri.GetComponents (UriComponents.HttpRequestUrl, UriFormat.SafeUnescaped);
+			Assert.AreEqual ("http://mono-project.com/list?id=1%262&sort=asc", safe, "SafeUnescaped");
+
+			string unescaped = uri.GetComponents (UriComponents.HttpRequestUrl, UriFormat.Unescaped);
+			Assert.AreEqual ("http://mono-project.com/list?id=1&2&sort=asc", unescaped, "Unescaped");
+
+			string escaped = uri.GetComponents (UriComponents.HttpRequestUrl, UriFormat.UriEscaped);
+			Assert.AreEqual ("http://mono-project.com/list?id=1%262&sort=asc", escaped, "UriEscaped");
+		}
+
+		[Test]
+		public void GetComponents_KeepDelimiter ()
+		{
+			Uri uri = new Uri ("http://mono-project.com/list?id=1%262&sort=asc#fragment%263");
+
+			string safe = uri.GetComponents (UriComponents.KeepDelimiter, UriFormat.SafeUnescaped);
+			Assert.AreEqual (String.Empty, safe, "SafeUnescaped");
+
+			string unescaped = uri.GetComponents (UriComponents.KeepDelimiter, UriFormat.Unescaped);
+			Assert.AreEqual (String.Empty, unescaped, "Unescaped");
+
+			string escaped = uri.GetComponents (UriComponents.KeepDelimiter, UriFormat.UriEscaped);
+			Assert.AreEqual (String.Empty, escaped, "UriEscaped");
+		}
+
+		[Test]
+		public void GetComponents_StrongAuthority ()
+		{
+			Uri uri = new Uri ("http://mono-project.com/list?id=1%262&sort=asc#fragment%263");
+
+			string safe = uri.GetComponents (UriComponents.StrongAuthority, UriFormat.SafeUnescaped);
+			Assert.AreEqual ("mono-project.com:80", safe, "SafeUnescaped");
+
+			string unescaped = uri.GetComponents (UriComponents.StrongAuthority, UriFormat.Unescaped);
+			Assert.AreEqual ("mono-project.com:80", unescaped, "Unescaped");
+
+			string escaped = uri.GetComponents (UriComponents.StrongAuthority, UriFormat.UriEscaped);
+			Assert.AreEqual ("mono-project.com:80", escaped, "UriEscaped");
+		}
+
+		[Test]
+		public void GetComponents_Path ()
+		{
+			Uri uri1 = new Uri ("http://mono-project.com/Main%20Page");
+			Assert.AreEqual ("/Main Page", uri1.LocalPath, "Path1");
+
+			string safe = uri1.GetComponents (UriComponents.Path, UriFormat.SafeUnescaped);
+			Assert.AreEqual ("Main Page", safe, "SafeUnescaped1");
+
+			string unescaped = uri1.GetComponents (UriComponents.Path, UriFormat.Unescaped);
+			Assert.AreEqual ("Main Page", unescaped, "Unescaped1");
+
+			string escaped = uri1.GetComponents (UriComponents.Path, UriFormat.UriEscaped);
+			Assert.AreEqual ("Main%20Page", escaped, "UriEscaped1");
+
+			// same result is unescaped original string
+			Uri uri2 = new Uri ("http://mono-project.com/Main Page");
+			Assert.AreEqual ("/Main Page", uri2.LocalPath, "Path2");
+
+			safe = uri2.GetComponents (UriComponents.Path, UriFormat.SafeUnescaped);
+			Assert.AreEqual ("Main Page", safe, "SafeUnescaped2");
+
+			unescaped = uri2.GetComponents (UriComponents.Path, UriFormat.Unescaped);
+			Assert.AreEqual ("Main Page", unescaped, "Unescaped2");
+
+			escaped = uri2.GetComponents (UriComponents.Path, UriFormat.UriEscaped);
+			Assert.AreEqual ("Main%20Page", escaped, "UriEscaped2");
+		}
+
+		[Test]
+		public void GetComponents_PathAndQuery ()
+		{
+			Uri uri = new Uri ("http://mono-project.com/MåÏn Påge?id=1%262&sort=asc");
+
+			Assert.AreEqual ("/M%C3%A5%C3%8Fn%20P%C3%A5ge?id=1%262&sort=asc", uri.PathAndQuery, "PathAndQuery");
+
+			string safe = uri.GetComponents (UriComponents.PathAndQuery, UriFormat.SafeUnescaped);
+			Assert.AreEqual ("/MåÏn Påge?id=1%262&sort=asc", safe, "SafeUnescaped");
+
+			string unescaped = uri.GetComponents (UriComponents.PathAndQuery, UriFormat.Unescaped);
+			Assert.AreEqual ("/MåÏn Påge?id=1&2&sort=asc", unescaped, "Unescaped");
+
+			string escaped = uri.GetComponents (UriComponents.PathAndQuery, UriFormat.UriEscaped);
+			Assert.AreEqual ("/M%C3%A5%C3%8Fn%20P%C3%A5ge?id=1%262&sort=asc", escaped, "UriEscaped");
+		}
+
+		[Test]
+		public void GetComponents_Query ()
+		{
+			Uri uri = new Uri ("http://mono-project.com/list?id=1%262&sort=asc");
+
+			Assert.AreEqual ("?id=1%262&sort=asc", uri.Query, "Query");
+			
+			string safe = uri.GetComponents (UriComponents.Query, UriFormat.SafeUnescaped);
+			Assert.AreEqual ("id=1%262&sort=asc", safe, "SafeUnescaped");
+
+			string unescaped = uri.GetComponents (UriComponents.Query, UriFormat.Unescaped);
+			Assert.AreEqual ("id=1&2&sort=asc", unescaped, "Unescaped");
+
+			string escaped = uri.GetComponents (UriComponents.Query, UriFormat.UriEscaped);
+			Assert.AreEqual ("id=1%262&sort=asc", escaped, "UriEscaped");
+		}
+
+		[Test]
+		public void GetComponents_Fragment ()
+		{
+			Uri uri = new Uri ("http://mono-project.com/list#id=1%262&sort=asc");
+
+			Assert.AreEqual ("#id=1%262&sort=asc", uri.Fragment, "Fragment");
+
+			string safe = uri.GetComponents (UriComponents.Fragment, UriFormat.SafeUnescaped);
+			Assert.AreEqual ("id=1%262&sort=asc", safe, "SafeUnescaped");
+
+			string unescaped = uri.GetComponents (UriComponents.Fragment, UriFormat.Unescaped);
+			Assert.AreEqual ("id=1&2&sort=asc", unescaped, "Unescaped");
+
+			string escaped = uri.GetComponents (UriComponents.Fragment, UriFormat.UriEscaped);
+			Assert.AreEqual ("id=1%262&sort=asc", escaped, "UriEscaped");
+		}
 	}
 }
diff --git a/mcs/class/System/Test/System/UriTest2.cs b/mcs/class/System/Test/System/UriTest2.cs
index f1d6ed3..2375fdf 100644
--- a/mcs/class/System/Test/System/UriTest2.cs
+++ b/mcs/class/System/Test/System/UriTest2.cs
@@ -10,7 +10,6 @@ using NUnit.Framework;
 
 namespace MonoTests.System
 {
-#if NET_2_0
 	// help bring Moonlight tests back to mono/mcs nunit
 
 	public delegate void TestCode ();
@@ -43,7 +42,7 @@ namespace MonoTests.System
 				throw new AssertionException (string.Format ("Expected '{0}', but got no exception. {1}", expected_exception.FullName, message));
 		}
 	}
-#endif
+
 	[TestFixture]
 	public class UriTest2
 	{
@@ -97,9 +96,7 @@ namespace MonoTests.System
 		}
 
 		[Test]
-#if NET_2_0
 		[Ignore ("Tests needs to be updated for 2.0")]
-#endif
 		public void AbsoluteUriFromFile ()
 		{
 			FromResource ("test-uri-props.txt", null);
@@ -107,9 +104,7 @@ namespace MonoTests.System
 		
 		[Test]
 		[Category("NotDotNet")]
-#if NET_2_0
 		[Ignore ("Tests needs to be updated for 2.0")]
-#endif
 		public void AbsoluteUriFromFileManual ()
 		{
 			if (Path.DirectorySeparatorChar == '\\')
@@ -118,9 +113,7 @@ namespace MonoTests.System
 		}
 		
 		[Test]
-#if NET_2_0
 		[Ignore ("Tests needs to be updated for 2.0")]
-#endif
 		public void RelativeUriFromFile ()
 		{
 			FromResource ("test-uri-relative-props.txt", new Uri ("http://www.go-mono.com"));
@@ -209,10 +202,8 @@ TextWriter sw = Console.Out;
 			Assert.AreEqual ("mailto", Uri.UriSchemeMailto, "mailto");
 			Assert.AreEqual ("news", Uri.UriSchemeNews, "news");
 			Assert.AreEqual ("nntp", Uri.UriSchemeNntp, "file");
-#if NET_2_0
 			Assert.AreEqual ("net.pipe", Uri.UriSchemeNetPipe, "net.pipe");
 			Assert.AreEqual ("net.tcp", Uri.UriSchemeNetTcp, "net.tcp");
-#endif
 		}
 
 		[Test] // bug #71049
@@ -223,9 +214,6 @@ TextWriter sw = Console.Out;
 		}
 
 		[Test]
-#if ONLY_1_1
-		[Category ("NotDotNet")] // 1.x throws an UriFormatException
-#endif
 		public void NoHostName1_Bug76146 ()
 		{
 			Uri u = new Uri ("foo:///?bar");
@@ -248,9 +236,6 @@ TextWriter sw = Console.Out;
 		}
 
 		[Test]
-#if ONLY_1_1
-		[Category ("NotDotNet")] // 1.x throws an UriFormatException
-#endif
 		public void NoHostName2_Bug76146 ()
 		{
 			Uri u = new Uri ("foo:///bar");
@@ -278,7 +263,7 @@ TextWriter sw = Console.Out;
 		{
 			new Uri ("http://127.0.0.1::::/");
 		}
-#if NET_2_0
+
 		[Test]
 		public void File ()
 		{
@@ -548,6 +533,509 @@ TextWriter sw = Console.Out;
 			Assert.AreEqual (uri.Port.ToString (), uri.GetComponents (UriComponents.StrongPort, UriFormat.Unescaped), "StrongPort");
 			Assert.AreEqual (uri.UserInfo, uri.GetComponents (UriComponents.UserInfo, UriFormat.Unescaped), "UserInfo");
 		}
-#endif
+
+		[Test]
+		public void Merge_Query_Fragment ()
+		{
+			Uri absolute = new Uri ("http://host/dir/subdir/weird;name?moonlight");
+			Assert.AreEqual ("?moonlight", absolute.Query, "absolute.Query");
+
+			Uri merged = new Uri (absolute, "#mono");
+			Assert.AreEqual ("#mono", merged.Fragment, "merged.Fragment");
+			Assert.AreEqual ("?moonlight", merged.Query, "merged.Query");
+			Assert.AreEqual ("http://host/dir/subdir/weird;name?moonlight#mono", merged.ToString (), "merged.ToString");
+		}
+
+		[Test]
+		public void Merge_Query_Query ()
+		{
+			Uri absolute = new Uri ("http://host/dir/subdir/weird;name?moonlight");
+			Assert.AreEqual ("?moonlight", absolute.Query, "absolute.Query");
+
+			Uri merged = new Uri (absolute, "?moon");
+			Assert.AreEqual ("?moon", merged.Query, "merged.Query");
+#if NET_4_0
+			Assert.AreEqual ("http://host/dir/subdir/weird;name?moon", merged.ToString (), "merged.ToString");
+#else
+			Assert.AreEqual ("http://host/dir/subdir/?moon", merged.ToString (), "merged.ToString");
+#endif
+		}
+
+		[Test]
+		public void Merge_Query_RelativePath ()
+		{
+			Uri absolute = new Uri ("http://host/dir/subdir/weird;name?moonlight");
+			Assert.AreEqual ("?moonlight", absolute.Query, "absolute.Query");
+
+			Uri merged = new Uri (absolute, "../");
+			Assert.AreEqual (String.Empty, merged.Query, "../Query");
+			Assert.AreEqual ("http://host/dir/", merged.ToString (), "../ToString");
+
+			merged = new Uri (absolute, "..");
+			Assert.AreEqual (String.Empty, merged.Query, "..Query");
+			Assert.AreEqual ("http://host/dir/", merged.ToString (), "..ToString");
+
+			merged = new Uri (absolute, "./");
+			Assert.AreEqual (String.Empty, merged.Query, "./Query");
+			Assert.AreEqual ("http://host/dir/subdir/", merged.ToString (), "./ToString");
+
+			merged = new Uri (absolute, ".");
+			Assert.AreEqual (String.Empty, merged.Query, ".Query");
+			Assert.AreEqual ("http://host/dir/subdir/", merged.ToString (), ".ToString");
+
+			merged = new Uri (absolute, "/");
+			Assert.AreEqual (String.Empty, merged.Query, "/Query");
+			Assert.AreEqual ("http://host/", merged.ToString (), "/ToString");
+
+			merged = new Uri (absolute, "index.html");
+			Assert.AreEqual (String.Empty, merged.Query, "index.html Query");
+			Assert.AreEqual ("http://host/dir/subdir/index.html", merged.ToString (), "index.html ToString");
+
+			merged = new Uri (absolute, "i");
+			Assert.AreEqual (String.Empty, merged.Query, "i Query");
+			Assert.AreEqual ("http://host/dir/subdir/i", merged.ToString (), "i ToString");
+
+			merged = new Uri (absolute, String.Empty);
+			Assert.AreEqual ("?moonlight", merged.Query, "Query");
+			Assert.AreEqual ("http://host/dir/subdir/weird;name?moonlight", merged.ToString (), "ToString");
+		}
+
+		[Test]
+		public void Merge_Fragment_RelativePath ()
+		{
+			Uri absolute = new Uri ("http://host/dir/subdir/weird;name#mono");
+			Assert.AreEqual ("#mono", absolute.Fragment, "absolute.Fragment");
+
+			Uri merged = new Uri (absolute, "../");
+			Assert.AreEqual (String.Empty, merged.Fragment, "../Fragment");
+			Assert.AreEqual ("http://host/dir/", merged.ToString (), "../ToString");
+
+			merged = new Uri (absolute, "..");
+			Assert.AreEqual (String.Empty, merged.Fragment, "..Fragment");
+			Assert.AreEqual ("http://host/dir/", merged.ToString (), "..ToString");
+
+			merged = new Uri (absolute, "./");
+			Assert.AreEqual (String.Empty, merged.Fragment, "./Fragment");
+			Assert.AreEqual ("http://host/dir/subdir/", merged.ToString (), "./ToString");
+
+			merged = new Uri (absolute, ".");
+			Assert.AreEqual (String.Empty, merged.Fragment, ".Fragment");
+			Assert.AreEqual ("http://host/dir/subdir/", merged.ToString (), ".ToString");
+
+			merged = new Uri (absolute, "/");
+			Assert.AreEqual (String.Empty, merged.Fragment, "/Fragment");
+			Assert.AreEqual ("http://host/", merged.ToString (), "/ToString");
+
+			merged = new Uri (absolute, "index.html");
+			Assert.AreEqual (String.Empty, merged.Fragment, "index.html Fragment");
+			Assert.AreEqual ("http://host/dir/subdir/index.html", merged.ToString (), "index.html ToString");
+
+			merged = new Uri (absolute, "i");
+			Assert.AreEqual (String.Empty, merged.Fragment, "i Fragment");
+			Assert.AreEqual ("http://host/dir/subdir/i", merged.ToString (), "i ToString");
+
+			merged = new Uri (absolute, String.Empty);
+			Assert.AreEqual ("#mono", merged.Fragment, "Fragment");
+			Assert.AreEqual ("http://host/dir/subdir/weird;name#mono", merged.ToString (), "ToString");
+		}
+
+		[Test]
+		public void Host_Drive ()
+		{
+			Assert.AreEqual (UriHostNameType.Unknown, Uri.CheckHostName ("c:"), "c:");
+			Assert.AreEqual (UriHostNameType.Dns, Uri.CheckHostName ("c"), "c");
+
+			Uri uri = new Uri ("http://c:/dir/subdir/file");
+			Assert.AreEqual ("c", uri.Authority, "http.Authority");
+			Assert.AreEqual ("c", uri.DnsSafeHost, "http.DnsSafeHost");
+			Assert.AreEqual ("c", uri.Host, "http.Host");
+			Assert.AreEqual (UriHostNameType.Dns, uri.HostNameType, "http.HostNameType");
+			Assert.AreEqual ("http://c/dir/subdir/file", uri.ToString (), "http.ToString");
+
+			uri = new Uri ("https://c:/dir/subdir/file");
+			Assert.AreEqual ("c", uri.Authority, "https.Authority");
+			Assert.AreEqual ("c", uri.DnsSafeHost, "https.DnsSafeHost");
+			Assert.AreEqual ("c", uri.Host, "https.Host");
+			Assert.AreEqual (UriHostNameType.Dns, uri.HostNameType, "https.HostNameType");
+			Assert.AreEqual ("https://c/dir/subdir/file", uri.ToString (), "https.ToString");
+
+			uri = new Uri ("ftp://c:/dir/subdir/file");
+			Assert.AreEqual ("c", uri.Authority, "ftp.Authority");
+			Assert.AreEqual ("c", uri.DnsSafeHost, "ftp.DnsSafeHost");
+			Assert.AreEqual ("c", uri.Host, "ftp.Host");
+			Assert.AreEqual (UriHostNameType.Dns, uri.HostNameType, "ftp.HostNameType");
+			Assert.AreEqual ("ftp://c/dir/subdir/file", uri.ToString (), "ftp.ToString");
+
+			uri = new Uri ("nntp://c:/123456@c");
+			Assert.AreEqual ("c", uri.Authority, "nntp.Authority");
+			Assert.AreEqual ("c", uri.DnsSafeHost, "nntp.DnsSafeHost");
+			Assert.AreEqual ("c", uri.Host, "nntp.Host");
+			Assert.AreEqual (UriHostNameType.Dns, uri.HostNameType, "nntp.HostNameType");
+			Assert.AreEqual ("nntp://c/123456@c", uri.ToString (), "nntp.ToString");
+
+			uri = new Uri ("file://c:/dir/subdir/file");
+			Assert.AreEqual (String.Empty, uri.Authority, "file.Authority");
+			Assert.AreEqual (String.Empty, uri.DnsSafeHost, "file.DnsSafeHost");
+			Assert.AreEqual (String.Empty, uri.Host, "file.Host");
+			Assert.AreEqual (UriHostNameType.Basic, uri.HostNameType, "file.HostNameType");
+			Assert.AreEqual ("file:///c:/dir/subdir/file", uri.ToString (), "file.ToString");
+		}
+
+		[Test]
+		public void UnknownScheme ()
+		{
+			Uri uri = new Uri ("mono:c:\\dir\\subdir\\file");
+			Assert.IsFalse (uri.IsWellFormedOriginalString (), "IsWellFormedOriginalString");
+			Assert.AreEqual (String.Empty, uri.Host, "Host");
+			Assert.AreEqual ("c:\\dir\\subdir\\file", uri.LocalPath, "LocalPath");
+			// make the next assert work on both Windows and Mac (wrt Silverlight)
+			Assert.AreEqual ("mono:c:/dir/subdir/file", uri.ToString ().Replace ("%5C", "/"), "ToString");
+
+			uri = new Uri ("mono://host/dir/subdir/file");
+			Assert.IsTrue (uri.IsWellFormedOriginalString (), "2/IsWellFormedOriginalString");
+			Assert.AreEqual ("host", uri.Host, "2/Host");
+			Assert.AreEqual ("/dir/subdir/file", uri.AbsolutePath, "2/AbsolutePath");
+			Assert.AreEqual ("/dir/subdir/file", uri.LocalPath, "2/LocalPath");
+
+			uri = new Uri ("mono:///host/dir/subdir/file");
+			Assert.IsTrue (uri.IsWellFormedOriginalString (), "3/IsWellFormedOriginalString");
+			Assert.AreEqual (String.Empty, uri.Host, "3/Host");
+			Assert.AreEqual ("/host/dir/subdir/file", uri.AbsolutePath, "3/AbsolutePath");
+			Assert.AreEqual ("/host/dir/subdir/file", uri.LocalPath, "3/LocalPath");
+
+			uri = new Uri ("mono:////host/dir/subdir/file");
+			Assert.IsTrue (uri.IsWellFormedOriginalString (), "4/IsWellFormedOriginalString");
+			Assert.AreEqual (String.Empty, uri.Host, "4/Host");
+			Assert.AreEqual ("//host/dir/subdir/file", uri.AbsolutePath, "4/AbsolutePath");
+			Assert.AreEqual ("//host/dir/subdir/file", uri.LocalPath, "4/LocalPath");
+
+			// query and fragment
+			uri = new Uri ("mono://host/dir/subdir/file?query#fragment");
+			Assert.AreEqual ("/dir/subdir/file", uri.AbsolutePath, "qf.AbsolutePath");
+			Assert.AreEqual ("?query", uri.Query, "qf.Query");
+			Assert.AreEqual ("#fragment", uri.Fragment, "qf.Fragment");
+
+			// special characters
+			uri = new Uri ("mono://host/<>%\"{}|\\^`;/:@&=+$,[]#abc");
+			Assert.AreEqual ("/%3C%3E%25%22%7B%7D%7C/%5E%60;/:@&=+$,%5B%5D", uri.AbsolutePath, "Special");
+		}
+
+		[Test]
+		public void DriveAndForwardSlashes_Segments ()
+		{
+			Uri uri = new Uri ("mono:c:\\dir\\subdir\\file");
+			string [] segments = uri.Segments;
+			Assert.AreEqual (4, segments.Length, "segments");
+			// make the tests work on both Windows and Mac (wrt Silverlight)
+			Assert.AreEqual ("c:/", segments [0].Replace ("%5C", "/"), "s[0]");
+			Assert.AreEqual ("dir/", segments [1].Replace ("%5C", "/"), "s[1]");
+			Assert.AreEqual ("subdir/", segments [2].Replace ("%5C", "/"), "s[2]");
+			Assert.AreEqual ("file", segments [3], "s[3]");
+		}
+
+		[Test]
+		public void NewsScheme ()
+		{
+			Uri uri = new Uri ("news:novell.mono.moonlight/uri?query");
+
+			Assert.AreEqual ("novell.mono.moonlight/uri%3Fquery", uri.AbsolutePath, "AbsolutePath");
+			Assert.AreEqual ("news:novell.mono.moonlight/uri%3Fquery", uri.AbsoluteUri, "AbsoluteUri");
+			Assert.AreEqual (String.Empty, uri.Authority, "Authority");
+			Assert.AreEqual (String.Empty, uri.DnsSafeHost, "DnsSafeHost");
+			Assert.AreEqual (String.Empty, uri.Fragment, "Fragment");
+			Assert.AreEqual (String.Empty, uri.Host, "Host");
+			Assert.AreEqual (UriHostNameType.Unknown, uri.HostNameType, "HostNameType");
+			Assert.IsTrue (uri.IsAbsoluteUri, "IsAbsoluteUri");
+			Assert.IsTrue (uri.IsDefaultPort, "IsDefaultPort");
+			Assert.IsFalse (uri.IsFile, "IsFile");
+			Assert.IsFalse (uri.IsLoopback, "IsLoopback");
+			Assert.IsFalse (uri.IsUnc, "IsUnc");
+			Assert.AreEqual ("novell.mono.moonlight/uri?query", uri.LocalPath, "LocalPath");
+			Assert.AreEqual ("news:novell.mono.moonlight/uri?query", uri.OriginalString, "OriginalString");
+			Assert.AreEqual ("novell.mono.moonlight/uri%3Fquery", uri.PathAndQuery, "PathAndQuery");
+			Assert.AreEqual (-1, uri.Port, "Port");
+			Assert.AreEqual (String.Empty, uri.Query, "Query");
+			Assert.AreEqual ("news", uri.Scheme, "Scheme");
+			Assert.AreEqual ("novell.mono.moonlight/", uri.Segments [0], "Segments [0]");
+			Assert.AreEqual ("uri%3Fquery", uri.Segments [1], "Segments [1]");
+			Assert.IsFalse (uri.UserEscaped, "UserEscaped");
+			Assert.AreEqual (String.Empty, uri.UserInfo, "UserInfo");
+
+			// special escaped characters - they differs a bit from other URI
+			uri = new Uri ("news:novell.mono.moonlight/<>%\"{}|\\^`;/?:@&=+$,[]#abc");
+			Assert.AreEqual ("novell.mono.moonlight/%3C%3E%25%22%7B%7D%7C%5C%5E%60;/%3F:@&=+$,%5B%5D", uri.AbsolutePath, "Special");
+			Assert.AreEqual ("#abc", uri.Fragment, "Special/Fragment");
+		}
+
+		[Test]
+		public void NntpScheme ()
+		{
+			Uri uri = new Uri ("nntp://news.mono-project.com/novell.mono.moonlight/uri?query");
+
+			Assert.AreEqual ("/novell.mono.moonlight/uri%3Fquery", uri.AbsolutePath, "AbsolutePath");
+			Assert.AreEqual ("nntp://news.mono-project.com/novell.mono.moonlight/uri%3Fquery", uri.AbsoluteUri, "AbsoluteUri");
+			Assert.AreEqual ("news.mono-project.com", uri.Authority, "Authority");
+			Assert.AreEqual ("news.mono-project.com", uri.DnsSafeHost, "DnsSafeHost");
+			Assert.AreEqual (String.Empty, uri.Fragment, "Fragment");
+			Assert.AreEqual ("news.mono-project.com", uri.Host, "Host");
+			Assert.AreEqual (UriHostNameType.Dns, uri.HostNameType, "HostNameType");
+			Assert.IsTrue (uri.IsAbsoluteUri, "IsAbsoluteUri");
+			Assert.IsTrue (uri.IsDefaultPort, "IsDefaultPort");
+			Assert.IsFalse (uri.IsFile, "IsFile");
+			Assert.IsFalse (uri.IsLoopback, "IsLoopback");
+			Assert.IsFalse (uri.IsUnc, "IsUnc");
+			Assert.AreEqual ("/novell.mono.moonlight/uri?query", uri.LocalPath, "LocalPath");
+			Assert.AreEqual ("nntp://news.mono-project.com/novell.mono.moonlight/uri?query", uri.OriginalString, "OriginalString");
+			Assert.AreEqual ("/novell.mono.moonlight/uri%3Fquery", uri.PathAndQuery, "PathAndQuery");
+			Assert.AreEqual (119, uri.Port, "Port");
+			Assert.AreEqual (String.Empty, uri.Query, "Query");
+			Assert.AreEqual ("nntp", uri.Scheme, "Scheme");
+			Assert.AreEqual ("/", uri.Segments [0], "Segments [0]");
+			Assert.AreEqual ("novell.mono.moonlight/", uri.Segments [1], "Segments [1]");
+			Assert.AreEqual ("uri%3Fquery", uri.Segments [2], "Segments [2]");
+			Assert.IsFalse (uri.UserEscaped, "UserEscaped");
+			Assert.AreEqual (String.Empty, uri.UserInfo, "UserInfo");
+
+			// special escaped characters - they differs a bit from other URI
+			uri = new Uri ("nntp://news.mono-project.com/novell.mono.moonlight/<>%\"{}|\\^`;/?:@&=+$,[]#abc");
+			Assert.AreEqual ("/novell.mono.moonlight/%3C%3E%25%22%7B%7D%7C%5C%5E%60;/%3F:@&=+$,%5B%5D", uri.AbsolutePath, "Special");
+			Assert.AreEqual ("#abc", uri.Fragment, "Special/Fragment");
+		}
+
+		[Test]
+		public void FtpScheme ()
+		{
+			// user, password, custom port and a "query"
+			Uri uri = new Uri ("ftp://user:password@ftp.mono-project.com:2121/mono.zip?latest-n-greatest");
+			Assert.AreEqual ("/mono.zip%3Flatest-n-greatest", uri.AbsolutePath, "AbsolutePath");
+			Assert.AreEqual ("ftp://user:password@ftp.mono-project.com:2121/mono.zip%3Flatest-n-greatest", uri.AbsoluteUri, "AbsoluteUri");
+			Assert.AreEqual ("ftp.mono-project.com:2121", uri.Authority, "Authority");
+			Assert.AreEqual ("ftp.mono-project.com", uri.DnsSafeHost, "DnsSafeHost");
+			Assert.AreEqual (String.Empty, uri.Fragment, "Fragment");
+			Assert.AreEqual ("ftp.mono-project.com", uri.Host, "Host");
+			Assert.AreEqual (UriHostNameType.Dns, uri.HostNameType, "HostNameType");
+			Assert.IsTrue (uri.IsAbsoluteUri, "IsAbsoluteUri");
+			Assert.IsFalse (uri.IsDefaultPort, "IsDefaultPort");
+			Assert.IsFalse (uri.IsFile, "IsFile");
+			Assert.IsFalse (uri.IsLoopback, "IsLoopback");
+			Assert.IsFalse (uri.IsUnc, "IsUnc");
+			Assert.AreEqual ("/mono.zip?latest-n-greatest", uri.LocalPath, "LocalPath");
+			Assert.AreEqual ("ftp://user:password@ftp.mono-project.com:2121/mono.zip?latest-n-greatest", uri.OriginalString, "OriginalString");
+			Assert.AreEqual ("/mono.zip%3Flatest-n-greatest", uri.PathAndQuery, "PathAndQuery");
+			Assert.AreEqual (2121, uri.Port, "Port");
+			Assert.AreEqual (String.Empty, uri.Query, "Query");
+			Assert.AreEqual ("ftp", uri.Scheme, "Scheme");
+			Assert.AreEqual ("/", uri.Segments [0], "Segments [0]");
+			Assert.AreEqual ("mono.zip%3Flatest-n-greatest", uri.Segments [1], "Segments [1]");
+			Assert.IsFalse (uri.UserEscaped, "UserEscaped");
+			Assert.AreEqual ("user:password", uri.UserInfo, "UserInfo");
+
+			// special characters and fragment
+			uri = new Uri ("ftp://ftp.mono-project.com/<>%\"{}|\\^`;/?:@&=+$,[]#abc");
+			Assert.AreEqual ("/%3C%3E%25%22%7B%7D%7C/%5E%60;/%3F:@&=+$,%5B%5D", uri.AbsolutePath, "Special");
+			Assert.AreEqual ("#abc", uri.Fragment, "Special/Fragment");
+		}
+
+		[Test]
+		public void FileScheme ()
+		{
+			Uri uri = new Uri ("file://host/dir/subdir/file?this-is-not-a-query#but-this-is-a-fragment");
+			Assert.AreEqual ("/dir/subdir/file%3Fthis-is-not-a-query", uri.AbsolutePath, "AbsolutePath");
+			Assert.AreEqual ("file://host/dir/subdir/file%3Fthis-is-not-a-query#but-this-is-a-fragment", uri.AbsoluteUri, "AbsoluteUri");
+			Assert.AreEqual ("host", uri.Authority, "Authority");
+			Assert.AreEqual ("host", uri.DnsSafeHost, "DnsSafeHost");
+			Assert.AreEqual ("#but-this-is-a-fragment", uri.Fragment, "Fragment");
+			Assert.AreEqual ("host", uri.Host, "Host");
+			Assert.AreEqual (UriHostNameType.Dns, uri.HostNameType, "HostNameType");
+			Assert.IsTrue (uri.IsAbsoluteUri, "IsAbsoluteUri");
+			Assert.IsTrue (uri.IsDefaultPort, "IsDefaultPort");
+			Assert.IsTrue (uri.IsFile, "IsFile");
+			Assert.IsFalse (uri.IsLoopback, "IsLoopback");
+			Assert.AreEqual (isWin32, uri.IsUnc, "IsUnc");
+			Assert.AreEqual (isWin32 ? "\\\\host\\dir\\subdir\\file?this-is-not-a-query" : "/dir/subdir/file?this-is-not-a-query", uri.LocalPath, "LocalPath");
+			Assert.AreEqual ("file://host/dir/subdir/file?this-is-not-a-query#but-this-is-a-fragment", uri.OriginalString, "OriginalString");
+			Assert.AreEqual ("/dir/subdir/file%3Fthis-is-not-a-query", uri.PathAndQuery, "PathAndQuery");
+			Assert.AreEqual (-1, uri.Port, "Port");
+			Assert.AreEqual (String.Empty, uri.Query, "Query");
+			Assert.AreEqual ("file", uri.Scheme, "Scheme");
+			Assert.AreEqual ("/", uri.Segments [0], "Segments [0]");
+			Assert.AreEqual ("dir/", uri.Segments [1], "Segments [1]");
+			Assert.AreEqual ("subdir/", uri.Segments [2], "Segments [2]");
+			Assert.AreEqual ("file%3Fthis-is-not-a-query", uri.Segments [3], "Segments [3]");
+			Assert.IsFalse (uri.UserEscaped, "UserEscaped");
+			Assert.AreEqual (String.Empty, uri.UserInfo, "UserInfo");
+
+			// special characters
+			uri = new Uri ("file://host/<>%\"{}|\\^`;/?:@&=+$,[]#abc");
+			Assert.AreEqual ("/%3C%3E%25%22%7B%7D%7C/%5E%60;/%3F:@&=+$,%5B%5D", uri.AbsolutePath, "Special");
+		}
+
+		[Test]
+		public void PathReduction_2e ()
+		{
+			Uri uri = new Uri ("http://host/dir/%2e%2E/file");
+			Assert.AreEqual ("/file", uri.AbsolutePath, "AbsolutePath");
+			Assert.AreEqual ("http://host/file", uri.AbsoluteUri, "AbsoluteUri");
+			Assert.AreEqual ("/", uri.Segments [0], "Segments [0]");
+			Assert.AreEqual ("file", uri.Segments [1], "Segments [1]");
+		}
+
+		[Test]
+		public void ColonButNoPort ()
+		{
+			Uri uri = new Uri ("http://host:");
+			Assert.AreEqual ("http", uri.Scheme, "1.Scheme");
+			Assert.AreEqual ("host", uri.Host, "1.Host");
+			Assert.AreEqual (80, uri.Port, "1.Port");
+			Assert.IsTrue (uri.IsDefaultPort, "1.IsDefaultPort");
+
+			uri = new Uri ("ftp://host:/dir/file");
+			Assert.AreEqual ("ftp", uri.Scheme, "2.Scheme");
+			Assert.AreEqual ("host", uri.Host, "2.Host");
+			Assert.AreEqual (21, uri.Port, "2.Port");
+			Assert.IsTrue (uri.IsDefaultPort, "2.IsDefaultPort");
+		}
+
+		[Test]
+		public void IPv6SafeDnsName ()
+		{
+			Uri uri = new Uri ("http://[1:2:3:4:5:6:7:8]");
+			Assert.AreEqual (UriHostNameType.IPv6, uri.HostNameType, "1.HostNameType");
+			Assert.AreEqual ("[0001:0002:0003:0004:0005:0006:0007:0008]", uri.Authority, "1.Authority");
+			Assert.AreEqual ("0001:0002:0003:0004:0005:0006:0007:0008", uri.DnsSafeHost, "1.DnsSafeHost");
+			Assert.AreEqual ("[0001:0002:0003:0004:0005:0006:0007:0008]", uri.Host, "1.Host");
+
+			uri = new Uri ("http://[fe80::200:39ff:fe36:1a2d%4]/temp/example.htm");
+			Assert.AreEqual (UriHostNameType.IPv6, uri.HostNameType, "1.HostNameType");
+			Assert.AreEqual ("[FE80:0000:0000:0000:0200:39FF:FE36:1A2D]", uri.Authority, "2.Authority");
+			Assert.AreEqual ("FE80:0000:0000:0000:0200:39FF:FE36:1A2D%4", uri.DnsSafeHost, "2.DnsSafeHost");
+			Assert.AreEqual ("[FE80:0000:0000:0000:0200:39FF:FE36:1A2D]", uri.Host, "2.Host");
+		}
+
+		[Test]
+		public void RelativeEscapes ()
+		{
+			Uri uri = new Uri ("%2e%2e/dir/%2e%2e/subdir/file?query#fragment", UriKind.Relative);
+			Assert.AreEqual ("%2e%2e/dir/%2e%2e/subdir/file?query#fragment", uri.ToString (), "1.ToString");
+		}
+
+		[Test]
+		public void BadUri ()
+		{
+			Assert2.Throws<UriFormatException> (delegate {
+				new Uri ("a:b", UriKind.Absolute);
+			}, "a:b - Absolute");
+
+			Uri abs = new Uri ("http://novell.com", UriKind.Absolute);
+			Assert2.Throws<UriFormatException> (delegate {
+				new Uri (abs, "a:b");
+			}, "a:b - Relative");
+		}
+
+		[Test]
+		public void MergeWithConfusingRelativeUri ()
+		{
+			Uri abs = new Uri ("http://novell.com", UriKind.Absolute);
+
+			// note: invalid scheme
+			string srel = "http at ftp://mono-project.com/dir/file";
+			Uri uri = new Uri (abs, srel);
+			Assert.AreEqual ("http://novell.com/http@ftp://mono-project.com/dir/file", uri.ToString (), "1.ToString");
+
+			Uri rel = new Uri (srel, UriKind.Relative);
+			Assert.AreEqual ("http at ftp://mono-project.com/dir/file", rel.ToString (), "2.ToString");
+
+			uri = new Uri (abs, rel);
+			Assert.AreEqual ("http://novell.com/http@ftp://mono-project.com/dir/file", uri.ToString (), "3.ToString");
+		}
+
+		[Test]
+		public void EmptyUserInfo ()
+		{
+			Uri uri = new Uri ("http://@www.mono-project.com");
+			Assert.AreEqual ("http://@www.mono-project.com/", uri.AbsoluteUri, "AbsoluteUri");
+			Assert.AreEqual ("http://@www.mono-project.com", uri.GetLeftPart (UriPartial.Authority), "UriPartial.Authority");
+			Assert.AreEqual ("http://@www.mono-project.com/", uri.GetLeftPart (UriPartial.Path), "UriPartial.Path");
+			Assert.AreEqual (String.Empty, uri.UserInfo, "UserInfo");
+		}
+
+		[Test]
+		public void Fragment_SpecialCharacters ()
+		{
+			Uri uri = new Uri ("http://host/dir/file#fragment <>%\"{}|\\^`;/?:@&=+$,[]#second");
+			Assert.AreEqual ("#fragment%20%3C%3E%25%22%7B%7D%7C%5C%5E%60;/?:@&=+$,%5B%5D%23second", uri.Fragment, "Fragment");
+			Assert.AreEqual ("http://host/dir/file#fragment <>%25\"{}|\\^`;/?:@&=+$,[]%23second", uri.ToString (), "ToString");
+		}
+
+		[Test]
+		public void Query_SpecialCharacters ()
+		{
+			Uri uri = new Uri ("http://host/dir/file?query <>%\"{}|\\^`;/?:@&=+$,[]");
+			Assert.AreEqual ("?query%20%3C%3E%25%22%7B%7D%7C%5C%5E%60;/?:@&=+$,%5B%5D", uri.Query, "Query");
+			Assert.AreEqual ("http://host/dir/file?query <>%25\"{}|\\^`;/?:@&=+$,[]", uri.ToString (), "ToString");
+		}
+
+		[Test]
+		public void OriginalPathEscaped ()
+		{
+			Uri uri = new Uri ("http://www.mono-project.com/%41/%42/%43", UriKind.Absolute);
+			Assert.AreEqual ("http://www.mono-project.com/%41/%42/%43", uri.AbsoluteUri, "AbsoluteUri");
+			Assert.AreEqual ("/%41/%42/%43", uri.AbsolutePath, "AbsolutePath");
+			Assert.AreEqual ("/A/B/C", uri.LocalPath, "LocalPath");
+			Assert.AreEqual ("http://www.mono-project.com/%41/%42/%43", uri.GetLeftPart (UriPartial.Path), "GetLeftPart(Path)");
+		}
+
+		[Test]
+		public void CheckHostName ()
+		{
+			Assert.AreEqual (UriHostNameType.Unknown, Uri.CheckHostName ("host;machine"), "CheckHostName ;");
+			Assert.AreEqual (UriHostNameType.Unknown, Uri.CheckHostName ("www..mono-project.com"), "CheckHostName ..");
+			Assert.AreEqual (UriHostNameType.Unknown, Uri.CheckHostName ("www.mono-project.com\\"), "CheckHostName \\");
+		}
+
+		[Test]
+		public void Ports ()
+		{
+			Assert2.Throws<UriFormatException> (delegate {
+				new Uri ("http://host:-1/");
+			}, "negative");
+
+			Uri uri = new Uri ("http://host:0/");
+			Assert.AreEqual (0, uri.Port, "Port = 0");
+
+			Assert2.Throws<UriFormatException> (delegate {
+				new Uri ("http://host:+1/");
+			}, "positive");
+
+			uri = new Uri ("http://host:" + UInt16.MaxValue.ToString ());
+			Assert.AreEqual (65535, uri.Port, "Port = 65535");
+
+			Assert2.Throws<UriFormatException> (delegate {
+				new Uri ("http://host:" + (UInt16.MaxValue + 1).ToString ());
+			}, "too big");
+
+			Assert2.Throws<UriFormatException> (delegate {
+				new Uri ("http://host:3.14");
+			}, "float");
+		}
+
+		[Test]
+		public void NonAsciiHost ()
+		{
+			Uri uri = new Uri ("ftp://β:2121/", UriKind.Absolute);
+			Assert.AreEqual ("/", uri.AbsolutePath, "AbsolutePath");
+			Assert.AreEqual ("ftp://β:2121/", uri.AbsoluteUri, "AbsoluteUri");
+			Assert.AreEqual ("β:2121", uri.Authority, "Authority");
+			Assert.AreEqual ("β", uri.DnsSafeHost, "DnsSafeHost");
+			Assert.AreEqual ("β", uri.Host, "Host");
+			Assert.IsTrue (uri.IsAbsoluteUri, "IsAbsoluteUri");
+			Assert.IsFalse (uri.IsDefaultPort, "IsDefaultPort");
+			Assert.AreEqual ("/", uri.LocalPath, "LocalPath");
+			Assert.AreEqual ("ftp://β:2121/", uri.OriginalString, "OriginalString");
+			Assert.AreEqual ("/", uri.PathAndQuery, "PathAndQuery");
+			Assert.AreEqual (2121, uri.Port, "Port");
+			Assert.AreEqual ("ftp", uri.Scheme, "Scheme");
+			Assert.AreEqual ("/", uri.Segments [0], "Segments [0]");
+		}
 	}
 }
diff --git a/mcs/class/System/Test/System/UriTest3.cs b/mcs/class/System/Test/System/UriTest3.cs
index 98cf9ec..b31f15b 100644
--- a/mcs/class/System/Test/System/UriTest3.cs
+++ b/mcs/class/System/Test/System/UriTest3.cs
@@ -26,8 +26,6 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if NET_2_0
-
 using NUnit.Framework;
 
 using System;
@@ -213,7 +211,6 @@ namespace MonoTests.System
 		}
 
 		[Test] // TryCreate (Uri, String, Uri)
-		[Category ("NotWorking")]
 		public void TryCreate2 ()
 		{
 			Uri baseUri = new Uri (absolute);
@@ -253,7 +250,6 @@ namespace MonoTests.System
 		}
 
 		[Test] // TryCreate (Uri, Uri, Uri)
-		[Category ("NotWorking")]
 		public void TryCreate3 ()
 		{
 			Uri baseUri = new Uri (absolute);
@@ -292,8 +288,16 @@ namespace MonoTests.System
 			Uri baseUri = new Uri (absolute);
 			try {
 				Uri.TryCreate (baseUri, (Uri) null, out uri);
-				Assert.Fail ();
-			} catch (NullReferenceException) {
+#if NET_4_0
+				Assert.IsNull (uri);
+#else
+				Assert.Fail ("throw NRE under FX 2.0");
+#endif
+			}
+			catch (NullReferenceException) {
+#if NET_4_0
+				Assert.Fail ("does not throw NRE under FX 4.0");
+#endif
 			}
 		}
 
@@ -410,8 +414,14 @@ namespace MonoTests.System
 			try {
 				http.IsBaseOf (null);
 				Assert.Fail ();
-			} catch (NullReferenceException) {
 			}
+#if NET_4_0
+			catch (ArgumentNullException) {
+			}
+#else
+			catch (NullReferenceException) {
+			}
+#endif
 		}
 
 		[Test] 
@@ -463,32 +473,26 @@ namespace MonoTests.System
 		}
 
 		[Test]
-		[Category ("NotDotNet")] // https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=299942
-		public void MakeRelativeUri_Uri_Null_Mono ()
+		public void MakeRelativeUri_Uri_Null ()
 		{
 			Uri uri = new Uri ("http://test.com");
 			try {
 				uri.MakeRelativeUri ((Uri) null);
 				Assert.Fail ("#1");
-			} catch (ArgumentNullException ex) {
+			}
+#if NET_4_0
+			catch (ArgumentNullException ex) {
 				Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
 				Assert.IsNull (ex.InnerException, "#3");
 				Assert.IsNotNull (ex.Message, "#4");
 				Assert.IsNotNull (ex.ParamName, "#5");
 				Assert.AreEqual ("uri", ex.ParamName, "#6");
 			}
-		}
-
-		[Test]
-		[Category ("NotWorking")] // https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=299942
-		public void MakeRelativeUri_Uri_Null_MS ()
-		{
-			Uri uri = new Uri ("http://test.com");
-			try {
-				uri.MakeRelativeUri ((Uri) null);
-				Assert.Fail ("#1");
-			} catch (NullReferenceException) {
+#else
+			catch (NullReferenceException) {
+				// https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=299942
 			}
+#endif
 		}
 
 		[Test] // LAMESPEC: see bug #321113
@@ -500,7 +504,7 @@ namespace MonoTests.System
 
 			Uri a = new Uri ("http://www.mono-project.com:808/foo");
 			Uri b = new Uri (a, "../docs?queryyy#% %20%23%25bar");
-			//Assert.AreEqual ("http://www.mono-project.com:808/docs?queryyy#% %20%23%25bar", b.OriginalString, "#2");
+			Assert.AreEqual ("http://www.mono-project.com:808/docs?queryyy#% %20%23%25bar", b.OriginalString, "#2");
 
 			Uri c = new Uri ("http://www.mono-project.com:808/foo");
 			Uri d = new Uri (a, "../docs?queryyy#%20%23%25bar");
@@ -623,4 +627,3 @@ namespace MonoTests.System
 	}
 }
 
-#endif
diff --git a/mcs/class/System/mobile_System.dll.sources b/mcs/class/System/mobile_System.dll.sources
new file mode 100644
index 0000000..cf09060
--- /dev/null
+++ b/mcs/class/System/mobile_System.dll.sources
@@ -0,0 +1,536 @@
+../../build/common/Consts.cs
+../../build/common/Locale.cs
+../../build/common/MonoTODOAttribute.cs
+../corlib/System.Collections.Generic/CollectionDebuggerView.cs
+../corlib/System.Collections/CollectionDebuggerView.cs
+Assembly/AssemblyInfo.cs
+Mono.Http/NtlmClient.cs
+System.CodeDom.Compiler/GeneratedCodeAttribute.cs
+System.Collections.Generic/ISet.cs
+System.Collections.Generic/LinkedList.cs
+System.Collections.Generic/LinkedListNode.cs
+System.Collections.Generic/Queue.cs
+System.Collections.Generic/RBTree.cs
+System.Collections.Generic/SortedDictionary.cs
+System.Collections.Generic/SortedList.cs
+System.Collections.Generic/Stack.cs
+System.Collections.Specialized/BitVector32.cs
+System.Collections.Specialized/CollectionsUtil.cs
+System.Collections.Specialized/HybridDictionary.cs
+System.Collections.Specialized/ListDictionary.cs
+System.Collections.Specialized/NameObjectCollectionBase.cs
+System.Collections.Specialized/NameValueCollection.cs
+System.Collections.Specialized/ProcessStringDictionary.cs
+System.Collections.Specialized/StringCollection.cs
+System.Collections.Specialized/StringDictionary.cs
+System.Collections.Specialized/StringEnumerator.cs
+System.ComponentModel.Design.Serialization/InstanceDescriptor.cs
+System.ComponentModel.Design/CommandID.cs
+System.ComponentModel.Design/ComponentChangedEventArgs.cs
+System.ComponentModel.Design/ComponentChangedEventHandler.cs
+System.ComponentModel.Design/ComponentChangingEventArgs.cs
+System.ComponentModel.Design/ComponentChangingEventHandler.cs
+System.ComponentModel.Design/ComponentEventArgs.cs
+System.ComponentModel.Design/ComponentEventHandler.cs
+System.ComponentModel.Design/ComponentRenameEventArgs.cs
+System.ComponentModel.Design/ComponentRenameEventHandler.cs
+System.ComponentModel.Design/DesignerTransaction.cs
+System.ComponentModel.Design/DesignerTransactionCloseEventArgs.cs
+System.ComponentModel.Design/DesignerTransactionCloseEventHandler.cs
+System.ComponentModel.Design/DesignerVerb.cs
+System.ComponentModel.Design/DesignerVerbCollection.cs
+System.ComponentModel.Design/IComponentChangeService.cs
+System.ComponentModel.Design/IDesigner.cs
+System.ComponentModel.Design/IDesignerHost.cs
+System.ComponentModel.Design/IReferenceService.cs
+System.ComponentModel.Design/IRootDesigner.cs
+System.ComponentModel.Design/IServiceContainer.cs
+System.ComponentModel.Design/ITypeDescriptorFilterService.cs
+System.ComponentModel.Design/ITypeResolutionService.cs
+System.ComponentModel.Design/MenuCommand.cs
+System.ComponentModel.Design/ServiceCreatorCallback.cs
+System.ComponentModel.Design/StandardCommands.cs
+System.ComponentModel.Design/ViewTechnology.cs
+System.ComponentModel/ArrayConverter.cs
+System.ComponentModel/AsyncCompletedEventArgs.cs
+System.ComponentModel/AsyncCompletedEventHandler.cs
+System.ComponentModel/AsyncOperation.cs
+System.ComponentModel/AsyncOperationManager.cs
+System.ComponentModel/AttributeCollection.cs
+System.ComponentModel/BackgroundWorker.cs
+System.ComponentModel/BaseNumberConverter.cs
+System.ComponentModel/BindableSupport.cs
+System.ComponentModel/BooleanConverter.cs
+System.ComponentModel/BrowsableAttribute.cs
+System.ComponentModel/ByteConverter.cs
+System.ComponentModel/CancelEventArgs.cs
+System.ComponentModel/CategoryAttribute.cs
+System.ComponentModel/CharConverter.cs
+System.ComponentModel/CollectionChangeAction.cs
+System.ComponentModel/CollectionChangeEventArgs.cs
+System.ComponentModel/CollectionChangeEventHandler.cs
+System.ComponentModel/CollectionConverter.cs
+System.ComponentModel/Component.cs
+System.ComponentModel/ComponentCollection.cs
+System.ComponentModel/ComponentConverter.cs
+System.ComponentModel/CultureInfoConverter.cs
+System.ComponentModel/CustomTypeDescriptor.cs
+System.ComponentModel/DateTimeConverter.cs
+System.ComponentModel/DecimalConverter.cs
+System.ComponentModel/DefaultEventAttribute.cs
+System.ComponentModel/DefaultPropertyAttribute.cs
+System.ComponentModel/DefaultValueAttribute.cs
+System.ComponentModel/DescriptionAttribute.cs
+System.ComponentModel/DesignOnlyAttribute.cs
+System.ComponentModel/DesignTimeVisibleAttribute.cs
+System.ComponentModel/DesignerAttribute.cs
+System.ComponentModel/DesignerCategoryAttribute.cs
+System.ComponentModel/DesignerSerializationVisibility.cs
+System.ComponentModel/DesignerSerializationVisibilityAttribute.cs
+System.ComponentModel/DisplayNameAttribute.cs
+System.ComponentModel/DoWorkEventArgs.cs
+System.ComponentModel/DoWorkEventHandler.cs
+System.ComponentModel/DoubleConverter.cs
+System.ComponentModel/EditorAttribute.cs
+System.ComponentModel/EditorBrowsableAttribute.cs
+System.ComponentModel/EditorBrowsableState.cs
+System.ComponentModel/EnumConverter.cs
+System.ComponentModel/EventDescriptor.cs
+System.ComponentModel/EventDescriptorCollection.cs
+System.ComponentModel/EventHandlerList.cs
+System.ComponentModel/ExpandableObjectConverter.cs
+System.ComponentModel/GuidConverter.cs
+System.ComponentModel/IBindingList.cs
+System.ComponentModel/IBindingListView.cs
+System.ComponentModel/IChangeTracking.cs
+System.ComponentModel/IComNativeDescriptorHandler.cs
+System.ComponentModel/IComponent.cs
+System.ComponentModel/IComponent.cs
+System.ComponentModel/IContainer.cs
+System.ComponentModel/ICustomTypeDescriptor.cs
+System.ComponentModel/IDataErrorInfo.cs
+System.ComponentModel/IDataErrorInfo.cs
+System.ComponentModel/IEditableObject.cs
+System.ComponentModel/IListSource.cs
+System.ComponentModel/INotifyPropertyChanged.cs
+System.ComponentModel/IRevertibleChangeTracking.cs
+System.ComponentModel/ISite.cs
+System.ComponentModel/ISupportInitialize.cs
+System.ComponentModel/ISupportInitializeNotification.cs
+System.ComponentModel/ISynchronizeInvoke.cs
+System.ComponentModel/ITypeDescriptorContext.cs
+System.ComponentModel/ITypedList.cs
+System.ComponentModel/Int16Converter.cs
+System.ComponentModel/Int32Converter.cs
+System.ComponentModel/Int64Converter.cs
+System.ComponentModel/InvalidEnumArgumentException.cs
+System.ComponentModel/InvalidEnumArgumentException.cs
+System.ComponentModel/ListBindableAttribute.cs
+System.ComponentModel/ListChangedEventArgs.cs
+System.ComponentModel/ListChangedEventHandler.cs
+System.ComponentModel/ListChangedType.cs
+System.ComponentModel/ListSortDescription.cs
+System.ComponentModel/ListSortDescriptionCollection.cs
+System.ComponentModel/ListSortDirection.cs
+System.ComponentModel/ListSortDirection.cs
+System.ComponentModel/LocalizableAttribute.cs
+System.ComponentModel/MarshalByValueComponent.cs
+System.ComponentModel/MemberDescriptor.cs
+System.ComponentModel/MergablePropertyAttribute.cs
+System.ComponentModel/MultilineStringConverter.cs
+System.ComponentModel/NotifyParentPropertyAttribute.cs
+System.ComponentModel/NullableConverter.cs
+System.ComponentModel/PasswordPropertyTextAttribute.cs
+System.ComponentModel/ProgressChangedEventArgs.cs
+System.ComponentModel/ProgressChangedEventHandler.cs
+System.ComponentModel/PropertyChangedEventArgs.cs
+System.ComponentModel/PropertyChangedEventHandler.cs
+System.ComponentModel/PropertyDescriptor.cs
+System.ComponentModel/PropertyDescriptor.cs
+System.ComponentModel/PropertyDescriptorCollection.cs
+System.ComponentModel/ReadOnlyAttribute.cs
+System.ComponentModel/ReadOnlyAttribute.cs
+System.ComponentModel/RecommendedAsConfigurableAttribute.cs
+System.ComponentModel/ReferenceConverter.cs
+System.ComponentModel/ReferenceConverter.cs
+System.ComponentModel/ReflectionEventDescriptor.cs
+System.ComponentModel/ReflectionPropertyDescriptor.cs
+System.ComponentModel/RefreshEventArgs.cs
+System.ComponentModel/RefreshEventHandler.cs
+System.ComponentModel/RefreshProperties.cs
+System.ComponentModel/RefreshPropertiesAttribute.cs
+System.ComponentModel/RunWorkerCompletedEventArgs.cs
+System.ComponentModel/RunWorkerCompletedEventHandler.cs
+System.ComponentModel/SByteConverter.cs
+System.ComponentModel/SingleConverter.cs
+System.ComponentModel/StringConverter.cs
+System.ComponentModel/TimeSpanConverter.cs
+System.ComponentModel/ToolboxItemAttribute.cs
+System.ComponentModel/ToolboxItemFilterAttribute.cs
+System.ComponentModel/ToolboxItemFilterType.cs
+System.ComponentModel/TypeConverter.cs
+System.ComponentModel/TypeConverterAttribute.cs
+System.ComponentModel/TypeConverter_2_1.cs
+System.ComponentModel/TypeDescriptionProvider.cs
+System.ComponentModel/TypeDescriptor.cs
+System.ComponentModel/TypeListConverter.cs
+System.ComponentModel/UInt16Converter.cs
+System.ComponentModel/UInt32Converter.cs
+System.ComponentModel/UInt64Converter.cs
+System.ComponentModel/WeakObjectWrapper.cs
+System.ComponentModel/WeakObjectWrapperComparer.cs
+System.ComponentModel/Win32Exception.cs
+System.Diagnostics/DataReceivedEventArgs.cs
+System.Diagnostics/DataReceivedEventHandler.cs
+System.Diagnostics/Debug_2_1.cs
+System.Diagnostics/FileVersionInfo.cs
+System.Diagnostics/MonitoringDescriptionAttribute.cs
+System.Diagnostics/Process.cs
+System.Diagnostics/ProcessModule.cs
+System.Diagnostics/ProcessModuleCollection.cs
+System.Diagnostics/ProcessPriorityClass.cs
+System.Diagnostics/ProcessStartInfo.cs
+System.Diagnostics/ProcessThread.cs
+System.Diagnostics/ProcessThreadCollection.cs
+System.Diagnostics/ProcessWindowStyle.cs
+System.Diagnostics/Stopwatch.cs
+System.Diagnostics/ThreadPriorityLevel.cs
+System.Diagnostics/ThreadState.cs
+System.Diagnostics/ThreadWaitReason.cs
+System.IO.Compression/CompressionMode.cs
+System.IO.Compression/DeflateStream.cs
+System.IO.Compression/GZipStream.cs
+System.IO/MonoIO.cs
+System.IO/MonoIOError.cs
+System.IO/MonoSyncFileStream.cs
+System.Net.Cache/HttpCacheAgeControl.cs
+System.Net.Cache/HttpRequestCacheLevel.cs
+System.Net.Cache/HttpRequestCachePolicy.cs
+System.Net.Cache/RequestCacheLevel.cs
+System.Net.Cache/RequestCachePolicy.cs
+System.Net.Mail/AlternateView.cs
+System.Net.Mail/AlternateViewCollection.cs
+System.Net.Mail/Attachment.cs
+System.Net.Mail/AttachmentBase.cs
+System.Net.Mail/AttachmentCollection.cs
+System.Net.Mail/DeliveryNotificationOptions.cs
+System.Net.Mail/LinkedResource.cs
+System.Net.Mail/LinkedResourceCollection.cs
+System.Net.Mail/MailAddress.cs
+System.Net.Mail/MailAddressCollection.cs
+System.Net.Mail/MailMessage.cs
+System.Net.Mail/MailPriority.cs
+System.Net.Mail/SendCompletedEventHandler.cs
+System.Net.Mail/SmtpAccess.cs
+System.Net.Mail/SmtpClient.cs
+System.Net.Mail/SmtpDeliveryMethod.cs
+System.Net.Mail/SmtpException.cs
+System.Net.Mail/SmtpFailedRecipientException.cs
+System.Net.Mail/SmtpFailedRecipientsException.cs
+System.Net.Mail/SmtpStatusCode.cs
+System.Net.Mime/ContentDisposition.cs
+System.Net.Mime/ContentType.cs
+System.Net.Mime/DispositionTypeNames.cs
+System.Net.Mime/MediaTypeNames.cs
+System.Net.Mime/TransferEncoding.cs
+System.Net.NetworkInformation/DuplicateAddressDetectionState.cs
+System.Net.NetworkInformation/GatewayIPAddressInformation.cs
+System.Net.NetworkInformation/GatewayIPAddressInformationCollection.cs
+System.Net.NetworkInformation/IPAddressCollection.cs
+System.Net.NetworkInformation/IPAddressInformation.cs
+System.Net.NetworkInformation/IPAddressInformationCollection.cs
+System.Net.NetworkInformation/IPGlobalProperties.cs
+System.Net.NetworkInformation/IPGlobalStatistics.cs
+System.Net.NetworkInformation/IPInterfaceProperties.cs
+System.Net.NetworkInformation/IPStatus.cs
+System.Net.NetworkInformation/IPv4InterfaceProperties.cs
+System.Net.NetworkInformation/IPv4InterfaceStatistics.cs
+System.Net.NetworkInformation/IPv6InterfaceProperties.cs
+System.Net.NetworkInformation/IcmpV4Statistics.cs
+System.Net.NetworkInformation/IcmpV6Statistics.cs
+System.Net.NetworkInformation/LinuxNetworkInterfaceMarshal.cs
+System.Net.NetworkInformation/MacOsNetworkInterfaceMarshal.cs
+System.Net.NetworkInformation/MulticastIPAddressInformation.cs
+System.Net.NetworkInformation/MulticastIPAddressInformationCollection.cs
+System.Net.NetworkInformation/NetBiosNodeType.cs
+System.Net.NetworkInformation/NetworkAddressChangedEventHandler.cs
+System.Net.NetworkInformation/NetworkAvailabilityChangedEventHandler.cs
+System.Net.NetworkInformation/NetworkAvailabilityEventArgs.cs
+System.Net.NetworkInformation/NetworkChange.cs
+System.Net.NetworkInformation/NetworkInformationAccess.cs
+System.Net.NetworkInformation/NetworkInformationException.cs
+System.Net.NetworkInformation/NetworkInterface.cs
+System.Net.NetworkInformation/NetworkInterfaceComponent.cs
+System.Net.NetworkInformation/NetworkInterfaceType.cs
+System.Net.NetworkInformation/OperationalStatus.cs
+System.Net.NetworkInformation/PhysicalAddress.cs
+System.Net.NetworkInformation/Ping.cs
+System.Net.NetworkInformation/PingCompletedEventArgs.cs
+System.Net.NetworkInformation/PingCompletedEventHandler.cs
+System.Net.NetworkInformation/PingException.cs
+System.Net.NetworkInformation/PingOptions.cs
+System.Net.NetworkInformation/PingReply.cs
+System.Net.NetworkInformation/PrefixOrigin.cs
+System.Net.NetworkInformation/SuffixOrigin.cs
+System.Net.NetworkInformation/TcpConnectionInformation.cs
+System.Net.NetworkInformation/TcpState.cs
+System.Net.NetworkInformation/TcpStatistics.cs
+System.Net.NetworkInformation/UdpStatistics.cs
+System.Net.NetworkInformation/UnicastIPAddressInformation.cs
+System.Net.NetworkInformation/UnicastIPAddressInformationCollection.cs
+System.Net.NetworkInformation/Win32NetworkInterfaceMarshal.cs
+System.Net.Security/AuthenticatedStream.cs
+System.Net.Security/AuthenticationLevel.cs
+System.Net.Security/LocalCertificateSelectionCallback.cs
+System.Net.Security/NegotiateStream.cs
+System.Net.Security/ProtectionLevel.cs
+System.Net.Security/RemoteCertificateValidationCallback.cs
+System.Net.Security/SslPolicyErrors.cs
+System.Net.Security/SslStream.cs
+System.Net.Sockets/AddressFamily.cs
+System.Net.Sockets/AddressFamily.cs
+System.Net.Sockets/IOControlCode.cs
+System.Net.Sockets/IPPacketInformation.cs
+System.Net.Sockets/IPv6MulticastOption.cs
+System.Net.Sockets/LingerOption.cs
+System.Net.Sockets/MulticastOption.cs
+System.Net.Sockets/NetworkStream.cs
+System.Net.Sockets/ProtocolFamily.cs
+System.Net.Sockets/ProtocolType.cs
+System.Net.Sockets/SelectMode.cs
+System.Net.Sockets/SendPacketsElement.cs
+System.Net.Sockets/Socket.cs
+System.Net.Sockets/SocketAsyncEventArgs.cs
+System.Net.Sockets/SocketAsyncOperation.cs
+System.Net.Sockets/SocketError.cs
+System.Net.Sockets/SocketException.cs
+System.Net.Sockets/SocketFlags.cs
+System.Net.Sockets/SocketInformation.cs
+System.Net.Sockets/SocketInformationOptions.cs
+System.Net.Sockets/SocketOptionLevel.cs
+System.Net.Sockets/SocketOptionName.cs
+System.Net.Sockets/SocketShutdown.cs
+System.Net.Sockets/SocketType.cs
+System.Net.Sockets/Socket_2_1.cs
+System.Net.Sockets/TcpClient.cs
+System.Net.Sockets/TcpListener.cs
+System.Net.Sockets/TransmitFileOptions.cs
+System.Net.Sockets/UdpClient.cs
+System.Net/AuthenticationManager.cs
+System.Net/AuthenticationSchemeSelector.cs
+System.Net/AuthenticationSchemes.cs
+System.Net/Authorization.cs
+System.Net/BasicClient.cs
+System.Net/BindIPEndPoint.cs
+System.Net/ChunkStream.cs
+System.Net/ChunkedInputStream.cs
+System.Net/ConnectionModes.cs
+System.Net/Cookie.cs
+System.Net/CookieCollection.cs
+System.Net/CookieContainer.cs
+System.Net/CookieException.cs
+System.Net/CookieParser.cs
+System.Net/CredentialCache.cs
+System.Net/DecompressionMethods.cs
+System.Net/DefaultCertificatePolicy.cs
+System.Net/DigestClient.cs
+System.Net/Dns.cs
+System.Net/DownloadDataCompletedEventArgs.cs
+System.Net/DownloadDataCompletedEventHandler.cs
+System.Net/DownloadProgressChangedEventArgs.cs
+System.Net/DownloadProgressChangedEventHandler.cs
+System.Net/DownloadStringCompletedEventArgs.cs
+System.Net/DownloadStringCompletedEventHandler.cs
+System.Net/EndPoint.cs
+System.Net/EndPointListener.cs
+System.Net/EndPointManager.cs
+System.Net/FileWebRequest.cs
+System.Net/FileWebRequestCreator.cs
+System.Net/FileWebResponse.cs
+System.Net/FtpAsyncResult.cs
+System.Net/FtpDataStream.cs
+System.Net/FtpRequestCreator.cs
+System.Net/FtpStatus.cs
+System.Net/FtpStatusCode.cs
+System.Net/FtpWebRequest.cs
+System.Net/FtpWebResponse.cs
+System.Net/GlobalProxySelection.cs
+System.Net/HttpConnection.cs
+System.Net/HttpContinueDelegate.cs
+System.Net/HttpListener.cs
+System.Net/HttpListenerBasicIdentity.cs
+System.Net/HttpListenerContext.cs
+System.Net/HttpListenerException.cs
+System.Net/HttpListenerPrefixCollection.cs
+System.Net/HttpListenerRequest.cs
+System.Net/HttpListenerResponse.cs
+System.Net/HttpRequestCreator.cs
+System.Net/HttpRequestHeader.cs
+System.Net/HttpResponseHeader.cs
+System.Net/HttpStatusCode.cs
+System.Net/HttpStreamAsyncResult.cs
+System.Net/HttpUtility.cs
+System.Net/HttpVersion.cs
+System.Net/HttpWebRequest.cs
+System.Net/HttpWebResponse.cs
+System.Net/IAuthenticationModule.cs
+System.Net/ICertificatePolicy.cs
+System.Net/ICredentialLookup.cs
+System.Net/ICredentialPolicy.cs
+System.Net/ICredentialsByHost.cs
+System.Net/IPAddress.cs
+System.Net/IPAddress.cs
+System.Net/IPEndPoint.cs
+System.Net/IPHostEntry.cs
+System.Net/IPv6Address.cs
+System.Net/IPv6Address.cs
+System.Net/IWebProxy.cs
+System.Net/IWebProxyScript.cs
+System.Net/IWebRequestCreate.cs
+System.Net/ListenerAsyncResult.cs
+System.Net/ListenerPrefix.cs
+System.Net/MonoHttpDate.cs
+System.Net/NetConfig.cs
+System.Net/NetworkAccess.cs
+System.Net/NetworkCredential.cs
+System.Net/NtlmClient.cs
+System.Net/OpenReadCompletedEventArgs.cs
+System.Net/OpenReadCompletedEventHandler.cs
+System.Net/OpenWriteCompletedEventArgs.cs
+System.Net/OpenWriteCompletedEventHandler.cs
+System.Net/ProtocolViolationException.cs
+System.Net/RequestStream.cs
+System.Net/ResponseStream.cs
+System.Net/SecurityProtocolType.cs
+System.Net/ServicePoint.cs
+System.Net/ServicePointManager.cs
+System.Net/SocketAddress.cs
+System.Net/TransportType.cs
+System.Net/UploadDataCompletedEventArgs.cs
+System.Net/UploadDataCompletedEventHandler.cs
+System.Net/UploadFileCompletedEventArgs.cs
+System.Net/UploadFileCompletedEventHandler.cs
+System.Net/UploadProgressChangedEventArgs.cs
+System.Net/UploadProgressChangedEventHandler.cs
+System.Net/UploadStringCompletedEventArgs.cs
+System.Net/UploadStringCompletedEventHandler.cs
+System.Net/UploadValuesCompletedEventArgs.cs
+System.Net/UploadValuesCompletedEventHandler.cs
+System.Net/WebAsyncResult.cs
+System.Net/WebClient.cs
+System.Net/WebConnection.cs
+System.Net/WebConnectionData.cs
+System.Net/WebConnectionGroup.cs
+System.Net/WebConnectionStream.cs
+System.Net/WebException.cs
+System.Net/WebExceptionStatus.cs
+System.Net/WebHeaderCollection.cs
+System.Net/WebPermission.cs
+System.Net/WebPermissionAttribute.cs
+System.Net/WebProxy.cs
+System.Net/WebRequest.cs
+System.Net/WebRequestMethods.cs
+System.Net/WebResponse.cs
+System.Security.AccessControl/SemaphoreAccessRule.cs
+System.Security.AccessControl/SemaphoreAuditRule.cs
+System.Security.AccessControl/SemaphoreRights.cs
+System.Security.AccessControl/SemaphoreSecurity.cs
+System.Security.Authentication/AuthenticationException.cs
+System.Security.Authentication/CipherAlgorithmType.cs
+System.Security.Authentication/ExchangeAlgorithmType.cs
+System.Security.Authentication/HashAlgorithmType.cs
+System.Security.Authentication/InvalidCredentialException.cs
+System.Security.Authentication/SslProtocols.cs
+System.Security.Cryptography.X509Certificates/OSX509Certificates.cs
+System.Security.Cryptography.X509Certificates/OpenFlags.cs
+System.Security.Cryptography.X509Certificates/PublicKey.cs
+System.Security.Cryptography.X509Certificates/StoreLocation.cs
+System.Security.Cryptography.X509Certificates/StoreName.cs
+System.Security.Cryptography.X509Certificates/X500DistinguishedName.cs
+System.Security.Cryptography.X509Certificates/X500DistinguishedNameFlags.cs
+System.Security.Cryptography.X509Certificates/X509BasicConstraintsExtension.cs
+System.Security.Cryptography.X509Certificates/X509Certificate2.cs
+System.Security.Cryptography.X509Certificates/X509Certificate2Collection.cs
+System.Security.Cryptography.X509Certificates/X509Certificate2Enumerator.cs
+System.Security.Cryptography.X509Certificates/X509CertificateCollection.cs
+System.Security.Cryptography.X509Certificates/X509Chain.cs
+System.Security.Cryptography.X509Certificates/X509ChainElement.cs
+System.Security.Cryptography.X509Certificates/X509ChainElementCollection.cs
+System.Security.Cryptography.X509Certificates/X509ChainElementEnumerator.cs
+System.Security.Cryptography.X509Certificates/X509ChainPolicy.cs
+System.Security.Cryptography.X509Certificates/X509ChainStatus.cs
+System.Security.Cryptography.X509Certificates/X509ChainStatusFlags.cs
+System.Security.Cryptography.X509Certificates/X509EnhancedKeyUsageExtension.cs
+System.Security.Cryptography.X509Certificates/X509Extension.cs
+System.Security.Cryptography.X509Certificates/X509ExtensionCollection.cs
+System.Security.Cryptography.X509Certificates/X509ExtensionEnumerator.cs
+System.Security.Cryptography.X509Certificates/X509FindType.cs
+System.Security.Cryptography.X509Certificates/X509IncludeOption.cs
+System.Security.Cryptography.X509Certificates/X509KeyUsageExtension.cs
+System.Security.Cryptography.X509Certificates/X509KeyUsageFlags.cs
+System.Security.Cryptography.X509Certificates/X509NameType.cs
+System.Security.Cryptography.X509Certificates/X509RevocationFlag.cs
+System.Security.Cryptography.X509Certificates/X509RevocationMode.cs
+System.Security.Cryptography.X509Certificates/X509Store.cs
+System.Security.Cryptography.X509Certificates/X509SubjectKeyIdentifierExtension.cs
+System.Security.Cryptography.X509Certificates/X509SubjectKeyIdentifierHashAlgorithm.cs
+System.Security.Cryptography.X509Certificates/X509VerificationFlags.cs
+System.Security.Cryptography/AsnEncodedData.cs
+System.Security.Cryptography/AsnEncodedDataCollection.cs
+System.Security.Cryptography/AsnEncodedDataEnumerator.cs
+System.Security.Cryptography/Oid.cs
+System.Security.Cryptography/OidCollection.cs
+System.Security.Cryptography/OidEnumerator.cs
+System.Text.RegularExpressions/BaseMachine.cs
+System.Text.RegularExpressions/Capture.cs
+System.Text.RegularExpressions/CaptureCollection.cs
+System.Text.RegularExpressions/Group.cs
+System.Text.RegularExpressions/GroupCollection.cs
+System.Text.RegularExpressions/Match.cs
+System.Text.RegularExpressions/MatchCollection.cs
+System.Text.RegularExpressions/MatchEvaluator.cs
+System.Text.RegularExpressions/Regex.cs
+System.Text.RegularExpressions/RegexCompilationInfo.cs
+System.Text.RegularExpressions/RegexOptions.cs
+System.Text.RegularExpressions/RxInterpreter.cs
+System.Text.RegularExpressions/RxOp.cs
+System.Text.RegularExpressions/arch.cs
+System.Text.RegularExpressions/cache.cs
+System.Text.RegularExpressions/category.cs
+System.Text.RegularExpressions/compiler.cs
+System.Text.RegularExpressions/debug.cs
+System.Text.RegularExpressions/interpreter.cs
+System.Text.RegularExpressions/interval.cs
+System.Text.RegularExpressions/parser.cs
+System.Text.RegularExpressions/quicksearch.cs
+System.Text.RegularExpressions/replace.cs
+System.Text.RegularExpressions/syntax.cs
+System.Threading/Semaphore.cs
+System.Threading/SemaphoreFullException.cs
+System.Threading/ThreadExceptionEventArgs.cs
+System.Threading/ThreadExceptionEventHandler.cs
+System.Timers/ElapsedEventArgs.cs
+System.Timers/ElapsedEventHandler.cs
+System.Timers/Timer.cs
+System.Timers/TimersDescriptionAttribute.cs
+System/DefaultUriParser.cs
+System/FileStyleUriParser.cs
+System/FtpStyleUriParser.cs
+System/GenericUriParser.cs
+System/GenericUriParserOptions.cs
+System/HttpStyleUriParser.cs
+System/NetPipeStyleUriParser.cs
+System/NetTcpStyleUriParser.cs
+System/NewsStyleUriParser.cs
+System/SRDescriptionAttribute.cs
+System/Uri.cs
+System/UriBuilder.cs
+System/UriComponents.cs
+System/UriFormat.cs
+System/UriFormatException.cs
+System/UriHostNameType.cs
+System/UriIdnScope.cs
+System/UriKind.cs
+System/UriParser.cs
+System/UriPartial.cs
+System/UriTypeConverter.cs
diff --git a/mcs/class/System/monodroid_System.dll.sources b/mcs/class/System/monodroid_System.dll.sources
new file mode 100644
index 0000000..70a77a6
--- /dev/null
+++ b/mcs/class/System/monodroid_System.dll.sources
@@ -0,0 +1 @@
+#include mobile_System.dll.sources
diff --git a/mcs/class/System/monotouch_System.dll.sources b/mcs/class/System/monotouch_System.dll.sources
index 4979824..8dce31d 100644
--- a/mcs/class/System/monotouch_System.dll.sources
+++ b/mcs/class/System/monotouch_System.dll.sources
@@ -1,536 +1,2 @@
-../../build/common/Consts.cs
-../../build/common/Locale.cs
-../../build/common/MonoTODOAttribute.cs
-../corlib/System.Collections.Generic/CollectionDebuggerView.cs
-../corlib/System.Collections/CollectionDebuggerView.cs
-Assembly/AssemblyInfo.cs
-Mono.Http/NtlmClient.cs
+#include mobile_System.dll.sources
 MonoTouch/MonoPInvokeCallbackAttribute.cs
-System.CodeDom.Compiler/GeneratedCodeAttribute.cs
-System.Collections.Generic/ISet.cs
-System.Collections.Generic/LinkedList.cs
-System.Collections.Generic/LinkedListNode.cs
-System.Collections.Generic/Queue.cs
-System.Collections.Generic/RBTree.cs
-System.Collections.Generic/SortedDictionary.cs
-System.Collections.Generic/SortedList.cs
-System.Collections.Generic/Stack.cs
-System.Collections.Specialized/BitVector32.cs
-System.Collections.Specialized/CollectionsUtil.cs
-System.Collections.Specialized/HybridDictionary.cs
-System.Collections.Specialized/ListDictionary.cs
-System.Collections.Specialized/NameObjectCollectionBase.cs
-System.Collections.Specialized/NameValueCollection.cs
-System.Collections.Specialized/ProcessStringDictionary.cs
-System.Collections.Specialized/StringCollection.cs
-System.Collections.Specialized/StringDictionary.cs
-System.Collections.Specialized/StringEnumerator.cs
-System.ComponentModel.Design.Serialization/InstanceDescriptor.cs
-System.ComponentModel.Design/CommandID.cs
-System.ComponentModel.Design/ComponentChangedEventArgs.cs
-System.ComponentModel.Design/ComponentChangedEventHandler.cs
-System.ComponentModel.Design/ComponentChangingEventArgs.cs
-System.ComponentModel.Design/ComponentChangingEventHandler.cs
-System.ComponentModel.Design/ComponentEventArgs.cs
-System.ComponentModel.Design/ComponentEventHandler.cs
-System.ComponentModel.Design/ComponentRenameEventArgs.cs
-System.ComponentModel.Design/ComponentRenameEventHandler.cs
-System.ComponentModel.Design/DesignerTransaction.cs
-System.ComponentModel.Design/DesignerTransactionCloseEventArgs.cs
-System.ComponentModel.Design/DesignerTransactionCloseEventHandler.cs
-System.ComponentModel.Design/DesignerVerb.cs
-System.ComponentModel.Design/DesignerVerbCollection.cs
-System.ComponentModel.Design/IComponentChangeService.cs
-System.ComponentModel.Design/IDesigner.cs
-System.ComponentModel.Design/IDesignerHost.cs
-System.ComponentModel.Design/IReferenceService.cs
-System.ComponentModel.Design/IRootDesigner.cs
-System.ComponentModel.Design/IServiceContainer.cs
-System.ComponentModel.Design/ITypeDescriptorFilterService.cs
-System.ComponentModel.Design/ITypeResolutionService.cs
-System.ComponentModel.Design/MenuCommand.cs
-System.ComponentModel.Design/ServiceCreatorCallback.cs
-System.ComponentModel.Design/StandardCommands.cs
-System.ComponentModel.Design/ViewTechnology.cs
-System.ComponentModel/ArrayConverter.cs
-System.ComponentModel/AsyncCompletedEventArgs.cs
-System.ComponentModel/AsyncCompletedEventHandler.cs
-System.ComponentModel/AsyncOperation.cs
-System.ComponentModel/AsyncOperationManager.cs
-System.ComponentModel/AttributeCollection.cs
-System.ComponentModel/BackgroundWorker.cs
-System.ComponentModel/BaseNumberConverter.cs
-System.ComponentModel/BindableSupport.cs
-System.ComponentModel/BooleanConverter.cs
-System.ComponentModel/BrowsableAttribute.cs
-System.ComponentModel/ByteConverter.cs
-System.ComponentModel/CancelEventArgs.cs
-System.ComponentModel/CategoryAttribute.cs
-System.ComponentModel/CharConverter.cs
-System.ComponentModel/CollectionChangeAction.cs
-System.ComponentModel/CollectionChangeEventArgs.cs
-System.ComponentModel/CollectionChangeEventHandler.cs
-System.ComponentModel/CollectionConverter.cs
-System.ComponentModel/Component.cs
-System.ComponentModel/ComponentCollection.cs
-System.ComponentModel/ComponentConverter.cs
-System.ComponentModel/CultureInfoConverter.cs
-System.ComponentModel/CustomTypeDescriptor.cs
-System.ComponentModel/DateTimeConverter.cs
-System.ComponentModel/DecimalConverter.cs
-System.ComponentModel/DefaultEventAttribute.cs
-System.ComponentModel/DefaultPropertyAttribute.cs
-System.ComponentModel/DefaultValueAttribute.cs
-System.ComponentModel/DescriptionAttribute.cs
-System.ComponentModel/DesignOnlyAttribute.cs
-System.ComponentModel/DesignTimeVisibleAttribute.cs
-System.ComponentModel/DesignerAttribute.cs
-System.ComponentModel/DesignerCategoryAttribute.cs
-System.ComponentModel/DesignerSerializationVisibility.cs
-System.ComponentModel/DesignerSerializationVisibilityAttribute.cs
-System.ComponentModel/DisplayNameAttribute.cs
-System.ComponentModel/DoWorkEventArgs.cs
-System.ComponentModel/DoWorkEventHandler.cs
-System.ComponentModel/DoubleConverter.cs
-System.ComponentModel/EditorAttribute.cs
-System.ComponentModel/EditorBrowsableAttribute.cs
-System.ComponentModel/EditorBrowsableState.cs
-System.ComponentModel/EnumConverter.cs
-System.ComponentModel/EventDescriptor.cs
-System.ComponentModel/EventDescriptorCollection.cs
-System.ComponentModel/EventHandlerList.cs
-System.ComponentModel/ExpandableObjectConverter.cs
-System.ComponentModel/GuidConverter.cs
-System.ComponentModel/IBindingList.cs
-System.ComponentModel/IBindingListView.cs
-System.ComponentModel/IChangeTracking.cs
-System.ComponentModel/IComNativeDescriptorHandler.cs
-System.ComponentModel/IComponent.cs
-System.ComponentModel/IComponent.cs
-System.ComponentModel/IContainer.cs
-System.ComponentModel/ICustomTypeDescriptor.cs
-System.ComponentModel/IDataErrorInfo.cs
-System.ComponentModel/IDataErrorInfo.cs
-System.ComponentModel/IEditableObject.cs
-System.ComponentModel/IListSource.cs
-System.ComponentModel/INotifyPropertyChanged.cs
-System.ComponentModel/IRevertibleChangeTracking.cs
-System.ComponentModel/ISite.cs
-System.ComponentModel/ISupportInitialize.cs
-System.ComponentModel/ISupportInitializeNotification.cs
-System.ComponentModel/ISynchronizeInvoke.cs
-System.ComponentModel/ITypeDescriptorContext.cs
-System.ComponentModel/ITypedList.cs
-System.ComponentModel/Int16Converter.cs
-System.ComponentModel/Int32Converter.cs
-System.ComponentModel/Int64Converter.cs
-System.ComponentModel/InvalidEnumArgumentException.cs
-System.ComponentModel/InvalidEnumArgumentException.cs
-System.ComponentModel/ListBindableAttribute.cs
-System.ComponentModel/ListChangedEventArgs.cs
-System.ComponentModel/ListChangedEventHandler.cs
-System.ComponentModel/ListChangedType.cs
-System.ComponentModel/ListSortDescription.cs
-System.ComponentModel/ListSortDescriptionCollection.cs
-System.ComponentModel/ListSortDirection.cs
-System.ComponentModel/ListSortDirection.cs
-System.ComponentModel/LocalizableAttribute.cs
-System.ComponentModel/MarshalByValueComponent.cs
-System.ComponentModel/MemberDescriptor.cs
-System.ComponentModel/MergablePropertyAttribute.cs
-System.ComponentModel/MultilineStringConverter.cs
-System.ComponentModel/NotifyParentPropertyAttribute.cs
-System.ComponentModel/NullableConverter.cs
-System.ComponentModel/PasswordPropertyTextAttribute.cs
-System.ComponentModel/ProgressChangedEventArgs.cs
-System.ComponentModel/ProgressChangedEventHandler.cs
-System.ComponentModel/PropertyChangedEventArgs.cs
-System.ComponentModel/PropertyChangedEventHandler.cs
-System.ComponentModel/PropertyDescriptor.cs
-System.ComponentModel/PropertyDescriptor.cs
-System.ComponentModel/PropertyDescriptorCollection.cs
-System.ComponentModel/ReadOnlyAttribute.cs
-System.ComponentModel/ReadOnlyAttribute.cs
-System.ComponentModel/RecommendedAsConfigurableAttribute.cs
-System.ComponentModel/ReferenceConverter.cs
-System.ComponentModel/ReferenceConverter.cs
-System.ComponentModel/ReflectionEventDescriptor.cs
-System.ComponentModel/ReflectionPropertyDescriptor.cs
-System.ComponentModel/RefreshEventArgs.cs
-System.ComponentModel/RefreshEventHandler.cs
-System.ComponentModel/RefreshProperties.cs
-System.ComponentModel/RefreshPropertiesAttribute.cs
-System.ComponentModel/RunWorkerCompletedEventArgs.cs
-System.ComponentModel/RunWorkerCompletedEventHandler.cs
-System.ComponentModel/SByteConverter.cs
-System.ComponentModel/SingleConverter.cs
-System.ComponentModel/StringConverter.cs
-System.ComponentModel/TimeSpanConverter.cs
-System.ComponentModel/ToolboxItemAttribute.cs
-System.ComponentModel/ToolboxItemFilterAttribute.cs
-System.ComponentModel/ToolboxItemFilterType.cs
-System.ComponentModel/TypeConverter.cs
-System.ComponentModel/TypeConverterAttribute.cs
-System.ComponentModel/TypeConverter_2_1.cs
-System.ComponentModel/TypeDescriptionProvider.cs
-System.ComponentModel/TypeDescriptor.cs
-System.ComponentModel/TypeListConverter.cs
-System.ComponentModel/UInt16Converter.cs
-System.ComponentModel/UInt32Converter.cs
-System.ComponentModel/UInt64Converter.cs
-System.ComponentModel/WeakObjectWrapper.cs
-System.ComponentModel/WeakObjectWrapperComparer.cs
-System.ComponentModel/Win32Exception.cs
-System.Diagnostics/DataReceivedEventArgs.cs
-System.Diagnostics/DataReceivedEventHandler.cs
-System.Diagnostics/Debug_2_1.cs
-System.Diagnostics/FileVersionInfo.cs
-System.Diagnostics/MonitoringDescriptionAttribute.cs
-System.Diagnostics/Process.cs
-System.Diagnostics/ProcessModule.cs
-System.Diagnostics/ProcessModuleCollection.cs
-System.Diagnostics/ProcessPriorityClass.cs
-System.Diagnostics/ProcessStartInfo.cs
-System.Diagnostics/ProcessThread.cs
-System.Diagnostics/ProcessThreadCollection.cs
-System.Diagnostics/ProcessWindowStyle.cs
-System.Diagnostics/Stopwatch.cs
-System.Diagnostics/ThreadPriorityLevel.cs
-System.Diagnostics/ThreadState.cs
-System.Diagnostics/ThreadWaitReason.cs
-System.IO.Compression/CompressionMode.cs
-System.IO.Compression/DeflateStream.cs
-System.IO.Compression/GZipStream.cs
-System.IO/MonoIO.cs
-System.IO/MonoIOError.cs
-System.IO/MonoSyncFileStream.cs
-System.Net.Cache/HttpCacheAgeControl.cs
-System.Net.Cache/HttpRequestCacheLevel.cs
-System.Net.Cache/HttpRequestCachePolicy.cs
-System.Net.Cache/RequestCacheLevel.cs
-System.Net.Cache/RequestCachePolicy.cs
-System.Net.Mail/AlternateView.cs
-System.Net.Mail/AlternateViewCollection.cs
-System.Net.Mail/Attachment.cs
-System.Net.Mail/AttachmentBase.cs
-System.Net.Mail/AttachmentCollection.cs
-System.Net.Mail/DeliveryNotificationOptions.cs
-System.Net.Mail/LinkedResource.cs
-System.Net.Mail/LinkedResourceCollection.cs
-System.Net.Mail/MailAddress.cs
-System.Net.Mail/MailAddressCollection.cs
-System.Net.Mail/MailMessage.cs
-System.Net.Mail/MailPriority.cs
-System.Net.Mail/SendCompletedEventHandler.cs
-System.Net.Mail/SmtpAccess.cs
-System.Net.Mail/SmtpClient.cs
-System.Net.Mail/SmtpDeliveryMethod.cs
-System.Net.Mail/SmtpException.cs
-System.Net.Mail/SmtpFailedRecipientException.cs
-System.Net.Mail/SmtpFailedRecipientsException.cs
-System.Net.Mail/SmtpStatusCode.cs
-System.Net.Mime/ContentDisposition.cs
-System.Net.Mime/ContentType.cs
-System.Net.Mime/DispositionTypeNames.cs
-System.Net.Mime/MediaTypeNames.cs
-System.Net.Mime/TransferEncoding.cs
-System.Net.NetworkInformation/DuplicateAddressDetectionState.cs
-System.Net.NetworkInformation/GatewayIPAddressInformation.cs
-System.Net.NetworkInformation/GatewayIPAddressInformationCollection.cs
-System.Net.NetworkInformation/IPAddressCollection.cs
-System.Net.NetworkInformation/IPAddressInformation.cs
-System.Net.NetworkInformation/IPAddressInformationCollection.cs
-System.Net.NetworkInformation/IPGlobalProperties.cs
-System.Net.NetworkInformation/IPGlobalStatistics.cs
-System.Net.NetworkInformation/IPInterfaceProperties.cs
-System.Net.NetworkInformation/IPStatus.cs
-System.Net.NetworkInformation/IPv4InterfaceProperties.cs
-System.Net.NetworkInformation/IPv4InterfaceStatistics.cs
-System.Net.NetworkInformation/IPv6InterfaceProperties.cs
-System.Net.NetworkInformation/IcmpV4Statistics.cs
-System.Net.NetworkInformation/IcmpV6Statistics.cs
-System.Net.NetworkInformation/LinuxNetworkInterfaceMarshal.cs
-System.Net.NetworkInformation/MacOsNetworkInterfaceMarshal.cs
-System.Net.NetworkInformation/MulticastIPAddressInformation.cs
-System.Net.NetworkInformation/MulticastIPAddressInformationCollection.cs
-System.Net.NetworkInformation/NetBiosNodeType.cs
-System.Net.NetworkInformation/NetworkAddressChangedEventHandler.cs
-System.Net.NetworkInformation/NetworkAvailabilityChangedEventHandler.cs
-System.Net.NetworkInformation/NetworkAvailabilityEventArgs.cs
-System.Net.NetworkInformation/NetworkChange.cs
-System.Net.NetworkInformation/NetworkInformationAccess.cs
-System.Net.NetworkInformation/NetworkInformationException.cs
-System.Net.NetworkInformation/NetworkInterface.cs
-System.Net.NetworkInformation/NetworkInterfaceComponent.cs
-System.Net.NetworkInformation/NetworkInterfaceType.cs
-System.Net.NetworkInformation/OperationalStatus.cs
-System.Net.NetworkInformation/PhysicalAddress.cs
-System.Net.NetworkInformation/Ping.cs
-System.Net.NetworkInformation/PingCompletedEventArgs.cs
-System.Net.NetworkInformation/PingCompletedEventHandler.cs
-System.Net.NetworkInformation/PingException.cs
-System.Net.NetworkInformation/PingOptions.cs
-System.Net.NetworkInformation/PingReply.cs
-System.Net.NetworkInformation/PrefixOrigin.cs
-System.Net.NetworkInformation/SuffixOrigin.cs
-System.Net.NetworkInformation/TcpConnectionInformation.cs
-System.Net.NetworkInformation/TcpState.cs
-System.Net.NetworkInformation/TcpStatistics.cs
-System.Net.NetworkInformation/UdpStatistics.cs
-System.Net.NetworkInformation/UnicastIPAddressInformation.cs
-System.Net.NetworkInformation/UnicastIPAddressInformationCollection.cs
-System.Net.NetworkInformation/Win32NetworkInterfaceMarshal.cs
-System.Net.Security/AuthenticatedStream.cs
-System.Net.Security/AuthenticationLevel.cs
-System.Net.Security/LocalCertificateSelectionCallback.cs
-System.Net.Security/NegotiateStream.cs
-System.Net.Security/ProtectionLevel.cs
-System.Net.Security/RemoteCertificateValidationCallback.cs
-System.Net.Security/SslPolicyErrors.cs
-System.Net.Security/SslStream.cs
-System.Net.Sockets/AddressFamily.cs
-System.Net.Sockets/AddressFamily.cs
-System.Net.Sockets/IOControlCode.cs
-System.Net.Sockets/IPPacketInformation.cs
-System.Net.Sockets/IPv6MulticastOption.cs
-System.Net.Sockets/LingerOption.cs
-System.Net.Sockets/MulticastOption.cs
-System.Net.Sockets/NetworkStream.cs
-System.Net.Sockets/ProtocolFamily.cs
-System.Net.Sockets/ProtocolType.cs
-System.Net.Sockets/SelectMode.cs
-System.Net.Sockets/SendPacketsElement.cs
-System.Net.Sockets/Socket.cs
-System.Net.Sockets/SocketAsyncEventArgs.cs
-System.Net.Sockets/SocketAsyncOperation.cs
-System.Net.Sockets/SocketError.cs
-System.Net.Sockets/SocketException.cs
-System.Net.Sockets/SocketFlags.cs
-System.Net.Sockets/SocketInformation.cs
-System.Net.Sockets/SocketInformationOptions.cs
-System.Net.Sockets/SocketOptionLevel.cs
-System.Net.Sockets/SocketOptionName.cs
-System.Net.Sockets/SocketShutdown.cs
-System.Net.Sockets/SocketType.cs
-System.Net.Sockets/Socket_2_1.cs
-System.Net.Sockets/TcpClient.cs
-System.Net.Sockets/TcpListener.cs
-System.Net.Sockets/TransmitFileOptions.cs
-System.Net.Sockets/UdpClient.cs
-System.Net/AuthenticationManager.cs
-System.Net/AuthenticationSchemeSelector.cs
-System.Net/AuthenticationSchemes.cs
-System.Net/Authorization.cs
-System.Net/BasicClient.cs
-System.Net/BindIPEndPoint.cs
-System.Net/ChunkStream.cs
-System.Net/ChunkedInputStream.cs
-System.Net/ConnectionModes.cs
-System.Net/Cookie.cs
-System.Net/CookieCollection.cs
-System.Net/CookieContainer.cs
-System.Net/CookieException.cs
-System.Net/CredentialCache.cs
-System.Net/DecompressionMethods.cs
-System.Net/DefaultCertificatePolicy.cs
-System.Net/DigestClient.cs
-System.Net/Dns.cs
-System.Net/DownloadDataCompletedEventArgs.cs
-System.Net/DownloadDataCompletedEventHandler.cs
-System.Net/DownloadProgressChangedEventArgs.cs
-System.Net/DownloadProgressChangedEventHandler.cs
-System.Net/DownloadStringCompletedEventArgs.cs
-System.Net/DownloadStringCompletedEventHandler.cs
-System.Net/EndPoint.cs
-System.Net/EndPointListener.cs
-System.Net/EndPointManager.cs
-System.Net/FileWebRequest.cs
-System.Net/FileWebRequestCreator.cs
-System.Net/FileWebResponse.cs
-System.Net/FtpAsyncResult.cs
-System.Net/FtpDataStream.cs
-System.Net/FtpRequestCreator.cs
-System.Net/FtpStatus.cs
-System.Net/FtpStatusCode.cs
-System.Net/FtpWebRequest.cs
-System.Net/FtpWebResponse.cs
-System.Net/GlobalProxySelection.cs
-System.Net/HttpConnection.cs
-System.Net/HttpContinueDelegate.cs
-System.Net/HttpListener.cs
-System.Net/HttpListenerBasicIdentity.cs
-System.Net/HttpListenerContext.cs
-System.Net/HttpListenerException.cs
-System.Net/HttpListenerPrefixCollection.cs
-System.Net/HttpListenerRequest.cs
-System.Net/HttpListenerResponse.cs
-System.Net/HttpRequestCreator.cs
-System.Net/HttpRequestHeader.cs
-System.Net/HttpResponseHeader.cs
-System.Net/HttpStatusCode.cs
-System.Net/HttpStreamAsyncResult.cs
-System.Net/HttpUtility.cs
-System.Net/HttpVersion.cs
-System.Net/HttpWebRequest.cs
-System.Net/HttpWebResponse.cs
-System.Net/IAuthenticationModule.cs
-System.Net/ICertificatePolicy.cs
-System.Net/ICredentialLookup.cs
-System.Net/ICredentialPolicy.cs
-System.Net/ICredentialsByHost.cs
-System.Net/IPAddress.cs
-System.Net/IPAddress.cs
-System.Net/IPEndPoint.cs
-System.Net/IPHostEntry.cs
-System.Net/IPv6Address.cs
-System.Net/IPv6Address.cs
-System.Net/IWebProxy.cs
-System.Net/IWebProxyScript.cs
-System.Net/IWebRequestCreate.cs
-System.Net/ListenerAsyncResult.cs
-System.Net/ListenerPrefix.cs
-System.Net/MonoHttpDate.cs
-System.Net/NetConfig.cs
-System.Net/NetworkAccess.cs
-System.Net/NetworkCredential.cs
-System.Net/NtlmClient.cs
-System.Net/OpenReadCompletedEventArgs.cs
-System.Net/OpenReadCompletedEventHandler.cs
-System.Net/OpenWriteCompletedEventArgs.cs
-System.Net/OpenWriteCompletedEventHandler.cs
-System.Net/ProtocolViolationException.cs
-System.Net/RequestStream.cs
-System.Net/ResponseStream.cs
-System.Net/SecurityProtocolType.cs
-System.Net/ServicePoint.cs
-System.Net/ServicePointManager.cs
-System.Net/SocketAddress.cs
-System.Net/TransportType.cs
-System.Net/UploadDataCompletedEventArgs.cs
-System.Net/UploadDataCompletedEventHandler.cs
-System.Net/UploadFileCompletedEventArgs.cs
-System.Net/UploadFileCompletedEventHandler.cs
-System.Net/UploadProgressChangedEventArgs.cs
-System.Net/UploadProgressChangedEventHandler.cs
-System.Net/UploadStringCompletedEventArgs.cs
-System.Net/UploadStringCompletedEventHandler.cs
-System.Net/UploadValuesCompletedEventArgs.cs
-System.Net/UploadValuesCompletedEventHandler.cs
-System.Net/WebAsyncResult.cs
-System.Net/WebClient.cs
-System.Net/WebConnection.cs
-System.Net/WebConnectionData.cs
-System.Net/WebConnectionGroup.cs
-System.Net/WebConnectionStream.cs
-System.Net/WebException.cs
-System.Net/WebExceptionStatus.cs
-System.Net/WebHeaderCollection.cs
-System.Net/WebPermission.cs
-System.Net/WebPermissionAttribute.cs
-System.Net/WebProxy.cs
-System.Net/WebRequest.cs
-System.Net/WebRequestMethods.cs
-System.Net/WebResponse.cs
-System.Security.AccessControl/SemaphoreAccessRule.cs
-System.Security.AccessControl/SemaphoreAuditRule.cs
-System.Security.AccessControl/SemaphoreRights.cs
-System.Security.AccessControl/SemaphoreSecurity.cs
-System.Security.Authentication/AuthenticationException.cs
-System.Security.Authentication/CipherAlgorithmType.cs
-System.Security.Authentication/ExchangeAlgorithmType.cs
-System.Security.Authentication/HashAlgorithmType.cs
-System.Security.Authentication/InvalidCredentialException.cs
-System.Security.Authentication/SslProtocols.cs
-System.Security.Cryptography.X509Certificates/OSX509Certificates.cs
-System.Security.Cryptography.X509Certificates/OpenFlags.cs
-System.Security.Cryptography.X509Certificates/PublicKey.cs
-System.Security.Cryptography.X509Certificates/StoreLocation.cs
-System.Security.Cryptography.X509Certificates/StoreName.cs
-System.Security.Cryptography.X509Certificates/X500DistinguishedName.cs
-System.Security.Cryptography.X509Certificates/X500DistinguishedNameFlags.cs
-System.Security.Cryptography.X509Certificates/X509BasicConstraintsExtension.cs
-System.Security.Cryptography.X509Certificates/X509Certificate2.cs
-System.Security.Cryptography.X509Certificates/X509Certificate2Collection.cs
-System.Security.Cryptography.X509Certificates/X509Certificate2Enumerator.cs
-System.Security.Cryptography.X509Certificates/X509CertificateCollection.cs
-System.Security.Cryptography.X509Certificates/X509Chain.cs
-System.Security.Cryptography.X509Certificates/X509ChainElement.cs
-System.Security.Cryptography.X509Certificates/X509ChainElementCollection.cs
-System.Security.Cryptography.X509Certificates/X509ChainElementEnumerator.cs
-System.Security.Cryptography.X509Certificates/X509ChainPolicy.cs
-System.Security.Cryptography.X509Certificates/X509ChainStatus.cs
-System.Security.Cryptography.X509Certificates/X509ChainStatusFlags.cs
-System.Security.Cryptography.X509Certificates/X509EnhancedKeyUsageExtension.cs
-System.Security.Cryptography.X509Certificates/X509Extension.cs
-System.Security.Cryptography.X509Certificates/X509ExtensionCollection.cs
-System.Security.Cryptography.X509Certificates/X509ExtensionEnumerator.cs
-System.Security.Cryptography.X509Certificates/X509FindType.cs
-System.Security.Cryptography.X509Certificates/X509IncludeOption.cs
-System.Security.Cryptography.X509Certificates/X509KeyUsageExtension.cs
-System.Security.Cryptography.X509Certificates/X509KeyUsageFlags.cs
-System.Security.Cryptography.X509Certificates/X509NameType.cs
-System.Security.Cryptography.X509Certificates/X509RevocationFlag.cs
-System.Security.Cryptography.X509Certificates/X509RevocationMode.cs
-System.Security.Cryptography.X509Certificates/X509Store.cs
-System.Security.Cryptography.X509Certificates/X509SubjectKeyIdentifierExtension.cs
-System.Security.Cryptography.X509Certificates/X509SubjectKeyIdentifierHashAlgorithm.cs
-System.Security.Cryptography.X509Certificates/X509VerificationFlags.cs
-System.Security.Cryptography/AsnEncodedData.cs
-System.Security.Cryptography/AsnEncodedDataCollection.cs
-System.Security.Cryptography/AsnEncodedDataEnumerator.cs
-System.Security.Cryptography/Oid.cs
-System.Security.Cryptography/OidCollection.cs
-System.Security.Cryptography/OidEnumerator.cs
-System.Text.RegularExpressions/BaseMachine.cs
-System.Text.RegularExpressions/Capture.cs
-System.Text.RegularExpressions/CaptureCollection.cs
-System.Text.RegularExpressions/Group.cs
-System.Text.RegularExpressions/GroupCollection.cs
-System.Text.RegularExpressions/Match.cs
-System.Text.RegularExpressions/MatchCollection.cs
-System.Text.RegularExpressions/MatchEvaluator.cs
-System.Text.RegularExpressions/Regex.cs
-System.Text.RegularExpressions/RegexCompilationInfo.cs
-System.Text.RegularExpressions/RegexOptions.cs
-System.Text.RegularExpressions/RxInterpreter.cs
-System.Text.RegularExpressions/RxOp.cs
-System.Text.RegularExpressions/arch.cs
-System.Text.RegularExpressions/cache.cs
-System.Text.RegularExpressions/category.cs
-System.Text.RegularExpressions/compiler.cs
-System.Text.RegularExpressions/debug.cs
-System.Text.RegularExpressions/interpreter.cs
-System.Text.RegularExpressions/interval.cs
-System.Text.RegularExpressions/parser.cs
-System.Text.RegularExpressions/quicksearch.cs
-System.Text.RegularExpressions/replace.cs
-System.Text.RegularExpressions/syntax.cs
-System.Threading/Semaphore.cs
-System.Threading/SemaphoreFullException.cs
-System.Threading/ThreadExceptionEventArgs.cs
-System.Threading/ThreadExceptionEventHandler.cs
-System.Timers/ElapsedEventArgs.cs
-System.Timers/ElapsedEventHandler.cs
-System.Timers/Timer.cs
-System.Timers/TimersDescriptionAttribute.cs
-System/DefaultUriParser.cs
-System/FileStyleUriParser.cs
-System/FtpStyleUriParser.cs
-System/GenericUriParser.cs
-System/GenericUriParserOptions.cs
-System/HttpStyleUriParser.cs
-System/NetPipeStyleUriParser.cs
-System/NetTcpStyleUriParser.cs
-System/NewsStyleUriParser.cs
-System/SRDescriptionAttribute.cs
-System/Uri.cs
-System/UriBuilder.cs
-System/UriComponents.cs
-System/UriFormat.cs
-System/UriFormatException.cs
-System/UriHostNameType.cs
-System/UriIdnScope.cs
-System/UriKind.cs
-System/UriParser.cs
-System/UriPartial.cs
-System/UriTypeConverter.cs
diff --git a/mcs/class/System/monotouch_bootstrap_System.dll.sources b/mcs/class/System/monotouch_bootstrap_System.dll.sources
deleted file mode 100644
index 7c0bd59..0000000
--- a/mcs/class/System/monotouch_bootstrap_System.dll.sources
+++ /dev/null
@@ -1 +0,0 @@
-#include monotouch_System.dll.sources
diff --git a/mcs/class/System/moonlight_bootstrap_System.dll.sources b/mcs/class/System/moonlight_bootstrap_System.dll.sources
deleted file mode 100644
index f44e2a0..0000000
--- a/mcs/class/System/moonlight_bootstrap_System.dll.sources
+++ /dev/null
@@ -1,10 +0,0 @@
-../../build/common/Consts.cs
-../../build/common/Locale.cs
-../../build/common/MonoTODOAttribute.cs
-../corlib/System.Collections/CollectionDebuggerView.cs
-../corlib/System.Collections.Generic/CollectionDebuggerView.cs
-
-#include moonlight_shared_System.dll.sources
-
-System.Security.Cryptography.X509Certificates/X509_2_1_bootstrap.cs
-
diff --git a/mcs/class/System/moonlight_shared_System.dll.sources b/mcs/class/System/moonlight_shared_System.dll.sources
index 641f39e..8fa8f0e 100644
--- a/mcs/class/System/moonlight_shared_System.dll.sources
+++ b/mcs/class/System/moonlight_shared_System.dll.sources
@@ -71,6 +71,7 @@ System.ComponentModel/TypeConverterAttribute.cs
 System.ComponentModel/TypeConverter_2_1.cs
 System/DefaultUriParser.cs
 System.Diagnostics/Debug_2_1.cs
+System.Diagnostics/Stopwatch.cs
 System/FileStyleUriParser.cs
 System/FtpStyleUriParser.cs
 System/GenericUriParser.cs
@@ -117,6 +118,7 @@ System.Net/CookieCollection.cs
 System.Net/CookieContainer.cs
 System.Net/Cookie.cs
 System.Net/CookieException.cs
+System.Net/CookieParser.cs
 System.Net/CredentialCache.cs
 System.Net/DecompressionMethods.cs
 System.Net/DefaultCertificatePolicy.cs
diff --git a/mcs/class/SystemWebTestShim/ChangeLog b/mcs/class/SystemWebTestShim/ChangeLog
index b449f7b..637a886 100644
--- a/mcs/class/SystemWebTestShim/ChangeLog
+++ b/mcs/class/SystemWebTestShim/ChangeLog
@@ -1,3 +1,7 @@
+2010-12-29  Marek Safar  <marek.safar at gmail.com>
+
+	Add few more missing references
+
 2009-07-07  Raja R Harinath  <harinath at hurrynot.org>
 
 	* SystemWebTestShim.dll.sources: Add UriUtils.cs.
diff --git a/mcs/class/SystemWebTestShim/ChangeLog b/mcs/class/SystemWebTestShim/ChangeLog.old
similarity index 100%
copy from mcs/class/SystemWebTestShim/ChangeLog
copy to mcs/class/SystemWebTestShim/ChangeLog.old
diff --git a/mcs/class/SystemWebTestShim/Makefile b/mcs/class/SystemWebTestShim/Makefile
index 823b6e0..6b604f7 100644
--- a/mcs/class/SystemWebTestShim/Makefile
+++ b/mcs/class/SystemWebTestShim/Makefile
@@ -3,7 +3,7 @@ include ../../build/rules.make
 
 LIBRARY = SystemWebTestShim.dll
 
-LIB_MCS_FLAGS = -r:System.Web.dll
+LIB_MCS_FLAGS = -r:System.Web.dll -r:System.dll
 
 NO_INSTALL = yes
 NO_SIGN_ASSEMBLY = yes
diff --git a/mcs/class/WindowsBase/ChangeLog b/mcs/class/WindowsBase/ChangeLog
index 2cd03d9..6959562 100644
--- a/mcs/class/WindowsBase/ChangeLog
+++ b/mcs/class/WindowsBase/ChangeLog
@@ -1,3 +1,7 @@
+2010-11-06  Marek Safar  <marek.safar at gmail.com>
+
+	Add missing default ctor call
+
 2010-02-19  Alan McGovern  <amcgovern at novell.com>
 
 	* System.IO.Packaging/PackUriHelper.cs: Commit a fix for #570648 so
diff --git a/mcs/class/WindowsBase/ChangeLog b/mcs/class/WindowsBase/ChangeLog.old
similarity index 100%
copy from mcs/class/WindowsBase/ChangeLog
copy to mcs/class/WindowsBase/ChangeLog.old
diff --git a/mcs/class/WindowsBase/System.Windows/DependencyPropertyChangedEventArgs.cs b/mcs/class/WindowsBase/System.Windows/DependencyPropertyChangedEventArgs.cs
index ad8183d..782e881 100644
--- a/mcs/class/WindowsBase/System.Windows/DependencyPropertyChangedEventArgs.cs
+++ b/mcs/class/WindowsBase/System.Windows/DependencyPropertyChangedEventArgs.cs
@@ -30,6 +30,7 @@ namespace System.Windows {
 	public struct DependencyPropertyChangedEventArgs {
 
 		public DependencyPropertyChangedEventArgs (DependencyProperty property, object oldValue, object newValue)
+			: this ()
 		{
 			this.Property = property;
 			this.OldValue = oldValue;
diff --git a/mcs/class/aot-compiler/Makefile b/mcs/class/aot-compiler/Makefile
index 1198ab8..a033965 100644
--- a/mcs/class/aot-compiler/Makefile
+++ b/mcs/class/aot-compiler/Makefile
@@ -10,12 +10,7 @@ include ../../build/rules.make
 
 the_libdir = $(topdir)/class/lib/$(PROFILE)/
 
-ifeq (net_2_0, $(PROFILE))
-mcs_exe = $(the_libdir)/gmcs.exe
-else ifeq (net_4_0, $(PROFILE))
-mcs_exe = $(the_libdir)/dmcs.exe
-endif
-
+mcs_exe = $(the_libdir)/mcs.exe
 mcs_aot_image = $(mcs_exe)$(PLATFORM_AOT_SUFFIX)
 
 mscorlib_dll = $(the_libdir)/mscorlib.dll
@@ -24,26 +19,22 @@ mscorlib_aot_image = $(mscorlib_dll)$(PLATFORM_AOT_SUFFIX)
 PROGRAM_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)
 LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)
 
+ifndef SKIP_AOT
+
 ifdef PLATFORM_AOT_SUFFIX
 Q_AOT=$(if $(V),, at echo "AOT [$(PROFILE)] $(notdir $(@))";)
 $(mcs_aot_image): $(mcs_exe)
-	$(Q_AOT) MONO_PATH='$(the_libdir)' > $(PROFILE)_aot.log 2>&1 $(RUNTIME) --aot=bind-to-runtime-version --debug $(mcs_exe)
+	$(Q_AOT) MONO_PATH='$(the_libdir)' > $(PROFILE)_aot.log 2>&1 $(RUNTIME) --aot=bind-to-runtime-version --debug $(mcs_exe) || cat $(PROFILE)_aot.log || (cat $(PROFILE)_aot.log; exit 1)
 
 $(mscorlib_aot_image): $(mscorlib_dll)
-	$(Q_AOT) MONO_PATH='$(the_libdir)' > $(PROFILE)_aot.log 2>&1 $(RUNTIME) --aot=bind-to-runtime-version --debug $(mscorlib_dll)
+	$(Q_AOT) MONO_PATH='$(the_libdir)' > $(PROFILE)_aot.log 2>&1 $(RUNTIME) --aot=bind-to-runtime-version --debug $(mscorlib_dll) || (cat $(PROFILE)_aot.log; exit 1)
 
 ifdef ENABLE_AOT
 
-ifeq (net_2_0, $(PROFILE))
 all-local: $(mscorlib_aot_image) $(mcs_aot_image)
-endif
-
-ifeq (net_4_0, $(PROFILE))
-all-local: $(mscorlib_aot_image) $(mcs_aot_image)
-endif
 
 clean-local:
-	-rm -f $(mscorlib_aot_image) $(mcs_aot_image)
+	-rm -f $(mscorlib_aot_image) $(mcs_aot_image) $(PROFILE)_aot.log
 
 install-local:
 	$(MKINSTALLDIRS) $(DESTDIR)$(LIBRARY_INSTALL_DIR)
@@ -54,4 +45,6 @@ endif
 
 endif
 
+endif
+
 dist-local: dist-default
diff --git a/mcs/class/corlib/Assembly/AssemblyInfo.cs b/mcs/class/corlib/Assembly/AssemblyInfo.cs
index 1cf9a95..3ee537e 100644
--- a/mcs/class/corlib/Assembly/AssemblyInfo.cs
+++ b/mcs/class/corlib/Assembly/AssemblyInfo.cs
@@ -41,15 +41,15 @@ using System.Runtime.InteropServices;
 
 // General Information about the mscorlib assembly
 
-	[assembly: AssemblyTitle ("mscorlib.dll")]
-	[assembly: AssemblyDescription ("mscorlib.dll")]
-	[assembly: AssemblyDefaultAlias ("mscorlib.dll")]
+[assembly: AssemblyTitle ("mscorlib.dll")]
+[assembly: AssemblyDescription ("mscorlib.dll")]
+[assembly: AssemblyDefaultAlias ("mscorlib.dll")]
 
-	[assembly: AssemblyCompany (Consts.MonoCompany)]
-	[assembly: AssemblyProduct (Consts.MonoProduct)]
-	[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
 
-	[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
 
 [assembly: AssemblyVersion (Consts.FxVersion)]
 [assembly: SatelliteContractVersion (Consts.FxVersion)]
@@ -57,27 +57,23 @@ using System.Runtime.InteropServices;
 [assembly: NeutralResourcesLanguage ("en-US")]
 
 [assembly: CLSCompliant (true)]
-#if !NET_2_1
-[assembly: ComCompatibleVersion (1, 0, 3300, 0)]
-[assembly: AllowPartiallyTrustedCallers]
-#endif
 
-[assembly: SecurityPermission (SecurityAction.RequestMinimum, SkipVerification = true)]
 [assembly: AssemblyDelaySign (true)]
 #if NET_2_1
 	[assembly: AssemblyKeyFile ("../silverlight.pub")]
 #else
 	[assembly: AssemblyKeyFile ("../ecma.pub")]
+	[assembly: ComCompatibleVersion (1, 0, 3300, 0)]
+	[assembly: AllowPartiallyTrustedCallers]
 #endif
 
-	[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
-	[assembly: ComVisible (false)]
-	[assembly: CompilationRelaxations (CompilationRelaxations.NoStringInterning)]
-	[assembly: Debuggable (DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
-	[assembly: TypeLibVersion (2, 0)]
-	[assembly: RuntimeCompatibility (WrapNonExceptionThrows = true)]
-	[assembly: DefaultDependency (LoadHint.Always)]
-	[assembly: StringFreezing]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: ComVisible (false)]
+[assembly: CompilationRelaxations (CompilationRelaxations.NoStringInterning)]
+[assembly: Debuggable (DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
+[assembly: TypeLibVersion (2, 0)]
+[assembly: DefaultDependency (LoadHint.Always)]
+[assembly: StringFreezing]
 
 #if MOONLIGHT
 	[assembly: InternalsVisibleTo ("System, PublicKey=00240000048000009400000006020000002400005253413100040000010001008D56C76F9E8649383049F383C44BE0EC204181822A6C31CF5EB7EF486944D032188EA1D3920763712CCB12D75FB77E9811149E6148E5D32FBAAB37611C1878DDC19E20EF135D0CB2CFF2BFEC3D115810C3D9069638FE4BE215DBF795861920E5AB6F7DB2E2CEEF136AC23D5DD2BF031700AEC232F6C6B1C785B4305C123B37AB")]
diff --git a/mcs/class/corlib/Assembly/ChangeLog b/mcs/class/corlib/Assembly/ChangeLog
index 3eed5bc..ab88c4b 100644
--- a/mcs/class/corlib/Assembly/ChangeLog
+++ b/mcs/class/corlib/Assembly/ChangeLog
@@ -1,3 +1,7 @@
+2010-12-10  Marek Safar  <marek.safar at gmail.com>
+
+	Removed compiler generated attributes
+
 2010-06-18  Rolf Bjarne Kvinge  <RKvinge at novell.com>
 
 	* AssemblyInfo.cs: We need to be friends with System.Core now too.
diff --git a/mcs/class/corlib/Assembly/ChangeLog b/mcs/class/corlib/Assembly/ChangeLog.old
similarity index 100%
copy from mcs/class/corlib/Assembly/ChangeLog
copy to mcs/class/corlib/Assembly/ChangeLog.old
diff --git a/mcs/class/corlib/ChangeLog b/mcs/class/corlib/ChangeLog
index d1e7e37..5ca429a 100644
--- a/mcs/class/corlib/ChangeLog
+++ b/mcs/class/corlib/ChangeLog
@@ -1,3 +1,62 @@
+2011-01-07  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Remove now unused internal classes
+
+2011-01-06  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Protect SpinLock's Enter method against asynchronous exception
+
+2011-01-05  Zoltan Varga  <vargaz at gmail.com>
+
+	Add missing files to dist.
+
+2011-01-03  Miguel de Icaza  <miguel at gnome.org>
+
+	[mscorlib/getfolderpath] Special-case MacOS X.
+
+	The following changes were done to specially support OSX: *
+	MyMusic on OSX is ~/Music * MyPictures on OSX is ~/Pictures *
+	Fonts on OSX is ~/Library/Fonts * Favorites on OSX is
+	~/Library/Favorites * ProgramFiles on OSX is /Applications *
+	InternetCache on OSX is ~/Library/Caches
+
+	The documentation has been updated accordingly.
+
+2010-12-29  Marek Safar  <marek.safar at gmail.com>
+
+	Remove no longer used bootstrap profiles
+
+2010-12-23  Marek Safar  <marek.safar at gmail.com>
+
+	Implement missing v4 attribute types
+
+2010-12-16  Marek Safar  <marek.safar at gmail.com>
+
+	Switch to single mcs compiler for all managed code build
+
+2010-11-03  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Implement Partitioner.Create int and long overloads. Add
+	corresponding unit tests.
+
+2010-09-21  Andrés G. Aragoneses  <knocte at gmail.com>
+
+	[corlib] Prevent BinaryFormatter to throw on missing fields
+
+	This commit includes unit tests that were run in MS.NET > 2.0. The
+	old behaviour of MS.NET 1.1 is still included in the patch as an
+	ONLY_1_1 define, to be backport-friendly to other branches (but
+	can be removed from now on in next commits, as mono master doesn't
+	include this profile anymore). Fixes BNC#324144.
+
+2010-09-09  Jb Evain  <jbevain at gmail.com>
+
+	Fix corlib usage of bootstrap .sources from the normal .sources
+
+2010-09-08  Jb Evain  <jbevain at gmail.com>
+
+	Enable the corlib build for monodroid
+
 2010-08-31  Zoltan Varga  <vargaz at gmail.com>
 
 	AOT mscorlib along with gmcs.
diff --git a/mcs/class/corlib/Documentation/en/System/Environment+SpecialFolder.xml b/mcs/class/corlib/Documentation/en/System/Environment+SpecialFolder.xml
index bf34437..f770524 100644
--- a/mcs/class/corlib/Documentation/en/System/Environment+SpecialFolder.xml
+++ b/mcs/class/corlib/Documentation/en/System/Environment+SpecialFolder.xml
@@ -309,8 +309,8 @@
       </ReturnValue>
       <MemberValue>Favorites</MemberValue>
       <Docs>
-        <summary>The Favorites directory.  Not available non-Windows operating systems.</summary>
-        <remarks>To be added.</remarks>
+        <summary>The Favorites directory.  </summary>
+        <remarks>On Windows, the system favorite directory.   On MacOS X this is ~/Library/Favorites, and is empty for other operating systems.</remarks>
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -328,7 +328,7 @@
         <ReturnType>System.Environment+SpecialFolder</ReturnType>
       </ReturnValue>
       <Docs>
-        <summary>To be added.</summary>
+        <summary>The fonts directory, on MacOS X this is ~/Library/Fonts, on other Unix operating systems it is ~/.fonts/</summary>
       </Docs>
     </Member>
     <Member MemberName="History">
@@ -356,8 +356,8 @@
       </ReturnValue>
       <MemberValue>InternetCache</MemberValue>
       <Docs>
-        <summary>The Internet cache directory.  Not available non-Windows operating systems.</summary>
-        <remarks>To be added.</remarks>
+        <summary>The Internet cache directory.</summary>
+        <remarks>The Internet cache directory on Windows.   On MacOS X this is the ~/Library/Caches directory, and not available on other operating systems.</remarks>
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
@@ -435,7 +435,7 @@
       </ReturnValue>
       <MemberValue>MyMusic</MemberValue>
       <Docs>
-        <summary>The music directory.  On Unix operating systems, this is either XDG_MUSIC_DIR from the environment, XDG_MUSIC_DIR as read from the "user-dirs.dirs" within the SpecialFolder.ApplicationData directory, or as a last resort, the directory named "Music" within the SpecialFolder.Personal directory (usually the home directory).</summary>
+        <summary>The music directory.  On MacOS X this is ~/Music.  On other Unix operating systems, this is either XDG_MUSIC_DIR from the environment, XDG_MUSIC_DIR as read from the "user-dirs.dirs" within the SpecialFolder.ApplicationData directory, or as a last resort, the directory named "Music" within the SpecialFolder.Personal directory (usually the home directory).</summary>
         <remarks>To be added.</remarks>
       </Docs>
       <AssemblyInfo>
@@ -452,7 +452,7 @@
       </ReturnValue>
       <MemberValue>MyPictures</MemberValue>
       <Docs>
-        <summary>The pictures directory.  On Unix operating systems, this is either XDG_PICTURES_DIR from the environment, XDG_PICTURES_DIR as read from the "user-dirs.dirs" within the SpecialFolder.ApplicationData directory, or as a last resort, the directory named "Pictures" within the SpecialFolder.Personal directory (usually the home directory).</summary>
+        <summary>The pictures directory.  On MacOS X this is ~/Pictures.   On other Unix operating systems, this is either XDG_PICTURES_DIR from the environment, XDG_PICTURES_DIR as read from the "user-dirs.dirs" within the SpecialFolder.ApplicationData directory, or as a last resort, the directory named "Pictures" within the SpecialFolder.Personal directory (usually the home directory).</summary>
         <remarks>To be added.</remarks>
       </Docs>
       <AssemblyInfo>
@@ -525,8 +525,8 @@
       </ReturnValue>
       <MemberValue>ProgramFiles</MemberValue>
       <Docs>
-        <summary>The ProgramFiles directory.  Not available non-Windows operating systems.</summary>
-        <remarks>To be added.</remarks>
+        <summary>Where program files are located.  </summary>
+        <remarks>The ProgramFiles directory on Windows, /Application on MacOS X and the empty string for other operating systems.</remarks>
       </Docs>
       <AssemblyInfo>
         <AssemblyVersion>1.0.5000.0</AssemblyVersion>
diff --git a/mcs/class/corlib/Makefile b/mcs/class/corlib/Makefile
index 2958b63..94aacb2 100644
--- a/mcs/class/corlib/Makefile
+++ b/mcs/class/corlib/Makefile
@@ -5,9 +5,13 @@ export __SECURITY_BOOTSTRAP_DB=$(topdir)/class/corlib
 
 LIBRARY = corlib.dll
 LIBRARY_NAME = mscorlib.dll
-LIB_MCS_FLAGS = $(corlib_flags) $(RESOURCE_FILES:%=-resource:%)
+LIB_MCS_FLAGS = $(RESOURCE_FILES:%=-resource:%)
 LIBRARY_USE_INTERMEDIATE_FILE = yes
 
+ifeq (4.0, $(FRAMEWORK_VERSION))
+LIB_MCS_FLAGS += --runtime:v4
+endif
+
 LIBRARY_COMPILE = $(BOOT_COMPILE)
 LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)
 
@@ -20,8 +24,8 @@ RESOURCE_FILES = \
 	resources/collation.cjkKO.bin \
 	resources/collation.cjkKOlv2.bin
 
-corlib_flags = -unsafe -nostdlib
-LOCAL_MCS_FLAGS = -nowarn:612,618 -d:INSIDE_CORLIB -d:LIBC
+LOCAL_MCS_FLAGS = -unsafe -nostdlib -nowarn:612,618 -d:INSIDE_CORLIB -d:LIBC
+DEFAULT_REFERENCES =
 
 # System.IO/DirectoryInfoTest.cs needs Mono.Posix
 TEST_MCS_FLAGS = -debug+ -debug:full -nowarn:168,219,618,672 -unsafe -r:$(topdir)/class/lib/$(PROFILE)/Mono.Posix.dll -define:MONO_DATACONVERTER_STATIC_METHODS
@@ -43,6 +47,7 @@ include $(topdir)/build/library.make
 
 ifdef FIXME_CORLIB_CMP
 # corlib_cmp
+corlib_flags = -unsafe -nostdlib
 cmplib = $(topdir)/class/lib/$(PROFILE)/corlib_cmp.dll
 cmppdb = $(cmplib:.dll=.pdb)
 cmp_response = $(depsdir)/$(PROFILE)_corlib_cmp.dll.response
@@ -72,3 +77,34 @@ $(cmp_makefrag): $(cmp_response)
 
 $(cmp_response) $(cmp_makefrag): Makefile $(depsdir)/.stamp
 endif
+
+vts = VersionTolerantSerialization
+vtsdir = Test/System.Runtime.Serialization.Formatters.Binary/$(vts)
+test-vts:
+	$(MCS) -target:library \
+		$(vtsdir)/$(vts)TestLib/1.0/Address.cs
+	$(MCS) $(test_nunit_ref) \
+		-r:$(vtsdir)/$(vts)TestLib/1.0/Address.dll \
+		$(vtsdir)/BinarySerializationOverVersions.cs
+	cp $(vtsdir)/$(vts)TestLib/1.0/Address.dll $(vtsdir)
+	$(MCS) -target:library \
+		$(vtsdir)/$(vts)TestLib/2.0/Address.cs
+	$(MCS) -target:library \
+		$(vtsdir)/$(vts)TestLib/3.0/Address.cs
+	$(MCS) -target:library \
+		$(vtsdir)/$(vts)TestLib/4.0/Address.cs
+	$(MCS) -target:library \
+		$(vtsdir)/$(vts)TestLib/5.0/Address.cs
+run-test-vts: test-vts
+	$(TEST_RUNTIME) $(RUNTIME_FLAGS) $(TEST_HARNESS) -noshadow \
+		$(vtsdir)/BinarySerializationOverVersions.exe 
+test: test-vts
+run-test: run-test-vts
+
+EXTRA_DISTFILES += \
+	$(vtsdir)/$(vts)TestLib/1.0/Address.cs \
+	$(vtsdir)/$(vts)TestLib/2.0/Address.cs \
+	$(vtsdir)/$(vts)TestLib/3.0/Address.cs \
+	$(vtsdir)/$(vts)TestLib/4.0/Address.cs \
+	$(vtsdir)/$(vts)TestLib/5.0/Address.cs \
+	$(vtsdir)/BinarySerializationOverVersions.cs
\ No newline at end of file
diff --git a/mcs/class/corlib/Microsoft.Win32/ChangeLog b/mcs/class/corlib/Microsoft.Win32/ChangeLog
index 085a3f8..4596076 100644
--- a/mcs/class/corlib/Microsoft.Win32/ChangeLog
+++ b/mcs/class/corlib/Microsoft.Win32/ChangeLog
@@ -1,3 +1,12 @@
+2011-01-06  Zoltan Varga  <vargaz at gmail.com>
+
+	Change some usages of ArrayList to List<T> to avoid calls to the
+	slow ArrayList.ToArray(Type) method.
+
+2010-12-15  Marek Safar  <marek.safar at gmail.com>
+
+	Some .net 4.0 api compatibility fixes
+
 2010-11-11  Marek Habersack  <grendel at twistedcode.net>
 
 	[corlib] Fix for bug #652807. Handle RegistryValueKind.QWord in
diff --git a/mcs/class/corlib/Microsoft.Win32/RegistryValueKind.cs b/mcs/class/corlib/Microsoft.Win32/RegistryValueKind.cs
index ff0c725..e94e1f2 100644
--- a/mcs/class/corlib/Microsoft.Win32/RegistryValueKind.cs
+++ b/mcs/class/corlib/Microsoft.Win32/RegistryValueKind.cs
@@ -41,7 +41,7 @@ namespace Microsoft.Win32
 		MultiString = 7,
 		QWord = 11,
 #if NET_4_0
-		None = 12
+		None = -1
 #endif
 	}
 }
diff --git a/mcs/class/corlib/Microsoft.Win32/UnixRegistryApi.cs b/mcs/class/corlib/Microsoft.Win32/UnixRegistryApi.cs
index c056fa7..245def5 100644
--- a/mcs/class/corlib/Microsoft.Win32/UnixRegistryApi.cs
+++ b/mcs/class/corlib/Microsoft.Win32/UnixRegistryApi.cs
@@ -204,13 +204,13 @@ namespace Microsoft.Win32 {
 					values [name] = Int64.Parse (se.Text);
 					break;
 				case "string-array":
-					ArrayList sa = new ArrayList ();
+					var sa = new List<string> ();
 					if (se.Children != null){
 						foreach (SecurityElement stre in se.Children){
 							sa.Add (stre.Text);
 						}
 					}
-					values [name] = sa.ToArray (typeof (string));
+					values [name] = sa.ToArray ();
 					break;
 				}
 			} catch {
diff --git a/mcs/class/corlib/Microsoft.Win32/Win32RegistryApi.cs b/mcs/class/corlib/Microsoft.Win32/Win32RegistryApi.cs
index 63e507a..a3108ec 100644
--- a/mcs/class/corlib/Microsoft.Win32/Win32RegistryApi.cs
+++ b/mcs/class/corlib/Microsoft.Win32/Win32RegistryApi.cs
@@ -37,6 +37,7 @@
 
 using System;
 using System.Collections;
+using System.Collections.Generic;
 using System.IO;
 using System.Runtime.InteropServices;
 using System.Security;
@@ -542,7 +543,7 @@ namespace Microsoft.Win32
 		{
 			IntPtr handle = GetHandle (rkey);
 			StringBuilder buffer = new StringBuilder (BufferMaxLength);
-			ArrayList keys = new ArrayList ();
+			var keys = new List<string> ();
 				
 			for (int index = 0; true; index ++) {
 				int result = RegEnumKey (handle, index, buffer, buffer.Capacity);
@@ -559,14 +560,14 @@ namespace Microsoft.Win32
 				// should not be here!
 				GenerateException (result);
 			}
-			return (string []) keys.ToArray (typeof(String));
+			return keys.ToArray ();
 		}
 
 
 		public string [] GetValueNames (RegistryKey rkey)
 		{
 			IntPtr handle = GetHandle (rkey);
-			ArrayList values = new ArrayList ();
+			var values = new List<string> ();
 			
 			for (int index = 0; true; index ++)
 			{
@@ -591,7 +592,7 @@ namespace Microsoft.Win32
 				GenerateException (result);
 			}
 
-			return (string []) values.ToArray (typeof(String));
+			return values.ToArray ();
 		}
 
 		/// <summary>
diff --git a/mcs/class/corlib/Mono.Math/BigInteger.cs b/mcs/class/corlib/Mono.Math/BigInteger.cs
index 569200d..0356d0a 100644
--- a/mcs/class/corlib/Mono.Math/BigInteger.cs
+++ b/mcs/class/corlib/Mono.Math/BigInteger.cs
@@ -1562,92 +1562,6 @@ namespace Mono.Math {
 			#endregion
 		}
 
-		internal sealed class Montgomery {
-
-			private Montgomery () 
-			{
-			}
-
-			public static uint Inverse (uint n)
-			{
-				uint y = n, z;
-
-				while ((z = n * y) != 1)
-					y *= 2 - z;
-
-				return (uint)-y;
-			}
-
-			public static BigInteger ToMont (BigInteger n, BigInteger m)
-			{
-				n.Normalize (); m.Normalize ();
-
-				n <<= (int)m.length * 32;
-				n %= m;
-				return n;
-			}
-
-			public static unsafe BigInteger Reduce (BigInteger n, BigInteger m, uint mPrime)
-			{
-				BigInteger A = n;
-				fixed (uint* a = A.data, mm = m.data) {
-					for (uint i = 0; i < m.length; i++) {
-						// The mod here is taken care of by the CPU,
-						// since the multiply will overflow.
-						uint u_i = a [0] * mPrime /* % 2^32 */;
-
-						//
-						// A += u_i * m;
-						// A >>= 32
-						//
-
-						// mP = Position in mod
-						// aSP = the source of bits from a
-						// aDP = destination for bits
-						uint* mP = mm, aSP = a, aDP = a;
-
-						ulong c = (ulong)u_i * ((ulong)*(mP++)) + *(aSP++);
-						c >>= 32;
-						uint j = 1;
-
-						// Multiply and add
-						for (; j < m.length; j++) {
-							c += (ulong)u_i * (ulong)*(mP++) + *(aSP++);
-							*(aDP++) = (uint)c;
-							c >>= 32;
-						}
-
-						// Account for carry
-						// TODO: use a better loop here, we dont need the ulong stuff
-						for (; j < A.length; j++) {
-							c += *(aSP++);
-							*(aDP++) = (uint)c;
-							c >>= 32;
-							if (c == 0) {j++; break;}
-						}
-						// Copy the rest
-						for (; j < A.length; j++) {
-							*(aDP++) = *(aSP++);
-						}
-
-						*(aDP++) = (uint)c;
-					}
-
-					while (A.length > 1 && a [A.length-1] == 0) A.length--;
-
-				}
-				if (A >= m) Kernel.MinusEq (A, m);
-
-				return A;
-			}
-#if _NOT_USED_
-			public static BigInteger Reduce (BigInteger n, BigInteger m)
-			{
-				return Reduce (n, m, Inverse (m.data [0]));
-			}
-#endif
-		}
-
 		/// <summary>
 		/// Low level functions for the BigInteger
 		/// </summary>
diff --git a/mcs/class/corlib/Mono.Math/ChangeLog b/mcs/class/corlib/Mono.Math/ChangeLog
index f91df6a..cf1b7eb 100644
--- a/mcs/class/corlib/Mono.Math/ChangeLog
+++ b/mcs/class/corlib/Mono.Math/ChangeLog
@@ -1,3 +1,10 @@
+2010-10-18  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* corlib/Mono.Math/BigInteger.cs: *
+	Mono.Security/Mono.Math/BigInteger.cs: Remove Montgomery internal
+	inner class since it's buggy, has not been used for years and
+	confuse some people (seeing ghosts of CVE-2007-5197)
+
 2007-05-31  Alan McGovern  <alan.mcgovern at gmail.com>
 
 	* BigInteger.cs: Don't instantiate a new BigInteger after
diff --git a/mcs/class/corlib/Mono.Math/ChangeLog b/mcs/class/corlib/Mono.Math/ChangeLog.old
similarity index 100%
copy from mcs/class/corlib/Mono.Math/ChangeLog
copy to mcs/class/corlib/Mono.Math/ChangeLog.old
diff --git a/mcs/class/corlib/Mono.Security.X509/ChangeLog b/mcs/class/corlib/Mono.Security.X509/ChangeLog
index 39c5b85..1e54994 100644
--- a/mcs/class/corlib/Mono.Security.X509/ChangeLog
+++ b/mcs/class/corlib/Mono.Security.X509/ChangeLog
@@ -1,3 +1,54 @@
+2010-11-03  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* mcs/class/corlib/Mono.Security.X509/X509Store.cs: *
+	mcs/class/Mono.Security/Mono.Security.X509/X509Store.cs: Replace
+	INSIDE_CORLIB by !NET_2_1 so the new feature is available to
+	mono/full framework but not where CspParameters (or file system,
+	or key persistance) might not be possible
+
+2010-11-03  Marek Habersack  <grendel at twistedcode.net>
+
+	Fix mixed newlines
+
+2010-11-02  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* mcs/class/corlib/Mono.Security.X509/X509Store.cs: *
+	mcs/class/Mono.Security/Mono.Security.X509/X509Store.cs: Add if
+	!INSIDE_CORLIB around code that use CspParameters in order to
+	allow compilation to work when bootstraping the moonlight profile
+
+2010-10-20  Pablo Ruiz Garcia  <pablo.ruiz at gmail.com>
+
+	[API] X509 related enhacemnts to allow 1) associating keystore's
+	private keys with their corresponding public certificates found at
+	X509Stores, and 2) importing private keys to X509Stores along with
+	certificates.
+
+	mcs/class/corlib/Mono.Security.X509/X509Store.cs:
+	mcs/class/Mono.Security/Mono.Security.X509/X509Store.cs:
+	mcs/class/corlib/Mono.Security.X509/X509StoreManager.cs:
+	mcs/class/Mono.Security/Mono.Security.X509/X509StoreManager.cs:
+	Modified MSX.X509Store to allow importing privateKeys along
+	certificates (by using RSACryptoServiceProvider and
+	KeyPairPersister). Fixed X509Store to use certificate's hash as
+	CspParameters.KeyContainerName.
+
+	mcs/tools/security/certmgr.cs: Added a new -importKey action to
+	certmgr, which allows importing a PKCS12 contained key into our
+	KeyPair store. Added a more (verbose) output to certmgr's -list
+	action.
+
+	man/certmgr.1: Updated certmgr man page ti reflect -importKey
+	addition.
+
+	mcs/class/corlib/System.Security.Cryptography/CspParameters.cs:
+	mcs/class/corlib/System.Security.Cryptography/RSACryptoServiceProvider.cs:
+	Implemented RSACryptoServiceProvider.CspKeyContainerInfo getter
+	RSACryptoServiceProvider will not take into account
+	CspParameterFlags.UseExistingKey by throwing a
+	CryptographicException if keyset identified by KeyContainerName
+	does not exists.
+
 2010-05-10  Sebastien Pouliot  <sebastien at ximian.com>
 
 	* X509CertificateCollection.cs:
diff --git a/mcs/class/corlib/Mono.Security.X509/ChangeLog b/mcs/class/corlib/Mono.Security.X509/ChangeLog.old
similarity index 100%
copy from mcs/class/corlib/Mono.Security.X509/ChangeLog
copy to mcs/class/corlib/Mono.Security.X509/ChangeLog.old
diff --git a/mcs/class/corlib/Mono.Security.X509/X509Store.cs b/mcs/class/corlib/Mono.Security.X509/X509Store.cs
index 1acd57d..6b7ebc6 100644
--- a/mcs/class/corlib/Mono.Security.X509/X509Store.cs
+++ b/mcs/class/corlib/Mono.Security.X509/X509Store.cs
@@ -3,8 +3,10 @@
 //
 // Author:
 //	Sebastien Pouliot  <sebastien at ximian.com>
+//	Pablo Ruiz <pruiz at netway.org>
 //
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
+// (C) 2010 Pablo Ruiz.
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -31,7 +33,9 @@ using System.Collections;
 using System.Globalization;
 using System.IO;
 using System.Text;
+using System.Security.Cryptography;
 
+using Mono.Security.Cryptography;
 using Mono.Security.X509.Extensions;
 
 namespace Mono.Security.X509 {
@@ -114,6 +118,17 @@ namespace Mono.Security.X509 {
 					fs.Close ();
 				}
 			}
+#if !NET_2_1
+			// Try to save privateKey if available..
+			CspParameters cspParams = new CspParameters ();
+			cspParams.KeyContainerName = CryptoConvert.ToHex (certificate.Hash);
+
+			// Right now this seems to be the best way to know if we should use LM store.. ;)
+			if (_storePath.StartsWith (X509StoreManager.LocalMachinePath))
+				cspParams.Flags = CspProviderFlags.UseMachineKeyStore;
+
+			ImportPrivateKey (certificate, cspParams);
+#endif
 		}
 
 		public void Import (X509Crl crl) 
@@ -188,6 +203,7 @@ namespace Mono.Security.X509 {
 		private string GetUniqueName (string method, byte[] name, string fileExtension) 
 		{
 			StringBuilder sb = new StringBuilder (method);
+			
 			sb.Append ("-");
 			foreach (byte b in name) {
 				sb.Append (b.ToString ("X2", CultureInfo.InvariantCulture));
@@ -212,6 +228,21 @@ namespace Mono.Security.X509 {
 		{
 			byte[] data = Load (filename);
 			X509Certificate cert = new X509Certificate (data);
+#if !NET_2_1
+			// If privateKey it's available, load it too..
+			CspParameters cspParams = new CspParameters ();
+			cspParams.KeyContainerName = CryptoConvert.ToHex (cert.Hash);
+			cspParams.Flags = CspProviderFlags.UseMachineKeyStore;
+			KeyPairPersistence kpp = new KeyPairPersistence (cspParams);
+
+			if (!kpp.Load ())
+				return cert;
+
+			if (cert.RSA != null)
+				cert.RSA = new RSACryptoServiceProvider (cspParams);
+			else if (cert.DSA != null)
+				cert.DSA = new DSACryptoServiceProvider (cspParams);
+#endif
 			return cert;
 		}
 
@@ -283,5 +314,41 @@ namespace Mono.Security.X509 {
 			}
 			return list;
 		}
+#if !NET_2_1
+		private void ImportPrivateKey (X509Certificate certificate, CspParameters cspParams)
+		{
+			RSACryptoServiceProvider rsaCsp = certificate.RSA as RSACryptoServiceProvider;
+			if (rsaCsp != null) {
+				if (rsaCsp.PublicOnly)
+					return;
+
+				RSACryptoServiceProvider csp = new RSACryptoServiceProvider(cspParams);
+				csp.ImportParameters(rsaCsp.ExportParameters(true));
+				csp.PersistKeyInCsp = true;
+				return;
+			}
+
+			RSAManaged rsaMng = certificate.RSA as RSAManaged;
+			if (rsaMng != null) {
+				if (rsaMng.PublicOnly)
+					return;
+
+				RSACryptoServiceProvider csp = new RSACryptoServiceProvider(cspParams);
+				csp.ImportParameters(rsaMng.ExportParameters(true));
+				csp.PersistKeyInCsp = true;
+				return;
+			}
+
+			DSACryptoServiceProvider dsaCsp = certificate.DSA as DSACryptoServiceProvider;
+			if (dsaCsp != null) {
+				if (dsaCsp.PublicOnly)
+					return;
+
+				DSACryptoServiceProvider csp = new DSACryptoServiceProvider(cspParams);
+				csp.ImportParameters(dsaCsp.ExportParameters(true));
+				csp.PersistKeyInCsp = true;
+			}
+		}
+#endif
 	}
 }
diff --git a/mcs/class/corlib/Mono.Security.X509/X509StoreManager.cs b/mcs/class/corlib/Mono.Security.X509/X509StoreManager.cs
index d7b9c2c..db73583 100644
--- a/mcs/class/corlib/Mono.Security.X509/X509StoreManager.cs
+++ b/mcs/class/corlib/Mono.Security.X509/X509StoreManager.cs
@@ -8,8 +8,6 @@
 //
 
 //
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // "Software"), to deal in the Software without restriction, including
@@ -45,6 +43,8 @@ namespace Mono.Security.X509 {
 #endif
 	sealed class X509StoreManager {
 
+		static private string _userPath;
+		static private string _localMachinePath;
 		static private X509Stores _userStore;
 		static private X509Stores _machineStore;
 
@@ -52,30 +52,44 @@ namespace Mono.Security.X509 {
 		{
 		}
 
-		static public X509Stores CurrentUser {
-			get { 
-				if (_userStore == null) {
-					string _userPath = Path.Combine (
-						Environment.GetFolderPath (Environment.SpecialFolder.ApplicationData),
-						".mono");
-					_userPath = Path.Combine (_userPath, "certs");
+		internal static string CurrentUserPath {
+			get {
+				if (_userPath == null) {
+					_userPath = Path.Combine(
+							Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
+							".mono");
+					_userPath = Path.Combine(_userPath, "certs");
+				}
+				return _userPath;
+			}
+		}
 
-					_userStore = new X509Stores (_userPath);
+		internal static string LocalMachinePath {
+			get {
+				if (_localMachinePath == null) {
+					_localMachinePath = Path.Combine (
+						Environment.GetFolderPath (Environment.SpecialFolder.CommonApplicationData),
+						".mono");
+					_localMachinePath = Path.Combine (_localMachinePath, "certs");
 				}
+				return _localMachinePath;
+			}
+		}
+
+		static public X509Stores CurrentUser {
+			get { 
+				if (_userStore == null)
+					_userStore = new X509Stores(CurrentUserPath);
+				
 				return _userStore;
 			}
 		}
 
 		static public X509Stores LocalMachine {
 			get {
-				if (_machineStore == null) {
-					string _machinePath = Path.Combine (
-						Environment.GetFolderPath (Environment.SpecialFolder.CommonApplicationData),
-						".mono");
-					_machinePath = Path.Combine (_machinePath, "certs");
+				if (_machineStore == null) 
+					_machineStore = new X509Stores (LocalMachinePath);
 
-					_machineStore = new X509Stores (_machinePath);
-				}
 				return _machineStore;
 			}
 		}
diff --git a/mcs/class/corlib/Mono.Security/ChangeLog b/mcs/class/corlib/Mono.Security/ChangeLog
index 97d44bd..5607aa7 100644
--- a/mcs/class/corlib/Mono.Security/ChangeLog
+++ b/mcs/class/corlib/Mono.Security/ChangeLog
@@ -1,3 +1,8 @@
+2011-01-06  Zoltan Varga  <vargaz at gmail.com>
+
+	Change some usages of ArrayList to List<T> to avoid calls to the
+	slow ArrayList.ToArray(Type) method.
+
 2010-05-10  Sebastien Pouliot  <sebastien at ximian.com>
 
 	* ASN1.cs: Keep it public for Moonlight. Other types in other 
diff --git a/mcs/class/corlib/Mono.Security/ChangeLog b/mcs/class/corlib/Mono.Security/ChangeLog.old
similarity index 100%
copy from mcs/class/corlib/Mono.Security/ChangeLog
copy to mcs/class/corlib/Mono.Security/ChangeLog.old
diff --git a/mcs/class/corlib/Mono.Security/Uri.cs b/mcs/class/corlib/Mono.Security/Uri.cs
index e9ac8ae..833d4e4 100644
--- a/mcs/class/corlib/Mono.Security/Uri.cs
+++ b/mcs/class/corlib/Mono.Security/Uri.cs
@@ -40,6 +40,7 @@ using System;
 using System.IO;
 using System.Text;
 using System.Collections;
+using System.Collections.Generic;
 using System.Globalization;
 
 // See RFC 2396 for more info on URI's.
@@ -1092,7 +1093,7 @@ namespace Mono.Security {
 		{
 			path = path.Replace ('\\','/');
 			string [] parts = path.Split ('/');
-			ArrayList result = new ArrayList ();
+			var result = new List<string> ();
 
 			int end = parts.Length;
 			for (int i = 0; i < end; i++) {
@@ -1119,7 +1120,7 @@ namespace Mono.Security {
 
 			result.Insert (0, String.Empty);
 
-			string res = String.Join ("/", (string []) result.ToArray (typeof (string)));
+			string res = String.Join ("/", result.ToArray ());
 			if (path.EndsWith ("/"))
 				res += '/';
 				
diff --git a/mcs/class/corlib/Mono.Xml/ChangeLog b/mcs/class/corlib/Mono.Xml/ChangeLog
index 36ba4d6..2548861 100644
--- a/mcs/class/corlib/Mono.Xml/ChangeLog
+++ b/mcs/class/corlib/Mono.Xml/ChangeLog
@@ -1,3 +1,8 @@
+2011-01-06  Zoltan Varga  <vargaz at gmail.com>
+
+	Change some usages of ArrayList to List<T> to avoid calls to the
+	slow ArrayList.ToArray(Type) method.
+
 2008-08-07  Sebastien Pouliot  <sebastien at ximian.com>
 
 	* MiniParser.cs: Remove. It is not used anymore inside corlib
diff --git a/mcs/class/corlib/Mono.Xml/ChangeLog b/mcs/class/corlib/Mono.Xml/ChangeLog.old
similarity index 100%
copy from mcs/class/corlib/Mono.Xml/ChangeLog
copy to mcs/class/corlib/Mono.Xml/ChangeLog.old
diff --git a/mcs/class/corlib/Mono.Xml/SmallXmlParser.cs b/mcs/class/corlib/Mono.Xml/SmallXmlParser.cs
index 19d56cc..94fa2d1 100644
--- a/mcs/class/corlib/Mono.Xml/SmallXmlParser.cs
+++ b/mcs/class/corlib/Mono.Xml/SmallXmlParser.cs
@@ -32,6 +32,7 @@
 
 using System;
 using System.Collections;
+using System.Collections.Generic;
 using System.Globalization;
 using System.IO;
 using System.Text;
@@ -113,28 +114,28 @@ namespace Mono.Xml
 			}
 			public string GetName (int i)
 			{
-				return (string) attrNames [i];
+				return attrNames [i];
 			}
 			public string GetValue (int i)
 			{
-				return (string) attrValues [i];
+				return attrValues [i];
 			}
 			public string GetValue (string name)
 			{
 				for (int i = 0; i < attrNames.Count; i++)
-					if ((string) attrNames [i] == name)
-						return (string) attrValues [i];
+					if (attrNames [i] == name)
+						return attrValues [i];
 				return null;
 			}
 			public string [] Names {
-				get { return (string []) attrNames.ToArray (typeof (string)); }
+				get { return attrNames.ToArray (); }
 			}
 			public string [] Values {
-				get { return (string []) attrValues.ToArray (typeof (string)); }
+				get { return attrValues.ToArray (); }
 			}
 
-			ArrayList attrNames = new ArrayList ();
-			ArrayList attrValues = new ArrayList ();
+			List<string> attrNames = new List<string> ();
+			List<string> attrValues = new List<string> ();
 
 			internal void Clear ()
 			{
diff --git a/mcs/class/corlib/System.Collections.Concurrent.Partitioners/ChangeLog b/mcs/class/corlib/System.Collections.Concurrent.Partitioners/ChangeLog
new file mode 100644
index 0000000..d310e92
--- /dev/null
+++ b/mcs/class/corlib/System.Collections.Concurrent.Partitioners/ChangeLog
@@ -0,0 +1,26 @@
+2010-12-07  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Fix behavior of Partitioner.Create when more than one partition is
+	requested and used
+
+2010-11-26  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Remove debugging spew wrongly introduced by earlier commit
+
+2010-11-24  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Add a fast path in EnumerablePartitioner for strip partitioning
+
+2010-11-17  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	[Partitioner] Use custom made enumerator for GetPartitions
+	proxying from GetOrderablePartitions
+
+2010-04-15  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	* ListPartitioner.cs: Remove playground code
+
+2010-04-15  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	* ListPartitioner.cs:
+	* EnumerablePartitioner.cs: Add internal behavior specific to PLinq
diff --git a/mcs/class/corlib/System.Collections.Concurrent/Partitioners/ChangeLog b/mcs/class/corlib/System.Collections.Concurrent.Partitioners/ChangeLog.old
similarity index 100%
rename from mcs/class/corlib/System.Collections.Concurrent/Partitioners/ChangeLog
rename to mcs/class/corlib/System.Collections.Concurrent.Partitioners/ChangeLog.old
diff --git a/mcs/class/corlib/System.Collections.Concurrent.Partitioners/EnumerablePartitioner.cs b/mcs/class/corlib/System.Collections.Concurrent.Partitioners/EnumerablePartitioner.cs
new file mode 100644
index 0000000..d236fee
--- /dev/null
+++ b/mcs/class/corlib/System.Collections.Concurrent.Partitioners/EnumerablePartitioner.cs
@@ -0,0 +1,147 @@
+// 
+// EnumerablePartitioner.cs
+//  
+// Author:
+//       Jérémie "Garuma" Laval <jeremie.laval at gmail.com>
+// 
+// Copyright (c) 2009 Jérémie "Garuma" Laval
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+#if NET_4_0
+
+using System;
+using System.Threading;
+using System.Threading.Tasks;
+using System.Collections.Generic;
+
+namespace System.Collections.Concurrent.Partitioners
+{
+	// Represent a chunk partitioner
+	internal class EnumerablePartitioner<T> : OrderablePartitioner<T>
+	{
+		IEnumerable<T> source;
+		
+		const int InitialPartitionSize = 1;
+		const int PartitionMultiplier = 2;
+		
+		int initialPartitionSize;
+		int partitionMultiplier;
+
+		public EnumerablePartitioner (IEnumerable<T> source)
+			: this (source, InitialPartitionSize, PartitionMultiplier)
+		{
+
+		}
+		
+		// This is used to get striped partitionning (for Take and Skip for instance
+		public EnumerablePartitioner (IEnumerable<T> source, int initialPartitionSize, int partitionMultiplier)
+			 : base (true, false, true)
+		{
+			this.source = source;
+			this.initialPartitionSize = initialPartitionSize;
+			this.partitionMultiplier = partitionMultiplier;
+		}
+		
+		public override IList<IEnumerator<KeyValuePair<long, T>>> GetOrderablePartitions (int partitionCount)
+		{
+			if (partitionCount <= 0)
+				throw new ArgumentOutOfRangeException ("partitionCount");
+			
+			IEnumerator<KeyValuePair<long, T>>[] enumerators
+				= new IEnumerator<KeyValuePair<long, T>>[partitionCount];
+
+			PartitionerState state = new PartitionerState ();
+			IEnumerator<T> src = source.GetEnumerator ();
+			bool isSimple = initialPartitionSize == 1 && partitionMultiplier == 1;
+
+			for (int i = 0; i < enumerators.Length; i++) {
+				enumerators[i] = isSimple ? GetPartitionEnumeratorSimple (src, state, i == enumerators.Length - 1) : GetPartitionEnumerator (src, state);
+			}
+			
+			return enumerators;
+		}
+
+		// This partitioner that is simpler than the general case (don't use a list) is called in the case
+		// of initialPartitionSize == partitionMultiplier == 1
+		IEnumerator<KeyValuePair<long, T>> GetPartitionEnumeratorSimple (IEnumerator<T> src,
+		                                                                 PartitionerState state,
+		                                                                 bool last)
+		{
+			long index = -1;
+			var value = default (T);
+
+			try {
+				do {
+					lock (state.SyncLock) {
+						if (!src.MoveNext ())
+							break;
+
+						index = state.Index++;
+						value = src.Current;
+					}
+
+					yield return new KeyValuePair<long, T> (index, value);
+				} while (true);
+			} finally {
+				if (last)
+					src.Dispose ();
+			}
+		}
+		
+		IEnumerator<KeyValuePair<long, T>> GetPartitionEnumerator (IEnumerator<T> src, PartitionerState state)
+		{
+			int count = initialPartitionSize;
+			List<T> list = new List<T> ();
+			
+			while (true) {
+				list.Clear ();
+				long ind = -1;
+				
+				lock (state.SyncLock) {
+					ind = state.Index;
+					
+					for (int i = 0; i < count; i++) {
+						if (!src.MoveNext ()) {
+							if (list.Count == 0)
+								yield break;
+							else
+								break;
+						}
+						
+						list.Add (src.Current);
+						state.Index++;
+					}					
+				}
+				
+				for (int i = 0; i < list.Count; i++)
+					yield return new KeyValuePair<long, T> (ind + i, list[i]);
+				
+				count *= partitionMultiplier;
+			}
+		}
+
+		class PartitionerState
+		{
+			public long Index = 0;
+			public readonly object SyncLock = new object ();
+		}
+	}
+}
+#endif
diff --git a/mcs/class/corlib/System.Collections.Concurrent.Partitioners/ListPartitioner.cs b/mcs/class/corlib/System.Collections.Concurrent.Partitioners/ListPartitioner.cs
new file mode 100644
index 0000000..79a54f5
--- /dev/null
+++ b/mcs/class/corlib/System.Collections.Concurrent.Partitioners/ListPartitioner.cs
@@ -0,0 +1,111 @@
+// 
+// ListPartitioner.cs
+//  
+// Author:
+//       Jérémie "Garuma" Laval <jeremie.laval at gmail.com>
+// 
+// Copyright (c) 2009 Jérémie "Garuma" Laval
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+#if NET_4_0
+
+using System;
+using System.Collections.Generic;
+
+namespace System.Collections.Concurrent.Partitioners
+{
+	// Represent a Range partitioner
+	internal class ListPartitioner<T> : OrderablePartitioner<T>
+	{
+		IList<T> source;
+		readonly bool chunking = Environment.GetEnvironmentVariable ("PLINQ_PARTITIONING_HINT") == "chunking";
+		
+		public ListPartitioner (IList<T> source) : base (true, true, true)
+		{
+			this.source = source;
+		}
+		
+		public override IList<IEnumerator<KeyValuePair<long, T>>> GetOrderablePartitions (int partitionCount)
+		{
+			if (partitionCount <= 0)
+				throw new ArgumentOutOfRangeException ("partitionCount");
+			
+			IEnumerator<KeyValuePair<long, T>>[] enumerators
+				= new IEnumerator<KeyValuePair<long, T>>[partitionCount];
+			
+			int count = source.Count / partitionCount;
+			if (count <= 1)
+				count = 1;
+			
+			for (int i = 0; i < enumerators.Length; i++) {
+				if (chunking) {
+					const int step = 64;
+					enumerators[i] = GetEnumeratorForRange (i * step, enumerators.Length, source.Count, step);
+					continue;
+				}
+
+				if (i != enumerators.Length - 1)
+					enumerators[i] = GetEnumeratorForRange (i * count, i * count + count);
+				else
+					enumerators[i] = GetEnumeratorForRange (i * count, source.Count);
+			}
+			
+			return enumerators;
+		}
+		
+		IEnumerator<KeyValuePair<long, T>> GetEnumeratorForRange (int startIndex, int lastIndex)
+		{
+			if (startIndex >= source.Count)
+			  return GetEmpty ();
+			
+			return GetEnumeratorForRangeInternal (startIndex, lastIndex);
+		}
+		
+		IEnumerator<KeyValuePair<long, T>> GetEnumeratorForRange (int startIndex, int stride, int count, int step)
+		{
+			if (startIndex >= source.Count)
+			  return GetEmpty ();
+			
+			return GetEnumeratorForRangeInternal (startIndex, stride, count, step);
+		}
+
+		IEnumerator<KeyValuePair<long, T>> GetEmpty ()
+		{
+			yield break;
+		}
+		
+		IEnumerator<KeyValuePair<long, T>> GetEnumeratorForRangeInternal (int startIndex, int lastIndex)
+		{	
+			for (int i = startIndex; i < lastIndex; i++) {
+				yield return new KeyValuePair<long, T> (i, source[i]);
+			}
+		}
+
+		IEnumerator<KeyValuePair<long, T>> GetEnumeratorForRangeInternal (int startIndex, int stride, int count, int step)
+		{
+			for (int i = startIndex; i < count; i += stride * step) {
+				for (int j = i; j < i + step && j < count; j++) {
+					yield return new KeyValuePair<long, T> (j, source[j]);
+				}
+			}
+		}
+	}
+}
+#endif
diff --git a/mcs/class/corlib/System.Collections.Concurrent.Partitioners/UserRangePartitioner.cs b/mcs/class/corlib/System.Collections.Concurrent.Partitioners/UserRangePartitioner.cs
new file mode 100644
index 0000000..954324c
--- /dev/null
+++ b/mcs/class/corlib/System.Collections.Concurrent.Partitioners/UserRangePartitioner.cs
@@ -0,0 +1,121 @@
+// 
+// UserRangePartitioner.cs
+//  
+// Author:
+//       Jérémie "Garuma" Laval <jeremie.laval at gmail.com>
+// 
+// Copyright (c) 2010 Jérémie "Garuma" Laval
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+#if NET_4_0
+
+using System;
+using System.Threading;
+using System.Collections.Generic;
+
+namespace System.Collections.Concurrent.Partitioners
+{
+	internal class UserRangePartitioner : OrderablePartitioner<Tuple<int,  int>>
+	{
+		readonly int start;
+		readonly int end;
+		readonly int rangeSize;
+
+		public UserRangePartitioner (int start, int end, int rangeSize) : base (true, true, true)
+		{
+			this.start = start;
+			this.end = end;
+			this.rangeSize = rangeSize;
+		}
+		
+		public override IList<IEnumerator<KeyValuePair<long, Tuple<int, int>>>> GetOrderablePartitions (int partitionCount)
+		{
+			if (partitionCount <= 0)
+				throw new ArgumentOutOfRangeException ("partitionCount");
+			
+			int currentIndex = 0;
+			Func<int> getNextIndex = () => Interlocked.Increment (ref currentIndex) - 1;
+
+			var enumerators = new IEnumerator<KeyValuePair<long, Tuple<int, int>>>[partitionCount];
+			for (int i = 0; i < partitionCount; i++)
+				enumerators[i] = GetEnumerator (getNextIndex);
+
+			return enumerators;
+		}
+		
+		IEnumerator<KeyValuePair<long, Tuple<int, int>>> GetEnumerator (Func<int> getNextIndex)
+		{
+			while (true) {
+				int index = getNextIndex ();
+				int sliceStart = index * rangeSize + start;
+
+				if (sliceStart >= end)
+					break;
+
+				yield return new KeyValuePair<long, Tuple<int, int>> (index, Tuple.Create (sliceStart, Math.Min (end, sliceStart + rangeSize)));
+				sliceStart += rangeSize;
+			}
+		}
+	}
+
+	internal class UserLongRangePartitioner : OrderablePartitioner<Tuple<long,  long>>
+	{
+		readonly long start;
+		readonly long end;
+		readonly long rangeSize;
+
+		public UserLongRangePartitioner (long start, long end, long rangeSize) : base (true, true, true)
+		{
+			this.start = start;
+			this.end = end;
+			this.rangeSize = rangeSize;
+		}
+		
+		public override IList<IEnumerator<KeyValuePair<long, Tuple<long, long>>>> GetOrderablePartitions (int partitionCount)
+		{
+			if (partitionCount <= 0)
+				throw new ArgumentOutOfRangeException ("partitionCount");
+			
+			long currentIndex = 0;
+			Func<long> getNextIndex = () => Interlocked.Increment (ref currentIndex) - 1;
+
+			var enumerators = new IEnumerator<KeyValuePair<long, Tuple<long, long>>>[partitionCount];
+			for (int i = 0; i < partitionCount; i++)
+				enumerators[i] = GetEnumerator (getNextIndex);
+
+			return enumerators;
+		}
+		
+		IEnumerator<KeyValuePair<long, Tuple<long, long>>> GetEnumerator (Func<long> getNextIndex)
+		{
+			while (true) {
+				long index = getNextIndex ();
+				long sliceStart = index * rangeSize + start;
+
+				if (sliceStart >= end)
+					break;
+
+				yield return new KeyValuePair<long, Tuple<long, long>> (index, Tuple.Create (sliceStart, Math.Min (end, sliceStart + rangeSize)));
+				sliceStart += rangeSize;
+			}
+		}
+	}
+}
+#endif
diff --git a/mcs/class/corlib/System.Collections.Concurrent/ChangeLog b/mcs/class/corlib/System.Collections.Concurrent/ChangeLog
index 5aee9f8..ad80610 100644
--- a/mcs/class/corlib/System.Collections.Concurrent/ChangeLog
+++ b/mcs/class/corlib/System.Collections.Concurrent/ChangeLog
@@ -1,3 +1,80 @@
+2011-01-07  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Remove now unused internal classes
+
+2011-01-06  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Fix comments
+
+2011-01-06  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Protect SpinLock's Enter method against asynchronous exception
+
+2011-01-04  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Use correct exception when a key is not found in
+	ConcurrentDictionary
+
+2010-12-17  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Remove a leftover debugging scwl
+
+2010-12-16  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Add support for storing elements with the same hashcode in
+	ConcurrentDictionary. Add corresponding unit test.
+
+2010-12-16  Marek Safar  <marek.safar at gmail.com>
+
+	Some 4.0 API tweaks
+
+2010-12-15  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Yet more parameter manual fixup
+
+2010-12-15  Marek Safar  <marek.safar at gmail.com>
+
+	Some .net 4.0 api compatibility fixes
+
+2010-11-22  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Improve fallback SpinWait to include the initial logic of SpinWait
+
+2010-11-12  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Define more correctly
+
+2010-11-12  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Add a default implementation of SpinWait when SplitOrderedList is
+	built with Sys.Web 2.0 and add it to the build
+
+2010-11-17  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	[Partitioner] Use custom made enumerator for GetPartitions
+	proxying from GetOrderablePartitions
+
+2010-11-09  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Use ulong to represent element hashes internally allowing full
+	width 32bits hashes. Replace SpinLock+ManualResetEvent based
+	bucket resize with a simpler reader-writer lock. Revert from two
+	layers storage to a bare array storage for buckets temporarily as
+	it causes a weird concurrency bug.
+
+2010-11-04  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	ConcurrentDictionary performance improvements
+
+2010-11-03  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Fixicate net_4_0_bootstrap build.
+
+2010-11-03  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Implement Partitioner.Create int and long overloads. Add
+	corresponding unit tests.
+
 2010-08-24  Jérémie Laval  <jeremie.laval at gmail.com>
 
 	Correctly support calling lazily factory lambdas in
diff --git a/mcs/class/corlib/System.Collections.Concurrent/ConcurrentDictionary.cs b/mcs/class/corlib/System.Collections.Concurrent/ConcurrentDictionary.cs
index 40984d1..9ee890e 100644
--- a/mcs/class/corlib/System.Collections.Concurrent/ConcurrentDictionary.cs
+++ b/mcs/class/corlib/System.Collections.Concurrent/ConcurrentDictionary.cs
@@ -22,44 +22,48 @@
 //
 //
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
 
 using System;
 using System.Threading;
 using System.Collections;
 using System.Collections.Generic;
 using System.Runtime.Serialization;
+using System.Diagnostics;
 
 namespace System.Collections.Concurrent
 {
+	[DebuggerDisplay ("Count={Count}")]
+	[DebuggerTypeProxy (typeof (CollectionDebuggerView<,>))]
 	public class ConcurrentDictionary<TKey, TValue> : IDictionary<TKey, TValue>,
 	  ICollection<KeyValuePair<TKey, TValue>>, IEnumerable<KeyValuePair<TKey, TValue>>,
 	  IDictionary, ICollection, IEnumerable
 	{
 		IEqualityComparer<TKey> comparer;
 
-		SplitOrderedList<KeyValuePair<TKey, TValue>> internalDictionary = new SplitOrderedList<KeyValuePair<TKey, TValue>> ();
+		SplitOrderedList<TKey, KeyValuePair<TKey, TValue>> internalDictionary;
 
 		public ConcurrentDictionary () : this (EqualityComparer<TKey>.Default)
 		{
 		}
 
-		public ConcurrentDictionary (IEnumerable<KeyValuePair<TKey, TValue>> values)
-			: this (values, EqualityComparer<TKey>.Default)
+		public ConcurrentDictionary (IEnumerable<KeyValuePair<TKey, TValue>> collection)
+			: this (collection, EqualityComparer<TKey>.Default)
 		{
-			foreach (KeyValuePair<TKey, TValue> pair in values)
+			foreach (KeyValuePair<TKey, TValue> pair in collection)
 				Add (pair.Key, pair.Value);
 		}
 
 		public ConcurrentDictionary (IEqualityComparer<TKey> comparer)
 		{
 			this.comparer = comparer;
+			this.internalDictionary = new SplitOrderedList<TKey, KeyValuePair<TKey, TValue>> (comparer);
 		}
 
-		public ConcurrentDictionary (IEnumerable<KeyValuePair<TKey, TValue>> values, IEqualityComparer<TKey> comparer)
+		public ConcurrentDictionary (IEnumerable<KeyValuePair<TKey, TValue>> collection, IEqualityComparer<TKey> comparer)
 			: this (comparer)
 		{
-			foreach (KeyValuePair<TKey, TValue> pair in values)
+			foreach (KeyValuePair<TKey, TValue> pair in collection)
 				Add (pair.Key, pair.Value);
 		}
 
@@ -71,9 +75,9 @@ namespace System.Collections.Concurrent
 		}
 
 		public ConcurrentDictionary (int concurrencyLevel,
-		                             IEnumerable<KeyValuePair<TKey, TValue>> values,
+		                             IEnumerable<KeyValuePair<TKey, TValue>> collection,
 		                             IEqualityComparer<TKey> comparer)
-			: this (values, comparer)
+			: this (collection, comparer)
 		{
 
 		}
@@ -97,7 +101,7 @@ namespace System.Collections.Concurrent
 
 		public bool TryAdd (TKey key, TValue value)
 		{
-			return internalDictionary.Insert (Hash (key), Make (key, value));
+			return internalDictionary.Insert (Hash (key), key, Make (key, value));
 		}
 
 		void ICollection<KeyValuePair<TKey,TValue>>.Add (KeyValuePair<TKey, TValue> pair)
@@ -108,6 +112,7 @@ namespace System.Collections.Concurrent
 		public TValue AddOrUpdate (TKey key, Func<TKey, TValue> addValueFactory, Func<TKey, TValue, TValue> updateValueFactory)
 		{
 			return internalDictionary.InsertOrUpdate (Hash (key),
+			                                          key,
 			                                          () => Make (key, addValueFactory (key)),
 			                                          (e) => Make (key, updateValueFactory (key, e.Value))).Value;
 		}
@@ -117,27 +122,34 @@ namespace System.Collections.Concurrent
 			return AddOrUpdate (key, (_) => addValue, updateValueFactory);
 		}
 
+		TValue AddOrUpdate (TKey key, TValue addValue, TValue updateValue)
+		{
+			return internalDictionary.InsertOrUpdate (Hash (key),
+			                                          key,
+			                                          Make (key, addValue),
+			                                          Make (key, updateValue)).Value;
+		}
+
 		TValue GetValue (TKey key)
 		{
 			TValue temp;
 			if (!TryGetValue (key, out temp))
-				// TODO: find a correct Exception
-				throw new ArgumentException ("Not a valid key for this dictionary", "key");
+				throw new KeyNotFoundException (key.ToString ());
 			return temp;
 		}
 
 		public bool TryGetValue (TKey key, out TValue value)
 		{
 			KeyValuePair<TKey, TValue> pair;
-			bool result = internalDictionary.Find (Hash (key), out pair);
+			bool result = internalDictionary.Find (Hash (key), key, out pair);
 			value = pair.Value;
 
 			return result;
 		}
 
-		public bool TryUpdate (TKey key, TValue newValue, TValue comparand)
+		public bool TryUpdate (TKey key, TValue newValue, TValue comparisonValue)
 		{
-			return internalDictionary.CompareExchange (Hash (key), Make (key, newValue), (e) => e.Value.Equals (comparand));
+			return internalDictionary.CompareExchange (Hash (key), key, Make (key, newValue), (e) => e.Value.Equals (comparisonValue));
 		}
 
 		public TValue this[TKey key] {
@@ -145,24 +157,24 @@ namespace System.Collections.Concurrent
 				return GetValue (key);
 			}
 			set {
-				AddOrUpdate (key, (_) => value, (_, __) => value);
+				AddOrUpdate (key, value, value);
 			}
 		}
 
 		public TValue GetOrAdd (TKey key, Func<TKey, TValue> valueFactory)
 		{
-			return internalDictionary.InsertOrGet (Hash (key), Make (key, default(TValue)), () => Make (key, valueFactory (key))).Value;
+			return internalDictionary.InsertOrGet (Hash (key), key, Make (key, default(TValue)), () => Make (key, valueFactory (key))).Value;
 		}
 
 		public TValue GetOrAdd (TKey key, TValue value)
 		{
-			return internalDictionary.InsertOrGet (Hash (key), Make (key, value), null).Value;
+			return internalDictionary.InsertOrGet (Hash (key), key, Make (key, value), null).Value;
 		}
 
 		public bool TryRemove (TKey key, out TValue value)
 		{
 			KeyValuePair<TKey, TValue> data;
-			bool result = internalDictionary.Delete (Hash (key), out data);
+			bool result = internalDictionary.Delete (Hash (key), key, out data);
 			value = data.Value;
 			return result;
 		}
@@ -187,7 +199,7 @@ namespace System.Collections.Concurrent
 		public bool ContainsKey (TKey key)
 		{
 			KeyValuePair<TKey, TValue> dummy;
-			return internalDictionary.Find (Hash (key), out dummy);
+			return internalDictionary.Find (Hash (key), key, out dummy);
 		}
 
 		bool IDictionary.Contains (object key)
@@ -246,7 +258,7 @@ namespace System.Collections.Concurrent
 		public void Clear()
 		{
 			// Pronk
-			internalDictionary = new SplitOrderedList<KeyValuePair<TKey, TValue>> ();
+			internalDictionary = new SplitOrderedList<TKey, KeyValuePair<TKey, TValue>> (comparer);
 		}
 
 		public int Count {
diff --git a/mcs/class/corlib/System.Collections.Concurrent/ConcurrentOrderedList.cs b/mcs/class/corlib/System.Collections.Concurrent/ConcurrentOrderedList.cs
new file mode 100644
index 0000000..d9644a7
--- /dev/null
+++ b/mcs/class/corlib/System.Collections.Concurrent/ConcurrentOrderedList.cs
@@ -0,0 +1,212 @@
+// ConcurrentOrderedList.cs
+//
+// Copyright (c) 2010 Jérémie "Garuma" Laval
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+//
+//
+
+#if NET_4_0
+
+using System;
+using System.Threading;
+using System.Collections;
+using System.Collections.Generic;
+using System.Runtime.Serialization;
+
+namespace System.Collections.Concurrent
+{
+	internal class ConcurrentOrderedList<T>
+	{
+		class Node
+		{
+			public T Data;
+			public int Key;
+			public Node Next;
+			public bool Marked;		   
+
+			public Node ()
+			{
+
+			}
+
+			public Node (Node wrapped)
+			{
+				Marked = true;
+				Next = wrapped;
+			}
+		}
+
+		Node head;
+		Node tail;
+
+		IEqualityComparer<T> comparer;
+
+		public ConcurrentOrderedList () : this (EqualityComparer<T>.Default)
+		{
+			
+		}
+
+		public ConcurrentOrderedList (IEqualityComparer<T> comparer)
+		{
+			this.comparer = comparer;
+
+			head = new Node ();
+			tail = new Node ();
+			head.Next = tail;
+		}
+
+		public bool TryAdd (T data)
+		{
+			Node node = new Node ();
+			node.Data = data;
+			node.Key = comparer.GetHashCode (data);
+
+			return ListInsert (node);
+		}
+
+		public bool TryRemove (T data)
+		{
+			T dummy;
+			return TryRemoveHash (comparer.GetHashCode (data), out dummy);
+		}
+
+		public bool TryRemoveHash (int key, out T data)
+		{
+			return ListDelete (key, out data);
+		}
+
+		public bool Contains (T data)
+		{
+			return ContainsHash (comparer.GetHashCode (data));
+		}
+
+		public bool ContainsHash (int key)
+		{
+			Node node;			
+
+			if (!ListFind (key, out node))
+				return false;
+
+			return true;
+
+		}
+
+		public bool TryGetFromHash (int key, out T data)
+		{
+			data = default (T);
+			Node node;			
+
+			if (!ListFind (key, out node))
+				return false;
+
+			data = node.Data;
+			return true;
+		}
+
+		Node ListSearch (int key, ref Node left)
+		{
+			Node leftNodeNext = null, rightNode = null;
+
+			do {
+				Node t = head;
+				Node tNext = t.Next;
+				do {
+					if (!tNext.Marked) {
+						left = t;
+						leftNodeNext = tNext;
+					}
+					t = tNext.Marked ? tNext.Next : tNext;
+					if (t == tail)
+						break;
+					
+					tNext = t.Next;
+				} while (tNext.Marked || t.Key < key);
+
+				rightNode = t;
+				
+				if (leftNodeNext == rightNode) {
+					if (rightNode != tail && rightNode.Next.Marked)
+						continue;
+					else 
+						return rightNode;
+				}
+				
+				if (Interlocked.CompareExchange (ref left.Next, rightNode, leftNodeNext) == leftNodeNext) {
+					if (rightNode != tail && rightNode.Next.Marked)
+						continue;
+					else
+						return rightNode;
+				}
+			} while (true);
+		}
+
+		bool ListDelete (int key, out T data)
+		{
+			Node rightNode = null, rightNodeNext = null, leftNode = null;
+			data = default (T);
+			
+			do {
+				rightNode = ListSearch (key, ref leftNode);
+				if (rightNode == tail || rightNode.Key != key)
+					return false;
+
+				data = rightNode.Data;
+				
+				rightNodeNext = rightNode.Next;
+				if (!rightNodeNext.Marked)
+					if (Interlocked.CompareExchange (ref rightNode.Next, new Node (rightNodeNext), rightNodeNext) == rightNodeNext)
+						break;
+			} while (true);
+			
+			if (Interlocked.CompareExchange (ref leftNode.Next, rightNodeNext, rightNode) != rightNodeNext)
+				ListSearch (rightNode.Key, ref leftNode);
+			
+			return true;
+		}
+		
+		bool ListInsert (Node newNode)
+		{
+			int key = newNode.Key;
+			Node rightNode = null, leftNode = null;
+			
+			do {
+				rightNode = ListSearch (key, ref leftNode);
+				if (rightNode != tail && rightNode.Key == key)
+					return false;
+				
+				newNode.Next = rightNode;
+				if (Interlocked.CompareExchange (ref leftNode.Next, newNode, rightNode) == rightNode)
+					return true;
+			} while (true);
+		}
+		
+		bool ListFind (int key, out Node data)
+		{
+			Node rightNode = null, leftNode = null;
+			data = null;
+			
+			data = rightNode = ListSearch (key, ref leftNode);
+			
+			return rightNode != tail && rightNode.Key == key;
+		}
+	}
+}
+
+#endif
diff --git a/mcs/class/corlib/System.Collections.Concurrent/ConcurrentQueue.cs b/mcs/class/corlib/System.Collections.Concurrent/ConcurrentQueue.cs
index 5c4f192..2593381 100644
--- a/mcs/class/corlib/System.Collections.Concurrent/ConcurrentQueue.cs
+++ b/mcs/class/corlib/System.Collections.Concurrent/ConcurrentQueue.cs
@@ -22,7 +22,7 @@
 //
 //
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
 
 using System;
 using System.Threading;
@@ -32,7 +32,9 @@ using System.Runtime.Serialization;
 
 namespace System.Collections.Concurrent
 {
-	
+
+	[System.Diagnostics.DebuggerDisplay ("Count={Count}")]
+	[System.Diagnostics.DebuggerTypeProxy (typeof (CollectionDebuggerView<>))]
 	public class ConcurrentQueue<T> : IProducerConsumerCollection<T>, IEnumerable<T>, ICollection,
 	                                  IEnumerable
 	{
@@ -51,9 +53,9 @@ namespace System.Collections.Concurrent
 			tail = head;
 		}
 		
-		public ConcurrentQueue (IEnumerable<T> enumerable): this()
+		public ConcurrentQueue (IEnumerable<T> collection): this()
 		{
-			foreach (T item in enumerable)
+			foreach (T item in collection)
 				Enqueue (item);
 		}
 		
@@ -93,9 +95,9 @@ namespace System.Collections.Concurrent
 			return true;
 		}
 
-		public bool TryDequeue (out T value)
+		public bool TryDequeue (out T result)
 		{
-			value = default (T);
+			result = default (T);
 			bool advanced = false;
 
 			while (!advanced) {
@@ -111,10 +113,10 @@ namespace System.Collections.Concurrent
 							// If not then the linked list is mal formed, update tail
 							Interlocked.CompareExchange (ref tail, oldNext, oldTail);
 						}
-						value = default (T);
+						result = default (T);
 						return false;
 					} else {
-						value = oldNext.Value;
+						result = oldNext.Value;
 						advanced = Interlocked.CompareExchange (ref head, oldNext, oldHead) == oldHead;
 					}
 				}
@@ -125,15 +127,15 @@ namespace System.Collections.Concurrent
 			return true;
 		}
 		
-		public bool TryPeek (out T value)
+		public bool TryPeek (out T result)
 		{
 			if (IsEmpty) {
-				value = default (T);
+				result = default (T);
 				return false;
 			}
 			
 			Node first = head.Next;
-			value = first.Value;
+			result = first.Value;
 			return true;
 		}
 		
@@ -169,12 +171,12 @@ namespace System.Collections.Concurrent
 			CopyTo (dest, index);
 		}
 		
-		public void CopyTo (T[] dest, int index)
+		public void CopyTo (T[] array, int index)
 		{
 			IEnumerator<T> e = InternalGetEnumerator ();
 			int i = index;
 			while (e.MoveNext ()) {
-				dest [i++] = e.Current;
+				array [i++] = e.Current;
 			}
 		}
 		
diff --git a/mcs/class/corlib/System.Collections.Concurrent/ConcurrentSkipList.cs b/mcs/class/corlib/System.Collections.Concurrent/ConcurrentSkipList.cs
deleted file mode 100644
index 1c0b8ad..0000000
--- a/mcs/class/corlib/System.Collections.Concurrent/ConcurrentSkipList.cs
+++ /dev/null
@@ -1,429 +0,0 @@
-// ConcurrentSkipList.cs
-//
-// Copyright (c) 2008 Jérémie "Garuma" Laval
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-//
-//
-
-#if NET_4_0 || BOOTSTRAP_NET_4_0
-using System;
-using System.Threading;
-using System.Collections;
-using System.Collections.Generic;
-
-namespace System.Collections.Concurrent
-{
-
-	internal class ConcurrentSkipList<T> : IProducerConsumerCollection<T>
-	{
-		// Used for randomSeed
-		[ThreadStatic]
-		static Random r;
-		// Used in FindNodes and thus most others methods
-		// avoid heavy local array creation at each method call and use
-		// for thread locallity ThreadStatic attribute
-		[ThreadStatic]
-		static Node[] precedents;
-		[ThreadStatic]
-		static Node[] succedings;
-		[ThreadStatic]
-		static bool[] takenLocks;
-
-		int count = 0;
-
-		class Node
-		{
-			public readonly int      Key;
-			public T                 Value;
-			public readonly int      TopLayer;
-			public readonly Node[]   Nexts;
-			public volatile bool     Marked;
-			public volatile bool     FullyLinked;
-			public SpinLock  Lock;
-
-			public Node (int key, T value, int heightValue)
-			{
-				Key = key;
-				Value = value;
-				TopLayer = heightValue;
-				Nexts = new Node [heightValue + 1];
-				Lock = new SpinLock (true);
-				Marked = FullyLinked = false;
-			}
-		}
-
-		Node leftSentinel;
-		Node rightSentinel;
-
-		const int MaxHeight = 200;
-		uint randomSeed;
-
-		Func<T, int> GetKey;
-
-		public ConcurrentSkipList () : this ((value) => value.GetHashCode ())
-		{
-		}
-
-		public ConcurrentSkipList (IEqualityComparer<T> comparer)
-			: this ((value) => comparer.GetHashCode (value))
-		{
-		}
-
-		public ConcurrentSkipList(Func<T, int> hasher)
-		{
-			GetKey = hasher;
-			Init ();
-		}
-
-		void Init ()
-		{
-			leftSentinel = new Node (int.MinValue, default (T), MaxHeight);
-			rightSentinel = new Node (int.MaxValue, default (T), MaxHeight);
-
-			for (int i = 0; i < MaxHeight; i++) {
-				leftSentinel.Nexts [i] = rightSentinel;
-			}
-			// The or ensures that randomSeed != 0
-			randomSeed = ((uint)Math.Abs (Next())) | 0x0100;
-		}
-
-		public bool TryAdd (T value)
-		{
-			if (value == null)
-				throw new ArgumentNullException ("value");
-
-			CleanArrays ();
-			int topLayer = GetRandomLevel ();
-
-			int v = GetKey (value);
-
-			while (true) {
-				int found = FindNode (v, precedents, succedings);
-				if (found != -1) {
-					// A node with the same key already exists
-					Node nodeFound = succedings [found];
-					if (!nodeFound.Marked) {
-						SpinWait sw = new SpinWait ();
-						while (!nodeFound.FullyLinked)
-							sw.SpinOnce ();
-
-						return false;
-					}
-					continue;
-				}
-				int highestLocked = -1;
-				try {
-					bool valid = LockNodes (topLayer, ref highestLocked, precedents, succedings,
-					                        (layer, pred, succ) => !pred.Marked && !succ.Marked && pred.Nexts [layer] == succ);
-					if (!valid)
-						continue;
-
-					Node newNode = new Node (v, value, topLayer);
-					for (int layer = 0; layer <= topLayer; layer++) {
-						newNode.Nexts [layer] = succedings [layer];
-						precedents [layer].Nexts [layer] = newNode;
-					}
-					newNode.FullyLinked = true;
-				} finally {
-					Unlock (precedents, takenLocks, highestLocked);
-				}
-				Interlocked.Increment (ref count);
-				return true;
-			}
-		}
-
-		bool IProducerConsumerCollection<T>.TryTake (out T value)
-		{
-			throw new NotSupportedException ();
-		}
-
-		public T[] ToArray ()
-		{
-			int countSnapshot = count;
-			T[] temp = new T [countSnapshot];
-
-			CopyTo(temp, 0);
-
-			return temp;
-		}
-
-		public void CopyTo (T[] array, int startIndex)
-		{
-			IEnumerator<T> e = GetInternalEnumerator ();
-			for (int i = startIndex; i < array.Length; i++) {
-				if (!e.MoveNext ())
-					return;
-				array [i] = e.Current;
-			}
-			e.Dispose ();
-		}
-
-		void ICollection.CopyTo (Array array, int startIndex)
-		{
-			T[] temp = array as T[];
-			if (temp == null)
-				return;
-
-			CopyTo (temp, startIndex);
-		}
-
-		object ICollection.SyncRoot {
-			get {
-				return this;
-			}
-		}
-
-		bool ICollection.IsSynchronized {
-			get {
-				return true;
-			}
-		}
-
-		public bool Remove (T value)
-		{
-			if (value == null)
-				throw new ArgumentNullException ("value");
-
-			CleanArrays();
-			Node toDelete = null;
-			bool isMarked = false;
-			int topLayer = -1;
-			int v = GetKey (value);
-
-			while (true) {
-				int found = FindNode (v, precedents, succedings);
-				bool taken = false;
-				int highestLocked = -1;
-
-				if (isMarked || (found != -1 && OkToDelete (succedings [found], found))) {
-					// If not marked then logically delete the node
-					try {
-						if (!isMarked) {
-							toDelete = succedings [found];
-							topLayer = toDelete.TopLayer;
-
-							toDelete.Lock.Enter (ref taken);
-							// Now that we have the lock, check if the node hasn't already been marked
-							if (toDelete.Marked)
-								return false;
-
-							toDelete.Marked = true;
-							isMarked = true;
-						}
-
-						bool valid = LockNodes (topLayer, ref highestLocked, precedents, succedings,
-						                        (layer, pred, succ) => !pred.Marked && pred.Nexts [layer] == succ);
-						if (!valid)
-							continue;
-
-						for (int layer = topLayer; layer >= 0; layer--)
-							precedents [layer].Nexts [layer] = toDelete.Nexts [layer];
-					} finally {
-						if (taken)
-							toDelete.Lock.Exit ();
-						Unlock (precedents, takenLocks, highestLocked);
-					}
-
-					Interlocked.Decrement (ref count);
-					return true;
-				} else {
-					return false;
-				}
-			}
-		}
-
-		public bool Contains (T value)
-		{
-			if (value == null)
-				throw new ArgumentNullException ("value");
-
-			return ContainsFromHash (GetKey (value));
-		}
-
-		internal bool ContainsFromHash (int hash)
-		{
-			CleanArrays ();
-			int found = FindNode (hash, precedents, succedings);
-			return found != -1 && succedings [found].FullyLinked && !succedings [found].Marked;
-		}
-
-		internal bool GetFromHash (int hash, out T value)
-		{
-			value = default (T);
-			CleanArrays ();
-			// We are blindly supposing that the hash is correct
-			// i.e. I trust myself :-)
-			int found = FindNode (hash, precedents, succedings);
-			if (found == -1)
-				return false;
-
-			bool taken = false;
-			Node node = succedings [found];
-
-			try {
-				node.Lock.Enter (ref taken);
-
-				if (node.FullyLinked && !node.Marked) {
-					value = node.Value;
-					return true;
-				}
-			} finally {
-				if (taken)
-					node.Lock.Exit ();
-			}
-
-			return false;
-		}
-
-		public int Count {
-			get {
-				return count;
-			}
-		}
-
-		IEnumerator<T> IEnumerable<T>.GetEnumerator ()
-		{
-			return GetInternalEnumerator ();
-		}
-
-		IEnumerator IEnumerable.GetEnumerator ()
-		{
-			return GetInternalEnumerator ();
-		}
-
-		IEnumerator<T> GetInternalEnumerator ()
-		{
-			Node curr = leftSentinel;
-			while ((curr = curr.Nexts [0]) != rightSentinel) {
-				// If there is an Add operation ongoing we wait a little
-				// Possible optimization : use a helping scheme
-				SpinWait sw = new SpinWait ();
-				while (!curr.FullyLinked)
-					sw.SpinOnce ();
-
-				yield return curr.Value;
-			}
-		}
-
-		void Unlock (Node[] preds, bool[] takenLocks, int highestLocked)
-		{
-			for (int layer = 0; layer <= highestLocked; layer++)
-				if (takenLocks [layer])
-					preds [layer].Lock.Exit ();
-		}
-
-		bool LockNodes (int topLayer, ref int highestLocked, Node[] preds, Node[] succs, Func<int, Node, Node, bool> validityTest)
-		{
-			Node pred, succ, prevPred = null;
-			bool valid = true;
-
-			for (int layer = 0; valid && (layer <= topLayer); layer++) {
-				pred = preds [layer];
-				succ = succs [layer];
-				takenLocks[layer] = false;
-
-				if (pred != prevPred) {
-					// Possible optimization : limit topLayer to the first refused lock
-					pred.Lock.Enter (ref takenLocks[layer]);
-					highestLocked = layer;
-					prevPred = pred;
-				}
-
-				valid = validityTest (layer, pred, succ);
-			}
-
-			return valid;
-		}
-
-		int FindNode (int v, Node[] preds, Node[] succs)
-		{
-			// With preds and succs we record the path we use for searching v
-			if (preds.Length != MaxHeight || succs.Length != MaxHeight)
-				throw new Exception ("preds or succs don't have the  good length");
-
-			int found = -1;
-			Node pred = leftSentinel;
-
-			// We start at the higher layer
-			for (int layer = MaxHeight - 1; layer >= 0; layer--) {
-				Node curr = pred.Nexts [layer];
-				// In the current layer we find the best position, then the operation will continue on the
-				// layer just beneath
-				while (v > curr.Key) {
-					pred = curr;
-					curr = curr.Nexts [layer];
-				}
-				if (found == -1 && v == curr.Key)
-					found = layer;
-				preds [layer] = pred;
-				succs [layer] = curr;
-			}
-
-			return found;
-		}
-
-		bool OkToDelete (Node candidate, int found)
-		{
-			return candidate.FullyLinked && candidate.TopLayer == found && !candidate.Marked;
-		}
-
-		// Taken from Doug Lea's code released in the public domain
-		int GetRandomLevel ()
-		{
-			uint x = randomSeed;
-			x ^= x << 13;
-			x ^= x >> 17;
-			x ^= x << 5;
-			randomSeed = x;
-			if ((x & 0x80000001) != 0) // test highest and lowest bits
-				return 0;
-			int level = 1;
-			while (((x >>= 1) & 1) != 0) ++level;
-			return level;
-		}
-
-		void CleanArrays ()
-		{
-			// If one is null, the others too
-			if (succedings == null) {
-				succedings = new Node [MaxHeight];
-				precedents = new Node [MaxHeight];
-				takenLocks = new bool [MaxHeight];
-
-				return;
-			}
-
-			// Hopefully these are more optimized than a bare for loop
-			// (I suppose it uses memset internally)
-			Array.Clear (precedents, 0, precedents.Length);
-			Array.Clear (succedings, 0, succedings.Length);
-			Array.Clear (takenLocks, 0, takenLocks.Length);
-		}
-
-		int Next ()
-		{
-		  if (r == null)
-			r = new Random ();
-
-		  return r.Next ();
-		}
-	}
-}
-#endif
diff --git a/mcs/class/corlib/System.Collections.Concurrent/ConcurrentStack.cs b/mcs/class/corlib/System.Collections.Concurrent/ConcurrentStack.cs
index edc3c5c..920435b 100644
--- a/mcs/class/corlib/System.Collections.Concurrent/ConcurrentStack.cs
+++ b/mcs/class/corlib/System.Collections.Concurrent/ConcurrentStack.cs
@@ -33,7 +33,8 @@ using System.Runtime.Serialization;
 namespace System.Collections.Concurrent
 {
 	
-	
+	[System.Diagnostics.DebuggerDisplay ("Count = {Count}")]
+	[System.Diagnostics.DebuggerTypeProxy (typeof (CollectionDebuggerView<>))]
 	public class ConcurrentStack<T> : IProducerConsumerCollection<T>, IEnumerable<T>,
 	                                  ICollection, IEnumerable
 	{
@@ -51,9 +52,9 @@ namespace System.Collections.Concurrent
 		{
 		}
 		
-		public ConcurrentStack (IEnumerable<T> enumerable)
+		public ConcurrentStack (IEnumerable<T> collection)
 		{
-			foreach (T item in enumerable) 
+			foreach (T item in collection) 
 				Push (item);
 		}
 		
@@ -63,10 +64,10 @@ namespace System.Collections.Concurrent
 			return true;
 		}
 		
-		public void Push (T element)
+		public void Push (T item)
 		{
 			Node temp = new Node ();
-			temp.Value = element;
+			temp.Value = item;
 			do {
 			  temp.Next = head;
 			} while (Interlocked.CompareExchange (ref head, temp, temp.Next) != temp.Next);
@@ -74,19 +75,19 @@ namespace System.Collections.Concurrent
 			Interlocked.Increment (ref count);
 		}
 
-		public void PushRange (T[] values)
+		public void PushRange (T[] items)
 		{
-			PushRange (values, 0, values.Length);
+			PushRange (items, 0, items.Length);
 		}
 		
-		public void PushRange (T[] values, int start, int length)
+		public void PushRange (T[] items, int startIndex, int count)
 		{
 			Node insert = null;
 			Node first = null;
 			
-			for (int i = start; i < length; i++) {
+			for (int i = startIndex; i < count; i++) {
 				Node temp = new Node ();
-				temp.Value = values[i];
+				temp.Value = items[i];
 				temp.Next = insert;
 				insert = temp;
 				
@@ -98,33 +99,33 @@ namespace System.Collections.Concurrent
 				first.Next = head;
 			} while (Interlocked.CompareExchange (ref head, insert, first.Next) != first.Next);
 			
-			Interlocked.Add (ref count, length);
+			Interlocked.Add (ref count, count);
 		}
 		
-		public bool TryPop (out T value)
+		public bool TryPop (out T result)
 		{
 			Node temp;
 			do {
 				temp = head;
 				// The stak is empty
 				if (temp == null) {
-					value = default (T);
+					result = default (T);
 					return false;
 				}
 			} while (Interlocked.CompareExchange (ref head, temp.Next, temp) != temp);
 			
 			Interlocked.Decrement (ref count);
 			
-			value = temp.Value;
+			result = temp.Value;
 			return true;
 		}
 
-		public int TryPopRange (T[] values)
+		public int TryPopRange (T[] items)
 		{
-			return TryPopRange (values, 0, values.Length);
+			return TryPopRange (items, 0, items.Length);
 		}
 
-		public int TryPopRange (T[] values, int startIndex, int count)
+		public int TryPopRange (T[] items, int startIndex, int count)
 		{
 			Node temp;
 			Node end;
@@ -143,21 +144,21 @@ namespace System.Collections.Concurrent
 			
 			int i;
 			for (i = startIndex; i < count && temp != null; i++) {
-				values[i] = temp.Value;
+				items[i] = temp.Value;
 				temp = temp.Next;
 			}
 			
 			return i - 1;
 		}
 		
-		public bool TryPeek (out T value)
+		public bool TryPeek (out T result)
 		{
 			Node myHead = head;
 			if (myHead == null) {
-				value = default (T);
+				result = default (T);
 				return false;
 			}
-			value = myHead.Value;
+			result = myHead.Value;
 			return true;
 		}
 		
@@ -198,12 +199,12 @@ namespace System.Collections.Concurrent
 			CopyTo (dest, index);
 		}
 		
-		public void CopyTo (T[] dest, int index)
+		public void CopyTo (T[] array, int index)
 		{
 			IEnumerator<T> e = InternalGetEnumerator ();
 			int i = index;
 			while (e.MoveNext ()) {
-				dest[i++] = e.Current;
+				array[i++] = e.Current;
 			}
 		}
 		
diff --git a/mcs/class/corlib/System.Collections.Concurrent/IProducerConsumerCollection.cs b/mcs/class/corlib/System.Collections.Concurrent/IProducerConsumerCollection.cs
index 3e63272..4f991e2 100644
--- a/mcs/class/corlib/System.Collections.Concurrent/IProducerConsumerCollection.cs
+++ b/mcs/class/corlib/System.Collections.Concurrent/IProducerConsumerCollection.cs
@@ -22,7 +22,7 @@
 //
 //
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
 using System;
 using System.Collections;
 using System.Collections.Generic;
diff --git a/mcs/class/corlib/System.Collections.Concurrent/OrderablePartitioner.cs b/mcs/class/corlib/System.Collections.Concurrent/OrderablePartitioner.cs
index 9b2c8a4..b1368dd 100644
--- a/mcs/class/corlib/System.Collections.Concurrent/OrderablePartitioner.cs
+++ b/mcs/class/corlib/System.Collections.Concurrent/OrderablePartitioner.cs
@@ -24,11 +24,11 @@
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
 
+#if NET_4_0
+
 using System;
 using System.Collections.Generic;
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0
-
 namespace System.Collections.Concurrent
 {
 	public abstract class OrderablePartitioner<TSource> : Partitioner<TSource>
@@ -59,10 +59,11 @@ namespace System.Collections.Concurrent
 			  = GetOrderablePartitions (partitionCount);
 			
 			for (int i = 0; i < enumerators.Count; i++)
-				temp[i] = GetProxyEnumerator (enumerators[i]);
+				temp[i] = new ProxyEnumerator (enumerators[i]);
 			
 			return temp;
 		}
+
 		
 		IEnumerator<TSource> GetProxyEnumerator (IEnumerator<KeyValuePair<long, TSource>> enumerator)
 		{
@@ -80,7 +81,6 @@ namespace System.Collections.Concurrent
 			return null;
 		}
 
-		
 		public bool KeysOrderedInEachPartition {
 			get {
 				return keysOrderedInEachPartition;
@@ -98,6 +98,47 @@ namespace System.Collections.Concurrent
 				return keysNormalized;
 			}
 		}
+
+		class ProxyEnumerator : IEnumerator<TSource>, IDisposable
+		{
+			IEnumerator<KeyValuePair<long, TSource>> internalEnumerator;
+
+			internal ProxyEnumerator (IEnumerator<KeyValuePair<long, TSource>> enumerator)
+			{
+				internalEnumerator = enumerator;
+			}
+
+			public void Dispose ()
+			{
+				internalEnumerator.Dispose ();
+			}
+
+			public bool MoveNext ()
+			{
+				if (!internalEnumerator.MoveNext ())
+					return false;
+
+				Current = internalEnumerator.Current.Value;
+
+				return true;
+			}
+
+			public void Reset ()
+			{
+				internalEnumerator.Reset ();
+			}
+
+			object IEnumerator.Current {
+				get {
+					return Current;
+				}
+			}
+
+			public TSource Current {
+				get;
+				private set;
+			}
+		}
 	}
 }
 #endif
diff --git a/mcs/class/corlib/System.Collections.Concurrent/Partitioner.cs b/mcs/class/corlib/System.Collections.Concurrent/Partitioner.cs
index 03ca175..92b5665 100644
--- a/mcs/class/corlib/System.Collections.Concurrent/Partitioner.cs
+++ b/mcs/class/corlib/System.Collections.Concurrent/Partitioner.cs
@@ -24,13 +24,15 @@
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
 
+#if NET_4_0
+
 using System;
 using System.Collections.Generic;
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0
-
 namespace System.Collections.Concurrent
 {
+	using Partitioners;
+
 	public static class Partitioner
 	{
 		public static OrderablePartitioner<TSource> Create<TSource> (IEnumerable<TSource> source)
@@ -42,44 +44,59 @@ namespace System.Collections.Concurrent
 			return new EnumerablePartitioner<TSource> (source);
 		}
 		
-		public static OrderablePartitioner<TSource> Create<TSource> (TSource[] source, bool loadBalance)
+		public static OrderablePartitioner<TSource> Create<TSource> (TSource[] array, bool loadBalance)
 		{
-			return Create ((IList<TSource>)source, loadBalance);
+			return Create ((IList<TSource>)array, loadBalance);
 		}
 		
-		public static OrderablePartitioner<TSource> Create<TSource> (IList<TSource> source, bool loadBalance)
+		public static OrderablePartitioner<TSource> Create<TSource> (IList<TSource> list, bool loadBalance)
 		{
-			return new ListPartitioner<TSource> (source);
+			return new ListPartitioner<TSource> (list);
 		}
 		
-		[MonoTODO("What range size is supposed to be in context and what the result returned looks like")]
 		public static OrderablePartitioner<Tuple<int, int>> Create (int fromInclusive,
-		                                                             int toExclusive)
+		                                                            int toExclusive)
 		{
-			return Create (fromInclusive, toExclusive, 1);
+			// This formula that is somewhat non-straighforward was guessed based on MS output
+			int rangeSize = (toExclusive - fromInclusive) / (Environment.ProcessorCount * 3);
+			if (rangeSize < 1)
+				rangeSize = 1;
+
+			return Create (fromInclusive, toExclusive, rangeSize);
 		}
-		
-		[MonoTODO("What range size is supposed to be in context and what the result returned looks like")]
+
 		public static OrderablePartitioner<Tuple<int, int>> Create (int fromInclusive,
-		                                                             int toExclusive,
-		                                                             int rangeSize)
+		                                                            int toExclusive,
+		                                                            int rangeSize)
 		{
-			throw new NotImplementedException ();
+			if (fromInclusive >= toExclusive)
+				throw new ArgumentOutOfRangeException ("toExclusive");
+			if (rangeSize <= 0)
+				throw new ArgumentOutOfRangeException ("rangeSize");
+
+			return new UserRangePartitioner (fromInclusive, toExclusive, rangeSize);
 		}
-		
-		[MonoTODO("What range size is supposed to be in context and what the result returned looks like")]
+
 		public static OrderablePartitioner<Tuple<long, long>> Create (long fromInclusive,
-		                                                               long toExclusive)
+		                                                              long toExclusive)
 		{
-			return Create (fromInclusive, toExclusive, 1);
+			long rangeSize = (toExclusive - fromInclusive) / (Environment.ProcessorCount * 3);
+			if (rangeSize < 1)
+				rangeSize = 1;
+
+			return Create (fromInclusive, toExclusive, rangeSize);
 		}
-		
-		[MonoTODO("What range size is supposed to be in context and what the result returned looks like")]
+
 		public static OrderablePartitioner<Tuple<long, long>> Create (long fromInclusive,
-		                                                               long toExclusive,
-		                                                               long rangeSize)
+		                                                              long toExclusive,
+		                                                              long rangeSize)
 		{
-			throw new NotImplementedException ();
+			if (rangeSize <= 0)
+				throw new ArgumentOutOfRangeException ("rangeSize");
+			if (fromInclusive >= toExclusive)
+				throw new ArgumentOutOfRangeException ("toExclusive");
+
+			return new UserLongRangePartitioner (fromInclusive, toExclusive, rangeSize);
 		}
 	}
 	
diff --git a/mcs/class/corlib/System.Collections.Concurrent/Partitioners/EnumerablePartitioner.cs b/mcs/class/corlib/System.Collections.Concurrent/Partitioners/EnumerablePartitioner.cs
deleted file mode 100644
index 23df7f7..0000000
--- a/mcs/class/corlib/System.Collections.Concurrent/Partitioners/EnumerablePartitioner.cs
+++ /dev/null
@@ -1,116 +0,0 @@
-// 
-// EnumerablePartitioner.cs
-//  
-// Author:
-//       Jérémie "Garuma" Laval <jeremie.laval at gmail.com>
-// 
-// Copyright (c) 2009 Jérémie "Garuma" Laval
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-#if NET_4_0 || BOOTSTRAP_NET_4_0
-
-using System;
-using System.Threading.Tasks;
-using System.Collections.Generic;
-
-namespace System.Collections.Concurrent
-{
-	// Represent a chunk partitioner
-	internal class EnumerablePartitioner<T> : OrderablePartitioner<T>
-	{
-		IEnumerable<T> source;
-		
-		const int InitialPartitionSize = 1;
-		const int PartitionMultiplier = 2;
-		
-		int initialPartitionSize;
-		int partitionMultiplier;
-		
-		int index = 0;
-		readonly object syncLock = new object ();
-		
-		public EnumerablePartitioner (IEnumerable<T> source)
-			: this (source, InitialPartitionSize, PartitionMultiplier)
-		{
-
-		}
-		
-		// This is used to get striped partitionning (for Take and Skip for instance
-		public EnumerablePartitioner (IEnumerable<T> source, int initialPartitionSize, int partitionMultiplier)
-			 : base (true, false, true)
-		{
-			this.source = source;
-			this.initialPartitionSize = initialPartitionSize;
-			this.partitionMultiplier = partitionMultiplier;
-		}
-		
-		public override IList<IEnumerator<KeyValuePair<long, T>>> GetOrderablePartitions (int partitionCount)
-		{
-			if (partitionCount <= 0)
-				throw new ArgumentOutOfRangeException ("partitionCount");
-			
-			IEnumerator<KeyValuePair<long, T>>[] enumerators
-				= new IEnumerator<KeyValuePair<long, T>>[partitionCount];
-			
-			IEnumerator<T> src = source.GetEnumerator ();
-			
-			for (int i = 0; i < enumerators.Length; i++) {
-				enumerators[i] = GetPartitionEnumerator (src);
-			}
-			
-			return enumerators;
-		}
-		
-		IEnumerator<KeyValuePair<long, T>> GetPartitionEnumerator (IEnumerator<T> src)
-		{
-			int count = initialPartitionSize;
-			List<T> list = new List<T> ();
-			
-			while (true) {
-				list.Clear ();
-				int ind = -1;
-				
-				lock (syncLock) {
-					ind = index;
-					
-					for (int i = 0; i < count; i++) {
-						if (!src.MoveNext ()) {
-							if (list.Count == 0)
-								yield break;
-							else
-								break;
-						}
-						
-						list.Add (src.Current);
-						index++;
-					}					
-				}
-				
-				
-				
-				for (int i = 0; i < list.Count; i++)
-					yield return new KeyValuePair<long, T> (ind + i, list[i]);
-				
-				count *= partitionMultiplier;
-			}
-		}                                  
-	}
-}
-#endif
diff --git a/mcs/class/corlib/System.Collections.Concurrent/Partitioners/ListPartitioner.cs b/mcs/class/corlib/System.Collections.Concurrent/Partitioners/ListPartitioner.cs
deleted file mode 100644
index 7512b37..0000000
--- a/mcs/class/corlib/System.Collections.Concurrent/Partitioners/ListPartitioner.cs
+++ /dev/null
@@ -1,111 +0,0 @@
-// 
-// ListPartitioner.cs
-//  
-// Author:
-//       Jérémie "Garuma" Laval <jeremie.laval at gmail.com>
-// 
-// Copyright (c) 2009 Jérémie "Garuma" Laval
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-using System;
-using System.Collections.Generic;
-
-#if NET_4_0 || BOOTSTRAP_NET_4_0
-
-namespace System.Collections.Concurrent
-{
-	// Represent a Range partitioner
-	internal class ListPartitioner<T> : OrderablePartitioner<T>
-	{
-		IList<T> source;
-		readonly bool chunking = Environment.GetEnvironmentVariable ("PLINQ_PARTITIONING_HINT") == "chunking";
-		
-		public ListPartitioner (IList<T> source) : base (true, true, true)
-		{
-			this.source = source;
-		}
-		
-		public override IList<IEnumerator<KeyValuePair<long, T>>> GetOrderablePartitions (int partitionCount)
-		{
-			if (partitionCount <= 0)
-				throw new ArgumentOutOfRangeException ("partitionCount");
-			
-			IEnumerator<KeyValuePair<long, T>>[] enumerators
-				= new IEnumerator<KeyValuePair<long, T>>[partitionCount];
-			
-			int count = source.Count / partitionCount;
-			if (count <= 1)
-				count = 1;
-			
-			for (int i = 0; i < enumerators.Length; i++) {
-				if (chunking) {
-					const int step = 64;
-					enumerators[i] = GetEnumeratorForRange (i * step, enumerators.Length, source.Count, step);
-					continue;
-				}
-				
-				if (i != enumerators.Length - 1)
-					enumerators[i] = GetEnumeratorForRange (i * count, i * count + count);
-				else
-					enumerators[i] = GetEnumeratorForRange (i * count, source.Count);
-			}
-			
-			return enumerators;
-		}
-		
-		IEnumerator<KeyValuePair<long, T>> GetEnumeratorForRange (int startIndex, int lastIndex)
-		{
-			if (startIndex >= source.Count)
-			  return GetEmpty ();
-			
-			return GetEnumeratorForRangeInternal (startIndex, lastIndex);
-		}
-		
-		IEnumerator<KeyValuePair<long, T>> GetEnumeratorForRange (int startIndex, int stride, int count, int step)
-		{
-			if (startIndex >= source.Count)
-			  return GetEmpty ();
-			
-			return GetEnumeratorForRangeInternal (startIndex, stride, count, step);
-		}
-
-		IEnumerator<KeyValuePair<long, T>> GetEmpty ()
-		{
-			yield break;
-		}
-		
-		IEnumerator<KeyValuePair<long, T>> GetEnumeratorForRangeInternal (int startIndex, int lastIndex)
-		{	
-			for (int i = startIndex; i < lastIndex; i++) {
-				yield return new KeyValuePair<long, T> (i, source[i]);
-			}
-		}
-		
-		IEnumerator<KeyValuePair<long, T>> GetEnumeratorForRangeInternal (int startIndex, int stride, int count, int step)
-		{
-			for (int i = startIndex; i < count; i += stride * step) {
-				for (int j = i; j < i + step && j < count; j++) {
-					yield return new KeyValuePair<long, T> (j, source[j]);
-				}
-			}
-		}
-	}
-}
-#endif
diff --git a/mcs/class/corlib/System.Collections.Concurrent/SplitOrderedList.cs b/mcs/class/corlib/System.Collections.Concurrent/SplitOrderedList.cs
index 58b9137..8399ebe 100644
--- a/mcs/class/corlib/System.Collections.Concurrent/SplitOrderedList.cs
+++ b/mcs/class/corlib/System.Collections.Concurrent/SplitOrderedList.cs
@@ -22,7 +22,7 @@
 //
 //
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0 || INSIDE_SYSTEM_WEB
 
 using System;
 using System.Threading;
@@ -32,65 +32,57 @@ using System.Runtime.Serialization;
 
 namespace System.Collections.Concurrent
 {
-	internal class SplitOrderedList<T>
+	internal class SplitOrderedList<TKey, T>
 	{
-		static readonly byte[] reverseTable = {
-			0, 128, 64, 192, 32, 160, 96, 224, 16, 144, 80, 208, 48, 176, 112, 240, 8, 136, 72, 200, 40, 168, 104, 232, 24, 152, 88, 216, 56, 184, 120, 248, 4, 132, 68, 196, 36, 164, 100, 228, 20, 148, 84, 212, 52, 180, 116, 244, 12, 140, 76, 204, 44, 172, 108, 236, 28, 156, 92, 220, 60, 188, 124, 252, 2, 130, 66, 194, 34, 162, 98, 226, 18, 146, 82, 210, 50, 178, 114, 242, 10, 138, 74, 202, 42, 170, 106, 234, 26, 154, 90, 218, 58, 186, 122, 250, 6, 134, 70, 198, 38, 166, 102, 230, 22, 150, 86, 214, 54, 182, 118, 246, 14, 142, 78, 206, 46, 174, 110, 238, 30, 158, 94, 222, 62, 190, 126, 254, 1, 129, 65, 193, 33, 161, 97, 225, 17, 145, 81, 209, 49, 177, 113, 241, 9, 137, 73, 201, 41, 169, 105, 233, 25, 153, 89, 217, 57, 185, 121, 249, 5, 133, 69, 197, 37, 165, 101, 229, 21, 149, 85, 213, 53, 181, 117, 245, 13, 141, 77, 205, 45, 173, 109, 237, 29, 157, 93, 221, 61, 189, 125, 253, 3, 131, 67, 195, 35, 163, 99, 227, 19, 147, 83, 211, 51, 179, 115, 243, 11, 139, 75, 203, 43, 171, 107, 235, 27, 155, 91, 219, 59, 187, 123, 251, 7, 135, 71, 199, 39, 167, 103, 231, 23, 151, 87, 215, 55, 183, 119, 247, 15, 143, 79, 207, 47, 175, 111, 239, 31, 159, 95, 223, 63, 191, 127, 255
-		};
-
-		static readonly byte[] logTable = {
-			0xFF, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
-		};
-
-		class Node 
+		class Node
 		{
 			public readonly bool Marked;
-			public readonly uint Key;
+			public readonly ulong Key;
+			public readonly TKey SubKey;
 			public T Data;
-			
 			public Node Next;
 			
-			public Node (uint key, T data)
-				: this (false)
+			public Node (ulong key, TKey subKey, T data)
 			{
 				this.Key = key;
+				this.SubKey = subKey;
 				this.Data = data;
 			}
-			
-			protected Node (bool marked)
+
+			// Used to create dummy node
+			public Node (ulong key)
 			{
-				this.Marked = marked;
+				this.Key = key;
+				this.Data = default (T);
 			}
-		}
-		
-		class MarkedNode : Node
-		{
-			public MarkedNode (Node wrapped) : base (true)
+
+			// Used to create marked node
+			public Node (Node wrapped)
 			{
-				Next = wrapped;
+				this.Marked = true;
+				this.Next = wrapped;
 			}
 		}
 
 		const int MaxLoad = 5;
-		const int SegmentSize = 50;
-
-		[ThreadStatic]
-		Node[] segmentCache;
+		const uint BucketSize = 512;
 
 		Node head;
 		Node tail;
-		
-		Node[][] buckets = new Node[10][];
+
+		Node[] buckets = new Node [BucketSize];
 		int count;
-		int size = 1;
+		int size = 2;
 
-		ManualResetEventSlim mres = new ManualResetEventSlim (true);
-		SpinLock mresLock = new SpinLock ();
-		
-		public SplitOrderedList ()
+		SimpleRwLock slim = new SimpleRwLock ();
+
+		readonly IEqualityComparer<TKey> comparer;
+
+		public SplitOrderedList (IEqualityComparer<TKey> comparer)
 		{
-			head = new Node (0, default (T));
-			tail = new Node (uint.MaxValue, default (T));
+			this.comparer = comparer;
+			head = new Node (0);
+			tail = new Node (ulong.MaxValue);
 			head.Next = tail;
 			SetBucket (0, head);
 		}
@@ -101,10 +93,10 @@ namespace System.Collections.Concurrent
 			}
 		}
 
-		public T InsertOrUpdate (uint key, Func<T> addGetter, Func<T, T> updateGetter)
+		public T InsertOrUpdate (uint key, TKey subKey, Func<T> addGetter, Func<T, T> updateGetter)
 		{
 			Node current;
-			bool result = InsertInternal (key, default (T), addGetter, out current);
+			bool result = InsertInternal (key, subKey, default (T), addGetter, out current);
 
 			if (result)
 				return current.Data;
@@ -112,32 +104,45 @@ namespace System.Collections.Concurrent
 			// FIXME: this should have a CAS-like behavior
 			return current.Data = updateGetter (current.Data);
 		}
+
+		public T InsertOrUpdate (uint key, TKey subKey, T addValue, T updateValue)
+		{
+			Node current;
+			if (InsertInternal (key, subKey, addValue, null, out current))
+				return current.Data;
+
+			// FIXME: this should have a CAS-like behavior
+			return current.Data = updateValue;
+		}
 		
-		public bool Insert (uint key, T data)
+		public bool Insert (uint key, TKey subKey, T data)
 		{
 			Node current;
-			return InsertInternal (key, data, null, out current);
+			return InsertInternal (key, subKey, data, null, out current);
 		}
 
-		public T InsertOrGet (uint key, T data, Func<T> dataCreator)
+		public T InsertOrGet (uint key, TKey subKey, T data, Func<T> dataCreator)
 		{
 			Node current;
-			InsertInternal (key, data, dataCreator, out current);
+			InsertInternal (key, subKey, data, dataCreator, out current);
 			return current.Data;
 		}
 
-		bool InsertInternal (uint key, T data, Func<T> dataCreator, out Node current)
+		bool InsertInternal (uint key, TKey subKey, T data, Func<T> dataCreator, out Node current)
 		{
-			Node node = new Node (ComputeRegularKey (key), data);
+			Node node = new Node (ComputeRegularKey (key), subKey, data);
+
 			uint b = key % (uint)size;
-			
-			if (GetBucket (b) == null)
-				InitializeBucket (b);
-			if (!ListInsert (node, GetBucket (b), out current, dataCreator))
+			Node bucket;
+
+			if ((bucket = GetBucket (b)) == null)
+				bucket = InitializeBucket (b);
+
+			if (!ListInsert (node, bucket, out current, dataCreator))
 				return false;
 
 			int csize = size;
-			if (Interlocked.Increment (ref count) / csize > MaxLoad)
+			if (Interlocked.Increment (ref count) / csize > MaxLoad && (csize & 0x40000000) == 0)
 				Interlocked.CompareExchange (ref size, 2 * csize, csize);
 
 			current = node;
@@ -145,16 +150,17 @@ namespace System.Collections.Concurrent
 			return true;
 		}
 		
-		public bool Find (uint key, out T data)
+		public bool Find (uint key, TKey subKey, out T data)
 		{
 			Node node;
 			uint b = key % (uint)size;
 			data = default (T);
+			Node bucket;
 
-			if (GetBucket (b) == null)
-				InitializeBucket (b);
+			if ((bucket = GetBucket (b)) == null)
+				bucket = InitializeBucket (b);
 
-			if (!ListFind (ComputeRegularKey (key), GetBucket (b), out node))
+			if (!ListFind (ComputeRegularKey (key), subKey, bucket, out node))
 				return false;
 
 			data = node.Data;
@@ -162,15 +168,16 @@ namespace System.Collections.Concurrent
 			return !node.Marked;
 		}
 
-		public bool CompareExchange (uint key, T data, Func<T, bool> check)
+		public bool CompareExchange (uint key, TKey subKey, T data, Func<T, bool> check)
 		{
 			Node node;
 			uint b = key % (uint)size;
+			Node bucket;
 
-			if (GetBucket (b) == null)
-				InitializeBucket (b);
+			if ((bucket = GetBucket (b)) == null)
+				bucket = InitializeBucket (b);
 
-			if (!ListFind (ComputeRegularKey (key), GetBucket (b), out node))
+			if (!ListFind (ComputeRegularKey (key), subKey, bucket, out node))
 				return false;
 
 			if (!check (node.Data))
@@ -181,13 +188,15 @@ namespace System.Collections.Concurrent
 			return true;
 		}
 
-		public bool Delete (uint key, out T data)
+		public bool Delete (uint key, TKey subKey, out T data)
 		{
 			uint b = key % (uint)size;
-			if (GetBucket (b) == null)
-				InitializeBucket (b);
+			Node bucket;
 
-			if (!ListDelete (GetBucket (b), ComputeRegularKey (key), out data))
+			if ((bucket = GetBucket (b)) == null)
+				bucket = InitializeBucket (b);
+
+			if (!ListDelete (bucket, ComputeRegularKey (key), subKey, out data))
 				return false;
 
 			Interlocked.Decrement (ref count);
@@ -209,22 +218,24 @@ namespace System.Collections.Concurrent
 			}
 		}
 
-		void InitializeBucket (uint b)
+		Node InitializeBucket (uint b)
 		{
 			Node current;
 			uint parent = GetParent (b);
-			if (GetBucket (parent) == null)
-				InitializeBucket ((uint)parent);
+			Node bucket;
+
+			if ((bucket = GetBucket (parent)) == null)
+				bucket = InitializeBucket (parent);
 
-			Node dummy = new Node (ComputeDummyKey (b), default (T));
-			if (!ListInsert (dummy, GetBucket (parent), out current, null))
-				dummy = current;
+			Node dummy = new Node (ComputeDummyKey (b));
+			if (!ListInsert (dummy, bucket, out current, null))
+				return current;
 
-			SetBucket (b, dummy);
+			return SetBucket (b, dummy);
 		}
 		
 		// Turn v's MSB off
-		uint GetParent (uint v)
+		static uint GetParent (uint v)
 		{
 			uint t, tt;
 			
@@ -237,116 +248,104 @@ namespace System.Collections.Concurrent
 		}
 
 		// Reverse integer bits and make sure LSB is set
-		uint ComputeRegularKey (uint key)
+		static ulong ComputeRegularKey (uint key)
 		{
-			return ComputeDummyKey (key | 0x80000000);
+			return ComputeDummyKey (key) | 1;
 		}
 		
 		// Reverse integer bits
-		uint ComputeDummyKey (uint key)
+		static ulong ComputeDummyKey (uint key)
 		{
-			return ((uint)reverseTable[key & 0xff] << 24) | 
-				((uint)reverseTable[(key >> 8) & 0xff] << 16) | 
-				((uint)reverseTable[(key >> 16) & 0xff] << 8) |
-				((uint)reverseTable[(key >> 24) & 0xff]);
+			return ((ulong)(((uint)reverseTable[key & 0xff] << 24) |
+			                ((uint)reverseTable[(key >> 8) & 0xff] << 16) |
+			                ((uint)reverseTable[(key >> 16) & 0xff] << 8) |
+			                ((uint)reverseTable[(key >> 24) & 0xff]))) << 1;
 		}
 
 		// Bucket storage is abstracted in a simple two-layer tree to avoid too much memory resize
 		Node GetBucket (uint index)
 		{
-			int segment = (int)(index / SegmentSize);
-			CheckSegment (segment);
-			if (buckets[segment] == null)
+			if (index >= buckets.Length)
 				return null;
-
-			return buckets[segment][index % SegmentSize];
+			return buckets[index];
 		}
 
-		void SetBucket (uint index, Node node)
+		Node SetBucket (uint index, Node node)
 		{
-			int segment = (int)(index / SegmentSize);
-			CheckSegment (segment);
-			if (buckets[segment] == null) {
-				// Cache segment creation in case CAS fails
-				Node[] newSegment = segmentCache == null ? new Node[SegmentSize] : segmentCache;
-				segmentCache = Interlocked.CompareExchange (ref buckets[segment], newSegment, null) == null ? null : newSegment;
+			try {
+				slim.EnterReadLock ();
+				CheckSegment (index, true);
+
+				Interlocked.CompareExchange (ref buckets[index], node, null);
+				return buckets[index];
+			} finally {
+				slim.ExitReadLock ();
 			}
-			buckets[segment][index % SegmentSize] = node;
 		}
 
 		// When we run out of space for bucket storage, we use a lock-based array resize
-		void CheckSegment (int segment)
+		void CheckSegment (uint segment, bool readLockTaken)
 		{
-			while (segment >= buckets.Length) {
-				bool shouldResize = false;
-				bool taken = false;
-				try {
-					mresLock.Enter (ref taken);
-					if (mres.IsSet) {
-						shouldResize = true;
-						mres.Reset ();
-					}
-				} finally {
-					if (taken)
-						mresLock.Exit ();
-				}
-
-				if (shouldResize) {
+			if (segment < buckets.Length)
+				return;
+
+			if (readLockTaken)
+				slim.ExitReadLock ();
+			try {
+				slim.EnterWriteLock ();
+				while (segment >= buckets.Length)
 					Array.Resize (ref buckets, buckets.Length * 2);
-					mres.Set ();
-				} else {
-					mres.Wait ();
-				}
+			} finally {
+				slim.ExitWriteLock ();
 			}
+			if (readLockTaken)
+				slim.EnterReadLock ();
 		}
-		
-		Node ListSearch (uint key, ref Node left, Node h)
+
+		Node ListSearch (ulong key, TKey subKey, ref Node left, Node h)
 		{
 			Node leftNodeNext = null, rightNode = null;
-			
-		search_again:
+
 			do {
 				Node t = h;
-				Node tNext = h.Next;
-				
+				Node tNext = t.Next;
 				do {
 					if (!tNext.Marked) {
 						left = t;
 						leftNodeNext = tNext;
 					}
-					
 					t = tNext.Marked ? tNext.Next : tNext;
 					if (t == tail)
 						break;
 					
 					tNext = t.Next;
-				} while (tNext.Marked || t.Key < key);
+				} while (tNext.Marked || t.Key < key || (tNext.Key == key && !comparer.Equals (subKey, t.SubKey)));
 				
 				rightNode = t;
 				
 				if (leftNodeNext == rightNode) {
 					if (rightNode != tail && rightNode.Next.Marked)
-						goto search_again;
+						continue;
 					else 
 						return rightNode;
 				}
 				
 				if (Interlocked.CompareExchange (ref left.Next, rightNode, leftNodeNext) == leftNodeNext) {
 					if (rightNode != tail && rightNode.Next.Marked)
-						goto search_again;
+						continue;
 					else
 						return rightNode;
 				}
 			} while (true);
 		}
-	
-		bool ListDelete (Node startPoint, uint key, out T data)
+
+		bool ListDelete (Node startPoint, ulong key, TKey subKey, out T data)
 		{
 			Node rightNode = null, rightNodeNext = null, leftNode = null;
 			data = default (T);
 			
 			do {
-				rightNode = ListSearch (key, ref leftNode, startPoint);
+				rightNode = ListSearch (key, subKey, ref leftNode, startPoint);
 				if (rightNode == tail || rightNode.Key != key)
 					return false;
 
@@ -354,24 +353,24 @@ namespace System.Collections.Concurrent
 				
 				rightNodeNext = rightNode.Next;
 				if (!rightNodeNext.Marked)
-					if (Interlocked.CompareExchange (ref rightNode.Next, new MarkedNode (rightNodeNext), rightNodeNext) == rightNodeNext)
+					if (Interlocked.CompareExchange (ref rightNode.Next, new Node (rightNodeNext), rightNodeNext) == rightNodeNext)
 						break;
 			} while (true);
 			
-			if (Interlocked.CompareExchange (ref leftNode.Next, rightNode, rightNodeNext) != rightNodeNext)
-				rightNode = ListSearch (rightNode.Key, ref leftNode, startPoint);
+			if (Interlocked.CompareExchange (ref leftNode.Next, rightNodeNext, rightNode) != rightNodeNext)
+				ListSearch (rightNode.Key, subKey, ref leftNode, startPoint);
 			
 			return true;
 		}
 		
 		bool ListInsert (Node newNode, Node startPoint, out Node current, Func<T> dataCreator)
 		{
-			uint key = newNode.Key;
+			ulong key = newNode.Key;
 			Node rightNode = null, leftNode = null;
 			
 			do {
-				rightNode = current = ListSearch (key, ref leftNode, startPoint);
-				if (rightNode != tail && rightNode.Key == key)
+				rightNode = current = ListSearch (key, newNode.SubKey, ref leftNode, startPoint);
+				if (rightNode != tail && rightNode.Key == key && comparer.Equals (newNode.SubKey, rightNode.SubKey))
 					return false;
 				
 				newNode.Next = rightNode;
@@ -382,17 +381,105 @@ namespace System.Collections.Concurrent
 			} while (true);
 		}
 		
-		bool ListFind (uint key, Node startPoint, out Node data)
+		bool ListFind (ulong key, TKey subKey, Node startPoint, out Node data)
 		{
 			Node rightNode = null, leftNode = null;
 			data = null;
 			
-			rightNode = ListSearch (key, ref leftNode, startPoint);
+			rightNode = ListSearch (key, subKey, ref leftNode, startPoint);
 			data = rightNode;
 			
 			return rightNode != tail && rightNode.Key == key;
 		}
+
+		static readonly byte[] reverseTable = {
+			0, 128, 64, 192, 32, 160, 96, 224, 16, 144, 80, 208, 48, 176, 112, 240, 8, 136, 72, 200, 40, 168, 104, 232, 24, 152, 88, 216, 56, 184, 120, 248, 4, 132, 68, 196, 36, 164, 100, 228, 20, 148, 84, 212, 52, 180, 116, 244, 12, 140, 76, 204, 44, 172, 108, 236, 28, 156, 92, 220, 60, 188, 124, 252, 2, 130, 66, 194, 34, 162, 98, 226, 18, 146, 82, 210, 50, 178, 114, 242, 10, 138, 74, 202, 42, 170, 106, 234, 26, 154, 90, 218, 58, 186, 122, 250, 6, 134, 70, 198, 38, 166, 102, 230, 22, 150, 86, 214, 54, 182, 118, 246, 14, 142, 78, 206, 46, 174, 110, 238, 30, 158, 94, 222, 62, 190, 126, 254, 1, 129, 65, 193, 33, 161, 97, 225, 17, 145, 81, 209, 49, 177, 113, 241, 9, 137, 73, 201, 41, 169, 105, 233, 25, 153, 89, 217, 57, 185, 121, 249, 5, 133, 69, 197, 37, 165, 101, 229, 21, 149, 85, 213, 53, 181, 117, 245, 13, 141, 77, 205, 45, 173, 109, 237, 29, 157, 93, 221, 61, 189, 125, 253, 3, 131, 67, 195, 35, 163, 99, 227, 19, 147, 83, 211, 51, 179, 115, 243, 11, 139, 75, 203, 43, 171, 107, 235, 27, 155, 91, 219, 59, 187, 123, 251, 7, 135, 71, 199, 39, 167, 103, 231, 23, 151, 87, 215, 55, 183, 119, 247, 15, 143, 79, 207, 47, 175, 111, 239, 31, 159, 95, 223, 63, 191, 127, 255
+		};
+
+		static readonly byte[] logTable = {
+			0xFF, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
+		};
+
+		struct SimpleRwLock
+		{
+			const int RwWait = 1;
+			const int RwWrite = 2;
+			const int RwRead = 4;
+
+			int rwlock;
+
+			public void EnterReadLock ()
+			{
+				SpinWait sw = new SpinWait ();
+				do {
+					while ((rwlock & (RwWrite | RwWait)) > 0)
+						sw.SpinOnce ();
+
+					if ((Interlocked.Add (ref rwlock, RwRead) & (RwWait | RwWait)) == 0)
+						return;
+
+					Interlocked.Add (ref rwlock, -RwRead);
+				} while (true);
+			}
+
+			public void ExitReadLock ()
+			{
+				Interlocked.Add (ref rwlock, -RwRead);
+			}
+
+			public void EnterWriteLock ()
+			{
+				SpinWait sw = new SpinWait ();
+				do {
+					int state = rwlock;
+					if (state < RwWrite) {
+						if (Interlocked.CompareExchange (ref rwlock, RwWrite, state) == state)
+							return;
+						state = rwlock;
+					}
+					// We register our interest in taking the Write lock (if upgradeable it's already done)
+					while ((state & RwWait) == 0 && Interlocked.CompareExchange (ref rwlock, state | RwWait, state) != state)
+						state = rwlock;
+					// Before falling to sleep
+					while (rwlock > RwWait)
+						sw.SpinOnce ();
+				} while (true);
+			}
+
+			public void ExitWriteLock ()
+			{
+				Interlocked.Add (ref rwlock, -RwWrite);
+			}
+		}
+	}
+
+#if INSIDE_SYSTEM_WEB && !NET_4_0
+	internal struct SpinWait
+	{
+		// The number of step until SpinOnce yield on multicore machine
+		const           int  step = 10;
+		const           int  maxTime = 200;
+		static readonly bool isSingleCpu = (Environment.ProcessorCount == 1);
+
+		int ntime;
+
+		public void SpinOnce ()
+		{
+			ntime += 1;
+
+			if (isSingleCpu) {
+				// On a single-CPU system, spinning does no good
+				Thread.Sleep (0);
+			} else {
+				if (ntime % step == 0)
+					Thread.Sleep (0);
+				else
+					// Multi-CPU system might be hyper-threaded, let other thread run
+					Thread.SpinWait (Math.Min (ntime, maxTime) << 1);
+			}
+		}
 	}
+#endif
 }
 
 #endif
diff --git a/mcs/class/corlib/System.Collections.Generic/ChangeLog b/mcs/class/corlib/System.Collections.Generic/ChangeLog
index 86072a3..cf616e5 100644
--- a/mcs/class/corlib/System.Collections.Generic/ChangeLog
+++ b/mcs/class/corlib/System.Collections.Generic/ChangeLog
@@ -1,3 +1,36 @@
+2010-09-27  Marek Habersack  <grendel at twistedcode.net>
+
+	[bug workaround] Fix the build of System.Web.Mvc by renaming
+	internal StringComparer class to InternalStringComparer
+
+	The build fails because of what seems to be a bug in gmcs. The
+	compiler reports that the StringComparer.OrdinalIgnoreCase
+	property doesn't exist and it does so because gmcs loads the
+	internal System.Collections.Generic.StringComparer from
+	EqualitComparer.cs instead of the System.StringComparer one.
+
+2010-09-25  Miguel de Icaza  <miguel at gnome.org>
+
+	Fix EqualityComparer for strings.
+
+	It turns out that Strings need to explicitly use a version that
+	does implement EqualityComparer<string> since string is an
+	IEquatable.
+
+	Do this, and to avoid the reflection mess, cast to object, then
+	cast to the real type
+
+2010-09-25  Miguel de Icaza  <miguel at gnome.org>
+
+	Optimize EqualityComparer for strings
+
+	This shortcut prevents the reflection system to kick into action
+	for compiler generated string switch statements.
+
+2010-09-08  Jb Evain  <jbevain at gmail.com>
+
+	Remove no-op code
+
 2010-06-29  Marek Safar <marek.safar at gmail.com>
 
 	* List.cs: Optimize IEnumerable<T> ctor.
diff --git a/mcs/class/corlib/System.Collections.Generic/ChangeLog b/mcs/class/corlib/System.Collections.Generic/ChangeLog.old
similarity index 100%
copy from mcs/class/corlib/System.Collections.Generic/ChangeLog
copy to mcs/class/corlib/System.Collections.Generic/ChangeLog.old
diff --git a/mcs/class/corlib/System.Collections.Generic/Comparer.cs b/mcs/class/corlib/System.Collections.Generic/Comparer.cs
index 58118f0..864f35f 100644
--- a/mcs/class/corlib/System.Collections.Generic/Comparer.cs
+++ b/mcs/class/corlib/System.Collections.Generic/Comparer.cs
@@ -87,9 +87,6 @@ namespace System.Collections.Generic {
 	}
 	
 	[Serializable]
-#if MONOTOUCH
-	internal
-#endif
 	sealed class GenericComparer <T> : Comparer <T> where T : IComparable<T> {
 		public override int Compare (T x, T y)
 		{
diff --git a/mcs/class/corlib/System.Collections.Generic/EqualityComparer.cs b/mcs/class/corlib/System.Collections.Generic/EqualityComparer.cs
index 8510645..bb09fa1 100644
--- a/mcs/class/corlib/System.Collections.Generic/EqualityComparer.cs
+++ b/mcs/class/corlib/System.Collections.Generic/EqualityComparer.cs
@@ -35,6 +35,10 @@ namespace System.Collections.Generic {
 		
 		static EqualityComparer ()
 		{
+			if (typeof (T) == typeof (string)){
+				_default = (EqualityComparer<T>) (object) new InternalStringComparer ();
+				return;
+			}
 			if (typeof (IEquatable <T>).IsAssignableFrom (typeof (T)))
 				_default = (EqualityComparer <T>) Activator.CreateInstance (typeof (GenericEqualityComparer <>).MakeGenericType (typeof (T)));
 			else
@@ -81,16 +85,35 @@ namespace System.Collections.Generic {
 			{
 				if (x == null)
 					return y == null;
-				
+
 				return x.Equals (y);
 			}
 		}
 	}
 	
 	[Serializable]
-#if MONOTOUCH
-	internal
-#endif
+	sealed class InternalStringComparer : EqualityComparer<string> {
+	
+		public override int GetHashCode (string obj)
+		{
+			if (obj == null)
+				return 0;
+			return obj.GetHashCode ();
+		}
+	
+		public override bool Equals (string x, string y)
+		{
+			if (x == null)
+				return y == null;
+
+			if ((object) x == (object) y)
+				return true;
+				
+			return x.Equals (y);
+		}
+	}
+
+	[Serializable]
 	sealed class GenericEqualityComparer <T> : EqualityComparer <T> where T : IEquatable <T> {
 
 		public override int GetHashCode (T obj)
diff --git a/mcs/class/corlib/System.Collections.Generic/IEnumerable.cs b/mcs/class/corlib/System.Collections.Generic/IEnumerable.cs
index 8b289cf..a4025cf 100644
--- a/mcs/class/corlib/System.Collections.Generic/IEnumerable.cs
+++ b/mcs/class/corlib/System.Collections.Generic/IEnumerable.cs
@@ -37,7 +37,7 @@ using System.Runtime.InteropServices;
 
 namespace System.Collections.Generic
 {
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
 	public interface IEnumerable<out T> : IEnumerable
 #else
 	public interface IEnumerable<T> : IEnumerable
diff --git a/mcs/class/corlib/System.Collections.Generic/IEnumerator.cs b/mcs/class/corlib/System.Collections.Generic/IEnumerator.cs
index 17f4e95..355dcd2 100644
--- a/mcs/class/corlib/System.Collections.Generic/IEnumerator.cs
+++ b/mcs/class/corlib/System.Collections.Generic/IEnumerator.cs
@@ -37,7 +37,7 @@ using System.Runtime.InteropServices;
 
 namespace System.Collections.Generic
 {
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
 	public interface IEnumerator<out T> : IDisposable, IEnumerator
 #else
 	public interface IEnumerator<T> : IDisposable, IEnumerator
diff --git a/mcs/class/corlib/System.Collections.ObjectModel/ChangeLog b/mcs/class/corlib/System.Collections.ObjectModel/ChangeLog
index 55090b9..68b53c3 100644
--- a/mcs/class/corlib/System.Collections.ObjectModel/ChangeLog
+++ b/mcs/class/corlib/System.Collections.ObjectModel/ChangeLog
@@ -1,3 +1,7 @@
+2010-11-08  Marek Safar  <marek.safar at gmail.com>
+
+	API compatibility work
+
 2010-06-09  Jonathan Pryor  <jpryor at novell.com>
 
 	* KeyedCollection.cs: Make KeyedCollection.InsertItem() exception
diff --git a/mcs/class/corlib/System.Collections.ObjectModel/ChangeLog b/mcs/class/corlib/System.Collections.ObjectModel/ChangeLog.old
similarity index 100%
copy from mcs/class/corlib/System.Collections.ObjectModel/ChangeLog
copy to mcs/class/corlib/System.Collections.ObjectModel/ChangeLog.old
diff --git a/mcs/class/corlib/System.Collections.ObjectModel/Collection.cs b/mcs/class/corlib/System.Collections.ObjectModel/Collection.cs
index a9d8d92..f78afdc 100644
--- a/mcs/class/corlib/System.Collections.ObjectModel/Collection.cs
+++ b/mcs/class/corlib/System.Collections.ObjectModel/Collection.cs
@@ -38,11 +38,14 @@ using System;
 using System.Collections;
 using System.Collections.Generic;
 using System.Runtime.InteropServices;
+using System.Diagnostics;
 
 namespace System.Collections.ObjectModel
 {
 	[ComVisible (false)]
 	[Serializable]
+	[DebuggerDisplay ("Count={Count}")]
+	[DebuggerTypeProxy (typeof (CollectionDebuggerView<>))]	
 	public class Collection <T> : IList <T>, ICollection <T>, IEnumerable <T>, IList, ICollection, IEnumerable
 	{
 		IList <T> list;
diff --git a/mcs/class/corlib/System.Collections.ObjectModel/KeyedCollection.cs b/mcs/class/corlib/System.Collections.ObjectModel/KeyedCollection.cs
index 8866a0c..60b8d56 100644
--- a/mcs/class/corlib/System.Collections.ObjectModel/KeyedCollection.cs
+++ b/mcs/class/corlib/System.Collections.ObjectModel/KeyedCollection.cs
@@ -34,11 +34,14 @@
 using System;
 using System.Collections.Generic;
 using System.Runtime.InteropServices;
+using System.Diagnostics;
 
 namespace System.Collections.ObjectModel
 {
 	[ComVisible(false)]
 	[Serializable]
+	[DebuggerDisplay ("Count={Count}")]
+	[DebuggerTypeProxy (typeof (CollectionDebuggerView<,>))]	
 	public abstract class KeyedCollection<TKey, TItem> : Collection<TItem>
 	{
 		private Dictionary<TKey, TItem> dictionary;
diff --git a/mcs/class/corlib/System.Collections.ObjectModel/ReadOnlyCollection.cs b/mcs/class/corlib/System.Collections.ObjectModel/ReadOnlyCollection.cs
index 46dfd7b..5880138 100644
--- a/mcs/class/corlib/System.Collections.ObjectModel/ReadOnlyCollection.cs
+++ b/mcs/class/corlib/System.Collections.ObjectModel/ReadOnlyCollection.cs
@@ -37,11 +37,14 @@
 using System;
 using System.Collections.Generic;
 using System.Runtime.InteropServices;
+using System.Diagnostics;
 
 namespace System.Collections.ObjectModel
 {
 	[ComVisible (false)]
 	[Serializable]
+	[DebuggerDisplay ("Count={Count}")]
+	[DebuggerTypeProxy (typeof (CollectionDebuggerView<>))]	
 	public class ReadOnlyCollection <T> : IList <T>, ICollection <T>, IEnumerable <T>, IList, ICollection, IEnumerable
 	{
 		IList <T> list;
diff --git a/mcs/class/corlib/System.Collections/IStructuralComparable.cs b/mcs/class/corlib/System.Collections/IStructuralComparable.cs
index 4850749..f7695f9 100644
--- a/mcs/class/corlib/System.Collections/IStructuralComparable.cs
+++ b/mcs/class/corlib/System.Collections/IStructuralComparable.cs
@@ -26,7 +26,7 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if MOONLIGHT || NET_4_0 || BOOTSTRAP_NET_4_0
+#if MOONLIGHT || NET_4_0
 
 using System;
 
diff --git a/mcs/class/corlib/System.Collections/IStructuralEquatable.cs b/mcs/class/corlib/System.Collections/IStructuralEquatable.cs
index 444d44f..a3d4ef5 100644
--- a/mcs/class/corlib/System.Collections/IStructuralEquatable.cs
+++ b/mcs/class/corlib/System.Collections/IStructuralEquatable.cs
@@ -26,7 +26,7 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if MOONLIGHT || NET_4_0 || BOOTSTRAP_NET_4_0
+#if MOONLIGHT || NET_4_0
 
 using System;
 
diff --git a/mcs/class/corlib/System.Diagnostics.Contracts/PureAttribute.cs b/mcs/class/corlib/System.Diagnostics.Contracts/PureAttribute.cs
index 0043f26..87fbe5b 100644
--- a/mcs/class/corlib/System.Diagnostics.Contracts/PureAttribute.cs
+++ b/mcs/class/corlib/System.Diagnostics.Contracts/PureAttribute.cs
@@ -26,7 +26,7 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if NET_2_1 || NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_2_1 || NET_4_0
 
 using System;
 
diff --git a/mcs/class/corlib/System.Diagnostics/ChangeLog b/mcs/class/corlib/System.Diagnostics/ChangeLog
index e30a01a..18c0c2c 100644
--- a/mcs/class/corlib/System.Diagnostics/ChangeLog
+++ b/mcs/class/corlib/System.Diagnostics/ChangeLog
@@ -1,3 +1,8 @@
+2011-01-06  Zoltan Varga  <vargaz at gmail.com>
+
+	Change some usages of ArrayList to List<T> to avoid calls to the
+	slow ArrayList.ToArray(Type) method.
+
 2010-03-16  Jb Evain  <jbevain at novell.com>
 
 	* StackFrame.cs: use MOONLIGHT symbol to disambiguate
diff --git a/mcs/class/corlib/System.Diagnostics/ChangeLog b/mcs/class/corlib/System.Diagnostics/ChangeLog.old
similarity index 100%
copy from mcs/class/corlib/System.Diagnostics/ChangeLog
copy to mcs/class/corlib/System.Diagnostics/ChangeLog.old
diff --git a/mcs/class/corlib/System.Diagnostics/StackTrace.cs b/mcs/class/corlib/System.Diagnostics/StackTrace.cs
index e8ec9fb..5fd14cc 100644
--- a/mcs/class/corlib/System.Diagnostics/StackTrace.cs
+++ b/mcs/class/corlib/System.Diagnostics/StackTrace.cs
@@ -28,7 +28,7 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-using System.Collections;
+using System.Collections.Generic;
 using System.Globalization;
 using System.Reflection;
 using System.Runtime.CompilerServices;
@@ -76,19 +76,19 @@ namespace System.Diagnostics {
 				throw new ArgumentOutOfRangeException ("< 0", "skipFrames");
 
 			StackFrame sf;
-			ArrayList al = new ArrayList ();
+			var l = new List<StackFrame> ();
 
 			skipFrames += 2;
 			
 			while ((sf = new StackFrame (skipFrames, fNeedFileInfo)) != null &&
 			       sf.GetMethod () != null) {
 				
-				al.Add (sf);
+				l.Add (sf);
 				skipFrames++;
 			};
 
 			debug_info = fNeedFileInfo;
-			frames = (StackFrame [])al.ToArray (typeof (StackFrame));	
+			frames = l.ToArray ();
 		}
 		
 		[MethodImplAttribute(MethodImplOptions.InternalCall)]
@@ -130,13 +130,13 @@ namespace System.Diagnostics {
 						resize = true;
 
 				if (resize) {
-					ArrayList al = new ArrayList ();
+					var l = new List<StackFrame> ();
 
 					for (int i = 0; i < frames.Length; ++i)
 						if (frames [i].GetMethod () != null)
-							al.Add (frames [i]);
+							l.Add (frames [i]);
 
-					frames = (StackFrame [])al.ToArray (typeof (StackFrame));
+					frames = l.ToArray ();
 				}
 			}
 		}
diff --git a/mcs/class/corlib/System.Globalization/ChangeLog b/mcs/class/corlib/System.Globalization/ChangeLog
index 88339fa..ab6283c 100644
--- a/mcs/class/corlib/System.Globalization/ChangeLog
+++ b/mcs/class/corlib/System.Globalization/ChangeLog
@@ -1,3 +1,12 @@
+2011-01-06  Zoltan Varga  <vargaz at gmail.com>
+
+	Change some usages of ArrayList to List<T> to avoid calls to the
+	slow ArrayList.ToArray(Type) method.
+
+2010-12-22  Marek Safar  <marek.safar at gmail.com>
+
+	Fixed NumberFormatInfo.InvariantInfo currency symbol
+
 2010-06-21  Jb Evain  <jbevain at novell.com>
 
 	* CharUnicodeInfo.cs: make static.
diff --git a/mcs/class/corlib/System.Globalization/ChangeLog b/mcs/class/corlib/System.Globalization/ChangeLog.old
similarity index 100%
copy from mcs/class/corlib/System.Globalization/ChangeLog
copy to mcs/class/corlib/System.Globalization/ChangeLog.old
diff --git a/mcs/class/corlib/System.Globalization/DateTimeFormatInfo.cs b/mcs/class/corlib/System.Globalization/DateTimeFormatInfo.cs
index 6d1f91f..e1e8a0f 100644
--- a/mcs/class/corlib/System.Globalization/DateTimeFormatInfo.cs
+++ b/mcs/class/corlib/System.Globalization/DateTimeFormatInfo.cs
@@ -31,7 +31,7 @@
 //
 
 using System;
-using System.Collections;
+using System.Collections.Generic;
 using System.Runtime.InteropServices;
 using System.Threading;
 
@@ -611,7 +611,7 @@ namespace System.Globalization
 			if (all_date_time_patterns != null)
 				return;
 			
-			ArrayList al = new ArrayList ();
+			var al = new List<string> ();
 			al.AddRange (GetAllRawDateTimePatterns ('d'));
 			al.AddRange (GetAllRawDateTimePatterns ('D'));
 			al.AddRange (GetAllRawDateTimePatterns ('g'));
@@ -637,7 +637,7 @@ namespace System.Globalization
 
 			// all_date_time_patterns needs to be volatile to prevent
 			// reordering of writes here and still avoid any locking.
-			all_date_time_patterns = (string []) al.ToArray (typeof (string)) as string [];
+			all_date_time_patterns = al.ToArray ();
 		}
 
 		//
diff --git a/mcs/class/corlib/System.Globalization/NumberFormatInfo.cs b/mcs/class/corlib/System.Globalization/NumberFormatInfo.cs
index 4ef99fd..95d88ab 100644
--- a/mcs/class/corlib/System.Globalization/NumberFormatInfo.cs
+++ b/mcs/class/corlib/System.Globalization/NumberFormatInfo.cs
@@ -119,13 +119,9 @@ namespace System.Globalization {
 			// CultureInfo uses this one also.
 			if (lcid != 0x007F)
 				lcid = 0x007F;
-			
-			switch (lcid){
 
-				// The Invariant Culture Info ID.
-			case 0x007f:
-				isReadOnly = false;
-				
+			// The Invariant Culture Info ID.
+			if (lcid == 0x007f) {
 				// Currency Related Format Info
 				currencyDecimalDigits =       2;
 				currencyDecimalSeparator =    ".";
@@ -133,7 +129,7 @@ namespace System.Globalization {
 				currencyGroupSizes =          new int[1] { 3 };
 				currencyNegativePattern =     0;
 				currencyPositivePattern =     0;
-				currencySymbol =              "$";
+				currencySymbol =              "\u00a4";
 				
 				nanSymbol =                   "NaN";
 				negativeInfinitySymbol =      "-Infinity";
@@ -158,7 +154,6 @@ namespace System.Globalization {
 				perMilleSymbol =              "\u2030";
 				positiveInfinitySymbol =      "Infinity";
 				positiveSign =                "+";
-				break;
 			}
 		}
 
@@ -513,11 +508,9 @@ namespace System.Globalization {
 		public static NumberFormatInfo InvariantInfo {
 			get {
 				// This uses invariant info, which is same as in the constructor
-				NumberFormatInfo nfi = new NumberFormatInfo ();
-				nfi.NumberNegativePattern = 1;
-				nfi.isReadOnly = true;
+				NumberFormatInfo nfi = new NumberFormatInfo (true);
 				return nfi;
-			}		       
+			}
 		}
 
 		public bool IsReadOnly {
diff --git a/mcs/class/corlib/System.IO.IsolatedStorage/ChangeLog b/mcs/class/corlib/System.IO.IsolatedStorage/ChangeLog
index 4bce5df..1b1218f 100644
--- a/mcs/class/corlib/System.IO.IsolatedStorage/ChangeLog
+++ b/mcs/class/corlib/System.IO.IsolatedStorage/ChangeLog
@@ -1,3 +1,40 @@
+2011-01-03  Miguel de Icaza  <miguel at gnome.org>
+
+	[GetFolderPath] Handful of .NET 4 changes
+
+	* Actually use the SpecialFolderPathOptions where we need them ->
+	Create is acknowledged -> DoNotVerify is ignored, as Mono
+	historically did not throw an exception on missing directories. *
+	Rename InternalGetFolderPath to UnixGetFolderPath as this is what
+	it is. * Fix existing references to the code * Fix indentation in
+	routine that was never properly formatted (ReadXdgUserDir)
+
+2010-12-15  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* MoonIsolatedStorageFile.cs: Return true, instead of throwing a
+	NIE, for IsEnabled since this is the behavior for Silverlight 3
+	(i.e. always enabled) even if the call is new in SL4 (but part of
+	ML3 ;-)
+
+2010-12-15  Marek Safar  <marek.safar at gmail.com>
+
+	Some .net 4.0 api compatibility fixes
+
+2010-10-11  Jonathan Pryor  <jonpryor at vt.edu>
+
+	Fix IsolatedStorageFile.GetUserStoreForApplication() for MOBILE.
+
+	IsolatedStorageFile.GetUserStoreForApplication() would previously
+	throw an IsolatedStorageException because no ApplicationIdentity
+	was provided by the AppDomain.
+
+	We would like to provide this method in a workable fashion to
+	facilitate code portability with Windows Phone 7, which exposes
+	only this method for saving files to stable storage.
+
+	Thus, skip the ApplicationIdentity and code identity checks for
+	MOBILE (MonoDroid, MonoTouch) so that IsolatedStorage Just Works.
+
 2010-06-18  Rolf Bjarne Kvinge  <RKvinge at novell.com>
 
 	* MoonIsolatedStorageFile.cs: Add IsEnabled.
diff --git a/mcs/class/corlib/System.IO.IsolatedStorage/ChangeLog b/mcs/class/corlib/System.IO.IsolatedStorage/ChangeLog.old
similarity index 100%
copy from mcs/class/corlib/System.IO.IsolatedStorage/ChangeLog
copy to mcs/class/corlib/System.IO.IsolatedStorage/ChangeLog.old
diff --git a/mcs/class/corlib/System.IO.IsolatedStorage/IsolatedStorage.cs b/mcs/class/corlib/System.IO.IsolatedStorage/IsolatedStorage.cs
index 12cfc1b..9572885 100644
--- a/mcs/class/corlib/System.IO.IsolatedStorage/IsolatedStorage.cs
+++ b/mcs/class/corlib/System.IO.IsolatedStorage/IsolatedStorage.cs
@@ -169,12 +169,14 @@ namespace System.IO.IsolatedStorage {
 		[MonoTODO ("requires manifest support")]
 		protected void InitStore (IsolatedStorageScope scope, Type appEvidenceType)
 		{
+#if !MOBILE
 			if (AppDomain.CurrentDomain.ApplicationIdentity == null)
 				throw new IsolatedStorageException (Locale.GetText ("No ApplicationIdentity available for AppDomain."));
 
 			if (appEvidenceType == null) {
 				// TODO - Choose evidence
 			}
+#endif
 
 			// no exception here because this can work without CAS
 			storage_scope = scope;
diff --git a/mcs/class/corlib/System.IO.IsolatedStorage/IsolatedStorageFile.cs b/mcs/class/corlib/System.IO.IsolatedStorage/IsolatedStorageFile.cs
index a23bba4..cb52725 100644
--- a/mcs/class/corlib/System.IO.IsolatedStorage/IsolatedStorageFile.cs
+++ b/mcs/class/corlib/System.IO.IsolatedStorage/IsolatedStorageFile.cs
@@ -292,12 +292,12 @@ namespace System.IO.IsolatedStorage {
 
 			if ((scope & IsolatedStorageScope.User) != 0) {
 				if ((scope & IsolatedStorageScope.Roaming) != 0) {
-					root = Environment.InternalGetFolderPath (Environment.SpecialFolder.LocalApplicationData);
+					root = Environment.UnixGetFolderPath (Environment.SpecialFolder.LocalApplicationData, Environment.SpecialFolderOption.Create);
 				} else {
-					root = Environment.InternalGetFolderPath (Environment.SpecialFolder.ApplicationData);
+					root = Environment.UnixGetFolderPath (Environment.SpecialFolder.ApplicationData, Environment.SpecialFolderOption.Create);
 				}
 			} else if ((scope & IsolatedStorageScope.Machine) != 0) {
-				root = Environment.InternalGetFolderPath (Environment.SpecialFolder.CommonApplicationData);
+				root = Environment.UnixGetFolderPath (Environment.SpecialFolder.CommonApplicationData, Environment.SpecialFolderOption.Create);
 			}
 
 			if (root == null) {
@@ -385,6 +385,9 @@ namespace System.IO.IsolatedStorage {
 		{
 			string root = GetIsolatedStorageRoot (Scope);
 			string dir = null;
+#if MOBILE
+			dir = "";
+#else
 			if (_applicationIdentity != null) {
 				dir = String.Format ("a{0}{1}", SeparatorInternal, GetNameFromIdentity (_applicationIdentity));
 			} else if (_domainIdentity != null) {
@@ -395,6 +398,7 @@ namespace System.IO.IsolatedStorage {
 			} else {
 				throw new IsolatedStorageException (Locale.GetText ("No code identity available."));
 			}
+#endif
 
 			root = Path.Combine (root, dir);
 
diff --git a/mcs/class/corlib/System.IO.IsolatedStorage/IsolatedStorageSecurityOptions.cs b/mcs/class/corlib/System.IO.IsolatedStorage/IsolatedStorageSecurityOptions.cs
index 112a103..0d3b391 100644
--- a/mcs/class/corlib/System.IO.IsolatedStorage/IsolatedStorageSecurityOptions.cs
+++ b/mcs/class/corlib/System.IO.IsolatedStorage/IsolatedStorageSecurityOptions.cs
@@ -29,8 +29,9 @@
 #if NET_4_0
 namespace System.IO.IsolatedStorage
 {
-	public enum IsolatedStorageSecurityOptions {
-		IncreaseQuotaForApplication
+	public enum IsolatedStorageSecurityOptions
+	{
+		IncreaseQuotaForApplication = 4
 	}
 }
 
diff --git a/mcs/class/corlib/System.IO.IsolatedStorage/MoonIsolatedStorageFile.cs b/mcs/class/corlib/System.IO.IsolatedStorage/MoonIsolatedStorageFile.cs
index 68f5359..f61550e 100644
--- a/mcs/class/corlib/System.IO.IsolatedStorage/MoonIsolatedStorageFile.cs
+++ b/mcs/class/corlib/System.IO.IsolatedStorage/MoonIsolatedStorageFile.cs
@@ -99,11 +99,11 @@ namespace System.IO.IsolatedStorage {
 			}
 			throw new IsolatedStorageException ();
 		}
-		
+
+		[MonoTODO ("always return true since this was the only behavior in Silverlight 3")]
 		public static bool IsEnabled {
 			get {
-				Console.WriteLine ("NIEX: System.IO.IsolatedStorage.IsolatedStorageFile:get_IsEnabled");
-				throw new NotImplementedException ();
+				return true;
 			}
 		}
 
diff --git a/mcs/class/corlib/System.IO/BinaryWriter.cs b/mcs/class/corlib/System.IO/BinaryWriter.cs
index 5ee202b..6551e11 100644
--- a/mcs/class/corlib/System.IO/BinaryWriter.cs
+++ b/mcs/class/corlib/System.IO/BinaryWriter.cs
@@ -68,6 +68,7 @@ namespace System.IO {
 
 		public virtual Stream BaseStream {
 			get {
+				Flush ();
 				return OutStream;
 			}
 		}
diff --git a/mcs/class/corlib/System.IO/ChangeLog b/mcs/class/corlib/System.IO/ChangeLog
index 748d531..6fcbbda 100644
--- a/mcs/class/corlib/System.IO/ChangeLog
+++ b/mcs/class/corlib/System.IO/ChangeLog
@@ -1,10 +1,83 @@
-2010-09-03  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+2011-01-06  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
 
-	Linux /proc/mounts might have escaped characters
+	[windows] Improve drive search
 
-	Translate escaped characters in mount paths.
+	Windows allows "A", "A:", @"a:\"... as synonyms for the same
+	drive. Patch by Vincent Povirk that fixes bug #660911.
 
-	Fixes bug #637078.
+2011-01-06  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	[Windows] Implement GetDrives.
+
+	Drive names are ok, but the type is always 'Fixed'. Fixes bug
+	#660907.
+
+2011-01-06  Zoltan Varga  <vargaz at gmail.com>
+
+	Change some usages of ArrayList to List<T> to avoid calls to the
+	slow ArrayList.ToArray(Type) method.
+
+2011-01-03  Miguel de Icaza  <miguel at gnome.org>
+
+	[mscorlib] New Path.Combine methods are exposed internally on pre
+	4.0 profiles
+
+	This allows our mscorlib code to be cleaner
+
+2010-11-21  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	[File.ReadLines] Dispose the StreamReader in the right place.
+
+	The StreamReader was being disposed immediately after the call to
+	ReadLines() causing the enumerator to fails.
+
+	Fixes bug #649464.
+
+2010-11-04  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* FileStream.cs: Move anonymous assignation earlier so the value
+	is available when validation are made (and calls other methods)
+
+2010-10-29  Alex Fort  <imphasing at gmail.com>
+
+	Don't use a buffer size of 1 for zero-length buffers
+
+	Using a size of 1 for zero length buffers causes (on linux) the
+	last character to be eaten by the buffer until the next flush.
+
+2010-10-27  Alex Fort  <imphasing at gmail.com>
+
+	[Fix] Don't enforce a minimum size for zero-length buffers, fixing
+	#645193
+
+	InitBuffer was forcing the length of any buffer smaller than 8 to
+	be 8, but for zero-size buffers, this isn't correct.
+
+2010-10-24  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	BinaryWriter.BaseStream calls Flush()
+
+	Before returning the base stream, BinaryWriter.BaseStream calls
+	Flush on it. Added test for this.
+
+	Fixes bug #647948.
+
+2010-10-15  Marek Safar  <marek.safar at gmail.com>
+
+	Warnings cleanup
+
+2010-10-07  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Fix CryptoStream.Dispose
+
+	-Dispose will call TransformFinalBlock() for Read streams. Fixes
+	bug #644648. -Dispose () will call Dispose (bool). Fixes bug
+	#644654. -Stream.Close calls GC.SuppressFinalize(). Fixes bug
+	#644660.
+
+2010-09-10  Jb Evain  <jbevain at gmail.com>
+
+	Add FileStream.Flush(bool) to the moonlight profile
 
 2010-09-03  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
 
@@ -12,6 +85,14 @@
 
 	This allows for mount points with UTF8 characters in them.
 
+2010-09-03  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Linux /proc/mounts might have escaped characters
+
+	Translate escaped characters in mount paths.
+
+	Fixes bug #637078.
+
 2010-05-27  William Holmes  <billholmes54 at gmail.com>
 
 	* Directory.cs (ValidateDirectoryListing): Removing an unnecessary
diff --git a/mcs/class/corlib/System.IO/Directory.cs b/mcs/class/corlib/System.IO/Directory.cs
index e7ae5d1..8596157 100644
--- a/mcs/class/corlib/System.IO/Directory.cs
+++ b/mcs/class/corlib/System.IO/Directory.cs
@@ -266,12 +266,12 @@ namespace System.IO
 		{
 			if (searchOption == SearchOption.TopDirectoryOnly)
 				return GetDirectories (path, searchPattern);
-			ArrayList all = new ArrayList ();
+			var all = new List<string> ();
 			GetDirectoriesRecurse (path, searchPattern, all);
-			return (string []) all.ToArray (typeof (string));
+			return all.ToArray ();
 		}
 		
-		static void GetDirectoriesRecurse (string path, string searchPattern, ArrayList all)
+		static void GetDirectoriesRecurse (string path, string searchPattern, List<string> all)
 		{
 			all.AddRange (GetDirectories (path, searchPattern));
 			foreach (string dir in GetDirectories (path))
@@ -303,12 +303,12 @@ namespace System.IO
 		{
 			if (searchOption == SearchOption.TopDirectoryOnly)
 				return GetFiles (path, searchPattern);
-			ArrayList all = new ArrayList ();
+			var all = new List<string> ();
 			GetFilesRecurse (path, searchPattern, all);
-			return (string []) all.ToArray (typeof (string));
+			return all.ToArray ();
 		}
 		
-		static void GetFilesRecurse (string path, string searchPattern, ArrayList all)
+		static void GetFilesRecurse (string path, string searchPattern, List<string> all)
 		{
 			all.AddRange (GetFiles (path, searchPattern));
 			foreach (string dir in GetDirectories (path))
diff --git a/mcs/class/corlib/System.IO/DriveInfo.cs b/mcs/class/corlib/System.IO/DriveInfo.cs
index 5efe84a..9ec1bb1 100644
--- a/mcs/class/corlib/System.IO/DriveInfo.cs
+++ b/mcs/class/corlib/System.IO/DriveInfo.cs
@@ -22,7 +22,7 @@
 //
 
 using System;
-using System.Collections;
+using System.Collections.Generic;
 using System.Text;
 using System.Runtime.Serialization;
 using System.Runtime.CompilerServices;
@@ -45,8 +45,18 @@ namespace System.IO {
 
 		public DriveInfo (string driveName)
 		{
-			DriveInfo [] drives = GetDrives ();
+			if (!Environment.IsUnix) {
+				if (driveName == null || driveName.Length == 0)
+					throw new ArgumentException ("The drive name is null or empty", "driveName");
+
+				if (driveName.Length >= 2 && driveName [1] != ':')
+					throw new ArgumentException ("Invalid drive name", "driveName");
+
+				// Convert the path to a standard format so we can find it later.
+				driveName = String.Concat (Char.ToUpper (driveName [0]).ToString (), ":\\");
+			}
 
+			DriveInfo [] drives = GetDrives ();
 			foreach (DriveInfo d in drives){
 				if (d.path == driveName){
 					this.path = d.path;
@@ -163,7 +173,7 @@ namespace System.IO {
 		static DriveInfo [] LinuxGetDrives ()
 		{
 			using (StreamReader mounts = TryOpen ("/proc/mounts")){
-				ArrayList drives = new ArrayList ();
+				var drives = new List<DriveInfo> ();
 				string line;
 				
 				while ((line = mounts.ReadLine ()) != null){
@@ -177,7 +187,7 @@ namespace System.IO {
 					drives.Add (new DriveInfo (_DriveType.Linux, path, fstype));
 				}
 
-				return (DriveInfo []) drives.ToArray (typeof (DriveInfo));
+				return drives.ToArray ();
 			}
 		}
 
@@ -190,7 +200,6 @@ namespace System.IO {
 				if (slash >= 0) {
 					if (sb == null)
 						sb = new StringBuilder ();
-					string str = path.Substring (start, slash - start);
 					sb.Append (path.Substring (start, slash - start));
 					char c = (char) ((path [slash + 1] - '0') << 6);
 					c += (char) ((path [slash + 2] - '0') << 3);
@@ -233,10 +242,16 @@ namespace System.IO {
 
 		static DriveInfo [] WindowsGetDrives ()
 		{
-			throw new NotImplementedException ();
+			string [] drives = Environment.GetLogicalDrives ();
+			DriveInfo [] infos = new DriveInfo [drives.Length];
+			int i = 0;
+			foreach (string s in drives) {
+				infos [i++] = new DriveInfo (_DriveType.Windows, s, "Fixed");
+			}
+			return infos;
 		}
 		
-		[MonoTODO("Currently only implemented on Mono/Linux")]
+		[MonoTODO("In windows, alldrives are 'Fixed'")]
 		public static DriveInfo[] GetDrives ()
 		{
 			if (Environment.IsUnix)
diff --git a/mcs/class/corlib/System.IO/File.cs b/mcs/class/corlib/System.IO/File.cs
index 733377e..d768e94 100644
--- a/mcs/class/corlib/System.IO/File.cs
+++ b/mcs/class/corlib/System.IO/File.cs
@@ -612,24 +612,23 @@ namespace System.IO
 #if MOONLIGHT || NET_4_0
 		public static IEnumerable<string> ReadLines (string path)
 		{
-			using (StreamReader reader = File.OpenText (path)) {
-				return ReadLines (reader);
-			}
+			return ReadLines (File.OpenText (path));
 		}
 
 		public static IEnumerable<string> ReadLines (string path, Encoding encoding)
 		{
-			using (StreamReader reader = new StreamReader (path, encoding)) {
-				return ReadLines (reader);
-			}
+			return ReadLines (new StreamReader (path, encoding));
 		}
 
 		// refactored in order to avoid compiler-generated names for Moonlight tools
 		static IEnumerable<string> ReadLines (StreamReader reader)
 		{
-			string s;
-			while ((s = reader.ReadLine ()) != null)
-				yield return s;
+			using (reader) {
+				string s;
+				while ((s = reader.ReadLine ()) != null) {
+					yield return s;
+				}
+			}
 		}
 
 		public static void AppendAllLines (string path, IEnumerable<string> contents)
diff --git a/mcs/class/corlib/System.IO/FileStream.cs b/mcs/class/corlib/System.IO/FileStream.cs
index d3f4fb0..62fec8e 100644
--- a/mcs/class/corlib/System.IO/FileStream.cs
+++ b/mcs/class/corlib/System.IO/FileStream.cs
@@ -105,10 +105,7 @@ namespace System.IO
 #else
 			this.anonymous = false;
 #endif
-			if (isZeroSize)
-				bufferSize = 1;
-
-			InitBuffer (bufferSize);
+			InitBuffer (bufferSize, isZeroSize);
 
 			if (canseek) {
 				buf_start = MonoIO.Seek (handle, 0, SeekOrigin.Current, out error);
@@ -206,6 +203,7 @@ namespace System.IO
 				throw new ArgumentException ("Path is empty");
 			}
 
+			this.anonymous = anonymous;
 			// ignore the Inheritable flag
 			share &= ~FileShare.Inheritable;
 
@@ -314,7 +312,6 @@ namespace System.IO
 
 			this.access = access;
 			this.owner = true;
-			this.anonymous = anonymous;
 
 			/* Can we open non-files by name? */
 			
@@ -335,7 +332,7 @@ namespace System.IO
 				}
 			}
 
-			InitBuffer (bufferSize);
+			InitBuffer (bufferSize, false);
 
 			if (mode==FileMode.Append) {
 				this.Seek (0, SeekOrigin.End);
@@ -848,7 +845,7 @@ namespace System.IO
 			FlushBuffer ();
 		}
 
-#if NET_4_0
+#if NET_4_0 || MOONLIGHT
 		public virtual void Flush (bool flushToDisk)
 		{
 			FlushBuffer ();
@@ -1089,30 +1086,35 @@ namespace System.IO
 			return(amount);
 		}
 				
-		void InitBuffer (int size)
+		void InitBuffer (int size, bool isZeroSize)
 		{
-			if (size <= 0)
-				throw new ArgumentOutOfRangeException ("bufferSize", "Positive number required.");
-			
-			size = Math.Max (size, 8);
-			
-			//
-			// Instead of allocating a new default buffer use the
-			// last one if there is any available
-			//		
-			if (size <= DefaultBufferSize && buf_recycle != null) {
-				lock (buf_recycle_lock) {
-					if (buf_recycle != null) {
-						buf = buf_recycle;
-						buf_recycle = null;
+			if (isZeroSize) {
+				size = 0;
+				buf = new byte[1];
+			} else {
+				if (size <= 0)
+					throw new ArgumentOutOfRangeException ("bufferSize", "Positive number required.");
+
+				size = Math.Max (size, 8);
+
+				//
+				// Instead of allocating a new default buffer use the
+				// last one if there is any available
+				//		
+				if (size <= DefaultBufferSize && buf_recycle != null) {
+					lock (buf_recycle_lock) {
+						if (buf_recycle != null) {
+							buf = buf_recycle;
+							buf_recycle = null;
+						}
 					}
 				}
+
+				if (buf == null)
+					buf = new byte [size];
+				else
+					Array.Clear (buf, 0, size);
 			}
-			
-			if (buf == null)
-				buf = new byte [size];
-			else
-				Array.Clear (buf, 0, size);
 					
 			buf_size = size;
 //			buf_start = 0;
diff --git a/mcs/class/corlib/System.IO/Path.cs b/mcs/class/corlib/System.IO/Path.cs
index 9903e95..fefa577 100644
--- a/mcs/class/corlib/System.IO/Path.cs
+++ b/mcs/class/corlib/System.IO/Path.cs
@@ -748,7 +748,11 @@ namespace System.IO {
 		}
 
 #if NET_4_0 || MOONLIGHT
-		public static string Combine (params string [] paths)
+		public
+#else
+                internal
+#endif
+		static string Combine (params string [] paths)
 		{
 			if (paths == null)
 				throw new ArgumentNullException ("paths");
@@ -783,7 +787,12 @@ namespace System.IO {
 			return ret.ToString ();
 		}
 
-		public static string Combine (string path1, string path2, string path3)
+#if NET_4_0 || MOONLIGHT
+		public
+#else
+                internal
+#endif
+		static string Combine (string path1, string path2, string path3)
 		{
 			if (path1 == null)
 				throw new ArgumentNullException ("path1");
@@ -797,7 +806,12 @@ namespace System.IO {
 			return Combine (new string [] { path1, path2, path3 });
 		}
 
-		public static string Combine (string path1, string path2, string path3, string path4)
+#if NET_4_0 || MOONLIGHT
+		public
+#else
+                internal
+#endif
+		static string Combine (string path1, string path2, string path3, string path4)
 		{
 			if (path1 == null)
 				throw new ArgumentNullException ("path1");
@@ -813,7 +827,6 @@ namespace System.IO {
 			
 			return Combine (new string [] { path1, path2, path3, path4 });
 		}
-#endif
 
 		internal static void Validate (string path)
 		{
diff --git a/mcs/class/corlib/System.IO/Stream.cs b/mcs/class/corlib/System.IO/Stream.cs
index 17c8cc4..eeaedd8 100644
--- a/mcs/class/corlib/System.IO/Stream.cs
+++ b/mcs/class/corlib/System.IO/Stream.cs
@@ -105,6 +105,7 @@ namespace System.IO
 		public virtual void Close ()
 		{
 			Dispose (true);
+			GC.SuppressFinalize (this);
 		}
 
 		[ComVisible (false)]
diff --git a/mcs/class/corlib/System.IO/UnmanagedMemoryAccessor.cs b/mcs/class/corlib/System.IO/UnmanagedMemoryAccessor.cs
index b4a3632..71e2e67 100644
--- a/mcs/class/corlib/System.IO/UnmanagedMemoryAccessor.cs
+++ b/mcs/class/corlib/System.IO/UnmanagedMemoryAccessor.cs
@@ -27,7 +27,7 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
 
 using System;
 using System.Runtime.InteropServices;
@@ -35,6 +35,7 @@ using System.Security.Permissions;
 
 namespace System.IO
 {
+	[MonoTODO ("Offset is ignored")]
 	public class UnmanagedMemoryAccessor : IDisposable {
 		SafeBuffer buffer;
 		long offset;
@@ -64,8 +65,6 @@ namespace System.IO
 				throw new ArgumentOutOfRangeException ("offset");
 			if (capacity < 0)
 				throw new ArgumentOutOfRangeException ("capacity");
-			if (offset + capacity < 0)
-				throw new InvalidOperationException ();
 
 			if (access == FileAccess.Read || access == FileAccess.ReadWrite)
 				canread = true;
diff --git a/mcs/class/corlib/System.Reflection.Emit/AssemblyBuilder.cs b/mcs/class/corlib/System.Reflection.Emit/AssemblyBuilder.cs
index 4422b15..5f49190 100644
--- a/mcs/class/corlib/System.Reflection.Emit/AssemblyBuilder.cs
+++ b/mcs/class/corlib/System.Reflection.Emit/AssemblyBuilder.cs
@@ -428,12 +428,13 @@ namespace System.Reflection.Emit
 #endif
 		}
 
+		// Still in use by al.exe
 		internal void EmbedResourceFile (string name, string fileName)
 		{
 			EmbedResourceFile (name, fileName, ResourceAttributes.Public);
 		}
 
-		internal void EmbedResourceFile (string name, string fileName, ResourceAttributes attribute)
+		void EmbedResourceFile (string name, string fileName, ResourceAttributes attribute)
 		{
 			if (resources != null) {
 				MonoResource[] new_r = new MonoResource [resources.Length + 1];
@@ -452,10 +453,9 @@ namespace System.Reflection.Emit
 				s.Read (resources [p].data, 0, (int)len);
 				s.Close ();
 			} catch {
-				/* do something */
 			}
 		}
-
+/*
 		internal void EmbedResource (string name, byte[] blob, ResourceAttributes attribute)
 		{
 			if (resources != null) {
@@ -470,7 +470,7 @@ namespace System.Reflection.Emit
 			resources [p].attrs = attribute;
 			resources [p].data = blob;
 		}
-
+*/
 		internal void AddTypeForwarder (Type t) {
 			if (t == null)
 				throw new ArgumentNullException ("t");
@@ -610,6 +610,8 @@ namespace System.Reflection.Emit
 			/*
 			 * The format of the argument byte array is not documented
 			 * so this method is impossible to implement.
+			 *
+			 * https://connect.microsoft.com/VisualStudio/feedback/details/95784/fatal-assemblybuilder-defineunmanagedresource-byte-and-modulebuilder-defineunmanagedresource-byte-bugs-renders-them-useless
 			 */
 
 			throw new NotImplementedException ();
@@ -1254,11 +1256,11 @@ namespace System.Reflection.Emit
 			Module[] modules = GetModulesInternal ();
 
 			if (!getResourceModules) {
-				ArrayList result = new ArrayList (modules.Length);
+				var result = new List<Module> (modules.Length);
 				foreach (Module m in modules)
 					if (!m.IsResource ())
 						result.Add (m);
-				return (Module[])result.ToArray (typeof (Module));
+				return result.ToArray ();
 			}
 			return modules;
 		}
diff --git a/mcs/class/corlib/System.Reflection.Emit/ChangeLog b/mcs/class/corlib/System.Reflection.Emit/ChangeLog
index 0546187..a264099 100644
--- a/mcs/class/corlib/System.Reflection.Emit/ChangeLog
+++ b/mcs/class/corlib/System.Reflection.Emit/ChangeLog
@@ -1,3 +1,88 @@
+2011-01-06  Zoltan Varga  <vargaz at gmail.com>
+
+	Change some usages of ArrayList to List<T> to avoid calls to the
+	slow ArrayList.ToArray(Type) method.
+
+2010-12-13  Marek Safar  <marek.safar at gmail.com>
+
+	Re-enable EmbedResourceFile overload used by al.exe
+
+2010-12-03  Marek Safar  <marek.safar at gmail.com>
+
+	Don't throw an obsolete exception
+
+2010-11-30  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* CustomAttributeBuilder.cs (Initialize): Check if we are not
+	passing null as values to valuetypes as this is invalid.
+
+	Fixes #515938
+
+2010-11-26  Marek Safar  <marek.safar at gmail.com>
+
+	Switch symbol writer to public api
+
+2010-11-22  Marek Safar  <marek.safar at gmail.com>
+
+	Removed SetCharSet
+
+2010-11-22  Marek Safar  <marek.safar at gmail.com>
+
+	Comment out no longer used code
+
+2010-11-22  Marek Safar  <marek.safar at gmail.com>
+
+	Add comment details to DefineUnmanagedResource
+
+2010-11-08  Marek Safar  <marek.safar at gmail.com>
+
+	API compatibility work
+
+2010-10-26  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* ModuleBuilder.cs: Add missing 'same-module' check for
+	GetConstructorToken just like methods and fields already have
+
+2010-10-26  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Fix exception message
+
+2010-10-26  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* TypeBuilder.cs (GetField): Check if the declaring type matches
+	the supplied type gtd.
+
+2010-10-25  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* ILGenerator.cs (TokenGenerator): GetToken now taken an extra
+	argument create_open_instance if it should encode a gtd as a
+	generic instance.
+
+	* ILGenerator.cs (ILGenerator): Ask TokenGenerator to create an
+	open instance under all cases but if the opcode is ldtoken.
+
+	* ModuleBuilder.cs: Adjust to signature change.
+
+	* DynamicMethod.cs: Ditto.
+
+2010-10-22  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* TypeBuilder.cs (GetConstructor): Check if the ctor declaring
+	type is the right one and the same as type.
+
+2010-10-15  Marek Safar  <marek.safar at gmail.com>
+
+	Warnings cleanup
+
+2010-10-07  Jb Evain  <jbevain at gmail.com>
+
+	[Fix] FieldBuilder.ctor: properly register FieldBuilder token.
+
+	We were previously relying on the runtime to register the token
+	for FieldBuilders, but this has issues with fields on generics
+	types as it would create a MemberRef token instead of a Field
+	token.
+
 2010-09-20  Rodrigo Kumpera  <kumpera at gmail.com>
 
 	Report the broken type name instead of assembly's.
@@ -19,6 +104,16 @@
 	This change is required because calling into the runtime with
 	incomplete TypeBuilders cause the runtime to crash.
 
+2010-09-13  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* MethodBuilder.cs (GetGenericArguments): No need to check for
+	compiler context. It's gone.
+
+2010-09-13  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* MethodBuilder.cs (GetGenericArguments): Return null if not
+	generic.
+
 2010-08-31  Rodrigo Kumpera  <kumpera at gmail.com>
 
 	* TypeBuilder.cs (DefineDefaultConstructor): If the resolved type
diff --git a/mcs/class/corlib/System.Reflection.Emit/CustomAttributeBuilder.cs b/mcs/class/corlib/System.Reflection.Emit/CustomAttributeBuilder.cs
index 06492ed..b1f7a49 100644
--- a/mcs/class/corlib/System.Reflection.Emit/CustomAttributeBuilder.cs
+++ b/mcs/class/corlib/System.Reflection.Emit/CustomAttributeBuilder.cs
@@ -117,6 +117,18 @@ namespace System.Reflection.Emit {
 			return true;
 		}
 
+		static bool IsValidValue (Type type, object value) {
+			if (type.IsValueType && value == null)
+				return false;
+			if (type.IsArray && type.GetElementType ().IsValueType) {
+				foreach (var v in (Array)value) {
+					if (v == null)
+						return false;
+				}
+			}
+			return true;
+		} 
+
 		private void Initialize (ConstructorInfo con, object [] constructorArgs,
 				PropertyInfo [] namedProperties, object [] propertyValues,
 				FieldInfo [] namedFields, object [] fieldValues)
@@ -156,6 +168,8 @@ namespace System.Reflection.Emit {
 					throw new ArgumentException ("Field '" + fi.Name + "' does not belong to the same class as the constructor");
 				if (!IsValidType (fi.FieldType))
 					throw new ArgumentException ("Field '" + fi.Name + "' does not have a valid type.");
+				if (!IsValidValue (fi.FieldType, fieldValues [i]))
+					throw new ArgumentException ("Field " + fi.Name + " is not a valid value.");
 				// FIXME: Check enums and TypeBuilders as well
 				if (fieldValues [i] != null)
 					// IsEnum does not seem to work on TypeBuilders
@@ -179,6 +193,8 @@ namespace System.Reflection.Emit {
 					throw new ArgumentException ("Property '" + pi.Name + "' does not belong to the same class as the constructor");
 				if (!IsValidType (pi.PropertyType))
 					throw new ArgumentException ("Property '" + pi.Name + "' does not have a valid type.");
+				if (!IsValidValue (pi.PropertyType, propertyValues [i]))
+					throw new ArgumentException ("Property " + pi.Name + " is not a valid value.");
 				if (propertyValues [i] != null) {
 					if (!(pi.PropertyType is TypeBuilder) && !pi.PropertyType.IsEnum && !pi.PropertyType.IsInstanceOfType (propertyValues [i]))
 						if (!pi.PropertyType.IsArray)
@@ -193,12 +209,15 @@ namespace System.Reflection.Emit {
 					Type paramType = pi.ParameterType;
 					if (!IsValidType (paramType))
 						throw new ArgumentException ("Parameter " + i + " does not have a valid type.");
+					if (!IsValidValue (paramType, constructorArgs [i]))
+						throw new ArgumentException ("Parameter " + i + " is not a valid value.");
+					
 					if (constructorArgs [i] != null) {
 						if (!(paramType is TypeBuilder) && !paramType.IsEnum && !paramType.IsInstanceOfType (constructorArgs [i]))
 							if (!paramType.IsArray)
 								throw new ArgumentException ("Value of argument " + i + " does not match parameter type: " + paramType + " -> " + constructorArgs [i]);
 						if (!IsValidParam (constructorArgs [i], paramType))
-							throw new ArgumentException ("Cannot emit a CustomAttribute with argument of type " + constructorArgs [i].GetType () + ".");
+							throw new ArgumentException ("Cannot emit a CustomAttribute with argument of type " + constructorArgs [i].GetType () + "."); 
 					}
 				}
 				i ++;
diff --git a/mcs/class/corlib/System.Reflection.Emit/DynamicMethod.cs b/mcs/class/corlib/System.Reflection.Emit/DynamicMethod.cs
index 44d4f37..9af5601 100644
--- a/mcs/class/corlib/System.Reflection.Emit/DynamicMethod.cs
+++ b/mcs/class/corlib/System.Reflection.Emit/DynamicMethod.cs
@@ -432,7 +432,7 @@ namespace System.Reflection.Emit {
 			throw new InvalidOperationException ();
 		}
 
-		public int GetToken (MemberInfo member) {
+		public int GetToken (MemberInfo member, bool create_open_instance) {
 			return m.AddRef (member);
 		}
 
diff --git a/mcs/class/corlib/System.Reflection.Emit/FieldBuilder.cs b/mcs/class/corlib/System.Reflection.Emit/FieldBuilder.cs
index 43550f8..93e7dc4 100644
--- a/mcs/class/corlib/System.Reflection.Emit/FieldBuilder.cs
+++ b/mcs/class/corlib/System.Reflection.Emit/FieldBuilder.cs
@@ -73,6 +73,8 @@ namespace System.Reflection.Emit {
 			offset = -1;
 			typeb = tb;
 			table_idx = tb.get_next_table_index (this, 0x04, true);
+
+			((ModuleBuilder) tb.Module).RegisterToken (this, GetToken ().Token);
 		}
 
 		public override FieldAttributes Attributes {
diff --git a/mcs/class/corlib/System.Reflection.Emit/ILGenerator.cs b/mcs/class/corlib/System.Reflection.Emit/ILGenerator.cs
index 5a57315..adb39bb 100644
--- a/mcs/class/corlib/System.Reflection.Emit/ILGenerator.cs
+++ b/mcs/class/corlib/System.Reflection.Emit/ILGenerator.cs
@@ -177,7 +177,7 @@ namespace System.Reflection.Emit {
 	internal interface TokenGenerator {
 		int GetToken (string str);
 
-		int GetToken (MemberInfo member);
+		int GetToken (MemberInfo member, bool create_open_instance);
 
 		int GetToken (MethodInfo method, Type[] opt_param_types);
 
@@ -516,7 +516,7 @@ namespace System.Reflection.Emit {
 		[ComVisible (true)]
 		public virtual void Emit (OpCode opcode, ConstructorInfo con)
 		{
-			int token = token_gen.GetToken (con);
+			int token = token_gen.GetToken (con, true);
 			make_room (6);
 			ll_emit (opcode);
 			if (con.DeclaringType.Module == module)
@@ -549,7 +549,7 @@ namespace System.Reflection.Emit {
 		
 		public virtual void Emit (OpCode opcode, FieldInfo field)
 		{
-			int token = token_gen.GetToken (field);
+			int token = token_gen.GetToken (field, true);
 			make_room (6);
 			ll_emit (opcode);
 			if (field.DeclaringType.Module == module)
@@ -729,7 +729,7 @@ namespace System.Reflection.Emit {
 			if ((meth is DynamicMethod) && ((opcode == OpCodes.Ldftn) || (opcode == OpCodes.Ldvirtftn) || (opcode == OpCodes.Ldtoken)))
 				throw new ArgumentException ("Ldtoken, Ldftn and Ldvirtftn OpCodes cannot target DynamicMethods.");
 
-			int token = token_gen.GetToken (meth);
+			int token = token_gen.GetToken (meth, true);
 			make_room (6);
 			ll_emit (opcode);
 			Type declaringType = meth.DeclaringType;
@@ -811,7 +811,7 @@ namespace System.Reflection.Emit {
 
 			make_room (6);
 			ll_emit (opcode);
-			emit_int (token_gen.GetToken (cls));
+			emit_int (token_gen.GetToken (cls, opcode != OpCodes.Ldtoken));
 		}
 
 		[MonoLimitation ("vararg methods are not supported")]
@@ -1010,7 +1010,7 @@ namespace System.Reflection.Emit {
 			return ig.code_len;
 		}	
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
 		public
 #else
 		internal
diff --git a/mcs/class/corlib/System.Reflection.Emit/LocalBuilder.cs b/mcs/class/corlib/System.Reflection.Emit/LocalBuilder.cs
index 2c999b7..b9ee86e 100644
--- a/mcs/class/corlib/System.Reflection.Emit/LocalBuilder.cs
+++ b/mcs/class/corlib/System.Reflection.Emit/LocalBuilder.cs
@@ -95,11 +95,6 @@ namespace System.Reflection.Emit {
 			}
 		}
 
-		internal static int Mono_GetLocalIndex (LocalBuilder builder)
-		{
-			return builder.position;
-		}
-
 		internal string Name {
 			get { return name; }
 		}
diff --git a/mcs/class/corlib/System.Reflection.Emit/MethodBuilder.cs b/mcs/class/corlib/System.Reflection.Emit/MethodBuilder.cs
index 99de11c..652be5e 100644
--- a/mcs/class/corlib/System.Reflection.Emit/MethodBuilder.cs
+++ b/mcs/class/corlib/System.Reflection.Emit/MethodBuilder.cs
@@ -533,20 +533,20 @@ namespace System.Reflection.Emit
 			return new NotSupportedException ("The invoked member is not supported in a dynamic module.");
 		}
 
-		public override MethodInfo MakeGenericMethod (params Type [] methodInstantiation)
+		public override MethodInfo MakeGenericMethod (params Type [] typeArguments)
 		{
 			if (!IsGenericMethodDefinition)
 				throw new InvalidOperationException ("Method is not a generic method definition");
-			if (methodInstantiation == null)
-				throw new ArgumentNullException ("methodInstantiation");
-			if (generic_params.Length != methodInstantiation.Length)
-				throw new ArgumentException ("Incorrect length", "methodInstantiation");
-			foreach (Type type in methodInstantiation) {
+			if (typeArguments == null)
+				throw new ArgumentNullException ("typeArguments");
+			if (generic_params.Length != typeArguments.Length)
+				throw new ArgumentException ("Incorrect length", "typeArguments");
+			foreach (Type type in typeArguments) {
 				if (type == null)
-					throw new ArgumentNullException ("methodInstantiation");
+					throw new ArgumentNullException ("typeArguments");
 			}
 
-			return new MethodOnTypeBuilderInst (this, methodInstantiation);
+			return new MethodOnTypeBuilderInst (this, typeArguments);
 		}
 
 		public override bool IsGenericMethodDefinition {
@@ -572,7 +572,7 @@ namespace System.Reflection.Emit
 		public override Type[] GetGenericArguments ()
 		{
 			if (generic_params == null)
-				return Type.EmptyTypes;
+				return null;
 
 			Type[] result = new Type [generic_params.Length];
 			for (int i = 0; i < generic_params.Length; i++)
diff --git a/mcs/class/corlib/System.Reflection.Emit/ModuleBuilder.cs b/mcs/class/corlib/System.Reflection.Emit/ModuleBuilder.cs
index 3ae338b..2be3940 100644
--- a/mcs/class/corlib/System.Reflection.Emit/ModuleBuilder.cs
+++ b/mcs/class/corlib/System.Reflection.Emit/ModuleBuilder.cs
@@ -108,12 +108,9 @@ namespace System.Reflection.Emit {
 #else
 				Assembly asm = Assembly.LoadWithPartialName ("Mono.CompilerServices.SymbolWriter");
 				if (asm == null)
-					throw new ExecutionEngineException ("The assembly for default symbol writer cannot be loaded");
-
-				Type t = asm.GetType ("Mono.CompilerServices.SymbolWriter.SymbolWriterImpl");
-				if (t == null)
-					throw new ExecutionEngineException ("The type that implements the default symbol writer interface cannot be found");
+					throw new TypeLoadException ("The assembly for default symbol writer cannot be loaded");
 
+				Type t = asm.GetType ("Mono.CompilerServices.SymbolWriter.SymbolWriterImpl", true);
 				symbolWriter = (ISymbolWriter) Activator.CreateInstance (t, new object[] { this });
 #endif
 				string fileName = fqname;
@@ -604,6 +601,8 @@ namespace System.Reflection.Emit {
 		{
 			if (con == null)
 				throw new ArgumentNullException ("con");
+			if (con.DeclaringType.Module != this)
+				throw new InvalidOperationException ("The constructor is not in this module");
 			return new MethodToken (GetToken (con));
 		}
 
@@ -656,7 +655,7 @@ namespace System.Reflection.Emit {
 		private static extern int getUSIndex (ModuleBuilder mb, string str);
 
 		[MethodImplAttribute(MethodImplOptions.InternalCall)]
-		private static extern int getToken (ModuleBuilder mb, object obj);
+		private static extern int getToken (ModuleBuilder mb, object obj, bool create_open_instance);
 
 		[MethodImplAttribute(MethodImplOptions.InternalCall)]
 		private static extern int getMethodToken (ModuleBuilder mb, MethodInfo method,
@@ -674,7 +673,11 @@ namespace System.Reflection.Emit {
 		}
 
 		internal int GetToken (MemberInfo member) {
-			return getToken (this, member);
+			return getToken (this, member, true);
+		}
+
+		internal int GetToken (MemberInfo member, bool create_open_instance) {
+			return getToken (this, member, create_open_instance);
 		}
 
 		internal int GetToken (MethodInfo method, Type[] opt_param_types) {
@@ -682,7 +685,7 @@ namespace System.Reflection.Emit {
 		}
 
 		internal int GetToken (SignatureHelper helper) {
-			return getToken (this, helper);
+			return getToken (this, helper, true);
 		}
 
 		/*
@@ -931,8 +934,8 @@ namespace System.Reflection.Emit {
 			return mb.GetToken (str);
 		}
 
-		public int GetToken (MemberInfo member) {
-			return mb.GetToken (member);
+		public int GetToken (MemberInfo member, bool create_open_instance) {
+			return mb.GetToken (member, create_open_instance);
 		}
 
 		public int GetToken (MethodInfo method, Type[] opt_param_types) {
diff --git a/mcs/class/corlib/System.Reflection.Emit/PropertyBuilder.cs b/mcs/class/corlib/System.Reflection.Emit/PropertyBuilder.cs
index de68d6a..6bbfff1 100644
--- a/mcs/class/corlib/System.Reflection.Emit/PropertyBuilder.cs
+++ b/mcs/class/corlib/System.Reflection.Emit/PropertyBuilder.cs
@@ -44,6 +44,7 @@ namespace System.Reflection.Emit {
 	[ClassInterface (ClassInterfaceType.None)]
 	public sealed class PropertyBuilder : PropertyInfo, _PropertyBuilder {
 
+// Managed version of MonoReflectionPropertyBuilder
 #pragma warning disable 169, 414
 		private PropertyAttributes attrs;
 		private string name;
@@ -59,8 +60,8 @@ namespace System.Reflection.Emit {
 		private Type[] returnModOpt;
 		private Type[][] paramModReq;
 		private Type[][] paramModOpt;
+		CallingConventions callingConvention;		
 #pragma warning restore 169, 414
-		CallingConventions callingConvention;	// TODO: Implement
 		
 		internal PropertyBuilder (TypeBuilder tb, string name, PropertyAttributes attributes, CallingConventions callingConvention, Type returnType, Type[] returnModReq, Type[] returnModOpt, Type[] parameterTypes, Type[][] paramModReq, Type[][] paramModOpt)
 		{
diff --git a/mcs/class/corlib/System.Reflection.Emit/TypeBuilder.cs b/mcs/class/corlib/System.Reflection.Emit/TypeBuilder.cs
index 3115d00..e9486cf 100644
--- a/mcs/class/corlib/System.Reflection.Emit/TypeBuilder.cs
+++ b/mcs/class/corlib/System.Reflection.Emit/TypeBuilder.cs
@@ -1435,14 +1435,6 @@ namespace System.Reflection.Emit
 			}
 		}
 		
-		//
-		// Used internally by mcs only
-		//
-		internal void SetCharSet (TypeAttributes ta)
-		{
-			this.attrs = ta;
-		}
-
 		public void SetCustomAttribute (CustomAttributeBuilder customBuilder)
 		{
 			if (customBuilder == null)
@@ -1827,6 +1819,11 @@ namespace System.Reflection.Emit
 			if (constructor == null)
 				throw new NullReferenceException (); //MS raises this instead of an ArgumentNullException
 
+			if (!constructor.DeclaringType.IsGenericTypeDefinition)
+				throw new ArgumentException ("constructor declaring type is not a generic type definition", "constructor");
+			if (constructor.DeclaringType != type.GetGenericTypeDefinition ())
+				throw new ArgumentException ("constructor declaring type is not the generic type definition of type", "constructor");
+
 			ConstructorInfo res = type.GetConstructor (constructor);
 			if (res == null)
 				throw new ArgumentException ("constructor not found");
@@ -1890,6 +1887,9 @@ namespace System.Reflection.Emit
 			if (field is FieldOnTypeBuilderInst)
 				throw new ArgumentException ("The specified field must be declared on a generic type definition.", "field");
 
+			if (field.DeclaringType != type.GetGenericTypeDefinition ())
+				throw new ArgumentException ("field declaring type is not the generic type definition of type", "method");
+
 			FieldInfo res = type.GetField (field);
 			if (res == null)
 				throw new System.Exception ("field not found");
diff --git a/mcs/class/corlib/System.Reflection/Assembly.cs b/mcs/class/corlib/System.Reflection/Assembly.cs
index 53ec6bf..89d3871 100644
--- a/mcs/class/corlib/System.Reflection/Assembly.cs
+++ b/mcs/class/corlib/System.Reflection/Assembly.cs
@@ -37,7 +37,6 @@ using System.IO;
 using System.Globalization;
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
-using System.Collections;
 using System.Collections.Generic;
 using System.Configuration.Assemblies;
 
@@ -45,13 +44,11 @@ using Mono.Security;
 
 namespace System.Reflection {
 
-#pragma warning disable 659 // overrides Equals but not GetHashCode
-
 	[ComVisible (true)]
 	[ComDefaultInterfaceAttribute (typeof (_Assembly))]
 	[Serializable]
 	[ClassInterface(ClassInterfaceType.None)]
-#if MONOTOUCH
+#if MOBILE
 	public partial class Assembly : ICustomAttributeProvider, _Assembly {
 #elif MOONLIGHT
 	public abstract class Assembly : ICustomAttributeProvider, _Assembly {
@@ -597,9 +594,7 @@ namespace System.Reflection {
 			return LoadFrom (assemblyFile, true);
 		}
 
-#if NET_4_0
 		[Obsolete]
-#endif
 		public static Assembly LoadWithPartialName (string partialName)
 		{
 			return LoadWithPartialName (partialName, null);
@@ -624,9 +619,7 @@ namespace System.Reflection {
 		[MethodImplAttribute (MethodImplOptions.InternalCall)]
 		private static extern Assembly load_with_partial_name (string name, Evidence e);
 
-#if NET_4_0
 		[Obsolete]
-#endif
 		public static Assembly LoadWithPartialName (string partialName, Evidence securityEvidence)
 		{
 			return LoadWithPartialName (partialName, securityEvidence, true);
@@ -780,6 +773,11 @@ namespace System.Reflection {
 			[MethodImplAttribute (MethodImplOptions.InternalCall)]
 			get;
 		}
+		
+		public override int GetHashCode ()
+		{
+			return base.GetHashCode ();
+		}
 
 		public override bool Equals (object o)
 		{
@@ -946,11 +944,6 @@ namespace System.Reflection {
 			get { return false; }
 		}
 
-		public override int GetHashCode ()
-		{
-			return base.GetHashCode ();
-		}
-
 		public static bool operator == (Assembly left, Assembly right)
 		{
 			if ((object)left == (object)right)
@@ -971,5 +964,3 @@ namespace System.Reflection {
 #endif
 	}
 }
-
-#pragma warning restore 659
diff --git a/mcs/class/corlib/System.Reflection/AssemblyName.cs b/mcs/class/corlib/System.Reflection/AssemblyName.cs
index b499320..c091160 100644
--- a/mcs/class/corlib/System.Reflection/AssemblyName.cs
+++ b/mcs/class/corlib/System.Reflection/AssemblyName.cs
@@ -150,7 +150,10 @@ namespace System.Reflection {
 				if (name == null)
 					return string.Empty;
 				StringBuilder fname = new StringBuilder ();
-				fname.Append (name);
+				if (Char.IsWhiteSpace (name [0]))
+					fname.Append ("\"" + name + "\"");
+				else
+					fname.Append (name);
 				if (Version != null) {
 					fname.Append (", Version=");
 					fname.Append (Version.ToString ());
diff --git a/mcs/class/corlib/System.Reflection/ChangeLog b/mcs/class/corlib/System.Reflection/ChangeLog
index e61d284..f19c705 100644
--- a/mcs/class/corlib/System.Reflection/ChangeLog
+++ b/mcs/class/corlib/System.Reflection/ChangeLog
@@ -1,3 +1,55 @@
+2011-01-06  Zoltan Varga  <vargaz at gmail.com>
+
+	Change some usages of ArrayList to List<T> to avoid calls to the
+	slow ArrayList.ToArray(Type) method.
+
+2011-01-05  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Fix operator != handling of LHS null
+
+2010-12-15  Marek Safar  <marek.safar at gmail.com>
+
+	Some .net 4.0 api compatibility fixes
+
+2010-11-08  Marek Safar  <marek.safar at gmail.com>
+
+	API compatibility work
+
+2010-10-27  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* MonoMethod.cs: Add new icall for ::Attributes.
+
+2010-10-15  Zoltan Varga  <vargaz at gmail.com>
+
+	Add support for assembly names with embedded and starting spaces.
+
+2010-10-15  Marek Safar  <marek.safar at gmail.com>
+
+	Warnings cleanup
+
+2010-10-04  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* MonoGenericClass.cs (.ctor): Only register with the runtime when
+	the underlying TB is not finished.
+
+2010-09-20  Jb Evain  <jbevain at gmail.com>
+
+	Revert "[Fix] Fix the default binder when selecting params
+	methods."
+
+	This reverts commit 6a7443d8089c92f722d87c81f6c7d22c2c0deafb.
+
+2010-09-10  Jb Evain  <jbevain at gmail.com>
+
+	[Fix] Fix the default binder when selecting params methods.
+
+	Use full assignability check instead of type equality when
+	selecting methods with a params array parameter. Fixes #636939.
+
+2010-09-08  Jb Evain  <jbevain at gmail.com>
+
+	Enable the corlib build for monodroid
+
 2010-08-25  Rodrigo Kumpera  <kumpera at gmail.com>
 
 	* MonoProperty.cs: Don't share the same field with DeclaringType
diff --git a/mcs/class/corlib/System.Reflection/ConstructorInfo.cs b/mcs/class/corlib/System.Reflection/ConstructorInfo.cs
index f77f31a..5daf826 100644
--- a/mcs/class/corlib/System.Reflection/ConstructorInfo.cs
+++ b/mcs/class/corlib/System.Reflection/ConstructorInfo.cs
@@ -108,7 +108,7 @@ namespace System.Reflection {
 #if NET_4_0
 		public override bool Equals (object obj)
 		{
-			return obj == this;
+			return obj == (object) this;
 		}
 
 		public override int GetHashCode ()
diff --git a/mcs/class/corlib/System.Reflection/CustomAttributeNamedArgument.cs b/mcs/class/corlib/System.Reflection/CustomAttributeNamedArgument.cs
index 1d66a37..5303441 100644
--- a/mcs/class/corlib/System.Reflection/CustomAttributeNamedArgument.cs
+++ b/mcs/class/corlib/System.Reflection/CustomAttributeNamedArgument.cs
@@ -37,12 +37,23 @@ namespace System.Reflection {
 	public struct CustomAttributeNamedArgument {
 		CustomAttributeTypedArgument typedArgument;
 		MemberInfo memberInfo;
-
-		internal CustomAttributeNamedArgument (MemberInfo memberInfo, object typedArgument)
+		
+#if NET_4_0
+		public
+#endif
+		CustomAttributeNamedArgument (MemberInfo memberInfo, object value)
+		{
+			this.memberInfo = memberInfo;
+			this.typedArgument = (CustomAttributeTypedArgument) value;
+		}
+		
+#if NET_4_0
+		public CustomAttributeNamedArgument (MemberInfo memberInfo, CustomAttributeTypedArgument typedArgument)
 		{
 			this.memberInfo = memberInfo;
-			this.typedArgument = (CustomAttributeTypedArgument) typedArgument;
+			this.typedArgument = typedArgument;
 		}
+#endif
 
 		public MemberInfo MemberInfo {
 			get {
diff --git a/mcs/class/corlib/System.Reflection/CustomAttributeTypedArgument.cs b/mcs/class/corlib/System.Reflection/CustomAttributeTypedArgument.cs
index 1552b4b..c73e32c 100644
--- a/mcs/class/corlib/System.Reflection/CustomAttributeTypedArgument.cs
+++ b/mcs/class/corlib/System.Reflection/CustomAttributeTypedArgument.cs
@@ -40,8 +40,14 @@ namespace System.Reflection {
 		Type argumentType;
 		object value;
 
-		internal CustomAttributeTypedArgument (Type argumentType, object value)
+#if NET_4_0
+		public
+#endif
+		CustomAttributeTypedArgument (Type argumentType, object value)
 		{
+			if (argumentType == null)
+				throw new ArgumentNullException ("argumentType");
+
 			this.argumentType = argumentType;
 			this.value = value;
 
@@ -56,6 +62,17 @@ namespace System.Reflection {
 				this.value = new ReadOnlyCollection <CustomAttributeTypedArgument> (new_value);
 			}
 		}
+		
+#if NET_4_0
+		public CustomAttributeTypedArgument (object value)
+		{
+			if (value == null)
+				throw new ArgumentNullException ("value");
+
+			this.argumentType = value.GetType ();
+			this.value = value;
+		}
+#endif
 
 		public Type ArgumentType {
 			get {
diff --git a/mcs/class/corlib/System.Reflection/EventInfo.cs b/mcs/class/corlib/System.Reflection/EventInfo.cs
index 9137379..ffc3c89 100644
--- a/mcs/class/corlib/System.Reflection/EventInfo.cs
+++ b/mcs/class/corlib/System.Reflection/EventInfo.cs
@@ -140,7 +140,7 @@ namespace System.Reflection {
 #if NET_4_0
 		public override bool Equals (object obj)
 		{
-			return obj == this;
+			return obj == (object) this;
 		}
 
 		public override int GetHashCode ()
diff --git a/mcs/class/corlib/System.Reflection/FieldInfo.cs b/mcs/class/corlib/System.Reflection/FieldInfo.cs
index 3243d1f..29b9157 100644
--- a/mcs/class/corlib/System.Reflection/FieldInfo.cs
+++ b/mcs/class/corlib/System.Reflection/FieldInfo.cs
@@ -132,13 +132,6 @@ namespace System.Reflection {
 
 		public abstract void SetValue (object obj, object value, BindingFlags invokeAttr, Binder binder, CultureInfo culture);
 
-#if ONLY_1_1
-		public new Type GetType ()
-		{
-			return base.GetType ();
-		}
-#endif
-
 		[DebuggerHidden]
 		[DebuggerStepThrough]
 		public void SetValue (object obj, object value)
@@ -260,7 +253,7 @@ namespace System.Reflection {
 #if NET_4_0
 		public override bool Equals (object obj)
 		{
-			return obj == this;
+			return obj == (object) this;
 		}
 
 		public override int GetHashCode ()
diff --git a/mcs/class/corlib/System.Reflection/MemberInfo.cs b/mcs/class/corlib/System.Reflection/MemberInfo.cs
index a0cd127..455a191 100644
--- a/mcs/class/corlib/System.Reflection/MemberInfo.cs
+++ b/mcs/class/corlib/System.Reflection/MemberInfo.cs
@@ -81,7 +81,7 @@ namespace System.Reflection {
 #if NET_4_0
 		public override bool Equals (object obj)
 		{
-			return obj == this;
+			return obj == (object) this;
 		}
 
 		public override int GetHashCode ()
diff --git a/mcs/class/corlib/System.Reflection/MethodBase.cs b/mcs/class/corlib/System.Reflection/MethodBase.cs
index 6583702..9098421 100644
--- a/mcs/class/corlib/System.Reflection/MethodBase.cs
+++ b/mcs/class/corlib/System.Reflection/MethodBase.cs
@@ -226,7 +226,7 @@ namespace System.Reflection {
 #if NET_4_0
 		public override bool Equals (object obj)
 		{
-			return obj == this;
+			return obj == (object) this;
 		}
 
 		public override int GetHashCode ()
diff --git a/mcs/class/corlib/System.Reflection/MethodInfo.cs b/mcs/class/corlib/System.Reflection/MethodInfo.cs
index 13578f3..4b76a5d 100644
--- a/mcs/class/corlib/System.Reflection/MethodInfo.cs
+++ b/mcs/class/corlib/System.Reflection/MethodInfo.cs
@@ -58,17 +58,6 @@ namespace System.Reflection {
 
 		public abstract ICustomAttributeProvider ReturnTypeCustomAttributes { get; }
 
-		// FIXME: when this method is uncommented, corlib fails
-		// to build
-/*
-		[DebuggerStepThrough]
-		[DebuggerHidden]
-		public new object Invoke (object obj, object[] parameters)
-		{
-			return base.Invoke (obj, parameters);
-		}
-*/
-
 		void _MethodInfo.GetIDsOfNames ([In] ref Guid riid, IntPtr rgszNames, uint cNames, uint lcid, IntPtr rgDispId)
 		{
 			throw new NotImplementedException ();
@@ -136,7 +125,7 @@ namespace System.Reflection {
 #if NET_4_0
 		public override bool Equals (object obj)
 		{
-			return obj == this;
+			return obj == (object) this;
 		}
 
 		public override int GetHashCode ()
diff --git a/mcs/class/corlib/System.Reflection/Module.cs b/mcs/class/corlib/System.Reflection/Module.cs
index a4c3227..d266d34 100644
--- a/mcs/class/corlib/System.Reflection/Module.cs
+++ b/mcs/class/corlib/System.Reflection/Module.cs
@@ -291,9 +291,9 @@ namespace System.Reflection {
 		}
 
 #if NET_4_0
-		public override bool Equals (object obj)
+		public override bool Equals (object o)
 		{
-			return obj == this;
+			return o == (object) this;
 		}
 
 		public override int GetHashCode ()
@@ -312,7 +312,7 @@ namespace System.Reflection {
 
 		public static bool operator != (Module left, Module right)
 		{
-			if ((object)left != (object)right)
+			if ((object)left == (object)right)
 				return false;
 			if ((object)left == null ^ (object)right == null)
 				return true;
diff --git a/mcs/class/corlib/System.Reflection/MonoAssembly.cs b/mcs/class/corlib/System.Reflection/MonoAssembly.cs
index 938a4de..410e192 100644
--- a/mcs/class/corlib/System.Reflection/MonoAssembly.cs
+++ b/mcs/class/corlib/System.Reflection/MonoAssembly.cs
@@ -31,7 +31,7 @@ using System.Collections;
 using System.Globalization;
 using System.Runtime.InteropServices;
 using System.Reflection.Emit;
-
+using System.Collections.Generic;
 
 namespace System.Reflection {
 
@@ -103,11 +103,11 @@ namespace System.Reflection {
 			Module[] modules = GetModulesInternal ();
 
 			if (!getResourceModules) {
-				ArrayList result = new ArrayList (modules.Length);
+				var result = new List<Module> (modules.Length);
 				foreach (Module m in modules)
 					if (!m.IsResource ())
 						result.Add (m);
-				return (Module[])result.ToArray (typeof (Module));
+				return result.ToArray ();
 			}
 			else
 				return modules;
diff --git a/mcs/class/corlib/System.Reflection/MonoGenericClass.cs b/mcs/class/corlib/System.Reflection/MonoGenericClass.cs
index 5bace94..720b1cb 100644
--- a/mcs/class/corlib/System.Reflection/MonoGenericClass.cs
+++ b/mcs/class/corlib/System.Reflection/MonoGenericClass.cs
@@ -71,7 +71,17 @@ namespace System.Reflection
 		{
 			this.generic_type = tb;
 			this.type_arguments = args;
-			register_with_runtime (this); /*Temporary hack while*/
+			/*
+			This is a temporary hack until we can fix the rest of the runtime
+			to properly handle this class to be a complete UT.
+
+			We must not regisrer this with the runtime after the type is created
+			otherwise created_type.MakeGenericType will return an instance of MonoGenericClass,
+			which is very very broken.
+			*/
+			if (tb is TypeBuilder && !(tb as TypeBuilder).is_created)
+				register_with_runtime (this);
+			
 		}
 
 
@@ -266,11 +276,8 @@ namespace System.Reflection
 			if (type.IsArray) {
 				if (type.GetArrayRank () > 1)
 					return InflateType (type.GetElementType (), type_args, method_args).MakeArrayType (type.GetArrayRank ());
-#if BOOTSTRAP_NET_2_0
-				if (type.ToString ().EndsWith ("[*]"))
-#else
+				
 				if (type.ToString ().EndsWith ("[*]", StringComparison.Ordinal)) /*FIXME, the reflection API doesn't offer a way around this*/
-#endif
 					return InflateType (type.GetElementType (), type_args, method_args).MakeArrayType (1);
 				return InflateType (type.GetElementType (), type_args, method_args).MakeArrayType ();
 			}
diff --git a/mcs/class/corlib/System.Reflection/MonoMethod.cs b/mcs/class/corlib/System.Reflection/MonoMethod.cs
index c5fab64..b1079d6 100644
--- a/mcs/class/corlib/System.Reflection/MonoMethod.cs
+++ b/mcs/class/corlib/System.Reflection/MonoMethod.cs
@@ -54,6 +54,9 @@ namespace System.Reflection {
 		[MethodImplAttribute(MethodImplOptions.InternalCall)]
 		static extern void get_method_info (IntPtr handle, out MonoMethodInfo info);
 		
+		[MethodImplAttribute(MethodImplOptions.InternalCall)]
+		static extern int get_method_attributes (IntPtr handle);
+		
 		internal static MonoMethodInfo GetMethodInfo (IntPtr handle)
 		{
 			MonoMethodInfo info;
@@ -73,7 +76,7 @@ namespace System.Reflection {
 
 		internal static MethodAttributes GetAttributes (IntPtr handle)
 		{
-			return GetMethodInfo (handle).attrs;
+			return (MethodAttributes)get_method_attributes (handle);
 		}
 
 		internal static CallingConventions GetCallingConvention (IntPtr handle)
diff --git a/mcs/class/corlib/System.Reflection/MonoModule.cs b/mcs/class/corlib/System.Reflection/MonoModule.cs
index 6982f6a..19b07af 100644
--- a/mcs/class/corlib/System.Reflection/MonoModule.cs
+++ b/mcs/class/corlib/System.Reflection/MonoModule.cs
@@ -128,12 +128,12 @@ namespace System.Reflection {
 #endif
 		Type[] FindTypes(TypeFilter filter, object filterCriteria) 
 		{
-			System.Collections.ArrayList filtered = new System.Collections.ArrayList ();
+			var filtered = new List<Type> ();
 			Type[] types = GetTypes ();
 			foreach (Type t in types)
 				if (filter (t, filterCriteria))
 					filtered.Add (t);
-			return (Type[])filtered.ToArray (typeof(Type));
+			return filtered.ToArray ();
 		}
 
 #if NET_4_0 || MOONLIGHT
diff --git a/mcs/class/corlib/System.Reflection/PropertyInfo.cs b/mcs/class/corlib/System.Reflection/PropertyInfo.cs
index 10e9728..50a2124 100644
--- a/mcs/class/corlib/System.Reflection/PropertyInfo.cs
+++ b/mcs/class/corlib/System.Reflection/PropertyInfo.cs
@@ -70,13 +70,6 @@ namespace System.Reflection {
 		
 		public abstract ParameterInfo[] GetIndexParameters();
 
-#if ONLY_1_1
-		public new Type GetType ()
-		{
-			return base.GetType ();
-		}
-#endif
-
 		public MethodInfo GetSetMethod()
 		{
 			return GetSetMethod (false);
@@ -110,7 +103,8 @@ namespace System.Reflection {
 			return Type.EmptyTypes;
 		}
 
-		NotImplementedException CreateNIE () {
+		static NotImplementedException CreateNIE ()
+		{
 			return new NotImplementedException ();
 		}
 
@@ -125,7 +119,7 @@ namespace System.Reflection {
 #if NET_4_0
 		public override bool Equals (object obj)
 		{
-			return obj == this;
+			return obj == (object) this;
 		}
 
 		public override int GetHashCode ()
diff --git a/mcs/class/corlib/System.Resources/ChangeLog b/mcs/class/corlib/System.Resources/ChangeLog
index 870a6a6..e0e9c84 100644
--- a/mcs/class/corlib/System.Resources/ChangeLog
+++ b/mcs/class/corlib/System.Resources/ChangeLog
@@ -1,3 +1,18 @@
+2011-01-03  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Add a case-insensitive hashtable
+
+	Use a hashtable instead of a loop when 'ignoreCase' is set. Based
+	on a patch by Curtis Wensley.
+
+2010-12-15  Marek Safar  <marek.safar at gmail.com>
+
+	Keep only single Dispose implementation in ResourceReader
+
+2010-12-15  Marek Safar  <marek.safar at gmail.com>
+
+	Some .net 4.0 api compatibility fixes
+
 2010-07-07  Carlos Alberto Cortez <calberto.cortez at gmail.com>
 
 	4.0 updates.
diff --git a/mcs/class/corlib/System.Resources/ChangeLog b/mcs/class/corlib/System.Resources/ChangeLog.old
similarity index 100%
copy from mcs/class/corlib/System.Resources/ChangeLog
copy to mcs/class/corlib/System.Resources/ChangeLog.old
diff --git a/mcs/class/corlib/System.Resources/ResourceManager.cs b/mcs/class/corlib/System.Resources/ResourceManager.cs
index 0179475..5b8f3d5 100644
--- a/mcs/class/corlib/System.Resources/ResourceManager.cs
+++ b/mcs/class/corlib/System.Resources/ResourceManager.cs
@@ -302,14 +302,12 @@ namespace System.Resources
 			return null;
 		}
 
-		[CLSCompliant (false)]
 		[ComVisible (false)]
 		public UnmanagedMemoryStream GetStream (string name)
 		{
 			return GetStream (name, (CultureInfo) null);
 		}
 
-		[CLSCompliant (false)]
 		[ComVisible (false)]
 		public UnmanagedMemoryStream GetStream (string name, CultureInfo culture)
 		{
diff --git a/mcs/class/corlib/System.Resources/ResourceReader.cs b/mcs/class/corlib/System.Resources/ResourceReader.cs
index 367929b..ae5f679 100644
--- a/mcs/class/corlib/System.Resources/ResourceReader.cs
+++ b/mcs/class/corlib/System.Resources/ResourceReader.cs
@@ -479,10 +479,12 @@ namespace System.Resources
 
 #if NET_4_0
 		public void Dispose ()
+#else
+		void IDisposable.Dispose ()
+#endif
 		{
 			Dispose(true);
 		}
-#endif
 		
 		public IDictionaryEnumerator GetEnumerator () {
 			if (reader == null){
@@ -547,11 +549,6 @@ namespace System.Resources
 			}
 		}
 
-		void IDisposable.Dispose ()
-		{
-			Dispose(true);
-		}
-
 		private void Dispose (bool disposing)
 		{
 			if(disposing) {
diff --git a/mcs/class/corlib/System.Resources/ResourceSet.cs b/mcs/class/corlib/System.Resources/ResourceSet.cs
index ff7de74..928df91 100644
--- a/mcs/class/corlib/System.Resources/ResourceSet.cs
+++ b/mcs/class/corlib/System.Resources/ResourceSet.cs
@@ -45,6 +45,7 @@ namespace System.Resources
 		protected IResourceReader Reader;
 		protected Hashtable Table;
 		bool resources_read;
+		[NonSerialized] Hashtable table_nocase;
 
 		[NonSerialized]
 		private bool disposed;
@@ -105,6 +106,7 @@ namespace System.Resources
 
 			Reader = null;
 			Table = null;
+			table_nocase = null;
 			disposed = true;
 		}
 
@@ -138,21 +140,24 @@ namespace System.Resources
 				throw new ArgumentNullException ("name");
 			if (disposed)
 				throw new ObjectDisposedException ("ResourceSet is closed.");
-			ReadResources ();
 
-			object o = Table [name];
-			if (o != null)
-				return o;
+			ReadResources ();
 
-			if (ignoreCase) {
-				foreach (DictionaryEntry de in Table) {
-					string key = (string) de.Key;
-					if (String.Compare (key, name, true, CultureInfo.InvariantCulture) == 0)
-						return de.Value;
+			if (!ignoreCase)
+				return Table [name];
+
+			if (table_nocase == null) {
+				lock (Table) {
+					if (table_nocase == null) {
+						Hashtable ht = new Hashtable (StringComparer.InvariantCultureIgnoreCase);
+						foreach (DictionaryEntry de in Table) {
+							ht.Add (de.Key, de.Value);
+						}
+						table_nocase = ht;
+					}
 				}
 			}
-
-			return null;
+			return table_nocase [name];
 		}
 
 		public virtual object GetObject (string name)
diff --git a/mcs/class/corlib/System.Runtime.CompilerServices/ChangeLog b/mcs/class/corlib/System.Runtime.CompilerServices/ChangeLog
index cf250b6..3b18c5a 100644
--- a/mcs/class/corlib/System.Runtime.CompilerServices/ChangeLog
+++ b/mcs/class/corlib/System.Runtime.CompilerServices/ChangeLog
@@ -1,3 +1,15 @@
+2010-11-08  Marek Safar  <marek.safar at gmail.com>
+
+	API compatibility work
+
+2010-10-15  Marek Safar  <marek.safar at gmail.com>
+
+	Warnings cleanup
+
+2010-09-23  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix the default exception message of RuntimeWrapperException.
+
 2010-06-04  Jb Evain  <jbevain at novell.com>
 
 	* ConditionalWeakTable.cs: make sure we use positive indexes.
diff --git a/mcs/class/corlib/System.Runtime.CompilerServices/ChangeLog b/mcs/class/corlib/System.Runtime.CompilerServices/ChangeLog.old
similarity index 100%
copy from mcs/class/corlib/System.Runtime.CompilerServices/ChangeLog
copy to mcs/class/corlib/System.Runtime.CompilerServices/ChangeLog.old
diff --git a/mcs/class/corlib/System.Runtime.CompilerServices/ConditionalWeakTable.cs b/mcs/class/corlib/System.Runtime.CompilerServices/ConditionalWeakTable.cs
index ddc84f0..171cd12 100644
--- a/mcs/class/corlib/System.Runtime.CompilerServices/ConditionalWeakTable.cs
+++ b/mcs/class/corlib/System.Runtime.CompilerServices/ConditionalWeakTable.cs
@@ -26,7 +26,7 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0 || MOONLIGHT
+#if NET_4_0 || MOONLIGHT
 using System;
 using System.Collections;
 
@@ -110,7 +110,6 @@ namespace System.Runtime.CompilerServices
 
 		public void Add (TKey key, TValue value)
 		{
-			TValue tmp;
 			if (key == default (TKey))
 				throw new ArgumentNullException ("Null key", "key");
 
diff --git a/mcs/class/corlib/System.Runtime.CompilerServices/RuntimeHelpers.cs b/mcs/class/corlib/System.Runtime.CompilerServices/RuntimeHelpers.cs
index 4a8672b..fb12c07 100644
--- a/mcs/class/corlib/System.Runtime.CompilerServices/RuntimeHelpers.cs
+++ b/mcs/class/corlib/System.Runtime.CompilerServices/RuntimeHelpers.cs
@@ -150,6 +150,6 @@ namespace System.Runtime.CompilerServices
 		}
 
 		[MethodImplAttribute (MethodImplOptions.InternalCall)]
-		public static extern void RunModuleConstructor (IntPtr module);
+		static extern void RunModuleConstructor (IntPtr module);
 	}
 }
diff --git a/mcs/class/corlib/System.Runtime.CompilerServices/RuntimeWrappedException.cs b/mcs/class/corlib/System.Runtime.CompilerServices/RuntimeWrappedException.cs
index 0d7fc19..3e05a3b 100644
--- a/mcs/class/corlib/System.Runtime.CompilerServices/RuntimeWrappedException.cs
+++ b/mcs/class/corlib/System.Runtime.CompilerServices/RuntimeWrappedException.cs
@@ -41,7 +41,7 @@ namespace System.Runtime.CompilerServices {
 #pragma warning restore 649
 
 		// Called by the runtime
-		private RuntimeWrappedException () 
+		private RuntimeWrappedException () : base ("An object that does not derive from System.Exception has been wrapped in a RuntimeWrappedException.")
 		{
 		}
 
diff --git a/mcs/class/corlib/System.Runtime.CompilerServices/TypeForwardedFromAttribute.cs b/mcs/class/corlib/System.Runtime.CompilerServices/TypeForwardedFromAttribute.cs
index 8f09155..fcfe428 100644
--- a/mcs/class/corlib/System.Runtime.CompilerServices/TypeForwardedFromAttribute.cs
+++ b/mcs/class/corlib/System.Runtime.CompilerServices/TypeForwardedFromAttribute.cs
@@ -26,7 +26,7 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0 || MOONLIGHT
+#if NET_4_0 || MOONLIGHT
 
 namespace System.Runtime.CompilerServices
 {
diff --git a/mcs/class/corlib/System.Runtime.ExceptionServices/FirstChanceExceptionEventArgs.cs b/mcs/class/corlib/System.Runtime.ExceptionServices/FirstChanceExceptionEventArgs.cs
new file mode 100644
index 0000000..6dcd080
--- /dev/null
+++ b/mcs/class/corlib/System.Runtime.ExceptionServices/FirstChanceExceptionEventArgs.cs
@@ -0,0 +1,50 @@
+//
+// FirstChanceExceptionEventArgs.cs
+//
+// Author:
+//   Marek Safar (marek.safar at gmail.com)
+//
+// Copyright (C) 2010 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if NET_4_0
+
+namespace System.Runtime.ExceptionServices
+{
+	public class FirstChanceExceptionEventArgs : EventArgs
+	{
+		Exception exception;
+
+		public FirstChanceExceptionEventArgs (Exception exception)
+		{
+			this.exception = exception;
+		}
+		
+		public Exception Exception {
+			get {
+				return exception;
+			}
+		}
+	}
+}
+
+#endif
\ No newline at end of file
diff --git a/mcs/class/corlib/System.Runtime.ExceptionServices/HandleProcessCorruptedStateExceptionsAttribute.cs b/mcs/class/corlib/System.Runtime.ExceptionServices/HandleProcessCorruptedStateExceptionsAttribute.cs
new file mode 100644
index 0000000..3b4d462
--- /dev/null
+++ b/mcs/class/corlib/System.Runtime.ExceptionServices/HandleProcessCorruptedStateExceptionsAttribute.cs
@@ -0,0 +1,42 @@
+//
+// HandleProcessCorruptedStateExceptionsAttribute.cs
+//
+// Author:
+//   Marek Safar (marek.safar at gmail.com)
+//
+// Copyright (C) 2010 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if NET_4_0
+
+namespace System.Runtime.ExceptionServices
+{
+	[AttributeUsageAttribute(AttributeTargets.Method, AllowMultiple = false, Inherited = false)]
+	public sealed class HandleProcessCorruptedStateExceptionsAttribute : Attribute
+	{
+		public HandleProcessCorruptedStateExceptionsAttribute ()
+		{
+		}
+	}
+}
+
+#endif
\ No newline at end of file
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/ChangeLog b/mcs/class/corlib/System.Runtime.InteropServices/ChangeLog
index 153430e..80641c7 100644
--- a/mcs/class/corlib/System.Runtime.InteropServices/ChangeLog
+++ b/mcs/class/corlib/System.Runtime.InteropServices/ChangeLog
@@ -1,3 +1,24 @@
+2010-12-15  Marek Safar  <marek.safar at gmail.com>
+
+	Some .net 4.0 api compatibility fixes
+
+2010-12-02  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	[SafeHandle] Fixing docs
+
+2010-12-01  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	[SafeHandle] Add bits of documentation
+
+2010-12-01  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	[SafeHandle] Make success parameter setting atomic wrt async
+	exception in DangerousAddRef
+
+2010-12-01  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	[SafeHandle] Protect Close against asynchronous exceptions
+
 2010-08-23  Rodrigo Kumpera  <kumpera at gmail.com>
 
 	Type is sealed, forgot to make it so.
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/SafeBuffer.cs b/mcs/class/corlib/System.Runtime.InteropServices/SafeBuffer.cs
index 371b99e..0fe9321 100644
--- a/mcs/class/corlib/System.Runtime.InteropServices/SafeBuffer.cs
+++ b/mcs/class/corlib/System.Runtime.InteropServices/SafeBuffer.cs
@@ -26,7 +26,7 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
 
 using System;
 using System.IO;
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/SafeHandle.cs b/mcs/class/corlib/System.Runtime.InteropServices/SafeHandle.cs
index e1b0a70..85f23dc 100644
--- a/mcs/class/corlib/System.Runtime.InteropServices/SafeHandle.cs
+++ b/mcs/class/corlib/System.Runtime.InteropServices/SafeHandle.cs
@@ -30,12 +30,14 @@
 //     For details, see:
 //     http://blogs.msdn.com/cbrumme/archive/2004/02/20/77460.aspx
 //
+//     CER-like behavior is implemented for Close and DangerousAddRef
+//     via the try/finally uninterruptible pattern in case of async
+//     exceptions like ThreadAbortException.
+//
 // On implementing SafeHandles:
 //     http://blogs.msdn.com/bclteam/archive/2005/03/15/396335.aspx
 //
 // Issues:
-//     The System.Runtime.ConstrainedExecution.ReliabilityContractAttribute has
-//     not been applied to any APIs here yet.
 //
 //     TODO: Although DangerousAddRef has been implemented, I need to
 //     find out whether the runtime performs the P/Invoke if the
@@ -46,6 +48,7 @@
 using System;
 using System.Runtime.InteropServices;
 using System.Runtime.ConstrainedExecution;
+using System.Runtime.CompilerServices;
 using System.Threading;
 
 namespace System.Runtime.InteropServices
@@ -81,16 +84,27 @@ namespace System.Runtime.InteropServices
 			if (refcount == 0)
 				throw new ObjectDisposedException (GetType ().FullName);
 
-			int newcount, current;
-			do {
-				current = refcount;
-				newcount = current-1;
-			} while (Interlocked.CompareExchange (ref refcount, newcount, current) != current);
-
-			if (newcount == 0 && owns_handle && !IsInvalid){
-				ReleaseHandle ();
-				handle = invalid_handle_value;
-				refcount = -1;
+			int newcount = 0, current = 0;
+			bool registered = false;
+			RuntimeHelpers.PrepareConstrainedRegions ();
+			try {
+				do {
+					current = refcount;
+					newcount = current-1;
+
+					// perform changes in finally to avoid async interruptions
+					try {}
+					finally {
+						if (Interlocked.CompareExchange (ref refcount, newcount, current) == current)
+							registered = true;
+					}
+				} while (!registered);
+			} finally {
+				if (registered && newcount == 0 && owns_handle && !IsInvalid){
+					ReleaseHandle ();
+					handle = invalid_handle_value;
+					refcount = -1;
+				}
 			}
 		}
 
@@ -109,6 +123,7 @@ namespace System.Runtime.InteropServices
 			if (refcount <= 0)
 				throw new ObjectDisposedException (GetType ().FullName);
 
+			bool registered = false;
 			int newcount, current;
 			do {
 				current = refcount;
@@ -123,8 +138,15 @@ namespace System.Runtime.InteropServices
 					//
 					throw new ObjectDisposedException (GetType ().FullName);
 				}
-			} while (Interlocked.CompareExchange (ref refcount, newcount, current) != current);
-			success = true;
+
+				// perform changes in finally to avoid async interruptions
+				RuntimeHelpers.PrepareConstrainedRegions ();
+				try {}
+				finally {
+					if (Interlocked.CompareExchange (ref refcount, newcount, current) == current)
+						registered = success = true;
+				}
+			} while (!registered);
 		}
 
 		[ReliabilityContract (Consistency.WillNotCorruptState, Cer.Success)]
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/TypeLibImporterFlags.cs b/mcs/class/corlib/System.Runtime.InteropServices/TypeLibImporterFlags.cs
index 20c59b0..fc61188 100644
--- a/mcs/class/corlib/System.Runtime.InteropServices/TypeLibImporterFlags.cs
+++ b/mcs/class/corlib/System.Runtime.InteropServices/TypeLibImporterFlags.cs
@@ -48,5 +48,8 @@ namespace System.Runtime.InteropServices
 		ImportAsX86 = 256,
 		ReflectionOnlyLoading = 4096,
 		SerializableValueClasses = 32,
+#if NET_4_0
+		NoDefineVersionResource = 8192
+#endif
 	}
 }
diff --git a/mcs/class/corlib/System.Runtime.Remoting.Channels/ChangeLog b/mcs/class/corlib/System.Runtime.Remoting.Channels/ChangeLog
index 4364f85..1691eb2 100644
--- a/mcs/class/corlib/System.Runtime.Remoting.Channels/ChangeLog
+++ b/mcs/class/corlib/System.Runtime.Remoting.Channels/ChangeLog
@@ -1,3 +1,8 @@
+2011-01-06  Zoltan Varga  <vargaz at gmail.com>
+
+	Change some usages of ArrayList to List<T> to avoid calls to the
+	slow ArrayList.ToArray(Type) method.
+
 2010-08-11  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
 
 	Adapt to new exception in threadpool behavior.
diff --git a/mcs/class/corlib/System.Runtime.Remoting.Channels/ChannelServices.cs b/mcs/class/corlib/System.Runtime.Remoting.Channels/ChannelServices.cs
index 0579404..0d9f614 100644
--- a/mcs/class/corlib/System.Runtime.Remoting.Channels/ChannelServices.cs
+++ b/mcs/class/corlib/System.Runtime.Remoting.Channels/ChannelServices.cs
@@ -32,6 +32,7 @@
 //
 
 using System.Collections;
+using System.Collections.Generic;
 using System.Reflection;
 using System.Runtime.Remoting;
 using System.Runtime.Remoting.Channels;
@@ -153,7 +154,7 @@ namespace System.Runtime.Remoting.Channels
 			get {
 				lock (registeredChannels.SyncRoot)
 				{
-					ArrayList list = new ArrayList ();
+					var list = new List<IChannel> ();
 					
 					for (int i = 0; i < registeredChannels.Count; i++) {
 						IChannel ch = (IChannel) registeredChannels[i];
@@ -161,7 +162,7 @@ namespace System.Runtime.Remoting.Channels
 						list.Add (ch);
 					}
 
-					return (IChannel[]) list.ToArray (typeof(IChannel));
+					return list.ToArray ();
 				}
 			}
 		}
@@ -213,7 +214,7 @@ namespace System.Runtime.Remoting.Channels
 				
 			ClientIdentity ident = (ClientIdentity) RemotingServices.GetRealProxy (obj).ObjectIdentity;
 			IMessageSink sink = ident.ChannelSink;
-			ArrayList dics = new ArrayList ();
+			var dics = new List<IDictionary> ();
 			
 			while (sink != null && !(sink is IClientChannelSink))
 				sink = sink.NextSink;
@@ -228,7 +229,7 @@ namespace System.Runtime.Remoting.Channels
 				csink = csink.NextChannelSink;
 			}
 
-			IDictionary[] adics = (IDictionary[]) dics.ToArray (typeof(IDictionary[]));
+			IDictionary[] adics = dics.ToArray ();
 			return new AggregateDictionary (adics);
 		}
 
@@ -237,7 +238,7 @@ namespace System.Runtime.Remoting.Channels
 			string uri = RemotingServices.GetObjectUri (obj);
 			if (uri == null) return new string [0];
 
-			ArrayList list = new ArrayList ();
+			var list = new List<string> ();
 
 			lock (registeredChannels.SyncRoot)
 			{
@@ -251,7 +252,7 @@ namespace System.Runtime.Remoting.Channels
 				}
 			}
 			
-			return  (string[]) list.ToArray (typeof(string));
+			return list.ToArray ();
 		}
 
 		[Obsolete ("Use RegisterChannel(IChannel,Boolean)")]
@@ -475,7 +476,7 @@ namespace System.Runtime.Remoting.Channels
 
 		internal static object [] GetCurrentChannelInfo ()
 		{
-			ArrayList list = new ArrayList ();
+			var list = new List<object> ();
 			
 			lock (registeredChannels.SyncRoot)
 			{
@@ -490,7 +491,7 @@ namespace System.Runtime.Remoting.Channels
 				}
 			}
 			
-			return  list.ToArray ();
+			return list.ToArray ();
 		}
 
 		// Back compatibility fix. StartListener will be called for the types listed here		
diff --git a/mcs/class/corlib/System.Runtime.Remoting.Contexts/ChangeLog b/mcs/class/corlib/System.Runtime.Remoting.Contexts/ChangeLog
index b1345b1..ba0edda 100644
--- a/mcs/class/corlib/System.Runtime.Remoting.Contexts/ChangeLog
+++ b/mcs/class/corlib/System.Runtime.Remoting.Contexts/ChangeLog
@@ -1,3 +1,7 @@
+2010-10-15  Marek Safar  <marek.safar at gmail.com>
+
+	Warnings cleanup
+
 2010-08-04  Zoltan Varga  <vargaz at gmail.com>
 
 	Avoid creating the namedSlots array in the static cctor, so it is
diff --git a/mcs/class/corlib/System.Runtime.Remoting.Contexts/Context.cs b/mcs/class/corlib/System.Runtime.Remoting.Contexts/Context.cs
index 6d9aead..b3323db 100644
--- a/mcs/class/corlib/System.Runtime.Remoting.Contexts/Context.cs
+++ b/mcs/class/corlib/System.Runtime.Remoting.Contexts/Context.cs
@@ -64,7 +64,7 @@ namespace System.Runtime.Remoting.Contexts {
 
 		object[] datastore;
 		ArrayList context_properties;
-		bool frozen;
+//		bool frozen;
 		
 		static int global_count;
 
@@ -212,8 +212,8 @@ namespace System.Runtime.Remoting.Contexts {
 			if (this == DefaultContext)
 				throw new InvalidOperationException ("Can not add properties to " +
 								     "default context");
-			if (frozen)
-				throw new InvalidOperationException ("Context is Frozen");
+//			if (frozen)
+//				throw new InvalidOperationException ("Context is Frozen");
 			
 			if (context_properties == null)
 				context_properties = new ArrayList ();
diff --git a/mcs/class/corlib/System.Runtime.Remoting.Messaging/ChangeLog b/mcs/class/corlib/System.Runtime.Remoting.Messaging/ChangeLog
index 552c343..fc03d2e 100644
--- a/mcs/class/corlib/System.Runtime.Remoting.Messaging/ChangeLog
+++ b/mcs/class/corlib/System.Runtime.Remoting.Messaging/ChangeLog
@@ -1,3 +1,7 @@
+2010-10-15  Marek Safar  <marek.safar at gmail.com>
+
+	Warnings cleanup
+
 2010-08-11  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
 
 	Adapt to new exception in threadpool behavior.
diff --git a/mcs/class/corlib/System.Runtime.Remoting.Messaging/ReturnMessage.cs b/mcs/class/corlib/System.Runtime.Remoting.Messaging/ReturnMessage.cs
index 482ce39..4c314c2 100644
--- a/mcs/class/corlib/System.Runtime.Remoting.Messaging/ReturnMessage.cs
+++ b/mcs/class/corlib/System.Runtime.Remoting.Messaging/ReturnMessage.cs
@@ -42,7 +42,6 @@ namespace System.Runtime.Remoting.Messaging
 	{
 		object[] _outArgs;
 		object[] _args;
-		int _outArgsCount;
 		LogicalCallContext _callCtx;
 		object _returnValue;
 		string _uri;
@@ -63,7 +62,6 @@ namespace System.Runtime.Remoting.Messaging
 
 			_returnValue = ret;
 			_args = outArgs;
-			_outArgsCount = outArgsCount;
 			_callCtx = callCtx;
 			if (mcm != null) {
 				_uri = mcm.Uri;
diff --git a/mcs/class/corlib/System.Runtime.Serialization.Formatters.Binary/ChangeLog b/mcs/class/corlib/System.Runtime.Serialization.Formatters.Binary/ChangeLog
index 7df4687..a0f9e17 100644
--- a/mcs/class/corlib/System.Runtime.Serialization.Formatters.Binary/ChangeLog
+++ b/mcs/class/corlib/System.Runtime.Serialization.Formatters.Binary/ChangeLog
@@ -5,6 +5,16 @@
 	Handle boxed primitive types for nullable fields. Fixes bug
 	#646556.
 
+2010-09-21  Andrés G. Aragoneses  <knocte at gmail.com>
+
+	[corlib] Prevent BinaryFormatter to throw on missing fields
+
+	This commit includes unit tests that were run in MS.NET > 2.0. The
+	old behaviour of MS.NET 1.1 is still included in the patch as an
+	ONLY_1_1 define, to be backport-friendly to other branches (but
+	can be removed from now on in next commits, as mono master doesn't
+	include this profile anymore). Fixes BNC#324144.
+
 2010-08-30  Carlos Alberto Cortez  <calberto.cortez at gmail.com>
 
 	* ObjectWriter.cs: Actually take SerializationBinder.BindToName
diff --git a/mcs/class/corlib/System.Runtime.Serialization.Formatters.Binary/ObjectReader.cs b/mcs/class/corlib/System.Runtime.Serialization.Formatters.Binary/ObjectReader.cs
index ced76cc..cf068a2 100644
--- a/mcs/class/corlib/System.Runtime.Serialization.Formatters.Binary/ObjectReader.cs
+++ b/mcs/class/corlib/System.Runtime.Serialization.Formatters.Binary/ObjectReader.cs
@@ -299,6 +299,7 @@ namespace System.Runtime.Serialization.Formatters.Binary
 					ReadValue (reader, objectInstance, objectId, info, metadata.MemberTypes[n], metadata.MemberNames[n], null, null);
 			else
 				for (int n=0; n<metadata.FieldCount; n++)
+					if (metadata.MemberInfos [n] != null)
 					ReadValue (reader, objectInstance, objectId, info, metadata.MemberTypes[n], metadata.MemberInfos[n].Name, metadata.MemberInfos[n], null);
 		}
 
@@ -689,8 +690,12 @@ namespace System.Runtime.Serialization.Formatters.Binary
 						else
 							field = metadata.Type.GetField (memberName, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
 							
-						if (field == null) throw new SerializationException ("Field \"" + names[n] + "\" not found in class " + metadata.Type.FullName);
-						metadata.MemberInfos [n] = field;
+						if (field != null)
+							metadata.MemberInfos [n] = field;
+#if ONLY_1_1
+						else
+							throw new SerializationException ("Field \"" + names[n] + "\" not found in class " + metadata.Type.FullName);
+#endif
 						
 						if (!hasTypeInfo) {
 							types [n] = field.FieldType;
diff --git a/mcs/class/corlib/System.Runtime.Serialization/ChangeLog b/mcs/class/corlib/System.Runtime.Serialization/ChangeLog
index ae9bdb3..81f65be 100644
--- a/mcs/class/corlib/System.Runtime.Serialization/ChangeLog
+++ b/mcs/class/corlib/System.Runtime.Serialization/ChangeLog
@@ -1,3 +1,22 @@
+2010-09-22  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	The Hashtable is back
+
+	But this time it is using a hash code provider and a comparer that
+	don't invoke the object's methods. Thanks to Paolo for pointing
+	this out.
+
+2010-09-21  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Don't store objects in a Hashtable.
+
+	Storing the objects in Hashtable causes the GetHashCode() and may
+	be Equals() methods to be called on the object, which MS does not
+	do. I'm using a list holding WeakReferences. Not sure if hard
+	references would be ok.
+
+	Fixes bug #640688.
+
 2010-08-25  Carlos Alberto Cortez  <calberto.cortez at gmail.com>
 
 	* SerializationInfo.cs: Set/reset the new 4.0 members in SetType
diff --git a/mcs/class/corlib/System.Runtime.Serialization/SerializationObjectManager.cs b/mcs/class/corlib/System.Runtime.Serialization/SerializationObjectManager.cs
index 13ffe44..3997f94 100644
--- a/mcs/class/corlib/System.Runtime.Serialization/SerializationObjectManager.cs
+++ b/mcs/class/corlib/System.Runtime.Serialization/SerializationObjectManager.cs
@@ -34,7 +34,7 @@ namespace System.Runtime.Serialization {
 	public sealed class SerializationObjectManager
 	{
 		readonly StreamingContext context;
-		readonly Hashtable seen = new Hashtable ();
+		readonly Hashtable seen = new Hashtable (HashHelper.Instance, HashHelper.Instance);
 
 		event SerializationCallbacks.CallbackHandler callbacks;
 
@@ -51,7 +51,7 @@ namespace System.Runtime.Serialization {
 			SerializationCallbacks sc = SerializationCallbacks
 				.GetSerializationCallbacks (obj.GetType ());
 
-			seen [obj] = 1;
+			seen [obj] = HashHelper.NonNullObject;
 			sc.RaiseOnSerializing (obj, context);
 
 			if (sc.HasSerializedCallbacks) {
@@ -68,6 +68,27 @@ namespace System.Runtime.Serialization {
 			if (callbacks != null)
 				callbacks (context);
 		}
+
+		class HashHelper : IHashCodeProvider, IComparer {
+			public static object NonNullObject = new object ();
+			public static HashHelper Instance = new HashHelper ();
+
+			private HashHelper ()
+			{
+			}
+
+			public int GetHashCode (object obj)
+			{
+				if (obj == null)
+					return 0;
+				return Object.InternalGetHashCode (obj);
+			}
+
+			public int Compare (object x, object y)
+			{
+				return Object.ReferenceEquals (x, y) ? 0 : 1;
+			}
+		}
 	}
 }
 
diff --git a/mcs/class/corlib/System.Runtime.Versioning/ChangeLog b/mcs/class/corlib/System.Runtime.Versioning/ChangeLog
index 2497cc5..c6588d8 100644
--- a/mcs/class/corlib/System.Runtime.Versioning/ChangeLog
+++ b/mcs/class/corlib/System.Runtime.Versioning/ChangeLog
@@ -1,3 +1,16 @@
+2010-12-23  Marek Safar  <marek.safar at gmail.com>
+
+	Fixed wrong AttributeUsageAttribute
+
+2010-12-23  Marek Safar  <marek.safar at gmail.com>
+
+	Implement missing v4 attribute types
+
+2010-09-20  Geoff Norton  <gnorton at novell.com>
+
+	Include TargetFrameworkAttribute in monotouch and monodroid as
+	well
+
 2009-12-03  Marek Habersack  <mhabersack at novell.com>
 
 	* FrameworkName.cs: added
diff --git a/mcs/class/corlib/System.Runtime.Versioning/ChangeLog b/mcs/class/corlib/System.Runtime.Versioning/ChangeLog.old
similarity index 100%
copy from mcs/class/corlib/System.Runtime.Versioning/ChangeLog
copy to mcs/class/corlib/System.Runtime.Versioning/ChangeLog.old
diff --git a/mcs/class/corlib/System.Runtime.Versioning/ComponentGuaranteesAttribute.cs b/mcs/class/corlib/System.Runtime.Versioning/ComponentGuaranteesAttribute.cs
new file mode 100644
index 0000000..f84f9a9
--- /dev/null
+++ b/mcs/class/corlib/System.Runtime.Versioning/ComponentGuaranteesAttribute.cs
@@ -0,0 +1,53 @@
+//
+// ComponentGuaranteesAttribute.cs
+//
+// Author:
+//   Marek Safar (marek.safar at gmail.com)
+//
+// Copyright (C) 2010 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if NET_4_0
+
+namespace System.Runtime.Versioning
+{
+	[AttributeUsageAttribute (AttributeTargets.Assembly | AttributeTargets.Module | AttributeTargets.Class | AttributeTargets.Struct |
+		AttributeTargets.Enum | AttributeTargets.Constructor | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Event |
+		AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)]
+	public sealed class ComponentGuaranteesAttribute : Attribute
+	{
+		readonly ComponentGuaranteesOptions guarantees;
+
+		public ComponentGuaranteesAttribute (ComponentGuaranteesOptions guarantees)
+		{
+			this.guarantees = guarantees;
+		}
+		
+		public ComponentGuaranteesOptions Guarantees {
+			get {
+				return guarantees;
+			}
+		}
+	}
+}
+
+#endif
\ No newline at end of file
diff --git a/mcs/class/corlib/System.Runtime.Versioning/ComponentGuaranteesOptions.cs b/mcs/class/corlib/System.Runtime.Versioning/ComponentGuaranteesOptions.cs
new file mode 100644
index 0000000..df843ae
--- /dev/null
+++ b/mcs/class/corlib/System.Runtime.Versioning/ComponentGuaranteesOptions.cs
@@ -0,0 +1,43 @@
+//
+// ComponentGuaranteesOptions.cs
+//
+// Author:
+//   Marek Safar (marek.safar at gmail.com)
+//
+// Copyright (C) 2010 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if NET_4_0
+
+namespace System.Runtime.Versioning
+{
+	[FlagsAttribute]
+	public enum ComponentGuaranteesOptions
+	{
+		None = 0,
+		Exchange = 1,
+		Stable = 2,
+		SideBySide = 4
+	}
+}
+
+#endif
diff --git a/mcs/class/corlib/System.Runtime.Versioning/TargetFrameworkAttribute.cs b/mcs/class/corlib/System.Runtime.Versioning/TargetFrameworkAttribute.cs
index 8271713..bf951cc 100644
--- a/mcs/class/corlib/System.Runtime.Versioning/TargetFrameworkAttribute.cs
+++ b/mcs/class/corlib/System.Runtime.Versioning/TargetFrameworkAttribute.cs
@@ -27,7 +27,7 @@
 //
 using System;
 
-#if NET_4_0 || MOONLIGHT
+#if NET_4_0 || MOONLIGHT || MOBILE
 namespace System.Runtime.Versioning
 {
 	[AttributeUsageAttribute(AttributeTargets.Assembly, AllowMultiple = false, Inherited = false)]
diff --git a/mcs/class/corlib/System.Runtime/ChangeLog b/mcs/class/corlib/System.Runtime/ChangeLog
index cab27d7..1e4c738 100644
--- a/mcs/class/corlib/System.Runtime/ChangeLog
+++ b/mcs/class/corlib/System.Runtime/ChangeLog
@@ -1,3 +1,7 @@
+2010-11-08  Marek Safar  <marek.safar at gmail.com>
+
+	API compatibility work
+
 
 Fri Feb 12 19:09:44 CET 2010 Paolo Molaro <lupus at ximian.com>
 
diff --git a/mcs/class/corlib/System.Runtime/ChangeLog b/mcs/class/corlib/System.Runtime/ChangeLog.old
similarity index 100%
copy from mcs/class/corlib/System.Runtime/ChangeLog
copy to mcs/class/corlib/System.Runtime/ChangeLog.old
diff --git a/mcs/class/corlib/System.Runtime/TargetedPatchingOptOutAttribute.cs b/mcs/class/corlib/System.Runtime/TargetedPatchingOptOutAttribute.cs
index 23854a4..cdf75e3 100644
--- a/mcs/class/corlib/System.Runtime/TargetedPatchingOptOutAttribute.cs
+++ b/mcs/class/corlib/System.Runtime/TargetedPatchingOptOutAttribute.cs
@@ -38,9 +38,6 @@ namespace System.Runtime {
 	{
 		string reason;
 
-		public TargetedPatchingOptOutAttribute () : this ("") {
-		}
-
 		public TargetedPatchingOptOutAttribute (string reason)
 		{
 			if (reason == null)
@@ -48,8 +45,7 @@ namespace System.Runtime {
 			this.reason = reason;
 		}
 
-		public string Reason
-		{
+		public string Reason {
 			get {
 				return reason;
 			}
diff --git a/mcs/class/corlib/System.Security.AccessControl/ChangeLog b/mcs/class/corlib/System.Security.AccessControl/ChangeLog
index 90da37c..624c9f3 100644
--- a/mcs/class/corlib/System.Security.AccessControl/ChangeLog
+++ b/mcs/class/corlib/System.Security.AccessControl/ChangeLog
@@ -1,3 +1,7 @@
+2010-12-15  Marek Safar  <marek.safar at gmail.com>
+
+	Some .net 4.0 api compatibility fixes
+
 2009-08-29  Zoltan Varga  <vargaz at gmail.com>
 
 	* ObjectSecurity_T.cs: New file, empty stub for new net 4.0 class.
diff --git a/mcs/class/corlib/System.Security.AccessControl/ChangeLog b/mcs/class/corlib/System.Security.AccessControl/ChangeLog.old
similarity index 100%
copy from mcs/class/corlib/System.Security.AccessControl/ChangeLog
copy to mcs/class/corlib/System.Security.AccessControl/ChangeLog.old
diff --git a/mcs/class/corlib/System.Security.AccessControl/ObjectSecurity_T.cs b/mcs/class/corlib/System.Security.AccessControl/ObjectSecurity_T.cs
index 40c43e1..30beec0 100644
--- a/mcs/class/corlib/System.Security.AccessControl/ObjectSecurity_T.cs
+++ b/mcs/class/corlib/System.Security.AccessControl/ObjectSecurity_T.cs
@@ -25,10 +25,39 @@
 
 #if NET_4_0
 
+using System.Security.Principal;
+
 namespace System.Security.AccessControl
 {
-	public abstract class ObjectSecurity<T> : NativeObjectSecurity
+	public abstract class ObjectSecurity<T> : NativeObjectSecurity where T : struct
 	{
+		public override Type AccessRightType {
+			get {
+				return null;
+			}
+		}
+		
+		public override Type AccessRuleType {
+			get {
+				return null;
+			}
+		}
+		
+		public override Type AuditRuleType {
+			get {
+				return null;
+			}
+		}
+		
+		public override AccessRule AccessRuleFactory(IdentityReference identityReference, int accessMask, bool isInherited, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags, AccessControlType type)
+		{
+			return null;
+		}
+		
+		public override AuditRule AuditRuleFactory(IdentityReference identityReference, int accessMask, bool isInherited, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags, AuditFlags flags)
+		{
+			return null;
+		}
 	}
 }
 	
diff --git a/mcs/class/corlib/System.Security.Cryptography/ChangeLog b/mcs/class/corlib/System.Security.Cryptography/ChangeLog
index 5c774e0..6da7bfe 100644
--- a/mcs/class/corlib/System.Security.Cryptography/ChangeLog
+++ b/mcs/class/corlib/System.Security.Cryptography/ChangeLog
@@ -1,3 +1,76 @@
+2010-11-11  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* CryptoConfig_2_1.cs: Add fully qualified name (to simple name)
+	to allow the creation of AES using (internal) CryptoConfig
+
+2010-11-03  Marek Habersack  <grendel at twistedcode.net>
+
+	Fix mixed newlines
+
+2010-10-20  Pablo Ruiz Garcia  <pablo.ruiz at gmail.com>
+
+	[API] X509 related enhacemnts to allow 1) associating keystore's
+	private keys with their corresponding public certificates found at
+	X509Stores, and 2) importing private keys to X509Stores along with
+	certificates.
+
+	mcs/class/corlib/Mono.Security.X509/X509Store.cs:
+	mcs/class/Mono.Security/Mono.Security.X509/X509Store.cs:
+	mcs/class/corlib/Mono.Security.X509/X509StoreManager.cs:
+	mcs/class/Mono.Security/Mono.Security.X509/X509StoreManager.cs:
+	Modified MSX.X509Store to allow importing privateKeys along
+	certificates (by using RSACryptoServiceProvider and
+	KeyPairPersister). Fixed X509Store to use certificate's hash as
+	CspParameters.KeyContainerName.
+
+	mcs/tools/security/certmgr.cs: Added a new -importKey action to
+	certmgr, which allows importing a PKCS12 contained key into our
+	KeyPair store. Added a more (verbose) output to certmgr's -list
+	action.
+
+	man/certmgr.1: Updated certmgr man page ti reflect -importKey
+	addition.
+
+	mcs/class/corlib/System.Security.Cryptography/CspParameters.cs:
+	mcs/class/corlib/System.Security.Cryptography/RSACryptoServiceProvider.cs:
+	Implemented RSACryptoServiceProvider.CspKeyContainerInfo getter
+	RSACryptoServiceProvider will not take into account
+	CspParameterFlags.UseExistingKey by throwing a
+	CryptographicException if keyset identified by KeyContainerName
+	does not exists.
+
+2010-10-07  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Buffer sizes
+
+	workingBlock should be the InputBlockSize and currentBlock the
+	OutputBlockSize. Allocate currentBlock lazily.
+
+	Test contributed by Bassam Tabbara. Fixes bug #644740.
+
+2010-10-07  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	[CryptoStream] Invalid enum in ctor
+
+	Throw on invalid enum value in the ctor.
+
+2010-10-07  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Dispose calls FlushFinalBlock
+
+	Dispose calls FlushFinalBlock (even for Read mode) and this in
+	turn calls either FlushFinalBlock or Flush on the underlying
+	stream.
+
+2010-10-07  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Fix CryptoStream.Dispose
+
+	-Dispose will call TransformFinalBlock() for Read streams. Fixes
+	bug #644648. -Dispose () will call Dispose (bool). Fixes bug
+	#644654. -Stream.Close calls GC.SuppressFinalize(). Fixes bug
+	#644660.
+
 2010-07-21  Sebastien Pouliot  <sebastien at ximian.com>
 
 	* CryptoConfig_2_1.cs: Ensure Aes[Managed] can be created from
diff --git a/mcs/class/corlib/System.Security.Cryptography/ChangeLog b/mcs/class/corlib/System.Security.Cryptography/ChangeLog.old
similarity index 100%
copy from mcs/class/corlib/System.Security.Cryptography/ChangeLog
copy to mcs/class/corlib/System.Security.Cryptography/ChangeLog.old
diff --git a/mcs/class/corlib/System.Security.Cryptography/CryptoConfig_2_1.cs b/mcs/class/corlib/System.Security.Cryptography/CryptoConfig_2_1.cs
index 505a0be..97c280b 100644
--- a/mcs/class/corlib/System.Security.Cryptography/CryptoConfig_2_1.cs
+++ b/mcs/class/corlib/System.Security.Cryptography/CryptoConfig_2_1.cs
@@ -153,6 +153,7 @@ namespace System.Security.Cryptography {
 			case "System.Security.Cryptography.RSA":
 				return new Mono.Security.Cryptography.RSAManaged ();
 			case "AES":
+			case AES:
 				return (Aes) Activator.CreateInstance (Type.GetType (AES), null);
 			default:
 				throw new NotImplementedException (name);
diff --git a/mcs/class/corlib/System.Security.Cryptography/CryptoStream.cs b/mcs/class/corlib/System.Security.Cryptography/CryptoStream.cs
index 7eb6808..48f3794 100644
--- a/mcs/class/corlib/System.Security.Cryptography/CryptoStream.cs
+++ b/mcs/class/corlib/System.Security.Cryptography/CryptoStream.cs
@@ -57,27 +57,21 @@ namespace System.Security.Cryptography {
 		
 		public CryptoStream (Stream stream, ICryptoTransform transform, CryptoStreamMode mode)
 		{
-			if ((mode == CryptoStreamMode.Read) && (!stream.CanRead)) {
-				throw new ArgumentException (
-					Locale.GetText ("Can't read on stream"));
-			}
-			if ((mode == CryptoStreamMode.Write) && (!stream.CanWrite)) {
-				throw new ArgumentException (
-					Locale.GetText ("Can't write on stream"));
+			if (mode == CryptoStreamMode.Read) {
+				if (!stream.CanRead)
+					throw new ArgumentException (Locale.GetText ("Can't read on stream"));
+			} else if (mode == CryptoStreamMode.Write) {
+				if (!stream.CanWrite)
+					throw new ArgumentException (Locale.GetText ("Can't write on stream"));
+			} else {
+				throw new ArgumentException ("mode");
 			}
 			_stream = stream;
 			_transform = transform;
 			_mode = mode;
 			_disposed = false;
 			if (transform != null) {
-				if (mode == CryptoStreamMode.Read) {
-					_currentBlock = new byte [transform.InputBlockSize];
-					_workingBlock = new byte [transform.InputBlockSize];
-				}
-				else if (mode == CryptoStreamMode.Write) {
-					_currentBlock = new byte [transform.OutputBlockSize];
-					_workingBlock = new byte [transform.OutputBlockSize];
-				}
+				_workingBlock = new byte [transform.InputBlockSize];
 			}
 		}
 
@@ -109,19 +103,13 @@ namespace System.Security.Cryptography {
 
 		public void Clear () 
 		{
-			Dispose (true);
-			GC.SuppressFinalize (this); // not called in Stream.Dispose
+			Close ();
 		}
 
 		// LAMESPEC: A CryptoStream can be close in read mode
 		public override void Close () 
 		{
-			// only flush in write mode (bugzilla 46143)
-			if ((!_flushedFinalBlock) && (_mode == CryptoStreamMode.Write))
-				FlushFinalBlock ();
-
-			if (_stream != null)
-				_stream.Close ();
+			base.Close ();
 		}
 
 		public override int Read ([In,Out] byte[] buffer, int offset, int count)
@@ -255,7 +243,7 @@ namespace System.Security.Cryptography {
 			}
 
 			if (_stream == null)
-				throw new ArgumentNullException ("inner stream was diposed");
+				throw new ArgumentNullException ("inner stream was disposed");
 
 			int buffer_length = count;
 
@@ -272,6 +260,9 @@ namespace System.Security.Cryptography {
 			int bufferPos = offset;
 			while (count > 0) {
 				if (_partialCount == _transform.InputBlockSize) {
+					if (_currentBlock == null)
+						_currentBlock = new byte [_transform.OutputBlockSize];
+
 					// use partial block to avoid (re)allocation
 					int len = _transform.TransformBlock (_workingBlock, 0, _partialCount, _currentBlock, 0);
 					_stream.Write (_currentBlock, 0, len);
@@ -313,8 +304,6 @@ namespace System.Security.Cryptography {
 
 		public override void Flush ()
 		{
-			if (_stream != null)
-				_stream.Flush ();
 		}
 
 		public void FlushFinalBlock ()
@@ -323,16 +312,16 @@ namespace System.Security.Cryptography {
 				throw new NotSupportedException (Locale.GetText ("This method cannot be called twice."));
 			if (_disposed)
 				throw new NotSupportedException (Locale.GetText ("CryptoStream was disposed."));
-			if (_mode != CryptoStreamMode.Write)
-				return;
+
 			_flushedFinalBlock = true;
 			byte[] finalBuffer = _transform.TransformFinalBlock (_workingBlock, 0, _partialCount);
-			if (_stream != null) {
+			if (_stream != null && _mode == CryptoStreamMode.Write) {
 				_stream.Write (finalBuffer, 0, finalBuffer.Length);
-				if (_stream is CryptoStream) {
-					// for cascading crypto streams
-					(_stream as CryptoStream).FlushFinalBlock ();
-				}
+			}
+			if (_stream is CryptoStream) {
+				// for cascading crypto streams
+				(_stream as CryptoStream).FlushFinalBlock ();
+			} else {
 				_stream.Flush ();
 			}
 			// zeroize
@@ -353,6 +342,14 @@ namespace System.Security.Cryptography {
 		protected override void Dispose (bool disposing) 
 		{
 			if (!_disposed) {
+				if (disposing) {
+					if (!_flushedFinalBlock) {
+						FlushFinalBlock ();
+					}
+
+					if (_stream != null)
+						_stream.Close ();
+				}
 				_disposed = true;
 				// always cleared for security reason
 				if (_workingBlock != null)
diff --git a/mcs/class/corlib/System.Security.Cryptography/CspParameters.cs b/mcs/class/corlib/System.Security.Cryptography/CspParameters.cs
index 653471e..0df9566 100644
--- a/mcs/class/corlib/System.Security.Cryptography/CspParameters.cs
+++ b/mcs/class/corlib/System.Security.Cryptography/CspParameters.cs
@@ -61,7 +61,7 @@ namespace System.Security.Cryptography {
 			// not defined in specs, only tested from M$ impl
 			KeyNumber = -1;
 		}
-		
+
 		public string KeyContainerName;
 		
 		public int KeyNumber;
@@ -94,7 +94,19 @@ namespace System.Security.Cryptography {
 			if (cryptoKeySecurity != null)
 				CryptoKeySecurity = cryptoKeySecurity;
 			_password = keyPassword;
-		}
+		}
+
+		internal CspParameters(CspParameters parameters)
+			: this(parameters.ProviderType, parameters.ProviderName, parameters.KeyContainerName)
+		{
+			if (parameters.CryptoKeySecurity != null)
+				CryptoKeySecurity = parameters.CryptoKeySecurity;
+
+			_Flags = parameters.Flags;
+			KeyNumber = parameters.KeyNumber;
+			_password = parameters.KeyPassword;
+			_windowHandle = parameters.ParentWindowHandle;
+		}
 
 		[MonoTODO ("access control isn't implemented")]
 		public CryptoKeySecurity CryptoKeySecurity {
diff --git a/mcs/class/corlib/System.Security.Cryptography/RSACryptoServiceProvider.cs b/mcs/class/corlib/System.Security.Cryptography/RSACryptoServiceProvider.cs
index ef607bc..822db5b 100644
--- a/mcs/class/corlib/System.Security.Cryptography/RSACryptoServiceProvider.cs
+++ b/mcs/class/corlib/System.Security.Cryptography/RSACryptoServiceProvider.cs
@@ -105,7 +105,12 @@ namespace System.Security.Cryptography {
 			}
 			else {
 				store = new KeyPairPersistence (p);
-				store.Load ();
+				bool exists = store.Load ();
+				bool required = (p.Flags & CspProviderFlags.UseExistingKey) != 0;
+
+				if (required && !exists)
+					throw new CryptographicException ("Keyset does not exist");
+
 				if (store.KeyValue != null) {
 					persisted = true;
 					this.FromXmlString (store.KeyValue);
@@ -355,11 +360,11 @@ namespace System.Security.Cryptography {
 		}
 		// ICspAsymmetricAlgorithm
 
-		[MonoTODO ("Always return null")]
-		// FIXME: call into KeyPairPersistence to get details
 		[ComVisible (false)]
 		public CspKeyContainerInfo CspKeyContainerInfo {
-			get { return null; }
+			get {
+				return new CspKeyContainerInfo(store.Parameters);
+			}
 		}
 
 		[ComVisible (false)]
diff --git a/mcs/class/corlib/System.Security.Permissions/ChangeLog b/mcs/class/corlib/System.Security.Permissions/ChangeLog
index 86d9705..23f3eb0 100644
--- a/mcs/class/corlib/System.Security.Permissions/ChangeLog
+++ b/mcs/class/corlib/System.Security.Permissions/ChangeLog
@@ -1,3 +1,12 @@
+2010-12-17  Marek Safar  <marek.safar at gmail.com>
+
+	Add an error to obsolete attribute to get consistent compiler
+	error code
+
+2010-12-15  Marek Safar  <marek.safar at gmail.com>
+
+	Some .net 4.0 api compatibility fixes
+
 2010-03-16  Jb Evain  <jbevain at novell.com>
 
 	* PublisherIdentityPermissionAttribute.cs: use MOONLIGHT symbol to
diff --git a/mcs/class/corlib/System.Security.Permissions/ChangeLog b/mcs/class/corlib/System.Security.Permissions/ChangeLog.old
similarity index 100%
copy from mcs/class/corlib/System.Security.Permissions/ChangeLog
copy to mcs/class/corlib/System.Security.Permissions/ChangeLog.old
diff --git a/mcs/class/corlib/System.Security.Permissions/SecurityAction.cs b/mcs/class/corlib/System.Security.Permissions/SecurityAction.cs
index e33753f..8e9caf0 100644
--- a/mcs/class/corlib/System.Security.Permissions/SecurityAction.cs
+++ b/mcs/class/corlib/System.Security.Permissions/SecurityAction.cs
@@ -43,12 +43,24 @@ namespace System.Security.Permissions {
 	public enum SecurityAction {
 		Demand = 2,
 		Assert = 3,
+#if NET_4_0
+		[Obsolete ("This requests should not be used")]
+#endif
 		Deny = 4,
 		PermitOnly = 5,
 		LinkDemand = 6,
 		InheritanceDemand = 7,
+#if NET_4_0
+		[Obsolete ("This requests should not be used")]
+#endif
 		RequestMinimum = 8,
+#if NET_4_0
+		[Obsolete ("This requests should not be used")]
+#endif
 		RequestOptional = 9,
+#if NET_4_0
+		[Obsolete ("This requests should not be used")]
+#endif
 		RequestRefuse = 10,
 	}
 }
diff --git a/mcs/class/corlib/System.Security/ChangeLog b/mcs/class/corlib/System.Security/ChangeLog
index 0f5884e..e5c3ee6 100644
--- a/mcs/class/corlib/System.Security/ChangeLog
+++ b/mcs/class/corlib/System.Security/ChangeLog
@@ -1,3 +1,19 @@
+2011-01-09  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* SecurityManager.cs: Add new stubs for 4.0 methods. Add
+	[Obsolete] attributes on most methods (new in 4.0)
+
+2011-01-03  Miguel de Icaza  <miguel at gnome.org>
+
+	[GetFolderPath] Handful of .NET 4 changes
+
+	* Actually use the SpecialFolderPathOptions where we need them ->
+	Create is acknowledged -> DoNotVerify is ignored, as Mono
+	historically did not throw an exception on missing directories. *
+	Rename InternalGetFolderPath to UnixGetFolderPath as this is what
+	it is. * Fix existing references to the code * Fix indentation in
+	routine that was never properly formatted (ReadXdgUserDir)
+
 
 Wed Jul 21 16:00:08 CEST 2010 Paolo Molaro <lupus at ximian.com>
 
diff --git a/mcs/class/corlib/System.Security/ChangeLog b/mcs/class/corlib/System.Security/ChangeLog.old
similarity index 100%
copy from mcs/class/corlib/System.Security/ChangeLog
copy to mcs/class/corlib/System.Security/ChangeLog.old
diff --git a/mcs/class/corlib/System.Security/SecurityManager.cs b/mcs/class/corlib/System.Security/SecurityManager.cs
index 26da6e3..52053fb 100644
--- a/mcs/class/corlib/System.Security/SecurityManager.cs
+++ b/mcs/class/corlib/System.Security/SecurityManager.cs
@@ -70,6 +70,9 @@ namespace System.Security {
 
 		// properties
 
+#if NET_4_0
+		[Obsolete]
+#endif
 		extern public static bool CheckExecutionRights {
 			[MethodImplAttribute (MethodImplOptions.InternalCall)]
 			get;
@@ -114,6 +117,9 @@ namespace System.Security {
 			origin = new ArrayList ();
 		}
 
+#if NET_4_0
+		[Obsolete]
+#endif
 		public static bool IsGranted (IPermission perm)
 		{
 			if (perm == null)
@@ -214,6 +220,9 @@ namespace System.Security {
 			return null;
 		}
 
+#if NET_4_0
+		[Obsolete]
+#endif
 		[SecurityPermission (SecurityAction.Demand, ControlPolicy = true)]
 		public static PolicyLevel LoadPolicyLevelFromFile (string path, PolicyLevelType type)
 		{
@@ -231,6 +240,9 @@ namespace System.Security {
 			return pl;
 		}
 
+#if NET_4_0
+		[Obsolete]
+#endif
 		[SecurityPermission (SecurityAction.Demand, ControlPolicy = true)]
 		public static PolicyLevel LoadPolicyLevelFromString (string str, PolicyLevelType type)
 		{
@@ -248,12 +260,18 @@ namespace System.Security {
 			return pl;
 		}
 
+#if NET_4_0
+		[Obsolete]
+#endif
 		[SecurityPermission (SecurityAction.Demand, ControlPolicy = true)]
 		public static IEnumerator PolicyHierarchy ()
 		{
 			return Hierarchy;
 		}
 
+#if NET_4_0
+		[Obsolete]
+#endif
 		public static PermissionSet ResolvePolicy (Evidence evidence)
 		{
 			// no evidence, no permission
@@ -275,6 +293,9 @@ namespace System.Security {
 			return ps;
 		}
 
+#if NET_4_0
+		[Obsolete]
+#endif
 		[MonoTODO ("(2.0) more tests are needed")]
 		public static PermissionSet ResolvePolicy (Evidence[] evidences)
 		{
@@ -291,6 +312,9 @@ namespace System.Security {
 			return ps;
 		}
 
+#if NET_4_0
+		[Obsolete]
+#endif
 		public static PermissionSet ResolveSystemPolicy (Evidence evidence)
 		{
 			// no evidence, no permission
@@ -314,6 +338,9 @@ namespace System.Security {
 
 		static private SecurityPermission _execution = new SecurityPermission (SecurityPermissionFlag.Execution);
 
+#if NET_4_0
+		[Obsolete]
+#endif
 		public static PermissionSet ResolvePolicy (Evidence evidence, PermissionSet reqdPset, PermissionSet optPset, PermissionSet denyPset, out PermissionSet denied)
 		{
 			PermissionSet resolved = ResolvePolicy (evidence);
@@ -348,6 +375,9 @@ namespace System.Security {
 			return resolved;
 		}
 
+#if NET_4_0
+		[Obsolete]
+#endif
 		public static IEnumerator ResolvePolicyGroups (Evidence evidence)
 		{
 			if (evidence == null)
@@ -364,6 +394,9 @@ namespace System.Security {
 			return al.GetEnumerator ();
 		}
 
+#if NET_4_0
+		[Obsolete]
+#endif
 		[SecurityPermission (SecurityAction.Demand, ControlPolicy = true)]
 		public static void SavePolicy () 
 		{
@@ -374,6 +407,9 @@ namespace System.Security {
 			}
 		}
 
+#if NET_4_0
+		[Obsolete]
+#endif
 		[SecurityPermission (SecurityAction.Demand, ControlPolicy = true)]
 		public static void SavePolicyLevel (PolicyLevel level) 
 		{
@@ -397,7 +433,7 @@ namespace System.Security {
 		{
 			string machinePolicyPath = Path.GetDirectoryName (Environment.GetMachineConfigPath ());
 			// note: use InternalGetFolderPath to avoid recursive policy initialization
-			string userPolicyPath = Path.Combine (Environment.InternalGetFolderPath (Environment.SpecialFolder.ApplicationData), "mono");
+			string userPolicyPath = Path.Combine (Environment.UnixGetFolderPath (Environment.SpecialFolder.ApplicationData, Environment.SpecialFolderOption.Create), "mono");
 
 			PolicyLevel enterprise = new PolicyLevel ("Enterprise", PolicyLevelType.Enterprise);
 			_level = enterprise;
@@ -749,7 +785,22 @@ namespace System.Security {
 		{
 			throw new SecurityException ("SecurityAction.DemandChoice was removed from 2.0");
 		}
-#pragma warning restore 169		
+#pragma warning restore 169
+
+#if NET_4_0
+		public static PermissionSet GetStandardSandbox (Evidence evidence)
+		{
+			if (evidence == null)
+				throw new ArgumentNullException ("evidence");
+
+			throw new NotImplementedException ();
+		}
+
+		public static bool CurrentThreadRequiresSecurityContextCapture ()
+		{
+			throw new NotImplementedException ();
+		}
+#endif
 	}
 }
 
diff --git a/mcs/class/corlib/System.Threading.Tasks/ChangeLog b/mcs/class/corlib/System.Threading.Tasks/ChangeLog
index 44d84c2..34be6f9 100644
--- a/mcs/class/corlib/System.Threading.Tasks/ChangeLog
+++ b/mcs/class/corlib/System.Threading.Tasks/ChangeLog
@@ -1,3 +1,179 @@
+2011-01-13  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Make use of the wait changes in the internal TaskScheduler ->
+	IScheduler proxy.
+
+2011-01-13  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Rework internal wait mechanism in thread workers participation
+	code
+
+2011-01-13  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Fix continuation not being scheduled because of too early and too
+	greedy disposing.
+
+2011-01-06  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Explicitely attach loop underlying tasks to their eventual parent
+
+2011-01-06  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Use wider acceptance criteria to cope with nested child Task
+	waiting and external task waiting
+
+2011-01-05  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Ensure task wait chain isn't executed out of order in scheduler
+
+2011-01-04  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Use proper pattern for executing synchronous Task
+
+2010-12-16  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Clean and finish TaskFactory
+
+2010-12-15  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Add prototype for Parallel.For long overloads
+
+2010-12-15  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	More parameter renaming
+
+2010-12-15  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Update Task parameter names
+
+2010-12-03  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	[Task scheduler] Change waiting layout/wakeup point and use
+	adaptative deep sleeping
+
+2010-12-02  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	[Task Scheduler] Revisit Task waiting in Scheduler using
+	ManualResetEventSlim
+
+2010-12-02  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	[Task Scheduler] Track re-entrant call to WorkerMethod from normal
+	ThreadWorker and make them use their deque
+
+2010-12-03  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	[Task] Add an extra check in Task.WaitAny to make sure the index
+	returned is valid
+
+2010-12-03  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	[Task] Dumb bugfix when checking timeout in Task.WaitAny
+
+2010-11-26  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Fix typo
+
+2010-11-26  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	[Task] In every TaskFactory method accepting a Task array, we have
+	to make a private copy to avoid changes to the array content from
+	the moment we register the continuation to when we call the
+	callback
+
+2010-11-26  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	[Task] Check if Task isn't finished before going into the
+	Scheduler for Wait
+
+2010-11-26  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	[Task] Set continuation status to WaitingForActivation in
+	ContinueWithCore
+
+2010-11-26  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	[Task] Only launch continuation synchronously when the
+	corresponding option in TaskContinuationOptions is set
+
+2010-11-19  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Remove AreTasksFinished in Scheduler and directly use a non
+	volatile version of IsCompleted
+
+2010-11-19  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Increase the deepSleepTime of ThreadWorker
+
+2010-11-17  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	[Task scheduler] Refactoring and cleanup. Removed a bunch of
+	not-so needed lambdas to avoid delegate invocation cost.
+
+2010-11-12  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Throw an an exception when Break and Stop are used in combination.
+
+2010-11-12  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Simplify Parallel.ForEach loop execution
+
+2010-11-12  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Cleanup ForEach overloads in Parallel
+
+2010-11-11  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Refine precedent algorithm for Parallel.For index stealing.
+
+2010-11-11  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Add a new lightweight stealing algorithm to Parallel.For
+
+2010-11-11  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	In Parallel.For, returns immediately if the initial bound is
+	superior or equal to the upper bound.
+
+2010-11-11  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Small logic fix in choosing step in Parallel.For
+
+2010-11-10  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Simplify Parallel.For execution.
+
+	This commit remove the stealing path until a better solution for
+	it is devised.
+
+2010-11-03  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Implement Partitioner.Create int and long overloads. Add
+	corresponding unit tests.
+
+2010-11-02  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Add TaskExtensions class and Unwrap extension methods
+
+2010-11-03  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Refactor Task.Wait and Task.WaitAny methods and add support for
+	scheduler-less waiting.
+
+	A scheduler-less waiting is useful for instance in case Tasks are
+	waited upon without having being started (like in some
+	continuation chaining case).
+
+2010-11-03  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Set more state on TaskCompletionSource inner Task<T>
+
+2010-11-02  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Use Task helper methods in TaskCompletionSource instead of manual
+	setting, allow continuation flow to happen smoothly and task
+	status to be set accordingly.
+
 2010-08-27  Jérémie Laval  <jeremie.laval at gmail.com>
 
 	Move the predicate call under launched.TrySet protection in Task's
diff --git a/mcs/class/corlib/System.Threading.Tasks/CyclicDeque.cs b/mcs/class/corlib/System.Threading.Tasks/CyclicDeque.cs
index 61d6c26..bd21edc 100644
--- a/mcs/class/corlib/System.Threading.Tasks/CyclicDeque.cs
+++ b/mcs/class/corlib/System.Threading.Tasks/CyclicDeque.cs
@@ -24,7 +24,8 @@
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
+
 using System;
 using System.Collections.Generic;
 using System.Threading;
diff --git a/mcs/class/corlib/System.Threading.Tasks/Future.cs b/mcs/class/corlib/System.Threading.Tasks/Future.cs
index 295354f..75a2a7c 100644
--- a/mcs/class/corlib/System.Threading.Tasks/Future.cs
+++ b/mcs/class/corlib/System.Threading.Tasks/Future.cs
@@ -22,12 +22,13 @@
 //
 //
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
 using System;
 
 namespace System.Threading.Tasks
 {
-	
+	[System.Diagnostics.DebuggerDisplay ("Id = {Id}, Status = {Status}, Method = {DebuggerDisplayMethodDescription}, Result = {DebuggerDisplayResultDescription}")]
+	[System.Diagnostics.DebuggerTypeProxy ("System.Threading.Tasks.SystemThreadingTasks_FutureDebugView`1")]
 	public class Task<TResult>: Task
 	{
 		TResult value;
@@ -36,6 +37,7 @@ namespace System.Threading.Tasks
 		Func<object, TResult> function;
 		object state;
 		
+		[System.Diagnostics.DebuggerBrowsable (System.Diagnostics.DebuggerBrowsableState.Never)]
 		public TResult Result {
 			get {
 				if (function != null)
@@ -58,20 +60,20 @@ namespace System.Threading.Tasks
 			
 		}
 		
-		public Task (Func<TResult> function, CancellationToken token)
-			: this ((o) => function (), null, token, TaskCreationOptions.None)
+		public Task (Func<TResult> function, CancellationToken cancellationToken)
+			: this ((o) => function (), null, cancellationToken, TaskCreationOptions.None)
 		{
 			
 		}
 		
-		public Task (Func<TResult> function, TaskCreationOptions options)
-			: this ((o) => function (), null, CancellationToken.None, options)
+		public Task (Func<TResult> function, TaskCreationOptions creationOptions)
+			: this ((o) => function (), null, CancellationToken.None, creationOptions)
 		{
 			
 		}
 		
-		public Task (Func<TResult> function, CancellationToken token, TaskCreationOptions options)
-			: this ((o) => function (), null, token, options)
+		public Task (Func<TResult> function, CancellationToken cancellationToken, TaskCreationOptions creationOptions)
+			: this ((o) => function (), null, cancellationToken, creationOptions)
 		{
 			
 		}
@@ -81,20 +83,20 @@ namespace System.Threading.Tasks
 			
 		}
 		
-		public Task (Func<object, TResult> function, object state, CancellationToken token)
-			: this (function, state, token, TaskCreationOptions.None)
+		public Task (Func<object, TResult> function, object state, CancellationToken cancellationToken)
+			: this (function, state, cancellationToken, TaskCreationOptions.None)
 		{
 			
 		}
 		
-		public Task (Func<object, TResult> function, object state, TaskCreationOptions options)
-			: this (function, state, CancellationToken.None, options)
+		public Task (Func<object, TResult> function, object state, TaskCreationOptions creationOptions)
+			: this (function, state, CancellationToken.None, creationOptions)
 		{
 			
 		}
 		
-		public Task (Func<object, TResult> function, object state, CancellationToken token, TaskCreationOptions options)
-			: base (null, state, token, options)
+		public Task (Func<object, TResult> function, object state, CancellationToken cancellationToken, TaskCreationOptions creationOptions)
+			: base (null, state, cancellationToken, creationOptions)
 		{
 			this.function = function;
 			this.state = state;
@@ -109,61 +111,70 @@ namespace System.Threading.Tasks
 			state = null;
 		}
 		
-		public Task ContinueWith (Action<Task<TResult>> a)
+		public Task ContinueWith (Action<Task<TResult>> continuationAction)
 		{
-			return ContinueWith (a, TaskContinuationOptions.None);
+			return ContinueWith (continuationAction, TaskContinuationOptions.None);
 		}
 		
-		public Task ContinueWith (Action<Task<TResult>> a, TaskContinuationOptions options)
+		public Task ContinueWith (Action<Task<TResult>> continuationAction, TaskContinuationOptions continuationOptions)
 		{
-			return ContinueWith (a, CancellationToken.None, options, TaskScheduler.Current);
+			return ContinueWith (continuationAction, CancellationToken.None, continuationOptions, TaskScheduler.Current);
 		}
 		
-		public Task ContinueWith (Action<Task<TResult>> a, CancellationToken token)
+		public Task ContinueWith (Action<Task<TResult>> continuationAction, CancellationToken cancellationToken)
 		{
-			return ContinueWith (a, token, TaskContinuationOptions.None, TaskScheduler.Current);
+			return ContinueWith (continuationAction, cancellationToken, TaskContinuationOptions.None, TaskScheduler.Current);
 		}
 		
-		public Task ContinueWith (Action<Task<TResult>> a, TaskScheduler scheduler)
+		public Task ContinueWith (Action<Task<TResult>> continuationAction, TaskScheduler scheduler)
 		{
-			return ContinueWith (a, CancellationToken.None, TaskContinuationOptions.None, scheduler);
+			return ContinueWith (continuationAction, CancellationToken.None, TaskContinuationOptions.None, scheduler);
 		}
 		
-		public Task ContinueWith (Action<Task<TResult>> a, CancellationToken token,
-		                          TaskContinuationOptions options, TaskScheduler scheduler)
+		public Task ContinueWith (Action<Task<TResult>> continuationAction, CancellationToken cancellationToken,
+		                          TaskContinuationOptions continuationOptions, TaskScheduler scheduler)
 		{
-			Task t = new Task ((o) => a ((Task<TResult>)o), this, token, GetCreationOptions (options));
-			ContinueWithCore (t, options, scheduler);
+			if (continuationAction == null)
+				throw new ArgumentNullException ("continuationFunction");
+			if (scheduler == null)
+				throw new ArgumentNullException ("scheduler");
+
+			Task t = new Task ((o) => continuationAction ((Task<TResult>)o), this, cancellationToken, GetCreationOptions (continuationOptions));
+			ContinueWithCore (t, continuationOptions, scheduler);
 			
 			return t;
 		}
 		
-		public Task<TNewResult> ContinueWith<TNewResult> (Func<Task<TResult>, TNewResult> a)
+		public Task<TNewResult> ContinueWith<TNewResult> (Func<Task<TResult>, TNewResult> continuationFunction)
 		{
-			return ContinueWith<TNewResult> (a, TaskContinuationOptions.None);
+			return ContinueWith<TNewResult> (continuationFunction, TaskContinuationOptions.None);
 		}
 		
-		public Task<TNewResult> ContinueWith<TNewResult> (Func<Task<TResult>, TNewResult> a, CancellationToken token)
+		public Task<TNewResult> ContinueWith<TNewResult> (Func<Task<TResult>, TNewResult> continuationFunction, CancellationToken cancellationToken)
 		{
-			return ContinueWith<TNewResult> (a, token, TaskContinuationOptions.None, TaskScheduler.Current);
+			return ContinueWith<TNewResult> (continuationFunction, cancellationToken, TaskContinuationOptions.None, TaskScheduler.Current);
 		}
 		
-		public Task<TNewResult> ContinueWith<TNewResult> (Func<Task<TResult>, TNewResult> a, TaskContinuationOptions options)
+		public Task<TNewResult> ContinueWith<TNewResult> (Func<Task<TResult>, TNewResult> continuationFunction, TaskContinuationOptions continuationOptions)
 		{
-			return ContinueWith<TNewResult> (a, CancellationToken.None, options, TaskScheduler.Current);
+			return ContinueWith<TNewResult> (continuationFunction, CancellationToken.None, continuationOptions, TaskScheduler.Current);
 		}
 		
-		public Task<TNewResult> ContinueWith<TNewResult> (Func<Task<TResult>, TNewResult> a, TaskScheduler scheduler)
+		public Task<TNewResult> ContinueWith<TNewResult> (Func<Task<TResult>, TNewResult> continuationFunction, TaskScheduler scheduler)
 		{
-			return ContinueWith<TNewResult> (a, CancellationToken.None, TaskContinuationOptions.None, scheduler);
+			return ContinueWith<TNewResult> (continuationFunction, CancellationToken.None, TaskContinuationOptions.None, scheduler);
 		}
 		
-		public Task<TNewResult> ContinueWith<TNewResult> (Func<Task<TResult>, TNewResult> a, CancellationToken token,
-		                                                  TaskContinuationOptions options,
+		public Task<TNewResult> ContinueWith<TNewResult> (Func<Task<TResult>, TNewResult> continuationFunction,
+		                                                  CancellationToken cancellationToken,
+		                                                  TaskContinuationOptions continuationOptions,
 		                                                  TaskScheduler scheduler)
 		{
-			Task<TNewResult> t = new Task<TNewResult> ((o) => a ((Task<TResult>)o), this, token, GetCreationOptions (options));
-			ContinueWithCore (t, options, scheduler);
+			Task<TNewResult> t = new Task<TNewResult> ((o) => continuationFunction ((Task<TResult>)o),
+			                                           this,
+			                                           cancellationToken,
+			                                           GetCreationOptions (continuationOptions));
+			ContinueWithCore (t, continuationOptions, scheduler);
 			
 			return t;
 		}
diff --git a/mcs/class/corlib/System.Threading.Tasks/IScheduler.cs b/mcs/class/corlib/System.Threading.Tasks/IScheduler.cs
index e316bbd..9a9aadd 100644
--- a/mcs/class/corlib/System.Threading.Tasks/IScheduler.cs
+++ b/mcs/class/corlib/System.Threading.Tasks/IScheduler.cs
@@ -22,7 +22,7 @@
 //
 //
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
 using System;
 using System.Threading;
 using System.Collections.Generic;
@@ -33,8 +33,7 @@ namespace System.Threading.Tasks
 	{
 		void AddWork (Task t);
 		void ParticipateUntil (Task task);
-		bool ParticipateUntil (Task task, Func<bool> predicate);
-		void ParticipateUntil (Func<bool> predicate);
+		bool ParticipateUntil (Task task, ManualResetEventSlim predicateEvt, int millisecondsTimeout);
 		void PulseAll ();
 	}
 }
diff --git a/mcs/class/corlib/System.Threading.Tasks/Parallel.cs b/mcs/class/corlib/System.Threading.Tasks/Parallel.cs
index 0881980..5448dbc 100644
--- a/mcs/class/corlib/System.Threading.Tasks/Parallel.cs
+++ b/mcs/class/corlib/System.Threading.Tasks/Parallel.cs
@@ -36,29 +36,32 @@ namespace System.Threading.Tasks
 		{
 			return GetBestWorkerNumber (TaskScheduler.Current);
 		}
-		
+
 		internal static int GetBestWorkerNumber (TaskScheduler scheduler)
-		{	
+		{
 			return scheduler.MaximumConcurrencyLevel;
 		}
-		
+
 		static int GetBestWorkerNumber (int from, int to, ParallelOptions options, out int step)
 		{
 			int num = Math.Min (GetBestWorkerNumber (),
 			                    options != null && options.MaxDegreeOfParallelism != -1 ? options.MaxDegreeOfParallelism : int.MaxValue);
 			// Integer range that each task process
-			step = Math.Min (5, (to - from) / num);
-			if (step <= 0)
-				step = 1;
-			
+			if ((step = (to - from) / num) < 5) {
+				step = 5;
+				num = (to - from) / 5;
+				if (num < 1)
+					num = 1;
+			}
+
 			return num;
 		}
-		
+
 		static void HandleExceptions (IEnumerable<Task> tasks)
 		{
 			HandleExceptions (tasks, null);
 		}
-		
+
 		static void HandleExceptions (IEnumerable<Task> tasks, ParallelLoopState.ExternalInfos infos)
 		{
 			List<Exception> exs = new List<Exception> ();
@@ -66,19 +69,19 @@ namespace System.Threading.Tasks
 				if (t.Exception != null)
 					exs.Add (t.Exception);
 			}
-			
+
 			if (exs.Count > 0) {
 				if (infos != null)
 					infos.IsExceptional = true;
-				
+
 				throw new AggregateException (exs);
 			}
 		}
-		
+
 		static void InitTasks (Task[] tasks, int count, Action action, ParallelOptions options)
 		{
-			TaskCreationOptions creation = TaskCreationOptions.LongRunning;
-			
+			TaskCreationOptions creation = TaskCreationOptions.LongRunning | TaskCreationOptions.AttachedToParent;
+
 			for (int i = 0; i < count; i++) {
 				if (options == null)
 					tasks [i] = Task.Factory.StartNew (action, creation);
@@ -86,354 +89,550 @@ namespace System.Threading.Tasks
 					tasks [i] = Task.Factory.StartNew (action, options.CancellationToken, creation, options.TaskScheduler);
 			}
 		}
-		#region For
-		
-		public static ParallelLoopResult For (int from, int to, Action<int> action)
+
+#region For
+
+		public static ParallelLoopResult For (int fromInclusive, int toExclusive, Action<int> body)
 		{
-			return For (from, to, null, action);
+			return For (fromInclusive, toExclusive, ParallelOptions.Default, body);
 		}
-		
-		public static ParallelLoopResult For (int from, int to, Action<int, ParallelLoopState> action)
+
+		public static ParallelLoopResult For (int fromInclusive, int toExclusive, Action<int, ParallelLoopState> body)
 		{
-			return For (from, to, null, action);
+			return For (fromInclusive, toExclusive, ParallelOptions.Default, body);
 		}
-		
-		public static ParallelLoopResult For (int from, int to, ParallelOptions options, Action<int> action)
+
+		public static ParallelLoopResult For (int fromInclusive, int toExclusive, ParallelOptions parallelOptions, Action<int> body)
 		{
-			return For (from, to, options, (index, state) => action (index));
+			return For (fromInclusive, toExclusive, parallelOptions, (index, state) => body (index));
 		}
-		
-		public static ParallelLoopResult For (int from, int to, ParallelOptions options, Action<int, ParallelLoopState> action)
+
+		public static ParallelLoopResult For (int fromInclusive, int toExclusive, ParallelOptions parallelOptions, Action<int, ParallelLoopState> body)
 		{
-			return For<object> (from, to, options, null, (i, s, l) => { action (i, s); return null; }, null);
+			return For<object> (fromInclusive, toExclusive, parallelOptions, () => null, (i, s, l) => { body (i, s); return null; }, _ => {});
 		}
-		
-		public static ParallelLoopResult For<TLocal> (int from, int to, Func<TLocal> init,
-		                                              Func<int, ParallelLoopState, TLocal, TLocal> action, Action<TLocal> destruct)
+
+		public static ParallelLoopResult For<TLocal> (int fromInclusive,
+		                                              int toExclusive,
+		                                              Func<TLocal> localInit,
+		                                              Func<int, ParallelLoopState, TLocal, TLocal> body,
+		                                              Action<TLocal> localFinally)
 		{
-			return For<TLocal> (from, to, null, init, action, destruct);
+			return For<TLocal> (fromInclusive, toExclusive, ParallelOptions.Default, localInit, body, localFinally);
 		}
-	
-		
-		public static ParallelLoopResult For<TLocal> (int from, int to, ParallelOptions options, 
-		                                              Func<TLocal> init, 
-		                                              Func<int, ParallelLoopState, TLocal, TLocal> action,
-		                                              Action<TLocal> destruct)
-		{			
-			if (action == null)
-				throw new ArgumentNullException ("action");
-			
-			// Number of task to be launched (normally == Env.ProcessorCount)
+
+		public static ParallelLoopResult For<TLocal> (int fromInclusive,
+		                                              int toExclusive,
+		                                              ParallelOptions parallelOptions,
+		                                              Func<TLocal> localInit,
+		                                              Func<int, ParallelLoopState, TLocal, TLocal> body,
+		                                              Action<TLocal> localFinally)
+		{
+			if (body == null)
+				throw new ArgumentNullException ("body");
+			if (localInit == null)
+				throw new ArgumentNullException ("localInit");
+			if (localFinally == null)
+				throw new ArgumentNullException ("localFinally");
+			if (parallelOptions == null)
+				throw new ArgumentNullException ("options");
+			if (fromInclusive >= toExclusive)
+				return new ParallelLoopResult (null, true);
+
+			// Number of task toExclusive be launched (normally == Env.ProcessorCount)
 			int step;
-			int num = GetBestWorkerNumber (from, to, options, out step);
+			int num = GetBestWorkerNumber (fromInclusive, toExclusive, parallelOptions, out step);
 
-			// Each worker put the indexes it's responsible for here
-			// so that other worker may steal if they starve.
-			SimpleConcurrentBag<int> bag = new SimpleConcurrentBag<int> (num);
 			Task[] tasks = new Task [num];
+
+			StealRange[] ranges = new StealRange[num];
+			for (int i = 0; i < num; i++)
+				ranges[i] = new StealRange (fromInclusive, i, step);
+
 			ParallelLoopState.ExternalInfos infos = new ParallelLoopState.ExternalInfos ();
-			
-			Func<ParallelLoopState, bool> cancellationTokenTest = (s) => {
-				if (options != null && options.CancellationToken.IsCancellationRequested) {
-					s.Stop ();
-					return true;
-				}
-				return false;
-			};
-			
-			Func<int, bool> breakTest = (i) => infos.LowestBreakIteration != null && infos.LowestBreakIteration > i;
-			
-			int currentIndex = from;
-			
+
+			int currentIndex = -1;
+
 			Action workerMethod = delegate {
-				int index, actual;
-				TLocal local = (init == null) ? default (TLocal) : init ();
-				
+				int localWorker = Interlocked.Increment (ref currentIndex);
+				StealRange range = ranges[localWorker];
+				int index = range.Actual;
+				int stopIndex = localWorker + 1 == num ? toExclusive : Math.Min (toExclusive, index + step);
+				TLocal local = localInit ();
+
 				ParallelLoopState state = new ParallelLoopState (infos);
-				int workIndex = bag.GetNextIndex ();
-				
+				CancellationToken token = parallelOptions.CancellationToken;
+
 				try {
-					while (currentIndex < to && (index = Interlocked.Add (ref currentIndex, step) - step) < to) {
-						if (infos.IsStopped.Value)
+					for (int i = index; i < stopIndex; range.Actual = ++i) {
+						if (infos.IsStopped)
 							return;
-						
-						if (cancellationTokenTest (state))
+
+						token.ThrowIfCancellationRequested ();
+
+						if (infos.LowestBreakIteration != null && infos.LowestBreakIteration > i)
 							return;
-						
-						for (int i = index; i < to && i < index + step; i++)
-							bag.Add (workIndex, i);
-						
-						for (int i = index; i < to && i < index + step && bag.TryTake (workIndex, out actual); i++) {
-							if (infos.IsStopped.Value)
-								return;
-							
-							if (cancellationTokenTest (state))
-								return;
-							
-							if (breakTest (actual))
-								return;
-							
-							state.CurrentIteration = actual;
-							local = action (actual, state, local);
-						}
+
+						state.CurrentIteration = i;
+						local = body (i, state, local);
+						if (i >= stopIndex - range.Stolen)
+							break;
 					}
-					
-					while (bag.TrySteal (workIndex, out actual)) {
-						if (infos.IsStopped.Value)
-							return;
-						
-						if (cancellationTokenTest (state))
-							return;
-						
-						if (breakTest (actual))
-							continue;
-						
-						state.CurrentIteration = actual;
-						local = action (actual, state, local);
+
+					// Try toExclusive steal fromInclusive our right neighbor (cyclic)
+					int len = num + localWorker;
+					for (int sIndex = localWorker + 1; sIndex < len; ++sIndex) {
+						int extWorker = sIndex % num;
+						range = ranges[extWorker];
+
+						stopIndex = extWorker + 1 == num ? toExclusive : Math.Min (toExclusive, fromInclusive + (extWorker + 1) * step);
+
+						int stolen;
+						do {
+							stolen = range.Stolen;
+							if (stopIndex - stolen > range.Actual)
+								goto next;
+						} while (Interlocked.CompareExchange (ref range.Stolen, stolen + 1, stolen) != stolen);
+
+						stolen = stopIndex - stolen - 1;
+
+						if (stolen > range.Actual)
+							local = body (stolen, state, local);
+
+					next:
+						continue;
 					}
 				} finally {
-					if (destruct != null)
-						destruct (local);
+					localFinally (local);
 				}
 			};
 
-			InitTasks (tasks, num, workerMethod, options);
-			
+			InitTasks (tasks, num, workerMethod, parallelOptions);
+
 			try {
 				Task.WaitAll (tasks);
 			} catch {
 				HandleExceptions (tasks, infos);
 			}
-			
-			return new ParallelLoopResult (infos.LowestBreakIteration, !(infos.IsStopped.Value || infos.IsExceptional));	
+
+			return new ParallelLoopResult (infos.LowestBreakIteration, !(infos.IsStopped || infos.IsExceptional));
 		}
 
-		#endregion
-		
-		#region Foreach
+		class StealRange
+		{
+			public int Stolen;
+			public int Actual;
+
+			public StealRange (int fromInclusive, int i, int step)
+			{
+				Actual = fromInclusive + i * step;
+			}
+		}
+
+#endregion
+
+#region For (long)
+
+		[MonoTODO]
+		public static ParallelLoopResult For (long fromInclusive, long toExclusive, Action<long> body)
+		{
+			return For (fromInclusive, toExclusive, ParallelOptions.Default, body);
+		}
+
+		[MonoTODO]
+		public static ParallelLoopResult For (long fromInclusive, long toExclusive, Action<long, ParallelLoopState> body)
+		{
+			return For (fromInclusive, toExclusive, ParallelOptions.Default, body);
+		}
+
+		[MonoTODO]
+		public static ParallelLoopResult For (long fromInclusive, long toExclusive, ParallelOptions parallelOptions, Action<long> body)
+		{
+			return For (fromInclusive, toExclusive, parallelOptions, (index, state) => body (index));
+		}
+
+		[MonoTODO]
+		public static ParallelLoopResult For (long fromInclusive, long toExclusive, ParallelOptions parallelOptions, Action<long, ParallelLoopState> body)
+		{
+			return For<object> (fromInclusive, toExclusive, parallelOptions, () => null, (i, s, l) => { body (i, s); return null; }, _ => {});
+		}
+
+		[MonoTODO]
+		public static ParallelLoopResult For<TLocal> (long fromInclusive,
+		                                              long toExclusive,
+		                                              Func<TLocal> localInit,
+		                                              Func<long, ParallelLoopState, TLocal, TLocal> body,
+		                                              Action<TLocal> localFinally)
+		{
+			return For<TLocal> (fromInclusive, toExclusive, ParallelOptions.Default, localInit, body, localFinally);
+		}
+
+		[MonoTODO ("See how this can be refactored with the above For implementation")]
+		public static ParallelLoopResult For<TLocal> (long fromInclusive,
+		                                              long toExclusive,
+		                                              ParallelOptions parallelOptions,
+		                                              Func<TLocal> localInit,
+		                                              Func<long, ParallelLoopState, TLocal, TLocal> body,
+		                                              Action<TLocal> localFinally)
+		{
+			if (body == null)
+				throw new ArgumentNullException ("body");
+			if (localInit == null)
+				throw new ArgumentNullException ("localInit");
+			if (localFinally == null)
+				throw new ArgumentNullException ("localFinally");
+			if (parallelOptions == null)
+				throw new ArgumentNullException ("options");
+			if (fromInclusive >= toExclusive)
+				return new ParallelLoopResult (null, true);
+
+			throw new NotImplementedException ();
+		}
+
+#endregion
+
+#region Foreach
 		static ParallelLoopResult ForEach<TSource, TLocal> (Func<int, IList<IEnumerator<TSource>>> enumerable, ParallelOptions options,
 		                                                    Func<TLocal> init, Func<TSource, ParallelLoopState, TLocal, TLocal> action,
 		                                                    Action<TLocal> destruct)
-		{		
+		{
+			if (enumerable == null)
+				throw new ArgumentNullException ("source");
+			if (options == null)
+				throw new ArgumentNullException ("options");
+			if (action == null)
+				throw new ArgumentNullException ("action");
+			if (init == null)
+				throw new ArgumentNullException ("init");
+			if (destruct == null)
+				throw new ArgumentNullException ("destruct");
+
 			int num = Math.Min (GetBestWorkerNumber (),
 			                    options != null && options.MaxDegreeOfParallelism != -1 ? options.MaxDegreeOfParallelism : int.MaxValue);
-			
+
 			Task[] tasks = new Task[num];
 			ParallelLoopState.ExternalInfos infos = new ParallelLoopState.ExternalInfos ();
-			
+
 			SimpleConcurrentBag<TSource> bag = new SimpleConcurrentBag<TSource> (num);
 			const int bagCount = 5;
-			
+
 			IList<IEnumerator<TSource>> slices = enumerable (num);
-			
-			int sliceIndex = 0;
-			
-			Func<ParallelLoopState, bool> cancellationTokenTest = (s) => {
-				if (options != null && options.CancellationToken.IsCancellationRequested) {
-					s.Stop ();
-					return true;
-				}
-				return false;
-			};
+
+			int sliceIndex = -1;
 
 			Action workerMethod = delegate {
-				IEnumerator<TSource> slice = slices[Interlocked.Increment (ref sliceIndex) - 1];
-				
-				TLocal local = (init != null) ? init () : default (TLocal);
+				IEnumerator<TSource> slice = slices[Interlocked.Increment (ref sliceIndex)];
+
+				TLocal local = init ();
 				ParallelLoopState state = new ParallelLoopState (infos);
 				int workIndex = bag.GetNextIndex ();
-				
+				CancellationToken token = options.CancellationToken;
+
 				try {
 					bool cont = true;
 					TSource element;
-					
+
 					while (cont) {
-						if (infos.IsStopped.Value)
+						if (infos.IsStopped || infos.IsBroken.Value)
 							return;
-						
-						if (cancellationTokenTest (state))
-							return;
-						
+
+						token.ThrowIfCancellationRequested ();
+
 						for (int i = 0; i < bagCount && (cont = slice.MoveNext ()); i++) {
 							bag.Add (workIndex, slice.Current);
 						}
-						
+
 						for (int i = 0; i < bagCount && bag.TryTake (workIndex, out element); i++) {
-							if (infos.IsStopped.Value)
-								return;
-							
-							if (cancellationTokenTest (state))
+							if (infos.IsStopped)
 								return;
-							
+
+							token.ThrowIfCancellationRequested ();
+
 							local = action (element, state, local);
 						}
 					}
-					
+
 					while (bag.TrySteal (workIndex, out element)) {
-						if (infos.IsStopped.Value)
-							return;
-						
-						if (cancellationTokenTest (state))
-							return;
-						
+						token.ThrowIfCancellationRequested ();
+
 						local = action (element, state, local);
+
+						if (infos.IsStopped || infos.IsBroken.Value)
+							return;
 					}
 				} finally {
-					if (destruct != null)
-						destruct (local);
+					destruct (local);
 				}
 			};
-			
+
 			InitTasks (tasks, num, workerMethod, options);
-			
+
 			try {
 				Task.WaitAll (tasks);
 			} catch {
 				HandleExceptions (tasks, infos);
 			}
-			
-			return new ParallelLoopResult (infos.LowestBreakIteration, !(infos.IsStopped.Value || infos.IsExceptional));
-			
+
+			return new ParallelLoopResult (infos.LowestBreakIteration, !(infos.IsStopped || infos.IsExceptional));
 		}
-		
-		public static ParallelLoopResult ForEach<TSource> (IEnumerable<TSource> enumerable, Action<TSource> action)
+
+		public static ParallelLoopResult ForEach<TSource> (IEnumerable<TSource> source, Action<TSource> body)
 		{
-			return ForEach<TSource, object> (Partitioner.Create (enumerable), ParallelOptions.Default, null, 
-			                                 (e, s, l) => { action (e); return null; }, null);
+			if (source == null)
+				throw new ArgumentNullException ("source");
+			if (body == null)
+				throw new ArgumentNullException ("body");
+
+			return ForEach<TSource, object> (Partitioner.Create (source),
+			                                 ParallelOptions.Default,
+			                                 () => null,
+			                                 (e, s, l) => { body (e); return null; },
+			                                 _ => {});
 		}
-		
-		public static ParallelLoopResult ForEach<TSource> (IEnumerable<TSource> enumerable, Action<TSource, ParallelLoopState> action)
+
+		public static ParallelLoopResult ForEach<TSource> (IEnumerable<TSource> source, Action<TSource, ParallelLoopState> body)
 		{
-			return ForEach<TSource, object> (Partitioner.Create (enumerable), ParallelOptions.Default, null,
-			                                 (e, s, l) => { action (e, s); return null; }, null);
+			if (source == null)
+				throw new ArgumentNullException ("source");
+			if (body == null)
+				throw new ArgumentNullException ("body");
+
+			return ForEach<TSource, object> (Partitioner.Create (source),
+			                                 ParallelOptions.Default,
+			                                 () => null,
+			                                 (e, s, l) => { body (e, s); return null; },
+			                                 _ => {});
 		}
-		
-		public static ParallelLoopResult ForEach<TSource> (IEnumerable<TSource> enumerable,
-		                                                   Action<TSource, ParallelLoopState, long> action)
+
+		public static ParallelLoopResult ForEach<TSource> (IEnumerable<TSource> source,
+		                                                   Action<TSource, ParallelLoopState, long> body)
 		{
-			return ForEach<TSource, object> (Partitioner.Create (enumerable), ParallelOptions.Default, null,
-			                                 (e, s, l) => { action (e, s, -1); return null; }, null);
+			if (source == null)
+				throw new ArgumentNullException ("source");
+			if (body == null)
+				throw new ArgumentNullException ("body");
+
+
+			return ForEach<TSource, object> (Partitioner.Create (source),
+			                                 ParallelOptions.Default,
+			                                 () => null,
+			                                 (e, s, l) => { body (e, s, -1); return null; },
+			                                 _ => {});
 		}
-		
+
 		public static ParallelLoopResult ForEach<TSource> (Partitioner<TSource> source,
 		                                                   Action<TSource, ParallelLoopState> body)
 		{
-			return ForEach<TSource, object> (source, ParallelOptions.Default, null, (e, s, l) => { body (e, s); return null; }, null);
+			if (body == null)
+				throw new ArgumentNullException ("body");
+
+			return ForEach<TSource, object> (source,
+			                                 ParallelOptions.Default,
+			                                 () => null,
+			                                 (e, s, l) => { body (e, s); return null; },
+			                                 _ => {});
 		}
-		
-		public static ParallelLoopResult ForEach<TSource> (OrderablePartitioner<TSource> source, 
+
+		public static ParallelLoopResult ForEach<TSource> (OrderablePartitioner<TSource> source,
 		                                                   Action<TSource, ParallelLoopState, long> body)
 
 		{
-			return ForEach<TSource, object> (source, ParallelOptions.Default, null, (e, s, i, l) => { body (e, s, i); return null; }, null);
+			if (body == null)
+				throw new ArgumentNullException ("body");
+
+			return ForEach<TSource, object> (source,
+			                                 ParallelOptions.Default,
+			                                 () => null,
+			                                 (e, s, i, l) => { body (e, s, i); return null; },
+			                                 _ => {});
 		}
-		
+
 		public static ParallelLoopResult ForEach<TSource> (Partitioner<TSource> source,
 		                                                   Action<TSource> body)
 
 		{
-			return ForEach<TSource, object> (source, ParallelOptions.Default, null, (e, s, l) => { body (e); return null; }, null);
+			if (body == null)
+				throw new ArgumentNullException ("body");
+
+			return ForEach<TSource, object> (source,
+			                                 ParallelOptions.Default,
+			                                 () => null,
+			                                 (e, s, l) => { body (e); return null; },
+			                                 _ => {});
 		}
-		
-		public static ParallelLoopResult ForEach<TSource> (IEnumerable<TSource> source, ParallelOptions parallelOptions,
+
+		public static ParallelLoopResult ForEach<TSource> (IEnumerable<TSource> source,
+		                                                   ParallelOptions parallelOptions,
 		                                                   Action<TSource> body)
 		{
-			return ForEach<TSource, object> (Partitioner.Create (source), parallelOptions, null,
-			                                 (e, s, l) => { body (e); return null; }, null);
+			if (source == null)
+				throw new ArgumentNullException ("source");
+			if (body == null)
+				throw new ArgumentNullException ("body");
+
+			return ForEach<TSource, object> (Partitioner.Create (source),
+			                                 parallelOptions,
+			                                 () => null,
+			                                 (e, s, l) => { body (e); return null; },
+			                                 _ => {});
 		}
-		
+
 		public static ParallelLoopResult ForEach<TSource> (IEnumerable<TSource> source, ParallelOptions parallelOptions,
 		                                                   Action<TSource, ParallelLoopState> body)
 		{
-			return ForEach<TSource, object> (Partitioner.Create (source), parallelOptions, null, 
-			                                 (e, s, l) => { body (e, s); return null; }, null);
+			if (source == null)
+				throw new ArgumentNullException ("source");
+			if (body == null)
+				throw new ArgumentNullException ("body");
+
+			return ForEach<TSource, object> (Partitioner.Create (source),
+			                                 parallelOptions,
+			                                 () => null,
+			                                 (e, s, l) => { body (e, s); return null; },
+			                                 _ => {});
 		}
-		
+
 		public static ParallelLoopResult ForEach<TSource> (IEnumerable<TSource> source, ParallelOptions parallelOptions,
 		                                                   Action<TSource, ParallelLoopState, long> body)
 		{
-			return ForEach<TSource, object> (Partitioner.Create (source), parallelOptions,
-			                                 null, (e, s, i, l) => { body (e, s, i); return null; }, null);
+			if (source == null)
+				throw new ArgumentNullException ("source");
+			if (body == null)
+				throw new ArgumentNullException ("body");
+
+			return ForEach<TSource, object> (Partitioner.Create (source),
+			                                 parallelOptions,
+			                                 () => null,
+			                                 (e, s, i, l) => { body (e, s, i); return null; },
+			                                 _ => {});
 		}
-		
+
 		public static ParallelLoopResult ForEach<TSource> (OrderablePartitioner<TSource> source, ParallelOptions parallelOptions,
 		                                                   Action<TSource, ParallelLoopState, long> body)
 
 		{
-			return ForEach<TSource, object> (source, parallelOptions, null, (e, s, i, l) => { body (e, s, i); return null; }, null);
+			if (body == null)
+				throw new ArgumentNullException ("body");
+
+			return ForEach<TSource, object> (source,
+			                                 parallelOptions,
+			                                 () => null,
+			                                 (e, s, i, l) => { body (e, s, i); return null; },
+			                                 _ => {});
 		}
-		
+
 		public static ParallelLoopResult ForEach<TSource> (Partitioner<TSource> source, ParallelOptions parallelOptions,
 		                                                   Action<TSource> body)
 		{
-			return ForEach<TSource, object> (source, parallelOptions, null, (e, s, l) => {body (e); return null; }, null);
+			if (body == null)
+				throw new ArgumentNullException ("body");
+
+			return ForEach<TSource, object> (source,
+			                                 parallelOptions,
+			                                 () => null,
+			                                 (e, s, l) => { body (e); return null; },
+			                                 _ => {});
 		}
-		
-		public static ParallelLoopResult ForEach<TSource> (Partitioner<TSource> source, ParallelOptions parallelOptions, 
+
+		public static ParallelLoopResult ForEach<TSource> (Partitioner<TSource> source, ParallelOptions parallelOptions,
 		                                                   Action<TSource, ParallelLoopState> body)
 		{
-			return ForEach<TSource, object> (source, parallelOptions, null, (e, s, l) => { body (e, s); return null; }, null);
+			return ForEach<TSource, object> (source,
+			                                 parallelOptions,
+			                                 () => null,
+			                                 (e, s, l) => { body (e, s); return null; },
+			                                 _ => {});
 		}
-		
+
 		public static ParallelLoopResult ForEach<TSource, TLocal> (IEnumerable<TSource> source, Func<TLocal> localInit,
 		                                                           Func<TSource, ParallelLoopState, TLocal, TLocal> body,
 		                                                           Action<TLocal> localFinally)
 		{
-			return ForEach<TSource, TLocal> ((Partitioner<TSource>)Partitioner.Create (source), null, localInit, body, localFinally);
+			if (source == null)
+				throw new ArgumentNullException ("source");
+
+			return ForEach<TSource, TLocal> ((Partitioner<TSource>)Partitioner.Create (source),
+			                                 ParallelOptions.Default,
+			                                 localInit,
+			                                 body,
+			                                 localFinally);
 		}
-		
+
 		public static ParallelLoopResult ForEach<TSource, TLocal> (IEnumerable<TSource> source, Func<TLocal> localInit,
 		                                                           Func<TSource, ParallelLoopState, long, TLocal, TLocal> body,
 		                                                           Action<TLocal> localFinally)
 		{
-			return ForEach<TSource, TLocal> (Partitioner.Create (source), null, localInit, body, localFinally);
+			return ForEach<TSource, TLocal> (Partitioner.Create (source),
+			                                 ParallelOptions.Default,
+			                                 localInit,
+			                                 body,
+			                                 localFinally);
 		}
-		
+
 		public static ParallelLoopResult ForEach<TSource, TLocal> (OrderablePartitioner<TSource> source, Func<TLocal> localInit,
 		                                                           Func<TSource, ParallelLoopState, long, TLocal, TLocal> body,
 		                                                           Action<TLocal> localFinally)
 		{
 			return ForEach<TSource, TLocal> (source, ParallelOptions.Default, localInit, body, localFinally);
 		}
-		
+
 		public static ParallelLoopResult ForEach<TSource, TLocal> (Partitioner<TSource> source, Func<TLocal> localInit,
 		                                                           Func<TSource, ParallelLoopState, TLocal, TLocal> body,
 		                                                           Action<TLocal> localFinally)
 		{
 			return ForEach<TSource, TLocal> (source, ParallelOptions.Default, localInit, body, localFinally);
 		}
-		
+
 		public static ParallelLoopResult ForEach<TSource, TLocal> (IEnumerable<TSource> source, ParallelOptions parallelOptions,
 		                                                           Func<TLocal> localInit,
 		                                                           Func<TSource, ParallelLoopState, TLocal, TLocal> body,
 		                                                           Action<TLocal> localFinally)
 		{
+			if (source == null)
+				throw new ArgumentNullException ("source");
+
 			return ForEach<TSource, TLocal> (Partitioner.Create (source), parallelOptions, localInit, body, localFinally);
 		}
-		
+
 		public static ParallelLoopResult ForEach<TSource, TLocal> (IEnumerable<TSource> source, ParallelOptions parallelOptions,
-		                                                           Func<TLocal> localInit, 
+		                                                           Func<TLocal> localInit,
 		                                                           Func<TSource, ParallelLoopState, long, TLocal, TLocal> body,
 		                                                           Action<TLocal> localFinally)
 		{
+			if (source == null)
+				throw new ArgumentNullException ("source");
+
 			return ForEach<TSource, TLocal> (Partitioner.Create (source), parallelOptions, localInit, body, localFinally);
 		}
-		
-		public static ParallelLoopResult ForEach<TSource, TLocal> (Partitioner<TSource> enumerable, ParallelOptions options,
-		                                                           Func<TLocal> init,
-		                                                           Func<TSource, ParallelLoopState, TLocal, TLocal> action,
-		                                                           Action<TLocal> destruct)
+
+		public static ParallelLoopResult ForEach<TSource, TLocal> (Partitioner<TSource> source, ParallelOptions parallelOptions,
+		                                                           Func<TLocal> localInit,
+		                                                           Func<TSource, ParallelLoopState, TLocal, TLocal> body,
+		                                                           Action<TLocal> localFinally)
 		{
-			return ForEach<TSource, TLocal> (enumerable.GetPartitions, options, init, action, destruct);
+			if (source == null)
+				throw new ArgumentNullException ("source");
+			if (body == null)
+				throw new ArgumentNullException ("body");
+
+			return ForEach<TSource, TLocal> (source.GetPartitions, parallelOptions, localInit, body, localFinally);
 		}
-			
-		public static ParallelLoopResult ForEach<TSource, TLocal> (OrderablePartitioner<TSource> enumerable, ParallelOptions options,
-		                                                           Func<TLocal> init,
-		                                                           Func<TSource, ParallelLoopState, long, TLocal, TLocal> action,
-		                                                           Action<TLocal> destruct)
+
+		public static ParallelLoopResult ForEach<TSource, TLocal> (OrderablePartitioner<TSource> source, ParallelOptions parallelOptions,
+		                                                           Func<TLocal> localInit,
+		                                                           Func<TSource, ParallelLoopState, long, TLocal, TLocal> body,
+		                                                           Action<TLocal> localFinally)
 		{
-			return ForEach<KeyValuePair<long, TSource>, TLocal> (enumerable.GetOrderablePartitions, options,
-			                                                    init, (e, s, l) => action (e.Value, s, e.Key, l), destruct);
+			if (source == null)
+				throw new ArgumentNullException ("source");
+			if (body == null)
+				throw new ArgumentNullException ("body");
+
+			return ForEach<KeyValuePair<long, TSource>, TLocal> (source.GetOrderablePartitions,
+			                                                     parallelOptions,
+			                                                     localInit,
+			                                                     (e, s, l) => body (e.Value, s, e.Key, l),
+			                                                     localFinally);
 		}
 		#endregion
 
@@ -442,42 +641,42 @@ namespace System.Threading.Tasks
 		{
 			if (actions == null)
 				throw new ArgumentNullException ("actions");
-			
+
 			Invoke (actions, (Action a) => Task.Factory.StartNew (a));
 		}
-		
+
 		public static void Invoke (ParallelOptions parallelOptions, params Action[] actions)
 		{
 			if (parallelOptions == null)
 				throw new ArgumentNullException ("parallelOptions");
 			if (actions == null)
 				throw new ArgumentNullException ("actions");
-			
+
 			Invoke (actions, (Action a) => Task.Factory.StartNew (a, parallelOptions.CancellationToken, TaskCreationOptions.None, parallelOptions.TaskScheduler));
 		}
-		
+
 		static void Invoke (Action[] actions, Func<Action, Task> taskCreator)
 		{
 			if (actions.Length == 0)
 				throw new ArgumentException ("actions is empty");
-			
+
 			// Execute it directly
 			if (actions.Length == 1 && actions[0] != null)
 				actions[0] ();
-			
+
 			bool shouldThrow = false;
 			Task[] ts = Array.ConvertAll (actions, delegate (Action a) {
 				if (a == null) {
 					shouldThrow = true;
 					return null;
 				}
-				
+
 				return taskCreator (a);
 			});
-			
+
 			if (shouldThrow)
 				throw new ArgumentException ("One action in actions is null", "actions");
-			
+
 			try {
 				Task.WaitAll (ts);
 			} catch {
@@ -491,22 +690,22 @@ namespace System.Threading.Tasks
 		{
 			return SpawnBestNumber (action, -1, callback);
 		}
-		
+
 		internal static Task[] SpawnBestNumber (Action action, int dop, Action callback)
 		{
 			return SpawnBestNumber (action, dop, false, callback);
 		}
-		
+
 		internal static Task[] SpawnBestNumber (Action action, int dop, bool wait, Action callback)
 		{
 			// Get the optimum amount of worker to create
 			int num = dop == -1 ? (wait ? GetBestWorkerNumber () + 1 : GetBestWorkerNumber ()) : dop;
-			
+
 			// Initialize worker
 			CountdownEvent evt = new CountdownEvent (num);
 			Task[] tasks = new Task [num];
 			for (int i = 0; i < num; i++) {
-				tasks [i] = Task.Factory.StartNew (() => { 
+				tasks [i] = Task.Factory.StartNew (() => {
 					action ();
 					evt.Signal ();
 					if (callback != null && evt.IsSet)
@@ -514,14 +713,14 @@ namespace System.Threading.Tasks
 				});
 			}
 
-			// If explicitely told, wait for all workers to complete 
+			// If explicitely told, wait for all workers to complete
 			// and thus let main thread participate in the processing
 			if (wait)
 				Task.WaitAll (tasks);
-			
+
 			return tasks;
 		}
-		#endregion
+#endregion
 	}
 }
 #endif
diff --git a/mcs/class/corlib/System.Threading.Tasks/ParallelLoopState.cs b/mcs/class/corlib/System.Threading.Tasks/ParallelLoopState.cs
index 32c65ed..e5606d5 100644
--- a/mcs/class/corlib/System.Threading.Tasks/ParallelLoopState.cs
+++ b/mcs/class/corlib/System.Threading.Tasks/ParallelLoopState.cs
@@ -28,12 +28,13 @@ using System.Threading;
 
 namespace System.Threading.Tasks
 {
+	[System.Diagnostics.DebuggerDisplayAttribute ("ShouldExitCurrentIteration = {ShouldExitCurrentIteration}")]
 	public class ParallelLoopState
 	{
 		internal class ExternalInfos
 		{
-			public AtomicBoolean IsStopped = new AtomicBoolean ();
-			public AtomicBoolean IsBroken = new AtomicBoolean ();
+			public bool IsStopped;
+			public AtomicBooleanValue IsBroken = new AtomicBooleanValue ();
 			public volatile bool IsExceptional;
 			public long? LowestBreakIteration;
 		}
@@ -47,7 +48,7 @@ namespace System.Threading.Tasks
 		
 		public bool IsStopped {
 			get {
-				return extInfos.IsStopped.Value;
+				return extInfos.IsStopped;
 			}
 		}
 		
@@ -76,6 +77,9 @@ namespace System.Threading.Tasks
 		
 		public void Break ()
 		{
+			if (extInfos.IsStopped)
+				throw new InvalidOperationException ("The Stop method was previously called. Break and Stop may not be used in combination by iterations of the same loop.");
+
 			bool result = extInfos.IsBroken.Exchange (true);
 			if (!result)
 				extInfos.LowestBreakIteration = CurrentIteration;
@@ -83,7 +87,9 @@ namespace System.Threading.Tasks
 		
 		public void Stop ()
 		{
-			extInfos.IsStopped.Exchange (true);
+			if (extInfos.IsBroken.Value)
+				throw new InvalidOperationException ("The Break method was previously called. Break and Stop may not be used in combination by iterations of the same loop.");
+			extInfos.IsStopped = true;
 		}
 	}
 	
diff --git a/mcs/class/corlib/System.Threading.Tasks/Scheduler.cs b/mcs/class/corlib/System.Threading.Tasks/Scheduler.cs
index bb7be9d..b136d12 100644
--- a/mcs/class/corlib/System.Threading.Tasks/Scheduler.cs
+++ b/mcs/class/corlib/System.Threading.Tasks/Scheduler.cs
@@ -22,7 +22,7 @@
 //
 //
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
 using System;
 using System.Collections.Concurrent;
 
@@ -30,23 +30,23 @@ namespace System.Threading.Tasks
 {
 	internal class Scheduler: TaskScheduler, IScheduler
 	{
-		IProducerConsumerCollection<Task> workQueue;
-		ThreadWorker[]        workers;
-		EventWaitHandle       pulseHandle = new AutoResetEvent (false);
+		readonly IProducerConsumerCollection<Task> workQueue;
+		readonly ThreadWorker[]        workers;
+		readonly ManualResetEvent      pulseHandle = new ManualResetEvent (false);
 
 		public Scheduler ()
-			: this (Environment.ProcessorCount, 0, ThreadPriority.Normal)
+			: this (Environment.ProcessorCount, ThreadPriority.Normal)
 		{
 			
 		}
 		
-		public Scheduler (int maxWorker, int maxStackSize, ThreadPriority priority)
+		public Scheduler (int maxWorker, ThreadPriority priority)
 		{
 			workQueue = new ConcurrentQueue<Task> ();
 			workers = new ThreadWorker [maxWorker];
 			
 			for (int i = 0; i < maxWorker; i++) {
-				workers [i] = new ThreadWorker (this, workers, workQueue, maxStackSize, priority, pulseHandle);
+				workers [i] = new ThreadWorker (this, workers, i, workQueue, priority, pulseHandle);
 				workers [i].Pulse ();
 			}
 		}
@@ -58,40 +58,45 @@ namespace System.Threading.Tasks
 			// Wake up some worker if they were asleep
 			PulseAll ();
 		}
-		
+
 		public void ParticipateUntil (Task task)
 		{
-			if (AreTasksFinished (task))
+			if (task.IsCompleted)
+				return;
+
+			ManualResetEventSlim evt = new ManualResetEventSlim (false);
+			task.ContinueWith (_ => evt.Set (), TaskContinuationOptions.ExecuteSynchronously);
+			if (evt.IsSet)
 				return;
 			
-			ParticipateUntil (delegate {
-				return AreTasksFinished (task);
-			});
+			ParticipateUntilInternal (task, evt, -1);
 		}
 		
-		public bool ParticipateUntil (Task task, Func<bool> predicate)
+		public bool ParticipateUntil (Task task, ManualResetEventSlim evt, int millisecondsTimeout)
 		{
-			if (AreTasksFinished (task))
+			if (task.IsCompleted)
 				return false;
+
+			bool isFromPredicate = true;
+			task.ContinueWith (_ => { isFromPredicate = false; evt.Set (); }, TaskContinuationOptions.ExecuteSynchronously);
 			
-			bool isFromPredicate = false;
-			
-			ParticipateUntil (delegate {
-				if (predicate ()) {
-					isFromPredicate = true;
-					return true;
-				}
-				return AreTasksFinished (task);	
-			});
-				
+			ParticipateUntilInternal (task, evt, millisecondsTimeout);
+
 			return isFromPredicate;
 		}
 		
 		// Called with Task.WaitAll(someTasks) or Task.WaitAny(someTasks) so that we can remove ourselves
 		// also when our wait condition is ok
-		public void ParticipateUntil (Func<bool> predicate)
-		{	
-			ThreadWorker.WorkerMethod (predicate, workQueue, workers);
+		public void ParticipateUntilInternal (Task self, ManualResetEventSlim evt, int millisecondsTimeout)
+		{
+			if (millisecondsTimeout == -1)
+				millisecondsTimeout = int.MaxValue;
+			ThreadWorker.WorkerMethod (self, evt, millisecondsTimeout, workQueue, workers, pulseHandle);
+		}
+
+		static bool TaskCompletedPredicate (Task self)
+		{
+			return self.IsCompleted;
 		}
 		
 		public void PulseAll ()
@@ -101,16 +106,9 @@ namespace System.Threading.Tasks
 		
 		public void Dispose ()
 		{
-			foreach (ThreadWorker w in workers) {
+			foreach (ThreadWorker w in workers)
 				w.Dispose ();
-			}
-		}
-		
-		bool AreTasksFinished (Task parent)
-		{
-			return parent.IsCompleted;
 		}
-
 		#region Scheduler dummy stubs
 		protected override System.Collections.Generic.IEnumerable<Task> GetScheduledTasks ()
 		{
@@ -129,7 +127,8 @@ namespace System.Threading.Tasks
 
 		protected override bool TryExecuteTaskInline (Task task, bool taskWasPreviouslyQueued)
 		{
-			throw new System.NotImplementedException();
+			task.Execute (null);
+			return true;
 		}
 		
 		public override int MaximumConcurrencyLevel {
diff --git a/mcs/class/corlib/System.Threading.Tasks/SchedulerProxy.cs b/mcs/class/corlib/System.Threading.Tasks/SchedulerProxy.cs
index 8688d9d..afe7dc6 100644
--- a/mcs/class/corlib/System.Threading.Tasks/SchedulerProxy.cs
+++ b/mcs/class/corlib/System.Threading.Tasks/SchedulerProxy.cs
@@ -24,7 +24,7 @@
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
 using System;
 
 namespace System.Threading.Tasks
@@ -47,33 +47,27 @@ namespace System.Threading.Tasks
 		
 		public void ParticipateUntil (Task task)
 		{
-			ParticipateUntil (() => task.IsCompleted);
+			ManualResetEventSlim evt = new ManualResetEventSlim (false);
+			task.ContinueWith (_ => evt.Set (), TaskContinuationOptions.ExecuteSynchronously);
+
+			ParticipateUntil (evt, -1);
 		}
 		
-		public bool ParticipateUntil (Task task, Func<bool> predicate)
+		public bool ParticipateUntil (Task task, ManualResetEventSlim evt, int millisecondsTimeout)
 		{
-			bool fromPredicate = false;
-			
-			ParticipateUntil (() => {
-				if (predicate ()) {
-					fromPredicate = true;
-					return true;
-				}
-				
-				return task.IsCompleted;
-			});
-			
+			bool fromPredicate = true;
+			task.ContinueWith (_ => { fromPredicate = false; evt.Set (); }, TaskContinuationOptions.ExecuteSynchronously);
+
+			ParticipateUntil (evt, millisecondsTimeout);
+
 			return fromPredicate;
 		}
-		
-		public void ParticipateUntil (Func<bool> predicate)
+
+		void ParticipateUntil (ManualResetEventSlim evt, int millisecondsTimeout)
 		{
-			SpinWait sw = new SpinWait ();
-			
-			while (!predicate ())
-				sw.SpinOnce ();
+			evt.Wait (millisecondsTimeout);
 		}
-		
+
 		public void PulseAll ()
 		{
 			
diff --git a/mcs/class/corlib/System.Threading.Tasks/Task.cs b/mcs/class/corlib/System.Threading.Tasks/Task.cs
index 609ad42..68f8e17 100644
--- a/mcs/class/corlib/System.Threading.Tasks/Task.cs
+++ b/mcs/class/corlib/System.Threading.Tasks/Task.cs
@@ -22,7 +22,7 @@
 //
 //
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
 
 using System;
 using System.Threading;
@@ -30,6 +30,8 @@ using System.Collections.Concurrent;
 
 namespace System.Threading.Tasks
 {
+	[System.Diagnostics.DebuggerDisplay ("Id = {Id}, Status = {Status}, Method = {DebuggerDisplayMethodDescription}")]
+	[System.Diagnostics.DebuggerTypeProxy ("System.Threading.Tasks.SystemThreadingTasks_TaskDebugView")]
 	public class Task : IDisposable, IAsyncResult
 	{
 		// With this attribute each thread has its own value so that it's correct for our Schedule code
@@ -51,35 +53,38 @@ namespace System.Threading.Tasks
 		
 		IScheduler          scheduler;
 		TaskScheduler       taskScheduler;
+
+		ManualResetEventSlim schedWait = new ManualResetEventSlim (false);
 		
 		volatile AggregateException  exception;
 		volatile bool                exceptionObserved;
-		volatile TaskStatus          status;
+
+		TaskStatus          status;
 		
 		Action<object> action;
 		object         state;
 
 		ConcurrentQueue<EventHandler> completed = new ConcurrentQueue<EventHandler> ();
 
-		CancellationToken token;			
-		
+		CancellationToken token;
+
 		public Task (Action action) : this (action, TaskCreationOptions.None)
 		{
 			
 		}
 		
-		public Task (Action action, TaskCreationOptions options) : this (action, CancellationToken.None, options)
+		public Task (Action action, TaskCreationOptions creationOptions) : this (action, CancellationToken.None, creationOptions)
 		{
 			
 		}
 		
-		public Task (Action action, CancellationToken token) : this (action, token, TaskCreationOptions.None)
+		public Task (Action action, CancellationToken cancellationToken) : this (action, cancellationToken, TaskCreationOptions.None)
 		{
 			
 		}
 		
-		public Task (Action action, CancellationToken token, TaskCreationOptions options)
-			: this ((o) => { if (action != null) action (); }, null, token, options)
+		public Task (Action action, CancellationToken cancellationToken, TaskCreationOptions creationOptions)
+			: this ((o) => { if (action != null) action (); }, null, cancellationToken, creationOptions)
 		{
 		}
 		
@@ -87,24 +92,24 @@ namespace System.Threading.Tasks
 		{	
 		}
 		
-		public Task (Action<object> action, object state, TaskCreationOptions options)
-			: this (action, state, CancellationToken.None, options)
+		public Task (Action<object> action, object state, TaskCreationOptions creationOptions)
+			: this (action, state, CancellationToken.None, creationOptions)
 		{
 		}
 		
-		public Task (Action<object> action, object state, CancellationToken token)
-			: this (action, state, token, TaskCreationOptions.None)
+		public Task (Action<object> action, object state, CancellationToken cancellationToken)
+			: this (action, state, cancellationToken, TaskCreationOptions.None)
 		{	
 		}
 		
-		public Task (Action<object> action, object state, CancellationToken token, TaskCreationOptions options)
+		public Task (Action<object> action, object state, CancellationToken cancellationToken, TaskCreationOptions creationOptions)
 		{
-			this.taskCreationOptions = options;
+			this.taskCreationOptions = creationOptions;
 			this.action              = action == null ? EmptyFunc : action;
 			this.state               = state;
 			this.taskId              = Interlocked.Increment (ref id);
 			this.status              = TaskStatus.Created;
-			this.token               = token;
+			this.token               = cancellationToken;
 
 			// Process taskCreationOptions
 			if (CheckTaskOptions (taskCreationOptions, TaskCreationOptions.AttachedToParent)) {
@@ -128,24 +133,34 @@ namespace System.Threading.Tasks
 		static void EmptyFunc (object o)
 		{
 		}
-		
+
 		#region Start
 		public void Start ()
 		{
 			Start (TaskScheduler.Current);
 		}
 		
-		public void Start (TaskScheduler tscheduler)
+		public void Start (TaskScheduler scheduler)
 		{
-			this.taskScheduler = tscheduler;
-			Start (ProxifyScheduler (tscheduler));
+			Start (ProxifyScheduler (scheduler));
 		}
 		
 		void Start (IScheduler scheduler)
 		{
+			SetupScheduler (scheduler);
+			Schedule ();
+		}
+
+		internal void SetupScheduler (TaskScheduler tscheduler)
+		{
+			SetupScheduler (ProxifyScheduler (tscheduler));
+		}
+
+		internal void SetupScheduler (IScheduler scheduler)
+		{
 			this.scheduler = scheduler;
 			status = TaskStatus.WaitingForActivation;
-			Schedule ();
+			schedWait.Set ();
 		}
 		
 		IScheduler ProxifyScheduler (TaskScheduler tscheduler)
@@ -159,74 +174,83 @@ namespace System.Threading.Tasks
 			RunSynchronously (TaskScheduler.Current);
 		}
 		
-		public void RunSynchronously (TaskScheduler tscheduler) 
+		public void RunSynchronously (TaskScheduler scheduler)
 		{
-			// Adopt this scheme for the moment
-			ThreadStart ();
+			if (scheduler.TryExecuteTask (this))
+				return;
+
+			Start (scheduler);
+			Wait ();
 		}
 		#endregion
 		
 		#region ContinueWith
-		public Task ContinueWith (Action<Task> a)
+		public Task ContinueWith (Action<Task> continuationAction)
 		{
-			return ContinueWith (a, TaskContinuationOptions.None);
+			return ContinueWith (continuationAction, TaskContinuationOptions.None);
 		}
 		
-		public Task ContinueWith (Action<Task> a, TaskContinuationOptions kind)
+		public Task ContinueWith (Action<Task> continuationAction, TaskContinuationOptions continuationOptions)
 		{
-			return ContinueWith (a, CancellationToken.None, kind, TaskScheduler.Current);
+			return ContinueWith (continuationAction, CancellationToken.None, continuationOptions, TaskScheduler.Current);
 		}
 		
-		public Task ContinueWith (Action<Task> a, CancellationToken token)
+		public Task ContinueWith (Action<Task> continuationAction, CancellationToken cancellationToken)
 		{
-			return ContinueWith (a, token, TaskContinuationOptions.None, TaskScheduler.Current);
+			return ContinueWith (continuationAction, cancellationToken, TaskContinuationOptions.None, TaskScheduler.Current);
 		}
 		
-		public Task ContinueWith (Action<Task> a, TaskScheduler scheduler)
+		public Task ContinueWith (Action<Task> continuationAction, TaskScheduler scheduler)
 		{
-			return ContinueWith (a, CancellationToken.None, TaskContinuationOptions.None, scheduler);
+			return ContinueWith (continuationAction, CancellationToken.None, TaskContinuationOptions.None, scheduler);
 		}
 		
-		public Task ContinueWith (Action<Task> a, CancellationToken token, TaskContinuationOptions kind, TaskScheduler scheduler)
+		public Task ContinueWith (Action<Task> continuationAction, CancellationToken cancellationToken, TaskContinuationOptions continuationOptions, TaskScheduler scheduler)
 		{
-			Task continuation = new Task ((o) => a ((Task)o), this, token, GetCreationOptions (kind));
-			ContinueWithCore (continuation, kind, scheduler);
+			Task continuation = new Task ((o) => continuationAction ((Task)o), this, cancellationToken, GetCreationOptions (continuationOptions));
+			ContinueWithCore (continuation, continuationOptions, scheduler);
+
 			return continuation;
 		}
 		
-		public Task<TResult> ContinueWith<TResult> (Func<Task, TResult> a)
+		public Task<TResult> ContinueWith<TResult> (Func<Task, TResult> continuationFunction)
 		{
-			return ContinueWith<TResult> (a, TaskContinuationOptions.None);
+			return ContinueWith<TResult> (continuationFunction, TaskContinuationOptions.None);
 		}
 		
-		public Task<TResult> ContinueWith<TResult> (Func<Task, TResult> a, TaskContinuationOptions options)
+		public Task<TResult> ContinueWith<TResult> (Func<Task, TResult> continuationFunction, TaskContinuationOptions continuationOptions)
 		{
-			return ContinueWith<TResult> (a, CancellationToken.None, options, TaskScheduler.Current);
+			return ContinueWith<TResult> (continuationFunction, CancellationToken.None, continuationOptions, TaskScheduler.Current);
 		}
 		
-		public Task<TResult> ContinueWith<TResult> (Func<Task, TResult> a, CancellationToken token)
+		public Task<TResult> ContinueWith<TResult> (Func<Task, TResult> continuationFunction, CancellationToken cancellationToken)
 		{
-			return ContinueWith<TResult> (a, token, TaskContinuationOptions.None, TaskScheduler.Current);
+			return ContinueWith<TResult> (continuationFunction, cancellationToken, TaskContinuationOptions.None, TaskScheduler.Current);
 		}
 		
-		public Task<TResult> ContinueWith<TResult> (Func<Task, TResult> a, TaskScheduler scheduler)
+		public Task<TResult> ContinueWith<TResult> (Func<Task, TResult> continuationFunction, TaskScheduler scheduler)
 		{
-			return ContinueWith<TResult> (a, CancellationToken.None, TaskContinuationOptions.None, scheduler);
+			return ContinueWith<TResult> (continuationFunction, CancellationToken.None, TaskContinuationOptions.None, scheduler);
 		}
 		
-		public Task<TResult> ContinueWith<TResult> (Func<Task, TResult> a, CancellationToken token,
-		                                            TaskContinuationOptions kind, TaskScheduler scheduler)
+		public Task<TResult> ContinueWith<TResult> (Func<Task, TResult> continuationFunction, CancellationToken cancellationToken,
+		                                            TaskContinuationOptions continuationOptions, TaskScheduler scheduler)
 		{
-			Task<TResult> t = new Task<TResult> ((o) => a ((Task)o), this, token, GetCreationOptions (kind));
+			if (continuationFunction == null)
+				throw new ArgumentNullException ("continuationFunction");
+			if (scheduler == null)
+				throw new ArgumentNullException ("scheduler");
+
+			Task<TResult> t = new Task<TResult> ((o) => continuationFunction ((Task)o), this, cancellationToken, GetCreationOptions (continuationOptions));
 			
-			ContinueWithCore (t, kind, scheduler);
+			ContinueWithCore (t, continuationOptions, scheduler);
 			
 			return t;
 		}
 		
-		internal void ContinueWithCore (Task continuation, TaskContinuationOptions kind, TaskScheduler scheduler)
+		internal void ContinueWithCore (Task continuation, TaskContinuationOptions continuationOptions, TaskScheduler scheduler)
 		{
-			ContinueWithCore (continuation, kind, scheduler, () => true);
+			ContinueWithCore (continuation, continuationOptions, scheduler, () => true);
 		}
 		
 		internal void ContinueWithCore (Task continuation, TaskContinuationOptions kind,
@@ -235,6 +259,8 @@ namespace System.Threading.Tasks
 			// Already set the scheduler so that user can call Wait and that sort of stuff
 			continuation.taskScheduler = scheduler;
 			continuation.scheduler = ProxifyScheduler (scheduler);
+			continuation.schedWait.Set ();
+			continuation.status = TaskStatus.WaitingForActivation;
 			
 			AtomicBoolean launched = new AtomicBoolean ();
 			EventHandler action = delegate (object sender, EventArgs e) {
@@ -304,7 +330,7 @@ namespace System.Threading.Tasks
 		void CheckAndSchedule (Task continuation, TaskContinuationOptions options, TaskScheduler scheduler, bool fromCaller)
 		{
 			if (!fromCaller 
-			    && (options == TaskContinuationOptions.None || (options & TaskContinuationOptions.ExecuteSynchronously) > 0))
+			    && (options & TaskContinuationOptions.ExecuteSynchronously) > 0)
 				continuation.ThreadStart ();
 			else
 				continuation.Start (scheduler);
@@ -342,7 +368,7 @@ namespace System.Threading.Tasks
 		}
 		
 		void ThreadStart ()
-		{			
+		{
 			current = this;
 			TaskScheduler.Current = taskScheduler;
 			
@@ -422,8 +448,6 @@ namespace System.Threading.Tasks
 			if (CheckTaskOptions (taskCreationOptions, TaskCreationOptions.AttachedToParent) && parent != null){
 				parent.ChildCompleted ();
 			}
-			
-			Dispose ();
 		}
 
 		void ProcessCompleteDelegates ()
@@ -443,56 +467,69 @@ namespace System.Threading.Tasks
 
 		internal void HandleGenericException (Exception e)
 		{
-			exception = new AggregateException (e);
+			HandleGenericException (new AggregateException (e));
+		}
+
+		internal void HandleGenericException (AggregateException e)
+		{
+			exception = e;
 			status = TaskStatus.Faulted;
-			if (taskScheduler.FireUnobservedEvent (exception).Observed)
+			if (taskScheduler != null && taskScheduler.FireUnobservedEvent (exception).Observed)
 				exceptionObserved = true;
 		}
 		
 		public void Wait ()
 		{
 			if (scheduler == null)
-				throw new InvalidOperationException ("The Task hasn't been Started and thus can't be waited on");
+				schedWait.Wait ();
 			
-			scheduler.ParticipateUntil (this);
+			if (!IsCompleted)
+				scheduler.ParticipateUntil (this);
 			if (exception != null)
 				throw exception;
 			if (IsCanceled)
 				throw new AggregateException (new TaskCanceledException (this));
 		}
 
-		public void Wait (CancellationToken token)
+		public void Wait (CancellationToken cancellationToken)
 		{
-			Wait (null, token);
+			Wait (-1, cancellationToken);
 		}
 		
-		public bool Wait (TimeSpan ts)
+		public bool Wait (TimeSpan timeout)
 		{
-			return Wait ((int)ts.TotalMilliseconds, CancellationToken.None);
+			return Wait (CheckTimeout (timeout), CancellationToken.None);
 		}
 		
 		public bool Wait (int millisecondsTimeout)
 		{
 			return Wait (millisecondsTimeout, CancellationToken.None);
 		}
-		
-		public bool Wait (int millisecondsTimeout, CancellationToken token)
-		{
-			Watch sw = Watch.StartNew ();
-			return Wait (() => sw.ElapsedMilliseconds >= millisecondsTimeout, token);
-		}
 
-		bool Wait (Func<bool> stopFunc, CancellationToken token)
+		public bool Wait (int millisecondsTimeout, CancellationToken cancellationToken)
 		{
-			if (scheduler == null)
-				throw new InvalidOperationException ("The Task hasn't been Started and thus can't be waited on");
-			
-			bool result = scheduler.ParticipateUntil (this, delegate { 
-				if (token.IsCancellationRequested)
-					throw new OperationCanceledException ("The CancellationToken has had cancellation requested.");
-				
-				return (stopFunc != null) ? stopFunc () : false;
-			});
+			if (millisecondsTimeout < -1)
+				throw new ArgumentOutOfRangeException ("millisecondsTimeout");
+
+			if (millisecondsTimeout == -1 && token == CancellationToken.None) {
+				Wait ();
+				return true;
+			}
+
+			Watch watch = Watch.StartNew ();
+
+			if (scheduler == null) {
+				schedWait.Wait (millisecondsTimeout, cancellationToken);
+				millisecondsTimeout = ComputeTimeout (millisecondsTimeout, watch);
+			}
+
+			ManualResetEventSlim predicateEvt = new ManualResetEventSlim (false);
+			if (cancellationToken != CancellationToken.None) {
+				cancellationToken.Register (predicateEvt.Set);
+				cancellationToken.ThrowIfCancellationRequested ();
+			}
+
+			bool result = scheduler.ParticipateUntil (this, predicateEvt, millisecondsTimeout);
 
 			if (exception != null)
 				throw exception;
@@ -513,7 +550,7 @@ namespace System.Threading.Tasks
 				t.Wait ();
 		}
 
-		public static void WaitAll (Task[] tasks, CancellationToken token)
+		public static void WaitAll (Task[] tasks, CancellationToken cancellationToken)
 		{
 			if (tasks == null)
 				throw new ArgumentNullException ("tasks");
@@ -521,10 +558,10 @@ namespace System.Threading.Tasks
 				throw new ArgumentException ("tasks is empty", "tasks");
 			
 			foreach (var t in tasks)
-				t.Wait (token);
+				t.Wait (cancellationToken);
 		}
 		
-		public static bool WaitAll (Task[] tasks, TimeSpan ts)
+		public static bool WaitAll (Task[] tasks, TimeSpan timeout)
 		{
 			if (tasks == null)
 				throw new ArgumentNullException ("tasks");
@@ -533,7 +570,7 @@ namespace System.Threading.Tasks
 			
 			bool result = true;
 			foreach (var t in tasks)
-				result &= t.Wait (ts);
+				result &= t.Wait (timeout);
 			return result;
 		}
 		
@@ -550,7 +587,7 @@ namespace System.Threading.Tasks
 			return result;
 		}
 		
-		public static bool WaitAll (Task[] tasks, int millisecondsTimeout, CancellationToken token)
+		public static bool WaitAll (Task[] tasks, int millisecondsTimeout, CancellationToken cancellationToken)
 		{
 			if (tasks == null)
 				throw new ArgumentNullException ("tasks");
@@ -559,88 +596,122 @@ namespace System.Threading.Tasks
 			
 			bool result = true;
 			foreach (var t in tasks)
-				result &= t.Wait (millisecondsTimeout, token);
+				result &= t.Wait (millisecondsTimeout, cancellationToken);
 			return result;
 		}
 		
 		public static int WaitAny (params Task[] tasks)
 		{
-			return WaitAny (tasks, null, null);
+			return WaitAny (tasks, -1, CancellationToken.None);
+		}
+
+		public static int WaitAny (Task[] tasks, TimeSpan timeout)
+		{
+			return WaitAny (tasks, CheckTimeout (timeout));
 		}
 		
-		static int WaitAny (Task[] tasks, Func<bool> stopFunc, CancellationToken? token)
+		public static int WaitAny (Task[] tasks, int millisecondsTimeout)
+		{
+			if (millisecondsTimeout < -1)
+				throw new ArgumentOutOfRangeException ("millisecondsTimeout");
+
+			if (millisecondsTimeout == -1)
+				return WaitAny (tasks);
+
+			return WaitAny (tasks, millisecondsTimeout, CancellationToken.None);
+		}
+
+		public static int WaitAny (Task[] tasks, CancellationToken cancellationToken)
+		{
+			return WaitAny (tasks, -1, cancellationToken);
+		}
+
+		public static int WaitAny (Task[] tasks, int millisecondsTimeout, CancellationToken cancellationToken)
 		{
 			if (tasks == null)
 				throw new ArgumentNullException ("tasks");
 			if (tasks.Length == 0)
 				throw new ArgumentException ("tasks is empty", "tasks");
+			if (tasks.Length == 1) {
+				tasks[0].Wait (millisecondsTimeout, cancellationToken);
+				return 0;
+			}
 			
 			int numFinished = 0;
 			int indexFirstFinished = -1;
 			int index = 0;
-			
+			IScheduler sched = null;
+			Task task = null;
+			Watch watch = Watch.StartNew ();
+			ManualResetEventSlim predicateEvt = new ManualResetEventSlim (false);
+
 			foreach (Task t in tasks) {
+				int indexResult = index++;
 				t.ContinueWith (delegate {
-					int indexResult = index;
+					if (numFinished >= 1)
+						return;
 					int result = Interlocked.Increment (ref numFinished);
+
 					// Check if we are the first to have finished
 					if (result == 1)
 						indexFirstFinished = indexResult;
-				});	
-				index++;
+
+					// Stop waiting
+					predicateEvt.Set ();
+				}, TaskContinuationOptions.ExecuteSynchronously);
+
+				if (sched == null && t.scheduler != null) {
+					task = t;
+					sched = t.scheduler;
+				}
 			}
-			
+
+			// If none of task have a scheduler we are forced to wait for at least one to start
+			if (sched == null) {
+				var handles = Array.ConvertAll (tasks, t => t.schedWait.WaitHandle);
+				int shandle = -1;
+				if ((shandle = WaitHandle.WaitAny (handles, millisecondsTimeout)) == WaitHandle.WaitTimeout)
+					return -1;
+				sched = tasks[shandle].scheduler;
+				task = tasks[shandle];
+				millisecondsTimeout = ComputeTimeout (millisecondsTimeout, watch);
+			}
+
 			// One task already finished
 			if (indexFirstFinished != -1)
 				return indexFirstFinished;
-			
-			// All tasks are supposed to use the same TaskManager
-			tasks[0].scheduler.ParticipateUntil (delegate {
-				if (stopFunc != null && stopFunc ())
-					return true;
-				
-				if (token.HasValue && token.Value.IsCancellationRequested)
-					throw new OperationCanceledException ("The CancellationToken has had cancellation requested.");
-				
-				return numFinished >= 1;
-			});
-			
+
+			if (cancellationToken != CancellationToken.None) {
+				cancellationToken.Register (predicateEvt.Set);
+				cancellationToken.ThrowIfCancellationRequested ();
+			}
+
+			sched.ParticipateUntil (task, predicateEvt, millisecondsTimeout);
+
+			// Index update is still not done
+			if (indexFirstFinished == -1) {
+				SpinWait wait = new SpinWait ();
+				while (indexFirstFinished == -1)
+					wait.SpinOnce ();
+			}
+
 			return indexFirstFinished;
 		}
-		
-		public static int WaitAny (Task[] tasks, TimeSpan ts)
+
+		static int CheckTimeout (TimeSpan timeout)
 		{
-			return WaitAny (tasks, (int)ts.TotalMilliseconds);
+			try {
+				return checked ((int)timeout.TotalMilliseconds);
+			} catch (System.OverflowException) {
+				throw new ArgumentOutOfRangeException ("timeout");
+			}
 		}
-		
-		public static int WaitAny (Task[] tasks, int millisecondsTimeout)
+
+		static int ComputeTimeout (int millisecondsTimeout, Watch watch)
 		{
-			if (millisecondsTimeout < -1)
-				throw new ArgumentOutOfRangeException ("millisecondsTimeout");
-			
-			if (millisecondsTimeout == -1)
-				return WaitAny (tasks);
-			
-			Watch sw = Watch.StartNew ();
-			return WaitAny (tasks, () => sw.ElapsedMilliseconds > millisecondsTimeout, null);
+			return millisecondsTimeout == -1 ? -1 : (int)Math.Max (watch.ElapsedMilliseconds - millisecondsTimeout, 1);
 		}
 
-		public static int WaitAny (Task[] tasks, int millisecondsTimeout, CancellationToken token)
-		{			
-			if (millisecondsTimeout < -1)
-				throw new ArgumentOutOfRangeException ("millisecondsTimeout");
-			
-			if (millisecondsTimeout == -1)
-				return WaitAny (tasks);
-			
-			Watch sw = Watch.StartNew ();
-			return WaitAny (tasks, () => sw.ElapsedMilliseconds > millisecondsTimeout, token);
-		}
-		
-		public static int WaitAny (Task[] tasks, CancellationToken token)
-		{			
-			return WaitAny (tasks, null, token);
-		}
 		#endregion
 		
 		#region Dispose
@@ -649,13 +720,12 @@ namespace System.Threading.Tasks
 			Dispose (true);
 		}
 		
-		protected virtual void Dispose (bool disposeManagedRes)
+		protected virtual void Dispose (bool disposing)
 		{
 			// Set action to null so that the GC can collect the delegate and thus
 			// any big object references that the user might have captured in a anonymous method
-			if (disposeManagedRes) {
+			if (disposing) {
 				action = null;
-				completed.Clear ();
 				state = null;
 			}
 		}
@@ -743,6 +813,12 @@ namespace System.Threading.Tasks
 				return taskId;
 			}
 		}
+
+		internal Task Parent {
+			get {
+				return parent;
+			}
+		}
 		#endregion
 	}
 }
diff --git a/mcs/class/corlib/System.Threading.Tasks/TaskCanceledException.cs b/mcs/class/corlib/System.Threading.Tasks/TaskCanceledException.cs
index 80c2c40..1fc5d1a 100644
--- a/mcs/class/corlib/System.Threading.Tasks/TaskCanceledException.cs
+++ b/mcs/class/corlib/System.Threading.Tasks/TaskCanceledException.cs
@@ -22,7 +22,7 @@
 //
 //
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
 using System;
 using System.Runtime.Serialization;
 
@@ -41,7 +41,7 @@ namespace System.Threading.Tasks
 		{
 		}
 		
-		public TaskCanceledException (string message, Exception inner): base (message, inner)
+		public TaskCanceledException (string message, Exception innerException): base (message, innerException)
 		{
 		}
 		
diff --git a/mcs/class/corlib/System.Threading.Tasks/TaskCompletionSource.cs b/mcs/class/corlib/System.Threading.Tasks/TaskCompletionSource.cs
index 2eba7e8..ecb0bc5 100644
--- a/mcs/class/corlib/System.Threading.Tasks/TaskCompletionSource.cs
+++ b/mcs/class/corlib/System.Threading.Tasks/TaskCompletionSource.cs
@@ -37,43 +37,47 @@ namespace System.Threading.Tasks
 		public TaskCompletionSource ()
 		{
 			source = new Task<TResult> (null);
+			source.SetupScheduler (TaskScheduler.Current);
 		}
 		
 		public TaskCompletionSource (object state)
 		{
 			source = new Task<TResult> (null, state);
+			source.SetupScheduler (TaskScheduler.Current);
 		}
 		
-		public TaskCompletionSource (TaskCreationOptions options)
+		public TaskCompletionSource (TaskCreationOptions creationOptions)
 		{
-			source = new Task<TResult> (null, options);
+			source = new Task<TResult> (null, creationOptions);
+			source.SetupScheduler (TaskScheduler.Current);
 		}
 		
-		public TaskCompletionSource (object state, TaskCreationOptions options)
+		public TaskCompletionSource (object state, TaskCreationOptions creationOptions)
 		{
-			source = new Task<TResult> (null, state, options);
+			source = new Task<TResult> (null, state, creationOptions);
+			source.SetupScheduler (TaskScheduler.Current);
 		}
 		
 		public void SetCanceled ()
 		{
-			if (!ApplyOperation (TaskStatus.Canceled, source.CancelReal))
+			if (!ApplyOperation (source.CancelReal))
 				ThrowInvalidException ();
 		}
 		
-		public void SetException (Exception e)
+		public void SetException (Exception exception)
 		{
-			SetException (new Exception[] { e });
+			SetException (new Exception[] { exception });
 		}
 		
-		public void SetException (IEnumerable<Exception> e)
+		public void SetException (IEnumerable<Exception> exceptions)
 		{
-			if (!ApplyOperation (TaskStatus.Faulted, () => source.Exception = new AggregateException (e)))
+			if (!ApplyOperation (() => source.HandleGenericException (new AggregateException (exceptions))))
 				ThrowInvalidException ();
 		}
 		
 		public void SetResult (TResult result)
 		{
-			if (!ApplyOperation (TaskStatus.RanToCompletion, () => source.Result = result))
+			if (!ApplyOperation (() => source.Result = result))
 				ThrowInvalidException ();
 		}
 				
@@ -84,33 +88,35 @@ namespace System.Threading.Tasks
 		
 		public bool TrySetCanceled ()
 		{
-			return ApplyOperation (TaskStatus.Canceled, source.CancelReal);
+			return ApplyOperation (source.CancelReal);
 		}
 		
-		public bool TrySetException (Exception e)
+		public bool TrySetException (Exception exception)
 		{
-			return TrySetException (new Exception[] { e });
+			return TrySetException (new Exception[] { exception });
 		}
 		
-		
-		public bool TrySetException (IEnumerable<Exception> e)
+		public bool TrySetException (IEnumerable<Exception> exceptions)
 		{
-			return ApplyOperation (TaskStatus.Faulted, () => source.Exception = new AggregateException (e));
+			return ApplyOperation (() => source.HandleGenericException (new AggregateException (exceptions)));
 		}
 		
 		public bool TrySetResult (TResult result)
 		{
-			return ApplyOperation (TaskStatus.RanToCompletion, () => source.Result = result);
+			return ApplyOperation (() => source.Result = result);
 		}
 				
-		bool ApplyOperation (TaskStatus newStatus, Action action)
+		bool ApplyOperation (Action action)
 		{
 			if (CheckInvalidState ())
 				return false;
 			
+			source.Status = TaskStatus.Running;
+
 			if (action != null)
 				action ();
-			source.Status = newStatus;
+
+			source.Finish ();
 			
 			return true;
 		}
diff --git a/mcs/class/corlib/System.Threading.Tasks/TaskContinuationOptions.cs b/mcs/class/corlib/System.Threading.Tasks/TaskContinuationOptions.cs
index b0a0d5d..0f0ea0d 100644
--- a/mcs/class/corlib/System.Threading.Tasks/TaskContinuationOptions.cs
+++ b/mcs/class/corlib/System.Threading.Tasks/TaskContinuationOptions.cs
@@ -22,7 +22,7 @@
 //
 //
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
 using System;
 
 namespace System.Threading.Tasks
diff --git a/mcs/class/corlib/System.Threading.Tasks/TaskCreationOptions.cs b/mcs/class/corlib/System.Threading.Tasks/TaskCreationOptions.cs
index aada16c..d8d9c04 100644
--- a/mcs/class/corlib/System.Threading.Tasks/TaskCreationOptions.cs
+++ b/mcs/class/corlib/System.Threading.Tasks/TaskCreationOptions.cs
@@ -22,7 +22,7 @@
 //
 //
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
 using System;
 
 namespace System.Threading.Tasks
diff --git a/mcs/class/corlib/System.Threading.Tasks/TaskFactory.cs b/mcs/class/corlib/System.Threading.Tasks/TaskFactory.cs
index edb5944..e079f1f 100644
--- a/mcs/class/corlib/System.Threading.Tasks/TaskFactory.cs
+++ b/mcs/class/corlib/System.Threading.Tasks/TaskFactory.cs
@@ -24,7 +24,8 @@
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
+
 using System;
 using System.Threading;
 
@@ -34,9 +35,9 @@ namespace System.Threading.Tasks
 	public class TaskFactory
 	{
 		TaskScheduler scheduler;
-		TaskCreationOptions options;
-		TaskContinuationOptions contOptions;
-		CancellationToken token;
+		TaskCreationOptions creationOptions;
+		TaskContinuationOptions continuationOptions;
+		CancellationToken cancellationToken;
 		
 		#region ctors
 		public TaskFactory ()
@@ -44,8 +45,8 @@ namespace System.Threading.Tasks
 		{
 		}
 
-		public TaskFactory (CancellationToken token)
-			: this (token, TaskCreationOptions.None, TaskContinuationOptions.None, TaskScheduler.Current)
+		public TaskFactory (CancellationToken cancellationToken)
+			: this (cancellationToken, TaskCreationOptions.None, TaskContinuationOptions.None, TaskScheduler.Current)
 		{	
 		}
 
@@ -54,61 +55,61 @@ namespace System.Threading.Tasks
 		{	
 		}
 		
-		public TaskFactory (TaskCreationOptions options, TaskContinuationOptions contOptions)
-			: this (CancellationToken.None, options, contOptions, TaskScheduler.Current)
+		public TaskFactory (TaskCreationOptions creationOptions, TaskContinuationOptions continuationOptions)
+			: this (CancellationToken.None, creationOptions, continuationOptions, TaskScheduler.Current)
 		{	
 		}
 		
-		public TaskFactory (CancellationToken token, TaskCreationOptions options, TaskContinuationOptions contOptions,
+		public TaskFactory (CancellationToken cancellationToken, TaskCreationOptions creationOptions, TaskContinuationOptions continuationOptions,
 		                    TaskScheduler scheduler)
 		{
-			this.token = token;
+			this.cancellationToken = cancellationToken;
 			this.scheduler = scheduler;
-			this.options = options;
-			this.contOptions = contOptions;
+			this.creationOptions = creationOptions;
+			this.continuationOptions = continuationOptions;
 		}
 		#endregion
 		
 		#region StartNew for Task
 		public Task StartNew (Action action)
 		{
-			return StartNew (action, token, options, scheduler);
+			return StartNew (action, cancellationToken, creationOptions, scheduler);
 		}
 		
-		public Task StartNew (Action action, CancellationToken token)
+		public Task StartNew (Action action, CancellationToken cancellationToken)
 		{
-			return StartNew (action, token, options, scheduler);
+			return StartNew (action, cancellationToken, creationOptions, scheduler);
 		}
 		
-		public Task StartNew (Action action, TaskCreationOptions options)
+		public Task StartNew (Action action, TaskCreationOptions creationOptions)
 		{
-			return StartNew (action, token, options, scheduler);
+			return StartNew (action, cancellationToken, creationOptions, scheduler);
 		}
 		
 		public Task StartNew (Action<object> action, object state)
 		{
-			return StartNew (action, state, token, options, scheduler);
+			return StartNew (action, state, cancellationToken, creationOptions, scheduler);
 		}
 		
-		public Task StartNew (Action<object> action, object state, CancellationToken token)
+		public Task StartNew (Action<object> action, object state, CancellationToken cancellationToken)
 		{
-			return StartNew (action, state, token, options, scheduler);
+			return StartNew (action, state, cancellationToken, creationOptions, scheduler);
 		}
 		
-		public Task StartNew (Action<object> action, object state, TaskCreationOptions options)
+		public Task StartNew (Action<object> action, object state, TaskCreationOptions creationOptions)
 		{
-			return StartNew (action, state, token, options, scheduler);
+			return StartNew (action, state, cancellationToken, creationOptions, scheduler);
 		}
 		
-		public Task StartNew (Action action, CancellationToken token, TaskCreationOptions options, TaskScheduler scheduler)
+		public Task StartNew (Action action, CancellationToken cancellationToken, TaskCreationOptions creationOptions, TaskScheduler scheduler)
 		{
-			return StartNew ((o) => action (), null, token, options, scheduler);
+			return StartNew ((o) => action (), null, cancellationToken, creationOptions, scheduler);
 		}
 		
-		public Task StartNew (Action<object> action, object state, CancellationToken token, TaskCreationOptions options,
+		public Task StartNew (Action<object> action, object state, CancellationToken cancellationToken, TaskCreationOptions creationOptions,
 		                      TaskScheduler scheduler)
 		{
-			Task t = new Task (action, state, token, options);
+			Task t = new Task (action, state, cancellationToken, creationOptions);
 			t.Start (scheduler);
 			
 			return t;
@@ -118,49 +119,49 @@ namespace System.Threading.Tasks
 		#region StartNew for Task<TResult>	
 		public Task<TResult> StartNew<TResult> (Func<TResult> function)
 		{
-			return StartNew<TResult> (function, token, options, scheduler);
+			return StartNew<TResult> (function, cancellationToken, creationOptions, scheduler);
 		}
 		
-		public Task<TResult> StartNew<TResult> (Func<TResult> function, TaskCreationOptions options)
+		public Task<TResult> StartNew<TResult> (Func<TResult> function, TaskCreationOptions creationOptions)
 		{
-			return StartNew<TResult> (function, token, options, scheduler);
+			return StartNew<TResult> (function, cancellationToken, creationOptions, scheduler);
 
 		}
 		
-		public Task<TResult> StartNew<TResult> (Func<TResult> function, CancellationToken token)
+		public Task<TResult> StartNew<TResult> (Func<TResult> function, CancellationToken cancellationToken)
 		{
-			return StartNew<TResult> (function, token, options, scheduler);
+			return StartNew<TResult> (function, cancellationToken, creationOptions, scheduler);
 		}
 		
 		public Task<TResult> StartNew<TResult> (Func<TResult> function,
-		                                        CancellationToken token,
-		                                        TaskCreationOptions options,
+		                                        CancellationToken cancellationToken,
+		                                        TaskCreationOptions creationOptions,
 		                                        TaskScheduler scheduler)
 		{
-			return StartNew<TResult> ((o) => function (), null, token, options, scheduler);
+			return StartNew<TResult> ((o) => function (), null, cancellationToken, creationOptions, scheduler);
 		}
 		
 		public Task<TResult> StartNew<TResult> (Func<object, TResult> function, object state)
 		{
-			return StartNew<TResult> (function, state, token, options, scheduler);
+			return StartNew<TResult> (function, state, cancellationToken, creationOptions, scheduler);
 		}
 		
-		public Task<TResult> StartNew<TResult> (Func<object, TResult> function, object state, CancellationToken token)
+		public Task<TResult> StartNew<TResult> (Func<object, TResult> function, object state, CancellationToken cancellationToken)
 		{
-			return StartNew<TResult> (function, state, token, options, scheduler);
+			return StartNew<TResult> (function, state, cancellationToken, creationOptions, scheduler);
 		}
 		
-		public Task<TResult> StartNew<TResult> (Func<object, TResult> function, object state, TaskCreationOptions options)
+		public Task<TResult> StartNew<TResult> (Func<object, TResult> function, object state, TaskCreationOptions creationOptions)
 		{
-			return StartNew<TResult> (function, state, token, options, scheduler);
+			return StartNew<TResult> (function, state, cancellationToken, creationOptions, scheduler);
 		}
 		
 		public Task<TResult> StartNew<TResult> (Func<object, TResult> function, object state,
-		                                        CancellationToken token,
-		                                        TaskCreationOptions options,
+		                                        CancellationToken cancellationToken,
+		                                        TaskCreationOptions creationOptions,
 		                                        TaskScheduler scheduler)
 		{
-			Task<TResult> t = new Task<TResult> (function, state, token, options);
+			Task<TResult> t = new Task<TResult> (function, state, cancellationToken, creationOptions);
 			t.Start (scheduler);
 			
 			return t;
@@ -171,27 +172,31 @@ namespace System.Threading.Tasks
 		
 		public Task ContinueWhenAny (Task[] tasks, Action<Task> continuationAction)
 		{
-			return ContinueWhenAny (tasks, continuationAction, token, contOptions, scheduler);
+			return ContinueWhenAny (tasks, continuationAction, cancellationToken, continuationOptions, scheduler);
 		}
 		
-		public Task ContinueWhenAny (Task[] tasks, Action<Task> continuationAction, CancellationToken token)
+		public Task ContinueWhenAny (Task[] tasks, Action<Task> continuationAction, CancellationToken cancellationToken)
 		{
-			return ContinueWhenAny (tasks, continuationAction, token, contOptions, scheduler);
+			return ContinueWhenAny (tasks, continuationAction, cancellationToken, continuationOptions, scheduler);
 		}
 		
 		public Task ContinueWhenAny (Task[] tasks, Action<Task> continuationAction, TaskContinuationOptions continuationOptions)
 		{
-			return ContinueWhenAny (tasks, continuationAction, token, continuationOptions, scheduler);
+			return ContinueWhenAny (tasks, continuationAction, cancellationToken, continuationOptions, scheduler);
 		}
 
-		public Task ContinueWhenAny (Task[] tasks, Action<Task> continuationAction, CancellationToken token, 
-		                             TaskContinuationOptions continuationOptions, TaskScheduler scheduler)
+		public Task ContinueWhenAny (Task[] tasks,
+		                             Action<Task> continuationAction,
+		                             CancellationToken cancellationToken,
+		                             TaskContinuationOptions continuationOptions,
+		                             TaskScheduler scheduler)
 		{
+			var ourTasks = (Task[])tasks.Clone ();
 			AtomicBoolean trigger = new AtomicBoolean ();
 			Task commonContinuation = new Task (null);
 			
-			foreach (Task t in tasks) {
-				Task cont = new Task ((o) => { continuationAction ((Task)o); }, t, token, options);
+			foreach (Task t in ourTasks) {
+				Task cont = new Task ((o) => continuationAction ((Task)o), t, cancellationToken, creationOptions);
 				t.ContinueWithCore (cont, continuationOptions, scheduler, trigger.TrySet);
 				cont.ContinueWithCore (commonContinuation, TaskContinuationOptions.None, scheduler);
 			}
@@ -199,173 +204,189 @@ namespace System.Threading.Tasks
 			return commonContinuation;
 		}
 		
-		public Task ContinueWhenAny<TAntecedentResult> (Task<TAntecedentResult>[] tasks, Action<Task<TAntecedentResult>> continuationAction)
+		public Task ContinueWhenAny<TAntecedentResult> (Task<TAntecedentResult>[] tasks,
+		                                                Action<Task<TAntecedentResult>> continuationAction)
 		{
-			return ContinueWhenAny (tasks, continuationAction, token, contOptions, scheduler);
+			return ContinueWhenAny (tasks, continuationAction, cancellationToken, continuationOptions, scheduler);
 		}
 		
-		public Task ContinueWhenAny<TAntecedentResult> (Task<TAntecedentResult>[] tasks, Action<Task<TAntecedentResult>> continuationAction,
-		                                                CancellationToken token)
+		public Task ContinueWhenAny<TAntecedentResult> (Task<TAntecedentResult>[] tasks,
+		                                                Action<Task<TAntecedentResult>> continuationAction,
+		                                                CancellationToken cancellationToken)
 		{
-			return ContinueWhenAny (tasks, continuationAction, token, contOptions, scheduler);
+			return ContinueWhenAny (tasks, continuationAction, cancellationToken, continuationOptions, scheduler);
 		}
 		
-		public Task ContinueWhenAny<TAntecedentResult> (Task<TAntecedentResult>[] tasks, Action<Task<TAntecedentResult>> continuationAction,
+		public Task ContinueWhenAny<TAntecedentResult> (Task<TAntecedentResult>[] tasks,
+		                                                Action<Task<TAntecedentResult>> continuationAction,
 		                                                TaskContinuationOptions continuationOptions)
 		{
-			return ContinueWhenAny (tasks, continuationAction, token, continuationOptions, scheduler);
+			return ContinueWhenAny (tasks, continuationAction, cancellationToken, continuationOptions, scheduler);
 		}
 
-		public Task ContinueWhenAny<TAntecedentResult> (Task<TAntecedentResult>[] tasks, Action<Task<TAntecedentResult>> continuationAction,
-		                                                CancellationToken token, TaskContinuationOptions continuationOptions,
+		public Task ContinueWhenAny<TAntecedentResult> (Task<TAntecedentResult>[] tasks,
+		                                                Action<Task<TAntecedentResult>> continuationAction,
+		                                                CancellationToken cancellationToken,
+		                                                TaskContinuationOptions continuationOptions,
 		                                                TaskScheduler scheduler)
 		{
-			return ContinueWhenAny ((Task[]) tasks, (o) => continuationAction ((Task<TAntecedentResult>)o),
-			                        token, continuationOptions, scheduler);
+			return ContinueWhenAny ((Task[]) tasks,
+			                        (o) => continuationAction ((Task<TAntecedentResult>)o),
+			                        cancellationToken, continuationOptions, scheduler);
 		}
-		
-		[MonoTODO]
-		public Task<TResult> ContinueWhenAny<TResult> (Task[] tasks, Func<Task, TResult> continuationAction)
+
+		public Task<TResult> ContinueWhenAny<TResult> (Task[] tasks, Func<Task, TResult> continuationFunction)
 		{
-			return ContinueWhenAny (tasks, continuationAction, token, contOptions, scheduler);
+			return ContinueWhenAny (tasks, continuationFunction, cancellationToken, continuationOptions, scheduler);
 		}
-		
-		[MonoTODO]
-		public Task<TResult> ContinueWhenAny<TResult> (Task[] tasks, Func<Task, TResult> continuationAction,
-		                                               CancellationToken token)
+
+		public Task<TResult> ContinueWhenAny<TResult> (Task[] tasks,
+		                                               Func<Task, TResult> continuationFunction,
+		                                               CancellationToken cancellationToken)
 		{
-			return ContinueWhenAny (tasks, continuationAction, token, contOptions, scheduler);
+			return ContinueWhenAny (tasks, continuationFunction, cancellationToken, continuationOptions, scheduler);
 		}
-		
-		[MonoTODO]
-		public Task<TResult> ContinueWhenAny<TResult> (Task[] tasks, Func<Task, TResult> continuationAction,
+
+		public Task<TResult> ContinueWhenAny<TResult> (Task[] tasks,
+		                                               Func<Task, TResult> continuationFunction,
 		                                               TaskContinuationOptions continuationOptions)
 		{
-			return ContinueWhenAny (tasks, continuationAction, token, continuationOptions, scheduler);
+			return ContinueWhenAny (tasks, continuationFunction, cancellationToken, continuationOptions, scheduler);
 		}
 
-		[MonoTODO]
-		public Task<TResult> ContinueWhenAny<TResult> (Task[] tasks, Func<Task, TResult> continuationAction,
-		                                               CancellationToken token,
+		public Task<TResult> ContinueWhenAny<TResult> (Task[] tasks,
+		                                               Func<Task, TResult> continuationFunction,
+		                                               CancellationToken cancellationToken,
 		                                               TaskContinuationOptions continuationOptions,
 		                                               TaskScheduler scheduler)
 		{
-			throw new NotImplementedException ();
+			var ourTasks = (Task[])tasks.Clone ();
+			AtomicBoolean trigger = new AtomicBoolean ();
+			TaskCompletionSource<TResult> source = new TaskCompletionSource<TResult> ();
+
+			foreach (Task t in ourTasks) {
+				Task cont = new Task ((o) => source.SetResult (continuationFunction ((Task)o)), t, cancellationToken, creationOptions);
+				t.ContinueWithCore (cont, continuationOptions, scheduler, trigger.TrySet);
+			}
+
+			return source.Task;
 		}
-		
-		[MonoTODO]
+
 		public Task<TResult> ContinueWhenAny<TAntecedentResult, TResult> (Task<TAntecedentResult>[] tasks,
-		                                                                  Func<Task<TAntecedentResult>, TResult> continuationAction)
+		                                                                  Func<Task<TAntecedentResult>, TResult> continuationFunction)
 		{
-			return ContinueWhenAny (tasks, continuationAction, token, contOptions, scheduler);
+			return ContinueWhenAny (tasks, continuationFunction, cancellationToken, continuationOptions, scheduler);
 		}
 
-		[MonoTODO]
 		public Task<TResult> ContinueWhenAny<TAntecedentResult, TResult> (Task<TAntecedentResult>[] tasks,
-		                                                                  Func<Task<TAntecedentResult>, TResult> continuationAction,
-		                                                                  CancellationToken token)
+		                                                                  Func<Task<TAntecedentResult>, TResult> continuationFunction,
+		                                                                  CancellationToken cancellationToken)
 		{
-			return ContinueWhenAny (tasks, continuationAction, token, contOptions, scheduler);
+			return ContinueWhenAny (tasks, continuationFunction, cancellationToken, continuationOptions, scheduler);
 		}
-		
-		[MonoTODO]
+
 		public Task<TResult> ContinueWhenAny<TAntecedentResult, TResult> (Task<TAntecedentResult>[] tasks,
-		                                                                  Func<Task<TAntecedentResult>, TResult> continuationAction,
+		                                                                  Func<Task<TAntecedentResult>, TResult> continuationFunction,
 		                                                                  TaskContinuationOptions continuationOptions)
 		{
-			return ContinueWhenAny (tasks, continuationAction, token, continuationOptions, scheduler);
+			return ContinueWhenAny (tasks, continuationFunction, cancellationToken, continuationOptions, scheduler);
 		}
 
-		[MonoTODO]
 		public Task<TResult> ContinueWhenAny<TAntecedentResult, TResult> (Task<TAntecedentResult>[] tasks,
-		                                                                  Func<Task<TAntecedentResult>, TResult> continuationAction,
-		                                                                  CancellationToken token,
+		                                                                  Func<Task<TAntecedentResult>, TResult> continuationFunction,
+		                                                                  CancellationToken cancellationToken,
 		                                                                  TaskContinuationOptions continuationOptions,
 		                                                                  TaskScheduler scheduler)
 		{
-			return ContinueWhenAny<TResult> ((Task[])tasks, (t) => continuationAction((Task<TAntecedentResult>)t), token, continuationOptions, scheduler);
+			return ContinueWhenAny<TResult> ((Task[])tasks,
+			                                 (t) => continuationFunction((Task<TAntecedentResult>)t),
+			                                 cancellationToken,
+			                                 continuationOptions,
+			                                 scheduler);
 		}
 		
-		public Task ContinueWhenAll (Task[] tasks, Action<Task[]> continuationFunction)
+		public Task ContinueWhenAll (Task[] tasks, Action<Task[]> continuationAction)
 		{
-			return ContinueWhenAll (tasks, continuationFunction, token, contOptions, scheduler);
+			return ContinueWhenAll (tasks, continuationAction, cancellationToken, continuationOptions, scheduler);
 		}
 		
-		public Task ContinueWhenAll (Task[] tasks, Action<Task[]> continuationFunction, CancellationToken token)
+		public Task ContinueWhenAll (Task[] tasks, Action<Task[]> continuationAction, CancellationToken cancellationToken)
 		{
-			return ContinueWhenAll (tasks, continuationFunction, token, contOptions, scheduler);
+			return ContinueWhenAll (tasks, continuationAction, cancellationToken, continuationOptions, scheduler);
 		}
 		
-		public Task ContinueWhenAll (Task[] tasks, Action<Task[]> continuationFunction,
+		public Task ContinueWhenAll (Task[] tasks, Action<Task[]> continuationAction,
 		                             TaskContinuationOptions continuationOptions)
 		{
-			return ContinueWhenAll (tasks, continuationFunction, token, continuationOptions, scheduler);
+			return ContinueWhenAll (tasks, continuationAction, cancellationToken, continuationOptions, scheduler);
 		}
 		
-		public Task ContinueWhenAll (Task[] tasks, Action<Task[]> continuationFunction, CancellationToken token,
+		public Task ContinueWhenAll (Task[] tasks, Action<Task[]> continuationAction, CancellationToken cancellationToken,
 		                             TaskContinuationOptions continuationOptions, TaskScheduler scheduler)
 		{
-			CountdownEvent evt = new CountdownEvent (tasks.Length);
-			Task cont = new Task ((o) => continuationFunction ((Task[])o), tasks, token, options);
+			var ourTasks = (Task[])tasks.Clone ();
+			CountdownEvent evt = new CountdownEvent (ourTasks.Length);
+			Task cont = new Task ((o) => continuationAction ((Task[])o), ourTasks, cancellationToken, creationOptions);
 			
-			foreach (Task t in tasks)
+			foreach (Task t in ourTasks)
 				t.ContinueWithCore (cont, continuationOptions, scheduler, evt.Signal);
 			
 			return cont;
 		}
 		
 		public Task ContinueWhenAll<TAntecedentResult> (Task<TAntecedentResult>[] tasks,
-		                                                Action<Task<TAntecedentResult>[]> continuationFunction)
+		                                                Action<Task<TAntecedentResult>[]> continuationAction)
 		{
-			return ContinueWhenAll (tasks, continuationFunction, token, contOptions, scheduler);
+			return ContinueWhenAll (tasks, continuationAction, cancellationToken, continuationOptions, scheduler);
 		}
 		
 		public Task ContinueWhenAll<TAntecedentResult> (Task<TAntecedentResult>[] tasks,
-		                                                Action<Task<TAntecedentResult>[]> continuationFunction, CancellationToken token)
+		                                                Action<Task<TAntecedentResult>[]> continuationAction, CancellationToken cancellationToken)
 		{
-			return ContinueWhenAll (tasks, continuationFunction, token, contOptions, scheduler);
+			return ContinueWhenAll (tasks, continuationAction, cancellationToken, continuationOptions, scheduler);
 		}
 		
-		public Task ContinueWhenAll<TAntecedentResult> (Task<TAntecedentResult>[] tasks, Action<Task<TAntecedentResult>[]> continuationFunction,
+		public Task ContinueWhenAll<TAntecedentResult> (Task<TAntecedentResult>[] tasks, Action<Task<TAntecedentResult>[]> continuationAction,
 		                                                TaskContinuationOptions continuationOptions)
 		{
-			return ContinueWhenAll (tasks, continuationFunction, token, continuationOptions, scheduler);
+			return ContinueWhenAll (tasks, continuationAction, cancellationToken, continuationOptions, scheduler);
 		}
 		
 		public Task ContinueWhenAll<TAntecedentResult> (Task<TAntecedentResult>[] tasks, 
-		                                                Action<Task<TAntecedentResult>[]> continuationFunction,
-		                                                CancellationToken token, TaskContinuationOptions continuationOptions,
+		                                                Action<Task<TAntecedentResult>[]> continuationAction,
+		                                                CancellationToken cancellationToken, TaskContinuationOptions continuationOptions,
 		                                                TaskScheduler scheduler)
 		{
-			return ContinueWhenAll ((Task[]) tasks, (o) => continuationFunction (tasks), token,
+			return ContinueWhenAll ((Task[]) tasks, (o) => continuationAction (tasks), cancellationToken,
 			                        continuationOptions, scheduler);
 		}
 		
 		public Task<TResult> ContinueWhenAll<TResult> (Task[] tasks, Func<Task[], TResult> continuationFunction)
 		{
-			return ContinueWhenAll<TResult> (tasks, continuationFunction, token, contOptions, scheduler);
+			return ContinueWhenAll<TResult> (tasks, continuationFunction, cancellationToken, continuationOptions, scheduler);
 		}
 		
 		public Task<TResult> ContinueWhenAll<TResult> (Task[] tasks, Func<Task[], TResult> continuationFunction,
 		                                               TaskContinuationOptions continuationOptions)
 		{
-			return ContinueWhenAll<TResult> (tasks, continuationFunction, token, continuationOptions, scheduler);
+			return ContinueWhenAll<TResult> (tasks, continuationFunction, cancellationToken, continuationOptions, scheduler);
 		}
 		
 		public Task<TResult> ContinueWhenAll<TResult> (Task[] tasks, Func<Task[], TResult> continuationFunction,
-		                                               CancellationToken token)
+		                                               CancellationToken cancellationToken)
 		{
-			return ContinueWhenAll<TResult> (tasks, continuationFunction, token, contOptions, scheduler);
+			return ContinueWhenAll<TResult> (tasks, continuationFunction, cancellationToken, continuationOptions, scheduler);
 		}
 		
 		public Task<TResult> ContinueWhenAll<TResult> (Task[] tasks, Func<Task[], TResult> continuationFunction,
-		                                               CancellationToken token,
+		                                               CancellationToken cancellationToken,
 		                                               TaskContinuationOptions continuationOptions, TaskScheduler scheduler)
 		{
-			CountdownEvent evt = new CountdownEvent (tasks.Length);
-			Task<TResult> cont = new Task<TResult> ((o) => continuationFunction ((Task[])o), tasks, token, options);
+			var ourTasks = (Task[])tasks.Clone ();
+			CountdownEvent evt = new CountdownEvent (ourTasks.Length);
+			Task<TResult> cont = new Task<TResult> ((o) => continuationFunction ((Task[])o), ourTasks, cancellationToken, creationOptions);
 			
-			foreach (Task t in tasks)
+			foreach (Task t in ourTasks)
 				t.ContinueWithCore (cont, continuationOptions, scheduler, evt.Signal);
 			
 			return cont;
@@ -374,32 +395,32 @@ namespace System.Threading.Tasks
 		public Task<TResult> ContinueWhenAll<TAntecedentResult, TResult> (Task<TAntecedentResult>[] tasks,
 		                                                                  Func<Task<TAntecedentResult>[], TResult> continuationFunction)
 		{
-			return ContinueWhenAll<TAntecedentResult, TResult> (tasks, continuationFunction, token, contOptions, scheduler);
+			return ContinueWhenAll<TAntecedentResult, TResult> (tasks, continuationFunction, cancellationToken, continuationOptions, scheduler);
 		}
 		
 		public Task<TResult> ContinueWhenAll<TAntecedentResult, TResult> (Task<TAntecedentResult>[] tasks, 
 		                                                                  Func<Task<TAntecedentResult>[], TResult> continuationFunction,
 		                                                                  TaskContinuationOptions continuationOptions)
 		{
-			return ContinueWhenAll<TAntecedentResult, TResult> (tasks, continuationFunction, token, continuationOptions, scheduler);
+			return ContinueWhenAll<TAntecedentResult, TResult> (tasks, continuationFunction, cancellationToken, continuationOptions, scheduler);
 		}
 		
 		public Task<TResult> ContinueWhenAll<TAntecedentResult, TResult> (Task<TAntecedentResult>[] tasks,
 		                                                                  Func<Task<TAntecedentResult>[], TResult> continuationFunction,
-		                                                                  CancellationToken token)
+		                                                                  CancellationToken cancellationToken)
 		{
-			return ContinueWhenAll<TAntecedentResult, TResult> (tasks, continuationFunction, token, contOptions, scheduler);
+			return ContinueWhenAll<TAntecedentResult, TResult> (tasks, continuationFunction, cancellationToken, continuationOptions, scheduler);
 		}
 		
 		public Task<TResult> ContinueWhenAll<TAntecedentResult, TResult> (Task<TAntecedentResult>[] tasks, 
 		                                                                  Func<Task<TAntecedentResult>[], TResult> continuationFunction,
-		                                                                  CancellationToken token,
+		                                                                  CancellationToken cancellationToken,
 		                                                                  TaskContinuationOptions continuationOptions,
 		                                                                  TaskScheduler scheduler)
 		{
 			return ContinueWhenAll<TResult> ((Task[]) tasks,
 			                                 (o) => continuationFunction (tasks),
-			                                 token,
+			                                 cancellationToken,
 			                                 continuationOptions, scheduler);
 		}
 
@@ -416,7 +437,7 @@ namespace System.Threading.Tasks
 		[MonoLimitation(errorMsg)]
 		public Task FromAsync (IAsyncResult asyncResult, Action<IAsyncResult> endMethod)
 		{
-			return FromAsync (asyncResult, endMethod, options);
+			return FromAsync (asyncResult, endMethod, creationOptions);
 		}
 		
 		[MonoLimitation(errorMsg)]
@@ -436,7 +457,7 @@ namespace System.Threading.Tasks
 		[MonoLimitation(errorMsg)]
 		public Task<TResult> FromAsync<TResult> (IAsyncResult asyncResult, Func<IAsyncResult, TResult> endMethod)
 		{
-			return FromAsync<TResult> (asyncResult, endMethod, options);
+			return FromAsync<TResult> (asyncResult, endMethod, creationOptions);
 		}
 		
 		[MonoLimitation(errorMsg)]
@@ -458,7 +479,7 @@ namespace System.Threading.Tasks
 		public Task FromAsync (Func<AsyncCallback, Object, IAsyncResult> beginMethod, Action<IAsyncResult> endMethod,
 		                       object state)
 		{
-			return FromAsync<object> ((a, c, o) => beginMethod (c, o), endMethod, state, options);
+			return FromAsync<object> ((a, c, o) => beginMethod (c, o), endMethod, state, creationOptions);
 		}
 		
 		[MonoLimitation(errorMsg)]
@@ -584,19 +605,19 @@ namespace System.Threading.Tasks
 		
 		public TaskContinuationOptions ContinuationOptions {
 			get {
-				return contOptions;
+				return continuationOptions;
 			}
 		}
 		
 		public TaskCreationOptions CreationOptions {
 			get {
-				return options;
+				return creationOptions;
 			}
 		}
 		
 		public CancellationToken CancellationToken {
 			get {
-				return token;
+				return cancellationToken;
 			}
 		}
 	}
@@ -604,9 +625,9 @@ namespace System.Threading.Tasks
 	public class TaskFactory<TResult>
 	{
 		TaskScheduler scheduler;
-		TaskCreationOptions options;
-		TaskContinuationOptions contOptions;
-		CancellationToken token;
+		TaskCreationOptions creationOptions;
+		TaskContinuationOptions continuationOptions;
+		CancellationToken cancellationToken;
 		
 		TaskFactory parent;
 		
@@ -621,25 +642,25 @@ namespace System.Threading.Tasks
 		{	
 		}
 		
-		public TaskFactory (CancellationToken token)
-			: this (token, TaskCreationOptions.None, TaskContinuationOptions.None, TaskScheduler.Current)
+		public TaskFactory (CancellationToken cancellationToken)
+			: this (cancellationToken, TaskCreationOptions.None, TaskContinuationOptions.None, TaskScheduler.Current)
 		{	
 		}
 		
-		public TaskFactory (TaskCreationOptions options, TaskContinuationOptions contOptions)
-			: this (CancellationToken.None, options, contOptions, TaskScheduler.Current)
+		public TaskFactory (TaskCreationOptions creationOptions, TaskContinuationOptions continuationOptions)
+			: this (CancellationToken.None, creationOptions, continuationOptions, TaskScheduler.Current)
 		{	
 		}
 		
-		public TaskFactory (CancellationToken token, TaskCreationOptions options, TaskContinuationOptions contOptions,
+		public TaskFactory (CancellationToken cancellationToken, TaskCreationOptions creationOptions, TaskContinuationOptions continuationOptions,
 		                    TaskScheduler scheduler)
 		{
-			this.token = token;
+			this.cancellationToken = cancellationToken;
 			this.scheduler = scheduler;
-			this.options = options;
-			this.contOptions = contOptions;
+			this.creationOptions = creationOptions;
+			this.continuationOptions = continuationOptions;
 			
-			this.parent = new TaskFactory (token, options, contOptions, scheduler);
+			this.parent = new TaskFactory (cancellationToken, creationOptions, continuationOptions, scheduler);
 		}
 		
 		#endregion
@@ -647,185 +668,165 @@ namespace System.Threading.Tasks
 		#region StartNew for Task<TResult>	
 		public Task<TResult> StartNew (Func<TResult> function)
 		{
-			return StartNew (function, token, options, scheduler);
+			return StartNew (function, cancellationToken, creationOptions, scheduler);
 		}
 		
-		public Task<TResult> StartNew (Func<TResult> function, TaskCreationOptions options)
+		public Task<TResult> StartNew (Func<TResult> function, TaskCreationOptions creationOptions)
 		{
-			return StartNew (function, token, options, scheduler);
+			return StartNew (function, cancellationToken, creationOptions, scheduler);
 		}
 		
-		public Task<TResult> StartNew (Func<TResult> function, CancellationToken token)
+		public Task<TResult> StartNew (Func<TResult> function, CancellationToken cancellationToken)
 		{
-			return StartNew (function, token, options, scheduler);
+			return StartNew (function, cancellationToken, creationOptions, scheduler);
 		}
 		
 		public Task<TResult> StartNew (Func<TResult> function, 
-		                               CancellationToken token,
-		                               TaskCreationOptions options,
+		                               CancellationToken cancellationToken,
+		                               TaskCreationOptions creationOptions,
 		                               TaskScheduler scheduler)
 		{
-			return StartNew ((o) => function (), null, token, options, scheduler);
+			return StartNew ((o) => function (), null, cancellationToken, creationOptions, scheduler);
 		}
 		
 		public Task<TResult> StartNew (Func<object, TResult> function, object state)
 		{
-			return StartNew (function, state, token, options, scheduler);
+			return StartNew (function, state, cancellationToken, creationOptions, scheduler);
 		}
 		
-		public Task<TResult> StartNew (Func<object, TResult> function, object state, TaskCreationOptions options)
+		public Task<TResult> StartNew (Func<object, TResult> function, object state, TaskCreationOptions creationOptions)
 		{
-			return StartNew (function, state, token, options, scheduler);
+			return StartNew (function, state, cancellationToken, creationOptions, scheduler);
 		}
 		
-		public Task<TResult> StartNew (Func<object, TResult> function, object state, CancellationToken token)
+		public Task<TResult> StartNew (Func<object, TResult> function, object state, CancellationToken cancellationToken)
 		{
-			return StartNew (function, state, token, options, scheduler);
+			return StartNew (function, state, cancellationToken, creationOptions, scheduler);
 		}
 		
 		public Task<TResult> StartNew (Func<object, TResult> function, object state, 
-		                               CancellationToken token,
-		                               TaskCreationOptions options,
+		                               CancellationToken cancellationToken,
+		                               TaskCreationOptions creationOptions,
 		                               TaskScheduler scheduler)
 		{
-			return parent.StartNew<TResult> (function, state, token, options, scheduler);
+			return parent.StartNew<TResult> (function, state, cancellationToken, creationOptions, scheduler);
 		}
 		#endregion
 		
 		#region Continue
-		
-		[MonoTODO]
+
 		public Task<TResult> ContinueWhenAny (Task[] tasks,
-		                                      Func<Task, TResult> continuationAction)
+		                                      Func<Task, TResult> continuationFunction)
 		{
-			return ContinueWhenAny (tasks, continuationAction, token, contOptions, scheduler);
+			return ContinueWhenAny (tasks, continuationFunction, cancellationToken, continuationOptions, scheduler);
 		}
-		
-		[MonoTODO]
+
 		public Task<TResult> ContinueWhenAny (Task[] tasks,
-		                                      Func<Task, TResult> continuationAction,
-		                                      CancellationToken token)
+		                                      Func<Task, TResult> continuationFunction,
+		                                      CancellationToken cancellationToken)
 		{
-			return ContinueWhenAny (tasks, continuationAction, token, contOptions, scheduler);
+			return ContinueWhenAny (tasks, continuationFunction, cancellationToken, continuationOptions, scheduler);
 		}
-		
-		[MonoTODO]
+
 		public Task<TResult> ContinueWhenAny (Task[] tasks,
-		                                      Func<Task, TResult> continuationAction,
+		                                      Func<Task, TResult> continuationFunction,
 		                                      TaskContinuationOptions continuationOptions)
 		{
-			return ContinueWhenAny (tasks, continuationAction, token, continuationOptions, scheduler);
+			return ContinueWhenAny (tasks, continuationFunction, cancellationToken, continuationOptions, scheduler);
 		}
 
-		[MonoTODO]
 		public Task<TResult> ContinueWhenAny (Task[] tasks,
-		                                      Func<Task, TResult> continuationAction,
-		                                      CancellationToken token,
+		                                      Func<Task, TResult> continuationFunction,
+		                                      CancellationToken cancellationToken,
 		                                      TaskContinuationOptions continuationOptions,
 		                                      TaskScheduler scheduler)
 		{
-			throw new NotImplementedException ();
+			return parent.ContinueWhenAny (tasks, continuationFunction, cancellationToken, continuationOptions, scheduler);
 		}
-		
-		[MonoTODO]
+
 		public Task<TResult> ContinueWhenAny<TAntecedentResult> (Task<TAntecedentResult>[] tasks,
-		                                                         Func<Task<TAntecedentResult>, TResult> continuationAction)
+		                                                         Func<Task<TAntecedentResult>, TResult> continuationFunction)
 		{
-			return ContinueWhenAny (tasks, continuationAction, token, contOptions, scheduler);
+			return ContinueWhenAny (tasks, continuationFunction, cancellationToken, continuationOptions, scheduler);
 		}
-		
-		[MonoTODO]
+
 		public Task<TResult> ContinueWhenAny<TAntecedentResult> (Task<TAntecedentResult>[] tasks,
-		                                                         Func<Task<TAntecedentResult>, TResult> continuationAction,
-		                                                         CancellationToken token)
+		                                                         Func<Task<TAntecedentResult>, TResult> continuationFunction,
+		                                                         CancellationToken cancellationToken)
 		{
-			return ContinueWhenAny (tasks, continuationAction, token, contOptions, scheduler);
+			return ContinueWhenAny (tasks, continuationFunction, cancellationToken, continuationOptions, scheduler);
 		}
-		
-		[MonoTODO]
+
 		public Task<TResult> ContinueWhenAny<TAntecedentResult> (Task<TAntecedentResult>[] tasks,
-		                                                         Func<Task<TAntecedentResult>, TResult> continuationAction,
+		                                                         Func<Task<TAntecedentResult>, TResult> continuationFunction,
 		                                                         TaskContinuationOptions continuationOptions)
 		{
-			return ContinueWhenAny (tasks, continuationAction, token, continuationOptions, scheduler);
+			return ContinueWhenAny (tasks, continuationFunction, cancellationToken, continuationOptions, scheduler);
 		}
 
-		[MonoTODO]
 		public Task<TResult> ContinueWhenAny<TAntecedentResult> (Task<TAntecedentResult>[] tasks,
-		                                                         Func<Task<TAntecedentResult>, TResult> continuationAction,
-		                                                         CancellationToken token,
+		                                                         Func<Task<TAntecedentResult>, TResult> continuationFunction,
+		                                                         CancellationToken cancellationToken,
 		                                                         TaskContinuationOptions continuationOptions,
 		                                                         TaskScheduler scheduler)
 		{
-			throw new NotImplementedException ();
+			return parent.ContinueWhenAny (tasks, continuationFunction, cancellationToken, continuationOptions, scheduler);
 		}
 		
 		public Task<TResult> ContinueWhenAll (Task[] tasks,
 		                                      Func<Task[], TResult> continuationFunction)
 		{
-			return ContinueWhenAll (tasks, continuationFunction, token, contOptions, scheduler);
+			return ContinueWhenAll (tasks, continuationFunction, cancellationToken, continuationOptions, scheduler);
 		}
 		
 		public Task<TResult> ContinueWhenAll (Task[] tasks,
 		                                      Func<Task[], TResult> continuationFunction,
 		                                      TaskContinuationOptions continuationOptions)
 		{
-			return ContinueWhenAll (tasks, continuationFunction, token, continuationOptions, scheduler);
+			return ContinueWhenAll (tasks, continuationFunction, cancellationToken, continuationOptions, scheduler);
 		}
 		
 		public Task<TResult> ContinueWhenAll (Task[] tasks,
 		                                      Func<Task[], TResult> continuationFunction,
-		                                      CancellationToken token)
+		                                      CancellationToken cancellationToken)
 		{
-			return ContinueWhenAll (tasks, continuationFunction, token, contOptions, scheduler);
+			return ContinueWhenAll (tasks, continuationFunction, cancellationToken, continuationOptions, scheduler);
 		}
 		
 		public Task<TResult> ContinueWhenAll (Task[] tasks,
 		                                      Func<Task[], TResult> continuationFunction,
-		                                      CancellationToken token,
+		                                      CancellationToken cancellationToken,
 		                                      TaskContinuationOptions continuationOptions, TaskScheduler scheduler)
 		{
-			CountdownEvent evt = new CountdownEvent (tasks.Length);
-			Task<TResult> cont = new Task<TResult> ((o) => continuationFunction (tasks), tasks, token, options);
-			
-			foreach (Task t in tasks)
-				t.ContinueWithCore (cont, continuationOptions, scheduler, evt.Signal);
-			
-			return cont;
+			return parent.ContinueWhenAll (tasks, continuationFunction, cancellationToken, continuationOptions, scheduler);
 		}
 		
 		public Task<TResult> ContinueWhenAll<TAntecedentResult> (Task<TAntecedentResult>[] tasks,
 		                                                         Func<Task<TAntecedentResult>[], TResult> continuationFunction)
 		{
-			return ContinueWhenAll (tasks, continuationFunction, token, contOptions, scheduler);
+			return ContinueWhenAll (tasks, continuationFunction, cancellationToken, continuationOptions, scheduler);
 		}
 		
 		public Task<TResult> ContinueWhenAll<TAntecedentResult> (Task<TAntecedentResult>[] tasks,
 		                                                         Func<Task<TAntecedentResult>[], TResult> continuationFunction,
 		                                                         TaskContinuationOptions continuationOptions)
 		{
-			return ContinueWhenAll (tasks, continuationFunction, token, continuationOptions, scheduler);
+			return ContinueWhenAll (tasks, continuationFunction, cancellationToken, continuationOptions, scheduler);
 		}
 		
 		public Task<TResult> ContinueWhenAll<TAntecedentResult> (Task<TAntecedentResult>[] tasks,
 		                                                         Func<Task<TAntecedentResult>[], TResult> continuationFunction,
-		                                                         CancellationToken token)
+		                                                         CancellationToken cancellationToken)
 		{
-			return ContinueWhenAll (tasks, continuationFunction, token, contOptions, scheduler);
+			return ContinueWhenAll (tasks, continuationFunction, cancellationToken, continuationOptions, scheduler);
 		}
 		
 		public Task<TResult> ContinueWhenAll<TAntecedentResult> (Task<TAntecedentResult>[] tasks,
 		                                                         Func<Task<TAntecedentResult>[], TResult> continuationFunction,
-		                                                         CancellationToken token,
+		                                                         CancellationToken cancellationToken,
 		                                                         TaskContinuationOptions continuationOptions, TaskScheduler scheduler)
 		{
-			CountdownEvent evt = new CountdownEvent (tasks.Length);
-			Task<TResult> cont = new Task<TResult> ((o) => continuationFunction (tasks), tasks, token, options);
-			
-			foreach (Task t in tasks)
-				t.ContinueWithCore (cont, continuationOptions, scheduler, evt.Signal);
-			
-			return cont;
+			return parent.ContinueWhenAll (tasks, continuationFunction, cancellationToken, continuationOptions, scheduler);
 		}
 
 		#endregion
@@ -836,7 +837,7 @@ namespace System.Threading.Tasks
 		[MonoLimitation(errorMsg)]
 		public Task<TResult> FromAsync (IAsyncResult asyncResult, Func<IAsyncResult, TResult> endMethod)
 		{
-			return FromAsync (asyncResult, endMethod, options);
+			return FromAsync (asyncResult, endMethod, creationOptions);
 		}
 		
 		[MonoLimitation(errorMsg)]
@@ -927,19 +928,19 @@ namespace System.Threading.Tasks
 		
 		public TaskContinuationOptions ContinuationOptions {
 			get {
-				return contOptions;
+				return continuationOptions;
 			}
 		}
 		
 		public TaskCreationOptions CreationOptions {
 			get {
-				return options;
+				return creationOptions;
 			}
 		}
 		
 		public CancellationToken CancellationToken {
 			get {
-				return token;
+				return cancellationToken;
 			}
 		}
 	}
diff --git a/mcs/class/corlib/System.Threading.Tasks/TaskScheduler.cs b/mcs/class/corlib/System.Threading.Tasks/TaskScheduler.cs
index 1084dbe..b862098 100644
--- a/mcs/class/corlib/System.Threading.Tasks/TaskScheduler.cs
+++ b/mcs/class/corlib/System.Threading.Tasks/TaskScheduler.cs
@@ -24,13 +24,15 @@
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
 using System;
 using System.Threading;
 using System.Collections.Generic;
 
 namespace System.Threading.Tasks
 {
+	[System.Diagnostics.DebuggerDisplay ("Id={Id}")]
+	[System.Diagnostics.DebuggerTypeProxy ("System.Threading.Tasks.TaskScheduler+SystemThreadingTasks_TaskSchedulerDebugView")]
 	public abstract class TaskScheduler
 	{
 		static TaskScheduler defaultScheduler = new Scheduler ();
@@ -93,7 +95,7 @@ namespace System.Threading.Tasks
 
 		internal protected bool TryExecuteTask (Task task)
 		{
-			throw new NotSupportedException ();
+			return TryExecuteTaskInline (task, false);
 		}
 
 		protected abstract bool TryExecuteTaskInline (Task task, bool taskWasPreviouslyQueued);
diff --git a/mcs/class/corlib/System.Threading.Tasks/TaskStatus.cs b/mcs/class/corlib/System.Threading.Tasks/TaskStatus.cs
index d3d2ea6..853afad 100644
--- a/mcs/class/corlib/System.Threading.Tasks/TaskStatus.cs
+++ b/mcs/class/corlib/System.Threading.Tasks/TaskStatus.cs
@@ -24,7 +24,7 @@
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
 using System;
 
 namespace System.Threading.Tasks
diff --git a/mcs/class/corlib/System.Threading.Tasks/ThreadWorker.cs b/mcs/class/corlib/System.Threading.Tasks/ThreadWorker.cs
index 73ef7d6..e0f8a16 100644
--- a/mcs/class/corlib/System.Threading.Tasks/ThreadWorker.cs
+++ b/mcs/class/corlib/System.Threading.Tasks/ThreadWorker.cs
@@ -22,7 +22,7 @@
 //
 //
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
 using System;
 using System.Threading;
 using System.Collections.Concurrent;
@@ -31,98 +31,82 @@ namespace System.Threading.Tasks
 {
 	internal class ThreadWorker : IDisposable
 	{
-		static Random r = new Random ();
-		
 		Thread workerThread;
+
+		/* This field is used when a TheadWorker have to call Task.Wait
+		 * which bring him back here with the static WorkerMethod although
+		 * it's more optimized for him to continue calling its own WorkerMethod
+		 */
+		[ThreadStatic]
+		static ThreadWorker autoReference;
 		
-		readonly          ThreadWorker[]         others;
-		internal readonly IDequeOperations<Task> dDeque;
-		readonly          Action<Task>           childWorkAdder;
-		readonly          EventWaitHandle        waitHandle;
-		readonly          IProducerConsumerCollection<Task> sharedWorkQueue;
+		readonly IDequeOperations<Task> dDeque;
+		readonly ThreadWorker[]         others;
+		readonly ManualResetEvent       waitHandle;
+		readonly IProducerConsumerCollection<Task> sharedWorkQueue;
+		readonly IScheduler             sched;
+		readonly ThreadPriority         threadPriority;
+
 		// Flag to tell if workerThread is running
 		int started = 0; 
 		
-		readonly bool isLocal;
 		readonly int  workerLength;
-		readonly int  stealingStart;
+		readonly int  workerPosition;
 		const    int  maxRetry = 5;
 		
 		const int sleepThreshold = 100;
-		const int deepSleepTime = 10;
-		
-		Action threadInitializer;
+		int deepSleepTime = 8;
 		
-		public ThreadWorker (IScheduler sched, ThreadWorker[] others, IProducerConsumerCollection<Task> sharedWorkQueue,
-		                     int maxStackSize, ThreadPriority priority, EventWaitHandle handle)
-		: this (sched, others, sharedWorkQueue, true, maxStackSize, priority, handle)
-		{
-		}
-		
-		public ThreadWorker (IScheduler sched, ThreadWorker[] others, IProducerConsumerCollection<Task> sharedWorkQueue,
-		                     bool createThread, int maxStackSize, ThreadPriority priority, EventWaitHandle handle)
+		public ThreadWorker (IScheduler sched,
+		                     ThreadWorker[] others,
+		                     int workerPosition,
+		                     IProducerConsumerCollection<Task> sharedWorkQueue,
+		                     ThreadPriority priority,
+		                     ManualResetEvent handle)
 		{
 			this.others          = others;
-
-			this.dDeque = new CyclicDeque<Task> ();
-			
+			this.dDeque          = new CyclicDeque<Task> ();
+			this.sched           = sched;
 			this.sharedWorkQueue = sharedWorkQueue;
 			this.workerLength    = others.Length;
-			this.isLocal         = !createThread;
+			this.workerPosition  = workerPosition;
 			this.waitHandle      = handle;
-			
-			this.childWorkAdder = delegate (Task t) { 
-				dDeque.PushBottom (t);
-				sched.PulseAll ();
-			};
-			
-			// Find the stealing start index randomly (then the traversal
-			// will be done in Round-Robin fashion)
-			do {
-				this.stealingStart = r.Next(0, workerLength);
-			} while (others[stealingStart] == this);
-			
-			InitializeUnderlyingThread (maxStackSize, priority);
+			this.threadPriority  = priority;
+
+			InitializeUnderlyingThread ();
 		}
 		
-		void InitializeUnderlyingThread (int maxStackSize, ThreadPriority priority)
+		void InitializeUnderlyingThread ()
 		{
-			threadInitializer = delegate {
-				// Special case of the participant ThreadWorker
-				if (isLocal) {			
-					this.workerThread = Thread.CurrentThread;
-					return;
-				}
-				
-				this.workerThread = (maxStackSize == 0) ? new Thread (WorkerMethodWrapper) :
-					new Thread (WorkerMethodWrapper, maxStackSize);
+			this.workerThread = new Thread (WorkerMethodWrapper);
 	
-				this.workerThread.IsBackground = true;
-				this.workerThread.Priority = priority;
-				this.workerThread.Name = "ParallelFxThreadWorker";
-			};
-			threadInitializer ();
+			this.workerThread.IsBackground = true;
+			this.workerThread.Priority = threadPriority;
+			this.workerThread.Name = "ParallelFxThreadWorker";
 		}
 
 		public void Dispose ()
 		{
 			Stop ();
-			if (!isLocal && workerThread.ThreadState != ThreadState.Stopped)
+			if (workerThread.ThreadState != ThreadState.Stopped)
 				workerThread.Abort ();
 		}
 		
 		public void Pulse ()
 		{
+			if (started == 1)
+				return;
+
 			// If the thread was stopped then set it in use and restart it
 			int result = Interlocked.Exchange (ref started, 1);
 			if (result != 0)
 				return;
-			if (!isLocal) {
-				if (this.workerThread.ThreadState != ThreadState.Unstarted) {
-					threadInitializer ();
-				}
-				workerThread.Start ();
+
+			if (this.workerThread.ThreadState != ThreadState.Unstarted) {
+				InitializeUnderlyingThread ();
 			}
+
+			workerThread.Start ();
 		}
 		
 		public void Stop ()
@@ -136,25 +120,28 @@ namespace System.Threading.Tasks
 		void WorkerMethodWrapper ()
 		{
 			int sleepTime = 0;
-			SpinWait wait = new SpinWait ();
+			autoReference = this;
 			
 			// Main loop
 			while (started == 1) {
 				bool result = false;
 
 				result = WorkerMethod ();
-				
+				if (!result)
+					waitHandle.Reset ();
+
+				Thread.Yield ();
+
 				if (result) {
+					deepSleepTime = 8;
 					sleepTime = 0;
-					wait = new SpinWait ();
+					continue;
 				}
 
-				// Wait a little and if the Thread has been more sleeping than working shut it down
-				wait.SpinOnce ();
-
 				// If we are spinning too much, have a deeper sleep
-				if (sleepTime++ > sleepThreshold)
-					waitHandle.WaitOne (deepSleepTime);
+				if (++sleepTime > sleepThreshold && sharedWorkQueue.Count == 0) {
+					waitHandle.WaitOne ((deepSleepTime =  deepSleepTime >= 0x4000 ? 0x4000 : deepSleepTime << 1));
+				}
 			}
 
 			started = 0;
@@ -162,7 +149,7 @@ namespace System.Threading.Tasks
 		
 		// Main method, used to do all the logic of retrieving, processing and stealing work.
 		bool WorkerMethod ()
-		{		
+		{
 			bool result = false;
 			bool hasStolenFromOther;
 			do {
@@ -174,33 +161,37 @@ namespace System.Threading.Tasks
 				while (sharedWorkQueue.Count > 0) {
 					while (sharedWorkQueue.TryTake (out value)) {
 						dDeque.PushBottom (value);
+						waitHandle.Set ();
 					}
-					
+
 					// Now we process our work
 					while (dDeque.PopBottom (out value) == PopResult.Succeed) {
+						waitHandle.Set ();
 						if (value != null) {
-							value.Execute (childWorkAdder);
+							value.Execute (ChildWorkAdder);
 							result = true;
 						}
 					}
 				}
-				
+
 				// When we have finished, steal from other worker
 				ThreadWorker other;
 				
 				// Repeat the operation a little so that we can let other things process.
-				for (int j = 0; j < maxRetry; j++) {
+				for (int j = 0; j < maxRetry; ++j) {
+					int len = workerLength + workerPosition;
 					// Start stealing with the ThreadWorker at our right to minimize contention
-					for (int it = stealingStart; it < stealingStart + workerLength; it++) {
+					for (int it = workerPosition + 1; it < len; ++it) {
 						int i = it % workerLength;
 						if ((other = others [i]) == null || other == this)
 							continue;
 						
 						// Maybe make this steal more than one item at a time, see TODO.
 						if (other.dDeque.PopTop (out value) == PopResult.Succeed) {
+							waitHandle.Set ();
 							hasStolenFromOther = true;
 							if (value != null) {
-								value.Execute (childWorkAdder);
+								value.Execute (ChildWorkAdder);
 								result = true;
 							}
 						}
@@ -216,54 +207,109 @@ namespace System.Threading.Tasks
 		// Task.WaitAll(someTasks) or Task.WaitAny(someTasks)
 		// Predicate should be really fast and not blocking as it is called a good deal of time
 		// Also, the method skip tasks that are LongRunning to avoid blocking (Task are not LongRunning by default)
-		public static void WorkerMethod (Func<bool> predicate, IProducerConsumerCollection<Task> sharedWorkQueue,
-		                                 ThreadWorker[] others)
+		public static void WorkerMethod (Task self,
+		                                 ManualResetEventSlim predicateEvt,
+		                                 int millisecondsTimeout,
+		                                 IProducerConsumerCollection<Task> sharedWorkQueue,
+		                                 ThreadWorker[] others,
+		                                 ManualResetEvent evt)
 		{
-			SpinWait wait = new SpinWait ();
+			const int stage1 = 5, stage2 = 0;
+			int tries = 8;
+			WaitHandle[] handles = null;
+			Watch watch = Watch.StartNew ();
 
-			while (!predicate ()) {
+			while (!predicateEvt.IsSet && watch.ElapsedMilliseconds < millisecondsTimeout) {
 				Task value;
 				
+				// If we are in fact a normal ThreadWorker, use our own deque
+				if (autoReference != null) {
+					while (autoReference.dDeque.PopBottom (out value) == PopResult.Succeed && value != null) {
+						evt.Set ();
+						if (CheckTaskFitness (self, value))
+							value.Execute (autoReference.ChildWorkAdder);
+						else {
+							sharedWorkQueue.TryAdd (value);
+							evt.Set ();
+						}
+
+						if (predicateEvt.IsSet || watch.ElapsedMilliseconds > millisecondsTimeout)
+							return;
+					}
+				}
+
+				int count = sharedWorkQueue.Count;
+
 				// Dequeue only one item as we have restriction
-				if (sharedWorkQueue.TryTake (out value)) {
-					if (value != null) {
-						if (CheckTaskFitness (value))
-							value.Execute (null);
-						else
+				while (--count >= 0 && sharedWorkQueue.TryTake (out value) && value != null) {
+					evt.Set ();
+					if (CheckTaskFitness (self, value))
+						value.Execute (null);
+					else {
+						if (autoReference == null)
 							sharedWorkQueue.TryAdd (value);
+						else
+							autoReference.dDeque.PushBottom (value);
+						evt.Set ();
 					}
+
+					if (predicateEvt.IsSet || watch.ElapsedMilliseconds > millisecondsTimeout)
+						return;
 				}
-				
+
 				// First check to see if we comply to predicate
-				if (predicate ())
+				if (predicateEvt.IsSet || watch.ElapsedMilliseconds > millisecondsTimeout)
 					return;
 				
 				// Try to complete other work by stealing since our desired tasks may be in other worker
 				ThreadWorker other;
 				for (int i = 0; i < others.Length; i++) {
-					if ((other = others [i]) == null)
+					if ((other = others [i]) == autoReference || other == null)
 						continue;
-					
-					if (other.dDeque.PopTop (out value) == PopResult.Succeed) {
-						if (value != null) {
-							if (CheckTaskFitness (value))
-								value.Execute (null);
-							else
+
+					if (other.dDeque.PopTop (out value) == PopResult.Succeed && value != null) {
+						evt.Set ();
+						if (CheckTaskFitness (self, value))
+							value.Execute (null);
+						else {
+							if (autoReference == null)
 								sharedWorkQueue.TryAdd (value);
+							else
+								autoReference.dDeque.PushBottom (value);
+							evt.Set ();
 						}
 					}
-					
-					if (predicate ())
+
+					if (predicateEvt.IsSet || watch.ElapsedMilliseconds > millisecondsTimeout)
 						return;
 				}
 
-				wait.SpinOnce ();
+				if (--tries > stage1)
+					Thread.Yield ();
+				else if (tries >= stage2)
+					predicateEvt.Wait (ComputeTimeout (100, millisecondsTimeout, watch));
+				else {
+					if (tries == stage2 - 1)
+						handles = new [] { predicateEvt.WaitHandle, evt };
+					WaitHandle.WaitAny (handles, ComputeTimeout (1000, millisecondsTimeout, watch));
+				}
 			}
 		}
+
+		internal void ChildWorkAdder (Task t)
+		{
+			dDeque.PushBottom (t);
+			sched.PulseAll ();
+		}
 		
-		static bool CheckTaskFitness (Task t)
+		static bool CheckTaskFitness (Task self, Task t)
+		{
+			return ((t.CreationOptions & TaskCreationOptions.LongRunning) == 0 && t.Id < self.Id) || t.Parent == self || t == self;
+		}
+
+		static int ComputeTimeout (int proposedTimeout, int timeout, Watch watch)
 		{
-			return (t.CreationOptions | TaskCreationOptions.LongRunning) > 0;
+			return timeout == -1 ? proposedTimeout : Math.Min (proposedTimeout, Math.Max (0, (int)(timeout - watch.ElapsedMilliseconds)));
 		}
 		
 		public bool Finished {
@@ -271,13 +317,7 @@ namespace System.Threading.Tasks
 				return started == 0;
 			}
 		}
-		
-		public bool IsLocal {
-			get {
-				return isLocal;
-			}
-		}
-		
+
 		public int Id {
 			get {
 				return workerThread.ManagedThreadId;
diff --git a/mcs/class/corlib/System.Threading.Tasks/UnobservedTaskExceptionEventArgs.cs b/mcs/class/corlib/System.Threading.Tasks/UnobservedTaskExceptionEventArgs.cs
index 433f295..aff0675 100644
--- a/mcs/class/corlib/System.Threading.Tasks/UnobservedTaskExceptionEventArgs.cs
+++ b/mcs/class/corlib/System.Threading.Tasks/UnobservedTaskExceptionEventArgs.cs
@@ -24,7 +24,7 @@
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
 using System;
 
 namespace System.Threading.Tasks
diff --git a/mcs/class/corlib/System.Threading/AsyncFlowControl.cs b/mcs/class/corlib/System.Threading/AsyncFlowControl.cs
index a534b7d..cdd9373 100644
--- a/mcs/class/corlib/System.Threading/AsyncFlowControl.cs
+++ b/mcs/class/corlib/System.Threading/AsyncFlowControl.cs
@@ -65,7 +65,11 @@ namespace System.Threading {
 			_t = null;
 		}
 
-		void IDisposable.Dispose () 
+#if NET_4_0
+		public void Dispose ()
+#else
+		void IDisposable.Dispose ()
+#endif
 		{
 			if (_t != null) {
 				Undo ();
diff --git a/mcs/class/corlib/System.Threading/AtomicBoolean.cs b/mcs/class/corlib/System.Threading/AtomicBoolean.cs
index 89958b3..e50934e 100644
--- a/mcs/class/corlib/System.Threading/AtomicBoolean.cs
+++ b/mcs/class/corlib/System.Threading/AtomicBoolean.cs
@@ -26,28 +26,101 @@ using System;
 
 namespace System.Threading
 {
+	internal struct AtomicBooleanValue
+	{
+		int flag;
+		const int UnSet = 0;
+		const int Set = 1;
+
+		public bool CompareAndExchange (bool expected, bool newVal)
+		{
+			int newTemp = newVal ? Set : UnSet;
+			int expectedTemp = expected ? Set : UnSet;
+
+			return Interlocked.CompareExchange (ref flag, newTemp, expectedTemp) == expectedTemp;
+		}
+
+		public static AtomicBooleanValue FromValue (bool value)
+		{
+			AtomicBooleanValue temp = new AtomicBooleanValue ();
+			temp.Value = value;
+
+			return temp;
+		}
+
+		public bool TrySet ()
+		{
+			return !Exchange (true);
+		}
+
+		public bool TryRelaxedSet ()
+		{
+			return flag == UnSet && !Exchange (true);
+		}
+
+		public bool Exchange (bool newVal)
+		{
+			int newTemp = newVal ? Set : UnSet;
+			return Interlocked.Exchange (ref flag, newTemp) == Set;
+		}
+
+		public bool Value {
+			get {
+				return flag == Set;
+			}
+			set {
+				Exchange (value);
+			}
+		}
+
+		public bool Equals (AtomicBooleanValue rhs)
+		{
+			return this.flag == rhs.flag;
+		}
+
+		public override bool Equals (object rhs)
+		{
+			return rhs is AtomicBooleanValue ? Equals ((AtomicBooleanValue)rhs) : false;
+		}
+
+		public override int GetHashCode ()
+		{
+			return flag.GetHashCode ();
+		}
+
+		public static explicit operator bool (AtomicBooleanValue rhs)
+		{
+			return rhs.Value;
+		}
+
+		public static implicit operator AtomicBooleanValue (bool rhs)
+		{
+			return AtomicBooleanValue.FromValue (rhs);
+		}
+	}
+
 	internal class AtomicBoolean
 	{
 		int flag;
 		const int UnSet = 0;
 		const int Set = 1;
-		
+
 		public bool CompareAndExchange (bool expected, bool newVal)
 		{
 			int newTemp = newVal ? Set : UnSet;
 			int expectedTemp = expected ? Set : UnSet;
-			
+
 			return Interlocked.CompareExchange (ref flag, newTemp, expectedTemp) == expectedTemp;
 		}
-		
+
 		public static AtomicBoolean FromValue (bool value)
 		{
 			AtomicBoolean temp = new AtomicBoolean ();
 			temp.Value = value;
-			
+
 			return temp;
 		}
-		
+
 		public bool TrySet ()
 		{
 			return !Exchange (true);
@@ -57,42 +130,42 @@ namespace System.Threading
 		{
 			return flag == UnSet && !Exchange (true);
 		}
-		
+
 		public bool Exchange (bool newVal)
 		{
 			int newTemp = newVal ? Set : UnSet;
 			return Interlocked.Exchange (ref flag, newTemp) == Set;
 		}
-		
+
 		public bool Value {
 			get {
 				return flag == Set;
-			} 
+			}
 			set {
 				Exchange (value);
 			}
 		}
-		
+
 		public bool Equals (AtomicBoolean rhs)
 		{
 			return this.flag == rhs.flag;
 		}
-		
+
 		public override bool Equals (object rhs)
 		{
 			return rhs is AtomicBoolean ? Equals ((AtomicBoolean)rhs) : false;
 		}
-		
+
 		public override int GetHashCode ()
 		{
 			return flag.GetHashCode ();
 		}
-		
+
 		public static explicit operator bool (AtomicBoolean rhs)
 		{
 			return rhs.Value;
 		}
-		
+
 		public static implicit operator AtomicBoolean (bool rhs)
 		{
 			return AtomicBoolean.FromValue (rhs);
diff --git a/mcs/class/corlib/System.Threading/AutoResetEvent.cs b/mcs/class/corlib/System.Threading/AutoResetEvent.cs
index 589693d..c6f3e2b 100644
--- a/mcs/class/corlib/System.Threading/AutoResetEvent.cs
+++ b/mcs/class/corlib/System.Threading/AutoResetEvent.cs
@@ -33,12 +33,10 @@
 
 using System;
 using System.Runtime.CompilerServices;
-
 using System.Runtime.InteropServices;
 
 namespace System.Threading 
 {
-
 	[ComVisible (true)]
  	public sealed class AutoResetEvent : EventWaitHandle
 	{
@@ -47,25 +45,5 @@ namespace System.Threading
 			: base(initialState, EventResetMode.AutoReset)
 		{
 		}
-
-		// Methods
-
-/* Need BOOTSTRAP_NET_2_0 because System.Threading.Timer wants to use
- * the Set and Reset methods that have moved to EventWaitHandle in the
- * 2.0 profile
- */
-#if BOOTSTRAP_NET_2_0
-		public bool Set() {
-			CheckDisposed ();
-			
-			return(NativeEventCalls.SetEvent_internal(Handle));
-		}
-
-		public bool Reset() {
-			CheckDisposed ();
-			
-			return(NativeEventCalls.ResetEvent_internal(Handle));
-		}
-#endif
 	}
 }
diff --git a/mcs/class/corlib/System.Threading/CSnzi.cs b/mcs/class/corlib/System.Threading/CSnzi.cs
deleted file mode 100644
index 57bc109..0000000
--- a/mcs/class/corlib/System.Threading/CSnzi.cs
+++ /dev/null
@@ -1,256 +0,0 @@
-// 
-// CSnzi.cs
-//  
-// Author:
-//       Jérémie "Garuma" Laval <jeremie.laval at gmail.com>
-// 
-// Copyright (c) 2009 Jérémie "Garuma" Laval
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-#if NET_4_0
-using System;
-
-namespace System.Threading
-{
-	internal interface ICSnziNode
-	{
-		bool Arrive ();
-		bool Depart ();
-	}
-	
-	internal enum CSnziState
-	{
-		Open,
-		Closed
-	}
-	
-	internal struct QueryReturn
-	{
-		internal readonly bool NonZero;
-		internal readonly bool Open;
-		
-		internal QueryReturn (bool nonzero, bool open)
-		{
-			NonZero = nonzero;
-			Open = open;
-		}
-	}
-	
-	internal class CSnziLeafNode : ICSnziNode
-	{
-		int count;
-		readonly ICSnziNode parent;
-		
-		public CSnziLeafNode (ICSnziNode parent)
-		{
-			this.parent = parent;
-		}
-
-		#region ICSnziNode implementation
-		public bool Arrive ()
-		{
-			bool arrivedAtParent = false;
-			int x;
-			
-			do {
-				x = count;
-				if (x == 0 && !arrivedAtParent) {
-					if (parent.Arrive ())
-						arrivedAtParent = true;
-					else
-						return false;
-				}
-			} while (Interlocked.CompareExchange (ref count, x + 1, x) != x);
-			
-			if (arrivedAtParent && x != 0)
-				parent.Depart ();
-			
-			return true;
-		}
-		
-		public bool Depart ()
-		{
-			int x = Interlocked.Decrement (ref count);
-			if (x == 1)
-				return parent.Depart ();
-			else
-				return true;
-		}
-		#endregion
-		
-	}
-	
-	internal class CSnziRootNode : ICSnziNode
-	{
-		int root;
-		
-		public int Count {
-			get {
-				return root & 0x7FFFFFFF;
-			}
-		}
-					
-		public CSnziState State {
-			get {
-				return (root >> 31) > 0 ? CSnziState.Open : CSnziState.Closed;
-			}
-		}
-		
-		public CSnziRootNode () : this (0, CSnziState.Open)
-		{
-			
-		}
-		
-		public CSnziRootNode (int count, CSnziState state)
-		{
-			root = Encode (count, state);
-		}
-
-		#region ICSnziNode implementation
-		public bool Arrive ()
-		{
-			int old;
-			int c;
-			CSnziState s;
-			
-			do {
-				old = root;
-				
-				Decode (old, out c, out s);
-				
-				if (c == 0 && s == CSnziState.Closed)
-					return false;
-			} while (Interlocked.CompareExchange (ref root, Encode (c + 1, s), old) != old);
-			
-			return true;
-		}
-		
-		public bool Depart ()
-		{
-			int old;
-			int c;
-			CSnziState s;
-			
-			do {
-				old = root;	
-				Decode (old, out c, out s); 
-			} while (Interlocked.CompareExchange (ref root, Encode (c - 1, s), old) != old);
-			
-			return c != 0 && s != CSnziState.Closed;
-		}
-		#endregion
-		
-		public void Open ()
-		{
-			root = Encode (0, CSnziState.Open);
-		}
-		
-		public bool Close ()
-		{
-			int old, newRoot;
-			int c;
-			CSnziState s;
-			
-			do {
-				old = root;
-	
-				Decode (old, out c, out s);
-				if (s != CSnziState.Open)
-					return false;
-				
-				newRoot = Encode (c, CSnziState.Closed);
-			} while (Interlocked.CompareExchange (ref root, newRoot, old) != old);
-			
-			return c == 0;
-		}
-		
-		int Encode (int count, CSnziState state)
-		{
-			return (state == CSnziState.Open) ? (int)(((uint)count) | 0x80000000) : count & 0x7FFFFFFF;
-		}
-		
-		void Decode (int code, out int count, out CSnziState state)
-		{
-			count = code & 0x7FFFFFFF;
-			state = (code >> 31) > 0 ? CSnziState.Open : CSnziState.Closed;
-		}
-	}
-	
-	internal class CSnzi
-	{
-		CSnziRootNode root;
-		CSnziLeafNode[] leafs;
-		
-		readonly int LeafCount = Environment.ProcessorCount * 2;
-		
-		public CSnzi ()
-		{
-			leafs = new CSnziLeafNode[LeafCount];
-			root = new CSnziRootNode ();
-			
-			for (int i = 0; i < leafs.Length; i++) {
-				leafs[i] = new CSnziLeafNode (root);
-			}
-		}
-		
-		public ICSnziNode Arrive ()
-		{
-			while (true) {
-				if (root.State != CSnziState.Open)
-					return null;
-				
-				ICSnziNode leaf = leafs[GetLeafIndex ()];
-				if (leaf.Arrive ())
-					return leaf;
-				else {
-					return null;
-				}
-			}
-		}
-		
-		public bool Depart (ICSnziNode node)
-		{
-			return node.Depart ();
-		}
-		
-		public bool Close ()
-		{
-			return root.Close ();
-		}
-		
-		public void Open ()
-		{
-			root.Open ();
-		}
-		
-		public QueryReturn Query ()
-		{
-			CSnziRootNode copy = root;
-			
-			return new QueryReturn (copy.Count > 0, copy.State == CSnziState.Open);
-		}
-		
-		int GetLeafIndex ()
-		{
-			return (Thread.CurrentThread.ManagedThreadId - 1) % leafs.Length;
-		}
-	}
-}
-#endif
diff --git a/mcs/class/corlib/System.Threading/CancellationToken.cs b/mcs/class/corlib/System.Threading/CancellationToken.cs
index 51fb2dc..8d97f78 100644
--- a/mcs/class/corlib/System.Threading/CancellationToken.cs
+++ b/mcs/class/corlib/System.Threading/CancellationToken.cs
@@ -27,9 +27,10 @@
 using System;
 using System.Threading;
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
 namespace System.Threading
 {
+	[System.Diagnostics.DebuggerDisplay ("IsCancellationRequested = {IsCancellationRequested}")]
 	public struct CancellationToken
 	{
 		public CancellationToken (bool canceled)
@@ -73,7 +74,8 @@ namespace System.Threading
 
 		public void ThrowIfCancellationRequested ()
 		{
-			Source.ThrowIfCancellationRequested ();
+			if (Source.IsCancellationRequested)
+				throw new OperationCanceledException (this);
 		}
 
 		public bool Equals (CancellationToken other)
@@ -81,9 +83,9 @@ namespace System.Threading
 			return this.Source == other.Source;
 		}
 
-		public override bool Equals (object obj)
+		public override bool Equals (object other)
 		{
-			return (obj is CancellationToken) ? Equals ((CancellationToken)obj) : false;
+			return (other is CancellationToken) ? Equals ((CancellationToken)other) : false;
 		}
 
 		public override int GetHashCode ()
@@ -91,14 +93,14 @@ namespace System.Threading
 			return Source.GetHashCode ();
 		}
 
-		public static bool operator == (CancellationToken lhs, CancellationToken rhs)
+		public static bool operator == (CancellationToken left, CancellationToken right)
 		{
-			return lhs.Equals (rhs);
+			return left.Equals (right);
 		}
 
-		public static bool operator != (CancellationToken lhs, CancellationToken rhs)
+		public static bool operator != (CancellationToken left, CancellationToken right)
 		{
-			return !lhs.Equals (rhs);
+			return !left.Equals (right);
 		}
 
 		public bool CanBeCanceled {
diff --git a/mcs/class/corlib/System.Threading/CancellationTokenRegistration.cs b/mcs/class/corlib/System.Threading/CancellationTokenRegistration.cs
index 1e4e0b6..bd8098a 100644
--- a/mcs/class/corlib/System.Threading/CancellationTokenRegistration.cs
+++ b/mcs/class/corlib/System.Threading/CancellationTokenRegistration.cs
@@ -24,7 +24,7 @@
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
 using System;
 using System.Threading;
 
@@ -56,14 +56,14 @@ namespace System.Threading
 			return this.id == other.id && this.source == other.source;
 		}
 		
-		public static bool operator== (CancellationTokenRegistration lhs, CancellationTokenRegistration rhs)
+		public static bool operator== (CancellationTokenRegistration left, CancellationTokenRegistration right)
 		{
-			return lhs.Equals (rhs);
+			return left.Equals (right);
 		}
 		
-		public static bool operator!= (CancellationTokenRegistration lhs, CancellationTokenRegistration rhs)
+		public static bool operator!= (CancellationTokenRegistration left, CancellationTokenRegistration right)
 		{
-			return !lhs.Equals (rhs);
+			return !left.Equals (right);
 		}
 		#endregion
 		
diff --git a/mcs/class/corlib/System.Threading/CancellationTokenSource.cs b/mcs/class/corlib/System.Threading/CancellationTokenSource.cs
index 12f59a5..9981c57 100644
--- a/mcs/class/corlib/System.Threading/CancellationTokenSource.cs
+++ b/mcs/class/corlib/System.Threading/CancellationTokenSource.cs
@@ -24,7 +24,7 @@
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
 using System;
 using System.Collections.Generic;
 
@@ -33,8 +33,8 @@ namespace System.Threading
 	
 	public sealed class CancellationTokenSource : IDisposable
 	{
-		volatile bool canceled;
-		volatile bool processed;
+		bool canceled;
+		bool processed;
 		
 		int currId = int.MinValue;
 		
@@ -53,18 +53,18 @@ namespace System.Threading
 		}
 		
 		// If parameter is true we throw exception as soon as they appear otherwise we aggregate them
-		public void Cancel (bool throwOnFirst)
+		public void Cancel (bool throwOnFirstException)
 		{
 			canceled = true;
 			handle.Set ();
 			
 			List<Exception> exceptions = null;
-			if (!throwOnFirst)
+			if (!throwOnFirstException)
 				exceptions = new List<Exception> ();
 			
 			lock (callbacks) {
 				foreach (KeyValuePair<CancellationTokenRegistration, Action> item in callbacks) {
-					if (throwOnFirst) {
+					if (throwOnFirstException) {
 						item.Value ();
 					} else {
 						try {
@@ -76,6 +76,7 @@ namespace System.Threading
 				}
 			}
 			
+			Thread.MemoryBarrier ();
 			processed = true;
 			
 			if (exceptions != null && exceptions.Count > 0)
@@ -155,13 +156,7 @@ namespace System.Threading
 				sw.SpinOnce ();
 			
 		}
-		
-		internal void ThrowIfCancellationRequested ()
-		{
-			if (canceled)
-				throw new OperationCanceledException (CreateToken ());
-		}
-		
+
 		CancellationTokenRegistration GetTokenReg ()
 		{
 			CancellationTokenRegistration registration
diff --git a/mcs/class/corlib/System.Threading/ChangeLog b/mcs/class/corlib/System.Threading/ChangeLog
index f8bf5d1..6b38a33 100644
--- a/mcs/class/corlib/System.Threading/ChangeLog
+++ b/mcs/class/corlib/System.Threading/ChangeLog
@@ -1,3 +1,138 @@
+2011-01-07  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Remove now unused internal classes
+
+2011-01-06  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Add missing Debugger and ReliabilityContract attributes to .NET 4
+	types
+
+2011-01-06  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Use while loop instead of if for removing as much stalled tickets
+	as possible
+
+2011-01-06  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Fix comments
+
+2011-01-06  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Protect SpinLock's Enter method against asynchronous exception
+
+2011-01-04  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Update ThreadLocal to use default(T) for initialization with
+	parameterless ctor following comment on
+	https://connect.microsoft.com/VisualStudio/feedback/details/630350/threadlocal-documentation-and-actual-behavior-mismatch
+
+2010-12-16  Marek Safar  <marek.safar at gmail.com>
+
+	Some 4.0 API tweaks
+
+2010-12-15  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	More parameter renaming
+
+2010-12-13  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Increment Count even on single-processor in SpinWait. Fix #624849.
+
+2010-12-09  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Fix semantic of CountdownEvent Reset methods. Fix #658244.
+
+2010-11-27  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Fix corlib regression
+
+2010-11-27  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* Thread.cs: Move culture data from InternalThread to Thread and
+	thus completely avoid the whole caching and serialization
+	nightmare. Even thou this is a cleanup it should speed up
+	multi-appdomain setups.
+
+2010-11-26  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Adjust sleeping values
+
+2010-11-20  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	[Timer] Use a WaitHandle instead of Wait/Pulse
+
+	Notifications of changes were sent using Monitor.Pulse() while the
+	scheduler thread was in a Monitor.Wait(). The way we handle
+	Monitor.Wait() internally involves creating an manual-reset event
+	and waiting on it each time Monitor.Wait() is called.
+
+	With this change, one 1 event is created for the lifetime of the
+	appdomain. These seems to help avoiding contention when there are
+	a lot of timers in play.
+
+2010-11-18  Mark Probst  <mark.probst at gmail.com>
+
+	[fix] Fix build.
+
+2010-11-18  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Revert the CER-like changes made to SpinLock.Enter method and
+	document the problem.
+
+2010-10-22  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Protect TryEnter and Exit methods of SpinLock against asynchronous
+	exceptions.
+
+2010-11-17  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	[CancellationToken] Speed up ThrowIfCancellationRequested
+	operation
+
+2010-11-10  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Simplify Parallel.For execution.
+
+	This commit remove the stealing path until a better solution for
+	it is devised.
+
+2010-11-10  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Final performance improvement on ReaderWriterLockSlim
+
+2010-11-09  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix the previous change.
+
+2010-11-09  Zoltan Varga  <vargaz at gmail.com>
+
+	Speed up Thread.ManagedThreadId.
+
+2010-11-04  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	ManualResetEventSlim performance improvements
+
+2010-11-04  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	SpinLock performance improvements
+
+2010-10-26  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* Monitor.cs (TryEnter): Implement v4 overloads that take a "ref
+	book lookTaken" var. Setting this flag must be done in the runtime
+	to avoid async exceptions.
+
+	* Monitor.cs (Enter): Fix v4 overload to be async exception safe.
+
+2010-10-25  Marek Safar  <marek.safar at gmail.com>
+
+	Keep only 1 Dispose implementation
+
+2010-10-22  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Use test-and-test-and-set pattern in
+	LazyInitializer::EnsureInitialized
+
 2010-10-21  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
 
 	Fix the collision handling code
diff --git a/mcs/class/corlib/System.Threading/CountdownEvent.cs b/mcs/class/corlib/System.Threading/CountdownEvent.cs
index eaeb3ac..0046f81 100644
--- a/mcs/class/corlib/System.Threading/CountdownEvent.cs
+++ b/mcs/class/corlib/System.Threading/CountdownEvent.cs
@@ -22,23 +22,24 @@
 //
 //
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
 
 using System;
 
 namespace System.Threading
-{	
+{
+	[System.Diagnostics.DebuggerDisplayAttribute ("Initial Count={InitialCount}, Current Count={CurrentCount}")]
 	public class CountdownEvent : IDisposable
 	{
-		int count;
-		readonly int initial;
+		int initialCount;
+		int initial;
 		ManualResetEventSlim evt = new ManualResetEventSlim (false);
 		
-		public CountdownEvent (int count)
+		public CountdownEvent (int initialCount)
 		{
-			if (count < 0)
-				throw new ArgumentOutOfRangeException ("count is negative");
-			this.initial = this.count = count;
+			if (initialCount < 0)
+				throw new ArgumentOutOfRangeException ("initialCount is negative");
+			this.initial = this.initialCount = initialCount;
 		}
 		
 		public bool Signal ()
@@ -46,18 +47,18 @@ namespace System.Threading
 			return Signal (1);
 		}
 		
-		public bool Signal (int num)
+		public bool Signal (int signalCount)
 		{
-			if (num <= 0)
-				throw new ArgumentOutOfRangeException ("num");
+			if (signalCount <= 0)
+				throw new ArgumentOutOfRangeException ("signalCount");
 			
 			Action<int> check = delegate (int value) {
 				if (value < 0)
-				throw new InvalidOperationException ("the specified count is larger that CurrentCount");
+				throw new InvalidOperationException ("the specified initialCount is larger that CurrentCount");
 			};
 			
 			int newValue;
-			if (!ApplyOperation (-num, check, out newValue))
+			if (!ApplyOperation (-signalCount, check, out newValue))
 				throw new InvalidOperationException ("The event is already set");
 			
 			if (newValue == 0) {
@@ -73,12 +74,12 @@ namespace System.Threading
 			AddCount (1);
 		}
 		
-		public void AddCount (int num)
+		public void AddCount (int signalCount)
 		{
-			if (num < 0)
-				throw new ArgumentOutOfRangeException ("num");
+			if (signalCount < 0)
+				throw new ArgumentOutOfRangeException ("signalCount");
 			
-			if (!TryAddCount (num))
+			if (!TryAddCount (signalCount))
 				throw new InvalidOperationException ("The event is already set");
 		}
 		
@@ -87,12 +88,12 @@ namespace System.Threading
 			return TryAddCount (1);
 		}
 		
-		public bool TryAddCount (int num)
+		public bool TryAddCount (int signalCount)
 		{	
-			if (num < 0)
-				throw new ArgumentOutOfRangeException ("num");
+			if (signalCount < 0)
+				throw new ArgumentOutOfRangeException ("signalCount");
 			
-			return ApplyOperation (num, null);
+			return ApplyOperation (signalCount, null);
 		}
 		
 		bool ApplyOperation (int num, Action<int> doCheck)
@@ -107,7 +108,7 @@ namespace System.Threading
 			newValue = 0;
 			
 			do {
-				oldCount = count;
+				oldCount = initialCount;
 				if (oldCount == 0)
 					return false;
 				
@@ -115,7 +116,7 @@ namespace System.Threading
 				
 				if (doCheck != null)
 					doCheck (newValue);
-			} while (Interlocked.CompareExchange (ref count, newValue, oldCount) != oldCount);
+			} while (Interlocked.CompareExchange (ref initialCount, newValue, oldCount) != oldCount);
 			
 			return true;
 		}
@@ -125,29 +126,29 @@ namespace System.Threading
 			evt.Wait ();
 		}
 		
-		public void Wait (CancellationToken token)
+		public void Wait (CancellationToken cancellationToken)
 		{
-			evt.Wait (token);
+			evt.Wait (cancellationToken);
 		}
 		
-		public bool Wait (int timeoutMilli)
+		public bool Wait (int millisecondsTimeout)
 		{
-			return evt.Wait (timeoutMilli);
+			return evt.Wait (millisecondsTimeout);
 		}
 		
-		public bool Wait(TimeSpan span)
+		public bool Wait(TimeSpan timeout)
 		{
-			return evt.Wait (span);
+			return evt.Wait (timeout);
 		}
 		
-		public bool Wait (int timeoutMilli, CancellationToken token)
+		public bool Wait (int millisecondsTimeout, CancellationToken cancellationToken)
 		{
-			return evt.Wait (timeoutMilli, token);
+			return evt.Wait (millisecondsTimeout, cancellationToken);
 		}
 		
-		public bool Wait(TimeSpan span, CancellationToken token)
+		public bool Wait(TimeSpan timeout, CancellationToken cancellationToken)
 		{
-			return evt.Wait (span, token);
+			return evt.Wait (timeout, cancellationToken);
 		}
 
 		public void Reset ()
@@ -155,15 +156,15 @@ namespace System.Threading
 			Reset (initial);
 		}
 		
-		public void Reset (int value)
+		public void Reset (int count)
 		{
 			evt.Reset ();
-			Interlocked.Exchange (ref count, value);
+			initialCount = initial = count;
 		}
 		
 		public int CurrentCount {
 			get {
-				return count;
+				return initialCount;
 			}
 		}
 		
@@ -175,7 +176,7 @@ namespace System.Threading
 			
 		public bool IsSet {
 			get {
-				return count == 0;
+				return initialCount == 0;
 			}
 		}
 		
@@ -192,7 +193,7 @@ namespace System.Threading
 			
 		}
 		
-		protected virtual void Dispose (bool managedRes)
+		protected virtual void Dispose (bool disposing)
 		{
 			
 		}
diff --git a/mcs/class/corlib/System.Threading/LazyInitializer.cs b/mcs/class/corlib/System.Threading/LazyInitializer.cs
index c63126e..487b40e 100644
--- a/mcs/class/corlib/System.Threading/LazyInitializer.cs
+++ b/mcs/class/corlib/System.Threading/LazyInitializer.cs
@@ -24,7 +24,7 @@
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
 
 using System;
 
@@ -37,26 +37,27 @@ namespace System.Threading
 			return EnsureInitialized (ref target, GetDefaultCtorValue<T>);
 		}
 		
-		public static T EnsureInitialized<T> (ref T target, Func<T> initFunc) where T : class
+		public static T EnsureInitialized<T> (ref T target, Func<T> valueFactory) where T : class
 		{
-			Interlocked.CompareExchange (ref target, initFunc (), null);
+			if (target == null)
+				Interlocked.CompareExchange (ref target, valueFactory (), null);
 			
 			return target;
 		}
 
-		public static T EnsureInitialized<T> (ref T target, ref bool initialized, ref object syncRoot)
+		public static T EnsureInitialized<T> (ref T target, ref bool initialized, ref object syncLock)
 		{
-			return EnsureInitialized (ref target, ref initialized, ref syncRoot, GetDefaultCtorValue<T>);
+			return EnsureInitialized (ref target, ref initialized, ref syncLock, GetDefaultCtorValue<T>);
 		}
 		
-		public static T EnsureInitialized<T> (ref T target, ref bool initialized, ref object syncRoot, Func<T> initFunc)
+		public static T EnsureInitialized<T> (ref T target, ref bool initialized, ref object syncLock, Func<T> valueFactory)
 		{
-			lock (syncRoot) {
+			lock (syncLock) {
 				if (initialized)
 					return target;
 				
 				initialized = true;
-				return target = initFunc ();
+				return target = valueFactory ();
 			}
 		}
 		
@@ -69,6 +70,11 @@ namespace System.Threading
 				                                  + "public, parameterless constructor.");
 			}
 		}
+
+		internal static T GetDefaultValueFactory<T> ()
+		{
+			return default (T);
+		}
 	}
 }
 #endif
diff --git a/mcs/class/corlib/System.Threading/LockRecursionException.cs b/mcs/class/corlib/System.Threading/LockRecursionException.cs
index d70d24c..43bc3ed 100644
--- a/mcs/class/corlib/System.Threading/LockRecursionException.cs
+++ b/mcs/class/corlib/System.Threading/LockRecursionException.cs
@@ -25,7 +25,7 @@
  */
 
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
 
 using System;
 using System.Runtime.Serialization;
@@ -47,13 +47,13 @@ namespace System.Threading
 		{
 		}
 
-		public LockRecursionException (string message, Exception e) 
-			: base (message, e)
+		public LockRecursionException (string message, Exception innerException) 
+			: base (message, innerException)
 		{
 		}
 
-		protected LockRecursionException (SerializationInfo info, StreamingContext sc)
-			 : base (info, sc)
+		protected LockRecursionException (SerializationInfo info, StreamingContext context)
+			 : base (info, context)
 		{
 		}
 	}
diff --git a/mcs/class/corlib/System.Threading/ManualResetEvent.cs b/mcs/class/corlib/System.Threading/ManualResetEvent.cs
index b914e01..7aceafa 100644
--- a/mcs/class/corlib/System.Threading/ManualResetEvent.cs
+++ b/mcs/class/corlib/System.Threading/ManualResetEvent.cs
@@ -45,25 +45,5 @@ namespace System.Threading
 			: base(initialState, EventResetMode.ManualReset)
 		{
 		}
-
-		// Methods
-
-/* Need BOOTSTRAP_NET_2_0 because System.IO.FileStreamAsyncResult
- * wants to use the Set method that has moved to EventWaitHandle in
- * the 2.0 profile
- */
-#if BOOTSTRAP_NET_2_0
-		public bool Set()
-		{
-			CheckDisposed ();
-			return (NativeEventCalls.SetEvent_internal (Handle));
-		}
-
-		public bool Reset()
-		{
-			CheckDisposed ();
-			return(NativeEventCalls.ResetEvent_internal (Handle));
-		}
-#endif
 	}
 }
diff --git a/mcs/class/corlib/System.Threading/ManualResetEventSlim.cs b/mcs/class/corlib/System.Threading/ManualResetEventSlim.cs
index 5cf5ae3..30fec4a 100644
--- a/mcs/class/corlib/System.Threading/ManualResetEventSlim.cs
+++ b/mcs/class/corlib/System.Threading/ManualResetEventSlim.cs
@@ -22,38 +22,40 @@
 //
 //
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
 
 using System;
-using System.Diagnostics;
 
 namespace System.Threading
 {
+	[System.Diagnostics.DebuggerDisplayAttribute ("Set = {IsSet}")]
 	public class ManualResetEventSlim : IDisposable
 	{
 		const int isSet    = 1;
 		const int isNotSet = 0;
-		const int defaultSpinCount = 10;
+		const int defaultSpinCount = 100;
 
 		int state;
 		readonly int spinCount;
 
 		ManualResetEvent handle;
 
+		readonly static Watch sw = Watch.StartNew ();
+
 		public ManualResetEventSlim () : this (false, defaultSpinCount)
 		{
 		}
 
-		public ManualResetEventSlim (bool initState) : this (initState, defaultSpinCount)
+		public ManualResetEventSlim (bool initialState) : this (initialState, defaultSpinCount)
 		{
 		}
 
-		public ManualResetEventSlim (bool initState, int spinCount)
+		public ManualResetEventSlim (bool initialState, int spinCount)
 		{
 			if (spinCount < 0)
 				throw new ArgumentOutOfRangeException ("spinCount is less than 0", "spinCount");
 
-			this.state = initState ? isSet : isNotSet;
+			this.state = initialState ? isSet : isNotSet;
 			this.spinCount = spinCount;
 		}
 
@@ -71,14 +73,14 @@ namespace System.Threading
 
 		public void Reset ()
 		{
-			Interlocked.Exchange (ref state, isNotSet);
+			state = isNotSet;
 			if (handle != null)
 				handle.Reset ();
 		}
 
 		public void Set ()
 		{
-			Interlocked.Exchange (ref state, isSet);
+			state = isSet;
 			if (handle != null)
 				handle.Set ();
 		}
@@ -93,39 +95,39 @@ namespace System.Threading
 			return Wait (millisecondsTimeout, CancellationToken.None);
 		}
 
-		public bool Wait (TimeSpan ts)
+		public bool Wait (TimeSpan timeout)
 		{
-			return Wait ((int)ts.TotalMilliseconds, CancellationToken.None);
+			return Wait ((int)timeout.TotalMilliseconds, CancellationToken.None);
 		}
 
-		public void Wait (CancellationToken token)
+		public void Wait (CancellationToken cancellationToken)
 		{
-			Wait (-1, token);
+			Wait (-1, cancellationToken);
 		}
 
-		public bool Wait (int ms, CancellationToken token)
+		public bool Wait (int millisecondsTimeout, CancellationToken cancellationToken)
 		{
-			if (ms < -1)
+			if (millisecondsTimeout < -1)
 				throw new ArgumentOutOfRangeException ("millisecondsTimeout",
 				                                       "millisecondsTimeout is a negative number other than -1");
 
-			Watch s = Watch.StartNew ();
-			SpinWait sw = new SpinWait ();
+			long start = millisecondsTimeout == -1 ? 0 : sw.ElapsedMilliseconds;
+			SpinWait wait = new SpinWait ();
 
 			while (state == isNotSet) {
-				token.ThrowIfCancellationRequested ();
+				cancellationToken.ThrowIfCancellationRequested ();
 
-				if (ms > -1 && s.ElapsedMilliseconds > ms)
+				if (millisecondsTimeout > -1 && (sw.ElapsedMilliseconds - start) > millisecondsTimeout)
 					return false;
 
-				if (sw.Count < spinCount) {
-					sw.SpinOnce ();
+				if (wait.Count < spinCount) {
+					wait.SpinOnce ();
 				} else {
-					int waitTime = ms == -1 ? -1 : Math.Max (ms - (int)s.ElapsedMilliseconds, 1);
+					int waitTime = millisecondsTimeout == -1 ? -1 : Math.Max (millisecondsTimeout - (int)(sw.ElapsedMilliseconds - start) , 1);
 					WaitHandle handle = WaitHandle;
 					if (state == isSet)
 						return true;
-					if (WaitHandle.WaitAny (new[] { handle, token.WaitHandle }, waitTime, false) == 0)
+					if (WaitHandle.WaitAny (new[] { handle, cancellationToken.WaitHandle }, waitTime, false) == 0)
 						return true;
 				}
 			}
@@ -133,9 +135,9 @@ namespace System.Threading
 			return true;
 		}
 
-		public bool Wait (TimeSpan ts, CancellationToken token)
+		public bool Wait (TimeSpan timeout, CancellationToken cancellationToken)
 		{
-			return Wait ((int)ts.TotalMilliseconds, token);
+			return Wait ((int)timeout.TotalMilliseconds, cancellationToken);
 		}
 
 		public WaitHandle WaitHandle {
@@ -153,7 +155,7 @@ namespace System.Threading
 			Dispose(true);
 		}
 
-		protected virtual void Dispose(bool managedRes)
+		protected virtual void Dispose (bool disposing)
 		{
 
 		}
diff --git a/mcs/class/corlib/System.Threading/Monitor.cs b/mcs/class/corlib/System.Threading/Monitor.cs
index 6320b39..7be943f 100644
--- a/mcs/class/corlib/System.Threading/Monitor.cs
+++ b/mcs/class/corlib/System.Threading/Monitor.cs
@@ -178,17 +178,40 @@ namespace System.Threading
 		}
 
 #if NET_4_0 || MOONLIGHT
+		[MethodImplAttribute(MethodImplOptions.InternalCall)]
+		extern static void try_enter_with_atomic_var (object obj, int millisecondsTimeout, ref bool lockTaken);
+
 		public static void Enter (object obj, ref bool lockTaken)
 		{
+			TryEnter (obj, Timeout.Infinite, ref lockTaken);
+		}
+
+		public static void TryEnter (object obj, ref bool lockTaken)
+		{
+			TryEnter (obj, 0, ref lockTaken);
+		}
+
+		public static void TryEnter (object obj, TimeSpan timeout, ref bool lockTaken)
+		{
+			long ms = (long) timeout.TotalMilliseconds;
+			if (ms < Timeout.Infinite || ms > Int32.MaxValue)
+				throw new ArgumentOutOfRangeException ("timeout", "timeout out of range");
+			TryEnter (obj, (int)ms, ref lockTaken);
+		}
+
+		public static void TryEnter (object obj, int millisecondsTimeout, ref bool lockTaken)
+		{
 			if (obj == null)
 				throw new ArgumentNullException ("obj");
 			if (lockTaken)
 				throw new ArgumentException ("lockTaken");
 
-			Enter (obj);
-			// if Enter throws then lockTaken will be false
-			lockTaken = true;
-		}
+			if (millisecondsTimeout < 0 && millisecondsTimeout != Timeout.Infinite)
+				throw new ArgumentException ("negative value for millisecondsTimeout", "millisecondsTimeout");
+
+			try_enter_with_atomic_var (obj, millisecondsTimeout, ref lockTaken);
+		}		
+
 #endif
 	}
 }
diff --git a/mcs/class/corlib/System.Threading/SemaphoreSlim.cs b/mcs/class/corlib/System.Threading/SemaphoreSlim.cs
index 340d950..f766933 100644
--- a/mcs/class/corlib/System.Threading/SemaphoreSlim.cs
+++ b/mcs/class/corlib/System.Threading/SemaphoreSlim.cs
@@ -28,29 +28,30 @@ using System.Diagnostics;
 #if NET_4_0
 namespace System.Threading
 {
+	[System.Diagnostics.DebuggerDisplayAttribute ("Current Count = {currCount}")]
 	public class SemaphoreSlim : IDisposable
 	{
 		const int spinCount = 10;
 		const int deepSleepTime = 20;
 
-		readonly int max;
+		readonly int maxCount;
 		int currCount;
 		bool isDisposed;
 
 		EventWaitHandle handle;
 
-		public SemaphoreSlim (int initial) : this (initial, int.MaxValue)
+		public SemaphoreSlim (int initialCount) : this (initialCount, int.MaxValue)
 		{
 		}
 
-		public SemaphoreSlim (int initial, int max)
+		public SemaphoreSlim (int initialCount, int maxCount)
 		{
-			if (initial < 0 || initial > max || max < 0)
-				throw new ArgumentOutOfRangeException ("The initial  argument is negative, initial is greater than max, or max is not positive.");
+			if (initialCount < 0 || initialCount > maxCount || maxCount < 0)
+				throw new ArgumentOutOfRangeException ("The initialCount  argument is negative, initialCount is greater than maxCount, or maxCount is not positive.");
 
-			this.max = max;
-			this.currCount = initial;
-			this.handle = new ManualResetEvent (initial == 0);
+			this.maxCount = maxCount;
+			this.currCount = initialCount;
+			this.handle = new ManualResetEvent (initialCount == 0);
 		}
 
 		~SemaphoreSlim ()
@@ -63,7 +64,7 @@ namespace System.Threading
 			Dispose(true);
 		}
 
-		protected virtual void Dispose (bool managedRes)
+		protected virtual void Dispose (bool disposing)
 		{
 			isDisposed = true;
 		}
@@ -96,7 +97,7 @@ namespace System.Threading
 			do {
 				oldValue = currCount;
 				newValue = (currCount + releaseCount);
-				newValue = newValue > max ? max : newValue;
+				newValue = newValue > maxCount ? maxCount : newValue;
 			} while (Interlocked.CompareExchange (ref currCount, newValue, oldValue) != oldValue);
 
 			handle.Set ();
@@ -109,9 +110,9 @@ namespace System.Threading
 			Wait (CancellationToken.None);
 		}
 
-		public bool Wait (TimeSpan ts)
+		public bool Wait (TimeSpan timeout)
 		{
-			return Wait ((int)ts.TotalMilliseconds, CancellationToken.None);
+			return Wait ((int)timeout.TotalMilliseconds, CancellationToken.None);
 		}
 
 		public bool Wait (int millisecondsTimeout)
@@ -119,18 +120,18 @@ namespace System.Threading
 			return Wait (millisecondsTimeout, CancellationToken.None);
 		}
 
-		public void Wait (CancellationToken token)
+		public void Wait (CancellationToken cancellationToken)
 		{
-			Wait (-1, token);
+			Wait (-1, cancellationToken);
 		}
 
-		public bool Wait (TimeSpan ts, CancellationToken token)
+		public bool Wait (TimeSpan timeout, CancellationToken cancellationToken)
 		{
 			CheckState();
-			return Wait ((int)ts.TotalMilliseconds, token);
+			return Wait ((int)timeout.TotalMilliseconds, cancellationToken);
 		}
 
-		public bool Wait (int millisecondsTimeout, CancellationToken token)
+		public bool Wait (int millisecondsTimeout, CancellationToken cancellationToken)
 		{
 			CheckState ();
 			if (millisecondsTimeout < -1)
@@ -146,7 +147,7 @@ namespace System.Threading
 				int result;
 
 				do {
-					token.ThrowIfCancellationRequested ();
+					cancellationToken.ThrowIfCancellationRequested ();
 					if (stopCondition ())
 						return false;
 
@@ -168,7 +169,7 @@ namespace System.Threading
 				SpinWait wait = new SpinWait ();
 
 				while (Thread.VolatileRead (ref currCount) <= 0) {
-					token.ThrowIfCancellationRequested ();
+					cancellationToken.ThrowIfCancellationRequested ();
 					if (stopCondition ())
 						return false;
 
diff --git a/mcs/class/corlib/System.Threading/Snzi.cs b/mcs/class/corlib/System.Threading/Snzi.cs
deleted file mode 100644
index b63c4ae..0000000
--- a/mcs/class/corlib/System.Threading/Snzi.cs
+++ /dev/null
@@ -1,308 +0,0 @@
-// 
-// Snzi.cs
-//  
-// Author:
-//       Jérémie "Garuma" Laval <jeremie.laval at gmail.com>
-// 
-// Copyright (c) 2009 Jérémie "Garuma" Laval
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-#if NET_4_0
-using System;
-using System.IO;
-
-namespace System.Threading
-{
-	internal interface ISnziNode
-	{
-		bool Query { get; }
-		void Arrive ();
-		void Depart ();
-		bool Reset ();
-	}
-	
-	internal class Snzi
-	{
-		readonly ISnziNode root;
-		readonly ISnziNode[] nodes;
-		
-		readonly int count = Environment.ProcessorCount;
-			
-		public Snzi ()
-		{
-			nodes = new ISnziNode[count];
-			root = new RootNode ();
-			for (int i = 0; i < count; i++)
-				nodes[i] = new LeafNode (root);
-		}
-		
-		public void Increment ()
-		{	
-			ISnziNode node = nodes[GetRandomIndex ()];
-			node.Arrive ();
-		}
-		
-		public void Decrement ()
-		{
-			ISnziNode node = nodes[GetRandomIndex ()];
-			node.Depart ();
-		}
-		
-		public void Reset ()
-		{
-			ISnziNode node = nodes[GetRandomIndex ()];
-			node.Reset ();
-		}
-		
-		public bool IsSet {
-			get {
-				return !root.Query;
-			}
-		}
-		
-		int GetRandomIndex ()
-		{
-			return (Thread.CurrentThread.ManagedThreadId) % count;
-		}
-		
-		class UnsafeLeafNode : ISnziNode
-		{
-			ISnziNode parent;
-			int var;
-			
-			public UnsafeLeafNode (ISnziNode parent)
-			{
-				this.parent = parent;
-			}
-
-			#region ISnziNode implementation
-			public void Arrive ()
-			{
-				int c = var++;
-				
-				if (c == 0)
-					parent.Arrive ();
-			}
-			
-			public void Depart ()
-			{
-				int c = var--;
-				if (c == 1)
-					parent.Depart ();
-			}
-			
-			public bool Reset ()
-			{
-				throw new System.NotImplementedException();
-			}
-			
-			public bool Query {
-				get {
-					return parent.Query;
-				}
-			}
-			#endregion
-
-		}
-		
-		class LeafNode : ISnziNode
-		{
-			ISnziNode parent;
-			int var;
-			
-			public LeafNode (ISnziNode parent)
-			{
-				this.parent = parent;
-				this.var = 0;
-			}
-
-			#region ISnziNode implementation
-			public void Arrive ()
-			{
-				bool succ = false;
-				int undoArr = 0;
-				while (!succ) {
-					int x = var;
-					short c, v;
-					Decode (x, out c, out v);
-					
-					if (c >= 1)
-						if (Interlocked.CompareExchange (ref var, Encode ((short)(c + 1), v), x) == x)
-							break;
-					
-					if (c == 0) {
-						int temp = Encode (-1, (short)(v + 1));
-						if (Interlocked.CompareExchange (ref var, temp, x) == x) {
-							succ = true;
-							c = -1;
-							v += 1;
-							x = temp;
-						}
-					}
-					
-					if (c == - 1) {
-						parent.Arrive ();
-						if (Interlocked.CompareExchange (ref var, Encode (1, v), x) != x)
-							undoArr += 1;
-					}
-				}
-				for (int i = 0; i < undoArr; i++)
-					parent.Depart ();
-			}
-			
-			public void Depart ()
-			{
-				while (true) {
-					int x = var;
-					short c, v;
-					Decode (x, out c, out v);
-					
-					if (Interlocked.CompareExchange (ref var, Encode ((short)(c - 1), v), x) == x) {
-						if (c == 1)
-							parent.Depart ();
-						return;
-					}
-				}
-			}
-			
-			public bool Reset ()
-			{
-				throw new System.NotImplementedException();
-			}
-			
-			public bool Query {
-				get {
-					return parent.Query;
-				}
-			}
-			#endregion
-			
-			int Encode (short c, short v)
-			{
-				uint temp = 0;
-				temp |= (uint)c;
-				temp |= ((uint)v) << 16;
-				
-				return (int)temp;
-			}
-			
-			void Decode (int value, out short c, out short v)
-			{
-				uint temp = (uint)value;
-				c = (short)(temp & 0xFFFF);
-				v = (short)(temp >> 16);
-			}
-		}
-		
-		class RootNode : ISnziNode
-		{
-			int var = 0;
-			int state = 0;
-
-			#region ISnziNode implementation
-			public void Arrive ()
-			{
-				int temp, x = 0;
-				short c, v;
-				bool a;
-				
-				do {
-					x = var;
-					
-					Decode (x, out c, out a, out v);
-					
-					if (c == 0)
-						temp = Encode (1, true, (short)(v + 1));
-					else
-						temp = Encode ((short)(c + 1), a, v);
-				} while (Interlocked.CompareExchange (ref var, temp, x) != x);
-				
-				Decode (temp, out c, out a, out v);
-
-				if (a) {
-					while (true) {
-						int i = state;
-						int newI = (i & 0x7FFFFFFF) + 1;
-						newI = (int)(((uint)newI) | 0x80000000);
-						if (Interlocked.CompareExchange (ref state, newI, i) == i) {
-							break;
-						}
-					}
-					Interlocked.CompareExchange (ref var, Encode (c, false, v), temp);
-				}
-			}
-			
-			public void Depart ()
-			{
-				while (true) {
-					int x = var;
-					short c, v;
-					bool a;
-					Decode (x, out c, out a, out v);
-					
-					if (Interlocked.CompareExchange (ref var, Encode ((short)(c - 1), false, v), x) == x) {
-						if (c >= 2)
-							return;
-						while (true) {
-							int i = state;
-							if (((short)(var >> 16)) != v)
-								return;
-							int newI = (i & 0x7FFFFFFF) + 1;
-							if (Interlocked.CompareExchange (ref state, newI, i) == i) {
-								return;
-							}
-						}
-					}
-				}
-			}
-			
-			public bool Reset ()
-			{
-				throw new System.NotImplementedException();
-			}
-			
-			public bool Query {
-				get {
-					return (state & 0x80000000) > 0;
-				}
-			}
-			#endregion
-			
-			int Encode (short c, bool a, short v)
-			{
-				uint temp = 0;
-				temp |= (uint)c;
-				temp |= (uint)(a ? 0x8000 : 0);
-				temp |= ((uint)v) << 16;
-				
-				return (int)temp;
-			}
-			
-			void Decode (int value, out short c, out bool a, out short v)
-			{
-				uint temp = (uint)value;
-				c = (short)(temp & 0x7FFF);
-				a = (temp & 0x8000) > 0;
-				v = (short)(temp >> 16);
-			}
-		}
-	}
-}
-#endif
diff --git a/mcs/class/corlib/System.Threading/SpinLock.cs b/mcs/class/corlib/System.Threading/SpinLock.cs
index 4191acb..a14899c 100644
--- a/mcs/class/corlib/System.Threading/SpinLock.cs
+++ b/mcs/class/corlib/System.Threading/SpinLock.cs
@@ -22,11 +22,14 @@
 //
 //
 
+#if NET_4_0
+
 using System;
+using System.Collections.Concurrent;
 using System.Runtime.ConstrainedExecution;
 using System.Runtime.InteropServices;
+using System.Runtime.CompilerServices;
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0
 namespace System.Threading
 {
 	[StructLayout(LayoutKind.Explicit)]
@@ -39,9 +42,13 @@ namespace System.Threading
 		public int Users;
 	}
 
-	// Implement the ticket SpinLock algorithm described on http://locklessinc.com/articles/locks/
-	// This lock is usable on both endianness
-	// TODO: some 32 bits platform apparently doesn't support CAS with 64 bits value
+	/* Implement the ticket SpinLock algorithm described on http://locklessinc.com/articles/locks/
+	 * This lock is usable on both endianness.
+	 * All the try/finally patterns in this class and various extra gimmicks compared to the original
+	 * algorithm are here to avoid problems caused by asynchronous exceptions.
+	 */
+	[System.Diagnostics.DebuggerDisplay ("IsHeld = {IsHeld}")]
+	[System.Diagnostics.DebuggerTypeProxy ("System.Threading.SpinLock+SystemThreading_SpinLockDebugView")]
 	public struct SpinLock
 	{
 		TicketType ticket;
@@ -49,6 +56,10 @@ namespace System.Threading
 		int threadWhoTookLock;
 		readonly bool isThreadOwnerTrackingEnabled;
 
+		static Watch sw = Watch.StartNew ();
+
+		ConcurrentOrderedList<int> stallTickets;
+
 		public bool IsThreadOwnerTrackingEnabled {
 			get {
 				return isThreadOwnerTrackingEnabled;
@@ -72,14 +83,15 @@ namespace System.Threading
 			}
 		}
 
-		public SpinLock (bool trackId)
+		public SpinLock (bool enableThreadOwnerTracking)
 		{
-			this.isThreadOwnerTrackingEnabled = trackId;
+			this.isThreadOwnerTrackingEnabled = enableThreadOwnerTracking;
 			this.threadWhoTookLock = 0;
 			this.ticket = new TicketType ();
+			this.stallTickets = null;
 		}
 
-		[MonoTODO("This method is not rigorously correct. Need CER treatment")]
+		[MonoTODO ("Not safe against async exceptions")]
 		public void Enter (ref bool lockTaken)
 		{
 			if (lockTaken)
@@ -87,71 +99,99 @@ namespace System.Threading
 			if (isThreadOwnerTrackingEnabled && IsHeldByCurrentThread)
 				throw new LockRecursionException ();
 
-			int slot = Interlocked.Increment (ref ticket.Users) - 1;
+			int slot = -1;
 
-			SpinWait wait = new SpinWait ();
-			while (slot != ticket.Value)
-				wait.SpinOnce ();
-			
-			lockTaken = true;
-			
-			threadWhoTookLock = Thread.CurrentThread.ManagedThreadId;
+			RuntimeHelpers.PrepareConstrainedRegions ();
+			try {
+				slot = Interlocked.Increment (ref ticket.Users) - 1;
+
+				SpinWait wait = new SpinWait ();
+				while (slot != ticket.Value) {
+					wait.SpinOnce ();
+
+					while (stallTickets != null && stallTickets.TryRemove (ticket.Value))
+						++ticket.Value;
+				}
+			} finally {
+				if (slot == ticket.Value) {
+					lockTaken = true;
+					threadWhoTookLock = Thread.CurrentThread.ManagedThreadId;
+				} else if (slot != -1) {
+					// We have been interrupted, initialize stallTickets
+					if (stallTickets == null)
+						Interlocked.CompareExchange (ref stallTickets, new ConcurrentOrderedList<int> (), null);
+					stallTickets.TryAdd (slot);
+				}
+			}
 		}
 
-		[MonoTODO("This method is not rigorously correct. Need CER treatment")]
 		public void TryEnter (ref bool lockTaken)
 		{
 			TryEnter (0, ref lockTaken);
 		}
 
-		[MonoTODO("This method is not rigorously correct. Need CER treatment")]
 		public void TryEnter (TimeSpan timeout, ref bool lockTaken)
 		{
 			TryEnter ((int)timeout.TotalMilliseconds, ref lockTaken);
 		}
 
-		[MonoTODO("This method is not rigorously correct. Need CER treatment")]
-		public void TryEnter (int milliSeconds, ref bool lockTaken)
+		public void TryEnter (int millisecondsTimeout, ref bool lockTaken)
 		{
-			if (milliSeconds < -1)
+			if (millisecondsTimeout < -1)
 				throw new ArgumentOutOfRangeException ("milliSeconds", "millisecondsTimeout is a negative number other than -1");
 			if (lockTaken)
 				throw new ArgumentException ("lockTaken", "lockTaken must be initialized to false");
 			if (isThreadOwnerTrackingEnabled && IsHeldByCurrentThread)
 				throw new LockRecursionException ();
 
-			Watch sw = Watch.StartNew ();
+			long start = millisecondsTimeout == -1 ? 0 : sw.ElapsedMilliseconds;
+			bool stop = false;
 
 			do {
+				while (stallTickets != null && stallTickets.TryRemove (ticket.Value))
+					++ticket.Value;
+
 				long u = ticket.Users;
 				long totalValue = (u << 32) | u;
 				long newTotalValue
 					= BitConverter.IsLittleEndian ? (u << 32) | (u + 1) : ((u + 1) << 32) | u;
 				
-				lockTaken = Interlocked.CompareExchange (ref ticket.TotalValue, newTotalValue, totalValue) == totalValue;
+				RuntimeHelpers.PrepareConstrainedRegions ();
+				try {}
+				finally {
+					lockTaken = Interlocked.CompareExchange (ref ticket.TotalValue, newTotalValue, totalValue) == totalValue;
 				
-				if (lockTaken) {
-					threadWhoTookLock = Thread.CurrentThread.ManagedThreadId;
-					break;
+					if (lockTaken) {
+						threadWhoTookLock = Thread.CurrentThread.ManagedThreadId;
+						stop = true;
+					}
 				}
-			} while (milliSeconds == -1 || (milliSeconds > 0 && sw.ElapsedMilliseconds < milliSeconds));
+	        } while (!stop && (millisecondsTimeout == -1 || (sw.ElapsedMilliseconds - start) < millisecondsTimeout));
 		}
 
+		[ReliabilityContract (Consistency.WillNotCorruptState, Cer.Success)]
 		public void Exit ()
 		{
 			Exit (false);
 		}
 
-		public void Exit (bool flushReleaseWrites)
+		[ReliabilityContract (Consistency.WillNotCorruptState, Cer.Success)]
+		public void Exit (bool useMemoryBarrier)
 		{
-			if (isThreadOwnerTrackingEnabled && !IsHeldByCurrentThread)
-				throw new SynchronizationLockException ("Current thread is not the owner of this lock");
-
-			threadWhoTookLock = int.MinValue;
-			if (flushReleaseWrites)
-				Interlocked.Increment (ref ticket.Value);
-			else
-				ticket.Value++;
+			RuntimeHelpers.PrepareConstrainedRegions ();
+			try {}
+			finally {
+				if (isThreadOwnerTrackingEnabled && !IsHeldByCurrentThread)
+					throw new SynchronizationLockException ("Current thread is not the owner of this lock");
+
+				threadWhoTookLock = int.MinValue;
+				do {
+					if (useMemoryBarrier)
+						Interlocked.Increment (ref ticket.Value);
+					else
+						ticket.Value++;
+				} while (stallTickets != null && stallTickets.TryRemove (ticket.Value));
+			}
 		}
 	}
 
diff --git a/mcs/class/corlib/System.Threading/SpinWait.cs b/mcs/class/corlib/System.Threading/SpinWait.cs
index d46376b..1368367 100644
--- a/mcs/class/corlib/System.Threading/SpinWait.cs
+++ b/mcs/class/corlib/System.Threading/SpinWait.cs
@@ -22,7 +22,7 @@
 //
 //
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
 using System;
 
 namespace System.Threading
@@ -30,45 +30,47 @@ namespace System.Threading
 	public struct SpinWait
 	{
 		// The number of step until SpinOnce yield on multicore machine
-		const           int  step = 5;
-		const           int  maxTime = 50;
+		const           int  step = 10;
+		const           int  maxTime = 200;
 		static readonly bool isSingleCpu = (Environment.ProcessorCount == 1);
 
 		int ntime;
 
 		public void SpinOnce ()
 		{
+			ntime += 1;
+
 			if (isSingleCpu) {
 				// On a single-CPU system, spinning does no good
 				Thread.Yield ();
 			} else {
-				if ((ntime = ntime == maxTime ? maxTime : ntime + 1) % step == 0)
+				if (ntime % step == 0)
 					Thread.Yield ();
 				else
 					// Multi-CPU system might be hyper-threaded, let other thread run
-					Thread.SpinWait (ntime << 1);
+					Thread.SpinWait (Math.Min (ntime, maxTime) << 1);
 			}
 		}
 
-		public static void SpinUntil (Func<bool> predicate)
+		public static void SpinUntil (Func<bool> condition)
 		{
 			SpinWait sw = new SpinWait ();
-			while (!predicate ())
+			while (!condition ())
 				sw.SpinOnce ();
 		}
 
-		public static bool SpinUntil (Func<bool> predicate, TimeSpan ts)
+		public static bool SpinUntil (Func<bool> condition, TimeSpan timeout)
 		{
-			return SpinUntil (predicate, (int)ts.TotalMilliseconds);
+			return SpinUntil (condition, (int)timeout.TotalMilliseconds);
 		}
 
-		public static bool SpinUntil (Func<bool> predicate, int milliseconds)
+		public static bool SpinUntil (Func<bool> condition, int millisecondsTimeout)
 		{
 			SpinWait sw = new SpinWait ();
 			Watch watch = Watch.StartNew ();
 
-			while (!predicate ()) {
-				if (watch.ElapsedMilliseconds > milliseconds)
+			while (!condition ()) {
+				if (watch.ElapsedMilliseconds > millisecondsTimeout)
 					return false;
 				sw.SpinOnce ();
 			}
diff --git a/mcs/class/corlib/System.Threading/Thread.cs b/mcs/class/corlib/System.Threading/Thread.cs
index 355fb0e..7c4b1c2 100644
--- a/mcs/class/corlib/System.Threading/Thread.cs
+++ b/mcs/class/corlib/System.Threading/Thread.cs
@@ -51,7 +51,7 @@ namespace System.Threading {
 		internal IntPtr system_thread_handle;
 
 		/* Note this is an opaque object (an array), not a CultureInfo */
-		private object cached_culture_info;
+		private object cached_culture_info; /*FIXME remove this on the next corlib version bump*/
 		private IntPtr unused0;
 		internal bool threadpool_thread;
 		/* accessed only from unmanaged code */
@@ -111,17 +111,6 @@ namespace System.Threading {
 		internal byte[] _serialized_principal;
 		internal int _serialized_principal_version;
 
-		internal byte[] serialized_culture_info;
-		internal byte[] serialized_ui_culture_info;
-
-		/* If the current_lcid() isn't known by CultureInfo,
-		 * it will throw an exception which may cause
-		 * String.Concat to try and recursively look up the
-		 * CurrentCulture, which will throw an exception, etc.
-		 * Use a boolean to short-circuit this scenario.
-		 */
-		internal bool in_currentculture=false;
-
 		// Closes the system thread handle
 		[MethodImplAttribute(MethodImplOptions.InternalCall)]
 		private extern void Thread_free_internal(IntPtr handle);
@@ -146,6 +135,8 @@ namespace System.Threading {
 
 		IPrincipal principal;
 		int principal_version;
+		CultureInfo current_culture;
+		CultureInfo current_ui_culture;
 
 		// the name of local_slots, current_thread and _ec is
 		// important because they are used by the runtime.
@@ -369,7 +360,7 @@ namespace System.Threading {
 			ResetAbort_internal ();
 		}
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
 		[HostProtectionAttribute (SecurityAction.LinkDemand, Synchronization = true, ExternalThreading = true)]
 		[MethodImplAttribute(MethodImplOptions.InternalCall)]
 		public extern static bool Yield ();
@@ -430,73 +421,13 @@ namespace System.Threading {
 		//[MethodImplAttribute (MethodImplOptions.InternalCall)]
 		//private static extern int current_lcid ();
 
-		[MethodImplAttribute (MethodImplOptions.InternalCall)]
-		private extern static CultureInfo GetCachedCurrentCulture (InternalThread thread);
-
-		[MethodImplAttribute (MethodImplOptions.InternalCall)]
-		private extern void SetCachedCurrentCulture (CultureInfo culture);
-
-		[MethodImplAttribute (MethodImplOptions.InternalCall)]
-		private extern static CultureInfo GetCachedCurrentUICulture (InternalThread thread);
-
-		[MethodImplAttribute (MethodImplOptions.InternalCall)]
-		private extern void SetCachedCurrentUICulture (CultureInfo culture);
-
-		/* FIXME: in_currentculture exists once, but
-		   culture_lock is once per appdomain.  Is it correct
-		   to lock this way? */
-		static object culture_lock = new object ();
-		
-		/*
-		 * Thread objects are shared between appdomains, and CurrentCulture
-		 * should always return an object in the calling appdomain. See bug
-		 * http://bugzilla.ximian.com/show_bug.cgi?id=50049 for more info.
-		 * This is hard to implement correctly and efficiently, so the current
-		 * implementation is not perfect: changes made in one appdomain to the 
-		 * state of the current cultureinfo object are not visible to other 
-		 * appdomains.
-		 */		
 		public CultureInfo CurrentCulture {
 			get {
-				if (Internal.in_currentculture)
-					/* Bail out */
-					return CultureInfo.InvariantCulture;
-
-				CultureInfo culture = GetCachedCurrentCulture (Internal);
+				CultureInfo culture = current_culture;
 				if (culture != null)
 					return culture;
 
-				byte[] arr = ByteArrayToCurrentDomain (Internal.serialized_culture_info);
-				if (arr == null) {
-					lock (culture_lock) {
-						Internal.in_currentculture=true;
-						culture = CultureInfo.ConstructCurrentCulture ();
-						//
-						// Don't serialize the culture in this case to avoid
-						// initializing the serialization infrastructure in the
-						// common case when the culture is not set explicitly.
-						//
-						SetCachedCurrentCulture (culture);
-						Internal.in_currentculture = false;
-						NumberFormatter.SetThreadCurrentCulture (culture);
-						return culture;
-					}
-				}
-
-				/*
-				 * No cultureinfo object exists for this domain, so create one
-				 * by deserializing the serialized form.
-				 */
-				Internal.in_currentculture = true;
-				try {
-					BinaryFormatter bf = new BinaryFormatter ();
-					MemoryStream ms = new MemoryStream (arr);
-					culture = (CultureInfo)bf.Deserialize (ms);
-					SetCachedCurrentCulture (culture);
-				} finally {
-					Internal.in_currentculture = false;
-				}
-
+				current_culture = culture = CultureInfo.ConstructCurrentCulture ();
 				NumberFormatter.SetThreadCurrentCulture (culture);
 				return culture;
 			}
@@ -506,117 +437,26 @@ namespace System.Threading {
 				if (value == null)
 					throw new ArgumentNullException ("value");
 
-				CultureInfo culture = GetCachedCurrentCulture (Internal);
-				if (culture == value)
-					return;
-
 				value.CheckNeutral ();
-				Internal.in_currentculture = true;
-				try {
-					SetCachedCurrentCulture (value);
-
-					byte[] serialized_form = null;
-
-					if (value.IsReadOnly && value.cached_serialized_form != null) {
-						serialized_form = value.cached_serialized_form;
-					} else {
-						BinaryFormatter bf = new BinaryFormatter();
-						MemoryStream ms = new MemoryStream ();
-						bf.Serialize (ms, value);
-
-						serialized_form = ms.GetBuffer ();
-						if (value.IsReadOnly)
-							value.cached_serialized_form = serialized_form;
-					}
-
-					Internal.serialized_culture_info = ByteArrayToRootDomain (serialized_form);
-				} finally {
-					Internal.in_currentculture = false;
-				}
+				current_culture = value;
 				NumberFormatter.SetThreadCurrentCulture (value);
 			}
 		}
 
 		public CultureInfo CurrentUICulture {
 			get {
-				if (Internal.in_currentculture)
-					/* Bail out */
-					return CultureInfo.InvariantCulture;
-
-				CultureInfo culture = GetCachedCurrentUICulture (Internal);
+				CultureInfo culture = current_ui_culture;
 				if (culture != null)
 					return culture;
 
-				byte[] arr = ByteArrayToCurrentDomain (Internal.serialized_ui_culture_info);
-				if (arr == null) {
-					lock (culture_lock) {
-						Internal.in_currentculture=true;
-						/* We don't
-						 * distinguish
-						 * between
-						 * System and
-						 * UI cultures
-						 */
-						culture = CultureInfo.ConstructCurrentUICulture ();
-						//
-						// Don't serialize the culture in this case to avoid
-						// initializing the serialization infrastructure in the
-						// common case when the culture is not set explicitly.
-						//
-						SetCachedCurrentUICulture (culture);
-						Internal.in_currentculture = false;
-						return culture;
-					}
-				}
-
-				/*
-				 * No cultureinfo object exists for this domain, so create one
-				 * by deserializing the serialized form.
-				 */
-				Internal.in_currentculture = true;
-				try {
-					BinaryFormatter bf = new BinaryFormatter ();
-					MemoryStream ms = new MemoryStream (arr);
-					culture = (CultureInfo)bf.Deserialize (ms);
-					SetCachedCurrentUICulture (culture);
-				}
-				finally {
-					Internal.in_currentculture = false;
-				}
-
+				current_ui_culture = culture = CultureInfo.ConstructCurrentUICulture ();
 				return culture;
 			}
 			
 			set {
 				if (value == null)
 					throw new ArgumentNullException ("value");
-
-				CultureInfo culture = GetCachedCurrentUICulture (Internal);
-				if (culture == value)
-					return;
-
-				Internal.in_currentculture = true;
-				try {
-					SetCachedCurrentUICulture (value);
-
-					byte[] serialized_form = null;
-
-					if (value.IsReadOnly && value.cached_serialized_form != null) {
-						serialized_form = value.cached_serialized_form;
-					} else {
-						BinaryFormatter bf = new BinaryFormatter();
-						MemoryStream ms = new MemoryStream ();
-						bf.Serialize (ms, value);
-
-						serialized_form = ms.GetBuffer ();
-						if (value.IsReadOnly)
-							value.cached_serialized_form = serialized_form;
-					}
-
-					Internal.serialized_ui_culture_info = ByteArrayToRootDomain (serialized_form);
-				} finally {
-					Internal.in_currentculture = false;
-				}
+				current_ui_culture = value;
 			}
 		}
 
@@ -1022,6 +862,10 @@ namespace System.Threading {
 		public int ManagedThreadId {
 			[ReliabilityContractAttribute (Consistency.WillNotCorruptState, Cer.Success)]
 			get {
+				// Fastpath
+				if (internal_thread != null && internal_thread.managed_id != 0)
+					return internal_thread.managed_id;
+
 				if (Internal.managed_id == 0) {
 					int new_managed_id = GetNewManagedId ();
 					
diff --git a/mcs/class/corlib/System.Threading/ThreadLocal.cs b/mcs/class/corlib/System.Threading/ThreadLocal.cs
index 9fb6bc7..d5fcad9 100644
--- a/mcs/class/corlib/System.Threading/ThreadLocal.cs
+++ b/mcs/class/corlib/System.Threading/ThreadLocal.cs
@@ -32,11 +32,12 @@ using System.Security.Permissions;
 
 namespace System.Threading
 {
-	[HostProtectionAttribute(SecurityAction.LinkDemand, Synchronization = true, 
-	                         ExternalThreading = true)]
+	[HostProtection (SecurityAction.LinkDemand, Synchronization = true, ExternalThreading = true)]
+	[System.Diagnostics.DebuggerDisplay ("IsValueCreated={IsValueCreated}, Value={ValueForDebugDisplay}")]
+	[System.Diagnostics.DebuggerTypeProxy ("System.Threading.SystemThreading_ThreadLocalDebugView`1")]
 	public class ThreadLocal<T> : IDisposable
 	{
-		readonly Func<T> initializer;
+		readonly Func<T> valueFactory;
 		LocalDataStoreSlot localStore;
 		Exception cachedException;
 		
@@ -47,17 +48,17 @@ namespace System.Threading
 			public Func<T> Getter;
 		}
 		
-		public ThreadLocal () : this (LazyInitializer.GetDefaultCtorValue<T>)
+		public ThreadLocal () : this (LazyInitializer.GetDefaultValueFactory<T>)
 		{
 		}
 
-		public ThreadLocal (Func<T> initializer)
+		public ThreadLocal (Func<T> valueFactory)
 		{
-			if (initializer == null)
-				throw new ArgumentNullException ("initializer");
+			if (valueFactory == null)
+				throw new ArgumentNullException ("valueFactory");
 			
 			localStore = Thread.AllocateDataSlot ();
-			this.initializer = initializer;
+			this.valueFactory = valueFactory;
 		}
 		
 		public void Dispose ()
@@ -65,7 +66,7 @@ namespace System.Threading
 			Dispose (true);
 		}
 		
-		protected virtual void Dispose (bool dispManagedRes)
+		protected virtual void Dispose (bool disposing)
 		{
 			
 		}
@@ -76,7 +77,8 @@ namespace System.Threading
 				return IsInitializedThreadLocal ();
 			}
 		}
-		
+
+		[System.Diagnostics.DebuggerBrowsableAttribute (System.Diagnostics.DebuggerBrowsableState.Never)]
 		public T Value {
 			get {
 				ThrowIfNeeded ();
@@ -95,7 +97,6 @@ namespace System.Threading
 		{
 			return string.Format ("[ThreadLocal: IsValueCreated={0}, Value={1}]", IsValueCreated, Value);
 		}
-
 		
 		T GetValueThreadLocal ()
 		{
@@ -133,7 +134,7 @@ namespace System.Threading
 		DataSlotWrapper DataSlotCreator ()
 		{
 			DataSlotWrapper wrapper = new DataSlotWrapper ();
-			Func<T> valSelector = initializer;
+			Func<T> valSelector = valueFactory;
 	
 			wrapper.Getter = delegate {
 				wrapper.Creating = true;
diff --git a/mcs/class/corlib/System.Threading/Timer.cs b/mcs/class/corlib/System.Threading/Timer.cs
index a20bade..94853b4 100644
--- a/mcs/class/corlib/System.Threading/Timer.cs
+++ b/mcs/class/corlib/System.Threading/Timer.cs
@@ -186,6 +186,7 @@ namespace System.Threading
 		sealed class Scheduler {
 			static Scheduler instance;
 			SortedList list;
+			ManualResetEvent changed;
 
 			static Scheduler ()
 			{
@@ -198,6 +199,7 @@ namespace System.Threading
 
 			private Scheduler ()
 			{
+				changed = new ManualResetEvent (false);
 				list = new SortedList (new TimerComparer (), 1024);
 				Thread thread = new Thread (SchedulerThread);
 				thread.IsBackground = true;
@@ -219,6 +221,7 @@ namespace System.Threading
 
 			public void Change (Timer timer, long new_next_run)
 			{
+				bool wake = false;
 				lock (this) {
 					InternalRemove (timer);
 					if (new_next_run == Int64.MaxValue) {
@@ -231,10 +234,11 @@ namespace System.Threading
 						timer.next_run = new_next_run;
 						Add (timer);
 						// If this timer is next in line, wake up the scheduler
-						if (list.GetByIndex (0) == timer)
-							Monitor.Pulse (this);
+						wake = (list.GetByIndex (0) == timer);
 					}
 				}
+				if (wake)
+					changed.Set ();
 			}
 
 			// lock held by caller
@@ -310,8 +314,10 @@ namespace System.Threading
 				Thread.CurrentThread.Name = "Timer-Scheduler";
 				ArrayList new_time = new ArrayList (512);
 				while (true) {
+					int ms_wait = -1;
 					long ticks = DateTime.GetTimeMonotonic ();
 					lock (this) {
+						changed.Reset ();
 						//PrintList ();
 						int i;
 						int count = list.Count;
@@ -359,17 +365,16 @@ namespace System.Threading
 							min_next_run = ((Timer) list.GetByIndex (0)).next_run;
 
 						//PrintList ();
-						int ms_wait = -1;
+						ms_wait = -1;
 						if (min_next_run != Int64.MaxValue) {
 							long diff = min_next_run - DateTime.GetTimeMonotonic (); 
 							ms_wait = (int)(diff / TimeSpan.TicksPerMillisecond);
 							if (ms_wait < 0)
 								ms_wait = 0;
 						}
-
-						// Wait until due time or a timer is changed and moves from/to the first place in the list.
-						Monitor.Wait (this, ms_wait);
 					}
+					// Wait until due time or a timer is changed and moves from/to the first place in the list.
+					changed.WaitOne (ms_wait);
 				}
 			}
 
diff --git a/mcs/class/corlib/System.Threading/WaitHandle.cs b/mcs/class/corlib/System.Threading/WaitHandle.cs
index fa1804c..0c4daaf 100644
--- a/mcs/class/corlib/System.Threading/WaitHandle.cs
+++ b/mcs/class/corlib/System.Threading/WaitHandle.cs
@@ -215,10 +215,12 @@ namespace System.Threading
 
 #if NET_4_0
 		public void Dispose ()
+#else		
+		void IDisposable.Dispose ()
+#endif
 		{
 			Close ();
 		}
-#endif
 
 		public const int WaitTimeout = 258;
 
@@ -402,12 +404,6 @@ namespace System.Threading
 		protected static readonly IntPtr InvalidHandle = (IntPtr) (-1);
 		bool disposed = false;
 
-		void IDisposable.Dispose() {
-			Dispose(true);
-			// Take yourself off the Finalization queue
-			GC.SuppressFinalize(this);
-		}
-		
 		~WaitHandle() {
 			Dispose(false);
 		}
diff --git a/mcs/class/corlib/System.Threading/Watch.cs b/mcs/class/corlib/System.Threading/Watch.cs
index 86a06d7..a158749 100644
--- a/mcs/class/corlib/System.Threading/Watch.cs
+++ b/mcs/class/corlib/System.Threading/Watch.cs
@@ -22,7 +22,7 @@
 //
 //
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
 using System;
 
 namespace System.Threading
diff --git a/mcs/class/corlib/System/Action.cs b/mcs/class/corlib/System/Action.cs
index e1edad0..d8bbfa0 100644
--- a/mcs/class/corlib/System/Action.cs
+++ b/mcs/class/corlib/System/Action.cs
@@ -31,7 +31,7 @@ using System.Runtime.CompilerServices;
 
 namespace System
 {
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
 	[TypeForwardedFrom (Consts.AssemblySystemCore_3_5)]
 	public delegate void Action ();
 	
diff --git a/mcs/class/corlib/System/AggregateException.cs b/mcs/class/corlib/System/AggregateException.cs
index a4db6e5..d7d67a0 100644
--- a/mcs/class/corlib/System/AggregateException.cs
+++ b/mcs/class/corlib/System/AggregateException.cs
@@ -22,7 +22,7 @@
 //
 //
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
 using System;
 using System.Collections.ObjectModel;
 using System.Collections.Generic;
@@ -30,7 +30,9 @@ using System.Runtime.Serialization;
 
 namespace System
 {
+
 	[System.SerializableAttribute]
+	[System.Diagnostics.DebuggerDisplay ("Count = {InnerExceptions.Count}")]
 	public class AggregateException : Exception
 	{
 		List<Exception> innerExceptions;
@@ -43,12 +45,12 @@ namespace System
 		{
 		}
 		
-		public AggregateException (string message, Exception e): base (message, e)
+		public AggregateException (string message, Exception innerException): base (message, innerException)
 		{
 		}
 		
-		protected AggregateException (SerializationInfo info, StreamingContext ctx)
-			: base (info, ctx)
+		protected AggregateException (SerializationInfo info, StreamingContext context)
+			: base (info, context)
 		{
 		}
 		
@@ -67,10 +69,10 @@ namespace System
 		{
 		}
 		
-		public AggregateException (string message, IEnumerable<Exception> inner)
-			: base(GetFormattedMessage(message, inner))
+		public AggregateException (string message, IEnumerable<Exception> innerExceptions)
+			: base(GetFormattedMessage(message, innerExceptions))
 		{
-			this.innerExceptions = new List<Exception> (inner);
+			this.innerExceptions = new List<Exception> (innerExceptions);
 		}
 		
 		public AggregateException Flatten ()
@@ -89,12 +91,12 @@ namespace System
 			return new AggregateException (inner);
 		}
 		
-		public void Handle (Func<Exception, bool> handler)
+		public void Handle (Func<Exception, bool> predicate)
 		{
 			List<Exception> failed = new List<Exception> ();
 			foreach (var e in innerExceptions) {
 				try {
-					if (!handler (e))
+					if (!predicate (e))
 						failed.Add (e);
 				} catch {
 					throw new AggregateException (failed);
@@ -114,10 +116,21 @@ namespace System
 		{
 			return this.Message;
 		}
+
+		public override Exception GetBaseException ()
+		{
+			return this;
+		}
+
+		public override void GetObjectData (SerializationInfo info,	StreamingContext context)
+		{
+			throw new NotImplementedException ();
+		}
 		
-		const string baseMessage = "Exception(s) occurred : {0}.";
 		static string GetFormattedMessage (string customMessage, IEnumerable<Exception> inner)
 		{
+			const string baseMessage = "Exception(s) occurred : {0}.";
+			
 			System.Text.StringBuilder finalMessage
 				= new System.Text.StringBuilder (string.Format (baseMessage, customMessage));
 			foreach (Exception e in inner) {
diff --git a/mcs/class/corlib/System/AppDomain.cs b/mcs/class/corlib/System/AppDomain.cs
index 9e6f2e4..43f144c 100644
--- a/mcs/class/corlib/System/AppDomain.cs
+++ b/mcs/class/corlib/System/AppDomain.cs
@@ -226,7 +226,7 @@ namespace System {
 
 #if NET_4_0
 		public PermissionSet PermissionSet {
-			get { return this.GrantedPermissionSet; }
+			get { return _granted ?? (_granted = new PermissionSet (PermissionState.Unrestricted)); }
 		}
 #endif
 
@@ -390,11 +390,11 @@ namespace System {
 			                                     culture, activationAttributes, null);
 		}
 
-		public object CreateInstanceFromAndUnwrap (string assemblyName, string typeName, bool ignoreCase,
+		public object CreateInstanceFromAndUnwrap (string assemblyFile, string typeName, bool ignoreCase,
 		                                           BindingFlags bindingAttr, Binder binder, object[] args,
 		                                           CultureInfo culture, object[] activationAttributes)
 		{
-			ObjectHandle oh = CreateInstanceFrom (assemblyName, typeName, ignoreCase, bindingAttr, binder, args,
+			ObjectHandle oh = CreateInstanceFrom (assemblyFile, typeName, ignoreCase, bindingAttr, binder, args,
 				culture, activationAttributes);
 
 			return (oh != null) ? oh.Unwrap () : null;
@@ -1374,7 +1374,7 @@ namespace System {
 		[method: SecurityPermission (SecurityAction.LinkDemand, ControlAppDomain = true)]
 		public event UnhandledExceptionEventHandler UnhandledException;
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
 		[MonoTODO]
 		public bool IsHomogenous {
 			get { return true; }
@@ -1537,13 +1537,22 @@ namespace System {
 #endif
 
 #if NET_4_0 || MOONLIGHT
-		[MonoTODO ("Currently always returns false")]
+		List<string> compatibility_switch;
+
 		public bool? IsCompatibilitySwitchSet (string value)
 		{
 			if (value == null)
 				throw new ArgumentNullException ("value");
+
 			// default (at least for SL4) is to return false for unknown values (can't get a null out of it)
-			return false;
+			return ((compatibility_switch != null) && compatibility_switch.Contains (value));
+		}
+
+		internal void SetCompatibilitySwitch (string value)
+		{
+			if (compatibility_switch == null)
+				compatibility_switch = new List<string> ();
+			compatibility_switch.Add (value);
 		}
 
 		[MonoTODO ("Currently always returns false")]
diff --git a/mcs/class/corlib/System/ChangeLog b/mcs/class/corlib/System/ChangeLog
index 7546fcf..fd3bb24 100644
--- a/mcs/class/corlib/System/ChangeLog
+++ b/mcs/class/corlib/System/ChangeLog
@@ -1,7 +1,138 @@
+2011-01-07  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Properly search overwrites for custom attributes.
+
+2011-01-06  Zoltan Varga  <vargaz at gmail.com>
+
+	Change some usages of ArrayList to List<T> to avoid calls to the
+	slow ArrayList.ToArray(Type) method.
+
+2011-01-04  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* String.cs: Silverlight 4 use the same API as FX4 for Join
+
+2011-01-03  Miguel de Icaza  <miguel at gnome.org>
+
+	[mscorlib/getfolderpath] Special-case MacOS X.
+
+	The following changes were done to specially support OSX: *
+	MyMusic on OSX is ~/Music * MyPictures on OSX is ~/Pictures *
+	Fonts on OSX is ~/Library/Fonts * Favorites on OSX is
+	~/Library/Favorites * ProgramFiles on OSX is /Applications *
+	InternetCache on OSX is ~/Library/Caches
+
+	The documentation has been updated accordingly.
+
+2011-01-03  Miguel de Icaza  <miguel at gnome.org>
+
+	[mscorlib/getfolderpath] Remove MonoTODO
+
+2011-01-03  Miguel de Icaza  <miguel at gnome.org>
+
+	[GetFolderPath] Handful of .NET 4 changes
+
+	* Actually use the SpecialFolderPathOptions where we need them ->
+	Create is acknowledged -> DoNotVerify is ignored, as Mono
+	historically did not throw an exception on missing directories. *
+	Rename InternalGetFolderPath to UnixGetFolderPath as this is what
+	it is. * Fix existing references to the code * Fix indentation in
+	routine that was never properly formatted (ReadXdgUserDir)
+
+2011-01-03  Miguel de Icaza  <miguel at gnome.org>
+
+	[mscorlib] inside mscorlib Platform's value will be correct for
+	OSX, but userland still gets Unix.
+
+	This change allows mscorlib to get the real PlatformID, to split
+	code between OSX and general Unix. We continue to expose the value
+	4 (Unix) to usercode as changing this might break user
+	applications.
+
+2011-01-03  Marek Habersack  <grendel at twistedcode.net>
+
+	[corlib] Fix for bug #659061. Adjust size of the last group when
+	formatting numbers with group separators.
+
+	When the number format includes several groups make sure that the
+	last (leftmost) one is adjusted so that its width is not larger
+	than the number of remaining characters.
+
+2010-12-23  Marek Safar  <marek.safar at gmail.com>
+
+	Implement missing v4 attribute types
+
+2010-12-15  Jb Evain  <jbevain at gmail.com>
+
+	Make sure AppdDomain.PermissionSet doesn't return null
+
+2010-12-15  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Add missing members in AggregateException
+
+2010-12-15  Marek Safar  <marek.safar at gmail.com>
+
+	Some .net 4.0 api compatibility fixes
+
+2010-12-08  Marek Safar  <marek.safar at gmail.com>
+
+	Fix parameter name
+
+2010-11-23  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* Delegate.cs (CreateDelegate): Fix visibility and make sure that
+	we fail to bind to first argument of static arguments to overloads
+	that don't pass it.
+
+2010-11-22  Marek Safar  <marek.safar at gmail.com>
+
+	Fix retrieving of StructLayoutAttribute.Pack
+
+2010-11-11  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* AppDomain.cs: Add internal SetCompatibilitySwitch so it is
+	possible to set values that will be returned by (public)
+	IsCompatibilitySwitchSet (needed by Moonlight)
+
+2010-11-09  Alex Fort  <imphasing at gmail.com>
+
+	Add support for the CancelKeyPress event on Windows
+
+	Adds a call to the Win32 function SetConsoleCtrlHandler for
+	Windows, which adds the DoWindowsConsoleCancelEvent wrapper for
+	DoConsoleCancelEvent to the Ctrl-C handler when an event handler
+	is added, and removes the handler once all event handlers are
+	removed.
+
+2010-11-09  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* String.cs (LastIndexOf): All all overloads to be compatible with
+	MS with empty strings.
+
+	* String.cs (LastIndexOfAny): Ditto.
+
+2010-11-08  Marek Safar  <marek.safar at gmail.com>
+
+	API compatibility work
+
+2010-11-04  Marek Safar  <marek.safar at gmail.com>
+
+	For some strange reason Console.Write(Line) allows null params
+	formatter arguments
+
 2010-11-02  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
 
 	Revert change in FromBinary
 
+2010-10-25  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* Environment.cs: Since an icall signature has changed, we must
+	bump corlib version.
+
+2010-10-24  Marek Habersack  <grendel at twistedcode.net>
+
+	[corlib] added a few missing Environment.SpecialFolder definitions
+	to InternalGetFolderPath (4.0)
+
 2010-10-23  Zoltan Varga  <vargaz at gmail.com>
 
 	Fix another regression in the Array.Sort () methods, allow keys
@@ -24,11 +155,35 @@
 	Handle boxed primitive types for nullable fields. Fixes bug
 	#646556.
 
+2010-10-15  Marek Safar  <marek.safar at gmail.com>
+
+	Warnings cleanup
+
+2010-09-23  Marek Safar  <marek.safar at gmail.com>
+
+	[641146] Implemented IStructuralComparable.CompareTo
+
 2010-09-15  Rodrigo Kumpera  <kumpera at gmail.com>
 
 	* Type.cs (GetTypeCodeImpl): If the type is a TypeBuilder call
 	into specific code.
 
+2010-09-02  Jb Evain  <jbevain at gmail.com>
+
+	[Fix] fix regression in Delegate.CreateDelegate
+
+	2ec0ab59fe4aecf5507a81846a66de1a658bbfd2 caused a regression in
+	Create.Delegate where the overload which doesn't take a
+	firstArgument could be used to create closed over null delegates
+	while this overload doesn't allow it.
+
+2010-09-01  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Add missing DT format
+
+	The datetime format having a numeric timezone after the
+	milliseconds was missing. Fixes bug #479061.
+
 2010-08-25  Rodrigo Kumpera  <kumpera at gmail.com>
 
 	* Environment.cs: Dump corlib version.
diff --git a/mcs/class/corlib/System/CharEnumerator.cs b/mcs/class/corlib/System/CharEnumerator.cs
index 3da209a..16e2cc3 100644
--- a/mcs/class/corlib/System/CharEnumerator.cs
+++ b/mcs/class/corlib/System/CharEnumerator.cs
@@ -69,6 +69,15 @@ namespace System
 				return Current;
 			}
 		}
+		
+#if NET_4_0
+		public void Dispose ()
+#else
+		void IDisposable.Dispose ()
+#endif
+		{
+			// nop
+		}		
 
 		// Methods
 		public object Clone ()
@@ -105,10 +114,5 @@ namespace System
 		{
 			index = -1;
 		}
-
-		void IDisposable.Dispose ()
-		{
-			// nop
-		}
 	}
 }
diff --git a/mcs/class/corlib/System/Console.cs b/mcs/class/corlib/System/Console.cs
index ea9365e..8b68f4f 100644
--- a/mcs/class/corlib/System/Console.cs
+++ b/mcs/class/corlib/System/Console.cs
@@ -44,11 +44,26 @@ namespace System
 #if !NET_2_1
 		private class WindowsConsole
 		{
+			public static bool ctrlHandlerAdded = false;
+			private delegate bool WindowsCancelHandler (int keyCode);
+			private static WindowsCancelHandler cancelHandler = new WindowsCancelHandler (DoWindowsConsoleCancelEvent);
+
 			[DllImport ("kernel32.dll", CharSet=CharSet.Auto, ExactSpelling=true)]
 			private static extern int GetConsoleCP ();
 			[DllImport ("kernel32.dll", CharSet=CharSet.Auto, ExactSpelling=true)]
 			private static extern int GetConsoleOutputCP ();
 
+			[DllImport ("kernel32.dll", CharSet=CharSet.Auto, ExactSpelling=true)]
+			private static extern bool SetConsoleCtrlHandler (WindowsCancelHandler handler, bool addHandler);
+
+			// Only call the event handler if Control-C was pressed (code == 0), nothing else
+			private static bool DoWindowsConsoleCancelEvent (int keyCode)
+			{
+				if (keyCode == 0)
+					DoConsoleCancelEvent ();
+				return keyCode == 0;
+			}
+
 			[MethodImpl (MethodImplOptions.NoInlining)]
 			public static int GetInputCodePage ()
 			{
@@ -60,6 +75,18 @@ namespace System
 			{
 				return GetConsoleOutputCP ();
 			}
+
+			public static void AddCtrlHandler ()
+			{
+				SetConsoleCtrlHandler (cancelHandler, true);
+				ctrlHandlerAdded = true;
+			}
+			
+			public static void RemoveCtrlHandler ()
+			{
+				SetConsoleCtrlHandler (cancelHandler, false);
+				ctrlHandlerAdded = false;
+			}
 		}
 #endif
 		internal static TextWriter stdout;
@@ -304,7 +331,10 @@ namespace System
 
 		public static void Write (string format, params object[] arg)
 		{
-			stdout.Write (format, arg);
+			if (arg == null)
+				stdout.Write (format);
+			else
+				stdout.Write (format, arg);
 		}
 
 		public static void Write (char[] buffer, int index, int count)
@@ -415,7 +445,10 @@ namespace System
 
 		public static void WriteLine (string format, params object[] arg)
 		{
-			stdout.WriteLine (format, arg);
+			if (arg == null)
+				stdout.WriteLine (format);
+			else
+				stdout.WriteLine (format, arg);
 		}
 
 		public static void WriteLine (char[] buffer, int index, int count)
@@ -676,12 +709,22 @@ namespace System
 					ConsoleDriver.Init ();
 
 				cancel_event += value;
+
+				if (Environment.IsRunningOnWindows && !WindowsConsole.ctrlHandlerAdded)
+					WindowsConsole.AddCtrlHandler();
 			}
 			remove {
 				if (ConsoleDriver.Initialized == false)
 					ConsoleDriver.Init ();
 
 				cancel_event -= value;
+
+				if (cancel_event == null && Environment.IsRunningOnWindows)
+				{
+					// Need to remove our hook if there's nothing left in the event
+					if (WindowsConsole.ctrlHandlerAdded)
+						WindowsConsole.RemoveCtrlHandler();
+				}
 			}
 		}
 
diff --git a/mcs/class/corlib/System/DateTime.cs b/mcs/class/corlib/System/DateTime.cs
index 39b863f..3999c7c 100644
--- a/mcs/class/corlib/System/DateTime.cs
+++ b/mcs/class/corlib/System/DateTime.cs
@@ -29,7 +29,7 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-using System.Collections;
+using System.Collections.Generic;
 using System.Globalization;
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
@@ -53,7 +53,7 @@ namespace System
 		// memory usage from 16 to 8 bytes, see bug: 592221.   This also fixes the
 		// 622127 issue and simplifies the code in reflection.c to encode DateTimes
 		//
-		public long encoded;
+		long encoded;
 		const long TicksMask = 0x3fffffffffffffff;
 		const long KindMask = unchecked ((long) 0xc000000000000000);
 		const int KindShift = 62;
@@ -89,6 +89,7 @@ namespace System
 		// try combinations of these patterns. The algorithm also looks for
 		// day of the week, AM/PM GMT and Z independently of the patterns.
 		private static readonly string[] ParseTimeFormats = new string [] {
+			"H:m:s.fff zzz",
 			"H:m:s.fffffffzzz",
 			"H:m:s.fffffff",
 			"H:m:s.ffffff",
@@ -750,10 +751,10 @@ namespace System
 		{
 			DateTimeFormatInfo info = (DateTimeFormatInfo) provider.GetFormat (typeof(DateTimeFormatInfo));
 //			return GetDateTimeFormats (info.GetAllDateTimePatterns ());
-			ArrayList al = new ArrayList ();
+			var l = new List<string> ();
 			foreach (char c in "dDgGfFmMrRstTuUyY")
-				al.AddRange (GetDateTimeFormats (c, info));
-			return al.ToArray (typeof (string)) as string [];
+				l.AddRange (GetDateTimeFormats (c, info));
+			return l.ToArray ();
 		}
 
 		public string[] GetDateTimeFormats(char format,IFormatProvider provider	)
diff --git a/mcs/class/corlib/System/DateTimeOffset.cs b/mcs/class/corlib/System/DateTimeOffset.cs
index 1ba3897..ffb5889 100644
--- a/mcs/class/corlib/System/DateTimeOffset.cs
+++ b/mcs/class/corlib/System/DateTimeOffset.cs
@@ -122,9 +122,9 @@ namespace System
 			return new DateTimeOffset (dt.AddHours (hours).Ticks, utc_offset);
 		}
 
-		public static DateTimeOffset operator + (DateTimeOffset dateTimeTz, TimeSpan timeSpan)
+		public static DateTimeOffset operator + (DateTimeOffset dateTimeOffset, TimeSpan timeSpan)
 		{
-			return dateTimeTz.Add (timeSpan);
+			return dateTimeOffset.Add (timeSpan);
 		}
 
 		public DateTimeOffset AddMilliseconds (double milliseconds)
@@ -692,9 +692,9 @@ namespace System
 			return left.Subtract (right);
 		}
 
-		public static DateTimeOffset operator - (DateTimeOffset dateTimeTz, TimeSpan timeSpan)
+		public static DateTimeOffset operator - (DateTimeOffset dateTimeOffset, TimeSpan timeSpan)
 		{
-			return dateTimeTz.Subtract (timeSpan);	
+			return dateTimeOffset.Subtract (timeSpan);	
 		}
 
 		public long ToFileTime ()
diff --git a/mcs/class/corlib/System/Decimal.cs b/mcs/class/corlib/System/Decimal.cs
index ed7eaa2..1ba3b80 100644
--- a/mcs/class/corlib/System/Decimal.cs
+++ b/mcs/class/corlib/System/Decimal.cs
@@ -38,6 +38,7 @@ using System.Globalization;
 using System.Text;
 using System.Runtime.CompilerServices;
 using System.Runtime.ConstrainedExecution;
+using System.Runtime.Serialization;
 
 #if MSTEST
 using System.Runtime.InteropServices;
@@ -53,6 +54,9 @@ namespace System
 	[Serializable]
 	[System.Runtime.InteropServices.ComVisible (true)]
 	public struct Decimal: IFormattable, IConvertible, IComparable, IComparable<Decimal>, IEquatable <Decimal>
+#if NET_4_0
+		, IDeserializationCallback
+#endif
 	{
 		public const decimal MinValue = -79228162514264337593543950335m;
 		public const decimal MaxValue =  79228162514264337593543950335m;
@@ -1336,6 +1340,12 @@ namespace System
 		{
 			return ToString ("G", provider);
 		}
+		
+#if NET_4_0
+		void IDeserializationCallback.OnDeserialization(object sender)
+		{
+		}
+#endif
 
 #if !MSTEST
 		[MethodImplAttribute(MethodImplOptions.InternalCall)]
diff --git a/mcs/class/corlib/System/Delegate.cs b/mcs/class/corlib/System/Delegate.cs
index a0a6134..bd71c46 100644
--- a/mcs/class/corlib/System/Delegate.cs
+++ b/mcs/class/corlib/System/Delegate.cs
@@ -150,6 +150,11 @@ namespace System
 
 		public static Delegate CreateDelegate (Type type, object firstArgument, MethodInfo method, bool throwOnBindFailure)
 		{
+			return CreateDelegate (type, firstArgument, method, throwOnBindFailure, true);
+		}
+
+		static Delegate CreateDelegate (Type type, object firstArgument, MethodInfo method, bool throwOnBindFailure, bool allowClosed)
+		{
 			// The name of the parameter changed in 2.0
 			object target = firstArgument;
 
@@ -228,14 +233,14 @@ namespace System
 							argsMatch &= arg_type_match (delargs [i + 1].ParameterType, args [i].ParameterType);
 					} else {
 						// closed over a null reference
-						argsMatch = true;
+						argsMatch = allowClosed;
 						for (int i = 0; i < args.Length; i++)
 							argsMatch &= arg_type_match (delargs [i].ParameterType, args [i].ParameterType);
 					}
 				} else {
 					if (delargs.Length + 1 == args.Length) {
 						// closed over a null reference
-						argsMatch = !args [0].ParameterType.IsValueType;
+						argsMatch = !args [0].ParameterType.IsValueType && allowClosed;
 						for (int i = 0; i < delargs.Length; i++)
 							argsMatch &= arg_type_match (delargs [i].ParameterType, args [i + 1].ParameterType);
 					} else {
@@ -258,22 +263,24 @@ namespace System
 			return d;
 		}
 
-		public static Delegate CreateDelegate (Type type, object firstArgument, MethodInfo method) {
-			return CreateDelegate (type, firstArgument, method, true);
+		public static Delegate CreateDelegate (Type type, object firstArgument, MethodInfo method)
+		{
+			return CreateDelegate (type, firstArgument, method, true, true);
 		}
 
 		public static Delegate CreateDelegate (Type type, MethodInfo method, bool throwOnBindFailure)
 		{
-			return CreateDelegate (type, null, method, throwOnBindFailure);
+			return CreateDelegate (type, null, method, throwOnBindFailure, false);
 		}
 
-		public static Delegate CreateDelegate (Type type, MethodInfo method) {
+		public static Delegate CreateDelegate (Type type, MethodInfo method)
+		{
 			return CreateDelegate (type, method, true);
 		}
 
 		public static Delegate CreateDelegate (Type type, object target, string method)
 		{
-			return CreateDelegate(type, target, method, false);
+			return CreateDelegate (type, target, method, false);
 		}
 
 		static MethodInfo GetCandidateMethod (Type type, Type target, string method, BindingFlags bflags, bool ignoreCase, bool throwOnBindFailure)
diff --git a/mcs/class/corlib/System/Double.cs b/mcs/class/corlib/System/Double.cs
index 53aa638..508de29 100644
--- a/mcs/class/corlib/System/Double.cs
+++ b/mcs/class/corlib/System/Double.cs
@@ -141,34 +141,34 @@ namespace System {
 		}
 
 #if	NET_4_0
-		public static bool operator==(double a, double b)
+		public static bool operator==(double left, double right)
 		{
-			return a == b;
+			return left == right;
 		}
 
-		public static bool operator!=(double a, double b)
+		public static bool operator!=(double left, double right)
 		{
-			return a != b;
+			return left != right;
 		}
 
-		public static bool operator>(double a, double b)
+		public static bool operator>(double left, double right)
 		{
-			return a > b;
+			return left > right;
 		}
 
-		public static bool operator>=(double a, double b)
+		public static bool operator>=(double left, double right)
 		{
-			return a >= b;
+			return left >= right;
 		}
 
-		public static bool operator<(double a, double b)
+		public static bool operator<(double left, double right)
 		{
-			return a < b;
+			return left < right;
 		}
 
-		public static bool operator<=(double a, double b)
+		public static bool operator<=(double left, double right)
 		{
-			return a <= b;
+			return left <= right;
 		}
 #endif
 
diff --git a/mcs/class/corlib/System/Enum.cs b/mcs/class/corlib/System/Enum.cs
index eda7e14..a516be8 100644
--- a/mcs/class/corlib/System/Enum.cs
+++ b/mcs/class/corlib/System/Enum.cs
@@ -619,7 +619,7 @@ namespace System
 			return true;
 		}
 
-#if BOOTSTRAP_NET_4_0 || NET_4_0 || MOONLIGHT
+#if NET_4_0 || MOONLIGHT
 		public static bool TryParse<TEnum> (string value, out TEnum result) where TEnum : struct
 		{
 			return TryParse (value, false, out result);
diff --git a/mcs/class/corlib/System/Environment.cs b/mcs/class/corlib/System/Environment.cs
index 382060f..32f5388 100644
--- a/mcs/class/corlib/System/Environment.cs
+++ b/mcs/class/corlib/System/Environment.cs
@@ -55,7 +55,7 @@ namespace System {
 		 * of icalls, do not require an increment.
 		 */
 #pragma warning disable 169
-		private const int mono_corlib_version = 93;
+		private const int mono_corlib_version = 94;
 #pragma warning restore 169
 
 		[ComVisible (true)]
@@ -116,6 +116,8 @@ namespace System {
 
 #if NET_4_0
 		public
+#else
+		internal
 #endif
 		enum SpecialFolderOption {
 			None = 0,
@@ -208,7 +210,7 @@ namespace System {
 		//
 		static OperatingSystem os;
 
-		internal static extern PlatformID Platform {
+		static extern PlatformID Platform {
 			[MethodImplAttribute (MethodImplOptions.InternalCall)]
 			get;
 		}
@@ -224,6 +226,8 @@ namespace System {
 				if (os == null) {
 					Version v = Version.CreateFromString (GetOSVersionString ());
 					PlatformID p = Platform;
+					if (p == PlatformID.MacOSX)
+						p = PlatformID.Unix;
 					os = new OperatingSystem (p, v);
 				}
 				return os;
@@ -464,7 +468,6 @@ namespace System {
 			return GetFolderPath (folder, SpecialFolderOption.None);
 		}
 #if NET_4_0
-		[MonoTODO ("Figure out the folder path for all the new values in SpecialFolder. Use the 'option' argument.")]
 		public
 #endif
 		static string GetFolderPath(SpecialFolder folder, SpecialFolderOption option)
@@ -473,11 +476,11 @@ namespace System {
 
 			string dir = null;
 
-			if (Environment.IsRunningOnWindows) {
+			if (Environment.IsRunningOnWindows)
 				dir = GetWindowsFolderPath ((int) folder);
-			} else {
-				dir = InternalGetFolderPath (folder);
-			}
+			else
+				dir = UnixGetFolderPath (folder, option);
+
 #if !NET_2_1
 			if ((dir != null) && (dir.Length > 0) && SecurityManager.SecurityEnabled) {
 				new FileIOPermission (FileIOPermissionAccess.PathDiscovery, dir).Demand ();
@@ -486,8 +489,7 @@ namespace System {
 			return dir;
 		}
 
-		private static string ReadXdgUserDir (string config_dir, string home_dir, 
-			string key, string fallback)
+		private static string ReadXdgUserDir (string config_dir, string home_dir, string key, string fallback)
 		{
 			string env_path = internalGetEnvironmentVariable (key);
 			if (env_path != null && env_path != String.Empty) {
@@ -506,19 +508,19 @@ namespace System {
 					while ((line = reader.ReadLine ()) != null) {
 						line = line.Trim ();
 						int delim_index = line.IndexOf ('=');
-                        if(delim_index > 8 && line.Substring (0, delim_index) == key) {
-                            string path = line.Substring (delim_index + 1).Trim ('"');
-                            bool relative = false;
-
-                            if (path.StartsWith ("$HOME/")) {
-                                relative = true;
-                                path = path.Substring (6);
-                            } else if (!path.StartsWith ("/")) {
-                                relative = true;
-                            }
-
-                            return relative ? Path.Combine (home_dir, path) : path;
-                        }
+						if(delim_index > 8 && line.Substring (0, delim_index) == key) {
+							string path = line.Substring (delim_index + 1).Trim ('"');
+							bool relative = false;
+							
+							if (path.StartsWith ("$HOME/")) {
+								relative = true;
+								path = path.Substring (6);
+							} else if (!path.StartsWith ("/")) {
+								relative = true;
+							}
+							
+							return relative ? Path.Combine (home_dir, path) : path;
+						}
 					}
 				}
 			} catch (FileNotFoundException) {
@@ -530,7 +532,7 @@ namespace System {
 
 		// the security runtime (and maybe other parts of corlib) needs the
 		// information to initialize themselves before permissions can be checked
-		internal static string InternalGetFolderPath (SpecialFolder folder)
+		internal static string UnixGetFolderPath (SpecialFolder folder, SpecialFolderOption option)
 		{
 			string home = internalGetHome ();
 
@@ -566,9 +568,10 @@ namespace System {
 #if MONOTOUCH
 			{
 				string dir = Path.Combine (Path.Combine (home, "Documents"), ".config");
-				if (!Directory.Exists (dir))
-					Directory.CreateDirectory (dir);
-
+				if (option == SpecialFolderOption.Create){
+					if (!Directory.Exists (dir))
+						Directory.CreateDirectory (dir);
+				}
 				return dir;
 			}
 #else
@@ -593,27 +596,85 @@ namespace System {
 				return ReadXdgUserDir (config, home, "XDG_DESKTOP_DIR", "Desktop");
 
 			case SpecialFolder.MyMusic:
-				return ReadXdgUserDir (config, home, "XDG_MUSIC_DIR", "Music");
+				if (Platform == PlatformID.MacOSX)
+					return Path.Combine (home, "Music");
+				else
+					return ReadXdgUserDir (config, home, "XDG_MUSIC_DIR", "Music");
 
 			case SpecialFolder.MyPictures:
-				return ReadXdgUserDir (config, home, "XDG_PICTURES_DIR", "Pictures");
+				if (Platform == PlatformID.MacOSX)
+					return Path.Combine (home, "Pictures");
+				else
+					return ReadXdgUserDir (config, home, "XDG_PICTURES_DIR", "Pictures");
+			
+			case SpecialFolder.Templates:
+				return ReadXdgUserDir (config, home, "XDG_TEMPLATES_DIR", "Templates");
+#if NET_4_0 || MOONLIGHT
+			case SpecialFolder.MyVideos:
+				return ReadXdgUserDir (config, home, "XDG_VIDEOS_DIR", "Videos");
+#endif
+#if NET_4_0
+			case SpecialFolder.CommonTemplates:
+				return "/usr/share/templates";
+			case SpecialFolder.Fonts:
+				if (Platform == PlatformID.MacOSX)
+					return Path.Combine (home, "Library", "Fonts");
 				
+				return Path.Combine (home, ".fonts");
+#endif
 			// these simply dont exist on Linux
 			// The spec says if a folder doesnt exist, we
 			// should return ""
 			case SpecialFolder.Favorites:
+				if (Platform == PlatformID.MacOSX)
+					return Path.Combine (home, "Library", "Favorites");
+				else
+					return String.Empty;
+				
+			case SpecialFolder.ProgramFiles:
+				if (Platform == PlatformID.MacOSX)
+					return "/Applications";
+				else
+					return String.Empty;
+
+			case SpecialFolder.InternetCache:
+				if (Platform == PlatformID.MacOSX)
+					return Path.Combine (home, "Library", "Caches");
+				else
+					return String.Empty;
+				
 			case SpecialFolder.Programs:
 			case SpecialFolder.SendTo:
 			case SpecialFolder.StartMenu:
 			case SpecialFolder.Startup:
-			case SpecialFolder.Templates:
 			case SpecialFolder.Cookies:
 			case SpecialFolder.History:
-			case SpecialFolder.InternetCache:
 			case SpecialFolder.Recent:
 			case SpecialFolder.CommonProgramFiles:
-			case SpecialFolder.ProgramFiles:
 			case SpecialFolder.System:
+#if NET_4_0
+			case SpecialFolder.NetworkShortcuts:
+			case SpecialFolder.CommonStartMenu:
+			case SpecialFolder.CommonPrograms:
+			case SpecialFolder.CommonStartup:
+			case SpecialFolder.CommonDesktopDirectory:
+			case SpecialFolder.PrinterShortcuts:
+			case SpecialFolder.Windows:
+			case SpecialFolder.UserProfile:
+			case SpecialFolder.SystemX86:
+			case SpecialFolder.ProgramFilesX86:
+			case SpecialFolder.CommonProgramFilesX86:
+			case SpecialFolder.CommonDocuments:
+			case SpecialFolder.CommonAdminTools:
+			case SpecialFolder.AdminTools:
+			case SpecialFolder.CommonMusic:
+			case SpecialFolder.CommonPictures:
+			case SpecialFolder.CommonVideos:
+			case SpecialFolder.Resources:
+			case SpecialFolder.LocalizedResources:
+			case SpecialFolder.CommonOemLinks:
+			case SpecialFolder.CDBurning:
+#endif
 				return String.Empty;
 			// This is where data common to all users goes
 			case SpecialFolder.CommonApplicationData:
@@ -623,6 +684,7 @@ namespace System {
                         }
                 }
 
+		
 		[EnvironmentPermission (SecurityAction.Demand, Unrestricted=true)]
 		public static string[] GetLogicalDrives ()
 		{
diff --git a/mcs/class/corlib/System/Funcs.cs b/mcs/class/corlib/System/Funcs.cs
index 2bb29f7..61fc6bf 100644
--- a/mcs/class/corlib/System/Funcs.cs
+++ b/mcs/class/corlib/System/Funcs.cs
@@ -29,12 +29,12 @@ using System.Runtime.CompilerServices;
 
 namespace System {
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0
-	[TypeForwardedFrom (Consts.AssemblySystemCore_3_5)]	
+#if NET_4_0
+	[TypeForwardedFrom (Consts.AssemblySystemCore_3_5)]
 	public delegate TResult Func<out TResult> ();
 	
 	[TypeForwardedFrom (Consts.AssemblySystemCore_3_5)]
-	public delegate TResult Func<in T, out TResult> (T arg1);
+	public delegate TResult Func<in T, out TResult> (T arg);
 	
 	[TypeForwardedFrom (Consts.AssemblySystemCore_3_5)]
 	public delegate TResult Func<in T1, in T2, out TResult> (T1 arg1, T2 arg2);
diff --git a/mcs/class/corlib/System/GC.cs b/mcs/class/corlib/System/GC.cs
index 099c724..c4be7b3 100644
--- a/mcs/class/corlib/System/GC.cs
+++ b/mcs/class/corlib/System/GC.cs
@@ -145,7 +145,7 @@ namespace System
 		}
 #endif
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0 || MOONLIGHT
+#if NET_4_0 || MOONLIGHT
 		[MethodImplAttribute (MethodImplOptions.InternalCall)]
 		internal extern static void register_ephemeron_array (Ephemeron[] array);
 
diff --git a/mcs/class/corlib/System/IObserver.cs b/mcs/class/corlib/System/IObserver.cs
index e352c4c..2201e06 100644
--- a/mcs/class/corlib/System/IObserver.cs
+++ b/mcs/class/corlib/System/IObserver.cs
@@ -33,8 +33,8 @@ namespace System
 	public interface IObserver<in T>
 	{
 		void OnCompleted ();
-		void OnError (Exception exception);
-		void OnNext(T arg);
+		void OnError (Exception error);
+		void OnNext(T value);
 	}
 }
 
diff --git a/mcs/class/corlib/System/InvalidTimeZoneException.cs b/mcs/class/corlib/System/InvalidTimeZoneException.cs
index d53141a..f7aaeb7 100644
--- a/mcs/class/corlib/System/InvalidTimeZoneException.cs
+++ b/mcs/class/corlib/System/InvalidTimeZoneException.cs
@@ -24,14 +24,14 @@
  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0 || MOONLIGHT
+#if NET_4_0 || MOONLIGHT
 
 using System.Runtime.CompilerServices;
 
 namespace System
 {
 	[Serializable]
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
 	[TypeForwardedFrom (Consts.AssemblySystemCore_3_5)]
 #elif MOONLIGHT
 	[TypeForwardedFrom (Consts.AssemblySystem_Core)]
@@ -44,10 +44,10 @@ namespace System
 		public InvalidTimeZoneException (string message) : base (message)
 		{}
 
-		public InvalidTimeZoneException (string message, Exception e) : base (message, e)
+		public InvalidTimeZoneException (string message, Exception innerException) : base (message, innerException)
 		{}
 
-		protected InvalidTimeZoneException (Runtime.Serialization.SerializationInfo info, Runtime.Serialization.StreamingContext sc) : base (info, sc)
+		protected InvalidTimeZoneException (Runtime.Serialization.SerializationInfo info, Runtime.Serialization.StreamingContext context) : base (info, context)
 		{}
 	}
 }
diff --git a/mcs/class/corlib/System/MonoCustomAttrs.cs b/mcs/class/corlib/System/MonoCustomAttrs.cs
index 0afe4a4..30479f2 100644
--- a/mcs/class/corlib/System/MonoCustomAttrs.cs
+++ b/mcs/class/corlib/System/MonoCustomAttrs.cs
@@ -375,7 +375,7 @@ namespace System
 			if (method == null || !method.IsVirtual)
 				return null;
 
-			MethodInfo baseMethod = method.GetBaseDefinition ();
+			MethodInfo baseMethod = method.GetBaseMethod ();
 			if (baseMethod == method)
 				return null;
 
diff --git a/mcs/class/corlib/System/MulticastDelegate.cs b/mcs/class/corlib/System/MulticastDelegate.cs
index df7becd..1ce1f16 100644
--- a/mcs/class/corlib/System/MulticastDelegate.cs
+++ b/mcs/class/corlib/System/MulticastDelegate.cs
@@ -32,6 +32,7 @@
 //
 
 using System.Collections;
+using System.Collections.Generic;
 using System.Runtime.Serialization;
 
 namespace System
@@ -121,7 +122,7 @@ namespace System
 				return new Delegate [1] { other };
 			}
 
-			ArrayList list = new ArrayList ();
+			var list = new List<Delegate> ();
 			for (; d != null; d = d.kpm_next) {
 				MulticastDelegate other = (MulticastDelegate) d.Clone ();
 				other.prev = null;
@@ -129,7 +130,7 @@ namespace System
 				list.Add (other);
 			}
 
-			return (Delegate []) list.ToArray (typeof (Delegate));
+			return list.ToArray ();
 		}
 
 		// <summary>
diff --git a/mcs/class/corlib/System/Nullable.cs b/mcs/class/corlib/System/Nullable.cs
index 7f48543..5ebdbf4 100644
--- a/mcs/class/corlib/System/Nullable.cs
+++ b/mcs/class/corlib/System/Nullable.cs
@@ -43,30 +43,30 @@ namespace System
 #if NET_2_1
 		[ComVisible (false)]
 #endif
-		public static int Compare<T> (T? value1, T? value2) where T: struct
+		public static int Compare<T> (T? n1, T? n2) where T: struct
 		{
-			if (value1.has_value) {
-				if (!value2.has_value)
+			if (n1.has_value) {
+				if (!n2.has_value)
 					return 1;
 
-				return Comparer<T>.Default.Compare (value1.value, value2.value);
+				return Comparer<T>.Default.Compare (n1.value, n2.value);
 			}
 			
-			return value2.has_value ? -1 : 0;
+			return n2.has_value ? -1 : 0;
 		}
 
 #if NET_2_1
 		[ComVisible (false)]
 #endif
-		public static bool Equals<T> (T? value1, T? value2) where T: struct
+		public static bool Equals<T> (T? n1, T? n2) where T: struct
 		{
-			if (value1.has_value != value2.has_value)
+			if (n1.has_value != n2.has_value)
 				return false;
 
-			if (!value1.has_value)
+			if (!n1.has_value)
 				return true;
 
-			return EqualityComparer<T>.Default.Equals (value1.value, value2.value);
+			return EqualityComparer<T>.Default.Equals (n1.value, n2.value);
 		}
 
 		public static Type GetUnderlyingType (Type nullableType)
diff --git a/mcs/class/corlib/System/NumberFormatter.cs b/mcs/class/corlib/System/NumberFormatter.cs
index 673d05f..d4b9246 100644
--- a/mcs/class/corlib/System/NumberFormatter.cs
+++ b/mcs/class/corlib/System/NumberFormatter.cs
@@ -1677,6 +1677,19 @@ namespace System
 						groupIndex++;
 				}
 
+				if (total >= _decPointPos) {
+					int lastGroupSize = groups [0];
+					if (total > lastGroupSize) {
+						int lastGroupDiff = -(lastGroupSize - _decPointPos);
+						int lastGroupMod;
+
+						if (lastGroupDiff < lastGroupSize)
+							counter = lastGroupDiff;
+						else if (lastGroupSize > 0 && (lastGroupMod = _decPointPos % lastGroupSize) > 0)
+							counter = lastGroupMod;
+					}
+				}
+				
 				for (int i = 0; ;) {
 					if ((_decPointPos - i) <= counter || counter == 0) {
 						AppendDigits (_digitsLen - _decPointPos, _digitsLen - i);
diff --git a/mcs/class/corlib/System/OperationCanceledException.cs b/mcs/class/corlib/System/OperationCanceledException.cs
index 9a8e3f3..4107352 100644
--- a/mcs/class/corlib/System/OperationCanceledException.cs
+++ b/mcs/class/corlib/System/OperationCanceledException.cs
@@ -38,7 +38,7 @@ namespace System
 	public class OperationCanceledException : SystemException
 	{
 		const int Result = unchecked ((int)0x8013153b);
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
 		CancellationToken? token;
 #endif
 
@@ -66,7 +66,7 @@ namespace System
 		{
 		}
 		
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
 		public OperationCanceledException (CancellationToken token)
 			: this ()
 		{
diff --git a/mcs/class/corlib/System/Single.cs b/mcs/class/corlib/System/Single.cs
index 210dc39..de0f7c4 100644
--- a/mcs/class/corlib/System/Single.cs
+++ b/mcs/class/corlib/System/Single.cs
@@ -144,34 +144,34 @@ namespace System
 		}
 
 #if	NET_4_0
-		public static bool operator==(float a, float b)
+		public static bool operator==(float left, float right)
 		{
-			return a == b;
+			return left == right;
 		}
 
-		public static bool operator!=(float a, float b)
+		public static bool operator!=(float left, float right)
 		{
-			return a != b;
+			return left != right;
 		}
 
-		public static bool operator>(float a, float b)
+		public static bool operator>(float left, float right)
 		{
-			return a > b;
+			return left > right;
 		}
 
-		public static bool operator>=(float a, float b)
+		public static bool operator>=(float left, float right)
 		{
-			return a >= b;
+			return left >= right;
 		}
 
-		public static bool operator<(float a, float b)
+		public static bool operator<(float left, float right)
 		{
-			return a < b;
+			return left < right;
 		}
 
-		public static bool operator<=(float a, float b)
+		public static bool operator<=(float left, float right)
 		{
-			return a <= b;
+			return left <= right;
 		}
 #endif
 
diff --git a/mcs/class/corlib/System/String.cs b/mcs/class/corlib/System/String.cs
index 70e9c01..0f79656 100644
--- a/mcs/class/corlib/System/String.cs
+++ b/mcs/class/corlib/System/String.cs
@@ -985,6 +985,10 @@ namespace System
 		{
 			if (value == null)
 				throw new ArgumentNullException ("value");
+			if (this.Length == 0)
+				return value == String.Empty ? 0 : -1;
+			if (value.Length == 0)
+				return Math.Min (this.Length - 1, startIndex);
 			if (startIndex < 0 || startIndex > length)
 				throw new ArgumentOutOfRangeException ("startIndex");
 			if (count < 0 || (startIndex < count - 1))
@@ -1185,6 +1189,8 @@ namespace System
 		{
 			if (anyOf == null)
 				throw new ArgumentNullException ();
+			if (this.length == 0)
+				return -1;
 
 			return LastIndexOfAnyUnchecked (anyOf, this.length - 1, this.length);
 		}
@@ -1193,6 +1199,8 @@ namespace System
 		{
 			if (anyOf == null)
 				throw new ArgumentNullException ();
+			if (this.length == 0)
+				return -1;
 
 			if (startIndex < 0 || startIndex >= this.length)
 				throw new ArgumentOutOfRangeException ("startIndex", "Cannot be negative, and should be less than length of string.");
@@ -1207,6 +1215,8 @@ namespace System
 		{
 			if (anyOf == null) 
 				throw new ArgumentNullException ();
+			if (this.length == 0)
+				return -1;
 
 			if ((startIndex < 0) || (startIndex >= this.Length))
 				throw new ArgumentOutOfRangeException ("startIndex", "< 0 || > this.Length");
@@ -1261,9 +1271,9 @@ namespace System
 
 		public int LastIndexOf (char value, int startIndex, int count)
 		{
-			if (startIndex == 0 && this.length == 0)
+			if (this.length == 0)
 				return -1;
-
+ 
 			// >= for char (> for string)
 			if ((startIndex < 0) || (startIndex >= this.Length))
 				throw new ArgumentOutOfRangeException ("startIndex", "< 0 || >= this.Length");
@@ -1333,11 +1343,7 @@ namespace System
 		// Following methods are culture-sensitive
 		public int LastIndexOf (String value)
 		{
-			if (this.length == 0)
-				// This overload does additional checking
-				return LastIndexOf (value, 0, 0);
-			else
-				return LastIndexOf (value, this.length - 1, this.length);
+			return LastIndexOf (value, this.length - 1, this.length);
 		}
 
 		public int LastIndexOf (String value, int startIndex)
@@ -1353,6 +1359,8 @@ namespace System
 			if (value == null)
 				throw new ArgumentNullException ("value");
 
+			if (this.length == 0)
+				return value == String.Empty ? 0 : -1;
 			// -1 > startIndex > for string (0 > startIndex >= for char)
 			if ((startIndex < -1) || (startIndex > this.Length))
 				throw new ArgumentOutOfRangeException ("startIndex", "< 0 || > this.Length");
@@ -1362,7 +1370,7 @@ namespace System
 				throw new ArgumentOutOfRangeException ("startIndex - count + 1 < 0");
 
 			if (value.Length == 0)
-				return startIndex;
+				return Math.Min (this.Length - 1, startIndex);
 
 			if (startIndex == 0 && this.length == 0)
 				return -1;
@@ -2209,7 +2217,11 @@ namespace System
 			return InternalIsInterned (str);
 		}
 	
+#if NET_4_0 || MOONLIGHT
+		public static string Join (string separator, params string [] value)
+#else
 		public static string Join (string separator, string [] value)
+#endif
 		{
 			if (value == null)
 				throw new ArgumentNullException ("value");
diff --git a/mcs/class/corlib/System/TimeSpan.cs b/mcs/class/corlib/System/TimeSpan.cs
index 7bc83f0..163a7aa 100644
--- a/mcs/class/corlib/System/TimeSpan.cs
+++ b/mcs/class/corlib/System/TimeSpan.cs
@@ -360,25 +360,25 @@ namespace System
 		}
 
 #if NET_4_0 || MOONLIGHT
-		public static TimeSpan Parse (string s, IFormatProvider formatProvider)
+		public static TimeSpan Parse (string input, IFormatProvider formatProvider)
 		{
-			if (s == null)
-				throw new ArgumentNullException ("s");
+			if (input == null)
+				throw new ArgumentNullException ("input");
 
 			TimeSpan result;
-			Parser p = new Parser (s, formatProvider);
+			Parser p = new Parser (input, formatProvider);
 			p.Execute (false, out result);
 			return result;
 		}
 
-		public static bool TryParse (string s, IFormatProvider formatProvider, out TimeSpan result)
+		public static bool TryParse (string input, IFormatProvider formatProvider, out TimeSpan result)
 		{
-			if (s == null || s.Length == 0) {
+			if (string.IsNullOrEmpty (input)) {
 				result = TimeSpan.Zero;
 				return false;
 			}
 
-			Parser p = new Parser (s, formatProvider);
+			Parser p = new Parser (input, formatProvider);
 			return p.Execute (true, out result);
 		}
 
diff --git a/mcs/class/corlib/System/TimeZoneNotFoundException.cs b/mcs/class/corlib/System/TimeZoneNotFoundException.cs
index 3dd922f..348d745 100644
--- a/mcs/class/corlib/System/TimeZoneNotFoundException.cs
+++ b/mcs/class/corlib/System/TimeZoneNotFoundException.cs
@@ -24,14 +24,14 @@
  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0 || MOONLIGHT
+#if NET_4_0 || MOONLIGHT
 
 using System.Runtime.CompilerServices;
 
 namespace System
 {
 	[Serializable]
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
 	[TypeForwardedFrom (Consts.AssemblySystemCore_3_5)]
 #elif MOONLIGHT
 	[TypeForwardedFrom (Consts.AssemblySystem_Core)]
@@ -44,10 +44,10 @@ namespace System
 		public TimeZoneNotFoundException (string message) : base (message)
 		{}
 
-		public TimeZoneNotFoundException (string message, Exception e) : base (message, e)
+		public TimeZoneNotFoundException (string message, Exception innerException) : base (message, innerException)
 		{}
 
-		protected TimeZoneNotFoundException (Runtime.Serialization.SerializationInfo info, Runtime.Serialization.StreamingContext sc) : base (info, sc)
+		protected TimeZoneNotFoundException (Runtime.Serialization.SerializationInfo info, Runtime.Serialization.StreamingContext context) : base (info, context)
 		{}
 	}
 }
diff --git a/mcs/class/corlib/System/Tuple.cs b/mcs/class/corlib/System/Tuple.cs
index b535413..0810717 100644
--- a/mcs/class/corlib/System/Tuple.cs
+++ b/mcs/class/corlib/System/Tuple.cs
@@ -26,7 +26,7 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if MOONLIGHT || NET_4_0 || BOOTSTRAP_NET_4_0
+#if MOONLIGHT || NET_4_0
 
 using System;
 
diff --git a/mcs/class/corlib/System/Tuples.cs b/mcs/class/corlib/System/Tuples.cs
index e5e8f6e..5756fa2 100644
--- a/mcs/class/corlib/System/Tuples.cs
+++ b/mcs/class/corlib/System/Tuples.cs
@@ -27,7 +27,7 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if MOONLIGHT || NET_4_0 || BOOTSTRAP_NET_4_0
+#if MOONLIGHT || NET_4_0
 
 using System;
 using System.Collections;
@@ -82,9 +82,15 @@ namespace System
 			return ((IStructuralComparable) this).CompareTo (obj, Comparer<object>.Default);
 		}
 
-		[MonoTODO] int IStructuralComparable.CompareTo (object other, IComparer comparer)
+		int IStructuralComparable.CompareTo (object other, IComparer comparer)
 		{
-			throw new NotImplementedException ();
+			var t = other as Tuple<T1>;
+			if (t == null) {
+				if (other == null) return 1;
+				throw new ArgumentException ();
+			}
+
+			return comparer.Compare (item1, t.item1);
 		}
 
 		public override bool Equals (object obj)
@@ -144,9 +150,17 @@ namespace System
 			return ((IStructuralComparable) this).CompareTo (obj, Comparer<object>.Default);
 		}
 
-		[MonoTODO] int IStructuralComparable.CompareTo (object other, IComparer comparer)
+		int IStructuralComparable.CompareTo (object other, IComparer comparer)
 		{
-			throw new NotImplementedException ();
+			var t = other as Tuple<T1, T2>;
+			if (t == null) {
+				if (other == null) return 1;
+				throw new ArgumentException ();
+			}
+
+			int res = comparer.Compare (item1, t.item1);
+			if (res != 0) return res;
+			return comparer.Compare (item2, t.item2);
 		}
 
 		public override bool Equals (object obj)
@@ -215,9 +229,19 @@ namespace System
 			return ((IStructuralComparable) this).CompareTo (obj, Comparer<object>.Default);
 		}
 
-		[MonoTODO] int IStructuralComparable.CompareTo (object other, IComparer comparer)
+		int IStructuralComparable.CompareTo (object other, IComparer comparer)
 		{
-			throw new NotImplementedException ();
+			var t = other as Tuple<T1, T2, T3>;
+			if (t == null) {
+				if (other == null) return 1;
+				throw new ArgumentException ();
+			}
+
+			int res = comparer.Compare (item1, t.item1);
+			if (res != 0) return res;
+			res = comparer.Compare (item2, t.item2);
+			if (res != 0) return res;
+			return comparer.Compare (item3, t.item3);
 		}
 
 		public override bool Equals (object obj)
@@ -294,9 +318,21 @@ namespace System
 			return ((IStructuralComparable) this).CompareTo (obj, Comparer<object>.Default);
 		}
 
-		[MonoTODO] int IStructuralComparable.CompareTo (object other, IComparer comparer)
+		int IStructuralComparable.CompareTo (object other, IComparer comparer)
 		{
-			throw new NotImplementedException ();
+			var t = other as Tuple<T1, T2, T3, T4>;
+			if (t == null) {
+				if (other == null) return 1;
+				throw new ArgumentException ();
+			}
+
+			int res = comparer.Compare (item1, t.item1);
+			if (res != 0) return res;
+			res = comparer.Compare (item2, t.item2);
+			if (res != 0) return res;
+			res = comparer.Compare (item3, t.item3);
+			if (res != 0) return res;
+			return comparer.Compare (item4, t.item4);
 		}
 
 		public override bool Equals (object obj)
@@ -381,9 +417,23 @@ namespace System
 			return ((IStructuralComparable) this).CompareTo (obj, Comparer<object>.Default);
 		}
 
-		[MonoTODO] int IStructuralComparable.CompareTo (object other, IComparer comparer)
+		int IStructuralComparable.CompareTo (object other, IComparer comparer)
 		{
-			throw new NotImplementedException ();
+			var t = other as Tuple<T1, T2, T3, T4, T5>;
+			if (t == null) {
+				if (other == null) return 1;
+				throw new ArgumentException ();
+			}
+
+			int res = comparer.Compare (item1, t.item1);
+			if (res != 0) return res;
+			res = comparer.Compare (item2, t.item2);
+			if (res != 0) return res;
+			res = comparer.Compare (item3, t.item3);
+			if (res != 0) return res;
+			res = comparer.Compare (item4, t.item4);
+			if (res != 0) return res;
+			return comparer.Compare (item5, t.item5);
 		}
 
 		public override bool Equals (object obj)
@@ -476,9 +526,25 @@ namespace System
 			return ((IStructuralComparable) this).CompareTo (obj, Comparer<object>.Default);
 		}
 
-		[MonoTODO] int IStructuralComparable.CompareTo (object other, IComparer comparer)
+		int IStructuralComparable.CompareTo (object other, IComparer comparer)
 		{
-			throw new NotImplementedException ();
+			var t = other as Tuple<T1, T2, T3, T4, T5, T6>;
+			if (t == null) {
+				if (other == null) return 1;
+				throw new ArgumentException ();
+			}
+
+			int res = comparer.Compare (item1, t.item1);
+			if (res != 0) return res;
+			res = comparer.Compare (item2, t.item2);
+			if (res != 0) return res;
+			res = comparer.Compare (item3, t.item3);
+			if (res != 0) return res;
+			res = comparer.Compare (item4, t.item4);
+			if (res != 0) return res;
+			res = comparer.Compare (item5, t.item5);
+			if (res != 0) return res;
+			return comparer.Compare (item6, t.item6);
 		}
 
 		public override bool Equals (object obj)
@@ -579,9 +645,27 @@ namespace System
 			return ((IStructuralComparable) this).CompareTo (obj, Comparer<object>.Default);
 		}
 
-		[MonoTODO] int IStructuralComparable.CompareTo (object other, IComparer comparer)
+		int IStructuralComparable.CompareTo (object other, IComparer comparer)
 		{
-			throw new NotImplementedException ();
+			var t = other as Tuple<T1, T2, T3, T4, T5, T6, T7>;
+			if (t == null) {
+				if (other == null) return 1;
+				throw new ArgumentException ();
+			}
+
+			int res = comparer.Compare (item1, t.item1);
+			if (res != 0) return res;
+			res = comparer.Compare (item2, t.item2);
+			if (res != 0) return res;
+			res = comparer.Compare (item3, t.item3);
+			if (res != 0) return res;
+			res = comparer.Compare (item4, t.item4);
+			if (res != 0) return res;
+			res = comparer.Compare (item5, t.item5);
+			if (res != 0) return res;
+			res = comparer.Compare (item6, t.item6);
+			if (res != 0) return res;
+			return comparer.Compare (item7, t.item7);
 		}
 
 		public override bool Equals (object obj)
@@ -678,9 +762,29 @@ namespace System
 			return ((IStructuralComparable) this).CompareTo (obj, Comparer<object>.Default);
 		}
 
-		[MonoTODO] int IStructuralComparable.CompareTo (object other, IComparer comparer)
+		int IStructuralComparable.CompareTo (object other, IComparer comparer)
 		{
-			throw new NotImplementedException ();
+			var t = other as Tuple<T1, T2, T3, T4, T5, T6, T7, TRest>;
+			if (t == null) {
+				if (other == null) return 1;
+				throw new ArgumentException ();
+			}
+
+			int res = comparer.Compare (item1, t.item1);
+			if (res != 0) return res;
+			res = comparer.Compare (item2, t.item2);
+			if (res != 0) return res;
+			res = comparer.Compare (item3, t.item3);
+			if (res != 0) return res;
+			res = comparer.Compare (item4, t.item4);
+			if (res != 0) return res;
+			res = comparer.Compare (item5, t.item5);
+			if (res != 0) return res;
+			res = comparer.Compare (item6, t.item6);
+			if (res != 0) return res;
+			res = comparer.Compare (item7, t.item7);
+			if (res != 0) return res;
+			return comparer.Compare (rest, t.rest);
 		}
 
 		public override bool Equals (object obj)
@@ -788,10 +892,25 @@ public class TupleGen
 			Console.WriteLine ("\t\t}");
 			
 			Console.WriteLine ();
-			Console.WriteLine ("\t\t[MonoTODO] int IStructuralComparable.CompareTo (object other, IComparer comparer)");
+			Console.WriteLine ("\t\tint IStructuralComparable.CompareTo (object other, IComparer comparer)");
 			Console.WriteLine ("\t\t{");
-			Console.WriteLine ("\t\t\tthrow new NotImplementedException ();");
-			Console.WriteLine ("\t\t}");
+			Console.WriteLine ("\t\t\tvar t = other as {0};", type_name);
+			Console.WriteLine ("\t\t\tif (t == null) {");
+			Console.WriteLine ("\t\t\t\tif (other == null) return 1;");
+			Console.WriteLine ("\t\t\t\tthrow new ArgumentException ();");
+			Console.WriteLine ("\t\t\t}");
+			Console.WriteLine ();
+			
+			for (int i = 1; i < arity; ++i) {
+				Console.Write ("\t\t\t");
+				if (i == 1)
+					Console.Write ("int ");
+
+				Console.WriteLine ("res = comparer.Compare ({0}, t.{0});", GetItemName (i));
+				Console.WriteLine ("\t\t\tif (res != 0) return res;");
+			}
+			Console.WriteLine ("\t\t\treturn comparer.Compare ({0}, t.{0});", GetItemName (arity));
+			Console.WriteLine ("\t\t}");			
 			
 			Console.WriteLine ();
 			Console.WriteLine ("\t\tpublic override bool Equals (object obj)");
@@ -827,7 +946,7 @@ public class TupleGen
 			Console.WriteLine ();
 			Console.WriteLine ("\t\tpublic override int GetHashCode ()");
 			Console.WriteLine ("\t\t{");
-			Console.WriteLine ("\t\t\treturn GetHashCode (EqualityComparer<object>.Default);");
+			Console.WriteLine ("\t\t\treturn ((IStructuralEquatable) this).GetHashCode (EqualityComparer<object>.Default);");
 			Console.WriteLine ("\t\t}");
 			
 			Console.WriteLine ();
diff --git a/mcs/class/corlib/System/Type.cs b/mcs/class/corlib/System/Type.cs
index cd207e9..887145c 100644
--- a/mcs/class/corlib/System/Type.cs
+++ b/mcs/class/corlib/System/Type.cs
@@ -1,8 +1,9 @@
 //
 // System.Type.cs
 //
-// Author:
+// Authors:
 //   Miguel de Icaza (miguel at ximian.com)
+//   Marek Safar (marek.safar at gmail.com)
 //
 // (C) Ximian, Inc.  http://www.ximian.com
 //
@@ -34,6 +35,7 @@ using System.Diagnostics;
 using System.Reflection;
 using System.Reflection.Emit;
 using System.Collections;
+using System.Collections.Generic;
 using System.Runtime.InteropServices;
 using System.Runtime.CompilerServices;
 using System.Globalization;
@@ -381,11 +383,14 @@ namespace System {
 		}
 
 		public override MemberTypes MemberType {
-			get {return MemberTypes.TypeInfo;}
+			get {
+				return MemberTypes.TypeInfo;
+			}
 		}
 
-		override
-		public abstract Module Module {get;}
+		public abstract override Module Module {
+			get;
+		}
 	
 		public abstract string Namespace {get;}
 
@@ -435,7 +440,7 @@ namespace System {
 #if NET_4_0
 		public virtual bool Equals (Type o)
 		{
-			if ((object)o == this)
+			if ((object)o == (object)this)
 				return true;
 			if ((object)o == null)
 				return false;
@@ -446,7 +451,7 @@ namespace System {
 			o = o.UnderlyingSystemType;
 			if ((object)o == null)
 				return false;
-			if ((object)o == this)
+			if ((object)o == (object)this)
 				return true;
 			return me.EqualsInternal (o);
 		}		
@@ -504,7 +509,7 @@ namespace System {
 			return result;
 		}
 
-		NotImplementedException CreateNIE () {
+		static NotImplementedException CreateNIE () {
 			return new NotImplementedException ();
 		}
 
@@ -804,13 +809,13 @@ namespace System {
 			if (filter == null)
 				throw new ArgumentNullException ("filter");
 
-			ArrayList ifaces = new ArrayList ();
+			var ifaces = new List<Type> ();
 			foreach (Type iface in GetInterfaces ()) {
 				if (filter (iface, filterCriteria))
 					ifaces.Add (iface);
 			}
 
-			return (Type []) ifaces.ToArray (typeof (Type));
+			return ifaces.ToArray ();
 		}
 		
 		public Type GetInterface (string name) {
@@ -1583,7 +1588,7 @@ namespace System {
 		public virtual StructLayoutAttribute StructLayoutAttribute {
 			get {
 #if NET_4_0
-				throw CreateNIE ();
+				throw new NotSupportedException ();
 #else
 				return GetStructLayoutAttribute ();
 #endif
@@ -1610,8 +1615,13 @@ namespace System {
 			else
 				attr.CharSet = CharSet.Auto;
 
-			if (kind != LayoutKind.Auto)
-				GetPacking (out attr.Pack, out attr.Size);
+			if (kind != LayoutKind.Auto) {
+				int packing;
+				GetPacking (out packing, out attr.Size);
+				// 0 means no data provided, we end up with default value
+				if (packing != 0)
+					attr.Pack = packing;
+			}
 
 			return attr;
 		}
@@ -1640,7 +1650,7 @@ namespace System {
 		}			
 
 
-#if NET_4_0 || BOOTSTRAP_NET_4_0
+#if NET_4_0
 		public virtual bool IsEquivalentTo (Type other)
 		{
 			return this == other;
diff --git a/mcs/class/corlib/System/_AppDomain.cs b/mcs/class/corlib/System/_AppDomain.cs
index c233040..4c717b5 100644
--- a/mcs/class/corlib/System/_AppDomain.cs
+++ b/mcs/class/corlib/System/_AppDomain.cs
@@ -103,8 +103,8 @@ namespace System
 
 #if !NET_4_0
 		[SecurityPermission (SecurityAction.LinkDemand, Infrastructure = true)]
-		object GetLifetimeService ();
 #endif
+		object GetLifetimeService ();
 
 		Type GetType ();
 
diff --git a/mcs/class/corlib/Test/System.Collections.Concurrent/ChangeLog b/mcs/class/corlib/Test/System.Collections.Concurrent/ChangeLog
index 65b6c10..c999fb4 100644
--- a/mcs/class/corlib/Test/System.Collections.Concurrent/ChangeLog
+++ b/mcs/class/corlib/Test/System.Collections.Concurrent/ChangeLog
@@ -1,3 +1,22 @@
+2011-01-07  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Remove now unused internal classes
+
+2011-01-04  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Use correct exception when a key is not found in
+	ConcurrentDictionary
+
+2010-12-16  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Add support for storing elements with the same hashcode in
+	ConcurrentDictionary. Add corresponding unit test.
+
+2010-11-03  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Implement Partitioner.Create int and long overloads. Add
+	corresponding unit tests.
+
 2010-08-27  Jérémie Laval  <jeremie.laval at gmail.com>
 
 	Allow at max one Remove operation to fail in tests.
diff --git a/mcs/class/corlib/Test/System.Collections.Concurrent/ConcurrentDictionaryTests.cs b/mcs/class/corlib/Test/System.Collections.Concurrent/ConcurrentDictionaryTests.cs
index 4be09ac..e0a52d4 100644
--- a/mcs/class/corlib/Test/System.Collections.Concurrent/ConcurrentDictionaryTests.cs
+++ b/mcs/class/corlib/Test/System.Collections.Concurrent/ConcurrentDictionaryTests.cs
@@ -26,6 +26,7 @@
 using System;
 using System.Threading;
 using MonoTests.System.Threading.Tasks;
+using System.Collections.Generic;
 using System.Collections.Concurrent;
 
 using NUnit;
@@ -146,7 +147,7 @@ namespace MonoTests.System.Collections.Concurrent
 			Assert.AreEqual(3, map.Count, "#3");
 		}
 		
-		[Test, ExpectedException(typeof(ArgumentException))]
+		[Test, ExpectedException(typeof(KeyNotFoundException))]
 		public void GetValueUnknownTest()
 		{
 			int val;
@@ -211,6 +212,54 @@ namespace MonoTests.System.Collections.Concurrent
 			Assert.IsFalse (map.ContainsKey ("baz"));
 			Assert.IsFalse (map.ContainsKey ("oof"));
 		}
+
+		class DumbClass : IEquatable<DumbClass>
+		{
+			int foo;
+
+			public DumbClass (int foo)
+			{
+				this.foo = foo;
+			}
+
+			public int Foo {
+				get {
+					return foo;
+				}
+			}
+
+			public override bool Equals (object rhs)
+			{
+				DumbClass temp = rhs as DumbClass;
+				return temp == null ? false : Equals (temp);
+			}
+
+			public bool Equals (DumbClass rhs)
+			{
+				return this.foo == rhs.foo;
+			}
+
+			public override int GetHashCode ()
+			{
+				return 5;
+			}
+		}
+
+		[Test]
+		public void SameHashCodeInsertTest ()
+		{
+			var classMap = new ConcurrentDictionary<DumbClass, string> ();
+
+			var class1 = new DumbClass (1);
+			var class2 = new DumbClass (2);
+
+			Assert.IsTrue (classMap.TryAdd (class1, "class1"), "class 1");
+			Console.WriteLine ();
+			Assert.IsTrue (classMap.TryAdd (class2, "class2"), "class 2");
+
+			Assert.AreEqual ("class1", classMap[class1], "class 1 check");
+			Assert.AreEqual ("class2", classMap[class2], "class 2 check");
+		}
 	}
 }
 #endif
diff --git a/mcs/class/corlib/Test/System.Collections.Concurrent/ConcurrentSkipListTests.cs b/mcs/class/corlib/Test/System.Collections.Concurrent/ConcurrentSkipListTests.cs
deleted file mode 100644
index 27d8cd6..0000000
--- a/mcs/class/corlib/Test/System.Collections.Concurrent/ConcurrentSkipListTests.cs
+++ /dev/null
@@ -1,112 +0,0 @@
-#if NET_4_0
-// ConcurrentSkipListTests.cs
-//
-// Copyright (c) 2008 Jérémie "Garuma" Laval
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-//
-//
-
-using System;
-using System.Threading;
-using System.Collections.Concurrent;
-
-using NUnit;
-using NUnit.Framework;
-
-namespace MonoTests.System.Collections.Concurrent
-{
-	[TestFixtureAttribute]
-	public class ConcurrentSkipListTests
-	{
-		ConcurrentSkipList<int> skiplist;
-
-		[SetUpAttribute]
-		public void Setup()
-		{
-			skiplist = new ConcurrentSkipList<int>();
-		}
-
-		void AddStuff()
-		{
-			skiplist.TryAdd(1);
-			skiplist.TryAdd(2);
-			skiplist.TryAdd(3);
-			skiplist.TryAdd(4);
-		}
-
-		[TestAttribute]
-		public void AddTestCase()
-		{
-			Assert.IsTrue(skiplist.TryAdd(1), "#1");
-			Assert.AreEqual(1, skiplist.Count, "#2");
-		}
-
-		[TestAttribute]
-		public void RemoveTestCase()
-		{
-			Assert.IsFalse(skiplist.Remove(2), "#1");
-			Assert.IsFalse(skiplist.Remove(3), "#2");
-			
-			AddStuff();
-			int count = skiplist.Count;
-			Assert.IsTrue(skiplist.Remove(1), "#3");
-			Assert.IsFalse(skiplist.Remove(1), "#4");
-			Assert.IsTrue(skiplist.Remove(4), "#5");
-			Assert.AreEqual(count - 2, skiplist.Count, "#6");
-		}
-		
-		[Test]
-		public void ContainsTestCase()
-		{
-			AddStuff();
-			Assert.IsTrue(skiplist.Contains(1), "#1");
-			Assert.IsTrue(skiplist.Contains(2), "#2");
-			Assert.IsTrue(skiplist.Contains(3), "#3");
-			Assert.IsTrue(skiplist.Contains(4), "#4");
-		}
-
-		[TestAttribute]
-		public void EnumerateTestCase()
-		{
-			AddStuff();
-			
-			string s = string.Empty;
-			foreach (int i in skiplist)
-				s += i.ToString();
-
-			Assert.AreEqual("1234", s);
-		}
-
-		[TestAttribute]
-		public void ToArrayTestCase()
-		{
-			int[] expected = new int[] { 1, 2, 3, 4 };
-			AddStuff();
-			int[] array = skiplist.ToArray();
-			CollectionAssert.AreEqual(expected, array, "#1");
-
-			Array.Clear(array, 0, array.Length);
-			skiplist.CopyTo(array, 0);
-			CollectionAssert.AreEqual(expected, array, "#2");
-		}
-		 
-	}
-}
-#endif
diff --git a/mcs/class/corlib/Test/System.Collections.Concurrent/PartitionerTests.cs b/mcs/class/corlib/Test/System.Collections.Concurrent/PartitionerTests.cs
new file mode 100644
index 0000000..b2102e5
--- /dev/null
+++ b/mcs/class/corlib/Test/System.Collections.Concurrent/PartitionerTests.cs
@@ -0,0 +1,93 @@
+// 
+// PartitionerTests.cs
+//  
+// Author:
+//       Jérémie "Garuma" Laval <jeremie.laval at gmail.com>
+// 
+// Copyright (c) 2009 Jérémie "Garuma" Laval
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+#if NET_4_0
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Concurrent;
+
+using NUnit.Framework;
+
+namespace MonoTests.System.Collections.Concurrent
+{
+	[TestFixture]
+	public class PartitionerTests
+	{
+		[Test]
+		public void PartitionerCreateIntegerWithExplicitRange ()
+		{
+			OrderablePartitioner<Tuple<int, int>> partitioner = Partitioner.Create (1, 20, 5);
+			var partitions = partitioner.GetOrderablePartitions (3);
+			Assert.AreEqual (3, partitions.Count);
+			CollectionAssert.AllItemsAreNotNull (partitions);
+			var iterator = partitions[0];			
+			Assert.IsTrue (iterator.MoveNext ());
+			Assert.IsTrue (iterator.Current.Equals (Create (0, 1, 6)));
+			Assert.IsTrue (iterator.MoveNext ());
+			Assert.IsTrue (iterator.Current.Equals (Create (1, 6, 11)));
+			Assert.IsTrue (iterator.MoveNext ());
+			Assert.IsTrue (iterator.Current.Equals (Create (2, 11, 16)));
+			Assert.IsTrue (iterator.MoveNext ());
+			Assert.IsTrue (iterator.Current.Equals (Create (3, 16, 20)));
+			
+			Assert.IsFalse (partitions[1].MoveNext ());
+			Assert.IsFalse (partitions[2].MoveNext ());
+		}
+
+		[Test]
+		public void PartitionerCreateLongWithExplicitRange ()
+		{
+			OrderablePartitioner<Tuple<long, long>> partitioner = Partitioner.Create ((long)1, (long)20, (long)5);
+			var partitions = partitioner.GetOrderablePartitions (3);
+			Assert.AreEqual (3, partitions.Count);
+			CollectionAssert.AllItemsAreNotNull (partitions);
+			var iterator = partitions[0];			
+			Assert.IsTrue (iterator.MoveNext ());
+			Assert.IsTrue (iterator.Current.Equals (CreateL (0, 1, 6)));
+			Assert.IsTrue (iterator.MoveNext ());
+			Assert.IsTrue (iterator.Current.Equals (CreateL (1, 6, 11)));
+			Assert.IsTrue (iterator.MoveNext ());
+			Assert.IsTrue (iterator.Current.Equals (CreateL (2, 11, 16)));
+			Assert.IsTrue (iterator.MoveNext ());
+			Assert.IsTrue (iterator.Current.Equals (CreateL (3, 16, 20)));
+			
+			Assert.IsFalse (partitions[1].MoveNext ());
+			Assert.IsFalse (partitions[2].MoveNext ());
+		}
+
+		static KeyValuePair<long, Tuple<int, int>> Create (long ind, int i1, int i2)
+		{
+			return new KeyValuePair<long, Tuple<int, int>> (ind, Tuple.Create (i1, i2));
+		}
+
+		static KeyValuePair<long, Tuple<long, long>> CreateL (long ind, long i1, long i2)
+		{
+			return new KeyValuePair<long, Tuple<long, long>> (ind, Tuple.Create (i1, i2));
+		}
+	}
+}
+#endif
diff --git a/mcs/class/corlib/Test/System.IO/BinaryWriterTest.cs b/mcs/class/corlib/Test/System.IO/BinaryWriterTest.cs
index 98e71eb..40b4ef8 100644
--- a/mcs/class/corlib/Test/System.IO/BinaryWriterTest.cs
+++ b/mcs/class/corlib/Test/System.IO/BinaryWriterTest.cs
@@ -512,11 +512,80 @@ public class BinaryWriterTest {
 		Assert.AreEqual (0, bytes [9], "test#11");		
 	}
 
+	[Test]
+	public void BaseStreamCallsFlush ()
+	{
+		FlushStream stream = new FlushStream ();
+		BinaryWriter writer = new BinaryWriter (stream);
+		Stream s = writer.BaseStream;
+		Assert.IsTrue (stream.FlushCalled);
+	}
+
 	private void DeleteFile (string path)
 	{
 		if (File.Exists (path))
 			File.Delete (path);
 	}
+
+	class FlushStream : Stream
+	{
+		public bool FlushCalled;
+
+		public override bool CanRead {
+			get { return true; }
+		}
+
+		public override bool CanSeek {
+                        get { return true; }
+                }
+
+                public override bool CanWrite {
+                        get { return true; }
+                }
+
+		public override long Length {
+			get { return 0; }
+		}
+
+		public override long Position {
+			get { return 0; }
+			set { }
+		}
+
+		public override void Flush ()
+		{
+			FlushCalled = true;
+		}
+
+		public override int Read (byte[] buffer, int offset, int count)
+		{
+			return 0;
+		}
+
+		public override int ReadByte ()
+		{
+			return -1;
+		}
+
+		public override long Seek (long offset, SeekOrigin origin)
+		{
+			return 0;
+		}
+
+		public override void SetLength (long value)
+		{
+		}
+
+		public override void Write (byte[] buffer, int offset, int count)
+		{
+		}
+
+		public override void WriteByte (byte value)
+		{
+		}
+	}
+
+
 }
 
 }
diff --git a/mcs/class/corlib/Test/System.IO/ChangeLog b/mcs/class/corlib/Test/System.IO/ChangeLog
index b7705ff..568a606 100644
--- a/mcs/class/corlib/Test/System.IO/ChangeLog
+++ b/mcs/class/corlib/Test/System.IO/ChangeLog
@@ -1,3 +1,12 @@
+2010-10-24  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	BinaryWriter.BaseStream calls Flush()
+
+	Before returning the base stream, BinaryWriter.BaseStream calls
+	Flush on it. Added test for this.
+
+	Fixes bug #647948.
+
 2010-05-27  William Holmes  <billholmes54 at gmail.com>
 
 	* DirectoryTest.cs: Adding test for bug 580090.
diff --git a/mcs/class/corlib/Test/System.IO/ChangeLog b/mcs/class/corlib/Test/System.IO/ChangeLog.old
similarity index 100%
copy from mcs/class/corlib/Test/System.IO/ChangeLog
copy to mcs/class/corlib/Test/System.IO/ChangeLog.old
diff --git a/mcs/class/corlib/Test/System.Reflection.Emit/ChangeLog b/mcs/class/corlib/Test/System.Reflection.Emit/ChangeLog
index 4172253..5813330 100644
--- a/mcs/class/corlib/Test/System.Reflection.Emit/ChangeLog
+++ b/mcs/class/corlib/Test/System.Reflection.Emit/ChangeLog
@@ -1,3 +1,51 @@
+2010-11-30  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Check for null and valuetypes.
+
+2010-10-26  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* TypeBuilderTest.cs: Add regression test.
+
+	Fixes #649237
+
+2010-10-25  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Add regression test for #649017.
+
+2010-10-22  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* TypeBuilderTest.cs: Add regression test.
+
+	Fixes #648391
+
+2010-10-19  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Add regression test for #640780
+
+2010-10-11  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* DynamicMethodTest.cs: Add test for GetCurrentMethod.
+
+	Fixes #640702
+
+2010-10-08  Jb Evain  <jbevain at gmail.com>
+
+	Add tests for ModuleBuilder.ResolveMember on different kind of
+	tokens
+
+2010-10-07  Jb Evain  <jbevain at gmail.com>
+
+	Add tests for ModuleBuilder.ResolveMemberToken
+
+2010-10-07  Jb Evain  <jbevain at gmail.com>
+
+	Fix test
+
+2010-10-07  Jb Evain  <jbevain at gmail.com>
+
+	[Test] Add test for ModuleBuilder.ResolveFieldToken on generic
+	fields.
+
 2010-09-20  Rodrigo Kumpera  <kumpera at gmail.com>
 
 	* AssemblyBuilderTest.cs: Add test for GetTypes () and incomplete
@@ -5,6 +53,12 @@
 
 	Fixes #640288
 
+2010-09-13  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* MethodBuilderTest.cs: Add test for #384127.
+
+	Fixes bug #384127.
+
 2010-08-18  Zoltan Varga  <vargaz at gmail.com>
 
 	Fix the corlib tests build.
diff --git a/mcs/class/corlib/Test/System.Reflection.Emit/CustomAttributeBuilderTest.cs b/mcs/class/corlib/Test/System.Reflection.Emit/CustomAttributeBuilderTest.cs
index 175e0bd..c104f4e 100644
--- a/mcs/class/corlib/Test/System.Reflection.Emit/CustomAttributeBuilderTest.cs
+++ b/mcs/class/corlib/Test/System.Reflection.Emit/CustomAttributeBuilderTest.cs
@@ -645,6 +645,39 @@ namespace MonoTests.System.Reflection.Emit
 						 typeof (C).GetConstructors ()[0],
 						 new object[] { new C (1) });
 		}
+
+
+		[Test]
+		[ExpectedException (typeof (ArgumentException))]
+		public void ValueTypeParam_Null ()
+		{
+	        ConstructorInfo classCtorInfo = 
+	            typeof (CattrD).GetConstructors ()[0];
+	
+	        CustomAttributeBuilder typeCABuilder = new CustomAttributeBuilder (
+	            classCtorInfo, new object [] { null });
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentException))]
+		public void ValueTypeArrayParam_Null ()
+		{
+	        ConstructorInfo classCtorInfo = 
+	            typeof (CattrE).GetConstructors ()[0];
+	
+	        CustomAttributeBuilder typeCABuilder = new CustomAttributeBuilder (
+	            classCtorInfo, new object [] { new object[] { null } });
+		}
+		
+		public class CattrD : Attribute
+		{
+		    public CattrD (bool b) {}
+		}
+		
+		public class CattrE : Attribute
+		{
+		    public CattrE (bool[] b) {}
+		}
 	}
 }
 
diff --git a/mcs/class/corlib/Test/System.Reflection.Emit/DynamicMethodTest.cs b/mcs/class/corlib/Test/System.Reflection.Emit/DynamicMethodTest.cs
index b9a37ec..5be52cf 100644
--- a/mcs/class/corlib/Test/System.Reflection.Emit/DynamicMethodTest.cs
+++ b/mcs/class/corlib/Test/System.Reflection.Emit/DynamicMethodTest.cs
@@ -399,6 +399,20 @@ namespace MonoTests.System.Reflection.Emit
 
 			Assert.IsTrue (function ());
 		}
+
+	public delegate object RetObj();
+		[Test] //#640702
+		public void GetCurrentMethodWorksWithDynamicMethods ()
+		{
+	        DynamicMethod dm = new DynamicMethod("Foo", typeof(object), null);
+	        ILGenerator ilgen = dm.GetILGenerator();
+	        ilgen.Emit(OpCodes.Call, typeof(MethodBase).GetMethod("GetCurrentMethod"));
+	        ilgen.Emit(OpCodes.Ret);
+	        RetObj del = (RetObj)dm.CreateDelegate(typeof(RetObj));
+		    MethodInfo res = (MethodInfo)del();
+			Assert.AreEqual (dm.Name, res.Name, "#1");
+
+		}
 	}
 }
 
diff --git a/mcs/class/corlib/Test/System.Reflection.Emit/ILGeneratorTest.cs b/mcs/class/corlib/Test/System.Reflection.Emit/ILGeneratorTest.cs
index fa3c9fc..616d687 100644
--- a/mcs/class/corlib/Test/System.Reflection.Emit/ILGeneratorTest.cs
+++ b/mcs/class/corlib/Test/System.Reflection.Emit/ILGeneratorTest.cs
@@ -6,6 +6,7 @@
 // (C) Novell, Inc.  http://www.novell.com
 
 using System;
+using System.Collections.Generic;
 using System.Reflection;
 using System.Reflection.Emit;
 using System.Runtime.InteropServices;
@@ -453,5 +454,52 @@ namespace MonoTests.System.Reflection.Emit
 
 			ig.Emit (OpCodes.Ldtoken, typeof (int).MakeByRefType ());
 		}
+
+
+
+		[Test] //bug #649017
+		public void GtdEncodingAsOpenInstance () {
+	        AssemblyName asmname = new AssemblyName ();
+	        asmname.Name = "test";
+	        AssemblyBuilder asmbuild = Thread.GetDomain ().DefineDynamicAssembly (asmname, AssemblyBuilderAccess.RunAndSave);
+	        ModuleBuilder modbuild = asmbuild.DefineDynamicModule ("modulename", "test.exe");
+	
+	        TypeBuilder myType = modbuild.DefineType ("Sample", TypeAttributes.Public);
+	
+	        string[] typeParamNames = { "TFirst" };
+	        myType.DefineGenericParameters (typeParamNames);
+	
+	        var nested = myType.DefineNestedType ("nested");
+	        nested.DefineGenericParameters (typeParamNames);
+	
+	        var m = myType.DefineMethod ("test", MethodAttributes.Public);
+	        m.SetParameters (myType);
+	
+	        var ilgen = m.GetILGenerator ();
+	        ilgen.Emit (OpCodes.Castclass, nested);
+	        ilgen.Emit (OpCodes.Castclass, typeof (List<>));
+	        ilgen.Emit (OpCodes.Ldtoken, nested);
+	        ilgen.Emit (OpCodes.Ldtoken, typeof (List<>));
+	
+	        var baked = myType.CreateType ();
+	        nested.CreateType ();
+	
+			var method = baked.GetMethod ("test");
+			var body = method.GetMethodBody ();
+			/*
+			The resulting IL is:
+			[ 0] 0x74 token:uint
+			[ 5] 0x74 token:uint
+			[10] 0xd0 token:uint
+			[10] 0xd0 token:uint
+			The first two tokens must be to typespecs and the last two to typeref/typedef*/
+			var il = body.GetILAsByteArray ();
+		
+			Assert.AreEqual (20, il.Length, "#1");
+			Assert.AreEqual (0x1B, il [4]); //typespec
+			Assert.AreEqual (0x1B, il [9]); //typespec
+			Assert.AreEqual (0x02, il [14]); //typedef
+			Assert.AreEqual (0x01, il [19]); //typeref
+		}
 	}
 }
diff --git a/mcs/class/corlib/Test/System.Reflection.Emit/MethodBuilderTest.cs b/mcs/class/corlib/Test/System.Reflection.Emit/MethodBuilderTest.cs
index 3e27b8a..402631f 100644
--- a/mcs/class/corlib/Test/System.Reflection.Emit/MethodBuilderTest.cs
+++ b/mcs/class/corlib/Test/System.Reflection.Emit/MethodBuilderTest.cs
@@ -1116,5 +1116,17 @@ namespace MonoTests.System.Reflection.Emit
 			Assert.AreEqual (1, body.LocalVariables.Count);
 			Assert.AreEqual (typeof (object), body.LocalVariables [0].LocalType);
 		}
+
+
+		[Test] //#384127
+		public void GetGenericArgumentsReturnsNullForNonGenericMethod ()
+		{
+			var tb = module.DefineType ("Base");
+	
+			var mb = tb.DefineMethod ("foo", MethodAttributes.Public, typeof (void), Type.EmptyTypes);
+	
+			Assert.IsNull (mb.GetGenericArguments ());
+
+		}
 	}
 }
diff --git a/mcs/class/corlib/Test/System.Reflection.Emit/ModuleBuilderTest.cs b/mcs/class/corlib/Test/System.Reflection.Emit/ModuleBuilderTest.cs
index b1e9409..a72afba 100644
--- a/mcs/class/corlib/Test/System.Reflection.Emit/ModuleBuilderTest.cs
+++ b/mcs/class/corlib/Test/System.Reflection.Emit/ModuleBuilderTest.cs
@@ -315,7 +315,23 @@ namespace MonoTests.System.Reflection.Emit
 			FieldBuilder fb = tb.DefineField ("foo", typeof (int), 0);
 			tb.CreateType ();
 
-			FieldInfo fi = mb.ResolveField (fb.GetToken ().Token);
+			FieldInfo fi = mb.ResolveField (0x04000001);
+			Assert.IsNotNull (fi);
+			Assert.AreEqual ("foo", fi.Name);
+		}
+
+		[Test]
+		public void ResolveGenericFieldBuilderOnGenericTypeBuilder ()
+		{
+			AssemblyBuilder ab = genAssembly ();
+			ModuleBuilder mb = ab.DefineDynamicModule ("foo.dll", "foo.dll");
+
+			TypeBuilder tb = mb.DefineType ("Foo`1");
+			var t = tb.DefineGenericParameters ("T") [0];
+			FieldBuilder fb = tb.DefineField ("foo", t, 0);
+			tb.CreateType ();
+
+			FieldInfo fi = mb.ResolveField (0x04000001);
 			Assert.IsNotNull (fi);
 			Assert.AreEqual ("foo", fi.Name);
 		}
@@ -349,6 +365,205 @@ namespace MonoTests.System.Reflection.Emit
 			Assert.IsNotNull (mi);
 			Assert.AreEqual ("Frub", mi.Name);
 		}
+
+		[Test]
+		public void ResolveMemberField ()
+		{
+			var assembly = genAssembly ();
+			var module = assembly.DefineDynamicModule ("foo.dll", "foo.dll");
+
+			var type = module.DefineType ("Foo");
+			var method = type.DefineMethod ("Str", MethodAttributes.Static, typeof (string), Type.EmptyTypes);
+			var il = method.GetILGenerator ();
+
+			il.Emit (OpCodes.Ldsfld, typeof (string).GetField ("Empty"));
+			il.Emit (OpCodes.Ret);
+
+			type.CreateType ();
+
+			var string_empty = (FieldInfo) module.ResolveMember (0x0a000001);
+			Assert.IsNotNull (string_empty);
+			Assert.AreEqual ("Empty", string_empty.Name);
+			Assert.AreEqual (typeof (string), string_empty.DeclaringType);
+		}
+
+		[Test]
+		public void ResolveMemberMethod ()
+		{
+			var assembly = genAssembly ();
+			var module = assembly.DefineDynamicModule ("foo.dll", "foo.dll");
+
+			var type = module.DefineType ("Foo");
+			var method = type.DefineMethod ("Str", MethodAttributes.Static, typeof (void), Type.EmptyTypes);
+			var il = method.GetILGenerator ();
+
+			il.Emit (OpCodes.Call, typeof (Console).GetMethod ("WriteLine", Type.EmptyTypes));
+			il.Emit (OpCodes.Ret);
+
+			type.CreateType ();
+
+			var writeline = (MethodInfo) module.ResolveMember (0x0a000001);
+			Assert.IsNotNull (writeline);
+			Assert.AreEqual ("WriteLine", writeline.Name);
+			Assert.AreEqual (typeof (Console), writeline.DeclaringType);
+		}
+
+		[Test]
+		public void ResolveMethodDefWithGenericArguments ()
+		{
+			var assembly = genAssembly ();
+			var module = assembly.DefineDynamicModule ("foo.dll", "foo.dll");
+
+			var type = module.DefineType ("Foo`1");
+			var t = type.DefineGenericParameters ("T") [0];
+
+			var method = type.DefineMethod ("Method", MethodAttributes.Static, typeof (void), new Type [] { t });
+			method.GetILGenerator ().Emit (OpCodes.Ret);
+
+			type.DefineDefaultConstructor (MethodAttributes.Public);
+
+			type.CreateType ();
+
+			var resolved_method = (MethodInfo) module.ResolveMember (0x06000001, new [] { typeof (string) }, Type.EmptyTypes);
+			Assert.IsNotNull (resolved_method);
+			Assert.AreEqual ("Method", resolved_method.Name);
+			Assert.IsTrue (resolved_method.GetParameters () [0].ParameterType.IsGenericParameter);
+		}
+
+		[Test]
+		public void ResolveFieldDefWithGenericArguments ()
+		{
+			var assembly = genAssembly ();
+			var module = assembly.DefineDynamicModule ("foo.dll", "foo.dll");
+
+			var type = module.DefineType ("Foo`1");
+			var t = type.DefineGenericParameters ("T") [0];
+
+			var field = type.DefineField ("field", t, FieldAttributes.Public);
+
+			type.CreateType ();
+
+			var resolved_field = (FieldInfo) module.ResolveMember (0x04000001, new [] { typeof (string) }, Type.EmptyTypes);
+			Assert.IsNotNull (resolved_field);
+			Assert.AreEqual ("field", resolved_field.Name);
+			Assert.IsTrue (resolved_field.FieldType.IsGenericParameter);
+		}
+
+		[Test]
+		public void ResolveTypeDefWithGenericArguments ()
+		{
+			var assembly = genAssembly ();
+			var module = assembly.DefineDynamicModule ("foo.dll", "foo.dll");
+
+			var type = module.DefineType ("Foo`1");
+			var t = type.DefineGenericParameters ("T") [0];
+
+			type.CreateType ();
+
+			var foo = (Type) module.ResolveMember (0x02000002, new [] { typeof (string) }, Type.EmptyTypes);
+			Assert.IsNotNull (foo);
+			Assert.AreEqual ("Foo`1", foo.Name);
+			Assert.IsTrue (foo.IsGenericTypeDefinition);
+		}
+
+		[Test]
+		public void ResolveFieldMemberRefWithGenericArguments ()
+		{
+			var assembly = genAssembly ();
+			var module = assembly.DefineDynamicModule ("foo.dll", "foo.dll");
+
+			var type = module.DefineType ("Foo`1");
+			var t = type.DefineGenericParameters ("T") [0];
+
+			var field = type.DefineField ("field", t, FieldAttributes.Public);
+
+			var method = type.DefineMethod ("Method", MethodAttributes.Public, typeof (void), Type.EmptyTypes);
+			var il = method.GetILGenerator ();
+
+			il.Emit (OpCodes.Ldarg_0);
+			il.Emit (OpCodes.Ldfld, field); // this triggers the creation of a MemberRef on a generic TypeSpec
+			il.Emit (OpCodes.Pop);
+			il.Emit (OpCodes.Ret);
+
+			type.CreateType ();
+
+			var resolved_field = (FieldInfo) module.ResolveMember (0x0a000001, new [] { typeof (string) }, null);
+			Assert.IsNotNull (resolved_field);
+			Assert.AreEqual ("field", resolved_field.Name);
+			Assert.AreEqual (typeof (string), resolved_field.FieldType);
+		}
+
+		[Test]
+		public void ResolveMethodMemberRefWithGenericArguments ()
+		{
+			var assembly = genAssembly ();
+			var module = assembly.DefineDynamicModule ("foo.dll", "foo.dll");
+
+			var type = module.DefineType ("Foo`1");
+			var t = type.DefineGenericParameters ("T") [0];
+
+			var field = type.DefineField ("field", t, FieldAttributes.Public);
+
+			var method = type.DefineMethod ("Method", MethodAttributes.Public, typeof (void), new Type [] { t });
+			method.GetILGenerator ().Emit (OpCodes.Ret);
+
+			var ctor = type.DefineMethod ("Caller", MethodAttributes.Public, typeof (void), Type.EmptyTypes);
+			var il = ctor.GetILGenerator ();
+
+			il.Emit (OpCodes.Ldarg_0);
+			il.Emit (OpCodes.Ldarg_0);
+			il.Emit (OpCodes.Ldfld, field); // this triggers the creation of a MemberRef on a generic TypeSpec
+			il.Emit (OpCodes.Callvirt, method); // this too
+			il.Emit (OpCodes.Ret);
+
+			type.DefineDefaultConstructor (MethodAttributes.Public);
+
+			type.CreateType ();
+
+			var resolved_method = (MethodInfo) module.ResolveMember (0x0a000002, new [] { typeof (string) }, null);
+			Assert.IsNotNull (resolved_method);
+			Assert.AreEqual ("Method", resolved_method.Name);
+			Assert.AreEqual (typeof (string), resolved_method.GetParameters () [0].ParameterType);
+		}
+
+		[Test]
+		public void ResolveMethodSpecWithGenericArguments ()
+		{
+			var assembly = genAssembly ();
+			var module = assembly.DefineDynamicModule ("foo.dll", "foo.dll");
+
+			var type = module.DefineType ("Foo`1");
+			var t = type.DefineGenericParameters ("T") [0];
+
+			var field = type.DefineField ("field", t, FieldAttributes.Public);
+
+			var method = type.DefineMethod ("Method", MethodAttributes.Public);
+			var s = method.DefineGenericParameters ("S") [0];
+			method.SetReturnType (typeof (void));
+			method.SetParameters (t, s);
+			method.GetILGenerator ().Emit (OpCodes.Ret);
+
+			var ctor = type.DefineMethod ("Caller", MethodAttributes.Public, typeof (void), Type.EmptyTypes);
+			var il = ctor.GetILGenerator ();
+
+			il.Emit (OpCodes.Ldarg_0);
+			il.Emit (OpCodes.Ldarg_0);
+			il.Emit (OpCodes.Ldfld, field); // this triggers the creation of a MemberRef on a generic TypeSpec
+			il.Emit (OpCodes.Ldarg_0);
+			il.Emit (OpCodes.Ldfld, field); // this triggers the creation of a MemberRef on a generic TypeSpec
+			il.Emit (OpCodes.Callvirt, method); // this triggers the creation of a MethodSpec
+			il.Emit (OpCodes.Ret);
+
+			type.DefineDefaultConstructor (MethodAttributes.Public);
+
+			type.CreateType ();
+
+			var resolved_method = (MethodInfo) module.ResolveMember (0x2b000001, new [] { typeof (string) }, new [] { typeof (int) });
+			Assert.IsNotNull (resolved_method);
+			Assert.AreEqual ("Method", resolved_method.Name);
+			Assert.AreEqual (typeof (string), resolved_method.GetParameters () [0].ParameterType);
+			Assert.AreEqual (typeof (int), resolved_method.GetParameters () [1].ParameterType);
+		}
 #endif
 
 		[Test]
diff --git a/mcs/class/corlib/Test/System.Reflection.Emit/TypeBuilderTest.cs b/mcs/class/corlib/Test/System.Reflection.Emit/TypeBuilderTest.cs
index a321308..509646a 100644
--- a/mcs/class/corlib/Test/System.Reflection.Emit/TypeBuilderTest.cs
+++ b/mcs/class/corlib/Test/System.Reflection.Emit/TypeBuilderTest.cs
@@ -10895,5 +10895,54 @@ namespace MonoTests.System.Reflection.Emit
 			Activator.CreateInstance(proxyType);
 		}
 
+		[Test] //Test for #640780
+		public void StaticMethodNotUsedInIfaceVtable ()
+		{
+			TypeBuilder tb1 = module.DefineType("Interface", TypeAttributes.Interface | TypeAttributes.Abstract);
+			tb1.DefineTypeInitializer().GetILGenerator().Emit(OpCodes.Ret);
+			tb1.DefineMethod("m", MethodAttributes.Public | MethodAttributes.Virtual | MethodAttributes.Abstract);
+			tb1.CreateType();
+			
+			TypeBuilder tb2 = module.DefineType("Class", TypeAttributes.Sealed);
+			tb2.AddInterfaceImplementation(tb1);
+			tb2.DefineMethod("m", MethodAttributes.Public | MethodAttributes.Virtual)
+			    .GetILGenerator().Emit(OpCodes.Ret);
+			tb2.DefineDefaultConstructor(MethodAttributes.Public);
+			
+			Activator.CreateInstance(tb2.CreateType());
+		}
+
+		[Test] //Test for #648391
+		public void GetConstructorCheckCtorDeclaringType ()
+		{
+			TypeBuilder myType = module.DefineType ("Sample", TypeAttributes.Public);
+			string[] typeParamNames = { "TFirst" };
+			GenericTypeParameterBuilder[] typeParams = myType.DefineGenericParameters (typeParamNames);
+			var ctor = myType.DefineDefaultConstructor (MethodAttributes.Public);
+			var ctori = TypeBuilder.GetConstructor (myType.MakeGenericType (typeof (int)), ctor);
+			try {
+				TypeBuilder.GetConstructor (myType.MakeGenericType (typeof (bool)), ctori);
+				Assert.Fail ("#1");
+			} catch (ArgumentException) {
+				//OK
+			}
+		}
+
+		[Test] //Test for #649237
+		public void GetFieldCheckFieldDeclaringType () {
+			TypeBuilder myType = module.DefineType ("Sample", TypeAttributes.Public);
+			myType.DefineGenericParameters ( "TFirst");
+			TypeBuilder otherType = module.DefineType ("Sample2", TypeAttributes.Public);
+			otherType.DefineGenericParameters ( "TFirst");
+
+			var field = myType.DefineField ("field", typeof (object), FieldAttributes.Public);
+
+			try {
+				TypeBuilder.GetField (otherType.MakeGenericType (typeof (int)), field);
+				Assert.Fail ("#1");
+			} catch (ArgumentException) {
+				//OK
+			}
+		}
 	}
 }
diff --git a/mcs/class/corlib/Test/System.Reflection/AssemblyNameTest.cs b/mcs/class/corlib/Test/System.Reflection/AssemblyNameTest.cs
index b826aec..937c427 100644
--- a/mcs/class/corlib/Test/System.Reflection/AssemblyNameTest.cs
+++ b/mcs/class/corlib/Test/System.Reflection/AssemblyNameTest.cs
@@ -1342,7 +1342,7 @@ public class AssemblyNameTest {
 		const string assemblyVersion = "1.2.3.4";
 
 		an = new AssemblyName (assemblyName + ", Version=" + assemblyVersion + 
-				", Culture=" + assemblyCulture + ", PublicKeyToken=" + GetTokenString (pk_token1));
+				", Culture=" + assemblyCulture + ", PublicKeyToken=" + GetTokenString (pk_token1) + ",ProcessorArchitecture=X86");
 		Assert.IsNull (an.CodeBase, "CodeBase");
 		Assert.AreEqual (CultureInfo.InvariantCulture, an.CultureInfo, "CultureInfo");
 		Assert.IsNull (an.EscapedCodeBase, "EscapedCodeBase");
@@ -1352,7 +1352,7 @@ public class AssemblyNameTest {
 		Assert.AreEqual (AssemblyHashAlgorithm.None, an.HashAlgorithm, "HashAlgorithm");
 		Assert.IsNull (an.KeyPair, "KeyPair");
 		Assert.AreEqual (assemblyName, an.Name, "Name");
-		Assert.AreEqual (ProcessorArchitecture.None, an.ProcessorArchitecture, "PA");
+		Assert.AreEqual (ProcessorArchitecture.X86, an.ProcessorArchitecture, "PA");
 		Assert.AreEqual (new Version (assemblyVersion), an.Version, "Version");
 		Assert.AreEqual (AssemblyVersionCompatibility.SameMachine, 
 			an.VersionCompatibility, "VersionCompatibility");
diff --git a/mcs/class/corlib/Test/System.Reflection/BinderTests.cs b/mcs/class/corlib/Test/System.Reflection/BinderTests.cs
index a602169..d7905d4 100644
--- a/mcs/class/corlib/Test/System.Reflection/BinderTests.cs
+++ b/mcs/class/corlib/Test/System.Reflection/BinderTests.cs
@@ -1332,5 +1332,27 @@ namespace MonoTests.System.Reflection
 	
 			AssertingBinder.Instance.SelectMethod (flags, new MethodBase [] {m0, m1}, new Type[] { typeof (int) }, null);
 	 	}
+
+		public static string Bug636939 (IFormatProvider provider, string pattern, params object [] args)
+		{
+			return string.Format (pattern, args);
+		}
+
+		[Test] // bug #636939
+		[Category ("NotWorking")]
+		public void SelectMethodWithParamArrayAndNonEqualTypeArguments ()
+		{
+            const BindingFlags flags =
+                BindingFlags.IgnoreCase | BindingFlags.Instance |
+                BindingFlags.Static | BindingFlags.Public |
+                BindingFlags.FlattenHierarchy | BindingFlags.InvokeMethod;
+
+			Assert.AreEqual ("foobarbaz", typeof (BinderTest).InvokeMember (
+				"bug636939",
+				flags,
+				null, // binder
+				null, // target
+				new object [] { CultureInfo.CurrentCulture, "foo{0}{1}", "bar", "baz" }));
+		}
 	}
 }
diff --git a/mcs/class/corlib/Test/System.Reflection/ChangeLog b/mcs/class/corlib/Test/System.Reflection/ChangeLog
index 8d055cf..eadfba7 100644
--- a/mcs/class/corlib/Test/System.Reflection/ChangeLog
+++ b/mcs/class/corlib/Test/System.Reflection/ChangeLog
@@ -1,3 +1,37 @@
+2011-01-05  Marek Safar  <marek.safar at gmail.com>
+
+	Fix invalid test constraint
+
+2010-11-25  Sebastien Pouliot  <sebastien at ximian.com>
+
+	Test case for security issue
+
+2010-11-25  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Add regression test for #655847
+
+2010-11-20  Zoltan Varga  <vargaz at gmail.com>
+
+	Add support for the processorArchitecture field in assembly names.
+	Fixes #655096.
+
+2010-10-04  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* MonoGenericClassTest.cs: Add regression test.
+
+2010-09-24  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix the setting of pointer type fields using reflection. Fixes
+	#641590.
+
+2010-09-20  Jb Evain  <jbevain at gmail.com>
+
+	Ignor test since its fix has been reverted
+
+2010-09-10  Jb Evain  <jbevain at gmail.com>
+
+	Add test for #636939
+
 2010-08-25  Rodrigo Kumpera  <kumpera at gmail.com>
 
 	Add test for #633671
diff --git a/mcs/class/corlib/Test/System.Reflection/FieldInfoTest.cs b/mcs/class/corlib/Test/System.Reflection/FieldInfoTest.cs
index 5bc090f..cb48d3a 100644
--- a/mcs/class/corlib/Test/System.Reflection/FieldInfoTest.cs
+++ b/mcs/class/corlib/Test/System.Reflection/FieldInfoTest.cs
@@ -74,7 +74,7 @@ namespace MonoTests.System.Reflection
 	}
 
 	[TestFixture]
-	public class FieldInfoTest
+	public unsafe class FieldInfoTest
 	{
 		[NonSerialized]
 		public int i;
@@ -479,6 +479,20 @@ namespace MonoTests.System.Reflection
 			Assert.AreEqual (IntEnum.Third, typeof(Foo<>).GetField ("econstant").GetValue (null), "#3");
 		}
 
+		public static unsafe void* ip;
+
+		[Test]
+		public unsafe void GetSetValuePointers ()
+		{
+			int i = 5;
+			void *p = &i;
+			typeof (FieldInfoTest).GetField ("ip").SetValue (null, (IntPtr)p);
+			Pointer p2 = (Pointer)typeof (FieldInfoTest).GetField ("ip").GetValue (null);
+
+			int *pi = (int*)Pointer.Unbox (p2);
+			Assert.AreEqual (5, *pi);
+		}
+
 		public class Foo<T>
 		{
 			 /*
diff --git a/mcs/class/corlib/Test/System.Reflection/MethodBaseTest.cs b/mcs/class/corlib/Test/System.Reflection/MethodBaseTest.cs
index 67c4d1e..fcefa04 100644
--- a/mcs/class/corlib/Test/System.Reflection/MethodBaseTest.cs
+++ b/mcs/class/corlib/Test/System.Reflection/MethodBaseTest.cs
@@ -326,5 +326,28 @@ namespace MonoTests.System.Reflection
 			} catch (ArgumentException) {
 			}
 		}
+
+		// test case adapted from http://www.chrishowie.com/2010/11/24/mutable-strings-in-mono/
+		public class FakeString {
+			public int length;
+			public char start_char;
+		}
+
+		private static FakeString UnsafeConversion<T> (T thing) where T : FakeString
+		{
+			return thing;
+		}
+
+		[Test]
+		public void MutableString ()
+		{
+			var m = typeof (MethodBaseTest).GetMethod ("UnsafeConversion", BindingFlags.NonPublic | BindingFlags.Static);
+			try {
+				var m2 = m.MakeGenericMethod (typeof (string));
+				Assert.Fail ("MakeGenericMethod");
+			}
+			catch (ArgumentException) {
+			}
+		}
 	}
 }
diff --git a/mcs/class/corlib/Test/System.Reflection/MethodInfoTest.cs b/mcs/class/corlib/Test/System.Reflection/MethodInfoTest.cs
index 587a336..7e1d700 100644
--- a/mcs/class/corlib/Test/System.Reflection/MethodInfoTest.cs
+++ b/mcs/class/corlib/Test/System.Reflection/MethodInfoTest.cs
@@ -691,6 +691,18 @@ namespace MonoTests.System.Reflection
 			Assert.AreSame (gmd, oi);
 		}
 
+		[Test]
+		[ExpectedException (typeof (ArgumentException))]
+		public void MakeGenericMethodRespectConstraints ()
+		{
+			var m = typeof (MethodInfoTest).GetMethod ("TestMethod");
+			m.MakeGenericMethod (typeof (Type));
+		}
+
+		public void TestMethod <T> () where T : Exception
+		{
+		}
+
 		public class MyList<T>
 		{
 			public TOutput ConvertAll<TOutput> (Foo<T,TOutput> arg)
diff --git a/mcs/class/corlib/Test/System.Reflection/MonoGenericClassTest.cs b/mcs/class/corlib/Test/System.Reflection/MonoGenericClassTest.cs
index 17b1b28..9116054 100644
--- a/mcs/class/corlib/Test/System.Reflection/MonoGenericClassTest.cs
+++ b/mcs/class/corlib/Test/System.Reflection/MonoGenericClassTest.cs
@@ -186,6 +186,24 @@ namespace MonoTests.System.Reflection.Emit
 				Assert.Fail ("#13");
 			} catch (NotSupportedException) {  }
 		}
+
+		[Test]
+		public void ClassMustNotBeRegisteredAfterTypeBuilderIsFinished ()
+		{
+			TypeBuilder tb = module.DefineType ("foo.type");
+			tb.DefineGenericParameters ("T");
+
+			var c = tb.CreateType ();
+
+			var sreInst = tb.MakeGenericType (typeof (int));
+			var rtInst = c.MakeGenericType (typeof (int));
+
+			Assert.AreNotSame (sreInst, rtInst, "#1");
+
+			/*This must not throw*/
+			rtInst.IsDefined (typeof (int), true);
+		}
 	}
+
 #endif
 }
diff --git a/mcs/class/corlib/Test/System.Runtime.CompilerServices/ChangeLog b/mcs/class/corlib/Test/System.Runtime.CompilerServices/ChangeLog
index 39870c2..72cca2d 100644
--- a/mcs/class/corlib/Test/System.Runtime.CompilerServices/ChangeLog
+++ b/mcs/class/corlib/Test/System.Runtime.CompilerServices/ChangeLog
@@ -1,3 +1,7 @@
+2011-01-05  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Fix test suite as boehm doesn't support ephemerons
+
 2010-06-21 Rodrigo Kumpera  <rkumpera at novell.com>
 
 	* ConditionalWeakTableTest.cs: Make test more resilient.
diff --git a/mcs/class/corlib/Test/System.Runtime.CompilerServices/ChangeLog b/mcs/class/corlib/Test/System.Runtime.CompilerServices/ChangeLog.old
similarity index 100%
copy from mcs/class/corlib/Test/System.Runtime.CompilerServices/ChangeLog
copy to mcs/class/corlib/Test/System.Runtime.CompilerServices/ChangeLog.old
diff --git a/mcs/class/corlib/Test/System.Runtime.CompilerServices/ConditionalWeakTableTest.cs b/mcs/class/corlib/Test/System.Runtime.CompilerServices/ConditionalWeakTableTest.cs
index d604f29..09626d2 100644
--- a/mcs/class/corlib/Test/System.Runtime.CompilerServices/ConditionalWeakTableTest.cs
+++ b/mcs/class/corlib/Test/System.Runtime.CompilerServices/ConditionalWeakTableTest.cs
@@ -180,8 +180,9 @@ namespace MonoTests.System.Runtime.CompilerServices {
 
 	[Test]
 	public void Reachability () {
+		if (GC.MaxGeneration == 0) /*Boehm doesn't handle ephemerons */
+			return;
 		var cwt = new ConditionalWeakTable <object,object> ();
-
 		List<object> keepAlive;
 		List<WeakReference> keys;
 		FillStuff (cwt, out keepAlive, out keys);
@@ -226,6 +227,8 @@ namespace MonoTests.System.Runtime.CompilerServices {
 
 	[Test]
 	public void InsertStress () {
+		if (GC.MaxGeneration == 0) /*Boehm doesn't handle ephemerons */
+			return;
 		var cwt = new ConditionalWeakTable <object,object> ();
 
 		var a = new object ();
@@ -275,6 +278,8 @@ namespace MonoTests.System.Runtime.CompilerServices {
 
 	[Test]
 	public void OldGenStress () {
+		if (GC.MaxGeneration == 0) /*Boehm doesn't handle ephemerons */
+			return;
 		var cwt = new ConditionalWeakTable <object,object>[1];
 		List<object> k = null;
 		List<WeakReference> res, res2;
@@ -417,6 +422,8 @@ namespace MonoTests.System.Runtime.CompilerServices {
 	[Test]
 	public void FinalizableObjectsThatRetainDeadKeys ()
 	{
+		if (GC.MaxGeneration == 0) /*Boehm doesn't handle ephemerons */
+			return;
 		lock (_lock1) { 
 			var cwt = new ConditionalWeakTable <object,object> ();
 			ThreadStart dele = () => { FillWithFinalizable (cwt); };
diff --git a/mcs/class/corlib/Test/System.Runtime.InteropServices/ChangeLog b/mcs/class/corlib/Test/System.Runtime.InteropServices/ChangeLog
index a66e686..36bb88a 100644
--- a/mcs/class/corlib/Test/System.Runtime.InteropServices/ChangeLog
+++ b/mcs/class/corlib/Test/System.Runtime.InteropServices/ChangeLog
@@ -1,3 +1,7 @@
+2010-11-25  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Add regression test for #655669
+
 2009-10-15  Sebastien Pouliot  <sebastien at ximian.com>
 
 	* GCHandleTest.cs: Add more test cases for validations
diff --git a/mcs/class/corlib/Test/System.Runtime.InteropServices/ChangeLog b/mcs/class/corlib/Test/System.Runtime.InteropServices/ChangeLog.old
similarity index 100%
copy from mcs/class/corlib/Test/System.Runtime.InteropServices/ChangeLog
copy to mcs/class/corlib/Test/System.Runtime.InteropServices/ChangeLog.old
diff --git a/mcs/class/corlib/Test/System.Runtime.InteropServices/GCHandleTest.cs b/mcs/class/corlib/Test/System.Runtime.InteropServices/GCHandleTest.cs
index 98e99c7..4a3c57f 100644
--- a/mcs/class/corlib/Test/System.Runtime.InteropServices/GCHandleTest.cs
+++ b/mcs/class/corlib/Test/System.Runtime.InteropServices/GCHandleTest.cs
@@ -9,7 +9,9 @@
 
 using NUnit.Framework;
 using System;
+using System.Reflection;
 using System.Runtime.InteropServices;
+using System.Globalization;
 
 namespace MonoTests.System.Runtime.InteropServices
 {
@@ -123,6 +125,74 @@ namespace MonoTests.System.Runtime.InteropServices
 				gch.Free ();
 			}
 		}
+
+		[Test]
+		public void WeakHandleWorksOnNonRootDomain ()
+		{
+			Console.WriteLine("current app domain: " + AppDomain.CurrentDomain.Id);
+			AppDomain domain = AppDomain.CreateDomain("testdomain");
+
+			Assembly ea = Assembly.GetExecutingAssembly ();
+			domain.CreateInstanceFrom (ea.CodeBase,
+				typeof (AssemblyResolveHandler).FullName,
+				false,
+				BindingFlags.Public | BindingFlags.Instance,
+				null,
+				new object [] { ea.Location, ea.FullName },
+				CultureInfo.InvariantCulture,
+				null,
+				null);
+
+
+			var testerType = typeof (CrossDomainGCHandleRunner);
+			var r = (CrossDomainGCHandleRunner)domain.CreateInstanceAndUnwrap (
+				testerType.Assembly.FullName, testerType.FullName, false,
+				BindingFlags.Public | BindingFlags.Instance, null, new object [0],
+				CultureInfo.InvariantCulture, new object [0], null);
+
+
+			Assert.IsTrue (r.RunTest (), "#1");
+			AppDomain.Unload (domain);
+		}
+
+		public class CrossDomainGCHandleRunner : MarshalByRefObject {
+			public bool RunTest () {
+				object o = new object();
+				GCHandle gcHandle = GCHandle.Alloc (o, GCHandleType.Weak);
+				IntPtr intPtr = (IntPtr)gcHandle;
+				
+				try {
+					object target = GCHandle.FromIntPtr(intPtr).Target;
+					return true;
+				} catch (Exception) {}
+				return false;
+			}
+		}
+		
+		[Serializable ()]
+		class AssemblyResolveHandler
+		{
+			public AssemblyResolveHandler (string assemblyFile, string assemblyName)
+			{
+				_assemblyFile = assemblyFile;
+				_assemblyName = assemblyName;
+
+				AppDomain.CurrentDomain.AssemblyResolve +=
+					new ResolveEventHandler (ResolveAssembly);
+			}
+
+			private Assembly ResolveAssembly (object sender, ResolveEventArgs args)
+			{
+				if (args.Name == _assemblyName)
+					return Assembly.LoadFrom (_assemblyFile);
+
+				return null;
+			}
+
+			private readonly string _assemblyFile;
+			private readonly string _assemblyName;
+		}
 	}
+
 }
 
diff --git a/mcs/class/corlib/Test/System.Runtime.Serialization.Formatters.Binary/ChangeLog b/mcs/class/corlib/Test/System.Runtime.Serialization.Formatters.Binary/ChangeLog
index 5525ee5..dcd003b 100644
--- a/mcs/class/corlib/Test/System.Runtime.Serialization.Formatters.Binary/ChangeLog
+++ b/mcs/class/corlib/Test/System.Runtime.Serialization.Formatters.Binary/ChangeLog
@@ -1,3 +1,13 @@
+2010-09-21  Andrés G. Aragoneses  <knocte at gmail.com>
+
+	[corlib] Prevent BinaryFormatter to throw on missing fields
+
+	This commit includes unit tests that were run in MS.NET > 2.0. The
+	old behaviour of MS.NET 1.1 is still included in the patch as an
+	ONLY_1_1 define, to be backport-friendly to other branches (but
+	can be removed from now on in next commits, as mono master doesn't
+	include this profile anymore). Fixes BNC#324144.
+
 2010-08-30  Carlos Alberto Cortez  <calberto.cortez at gmail.com>
 
 	* BinaryFormatterTest.cs: Add tests for
diff --git a/mcs/class/corlib/Test/System.Runtime.Serialization.Formatters.Binary/VersionTolerantSerialization/BinarySerializationOverVersions.cs b/mcs/class/corlib/Test/System.Runtime.Serialization.Formatters.Binary/VersionTolerantSerialization/BinarySerializationOverVersions.cs
new file mode 100644
index 0000000..fb4d9f3
--- /dev/null
+++ b/mcs/class/corlib/Test/System.Runtime.Serialization.Formatters.Binary/VersionTolerantSerialization/BinarySerializationOverVersions.cs
@@ -0,0 +1,268 @@
+using System;
+using System.Collections;
+using System.Text;
+using System.Diagnostics;
+using System.Reflection;
+using System.IO;
+using System.Runtime.Serialization;
+using System.Runtime.Serialization.Formatters.Binary;
+using NUnit.Framework;
+
+namespace MonoTests.System.Runtime.Serialization.Formatters.Binary
+{
+	[TestFixture]
+	public class BinarySerializationOverVersions {
+
+		static readonly string dirName = typeof(VersionTolerantSerializationTestLib.Address).Namespace;
+		static readonly string assemblyName = typeof(VersionTolerantSerializationTestLib.Address).Name;
+		static readonly string assemblyFileName = assemblyName + ".dll";
+		static readonly string binName = Path.GetFileName (Assembly.GetExecutingAssembly ().Location);
+		const bool cleanup = true;
+		enum OopOperation { Serialize, Deserialize }
+		static IFormatter formatter = new BinaryFormatter ();
+
+
+		//TODO: add tests that use SoapFormatter (if you go this
+		//	  path, it would be interesting also to test a
+		//	  custom formatter, like the XML-RPC.net one!)
+		public virtual IFormatter Formatter { get { return formatter; } }
+
+		static void Main (string [] args)
+		{
+			var p = new BinarySerializationOverVersions ();
+
+			/* this block is useful for testing this without NUnit:
+			if (args.Length == 0)
+			{
+				Console.WriteLine ("Starting...");
+				p.TestDroppedField ();
+				Console.Write ("x");
+				p.TestAddedField ();
+				Console.Write ("x");
+
+				p.TestAddedFieldWithData ();
+				Console.Write ("x");
+				p.TestDroppedFieldWithData ();
+				Console.Write ("x");
+
+				p.TestAddedFieldWithOptionalAttrib ();
+				Console.Write ("x");
+				p.TestDroppedFieldWithOptionalAttrib ();
+				Console.Write ("x");
+
+				p.TestAddedFieldWithOptionalAttribAndData ();
+				Console.Write ("x");
+				p.TestDroppedFieldWithOptionalAttribAndData ();
+				Console.Write ("x");
+				
+				Console.WriteLine ();
+				Environment.Exit (0);
+			}*/
+
+			if (args.Length < 2)
+				throw new Exception ("Please specify arguments");
+
+			if (args [0] == OopOperation.Serialize.ToString ())
+			{
+				p.SerializeToFile (args [1]);
+			}
+			else if (args [0] == OopOperation.Deserialize.ToString ())
+			{
+				p.DeserializeFromFile (args [1]);
+			}
+			else
+			{
+				throw new Exception(String.Format ("{0} operation not recognized. Only {Serialize|Deserialize} operations are supported.", args [0]));
+			}
+		}
+
+		[Test]
+		public void TestDroppedField () //eliminate CountryCode
+		{
+			Deserialize ("2.0", Serialize ("3.0"));
+		}
+
+		[Test]
+		public void TestAddedField () //add CountryCode
+		{
+			Deserialize ("3.0", Serialize ("2.0"));
+		}
+
+		[Test]
+		public void TestAddedFieldWithData () //add Country
+		{
+			Deserialize( "1.0", Serialize ("2.0"));
+		}
+
+		[Test]
+		public void TestDroppedFieldWithData () //eliminate Country
+		{
+			Deserialize ("2.0", Serialize ("3.0"));
+		}
+
+		[Test]
+		public void TestAddedFieldWithOptionalAttrib () //add PostCode
+		{
+			Deserialize ("4.0", Serialize ("3.0"));
+		}
+
+		[Test]
+		public void TestDroppedFieldWithOptionalAttrib () //eliminate PostCode
+		{
+			Deserialize ("3.0", Serialize ("4.0"));
+		}
+
+		[Test]
+		public void TestAddedFieldWithOptionalAttribAndData () //add AreaCode
+		{
+			Deserialize ("5.0", Serialize ("4.0"));
+		}
+
+		[Test]
+		public void TestDroppedFieldWithOptionalAttribAndData () //eliminate AreaCode
+		{
+			Deserialize ("4.0", Serialize ("5.0"));
+		}
+
+		private static string Serialize (string assemblyVersion)
+		{
+			return SerializeOOP (SetEnvironment (assemblyVersion)); ;
+		}
+
+		private static void Deserialize (string assemblyVersion, string filename)
+		{
+			DeserializeOOP (SetEnvironment (assemblyVersion), filename);
+		}
+
+		private static string SerializeOOP (string executionDir)
+		{
+			string filename = Path.GetTempFileName ();
+			var p = new Process ();
+			p.StartInfo.WorkingDirectory = executionDir;
+			p.StartInfo.FileName = Path.Combine (executionDir, binName);
+			p.StartInfo.Arguments = OopOperation.Serialize.ToString () + " \"" + filename + "\"";
+			p.StartInfo.UseShellExecute = false;
+			p.Start();
+			p.WaitForExit();
+			if (p.ExitCode != 0)
+				throw new Exception ("Problem in serialization operation");
+
+			if (cleanup)
+				Directory.Delete (executionDir, true);
+
+			return filename;
+		}
+
+		private static void DeserializeOOP (string executionDir, string filename)
+		{
+			var p = new Process ();
+			p.StartInfo.WorkingDirectory = executionDir;
+			p.StartInfo.FileName = Path.Combine (executionDir, binName);
+			p.StartInfo.Arguments = OopOperation.Deserialize.ToString () + " \"" + filename + "\"";
+			p.StartInfo.UseShellExecute = false;
+			p.Start ();
+			p.WaitForExit ();
+			if (p.ExitCode != 0)
+				throw new Exception("Problem in deserialization operation");
+
+			if (cleanup)
+			{
+				Directory.Delete (executionDir, true);
+				File.Delete (filename);
+			}
+		}
+
+		private static string SetEnvironment (string assemblyVersion)
+		{
+			if (!assemblyVersion.Contains ("."))
+				throw new NotSupportedException ("The version number should contain a dot, i.e.: 2.0");
+
+			string tmpDir = Path.Combine (Path.GetTempPath (), "deleteme" + Guid.NewGuid ());
+			Directory.CreateDirectory (tmpDir);
+			string currentBin = Assembly.GetExecutingAssembly ().Location;
+			File.Copy (currentBin, Path.Combine (tmpDir, Path.GetFileName (currentBin)));
+
+			string ass = Find (assemblyVersion);
+			File.Copy (ass, Path.Combine (tmpDir, Path.GetFileName (ass)));
+			return tmpDir;
+		}
+
+		private static string Find (string assemblyVersion)
+		{
+			string initDir = Path.GetDirectoryName (Assembly.GetExecutingAssembly ().Location);
+			return Find (assemblyVersion, initDir);
+		}
+
+		private static string Find (string assemblyVersion, string path)
+		{
+			//Console.WriteLine ("Looking in " + path);
+			string test;
+
+			if (!path.Contains(assemblyVersion))
+			{
+				//outside or here
+
+				if (Path.GetFileName(path) == dirName)
+				{
+					test = Path.Combine (path, assemblyVersion);
+					if (Directory.Exists (test))
+						return Find (assemblyVersion, test);
+					else
+						throw new DirectoryNotFoundException (String.Format ("{0} was not found", test));
+				}
+
+				test = Path.Combine (path, dirName);
+				if (Directory.Exists (test))
+					return Find (assemblyVersion, test);
+
+				return Find (assemblyVersion, Path.Combine (path, ".."));
+			}
+			else
+			{
+				//inside
+				test = Path.Combine (path, assemblyFileName);
+				if (File.Exists (test))
+					return test;
+
+				test = Path.Combine (path, "bin");
+				if (Directory.Exists (test))
+					return Find (assemblyVersion, test);
+
+				test = Path.Combine (path, "Debug");
+				if (Directory.Exists (test))
+					return Find (assemblyVersion, test);
+
+				test = Path.Combine (path, "Release");
+				if (Directory.Exists (test))
+					return Find (assemblyVersion, test);
+
+				test = Path.Combine (path.Replace ("Debug", "Release"), assemblyFileName);
+				if (File.Exists (test))
+					return test;
+
+				throw new NotSupportedException(
+					String.Format(
+						"The tree is not predictible according to the philosophy of the test. (Stuck in {0})",
+						path));
+			}
+		}
+
+		private void SerializeToFile (string filename)
+		{
+			var type = typeof (VersionTolerantSerializationTestLib.Address);
+			object obj = Activator.CreateInstance (type);
+			Stream stream = new FileStream (filename,
+										   FileMode.OpenOrCreate, FileAccess.Write, FileShare.None);
+			Formatter.Serialize (stream, obj);
+			stream.Dispose ();
+		}
+
+		private void DeserializeFromFile (string filename)
+		{
+			//Console.WriteLine("Trying to deserialize {0}...", filename);
+			FileStream readStream = new FileStream (filename, FileMode.Open);
+			//var readData = 
+			Formatter.Deserialize (readStream);
+		}
+	}
+}
diff --git a/mcs/class/corlib/Test/System.Runtime.Serialization.Formatters.Binary/VersionTolerantSerialization/VersionTolerantSerializationTestLib/1.0/Address.cs b/mcs/class/corlib/Test/System.Runtime.Serialization.Formatters.Binary/VersionTolerantSerialization/VersionTolerantSerializationTestLib/1.0/Address.cs
new file mode 100644
index 0000000..bc81c43
--- /dev/null
+++ b/mcs/class/corlib/Test/System.Runtime.Serialization.Formatters.Binary/VersionTolerantSerialization/VersionTolerantSerializationTestLib/1.0/Address.cs
@@ -0,0 +1,12 @@
+using System;
+
+namespace VersionTolerantSerializationTestLib
+{
+	[Serializable]
+	public class Address
+	{
+		private string Street;
+		private string City;
+		private string Country = "Cuba";
+	}
+}
diff --git a/mcs/class/corlib/Test/System.Runtime.Serialization.Formatters.Binary/VersionTolerantSerialization/VersionTolerantSerializationTestLib/2.0/Address.cs b/mcs/class/corlib/Test/System.Runtime.Serialization.Formatters.Binary/VersionTolerantSerialization/VersionTolerantSerializationTestLib/2.0/Address.cs
new file mode 100644
index 0000000..24f2036
--- /dev/null
+++ b/mcs/class/corlib/Test/System.Runtime.Serialization.Formatters.Binary/VersionTolerantSerialization/VersionTolerantSerializationTestLib/2.0/Address.cs
@@ -0,0 +1,11 @@
+using System;
+
+namespace VersionTolerantSerializationTestLib
+{
+	[Serializable]
+	public class Address
+	{
+		private string Street;
+		private string City;
+	}
+}
diff --git a/mcs/class/corlib/Test/System.Runtime.Serialization.Formatters.Binary/VersionTolerantSerialization/VersionTolerantSerializationTestLib/3.0/Address.cs b/mcs/class/corlib/Test/System.Runtime.Serialization.Formatters.Binary/VersionTolerantSerialization/VersionTolerantSerializationTestLib/3.0/Address.cs
new file mode 100644
index 0000000..db02d7a
--- /dev/null
+++ b/mcs/class/corlib/Test/System.Runtime.Serialization.Formatters.Binary/VersionTolerantSerialization/VersionTolerantSerializationTestLib/3.0/Address.cs
@@ -0,0 +1,12 @@
+using System;
+
+namespace VersionTolerantSerializationTestLib
+{
+	[Serializable]
+	public class Address
+	{
+		private string Street;
+		private string City;
+		private string CountryCode;
+	}
+}
diff --git a/mcs/class/corlib/Test/System.Runtime.Serialization.Formatters.Binary/VersionTolerantSerialization/VersionTolerantSerializationTestLib/4.0/Address.cs b/mcs/class/corlib/Test/System.Runtime.Serialization.Formatters.Binary/VersionTolerantSerialization/VersionTolerantSerializationTestLib/4.0/Address.cs
new file mode 100644
index 0000000..5ec38ef
--- /dev/null
+++ b/mcs/class/corlib/Test/System.Runtime.Serialization.Formatters.Binary/VersionTolerantSerialization/VersionTolerantSerializationTestLib/4.0/Address.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Runtime.Serialization;
+
+namespace VersionTolerantSerializationTestLib
+{
+	[Serializable]
+	public class Address
+	{
+		private string Street;
+		private string City;
+		private string CountryCode;
+
+		[OptionalField (VersionAdded = 4)]
+		private string PostCode;
+	}
+}
diff --git a/mcs/class/corlib/Test/System.Runtime.Serialization.Formatters.Binary/VersionTolerantSerialization/VersionTolerantSerializationTestLib/5.0/Address.cs b/mcs/class/corlib/Test/System.Runtime.Serialization.Formatters.Binary/VersionTolerantSerialization/VersionTolerantSerializationTestLib/5.0/Address.cs
new file mode 100644
index 0000000..3f71d69
--- /dev/null
+++ b/mcs/class/corlib/Test/System.Runtime.Serialization.Formatters.Binary/VersionTolerantSerialization/VersionTolerantSerializationTestLib/5.0/Address.cs
@@ -0,0 +1,19 @@
+using System;
+using System.Runtime.Serialization;
+
+namespace VersionTolerantSerializationTestLib
+{
+	[Serializable]
+	public class Address
+	{
+		private string Street;
+		private string City;
+		private string CountryCode;
+
+		[OptionalField (VersionAdded = 4)]
+		private string PostCode;
+
+		[OptionalField (VersionAdded = 5)]
+		private string AreaCode = "0";
+	}
+}
diff --git a/mcs/class/corlib/Test/System.Security.Cryptography/ChangeLog b/mcs/class/corlib/Test/System.Security.Cryptography/ChangeLog
index f8cf771..702c9aa 100644
--- a/mcs/class/corlib/Test/System.Security.Cryptography/ChangeLog
+++ b/mcs/class/corlib/Test/System.Security.Cryptography/ChangeLog
@@ -1,3 +1,35 @@
+2010-10-07  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Buffer sizes
+
+	workingBlock should be the InputBlockSize and currentBlock the
+	OutputBlockSize. Allocate currentBlock lazily.
+
+	Test contributed by Bassam Tabbara. Fixes bug #644740.
+
+2010-10-07  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	[CryptoStream] Invalid enum in ctor
+
+	Throw on invalid enum value in the ctor.
+
+2010-10-07  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Dispose calls FlushFinalBlock
+
+	Dispose calls FlushFinalBlock (even for Read mode) and this in
+	turn calls either FlushFinalBlock or Flush on the underlying
+	stream.
+
+2010-10-07  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Fix CryptoStream.Dispose
+
+	-Dispose will call TransformFinalBlock() for Read streams. Fixes
+	bug #644648. -Dispose () will call Dispose (bool). Fixes bug
+	#644654. -Stream.Close calls GC.SuppressFinalize(). Fixes bug
+	#644660.
+
 2009-09-22  Sebastien Pouliot  <sebastien at ximian.com> 
 
 	* CryptoStreamTest.cs: Add (nunit-ized) test cases provided by
diff --git a/mcs/class/corlib/Test/System.Security.Cryptography/ChangeLog b/mcs/class/corlib/Test/System.Security.Cryptography/ChangeLog.old
similarity index 100%
copy from mcs/class/corlib/Test/System.Security.Cryptography/ChangeLog
copy to mcs/class/corlib/Test/System.Security.Cryptography/ChangeLog.old
diff --git a/mcs/class/corlib/Test/System.Security.Cryptography/CryptoStreamTest.cs b/mcs/class/corlib/Test/System.Security.Cryptography/CryptoStreamTest.cs
index c4bfae1..580fac8 100644
--- a/mcs/class/corlib/Test/System.Security.Cryptography/CryptoStreamTest.cs
+++ b/mcs/class/corlib/Test/System.Security.Cryptography/CryptoStreamTest.cs
@@ -1389,6 +1389,99 @@ namespace MonoTests.System.Security.Cryptography {
 #endif
 		}
 
+		[Test]
+		public void ReadModeDispose_FinalBlock ()
+		{
+			using (SHA1 sha1 = SHA1.Create()) {
+				using (MemoryStream mem = new MemoryStream(new byte[] { 1, 2, 3 }, false))
+					using (CryptoStream cs = new CryptoStream(mem, sha1, CryptoStreamMode.Read))
+					{
+					}
+				byte b = sha1.Hash [0]; // This will throw if TransformFinalBlock not called in sha1
+				GC.KeepAlive (b); // just the warning...
+			}
+                }
+
+		[Test]
+		public void CustomDisposeCalled ()
+		{
+			using (MemoryStream mem = new MemoryStream(new byte[] { 1, 2, 3 }, false)) {
+				MyCryptoStream cs;
+				using (cs = new MyCryptoStream (mem, SHA1.Create()))
+				{
+				}
+				Assert.IsTrue (cs.DisposeCalled, "#1");
+			}
+		}
+
+		[Test]
+		public void ExplicitFlush ()
+		{
+			// Tests that explicitly calling Flush does not call Flush in the underlying stream
+			MyStream ms = new MyStream ();
+			using (CryptoStream cs = new CryptoStream (ms, SHA1.Create (), CryptoStreamMode.Read)) {
+				ms.FlushCounterEnabled = true;
+				cs.Flush ();
+				ms.FlushCounterEnabled = false;
+			}
+			Assert.IsTrue (ms.FlushCounter == 0);
+		}
+
+		[Test]
+		public void ImplicitFlush ()
+		{
+			// Tests that Dispose() calls Flush on the underlying stream
+			MyStream ms = new MyStream ();
+			ms.FlushCounterEnabled = true;
+			using (CryptoStream cs = new CryptoStream (ms, SHA1.Create (), CryptoStreamMode.Read)) {
+			}
+			Assert.IsTrue (ms.FlushCounter == 1);
+		}
+
+		[Test]
+		public void ImplicitFlushCascade ()
+		{
+			// Tests that Dispose() calls FlushFinalBlock() on the underlying stream
+			MyStream ms = new MyStream ();
+			ms.FlushCounterEnabled = true;
+			CryptoStream cs1 = new CryptoStream (ms, SHA1.Create (), CryptoStreamMode.Read);
+			using (CryptoStream cs = new CryptoStream (cs1, SHA1.Create (), CryptoStreamMode.Read)) {
+			}
+			Assert.IsTrue (ms.FlushCounter == 1);
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentException))]
+		public void Ctor_InvalidEnumValue ()
+		{
+			CryptoStream cs = new CryptoStream (Stream.Null, SHA1.Create (), (CryptoStreamMode) 0xff);
+		}
+
+		[Test]
+		public void OutputBlock_Smaller ()
+		{
+			// The OutputBlockSize is smaller than the InputBlockSize
+			using (CryptoStream cs = new CryptoStream(Stream.Null, new MyCryptAlgorithm(), CryptoStreamMode.Write)) {
+				byte[] buffer = new byte[512 * 1024];
+				cs.Write(buffer, 0, buffer.Length);
+			}
+		}
+
+		class MyCryptoStream : CryptoStream {
+			public bool DisposeCalled { get; private set;}
+
+			public MyCryptoStream(Stream stream, ICryptoTransform transform)
+						: base(stream, transform, CryptoStreamMode.Read)
+			{
+			}
+
+			protected override void Dispose(bool disposing)
+			{
+				base.Dispose(disposing);
+				DisposeCalled = true;
+			}
+		}
+
 		class ExpandTransform : ICryptoTransform {
 
 			public bool CanReuseTransform {
@@ -1545,5 +1638,99 @@ namespace MonoTests.System.Security.Cryptography {
 				}
 			}
 		}
+
+		class MyCryptAlgorithm : ICryptoTransform {
+			public bool CanReuseTransform { get { return true; } }
+			public bool CanTransformMultipleBlocks { get { return false; } }
+			public int InputBlockSize { get { return 128 * 1024; } }
+			public int OutputBlockSize { get { return 64 * 1024; } }
+
+			public int TransformBlock(byte[] inputBuffer, int inputOffset, int inputCount, byte[] outputBuffer, int outputOffset)
+			{
+				return this.OutputBlockSize;
+			}
+
+			public byte[] TransformFinalBlock(byte[] inputBuffer, int inputOffset, int inputCount)
+			{
+				return new byte[this.OutputBlockSize];
+			}
+
+			public void Dispose() {}
+		}
+
+		class MyStream : Stream {
+			public bool FlushCounterEnabled;
+			public int FlushCounter;
+
+			public override bool CanRead
+			{
+				get {
+					return true;
+				}
+			}
+
+			public override bool CanSeek
+			{
+				get {
+					return true;
+				}
+			}
+
+			public override bool CanWrite
+			{
+				get {
+					return true;
+				}
+			}
+
+			public override long Length
+			{
+				get {
+					return 0;
+				}
+			}
+
+			public override long Position
+			{
+				get {
+					return 0;
+				}
+				set {
+				}
+			}
+
+			public override void Flush ()
+			{
+				if (FlushCounterEnabled)
+					FlushCounter++;
+			}
+
+			public override int Read (byte[] buffer, int offset, int count)
+			{
+				return 0;
+			}
+
+			public override int ReadByte ()
+			{
+				return -1;
+			}
+
+			public override long Seek (long offset, SeekOrigin origin)
+			{
+				return 0;
+			}
+
+			public override void SetLength (long value)
+			{
+			}
+
+			public override void Write (byte[] buffer, int offset, int count)
+			{
+			}
+
+			public override void WriteByte (byte value)
+			{
+			}
+		}
 	}
 }
diff --git a/mcs/class/corlib/Test/System.Threading.Tasks/ChangeLog b/mcs/class/corlib/Test/System.Threading.Tasks/ChangeLog
index 5f937c7..f70b65b 100644
--- a/mcs/class/corlib/Test/System.Threading.Tasks/ChangeLog
+++ b/mcs/class/corlib/Test/System.Threading.Tasks/ChangeLog
@@ -1,3 +1,38 @@
+2011-01-13  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Fix continuation not being scheduled because of too early and too
+	greedy disposing.
+
+2011-01-07  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Remove now unused internal classes
+
+2011-01-06  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Add unit test for nested Parallel.For execution
+
+2011-01-05  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Ensure task wait chain isn't executed out of order in scheduler
+
+2011-01-04  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Use proper pattern for executing synchronous Task
+
+2010-12-03  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Fixicate some unit test
+
+2010-12-03  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	[Task] Slight tweak of WaitAny unit test
+
+2010-11-02  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Use Task helper methods in TaskCompletionSource instead of manual
+	setting, allow continuation flow to happen smoothly and task
+	status to be set accordingly.
+
 2010-08-27  Jérémie Laval  <jeremie.laval at gmail.com>
 
 	Increase the number of repeated run in stress test.
diff --git a/mcs/class/corlib/Test/System.Threading.Tasks/FutureTests.cs b/mcs/class/corlib/Test/System.Threading.Tasks/FutureTests.cs
index d67e5ba..f248b7a 100644
--- a/mcs/class/corlib/Test/System.Threading.Tasks/FutureTests.cs
+++ b/mcs/class/corlib/Test/System.Threading.Tasks/FutureTests.cs
@@ -62,6 +62,28 @@ namespace MonoTests.System.Threading.Tasks
 			Assert.IsTrue (result, "#2");
 			Assert.AreEqual (10, cont.Result);
 		}
+
+		static Task<int> CreateNestedFuture(int level)
+		{
+			if (level == 0)
+				return Task.Factory.StartNew(() => { Thread.Sleep (10); return 1; });
+
+			var t = CreateNestedFuture(level - 1);
+			return Task.Factory.StartNew(() => t.Result + 1);
+		}
+
+		[Test]
+		public void NestedFutureTest ()
+		{
+			var t = CreateNestedFuture(10);
+			var t2 = CreateNestedFuture(100);
+			var t3 = CreateNestedFuture(100);
+			var t4 = CreateNestedFuture(100);
+			Assert.AreEqual (11, t.Result);
+			Assert.AreEqual (101, t2.Result);
+			Assert.AreEqual (101, t3.Result);
+			Assert.AreEqual (101, t4.Result);
+		}
 	}
 }
 #endif
diff --git a/mcs/class/corlib/Test/System.Threading.Tasks/ParallelTests.cs b/mcs/class/corlib/Test/System.Threading.Tasks/ParallelTests.cs
index 1000093..3aef814 100644
--- a/mcs/class/corlib/Test/System.Threading.Tasks/ParallelTests.cs
+++ b/mcs/class/corlib/Test/System.Threading.Tasks/ParallelTests.cs
@@ -84,6 +84,21 @@ namespace MonoTests.System.Threading.Tasks
 			Parallel.For (4, 1, (i) => launched = true);
 			Assert.IsFalse (launched, "#1");
 		}
+
+		[Test]
+		public void ParallelForNestedTest ()
+		{
+			bool[] launched = new bool[100 * 20 * 10];
+			Parallel.For (0, 100, delegate (int i) {
+				Parallel.For (0, 20, delegate (int j) {
+					Parallel.For (0, 10, delegate (int k) {
+							launched[i * 20 * 10 + j * 10 + k] = true;
+					});
+				});
+		    });
+
+			Assert.IsTrue (launched.All ((_) => _), "All true");
+		}
 		
 		[Test]
 		public void ParallelForEachTestCase ()
diff --git a/mcs/class/corlib/Test/System.Threading.Tasks/TaskCompletionSourceTests.cs b/mcs/class/corlib/Test/System.Threading.Tasks/TaskCompletionSourceTests.cs
index 1ceeb2a..1a92ce7 100644
--- a/mcs/class/corlib/Test/System.Threading.Tasks/TaskCompletionSourceTests.cs
+++ b/mcs/class/corlib/Test/System.Threading.Tasks/TaskCompletionSourceTests.cs
@@ -107,6 +107,19 @@ namespace MonoTests.System.Threading.Tasks
 			
 			completionSource.SetResult (43);
 		}
+
+		[Test]
+		public void ContinuationTest ()
+		{
+			bool result = false;
+			var t = completionSource.Task.ContinueWith ((p) => { if (p.Result == 2) result = true; });
+			Assert.AreEqual (TaskStatus.WaitingForActivation, completionSource.Task.Status, "#A");
+			completionSource.SetResult (2);
+			t.Wait ();
+			Assert.AreEqual (TaskStatus.RanToCompletion, completionSource.Task.Status, "#1");
+			Assert.AreEqual (TaskStatus.RanToCompletion, t.Status, "#2");
+			Assert.IsTrue (result);
+		}
 	}
 }
 #endif
diff --git a/mcs/class/corlib/Test/System.Threading.Tasks/TaskFactoryTest.cs b/mcs/class/corlib/Test/System.Threading.Tasks/TaskFactoryTest.cs
index 7fe3bf6..12928aa 100644
--- a/mcs/class/corlib/Test/System.Threading.Tasks/TaskFactoryTest.cs
+++ b/mcs/class/corlib/Test/System.Threading.Tasks/TaskFactoryTest.cs
@@ -62,7 +62,7 @@ namespace MonoTests.System.Threading.Tasks
 			
 			bool result = false;
 			
-			Task cont = factory.ContinueWhenAll (tasks, (ts) => { if (r1 && r2 && r3) result = ts == tasks; });
+			Task cont = factory.ContinueWhenAll (tasks, (ts) => { if (r1 && r2 && r3) result = true; });
 			
 			foreach (Task t in tasks)
 				t.Start ();
diff --git a/mcs/class/corlib/Test/System.Threading.Tasks/TaskTest.cs b/mcs/class/corlib/Test/System.Threading.Tasks/TaskTest.cs
index 7de1033..298be18 100644
--- a/mcs/class/corlib/Test/System.Threading.Tasks/TaskTest.cs
+++ b/mcs/class/corlib/Test/System.Threading.Tasks/TaskTest.cs
@@ -69,9 +69,9 @@ namespace MonoTests.System.Threading.Tasks
 				
 				int index = Task.WaitAny(tasks);
 				
-				Assert.IsTrue (flag == 1, "#1");
-				Assert.AreEqual (1, finished, "#2");
 				Assert.AreNotEqual (-1, index, "#3");
+				Assert.AreEqual (1, flag, "#1");
+				Assert.AreEqual (1, finished, "#2");
 				
 				Task.WaitAll (tasks);
 			});
@@ -194,6 +194,21 @@ namespace MonoTests.System.Threading.Tasks
 			});
 		}
 
+		[Test]
+		public void ContinueWithChildren ()
+		{
+			ParallelTestHelper.Repeat (delegate {
+			    bool result = false;
+
+			    var t = Task.Factory.StartNew (() => Task.Factory.StartNew (() => Thread.Sleep (100), TaskCreationOptions.AttachedToParent));
+			    t.ContinueWith (_ => result = true);
+			    while (!t.IsCompleted)
+				    Thread.Sleep (200);
+
+			    Assert.IsTrue (result);
+			}, 2);
+		}
+
 		[TestAttribute]
 		public void MultipleTaskTestCase()
 		{
@@ -248,7 +263,17 @@ namespace MonoTests.System.Threading.Tasks
 				Assert.IsTrue(r3, "#2");
 				Assert.IsTrue(r1, "#3");
 				Assert.AreEqual (TaskStatus.RanToCompletion, t.Status, "#4");
-			}, 10);
+				}, 10);
+		}
+
+		[Test]
+		public void ExecuteSynchronouslyTest ()
+		{
+			var val = 0;
+			Task t = new Task (() => { Thread.Sleep (100); val = 1; });
+			t.RunSynchronously ();
+
+			Assert.AreEqual (1, val);
 		}
 	}
 }
diff --git a/mcs/class/corlib/Test/System.Threading/ChangeLog b/mcs/class/corlib/Test/System.Threading/ChangeLog
index 8453d48..462eec5 100644
--- a/mcs/class/corlib/Test/System.Threading/ChangeLog
+++ b/mcs/class/corlib/Test/System.Threading/ChangeLog
@@ -1,3 +1,17 @@
+2011-01-06  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Avoid random failure in CountdownEvent unit test
+
+2011-01-04  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Update ThreadLocal to use default(T) for initialization with
+	parameterless ctor following comment on
+	https://connect.microsoft.com/VisualStudio/feedback/details/630350/threadlocal-documentation-and-actual-behavior-mismatch
+
+2010-12-09  Jérémie Laval  <jeremie.laval at gmail.com>
+
+	Fix semantic of CountdownEvent Reset methods. Fix #658244.
+
 2010-08-13  Jérémie Laval  <jeremie.laval at gmail.com>
 
 	Force usage of 2 threads in one of ManualResetEventSlim unit test.
diff --git a/mcs/class/corlib/Test/System.Threading/CountdownEventTests.cs b/mcs/class/corlib/Test/System.Threading/CountdownEventTests.cs
index 91c37de..2297d57 100644
--- a/mcs/class/corlib/Test/System.Threading/CountdownEventTests.cs
+++ b/mcs/class/corlib/Test/System.Threading/CountdownEventTests.cs
@@ -105,7 +105,7 @@ namespace MonoTests.System.Threading
 					e.Wait();
 					s = true;
 				}
-			});
+			}, 3);
 			
 			Assert.IsTrue(s, "#1");
 			Assert.IsTrue(evt.IsSet, "#2");
@@ -126,6 +126,24 @@ namespace MonoTests.System.Threading
 			Assert.AreEqual(4, evt.CurrentCount, "#1");
 			Assert.IsFalse(evt.IsSet, "#2");
 		}
+
+		[Test]
+		public void ResetTest ()
+		{
+			Assert.AreEqual (5, evt.CurrentCount);
+			evt.Signal ();
+			Assert.AreEqual (4, evt.CurrentCount);
+			evt.Reset ();
+			Assert.AreEqual (5, evt.CurrentCount);
+			Assert.AreEqual (5, evt.InitialCount);
+			evt.Signal ();
+			evt.Signal ();
+			Assert.AreEqual (3, evt.CurrentCount);
+			Assert.AreEqual (5, evt.InitialCount);
+			evt.Reset (10);
+			Assert.AreEqual (10, evt.CurrentCount);
+			Assert.AreEqual (10, evt.InitialCount);
+		}
 	}
 }
 #endif
diff --git a/mcs/class/corlib/Test/System.Threading/ThreadLocalTests.cs b/mcs/class/corlib/Test/System.Threading/ThreadLocalTests.cs
index 46ff8c6..be385cd 100644
--- a/mcs/class/corlib/Test/System.Threading/ThreadLocalTests.cs
+++ b/mcs/class/corlib/Test/System.Threading/ThreadLocalTests.cs
@@ -106,6 +106,16 @@ namespace MonoTests.System.Threading
 			var value = threadLocal.Value;
 		}
 
+		[Test]
+		public void DefaultThreadLocalInitTest ()
+		{
+			var local = new ThreadLocal<DateTime> ();
+			var local2 = new ThreadLocal<object> ();
+
+			Assert.AreEqual (default (DateTime), local.Value);
+			Assert.AreEqual (default (object), local2.Value);
+		}
+
 		void AssertThreadLocal ()
 		{
 			Assert.IsFalse (threadLocal.IsValueCreated, "#1");
diff --git a/mcs/class/corlib/Test/System/AttributeTest.cs b/mcs/class/corlib/Test/System/AttributeTest.cs
index dddf0af..96c62c8 100644
--- a/mcs/class/corlib/Test/System/AttributeTest.cs
+++ b/mcs/class/corlib/Test/System/AttributeTest.cs
@@ -1119,5 +1119,25 @@ namespace MonoTests.System
 			Assert.AreEqual (1, attributes.Length);
 			Assert.AreEqual ("Derived.baz", attributes [0].Data);
 		}
+
+		[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class)]
+		public class MyCAttr : Attribute {}
+
+		class Base {
+			[MyCAttr]
+			public override string ToString () { return null; }
+		}
+
+		class Derived : Base {
+			public override string ToString () { return null; }
+		}
+
+		[Test] //one ton of bugs
+		public void GetCustomAttributesOnMethodOverride ()
+		{
+			var m = typeof (Derived).GetMethod ("ToString");
+			var attrs = Attribute.GetCustomAttributes (m, true);
+			Assert.AreEqual (1, attrs.Length);	
+		}
 	}
 }
diff --git a/mcs/class/corlib/Test/System/ChangeLog b/mcs/class/corlib/Test/System/ChangeLog
index 6b9a901..fde6cf8 100644
--- a/mcs/class/corlib/Test/System/ChangeLog
+++ b/mcs/class/corlib/Test/System/ChangeLog
@@ -1,8 +1,90 @@
+2011-01-07  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Properly search overwrites for custom attributes.
+
+2011-01-03  Marek Habersack  <grendel at twistedcode.net>
+
+	[corlib] Fix for bug #659061. Adjust size of the last group when
+	formatting numbers with group separators.
+
+	When the number format includes several groups make sure that the
+	last (leftmost) one is adjusted so that its width is not larger
+	than the number of remaining characters.
+
+2010-12-22  Marek Safar  <marek.safar at gmail.com>
+
+	Fixed corlib tests to run on en-gb
+
+2010-11-27  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Add regression test for #317488
+
+2010-11-25  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Add regression test for #655741
+
+2010-11-23  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* DelegateTest.cs: Add tests for the previous change.
+
+	Fixes #655439
+
+2010-11-09  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* StringTest.cs: Add tests for the above.
+
+	Fixes #605340
+
+2010-11-04  Marek Safar  <marek.safar at gmail.com>
+
+	For some strange reason Console.Write(Line) allows null params
+	formatter arguments
+
 2010-10-23  Zoltan Varga  <vargaz at gmail.com>
 
 	Fix another regression in the Array.Sort () methods, allow keys
 	and items to be of different length. Fixes #648828.
 
+2010-10-07  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix make test for corlib.
+
+2010-10-05  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* TypeTest.cs: Add regression test.
+
+	Fixes #643890
+
+2010-10-04  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* TypeTest.cs: Fix a test that had a broken assumption.
+
+	Fix #642130
+
+2010-09-29  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Remove "NotWorking" from a test that now works.
+
+2010-09-27  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Enable test that has been fixed in the runtime.
+
+2010-09-02  Jb Evain  <jbevain at gmail.com>
+
+	Add a test for the regression to Delegate.CreateDelegate triggered
+	by 2ec0ab59fe4aecf5507a81846a66de1a658bbfd2
+
+2010-09-01  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Add missing DT format
+
+	The datetime format having a numeric timezone after the
+	milliseconds was missing. Fixes bug #479061.
+
+2010-09-01  Jb Evain  <jbevain at gmail.com>
+
+	Add NotWorking test for bugs #635349 and #605936
+
 2010-08-07  Zoltan Varga  <vargaz at gmail.com>
 
 	Fix Math.Log (2, 1). Fixes #626944.
diff --git a/mcs/class/corlib/Test/System/ConsoleTest.cs b/mcs/class/corlib/Test/System/ConsoleTest.cs
index 902d626..5653d19 100644
--- a/mcs/class/corlib/Test/System/ConsoleTest.cs
+++ b/mcs/class/corlib/Test/System/ConsoleTest.cs
@@ -223,6 +223,12 @@ public class ConsoleTest
 			Assert.AreEqual (testStr, line, "Wrong line");
 		}
 	}
+	
+	[Test]
+	public void TestWrite_Params()
+	{
+		Console.Write ("text {0}", (object[]) null);
+	}
 
 	[Test]
 	public void TestWrite()
@@ -311,6 +317,12 @@ public class ConsoleTest
 		// TODO - Likewise for char[], decimal, double, int, long, object, single, uint32, uint64
 		// TODO - write with format string
 	}
+	
+	[Test]
+	public void TestWriteLine_Params()
+	{
+		Console.WriteLine ("text {0}", (object[]) null);
+	}
 
 }
 }
diff --git a/mcs/class/corlib/Test/System/DateTimeOffsetTest.cs b/mcs/class/corlib/Test/System/DateTimeOffsetTest.cs
index b142eeb..7c1abdc 100644
--- a/mcs/class/corlib/Test/System/DateTimeOffsetTest.cs
+++ b/mcs/class/corlib/Test/System/DateTimeOffsetTest.cs
@@ -433,14 +433,14 @@ namespace MonoTests.System {
 		[ExpectedException (typeof (ArgumentOutOfRangeException))]
 		public void ParseUnderflow ()
 		{
-			DateTimeOffset.Parse ("01/01/0001 0:0 +09:00");
+			DateTimeOffset.Parse ("01/01/0001 0:0 +09:00", new CultureInfo ("en-US"));
 		}
 
 		[Test]
 		[ExpectedException (typeof (ArgumentOutOfRangeException))]
 		public void ParseOverflow ()
 		{
-			DateTimeOffset.Parse ("12/31/9999 23:59 -09:00");
+			DateTimeOffset.Parse ("12/31/9999 23:59 -09:00", new CultureInfo ("en-US"));
 		}
 
 		[Test]
diff --git a/mcs/class/corlib/Test/System/DateTimeTest.cs b/mcs/class/corlib/Test/System/DateTimeTest.cs
index 5075383..610592e 100644
--- a/mcs/class/corlib/Test/System/DateTimeTest.cs
+++ b/mcs/class/corlib/Test/System/DateTimeTest.cs
@@ -2436,6 +2436,16 @@ namespace MonoTests.System
 					       DateTimeStyles.AssumeUniversal | DateTimeStyles.AdjustToUniversal, out dt);
 			Assert.AreEqual(default(DateTime), dt);
 		}
+
+		[Test]
+		public void MSAndZ ()
+		{
+			CultureInfo cultureInfo = CultureInfo.GetCultureInfo ("en-US");
+			DateTime dt;
+			if (!DateTime.TryParse ("2009.02.24T13:57:07.000 -0800", cultureInfo.DateTimeFormat,
+						DateTimeStyles.None, out dt))
+				Assert.Fail ("Failed");
+		}
 #endif
 	}
 }
diff --git a/mcs/class/corlib/Test/System/DelegateTest.cs b/mcs/class/corlib/Test/System/DelegateTest.cs
index 1aa870b..0803a66 100644
--- a/mcs/class/corlib/Test/System/DelegateTest.cs
+++ b/mcs/class/corlib/Test/System/DelegateTest.cs
@@ -5,6 +5,8 @@
 
 using System;
 using System.Reflection;
+using System.Reflection.Emit;
+using System.Threading;
 
 using NUnit.Framework;
 
@@ -1023,7 +1025,6 @@ namespace MonoTests.System
 		}
 
 		[Test] // #617161
-		[Category ("NotWorking")]
 		public void ClosedOverNullReferenceStaticMethod ()
 		{
 			var del = (Func<long?,long?>) Delegate.CreateDelegate (
@@ -1065,7 +1066,73 @@ namespace MonoTests.System
 
 			action_int (42);
 		}
+
+		class Foo {
+
+			public void Bar ()
+			{
+			}
+		}
+
+		Foo foo;
+		event Action bar_handler;
+
+		[Test]
+		[ExpectedException (typeof (ArgumentException))] // #635349, #605936
+		public void NewDelegateClosedOverNullReferenceInstanceMethod ()
+		{
+			bar_handler += foo.Bar;
+		}
+
+		public void Banga ()
+		{
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentException))]
+		public void CreateDelegateOpenOnly ()
+		{
+			Delegate.CreateDelegate (
+				typeof (Action),
+				this.GetType ().GetMethod ("Banga"));
+		}
+
 #endif
+		public static void CreateDelegateOfStaticMethodBoundToNull_Helper (object[] args) {}
+
+		[Test]
+		public void CreateDelegateOfStaticMethodBoundToNull ()
+		{
+			Type t = typeof (Action);
+			MethodInfo m = typeof (DelegateTest).GetMethod ("CreateDelegateOfStaticMethodBoundToNull_Helper");
+			object firstArg = null;
+	
+			try {
+				Delegate.CreateDelegate (t, m) ;
+				Assert.Fail ("#1");
+			} catch (ArgumentException) {  }
+	
+			try {
+				Delegate.CreateDelegate(t, m, true);
+				Assert.Fail ("#2");
+			} catch (ArgumentException) {  }
+	
+			try {
+				Delegate.CreateDelegate(t, m, false);
+			} catch (ArgumentException) { Assert.Fail ("#3"); }
+	
+			try {
+				Delegate.CreateDelegate(t, null, m);
+			} catch (ArgumentException) { Assert.Fail ("#4"); }
+	
+			try {
+				Delegate.CreateDelegate(t, null, m, true);
+			} catch (ArgumentException) { Assert.Fail ("#5");  }
+	
+			try {
+				Delegate.CreateDelegate(t, null, m, false);
+			} catch (ArgumentException) { Assert.Fail ("#6"); }
+		}
 
 		[Test]
 		public void GetHashCode_Constant () {
@@ -1077,6 +1144,50 @@ namespace MonoTests.System
 			Assert.AreEqual (hc1, hc2);
 		}
 
+		public interface CreateDelegateIFoo {
+			int Test2 ();
+		}
+		
+		public abstract class CreateDelegateFoo {
+			public abstract int Test ();
+		}
+		
+		public class CreateDelegateMid : CreateDelegateFoo {
+			public override int Test () {
+				return 1;
+			}
+		}
+		
+		public class CreateDelegateBar : CreateDelegateMid, CreateDelegateIFoo {
+			public override int Test () {
+				return 2;
+			}
+		
+			public int Test2 () {
+				return 3;
+			}
+		}
+	
+		delegate int IntNoArgs ();
+
+		[Test]
+		public void CreateDelegateWithAbstractMethods ()
+		{
+			var f = new CreateDelegateBar ();
+			var m = typeof (CreateDelegateFoo).GetMethod ("Test");
+			var m2 = typeof (CreateDelegateMid).GetMethod ("Test");
+			var m3 = typeof (CreateDelegateIFoo).GetMethod ("Test2");
+	
+			IntNoArgs a1 = (IntNoArgs)Delegate.CreateDelegate (typeof (IntNoArgs), f, m);
+			IntNoArgs a2 = (IntNoArgs)Delegate.CreateDelegate (typeof (IntNoArgs), f, m2);
+			IntNoArgs a3 = (IntNoArgs)Delegate.CreateDelegate (typeof (IntNoArgs), f, m3);
+
+			Assert.AreEqual (2, a1 (), "#1");
+			Assert.AreEqual (2, a2 (), "#2");
+			Assert.AreEqual (3, a3 (), "#3");
+		}
+		
+
 		delegate string FooDelegate (Iface iface, string s);
 
 		delegate string FooDelegate2 (B b, string s);
@@ -1086,6 +1197,42 @@ namespace MonoTests.System
 			string retarg (string s);
 		}
 
+		[Test]
+		public void CreateDelegateWithLdFtnAndAbstractMethod ()
+		{
+			AssemblyName assemblyName = new AssemblyName ();
+			assemblyName.Name = "customMod";
+			assemblyName.Version = new Version (1, 2, 3, 4);
+	
+			AssemblyBuilder assembly
+				= Thread.GetDomain ().DefineDynamicAssembly (
+					  assemblyName, AssemblyBuilderAccess.RunAndSave);
+	
+			ModuleBuilder module = assembly.DefineDynamicModule ("res", "res.dll");
+	
+			TypeBuilder tb = module.DefineType ("Test2", TypeAttributes.Public, typeof (object));
+	
+			{
+				MethodBuilder mb =
+					tb.DefineMethod ("test", MethodAttributes.Public | MethodAttributes.Static,
+									 typeof (int), null);
+				ILGenerator il = mb.GetILGenerator ();
+	
+				il.Emit (OpCodes.Newobj, typeof (CreateDelegateBar).GetConstructor (new Type [] { }));
+				il.Emit (OpCodes.Ldftn, typeof (CreateDelegateIFoo).GetMethod ("Test2"));
+				il.Emit (OpCodes.Newobj, typeof (IntNoArgs).GetConstructor (new Type [] { typeof (object), typeof (IntPtr) }));
+				il.Emit (OpCodes.Call, typeof (IntNoArgs).GetMethod ("Invoke"));
+				il.Emit (OpCodes.Ret);
+			}
+	
+			Type t = tb.CreateType ();
+	
+			Object obj = Activator.CreateInstance (t, new object [0] { });
+	
+			int a = (int) t.GetMethod ("test").Invoke (obj, null);
+			Assert.AreEqual (3, a, "#1");
+		}
+
 		public class B {
 
 			public virtual string retarg3 (string s) {
diff --git a/mcs/class/corlib/Test/System/Int16Test.cs b/mcs/class/corlib/Test/System/Int16Test.cs
index d596878..88005a0 100644
--- a/mcs/class/corlib/Test/System/Int16Test.cs
+++ b/mcs/class/corlib/Test/System/Int16Test.cs
@@ -37,7 +37,7 @@ public class Int16Test
 	private CultureInfo old_culture;
 
 	[TestFixtureSetUp]
-	public void SetUp () 
+	public void SetUpFixture () 
 	{
 		old_culture = Thread.CurrentThread.CurrentCulture;
 
@@ -48,6 +48,12 @@ public class Int16Test
 		Results1 [0] = "("+NumberFormatInfo.CurrentInfo.CurrencySymbol+"32,768.00)";
 		Results2 [0] = NumberFormatInfo.CurrentInfo.CurrencySymbol+"32,767.00000";
 	}
+	
+	[SetUp]
+	public void Setup ()
+	{
+		Thread.CurrentThread.CurrentCulture = new CultureInfo ("en-US", false);
+	}
 
 	[TestFixtureTearDown]
 	public void TearDown ()
diff --git a/mcs/class/corlib/Test/System/Int32Test.cs b/mcs/class/corlib/Test/System/Int32Test.cs
index bc26e58..ff5e055 100644
--- a/mcs/class/corlib/Test/System/Int32Test.cs
+++ b/mcs/class/corlib/Test/System/Int32Test.cs
@@ -41,7 +41,7 @@ public class Int32Test
 	private CultureInfo old_culture;
 
 	[TestFixtureSetUp]
-	public void SetUp() 
+	public void SetUpFixture() 
 	{
 		old_culture = Thread.CurrentThread.CurrentCulture;
 
@@ -61,6 +61,12 @@ public class Int32Test
 		Results2 [0] = NumberFormatInfo.CurrentInfo.CurrencySymbol+"2,147,483,647.00000";
 		Results2 [6] = perPattern.Replace ("n","214,748,364,700.00000");
 	}
+	
+	[SetUp]
+	public void Setup ()
+	{
+		Thread.CurrentThread.CurrentCulture = new CultureInfo ("en-US", false);
+	}
 
 	[TestFixtureTearDown]
 	public void TearDown()
diff --git a/mcs/class/corlib/Test/System/NumberFormatterTest.cs b/mcs/class/corlib/Test/System/NumberFormatterTest.cs
index fced412..521f41f 100644
--- a/mcs/class/corlib/Test/System/NumberFormatterTest.cs
+++ b/mcs/class/corlib/Test/System/NumberFormatterTest.cs
@@ -3961,6 +3961,63 @@ namespace MonoTests.System
 			Assert.AreEqual ("NaN", (0.0 / 0.0).ToString ("N99", _nfi) , "#03");
 		}
 
+		[Test (Description = "Bug #659061")]
+		public void Test14032 ()
+		{
+			NumberFormatInfo nfi = _nfi.Clone () as NumberFormatInfo;
+			int[] groups = new int [10];
+
+			for (int i = 0; i < groups.Length; i++)
+				groups [i] = 1;
+			nfi.NumberGroupSizes = groups;
+			Assert.AreEqual ("2,5,5,5,6,6,6.65", (2555666.65).ToString ("N", nfi), "#01");
+
+			for (int i = 0; i < groups.Length; i++)
+				groups [i] = 2;
+			nfi.NumberGroupSizes = groups;
+			Assert.AreEqual ("2,55,56,66.65", (2555666.65).ToString ("N", nfi), "#02");
+
+			for (int i = 0; i < groups.Length; i++)
+				groups [i] = 3;
+			nfi.NumberGroupSizes = groups;
+			Assert.AreEqual ("2,555,666.65", (2555666.65).ToString ("N", nfi), "#03");
+
+			for (int i = 0; i < groups.Length; i++)
+				groups [i] = 4;
+			nfi.NumberGroupSizes = groups;
+			Assert.AreEqual ("255,5666.65", (2555666.65).ToString ("N", nfi), "#04");
+
+			for (int i = 0; i < groups.Length; i++)
+				groups [i] = 5;
+			nfi.NumberGroupSizes = groups;
+			Assert.AreEqual ("25,55666.65", (2555666.65).ToString ("N", nfi), "#05");
+
+			for (int i = 0; i < groups.Length; i++)
+				groups [i] = 6;
+			nfi.NumberGroupSizes = groups;
+			Assert.AreEqual ("2,555666.65", (2555666.65).ToString ("N", nfi), "#06");
+
+			for (int i = 0; i < groups.Length; i++)
+				groups [i] = 7;
+			nfi.NumberGroupSizes = groups;
+			Assert.AreEqual ("2555666.65", (2555666.65).ToString ("N", nfi), "#07");
+
+			for (int i = 0; i < groups.Length; i++)
+				groups [i] = 8;
+			nfi.NumberGroupSizes = groups;
+			Assert.AreEqual ("2555666.65", (2555666.65).ToString ("N", nfi), "#08");
+		}
+
+		[Test]
+		public void Test14033 ()
+		{
+			NumberFormatInfo nfi = _nfi.Clone () as NumberFormatInfo;
+			int[] groups = new int [] { 1, 2, 3 }; 
+
+			nfi.NumberGroupSizes = groups;
+			Assert.AreEqual ("2,555,66,6.65", (2555666.65).ToString ("N", nfi), "#01");
+		}
+
 		// Test15000- Double and P
 		[Test]
 		public void Test15000 ()
diff --git a/mcs/class/corlib/Test/System/StringTest.cs b/mcs/class/corlib/Test/System/StringTest.cs
index a335d1b..340fa8d 100644
--- a/mcs/class/corlib/Test/System/StringTest.cs
+++ b/mcs/class/corlib/Test/System/StringTest.cs
@@ -2297,7 +2297,7 @@ public class StringTest
 		Assert.IsTrue ("ABC".Contains ("ABC"));
 		Assert.IsTrue ("ABC".Contains ("AB"));
 		Assert.IsTrue (!"ABC".Contains ("AD"));
-		Assert.IsTrue (!"encyclopædia".Contains("encyclopaedia"));
+		Assert.IsTrue (!"encyclop�dia".Contains("encyclopaedia"));
 	}
 
 	[Test]
@@ -4467,6 +4467,73 @@ public class StringTest
 		Assert.AreSame (String.Empty, "a".TrimEnd ('a'), "TrimEnd(char)");
 		Assert.AreSame (String.Empty, "a".TrimStart ('a'), "TrimStart(char)");
 	}
+	
+	[Test]
+	public void LastIndexOfAndEmptiness () {
+		Assert.AreEqual (-1, "".LastIndexOf('.'), "#1");
+		Assert.AreEqual (-1, "".LastIndexOf('.', -1), "#2");
+		Assert.AreEqual (-1, "".LastIndexOf('.', -1, -1), "#3");
+		Assert.AreEqual (0, "x".LastIndexOf('x', 0), "#4");
+		Assert.AreEqual (0 , "x".LastIndexOf('x', 0, 1), "#5");
+		Assert.AreEqual (-1 , "x".LastIndexOf('z', 0, 1), "#6");
+
+		try {
+			"".LastIndexOf(null);
+			Assert.Fail ("#7");
+		} catch (ArgumentNullException) {}
+
+		Assert.AreEqual (0, "".LastIndexOf(""), "#8");
+		Assert.AreEqual (0, "".LastIndexOf("", -1), "#9");
+		Assert.AreEqual (0, "".LastIndexOf("", -1, 1), "#10");
+		Assert.AreEqual (0, "".LastIndexOf("", StringComparison.Ordinal), "#11");
+		Assert.AreEqual (0, "".LastIndexOf("", -1, StringComparison.Ordinal), "#12");
+		Assert.AreEqual (0, "".LastIndexOf("", -1, -1, StringComparison.Ordinal), "#13");
+		Assert.AreEqual (0, "x".LastIndexOf(""), "#14");
+
+		Assert.AreEqual (0, "x".LastIndexOf("x", 0), "#15");
+		Assert.AreEqual (0, "x".LastIndexOf("", 0), "#16");
+		Assert.AreEqual (0, "xxxx".LastIndexOf("", 0), "#17");
+		Assert.AreEqual (1, "xxxx".LastIndexOf("", 1), "#18");
+
+		Assert.AreEqual (1, "xy".LastIndexOf(""), "#19");
+		Assert.AreEqual (2, "xyz".LastIndexOf(""), "#20");
+		Assert.AreEqual (1, "xy".LastIndexOf(""), "#21");
+		Assert.AreEqual (1, "xy".LastIndexOf("", 2), "#22");
+		Assert.AreEqual (2, "xyz".LastIndexOf("", 2), "#23");
+		Assert.AreEqual (2, "xyz".LastIndexOf("", 2, 2), "#24");
+		Assert.AreEqual (2, "xyz".LastIndexOf("", 3, 3), "#25");
+
+		try {
+			"xy".LastIndexOf("", 29);
+			Assert.Fail ("#26");
+		}catch (ArgumentOutOfRangeException){}
+
+		Assert.AreEqual (-1, "".LastIndexOf("x"), "#27");
+		Assert.AreEqual (-1, "".LastIndexOf("x", -1), "#28");
+		Assert.AreEqual (-1, "".LastIndexOf("x", -1), "#29");
+		Assert.AreEqual (-1, "".LastIndexOf("x", StringComparison.Ordinal), "#30");
+		Assert.AreEqual (-1, "".LastIndexOf("x", -1, StringComparison.Ordinal), "#31");
+		Assert.AreEqual (-1, "".LastIndexOf("x", -1, -1, StringComparison.Ordinal), "#32");
+
+		Assert.AreEqual (1, "xx".LastIndexOf("", StringComparison.Ordinal), "#33");
+		Assert.AreEqual (1, "xx".LastIndexOf("", 2, StringComparison.Ordinal), "#34");
+		Assert.AreEqual (1, "xx".LastIndexOf("", 2, 2, StringComparison.Ordinal), "#35");
+
+		Assert.AreEqual (3, "xxxx".LastIndexOf("", StringComparison.Ordinal), "#36");
+		Assert.AreEqual (2, "xxxx".LastIndexOf("", 2, StringComparison.Ordinal), "#37");
+		Assert.AreEqual (2, "xxxx".LastIndexOf("", 2, 2, StringComparison.Ordinal), "#38");
+
+		Assert.AreEqual (3, "xxxx".LastIndexOf("", 3, StringComparison.Ordinal), "#39");
+		Assert.AreEqual (3, "xxxx".LastIndexOf("", 3, 3, StringComparison.Ordinal), "#40");
+	}
+	
+	
+	[Test]
+	public void LastIndexOfAnyAndEmptiness () {
+		Assert.AreEqual (-1, "".LastIndexOfAny(new char[] {'.', 'x'}), "#1");
+		Assert.AreEqual (-1, "".LastIndexOfAny(new char[] {'.', 'x'}, -1), "#2");
+		Assert.AreEqual (-1, "".LastIndexOfAny(new char[] {'.', 'x'}, -1, -1), "#3");
+	}
 }
 
 }
diff --git a/mcs/class/corlib/Test/System/TypeTest.cs b/mcs/class/corlib/Test/System/TypeTest.cs
index 518c01e..f415e02 100644
--- a/mcs/class/corlib/Test/System/TypeTest.cs
+++ b/mcs/class/corlib/Test/System/TypeTest.cs
@@ -168,6 +168,8 @@ namespace MonoTests.System
 		{
 			return a;
 		}
+		
+		public class Nested<K> {}
 	}
 	
 	class Foo<T, U>
@@ -2961,13 +2963,11 @@ PublicKeyToken=b77a5c561934e089"));
 		public void MakeGenericType_BadUserType ()
 		{
 			Type ut = new UserType (null);
-			try {
-				Type t = typeof (Foo<>).MakeGenericType (ut);
-				Assert.Fail ("#1");
-			} catch (ArgumentException) {
-			}
+			Type t = typeof (Foo<>).MakeGenericType (ut);
+			var g0 = t.GetGenericArguments () [0];
+			Assert.AreSame (g0, ut, "#1");
 		}
-	
+
 		[Test]
 		public void MakeGenericType_WrongNumOfArguments ()
 		{
@@ -3340,6 +3340,13 @@ PublicKeyToken=b77a5c561934e089"));
 		} catch (TypeLoadException) { }
 
 		}
+		
+		[Test] //Bug643890
+		public void DeclaringTypeOfGenericNestedTypeInstanceIsOpen ()
+		{
+			var type = typeof (Foo<int>.Nested<string>);
+			Assert.AreSame (typeof (Foo<>), type.DeclaringType, "#1");
+		}
 
 #if NET_4_0
 		interface IGetInterfaceMap<in T>
diff --git a/mcs/class/corlib/Test/System/VersionTest.cs b/mcs/class/corlib/Test/System/VersionTest.cs
index 2eb8c7b..e843443 100644
--- a/mcs/class/corlib/Test/System/VersionTest.cs
+++ b/mcs/class/corlib/Test/System/VersionTest.cs
@@ -251,7 +251,7 @@ namespace MonoTests.System
 		}
 #endif
 
-#if BOOTSTRAP_NET_4_0 || NET_4_0
+#if NET_4_0
 		[Test]
 		public void Parse ()
 		{
diff --git a/mcs/class/corlib/corlib.dll.sources b/mcs/class/corlib/corlib.dll.sources
index b51eb2a..3f0eda8 100644
--- a/mcs/class/corlib/corlib.dll.sources
+++ b/mcs/class/corlib/corlib.dll.sources
@@ -660,6 +660,8 @@ System.Runtime.ConstrainedExecution/CER.cs
 System.Runtime.ConstrainedExecution/Consistency.cs
 System.Runtime.ConstrainedExecution/PrePrepareMethodAttribute.cs
 System.Runtime.ConstrainedExecution/ReliabilityContractAttribute.cs
+System.Runtime.ExceptionServices/FirstChanceExceptionEventArgs.cs
+System.Runtime.ExceptionServices/HandleProcessCorruptedStateExceptionsAttribute.cs
 System.Runtime.Hosting/ActivationArguments.cs
 System.Runtime.Hosting/ApplicationActivator.cs
 System.Runtime.InteropServices/_Activator.cs
@@ -1112,6 +1114,8 @@ System.Runtime.Serialization.Formatters.Binary/CodeGenerator.cs
 System.Runtime.Serialization.Formatters.Binary/ObjectReader.cs
 System.Runtime.Serialization.Formatters.Binary/ObjectWriter.cs
 System.Runtime.Serialization.Formatters.Binary/MessageFormatter.cs
+System.Runtime.Versioning/ComponentGuaranteesAttribute.cs
+System.Runtime.Versioning/ComponentGuaranteesOptions.cs
 System.Runtime.Versioning/ResourceConsumptionAttribute.cs
 System.Runtime.Versioning/ResourceExposureAttribute.cs
 System.Runtime.Versioning/ResourceScope.cs
@@ -1541,18 +1545,17 @@ System.Collections.Concurrent/OrderablePartitioner.cs
 System.Collections.Concurrent/ConcurrentDictionary.cs
 System.Collections.Concurrent/Partitioner.cs
 System.Collections.Concurrent/ConcurrentQueue.cs
-System.Collections.Concurrent/ConcurrentSkipList.cs
-System.Collections.Concurrent/Partitioners/ListPartitioner.cs
-System.Collections.Concurrent/Partitioners/EnumerablePartitioner.cs
+System.Collections.Concurrent.Partitioners/ListPartitioner.cs
+System.Collections.Concurrent.Partitioners/EnumerablePartitioner.cs
+System.Collections.Concurrent.Partitioners/UserRangePartitioner.cs
 System.Collections.Concurrent/IProducerConsumerCollection.cs
 System.Collections.Concurrent/ConcurrentStack.cs
 System.Collections.Concurrent/SplitOrderedList.cs
+System.Collections.Concurrent/ConcurrentOrderedList.cs
 System.Threading/LazyInitializer.cs
 System.Threading/CountdownEvent.cs
 System.Threading/CancellationTokenSource.cs
-System.Threading/Snzi.cs
 System.Threading/CancellationToken.cs
-System.Threading/CSnzi.cs
 System.Threading/SpinWait.cs
 System.Threading/SemaphoreSlim.cs
 System.Threading/CancellationTokenRegistration.cs
diff --git a/mcs/class/corlib/corlib_test.dll.sources b/mcs/class/corlib/corlib_test.dll.sources
index 0847083..e6cdea6 100644
--- a/mcs/class/corlib/corlib_test.dll.sources
+++ b/mcs/class/corlib/corlib_test.dll.sources
@@ -438,8 +438,7 @@ System.Threading.Tasks/TaskCompletionSourceTests.cs
 System.Threading.Tasks/ParallelTestHelper.cs
 System.Threading.Tasks/ParallelTests.cs
 System.Collections.Concurrent/ParallelConcurrentStackTests.cs
-System.Collections.Concurrent/ConcurrentSkipListTests.cs
-../System.Collections.Concurrent/ConcurrentSkipList.cs
+System.Collections.Concurrent/PartitionerTests.cs
 System.Collections.Concurrent/ConcurrentQueueTests.cs
 System.Collections.Concurrent/ConcurrentBagTests.cs
 System.Collections.Concurrent/ConcurrentStackTests.cs
diff --git a/mcs/class/corlib/monotouch_bootstrap_corlib.dll.sources b/mcs/class/corlib/monotouch_bootstrap_corlib.dll.sources
deleted file mode 100644
index 0df04cb..0000000
--- a/mcs/class/corlib/monotouch_bootstrap_corlib.dll.sources
+++ /dev/null
@@ -1,2 +0,0 @@
-#include monotouch_corlib.dll.sources
-
diff --git a/mcs/class/corlib/monotouch_corlib.dll.sources b/mcs/class/corlib/monotouch_corlib.dll.sources
deleted file mode 100644
index da77893..0000000
--- a/mcs/class/corlib/monotouch_corlib.dll.sources
+++ /dev/null
@@ -1 +0,0 @@
-#include corlib.dll.sources
diff --git a/mcs/class/corlib/moonlight_bootstrap_corlib.dll.sources b/mcs/class/corlib/moonlight_bootstrap_corlib.dll.sources
deleted file mode 100644
index 346a842..0000000
--- a/mcs/class/corlib/moonlight_bootstrap_corlib.dll.sources
+++ /dev/null
@@ -1,2 +0,0 @@
-#include moonlight_raw_corlib.dll.sources
-
diff --git a/mcs/class/dlr/ChangeLog b/mcs/class/dlr/ChangeLog
index 748ceb0..407f8eb 100644
--- a/mcs/class/dlr/ChangeLog
+++ b/mcs/class/dlr/ChangeLog
@@ -1,3 +1,7 @@
+2010-11-02  Marek Safar  <marek.safar at gmail.com>
+
+	Updated to r54115
+
 2010-08-01  Marek Safar  <marek.safar at gmail.com>
 
 	Add my old sync script
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/BinaryOperationBinder.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/BinaryOperationBinder.cs
index 079e768..0b55a9e 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/BinaryOperationBinder.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/BinaryOperationBinder.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/BindingRestrictions.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/BindingRestrictions.cs
index 6a52321..2b1115c 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/BindingRestrictions.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/BindingRestrictions.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/CallInfo.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/CallInfo.cs
index d3fc9c9..0bb6254 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/CallInfo.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/CallInfo.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/CallSite.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/CallSite.cs
index c02928f..9dd1f34 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/CallSite.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/CallSite.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
@@ -99,7 +99,7 @@ namespace System.Runtime.CompilerServices {
         public static CallSite Create(Type delegateType, CallSiteBinder binder) {
             ContractUtils.RequiresNotNull(delegateType, "delegateType");
             ContractUtils.RequiresNotNull(binder, "binder");
-            if (!delegateType.IsSubclassOf(typeof(Delegate))) throw Error.TypeMustBeDerivedFromSystemDelegate();
+            if (!delegateType.IsSubclassOf(typeof(MulticastDelegate))) throw Error.TypeMustBeDerivedFromSystemDelegate();
 
             if (_SiteCtors == null) {
                 // It's okay to just set this, worst case we're just throwing away some data
@@ -132,7 +132,7 @@ namespace System.Runtime.CompilerServices {
     /// Dynamic site type.
     /// </summary>
     /// <typeparam name="T">The delegate type.</typeparam>
-    public sealed partial class CallSite<T> : CallSite where T : class {
+    public partial class CallSite<T> : CallSite where T : class {
         /// <summary>
         /// The update delegate. Called when the dynamic site experiences cache miss.
         /// </summary>
@@ -191,6 +191,7 @@ namespace System.Runtime.CompilerServices {
         /// <returns>The new instance of dynamic call site.</returns>
         [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1000:DoNotDeclareStaticMembersOnGenericTypes")]
         public static CallSite<T> Create(CallSiteBinder binder) {
+            if (!typeof(T).IsSubclassOf(typeof(MulticastDelegate))) throw Error.TypeMustBeDerivedFromSystemDelegate();
             return new CallSite<T>(binder);
         }
 
@@ -279,8 +280,8 @@ namespace System.Runtime.CompilerServices {
                     }
                 }
                 if (method != null) {
-                    _CachedNoMatch = (T)(object)noMatchMethod.MakeGenericMethod(args).CreateDelegate(target);
-                    return (T)(object)method.MakeGenericMethod(args).CreateDelegate(target);
+                    _CachedNoMatch = (T)(object)CreateDelegateHelper(target, noMatchMethod.MakeGenericMethod(args));
+                    return (T)(object)CreateDelegateHelper(target, method.MakeGenericMethod(args));
                 }
             }
 
@@ -288,6 +289,28 @@ namespace System.Runtime.CompilerServices {
             return CreateCustomUpdateDelegate(invoke);
         }
 
+        // NEEDS SECURITY REVIEW:
+        //
+        // This needs to be SafeCritical on Silverlight to allow access to
+        // internal types from user code as generic parameters.
+        //
+        // It's safe for a few reasons:
+        //   1. The internal types are coming from a lower trust level (app code)
+        //   2. We got the internal types from our own generic parameter: T
+        //   3. The UpdateAndExecute methods don't do anything with the types,
+        //      we just want the CallSite args to be strongly typed to avoid
+        //      casting.
+        //   4. Works on desktop CLR with AppDomain that has only Execute
+        //      permission. In theory it might require RestrictedMemberAccess,
+        //      but it's unclear because we have tests passing without RMA.
+        //
+        // When Silverlight gets RMA we may be able to remove this.
+#if SILVERLIGHT
+        [System.Security.SecuritySafeCritical]
+#endif
+        private static Delegate CreateDelegateHelper(Type delegateType, MethodInfo method) {
+            return Delegate.CreateDelegate(delegateType, method);
+        }
 
         private static bool IsSimpleSignature(MethodInfo invoke, out Type[] sig) {
             ParameterInfo[] pis = invoke.GetParametersCached();
@@ -314,7 +337,6 @@ namespace System.Runtime.CompilerServices {
         [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1822:MarkMembersAsStatic")]
         private T CreateCustomNoMatchDelegate(MethodInfo invoke) {
             var @params = invoke.GetParametersCached().Map(p => Expression.Parameter(p.ParameterType, p.Name));
-            var site = @params[0];
             return Expression.Lambda<T>(
                 Expression.Block(
                     Expression.Call(
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/CallSiteBinder.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/CallSiteBinder.cs
index f275a2b..03fb5d1 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/CallSiteBinder.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/CallSiteBinder.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
@@ -66,7 +66,7 @@ namespace System.Runtime.CompilerServices {
 
             private LambdaSignature() {
                 Type target = typeof(T);
-                if (!typeof(Delegate).IsAssignableFrom(target)) {
+                if (!target.IsSubclassOf(typeof(MulticastDelegate))) {
                     throw Error.TypeParameterIsNotDelegate(target);
                 }
 
@@ -166,7 +166,6 @@ namespace System.Runtime.CompilerServices {
         }
 
         private static Expression<T> Stitch<T>(Expression binding, LambdaSignature<T> signature) where T : class {
-            Type targetType = typeof(T);
             Type siteType = typeof(CallSite<T>);
 
             var body = new ReadOnlyCollectionBuilder<Expression>(3);
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/CallSiteHelpers.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/CallSiteHelpers.cs
index 48f52e8..38e177d 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/CallSiteHelpers.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/CallSiteHelpers.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/CallSiteOps.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/CallSiteOps.cs
index 6b72589..f13a29b 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/CallSiteOps.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/CallSiteOps.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/ConvertBinder.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/ConvertBinder.cs
index e8ca9b8..af6b278 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/ConvertBinder.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/ConvertBinder.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/CreateInstanceBinder.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/CreateInstanceBinder.cs
index bb18e4c..9edf1b7 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/CreateInstanceBinder.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/CreateInstanceBinder.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/DeleteIndexBinder.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/DeleteIndexBinder.cs
index 6c38caa..e2523a5 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/DeleteIndexBinder.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/DeleteIndexBinder.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/DeleteMemberBinder.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/DeleteMemberBinder.cs
index 02881df..d01bfcd 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/DeleteMemberBinder.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/DeleteMemberBinder.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/DynamicMetaObject.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/DynamicMetaObject.cs
index 8d28b9d..96ffe2a 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/DynamicMetaObject.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/DynamicMetaObject.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/DynamicMetaObjectBinder.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/DynamicMetaObjectBinder.cs
index 0289de8..7aece9c 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/DynamicMetaObjectBinder.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/DynamicMetaObjectBinder.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/DynamicObject.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/DynamicObject.cs
index 8c00a87..5d0bdf6 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/DynamicObject.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/DynamicObject.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
@@ -22,6 +22,7 @@ using System.Linq.Expressions;
 using System.Diagnostics;
 using System.Dynamic.Utils;
 using System.Reflection;
+using System.Runtime.CompilerServices;
 
 namespace System.Dynamic {
     /// <summary>
@@ -32,6 +33,7 @@ namespace System.Dynamic {
     /// If a method is not overridden then the DynamicObject does not directly support that behavior and 
     /// the call site will determine how the binding should be performed.
     /// </summary>
+    [Serializable]
     public class DynamicObject : IDynamicMetaObjectProvider {
 
         /// <summary>
@@ -242,7 +244,7 @@ namespace System.Dynamic {
 
             public override DynamicMetaObject BindSetMember(SetMemberBinder binder, DynamicMetaObject value) {
                 if (IsOverridden("TrySetMember")) {
-                    return CallMethodReturnLast("TrySetMember", binder, GetArgs(value), (e) => binder.FallbackSetMember(this, value, e));
+                    return CallMethodReturnLast("TrySetMember", binder, NoArgs, value.Expression, (e) => binder.FallbackSetMember(this, value, e));
                 }
 
                 return base.BindSetMember(binder, value);
@@ -285,7 +287,7 @@ namespace System.Dynamic {
                 var call = BuildCallMethodWithResult(
                     "TryInvokeMember",
                     binder,
-                    GetArgArray(args),
+                    DynamicMetaObject.GetExpressions(args),
                     BuildCallMethodWithResult(
                         "TryGetMember",
                         new GetBinderAdapter(binder),
@@ -302,7 +304,7 @@ namespace System.Dynamic {
 
             public override DynamicMetaObject BindCreateInstance(CreateInstanceBinder binder, DynamicMetaObject[] args) {
                 if (IsOverridden("TryCreateInstance")) {
-                    return CallMethodWithResult("TryCreateInstance", binder, GetArgArray(args), (e) => binder.FallbackCreateInstance(this, args, e));
+                    return CallMethodWithResult("TryCreateInstance", binder, DynamicMetaObject.GetExpressions(args), (e) => binder.FallbackCreateInstance(this, args, e));
                 }
 
                 return base.BindCreateInstance(binder, args);
@@ -310,7 +312,7 @@ namespace System.Dynamic {
 
             public override DynamicMetaObject BindInvoke(InvokeBinder binder, DynamicMetaObject[] args) {
                 if (IsOverridden("TryInvoke")) {
-                    return CallMethodWithResult("TryInvoke", binder, GetArgArray(args), (e) => binder.FallbackInvoke(this, args, e));
+                    return CallMethodWithResult("TryInvoke", binder, DynamicMetaObject.GetExpressions(args), (e) => binder.FallbackInvoke(this, args, e));
                 }
 
                 return base.BindInvoke(binder, args);
@@ -318,7 +320,7 @@ namespace System.Dynamic {
 
             public override DynamicMetaObject BindBinaryOperation(BinaryOperationBinder binder, DynamicMetaObject arg) {
                 if (IsOverridden("TryBinaryOperation")) {
-                    return CallMethodWithResult("TryBinaryOperation", binder, GetArgs(arg), (e) => binder.FallbackBinaryOperation(this, arg, e));
+                    return CallMethodWithResult("TryBinaryOperation", binder, DynamicMetaObject.GetExpressions(new DynamicMetaObject[] {arg}), (e) => binder.FallbackBinaryOperation(this, arg, e));
                 }
 
                 return base.BindBinaryOperation(binder, arg);
@@ -334,7 +336,7 @@ namespace System.Dynamic {
 
             public override DynamicMetaObject BindGetIndex(GetIndexBinder binder, DynamicMetaObject[] indexes) {
                 if (IsOverridden("TryGetIndex")) {
-                    return CallMethodWithResult("TryGetIndex", binder, GetArgArray(indexes), (e) => binder.FallbackGetIndex(this, indexes, e));
+                    return CallMethodWithResult("TryGetIndex", binder, DynamicMetaObject.GetExpressions(indexes), (e) => binder.FallbackGetIndex(this, indexes, e));
                 }
 
                 return base.BindGetIndex(binder, indexes);
@@ -342,7 +344,7 @@ namespace System.Dynamic {
 
             public override DynamicMetaObject BindSetIndex(SetIndexBinder binder, DynamicMetaObject[] indexes, DynamicMetaObject value) {
                 if (IsOverridden("TrySetIndex")) {
-                    return CallMethodReturnLast("TrySetIndex", binder, GetArgArray(indexes, value), (e) => binder.FallbackSetIndex(this, indexes, value, e));
+                    return CallMethodReturnLast("TrySetIndex", binder, DynamicMetaObject.GetExpressions(indexes), value.Expression, (e) => binder.FallbackSetIndex(this, indexes, value, e));
                 }
 
                 return base.BindSetIndex(binder, indexes, value);
@@ -350,7 +352,7 @@ namespace System.Dynamic {
 
             public override DynamicMetaObject BindDeleteIndex(DeleteIndexBinder binder, DynamicMetaObject[] indexes) {
                 if (IsOverridden("TryDeleteIndex")) {
-                    return CallMethodNoResult("TryDeleteIndex", binder, GetArgArray(indexes), (e) => binder.FallbackDeleteIndex(this, indexes, e));
+                    return CallMethodNoResult("TryDeleteIndex", binder, DynamicMetaObject.GetExpressions(indexes), (e) => binder.FallbackDeleteIndex(this, indexes, e));
                 }
 
                 return base.BindDeleteIndex(binder, indexes);
@@ -360,25 +362,61 @@ namespace System.Dynamic {
 
             private readonly static Expression[] NoArgs = new Expression[0];
 
-            private static Expression[] GetArgs(params DynamicMetaObject[] args) {
-                Expression[] paramArgs = DynamicMetaObject.GetExpressions(args);
+            private static Expression[] GetConvertedArgs(params Expression[] args) {
+                ReadOnlyCollectionBuilder<Expression> paramArgs = new ReadOnlyCollectionBuilder<Expression>(args.Length);
 
-                for (int i = 0; i < paramArgs.Length; i++) {
-                    paramArgs[i] = Expression.Convert(args[i].Expression, typeof(object));
+                for (int i = 0; i < args.Length; i++) {
+                    paramArgs.Add(Expression.Convert(args[i], typeof(object)));
                 }
 
-                return paramArgs;
+                return paramArgs.ToArray();
             }
 
-            private static Expression[] GetArgArray(DynamicMetaObject[] args) {
-                return new[] { Expression.NewArrayInit(typeof(object), GetArgs(args)) };
+            /// <summary>
+            /// Helper method for generating expressions that assign byRef call
+            /// parameters back to their original variables
+            /// </summary>
+            private static Expression ReferenceArgAssign(Expression callArgs, Expression[] args) {
+                ReadOnlyCollectionBuilder<Expression> block = null;
+
+                for (int i = 0; i < args.Length; i++) {
+                    ContractUtils.Requires(args[i] is ParameterExpression);
+                    if (((ParameterExpression)args[i]).IsByRef) {
+                        if (block == null)
+                            block = new ReadOnlyCollectionBuilder<Expression>();
+
+                        block.Add(
+                            Expression.Assign(
+                                args[i],
+                                Expression.Convert(
+                                    Expression.ArrayIndex(
+                                        callArgs,
+                                        Expression.Constant(i)
+                                    ),
+                                    args[i].Type
+                                )
+                            )
+                        );
+                    }
+                }
+
+                if (block != null)
+                    return Expression.Block(block);
+                else
+                    return Expression.Empty();
             }
 
-            private static Expression[] GetArgArray(DynamicMetaObject[] args, DynamicMetaObject value) {
-                return new Expression[] {
-                    Expression.NewArrayInit(typeof(object), GetArgs(args)),
-                    Expression.Convert(value.Expression, typeof(object))
-                };
+            /// <summary>
+            /// Helper method for generating arguments for calling methods
+            /// on DynamicObject.  parameters is either a list of ParameterExpressions
+            /// to be passed to the method as an object[], or NoArgs to signify that
+            /// the target method takes no object[] parameter.
+            /// </summary>
+            private static Expression[] BuildCallArgs(DynamicMetaObjectBinder binder, Expression[] parameters, Expression arg0, Expression arg1) {
+                if (!object.ReferenceEquals(parameters, NoArgs))
+                    return arg1 != null ? new Expression[] { Constant(binder), arg0, arg1 } : new Expression[] { Constant(binder), arg0 };
+                else
+                    return arg1 != null ? new Expression[] { Constant(binder), arg1 } : new Expression[] { Constant(binder) };
             }
 
             private static ConstantExpression Constant(DynamicMetaObjectBinder binder) {
@@ -421,6 +459,14 @@ namespace System.Dynamic {
                 return fallback(callDynamic);
             }
 
+            /// <summary>
+            /// Helper method for generating a MetaObject which calls a
+            /// specific method on DynamicObject that returns a result.
+            /// 
+            /// args is either an array of arguments to be passed
+            /// to the method as an object[] or NoArgs to signify that
+            /// the target method takes no parameters.
+            /// </summary>
             private DynamicMetaObject BuildCallMethodWithResult(string methodName, DynamicMetaObjectBinder binder, Expression[] args, DynamicMetaObject fallbackResult, Fallback fallbackInvoke) {
                 if (!IsOverridden(methodName)) {
                     return fallbackResult;
@@ -434,11 +480,8 @@ namespace System.Dynamic {
                 // }
                 //
                 var result = Expression.Parameter(typeof(object), null);
-
-                var callArgs = new Expression[args.Length + 2];
-                Array.Copy(args, 0, callArgs, 1, args.Length);
-                callArgs[0] = Constant(binder);
-                callArgs[callArgs.Length - 1] = result;
+                ParameterExpression callArgs = methodName != "TryBinaryOperation" ? Expression.Parameter(typeof(object[]), null) : Expression.Parameter(typeof(object), null);
+                var callArgsValue = GetConvertedArgs(args);
 
                 var resultMO = new DynamicMetaObject(result, BindingRestrictions.Empty);
 
@@ -450,7 +493,39 @@ namespace System.Dynamic {
                     // will always be a cast or unbox
                     Debug.Assert(convert.Method == null);
 
-                    resultMO = new DynamicMetaObject(convert, resultMO.Restrictions);
+                    // Prepare a good exception message in case the convert will fail
+                    string convertFailed = Strings.DynamicObjectResultNotAssignable(
+                        "{0}",
+                        this.Value.GetType(),
+                        binder.GetType(),
+                        binder.ReturnType
+                    );
+
+                    var checkedConvert = Expression.Condition(
+                        Expression.TypeIs(resultMO.Expression, binder.ReturnType),
+                        convert,
+                        Expression.Throw(
+                            Expression.New(typeof(InvalidCastException).GetConstructor(new Type[]{typeof(string)}),
+                                Expression.Call(
+                                    typeof(string).GetMethod("Format", new Type[] {typeof(string), typeof(object)}),
+                                    Expression.Constant(convertFailed),
+                                    Expression.Condition(
+                                        Expression.Equal(resultMO.Expression, Expression.Constant(null)),
+                                        Expression.Constant("null"),
+                                        Expression.Call(
+                                            resultMO.Expression,
+                                            typeof(object).GetMethod("GetType")
+                                        ),
+                                        typeof(object)
+                                    )
+                                )
+                            ),
+                            binder.ReturnType
+                        ),
+                        binder.ReturnType
+                    );
+
+                    resultMO = new DynamicMetaObject(checkedConvert, resultMO.Restrictions);
                 }
 
                 if (fallbackInvoke != null) {
@@ -459,14 +534,23 @@ namespace System.Dynamic {
 
                 var callDynamic = new DynamicMetaObject(
                     Expression.Block(
-                        new[] { result },
+                        new[] { result, callArgs },
+                        methodName != "TryBinaryOperation" ? Expression.Assign(callArgs, Expression.NewArrayInit(typeof(object), callArgsValue)) : Expression.Assign(callArgs, callArgsValue[0]),
                         Expression.Condition(
                             Expression.Call(
                                 GetLimitedSelf(),
                                 typeof(DynamicObject).GetMethod(methodName),
-                                callArgs
+                                BuildCallArgs(
+                                    binder,
+                                    args,
+                                    callArgs,
+                                    result
+                                )
+                            ),
+                            Expression.Block(
+                                methodName != "TryBinaryOperation" ? ReferenceArgAssign(callArgs, args) : Expression.Empty(),
+                                resultMO.Expression
                             ),
-                            resultMO.Expression,
                             fallbackResult.Expression,
                             binder.ReturnType
                         )
@@ -481,8 +565,12 @@ namespace System.Dynamic {
             /// Helper method for generating a MetaObject which calls a
             /// specific method on Dynamic, but uses one of the arguments for
             /// the result.
+            /// 
+            /// args is either an array of arguments to be passed
+            /// to the method as an object[] or NoArgs to signify that
+            /// the target method takes no parameters.
             /// </summary>
-            private DynamicMetaObject CallMethodReturnLast(string methodName, DynamicMetaObjectBinder binder, Expression[] args, Fallback fallback) {
+            private DynamicMetaObject CallMethodReturnLast(string methodName, DynamicMetaObjectBinder binder, Expression[] args, Expression value, Fallback fallback) {
                 //
                 // First, call fallback to do default binding
                 // This produces either an error or a call to a .NET member
@@ -498,19 +586,28 @@ namespace System.Dynamic {
                 //
 
                 var result = Expression.Parameter(typeof(object), null);
-                var callArgs = args.AddFirst(Constant(binder));
-                callArgs[args.Length] = Expression.Assign(result, callArgs[args.Length]);
+                var callArgs = Expression.Parameter(typeof(object[]), null);
+                var callArgsValue = GetConvertedArgs(args);
 
                 var callDynamic = new DynamicMetaObject(
                     Expression.Block(
-                        new[] { result },
+                        new[] { result, callArgs },
+                        Expression.Assign(callArgs, Expression.NewArrayInit(typeof(object), callArgsValue)),
                         Expression.Condition(
                             Expression.Call(
                                 GetLimitedSelf(),
                                 typeof(DynamicObject).GetMethod(methodName),
-                                callArgs
+                                BuildCallArgs(
+                                    binder,
+                                    args,
+                                    callArgs,
+                                    Expression.Assign(result, Expression.Convert(value, typeof(object)))
+                                )
+                            ),
+                            Expression.Block(
+                                ReferenceArgAssign(callArgs, args),
+                                result
                             ),
-                            result,
                             fallbackResult.Expression,
                             typeof(object)
                         )
@@ -534,6 +631,10 @@ namespace System.Dynamic {
             /// Helper method for generating a MetaObject which calls a
             /// specific method on Dynamic, but uses one of the arguments for
             /// the result.
+            /// 
+            /// args is either an array of arguments to be passed
+            /// to the method as an object[] or NoArgs to signify that
+            /// the target method takes no parameters.
             /// </summary>
             private DynamicMetaObject CallMethodNoResult(string methodName, DynamicMetaObjectBinder binder, Expression[] args, Fallback fallback) {
                 //
@@ -541,21 +642,35 @@ namespace System.Dynamic {
                 // This produces either an error or a call to a .NET member
                 //
                 DynamicMetaObject fallbackResult = fallback(null);
+                var callArgs = Expression.Parameter(typeof(object[]), null);
+                var callArgsValue = GetConvertedArgs(args);
 
                 //
                 // Build a new expression like:
                 //   if (TryDeleteMember(payload)) { } else { fallbackResult }
                 //
                 var callDynamic = new DynamicMetaObject(
-                    Expression.Condition(
-                        Expression.Call(
-                            GetLimitedSelf(),
-                            typeof(DynamicObject).GetMethod(methodName),
-                            args.AddFirst(Constant(binder))
-                        ),
-                        Expression.Empty(),
-                        fallbackResult.Expression,
-                        typeof(void)
+                    Expression.Block(
+                        new[] { callArgs },
+                        Expression.Assign(callArgs, Expression.NewArrayInit(typeof(object), callArgsValue)),
+                        Expression.Condition(
+                            Expression.Call(
+                                GetLimitedSelf(),
+                                typeof(DynamicObject).GetMethod(methodName),
+                                BuildCallArgs(
+                                    binder,
+                                    args,
+                                    callArgs,
+                                    null
+                                )
+                            ),
+                            Expression.Block(
+                                ReferenceArgAssign(callArgs, args),
+                                Expression.Empty()
+                            ),
+                            fallbackResult.Expression,
+                            typeof(void)
+                        )
                     ),
                     GetRestrictions().Merge(fallbackResult.Restrictions)
                 );
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/ExpandoClass.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/ExpandoClass.cs
index 6122329..8e8afbe 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/ExpandoClass.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/ExpandoClass.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/ExpandoObject.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/ExpandoObject.cs
index c2d73e9..6ba7c7d 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/ExpandoObject.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/ExpandoObject.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/GetIndexBinder.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/GetIndexBinder.cs
index 8102cad..730c027 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/GetIndexBinder.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/GetIndexBinder.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/GetMemberBinder.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/GetMemberBinder.cs
index 0bf1049..f02ca86 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/GetMemberBinder.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/GetMemberBinder.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/IDynamicMetaObjectProvider.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/IDynamicMetaObjectProvider.cs
index 8614094..b4314cb 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/IDynamicMetaObjectProvider.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/IDynamicMetaObjectProvider.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/IInvokeOnGetBinder.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/IInvokeOnGetBinder.cs
index fd14068..49d2765 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/IInvokeOnGetBinder.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/IInvokeOnGetBinder.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/InvokeBinder.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/InvokeBinder.cs
index 6530cc0..248bb54 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/InvokeBinder.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/InvokeBinder.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/InvokeMemberBinder.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/InvokeMemberBinder.cs
index d3cf6c0..404ff50 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/InvokeMemberBinder.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/InvokeMemberBinder.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/RuleCache.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/RuleCache.cs
index c9db53b..a7865f7 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/RuleCache.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/RuleCache.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/SetIndexBinder.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/SetIndexBinder.cs
index f4a3635..ea123b8 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/SetIndexBinder.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/SetIndexBinder.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/SetMemberBinder.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/SetMemberBinder.cs
index 77c2a0e..dcda105 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/SetMemberBinder.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/SetMemberBinder.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/UnaryOperationBinder.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/UnaryOperationBinder.cs
index eb5b1da..46c7046 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/UnaryOperationBinder.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/UnaryOperationBinder.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/UpdateDelegates.Generated.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/UpdateDelegates.Generated.cs
index eb3c288..70a1b92 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/UpdateDelegates.Generated.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Actions/UpdateDelegates.Generated.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/BinaryExpression.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/BinaryExpression.cs
index 0ccacc2..845e91a 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/BinaryExpression.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/BinaryExpression.cs
@@ -3,11 +3,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
@@ -1336,7 +1336,7 @@ namespace System.Linq.Expressions {
             }
 
             Type delegateType = conversion.Type;
-            Debug.Assert(typeof(System.Delegate).IsAssignableFrom(delegateType) && delegateType != typeof(System.Delegate));
+            Debug.Assert(typeof(System.MulticastDelegate).IsAssignableFrom(delegateType) && delegateType != typeof(System.MulticastDelegate));
             MethodInfo method = delegateType.GetMethod("Invoke");
             if (method.ReturnType == typeof(void)) {
                 throw Error.UserDefinedOperatorMustNotBeVoid(conversion);
@@ -1473,7 +1473,7 @@ namespace System.Linq.Expressions {
 
         private static void ValidateOpAssignConversionLambda(LambdaExpression conversion, Expression left, MethodInfo method, ExpressionType nodeType) {
             Type delegateType = conversion.Type;
-            Debug.Assert(typeof(System.Delegate).IsAssignableFrom(delegateType) && delegateType != typeof(System.Delegate));
+            Debug.Assert(typeof(System.MulticastDelegate).IsAssignableFrom(delegateType) && delegateType != typeof(System.MulticastDelegate));
             MethodInfo mi = delegateType.GetMethod("Invoke");
             ParameterInfo[] pms = mi.GetParametersCached();
             Debug.Assert(pms.Length == conversion.Parameters.Count);
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/BlockExpression.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/BlockExpression.cs
index 80f0133..1867f3f 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/BlockExpression.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/BlockExpression.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/CatchBlock.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/CatchBlock.cs
index e6ea7ed..6993ba5 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/CatchBlock.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/CatchBlock.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/ConditionalExpression.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/ConditionalExpression.cs
index f49a6b8..8f49f0f 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/ConditionalExpression.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/ConditionalExpression.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/ConstantExpression.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/ConstantExpression.cs
index 73c5b8a..e338aa7 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/ConstantExpression.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/ConstantExpression.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/DebugInfoExpression.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/DebugInfoExpression.cs
index d12dfa0..9f3c3ff 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/DebugInfoExpression.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/DebugInfoExpression.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/DebugViewWriter.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/DebugViewWriter.cs
index c512ad4..9ad865f 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/DebugViewWriter.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/DebugViewWriter.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
@@ -229,12 +229,7 @@ namespace System.Linq.Expressions {
             GetMemberBinder getMember;
             SetMemberBinder setMember;
             DeleteMemberBinder deleteMember;
-            GetIndexBinder getIndex;
-            SetIndexBinder setIndex;
-            DeleteIndexBinder deleteIndex;
             InvokeMemberBinder call;
-            InvokeBinder invoke;
-            CreateInstanceBinder create;
             UnaryOperationBinder unary;
             BinaryOperationBinder binary;
 
@@ -246,17 +241,17 @@ namespace System.Linq.Expressions {
                 return "SetMember " + setMember.Name;
             } else if ((deleteMember = binder as DeleteMemberBinder) != null) {
                 return "DeleteMember " + deleteMember.Name;
-            } else if ((getIndex = binder as GetIndexBinder) != null) {
+            } else if (binder is GetIndexBinder) {
                 return "GetIndex";
-            } else if ((setIndex = binder as SetIndexBinder) != null) {
+            } else if (binder is SetIndexBinder) {
                 return "SetIndex";
-            } else if ((deleteIndex = binder as DeleteIndexBinder) != null) {
+            } else if (binder is DeleteIndexBinder) {
                 return "DeleteIndex";
             } else if ((call = binder as InvokeMemberBinder) != null) {
                 return "Call " + call.Name;
-            } else if ((invoke = binder as InvokeBinder) != null) {
+            } else if (binder is InvokeBinder) {
                 return "Invoke";
-            } else if ((create = binder as CreateInstanceBinder) != null) {
+            } else if (binder is CreateInstanceBinder) {
                 return "Create";
             } else if ((unary = binder as UnaryOperationBinder) != null) {
                 return "UnaryOperation " + unary.Operation;
@@ -866,8 +861,6 @@ namespace System.Linq.Expressions {
 
         [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
         protected internal override Expression VisitUnary(UnaryExpression node) {
-            bool parenthesize = NeedsParentheses(node, node.Operand);
-
             switch (node.NodeType) {
                 case ExpressionType.Convert:
                     Out("(" + node.Type.ToString() + ")");
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/DefaultExpression.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/DefaultExpression.cs
index dad191f..2355f3b 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/DefaultExpression.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/DefaultExpression.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/DynamicExpression.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/DynamicExpression.cs
index 2584811..4358c75 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/DynamicExpression.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/DynamicExpression.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
@@ -454,7 +454,7 @@ namespace System.Linq.Expressions {
         public static DynamicExpression MakeDynamic(Type delegateType, CallSiteBinder binder, IEnumerable<Expression> arguments) {
             ContractUtils.RequiresNotNull(delegateType, "delegateType");
             ContractUtils.RequiresNotNull(binder, "binder");
-            if (!delegateType.IsSubclassOf(typeof(Delegate))) throw Error.TypeMustBeDerivedFromSystemDelegate();
+            if (!delegateType.IsSubclassOf(typeof(MulticastDelegate))) throw Error.TypeMustBeDerivedFromSystemDelegate();
 
             var method = GetValidMethodForDynamic(delegateType);
 
@@ -478,9 +478,9 @@ namespace System.Linq.Expressions {
         /// <see cref="DynamicExpression.Arguments">Arguments</see> set to the specified values.
         /// </returns>
         public static DynamicExpression MakeDynamic(Type delegateType, CallSiteBinder binder, Expression arg0) {
-            ContractUtils.RequiresNotNull(delegateType, "delegatType");
+            ContractUtils.RequiresNotNull(delegateType, "delegateType");
             ContractUtils.RequiresNotNull(binder, "binder");
-            if (!delegateType.IsSubclassOf(typeof(Delegate))) throw Error.TypeMustBeDerivedFromSystemDelegate();
+            if (!delegateType.IsSubclassOf(typeof(MulticastDelegate))) throw Error.TypeMustBeDerivedFromSystemDelegate();
 
             var method = GetValidMethodForDynamic(delegateType);
             var parameters = method.GetParametersCached();
@@ -507,9 +507,9 @@ namespace System.Linq.Expressions {
         /// <see cref="DynamicExpression.Arguments">Arguments</see> set to the specified values.
         /// </returns>
         public static DynamicExpression MakeDynamic(Type delegateType, CallSiteBinder binder, Expression arg0, Expression arg1) {
-            ContractUtils.RequiresNotNull(delegateType, "delegatType");
+            ContractUtils.RequiresNotNull(delegateType, "delegateType");
             ContractUtils.RequiresNotNull(binder, "binder");
-            if (!delegateType.IsSubclassOf(typeof(Delegate))) throw Error.TypeMustBeDerivedFromSystemDelegate();
+            if (!delegateType.IsSubclassOf(typeof(MulticastDelegate))) throw Error.TypeMustBeDerivedFromSystemDelegate();
 
             var method = GetValidMethodForDynamic(delegateType);
             var parameters = method.GetParametersCached();
@@ -539,9 +539,9 @@ namespace System.Linq.Expressions {
         /// <see cref="DynamicExpression.Arguments">Arguments</see> set to the specified values.
         /// </returns>
         public static DynamicExpression MakeDynamic(Type delegateType, CallSiteBinder binder, Expression arg0, Expression arg1, Expression arg2) {
-            ContractUtils.RequiresNotNull(delegateType, "delegatType");
+            ContractUtils.RequiresNotNull(delegateType, "delegateType");
             ContractUtils.RequiresNotNull(binder, "binder");
-            if (!delegateType.IsSubclassOf(typeof(Delegate))) throw Error.TypeMustBeDerivedFromSystemDelegate();
+            if (!delegateType.IsSubclassOf(typeof(MulticastDelegate))) throw Error.TypeMustBeDerivedFromSystemDelegate();
 
             var method = GetValidMethodForDynamic(delegateType);
             var parameters = method.GetParametersCached();
@@ -574,9 +574,9 @@ namespace System.Linq.Expressions {
         /// <see cref="DynamicExpression.Arguments">Arguments</see> set to the specified values.
         /// </returns>
         public static DynamicExpression MakeDynamic(Type delegateType, CallSiteBinder binder, Expression arg0, Expression arg1, Expression arg2, Expression arg3) {
-            ContractUtils.RequiresNotNull(delegateType, "delegatType");
+            ContractUtils.RequiresNotNull(delegateType, "delegateType");
             ContractUtils.RequiresNotNull(binder, "binder");
-            if (!delegateType.IsSubclassOf(typeof(Delegate))) throw Error.TypeMustBeDerivedFromSystemDelegate();
+            if (!delegateType.IsSubclassOf(typeof(MulticastDelegate))) throw Error.TypeMustBeDerivedFromSystemDelegate();
 
             var method = GetValidMethodForDynamic(delegateType);
             var parameters = method.GetParametersCached();
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/ElementInit.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/ElementInit.cs
index 858fdf6..d4e376e 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/ElementInit.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/ElementInit.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/Expression.DebuggerProxy.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/Expression.DebuggerProxy.cs
index 4295fb7..81bfaaa 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/Expression.DebuggerProxy.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/Expression.DebuggerProxy.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/Expression.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/Expression.cs
index 2c1b1ef..b2ef4fc 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/Expression.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/Expression.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
@@ -326,6 +326,16 @@ namespace System.Linq.Expressions {
             return ((ReadOnlyCollection<T>)collectionOrT)[0];
         }
 
+#if SILVERLIGHT
+#if !CLR2
+        // Quirks mode for Expression Trees as they existed in Silverlight 2 and 3
+        internal readonly static bool SilverlightQuirks =
+            AppDomain.CurrentDomain.IsCompatibilitySwitchSet("APP_EARLIER_THAN_SL4.0").GetValueOrDefault();
+#else
+        internal readonly static bool SilverlightQuirks = true;
+#endif
+#endif
+
         private static void RequiresCanRead(Expression expression, string paramName) {
             if (expression == null) {
                 throw new ArgumentNullException(paramName);
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/ExpressionStringBuilder.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/ExpressionStringBuilder.cs
index 0b96c2b..34f9f3b 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/ExpressionStringBuilder.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/ExpressionStringBuilder.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
@@ -162,12 +162,7 @@ namespace System.Linq.Expressions {
             GetMemberBinder getMember;
             SetMemberBinder setMember;
             DeleteMemberBinder deleteMember;
-            GetIndexBinder getIndex;
-            SetIndexBinder setIndex;
-            DeleteIndexBinder deleteIndex;
             InvokeMemberBinder call;
-            InvokeBinder invoke;
-            CreateInstanceBinder create;
             UnaryOperationBinder unary;
             BinaryOperationBinder binary;
 
@@ -179,17 +174,17 @@ namespace System.Linq.Expressions {
                 return "SetMember " + setMember.Name;
             } else if ((deleteMember = binder as DeleteMemberBinder) != null) {
                 return "DeleteMember " + deleteMember.Name;
-            } else if ((getIndex = binder as GetIndexBinder) != null) {
+            } else if (binder is GetIndexBinder) {
                 return "GetIndex";
-            } else if ((setIndex = binder as SetIndexBinder) != null) {
+            } else if (binder is SetIndexBinder) {
                 return "SetIndex";
-            } else if ((deleteIndex = binder as DeleteIndexBinder) != null) {
+            } else if (binder is DeleteIndexBinder) {
                 return "DeleteIndex";
             } else if ((call = binder as InvokeMemberBinder) != null) {
                 return "Call " + call.Name;
-            } else if ((invoke = binder as InvokeBinder) != null) {
+            } else if (binder is InvokeBinder) {
                 return "Invoke";
-            } else if ((create = binder as CreateInstanceBinder) != null) {
+            } else if (binder is CreateInstanceBinder) {
                 return "Create";
             } else if ((unary = binder as UnaryOperationBinder) != null) {
                 return unary.Operation.ToString();
@@ -201,6 +196,10 @@ namespace System.Linq.Expressions {
         }
 
         private void VisitExpressions<T>(char open, IList<T> expressions, char close) where T : Expression {
+            VisitExpressions(open, expressions, close, ", ");
+        }
+
+        private void VisitExpressions<T>(char open, IList<T> expressions, char close, string seperator) where T : Expression {
             Out(open);
             if (expressions != null) {
                 bool isFirst = true;
@@ -208,7 +207,7 @@ namespace System.Linq.Expressions {
                     if (isFirst) {
                         isFirst = false;
                     } else {
-                        Out(", ");
+                        Out(seperator);
                     }
                     Visit(e);
                 }
@@ -232,11 +231,30 @@ namespace System.Linq.Expressions {
             } else {
                 string op;
                 switch (node.NodeType) {
+                    // AndAlso and OrElse were unintentionally changed in
+                    // CLR 4. We changed them to "AndAlso" and "OrElse" to
+                    // be 3.5 compatible, but it turns out 3.5 shipped with
+                    // "&&" and "||". Oops.
+                    case ExpressionType.AndAlso:
+                        op = "AndAlso";
+#if SILVERLIGHT
+                        if (Expression.SilverlightQuirks) op = "&&";
+#endif
+                        break;
+                    case ExpressionType.OrElse:
+                        op = "OrElse";
+#if SILVERLIGHT
+                        if (Expression.SilverlightQuirks) op = "||";
+#endif
+                        break;
                     case ExpressionType.Assign: op = "="; break;
-                    case ExpressionType.Equal: op = "=="; break;
+                    case ExpressionType.Equal:
+						op = "==";
+#if SILVERLIGHT
+                        if (Expression.SilverlightQuirks) op = "=";
+#endif
+						break;
                     case ExpressionType.NotEqual: op = "!="; break;
-                    case ExpressionType.AndAlso: op = "AndAlso"; break;
-                    case ExpressionType.OrElse: op = "OrElse"; break;
                     case ExpressionType.GreaterThan: op = ">"; break;
                     case ExpressionType.LessThan: op = "<"; break;
                     case ExpressionType.GreaterThanOrEqual: op = ">="; break;
@@ -311,11 +329,17 @@ namespace System.Linq.Expressions {
             if (node.IsByRef) {
                 Out("ref ");
             }
-            if (String.IsNullOrEmpty(node.Name)) {
-                int id = GetParamId(node);
-                Out("Param_" + id);
+            string name = node.Name;
+            if (String.IsNullOrEmpty(name)) {
+#if SILVERLIGHT
+                if (Expression.SilverlightQuirks) {
+                    Out(name ?? "<param>");
+                    return node;
+                }
+#endif
+                Out("Param_" + GetParamId(node));
             } else {
-                Out(node.Name);
+                Out(name);
             }
             return node;
         }
@@ -467,15 +491,23 @@ namespace System.Linq.Expressions {
 
         protected override ElementInit VisitElementInit(ElementInit initializer) {
             Out(initializer.AddMethod.ToString());
-            VisitExpressions('(', initializer.Arguments, ')');
+            string sep = ", ";
+#if SILVERLIGHT
+            if (Expression.SilverlightQuirks) sep = ",";
+#endif
+            VisitExpressions('(', initializer.Arguments, ')', sep);
             return initializer;
         }
 
         protected internal override Expression VisitInvocation(InvocationExpression node) {
             Out("Invoke(");
             Visit(node.Expression);
+            string sep = ", ";
+#if SILVERLIGHT
+            if (Expression.SilverlightQuirks) sep = ",";
+#endif
             for (int i = 0, n = node.Arguments.Count; i < n; i++) {
-                Out(", ");
+                Out(sep);
                 Visit(node.Arguments[i]);
             }
             Out(")");
@@ -522,15 +554,46 @@ namespace System.Linq.Expressions {
             return node;
         }
 
+#if SILVERLIGHT
+        private static PropertyInfo GetPropertyNoThrow(MethodInfo method) {
+            if (method == null)
+                return null;
+            Type type = method.DeclaringType;
+            BindingFlags flags = BindingFlags.Public | BindingFlags.NonPublic;
+            flags |= (method.IsStatic) ? BindingFlags.Static : BindingFlags.Instance;
+            PropertyInfo[] props = type.GetProperties(flags);
+            foreach (PropertyInfo pi in props) {
+                if (pi.CanRead && method == pi.GetGetMethod(true)) {
+                    return pi;
+                }
+                if (pi.CanWrite && method == pi.GetSetMethod(true)) {
+                    return pi;
+                }
+            }
+            return null;
+        }
+#endif
+
         protected internal override Expression VisitNew(NewExpression node) {
             Out("new " + node.Type.Name);
             Out("(");
+            var members = node.Members;
             for (int i = 0; i < node.Arguments.Count; i++) {
                 if (i > 0) {
                     Out(", ");
                 }
-                if (node.Members != null) {
-                    Out(node.Members[i].Name);
+                if (members != null) {
+                    string name = members[i].Name;                    
+#if SILVERLIGHT
+                    // Members can be the get/set methods rather than the fields/properties
+                    PropertyInfo pi = null;
+                    if (Expression.SilverlightQuirks &&
+                        members[i].MemberType == MemberTypes.Method &&
+                        (pi = GetPropertyNoThrow((MethodInfo)members[i])) != null) {
+                        name = pi.Name;
+                    }
+#endif
+                    Out(name);
                     Out(" = ");
                 }
                 Visit(node.Arguments[i]);
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/ExpressionType.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/ExpressionType.cs
index 297d4d8..11fbb1d 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/ExpressionType.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/ExpressionType.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/ExpressionVisitor.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/ExpressionVisitor.cs
index 04c0bf9..179152b 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/ExpressionVisitor.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/ExpressionVisitor.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/GotoExpression.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/GotoExpression.cs
index a3434bb..0bd9827 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/GotoExpression.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/GotoExpression.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
@@ -366,11 +366,9 @@ namespace System.Linq.Expressions {
             if (expectedType != typeof(void)) {
                 if (!TypeUtils.AreReferenceAssignable(expectedType, value.Type)) {
                     // C# autoquotes return values, so we'll do that here
-                    if (TypeUtils.IsSameOrSubclass(typeof(LambdaExpression), expectedType) &&
-                        expectedType.IsAssignableFrom(value.GetType())) {
-                        value = Expression.Quote(value);
+                    if (!TryQuote(expectedType, ref value)) {
+                        throw Error.ExpressionTypeDoesNotMatchLabel(value.Type, expectedType);
                     }
-                    throw Error.ExpressionTypeDoesNotMatchLabel(value.Type, expectedType);
                 }
             }
         }
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/IArgumentProvider.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/IArgumentProvider.cs
index cce7fa7..6dc58ea 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/IArgumentProvider.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/IArgumentProvider.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/IndexExpression.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/IndexExpression.cs
index 61296c0..1bbf207 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/IndexExpression.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/IndexExpression.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
@@ -429,9 +429,7 @@ namespace System.Linq.Expressions {
                     TypeUtils.ValidateType(pType);
 
                     if (!TypeUtils.AreReferenceAssignable(pType, arg.Type)) {
-                        if (TypeUtils.IsSameOrSubclass(typeof(LambdaExpression), pType) && pType.IsAssignableFrom(arg.GetType())) {
-                            arg = Expression.Quote(arg);
-                        } else {
+                        if (!TryQuote(pType, ref arg)) {
                             throw Error.ExpressionTypeDoesNotMatchMethodParameter(arg.Type, pType, method);
                         }
                     }
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/InvocationExpression.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/InvocationExpression.cs
index 5f68eae..05501f4 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/InvocationExpression.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/InvocationExpression.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
@@ -191,9 +191,7 @@ namespace System.Linq.Expressions {
         /// <param name="expression">The expression to be invoked.</param>
         internal static MethodInfo GetInvokeMethod(Expression expression) {
             Type delegateType = expression.Type;
-            if (delegateType == typeof(Delegate)) {
-                throw Error.ExpressionTypeNotInvocable(delegateType);
-            } else if (!typeof(Delegate).IsAssignableFrom(expression.Type)) {
+            if (!expression.Type.IsSubclassOf(typeof(MulticastDelegate))) {
                 Type exprType = TypeUtils.FindGenericType(typeof(Expression<>), expression.Type);
                 if (exprType == null) {
                     throw Error.ExpressionTypeNotInvocable(expression.Type);
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/LabelExpression.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/LabelExpression.cs
index 5d684cf..86fc3df 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/LabelExpression.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/LabelExpression.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/LabelTarget.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/LabelTarget.cs
index acc3d01..b9c8149 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/LabelTarget.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/LabelTarget.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/LambdaExpression.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/LambdaExpression.cs
index 0ea6956..7a53dd0 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/LambdaExpression.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/LambdaExpression.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
@@ -508,7 +508,7 @@ namespace System.Linq.Expressions {
             ContractUtils.RequiresNotNull(delegateType, "delegateType");
             RequiresCanRead(body, "body");
 
-            if (!typeof(Delegate).IsAssignableFrom(delegateType) || delegateType == typeof(Delegate)) {
+            if (!typeof(MulticastDelegate).IsAssignableFrom(delegateType) || delegateType == typeof(MulticastDelegate)) {
                 throw Error.LambdaTypeMustBeDerivedFromSystemDelegate();
             }
 
@@ -553,9 +553,7 @@ namespace System.Linq.Expressions {
                 throw Error.IncorrectNumberOfLambdaDeclarationParameters();
             }
             if (mi.ReturnType != typeof(void) && !TypeUtils.AreReferenceAssignable(mi.ReturnType, body.Type)) {
-                if (TypeUtils.IsSameOrSubclass(typeof(LambdaExpression), mi.ReturnType) && mi.ReturnType.IsAssignableFrom(body.GetType())) {
-                    body = Expression.Quote(body);
-                } else {
+                if (!TryQuote(mi.ReturnType, ref body)) {
                     throw Error.ExpressionTypeDoesNotMatchReturn(body.Type, mi.ReturnType);
                 }
             }
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/ListArgumentProvider.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/ListArgumentProvider.cs
index ddd1a4c..5d2292b 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/ListArgumentProvider.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/ListArgumentProvider.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/ListInitExpression.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/ListInitExpression.cs
index 3f98802..71bd0f6 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/ListInitExpression.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/ListInitExpression.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/LoopExpression.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/LoopExpression.cs
index dbf082c..5c216ab 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/LoopExpression.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/LoopExpression.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/MemberAssignment.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/MemberAssignment.cs
index 8baca72..d08a85c 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/MemberAssignment.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/MemberAssignment.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/MemberBinding.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/MemberBinding.cs
index 5ed186a..fdeafaf 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/MemberBinding.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/MemberBinding.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/MemberExpression.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/MemberExpression.cs
index 4042eab..e314cda 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/MemberExpression.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/MemberExpression.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/MemberInitExpression.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/MemberInitExpression.cs
index 878803e..2eb7fe3 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/MemberInitExpression.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/MemberInitExpression.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/MemberListBinding.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/MemberListBinding.cs
index 741cf24..0badf17 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/MemberListBinding.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/MemberListBinding.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/MemberMemberBinding.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/MemberMemberBinding.cs
index 1ea2ca8..9fcc431 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/MemberMemberBinding.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/MemberMemberBinding.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/MethodCallExpression.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/MethodCallExpression.cs
index 4f8972a..66b3bb0 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/MethodCallExpression.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/MethodCallExpression.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
@@ -814,6 +814,9 @@ namespace System.Linq.Expressions {
 
         private static void ValidateStaticOrInstanceMethod(Expression instance, MethodInfo method) {
             if (method.IsStatic) {
+#if SILVERLIGHT
+                if (SilverlightQuirks) return;
+#endif
                 if (instance != null) throw new ArgumentException(Strings.OnlyStaticMethodsHaveNullInstance, "instance");
             } else {
                 if (instance == null) throw new ArgumentException(Strings.OnlyStaticMethodsHaveNullInstance, "method");
@@ -890,9 +893,7 @@ namespace System.Linq.Expressions {
             }
             TypeUtils.ValidateType(pType);
             if (!TypeUtils.AreReferenceAssignable(pType, arg.Type)) {
-                if (TypeUtils.IsSameOrSubclass(typeof(LambdaExpression), pType) && pType.IsAssignableFrom(arg.GetType())) {
-                    arg = Expression.Quote(arg);
-                } else {
+                if (!TryQuote(pType, ref arg)) {
                     // Throw the right error for the node we were given
                     switch (nodeKind) {
                         case ExpressionType.New:
@@ -910,6 +911,23 @@ namespace System.Linq.Expressions {
             return arg;
         }
 
+        // Attempts to auto-quote the expression tree. Returns true if it succeeded, false otherwise.
+        private static bool TryQuote(Type parameterType, ref Expression argument) {
+            // We used to allow quoting of any expression, but the behavior of
+            // quote (produce a new tree closed over parameter values), only
+            // works consistently for lambdas
+            Type quoteable = typeof(LambdaExpression);
+#if SILVERLIGHT
+            if (SilverlightQuirks) quoteable = typeof(Expression);
+#endif
+            if (TypeUtils.IsSameOrSubclass(quoteable, parameterType) &&
+                parameterType.IsAssignableFrom(argument.GetType())) {
+                argument = Expression.Quote(argument);
+                return true;
+            }
+            return false;
+        }
+
         private static MethodInfo FindMethod(Type type, string methodName, Type[] typeArgs, Expression[] args, BindingFlags flags) {
             MemberInfo[] members = type.FindMembers(MemberTypes.Method, flags, Type.FilterNameIgnoreCase, methodName);
             if (members == null || members.Length == 0)
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/NewArrayExpression.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/NewArrayExpression.cs
index 9f18554..e51b6f2 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/NewArrayExpression.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/NewArrayExpression.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
@@ -158,9 +158,7 @@ namespace System.Linq.Expressions {
                 RequiresCanRead(expr, "initializers");
 
                 if (!TypeUtils.AreReferenceAssignable(type, expr.Type)) {
-                    if (TypeUtils.IsSameOrSubclass(typeof(LambdaExpression), type) && type.IsAssignableFrom(expr.GetType())) {
-                        expr = Expression.Quote(expr);
-                    } else {
+                    if (!TryQuote(type, ref expr)){
                         throw Error.ExpressionTypeCannotInitializeArrayType(expr.Type, type);
                     }
                     if (newList == null) {
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/NewExpression.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/NewExpression.cs
index edfc486..0b3381e 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/NewExpression.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/NewExpression.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
@@ -247,9 +247,7 @@ namespace System.Linq.Expressions {
                     Type memberType;
                     ValidateAnonymousTypeMember(ref member, out memberType);
                     if (!TypeUtils.AreReferenceAssignable(memberType, arg.Type)) {
-                        if (TypeUtils.IsSameOrSubclass(typeof(LambdaExpression), memberType) && memberType.IsAssignableFrom(arg.GetType())) {
-                            arg = Expression.Quote(arg);
-                        } else {
+                        if (!TryQuote(memberType, ref arg)) {
                             throw Error.ArgumentTypeDoesNotMatchMember(arg.Type, memberType);
                         }
                     }
@@ -259,9 +257,7 @@ namespace System.Linq.Expressions {
                         pType = pType.GetElementType();
                     }
                     if (!TypeUtils.AreReferenceAssignable(pType, arg.Type)) {
-                        if (TypeUtils.IsSameOrSubclass(typeof(LambdaExpression), pType) && pType.IsAssignableFrom(arg.Type)) {
-                            arg = Expression.Quote(arg);
-                        } else {
+                        if (!TryQuote(pType, ref arg)) {
                             throw Error.ExpressionTypeDoesNotMatchConstructorParameter(arg.Type, pType);
                         }
                     }
@@ -307,7 +303,7 @@ namespace System.Linq.Expressions {
                         throw Error.ArgumentMustBeInstanceMember();
                     }
                     memberType = field.FieldType;
-                    break;
+                    return;
                 case MemberTypes.Property:
                     PropertyInfo pi = member as PropertyInfo;
                     if (!pi.CanRead) {
@@ -317,20 +313,27 @@ namespace System.Linq.Expressions {
                         throw Error.ArgumentMustBeInstanceMember();
                     }
                     memberType = pi.PropertyType;
-                    break;
+                    return;
                 case MemberTypes.Method:
                     MethodInfo method = member as MethodInfo;
                     if (method.IsStatic) {
                         throw Error.ArgumentMustBeInstanceMember();
                     }
-
+#if SILVERLIGHT
+                    if (SilverlightQuirks) {
+                        // we used to just store the MethodInfo
+                        memberType = method.ReturnType;
+                        return;
+                    }
+#endif
                     PropertyInfo prop = GetProperty(method);
                     member = prop;
                     memberType = prop.PropertyType;
-                    break;
+                    return;
                 default:
                     throw Error.ArgumentMustBeFieldInfoOrPropertInfoOrMethod();
             }
+            // don't add code here, we've already returned
         }
     }
 }
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/ParameterExpression.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/ParameterExpression.cs
index aa55846..df225f1 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/ParameterExpression.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/ParameterExpression.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/RuntimeVariablesExpression.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/RuntimeVariablesExpression.cs
index 6f3e87d..5d7e53e 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/RuntimeVariablesExpression.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/RuntimeVariablesExpression.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/SwitchCase.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/SwitchCase.cs
index 78a5949..2316a65 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/SwitchCase.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/SwitchCase.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/SwitchExpression.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/SwitchExpression.cs
index 5fcb902..cff4322 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/SwitchExpression.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/SwitchExpression.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/SymbolDocumentInfo.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/SymbolDocumentInfo.cs
index bfe2650..1b20baf 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/SymbolDocumentInfo.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/SymbolDocumentInfo.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/TryExpression.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/TryExpression.cs
index 39a0f65..0959ac7 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/TryExpression.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/TryExpression.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/TypeBinaryExpression.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/TypeBinaryExpression.cs
index 28be5aa..ef5ba7d 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/TypeBinaryExpression.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/TypeBinaryExpression.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/TypeUtils.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/TypeUtils.cs
index f582eab..10b5185 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/TypeUtils.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/TypeUtils.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
@@ -280,7 +280,7 @@ namespace System.Dynamic.Utils {
         private static bool IsDelegate(Type t)
         {
             Debug.Assert(t != null);
-            return t.IsSubclassOf(typeof(System.Delegate));
+            return t.IsSubclassOf(typeof(System.MulticastDelegate));
         }
 
         internal static bool IsLegalExplicitVariantDelegateConversion(Type source, Type dest)
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/UnaryExpression.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/UnaryExpression.cs
index 87fdd41..b71b138 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/UnaryExpression.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/UnaryExpression.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
@@ -787,7 +787,11 @@ namespace System.Linq.Expressions {
         ///<paramref name="expression" /> is null.</exception>
         public static UnaryExpression Quote(Expression expression) {
             RequiresCanRead(expression, "expression");
-            if (!(expression is LambdaExpression)) throw Error.QuotedExpressionMustBeLambda();
+            bool validQuote = expression is LambdaExpression;
+#if SILVERLIGHT
+            validQuote |= SilverlightQuirks;
+#endif
+            if (!validQuote) throw Error.QuotedExpressionMustBeLambda();
             return new UnaryExpression(ExpressionType.Quote, expression, expression.GetType(), null);
         }
 
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/AnalyzedTree.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/AnalyzedTree.cs
index 99ac850..3b8c6c2 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/AnalyzedTree.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/AnalyzedTree.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/AssemblyGen.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/AssemblyGen.cs
index 5a05cb8..b908bcf 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/AssemblyGen.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/AssemblyGen.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/BoundConstants.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/BoundConstants.cs
index 68ca162..5afdbd3 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/BoundConstants.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/BoundConstants.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/Closure.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/Closure.cs
index e18aefd..0adc860 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/Closure.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/Closure.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/CompilerScope.Storage.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/CompilerScope.Storage.cs
index 5e1cf18..e736ac6 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/CompilerScope.Storage.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/CompilerScope.Storage.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/CompilerScope.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/CompilerScope.cs
index ac85f64..ab3d884 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/CompilerScope.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/CompilerScope.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
@@ -321,8 +321,14 @@ namespace System.Linq.Expressions.Compiler {
                     ResolveVariable(v, _closureHoistedLocals).EmitLoad();
                     lc.IL.Emit(OpCodes.Newobj, boxType.GetConstructor(new Type[] { v.Type }));
                 } else {
+#if CLR2
+                    // array[i] = new StrongBox<T>(default(T));
+                    lc.IL.EmitDefault(v.Type);
+                    lc.IL.Emit(OpCodes.Newobj, boxType.GetConstructor(new Type[] { v.Type }));
+#else
                     // array[i] = new StrongBox<T>();
                     lc.IL.Emit(OpCodes.Newobj, boxType.GetConstructor(Type.EmptyTypes));
+#endif
                 }
                 // if we want to cache this into a local, do it now
                 if (ShouldCache(v)) {
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/ConstantCheck.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/ConstantCheck.cs
index d632c72..b901792 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/ConstantCheck.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/ConstantCheck.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/DebugInfoGenerator.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/DebugInfoGenerator.cs
index 9516f3a..c20cde6 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/DebugInfoGenerator.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/DebugInfoGenerator.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/DelegateHelpers.Generated.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/DelegateHelpers.Generated.cs
index b937e2f..fe31937 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/DelegateHelpers.Generated.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/DelegateHelpers.Generated.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/DelegateHelpers.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/DelegateHelpers.cs
index b4f84a4..47079f8 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/DelegateHelpers.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/DelegateHelpers.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/ExpressionQuoter.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/ExpressionQuoter.cs
index f7e8b7b..059308b 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/ExpressionQuoter.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/ExpressionQuoter.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/HoistedLocals.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/HoistedLocals.cs
index 37d8d1e..8c315ff 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/HoistedLocals.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/HoistedLocals.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/ILGen.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/ILGen.cs
index 348b8d1..c08076e 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/ILGen.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/ILGen.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
@@ -612,6 +612,8 @@ namespace System.Linq.Expressions.Compiler {
                typeTo.IsInterface ||
                typeFrom == typeof(object) || // boxing cast
                typeTo == typeof(object) ||
+               typeFrom == typeof(System.Enum) ||
+               typeFrom == typeof(System.ValueType) ||
                TypeUtils.IsLegalExplicitVariantDelegateConversion(typeFrom, typeTo))
             {
                 il.EmitCastToType(typeFrom, typeTo);
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/KeyedQueue.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/KeyedQueue.cs
index 86191f2..fdd6e2f 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/KeyedQueue.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/KeyedQueue.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/LabelInfo.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/LabelInfo.cs
index 261b1c9..435f066 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/LabelInfo.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/LabelInfo.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/LambdaCompiler.Address.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/LambdaCompiler.Address.cs
index 9eea1b9..cb208f2 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/LambdaCompiler.Address.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/LambdaCompiler.Address.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/LambdaCompiler.Binary.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/LambdaCompiler.Binary.cs
index 2d5d51f..6e4ac1f 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/LambdaCompiler.Binary.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/LambdaCompiler.Binary.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/LambdaCompiler.ControlFlow.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/LambdaCompiler.ControlFlow.cs
index 1fc97c8..0501f9d 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/LambdaCompiler.ControlFlow.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/LambdaCompiler.ControlFlow.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/LambdaCompiler.Expressions.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/LambdaCompiler.Expressions.cs
index 0321807..beb4125 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/LambdaCompiler.Expressions.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/LambdaCompiler.Expressions.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/LambdaCompiler.Generated.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/LambdaCompiler.Generated.cs
index 62f5877..405eb6d 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/LambdaCompiler.Generated.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/LambdaCompiler.Generated.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/LambdaCompiler.Lambda.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/LambdaCompiler.Lambda.cs
index 2804201..a2e5807 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/LambdaCompiler.Lambda.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/LambdaCompiler.Lambda.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/LambdaCompiler.Logical.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/LambdaCompiler.Logical.cs
index 0943646..5c846fb 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/LambdaCompiler.Logical.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/LambdaCompiler.Logical.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
@@ -175,7 +175,6 @@ namespace System.Linq.Expressions.Compiler {
             // if not null, call conversion
             _ilg.MarkLabel(labNotNull);
             Debug.Assert(b.Conversion.Parameters.Count == 1);
-            ParameterExpression p = b.Conversion.Parameters[0];
 
             // emit the delegate instance
             EmitLambdaExpression(b.Conversion);
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/LambdaCompiler.Statements.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/LambdaCompiler.Statements.cs
index 2a4c699..4fbbe06 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/LambdaCompiler.Statements.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/LambdaCompiler.Statements.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
@@ -43,8 +43,6 @@ namespace System.Linq.Expressions.Compiler {
 
             int count = node.ExpressionCount;
             CompilationFlags tailCall = flags & CompilationFlags.EmitAsTailCallMask;
-            CompilationFlags middleTailCall = tailCall == CompilationFlags.EmitAsNoTail ? CompilationFlags.EmitAsNoTail : CompilationFlags.EmitAsMiddle;
-
             for (int index = 0; index < count - 1; index++) {
                 var e = node.GetExpression(index);
                 var next = node.GetExpression(index + 1);
@@ -57,19 +55,23 @@ namespace System.Linq.Expressions.Compiler {
                         continue;
                     }
                 }
-                // In the middle of the block.
-                // We may do better here by marking it as Tail if the following expressions are not going to emit any IL.
-                var tailCallFlag = middleTailCall;
-
-                var g = next as GotoExpression;
-                if (g != null && (g.Value == null || !Significant(g.Value))) {
-                    var labelInfo = ReferenceLabel(g.Target);
-                    if (labelInfo.CanReturn) {
+
+                CompilationFlags tailCallFlag;
+                if (tailCall != CompilationFlags.EmitAsNoTail) {
+                    var g = next as GotoExpression;
+                    if (g != null && (g.Value == null || !Significant(g.Value)) && ReferenceLabel(g.Target).CanReturn) {
                         // Since tail call flags are not passed into EmitTryExpression, CanReturn means the goto will be emitted
                         // as Ret. Therefore we can emit the current expression with tail call.
                         tailCallFlag = CompilationFlags.EmitAsTail;
+                    } else {
+                        // In the middle of the block.
+                        // We may do better here by marking it as Tail if the following expressions are not going to emit any IL.
+                        tailCallFlag = CompilationFlags.EmitAsMiddle;
                     }
+                } else {
+                    tailCallFlag = CompilationFlags.EmitAsNoTail;
                 }
+
                 flags = UpdateEmitAsTailCallFlag(flags, tailCallFlag);
                 EmitExpressionAsVoid(e, flags);
             }
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/LambdaCompiler.Unary.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/LambdaCompiler.Unary.cs
index d9f63af..1ace72b 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/LambdaCompiler.Unary.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/LambdaCompiler.Unary.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
@@ -105,10 +105,9 @@ namespace System.Linq.Expressions.Compiler {
             if (operandIsNullable) {
                 switch (op) {
                     case ExpressionType.Not: {
-                            if (operandType != typeof(bool?))
+                            if (operandType != typeof(bool?)) {
                                 goto case ExpressionType.Negate;
-
-                            Label labIfNull = _ilg.DefineLabel();
+                            }
                             Label labEnd = _ilg.DefineLabel();
                             LocalBuilder loc = GetLocal(operandType);
 
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/LambdaCompiler.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/LambdaCompiler.cs
index 6c9fb1d..4b00455 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/LambdaCompiler.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/LambdaCompiler.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
@@ -310,7 +310,7 @@ namespace System.Linq.Expressions.Compiler {
         /// </summary>
         private MemberExpression CreateLazyInitializedField<T>(string name) {
             if (_method is DynamicMethod) {
-                return Expression.Field(Expression.Constant(new StrongBox<T>()), "Value");
+                return Expression.Field(Expression.Constant(new StrongBox<T>(default(T))), "Value");
             } else {
                 return Expression.Field(null, CreateStaticField(name, typeof(T)));
             }
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/OffsetTrackingILGenerator.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/OffsetTrackingILGenerator.cs
index 3a9c21d..0630f0b 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/OffsetTrackingILGenerator.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/OffsetTrackingILGenerator.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/RuntimeVariableList.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/RuntimeVariableList.cs
index e1b1209..b69a5a4 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/RuntimeVariableList.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/RuntimeVariableList.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/Set.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/Set.cs
index 5855573..96ec6d3 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/Set.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/Set.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/StackSpiller.Bindings.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/StackSpiller.Bindings.cs
index 1a48406..95ceba8 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/StackSpiller.Bindings.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/StackSpiller.Bindings.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/StackSpiller.Generated.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/StackSpiller.Generated.cs
index 13be379..f96780d 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/StackSpiller.Generated.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/StackSpiller.Generated.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/StackSpiller.Temps.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/StackSpiller.Temps.cs
index 541f322..cee6fab 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/StackSpiller.Temps.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/StackSpiller.Temps.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/StackSpiller.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/StackSpiller.cs
index 387e392..38ba4a4 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/StackSpiller.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/StackSpiller.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/SymbolDocumentGenerator.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/SymbolDocumentGenerator.cs
index b597201..bd883fe 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/SymbolDocumentGenerator.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/SymbolDocumentGenerator.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/VariableBinder.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/VariableBinder.cs
index 74482b5..0984a04 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/VariableBinder.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Compiler/VariableBinder.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/Action.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/Action.cs
index 17d4168..9e7e53c 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/Action.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/Action.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
@@ -19,17 +19,6 @@ namespace Microsoft.Scripting.Utils {
 namespace System {
 #endif
 
-#if CLR2 || SILVERLIGHT
-
-    /// <summary>
-    /// Encapsulates a method that takes no parameters and does not return a value.
-    /// </summary>
-    public delegate void Action();
-
-#endif
-
-    // public delegate void Action<T>(T obj); -- Already defined in mscorlib
-   
     #region Generated Action Types
 
     // *** BEGIN GENERATED CODE ***
@@ -38,41 +27,6 @@ namespace System {
 #if CLR2 || SILVERLIGHT
 
     /// <summary>
-    /// Encapsulates a method that takes two parameters and does not return a value.
-    /// </summary>
-    /// <typeparam name="T1">The type of the first parameter of the method that this delegate encapsulates.</typeparam>
-    /// <typeparam name="T2">The type of the second parameter of the method that this delegate encapsulates.</typeparam>
-    /// <param name="arg1">The first parameter of the method that this delegate encapsulates.</param>
-    /// <param name="arg2">The second parameter of the method that this delegate encapsulates.</param>
-    public delegate void Action<T1, T2>(T1 arg1, T2 arg2);
-
-    /// <summary>
-    /// Encapsulates a method that takes three parameters and does not return a value.
-    /// </summary>
-    /// <typeparam name="T1">The type of the first parameter of the method that this delegate encapsulates.</typeparam>
-    /// <typeparam name="T2">The type of the second parameter of the method that this delegate encapsulates.</typeparam>
-    /// <typeparam name="T3">The type of the third parameter of the method that this delegate encapsulates.</typeparam>
-    /// <param name="arg1">The first parameter of the method that this delegate encapsulates.</param>
-    /// <param name="arg2">The second parameter of the method that this delegate encapsulates.</param>
-    /// <param name="arg3">The third parameter of the method that this delegate encapsulates.</param>
-    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1005:AvoidExcessiveParametersOnGenericTypes")]
-    public delegate void Action<T1, T2, T3>(T1 arg1, T2 arg2, T3 arg3);
-
-    /// <summary>
-    /// Encapsulates a method that takes four parameters and does not return a value.
-    /// </summary>
-    /// <typeparam name="T1">The type of the first parameter of the method that this delegate encapsulates.</typeparam>
-    /// <typeparam name="T2">The type of the second parameter of the method that this delegate encapsulates.</typeparam>
-    /// <typeparam name="T3">The type of the third parameter of the method that this delegate encapsulates.</typeparam>
-    /// <typeparam name="T4">The type of the fourth parameter of the method that this delegate encapsulates.</typeparam>
-    /// <param name="arg1">The first parameter of the method that this delegate encapsulates.</param>
-    /// <param name="arg2">The second parameter of the method that this delegate encapsulates.</param>
-    /// <param name="arg3">The third parameter of the method that this delegate encapsulates.</param>
-    /// <param name="arg4">The fourth parameter of the method that this delegate encapsulates.</param>
-    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1005:AvoidExcessiveParametersOnGenericTypes")]
-    public delegate void Action<T1, T2, T3, T4>(T1 arg1, T2 arg2, T3 arg3, T4 arg4);
-
-    /// <summary>
     /// Encapsulates a method that takes five parameters and does not return a value.
     /// </summary>
     /// <typeparam name="T1">The type of the first parameter of the method that this delegate encapsulates.</typeparam>
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/CacheDict.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/CacheDict.cs
index defacc1..1b94d70 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/CacheDict.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/CacheDict.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/CollectionExtensions.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/CollectionExtensions.cs
index 0eebded..fd7ac36 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/CollectionExtensions.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/CollectionExtensions.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
@@ -15,8 +15,10 @@
 
 #if CLR2
 using Microsoft.Scripting.Utils;
+using Microsoft.Scripting.Ast;
 #else
 using System.Diagnostics.Contracts;
+using System.Linq.Expressions;
 #endif
 
 using System.Collections.Generic;
@@ -41,6 +43,17 @@ namespace System.Dynamic.Utils {
                 return EmptyReadOnlyCollection<T>.Instance;
             }
 
+#if SILVERLIGHT
+            if (Expression.SilverlightQuirks) {
+                // Allow any ReadOnlyCollection to be stored directly
+                // (even though this is not safe)
+                var r = enumerable as ReadOnlyCollection<T>;
+                if (r != null) {
+                    return r;
+                }
+            }
+#endif
+
             var troc = enumerable as TrueReadOnlyCollection<T>;
             if (troc != null) {
                 return troc;
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/ContractUtils.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/ContractUtils.cs
index 652ef4a..d8cc36b 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/ContractUtils.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/ContractUtils.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/ExceptionFactory.Generated.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/ExceptionFactory.Generated.cs
index 1a1054b..08454fa 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/ExceptionFactory.Generated.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/ExceptionFactory.Generated.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/Function.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/Function.cs
index 62b6fbb..143e6b3 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/Function.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/Function.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
@@ -19,26 +19,6 @@ namespace Microsoft.Scripting.Utils {
 namespace System {
 #endif
 
-#if CLR2 || SILVERLIGHT
-
-    /// <summary>
-    /// Encapsulates a method that has no parameters and returns a value of the type specified by the TResult parameter.
-    /// </summary>
-    /// <typeparam name="TResult">The type of the return value of the method that this delegate encapsulates.</typeparam>
-    /// <returns>The return value of the method that this delegate encapsulates.</returns>
-    public delegate TResult Func<TResult>();
-
-    /// <summary>
-    /// Encapsulates a method that has one parameter and returns a value of the type specified by the TResult parameter.
-    /// </summary>
-    /// <typeparam name="T">The type of the first parameter of the method that this delegate encapsulates.</typeparam>
-    /// <typeparam name="TResult">The type of the return value of the method that this delegate encapsulates.</typeparam>
-    /// <param name="arg">The first parameter of the method that this delegate encapsulates.</param>
-    /// <returns>The return value of the method that this delegate encapsulates.</returns>
-    public delegate TResult Func<T, TResult>(T arg);
-
-#endif
-
     #region Generated Func Types
 
     // *** BEGIN GENERATED CODE ***
@@ -47,48 +27,6 @@ namespace System {
 #if CLR2 || SILVERLIGHT
 
     /// <summary>
-    /// Encapsulates a method that has two parameters and returns a value of the type specified by the TResult parameter.
-    /// </summary>
-    /// <typeparam name="T1">The type of the first parameter of the method that this delegate encapsulates.</typeparam>
-    /// <typeparam name="T2">The type of the second parameter of the method that this delegate encapsulates.</typeparam>
-    /// <typeparam name="TResult">The type of the return value of the method that this delegate encapsulates.</typeparam>
-    /// <param name="arg1">The first parameter of the method that this delegate encapsulates.</param>
-    /// <param name="arg2">The second parameter of the method that this delegate encapsulates.</param>
-    /// <returns>The return value of the method that this delegate encapsulates.</returns>
-    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1005:AvoidExcessiveParametersOnGenericTypes")]
-    public delegate TResult Func<T1, T2, TResult>(T1 arg1, T2 arg2);
-
-    /// <summary>
-    /// Encapsulates a method that has three parameters and returns a value of the type specified by the TResult parameter.
-    /// </summary>
-    /// <typeparam name="T1">The type of the first parameter of the method that this delegate encapsulates.</typeparam>
-    /// <typeparam name="T2">The type of the second parameter of the method that this delegate encapsulates.</typeparam>
-    /// <typeparam name="T3">The type of the third parameter of the method that this delegate encapsulates.</typeparam>
-    /// <typeparam name="TResult">The type of the return value of the method that this delegate encapsulates.</typeparam>
-    /// <param name="arg1">The first parameter of the method that this delegate encapsulates.</param>
-    /// <param name="arg2">The second parameter of the method that this delegate encapsulates.</param>
-    /// <param name="arg3">The third parameter of the method that this delegate encapsulates.</param>
-    /// <returns>The return value of the method that this delegate encapsulates.</returns>
-    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1005:AvoidExcessiveParametersOnGenericTypes")]
-    public delegate TResult Func<T1, T2, T3, TResult>(T1 arg1, T2 arg2, T3 arg3);
-
-    /// <summary>
-    /// Encapsulates a method that has four parameters and returns a value of the type specified by the TResult parameter.
-    /// </summary>
-    /// <typeparam name="T1">The type of the first parameter of the method that this delegate encapsulates.</typeparam>
-    /// <typeparam name="T2">The type of the second parameter of the method that this delegate encapsulates.</typeparam>
-    /// <typeparam name="T3">The type of the third parameter of the method that this delegate encapsulates.</typeparam>
-    /// <typeparam name="T4">The type of the fourth parameter of the method that this delegate encapsulates.</typeparam>
-    /// <typeparam name="TResult">The type of the return value of the method that this delegate encapsulates.</typeparam>
-    /// <param name="arg1">The first parameter of the method that this delegate encapsulates.</param>
-    /// <param name="arg2">The second parameter of the method that this delegate encapsulates.</param>
-    /// <param name="arg3">The third parameter of the method that this delegate encapsulates.</param>
-    /// <param name="arg4">The fourth parameter of the method that this delegate encapsulates.</param>
-    /// <returns>The return value of the method that this delegate encapsulates.</returns>
-    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1005:AvoidExcessiveParametersOnGenericTypes")]
-    public delegate TResult Func<T1, T2, T3, T4, TResult>(T1 arg1, T2 arg2, T3 arg3, T4 arg4);
-
-    /// <summary>
     /// Encapsulates a method that has five parameters and returns a value of the type specified by the TResult parameter.
     /// </summary>
     /// <typeparam name="T1">The type of the first parameter of the method that this delegate encapsulates.</typeparam>
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/Helpers.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/Helpers.cs
index 0444b69..6f2cc98 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/Helpers.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/Helpers.cs
@@ -3,11 +3,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/IRuntimeVariables.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/IRuntimeVariables.cs
index 38d90d3..8130a61 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/IRuntimeVariables.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/IRuntimeVariables.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/ReadOnlyCollectionBuilder.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/ReadOnlyCollectionBuilder.cs
index 3626ea2..2c272b8 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/ReadOnlyCollectionBuilder.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/ReadOnlyCollectionBuilder.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/ReadOnlyDictionary.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/ReadOnlyDictionary.cs
index d8d3c39..1202e9d 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/ReadOnlyDictionary.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/ReadOnlyDictionary.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/ReferenceEqualityComparer.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/ReferenceEqualityComparer.cs
index e44676c..fff90a5 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/ReferenceEqualityComparer.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/ReferenceEqualityComparer.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/StrongBox.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/StrongBox.cs
index bc6f727..baee298 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/StrongBox.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/StrongBox.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/TrueReadOnlyCollection.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/TrueReadOnlyCollection.cs
index fd0157e..da9cf38 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/TrueReadOnlyCollection.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/TrueReadOnlyCollection.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
diff --git a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/TypeExtensions.cs b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/TypeExtensions.cs
index 16995b9..fd0da90 100644
--- a/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/TypeExtensions.cs
+++ b/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Utils/TypeExtensions.cs
@@ -2,11 +2,11 @@
  *
  * Copyright (c) Microsoft Corporation. 
  *
- * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
  * copy of the license can be found in the License.html file at the root of this distribution. If 
- * you cannot locate the  Microsoft Public License, please send an email to 
+ * you cannot locate the  Apache License, Version 2.0, please send an email to 
  * dlr at microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
- * by the terms of the Microsoft Public License.
+ * by the terms of the Apache License, Version 2.0.
  *
  * You must not remove this notice, or any other, from this software.
  *
@@ -24,20 +24,6 @@ namespace System.Dynamic.Utils {
     internal static class TypeExtensions {
 
         /// <summary>
-        /// Creates an open delegate for the given (dynamic)method.
-        /// </summary>
-        internal static Delegate CreateDelegate(this MethodInfo methodInfo, Type delegateType) {
-            Debug.Assert(methodInfo != null && delegateType != null);
-
-            var dm = methodInfo as DynamicMethod;
-            if (dm != null) {
-                return dm.CreateDelegate(delegateType);
-            } else {
-                return Delegate.CreateDelegate(delegateType, methodInfo);
-            }
-        }
-
-        /// <summary>
         /// Creates a closed delegate for the given (dynamic)method.
         /// </summary>
         internal static Delegate CreateDelegate(this MethodInfo methodInfo, Type delegateType, object target) {
diff --git a/mcs/class/lib/monolite/Mono.Security.dll b/mcs/class/lib/monolite/Mono.Security.dll
index d0ed236..52409ec 100755
Binary files a/mcs/class/lib/monolite/Mono.Security.dll and b/mcs/class/lib/monolite/Mono.Security.dll differ
diff --git a/mcs/class/lib/monolite/System.Core.dll b/mcs/class/lib/monolite/System.Core.dll
index 99a8269..6fae056 100755
Binary files a/mcs/class/lib/monolite/System.Core.dll and b/mcs/class/lib/monolite/System.Core.dll differ
diff --git a/mcs/class/lib/monolite/System.Xml.dll b/mcs/class/lib/monolite/System.Xml.dll
index a3581f8..2d48238 100755
Binary files a/mcs/class/lib/monolite/System.Xml.dll and b/mcs/class/lib/monolite/System.Xml.dll differ
diff --git a/mcs/class/lib/monolite/System.dll b/mcs/class/lib/monolite/System.dll
index c5953dc..e738bdd 100755
Binary files a/mcs/class/lib/monolite/System.dll and b/mcs/class/lib/monolite/System.dll differ
diff --git a/mcs/class/lib/monolite/gmcs.exe b/mcs/class/lib/monolite/gmcs.exe
deleted file mode 100755
index 09c0eb1..0000000
Binary files a/mcs/class/lib/monolite/gmcs.exe and /dev/null differ
diff --git a/mcs/class/lib/monolite/mcs.exe b/mcs/class/lib/monolite/mcs.exe
new file mode 100755
index 0000000..98b9a72
Binary files /dev/null and b/mcs/class/lib/monolite/mcs.exe differ
diff --git a/mcs/class/lib/monolite/mscorlib.dll b/mcs/class/lib/monolite/mscorlib.dll
index eb1efb8..eb39dc7 100755
Binary files a/mcs/class/lib/monolite/mscorlib.dll and b/mcs/class/lib/monolite/mscorlib.dll differ
diff --git a/mcs/docs/ChangeLog b/mcs/docs/ChangeLog
index 8e178c2..5bfcaff 100644
--- a/mcs/docs/ChangeLog
+++ b/mcs/docs/ChangeLog
@@ -1,3 +1,7 @@
+2010-11-23  Jb Evain  <jbevain at gmail.com>
+
+	Remove the processing of the Cecil docs
+
 2010-06-05  Zoltan Varga  <vargaz at gmail.com>
 
 	* Makefile (MONO_DIRS): Add Mono.Debugger.Soft.
diff --git a/mcs/docs/ChangeLog b/mcs/docs/ChangeLog.old
similarity index 100%
copy from mcs/docs/ChangeLog
copy to mcs/docs/ChangeLog.old
diff --git a/mcs/docs/Makefile b/mcs/docs/Makefile
index 869c8d9..0c808b3 100644
--- a/mcs/docs/Makefile
+++ b/mcs/docs/Makefile
@@ -89,7 +89,6 @@ NETDOCS_DIRS = \
 MONO_DIRS = \
 	$(classdir)/Commons.Xml.Relaxng/$(doc_en)          \
 	$(classdir)/Mono.Cairo/$(doc_en)                   \
-	$(classdir)/Mono.Cecil/$(doc_en)                   \
 	$(classdir)/Mono.Options/$(doc_en)                 \
 	$(classdir)/Mono.Posix/$(doc_en)                   \
 	$(classdir)/Mono.Security.Win32/$(doc_en)          \
diff --git a/mcs/errors/CS0012-10-lib.il b/mcs/errors/CS0012-10-lib.il
new file mode 100644
index 0000000..2887f44
--- /dev/null
+++ b/mcs/errors/CS0012-10-lib.il
@@ -0,0 +1,48 @@
+.assembly extern mscorlib
+{
+}
+
+.assembly extern 'CS0012-lib-missing'
+{
+}
+
+.assembly 'CS0012-10-lib'
+{
+  .hash algorithm 0x00008004
+  .ver 0:0:0:0
+}
+
+.module 'CS0012-10-lib.dll'
+
+.class public auto ansi sealed D`1<(I) T>
+       extends [mscorlib]System.MulticastDelegate
+{
+  .method public hidebysig specialname rtspecialname 
+          instance void  .ctor(object 'object',
+                               native int 'method') runtime managed
+  {
+  }
+
+  .method public hidebysig newslot virtual 
+          instance !T  Invoke() runtime managed
+  {
+  }
+
+  .method public hidebysig newslot virtual 
+          instance class [mscorlib]System.IAsyncResult 
+          BeginInvoke(class [mscorlib]System.AsyncCallback callback,
+                      object 'object') runtime managed
+  {
+  }
+
+  .method public hidebysig newslot virtual 
+          instance !T  EndInvoke(class [mscorlib]System.IAsyncResult result) runtime managed
+  {
+  }
+
+}
+
+.class interface public abstract auto ansi I
+       implements ['CS0012-lib-missing']I1
+{
+}
\ No newline at end of file
diff --git a/mcs/errors/CS0012-2-lib.il b/mcs/errors/CS0012-2-lib.il
new file mode 100644
index 0000000..56c6967
--- /dev/null
+++ b/mcs/errors/CS0012-2-lib.il
@@ -0,0 +1,37 @@
+.assembly extern mscorlib
+{
+}
+
+.assembly extern 'CS0012-lib-missing'
+{
+}
+
+.assembly 'CS0012-2-lib'
+{
+  .hash algorithm 0x00008004
+  .ver 0:0:0:0
+}
+
+.module 'CS0012-2-lib.dll'
+
+.class public auto ansi beforefieldinit B
+       extends [mscorlib]System.Object
+{
+  .method public hidebysig instance void 
+          Test(class ['CS0012-lib-missing']A1[] args) cil managed
+  {
+    .maxstack  8
+    IL_0000:  nop
+    IL_0001:  ret
+  }
+
+  .method public hidebysig specialname rtspecialname 
+          instance void  .ctor() cil managed
+  {
+    .maxstack  8
+    IL_0000:  ldarg.0
+    IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
+    IL_0006:  ret
+  }
+
+}
diff --git a/mcs/errors/CS0012-3-lib.il b/mcs/errors/CS0012-3-lib.il
new file mode 100644
index 0000000..22e2f1d
--- /dev/null
+++ b/mcs/errors/CS0012-3-lib.il
@@ -0,0 +1,45 @@
+.assembly extern mscorlib
+{
+}
+
+.assembly extern 'CS0012-lib-missing'
+{
+}
+
+.assembly 'CS0012-3-lib'
+{
+  .hash algorithm 0x00008004
+  .ver 0:0:0:0
+}
+
+.module 'CS0012-3-lib.dll'
+
+
+.class public auto ansi beforefieldinit BB
+       extends ['CS0012-lib-missing']A1
+{
+  .method public hidebysig specialname rtspecialname 
+          instance void  .ctor() cil managed
+  {
+    .maxstack  8
+    IL_0000:  ldarg.0
+    IL_0001:  call       instance void ['CS0012-lib-missing']A1::.ctor()
+    IL_0006:  ret
+  }
+
+}
+
+.class public auto ansi beforefieldinit B
+       extends [mscorlib]System.Object
+{
+  .field public class BB 'value'
+  .method public hidebysig specialname rtspecialname 
+          instance void  .ctor() cil managed
+  {
+    .maxstack  8
+    IL_0000:  ldarg.0
+    IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
+    IL_0006:  ret
+  }
+
+}
diff --git a/mcs/errors/CS0012-4-lib.il b/mcs/errors/CS0012-4-lib.il
new file mode 100644
index 0000000..4a1cb05
--- /dev/null
+++ b/mcs/errors/CS0012-4-lib.il
@@ -0,0 +1,55 @@
+.assembly extern mscorlib
+{
+}
+
+.assembly extern 'CS0012-lib-missing'
+{
+}
+
+.assembly 'CS0012-4-lib'
+{
+  .hash algorithm 0x00008004
+  .ver 0:0:0:0
+}
+
+.module 'CS0012-4-lib.dll'
+
+
+.class public auto ansi beforefieldinit BB
+       extends [mscorlib]System.Object
+       implements ['CS0012-lib-missing']I1
+{
+  .method public hidebysig specialname rtspecialname 
+          instance void  .ctor() cil managed
+  {
+    IL_0000:  ldarg.0
+    IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
+    IL_0006:  ret
+  }
+
+}
+
+.class public auto ansi beforefieldinit B
+       extends [mscorlib]System.Object
+{
+  .method public hidebysig specialname instance void 
+          set_Prop(class BB 'value') cil managed
+  {
+    IL_0000:  nop
+    IL_0001:  ret
+  }
+
+  .method public hidebysig specialname rtspecialname 
+          instance void  .ctor() cil managed
+  {
+    .maxstack  8
+    IL_0000:  ldarg.0
+    IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
+    IL_0006:  ret
+  }
+
+  .property instance class BB Prop()
+  {
+    .set instance void B::set_Prop(class BB)
+  }
+}
diff --git a/mcs/errors/CS0012-5-lib.il b/mcs/errors/CS0012-5-lib.il
new file mode 100644
index 0000000..86c4274
--- /dev/null
+++ b/mcs/errors/CS0012-5-lib.il
@@ -0,0 +1,36 @@
+.assembly extern mscorlib
+{
+}
+
+.assembly extern 'CS0012-lib-missing'
+{
+}
+
+.assembly 'CS0012-5-lib'
+{
+  .hash algorithm 0x00008004
+  .ver 0:0:0:0
+}
+
+.module 'CS0012-5-lib.dll'
+
+.class public auto ansi beforefieldinit B
+       extends [mscorlib]System.Object
+{
+  .class sequential ansi sealed nested public beforefieldinit N
+         extends [mscorlib]System.ValueType
+         implements ['CS0012-lib-missing']I1
+  {
+    .pack 0
+    .size 1
+  }
+
+  .method public hidebysig specialname rtspecialname 
+          instance void  .ctor() cil managed
+  {
+    IL_0000:  ldarg.0
+    IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
+    IL_0006:  ret
+  }
+
+}
diff --git a/mcs/errors/CS0012-6-lib.il b/mcs/errors/CS0012-6-lib.il
new file mode 100644
index 0000000..09ab69e
--- /dev/null
+++ b/mcs/errors/CS0012-6-lib.il
@@ -0,0 +1,28 @@
+.assembly extern mscorlib
+{
+}
+
+.assembly extern 'CS0012-lib-missing'
+{
+}
+
+.assembly 'CS0012-6-lib'
+{
+  .hash algorithm 0x00008004
+  .ver 0:0:0:0
+}
+
+.module 'CS0012-6-lib.dll'
+
+.class public auto ansi beforefieldinit A
+       extends ['CS0012-lib-missing']A1
+{
+  .method public hidebysig specialname rtspecialname 
+          instance void  .ctor() cil managed
+  {
+    IL_0000:  ldarg.0
+    IL_0001:  call       instance void ['CS0012-lib-missing']A1::.ctor()
+    IL_0006:  ret
+  }
+
+}
\ No newline at end of file
diff --git a/mcs/errors/CS0012-9-lib.il b/mcs/errors/CS0012-9-lib.il
new file mode 100644
index 0000000..058c757
--- /dev/null
+++ b/mcs/errors/CS0012-9-lib.il
@@ -0,0 +1,33 @@
+.assembly extern mscorlib
+{
+}
+
+.assembly extern 'CS0012-lib-missing'
+{
+}
+
+.assembly 'CS0012-9-lib'
+{
+  .hash algorithm 0x00008004
+  .ver 0:0:0:0
+}
+
+.module 'CS0012-9-lib.dll'
+
+.class public auto ansi beforefieldinit A
+       extends [mscorlib]System.Object
+{
+  .method public hidebysig static void  M<(['CS0012-lib-missing']A1) T>() cil managed
+  {
+    IL_0000:  ret
+  }
+
+  .method public hidebysig specialname rtspecialname 
+          instance void  .ctor() cil managed
+  {
+    IL_0000:  ldarg.0
+    IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
+    IL_0006:  ret
+  }
+
+}
diff --git a/mcs/errors/CS0012-lib.il b/mcs/errors/CS0012-lib.il
new file mode 100644
index 0000000..8eb8bce
--- /dev/null
+++ b/mcs/errors/CS0012-lib.il
@@ -0,0 +1,42 @@
+.assembly extern mscorlib
+{
+}
+
+.assembly extern 'CS0012-lib-missing'
+{
+}
+
+.assembly 'CS0012-lib'
+{
+  .hash algorithm 0x00008004
+  .ver 0:0:0:0
+}
+
+.module 'CS0012-lib.dll'
+
+.class public auto ansi beforefieldinit B
+       extends [mscorlib]System.Object
+{
+  .method public hidebysig instance class ['CS0012-lib-missing']A1 
+          Test() cil managed
+  {
+    .locals init (class ['CS0012-lib-missing']A1 V_0)
+    IL_0000:  nop
+    IL_0001:  ldnull
+    IL_0002:  stloc.0
+    IL_0003:  br.s       IL_0005
+
+    IL_0005:  ldloc.0
+    IL_0006:  ret
+  }
+
+  .method public hidebysig specialname rtspecialname 
+          instance void  .ctor() cil managed
+  {
+    .maxstack  8
+    IL_0000:  ldarg.0
+    IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
+    IL_0006:  ret
+  }
+
+}
diff --git a/mcs/errors/CS0122-19-lib.cs b/mcs/errors/CS0122-19-lib.cs
index 582b2d1..26ad422 100644
--- a/mcs/errors/CS0122-19-lib.cs
+++ b/mcs/errors/CS0122-19-lib.cs
@@ -1,6 +1,6 @@
-namespace A {
-	interface IFileWatcher
-	{
-	}
+namespace A {
+	interface IFileWatcher
+	{
+	}
 }
 
diff --git a/mcs/errors/GCS0122-2-lib.cs b/mcs/errors/CS0122-35-lib.cs
similarity index 100%
rename from mcs/errors/GCS0122-2-lib.cs
rename to mcs/errors/CS0122-35-lib.cs
diff --git a/mcs/errors/CS0315-2-lib.cs b/mcs/errors/CS0315-2-lib.cs
new file mode 100644
index 0000000..7c1d475
--- /dev/null
+++ b/mcs/errors/CS0315-2-lib.cs
@@ -0,0 +1,10 @@
+public class A<T> where T : A<T>.N1<T>
+{
+	public class N1<U>
+	{
+	}
+	
+	public void Foo (N1<int> arg)
+	{
+	}
+}
diff --git a/mcs/errors/CS0507-7-lib.cs b/mcs/errors/CS0507-7-lib.cs
new file mode 100644
index 0000000..9995b4d
--- /dev/null
+++ b/mcs/errors/CS0507-7-lib.cs
@@ -0,0 +1,11 @@
+using System.Runtime.CompilerServices;
+
+[assembly: InternalsVisibleTo ("cs0507-7")]
+
+public class Class1
+{
+	protected internal virtual string GetString ()
+	{
+		return "Hello";
+	}
+}
diff --git a/mcs/errors/CS0507-8-lib.cs b/mcs/errors/CS0507-8-lib.cs
new file mode 100644
index 0000000..b9f3774
--- /dev/null
+++ b/mcs/errors/CS0507-8-lib.cs
@@ -0,0 +1,8 @@
+
+public class Class1
+{
+	protected internal virtual string GetString ()
+	{
+		return "Hello";
+	}
+}
diff --git a/mcs/errors/CS0534-6-lib.cs b/mcs/errors/CS0534-6-lib.cs
index fc901d8..644f106 100644
--- a/mcs/errors/CS0534-6-lib.cs
+++ b/mcs/errors/CS0534-6-lib.cs
@@ -1,12 +1,12 @@
-public abstract class A
-{
-}
-
-public abstract class B : A
-{
-	public abstract void BMethod ();
-}
-
-public abstract class C : B
-{
-}
+public abstract class A
+{
+}
+
+public abstract class B : A
+{
+	public abstract void BMethod ();
+}
+
+public abstract class C : B
+{
+}
diff --git a/mcs/errors/GCS0730-lib.cs b/mcs/errors/CS0730-lib.cs
similarity index 100%
rename from mcs/errors/GCS0730-lib.cs
rename to mcs/errors/CS0730-lib.cs
diff --git a/mcs/errors/CS1542-lib.cs b/mcs/errors/CS1542-lib.cs
new file mode 100644
index 0000000..d8c844a
--- /dev/null
+++ b/mcs/errors/CS1542-lib.cs
@@ -0,0 +1,3 @@
+class A
+{
+}
\ No newline at end of file
diff --git a/mcs/errors/CS1577-lib.cs b/mcs/errors/CS1577-lib.cs
new file mode 100644
index 0000000..d1da7ab
--- /dev/null
+++ b/mcs/errors/CS1577-lib.cs
@@ -0,0 +1,3 @@
+public class C
+{
+}
\ No newline at end of file
diff --git a/mcs/errors/GCS1685-lib.cs b/mcs/errors/CS1685-2-lib.cs
similarity index 100%
rename from mcs/errors/GCS1685-lib.cs
rename to mcs/errors/CS1685-2-lib.cs
diff --git a/mcs/errors/CSFriendAssembly-lib.cs b/mcs/errors/CSFriendAssembly-lib.cs
index 2b9634f..0cb989b 100644
--- a/mcs/errors/CSFriendAssembly-lib.cs
+++ b/mcs/errors/CSFriendAssembly-lib.cs
@@ -2,10 +2,8 @@ using System;
 using System.Reflection;
 using System.Runtime.CompilerServices;
 
-#if NET_2_0
-
 [assembly: AssemblyKeyFile ("InternalsVisibleTest.snk")]
-[assembly: InternalsVisibleTo ("gcs0281, PublicKey=0024000004800000940000000602000000240000525341310004000011000000e39d99616f48cf7d6d59f345e485e713e89b8b1265a31b1a393e9894ee3fbddaf382dcaf4083dc31ee7a40a2a25c69c6d019fba9f37ec17fd680e4f6fe3b5305f71ae9e494e3501d92508c2e98ca1e22991a217aa8ce259c9882ffdfff4fbc6fa5e6660a8ff951cd94ed011e5633651b64e8f4522519b6ec84921ee22e4840e8")]
+[assembly: InternalsVisibleTo ("cs0281, PublicKey=0024000004800000940000000602000000240000525341310004000011000000e39d99616f48cf7d6d59f345e485e713e89b8b1265a31b1a393e9894ee3fbddaf382dcaf4083dc31ee7a40a2a25c69c6d019fba9f37ec17fd680e4f6fe3b5305f71ae9e494e3501d92508c2e98ca1e22991a217aa8ce259c9882ffdfff4fbc6fa5e6660a8ff951cd94ed011e5633651b64e8f4522519b6ec84921ee22e4840e8")]
 
 public class FriendClass
 {
@@ -14,5 +12,3 @@ public class FriendClass
 	}
 }
 
-#endif
-
diff --git a/mcs/errors/ChangeLog b/mcs/errors/ChangeLog
index 26bb074..30cfa9e 100644
--- a/mcs/errors/ChangeLog
+++ b/mcs/errors/ChangeLog
@@ -1,3 +1,372 @@
+2011-01-11  Marek Safar  <marek.safar at gmail.com>
+
+	Use base type parameters to extract params modifier of virtual
+	method
+
+2011-01-10  Marek Safar  <marek.safar at gmail.com>
+
+	Report correct base modifier for inaccessible protected internal
+	members
+
+2011-01-08  Marek Safar  <marek.safar at gmail.com>
+
+	[663059] Add check for protected modifier in InternalsVisibleTo
+	assembly
+
+2011-01-07  Marek Safar  <marek.safar at gmail.com>
+
+	Better anonymous methods require same parameter types
+
+2011-01-05  Marek Safar  <marek.safar at gmail.com>
+
+	Unify naming convention for all 2.0 files
+
+2011-01-04  Marek Safar  <marek.safar at gmail.com>
+
+	Set build-in types modifiers
+
+2010-12-29  Marek Safar  <marek.safar at gmail.com>
+
+	Update issues error list
+
+2010-12-29  Marek Safar  <marek.safar at gmail.com>
+
+	Implements checking of referenced members with missing references
+
+2010-12-29  Marek Safar  <marek.safar at gmail.com>
+
+	New tests
+
+2010-12-23  Marek Safar  <marek.safar at gmail.com>
+
+	Add new tests
+
+2010-12-22  Marek Safar  <marek.safar at gmail.com>
+
+	Report obsolete warning for generic methods which base
+	implementation constraints are obsolete
+
+2010-12-22  Marek Safar  <marek.safar at gmail.com>
+
+	[660553] Fixed delegate name hiding.
+
+2010-12-14  Marek Safar  <marek.safar at gmail.com>
+
+	Reject automatic version number at major and minor positions
+
+2010-12-14  Marek Safar  <marek.safar at gmail.com>
+
+	[655284] Implemented automatic assembly version numbers
+
+2010-12-14  Marek Safar  <marek.safar at gmail.com>
+
+	[655770] Emit unused members warning for nested types as well
+
+2010-12-14  Marek Safar  <marek.safar at gmail.com>
+
+	Add more restrictions to custom attribute encoding
+
+2010-12-10  Marek Safar  <marek.safar at gmail.com>
+
+	Resolve entire base initializer block in correct context
+
+2010-12-07  Marek Safar  <marek.safar at gmail.com>
+
+	New test
+
+2010-12-06  Marek Safar  <marek.safar at gmail.com>
+
+	Refactor assemblies loading into a base class
+
+2010-12-02  Marek Safar  <marek.safar at gmail.com>
+
+	Don't try to parse invalid namespace declarations, it does more
+	harm than good
+
+2010-12-02  Marek Safar  <marek.safar at gmail.com>
+
+	Move all predefined types to module to work with any mscorlib
+
+2010-12-01  Marek Safar  <marek.safar at gmail.com>
+
+	Move references loading into a new class
+
+2010-11-24  Marek Safar  <marek.safar at gmail.com>
+
+	Recover from broken for statement
+
+2010-11-22  Marek Safar  <marek.safar at gmail.com>
+
+	Updated mcs tests failures
+
+2010-11-21  Marek Safar  <marek.safar at gmail.com>
+
+	Improve handling of netmodules. Fixes #504085
+
+2010-11-19  Marek Safar  <marek.safar at gmail.com>
+
+	Add AssemblySpec to handle all assembly attributes in same way.
+
+2010-11-10  Marek Safar  <marek.safar at gmail.com>
+
+	Unwraped equality operators cannot use a user operator of
+	different types
+
+2010-11-10  Marek Safar  <marek.safar at gmail.com>
+
+	New test.
+
+2010-11-09  Marek Safar  <marek.safar at gmail.com>
+
+	Don't crash on liften null left/right shift
+
+2010-11-08  Marek Safar  <marek.safar at gmail.com>
+
+	New test
+
+2010-11-08  Marek Safar  <marek.safar at gmail.com>
+
+	[651547] Check definitely assigned struct this access correctly.
+
+2010-11-05  Marek Safar  <marek.safar at gmail.com>
+
+	Better 843 error message
+
+2010-11-04  Marek Safar  <marek.safar at gmail.com>
+
+	Allow liften null as a given number of bit positions for shift
+	operator
+
+2010-11-04  Marek Safar  <marek.safar at gmail.com>
+
+	Add boxing for dynamic nullable conversion of coalescing operator
+
+2010-11-03  Marek Safar  <marek.safar at gmail.com>
+
+	Issue a warning about re-assigned locked local variable
+
+2010-11-03  Marek Safar  <marek.safar at gmail.com>
+
+	typeof expression does not need unsafe context for pointer types
+
+2010-10-28  Marek Safar  <marek.safar at gmail.com>
+
+	Add more type parameter checks for inherited constraints.
+
+2010-10-27  Marek Safar  <marek.safar at gmail.com>
+
+	Use correct location for unexpected type parameter
+
+2010-10-26  Marek Safar  <marek.safar at gmail.com>
+
+	Check nested declaring types when testing member overrides
+
+2010-10-25  Marek Safar  <marek.safar at gmail.com>
+
+	Recover from invalid implicit lambda block
+
+2010-10-21  Marek Safar  <marek.safar at gmail.com>
+
+	Update issues list
+
+2010-10-20  Marek Safar  <marek.safar at gmail.com>
+
+	Clean up test files
+
+2010-10-20  Marek Safar  <marek.safar at gmail.com>
+
+	Check for name conflicts between parent members and child block
+	variables
+
+2010-10-20  Marek Safar  <marek.safar at gmail.com>
+
+	More work on ambiguous named arguments
+
+2010-10-19  Marek Safar  <marek.safar at gmail.com>
+
+	Restore altered arguments when overload resolution ends up in
+	dynamic dispatch
+
+2010-10-18  Marek Safar  <marek.safar at gmail.com>
+
+	[512754] Overload resolution with named or optional arguments has
+	to use closest member parameters
+
+2010-10-15  Marek Safar  <marek.safar at gmail.com>
+
+	Extension method argument cannot exercise numeric conversion
+
+2010-10-15  Marek Safar  <marek.safar at gmail.com>
+
+	Add more dynamic conversion restrictions
+
+2010-10-15  Marek Safar  <marek.safar at gmail.com>
+
+	More tweaks to dynamic overload resolution
+
+2010-10-14  Marek Safar  <marek.safar at gmail.com>
+
+	A conditional expression with either dynamic side is always of
+	dynamic type
+
+2010-10-14  Marek Safar  <marek.safar at gmail.com>
+
+	More conversion tweaks for dynamic in using statement
+
+2010-10-13  Marek Safar  <marek.safar at gmail.com>
+
+	New test
+
+2010-10-12  Marek Safar  <marek.safar at gmail.com>
+
+	More fixes for implicit conversions of nullable types with
+	nullable arguments
+
+2010-10-12  Marek Safar  <marek.safar at gmail.com>
+
+	Keep parsing after invalid contstructor declaration
+
+2010-10-12  Marek Safar  <marek.safar at gmail.com>
+
+	Report correct error message for compound lifted binary operations
+
+2010-10-08  Marek Safar  <marek.safar at gmail.com>
+
+	Allow imported members cache to be setup in 2 phases as compiled
+	one is to deal with generics recursions
+
+2010-10-07  Marek Safar  <marek.safar at gmail.com>
+
+	Fix compound event assigments with dynamic side effect
+
+2010-10-06  Marek Safar  <marek.safar at gmail.com>
+
+	Fix CRLF
+
+2010-10-06  Marek Safar  <marek.safar at gmail.com>
+
+	Verify type parameter constraints type parameters
+
+2010-10-05  Marek Safar  <marek.safar at gmail.com>
+
+	Compare all type arguments for nested generic types.
+
+2010-09-30  Marek Safar  <marek.safar at gmail.com>
+
+	void is never of type object
+
+2010-09-30  Marek Safar  <marek.safar at gmail.com>
+
+	More awkward nullable binary expressions which are not lifted even
+	though they should be
+
+2010-09-29  Marek Safar  <marek.safar at gmail.com>
+
+	Skip inaccessible nested types for member access expressions.
+
+2010-09-29  Marek Safar  <marek.safar at gmail.com>
+
+	Inflate custom site container delegates correctly.
+
+2010-09-25  Marek Safar  <marek.safar at gmail.com>
+
+	Implemented more combinations of nullable boolean logical
+	operators
+
+2010-09-25  Marek Safar  <marek.safar at gmail.com>
+
+	Better error message for syntax error in namespace name
+
+2010-09-21  Marek Safar  <marek.safar at gmail.com>
+
+	New tests.
+
+2010-09-20  Marek Safar  <marek.safar at gmail.com>
+
+	Implement postfix operations involving an implicit user operator.
+
+2010-09-20  Marek Safar  <marek.safar at gmail.com>
+
+	Don't check inferred dynamic type arguments against best candidate
+	constraints.
+
+2010-09-17  Marek Safar  <marek.safar at gmail.com>
+
+	Implement predefined binary enum operators involving an implicit
+	user conversion
+
+2010-09-16  Marek Safar  <marek.safar at gmail.com>
+
+	Recover wrong invalid character constants.
+
+2010-09-15  Raja R Harinath  <harinath at hurrynot.org>
+
+	Fix a few CRLF issues
+
+2010-09-15  Marek Safar  <marek.safar at gmail.com>
+
+	Recover wrong embedded statement syntax
+
+2010-09-14  Marek Safar  <marek.safar at gmail.com>
+
+	Recover wrong invalid initializer syntax.
+
+2010-09-13  Marek Safar  <marek.safar at gmail.com>
+
+	Better error reporting for missing identifiers.
+
+2010-09-10  Marek Safar  <marek.safar at gmail.com>
+
+	Tweak few error reports
+
+2010-09-10  Marek Safar  <marek.safar at gmail.com>
+
+	Converting the switch statement into normal statement (the block
+	part).
+
+2010-09-10  Marek Safar  <marek.safar at gmail.com>
+
+	Reject varianly implemented interface members.
+
+2010-09-09  Marek Safar  <marek.safar at gmail.com>
+
+	Recover from broken single parameter
+
+2010-09-09  Marek Safar  <marek.safar at gmail.com>
+
+	Report precise error about local variable hiding
+
+2010-09-09  Marek Safar  <marek.safar at gmail.com>
+
+	Do all possible mistaken empty statement checks in the parser
+
+2010-09-09  Marek Safar  <marek.safar at gmail.com>
+
+	Try to recover after each wrong statement.
+
+2010-09-09  Marek Safar  <marek.safar at gmail.com>
+
+	__arglist can be used as an expression.
+
+2010-09-09  Marek Safar  <marek.safar at gmail.com>
+
+	The first push to make flow-analysis work for complex blocks.
+
+	All blocks are now strictly hierachical which greatly simplifies
+	many things and fixes many subtle bugs with local names. Removing
+	the block cross references helps scalling when compiling deeply
+	nested blocks or large method bodies including linq. Prepared
+	possible dynamic statements to work with variable declarators.
+
+2010-09-06  Jonathan Pobst  <monkey at jpobst.com>
+
+	Normalize line endings.
+
+2010-09-01  Marek Safar  <marek.safar at gmail.com>
+
+	Add ctor block to field initializers to avoid member lookup at
+	wrong block
+
 2010-08-31  Marek Safar  <marek.safar at gmail.com>
 
 	Add support for indirect pointer type constants.
diff --git a/mcs/errors/GCS0733-lib.cs b/mcs/errors/GCS0733-lib.cs
deleted file mode 100644
index 131d5ec..0000000
--- a/mcs/errors/GCS0733-lib.cs
+++ /dev/null
@@ -1,4 +0,0 @@
-public class C<T>
-{
-	T t;
-}
diff --git a/mcs/errors/Makefile b/mcs/errors/Makefile
index c5ea833..ba77653 100644
--- a/mcs/errors/Makefile
+++ b/mcs/errors/Makefile
@@ -4,8 +4,6 @@ include ../build/rules.make
 
 with_mono_path = MONO_PATH="$(topdir)/class/lib/$(PROFILE)$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH"
 
-EXTRA_SUPPORT_FILES = CSFriendAssembly-lib.dll GCS0122-2-lib.dll GCS0730-lib.dll GCS0733-lib.dll GCS1685-lib.dll
-
 ilasm = $(topdir)/class/lib/$(PROFILE)/ilasm.exe
 ILASM = $(with_mono_path) $(RUNTIME) $(RUNTIME_FLAGS) $(ilasm)
 
@@ -22,15 +20,19 @@ DISTFILES = \
 	$(wildcard known-issues-*)
 
 TEST_SUPPORT_FILES = \
-	CS0103-2-lib.dll CS0118-2-lib.dll CS0122-10-lib.dll CS0122-14-lib.dll CS0122-15-lib.dll CS0122-19-lib.dll CS0143-lib.dll CS0144-3-lib.dll \
-	CS0205-3-lib.dll \
-	CS0229-3-lib.dll CS0229-4-lib.dll \
+	CS0012-lib.dll CS0012-2-lib.dll CS0012-3-lib.dll CS0012-4-lib.dll CS0012-5-lib.dll CS0012-6-lib.dll CS0012-9-lib.dll CS0012-10-lib.dll \
+	CS0103-2-lib.dll CS0118-2-lib.dll CS0122-10-lib.dll CS0122-14-lib.dll CS0122-15-lib.dll CS0122-19-lib.dll CS0122-35-lib.dll CS0143-lib.dll CS0144-3-lib.dll \
+	CS0205-3-lib.dll CS0229-3-lib.dll CS0229-4-lib.dll \
+	CS0315-2-lib.dll \
 	CS0433-lib.dll CS0433-2-lib.dll \
-	CS0534-3-lib.dll CS0534-4-lib.dll CS0534-6-lib.dll CS0571-3-lib.dll CS0571-5-lib.dll CS0571-6-lib.dll \
+	CS0507-7-lib.dll CS0507-8-lib.dll CS0534-3-lib.dll CS0534-4-lib.dll CS0534-6-lib.dll CS0571-3-lib.dll CS0571-5-lib.dll CS0571-6-lib.dll \
 	CS0612-2-lib.dll CS0618-2-lib.dll CS0619-8-lib.dll CS0619-17-lib.dll CS0619-32-lib.dll CS0619-33-lib.dll CS0619-36-lib.dll CS0619-42-lib.dll \
 	CS0619-43-lib.dll CS1546-lib.dll CS0619-51-lib.dll CS1509-module.dll CS1681-2-lib.dll \
+	CS0730-lib.dll \
+	CS1542-lib.dll CS1577-lib.dll \
+	CS1685-2-lib.dll \
 	CS2015-lib.dll CS3005-16-lib.dll CS3013-module.dll CSExternAlias-lib.dll \
-	$(EXTRA_SUPPORT_FILES) 
+	CSFriendAssembly-lib.dll
 
 # mention all targets
 all-local $(STD_TARGETS:=-local):
diff --git a/mcs/errors/cs0006.cs b/mcs/errors/cs0006.cs
index 353e118..d4ae9fb 100644
--- a/mcs/errors/cs0006.cs
+++ b/mcs/errors/cs0006.cs
@@ -1,4 +1,4 @@
-// CS0006: cannot find metadata file `a:b'
+// CS0006: Metadata file `a:b' could not be found
 // Line: 0
 // Compiler options: -r:a:b
 
diff --git a/mcs/errors/cs0012-10.cs b/mcs/errors/cs0012-10.cs
new file mode 100644
index 0000000..b05e545
--- /dev/null
+++ b/mcs/errors/cs0012-10.cs
@@ -0,0 +1,8 @@
+// CS0012: The type `I1' is defined in an assembly that is not referenced. Consider adding a reference to assembly `CS0012-lib-missing, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'
+// Line: 7
+// Compiler options: -r:CS0012-10-lib.dll
+
+class Test
+{
+	event D<Test> e;
+}
\ No newline at end of file
diff --git a/mcs/errors/cs0012-2.cs b/mcs/errors/cs0012-2.cs
new file mode 100644
index 0000000..910e5ba
--- /dev/null
+++ b/mcs/errors/cs0012-2.cs
@@ -0,0 +1,12 @@
+// CS0012: The type `A1' is defined in an assembly that is not referenced. Consider adding a reference to assembly `CS0012-lib-missing, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'
+// Line: 10
+// Compiler options: -r:CS0012-2-lib.dll
+
+class Test
+{
+	public static void Main ()
+	{
+		var b = new B ();
+		b.Test (null);
+	}
+}
\ No newline at end of file
diff --git a/mcs/errors/cs0012-3.cs b/mcs/errors/cs0012-3.cs
new file mode 100644
index 0000000..6bf3ab3
--- /dev/null
+++ b/mcs/errors/cs0012-3.cs
@@ -0,0 +1,12 @@
+// CS0012: The type `A1' is defined in an assembly that is not referenced. Consider adding a reference to assembly `CS0012-lib-missing, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'
+// Line: 10
+// Compiler options: -r:CS0012-3-lib.dll
+
+class Test
+{
+	public static void Main ()
+	{
+		var b = new B ();
+		b.value = null;
+	}
+}
\ No newline at end of file
diff --git a/mcs/errors/cs0012-4.cs b/mcs/errors/cs0012-4.cs
new file mode 100644
index 0000000..300c72f
--- /dev/null
+++ b/mcs/errors/cs0012-4.cs
@@ -0,0 +1,12 @@
+// CS0012: The type `I1' is defined in an assembly that is not referenced. Consider adding a reference to assembly `CS0012-lib-missing, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'
+// Line: 10
+// Compiler options: -r:CS0012-4-lib.dll
+
+class Test
+{
+	public static void Main ()
+	{
+		var b = new B ();
+		b.Prop = null;	
+	}
+}
\ No newline at end of file
diff --git a/mcs/errors/cs0012-5.cs b/mcs/errors/cs0012-5.cs
new file mode 100644
index 0000000..8e361d2
--- /dev/null
+++ b/mcs/errors/cs0012-5.cs
@@ -0,0 +1,11 @@
+// CS0012: The type `I1' is defined in an assembly that is not referenced. Consider adding a reference to assembly `CS0012-lib-missing, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'
+// Line: 10
+// Compiler options: -r:CS0012-5-lib.dll
+
+class Test
+{
+	public static void Main ()
+	{
+		object o = typeof (B.N);
+	}
+}
\ No newline at end of file
diff --git a/mcs/errors/cs0012-6.cs b/mcs/errors/cs0012-6.cs
new file mode 100644
index 0000000..d6fe9ce
--- /dev/null
+++ b/mcs/errors/cs0012-6.cs
@@ -0,0 +1,11 @@
+// CS0012: The type `A1' is defined in an assembly that is not referenced. Consider adding a reference to assembly `CS0012-lib-missing, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'
+// Line: 10
+// Compiler options: -r:CS0012-6-lib.dll
+
+[A]
+class Test
+{
+	public static void Main ()
+	{
+	}
+}
\ No newline at end of file
diff --git a/mcs/errors/cs0012-7.cs b/mcs/errors/cs0012-7.cs
new file mode 100644
index 0000000..41bef7d
--- /dev/null
+++ b/mcs/errors/cs0012-7.cs
@@ -0,0 +1,10 @@
+// CS0012: The type `A1' is defined in an assembly that is not referenced. Consider adding a reference to assembly `CS0012-lib-missing, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'
+// Line: 10
+// Compiler options: -r:CS0012-6-lib.dll
+
+class Test : A
+{
+	public static void Main ()
+	{
+	}
+}
\ No newline at end of file
diff --git a/mcs/errors/cs0012-8.cs b/mcs/errors/cs0012-8.cs
new file mode 100644
index 0000000..a4e78ea
--- /dev/null
+++ b/mcs/errors/cs0012-8.cs
@@ -0,0 +1,11 @@
+// CS0012: 
+// Line: 10
+// Compiler options: -r:CS0012-6-lib.dll
+
+class Test
+{
+	public static void Main ()
+	{
+		A.M.Foo ();
+	}
+}
\ No newline at end of file
diff --git a/mcs/errors/cs0012-9.cs b/mcs/errors/cs0012-9.cs
new file mode 100644
index 0000000..94e0ea6
--- /dev/null
+++ b/mcs/errors/cs0012-9.cs
@@ -0,0 +1,11 @@
+// CS0012: The type `A1' is defined in an assembly that is not referenced. Consider adding a reference to assembly `CS0012-lib-missing, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'
+// Line: 9
+// Compiler options: -r:CS0012-9-lib.dll
+
+class Test
+{
+	public static void Main ()
+	{
+		A.M<string> ();
+	}
+}
\ No newline at end of file
diff --git a/mcs/errors/cs0012.cs b/mcs/errors/cs0012.cs
new file mode 100644
index 0000000..1abc870
--- /dev/null
+++ b/mcs/errors/cs0012.cs
@@ -0,0 +1,12 @@
+// CS0012: The type `A1' is defined in an assembly that is not referenced. Consider adding a reference to assembly `CS0012-lib-missing, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'
+// Line: 10
+// Compiler options: -r:CS0012-lib.dll
+
+class Test
+{
+	public static void Main ()
+	{
+		var b = new B ();
+		b.Test ();
+	}
+}
\ No newline at end of file
diff --git a/mcs/errors/cs0019-21.cs b/mcs/errors/cs0019-21.cs
index 795a44f..8deee1f 100644
--- a/mcs/errors/cs0019-21.cs
+++ b/mcs/errors/cs0019-21.cs
@@ -1,13 +1,13 @@
-// CS0019: Operator `+' cannot be applied to operands of type `AA' and `uint'
-// Line: 11
-
-enum AA : byte { a, b = 200 }
-
-public class C
-{
-	public static void Main ()
-	{
-		const uint ul = 1;
-		AA b = AA.a + ul;
-	}
-}
+// CS0019: Operator `+' cannot be applied to operands of type `AA' and `uint'
+// Line: 11
+
+enum AA : byte { a, b = 200 }
+
+public class C
+{
+	public static void Main ()
+	{
+		const uint ul = 1;
+		AA b = AA.a + ul;
+	}
+}
diff --git a/mcs/errors/cs0019-22.cs b/mcs/errors/cs0019-22.cs
index 25a7e5b..38f13a3 100644
--- a/mcs/errors/cs0019-22.cs
+++ b/mcs/errors/cs0019-22.cs
@@ -1,13 +1,13 @@
-// CS0019: Operator `-' cannot be applied to operands of type `AA' and `long'
-// Line: 11
-
-enum AA : short { a, b = 200 }
-
-public class C
-{
-	public static void Main ()
-	{
-		const long ul = 1;
-		AA b = AA.a - ul;
-	}
-}
+// CS0019: Operator `-' cannot be applied to operands of type `AA' and `long'
+// Line: 11
+
+enum AA : short { a, b = 200 }
+
+public class C
+{
+	public static void Main ()
+	{
+		const long ul = 1;
+		AA b = AA.a - ul;
+	}
+}
diff --git a/mcs/errors/cs0019-23.cs b/mcs/errors/cs0019-23.cs
index bf6ba95..27e5218 100644
--- a/mcs/errors/cs0019-23.cs
+++ b/mcs/errors/cs0019-23.cs
@@ -1,10 +1,10 @@
 // CS0019: Operator `==' cannot be applied to operands of type `anonymous method' and `anonymous method'
-// Line: 8
-
-public class C
-{
-	public static void Main ()
+// Line: 8
+
+public class C
+{
+	public static void Main ()
 	{
-		bool b = delegate () {} == delegate () {};
-	}
+		bool b = delegate () {} == delegate () {};
+	}
 }
diff --git a/mcs/errors/cs0019-40.cs b/mcs/errors/cs0019-40.cs
new file mode 100644
index 0000000..ba4f8e9
--- /dev/null
+++ b/mcs/errors/cs0019-40.cs
@@ -0,0 +1,26 @@
+// CS0019: Operator `==' cannot be applied to operands of type `Foo' and `null'
+// Line: 14
+
+struct Foo
+{
+	public static bool operator == (int d1, Foo d2)
+	{
+		throw new System.ApplicationException ();
+	}
+		
+	public static bool operator != (int d1, Foo d2)
+	{
+		throw new System.ApplicationException ();	
+	}
+}
+
+public class Test
+{
+	static Foo ctx;
+
+	public static void Main ()
+	{
+		if (ctx == null)
+			return;
+	}
+}
diff --git a/mcs/errors/gcs0019.cs b/mcs/errors/cs0019-41.cs
similarity index 100%
rename from mcs/errors/gcs0019.cs
rename to mcs/errors/cs0019-41.cs
diff --git a/mcs/errors/gcs0019-2.cs b/mcs/errors/cs0019-42.cs
similarity index 100%
rename from mcs/errors/gcs0019-2.cs
rename to mcs/errors/cs0019-42.cs
diff --git a/mcs/errors/gcs0019-3.cs b/mcs/errors/cs0019-43.cs
similarity index 100%
rename from mcs/errors/gcs0019-3.cs
rename to mcs/errors/cs0019-43.cs
diff --git a/mcs/errors/cs0019-45.cs b/mcs/errors/cs0019-45.cs
new file mode 100644
index 0000000..be91523
--- /dev/null
+++ b/mcs/errors/cs0019-45.cs
@@ -0,0 +1,15 @@
+// CS0019: Operator `==' cannot be applied to operands of type `method group' and `null'
+// Line: 8
+
+public class C
+{
+	public static void Main ()
+	{
+		bool a = DelegateMethod == null;
+	}
+
+	static int DelegateMethod(bool b)
+	{
+		return 3;
+	}	
+}
diff --git a/mcs/errors/cs0019-46.cs b/mcs/errors/cs0019-46.cs
new file mode 100644
index 0000000..3924c53
--- /dev/null
+++ b/mcs/errors/cs0019-46.cs
@@ -0,0 +1,15 @@
+// CS0019: Operator `==' cannot be applied to operands of type `method group' and `method group'
+// Line: 8
+
+public class C
+{
+	public static void Main ()
+	{
+		bool a = DelegateMethod == DelegateMethod;
+	}
+
+	static int DelegateMethod(bool b)
+	{
+		return 3;
+	}	
+}
diff --git a/mcs/errors/gcs0019-7.cs b/mcs/errors/cs0019-47.cs
similarity index 100%
rename from mcs/errors/gcs0019-7.cs
rename to mcs/errors/cs0019-47.cs
diff --git a/mcs/errors/gcs0019-8.cs b/mcs/errors/cs0019-48.cs
similarity index 100%
rename from mcs/errors/gcs0019-8.cs
rename to mcs/errors/cs0019-48.cs
diff --git a/mcs/errors/gcs0019-9.cs b/mcs/errors/cs0019-49.cs
similarity index 100%
rename from mcs/errors/gcs0019-9.cs
rename to mcs/errors/cs0019-49.cs
diff --git a/mcs/errors/gcs0019-10.cs b/mcs/errors/cs0019-50.cs
similarity index 100%
rename from mcs/errors/gcs0019-10.cs
rename to mcs/errors/cs0019-50.cs
diff --git a/mcs/errors/gcs0019-11.cs b/mcs/errors/cs0019-51.cs
similarity index 100%
rename from mcs/errors/gcs0019-11.cs
rename to mcs/errors/cs0019-51.cs
diff --git a/mcs/errors/gcs0019-12.cs b/mcs/errors/cs0019-52.cs
similarity index 100%
rename from mcs/errors/gcs0019-12.cs
rename to mcs/errors/cs0019-52.cs
diff --git a/mcs/errors/gcs0019-13.cs b/mcs/errors/cs0019-53.cs
similarity index 100%
rename from mcs/errors/gcs0019-13.cs
rename to mcs/errors/cs0019-53.cs
diff --git a/mcs/errors/gcs0019-14.cs b/mcs/errors/cs0019-54.cs
similarity index 100%
rename from mcs/errors/gcs0019-14.cs
rename to mcs/errors/cs0019-54.cs
diff --git a/mcs/errors/gcs0019-15.cs b/mcs/errors/cs0019-55.cs
similarity index 100%
rename from mcs/errors/gcs0019-15.cs
rename to mcs/errors/cs0019-55.cs
diff --git a/mcs/errors/gcs0019-16.cs b/mcs/errors/cs0019-56.cs
similarity index 100%
rename from mcs/errors/gcs0019-16.cs
rename to mcs/errors/cs0019-56.cs
diff --git a/mcs/errors/gcs0019-17.cs b/mcs/errors/cs0019-57.cs
similarity index 100%
rename from mcs/errors/gcs0019-17.cs
rename to mcs/errors/cs0019-57.cs
diff --git a/mcs/errors/cs0019-58.cs b/mcs/errors/cs0019-58.cs
new file mode 100644
index 0000000..c5ce6fc
--- /dev/null
+++ b/mcs/errors/cs0019-58.cs
@@ -0,0 +1,12 @@
+// CS0019: Operator `&=' cannot be applied to operands of type `bool' and `byte?'
+// Line: 10
+
+public class Test
+{
+	public static void Main()
+	{
+		bool b = false;
+		byte? b2 = 0;
+		b &= b2;
+	}
+}
diff --git a/mcs/errors/cs0019-59.cs b/mcs/errors/cs0019-59.cs
new file mode 100644
index 0000000..72a7a20
--- /dev/null
+++ b/mcs/errors/cs0019-59.cs
@@ -0,0 +1,24 @@
+// CS0019: Operator `^' cannot be applied to operands of type `S2' and `float'
+// Line: 9
+
+public class Test
+{
+	public static void Main()
+	{
+		S2 s2 = new S2 ();
+		int r = s2 ^ 5.04f;
+	}
+}
+
+struct S2
+{
+	public static int operator ^ (double? p1, S2 s2)
+	{
+		return 1;
+	}
+	
+	public static implicit operator int? (S2 s1)
+	{ 
+		return int.MinValue;
+	}
+}
diff --git a/mcs/errors/cs0019-60.cs b/mcs/errors/cs0019-60.cs
new file mode 100644
index 0000000..c103e33
--- /dev/null
+++ b/mcs/errors/cs0019-60.cs
@@ -0,0 +1,25 @@
+// CS0019: Operator `>' cannot be applied to operands of type `S' and `S?'
+// Line: 9
+
+public class Test
+{
+	public static void Main ()
+	{
+		S a = new S ();
+		S? b = null;
+		string res = a > b;
+	}
+}
+
+struct S
+{
+	public static string operator > (S a, S b)
+	{ 
+		return ">";
+	}
+	
+	public static string operator < (S a, S b)
+	{ 
+		return "<";
+	}
+}
diff --git a/mcs/errors/cs0019-61.cs b/mcs/errors/cs0019-61.cs
new file mode 100644
index 0000000..d94fadd
--- /dev/null
+++ b/mcs/errors/cs0019-61.cs
@@ -0,0 +1,17 @@
+// CS0019: Operator `==' cannot be applied to operands of type `S?' and `int'
+// Line: 15
+
+struct S
+{
+	public static bool operator != (S s, int a) { return true; }
+	public static bool operator == (S s, int a) { return false; }
+}
+
+public class C
+{
+	public static void Main ()
+	{
+		S? s;
+		var b = s == 1;
+	}
+}
diff --git a/mcs/errors/cs0019-62.cs b/mcs/errors/cs0019-62.cs
new file mode 100644
index 0000000..b1f7cf9
--- /dev/null
+++ b/mcs/errors/cs0019-62.cs
@@ -0,0 +1,17 @@
+// CS0019: Operator `==' cannot be applied to operands of type `int' and `S?'
+// Line: 15
+
+struct S
+{
+	public static bool operator !=(int a, S s) { return true; }
+	public static bool operator ==(int a, S s) { return false; }
+}
+
+public class C
+{
+	public static void Main ()
+	{
+		S? s;
+		var b = 1 == s;
+	}
+}
diff --git a/mcs/errors/gcs0021.cs b/mcs/errors/cs0021-3.cs
similarity index 100%
rename from mcs/errors/gcs0021.cs
rename to mcs/errors/cs0021-3.cs
diff --git a/mcs/errors/cs0029-11.cs b/mcs/errors/cs0029-11.cs
index 1790957..962cab0 100644
--- a/mcs/errors/cs0029-11.cs
+++ b/mcs/errors/cs0029-11.cs
@@ -1,9 +1,9 @@
-// CS0029: Cannot implicitly convert type `int' to `string'
-// Line: 5
-
-class A {
+// CS0029: Cannot implicitly convert type `int' to `string'
+// Line: 5
+
+class A {
 	public static implicit operator string (A a)
 	{ 
 		return 42;
- 	}
-}
+ 	}
+}
diff --git a/mcs/errors/cs0029-13.cs b/mcs/errors/cs0029-13.cs
new file mode 100644
index 0000000..9d705b2
--- /dev/null
+++ b/mcs/errors/cs0029-13.cs
@@ -0,0 +1,16 @@
+// CS0029: Cannot implicitly convert type `int' to `A'
+// Line: 14
+
+class A
+{
+	public static implicit operator int (A x)
+	{
+		return 1;
+	}
+	
+	public static void Main ()
+	{
+		var a = new A ();
+		a++;
+	}
+}
diff --git a/mcs/errors/cs0029-14.cs b/mcs/errors/cs0029-14.cs
new file mode 100644
index 0000000..e0141e9
--- /dev/null
+++ b/mcs/errors/cs0029-14.cs
@@ -0,0 +1,10 @@
+// CS0029: Cannot implicitly convert type `int' to `System.IDisposable'
+// Line: 8
+
+class A
+{
+	public static void Main ()
+	{
+		System.IDisposable id = 1;
+	}
+}
diff --git a/mcs/errors/gcs0029-5.cs b/mcs/errors/cs0029-15.cs
similarity index 100%
rename from mcs/errors/gcs0029-5.cs
rename to mcs/errors/cs0029-15.cs
diff --git a/mcs/errors/gcs0029-6.cs b/mcs/errors/cs0029-16.cs
similarity index 100%
rename from mcs/errors/gcs0029-6.cs
rename to mcs/errors/cs0029-16.cs
diff --git a/mcs/errors/gcs0029-7.cs b/mcs/errors/cs0029-17.cs
similarity index 100%
rename from mcs/errors/gcs0029-7.cs
rename to mcs/errors/cs0029-17.cs
diff --git a/mcs/errors/gcs0029-8.cs b/mcs/errors/cs0029-18.cs
similarity index 100%
rename from mcs/errors/gcs0029-8.cs
rename to mcs/errors/cs0029-18.cs
diff --git a/mcs/errors/gcs0029-9.cs b/mcs/errors/cs0029-19.cs
similarity index 100%
rename from mcs/errors/gcs0029-9.cs
rename to mcs/errors/cs0029-19.cs
diff --git a/mcs/errors/cs0029-2.cs b/mcs/errors/cs0029-2.cs
index 118d781..9aee409 100644
--- a/mcs/errors/cs0029-2.cs
+++ b/mcs/errors/cs0029-2.cs
@@ -1,15 +1,15 @@
 // cs0029-2.cs: Cannot implicitly convert type `string' to `double'
 // Line: 11
 
-using System;
-
-public sealed class BoundAttribute : System.Attribute
-{
-	public double D;
-}
-
-class C
-{
-	[Bound (D = "Dude!")]
-	double d2;
+using System;
+
+public sealed class BoundAttribute : System.Attribute
+{
+	public double D;
+}
+
+class C
+{
+	[Bound (D = "Dude!")]
+	double d2;
 }
\ No newline at end of file
diff --git a/mcs/errors/cs0029-20.cs b/mcs/errors/cs0029-20.cs
new file mode 100644
index 0000000..8d987c9
--- /dev/null
+++ b/mcs/errors/cs0029-20.cs
@@ -0,0 +1,15 @@
+// CS0029: Cannot implicitly convert type `A<int>.B<long>' to `A<long>.B<long>'
+// Line: 14
+
+class A<T>
+{
+	public class B<U>
+	{
+	}
+}
+
+class Test
+{
+	static A<int>.B<long> a;
+	static A<long>.B<long> b = a;
+}
diff --git a/mcs/errors/cs0029-21.cs b/mcs/errors/cs0029-21.cs
new file mode 100644
index 0000000..b6d3c34
--- /dev/null
+++ b/mcs/errors/cs0029-21.cs
@@ -0,0 +1,16 @@
+// CS0029: Cannot implicitly convert type `T' to `EventHandler'
+// Line: 14
+
+using System;
+
+public delegate void EventHandler (int i, int j);
+
+public class Button {
+
+	public event EventHandler Click;
+
+	public void Connect<T> () where T : class
+	{
+		Click += default (T);
+	}
+}
diff --git a/mcs/errors/gcs0029-2.cs b/mcs/errors/cs0029-22.cs
similarity index 100%
rename from mcs/errors/gcs0029-2.cs
rename to mcs/errors/cs0029-22.cs
diff --git a/mcs/errors/cs0029-23.cs b/mcs/errors/cs0029-23.cs
new file mode 100644
index 0000000..1102d2a
--- /dev/null
+++ b/mcs/errors/cs0029-23.cs
@@ -0,0 +1,9 @@
+// CS0029: Cannot implicitly convert type `bool' to `int'
+// Line : 7
+
+class T {
+	static int Main ()
+	{
+		int a = default(bool);
+	}
+}
diff --git a/mcs/errors/gcs0029-4.cs b/mcs/errors/cs0029-24.cs
similarity index 100%
rename from mcs/errors/gcs0029-4.cs
rename to mcs/errors/cs0029-24.cs
diff --git a/mcs/errors/gcs0029.cs b/mcs/errors/cs0029-25.cs
similarity index 100%
rename from mcs/errors/gcs0029.cs
rename to mcs/errors/cs0029-25.cs
diff --git a/mcs/errors/cs0030-11.cs b/mcs/errors/cs0030-11.cs
new file mode 100644
index 0000000..4a8d1fd
--- /dev/null
+++ b/mcs/errors/cs0030-11.cs
@@ -0,0 +1,15 @@
+// CS0030: Cannot convert type `string' to `IA'
+// Line: 13
+
+interface IA
+{
+}
+
+class MainClass
+{
+	public static void Main ()
+	{
+		string s = "s";
+		IA i = (IA) s;
+	}
+}
diff --git a/mcs/errors/gcs0030-2.cs b/mcs/errors/cs0030-12.cs
similarity index 100%
rename from mcs/errors/gcs0030-2.cs
rename to mcs/errors/cs0030-12.cs
diff --git a/mcs/errors/gcs0030-3.cs b/mcs/errors/cs0030-13.cs
similarity index 100%
rename from mcs/errors/gcs0030-3.cs
rename to mcs/errors/cs0030-13.cs
diff --git a/mcs/errors/gcs0030.cs b/mcs/errors/cs0030-14.cs
similarity index 100%
rename from mcs/errors/gcs0030.cs
rename to mcs/errors/cs0030-14.cs
diff --git a/mcs/errors/gcs0031.cs b/mcs/errors/cs0031-5.cs
similarity index 100%
rename from mcs/errors/gcs0031.cs
rename to mcs/errors/cs0031-5.cs
diff --git a/mcs/errors/cs0035.cs b/mcs/errors/cs0035.cs
index 7caf833..a633058 100644
--- a/mcs/errors/cs0035.cs
+++ b/mcs/errors/cs0035.cs
@@ -1,24 +1,24 @@
-// CS0035: Operator `-' is ambiguous on an operand of type `A'
-// Line: 22
-
-class A
-{
-	public static implicit operator float(A x)
-	{
-		return 0;
-	}
-
-	public static implicit operator decimal(A x)
-	{
-		return 0;
-	}
-}
-
-class M
-{
-	static void Main()
-	{
-		A a = new A ();
-		float f = -a;  
-	}
-}
+// CS0035: Operator `-' is ambiguous on an operand of type `A'
+// Line: 22
+
+class A
+{
+	public static implicit operator float(A x)
+	{
+		return 0;
+	}
+
+	public static implicit operator decimal(A x)
+	{
+		return 0;
+	}
+}
+
+class M
+{
+	static void Main()
+	{
+		A a = new A ();
+		float f = -a;  
+	}
+}
diff --git a/mcs/errors/gcs0037-2.cs b/mcs/errors/cs0037-10.cs
similarity index 100%
rename from mcs/errors/gcs0037-2.cs
rename to mcs/errors/cs0037-10.cs
diff --git a/mcs/errors/cs0037-6.cs b/mcs/errors/cs0037-6.cs
index c947742..bc5e367 100644
--- a/mcs/errors/cs0037-6.cs
+++ b/mcs/errors/cs0037-6.cs
@@ -1,15 +1,15 @@
-// cs0037.cs: Cannot convert null to `bool' because it is a value type
-// Line: 13
-
-using System;
-
-public sealed class BoundAttribute : System.Attribute
-{
-	public bool Dec { set { } get { return false; } }
-}
-
-class C
-{
-	[Bound (Dec = null)]
-	double d2;
+// cs0037.cs: Cannot convert null to `bool' because it is a value type
+// Line: 13
+
+using System;
+
+public sealed class BoundAttribute : System.Attribute
+{
+	public bool Dec { set { } get { return false; } }
+}
+
+class C
+{
+	[Bound (Dec = null)]
+	double d2;
 }
\ No newline at end of file
diff --git a/mcs/errors/gcs0051.cs b/mcs/errors/cs0051-2.cs
similarity index 100%
rename from mcs/errors/gcs0051.cs
rename to mcs/errors/cs0051-2.cs
diff --git a/mcs/errors/gcs0060-2.cs b/mcs/errors/cs0060-6.cs
similarity index 100%
rename from mcs/errors/gcs0060-2.cs
rename to mcs/errors/cs0060-6.cs
diff --git a/mcs/errors/cs0060-7.cs b/mcs/errors/cs0060-7.cs
new file mode 100644
index 0000000..bf9f047
--- /dev/null
+++ b/mcs/errors/cs0060-7.cs
@@ -0,0 +1,10 @@
+// CS0060: Inconsistent accessibility: base class `Foo<Bar.Baz>' is less accessible than class `Bar'
+// Line: 7
+
+public class Foo<K> {
+}
+
+public class Bar : Foo<Bar.Baz> {
+	private class Baz {
+	}
+}
diff --git a/mcs/errors/gcs0060.cs b/mcs/errors/cs0060-8.cs
similarity index 100%
rename from mcs/errors/gcs0060.cs
rename to mcs/errors/cs0060-8.cs
diff --git a/mcs/errors/gcs0065.cs b/mcs/errors/cs0065-2.cs
similarity index 100%
rename from mcs/errors/gcs0065.cs
rename to mcs/errors/cs0065-2.cs
diff --git a/mcs/errors/gcs0069.cs b/mcs/errors/cs0069-2.cs
similarity index 100%
rename from mcs/errors/gcs0069.cs
rename to mcs/errors/cs0069-2.cs
diff --git a/mcs/errors/gcs0080.cs b/mcs/errors/cs0080.cs
similarity index 100%
rename from mcs/errors/gcs0080.cs
rename to mcs/errors/cs0080.cs
diff --git a/mcs/errors/gcs0081-2.cs b/mcs/errors/cs0081-2.cs
similarity index 100%
rename from mcs/errors/gcs0081-2.cs
rename to mcs/errors/cs0081-2.cs
diff --git a/mcs/errors/gcs0081-3.cs b/mcs/errors/cs0081-3.cs
similarity index 100%
rename from mcs/errors/gcs0081-3.cs
rename to mcs/errors/cs0081-3.cs
diff --git a/mcs/errors/gcs0081.cs b/mcs/errors/cs0081.cs
similarity index 100%
rename from mcs/errors/gcs0081.cs
rename to mcs/errors/cs0081.cs
diff --git a/mcs/errors/gcs0100.cs b/mcs/errors/cs0100-2.cs
similarity index 100%
rename from mcs/errors/gcs0100.cs
rename to mcs/errors/cs0100-2.cs
diff --git a/mcs/errors/gcs0102.cs b/mcs/errors/cs0102-18.cs
similarity index 100%
rename from mcs/errors/gcs0102.cs
rename to mcs/errors/cs0102-18.cs
diff --git a/mcs/errors/gcs0103-4.cs b/mcs/errors/cs0103-10.cs
similarity index 100%
rename from mcs/errors/gcs0103-4.cs
rename to mcs/errors/cs0103-10.cs
diff --git a/mcs/errors/cs0103-11.cs b/mcs/errors/cs0103-11.cs
new file mode 100644
index 0000000..6d20187
--- /dev/null
+++ b/mcs/errors/cs0103-11.cs
@@ -0,0 +1,16 @@
+// CS0103: The name `a1' does not exist in the current context
+// Line: 11
+
+using System.Linq;
+
+class C
+{
+	public static void Main ()
+	{
+		var e = 
+			from a1 in "abcd"
+			select a1;
+		
+		a1 = null;
+	}
+}
diff --git a/mcs/errors/cs0103-3.cs b/mcs/errors/cs0103-3.cs
new file mode 100644
index 0000000..dcdc24a
--- /dev/null
+++ b/mcs/errors/cs0103-3.cs
@@ -0,0 +1,19 @@
+// CS0103: The name `test' does not exist in the current context
+// Line: 11
+
+class ClassMain
+{
+	public static void Main ()
+	{
+		if (true) {
+			const bool test = false;
+		}
+		test = false;
+	}
+	
+	static bool Test { 
+		set {
+		}
+	}
+}
+
diff --git a/mcs/errors/cs0103-4.cs b/mcs/errors/cs0103-4.cs
index 54ec661..21ba335 100644
--- a/mcs/errors/cs0103-4.cs
+++ b/mcs/errors/cs0103-4.cs
@@ -1,6 +1,6 @@
 // CS0103: The name `de' does not exist in the current context
 // Line: 4
-
-[assembly: System.Reflection.AssemblyCulture(de)]
-public class Hello {
+
+[assembly: System.Reflection.AssemblyCulture(de)]
+public class Hello {
 }
diff --git a/mcs/errors/cs0103-6.cs b/mcs/errors/cs0103-6.cs
new file mode 100644
index 0000000..0c8df07
--- /dev/null
+++ b/mcs/errors/cs0103-6.cs
@@ -0,0 +1,12 @@
+// CS0103: The name `owner' does not exist in the current context
+// Line: 6
+
+class C
+{
+	public readonly object A = owner.Foo;
+
+	public C ()
+	{
+		int owner = 1;
+	}
+}
diff --git a/mcs/errors/gcs0103.cs b/mcs/errors/cs0103-7.cs
similarity index 100%
rename from mcs/errors/gcs0103.cs
rename to mcs/errors/cs0103-7.cs
diff --git a/mcs/errors/gcs0103-2.cs b/mcs/errors/cs0103-8.cs
similarity index 100%
rename from mcs/errors/gcs0103-2.cs
rename to mcs/errors/cs0103-8.cs
diff --git a/mcs/errors/gcs0103-3.cs b/mcs/errors/cs0103-9.cs
similarity index 100%
rename from mcs/errors/gcs0103-3.cs
rename to mcs/errors/cs0103-9.cs
diff --git a/mcs/errors/cs0106-8.cs b/mcs/errors/cs0106-8.cs
new file mode 100644
index 0000000..3bf2528
--- /dev/null
+++ b/mcs/errors/cs0106-8.cs
@@ -0,0 +1,7 @@
+// CS0106: The modifier `public' is not valid for this item
+// Line: 6
+
+interface S
+{
+	public void Foo ();
+}
diff --git a/mcs/errors/cs0108-15.cs b/mcs/errors/cs0108-15.cs
new file mode 100644
index 0000000..4584b10
--- /dev/null
+++ b/mcs/errors/cs0108-15.cs
@@ -0,0 +1,13 @@
+// CS0118: `B.Factory' hides inherited member `A.Factory(object)'. Use the new keyword if hiding was intended
+// Line: 12
+// Compiler options: -warnaserror -warn:2
+
+public abstract class A
+{
+	public void Factory (object data) { }
+}
+
+public class B : A
+{
+	public delegate void Factory (object data, object fail);
+}
diff --git a/mcs/errors/gcs0108.cs b/mcs/errors/cs0108-16.cs
similarity index 100%
rename from mcs/errors/gcs0108.cs
rename to mcs/errors/cs0108-16.cs
diff --git a/mcs/errors/cs0108-17.cs b/mcs/errors/cs0108-17.cs
new file mode 100644
index 0000000..345ba7f
--- /dev/null
+++ b/mcs/errors/cs0108-17.cs
@@ -0,0 +1,13 @@
+// CS0108: `Derived.Action<U>' hides inherited member `Base.Action<U>'. Use the new keyword if hiding was intended
+// Line: 12
+// Compiler options: -warnaserror
+
+public abstract class Base
+{
+	public delegate void Action<U> (U val);
+}
+
+public class Derived : Base
+{
+	public delegate void Action<U> (U i);
+}
diff --git a/mcs/errors/cs0109-10.cs b/mcs/errors/cs0109-10.cs
new file mode 100644
index 0000000..4cd7fea
--- /dev/null
+++ b/mcs/errors/cs0109-10.cs
@@ -0,0 +1,13 @@
+// CS0109: The member `Derived<U>.Action' does not hide an inherited member. The new keyword is not required
+// Line: 12
+// Compiler options: -warnaserror -warn:4
+
+public abstract class Base
+{
+	public delegate void Action<U>(U val);
+}
+
+public class Derived<U> : Base
+{
+	new internal Action<U> Action;
+}
diff --git a/mcs/errors/cs0109-9.cs b/mcs/errors/cs0109-9.cs
new file mode 100644
index 0000000..fef7758
--- /dev/null
+++ b/mcs/errors/cs0109-9.cs
@@ -0,0 +1,13 @@
+// CS0109: The member `Derived.Action<T,U>' does not hide an inherited member. The new keyword is not required
+// Line: 12
+// Compiler options: -warnaserror -warn:4
+
+public abstract class Base
+{
+	public delegate void Action<U> (U val);
+}
+
+public class Derived : Base
+{
+	public new delegate void Action<T, U> (U val);
+}
diff --git a/mcs/errors/gcs0111.cs b/mcs/errors/cs0111-21.cs
similarity index 100%
rename from mcs/errors/gcs0111.cs
rename to mcs/errors/cs0111-21.cs
diff --git a/mcs/errors/gcs0111-2.cs b/mcs/errors/cs0111-22.cs
similarity index 100%
rename from mcs/errors/gcs0111-2.cs
rename to mcs/errors/cs0111-22.cs
diff --git a/mcs/errors/gcs0111-3.cs b/mcs/errors/cs0111-23.cs
similarity index 100%
rename from mcs/errors/gcs0111-3.cs
rename to mcs/errors/cs0111-23.cs
diff --git a/mcs/errors/gcs0111-5.cs b/mcs/errors/cs0111-24.cs
old mode 100755
new mode 100644
similarity index 100%
rename from mcs/errors/gcs0111-5.cs
rename to mcs/errors/cs0111-24.cs
diff --git a/mcs/errors/gcs0111-6.cs b/mcs/errors/cs0111-25.cs
similarity index 100%
rename from mcs/errors/gcs0111-6.cs
rename to mcs/errors/cs0111-25.cs
diff --git a/mcs/errors/gcs0111-7.cs b/mcs/errors/cs0111-26.cs
similarity index 100%
rename from mcs/errors/gcs0111-7.cs
rename to mcs/errors/cs0111-26.cs
diff --git a/mcs/errors/gcs0111-4.cs b/mcs/errors/cs0111-4.cs
similarity index 100%
rename from mcs/errors/gcs0111-4.cs
rename to mcs/errors/cs0111-4.cs
diff --git a/mcs/errors/gcs0111-8.cs b/mcs/errors/cs0111-8.cs
similarity index 100%
rename from mcs/errors/gcs0111-8.cs
rename to mcs/errors/cs0111-8.cs
diff --git a/mcs/errors/cs0116.cs b/mcs/errors/cs0116.cs
deleted file mode 100644
index eaa7107..0000000
--- a/mcs/errors/cs0116.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-// cs0116.cs: A namespace can only contain types and namespace declarations
-// Line: 6
-
-namespace Bar
-{
-	float a;
-}
diff --git a/mcs/errors/gcs0117-2.cs b/mcs/errors/cs0117-2.cs
similarity index 100%
rename from mcs/errors/gcs0117-2.cs
rename to mcs/errors/cs0117-2.cs
diff --git a/mcs/errors/cs0117-6.cs b/mcs/errors/cs0117-6.cs
index 9a09d3c..07b8ea9 100644
--- a/mcs/errors/cs0117-6.cs
+++ b/mcs/errors/cs0117-6.cs
@@ -1,12 +1,12 @@
-// CS0117: `string' does not contain a definition for `Parse'
-// Line: 10
-
-using System;
-
-class string_parse
-{
-	public static void Main ()
-	{
-		string drawBackLabel = string.Parse("absDrawBack");
-	}
+// CS0117: `string' does not contain a definition for `Parse'
+// Line: 10
+
+using System;
+
+class string_parse
+{
+	public static void Main ()
+	{
+		string drawBackLabel = string.Parse("absDrawBack");
+	}
 }
\ No newline at end of file
diff --git a/mcs/errors/gcs0117.cs b/mcs/errors/cs0117.cs
similarity index 100%
rename from mcs/errors/gcs0117.cs
rename to mcs/errors/cs0117.cs
diff --git a/mcs/errors/gcs0118.cs b/mcs/errors/cs0118-10.cs
similarity index 100%
rename from mcs/errors/gcs0118.cs
rename to mcs/errors/cs0118-10.cs
diff --git a/mcs/errors/cs0119-11.cs b/mcs/errors/cs0119-11.cs
new file mode 100644
index 0000000..b65a34c
--- /dev/null
+++ b/mcs/errors/cs0119-11.cs
@@ -0,0 +1,17 @@
+// CS0119: Expression denotes a `type parameter', where a `variable', `value' or `type' was expected
+// Line: 15
+
+class A
+{
+	public class T
+	{
+	}
+}
+
+class B<T> : A
+{
+	void Foo ()
+	{
+		T.Equals (null, null);
+	}
+}
diff --git a/mcs/errors/gcs0119-2.cs b/mcs/errors/cs0119-2.cs
similarity index 100%
rename from mcs/errors/gcs0119-2.cs
rename to mcs/errors/cs0119-2.cs
diff --git a/mcs/errors/gcs0119.cs b/mcs/errors/cs0119.cs
old mode 100755
new mode 100644
similarity index 100%
rename from mcs/errors/gcs0119.cs
rename to mcs/errors/cs0119.cs
diff --git a/mcs/errors/cs0120-17.cs b/mcs/errors/cs0120-17.cs
new file mode 100644
index 0000000..ba7c19c
--- /dev/null
+++ b/mcs/errors/cs0120-17.cs
@@ -0,0 +1,23 @@
+// CS0120: An object reference is required to access non-static member `B.M()'
+// Line: 16
+
+using System;
+
+class A
+{
+	protected A (Action a)
+	{
+	}
+}
+
+class B : A
+{
+	public B ()
+		: base (M)
+	{
+	}
+	
+	void M ()
+	{
+	}
+}
diff --git a/mcs/errors/cs0121-10.cs b/mcs/errors/cs0121-10.cs
index 37fd024..c90bada 100644
--- a/mcs/errors/cs0121-10.cs
+++ b/mcs/errors/cs0121-10.cs
@@ -1,32 +1,32 @@
 // CS0121: The call is ambiguous between the following methods or properties: `IList.Count()' and `ICounter.Count()'
-// Line: 33
+// Line: 33
 
 using System;
 
-interface IList 
+interface IList 
 {
 	int Count ();
 }
 
-interface ICounter 
+interface ICounter 
 {
 	int Count ();
-}
-
-interface ICollection
-{
-	int Count { set; }
 }
 
-interface IListCounter: IList, ICounter, ICollection
-{
-}
-
-interface IListCounterNew : IListCounter
-{
+interface ICollection
+{
+	int Count { set; }
+}
+
+interface IListCounter: IList, ICounter, ICollection
+{
+}
+
+interface IListCounterNew : IListCounter
+{
 }
 
-class Test
+class Test
 {
 	static void Foo (IListCounterNew t)
 	{
diff --git a/mcs/errors/cs0121-13.cs b/mcs/errors/cs0121-13.cs
new file mode 100644
index 0000000..0d33c83
--- /dev/null
+++ b/mcs/errors/cs0121-13.cs
@@ -0,0 +1,19 @@
+// CS0121: The call is ambiguous between the following methods or properties: `C.Foo(int, long, params string[])' and `C.Foo(long, int, params string[])'
+// Line: 9
+
+class C
+{
+	public static void Main ()
+	{
+		var d = new C ();
+		d.Foo (b: 1, x: "", a : 2);
+	}
+
+	public void Foo (int a, long b, params string[] x)
+	{
+	}
+
+	public void Foo (long b, int a, params string[] x)
+	{
+	}
+}
diff --git a/mcs/errors/cs0121-14.cs b/mcs/errors/cs0121-14.cs
new file mode 100644
index 0000000..9578030
--- /dev/null
+++ b/mcs/errors/cs0121-14.cs
@@ -0,0 +1,19 @@
+// CS0121: The call is ambiguous between the following methods or properties: `C.Foo(int, params string[])' and `C.Foo(string[], int)'
+// Line: 9
+
+class C
+{
+	public static void Main ()
+	{
+		var d = new C ();
+		d.Foo (x: 1, y: new [] { "" });
+	}
+
+	public void Foo (int x, params string[] y)
+	{
+	}
+
+	public void Foo (string[] y, int x)
+	{
+	}
+}
diff --git a/mcs/errors/cs0121-15.cs b/mcs/errors/cs0121-15.cs
new file mode 100644
index 0000000..ccef7a6
--- /dev/null
+++ b/mcs/errors/cs0121-15.cs
@@ -0,0 +1,29 @@
+// CS0121: The call is ambiguous between the following methods or properties: `A.Foo(int, string)' and `A.Foo(string, int)'
+// Line: 27
+
+class A
+{
+	public virtual void Foo (int a2, string b2)
+	{
+	}
+	
+	public void Foo (string b, int a)
+	{
+	}
+}
+
+class B : A
+{
+	public override void Foo (int a, string b)
+	{
+	}
+}
+
+class C
+{
+	public static void Main ()
+	{
+		B b = new B ();
+		b.Foo (a: 1, b: "x");
+	}
+}
diff --git a/mcs/errors/gcs0121.cs b/mcs/errors/cs0121-16.cs
similarity index 100%
rename from mcs/errors/gcs0121.cs
rename to mcs/errors/cs0121-16.cs
diff --git a/mcs/errors/gcs0121-2.cs b/mcs/errors/cs0121-17.cs
similarity index 100%
rename from mcs/errors/gcs0121-2.cs
rename to mcs/errors/cs0121-17.cs
diff --git a/mcs/errors/gcs0121-3.cs b/mcs/errors/cs0121-18.cs
similarity index 100%
rename from mcs/errors/gcs0121-3.cs
rename to mcs/errors/cs0121-18.cs
diff --git a/mcs/errors/cs0121-19.cs b/mcs/errors/cs0121-19.cs
new file mode 100644
index 0000000..38ccfe9
--- /dev/null
+++ b/mcs/errors/cs0121-19.cs
@@ -0,0 +1,20 @@
+// CS0121: The call is ambiguous between the following methods or properties: `C.M(System.Func<byte,int>)' and `C.M(System.Action<int>)'
+// Line: 18
+
+using System;
+
+class C
+{
+	static void M (Func<byte,int> arg)
+	{
+	}
+	
+	static void M (Action<int> arg)
+	{
+	}
+
+	static void Main()
+	{
+		M(l => l.GetHashCode());
+	}
+}
diff --git a/mcs/errors/cs0121-9.cs b/mcs/errors/cs0121-9.cs
index 68303d3..a12700b 100644
--- a/mcs/errors/cs0121-9.cs
+++ b/mcs/errors/cs0121-9.cs
@@ -1,28 +1,28 @@
 // CS0121: The call is ambiguous between the following methods or properties: `IList.Count()' and `ICounter.Count()'
-// Line: 29
+// Line: 29
 
 using System;
 
-interface IList 
+interface IList 
 {
 	int Count ();
 }
 
-interface ICounter 
+interface ICounter 
 {
 	int Count ();
-}
-
-interface ICollection
-{
-	int Count { set; }
 }
 
-interface IListCounter: IList, ICounter, ICollection
-{
+interface ICollection
+{
+	int Count { set; }
+}
+
+interface IListCounter: IList, ICounter, ICollection
+{
 }
 
-class Test
+class Test
 {
 	static void Foo (IListCounter t)
 	{
diff --git a/mcs/errors/cs0122-32.cs b/mcs/errors/cs0122-32.cs
index cbe7826..4988ff1 100644
--- a/mcs/errors/cs0122-32.cs
+++ b/mcs/errors/cs0122-32.cs
@@ -1,25 +1,25 @@
-// CS0122: `A.Foo()' is inaccessible due to its protection level
-// Line: 23
-
-class A
-{
-	public void Foo (int i)
-	{
-	}
-
-	private void Foo ()
-	{
-	}
-}
-
-class B : A
-{
-	public static void Main ()
-	{
-	}
-
-	void Test ()
-	{
-		Foo ();
-	}
+// CS0122: `A.Foo()' is inaccessible due to its protection level
+// Line: 23
+
+class A
+{
+	public void Foo (int i)
+	{
+	}
+
+	private void Foo ()
+	{
+	}
+}
+
+class B : A
+{
+	public static void Main ()
+	{
+	}
+
+	void Test ()
+	{
+		Foo ();
+	}
 }
\ No newline at end of file
diff --git a/mcs/errors/gcs0122.cs b/mcs/errors/cs0122-34.cs
similarity index 100%
rename from mcs/errors/gcs0122.cs
rename to mcs/errors/cs0122-34.cs
diff --git a/mcs/errors/cs0122-35.cs b/mcs/errors/cs0122-35.cs
new file mode 100644
index 0000000..16a7d1c
--- /dev/null
+++ b/mcs/errors/cs0122-35.cs
@@ -0,0 +1,12 @@
+// CS0122: `Test<float>' is inaccessible due to its protection level
+// Line: 8
+// Compiler options: -r:GCS0122-35-lib.dll
+
+class X
+{
+	static void Main ()
+	{
+		Test<float> test = new Test<float> ();
+	}
+}
+
diff --git a/mcs/errors/cs0133-2.cs b/mcs/errors/cs0133-2.cs
index 7b438bb..b7a3718 100644
--- a/mcs/errors/cs0133-2.cs
+++ b/mcs/errors/cs0133-2.cs
@@ -1,12 +1,12 @@
-// CS0133: The expression being assigned to `c' must be constant
-// Line: 10
-
-class C
-{
-	void Foo ()
-	{
-		int[] array;
-		int idx;
-		const int c = array [idx];
-	}
-}
+// CS0133: The expression being assigned to `c' must be constant
+// Line: 10
+
+class C
+{
+	void Foo ()
+	{
+		int[] array;
+		int idx;
+		const int c = array [idx];
+	}
+}
diff --git a/mcs/errors/gcs0133-2.cs b/mcs/errors/cs0133-4.cs
similarity index 100%
rename from mcs/errors/gcs0133-2.cs
rename to mcs/errors/cs0133-4.cs
diff --git a/mcs/errors/cs0135-4.cs b/mcs/errors/cs0135-4.cs
new file mode 100644
index 0000000..62e6e62
--- /dev/null
+++ b/mcs/errors/cs0135-4.cs
@@ -0,0 +1,16 @@
+// CS0135: `test' conflicts with a declaration in a child block
+// Line: 13
+
+class ClassMain
+{
+	static bool test = true;
+
+	public static void Main ()
+	{
+		if (true) {
+			const bool test = false;
+		}
+		test = false;
+	}
+}
+
diff --git a/mcs/errors/cs0135-5.cs b/mcs/errors/cs0135-5.cs
new file mode 100644
index 0000000..8e75a88
--- /dev/null
+++ b/mcs/errors/cs0135-5.cs
@@ -0,0 +1,22 @@
+// CS0135: `bar' conflicts with a declaration in a child block
+// Line: 13
+
+public class Foo
+{
+	public static class Nested
+	{
+		static int bar ()
+		{
+			return 0;
+		}
+		
+		public static void Bar ()
+		{
+			var i = bar ();
+			{
+				bool bar = false;
+			}
+		} 
+	}
+}
+
diff --git a/mcs/errors/cs0135-6.cs b/mcs/errors/cs0135-6.cs
new file mode 100644
index 0000000..fd4a007
--- /dev/null
+++ b/mcs/errors/cs0135-6.cs
@@ -0,0 +1,23 @@
+// CS0135: `bar' conflicts with a declaration in a child block
+// Line: 13
+
+public class Foo
+{
+	public static class Nested
+	{
+		class bar
+		{
+			public static int value;
+		}
+		
+		public static void Bar ()
+		{
+			{
+				bool bar = false;
+			}
+			
+			var i = bar.value;
+		} 
+	}
+}
+
diff --git a/mcs/errors/gcs0136-2.cs b/mcs/errors/cs0136-16.cs
similarity index 100%
rename from mcs/errors/gcs0136-2.cs
rename to mcs/errors/cs0136-16.cs
diff --git a/mcs/errors/gcs0136.cs b/mcs/errors/cs0136-17.cs
similarity index 100%
rename from mcs/errors/gcs0136.cs
rename to mcs/errors/cs0136-17.cs
diff --git a/mcs/errors/gcs0136-3.cs b/mcs/errors/cs0136-3.cs
similarity index 100%
rename from mcs/errors/gcs0136-3.cs
rename to mcs/errors/cs0136-3.cs
diff --git a/mcs/errors/cs0136-6.cs b/mcs/errors/cs0136-6.cs
deleted file mode 100644
index e34cd4a..0000000
--- a/mcs/errors/cs0136-6.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-// cs0136-6.cs: A local variable named `top' cannot be declared in this scope because it would give a different meaning to `top', which is already used in a `parent or current' scope to denote something else
-// Line: 19
-
-using System.Collections;
-
-class Symbol
-{
-}
-
-class X
-{
-		Symbol top;
-	
-		internal int Enter (Symbol key, object value)
-		{
- 			if (key != null) {
-				top = key;					
-			}
-			Hashtable top = new Hashtable ();
-			return top.Count;
-		}
-		
-		public static void Main () {}
-}
diff --git a/mcs/errors/cs0136.cs b/mcs/errors/cs0136.cs
index 9664a32..ea82bdc 100644
--- a/mcs/errors/cs0136.cs
+++ b/mcs/errors/cs0136.cs
@@ -1,5 +1,6 @@
-// cs0136.cs: A local variable named `i' cannot be declared in this scope because it would give a different meaning to `i', which is already used in a `parent' scope to denote something else
-// Line: 8
+// CS0136: A local variable named `i' cannot be declared in this scope because it would give a different meaning to `i', which is already used in a `parent or current' scope to denote something else
+// Line: 9
+
 class X {
 	void b ()
 	{
diff --git a/mcs/errors/cs0143.cs b/mcs/errors/cs0143.cs
index 7f03c6b..5886f3b 100644
--- a/mcs/errors/cs0143.cs
+++ b/mcs/errors/cs0143.cs
@@ -1,11 +1,11 @@
-// CS0143: The class `A' has no constructors defined
-// Line: 9
-// Compiler options: -r:CS0143-lib.dll
-
-public class Test
-{
-	public static void Main ()
-	{
-		new A ();
-	}
-}
+// CS0143: The class `A' has no constructors defined
+// Line: 9
+// Compiler options: -r:CS0143-lib.dll
+
+public class Test
+{
+	public static void Main ()
+	{
+		new A ();
+	}
+}
diff --git a/mcs/errors/cs0144-3.cs b/mcs/errors/cs0144-3.cs
index 0f1adba..908f62c 100644
--- a/mcs/errors/cs0144-3.cs
+++ b/mcs/errors/cs0144-3.cs
@@ -1,11 +1,11 @@
 // cs0144-3.cs: Cannot create an instance of the abstract class or interface `ITest'
-// Line: 9
-// Compiler options: -r:CS0144-3-lib.dll
-
-public class SampleClass {
-		public void Main ()
-		{
-			ITest modelo;
-			modelo= new ITest ();
+// Line: 9
+// Compiler options: -r:CS0144-3-lib.dll
+
+public class SampleClass {
+		public void Main ()
+		{
+			ITest modelo;
+			modelo= new ITest ();
 		}
 }
\ No newline at end of file
diff --git a/mcs/errors/gcs0146.cs b/mcs/errors/cs0146-6.cs
similarity index 100%
rename from mcs/errors/gcs0146.cs
rename to mcs/errors/cs0146-6.cs
diff --git a/mcs/errors/cs0154-3.cs b/mcs/errors/cs0154-3.cs
index 870059f..855be81 100644
--- a/mcs/errors/cs0154-3.cs
+++ b/mcs/errors/cs0154-3.cs
@@ -1,15 +1,15 @@
-// CS0154: The property or indexer `Test.this[bool]' cannot be used in this context because it lacks the `get' accessor
-// Line: 13
-
-class Test
-{
-	public int this[bool b] { set {} }
-}
-
-class C
-{
-	public static void Main ()
-	{
-		int i = new Test()[false];
-	}
+// CS0154: The property or indexer `Test.this[bool]' cannot be used in this context because it lacks the `get' accessor
+// Line: 13
+
+class Test
+{
+	public int this[bool b] { set {} }
+}
+
+class C
+{
+	public static void Main ()
+	{
+		int i = new Test()[false];
+	}
 }
diff --git a/mcs/errors/cs0158-6.cs b/mcs/errors/cs0158-6.cs
new file mode 100644
index 0000000..6fc139a
--- /dev/null
+++ b/mcs/errors/cs0158-6.cs
@@ -0,0 +1,17 @@
+// CS0158: The label `a' shadows another label by the same name in a contained scope
+// Line: 11
+
+class Foo
+{
+	static void Main ()
+	{
+		int i = 1;
+		goto a;
+		if (i == 9) {
+			a:
+			return;
+		}
+a:
+		return;
+	}
+}
diff --git a/mcs/errors/cs0159-8.cs b/mcs/errors/cs0159-8.cs
new file mode 100644
index 0000000..3d02ac4
--- /dev/null
+++ b/mcs/errors/cs0159-8.cs
@@ -0,0 +1,17 @@
+// CS0159: The label `a:' could not be found within the scope of the goto statement
+// Line: 9
+
+public class A
+{
+	public static void Main ()
+	{
+		int i = 9;
+		goto a;
+		switch (i) {
+		case 9:
+		a:
+			break;
+		}
+	}
+}
+
diff --git a/mcs/errors/gcs0162-2.cs b/mcs/errors/cs0162-13.cs
old mode 100755
new mode 100644
similarity index 100%
rename from mcs/errors/gcs0162-2.cs
rename to mcs/errors/cs0162-13.cs
diff --git a/mcs/errors/gcs0162.cs b/mcs/errors/cs0162-14.cs
similarity index 100%
rename from mcs/errors/gcs0162.cs
rename to mcs/errors/cs0162-14.cs
diff --git a/mcs/errors/cs0169-2.cs b/mcs/errors/cs0169-2.cs
new file mode 100644
index 0000000..7ad3b44
--- /dev/null
+++ b/mcs/errors/cs0169-2.cs
@@ -0,0 +1,11 @@
+// CS0169: The private field `Foo.Bar.a' is never used
+// Line: 9
+// Compiler options: -warnaserror -warn:4
+
+class Foo
+{
+	class Bar
+	{
+		int a;
+	}
+}
diff --git a/mcs/errors/cs0169.cs b/mcs/errors/cs0169.cs
index e7f2b00..62d41a6 100644
--- a/mcs/errors/cs0169.cs
+++ b/mcs/errors/cs0169.cs
@@ -1,4 +1,4 @@
-// cs0169.cs: The private field `X.x' is never used
+// CS0169: The private field `X.x' is never used
 // Line: 4
 // Compiler options: -warnaserror -warn:4
 
diff --git a/mcs/errors/gcs0171.cs b/mcs/errors/cs0171-4.cs
similarity index 100%
rename from mcs/errors/gcs0171.cs
rename to mcs/errors/cs0171-4.cs
diff --git a/mcs/errors/gcs0173.cs b/mcs/errors/cs0173-3.cs
similarity index 100%
rename from mcs/errors/gcs0173.cs
rename to mcs/errors/cs0173-3.cs
diff --git a/mcs/errors/cs0173-4.cs b/mcs/errors/cs0173-4.cs
index c0b7b58..df1408f 100644
--- a/mcs/errors/cs0173-4.cs
+++ b/mcs/errors/cs0173-4.cs
@@ -1,10 +1,10 @@
 // CS0173: Type of conditional expression cannot be determined because there is no implicit conversion between `null' and `null'
-// Line: 8
+// Line: 8
 
-class X
-{
-	static void Main (string[] args)
-	{
-		bool b = args.Length > 0 ? null : null;
-	}
-}
+class X
+{
+	static void Main (string[] args)
+	{
+		bool b = args.Length > 0 ? null : null;
+	}
+}
diff --git a/mcs/errors/gcs0177.cs b/mcs/errors/cs0177-9.cs
old mode 100755
new mode 100644
similarity index 100%
rename from mcs/errors/gcs0177.cs
rename to mcs/errors/cs0177-9.cs
diff --git a/mcs/errors/cs0182-12.cs b/mcs/errors/cs0182-12.cs
new file mode 100644
index 0000000..2827f63
--- /dev/null
+++ b/mcs/errors/cs0182-12.cs
@@ -0,0 +1,21 @@
+// CS0182: An attribute argument must be a constant expression, typeof expression or array creation expression
+// Line: 18
+
+using System;
+
+enum E
+{ 
+	Value
+}
+
+class AAttribute : Attribute
+{ 
+	public AAttribute (Enum e)
+	{
+	}
+}
+
+[A (E.Value)]
+class Test
+{
+}
\ No newline at end of file
diff --git a/mcs/errors/gcs0183.cs b/mcs/errors/cs0183-3.cs
similarity index 100%
rename from mcs/errors/gcs0183.cs
rename to mcs/errors/cs0183-3.cs
diff --git a/mcs/errors/gcs0183-2.cs b/mcs/errors/cs0183-4.cs
similarity index 100%
rename from mcs/errors/gcs0183-2.cs
rename to mcs/errors/cs0183-4.cs
diff --git a/mcs/errors/gcs0184-3.cs b/mcs/errors/cs0184-10.cs
similarity index 100%
rename from mcs/errors/gcs0184-3.cs
rename to mcs/errors/cs0184-10.cs
diff --git a/mcs/errors/gcs0184-4.cs b/mcs/errors/cs0184-11.cs
similarity index 100%
rename from mcs/errors/gcs0184-4.cs
rename to mcs/errors/cs0184-11.cs
diff --git a/mcs/errors/cs0184-7.cs b/mcs/errors/cs0184-7.cs
new file mode 100644
index 0000000..36e144e
--- /dev/null
+++ b/mcs/errors/cs0184-7.cs
@@ -0,0 +1,15 @@
+// CS0184: The given expression is never of the provided (`object') type
+// Line: 13
+// Compiler options: -warnaserror -warn:1
+
+public class Test
+{
+	static void Foo ()
+	{
+	}
+	
+	public static void Main()
+	{
+		bool b = Foo () is object;
+	}
+}
diff --git a/mcs/errors/gcs0184.cs b/mcs/errors/cs0184-8.cs
similarity index 100%
rename from mcs/errors/gcs0184.cs
rename to mcs/errors/cs0184-8.cs
diff --git a/mcs/errors/gcs0184-2.cs b/mcs/errors/cs0184-9.cs
similarity index 100%
rename from mcs/errors/gcs0184-2.cs
rename to mcs/errors/cs0184-9.cs
diff --git a/mcs/errors/cs0188-6.cs b/mcs/errors/cs0188-6.cs
new file mode 100644
index 0000000..283c73c
--- /dev/null
+++ b/mcs/errors/cs0188-6.cs
@@ -0,0 +1,17 @@
+// CS0188: The `this' object cannot be used before all of its fields are assigned to
+// Line: 10
+
+struct B
+{
+	public int a;
+
+	public B (int foo)
+	{
+		Test (this);
+		a = 1;
+	}
+
+	static void Test (B b)
+	{
+	}
+}
\ No newline at end of file
diff --git a/mcs/errors/cs0188-7.cs b/mcs/errors/cs0188-7.cs
new file mode 100644
index 0000000..792649b
--- /dev/null
+++ b/mcs/errors/cs0188-7.cs
@@ -0,0 +1,18 @@
+// CS0188: The `this' object cannot be used before all of its fields are assigned to
+// Line: 10
+
+public struct Test
+{
+	private int x;
+
+	public Test (int x)
+	{
+		X = x;
+	}
+
+	public int X
+	{
+		get { return x; }
+		set { x = value; }
+	}
+}
diff --git a/mcs/errors/cs0188-8.cs b/mcs/errors/cs0188-8.cs
new file mode 100644
index 0000000..d5e6179
--- /dev/null
+++ b/mcs/errors/cs0188-8.cs
@@ -0,0 +1,14 @@
+// CS0188: The `this' object cannot be used before all of its fields are assigned to
+// Line: 8
+
+struct Sample
+{
+	public Sample (int arg)
+	{
+		text = this.Prop;
+	}
+	
+	int Prop { get { return 1; } }
+
+	int text;
+}
\ No newline at end of file
diff --git a/mcs/errors/cs0188-9.cs b/mcs/errors/cs0188-9.cs
new file mode 100644
index 0000000..62edf23
--- /dev/null
+++ b/mcs/errors/cs0188-9.cs
@@ -0,0 +1,16 @@
+// CS0188: The `this' object cannot be used before all of its fields are assigned to
+// Line: 11
+
+using System;
+
+public struct S
+{
+	public int A { get; private set;}
+	event EventHandler eh;
+
+	public S (int a)
+	{
+		this.eh = null;
+		A = a;
+	}
+}
diff --git a/mcs/errors/cs0190-2.cs b/mcs/errors/cs0190-2.cs
new file mode 100644
index 0000000..ca9733d
--- /dev/null
+++ b/mcs/errors/cs0190-2.cs
@@ -0,0 +1,22 @@
+// CS0190: The __arglist construct is valid only within a variable argument method
+// Line: 11
+
+public class Test
+{
+	public static void Foo (__arglist)
+	{
+		System.RuntimeArgumentHandle o;
+		{
+			System.Action a = delegate () {
+				o = __arglist; 
+			};
+			
+			a ();
+		}
+	}
+	
+	public static void Main ()
+	{
+		Foo (__arglist ());
+	}
+}
\ No newline at end of file
diff --git a/mcs/errors/gcs0200.cs b/mcs/errors/cs0200-3.cs
similarity index 100%
rename from mcs/errors/gcs0200.cs
rename to mcs/errors/cs0200-3.cs
diff --git a/mcs/errors/gcs0201.cs b/mcs/errors/cs0201-5.cs
similarity index 100%
rename from mcs/errors/gcs0201.cs
rename to mcs/errors/cs0201-5.cs
diff --git a/mcs/errors/gcs0201-2.cs b/mcs/errors/cs0201-6.cs
old mode 100755
new mode 100644
similarity index 100%
rename from mcs/errors/gcs0201-2.cs
rename to mcs/errors/cs0201-6.cs
diff --git a/mcs/errors/gcs0202.cs b/mcs/errors/cs0202-2.cs
similarity index 100%
rename from mcs/errors/gcs0202.cs
rename to mcs/errors/cs0202-2.cs
diff --git a/mcs/errors/gcs0206.cs b/mcs/errors/cs0206-3.cs
similarity index 100%
rename from mcs/errors/gcs0206.cs
rename to mcs/errors/cs0206-3.cs
diff --git a/mcs/errors/gcs0208.cs b/mcs/errors/cs0208-10.cs
similarity index 100%
rename from mcs/errors/gcs0208.cs
rename to mcs/errors/cs0208-10.cs
diff --git a/mcs/errors/gcs0208-2.cs b/mcs/errors/cs0208-11.cs
similarity index 100%
rename from mcs/errors/gcs0208-2.cs
rename to mcs/errors/cs0208-11.cs
diff --git a/mcs/errors/gcs0208-3.cs b/mcs/errors/cs0208-12.cs
similarity index 100%
rename from mcs/errors/gcs0208-3.cs
rename to mcs/errors/cs0208-12.cs
diff --git a/mcs/errors/gcs0208-4.cs b/mcs/errors/cs0208-13.cs
similarity index 100%
rename from mcs/errors/gcs0208-4.cs
rename to mcs/errors/cs0208-13.cs
diff --git a/mcs/errors/gcs0208-5.cs b/mcs/errors/cs0208-14.cs
similarity index 100%
rename from mcs/errors/gcs0208-5.cs
rename to mcs/errors/cs0208-14.cs
diff --git a/mcs/errors/gcs0214.cs b/mcs/errors/cs0214-15.cs
similarity index 100%
rename from mcs/errors/gcs0214.cs
rename to mcs/errors/cs0214-15.cs
diff --git a/mcs/errors/cs0214-6.cs b/mcs/errors/cs0214-6.cs
deleted file mode 100644
index 28339df..0000000
--- a/mcs/errors/cs0214-6.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-// cs0214-6.cs: Pointers and fixed size buffers may only be used in an unsafe context
-// Line: 12
-
-using System;
-
-namespace ConsoleApplication1
-{
-	class Class1
-	{
-		static void Main(string[] args)
-		{
-			string s = typeof(void *).Name;
-		}
-	}
-}
-
-
-
-
-
-
diff --git a/mcs/errors/cs0219-4.cs b/mcs/errors/cs0219-4.cs
new file mode 100644
index 0000000..3bfca01
--- /dev/null
+++ b/mcs/errors/cs0219-4.cs
@@ -0,0 +1,16 @@
+// CS0219: The variable `e' is assigned but its value is never used
+// Line: 12
+// Compiler options: -warn:3 -warnaserror
+
+using System;
+public class ConsoleStub
+{
+	public static void Main()
+	{
+		try {
+		} catch (Exception e) {
+			e = null;
+		}
+	}
+}
+
diff --git a/mcs/errors/cs0221-10.cs b/mcs/errors/cs0221-10.cs
index 241c367..0b8774a 100644
--- a/mcs/errors/cs0221-10.cs
+++ b/mcs/errors/cs0221-10.cs
@@ -1,12 +1,12 @@
 // cs0221: Constant value `-200' cannot be converted to a `byte' (use `unchecked' syntax to override)
 // Line: 6
-
-enum AA : byte { a, b = 200 }
-
-public class C
-{
-	public static void Main ()
-	{
-		const int b = AA.a - AA.b;
-	}
+
+enum AA : byte { a, b = 200 }
+
+public class C
+{
+	public static void Main ()
+	{
+		const int b = AA.a - AA.b;
+	}
 }
diff --git a/mcs/errors/cs0221-5.cs b/mcs/errors/cs0221-5.cs
index d30b25f..470936d 100644
--- a/mcs/errors/cs0221-5.cs
+++ b/mcs/errors/cs0221-5.cs
@@ -1,12 +1,12 @@
 // cs0221.cs: Constant value `-1' cannot be converted to a `byte' (use `unchecked' syntax to override)
 // Line: 11
-
-using System;
 
-public class My3Attribute : Attribute
-{
-	public My3Attribute (byte b) {}
-}
-
-[My3((byte)-1)]
+using System;
+
+public class My3Attribute : Attribute
+{
+	public My3Attribute (byte b) {}
+}
+
+[My3((byte)-1)]
 public class Test { }
\ No newline at end of file
diff --git a/mcs/errors/cs0221-6.cs b/mcs/errors/cs0221-6.cs
index fe89c22..ef39415 100644
--- a/mcs/errors/cs0221-6.cs
+++ b/mcs/errors/cs0221-6.cs
@@ -2,7 +2,7 @@
 // Line: 6
 
 class X {
-	static void Main () {
-		System.Console.WriteLine ((int)double.NaN);
+	static void Main () {
+		System.Console.WriteLine ((int)double.NaN);
 	}
 }
diff --git a/mcs/errors/cs0221-7.cs b/mcs/errors/cs0221-7.cs
index a061e60..3a63da6 100644
--- a/mcs/errors/cs0221-7.cs
+++ b/mcs/errors/cs0221-7.cs
@@ -2,7 +2,7 @@
 // Line: 6
 
 class X {
-	static void Main () {
-		System.Console.WriteLine ((ushort)double.NegativeInfinity);
+	static void Main () {
+		System.Console.WriteLine ((ushort)double.NegativeInfinity);
 	}
 }
diff --git a/mcs/errors/cs0221-8.cs b/mcs/errors/cs0221-8.cs
index 60f6bc9..f64141c 100644
--- a/mcs/errors/cs0221-8.cs
+++ b/mcs/errors/cs0221-8.cs
@@ -2,7 +2,7 @@
 // Line: 6
 
 class X {
-	static void Main () {
-		System.Console.WriteLine ((uint)double.PositiveInfinity);
+	static void Main () {
+		System.Console.WriteLine ((uint)double.PositiveInfinity);
 	}
 }
diff --git a/mcs/errors/cs0221-9.cs b/mcs/errors/cs0221-9.cs
index 91139cb..959877e 100644
--- a/mcs/errors/cs0221-9.cs
+++ b/mcs/errors/cs0221-9.cs
@@ -2,8 +2,8 @@
 // Line: 6
 
 class X {
-	static void Main () {
-		const float d = float.MaxValue;
-		ulong b = (ulong) d;
+	static void Main () {
+		const float d = float.MaxValue;
+		ulong b = (ulong) d;
 	}
 }
diff --git a/mcs/errors/cs0236-2.cs b/mcs/errors/cs0236-2.cs
index 0174591..c109d1b 100644
--- a/mcs/errors/cs0236-2.cs
+++ b/mcs/errors/cs0236-2.cs
@@ -1,8 +1,8 @@
 // cs0236-2.cs: A field initializer cannot reference the nonstatic field, method, or property `C1.CC'
-// Line: 11
-
+// Line: 11
+
 class C1
-{
+{
     public double CC = 0;
 }
 
diff --git a/mcs/errors/cs0236-4.cs b/mcs/errors/cs0236-4.cs
new file mode 100644
index 0000000..a28152e
--- /dev/null
+++ b/mcs/errors/cs0236-4.cs
@@ -0,0 +1,11 @@
+// CS0236: A field initializer cannot reference the nonstatic field, method, or property `C.stuff'
+// Line: 6
+
+class C
+{
+	object stuff = stuff;
+	
+	public C (object stuff)
+	{
+	}
+}
diff --git a/mcs/errors/gcs0246-3.cs b/mcs/errors/cs0246-23.cs
similarity index 100%
rename from mcs/errors/gcs0246-3.cs
rename to mcs/errors/cs0246-23.cs
diff --git a/mcs/errors/gcs0246-4.cs b/mcs/errors/cs0246-24.cs
similarity index 100%
rename from mcs/errors/gcs0246-4.cs
rename to mcs/errors/cs0246-24.cs
diff --git a/mcs/errors/gcs0246-5.cs b/mcs/errors/cs0246-25.cs
similarity index 100%
rename from mcs/errors/gcs0246-5.cs
rename to mcs/errors/cs0246-25.cs
diff --git a/mcs/errors/gcs0246-6.cs b/mcs/errors/cs0246-26.cs
similarity index 100%
rename from mcs/errors/gcs0246-6.cs
rename to mcs/errors/cs0246-26.cs
diff --git a/mcs/errors/gcs0246.cs b/mcs/errors/cs0246-27.cs
similarity index 100%
rename from mcs/errors/gcs0246.cs
rename to mcs/errors/cs0246-27.cs
diff --git a/mcs/errors/gcs0246-8.cs b/mcs/errors/cs0246-28.cs
similarity index 100%
rename from mcs/errors/gcs0246-8.cs
rename to mcs/errors/cs0246-28.cs
diff --git a/mcs/errors/gcs0264-2.cs b/mcs/errors/cs0264-2.cs
similarity index 100%
rename from mcs/errors/gcs0264-2.cs
rename to mcs/errors/cs0264-2.cs
diff --git a/mcs/errors/gcs0264.cs b/mcs/errors/cs0264.cs
similarity index 100%
rename from mcs/errors/gcs0264.cs
rename to mcs/errors/cs0264.cs
diff --git a/mcs/errors/gcs0265.cs b/mcs/errors/cs0265.cs
similarity index 100%
rename from mcs/errors/gcs0265.cs
rename to mcs/errors/cs0265.cs
diff --git a/mcs/errors/gcs0266-2.cs b/mcs/errors/cs0266-20.cs
similarity index 100%
rename from mcs/errors/gcs0266-2.cs
rename to mcs/errors/cs0266-20.cs
diff --git a/mcs/errors/cs0266-21.cs b/mcs/errors/cs0266-21.cs
new file mode 100644
index 0000000..d1bda2e
--- /dev/null
+++ b/mcs/errors/cs0266-21.cs
@@ -0,0 +1,18 @@
+// CS0266: Cannot implicitly convert type `I' to `C'. An explicit conversion exists (are you missing a cast?)
+// Line: 16
+
+interface I
+{
+}
+
+struct C : I
+{
+}
+
+class X
+{
+	static void Main (string[] args)
+	{
+		C c = default (I);
+	}
+}
diff --git a/mcs/errors/gcs0266-3.cs b/mcs/errors/cs0266-22.cs
similarity index 100%
rename from mcs/errors/gcs0266-3.cs
rename to mcs/errors/cs0266-22.cs
diff --git a/mcs/errors/gcs0266-4.cs b/mcs/errors/cs0266-23.cs
similarity index 100%
rename from mcs/errors/gcs0266-4.cs
rename to mcs/errors/cs0266-23.cs
diff --git a/mcs/errors/gcs0266-6.cs b/mcs/errors/cs0266-24.cs
similarity index 100%
rename from mcs/errors/gcs0266-6.cs
rename to mcs/errors/cs0266-24.cs
diff --git a/mcs/errors/gcs0266-5.cs b/mcs/errors/cs0266-5.cs
similarity index 100%
rename from mcs/errors/gcs0266-5.cs
rename to mcs/errors/cs0266-5.cs
diff --git a/mcs/errors/cs0266-9.cs b/mcs/errors/cs0266-9.cs
index 34addea..0e53380 100644
--- a/mcs/errors/cs0266-9.cs
+++ b/mcs/errors/cs0266-9.cs
@@ -1,10 +1,10 @@
-// CS0266: Cannot implicitly convert type `E2' to `E1'. An explicit conversion exists (are you missing a cast?)
-// Line : 8
-
-enum E1 { A }
-enum E2 { A }
-
-class X {
-    const E1 e = ~E2.A;
-}
-
+// CS0266: Cannot implicitly convert type `E2' to `E1'. An explicit conversion exists (are you missing a cast?)
+// Line : 8
+
+enum E1 { A }
+enum E2 { A }
+
+class X {
+    const E1 e = ~E2.A;
+}
+
diff --git a/mcs/errors/gcs0267.cs b/mcs/errors/cs0267-3.cs
similarity index 100%
rename from mcs/errors/gcs0267.cs
rename to mcs/errors/cs0267-3.cs
diff --git a/mcs/errors/gcs0271.cs b/mcs/errors/cs0271-2.cs
similarity index 100%
rename from mcs/errors/gcs0271.cs
rename to mcs/errors/cs0271-2.cs
diff --git a/mcs/errors/gcs0272.cs b/mcs/errors/cs0272-3.cs
similarity index 100%
rename from mcs/errors/gcs0272.cs
rename to mcs/errors/cs0272-3.cs
diff --git a/mcs/errors/cs0281.cs b/mcs/errors/cs0281.cs
new file mode 100644
index 0000000..494833f
--- /dev/null
+++ b/mcs/errors/cs0281.cs
@@ -0,0 +1,14 @@
+// CS0281: Friend access was granted to `cs0281, PublicKeyToken=27576a8182a18822', but the output assembly is named `cs0281, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'. Try adding a reference to `cs0281, PublicKeyToken=27576a8182a18822' or change the output assembly name to match it
+// Line: 0
+// Compiler options: -r:CSFriendAssembly-lib.dll
+
+using System;
+
+public class Test
+{
+	static void Main ()
+	{
+		FriendClass.MyMethod ();
+	}
+}
+
diff --git a/mcs/errors/gcs0304.cs b/mcs/errors/cs0304.cs
similarity index 100%
rename from mcs/errors/gcs0304.cs
rename to mcs/errors/cs0304.cs
diff --git a/mcs/errors/gcs0305-2.cs b/mcs/errors/cs0305-2.cs
similarity index 100%
rename from mcs/errors/gcs0305-2.cs
rename to mcs/errors/cs0305-2.cs
diff --git a/mcs/errors/gcs0305-3.cs b/mcs/errors/cs0305-3.cs
similarity index 100%
rename from mcs/errors/gcs0305-3.cs
rename to mcs/errors/cs0305-3.cs
diff --git a/mcs/errors/gcs0305-4.cs b/mcs/errors/cs0305-4.cs
similarity index 100%
rename from mcs/errors/gcs0305-4.cs
rename to mcs/errors/cs0305-4.cs
diff --git a/mcs/errors/gcs0305-5.cs b/mcs/errors/cs0305-5.cs
similarity index 100%
rename from mcs/errors/gcs0305-5.cs
rename to mcs/errors/cs0305-5.cs
diff --git a/mcs/errors/gcs0305-6.cs b/mcs/errors/cs0305-6.cs
similarity index 100%
rename from mcs/errors/gcs0305-6.cs
rename to mcs/errors/cs0305-6.cs
diff --git a/mcs/errors/gcs0305-7.cs b/mcs/errors/cs0305-7.cs
similarity index 100%
rename from mcs/errors/gcs0305-7.cs
rename to mcs/errors/cs0305-7.cs
diff --git a/mcs/errors/gcs0305.cs b/mcs/errors/cs0305.cs
similarity index 100%
rename from mcs/errors/gcs0305.cs
rename to mcs/errors/cs0305.cs
diff --git a/mcs/errors/gcs0306-2.cs b/mcs/errors/cs0306-2.cs
similarity index 100%
rename from mcs/errors/gcs0306-2.cs
rename to mcs/errors/cs0306-2.cs
diff --git a/mcs/errors/gcs0306-3.cs b/mcs/errors/cs0306-3.cs
old mode 100755
new mode 100644
similarity index 100%
rename from mcs/errors/gcs0306-3.cs
rename to mcs/errors/cs0306-3.cs
diff --git a/mcs/errors/gcs0306.cs b/mcs/errors/cs0306.cs
similarity index 100%
rename from mcs/errors/gcs0306.cs
rename to mcs/errors/cs0306.cs
diff --git a/mcs/errors/gcs0307-2.cs b/mcs/errors/cs0307-2.cs
similarity index 100%
rename from mcs/errors/gcs0307-2.cs
rename to mcs/errors/cs0307-2.cs
diff --git a/mcs/errors/gcs0307-3.cs b/mcs/errors/cs0307-3.cs
similarity index 100%
rename from mcs/errors/gcs0307-3.cs
rename to mcs/errors/cs0307-3.cs
diff --git a/mcs/errors/gcs0307-4.cs b/mcs/errors/cs0307-4.cs
similarity index 100%
rename from mcs/errors/gcs0307-4.cs
rename to mcs/errors/cs0307-4.cs
diff --git a/mcs/errors/cs0307-5.cs b/mcs/errors/cs0307-5.cs
new file mode 100644
index 0000000..6fa38ba
--- /dev/null
+++ b/mcs/errors/cs0307-5.cs
@@ -0,0 +1,18 @@
+// CS0307: The property `Test<T,U>.Value' cannot be used with type arguments
+// Line: 16
+
+class Test<T, U>
+{
+	public object Value {
+		get { return null; }
+	}
+
+	public class B
+	{
+		public B (object arg)
+		{
+		}
+		
+		public static B Default = new B (Value<U>.Default);
+	}
+}
diff --git a/mcs/errors/gcs0307-6.cs b/mcs/errors/cs0307-6.cs
similarity index 100%
rename from mcs/errors/gcs0307-6.cs
rename to mcs/errors/cs0307-6.cs
diff --git a/mcs/errors/gcs0307.cs b/mcs/errors/cs0307.cs
similarity index 100%
rename from mcs/errors/gcs0307.cs
rename to mcs/errors/cs0307.cs
diff --git a/mcs/errors/gcs0308-2.cs b/mcs/errors/cs0308-2.cs
similarity index 100%
rename from mcs/errors/gcs0308-2.cs
rename to mcs/errors/cs0308-2.cs
diff --git a/mcs/errors/gcs0308-3.cs b/mcs/errors/cs0308-3.cs
similarity index 100%
rename from mcs/errors/gcs0308-3.cs
rename to mcs/errors/cs0308-3.cs
diff --git a/mcs/errors/gcs0308-4.cs b/mcs/errors/cs0308-4.cs
similarity index 100%
rename from mcs/errors/gcs0308-4.cs
rename to mcs/errors/cs0308-4.cs
diff --git a/mcs/errors/gcs0308-5.cs b/mcs/errors/cs0308-5.cs
similarity index 100%
rename from mcs/errors/gcs0308-5.cs
rename to mcs/errors/cs0308-5.cs
diff --git a/mcs/errors/gcs0308-6.cs b/mcs/errors/cs0308-6.cs
similarity index 100%
rename from mcs/errors/gcs0308-6.cs
rename to mcs/errors/cs0308-6.cs
diff --git a/mcs/errors/gcs0308-7.cs b/mcs/errors/cs0308-7.cs
similarity index 100%
rename from mcs/errors/gcs0308-7.cs
rename to mcs/errors/cs0308-7.cs
diff --git a/mcs/errors/gcs0308.cs b/mcs/errors/cs0308.cs
similarity index 100%
rename from mcs/errors/gcs0308.cs
rename to mcs/errors/cs0308.cs
diff --git a/mcs/errors/gcs0310-2.cs b/mcs/errors/cs0310-2.cs
similarity index 100%
rename from mcs/errors/gcs0310-2.cs
rename to mcs/errors/cs0310-2.cs
diff --git a/mcs/errors/gcs0310-3.cs b/mcs/errors/cs0310-3.cs
similarity index 100%
rename from mcs/errors/gcs0310-3.cs
rename to mcs/errors/cs0310-3.cs
diff --git a/mcs/errors/gcs0310-4.cs b/mcs/errors/cs0310-4.cs
similarity index 100%
rename from mcs/errors/gcs0310-4.cs
rename to mcs/errors/cs0310-4.cs
diff --git a/mcs/errors/gcs0310-5.cs b/mcs/errors/cs0310-5.cs
similarity index 100%
rename from mcs/errors/gcs0310-5.cs
rename to mcs/errors/cs0310-5.cs
diff --git a/mcs/errors/gcs0310.cs b/mcs/errors/cs0310.cs
similarity index 100%
rename from mcs/errors/gcs0310.cs
rename to mcs/errors/cs0310.cs
diff --git a/mcs/errors/gcs0311-2.cs b/mcs/errors/cs0311-2.cs
similarity index 100%
rename from mcs/errors/gcs0311-2.cs
rename to mcs/errors/cs0311-2.cs
diff --git a/mcs/errors/gcs0311-3.cs b/mcs/errors/cs0311-3.cs
similarity index 100%
rename from mcs/errors/gcs0311-3.cs
rename to mcs/errors/cs0311-3.cs
diff --git a/mcs/errors/gcs0311-4.cs b/mcs/errors/cs0311-4.cs
similarity index 100%
rename from mcs/errors/gcs0311-4.cs
rename to mcs/errors/cs0311-4.cs
diff --git a/mcs/errors/cs0311-5.cs b/mcs/errors/cs0311-5.cs
new file mode 100644
index 0000000..6876a98
--- /dev/null
+++ b/mcs/errors/cs0311-5.cs
@@ -0,0 +1,18 @@
+// CS0311: The type `object' cannot be used as type parameter `U' in the generic type or method `G<C>.Method<U>()'. There is no implicit reference conversion from `object' to `C'
+// Line: 9
+
+public class C
+{
+	public static void Main ()
+	{
+		var mc = new G<C> ();
+		mc.Method<object> ();
+	}
+}
+
+public class G<T> where T : C
+{
+	public void Method<U> () where U : T
+	{
+	}
+}
diff --git a/mcs/errors/gcs0311.cs b/mcs/errors/cs0311.cs
similarity index 100%
rename from mcs/errors/gcs0311.cs
rename to mcs/errors/cs0311.cs
diff --git a/mcs/errors/gcs0313.cs b/mcs/errors/cs0313.cs
old mode 100755
new mode 100644
similarity index 100%
rename from mcs/errors/gcs0313.cs
rename to mcs/errors/cs0313.cs
diff --git a/mcs/errors/gcs0314-2.cs b/mcs/errors/cs0314-2.cs
similarity index 100%
rename from mcs/errors/gcs0314-2.cs
rename to mcs/errors/cs0314-2.cs
diff --git a/mcs/errors/gcs0314.cs b/mcs/errors/cs0314.cs
similarity index 100%
rename from mcs/errors/gcs0314.cs
rename to mcs/errors/cs0314.cs
diff --git a/mcs/errors/cs0315-2.cs b/mcs/errors/cs0315-2.cs
new file mode 100644
index 0000000..70e2c3d
--- /dev/null
+++ b/mcs/errors/cs0315-2.cs
@@ -0,0 +1,11 @@
+// CS0315: The type `ushort' cannot be used as type parameter `T' in the generic type or method `A<T>'. There is no boxing conversion from `ushort' to `A<ushort>.N1<ushort>'
+// Line: 9
+// Compiler options: -r:CS0315-2-lib.dll
+
+public class Test
+{
+	public static void Main ()
+	{
+		A<ushort>.N1<ushort> a = null;
+	}
+}
diff --git a/mcs/errors/cs0315-3.cs b/mcs/errors/cs0315-3.cs
new file mode 100644
index 0000000..80ab3db
--- /dev/null
+++ b/mcs/errors/cs0315-3.cs
@@ -0,0 +1,21 @@
+// CS0315: The type `int' cannot be used as type parameter `U' in the generic type or method `A<int?>.Test<U>()'. There is no boxing conversion from `int' to `int?'
+// Line: 19
+
+class A<T>
+{
+	public static void Test<U> () where U : T
+	{
+	}
+}
+
+class B : A<int?>
+{
+}
+
+class Program
+{
+	public static void Main ()
+	{
+		B.Test<int> ();
+	}
+}
diff --git a/mcs/errors/gcs0315.cs b/mcs/errors/cs0315.cs
similarity index 100%
rename from mcs/errors/gcs0315.cs
rename to mcs/errors/cs0315.cs
diff --git a/mcs/errors/gcs0401.cs b/mcs/errors/cs0401.cs
similarity index 100%
rename from mcs/errors/gcs0401.cs
rename to mcs/errors/cs0401.cs
diff --git a/mcs/errors/gcs0402-2.cs b/mcs/errors/cs0402-2.cs
similarity index 100%
rename from mcs/errors/gcs0402-2.cs
rename to mcs/errors/cs0402-2.cs
diff --git a/mcs/errors/gcs0402.cs b/mcs/errors/cs0402.cs
similarity index 100%
rename from mcs/errors/gcs0402.cs
rename to mcs/errors/cs0402.cs
diff --git a/mcs/errors/gcs0403-2.cs b/mcs/errors/cs0403-2.cs
similarity index 100%
rename from mcs/errors/gcs0403-2.cs
rename to mcs/errors/cs0403-2.cs
diff --git a/mcs/errors/gcs0403-3.cs b/mcs/errors/cs0403-3.cs
similarity index 100%
rename from mcs/errors/gcs0403-3.cs
rename to mcs/errors/cs0403-3.cs
diff --git a/mcs/errors/gcs0403.cs b/mcs/errors/cs0403.cs
similarity index 100%
rename from mcs/errors/gcs0403.cs
rename to mcs/errors/cs0403.cs
diff --git a/mcs/errors/gcs0404.cs b/mcs/errors/cs0404.cs
similarity index 100%
rename from mcs/errors/gcs0404.cs
rename to mcs/errors/cs0404.cs
diff --git a/mcs/errors/gcs0405.cs b/mcs/errors/cs0405.cs
similarity index 100%
rename from mcs/errors/gcs0405.cs
rename to mcs/errors/cs0405.cs
diff --git a/mcs/errors/gcs0406-2.cs b/mcs/errors/cs0406-2.cs
old mode 100755
new mode 100644
similarity index 100%
rename from mcs/errors/gcs0406-2.cs
rename to mcs/errors/cs0406-2.cs
diff --git a/mcs/errors/gcs0406.cs b/mcs/errors/cs0406.cs
similarity index 100%
rename from mcs/errors/gcs0406.cs
rename to mcs/errors/cs0406.cs
diff --git a/mcs/errors/gcs0409.cs b/mcs/errors/cs0409.cs
similarity index 100%
rename from mcs/errors/gcs0409.cs
rename to mcs/errors/cs0409.cs
diff --git a/mcs/errors/gcs0411-10.cs b/mcs/errors/cs0411-10.cs
similarity index 100%
rename from mcs/errors/gcs0411-10.cs
rename to mcs/errors/cs0411-10.cs
diff --git a/mcs/errors/gcs0411-11.cs b/mcs/errors/cs0411-11.cs
old mode 100755
new mode 100644
similarity index 100%
rename from mcs/errors/gcs0411-11.cs
rename to mcs/errors/cs0411-11.cs
diff --git a/mcs/errors/gcs0411-12.cs b/mcs/errors/cs0411-12.cs
similarity index 100%
rename from mcs/errors/gcs0411-12.cs
rename to mcs/errors/cs0411-12.cs
diff --git a/mcs/errors/gcs0411-13.cs b/mcs/errors/cs0411-13.cs
similarity index 100%
rename from mcs/errors/gcs0411-13.cs
rename to mcs/errors/cs0411-13.cs
diff --git a/mcs/errors/gcs0411-14.cs b/mcs/errors/cs0411-14.cs
similarity index 100%
rename from mcs/errors/gcs0411-14.cs
rename to mcs/errors/cs0411-14.cs
diff --git a/mcs/errors/gcs0411-15.cs b/mcs/errors/cs0411-15.cs
similarity index 100%
rename from mcs/errors/gcs0411-15.cs
rename to mcs/errors/cs0411-15.cs
diff --git a/mcs/errors/gcs0411-16.cs b/mcs/errors/cs0411-16.cs
similarity index 100%
rename from mcs/errors/gcs0411-16.cs
rename to mcs/errors/cs0411-16.cs
diff --git a/mcs/errors/gcs0411-17.cs b/mcs/errors/cs0411-17.cs
similarity index 100%
rename from mcs/errors/gcs0411-17.cs
rename to mcs/errors/cs0411-17.cs
diff --git a/mcs/errors/gcs0411-2.cs b/mcs/errors/cs0411-2.cs
similarity index 100%
rename from mcs/errors/gcs0411-2.cs
rename to mcs/errors/cs0411-2.cs
diff --git a/mcs/errors/gcs0411-3.cs b/mcs/errors/cs0411-3.cs
similarity index 100%
rename from mcs/errors/gcs0411-3.cs
rename to mcs/errors/cs0411-3.cs
diff --git a/mcs/errors/gcs0411-5.cs b/mcs/errors/cs0411-5.cs
similarity index 100%
rename from mcs/errors/gcs0411-5.cs
rename to mcs/errors/cs0411-5.cs
diff --git a/mcs/errors/gcs0411-6.cs b/mcs/errors/cs0411-6.cs
similarity index 100%
rename from mcs/errors/gcs0411-6.cs
rename to mcs/errors/cs0411-6.cs
diff --git a/mcs/errors/gcs0411-7.cs b/mcs/errors/cs0411-7.cs
similarity index 100%
rename from mcs/errors/gcs0411-7.cs
rename to mcs/errors/cs0411-7.cs
diff --git a/mcs/errors/gcs0411-8.cs b/mcs/errors/cs0411-8.cs
similarity index 100%
rename from mcs/errors/gcs0411-8.cs
rename to mcs/errors/cs0411-8.cs
diff --git a/mcs/errors/gcs0411-9.cs b/mcs/errors/cs0411-9.cs
similarity index 100%
rename from mcs/errors/gcs0411-9.cs
rename to mcs/errors/cs0411-9.cs
diff --git a/mcs/errors/gcs0411.cs b/mcs/errors/cs0411.cs
similarity index 100%
rename from mcs/errors/gcs0411.cs
rename to mcs/errors/cs0411.cs
diff --git a/mcs/errors/cs0412-2.cs b/mcs/errors/cs0412-2.cs
new file mode 100644
index 0000000..058629f
--- /dev/null
+++ b/mcs/errors/cs0412-2.cs
@@ -0,0 +1,9 @@
+// CS0412: The type parameter name `T' is the same as local variable or parameter name
+// Line: 8
+
+using System;
+
+interface I
+{
+	T Foo<T>(IComparable T);
+}
diff --git a/mcs/errors/cs0412-3.cs b/mcs/errors/cs0412-3.cs
new file mode 100644
index 0000000..78b473c
--- /dev/null
+++ b/mcs/errors/cs0412-3.cs
@@ -0,0 +1,10 @@
+// CS0412: The type parameter name `T' is the same as local variable or parameter name
+// Line: 8
+
+class C
+{
+	public void Foo<T> (int value)
+	{
+		int T;
+	}
+}
diff --git a/mcs/errors/cs0412.cs b/mcs/errors/cs0412.cs
new file mode 100644
index 0000000..7e94245
--- /dev/null
+++ b/mcs/errors/cs0412.cs
@@ -0,0 +1,9 @@
+// CS0412: The type parameter name `T' is the same as local variable or parameter name
+// Line: 6
+
+class C
+{
+	public void Foo<T> (string T)
+	{
+	}
+}
diff --git a/mcs/errors/gcs0413-2.cs b/mcs/errors/cs0413-2.cs
similarity index 100%
rename from mcs/errors/gcs0413-2.cs
rename to mcs/errors/cs0413-2.cs
diff --git a/mcs/errors/gcs0413.cs b/mcs/errors/cs0413.cs
similarity index 100%
rename from mcs/errors/gcs0413.cs
rename to mcs/errors/cs0413.cs
diff --git a/mcs/errors/gcs0414.cs b/mcs/errors/cs0414.cs
similarity index 100%
rename from mcs/errors/gcs0414.cs
rename to mcs/errors/cs0414.cs
diff --git a/mcs/errors/gcs0416-2.cs b/mcs/errors/cs0416-2.cs
similarity index 100%
rename from mcs/errors/gcs0416-2.cs
rename to mcs/errors/cs0416-2.cs
diff --git a/mcs/errors/gcs0416-3.cs b/mcs/errors/cs0416-3.cs
similarity index 100%
rename from mcs/errors/gcs0416-3.cs
rename to mcs/errors/cs0416-3.cs
diff --git a/mcs/errors/gcs0416.cs b/mcs/errors/cs0416.cs
similarity index 100%
rename from mcs/errors/gcs0416.cs
rename to mcs/errors/cs0416.cs
diff --git a/mcs/errors/gcs0417.cs b/mcs/errors/cs0417.cs
similarity index 100%
rename from mcs/errors/gcs0417.cs
rename to mcs/errors/cs0417.cs
diff --git a/mcs/errors/gcs0425-2.cs b/mcs/errors/cs0425-2.cs
similarity index 100%
rename from mcs/errors/gcs0425-2.cs
rename to mcs/errors/cs0425-2.cs
diff --git a/mcs/errors/gcs0425-3.cs b/mcs/errors/cs0425-3.cs
old mode 100755
new mode 100644
similarity index 100%
rename from mcs/errors/gcs0425-3.cs
rename to mcs/errors/cs0425-3.cs
diff --git a/mcs/errors/gcs0425-4.cs b/mcs/errors/cs0425-4.cs
similarity index 100%
rename from mcs/errors/gcs0425-4.cs
rename to mcs/errors/cs0425-4.cs
diff --git a/mcs/errors/gcs0425-5.cs b/mcs/errors/cs0425-5.cs
similarity index 100%
rename from mcs/errors/gcs0425-5.cs
rename to mcs/errors/cs0425-5.cs
diff --git a/mcs/errors/gcs0425.cs b/mcs/errors/cs0425.cs
similarity index 100%
rename from mcs/errors/gcs0425.cs
rename to mcs/errors/cs0425.cs
diff --git a/mcs/errors/gcs0428.cs b/mcs/errors/cs0428-3.cs
similarity index 100%
rename from mcs/errors/gcs0428.cs
rename to mcs/errors/cs0428-3.cs
diff --git a/mcs/errors/cs0445-2.cs b/mcs/errors/cs0445-2.cs
index 48a6b01..fa699a1 100644
--- a/mcs/errors/cs0445-2.cs
+++ b/mcs/errors/cs0445-2.cs
@@ -1,13 +1,13 @@
-// cs0445.cs: Cannot modify the result of an unboxing conversion
+// CS0445: Cannot modify the result of an unboxing conversion
 // Line: 10
 
 struct S
 {
-    public int val { set {} }
+	public int val { set {} }
 
-    public void Do (object o) 
-    {
-        ((S)o).val = 4;
-    }
+	public void Do (object o) 
+	{
+		((S)o).val = 4;
+	}
 }
 
diff --git a/mcs/errors/cs0445-3.cs b/mcs/errors/cs0445-3.cs
new file mode 100644
index 0000000..b933dfd
--- /dev/null
+++ b/mcs/errors/cs0445-3.cs
@@ -0,0 +1,13 @@
+// CS0445: Cannot modify the result of an unboxing conversion
+// Line: 8
+
+struct S
+{
+	public void Do (object o)
+	{
+		((S) o)[1] = 4;
+	}
+
+	int this[int arg] { set { } }
+}
+
diff --git a/mcs/errors/cs0445.cs b/mcs/errors/cs0445.cs
index e1b3250..efc703d 100644
--- a/mcs/errors/cs0445.cs
+++ b/mcs/errors/cs0445.cs
@@ -1,13 +1,13 @@
-// cs0445.cs: Cannot modify the result of an unboxing conversion
+// CS0445: Cannot modify the result of an unboxing conversion
 // Line: 10
 
 struct S
 {
-    public int val;
+	public int val;
 
-    public void Do (object o) 
-    {
-        ((S)o).val = 4;
-    }
+	public void Do (object o) 
+	{
+		((S)o).val = 4;
+	}
 }
 
diff --git a/mcs/errors/gcs0449-2.cs b/mcs/errors/cs0449-2.cs
similarity index 100%
rename from mcs/errors/gcs0449-2.cs
rename to mcs/errors/cs0449-2.cs
diff --git a/mcs/errors/gcs0449-3.cs b/mcs/errors/cs0449-3.cs
similarity index 100%
rename from mcs/errors/gcs0449-3.cs
rename to mcs/errors/cs0449-3.cs
diff --git a/mcs/errors/gcs0449.cs b/mcs/errors/cs0449.cs
similarity index 100%
rename from mcs/errors/gcs0449.cs
rename to mcs/errors/cs0449.cs
diff --git a/mcs/errors/gcs0450-2.cs b/mcs/errors/cs0450-2.cs
similarity index 100%
rename from mcs/errors/gcs0450-2.cs
rename to mcs/errors/cs0450-2.cs
diff --git a/mcs/errors/gcs0450.cs b/mcs/errors/cs0450.cs
similarity index 100%
rename from mcs/errors/gcs0450.cs
rename to mcs/errors/cs0450.cs
diff --git a/mcs/errors/gcs0451.cs b/mcs/errors/cs0451.cs
similarity index 100%
rename from mcs/errors/gcs0451.cs
rename to mcs/errors/cs0451.cs
diff --git a/mcs/errors/gcs0452-2.cs b/mcs/errors/cs0452-2.cs
similarity index 100%
rename from mcs/errors/gcs0452-2.cs
rename to mcs/errors/cs0452-2.cs
diff --git a/mcs/errors/gcs0452-3.cs b/mcs/errors/cs0452-3.cs
similarity index 100%
rename from mcs/errors/gcs0452-3.cs
rename to mcs/errors/cs0452-3.cs
diff --git a/mcs/errors/gcs0452-4.cs b/mcs/errors/cs0452-4.cs
similarity index 100%
rename from mcs/errors/gcs0452-4.cs
rename to mcs/errors/cs0452-4.cs
diff --git a/mcs/errors/gcs0452.cs b/mcs/errors/cs0452.cs
similarity index 100%
rename from mcs/errors/gcs0452.cs
rename to mcs/errors/cs0452.cs
diff --git a/mcs/errors/gcs0453-2.cs b/mcs/errors/cs0453-2.cs
similarity index 100%
rename from mcs/errors/gcs0453-2.cs
rename to mcs/errors/cs0453-2.cs
diff --git a/mcs/errors/gcs0453-3.cs b/mcs/errors/cs0453-3.cs
similarity index 100%
rename from mcs/errors/gcs0453-3.cs
rename to mcs/errors/cs0453-3.cs
diff --git a/mcs/errors/cs0453-4.cs b/mcs/errors/cs0453-4.cs
new file mode 100644
index 0000000..4e3d16d
--- /dev/null
+++ b/mcs/errors/cs0453-4.cs
@@ -0,0 +1,11 @@
+// CS0453: The type `T' must be a non-nullable value type in order to use it as type parameter `T' in the generic type or method `System.Nullable<T>'
+// Line: 14
+
+using System;
+
+public static class Nullable_Test {
+	public static int Compare<T> (Nullable<T> left)
+	{
+		return 0;
+	}
+}
\ No newline at end of file
diff --git a/mcs/errors/gcs0453-5.cs b/mcs/errors/cs0453-5.cs
similarity index 100%
rename from mcs/errors/gcs0453-5.cs
rename to mcs/errors/cs0453-5.cs
diff --git a/mcs/errors/gcs0453.cs b/mcs/errors/cs0453.cs
similarity index 100%
rename from mcs/errors/gcs0453.cs
rename to mcs/errors/cs0453.cs
diff --git a/mcs/errors/gcs0454.cs b/mcs/errors/cs0454.cs
similarity index 100%
rename from mcs/errors/gcs0454.cs
rename to mcs/errors/cs0454.cs
diff --git a/mcs/errors/gcs0455-2.cs b/mcs/errors/cs0455-2.cs
old mode 100755
new mode 100644
similarity index 100%
rename from mcs/errors/gcs0455-2.cs
rename to mcs/errors/cs0455-2.cs
diff --git a/mcs/errors/gcs0455-3.cs b/mcs/errors/cs0455-3.cs
similarity index 100%
rename from mcs/errors/gcs0455-3.cs
rename to mcs/errors/cs0455-3.cs
diff --git a/mcs/errors/cs0455-4.cs b/mcs/errors/cs0455-4.cs
new file mode 100644
index 0000000..b27656d
--- /dev/null
+++ b/mcs/errors/cs0455-4.cs
@@ -0,0 +1,14 @@
+// CS0455: Type parameter `Y' inherits conflicting constraints `long' and `long?'
+// Line: 11
+
+abstract class A<T1, T2>
+{
+	public abstract void Foo<U> () where U : T1, T2;
+}
+
+class B : A<long, long?>
+{
+	public override void Foo<Y> ()
+	{
+	}
+}
diff --git a/mcs/errors/cs0455-5.cs b/mcs/errors/cs0455-5.cs
new file mode 100644
index 0000000..3844f9d
--- /dev/null
+++ b/mcs/errors/cs0455-5.cs
@@ -0,0 +1,14 @@
+// CS0455: Type parameter `Y' inherits conflicting constraints `class' and `long'
+// Line: 11
+
+abstract class A<T>
+{
+	public abstract void Foo<U> () where U : class, T;
+}
+
+class B : A<long>
+{
+	public override void Foo<Y> ()
+	{
+	}
+}
diff --git a/mcs/errors/gcs0455.cs b/mcs/errors/cs0455.cs
similarity index 100%
rename from mcs/errors/gcs0455.cs
rename to mcs/errors/cs0455.cs
diff --git a/mcs/errors/gcs0456.cs b/mcs/errors/cs0456.cs
similarity index 100%
rename from mcs/errors/gcs0456.cs
rename to mcs/errors/cs0456.cs
diff --git a/mcs/errors/cs0457-3.cs b/mcs/errors/cs0457-3.cs
new file mode 100644
index 0000000..3a8175d
--- /dev/null
+++ b/mcs/errors/cs0457-3.cs
@@ -0,0 +1,32 @@
+// CS0457: Ambiguous user defined operators `D.implicit operator A(D)' and `C.implicit operator B(C)' when converting from `D' to `B'
+// Line: 30
+
+class A
+{
+}
+
+class B : A
+{
+}
+
+class C
+{
+	public static implicit operator B (C s)
+	{
+		return new B ();
+	}
+}
+
+class D : C
+{
+	public static implicit operator A (D s)
+	{
+		return new B ();
+	}
+
+	public static void Main ()
+	{
+		D d = new D ();
+		B b2 = (B) d;
+	}
+}
diff --git a/mcs/errors/cs0458-10.cs b/mcs/errors/cs0458-10.cs
new file mode 100644
index 0000000..e334822
--- /dev/null
+++ b/mcs/errors/cs0458-10.cs
@@ -0,0 +1,11 @@
+// CS0458: The result of the expression is always `null' of type `bool?' 
+// Line: 8
+// Compiler options: -warnaserror -warn:2
+
+class C
+{
+	static void Foo()
+	{
+		bool? b = false | null;
+	}
+}
diff --git a/mcs/errors/cs0458-11.cs b/mcs/errors/cs0458-11.cs
new file mode 100644
index 0000000..26f8e0c
--- /dev/null
+++ b/mcs/errors/cs0458-11.cs
@@ -0,0 +1,12 @@
+// CS0458: The result of the expression is always `null' of type `ulong?'
+// Line: 10
+// Compiler options: -warnaserror -warn:2
+
+class C
+{
+	static void Foo()
+	{
+		ulong a = 100;
+		var res = a << null;
+	}
+}
diff --git a/mcs/errors/cs0458-12.cs b/mcs/errors/cs0458-12.cs
new file mode 100644
index 0000000..fbc17fa
--- /dev/null
+++ b/mcs/errors/cs0458-12.cs
@@ -0,0 +1,11 @@
+// CS0458: The result of the expression is always `null' of type `int?'
+// Line: 9
+// Compiler options: -warnaserror -warn:2
+
+class C
+{
+	static void Foo()
+	{
+		var res = null >> 2;
+	}
+}
diff --git a/mcs/errors/cs0458-13.cs b/mcs/errors/cs0458-13.cs
new file mode 100644
index 0000000..7246847
--- /dev/null
+++ b/mcs/errors/cs0458-13.cs
@@ -0,0 +1,11 @@
+// CS0458: The result of the expression is always `null' of type `int?'
+// Line: 9
+// Compiler options: -warnaserror -warn:2
+
+class C
+{
+	static void Foo()
+	{
+		var res = null << 2;
+	}
+}
diff --git a/mcs/errors/gcs0458-2.cs b/mcs/errors/cs0458-2.cs
similarity index 100%
rename from mcs/errors/gcs0458-2.cs
rename to mcs/errors/cs0458-2.cs
diff --git a/mcs/errors/gcs0458-3.cs b/mcs/errors/cs0458-3.cs
similarity index 100%
rename from mcs/errors/gcs0458-3.cs
rename to mcs/errors/cs0458-3.cs
diff --git a/mcs/errors/gcs0458-4.cs b/mcs/errors/cs0458-4.cs
similarity index 100%
rename from mcs/errors/gcs0458-4.cs
rename to mcs/errors/cs0458-4.cs
diff --git a/mcs/errors/gcs0458-5.cs b/mcs/errors/cs0458-5.cs
similarity index 100%
rename from mcs/errors/gcs0458-5.cs
rename to mcs/errors/cs0458-5.cs
diff --git a/mcs/errors/gcs0458-6.cs b/mcs/errors/cs0458-6.cs
similarity index 100%
rename from mcs/errors/gcs0458-6.cs
rename to mcs/errors/cs0458-6.cs
diff --git a/mcs/errors/gcs0458-7.cs b/mcs/errors/cs0458-7.cs
similarity index 100%
rename from mcs/errors/gcs0458-7.cs
rename to mcs/errors/cs0458-7.cs
diff --git a/mcs/errors/cs0458-8.cs b/mcs/errors/cs0458-8.cs
new file mode 100644
index 0000000..e945f5e
--- /dev/null
+++ b/mcs/errors/cs0458-8.cs
@@ -0,0 +1,17 @@
+// CS0458: The result of the expression is always `null' of type `E?'
+// Line: 15
+// Compiler options: -warnaserror -warn:2
+
+enum E
+{
+	V
+}
+
+public class C
+{
+	public static void Main ()
+	{
+		E e = E.V;
+		object o = null + e;
+	}
+}
diff --git a/mcs/errors/cs0458-9.cs b/mcs/errors/cs0458-9.cs
new file mode 100644
index 0000000..1e77f7c
--- /dev/null
+++ b/mcs/errors/cs0458-9.cs
@@ -0,0 +1,11 @@
+// CS0458: The result of the expression is always `null' of type `int?'
+// Line: 9
+// Compiler options: -warnaserror -warn:2
+
+public class C
+{
+	public static void Main ()
+	{
+		b = (null & 0) != null;
+	}
+}
diff --git a/mcs/errors/gcs0458.cs b/mcs/errors/cs0458.cs
similarity index 100%
rename from mcs/errors/gcs0458.cs
rename to mcs/errors/cs0458.cs
diff --git a/mcs/errors/gcs0460-2.cs b/mcs/errors/cs0460-2.cs
similarity index 100%
rename from mcs/errors/gcs0460-2.cs
rename to mcs/errors/cs0460-2.cs
diff --git a/mcs/errors/gcs0460.cs b/mcs/errors/cs0460.cs
similarity index 100%
rename from mcs/errors/gcs0460.cs
rename to mcs/errors/cs0460.cs
diff --git a/mcs/errors/gcs0464-2.cs b/mcs/errors/cs0464-2.cs
similarity index 100%
rename from mcs/errors/gcs0464-2.cs
rename to mcs/errors/cs0464-2.cs
diff --git a/mcs/errors/cs0464-3.cs b/mcs/errors/cs0464-3.cs
new file mode 100644
index 0000000..5c4632b
--- /dev/null
+++ b/mcs/errors/cs0464-3.cs
@@ -0,0 +1,11 @@
+// CS0464: The result of comparing type `int?' with null is always `false'
+// Line: 9
+// Compiler options: -warnaserror -warn:2
+
+public class X
+{
+	public static bool Compute ()
+	{
+		return null >= null;
+	}
+}
diff --git a/mcs/errors/gcs0464.cs b/mcs/errors/cs0464.cs
similarity index 100%
rename from mcs/errors/gcs0464.cs
rename to mcs/errors/cs0464.cs
diff --git a/mcs/errors/cs0466.cs b/mcs/errors/cs0466.cs
index dd9050e..16bc011 100644
--- a/mcs/errors/cs0466.cs
+++ b/mcs/errors/cs0466.cs
@@ -1,11 +1,11 @@
-// cs0466.cs:  `Base.I.M(params int[])': the explicit interface implementation cannot introduce the params modifier
-// Line: 10
-
-interface I
-{
-	void M(int[] values);
-}
-class Base : I
-{
-	void I.M(params int[] values) {}
+// cs0466.cs:  `Base.I.M(params int[])': the explicit interface implementation cannot introduce the params modifier
+// Line: 10
+
+interface I
+{
+	void M(int[] values);
+}
+class Base : I
+{
+	void I.M(params int[] values) {}
 }
\ No newline at end of file
diff --git a/mcs/errors/cs0469.cs b/mcs/errors/cs0469.cs
index a6bf6ab..61f3c5b 100644
--- a/mcs/errors/cs0469.cs
+++ b/mcs/errors/cs0469.cs
@@ -1,19 +1,19 @@
-// cs0469.cs: The `goto case' value is not implicitly convertible to type `char'
-// Line: 16
-// Compiler options: -warnaserror -warn:2
-
-class Test
-{
-	static void Main()
-	{
-		char c = 'c';
-		switch (c)
-		{
-			case 'A':
-				break;
-
-			case 'a': 
-				goto case 65;
-		}
-	}
+// cs0469.cs: The `goto case' value is not implicitly convertible to type `char'
+// Line: 16
+// Compiler options: -warnaserror -warn:2
+
+class Test
+{
+	static void Main()
+	{
+		char c = 'c';
+		switch (c)
+		{
+			case 'A':
+				break;
+
+			case 'a': 
+				goto case 65;
+		}
+	}
 }
\ No newline at end of file
diff --git a/mcs/errors/gcs0472-2.cs b/mcs/errors/cs0472-2.cs
similarity index 100%
rename from mcs/errors/gcs0472-2.cs
rename to mcs/errors/cs0472-2.cs
diff --git a/mcs/errors/gcs0472-3.cs b/mcs/errors/cs0472-3.cs
similarity index 100%
rename from mcs/errors/gcs0472-3.cs
rename to mcs/errors/cs0472-3.cs
diff --git a/mcs/errors/gcs0472-4.cs b/mcs/errors/cs0472-4.cs
similarity index 100%
rename from mcs/errors/gcs0472-4.cs
rename to mcs/errors/cs0472-4.cs
diff --git a/mcs/errors/gcs0472.cs b/mcs/errors/cs0472.cs
similarity index 100%
rename from mcs/errors/gcs0472.cs
rename to mcs/errors/cs0472.cs
diff --git a/mcs/errors/gcs0501.cs b/mcs/errors/cs0501-4.cs
similarity index 100%
rename from mcs/errors/gcs0501.cs
rename to mcs/errors/cs0501-4.cs
diff --git a/mcs/errors/cs0507-7.cs b/mcs/errors/cs0507-7.cs
new file mode 100644
index 0000000..5289579
--- /dev/null
+++ b/mcs/errors/cs0507-7.cs
@@ -0,0 +1,11 @@
+// CS0507: `Class2.GetString()': cannot change access modifiers when overriding `protected internal' inherited member `Class1.GetString()'
+// Line: 7
+// Compiler options: -r:CS0507-7-lib.dll
+
+public sealed class Class2 : Class1
+{
+	protected override string GetString ()
+	{
+		return "Hello2";
+	}
+}
diff --git a/mcs/errors/cs0507-8.cs b/mcs/errors/cs0507-8.cs
new file mode 100644
index 0000000..ee0f604
--- /dev/null
+++ b/mcs/errors/cs0507-8.cs
@@ -0,0 +1,11 @@
+// CS0507: `Class2.GetString()': cannot change access modifiers when overriding `protected' inherited member `Class1.GetString()'
+// Line: 7
+// Compiler options: -r:CS0507-8-lib.dll
+
+public sealed class Class2 : Class1
+{
+	protected internal override string GetString ()
+	{
+		return "Hello2";
+	}
+}
diff --git a/mcs/errors/gcs0508-2.cs b/mcs/errors/cs0508-2.cs
similarity index 100%
rename from mcs/errors/gcs0508-2.cs
rename to mcs/errors/cs0508-2.cs
diff --git a/mcs/errors/cs0508-3.cs b/mcs/errors/cs0508-3.cs
new file mode 100644
index 0000000..b30e7b7
--- /dev/null
+++ b/mcs/errors/cs0508-3.cs
@@ -0,0 +1,15 @@
+// CS0508: `A<T>.B<H>.Test()': return type must be `A<T>.B<H>' to match overridden member `A<A<T>.B<H>>.Test()'
+// Line: 10
+
+abstract class A<T>
+{
+	public abstract T Test ();
+
+	public class B<H> : A<B<H>>
+	{
+		public override B<H> Test ()
+		{
+			return this;
+		}
+	}
+}
diff --git a/mcs/errors/gcs0508.cs b/mcs/errors/cs0508-4.cs
similarity index 100%
rename from mcs/errors/gcs0508.cs
rename to mcs/errors/cs0508-4.cs
diff --git a/mcs/errors/cs0509-5.cs b/mcs/errors/cs0509-5.cs
new file mode 100644
index 0000000..25c7626
--- /dev/null
+++ b/mcs/errors/cs0509-5.cs
@@ -0,0 +1,6 @@
+// CS0509: `X': cannot derive from sealed type `int'
+// Line: 4
+
+class X : int
+{
+}
diff --git a/mcs/errors/gcs0515.cs b/mcs/errors/cs0515-2.cs
similarity index 100%
rename from mcs/errors/gcs0515.cs
rename to mcs/errors/cs0515-2.cs
diff --git a/mcs/errors/gcs0523-2.cs b/mcs/errors/cs0523-2.cs
similarity index 100%
rename from mcs/errors/gcs0523-2.cs
rename to mcs/errors/cs0523-2.cs
diff --git a/mcs/errors/gcs0523-3.cs b/mcs/errors/cs0523-3.cs
similarity index 100%
rename from mcs/errors/gcs0523-3.cs
rename to mcs/errors/cs0523-3.cs
diff --git a/mcs/errors/gcs0523-4.cs b/mcs/errors/cs0523-4.cs
similarity index 100%
rename from mcs/errors/gcs0523-4.cs
rename to mcs/errors/cs0523-4.cs
diff --git a/mcs/errors/gcs0523-5.cs b/mcs/errors/cs0523-5.cs
similarity index 100%
rename from mcs/errors/gcs0523-5.cs
rename to mcs/errors/cs0523-5.cs
diff --git a/mcs/errors/gcs0523.cs b/mcs/errors/cs0523-6.cs
similarity index 100%
rename from mcs/errors/gcs0523.cs
rename to mcs/errors/cs0523-6.cs
diff --git a/mcs/errors/cs0553-2.cs b/mcs/errors/cs0553-2.cs
index bb1fd0f..c8b48f3 100644
--- a/mcs/errors/cs0553-2.cs
+++ b/mcs/errors/cs0553-2.cs
@@ -1,15 +1,15 @@
-// CS0553: User-defined conversion `plj.aClass.implicit operator plj.aClass(object)' cannot convert to or from a base class
-// Line: 10
-
-using System;
-
-namespace plj
-{
-	public abstract class aClass
-	{
-		public static implicit operator aClass(object o)
-		{ 
-			return null;
-		}
-	}
-}
+// CS0553: User-defined conversion `plj.aClass.implicit operator plj.aClass(object)' cannot convert to or from a base class
+// Line: 10
+
+using System;
+
+namespace plj
+{
+	public abstract class aClass
+	{
+		public static implicit operator aClass(object o)
+		{ 
+			return null;
+		}
+	}
+}
diff --git a/mcs/errors/gcs0555.cs b/mcs/errors/cs0555-2.cs
similarity index 100%
rename from mcs/errors/gcs0555.cs
rename to mcs/errors/cs0555-2.cs
diff --git a/mcs/errors/cs0575.cs b/mcs/errors/cs0575.cs
index b50c35b..c016ace 100644
--- a/mcs/errors/cs0575.cs
+++ b/mcs/errors/cs0575.cs
@@ -1,7 +1,8 @@
-// cs0575.cs: Only class types can contain destructor
-// Line: 5
-struct X  {
+// CS0575: Only class types can contain destructor
+// Line: 10
 
+struct X
+{
 	~X ()
 	{
 	}
@@ -10,5 +11,3 @@ struct X  {
 	{
 	}
 }
-
-}
diff --git a/mcs/errors/cs0596-2.cs b/mcs/errors/cs0596-2.cs
index c1ac503..f276841 100644
--- a/mcs/errors/cs0596-2.cs
+++ b/mcs/errors/cs0596-2.cs
@@ -1,7 +1,7 @@
 // cs0596-2.cs: The Guid attribute must be specified with the ComImport attribute
 // Line: 4
-
-[System.Runtime.InteropServices.ComImportAttribute]
-interface I
-{
+
+[System.Runtime.InteropServices.ComImportAttribute]
+interface I
+{
 }
\ No newline at end of file
diff --git a/mcs/errors/cs0596.cs b/mcs/errors/cs0596.cs
index edbaed9..68cd5ca 100644
--- a/mcs/errors/cs0596.cs
+++ b/mcs/errors/cs0596.cs
@@ -1,7 +1,7 @@
 // cs0596.cs: The Guid attribute must be specified with the ComImport attribute
 // Line: 4
-
-[System.Runtime.InteropServices.ComImportAttribute]
-class C
-{
+
+[System.Runtime.InteropServices.ComImportAttribute]
+class C
+{
 }
\ No newline at end of file
diff --git a/mcs/errors/cs0612-4.cs b/mcs/errors/cs0612-4.cs
new file mode 100644
index 0000000..6c7a42a
--- /dev/null
+++ b/mcs/errors/cs0612-4.cs
@@ -0,0 +1,26 @@
+// CS0612: `O1' is obsolete
+// Line: 23
+// Compiler options: -warnaserror
+
+using System;
+
+[Obsolete]
+class O1
+{
+}
+
+#pragma warning disable 612
+class A
+{
+	public virtual void Foo<T> () where T : O1
+	{
+	}
+}
+#pragma warning restore 612
+
+class B : A
+{
+	public override void Foo<U> ()
+	{
+	}
+}
diff --git a/mcs/errors/cs0612-5.cs b/mcs/errors/cs0612-5.cs
new file mode 100644
index 0000000..9098776
--- /dev/null
+++ b/mcs/errors/cs0612-5.cs
@@ -0,0 +1,26 @@
+// CS0612: `O2' is obsolete
+// Line: 23
+// Compiler options: -warnaserror
+
+using System;
+
+[Obsolete]
+interface O2
+{
+}
+
+#pragma warning disable 612
+class A
+{
+	public virtual void Foo<T> () where T : O2
+	{
+	}
+}
+#pragma warning restore 612
+
+class B : A
+{
+	public override void Foo<U> ()
+	{
+	}
+}
diff --git a/mcs/errors/cs0619-47.cs b/mcs/errors/cs0619-47.cs
index 32c6fc9..35ff8ab 100644
--- a/mcs/errors/cs0619-47.cs
+++ b/mcs/errors/cs0619-47.cs
@@ -2,12 +2,12 @@
 // Line: 11
 
 class A: System.Attribute
-{
-	[System.Obsolete("!!!", true)]
+{
+	[System.Obsolete("!!!", true)]
 	public int Field;
 }
-
-class Obsolete {
-	[A(Field=2)]
+
+class Obsolete {
+	[A(Field=2)]
 	public int Foo;
 }
diff --git a/mcs/errors/cs0619-48.cs b/mcs/errors/cs0619-48.cs
index 3c0f151..6044b4b 100644
--- a/mcs/errors/cs0619-48.cs
+++ b/mcs/errors/cs0619-48.cs
@@ -1,15 +1,15 @@
 // cs0619-48.cs: `A.Prop' is obsolete: `!!!'
-// Line: 13
+// Line: 13
 
 class A: System.Attribute
-{
-	[System.Obsolete("!!!", true)]
-	public string Prop {
-		set { }
-		get { return ""; }
+{
+	[System.Obsolete("!!!", true)]
+	public string Prop {
+		set { }
+		get { return ""; }
 	}
 }
-
-[A(Prop="System.String.Empty")]
-class Obsolete {
+
+[A(Prop="System.String.Empty")]
+class Obsolete {
 }
diff --git a/mcs/errors/cs0619-49.cs b/mcs/errors/cs0619-49.cs
index d719f51..c9a700a 100644
--- a/mcs/errors/cs0619-49.cs
+++ b/mcs/errors/cs0619-49.cs
@@ -1,14 +1,14 @@
 // cs0619-49.cs: `A.A(string[])' is obsolete: `!!!'
-// Line: 12
+// Line: 12
 
 class A: System.Attribute
-{
-	[System.Obsolete("!!!", true)]
-	public A (string[] s)
-	{
-	}
+{
+	[System.Obsolete("!!!", true)]
+	public A (string[] s)
+	{
+	}
 }
-
-[A(new string[0])]
-class Obsolete {
+
+[A(new string[0])]
+class Obsolete {
 }
diff --git a/mcs/errors/cs0619-50.cs b/mcs/errors/cs0619-50.cs
index 89c8f83..2114a3e 100644
--- a/mcs/errors/cs0619-50.cs
+++ b/mcs/errors/cs0619-50.cs
@@ -1,17 +1,17 @@
-// cs0619-50.cs: `A.B' is obsolete: `yes'
-// Line: 12
-
-using Z = A.B;
-
-class A
-{
-	[System.Obsolete("yes", true)]
-	public class B
-	{
-	}
-
-	static void Main ()
-	{
-		Z z;
-	}
+// cs0619-50.cs: `A.B' is obsolete: `yes'
+// Line: 12
+
+using Z = A.B;
+
+class A
+{
+	[System.Obsolete("yes", true)]
+	public class B
+	{
+	}
+
+	static void Main ()
+	{
+		Z z;
+	}
 }
\ No newline at end of file
diff --git a/mcs/errors/cs0619-51.cs b/mcs/errors/cs0619-51.cs
index de93139..061a6a9 100644
--- a/mcs/errors/cs0619-51.cs
+++ b/mcs/errors/cs0619-51.cs
@@ -1,20 +1,20 @@
-// cs0619-51.cs: `A.comparer' is obsolete: `Please use ...'
-// Line: 16
-// Compiler options: -reference:CS0619-51-lib.dll
-
-using System;
-using System.Collections;
-
-public class B : A
-{
-	void test ()
-	{
-	}
-	
-	public void AA ()
-	{
-		comparer += new D (test);
-	}
-	
-	public static void Main () {}
-}
+// cs0619-51.cs: `A.comparer' is obsolete: `Please use ...'
+// Line: 16
+// Compiler options: -reference:CS0619-51-lib.dll
+
+using System;
+using System.Collections;
+
+public class B : A
+{
+	void test ()
+	{
+	}
+	
+	public void AA ()
+	{
+		comparer += new D (test);
+	}
+	
+	public static void Main () {}
+}
diff --git a/mcs/errors/cs0619-54.cs b/mcs/errors/cs0619-54.cs
new file mode 100644
index 0000000..729a3ae
--- /dev/null
+++ b/mcs/errors/cs0619-54.cs
@@ -0,0 +1,23 @@
+// CS0619: `A' is obsolete: `msg'
+// Line: 21
+
+using System;
+
+[Obsolete ("msg", true)]
+class A
+{
+	public class M
+	{
+		public static void Foo ()
+		{
+		}
+	}
+}
+
+class C
+{
+	public static void Main ()
+	{
+		A.M.Foo ();
+	}
+}
diff --git a/mcs/errors/gcs0619.cs b/mcs/errors/cs0619-55.cs
similarity index 100%
rename from mcs/errors/gcs0619.cs
rename to mcs/errors/cs0619-55.cs
diff --git a/mcs/errors/gcs0633-4.cs b/mcs/errors/cs0633-5.cs
similarity index 100%
rename from mcs/errors/gcs0633-4.cs
rename to mcs/errors/cs0633-5.cs
diff --git a/mcs/errors/cs0642-11.cs b/mcs/errors/cs0642-11.cs
new file mode 100644
index 0000000..7a13563
--- /dev/null
+++ b/mcs/errors/cs0642-11.cs
@@ -0,0 +1,12 @@
+// CS0642: Possible mistaken empty statement
+// Line: 9
+// Compiler options: -warnaserror -warn:3
+
+public class C
+{
+	public void Test ()
+	{
+		using (System.IDisposable arg = null);
+		{ }
+	}
+}
diff --git a/mcs/errors/cs0647-17.cs b/mcs/errors/cs0647-17.cs
index cb940de..88117de 100644
--- a/mcs/errors/cs0647-17.cs
+++ b/mcs/errors/cs0647-17.cs
@@ -1,5 +1,5 @@
-// cs0647-17.cs: Error during emitting `System.Reflection.AssemblyVersionAttribute' attribute. The reason is `Specified version `0.0.0.80420' is not valid'
-// Line : 7
+// Cs0647: Error during emitting `System.Reflection.AssemblyVersionAttribute' attribute. The reason is `Specified version `0.0.0.80420' is not valid'
+// Line: 7
 
 using System;
 using System.Reflection;
diff --git a/mcs/errors/cs0647-18.cs b/mcs/errors/cs0647-18.cs
new file mode 100644
index 0000000..ce57d73
--- /dev/null
+++ b/mcs/errors/cs0647-18.cs
@@ -0,0 +1,6 @@
+// CS0647: Error during emitting `System.Reflection.AssemblyVersionAttribute' attribute. The reason is `Specified version `2.0.*.*' is not valid'
+// Line: 6
+
+using System.Reflection;
+
+[assembly: AssemblyVersion("2.0.*.*")]
diff --git a/mcs/errors/cs0647-19.cs b/mcs/errors/cs0647-19.cs
new file mode 100644
index 0000000..25b0400
--- /dev/null
+++ b/mcs/errors/cs0647-19.cs
@@ -0,0 +1,6 @@
+// CS0647: Error during emitting `System.Reflection.AssemblyVersionAttribute' attribute. The reason is `Specified version `2.*' is not valid'
+// Line: 6
+
+using System.Reflection;
+
+[assembly: AssemblyVersion("2.*")]
diff --git a/mcs/errors/gcs0663.cs b/mcs/errors/cs0663-6.cs
similarity index 100%
rename from mcs/errors/gcs0663.cs
rename to mcs/errors/cs0663-6.cs
diff --git a/mcs/errors/cs0664-3.cs b/mcs/errors/cs0664-3.cs
index df11f44..83a746a 100644
--- a/mcs/errors/cs0664-3.cs
+++ b/mcs/errors/cs0664-3.cs
@@ -1,15 +1,15 @@
-// cs0664-3.cs: Literal of type double cannot be implicitly converted to type `float'. Add suffix `f' to create a literal of this type
-// Line: 13
-
-using System;
-
-public sealed class BoundAttribute : System.Attribute
-{
-	public float D;
-}
-
-class C
-{
-	[Bound (D = 300d)]
-	double d2;
+// cs0664-3.cs: Literal of type double cannot be implicitly converted to type `float'. Add suffix `f' to create a literal of this type
+// Line: 13
+
+using System;
+
+public sealed class BoundAttribute : System.Attribute
+{
+	public float D;
+}
+
+class C
+{
+	[Bound (D = 300d)]
+	double d2;
 }
\ No newline at end of file
diff --git a/mcs/errors/gcs0677-2.cs b/mcs/errors/cs0677-3.cs
similarity index 100%
rename from mcs/errors/gcs0677-2.cs
rename to mcs/errors/cs0677-3.cs
diff --git a/mcs/errors/gcs0677.cs b/mcs/errors/cs0677-4.cs
similarity index 100%
rename from mcs/errors/gcs0677.cs
rename to mcs/errors/cs0677-4.cs
diff --git a/mcs/errors/gcs0689.cs b/mcs/errors/cs0689.cs
similarity index 100%
rename from mcs/errors/gcs0689.cs
rename to mcs/errors/cs0689.cs
diff --git a/mcs/errors/gcs0692.cs b/mcs/errors/cs0692.cs
similarity index 100%
rename from mcs/errors/gcs0692.cs
rename to mcs/errors/cs0692.cs
diff --git a/mcs/errors/gcs0693-2.cs b/mcs/errors/cs0693-2.cs
similarity index 100%
rename from mcs/errors/gcs0693-2.cs
rename to mcs/errors/cs0693-2.cs
diff --git a/mcs/errors/gcs0693-3.cs b/mcs/errors/cs0693-3.cs
similarity index 100%
rename from mcs/errors/gcs0693-3.cs
rename to mcs/errors/cs0693-3.cs
diff --git a/mcs/errors/gcs0693.cs b/mcs/errors/cs0693.cs
similarity index 100%
rename from mcs/errors/gcs0693.cs
rename to mcs/errors/cs0693.cs
diff --git a/mcs/errors/gcs0694.cs b/mcs/errors/cs0694.cs
similarity index 100%
rename from mcs/errors/gcs0694.cs
rename to mcs/errors/cs0694.cs
diff --git a/mcs/errors/gcs0695-2.cs b/mcs/errors/cs0695-2.cs
similarity index 100%
rename from mcs/errors/gcs0695-2.cs
rename to mcs/errors/cs0695-2.cs
diff --git a/mcs/errors/gcs0695-3.cs b/mcs/errors/cs0695-3.cs
similarity index 100%
rename from mcs/errors/gcs0695-3.cs
rename to mcs/errors/cs0695-3.cs
diff --git a/mcs/errors/gcs0695-4.cs b/mcs/errors/cs0695-4.cs
similarity index 100%
rename from mcs/errors/gcs0695-4.cs
rename to mcs/errors/cs0695-4.cs
diff --git a/mcs/errors/gcs0695.cs b/mcs/errors/cs0695.cs
similarity index 100%
rename from mcs/errors/gcs0695.cs
rename to mcs/errors/cs0695.cs
diff --git a/mcs/errors/gcs0698.cs b/mcs/errors/cs0698.cs
similarity index 100%
rename from mcs/errors/gcs0698.cs
rename to mcs/errors/cs0698.cs
diff --git a/mcs/errors/gcs0699-2.cs b/mcs/errors/cs0699-2.cs
similarity index 100%
rename from mcs/errors/gcs0699-2.cs
rename to mcs/errors/cs0699-2.cs
diff --git a/mcs/errors/gcs0699.cs b/mcs/errors/cs0699.cs
similarity index 100%
rename from mcs/errors/gcs0699.cs
rename to mcs/errors/cs0699.cs
diff --git a/mcs/errors/cs0701-2.cs b/mcs/errors/cs0701-2.cs
new file mode 100644
index 0000000..4075c2e
--- /dev/null
+++ b/mcs/errors/cs0701-2.cs
@@ -0,0 +1,10 @@
+// CS0701: `S' is not a valid constraint. A constraint must be an interface, a non-sealed class or a type parameter
+// Line: 8
+
+struct S
+{
+}
+
+class Foo<T> where T : S
+{
+}
diff --git a/mcs/errors/cs0701-3.cs b/mcs/errors/cs0701-3.cs
new file mode 100644
index 0000000..73e7e7f
--- /dev/null
+++ b/mcs/errors/cs0701-3.cs
@@ -0,0 +1,6 @@
+// CS0701: `string' is not a valid constraint. A constraint must be an interface, a non-sealed class or a type parameter
+// Line: 4
+
+class Foo<T> where T : string
+{
+}
diff --git a/mcs/errors/gcs0701.cs b/mcs/errors/cs0701.cs
similarity index 100%
rename from mcs/errors/gcs0701.cs
rename to mcs/errors/cs0701.cs
diff --git a/mcs/errors/gcs0702-2.cs b/mcs/errors/cs0702-2.cs
similarity index 100%
rename from mcs/errors/gcs0702-2.cs
rename to mcs/errors/cs0702-2.cs
diff --git a/mcs/errors/gcs0702-3.cs b/mcs/errors/cs0702-3.cs
similarity index 100%
rename from mcs/errors/gcs0702-3.cs
rename to mcs/errors/cs0702-3.cs
diff --git a/mcs/errors/gcs0702.cs b/mcs/errors/cs0702.cs
similarity index 100%
rename from mcs/errors/gcs0702.cs
rename to mcs/errors/cs0702.cs
diff --git a/mcs/errors/gcs0703-2.cs b/mcs/errors/cs0703-2.cs
old mode 100755
new mode 100644
similarity index 100%
rename from mcs/errors/gcs0703-2.cs
rename to mcs/errors/cs0703-2.cs
diff --git a/mcs/errors/gcs0703-3.cs b/mcs/errors/cs0703-3.cs
similarity index 100%
rename from mcs/errors/gcs0703-3.cs
rename to mcs/errors/cs0703-3.cs
diff --git a/mcs/errors/gcs0703.cs b/mcs/errors/cs0703.cs
similarity index 100%
rename from mcs/errors/gcs0703.cs
rename to mcs/errors/cs0703.cs
diff --git a/mcs/errors/gcs0704.cs b/mcs/errors/cs0704.cs
old mode 100755
new mode 100644
similarity index 100%
rename from mcs/errors/gcs0704.cs
rename to mcs/errors/cs0704.cs
diff --git a/mcs/errors/gcs0706.cs b/mcs/errors/cs0706.cs
similarity index 100%
rename from mcs/errors/gcs0706.cs
rename to mcs/errors/cs0706.cs
diff --git a/mcs/errors/gcs0717.cs b/mcs/errors/cs0717.cs
similarity index 100%
rename from mcs/errors/gcs0717.cs
rename to mcs/errors/cs0717.cs
diff --git a/mcs/errors/gcs0718.cs b/mcs/errors/cs0718.cs
similarity index 100%
rename from mcs/errors/gcs0718.cs
rename to mcs/errors/cs0718.cs
diff --git a/mcs/errors/gcs0721.cs b/mcs/errors/cs0721-2.cs
similarity index 100%
rename from mcs/errors/gcs0721.cs
rename to mcs/errors/cs0721-2.cs
diff --git a/mcs/errors/gcs0723.cs b/mcs/errors/cs0723-3.cs
similarity index 100%
rename from mcs/errors/gcs0723.cs
rename to mcs/errors/cs0723-3.cs
diff --git a/mcs/errors/cs0728-2.cs b/mcs/errors/cs0728-2.cs
new file mode 100644
index 0000000..2f361a5
--- /dev/null
+++ b/mcs/errors/cs0728-2.cs
@@ -0,0 +1,15 @@
+// CS0728: Possibly incorrect assignment to `d' which is the argument to a using or lock statement
+// Line: 12
+// Compiler options: -warnaserror
+
+using System;
+
+public class Foo
+{
+	public static void Test (IDisposable d)
+	{
+		using (d) {
+			d = null;
+		}
+	}
+}
diff --git a/mcs/errors/cs0728-3.cs b/mcs/errors/cs0728-3.cs
new file mode 100644
index 0000000..640f8da
--- /dev/null
+++ b/mcs/errors/cs0728-3.cs
@@ -0,0 +1,14 @@
+// CS0728: Possibly incorrect assignment to `s' which is the argument to a using or lock statement
+// Line: 12
+// Compiler options: -warnaserror
+
+public class Foo
+{
+	public static void Test (ref string s)
+	{
+		lock (s) {
+			lock (s) {}
+			s = null;
+		}
+	}
+}
diff --git a/mcs/errors/cs0728.cs b/mcs/errors/cs0728.cs
new file mode 100644
index 0000000..1e4b848
--- /dev/null
+++ b/mcs/errors/cs0728.cs
@@ -0,0 +1,19 @@
+// CS0728: Possibly incorrect assignment to `token' which is the argument to a using or lock statement
+// Line: 11
+// Compiler options: -warnaserror
+
+public class Foo
+{
+	public static void Main ()
+	{
+		object token = new object ();
+		lock (token)
+		{
+			Foo2 (ref token);
+		}
+	}
+	
+	static void Foo2 (ref object o)
+	{
+	}
+}
diff --git a/mcs/errors/gcs0729.cs b/mcs/errors/cs0729.cs
similarity index 100%
rename from mcs/errors/gcs0729.cs
rename to mcs/errors/cs0729.cs
diff --git a/mcs/errors/cs0730.cs b/mcs/errors/cs0730.cs
new file mode 100644
index 0000000..54b3ada
--- /dev/null
+++ b/mcs/errors/cs0730.cs
@@ -0,0 +1,8 @@
+// CS0730: Cannot forward type `C.CC' because it is a nested type
+// Line: 8
+// Compiler options: -r:CS0730-lib.dll
+
+using System;
+using System.Runtime.CompilerServices;
+
+[assembly: TypeForwardedTo(typeof (C.CC))]
diff --git a/mcs/errors/gcs0735-2.cs b/mcs/errors/cs0735-2.cs
similarity index 100%
rename from mcs/errors/gcs0735-2.cs
rename to mcs/errors/cs0735-2.cs
diff --git a/mcs/errors/gcs0735.cs b/mcs/errors/cs0735.cs
similarity index 100%
rename from mcs/errors/gcs0735.cs
rename to mcs/errors/cs0735.cs
diff --git a/mcs/errors/cs0738-3.cs b/mcs/errors/cs0738-3.cs
new file mode 100644
index 0000000..b056527
--- /dev/null
+++ b/mcs/errors/cs0738-3.cs
@@ -0,0 +1,31 @@
+// CS738: `CB' does not implement interface member `IG<IA>.Method()' and the best implementing candidate `CA<IB>.Method()' return type `IB' does not match interface member return type `IA'
+// Line: 29
+
+public interface IA
+{
+}
+
+public interface IB : IA
+{
+}
+
+public interface IG<out U>
+{
+	U Method ();
+}
+
+public interface IDerived : IG<IA>
+{
+}
+
+public abstract class CA<T> : IG<T>
+{
+	public T Method ()
+	{
+		return default (T);
+	}
+}
+
+public class CB : CA<IB>, IG<IA>
+{
+}
diff --git a/mcs/errors/gcs0739.cs b/mcs/errors/cs0739.cs
similarity index 100%
rename from mcs/errors/gcs0739.cs
rename to mcs/errors/cs0739.cs
diff --git a/mcs/errors/gcs0746.cs b/mcs/errors/cs0746.cs
similarity index 100%
rename from mcs/errors/gcs0746.cs
rename to mcs/errors/cs0746.cs
diff --git a/mcs/errors/gcs0747-2.cs b/mcs/errors/cs0747-2.cs
similarity index 100%
rename from mcs/errors/gcs0747-2.cs
rename to mcs/errors/cs0747-2.cs
diff --git a/mcs/errors/gcs0747.cs b/mcs/errors/cs0747.cs
similarity index 100%
rename from mcs/errors/gcs0747.cs
rename to mcs/errors/cs0747.cs
diff --git a/mcs/errors/gcs0748.cs b/mcs/errors/cs0748.cs
similarity index 100%
rename from mcs/errors/gcs0748.cs
rename to mcs/errors/cs0748.cs
diff --git a/mcs/errors/gcs0755.cs b/mcs/errors/cs0755.cs
similarity index 100%
rename from mcs/errors/gcs0755.cs
rename to mcs/errors/cs0755.cs
diff --git a/mcs/errors/gcs0818.cs b/mcs/errors/cs0818.cs
similarity index 100%
rename from mcs/errors/gcs0818.cs
rename to mcs/errors/cs0818.cs
diff --git a/mcs/errors/gcs0820.cs b/mcs/errors/cs0820.cs
similarity index 100%
rename from mcs/errors/gcs0820.cs
rename to mcs/errors/cs0820.cs
diff --git a/mcs/errors/gcs0821.cs b/mcs/errors/cs0821.cs
similarity index 100%
rename from mcs/errors/gcs0821.cs
rename to mcs/errors/cs0821.cs
diff --git a/mcs/errors/gcs0822.cs b/mcs/errors/cs0822.cs
similarity index 100%
rename from mcs/errors/gcs0822.cs
rename to mcs/errors/cs0822.cs
diff --git a/mcs/errors/gcs0825-2.cs b/mcs/errors/cs0825-2.cs
similarity index 100%
rename from mcs/errors/gcs0825-2.cs
rename to mcs/errors/cs0825-2.cs
diff --git a/mcs/errors/gcs0825-3.cs b/mcs/errors/cs0825-3.cs
similarity index 100%
rename from mcs/errors/gcs0825-3.cs
rename to mcs/errors/cs0825-3.cs
diff --git a/mcs/errors/gcs0825.cs b/mcs/errors/cs0825.cs
similarity index 100%
rename from mcs/errors/gcs0825.cs
rename to mcs/errors/cs0825.cs
diff --git a/mcs/errors/gcs0826-2.cs b/mcs/errors/cs0826-2.cs
similarity index 100%
rename from mcs/errors/gcs0826-2.cs
rename to mcs/errors/cs0826-2.cs
diff --git a/mcs/errors/gcs0826-3.cs b/mcs/errors/cs0826-3.cs
similarity index 100%
rename from mcs/errors/gcs0826-3.cs
rename to mcs/errors/cs0826-3.cs
diff --git a/mcs/errors/gcs0826-4.cs b/mcs/errors/cs0826-4.cs
similarity index 100%
rename from mcs/errors/gcs0826-4.cs
rename to mcs/errors/cs0826-4.cs
diff --git a/mcs/errors/gcs0826-5.cs b/mcs/errors/cs0826-5.cs
similarity index 100%
rename from mcs/errors/gcs0826-5.cs
rename to mcs/errors/cs0826-5.cs
diff --git a/mcs/errors/gcs0826-6.cs b/mcs/errors/cs0826-6.cs
old mode 100755
new mode 100644
similarity index 100%
rename from mcs/errors/gcs0826-6.cs
rename to mcs/errors/cs0826-6.cs
diff --git a/mcs/errors/gcs0826-7.cs b/mcs/errors/cs0826-7.cs
similarity index 100%
rename from mcs/errors/gcs0826-7.cs
rename to mcs/errors/cs0826-7.cs
diff --git a/mcs/errors/gcs0826-8.cs b/mcs/errors/cs0826-8.cs
similarity index 100%
rename from mcs/errors/gcs0826-8.cs
rename to mcs/errors/cs0826-8.cs
diff --git a/mcs/errors/gcs0826.cs b/mcs/errors/cs0826.cs
similarity index 100%
rename from mcs/errors/gcs0826.cs
rename to mcs/errors/cs0826.cs
diff --git a/mcs/errors/gcs0828-2.cs b/mcs/errors/cs0828-2.cs
similarity index 100%
rename from mcs/errors/gcs0828-2.cs
rename to mcs/errors/cs0828-2.cs
diff --git a/mcs/errors/gcs0828-3.cs b/mcs/errors/cs0828-3.cs
similarity index 100%
rename from mcs/errors/gcs0828-3.cs
rename to mcs/errors/cs0828-3.cs
diff --git a/mcs/errors/gcs0828-4.cs b/mcs/errors/cs0828-4.cs
similarity index 100%
rename from mcs/errors/gcs0828-4.cs
rename to mcs/errors/cs0828-4.cs
diff --git a/mcs/errors/gcs0828-5.cs b/mcs/errors/cs0828-5.cs
similarity index 100%
rename from mcs/errors/gcs0828-5.cs
rename to mcs/errors/cs0828-5.cs
diff --git a/mcs/errors/gcs0828-6.cs b/mcs/errors/cs0828-6.cs
old mode 100755
new mode 100644
similarity index 100%
rename from mcs/errors/gcs0828-6.cs
rename to mcs/errors/cs0828-6.cs
diff --git a/mcs/errors/gcs0828.cs b/mcs/errors/cs0828.cs
similarity index 100%
rename from mcs/errors/gcs0828.cs
rename to mcs/errors/cs0828.cs
diff --git a/mcs/errors/gcs0831-2.cs b/mcs/errors/cs0831-2.cs
similarity index 100%
rename from mcs/errors/gcs0831-2.cs
rename to mcs/errors/cs0831-2.cs
diff --git a/mcs/errors/gcs0831-3.cs b/mcs/errors/cs0831-3.cs
similarity index 100%
rename from mcs/errors/gcs0831-3.cs
rename to mcs/errors/cs0831-3.cs
diff --git a/mcs/errors/gcs0831.cs b/mcs/errors/cs0831.cs
similarity index 100%
rename from mcs/errors/gcs0831.cs
rename to mcs/errors/cs0831.cs
diff --git a/mcs/errors/gcs0832-2.cs b/mcs/errors/cs0832-2.cs
similarity index 100%
rename from mcs/errors/gcs0832-2.cs
rename to mcs/errors/cs0832-2.cs
diff --git a/mcs/errors/gcs0832-3.cs b/mcs/errors/cs0832-3.cs
similarity index 100%
rename from mcs/errors/gcs0832-3.cs
rename to mcs/errors/cs0832-3.cs
diff --git a/mcs/errors/gcs0832-4.cs b/mcs/errors/cs0832-4.cs
similarity index 100%
rename from mcs/errors/gcs0832-4.cs
rename to mcs/errors/cs0832-4.cs
diff --git a/mcs/errors/gcs0832.cs b/mcs/errors/cs0832.cs
similarity index 100%
rename from mcs/errors/gcs0832.cs
rename to mcs/errors/cs0832.cs
diff --git a/mcs/errors/gcs0833.cs b/mcs/errors/cs0833.cs
similarity index 100%
rename from mcs/errors/gcs0833.cs
rename to mcs/errors/cs0833.cs
diff --git a/mcs/errors/gcs0834-2.cs b/mcs/errors/cs0834-2.cs
similarity index 100%
rename from mcs/errors/gcs0834-2.cs
rename to mcs/errors/cs0834-2.cs
diff --git a/mcs/errors/gcs0834.cs b/mcs/errors/cs0834.cs
similarity index 100%
rename from mcs/errors/gcs0834.cs
rename to mcs/errors/cs0834.cs
diff --git a/mcs/errors/gcs0835.cs b/mcs/errors/cs0835.cs
similarity index 100%
rename from mcs/errors/gcs0835.cs
rename to mcs/errors/cs0835.cs
diff --git a/mcs/errors/gcs0836.cs b/mcs/errors/cs0836.cs
old mode 100755
new mode 100644
similarity index 100%
rename from mcs/errors/gcs0836.cs
rename to mcs/errors/cs0836.cs
diff --git a/mcs/errors/gcs0837.cs b/mcs/errors/cs0837-2.cs
similarity index 100%
rename from mcs/errors/gcs0837.cs
rename to mcs/errors/cs0837-2.cs
diff --git a/mcs/errors/gcs0838.cs b/mcs/errors/cs0838.cs
similarity index 100%
rename from mcs/errors/gcs0838.cs
rename to mcs/errors/cs0838.cs
diff --git a/mcs/errors/gcs0840.cs b/mcs/errors/cs0840.cs
similarity index 100%
rename from mcs/errors/gcs0840.cs
rename to mcs/errors/cs0840.cs
diff --git a/mcs/errors/gcs0841.cs b/mcs/errors/cs0841-4.cs
similarity index 100%
rename from mcs/errors/gcs0841.cs
rename to mcs/errors/cs0841-4.cs
diff --git a/mcs/errors/gcs0842.cs b/mcs/errors/cs0842.cs
old mode 100755
new mode 100644
similarity index 100%
rename from mcs/errors/gcs0842.cs
rename to mcs/errors/cs0842.cs
diff --git a/mcs/errors/cs0843-2.cs b/mcs/errors/cs0843-2.cs
new file mode 100644
index 0000000..eb90055
--- /dev/null
+++ b/mcs/errors/cs0843-2.cs
@@ -0,0 +1,12 @@
+// CS0843: An automatically implemented property `S.A' must be fully assigned before control leaves the constructor. Consider calling the default struct contructor from a constructor initializer
+// Line: 8
+
+public struct S
+{
+	public int A { get; set;}
+
+	public S (int a)
+	{
+		this.A = a;
+	}
+}
diff --git a/mcs/errors/cs0843-3.cs b/mcs/errors/cs0843-3.cs
new file mode 100644
index 0000000..696ef16
--- /dev/null
+++ b/mcs/errors/cs0843-3.cs
@@ -0,0 +1,16 @@
+// CS0843: An automatically implemented property `S.A' must be fully assigned before control leaves the constructor. Consider calling the default struct contructor from a constructor initializer
+// Line: 11
+
+using System;
+
+public struct S
+{
+	public int A { get; set;}
+	event EventHandler eh;
+
+	public S (int a)
+	{
+		this.eh = null;
+		A = a;
+	}
+}
diff --git a/mcs/errors/cs0843.cs b/mcs/errors/cs0843.cs
new file mode 100644
index 0000000..9849c4a
--- /dev/null
+++ b/mcs/errors/cs0843.cs
@@ -0,0 +1,13 @@
+// CS0843: An automatically implemented property `S.Short' must be fully assigned before control leaves the constructor. Consider calling the default struct contructor from a constructor initializer
+// Line: 8
+
+using System;
+
+struct S
+{
+	public S (int value)
+	{
+	}
+	
+	public short Short { get; set; }
+}
diff --git a/mcs/errors/cs0844-2.cs b/mcs/errors/cs0844-2.cs
index 051557d..c8272cc 100644
--- a/mcs/errors/cs0844-2.cs
+++ b/mcs/errors/cs0844-2.cs
@@ -1,4 +1,4 @@
-// CS0844: A local variable `y' cannot be used before it is declared. Consider renaming the local variable when it hides the field `X.y'
+// CS0844: A local variable `y' cannot be used before it is declared. Consider renaming the local variable when it hides the member `X.y'
 // Line: 8
 
 class X
diff --git a/mcs/errors/cs0844-3.cs b/mcs/errors/cs0844-3.cs
new file mode 100644
index 0000000..b352c75
--- /dev/null
+++ b/mcs/errors/cs0844-3.cs
@@ -0,0 +1,20 @@
+// CS0844: A local variable `top' cannot be used before it is declared. Consider renaming the local variable when it hides the member `X.top'
+// Line: 17
+
+class Symbol
+{
+}
+
+class X
+{
+	Symbol top;
+
+	internal int Enter (Symbol key, object value)
+	{
+		if (key != null) {
+			top = key;
+		}
+		object top = null;
+		return top.Count;
+	}
+}
diff --git a/mcs/errors/cs0844-4.cs b/mcs/errors/cs0844-4.cs
new file mode 100644
index 0000000..ca0badf
--- /dev/null
+++ b/mcs/errors/cs0844-4.cs
@@ -0,0 +1,13 @@
+// CS0844: A local variable `s' cannot be used before it is declared. Consider renaming the local variable when it hides the member `C.s'
+// Line: 10
+
+class C
+{
+	const string s = "s";
+
+	public void Test ()
+	{
+		s = "x";
+		string s = "a";
+	}
+}
diff --git a/mcs/errors/cs0844-5.cs b/mcs/errors/cs0844-5.cs
new file mode 100644
index 0000000..dc7efa7
--- /dev/null
+++ b/mcs/errors/cs0844-5.cs
@@ -0,0 +1,15 @@
+// CS0844: A local variable `s' cannot be used before it is declared. Consider renaming the local variable when it hides the member `C.s'
+// Line: 10
+
+class C
+{
+	string s {
+		set {}
+	}
+
+	public void Test ()
+	{
+		s = "x";
+		string s = "a";
+	}
+}
diff --git a/mcs/errors/cs0844.cs b/mcs/errors/cs0844.cs
index dc7f835..7c7891d 100644
--- a/mcs/errors/cs0844.cs
+++ b/mcs/errors/cs0844.cs
@@ -1,4 +1,4 @@
-// CS0844: A local variable `s' cannot be used before it is declared. Consider renaming the local variable when it hides the field `C.s'
+// CS0844: A local variable `s' cannot be used before it is declared. Consider renaming the local variable when it hides the member `C.s'
 // Line: 10
 
 class C
diff --git a/mcs/errors/gcs0845.cs b/mcs/errors/cs0845.cs
similarity index 100%
rename from mcs/errors/gcs0845.cs
rename to mcs/errors/cs0845.cs
diff --git a/mcs/errors/gcs0853.cs b/mcs/errors/cs0853.cs
similarity index 100%
rename from mcs/errors/gcs0853.cs
rename to mcs/errors/cs0853.cs
diff --git a/mcs/errors/gcs0854-2.cs b/mcs/errors/cs0854-2.cs
similarity index 100%
rename from mcs/errors/gcs0854-2.cs
rename to mcs/errors/cs0854-2.cs
diff --git a/mcs/errors/gcs0854.cs b/mcs/errors/cs0854.cs
similarity index 100%
rename from mcs/errors/gcs0854.cs
rename to mcs/errors/cs0854.cs
diff --git a/mcs/errors/cs1001-3.cs b/mcs/errors/cs1001-3.cs
new file mode 100755
index 0000000..b09054c
--- /dev/null
+++ b/mcs/errors/cs1001-3.cs
@@ -0,0 +1,10 @@
+// CS1001: Unexpected symbol `)', expecting identifier
+// Line: 8
+
+class C
+{
+	public static void Main ()
+	{
+		object o = (int) => null;
+	}
+}
diff --git a/mcs/errors/cs1001-4.cs b/mcs/errors/cs1001-4.cs
new file mode 100644
index 0000000..451eb4b
--- /dev/null
+++ b/mcs/errors/cs1001-4.cs
@@ -0,0 +1,9 @@
+// CS1001: Unexpected symbol `)', expecting identifier
+// Line: 6
+
+class B<T>
+{
+	T Foo (T)
+	{
+	}
+}
diff --git a/mcs/errors/cs1001.cs b/mcs/errors/cs1001.cs
new file mode 100644
index 0000000..a1651fe
--- /dev/null
+++ b/mcs/errors/cs1001.cs
@@ -0,0 +1,9 @@
+// CS1001: Unexpected symbol `)', expecting identifier
+// Line: 6
+
+class T {
+	// Change (args) to (string args) to fix it
+	public static int Main (args)
+	{
+	}
+}
diff --git a/mcs/errors/cs1003.cs b/mcs/errors/cs1003.cs
deleted file mode 100644
index 54c302e..0000000
--- a/mcs/errors/cs1003.cs
+++ /dev/null
@@ -1,6 +0,0 @@
-// CS1003: Syntax error, `.' expected
-// Line: 4
-
-namespace a::b
-{
-}
diff --git a/mcs/errors/cs1010-3.cs b/mcs/errors/cs1010-3.cs
new file mode 100644
index 0000000..bec6f3d
--- /dev/null
+++ b/mcs/errors/cs1010-3.cs
@@ -0,0 +1,11 @@
+// CS1010 : Newline in constant
+// Line: 8
+
+class C
+{
+	static void Main ()
+	{
+		var a = 1'
+		int i = 2;
+	}
+}
\ No newline at end of file
diff --git a/mcs/errors/cs1018-2.cs b/mcs/errors/cs1018-2.cs
deleted file mode 100644
index 5a9ecba..0000000
--- a/mcs/errors/cs1018-2.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-// CS1018: Keyword `this' or `base' expected
-// Line: 7
-
-class Bar
-{
-	Bar(int a)
-		:super()
-	{
-	}
-}
diff --git a/mcs/errors/cs1018.cs b/mcs/errors/cs1018.cs
deleted file mode 100644
index ed423c5..0000000
--- a/mcs/errors/cs1018.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-// CS1018: Keyword `this' or `base' expected
-// Line: 5
-
-class X {
-	X () : {
-	}
-
-	static void Main () {}
-}
diff --git a/mcs/errors/cs1041-2.cs b/mcs/errors/cs1041-2.cs
deleted file mode 100644
index b108fb6..0000000
--- a/mcs/errors/cs1041-2.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-// cs1001: Identifier expected
-// Line: 6
-
-class T {
-	// Change (args) to (string args) to fix it
-	public static int Main (args)
-	{
-	}
-}
diff --git a/mcs/errors/cs1041.cs b/mcs/errors/cs1041.cs
index 3e2ad89..a770876 100644
--- a/mcs/errors/cs1041.cs
+++ b/mcs/errors/cs1041.cs
@@ -1,6 +1,15 @@
-// cs1041.cs: Identifier expected: `int' is a keyword
-// Line: 5
+// CS1041: Identifier expected, `foreach' is a keyword
+// Line: 11
 
-public class Test {
-    void T (int int) {}
+public partial class Log
+{
+	void Update (object[] h)
+	{
+		if (h == null)
+			return;
+		
+		logstore.
+		foreach (var rev in h) {
+		}
+	}
 }
diff --git a/mcs/errors/cs1056.cs b/mcs/errors/cs1056.cs
new file mode 100644
index 0000000..71c14eb
--- /dev/null
+++ b/mcs/errors/cs1056.cs
@@ -0,0 +1,10 @@
+// CS1056: Unexpected character `$'
+// Line: 8
+
+public class C
+{
+	void Update ()
+	{
+		int a = $7;
+	}
+}
diff --git a/mcs/errors/gcs1058-1.cs b/mcs/errors/cs1058-1.cs
similarity index 100%
rename from mcs/errors/gcs1058-1.cs
rename to mcs/errors/cs1058-1.cs
diff --git a/mcs/errors/gcs1058-2.cs b/mcs/errors/cs1058-2.cs
similarity index 100%
rename from mcs/errors/gcs1058-2.cs
rename to mcs/errors/cs1058-2.cs
diff --git a/mcs/errors/cs1059-2.cs b/mcs/errors/cs1059-2.cs
index 4b1d55d..800f23b 100644
--- a/mcs/errors/cs1059-2.cs
+++ b/mcs/errors/cs1059-2.cs
@@ -1,10 +1,10 @@
-// CS1059: The operand of an increment or decrement operator must be a variable, property or indexer
-// Line: 8
-
-using System;
-
-public class Test {
-	void Main () {
-		Console.WriteLine (++0);
-	}
-}
+// CS1059: The operand of an increment or decrement operator must be a variable, property or indexer
+// Line: 8
+
+using System;
+
+public class Test {
+	void Main () {
+		Console.WriteLine (++0);
+	}
+}
diff --git a/mcs/errors/gcs1061-4.cs b/mcs/errors/cs1061-4.cs
similarity index 100%
rename from mcs/errors/gcs1061-4.cs
rename to mcs/errors/cs1061-4.cs
diff --git a/mcs/errors/gcs1061-5.cs b/mcs/errors/cs1061-5.cs
similarity index 100%
rename from mcs/errors/gcs1061-5.cs
rename to mcs/errors/cs1061-5.cs
diff --git a/mcs/errors/gcs1061-6.cs b/mcs/errors/cs1061-6.cs
old mode 100755
new mode 100644
similarity index 100%
rename from mcs/errors/gcs1061-6.cs
rename to mcs/errors/cs1061-6.cs
diff --git a/mcs/errors/gcs1061.cs b/mcs/errors/cs1061-7.cs
similarity index 100%
rename from mcs/errors/gcs1061.cs
rename to mcs/errors/cs1061-7.cs
diff --git a/mcs/errors/gcs1061-2.cs b/mcs/errors/cs1061-8.cs
similarity index 100%
rename from mcs/errors/gcs1061-2.cs
rename to mcs/errors/cs1061-8.cs
diff --git a/mcs/errors/gcs1061-3.cs b/mcs/errors/cs1061-9.cs
similarity index 100%
rename from mcs/errors/gcs1061-3.cs
rename to mcs/errors/cs1061-9.cs
diff --git a/mcs/errors/gcs1067.cs b/mcs/errors/cs1067.cs
similarity index 100%
rename from mcs/errors/gcs1067.cs
rename to mcs/errors/cs1067.cs
diff --git a/mcs/errors/gcs1100.cs b/mcs/errors/cs1100.cs
similarity index 100%
rename from mcs/errors/gcs1100.cs
rename to mcs/errors/cs1100.cs
diff --git a/mcs/errors/gcs1101.cs b/mcs/errors/cs1101.cs
similarity index 100%
rename from mcs/errors/gcs1101.cs
rename to mcs/errors/cs1101.cs
diff --git a/mcs/errors/gcs1102.cs b/mcs/errors/cs1102.cs
similarity index 100%
rename from mcs/errors/gcs1102.cs
rename to mcs/errors/cs1102.cs
diff --git a/mcs/errors/gcs1103.cs b/mcs/errors/cs1103.cs
similarity index 100%
rename from mcs/errors/gcs1103.cs
rename to mcs/errors/cs1103.cs
diff --git a/mcs/errors/gcs1104.cs b/mcs/errors/cs1104.cs
similarity index 100%
rename from mcs/errors/gcs1104.cs
rename to mcs/errors/cs1104.cs
diff --git a/mcs/errors/gcs1105.cs b/mcs/errors/cs1105.cs
similarity index 100%
rename from mcs/errors/gcs1105.cs
rename to mcs/errors/cs1105.cs
diff --git a/mcs/errors/gcs1106-2.cs b/mcs/errors/cs1106-2.cs
similarity index 100%
rename from mcs/errors/gcs1106-2.cs
rename to mcs/errors/cs1106-2.cs
diff --git a/mcs/errors/gcs1106.cs b/mcs/errors/cs1106.cs
similarity index 100%
rename from mcs/errors/gcs1106.cs
rename to mcs/errors/cs1106.cs
diff --git a/mcs/errors/gcs1109.cs b/mcs/errors/cs1109.cs
similarity index 100%
rename from mcs/errors/gcs1109.cs
rename to mcs/errors/cs1109.cs
diff --git a/mcs/errors/gcs1110.cs b/mcs/errors/cs1110.cs
similarity index 100%
rename from mcs/errors/gcs1110.cs
rename to mcs/errors/cs1110.cs
diff --git a/mcs/errors/gcs1112-2.cs b/mcs/errors/cs1112-2.cs
similarity index 100%
rename from mcs/errors/gcs1112-2.cs
rename to mcs/errors/cs1112-2.cs
diff --git a/mcs/errors/gcs1112-3.cs b/mcs/errors/cs1112-3.cs
similarity index 100%
rename from mcs/errors/gcs1112-3.cs
rename to mcs/errors/cs1112-3.cs
diff --git a/mcs/errors/gcs1112.cs b/mcs/errors/cs1112.cs
similarity index 100%
rename from mcs/errors/gcs1112.cs
rename to mcs/errors/cs1112.cs
diff --git a/mcs/errors/gcs1113-2.cs b/mcs/errors/cs1113-2.cs
similarity index 100%
rename from mcs/errors/gcs1113-2.cs
rename to mcs/errors/cs1113-2.cs
diff --git a/mcs/errors/gcs1113.cs b/mcs/errors/cs1113.cs
similarity index 100%
rename from mcs/errors/gcs1113.cs
rename to mcs/errors/cs1113.cs
diff --git a/mcs/errors/cs1501-5.cs b/mcs/errors/cs1501-5.cs
new file mode 100644
index 0000000..6a51f13
--- /dev/null
+++ b/mcs/errors/cs1501-5.cs
@@ -0,0 +1,15 @@
+// CS1501: No overload for method `Foo' takes `1' arguments
+// Line: 12
+
+public class Test
+{
+	static void Foo (int a, int b = 1, int c = 2)
+	{
+	}
+	
+	public static void Main ()
+	{
+		Foo (c : -1);
+	}
+}
+
diff --git a/mcs/errors/gcs1501.cs b/mcs/errors/cs1501-6.cs
similarity index 100%
rename from mcs/errors/gcs1501.cs
rename to mcs/errors/cs1501-6.cs
diff --git a/mcs/errors/gcs1501-2.cs b/mcs/errors/cs1501-7.cs
similarity index 100%
rename from mcs/errors/gcs1501-2.cs
rename to mcs/errors/cs1501-7.cs
diff --git a/mcs/errors/gcs1501-3.cs b/mcs/errors/cs1501-8.cs
similarity index 100%
rename from mcs/errors/gcs1501-3.cs
rename to mcs/errors/cs1501-8.cs
diff --git a/mcs/errors/gcs1501-4.cs b/mcs/errors/cs1501-9.cs
similarity index 100%
rename from mcs/errors/gcs1501-4.cs
rename to mcs/errors/cs1501-9.cs
diff --git a/mcs/errors/gcs1502.cs b/mcs/errors/cs1502-12.cs
similarity index 100%
rename from mcs/errors/gcs1502.cs
rename to mcs/errors/cs1502-12.cs
diff --git a/mcs/errors/gcs1502-3.cs b/mcs/errors/cs1502-13.cs
similarity index 100%
rename from mcs/errors/gcs1502-3.cs
rename to mcs/errors/cs1502-13.cs
diff --git a/mcs/errors/gcs1502-2.cs b/mcs/errors/cs1502-14.cs
similarity index 100%
rename from mcs/errors/gcs1502-2.cs
rename to mcs/errors/cs1502-14.cs
diff --git a/mcs/errors/gcs1503.cs b/mcs/errors/cs1503-12.cs
similarity index 100%
rename from mcs/errors/gcs1503.cs
rename to mcs/errors/cs1503-12.cs
diff --git a/mcs/errors/gcs1503-4.cs b/mcs/errors/cs1503-13.cs
similarity index 100%
rename from mcs/errors/gcs1503-4.cs
rename to mcs/errors/cs1503-13.cs
diff --git a/mcs/errors/cs1503.cs b/mcs/errors/cs1503.cs
index 577b988..800722e 100644
--- a/mcs/errors/cs1503.cs
+++ b/mcs/errors/cs1503.cs
@@ -1,17 +1,17 @@
-// CS1503: Argument `#1' cannot convert `int' expression to type `bool'
-// Line: 15
-
-class A
-{
-	public static void Foo (bool test)
-	{
-	}
-}
-
-class B
-{
-	public static void Main()
-	{
-		A.Foo (1);
-	}
-}
+// CS1503: Argument `#1' cannot convert `int' expression to type `bool'
+// Line: 15
+
+class A
+{
+	public static void Foo (bool test)
+	{
+	}
+}
+
+class B
+{
+	public static void Main()
+	{
+		A.Foo (1);
+	}
+}
diff --git a/mcs/errors/cs1510-5.cs b/mcs/errors/cs1510-5.cs
new file mode 100644
index 0000000..3ab08ba
--- /dev/null
+++ b/mcs/errors/cs1510-5.cs
@@ -0,0 +1,15 @@
+// CS1510: A ref or out argument must be an assignable variable
+// Line: 9
+
+class C
+{
+	public static void Main ()
+	{
+		const char c = 'a';
+		Foo (ref c);
+	}
+
+	static void Foo(ref char i)
+	{
+	}
+}
diff --git a/mcs/errors/cs1513.cs b/mcs/errors/cs1513.cs
deleted file mode 100644
index b81c53a..0000000
--- a/mcs/errors/cs1513.cs
+++ /dev/null
@@ -1,6 +0,0 @@
-// CS1513: Expected `}'
-// Line: 7
-
-namespace X  {
-
-	
diff --git a/mcs/errors/cs1518.cs b/mcs/errors/cs1518.cs
deleted file mode 100644
index 138dece..0000000
--- a/mcs/errors/cs1518.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-// CS1518: Expected `class', `delegate', `enum', `interface', or `struct'
-// Line: 6
-
-namespace X {
-
-	sealed fe {}
-}
diff --git a/mcs/errors/gcs1521.cs b/mcs/errors/cs1521-4.cs
similarity index 100%
rename from mcs/errors/gcs1521.cs
rename to mcs/errors/cs1521-4.cs
diff --git a/mcs/errors/cs1525-17.cs b/mcs/errors/cs1525-17.cs
new file mode 100644
index 0000000..34a8039
--- /dev/null
+++ b/mcs/errors/cs1525-17.cs
@@ -0,0 +1,9 @@
+// CS1525: Unexpected symbol `:', expecting `,', `;', or `='
+// Line: 7
+
+class X {
+	public static void Main ()
+	{
+		int myarray:;
+	}
+}
diff --git a/mcs/errors/cs1525-18.cs b/mcs/errors/cs1525-18.cs
new file mode 100644
index 0000000..5f892ef
--- /dev/null
+++ b/mcs/errors/cs1525-18.cs
@@ -0,0 +1,15 @@
+// CS1518: Unexpected symbol `ew'
+// Line: 6
+
+class TestClass
+{
+	object changes = n ew object ();
+	
+	public int IndentLevel {
+		get {
+			return 0;
+		}
+		set {
+		}
+	}
+}
diff --git a/mcs/errors/cs1525-19.cs b/mcs/errors/cs1525-19.cs
new file mode 100644
index 0000000..05d6451
--- /dev/null
+++ b/mcs/errors/cs1525-19.cs
@@ -0,0 +1,6 @@
+// CS1525: Unexpected symbol `int'
+// Line: 5
+
+public class Test {
+    void T (int int) {}
+}
diff --git a/mcs/errors/cs1525-20.cs b/mcs/errors/cs1525-20.cs
new file mode 100644
index 0000000..2aefb87
--- /dev/null
+++ b/mcs/errors/cs1525-20.cs
@@ -0,0 +1,18 @@
+// CS1525: Unexpected symbol `default:'
+// Line: 12
+
+class Program
+{
+	static void Main ()
+	{
+		int x = 0;
+		switch (x) {
+		case 2:
+			int a = 1;
+		case default:
+			return;
+		case 1:
+			int b = 1;
+		}
+	}
+}
diff --git a/mcs/errors/cs1525-21.cs b/mcs/errors/cs1525-21.cs
new file mode 100644
index 0000000..c5b16c3
--- /dev/null
+++ b/mcs/errors/cs1525-21.cs
@@ -0,0 +1,11 @@
+// CS1525: Unexpected symbol `}'
+// Line: 10
+
+class MainClass
+{
+	public static void Main (string[] args)
+	{
+		foreach (int i in myints)
+
+	}
+}
diff --git a/mcs/errors/cs1525-22.cs b/mcs/errors/cs1525-22.cs
new file mode 100644
index 0000000..b0f1e12
--- /dev/null
+++ b/mcs/errors/cs1525-22.cs
@@ -0,0 +1,6 @@
+// CS1525: Unexpected symbol `::', expecting `.' or `{'
+// Line: 4
+
+namespace a::b
+{
+}
diff --git a/mcs/errors/cs1525-23.cs b/mcs/errors/cs1525-23.cs
new file mode 100644
index 0000000..8a97e05
--- /dev/null
+++ b/mcs/errors/cs1525-23.cs
@@ -0,0 +1,10 @@
+// CS1525: Unexpected symbol `public', expecting `:', `;', or `{'
+// Line: 5
+
+class TorrentEditor {
+	TorrentEditor ()
+
+	public TorrentEditor ()
+	{
+	}
+}
diff --git a/mcs/errors/cs1525-24.cs b/mcs/errors/cs1525-24.cs
new file mode 100644
index 0000000..c481178
--- /dev/null
+++ b/mcs/errors/cs1525-24.cs
@@ -0,0 +1,9 @@
+// CS1525: Unexpected symbol `{', expecting `base' or `this'
+// Line: 5
+
+class X {
+	X () : {
+	}
+
+	static void Main () {}
+}
diff --git a/mcs/errors/cs1525-25.cs b/mcs/errors/cs1525-25.cs
new file mode 100644
index 0000000..8e2784c
--- /dev/null
+++ b/mcs/errors/cs1525-25.cs
@@ -0,0 +1,10 @@
+// CS1525: Unexpected symbol `super', expecting `base' or `this'
+// Line: 7
+
+class Bar
+{
+	Bar(int a)
+		:super()
+	{
+	}
+}
diff --git a/mcs/errors/cs1525-26.cs b/mcs/errors/cs1525-26.cs
new file mode 100644
index 0000000..dce0c5d
--- /dev/null
+++ b/mcs/errors/cs1525-26.cs
@@ -0,0 +1,10 @@
+// CS1525: Unexpected symbol `3'
+// Line: 8
+
+public class X
+{
+	public static void Main ()
+	{
+		v * 3;
+	}
+}
diff --git a/mcs/errors/cs1525-27.cs b/mcs/errors/cs1525-27.cs
new file mode 100644
index 0000000..dc18493
--- /dev/null
+++ b/mcs/errors/cs1525-27.cs
@@ -0,0 +1,7 @@
+// CS1525: Unexpected symbol `fe', expecting `class', `delegate', `enum', `interface', `partial', or `struct'
+// Line: 6
+
+namespace X
+{
+	sealed fe {}
+}
diff --git a/mcs/errors/cs1525-28.cs b/mcs/errors/cs1525-28.cs
new file mode 100644
index 0000000..c7cd57e
--- /dev/null
+++ b/mcs/errors/cs1525-28.cs
@@ -0,0 +1,6 @@
+// CS1525: Unexpected symbol `end-of-file'
+// Line: 7
+
+namespace X  {
+
+	
diff --git a/mcs/errors/cs1525-29.cs b/mcs/errors/cs1525-29.cs
new file mode 100644
index 0000000..ec15026
--- /dev/null
+++ b/mcs/errors/cs1525-29.cs
@@ -0,0 +1,13 @@
+// CS1525: Unexpected symbol `}'
+// Line: 10
+
+namespace TestProject
+{
+    class MainClass
+    {
+        public static void Main ()
+        {
+            for (int i = 0;
+        }
+    }
+} 
diff --git a/mcs/errors/cs1525-30.cs b/mcs/errors/cs1525-30.cs
new file mode 100644
index 0000000..3591e3f
--- /dev/null
+++ b/mcs/errors/cs1525-30.cs
@@ -0,0 +1,7 @@
+// CS1525: Unexpected symbol `Foo'
+// Line: 4
+
+Foo
+	tag = 0;
+Bar
+	tag = 1;
diff --git a/mcs/errors/cs1525-31.cs b/mcs/errors/cs1525-31.cs
new file mode 100644
index 0000000..3876f06
--- /dev/null
+++ b/mcs/errors/cs1525-31.cs
@@ -0,0 +1,7 @@
+// CS1525: Unexpected symbol `float'
+// Line: 6
+
+namespace Bar
+{
+	float a;
+}
diff --git a/mcs/errors/gcs1525-2.cs b/mcs/errors/cs1525-32.cs
similarity index 100%
rename from mcs/errors/gcs1525-2.cs
rename to mcs/errors/cs1525-32.cs
diff --git a/mcs/errors/gcs1525.cs b/mcs/errors/cs1525-33.cs
similarity index 100%
rename from mcs/errors/gcs1525.cs
rename to mcs/errors/cs1525-33.cs
diff --git a/mcs/errors/gcs1525-4.cs b/mcs/errors/cs1525-34.cs
similarity index 100%
rename from mcs/errors/gcs1525-4.cs
rename to mcs/errors/cs1525-34.cs
diff --git a/mcs/errors/cs1525-9.cs b/mcs/errors/cs1525-9.cs
index 857c27e..e8963e5 100644
--- a/mcs/errors/cs1525-9.cs
+++ b/mcs/errors/cs1525-9.cs
@@ -1,4 +1,4 @@
-// CS1525: Unexpected symbol `(', expecting `)', `,', `;', `[', or `='
+// CS1525: Unexpected symbol `(', expecting `,', `;', or `='
 // Line: 13
 
 class X {
diff --git a/mcs/errors/cs1540-12.cs b/mcs/errors/cs1540-12.cs
index 5f9d1ce..743ca56 100644
--- a/mcs/errors/cs1540-12.cs
+++ b/mcs/errors/cs1540-12.cs
@@ -1,23 +1,23 @@
-// CS1540: Cannot access protected member `A.Test.get' via a qualifier of type `B'. The qualifier must be of type `C' or derived from it
-// Line: 17
-
-class A
-{
-	public object[] Test {
-		set { }
-		protected get { return null; }
-	}
-}
-
-class B : A
-{
-}
-
-class C : A
-{
-	public void Test2 (B b)
-	{
-		foreach (object o in b.Test) {
-		}
-	}
-}
+// CS1540: Cannot access protected member `A.Test.get' via a qualifier of type `B'. The qualifier must be of type `C' or derived from it
+// Line: 17
+
+class A
+{
+	public object[] Test {
+		set { }
+		protected get { return null; }
+	}
+}
+
+class B : A
+{
+}
+
+class C : A
+{
+	public void Test2 (B b)
+	{
+		foreach (object o in b.Test) {
+		}
+	}
+}
diff --git a/mcs/errors/cs1542.cs b/mcs/errors/cs1542.cs
new file mode 100644
index 0000000..51f7bcc
--- /dev/null
+++ b/mcs/errors/cs1542.cs
@@ -0,0 +1,3 @@
+// CS1542: Added module file `CS1542-lib.dll' is an assembly. Consider using `-r' option to reference the file
+// Line: 0
+// Compiler options: -r:CS1542-lib.dll
\ No newline at end of file
diff --git a/mcs/errors/gcs1547.cs b/mcs/errors/cs1547-10.cs
similarity index 100%
rename from mcs/errors/gcs1547.cs
rename to mcs/errors/cs1547-10.cs
diff --git a/mcs/errors/gcs1547-2.cs b/mcs/errors/cs1547-11.cs
similarity index 100%
rename from mcs/errors/gcs1547-2.cs
rename to mcs/errors/cs1547-11.cs
diff --git a/mcs/errors/gcs1547-3.cs b/mcs/errors/cs1547-12.cs
similarity index 100%
rename from mcs/errors/gcs1547-3.cs
rename to mcs/errors/cs1547-12.cs
diff --git a/mcs/errors/cs1547-3.cs b/mcs/errors/cs1547-3.cs
index 4067318..893a227 100644
--- a/mcs/errors/cs1547-3.cs
+++ b/mcs/errors/cs1547-3.cs
@@ -1,7 +1,7 @@
 // CS1547.cs: Keyword `void' cannot be used in this context
 // Line: 6
 
-class C {
+class C {
 	const string s = "3";
 	public object o = (void)s;
 }
\ No newline at end of file
diff --git a/mcs/errors/cs1547-5.cs b/mcs/errors/cs1547-5.cs
index 315f2df..c673fa1 100644
--- a/mcs/errors/cs1547-5.cs
+++ b/mcs/errors/cs1547-5.cs
@@ -1,8 +1,8 @@
 // CS1547: Keyword `void' cannot be used in this context
 // Line: 6
 
-class C {
-	static void Main () {
-		int i = sizeof (void);
+class C {
+	static void Main () {
+		int i = sizeof (void);
 	}
 }
\ No newline at end of file
diff --git a/mcs/errors/cs1547-6.cs b/mcs/errors/cs1547-6.cs
index f8605cf..d89e319 100644
--- a/mcs/errors/cs1547-6.cs
+++ b/mcs/errors/cs1547-6.cs
@@ -1,6 +1,6 @@
 // CS1547: Keyword `void' cannot be used in this context
 // Line: 6
 
-class C {
-	object o = new void();
+class C {
+	object o = new void();
 }
\ No newline at end of file
diff --git a/mcs/errors/cs1547-7.cs b/mcs/errors/cs1547-7.cs
index 874a0a3..a1e15dc 100644
--- a/mcs/errors/cs1547-7.cs
+++ b/mcs/errors/cs1547-7.cs
@@ -1,12 +1,12 @@
 // CS1547: Keyword `void' cannot be used in this context
 // Line: 6
 
-class C
-{
-	int Foo ()
-	{
-		foreach (void v in this)
-		{
-		}
-	}
+class C
+{
+	int Foo ()
+	{
+		foreach (void v in this)
+		{
+		}
+	}
 }
\ No newline at end of file
diff --git a/mcs/errors/cs1548-2.cs b/mcs/errors/cs1548-2.cs
index 57ebd3c..1242370 100644
--- a/mcs/errors/cs1548-2.cs
+++ b/mcs/errors/cs1548-2.cs
@@ -1,4 +1,4 @@
-// cs1548-2.cs: Error during assembly signing. The specified file `cs1548-2.cs' does not have a private key
+// CS1548: Error during assembly signing. The specified key file `cs1548-2.cs' has incorrect format
 // Line: 0
 
 using System.Reflection;
diff --git a/mcs/errors/cs1548-3.cs b/mcs/errors/cs1548-3.cs
index a104bbf..09409e3 100644
--- a/mcs/errors/cs1548-3.cs
+++ b/mcs/errors/cs1548-3.cs
@@ -1,4 +1,4 @@
-// cs1548-3.cs: Error during assembly signing. The specified file `cs1548.pub' does not have a private key
+// CS1548: Error during assembly signing. The specified key file does not have a private key
 // Line: 0
 
 using System.Reflection;
diff --git a/mcs/errors/cs1548-4.cs b/mcs/errors/cs1548-4.cs
new file mode 100644
index 0000000..03008e4
--- /dev/null
+++ b/mcs/errors/cs1548-4.cs
@@ -0,0 +1,10 @@
+// CS1548: Error during assembly signing. The specified key file `missing.snk' does not exist
+// Line: 0
+// Compiler options: -keyfile:missing.snk
+
+class C
+{
+	public static void Main ()
+	{
+	}
+}
diff --git a/mcs/errors/cs1548.cs b/mcs/errors/cs1548.cs
index 0deb401..b4556b2 100644
--- a/mcs/errors/cs1548.cs
+++ b/mcs/errors/cs1548.cs
@@ -1,4 +1,4 @@
-// cs1548.cs: Error during assembly signing. The specified file `file_not_found.snk' does not exist
+// CS1548: Error during assembly signing. The specified key file `file_not_found.snk' does not exist
 // Line: 0
 
 using System.Reflection;
diff --git a/mcs/errors/cs1577-2.cs b/mcs/errors/cs1577-2.cs
new file mode 100644
index 0000000..12d909f
--- /dev/null
+++ b/mcs/errors/cs1577-2.cs
@@ -0,0 +1,13 @@
+// CS1577: Referenced assembly `CS1577-lib, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' does not have a strong name
+// Line: 0
+// Compiler options: -r:CS1577-lib.dll
+
+[assembly: System.Reflection.AssemblyKeyFileAttribute ("cs1577.snk")]
+
+class Test
+{
+	static void Main ()
+	{
+		C c = new C ();
+	}
+}
diff --git a/mcs/errors/cs1577.cs b/mcs/errors/cs1577.cs
new file mode 100644
index 0000000..89a3827
--- /dev/null
+++ b/mcs/errors/cs1577.cs
@@ -0,0 +1,11 @@
+// CS1577: Referenced assembly `CS1577-lib, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' does not have a strong name
+// Line: 0
+// Compiler options: -keyfile:cs1577.snk -r:CS1577-lib.dll
+
+class Test
+{
+	static void Main ()
+	{
+		C c = new C ();
+	}
+}
diff --git a/mcs/errors/cs1577.snk b/mcs/errors/cs1577.snk
new file mode 100644
index 0000000..772f7ce
Binary files /dev/null and b/mcs/errors/cs1577.snk differ
diff --git a/mcs/errors/cs1579-4.cs b/mcs/errors/cs1579-4.cs
new file mode 100644
index 0000000..13e3f01
--- /dev/null
+++ b/mcs/errors/cs1579-4.cs
@@ -0,0 +1,20 @@
+// CS1579: foreach statement cannot operate on variables of type `Foo' because it does not contain a definition for `GetEnumerator' or is inaccessible
+// Line: 12
+
+using System;
+using System.Collections;
+
+public class Test
+{
+	public static void Main ()
+	{
+		Foo f = new Foo ();
+		foreach (object o in f)
+			Console.WriteLine (o);
+	}
+}
+
+public class Foo
+{
+	public Func<IEnumerator> GetEnumerator;
+}
diff --git a/mcs/errors/gcs1593.cs b/mcs/errors/cs1593-3.cs
similarity index 100%
rename from mcs/errors/gcs1593.cs
rename to mcs/errors/cs1593-3.cs
diff --git a/mcs/errors/cs1607.cs b/mcs/errors/cs1607.cs
new file mode 100644
index 0000000..1df580e
--- /dev/null
+++ b/mcs/errors/cs1607.cs
@@ -0,0 +1,10 @@
+// CS1607: Delay signing was requested but no key file was given
+// Line: 0
+// Compiler options: -delaysign -warnaserror
+
+class Test
+{
+	static void Main ()
+	{
+	}
+}
diff --git a/mcs/errors/cs1620-4.cs b/mcs/errors/cs1620-4.cs
new file mode 100644
index 0000000..512b16f
--- /dev/null
+++ b/mcs/errors/cs1620-4.cs
@@ -0,0 +1,15 @@
+// CS1620: Argument `#1' is missing `out' modifier
+// Line: 13
+
+public class Programa
+{
+	static void Jajaja (out int mengano)
+	{
+		mengano = 3;
+	}
+
+	static void Run (out int mengano)
+	{
+		Jajaja (mengano);
+	}
+}
diff --git a/mcs/errors/gcs1624.cs b/mcs/errors/cs1624-4.cs
similarity index 100%
rename from mcs/errors/gcs1624.cs
rename to mcs/errors/cs1624-4.cs
diff --git a/mcs/errors/gcs1640.cs b/mcs/errors/cs1640.cs
similarity index 100%
rename from mcs/errors/gcs1640.cs
rename to mcs/errors/cs1640.cs
diff --git a/mcs/errors/gcs1642.cs b/mcs/errors/cs1642.cs
similarity index 100%
rename from mcs/errors/gcs1642.cs
rename to mcs/errors/cs1642.cs
diff --git a/mcs/errors/cs1644-15.cs b/mcs/errors/cs1644-15.cs
new file mode 100644
index 0000000..710bf0c
--- /dev/null
+++ b/mcs/errors/cs1644-15.cs
@@ -0,0 +1,6 @@
+// CS1644: Feature `generic type variance' cannot be used because it is not part of the C# 2.0 language specification
+// Line: 5
+// Compiler options: -langversion:iso-2
+
+ public interface IFoo<out T> {
+ }
diff --git a/mcs/errors/cs1644-16.cs b/mcs/errors/cs1644-16.cs
new file mode 100644
index 0000000..4d2ecc7
--- /dev/null
+++ b/mcs/errors/cs1644-16.cs
@@ -0,0 +1,6 @@
+// CS1644: Feature `generic type variance' cannot be used because it is not part of the C# 2.0 language specification
+// Line: 5
+// Compiler options: -langversion:iso-2
+
+ public interface IFoo<in T> {
+ }
diff --git a/mcs/errors/gcs1644-17.cs b/mcs/errors/cs1644-17.cs
similarity index 100%
rename from mcs/errors/gcs1644-17.cs
rename to mcs/errors/cs1644-17.cs
diff --git a/mcs/errors/gcs1644-8.cs b/mcs/errors/cs1644-18.cs
similarity index 100%
rename from mcs/errors/gcs1644-8.cs
rename to mcs/errors/cs1644-18.cs
diff --git a/mcs/errors/gcs1644-9.cs b/mcs/errors/cs1644-19.cs
similarity index 100%
rename from mcs/errors/gcs1644-9.cs
rename to mcs/errors/cs1644-19.cs
diff --git a/mcs/errors/gcs1644-10.cs b/mcs/errors/cs1644-20.cs
similarity index 100%
rename from mcs/errors/gcs1644-10.cs
rename to mcs/errors/cs1644-20.cs
diff --git a/mcs/errors/gcs1644-11.cs b/mcs/errors/cs1644-21.cs
similarity index 100%
rename from mcs/errors/gcs1644-11.cs
rename to mcs/errors/cs1644-21.cs
diff --git a/mcs/errors/gcs1644-12.cs b/mcs/errors/cs1644-22.cs
similarity index 100%
rename from mcs/errors/gcs1644-12.cs
rename to mcs/errors/cs1644-22.cs
diff --git a/mcs/errors/gcs1644-13.cs b/mcs/errors/cs1644-23.cs
similarity index 100%
rename from mcs/errors/gcs1644-13.cs
rename to mcs/errors/cs1644-23.cs
diff --git a/mcs/errors/gcs1644-14.cs b/mcs/errors/cs1644-24.cs
old mode 100755
new mode 100644
similarity index 100%
rename from mcs/errors/gcs1644-14.cs
rename to mcs/errors/cs1644-24.cs
diff --git a/mcs/errors/gcs1644-5.cs b/mcs/errors/cs1644-25.cs
similarity index 100%
rename from mcs/errors/gcs1644-5.cs
rename to mcs/errors/cs1644-25.cs
diff --git a/mcs/errors/gcs1644-6.cs b/mcs/errors/cs1644-26.cs
similarity index 100%
rename from mcs/errors/gcs1644-6.cs
rename to mcs/errors/cs1644-26.cs
diff --git a/mcs/errors/gcs1644-7.cs b/mcs/errors/cs1644-27.cs
similarity index 100%
rename from mcs/errors/gcs1644-7.cs
rename to mcs/errors/cs1644-27.cs
diff --git a/mcs/errors/gcs1644.cs b/mcs/errors/cs1644-28.cs
similarity index 100%
rename from mcs/errors/gcs1644.cs
rename to mcs/errors/cs1644-28.cs
diff --git a/mcs/errors/gcs1644-2.cs b/mcs/errors/cs1644-29.cs
similarity index 100%
rename from mcs/errors/gcs1644-2.cs
rename to mcs/errors/cs1644-29.cs
diff --git a/mcs/errors/gcs1644-3.cs b/mcs/errors/cs1644-30.cs
similarity index 100%
rename from mcs/errors/gcs1644-3.cs
rename to mcs/errors/cs1644-30.cs
diff --git a/mcs/errors/gcs1644-4.cs b/mcs/errors/cs1644-31.cs
similarity index 100%
rename from mcs/errors/gcs1644-4.cs
rename to mcs/errors/cs1644-31.cs
diff --git a/mcs/errors/gcs1660.cs b/mcs/errors/cs1660-3.cs
similarity index 100%
rename from mcs/errors/gcs1660.cs
rename to mcs/errors/cs1660-3.cs
diff --git a/mcs/errors/gcs1661.cs b/mcs/errors/cs1661-2.cs
similarity index 100%
rename from mcs/errors/gcs1661.cs
rename to mcs/errors/cs1661-2.cs
diff --git a/mcs/errors/gcs1662-2.cs b/mcs/errors/cs1662-2.cs
similarity index 100%
rename from mcs/errors/gcs1662-2.cs
rename to mcs/errors/cs1662-2.cs
diff --git a/mcs/errors/gcs1663.cs b/mcs/errors/cs1663.cs
similarity index 100%
rename from mcs/errors/gcs1663.cs
rename to mcs/errors/cs1663.cs
diff --git a/mcs/errors/gcs1664.cs b/mcs/errors/cs1664.cs
similarity index 100%
rename from mcs/errors/gcs1664.cs
rename to mcs/errors/cs1664.cs
diff --git a/mcs/errors/gcs1665.cs b/mcs/errors/cs1665.cs
similarity index 100%
rename from mcs/errors/gcs1665.cs
rename to mcs/errors/cs1665.cs
diff --git a/mcs/errors/gcs1666.cs b/mcs/errors/cs1666.cs
similarity index 100%
rename from mcs/errors/gcs1666.cs
rename to mcs/errors/cs1666.cs
diff --git a/mcs/errors/cs1674-4.cs b/mcs/errors/cs1674-4.cs
new file mode 100644
index 0000000..22d17bd
--- /dev/null
+++ b/mcs/errors/cs1674-4.cs
@@ -0,0 +1,14 @@
+// CS1674: `int': type used in a using statement must be implicitly convertible to `System.IDisposable'
+// Line: 10
+
+using System;
+
+class C
+{
+	void Method (IDisposable i)
+	{
+		using (int o = 1, b = 2)
+		{
+		}
+	}
+}
diff --git a/mcs/errors/gcs1675.cs b/mcs/errors/cs1675.cs
similarity index 100%
rename from mcs/errors/gcs1675.cs
rename to mcs/errors/cs1675.cs
diff --git a/mcs/errors/gcs1676.cs b/mcs/errors/cs1676-2.cs
old mode 100755
new mode 100644
similarity index 100%
rename from mcs/errors/gcs1676.cs
rename to mcs/errors/cs1676-2.cs
diff --git a/mcs/errors/gcs1677.cs b/mcs/errors/cs1677-2.cs
similarity index 100%
rename from mcs/errors/gcs1677.cs
rename to mcs/errors/cs1677-2.cs
diff --git a/mcs/errors/cs1679.cs b/mcs/errors/cs1679.cs
index 913b3d2..19f17b2 100644
--- a/mcs/errors/cs1679.cs
+++ b/mcs/errors/cs1679.cs
@@ -1,4 +1,4 @@
-// cs1679.cs: Invalid extern alias for /reference. Alias 'Invalid.Identifier' is not a valid identifier
+// CS1679: Invalid extern alias for -reference. Alias `Invalid.Identifier' is not a valid identifier
 // Line: 0
 // Compiler options: -r:Invalid.Identifier=CSExternAlias-lib.dll
 
diff --git a/mcs/errors/cs1680.cs b/mcs/errors/cs1680.cs
index d9565d1..b01b3a7 100644
--- a/mcs/errors/cs1680.cs
+++ b/mcs/errors/cs1680.cs
@@ -1,4 +1,4 @@
-// cs1680.cs: Invalid reference alias 'SomeIdentifier='. Missing filename
+// CS1680: Invalid reference alias `SomeIdentifier='. Missing filename
 // Line: 0
 // Compiler options: -r:SomeIdentifier=
 
diff --git a/mcs/errors/cs1681-2.cs b/mcs/errors/cs1681-2.cs
index 0a7dfe8..d9ac611 100644
--- a/mcs/errors/cs1681-2.cs
+++ b/mcs/errors/cs1681-2.cs
@@ -1,3 +1,3 @@
-// CS1681: You cannot redefine the global extern alias
+// CS1681: The global extern alias cannot be redefined
 // Line: 0
 // Compiler options: -r:global=CS1681-2-lib.dll
diff --git a/mcs/errors/cs1681.cs b/mcs/errors/cs1681.cs
index 563ccbf..097ed8b 100644
--- a/mcs/errors/cs1681.cs
+++ b/mcs/errors/cs1681.cs
@@ -1,4 +1,4 @@
-// cs1681.cs: You cannot redefine the global extern alias
+// CS1681: The global extern alias cannot be redefined
 // Line: 3
 extern alias global;
 using System;
diff --git a/mcs/errors/cs1685-2.cs b/mcs/errors/cs1685-2.cs
new file mode 100644
index 0000000..483a62b
--- /dev/null
+++ b/mcs/errors/cs1685-2.cs
@@ -0,0 +1,4 @@
+// CS1685: The predefined type `System.Runtime.CompilerServices.ExtensionAttribute' is defined in multiple assemblies. Using definition from `System.Core'
+// Line: 0
+// Compiler options: -warn:1 -warnaserror -r:System.Core.dll -r:CS1685-2-lib.dll
+
diff --git a/mcs/errors/gcs1686.cs b/mcs/errors/cs1686-6.cs
similarity index 100%
rename from mcs/errors/gcs1686.cs
rename to mcs/errors/cs1686-6.cs
diff --git a/mcs/errors/gcs1689.cs b/mcs/errors/cs1689.cs
similarity index 100%
rename from mcs/errors/gcs1689.cs
rename to mcs/errors/cs1689.cs
diff --git a/mcs/errors/gcs1700.cs b/mcs/errors/cs1700.cs
similarity index 100%
rename from mcs/errors/gcs1700.cs
rename to mcs/errors/cs1700.cs
diff --git a/mcs/errors/cs1706-2.cs b/mcs/errors/cs1706-2.cs
index 19fd421..19b5ce1 100644
--- a/mcs/errors/cs1706-2.cs
+++ b/mcs/errors/cs1706-2.cs
@@ -1,18 +1,18 @@
-// CS1706: Anonymous methods and lambda expressions cannot be used in the current context
-// Line: 14
-
-public delegate void Proc();
-
-public class AAttribute : System.Attribute
-{
-	public AAttribute(Proc p)
-	{ }
-}
-
-public class Class
-{
-	[A((object)delegate { return; })]
-	public void Foo()
-	{
-	}
-} 
+// CS1706: Anonymous methods and lambda expressions cannot be used in the current context
+// Line: 14
+
+public delegate void Proc();
+
+public class AAttribute : System.Attribute
+{
+	public AAttribute(Proc p)
+	{ }
+}
+
+public class Class
+{
+	[A((object)delegate { return; })]
+	public void Foo()
+	{
+	}
+} 
diff --git a/mcs/errors/gcs1708.cs b/mcs/errors/cs1708.cs
similarity index 100%
rename from mcs/errors/gcs1708.cs
rename to mcs/errors/cs1708.cs
diff --git a/mcs/errors/gcs1716.cs b/mcs/errors/cs1716.cs
similarity index 100%
rename from mcs/errors/gcs1716.cs
rename to mcs/errors/cs1716.cs
diff --git a/mcs/errors/gcs1718.cs b/mcs/errors/cs1718-3.cs
similarity index 100%
rename from mcs/errors/gcs1718.cs
rename to mcs/errors/cs1718-3.cs
diff --git a/mcs/errors/gcs1720-2.cs b/mcs/errors/cs1720-2.cs
similarity index 100%
rename from mcs/errors/gcs1720-2.cs
rename to mcs/errors/cs1720-2.cs
diff --git a/mcs/errors/gcs1720.cs b/mcs/errors/cs1720-3.cs
similarity index 100%
rename from mcs/errors/gcs1720.cs
rename to mcs/errors/cs1720-3.cs
diff --git a/mcs/errors/cs1724.cs b/mcs/errors/cs1724.cs
new file mode 100644
index 0000000..41a8861
--- /dev/null
+++ b/mcs/errors/cs1724.cs
@@ -0,0 +1,7 @@
+// CS1724: Value specified for the argument to `System.Runtime.InteropServices.DefaultCharSetAttribute' is not valid
+// Line: 7
+
+using System;
+using System.Runtime.InteropServices;
+
+[module: DefaultCharSet ((CharSet)30)]
diff --git a/mcs/errors/cs1725-2.cs b/mcs/errors/cs1725-2.cs
new file mode 100644
index 0000000..eabb111
--- /dev/null
+++ b/mcs/errors/cs1725-2.cs
@@ -0,0 +1,13 @@
+// CS1725: Friend assembly reference `main, processorArchitecture=MSIL' is invalid. InternalsVisibleTo declarations cannot have a version, culture or processor architecture specified
+// Line: 6
+
+using System.Runtime.CompilerServices;
+
+[assembly: InternalsVisibleTo ("main, processorArchitecture=MSIL")]
+
+class A
+{
+	public static void Main ()
+	{
+	}
+}
diff --git a/mcs/errors/cs1725-3.cs b/mcs/errors/cs1725-3.cs
new file mode 100644
index 0000000..0ff7e73
--- /dev/null
+++ b/mcs/errors/cs1725-3.cs
@@ -0,0 +1,13 @@
+// CS1725: Friend assembly reference `main, Culture=neutral' is invalid. InternalsVisibleTo declarations cannot have a version, culture or processor architecture specified
+// Line: 6
+
+using System.Runtime.CompilerServices;
+
+[assembly: InternalsVisibleTo ("main, Culture=neutral")]
+
+class A
+{
+	public static void Main ()
+	{
+	}
+}
diff --git a/mcs/errors/cs1725.cs b/mcs/errors/cs1725.cs
new file mode 100644
index 0000000..b215911
--- /dev/null
+++ b/mcs/errors/cs1725.cs
@@ -0,0 +1,13 @@
+// CS1725: Friend assembly reference `main, Version=1.1.1.1' is invalid. InternalsVisibleTo declarations cannot have a version, culture or processor architecture specified
+// Line: 6
+
+using System.Runtime.CompilerServices;
+
+[assembly: InternalsVisibleTo ("main, Version=1.1.1.1")]
+
+class A
+{
+	public static void Main ()
+	{
+	}
+}
diff --git a/mcs/errors/gcs1726-2.cs b/mcs/errors/cs1726-2.cs
similarity index 100%
rename from mcs/errors/gcs1726-2.cs
rename to mcs/errors/cs1726-2.cs
diff --git a/mcs/errors/gcs1726.cs b/mcs/errors/cs1726.cs
similarity index 100%
rename from mcs/errors/gcs1726.cs
rename to mcs/errors/cs1726.cs
diff --git a/mcs/errors/gcs1728-2.cs b/mcs/errors/cs1728-2.cs
old mode 100755
new mode 100644
similarity index 100%
rename from mcs/errors/gcs1728-2.cs
rename to mcs/errors/cs1728-2.cs
diff --git a/mcs/errors/gcs1728.cs b/mcs/errors/cs1728.cs
similarity index 100%
rename from mcs/errors/gcs1728.cs
rename to mcs/errors/cs1728.cs
diff --git a/mcs/errors/cs1729-12.cs b/mcs/errors/cs1729-12.cs
index 2471433..3c8ab7a 100644
--- a/mcs/errors/cs1729-12.cs
+++ b/mcs/errors/cs1729-12.cs
@@ -1,17 +1,17 @@
-// CS1729: The type `A.Foo' does not contain a constructor that takes `1' arguments
-// Line: 15
-
-public class A
-{
-	public class Foo
-	{
-	}
-}
-
-class Example
-{
-	public void Main(string[] args)
-	{
-		A a = new A.Foo ("test");  
-	}
-}
+// CS1729: The type `A.Foo' does not contain a constructor that takes `1' arguments
+// Line: 15
+
+public class A
+{
+	public class Foo
+	{
+	}
+}
+
+class Example
+{
+	public void Main(string[] args)
+	{
+		A a = new A.Foo ("test");  
+	}
+}
diff --git a/mcs/errors/cs1736-2.cs b/mcs/errors/cs1736-2.cs
deleted file mode 100644
index bd22ecf..0000000
--- a/mcs/errors/cs1736-2.cs
+++ /dev/null
@@ -1,13 +0,0 @@
-// CS1763: The expression being assigned to optional parameter `c' must be a constant or default value
-// Line: 10
-
-struct S
-{
-}
-
-class C
-{
-	public static void Test (C c = new S ())
-	{
-	}
-}
diff --git a/mcs/errors/cs1738-2.cs b/mcs/errors/cs1738-2.cs
index cd6838c..f59221f 100644
--- a/mcs/errors/cs1738-2.cs
+++ b/mcs/errors/cs1738-2.cs
@@ -1,6 +1,5 @@
 // CS1738: Named arguments must appear after the positional arguments
 // Line: 13
-// Compiler options: -langversion:future
 
 using System;
 
diff --git a/mcs/errors/cs1738-3.cs b/mcs/errors/cs1738-3.cs
new file mode 100644
index 0000000..53c4efc
--- /dev/null
+++ b/mcs/errors/cs1738-3.cs
@@ -0,0 +1,16 @@
+// CS1738: Named arguments must appear after the positional arguments
+// Line: 14
+
+class C
+{
+	int this [int a, string s] {
+		get {
+			return 1;
+		}
+	}
+	
+	void Test ()
+	{
+		var r = this [a : 1,  "out"];
+	}
+}
diff --git a/mcs/errors/cs1738.cs b/mcs/errors/cs1738.cs
index e2a5ab5..dab9a61 100644
--- a/mcs/errors/cs1738.cs
+++ b/mcs/errors/cs1738.cs
@@ -1,6 +1,5 @@
 // CS1738: Named arguments must appear after the positional arguments
 // Line: 12
-// Compiler options: -langversion:future
 
 class C
 {
diff --git a/mcs/errors/cs1739-3.cs b/mcs/errors/cs1739-3.cs
index 274d10e..677a4b2 100644
--- a/mcs/errors/cs1739-3.cs
+++ b/mcs/errors/cs1739-3.cs
@@ -1,20 +1,20 @@
-// CS1739: The best overloaded method match for `System.Delegate.DynamicInvoke(params object[])' does not contain a parameter named `b'
-// Line: 18
-
-using System;
-
-class C
-{
-	delegate int IntDelegate (int a);
-	
-	static int TestInt (int u)
-	{
-		return 29;
-	}
-	
-	public static void Main ()
-	{
-		var del = new IntDelegate (TestInt);
-		del.DynamicInvoke (b : 7);
-	}
-}
+// CS1739: The best overloaded method match for `System.Delegate.DynamicInvoke(params object[])' does not contain a parameter named `b'
+// Line: 18
+
+using System;
+
+class C
+{
+	delegate int IntDelegate (int a);
+	
+	static int TestInt (int u)
+	{
+		return 29;
+	}
+	
+	public static void Main ()
+	{
+		var del = new IntDelegate (TestInt);
+		del.DynamicInvoke (b : 7);
+	}
+}
diff --git a/mcs/errors/gcs1744.cs b/mcs/errors/cs1744-2.cs
similarity index 100%
rename from mcs/errors/gcs1744.cs
rename to mcs/errors/cs1744-2.cs
diff --git a/mcs/errors/gcs1745.cs b/mcs/errors/cs1745-2.cs
similarity index 100%
rename from mcs/errors/gcs1745.cs
rename to mcs/errors/cs1745-2.cs
diff --git a/mcs/errors/cs1746.cs b/mcs/errors/cs1746.cs
index a3f45b5..d814ed2 100644
--- a/mcs/errors/cs1746.cs
+++ b/mcs/errors/cs1746.cs
@@ -1,20 +1,20 @@
-// CS1746: The delegate `C.IntDelegate' does not contain a parameter named `b'
-// Line: 18
-
-using System;
-
-class C
-{
-	delegate int IntDelegate (int a);
-	
-	static int TestInt (int u)
-	{
-		return 29;
-	}
-	
-	public static void Main ()
-	{
-		var del = new IntDelegate (TestInt);
-		del (b : 7);
-	}
-}
+// CS1746: The delegate `C.IntDelegate' does not contain a parameter named `b'
+// Line: 18
+
+using System;
+
+class C
+{
+	delegate int IntDelegate (int a);
+	
+	static int TestInt (int u)
+	{
+		return 29;
+	}
+	
+	public static void Main ()
+	{
+		var del = new IntDelegate (TestInt);
+		del (b : 7);
+	}
+}
diff --git a/mcs/errors/cs1750-2.cs b/mcs/errors/cs1750-2.cs
new file mode 100644
index 0000000..414a086
--- /dev/null
+++ b/mcs/errors/cs1750-2.cs
@@ -0,0 +1,13 @@
+// CS1750: Optional parameter expression of type `S' cannot be converted to parameter type `C'
+// Line: 10
+
+struct S
+{
+}
+
+class C
+{
+	public static void Test (C c = new S ())
+	{
+	}
+}
diff --git a/mcs/errors/gcs1750.cs b/mcs/errors/cs1750-3.cs
similarity index 100%
rename from mcs/errors/gcs1750.cs
rename to mcs/errors/cs1750-3.cs
diff --git a/mcs/errors/gcs1770.cs b/mcs/errors/cs1770.cs
similarity index 100%
rename from mcs/errors/gcs1770.cs
rename to mcs/errors/cs1770.cs
diff --git a/mcs/errors/gcs1908-2.cs b/mcs/errors/cs1908-2.cs
similarity index 100%
rename from mcs/errors/gcs1908-2.cs
rename to mcs/errors/cs1908-2.cs
diff --git a/mcs/errors/gcs1908-3.cs b/mcs/errors/cs1908-3.cs
similarity index 100%
rename from mcs/errors/gcs1908-3.cs
rename to mcs/errors/cs1908-3.cs
diff --git a/mcs/errors/gcs1908-4.cs b/mcs/errors/cs1908-4.cs
similarity index 100%
rename from mcs/errors/gcs1908-4.cs
rename to mcs/errors/cs1908-4.cs
diff --git a/mcs/errors/gcs1908.cs b/mcs/errors/cs1908.cs
similarity index 100%
rename from mcs/errors/gcs1908.cs
rename to mcs/errors/cs1908.cs
diff --git a/mcs/errors/gcs1909-2.cs b/mcs/errors/cs1909-2.cs
similarity index 100%
rename from mcs/errors/gcs1909-2.cs
rename to mcs/errors/cs1909-2.cs
diff --git a/mcs/errors/gcs1909.cs b/mcs/errors/cs1909.cs
similarity index 100%
rename from mcs/errors/gcs1909.cs
rename to mcs/errors/cs1909.cs
diff --git a/mcs/errors/gcs1910-2.cs b/mcs/errors/cs1910-2.cs
similarity index 100%
rename from mcs/errors/gcs1910-2.cs
rename to mcs/errors/cs1910-2.cs
diff --git a/mcs/errors/gcs1910.cs b/mcs/errors/cs1910.cs
similarity index 100%
rename from mcs/errors/gcs1910.cs
rename to mcs/errors/cs1910.cs
diff --git a/mcs/errors/gcs1912.cs b/mcs/errors/cs1912.cs
similarity index 100%
rename from mcs/errors/gcs1912.cs
rename to mcs/errors/cs1912.cs
diff --git a/mcs/errors/gcs1913-2.cs b/mcs/errors/cs1913-2.cs
similarity index 100%
rename from mcs/errors/gcs1913-2.cs
rename to mcs/errors/cs1913-2.cs
diff --git a/mcs/errors/gcs1913.cs b/mcs/errors/cs1913.cs
similarity index 100%
rename from mcs/errors/gcs1913.cs
rename to mcs/errors/cs1913.cs
diff --git a/mcs/errors/gcs1914.cs b/mcs/errors/cs1914.cs
similarity index 100%
rename from mcs/errors/gcs1914.cs
rename to mcs/errors/cs1914.cs
diff --git a/mcs/errors/gcs1918.cs b/mcs/errors/cs1918.cs
similarity index 100%
rename from mcs/errors/gcs1918.cs
rename to mcs/errors/cs1918.cs
diff --git a/mcs/errors/gcs1920.cs b/mcs/errors/cs1920.cs
similarity index 100%
rename from mcs/errors/gcs1920.cs
rename to mcs/errors/cs1920.cs
diff --git a/mcs/errors/gcs1922-2.cs b/mcs/errors/cs1922-2.cs
similarity index 100%
rename from mcs/errors/gcs1922-2.cs
rename to mcs/errors/cs1922-2.cs
diff --git a/mcs/errors/gcs1922.cs b/mcs/errors/cs1922.cs
similarity index 100%
rename from mcs/errors/gcs1922.cs
rename to mcs/errors/cs1922.cs
diff --git a/mcs/errors/gcs1925.cs b/mcs/errors/cs1925.cs
old mode 100755
new mode 100644
similarity index 100%
rename from mcs/errors/gcs1925.cs
rename to mcs/errors/cs1925.cs
diff --git a/mcs/errors/gcs1928-2.cs b/mcs/errors/cs1928-2.cs
similarity index 100%
rename from mcs/errors/gcs1928-2.cs
rename to mcs/errors/cs1928-2.cs
diff --git a/mcs/errors/cs1928-3.cs b/mcs/errors/cs1928-3.cs
new file mode 100644
index 0000000..0eee7b2
--- /dev/null
+++ b/mcs/errors/cs1928-3.cs
@@ -0,0 +1,17 @@
+// CS1928: Type `int' does not contain a member `Foo' and the best extension method overload `S.Foo(this uint)' has some invalid arguments
+// Line: 15
+
+static class S
+{
+	public static void Foo (this uint i)
+	{
+	}
+}
+
+class B
+{
+	static void Main ()
+	{
+		55.Foo ();
+	}
+}
diff --git a/mcs/errors/gcs1928.cs b/mcs/errors/cs1928.cs
similarity index 100%
rename from mcs/errors/gcs1928.cs
rename to mcs/errors/cs1928.cs
diff --git a/mcs/errors/gcs1929.cs b/mcs/errors/cs1929.cs
similarity index 100%
rename from mcs/errors/gcs1929.cs
rename to mcs/errors/cs1929.cs
diff --git a/mcs/errors/gcs1930-2.cs b/mcs/errors/cs1930-2.cs
similarity index 100%
rename from mcs/errors/gcs1930-2.cs
rename to mcs/errors/cs1930-2.cs
diff --git a/mcs/errors/gcs1930.cs b/mcs/errors/cs1930.cs
similarity index 100%
rename from mcs/errors/gcs1930.cs
rename to mcs/errors/cs1930.cs
diff --git a/mcs/errors/gcs1931-2.cs b/mcs/errors/cs1931-2.cs
similarity index 100%
rename from mcs/errors/gcs1931-2.cs
rename to mcs/errors/cs1931-2.cs
diff --git a/mcs/errors/gcs1931-3.cs b/mcs/errors/cs1931-3.cs
similarity index 100%
rename from mcs/errors/gcs1931-3.cs
rename to mcs/errors/cs1931-3.cs
diff --git a/mcs/errors/gcs1931-4.cs b/mcs/errors/cs1931-4.cs
similarity index 100%
rename from mcs/errors/gcs1931-4.cs
rename to mcs/errors/cs1931-4.cs
diff --git a/mcs/errors/gcs1931.cs b/mcs/errors/cs1931.cs
similarity index 100%
rename from mcs/errors/gcs1931.cs
rename to mcs/errors/cs1931.cs
diff --git a/mcs/errors/gcs1932-2.cs b/mcs/errors/cs1932-2.cs
old mode 100755
new mode 100644
similarity index 100%
rename from mcs/errors/gcs1932-2.cs
rename to mcs/errors/cs1932-2.cs
diff --git a/mcs/errors/gcs1932.cs b/mcs/errors/cs1932.cs
similarity index 100%
rename from mcs/errors/gcs1932.cs
rename to mcs/errors/cs1932.cs
diff --git a/mcs/errors/gcs1935-2.cs b/mcs/errors/cs1935-2.cs
similarity index 100%
rename from mcs/errors/gcs1935-2.cs
rename to mcs/errors/cs1935-2.cs
diff --git a/mcs/errors/gcs1935.cs b/mcs/errors/cs1935.cs
similarity index 100%
rename from mcs/errors/gcs1935.cs
rename to mcs/errors/cs1935.cs
diff --git a/mcs/errors/gcs1936.cs b/mcs/errors/cs1936.cs
similarity index 100%
rename from mcs/errors/gcs1936.cs
rename to mcs/errors/cs1936.cs
diff --git a/mcs/errors/gcs1939.cs b/mcs/errors/cs1939.cs
similarity index 100%
rename from mcs/errors/gcs1939.cs
rename to mcs/errors/cs1939.cs
diff --git a/mcs/errors/gcs1940.cs b/mcs/errors/cs1940.cs
similarity index 100%
rename from mcs/errors/gcs1940.cs
rename to mcs/errors/cs1940.cs
diff --git a/mcs/errors/gcs1942-2.cs b/mcs/errors/cs1942-2.cs
similarity index 100%
rename from mcs/errors/gcs1942-2.cs
rename to mcs/errors/cs1942-2.cs
diff --git a/mcs/errors/gcs1942.cs b/mcs/errors/cs1942.cs
similarity index 100%
rename from mcs/errors/gcs1942.cs
rename to mcs/errors/cs1942.cs
diff --git a/mcs/errors/gcs1943.cs b/mcs/errors/cs1943.cs
similarity index 100%
rename from mcs/errors/gcs1943.cs
rename to mcs/errors/cs1943.cs
diff --git a/mcs/errors/gcs1944-2.cs b/mcs/errors/cs1944-2.cs
similarity index 100%
rename from mcs/errors/gcs1944-2.cs
rename to mcs/errors/cs1944-2.cs
diff --git a/mcs/errors/gcs1944-3.cs b/mcs/errors/cs1944-3.cs
similarity index 100%
rename from mcs/errors/gcs1944-3.cs
rename to mcs/errors/cs1944-3.cs
diff --git a/mcs/errors/gcs1944-4.cs b/mcs/errors/cs1944-4.cs
similarity index 100%
rename from mcs/errors/gcs1944-4.cs
rename to mcs/errors/cs1944-4.cs
diff --git a/mcs/errors/gcs1944-5.cs b/mcs/errors/cs1944-5.cs
similarity index 100%
rename from mcs/errors/gcs1944-5.cs
rename to mcs/errors/cs1944-5.cs
diff --git a/mcs/errors/gcs1944-6.cs b/mcs/errors/cs1944-6.cs
similarity index 100%
rename from mcs/errors/gcs1944-6.cs
rename to mcs/errors/cs1944-6.cs
diff --git a/mcs/errors/gcs1944-7.cs b/mcs/errors/cs1944-7.cs
similarity index 100%
rename from mcs/errors/gcs1944-7.cs
rename to mcs/errors/cs1944-7.cs
diff --git a/mcs/errors/gcs1944.cs b/mcs/errors/cs1944.cs
similarity index 100%
rename from mcs/errors/gcs1944.cs
rename to mcs/errors/cs1944.cs
diff --git a/mcs/errors/gcs1945.cs b/mcs/errors/cs1945.cs
similarity index 100%
rename from mcs/errors/gcs1945.cs
rename to mcs/errors/cs1945.cs
diff --git a/mcs/errors/gcs1946.cs b/mcs/errors/cs1946.cs
similarity index 100%
rename from mcs/errors/gcs1946.cs
rename to mcs/errors/cs1946.cs
diff --git a/mcs/errors/gcs1947.cs b/mcs/errors/cs1947.cs
similarity index 100%
rename from mcs/errors/gcs1947.cs
rename to mcs/errors/cs1947.cs
diff --git a/mcs/errors/gcs1948-2.cs b/mcs/errors/cs1948-2.cs
similarity index 100%
rename from mcs/errors/gcs1948-2.cs
rename to mcs/errors/cs1948-2.cs
diff --git a/mcs/errors/gcs1948.cs b/mcs/errors/cs1948.cs
similarity index 100%
rename from mcs/errors/gcs1948.cs
rename to mcs/errors/cs1948.cs
diff --git a/mcs/errors/gcs1950.cs b/mcs/errors/cs1950.cs
similarity index 100%
rename from mcs/errors/gcs1950.cs
rename to mcs/errors/cs1950.cs
diff --git a/mcs/errors/gcs1951-2.cs b/mcs/errors/cs1951-2.cs
similarity index 100%
rename from mcs/errors/gcs1951-2.cs
rename to mcs/errors/cs1951-2.cs
diff --git a/mcs/errors/gcs1951.cs b/mcs/errors/cs1951.cs
similarity index 100%
rename from mcs/errors/gcs1951.cs
rename to mcs/errors/cs1951.cs
diff --git a/mcs/errors/gcs1952.cs b/mcs/errors/cs1952.cs
similarity index 100%
rename from mcs/errors/gcs1952.cs
rename to mcs/errors/cs1952.cs
diff --git a/mcs/errors/gcs1953.cs b/mcs/errors/cs1953.cs
similarity index 100%
rename from mcs/errors/gcs1953.cs
rename to mcs/errors/cs1953.cs
diff --git a/mcs/errors/gcs1954.cs b/mcs/errors/cs1954.cs
similarity index 100%
rename from mcs/errors/gcs1954.cs
rename to mcs/errors/cs1954.cs
diff --git a/mcs/errors/gcs1959-2.cs b/mcs/errors/cs1959-2.cs
similarity index 100%
rename from mcs/errors/gcs1959-2.cs
rename to mcs/errors/cs1959-2.cs
diff --git a/mcs/errors/gcs1959.cs b/mcs/errors/cs1959.cs
similarity index 100%
rename from mcs/errors/gcs1959.cs
rename to mcs/errors/cs1959.cs
diff --git a/mcs/errors/cs1960-2.cs b/mcs/errors/cs1960-2.cs
new file mode 100644
index 0000000..48421df
--- /dev/null
+++ b/mcs/errors/cs1960-2.cs
@@ -0,0 +1,7 @@
+// CS1960: Variant type parameters can only be used with interfaces and delegates
+// Line: 5
+// Compiler options: -langversion:future
+
+class A<in T>
+{
+}
diff --git a/mcs/errors/cs1960.cs b/mcs/errors/cs1960.cs
new file mode 100644
index 0000000..6085255
--- /dev/null
+++ b/mcs/errors/cs1960.cs
@@ -0,0 +1,7 @@
+// CS1960: Variant type parameters can only be used with interfaces and delegates
+// Line: 5
+// Compiler options: -langversion:future
+
+class A<out T>
+{
+}
diff --git a/mcs/errors/cs1961-10.cs b/mcs/errors/cs1961-10.cs
new file mode 100644
index 0000000..5eb26dc
--- /dev/null
+++ b/mcs/errors/cs1961-10.cs
@@ -0,0 +1,9 @@
+// CS1961: The contravariant type parameter `T' must be invariantly valid on `B<T>()'
+// Line: 9
+// Compiler options: -langversion:future
+
+interface A<T>
+{
+}
+
+delegate A<A<T>> B<in T> ();
diff --git a/mcs/errors/cs1961-11.cs b/mcs/errors/cs1961-11.cs
new file mode 100644
index 0000000..4f7bc65
--- /dev/null
+++ b/mcs/errors/cs1961-11.cs
@@ -0,0 +1,9 @@
+// CS1961: The contravariant type parameter `T' must be invariantly valid on `B<T>(A<T>)'
+// Line: 9
+// Compiler options: -langversion:future
+
+interface A<T>
+{
+}
+
+delegate void B<in T> (A<T> a);
diff --git a/mcs/errors/cs1961-12.cs b/mcs/errors/cs1961-12.cs
new file mode 100644
index 0000000..9359e5f
--- /dev/null
+++ b/mcs/errors/cs1961-12.cs
@@ -0,0 +1,9 @@
+// CS1961: The contravariant type parameter `T' must be invariantly valid on `B<T>(A<A<T>>)'
+// Line: 9
+// Compiler options: -langversion:future
+
+interface A<T>
+{
+}
+
+delegate void B<in T> (A<A<T>> a);
diff --git a/mcs/errors/gcs1961-13.cs b/mcs/errors/cs1961-13.cs
similarity index 100%
rename from mcs/errors/gcs1961-13.cs
rename to mcs/errors/cs1961-13.cs
diff --git a/mcs/errors/gcs1961-14.cs b/mcs/errors/cs1961-14.cs
similarity index 100%
rename from mcs/errors/gcs1961-14.cs
rename to mcs/errors/cs1961-14.cs
diff --git a/mcs/errors/cs1961-15.cs b/mcs/errors/cs1961-15.cs
new file mode 100644
index 0000000..2e65426
--- /dev/null
+++ b/mcs/errors/cs1961-15.cs
@@ -0,0 +1,9 @@
+// CS1961: The covariant type parameter `U' must be contravariantly valid on `D<U>()'
+// Line: 9
+// Compiler options: -langversion:future
+
+interface I<in T>
+{
+}
+
+delegate I<U[]> D<out U> ();
diff --git a/mcs/errors/cs1961-16.cs b/mcs/errors/cs1961-16.cs
new file mode 100644
index 0000000..973c67b
--- /dev/null
+++ b/mcs/errors/cs1961-16.cs
@@ -0,0 +1,11 @@
+// CS1961: The contravariant type parameter `T' must be invariantly valid on `B<T>'
+// Line: 9
+// Compiler options: -langversion:future
+
+interface A<T>
+{
+}
+
+interface B<in T> : A<T>
+{
+}
diff --git a/mcs/errors/cs1961-17.cs b/mcs/errors/cs1961-17.cs
new file mode 100644
index 0000000..f439dfa
--- /dev/null
+++ b/mcs/errors/cs1961-17.cs
@@ -0,0 +1,11 @@
+// CS1961: The contravariant type parameter `T' must be covariantly valid on `B<T>'
+// Line: 9
+// Compiler options: -langversion:future
+
+interface A<out T>
+{
+}
+
+interface B<in T> : A<T>
+{
+}
diff --git a/mcs/errors/gcs1961-18.cs b/mcs/errors/cs1961-18.cs
similarity index 100%
rename from mcs/errors/gcs1961-18.cs
rename to mcs/errors/cs1961-18.cs
diff --git a/mcs/errors/gcs1961-19.cs b/mcs/errors/cs1961-19.cs
similarity index 100%
rename from mcs/errors/gcs1961-19.cs
rename to mcs/errors/cs1961-19.cs
diff --git a/mcs/errors/cs1961-2.cs b/mcs/errors/cs1961-2.cs
new file mode 100644
index 0000000..40d29f8
--- /dev/null
+++ b/mcs/errors/cs1961-2.cs
@@ -0,0 +1,5 @@
+// CS1961: The contravariant type parameter `T' must be covariantly valid on `D<T>()'
+// Line: 5
+// Compiler options: -langversion:future
+
+delegate T D<in T> ();
diff --git a/mcs/errors/gcs1961-20.cs b/mcs/errors/cs1961-20.cs
similarity index 100%
rename from mcs/errors/gcs1961-20.cs
rename to mcs/errors/cs1961-20.cs
diff --git a/mcs/errors/gcs1961-21.cs b/mcs/errors/cs1961-21.cs
similarity index 100%
rename from mcs/errors/gcs1961-21.cs
rename to mcs/errors/cs1961-21.cs
diff --git a/mcs/errors/gcs1961-22.cs b/mcs/errors/cs1961-22.cs
similarity index 100%
rename from mcs/errors/gcs1961-22.cs
rename to mcs/errors/cs1961-22.cs
diff --git a/mcs/errors/gcs1961-23.cs b/mcs/errors/cs1961-23.cs
similarity index 100%
rename from mcs/errors/gcs1961-23.cs
rename to mcs/errors/cs1961-23.cs
diff --git a/mcs/errors/cs1961-24.cs b/mcs/errors/cs1961-24.cs
new file mode 100644
index 0000000..b08bea6
--- /dev/null
+++ b/mcs/errors/cs1961-24.cs
@@ -0,0 +1,9 @@
+// CS1961: The covariant type parameter `T' must be invariantly valid on `B<T>()'
+// Line: 9
+// Compiler options: -langversion:future
+
+interface A<T>
+{
+}
+
+delegate A<T> B<out T> ();
diff --git a/mcs/errors/cs1961-25.cs b/mcs/errors/cs1961-25.cs
new file mode 100644
index 0000000..f76625a
--- /dev/null
+++ b/mcs/errors/cs1961-25.cs
@@ -0,0 +1,9 @@
+// CS1961: The covariant type parameter `T' must be invariantly valid on `B<T>()'
+// Line: 9
+// Compiler options: -langversion:future
+
+interface A<T>
+{
+}
+
+delegate A<A<T>> B<out T> ();
diff --git a/mcs/errors/cs1961-26.cs b/mcs/errors/cs1961-26.cs
new file mode 100644
index 0000000..cd3b5bf
--- /dev/null
+++ b/mcs/errors/cs1961-26.cs
@@ -0,0 +1,9 @@
+// CS1961: The covariant type parameter `T' must be invariantly valid on `B<T>(A<T>)'
+// Line: 9
+// Compiler options: -langversion:future
+
+interface A<T>
+{
+}
+
+delegate void B<out T> (A<T> a);
diff --git a/mcs/errors/cs1961-27.cs b/mcs/errors/cs1961-27.cs
new file mode 100644
index 0000000..71b39f6
--- /dev/null
+++ b/mcs/errors/cs1961-27.cs
@@ -0,0 +1,9 @@
+// CS1961: The covariant type parameter `T' must be invariantly valid on `B<T>(A<A<T>>)'
+// Line: 9
+// Compiler options: -langversion:future
+
+interface A<T>
+{
+}
+
+delegate void B<out T> (A<A<T>> a);
diff --git a/mcs/errors/gcs1961-28.cs b/mcs/errors/cs1961-28.cs
similarity index 100%
rename from mcs/errors/gcs1961-28.cs
rename to mcs/errors/cs1961-28.cs
diff --git a/mcs/errors/gcs1961-29.cs b/mcs/errors/cs1961-29.cs
similarity index 100%
rename from mcs/errors/gcs1961-29.cs
rename to mcs/errors/cs1961-29.cs
diff --git a/mcs/errors/gcs1961-3.cs b/mcs/errors/cs1961-3.cs
similarity index 100%
rename from mcs/errors/gcs1961-3.cs
rename to mcs/errors/cs1961-3.cs
diff --git a/mcs/errors/cs1961-30.cs b/mcs/errors/cs1961-30.cs
new file mode 100644
index 0000000..34498c5
--- /dev/null
+++ b/mcs/errors/cs1961-30.cs
@@ -0,0 +1,7 @@
+// CS1961: The covariant type parameter `U' must be contravariantly valid on `D<U>()'
+// Line: 7
+// Compiler options: -langversion:future
+
+interface IContravariant<in T> { }
+
+delegate IContravariant<U[]> D<out U> ();
diff --git a/mcs/errors/cs1961-31.cs b/mcs/errors/cs1961-31.cs
new file mode 100644
index 0000000..e2f89b5
--- /dev/null
+++ b/mcs/errors/cs1961-31.cs
@@ -0,0 +1,11 @@
+// CS1961: The covariant type parameter `T' must be invariantly valid on `B<T>'
+// Line: 9
+// Compiler options: -langversion:future
+
+interface A<T>
+{
+}
+
+interface B<out T> : A<T>
+{
+}
diff --git a/mcs/errors/cs1961-32.cs b/mcs/errors/cs1961-32.cs
new file mode 100644
index 0000000..00afd32
--- /dev/null
+++ b/mcs/errors/cs1961-32.cs
@@ -0,0 +1,11 @@
+// CS1961: The covariant type parameter `T' must be contravariantly valid on `B<T>'
+// Line: 9
+// Compiler options: -langversion:future
+
+interface A<in T>
+{
+}
+
+interface B<out T> : A<T>
+{
+}
diff --git a/mcs/errors/cs1961-33.cs b/mcs/errors/cs1961-33.cs
new file mode 100644
index 0000000..246c05b
--- /dev/null
+++ b/mcs/errors/cs1961-33.cs
@@ -0,0 +1,8 @@
+// CS1961: The contravariant type parameter `T' must be invariantly valid on `A<T>.B(out T)'
+// Line: 5
+// Compiler options: -langversion:future
+
+interface A<in T>
+{
+	void B(out T t);
+}
diff --git a/mcs/errors/cs1961-34.cs b/mcs/errors/cs1961-34.cs
new file mode 100644
index 0000000..662672e
--- /dev/null
+++ b/mcs/errors/cs1961-34.cs
@@ -0,0 +1,8 @@
+// CS1961: The contravariant type parameter `T' must be invariantly valid on `A<T>.B(ref T)'
+// Line: 5
+// Compiler options: -langversion:future
+
+interface A<in T>
+{
+	void B(ref T t);
+}
diff --git a/mcs/errors/cs1961-35.cs b/mcs/errors/cs1961-35.cs
new file mode 100644
index 0000000..9e2fa3d
--- /dev/null
+++ b/mcs/errors/cs1961-35.cs
@@ -0,0 +1,8 @@
+// CS1961: The covariant type parameter `T' must be contravariantly valid on `A<T>.B(T)'
+// Line: 7
+// Compiler options: -langversion:future
+
+interface A<out T>
+{
+	void B(T t);
+}
diff --git a/mcs/errors/cs1961-36.cs b/mcs/errors/cs1961-36.cs
new file mode 100644
index 0000000..d657714
--- /dev/null
+++ b/mcs/errors/cs1961-36.cs
@@ -0,0 +1,8 @@
+// CS1961: The covariant type parameter `T' must be invariantly valid on `A<T>.B(out T)'
+// Line: 7
+// Compiler options: -langversion:future
+
+interface A<out T>
+{
+	void B(out T t);
+}
diff --git a/mcs/errors/cs1961-37.cs b/mcs/errors/cs1961-37.cs
new file mode 100644
index 0000000..d65e7cb
--- /dev/null
+++ b/mcs/errors/cs1961-37.cs
@@ -0,0 +1,8 @@
+// CS1961: The covariant type parameter `T' must be invariantly valid on `A<T>.B(ref T)'
+// Line: 5
+// Compiler options: -langversion:future
+
+interface A<out T>
+{
+	void B(ref T t);
+}
diff --git a/mcs/errors/gcs1961-38.cs b/mcs/errors/cs1961-38.cs
similarity index 100%
rename from mcs/errors/gcs1961-38.cs
rename to mcs/errors/cs1961-38.cs
diff --git a/mcs/errors/gcs1961-39.cs b/mcs/errors/cs1961-39.cs
similarity index 100%
rename from mcs/errors/gcs1961-39.cs
rename to mcs/errors/cs1961-39.cs
diff --git a/mcs/errors/gcs1961-4.cs b/mcs/errors/cs1961-4.cs
similarity index 100%
rename from mcs/errors/gcs1961-4.cs
rename to mcs/errors/cs1961-4.cs
diff --git a/mcs/errors/gcs1961-5.cs b/mcs/errors/cs1961-5.cs
similarity index 100%
rename from mcs/errors/gcs1961-5.cs
rename to mcs/errors/cs1961-5.cs
diff --git a/mcs/errors/gcs1961-6.cs b/mcs/errors/cs1961-6.cs
similarity index 100%
rename from mcs/errors/gcs1961-6.cs
rename to mcs/errors/cs1961-6.cs
diff --git a/mcs/errors/gcs1961-7.cs b/mcs/errors/cs1961-7.cs
similarity index 100%
rename from mcs/errors/gcs1961-7.cs
rename to mcs/errors/cs1961-7.cs
diff --git a/mcs/errors/gcs1961-8.cs b/mcs/errors/cs1961-8.cs
similarity index 100%
rename from mcs/errors/gcs1961-8.cs
rename to mcs/errors/cs1961-8.cs
diff --git a/mcs/errors/cs1961-9.cs b/mcs/errors/cs1961-9.cs
new file mode 100644
index 0000000..e0378b9
--- /dev/null
+++ b/mcs/errors/cs1961-9.cs
@@ -0,0 +1,9 @@
+// CS1961: The contravariant type parameter `T' must be invariantly valid on `B<T>()'
+// Line: 9
+// Compiler options: -langversion:future
+
+interface A<T>
+{
+}
+
+delegate A<T> B<in T> ();
diff --git a/mcs/errors/cs1961.cs b/mcs/errors/cs1961.cs
new file mode 100644
index 0000000..8450e2f
--- /dev/null
+++ b/mcs/errors/cs1961.cs
@@ -0,0 +1,8 @@
+// CS1961: The contravariant type parameter `T' must be covariantly valid on `A<T>.B()'
+// Line: 7
+// Compiler options: -langversion:future
+
+interface A<in T>
+{
+	T B();
+}
diff --git a/mcs/errors/cs2005.cs b/mcs/errors/cs2005.cs
new file mode 100644
index 0000000..7373839
--- /dev/null
+++ b/mcs/errors/cs2005.cs
@@ -0,0 +1,3 @@
+// CS2005: Missing file specification for `/r:' option
+// Line: 0
+// Compiler options: -r:
diff --git a/mcs/errors/cs2034.cs b/mcs/errors/cs2034.cs
new file mode 100644
index 0000000..c45cd50
--- /dev/null
+++ b/mcs/errors/cs2034.cs
@@ -0,0 +1,3 @@
+// CS2034: Cannot specify multiple aliases using single /reference option
+// Line: 0
+// Compiler options: -r:a=foo.dll,b=bar.dll
diff --git a/mcs/errors/cs3001-10.cs b/mcs/errors/cs3001-10.cs
new file mode 100644
index 0000000..242fd5f
--- /dev/null
+++ b/mcs/errors/cs3001-10.cs
@@ -0,0 +1,11 @@
+// CS3001: Argument type `sbyte' is not CLS-compliant
+// Line: 9
+// Compiler options: -warnaserror -warn:1
+
+using System;
+[assembly:CLSCompliant (true)]
+
+public static class CLSClass
+{
+	public static void Foo (this sbyte value) { }
+}
diff --git a/mcs/errors/cs3001-2.cs b/mcs/errors/cs3001-2.cs
index 06329b8..90fd9bf 100644
--- a/mcs/errors/cs3001-2.cs
+++ b/mcs/errors/cs3001-2.cs
@@ -1,4 +1,4 @@
-// CS3001: Argument type `ref ulong' is not CLS-compliant
+// CS3001: Argument type `ulong' is not CLS-compliant
 // Line: 10
 // Compiler options: -warnaserror -warn:1
 
diff --git a/mcs/errors/cs3001-4.cs b/mcs/errors/cs3001-4.cs
index a040add..2652fb8 100644
--- a/mcs/errors/cs3001-4.cs
+++ b/mcs/errors/cs3001-4.cs
@@ -1,4 +1,4 @@
-// CS3001: Argument type `out IError' is not CLS-compliant
+// CS3001: Argument type `IError' is not CLS-compliant
 // Line: 13
 // Compiler options: -warnaserror -warn:1
 
diff --git a/mcs/errors/gcs3002.cs b/mcs/errors/cs3002-11.cs
similarity index 100%
rename from mcs/errors/gcs3002.cs
rename to mcs/errors/cs3002-11.cs
diff --git a/mcs/errors/cs3003-6.cs b/mcs/errors/cs3003-6.cs
index 8cb2e10..9c2c200 100644
--- a/mcs/errors/cs3003-6.cs
+++ b/mcs/errors/cs3003-6.cs
@@ -1,12 +1,12 @@
-// CS3003: Type of `I.Foo' is not CLS-compliant
-// Line: 10
-// Compiler options: -warnaserror -warn:1
-
-using System;
-[assembly:CLSCompliant (true)]
-
-[CLSCompliant (true)]
-public interface I {
-    uint Foo { set; }
-}
-
+// CS3003: Type of `I.Foo' is not CLS-compliant
+// Line: 10
+// Compiler options: -warnaserror -warn:1
+
+using System;
+[assembly:CLSCompliant (true)]
+
+[CLSCompliant (true)]
+public interface I {
+    uint Foo { set; }
+}
+
diff --git a/mcs/errors/gcs3003.cs b/mcs/errors/cs3003-8.cs
similarity index 100%
rename from mcs/errors/gcs3003.cs
rename to mcs/errors/cs3003-8.cs
diff --git a/mcs/errors/gcs3005.cs b/mcs/errors/cs3005-26.cs
similarity index 100%
rename from mcs/errors/gcs3005.cs
rename to mcs/errors/cs3005-26.cs
diff --git a/mcs/errors/gcs3009.cs b/mcs/errors/cs3009-4.cs
similarity index 100%
rename from mcs/errors/gcs3009.cs
rename to mcs/errors/cs3009-4.cs
diff --git a/mcs/errors/gcs3019.cs b/mcs/errors/cs3019-4.cs
similarity index 100%
rename from mcs/errors/gcs3019.cs
rename to mcs/errors/cs3019-4.cs
diff --git a/mcs/errors/gcs3024-2.cs b/mcs/errors/cs3024-2.cs
similarity index 100%
rename from mcs/errors/gcs3024-2.cs
rename to mcs/errors/cs3024-2.cs
diff --git a/mcs/errors/gcs3024.cs b/mcs/errors/cs3024.cs
similarity index 100%
rename from mcs/errors/gcs3024.cs
rename to mcs/errors/cs3024.cs
diff --git a/mcs/errors/dcs0019-2.cs b/mcs/errors/dcs0019-2.cs
new file mode 100644
index 0000000..f1e8a50
--- /dev/null
+++ b/mcs/errors/dcs0019-2.cs
@@ -0,0 +1,11 @@
+// CS0019: Operator `==' cannot be applied to operands of type `dynamic' and `anonymous method'
+// Line: 9
+
+class C
+{
+	static void Main ()
+	{
+		dynamic x = null;
+		var y = x == (() => 1);
+	}
+}
diff --git a/mcs/errors/dcs0019-3.cs b/mcs/errors/dcs0019-3.cs
new file mode 100644
index 0000000..09929b1
--- /dev/null
+++ b/mcs/errors/dcs0019-3.cs
@@ -0,0 +1,11 @@
+// CS0019: Operator `==' cannot be applied to operands of type `dynamic' and `method group'
+// Line: 9
+
+class C
+{
+	static void Main ()
+	{
+		dynamic x = null;
+		var y = x == Main;
+	}
+}
diff --git a/mcs/errors/dcs0019-4.cs b/mcs/errors/dcs0019-4.cs
new file mode 100644
index 0000000..73d49c4
--- /dev/null
+++ b/mcs/errors/dcs0019-4.cs
@@ -0,0 +1,11 @@
+// CS0019: Operator `+=' cannot be applied to operands of type `dynamic' and `anonymous method'
+// Line: 9
+
+class MainClass
+{
+	public static void Main ()
+	{
+		dynamic d = null;
+		d += delegate {};
+	}
+}
diff --git a/mcs/errors/dcs0019.cs b/mcs/errors/dcs0019.cs
index fcb4e89..788b453 100644
--- a/mcs/errors/dcs0019.cs
+++ b/mcs/errors/dcs0019.cs
@@ -1,12 +1,11 @@
-// CS0019: Cannot implicitly convert type `dynamic' to `int*'
-// Line: 10
-// Compiler options: -unsafe
+// CS0019: Operator `==' cannot be applied to operands of type `dynamic' and `void'
+// Line: 9
 
-public unsafe class C
+class C
 {
-	public static void Main ()
+	static void Main ()
 	{
-		dynamic d = 1;
-		int* i = d;
+		dynamic x = null;
+		var y = x == Main ();
 	}
 }
diff --git a/mcs/errors/dcs0019.cs b/mcs/errors/dcs0029.cs
similarity index 100%
copy from mcs/errors/dcs0019.cs
copy to mcs/errors/dcs0029.cs
diff --git a/mcs/errors/dcs0121.cs b/mcs/errors/dcs0121.cs
deleted file mode 100644
index 968061f..0000000
--- a/mcs/errors/dcs0121.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-// CS0121: The call is ambiguous between the following methods or properties: `X.a(int, dynamic)' and `X.a(double, object)'
-// Line: 16
-
-class X
-{
-	static void a (int i, dynamic d)
-	{
-	}
-
-	static void a (double d, object i)
-	{
-	}
-
-	public static void Main ()
-	{
-		a (0, 0);
-	}
-}	
diff --git a/mcs/errors/dcs0123.cs b/mcs/errors/dcs0123.cs
new file mode 100644
index 0000000..8bce8d0
--- /dev/null
+++ b/mcs/errors/dcs0123.cs
@@ -0,0 +1,17 @@
+// CS0123: A method or delegate `C.Method(ref dynamic)' parameters do not match delegate `C.D(dynamic)' parameters
+// Line: 14
+
+public class C
+{
+	delegate void D (dynamic d);
+	
+	static void Method (ref dynamic d)
+	{
+	}
+
+	public static void Main ()
+	{
+		D d = Method;
+	}
+}
+
diff --git a/mcs/errors/dcs0173.cs b/mcs/errors/dcs0173.cs
new file mode 100644
index 0000000..fd094cb
--- /dev/null
+++ b/mcs/errors/dcs0173.cs
@@ -0,0 +1,11 @@
+// CS0173: Type of conditional expression cannot be determined because there is no implicit conversion between `dynamic' and `void'
+// Line: 19
+
+class X
+{
+	static void Main ()
+	{
+		dynamic d = null;
+		dynamic t = true ? d : Main ();
+	}
+}
diff --git a/mcs/errors/dcs0188.cs b/mcs/errors/dcs0188.cs
new file mode 100644
index 0000000..46ac0ca
--- /dev/null
+++ b/mcs/errors/dcs0188.cs
@@ -0,0 +1,17 @@
+// CS0188: The `this' object cannot be used before all of its fields are assigned to
+// Line: 10
+
+struct S
+{
+	int x;
+	
+	S (dynamic d)
+	{
+		Foo (d);
+		x = 44;
+	}
+
+	void Foo (int a)
+	{
+	}
+}
diff --git a/mcs/errors/dcs0407.cs b/mcs/errors/dcs0407.cs
new file mode 100644
index 0000000..1537ce9
--- /dev/null
+++ b/mcs/errors/dcs0407.cs
@@ -0,0 +1,17 @@
+// CS0407: A method or delegate `int Program.Foo(object)' return type does not match delegate `void System.Action<dynamic>(dynamic)' return type
+// Line: 10
+
+using System;
+
+class Program
+{
+	static void Main()
+	{
+		Action<dynamic> d = Foo;
+	}
+
+	static int Foo (object o)
+	{
+		return 0;
+	}
+}
diff --git a/mcs/errors/dcs0826.cs b/mcs/errors/dcs0826.cs
new file mode 100644
index 0000000..4e09896
--- /dev/null
+++ b/mcs/errors/dcs0826.cs
@@ -0,0 +1,16 @@
+// CS0826: The type of an implicitly typed array cannot be inferred from the initializer. Try specifying array type explicitly
+// Line: 8
+
+class C
+{
+	static void Main()
+	{
+		object o = 1;
+		dynamic d = 1;
+		
+		var a = new[] {
+			new { X = o },
+			new { X = d }
+		};
+	}
+}
diff --git a/mcs/errors/dcs1501-3.cs b/mcs/errors/dcs1501-3.cs
new file mode 100644
index 0000000..620eb8d
--- /dev/null
+++ b/mcs/errors/dcs1501-3.cs
@@ -0,0 +1,15 @@
+// CS1501: No overload for method `Foo' takes `2' arguments
+// Line: 13
+
+static class C
+{
+	public static void Foo (this string s, int d, bool b)
+	{
+	}
+
+	static void Main()
+	{
+		dynamic d = null;
+		"x".Foo (d);
+	}
+}
diff --git a/mcs/errors/dcs1502-2.cs b/mcs/errors/dcs1502-2.cs
new file mode 100644
index 0000000..052d26e
--- /dev/null
+++ b/mcs/errors/dcs1502-2.cs
@@ -0,0 +1,15 @@
+// CS1502: The best overloaded method match for `C.Foo(dynamic)' has some invalid arguments
+// Line: 13
+
+static class C
+{
+	public static void Foo (dynamic d)
+	{
+	}
+
+	static void Main()
+	{
+		dynamic d = null;
+		Foo (ref d);
+	}
+}
diff --git a/mcs/errors/dcs1977-2.cs b/mcs/errors/dcs1977-2.cs
deleted file mode 100644
index 61051d8..0000000
--- a/mcs/errors/dcs1977-2.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-// CS1977: An anonymous method or lambda expression cannot be used as an argument of dynamic operation. Consider using a cast
-// Line: 9
-
-class MainClass
-{
-	public static void Main ()
-	{
-		dynamic d = null;
-		d += delegate {};
-	}
-}
diff --git a/mcs/errors/gcs0019-4.cs b/mcs/errors/gcs0019-4.cs
deleted file mode 100644
index e24febd..0000000
--- a/mcs/errors/gcs0019-4.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-// CS0019: Operator `+=' cannot be applied to operands of type `EventHandler' and `T'
-// Line: 10
-
-using System;
-
-public delegate void EventHandler (int i, int j);
-
-public class Button {
-
-	public event EventHandler Click;
-
-	public void Connect<T> () where T : class
-	{
-		Click += default (T);
-	}
-}
diff --git a/mcs/errors/gcs0019-5.cs b/mcs/errors/gcs0019-5.cs
deleted file mode 100644
index 894a9fd..0000000
--- a/mcs/errors/gcs0019-5.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-// CS0019: Operator `==' cannot be applied to operands of type `method group' and `null'
-// Line: 8
-
-public class C
-{
-	public static void Main ()
-	{
-		bool a = DelegateMethod == null;
-	}
-
-	static int DelegateMethod(bool b)
-	{
-		return 3;
-	}	
-}
diff --git a/mcs/errors/gcs0019-6.cs b/mcs/errors/gcs0019-6.cs
deleted file mode 100644
index 74ef120..0000000
--- a/mcs/errors/gcs0019-6.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-// CS0019: Operator `==' cannot be applied to operands of type `method group' and `method group'
-// Line: 8
-
-public class C
-{
-	public static void Main ()
-	{
-		bool a = DelegateMethod == DelegateMethod;
-	}
-
-	static int DelegateMethod(bool b)
-	{
-		return 3;
-	}	
-}
diff --git a/mcs/errors/gcs0029-3.cs b/mcs/errors/gcs0029-3.cs
deleted file mode 100644
index 9c70962..0000000
--- a/mcs/errors/gcs0029-3.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-// CS0029: Cannot implicitly convert type `bool' to `int'
-// Line : 7
-
-class T {
-	static int Main ()
-	{
-		int a = default(bool);
-	}
-}
diff --git a/mcs/errors/gcs0122-2.cs b/mcs/errors/gcs0122-2.cs
deleted file mode 100644
index 7a4df8b..0000000
--- a/mcs/errors/gcs0122-2.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-// CS0122: `Test<float>' is inaccessible due to its protection level
-// Line: 8
-// Compiler options: -r:GCS0122-2-lib.dll
-
-class X
-{
-	static void Main ()
-	{
-		Test<float> test = new Test<float> ();
-	}
-}
-
diff --git a/mcs/errors/gcs0122-3.cs b/mcs/errors/gcs0122-3.cs
deleted file mode 100644
index 76435ab..0000000
--- a/mcs/errors/gcs0122-3.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-// CS0122: `Bar.Baz' is inaccessible due to its protection level
-// Line: 7
-
-public class Foo<K> {
-}
-
-public class Bar : Foo<Bar.Baz> {
-	private class Baz {
-	}
-}
diff --git a/mcs/errors/gcs0266.cs b/mcs/errors/gcs0266.cs
deleted file mode 100644
index d09ff66..0000000
--- a/mcs/errors/gcs0266.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-// CS0266: Cannot implicitly convert type `I' to `C'. An explicit conversion exists (are you missing a cast?)
-// Line: 16
-
-interface I
-{
-}
-
-struct C : I
-{
-}
-
-class X
-{
-	static void Main (string[] args)
-	{
-		C c = default (I);
-	}
-}
diff --git a/mcs/errors/gcs0281.cs b/mcs/errors/gcs0281.cs
deleted file mode 100644
index c0ffe73..0000000
--- a/mcs/errors/gcs0281.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-// gcs0281.cs: Friend access was granted to `gcs0281, PublicKeyToken=27576a8182a18822', but the output assembly is named `gcs0281, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'. Try adding a reference to `gcs0281, PublicKeyToken=27576a8182a18822' or change the output assembly name to match it
-// Line: 0
-// Compiler options: -r:CSFriendAssembly-lib.dll
-
-using System;
-
-public class Test
-{
-	static void Main ()
-	{
-		FriendClass.MyMethod ();
-	}
-}
-
diff --git a/mcs/errors/gcs0307-5.cs b/mcs/errors/gcs0307-5.cs
deleted file mode 100644
index 3e887de..0000000
--- a/mcs/errors/gcs0307-5.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-// CS0307: The property `Test<T,U>.Value' cannot be used with type arguments
-// Line: 16
-
-class Test<T, U>
-{
-	public object Value {
-		get { return null; }
-	}
-
-	public class B
-	{
-		public B (object arg)
-		{
-		}
-		
-		public static B Default = new B (Value<U>.Default);
-	}
-}
diff --git a/mcs/errors/gcs0412-2.cs b/mcs/errors/gcs0412-2.cs
deleted file mode 100644
index a03a7ab..0000000
--- a/mcs/errors/gcs0412-2.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-// CS0412: The type parameter name `T' is the same as `method parameter'
-// Line: 8
-
-using System;
-
-interface I
-{
-	T Foo<T>(IComparable T);
-}
\ No newline at end of file
diff --git a/mcs/errors/gcs0412-3.cs b/mcs/errors/gcs0412-3.cs
deleted file mode 100644
index 709572c..0000000
--- a/mcs/errors/gcs0412-3.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-// CS0412: The type parameter name `T' is the same as `local variable'
-// Line: 8
-
-class C
-{
-	public void Foo<T> (int value)
-	{
-		int T;
-	}
-}
\ No newline at end of file
diff --git a/mcs/errors/gcs0412.cs b/mcs/errors/gcs0412.cs
deleted file mode 100644
index 866499d..0000000
--- a/mcs/errors/gcs0412.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-// CS0412: The type parameter name `T' is the same as `method parameter'
-// Line: 6
-
-class C
-{
-	public void Foo<T> (string T)
-	{
-	}
-}
\ No newline at end of file
diff --git a/mcs/errors/gcs0453-4.cs b/mcs/errors/gcs0453-4.cs
deleted file mode 100644
index 748d235..0000000
--- a/mcs/errors/gcs0453-4.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-// CS0453: The type `T' must be a non-nullable value type in order to use it as type parameter `T' in the generic type or method `System.Nullable<T>'
-// Line: 14
-
-using System;
-
-public static class Nullable_Test {
-	public static int Compare<T> (Nullable<T> left)
-	{
-		return 0;
-	}
-}
\ No newline at end of file
diff --git a/mcs/errors/gcs0647-2.cs b/mcs/errors/gcs0647-2.cs
deleted file mode 100644
index d21b3d3..0000000
--- a/mcs/errors/gcs0647-2.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-// gcs0647-2.cs: Error during emitting `System.Runtime.CompilerServices.InternalsVisibleToAttribute' attribute. The reason is `Friend assembly `AssemblySomething, Culture=en-US' is invalid. InternalsVisibleTo cannot have version or culture specified.'
-// Line: 8
-
-using System;
-using System.Runtime.CompilerServices;
-
-[assembly: InternalsVisibleTo ("AssemblySomething, Culture=en-US")]
-
-public class InternalsVisibleToTest 
-{
-	static void Main ()
-	{
-	}
-}
-
diff --git a/mcs/errors/gcs0647.cs b/mcs/errors/gcs0647.cs
deleted file mode 100644
index 83eddb9..0000000
--- a/mcs/errors/gcs0647.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-// gcs0647.cs: Error during emitting `System.Runtime.CompilerServices.InternalsVisibleToAttribute' attribute. The reason is `Friend assembly `MyAssemblyName, Version=0.0.0.0' is invalid. InternalsVisibleTo cannot have version or culture specified.'
-// Line: 8
-
-using System;
-using System.Runtime.CompilerServices;
-
-[assembly: InternalsVisibleTo ("MyAssemblyName, Version=0.0.0.0")]
-
-public class InternalsVisibleToTest 
-{
-	static void Main ()
-	{
-	}
-
-}
-
diff --git a/mcs/errors/gcs0701-2.cs b/mcs/errors/gcs0701-2.cs
deleted file mode 100644
index 886c6aa..0000000
--- a/mcs/errors/gcs0701-2.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-// gcs0701.cs: `S' is not a valid constraint. A constraint must be an interface, a non-sealed class or a type parameter
-// Line: 8
-
-struct S
-{
-}
-
-class Foo<T> where T : S
-{
-}
diff --git a/mcs/errors/gcs0730.cs b/mcs/errors/gcs0730.cs
deleted file mode 100644
index 2f27031..0000000
--- a/mcs/errors/gcs0730.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-// gcs0730.cs: Cannot forward type `C.CC' because it is a nested type
-// Line: 8
-// Compiler options: -r:GCS0730-lib.dll
-
-using System;
-using System.Runtime.CompilerServices;
-
-[assembly: TypeForwardedTo(typeof (C.CC))]
diff --git a/mcs/errors/gcs0843.cs b/mcs/errors/gcs0843.cs
deleted file mode 100644
index 35621cd..0000000
--- a/mcs/errors/gcs0843.cs
+++ /dev/null
@@ -1,13 +0,0 @@
-// CS0843: An automatically implemented property `S.Short' must be fully assigned before control leaves the constructor. Consider calling default contructor
-// Line: 8
-
-using System;
-
-struct S
-{
-	public S (int value)
-	{
-	}
-	
-	public short Short { get; set; }
-}
diff --git a/mcs/errors/gcs1041.cs b/mcs/errors/gcs1041.cs
deleted file mode 100644
index 61f9833..0000000
--- a/mcs/errors/gcs1041.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-// CS1001: Identifier expected
-// Line: 6
-
-class B<T>
-{
-	T Foo (T)
-	{
-	}
-}
\ No newline at end of file
diff --git a/mcs/errors/gcs1525-3.cs b/mcs/errors/gcs1525-3.cs
deleted file mode 100755
index d183dba..0000000
--- a/mcs/errors/gcs1525-3.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-// CS1525: Unexpected symbol `)', expecting `identifier'
-// Line: 8
-
-class C
-{
-	public static void Main ()
-	{
-		object o = (int) => null;
-	}
-}
diff --git a/mcs/errors/gcs1579.cs b/mcs/errors/gcs1579.cs
deleted file mode 100644
index 07d903d..0000000
--- a/mcs/errors/gcs1579.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-// CS1579: foreach statement cannot operate on variables of type `Foo' because it does not contain a definition for `GetEnumerator' or is inaccessible
-// Line: 12
-
-using System;
-using System.Collections;
-
-public class Test
-{
-	public static void Main ()
-	{
-		Foo f = new Foo ();
-		foreach (object o in f)
-			Console.WriteLine (o);
-	}
-}
-
-public class Foo
-{
-	public Func<IEnumerator> GetEnumerator;
-}
diff --git a/mcs/errors/gcs1644-15.cs b/mcs/errors/gcs1644-15.cs
deleted file mode 100644
index 455cf40..0000000
--- a/mcs/errors/gcs1644-15.cs
+++ /dev/null
@@ -1,6 +0,0 @@
-// CS1644: Feature `generic type variance' cannot be used because it is not part of the C# 2.0 language specification
-// Line: 5
-// Compiler options: -langversion:iso-2
-
- public interface IFoo<out T> {
- }
diff --git a/mcs/errors/gcs1644-16.cs b/mcs/errors/gcs1644-16.cs
deleted file mode 100644
index 80c54c5..0000000
--- a/mcs/errors/gcs1644-16.cs
+++ /dev/null
@@ -1,6 +0,0 @@
-// CS1644: Feature `generic type variance' cannot be used because it is not part of the C# 2.0 language specification
-// Line: 5
-// Compiler options: -langversion:iso-2
-
- public interface IFoo<in T> {
- }
diff --git a/mcs/errors/gcs1685.cs b/mcs/errors/gcs1685.cs
deleted file mode 100644
index a2ec93e..0000000
--- a/mcs/errors/gcs1685.cs
+++ /dev/null
@@ -1,4 +0,0 @@
-// CS1685: The predefined type `System.Runtime.CompilerServices.ExtensionAttribute' is defined in multiple assemblies. Using definition from `System.Core'
-// Line: 0
-// Compiler options: -warn:1 -warnaserror -r:System.Core.dll -r:GCS1685-lib.dll
-
diff --git a/mcs/errors/gcs1724.cs b/mcs/errors/gcs1724.cs
deleted file mode 100644
index 9d8c3c1..0000000
--- a/mcs/errors/gcs1724.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-// cs1724.cs: Value specified for the argument to 'System.Runtime.InteropServices.DefaultCharSetAttribute' is not valid
-// Line: 7
-
-using System;
-using System.Runtime.InteropServices;
-
-[module: DefaultCharSet ((CharSet)30)]
diff --git a/mcs/errors/gcs1960-2.cs b/mcs/errors/gcs1960-2.cs
deleted file mode 100644
index c4699cd..0000000
--- a/mcs/errors/gcs1960-2.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-// CS1960: Variant type parameters can only be used with interfaces and delegates
-// Line: 5
-// Compiler options: -langversion:future
-
-class A<in T>
-{
-}
diff --git a/mcs/errors/gcs1960.cs b/mcs/errors/gcs1960.cs
deleted file mode 100644
index bbd5c15..0000000
--- a/mcs/errors/gcs1960.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-// CS1960: Variant type parameters can only be used with interfaces and delegates
-// Line: 5
-// Compiler options: -langversion:future
-
-class A<out T>
-{
-}
diff --git a/mcs/errors/gcs1961-10.cs b/mcs/errors/gcs1961-10.cs
deleted file mode 100644
index 012572e..0000000
--- a/mcs/errors/gcs1961-10.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-// CS1961: The contravariant type parameter `T' must be invariantly valid on `B<T>()'
-// Line: 9
-// Compiler options: -langversion:future
-
-interface A<T>
-{
-}
-
-delegate A<A<T>> B<in T> ();
diff --git a/mcs/errors/gcs1961-11.cs b/mcs/errors/gcs1961-11.cs
deleted file mode 100644
index 35dfd1d..0000000
--- a/mcs/errors/gcs1961-11.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-// CS1961: The contravariant type parameter `T' must be invariantly valid on `B<T>(A<T>)'
-// Line: 9
-// Compiler options: -langversion:future
-
-interface A<T>
-{
-}
-
-delegate void B<in T> (A<T> a);
diff --git a/mcs/errors/gcs1961-12.cs b/mcs/errors/gcs1961-12.cs
deleted file mode 100644
index f230ae8..0000000
--- a/mcs/errors/gcs1961-12.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-// CS1961: The contravariant type parameter `T' must be invariantly valid on `B<T>(A<A<T>>)'
-// Line: 9
-// Compiler options: -langversion:future
-
-interface A<T>
-{
-}
-
-delegate void B<in T> (A<A<T>> a);
diff --git a/mcs/errors/gcs1961-15.cs b/mcs/errors/gcs1961-15.cs
deleted file mode 100644
index 7a0b81b..0000000
--- a/mcs/errors/gcs1961-15.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-// CS1961: The covariant type parameter `U' must be contravariantly valid on `D<U>()'
-// Line: 9
-// Compiler options: -langversion:future
-
-interface I<in T>
-{
-}
-
-delegate I<U[]> D<out U> ();
diff --git a/mcs/errors/gcs1961-16.cs b/mcs/errors/gcs1961-16.cs
deleted file mode 100644
index 7a7651e..0000000
--- a/mcs/errors/gcs1961-16.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-// CS1961: The contravariant type parameter `T' must be invariantly valid on `B<T>'
-// Line: 9
-// Compiler options: -langversion:future
-
-interface A<T>
-{
-}
-
-interface B<in T> : A<T>
-{
-}
diff --git a/mcs/errors/gcs1961-17.cs b/mcs/errors/gcs1961-17.cs
deleted file mode 100644
index bdfe576..0000000
--- a/mcs/errors/gcs1961-17.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-// CS1961: The contravariant type parameter `T' must be covariantly valid on `B<T>'
-// Line: 9
-// Compiler options: -langversion:future
-
-interface A<out T>
-{
-}
-
-interface B<in T> : A<T>
-{
-}
diff --git a/mcs/errors/gcs1961-2.cs b/mcs/errors/gcs1961-2.cs
deleted file mode 100644
index 264ced0..0000000
--- a/mcs/errors/gcs1961-2.cs
+++ /dev/null
@@ -1,5 +0,0 @@
-// CS1961: The contravariant type parameter `T' must be covariantly valid on `D<T>()'
-// Line: 5
-// Compiler options: -langversion:future
-
-delegate T D<in T> ();
diff --git a/mcs/errors/gcs1961-24.cs b/mcs/errors/gcs1961-24.cs
deleted file mode 100644
index 1bde26e..0000000
--- a/mcs/errors/gcs1961-24.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-// CS1961: The covariant type parameter `T' must be invariantly valid on `B<T>()'
-// Line: 9
-// Compiler options: -langversion:future
-
-interface A<T>
-{
-}
-
-delegate A<T> B<out T> ();
diff --git a/mcs/errors/gcs1961-25.cs b/mcs/errors/gcs1961-25.cs
deleted file mode 100644
index 1a1e580..0000000
--- a/mcs/errors/gcs1961-25.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-// CS1961: The covariant type parameter `T' must be invariantly valid on `B<T>()'
-// Line: 9
-// Compiler options: -langversion:future
-
-interface A<T>
-{
-}
-
-delegate A<A<T>> B<out T> ();
diff --git a/mcs/errors/gcs1961-26.cs b/mcs/errors/gcs1961-26.cs
deleted file mode 100644
index 833d592..0000000
--- a/mcs/errors/gcs1961-26.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-// CS1961: The covariant type parameter `T' must be invariantly valid on `B<T>(A<T>)'
-// Line: 9
-// Compiler options: -langversion:future
-
-interface A<T>
-{
-}
-
-delegate void B<out T> (A<T> a);
diff --git a/mcs/errors/gcs1961-27.cs b/mcs/errors/gcs1961-27.cs
deleted file mode 100644
index 4681fd6..0000000
--- a/mcs/errors/gcs1961-27.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-// CS1961: The covariant type parameter `T' must be invariantly valid on `B<T>(A<A<T>>)'
-// Line: 9
-// Compiler options: -langversion:future
-
-interface A<T>
-{
-}
-
-delegate void B<out T> (A<A<T>> a);
diff --git a/mcs/errors/gcs1961-30.cs b/mcs/errors/gcs1961-30.cs
deleted file mode 100644
index 609b6fb..0000000
--- a/mcs/errors/gcs1961-30.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-// CS1961: The covariant type parameter `U' must be contravariantly valid on `D<U>()'
-// Line: 7
-// Compiler options: -langversion:future
-
-interface IContravariant<in T> { }
-
-delegate IContravariant<U[]> D<out U> ();
diff --git a/mcs/errors/gcs1961-31.cs b/mcs/errors/gcs1961-31.cs
deleted file mode 100644
index 6b97735..0000000
--- a/mcs/errors/gcs1961-31.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-// CS1961: The covariant type parameter `T' must be invariantly valid on `B<T>'
-// Line: 9
-// Compiler options: -langversion:future
-
-interface A<T>
-{
-}
-
-interface B<out T> : A<T>
-{
-}
diff --git a/mcs/errors/gcs1961-32.cs b/mcs/errors/gcs1961-32.cs
deleted file mode 100644
index cf850f5..0000000
--- a/mcs/errors/gcs1961-32.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-// CS1961: The covariant type parameter `T' must be contravariantly valid on `B<T>'
-// Line: 9
-// Compiler options: -langversion:future
-
-interface A<in T>
-{
-}
-
-interface B<out T> : A<T>
-{
-}
diff --git a/mcs/errors/gcs1961-33.cs b/mcs/errors/gcs1961-33.cs
deleted file mode 100644
index 273fb8c..0000000
--- a/mcs/errors/gcs1961-33.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-// CS1961: The contravariant type parameter `T' must be invariantly valid on `A<T>.B(out T)'
-// Line: 5
-// Compiler options: -langversion:future
-
-interface A<in T>
-{
-	void B(out T t);
-}
diff --git a/mcs/errors/gcs1961-34.cs b/mcs/errors/gcs1961-34.cs
deleted file mode 100644
index ddf235e..0000000
--- a/mcs/errors/gcs1961-34.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-// CS1961: The contravariant type parameter `T' must be invariantly valid on `A<T>.B(ref T)'
-// Line: 5
-// Compiler options: -langversion:future
-
-interface A<in T>
-{
-	void B(ref T t);
-}
diff --git a/mcs/errors/gcs1961-35.cs b/mcs/errors/gcs1961-35.cs
deleted file mode 100644
index e37dcbd..0000000
--- a/mcs/errors/gcs1961-35.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-// CS1961: The covariant type parameter `T' must be contravariantly valid on `A<T>.B(T)'
-// Line: 7
-// Compiler options: -langversion:future
-
-interface A<out T>
-{
-	void B(T t);
-}
diff --git a/mcs/errors/gcs1961-36.cs b/mcs/errors/gcs1961-36.cs
deleted file mode 100644
index 2ba44a9..0000000
--- a/mcs/errors/gcs1961-36.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-// CS1961: The covariant type parameter `T' must be invariantly valid on `A<T>.B(out T)'
-// Line: 7
-// Compiler options: -langversion:future
-
-interface A<out T>
-{
-	void B(out T t);
-}
diff --git a/mcs/errors/gcs1961-37.cs b/mcs/errors/gcs1961-37.cs
deleted file mode 100644
index af33381..0000000
--- a/mcs/errors/gcs1961-37.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-// CS1961: The covariant type parameter `T' must be invariantly valid on `A<T>.B(ref T)'
-// Line: 5
-// Compiler options: -langversion:future
-
-interface A<out T>
-{
-	void B(ref T t);
-}
diff --git a/mcs/errors/gcs1961-9.cs b/mcs/errors/gcs1961-9.cs
deleted file mode 100644
index ba7fad1..0000000
--- a/mcs/errors/gcs1961-9.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-// CS1961: The contravariant type parameter `T' must be invariantly valid on `B<T>()'
-// Line: 9
-// Compiler options: -langversion:future
-
-interface A<T>
-{
-}
-
-delegate A<T> B<in T> ();
diff --git a/mcs/errors/gcs1961.cs b/mcs/errors/gcs1961.cs
deleted file mode 100644
index 2513641..0000000
--- a/mcs/errors/gcs1961.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-// CS1961: The contravariant type parameter `T' must be covariantly valid on `A<T>.B()'
-// Line: 7
-// Compiler options: -langversion:future
-
-interface A<in T>
-{
-	T B();
-}
diff --git a/mcs/errors/known-issues-dmcs b/mcs/errors/known-issues-dmcs
index 9a1e4fd..4466c6d 100644
--- a/mcs/errors/known-issues-dmcs
+++ b/mcs/errors/known-issues-dmcs
@@ -11,9 +11,7 @@
 # csXXXX.cs NO ERROR	: error test case doesn't report any error. An exception is considered
 #			  as NO ERROR and CS5001 is automatically ignored.
 
-cs0158-5.cs
 cs0162-7.cs NO ERROR
-cs1041.cs # new in GMCS; grammar issue
 
 # Operators
 cs0457-2.cs
@@ -24,22 +22,31 @@ cs1540-6.cs NO ERROR
 dcs0165.cs NO ERROR # Bug 593369
 
 # all the following are from bug #628673
-dcs1965.cs NO ERROR
+cs0122-35.cs
+cs0012.cs
+cs0012-2.cs
+cs0012-3.cs NO ERROR
+cs0012-4.cs NO ERROR
+cs0012-5.cs NO ERROR
+cs0012-6.cs
+cs0012-7.cs
+cs0012-8.cs
+cs0012-9.cs
+cs0012-10.cs
 dcs1979.cs
-gcs0122-2.cs
-gcs0307-6.cs
-gcs0308-7.cs
 cs0023-11.cs
 cs0111-3.cs
 cs0122-19.cs
 cs0122-28.cs
 cs0122-8.cs
+cs0168-2.cs
 cs0177-8.cs NO ERROR
-cs0419.cs
+cs0307-6.cs
+cs0308-7.cs
+cs0315.cs NO ERROR
 cs0520.cs
-cs0844-2.cs
-cs0844.cs
-cs1574-2.cs
+cs1509.cs
+cs1542.cs NO ERROR
 cs1574-3.cs NO ERROR
 cs1574-6.cs NO ERROR
 cs1574-8.cs NO ERROR
diff --git a/mcs/errors/known-issues-gmcs b/mcs/errors/known-issues-gmcs
index 4c52704..39d53dd 100644
--- a/mcs/errors/known-issues-gmcs
+++ b/mcs/errors/known-issues-gmcs
@@ -11,9 +11,7 @@
 # csXXXX.cs NO ERROR	: error test case doesn't report any error. An exception is considered
 #			  as NO ERROR and CS5001 is automatically ignored.
 
-cs0158-5.cs
 cs0162-7.cs NO ERROR
-cs1041.cs # new in GMCS; grammar issue
 
 # Operators
 cs0457-2.cs
@@ -22,20 +20,30 @@ cs0457.cs
 cs1540-6.cs NO ERROR Is it real error
 
 # all the following are from bug #628673
-gcs0122-2.cs
-gcs0307-6.cs
-gcs0308-7.cs
+cs0122-35.cs
+cs0012.cs
+cs0012-2.cs
+cs0012-3.cs NO ERROR
+cs0012-4.cs NO ERROR
+cs0012-5.cs NO ERROR
+cs0012-6.cs
+cs0012-7.cs
+cs0012-8.cs
+cs0012-9.cs
+cs0012-10.cs
 cs0023-11.cs
 cs0111-3.cs
 cs0122-19.cs
 cs0122-28.cs
 cs0122-8.cs
+cs0168-2.cs
 cs0177-8.cs NO ERROR
-cs0419.cs
+cs0307-6.cs
+cs0308-7.cs
+cs0315.cs NO ERROR
 cs0520.cs
-cs0844-2.cs
-cs0844.cs
-cs1574-2.cs
+cs1509.cs
+cs1542.cs NO ERROR
 cs1574-3.cs NO ERROR
 cs1574-6.cs NO ERROR
 cs1574-8.cs NO ERROR
diff --git a/mcs/jay/ChangeLog b/mcs/jay/ChangeLog
index 292db78..99b226d 100644
--- a/mcs/jay/ChangeLog
+++ b/mcs/jay/ChangeLog
@@ -1,3 +1,19 @@
+2011-01-13  Andrew Jorgensen  <ajorgensen at novell.com>
+
+	Add vcxproj files for msbuild
+
+2010-12-29  Jonathan Pobst  <monkey at jpobst.com>
+
+	Do previous SKEL_DIRECTORY change for Release profile as well.
+
+2010-12-29  Jonathan Pobst  <monkey at jpobst.com>
+
+	Escape SKEL_DIRECTORY define.
+
+2010-11-17  joncham  <joncham at gmail.com>
+
+	Update vcxproj files.
+
 2010-08-29  Marek Safar  <marek.safar at gmail.com>
 
 	Wrap any non-trivial rule into a method, speeds up the parser by
diff --git a/mcs/jay/Makefile b/mcs/jay/Makefile
index 68e8da9..730ef09 100644
--- a/mcs/jay/Makefile
+++ b/mcs/jay/Makefile
@@ -10,7 +10,7 @@ sources = closure.c error.c lalr.c lr0.c main.c mkpar.c output.c reader.c \
 datafiles = ACKNOWLEDGEMENTS NEW_FEATURES NOTES README README.jay skeleton \
             skeleton.cs
 
-DISTFILES = $(datafiles) $(sources) jay.1 $(wildcard *.h)
+DISTFILES = $(datafiles) $(sources) jay.1 $(wildcard *.h) jay.vcxproj
 
 all-local: jay
 
diff --git a/mcs/jay/jay.vcxproj b/mcs/jay/jay.vcxproj
new file mode 100644
index 0000000..cd9d109
--- /dev/null
+++ b/mcs/jay/jay.vcxproj
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{5D485D32-3B9F-4287-AB24-C8DA5B89F537}</ProjectGuid>
+    <RootNamespace>jay</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>SKEL_DIRECTORY=".";%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <OutputFile>$(ProjectDir)/jay.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(OutDir)jay.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <PreprocessorDefinitions>SKEL_DIRECTORY=".";%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <OutputFile>$(ProjectDir)/jay.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="closure.c" />
+    <ClCompile Include="error.c" />
+    <ClCompile Include="lalr.c" />
+    <ClCompile Include="lr0.c" />
+    <ClCompile Include="main.c" />
+    <ClCompile Include="mkpar.c" />
+    <ClCompile Include="output.c" />
+    <ClCompile Include="reader.c" />
+    <ClCompile Include="symtab.c" />
+    <ClCompile Include="verbose.c" />
+    <ClCompile Include="warshall.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="defs.h" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/mcs/mcs/AssemblyInfo.cs b/mcs/mcs/AssemblyInfo.cs
index d41a6f8..863083f 100644
--- a/mcs/mcs/AssemblyInfo.cs
+++ b/mcs/mcs/AssemblyInfo.cs
@@ -27,7 +27,6 @@
 //
 
 using System.Reflection;
-using System.Runtime.CompilerServices;
 
 [assembly: AssemblyTitle ("Mono C# Compiler")]
 [assembly: AssemblyProduct ("Mono C# Compiler")]
diff --git a/mcs/mcs/ChangeLog b/mcs/mcs/ChangeLog
index 5a6ce06..abc4e11 100644
--- a/mcs/mcs/ChangeLog
+++ b/mcs/mcs/ChangeLog
@@ -1,25 +1,1101 @@
+2011-01-18  Marek Safar  <marek.safar at gmail.com>
+
+	Checking skd path for is not enough, add check for mscorlib as
+	well
+
+2011-01-17  Marek Safar  <marek.safar at gmail.com>
+
+	Fallback to corlib location when sdk path cannot be found
+
+2011-01-18  Marek Safar  <marek.safar at gmail.com>
+
+	Remove devirtualization for Type members
+
+2011-01-17  Marek Safar  <marek.safar at gmail.com>
+
+	Add new mcs -sdk option
+
+2011-01-17  Marek Safar  <marek.safar at gmail.com>
+
+	Update to the latest mcs version
+
+2011-01-11  Marek Safar  <marek.safar at gmail.com>
+
+	Update copyright years
+
+2011-01-11  Marek Safar  <marek.safar at gmail.com>
+
+	Use base type parameters to extract params modifier of virtual
+	method
+
+2011-01-11  Marek Safar  <marek.safar at gmail.com>
+
+	Install new ikvm based C# compiler as mcs
+
+2011-01-11  Marek Safar  <marek.safar at gmail.com>
+
+	[662222] Import dynamic attribute using attribute type reader
+
+2011-01-10  Marek Safar  <marek.safar at gmail.com>
+
+	Report correct base modifier for inaccessible protected internal
+	members
+
+2011-01-10  Marek Habersack  <grendel at twistedcode.net>
+
+	[asp.net,mcs] Fixed 'protected internal' build errors and removed
+	System.Web-specific hack from mcs
+
+2011-01-08  Marek Safar  <marek.safar at gmail.com>
+
+	[663059] Add check for protected modifier in InternalsVisibleTo
+	assembly
+
+2011-01-08  Marek Safar  <marek.safar at gmail.com>
+
+	Allow trailing comma for resource argument
+
+2011-01-07  Marek Safar  <marek.safar at gmail.com>
+
+	Better anonymous methods require same parameter types
+
+2011-01-06  Marek Safar  <marek.safar at gmail.com>
+
+	More global state hacking
+
+2011-01-05  Marek Safar  <marek.safar at gmail.com>
+
+	[662440] Don't expand nested type builders of non-generic types
+
+2011-01-05  Marek Safar  <marek.safar at gmail.com>
+
+	Add mcs solution file
+
+2011-01-04  Marek Safar  <marek.safar at gmail.com>
+
+	Set build-in types modifiers
+
+2011-01-04  Marek Safar  <marek.safar at gmail.com>
+
+	Type correctly implicit as expression
+
+2011-01-04  Marek Safar  <marek.safar at gmail.com>
+
+	Cleanup isinst expression resolver
+
+2011-01-04  Marek Safar  <marek.safar at gmail.com>
+
+	Use reduced expression for transparent is check
+
+2011-01-04  Marek Safar  <marek.safar at gmail.com>
+
+	Use one routine for type argument scan for type parameter
+
+2010-12-29  Marek Safar  <marek.safar at gmail.com>
+
+	Implements checking of referenced members with missing references
+
+2010-12-22  Marek Safar  <marek.safar at gmail.com>
+
+	Report obsolete warning for generic methods which base
+	implementation constraints are obsolete
+
+2010-12-22  Marek Safar  <marek.safar at gmail.com>
+
+	[660553] Fixed delegate name hiding.
+
+2010-12-20  Marek Safar  <marek.safar at gmail.com>
+
+	Enable fixed ikvm exception mode
+
+2010-12-20  Marek Safar  <marek.safar at gmail.com>
+
+	Emit constant data type using compiler type containers
+
+2010-12-20  Marek Safar  <marek.safar at gmail.com>
+
+	Add a workaround for ikvm unfixed baked method tokens
+
+2010-12-20  Marek Safar  <marek.safar at gmail.com>
+
+	Disable ikvm exception optimization until it's fixed
+
+2010-12-20  Marek Safar  <marek.safar at gmail.com>
+
+	Keep looking for references assembly after first lib path fails
+
+2010-12-20  Marek Safar  <marek.safar at gmail.com>
+
+	Replace initial eval Reset with PartialReset
+
+2010-12-20  Marek Safar  <marek.safar at gmail.com>
+
+	[660260] A static method is inaccessible from a nested type with
+	explicit generic args
+
+2010-12-20  Marek Safar  <marek.safar at gmail.com>
+
+	[660255] Keep inflated non-inflated method info independently
+
+2010-12-17  Marek Safar  <marek.safar at gmail.com>
+
+	Add more files to mcs dist
+
+2010-12-17  Marek Safar  <marek.safar at gmail.com>
+
+	[660077] Setup class interfaces for defined types in same way as
+	for imported types
+
+2010-12-17  Marek Safar  <marek.safar at gmail.com>
+
+	Made SecurityAction predefined type
+
+2010-12-17  Marek Safar  <marek.safar at gmail.com>
+
+	[657601] Fixes parsing pragma warning when encounter eof
+
+2010-12-16  Marek Safar  <marek.safar at gmail.com>
+
+	Set ImageRuntimeVersion based on mscorlib version when available
+
+2010-12-16  Marek Safar  <marek.safar at gmail.com>
+
+	[659970] Close anonymous method scope also for top-level blocks
+
+2010-12-16  Marek Safar  <marek.safar at gmail.com>
+
+	Switch to single mcs compiler for all managed code build
+
+2010-12-16  Marek Safar  <marek.safar at gmail.com>
+
+	Cleanup references in static mode
+
+2010-12-15  Marek Safar  <marek.safar at gmail.com>
+
+	Add more attribute arguments checks
+
+2010-12-15  Marek Safar  <marek.safar at gmail.com>
+
+	Fixed cloning of default switch case
+
+2010-12-15  Marek Safar  <marek.safar at gmail.com>
+
+	[659536] Don't re-create array expressions when infering implicit
+	array type
+
+2010-12-15  Marek Safar  <marek.safar at gmail.com>
+
+	[659528] Fixed cloning of switch sections
+
+2010-12-15  Marek Safar  <marek.safar at gmail.com>
+
+	[656150] Fix repl recovery after invalid expression.
+
+2010-12-15  Marek Safar  <marek.safar at gmail.com>
+
+	Fix comment typo
+
+2010-12-15  Marek Safar  <marek.safar at gmail.com>
+
+	Workaround problem when compiling many resource files references
+
+2010-12-15  Marek Safar  <marek.safar at gmail.com>
+
+	Switch to resizeable array when adding second item to base member
+	cache
+
+2010-12-15  Marek Safar  <marek.safar at gmail.com>
+
+	Emit delegate constructor parameter names
+
+2010-12-15  Marek Safar  <marek.safar at gmail.com>
+
+	Recover from invalid linq block syntax
+
+2010-12-14  Marek Safar  <marek.safar at gmail.com>
+
+	[653710] Check type parameter reference type constraint
+	recursively
+
+2010-12-14  Marek Safar  <marek.safar at gmail.com>
+
+	[656918] Implement expression tree access to hoisted variable
+	reference
+
+2010-12-14  Marek Safar  <marek.safar at gmail.com>
+
+	[656918] Emit instance expression for ET delegate creation
+
+2010-12-14  Marek Safar  <marek.safar at gmail.com>
+
+	Reject automatic version number at major and minor positions
+
+2010-12-14  Marek Safar  <marek.safar at gmail.com>
+
+	[655284] Implemented automatic assembly version numbers
+
+2010-12-14  Marek Safar  <marek.safar at gmail.com>
+
+	[655770] Emit unused members warning for nested types as well
+
+2010-12-14  Marek Safar  <marek.safar at gmail.com>
+
+	[657623] Fix incorrect logic in value type parameter `is' check
+
+2010-12-14  Marek Safar  <marek.safar at gmail.com>
+
+	Add more restrictions to custom attribute encoding
+
+2010-12-14  Marek Safar  <marek.safar at gmail.com>
+
+	[657797] Expand type member cache using secondary constraints as
+	well.
+
+2010-12-13  Marek Safar  <marek.safar at gmail.com>
+
+	Remove duplicate checks
+
+2010-12-13  Marek Safar  <marek.safar at gmail.com>
+
+	[659038] Check interface hierarchy before reporting ambiguous
+	errors
+
+2010-12-13  Marek Safar  <marek.safar at gmail.com>
+
+	[657862] Correctly scan for parent of base method override
+
+2010-12-13  Marek Safar  <marek.safar at gmail.com>
+
+	[658722] Don't require arity symbol to be part of the typename
+
+2010-12-13  Marek Safar  <marek.safar at gmail.com>
+
+	[659022] Resolve reduced expressions
+
+2010-12-10  Marek Safar  <marek.safar at gmail.com>
+
+	Revert unwanted makefile change
+
+2010-12-10  Marek Safar  <marek.safar at gmail.com>
+
+	Add v1 runtime target (broken by design)
+
+2010-12-10  Marek Safar  <marek.safar at gmail.com>
+
+	Resolve entire base initializer block in correct context
+
+2010-12-10  Marek Safar  <marek.safar at gmail.com>
+
+	Report missing types (some of them for now)
+
+2010-12-09  Marek Safar  <marek.safar at gmail.com>
+
+	Try to handle missing generic type definition
+
+2010-12-09  Marek Safar  <marek.safar at gmail.com>
+
+	Read custom attribute name without resolving attribute type if
+	possible
+
+2010-12-09  Marek Safar  <marek.safar at gmail.com>
+
+	Redirect all mscorlib loads into assembly builder when compiling
+	corlib
+
+2010-12-08  Marek Safar  <marek.safar at gmail.com>
+
+	Add initial handling of missing assemblies
+
+2010-12-08  Marek Safar  <marek.safar at gmail.com>
+
+	Add internal --runtime option
+
+2010-12-08  Marek Safar  <marek.safar at gmail.com>
+
+	Add references loading trace
+
+2010-12-08  Marek Safar  <marek.safar at gmail.com>
+
+	Removed check for generics on 1.1 runtime
+
+2010-12-07  Marek Safar  <marek.safar at gmail.com>
+
+	Put back actual save of module target
+
+2010-12-07  Marek Safar  <marek.safar at gmail.com>
+
+	Check file extension manually
+
+2010-12-07  Marek Safar  <marek.safar at gmail.com>
+
+	Symbol writer has to use 4.0 methods in static mode
+
+2010-12-07  Marek Safar  <marek.safar at gmail.com>
+
+	Add IKVM.Reflection support
+
+2010-12-06  Marek Safar  <marek.safar at gmail.com>
+
+	Extract reflection specific assembly builder
+
+2010-12-06  Marek Safar  <marek.safar at gmail.com>
+
+	Re-use existing code path
+
+2010-12-06  Marek Safar  <marek.safar at gmail.com>
+
+	Refactor assemblies loading into a base class
+
+2010-12-06  Marek Safar  <marek.safar at gmail.com>
+
+	Move more fields to RootContext
+
+2010-12-06  Marek Safar  <marek.safar at gmail.com>
+
+	Removed obsolete files
+
+2010-12-06  Marek Safar  <marek.safar at gmail.com>
+
+	Use type definition for generic type forwarders
+
+2010-12-06  Marek Safar  <marek.safar at gmail.com>
+
+	Don't close same type twice when base call closes this declaration
+
+2010-12-06  Marek Safar  <marek.safar at gmail.com>
+
+	Use Version type instead of string value
+
+2010-12-06  Marek Safar  <marek.safar at gmail.com>
+
+	Use decimal optional parameter value decoded by System.Reflection
+
+2010-12-03  Marek Safar  <marek.safar at gmail.com>
+
+	Extract reflection specific code from extended builder
+
+2010-12-03  Marek Safar  <marek.safar at gmail.com>
+
+	Move assembly security declaration to extened builder
+
+2010-12-03  Marek Safar  <marek.safar at gmail.com>
+
+	Don't call module symbol writer methods when we are not using it
+
+2010-12-03  Marek Safar  <marek.safar at gmail.com>
+
+	Delay initialization of missing methods needed by symbol writer
+
+2010-12-03  Marek Safar  <marek.safar at gmail.com>
+
+	Apply implicit parameter attributes using standard path to avoid
+	any duplicates
+
+2010-12-03  Marek Safar  <marek.safar at gmail.com>
+
+	More symbol writer clean-up
+
+2010-12-02  Marek Safar  <marek.safar at gmail.com>
+
+	Don't try to parse invalid namespace declarations, it does more
+	harm than good
+
+2010-12-02  Marek Safar  <marek.safar at gmail.com>
+
+	Update setting of buildin internal types
+
+2010-12-02  Marek Safar  <marek.safar at gmail.com>
+
+	Removed InitOptionalCoreTypes
+
+2010-12-02  Marek Safar  <marek.safar at gmail.com>
+
+	Clean-up module indirections
+
+2010-12-02  Marek Safar  <marek.safar at gmail.com>
+
+	Move all predefined types to module to work with any mscorlib
+
+2010-12-01  Marek Safar  <marek.safar at gmail.com>
+
+	Move references loading into a new class
+
+2010-12-01  Marek Safar  <marek.safar at gmail.com>
+
+	Move AssemblyResource to assembly.cs
+
+2010-11-30  Marek Safar  <marek.safar at gmail.com>
+
+	Import parameter default values using TypeCode
+
+2010-11-30  Marek Safar  <marek.safar at gmail.com>
+
+	Remove remaining typeof
+
+2010-11-30  Marek Safar  <marek.safar at gmail.com>
+
+	Read dynamic attribute using CustomAttributeData
+
+2010-11-30  Marek Safar  <marek.safar at gmail.com>
+
+	Emit optional default value-type parameter using nullref
+
+2010-11-30  Marek Safar  <marek.safar at gmail.com>
+
+	Move core predefined types into a new class
+
+2010-11-30  Marek Safar  <marek.safar at gmail.com>
+
+	Add initial reflection dependant code
+
+2010-11-30  Marek Safar  <marek.safar at gmail.com>
+
+	Move metadata importer out of compiler context finally
+
+2010-11-29  Marek Safar  <marek.safar at gmail.com>
+
+	Check imported custom attributes based on name only
+
+2010-11-29  Marek Safar  <marek.safar at gmail.com>
+
+	Made type member kind logic more flexible
+
+2010-11-29  Marek Safar  <marek.safar at gmail.com>
+
+	Don't special case value type constraint
+
+2010-11-29  Marek Safar  <marek.safar at gmail.com>
+
+	Add sanity check for imported static fixed buffer
+
+2010-11-26  Marek Safar  <marek.safar at gmail.com>
+
+	Removed few custom attribute IsDefined calls
+
+2010-11-26  Marek Safar  <marek.safar at gmail.com>
+
+	Import constants using their raw values only
+
+2010-11-26  Marek Safar  <marek.safar at gmail.com>
+
+	[655766] Encode string null attribute argument
+
+2010-11-26  Marek Safar  <marek.safar at gmail.com>
+
+	Cleanup typed constants
+
+2010-11-26  Marek Safar  <marek.safar at gmail.com>
+
+	Switch symbol writer to public api
+
+2010-11-25  Marek Safar  <marek.safar at gmail.com>
+
+	More using cleanup
+
+2010-11-25  Marek Safar  <marek.safar at gmail.com>
+
+	Remove TypeBuilder from DefineType
+
+2010-11-24  Marek Safar  <marek.safar at gmail.com>
+
+	Unify System.Reflection usings
+
+2010-11-24  Marek Safar  <marek.safar at gmail.com>
+
+	Recover from broken for statement
+
+2010-11-24  Marek Safar  <marek.safar at gmail.com>
+
+	Inflate imported type arguments types with type definition type
+	arguments
+
+2010-11-23  Marek Safar  <marek.safar at gmail.com>
+
+	Remove typeof comparisons
+
+2010-11-22  Marek Safar  <marek.safar at gmail.com>
+
+	Remove typeof usage from DefaultCharSet
+
+2010-11-22  Marek Safar  <marek.safar at gmail.com>
+
+	Don't multiply fixed buffer size (it's done by runtime). Fixes
+	#654058
+
+2010-11-22  Marek Safar  <marek.safar at gmail.com>
+
+	Emit fixed buffers using standard api only
+
+2010-11-22  Marek Safar  <marek.safar at gmail.com>
+
+	Tweak async modifier constant value
+
+2010-11-18  Alexander Corrado  <alexander.corrado at gmail.com>
+
+	Added 'async' as a recognized method modifier.
+
+2010-11-22  Marek Safar  <marek.safar at gmail.com>
+
+	Define embeded resources using standard API
+
+2010-11-21  Marek Safar  <marek.safar at gmail.com>
+
+	Move entry point handling to AssemblyDefinition
+
+2010-11-21  Marek Safar  <marek.safar at gmail.com>
+
+	Make generated assembly attributes container name unique
+
+2010-11-21  Marek Safar  <marek.safar at gmail.com>
+
+	Don't sign netmodules.
+
+2010-11-21  Marek Safar  <marek.safar at gmail.com>
+
+	Put back private key handling
+
+2010-11-21  Marek Safar  <marek.safar at gmail.com>
+
+	Improve handling of netmodules. Fixes #504085
+
+2010-11-19  Marek Safar  <marek.safar at gmail.com>
+
+	Add AssemblySpec to handle all assembly attributes in same way.
+
+2010-11-19  Marek Safar  <marek.safar at gmail.com>
+
+	Add missing file
+
+2010-11-15  Marek Safar  <marek.safar at gmail.com>
+
+	Remove old accessibility check routine
+
+2010-11-12  Marek Safar  <marek.safar at gmail.com>
+
+	Move an assembly declaration handling into a new file
+
+2010-11-12  Marek Safar  <marek.safar at gmail.com>
+
+	Add local version of constructor info constants
+
+2010-11-12  Marek Safar  <marek.safar at gmail.com>
+
+	Remove unused namespaces
+
+2010-11-12  Marek Safar  <marek.safar at gmail.com>
+
+	Show more details for CS1061 eror
+
+2010-11-12  Marek Safar  <marek.safar at gmail.com>
+
+	Inflate nested non-generic interfaces inside generic type
+
+2010-11-12  Marek Safar  <marek.safar at gmail.com>
+
+	[652390] Return type inference can inflate using type parameters
+	out of the reach
+
+2010-11-11  Marek Safar  <marek.safar at gmail.com>
+
+	[650850] Inflate all hoisted type parameter constraints
+
+2010-11-11  Marek Safar  <marek.safar at gmail.com>
+
+	Synchronize event add/remove using CAS
+
+2010-11-10  Marek Safar  <marek.safar at gmail.com>
+
+	Unwraped equality operators cannot use a user operator of
+	different types
+
+2010-11-10  Marek Safar  <marek.safar at gmail.com>
+
+	Implement dynamic mutator over dynamic indexer
+
+2010-11-10  Marek Safar  <marek.safar at gmail.com>
+
+	More tweaks for nullable binary operation
+
+2010-11-10  Marek Safar  <marek.safar at gmail.com>
+
+	False user-operator has priority over logical not user-operator
+
+2010-11-10  Marek Safar  <marek.safar at gmail.com>
+
+	Fixes a logic error in filtering out operators like methods
+
+2010-11-09  Marek Safar  <marek.safar at gmail.com>
+
+	Don't crash on liften null left/right shift
+
+2010-11-09  Marek Safar  <marek.safar at gmail.com>
+
+	Logical binary operarions with dynamic arguments have to be
+	unfolded
+
+2010-11-09  Marek Safar  <marek.safar at gmail.com>
+
+	Import declaring type base type when walking up the tree
+
+2010-11-08  Marek Safar  <marek.safar at gmail.com>
+
+	Emit correctly EndInvoke parameters attributes and names
+
+2010-11-08  Marek Safar  <marek.safar at gmail.com>
+
+	Fixed ambiguity for overload resolution between params and
+	optional parameter of same type
+
+2010-11-08  Marek Safar  <marek.safar at gmail.com>
+
+	Clean up event expression assigning error reporting
+
+2010-11-08  Marek Safar  <marek.safar at gmail.com>
+
+	[651547] Check definitely assigned struct this access correctly.
+
+2010-11-05  Marek Safar  <marek.safar at gmail.com>
+
+	Better 843 error message
+
+2010-11-05  Marek Safar  <marek.safar at gmail.com>
+
+	Move 2.0 Monitor.Enter back out of the try block
+
+2010-11-05  Marek Safar  <marek.safar at gmail.com>
+
+	Only when importing nested types definition base type cannot be
+	setup
+
+2010-11-04  Marek Safar  <marek.safar at gmail.com>
+
+	Allow liften null as a given number of bit positions for shift
+	operator
+
+2010-11-04  Marek Safar  <marek.safar at gmail.com>
+
+	Add boxing for dynamic nullable conversion of coalescing operator
+
+2010-11-04  Marek Safar  <marek.safar at gmail.com>
+
+	Reject inaccessible members based on declaring type in dynamic
+	context
+
+2010-11-03  Marek Safar  <marek.safar at gmail.com>
+
+	Inflate also event backing field
+
+2010-11-03  Marek Safar  <marek.safar at gmail.com>
+
+	Another missing full dynamic type equality check
+
+2010-11-03  Marek Safar  <marek.safar at gmail.com>
+
+	Implement lock statement over generic type parameter
+
+2010-11-03  Marek Safar  <marek.safar at gmail.com>
+
+	Issue a warning about re-assigned locked local variable
+
+2010-11-03  Marek Safar  <marek.safar at gmail.com>
+
+	Fixes NRE in pre-4.0 compilation
+
+2010-11-03  Marek Safar  <marek.safar at gmail.com>
+
+	Reset lock_taken before entering Monitor.Enter
+
+2010-11-03  Marek Safar  <marek.safar at gmail.com>
+
+	ExclusiveOr is not nullable bitwise boolean operator
+
+2010-11-03  Marek Safar  <marek.safar at gmail.com>
+
+	A candidate method can use dynamic in expanded form at non-first
+	position
+
+2010-11-03  Marek Safar  <marek.safar at gmail.com>
+
+	typeof expression does not need unsafe context for pointer types
+
+2010-11-03  Marek Safar  <marek.safar at gmail.com>
+
+	Pass checked context to compound member access setters
+
+2010-11-02  Marek Safar  <marek.safar at gmail.com>
+
+	Emit lock statement using Monitor.Enter (object, ref bool) when
+	available
+
+2010-11-02  Marek Safar  <marek.safar at gmail.com>
+
+	Implements indirect delegates invocation via dynamic member
+	dispatch
+
+2010-11-01  Marek Safar  <marek.safar at gmail.com>
+
+	Pass value type dynamic members as by-ref to persist member side
+	effects
+
+2010-11-01  Marek Safar  <marek.safar at gmail.com>
+
+	Convert dynamic assignment in checked context when set
+
+2010-11-01  Marek Safar  <marek.safar at gmail.com>
+
+	Check for unfixed type arguments before calling overload
+	resolution for inferred return type
+
 2010-11-01  Marek Safar  <marek.safar at gmail.com>
 
 	Set correct result type for chained folded enum subtraction
 
+2010-11-01  Marek Safar  <marek.safar at gmail.com>
+
+	Check binary header using right methods.
+
+2010-10-29  Marek Safar  <marek.safar at gmail.com>
+
+	Make dynamic array access index expresions in checked context
+
+2010-10-29  Marek Safar  <marek.safar at gmail.com>
+
+	Ignore private methods in batch import
+
+2010-10-28  Marek Safar  <marek.safar at gmail.com>
+
+	Fix emitted code for predefined or/and operation between bool? and
+	bool
+
+2010-10-28  Marek Safar  <marek.safar at gmail.com>
+
+	Add more type parameter checks for inherited constraints.
+
+2010-10-27  Marek Safar  <marek.safar at gmail.com>
+
+	Implement type inference of dynamic arguments used as unknown
+	types
+
+2010-10-27  Marek Safar  <marek.safar at gmail.com>
+
+	Use correct location for unexpected type parameter
+
+2010-10-27  Marek Safar  <marek.safar at gmail.com>
+
+	Reorder MethodBase::Attributes usage
+
+2010-10-27  Marek Safar  <marek.safar at gmail.com>
+
+	[649448] Compare original goto block for cloned blocks.
+
+2010-10-27  Marek Safar  <marek.safar at gmail.com>
+
+	[648360] When inflating nested generic type use same type
+	arguments to not inflate already inflated type
+
+2010-10-27  Marek Safar  <marek.safar at gmail.com>
+
+	Make the static field readonly
+
+2010-10-27  Marek Safar  <marek.safar at gmail.com>
+
+	Make static fields readonly
+
+2010-10-27  Marek Safar  <marek.safar at gmail.com>
+
+	crlf fix
+
+2010-10-26  Marek Safar  <marek.safar at gmail.com>
+
+	Revert unwanted changes
+
+2010-10-26  Marek Safar  <marek.safar at gmail.com>
+
+	Check nested declaring types when testing member overrides
+
+2010-10-26  Marek Safar  <marek.safar at gmail.com>
+
+	Delay expensive inflator construction for type parameter
+	constraints
+
+2010-10-25  Marek Safar  <marek.safar at gmail.com>
+
+	Recover from invalid implicit lambda block
+
+2010-10-24  Marek Safar  <marek.safar at gmail.com>
+
+	Add more details to timing debugging
+
+2010-10-24  Marek Safar  <marek.safar at gmail.com>
+
+	Make setting a position out of the buffer size actually work
+
+2010-10-23  Marek Safar  <marek.safar at gmail.com>
+
+	Add missing v3 language version
+
+2010-10-22  Marek Safar  <marek.safar at gmail.com>
+
+	Use faster MemberKind when checking for a nested type
+
+2010-10-22  Marek Safar  <marek.safar at gmail.com>
+
+	Include parent type parameters when inflating nested type
+	parameter constraint of type parameter type
+
+2010-10-22  Marek Safar  <marek.safar at gmail.com>
+
+	Move nested declaration looup to TypeContainer
+
+2010-10-21  Marek Safar  <marek.safar at gmail.com>
+
+	Add dynamic conversion to coalescing operator
+
+2010-10-21  Marek Safar  <marek.safar at gmail.com>
+
+	Implement closest override return type matching
+
+2010-10-20  Marek Safar  <marek.safar at gmail.com>
+
+	[601801] Fixes for parsing nant documentation
+
+	Gleb Golubitsky <rush.william at gmail.com>
+
+2010-10-20  Marek Safar  <marek.safar at gmail.com>
+
+	Check for name conflicts between parent members and child block
+	variables
+
+2010-10-20  Marek Safar  <marek.safar at gmail.com>
+
+	[647845] Don't skip parent types when looking for simple name
+
+2010-10-20  Marek Safar  <marek.safar at gmail.com>
+
+	More work on ambiguous named arguments
+
+2010-10-19  Marek Safar  <marek.safar at gmail.com>
+
+	More optional parameter VB compatibility fixes
+
+2010-10-19  Marek Safar  <marek.safar at gmail.com>
+
+	Restore altered arguments when overload resolution ends up in
+	dynamic dispatch
+
+2010-10-18  Marek Safar  <marek.safar at gmail.com>
+
+	[512754] Overload resolution with named or optional arguments has
+	to use closest member parameters
+
 2010-10-15  Marek Safar  <marek.safar at gmail.com>
 
 	[646997] Correctly emit platform ILOnly flag
 
+2010-10-15  Marek Safar  <marek.safar at gmail.com>
+
+	Extension method argument cannot exercise numeric conversion
+
+2010-10-15  Marek Safar  <marek.safar at gmail.com>
+
+	Add more dynamic conversion restrictions
+
+2010-10-15  Marek Safar  <marek.safar at gmail.com>
+
+	Clean up few more warnings
+
+2010-10-15  Marek Safar  <marek.safar at gmail.com>
+
+	More tweaks to dynamic overload resolution
+
+2010-10-14  Marek Safar  <marek.safar at gmail.com>
+
+	A conditional expression with either dynamic side is always of
+	dynamic type
+
+2010-10-14  Marek Safar  <marek.safar at gmail.com>
+
+	Don't define same parameter more than once.
+
+2010-10-14  Marek Safar  <marek.safar at gmail.com>
+
+	More conversion tweaks for dynamic in using statement
+
 2010-10-14  Marek Safar  <marek.safar at gmail.com>
 
 	[646298] Compile multiple interface event declarators
 
+2010-10-13  Marek Safar  <marek.safar at gmail.com>
+
+	Use 2 phase dynamic load only for compound operations
+
+2010-10-13  Marek Safar  <marek.safar at gmail.com>
+
+	HasDynamicElement became available use it when building dynamic
+	custom attributes
+
+2010-10-13  Marek Safar  <marek.safar at gmail.com>
+
+	[645992] When importing dynamic type arguments dynamic custom
+	attribute flag has to be checked
+
+2010-10-13  Marek Safar  <marek.safar at gmail.com>
+
+	Dynamic type is never better than other types in overload
+	resolution
+
+2010-10-12  Marek Safar  <marek.safar at gmail.com>
+
+	More fixes for implicit conversions of nullable types with
+	nullable arguments
+
+2010-10-12  Marek Safar  <marek.safar at gmail.com>
+
+	Keep parsing after invalid contstructor declaration
+
+2010-10-12  Marek Safar  <marek.safar at gmail.com>
+
+	[645572] Import more type as possible dynamic types.
+
+2010-10-12  Marek Safar  <marek.safar at gmail.com>
+
+	Report correct error message for compound lifted binary operations
+
+2010-10-12  Marek Safar  <marek.safar at gmail.com>
+
+	Fold duplex conversion casts into a expression to emit single
+	convert for expression trees
+
+2010-10-11  Marek Safar  <marek.safar at gmail.com>
+
+	Compound assignments over reference type array cannot use ldelema
+
+2010-10-10  Marek Safar  <marek.safar at gmail.com>
+
+	[645232] Implement ITypeDefinition for internal types.
+
+2010-10-08  Marek Safar  <marek.safar at gmail.com>
+
+	Don't assume the system.object does not have any fields
+
 2010-10-08  Marek Safar  <marek.safar at gmail.com>
 
 	[642975] Fix initializer of partially static multidimensional
 	arrays
 
+2010-10-08  Marek Safar  <marek.safar at gmail.com>
+
+	[644673] Import of modules got broken
+
+2010-10-08  Marek Safar  <marek.safar at gmail.com>
+
+	Allow imported members cache to be setup in 2 phases as compiled
+	one is to deal with generics recursions
+
+2010-10-07  Marek Safar  <marek.safar at gmail.com>
+
+	Fix compound event assigments with dynamic side effect
+
+2010-10-07  Marek Safar  <marek.safar at gmail.com>
+
+	[644507] Don't use nested type cache until declaring type is
+	setup.
+
+2010-10-07  Marek Safar  <marek.safar at gmail.com>
+
+	Fix compound assigments with dynamic side effect
+
+2010-10-06  Marek Safar  <marek.safar at gmail.com>
+
+	Verify type parameter constraints type parameters
+
+2010-10-06  Marek Safar  <marek.safar at gmail.com>
+
+	Fixes allowed interface method modifiers
+
+2010-10-05  Marek Safar  <marek.safar at gmail.com>
+
+	Inflate imported nested type correctly.
+
+2010-10-05  Marek Safar  <marek.safar at gmail.com>
+
+	Compare all type arguments for nested generic types.
+
+2010-10-01  Marek Safar  <marek.safar at gmail.com>
+
+	ref/out arguments are always of static type
+
+2010-10-01  Marek Safar  <marek.safar at gmail.com>
+
+	Keep imported indexer parameters (they can contain non-inflated
+	type parameters)
+
+2010-10-01  Marek Safar  <marek.safar at gmail.com>
+
+	Implement compound assignment over null value
+
+2010-10-01  Marek Safar  <marek.safar at gmail.com>
+
+	Dynamic compound assignment breaks standard C# result conversion
+	rules
+
+2010-09-30  Marek Safar  <marek.safar at gmail.com>
+
+	void is never of type object
+
+2010-09-30  Marek Safar  <marek.safar at gmail.com>
+
+	Initialize both disposable and local variable for dynamic
+	expressions.
+
+2010-09-30  Marek Safar  <marek.safar at gmail.com>
+
+	More awkward nullable binary expressions which are not lifted even
+	though they should be
+
+2010-09-29  Marek Safar  <marek.safar at gmail.com>
+
+	Implement binary user operators over nullable not lifted
+	expressions.
+
+2010-09-29  Marek Safar  <marek.safar at gmail.com>
+
+	Dynamic compound assignment can be used as an expression as well.
+
 2010-09-29  Marek Safar  <marek.safar at gmail.com>
 
 	[642437] Nested types have to check type arguments only and not
 	full class
 
+2010-09-29  Marek Safar  <marek.safar at gmail.com>
+
+	Skip inaccessible nested types for member access expressions.
+
+2010-09-29  Marek Safar  <marek.safar at gmail.com>
+
+	Inflate custom site container delegates correctly.
+
+2010-09-28  Marek Safar  <marek.safar at gmail.com>
+
+	Optional parameters can be of a user value type
+
+2010-09-28  Marek Safar  <marek.safar at gmail.com>
+
+	Ignore imported not visible internal types
+
+2010-09-25  Marek Safar  <marek.safar at gmail.com>
+
+	Implemented more combinations of nullable boolean logical
+	operators
+
+2010-09-25  Marek Safar  <marek.safar at gmail.com>
+
+	Better error message for syntax error in namespace name
+
+2010-09-21  Marek Safar  <marek.safar at gmail.com>
+
+	Don't restore unused flags
+
 2010-09-21  Marek Safar  <marek.safar at gmail.com>
 
 	[640722] Consider delegate parameters when checking member hiding
@@ -34,6 +1110,54 @@
 	[640699] Reduced compound expressions need explicit conversion
 	too.
 
+2010-09-20  Marek Safar  <marek.safar at gmail.com>
+
+	Implement postfix operations involving an implicit user operator.
+
+2010-09-20  Marek Safar  <marek.safar at gmail.com>
+
+	Don't check inferred dynamic type arguments against best candidate
+	constraints.
+
+2010-09-20  Marek Safar  <marek.safar at gmail.com>
+
+	More missing conversions between object and dynamic
+
+2010-09-20  Marek Safar  <marek.safar at gmail.com>
+
+	[640285] Initialize this in current block instead of original
+	block
+
+2010-09-20  Marek Safar  <marek.safar at gmail.com>
+
+	Parse secondary static like expression as a non-cast
+
+2010-09-17  Marek Safar  <marek.safar at gmail.com>
+
+	User operators are resolved in a batch, pick up the foremost
+
+2010-09-17  Marek Safar  <marek.safar at gmail.com>
+
+	Make the dynamic sites container name really unique
+
+2010-09-17  Marek Safar  <marek.safar at gmail.com>
+
+	Fixes preference of a user-defined conversion operators over
+	lifted conversion operators
+
+2010-09-17  Marek Safar  <marek.safar at gmail.com>
+
+	Fixes cloning of a variable declarator.
+
+2010-09-17  Marek Safar  <marek.safar at gmail.com>
+
+	Implement predefined binary enum operators involving an implicit
+	user conversion
+
+2010-09-16  Marek Safar  <marek.safar at gmail.com>
+
+	Recover wrong invalid character constants.
+
 2010-09-16  Marek Safar  <marek.safar at gmail.com>
 
 	[639603] Don't emit statements as expressions when they don't
@@ -45,18 +1169,123 @@
 
 2010-09-15  Marek Safar  <marek.safar at gmail.com>
 
+	Recover wrong embedded statement syntax
+
+2010-09-15  Marek Safar  <marek.safar at gmail.com>
+
 	[639403] Fixes the endless recursion with hacked EOF
 
 2010-09-14  Marek Safar  <marek.safar at gmail.com>
 
-	Initialize all core types
+	Encode correctly all constants into a payload
+
+2010-09-14  Marek Safar  <marek.safar at gmail.com>
+
+	Recover wrong invalid initializer syntax.
 
 2010-09-14  Marek Safar  <marek.safar at gmail.com>
 
 	Finish predefined attributes instance access to allow compile time
 	dynamic support in repl.
 
-	Fixes 639010
+2010-09-14  Marek Safar  <marek.safar at gmail.com>
+
+	Initialize all core types
+
+2010-09-13  Marek Safar  <marek.safar at gmail.com>
+
+	Removed confusing catch error message.
+
+2010-09-13  Marek Safar  <marek.safar at gmail.com>
+
+	Add a test for arrays with dynamic elements.
+
+2010-09-13  Marek Safar  <marek.safar at gmail.com>
+
+	Implement foreach over nullable values.
+
+2010-09-13  Marek Safar  <marek.safar at gmail.com>
+
+	Keep only 1 using implementation and handle all nullable and
+	dynamic cases there.
+
+2010-09-13  Marek Safar  <marek.safar at gmail.com>
+
+	Better error reporting for missing identifiers.
+
+2010-09-10  Marek Safar  <marek.safar at gmail.com>
+
+	Always compare original block for cloned versions.
+
+2010-09-10  Marek Safar  <marek.safar at gmail.com>
+
+	Tweak few error reports
+
+2010-09-10  Marek Safar  <marek.safar at gmail.com>
+
+	Add comments.
+
+2010-09-10  Marek Safar  <marek.safar at gmail.com>
+
+	Converting the switch statement into normal statement (the block
+	part).
+
+2010-09-10  Marek Safar  <marek.safar at gmail.com>
+
+	When doing member access left side lookup the arity value is
+	actually the exact value.
+
+2010-09-10  Marek Safar  <marek.safar at gmail.com>
+
+	Reject varianly implemented interface members.
+
+2010-09-10  Marek Safar  <marek.safar at gmail.com>
+
+	Try to speep up the GetLocation by a bit.
+
+2010-09-09  Marek Safar  <marek.safar at gmail.com>
+
+	Recover from broken single parameter
+
+2010-09-09  Marek Safar  <marek.safar at gmail.com>
+
+	Report precise error about local variable hiding
+
+2010-09-09  Marek Safar  <marek.safar at gmail.com>
+
+	Do all possible mistaken empty statement checks in the parser
+
+2010-09-09  Marek Safar  <marek.safar at gmail.com>
+
+	Don't recreate top-level destructor block, it carries precious
+	stuff
+
+2010-09-09  Marek Safar  <marek.safar at gmail.com>
+
+	Try to recover after each wrong statement.
+
+2010-09-09  Marek Safar  <marek.safar at gmail.com>
+
+	__arglist can be used as an expression.
+
+2010-09-09  Marek Safar  <marek.safar at gmail.com>
+
+	The first push to make flow-analysis work for complex blocks.
+
+	All blocks are now strictly hierachical which greatly simplifies
+	many things and fixes many subtle bugs with local names. Removing
+	the block cross references helps scalling when compiling deeply
+	nested blocks or large method bodies including linq. Prepared
+	possible dynamic statements to work with variable declarators.
+
+2010-09-06  Jonathan Pobst  <monkey at jpobst.com>
+
+	Normalize line endings.
+
+2010-09-01  Marek Safar  <marek.safar at gmail.com>
+
+	Add ctor block to field initializers to avoid member lookup at
+	wrong block
 
 2010-08-31  Rodrigo Kumpera  <kumpera at gmail.com>
 
diff --git a/mcs/mcs/Makefile b/mcs/mcs/Makefile
index 4599b6f..7e83f54 100644
--- a/mcs/mcs/Makefile
+++ b/mcs/mcs/Makefile
@@ -6,20 +6,21 @@ EXTRA_DISTFILES = \
 	*mcs.csproj		\
 	compiler.doc		\
 	*mcs.sln		\
-	*cs-parser.jay		\
+	cs-parser.jay		\
 	*.sources		\
 	NOTES			\
 	TODO			\
-	*mcs.exe.config
+	*mcs.exe.config		\
+	ikvm.cs
 
-COMPILER_NAME = gmcs
-
-ifeq (net_2_0, $(PROFILE))
-INTERNAL_GMCS = $(RUNTIME) $(RUNTIME_FLAGS) $(topdir)/class/lib/$(BOOTSTRAP_PROFILE)/gmcs.exe
+ifeq (basic, $(PROFILE))
+LOCAL_MCS_FLAGS += -d:STATIC
+COMPILER_NAME = mcs
+PROGRAM_INSTALL_DIR = $(mono_libdir)/mono/2.0
 endif
 
-ifeq (moonlight_bootstrap, $(PROFILE))
-INTERNAL_GMCS = $(RUNTIME) $(RUNTIME_FLAGS) $(topdir)/class/lib/$(BOOTSTRAP_PROFILE)/gmcs.exe
+ifeq (net_2_0, $(PROFILE))
+COMPILER_NAME = gmcs
 endif
 
 ifeq (2.1, $(FRAMEWORK_VERSION))
@@ -58,6 +59,13 @@ csproj-local:
 	echo $(BUILT_SOURCES); \
 	echo $(PROGRAM); \
 	echo $(response)) > $(topdir)/../mono/msvc/scripts/inputs/$$config_file
+	
+ifeq (basic, $(PROFILE))
+install-local:
+	$(MKINSTALLDIRS) $(DESTDIR)$(PROGRAM_INSTALL_DIR)
+	$(INSTALL_BIN) $(PROGRAM) $(DESTDIR)$(PROGRAM_INSTALL_DIR)
+	test ! -f $(PROGRAM).mdb || $(INSTALL_BIN) $(PROGRAM).mdb $(DESTDIR)$(PROGRAM_INSTALL_DIR)
+endif
 
 #
 # Below this line we have local targets used for testing and development
diff --git a/mcs/mcs/anonymous.cs b/mcs/mcs/anonymous.cs
index 7a89cd9..31f7389 100644
--- a/mcs/mcs/anonymous.cs
+++ b/mcs/mcs/anonymous.cs
@@ -10,10 +10,15 @@
 //
 
 using System;
-using System.Text;
 using System.Collections.Generic;
+
+#if STATIC
+using IKVM.Reflection;
+using IKVM.Reflection.Emit;
+#else
 using System.Reflection;
 using System.Reflection.Emit;
+#endif
 
 namespace Mono.CSharp {
 
@@ -80,8 +85,21 @@ namespace Mono.CSharp {
 		{
 			if (tparams != null) {
 				type_params = new TypeParameter[tparams.Length];
+				var src = new TypeParameterSpec[tparams.Length];
+				var dst = new TypeParameterSpec[tparams.Length];
+
 				for (int i = 0; i < type_params.Length; ++i) {
 					type_params[i] = tparams[i].CreateHoistedCopy (this, spec);
+
+					src[i] = tparams[i].Type;
+					dst[i] = type_params[i].Type;
+				}
+
+				// A copy is not enough, inflate any type parameter constraints
+				// using a new type parameters
+				var inflator = new TypeParameterInflator (null, src, dst);
+				for (int i = 0; i < type_params.Length; ++i) {
+					src[i].InflateConstraints (inflator, dst[i]);
 				}
 			}
 		}
@@ -224,7 +242,7 @@ namespace Mono.CSharp {
 		}
 
 		//
-		// Creates a link between block and the anonymous method storey
+		// Creates a link between hoisted variable block and the anonymous method storey
 		//
 		// An anonymous method can reference variables from any outer block, but they are
 		// hoisted in their own ExplicitBlock. When more than one block is referenced we
@@ -253,7 +271,7 @@ namespace Mono.CSharp {
 			used_parent_storeys.Add (new StoreyFieldPair (storey, f));
 		}
 
-		public void CaptureLocalVariable (ResolveContext ec, LocalInfo local_info)
+		public void CaptureLocalVariable (ResolveContext ec, LocalVariable local_info)
 		{
 			ec.CurrentBlock.Explicit.HasCapturedVariable = true;
 			if (ec.CurrentBlock.Explicit != local_info.Block.Explicit)
@@ -351,13 +369,19 @@ namespace Mono.CSharp {
 				}
 			}
 
+			//
+			// Update parent cache as we most likely passed the point
+			// where the cache was constructed
+			//
+			Parent.CurrentType.MemberCache.AddMember (this.spec);
+
 			return true;
 		}
 
 		//
 		// Initializes all hoisted variables
 		//
-		public void EmitStoreyInstantiation (EmitContext ec)
+		public void EmitStoreyInstantiation (EmitContext ec, ExplicitBlock block)
 		{
 			// There can be only one instance variable for each storey type
 			if (Instance != null)
@@ -371,26 +395,25 @@ namespace Mono.CSharp {
 			var storey_type_expr = CreateStoreyTypeExpression (ec);
 
 			ResolveContext rc = new ResolveContext (ec.MemberContext);
+			rc.CurrentBlock = block;
 			Expression e = new New (storey_type_expr, null, Location).Resolve (rc);
 			e.Emit (ec);
 
 			Instance = new LocalTemporary (storey_type_expr.Type);
 			Instance.Store (ec);
 
-			EmitHoistedFieldsInitialization (ec);
+			EmitHoistedFieldsInitialization (rc, ec);
 
 			SymbolWriter.DefineScopeVariable (ID, Instance.Builder);
 			SymbolWriter.CloseCompilerGeneratedBlock (ec);
 		}
 
-		void EmitHoistedFieldsInitialization (EmitContext ec)
+		void EmitHoistedFieldsInitialization (ResolveContext rc, EmitContext ec)
 		{
 			//
 			// Initialize all storey reference fields by using local or hoisted variables
 			//
 			if (used_parent_storeys != null) {
-				var rc = new ResolveContext (ec.MemberContext);
-
 				foreach (StoreyFieldPair sf in used_parent_storeys) {
 					//
 					// Get instance expression of storey field
@@ -414,7 +437,7 @@ namespace Mono.CSharp {
 			//
 			if (OriginalSourceBlock.Explicit.HasCapturedThis && !(Parent is AnonymousMethodStorey)) {
 				AddCapturedThisField (ec);
-				OriginalSourceBlock.AddScopeStatement (new ThisInitializer (hoisted_this));
+				rc.CurrentBlock.AddScopeStatement (new ThisInitializer (hoisted_this));
 			}
 
 			//
@@ -520,7 +543,7 @@ namespace Mono.CSharp {
 			return f_ind;
 		}
 
-		protected virtual string GetVariableMangledName (LocalInfo local_info)
+		protected virtual string GetVariableMangledName (LocalVariable local_info)
 		{
 			//
 			// No need to mangle anonymous method hoisted variables cause they
@@ -561,13 +584,13 @@ namespace Mono.CSharp {
 
 			public override Expression CreateExpressionTree (ResolveContext ec)
 			{
-				throw new NotSupportedException ("ET");
+				return hv.CreateExpressionTree ();
 			}
 
 			protected override Expression DoResolve (ResolveContext ec)
 			{
 				eclass = ExprClass.Value;
-				type = TypeManager.expression_type_expr.Type;
+				type = ec.Module.PredefinedTypes.Expression.Resolve (Location);
 				return this;
 			}
 
@@ -616,7 +639,7 @@ namespace Mono.CSharp {
 		//
 		// Creates field access expression for hoisted variable
 		//
-		protected FieldExpr GetFieldExpression (EmitContext ec)
+		protected virtual FieldExpr GetFieldExpression (EmitContext ec)
 		{
 			if (ec.CurrentAnonymousMethod == null || ec.CurrentAnonymousMethod.Storey == null) {
 				if (cached_outer_access != null)
@@ -736,8 +759,8 @@ namespace Mono.CSharp {
 	{
 		readonly string name;
 
-		public HoistedLocalVariable (AnonymousMethodStorey scope, LocalInfo local, string name)
-			: base (scope, name, local.VariableType)
+		public HoistedLocalVariable (AnonymousMethodStorey scope, LocalVariable local, string name)
+			: base (scope, name, local.Type)
 		{
 			this.name = local.Name;
 		}
@@ -807,7 +830,7 @@ namespace Mono.CSharp {
 		}
 
 		Dictionary<TypeSpec, Expression> compatibles;
-		public ToplevelBlock Block;
+		public ParametersBlock Block;
 
 		public AnonymousMethodExpression (Location loc)
 		{
@@ -1103,7 +1126,7 @@ namespace Mono.CSharp {
 						return null;
 					}
 					fixedpars[i] = new Parameter (
-						null, null,
+						new TypeExpression (delegate_parameters.Types [i], loc), null,
 						delegate_parameters.FixedParameters [i].ModFlags, null, loc);
 				}
 
@@ -1177,13 +1200,13 @@ namespace Mono.CSharp {
 			if (p == null)
 				return null;
 
-			ToplevelBlock b = ec.IsInProbingMode ? (ToplevelBlock) Block.PerformClone () : Block;
+			ParametersBlock b = ec.IsInProbingMode ? (ParametersBlock) Block.PerformClone () : Block;
 
 			return CompatibleMethodFactory (return_type, delegate_type, p, b);
 
 		}
 
-		protected virtual AnonymousMethodBody CompatibleMethodFactory (TypeSpec return_type, TypeSpec delegate_type, ParametersCompiled p, ToplevelBlock b)
+		protected virtual AnonymousMethodBody CompatibleMethodFactory (TypeSpec return_type, TypeSpec delegate_type, ParametersCompiled p, ParametersBlock b)
 		{
 			return new AnonymousMethodBody (p, b, return_type, delegate_type, loc);
 		}
@@ -1192,7 +1215,7 @@ namespace Mono.CSharp {
 		{
 			AnonymousMethodExpression target = (AnonymousMethodExpression) t;
 
-			target.Block = (ToplevelBlock) clonectx.LookupBlock (Block);
+			target.Block = (ParametersBlock) clonectx.LookupBlock (Block);
 		}
 	}
 
@@ -1219,7 +1242,7 @@ namespace Mono.CSharp {
 				this.RealName = real_name;
 
 				Parent.PartialContainer.AddMethod (this);
-				Block = am.Block;
+				Block = new ToplevelBlock (am.block, parameters);
 			}
 
 			public override EmitContext CreateEmitContext (ILGenerator ig)
@@ -1272,13 +1295,13 @@ namespace Mono.CSharp {
 			}
 		}
 
-		readonly ToplevelBlock block;
+		protected ParametersBlock block;
 
 		public TypeSpec ReturnType;
 
 		object return_label;
 
-		protected AnonymousExpression (ToplevelBlock block, TypeSpec return_type, Location loc)
+		protected AnonymousExpression (ParametersBlock block, TypeSpec return_type, Location loc)
 		{
 			this.ReturnType = return_type;
 			this.block = block;
@@ -1300,10 +1323,9 @@ namespace Mono.CSharp {
 				return this;
 
 			// TODO: Implement clone
-			BlockContext aec = new BlockContext (ec.MemberContext, Block, ReturnType);
+			BlockContext aec = new BlockContext (ec, block, ReturnType);
 			aec.CurrentAnonymousMethod = ae;
 
-			ResolveContext.FlagsHandle? aec_dispose = null;
 			ResolveContext.Options flags = 0;
 
 			var am = this as AnonymousMethodBody;
@@ -1318,22 +1340,14 @@ namespace Mono.CSharp {
 			if (ec.HasSet (ResolveContext.Options.FieldInitializerScope))
 				flags |= ResolveContext.Options.FieldInitializerScope;
 
-			if (ec.IsUnsafe)
-				flags |= ResolveContext.Options.UnsafeScope;
-
-			if (ec.HasSet (ResolveContext.Options.CheckedScope))
-				flags |= ResolveContext.Options.CheckedScope;
-
 			if (ec.HasSet (ResolveContext.Options.ExpressionTreeConversion))
 				flags |= ResolveContext.Options.ExpressionTreeConversion;
 
-			// HACK: Flag with 0 cannot be set 
-			if (flags != 0)
-				aec_dispose = aec.Set (flags);
+			aec.Set (flags);
 
 			var errors = ec.Report.Errors;
 
-			bool res = Block.Resolve (ec.CurrentBranching, aec, Block.Parameters, null);
+			bool res = Block.Resolve (ec.CurrentBranching, aec, null);
 
 			if (aec.HasReturnLabel)
 				return_label = aec.ReturnLabel;
@@ -1344,10 +1358,6 @@ namespace Mono.CSharp {
 				am.ReturnTypeInference = null;
 			}
 
-			if (aec_dispose != null) {
-				aec_dispose.Value.Dispose ();
-			}
-
 			if (res && errors != ec.Report.Errors)
 				return null;
 
@@ -1356,22 +1366,20 @@ namespace Mono.CSharp {
 
 		public void SetHasThisAccess ()
 		{
-			Block.HasCapturedThis = true;
-			ExplicitBlock b = Block.Parent.Explicit;
-
-			while (b != null) {
+			ExplicitBlock b = block;
+			do {
 				if (b.HasCapturedThis)
 					return;
 
 				b.HasCapturedThis = true;
 				b = b.Parent == null ? null : b.Parent.Explicit;
-			}
+			} while (b != null);
 		}
 
 		//
 		// The block that makes up the body for the anonymous method
 		//
-		public ToplevelBlock Block {
+		public ParametersBlock Block {
 			get {
 				return block;
 			}
@@ -1392,7 +1400,7 @@ namespace Mono.CSharp {
 		static int unique_id;
 
 		public AnonymousMethodBody (ParametersCompiled parameters,
-					ToplevelBlock block, TypeSpec return_type, TypeSpec delegate_type,
+					ParametersBlock block, TypeSpec return_type, TypeSpec delegate_type,
 					Location loc)
 			: base (block, return_type, loc)
 		{
@@ -1599,6 +1607,9 @@ namespace Mono.CSharp {
 
 				ec.Emit (OpCodes.Ldftn, TypeBuilder.GetMethod (t.GetMetaInfo (), (MethodInfo) delegate_method.GetMetaInfo ()));
 			} else {
+				if (delegate_method.IsGeneric)
+					delegate_method = delegate_method.MakeGenericMethod (method.TypeParameters);
+
 				ec.Emit (OpCodes.Ldftn, delegate_method);
 			}
 
@@ -1645,17 +1656,12 @@ namespace Mono.CSharp {
 	//
 	public class AnonymousTypeClass : CompilerGeneratedClass
 	{
-		sealed class AnonymousParameters : ParametersCompiled
+		// TODO: Merge with AnonymousTypeParameter
+		public class GeneratedParameter : Parameter
 		{
-			public AnonymousParameters (CompilerContext ctx, params Parameter[] parameters)
-				: base (ctx, parameters)
-			{
-			}
-
-			protected override void ErrorDuplicateName (Parameter p, Report Report)
+			public GeneratedParameter (FullNamedExpression type, AnonymousTypeParameter p)
+				: base (type, p.Name, Modifier.NONE, null, p.Location)
 			{
-				Report.Error (833, p.Location, "`{0}': An anonymous type cannot have multiple properties with the same name",
-					p.Name);
 			}
 		}
 
@@ -1675,15 +1681,27 @@ namespace Mono.CSharp {
 		{
 			string name = ClassNamePrefix + types_counter++;
 
-			SimpleName [] t_args = new SimpleName [parameters.Count];
-			TypeParameterName [] t_params = new TypeParameterName [parameters.Count];
-			Parameter [] ctor_params = new Parameter [parameters.Count];
-			for (int i = 0; i < parameters.Count; ++i) {
-				AnonymousTypeParameter p = (AnonymousTypeParameter) parameters [i];
+			ParametersCompiled all_parameters;
+			TypeParameterName[] t_params;
+			SimpleName[] t_args;
+
+			if (parameters.Count == 0) {
+				all_parameters = ParametersCompiled.EmptyReadOnlyParameters;
+				t_params = new TypeParameterName[0];
+				t_args = null;
+			} else {
+				t_args = new SimpleName[parameters.Count];
+				t_params = new TypeParameterName[parameters.Count];
+				Parameter[] ctor_params = new Parameter[parameters.Count];
+				for (int i = 0; i < parameters.Count; ++i) {
+					AnonymousTypeParameter p = parameters[i];
+
+					t_args[i] = new SimpleName ("<" + p.Name + ">__T", p.Location);
+					t_params[i] = new TypeParameterName (t_args[i].Name, null, p.Location);
+					ctor_params[i] = new GeneratedParameter (t_args[i], p);
+				}
 
-				t_args [i] = new SimpleName ("<" + p.Name + ">__T", p.Location);
-				t_params [i] = new TypeParameterName (t_args [i].Name, null, p.Location);
-				ctor_params [i] = new Parameter (t_args [i], p.Name, 0, null, p.Location);
+				all_parameters = new ParametersCompiled (ctor_params);
 			}
 
 			//
@@ -1697,7 +1715,7 @@ namespace Mono.CSharp {
 				a_type.SetParameterInfo (null);
 
 			Constructor c = new Constructor (a_type, name, Modifiers.PUBLIC | Modifiers.DEBUGGER_HIDDEN,
-				null, new AnonymousParameters (ctx, ctor_params), null, loc);
+				null, all_parameters, null, loc);
 			c.Block = new ToplevelBlock (ctx, c.ParameterInfo, loc);
 
 			// 
@@ -1705,7 +1723,7 @@ namespace Mono.CSharp {
 			//
 			bool error = false;
 			for (int i = 0; i < parameters.Count; ++i) {
-				AnonymousTypeParameter p = (AnonymousTypeParameter) parameters [i];
+				AnonymousTypeParameter p = parameters [i];
 
 				Field f = new Field (a_type, t_args [i], Modifiers.PRIVATE | Modifiers.READONLY,
 					new MemberName ("<" + p.Name + ">", p.Location), null);
@@ -1717,7 +1735,7 @@ namespace Mono.CSharp {
 
 				c.Block.AddStatement (new StatementExpression (
 					new SimpleAssign (new MemberAccess (new This (p.Location), f.Name),
-						c.Block.GetParameterReference (p.Name, p.Location))));
+						c.Block.GetParameterReference (i, p.Location))));
 
 				ToplevelBlock get_block = new ToplevelBlock (ctx, p.Location);
 				get_block.AddStatement (new Return (
@@ -1751,8 +1769,14 @@ namespace Mono.CSharp {
 				return true;
 			}
 
-			Report.SymbolRelatedToPreviousError (mc);
-			return false;
+			// A conflict between anonymous type members will be reported
+			if (symbol is TypeParameter) {
+				Report.SymbolRelatedToPreviousError (symbol);
+				return false;
+			}
+
+			// Ignore other conflicts
+			return true;
 		}
 
 		protected override bool DoDefineMembers ()
@@ -1762,15 +1786,21 @@ namespace Mono.CSharp {
 
 			Location loc = Location;
 
+			var equals_parameters = ParametersCompiled.CreateFullyResolved (
+				new Parameter (new TypeExpression (TypeManager.object_type, loc), "obj", 0, null, loc),	TypeManager.object_type);
+
 			Method equals = new Method (this, null, new TypeExpression (TypeManager.bool_type, loc),
 				Modifiers.PUBLIC | Modifiers.OVERRIDE | Modifiers.DEBUGGER_HIDDEN, new MemberName ("Equals", loc),
-				Mono.CSharp.ParametersCompiled.CreateFullyResolved (new Parameter (null, "obj", 0, null, loc), TypeManager.object_type), null);
+				equals_parameters, null);
+
+			equals_parameters[0].Resolve (equals, 0);
 
 			Method tostring = new Method (this, null, new TypeExpression (TypeManager.string_type, loc),
 				Modifiers.PUBLIC | Modifiers.OVERRIDE | Modifiers.DEBUGGER_HIDDEN, new MemberName ("ToString", loc),
 				Mono.CSharp.ParametersCompiled.EmptyReadOnlyParameters, null);
 
 			ToplevelBlock equals_block = new ToplevelBlock (Compiler, equals.ParameterInfo, loc);
+
 			TypeExpr current_type;
 			if (type_params != null) {
 				var targs = new TypeArguments ();
@@ -1782,8 +1812,9 @@ namespace Mono.CSharp {
 				current_type = new TypeExpression (Definition, loc);
 			}
 
-			equals_block.AddVariable (current_type, "other", loc);
-			LocalVariableReference other_variable = new LocalVariableReference (equals_block, "other", loc);
+			var li_other = LocalVariable.CreateCompilerGenerated (CurrentType, equals_block, loc);
+			equals_block.AddStatement (new BlockVariableDeclaration (new TypeExpression (li_other.Type, loc), li_other));
+			var other_variable = new LocalVariableReference (li_other, loc);
 
 			MemberAccess system_collections_generic = new MemberAccess (new MemberAccess (
 				new QualifiedAliasMember ("global", "System", loc), "Collections", loc), "Generic", loc);
@@ -1857,10 +1888,10 @@ namespace Mono.CSharp {
 			//
 			// Equals (object obj) override
 			//		
-			LocalVariableReference other_variable_assign = new LocalVariableReference (equals_block, "other", loc);
+			var other_variable_assign = new TemporaryVariableReference (li_other, loc);
 			equals_block.AddStatement (new StatementExpression (
 				new SimpleAssign (other_variable_assign,
-					new As (equals_block.GetParameterReference ("obj", loc),
+					new As (equals_block.GetParameterReference (0, loc),
 						current_type, loc), loc)));
 
 			Expression equals_test = new Binary (Binary.Operator.Inequality, other_variable, new NullLiteral (loc), loc);
@@ -1895,15 +1926,16 @@ namespace Mono.CSharp {
 			// hash += hash << 5;
 
 			ToplevelBlock hashcode_top = new ToplevelBlock (Compiler, loc);
-			Block hashcode_block = new Block (hashcode_top);
+			Block hashcode_block = new Block (hashcode_top, loc, loc);
 			hashcode_top.AddStatement (new Unchecked (hashcode_block, loc));
 
-			hashcode_block.AddVariable (new TypeExpression (TypeManager.int32_type, loc), "hash", loc);
-			LocalVariableReference hash_variable = new LocalVariableReference (hashcode_block, "hash", loc);
-			LocalVariableReference hash_variable_assign = new LocalVariableReference (hashcode_block, "hash", loc);
+			var li_hash = LocalVariable.CreateCompilerGenerated (TypeManager.int32_type, hashcode_top, loc);
+			hashcode_block.AddStatement (new BlockVariableDeclaration (new TypeExpression (li_hash.Type, loc), li_hash));
+			LocalVariableReference hash_variable_assign = new LocalVariableReference (li_hash, loc);
 			hashcode_block.AddStatement (new StatementExpression (
 				new SimpleAssign (hash_variable_assign, rs_hashcode)));
 
+			var hash_variable = new LocalVariableReference (li_hash, loc);
 			hashcode_block.AddStatement (new StatementExpression (
 				new CompoundAssign (Binary.Operator.Addition, hash_variable,
 					new Binary (Binary.Operator.LeftShift, hash_variable, new IntConstant (13, loc), loc), loc)));
diff --git a/mcs/mcs/argument.cs b/mcs/mcs/argument.cs
index 8cb7e97..a5e08f4 100644
--- a/mcs/mcs/argument.cs
+++ b/mcs/mcs/argument.cs
@@ -10,10 +10,14 @@
 //
 
 using System;
-using System.Reflection;
-using System.Reflection.Emit;
 using System.Collections.Generic;
 
+#if STATIC
+using IKVM.Reflection.Emit;
+#else
+using System.Reflection.Emit;
+#endif
+
 namespace Mono.CSharp
 {
 	//
@@ -48,8 +52,14 @@ namespace Mono.CSharp
 			this.Expr = expr;
 		}
 
-		public TypeSpec Type {
-			get { return Expr.Type; }
+		#region Properties
+
+		public bool IsByRef {
+			get { return ArgType == AType.Ref || ArgType == AType.Out; }
+		}
+
+		public bool IsDefaultArgument {
+			get { return ArgType == AType.Default; }
 		}
 
 		public Parameter.Modifier Modifier {
@@ -67,6 +77,24 @@ namespace Mono.CSharp
 			}
 		}
 
+		public TypeSpec Type {
+			get { return Expr.Type; }
+		}
+
+		#endregion
+
+		public Argument Clone (Expression expr)
+		{
+			Argument a = (Argument) MemberwiseClone ();
+			a.Expr = expr;
+			return a;
+		}
+
+		public Argument Clone (CloneContext clonectx)
+		{
+			return Clone (Expr.Clone (clonectx));
+		}
+
 		public virtual Expression CreateExpressionTree (ResolveContext ec)
 		{
 			if (ArgType == AType.Default)
@@ -83,14 +111,6 @@ namespace Mono.CSharp
 			return TypeManager.CSharpName (Expr.Type);
 		}
 
-		public bool IsByRef {
-			get { return ArgType == AType.Ref || ArgType == AType.Out; }
-		}
-
-		public bool IsDefaultArgument {
-			get { return ArgType == AType.Default; }
-		}
-
 		public bool ResolveMethodGroup (ResolveContext ec)
 		{
 			SimpleName sn = Expr as SimpleName;
@@ -139,13 +159,6 @@ namespace Mono.CSharp
 			IMemoryLocation ml = (IMemoryLocation) Expr;
 			ml.AddressOf (ec, mode);
 		}
-
-		public Argument Clone (CloneContext clonectx)
-		{
-			Argument a = (Argument) MemberwiseClone ();
-			a.Expr = Expr.Clone (clonectx);
-			return a;
-		}
 	}
 
 	public class NamedArgument : Argument
@@ -206,8 +219,33 @@ namespace Mono.CSharp
 	
 	public class Arguments
 	{
+		sealed class ArgumentsOrdered : Arguments
+		{
+			List<NamedArgument> ordered;
+
+			public ArgumentsOrdered (Arguments args)
+				: base (args.Count)
+			{
+				AddRange (args);
+				ordered = new List<NamedArgument> ();
+			}
+
+			public void AddOrdered (NamedArgument na)
+			{
+				ordered.Add (na);
+			}
+
+			public override Expression[] Emit (EmitContext ec, bool dup_args)
+			{
+				foreach (NamedArgument na in ordered)
+					na.EmitAssign (ec);
+
+				return base.Emit (ec, dup_args);
+			}
+		}
+
+		// Try not to add any more instances to this class, it's allocated a lot
 		List<Argument> args;
-		List<NamedArgument> reordered;
 
 		public Arguments (int capacity)
 		{
@@ -238,16 +276,19 @@ namespace Mono.CSharp
 				const string info_flags_enum = "CSharpArgumentInfoFlags";
 				Expression info_flags = new IntLiteral (0, loc);
 
-				var constant = a.Expr as Constant;
-				if (constant != null && constant.IsLiteral) {
+				if (a.Expr is Constant) {
 					info_flags = new Binary (Binary.Operator.BitwiseOr, info_flags,
 						new MemberAccess (new MemberAccess (binder, info_flags_enum, loc), "Constant", loc), loc);
 				} else if (a.ArgType == Argument.AType.Ref) {
 					info_flags = new Binary (Binary.Operator.BitwiseOr, info_flags,
 						new MemberAccess (new MemberAccess (binder, info_flags_enum, loc), "IsRef", loc), loc);
+					info_flags = new Binary (Binary.Operator.BitwiseOr, info_flags,
+						new MemberAccess (new MemberAccess (binder, info_flags_enum, loc), "UseCompileTimeType", loc), loc);
 				} else if (a.ArgType == Argument.AType.Out) {
 					info_flags = new Binary (Binary.Operator.BitwiseOr, info_flags,
 						new MemberAccess (new MemberAccess (binder, info_flags_enum, loc), "IsOut", loc), loc);
+					info_flags = new Binary (Binary.Operator.BitwiseOr, info_flags,
+						new MemberAccess (new MemberAccess (binder, info_flags_enum, loc), "UseCompileTimeType", loc), loc);
 				} else if (a.ArgType == Argument.AType.DynamicTypeName) {
 					info_flags = new Binary (Binary.Operator.BitwiseOr, info_flags,
 						new MemberAccess (new MemberAccess (binder, info_flags_enum, loc), "IsStaticType", loc), loc);
@@ -255,7 +296,7 @@ namespace Mono.CSharp
 
 				var arg_type = a.Expr.Type;
 
-				if (arg_type != InternalType.Dynamic) {
+				if (arg_type != InternalType.Dynamic && arg_type != InternalType.Null) {
 					MethodGroupExpr mg = a.Expr as MethodGroupExpr;
 					if (mg != null) {
 						rc.Report.Error (1976, a.Expr.Location,
@@ -342,45 +383,46 @@ namespace Mono.CSharp
 		// 
 		public void Emit (EmitContext ec)
 		{
-			Emit (ec, false, null);
+			Emit (ec, false);
 		}
 
 		//
 		// if `dup_args' is true, a copy of the arguments will be left
-		// on the stack. If `dup_args' is true, you can specify `this_arg'
-		// which will be duplicated before any other args. Only EmitCall
-		// should be using this interface.
+		// on the stack and return value will contain an array of access
+		// expressions
+		// NOTE: It's caller responsibility is to release temporary variables
 		//
-		public void Emit (EmitContext ec, bool dup_args, LocalTemporary this_arg)
+		public virtual Expression[] Emit (EmitContext ec, bool dup_args)
 		{
-			LocalTemporary[] temps = null;
+			Expression[] temps;
 
 			if (dup_args && Count != 0)
-				temps = new LocalTemporary [Count];
-
-			if (reordered != null && Count > 1) {
-				foreach (NamedArgument na in reordered)
-					na.EmitAssign (ec);
-			}
+				temps = new Expression [Count];
+			else
+				temps = null;
 
 			int i = 0;
+			LocalTemporary lt;
 			foreach (Argument a in args) {
 				a.Emit (ec);
-				if (dup_args) {
+				if (!dup_args)
+					continue;
+
+				if (a.Expr is Constant || a.Expr is This) {
+					//
+					// No need to create a temporary variable for constants
+					//
+					temps[i] = a.Expr;
+				} else {
 					ec.Emit (OpCodes.Dup);
-					(temps [i++] = new LocalTemporary (a.Type)).Store (ec);
+					temps[i] = lt = new LocalTemporary (a.Type);
+					lt.Store (ec);
 				}
-			}
-
-			if (dup_args) {
-				if (this_arg != null)
-					this_arg.Emit (ec);
 
-				for (i = 0; i < temps.Length; i++) {
-					temps[i].Emit (ec);
-					temps[i].Release (ec);
-				}
+				++i;
 			}
+
+			return temps;
 		}
 
 		public List<Argument>.Enumerator GetEnumerator ()
@@ -402,6 +444,21 @@ namespace Mono.CSharp
 			}
 		}
 
+		//
+		// At least one argument is named argument
+		//
+		public bool HasNamed {
+			get {
+				foreach (Argument a in args) {
+					if (a is NamedArgument)
+						return true;
+				}
+				
+				return false;
+			}
+		}
+
+
 		public void Insert (int index, Argument arg)
 		{
 			args.Insert (index, arg);
@@ -421,18 +478,24 @@ namespace Mono.CSharp
 			return exprs;
 		}
 
-		public void MarkReorderedArgument (NamedArgument a)
+		//
+		// For named arguments when the order of execution is different
+		// to order of invocation
+		//
+		public Arguments MarkOrderedArgument (NamedArgument a)
 		{
 			//
-			// Constant expression can have no effect on left-to-right execution
+			// Constant expression have no effect on left-to-right execution
 			//
 			if (a.Expr is Constant)
-				return;
+				return this;
 
-			if (reordered == null)
-				reordered = new List<NamedArgument> ();
+			ArgumentsOrdered ra = this as ArgumentsOrdered;
+			if (ra == null)
+				ra = new ArgumentsOrdered (this);
 
-			reordered.Add (a);
+			ra.AddOrdered (a);
+			return ra;
 		}
 
 		//
diff --git a/mcs/mcs/assembly.cs b/mcs/mcs/assembly.cs
new file mode 100644
index 0000000..6430c51
--- /dev/null
+++ b/mcs/mcs/assembly.cs
@@ -0,0 +1,1147 @@
+//
+// assembly.cs: Assembly declaration and specifications
+//
+// Authors:
+//   Miguel de Icaza (miguel at ximian.com)
+//   Marek Safar (marek.safar at gmail.com)
+//
+// Copyright 2001, 2002, 2003 Ximian, Inc.
+// Copyright 2004 Novell, Inc.
+//
+
+
+using System;
+using System.IO;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Security;
+using System.Security.Cryptography;
+using System.Security.Permissions;
+using Mono.Security.Cryptography;
+using Mono.CompilerServices.SymbolWriter;
+
+#if STATIC
+using IKVM.Reflection;
+using IKVM.Reflection.Emit;
+using SecurityType = System.Collections.Generic.List<IKVM.Reflection.Emit.CustomAttributeBuilder>;
+#else
+using SecurityType = System.Collections.Generic.Dictionary<System.Security.Permissions.SecurityAction, System.Security.PermissionSet>;
+using System.Reflection;
+using System.Reflection.Emit;
+#endif
+
+namespace Mono.CSharp
+{
+	public interface IAssemblyDefinition
+	{
+		string FullName { get; }
+		bool HasExtensionMethod { get; }
+		bool IsCLSCompliant { get; }
+		string Name { get; }
+
+		byte[] GetPublicKeyToken ();
+	}
+                
+	public abstract class AssemblyDefinition : IAssemblyDefinition
+	{
+		// TODO: make it private and move all builder based methods here
+		public AssemblyBuilder Builder;
+		protected AssemblyBuilderExtension builder_extra;
+		MonoSymbolWriter symbol_writer;
+
+		bool is_cls_compliant;
+		bool wrap_non_exception_throws;
+		bool wrap_non_exception_throws_custom;
+
+		protected ModuleContainer module;
+		readonly string name;
+		protected readonly string file_name;
+
+		byte[] public_key, public_key_token;
+		bool delay_sign;
+
+		// Holds private/public key pair when private key
+		// was available
+		StrongNameKeyPair private_key;	
+
+		Attribute cls_attribute;
+		Method entry_point;
+
+		protected List<ImportedModuleDefinition> added_modules;
+		SecurityType declarative_security;
+		Dictionary<ITypeDefinition, Attribute> emitted_forwarders;
+		AssemblyAttributesPlaceholder module_target_attrs;
+
+		protected AssemblyDefinition (ModuleContainer module, string name)
+		{
+			this.module = module;
+			this.name = Path.GetFileNameWithoutExtension (name);
+
+			wrap_non_exception_throws = true;
+
+			delay_sign = RootContext.StrongNameDelaySign;
+
+			//
+			// Load strong name key early enough for assembly importer to be able to
+			// use the keys for InternalsVisibleTo
+			// This should go somewhere close to ReferencesLoading but don't have the place yet
+			//
+			if (RootContext.StrongNameKeyFile != null || RootContext.StrongNameKeyContainer != null) {
+				LoadPublicKey (RootContext.StrongNameKeyFile, RootContext.StrongNameKeyContainer);
+			}
+		}
+
+		protected AssemblyDefinition (ModuleContainer module, string name, string fileName)
+			: this (module, name)
+		{
+			this.file_name = fileName;
+		}
+
+		#region Properties
+
+		public Attribute CLSCompliantAttribute {
+			get {
+				return cls_attribute;
+			}
+		}
+
+		public CompilerContext Compiler {
+			get {
+				return module.Compiler;
+			}
+		}
+
+		//
+		// Assembly entry point, aka Main method
+		//
+		public Method EntryPoint {
+			get {
+				return entry_point;
+			}
+			set {
+				entry_point = value;
+			}
+		}
+
+		public string FullName {
+			get {
+				return Builder.FullName;
+			}
+		}
+
+		public bool HasExtensionMethod {
+			get {
+				return module.HasExtensionMethod;
+			}
+		}
+
+		public bool HasCLSCompliantAttribute {
+			get {
+				return cls_attribute != null;
+			}
+		}
+
+		// TODO: This should not exist here but will require more changes
+		public MetadataImporter Importer {
+			get ; set;
+		}
+
+		public bool IsCLSCompliant {
+			get {
+				return is_cls_compliant;
+			}
+		}
+
+		public string Name {
+			get {
+				return name;
+			}
+		}
+
+		public bool WrapNonExceptionThrows {
+			get {
+				return wrap_non_exception_throws;
+			}
+		}
+
+		protected Report Report {
+			get {
+				return Compiler.Report;
+			}
+		}
+
+		#endregion
+
+		public void AddModule (ImportedModuleDefinition module)
+		{
+			if (added_modules == null) {
+				added_modules = new List<ImportedModuleDefinition> ();
+				added_modules.Add (module);
+			}
+		}
+
+		public void ApplyAttributeBuilder (Attribute a, MethodSpec ctor, byte[] cdata, PredefinedAttributes pa)
+		{
+			if (a.IsValidSecurityAttribute ()) {
+				a.ExtractSecurityPermissionSet (ctor, ref declarative_security);
+				return;
+			}
+
+			if (a.Type == pa.AssemblyCulture) {
+				string value = a.GetString ();
+				if (value == null || value.Length == 0)
+					return;
+
+				if (RootContext.Target == Target.Exe) {
+					a.Error_AttributeEmitError ("The executables cannot be satelite assemblies, remove the attribute or keep it empty");
+					return;
+				}
+
+				if (value == "neutral")
+					value = "";
+
+				if (RootContext.Target == Target.Module) {
+					SetCustomAttribute (ctor, cdata);
+				} else {
+					builder_extra.SetCulture (value, a.Location);
+				}
+
+				return;
+			}
+
+			if (a.Type == pa.AssemblyVersion) {
+				string value = a.GetString ();
+				if (value == null || value.Length == 0)
+					return;
+
+				var vinfo = IsValidAssemblyVersion (value, true);
+				if (vinfo == null) {
+					a.Error_AttributeEmitError (string.Format ("Specified version `{0}' is not valid", value));
+					return;
+				}
+
+				if (RootContext.Target == Target.Module) {
+					SetCustomAttribute (ctor, cdata);
+				} else {
+					builder_extra.SetVersion (vinfo, a.Location);
+				}
+
+				return;
+			}
+
+			if (a.Type == pa.AssemblyAlgorithmId) {
+				const int pos = 2; // skip CA header
+				uint alg = (uint) cdata [pos];
+				alg |= ((uint) cdata [pos + 1]) << 8;
+				alg |= ((uint) cdata [pos + 2]) << 16;
+				alg |= ((uint) cdata [pos + 3]) << 24;
+
+				if (RootContext.Target == Target.Module) {
+					SetCustomAttribute (ctor, cdata);
+				} else {
+					builder_extra.SetAlgorithmId (alg, a.Location);
+				}
+
+				return;
+			}
+
+			if (a.Type == pa.AssemblyFlags) {
+				const int pos = 2; // skip CA header
+				uint flags = (uint) cdata[pos];
+				flags |= ((uint) cdata [pos + 1]) << 8;
+				flags |= ((uint) cdata [pos + 2]) << 16;
+				flags |= ((uint) cdata [pos + 3]) << 24;
+
+				// Ignore set PublicKey flag if assembly is not strongnamed
+				if ((flags & (uint) AssemblyNameFlags.PublicKey) != 0 && public_key == null)
+					flags &= ~(uint) AssemblyNameFlags.PublicKey;
+
+				if (RootContext.Target == Target.Module) {
+					SetCustomAttribute (ctor, cdata);
+				} else {
+					builder_extra.SetFlags (flags, a.Location);
+				}
+
+				return;
+			}
+
+			if (a.Type == pa.TypeForwarder) {
+				TypeSpec t = a.GetArgumentType ();
+				if (t == null || TypeManager.HasElementType (t)) {
+					Report.Error (735, a.Location, "Invalid type specified as an argument for TypeForwardedTo attribute");
+					return;
+				}
+
+				if (emitted_forwarders == null) {
+					emitted_forwarders = new Dictionary<ITypeDefinition, Attribute> ();
+				} else if (emitted_forwarders.ContainsKey (t.MemberDefinition)) {
+					Report.SymbolRelatedToPreviousError (emitted_forwarders[t.MemberDefinition].Location, null);
+					Report.Error (739, a.Location, "A duplicate type forward of type `{0}'",
+						TypeManager.CSharpName (t));
+					return;
+				}
+
+				emitted_forwarders.Add (t.MemberDefinition, a);
+
+				if (t.MemberDefinition.DeclaringAssembly == this) {
+					Report.SymbolRelatedToPreviousError (t);
+					Report.Error (729, a.Location, "Cannot forward type `{0}' because it is defined in this assembly",
+						TypeManager.CSharpName (t));
+					return;
+				}
+
+				if (t.IsNested) {
+					Report.Error (730, a.Location, "Cannot forward type `{0}' because it is a nested type",
+						TypeManager.CSharpName (t));
+					return;
+				}
+
+				builder_extra.AddTypeForwarder (t.GetDefinition (), a.Location);
+				return;
+			}
+
+			if (a.Type == pa.Extension) {
+				a.Error_MisusedExtensionAttribute ();
+				return;
+			}
+
+			if (a.Type == pa.InternalsVisibleTo) {
+				string assembly_name = a.GetString ();
+				if (assembly_name.Length == 0)
+					return;
+
+				AssemblyName aname = null;
+				try {
+					aname = new AssemblyName (assembly_name);
+				} catch (Exception) {
+					Report.Warning (1700, 3, a.Location, "Assembly reference `{0}' is invalid and cannot be resolved",
+						assembly_name);
+					return;
+				}
+
+				if (aname.Version != null || aname.CultureInfo != null || aname.ProcessorArchitecture != ProcessorArchitecture.None) {
+					Report.Error (1725, a.Location,
+						"Friend assembly reference `{0}' is invalid. InternalsVisibleTo declarations cannot have a version, culture or processor architecture specified",
+						assembly_name);
+
+					return;
+				}
+
+				// TODO: GetPublicKey () does not work on .NET when AssemblyName is constructed from a string
+				if (public_key != null && aname.GetPublicKey () == null) {
+					Report.Error (1726, a.Location,
+						"Friend assembly reference `{0}' is invalid. Strong named assemblies must specify a public key in their InternalsVisibleTo declarations",
+						assembly_name);
+					return;
+				}
+			} else if (a.Type == pa.RuntimeCompatibility) {
+				wrap_non_exception_throws_custom = true;
+			} else if (a.Type == pa.AssemblyFileVersion) {
+				string value = a.GetString ();
+				if (string.IsNullOrEmpty (value) || IsValidAssemblyVersion (value, false) == null) {
+					Report.Warning (1607, 1, a.Location, "The version number `{0}' specified for `{1}' is invalid",
+						value, a.Name);
+					return;
+				}
+			}
+
+
+			SetCustomAttribute (ctor, cdata);
+		}
+
+		//
+		// When using assembly public key attributes InternalsVisibleTo key
+		// was not checked, we have to do it later when we actually know what
+		// our public key token is
+		//
+		void CheckReferencesPublicToken ()
+		{
+			// TODO: It should check only references assemblies but there is
+			// no working SRE API
+			foreach (var a in Importer.Assemblies) {
+				if (public_key != null && !a.HasStrongName) {
+					Report.Error (1577, "Referenced assembly `{0}' does not have a strong name",
+						a.FullName);
+				}
+
+				if (!a.IsFriendAssemblyTo (this))
+					continue;
+
+				var attr = a.GetAssemblyVisibleToName (this);
+				var atoken = attr.GetPublicKeyToken ();
+
+				if (ArrayComparer.IsEqual (GetPublicKeyToken (), atoken))
+					continue;
+
+				Report.Error (281,
+					"Friend access was granted to `{0}', but the output assembly is named `{1}'. Try adding a reference to `{0}' or change the output assembly name to match it",
+					attr.FullName, FullName);
+			}
+		}
+
+		protected AssemblyName CreateAssemblyName ()
+		{
+			var an = new AssemblyName (name);
+
+			if (public_key != null && RootContext.Target != Target.Module) {
+				if (delay_sign) {
+					an.SetPublicKey (public_key);
+				} else {
+					if (public_key.Length == 16) {
+						Report.Error (1606, "Could not sign the assembly. ECMA key can only be used to delay-sign assemblies");
+					} else if (private_key == null) {
+						Error_AssemblySigning ("The specified key file does not have a private key");
+					} else {
+						an.KeyPair = private_key;
+					}
+				}
+			}
+
+			return an;
+		}
+
+		public virtual ModuleBuilder CreateModuleBuilder ()
+		{
+			if (file_name == null)
+				throw new NotSupportedException ("transient module in static assembly");
+
+			var module_name = Path.GetFileName (file_name);
+
+			// Always initialize module without symbolInfo. We could be framework dependent
+			// but returned ISymbolWriter does not have all what we need therefore some
+			// adaptor will be needed for now we alwayas emit MDB format when generating
+			// debug info
+			return Builder.DefineDynamicModule (module_name, module_name, false);
+		}
+
+		public void Emit ()
+		{
+			if (RootContext.Target == Target.Module) {
+				module_target_attrs = new AssemblyAttributesPlaceholder (module, name);
+				module_target_attrs.CreateType ();
+				module_target_attrs.DefineType ();
+				module_target_attrs.Define ();
+				module.AddCompilerGeneratedClass (module_target_attrs);
+			} else if (added_modules != null) {
+				ReadModulesAssemblyAttributes ();
+			}
+
+			if (RootContext.GenerateDebugInfo) {
+				symbol_writer = new MonoSymbolWriter (file_name);
+
+				// TODO: global variables
+				Location.DefineSymbolDocuments (symbol_writer);
+				SymbolWriter.symwriter = symbol_writer;
+			}
+
+			module.Emit ();
+
+			if (module.HasExtensionMethod) {
+				var pa = module.PredefinedAttributes.Extension;
+				if (pa.IsDefined) {
+					SetCustomAttribute (pa.Constructor, AttributeEncoder.Empty);
+				}
+			}
+
+			if (!wrap_non_exception_throws_custom) {
+				PredefinedAttribute pa = module.PredefinedAttributes.RuntimeCompatibility;
+				if (pa.IsDefined && pa.ResolveBuilder ()) {
+					var prop = pa.GetProperty ("WrapNonExceptionThrows", TypeManager.bool_type, Location.Null);
+					if (prop != null) {
+						AttributeEncoder encoder = new AttributeEncoder (false);
+						encoder.EncodeNamedPropertyArgument (prop, new BoolLiteral (true, Location.Null));
+						SetCustomAttribute (pa.Constructor, encoder.ToArray ());
+					}
+				}
+			}
+
+			if (declarative_security != null) {
+#if STATIC
+				foreach (var entry in declarative_security) {
+					Builder.__AddDeclarativeSecurity (entry);
+				}
+#else
+				var args = new PermissionSet[3];
+				declarative_security.TryGetValue (SecurityAction.RequestMinimum, out args[0]);
+				declarative_security.TryGetValue (SecurityAction.RequestOptional, out args[1]);
+				declarative_security.TryGetValue (SecurityAction.RequestRefuse, out args[2]);
+				builder_extra.AddPermissionRequests (args);
+#endif
+			}
+
+			CheckReferencesPublicToken ();
+
+			SetEntryPoint ();
+		}
+
+		public byte[] GetPublicKeyToken ()
+		{
+			if (public_key == null || public_key_token != null)
+				return public_key_token;
+
+			HashAlgorithm ha = SHA1.Create ();
+			byte[] hash = ha.ComputeHash (public_key);
+			// we need the last 8 bytes in reverse order
+			public_key_token = new byte[8];
+			Buffer.BlockCopy (hash, hash.Length - 8, public_key_token, 0, 8);
+			Array.Reverse (public_key_token, 0, 8);
+			return public_key_token;
+		}
+
+		//
+		// Either keyFile or keyContainer has to be non-null
+		//
+		void LoadPublicKey (string keyFile, string keyContainer)
+		{
+			if (keyContainer != null) {
+				try {
+					private_key = new StrongNameKeyPair (keyContainer);
+					public_key = private_key.PublicKey;
+				} catch {
+					Error_AssemblySigning ("The specified key container `" + keyContainer + "' does not exist");
+				}
+
+				return;
+			}
+
+			bool key_file_exists = File.Exists (keyFile);
+
+			//
+			// For attribute based KeyFile do additional lookup
+			// in output assembly path
+			//
+			if (!key_file_exists && RootContext.StrongNameKeyFile == null) {
+				//
+				// The key file can be relative to output assembly
+				//
+				string test_path = Path.Combine (Path.GetDirectoryName (file_name), keyFile);
+				key_file_exists = File.Exists (test_path);
+				if (key_file_exists)
+					keyFile = test_path;
+			}
+
+			if (!key_file_exists) {
+				Error_AssemblySigning ("The specified key file `" + keyFile + "' does not exist");
+				return;
+			}
+
+			using (FileStream fs = new FileStream (keyFile, FileMode.Open, FileAccess.Read)) {
+				byte[] snkeypair = new byte[fs.Length];
+				fs.Read (snkeypair, 0, snkeypair.Length);
+
+				// check for ECMA key
+				if (snkeypair.Length == 16) {
+					public_key = snkeypair;
+					return;
+				}
+
+				try {
+					// take it, with or without, a private key
+					RSA rsa = CryptoConvert.FromCapiKeyBlob (snkeypair);
+					// and make sure we only feed the public part to Sys.Ref
+					byte[] publickey = CryptoConvert.ToCapiPublicKeyBlob (rsa);
+
+					// AssemblyName.SetPublicKey requires an additional header
+					byte[] publicKeyHeader = new byte[8] { 0x00, 0x24, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00 };
+
+					// Encode public key
+					public_key = new byte[12 + publickey.Length];
+					Buffer.BlockCopy (publicKeyHeader, 0, public_key, 0, publicKeyHeader.Length);
+
+					// Length of Public Key (in bytes)
+					byte[] lastPart = BitConverter.GetBytes (public_key.Length - 12);
+					public_key[8] = lastPart[0];
+					public_key[9] = lastPart[1];
+					public_key[10] = lastPart[2];
+					public_key[11] = lastPart[3];
+
+					Buffer.BlockCopy (publickey, 0, public_key, 12, publickey.Length);
+				} catch {
+					Error_AssemblySigning ("The specified key file `" + keyFile + "' has incorrect format");
+					return;
+				}
+
+				if (delay_sign)
+					return;
+
+				try {
+					// TODO: Is there better way to test for a private key presence ?
+					CryptoConvert.FromCapiPrivateKeyBlob (snkeypair);
+					private_key = new StrongNameKeyPair (snkeypair);
+				} catch { }
+			}
+		}
+
+		void ReadModulesAssemblyAttributes ()
+		{
+			foreach (var m in added_modules) {
+				var cattrs = m.ReadAssemblyAttributes ();
+				if (cattrs == null)
+					continue;
+
+				module.OptAttributes.AddAttributes (cattrs);
+			}
+		}
+
+		public void Resolve ()
+		{
+			if (RootContext.Unsafe && module.PredefinedTypes.SecurityAction.Define ()) {
+				//
+				// Emits [assembly: SecurityPermissionAttribute (SecurityAction.RequestMinimum, SkipVerification = true)]
+				// when -unsafe option was specified
+				//
+				Location loc = Location.Null;
+
+				MemberAccess system_security_permissions = new MemberAccess (new MemberAccess (
+					new QualifiedAliasMember (QualifiedAliasMember.GlobalAlias, "System", loc), "Security", loc), "Permissions", loc);
+
+				var req_min = (ConstSpec) module.PredefinedTypes.SecurityAction.GetField ("RequestMinimum", module.PredefinedTypes.SecurityAction.TypeSpec, loc);
+
+				Arguments pos = new Arguments (1);
+				pos.Add (new Argument (req_min.GetConstant (null)));
+
+				Arguments named = new Arguments (1);
+				named.Add (new NamedArgument ("SkipVerification", loc, new BoolLiteral (true, loc)));
+
+				GlobalAttribute g = new GlobalAttribute (new NamespaceEntry (module, null, null, null), "assembly",
+					new MemberAccess (system_security_permissions, "SecurityPermissionAttribute"),
+					new Arguments[] { pos, named }, loc, false);
+				g.AttachTo (module, module);
+				var ctor = g.Resolve ();
+				if (ctor != null) {
+					g.ExtractSecurityPermissionSet (ctor, ref declarative_security);
+				}
+			}
+
+			if (module.OptAttributes == null)
+				return;
+
+			// Ensure that we only have GlobalAttributes, since the Search isn't safe with other types.
+			if (!module.OptAttributes.CheckTargets())
+				return;
+
+			cls_attribute = module.ResolveAssemblyAttribute (module.PredefinedAttributes.CLSCompliant);
+
+			if (cls_attribute != null) {
+				is_cls_compliant = cls_attribute.GetClsCompliantAttributeValue ();
+			}
+
+			if (added_modules != null && RootContext.VerifyClsCompliance && is_cls_compliant) {
+				foreach (var m in added_modules) {
+					if (!m.IsCLSCompliant) {
+						Report.Error (3013,
+							"Added modules must be marked with the CLSCompliant attribute to match the assembly",
+							m.Name);
+					}
+				}
+			}
+
+			Attribute a = module.ResolveAssemblyAttribute (module.PredefinedAttributes.RuntimeCompatibility);
+			if (a != null) {
+				var val = a.GetNamedValue ("WrapNonExceptionThrows") as BoolConstant;
+				if (val != null)
+					wrap_non_exception_throws = val.Value;
+			}
+		}
+
+		protected void ResolveAssemblySecurityAttributes ()
+		{
+			string key_file = null;
+			string key_container = null;
+
+			if (module.OptAttributes != null) {
+				foreach (Attribute a in module.OptAttributes.Attrs) {
+					// cannot rely on any resolve-based members before you call Resolve
+					if (a.ExplicitTarget != "assembly")
+						continue;
+
+					// TODO: This code is buggy: comparing Attribute name without resolving is wrong.
+					//       However, this is invoked by CodeGen.Init, when none of the namespaces
+					//       are loaded yet.
+					// TODO: Does not handle quoted attributes properly
+					switch (a.Name) {
+					case "AssemblyKeyFile":
+					case "AssemblyKeyFileAttribute":
+					case "System.Reflection.AssemblyKeyFileAttribute":
+						if (RootContext.StrongNameKeyFile != null) {
+							Report.SymbolRelatedToPreviousError (a.Location, a.GetSignatureForError ());
+							Report.Warning (1616, 1, "Option `{0}' overrides attribute `{1}' given in a source file or added module",
+									"keyfile", "System.Reflection.AssemblyKeyFileAttribute");
+						} else {
+							string value = a.GetString ();
+							if (!string.IsNullOrEmpty (value)) {
+								Error_ObsoleteSecurityAttribute (a, "keyfile");
+								key_file = value;
+							}
+						}
+						break;
+					case "AssemblyKeyName":
+					case "AssemblyKeyNameAttribute":
+					case "System.Reflection.AssemblyKeyNameAttribute":
+						if (RootContext.StrongNameKeyContainer != null) {
+							Report.SymbolRelatedToPreviousError (a.Location, a.GetSignatureForError ());
+							Report.Warning (1616, 1, "Option `{0}' overrides attribute `{1}' given in a source file or added module",
+									"keycontainer", "System.Reflection.AssemblyKeyNameAttribute");
+						} else {
+							string value = a.GetString ();
+							if (!string.IsNullOrEmpty (value)) {
+								Error_ObsoleteSecurityAttribute (a, "keycontainer");
+								key_container = value;
+							}
+						}
+						break;
+					case "AssemblyDelaySign":
+					case "AssemblyDelaySignAttribute":
+					case "System.Reflection.AssemblyDelaySignAttribute":
+						bool b = a.GetBoolean ();
+						if (b) {
+							Error_ObsoleteSecurityAttribute (a, "delaysign");
+						}
+
+						delay_sign = b;
+						break;
+					}
+				}
+			}
+
+			// We came here only to report assembly attributes warnings
+			if (public_key != null)
+				return;
+
+			//
+			// Load the strong key file found in attributes when no
+			// command line key was given
+			//
+			if (key_file != null || key_container != null) {
+				LoadPublicKey (key_file, key_container);
+			} else if (delay_sign) {
+				Report.Warning (1607, 1, "Delay signing was requested but no key file was given");
+			}
+		}
+
+		public void EmbedResources ()
+		{
+			//
+			// Add Win32 resources
+			//
+			if (RootContext.Win32ResourceFile != null) {
+				Builder.DefineUnmanagedResource (RootContext.Win32ResourceFile);
+			} else {
+				Builder.DefineVersionInfoResource ();
+			}
+
+			if (RootContext.Win32IconFile != null) {
+				builder_extra.DefineWin32IconResource (RootContext.Win32IconFile);
+			}
+
+			if (RootContext.Resources != null) {
+				if (RootContext.Target == Target.Module) {
+					Report.Error (1507, "Cannot link resource file when building a module");
+				} else {
+					int counter = 0;
+					foreach (var res in RootContext.Resources) {
+						if (!File.Exists (res.FileName)) {
+							Report.Error (1566, "Error reading resource file `{0}'", res.FileName);
+							continue;
+						}
+
+						if (res.IsEmbeded) {
+							Stream stream;
+							if (counter++ < 10) {
+								stream = File.OpenRead (res.FileName);
+							} else {
+								// TODO: SRE API requires resource stream to be available during AssemblyBuilder::Save
+								// we workaround it by reading everything into memory to compile projects with
+								// many embedded resource (over 3500) references
+								stream = new MemoryStream (File.ReadAllBytes (res.FileName));
+							}
+
+							module.Builder.DefineManifestResource (res.Name, stream, res.Attributes);
+						} else {
+							Builder.AddResourceFile (res.Name, Path.GetFileName (res.FileName), res.Attributes);
+						}
+					}
+				}
+			}
+		}
+
+		public void Save ()
+		{
+			PortableExecutableKinds pekind;
+			ImageFileMachine machine;
+
+			switch (RootContext.Platform) {
+			case Platform.X86:
+				pekind = PortableExecutableKinds.Required32Bit | PortableExecutableKinds.ILOnly;
+				machine = ImageFileMachine.I386;
+				break;
+			case Platform.X64:
+				pekind = PortableExecutableKinds.ILOnly;
+				machine = ImageFileMachine.AMD64;
+				break;
+			case Platform.IA64:
+				pekind = PortableExecutableKinds.ILOnly;
+				machine = ImageFileMachine.IA64;
+				break;
+			case Platform.AnyCPU:
+			default:
+				pekind = PortableExecutableKinds.ILOnly;
+				machine = ImageFileMachine.I386;
+				break;
+			}
+
+			try {
+				if (RootContext.Target == Target.Module) {
+					SaveModule (pekind, machine);
+				} else {
+					Builder.Save (module.Builder.ScopeName, pekind, machine);
+				}
+			} catch (Exception e) {
+				Report.Error (16, "Could not write to file `" + name + "', cause: " + e.Message);
+			}
+
+			// Save debug symbols file
+			if (symbol_writer != null) {
+				// TODO: it should run in parallel
+				symbol_writer.WriteSymbolFile (SymbolWriter.GetGuid (module.Builder));
+			}
+		}
+
+		protected virtual void SaveModule (PortableExecutableKinds pekind, ImageFileMachine machine)
+		{
+			Report.RuntimeMissingSupport (Location.Null, "-target:module");
+		}
+
+		void SetCustomAttribute (MethodSpec ctor, byte[] data)
+		{
+			if (module_target_attrs != null)
+				module_target_attrs.AddAssemblyAttribute (ctor, data);
+			else
+				Builder.SetCustomAttribute ((ConstructorInfo) ctor.GetMetaInfo (), data);
+		}
+
+		void SetEntryPoint ()
+		{
+			if (!RootContext.NeedsEntryPoint) {
+				if (RootContext.MainClass != null)
+					Report.Error (2017, "Cannot specify -main if building a module or library");
+
+				return;
+			}
+
+			PEFileKinds file_kind;
+
+			switch (RootContext.Target) {
+			case Target.Library:
+			case Target.Module:
+				file_kind = PEFileKinds.Dll;
+				break;
+			case Target.WinExe:
+				file_kind = PEFileKinds.WindowApplication;
+				break;
+			default:
+				file_kind = PEFileKinds.ConsoleApplication;
+				break;
+			}
+
+			if (entry_point == null) {
+				if (RootContext.MainClass != null) {
+					// TODO: Should use MemberCache
+					DeclSpace main_cont = module.GetDefinition (RootContext.MainClass) as DeclSpace;
+					if (main_cont == null) {
+						Report.Error (1555, "Could not find `{0}' specified for Main method", RootContext.MainClass);
+						return;
+					}
+
+					if (!(main_cont is ClassOrStruct)) {
+						Report.Error (1556, "`{0}' specified for Main method must be a valid class or struct", RootContext.MainClass);
+						return;
+					}
+
+					Report.Error (1558, main_cont.Location, "`{0}' does not have a suitable static Main method", main_cont.GetSignatureForError ());
+					return;
+				}
+
+				if (Report.Errors == 0) {
+					string pname = file_name == null ? name : Path.GetFileName (file_name);
+
+					Report.Error (5001, "Program `{0}' does not contain a static `Main' method suitable for an entry point",
+						pname);
+				}
+
+				return;
+			}
+
+			Builder.SetEntryPoint (entry_point.MethodBuilder, file_kind);
+		}
+
+		void Error_ObsoleteSecurityAttribute (Attribute a, string option)
+		{
+			Report.Warning (1699, 1, a.Location,
+				"Use compiler option `{0}' or appropriate project settings instead of `{1}' attribute",
+				option, a.Name);
+		}
+
+		void Error_AssemblySigning (string text)
+		{
+			Report.Error (1548, "Error during assembly signing. " + text);
+		}
+
+		static Version IsValidAssemblyVersion (string version, bool allowGenerated)
+		{
+			string[] parts = version.Split ('.');
+			if (parts.Length < 1 || parts.Length > 4)
+				return null;
+
+			var values = new int[4];
+			for (int i = 0; i < parts.Length; ++i) {
+				if (!int.TryParse (parts[i], out values[i])) {
+					if (parts[i].Length == 1 && parts[i][0] == '*' && allowGenerated) {
+						if (i == 2) {
+							// Nothing can follow *
+							if (parts.Length > 3)
+								return null;
+
+							// Generate Build value based on days since 1/1/2000
+							TimeSpan days = DateTime.Today - new DateTime (2000, 1, 1);
+							values[i] = System.Math.Max (days.Days, 0);
+							i = 3;
+						}
+
+						if (i == 3) {
+							// Generate Revision value based on every other second today
+							var seconds = DateTime.Now - DateTime.Today;
+							values[i] = (int) seconds.TotalSeconds / 2;
+							continue;
+						}
+					}
+
+					return null;
+				}
+
+				if (values[i] > ushort.MaxValue)
+					return null;
+			}
+
+			return new Version (values[0], values[1], values[2], values[3]);
+		}
+	}
+
+	public class AssemblyResource : IEquatable<AssemblyResource>
+	{
+		public AssemblyResource (string fileName, string name)
+			: this (fileName, name, false)
+		{
+		}
+
+		public AssemblyResource (string fileName, string name, bool isPrivate)
+		{
+			FileName = fileName;
+			Name = name;
+			Attributes = isPrivate ? ResourceAttributes.Private : ResourceAttributes.Public;
+		}
+
+		public ResourceAttributes Attributes { get; private set; }
+		public string Name { get; private set; }
+		public string FileName { get; private set; }
+		public bool IsEmbeded { get; set; }
+
+		#region IEquatable<AssemblyResource> Members
+
+		public bool Equals (AssemblyResource other)
+		{
+			return Name == other.Name;
+		}
+
+		#endregion
+	}
+
+	//
+	// A placeholder class for assembly attributes when emitting module
+	//
+	class AssemblyAttributesPlaceholder : CompilerGeneratedClass
+	{
+		static readonly string TypeNamePrefix = "<$AssemblyAttributes${0}>";
+		public static readonly string AssemblyFieldName = "attributes";
+
+		Field assembly;
+
+		public AssemblyAttributesPlaceholder (ModuleContainer parent, string outputName)
+			: base (parent, new MemberName (GetGeneratedName (outputName)), Modifiers.STATIC)
+		{
+			assembly = new Field (this, new TypeExpression (TypeManager.object_type, Location), Modifiers.PUBLIC | Modifiers.STATIC,
+				new MemberName (AssemblyFieldName), null);
+
+			AddField (assembly);
+		}
+
+		public void AddAssemblyAttribute (MethodSpec ctor, byte[] data)
+		{
+			assembly.SetCustomAttribute (ctor, data);
+		}
+
+		public static string GetGeneratedName (string outputName)
+		{
+			return string.Format (TypeNamePrefix, outputName);
+		}
+	}
+
+	//
+	// Extension to System.Reflection.Emit.AssemblyBuilder to have fully compatible
+	// compiler. This is a default implementation for framework System.Reflection.Emit
+	// which does not implement any of the methods
+	//
+	public class AssemblyBuilderExtension
+	{
+		readonly CompilerContext ctx;
+
+		public AssemblyBuilderExtension (CompilerContext ctx)
+		{
+			this.ctx = ctx;
+		}
+
+		public virtual System.Reflection.Module AddModule (string module)
+		{
+			ctx.Report.RuntimeMissingSupport (Location.Null, "-addmodule");
+			return null;
+		}
+
+		public virtual void AddPermissionRequests (PermissionSet[] permissions)
+		{
+			ctx.Report.RuntimeMissingSupport (Location.Null, "assembly declarative security");
+		}
+
+		public virtual void AddTypeForwarder (TypeSpec type, Location loc)
+		{
+			ctx.Report.RuntimeMissingSupport (loc, "TypeForwardedToAttribute");
+		}
+
+		public virtual void DefineWin32IconResource (string fileName)
+		{
+			ctx.Report.RuntimeMissingSupport (Location.Null, "-win32icon");
+		}
+
+		public virtual void SetAlgorithmId (uint value, Location loc)
+		{
+			ctx.Report.RuntimeMissingSupport (loc, "AssemblyAlgorithmIdAttribute");
+		}
+
+		public virtual void SetCulture (string culture, Location loc)
+		{
+			ctx.Report.RuntimeMissingSupport (loc, "AssemblyCultureAttribute");
+		}
+
+		public virtual void SetFlags (uint flags, Location loc)
+		{
+			ctx.Report.RuntimeMissingSupport (loc, "AssemblyFlagsAttribute");
+		}
+
+		public virtual void SetVersion (Version version, Location loc)
+		{
+			ctx.Report.RuntimeMissingSupport (loc, "AssemblyVersionAttribute");
+		}
+	}
+
+	abstract class AssemblyReferencesLoader<T>
+	{
+		protected readonly CompilerContext compiler;
+
+		protected readonly List<string> paths;
+		readonly string[] default_references;
+
+		public AssemblyReferencesLoader (CompilerContext compiler)
+		{
+			this.compiler = compiler;
+
+			if (RootContext.LoadDefaultReferences)
+				default_references = GetDefaultReferences ();
+			else
+				default_references = new string[0];
+
+			paths = new List<string> ();
+			paths.AddRange (RootContext.ReferencesLookupPaths);
+			paths.Add (Directory.GetCurrentDirectory ());
+		}
+
+		public abstract bool HasObjectType (T assembly);
+		protected abstract string[] GetDefaultReferences ();
+		public abstract T LoadAssemblyFile (string fileName);
+		public abstract T LoadAssemblyDefault (string assembly);
+		public abstract void LoadReferences (ModuleContainer module);
+
+		protected void Error_FileNotFound (string fileName)
+		{
+			compiler.Report.Error (6, "Metadata file `{0}' could not be found", fileName);
+		}
+
+		protected void Error_FileCorrupted (string fileName)
+		{
+			compiler.Report.Error (9, "Metadata file `{0}' does not contain valid metadata", fileName);
+		}
+
+		protected void Error_AssemblyIsModule (string fileName)
+		{
+			compiler.Report.Error (1509,
+				"Referenced assembly file `{0}' is a module. Consider using `-addmodule' option to add the module",
+				fileName);
+		}
+
+		protected void Error_ModuleIsAssembly (string fileName)
+		{
+			compiler.Report.Error (1542,
+				"Added module file `{0}' is an assembly. Consider using `-r' option to reference the file",
+				fileName);
+		}
+
+		protected void LoadReferencesCore (ModuleContainer module, out T corlib_assembly, out List<Tuple<RootNamespace, T>> loaded)
+		{
+			loaded = new List<Tuple<RootNamespace, T>> ();
+
+			//
+			// Load mscorlib.dll as the first
+			//
+			if (RootContext.StdLib) {
+				corlib_assembly = LoadAssemblyDefault ("mscorlib.dll");
+			} else {
+				corlib_assembly = default (T);
+			}
+
+			T a;
+			foreach (string r in default_references) {
+				a = LoadAssemblyDefault (r);
+				if (a != null)
+					loaded.Add (Tuple.Create (module.GlobalRootNamespace, a));
+			}
+
+			foreach (string r in RootContext.AssemblyReferences) {
+				a = LoadAssemblyFile (r);
+				if (a == null || EqualityComparer<T>.Default.Equals (a, corlib_assembly))
+					continue;
+
+				var key = Tuple.Create (module.GlobalRootNamespace, a);
+				if (loaded.Contains (key))
+					continue;
+
+				// A corlib assembly is the first assembly which contains System.Object
+				if (corlib_assembly == null && HasObjectType (a)) {
+					corlib_assembly = a;
+					continue;
+				}
+
+				loaded.Add (key);
+			}
+
+			foreach (var entry in RootContext.AssemblyReferencesAliases) {
+				a = LoadAssemblyFile (entry.Item2);
+				if (a == null)
+					continue;
+
+				var key = Tuple.Create (module.CreateRootNamespace (entry.Item1), a);
+				if (loaded.Contains (key))
+					continue;
+
+				loaded.Add (key);
+			}
+		}
+	}
+}
diff --git a/mcs/mcs/assign.cs b/mcs/mcs/assign.cs
index a317e7a..494a38a 100644
--- a/mcs/mcs/assign.cs
+++ b/mcs/mcs/assign.cs
@@ -12,8 +12,12 @@
 // Copyright 2004-2008 Novell, Inc
 //
 using System;
-using System.Reflection;
+
+#if STATIC
+using IKVM.Reflection.Emit;
+#else
 using System.Reflection.Emit;
+#endif
 
 namespace Mono.CSharp {
 
@@ -301,7 +305,9 @@ namespace Mono.CSharp {
 		}
 
 		public Expression Source {
-			get { return source; }
+			get {
+				return source;
+			}
 		}
 
 		protected override Expression DoResolve (ResolveContext ec)
@@ -359,7 +365,13 @@ namespace Mono.CSharp {
 			if (target_object.NodeType == System.Linq.Expressions.ExpressionType.Block)
 				return target_object;
 
-			var source_object = System.Linq.Expressions.Expression.Convert (source.MakeExpression (ctx), target_object.Type);
+			System.Linq.Expressions.UnaryExpression source_object;
+			if (ctx.HasSet (BuilderContext.Options.CheckedScope)) {
+				source_object = System.Linq.Expressions.Expression.ConvertChecked (source.MakeExpression (ctx), target_object.Type);
+			} else {
+				source_object = System.Linq.Expressions.Expression.Convert (source.MakeExpression (ctx), target_object.Type);
+			}
+
 			return System.Linq.Expressions.Expression.Assign (target_object, source_object);
 		}
 #endif
@@ -397,7 +409,8 @@ namespace Mono.CSharp {
 		}
 	}
 
-	public class SimpleAssign : Assign {
+	public class SimpleAssign : Assign
+	{
 		public SimpleAssign (Expression target, Expression source)
 			: this (target, source, target.Location)
 		{
@@ -432,19 +445,73 @@ namespace Mono.CSharp {
 		}
 	}
 
-	// This class implements fields and events class initializers
+	public class RuntimeExplicitAssign : Assign
+	{
+		public RuntimeExplicitAssign (Expression target, Expression source)
+			: base (target, source, target.Location)
+		{
+		}
+
+		protected override Expression ResolveConversions (ResolveContext ec)
+		{
+			source = EmptyCast.Create (source, target.Type);
+			return this;
+		}
+	}
+
+	//
+	// Compiler generated assign
+	//
+	class CompilerAssign : Assign
+	{
+		public CompilerAssign (Expression target, Expression source, Location loc)
+			: base (target, source, loc)
+		{
+		}
+
+		public void UpdateSource (Expression source)
+		{
+			base.source = source;
+		}
+	}
+
+	//
+	// Implements fields and events class initializers
+	//
 	public class FieldInitializer : Assign
 	{
 		//
+		// Field initializers are tricky for partial classes. They have to
+		// share same constructor (block) for expression trees resolve but
+		// they have they own resolve scope
+		//
+		sealed class FieldInitializerContext : ResolveContext
+		{
+			ExplicitBlock ctor_block;
+
+			public FieldInitializerContext (IMemberContext mc, ResolveContext constructorContext)
+				: base (mc, Options.FieldInitializerScope | Options.ConstructorScope)
+			{
+				this.ctor_block = constructorContext.CurrentBlock.Explicit;
+			}
+
+			public override ExplicitBlock ConstructorBlock {
+				get {
+					return ctor_block;
+				}
+			}
+		}
+
+		//
 		// Keep resolved value because field initializers have their own rules
 		//
 		ExpressionStatement resolved;
-		IMemberContext rc;
+		IMemberContext mc;
 
-		public FieldInitializer (FieldSpec spec, Expression expression, IMemberContext rc)
+		public FieldInitializer (FieldSpec spec, Expression expression, IMemberContext mc)
 			: base (new FieldExpr (spec, expression.Location), expression, expression.Location)
 		{
-			this.rc = rc;
+			this.mc = mc;
 			if (!spec.IsStatic)
 				((FieldExpr)target).InstanceExpression = CompilerGeneratedThis.Instance;
 		}
@@ -456,19 +523,8 @@ namespace Mono.CSharp {
 				return null;
 
 			if (resolved == null) {
-				//
-				// Field initializers are tricky for partial classes. They have to
-				// share same constructor (block) but they have they own resolve scope.
-				//
-
-				IMemberContext old = ec.MemberContext;
-				ec.MemberContext = rc;
-
-				using (ec.Set (ResolveContext.Options.FieldInitializerScope)) {
-					resolved = base.DoResolve (ec) as ExpressionStatement;
-				}
-
-				ec.MemberContext = old;
+				var ctx = new FieldInitializerContext (mc, ec);
+				resolved = base.DoResolve (ctx) as ExpressionStatement;
 			}
 
 			return resolved;
@@ -606,30 +662,44 @@ namespace Mono.CSharp {
 
 			source = new Binary (op, left, right, true, loc);
 
-			if (target is DynamicMemberBinder) {
-				Arguments targs = ((DynamicMemberBinder) target).Arguments;
+			if (target is DynamicMemberAssignable) {
+				Arguments targs = ((DynamicMemberAssignable) target).Arguments;
 				source = source.Resolve (ec);
 
-				Arguments args = new Arguments (2);
+				Arguments args = new Arguments (targs.Count + 1);
 				args.AddRange (targs);
 				args.Add (new Argument (source));
-				source = new DynamicMemberBinder (ma.Name, args, loc).ResolveLValue (ec, right);
-
-				// Handles possible event addition/subtraction
-				if (op == Binary.Operator.Addition || op == Binary.Operator.Subtraction) {
-					args = new Arguments (2);
-					args.AddRange (targs);
-					args.Add (new Argument (right));
-					string method_prefix = op == Binary.Operator.Addition ?
-						Event.AEventAccessor.AddPrefix : Event.AEventAccessor.RemovePrefix;
-
-					var invoke = DynamicInvocation.CreateSpecialNameInvoke (
-						new MemberAccess (right, method_prefix + ma.Name, loc), args, loc).Resolve (ec);
-
-					args = new Arguments (1);
-					args.AddRange (targs);
-					source = new DynamicEventCompoundAssign (ma.Name, args,
-						(ExpressionStatement) source, (ExpressionStatement) invoke, loc).Resolve (ec);
+
+				var binder_flags = CSharpBinderFlags.ValueFromCompoundAssignment;
+
+				//
+				// Compound assignment does target conversion using additional method
+				// call, set checked context as the binary operation can overflow
+				//
+				if (ec.HasSet (ResolveContext.Options.CheckedScope))
+					binder_flags |= CSharpBinderFlags.CheckedContext;
+
+				if (target is DynamicMemberBinder) {
+					source = new DynamicMemberBinder (ma.Name, binder_flags, args, loc).Resolve (ec);
+
+					// Handles possible event addition/subtraction
+					if (op == Binary.Operator.Addition || op == Binary.Operator.Subtraction) {
+						args = new Arguments (targs.Count + 1);
+						args.AddRange (targs);
+						args.Add (new Argument (right));
+						string method_prefix = op == Binary.Operator.Addition ?
+							Event.AEventAccessor.AddPrefix : Event.AEventAccessor.RemovePrefix;
+
+						var invoke = DynamicInvocation.CreateSpecialNameInvoke (
+							new MemberAccess (right, method_prefix + ma.Name, loc), args, loc).Resolve (ec);
+
+						args = new Arguments (targs.Count);
+						args.AddRange (targs);
+						source = new DynamicEventCompoundAssign (ma.Name, args,
+							(ExpressionStatement) source, (ExpressionStatement) invoke, loc).Resolve (ec);
+					}
+				} else {
+					source = new DynamicIndexBinder (binder_flags, args, loc).Resolve (ec);
 				}
 
 				return source;
@@ -640,6 +710,14 @@ namespace Mono.CSharp {
 
 		protected override Expression ResolveConversions (ResolveContext ec)
 		{
+			//
+			// LAMESPEC: Under dynamic context no target conversion is happening
+			// This allows more natual dynamic behaviour but breaks compatibility
+			// with static binding
+			//
+			if (target is RuntimeValueExpression)
+				return this;
+
 			TypeSpec target_type = target.Type;
 
 			//
diff --git a/mcs/mcs/attribute.cs b/mcs/mcs/attribute.cs
index 9abf693..e0f5a13 100644
--- a/mcs/mcs/attribute.cs
+++ b/mcs/mcs/attribute.cs
@@ -11,10 +11,7 @@
 //
 
 using System;
-using System.Diagnostics;
 using System.Collections.Generic;
-using System.Reflection;
-using System.Reflection.Emit;
 using System.Runtime.InteropServices;
 using System.Runtime.CompilerServices;
 using System.Security; 
@@ -22,6 +19,16 @@ using System.Security.Permissions;
 using System.Text;
 using System.IO;
 
+#if STATIC
+using SecurityType = System.Collections.Generic.List<IKVM.Reflection.Emit.CustomAttributeBuilder>;
+using IKVM.Reflection;
+using IKVM.Reflection.Emit;
+#else
+using SecurityType = System.Collections.Generic.Dictionary<System.Security.Permissions.SecurityAction, System.Security.PermissionSet>;
+using System.Reflection;
+using System.Reflection.Emit;
+#endif
+
 namespace Mono.CSharp {
 
 	/// <summary>
@@ -102,7 +109,7 @@ namespace Mono.CSharp {
 		static Assembly orig_sec_assembly;
 		public static readonly object[] EmptyObject = new object [0];
 
-		IList<KeyValuePair<MemberExpr, NamedArgument>> named_values;
+		List<KeyValuePair<MemberExpr, NamedArgument>> named_values;
 
 		// Cache for parameter-less attributes
 		static Dictionary<TypeSpec, MethodSpec> att_cache;
@@ -119,6 +126,27 @@ namespace Mono.CSharp {
 			this.nameEscaped = nameEscaped;
 		}
 
+		void AddModuleCharSet (ResolveContext rc)
+		{
+			const string dll_import_char_set = "CharSet";
+
+			//
+			// Only when not customized by user
+			//
+			if (HasField (dll_import_char_set))
+				return;
+
+			if (!rc.Module.PredefinedTypes.CharSet.IsDefined) {
+				return;
+			}
+
+			if (NamedArguments == null)
+				NamedArguments = new Arguments (1);
+
+			var value = Constant.CreateConstant (rc, rc.Module.PredefinedTypes.CharSet.TypeSpec, rc.Module.DefaultCharSet, Location);
+			NamedArguments.Add (new NamedArgument (dll_import_char_set, loc, value));
+		}
+
 		public Attribute Clone ()
 		{
 			Attribute a = new Attribute (ExplicitTarget, expression, null, loc, nameEscaped);
@@ -142,7 +170,7 @@ namespace Mono.CSharp {
 		// we use @target field as a list of targets. The attribute
 		// has to be resolved only once but emitted for each target.
 		//
-		public virtual void AttachTo (Attributable target, IMemberContext context)
+		public void AttachTo (Attributable target, IMemberContext context)
 		{
 			if (this.targets == null) {
 				this.targets = new Attributable[] { target };
@@ -308,8 +336,8 @@ namespace Mono.CSharp {
 
 		public bool HasSecurityAttribute {
 			get {
-				PredefinedAttribute pa = context.Compiler.PredefinedAttributes.Security;
-				return pa.IsDefined && TypeSpec.IsBaseClass (type, pa.Type, false);
+				PredefinedAttribute pa = context.Module.PredefinedAttributes.Security;
+				return pa.IsDefined && TypeSpec.IsBaseClass (type, pa.TypeSpec, false);
 			}
 		}
 
@@ -335,29 +363,6 @@ namespace Mono.CSharp {
 			get { return expression.Name; }
 		}
 
-		void ApplyModuleCharSet (ResolveContext rc)
-		{
-			if (Type != context.Compiler.PredefinedAttributes.DllImport)
-				return;
-
-			if (!RootContext.ToplevelTypes.HasDefaultCharSet)
-				return;
-
-			const string CharSetEnumMember = "CharSet";
-			if (NamedArguments == null) {
-				NamedArguments = new Arguments (1);
-			} else {
-				foreach (NamedArgument a in NamedArguments) {
-					if (a.Name == CharSetEnumMember)
-						return;
-				}
-			}
-
-			var char_set = rc.Compiler.MetaImporter.ImportType (typeof (CharSet));	// TODO: typeof
-			NamedArguments.Add (new NamedArgument (CharSetEnumMember, loc,
-				Constant.CreateConstant (rc, char_set, RootContext.ToplevelTypes.DefaultCharSet, Location)));
- 		}
-
 		public Report Report {
 			get { return context.Compiler.Report; }
 		}
@@ -401,7 +406,17 @@ namespace Mono.CSharp {
 				return null;
 			}
 
-			ApplyModuleCharSet (rc);
+			//
+			// Add [module: DefaultCharSet] to all DllImport import attributes
+			//
+			var module = context.Module;
+			// HACK: Needed for broken ModuleContainer::ResolveGlobalAttributes
+			if (module.PredefinedAttributes == null)
+				return ctor;
+
+			if (Type == module.PredefinedAttributes.DllImport && module.HasDefaultCharSet) {
+				AddModuleCharSet (rc);
+			}
 
 			if (NamedArguments != null && !ResolveNamedArguments (rc)) {
 				return null;
@@ -443,10 +458,10 @@ namespace Mono.CSharp {
 
 				a.Resolve (ec);
 
-				Expression member = Expression.MemberLookup (ec, ec.CurrentType, Type, name, 0, false, loc);
+				Expression member = Expression.MemberLookup (ec, ec.CurrentType, Type, name, 0, MemberLookupRestrictions.ExactArity, loc);
 
 				if (member == null) {
-					member = Expression.MemberLookup (null, ec.CurrentType, Type, name, 0, false, loc);
+					member = Expression.MemberLookup (null, ec.CurrentType, Type, name, 0, MemberLookupRestrictions.ExactArity, loc);
 
 					if (member != null) {
 						// TODO: ec.Report.SymbolRelatedToPreviousError (member);
@@ -522,7 +537,7 @@ namespace Mono.CSharp {
 		public string GetValidTargets ()
 		{
 			StringBuilder sb = new StringBuilder ();
-			AttributeTargets targets = Type.GetAttributeUsage (context.Compiler.PredefinedAttributes.AttributeUsage).ValidOn;
+			AttributeTargets targets = Type.GetAttributeUsage (context.Module.PredefinedAttributes.AttributeUsage).ValidOn;
 
 			if ((targets & AttributeTargets.Assembly) != 0)
 				sb.Append ("assembly, ");
@@ -584,11 +599,11 @@ namespace Mono.CSharp {
 
 			AttributeUsageAttribute usage_attribute = new AttributeUsageAttribute ((AttributeTargets)((Constant) PosArguments [0].Expr).GetValue ());
 
-			var field = GetPropertyValue ("AllowMultiple") as BoolConstant;
+			var field = GetNamedValue ("AllowMultiple") as BoolConstant;
 			if (field != null)
 				usage_attribute.AllowMultiple = field.Value;
 
-			field = GetPropertyValue ("Inherited") as BoolConstant;
+			field = GetNamedValue ("Inherited") as BoolConstant;
 			if (field != null)
 				usage_attribute.Inherited = field.Value;
 
@@ -701,6 +716,7 @@ namespace Mono.CSharp {
 				case "field": Target = AttributeTargets.Field; return true;
 				case "method": Target = AttributeTargets.Method; return true;
 				case "property": Target = AttributeTargets.Property; return true;
+				case "module": Target = AttributeTargets.Module; return true;
 				}
 				throw new InternalErrorException ("Unknown explicit target: " + ExplicitTarget);
 			}
@@ -724,6 +740,7 @@ namespace Mono.CSharp {
 			SecurityAction action = GetSecurityActionValue ();
 
 			switch (action) {
+#pragma warning disable 618
 			case SecurityAction.Demand:
 			case SecurityAction.Assert:
 			case SecurityAction.Deny:
@@ -740,6 +757,7 @@ namespace Mono.CSharp {
 				if (for_assembly)
 					return true;
 				break;
+#pragma warning restore 618
 
 			default:
 				Error_AttributeEmitError ("SecurityAction is out of range");
@@ -752,15 +770,40 @@ namespace Mono.CSharp {
 
 		System.Security.Permissions.SecurityAction GetSecurityActionValue ()
 		{
-			return (SecurityAction) ((Constant) PosArguments[0].Expr).GetTypedValue ();
+			return (SecurityAction) ((Constant) PosArguments[0].Expr).GetValue ();
 		}
 
 		/// <summary>
 		/// Creates instance of SecurityAttribute class and add result of CreatePermission method to permission table.
 		/// </summary>
 		/// <returns></returns>
-		public void ExtractSecurityPermissionSet (Dictionary<SecurityAction, PermissionSet> permissions)
-		{
+		public void ExtractSecurityPermissionSet (MethodSpec ctor, ref SecurityType permissions)
+		{
+#if STATIC
+			object[] values = new object [PosArguments.Count];
+			for (int i = 0; i < values.Length; ++i)
+				values [i] = ((Constant) PosArguments [i].Expr).GetValue ();
+
+			PropertyInfo[] prop;
+			object[] prop_values;
+			if (named_values == null) {
+				prop = null;
+				prop_values = null;
+			} else {
+				prop = new PropertyInfo[named_values.Count];
+				prop_values = new object [named_values.Count];
+				for (int i = 0; i < prop.Length; ++i) {
+					prop [i] = ((PropertyExpr) named_values [i].Key).PropertyInfo.MetaInfo;
+					prop_values [i] = ((Constant) named_values [i].Value.Expr).GetValue ();
+				}
+			}
+
+			if (permissions == null)
+				permissions = new SecurityType ();
+
+			var cab = new CustomAttributeBuilder ((ConstructorInfo) ctor.GetMetaInfo (), values, prop, prop_values);
+			permissions.Add (cab);
+#else
 			Type orig_assembly_type = null;
 
 			if (Type.MemberDefinition is TypeContainer) {
@@ -774,7 +817,7 @@ namespace Mono.CSharp {
 					}
 
 					if (orig_sec_assembly == null) {
-						string file = Path.Combine (orig_version_path, Driver.OutputFile);
+						string file = Path.Combine (orig_version_path, Path.GetFileName (RootContext.OutputFile));
 						orig_sec_assembly = Assembly.LoadFile (file);
 					}
 
@@ -794,7 +837,7 @@ namespace Mono.CSharp {
 			if (orig_assembly_type == null) {
 				args = new object[PosArguments.Count];
 				for (int j = 0; j < args.Length; ++j) {
-					args[j] = ((Constant) PosArguments[j].Expr).GetTypedValue ();
+					args[j] = ((Constant) PosArguments[j].Expr).GetValue ();
 				}
 
 				sa = (SecurityAttribute) Activator.CreateInstance (Type.GetMetaInfo (), args);
@@ -802,7 +845,7 @@ namespace Mono.CSharp {
 				if (named_values != null) {
 					for (int i = 0; i < named_values.Count; ++i) {
 						PropertyInfo pi = ((PropertyExpr) named_values[i].Key).PropertyInfo.MetaInfo;
-						pi.SetValue (sa, ((Constant) named_values [i].Value.Expr).GetTypedValue (), null);
+						pi.SetValue (sa, ((Constant) named_values [i].Value.Expr).GetValue (), null);
 					}
 				}
 			} else {
@@ -818,7 +861,7 @@ namespace Mono.CSharp {
 						// TODO: pi can be null
 						PropertyInfo pi = orig_assembly_type.GetProperty (emited_pi.Name);
 
-						pi.SetValue (sa, ((Constant) named_values[i].Value.Expr).GetTypedValue (), null);
+						pi.SetValue (sa, ((Constant) named_values[i].Value.Expr).GetValue (), null);
 					}
 				}
 			}
@@ -842,6 +885,9 @@ namespace Mono.CSharp {
 				}
 			}
 
+			if (permissions == null)
+				permissions = new SecurityType ();
+
 			PermissionSet ps;
 			if (!permissions.TryGetValue (action, out ps)) {
 				if (sa is PermissionSetAttribute)
@@ -855,9 +901,10 @@ namespace Mono.CSharp {
 				permissions [action] = ps;
 			}
 			ps.AddPermission (perm);
+#endif
 		}
 
-		public Constant GetPropertyValue (string name)
+		public Constant GetNamedValue (string name)
 		{
 			if (named_values == null)
 				return null;
@@ -870,109 +917,6 @@ namespace Mono.CSharp {
 			return null;
 		}
 
-		//
-		// Theoretically, we can get rid of this, since FieldBuilder.SetCustomAttribute()
-		// and ParameterBuilder.SetCustomAttribute() are supposed to handle this attribute.
-		// However, we can't, since it appears that the .NET 1.1 SRE hangs when given a MarshalAsAttribute.
-		//
-#if false
-		public UnmanagedMarshal GetMarshal (Attributable attr)
-		{
-			UnmanagedType UnmanagedType;
-			if (!RootContext.StdLib || pos_values [0].GetType () != typeof (UnmanagedType))
-				UnmanagedType = (UnmanagedType) System.Enum.ToObject (typeof (UnmanagedType), pos_values [0]);
-			else
-				UnmanagedType = (UnmanagedType) pos_values [0];
-
-			object value = GetFieldValue ("SizeParamIndex");
-			if (value != null && UnmanagedType != UnmanagedType.LPArray) {
-				Error_AttributeEmitError ("SizeParamIndex field is not valid for the specified unmanaged type");
-				return null;
-			}
-
-			object o = GetFieldValue ("ArraySubType");
-			UnmanagedType array_sub_type = o == null ? (UnmanagedType) 0x50 /* NATIVE_MAX */ : (UnmanagedType) o;
-
-			switch (UnmanagedType) {
-			case UnmanagedType.CustomMarshaler: {
-				MethodInfo define_custom = typeof (UnmanagedMarshal).GetMethod ("DefineCustom",
-					BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic);
-				if (define_custom == null) {
-					Report.RuntimeMissingSupport (Location, "set marshal info");
-					return null;
-				}
-				
-				object [] args = new object [4];
-				args [0] = GetFieldValue ("MarshalTypeRef");
-				args [1] = GetFieldValue ("MarshalCookie");
-				args [2] = GetFieldValue ("MarshalType");
-				args [3] = Guid.Empty;
-				return (UnmanagedMarshal) define_custom.Invoke (null, args);
-			}
-			case UnmanagedType.LPArray: {
-				object size_const = GetFieldValue ("SizeConst");
-				object size_param_index = GetFieldValue ("SizeParamIndex");
-
-				if ((size_const != null) || (size_param_index != null)) {
-					MethodInfo define_array = typeof (UnmanagedMarshal).GetMethod ("DefineLPArrayInternal",
-						BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic);
-					if (define_array == null) {
-						Report.RuntimeMissingSupport (Location, "set marshal info");
-						return null;
-					}
-				
-					object [] args = new object [3];
-					args [0] = array_sub_type;
-					args [1] = size_const == null ? -1 : size_const;
-					args [2] = size_param_index == null ? -1 : size_param_index;
-					return (UnmanagedMarshal) define_array.Invoke (null, args);
-				}
-				else
-					return UnmanagedMarshal.DefineLPArray (array_sub_type);
-			}
-			case UnmanagedType.SafeArray:
-				return UnmanagedMarshal.DefineSafeArray (array_sub_type);
-
-			case UnmanagedType.ByValArray:
-				FieldBase fm = attr as FieldBase;
-				if (fm == null) {
-					Error_AttributeEmitError ("Specified unmanaged type is only valid on fields");
-					return null;
-				}
-				return UnmanagedMarshal.DefineByValArray ((int) GetFieldValue ("SizeConst"));
-
-			case UnmanagedType.ByValTStr:
-				return UnmanagedMarshal.DefineByValTStr ((int) GetFieldValue ("SizeConst"));
-
-			default:
-				return UnmanagedMarshal.DefineUnmanagedMarshal (UnmanagedType);
-			}
-		}
-
-		object GetFieldValue (string name)
-		{
-			int i;
-			if (field_info_arr == null)
-				return null;
-			i = 0;
-			foreach (FieldInfo fi in field_info_arr) {
-				if (fi.Name == name)
-					return GetValue (field_values_arr [i]);
-				i++;
-			}
-			return null;
-		}
-
-		static object GetValue (object value)
-		{
-			if (value is EnumConstant)
-				return ((EnumConstant) value).GetValue ();
-			else
-				return value;				
-		}
-		
-#endif
-
 		public CharSet GetCharSetValue ()
 		{
 			return (CharSet)System.Enum.Parse (typeof (CharSet), ((Constant) PosArguments [0].Expr).GetValue ().ToString ());
@@ -991,27 +935,32 @@ namespace Mono.CSharp {
 			return false;
 		}
 
-		public bool IsInternalMethodImplAttribute {
-			get {
-				if (Type != context.Compiler.PredefinedAttributes.MethodImpl)
-					return false;
-
-				MethodImplOptions options;
-				if (PosArguments[0].Type.GetMetaInfo () != typeof (MethodImplOptions))
-					options = (MethodImplOptions) System.Enum.ToObject (typeof (MethodImplOptions), ((Constant) PosArguments[0].Expr).GetValue ());
-				else
-					options = (MethodImplOptions) ((Constant) PosArguments [0].Expr).GetValue ();
-
-				return (options & MethodImplOptions.InternalCall) != 0;
+		//
+		// Returns true for MethodImplAttribute with MethodImplOptions.InternalCall value
+		// 
+		public bool IsInternalCall ()
+		{
+			MethodImplOptions options = 0;
+			if (PosArguments.Count == 1) {
+				options = (MethodImplOptions) System.Enum.Parse (typeof (MethodImplOptions), ((Constant) PosArguments[0].Expr).GetValue ().ToString ());
+			} else if (HasField ("Value")) {
+				var named = GetNamedValue ("Value");
+				options = (MethodImplOptions) System.Enum.Parse (typeof (MethodImplOptions), named.GetValue ().ToString ());
 			}
+
+			return (options & MethodImplOptions.InternalCall) != 0;
 		}
 
-		public LayoutKind GetLayoutKindValue ()
+		//
+		// Returns true for StructLayoutAttribute with LayoutKind.Explicit value
+		// 
+		public bool IsExplicitLayoutKind ()
 		{
-			if (!RootContext.StdLib || PosArguments[0].Type.GetMetaInfo () != typeof (LayoutKind))
-				return (LayoutKind) System.Enum.ToObject (typeof (LayoutKind), ((Constant) PosArguments[0].Expr).GetValue ());
+			if (PosArguments.Count != 1)
+				return false;
 
-			return (LayoutKind) ((Constant) PosArguments[0].Expr).GetValue ();
+			var value = (LayoutKind) System.Enum.Parse (typeof (LayoutKind), ((Constant) PosArguments[0].Expr).GetValue ().ToString ());
+			return value == LayoutKind.Explicit;
 		}
 
 		public Constant GetParameterDefaultValue (out TypeSpec type)
@@ -1048,7 +997,7 @@ namespace Mono.CSharp {
 			if (ctor == null)
 				return;
 
-			var predefined = context.Compiler.PredefinedAttributes;
+			var predefined = context.Module.PredefinedAttributes;
 
 			AttributeUsageAttribute usage_attr = Type.GetAttributeUsage (predefined.AttributeUsage);
 			if ((usage_attr.ValidOn & Target) == 0) {
@@ -1086,6 +1035,19 @@ namespace Mono.CSharp {
 								context.Compiler.Report.Error (591, Location, "Invalid value for argument to `{0}' attribute",
 									"System.AttributeUsage");
 							}
+						} else if (Type == predefined.MarshalAs) {
+							if (PosArguments.Count == 1) {
+								var u_type = (UnmanagedType) System.Enum.Parse (typeof (UnmanagedType), ((Constant) PosArguments[0].Expr).GetValue ().ToString ());
+								if (u_type == UnmanagedType.ByValArray && !(Owner is FieldBase)) {
+									Error_AttributeEmitError ("Specified unmanaged type is only valid on fields");
+								}
+							}
+						} else if (Type == predefined.DllImport) {
+							if (PosArguments.Count == 1) {
+								var value = ((Constant) PosArguments[0].Expr).GetValue () as string;
+								if (string.IsNullOrEmpty (value))
+									Error_AttributeEmitError ("DllName cannot be empty");
+							}
 						} else if (Type == predefined.MethodImpl && pt == TypeManager.short_type &&
 							!System.Enum.IsDefined (typeof (MethodImplOptions), ((Constant) arg_expr).GetValue ().ToString ())) {
 							Error_AttributeEmitError ("Incorrect argument value.");
@@ -1110,7 +1072,7 @@ namespace Mono.CSharp {
 					na.Value.Expr.EncodeAttributeValue (context, encoder, na.Key.Type);
 				}
 			} else {
-				encoder.Stream.Write ((ushort) 0);
+				encoder.EncodeEmptyNamedArguments ();
 			}
 
 			byte[] cdata = encoder.ToArray ();
@@ -1214,21 +1176,6 @@ namespace Mono.CSharp {
 		{
 			this.ns = ns;
 		}
-		
-		public override void AttachTo (Attributable target, IMemberContext context)
-		{
-			if (ExplicitTarget == "assembly") {
-				base.AttachTo (CodeGen.Assembly, context);
-				return;
-			}
-
-			if (ExplicitTarget == "module") {
-				base.AttachTo (RootContext.ToplevelTypes, context);
-				return;
-			}
-
-			throw new NotImplementedException ("Unknown global explicit target " + ExplicitTarget);
-		}
 
 		void Enter ()
 		{
@@ -1337,7 +1284,15 @@ namespace Mono.CSharp {
 
 		public Attribute Search (PredefinedAttribute t)
 		{
+			return Search (null, t);
+		}
+
+		public Attribute Search (string explicitTarget, PredefinedAttribute t)
+		{
 			foreach (Attribute a in Attrs) {
+				if (explicitTarget != null && a.ExplicitTarget != explicitTarget)
+					continue;
+
 				if (a.ResolveType () == t)
 					return a;
 			}
@@ -1404,8 +1359,18 @@ namespace Mono.CSharp {
 			TypeParameter = 1 << 1
 		}
 
+		const ushort Version = 1;
+
+		public static readonly byte[] Empty;
+
 		public readonly BinaryWriter Stream;
 
+		static AttributeEncoder ()
+		{
+			Empty = new byte[4];
+			Array.Copy (BitConverter.GetBytes (Version), Empty, 2);
+		}
+
 		public AttributeEncoder (bool empty)
 		{
 			if (empty) {
@@ -1414,14 +1379,35 @@ namespace Mono.CSharp {
 			}
 
 			Stream = new BinaryWriter (new MemoryStream ());
-			const ushort version = 1;
-			Stream.Write (version);
+			Stream.Write (Version);
+		}
+
+		public void Encode (byte value)
+		{
+			Stream.Write (value);
+		}
+
+		public void Encode (short value)
+		{
+			Stream.Write (value);
+		}
+
+		public void Encode (int value)
+		{
+			Stream.Write (value);
+		}
+
+		public void Encode (uint value)
+		{
+			Stream.Write (value);
 		}
 
 		public void Encode (string value)
 		{
-			if (value == null)
-				throw new ArgumentNullException ();
+			if (value == null) {
+				Stream.Write ((byte) 0xFF);
+				return;
+			}
 
 			var buf = Encoding.UTF8.GetBytes(value);
 			WriteCompressedValue (buf.Length);
@@ -1480,6 +1466,56 @@ namespace Mono.CSharp {
 			Encode (type.MemberDefinition.IsImported ? old_type.AssemblyQualifiedName : old_type.FullName);
 		}
 
+		//
+		// Encodes single property named argument per call
+		//
+		public void EncodeNamedPropertyArgument (PropertySpec property, Constant value)
+		{
+			Stream.Write ((ushort) 1);	// length
+			Stream.Write ((byte) 0x54); // property
+			Encode (property.MemberType);
+			Encode (property.Name);
+			value.EncodeAttributeValue (null, this, property.MemberType);
+		}
+
+		//
+		// Encodes single field named argument per call
+		//
+		public void EncodeNamedFieldArgument (FieldSpec field, Constant value)
+		{
+			Stream.Write ((ushort) 1);	// length
+			Stream.Write ((byte) 0x53); // field
+			Encode (field.MemberType);
+			Encode (field.Name);
+			value.EncodeAttributeValue (null, this, field.MemberType);
+		}
+
+		public void EncodeNamedArguments<T> (T[] members, Constant[] values) where T : MemberSpec, IInterfaceMemberSpec
+		{
+			Stream.Write ((ushort) members.Length);
+
+			for (int i = 0; i < members.Length; ++i)
+			{
+				var member = members[i];
+
+				if (member.Kind == MemberKind.Field)
+					Stream.Write ((byte) 0x53);
+				else if (member.Kind == MemberKind.Property)
+					Stream.Write ((byte) 0x54);
+				else
+					throw new NotImplementedException (member.Kind.ToString ());
+
+				Encode (member.MemberType);
+				Encode (member.Name);
+				values [i].EncodeAttributeValue (null, this, member.MemberType);
+			}
+		}
+
+		public void EncodeEmptyNamedArguments ()
+		{
+			Stream.Write ((ushort) 0);
+		}
+
 		void WriteCompressedValue (int value)
 		{
 			if (value < 0x80) {
@@ -1558,36 +1594,6 @@ namespace Mono.CSharp {
 			return result;
 		}
 
-		public static void VerifyModulesClsCompliance (CompilerContext ctx)
-		{
-			Module[] modules = ctx.GlobalRootNamespace.Modules;
-			if (modules == null)
-				return;
-
-			// The first module is generated assembly
-			for (int i = 1; i < modules.Length; ++i) {
-				Module module = modules [i];
-				if (!GetClsCompliantAttributeValue (module, null)) {
-					ctx.Report.Error (3013, "Added modules must be marked with the CLSCompliant attribute " +
-						      "to match the assembly", module.Name);
-					return;
-				}
-			}
-		}
-
-		static bool GetClsCompliantAttributeValue (ICustomAttributeProvider attribute_provider, Assembly a) 
-		{
-			object[] cls_attr = attribute_provider.GetCustomAttributes (typeof (CLSCompliantAttribute), false);
-			if (cls_attr.Length == 0) {
-				if (a == null)
-					return false;
-
-				return GetClsCompliantAttributeValue (a, null);
-			}
-			
-			return ((CLSCompliantAttribute)cls_attr [0]).IsCompliant;
-		}
-
 		/// <summary>
 		/// Common method for Obsolete error/warning reporting.
 		/// </summary>
@@ -1606,13 +1612,16 @@ namespace Mono.CSharp {
 		}
 	}
 
+	//
+	// Predefined attribute types
+	//
 	public class PredefinedAttributes
 	{
-		// Core types
+		// Build-in attributes
 		public readonly PredefinedAttribute ParamArray;
 		public readonly PredefinedAttribute Out;
 
-		// Optional types
+		// Optional attributes
 		public readonly PredefinedAttribute Obsolete;
 		public readonly PredefinedAttribute DllImport;
 		public readonly PredefinedAttribute MethodImpl;
@@ -1628,14 +1637,16 @@ namespace Mono.CSharp {
 		public readonly PredefinedAttribute AssemblyVersion;
 		public readonly PredefinedAttribute AssemblyAlgorithmId;
 		public readonly PredefinedAttribute AssemblyFlags;
+		public readonly PredefinedAttribute AssemblyFileVersion;
 		public readonly PredefinedAttribute ComImport;
 		public readonly PredefinedAttribute CoClass;
 		public readonly PredefinedAttribute AttributeUsage;
 		public readonly PredefinedAttribute DefaultParameterValue;
 		public readonly PredefinedAttribute OptionalParameter;
+		public readonly PredefinedAttribute UnverifiableCode;
 
 		// New in .NET 2.0
-		public readonly PredefinedAttribute DefaultCharset;
+		//public readonly PredefinedAttribute DefaultCharset;
 		public readonly PredefinedAttribute TypeForwarder;
 		public readonly PredefinedAttribute FixedBuffer;
 		public readonly PredefinedAttribute CompilerGenerated;
@@ -1648,90 +1659,97 @@ namespace Mono.CSharp {
 		public readonly PredefinedAttribute Extension;
 
 		// New in .NET 4.0
-		public readonly PredefinedAttribute Dynamic;
-		public readonly PredefinedAttribute DynamicTransform;	// DynamicAttribute with transform arguments
+		public readonly PredefinedDynamicAttribute Dynamic;
 
 		//
 		// Optional types which are used as types and for member lookup
 		//
 		public readonly PredefinedAttribute DefaultMember;
-		public readonly PredefinedAttribute DecimalConstant;
+		public readonly PredefinedDecimalAttribute DecimalConstant;
 		public readonly PredefinedAttribute StructLayout;
 		public readonly PredefinedAttribute FieldOffset;
 
-		public PredefinedAttributes ()
-		{
-			ParamArray = new PredefinedAttribute ("System", "ParamArrayAttribute");
-			Out = new PredefinedAttribute ("System.Runtime.InteropServices", "OutAttribute");
-
-			Obsolete = new PredefinedAttribute ("System", "ObsoleteAttribute");
-			DllImport = new PredefinedAttribute ("System.Runtime.InteropServices", "DllImportAttribute");
-			MethodImpl = new PredefinedAttribute ("System.Runtime.CompilerServices", "MethodImplAttribute");
-			MarshalAs = new PredefinedAttribute ("System.Runtime.InteropServices", "MarshalAsAttribute");
-			In = new PredefinedAttribute ("System.Runtime.InteropServices", "InAttribute");
-			IndexerName = new PredefinedAttribute ("System.Runtime.CompilerServices", "IndexerNameAttribute");
-			Conditional = new PredefinedAttribute ("System.Diagnostics", "ConditionalAttribute");
-			CLSCompliant = new PredefinedAttribute ("System", "CLSCompliantAttribute");
-			Security = new PredefinedAttribute ("System.Security.Permissions", "SecurityAttribute");
-			Required = new PredefinedAttribute ("System.Runtime.CompilerServices", "RequiredAttributeAttribute");
-			Guid = new PredefinedAttribute ("System.Runtime.InteropServices", "GuidAttribute");
-			AssemblyCulture = new PredefinedAttribute ("System.Reflection", "AssemblyCultureAttribute");
-			AssemblyVersion = new PredefinedAttribute ("System.Reflection", "AssemblyVersionAttribute");
-			AssemblyAlgorithmId = new PredefinedAttribute ("System.Reflection", "AssemblyAlgorithmIdAttribute");
-			AssemblyFlags = new PredefinedAttribute ("System.Reflection", "AssemblyFlagsAttribute");
-			ComImport = new PredefinedAttribute ("System.Runtime.InteropServices", "ComImportAttribute");
-			CoClass = new PredefinedAttribute ("System.Runtime.InteropServices", "CoClassAttribute");
-			AttributeUsage = new PredefinedAttribute ("System", "AttributeUsageAttribute");
-			DefaultParameterValue = new PredefinedAttribute ("System.Runtime.InteropServices", "DefaultParameterValueAttribute");
-			OptionalParameter = new PredefinedAttribute ("System.Runtime.InteropServices", "OptionalAttribute");
-
-			DefaultCharset = new PredefinedAttribute ("System.Runtime.InteropServices", "DefaultCharSetAttribute");
-			TypeForwarder = new PredefinedAttribute ("System.Runtime.CompilerServices", "TypeForwardedToAttribute");
-			FixedBuffer = new PredefinedAttribute ("System.Runtime.CompilerServices", "FixedBufferAttribute");
-			CompilerGenerated = new PredefinedAttribute ("System.Runtime.CompilerServices", "CompilerGeneratedAttribute");
-			InternalsVisibleTo = new PredefinedAttribute ("System.Runtime.CompilerServices", "InternalsVisibleToAttribute");
-			RuntimeCompatibility = new PredefinedAttribute ("System.Runtime.CompilerServices", "RuntimeCompatibilityAttribute");
-			DebuggerHidden = new PredefinedAttribute ("System.Diagnostics", "DebuggerHiddenAttribute");
-			UnsafeValueType = new PredefinedAttribute ("System.Runtime.CompilerServices", "UnsafeValueTypeAttribute");
-
-			Extension = new PredefinedAttribute ("System.Runtime.CompilerServices", "ExtensionAttribute");
-
-			Dynamic = new PredefinedAttribute ("System.Runtime.CompilerServices", "DynamicAttribute");
-			DynamicTransform = new PredefinedAttribute ("System.Runtime.CompilerServices", "DynamicAttribute");
-
-			DefaultMember = new PredefinedAttribute ("System.Reflection", "DefaultMemberAttribute");
-			DecimalConstant = new PredefinedAttribute ("System.Runtime.CompilerServices", "DecimalConstantAttribute");
-			StructLayout = new PredefinedAttribute ("System.Runtime.InteropServices", "StructLayoutAttribute");
-			FieldOffset = new PredefinedAttribute ("System.Runtime.InteropServices", "FieldOffsetAttribute");
-		}
-
-		public void Initialize (CompilerContext ctx)
-		{
-			foreach (FieldInfo fi in GetType ().GetFields (BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly)) {
-				((PredefinedAttribute) fi.GetValue (this)).Initialize (ctx, true);
+		public PredefinedAttributes (ModuleContainer module)
+		{
+			ParamArray = new PredefinedAttribute (module, "System", "ParamArrayAttribute");
+			Out = new PredefinedAttribute (module, "System.Runtime.InteropServices", "OutAttribute");
+			ParamArray.Resolve (Location.Null);
+			Out.Resolve (Location.Null);
+
+			Obsolete = new PredefinedAttribute (module, "System", "ObsoleteAttribute");
+			DllImport = new PredefinedAttribute (module, "System.Runtime.InteropServices", "DllImportAttribute");
+			MethodImpl = new PredefinedAttribute (module, "System.Runtime.CompilerServices", "MethodImplAttribute");
+			MarshalAs = new PredefinedAttribute (module, "System.Runtime.InteropServices", "MarshalAsAttribute");
+			In = new PredefinedAttribute (module, "System.Runtime.InteropServices", "InAttribute");
+			IndexerName = new PredefinedAttribute (module, "System.Runtime.CompilerServices", "IndexerNameAttribute");
+			Conditional = new PredefinedAttribute (module, "System.Diagnostics", "ConditionalAttribute");
+			CLSCompliant = new PredefinedAttribute (module, "System", "CLSCompliantAttribute");
+			Security = new PredefinedAttribute (module, "System.Security.Permissions", "SecurityAttribute");
+			Required = new PredefinedAttribute (module, "System.Runtime.CompilerServices", "RequiredAttributeAttribute");
+			Guid = new PredefinedAttribute (module, "System.Runtime.InteropServices", "GuidAttribute");
+			AssemblyCulture = new PredefinedAttribute (module, "System.Reflection", "AssemblyCultureAttribute");
+			AssemblyVersion = new PredefinedAttribute (module, "System.Reflection", "AssemblyVersionAttribute");
+			AssemblyAlgorithmId = new PredefinedAttribute (module, "System.Reflection", "AssemblyAlgorithmIdAttribute");
+			AssemblyFlags = new PredefinedAttribute (module, "System.Reflection", "AssemblyFlagsAttribute");
+			AssemblyFileVersion = new PredefinedAttribute (module, "System.Reflection", "AssemblyFileVersionAttribute");
+			ComImport = new PredefinedAttribute (module, "System.Runtime.InteropServices", "ComImportAttribute");
+			CoClass = new PredefinedAttribute (module, "System.Runtime.InteropServices", "CoClassAttribute");
+			AttributeUsage = new PredefinedAttribute (module, "System", "AttributeUsageAttribute");
+			DefaultParameterValue = new PredefinedAttribute (module, "System.Runtime.InteropServices", "DefaultParameterValueAttribute");
+			OptionalParameter = new PredefinedAttribute (module, "System.Runtime.InteropServices", "OptionalAttribute");
+			UnverifiableCode = new PredefinedAttribute (module, "System.Security", "UnverifiableCodeAttribute");
+
+			//DefaultCharset = new PredefinedAttribute (module, "System.Runtime.InteropServices", "DefaultCharSetAttribute");
+			TypeForwarder = new PredefinedAttribute (module, "System.Runtime.CompilerServices", "TypeForwardedToAttribute");
+			FixedBuffer = new PredefinedAttribute (module, "System.Runtime.CompilerServices", "FixedBufferAttribute");
+			CompilerGenerated = new PredefinedAttribute (module, "System.Runtime.CompilerServices", "CompilerGeneratedAttribute");
+			InternalsVisibleTo = new PredefinedAttribute (module, "System.Runtime.CompilerServices", "InternalsVisibleToAttribute");
+			RuntimeCompatibility = new PredefinedAttribute (module, "System.Runtime.CompilerServices", "RuntimeCompatibilityAttribute");
+			DebuggerHidden = new PredefinedAttribute (module, "System.Diagnostics", "DebuggerHiddenAttribute");
+			UnsafeValueType = new PredefinedAttribute (module, "System.Runtime.CompilerServices", "UnsafeValueTypeAttribute");
+
+			Extension = new PredefinedAttribute (module, "System.Runtime.CompilerServices", "ExtensionAttribute");
+
+			Dynamic = new PredefinedDynamicAttribute (module, "System.Runtime.CompilerServices", "DynamicAttribute");
+
+			DefaultMember = new PredefinedAttribute (module, "System.Reflection", "DefaultMemberAttribute");
+			DecimalConstant = new PredefinedDecimalAttribute (module, "System.Runtime.CompilerServices", "DecimalConstantAttribute");
+			StructLayout = new PredefinedAttribute (module, "System.Runtime.InteropServices", "StructLayoutAttribute");
+			FieldOffset = new PredefinedAttribute (module, "System.Runtime.InteropServices", "FieldOffsetAttribute");
+
+			// TODO: Should define only attributes which are used for comparison
+			const System.Reflection.BindingFlags all_fields = System.Reflection.BindingFlags.Public |
+				System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.DeclaredOnly;
+
+			foreach (var fi in GetType ().GetFields (all_fields)) {
+				((PredefinedAttribute) fi.GetValue (this)).Define ();
 			}
 		}
 	}
 
-	public class PredefinedAttribute
+	public class PredefinedAttribute : PredefinedType
 	{
-		TypeSpec type;
-		CustomAttributeBuilder cab;
-		MethodSpec ctor;
-		readonly string ns, name;
-		CompilerContext compiler;
-
-		static readonly TypeSpec NotFound = InternalType.Null;
+		protected MethodSpec ctor;
+		List<PropertySpec> properties;
 
-		public PredefinedAttribute (string ns, string name)
+		public PredefinedAttribute (ModuleContainer module, string ns, string name)
+			: base (module, MemberKind.Class, ns, name)
 		{
-			this.ns = ns;
-			this.name = name;
 		}
 
+		#region Properties
+
+		public MethodSpec Constructor {
+			get {
+				return ctor;
+			}
+		}
+
+		#endregion
+
 		public static bool operator == (TypeSpec type, PredefinedAttribute pa)
 		{
-			return type == pa.type;
+			return type == pa.type && pa.type != null;
 		}
 
 		public static bool operator != (TypeSpec type, PredefinedAttribute pa)
@@ -1739,20 +1757,11 @@ namespace Mono.CSharp {
 			return type != pa.type;
 		}
 
-		public ConstructorInfo Constructor {
-			get { return ctor == null ? null : (ConstructorInfo) ctor.GetMetaInfo (); }
-		}
-
 		public override int GetHashCode ()
 		{
 			return base.GetHashCode ();
 		}
 
-		public string GetSignatureForError ()
-		{
-			return ns + "." + name;
-		}
-
 		public override bool Equals (object obj)
 		{
 			throw new NotSupportedException ();
@@ -1761,90 +1770,109 @@ namespace Mono.CSharp {
 		public void EmitAttribute (ConstructorBuilder builder)
 		{
 			if (ResolveBuilder ())
-				builder.SetCustomAttribute (cab);
+				builder.SetCustomAttribute (GetCtorMetaInfo (), AttributeEncoder.Empty);
 		}
 
 		public void EmitAttribute (MethodBuilder builder)
 		{
 			if (ResolveBuilder ())
-				builder.SetCustomAttribute (cab);
+				builder.SetCustomAttribute (GetCtorMetaInfo (), AttributeEncoder.Empty);
 		}
 
 		public void EmitAttribute (PropertyBuilder builder)
 		{
 			if (ResolveBuilder ())
-				builder.SetCustomAttribute (cab);
+				builder.SetCustomAttribute (GetCtorMetaInfo (), AttributeEncoder.Empty);
 		}
 
 		public void EmitAttribute (FieldBuilder builder)
 		{
 			if (ResolveBuilder ())
-				builder.SetCustomAttribute (cab);
+				builder.SetCustomAttribute (GetCtorMetaInfo (), AttributeEncoder.Empty);
+		}
+
+		public void EmitAttribute (FieldBuilder builder, AttributeEncoder argsEncoded)
+		{
+			builder.SetCustomAttribute (GetCtorMetaInfo (), argsEncoded.ToArray ());
 		}
 
 		public void EmitAttribute (TypeBuilder builder)
 		{
 			if (ResolveBuilder ())
-				builder.SetCustomAttribute (cab);
+				builder.SetCustomAttribute (GetCtorMetaInfo (), AttributeEncoder.Empty);
+		}
+
+		public void EmitAttribute (TypeBuilder builder, AttributeEncoder argsEncoded)
+		{
+			builder.SetCustomAttribute (GetCtorMetaInfo (), argsEncoded.ToArray ());
 		}
 
 		public void EmitAttribute (AssemblyBuilder builder)
 		{
 			if (ResolveBuilder ())
-				builder.SetCustomAttribute (cab);
+				builder.SetCustomAttribute (GetCtorMetaInfo (), AttributeEncoder.Empty);
+		}
+
+		public void EmitAttribute (ModuleBuilder builder)
+		{
+			if (ResolveBuilder ())
+				builder.SetCustomAttribute (GetCtorMetaInfo (), AttributeEncoder.Empty);
 		}
 
 		public void EmitAttribute (ParameterBuilder builder)
 		{
 			if (ResolveBuilder ())
-				builder.SetCustomAttribute (cab);
+				builder.SetCustomAttribute (GetCtorMetaInfo (), AttributeEncoder.Empty);
 		}
 
-		public bool IsDefined {
-			get { return type != null && type != NotFound; }
+		public void EmitAttribute (ParameterBuilder builder, AttributeEncoder argsEncoded)
+		{
+			builder.SetCustomAttribute (GetCtorMetaInfo (), argsEncoded.ToArray ());
 		}
 
-		public void Initialize (CompilerContext ctx, bool canFail)
+		ConstructorInfo GetCtorMetaInfo ()
 		{
-			this.compiler = ctx;
-			Resolve (canFail);
+			return (ConstructorInfo) ctor.GetMetaInfo ();
 		}
 
-		public bool Resolve (bool canFail)
+		public PropertySpec GetProperty (string name, TypeSpec memberType, Location loc)
 		{
-			if (type != null) {
-				if (IsDefined)
-					return true;
-				if (canFail)
-					return false;
+			PropertySpec spec;
+
+			if (properties != null) {
+				spec = properties.Find (l => l.Name == name);
+			} else {
+				spec = null;
 			}
 
-			type = TypeManager.CoreLookupType (compiler, ns, name, MemberKind.Class, !canFail);
-			if (type == null) {
-				type = NotFound;
-				return false;
+			if (spec == null) {
+				spec = TypeManager.GetPredefinedProperty (type, name, loc, memberType);
+
+				if (spec != null) {
+					if (properties == null) {
+						properties = new List<PropertySpec> ();
+					}
+
+					properties.Add (spec);
+				}
 			}
 
-			return true;
+			return spec;
 		}
 
-		bool ResolveBuilder ()
+		public bool ResolveBuilder ()
 		{
-			if (cab != null)
+			if (ctor != null)
 				return true;
 
 			//
 			// Handle all parameter-less attributes as optional
 			//
-			if (!Resolve (true))
-				return false;
-
-			var ci = TypeManager.GetPredefinedConstructor (type, Location.Null, TypeSpec.EmptyTypes);
-			if (ci == null)
+			if (!IsDefined)
 				return false;
 
-			cab = new CustomAttributeBuilder ((ConstructorInfo) ci.GetMetaInfo (), new object[0]);
-			return true;
+			ctor = TypeManager.GetPredefinedConstructor (type, Location.Null, TypeSpec.EmptyTypes);
+			return ctor != null;
 		}
 
 		public bool ResolveConstructor (Location loc, params TypeSpec[] argType)
@@ -1852,15 +1880,172 @@ namespace Mono.CSharp {
 			if (ctor != null)
 				throw new InternalErrorException ("Predefined ctor redefined");
 
-			if (!Resolve (false))
+			if (Resolve (loc) == null)
 				return false;
 
 			ctor = TypeManager.GetPredefinedConstructor (type, loc, argType);
 			return ctor != null;
 		}
+	}
+
+	public class PredefinedDecimalAttribute : PredefinedAttribute
+	{
+		public PredefinedDecimalAttribute (ModuleContainer module, string ns, string name)
+			: base (module, ns, name)
+		{
+		}
+
+		public void EmitAttribute (ParameterBuilder builder, decimal value, Location loc)
+		{
+			if (Resolve (loc) == null)
+				return;
+
+			if (ctor == null && !ResolveConstructor (loc, TypeManager.byte_type, TypeManager.byte_type, TypeManager.uint32_type, TypeManager.uint32_type, TypeManager.uint32_type))
+				return;
+
+			int[] bits = decimal.GetBits (value);
+			AttributeEncoder encoder = new AttributeEncoder (false);
+			encoder.Encode ((byte) (bits[3] >> 16));
+			encoder.Encode ((byte) (bits[3] >> 31));
+			encoder.Encode ((uint) bits[2]);
+			encoder.Encode ((uint) bits[1]);
+			encoder.Encode ((uint) bits[0]);
+			encoder.EncodeEmptyNamedArguments ();
+
+			EmitAttribute (builder, encoder);
+		}
+
+		public void EmitAttribute (FieldBuilder builder, decimal value, Location loc)
+		{
+			if (Resolve (loc) == null)
+				return;
+
+			if (ctor == null && !ResolveConstructor (loc, TypeManager.byte_type, TypeManager.byte_type, TypeManager.uint32_type, TypeManager.uint32_type, TypeManager.uint32_type))
+				return;
+
+			int[] bits = decimal.GetBits (value);
+			AttributeEncoder encoder = new AttributeEncoder (false);
+			encoder.Encode ((byte) (bits[3] >> 16));
+			encoder.Encode ((byte) (bits[3] >> 31));
+			encoder.Encode ((uint) bits[2]);
+			encoder.Encode ((uint) bits[1]);
+			encoder.Encode ((uint) bits[0]);
+			encoder.EncodeEmptyNamedArguments ();
+
+			EmitAttribute (builder, encoder);
+		}
+	}
+
+	public class PredefinedDynamicAttribute : PredefinedAttribute
+	{
+		MethodSpec tctor;
+
+		public PredefinedDynamicAttribute (ModuleContainer module, string ns, string name)
+			: base (module, ns, name)
+		{
+		}
+
+		public void EmitAttribute (FieldBuilder builder, TypeSpec type, Location loc)
+		{
+			if (ResolveTransformationCtor (loc)) {
+				var cab = new CustomAttributeBuilder ((ConstructorInfo) tctor.GetMetaInfo (), new object[] { GetTransformationFlags (type) });
+				builder.SetCustomAttribute (cab);
+			}
+		}
+
+		public void EmitAttribute (ParameterBuilder builder, TypeSpec type, Location loc)
+		{
+			if (ResolveTransformationCtor (loc)) {
+				var cab = new CustomAttributeBuilder ((ConstructorInfo) tctor.GetMetaInfo (), new object[] { GetTransformationFlags (type) });
+				builder.SetCustomAttribute (cab);
+			}
+		}
+
+		public void EmitAttribute (PropertyBuilder builder, TypeSpec type, Location loc)
+		{
+			if (ResolveTransformationCtor (loc)) {
+				var cab = new CustomAttributeBuilder ((ConstructorInfo) tctor.GetMetaInfo (), new object[] { GetTransformationFlags (type) });
+				builder.SetCustomAttribute (cab);
+			}
+		}
+
+		public void EmitAttribute (TypeBuilder builder, TypeSpec type, Location loc)
+		{
+			if (ResolveTransformationCtor (loc)) {
+				var cab = new CustomAttributeBuilder ((ConstructorInfo) tctor.GetMetaInfo (), new object[] { GetTransformationFlags (type) });
+				builder.SetCustomAttribute (cab);
+			}
+		}
+
+		//
+		// When any element of the type is a dynamic type
+		//
+		// This method builds a transformation array for dynamic types
+		// used in places where DynamicAttribute cannot be applied to.
+		// It uses bool flag when type is of dynamic type and each
+		// section always starts with "false" for some reason.
+		//
+		// LAMESPEC: This should be part of C# specification
+		// 
+		// Example: Func<dynamic, int, dynamic[]>
+		// Transformation: { false, true, false, false, true }
+		//
+		static bool[] GetTransformationFlags (TypeSpec t)
+		{
+			bool[] element;
+			var ac = t as ArrayContainer;
+			if (ac != null) {
+				element = GetTransformationFlags (ac.Element);
+				if (element == null)
+					return null;
+
+				bool[] res = new bool[element.Length + 1];
+				res[0] = false;
+				Array.Copy (element, 0, res, 1, element.Length);
+				return res;
+			}
+
+			if (t == null)
+				return null;
+
+			if (t.IsGeneric) {
+				List<bool> transform = null;
+				var targs = t.TypeArguments;
+				for (int i = 0; i < targs.Length; ++i) {
+					element = GetTransformationFlags (targs[i]);
+					if (element != null) {
+						if (transform == null) {
+							transform = new List<bool> ();
+							for (int ii = 0; ii <= i; ++ii)
+								transform.Add (false);
+						}
+
+						transform.AddRange (element);
+					} else if (transform != null) {
+						transform.Add (false);
+					}
+				}
+
+				if (transform != null)
+					return transform.ToArray ();
+			}
+
+			if (t == InternalType.Dynamic)
+				return new bool[] { true };
+
+			return null;
+		}
+
+		bool ResolveTransformationCtor (Location loc)
+		{
+			if (tctor != null)
+				return true;
+
+			if (Resolve (loc) == null)
+				return false;
 
-		public TypeSpec Type {
-			get { return type; }
+			tctor = TypeManager.GetPredefinedConstructor (type, Location.Null, ArrayContainer.MakeType (TypeManager.bool_type));
+			return tctor != null;
 		}
 	}
 }
diff --git a/mcs/mcs/cfold.cs b/mcs/mcs/cfold.cs
index e31a1ba..36211cd 100644
--- a/mcs/mcs/cfold.cs
+++ b/mcs/mcs/cfold.cs
@@ -193,6 +193,23 @@ namespace Mono.CSharp {
 
 			switch (oper){
 			case Binary.Operator.BitwiseOr:
+				//
+				// bool? operator &(bool? x, bool? y);
+				//
+				if ((lt == TypeManager.bool_type && right is NullLiteral) ||
+					(rt == TypeManager.bool_type && left is NullLiteral)) {
+					var b = new Nullable.LiftedBinaryOperator (oper, left, right, loc).Resolve (ec);
+
+					// false | null => null
+					// null | false => null
+					if ((right is NullLiteral && left.IsDefaultValue) || (left is NullLiteral && right.IsDefaultValue))
+						return Nullable.LiftedNull.CreateFromExpression (ec, b);
+
+					// true | null => true
+					// null | true => true
+					return ReducedExpression.Create (new BoolConstant (true, loc).Resolve (ec), b);					
+				}
+
 				if (!DoBinaryNumericPromotions (ec, ref left, ref right))
 					return null;
 
@@ -220,6 +237,23 @@ namespace Mono.CSharp {
 				break;
 				
 			case Binary.Operator.BitwiseAnd:
+				//
+				// bool? operator &(bool? x, bool? y);
+				//
+				if ((lt == TypeManager.bool_type && right is NullLiteral) ||
+					(rt == TypeManager.bool_type && left is NullLiteral)) {
+					var b = new Nullable.LiftedBinaryOperator (oper, left, right, loc).Resolve (ec);
+
+					// false & null => false
+					// null & false => false
+					if ((right is NullLiteral && left.IsDefaultValue) || (left is NullLiteral && right.IsDefaultValue))
+						return ReducedExpression.Create (new BoolConstant (false, loc).Resolve (ec), b);
+
+					// true & null => null
+					// null & true => null
+					return Nullable.LiftedNull.CreateFromExpression (ec, b);
+				}
+
 				if (!DoBinaryNumericPromotions (ec, ref left, ref right))
 					return null;
 				
@@ -443,6 +477,11 @@ namespace Mono.CSharp {
 					return new EnumConstant (result, lt);
 				}
 
+				if (left is NullLiteral && right is NullLiteral) {
+					var lifted_int = new Nullable.NullableType (TypeManager.int32_type, loc).ResolveAsTypeTerminal (ec, false);
+					return (Constant) new Nullable.LiftedBinaryOperator (oper, lifted_int, right, loc).Resolve (ec);
+				}
+
 				if (!DoBinaryNumericPromotions (ec, ref left, ref right))
 					return null;
 
@@ -534,6 +573,11 @@ namespace Mono.CSharp {
 				return result;
 				
 			case Binary.Operator.Multiply:
+				if (left is NullLiteral && right is NullLiteral) {
+					var lifted_int = new Nullable.NullableType (TypeManager.int32_type, loc).ResolveAsTypeTerminal (ec, false);
+					return (Constant) new Nullable.LiftedBinaryOperator (oper, lifted_int, right, loc).Resolve (ec);
+				}
+
 				if (!DoBinaryNumericPromotions (ec, ref left, ref right))
 					return null;
 
@@ -624,6 +668,11 @@ namespace Mono.CSharp {
 				break;
 
 			case Binary.Operator.Division:
+				if (left is NullLiteral && right is NullLiteral) {
+					var lifted_int = new Nullable.NullableType (TypeManager.int32_type, loc).ResolveAsTypeTerminal (ec, false);
+					return (Constant) new Nullable.LiftedBinaryOperator (oper, lifted_int, right, loc).Resolve (ec);
+				}
+
 				if (!DoBinaryNumericPromotions (ec, ref left, ref right))
 					return null;
 
@@ -718,6 +767,11 @@ namespace Mono.CSharp {
 				break;
 				
 			case Binary.Operator.Modulus:
+				if (left is NullLiteral && right is NullLiteral) {
+					var lifted_int = new Nullable.NullableType (TypeManager.int32_type, loc).ResolveAsTypeTerminal (ec, false);
+					return (Constant) new Nullable.LiftedBinaryOperator (oper, lifted_int, right, loc).Resolve (ec);
+				}
+
 				if (!DoBinaryNumericPromotions (ec, ref left, ref right))
 					return null;
 
@@ -802,6 +856,11 @@ namespace Mono.CSharp {
 				// There is no overflow checking on left shift
 				//
 			case Binary.Operator.LeftShift:
+				if (left is NullLiteral && right is NullLiteral) {
+					var lifted_int = new Nullable.NullableType (TypeManager.int32_type, loc).ResolveAsTypeTerminal (ec, false);
+					return (Constant) new Nullable.LiftedBinaryOperator (oper, lifted_int, right, loc).Resolve (ec);
+				}
+
 				IntConstant ic = right.ConvertImplicitly (ec, TypeManager.int32_type) as IntConstant;
 				if (ic == null){
 					Binary.Error_OperatorCannotBeApplied (ec, left, right, oper, loc);
@@ -816,6 +875,10 @@ namespace Mono.CSharp {
 				if (left.Type == TypeManager.uint32_type)
 					return new UIntConstant (((UIntConstant)left).Value << lshift_val, left.Location);
 
+				// null << value => null
+				if (left is NullLiteral)
+					return (Constant) new Nullable.LiftedBinaryOperator (oper, left, right, loc).Resolve (ec);
+
 				left = left.ConvertImplicitly (ec, TypeManager.int32_type);
 				if (left.Type == TypeManager.int32_type)
 					return new IntConstant (((IntConstant)left).Value << lshift_val, left.Location);
@@ -827,6 +890,11 @@ namespace Mono.CSharp {
 				// There is no overflow checking on right shift
 				//
 			case Binary.Operator.RightShift:
+				if (left is NullLiteral && right is NullLiteral) {
+					var lifted_int = new Nullable.NullableType (TypeManager.int32_type, loc).ResolveAsTypeTerminal (ec, false);
+					return (Constant) new Nullable.LiftedBinaryOperator (oper, lifted_int, right, loc).Resolve (ec);
+				}
+
 				IntConstant sic = right.ConvertImplicitly (ec, TypeManager.int32_type) as IntConstant;
 				if (sic == null){
 					Binary.Error_OperatorCannotBeApplied (ec, left, right, oper, loc); ;
@@ -840,6 +908,10 @@ namespace Mono.CSharp {
 				if (left.Type == TypeManager.uint32_type)
 					return new UIntConstant (((UIntConstant)left).Value >> rshift_val, left.Location);
 
+				// null >> value => null
+				if (left is NullLiteral)
+					return (Constant) new Nullable.LiftedBinaryOperator (oper, left, right, loc).Resolve (ec);
+
 				left = left.ConvertImplicitly (ec, TypeManager.int32_type);
 				if (left.Type == TypeManager.int32_type)
 					return new IntConstant (((IntConstant)left).Value >> rshift_val, left.Location);
@@ -848,7 +920,9 @@ namespace Mono.CSharp {
 				break;
 
 			case Binary.Operator.Equality:
-				if (TypeManager.IsReferenceType (lt) && TypeManager.IsReferenceType (lt)) {
+				if (TypeManager.IsReferenceType (lt) && TypeManager.IsReferenceType (rt) ||
+					(left is Nullable.LiftedNull && right.IsNull) ||
+					(right is Nullable.LiftedNull && left.IsNull)) {
 					if (left.IsNull || right.IsNull) {
 						return ReducedExpression.Create (
 							new BoolConstant (left.IsNull == right.IsNull, left.Location).Resolve (ec),
@@ -890,7 +964,9 @@ namespace Mono.CSharp {
 				return new BoolConstant (bool_res, left.Location);
 
 			case Binary.Operator.Inequality:
-				if (TypeManager.IsReferenceType (lt) && TypeManager.IsReferenceType (lt)) {
+				if (TypeManager.IsReferenceType (lt) && TypeManager.IsReferenceType (rt) ||
+					(left is Nullable.LiftedNull && right.IsNull) ||
+					(right is Nullable.LiftedNull && left.IsNull)) {
 					if (left.IsNull || right.IsNull) {
 						return ReducedExpression.Create (
 							new BoolConstant (left.IsNull != right.IsNull, left.Location).Resolve (ec),
@@ -932,6 +1008,17 @@ namespace Mono.CSharp {
 				return new BoolConstant (bool_res, left.Location);
 
 			case Binary.Operator.LessThan:
+				if (right is NullLiteral) {
+					if (left is NullLiteral) {
+						var lifted_int = new Nullable.NullableType (TypeManager.int32_type, loc).ResolveAsTypeTerminal (ec, false);
+						return (Constant) new Nullable.LiftedBinaryOperator (oper, lifted_int, right, loc).Resolve (ec);
+					}
+
+					if (left is Nullable.LiftedNull) {
+						return (Constant) new Nullable.LiftedBinaryOperator (oper, left, right, loc).Resolve (ec);
+					}
+				}
+
 				if (!DoBinaryNumericPromotions (ec, ref left, ref right))
 					return null;
 
@@ -960,6 +1047,17 @@ namespace Mono.CSharp {
 				return new BoolConstant (bool_res, left.Location);
 				
 			case Binary.Operator.GreaterThan:
+				if (right is NullLiteral) {
+					if (left is NullLiteral) {
+						var lifted_int = new Nullable.NullableType (TypeManager.int32_type, loc).ResolveAsTypeTerminal (ec, false);
+						return (Constant) new Nullable.LiftedBinaryOperator (oper, lifted_int, right, loc).Resolve (ec);
+					}
+
+					if (left is Nullable.LiftedNull) {
+						return (Constant) new Nullable.LiftedBinaryOperator (oper, left, right, loc).Resolve (ec);
+					}
+				}
+
 				if (!DoBinaryNumericPromotions (ec, ref left, ref right))
 					return null;
 
@@ -988,6 +1086,17 @@ namespace Mono.CSharp {
 				return new BoolConstant (bool_res, left.Location);
 
 			case Binary.Operator.GreaterThanOrEqual:
+				if (right is NullLiteral) {
+					if (left is NullLiteral) {
+						var lifted_int = new Nullable.NullableType (TypeManager.int32_type, loc).ResolveAsTypeTerminal (ec, false);
+						return (Constant) new Nullable.LiftedBinaryOperator (oper, lifted_int, right, loc).Resolve (ec);
+					}
+
+					if (left is Nullable.LiftedNull) {
+						return (Constant) new Nullable.LiftedBinaryOperator (oper, left, right, loc).Resolve (ec);
+					}
+				}
+
 				if (!DoBinaryNumericPromotions (ec, ref left, ref right))
 					return null;
 
@@ -1016,6 +1125,17 @@ namespace Mono.CSharp {
 				return new BoolConstant (bool_res, left.Location);
 
 			case Binary.Operator.LessThanOrEqual:
+				if (right is NullLiteral) {
+					if (left is NullLiteral) {
+						var lifted_int = new Nullable.NullableType (TypeManager.int32_type, loc).ResolveAsTypeTerminal (ec, false);
+						return (Constant) new Nullable.LiftedBinaryOperator (oper, lifted_int, right, loc).Resolve (ec);
+					}
+
+					if (left is Nullable.LiftedNull) {
+						return (Constant) new Nullable.LiftedBinaryOperator (oper, left, right, loc).Resolve (ec);
+					}
+				}
+
 				if (!DoBinaryNumericPromotions (ec, ref left, ref right))
 					return null;
 
diff --git a/mcs/mcs/class.cs b/mcs/mcs/class.cs
index 765ee96..ca5e9ba 100644
--- a/mcs/mcs/class.cs
+++ b/mcs/mcs/class.cs
@@ -13,22 +13,24 @@
 
 using System;
 using System.Collections.Generic;
-using System.Reflection;
-using System.Reflection.Emit;
-using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
 using System.Security;
 using System.Security.Permissions;
-using System.Text;
 using System.Linq;
 
 #if NET_2_1
 using XmlElement = System.Object;
-#else
-using System.Xml;
 #endif
 
-using Mono.CompilerServices.SymbolWriter;
+#if STATIC
+using SecurityType = System.Collections.Generic.List<IKVM.Reflection.Emit.CustomAttributeBuilder>;
+using IKVM.Reflection;
+using IKVM.Reflection.Emit;
+#else
+using SecurityType = System.Collections.Generic.Dictionary<System.Security.Permissions.SecurityAction, System.Security.PermissionSet>;
+using System.Reflection;
+using System.Reflection.Emit;
+#endif
 
 namespace Mono.CSharp {
 
@@ -85,6 +87,10 @@ namespace Mono.CSharp {
 				get { return tc.IsStatic; }
 			}
 
+			public ModuleContainer Module {
+				get { return tc.Module; }
+			}
+
 			public string GetSignatureForError ()
 			{
 				return tc.GetSignatureForError ();
@@ -166,10 +172,12 @@ namespace Mono.CSharp {
 		List<MemberCore> operators;
 
 		// Holds the compiler generated classes
-		List<CompilerGeneratedClass> compiler_generated;
+		protected List<CompilerGeneratedClass> compiler_generated;
 
 		Dictionary<MethodSpec, Method> hoisted_base_call_proxies;
 
+		Dictionary<string, FullNamedExpression> Cache = new Dictionary<string, FullNamedExpression> ();
+
 		//
 		// Pointers to the default constructor and the default static constructor
 		//
@@ -182,7 +190,7 @@ namespace Mono.CSharp {
 		// This is an arbitrary choice.  We are interested in looking at _some_ non-static field,
 		// and the first one's as good as any.
 		//
-		FieldBase first_nonstatic_field = null;
+		FieldBase first_nonstatic_field;
 
 		//
 		// This one is computed after we can distinguish interfaces
@@ -216,6 +224,8 @@ namespace Mono.CSharp {
 
 		List<TypeContainer> partial_parts;
 
+		public int DynamicSitesCounter;
+
 		/// <remarks>
 		///  The pending methods that need to be implemented
 		//   (interfaces or abstract methods)
@@ -269,6 +279,18 @@ namespace Mono.CSharp {
 			}
 		}
 
+		public virtual AssemblyDefinition DeclaringAssembly {
+			get {
+				return Module.DeclaringAssembly;
+			}
+		}
+
+		IAssemblyDefinition ITypeDefinition.DeclaringAssembly {
+			get {
+				return Module.DeclaringAssembly;
+			}
+		}
+
 		public TypeSpec Definition {
 			get {
 				return spec;
@@ -392,9 +414,10 @@ namespace Mono.CSharp {
 			RemoveMemberType (next_part);
 		}
 		
-		public void AddDelegate (Delegate d)
+		public virtual TypeSpec AddDelegate (Delegate d)
 		{
 			AddTypeContainer (d);
+			return null;
 		}
 
 		private void AddMemberToList (MemberCore mc, List<MemberCore> alist, bool isexplicit)
@@ -437,8 +460,7 @@ namespace Mono.CSharp {
 		public void AddConstructor (Constructor c)
 		{
 			bool is_static = (c.ModFlags & Modifiers.STATIC) != 0;
-			if (!AddToContainer (c, is_static ?
-				ConstructorBuilder.ConstructorName : ConstructorBuilder.TypeConstructorName))
+			if (!AddToContainer (c, is_static ? Constructor.ConstructorName : Constructor.TypeConstructorName))
 				return;
 			
 			if (is_static && c.ParameterInfo.IsEmpty){
@@ -632,12 +654,6 @@ namespace Mono.CSharp {
 			}
 		}
 
-		public IList<CompilerGeneratedClass> CompilerGeneratedClasses {
-			get {
-				return compiler_generated;
-			}
-		}
-
 		protected override TypeAttributes TypeAttr {
 			get {
 				return ModifiersExtensions.TypeAttr (ModFlags, IsTopLevel) | base.TypeAttr;
@@ -667,7 +683,7 @@ namespace Mono.CSharp {
 				if (OptAttributes == null)
 					return false;
 
-				return OptAttributes.Contains (Compiler.PredefinedAttributes.ComImport);
+				return OptAttributes.Contains (Module.PredefinedAttributes.ComImport);
 			}
 		}
 
@@ -781,7 +797,7 @@ namespace Mono.CSharp {
 			if (OptAttributes == null)
 				return null;
 
-			Attribute a = OptAttributes.Search (Compiler.PredefinedAttributes.CoClass);
+			Attribute a = OptAttributes.Search (Module.PredefinedAttributes.CoClass);
 			if (a == null)
 				return null;
 
@@ -835,12 +851,14 @@ namespace Mono.CSharp {
 					continue;
 
 				if (i == 0 && Kind == MemberKind.Class && !fne_resolved.Type.IsInterface) {
-					if (fne_resolved.Type == InternalType.Dynamic)
+					if (fne_resolved.Type == InternalType.Dynamic) {
 						Report.Error (1965, Location, "Class `{0}' cannot derive from the dynamic type",
 							GetSignatureForError ());
-					else
-						base_type = fne_resolved.Type;
 
+						continue;
+					}
+					
+					base_type = fne_resolved.Type;
 					base_class = fne_resolved;
 					continue;
 				}
@@ -998,17 +1016,14 @@ namespace Mono.CSharp {
 			int type_size = Kind == MemberKind.Struct && first_nonstatic_field == null ? 1 : 0;
 
 			if (IsTopLevel) {
-				if (Compiler.GlobalRootNamespace.IsNamespace (Name)) {
+				// TODO: Completely wrong
+				if (Module.GlobalRootNamespace.IsNamespace (Name)) {
 					Report.Error (519, Location, "`{0}' clashes with a predefined namespace", Name);
-					return false;
 				}
 
-				ModuleBuilder builder = Module.Compiled.Builder;
-				TypeBuilder = builder.DefineType (Name, TypeAttr, null, type_size);
+				TypeBuilder = Module.CreateBuilder (Name, TypeAttr, type_size);
 			} else {
-				TypeBuilder builder = Parent.TypeBuilder;
-
-				TypeBuilder = builder.DefineNestedType (Basename, TypeAttr, null, type_size);
+				TypeBuilder = Parent.TypeBuilder.DefineNestedType (Basename, TypeAttr, null, type_size);
 			}
 
 			spec.SetMetaInfo (TypeBuilder);
@@ -1064,7 +1079,7 @@ namespace Mono.CSharp {
 				var cloned_params = ParametersCompiled.CreateFullyResolved (base_parameters, method.Parameters.Types);
 				if (method.Parameters.HasArglist) {
 					cloned_params.FixedParameters[0] = new Parameter (null, "__arglist", Parameter.Modifier.NONE, null, Location);
-					cloned_params.Types[0] = TypeManager.runtime_argument_handle_type;
+					cloned_params.Types[0] = Module.PredefinedTypes.RuntimeArgumentHandle.Resolve (Location);
 				}
 
 				GenericMethod generic_method;
@@ -1134,13 +1149,15 @@ namespace Mono.CSharp {
 					Report.Error (529, Location,
 						"Inherited interface `{0}' causes a cycle in the interface hierarchy of `{1}'",
 					    GetSignatureForError (), cycle.GetSignatureForError ());
+
+					iface_exprs = null;
 				} else {
 					Report.Error (146, Location,
 						"Circular base class dependency involving `{0}' and `{1}'",
 						GetSignatureForError (), cycle.GetSignatureForError ());
-				}
 
-				base_type = null;
+					base_type = null;
+				}
 			}
 
 			if (iface_exprs != null) {
@@ -1248,17 +1265,17 @@ namespace Mono.CSharp {
 		//
 		// Defines the type in the appropriate ModuleBuilder or TypeBuilder.
 		//
-		public TypeBuilder CreateType ()
+		public bool CreateType ()
 		{
 			if (TypeBuilder != null)
-				return TypeBuilder;
+				return !error;
 
 			if (error)
-				return null;
+				return false;
 
 			if (!CreateTypeBuilder ()) {
 				error = true;
-				return null;
+				return false;
 			}
 
 			if (partial_parts != null) {
@@ -1271,36 +1288,31 @@ namespace Mono.CSharp {
 
 			if (Types != null) {
 				foreach (TypeContainer tc in Types) {
-					if (tc.CreateType () == null) {
-						error = true;
-						return null;
-					}
+					tc.CreateType ();
 				}
 			}
 
-			return TypeBuilder;
+			return true;
 		}
 
-		public override TypeBuilder DefineType ()
+		public override void DefineType ()
 		{
 			if (error)
-				return null;
+				return;
 			if (type_defined)
-				return TypeBuilder;
+				return;
 
 			type_defined = true;
 
 			if (!DefineBaseTypes ()) {
 				error = true;
-				return null;
+				return;
 			}
 
 			if (!DefineNestedTypes ()) {
 				error = true;
-				return null;
+				return;
 			}
-
-			return TypeBuilder;
 		}
 
 		public override void SetParameterInfo (List<Constraints> constraints_list)
@@ -1332,7 +1344,7 @@ namespace Mono.CSharp {
 		// Replaces normal spec with predefined one when compiling corlib
 		// and this type container defines predefined type
 		//
-		public void SetPredefinedSpec (PredefinedTypeSpec spec)
+		public void SetPredefinedSpec (BuildinTypeSpec spec)
 		{
 			this.spec = spec;
 		}
@@ -1399,8 +1411,7 @@ namespace Mono.CSharp {
 		{
 			if (Types != null) {
 				foreach (TypeContainer tc in Types)
-					if (tc.DefineType () == null)
-						return false;
+					tc.DefineType ();
 			}
 
 			return true;
@@ -1460,6 +1471,9 @@ namespace Mono.CSharp {
 		{
 			if (iface_exprs != null) {
 				foreach (TypeExpr iface in iface_exprs) {
+					if (iface == null)
+						continue;
+
 					var iface_type = iface.Type;
 
 					// Ensure the base is always setup
@@ -1491,7 +1505,7 @@ namespace Mono.CSharp {
 				}
 			}
 
-			if (base_type_expr != null) {
+			if (base_type != null) {
 				ObsoleteAttribute obsolete_attr = base_type.GetAttributeObsolete ();
 				if (obsolete_attr != null && !IsObsolete)
 					AttributeTester.Report_ObsoleteMessage (obsolete_attr, base_type.GetSignatureForError (), Location, Report);
@@ -1499,9 +1513,12 @@ namespace Mono.CSharp {
 				var ct = base_type_expr as GenericTypeExpr;
 				if (ct != null)
 					ct.CheckConstraints (this);
-			}
 
-			if (base_type != null) {
+				if (base_type.Interfaces != null) {
+					foreach (var iface in base_type.Interfaces)
+						spec.AddInterface (iface);
+				}
+
 				var baseContainer = base_type.MemberDefinition as ClassOrStruct;
 				if (baseContainer != null) {
 					baseContainer.Define ();
@@ -1610,13 +1627,16 @@ namespace Mono.CSharp {
 			if (!seen_normal_indexers)
 				return;
 
-			PredefinedAttribute pa = Compiler.PredefinedAttributes.DefaultMember;
+			PredefinedAttribute pa = Module.PredefinedAttributes.DefaultMember;
 			if (pa.Constructor == null &&
 				!pa.ResolveConstructor (Location, TypeManager.string_type))
 				return;
 
-			CustomAttributeBuilder cb = new CustomAttributeBuilder (pa.Constructor, new string [] { GetAttributeDefaultMember () });
-			TypeBuilder.SetCustomAttribute (cb);
+			var encoder = new AttributeEncoder (false);
+			encoder.Encode (GetAttributeDefaultMember ());
+			encoder.EncodeEmptyNamedArguments ();
+
+			pa.EmitAttribute (TypeBuilder, encoder);
 		}
 
 		protected virtual void CheckEqualsAndGetHashCode ()
@@ -1708,7 +1728,7 @@ namespace Mono.CSharp {
 						if (f.OptAttributes != null || PartialContainer.HasStructLayout)
 							continue;
 						
-						Constant c = New.Constantify (f.MemberType);
+						Constant c = New.Constantify (f.MemberType, f.Location);
 						Report.Warning (649, 4, f.Location, "Field `{0}' is never assigned to, and will always have its default value `{1}'",
 							f.GetSignatureForError (), c == null ? "null" : c.AsString ());
 					}
@@ -1749,7 +1769,7 @@ namespace Mono.CSharp {
 			}
 
 			if ((ModFlags & Modifiers.COMPILER_GENERATED) != 0 && !Parent.IsCompilerGenerated)
-				Compiler.PredefinedAttributes.CompilerGenerated.EmitAttribute (TypeBuilder);
+				Module.PredefinedAttributes.CompilerGenerated.EmitAttribute (TypeBuilder);
 
 			base.Emit ();
 		}
@@ -1855,7 +1875,7 @@ namespace Mono.CSharp {
 			}
 		}
 
-		public void CloseType ()
+		public virtual void CloseType ()
 		{
 			if ((caching_flags & Flags.CloseTypeCreated) != 0)
 				return;
@@ -1863,8 +1883,12 @@ namespace Mono.CSharp {
 			// Close base type container first to avoid TypeLoadException
 			if (spec.BaseType != null) {
 				var btype = spec.BaseType.MemberDefinition as TypeContainer;
-				if (btype != null)
+				if (btype != null) {
 					btype.CloseType ();
+
+					if ((caching_flags & Flags.CloseTypeCreated) != 0)
+						return;
+				}
 			}
 
 			try {
@@ -2048,11 +2072,87 @@ namespace Mono.CSharp {
 			return false;
 		}
 
-		public MemberCache LoadMembers (TypeSpec declaringType)
+		bool ITypeDefinition.IsInternalAsPublic (IAssemblyDefinition assembly)
+		{
+			return Module.DeclaringAssembly == assembly;
+		}
+
+		public void LoadMembers (TypeSpec declaringType, bool onlyTypes, ref MemberCache cache)
 		{
 			throw new NotSupportedException ("Not supported for compiled definition " + GetSignatureForError ());
 		}
 
+		//
+		// Public function used to locate types.
+		//
+		// Set 'ignore_cs0104' to true if you want to ignore cs0104 errors.
+		//
+		// Returns: Type or null if they type can not be found.
+		//
+		public override FullNamedExpression LookupNamespaceOrType (string name, int arity, Location loc, bool ignore_cs0104)
+		{
+			FullNamedExpression e;
+			if (arity == 0 && Cache.TryGetValue (name, out e))
+				return e;
+
+			e = null;
+			int errors = Report.Errors;
+
+			if (arity == 0) {
+				TypeParameter[] tp = CurrentTypeParameters;
+				if (tp != null) {
+					TypeParameter tparam = TypeParameter.FindTypeParameter (tp, name);
+					if (tparam != null)
+						e = new TypeParameterExpr (tparam, Location.Null);
+				}
+			}
+
+			if (e == null) {
+				TypeSpec t = LookupNestedTypeInHierarchy (name, arity);
+
+				if (t != null)
+					e = new TypeExpression (t, Location.Null);
+				else if (Parent != null) {
+					e = Parent.LookupNamespaceOrType (name, arity, loc, ignore_cs0104);
+				} else
+					e = NamespaceEntry.LookupNamespaceOrType (name, arity, loc, ignore_cs0104);
+			}
+
+			// TODO MemberCache: How to cache arity stuff ?
+			if (errors == Report.Errors && arity == 0)
+				Cache[name] = e;
+
+			return e;
+		}
+
+		TypeSpec LookupNestedTypeInHierarchy (string name, int arity)
+		{
+			// TODO: GenericMethod only
+			if (PartialContainer == null)
+				return null;
+
+			// Has any nested type
+			// Does not work, because base type can have
+			//if (PartialContainer.Types == null)
+			//	return null;
+
+			var container = PartialContainer.CurrentType;
+
+			// Is not Root container
+			if (container == null)
+				return null;
+
+			var t = MemberCache.FindNestedType (container, name, arity);
+			if (t == null)
+				return null;
+
+			// FIXME: Breaks error reporting
+			if (!t.IsAccessible (CurrentType))
+				return null;
+
+			return t;
+		}
+
 		public void Mark_HasEquals ()
 		{
 			cached_method |= CachedMethods.Equals;
@@ -2109,7 +2209,7 @@ namespace Mono.CSharp {
 
 	public abstract class ClassOrStruct : TypeContainer
 	{
-		Dictionary<SecurityAction, PermissionSet> declarative_security;
+		SecurityType declarative_security;
 
 		public ClassOrStruct (NamespaceEntry ns, DeclSpace parent,
 				      MemberName name, Attributes attrs, MemberKind kind)
@@ -2151,22 +2251,23 @@ namespace Mono.CSharp {
 						Report.Warning (67, 3, e.Location, "The event `{0}' is never used", e.GetSignatureForError ());
 				}
 			}
+
+			if (types != null) {
+				foreach (var t in types)
+					t.VerifyMembers ();
+			}
 		}
 
 		public override void ApplyAttributeBuilder (Attribute a, MethodSpec ctor, byte[] cdata, PredefinedAttributes pa)
 		{
 			if (a.IsValidSecurityAttribute ()) {
-				if (declarative_security == null)
-					declarative_security = new Dictionary<SecurityAction, PermissionSet> ();
-
-				a.ExtractSecurityPermissionSet (declarative_security);
+				a.ExtractSecurityPermissionSet (ctor, ref declarative_security);
 				return;
 			}
 
 			if (a.Type == pa.StructLayout) {
 				PartialContainer.HasStructLayout = true;
-
-				if (a.GetLayoutKindValue () == LayoutKind.Explicit)
+				if (a.IsExplicitLayoutKind ())
 					PartialContainer.HasExplicitLayout = true;
 			}
 
@@ -2226,7 +2327,11 @@ namespace Mono.CSharp {
 
 			if (declarative_security != null) {
 				foreach (var de in declarative_security) {
+#if STATIC
+					TypeBuilder.__AddDeclarativeSecurity (de);
+#else
 					TypeBuilder.AddDeclarativeSecurity (de.Key, de.Value);
+#endif
 				}
 			}
 		}
@@ -2397,14 +2502,10 @@ namespace Mono.CSharp {
 			base.Emit ();
 
 			if ((ModFlags & Modifiers.METHOD_EXTENSION) != 0)
-				Compiler.PredefinedAttributes.Extension.EmitAttribute (TypeBuilder);
+				Module.PredefinedAttributes.Extension.EmitAttribute (TypeBuilder);
 
-			var trans_flags = TypeManager.HasDynamicTypeUsed (base_type);
-			if (trans_flags != null) {
-				var pa = Compiler.PredefinedAttributes.DynamicTransform;
-				if (pa.Constructor != null || pa.ResolveConstructor (Location, ArrayContainer.MakeType (TypeManager.bool_type))) {
-					TypeBuilder.SetCustomAttribute (new CustomAttributeBuilder (pa.Constructor, new object[] { trans_flags }));
-				}
+			if (base_type != null && base_type.HasDynamicElement) {
+				Module.PredefinedAttributes.Dynamic.EmitAttribute (TypeBuilder, base_type, Location);
 			}
 		}
 
@@ -2436,7 +2537,7 @@ namespace Mono.CSharp {
 						GetSignatureForError (), base_class.GetSignatureForError ());
 				}
 
-				if (base_type is PredefinedTypeSpec && !(spec is PredefinedTypeSpec) &&
+				if (base_type is BuildinTypeSpec && !(spec is BuildinTypeSpec) &&
 					(base_type == TypeManager.enum_type || base_type == TypeManager.value_type || base_type == TypeManager.multicast_delegate_type ||
 					base_type == TypeManager.delegate_type || base_type == TypeManager.array_type)) {
 					Report.Error (644, Location, "`{0}' cannot derive from special class `{1}'",
@@ -2473,7 +2574,7 @@ namespace Mono.CSharp {
 			if (OptAttributes == null)
 				return null;
 
-			Attribute[] attrs = OptAttributes.SearchMulti (Compiler.PredefinedAttributes.Conditional);
+			Attribute[] attrs = OptAttributes.SearchMulti (Module.PredefinedAttributes.Conditional);
 			if (attrs == null)
 				return null;
 
@@ -2537,13 +2638,19 @@ namespace Mono.CSharp {
 			//
 			// When struct constains fixed fixed and struct layout has explicitly
 			// set CharSet, its value has to be propagated to compiler generated
-			// fixed field types
+			// fixed types
 			//
-			if (a.Type == pa.StructLayout && Fields != null && a.HasField ("CharSet")) {
+			if (a.Type == pa.StructLayout && Fields != null) {
+				var value = a.GetNamedValue ("CharSet");
+				if (value == null)
+					return;
+
 				for (int i = 0; i < Fields.Count; ++i) {
 					FixedField ff = Fields [i] as FixedField;
-					if (ff != null)
-						ff.SetCharSet (TypeBuilder.Attributes);
+					if (ff == null)
+						continue;
+
+					ff.CharSet = (CharSet) System.Enum.Parse (typeof (CharSet), value.GetValue ().ToString ());
 				}
 			}
 		}
@@ -2562,7 +2669,7 @@ namespace Mono.CSharp {
 				if (!ftype.IsStruct)
 					continue;
 
-				if (ftype is PredefinedTypeSpec)
+				if (ftype is BuildinTypeSpec)
 					continue;
 
 				foreach (var targ in ftype.TypeArguments) {
@@ -2877,13 +2984,13 @@ namespace Mono.CSharp {
 
 				ObsoleteAttribute oa = base_member.GetAttributeObsolete ();
 				if (oa != null) {
-					if (OptAttributes == null || !OptAttributes.Contains (Compiler.PredefinedAttributes.Obsolete)) {
+					if (OptAttributes == null || !OptAttributes.Contains (Module.PredefinedAttributes.Obsolete)) {
 						Report.SymbolRelatedToPreviousError (base_member);
 						Report.Warning (672, 1, Location, "Member `{0}' overrides obsolete member `{1}'. Add the Obsolete attribute to `{0}'",
 							GetSignatureForError (), TypeManager.GetFullNameSignature (base_member));
 					}
 				} else {
-					if (OptAttributes != null && OptAttributes.Contains (Compiler.PredefinedAttributes.Obsolete)) {
+					if (OptAttributes != null && OptAttributes.Contains (Module.PredefinedAttributes.Obsolete)) {
 						Report.SymbolRelatedToPreviousError (base_member);
 						Report.Warning (809, 1, Location, "Obsolete member `{0}' overrides non-obsolete member `{1}'",
 							GetSignatureForError (), TypeManager.GetFullNameSignature (base_member));
@@ -2907,13 +3014,15 @@ namespace Mono.CSharp {
 			} else {
 				if ((ModFlags & Modifiers.NEW) == 0) {
 					ModFlags |= Modifiers.NEW;
-					Report.SymbolRelatedToPreviousError (base_member);
-					if (!IsInterface && (base_member.Modifiers & (Modifiers.ABSTRACT | Modifiers.VIRTUAL | Modifiers.OVERRIDE)) != 0) {
-						Report.Warning (114, 2, Location, "`{0}' hides inherited member `{1}'. To make the current member override that implementation, add the override keyword. Otherwise add the new keyword",
-							GetSignatureForError (), base_member.GetSignatureForError ());
-					} else {
-						Report.Warning (108, 2, Location, "`{0}' hides inherited member `{1}'. Use the new keyword if hiding was intended",
-							GetSignatureForError (), base_member.GetSignatureForError ());
+					if (!IsCompilerGenerated) {
+						Report.SymbolRelatedToPreviousError (base_member);
+						if (!IsInterface && (base_member.Modifiers & (Modifiers.ABSTRACT | Modifiers.VIRTUAL | Modifiers.OVERRIDE)) != 0) {
+							Report.Warning (114, 2, Location, "`{0}' hides inherited member `{1}'. To make the current member override that implementation, add the override keyword. Otherwise add the new keyword",
+								GetSignatureForError (), base_member.GetSignatureForError ());
+						} else {
+							Report.Warning (108, 2, Location, "`{0}' hides inherited member `{1}'. Use the new keyword if hiding was intended",
+								GetSignatureForError (), base_member.GetSignatureForError ());
+						}
 					}
 				}
 
@@ -2979,33 +3088,29 @@ namespace Mono.CSharp {
 
 			if ((base_classp & (Modifiers.PROTECTED | Modifiers.INTERNAL)) == (Modifiers.PROTECTED | Modifiers.INTERNAL)) {
 				//
+				// It must be at least "protected"
+				//
+				if ((thisp & Modifiers.PROTECTED) == 0) {
+					return false;
+				}
+
+				//
 				// when overriding protected internal, the method can be declared
 				// protected internal only within the same assembly or assembly
 				// which has InternalsVisibleTo
 				//
-				if ((thisp & (Modifiers.PROTECTED | Modifiers.INTERNAL)) == (Modifiers.PROTECTED | Modifiers.INTERNAL)) {
-					return TypeManager.IsThisOrFriendAssembly (this_member.Assembly, base_member.Assembly);
-				} 
-				if ((thisp & Modifiers.PROTECTED) != Modifiers.PROTECTED) {
-					//
-					// if it's not "protected internal", it must be "protected"
-					//
-
-					return false;
-				}
-				if (this_member.Parent.PartialContainer.Module.Assembly == base_member.Assembly) {
-					//
-					// protected within the same assembly - an error
-					//
-					return false;
+				if ((thisp & Modifiers.INTERNAL) != 0) {
+					return base_member.DeclaringType.MemberDefinition.IsInternalAsPublic (this_member.Module.DeclaringAssembly);
 				}
-				if ((thisp & ~(Modifiers.PROTECTED | Modifiers.INTERNAL)) !=
-					   (base_classp & ~(Modifiers.PROTECTED | Modifiers.INTERNAL))) {
-					//
-					// protected ok, but other attributes differ - report an error
-					//
+
+				//
+				// protected overriding protected internal inside same assembly
+				// requires internal modifier as well
+				//
+				if (base_member.DeclaringType.MemberDefinition.IsInternalAsPublic (this_member.Module.DeclaringAssembly)) {
 					return false;
 				}
+
 				return true;
 			}
 
@@ -3126,11 +3231,18 @@ namespace Mono.CSharp {
 
 		protected void Error_CannotChangeAccessModifiers (MemberCore member, MemberSpec base_member)
 		{
+			var base_modifiers = base_member.Modifiers;
+
+			// Remove internal modifier from types which are not internally accessible
+			if ((base_modifiers & Modifiers.AccessibilityMask) == (Modifiers.PROTECTED | Modifiers.INTERNAL) &&
+				!base_member.DeclaringType.MemberDefinition.IsInternalAsPublic (member.Module.DeclaringAssembly))
+				base_modifiers = Modifiers.PROTECTED;
+
 			Report.SymbolRelatedToPreviousError (base_member);
 			Report.Error (507, member.Location,
 				"`{0}': cannot change access modifiers when overriding `{1}' inherited member `{2}'",
 				member.GetSignatureForError (),
-				ModifiersExtensions.AccessibilityName (base_member.Modifiers),
+				ModifiersExtensions.AccessibilityName (base_modifiers),
 				base_member.GetSignatureForError ());
 		}
 
diff --git a/mcs/mcs/codegen.cs b/mcs/mcs/codegen.cs
index 8b0c5d8..662c07e 100644
--- a/mcs/mcs/codegen.cs
+++ b/mcs/mcs/codegen.cs
@@ -1,239 +1,29 @@
 //
 // codegen.cs: The code generator
 //
-// Author:
+// Authors:
 //   Miguel de Icaza (miguel at ximian.com)
+//   Marek Safar (marek.safar at gmail.com)
 //
 // Copyright 2001, 2002, 2003 Ximian, Inc.
 // Copyright 2004 Novell, Inc.
 //
 
-//
-// Please leave this defined on SVN: The idea is that when we ship the
-// compiler to end users, if the compiler crashes, they have a chance
-// to narrow down the problem.   
-//
-// Only remove it if you need to debug locally on your tree.
-//
-//#define PRODUCTION
-
 using System;
-using System.IO;
 using System.Collections.Generic;
-using System.Globalization;
+
+#if STATIC
+using MetaType = IKVM.Reflection.Type;
+using IKVM.Reflection;
+using IKVM.Reflection.Emit;
+#else
+using MetaType = System.Type;
 using System.Reflection;
 using System.Reflection.Emit;
-using System.Runtime.InteropServices;
-using System.Security;
-using System.Security.Cryptography;
-using System.Security.Permissions;
-
-using Mono.Security.Cryptography;
-
-namespace Mono.CSharp {
-
-	/// <summary>
-	///    Code generator class.
-	/// </summary>
-	public class CodeGen {
-		static AppDomain current_domain;
-
-		// Breaks dynamic and repl
-		public static AssemblyClass Assembly;
-
-		static CodeGen ()
-		{
-			Reset ();
-		}
-
-		public static void Reset ()
-		{
-			Assembly = new AssemblyClass ();
-		}
-
-		public static string Basename (string name)
-		{
-			int pos = name.LastIndexOf ('/');
-
-			if (pos != -1)
-				return name.Substring (pos + 1);
-
-			pos = name.LastIndexOf ('\\');
-			if (pos != -1)
-				return name.Substring (pos + 1);
-
-			return name;
-		}
-
-		public static string Dirname (string name)
-		{
-			int pos = name.LastIndexOf ('/');
-
-			if (pos != -1)
-				return name.Substring (0, pos);
-
-			pos = name.LastIndexOf ('\\');
-			if (pos != -1)
-				return name.Substring (0, pos);
-
-			return ".";
-		}
-
-		static public string FileName;
-				
-		//
-		// Initializes the code generator variables for interactive use (repl)
-		//
-		static public void InitDynamic (CompilerContext ctx, string name)
-		{
-			current_domain = AppDomain.CurrentDomain;
-			AssemblyName an = Assembly.GetAssemblyName (name, name);
-			
-			Assembly.Builder = current_domain.DefineDynamicAssembly (an, AssemblyBuilderAccess.Run);
-			RootContext.ToplevelTypes = new ModuleCompiled (ctx, true);
-			RootContext.ToplevelTypes.Builder = Assembly.Builder.DefineDynamicModule (Basename (name), false);
-			Assembly.Name = Assembly.Builder.GetName ();
-		}
-
-		//
-		// Initializes the code generator variables
-		//
-		static public bool Init (string name, string output, bool want_debugging_support, CompilerContext ctx)
-		{
-			FileName = output;
-			AssemblyName an = Assembly.GetAssemblyName (name, output);
-			if (an == null)
-				return false;
-
-			if (an.KeyPair != null) {
-				// If we are going to strong name our assembly make
-				// sure all its refs are strong named
-				foreach (Assembly a in ctx.GlobalRootNamespace.Assemblies) {
-					AssemblyName ref_name = a.GetName ();
-					byte [] b = ref_name.GetPublicKeyToken ();
-					if (b == null || b.Length == 0) {
-						ctx.Report.Error (1577, "Assembly generation failed " +
-								"-- Referenced assembly '" +
-								ref_name.Name +
-								"' does not have a strong name.");
-						//Environment.Exit (1);
-					}
-				}
-			}
-			
-			current_domain = AppDomain.CurrentDomain;
-
-			try {
-				Assembly.Builder = current_domain.DefineDynamicAssembly (an,
-					AssemblyBuilderAccess.RunAndSave, Dirname (name));
-			}
-			catch (ArgumentException) {
-				// specified key may not be exportable outside it's container
-				if (RootContext.StrongNameKeyContainer != null) {
-					ctx.Report.Error (1548, "Could not access the key inside the container `" +
-						RootContext.StrongNameKeyContainer + "'.");
-					Environment.Exit (1);
-				}
-				throw;
-			}
-			catch (CryptographicException) {
-				if ((RootContext.StrongNameKeyContainer != null) || (RootContext.StrongNameKeyFile != null)) {
-					ctx.Report.Error (1548, "Could not use the specified key to strongname the assembly.");
-					Environment.Exit (1);
-				}
-				return false;
-			}
-
-			// Get the complete AssemblyName from the builder
-			// (We need to get the public key and token)
-			Assembly.Name = Assembly.Builder.GetName ();
-
-			//
-			// Pass a path-less name to DefineDynamicModule.  Wonder how
-			// this copes with output in different directories then.
-			// FIXME: figure out how this copes with --output /tmp/blah
-			//
-			// If the third argument is true, the ModuleBuilder will dynamically
-			// load the default symbol writer.
-			//
-			try {
-				RootContext.ToplevelTypes.Builder = Assembly.Builder.DefineDynamicModule (
-					Basename (name), Basename (output), want_debugging_support);
-
-#if !MS_COMPATIBLE
-				// TODO: We should use SymbolWriter from DefineDynamicModule
-				if (want_debugging_support && !SymbolWriter.Initialize (RootContext.ToplevelTypes.Builder, output)) {
-					ctx.Report.Error (40, "Unexpected debug information initialization error `{0}'",
-						"Could not find the symbol writer assembly (Mono.CompilerServices.SymbolWriter.dll)");
-					return false;
-				}
 #endif
-			} catch (ExecutionEngineException e) {
-				ctx.Report.Error (40, "Unexpected debug information initialization error `{0}'",
-					e.Message);
-				return false;
-			}
-
-			return true;
-		}
-
-		static public void Save (string name, bool saveDebugInfo, Report Report)
-		{
-			PortableExecutableKinds pekind;
-			ImageFileMachine machine;
-
-			switch (RootContext.Platform) {
-			case Platform.X86:
-				pekind = PortableExecutableKinds.Required32Bit | PortableExecutableKinds.ILOnly;
-				machine = ImageFileMachine.I386;
-				break;
-			case Platform.X64:
-				pekind = PortableExecutableKinds.ILOnly;
-				machine = ImageFileMachine.AMD64;
-				break;
-			case Platform.IA64:
-				pekind = PortableExecutableKinds.ILOnly;
-				machine = ImageFileMachine.IA64;
-				break;
-			case Platform.AnyCPU:
-			default:
-				pekind = PortableExecutableKinds.ILOnly;
-				machine = ImageFileMachine.I386;
-				break;
-			}
-			try {
-				Assembly.Builder.Save (Basename (name), pekind, machine);
-			}
-			catch (COMException) {
-				if ((RootContext.StrongNameKeyFile == null) || (!RootContext.StrongNameDelaySign))
-					throw;
-
-				// FIXME: it seems Microsoft AssemblyBuilder doesn't like to delay sign assemblies 
-				Report.Error (1548, "Couldn't delay-sign the assembly with the '" +
-					RootContext.StrongNameKeyFile +
-					"', Use MCS with the Mono runtime or CSC to compile this assembly.");
-			}
-			catch (System.IO.IOException io) {
-				Report.Error (16, "Could not write to file `"+name+"', cause: " + io.Message);
-				return;
-			}
-			catch (System.UnauthorizedAccessException ua) {
-				Report.Error (16, "Could not write to file `"+name+"', cause: " + ua.Message);
-				return;
-			}
-			catch (System.NotImplementedException nie) {
-				Report.RuntimeMissingSupport (Location.Null, nie.Message);
-				return;
-			}
-
-			//
-			// Write debuger symbol file
-			//
-			if (saveDebugInfo)
-				SymbolWriter.WriteSymbolFile ();
-			}
-	}
 
+namespace Mono.CSharp
+{
 	/// <summary>
 	///   An Emit Context is created for each body of code (from methods,
 	///   properties bodies, indexer bodies or constructor bodies)
@@ -297,15 +87,20 @@ namespace Mono.CSharp {
 
 		DynamicSiteClass dynamic_site_container;
 
+		// TODO: Replace IMemberContext with MemberCore
 		public EmitContext (IMemberContext rc, ILGenerator ig, TypeSpec return_type)
 		{
 			this.MemberContext = rc;
 			this.ig = ig;
 
 			this.return_type = return_type;
+
+#if STATIC
+			ig.__CleverExceptionBlockAssistance ();
+#endif
 		}
 
-#region Properties
+		#region Properties
 
 		public TypeSpec CurrentType {
 			get { return MemberContext.CurrentType; }
@@ -341,7 +136,7 @@ namespace Mono.CSharp {
 				return return_type;
 			}
 		}
-#endregion
+		#endregion
 
 		/// <summary>
 		///   This is called immediately before emitting an IL opcode to tell the symbol
@@ -377,7 +172,6 @@ namespace Mono.CSharp {
 
 		public void BeginScope ()
 		{
-			ig.BeginScope();
 			SymbolWriter.OpenScope(ig);
 		}
 
@@ -388,7 +182,6 @@ namespace Mono.CSharp {
 
 		public void EndScope ()
 		{
-			ig.EndScope();
 			SymbolWriter.CloseScope(ig);
 		}
 
@@ -401,7 +194,7 @@ namespace Mono.CSharp {
 				var mc = MemberContext.CurrentMemberDefinition as MemberBase;
 				dynamic_site_container = new DynamicSiteClass (CurrentTypeDefinition.Parent.PartialContainer, mc, CurrentTypeParameters);
 
-				RootContext.ToplevelTypes.AddCompilerGeneratedClass (dynamic_site_container);
+				CurrentTypeDefinition.Module.AddCompilerGeneratedClass (dynamic_site_container);
 				dynamic_site_container.CreateType ();
 				dynamic_site_container.DefineType ();
 				dynamic_site_container.ResolveTypeParameters ();
@@ -507,13 +300,7 @@ namespace Mono.CSharp {
 			ig.Emit (opcode, method);
 		}
 
-		// TODO: REMOVE breaks mutator
-		public void Emit (OpCode opcode, FieldBuilder field)
-		{
-			ig.Emit (opcode, field);
-		}
-
-		public void Emit (OpCode opcode, MethodSpec method, Type[] vargs)
+		public void Emit (OpCode opcode, MethodSpec method, MetaType[] vargs)
 		{
 			// TODO MemberCache: This should mutate too
 			ig.EmitCall (opcode, (MethodInfo) method.GetMetaInfo (), vargs);
@@ -850,635 +637,4 @@ namespace Mono.CSharp {
 			return return_value;
 		}
 	}
-
-	public abstract class CommonAssemblyModulClass : Attributable, IMemberContext
-	{
-		public void AddAttributes (List<Attribute> attrs, IMemberContext context)
-		{
-			foreach (Attribute a in attrs)
-				a.AttachTo (this, context);
-
-			if (attributes == null) {
-				attributes = new Attributes (attrs);
-				return;
-			}
-			attributes.AddAttributes (attrs);
-		}
-
-		public virtual void Emit (TypeContainer tc) 
-		{
-			if (OptAttributes == null)
-				return;
-
-			OptAttributes.Emit ();
-		}
-
-		protected Attribute ResolveAttribute (PredefinedAttribute a_type)
-		{
-			Attribute a = OptAttributes.Search (a_type);
-			if (a != null) {
-				a.Resolve ();
-			}
-			return a;
-		}
-
-		#region IMemberContext Members
-
-		public CompilerContext Compiler {
-			get { return RootContext.ToplevelTypes.Compiler; }
-		}
-
-		public TypeSpec CurrentType {
-			get { return null; }
-		}
-
-		public TypeParameter[] CurrentTypeParameters {
-			get { return null; }
-		}
-
-		public MemberCore CurrentMemberDefinition {
-			get { return RootContext.ToplevelTypes; }
-		}
-
-		public string GetSignatureForError ()
-		{
-			return "<module>";
-		}
-
-		public bool HasUnresolvedConstraints {
-			get { return false; }
-		}
-
-		public bool IsObsolete {
-			get { return false; }
-		}
-
-		public bool IsUnsafe {
-			get { return false; }
-		}
-
-		public bool IsStatic {
-			get { return false; }
-		}
-
-		public IList<MethodSpec> LookupExtensionMethod (TypeSpec extensionType, string name, int arity, ref NamespaceEntry scope)
-		{
-			throw new NotImplementedException ();
-		}
-
-		public FullNamedExpression LookupNamespaceOrType (string name, int arity, Location loc, bool ignore_cs0104)
-		{
-			return RootContext.ToplevelTypes.LookupNamespaceOrType (name, arity, loc, ignore_cs0104);
-		}
-
-		public FullNamedExpression LookupNamespaceAlias (string name)
-		{
-			return null;
-		}
-
-		#endregion
-	}
-                
-	public class AssemblyClass : CommonAssemblyModulClass {
-		// TODO: make it private and move all builder based methods here
-		public AssemblyBuilder Builder;
-		bool is_cls_compliant;
-		bool wrap_non_exception_throws;
-
-		public Attribute ClsCompliantAttribute;
-
-		Dictionary<SecurityAction, PermissionSet> declarative_security;
-		bool has_extension_method;		
-		public AssemblyName Name;
-		MethodInfo add_type_forwarder;
-		Dictionary<ITypeDefinition, Attribute> emitted_forwarders;
-
-		// Module is here just because of error messages
-		static string[] attribute_targets = new string [] { "assembly", "module" };
-
-		public AssemblyClass ()
-		{
-			wrap_non_exception_throws = true;
-		}
-
-		public bool HasExtensionMethods {
-			set {
-				has_extension_method = value;
-			}
-		}
-
-		public bool IsClsCompliant {
-			get {
-				return is_cls_compliant;
-			}
-		}
-
-		public bool WrapNonExceptionThrows {
-			get {
-				return wrap_non_exception_throws;
-			}
-		}
-
-		public override AttributeTargets AttributeTargets {
-			get {
-				return AttributeTargets.Assembly;
-			}
-		}
-
-		public override bool IsClsComplianceRequired ()
-		{
-			return is_cls_compliant;
-		}
-
-		Report Report {
-			get { return Compiler.Report; }
-		}
-
-		public void Resolve ()
-		{
-			if (RootContext.Unsafe) {
-				//
-				// Emits [assembly: SecurityPermissionAttribute (SecurityAction.RequestMinimum, SkipVerification = true)]
-				// when -unsafe option was specified
-				//
-				
-				Location loc = Location.Null;
-
-				MemberAccess system_security_permissions = new MemberAccess (new MemberAccess (
-					new QualifiedAliasMember (QualifiedAliasMember.GlobalAlias, "System", loc), "Security", loc), "Permissions", loc);
-
-				Arguments pos = new Arguments (1);
-				pos.Add (new Argument (new MemberAccess (new MemberAccess (system_security_permissions, "SecurityAction", loc), "RequestMinimum")));
-
-				Arguments named = new Arguments (1);
-				named.Add (new NamedArgument ("SkipVerification", loc, new BoolLiteral (true, loc)));
-
-				GlobalAttribute g = new GlobalAttribute (new NamespaceEntry (Compiler, null, null, null), "assembly",
-					new MemberAccess (system_security_permissions, "SecurityPermissionAttribute"),
-					new Arguments[] { pos, named }, loc, false);
-				g.AttachTo (this, this);
-
-				if (g.Resolve () != null) {
-					declarative_security = new Dictionary<SecurityAction, PermissionSet> ();
-					g.ExtractSecurityPermissionSet (declarative_security);
-				}
-			}
-
-			if (OptAttributes == null)
-				return;
-
-			// Ensure that we only have GlobalAttributes, since the Search isn't safe with other types.
-			if (!OptAttributes.CheckTargets())
-				return;
-
-			ClsCompliantAttribute = ResolveAttribute (Compiler.PredefinedAttributes.CLSCompliant);
-
-			if (ClsCompliantAttribute != null) {
-				is_cls_compliant = ClsCompliantAttribute.GetClsCompliantAttributeValue ();
-			}
-
-			Attribute a = ResolveAttribute (Compiler.PredefinedAttributes.RuntimeCompatibility);
-			if (a != null) {
-				var val = a.GetPropertyValue ("WrapNonExceptionThrows") as BoolConstant;
-				if (val != null)
-					wrap_non_exception_throws = val.Value;
-			}
-		}
-
-		// fix bug #56621
-		private void SetPublicKey (AssemblyName an, byte[] strongNameBlob) 
-		{
-			try {
-				// check for possible ECMA key
-				if (strongNameBlob.Length == 16) {
-					// will be rejected if not "the" ECMA key
-					an.SetPublicKey (strongNameBlob);
-				}
-				else {
-					// take it, with or without, a private key
-					RSA rsa = CryptoConvert.FromCapiKeyBlob (strongNameBlob);
-					// and make sure we only feed the public part to Sys.Ref
-					byte[] publickey = CryptoConvert.ToCapiPublicKeyBlob (rsa);
-					
-					// AssemblyName.SetPublicKey requires an additional header
-					byte[] publicKeyHeader = new byte [12] { 0x00, 0x24, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00 };
-
-					byte[] encodedPublicKey = new byte [12 + publickey.Length];
-					Buffer.BlockCopy (publicKeyHeader, 0, encodedPublicKey, 0, 12);
-					Buffer.BlockCopy (publickey, 0, encodedPublicKey, 12, publickey.Length);
-					an.SetPublicKey (encodedPublicKey);
-				}
-			}
-			catch (Exception) {
-				Error_AssemblySigning ("The specified file `" + RootContext.StrongNameKeyFile + "' is incorrectly encoded");
-				Environment.Exit (1);
-			}
-		}
-
-		void Error_ObsoleteSecurityAttribute (Attribute a, string option)
-		{
-			Report.Warning (1699, 1, a.Location,
-				"Use compiler option `{0}' or appropriate project settings instead of `{1}' attribute",
-				option, a.Name);
-		}
-
-		// TODO: rewrite this code (to kill N bugs and make it faster) and use standard ApplyAttribute way.
-		public AssemblyName GetAssemblyName (string name, string output) 
-		{
-			if (OptAttributes != null) {
-				foreach (Attribute a in OptAttributes.Attrs) {
-					// cannot rely on any resolve-based members before you call Resolve
-					if (a.ExplicitTarget == null || a.ExplicitTarget != "assembly")
-						continue;
-
-					// TODO: This code is buggy: comparing Attribute name without resolving is wrong.
-					//       However, this is invoked by CodeGen.Init, when none of the namespaces
-					//       are loaded yet.
-					// TODO: Does not handle quoted attributes properly
-					switch (a.Name) {
-					case "AssemblyKeyFile":
-					case "AssemblyKeyFileAttribute":
-					case "System.Reflection.AssemblyKeyFileAttribute":
-						if (RootContext.StrongNameKeyFile != null) {
-							Report.SymbolRelatedToPreviousError (a.Location, a.GetSignatureForError ());
-							Report.Warning (1616, 1, "Option `{0}' overrides attribute `{1}' given in a source file or added module",
-									"keyfile", "System.Reflection.AssemblyKeyFileAttribute");
-						} else {
-							string value = a.GetString ();
-							if (!string.IsNullOrEmpty (value)) {
-								Error_ObsoleteSecurityAttribute (a, "keyfile");
-								RootContext.StrongNameKeyFile = value;
-							}
-						}
-						break;
-					case "AssemblyKeyName":
-					case "AssemblyKeyNameAttribute":
-					case "System.Reflection.AssemblyKeyNameAttribute":
-						if (RootContext.StrongNameKeyContainer != null) {
-							Report.SymbolRelatedToPreviousError (a.Location, a.GetSignatureForError ());
-							Report.Warning (1616, 1, "Option `{0}' overrides attribute `{1}' given in a source file or added module",
-									"keycontainer", "System.Reflection.AssemblyKeyNameAttribute");
-						} else {
-							string value = a.GetString ();
-							if (!string.IsNullOrEmpty (value)) {
-								Error_ObsoleteSecurityAttribute (a, "keycontainer");
-								RootContext.StrongNameKeyContainer = value;
-							}
-						}
-						break;
-					case "AssemblyDelaySign":
-					case "AssemblyDelaySignAttribute":
-					case "System.Reflection.AssemblyDelaySignAttribute":
-						bool b = a.GetBoolean ();
-						if (b) {
-							Error_ObsoleteSecurityAttribute (a, "delaysign");
-						}
-
-						RootContext.StrongNameDelaySign = b;
-						break;
-					}
-				}
-			}
-			
-			AssemblyName an = new AssemblyName ();
-			an.Name = Path.GetFileNameWithoutExtension (name);
-
-			// note: delay doesn't apply when using a key container
-			if (RootContext.StrongNameKeyContainer != null) {
-				an.KeyPair = new StrongNameKeyPair (RootContext.StrongNameKeyContainer);
-				return an;
-			}
-
-			// strongname is optional
-			if (RootContext.StrongNameKeyFile == null)
-				return an;
-
-			string AssemblyDir = Path.GetDirectoryName (output);
-
-			// the StrongName key file may be relative to (a) the compiled
-			// file or (b) to the output assembly. See bugzilla #55320
-			// http://bugzilla.ximian.com/show_bug.cgi?id=55320
-
-			// (a) relative to the compiled file
-			string filename = Path.GetFullPath (RootContext.StrongNameKeyFile);
-			bool exist = File.Exists (filename);
-			if ((!exist) && (AssemblyDir != null) && (AssemblyDir != String.Empty)) {
-				// (b) relative to the outputed assembly
-				filename = Path.GetFullPath (Path.Combine (AssemblyDir, RootContext.StrongNameKeyFile));
-				exist = File.Exists (filename);
-			}
-
-			if (exist) {
-				using (FileStream fs = new FileStream (filename, FileMode.Open, FileAccess.Read)) {
-					byte[] snkeypair = new byte [fs.Length];
-					fs.Read (snkeypair, 0, snkeypair.Length);
-
-					if (RootContext.StrongNameDelaySign) {
-						// delayed signing - DO NOT include private key
-						SetPublicKey (an, snkeypair);
-					}
-					else {
-						// no delay so we make sure we have the private key
-						try {
-							CryptoConvert.FromCapiPrivateKeyBlob (snkeypair);
-							an.KeyPair = new StrongNameKeyPair (snkeypair);
-						}
-						catch (CryptographicException) {
-							if (snkeypair.Length == 16) {
-								// error # is different for ECMA key
-								Report.Error (1606, "Could not sign the assembly. " + 
-									"ECMA key can only be used to delay-sign assemblies");
-							}
-							else {
-								Error_AssemblySigning ("The specified file `" + RootContext.StrongNameKeyFile + "' does not have a private key");
-							}
-							return null;
-						}
-					}
-				}
-			}
-			else {
-				Error_AssemblySigning ("The specified file `" + RootContext.StrongNameKeyFile + "' does not exist");
-				return null;
-			}
-			return an;
-		}
-
-		void Error_AssemblySigning (string text)
-		{
-			Report.Error (1548, "Error during assembly signing. " + text);
-		}
-
-		bool CheckInternalsVisibleAttribute (Attribute a)
-		{
-			string assembly_name = a.GetString ();
-			if (assembly_name.Length == 0)
-				return false;
-				
-			AssemblyName aname = null;
-			try {
-				aname = new AssemblyName (assembly_name);
-			} catch (FileLoadException) {
-			} catch (ArgumentException) {
-			}
-				
-			// Bad assembly name format
-			if (aname == null)
-				Report.Warning (1700, 3, a.Location, "Assembly reference `" + assembly_name + "' is invalid and cannot be resolved");
-			// Report error if we have defined Version or Culture
-			else if (aname.Version != null || aname.CultureInfo != null)
-				throw new Exception ("Friend assembly `" + a.GetString () + 
-						"' is invalid. InternalsVisibleTo cannot have version or culture specified.");
-			else if (aname.GetPublicKey () == null && Name.GetPublicKey () != null && Name.GetPublicKey ().Length != 0) {
-				Report.Error (1726, a.Location, "Friend assembly reference `" + aname.FullName + "' is invalid." +
-						" Strong named assemblies must specify a public key in their InternalsVisibleTo declarations");
-				return false;
-			}
-
-			return true;
-		}
-
-		static string IsValidAssemblyVersion (string version)
-		{
-			Version v;
-			try {
-				v = new Version (version);
-			} catch {
-				try {
-					int major = int.Parse (version, CultureInfo.InvariantCulture);
-					v = new Version (major, 0);
-				} catch {
-					return null;
-				}
-			}
-
-			foreach (int candidate in new int [] { v.Major, v.Minor, v.Build, v.Revision }) {
-				if (candidate > ushort.MaxValue)
-					return null;
-			}
-
-			return new Version (v.Major, System.Math.Max (0, v.Minor), System.Math.Max (0, v.Build), System.Math.Max (0, v.Revision)).ToString (4);
-		}
-
-		public override void ApplyAttributeBuilder (Attribute a, MethodSpec ctor, byte[] cdata, PredefinedAttributes pa)
-		{
-			if (a.IsValidSecurityAttribute ()) {
-				if (declarative_security == null)
-					declarative_security = new Dictionary<SecurityAction, PermissionSet> ();
-
-				a.ExtractSecurityPermissionSet (declarative_security);
-				return;
-			}
-
-			if (a.Type == pa.AssemblyCulture) {
-				string value = a.GetString ();
-				if (value == null || value.Length == 0)
-					return;
-
-				if (RootContext.Target == Target.Exe) {
-					a.Error_AttributeEmitError ("The executables cannot be satelite assemblies, remove the attribute or keep it empty");
-					return;
-				}
-
-				try {
-					var fi = typeof (AssemblyBuilder).GetField ("culture", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.SetField);
-					fi.SetValue (Builder, value == "neutral" ? "" : value);
-				} catch {
-					Report.RuntimeMissingSupport (a.Location, "AssemblyCultureAttribute setting");
-				}
-
-				return;
-			}
-
-			if (a.Type == pa.AssemblyVersion) {
-				string value = a.GetString ();
-				if (value == null || value.Length == 0)
-					return;
-
-				var vinfo = IsValidAssemblyVersion (value.Replace ('*', '0'));
-				if (vinfo == null) {
-					a.Error_AttributeEmitError (string.Format ("Specified version `{0}' is not valid", value));
-					return;
-				}
-
-				try {
-					var fi = typeof (AssemblyBuilder).GetField ("version", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.SetField);
-					fi.SetValue (Builder, vinfo);
-				} catch {
-					Report.RuntimeMissingSupport (a.Location, "AssemblyVersionAttribute setting");
-				}
-
-				return;
-			}
-
-			if (a.Type == pa.AssemblyAlgorithmId) {
-				const int pos = 2; // skip CA header
-				uint alg = (uint) cdata [pos];
-				alg |= ((uint) cdata [pos + 1]) << 8;
-				alg |= ((uint) cdata [pos + 2]) << 16;
-				alg |= ((uint) cdata [pos + 3]) << 24;
-
-				try {
-					var fi = typeof (AssemblyBuilder).GetField ("algid", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.SetField);
-					fi.SetValue (Builder, alg);
-				} catch {
-					Report.RuntimeMissingSupport (a.Location, "AssemblyAlgorithmIdAttribute setting");
-				}
-
-				return;
-			}
-
-			if (a.Type == pa.AssemblyFlags) {
-				const int pos = 2; // skip CA header
-				uint flags = (uint) cdata[pos];
-				flags |= ((uint) cdata[pos + 1]) << 8;
-				flags |= ((uint) cdata[pos + 2]) << 16;
-				flags |= ((uint) cdata[pos + 3]) << 24;
-
-				// Ignore set PublicKey flag if assembly is not strongnamed
-				if ((flags & (uint) AssemblyNameFlags.PublicKey) != 0 && (Builder.GetName ().KeyPair == null))
-					flags &= ~(uint)AssemblyNameFlags.PublicKey;
-
-				try {
-					var fi = typeof (AssemblyBuilder).GetField ("flags", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.SetField);
-					fi.SetValue (Builder, flags);
-				} catch {
-					Report.RuntimeMissingSupport (a.Location, "AssemblyFlagsAttribute setting");
-				}
-
-				return;
-			}
-
-			if (a.Type == pa.InternalsVisibleTo && !CheckInternalsVisibleAttribute (a))
-				return;
-
-			if (a.Type == pa.TypeForwarder) {
-				TypeSpec t = a.GetArgumentType ();
-				if (t == null || TypeManager.HasElementType (t)) {
-					Report.Error (735, a.Location, "Invalid type specified as an argument for TypeForwardedTo attribute");
-					return;
-				}
-
-				if (emitted_forwarders == null) {
-					emitted_forwarders = new Dictionary<ITypeDefinition, Attribute>  ();
-				} else if (emitted_forwarders.ContainsKey (t.MemberDefinition)) {
-					Report.SymbolRelatedToPreviousError(emitted_forwarders[t.MemberDefinition].Location, null);
-					Report.Error(739, a.Location, "A duplicate type forward of type `{0}'",
-						TypeManager.CSharpName(t));
-					return;
-				}
-
-				emitted_forwarders.Add(t.MemberDefinition, a);
-
-				if (t.Assembly == Builder) {
-					Report.SymbolRelatedToPreviousError (t);
-					Report.Error (729, a.Location, "Cannot forward type `{0}' because it is defined in this assembly",
-						TypeManager.CSharpName (t));
-					return;
-				}
-
-				if (t.IsNested) {
-					Report.Error (730, a.Location, "Cannot forward type `{0}' because it is a nested type",
-						TypeManager.CSharpName (t));
-					return;
-				}
-
-				if (add_type_forwarder == null) {
-					add_type_forwarder = typeof (AssemblyBuilder).GetMethod ("AddTypeForwarder",
-						BindingFlags.NonPublic | BindingFlags.Instance);
-
-					if (add_type_forwarder == null) {
-						Report.RuntimeMissingSupport (a.Location, "TypeForwardedTo attribute");
-						return;
-					}
-				}
-
-				add_type_forwarder.Invoke (Builder, new object[] { t.GetMetaInfo () });
-				return;
-			}
-			
-			if (a.Type == pa.Extension) {
-				a.Error_MisusedExtensionAttribute ();
-				return;
-			}
-
-			Builder.SetCustomAttribute ((ConstructorInfo) ctor.GetMetaInfo (), cdata);
-		}
-
-		public override void Emit (TypeContainer tc)
-		{
-			base.Emit (tc);
-
-			if (has_extension_method)
-				Compiler.PredefinedAttributes.Extension.EmitAttribute (Builder);
-
-			PredefinedAttribute pa = tc.Compiler.PredefinedAttributes.RuntimeCompatibility;
-			if (pa.IsDefined && (OptAttributes == null || !OptAttributes.Contains (pa))) {
-				var ci = TypeManager.GetPredefinedConstructor (pa.Type, Location.Null, TypeSpec.EmptyTypes);
-				PropertyInfo [] pis = new PropertyInfo [1];
-
-				pis [0] = TypeManager.GetPredefinedProperty (pa.Type,
-					"WrapNonExceptionThrows", Location.Null, TypeManager.bool_type).MetaInfo;
-				object [] pargs = new object [1];
-				pargs [0] = true;
-				Builder.SetCustomAttribute (new CustomAttributeBuilder ((ConstructorInfo) ci.GetMetaInfo (), new object[0], pis, pargs));
-			}
-
-			if (declarative_security != null) {
-
-				MethodInfo add_permission = typeof (AssemblyBuilder).GetMethod ("AddPermissionRequests", BindingFlags.Instance | BindingFlags.NonPublic);
-				object builder_instance = Builder;
-
-				try {
-					// Microsoft runtime hacking
-					if (add_permission == null) {
-						var assembly_builder = typeof (AssemblyBuilder).Assembly.GetType ("System.Reflection.Emit.AssemblyBuilderData");
-						add_permission = assembly_builder.GetMethod ("AddPermissionRequests", BindingFlags.Instance | BindingFlags.NonPublic);
-
-						FieldInfo fi = typeof (AssemblyBuilder).GetField ("m_assemblyData", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.GetField);
-						builder_instance = fi.GetValue (Builder);
-					}
-
-					var args = new PermissionSet [3];
-					declarative_security.TryGetValue (SecurityAction.RequestMinimum, out args [0]);
-					declarative_security.TryGetValue (SecurityAction.RequestOptional, out args [1]);
-					declarative_security.TryGetValue (SecurityAction.RequestRefuse, out args [2]);
-					add_permission.Invoke (builder_instance, args);
-				}
-				catch {
-					Report.RuntimeMissingSupport (Location.Null, "assembly permission setting");
-				}
-			}
-		}
-
-		public override string[] ValidAttributeTargets {
-			get {
-				return attribute_targets;
-			}
-		}
-
-		// Wrapper for AssemblyBuilder.AddModule
-		static MethodInfo adder_method;
-		static public MethodInfo AddModule_Method {
-			get {
-				if (adder_method == null)
-					adder_method = typeof (AssemblyBuilder).GetMethod ("AddModule", BindingFlags.Instance|BindingFlags.NonPublic);
-				return adder_method;
-			}
-		}
-		public Module AddModule (string module)
-		{
-			MethodInfo m = AddModule_Method;
-			if (m == null) {
-				Report.RuntimeMissingSupport (Location.Null, "/addmodule");
-				Environment.Exit (1);
-			}
-
-			try {
-				return (Module) m.Invoke (Builder, new object [] { module });
-			} catch (TargetInvocationException ex) {
-				throw ex.InnerException;
-			}
-		}		
-	}
 }
diff --git a/mcs/mcs/complete.cs b/mcs/mcs/complete.cs
index 28a103b..43cc8fa 100644
--- a/mcs/mcs/complete.cs
+++ b/mcs/mcs/complete.cs
@@ -13,12 +13,7 @@
 // statements even when the expression is incomplete (for example
 // completing inside a lambda
 //
-using System;
 using System.Collections.Generic;
-using System.Reflection;
-using System.Reflection.Emit;
-using System.Text;
-using Mono.CSharp.Linq;
 using System.Linq;
 
 namespace Mono.CSharp {
diff --git a/mcs/mcs/const.cs b/mcs/mcs/const.cs
index be6104b..daac0db 100644
--- a/mcs/mcs/const.cs
+++ b/mcs/mcs/const.cs
@@ -9,9 +9,11 @@
 // Copyright 2003-2008 Novell, Inc.
 //
 
-using System;
+#if STATIC
+using IKVM.Reflection;
+#else
 using System.Reflection;
-using System.Reflection.Emit;
+#endif
 
 namespace Mono.CSharp {
 
@@ -86,33 +88,14 @@ namespace Mono.CSharp {
 		{
 			var c = ((ConstSpec) spec).Value as Constant;
 			if (c.Type == TypeManager.decimal_type) {
-				FieldBuilder.SetCustomAttribute (CreateDecimalConstantAttribute (c, Compiler.PredefinedAttributes));
+				Module.PredefinedAttributes.DecimalConstant.EmitAttribute (FieldBuilder, (decimal) c.GetValue (), c.Location);
 			} else {
-				FieldBuilder.SetConstant (c.GetTypedValue ());
+				FieldBuilder.SetConstant (c.GetValue ());
 			}
 
 			base.Emit ();
 		}
 
-		public static CustomAttributeBuilder CreateDecimalConstantAttribute (Constant c, PredefinedAttributes pa)
-		{
-			PredefinedAttribute attr = pa.DecimalConstant;
-			if (attr.Constructor == null &&
-				!attr.ResolveConstructor (c.Location, TypeManager.byte_type, TypeManager.byte_type,
-					TypeManager.uint32_type, TypeManager.uint32_type, TypeManager.uint32_type))
-				return null;
-
-			Decimal d = (Decimal) c.GetValue ();
-			int [] bits = Decimal.GetBits (d);
-			object [] args = new object [] { 
-				(byte) (bits [3] >> 16),
-				(byte) (bits [3] >> 31),
-				(uint) bits [2], (uint) bits [1], (uint) bits [0]
-			};
-
-			return new CustomAttributeBuilder (attr.Constructor, args);
-		}
-
 		public static void Error_InvalidConstantType (TypeSpec t, Location loc, Report Report)
 		{
 			if (t.IsGenericParameter) {
@@ -224,7 +207,7 @@ namespace Mono.CSharp {
 			}
 
 			if (expr == null) {
-				expr = New.Constantify (field.MemberType);
+				expr = New.Constantify (field.MemberType, Location);
 				if (expr == null)
 					expr = Constant.CreateConstantFromValue (field.MemberType, null, Location);
 				expr = expr.Resolve (rc);
diff --git a/mcs/mcs/constant.cs b/mcs/mcs/constant.cs
index eeb66fb..d9fdbfc 100644
--- a/mcs/mcs/constant.cs
+++ b/mcs/mcs/constant.cs
@@ -10,7 +10,12 @@
 //
 
 using System;
+
+#if STATIC
+using IKVM.Reflection.Emit;
+#else
 using System.Reflection.Emit;
+#endif
 
 namespace Mono.CSharp {
 
@@ -45,10 +50,15 @@ namespace Mono.CSharp {
 		/// </summary>
 		public abstract object GetValue ();
 
+#if !STATIC
+		//
+		// Returns an object value which is typed to contant type
+		//
 		public virtual object GetTypedValue ()
 		{
 			return GetValue ();
 		}
+#endif
 
 		public override void Error_ValueCannotBeConverted (ResolveContext ec, Location loc, TypeSpec target, bool expl)
 		{
@@ -180,7 +190,7 @@ namespace Mono.CSharp {
 					Error_ValueCannotBeConverted (ec, loc, target_type, false);
 				}
 
-				return New.Constantify (target_type).Resolve (ec);
+				return New.Constantify (target_type, loc).Resolve (ec);
 			}
 		}
 
@@ -262,7 +272,11 @@ namespace Mono.CSharp {
 
 		public override System.Linq.Expressions.Expression MakeExpression (BuilderContext ctx)
 		{
+#if STATIC
+			return base.MakeExpression (ctx);
+#else
 			return System.Linq.Expressions.Expression.Constant (GetTypedValue (), type.GetMetaInfo ());
+#endif
 		}
 
 		public new Constant Resolve (ResolveContext rc)
diff --git a/mcs/mcs/context.cs b/mcs/mcs/context.cs
index cb74335..51db367 100644
--- a/mcs/mcs/context.cs
+++ b/mcs/mcs/context.cs
@@ -11,7 +11,12 @@
 
 using System;
 using System.Collections.Generic;
+
+#if STATIC
+using IKVM.Reflection.Emit;
+#else
 using System.Reflection.Emit;
+#endif
 
 namespace Mono.CSharp
 {
@@ -35,12 +40,15 @@ namespace Mono.CSharp
 		// A member definition of the context. For partial types definition use
 		// CurrentTypeDefinition.PartialContainer otherwise the context is local
 		//
+		// TODO: Obsolete it in this context, dynamic context cannot guarantee sensible value
+		//
 		MemberCore CurrentMemberDefinition { get; }
 
 		bool IsObsolete { get; }
 		bool IsUnsafe { get; }
 		bool IsStatic { get; }
 		bool HasUnresolvedConstraints { get; }
+		ModuleContainer Module { get; }
 
 		string GetSignatureForError ();
 
@@ -48,6 +56,7 @@ namespace Mono.CSharp
 		FullNamedExpression LookupNamespaceOrType (string name, int arity, Location loc, bool ignore_cs0104);
 		FullNamedExpression LookupNamespaceAlias (string name);
 
+		// TODO: It has been replaced by module
 		CompilerContext Compiler { get; }
 	}
 
@@ -71,6 +80,8 @@ namespace Mono.CSharp
 		/// </summary>
 		public bool HasReturnLabel;
 
+		public int FlowOffset;
+
 		public BlockContext (IMemberContext mc, ExplicitBlock block, TypeSpec returnType)
 			: base (mc)
 		{
@@ -83,6 +94,16 @@ namespace Mono.CSharp
 			CurrentBlock = block;
 		}
 
+		public BlockContext (ResolveContext rc, ExplicitBlock block, TypeSpec returnType)
+			: this (rc.MemberContext, block, returnType)
+		{
+			if (rc.IsUnsafe)
+				flags |= ResolveContext.Options.UnsafeScope;
+
+			if (rc.HasSet (ResolveContext.Options.CheckedScope))
+				flags |= ResolveContext.Options.CheckedScope;
+		}
+
 		public override FlowBranching CurrentBranching {
 			get { return current_flow_branching; }
 		}
@@ -130,14 +151,14 @@ namespace Mono.CSharp
 			return branching;
 		}
 
-		public FlowBranchingIterator StartFlowBranching (Iterator iterator)
+		public FlowBranchingIterator StartFlowBranching (Iterator iterator, FlowBranching parent)
 		{
-			FlowBranchingIterator branching = new FlowBranchingIterator (CurrentBranching, iterator);
+			FlowBranchingIterator branching = new FlowBranchingIterator (parent, iterator);
 			current_flow_branching = branching;
 			return branching;
 		}
 
-		public FlowBranchingToplevel StartFlowBranching (ToplevelBlock stmt, FlowBranching parent)
+		public FlowBranchingToplevel StartFlowBranching (ParametersBlock stmt, FlowBranching parent)
 		{
 			FlowBranchingToplevel branching = new FlowBranchingToplevel (parent, stmt);
 			current_flow_branching = branching;
@@ -236,6 +257,8 @@ namespace Mono.CSharp
 
 			ConstructorScope = 1 << 11,
 
+			UsingInitializerScope = 1 << 12,
+
 			/// <summary>
 			///   Whether control flow analysis is enabled
 			/// </summary>
@@ -298,7 +321,7 @@ namespace Mono.CSharp
 			}
 		}
 
-		Options flags;
+		protected Options flags;
 
 		//
 		// Whether we are inside an anonymous method.
@@ -312,7 +335,7 @@ namespace Mono.CSharp
 
 		public Block CurrentBlock;
 
-		public IMemberContext MemberContext;
+		public readonly IMemberContext MemberContext;
 
 		/// <summary>
 		///   If this is non-null, points to the current switch statement
@@ -348,6 +371,12 @@ namespace Mono.CSharp
 			get { return MemberContext.Compiler; }
 		}
 
+		public virtual ExplicitBlock ConstructorBlock {
+			get {
+				return CurrentBlock.Explicit;
+			}
+		}
+
 		public virtual FlowBranching CurrentBranching {
 			get { return null; }
 		}
@@ -393,19 +422,17 @@ namespace Mono.CSharp
 			}
 		}
 
-		public bool OmitStructFlowAnalysis {
-			get { return (flags & Options.OmitStructFlowAnalysis) != 0; }
+		public ModuleContainer Module {
+			get {
+				return MemberContext.Module;
+			}
 		}
 
-		// TODO: Merge with CompilerGeneratedThis
-		public Expression GetThis (Location loc)
-		{
-			This my_this = new This (loc);
-			my_this.ResolveBase (this);
-			return my_this;
+		public bool OmitStructFlowAnalysis {
+			get { return (flags & Options.OmitStructFlowAnalysis) != 0; }
 		}
 
-		public bool MustCaptureVariable (LocalInfo local)
+		public bool MustCaptureVariable (INamedBlockVariable local)
 		{
 			if (CurrentAnonymousMethod == null)
 				return false;
@@ -415,7 +442,7 @@ namespace Mono.CSharp
 			if (CurrentAnonymousMethod.IsIterator)
 				return true;
 
-			return local.Block.Toplevel != CurrentBlock.Toplevel;
+			return local.Block.ParametersBlock != CurrentBlock.ParametersBlock.Original;
 		}
 
 		public bool HasSet (Options options)
@@ -496,7 +523,6 @@ namespace Mono.CSharp
 	public class CloneContext
 	{
 		Dictionary<Block, Block> block_map = new Dictionary<Block, Block> ();
-		Dictionary<LocalInfo, LocalInfo> variable_map;
 
 		public void AddBlockMap (Block from, Block to)
 		{
@@ -524,25 +550,6 @@ namespace Mono.CSharp
 
 			return mapped_to;
 		}
-
-		public void AddVariableMap (LocalInfo from, LocalInfo to)
-		{
-			if (variable_map == null)
-				variable_map = new Dictionary<LocalInfo, LocalInfo> ();
-			else if (variable_map.ContainsKey (from))
-				return;
-
-			variable_map[from] = to;
-		}
-
-		public LocalInfo LookupVariable (LocalInfo from)
-		{
-			try {
-				return variable_map[from];
-			} catch (KeyNotFoundException) {
-				throw new Exception ("LookupVariable: looking up a variable that has not been registered yet");
-			}
-		}
 	}
 
 	//
@@ -551,44 +558,31 @@ namespace Mono.CSharp
 	public class CompilerContext
 	{
 		readonly Report report;
-		readonly ReflectionMetaImporter meta_importer;
-		readonly PredefinedAttributes attributes;
-		readonly GlobalRootNamespace root;
+		readonly BuildinTypes buildin_types;
 
-		public CompilerContext (ReflectionMetaImporter metaImporter, Report report)
+		public CompilerContext (Report report)
 		{
-			this.meta_importer = metaImporter;
 			this.report = report;
-
-			this.attributes = new PredefinedAttributes ();
-			this.root = new GlobalRootNamespace ();
-		}
-
-		public GlobalRootNamespace GlobalRootNamespace {
-			get {
-				return root;
-			}
+			this.buildin_types = new BuildinTypes ();
 		}
 
-		public bool IsRuntimeBinder { get; set; }
+		#region Properties
 
-		public ReflectionMetaImporter MetaImporter {
+		public BuildinTypes BuildinTypes {
 			get {
-				return meta_importer;
+				return buildin_types;
 			}
 		}
 
-		public PredefinedAttributes PredefinedAttributes {
-			get {
-				return attributes;
-			}
-		}
+		public bool IsRuntimeBinder { get; set; }
 
 		public Report Report {
 			get {
 				return report;
 			}
 		}
+
+		#endregion
 	}
 
 	//
diff --git a/mcs/mcs/convert.cs b/mcs/mcs/convert.cs
index 73ad9f1..eeedfd2 100644
--- a/mcs/mcs/convert.cs
+++ b/mcs/mcs/convert.cs
@@ -12,9 +12,12 @@
 
 using System;
 using System.Collections.Generic;
-using System.Diagnostics;
-using System.Reflection;
+
+#if STATIC
+using IKVM.Reflection.Emit;
+#else
 using System.Reflection.Emit;
+#endif
 
 namespace Mono.CSharp {
 
@@ -89,7 +92,7 @@ namespace Mono.CSharp {
 			return ImplicitReferenceConversionExists (MyEmptyExpr, arg_type) || ExplicitReferenceConversionExists (array.Element, arg_type);
 		}
 
-		static Expression ImplicitTypeParameterConversion (Expression expr, TypeSpec target_type)
+		public static Expression ImplicitTypeParameterConversion (Expression expr, TypeSpec target_type)
 		{
 			var expr_type = (TypeParameterSpec) expr.Type;
 
@@ -129,7 +132,7 @@ namespace Mono.CSharp {
 			// From T to any interface implemented by C
 			//
 			var base_type = expr_type.GetEffectiveBase ();
-			if (base_type == target_type || TypeSpec.IsBaseClass (base_type, target_type, false) || base_type.ImplementsInterface (target_type)) {
+			if (base_type == target_type || TypeSpec.IsBaseClass (base_type, target_type, false) || base_type.ImplementsInterface (target_type, true)) {
 				if (expr_type.IsReferenceType)
 					return new ClassCast (expr, target_type);
 
@@ -178,7 +181,7 @@ namespace Mono.CSharp {
 			return null;
 		}
 
-		static Expression ImplicitReferenceConversion (Expression expr, TypeSpec target_type, bool explicit_cast)
+		public static Expression ImplicitReferenceConversion (Expression expr, TypeSpec target_type, bool explicit_cast)
 		{
 			TypeSpec expr_type = expr.Type;
 
@@ -239,7 +242,7 @@ namespace Mono.CSharp {
 
 			// from any class-type S to any interface-type T.
 			if (target_type.IsInterface) {
-				if (expr_type.ImplementsInterface (target_type)){
+				if (expr_type.ImplementsInterface (target_type, true)){
 					return !TypeManager.IsValueType (expr_type);
 				}
 			}
@@ -316,12 +319,15 @@ namespace Mono.CSharp {
 				return false;
 			}
 
+			if (TypeSpecComparer.IsEqual (expr_type, target_type))
+				return true;
+
 			if (TypeSpecComparer.Variant.IsEqual (expr_type, target_type))
 				return true;
 
 			// from any interface type S to interface-type T.
 			if (expr_type.IsInterface && target_type.IsInterface) {
-				return expr_type.ImplementsInterface (target_type);
+				return expr_type.ImplementsInterface (target_type, true);
 			}
 
 			// from any delegate type to System.Delegate
@@ -403,7 +409,7 @@ namespace Mono.CSharp {
 
 			// from any class-type S to any interface-type T.
 			if (target_type.IsInterface) {
-				if (expr_type.ImplementsInterface (target_type) &&
+				if (expr_type.ImplementsInterface (target_type, true) &&
 					(TypeManager.IsGenericParameter (expr_type) || TypeManager.IsValueType (expr_type))) {
 					return expr == null ? EmptyExpression.Null : new BoxedCast (expr, target_type);
 				}
@@ -436,7 +442,7 @@ namespace Mono.CSharp {
 
 			// conversion exists only mode
 			if (ec == null) {
-				if (expr_type == t_el)
+				if (TypeSpecComparer.IsEqual (expr_type, t_el))
 					return EmptyExpression.Null;
 
 				if (expr is Constant)
@@ -452,7 +458,7 @@ namespace Mono.CSharp {
 				unwrap = expr;
 
 			Expression conv = unwrap;
-			if (expr_type != t_el) {
+			if (!TypeSpecComparer.IsEqual (expr_type, t_el)) {
 				if (conv is Constant)
 					conv = ((Constant)conv).ConvertImplicitly (ec, t_el);
 				else
@@ -569,9 +575,9 @@ namespace Mono.CSharp {
 				if (target_type == TypeManager.uint64_type)
 					return expr == null ? EmptyExpression.Null : new OpcodeCast (expr, target_type, OpCodes.Conv_U8);
 				if (target_type == TypeManager.double_type)
-					return expr == null ? EmptyExpression.Null : new OpcodeCast (new OpcodeCast (expr, target_type, OpCodes.Conv_R_Un), target_type, OpCodes.Conv_R8);
+					return expr == null ? EmptyExpression.Null : new OpcodeCastDuplex (expr, target_type, OpCodes.Conv_R_Un, OpCodes.Conv_R8);
 				if (target_type == TypeManager.float_type)
-					return expr == null ? EmptyExpression.Null : new OpcodeCast (new OpcodeCast (expr, target_type, OpCodes.Conv_R_Un), target_type, OpCodes.Conv_R4);
+					return expr == null ? EmptyExpression.Null : new OpcodeCastDuplex (expr, target_type, OpCodes.Conv_R_Un, OpCodes.Conv_R4);
 				if (target_type == TypeManager.decimal_type)
 					return expr == null ? EmptyExpression.Null : new CastToDecimal (expr);
 			} else if (expr_type == TypeManager.int64_type){
@@ -589,9 +595,9 @@ namespace Mono.CSharp {
 				// From ulong to float, double
 				//
 				if (target_type == TypeManager.double_type)
-					return expr == null ? EmptyExpression.Null : new OpcodeCast (new OpcodeCast (expr, target_type, OpCodes.Conv_R_Un), target_type, OpCodes.Conv_R8);
+					return expr == null ? EmptyExpression.Null : new OpcodeCastDuplex (expr, target_type, OpCodes.Conv_R_Un, OpCodes.Conv_R8);
 				if (target_type == TypeManager.float_type)
-					return expr == null ? EmptyExpression.Null : new OpcodeCast (new OpcodeCast (expr, target_type, OpCodes.Conv_R_Un), target_type, OpCodes.Conv_R4);
+					return expr == null ? EmptyExpression.Null : new OpcodeCastDuplex (expr, target_type, OpCodes.Conv_R_Un, OpCodes.Conv_R4);
 				if (target_type == TypeManager.decimal_type)
 					return expr == null ? EmptyExpression.Null : new CastToDecimal (expr);
 			} else if (expr_type == TypeManager.char_type){
@@ -765,16 +771,19 @@ namespace Mono.CSharp {
 			// If `expr_type' implements `target_type' (which is an iface)
 			// see TryImplicitIntConversion
 			//
-			if (target_type.IsInterface && expr_type.ImplementsInterface (target_type))
+			if (target_type.IsInterface && expr_type.ImplementsInterface (target_type, true))
 				return true;
 
-			if (target_type == TypeManager.void_ptr_type && expr_type.IsPointer)
+			if (target_type.IsPointer && expr_type.IsPointer && ((PointerContainer) target_type).Element.BuildinType == BuildinTypeSpec.Type.Void)
 				return true;
 
 			// Conversion from __arglist to System.ArgIterator
 			if (expr_type == InternalType.Arglist)
 				return target_type == TypeManager.arg_iterator_type;
 
+			if (TypeSpecComparer.IsEqual (expr_type, target_type))
+				return true;
+
 			return false;
 		}
 
@@ -855,27 +864,25 @@ namespace Mono.CSharp {
 			return best;
 		}
 
-		/// <summary>
-		///   Finds the most specific source Sx according to the rules of the spec (13.4.4)
-		///   by making use of FindMostEncomp* methods. Applies the correct rules separately
-		///   for explicit and implicit conversion operators.
-		/// </summary>
-		static TypeSpec FindMostSpecificSource (IList<MethodSpec> list,
-							   Expression source, bool apply_explicit_conv_rules)
+		//
+		// Finds the most specific source Sx according to the rules of the spec (13.4.4)
+		// by making use of FindMostEncomp* methods. Applies the correct rules separately
+		// for explicit and implicit conversion operators.
+		//
+		static TypeSpec FindMostSpecificSource (List<MethodSpec> list, TypeSpec sourceType, Expression source, bool apply_explicit_conv_rules)
 		{
-			var src_types_set = new List<TypeSpec> ();
+			var src_types_set = new TypeSpec [list.Count];
 
 			//
-			// If any operator converts from S then Sx = S
+			// Try exact match first, if any operator converts from S then Sx = S
 			//
-			TypeSpec source_type = source.Type;
-			foreach (var mb in list){
-				TypeSpec param_type = mb.Parameters.Types [0];
+			for (int i = 0; i < src_types_set.Length; ++i) {
+				TypeSpec param_type = list [i].Parameters.Types [0];
 
-				if (param_type == source_type)
+				if (param_type == sourceType)
 					return param_type;
 
-				src_types_set.Add (param_type);
+				src_types_set [i] = param_type;
 			}
 
 			//
@@ -1018,15 +1025,20 @@ namespace Mono.CSharp {
 				if (t.IsInterface)
 					continue;
 
-				if (target != t && !ImplicitStandardConversionExists (new EmptyExpression (t), target)) {
-					if (implicitOnly)
-						continue;
+				if (target != t) {
+					if (TypeManager.IsNullableType (t))
+						t = Nullable.NullableInfo.GetUnderlyingType (t);
 
-					if (texpr == null)
-						texpr = new EmptyExpression (target);
+					if (!ImplicitStandardConversionExists (new EmptyExpression (t), target)) {
+						if (implicitOnly)
+							continue;
 
-					if (!ImplicitStandardConversionExists (texpr, t))
-						continue;
+						if (texpr == null)
+							texpr = new EmptyExpression (target);
+
+						if (!ImplicitStandardConversionExists (texpr, t))
+							continue;
+					}
 				}
 
 				if (candidates == null)
@@ -1044,22 +1056,22 @@ namespace Mono.CSharp {
 			List<MethodSpec> candidates = null;
 
 			//
-			// If S or T are nullable types, S0 and T0 are their underlying types
-			// otherwise S0 and T0 are equal to S and T respectively.
+			// If S or T are nullable types, source_type and target_type are their underlying types
+			// otherwise source_type and target_type are equal to S and T respectively.
 			//
 			TypeSpec source_type = source.Type;
 			TypeSpec target_type = target;
-			Expression unwrap;
+			Expression source_type_expr;
 
 			if (TypeManager.IsNullableType (source_type)) {
 				// No implicit conversion S? -> T for non-reference types
 				if (implicitOnly && !TypeManager.IsReferenceType (target_type) && !TypeManager.IsNullableType (target_type))
 					return null;
 
-				unwrap = source = Nullable.Unwrap.Create (source);
-				source_type = source.Type;
+				source_type_expr = Nullable.Unwrap.Create (source);
+				source_type = source_type_expr.Type;
 			} else {
-				unwrap = null;
+				source_type_expr = source;
 			}
 
 			if (TypeManager.IsNullableType (target_type))
@@ -1073,29 +1085,29 @@ namespace Mono.CSharp {
 
 				var operators = MemberCache.GetUserOperator (source_type, Operator.OpType.Implicit, declared_only);
 				if (operators != null) {
-					FindApplicableUserDefinedConversionOperators (operators, source, target_type, implicitOnly, ref candidates);
+					FindApplicableUserDefinedConversionOperators (operators, source_type_expr, target_type, implicitOnly, ref candidates);
 				}
 
 				if (!implicitOnly) {
 					operators = MemberCache.GetUserOperator (source_type, Operator.OpType.Explicit, declared_only);
 					if (operators != null) {
-						FindApplicableUserDefinedConversionOperators (operators, source, target_type, false, ref candidates);
+						FindApplicableUserDefinedConversionOperators (operators, source_type_expr, target_type, false, ref candidates);
 					}
 				}
 			}
 
-			if ((target.Kind & user_conversion_kinds) != 0 && target != TypeManager.decimal_type) {
+			if ((target.Kind & user_conversion_kinds) != 0 && target_type != TypeManager.decimal_type) {
 				bool declared_only = target.IsStruct || implicitOnly;
 
 				var operators = MemberCache.GetUserOperator (target_type, Operator.OpType.Implicit, declared_only);
 				if (operators != null) {
-					FindApplicableUserDefinedConversionOperators (operators, source, target_type, implicitOnly, ref candidates);
+					FindApplicableUserDefinedConversionOperators (operators, source_type_expr, target_type, implicitOnly, ref candidates);
 				}
 
 				if (!implicitOnly) {
 					operators = MemberCache.GetUserOperator (target_type, Operator.OpType.Explicit, declared_only);
 					if (operators != null) {
-						FindApplicableUserDefinedConversionOperators (operators, source, target_type, false, ref candidates);
+						FindApplicableUserDefinedConversionOperators (operators, source_type_expr, target_type, false, ref candidates);
 					}
 				}
 			}
@@ -1113,7 +1125,11 @@ namespace Mono.CSharp {
 				s_x = most_specific_operator.Parameters.Types[0];
 				t_x = most_specific_operator.ReturnType;
 			} else {
-				s_x = FindMostSpecificSource (candidates, source, !implicitOnly);
+				//
+				// Pass original source type to find the best match against input type and
+				// not the unwrapped expression
+				//
+				s_x = FindMostSpecificSource (candidates, source.Type, source_type_expr, !implicitOnly);
 				if (s_x == null)
 					return null;
 
@@ -1121,23 +1137,40 @@ namespace Mono.CSharp {
 				if (t_x == null)
 					return null;
 
-				most_specific_operator = candidates[0];
-
-				for (int i = 1; i < candidates.Count; ++i) {
+				most_specific_operator = null;
+				for (int i = 0; i < candidates.Count; ++i) {
 					if (candidates[i].ReturnType == t_x && candidates[i].Parameters.Types[0] == s_x) {
 						most_specific_operator = candidates[i];
 						break;
 					}
 				}
+
+				if (most_specific_operator == null) {
+					MethodSpec ambig_arg = null;
+					foreach (var candidate in candidates) {
+						if (candidate.ReturnType == t_x)
+							most_specific_operator = candidate;
+						else if (candidate.Parameters.Types[0] == s_x)
+							ambig_arg = candidate;
+					}
+
+					ec.Report.Error (457, loc,
+						"Ambiguous user defined operators `{0}' and `{1}' when converting from `{2}' to `{3}'",
+						ambig_arg.GetSignatureForError (), most_specific_operator.GetSignatureForError (),
+						source.Type.GetSignatureForError (), target.GetSignatureForError ());
+				}
 			}
 
 			//
 			// Convert input type when it's different to best operator argument
 			//
-			if (s_x != source.Type)
+			if (s_x != source_type)
 				source = implicitOnly ?
-					ImplicitConversionStandard (ec, source, s_x, loc) :
-					ExplicitConversionStandard (ec, source, s_x, loc);
+					ImplicitConversionStandard (ec, source_type_expr, s_x, loc) :
+					ExplicitConversionStandard (ec, source_type_expr, s_x, loc);
+			else {
+				source = source_type_expr;
+			}
 
 			source = new UserCast (most_specific_operator, source, loc).Resolve (ec);
 
@@ -1154,13 +1187,17 @@ namespace Mono.CSharp {
 				source = implicitOnly ?
 					ImplicitConversionStandard (ec, source, target_type, loc) :
 					ExplicitConversionStandard (ec, source, target_type, loc);
+
+				if (source == null)
+					return null;
 			}
 
 			//
-			// Source expression is of nullable type, lift the result in case of it's null
+			// Source expression is of nullable type, lift the result in the case it's null and
+			// not nullable/lifted user operator is used
 			//
-			if (unwrap != null && (TypeManager.IsReferenceType (target) || target_type != target))
-				source = new Nullable.Lifted (source, unwrap, target).Resolve (ec);
+			if (source_type_expr is Nullable.Unwrap && !TypeManager.IsNullableType (s_x) && (TypeManager.IsReferenceType (target) || target_type != target))
+				source = new Nullable.Lifted (source, source_type_expr, target).Resolve (ec);
 			else if (target_type != target)
 				source = Nullable.Wrap.Create (source, target);
 
@@ -1244,6 +1281,11 @@ namespace Mono.CSharp {
 
 					goto case MemberKind.Struct;
 				case MemberKind.Struct:
+					// TODO: Should really introduce MemberKind.Void
+					if (target_type == TypeManager.void_type)
+						return null;
+
+					goto case MemberKind.Enum;
 				case MemberKind.Delegate:
 				case MemberKind.Enum:
 				case MemberKind.Interface:
@@ -1298,24 +1340,24 @@ namespace Mono.CSharp {
 			}
 
 			if (ec.IsUnsafe) {
-				if (expr_type.IsPointer){
-					if (target_type == TypeManager.void_ptr_type)
-						return EmptyCast.Create (expr, target_type);
-
-					//
-					// yep, comparing pointer types cant be done with
-					// t1 == t2, we have to compare their element types.
-					//
-					if (target_type.IsPointer){
-						if (TypeManager.GetElementType(target_type) == TypeManager.GetElementType(expr_type))
+				var target_pc = target_type as PointerContainer;
+				if (target_pc != null) {
+					if (expr_type.IsPointer) {
+						//
+						// Pointer types are same when they have same element types
+						//
+						if (expr_type == target_pc)
 							return expr;
 
+						if (target_pc.Element.BuildinType == BuildinTypeSpec.Type.Void)
+							return EmptyCast.Create (expr, target_type);
+
 						//return null;
 					}
-				}
 
-				if (expr_type == InternalType.Null && target_type.IsPointer)
-					return EmptyCast.Create (new NullPointer (loc), target_type);
+					if (expr_type == InternalType.Null)
+						return EmptyCast.Create (new NullPointer (loc), target_type);
+				}
 			}
 
 			if (expr_type == InternalType.AnonymousMethod){
@@ -1328,6 +1370,9 @@ namespace Mono.CSharp {
 			if (expr_type == InternalType.Arglist && target_type == TypeManager.arg_iterator_type)
 				return expr;
 
+			if (TypeSpecComparer.IsEqual (expr_type, target_type))
+				return expr;
+
 			return null;
 		}
 
@@ -1661,12 +1706,16 @@ namespace Mono.CSharp {
 			//
 			// From object or dynamic to any reference type or value type (unboxing)
 			//
-			if (source_type == TypeManager.object_type || source_type == InternalType.Dynamic)
+			if (source_type == TypeManager.object_type || source_type == InternalType.Dynamic) {
+				if (target_type.IsPointer)
+					return null;
+
 				return
 					source == null ? EmptyExpression.Null :
 					target_is_value_type ? new UnboxCast (source, target_type) :
 					source is Constant ? (Expression) new EmptyConstantCast ((Constant) source, target_type) :
 					new ClassCast (source, target_type);
+			}
 
 			//
 			// From any class S to any class-type T, provided S is a base class of T
@@ -1679,15 +1728,15 @@ namespace Mono.CSharp {
 			// sealed, or provided T implements S.
 			//
 			if (source_type.IsInterface) {
-				if (!target_type.IsSealed || target_type.ImplementsInterface (source_type)) {
-					if (target_type.IsClass)
-						return source == null ? EmptyExpression.Null : new ClassCast (source, target_type);
+				if (!target_type.IsSealed || target_type.ImplementsInterface (source_type, true)) {
+					if (source == null)
+						return EmptyExpression.Null;
 
 					//
 					// Unboxing conversion from any interface-type to any non-nullable-value-type that
 					// implements the interface-type
 					//
-					return source == null ? EmptyExpression.Null : new UnboxCast (source, target_type);
+					return target_is_value_type ? new UnboxCast (source, target_type) : (Expression) new ClassCast (source, target_type);
 				}
 
 				//
@@ -1750,7 +1799,7 @@ namespace Mono.CSharp {
 			// From any class type S to any interface T, provides S is not sealed
 			// and provided S does not implement T.
 			//
-			if (target_type.IsInterface && !source_type.IsSealed && !source_type.ImplementsInterface (target_type)) {
+			if (target_type.IsInterface && !source_type.IsSealed && !source_type.ImplementsInterface (target_type, true)) {
 				return source == null ? EmptyExpression.Null : new ClassCast (source, target_type);
 			}
 
@@ -1960,7 +2009,7 @@ namespace Mono.CSharp {
 			if (ne != null)
 				return ne;
 
-			if (ec.IsUnsafe && expr.Type == TypeManager.void_ptr_type && target_type.IsPointer)
+			if (ec.IsUnsafe && expr.Type.IsPointer && target_type.IsPointer && ((PointerContainer)expr.Type).Element.BuildinType == BuildinTypeSpec.Type.Void)
 				return EmptyCast.Create (expr, target_type);
 
 			expr.Error_ValueCannotBeConverted (ec, l, target_type, true);
diff --git a/mcs/mcs/cs-parser.jay b/mcs/mcs/cs-parser.jay
index 6054170..3cb0479 100644
--- a/mcs/mcs/cs-parser.jay
+++ b/mcs/mcs/cs-parser.jay
@@ -57,6 +57,8 @@ namespace Mono.CSharp
 		///   them.  
 		/// </summary>
 		Block      current_block;
+		
+		BlockVariableDeclaration current_variable;
 
 		Delegate   current_delegate;
 		
@@ -79,11 +81,6 @@ namespace Mono.CSharp
 		static Stack<object> oob_stack;
 
 		///
-		/// Switch stack.
-		///
-		Stack<Block> switch_stack;
-
-		///
 		/// Controls the verbosity of the errors produced by the parser
 		///
 		static public int yacc_verbose_flag;
@@ -130,6 +127,8 @@ namespace Mono.CSharp
 		// A counter to create new class names in interactive mode
 		static int class_count;
 		
+		ModuleContainer module;
+		
 		CompilerContext compiler;
 		
 		//
@@ -138,7 +137,6 @@ namespace Mono.CSharp
 		// be recursive
 		//
 		static List<Parameter> parameters_bucket = new List<Parameter> (6);
-		static List<object> variables_bucket = new List<object> (6);
 		
 		//
 		// Full AST support members
@@ -254,11 +252,7 @@ namespace Mono.CSharp
 %token INTO
 %token INTERR_NULLABLE
 %token EXTERN_ALIAS
-
-/* Generics <,> tokens */
-%token OP_GENERICS_LT
-%token OP_GENERICS_LT_DECL
-%token OP_GENERICS_GT
+%token ASYNC
 
 /* C# keywords which are not really keywords */
 %token GET
@@ -319,6 +313,11 @@ namespace Mono.CSharp
 %token OP_PTR
 %token OP_COALESCING
 
+/* Generics <,> tokens */
+%token OP_GENERICS_LT
+%token OP_GENERICS_LT_DECL
+%token OP_GENERICS_GT
+
 %token LITERAL
 
 %token IDENTIFIER
@@ -447,8 +446,9 @@ using_alias_directive
 		var lt = (Tokenizer.LocatedToken) $2;
 		current_namespace.AddUsingAlias (lt.Value, (MemberName) $4, GetLocation ($1));
 	  }
-	| USING error {
-		CheckIdentifierToken (yyToken, GetLocation ($2));
+	| USING error
+	 {
+		Error_SyntaxError (yyToken);
 		$$ = null;
 	  }
 	;
@@ -474,7 +474,7 @@ namespace_declaration
 			Report.Error(1671, name.Location, "A namespace declaration cannot have modifiers or attributes");
 		}
 
-		current_namespace = new NamespaceEntry (compiler,
+		current_namespace = new NamespaceEntry (module,
 			current_namespace, file, name.GetName ());
 		current_class = current_namespace.SlaveDeclSpace;
 		current_container = current_class.PartialContainer;
@@ -500,7 +500,7 @@ qualified_identifier
 	  }
 	| error
 	  {
-		syntax_error (lexer.Location, "`.' expected");
+		Error_SyntaxError (yyToken);
 		$$ = new MemberName ("<invalid>", lexer.Location);
 	  }
 	;
@@ -533,26 +533,10 @@ namespace_body
 		if (RootContext.Documentation != null)
 			Lexer.doc_state = XmlCommentState.Allowed;
 	  }
-	  namespace_body_body
-	;
-	
-namespace_body_body
-	: opt_extern_alias_directives
+	  opt_extern_alias_directives
 	  opt_using_directives
 	  opt_namespace_member_declarations
 	  CLOSE_BRACE
-	| error
-	  {
-		Report.Error (1518, lexer.Location, "Expected `class', `delegate', `enum', `interface', or `struct'");
-	  }
-	  CLOSE_BRACE
-	| opt_extern_alias_directives
-	  opt_using_directives
-	  opt_namespace_member_declarations
-	  EOF
-	  {
-		Report.Error (1513, lexer.Location, "Expected `}'");
-	  }
 	;
 
 opt_using_directives
@@ -588,16 +572,14 @@ namespace_member_declaration
 		}
 		current_namespace.DeclarationFound = true;
 	  }
-	| namespace_declaration {
+	| namespace_declaration
+	  {
 		current_namespace.DeclarationFound = true;
 	  }
-
-	| field_declaration {
-		Report.Error (116, ((MemberCore) $1).Location, "A namespace can only contain types and namespace declarations");
-	  }
-	| method_declaration {
-		Report.Error (116, ((MemberCore) $1).Location, "A namespace can only contain types and namespace declarations");
-	  }
+	| error
+	 {
+		Error_SyntaxError (yyToken);
+	 }
 	;
 
 type_declaration
@@ -625,7 +607,7 @@ global_attributes
 		if ($1 != null) {
 			Attributes attrs = (Attributes)$1;
 			if (global_attrs_enabled) {
-				CodeGen.Assembly.AddAttributes (attrs.Attrs, current_namespace);
+				module.AddAttributes (attrs.Attrs, current_namespace);
 			} else {
 				foreach (Attribute a in attrs.Attrs) {
 					Report.Error (1730, a.Location, "Assembly and module attributes must precede all other elements except using clauses and extern alias declarations");
@@ -657,11 +639,8 @@ attribute_sections
 			var sect = (List<Attribute>) $1;
 
 			if (global_attrs_enabled) {
-				if (current_attr_target == "module") {
-					current_container.Module.Compiled.AddAttributes (sect);
-					$$ = null;
-				} else if (current_attr_target != null && current_attr_target.Length > 0) {
-					CodeGen.Assembly.AddAttributes (sect, current_namespace);
+				if (!string.IsNullOrEmpty (current_attr_target)) {
+					module.AddAttributes (sect, current_namespace);
 					$$ = null;
 				} else {
 					$$ = new Attributes (sect);
@@ -688,11 +667,8 @@ attribute_sections
 			var sect = (List<Attribute>) $2;
 
 			if (global_attrs_enabled) {
-				if (current_attr_target == "module") {
-					current_container.Module.Compiled.AddAttributes (sect);
-					$$ = null;
-				} else if (current_attr_target == "assembly") {
-					CodeGen.Assembly.AddAttributes (sect, current_namespace);
+				if (!string.IsNullOrEmpty (current_attr_target)) {
+					module.AddAttributes (sect);
 					$$ = null;
 				} else {
 					if (attrs == null)
@@ -956,8 +932,9 @@ struct_declaration
 		lbag.AppendToMember (current_class, GetLocation ($13));
 		$$ = pop_current_class ();
 	  }
-	| opt_attributes opt_modifiers opt_partial STRUCT error {
-		CheckIdentifierToken (yyToken, GetLocation ($5));
+	| opt_attributes opt_modifiers opt_partial STRUCT error
+	  {
+		Error_SyntaxError (yyToken);
 	  }
 	;
 
@@ -1145,11 +1122,15 @@ opt_field_initializer
 	| ASSIGN
 	  {
 	  	++lexer.parsing_block;
+		current_local_parameters = ParametersCompiled.EmptyReadOnlyParameters;
+	  	start_block (GetLocation ($1));
 	  }
 	  variable_initializer
 	  {
 	  	--lexer.parsing_block;
 		current_field.Initializer = (Expression) $3;
+		end_block (lexer.Location);
+		current_local_parameters = null;
 	  }
 	;
 	
@@ -1231,72 +1212,18 @@ fixed_field_size
 		$$ = null;
 	  }	  
 	;
-	
-local_variable_declarators	
-	: local_variable_declarator 
-	  {
-		variables_bucket.Clear ();
-		if ($1 != null)
-			variables_bucket.Add ($1);
-		$$ = variables_bucket;
-	  }
-	| local_variable_declarators COMMA local_variable_declarator
-	  {
-		var decls = (List<object>) $1;
-		decls.Add ($3);
-		lbag.AppendTo ($3, GetLocation ($2));
-		$$ = $1;
-	  }
-	;
-	
-local_variable_declarator
-	: IDENTIFIER ASSIGN local_variable_initializer
-	  {
-		$$ = new VariableDeclaration ((Tokenizer.LocatedToken) $1, (Expression) $3);
-		lbag.AddLocation ($$, GetLocation ($2));
-	  }
-	| IDENTIFIER
-	  {
-		$$ = new VariableDeclaration ((Tokenizer.LocatedToken) $1, null);
-	  }
-	| IDENTIFIER variable_bad_array
-	  {
-		$$ = null;
-	  }
-	;
 
-local_variable_initializer
+variable_initializer
 	: expression
 	| array_initializer
-	| STACKALLOC simple_type OPEN_BRACKET_EXPR expression CLOSE_BRACKET
-	  {
-		$$ = new StackAlloc ((Expression) $2, (Expression) $4, GetLocation ($1));
-		lbag.AddLocation ($$, GetLocation ($3), GetLocation ($5));
-	  }
-	| ARGLIST
-	  {
-		$$ = new ArglistAccess (GetLocation ($1));
-	  }
-	| STACKALLOC simple_type
-	  {
-		Report.Error (1575, GetLocation ($1), "A stackalloc expression requires [] after type");
-		$$ = new StackAlloc ((Expression) $2, null, GetLocation ($1));		
-	  }
-	;
-
-variable_bad_array
-	: OPEN_BRACKET_EXPR opt_expression CLOSE_BRACKET
+	| error
 	  {
-		Report.Error (650, GetLocation ($1), "Syntax error, bad array declarator. To declare a managed array the rank specifier precedes the variable's identifier. " +
-			"To declare a fixed size buffer field, use the fixed keyword before the field type");
+		// It has to be here for the parent to safely restore artificial block
+	  	Error_SyntaxError (yyToken);
+	  	$$ = null;
 	  }
 	;
 
-variable_initializer
-	: expression
-	| array_initializer
-	;
-
 method_declaration
 	: method_header {
 		if (RootContext.Documentation != null)
@@ -1461,29 +1388,29 @@ opt_formal_parameter_list
 	
 formal_parameter_list
 	: fixed_parameters
-	  { 
+	  {
 		var pars_list = (List<Parameter>) $1;
-	  	$$ = new ParametersCompiled (compiler, pars_list.ToArray ());
+	  	$$ = new ParametersCompiled (pars_list.ToArray ());
 	  } 
 	| fixed_parameters COMMA parameter_array
 	  {
 		var pars_list = (List<Parameter>) $1;
 		pars_list.Add ((Parameter) $3);
 
-		$$ = new ParametersCompiled (compiler, pars_list.ToArray ()); 
+		$$ = new ParametersCompiled (pars_list.ToArray ()); 
 	  }
 	| fixed_parameters COMMA arglist_modifier
 	  {
 		var pars_list = (List<Parameter>) $1;
 		pars_list.Add (new ArglistParameter (GetLocation ($3)));
-		$$ = new ParametersCompiled (compiler, pars_list.ToArray (), true);
+		$$ = new ParametersCompiled (pars_list.ToArray (), true);
 	  }
 	| parameter_array COMMA error
 	  {
 		if ($1 != null)
 			Report.Error (231, ((Parameter) $1).Location, "A params parameter must be the last parameter in a formal parameter list");
 
-		$$ = new ParametersCompiled (compiler, new Parameter[] { (Parameter) $1 } );			
+		$$ = new ParametersCompiled (new Parameter[] { (Parameter) $1 } );			
 	  }
 	| fixed_parameters COMMA parameter_array COMMA error
 	  {
@@ -1493,13 +1420,13 @@ formal_parameter_list
 		var pars_list = (List<Parameter>) $1;
 		pars_list.Add (new ArglistParameter (GetLocation ($3)));
 
-		$$ = new ParametersCompiled (compiler, pars_list.ToArray (), true);
+		$$ = new ParametersCompiled (pars_list.ToArray (), true);
 	  }
 	| arglist_modifier COMMA error
 	  {
 		Report.Error (257, GetLocation ($1), "An __arglist parameter must be the last parameter in a formal parameter list");
 
-		$$ = new ParametersCompiled (compiler, new Parameter [] { new ArglistParameter (GetLocation ($1)) }, true);
+		$$ = new ParametersCompiled (new Parameter [] { new ArglistParameter (GetLocation ($1)) }, true);
 	  }
 	| fixed_parameters COMMA ARGLIST COMMA error 
 	  {
@@ -1508,15 +1435,20 @@ formal_parameter_list
 		var pars_list = (List<Parameter>) $1;
 		pars_list.Add (new ArglistParameter (GetLocation ($3)));
 
-		$$ = new ParametersCompiled (compiler, pars_list.ToArray (), true);
+		$$ = new ParametersCompiled (pars_list.ToArray (), true);
 	  }
 	| parameter_array 
 	  {
-		$$ = new ParametersCompiled (compiler, new Parameter[] { (Parameter) $1 } );
+		$$ = new ParametersCompiled (new Parameter[] { (Parameter) $1 } );
 	  }
 	| arglist_modifier
 	  {
-		$$ = new ParametersCompiled (compiler, new Parameter [] { new ArglistParameter (GetLocation ($1)) }, true);
+		$$ = new ParametersCompiled (new Parameter [] { new ArglistParameter (GetLocation ($1)) }, true);
+	  }
+	| error
+	  {
+		Error_SyntaxError (yyToken);
+		$$ = ParametersCompiled.EmptyReadOnlyParameters;
 	  }
 	;
 
@@ -1573,8 +1505,8 @@ fixed_parameter
 	  parameter_type
 	  error
 	  {
+		Error_SyntaxError (yyToken);	  
 	  	Location l = GetLocation ($4);
-		CheckIdentifierToken (yyToken, l);
 		$$ = new Parameter ((FullNamedExpression) $3, "NeedSomeGeneratorHere", (Parameter.Modifier) $2, (Attributes) $1, l);
 	  }
 	| opt_attributes
@@ -1699,7 +1631,7 @@ parameter_array
 	  }
 	| opt_attributes params_modifier type error
 	  {
-		CheckIdentifierToken (yyToken, GetLocation ($4));
+		Error_SyntaxError (yyToken);
 		$$ = null;
 	  }
 	;
@@ -1977,8 +1909,9 @@ interface_declaration
 	    lbag.AppendToMember (current_class, GetLocation ($11), GetLocation ($13));
 		$$ = pop_current_class ();
 	  }
-	| opt_attributes opt_modifiers opt_partial INTERFACE error {
-		CheckIdentifierToken (yyToken, GetLocation ($5));
+	| opt_attributes opt_modifiers opt_partial INTERFACE error
+	  {
+		Error_SyntaxError (yyToken);	  
 	  }
 	;
 
@@ -2292,8 +2225,9 @@ constructor_initializer
 		$$ = new ConstructorThisInitializer ((Arguments) $5, GetLocation ($2));
 		lbag.AddLocation ($$, GetLocation ($1), GetLocation ($3), GetLocation ($6));
 	  }
-	| COLON error {
-		Report.Error (1018, GetLocation ($1), "Keyword `this' or `base' expected");
+	| error
+	  {
+		Error_SyntaxError (yyToken);
 		$$ = null;
 	  }
 	;
@@ -2708,9 +2642,7 @@ opt_nullable
 	: /* empty */
 	| INTERR_NULLABLE
 	  {
-		if (RootContext.MetadataCompatibilityVersion < MetadataVersion.v2)	  
-	  		Report.FeatureIsNotSupported (GetLocation ($1), "nullable types");
-		else if (RootContext.Version < LanguageVersion.ISO_2)
+		if (RootContext.Version < LanguageVersion.ISO_2)
 			Report.FeatureIsNotAvailable (GetLocation ($1), "nullable types");
 	  
 	  	$$ = ComposedTypeSpecifier.CreateNullable (GetLocation ($1));
@@ -2753,9 +2685,7 @@ opt_type_argument_list
 	: /* empty */
 	| OP_GENERICS_LT type_arguments OP_GENERICS_GT
 	  {
-		if (RootContext.MetadataCompatibilityVersion < MetadataVersion.v2)	  
-	  		Report.FeatureIsNotSupported (GetLocation ($1), "generics");
-		else if (RootContext.Version < LanguageVersion.ISO_2)
+		if (RootContext.Version < LanguageVersion.ISO_2)
 			Report.FeatureIsNotAvailable (GetLocation ($1), "generics");	  
 	  
 		$$ = $2;
@@ -2794,7 +2724,7 @@ type_declaration_name
 	  {
 		lexer.parsing_generic_declaration = false;
 		var lt = (Tokenizer.LocatedToken) $1;
-		$$ = new MemberName (lt.Value, (TypeArguments)$3, lt.Location);	  
+		$$ = new MemberName (lt.Value, (TypeArguments)$3, lt.Location);
 	  }
 	;
 
@@ -2858,9 +2788,7 @@ opt_type_parameter_list
 	: /* empty */
 	| OP_GENERICS_LT_DECL type_parameters OP_GENERICS_GT
 	  {
-		if (RootContext.MetadataCompatibilityVersion < MetadataVersion.v2)	  
-	  		Report.FeatureIsNotSupported (GetLocation ($1), "generics");
-		else if (RootContext.Version < LanguageVersion.ISO_2)
+		if (RootContext.Version < LanguageVersion.ISO_2)
 			Report.FeatureIsNotAvailable (GetLocation ($1), "generics");
 	  
 		$$ = $2;
@@ -2987,7 +2915,7 @@ type_expression
 	| VOID pointer_stars
 	  {
 		$$ = new ComposedCast (new TypeExpression (TypeManager.void_type, GetLocation ($1)), (ComposedTypeSpecifier) $2);
-	  }	
+	  }
 	;
 
 type_list
@@ -3070,7 +2998,7 @@ primary_expression
 	| checked_expression
 	| unchecked_expression
 	| pointer_member_access
-	| anonymous_method_expression	
+	| anonymous_method_expression
 	;
 
 primary_expression_or_type
@@ -3349,10 +3277,6 @@ non_simple_argument
 		$$ = new Argument (new Arglist (GetLocation ($1)));
 		lbag.AddLocation ($$, GetLocation ($2), GetLocation ($3));
 	  }	  
-	| ARGLIST
-	  {
-		$$ = new Argument (new ArglistAccess (GetLocation ($1)));
-	  }
 	;
 
 variable_reference
@@ -3396,6 +3320,9 @@ expression_list_arguments
 	| expression_list_arguments COMMA expression_list_argument
 	  {
 		Arguments args = (Arguments) $1;
+		if (args [args.Count - 1] is NamedArgument && !($3 is NamedArgument))
+			Error_NamedArgumentExpected ((NamedArgument) args [args.Count - 1]);
+	  
 		args.Add ((Argument) $3);
 		$$ = args;	  
 	  }
@@ -3517,9 +3444,7 @@ new_expr_type
 anonymous_type_expression
 	: NEW OPEN_BRACE anonymous_type_parameters_opt_comma CLOSE_BRACE
 	  {
-		if (RootContext.MetadataCompatibilityVersion < MetadataVersion.v2)	  
-	  		Report.FeatureIsNotSupported (GetLocation ($1), "anonymous types");
-	  	else if (RootContext.Version <= LanguageVersion.ISO_2)
+		if (RootContext.Version <= LanguageVersion.ISO_2)
 	  		Report.FeatureIsNotAvailable (GetLocation ($1), "anonymous types");
 
 		$$ = new NewAnonymousType ((List<AnonymousTypeParameter>) $3, current_container, GetLocation ($1));
@@ -3630,13 +3555,17 @@ opt_array_initializer
 array_initializer
 	: OPEN_BRACE CLOSE_BRACE
 	  {
-		$$ = new ArrayInitializer (0, GetLocation ($1));
-		lbag.AddLocation ($$, GetLocation ($2));
+		var ai = new ArrayInitializer (0, GetLocation ($1));
+		ai.VariableDeclaration = current_variable;
+		lbag.AddLocation (ai, GetLocation ($2));
+		$$ = ai;
 	  }
 	| OPEN_BRACE variable_initializer_list opt_comma CLOSE_BRACE
 	  {
-		$$ = new ArrayInitializer ((List<Expression>) $2, GetLocation ($1));
-		lbag.AddLocation ($$, GetLocation ($3));
+		var ai = new ArrayInitializer ((List<Expression>) $2, GetLocation ($1));
+		ai.VariableDeclaration = current_variable;
+		lbag.AddLocation (ai, GetLocation ($3));
+		$$ = ai;
 	  }
 	;
 
@@ -3653,11 +3582,6 @@ variable_initializer_list
 		list.Add ((Expression) $3);
 		$$ = list;
 	  }
-	| error
-	  {
-	  	Error_SyntaxError (yyToken);
-	  	$$ = new List<Expression> ();
-	  }
 	;
 
 typeof_expression
@@ -3723,9 +3647,7 @@ unbound_type_name
 generic_dimension
 	: GENERIC_DIMENSION
 	  {
-		if (RootContext.MetadataCompatibilityVersion < MetadataVersion.v2)	  
-	  		Report.FeatureIsNotSupported (GetLocation ($1), "generics");
-		else if (RootContext.Version < LanguageVersion.ISO_2)
+		if (RootContext.Version < LanguageVersion.ISO_2)
 			Report.FeatureIsNotAvailable (GetLocation ($1), "generics");
 
 		$$ = $1;
@@ -3782,8 +3704,8 @@ anonymous_method_expression
 	  }
 	  block
 	  {
-		$$ = end_anonymous ((ToplevelBlock) $4);
-	}
+		$$ = end_anonymous ((ParametersBlock) $4);
+	  }
 	;
 
 opt_anonymous_method_signature
@@ -3836,11 +3758,6 @@ cast_expression
 		$$ = new Cast ((FullNamedExpression) $2, (Expression) $4, GetLocation ($1));
 		lbag.AddLocation ($$, GetLocation ($3));
 	  }
-	| OPEN_PARENS builtin_types CLOSE_PARENS prefixed_unary_expression
-	  {
-		$$ = new Cast ((FullNamedExpression) $2, (Expression) $4, GetLocation ($1));
-		lbag.AddLocation ($$, GetLocation ($3));
-	  }
 	;
 
 	//
@@ -4139,23 +4056,34 @@ opt_lambda_parameter_list
 	: /* empty */			{ $$ = ParametersCompiled.EmptyReadOnlyParameters; }
 	| lambda_parameter_list		{ 
 		var pars_list = (List<Parameter>) $1;
-		$$ = new ParametersCompiled (compiler, pars_list.ToArray ());
+		$$ = new ParametersCompiled (pars_list.ToArray ());
 	  }
 	;
 
 lambda_expression_body
+	: lambda_expression_body_simple
+	| block
+	;
+	
+lambda_expression_body_simple
 	: {
 		start_block (lexer.Location);
 	  }
-	  expression 
+	  expression_or_error	// Have to close block when error occurs
 	  {
 		Block b = end_block (lexer.Location);
 		b.AddStatement (new ContextualReturn ((Expression) $2));
 		$$ = b;
 	  } 
-	| block { 
-	  	$$ = $1; 
-	  } 
+	;
+	
+expression_or_error
+	: expression
+	| error
+	  {
+		Error_SyntaxError (yyToken);	
+		$$ = EmptyExpression.Null;
+	  }
 	;
 
 lambda_expression
@@ -4163,11 +4091,11 @@ lambda_expression
 	  {
 		var lt = (Tokenizer.LocatedToken) $1;
 		Parameter p = new ImplicitLambdaParameter (lt.Value, lt.Location);
-		start_anonymous (true, new ParametersCompiled (compiler, p), GetLocation ($1));
+		start_anonymous (true, new ParametersCompiled (p), GetLocation ($1));
 	  }
 	  lambda_expression_body
 	  {
-		$$ = end_anonymous ((ToplevelBlock) $4);
+		$$ = end_anonymous ((ParametersBlock) $4);
 		lbag.AddLocation ($$, GetLocation ($2));
 	  }
 	| OPEN_PARENS_LAMBDA
@@ -4184,20 +4112,24 @@ lambda_expression
 	  }
 	  lambda_expression_body 
 	  {
-		$$ = end_anonymous ((ToplevelBlock) $7);
+		$$ = end_anonymous ((ParametersBlock) $7);
 		lbag.AddLocation ($$, GetLocation ($3), GetLocation ($4));
 	  }
 	;
 
 expression
 	: assignment_expression 
-	| non_assignment_expression 
+	| non_assignment_expression
 	;
 	
 non_assignment_expression
 	: conditional_expression
 	| lambda_expression
-	| query_expression 
+	| query_expression
+	| ARGLIST
+	  {
+		$$ = new ArglistAccess (GetLocation ($1));
+	  }	
 	;
 
 constant_expression
@@ -4365,6 +4297,11 @@ modifier
 		if (!RootContext.Unsafe)
 			Error_UnsafeCodeNotAllowed (GetLocation ($1));
 	  }
+	| ASYNC
+	  {
+		$$ = Modifiers.ASYNC;
+		StoreModifierLocation ($$, GetLocation ($1));
+	  }
 	;
 
 opt_class_base
@@ -4376,11 +4313,16 @@ opt_class_base
 	;
 
 opt_type_parameter_constraints_clauses
-	: /* empty */		{ $$ = null; }
+	: /* empty */
 	| type_parameter_constraints_clauses 
 	  {
 		$$ = $1;
 	  }
+	| error
+	 {
+		Error_SyntaxError (yyToken);
+		$$ = null;
+	 }
 	;
 
 type_parameter_constraints_clauses
@@ -4478,9 +4420,7 @@ opt_type_parameter_variance
 	  }
 	| type_parameter_variance
 	  {
-		if (RootContext.MetadataCompatibilityVersion < MetadataVersion.v2)	  
-	  		Report.FeatureIsNotSupported (lexer.Location, "generic type variance");
-		else if (RootContext.Version <= LanguageVersion.V_3)
+		if (RootContext.Version <= LanguageVersion.V_3)
 			Report.FeatureIsNotAvailable (lexer.Location, "generic type variance");
 
 		$$ = $1;
@@ -4561,18 +4501,20 @@ statement_list
 	;
 
 statement
-	: declaration_statement
+	: block_variable_declaration
 	  {
-		if ($1 != null && (Block) $1 != current_block){
-			current_block.AddStatement ((Statement) $1);
-			current_block = (Block) $1;
-		}
+		current_block.AddStatement ((Statement) $1);
 	  }
 	| valid_declaration_statement
 	  {
 		current_block.AddStatement ((Statement) $1);
 	  }
 	| labeled_statement
+	| error
+	  {
+		Error_SyntaxError (yyToken);
+		$$ = null;
+	  }
 	;
 
 //
@@ -4587,12 +4529,9 @@ interactive_statement_list
 	;
 
 interactive_statement
-	: declaration_statement
+	: block_variable_declaration
 	  {
-		if ($1 != null && (Block) $1 != current_block){
-			current_block.AddStatement ((Statement) $1);
-			current_block = (Block) $1;
-		}
+		current_block.AddStatement ((Statement) $1);
 	  }
 	| interactive_valid_declaration_statement
 	  {
@@ -4635,7 +4574,7 @@ interactive_valid_declaration_statement
 
 embedded_statement
 	: valid_declaration_statement
-	| declaration_statement
+	| block_variable_declaration
 	  {
 		  Report.Error (1023, GetLocation ($1), "An embedded statement may not be a declaration or labeled statement");
 		  $$ = null;
@@ -4645,12 +4584,18 @@ embedded_statement
 		  Report.Error (1023, GetLocation ($1), "An embedded statement may not be a declaration or labeled statement");
 		  $$ = null;
 	  }
+	| error
+	  {
+		Error_SyntaxError (yyToken);
+		$$ = new EmptyStatement (GetLocation ($1));
+	  }
 	;
 
 empty_statement
 	: SEMICOLON
 	  {
-		$$ = new EmptyStatement (GetLocation ($1));
+		// Uses lexer.Location because semicolon location is not kept in quick mode
+		$$ = new EmptyStatement (lexer.Location);
 	  }
 	;
 
@@ -4658,33 +4603,14 @@ labeled_statement
 	: IDENTIFIER COLON 
 	  {
 		var lt = (Tokenizer.LocatedToken) $1;
-		LabeledStatement labeled = new LabeledStatement (lt.Value, lt.Location);
+		LabeledStatement labeled = new LabeledStatement (lt.Value, current_block, lt.Location);
 
-		if (current_block.AddLabel (labeled))
-			current_block.AddStatement (labeled);
+		current_block.AddLabel (labeled);
+		current_block.AddStatement (labeled);
 	  }
 	  statement
 	;
 
-declaration_statement
-	: local_variable_declaration SEMICOLON
-	  {
-		if ($1 != null){
-			var de = (Tuple<FullNamedExpression, List<object>>) $1;
-			$$ = declare_local_variables (de.Item1, de.Item2, de.Item1.Location);
-		}
-	  }
-
-	| local_constant_declaration SEMICOLON
-	  {
-		if ($1 != null){
-			var de = (Tuple<FullNamedExpression, List<object>>) $1;
-
-			$$ = declare_local_constants (de.Item1, de.Item2);
-		}
-	  }
-	;
-
 variable_type
 	: variable_type_simple
 	| variable_type_simple rank_specifiers
@@ -4782,60 +4708,128 @@ pointer_star
 	  }
 	;
 
-local_variable_declaration
-	: variable_type local_variable_declarators
+block_variable_declaration
+	: variable_type IDENTIFIER
 	  {
-		if ($1 != null) {
-			VarExpr ve = $1 as VarExpr;
-			if (ve != null) {
-				if (!((VariableDeclaration) ((List<object>)$2) [0]).HasInitializer)
-					ve.VariableInitializersCount = 0;
-				else
-					ve.VariableInitializersCount = ((List<object>)$2).Count;
-			}
-				
-			$$ = new Tuple<FullNamedExpression, List<object>> ((FullNamedExpression) $1, (List<object>) $2);
-		} else
-			$$ = null;
+		var lt = (Tokenizer.LocatedToken) $2;
+		var li = new LocalVariable (current_block, lt.Value, lt.Location);
+		current_block.AddLocalName (li);
+		current_variable = new BlockVariableDeclaration ((FullNamedExpression) $1, li);
 	  }
- 	;
-
-local_constant_declaration
-	: CONST variable_type local_constant_declarators
+	  opt_local_variable_initializer opt_variable_declarators SEMICOLON
 	  {
-		if ($2 != null)
-			$$ = new Tuple<FullNamedExpression, List<object>> ((FullNamedExpression) $2, (List<object>) $3);
-		else
-			$$ = null;
+		$$ = current_variable;
+		current_variable = null;
+		lbag.AddLocation ($$, GetLocation ($6));
+	  }
+	| CONST variable_type IDENTIFIER
+	  {
+		var lt = (Tokenizer.LocatedToken) $3;
+		var li = new LocalVariable (current_block, lt.Value, LocalVariable.Flags.Constant, lt.Location);
+		current_block.AddLocalName (li);
+		current_variable = new BlockConstantDeclaration ((FullNamedExpression) $2, li);
+	  }
+	  const_variable_initializer opt_const_declarators SEMICOLON
+	  {
+		$$ = current_variable;
+		current_variable = null;
+		lbag.AddLocation ($$, GetLocation ($1), GetLocation ($7));
 	  }
 	;
-	
-local_constant_declarators
-	: local_constant_declarator 
+
+opt_local_variable_initializer
+	: /* empty */
+	| ASSIGN block_variable_initializer
 	  {
-  	  	variables_bucket.Clear ();
-		if ($1 != null)
-			variables_bucket.Add ($1);
-		$$ = variables_bucket;
+		current_variable.Initializer = (Expression) $2;
+		// TODO: lbag
 	  }
-	| local_constant_declarators COMMA local_constant_declarator
+	| error
 	  {
-		if ($3 != null) {
-			var constants = (List<object>) $1;
-			constants.Add ($3);
+	  	if (yyToken == Token.OPEN_BRACKET_EXPR) {
+			Report.Error (650, lexer.Location,
+				"Syntax error, bad array declarator. To declare a managed array the rank specifier precedes the variable's identifier. To declare a fixed size buffer field, use the fixed keyword before the field type");
+		} else {
+			Error_SyntaxError (yyToken);
 		}
 	  }
 	;
 
-local_constant_declarator
-	: IDENTIFIER ASSIGN constant_initializer_expr
+opt_variable_declarators
+	: /* empty */
+	| variable_declarators
+	;
+	
+variable_declarators
+	: variable_declarator
+	| variable_declarators variable_declarator
+	;
+	
+variable_declarator
+	: COMMA IDENTIFIER
 	  {
-		$$ = new VariableDeclaration ((Tokenizer.LocatedToken) $1, (Expression) $3);
+		var lt = (Tokenizer.LocatedToken) $2;	  
+		var li = new LocalVariable (current_variable.Variable, lt.Value, lt.Location);
+		var d = new BlockVariableDeclaration.Declarator (li, null);
+		current_variable.AddDeclarator (d);
+		current_block.AddLocalName (li);
+	  	lbag.AddLocation (d, GetLocation ($1));
 	  }
-	| IDENTIFIER error
+	| COMMA IDENTIFIER ASSIGN block_variable_initializer
 	  {
-		Report.Error (145, GetLocation ($1), "A const field requires a value to be provided");
-		$$ = null;
+		var lt = (Tokenizer.LocatedToken) $2;	  
+		var li = new LocalVariable (current_variable.Variable, lt.Value, lt.Location);
+		var d = new BlockVariableDeclaration.Declarator (li, (Expression) $4);
+		current_variable.AddDeclarator (d);
+		current_block.AddLocalName (li);
+	  	lbag.AddLocation (d, GetLocation ($1), GetLocation ($3));
+	  }
+	;
+	
+const_variable_initializer
+	: /* empty */
+	  {
+		Report.Error (145, lexer.Location, "A const field requires a value to be provided");
+	  }
+	| ASSIGN constant_initializer_expr 
+	  {
+		current_variable.Initializer = (Expression) $2;
+	  }
+	;
+	
+opt_const_declarators
+	: /* empty */
+	| const_declarators
+	;
+	
+const_declarators
+	: const_declarator
+	| const_declarators const_declarator
+	;
+	
+const_declarator
+	: COMMA IDENTIFIER ASSIGN constant_initializer_expr
+	  {
+		var lt = (Tokenizer.LocatedToken) $2;	  
+		var li = new LocalVariable (current_block, lt.Value, LocalVariable.Flags.Constant, lt.Location);
+		var d = new BlockVariableDeclaration.Declarator (li, (Expression) $4);
+		current_variable.AddDeclarator (d);
+		current_block.AddLocalName (li);
+	  	lbag.AddLocation (d, GetLocation ($1), GetLocation ($3));
+	  }
+	;
+	
+block_variable_initializer
+	: variable_initializer
+	| STACKALLOC simple_type OPEN_BRACKET_EXPR expression CLOSE_BRACKET
+	  {
+		$$ = new StackAlloc ((Expression) $2, (Expression) $4, GetLocation ($1));
+		lbag.AddLocation ($$, GetLocation ($3), GetLocation ($5));
+	  }
+	| STACKALLOC simple_type
+	  {
+		Report.Error (1575, GetLocation ($1), "A stackalloc expression requires [] after type");
+		$$ = new StackAlloc ((Expression) $2, null, GetLocation ($1));		
 	  }
 	;
 
@@ -4868,11 +4862,6 @@ statement_expression
 
 		$$ = new StatementExpression (s);
 	  }
-	| error
-	  {
-		Error_SyntaxError (yyToken);
-		$$ = null;
-	  }
 	;
 
 interactive_statement_expression
@@ -4901,7 +4890,7 @@ if_statement
 	  embedded_statement
 	  { 
 		if ($5 is EmptyStatement)
-			Report.Warning (642, 3, GetLocation ($5), "Possible mistaken empty statement");
+			Warning_EmptyStatement (GetLocation ($5));
 		
 		$$ = new If ((BooleanExpression) $3, (Statement) $5, GetLocation ($1));
 		lbag.AddStatement ($$, GetLocation ($2), GetLocation ($4));
@@ -4913,33 +4902,29 @@ if_statement
 		lbag.AddStatement ($$, GetLocation ($2), GetLocation ($4), GetLocation ($6));
 		
 		if ($5 is EmptyStatement)
-			Report.Warning (642, 3, GetLocation ($5), "Possible mistaken empty statement");
+			Warning_EmptyStatement (GetLocation ($5));
 		if ($7 is EmptyStatement)
-			Report.Warning (642, 3, GetLocation ($7), "Possible mistaken empty statement");
+			Warning_EmptyStatement (GetLocation ($7));
 	  }
 	;
 
 switch_statement
-	: SWITCH open_parens_any
-	  { 
-		if (switch_stack == null)
-			switch_stack = new Stack<Block> (2);
-		switch_stack.Push (current_block);
+	: SWITCH open_parens_any expression CLOSE_PARENS OPEN_BRACE
+	  {
+		start_block (GetLocation ($5));
 	  }
-	  expression CLOSE_PARENS 
-	  OPEN_BRACE opt_switch_sections CLOSE_BRACE
+	  opt_switch_sections CLOSE_BRACE
 	  {
-		$$ = new Switch ((Expression) $4, (List<SwitchSection>) $7, GetLocation ($1));
-		lbag.AddStatement ($$, GetLocation ($2), GetLocation ($5), GetLocation ($6), GetLocation ($8));
-		
-		current_block = (Block) switch_stack.Pop ();
+		$$ = new Switch ((Expression) $3, (ExplicitBlock) current_block.Explicit, (List<SwitchSection>) $7, GetLocation ($1));	
+		end_block (GetLocation ($8));
+		lbag.AddStatement ($$, GetLocation ($2), GetLocation ($4));
 	  }
 	;
 
 opt_switch_sections
 	: /* empty */ 		
       {
-		Report.Warning (1522, 1, lexer.Location, "Empty switch block"); 
+		Report.Warning (1522, 1, current_block.StartLocation, "Empty switch block"); 
 		$$ = new List<SwitchSection> ();
 	  }
 	| switch_sections
@@ -4960,6 +4945,11 @@ switch_sections
 		sections.Add ((SwitchSection) $2);
 		$$ = sections;
 	  }
+	| error
+	  {
+		Error_SyntaxError (yyToken);	  
+		$$ = new List<SwitchSection> ();
+	  } 
 	;
 
 switch_section
@@ -4969,7 +4959,7 @@ switch_section
 	  }
  	  statement_list 
 	  {
-		$$ = new SwitchSection ((List<SwitchLabel>) $1, current_block.Explicit);
+		$$ = new SwitchSection ((List<SwitchLabel>) $1, current_block);
 	  }
 	;
 
@@ -5012,6 +5002,9 @@ iteration_statement
 while_statement
 	: WHILE open_parens_any boolean_expression CLOSE_PARENS embedded_statement
 	  {
+		if ($5 is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE)
+			Warning_EmptyStatement (GetLocation ($5));
+	  
 		$$ = new While ((BooleanExpression) $3, (Statement) $5, GetLocation ($1));
 		lbag.AddStatement ($$, GetLocation ($2), GetLocation ($4));
 	  }
@@ -5027,54 +5020,38 @@ do_statement
 	;
 
 for_statement
-	: FOR open_parens_any opt_for_initializer SEMICOLON
+	: FOR open_parens_any
 	  {
-		Location l = lexer.Location;
-		start_block (l);  
-		Block assign_block = current_block;
-
-		if ($3 is Tuple<FullNamedExpression, List<object>>){
-			var de = (Tuple<FullNamedExpression, List<object>>) $3;
-			
-			var type = de.Item1;
-
-			foreach (VariableDeclaration decl in de.Item2){
-
-				LocalInfo vi;
-
-				vi = current_block.AddVariable (type, decl.identifier, decl.Location);
-				if (vi == null)
-					continue;
-
-				Expression expr = decl.GetInitializer (type);
-					
-				LocalVariableReference var;
-				var = new LocalVariableReference (assign_block, decl.identifier, l);
-
-				if (expr != null) {
-					Assign a = new SimpleAssign (var, expr, decl.Location);
-					
-					assign_block.AddStatement (new StatementExpression (a));
-				}
-			}
-			
-			// Note: the $$ below refers to the value of this code block, not of the LHS non-terminal.
-			// This can be referred to as $5 below.
-			$$ = null;
-		} else {
-			$$ = $3;
-		}
-	  } 
+		start_block (GetLocation ($2));
+		current_block.IsCompilerGenerated = true;
+	  }
+	  for_statement_cont
+	  {
+		$$ = $4;
+	  }
+	;
+	
+// Has to use be extra rule to recover started block
+for_statement_cont
+	: opt_for_initializer SEMICOLON
 	  opt_for_condition SEMICOLON
-	  opt_for_iterator CLOSE_PARENS 
+	  opt_for_iterator CLOSE_PARENS
 	  embedded_statement
 	  {
-		For f = new For ((Statement) $5, (BooleanExpression) $6, (Statement) $8, (Statement) $10, GetLocation ($1));
+		if ($7 is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE)
+			Warning_EmptyStatement (GetLocation ($7));
+	  
+		For f = new For ((Statement) $1, (BooleanExpression) $3, (Statement) $5, (Statement) $7, GetLocation ($-2));
 		current_block.AddStatement (f);
 		
-		lbag.AddStatement (f, GetLocation ($2), GetLocation ($4), GetLocation ($7), GetLocation ($9));
+		lbag.AddStatement (f, current_block.StartLocation, GetLocation ($2), GetLocation ($4), GetLocation ($6));
 
-		$$ = end_block (lexer.Location);
+		$$ = end_block (GetLocation ($2));
+	  }
+	| error
+	  {
+		Error_SyntaxError (yyToken);
+		$$ = end_block (current_block.StartLocation);
 	  }
 	;
 
@@ -5084,7 +5061,18 @@ opt_for_initializer
 	;
 
 for_initializer
-	: local_variable_declaration
+	: variable_type IDENTIFIER
+	  {
+		var lt = (Tokenizer.LocatedToken) $2;
+		var li = new LocalVariable (current_block, lt.Value, lt.Location);
+		current_block.AddLocalName (li);
+		current_variable = new BlockVariableDeclaration ((FullNamedExpression) $1, li);
+	  }
+	  opt_local_variable_initializer opt_variable_declarators
+	  {
+		$$ = current_variable;
+		current_variable = null;
+	  }
 	| statement_expression_list
 	;
 
@@ -5107,12 +5095,14 @@ statement_expression_list
 	| statement_expression_list COMMA statement_expression
 	  {
 	  	var sl = $1 as StatementList;
-	  	if (sl == null)
+	  	if (sl == null) {
 	  		sl = new StatementList ((Statement) $1, (Statement) $3);
-	  	else
+			lbag.AddStatement (sl, GetLocation ($2));
+	  	} else {
 	  		sl.Add ((Statement) $3);
+	  		lbag.AppendTo (sl, GetLocation ($2));
+	  	}
 	  		
-		lbag.AddStatement (sl, GetLocation ($2));
 		$$ = sl;
 	  }
 	;
@@ -5123,37 +5113,26 @@ foreach_statement
 		Report.Error (230, GetLocation ($1), "Type and identifier are both required in a foreach statement");
 		$$ = null;
 	  }
-	| FOREACH open_parens_any type IDENTIFIER IN
-	  expression CLOSE_PARENS 
+	| FOREACH open_parens_any type IDENTIFIER IN expression CLOSE_PARENS 
 	  {
-		start_block (lexer.Location);
-		Block foreach_block = current_block;
-
+		start_block (GetLocation ($2));
+		current_block.IsCompilerGenerated = true;
+		
 		var lt = (Tokenizer.LocatedToken) $4;
-		Location l = lt.Location;
-		LocalInfo vi = foreach_block.AddVariable ((Expression) $3, lt.Value, l);
-		if (vi != null) {
-			vi.SetReadOnlyContext (LocalInfo.ReadOnlyContext.Foreach);
-
-			// Get a writable reference to this read-only variable.
-			//
-			// Note that the $$ here refers to the value of _this_ code block,
-			// not the value of the LHS non-terminal.  This can be referred to as $8 below.
-			$$ = new LocalVariableReference (foreach_block, lt.Value, l, vi, false);
-		} else {
-			$$ = null;
-		}
+		var li = new LocalVariable (current_block, lt.Value, LocalVariable.Flags.ForeachVariable | LocalVariable.Flags.Used, lt.Location);
+		current_block.AddLocalName (li);
+		$$ = li;
 	  } 
-	  embedded_statement 
+	  embedded_statement
 	  {
-		if ($8 != null) {
-			Foreach f = new Foreach ((Expression) $3, (LocalVariableReference) $8, (Expression) $6, (Statement) $9, GetLocation ($1));
-			lbag.AddStatement (f, GetLocation ($2), GetLocation ($5), GetLocation ($7));
-			
-			current_block.AddStatement (f);
-		}
-
-		$$ = end_block (lexer.Location);
+		if ($9 is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE)
+			Warning_EmptyStatement (GetLocation ($9));
+	  
+		Foreach f = new Foreach ((Expression) $3, (LocalVariable) $8, (Expression) $6, (Statement) $9, GetLocation ($1));
+		current_block.AddStatement (f);
+		
+		lbag.AddStatement (f, GetLocation ($2), GetLocation ($5), GetLocation ($7));
+		$$ = end_block (GetLocation ($7));
 	  }
 	;
 
@@ -5230,7 +5209,7 @@ yield_statement
 			Report.FeatureIsNotAvailable (lt.Location, "iterators");
 		}
 		
-		current_block.Toplevel.IsIterator = true;
+		current_block.ParametersBlock.TopBlock.IsIterator = true;
 		$$ = new Yield ((Expression) $3, lt.Location);
 		lbag.AddStatement ($$, GetLocation ($2), GetLocation ($4));
 	  }
@@ -5244,7 +5223,7 @@ yield_statement
 			Report.FeatureIsNotAvailable (lt.Location, "iterators");
 		}
 		
-		current_block.Toplevel.IsIterator = true;
+		current_block.ParametersBlock.TopBlock.IsIterator = true;
 		$$ = new YieldBreak (lt.Location);
 		lbag.AddStatement ($$, GetLocation ($2), GetLocation ($3));
 	  }
@@ -5304,63 +5283,44 @@ catch_clauses
 	;
 
 opt_identifier
-	: /* empty */	{ $$ = null; }
+	: /* empty */
 	| IDENTIFIER
 	;
 
 catch_clause 
-	: CATCH opt_catch_args 
+	: CATCH block
 	  {
-		if ($2 != null) {
-			var cc = (Tuple<FullNamedExpression, Tokenizer.LocatedToken>) $2;
-			var lt = cc.Item2;
-
-			if (lt != null){
-				List<object> one = new List<object> (1);
-
-				one.Add (new VariableDeclaration (lt, null));
+		$$ = new Catch ((Block) $2, GetLocation ($1));
+	  }
+	| CATCH open_parens_any type opt_identifier CLOSE_PARENS
+	  {
+		start_block (GetLocation ($2));
+		var c = new Catch (current_block, GetLocation ($1));
+		c.TypeExpression = (FullNamedExpression) $3;
 
-				start_block (lexer.Location);
-				current_block = declare_local_variables (cc.Item1, one, lt.Location);
-			}
-		}
-	  } block {
-		Expression type = null;
-		string id = null;
-		Block var_block = null;
-
-		if ($2 != null){
-			var cc = (Tuple<FullNamedExpression, Tokenizer.LocatedToken>) $2;
-			type = cc.Item1;
-			var lt = cc.Item2;
-
-			if (lt != null){
-				id = lt.Value;
-				var_block = end_block (lexer.Location);
-			}
+		if ($4 != null) {
+			var lt = (Tokenizer.LocatedToken) $4;
+			c.Variable = new LocalVariable (current_block, lt.Value, lt.Location);
+			current_block.AddLocalName (c.Variable);
 		}
-
-		$$ = new Catch (type, id, (Block) $4, var_block, ((Block) $4).loc);
-		lbag.AddLocation ($$, GetLocation ($1));
-		lbag.AppendTo ($$, lbag.GetLocations ($2));
+		
+		lbag.AddLocation (c, GetLocation ($2), GetLocation ($5));
+		$$ = c;
 	  }
-        ;
-
-opt_catch_args
-	: /* empty */ { $$ = null; }
-	| catch_args
-	;	  
-
-catch_args 
-	: open_parens_any type opt_identifier CLOSE_PARENS 
+	  block_prepared
 	  {
-		$$ = new Tuple<FullNamedExpression, Tokenizer.LocatedToken> ((FullNamedExpression)$2, (Tokenizer.LocatedToken) $3);
-		lbag.AddLocation ($$, GetLocation ($1), GetLocation ($4));
+		$$ = $6;
 	  }
-	| open_parens_any CLOSE_PARENS 
+	| CATCH open_parens_any error
 	  {
-		Report.Error (1015, GetLocation ($1), "A type that derives from `System.Exception', `object', or `string' expected");
-		$$ = null;
+	  	if (yyToken == Token.CLOSE_PARENS) {
+			Report.Error (1015, lexer.Location,
+				"A type that derives from `System.Exception', `object', or `string' expected");
+		} else {
+			Error_SyntaxError (yyToken);
+		}
+		
+		$$ = new Catch (null, GetLocation ($1));
 	  }
 	;
 
@@ -5388,139 +5348,89 @@ unsafe_statement
 	  }
 	;
 
-fixed_statement
-	: FIXED open_parens_any 
-	  type_and_void fixed_pointer_declarators 
-	  CLOSE_PARENS
-	  {
-		start_block (lexer.Location);
-	  }
-	  embedded_statement 
+lock_statement
+	: LOCK open_parens_any expression CLOSE_PARENS embedded_statement
 	  {
-		Expression type = (Expression) $3;
-	  	var list = (List<KeyValuePair<Tokenizer.LocatedToken, Expression>>) $4;
-		Fixed f = new Fixed (type,
-			list.ConvertAll (i => {
-				var v = new KeyValuePair<LocalInfo, Expression> (current_block.AddVariable (type, i.Key.Value, i.Key.Location), i.Value);
-				if (v.Key != null) {
-					v.Key.SetReadOnlyContext (LocalInfo.ReadOnlyContext.Fixed);
-					v.Key.Pinned = true;
-				}
-				return v;
-			}), (Statement) $7, GetLocation ($1));
-
-		lbag.AddStatement (f, GetLocation ($2), GetLocation ($5));
-
-		current_block.AddStatement (f);
-
-		$$ = end_block (lexer.Location);
+		if ($5 is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE)
+			Warning_EmptyStatement (GetLocation ($5));
+	  
+		$$ = new Lock ((Expression) $3, (Statement) $5, GetLocation ($1));
+		lbag.AddStatement ($$, GetLocation ($2), GetLocation ($4));
 	  }
 	;
 
-fixed_pointer_declarators
-	: fixed_pointer_declarator	{ 
-	   	var declarators = new List<KeyValuePair<Tokenizer.LocatedToken, Expression>> (2);
-	   	if ($1 != null)
-			declarators.Add ((KeyValuePair<Tokenizer.LocatedToken, Expression>)$1);
-		$$ = declarators;
-	  }
-	| fixed_pointer_declarators COMMA fixed_pointer_declarator
+fixed_statement
+	: FIXED open_parens_any variable_type IDENTIFIER
 	  {
-		var declarators = (List<KeyValuePair<Tokenizer.LocatedToken, Expression>>) $1;
-		if ($3 != null)
-			declarators.Add ((KeyValuePair<Tokenizer.LocatedToken, Expression>)$3);
-		$$ = declarators;
+	    start_block (GetLocation ($2));
+	    
+		var lt = (Tokenizer.LocatedToken) $4;
+		var li = new LocalVariable (current_block, lt.Value, LocalVariable.Flags.FixedVariable | LocalVariable.Flags.Used, lt.Location);
+		current_block.AddLocalName (li);
+		current_variable = new Fixed.VariableDeclaration ((FullNamedExpression) $3, li);
 	  }
-	;
-
-fixed_pointer_declarator
-	: IDENTIFIER ASSIGN expression
+	  using_or_fixed_variable_initializer opt_variable_declarators CLOSE_PARENS
 	  {
-		var lt = (Tokenizer.LocatedToken) $1;
-		$$ = new KeyValuePair<Tokenizer.LocatedToken, Expression> (lt, (Expression) $3);
+		$$ = current_variable;
+		current_variable = null;
 	  }
-	| IDENTIFIER
+	  embedded_statement
 	  {
-		Report.Error (210, ((Tokenizer.LocatedToken) $1).Location, "You must provide an initializer in a fixed or using statement declaration");
-		$$ = null;
+		if ($10 is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE)
+			Warning_EmptyStatement (GetLocation ($10));
+	  
+		Fixed f = new Fixed ((Fixed.VariableDeclaration) $9, (Statement) $10, GetLocation ($1));
+		current_block.AddStatement (f);
+		$$ = end_block (GetLocation ($8));
 	  }
 	;
 
-lock_statement
-	: LOCK open_parens_any expression CLOSE_PARENS embedded_statement
+using_statement
+	: USING open_parens_any variable_type IDENTIFIER
 	  {
-		$$ = new Lock ((Expression) $3, (Statement) $5, GetLocation ($1));
-		lbag.AddStatement ($$, GetLocation ($2), GetLocation ($4));
+	    start_block (GetLocation ($2));
+	    
+		var lt = (Tokenizer.LocatedToken) $4;
+		var li = new LocalVariable (current_block, lt.Value, LocalVariable.Flags.UsingVariable | LocalVariable.Flags.Used, lt.Location);
+		current_block.AddLocalName (li);
+		current_variable = new Using.VariableDeclaration ((FullNamedExpression) $3, li);
 	  }
-	;
-
-using_statement
-	: USING open_parens_any local_variable_declaration CLOSE_PARENS
+	  using_or_fixed_variable_initializer opt_variable_declarators CLOSE_PARENS
 	  {
-		start_block (lexer.Location);
-		Block assign_block = current_block;
-
-		var de = (Tuple<FullNamedExpression, List<object>>) $3;
-		Location l = GetLocation ($1);
-
-		var vars = new Stack<Tuple<LocalVariableReference, Expression>> ();
-
-		lbag.AddStatement (assign_block, GetLocation ($1), GetLocation ($2), GetLocation ($4));
-
-		foreach (VariableDeclaration decl in de.Item2) {
-			LocalInfo vi = current_block.AddVariable (de.Item1, decl.identifier, decl.Location);
-			if (vi == null)
-				continue;
-			vi.SetReadOnlyContext (LocalInfo.ReadOnlyContext.Using);
-
-			Expression expr = decl.GetInitializer (de.Item1);
-			if (expr == null) {
-				Report.Error (210, l, "You must provide an initializer in a fixed or using statement declaration");
-				continue;
-			}
-			LocalVariableReference var;
-
-			// Get a writable reference to this read-only variable.
-			var = new LocalVariableReference (assign_block, decl.identifier, l, vi, false);
-
-			// This is so that it is not a warning on using variables
-			vi.Used = true;
-
-			vars.Push (new Tuple<LocalVariableReference, Expression> (var, expr));
-
-			// Assign a = new SimpleAssign (var, expr, decl.Location);
-			// assign_block.AddStatement (new StatementExpression (a));
-		}
-
-		// Note: the $$ here refers to the value of this code block and not of the LHS non-terminal.
-		// It can be referred to as $5 below.
-		$$ = vars;
+		$$ = current_variable;	  
+		current_variable = null;
 	  }
 	  embedded_statement
 	  {
-		Statement stmt = (Statement) $6;
-		var vars = (Stack<Tuple<LocalVariableReference, Expression>>) $5;
-		Location l = GetLocation ($1);
-
-		while (vars.Count > 0) {
-			  var de = vars.Pop ();
-			  stmt = new Using (de.Item1, de.Item2, stmt, l);
-		}
-		current_block.AddStatement (stmt);
-		$$ = end_block (lexer.Location);
+		if ($10 is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE)
+			Warning_EmptyStatement (GetLocation ($10));
+	  
+		Using u = new Using ((Using.VariableDeclaration) $9, (Statement) $10, GetLocation ($1));
+		current_block.AddStatement (u);
+		$$ = end_block (GetLocation ($8));
 	  }
-	| USING open_parens_any expression CLOSE_PARENS
+	| USING open_parens_any expression CLOSE_PARENS embedded_statement
 	  {
-		start_block (lexer.Location);
+		if ($5 is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE)
+			Warning_EmptyStatement (GetLocation ($5));
+	  
+		Using u = new Using ((Expression) $3, (Statement) $5, GetLocation ($1));
+		lbag.AddStatement (u, GetLocation ($2), GetLocation ($4));
+		$$ = u;
 	  }
-	  embedded_statement
+	;
+	
+using_or_fixed_variable_initializer
+	: /* empty */
 	  {
-		UsingTemporary usingTemporary = new UsingTemporary ((Expression) $3, (Statement) $6, GetLocation ($1));
-		lbag.AddStatement (usingTemporary, GetLocation ($2), GetLocation ($4));
-		current_block.AddStatement (usingTemporary);
-		$$ = end_block (lexer.Location);
+		Report.Error (210, lexer.Location, "You must provide an initializer in a fixed or using statement declaration");
 	  }
-	; 
+	| ASSIGN variable_initializer
+	  {
+		current_variable.Initializer = (Expression) $2;
+		$$ = current_variable;
+	  }
+	;
 
 
 // LINQ
@@ -5569,16 +5479,18 @@ first_from_clause
 	  {
 		current_block = new Linq.QueryBlock (compiler, current_block, lexer.Location);
 	  
-		var lt = (Tokenizer.LocatedToken) $2;	  
-		$$ = new Linq.QueryExpression (new Linq.QueryStartClause ((Linq.QueryBlock)current_block, (Expression)$4, new SimpleMemberName (lt.Value, lt.Location), GetLocation ($1)));
+		var lt = (Tokenizer.LocatedToken) $2;
+		var rv = new Linq.RangeVariable (lt.Value, lt.Location);
+		$$ = new Linq.QueryExpression (new Linq.QueryStartClause ((Linq.QueryBlock)current_block, (Expression)$4, rv, GetLocation ($1)));
 	  }
 	| FROM_FIRST type IDENTIFIER IN expression
 	  {
 		current_block = new Linq.QueryBlock (compiler, current_block, lexer.Location);
 	  
 		var lt = (Tokenizer.LocatedToken) $3;
+		var rv = new Linq.RangeVariable (lt.Value, lt.Location);
 		$$ = new Linq.QueryExpression (
-			new Linq.QueryStartClause ((Linq.QueryBlock)current_block, (Expression)$5, new SimpleMemberName (lt.Value, lt.Location), GetLocation ($1)) {
+			new Linq.QueryStartClause ((Linq.QueryBlock)current_block, (Expression)$5, rv, GetLocation ($1)) {
 				IdentifierType = (FullNamedExpression)$2
 			}
 		);
@@ -5590,16 +5502,18 @@ nested_from_clause
 	  {
 		current_block = new Linq.QueryBlock (compiler, current_block, lexer.Location);
 	  
-		var lt = (Tokenizer.LocatedToken) $2;	  
-		$$ = new Linq.QueryExpression (new Linq.QueryStartClause ((Linq.QueryBlock)current_block, (Expression)$4, new SimpleMemberName (lt.Value, lt.Location), GetLocation ($1)));
+		var lt = (Tokenizer.LocatedToken) $2;
+		var rv = new Linq.RangeVariable (lt.Value, lt.Location);
+		$$ = new Linq.QueryExpression (new Linq.QueryStartClause ((Linq.QueryBlock)current_block, (Expression)$4, rv, GetLocation ($1)));
 	  }
 	| FROM type IDENTIFIER IN expression
 	  {
 		current_block = new Linq.QueryBlock (compiler, current_block, lexer.Location);
 	  
 		var lt = (Tokenizer.LocatedToken) $3;
+		var rv = new Linq.RangeVariable (lt.Value, lt.Location);
 		$$ = new Linq.QueryExpression (
-			new Linq.QueryStartClause ((Linq.QueryBlock)current_block, (Expression)$5, new SimpleMemberName (lt.Value, lt.Location), GetLocation ($1)) {
+			new Linq.QueryStartClause ((Linq.QueryBlock)current_block, (Expression)$5, rv, GetLocation ($1)) {
 				IdentifierType = (FullNamedExpression)$2
 			}
 		);
@@ -5614,7 +5528,7 @@ from_clause
 	  expression
 	  {
 		var lt = (Tokenizer.LocatedToken) $2;
-		var sn = new SimpleMemberName (lt.Value, lt.Location);
+		var sn = new Linq.RangeVariable (lt.Value, lt.Location);
 		$$ = new Linq.SelectMany ((Linq.QueryBlock)current_block, sn, (Expression)$5, GetLocation ($1));
 		
 		current_block.SetEndLocation (lexer.Location);
@@ -5629,7 +5543,7 @@ from_clause
 	  expression
 	  {
 		var lt = (Tokenizer.LocatedToken) $3;
-		var sn = new SimpleMemberName (lt.Value, lt.Location);
+		var sn = new Linq.RangeVariable (lt.Value, lt.Location);
 
 		$$ = new Linq.SelectMany ((Linq.QueryBlock)current_block, sn, (Expression)$6, GetLocation ($1)) {
 			IdentifierType = (FullNamedExpression)$2
@@ -5659,6 +5573,11 @@ query_body
 		$$ = head;
 	  }
 	| opt_query_body_clauses COMPLETE_COMPLETION
+	| error
+	  {
+		Error_SyntaxError (yyToken);
+		$$ = null;
+	  }
 	;
 	
 select_or_group_clause
@@ -5727,7 +5646,7 @@ let_clause
 	  expression
 	  {
 		var lt = (Tokenizer.LocatedToken) $2;
-		var sn = new SimpleMemberName (lt.Value, lt.Location);
+		var sn = new Linq.RangeVariable (lt.Value, lt.Location);
 	  	$$ = new Linq.Let ((Linq.QueryBlock) current_block, sn, (Expression)$5, GetLocation ($1));
 	  	
 		current_block.SetEndLocation (lexer.Location);
@@ -5778,27 +5697,39 @@ join_clause
 	  }
 	  expression opt_join_into
 	  {
-		var lt = (Tokenizer.LocatedToken) $2;
-		var sn = new SimpleMemberName (lt.Value, lt.Location);
-		SimpleMemberName sn2 = null;
-		
+		current_block.AddStatement (new ContextualReturn ((Expression) $11));
+		current_block.SetEndLocation (lexer.Location);
+	  
 		var outer_selector = linq_clause_blocks.Pop ();
 		var block = linq_clause_blocks.Pop ();
 
+		var lt = (Tokenizer.LocatedToken) $2;	
+		var sn = new Linq.RangeVariable (lt.Value, lt.Location);
+		Linq.RangeVariable into;
+		
 		if ($12 == null) {
+			into = sn;
 	  		$$ = new Linq.Join (block, sn, (Expression)$5, outer_selector, (Linq.QueryBlock) current_block, GetLocation ($1));
 		} else {
-			var lt2 = (Tokenizer.LocatedToken) $12;
-			sn2 = new SimpleMemberName (lt2.Value, lt2.Location);
-			$$ = new Linq.GroupJoin (block, sn, (Expression)$5, outer_selector, (Linq.QueryBlock) current_block,
-				sn2, GetLocation ($1));
+			//
+			// Set equals right side parent to beginning of linq query, it is not accessible therefore cannot cause name collisions
+			//
+			var parent = block.Parent;
+			while (parent is Linq.QueryBlock) {
+				parent = parent.Parent;
+			}
+			current_block.Parent = parent;
+			
+			((Linq.QueryBlock)current_block).AddRangeVariable (sn);
+		
+			lt = (Tokenizer.LocatedToken) $12;
+			into = new Linq.RangeVariable (lt.Value, lt.Location);
+
+			$$ = new Linq.GroupJoin (block, sn, (Expression)$5, outer_selector, (Linq.QueryBlock) current_block, into, GetLocation ($1));	
 		}
 
-		current_block.AddStatement (new ContextualReturn ((Expression) $11));
-		current_block.SetEndLocation (lexer.Location);
-		current_block = current_block.Parent;
-			
-		((Linq.QueryBlock)current_block).AddRangeVariable (sn2 ?? sn);
+		current_block = block.Parent;
+		((Linq.QueryBlock)current_block).AddRangeVariable (into);
 	  }
 	| JOIN type IDENTIFIER IN
 	  {
@@ -5826,29 +5757,43 @@ join_clause
 	  }
 	  expression opt_join_into
 	  {
-		var lt = (Tokenizer.LocatedToken) $3;
-		var sn = new SimpleMemberName (lt.Value, lt.Location);
-		SimpleMemberName sn2 = null;
+		current_block.AddStatement (new ContextualReturn ((Expression) $12));
+		current_block.SetEndLocation (lexer.Location);
+	  
 		var outer_selector = linq_clause_blocks.Pop ();
 		var block = linq_clause_blocks.Pop ();
 		
+		var lt = (Tokenizer.LocatedToken) $3;
+		var sn = new Linq.RangeVariable (lt.Value, lt.Location);
+		Linq.RangeVariable into;
+		
 		if ($13 == null) {
+			into = sn;		
 	  		$$ = new Linq.Join (block, sn, (Expression)$6, outer_selector, (Linq.QueryBlock) current_block, GetLocation ($1)) {
 	  			IdentifierType = (FullNamedExpression)$2
 	  		};
 		} else {
-			var lt2 = (Tokenizer.LocatedToken) $13;
-			sn2 = new SimpleMemberName (lt2.Value, lt2.Location);
-			$$ = new Linq.GroupJoin (block, sn, (Expression)$6, outer_selector, (Linq.QueryBlock) current_block, sn2, GetLocation ($1)) {
+			//
+			// Set equals right side parent to beginning of linq query, it is not accessible therefore cannot cause name collisions
+			//
+			var parent = block.Parent;
+			while (parent is Linq.QueryBlock) {
+				parent = parent.Parent;
+			}
+			current_block.Parent = parent;
+		
+			((Linq.QueryBlock)current_block).AddRangeVariable (sn);
+		
+			lt = (Tokenizer.LocatedToken) $13;
+			into = new Linq.RangeVariable (lt.Value, lt.Location); // TODO:
+			
+			$$ = new Linq.GroupJoin (block, sn, (Expression)$6, outer_selector, (Linq.QueryBlock) current_block, into, GetLocation ($1)) {
 	  			IdentifierType = (FullNamedExpression)$2
 	  		};			
 		}
 		
-		current_block.AddStatement (new ContextualReturn ((Expression) $12));
-		current_block.SetEndLocation (lexer.Location);
-		current_block = current_block.Parent;
-			
-		((Linq.QueryBlock)current_block).AddRangeVariable (sn2 ?? sn);
+		current_block = block.Parent;
+		((Linq.QueryBlock)current_block).AddRangeVariable (into);		
 	  }
 	;
 	
@@ -5959,7 +5904,8 @@ opt_query_continuation
 	  {
 		var current_block = linq_clause_blocks.Pop ();	  
 		var lt = (Tokenizer.LocatedToken) $2;
-  		$$ = new Linq.QueryStartClause ((Linq.QueryBlock)current_block, null, new SimpleMemberName (lt.Value, lt.Location), GetLocation ($1)) {
+		var rv = new Linq.RangeVariable (lt.Value, lt.Location);
+  		$$ = new Linq.QueryStartClause ((Linq.QueryBlock)current_block, null, rv, GetLocation ($1)) {
   			next = (Linq.AQueryClause)$4
   		};
 	  }
@@ -5995,7 +5941,7 @@ interactive_parsing
 		Parameter [] mpar = new Parameter [1];
 		mpar [0] = new Parameter (new TypeExpression (TypeManager.object_type, Location.Null), "$retval", Parameter.Modifier.REF, null, Location.Null);
 
-		ParametersCompiled pars = new ParametersCompiled (compiler, mpar);
+		ParametersCompiled pars = new ParametersCompiled (mpar);
 		current_local_parameters = pars;
 		Method method = new Method (
 			current_class,
@@ -6047,35 +5993,6 @@ close_brace_or_complete_completion
 %%
 
 // <summary>
-//   A class used to pass around variable declarations and constants
-// </summary>
-class VariableDeclaration {
-	public string identifier;
-	Expression initializer;
-	public Location Location;
-
-	public VariableDeclaration (Tokenizer.LocatedToken lt, Expression initializer)
-	{
-		this.identifier = lt.Value;
-		this.initializer = initializer;
-		this.Location = lt.Location;
-	}
-
-	public Expression GetInitializer (FullNamedExpression type)
-	{
-		if (initializer is ArrayInitializer)
-			return new ArrayCreation (type, (ArrayInitializer)initializer);
-
-		return initializer;
-	}
-
-	public bool HasInitializer {
-		get { return initializer != null; }
-	}
-}
-
-
-// <summary>
 //  A class used to hold info about an operator declarator
 // </summary>
 class OperatorDeclaration {
@@ -6122,6 +6039,11 @@ void Error_UnsafeCodeNotAllowed (Location loc)
 	Report.Error (227, loc, "Unsafe code requires the `unsafe' command line option to be specified");
 }
 
+void Warning_EmptyStatement (Location loc)
+{
+	Report.Warning (642, 3, loc, "Possible mistaken empty statement");
+}
+
 void Error_NamedArgumentExpected (NamedArgument a)
 {
 	Report.Error (1738, a.Location, "Named arguments must appear after the positional arguments");
@@ -6184,114 +6106,6 @@ void StoreModifierLocation (object token, Location loc)
 	mod_locations.Add (Tuple.Create ((Modifiers) token, loc));
 }
 
-Block declare_local_variables (FullNamedExpression type, List<object> variable_declarators, Location loc)
-{
-	Block implicit_block;
-
-	//
-	// If we are doing interactive editing, we want variable declarations
-	// that are in the top block to be added instead to the class as 
-	// static variables
-	//
-	if (RootContext.StatementMode){
-		bool hoist = true;
-
-		for (Block b = current_block; b != null; b = b.Parent){
-			if (b is ExplicitBlock && !(b is ToplevelBlock)){
-				// There has been an explicit block, we cant add to the class
-				hoist = false;
-				break;
-			}
-		}		
-		if (hoist){
-			//
-			// We can use "current_block" since we know there are no explicit blocks
-			//
-			foreach (VariableDeclaration decl in variable_declarators){
-				// We can not use the super-handy f.Initializer, because
-				// multiple lines would force code to be executed out of sync
-				var init = decl.GetInitializer (type);
-				if (init != null){
-				        string id = "$" + decl.identifier;
-					LocalInfo vi = current_block.AddVariable (type, id, decl.Location);					
-
-					// Avoid warning about this variable not being used.
-					vi.Used = true;
-
-					LocalVariableReference var;
-					var = new LocalVariableReferenceWithClassSideEffect (current_container, decl.identifier, current_block, id, vi, decl.Location);
-					Assign assign = new SimpleAssign (var, init, decl.Location);
-					current_block.AddStatement (new StatementExpression (assign));
-					assign = new SimpleAssign (new SimpleName (decl.identifier, decl.Location), var);
-					current_block.AddStatement (new StatementExpression (assign));
-				} else {
-					Field f = new Field (current_container, (FullNamedExpression) type, Modifiers.PUBLIC | Modifiers.STATIC,
-						new MemberName (decl.identifier, loc), null);
-					current_container.AddField (f);
-
-					// Register the field to be visible later as a global variable
-					Evaluator.QueueField (f);
-				}
-			}
-
-			return current_block;
-		}
-	}
-
-	//
-	// We use the `Used' property to check whether statements
-	// have been added to the current block.  If so, we need
-	// to create another block to contain the new declaration
-	// otherwise, as an optimization, we use the same block to
-	// add the declaration.
-	//
-	// FIXME: A further optimization is to check if the statements
-	// that were added were added as part of the initialization
-	// below.  In which case, no other statements have been executed
-	// and we might be able to reduce the number of blocks for
-	// situations like this:
-	//
-	// int j = 1;  int k = j + 1;
-	//
-	if (current_block.Used)
-		implicit_block = new Block (current_block, loc, lexer.Location);
-	else
-		implicit_block = current_block;
-
-	foreach (VariableDeclaration decl in variable_declarators){
-
-		if (implicit_block.AddVariable (type, decl.identifier, decl.Location) != null) {
-			if (decl.HasInitializer){
-				Assign assign;
-				
-				var lvr = new LocalVariableReference (implicit_block, decl.identifier, loc);
-
-				assign = new SimpleAssign (lvr, decl.GetInitializer (type), decl.Location);
-
-				implicit_block.AddStatement (new StatementExpression (assign));
-			}
-		}
-	}
-	
-	return implicit_block;
-}
-
-Block declare_local_constants (FullNamedExpression type, List<object> declarators)
-{
-	Block implicit_block;
-
-	if (current_block.Used)
-		implicit_block = new Block (current_block);
-	else
-		implicit_block = current_block;
-
-	foreach (VariableDeclaration decl in declarators){
-		implicit_block.AddConstant (type, decl.identifier, decl.GetInitializer (type), decl.Location);
-	}
-	
-	return implicit_block;
-}
-
 string CheckAttributeTarget (string a, Location l)
 {
 	switch (a) {
@@ -6339,18 +6153,19 @@ static CSharpParser ()
 	oob_stack = new Stack<object> ();
 }
 
-public CSharpParser (SeekableStreamReader reader, CompilationUnit file, CompilerContext ctx)
+public CSharpParser (SeekableStreamReader reader, CompilationUnit file, ModuleContainer module)
 {
 	if (RootContext.EvalMode)
 		undo = new Undo ();
 
 	this.file = file;
-	this.compiler = ctx;
-	current_namespace = new NamespaceEntry (ctx, null, file, null);
+	this.module = module;
+	this.compiler = module.Compiler;
+	current_namespace = new NamespaceEntry (module, null, file, null);
 	current_class = current_namespace.SlaveDeclSpace;
 	current_container = current_class.PartialContainer; // == RootContest.ToplevelTypes
 	oob_stack.Clear ();
-	lexer = new Tokenizer (reader, file, ctx);
+	lexer = new Tokenizer (reader, file, compiler);
 	
 	use_global_stacks = true;
 }
@@ -6369,15 +6184,21 @@ public void parse ()
 		Tokenizer tokenizer = lexer as Tokenizer;
 		tokenizer.cleanup ();		
 	} catch (Exception e){
-	  	if (e is yyParser.yyUnexpectedEof)
+	  	if (e is yyParser.yyUnexpectedEof) {
+			Error_SyntaxError (yyToken);
 			UnexpectedEOF = true;
-
-		if (e is yyParser.yyException)
+			return;
+		}
+			
+		if (e is yyParser.yyException) {
 			Report.Error (-25, lexer.Location, "Parsing error");
-		else if (yacc_verbose_flag > 0)
-			throw;	// Used by compiler-tester to test internal errors
-		else 
+		} else {
+			// Used by compiler-tester to test internal errors
+			if (yacc_verbose_flag > 0)
+				throw;
+		
 			Report.Error (589, lexer.Location, "Internal compiler error during parsing");
+		}
 	}
 
 	if (RootContext.ToplevelTypes.NamespaceEntry != null)
@@ -6392,11 +6213,6 @@ void CheckToken (int error, int yyToken, string msg, Location loc)
 		Report.Error (error, loc, msg);
 }
 
-void CheckIdentifierToken (int yyToken, Location loc)
-{
-	CheckToken (1041, yyToken, "Identifier expected", loc);
-}
-
 string ConsumeStoredComment ()
 {
 	string s = tmpComment;
@@ -6407,13 +6223,17 @@ string ConsumeStoredComment ()
 
 Location GetLocation (object obj)
 {
-	if (obj is Tokenizer.LocatedToken)
-		return ((Tokenizer.LocatedToken) obj).Location;
-	if (obj is MemberName)
-		return ((MemberName) obj).Location;
-
-	if (obj is Expression)
-		return ((Expression) obj).Location;
+	var lt = obj as Tokenizer.LocatedToken;
+	if (lt != null)
+		return lt.Location;
+		
+	var mn = obj as MemberName;
+	if (mn != null)
+		return mn.Location;
+		
+	var expr = obj as Expression;
+	if (expr != null)
+		return expr.Location;
 
 	return lexer.Location;
 }
@@ -6433,8 +6253,11 @@ public LocationsBag LocationsBag {
 
 void start_block (Location loc)
 {
-	if (current_block == null || parsing_anonymous_method) {
-		current_block = new ToplevelBlock (compiler, current_block, current_local_parameters, loc);
+	if (current_block == null) {
+		current_block = new ToplevelBlock (compiler, current_local_parameters, loc);
+		parsing_anonymous_method = false;
+	} else if (parsing_anonymous_method) {
+		current_block = new ParametersBlock (current_block, current_local_parameters, loc);
 		parsing_anonymous_method = false;
 	} else {
 		current_block = new ExplicitBlock (current_block, loc, Location.Null);
@@ -6450,8 +6273,7 @@ end_block (Location loc)
 	return retval;
 }
 
-void
-start_anonymous (bool lambda, ParametersCompiled parameters, Location loc)
+void start_anonymous (bool lambda, ParametersCompiled parameters, Location loc)
 {
 	if (RootContext.Version == LanguageVersion.ISO_1){
 		Report.FeatureIsNotAvailable (loc, "anonymous methods");
@@ -6459,6 +6281,7 @@ start_anonymous (bool lambda, ParametersCompiled parameters, Location loc)
 
 	oob_stack.Push (current_anonymous_method);
 	oob_stack.Push (current_local_parameters);
+	oob_stack.Push (current_variable);
 
 	current_local_parameters = parameters;
 
@@ -6474,13 +6297,14 @@ start_anonymous (bool lambda, ParametersCompiled parameters, Location loc)
  * Completes the anonymous method processing, if lambda_expr is null, this
  * means that we have a Statement instead of an Expression embedded 
  */
-AnonymousMethodExpression end_anonymous (ToplevelBlock anon_block)
+AnonymousMethodExpression end_anonymous (ParametersBlock anon_block)
 {
 	AnonymousMethodExpression retval;
 
 	current_anonymous_method.Block = anon_block;
 	retval = current_anonymous_method;
 
+	current_variable = (BlockVariableDeclaration) oob_stack.Pop ();
 	current_local_parameters = (ParametersCompiled) oob_stack.Pop ();
 	current_anonymous_method = (AnonymousMethodExpression) oob_stack.Pop ();
 
@@ -6493,7 +6317,6 @@ public NamespaceEntry CurrentNamespace {
        }
 }
 
-
 void Error_SyntaxError (int token)
 {
 	Error_SyntaxError (0, token, "Unexpected symbol");
@@ -6501,20 +6324,34 @@ void Error_SyntaxError (int token)
 
 void Error_SyntaxError (int error_code, int token, string msg)
 {
+	// An error message has been reported by tokenizer
+	if (token == Token.ERROR)
+		return;
+
 	string symbol = GetSymbolName (token);
 	string expecting = GetExpecting ();
+	var loc = lexer.Location - symbol.Length;
 	
 	if (error_code == 0) {
-		if (expecting == "`)'")
+		if (expecting == "`identifier'") {
+			if (token > Token.FIRST_KEYWORD && token < Token.LAST_KEYWORD) {
+				Report.Error (1041, loc, "Identifier expected, `{0}' is a keyword", symbol);
+				return;
+			}
+			
+			error_code = 1001;
+			expecting = "identifier";
+		} else if (expecting == "`)'") {
 			error_code = 1026;
-		else
+		} else {
 			error_code = 1525;
+		}
 	}
 	
 	if (string.IsNullOrEmpty (expecting))
-		Report.Error (error_code, lexer.Location, "{1} `{0}'", symbol, msg);
+		Report.Error (error_code, loc, "{1} `{0}'", symbol, msg);
 	else
-		Report.Error (error_code, lexer.Location, "{2} `{0}', expecting {1}", symbol, expecting, msg);	  
+		Report.Error (error_code, loc, "{2} `{0}', expecting {1}", symbol, expecting, msg);	  
 }
 
 string GetExpecting ()
@@ -6687,6 +6524,8 @@ static string GetTokenName (int token)
 		return "as";
 	case Token.ADD:
 		return "add";
+	case Token.ASYNC:
+		return "async";
 	case Token.BASE:
 		return "base";
 	case Token.BREAK:
@@ -6943,11 +6782,13 @@ static string GetTokenName (int token)
 	case Token.IDENTIFIER:
 		return "identifier";
 
+	case Token.EOF:
+		return "end-of-file";
+
 		// All of these are internal.
 	case Token.NONE:
 	case Token.ERROR:
 	case Token.FIRST_KEYWORD:
-	case Token.EOF:
 	case Token.EVAL_COMPILATION_UNIT_PARSER:
 	case Token.EVAL_USING_DECLARATIONS_UNIT_PARSER:
 	case Token.EVAL_STATEMENT_PARSER:
diff --git a/mcs/mcs/cs-tokenizer.cs b/mcs/mcs/cs-tokenizer.cs
index 4f6ad6b..4692fcc 100644
--- a/mcs/mcs/cs-tokenizer.cs
+++ b/mcs/mcs/cs-tokenizer.cs
@@ -15,9 +15,7 @@
 using System;
 using System.Text;
 using System.Collections.Generic;
-using System.IO;
 using System.Globalization;
-using System.Reflection;
 using System.Diagnostics;
 
 namespace Mono.CSharp
@@ -355,17 +353,6 @@ namespace Mono.CSharp
 
 		static StringBuilder static_cmd_arg = new System.Text.StringBuilder ();
 		
-		//
-		// Details about the error encoutered by the tokenizer
-		//
-		string error_details;
-		
-		public string error {
-			get {
-				return error_details;
-			}
-		}
-		
 		public int Line {
 			get {
 				return ref_line;
@@ -567,6 +554,7 @@ namespace Mono.CSharp
 			AddKeyword ("while", Token.WHILE);
 			AddKeyword ("partial", Token.PARTIAL);
 			AddKeyword ("where", Token.WHERE);
+			AddKeyword ("async", Token.ASYNC);
 
 			// LINQ keywords
 			AddKeyword ("from", Token.FROM);
@@ -775,6 +763,13 @@ namespace Mono.CSharp
 
 				res = -1;
 				break;
+
+			case Token.ASYNC:
+				if (parsing_block > 0 || RootContext.Version != LanguageVersion.Future) {
+					res = -1;
+					break;
+				}
+				break;
 			}
 
 			return res;
@@ -956,6 +951,12 @@ namespace Mono.CSharp
 				case Token.IDENTIFIER:
 					switch (ptoken) {
 					case Token.DOT:
+						if (bracket_level == 0) {
+							is_type = false;
+							can_be_type = true;
+						}
+
+						continue;
 					case Token.OP_GENERICS_LT:
 					case Token.COMMA:
 					case Token.DOUBLE_COLON:
@@ -2181,7 +2182,7 @@ namespace Mono.CSharp
 										Report.RegisterWarningRegion (loc).WarningEnable (loc, code, Report);
 									}
 								}
-							} while (code >= 0 && c != '\n');
+							} while (code >= 0 && c != '\n' && c != -1);
 						}
 
 						return;
@@ -2702,8 +2703,8 @@ namespace Mono.CSharp
 				}
 			} catch (IndexOutOfRangeException) {
 				Report.Error (645, Location, "Identifier too long (limit is 512 chars)");
-				col += pos - 1;
-				return Token.ERROR;
+				--pos;
+				col += pos;
 			}
 
 			col += pos - 1;
@@ -3213,8 +3214,7 @@ namespace Mono.CSharp
 					return consume_identifier (c);
 				}
 
-				error_details = ((char)c).ToString ();
-				return Token.ERROR;
+				Report.Error (1056, Location, "Unexpected character `{0}'", ((char) c).ToString ());
 			}
 
 			if (CompleteOnEOF){
@@ -3234,10 +3234,11 @@ namespace Mono.CSharp
 			int c = get_char ();
 			tokens_seen = true;
 			if (c == '\'') {
-				error_details = "Empty character literal";
-				Report.Error (1011, Location, error_details);
-				return Token.ERROR;
+				val = new CharLiteral ((char) c, Location);
+				Report.Error (1011, Location, "Empty character literal");
+				return Token.LITERAL;
 			}
+
 			if (c == '\r' || c == '\n') {
 				Report.Error (1010, Location, "Newline in constant");
 				return Token.ERROR;
@@ -3261,7 +3262,6 @@ namespace Mono.CSharp
 					if (c == '\n' || c == '\'')
 						break;
 				}
-				return Token.ERROR;
 			}
 
 			return Token.LITERAL;
diff --git a/mcs/mcs/decl.cs b/mcs/mcs/decl.cs
index 6cebf38..8411f2b 100644
--- a/mcs/mcs/decl.cs
+++ b/mcs/mcs/decl.cs
@@ -12,11 +12,7 @@
 //
 
 using System;
-using System.Text;
 using System.Collections.Generic;
-using System.Globalization;
-using System.Reflection.Emit;
-using System.Reflection;
 
 #if NET_2_1
 using XmlElement = System.Object;
@@ -24,6 +20,14 @@ using XmlElement = System.Object;
 using System.Xml;
 #endif
 
+#if STATIC
+using IKVM.Reflection;
+using IKVM.Reflection.Emit;
+#else
+using System.Reflection;
+using System.Reflection.Emit;
+#endif
+
 namespace Mono.CSharp {
 
 	//
@@ -297,6 +301,12 @@ namespace Mono.CSharp {
 			}
 		}
 
+		public virtual ModuleContainer Module {
+			get {
+				return Parent.Module;
+			}
+		}
+
 		public /*readonly*/ TypeContainer Parent;
 
 		/// <summary>
@@ -350,10 +360,6 @@ namespace Mono.CSharp {
 			AddAttributes (attrs, this);
 		}
 
-		public virtual Assembly Assembly {
-			get { return Parent.Module.Assembly; }
-		}
-
 		protected virtual void SetMemberName (MemberName new_name)
 		{
 			member_name = new_name;
@@ -509,7 +515,7 @@ namespace Mono.CSharp {
 			if (OptAttributes == null)
 				return null;
 
-			Attribute obsolete_attr = OptAttributes.Search (Compiler.PredefinedAttributes.Obsolete);
+			Attribute obsolete_attr = OptAttributes.Search (Module.PredefinedAttributes.Obsolete);
 			if (obsolete_attr == null)
 				return null;
 
@@ -571,7 +577,7 @@ namespace Mono.CSharp {
 					switch (pAccess) {
 					case Modifiers.INTERNAL:
 						if (al == Modifiers.PRIVATE || al == Modifiers.INTERNAL)
-							same_access_restrictions = TypeManager.IsThisOrFriendAssembly (Parent.Module.Assembly, p.Assembly);
+							same_access_restrictions = p.MemberDefinition.IsInternalAsPublic (mc.Module.DeclaringAssembly);
 						
 						break;
 
@@ -597,10 +603,9 @@ namespace Mono.CSharp {
 
 					case Modifiers.PROTECTED | Modifiers.INTERNAL:
 						if (al == Modifiers.INTERNAL)
-							same_access_restrictions = TypeManager.IsThisOrFriendAssembly (Parent.Module.Assembly, p.Assembly);
+							same_access_restrictions = p.MemberDefinition.IsInternalAsPublic (mc.Module.DeclaringAssembly);
 						else if (al == (Modifiers.PROTECTED | Modifiers.INTERNAL))
-							same_access_restrictions = mc.Parent.IsBaseTypeDefinition (p_parent) &&
-								TypeManager.IsThisOrFriendAssembly (Parent.Module.Assembly, p.Assembly);
+							same_access_restrictions = mc.Parent.IsBaseTypeDefinition (p_parent) && p.MemberDefinition.IsInternalAsPublic (mc.Module.DeclaringAssembly);
 						else
 							goto case Modifiers.PROTECTED;
 
@@ -706,7 +711,7 @@ namespace Mono.CSharp {
 			caching_flags &= ~Flags.HasCompliantAttribute_Undetected;
 
 			if (OptAttributes != null) {
-				Attribute cls_attribute = OptAttributes.Search (Compiler.PredefinedAttributes.CLSCompliant);
+				Attribute cls_attribute = OptAttributes.Search (Module.PredefinedAttributes.CLSCompliant);
 				if (cls_attribute != null) {
 					caching_flags |= Flags.HasClsCompliantAttribute;
 					if (cls_attribute.GetClsCompliantAttributeValue ())
@@ -749,8 +754,8 @@ namespace Mono.CSharp {
 		protected virtual bool VerifyClsCompliance ()
 		{
 			if (HasClsCompliantAttribute) {
-				if (CodeGen.Assembly.ClsCompliantAttribute == null) {
-					Attribute a = OptAttributes.Search (Compiler.PredefinedAttributes.CLSCompliant);
+				if (!Module.DeclaringAssembly.HasCLSCompliantAttribute) {
+					Attribute a = OptAttributes.Search (Module.PredefinedAttributes.CLSCompliant);
 					if ((caching_flags & Flags.ClsCompliantAttributeFalse) != 0) {
 						Report.Warning (3021, 2, a.Location,
 							"`{0}' does not need a CLSCompliant attribute because the assembly is not marked as CLS-compliant",
@@ -764,7 +769,7 @@ namespace Mono.CSharp {
 				}
 
 				if (!IsExposedFromAssembly ()) {
-					Attribute a = OptAttributes.Search (Compiler.PredefinedAttributes.CLSCompliant);
+					Attribute a = OptAttributes.Search (Module.PredefinedAttributes.CLSCompliant);
 					Report.Warning (3019, 2, a.Location, "CLS compliance checking will not be performed on `{0}' because it is not visible from outside this assembly", GetSignatureForError ());
 					return false;
 				}
@@ -780,7 +785,7 @@ namespace Mono.CSharp {
 				}
 
 				if (Parent.Parent != null && !Parent.IsClsComplianceRequired ()) {
-					Attribute a = OptAttributes.Search (Compiler.PredefinedAttributes.CLSCompliant);
+					Attribute a = OptAttributes.Search (Module.PredefinedAttributes.CLSCompliant);
 					Report.Warning (3018, 1, a.Location, "`{0}' cannot be marked as CLS-compliant because it is a member of non CLS-compliant type `{1}'",
 						GetSignatureForError (), Parent.GetSignatureForError ());
 					return false;
@@ -889,12 +894,15 @@ namespace Mono.CSharp {
 	public abstract class MemberSpec
 	{
 		[Flags]
-		protected enum StateFlags
+		public enum StateFlags
 		{
 			Obsolete_Undetected = 1,	// Obsolete attribute has not been detected yet
 			Obsolete = 1 << 1,			// Member has obsolete attribute
-			CLSCompliant_Undetected = 1 << 3,	// CLSCompliant attribute has not been detected yet
-			CLSCompliant = 1 << 4,		// Member is CLS Compliant
+			CLSCompliant_Undetected = 1 << 2,	// CLSCompliant attribute has not been detected yet
+			CLSCompliant = 1 << 3,		// Member is CLS Compliant
+			MissingDependency_Undetected = 1 << 4,
+			MissingDependency = 1 << 5,
+			HasDynamicElement = 1 << 6,
 
 			IsAccessor = 1 << 9,		// Method is an accessor
 			IsGeneric = 1 << 10,		// Member contains type arguments
@@ -908,7 +916,7 @@ namespace Mono.CSharp {
 		}
 
 		protected Modifiers modifiers;
-		protected StateFlags state;
+		public StateFlags state;
 		protected IMemberDefinition definition;
 		public readonly MemberKind Kind;
 		protected TypeSpec declaringType;
@@ -925,17 +933,11 @@ namespace Mono.CSharp {
 			this.definition = definition;
 			this.modifiers = modifiers;
 
-			state = StateFlags.Obsolete_Undetected | StateFlags.CLSCompliant_Undetected;
+			state = StateFlags.Obsolete_Undetected | StateFlags.CLSCompliant_Undetected | StateFlags.MissingDependency_Undetected;
 		}
 
 		#region Properties
 
-		public Assembly Assembly {
-			get {
-				return definition.Assembly;
-			}
-		}
-
 		public virtual int Arity {
 			get {
 				return 0;
@@ -1028,6 +1030,35 @@ namespace Mono.CSharp {
 			return oa;
 		}
 
+		//
+		// Returns a list of missing dependencies of this member. The list
+		// will contain types only but it can have numerous values for members
+		// like methods where both return type and all parameters are checked
+		//
+		public List<MissingType> GetMissingDependencies ()
+		{
+			if ((state & (StateFlags.MissingDependency | StateFlags.MissingDependency_Undetected)) == 0)
+				return null;
+
+			state &= ~StateFlags.MissingDependency_Undetected;
+
+			var imported = definition as ImportedDefinition;
+			List<MissingType> missing;
+			if (imported != null) {
+				missing = imported.ResolveMissingDependencies ();
+			} else if (this is ElementTypeSpec) {
+				missing = ((ElementTypeSpec) this).Element.GetMissingDependencies ();
+			} else {
+				missing = null;
+			}
+
+			if (missing != null) {
+				state |= StateFlags.MissingDependency;
+			}
+
+			return missing;
+		}
+
 		protected virtual bool IsNotCLSCompliant ()
 		{
 			return MemberDefinition.IsNotCLSCompliant ();
@@ -1044,10 +1075,10 @@ namespace Mono.CSharp {
 		{
 			var inflated = (MemberSpec) MemberwiseClone ();
 			inflated.declaringType = inflator.TypeInstance;
-			inflated.state |= StateFlags.PendingMetaInflate;
+			if (DeclaringType.IsGenericOrParentIsGeneric)
+				inflated.state |= StateFlags.PendingMetaInflate;
 #if DEBUG
-			if (inflated.ID > 0)
-				inflated.ID = -inflated.ID;
+			inflated.ID += 1000000;
 #endif
 			return inflated;
 		}
@@ -1062,17 +1093,30 @@ namespace Mono.CSharp {
 				return true;
 
 			var parentType = /* this as TypeSpec ?? */ DeclaringType;
+
+			// It's null for module context
+			if (invocationType == null)
+				invocationType = InternalType.FakeInternalType;
 		
 			//
 			// If only accessible to the current class or children
 			//
 			if (ma == Modifiers.PRIVATE)
 				return invocationType.MemberDefinition == parentType.MemberDefinition ||
-					TypeManager.IsNestedChildOf (invocationType, parentType);
+					TypeManager.IsNestedChildOf (invocationType, parentType.MemberDefinition);
 
 			if ((ma & Modifiers.INTERNAL) != 0) {
-				var b = TypeManager.IsThisOrFriendAssembly (invocationType == InternalType.FakeInternalType ?
-					 CodeGen.Assembly.Builder : invocationType.Assembly, Assembly);
+				bool b;
+				var assembly = invocationType == InternalType.FakeInternalType ?
+					RootContext.ToplevelTypes.DeclaringAssembly :
+					invocationType.MemberDefinition.DeclaringAssembly;
+
+				if (parentType == null) {
+					b = ((ITypeDefinition) MemberDefinition).IsInternalAsPublic (assembly);
+				} else {
+					b = DeclaringType.MemberDefinition.IsInternalAsPublic (assembly);
+				}
+
 				if (b || ma == Modifiers.INTERNAL)
 					return b;
 			}
@@ -1099,13 +1143,7 @@ namespace Mono.CSharp {
 				if (DeclaringType != null) {
 					compliant = DeclaringType.IsCLSCompliant ();
 				} else {
-					// TODO: NEED AssemblySpec
-					if (MemberDefinition.IsImported) {
-						var attr = MemberDefinition.Assembly.GetCustomAttributes (typeof (CLSCompliantAttribute), false);
-						compliant = attr.Length > 0 && ((CLSCompliantAttribute) attr[0]).IsCompliant;
-					} else {
-						compliant = CodeGen.Assembly.IsClsCompliant;
-					}
+					compliant = ((ITypeDefinition) MemberDefinition).DeclaringAssembly.IsCLSCompliant;
 				}
 
 				if (compliant)
@@ -1144,7 +1182,6 @@ namespace Mono.CSharp {
 	//
 	public interface IMemberDefinition
 	{
-		Assembly Assembly { get; }
 		string Name { get; }
 		bool IsImported { get; }
 
@@ -1183,8 +1220,6 @@ namespace Mono.CSharp {
 		//
 		public NamespaceEntry NamespaceEntry;
 
-		private Dictionary<string, FullNamedExpression> Cache = new Dictionary<string, FullNamedExpression> ();
-		
 		public readonly string Basename;
 		
 		protected Dictionary<string, MemberCore> defined_names;
@@ -1309,7 +1344,7 @@ namespace Mono.CSharp {
 		/// <remarks>
 		///  Should be overriten by the appropriate declaration space
 		/// </remarks>
-		public abstract TypeBuilder DefineType ();
+		public abstract void DefineType ();
 
 		protected void Error_MissingPartialModifier (MemberCore type)
 		{
@@ -1323,122 +1358,6 @@ namespace Mono.CSharp {
 			return MemberName.GetSignatureForError ();
 		}
 		
-		public bool CheckAccessLevel (TypeSpec check_type)
-		{
-// TODO: Use this instead
-//			return PartialContainer.Definition.IsAccessible (check_type);
-
-			TypeSpec tb = PartialContainer.Definition;
-			check_type = check_type.GetDefinition ();
-
-			var check_attr = check_type.Modifiers & Modifiers.AccessibilityMask;
-
-			switch (check_attr){
-			case Modifiers.PUBLIC:
-				return true;
-
-			case Modifiers.INTERNAL:
-				return TypeManager.IsThisOrFriendAssembly (Assembly, check_type.Assembly);
-				
-			case Modifiers.PRIVATE:
-				TypeSpec declaring = check_type.DeclaringType;
-				return tb == declaring.GetDefinition () || TypeManager.IsNestedChildOf (tb, declaring);	
-
-			case Modifiers.PROTECTED:
-				//
-				// Only accessible to methods in current type or any subtypes
-				//
-				return TypeManager.IsNestedFamilyAccessible (tb, check_type.DeclaringType);
-
-			case Modifiers.PROTECTED | Modifiers.INTERNAL:
-				if (TypeManager.IsThisOrFriendAssembly (Assembly, check_type.Assembly))
-					return true;
-
-				goto case Modifiers.PROTECTED;
-			}
-
-			throw new NotImplementedException (check_attr.ToString ());
-		}
-
-		private TypeSpec LookupNestedTypeInHierarchy (string name, int arity)
-		{
-			// TODO: GenericMethod only
-			if (PartialContainer == null)
-				return null;
-
-			// Has any nested type
-			// Does not work, because base type can have
-			//if (PartialContainer.Types == null)
-			//	return null;
-
-			var container = PartialContainer.CurrentType;
-
-			// Is not Root container
-			if (container == null)
-				return null;
-
-			var	t = MemberCache.FindNestedType (container, name, arity);
-			if (t == null)
-				return null;
-
-			// FIXME: Breaks error reporting
-			if (!t.IsAccessible (CurrentType))
-				return null;
-
-			return t;
-		}
-
-		//
-		// Public function used to locate types.
-		//
-		// Set 'ignore_cs0104' to true if you want to ignore cs0104 errors.
-		//
-		// Returns: Type or null if they type can not be found.
-		//
-		public override FullNamedExpression LookupNamespaceOrType (string name, int arity, Location loc, bool ignore_cs0104)
-		{
-			FullNamedExpression e;
-			if (arity == 0 && Cache.TryGetValue (name, out e))
-				return e;
-
-			e = null;
-			int errors = Report.Errors;
-
-			if (arity == 0) {
-				TypeParameter[] tp = CurrentTypeParameters;
-				if (tp != null) {
-					TypeParameter tparam = TypeParameter.FindTypeParameter (tp, name);
-					if (tparam != null)
-						e = new TypeParameterExpr (tparam, Location.Null);
-				}
-			}
-
-			if (e == null) {
-				TypeSpec t = LookupNestedTypeInHierarchy (name, arity);
-
-				if (t != null)
-					e = new TypeExpression (t, Location.Null);
-				else if (Parent != null)
-					e = Parent.LookupNamespaceOrType (name, arity, loc, ignore_cs0104);
-				else
-					e = NamespaceEntry.LookupNamespaceOrType (name, arity, loc, ignore_cs0104);
-			}
-
-			// TODO MemberCache: How to cache arity stuff ?
-			if (errors == Report.Errors && arity == 0)
-				Cache [name] = e;
-			
-			return e;
-		}
-
-		public override Assembly Assembly {
-			get { return Module.Assembly; }
-		}
-
-		public virtual ModuleContainer Module {
-			get { return Parent.Module; }
-		}
-
 		TypeParameter[] initialize_type_params ()
 		{
 			if (type_param_list != null)
diff --git a/mcs/mcs/delegate.cs b/mcs/mcs/delegate.cs
index 75eb573..b6a461f 100644
--- a/mcs/mcs/delegate.cs
+++ b/mcs/mcs/delegate.cs
@@ -13,9 +13,14 @@
 //
 
 using System;
+
+#if STATIC
+using IKVM.Reflection;
+using IKVM.Reflection.Emit;
+#else
 using System.Reflection;
 using System.Reflection.Emit;
-using System.Collections.Generic;
+#endif
 
 namespace Mono.CSharp {
 
@@ -109,7 +114,7 @@ namespace Mono.CSharp {
 				}
 			);
 
-			Constructor = new Constructor (this, System.Reflection.ConstructorInfo.ConstructorName,
+			Constructor = new Constructor (this, Constructor.ConstructorName,
 				Modifiers.PUBLIC, null, ctor_parameters, null, Location);
 			Constructor.Define ();
 
@@ -172,7 +177,7 @@ namespace Mono.CSharp {
 			//
 			// Don't emit async method for compiler generated delegates (e.g. dynamic site containers)
 			//
-			if (TypeManager.iasyncresult_type != null && TypeManager.asynccallback_type != null && !IsCompilerGenerated) {
+			if (!IsCompilerGenerated) {
 				DefineAsyncMethods (Parameters.CallingConvention);
 			}
 
@@ -181,31 +186,47 @@ namespace Mono.CSharp {
 
 		void DefineAsyncMethods (CallingConventions cc)
 		{
+			var iasync_result = Module.PredefinedTypes.IAsyncResult;
+			var async_callback = Module.PredefinedTypes.AsyncCallback;
+
+			//
+			// It's ok when async types don't exist, the delegate will have Invoke method only
+			//
+			if (!iasync_result.Define () || !async_callback.Define ())
+				return;
+
 			//
 			// BeginInvoke
 			//
-			Parameter[] compiled = new Parameter[Parameters.Count];
-			for (int i = 0; i < compiled.Length; ++i)
-				compiled[i] = new Parameter (new TypeExpression (Parameters.Types[i], Location),
-					Parameters.FixedParameters[i].Name,
-					Parameters.FixedParameters[i].ModFlags & (Parameter.Modifier.REF | Parameter.Modifier.OUT),
-					null, Location);
+			ParametersCompiled async_parameters;
+			if (Parameters.Count == 0) {
+				async_parameters = ParametersCompiled.EmptyReadOnlyParameters;
+			} else {
+				var compiled = new Parameter[Parameters.Count];
+				for (int i = 0; i < compiled.Length; ++i) {
+					var p = parameters[i];
+					compiled[i] = new Parameter (new TypeExpression (parameters.Types[i], Location),
+						p.Name,
+						p.ModFlags & (Parameter.Modifier.REF | Parameter.Modifier.OUT),
+						p.OptAttributes == null ? null : p.OptAttributes.Clone (), Location);
+				}
 
-			ParametersCompiled async_parameters = new ParametersCompiled (Compiler, compiled);
+				async_parameters = new ParametersCompiled (compiled);
+			}
 
 			async_parameters = ParametersCompiled.MergeGenerated (Compiler, async_parameters, false,
 				new Parameter[] {
-					new Parameter (new TypeExpression (TypeManager.asynccallback_type, Location), "callback", Parameter.Modifier.NONE, null, Location),
+					new Parameter (new TypeExpression (async_callback.TypeSpec, Location), "callback", Parameter.Modifier.NONE, null, Location),
 					new Parameter (new TypeExpression (TypeManager.object_type, Location), "object", Parameter.Modifier.NONE, null, Location)
 				},
 				new [] {
-					TypeManager.asynccallback_type,
+					async_callback.TypeSpec,
 					TypeManager.object_type
 				}
 			);
 
 			BeginInvokeBuilder = new Method (this, null,
-				new TypeExpression (TypeManager.iasyncresult_type, Location), MethodModifiers,
+				new TypeExpression (iasync_result.TypeSpec, Location), MethodModifiers,
 				new MemberName ("BeginInvoke"), async_parameters, null);
 			BeginInvokeBuilder.Define ();
 
@@ -226,7 +247,6 @@ namespace Mono.CSharp {
 			}
 
 			if (out_params > 0) {
-				var end_param_types = new TypeSpec [out_params];
 				Parameter[] end_params = new Parameter[out_params];
 
 				int param = 0;
@@ -235,20 +255,22 @@ namespace Mono.CSharp {
 					if ((p.ModFlags & Parameter.Modifier.ISBYREF) == 0)
 						continue;
 
-					end_param_types[param] = Parameters.Types[i];
-					end_params[param] = p;
-					++param;
+					end_params [param++] = new Parameter (new TypeExpression (p.Type, Location),
+						p.Name,
+						p.ModFlags & (Parameter.Modifier.REF | Parameter.Modifier.OUT),
+						p.OptAttributes == null ? null : p.OptAttributes.Clone (), Location);
 				}
-				end_parameters = ParametersCompiled.CreateFullyResolved (end_params, end_param_types);
+
+				end_parameters = new ParametersCompiled (end_params);
 			} else {
 				end_parameters = ParametersCompiled.EmptyReadOnlyParameters;
 			}
 
 			end_parameters = ParametersCompiled.MergeGenerated (Compiler, end_parameters, false,
 				new Parameter (
-					new TypeExpression (TypeManager.iasyncresult_type, Location),
+					new TypeExpression (iasync_result.TypeSpec, Location),
 					"result", Parameter.Modifier.NONE, null, Location),
-				TypeManager.iasyncresult_type);
+				iasync_result.TypeSpec);
 
 			//
 			// Create method, define parameters, register parameters with type system
@@ -266,28 +288,25 @@ namespace Mono.CSharp {
 
 		public override void EmitType ()
 		{
-			if (ReturnType.Type == InternalType.Dynamic) {
-				return_attributes = new ReturnParameter (this, InvokeBuilder.MethodBuilder, Location);
-				Compiler.PredefinedAttributes.Dynamic.EmitAttribute (return_attributes.Builder);
-			} else {
-				var trans_flags = TypeManager.HasDynamicTypeUsed (ReturnType.Type);
-				if (trans_flags != null) {
-					var pa = Compiler.PredefinedAttributes.DynamicTransform;
-					if (pa.Constructor != null || pa.ResolveConstructor (Location, ArrayContainer.MakeType (TypeManager.bool_type))) {
-						return_attributes = new ReturnParameter (this, InvokeBuilder.MethodBuilder, Location);
-						return_attributes.Builder.SetCustomAttribute (
-							new CustomAttributeBuilder (pa.Constructor, new object [] { trans_flags }));
-					}
+			if (ReturnType.Type != null) {
+				if (ReturnType.Type == InternalType.Dynamic) {
+					return_attributes = new ReturnParameter (this, InvokeBuilder.MethodBuilder, Location);
+					Module.PredefinedAttributes.Dynamic.EmitAttribute (return_attributes.Builder);
+				} else if (ReturnType.Type.HasDynamicElement) {
+					return_attributes = new ReturnParameter (this, InvokeBuilder.MethodBuilder, Location);
+					Module.PredefinedAttributes.Dynamic.EmitAttribute (return_attributes.Builder, ReturnType.Type, Location);
 				}
 			}
 
-			parameters.ApplyAttributes (this, InvokeBuilder.MethodBuilder);
-			
+			Constructor.ParameterInfo.ApplyAttributes (this, Constructor.ConstructorBuilder);
 			Constructor.ConstructorBuilder.SetImplementationFlags (MethodImplAttributes.Runtime);
+
+			parameters.ApplyAttributes (this, InvokeBuilder.MethodBuilder);
 			InvokeBuilder.MethodBuilder.SetImplementationFlags (MethodImplAttributes.Runtime);
 
 			if (BeginInvokeBuilder != null) {
 				BeginInvokeBuilder.ParameterInfo.ApplyAttributes (this, BeginInvokeBuilder.MethodBuilder);
+				EndInvokeBuilder.ParameterInfo.ApplyAttributes (this, EndInvokeBuilder.MethodBuilder);
 
 				BeginInvokeBuilder.MethodBuilder.SetImplementationFlags (MethodImplAttributes.Runtime);
 				EndInvokeBuilder.MethodBuilder.SetImplementationFlags (MethodImplAttributes.Runtime);
@@ -433,7 +452,12 @@ namespace Mono.CSharp {
 
 			Arguments args = new Arguments (3);
 			args.Add (new Argument (new TypeOf (new TypeExpression (type, loc), loc)));
-			args.Add (new Argument (new NullLiteral (loc)));
+
+			if (method_group.InstanceExpression == null)
+				args.Add (new Argument (new NullLiteral (loc)));
+			else
+				args.Add (new Argument (method_group.InstanceExpression));
+
 			args.Add (new Argument (method_group.CreateExpressionTree (ec)));
 			Expression e = new Invocation (ma, args).Resolve (ec);
 			if (e == null)
@@ -692,12 +716,7 @@ namespace Mono.CSharp {
 		}
 
 		protected override Expression DoResolve (ResolveContext ec)
-		{
-			if (InstanceExpr is EventExpr) {
-				((EventExpr) InstanceExpr).Error_CannotAssign (ec);
-				return null;
-			}
-			
+		{		
 			TypeSpec del_type = InstanceExpr.Type;
 			if (del_type == null)
 				return null;
diff --git a/mcs/mcs/dmcs.csproj b/mcs/mcs/dmcs.csproj
index 154cad4..57c3ed1 100644
--- a/mcs/mcs/dmcs.csproj
+++ b/mcs/mcs/dmcs.csproj
@@ -1,154 +1,156 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>10.0.20506</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{D4A01C5B-A1B5-48F5-BB5B-D2E1BD236E56}</ProjectGuid>
-    <OutputType>Exe</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>dmcs</RootNamespace>
-    <AssemblyName>dmcs</AssemblyName>
-    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
-    <FileAlignment>512</FileAlignment>
-    <PlatformTarget>x86</PlatformTarget>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>.\</OutputPath>
-    <DefineConstants>TRACE;DEBUG;NET_4_0;MS_COMPATIBLE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <UseVSHostingProcess>true</UseVSHostingProcess>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <DefineConstants>TRACE;NET_2_0;MS_COMPATIBLE;GMCS_SOURCE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <OutputPath>.\</OutputPath>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="System" />
-    <Reference Include="System.Xml" />
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="..\build\common\Consts.cs">
-    </Compile>
-    <Compile Include="..\class\corlib\Mono.Security.Cryptography\CryptoConvert.cs">
-      <Link>CryptoConvert.cs</Link>
-    </Compile>
-    <Compile Include="..\class\Mono.CompilerServices.SymbolWriter\MonoSymbolFile.cs">
-      <Link>MonoSymbolFile.cs</Link>
-    </Compile>
-    <Compile Include="..\class\Mono.CompilerServices.SymbolWriter\MonoSymbolTable.cs">
-      <Link>MonoSymbolTable.cs</Link>
-    </Compile>
-    <Compile Include="..\class\Mono.CompilerServices.SymbolWriter\MonoSymbolWriter.cs">
-      <Link>MonoSymbolWriter.cs</Link>
-    </Compile>
-    <Compile Include="argument.cs" />
-    <Compile Include="AssemblyInfo.cs">
-    </Compile>
-    <Compile Include="anonymous.cs">
-    </Compile>
-    <Compile Include="assign.cs">
-    </Compile>
-    <Compile Include="attribute.cs">
-    </Compile>
-    <Compile Include="cfold.cs">
-    </Compile>
-    <Compile Include="class.cs">
-    </Compile>
-    <Compile Include="codegen.cs">
-    </Compile>
-    <Compile Include="complete.cs" />
-    <Compile Include="const.cs">
-    </Compile>
-    <Compile Include="constant.cs">
-    </Compile>
-    <Compile Include="convert.cs">
-    </Compile>
-    <Compile Include="context.cs" />
-    <Compile Include="dynamic.cs" />
-    <Compile Include="eval.cs" />
-    <Compile Include="import.cs" />
-    <Compile Include="lambda.cs">
-    </Compile>
-    <Compile Include="cs-parser.cs" />
-    <Compile Include="cs-tokenizer.cs">
-    </Compile>
-    <Compile Include="decl.cs">
-    </Compile>
-    <Compile Include="delegate.cs">
-    </Compile>
-    <Compile Include="doc.cs">
-    </Compile>
-    <Compile Include="driver.cs">
-    </Compile>
-    <Compile Include="ecore.cs">
-    </Compile>
-    <Compile Include="enum.cs">
-    </Compile>
-    <Compile Include="expression.cs">
-    </Compile>
-    <Compile Include="flowanalysis.cs">
-    </Compile>
-    <Compile Include="generic.cs" />
-    <Compile Include="iterators.cs">
-    </Compile>
-    <Compile Include="literal.cs">
-    </Compile>
-    <Compile Include="location.cs">
-    </Compile>
-    <Compile Include="membercache.cs" />
-    <Compile Include="method.cs" />
-    <Compile Include="modifiers.cs">
-    </Compile>
-    <Compile Include="namespace.cs">
-    </Compile>
-    <Compile Include="nullable.cs">
-    </Compile>
-    <Compile Include="..\tools\monop\outline.cs">
-      <Link>outline.cs</Link>
-    </Compile>
-    <Compile Include="parameter.cs">
-    </Compile>
-    <Compile Include="pending.cs">
-    </Compile>
-    <Compile Include="property.cs" />
-    <Compile Include="report.cs">
-    </Compile>
-    <Compile Include="rootcontext.cs">
-    </Compile>
-    <Compile Include="roottypes.cs">
-    </Compile>
-    <Compile Include="statement.cs">
-    </Compile>
-    <Compile Include="support.cs">
-    </Compile>
-    <Compile Include="symbolwriter.cs">
-    </Compile>
-    <Compile Include="typemanager.cs">
-    </Compile>
-    <Compile Include="linq.cs" />
-    <Compile Include="field.cs" />
-    <Compile Include="typespec.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <Folder Include="Properties\" />
-  </ItemGroup>
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>10.0.20506</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{D4A01C5B-A1B5-48F5-BB5B-D2E1BD236E56}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>dmcs</RootNamespace>
+    <AssemblyName>dmcs</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <PlatformTarget>x86</PlatformTarget>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>.\</OutputPath>
+    <DefineConstants>TRACE;DEBUG;NET_4_0;MS_COMPATIBLE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <UseVSHostingProcess>true</UseVSHostingProcess>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <DefineConstants>TRACE;NET_2_0;MS_COMPATIBLE;GMCS_SOURCE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <OutputPath>.\</OutputPath>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="..\build\common\Consts.cs">
+    </Compile>
+    <Compile Include="..\class\corlib\Mono.Security.Cryptography\CryptoConvert.cs">
+      <Link>CryptoConvert.cs</Link>
+    </Compile>
+    <Compile Include="..\class\Mono.CompilerServices.SymbolWriter\MonoSymbolFile.cs">
+      <Link>MonoSymbolFile.cs</Link>
+    </Compile>
+    <Compile Include="..\class\Mono.CompilerServices.SymbolWriter\MonoSymbolTable.cs">
+      <Link>MonoSymbolTable.cs</Link>
+    </Compile>
+    <Compile Include="..\class\Mono.CompilerServices.SymbolWriter\MonoSymbolWriter.cs">
+      <Link>MonoSymbolWriter.cs</Link>
+    </Compile>
+    <Compile Include="argument.cs" />
+    <Compile Include="assembly.cs" />
+    <Compile Include="AssemblyInfo.cs">
+    </Compile>
+    <Compile Include="anonymous.cs">
+    </Compile>
+    <Compile Include="assign.cs">
+    </Compile>
+    <Compile Include="attribute.cs">
+    </Compile>
+    <Compile Include="cfold.cs">
+    </Compile>
+    <Compile Include="class.cs">
+    </Compile>
+    <Compile Include="codegen.cs">
+    </Compile>
+    <Compile Include="complete.cs" />
+    <Compile Include="const.cs">
+    </Compile>
+    <Compile Include="constant.cs">
+    </Compile>
+    <Compile Include="convert.cs">
+    </Compile>
+    <Compile Include="context.cs" />
+    <Compile Include="dynamic.cs" />
+    <Compile Include="eval.cs" />
+    <Compile Include="import.cs" />
+    <Compile Include="lambda.cs">
+    </Compile>
+    <Compile Include="cs-parser.cs" />
+    <Compile Include="cs-tokenizer.cs">
+    </Compile>
+    <Compile Include="decl.cs">
+    </Compile>
+    <Compile Include="delegate.cs">
+    </Compile>
+    <Compile Include="doc.cs">
+    </Compile>
+    <Compile Include="driver.cs">
+    </Compile>
+    <Compile Include="ecore.cs">
+    </Compile>
+    <Compile Include="enum.cs">
+    </Compile>
+    <Compile Include="expression.cs">
+    </Compile>
+    <Compile Include="flowanalysis.cs">
+    </Compile>
+    <Compile Include="generic.cs" />
+    <Compile Include="iterators.cs">
+    </Compile>
+    <Compile Include="literal.cs">
+    </Compile>
+    <Compile Include="location.cs">
+    </Compile>
+    <Compile Include="membercache.cs" />
+    <Compile Include="method.cs" />
+    <Compile Include="modifiers.cs">
+    </Compile>
+    <Compile Include="namespace.cs">
+    </Compile>
+    <Compile Include="nullable.cs">
+    </Compile>
+    <Compile Include="..\tools\monop\outline.cs">
+      <Link>outline.cs</Link>
+    </Compile>
+    <Compile Include="parameter.cs">
+    </Compile>
+    <Compile Include="pending.cs">
+    </Compile>
+    <Compile Include="property.cs" />
+    <Compile Include="reflection.cs" />
+    <Compile Include="report.cs">
+    </Compile>
+    <Compile Include="rootcontext.cs">
+    </Compile>
+    <Compile Include="roottypes.cs">
+    </Compile>
+    <Compile Include="statement.cs">
+    </Compile>
+    <Compile Include="support.cs">
+    </Compile>
+    <Compile Include="symbolwriter.cs">
+    </Compile>
+    <Compile Include="typemanager.cs">
+    </Compile>
+    <Compile Include="linq.cs" />
+    <Compile Include="field.cs" />
+    <Compile Include="typespec.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <Folder Include="Properties\" />
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
   <Target Name="BeforeBuild">
   </Target>
   <Target Name="AfterBuild">
   </Target>
-  -->
+  -->
 </Project>
\ No newline at end of file
diff --git a/mcs/mcs/dmcs.exe.sources b/mcs/mcs/dmcs.exe.sources
index 71a658a..c409d17 100644
--- a/mcs/mcs/dmcs.exe.sources
+++ b/mcs/mcs/dmcs.exe.sources
@@ -2,6 +2,7 @@ AssemblyInfo.cs
 anonymous.cs
 argument.cs
 assign.cs
+assembly.cs
 attribute.cs
 cs-tokenizer.cs
 cfold.cs
@@ -38,6 +39,7 @@ nullable.cs
 parameter.cs
 pending.cs
 property.cs
+reflection.cs
 report.cs
 rootcontext.cs
 roottypes.cs
diff --git a/mcs/mcs/doc.cs b/mcs/mcs/doc.cs
index 79e915b..aff97d8 100644
--- a/mcs/mcs/doc.cs
+++ b/mcs/mcs/doc.cs
@@ -13,17 +13,10 @@
 using System;
 using System.Collections.Generic;
 using System.IO;
-using System.Reflection;
-using System.Reflection.Emit;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-using System.Security;
-using System.Security.Permissions;
 using System.Text;
 using System.Xml;
 using System.Linq;
 
-using Mono.CompilerServices.SymbolWriter;
 
 namespace Mono.CSharp {
 
@@ -321,6 +314,17 @@ namespace Mono.CSharp {
 			int index = identifier.LastIndexOf ('.');
 			if (index < 0)
 				return null;
+
+			var nsName = identifier.Substring (0, index);
+			var typeName = identifier.Substring (index + 1);
+			Namespace ns = ds.NamespaceEntry.NS.GetNamespace (nsName, false);
+			ns = ns ?? mc.Module.GlobalRootNamespace.GetNamespace(nsName, false);
+			if (ns != null) {
+				var te = ns.LookupType(mc.Compiler, typeName, 0, true, mc.Location);
+				if(te != null)
+					return te.Type;
+			}
+
 			int warn;
 			TypeSpec parent = FindDocumentedType (mc, identifier.Substring (0, index), ds, cref, r);
 			if (parent == null)
@@ -616,7 +620,7 @@ namespace Mono.CSharp {
 				xref.SetAttribute ("cref", "N:" + ns.GetSignatureForError ());
 				return; // a namespace
 			}
-			if (mc.Compiler.GlobalRootNamespace.IsNamespace (name)) {
+			if (mc.Module.GlobalRootNamespace.IsNamespace (name)) {
 				xref.SetAttribute ("cref", "N:" + name);
 				return; // a namespace
 			}
diff --git a/mcs/mcs/driver.cs b/mcs/mcs/driver.cs
index 372c06c..47b075e 100644
--- a/mcs/mcs/driver.cs
+++ b/mcs/mcs/driver.cs
@@ -11,110 +11,45 @@
 // Copyright 2004, 2005, 2006, 2007, 2008 Novell, Inc
 //
 
+using System;
+using System.Reflection;
+using System.Reflection.Emit;
+using System.Collections.Generic;
+using System.IO;
+using System.Text;
+using System.Globalization;
+using System.Diagnostics;
+
 namespace Mono.CSharp
 {
-	using System;
-	using System.Reflection;
-	using System.Reflection.Emit;
-	using System.Collections.Generic;
-	using System.IO;
-	using System.Text;
-	using System.Globalization;
-	using System.Diagnostics;
-
-	public enum Target {
-		Library, Exe, Module, WinExe
-	};
-
-	public enum Platform {
-		AnyCPU, X86, X64, IA64
-	}
-	
 	/// <summary>
 	///    The compiler driver.
 	/// </summary>
 	class Driver
 	{
-		//
-		// Assemblies references to be linked.   Initialized with
-		// mscorlib.dll here.
-		List<string> references;
-
-		//
-		// If any of these fail, we ignore the problem.  This is so
-		// that we can list all the assemblies in Windows and not fail
-		// if they are missing on Linux.
-		//
-		List<string> soft_references;
-
-		// 
-		// External aliases for assemblies.
-		//
-		Dictionary<string, string> external_aliases;
-
-		//
-		// Modules to be linked
-		//
-		List<string> modules;
-
-		// Lookup paths
-		List<string> link_paths;
-
-		// Whether we want to only run the tokenizer
-		bool tokenize;
-		
 		string first_source;
 
-		bool want_debugging_support;
-		bool parse_only;
 		bool timestamps;
 		internal int fatal_errors;
 		
 		//
-		// Whether to load the initial config file (what CSC.RSP has by default)
-		// 
-		bool load_default_config = true;
-
-		//
-		// A list of resource files
-		//
-		Resources embedded_resources;
-		string win32ResourceFile;
-		string win32IconFile;
-
-		//
-		// Output file
-		//
-		static string output_file;
-
-		//
 		// Last time we took the time
 		//
-		DateTime last_time, first_time;
-
-		//
-		// Encoding.
-		//
-		Encoding encoding;
+		Stopwatch stopwatch;
+		DateTime first_time;
 
 		internal readonly CompilerContext ctx;
 
 		static readonly char[] argument_value_separator = new char [] { ';', ',' };
 
-		static public void Reset ()
-		{
-			output_file = null;
-		}
-
 		private Driver (CompilerContext ctx)
 		{
 			this.ctx = ctx;
-			encoding = Encoding.Default;
 		}
 
 		public static Driver Create (string[] args, bool require_files, ReportPrinter printer)
 		{
-			Driver d = new Driver (new CompilerContext (new ReflectionMetaImporter (), new Report (printer)));
+			Driver d = new Driver (new CompilerContext (new Report (printer)));
 
 			if (!d.ParseArguments (args, require_files))
 				return null;
@@ -131,13 +66,11 @@ namespace Mono.CSharp
 			if (!timestamps)
 				return;
 
-			DateTime now = DateTime.Now;
-			TimeSpan span = now - last_time;
-			last_time = now;
+			stopwatch.Stop ();
 
-			Console.WriteLine (
-				"[{0:00}:{1:000}] {2}",
-				(int) span.TotalSeconds, span.Milliseconds, msg);
+			Console.WriteLine ("{0,5}ms {1}", stopwatch.ElapsedMilliseconds, msg);
+
+			stopwatch = Stopwatch.StartNew ();
 		}
 
 		void ShowTotalTime (string msg)
@@ -147,7 +80,6 @@ namespace Mono.CSharp
 
 			DateTime now = DateTime.Now;
 			TimeSpan span = now - first_time;
-			last_time = now;
 
 			Console.WriteLine (
 				"[{0:00}:{1:000}] {2}",
@@ -166,7 +98,7 @@ namespace Mono.CSharp
 			}
 
 			using (input){
-				SeekableStreamReader reader = new SeekableStreamReader (input, encoding);
+				SeekableStreamReader reader = new SeekableStreamReader (input, RootContext.Encoding);
 				Tokenizer lexer = new Tokenizer (reader, file, ctx);
 				int token, tokens = 0, errors = 0;
 
@@ -181,7 +113,7 @@ namespace Mono.CSharp
 			return;
 		}
 
-		void Parse (CompilationUnit file)
+		void Parse (CompilationUnit file, ModuleContainer module)
 		{
 			Stream input;
 
@@ -192,24 +124,24 @@ namespace Mono.CSharp
 				return;
 			}
 
-			SeekableStreamReader reader = new SeekableStreamReader (input, encoding);
-
 			// Check 'MZ' header
-			if (reader.Read () == 77 && reader.Read () == 90) {
+			if (input.ReadByte () == 77 && input.ReadByte () == 90) {
 				Report.Error (2015, "Source file `{0}' is a binary file and not a text file", file.Name);
 				input.Close ();
 				return;
 			}
 
-			reader.Position = 0;
-			Parse (reader, file);
+			input.Position = 0;
+			SeekableStreamReader reader = new SeekableStreamReader (input, RootContext.Encoding);
+
+			Parse (reader, file, module);
 			reader.Dispose ();
 			input.Close ();
 		}	
 		
-		void Parse (SeekableStreamReader reader, CompilationUnit file)
+		void Parse (SeekableStreamReader reader, CompilationUnit file, ModuleContainer module)
 		{
-			CSharpParser parser = new CSharpParser (reader, file, ctx);
+			CSharpParser parser = new CSharpParser (reader, file, module);
 			parser.parse ();
 		}
 
@@ -220,6 +152,7 @@ namespace Mono.CSharp
 				"   --fatal[=COUNT]    Makes errors after COUNT fatal\n" +
 				"   --lint             Enhanced warnings\n" +
 				"   --parse            Only parses the source file\n" +
+				"   --runtime:VERSION  Sets mscorlib.dll metadata version: v1, v2, v4\n" +
 				"   --stacktrace       Shows stack trace at error location\n" +
 				"   --timestamp        Displays time stamps of various compiler events\n" +
 				"   -v                 Verbose parsing (for debugging the parser)\n" + 
@@ -229,13 +162,13 @@ namespace Mono.CSharp
 		static void Usage ()
 		{
 			Console.WriteLine (
-				"Mono C# compiler, Copyright 2001 - 2008 Novell, Inc.\n" +
+				"Mono C# compiler, Copyright 2001 - 2011 Novell, Inc.\n" +
 				"mcs [options] source-files\n" +
 				"   --about              About the Mono C# compiler\n" +
 				"   -addmodule:M1[,Mn]   Adds the module to the generated assembly\n" + 
 				"   -checked[+|-]        Sets default aritmetic overflow context\n" +
-				"   -codepage:ID         Sets code page to the one in ID (number, utf8, reset)\n" +
 				"   -clscheck[+|-]       Disables CLS Compliance verifications\n" +
+				"   -codepage:ID         Sets code page to the one in ID (number, utf8, reset)\n" +
 				"   -define:S1[;S2]      Defines one or more conditional symbols (short: -d)\n" +
 				"   -debug[+|-], -g      Generate debugging information\n" + 
 				"   -delaysign[+|-]      Only insert the public key into the assembly (no signing)\n" +
@@ -243,7 +176,7 @@ namespace Mono.CSharp
 				"   -help                Lists all compiler options (short: -?)\n" + 
 				"   -keycontainer:NAME   The key pair container used to sign the output assembly\n" +
 				"   -keyfile:FILE        The key file used to strongname the ouput assembly\n" +
-				"   -langversion:TEXT    Specifies language version: ISO-1, ISO-2, Default, or Future\n" + 
+				"   -langversion:TEXT    Specifies language version: ISO-1, ISO-2, 3, Default, or Future\n" + 
 				"   -lib:PATH1[,PATHn]   Specifies the location of referenced assemblies\n" +
 				"   -main:CLASS          Specifies the class with the Main method (short: -m)\n" +
 				"   -noconfig            Disables implicitly referenced assemblies\n" +
@@ -258,14 +191,16 @@ namespace Mono.CSharp
 				"                        ARCH can be one of: anycpu, x86, x64 or itanium\n" +
 				"   -recurse:SPEC        Recursively compiles files according to SPEC pattern\n" + 
 				"   -reference:A1[,An]   Imports metadata from the specified assembly (short: -r)\n" +
-				"   -reference:ALIAS=A   Imports metadata using specified extern alias (short: -r)\n" +				
+				"   -reference:ALIAS=A   Imports metadata using specified extern alias (short: -r)\n" +
+				"   -sdk:VERSION         Specifies SDK version of referenced assemlies\n" +
+				"                        VERSION can be one of: 2 (default), 4\n" +
 				"   -target:KIND         Specifies the format of the output assembly (short: -t)\n" +
 				"                        KIND can be one of: exe, winexe, library, module\n" +
 				"   -unsafe[+|-]         Allows to compile code which uses unsafe keyword\n" +
 				"   -warnaserror[+|-]    Treats all warnings as errors\n" +
 				"   -warnaserror[+|-]:W1[,Wn] Treats one or more compiler warnings as errors\n" +
 				"   -warn:0-4            Sets warning level, the default is 4 (short -w:)\n" +
-				"   -help2               Shows internal compiler options\n" + 
+				"   -helpinternal        Shows internal and advanced compiler options\n" + 
 				"\n" +
 				"Resources:\n" +
 				"   -linkresource:FILE[,ID] Links FILE as a resource (short: -linkres)\n" +
@@ -284,7 +219,7 @@ namespace Mono.CSharp
 		static void About ()
 		{
 			Console.WriteLine (
-				"The Mono C# compiler is Copyright 2001-2008, Novell, Inc.\n\n" +
+				"The Mono C# compiler is Copyright 2001-2011, Novell, Inc.\n\n" +
 				"The compiler source code is released under the terms of the \n"+
 				"MIT X11 or GNU GPL licenses\n\n" +
 
@@ -320,176 +255,6 @@ namespace Mono.CSharp
 			return 1;
 		}
 
-		public void LoadAssembly (string assembly, bool soft)
-		{
-			LoadAssembly (assembly, null, soft);
-		}
-
-		void Error6 (string name, string log)
-		{
-			if (log != null && log.Length > 0)
-				Report.ExtraInformation (Location.Null, "Log:\n" + log + "\n(log related to previous ");
-			Report.Error (6, "cannot find metadata file `{0}'", name);
-		}
-
-		void Error9 (string type, string filename, string log)
-		{
-			if (log != null && log.Length > 0)
-				Report.ExtraInformation (Location.Null, "Log:\n" + log + "\n(log related to previous ");
-			Report.Error (9, "file `{0}' has invalid `{1}' metadata", filename, type);
-		}
-
-		void BadAssembly (string filename, string log)
-		{
-			MethodInfo adder_method = AssemblyClass.AddModule_Method;
-
-			if (adder_method != null) {
-				AssemblyName an = new AssemblyName ();
-				an.Name = ".temp";
-				AssemblyBuilder ab = AppDomain.CurrentDomain.DefineDynamicAssembly (an, AssemblyBuilderAccess.Run);
-				try {
-					object m = null;
-					try {
-						m = adder_method.Invoke (ab, new object [] { filename });
-					} catch (TargetInvocationException ex) {
-						throw ex.InnerException;
-					}
-
-					if (m != null) {
-						Report.Error (1509, "Referenced file `{0}' is not an assembly. Consider using `-addmodule' option instead",
-						              Path.GetFileName (filename));
-						return;
-					}
-				} catch (FileNotFoundException) {
-					// did the file get deleted during compilation? who cares? swallow the exception
-				} catch (BadImageFormatException) {
-					// swallow exception
-				} catch (FileLoadException) {
-					// swallow exception
-				}
-			}
-			Error9 ("assembly", filename, log);
-		}
-
-		public void LoadAssembly (string assembly, string alias, bool soft)
-		{
-			Assembly a = null;
-			string total_log = "";
-
-			try {
-				try {
-					char[] path_chars = { '/', '\\' };
-
-					if (assembly.IndexOfAny (path_chars) != -1) {
-						a = Assembly.LoadFrom (assembly);
-					} else {
-						string ass = assembly;
-						if (ass.EndsWith (".dll") || ass.EndsWith (".exe"))
-							ass = assembly.Substring (0, assembly.Length - 4);
-						a = Assembly.Load (ass);
-					}
-				} catch (FileNotFoundException) {
-					bool err = !soft;
-					foreach (string dir in link_paths) {
-						string full_path = Path.Combine (dir, assembly);
-						if (!assembly.EndsWith (".dll") && !assembly.EndsWith (".exe"))
-							full_path += ".dll";
-
-						try {
-							a = Assembly.LoadFrom (full_path);
-							err = false;
-							break;
-						} catch (FileNotFoundException ff) {
-							if (soft)
-								return;
-							total_log += ff.FusionLog;
-						}
-					}
-					if (err) {
-						Error6 (assembly, total_log);
-						return;
-					}
-				}
-
-				// Extern aliased refs require special handling
-				if (alias == null)
-					ctx.GlobalRootNamespace.AddAssemblyReference (a);
-				else
-					ctx.GlobalRootNamespace.DefineRootNamespace (alias, a, ctx);
-
-			} catch (BadImageFormatException f) {
-				// .NET 2.0 throws this if we try to load a module without an assembly manifest ...
-				BadAssembly (f.FileName, f.FusionLog);
-			} catch (FileLoadException f) {
-				// ... while .NET 1.1 throws this
-				BadAssembly (f.FileName, f.FusionLog);
-			}
-		}
-
-		public void LoadModule (string module)
-		{
-			Module m = null;
-			string total_log = "";
-
-			try {
-				try {
-					m = CodeGen.Assembly.AddModule (module);
-				} catch (FileNotFoundException) {
-					bool err = true;
-					foreach (string dir in link_paths) {
-						string full_path = Path.Combine (dir, module);
-						if (!module.EndsWith (".netmodule"))
-							full_path += ".netmodule";
-
-						try {
-							m = CodeGen.Assembly.AddModule (full_path);
-							err = false;
-							break;
-						} catch (FileNotFoundException ff) {
-							total_log += ff.FusionLog;
-						}
-					}
-					if (err) {
-						Error6 (module, total_log);
-						return;
-					}
-				}
-
-				ctx.GlobalRootNamespace.AddModuleReference (m);
-
-			} catch (BadImageFormatException f) {
-				Error9 ("module", f.FileName, f.FusionLog);
-			} catch (FileLoadException f) {
-				Error9 ("module", f.FileName, f.FusionLog);
-			}
-		}
-
-		/// <summary>
-		///   Loads all assemblies referenced on the command line
-		/// </summary>
-		public void LoadReferences ()
-		{
-			link_paths.Add (GetSystemDir ());
-			link_paths.Add (Directory.GetCurrentDirectory ());
-
-			//
-			// Load Core Library for default compilation
-			//
-			if (RootContext.StdLib)
-				LoadAssembly ("mscorlib", false);
-
-			foreach (string r in soft_references)
-				LoadAssembly (r, true);
-
-			foreach (string r in references)
-				LoadAssembly (r, false);
-
-			foreach (var entry in external_aliases)
-				LoadAssembly (entry.Value, entry.Key, false);
-				
-			ctx.GlobalRootNamespace.ComputeNamespaces (ctx);
-		}
-
 		static string [] LoadArgs (string file)
 		{
 			StreamReader f;
@@ -537,14 +302,6 @@ namespace Mono.CSharp
 		}
 
 		//
-		// Returns the directory where the system assemblies are installed
-		//
-		static string GetSystemDir ()
-		{
-			return Path.GetDirectoryName (typeof (object).Assembly.Location);
-		}
-
-		//
 		// Given a path specification, splits the path from the file/pattern
 		//
 		static void SplitPathAndPattern (string spec, out string path, out string pattern)
@@ -586,12 +343,6 @@ namespace Mono.CSharp
 
 		bool ParseArguments (string[] args, bool require_files)
 		{
-			references = new List<string> ();
-			external_aliases = new Dictionary<string, string> ();
-			soft_references = new List<string> ();
-			modules = new List<string> (2);
-			link_paths = new List<string> ();
-
 			List<string> response_file_list = null;
 			bool parsing_options = true;
 
@@ -677,7 +428,7 @@ namespace Mono.CSharp
 			//
 			// If there is nothing to put in the assembly, and we are not a library
 			//
-			if (first_source == null && embedded_resources == null) {
+			if (first_source == null && RootContext.Resources == null) {
 				Report.Error (2008, "No files to compile were specified");
 				return false;
 			}
@@ -685,16 +436,16 @@ namespace Mono.CSharp
 			return true;
 		}
 
-		public void Parse ()
+		public void Parse (ModuleContainer module)
 		{
 			Location.Initialize ();
 
 			var cu = Location.SourceFiles;
 			for (int i = 0; i < cu.Count; ++i) {
-				if (tokenize) {
+				if (RootContext.TokenizeOnly) {
 					tokenize_file (cu [i], ctx);
 				} else {
-					Parse (cu [i]);
+					Parse (cu [i], module);
 				}
 			}
 		}
@@ -741,66 +492,6 @@ namespace Mono.CSharp
 			}
 		}
 
-		public void ProcessDefaultConfig ()
-		{
-			if (!load_default_config)
-				return;
-	
-			//
-			// For now the "default config" is harcoded into the compiler
-			// we can move this outside later
-			//
-			string [] default_config = {
-				"System",
-				"System.Xml",
-#if NET_2_1
-				"System.Net",
-				"System.Windows",
-				"System.Windows.Browser",
-#endif
-#if false
-				//
-				// Is it worth pre-loading all this stuff?
-				//
-				"Accessibility",
-				"System.Configuration.Install",
-				"System.Data",
-				"System.Design",
-				"System.DirectoryServices",
-				"System.Drawing.Design",
-				"System.Drawing",
-				"System.EnterpriseServices",
-				"System.Management",
-				"System.Messaging",
-				"System.Runtime.Remoting",
-				"System.Runtime.Serialization.Formatters.Soap",
-				"System.Security",
-				"System.ServiceProcess",
-				"System.Web",
-				"System.Web.RegularExpressions",
-				"System.Web.Services",
-				"System.Windows.Forms"
-#endif
-			};
-
-			soft_references.AddRange (default_config);
-
-			if (RootContext.Version > LanguageVersion.ISO_2)
-				soft_references.Add ("System.Core");
-			if (RootContext.Version > LanguageVersion.V_3)
-				soft_references.Add ("Microsoft.CSharp");
-		}
-
-		public static string OutputFile
-		{
-			set {
-				output_file = value;
-			}
-			get {
-				return Path.GetFileName (output_file);
-			}
-		}
-
 		void SetWarningLevel (string s)
 		{
 			int level = -1;
@@ -818,7 +509,7 @@ namespace Mono.CSharp
 
 		static void Version ()
 		{
-			string version = Assembly.GetExecutingAssembly ().GetName ().Version.ToString ();
+			string version = System.Reflection.Assembly.GetExecutingAssembly ().GetName ().Version.ToString ();
 			Console.WriteLine ("Mono C# compiler version {0}", version);
 			Environment.Exit (0);
 		}
@@ -840,7 +531,7 @@ namespace Mono.CSharp
 				return true;
 				
 			case "--parse":
-				parse_only = true;
+				RootContext.ParseOnly = true;
 				return true;
 				
 			case "--main": case "-m":
@@ -873,7 +564,7 @@ namespace Mono.CSharp
 				return true;
 
 			case "--tokenize": 
-				tokenize = true;
+				RootContext.TokenizeOnly = true;
 				return true;
 				
 			case "-o": 
@@ -883,7 +574,7 @@ namespace Mono.CSharp
 					Usage ();
 					Environment.Exit (1);
 				}
-				OutputFile = args [++i];
+				RootContext.OutputFile = args [++i];
 				return true;
 
 			case "--checked":
@@ -903,10 +594,8 @@ namespace Mono.CSharp
 					Report.Error (5, "Missing argument to --linkres"); 
 					Environment.Exit (1);
 				}
-				if (embedded_resources == null)
-					embedded_resources = new Resources (ctx);
-				
-				embedded_resources.Add (false, args [++i], args [i]);
+
+				AddResource (new AssemblyResource (args[++i], args[i]));
 				return true;
 				
 			case "--resource":
@@ -917,10 +606,8 @@ namespace Mono.CSharp
 					Report.Error (5, "Missing argument to --resource"); 
 					Environment.Exit (1);
 				}
-				if (embedded_resources == null)
-					embedded_resources = new Resources (ctx);
-				
-				embedded_resources.Add (true, args [++i], args [i]);
+
+				AddResource (new AssemblyResource (args[++i], args[i], true));
 				return true;
 				
 			case "--target":
@@ -967,11 +654,11 @@ namespace Mono.CSharp
 				if (idx > -1) {
 					string alias = val.Substring (0, idx);
 					string assembly = val.Substring (idx + 1);
-					AddExternAlias (alias, assembly);
+					AddAssemblyReference (alias, assembly);
 					return true;
 				}
 
-				references.Add (val);
+				AddAssemblyReference (val);
 				return true;
 				
 			case "-L":
@@ -980,7 +667,7 @@ namespace Mono.CSharp
 					Usage ();	
 					Environment.Exit (1);
 				}
-				link_paths.Add (args [++i]);
+				RootContext.ReferencesLookupPaths.Add (args [++i]);
 				return true;
 
 			case "--lint":
@@ -1008,7 +695,7 @@ namespace Mono.CSharp
 				}
 				Report.SetIgnoreWarning (warn);
 				return true;
-				
+
 			case "--wlevel":
 				Report.Warning (-29, 1, "Compatibility: Use -warn:LEVEL instead of --wlevel LEVEL");
 				if ((i + 1) >= args.Length){
@@ -1050,17 +737,16 @@ namespace Mono.CSharp
 				
 			case "--timestamp":
 				timestamps = true;
-				last_time = first_time = DateTime.Now;
 				return true;
 
 			case "--debug": case "-g":
 				Report.Warning (-29, 1, "Compatibility: Use -debug option instead of -g or --debug");
-				want_debugging_support = true;
+				RootContext.GenerateDebugInfo = true;
 				return true;
 				
 			case "--noconfig":
 				Report.Warning (-29, 1, "Compatibility: Use -noconfig option instead of --noconfig");
-				load_default_config = false;
+				RootContext.LoadDefaultReferences = false;
 				return true;
 
 			default:
@@ -1072,6 +758,26 @@ namespace Mono.CSharp
 						fatal_errors = 1;
 					return true;
 				}
+				if (arg.StartsWith ("--runtime:", StringComparison.Ordinal)) {
+					string version = arg.Substring (10);
+
+					switch (version) {
+					case "v1":
+					case "V1":
+						RootContext.StdLibRuntimeVersion = RuntimeVersion.v1;
+						break;
+					case "v2":
+					case "V2":
+						RootContext.StdLibRuntimeVersion = RuntimeVersion.v2;
+						return true;
+					case "v4":
+					case "V4":
+						RootContext.StdLibRuntimeVersion = RuntimeVersion.v4;
+						return true;
+					}
+					return true;
+				}
+
 				break;
 			}
 
@@ -1135,7 +841,7 @@ namespace Mono.CSharp
 				value = option.Substring (idx + 1);
 			}
 
-			switch (arg.ToLower (CultureInfo.InvariantCulture)){
+			switch (arg.ToLowerInvariant ()){
 			case "/nologo":
 				return true;
 
@@ -1167,11 +873,11 @@ namespace Mono.CSharp
 				return true;
 
 			case "/out":
-				if (value.Length == 0){
-					Usage ();
-					Environment.Exit (1);
+				if (value.Length == 0) {
+					Error_RequiresFileName (option);
+					break;
 				}
-				OutputFile = value;
+				RootContext.OutputFile = value;
 				return true;
 
 			case "/o":
@@ -1241,135 +947,143 @@ namespace Mono.CSharp
 			case "/linkresource":
 			case "/res":
 			case "/resource":
-				if (embedded_resources == null)
-					embedded_resources = new Resources (ctx);
-
-				bool embeded = arg [1] == 'r' || arg [1] == 'R';
-				string[] s = value.Split (argument_value_separator);
+				AssemblyResource res = null;			
+				string[] s = value.Split (argument_value_separator, StringSplitOptions.RemoveEmptyEntries);
 				switch (s.Length) {
 				case 1:
 					if (s[0].Length == 0)
 						goto default;
-					embedded_resources.Add (embeded, s [0], Path.GetFileName (s[0]));
+					res = new AssemblyResource (s [0], Path.GetFileName (s[0]));
 					break;
 				case 2:
-					embedded_resources.Add (embeded, s [0], s [1]);
+					res = new AssemblyResource (s [0], s [1]);
 					break;
 				case 3:
 					if (s [2] != "public" && s [2] != "private") {
 						Report.Error (1906, "Invalid resource visibility option `{0}'. Use either `public' or `private' instead", s [2]);
 						return true;
 					}
-					embedded_resources.Add (embeded, s [0], s [1], s [2] == "private");
+					res = new AssemblyResource (s[0], s[1], s[2] == "private");
 					break;
 				default:
 					Report.Error (-2005, "Wrong number of arguments for option `{0}'", option);
 					break;
 				}
 
+				if (res != null) {
+					res.IsEmbeded = arg [1] == 'r' || arg [1] == 'R';
+					AddResource (res);
+				}
+
 				return true;
 				
 			case "/recurse":
-				if (value.Length == 0){
-					Report.Error (5, "-recurse requires an argument");
-					Environment.Exit (1);
+				if (value.Length == 0) {
+					Error_RequiresFileName (option);
+					break;
 				}
 				ProcessSourceFiles (value, true); 
 				return true;
 
 			case "/r":
 			case "/reference": {
-				if (value.Length == 0){
-					Report.Error (5, "-reference requires an argument");
-					Environment.Exit (1);
+				if (value.Length == 0) {
+					Error_RequiresFileName (option);
+					break;
 				}
 
 				string[] refs = value.Split (argument_value_separator);
 				foreach (string r in refs){
+					if (r.Length == 0)
+						continue;
+
 					string val = r;
 					int index = val.IndexOf ('=');
 					if (index > -1) {
 						string alias = r.Substring (0, index);
 						string assembly = r.Substring (index + 1);
-						AddExternAlias (alias, assembly);
-						return true;
+						AddAssemblyReference (alias, assembly);
+						if (refs.Length != 1) {
+							Report.Error (2034, "Cannot specify multiple aliases using single /reference option");
+							break;
+						}
+					} else {
+						AddAssemblyReference (val);
 					}
-
-					if (val.Length != 0)
-						references.Add (val);
 				}
 				return true;
 			}
 			case "/addmodule": {
-				if (value.Length == 0){
-					Report.Error (5, arg + " requires an argument");
-					Environment.Exit (1);
+				if (value.Length == 0) {
+					Error_RequiresFileName (option);
+					break;
 				}
 
 				string[] refs = value.Split (argument_value_separator);
 				foreach (string r in refs){
-					modules.Add (r);
+					RootContext.Modules.Add (r);
 				}
 				return true;
 			}
 			case "/win32res": {
 				if (value.Length == 0) {
-					Report.Error (5, arg + " requires an argument");
-					Environment.Exit (1);
+					Error_RequiresFileName (option);
+					break;
 				}
 				
-				if (win32IconFile != null)
+				if (RootContext.Win32IconFile != null)
 					Report.Error (1565, "Cannot specify the `win32res' and the `win32ico' compiler option at the same time");
 
-				win32ResourceFile = value;
+				RootContext.Win32ResourceFile = value;
 				return true;
 			}
 			case "/win32icon": {
 				if (value.Length == 0) {
-					Report.Error (5, arg + " requires an argument");
-					Environment.Exit (1);
+					Error_RequiresFileName (option);
+					break;
 				}
 
-				if (win32ResourceFile != null)
+				if (RootContext.Win32ResourceFile != null)
 					Report.Error (1565, "Cannot specify the `win32res' and the `win32ico' compiler option at the same time");
 
-				win32IconFile = value;
+				RootContext.Win32IconFile = value;
 				return true;
 			}
 			case "/doc": {
-				if (value.Length == 0){
-					Report.Error (2006, arg + " requires an argument");
-					Environment.Exit (1);
+				if (value.Length == 0) {
+					Error_RequiresFileName (option);
+					break;
 				}
+
 				RootContext.Documentation = new Documentation (value);
 				return true;
 			}
 			case "/lib": {
 				string [] libdirs;
 				
-				if (value.Length == 0){
-					Report.Error (5, "/lib requires an argument");
-					Environment.Exit (1);
+				if (value.Length == 0) {
+					Error_RequiresFileName (option);
+					break;
 				}
 
 				libdirs = value.Split (argument_value_separator);
 				foreach (string dir in libdirs)
-					link_paths.Add (dir);
+					RootContext.ReferencesLookupPaths.Add (dir);
 				return true;
 			}
 
 			case "/debug-":
-				want_debugging_support = false;
+				RootContext.GenerateDebugInfo = false;
 				return true;
 				
 			case "/debug":
 				if (value == "full" || value == "")
-					want_debugging_support = true;
+					RootContext.GenerateDebugInfo = true;
 
 				return true;
 				
 			case "/debug+":
-				want_debugging_support = true;
+				RootContext.GenerateDebugInfo = true;
 				return true;
 
 			case "/checked":
@@ -1383,6 +1097,7 @@ namespace Mono.CSharp
 
 			case "/clscheck":
 			case "/clscheck+":
+				RootContext.VerifyClsCompliance = true;
 				return true;
 
 			case "/clscheck-":
@@ -1418,18 +1133,21 @@ namespace Mono.CSharp
 				return true;
 
 			case "/warn":
+				if (value.Length == 0) {
+					Error_RequiresArgument (option);
+					break;
+				}
+
 				SetWarningLevel (value);
 				return true;
 
 			case "/nowarn": {
-				string [] warns;
-
 				if (value.Length == 0){
-					Report.Error (5, "/nowarn requires an argument");
-					Environment.Exit (1);
+					Error_RequiresArgument (option);
+					break;
 				}
 
-				warns = value.Split (argument_value_separator);
+				var warns = value.Split (argument_value_separator);
 				foreach (string wc in warns){
 					try {
 						if (wc.Trim ().Length == 0)
@@ -1441,17 +1159,22 @@ namespace Mono.CSharp
 						}
 						Report.SetIgnoreWarning (warn);
 					} catch {
-						Report.Error (1904, String.Format("`{0}' is not a valid warning number", wc));
+						Report.Error (1904, "`{0}' is not a valid warning number", wc);
 					}
 				}
 				return true;
 			}
 
 			case "/noconfig":
-				load_default_config = false;
+				RootContext.LoadDefaultReferences = false;
 				return true;
 
 			case "/platform":
+				if (value.Length == 0) {
+					Error_RequiresArgument (option);
+					break;
+				}
+
 				switch (value.ToLower (CultureInfo.InvariantCulture)) {
 				case "anycpu":
 					RootContext.Platform = Platform.AnyCPU;
@@ -1472,12 +1195,37 @@ namespace Mono.CSharp
 
 				return true;
 
+			case "/sdk":
+				if (value.Length == 0) {
+					Error_RequiresArgument (option);
+					break;
+				}
+
+				switch (value.ToLowerInvariant ()) {
+					case "2":
+						RootContext.SdkVersion = SdkVersion.v2;
+						break;
+					case "4":
+						RootContext.SdkVersion = SdkVersion.v4;
+						break;
+					default:
+						Report.Error (-26, "Invalid sdk version name");
+						break;
+				}
+
+				return true;
+
 				// We just ignore this.
 			case "/errorreport":
 			case "/filealign":
+				if (value.Length == 0) {
+					Error_RequiresArgument (option);
+					break;
+				}
+
 				return true;
 				
-			case "/help2":
+			case "/helpinternal":
 				OtherFlags ();
 				Environment.Exit(0);
 				return true;
@@ -1491,8 +1239,8 @@ namespace Mono.CSharp
 			case "/main":
 			case "/m":
 				if (value.Length == 0){
-					Report.Error (5, arg + " requires an argument");					
-					Environment.Exit (1);
+					Error_RequiresArgument (option);
+					break;
 				}
 				RootContext.MainClass = value;
 				return true;
@@ -1510,20 +1258,24 @@ namespace Mono.CSharp
 				return true;
 
 			case "/keyfile":
-				if (value == String.Empty) {
-					Report.Error (5, arg + " requires an argument");
-					Environment.Exit (1);
+				if (value.Length == 0) {
+					Error_RequiresFileName (option);
+					break;
 				}
+
 				RootContext.StrongNameKeyFile = value;
 				return true;
+
 			case "/keycontainer":
-				if (value == String.Empty) {
-					Report.Error (5, arg + " requires an argument");
-					Environment.Exit (1);
+				if (value.Length == 0) {
+					Error_RequiresArgument (option);
+					break;
 				}
+
 				RootContext.StrongNameKeyContainer = value;
 				return true;
 			case "/delaysign+":
+			case "/delaysign":
 				RootContext.StrongNameDelaySign = true;
 				return true;
 			case "/delaysign-":
@@ -1531,7 +1283,12 @@ namespace Mono.CSharp
 				return true;
 
 			case "/langversion":
-				switch (value.ToLower (CultureInfo.InvariantCulture)) {
+				if (value.Length == 0) {
+					Error_RequiresArgument (option);
+					break;
+				}
+
+				switch (value.ToLowerInvariant ()) {
 				case "iso-1":
 					RootContext.Version = LanguageVersion.ISO_1;
 					return true;	
@@ -1554,26 +1311,33 @@ namespace Mono.CSharp
 				return true;
 
 			case "/codepage":
+				if (value.Length == 0) {
+					Error_RequiresArgument (option);
+					break;
+				}
+
 				switch (value) {
 				case "utf8":
-					encoding = new UTF8Encoding();
+					RootContext.Encoding = new UTF8Encoding();
 					break;
 				case "reset":
-					encoding = Encoding.Default;
+					RootContext.Encoding = Encoding.Default;
 					break;
 				default:
 					try {
-						encoding = Encoding.GetEncoding (
-						Int32.Parse (value));
+						RootContext.Encoding = Encoding.GetEncoding (Int32.Parse (value));
 					} catch {
 						Report.Error (2016, "Code page `{0}' is invalid or not installed", value);
 					}
 					break;
 				}
 				return true;
+
+			default:
+				return false;
 			}
 
-			return false;
+			return true;
 		}
 
 		void Error_WrongOption (string option)
@@ -1581,6 +1345,16 @@ namespace Mono.CSharp
 			Report.Error (2007, "Unrecognized command-line option: `{0}'", option);
 		}
 
+		void Error_RequiresFileName (string option)
+		{
+			Report.Error (2005, "Missing file specification for `{0}' option", option);
+		}
+
+		void Error_RequiresArgument (string option)
+		{
+			Report.Error (2006, "Missing argument for `{0}' option", option);
+		}
+
 		static string [] AddArgs (string [] args, string [] extra_args)
 		{
 			string [] new_args;
@@ -1605,20 +1379,40 @@ namespace Mono.CSharp
 			return new_args;
 		}
 
-		void AddExternAlias (string identifier, string assembly)
+		void AddAssemblyReference (string assembly)
+		{
+			RootContext.AssemblyReferences.Add (assembly);
+		}
+
+		void AddAssemblyReference (string alias, string assembly)
 		{
 			if (assembly.Length == 0) {
-				Report.Error (1680, "Invalid reference alias '" + identifier + "='. Missing filename");
+				Report.Error (1680, "Invalid reference alias `{0}='. Missing filename", alias);
 				return;
 			}
 
-			if (!IsExternAliasValid (identifier)) {
-				Report.Error (1679, "Invalid extern alias for /reference. Alias '" + identifier + "' is not a valid identifier");
+			if (!IsExternAliasValid (alias)) {
+				Report.Error (1679, "Invalid extern alias for -reference. Alias `{0}' is not a valid identifier", alias);
 				return;
 			}
-			
-			// Could here hashtable throw an exception?
-			external_aliases [identifier] = assembly;
+
+			RootContext.AssemblyReferencesAliases.Add (Tuple.Create (alias, assembly));
+		}
+
+		void AddResource (AssemblyResource res)
+		{
+			if (RootContext.Resources == null) {
+				RootContext.Resources = new List<AssemblyResource> ();
+				RootContext.Resources.Add (res);
+				return;
+			}
+
+			if (RootContext.Resources.Contains (res)) {
+				ctx.Report.Error (1508, "The resource identifier `{0}' has already been used in this assembly", res.Name);
+				return;
+			}
+
+			RootContext.Resources.Add (res);
 		}
 		
 		static bool IsExternAliasValid (string identifier)
@@ -1648,93 +1442,108 @@ namespace Mono.CSharp
 		//
 		public bool Compile ()
 		{
-			// TODO: Should be passed to parser as an argument
-			RootContext.ToplevelTypes = new ModuleCompiled (ctx, RootContext.Unsafe);
-			var ctypes = TypeManager.InitCoreTypes ();
+			var module = new ModuleContainer (ctx);
+			RootContext.ToplevelTypes = module;
+
+			if (timestamps) {
+				stopwatch = Stopwatch.StartNew ();
+				first_time = DateTime.Now;
+			}
+
+			Parse (module);
+			ShowTime ("Parsing source files");
 
-			Parse ();
 			if (Report.Errors > 0)
 				return false;
 
-			if (tokenize || parse_only)
+			if (RootContext.TokenizeOnly || RootContext.ParseOnly)
 				return true;
 
 			if (RootContext.ToplevelTypes.NamespaceEntry != null)
 				throw new InternalErrorException ("who set it?");
 
-			ProcessDefaultConfig ();
-
 			//
 			// Quick hack
 			//
-			if (output_file == null){
-				if (first_source == null){
+			var output_file = RootContext.OutputFile;
+			string output_file_name;
+			if (output_file == null) {
+				if (first_source == null) {
 					Report.Error (1562, "If no source files are specified you must specify the output file with -out:");
 					return false;
 				}
-					
+
 				int pos = first_source.LastIndexOf ('.');
 
 				if (pos > 0)
 					output_file = first_source.Substring (0, pos) + RootContext.TargetExt;
 				else
 					output_file = first_source + RootContext.TargetExt;
-			}
-
-			if (!CodeGen.Init (output_file, output_file, want_debugging_support, ctx))
-				return false;
-
-			if (RootContext.Target == Target.Module) {
-				PropertyInfo module_only = typeof (AssemblyBuilder).GetProperty ("IsModuleOnly", BindingFlags.Instance|BindingFlags.Public|BindingFlags.NonPublic);
-				if (module_only == null) {
-					Report.RuntimeMissingSupport (Location.Null, "/target:module");
-					Environment.Exit (1);
-				}
 
-				MethodInfo set_method = module_only.GetSetMethod (true);
-				set_method.Invoke (CodeGen.Assembly.Builder, BindingFlags.Default, null, new object[]{true}, null);
+				output_file_name = output_file;
+			} else {
+				output_file_name = Path.GetFileName (output_file);
 			}
 
-			ctx.GlobalRootNamespace.AddModuleReference (RootContext.ToplevelTypes.Builder);
-
 			//
 			// Load assemblies required
 			//
 			if (timestamps)
-				ShowTime ("Loading references");
+				stopwatch = Stopwatch.StartNew ();
 
-			ctx.MetaImporter.Initialize ();
-			LoadReferences ();
-			
-			if (modules.Count > 0) {
-				foreach (string module in modules)
-					LoadModule (module);
-			}
-			
-			if (timestamps)
-				ShowTime ("References loaded");
-			
-			if (!TypeManager.InitCoreTypes (ctx, ctypes))
+#if STATIC
+			var assembly = new AssemblyDefinitionStatic (module, output_file_name, output_file);
+			module.SetDeclaringAssembly (assembly);
+
+			var importer = new StaticImporter ();
+			assembly.Importer = importer;
+
+			var loader = new StaticLoader (importer, ctx);
+			loader.LoadReferences (module);
+
+			ShowTime ("Imporing referenced assemblies");
+
+			if (!ctx.BuildinTypes.CheckDefinitions (module))
 				return false;
 
-			TypeManager.InitOptionalCoreTypes (ctx);
+			ShowTime ("Initializing predefined types");
 
-			if (timestamps)
-				ShowTime ("   Core Types done");
+			if (!assembly.Create (loader))
+				return false;
 
-			//
-			// The second pass of the compiler
-			//
-			if (timestamps)
-				ShowTime ("Resolving tree");
-			RootContext.ResolveTree ();
+			// System.Object was not loaded, use compiled assembly as corlib
+			if (loader.Corlib == null)
+				loader.Corlib = assembly.Builder;
 
-			if (Report.Errors > 0)
+			loader.LoadModules (assembly, module.GlobalRootNamespace);
+#else
+			var assembly = new AssemblyDefinitionDynamic (module, output_file_name, output_file);
+			module.SetDeclaringAssembly (assembly);
+
+			var importer = new ReflectionImporter (ctx.BuildinTypes);
+			assembly.Importer = importer;
+
+			var loader = new DynamicLoader (importer, ctx);
+			loader.LoadReferences (module);
+
+			ShowTime ("Imporing referenced assemblies");
+
+			if (!ctx.BuildinTypes.CheckDefinitions (module))
 				return false;
-			if (timestamps)
-				ShowTime ("Populate tree");
 
-			RootContext.PopulateTypes ();
+			ShowTime ("Initializing predefined types");
+
+			if (!assembly.Create (AppDomain.CurrentDomain, AssemblyBuilderAccess.Save))
+				return false;
+
+			loader.LoadModules (assembly, module.GlobalRootNamespace);
+#endif
+			module.Define ();
+
+			ShowTime ("Types definition");
+
+			if (Report.Errors > 0)
+				return false;
 
 			if (Report.Errors == 0 &&
 				RootContext.Documentation != null &&
@@ -1751,13 +1560,8 @@ namespace Mono.CSharp
 				return false;
 			}
 
-			CodeGen.Assembly.Resolve ();
+			assembly.Resolve ();
 			
-			if (RootContext.VerifyClsCompliance) {
-				if (CodeGen.Assembly.IsClsCompliant) {
-					AttributeTester.VerifyModulesClsCompliance (ctx);
-				}
-			}
 			if (Report.Errors > 0)
 				return false;
 			
@@ -1765,224 +1569,45 @@ namespace Mono.CSharp
 			// The code generator
 			//
 			if (timestamps)
-				ShowTime ("Emitting code");
-			ShowTotalTime ("Total so far");
-			RootContext.EmitCode ();
-			if (timestamps)
-				ShowTime ("   done");
+				stopwatch = Stopwatch.StartNew ();
 
-			if (Report.Errors > 0){
-				return false;
-			}
-
-			if (timestamps)
-				ShowTime ("Closing types");
-
-			RootContext.CloseTypes (ctx);
-
-			PEFileKinds k = PEFileKinds.ConsoleApplication;
-
-			switch (RootContext.Target) {
-			case Target.Library:
-			case Target.Module:
-				k = PEFileKinds.Dll; break;
-			case Target.Exe:
-				k = PEFileKinds.ConsoleApplication; break;
-			case Target.WinExe:
-				k = PEFileKinds.WindowApplication; break;
-			}
-
-			if (RootContext.NeedsEntryPoint) {
-				Method ep = RootContext.EntryPoint;
-
-				if (ep == null) {
-					if (RootContext.MainClass != null) {
-						DeclSpace main_cont = RootContext.ToplevelTypes.GetDefinition (RootContext.MainClass) as DeclSpace;
-						if (main_cont == null) {
-							Report.Error (1555, "Could not find `{0}' specified for Main method", RootContext.MainClass); 
-							return false;
-						}
-
-						if (!(main_cont is ClassOrStruct)) {
-							Report.Error (1556, "`{0}' specified for Main method must be a valid class or struct", RootContext.MainClass);
-							return false;
-						}
-
-						Report.Error (1558, main_cont.Location, "`{0}' does not have a suitable static Main method", main_cont.GetSignatureForError ());
-						return false;
-					}
+			assembly.Emit ();
 
-					if (Report.Errors == 0)
-						Report.Error (5001, "Program `{0}' does not contain a static `Main' method suitable for an entry point",
-							output_file);
-					return false;
-				}
+			ShowTime ("Resolving and emitting members blocks");
 
-				CodeGen.Assembly.Builder.SetEntryPoint (ep.MethodBuilder, k);
-			} else if (RootContext.MainClass != null) {
-				Report.Error (2017, "Cannot specify -main if building a module or library");
+			if (Report.Errors > 0){
+				return false;
 			}
 
-			if (embedded_resources != null){
-				if (RootContext.Target == Target.Module) {
-					Report.Error (1507, "Cannot link resource file when building a module");
-					return false;
-				}
-
-				embedded_resources.Emit ();
-			}
+			module.CloseType ();
 
-			//
-			// Add Win32 resources
-			//
+			ShowTime ("Closing types");
 
-			if (win32ResourceFile != null) {
-				try {
-					CodeGen.Assembly.Builder.DefineUnmanagedResource (win32ResourceFile);
-				} catch (ArgumentException) {
-					Report.RuntimeMissingSupport (Location.Null, "resource embedding ");
-				}
-			} else {
-				CodeGen.Assembly.Builder.DefineVersionInfoResource ();
-			}
+			if (timestamps)
+				stopwatch = Stopwatch.StartNew ();
 
-			if (win32IconFile != null) {
-				MethodInfo define_icon = typeof (AssemblyBuilder).GetMethod ("DefineIconResource", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
-				if (define_icon == null) {
-					Report.RuntimeMissingSupport (Location.Null, "resource embedding");
-				} else {
-					define_icon.Invoke (CodeGen.Assembly.Builder, new object [] { win32IconFile });
-				}
-			}
+			assembly.EmbedResources ();
+			ShowTime ("Embedding resources");
 
 			if (Report.Errors > 0)
 				return false;
-			
-			CodeGen.Save (output_file, want_debugging_support, Report);
-			if (timestamps) {
-				ShowTime ("Saved output");
-				ShowTotalTime ("Total");
-			}
 
-			Timer.ShowTimers ();
+			if (timestamps)
+				stopwatch = Stopwatch.StartNew ();
+			
+			assembly.Save ();
 
-#if DEBUGME
-			Console.WriteLine ("Size of strings held: " + DeclSpace.length);
-			Console.WriteLine ("Size of strings short: " + DeclSpace.small);
+#if STATIC
+			loader.Dispose ();
 #endif
-			return (Report.Errors == 0);
-		}
-	}
-
-	class Resources
-	{
-		interface IResource
-		{
-			void Emit (CompilerContext cc);
-			string FileName { get; }
-		}
 
-		class EmbededResource : IResource
-		{
-			static MethodInfo embed_res;
-			readonly object[] args;
-
-			public EmbededResource (string name, string file, bool isPrivate)
-			{
-				args = new object [3];
-				args [0] = name;
-				args [1] = file;
-				args [2] = isPrivate ? ResourceAttributes.Private : ResourceAttributes.Public;
-			}
-
-			public void Emit (CompilerContext cc)
-			{
-				if (embed_res == null) {
-					var argst = new [] {
-						typeof (string), typeof (string), typeof (ResourceAttributes)
-					};
-
-					embed_res = typeof (AssemblyBuilder).GetMethod (
-						"EmbedResourceFile", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic,
-						null, CallingConventions.Any, argst, null);
-
-					if (embed_res == null) {
-						cc.Report.RuntimeMissingSupport (Location.Null, "Resource embedding");
-					}
-				}
-
-				embed_res.Invoke (CodeGen.Assembly.Builder, args);
-			}
-
-			public string FileName {
-				get {
-					return (string)args [1];
-				}
-			}
-		}
-
-		class LinkedResource : IResource
-		{
-			readonly string file;
-			readonly string name;
-			readonly ResourceAttributes attribute;
-
-			public LinkedResource (string name, string file, bool isPrivate)
-			{
-				this.name = name;
-				this.file = file;
-				this.attribute = isPrivate ? ResourceAttributes.Private : ResourceAttributes.Public;
-			}
-
-			public void Emit (CompilerContext cc)
-			{
-				CodeGen.Assembly.Builder.AddResourceFile (name, Path.GetFileName(file), attribute);
-			}
+			ShowTime ("Saving output assembly");
 
-			public string FileName {
-				get {
-					return file;
-				}
-			}
-		}
-
-
-		Dictionary<string, IResource> embedded_resources = new Dictionary<string, IResource> ();
-		readonly CompilerContext ctx;
-
-		public Resources (CompilerContext ctx)
-		{
-			this.ctx = ctx;
-		}
-
-		public void Add (bool embeded, string file, string name)
-		{
-			Add (embeded, file, name, false);
-		}
+			ShowTotalTime ("Total");
 
-		public void Add (bool embeded, string file, string name, bool isPrivate)
-		{
-			if (embedded_resources.ContainsKey (name)) {
-				ctx.Report.Error (1508, "The resource identifier `{0}' has already been used in this assembly", name);
-				return;
-			}
-			IResource r = embeded ? 
-				(IResource) new EmbededResource (name, file, isPrivate) : 
-				new LinkedResource (name, file, isPrivate);
-
-			embedded_resources.Add (name, r);
-		}
+			Timer.ShowTimers ();
 
-		public void Emit ()
-		{
-			foreach (IResource r in embedded_resources.Values) {
-				if (!File.Exists (r.FileName)) {
-					ctx.Report.Error (1566, "Error reading resource file `{0}'", r.FileName);
-					continue;
-				}
-				
-				r.Emit (ctx);
-			}
+			return (Report.Errors == 0);
 		}
 	}
 
@@ -2022,7 +1647,6 @@ namespace Mono.CSharp
 		
 		public static void Reset (bool full_flag)
 		{
-			Driver.Reset ();
 			CSharpParser.yacc_verbose_flag = 0;
 			Location.Reset ();
 
@@ -2037,13 +1661,13 @@ namespace Mono.CSharp
 			Parameter.Reset ();
 
 			Unary.Reset ();
+			UnaryMutator.Reset ();
 			Binary.Reset ();
 			ConstantFold.Reset ();
 			CastFromDecimal.Reset ();
 			StringConcat.Reset ();
 			
 			NamespaceEntry.Reset ();
-			CodeGen.Reset ();
 			Attribute.Reset ();
 			AnonymousTypeClass.Reset ();
 			AnonymousMethodBody.Reset ();
diff --git a/mcs/mcs/dynamic.cs b/mcs/mcs/dynamic.cs
index b1b5b4a..2919672 100644
--- a/mcs/mcs/dynamic.cs
+++ b/mcs/mcs/dynamic.cs
@@ -50,11 +50,6 @@ namespace Mono.CSharp
 			eclass = ExprClass.Type;
 		}
 
-		public override bool CheckAccessLevel (IMemberContext ds)
-		{
-			return true;
-		}
-
 		protected override TypeExpr DoResolveAsTypeStep (IMemberContext ec)
 		{
 			return this;
@@ -142,17 +137,22 @@ namespace Mono.CSharp
 
 		public override SLE.Expression MakeExpression (BuilderContext ctx)
 		{
-#if NET_4_0		
-			if (type.IsStruct && !obj.Expression.Type.IsValueType)
-				return SLE.Expression.Unbox (obj.Expression, type.GetMetaInfo ());
+#if STATIC
+			return base.MakeExpression (ctx);
+#else
 
-			if (obj.Expression.NodeType == SLE.ExpressionType.Parameter) {
-				if (((SLE.ParameterExpression) obj.Expression).IsByRef)
-					return obj.Expression;
-			}
-#endif
+	#if NET_4_0		
+				if (type.IsStruct && !obj.Expression.Type.IsValueType)
+					return SLE.Expression.Unbox (obj.Expression, type.GetMetaInfo ());
+
+				if (obj.Expression.NodeType == SLE.ExpressionType.Parameter) {
+					if (((SLE.ParameterExpression) obj.Expression).IsByRef)
+						return obj.Expression;
+				}
+	#endif
 
-			return SLE.Expression.Convert (obj.Expression, type.GetMetaInfo ());
+				return SLE.Expression.Convert (obj.Expression, type.GetMetaInfo ());
+#endif
 		}
 	}
 
@@ -179,7 +179,11 @@ namespace Mono.CSharp
 #if NET_4_0
 		public override SLE.Expression MakeExpression (BuilderContext ctx)
 		{
+#if STATIC
+			return base.MakeExpression (ctx);
+#else
 			return SLE.Expression.Block (expr.MakeExpression (ctx), SLE.Expression.Default (type.GetMetaInfo ()));
+#endif
 		}
 #endif
 	}
@@ -229,7 +233,7 @@ namespace Mono.CSharp
 			{
 				Child = new IntConstant ((int) (flags | statement.flags), statement.loc).Resolve (ec);
 
-				type = TypeManager.binder_flags;
+				type = ec.Module.PredefinedTypes.BinderFlags.Resolve (loc);
 				eclass = Child.eclass;
 				return this;
 			}
@@ -242,6 +246,8 @@ namespace Mono.CSharp
 		// Used by BinderFlags
 		protected CSharpBinderFlags flags;
 
+		TypeSpec binder_type;
+
 		public DynamicExpressionStatement (IDynamicBinder binder, Arguments args, Location loc)
 		{
 			this.binder = binder;
@@ -278,26 +284,11 @@ namespace Mono.CSharp
 		protected bool DoResolveCore (ResolveContext rc)
 		{
 			int errors = rc.Report.Errors;
+			var pt = rc.Module.PredefinedTypes;
 
-			if (TypeManager.binder_type == null) {
-				var t = TypeManager.CoreLookupType (rc.Compiler,
-					"Microsoft.CSharp.RuntimeBinder", "Binder", MemberKind.Class, true);
-				if (t != null)
-					TypeManager.binder_type = new TypeExpression (t, Location.Null);
-			}
-
-			if (TypeManager.call_site_type == null)
-				TypeManager.call_site_type = TypeManager.CoreLookupType (rc.Compiler,
-					"System.Runtime.CompilerServices", "CallSite", MemberKind.Class, true);
-
-			if (TypeManager.generic_call_site_type == null)
-				TypeManager.generic_call_site_type = TypeManager.CoreLookupType (rc.Compiler,
-					"System.Runtime.CompilerServices", "CallSite", 1, MemberKind.Class, true);
-
-			if (TypeManager.binder_flags == null) {
-				TypeManager.binder_flags = TypeManager.CoreLookupType (rc.Compiler,
-					"Microsoft.CSharp.RuntimeBinder", "CSharpBinderFlags", MemberKind.Enum, true);
-			}
+			binder_type = pt.Binder.Resolve (loc);
+			pt.CallSite.Resolve (loc);
+			pt.CallSiteGeneric.Resolve (loc);
 
 			eclass = ExprClass.Value;
 
@@ -368,36 +359,48 @@ namespace Mono.CSharp
 				new QualifiedAliasMember (QualifiedAliasMember.GlobalAlias, "Microsoft", loc), "CSharp", loc), "RuntimeBinder", loc);
 		}
 
-		public static MemberAccess GetBinder (string name, Location loc)
+		protected MemberAccess GetBinder (string name, Location loc)
 		{
-			return new MemberAccess (TypeManager.binder_type, name, loc);
+			return new MemberAccess (new TypeExpression (binder_type, loc), name, loc);
 		}
 
 		TypeExpr CreateSiteType (EmitContext ec, Arguments arguments, int dyn_args_count, bool is_statement)
 		{
 			int default_args = is_statement ? 1 : 2;
+			var module = ec.MemberContext.Module;
 
 			bool has_ref_out_argument = false;
-			FullNamedExpression[] targs = new FullNamedExpression[dyn_args_count + default_args];
-			targs [0] = new TypeExpression (TypeManager.call_site_type, loc);
+			var targs = new TypeExpression[dyn_args_count + default_args];
+			targs [0] = new TypeExpression (module.PredefinedTypes.CallSite.TypeSpec, loc);
 			for (int i = 0; i < dyn_args_count; ++i) {
 				Argument a = arguments [i];
 				if (a.ArgType == Argument.AType.Out || a.ArgType == Argument.AType.Ref)
 					has_ref_out_argument = true;
 
-				targs [i + 1] = new TypeExpression (a.Type, loc);
+				var t = a.Type;
+
+				// Convert any internal type like dynamic or null to object
+				if (t.Kind == MemberKind.InternalCompilerType)
+					t = TypeManager.object_type;
+
+				targs [i + 1] = new TypeExpression (t, loc);
 			}
 
 			TypeExpr del_type = null;
 			if (!has_ref_out_argument) {
 				string d_name = is_statement ? "Action" : "Func";
 
-				TypeSpec t = TypeManager.CoreLookupType (ec.MemberContext.Compiler, "System", d_name, dyn_args_count + default_args, MemberKind.Delegate, false);
-				if (t != null) {
+				TypeExpr te = null;
+				Namespace type_ns = module.GlobalRootNamespace.GetNamespace ("System", true);
+				if (type_ns != null) {
+					te = type_ns.LookupType (module.Compiler, d_name, dyn_args_count + default_args, true, Location.Null);
+				}
+			
+				if (te != null) {
 					if (!is_statement)
 						targs [targs.Length - 1] = new TypeExpression (type, loc);
 
-					del_type = new GenericTypeExpr (t, new TypeArguments (targs), loc);
+					del_type = new GenericTypeExpr (te.Type, new TypeArguments (targs), loc);
 				}
 			}
 
@@ -409,27 +412,35 @@ namespace Mono.CSharp
 				Parameter[] p = new Parameter [dyn_args_count + 1];
 				p[0] = new Parameter (targs [0], "p0", Parameter.Modifier.NONE, null, loc);
 
-				for (int i = 1; i < dyn_args_count + 1; ++i)
-					p[i] = new Parameter (targs[i], "p" + i.ToString ("X"), arguments[i - 1].Modifier, null, loc);
-
-				TypeContainer site = ec.CreateDynamicSite ();
+				var site = ec.CreateDynamicSite ();
 				int index = site.Types == null ? 0 : site.Types.Count;
 
+				if (site.Mutator != null)
+					rt = site.Mutator.Mutate (rt);
+
+				for (int i = 1; i < dyn_args_count + 1; ++i) {
+					var t = targs[i];
+					if (site.Mutator != null)
+						t.Type = site.Mutator.Mutate (t.Type);
+
+					p[i] = new Parameter (t, "p" + i.ToString ("X"), arguments[i - 1].Modifier, null, loc);
+				}
+
 				Delegate d = new Delegate (site.NamespaceEntry, site, new TypeExpression (rt, loc),
 					Modifiers.INTERNAL | Modifiers.COMPILER_GENERATED,
 					new MemberName ("Container" + index.ToString ("X")),
-					new ParametersCompiled (null, p), null);
+					new ParametersCompiled (p), null);
 
 				d.CreateType ();
 				d.DefineType ();
 				d.Define ();
 				d.Emit ();
 
-				site.AddDelegate (d);
-				del_type = new TypeExpression (d.Definition, loc);
+				var inflated = site.AddDelegate (d);
+				del_type = new TypeExpression (inflated, loc);
 			}
 
-			TypeExpr site_type = new GenericTypeExpr (TypeManager.generic_call_site_type, new TypeArguments (del_type), loc);
+			TypeExpr site_type = new GenericTypeExpr (module.PredefinedTypes.CallSiteGeneric.TypeSpec, new TypeArguments (del_type), loc);
 			return site_type;
 		}
 	}
@@ -437,40 +448,68 @@ namespace Mono.CSharp
 	//
 	// Dynamic member access compound assignment for events
 	//
-	class DynamicEventCompoundAssign : DynamicExpressionStatement, IDynamicBinder
+	class DynamicEventCompoundAssign : ExpressionStatement
 	{
-		string name;
-		Statement condition;
-
-		public DynamicEventCompoundAssign (string name, Arguments args, ExpressionStatement assignment, ExpressionStatement invoke, Location loc)
-			: base (null, args, loc)
+		class IsEvent : DynamicExpressionStatement, IDynamicBinder
 		{
-			this.name = name;
-			base.binder = this;
+			string name;
+
+			public IsEvent (string name, Arguments args, Location loc)
+				: base (null, args, loc)
+			{
+				this.name = name;
+				binder = this;
+			}
+
+			public Expression CreateCallSiteBinder (ResolveContext ec, Arguments args)
+			{
+				type = TypeManager.bool_type;
+
+				Arguments binder_args = new Arguments (3);
 
-			// Used by += or -= only
-			type = TypeManager.bool_type;
+				binder_args.Add (new Argument (new BinderFlags (0, this)));
+				binder_args.Add (new Argument (new StringLiteral (name, loc)));
+				binder_args.Add (new Argument (new TypeOf (new TypeExpression (ec.CurrentType, loc), loc)));
 
-			condition = new If (
-				new Binary (Binary.Operator.Equality, this, new BoolLiteral (true, loc), loc),
-				new StatementExpression (invoke), new StatementExpression (assignment),
-				loc);
+				return new Invocation (GetBinder ("IsEvent", loc), binder_args);
+			}
 		}
 
-		public Expression CreateCallSiteBinder (ResolveContext ec, Arguments args)
+		Expression condition;
+		ExpressionStatement invoke, assign;
+
+		public DynamicEventCompoundAssign (string name, Arguments args, ExpressionStatement assignment, ExpressionStatement invoke, Location loc)
 		{
-			Arguments binder_args = new Arguments (3);
+			condition = new IsEvent (name, args, loc);
+			this.invoke = invoke;
+			this.assign = assignment;
+			this.loc = loc;
+		}
 
-			binder_args.Add (new Argument (new BinderFlags (0, this)));
-			binder_args.Add (new Argument (new StringLiteral (name, loc)));
-			binder_args.Add (new Argument (new TypeOf (new TypeExpression (ec.CurrentType, loc), loc)));
+		public override Expression CreateExpressionTree (ResolveContext ec)
+		{
+			return condition.CreateExpressionTree (ec);
+		}
 
-			return new Invocation (GetBinder ("IsEvent", loc), binder_args);
+		protected override Expression DoResolve (ResolveContext rc)
+		{
+			type = InternalType.Dynamic;
+			eclass = ExprClass.Value;
+			condition = condition.Resolve (rc);
+			return this;
+		}
+
+		public override void Emit (EmitContext ec)
+		{
+			var rc = new ResolveContext (ec.MemberContext);
+			var expr = new Conditional (new BooleanExpression (condition), invoke, assign, loc).Resolve (rc);
+			expr.Emit (ec);
 		}
 
 		public override void EmitStatement (EmitContext ec)
 		{
-			condition.Emit (ec);
+			var stmt = new If (condition, new StatementExpression (invoke), new StatementExpression (assign), loc);
+			stmt.Emit (ec);
 		}
 	}
 
@@ -520,21 +559,68 @@ namespace Mono.CSharp
 
 	class DynamicIndexBinder : DynamicMemberAssignable
 	{
+		bool can_be_mutator;
+
 		public DynamicIndexBinder (Arguments args, Location loc)
 			: base (args, loc)
 		{
 		}
 
+		public DynamicIndexBinder (CSharpBinderFlags flags, Arguments args, Location loc)
+			: this (args, loc)
+		{
+			base.flags = flags;
+		}
+
+		protected override Expression DoResolve (ResolveContext ec)
+		{
+			can_be_mutator = true;
+			return base.DoResolve (ec);
+		}
+
 		protected override Expression CreateCallSiteBinder (ResolveContext ec, Arguments args, bool isSet)
 		{
 			Arguments binder_args = new Arguments (3);
 
-			binder_args.Add (new Argument (new BinderFlags (0, this)));
+			binder_args.Add (new Argument (new BinderFlags (flags, this)));
 			binder_args.Add (new Argument (new TypeOf (new TypeExpression (ec.CurrentType, loc), loc)));
 			binder_args.Add (new Argument (new ImplicitlyTypedArrayCreation (args.CreateDynamicBinderArguments (ec), loc)));
 
+			isSet |= (flags & CSharpBinderFlags.ValueFromCompoundAssignment) != 0;
 			return new Invocation (GetBinder (isSet ? "SetIndex" : "GetIndex", loc), binder_args);
 		}
+
+		protected override Arguments CreateSetterArguments (ResolveContext rc, Expression rhs)
+		{
+			//
+			// Indexer has arguments which complicates things as the setter and getter
+			// are called in two steps when unary mutator is used. We have to make a
+			// copy of all variable arguments to not duplicate any side effect.
+			//
+			// ++d[++arg, Foo ()]
+			//
+
+			if (!can_be_mutator)
+				return base.CreateSetterArguments (rc, rhs);
+
+			var setter_args = new Arguments (Arguments.Count + 1);
+			for (int i = 0; i < Arguments.Count; ++i) {
+				var expr = Arguments[i].Expr;
+
+				if (expr is Constant || expr is VariableReference || expr is This) {
+					setter_args.Add (Arguments [i]);
+					continue;
+				}
+
+				LocalVariable temp = LocalVariable.CreateCompilerGenerated (expr.Type, rc.CurrentBlock, loc);
+				expr = new SimpleAssign (temp.CreateReferenceExpression (rc, expr.Location), expr).Resolve (rc);
+				Arguments[i].Expr = temp.CreateReferenceExpression (rc, expr.Location).Resolve (rc);
+				setter_args.Add (Arguments [i].Clone (expr));
+			}
+
+			setter_args.Add (new Argument (rhs));
+			return setter_args;
+		}
 	}
 
 	class DynamicInvocation : DynamicExpressionStatement, IDynamicBinder
@@ -629,15 +715,22 @@ namespace Mono.CSharp
 			this.name = name;
 		}
 
+		public DynamicMemberBinder (string name, CSharpBinderFlags flags, Arguments args, Location loc)
+			: this (name, args, loc)
+		{
+			base.flags = flags;
+		}
+
 		protected override Expression CreateCallSiteBinder (ResolveContext ec, Arguments args, bool isSet)
 		{
 			Arguments binder_args = new Arguments (4);
 
-			binder_args.Add (new Argument (new BinderFlags (0, this)));
+			binder_args.Add (new Argument (new BinderFlags (flags, this)));
 			binder_args.Add (new Argument (new StringLiteral (name, loc)));
 			binder_args.Add (new Argument (new TypeOf (new TypeExpression (ec.CurrentType, loc), loc)));
 			binder_args.Add (new Argument (new ImplicitlyTypedArrayCreation (args.CreateDynamicBinderArguments (ec), loc)));
 
+			isSet |= (flags & CSharpBinderFlags.ValueFromCompoundAssignment) != 0;
 			return new Invocation (GetBinder (isSet ? "SetMember" : "GetMember", loc), binder_args);
 		}
 	}
@@ -666,6 +759,14 @@ namespace Mono.CSharp
 
 		protected abstract Expression CreateCallSiteBinder (ResolveContext ec, Arguments args, bool isSet);
 
+		protected virtual Arguments CreateSetterArguments (ResolveContext rc, Expression rhs)
+		{
+			var setter_args = new Arguments (Arguments.Count + 1);
+			setter_args.AddRange (Arguments);
+			setter_args.Add (new Argument (rhs));
+			return setter_args;
+		}
+
 		public override Expression DoResolveLValue (ResolveContext rc, Expression right_side)
 		{
 			if (right_side == EmptyExpression.OutAccess.Instance) {
@@ -674,9 +775,7 @@ namespace Mono.CSharp
 			}
 
 			if (DoResolveCore (rc)) {
-				setter_args = new Arguments (Arguments.Count + 1);
-				setter_args.AddRange (Arguments);
-				setter_args.Add (new Argument (right_side));
+				setter_args = CreateSetterArguments (rc, right_side);
 				setter = CreateCallSiteBinder (rc, setter_args, true);
 			}
 
@@ -719,15 +818,23 @@ namespace Mono.CSharp
 
 	class DynamicUnaryConversion : DynamicExpressionStatement, IDynamicBinder
 	{
-		string name;
+		readonly string name;
 
 		public DynamicUnaryConversion (string name, Arguments args, Location loc)
 			: base (null, args, loc)
 		{
 			this.name = name;
 			base.binder = this;
-			if (name == "IsTrue" || name == "IsFalse")
-				type = TypeManager.bool_type;
+		}
+
+		public static DynamicUnaryConversion CreateIsTrue (Arguments args, Location loc)
+		{
+			return new DynamicUnaryConversion ("IsTrue", args, loc) { type = TypeManager.bool_type };
+		}
+
+		public static DynamicUnaryConversion CreateIsFalse (Arguments args, Location loc)
+		{
+			return new DynamicUnaryConversion ("IsFalse", args, loc) { type = TypeManager.bool_type };
 		}
 
 		public Expression CreateCallSiteBinder (ResolveContext ec, Arguments args)
@@ -757,11 +864,34 @@ namespace Mono.CSharp
 		TypeSpec instance_type;
 
 		public DynamicSiteClass (TypeContainer parent, MemberBase host, TypeParameter[] tparams)
-			: base (parent, MakeMemberName (host, "DynamicSite", 0, tparams, Location.Null), tparams, Modifiers.STATIC)
+			: base (parent, MakeMemberName (host, "DynamicSite", parent.DynamicSitesCounter, tparams, Location.Null), tparams, Modifiers.STATIC)
 		{
 			if (tparams != null) {
 				mutator = new TypeParameterMutator (tparams, CurrentTypeParameters);
 			}
+
+			parent.DynamicSitesCounter++;
+		}
+
+		public override TypeSpec AddDelegate (Delegate d)
+		{
+			TypeSpec inflated;
+
+			base.AddDelegate (d);
+
+			// Inflated type instance has to be updated manually
+			if (instance_type is InflatedTypeSpec) {
+				var inflator = new TypeParameterInflator (instance_type, TypeParameterSpec.EmptyTypes, TypeSpec.EmptyTypes);
+				inflated = (TypeSpec) d.CurrentType.InflateMember (inflator);
+				instance_type.MemberCache.AddMember (inflated);
+
+				//inflator = new TypeParameterInflator (d.Parent.CurrentType, TypeParameterSpec.EmptyTypes, TypeSpec.EmptyTypes);
+				//d.Parent.CurrentType.MemberCache.AddMember (d.CurrentType.InflateMember (inflator));
+			} else {
+				inflated = d.CurrentType;
+			}
+
+			return inflated;
 		}
 
 		public FieldSpec CreateCallSiteField (FullNamedExpression type, Location loc)
diff --git a/mcs/mcs/ecore.cs b/mcs/mcs/ecore.cs
index 80ddebc..8a94833 100644
--- a/mcs/mcs/ecore.cs
+++ b/mcs/mcs/ecore.cs
@@ -12,13 +12,18 @@
 
 using System;
 using System.Collections.Generic;
-using System.Diagnostics;
-using System.Reflection;
-using System.Reflection.Emit;
 using System.Text;
 using SLE = System.Linq.Expressions;
 using System.Linq;
 
+#if STATIC
+using IKVM.Reflection;
+using IKVM.Reflection.Emit;
+#else
+using System.Reflection;
+using System.Reflection.Emit;
+#endif
+
 namespace Mono.CSharp {
 
 	/// <remarks>
@@ -129,11 +134,6 @@ namespace Mono.CSharp {
 			get { return loc; }
 		}
 
-		// Not nice but we have broken hierarchy.
-		public virtual void CheckMarshalByRefAccess (ResolveContext ec)
-		{
-		}
-
 		public virtual string GetSignatureForError ()
 		{
 			return type.GetDefinition ().GetSignatureForError ();
@@ -196,15 +196,6 @@ namespace Mono.CSharp {
 		}
 
 		//
-		// C# 3.0 introduced contextual keywords (var) which behaves like a type if type with
-		// same name exists or as a keyword when no type was found
-		// 
-		public virtual TypeExpr ResolveAsContextualType (IMemberContext rc, bool silent)
-		{
-			return ResolveAsTypeTerminal (rc, silent);
-		}		
-		
-		//
 		// This is used to resolve the expression as a type, a null
 		// value will be returned if the expression is not a type
 		// reference
@@ -225,13 +216,18 @@ namespace Mono.CSharp {
 				return null;
 			}
 
-			if (!te.CheckAccessLevel (ec)) {
+			if (!te.type.IsAccessible (ec.CurrentType)) {
 				ec.Compiler.Report.SymbolRelatedToPreviousError (te.Type);
 				ErrorIsInaccesible (ec, te.Type.GetSignatureForError (), loc);
 			}
 
 			te.loc = loc;
 
+			var dep = te.type.GetMissingDependencies ();
+			if (dep != null) {
+				ImportedTypeDefinition.Error_MissingDependency (ec, dep, loc);
+			}
+
 			//
 			// Obsolete checks cannot be done when resolving base context as they
 			// require type dependecies to be set but we are just resolving them
@@ -329,11 +325,6 @@ namespace Mono.CSharp {
 				type.GetSignatureForError (), target.GetSignatureForError ());
 		}
 
-		public virtual void Error_VariableIsUsedBeforeItIsDeclared (Report Report, string name)
-		{
-			Report.Error (841, loc, "A local variable `{0}' cannot be used before it is declared", name);
-		}
-
 		public void Error_TypeArgumentsCannotBeUsed (Report report, Location loc, MemberSpec member, int arity)
 		{
 			// Better message for possible generic expressions
@@ -380,6 +371,11 @@ namespace Mono.CSharp {
 			ec.Report.Error (131, loc, "The left-hand side of an assignment must be a variable, a property or an indexer");
 		}
 
+		protected void Error_VoidPointerOperation (ResolveContext rc)
+		{
+			rc.Report.Error (242, loc, "The operation in question is undefined on void pointers");
+		}
+
 		public ResolveFlags ExprClassToResolveFlags {
 			get {
 				switch (eclass) {
@@ -440,7 +436,7 @@ namespace Mono.CSharp {
 					throw;
 
 				ec.Report.Error (584, loc, "Internal compiler error: {0}", ex.Message);
-				return EmptyExpression.Null;
+				return EmptyExpression.Null;	// TODO: Add location
 			}
 		}
 
@@ -562,7 +558,7 @@ namespace Mono.CSharp {
 
 		protected static MethodSpec ConstructorLookup (ResolveContext rc, TypeSpec type, ref Arguments args, Location loc)
 		{
-			var ctors = MemberCache.FindMembers (type, ConstructorInfo.ConstructorName, true);
+			var ctors = MemberCache.FindMembers (type, Constructor.ConstructorName, true);
 			if (ctors == null) {
 				rc.Report.SymbolRelatedToPreviousError (type);
 				if (type.IsStruct) {
@@ -580,11 +576,20 @@ namespace Mono.CSharp {
 			return r.ResolveMember<MethodSpec> (rc, ref args);
 		}
 
+		[Flags]
+		public enum MemberLookupRestrictions
+		{
+			None = 0,
+			InvocableOnly = 1,
+			ExactArity = 1 << 2,
+			ReadAccess = 1 << 3
+		}
+
 		//
 		// Lookup type `queried_type' for code in class `container_type' with a qualifier of
 		// `qualifier_type' or null to lookup members in the current class.
 		//
-		public static Expression MemberLookup (ResolveContext rc, TypeSpec currentType, TypeSpec queried_type, string name, int arity, bool invocableOnly, Location loc)
+		public static Expression MemberLookup (ResolveContext rc, TypeSpec currentType, TypeSpec queried_type, string name, int arity, MemberLookupRestrictions restrictions, Location loc)
 		{
 			var members = MemberCache.FindMembers (queried_type, name, false);
 			if (members == null)
@@ -601,13 +606,32 @@ namespace Mono.CSharp {
 					if ((member.Modifiers & Modifiers.OVERRIDE) != 0 && member.Kind != MemberKind.Event)
 						continue;
 
-					if (arity > 0 && member.Arity != arity)
+					if ((arity > 0 || (restrictions & MemberLookupRestrictions.ExactArity) != 0) && member.Arity != arity)
 						continue;
 
-					if (rc != null && !member.IsAccessible (currentType))
-						continue;
+					if (rc != null) {
+						if (!member.IsAccessible (currentType))
+							continue;
+
+						//
+						// With runtime binder we can have a situation where queried type is inaccessible
+						// because it came via dynamic object, the check about inconsisted accessibility
+						// had no effect as the type was unknown during compilation
+						//
+						// class A {
+						//		private class N { }
+						//
+						//		public dynamic Foo ()
+						//		{
+						//			return new N ();
+						//		}
+						//	}
+						//
+						if (rc.Compiler.IsRuntimeBinder && !member.DeclaringType.IsAccessible (currentType))
+							continue;
+					}
 
-					if (invocableOnly) {
+					if ((restrictions & MemberLookupRestrictions.InvocableOnly) != 0) {
 						if (member is MethodSpec)
 							return new MethodGroupExpr (members, queried_type, loc);
 
@@ -669,7 +693,7 @@ namespace Mono.CSharp {
 		///   Returns an expression that can be used to invoke operator false
 		///   on the expression if it exists.
 		/// </summary>
-		static public Expression GetOperatorFalse (ResolveContext ec, Expression e, Location loc)
+		protected static Expression GetOperatorFalse (ResolveContext ec, Expression e, Location loc)
 		{
 			return GetOperatorTrueOrFalse (ec, e, false, loc);
 		}
@@ -684,7 +708,7 @@ namespace Mono.CSharp {
 			Arguments arguments = new Arguments (1);
 			arguments.Add (new Argument (e));
 
-			var res = new OverloadResolver (methods, OverloadResolver.Restrictions.NoBaseMembers, loc);
+			var res = new OverloadResolver (methods, OverloadResolver.Restrictions.BaseMembersIncluded | OverloadResolver.Restrictions.NoBaseMembers, loc);
 			var oper = res.ResolveOperator (ec, ref arguments);
 
 			if (oper == null)
@@ -924,16 +948,11 @@ namespace Mono.CSharp {
 
 		protected static TypeExpr CreateExpressionTypeExpression (ResolveContext ec, Location loc)
 		{
-			TypeExpr texpr = TypeManager.expression_type_expr;
-			if (texpr == null) {
-				TypeSpec t = TypeManager.CoreLookupType (ec.Compiler, "System.Linq.Expressions", "Expression", MemberKind.Class, true);
-				if (t == null)
-					return null;
-
-				TypeManager.expression_type_expr = texpr = new TypeExpression (t, Location.Null);
-			}
+			var t = ec.Module.PredefinedTypes.Expression.Resolve (loc);
+			if (t == null)
+				return null;
 
-			return texpr;
+			return new TypeExpression (t, loc);
 		}
 
 		//
@@ -1040,9 +1059,13 @@ namespace Mono.CSharp {
 
 		public override SLE.Expression MakeExpression (BuilderContext ctx)
 		{
+#if STATIC
+			return base.MakeExpression (ctx);
+#else
 			return ctx.HasSet (BuilderContext.Options.CheckedScope) ?
 				SLE.Expression.ConvertChecked (child.MakeExpression (ctx), type.GetMetaInfo ()) :
 				SLE.Expression.Convert (child.MakeExpression (ctx), type.GetMetaInfo ());
+#endif
 		}
 
 		protected override void CloneTo (CloneContext clonectx, Expression t)
@@ -1354,27 +1377,19 @@ namespace Mono.CSharp {
 			return Child.GetValue ();
 		}
 
+#if !STATIC
 		public override object GetTypedValue ()
 		{
-			// FIXME: runtime is not ready to work with just emited enums
-			if (!RootContext.StdLib) {
-				return Child.GetValue ();
-			}
-
-#if MS_COMPATIBLE
-			// Small workaround for big problem
+			//
+			// The method can be used in dynamic context only (on closed types)
+			//
 			// System.Enum.ToObject cannot be called on dynamic types
 			// EnumBuilder has to be used, but we cannot use EnumBuilder
 			// because it does not properly support generics
 			//
-			// This works only sometimes
-			//
-			if (type.MemberDefinition is TypeContainer)
-				return Child.GetValue ();
-#endif
-
 			return System.Enum.ToObject (type.GetMetaInfo (), Child.GetValue ());
 		}
+#endif
 		
 		public override string AsString ()
 		{
@@ -1448,6 +1463,12 @@ namespace Mono.CSharp {
 
 		public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType)
 		{
+			// Only boxing to object type is supported
+			if (targetType != TypeManager.object_type) {
+				base.EncodeAttributeValue (rc, enc, targetType);
+				return;
+			}
+
 			enc.Encode (child.Type);
 			child.EncodeAttributeValue (rc, enc, child.Type);
 		}
@@ -1485,13 +1506,6 @@ namespace Mono.CSharp {
 			return this;
 		}
 
-		public override Expression DoResolveLValue (ResolveContext ec, Expression right_side)
-		{
-			if (right_side == EmptyExpression.LValueMemberAccess || right_side == EmptyExpression.LValueMemberOutAccess)
-				ec.Report.Error (445, loc, "Cannot modify the result of an unboxing conversion");
-			return base.DoResolveLValue (ec, right_side);
-		}
-
 		public override void Emit (EmitContext ec)
 		{
 			base.Emit (ec);
@@ -1722,7 +1736,8 @@ namespace Mono.CSharp {
 		}
 	}
 	
-	public class OpcodeCast : TypeCast {
+	class OpcodeCast : TypeCast
+	{
 		readonly OpCode op;
 		
 		public OpcodeCast (Expression child, TypeSpec return_type, OpCode op)
@@ -1750,6 +1765,27 @@ namespace Mono.CSharp {
 		}
 	}
 
+	//
+	// Opcode casts expression with 2 opcodes but only
+	// single expression tree node
+	//
+	class OpcodeCastDuplex : OpcodeCast
+	{
+		readonly OpCode second;
+
+		public OpcodeCastDuplex (Expression child, TypeSpec returnType, OpCode first, OpCode second)
+			: base (child, returnType, first)
+		{
+			this.second = second;
+		}
+
+		public override void Emit (EmitContext ec)
+		{
+			base.Emit (ec);
+			ec.Emit (second);
+		}
+	}
+
 	/// <summary>
 	///   This kind of cast is used to encapsulate a child and cast it
 	///   to the class requested
@@ -2121,7 +2157,7 @@ namespace Mono.CSharp {
 			return Name;
 		}
 
-		public abstract Expression LookupNameExpression (ResolveContext rc, bool readMode, bool invocableOnly);
+		public abstract Expression LookupNameExpression (ResolveContext rc, MemberLookupRestrictions restriction);
 	}
 	
 	/// <summary>
@@ -2234,10 +2270,10 @@ namespace Mono.CSharp {
 			}
 
 			if (Arity == 0 && Name == "dynamic" && RootContext.Version > LanguageVersion.V_3) {
-				if (!ec.Compiler.PredefinedAttributes.Dynamic.IsDefined) {
+				if (!ec.Module.PredefinedAttributes.Dynamic.IsDefined) {
 					ec.Compiler.Report.Error (1980, Location,
 						"Dynamic keyword requires `{0}' to be defined. Are you missing System.Core.dll assembly reference?",
-						ec.Compiler.PredefinedAttributes.Dynamic.GetSignatureForError ());
+						ec.Module.PredefinedAttributes.Dynamic.GetSignatureForError ());
 				}
 
 				return new DynamicTypeExpr (loc);
@@ -2253,50 +2289,38 @@ namespace Mono.CSharp {
 			return null;
 		}
 
-		public override Expression LookupNameExpression (ResolveContext rc, bool readMode, bool invocableOnly)
+		public override Expression LookupNameExpression (ResolveContext rc, MemberLookupRestrictions restrictions)
 		{
 			int lookup_arity = Arity;
 			bool errorMode = false;
 			Expression e;
 			Block current_block = rc.CurrentBlock;
+			INamedBlockVariable variable = null;
+			bool variable_found = false;
 
 			while (true) {
 				//
 				// Stage 1: binding to local variables or parameters
 				//
+				// LAMESPEC: It should take invocableOnly into account but that would break csc compatibility
+				//
 				if (current_block != null && lookup_arity == 0) {
-					LocalInfo vi = current_block.GetLocalInfo (Name);
-					if (vi != null) {
-						// TODO: pass vi in to speed things up
-						e = new LocalVariableReference (rc.CurrentBlock, Name, loc);
-					} else {
-						e = current_block.Toplevel.GetParameterReference (Name, loc);
-					}
-
-					if (e != null) {
-						if (Arity > 0)
-							Error_TypeArgumentsCannotBeUsed (rc.Report, "variable", Name, loc);
-
-						return e;
-					}
-
-					if (!errorMode)
-						current_block.CheckInvariantMeaningInBlock (Name, this, loc);
+					if (current_block.ParametersBlock.TopBlock.GetLocalName (Name, current_block.Original, ref variable)) {
+						if (!variable.IsDeclared) {
+							// We found local name in accessible block but it's not
+							// initialized yet, maybe the user wanted to bind to something else
+							errorMode = true;
+							variable_found = true;
+						} else {
+							e = variable.CreateReferenceExpression (rc, loc);
+							if (e != null) {
+								if (Arity > 0)
+									Error_TypeArgumentsCannotBeUsed (rc.Report, "variable", Name, loc);
 
-/*
-					//if (errorMode) {
-						IKnownVariable ikv = current_block.Explicit.GetKnownVariable (Name);
-						if (ikv != null) {
-							LocalInfo li = ikv as LocalInfo;
-							// Supress CS0219 warning
-							if (li != null)
-								li.Used = true;
-
-							Error_VariableIsUsedBeforeItIsDeclared (rc.Report, Name);
-							return null;
+								return e;
+							}
 						}
-					//}
-*/ 
+					}
 				}
 
 				//
@@ -2305,18 +2329,41 @@ namespace Mono.CSharp {
 				TypeSpec member_type = rc.CurrentType;
 				TypeSpec current_type = member_type;
 				for (; member_type != null; member_type = member_type.DeclaringType) {
-					var me = MemberLookup (errorMode ? null : rc, current_type, member_type, Name, lookup_arity, invocableOnly, loc) as MemberExpr;
-					if (me == null)
+					e = MemberLookup (errorMode ? null : rc, current_type, member_type, Name, lookup_arity, restrictions, loc);
+					if (e == null)
+						continue;
+
+					var me = e as MemberExpr;
+					if (me == null) {
+						// The name matches a type, defer to ResolveAsTypeStep
+						if (e is TypeExpr)
+							break;
+
 						continue;
+					}
 
 					if (errorMode) {
-						if (me is MethodGroupExpr) {
+						if (variable != null) {
+							if (me is FieldExpr || me is ConstantExpr || me is EventExpr || me is PropertyExpr) {
+								rc.Report.Error (844, loc,
+									"A local variable `{0}' cannot be used before it is declared. Consider renaming the local variable when it hides the member `{1}'",
+									Name, me.GetSignatureForError ());
+							} else {
+								break;
+							}
+						} else if (me is MethodGroupExpr) {
 							// Leave it to overload resolution to report correct error
 						} else {
 							// TODO: rc.Report.SymbolRelatedToPreviousError ()
 							ErrorIsInaccesible (rc, me.GetSignatureForError (), loc);
 						}
 					} else {
+						// LAMESPEC: again, ignores InvocableOnly
+						if (variable != null) {
+							rc.Report.SymbolRelatedToPreviousError (variable.Location, Name);
+							rc.Report.Error (135, loc, "`{0}' conflicts with a declaration in a child block", Name);
+						}
+
 						//
 						// MemberLookup does not check accessors availability, this is actually needed for properties only
 						//
@@ -2324,7 +2371,7 @@ namespace Mono.CSharp {
 						if (pe != null) {
 
 							// Break as there is no other overload available anyway
-							if (readMode) {
+							if ((restrictions & MemberLookupRestrictions.ReadAccess) != 0) {
 								if (!pe.PropertyInfo.HasGet || !pe.PropertyInfo.Get.IsAccessible (current_type))
 									break;
 
@@ -2353,14 +2400,25 @@ namespace Mono.CSharp {
 				//
 				// Stage 3: Lookup nested types, namespaces and type parameters in the context
 				//
-				if (!invocableOnly) {
+				if ((restrictions & MemberLookupRestrictions.InvocableOnly) == 0 && !variable_found) {
 					e = ResolveAsTypeStep (rc, lookup_arity == 0 || !errorMode);
-					if (e != null)
+					if (e != null) {
+						if (variable != null) {
+							rc.Report.SymbolRelatedToPreviousError (variable.Location, Name);
+							rc.Report.Error (135, loc, "`{0}' conflicts with a declaration in a child block", Name);
+						}
+
 						return e;
+					}
 				}
 
 				if (errorMode) {
-					rc.Report.Error (103, loc, "The name `{0}' does not exist in the current context", Name);
+					if (variable_found) {
+						rc.Report.Error (841, loc, "A local variable `{0}' cannot be used before it is declared", Name);
+					} else {
+						rc.Report.Error (103, loc, "The name `{0}' does not exist in the current context", Name);
+					}
+
 					return null;
 				}
 
@@ -2371,14 +2429,14 @@ namespace Mono.CSharp {
 				}
 
 				lookup_arity = 0;
-				invocableOnly = false;
+				restrictions &= ~MemberLookupRestrictions.InvocableOnly;
 				errorMode = true;
 			}
 		}
 		
 		Expression SimpleNameResolve (ResolveContext ec, Expression right_side, bool intermediate)
 		{
-			Expression e = LookupNameExpression (ec, right_side == null, false);
+			Expression e = LookupNameExpression (ec, right_side == null ? MemberLookupRestrictions.ReadAccess : MemberLookupRestrictions.None);
 
 			if (e == null)
 				return null;
@@ -2447,15 +2505,6 @@ namespace Mono.CSharp {
 			return ResolveAsTypeTerminal (ec, false);
 		}
 
-		public virtual bool CheckAccessLevel (IMemberContext mc)
-		{
-			DeclSpace c = mc.CurrentMemberDefinition as DeclSpace;
-			if (c == null)
-				c = mc.CurrentMemberDefinition.Parent;
-
-			return c.CheckAccessLevel (Type);
-		}
-
 		protected abstract TypeExpr DoResolveAsTypeStep (IMemberContext ec);
 
 		public override bool Equals (object obj)
@@ -2587,7 +2636,7 @@ namespace Mono.CSharp {
 					// get/set member expressions second call would fail to proxy because left expression
 					// would be of 'this' and not 'base'
 					if (rc.CurrentType.IsStruct)
-						InstanceExpression = rc.GetThis (loc);
+						InstanceExpression = new This (loc).Resolve (rc);
 				}
 
 				if (targs != null)
@@ -2649,6 +2698,11 @@ namespace Mono.CSharp {
 				UnsafeError (rc, loc);
 			}
 
+			var dep = member.GetMissingDependencies ();
+			if (dep != null) {
+				ImportedTypeDefinition.Error_MissingDependency (rc, dep, loc);
+			}
+
 			if (!rc.IsObsolete) {
 				ObsoleteAttribute oa = member.GetAttributeObsolete ();
 				if (oa != null)
@@ -2687,15 +2741,20 @@ namespace Mono.CSharp {
 			return left;
 		}
 
-		public bool ResolveInstanceExpression (ResolveContext rc)
+		public bool ResolveInstanceExpression (ResolveContext rc, Expression rhs)
 		{
 			if (IsStatic) {
 				if (InstanceExpression != null) {
 					if (InstanceExpression is TypeExpr) {
-						ObsoleteAttribute oa = InstanceExpression.Type.GetAttributeObsolete ();
-						if (oa != null && !rc.IsObsolete) {
-							AttributeTester.Report_ObsoleteMessage (oa, InstanceExpression.GetSignatureForError (), loc, rc.Report);
-						}
+						var t = InstanceExpression.Type;
+						do {
+							ObsoleteAttribute oa = t.GetAttributeObsolete ();
+							if (oa != null && !rc.IsObsolete) {
+								AttributeTester.Report_ObsoleteMessage (oa, t.GetSignatureForError (), loc, rc.Report);
+							}
+
+							t = t.DeclaringType;
+						} while (t != null);
 					} else {
 						var runtime_expr = InstanceExpression as RuntimeValueExpression;
 						if (runtime_expr == null || !runtime_expr.IsSuggestionOnly) {
@@ -2731,13 +2790,21 @@ namespace Mono.CSharp {
 						DeclaringType.GetSignatureForError (), rc.CurrentType.GetSignatureForError ());
 				}
 
-				InstanceExpression = rc.GetThis (loc);
+				InstanceExpression = new This (loc);
+				if (this is FieldExpr && rc.CurrentType.IsStruct) {
+					using (rc.Set (ResolveContext.Options.OmitStructFlowAnalysis)) {
+						InstanceExpression = InstanceExpression.Resolve (rc);
+					}
+				} else {
+					InstanceExpression = InstanceExpression.Resolve (rc);
+				}
+
 				return false;
 			}
 
 			var me = InstanceExpression as MemberExpr;
 			if (me != null) {
-				me.ResolveInstanceExpression (rc);
+				me.ResolveInstanceExpression (rc, rhs);
 
 				var fe = me as FieldExpr;
 				if (fe != null && fe.IsMarshalByRefAccess ()) {
@@ -2746,6 +2813,29 @@ namespace Mono.CSharp {
 						"Cannot call methods, properties, or indexers on `{0}' because it is a value type member of a marshal-by-reference class",
 						me.GetSignatureForError ());
 				}
+
+				return true;
+			}
+
+			//
+			// Run member-access postponed check once we know that
+			// the expression is not field expression which is the only
+			// expression which can use uninitialized this
+			//
+			if (InstanceExpression is This && !(this is FieldExpr) && rc.CurrentType.IsStruct) {
+				((This)InstanceExpression).CheckStructThisDefiniteAssignment (rc);
+			}
+
+			//
+			// Additional checks for l-value member access
+			//
+			if (rhs != null) {
+				//
+				// TODO: It should be recursive but that would break csc compatibility
+				//
+				if (InstanceExpression is UnboxCast) {
+					rc.Report.Error (445, InstanceExpression.Location, "Cannot modify the result of an unboxing conversion");
+				}
 			}
 
 			return true;
@@ -2848,7 +2938,7 @@ namespace Mono.CSharp {
 
 			var me = ExtensionExpression as MemberExpr;
 			if (me != null)
-				me.ResolveInstanceExpression (ec);
+				me.ResolveInstanceExpression (ec, null);
 
 			InstanceExpression = null;
 			return this;
@@ -2898,6 +2988,7 @@ namespace Mono.CSharp {
 	{
 		protected IList<MemberSpec> Methods;
 		MethodSpec best_candidate;
+		TypeSpec best_candidate_return;
 		protected TypeArguments type_arguments;
 
  		SimpleName simple_name;
@@ -2926,6 +3017,12 @@ namespace Mono.CSharp {
 			}
 		}
 
+		public TypeSpec BestCandidateReturnType {
+			get {
+				return best_candidate_return;
+			}
+		}
+
 		protected override TypeSpec DeclaringType {
 			get {
 				return queried_type;
@@ -2971,7 +3068,8 @@ namespace Mono.CSharp {
 		public static MethodGroupExpr CreatePredefined (MethodSpec best, TypeSpec queriedType, Location loc)
 		{
 			return new MethodGroupExpr (best, queriedType, loc) {
-				best_candidate = best
+				best_candidate = best,
+				best_candidate_return = best.ReturnType
 			};
 		}
 
@@ -3073,7 +3171,7 @@ namespace Mono.CSharp {
 			if (r.BestCandidateNewMethodGroup != null)
 				return r.BestCandidateNewMethodGroup;
 
-			if (best_candidate.Kind == MemberKind.Method) {
+			if (best_candidate.Kind == MemberKind.Method && (restr & OverloadResolver.Restrictions.ProbingOnly) == 0) {
 				if (InstanceExpression != null) {
 					if (best_candidate.IsExtensionMethod && args[0].Expr == InstanceExpression) {
 						InstanceExpression = null;
@@ -3086,12 +3184,19 @@ namespace Mono.CSharp {
 					}
 				}
 
-				ResolveInstanceExpression (ec);
+				ResolveInstanceExpression (ec, null);
 				if (InstanceExpression != null)
 					CheckProtectedMemberAccess (ec, best_candidate);
 			}
 
-			best_candidate = CandidateToBaseOverride (ec, best_candidate);
+			var base_override = CandidateToBaseOverride (ec, best_candidate);
+			if (base_override == best_candidate) {
+				best_candidate_return = r.BestCandidateReturnType;
+			} else {
+				best_candidate = base_override;
+				best_candidate_return = best_candidate.ReturnType;
+			}
+
 			return this;
 		}
 
@@ -3113,6 +3218,15 @@ namespace Mono.CSharp {
 			return baseType == null ? null : MemberCache.FindMembers (baseType, Methods [0].Name, false);
 		}
 
+		public IParametersMember GetOverrideMemberParameters (MemberSpec member)
+		{
+			if (queried_type == member.DeclaringType)
+				return null;
+
+			return MemberCache.FindMember (queried_type, new MemberFilter ((MethodSpec) member),
+				BindingRestriction.InstanceOnly | BindingRestriction.OverrideOnly) as IParametersMember;
+		}
+
 		//
 		// Extension methods lookup after ordinary methods candidates failed to apply
 		//
@@ -3148,12 +3262,14 @@ namespace Mono.CSharp {
 			DelegateInvoke = 1,
 			ProbingOnly	= 1 << 1,
 			CovariantDelegate = 1 << 2,
-			NoBaseMembers = 1 << 3
+			NoBaseMembers = 1 << 3,
+			BaseMembersIncluded = 1 << 4
 		}
 
 		public interface IBaseMembersProvider
 		{
 			IList<MemberSpec> GetBaseMembers (TypeSpec baseType);
+			IParametersMember GetOverrideMemberParameters (MemberSpec member);
 			MethodGroupExpr LookupExtensionMethod (ResolveContext rc);
 		}
 
@@ -3174,6 +3290,11 @@ namespace Mono.CSharp {
 				return null;
 			}
 
+			public IParametersMember GetOverrideMemberParameters (MemberSpec member)
+			{
+				return null;
+			}
+
 			public MethodGroupExpr LookupExtensionMethod (ResolveContext rc)
 			{
 				return null;
@@ -3184,10 +3305,12 @@ namespace Mono.CSharp {
 		{
 			public readonly MemberSpec Member;
 			public readonly bool Expanded;
+			public readonly AParametersCollection Parameters;
 
-			public AmbiguousCandidate (MemberSpec member, bool expanded)
+			public AmbiguousCandidate (MemberSpec member, AParametersCollection parameters, bool expanded)
 			{
 				Member = member;
+				Parameters = parameters;
 				Expanded = expanded;
 			}
 		}
@@ -3199,6 +3322,7 @@ namespace Mono.CSharp {
 		IErrorHandler custom_errors;
 		Restrictions restrictions;
 		MethodGroupExpr best_candidate_extension_group;
+		TypeSpec best_candidate_return_type;
 
 		SessionReportPrinter lambda_conv_msgs;
 		ReportPrinter prev_recorder;
@@ -3246,6 +3370,15 @@ namespace Mono.CSharp {
 			}
 		}
 
+		//
+		// Return type can be different between best candidate and closest override
+		//
+		public TypeSpec BestCandidateReturnType {
+			get {
+				return best_candidate_return_type;
+			}
+		}
+
 		public IErrorHandler CustomErrors {
 			get {
 				return custom_errors;
@@ -3287,23 +3420,51 @@ namespace Mono.CSharp {
 		static int BetterExpressionConversion (ResolveContext ec, Argument a, TypeSpec p, TypeSpec q)
 		{
 			TypeSpec argument_type = a.Type;
+
+			//
+			// If argument is an anonymous function
+			//
 			if (argument_type == InternalType.AnonymousMethod && RootContext.Version > LanguageVersion.ISO_2) {
 				//
-				// Uwrap delegate from Expression<T>
+				// p and q are delegate types or expression tree types
 				//
-				if (p.GetDefinition () == TypeManager.expression_type) {
+				if (p.GetDefinition () == TypeManager.expression_type || q.GetDefinition () == TypeManager.expression_type) {
+					if (q.MemberDefinition != p.MemberDefinition) {
+						return 0;
+					}
+
+					//
+					// Uwrap delegate from Expression<T>
+					//
+					q = TypeManager.GetTypeArguments (q)[0];
 					p = TypeManager.GetTypeArguments (p)[0];
 				}
-				if (q.GetDefinition () == TypeManager.expression_type) {
-					q = TypeManager.GetTypeArguments (q)[0];
+
+				var p_m = Delegate.GetInvokeMethod (ec.Compiler, p);
+				var q_m = Delegate.GetInvokeMethod (ec.Compiler, q);
+
+				//
+				// With identical parameter lists
+				//
+				if (!TypeSpecComparer.Equals (p_m.Parameters.Types,q_m.Parameters.Types))
+					return 0;
+
+				p = p_m.ReturnType;
+				q = q_m.ReturnType;
+
+				//
+				// if p is void returning, and q has a return type Y, then C2 is the better conversion.
+				//
+				if (p == TypeManager.void_type) {
+					return q != TypeManager.void_type ? 2 : 0;
 				}
 
-				p = Delegate.GetInvokeMethod (ec.Compiler, p).ReturnType;
-				q = Delegate.GetInvokeMethod (ec.Compiler, q).ReturnType;
-				if (p == TypeManager.void_type && q != TypeManager.void_type)
-					return 2;
-				if (q == TypeManager.void_type && p != TypeManager.void_type)
-					return 1;
+				//
+				// if p has a return type Y, and q is void returning, then C1 is the better conversion.
+				//
+				if (q == TypeManager.void_type) {
+					return p != TypeManager.void_type ? 1: 0;
+				}
 			} else {
 				if (argument_type == p)
 					return 1;
@@ -3338,8 +3499,8 @@ namespace Mono.CSharp {
 					q == TypeManager.uint64_type)
 					return 1;
 			} else if (p == InternalType.Dynamic) {
-				if (q == TypeManager.object_type)
-					return 2;
+				// Dynamic is never better
+				return 2;
 			}
 
 			if (q == TypeManager.int32_type) {
@@ -3357,10 +3518,12 @@ namespace Mono.CSharp {
 					p == TypeManager.uint64_type)
 					return 2;
 			} else if (q == InternalType.Dynamic) {
-				if (p == TypeManager.object_type)
-					return 1;
+				// Dynamic is never better
+				return 1;
 			}
 
+			// FIXME: handle lifted operators
+
 			// TODO: this is expensive
 			Expression p_tmp = new EmptyExpression (p);
 			Expression q_tmp = new EmptyExpression (q);
@@ -3386,8 +3549,8 @@ namespace Mono.CSharp {
 		///     false if candidate ain't better
 		///     true  if candidate is better than the current best match
 		/// </remarks>
-		static bool BetterFunction (ResolveContext ec, Arguments args, MemberSpec candidate, bool candidate_params,
-			MemberSpec best, bool best_params)
+		static bool BetterFunction (ResolveContext ec, Arguments args, MemberSpec candidate, AParametersCollection cparam, bool candidate_params,
+			MemberSpec best, AParametersCollection bparam, bool best_params)
 		{
 			AParametersCollection candidate_pd = ((IParametersMember) candidate).Parameters;
 			AParametersCollection best_pd = ((IParametersMember) best).Parameters;
@@ -3396,27 +3559,46 @@ namespace Mono.CSharp {
 			bool same = true;
 			int args_count = args == null ? 0 : args.Count;
 			int j = 0;
+			Argument a = null;
+			TypeSpec ct, bt;
 			for (int c_idx = 0, b_idx = 0; j < args_count; ++j, ++c_idx, ++b_idx) {
-				Argument a = args[j];
+				a = args[j];
 
 				// Default arguments are ignored for better decision
 				if (a.IsDefaultArgument)
 					break;
 
-				TypeSpec ct = candidate_pd.Types[c_idx];
-				TypeSpec bt = best_pd.Types[b_idx];
+				//
+				// When comparing named argument the parameter type index has to be looked up
+				// in original parameter set (override version for virtual members)
+				//
+				NamedArgument na = a as NamedArgument;
+				if (na != null) {
+					int idx = cparam.GetParameterIndexByName (na.Name);
+					ct = candidate_pd.Types[idx];
+					if (candidate_params && candidate_pd.FixedParameters[idx].ModFlags == Parameter.Modifier.PARAMS)
+						ct = TypeManager.GetElementType (ct);
+
+					idx = bparam.GetParameterIndexByName (na.Name);
+					bt = best_pd.Types[idx];
+					if (best_params && best_pd.FixedParameters[idx].ModFlags == Parameter.Modifier.PARAMS)
+						bt = TypeManager.GetElementType (bt);
+				} else {
+					ct = candidate_pd.Types[c_idx];
+					bt = best_pd.Types[b_idx];
 
-				if (candidate_params && candidate_pd.FixedParameters[c_idx].ModFlags == Parameter.Modifier.PARAMS) {
-					ct = TypeManager.GetElementType (ct);
-					--c_idx;
-				}
+					if (candidate_params && candidate_pd.FixedParameters[c_idx].ModFlags == Parameter.Modifier.PARAMS) {
+						ct = TypeManager.GetElementType (ct);
+						--c_idx;
+					}
 
-				if (best_params && best_pd.FixedParameters[b_idx].ModFlags == Parameter.Modifier.PARAMS) {
-					bt = TypeManager.GetElementType (bt);
-					--b_idx;
+					if (best_params && best_pd.FixedParameters[b_idx].ModFlags == Parameter.Modifier.PARAMS) {
+						bt = TypeManager.GetElementType (bt);
+						--b_idx;
+					}
 				}
 
-				if (ct == bt)
+				if (TypeSpecComparer.IsEqual (ct, bt))
 					continue;
 
 				same = false;
@@ -3445,7 +3627,7 @@ namespace Mono.CSharp {
 			// The call Add (3, 4, 5) should be ambiguous.  Without this check, the
 			// first candidate would've chosen as better.
 			//
-			if (!same)
+			if (!same && !a.IsDefaultArgument)
 				return false;
 
 			//
@@ -3461,6 +3643,7 @@ namespace Mono.CSharp {
 			// Prefer non-optional version
 			//
 			// LAMESPEC: Specification claims this should be done at last but the opposite is true
+			//
 			if (candidate_params == best_params && candidate_pd.Count != best_pd.Count) {
 				if (candidate_pd.Count >= best_pd.Count)
 					return false;
@@ -3506,8 +3689,15 @@ namespace Mono.CSharp {
 
 			bool specific_at_least_once = false;
 			for (j = 0; j < candidate_param_count; ++j) {
-				var ct = candidate_def_pd.Types[j];
-				var bt = best_def_pd.Types[j];
+				NamedArgument na = args_count == 0 ? null : args [j] as NamedArgument;
+				if (na != null) {
+					ct = candidate_def_pd.Types[cparam.GetParameterIndexByName (na.Name)];
+					bt = best_def_pd.Types[bparam.GetParameterIndexByName (na.Name)];
+				} else {
+					ct = candidate_def_pd.Types[j];
+					bt = best_def_pd.Types[j];
+				}
+
 				if (ct == bt)
 					continue;
 				TypeSpec specific = MoreSpecific (ct, bt);
@@ -3520,9 +3710,6 @@ namespace Mono.CSharp {
 			if (specific_at_least_once)
 				return true;
 
-			// FIXME: handle lifted operators
-			// ...
-
 			return false;
 		}
 
@@ -3533,18 +3720,27 @@ namespace Mono.CSharp {
 				type.GetSignatureForError (), argCount.ToString ());
 		}
 
-		///
-		/// Determines if the candidate method is applicable (section 14.4.2.1)
-		/// to the given set of arguments
-		/// A return value rates candidate method compatibility,
-		/// 0 = the best, int.MaxValue = the worst
-		///
-		int IsApplicable (ResolveContext ec, ref Arguments arguments, int arg_count, ref MemberSpec candidate, ref bool params_expanded_form)
+		//
+		// Determines if the candidate method is applicable to the given set of arguments
+		// There could be two different set of parameters for same candidate where one
+		// is the closest override for default values and named arguments checks and second
+		// one being the virtual base for the parameter types and modifiers.
+		//
+		// A return value rates candidate method compatibility,
+		// 0 = the best, int.MaxValue = the worst
+		//
+		int IsApplicable (ResolveContext ec, ref Arguments arguments, int arg_count, ref MemberSpec candidate, IParametersMember pm, ref bool params_expanded_form, ref bool dynamicArgument, ref TypeSpec returnType)
 		{
-			AParametersCollection pd = ((IParametersMember) candidate).Parameters;
+			// Parameters of most-derived type used mainly for named and optional parameters
+			var pd = pm.Parameters;
+
+			// Used for params modifier only, that's legacy of C# 1.0 which uses base type for
+			// params modifier instead of most-derived type
+			var cpd = ((IParametersMember) candidate).Parameters;
 			int param_count = pd.Count;
 			int optional_count = 0;
 			int score;
+			Arguments orig_args = arguments;
 
 			if (arg_count != param_count) {
 				for (int i = 0; i < pd.Count; ++i) {
@@ -3560,7 +3756,7 @@ namespace Mono.CSharp {
 						return int.MaxValue - 10000 + args_gap - optional_count;
 
 					// Readjust expected number when params used
-					if (pd.HasParams) {
+					if (cpd.HasParams) {
 						optional_count--;
 						if (arg_count < param_count)
 							param_count--;
@@ -3568,7 +3764,7 @@ namespace Mono.CSharp {
 						return int.MaxValue - 10000 + args_gap;
 					}
 				} else if (arg_count != param_count) {
-					if (!pd.HasParams)
+					if (!cpd.HasParams)
 						return int.MaxValue - 10000 + args_gap;
 					if (arg_count < param_count - 1)
 						return int.MaxValue - 10000 + args_gap;
@@ -3606,14 +3802,18 @@ namespace Mono.CSharp {
 
 							int index = pd.GetParameterIndexByName (na.Name);
 
-							// Named parameter not found or already reordered
-							if (index == i || index < 0)
+							// Named parameter not found
+							if (index < 0)
+								return (i + 1) * 3;
+
+							// already reordered
+							if (index == i)
 								break;
 
 							Argument temp;
 							if (index >= param_count) {
 								// When using parameters which should not be available to the user
-								if ((pd.FixedParameters[index].ModFlags & Parameter.Modifier.PARAMS) == 0)
+								if ((cpd.FixedParameters[index].ModFlags & Parameter.Modifier.PARAMS) == 0)
 									break;
 
 								arguments.Add (null);
@@ -3628,7 +3828,7 @@ namespace Mono.CSharp {
 							}
 
 							if (!arg_moved) {
-								arguments.MarkReorderedArgument (na);
+								arguments = arguments.MarkOrderedArgument (na);
 								arg_moved = true;
 							}
 
@@ -3649,15 +3849,18 @@ namespace Mono.CSharp {
 			//
 			// 1. Handle generic method using type arguments when specified or type inference
 			//
+			TypeSpec[] ptypes;
 			var ms = candidate as MethodSpec;
 			if (ms != null && ms.IsGeneric) {
+				// Setup constraint checker for probing only
+				ConstraintChecker cc = new ConstraintChecker (null);
+
 				if (type_arguments != null) {
 					var g_args_count = ms.Arity;
 					if (g_args_count != type_arguments.Count)
 						return int.MaxValue - 20000 + System.Math.Abs (type_arguments.Count - g_args_count);
 
-					candidate = ms = ms.MakeGenericMethod (type_arguments.Arguments);
-					pd = ms.Parameters;
+					ms = ms.MakeGenericMethod (type_arguments.Arguments);
 				} else {
 					// TODO: It should not be here (we don't know yet whether any argument is lambda) but
 					// for now it simplifies things. I should probably add a callback to ResolveContext
@@ -3666,25 +3869,50 @@ namespace Mono.CSharp {
 						prev_recorder = ec.Report.SetPrinter (lambda_conv_msgs);
 					}
 
-					score = TypeManager.InferTypeArguments (ec, arguments, ref ms);
+					var ti = new TypeInference (arguments);
+					TypeSpec[] i_args = ti.InferMethodArguments (ec, ms);
 					lambda_conv_msgs.EndSession ();
 
-					if (score != 0)
-						return score - 20000;
+					if (i_args == null)
+						return ti.InferenceScore - 20000;
 
-					candidate = ms;
-					pd = ms.Parameters;
+					if (i_args.Length != 0) {
+						ms = ms.MakeGenericMethod (i_args);
+					}
+
+					cc.IgnoreInferredDynamic = true;
 				}
 
 				//
-				// Type arguments constraints have to match
+				// Type arguments constraints have to match for the method to be applicable
 				//
-				if (!ConstraintChecker.CheckAll (null, ms.GetGenericMethodDefinition (), ms.TypeArguments, ms.Constraints, loc))
+				if (!cc.CheckAll (ms.GetGenericMethodDefinition (), ms.TypeArguments, ms.Constraints, loc)) {
+					candidate = ms;
 					return int.MaxValue - 25000;
+				}
 
+				//
+				// We have a generic return type and at same time the method is override which
+				// means we have to also inflate override return type in case the candidate is
+				// best candidate and override return type is different to base return type.
+				// 
+				// virtual Foo<T, object> with override Foo<T, dynamic>
+				//
+				if (candidate != pm) {
+					MethodSpec override_ms = (MethodSpec) pm;
+					var inflator = new TypeParameterInflator (ms.DeclaringType, override_ms.GenericDefinition.TypeParameters, ms.TypeArguments);
+					returnType = inflator.Inflate (returnType);
+				} else {
+					returnType = ms.ReturnType;
+				}
+
+				candidate = ms;
+				ptypes = ms.Parameters.Types;
 			} else {
 				if (type_arguments != null)
 					return int.MaxValue - 15000;
+
+				ptypes = cpd.Types;
 			}
 
 			//
@@ -3692,11 +3920,14 @@ namespace Mono.CSharp {
 			//
 			Parameter.Modifier p_mod = 0;
 			TypeSpec pt = null;
+
 			for (int i = 0; i < arg_count; i++) {
 				Argument a = arguments[i];
 				if (a == null) {
-					if (!pd.FixedParameters[i].HasDefaultValue)
-						throw new InternalErrorException ();
+					if (!pd.FixedParameters[i].HasDefaultValue) {
+						arguments = orig_args;
+						return arg_count * 2 + 2;
+					}
 
 					//
 					// Get the default value expression, we can use the same expression
@@ -3707,11 +3938,11 @@ namespace Mono.CSharp {
 						//
 						// LAMESPEC: No idea what the exact rules are for System.Reflection.Missing.Value instead of null
 						//
-						if (e == EmptyExpression.MissingValue && pd.Types[i] == TypeManager.object_type) {
+						if (e == EmptyExpression.MissingValue && ptypes[i] == TypeManager.object_type || ptypes[i] == InternalType.Dynamic) {
 							e = new MemberAccess (new MemberAccess (new MemberAccess (
 								new QualifiedAliasMember (QualifiedAliasMember.GlobalAlias, "System", loc), "Reflection", loc), "Missing", loc), "Value", loc);
 						} else {
-							e = new DefaultValueExpression (new TypeExpression (pd.Types[i], loc), loc);
+							e = new DefaultValueExpression (new TypeExpression (ptypes [i], loc), loc);
 						}
 
 						e = e.Resolve (ec);
@@ -3722,8 +3953,8 @@ namespace Mono.CSharp {
 				}
 
 				if (p_mod != Parameter.Modifier.PARAMS) {
-					p_mod = pd.FixedParameters[i].ModFlags;
-					pt = pd.Types[i];
+					p_mod = (pd.FixedParameters[i].ModFlags & ~Parameter.Modifier.PARAMS) | (cpd.FixedParameters[i].ModFlags & Parameter.Modifier.PARAMS);
+					pt = ptypes [i];
 				} else if (!params_expanded_form) {
 					params_expanded_form = true;
 					pt = ((ElementTypeSpec) pt).Element;
@@ -3732,8 +3963,25 @@ namespace Mono.CSharp {
 				}
 
 				score = 1;
-				if (!params_expanded_form)
-					score = IsArgumentCompatible (ec, a, p_mod & ~Parameter.Modifier.PARAMS, pt);
+				if (!params_expanded_form) {
+					if (a.ArgType == Argument.AType.ExtensionType) {
+						//
+						// Indentity, implicit reference or boxing conversion must exist for the extension parameter
+						//
+						var at = a.Type;
+						if (at == pt || TypeSpecComparer.IsEqual (at, pt) ||
+							Convert.ImplicitReferenceConversionExists (a.Expr, pt) ||
+							Convert.ImplicitBoxingConversion (EmptyExpression.Null, at, pt) != null) {
+							score = 0;
+							continue;
+						}
+					} else {
+						score = IsArgumentCompatible (ec, a, p_mod & ~Parameter.Modifier.PARAMS, pt);
+
+						if (score < 0)
+							dynamicArgument = true;
+					}
+				}
 
 				//
 				// It can be applicable in expanded form (when not doing exact match like for delegates)
@@ -3742,12 +3990,18 @@ namespace Mono.CSharp {
 					if (!params_expanded_form)
 						pt = ((ElementTypeSpec) pt).Element;
 
-					score = IsArgumentCompatible (ec, a, Parameter.Modifier.NONE, pt);
-					if (score == 0)
+					if (score > 0)
+						score = IsArgumentCompatible (ec, a, Parameter.Modifier.NONE, pt);
+
+					if (score == 0) {
 						params_expanded_form = true;
+					} else if (score < 0) {
+						params_expanded_form = true;
+						dynamicArgument = true;
+					}
 				}
 
-				if (score != 0) {
+				if (score > 0) {
 					if (params_expanded_form)
 						++score;
 					return (arg_count - i) * 2 + score;
@@ -3755,14 +4009,28 @@ namespace Mono.CSharp {
 			}
 
 			//
-			// When params parameter has notargument, will be provided later if the method is the best candidate
+			// When params parameter has no argument it will be provided later if the method is the best candidate
 			//
-			if (arg_count + 1 == pd.Count && (pd.FixedParameters [arg_count].ModFlags & Parameter.Modifier.PARAMS) != 0)
+			if (arg_count + 1 == pd.Count && (cpd.FixedParameters [arg_count].ModFlags & Parameter.Modifier.PARAMS) != 0)
 				params_expanded_form = true;
 
+			//
+			// Restore original arguments for dynamic binder to keep the intention of original source code
+			//
+			if (dynamicArgument)
+				arguments = orig_args;
+
 			return 0;
 		}
 
+		//
+		// Tests argument compatibility with the parameter
+		// The possible return values are
+		// 0 - success
+		// 1 - modifier mismatch
+		// 2 - type mismatch
+		// -1 - dynamic binding required
+		//
 		int IsArgumentCompatible (ResolveContext ec, Argument argument, Parameter.Modifier param_mod, TypeSpec parameter)
 		{
 			//
@@ -3770,20 +4038,35 @@ namespace Mono.CSharp {
 			// is used and argument is not of dynamic type
 			//
 			if ((argument.Modifier | param_mod) != 0) {
-				//
-				// Defer to dynamic binder
-				//
-				if (argument.Type == InternalType.Dynamic)
-					return 0;
-
 				if (argument.Type != parameter) {
 					//
 					// Do full equality check after quick path
 					//
-					if (!TypeSpecComparer.IsEqual (argument.Type, parameter))
+					if (!TypeSpecComparer.IsEqual (argument.Type, parameter)) {
+						//
+						// Using dynamic for ref/out parameter can still succeed at runtime
+						//
+						if (argument.Type == InternalType.Dynamic && argument.Modifier == 0 && (restrictions & Restrictions.CovariantDelegate) == 0)
+							return -1;
+
 						return 2;
+					}
 				}
+
+				if (argument.Modifier != param_mod) {
+					//
+					// Using dynamic for ref/out parameter can still succeed at runtime
+					//
+					if (argument.Type == InternalType.Dynamic && argument.Modifier == 0 && (restrictions & Restrictions.CovariantDelegate) == 0)
+						return -1;
+
+					return 1;
+				}
+
 			} else {
+				if (argument.Type == InternalType.Dynamic && (restrictions & Restrictions.CovariantDelegate) == 0)
+					return -1;
+
 				//
 				// Deploy custom error reporting for lambda methods. When probing lambda methods
 				// keep all errors reported in separate set and once we are done and no best
@@ -3806,9 +4089,6 @@ namespace Mono.CSharp {
 				}
 			}
 
-			if (argument.Modifier != param_mod)
-				return 1;
-
 			return 0;
 		}
 
@@ -3861,9 +4141,12 @@ namespace Mono.CSharp {
 			MemberSpec best_candidate;
 			Arguments best_candidate_args = null;
 			bool best_candidate_params = false;
+			bool best_candidate_dynamic = false;
 			int best_candidate_rate;
+			IParametersMember best_parameter_member = null;
 
 			int args_count = args != null ? args.Count : 0;
+
 			Arguments candidate_args = args;
 			bool error_mode = false;
 			var current_type = rc.CurrentType;
@@ -3888,10 +4171,16 @@ namespace Mono.CSharp {
 							if ((member.Modifiers & Modifiers.OVERRIDE) != 0)
 								continue;
 
-							if (!member.IsAccessible (current_type) && !error_mode)
-								continue;
+							if (!error_mode) {
+								if (!member.IsAccessible (current_type))
+									continue;
+
+								if (rc.Compiler.IsRuntimeBinder && !member.DeclaringType.IsAccessible (current_type))
+									continue;
+							}
 
-							if (!(member is IParametersMember)) {
+							IParametersMember pm = member as IParametersMember;
+							if (pm == null) {
 								//
 								// Will use it later to report ambiguity between best method and invocable member
 								//
@@ -3902,10 +4191,23 @@ namespace Mono.CSharp {
 							}
 
 							//
-							// Check if candidate is applicable
+							// Overload resolution is looking for base member but using parameter names
+							// and default values from the closest member. That means to do expensive lookup
+							// for the closest override for virtual or abstract members
+							//
+							if ((member.Modifiers & (Modifiers.VIRTUAL | Modifiers.ABSTRACT)) != 0) {
+								var override_params = base_provider.GetOverrideMemberParameters (member);
+								if (override_params != null)
+									pm = override_params;
+							}
+
+							//
+							// Check if the member candidate is applicable
 							//
 							bool params_expanded_form = false;
-							int candidate_rate = IsApplicable (rc, ref candidate_args, args_count, ref member, ref params_expanded_form);
+							bool dynamic_argument = false;
+							TypeSpec rt = pm.MemberType;
+							int candidate_rate = IsApplicable (rc, ref candidate_args, args_count, ref member, pm, ref params_expanded_form, ref dynamic_argument, ref rt);
 
 							//
 							// How does it score compare to others
@@ -3915,18 +4217,65 @@ namespace Mono.CSharp {
 								best_candidate = member;
 								best_candidate_args = candidate_args;
 								best_candidate_params = params_expanded_form;
+								best_candidate_dynamic = dynamic_argument;
+								best_parameter_member = pm;
+								best_candidate_return_type = rt;
 							} else if (candidate_rate == 0) {
-								// Is new candidate better
-								if (BetterFunction (rc, candidate_args, member, params_expanded_form, best_candidate, best_candidate_params)) {
+								//
+								// The member look is done per type for most operations but sometimes
+								// it's not possible like for binary operators overload because they
+								// are unioned between 2 sides
+								//
+								if ((restrictions & Restrictions.BaseMembersIncluded) != 0) {
+									if (TypeSpec.IsBaseClass (best_candidate.DeclaringType, member.DeclaringType, true))
+										continue;
+								}
+
+								bool is_better;
+								if (best_candidate.DeclaringType.IsInterface && member.DeclaringType.ImplementsInterface (best_candidate.DeclaringType, false)) {
+									//
+									// We pack all interface members into top level type which makes the overload resolution
+									// more complicated for interfaces. We accomodate for this by removing methods with same
+									// signature when building the cache hence this path should not really be hit often
+									//
+									// Example:
+									// interface IA { void Foo (int arg); }
+									// interface IB : IA { void Foo (params int[] args); }
+									//
+									// IB::Foo is the best overload when calling IB.Foo (1)
+									//
+									is_better = true;
+									if (ambiguous_candidates != null) {
+										foreach (var amb_cand in ambiguous_candidates) {
+											if (member.DeclaringType.ImplementsInterface (best_candidate.DeclaringType, false)) {
+												continue;
+											}
+
+											is_better = false;
+											break;
+										}
+
+										if (is_better)
+											ambiguous_candidates = null;
+									}
+								} else {
+									// Is the new candidate better
+									is_better = BetterFunction (rc, candidate_args, member, pm.Parameters, params_expanded_form, best_candidate, best_parameter_member.Parameters, best_candidate_params);
+								}
+
+								if (is_better) {
 									best_candidate = member;
 									best_candidate_args = candidate_args;
 									best_candidate_params = params_expanded_form;
+									best_candidate_dynamic = dynamic_argument;
+									best_parameter_member = pm;
+									best_candidate_return_type = rt;
 								} else {
 									// It's not better but any other found later could be but we are not sure yet
 									if (ambiguous_candidates == null)
 										ambiguous_candidates = new List<AmbiguousCandidate> ();
 
-									ambiguous_candidates.Add (new AmbiguousCandidate (member, params_expanded_form));
+									ambiguous_candidates.Add (new AmbiguousCandidate (member, pm.Parameters, params_expanded_form));
 								}
 							}
 
@@ -3975,16 +4324,15 @@ namespace Mono.CSharp {
 			// No best member match found, report an error
 			//
 			if (best_candidate_rate != 0 || error_mode) {
-				ReportOverloadError (rc, best_candidate, best_candidate_args, best_candidate_params);
+				ReportOverloadError (rc, best_candidate, best_parameter_member, best_candidate_args, best_candidate_params);
 				return null;
 			}
 
-			// TODO: HasDynamic is quite slow
-			if (args_count != 0 && (restrictions & Restrictions.CovariantDelegate) == 0 && args.HasDynamic) {
-				if (args [0].ArgType == Argument.AType.ExtensionType) {
+			if (best_candidate_dynamic) {
+				if (args[0].ArgType == Argument.AType.ExtensionType) {
 					rc.Report.Error (1973, loc,
 						"Type `{0}' does not contain a member `{1}' and the best extension method overload `{2}' cannot be dynamically dispatched. Consider calling the method without the extension method syntax",
-						args [0].Type.GetSignatureForError (), best_candidate.Name, best_candidate.GetSignatureForError());
+						args [0].Type.GetSignatureForError (), best_candidate.Name, best_candidate.GetSignatureForError ());
 				}
 
 				BestCandidateIsDynamic = true;
@@ -3999,7 +4347,7 @@ namespace Mono.CSharp {
 				for (int ix = 0; ix < ambiguous_candidates.Count; ix++) {
 					var candidate = ambiguous_candidates [ix];
 
-					if (!BetterFunction (rc, candidate_args, best_candidate, best_candidate_params, candidate.Member, candidate.Expanded)) {
+					if (!BetterFunction (rc, best_candidate_args, best_candidate, best_parameter_member.Parameters, best_candidate_params, candidate.Member, candidate.Parameters, candidate.Expanded)) {
 						var ambiguous = candidate.Member;
 						if (custom_errors == null || !custom_errors.AmbiguousCandidates (rc, best_candidate, ambiguous)) {
 							rc.Report.SymbolRelatedToPreviousError (best_candidate);
@@ -4026,7 +4374,7 @@ namespace Mono.CSharp {
 			// necessary etc. and return if everything is
 			// all right
 			//
-			if (!VerifyArguments (rc, ref best_candidate_args, best_candidate, best_candidate_params))
+			if (!VerifyArguments (rc, ref best_candidate_args, best_candidate, best_parameter_member, best_candidate_params))
 				return null;
 
 			if (best_candidate == null)
@@ -4039,6 +4387,11 @@ namespace Mono.CSharp {
 			if (oa != null && !rc.IsObsolete)
 				AttributeTester.Report_ObsoleteMessage (oa, best_candidate.GetSignatureForError (), loc, rc.Report);
 
+			var dep = best_candidate.GetMissingDependencies ();
+			if (dep != null) {
+				ImportedTypeDefinition.Error_MissingDependency (rc, dep, loc);
+			}
+
 			best_candidate.MemberDefinition.SetIsUsed ();
 
 			args = best_candidate_args;
@@ -4103,7 +4456,7 @@ namespace Mono.CSharp {
 		//
 		// We have failed to find exact match so we return error info about the closest match
 		//
-		void ReportOverloadError (ResolveContext rc, MemberSpec best_candidate, Arguments args, bool params_expanded)
+		void ReportOverloadError (ResolveContext rc, MemberSpec best_candidate, IParametersMember pm, Arguments args, bool params_expanded)
 		{
 			int ta_count = type_arguments == null ? 0 : type_arguments.Count;
 			int arg_count = args == null ? 0 : args.Count;
@@ -4122,12 +4475,11 @@ namespace Mono.CSharp {
 			//
 			// For candidates which match on parameters count report more details about incorrect arguments
 			//
-			var pm = best_candidate as IParametersMember;
 			if (pm != null) {
-				int unexpanded_count = pm.Parameters.HasParams ? pm.Parameters.Count - 1 : pm.Parameters.Count;
+				int unexpanded_count = ((IParametersMember) best_candidate).Parameters.HasParams ? pm.Parameters.Count - 1 : pm.Parameters.Count;
 				if (pm.Parameters.Count == arg_count || params_expanded || unexpanded_count == arg_count) {
 					// Reject any inaccessible member
-					if (!best_candidate.IsAccessible (rc.CurrentType)) {
+					if (!best_candidate.IsAccessible (rc.CurrentType) || !best_candidate.DeclaringType.IsAccessible (rc.CurrentType)) {
 						rc.Report.SymbolRelatedToPreviousError (best_candidate);
 						Expression.ErrorIsInaccesible (rc, best_candidate.GetSignatureForError (), loc);
 						return;
@@ -4137,7 +4489,7 @@ namespace Mono.CSharp {
 					if (ms != null && ms.IsGeneric) {
 						bool constr_ok = true;
 						if (ms.TypeArguments != null)
-							constr_ok = ConstraintChecker.CheckAll (rc.MemberContext, ms.GetGenericMethodDefinition (), ms.TypeArguments, ms.Constraints, loc);
+							constr_ok = new ConstraintChecker (rc.MemberContext).CheckAll (ms.GetGenericMethodDefinition (), ms.TypeArguments, ms.Constraints, loc);
 
 						if (ta_count == 0) {
 							if (custom_errors != null && custom_errors.TypeInferenceFailed (rc, best_candidate))
@@ -4153,7 +4505,7 @@ namespace Mono.CSharp {
 						}
 					}
 
-					VerifyArguments (rc, ref args, best_candidate, params_expanded);
+					VerifyArguments (rc, ref args, best_candidate, pm, params_expanded);
 					return;
 				}
 			}
@@ -4179,10 +4531,10 @@ namespace Mono.CSharp {
 			}
 		}
 
-		bool VerifyArguments (ResolveContext ec, ref Arguments args, MemberSpec member, bool chose_params_expanded)
+		bool VerifyArguments (ResolveContext ec, ref Arguments args, MemberSpec member, IParametersMember pm, bool chose_params_expanded)
 		{
-			var pm = member as IParametersMember;
 			var pd = pm.Parameters;
+			TypeSpec[] ptypes = ((IParametersMember) member).Parameters.Types;
 
 			Parameter.Modifier p_mod = 0;
 			TypeSpec pt = null;
@@ -4196,7 +4548,7 @@ namespace Mono.CSharp {
 				a = args[a_idx];
 				if (p_mod != Parameter.Modifier.PARAMS) {
 					p_mod = pd.FixedParameters[a_idx].ModFlags;
-					pt = pd.Types[a_idx];
+					pt = ptypes[a_idx];
 					has_unsafe_arg |= pt.IsPointer;
 
 					if (p_mod == Parameter.Modifier.PARAMS) {
@@ -4255,7 +4607,19 @@ namespace Mono.CSharp {
 					return false;
 				}
 
-				Expression conv = Convert.ImplicitConversion (ec, a.Expr, pt, loc);
+				Expression conv = null;
+				if (a.ArgType == Argument.AType.ExtensionType) {
+					if (a.Expr.Type == pt || TypeSpecComparer.IsEqual (a.Expr.Type, pt)) {
+						conv = a.Expr;
+					} else {
+						conv = Convert.ImplicitReferenceConversion (a.Expr, pt, false);
+						if (conv == null)
+							conv = Convert.ImplicitBoxingConversion (a.Expr, a.Expr.Type, pt);
+					}
+				} else {
+					conv = Convert.ImplicitConversion (ec, a.Expr, pt, loc);
+				}
+
 				if (conv == null)
 					break;
 
@@ -4287,7 +4651,7 @@ namespace Mono.CSharp {
 				if (args == null)
 					args = new Arguments (1);
 
-				pt = pd.Types[pd.Count - 1];
+				pt = ptypes[pd.Count - 1];
 				pt = TypeManager.GetElementType (pt);
 				has_unsafe_arg |= pt.IsPointer;
 				params_initializers = new ArrayInitializer (0, loc);
@@ -4357,7 +4721,7 @@ namespace Mono.CSharp {
 
 		protected override Expression DoResolve (ResolveContext rc)
 		{
-			ResolveInstanceExpression (rc);
+			ResolveInstanceExpression (rc, null);
 			DoBestMemberChecks (rc, constant);
 
 			var c = constant.GetConstant (rc);
@@ -4410,7 +4774,7 @@ namespace Mono.CSharp {
 		{
 		}
 
-#region Properties
+		#region Properties
 
 		public override string Name {
 			get {
@@ -4500,18 +4864,22 @@ namespace Mono.CSharp {
 
 		protected override Expression DoResolve (ResolveContext ec)
 		{
-			return DoResolve (ec, false, false);
+			return DoResolve (ec, null);
 		}
 
-		Expression DoResolve (ResolveContext ec, bool lvalue_instance, bool out_access)
+		Expression DoResolve (ResolveContext ec, Expression rhs)
 		{
-			if (ResolveInstanceExpression (ec)) {
+			bool lvalue_instance = rhs != null && IsInstance && spec.DeclaringType.IsStruct;
+
+			if (ResolveInstanceExpression (ec, rhs)) {
 				// Resolve the field's instance expression while flow analysis is turned
 				// off: when accessing a field "a.b", we must check whether the field
 				// "a.b" is initialized, not whether the whole struct "a" is initialized.
 
 				if (lvalue_instance) {
 					using (ec.With (ResolveContext.Options.DoFlowAnalysis, false)) {
+						bool out_access = rhs == EmptyExpression.OutAccess.Instance || rhs == EmptyExpression.LValueMemberOutAccess;
+
 						Expression right_side =
 							out_access ? EmptyExpression.LValueMemberOutAccess : EmptyExpression.LValueMemberAccess;
 
@@ -4525,10 +4893,6 @@ namespace Mono.CSharp {
 
 				if (InstanceExpression == null)
 					return null;
-
-				using (ec.Set (ResolveContext.Options.OmitStructFlowAnalysis)) {
-					InstanceExpression.CheckMarshalByRefAccess (ec);
-				}
 			}
 
 			DoBestMemberChecks (ec, spec);
@@ -4610,10 +4974,7 @@ namespace Mono.CSharp {
 		
 		override public Expression DoResolveLValue (ResolveContext ec, Expression right_side)
 		{
-			bool lvalue_instance = IsInstance && spec.DeclaringType.IsStruct;
-			bool out_access = right_side == EmptyExpression.OutAccess.Instance || right_side == EmptyExpression.LValueMemberOutAccess;
-
-			Expression e = DoResolve (ec, lvalue_instance, out_access);
+			Expression e = DoResolve (ec, right_side);
 
 			if (e == null)
 				return null;
@@ -4738,7 +5099,7 @@ namespace Mono.CSharp {
 
 		public void EmitAssign (EmitContext ec, Expression source, bool leave_copy, bool prepare_for_load)
 		{
-			prepared = prepare_for_load;
+			prepared = prepare_for_load && !(source is DynamicExpressionStatement);
 			if (IsInstance)
 				EmitInstance (ec, prepared);
 
@@ -4781,13 +5142,6 @@ namespace Mono.CSharp {
 				base.EmitSideEffect (ec);
 		}
 
-		public override void Error_VariableIsUsedBeforeItIsDeclared (Report r, string name)
-		{
-			r.Error (844, loc,
-				"A local variable `{0}' cannot be used before it is declared. Consider renaming the local variable when it hides the field `{1}'",
-				name, GetSignatureForError ());
-		}
-
 		public void AddressOf (EmitContext ec, AddressOp mode)
 		{
 			if ((mode & AddressOp.Store) != 0)
@@ -4838,7 +5192,13 @@ namespace Mono.CSharp {
 
 		public override SLE.Expression MakeExpression (BuilderContext ctx)
 		{
-			return SLE.Expression.Field (InstanceExpression.MakeExpression (ctx), spec.GetMetaInfo ());
+#if STATIC
+			return base.MakeExpression (ctx);
+#else
+			return SLE.Expression.Field (
+				IsStatic ? null : InstanceExpression.MakeExpression (ctx),
+				spec.GetMetaInfo ());
+#endif
 		}
 
 		public override void SetTypeArguments (ResolveContext ec, TypeArguments ta)
@@ -4928,12 +5288,20 @@ namespace Mono.CSharp {
 
 		public override SLE.Expression MakeAssignExpression (BuilderContext ctx, Expression source)
 		{
+#if STATIC
+			return base.MakeExpression (ctx);
+#else
 			return SLE.Expression.Property (InstanceExpression.MakeExpression (ctx), (MethodInfo) Setter.GetMetaInfo ());
+#endif
 		}
 
 		public override SLE.Expression MakeExpression (BuilderContext ctx)
 		{
+#if STATIC
+			return base.MakeExpression (ctx);
+#else
 			return SLE.Expression.Property (InstanceExpression.MakeExpression (ctx), (MethodInfo) Getter.GetMetaInfo ());
+#endif
 		}
 
 		void Error_PropertyNotValid (ResolveContext ec)
@@ -4978,9 +5346,10 @@ namespace Mono.CSharp {
 
 		public override void EmitAssign (EmitContext ec, Expression source, bool leave_copy, bool prepare_for_load)
 		{
-			Expression my_source = source;
+			Arguments args;
 
-			if (prepare_for_load) {
+			if (prepare_for_load && !(source is DynamicExpressionStatement)) {
+				args = new Arguments (0);
 				prepared = true;
 				source.Emit (ec);
 				
@@ -4991,16 +5360,19 @@ namespace Mono.CSharp {
 						temp.Store (ec);
 					}
 				}
-			} else if (leave_copy) {
-				source.Emit (ec);
-				temp = new LocalTemporary (this.Type);
-				temp.Store (ec);
-				my_source = temp;
+			} else {
+				args = new Arguments (1);
+
+				if (leave_copy) {
+					source.Emit (ec);
+					temp = new LocalTemporary (this.Type);
+					temp.Store (ec);
+					args.Add (new Argument (temp));
+				} else {
+					args.Add (new Argument (source));
+				}
 			}
 
-			Arguments args = new Arguments (1);
-			args.Add (new Argument (my_source));
-			
 			Invocation.EmitCall (ec, InstanceExpression, Setter, args, loc, false, prepared);
 			
 			if (temp != null) {
@@ -5017,9 +5389,14 @@ namespace Mono.CSharp {
 				Error_PropertyNotValid (rc);
 			}
 
-			if (ResolveInstanceExpression (rc)) {
-				if (right_side != null && best_candidate.DeclaringType.IsStruct)
-					InstanceExpression.DoResolveLValue (rc, EmptyExpression.LValueMemberAccess);
+			ResolveInstanceExpression (rc, right_side);
+
+			if ((best_candidate.Modifiers & (Modifiers.ABSTRACT | Modifiers.VIRTUAL)) != 0 && best_candidate.DeclaringType != InstanceExpression.Type) {
+				var filter = new MemberFilter (best_candidate.Name, 0, MemberKind.Property, null, null);
+				var p = MemberCache.FindMember (InstanceExpression.Type, filter, BindingRestriction.InstanceOnly | BindingRestriction.OverrideOnly) as PropertySpec;
+				if (p != null) {
+					type = p.MemberType;
+				}
 			}
 
 			DoBestMemberChecks (rc, best_candidate);
@@ -5075,9 +5452,6 @@ namespace Mono.CSharp {
 				if (expr == null)
 					return null;
 
-				if (InstanceExpression != null)
-					InstanceExpression.CheckMarshalByRefAccess (ec);
-
 				if (expr != this)
 					return expr.Resolve (ec);
 			}
@@ -5092,7 +5466,8 @@ namespace Mono.CSharp {
 		{
 			if (right_side == EmptyExpression.OutAccess.Instance) {
 				// TODO: best_candidate can be null at this point
-				if (best_candidate != null && ec.CurrentBlock.Toplevel.GetParameterReference (best_candidate.Name, loc) is MemberAccess) {
+				INamedBlockVariable variable = null;
+				if (best_candidate != null && ec.CurrentBlock.ParametersBlock.TopBlock.GetLocalName (best_candidate.Name, ec.CurrentBlock, ref variable) && variable is Linq.RangeVariable) {
 					ec.Report.Error (1939, loc, "A range variable `{0}' may not be passes as `ref' or `out' parameter",
 						best_candidate.Name);
 				} else {
@@ -5167,13 +5542,8 @@ namespace Mono.CSharp {
 		bool ResolveSetter (ResolveContext rc)
 		{
 			if (!best_candidate.HasSet) {
-				if (rc.CurrentBlock.Toplevel.GetParameterReference (best_candidate.Name, loc) is MemberAccess) {
-					rc.Report.Error (1947, loc, "A range variable `{0}' cannot be assigned to. Consider using `let' clause to store the value",
-						best_candidate.Name);
-				} else {
-					rc.Report.Error (200, loc, "Property or indexer `{0}' cannot be assigned to (it is read-only)",
-						GetSignatureForError ());
-				}
+				rc.Report.Error (200, loc, "Property or indexer `{0}' cannot be assigned to (it is read-only)",
+					GetSignatureForError ());
 				return false;
 			}
 
@@ -5247,13 +5617,12 @@ namespace Mono.CSharp {
 		public override MemberExpr ResolveMemberAccess (ResolveContext ec, Expression left, SimpleName original)
 		{
 			//
-			// If the event is local to this class, we transform ourselves into a FieldExpr
+			// If the event is local to this class and we are not lhs of +=/-= we transform ourselves into a FieldExpr
 			//
+			if (!ec.HasSet (ResolveContext.Options.CompoundAssignmentScope)) {
+				if (spec.BackingField != null &&
+					(spec.DeclaringType == ec.CurrentType || TypeManager.IsNestedChildOf (ec.CurrentType, spec.DeclaringType.MemberDefinition))) {
 
-			if (spec.DeclaringType == ec.CurrentType ||
-			    TypeManager.IsNestedChildOf(ec.CurrentType, spec.DeclaringType)) {
-					
-				if (spec.BackingField != null) {
 					spec.MemberDefinition.SetIsUsed ();
 
 					if (!ec.IsObsolete) {
@@ -5262,20 +5631,17 @@ namespace Mono.CSharp {
 							AttributeTester.Report_ObsoleteMessage (oa, spec.GetSignatureForError (), loc, ec.Report);
 					}
 
-					if ((spec.Modifiers & (Modifiers.ABSTRACT | Modifiers.EXTERN)) != 0 && !ec.HasSet (ResolveContext.Options.CompoundAssignmentScope))
+					if ((spec.Modifiers & (Modifiers.ABSTRACT | Modifiers.EXTERN)) != 0)
 						Error_AssignmentEventOnly (ec);
-					
+
 					FieldExpr ml = new FieldExpr (spec.BackingField, loc);
 
 					InstanceExpression = null;
-				
+
 					return ml.ResolveMemberAccess (ec, left, original);
 				}
 			}
 
-			if (!ec.HasSet (ResolveContext.Options.CompoundAssignmentScope))			
-				Error_AssignmentEventOnly (ec);
-
 			return base.ResolveMemberAccess (ec, left, original);
 		}
 
@@ -5306,10 +5672,10 @@ namespace Mono.CSharp {
 			eclass = ExprClass.EventAccess;
 			type = spec.MemberType;
 
-			ResolveInstanceExpression (ec);
+			ResolveInstanceExpression (ec, null);
 
 			if (!ec.HasSet (ResolveContext.Options.CompoundAssignmentScope)) {
-				Error_CannotAssign (ec);
+				Error_AssignmentEventOnly (ec);
 			}
 
 			DoBestMemberChecks (ec, spec);
@@ -5343,15 +5709,15 @@ namespace Mono.CSharp {
 
 		void Error_AssignmentEventOnly (ResolveContext ec)
 		{
-			ec.Report.Error (79, loc, "The event `{0}' can only appear on the left hand side of `+=' or `-=' operator",
-				GetSignatureForError ());
-		}
-
-		public void Error_CannotAssign (ResolveContext ec)
-		{
-			ec.Report.Error (70, loc,
-				"The event `{0}' can only appear on the left hand side of += or -= when used outside of the type `{1}'",
-				GetSignatureForError (), TypeManager.CSharpName (spec.DeclaringType));
+			if (spec.DeclaringType == ec.CurrentType || TypeManager.IsNestedChildOf (ec.CurrentType, spec.DeclaringType.MemberDefinition)) {
+				ec.Report.Error (79, loc,
+					"The event `{0}' can only appear on the left hand side of `+=' or `-=' operator",
+					GetSignatureForError ());
+			} else {
+				ec.Report.Error (70, loc,
+					"The event `{0}' can only appear on the left hand side of += or -= when used outside of the type `{1}'",
+					GetSignatureForError (), spec.DeclaringType.GetSignatureForError ());
+			}
 		}
 
 		protected override void Error_CannotCallAbstractBase (ResolveContext rc, string name)
@@ -5371,16 +5737,58 @@ namespace Mono.CSharp {
 		}
 	}
 
-	public class TemporaryVariable : VariableReference
+	public class TemporaryVariableReference : VariableReference
 	{
-		LocalInfo li;
+		public class Declarator : Statement
+		{
+			TemporaryVariableReference variable;
+
+			public Declarator (TemporaryVariableReference variable)
+			{
+				this.variable = variable;
+				loc = variable.loc;
+			}
+
+			protected override void DoEmit (EmitContext ec)
+			{
+				variable.li.CreateBuilder (ec);
+			}
+
+			protected override void CloneTo (CloneContext clonectx, Statement target)
+			{
+				// Nothing
+			}
+		}
+
+		LocalVariable li;
 
-		public TemporaryVariable (TypeSpec type, Location loc)
+		public TemporaryVariableReference (LocalVariable li, Location loc)
 		{
-			this.type = type;
+			this.li = li;
+			this.type = li.Type;
 			this.loc = loc;
 		}
 
+		public override bool IsLockedByStatement {
+			get {
+				return false;
+			}
+			set {
+			}
+		}
+
+		public LocalVariable LocalInfo {
+		    get {
+		        return li;
+		    }
+		}
+
+		public static TemporaryVariableReference Create (TypeSpec type, Block block, Location loc)
+		{
+			var li = LocalVariable.CreateCompilerGenerated (type, block, loc);
+			return new TemporaryVariableReference (li, loc);
+		}
+
 		public override Expression CreateExpressionTree (ResolveContext ec)
 		{
 			throw new NotSupportedException ("ET");
@@ -5390,11 +5798,6 @@ namespace Mono.CSharp {
 		{
 			eclass = ExprClass.Variable;
 
-			TypeExpr te = new TypeExpression (type, loc);
-			li = ec.CurrentBlock.AddTemporaryVariable (te, loc);
-			if (!li.Resolve (ec))
-				return null;
-
 			//
 			// Don't capture temporary variables except when using
 			// iterator redirection
@@ -5414,11 +5817,15 @@ namespace Mono.CSharp {
 		
 		public override void Emit (EmitContext ec)
 		{
+			li.CreateBuilder (ec);
+
 			Emit (ec, false);
 		}
 
 		public void EmitAssign (EmitContext ec, Expression source)
 		{
+			li.CreateBuilder (ec);
+
 			EmitAssign (ec, source, false, false);
 		}
 
@@ -5459,19 +5866,9 @@ namespace Mono.CSharp {
 	/// 
 	class VarExpr : SimpleName
 	{
-		// Used for error reporting only
-		int initializers_count;
-
 		public VarExpr (Location loc)
 			: base ("var", loc)
 		{
-			initializers_count = 1;
-		}
-
-		public int VariableInitializersCount {
-			set {
-				this.initializers_count = value;
-			}
 		}
 
 		public bool InferType (ResolveContext ec, Expression right_side)
@@ -5498,32 +5895,5 @@ namespace Mono.CSharp {
 			else
 				ec.Compiler.Report.Error (825, loc, "The contextual keyword `var' may only appear within a local variable declaration");
 		}
-
-		public override TypeExpr ResolveAsContextualType (IMemberContext rc, bool silent)
-		{
-			TypeExpr te = base.ResolveAsContextualType (rc, true);
-			if (te != null)
-				return te;
-
-			if (RootContext.Version < LanguageVersion.V_3)
-				rc.Compiler.Report.FeatureIsNotAvailable (loc, "implicitly typed local variable");
-
-			if (initializers_count == 1)
-				return null;
-
-			if (initializers_count > 1) {
-				rc.Compiler.Report.Error (819, loc, "An implicitly typed local variable declaration cannot include multiple declarators");
-				initializers_count = 1;
-				return null;
-			}
-
-			if (initializers_count == 0) {
-				initializers_count = 1;
-				rc.Compiler.Report.Error (818, loc, "An implicitly typed local variable declarator must include an initializer");
-				return null;
-			}
-
-			return null;
-		}
 	}
 }	
diff --git a/mcs/mcs/enum.cs b/mcs/mcs/enum.cs
index d8f5415..0e20165 100644
--- a/mcs/mcs/enum.cs
+++ b/mcs/mcs/enum.cs
@@ -12,10 +12,14 @@
 //
 
 using System;
-using System.Collections.Generic;
+
+#if STATIC
+using MetaType = IKVM.Reflection.Type;
+using IKVM.Reflection;
+#else
+using MetaType = System.Type;
 using System.Reflection;
-using System.Reflection.Emit;
-using System.Globalization;
+#endif
 
 namespace Mono.CSharp {
 
@@ -63,7 +67,7 @@ namespace Mono.CSharp {
 			}
 
 			if (expr == null)
-				expr = New.Constantify (underlying);
+				expr = New.Constantify (underlying, Location);
 
 			return new EnumConstant (expr, MemberType).Resolve (rc);
 		}
@@ -110,7 +114,7 @@ namespace Mono.CSharp {
 			{
 				// We are the first member
 				if (prev == null) {
-					return New.Constantify (current.Parent.Definition).Resolve (rc);
+					return New.Constantify (current.Parent.Definition, Location).Resolve (rc);
 				}
 
 				var c = ((ConstSpec) prev.Spec).GetConstant (rc) as EnumConstant;
@@ -121,7 +125,7 @@ namespace Mono.CSharp {
 						"The enumerator value `{0}' is outside the range of enumerator underlying type `{1}'",
 						current.GetSignatureForError (), ((Enum) current.Parent).UnderlyingType.GetSignatureForError ());
 
-					return New.Constantify (current.Parent.Definition).Resolve (rc);
+					return New.Constantify (current.Parent.Definition, current.Location).Resolve (rc);
 				}
 			}
 
@@ -204,7 +208,7 @@ namespace Mono.CSharp {
 				FieldAttributes.Public | FieldAttributes.SpecialName | FieldAttributes.RTSpecialName);
 
 			if (!RootContext.StdLib)
-				RootContext.hack_corlib_enums.Add (this);
+				Module.hack_corlib_enums.Add (this);
 
 			return true;
 		}
@@ -256,7 +260,7 @@ namespace Mono.CSharp {
 	{
 		TypeSpec underlying;
 
-		public EnumSpec (TypeSpec declaringType, ITypeDefinition definition, TypeSpec underlyingType, Type info, Modifiers modifiers)
+		public EnumSpec (TypeSpec declaringType, ITypeDefinition definition, TypeSpec underlyingType, MetaType info, Modifiers modifiers)
 			: base (MemberKind.Enum, declaringType, definition, info, modifiers | Modifiers.SEALED)
 		{
 			this.underlying = underlyingType;
diff --git a/mcs/mcs/eval.cs b/mcs/mcs/eval.cs
index 7f2b8b8..6a69761 100644
--- a/mcs/mcs/eval.cs
+++ b/mcs/mcs/eval.cs
@@ -9,16 +9,17 @@
 // Copyright 2001, 2002, 2003 Ximian, Inc (http://www.ximian.com)
 // Copyright 2004, 2005, 2006, 2007, 2008 Novell, Inc
 //
+
 using System;
 using System.Threading;
 using System.Collections.Generic;
 using System.Reflection;
 using System.Reflection.Emit;
 using System.IO;
-using System.Globalization;
 using System.Text;
 
-namespace Mono.CSharp {
+namespace Mono.CSharp
+{
 
 	/// <summary>
 	///   Evaluator: provides an API to evaluate C# statements and
@@ -64,6 +65,7 @@ namespace Mono.CSharp {
 		static bool inited;
 
 		static CompilerContext ctx;
+		static DynamicLoader loader;
 		
 		public static TextWriter MessageOutput = Console.Out;
 
@@ -119,22 +121,23 @@ namespace Mono.CSharp {
 
 				ctx = driver.ctx;
 
-				RootContext.ToplevelTypes = new ModuleCompiled (ctx, true);
+				CompilerCallableEntryPoint.Reset ();
+				RootContext.ToplevelTypes = new ModuleContainer (ctx);
 				
-				driver.ProcessDefaultConfig ();
-
 				var startup_files = new List<string> ();
 				foreach (CompilationUnit file in Location.SourceFiles)
 					startup_files.Add (file.Path);
 				
-				CompilerCallableEntryPoint.Reset ();
-				RootContext.ToplevelTypes = new ModuleCompiled (ctx, true);
-				var ctypes = TypeManager.InitCoreTypes ();
+				CompilerCallableEntryPoint.PartialReset ();
+
+				var importer = new ReflectionImporter (ctx.BuildinTypes);
+				loader = new DynamicLoader (importer, ctx);
+
+				RootContext.ToplevelTypes.SetDeclaringAssembly (new AssemblyDefinitionDynamic (RootContext.ToplevelTypes, "temp"));
 
-				ctx.MetaImporter.Initialize ();
-				driver.LoadReferences ();
-				TypeManager.InitCoreTypes (ctx, ctypes);
-				TypeManager.InitOptionalCoreTypes (ctx);
+				loader.LoadReferences (RootContext.ToplevelTypes);
+				ctx.BuildinTypes.CheckDefinitions (RootContext.ToplevelTypes);
+				RootContext.ToplevelTypes.InitializePredefinedTypes ();
 
 				RootContext.EvalMode = true;
 				inited = true;
@@ -151,18 +154,11 @@ namespace Mono.CSharp {
 		static void Reset ()
 		{
 			CompilerCallableEntryPoint.PartialReset ();
-			RootContext.PartialReset ();
 			
-			RootContext.ToplevelTypes = new ModuleCompiled (ctx, true);
-
 			Location.AddFile (null, "{interactive}");
 			Location.Initialize ();
 
 			current_debug_name = "interactive" + (count++) + ".dll";
-			if (Environment.GetEnvironmentVariable ("SAVE") != null){
-				CodeGen.Init (current_debug_name, current_debug_name, false, ctx);
-			} else
-				CodeGen.InitDynamic (ctx, current_debug_name);
 		}
 
 		/// <summary>
@@ -184,7 +180,7 @@ namespace Mono.CSharp {
 				if (interactive_base_class != null)
 					return interactive_base_class;
 
-				return ctx.MetaImporter.ImportType (typeof (InteractiveBase));
+				return loader.Importer.ImportType (typeof (InteractiveBase));
 			}
 		}
 
@@ -194,7 +190,7 @@ namespace Mono.CSharp {
 				throw new ArgumentNullException ();
 
 			lock (evaluator_lock)
-				interactive_base_class = ctx.MetaImporter.ImportType (type);
+				interactive_base_class = loader.Importer.ImportType (type);
 		}
 
 		/// <summary>
@@ -248,7 +244,11 @@ namespace Mono.CSharp {
 			lock (evaluator_lock){
 				if (!inited)
 					Init ();
-				
+				else
+					ctx.Report.Printer.Reset ();
+
+			//	RootContext.ToplevelTypes = new ModuleContainer (ctx);
+
 				bool partial_input;
 				CSharpParser parser = ParseString (ParseMode.Silent, input, out partial_input);
 				if (parser == null){
@@ -270,10 +270,13 @@ namespace Mono.CSharp {
 						parser.CurrentNamespace.Extract (using_alias_list, using_list);
 				}
 
+#if STATIC
+				throw new NotSupportedException ();
+#else
 				compiled = CompileBlock (parser_result as Class, parser.undo, ctx.Report);
+				return null;
+#endif
 			}
-			
-			return null;
 		}
 
 		/// <summary>
@@ -405,14 +408,13 @@ namespace Mono.CSharp {
 				}
 
 				try {
-					RootContext.ResolveTree ();
+					var a = new AssemblyDefinitionDynamic (RootContext.ToplevelTypes, "temp");
+					a.Create (AppDomain.CurrentDomain, AssemblyBuilderAccess.Run);
+					RootContext.ToplevelTypes.SetDeclaringAssembly (a);
+					RootContext.ToplevelTypes.Define ();
 					if (ctx.Report.Errors != 0)
 						return null;
 					
-					RootContext.PopulateTypes ();
-					if (ctx.Report.Errors != 0)
-						return null;
-
 					MethodOrOperator method = null;
 					foreach (MemberCore member in parser_result.Methods){
 						if (member.Name != "Host")
@@ -427,7 +429,7 @@ namespace Mono.CSharp {
 					BlockContext bc = new BlockContext (method, method.Block, method.ReturnType);
 
 					try {
-						method.Block.Resolve (null, bc, method.ParameterInfo, method);
+						method.Block.Resolve (null, bc, method);
 					} catch (CompletionResult cr){
 						prefix = cr.BaseText;
 						return cr.Result;
@@ -439,7 +441,7 @@ namespace Mono.CSharp {
 			}
 			return null;
 		}
-		
+
 		/// <summary>
 		///   Executes the given expression or statement.
 		/// </summary>
@@ -486,7 +488,7 @@ namespace Mono.CSharp {
 
 			return result;
 		}
-	
+
 		enum InputKind {
 			EOF,
 			StatementOrExpression,
@@ -635,7 +637,7 @@ namespace Mono.CSharp {
 			}
 			seekable.Position = 0;
 
-			CSharpParser parser = new CSharpParser (seekable, (CompilationUnit) Location.SourceFiles [0], ctx);
+			CSharpParser parser = new CSharpParser (seekable, Location.SourceFiles [0], RootContext.ToplevelTypes);
 
 			if (kind == InputKind.StatementOrExpression){
 				parser.Lexer.putback_char = Tokenizer.EvalStatementParserCharacter;
@@ -685,16 +687,21 @@ namespace Mono.CSharp {
 		//static ArrayList types = new ArrayList ();
 
 		static volatile bool invoking;
-		
+#if !STATIC		
 		static CompiledMethod CompileBlock (Class host, Undo undo, Report Report)
 		{
-			RootContext.ResolveTree ();
-			if (Report.Errors != 0){
-				undo.ExecuteUndo ();
-				return null;
+			AssemblyDefinitionDynamic assembly;
+
+			if (Environment.GetEnvironmentVariable ("SAVE") != null) {
+				assembly = new AssemblyDefinitionDynamic (RootContext.ToplevelTypes, current_debug_name, current_debug_name);
+				assembly.Importer = loader.Importer;
+			} else {
+				assembly = new AssemblyDefinitionDynamic (RootContext.ToplevelTypes, current_debug_name);
 			}
-			
-			RootContext.PopulateTypes ();
+
+			assembly.Create (AppDomain.CurrentDomain, AssemblyBuilderAccess.RunAndSave);
+			RootContext.ToplevelTypes.SetDeclaringAssembly (assembly);
+			RootContext.ToplevelTypes.Define ();
 
 			if (Report.Errors != 0){
 				undo.ExecuteUndo ();
@@ -720,16 +727,16 @@ namespace Mono.CSharp {
 					throw new Exception ("Internal error: did not find the method builder for the generated method");
 			}
 			
-			RootContext.EmitCode ();
+			RootContext.ToplevelTypes.Emit ();
 			if (Report.Errors != 0){
 				undo.ExecuteUndo ();
 				return null;
 			}
-			
-			RootContext.CloseTypes (ctx);
+
+			RootContext.ToplevelTypes.CloseType ();
 
 			if (Environment.GetEnvironmentVariable ("SAVE") != null)
-				CodeGen.Save (current_debug_name, false, Report);
+				assembly.Save ();
 
 			if (host == null)
 				return null;
@@ -738,7 +745,7 @@ namespace Mono.CSharp {
 			// Unlike Mono, .NET requires that the MethodInfo is fetched, it cant
 			// work from MethodBuilders.   Retarded, I know.
 			//
-			var tt = CodeGen.Assembly.Builder.GetType (tb.Name);
+			var tt = assembly.Builder.GetType (tb.Name);
 			MethodInfo mi = tt.GetMethod (mb.Name);
 			
 			// Pull the FieldInfos from the type, and keep track of them
@@ -772,7 +779,7 @@ namespace Mono.CSharp {
 			
 			return (CompiledMethod) System.Delegate.CreateDelegate (typeof (CompiledMethod), mi);
 		}
-		
+#endif		
 		static internal void LoadAliases (NamespaceEntry ns)
 		{
 			ns.Populate (using_alias_list, using_list);
@@ -878,8 +885,9 @@ namespace Mono.CSharp {
 		static public void LoadAssembly (string file)
 		{
 			lock (evaluator_lock){
-				driver.LoadAssembly (file, false);
-				ctx.GlobalRootNamespace.ComputeNamespaces (ctx);
+				var a = loader.LoadAssemblyFile (file);
+				if (a != null)
+					loader.Importer.ImportAssembly (a, RootContext.ToplevelTypes.GlobalRootNamespace);
 			}
 		}
 
@@ -889,9 +897,7 @@ namespace Mono.CSharp {
 		static public void ReferenceAssembly (Assembly a)
 		{
 			lock (evaluator_lock){
-//				GlobalRootNamespace.Instance.AddAssemblyReference (a);
-//				GlobalRootNamespace.Instance.ComputeNamespaces (ctx);
-				ctx.MetaImporter.ImportAssembly (a, ctx.GlobalRootNamespace);
+				loader.Importer.ImportAssembly (a, RootContext.ToplevelTypes.GlobalRootNamespace);
 			}
 		}
 
@@ -983,7 +989,7 @@ namespace Mono.CSharp {
 			return DateTime.Now - start;
 		}
 		
-#if !SMCS_SOURCE
+#if !SMCS_SOURCE && !STATIC
 		/// <summary>
 		///   Loads the assemblies from a package
 		/// </summary>
@@ -1017,6 +1023,7 @@ namespace Mono.CSharp {
 		}
 #endif
 
+#if !STATIC
 		/// <summary>
 		///   Loads the assembly
 		/// </summary>
@@ -1030,6 +1037,7 @@ namespace Mono.CSharp {
 		{
 			Evaluator.LoadAssembly (assembly);
 		}
+#endif
 		
 		/// <summary>
 		///   Returns a list of available static methods. 
@@ -1087,56 +1095,20 @@ namespace Mono.CSharp {
 #endif
 	}
 
-	//
-	// A local variable reference that will create a Field in a
-	// Class with the resolved type.  This is necessary so we can
-	// support "var" as a field type in a class declaration.
-	//
-	// We allow LocalVariableReferece to do the heavy lifting, and
-	// then we insert the field with the resolved type
-	//
-	public class LocalVariableReferenceWithClassSideEffect : LocalVariableReference {
-		TypeContainer container;
-		string name;
-		
-		public LocalVariableReferenceWithClassSideEffect (TypeContainer container, string name, Block current_block, string local_variable_id, LocalInfo li, Location loc)
-			: base (current_block, local_variable_id, loc, li, false)
+	class HoistedEvaluatorVariable : HoistedVariable
+	{
+		public HoistedEvaluatorVariable (Field field)
+			: base (null, field)
 		{
-			this.container = container;
-			this.name = name;
 		}
 
-		public override bool Equals (object obj)
+		public override void EmitSymbolInfo ()
 		{
-			LocalVariableReferenceWithClassSideEffect lvr = obj as LocalVariableReferenceWithClassSideEffect;
-			if (lvr == null)
-				return false;
-
-			if (lvr.name != name || lvr.container != container)
-				return false;
-
-			return base.Equals (obj);
 		}
 
-		public override int GetHashCode ()
-		{
-			return name.GetHashCode ();
-		}
-		
-		override public Expression DoResolveLValue (ResolveContext ec, Expression right_side)
+		protected override FieldExpr GetFieldExpression (EmitContext ec)
 		{
-			Expression ret = base.DoResolveLValue (ec, right_side);
-			if (ret == null)
-				return null;
-
-			Field f = new Field (container, new TypeExpression (ret.Type, Location),
-					     Modifiers.PUBLIC | Modifiers.STATIC,
-					     new MemberName (name, Location), null);
-			container.AddField (f);
-			if (f.Define ())
-				Evaluator.QueueField (f);
-			
-			return ret;
+			return new FieldExpr (field, field.Location);
 		}
 	}
 
@@ -1230,4 +1202,3 @@ namespace Mono.CSharp {
 	}
 	
 }
-	
diff --git a/mcs/mcs/expression.cs b/mcs/mcs/expression.cs
index 26b4540..e115f8c 100644
--- a/mcs/mcs/expression.cs
+++ b/mcs/mcs/expression.cs
@@ -9,15 +9,23 @@
 // Copyright 2003-2008 Novell, Inc.
 //
 
-namespace Mono.CSharp {
-	using System;
-	using System.Collections.Generic;
-	using System.Reflection;
-	using System.Reflection.Emit;
-	using System.Text;
-	using System.Linq;
-	using SLE = System.Linq.Expressions;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using SLE = System.Linq.Expressions;
+
+#if STATIC
+using MetaType = IKVM.Reflection.Type;
+using IKVM.Reflection;
+using IKVM.Reflection.Emit;
+#else
+using MetaType = System.Type;
+using System.Reflection;
+using System.Reflection.Emit;
+#endif
 
+namespace Mono.CSharp
+{
 	//
 	// This is an user operator expression, automatically created during
 	// resolve phase
@@ -70,8 +78,11 @@ namespace Mono.CSharp {
 
 		public override SLE.Expression MakeExpression (BuilderContext ctx)
 		{
-			var method = oper.GetMetaInfo () as MethodInfo;
-			return SLE.Expression.Call (method, Arguments.MakeExpression (arguments, ctx));
+#if STATIC
+			return base.MakeExpression (ctx);
+#else
+			return SLE.Expression.Call ((MethodInfo) oper.GetMetaInfo (), Arguments.MakeExpression (arguments, ctx));
+#endif
 		}
 	}
 
@@ -273,7 +284,7 @@ namespace Mono.CSharp {
 			throw new Exception ("Can not constant fold: " + Oper.ToString());
 		}
 		
-		protected Expression ResolveOperator (ResolveContext ec, Expression expr)
+		protected virtual Expression ResolveOperator (ResolveContext ec, Expression expr)
 		{
 			eclass = ExprClass.Value;
 
@@ -622,7 +633,7 @@ namespace Mono.CSharp {
 				VariableInfo vi = vr.VariableInfo;
 				if (vi != null) {
 					if (vi.LocalInfo != null)
-						vi.LocalInfo.Used = true;
+						vi.LocalInfo.SetIsUsed ();
 
 					//
 					// A variable is considered definitely assigned if you take its address.
@@ -688,7 +699,7 @@ namespace Mono.CSharp {
 			Arguments args = new Arguments (1);
 			args.Add (new Argument (expr));
 
-			var res = new OverloadResolver (methods, OverloadResolver.Restrictions.NoBaseMembers, loc);
+			var res = new OverloadResolver (methods, OverloadResolver.Restrictions.BaseMembersIncluded | OverloadResolver.Restrictions.NoBaseMembers, loc);
 			var oper = res.ResolveOperator (ec, ref args);
 
 			if (oper == null)
@@ -851,17 +862,20 @@ namespace Mono.CSharp {
 			if (!ec.IsUnsafe)
 				UnsafeError (ec, loc);
 
-			if (!expr.Type.IsPointer) {
+			var pc = expr.Type as PointerContainer;
+
+			if (pc == null) {
 				ec.Report.Error (193, loc, "The * or -> operator must be applied to a pointer");
 				return null;
 			}
 
-			if (expr.Type == TypeManager.void_ptr_type) {
-				ec.Report.Error (242, loc, "The operation in question is undefined on void pointers");
+			type = pc.Element;
+
+			if (type.BuildinType == BuildinTypeSpec.Type.Void) {
+				Error_VoidPointerOperation (ec);
 				return null;
 			}
 
-			type = TypeManager.GetElementType (expr.Type);
 			eclass = ExprClass.Variable;
 			return this;
 		}
@@ -974,6 +988,8 @@ namespace Mono.CSharp {
 		// Holds the real operation
 		Expression operation;
 
+		static TypeSpec[] predefined;
+
 		public UnaryMutator (Mode m, Expression e, Location loc)
 		{
 			mode = m;
@@ -986,6 +1002,29 @@ namespace Mono.CSharp {
 			return new SimpleAssign (this, this).CreateExpressionTree (ec);
 		}
 
+		void CreatePredefinedOperators ()
+		{
+			//
+			// Predefined ++ and -- operators exist for the following types: 
+			// sbyte, byte, short, ushort, int, uint, long, ulong, char, float, double, decimal
+			//
+			predefined = new TypeSpec[] {
+				TypeManager.int32_type,
+
+				TypeManager.sbyte_type,
+				TypeManager.byte_type,
+				TypeManager.short_type,
+				TypeManager.ushort_type,
+				TypeManager.uint32_type,
+				TypeManager.int64_type,
+				TypeManager.uint64_type,
+				TypeManager.char_type,
+				TypeManager.float_type,
+				TypeManager.double_type,
+				TypeManager.decimal_type
+			};
+		}
+
 		protected override Expression DoResolve (ResolveContext ec)
 		{
 			expr = expr.Resolve (ec);
@@ -1011,7 +1050,108 @@ namespace Mono.CSharp {
 
 			eclass = ExprClass.Value;
 			type = expr.Type;
-			return ResolveOperator (ec);
+
+			if (expr is RuntimeValueExpression) {
+				operation = expr;
+			} else {
+				// Use itself at the top of the stack
+				operation = new EmptyExpression (type);
+			}
+
+			//
+			// The operand of the prefix/postfix increment decrement operators
+			// should be an expression that is classified as a variable,
+			// a property access or an indexer access
+			//
+			// TODO: Move to parser, expr is ATypeNameExpression
+			if (expr.eclass == ExprClass.Variable || expr.eclass == ExprClass.IndexerAccess || expr.eclass == ExprClass.PropertyAccess) {
+				expr = expr.ResolveLValue (ec, expr);
+			} else {
+				ec.Report.Error (1059, loc, "The operand of an increment or decrement operator must be a variable, property or indexer");
+			}
+
+			//
+			// Step 1: Try to find a user operator, it has priority over predefined ones
+			//
+			var user_op = IsDecrement ? Operator.OpType.Decrement : Operator.OpType.Increment;
+			var methods = MemberCache.GetUserOperator (type, user_op, false);
+
+			if (methods != null) {
+				Arguments args = new Arguments (1);
+				args.Add (new Argument (expr));
+
+				var res = new OverloadResolver (methods, OverloadResolver.Restrictions.BaseMembersIncluded | OverloadResolver.Restrictions.NoBaseMembers, loc);
+				var method = res.ResolveOperator (ec, ref args);
+				if (method == null)
+					return null;
+
+				args[0].Expr = operation;
+				operation = new UserOperatorCall (method, args, null, loc);
+				operation = Convert.ImplicitConversionRequired (ec, operation, type, loc);
+				return this;
+			}
+
+			//
+			// Step 2: Try predefined types
+			//
+			if (predefined == null)
+				CreatePredefinedOperators ();
+
+			// Predefined without user conversion first for speed-up
+			Expression source = null;
+			bool primitive_type = false;
+			foreach (var t in predefined) {
+				if (t == type) {
+					source = operation;
+					primitive_type = true;
+					break;
+				}
+			}
+
+			// ++/-- on pointer variables of all types except void*
+			if (source == null && type.IsPointer) {
+				if (((PointerContainer) type).Element.BuildinType == BuildinTypeSpec.Type.Void) {
+					Error_VoidPointerOperation (ec);
+					return null;
+				}
+
+				source = operation;
+			}
+
+			if (source == null) {
+				// LAMESPEC: It should error on ambiguous operators but that would make us incompatible
+				foreach (var t in predefined) {
+					source = Convert.ImplicitUserConversion (ec, operation, t, loc);
+					if (source != null) {
+						break;
+					}
+				}
+			}
+
+			// ++/-- on enum types
+			if (source == null && type.IsEnum)
+				source = operation;
+
+			if (source == null) {
+				Unary.Error_OperatorCannotBeApplied (ec, loc, Operator.GetName (user_op), type);
+				return null;
+			}
+
+			var one = new IntConstant (1, loc);
+			var op = IsDecrement ? Binary.Operator.Subtraction : Binary.Operator.Addition;
+			operation = new Binary (op, source, one, loc);
+			operation = operation.Resolve (ec);
+			if (operation == null)
+				throw new NotImplementedException ("should not be reached");
+
+			if (operation.Type != type) {
+				if (primitive_type)
+					operation = Convert.ExplicitNumericConversion (operation, type);
+				else
+					operation = Convert.ImplicitConversionRequired (ec, operation, type, loc);
+			}
+
+			return this;
 		}
 
 		void EmitCode (EmitContext ec, bool is_expr)
@@ -1057,18 +1197,6 @@ namespace Mono.CSharp {
 			get { return (mode & Mode.IsDecrement) != 0; }
 		}
 
-		//
-		//   Returns whether an object of type `t' can be incremented
-		//   or decremented with add/sub (ie, basically whether we can
-		//   use pre-post incr-decr operations on it, but it is not a
-		//   System.Decimal, which we require operator overloading to catch)
-		//
-		static bool IsPredefinedOperator (TypeSpec t)
-		{
-			return (TypeManager.IsPrimitiveType (t) && t != TypeManager.bool_type) ||
-				TypeManager.IsEnumType (t) ||
-				t.IsPointer && t != TypeManager.void_ptr_type;
-		}
 
 #if NET_4_0
 		public override SLE.Expression MakeExpression (BuilderContext ctx)
@@ -1079,78 +1207,16 @@ namespace Mono.CSharp {
 		}
 #endif
 
-		protected override void CloneTo (CloneContext clonectx, Expression t)
+		public static void Reset ()
 		{
-			UnaryMutator target = (UnaryMutator) t;
-
-			target.expr = expr.Clone (clonectx);
+			predefined = null;
 		}
 
-		Expression ResolveOperator (ResolveContext ec)
+		protected override void CloneTo (CloneContext clonectx, Expression t)
 		{
-			if (expr is RuntimeValueExpression) {
-				operation = expr;
-			} else {
-				// Use itself at the top of the stack
-				operation = new EmptyExpression (type);
-			}
-
-			//
-			// The operand of the prefix/postfix increment decrement operators
-			// should be an expression that is classified as a variable,
-			// a property access or an indexer access
-			//
-			if (expr.eclass == ExprClass.Variable || expr.eclass == ExprClass.IndexerAccess || expr.eclass == ExprClass.PropertyAccess) {
-				expr = expr.ResolveLValue (ec, expr);
-			} else {
-				ec.Report.Error (1059, loc, "The operand of an increment or decrement operator must be a variable, property or indexer");
-			}
-
-			//
-			// 1. Check predefined types
-			//
-			if (IsPredefinedOperator (type)) {
-				// TODO: Move to IntConstant once I get rid of int32_type
-				var one = new IntConstant (1, loc);
-
-				// TODO: Cache this based on type when using EmptyExpression in
-				// context cache
-				Binary.Operator op = IsDecrement ? Binary.Operator.Subtraction : Binary.Operator.Addition;
-				operation = new Binary (op, operation, one, loc);
-				operation = operation.Resolve (ec);
-				if (operation != null && operation.Type != type)
-					operation = Convert.ExplicitNumericConversion (operation, type);
-
-				return this;
-			}
-
-			//
-			// Step 2: Perform Operator Overload location
-			//
-			var user_op = IsDecrement ? Operator.OpType.Decrement : Operator.OpType.Increment;
-			var methods = MemberCache.GetUserOperator (type, user_op, false);
-
-			if (methods != null) {
-				Arguments args = new Arguments (1);
-				args.Add (new Argument (expr));
-
-				var res = new OverloadResolver (methods, OverloadResolver.Restrictions.NoBaseMembers, loc);
-				var op = res.ResolveOperator (ec, ref args);
-				if (op == null)
-					return null;
-
-				args[0].Expr = operation;
-				operation = new UserOperatorCall (op, args, null, loc);
-				operation = Convert.ImplicitConversionRequired (ec, operation, type, loc);
-				return this;
-			}
-
-			string name = IsDecrement ?
-				Operator.GetName (Operator.OpType.Decrement) :
-				Operator.GetName (Operator.OpType.Increment);
+			UnaryMutator target = (UnaryMutator) t;
 
-			Unary.Error_OperatorCannotBeApplied (ec, loc, name, type);
-			return null;
+			target.expr = expr.Clone (clonectx);
 		}
 	}
 
@@ -1348,14 +1414,14 @@ namespace Mono.CSharp {
 						OperatorName, t.GetSignatureForError ());
 				}
 
-				if (TypeManager.IsStruct (d)) {
+				if (TypeManager.IsStruct (d) && d != TypeManager.void_type) {
 					if (Convert.ImplicitBoxingConversion (null, d, t) != null)
 						return CreateConstantResult (ec, true);
 				} else {
 					if (TypeManager.IsGenericParameter (d))
 						return ResolveGenericParameter (ec, t, (TypeParameterSpec) d);
 
-					if (TypeManager.ContainsGenericParameters (d))
+					if (InflatedTypeSpec.ContainsTypeParameter (d))
 						return this;
 
 					if (Convert.ImplicitReferenceConversionExists (expr, t) ||
@@ -1376,7 +1442,7 @@ namespace Mono.CSharp {
 			}
 
 			if (TypeManager.IsGenericParameter (expr.Type)) {
-				if (t.IsValueType && expr.Type == t)
+				if (t.IsValueType && expr.Type == d)
 					return CreateConstantResult (ec, true);
 
 				expr = new BoxedCast (expr, d);
@@ -1394,7 +1460,6 @@ namespace Mono.CSharp {
 	///   Implementation of the `as' operator.
 	/// </summary>
 	public class As : Probe {
-		bool do_isinst;
 		Expression resolved_type;
 		
 		public As (Expression expr, Expression probe_type, Location l)
@@ -1415,8 +1480,7 @@ namespace Mono.CSharp {
 		{
 			expr.Emit (ec);
 
-			if (do_isinst)
-				ec.Emit (OpCodes.Isinst, type);
+			ec.Emit (OpCodes.Isinst, type);
 
 			if (TypeManager.IsGenericParameter (type) || TypeManager.IsNullableType (type))
 				ec.Emit (OpCodes.Unbox_Any, type);
@@ -1454,28 +1518,24 @@ namespace Mono.CSharp {
 
 			// If the compile-time type of E is dynamic, unlike the cast operator the as operator is not dynamically bound
 			if (etype == InternalType.Dynamic) {
-				do_isinst = true;
 				return this;
 			}
 			
-			Expression e = Convert.ImplicitConversion (ec, expr, type, loc);
-			if (e != null){
-				expr = e;
-				return this;
+			Expression e = Convert.ImplicitConversionStandard (ec, expr, type, loc);
+			if (e != null) {
+				e = EmptyCast.Create (e, type);
+				return ReducedExpression.Create (e, this).Resolve (ec);
 			}
 
 			if (Convert.ExplicitReferenceConversionExists (etype, type)){
 				if (TypeManager.IsGenericParameter (etype))
 					expr = new BoxedCast (expr, etype);
 
-				do_isinst = true;
 				return this;
 			}
 
-			if (TypeManager.ContainsGenericParameters (etype) ||
-			    TypeManager.ContainsGenericParameters (type)) {
+			if (InflatedTypeSpec.ContainsTypeParameter (etype) || InflatedTypeSpec.ContainsTypeParameter (type)) {
 				expr = new BoxedCast (expr, etype);
-				do_isinst = true;
 				return this;
 			}
 
@@ -1619,7 +1679,7 @@ namespace Mono.CSharp {
 			if (TypeManager.IsReferenceType (type))
 				return new NullConstant (type, loc);
 
-			Constant c = New.Constantify (type);
+			Constant c = New.Constantify (type, expr.Location);
 			if (c != null)
 				return c.Resolve (ec);
 
@@ -1636,6 +1696,13 @@ namespace Mono.CSharp {
 			temp_storage.Emit(ec);
 		}
 
+#if NET_4_0 && !STATIC
+		public override SLE.Expression MakeExpression (BuilderContext ctx)
+		{
+			return SLE.Expression.Default (type.GetMetaInfo ());
+		}
+#endif
+
 		protected override void CloneTo (CloneContext clonectx, Expression t)
 		{
 			DefaultValueExpression target = (DefaultValueExpression) t;
@@ -1694,11 +1761,11 @@ namespace Mono.CSharp {
 				// and then look for decimal user-operator implementation
 				//
 				if (left == TypeManager.decimal_type)
-					return b.ResolveUserOperator (ec, b.left.Type, b.right.Type);
+					return b.ResolveUserOperator (ec, b.left, b.right);
 
 				var c = b.right as Constant;
 				if (c != null) {
-					if (c.IsDefaultValue && (b.oper == Operator.Addition || b.oper == Operator.BitwiseOr || b.oper == Operator.Subtraction))
+					if (c.IsDefaultValue && (b.oper == Operator.Addition || b.oper == Operator.Subtraction || (b.oper == Operator.BitwiseOr && !(b is Nullable.LiftedBinaryOperator))))
 						return ReducedExpression.Create (b.left, b).Resolve (ec);
 					if ((b.oper == Operator.Multiply || b.oper == Operator.Division) && c.IsOneInteger)
 						return ReducedExpression.Create (b.left, b).Resolve (ec);
@@ -1707,7 +1774,7 @@ namespace Mono.CSharp {
 
 				c = b.left as Constant;
 				if (c != null) {
-					if (c.IsDefaultValue && (b.oper == Operator.Addition || b.oper == Operator.BitwiseOr))
+					if (c.IsDefaultValue && (b.oper == Operator.Addition || b.oper == Operator.Subtraction || (b.oper == Operator.BitwiseOr && !(b is Nullable.LiftedBinaryOperator))))
 						return ReducedExpression.Create (b.right, b).Resolve (ec);
 					if (b.oper == Operator.Multiply && c.IsOneInteger)
 						return ReducedExpression.Create (b.right, b).Resolve (ec);
@@ -1977,9 +2044,17 @@ namespace Mono.CSharp {
 			RelationalMask	= 1 << 13
 		}
 
+		protected enum State
+		{
+			None = 0,
+			Compound = 1 << 1,
+			LeftNullLifted = 1 << 2,
+			RightNullLifted = 1 << 3
+		}
+
 		readonly Operator oper;
 		protected Expression left, right;
-		readonly bool is_compound;
+		protected State state;
 		Expression enum_conversion;
 
 		static PredefinedOperator[] standard_operators;
@@ -1989,7 +2064,8 @@ namespace Mono.CSharp {
 		public Binary (Operator oper, Expression left, Expression right, bool isCompound, Location loc)
 			: this (oper, left, right, loc)
 		{
-			this.is_compound = isCompound;
+			if (isCompound)
+				state |= State.Compound;
 		}
 
 		public Binary (Operator oper, Expression left, Expression right, Location loc)
@@ -2000,12 +2076,22 @@ namespace Mono.CSharp {
 			this.loc = loc;
 		}
 
+		#region Properties
+
+		public bool IsCompound {
+			get {
+				return (state & State.Compound) != 0;
+			}
+		}
+
 		public Operator Oper {
 			get {
 				return oper;
 			}
 		}
-		
+
+		#endregion
+
 		/// <summary>
 		///   Returns a stringified representation of the Operator
 		/// </summary>
@@ -2072,7 +2158,7 @@ namespace Mono.CSharp {
 				break;
 			}
 
-			if (is_compound)
+			if (IsCompound)
 				return s + "=";
 
 			return s;
@@ -2105,15 +2191,15 @@ namespace Mono.CSharp {
 		{
 			switch (oper) {
 			case Operator.Addition:
-				return is_compound ? "AddAssign" : "Add";
+				return IsCompound ? "AddAssign" : "Add";
 			case Operator.BitwiseAnd:
-				return is_compound ? "AndAssign" : "And";
+				return IsCompound ? "AndAssign" : "And";
 			case Operator.BitwiseOr:
-				return is_compound ? "OrAssign" : "Or";
+				return IsCompound ? "OrAssign" : "Or";
 			case Operator.Division:
-				return is_compound ? "DivideAssign" : "Divide";
+				return IsCompound ? "DivideAssign" : "Divide";
 			case Operator.ExclusiveOr:
-				return is_compound ? "ExclusiveOrAssign" : "ExclusiveOr";
+				return IsCompound ? "ExclusiveOrAssign" : "ExclusiveOr";
 			case Operator.Equality:
 				return "Equal";
 			case Operator.GreaterThan:
@@ -2123,7 +2209,7 @@ namespace Mono.CSharp {
 			case Operator.Inequality:
 				return "NotEqual";
 			case Operator.LeftShift:
-				return is_compound ? "LeftShiftAssign" : "LeftShift";
+				return IsCompound ? "LeftShiftAssign" : "LeftShift";
 			case Operator.LessThan:
 				return "LessThan";
 			case Operator.LessThanOrEqual:
@@ -2133,13 +2219,13 @@ namespace Mono.CSharp {
 			case Operator.LogicalOr:
 				return "Or";
 			case Operator.Modulus:
-				return is_compound ? "ModuloAssign" : "Modulo";
+				return IsCompound ? "ModuloAssign" : "Modulo";
 			case Operator.Multiply:
-				return is_compound ? "MultiplyAssign" : "Multiply";
+				return IsCompound ? "MultiplyAssign" : "Multiply";
 			case Operator.RightShift:
-				return is_compound ? "RightShiftAssign" : "RightShift";
+				return IsCompound ? "RightShiftAssign" : "RightShift";
 			case Operator.Subtraction:
-				return is_compound ? "SubtractAssign" : "Subtract";
+				return IsCompound ? "SubtractAssign" : "Subtract";
 			default:
 				throw new NotImplementedException ("Unknown expression type operator " + oper.ToString ());
 			}
@@ -2364,12 +2450,11 @@ namespace Mono.CSharp {
 					return ResolveOperatorPointer (ec, l, r);
 
 				// Enums
-				bool lenum = TypeManager.IsEnumType (l);
-				bool renum = TypeManager.IsEnumType (r);
+				bool lenum = l.IsEnum;
+				bool renum = r.IsEnum;
 				if (lenum || renum) {
 					expr = ResolveOperatorEnum (ec, lenum, renum, l, r);
 
-					// TODO: Can this be ambiguous
 					if (expr != null)
 						return expr;
 				}
@@ -2385,7 +2470,7 @@ namespace Mono.CSharp {
 				}
 
 				// User operators
-				expr = ResolveUserOperator (ec, l, r);
+				expr = ResolveUserOperator (ec, left, right);
 				if (expr != null)
 					return expr;
 
@@ -2709,7 +2794,73 @@ namespace Mono.CSharp {
 			}
 
 			if (left.Type == InternalType.Dynamic || right.Type == InternalType.Dynamic) {
-				Arguments args = new Arguments (2);
+				var lt = left.Type;
+				var rt = right.Type;
+				if (lt == TypeManager.void_type || lt == InternalType.MethodGroup || lt == InternalType.AnonymousMethod ||
+					rt == TypeManager.void_type || rt == InternalType.MethodGroup || rt == InternalType.AnonymousMethod) {
+					Error_OperatorCannotBeApplied (ec, left, right);
+					return null;
+				}
+
+				Arguments args;
+
+				//
+				// Special handling for logical boolean operators which require rhs not to be
+				// evaluated based on lhs value
+				//
+				if ((oper & Operator.LogicalMask) != 0) {
+					Expression cond_left, cond_right, expr;
+
+					args = new Arguments (2);
+
+					if (lt == InternalType.Dynamic) {
+						LocalVariable temp = LocalVariable.CreateCompilerGenerated (lt, ec.CurrentBlock, loc);
+
+						var cond_args = new Arguments (1);
+						cond_args.Add (new Argument (new SimpleAssign (temp.CreateReferenceExpression (ec, loc), left).Resolve (ec)));
+
+						//
+						// dynamic && bool => IsFalse (temp = left) ? temp : temp && right;
+						// dynamic || bool => IsTrue (temp = left) ? temp : temp || right;
+						//
+						left = temp.CreateReferenceExpression (ec, loc);
+						if (oper == Operator.LogicalAnd) {
+							expr = DynamicUnaryConversion.CreateIsFalse (cond_args, loc);
+							cond_left = left;
+						} else {
+							expr = DynamicUnaryConversion.CreateIsTrue (cond_args, loc);
+							cond_left = left;
+						}
+
+						args.Add (new Argument (left));
+						args.Add (new Argument (right));
+						cond_right = new DynamicExpressionStatement (this, args, loc);
+					} else {
+						LocalVariable temp = LocalVariable.CreateCompilerGenerated (TypeManager.bool_type, ec.CurrentBlock, loc);
+
+						args.Add (new Argument (temp.CreateReferenceExpression (ec, loc).Resolve (ec)));
+						args.Add (new Argument (right));
+						right = new DynamicExpressionStatement (this, args, loc);
+
+						//
+						// bool && dynamic => (temp = left) ? temp && right : temp;
+						// bool || dynamic => (temp = left) ? temp : temp || right;
+						//
+						if (oper == Operator.LogicalAnd) {
+							cond_left = right;
+							cond_right = temp.CreateReferenceExpression (ec, loc);
+						} else {
+							cond_left = temp.CreateReferenceExpression (ec, loc);
+							cond_right = right;
+						}
+
+						expr = new BooleanExpression (new SimpleAssign (temp.CreateReferenceExpression (ec, loc), left));
+					}
+
+					return new Conditional (expr, cond_left, cond_right, loc).Resolve (ec);
+				}
+
+				args = new Arguments (2);
 				args.Add (new Argument (left));
 				args.Add (new Argument (right));
 				return new DynamicExpressionStatement (this, args, loc).Resolve (ec);
@@ -2719,8 +2870,11 @@ namespace Mono.CSharp {
 				((TypeManager.IsNullableType (left.Type) && (right is NullLiteral || TypeManager.IsNullableType (right.Type) || TypeManager.IsValueType (right.Type))) ||
 				(TypeManager.IsValueType (left.Type) && right is NullLiteral) ||
 				(TypeManager.IsNullableType (right.Type) && (left is NullLiteral || TypeManager.IsNullableType (left.Type) || TypeManager.IsValueType (left.Type))) ||
-				(TypeManager.IsValueType (right.Type) && left is NullLiteral)))
-				return new Nullable.LiftedBinaryOperator (oper, left, right, loc).Resolve (ec);
+				(TypeManager.IsValueType (right.Type) && left is NullLiteral))) {
+				var lifted = new Nullable.LiftedBinaryOperator (oper, left, right, loc);
+				lifted.state = state;
+				return lifted.Resolve (ec);
+			}
 
 			return DoResolveCore (ec, left, right);
 		}
@@ -2802,7 +2956,7 @@ namespace Mono.CSharp {
 						return null;
 					right = tmp;
 					r = right.Type;
-				} else if (left.eclass == ExprClass.MethodGroup || (l == InternalType.AnonymousMethod)) {
+				} else if (left.eclass == ExprClass.MethodGroup || (l == InternalType.AnonymousMethod || l == InternalType.Null)) {
 					tmp = Convert.ImplicitConversionRequired (ec, left, r, loc);
 					if (tmp == null)
 						return null;
@@ -2860,88 +3014,133 @@ namespace Mono.CSharp {
 			//
 			// U operator - (E e, E f)
 			// E operator - (E e, U x)
+			// E operator - (U x, E e)	// LAMESPEC: Not covered by the specification
 			//
-			// E operator + (U x, E e)
 			// E operator + (E e, U x)
+			// E operator + (U x, E e)
 			//
-			if (!((oper & (Operator.ComparisonMask | Operator.BitwiseMask)) != 0 ||
-				(oper == Operator.Subtraction && lenum) ||
-				(oper == Operator.Addition && (lenum != renum || type != null))))	// type != null for lifted null
-				return null;
-
 			Expression ltemp = left;
 			Expression rtemp = right;
 			TypeSpec underlying_type;
+			TypeSpec underlying_type_result;
+			TypeSpec res_type;
 			Expression expr;
 			
+			//
+			// LAMESPEC: There is never ambiguous conversion between enum operators
+			// the one which contains more enum parameters always wins even if there
+			// is an implicit conversion involved
+			//
 			if ((oper & (Operator.ComparisonMask | Operator.BitwiseMask)) != 0) {
 				if (renum) {
+					underlying_type = EnumSpec.GetUnderlyingType (rtype);
 					expr = Convert.ImplicitConversion (ec, left, rtype, loc);
-					if (expr != null) {
-						left = expr;
-						ltype = expr.Type;
-					}
+					if (expr == null)
+						return null;
+
+					left = expr;
+					ltype = expr.Type;
 				} else if (lenum) {
+					underlying_type = EnumSpec.GetUnderlyingType (ltype);
 					expr = Convert.ImplicitConversion (ec, right, ltype, loc);
-					if (expr != null) {
-						right = expr;
-						rtype = expr.Type;
-					}
+					if (expr == null)
+						return null;
+
+					right = expr;
+					rtype = expr.Type;
+				} else {
+					return null;
 				}
-			}			
 
-			if (ltype == rtype) {
-				underlying_type = EnumSpec.GetUnderlyingType (ltype);
+				if ((oper & Operator.BitwiseMask) != 0) {
+					res_type = ltype;
+					underlying_type_result = underlying_type;
+				} else {
+					res_type = null;
+					underlying_type_result = null;
+				}
+			} else if (oper == Operator.Subtraction) {
+				if (renum) {
+					underlying_type = EnumSpec.GetUnderlyingType (rtype);
+					if (ltype != rtype) {
+						expr = Convert.ImplicitConversion (ec, left, rtype, left.Location);
+						if (expr == null) {
+							expr = Convert.ImplicitConversion (ec, left, underlying_type, left.Location);
+							if (expr == null)
+								return null;
+
+							res_type = rtype;
+						} else {
+							res_type = underlying_type;
+						}
+
+						left = expr;
+					} else {
+						res_type = underlying_type;
+					}
 
-				if (left is Constant)
-					left = ((Constant) left).ConvertExplicitly (false, underlying_type).Resolve (ec);
-				else
-					left = EmptyCast.Create (left, underlying_type);
+					underlying_type_result = underlying_type;
+				} else if (lenum) {
+					underlying_type = EnumSpec.GetUnderlyingType (ltype);
+					expr = Convert.ImplicitConversion (ec, right, ltype, right.Location);
+					if (expr == null || expr is EnumConstant) {
+						expr = Convert.ImplicitConversion (ec, right, underlying_type, right.Location);
+						if (expr == null)
+							return null;
 
-				if (right is Constant)
-					right = ((Constant) right).ConvertExplicitly (false, underlying_type).Resolve (ec);
-				else
-					right = EmptyCast.Create (right, underlying_type);
-			} else if (lenum) {
-				underlying_type = EnumSpec.GetUnderlyingType (ltype);
+						res_type = ltype;
+					} else {
+						res_type = underlying_type;
+					}
 
-				if (oper != Operator.Subtraction && oper != Operator.Addition) {
-					Constant c = right as Constant;
-					if (c == null || !c.IsDefaultValue)
-						return null;
+					right = expr;
+					underlying_type_result = underlying_type;
 				} else {
-					if (!Convert.ImplicitStandardConversionExists (right, underlying_type))
-						return null;
+					return null;
+				}
+			} else if (oper == Operator.Addition) {
+				if (lenum) {
+					underlying_type = EnumSpec.GetUnderlyingType (ltype);
+					res_type = ltype;
+
+					if (rtype != underlying_type && (state & (State.RightNullLifted | State.LeftNullLifted)) == 0) {
+						expr = Convert.ImplicitConversion (ec, right, underlying_type, right.Location);
+						if (expr == null)
+							return null;
+
+						right = expr;
+					}
+				} else {
+					underlying_type = EnumSpec.GetUnderlyingType (rtype);
+					res_type = rtype;
+					if (ltype != underlying_type) {
+						expr = Convert.ImplicitConversion (ec, left, underlying_type, left.Location);
+						if (expr == null)
+							return null;
 
-					right = Convert.ImplicitConversionStandard (ec, right, underlying_type, right.Location);
+						left = expr;
+					}
 				}
 
+				underlying_type_result = underlying_type;
+			} else {
+				return null;
+			}
+
+			// Unwrap the constant correctly, so DoBinaryOperatorPromotion can do the magic
+			// with constants and expressions
+			if (left.Type != underlying_type) {
 				if (left is Constant)
 					left = ((Constant) left).ConvertExplicitly (false, underlying_type).Resolve (ec);
 				else
 					left = EmptyCast.Create (left, underlying_type);
+			}
 
-			} else if (renum) {
-				underlying_type = EnumSpec.GetUnderlyingType (rtype);
-
-				if (oper != Operator.Addition) {
-					Constant c = left as Constant;
-					if (c == null || !c.IsDefaultValue)
-						return null;
-				} else {
-					if (!Convert.ImplicitStandardConversionExists (left, underlying_type))
-						return null;
-
-					left = Convert.ImplicitConversionStandard (ec, left, underlying_type, left.Location);
-				}
-
+			if (right.Type != underlying_type) {
 				if (right is Constant)
 					right = ((Constant) right).ConvertExplicitly (false, underlying_type).Resolve (ec);
 				else
 					right = EmptyCast.Create (right, underlying_type);
-
-			} else {
-				return null;
 			}
 
 			//
@@ -2954,22 +3153,15 @@ namespace Mono.CSharp {
 				return null;
 			}
 
-			TypeSpec res_type = null;
-			if ((oper & Operator.BitwiseMask) != 0 || oper == Operator.Subtraction || oper == Operator.Addition) {
-				TypeSpec promoted_type = lenum ? left.Type : right.Type;
-				enum_conversion = Convert.ExplicitNumericConversion (
-					new EmptyExpression (promoted_type), underlying_type);
-
-				if (oper == Operator.Subtraction && renum && lenum)
-					res_type = underlying_type;
-				else if (oper == Operator.Addition && renum)
-					res_type = rtype;
-				else
-					res_type = ltype;
+			if (underlying_type_result != null && left.Type != underlying_type_result) {
+				enum_conversion = Convert.ExplicitNumericConversion (new EmptyExpression (left.Type), underlying_type_result);
 			}
-			
+
 			expr = ResolveOperatorPredefined (ec, standard_operators, true, res_type);
-			if (!is_compound || expr == null)
+			if (expr == null)
+				return null;
+
+			if (!IsCompound)
 				return expr;
 
 			//
@@ -3218,7 +3410,7 @@ namespace Mono.CSharp {
 			if (oper == Operator.BitwiseAnd || oper == Operator.LogicalAnd) {
 				Constant rc = right as Constant;
 				Constant lc = left as Constant;
-				if ((lc != null && lc.IsDefaultValue) || (rc != null && rc.IsDefaultValue)) {
+				if (((lc != null && lc.IsDefaultValue) || (rc != null && rc.IsDefaultValue)) && !(this is Nullable.LiftedBinaryOperator)) {
 					//
 					// The result is a constant with side-effect
 					//
@@ -3243,9 +3435,16 @@ namespace Mono.CSharp {
 		//
 		// Performs user-operator overloading
 		//
-		protected virtual Expression ResolveUserOperator (ResolveContext ec, TypeSpec l, TypeSpec r)
+		protected virtual Expression ResolveUserOperator (ResolveContext ec, Expression left, Expression right)
 		{
 			var op = ConvertBinaryToUserOperator (oper);
+			var l = left.Type;
+			if (TypeManager.IsNullableType (l))
+				l = Nullable.NullableInfo.GetUnderlyingType (l);
+			var r = right.Type;
+			if (TypeManager.IsNullableType (r))
+				r = Nullable.NullableInfo.GetUnderlyingType (r);
+
 			IList<MemberSpec> left_operators = MemberCache.GetUserOperator (l, op, false);
 			IList<MemberSpec> right_operators = null;
 
@@ -3273,12 +3472,31 @@ namespace Mono.CSharp {
 				left_operators = right_operators;
 			}
 
-			var res = new OverloadResolver (left_operators, OverloadResolver.Restrictions.ProbingOnly, loc);
+			var res = new OverloadResolver (left_operators, OverloadResolver.Restrictions.ProbingOnly | 
+				OverloadResolver.Restrictions.NoBaseMembers | OverloadResolver.Restrictions.BaseMembersIncluded, loc);
 
 			var oper_method = res.ResolveOperator (ec, ref args);
 			if (oper_method == null)
 				return null;
 
+			var llifted = (state & State.LeftNullLifted) != 0;
+			var rlifted = (state & State.RightNullLifted) != 0;
+			if ((Oper & Operator.EqualityMask) != 0) {
+				var parameters = oper_method.Parameters;
+				// LAMESPEC: No idea why this is not allowed
+				if ((left is Nullable.Unwrap || right is Nullable.Unwrap) && parameters.Types [0] != parameters.Types [1])
+					return null;
+
+				// Binary operation was lifted but we have found a user operator
+				// which requires value-type argument, we downgrade ourself back to
+				// binary operation
+				// LAMESPEC: The user operator is not called (it cannot be we are passing null to struct)
+				// but compilation succeeds
+				if ((llifted && !parameters.Types[0].IsStruct) || (rlifted && !parameters.Types[1].IsStruct)) {
+					state &= ~(State.LeftNullLifted | State.RightNullLifted);
+				}
+			}
+
 			Expression oper_expr;
 
 			// TODO: CreateExpressionTree is allocated every time
@@ -3289,8 +3507,12 @@ namespace Mono.CSharp {
 				oper_expr = new UserOperatorCall (oper_method, args, CreateExpressionTree, loc);
 			}
 
-			left = larg.Expr;
-			right = rarg.Expr;
+			if (!llifted)
+				this.left = larg.Expr;
+
+			if (!rlifted)
+				this.right = rarg.Expr;
+
 			return oper_expr;
 		}
 
@@ -3660,12 +3882,12 @@ namespace Mono.CSharp {
 			if ((oper & Operator.LogicalMask) != 0)
 				flags |= CSharpBinderFlags.BinaryOperationLogical;
 
-			binder_args.Add (new Argument (new EnumConstant (new IntLiteral ((int) flags, loc), TypeManager.binder_flags)));
+			binder_args.Add (new Argument (new EnumConstant (new IntLiteral ((int) flags, loc), ec.Module.PredefinedTypes.BinderFlags.Resolve (loc))));
 			binder_args.Add (new Argument (new MemberAccess (new MemberAccess (sle, "ExpressionType", loc), GetOperatorExpressionTypeName (), loc)));
 			binder_args.Add (new Argument (new TypeOf (new TypeExpression (ec.CurrentType, loc), loc)));									
 			binder_args.Add (new Argument (new ImplicitlyTypedArrayCreation (args.CreateDynamicBinderArguments (ec), loc)));
 
-			return new Invocation (DynamicExpressionStatement.GetBinder ("BinaryOperation", loc), binder_args);
+			return new Invocation (new MemberAccess (new TypeExpression (ec.Module.PredefinedTypes.Binder.TypeSpec, loc), "BinaryOperation", loc), binder_args);
 		}
 		
 		public override Expression CreateExpressionTree (ResolveContext ec)
@@ -3758,7 +3980,7 @@ namespace Mono.CSharp {
 			args.Add (new Argument (right.CreateExpressionTree (ec)));
 			if (method != null) {
 				if (lift_arg)
-					args.Add (new Argument (new BoolConstant (false, loc)));
+					args.Add (new Argument (new BoolLiteral (false, loc)));
 
 				args.Add (new Argument (method));
 			}
@@ -3983,9 +4205,10 @@ namespace Mono.CSharp {
 		protected override Expression DoResolve (ResolveContext ec)
 		{
 			eclass = ExprClass.Variable;
-			
-			if (left.Type == TypeManager.void_ptr_type) {
-				ec.Report.Error (242, loc, "The operation in question is undefined on void pointers");
+
+			var pc = left.Type as PointerContainer;
+			if (pc != null && pc.Element.BuildinType == BuildinTypeSpec.Type.Void) {
+				Error_VoidPointerOperation (ec);
 				return null;
 			}
 			
@@ -4137,7 +4360,7 @@ namespace Mono.CSharp {
 			if (expr.Type == InternalType.Dynamic) {
 				Arguments args = new Arguments (1);
 				args.Add (new Argument (expr));
-				return new DynamicUnaryConversion ("IsTrue", args, loc).Resolve (ec);
+				return DynamicUnaryConversion.CreateIsTrue (args, loc).Resolve (ec);
 			}
 
 			type = TypeManager.bool_type;
@@ -4157,6 +4380,19 @@ namespace Mono.CSharp {
 			return converted;
 		}
 	}
+
+	public class BooleanExpressionFalse : Unary
+	{
+		public BooleanExpressionFalse (Expression expr)
+			: base (Operator.LogicalNot, expr, expr.Location)
+		{
+		}
+
+		protected override Expression ResolveOperator (ResolveContext ec, Expression expr)
+		{
+			return GetOperatorFalse (ec, expr, loc) ?? base.ResolveOperator (ec, expr);
+		}
+	}
 	
 	/// <summary>
 	///   Implements the ternary conditional operator (?:)
@@ -4164,7 +4400,7 @@ namespace Mono.CSharp {
 	public class Conditional : Expression {
 		Expression expr, true_expr, false_expr;
 
-		public Conditional (BooleanExpression expr, Expression true_expr, Expression false_expr, Location loc)
+		public Conditional (Expression expr, Expression true_expr, Expression false_expr, Location loc)
 		{
 			this.expr = expr;
 			this.true_expr = true_expr;
@@ -4219,19 +4455,17 @@ namespace Mono.CSharp {
 			//
 			if (!TypeSpecComparer.IsEqual (true_type, false_type)) {
 				Expression conv = Convert.ImplicitConversion (ec, true_expr, false_type, loc);
-				if (conv != null) {
+				if (conv != null && true_type != InternalType.Dynamic) {
 					//
 					// Check if both can convert implicitly to each other's type
 					//
-					if (true_type != InternalType.Dynamic) {
-						type = false_type;
+					type = false_type;
 
-						if (false_type != InternalType.Dynamic && Convert.ImplicitConversion (ec, false_expr, true_type, loc) != null) {
-							ec.Report.Error (172, true_expr.Location,
-								"Type of conditional expression cannot be determined as `{0}' and `{1}' convert implicitly to each other",
-								TypeManager.CSharpName (true_type), TypeManager.CSharpName (false_type));
-							return null;
-						}
+					if (false_type != InternalType.Dynamic && Convert.ImplicitConversion (ec, false_expr, true_type, loc) != null) {
+						ec.Report.Error (172, true_expr.Location,
+							"Type of conditional expression cannot be determined as `{0}' and `{1}' convert implicitly to each other",
+								true_type.GetSignatureForError (), false_type.GetSignatureForError ());
+						return null;
 					}
 
 					true_expr = conv;
@@ -4297,6 +4531,9 @@ namespace Mono.CSharp {
 
 		#region Abstract
 		public abstract HoistedVariable GetHoistedVariable (AnonymousExpression ae);
+
+		public abstract bool IsLockedByStatement { get; set; }
+
 		public abstract bool IsFixed { get; }
 		public abstract bool IsRef { get; }
 		public abstract string Name { get; }
@@ -4324,19 +4561,15 @@ namespace Mono.CSharp {
 			Variable.EmitAddressOf (ec);
 		}
 
-		public HoistedVariable GetHoistedVariable (ResolveContext rc)
+		public override Expression DoResolveLValue (ResolveContext rc, Expression right_side)
 		{
-			return GetHoistedVariable (rc.CurrentAnonymousMethod);
-		}
-
-		public HoistedVariable GetHoistedVariable (EmitContext ec)
-		{
-			return GetHoistedVariable (ec.CurrentAnonymousMethod);
-		}
+			if (IsLockedByStatement) {
+				rc.Report.Warning (728, 2, loc,
+					"Possibly incorrect assignment to `{0}' which is the argument to a using or lock statement",
+					Name);
+			}
 
-		public override string GetSignatureForError ()
-		{
-			return Name;
+			return this;
 		}
 
 		public override void Emit (EmitContext ec)
@@ -4435,39 +4668,40 @@ namespace Mono.CSharp {
 			}
 		}
 
+
+		public HoistedVariable GetHoistedVariable (ResolveContext rc)
+		{
+			return GetHoistedVariable (rc.CurrentAnonymousMethod);
+		}
+
+		public HoistedVariable GetHoistedVariable (EmitContext ec)
+		{
+			return GetHoistedVariable (ec.CurrentAnonymousMethod);
+		}
+
+		public override string GetSignatureForError ()
+		{
+			return Name;
+		}
+
 		public bool IsHoisted {
 			get { return GetHoistedVariable ((AnonymousExpression) null) != null; }
 		}
 	}
 
-	/// <summary>
-	///   Local variables
-	/// </summary>
-	public class LocalVariableReference : VariableReference {
-		readonly string name;
-		public Block Block;
-		public LocalInfo local_info;
-		bool is_readonly;
+	//
+	// Resolved reference to a local variable
+	//
+	public class LocalVariableReference : VariableReference
+	{
+		public LocalVariable local_info;
 
-		public LocalVariableReference (Block block, string name, Location l)
+		public LocalVariableReference (LocalVariable li, Location l)
 		{
-			Block = block;
-			this.name = name;
+			this.local_info = li;
 			loc = l;
 		}
 
-		//
-		// Setting `is_readonly' to false will allow you to create a writable
-		// reference to a read-only variable.  This is used by foreach and using.
-		//
-		public LocalVariableReference (Block block, string name, Location l,
-					       LocalInfo local_info, bool is_readonly)
-			: this (block, name, l)
-		{
-			this.local_info = local_info;
-			this.is_readonly = is_readonly;
-		}
-
 		public override VariableInfo VariableInfo {
 			get { return local_info.VariableInfo; }
 		}
@@ -4477,40 +4711,42 @@ namespace Mono.CSharp {
 			return local_info.HoistedVariant;
 		}
 
+		#region Properties
+
 		//		
 		// A local variable is always fixed
 		//
 		public override bool IsFixed {
-			get { return true; }
+			get {
+				return true;
+			}
 		}
 
-		public override bool IsRef {
-			get { return false; }
+		public override bool IsLockedByStatement {
+			get {
+				return local_info.IsLocked;
+			}
+			set {
+				local_info.IsLocked = value;
+			}
 		}
 
-		public bool IsReadOnly {
-			get { return is_readonly; }
+		public override bool IsRef {
+			get { return false; }
 		}
 
 		public override string Name {
-			get { return name; }
+			get { return local_info.Name; }
 		}
 
+		#endregion
+
 		public bool VerifyAssigned (ResolveContext ec)
 		{
 			VariableInfo variable_info = local_info.VariableInfo;
 			return variable_info == null || variable_info.IsAssigned (ec, loc);
 		}
 
-		void ResolveLocalInfo ()
-		{
-			if (local_info == null) {
-				local_info = Block.GetLocalInfo (Name);
-				type = local_info.VariableType;
-				is_readonly = local_info.ReadOnly;
-			}
-		}
-
 		public override void SetHasAddressTaken ()
 		{
 			local_info.AddressTaken = true;
@@ -4527,12 +4763,8 @@ namespace Mono.CSharp {
 			return CreateExpressionFactoryCall (ec, "Constant", arg);
 		}
 
-		Expression DoResolveBase (ResolveContext ec)
+		void DoResolveBase (ResolveContext ec)
 		{
-			Expression e = Block.GetConstantExpression (Name);
-			if (e != null)
-				return e.Resolve (ec);
-
 			VerifyAssigned (ec);
 
 			//
@@ -4550,43 +4782,24 @@ namespace Mono.CSharp {
 			}
 
 			eclass = ExprClass.Variable;
-			type = local_info.VariableType;
-			return this;
+			type = local_info.Type;
 		}
 
 		protected override Expression DoResolve (ResolveContext ec)
 		{
-			ResolveLocalInfo ();
-			local_info.Used = true;
+			local_info.SetIsUsed ();
 
-			if (type == null && local_info.Type is VarExpr) {
-			    local_info.VariableType = TypeManager.object_type;
-				Error_VariableIsUsedBeforeItIsDeclared (ec.Report, Name);
-			    return null;
-			}
-			
-			return DoResolveBase (ec);
+			DoResolveBase (ec);
+			return this;
 		}
 
 		public override Expression DoResolveLValue (ResolveContext ec, Expression right_side)
 		{
-			ResolveLocalInfo ();
-
 			// is out param
 			if (right_side == EmptyExpression.OutAccess.Instance)
-				local_info.Used = true;
+				local_info.SetIsUsed ();
 
-			// Infer implicitly typed local variable
-			if (type == null) {
-				VarExpr ve = local_info.Type as VarExpr;
-				if (ve != null) {
-					if (!ve.InferType (ec, right_side))
-						return null;
-					type = local_info.VariableType = ve.Type;
-				}
-			}
-						
-			if (is_readonly) {
+			if (local_info.IsReadonly && !ec.HasAny (ResolveContext.Options.FieldInitializerScope | ResolveContext.Options.UsingInitializerScope)) {
 				int code;
 				string msg;
 				if (right_side == EmptyExpression.OutAccess.Instance) {
@@ -4605,12 +4818,14 @@ namespace Mono.CSharp {
 				VariableInfo.SetAssigned (ec);
 			}
 
-			return DoResolveBase (ec);
+			DoResolveBase (ec);
+
+			return base.DoResolveLValue (ec, right_side);
 		}
 
 		public override int GetHashCode ()
 		{
-			return Name.GetHashCode ();
+			return local_info.GetHashCode ();
 		}
 
 		public override bool Equals (object obj)
@@ -4619,7 +4834,7 @@ namespace Mono.CSharp {
 			if (lvr == null)
 				return false;
 
-			return Name == lvr.Name && Block == lvr.Block;
+			return local_info == lvr.local_info;
 		}
 
 		protected override ILocalVariable Variable {
@@ -4633,11 +4848,7 @@ namespace Mono.CSharp {
 
 		protected override void CloneTo (CloneContext clonectx, Expression t)
 		{
-			LocalVariableReference target = (LocalVariableReference) t;
-			
-			target.Block = clonectx.LookupBlock (Block);
-			if (local_info != null)
-				target.local_info = clonectx.LookupVariable (local_info);
+			// Nothing
 		}
 	}
 
@@ -4645,15 +4856,27 @@ namespace Mono.CSharp {
 	///   This represents a reference to a parameter in the intermediate
 	///   representation.
 	/// </summary>
-	public class ParameterReference : VariableReference {
-		readonly ToplevelParameterInfo pi;
+	public class ParameterReference : VariableReference
+	{
+		protected ParametersBlock.ParameterInfo pi;
 
-		public ParameterReference (ToplevelParameterInfo pi, Location loc)
+		public ParameterReference (ParametersBlock.ParameterInfo pi, Location loc)
 		{
 			this.pi = pi;
 			this.loc = loc;
 		}
 
+		#region Properties
+
+		public override bool IsLockedByStatement {
+			get {
+				return pi.IsLocked;
+			}
+			set	{
+				pi.IsLocked = value;
+			}
+		}
+
 		public override bool IsRef {
 			get { return (pi.Parameter.ModFlags & Parameter.Modifier.ISBYREF) != 0; }
 		}
@@ -4691,6 +4914,8 @@ namespace Mono.CSharp {
 			get { return Parameter; }
 		}
 
+		#endregion
+
 		public bool IsAssigned (ResolveContext ec, Location loc)
 		{
 			// HACK: Variables are not captured in probing mode
@@ -4720,42 +4945,24 @@ namespace Mono.CSharp {
 			type = pi.ParameterType;
 			eclass = ExprClass.Variable;
 
-			AnonymousExpression am = ec.CurrentAnonymousMethod;
-			if (am == null)
-				return true;
-
-			Block b = ec.CurrentBlock;
-			while (b != null) {
-				b = b.Toplevel;
-				IParameterData[] p = b.Toplevel.Parameters.FixedParameters;
-				for (int i = 0; i < p.Length; ++i) {
-					if (p [i] != Parameter)
-						continue;
-
-					//
-					// Don't capture local parameters
-					//
-					if (b == ec.CurrentBlock.Toplevel && !am.IsIterator)
-						return true;
-
-					if (IsRef) {
-						ec.Report.Error (1628, loc,
-							"Parameter `{0}' cannot be used inside `{1}' when using `ref' or `out' modifier",
-							Name, am.ContainerType);
-					}
-
-					if (pi.Parameter.HasAddressTaken)
-						AnonymousMethodExpression.Error_AddressOfCapturedVar (ec, this, loc);
-
-					if (ec.IsVariableCapturingRequired && !b.Toplevel.IsExpressionTree) {
-						AnonymousMethodStorey storey = pi.Block.CreateAnonymousMethodStorey (ec);
-						storey.CaptureParameter (ec, this);
-					}
+			//
+			// If we are referencing a parameter from the external block
+			// flag it for capturing
+			//
+			if (ec.MustCaptureVariable (pi)) {
+				if (Parameter.HasAddressTaken)
+					AnonymousMethodExpression.Error_AddressOfCapturedVar (ec, this, loc);
 
-					return true;
+				if (IsRef) {
+					ec.Report.Error (1628, loc,
+						"Parameter `{0}' cannot be used inside `{1}' when using `ref' or `out' modifier",
+						Name, ec.CurrentAnonymousMethod.ContainerType);
 				}
 
-				b = b.Parent;
+				if (ec.IsVariableCapturingRequired && !pi.Block.ParametersBlock.IsExpressionTree) {
+					AnonymousMethodStorey storey = pi.Block.Explicit.CreateAnonymousMethodStorey (ec);
+					storey.CaptureParameter (ec, this);
+				}
 			}
 
 			return true;
@@ -4791,6 +4998,7 @@ namespace Mono.CSharp {
 		protected override void CloneTo (CloneContext clonectx, Expression target)
 		{
 			// Nothing to clone
+			return;
 		}
 
 		public override Expression CreateExpressionTree (ResolveContext ec)
@@ -4830,13 +5038,13 @@ namespace Mono.CSharp {
 			return this;
 		}
 
-		override public Expression DoResolveLValue (ResolveContext ec, Expression right_side)
+		public override Expression DoResolveLValue (ResolveContext ec, Expression right_side)
 		{
 			if (!DoResolveBase (ec))
 				return null;
 
 			SetAssigned (ec);
-			return this;
+			return base.DoResolveLValue (ec, right_side);
 		}
 
 		static public void EmitLdArg (EmitContext ec, int x)
@@ -4916,7 +5124,7 @@ namespace Mono.CSharp {
 			Expression member_expr;
 			var atn = expr as ATypeNameExpression;
 			if (atn != null) {
-				member_expr = atn.LookupNameExpression (ec, true, true);
+				member_expr = atn.LookupNameExpression (ec, MemberLookupRestrictions.InvocableOnly | MemberLookupRestrictions.ReadAccess);
 				if (member_expr != null)
 					member_expr = member_expr.Resolve (ec);
 			} else {
@@ -4934,46 +5142,48 @@ namespace Mono.CSharp {
 				arguments.Resolve (ec, out dynamic_arg);
 
 			TypeSpec expr_type = member_expr.Type;
-			mg = member_expr as MethodGroupExpr;
-
-			bool dynamic_member = expr_type == InternalType.Dynamic;
-
-			if (!dynamic_member) {
-				Expression invoke = null;
-
-				if (mg == null) {
-					if (expr_type != null && TypeManager.IsDelegateType (expr_type)) {
-						invoke = new DelegateInvocation (member_expr, arguments, loc);
-						invoke = invoke.Resolve (ec);
-						if (invoke == null || !dynamic_arg)
-							return invoke;
-					} else {
-						MemberExpr me = member_expr as MemberExpr;
-						if (me == null) {
-							member_expr.Error_UnexpectedKind (ec, ResolveFlags.MethodGroup, loc);
-							return null;
-						}
+			if (expr_type == InternalType.Dynamic)
+				return DoResolveDynamic (ec, member_expr);
 
-						ec.Report.Error (1955, loc, "The member `{0}' cannot be used as method or delegate",
-								member_expr.GetSignatureForError ());
+			mg = member_expr as MethodGroupExpr;
+			Expression invoke = null;
+
+			if (mg == null) {
+				if (expr_type != null && TypeManager.IsDelegateType (expr_type)) {
+					invoke = new DelegateInvocation (member_expr, arguments, loc);
+					invoke = invoke.Resolve (ec);
+					if (invoke == null || !dynamic_arg)
+						return invoke;
+				} else {
+					if (member_expr is RuntimeValueExpression) {
+						ec.Report.Error (Report.RuntimeErrorId, loc, "Cannot invoke a non-delegate type `{0}'",
+							member_expr.Type.GetSignatureForError ()); ;
 						return null;
 					}
-				}
 
-				if (invoke == null) {
-					mg = DoResolveOverload (ec);
-					if (mg == null)
+					MemberExpr me = member_expr as MemberExpr;
+					if (me == null) {
+						member_expr.Error_UnexpectedKind (ec, ResolveFlags.MethodGroup, loc);
 						return null;
+					}
+
+					ec.Report.Error (1955, loc, "The member `{0}' cannot be used as method or delegate",
+							member_expr.GetSignatureForError ());
+					return null;
 				}
 			}
 
-			if (dynamic_arg || dynamic_member)
+			if (invoke == null) {
+				mg = DoResolveOverload (ec);
+				if (mg == null)
+					return null;
+			}
+
+			if (dynamic_arg)
 				return DoResolveDynamic (ec, member_expr);
 
 			var method = mg.BestCandidate;
-			if (method != null) {
-				type = method.ReturnType;
-			}
+			type = mg.BestCandidateReturnType;
 		
 			if (arguments == null && method.DeclaringType == TypeManager.object_type && method.Name == Destructor.MetadataName) {
 				if (mg.IsBase)
@@ -4985,14 +5195,11 @@ namespace Mono.CSharp {
 
 			IsSpecialMethodInvocation (ec, method, loc);
 			
-			if (mg.InstanceExpression != null)
-				mg.InstanceExpression.CheckMarshalByRefAccess (ec);
-
 			eclass = ExprClass.Value;
 			return this;
 		}
 
-		Expression DoResolveDynamic (ResolveContext ec, Expression memberExpr)
+		protected virtual Expression DoResolveDynamic (ResolveContext ec, Expression memberExpr)
 		{
 			Arguments args;
 			DynamicMemberBinder dmb = memberExpr as DynamicMemberBinder;
@@ -5027,7 +5234,12 @@ namespace Mono.CSharp {
 					if (left_type != null) {
 						args.Insert (0, new Argument (new TypeOf (left_type, loc).Resolve (ec), Argument.AType.DynamicTypeName));
 					} else {
-						args.Insert (0, new Argument (ma.LeftExpression.Resolve (ec)));
+						//
+						// Any value type has to be pass as by-ref to get back the same
+						// instance on which the member was called
+						//
+						var mod = TypeManager.IsValueType (ma.LeftExpression.Type) ? Argument.AType.Ref : Argument.AType.None;
+						args.Insert (0, new Argument (ma.LeftExpression.Resolve (ec), mod));
 					}
 				} else {	// is SimpleName
 					if (ec.IsStatic) {
@@ -5046,7 +5258,7 @@ namespace Mono.CSharp {
 			return mg.OverloadResolve (ec, ref arguments, null, OverloadResolver.Restrictions.None);
 		}
 
-		static Type[] GetVarargsTypes (MethodSpec mb, Arguments arguments)
+		static MetaType[] GetVarargsTypes (MethodSpec mb, Arguments arguments)
 		{
 			AParametersCollection pd = mb.Parameters;
 
@@ -5111,7 +5323,7 @@ namespace Mono.CSharp {
 			//
 			// It's non-virtual and will never be null
 			//
-			if (!method.IsVirtual && (instance is This || instance is New || instance is ArrayCreation || instance is DelegateCreation || instance is TypeOf))
+			if (!method.IsVirtual && (instance is This || instance is New || instance is ArrayCreation || instance is DelegateCreation))
 				return false;
 
 			return true;
@@ -5218,15 +5430,26 @@ namespace Mono.CSharp {
 				}
 			}
 
-			if (!omit_args && Arguments != null)
-				Arguments.Emit (ec, dup_args, this_arg);
+			if (!omit_args && Arguments != null) {
+				var dup_arg_exprs = Arguments.Emit (ec, dup_args);
+				if (dup_args) {
+					this_arg.Emit (ec);
+					LocalTemporary lt;
+					foreach (var dup in dup_arg_exprs) {
+						dup.Emit (ec);
+						lt = dup as LocalTemporary;
+						if (lt != null)
+							lt.Release (ec);
+					}
+				}
+			}
 
 			if (call_op == OpCodes.Callvirt && (iexpr_type.IsGenericParameter || iexpr_type.IsStruct)) {
 				ec.Emit (OpCodes.Constrained, iexpr_type);
 			}
 
 			if (method.Parameters.HasArglist) {
-				Type[] varargs_types = GetVarargsTypes (method, Arguments);
+				var varargs_types = GetVarargsTypes (method, Arguments);
 				ec.Emit (call_op, method, varargs_types);
 				return;
 			}
@@ -5263,16 +5486,21 @@ namespace Mono.CSharp {
 
 		public static SLE.Expression MakeExpression (BuilderContext ctx, Expression instance, MethodSpec mi, Arguments args)
 		{
+#if STATIC
+			throw new NotSupportedException ();
+#else
 			var instance_expr = instance == null ? null : instance.MakeExpression (ctx);
 			return SLE.Expression.Call (instance_expr, (MethodInfo) mi.GetMetaInfo (), Arguments.MakeExpression (args, ctx));
+#endif
 		}
 	}
 
-	/// <summary>
-	///    Implements the new expression 
-	/// </summary>
-	public class New : ExpressionStatement, IMemoryLocation {
-		protected Arguments Arguments;
+	//
+	// Implements simple new expression 
+	//
+	public class New : ExpressionStatement, IMemoryLocation
+	{
+		protected Arguments arguments;
 
 		//
 		// During bootstrap, it contains the RequestedType,
@@ -5286,45 +5514,63 @@ namespace Mono.CSharp {
 		public New (Expression requested_type, Arguments arguments, Location l)
 		{
 			RequestedType = requested_type;
-			Arguments = arguments;
+			this.arguments = arguments;
 			loc = l;
 		}
 
+		#region Properties
+		public Arguments Arguments {
+			get {
+				return arguments;
+			}
+		}
+
+		//
+		// Returns true for resolved `new S()'
+		//
+		public bool IsDefaultStruct {
+			get {
+				return arguments == null && type.IsStruct && GetType () == typeof (New);
+			}
+		}
+
+		#endregion
+
 		/// <summary>
 		/// Converts complex core type syntax like 'new int ()' to simple constant
 		/// </summary>
-		public static Constant Constantify (TypeSpec t)
+		public static Constant Constantify (TypeSpec t, Location loc)
 		{
 			if (t == TypeManager.int32_type)
-				return new IntConstant (0, Location.Null);
+				return new IntConstant (0, loc);
 			if (t == TypeManager.uint32_type)
-				return new UIntConstant (0, Location.Null);
+				return new UIntConstant (0, loc);
 			if (t == TypeManager.int64_type)
-				return new LongConstant (0, Location.Null);
+				return new LongConstant (0, loc);
 			if (t == TypeManager.uint64_type)
-				return new ULongConstant (0, Location.Null);
+				return new ULongConstant (0, loc);
 			if (t == TypeManager.float_type)
-				return new FloatConstant (0, Location.Null);
+				return new FloatConstant (0, loc);
 			if (t == TypeManager.double_type)
-				return new DoubleConstant (0, Location.Null);
+				return new DoubleConstant (0, loc);
 			if (t == TypeManager.short_type)
-				return new ShortConstant (0, Location.Null);
+				return new ShortConstant (0, loc);
 			if (t == TypeManager.ushort_type)
-				return new UShortConstant (0, Location.Null);
+				return new UShortConstant (0, loc);
 			if (t == TypeManager.sbyte_type)
-				return new SByteConstant (0, Location.Null);
+				return new SByteConstant (0, loc);
 			if (t == TypeManager.byte_type)
-				return new ByteConstant (0, Location.Null);
+				return new ByteConstant (0, loc);
 			if (t == TypeManager.char_type)
-				return new CharConstant ('\0', Location.Null);
+				return new CharConstant ('\0', loc);
 			if (t == TypeManager.bool_type)
-				return new BoolConstant (false, Location.Null);
+				return new BoolConstant (false, loc);
 			if (t == TypeManager.decimal_type)
-				return new DecimalConstant (0, Location.Null);
+				return new DecimalConstant (0, loc);
 			if (TypeManager.IsEnumType (t))
-				return new EnumConstant (Constantify (EnumSpec.GetUnderlyingType (t)), t);
+				return new EnumConstant (Constantify (EnumSpec.GetUnderlyingType (t), loc), t);
 			if (TypeManager.IsNullableType (t))
-				return Nullable.LiftedNull.Create (t, Location.Null);
+				return Nullable.LiftedNull.Create (t, loc);
 
 			return null;
 		}
@@ -5347,7 +5593,7 @@ namespace Mono.CSharp {
 			if (real_class == null)
 				return null;
 
-			New proxy = new New (new TypeExpression (real_class, loc), Arguments, loc);
+			New proxy = new New (new TypeExpression (real_class, loc), arguments, loc);
 			Cast cast = new Cast (new TypeExpression (type, loc), proxy, loc);
 			return cast.Resolve (ec);
 		}
@@ -5360,7 +5606,7 @@ namespace Mono.CSharp {
 				args.Add (new Argument (new TypeOf (new TypeExpression (type, loc), loc)));
 			} else {
 				args = Arguments.CreateForExpressionTree (ec,
-					Arguments, new TypeOfMethod (method, loc));
+					arguments, new TypeOfMethod (method, loc));
 			}
 
 			return CreateExpressionFactoryCall (ec, "New", args);
@@ -5381,38 +5627,34 @@ namespace Mono.CSharp {
 				return null;
 			}
 
-			if (Arguments == null) {
-				Constant c = Constantify (type);
+			if (arguments == null) {
+				Constant c = Constantify (type, RequestedType.Location);
 				if (c != null)
 					return ReducedExpression.Create (c.Resolve (ec), this);
 			}
 
 			if (TypeManager.IsDelegateType (type)) {
-				return (new NewDelegate (type, Arguments, loc)).Resolve (ec);
+				return (new NewDelegate (type, arguments, loc)).Resolve (ec);
 			}
 
 			var tparam = type as TypeParameterSpec;
 			if (tparam != null) {
-				if (!tparam.HasSpecialConstructor && !tparam.HasSpecialStruct) {
+				//
+				// Check whether the type of type parameter can be constructed. BaseType can be a struct for method overrides
+				// where type parameter constraint is inflated to struct
+				//
+				if ((tparam.SpecialConstraint & (SpecialConstraint.Struct | SpecialConstraint.Constructor)) == 0 && !tparam.BaseType.IsStruct) {
 					ec.Report.Error (304, loc,
 						"Cannot create an instance of the variable type `{0}' because it does not have the new() constraint",
 						TypeManager.CSharpName (type));
 				}
 
-				if ((Arguments != null) && (Arguments.Count != 0)) {
+				if ((arguments != null) && (arguments.Count != 0)) {
 					ec.Report.Error (417, loc,
 						"`{0}': cannot provide arguments when creating an instance of a variable type",
 						TypeManager.CSharpName (type));
 				}
 
-				if (TypeManager.activator_create_instance == null) {
-					TypeSpec activator_type = TypeManager.CoreLookupType (ec.Compiler, "System", "Activator", MemberKind.Class, true);
-					if (activator_type != null) {
-						TypeManager.activator_create_instance = TypeManager.GetPredefinedMethod (
-							activator_type, MemberFilter.Method ("CreateInstance", 1, ParametersCompiled.EmptyReadOnlyParameters, null), loc);
-					}
-				}
-
 				return this;
 			}
 
@@ -5437,21 +5679,21 @@ namespace Mono.CSharp {
 			//
 			// Any struct always defines parameterless constructor
 			//
-			if (type.IsStruct && Arguments == null)
+			if (type.IsStruct && arguments == null)
 				return this;
 
 			bool dynamic;
-			if (Arguments != null) {
-				Arguments.Resolve (ec, out dynamic);
+			if (arguments != null) {
+				arguments.Resolve (ec, out dynamic);
 			} else {
 				dynamic = false;
 			}
 
-			method = ConstructorLookup (ec, type, ref Arguments, loc);
+			method = ConstructorLookup (ec, type, ref arguments, loc);
 
 			if (dynamic) {
-				Arguments.Insert (0, new Argument (new TypeOf (texpr, loc).Resolve (ec), Argument.AType.DynamicTypeName));
-				return new DynamicConstructorBinder (type, Arguments, loc).Resolve (ec);
+				arguments.Insert (0, new Argument (new TypeOf (texpr, loc).Resolve (ec), Argument.AType.DynamicTypeName));
+				return new DynamicConstructorBinder (type, arguments, loc).Resolve (ec);
 			}
 
 			return this;
@@ -5459,6 +5701,16 @@ namespace Mono.CSharp {
 
 		bool DoEmitTypeParameter (EmitContext ec)
 		{
+			var activator = ec.MemberContext.Module.PredefinedTypes.Activator;
+			var t = activator.Resolve (loc);
+			if (t == null)
+				return true;
+
+			if (TypeManager.activator_create_instance == null) {
+				TypeManager.activator_create_instance = TypeManager.GetPredefinedMethod (
+					t, MemberFilter.Method ("CreateInstance", 1, ParametersCompiled.EmptyReadOnlyParameters, null), loc);
+			}
+
 			var ctor_factory = TypeManager.activator_create_instance.MakeGenericMethod (type);
 			var tparam = (TypeParameterSpec) type;
 
@@ -5532,8 +5784,8 @@ namespace Mono.CSharp {
 				vr.EmitLoad (ec);
 			}
 			
-			if (Arguments != null)
-				Arguments.Emit (ec);
+			if (arguments != null)
+				arguments.Emit (ec);
 
 			if (is_value_type) {
 				if (method == null) {
@@ -5578,12 +5830,6 @@ namespace Mono.CSharp {
 				ec.Emit (OpCodes.Pop);
 		}
 
-		public virtual bool HasInitializer {
-			get {
-				return false;
-			}
-		}
-
 		public void AddressOf (EmitContext ec, AddressOp mode)
 		{
 			EmitAddressOf (ec, mode);
@@ -5615,8 +5861,8 @@ namespace Mono.CSharp {
 			if (method == null) {
 				ec.Emit (OpCodes.Initobj, type);
 			} else {
-				if (Arguments != null)
-					Arguments.Emit (ec);
+				if (arguments != null)
+					arguments.Emit (ec);
 
 				ec.Emit (OpCodes.Call, method);
 			}
@@ -5630,20 +5876,31 @@ namespace Mono.CSharp {
 			New target = (New) t;
 
 			target.RequestedType = RequestedType.Clone (clonectx);
-			if (Arguments != null){
-				target.Arguments = Arguments.Clone (clonectx);
+			if (arguments != null){
+				target.arguments = arguments.Clone (clonectx);
 			}
 		}
 
 		public override SLE.Expression MakeExpression (BuilderContext ctx)
 		{
-			return SLE.Expression.New ((ConstructorInfo) method.GetMetaInfo (), Arguments.MakeExpression (Arguments, ctx));
+#if STATIC
+			return base.MakeExpression (ctx);
+#else
+			return SLE.Expression.New ((ConstructorInfo) method.GetMetaInfo (), Arguments.MakeExpression (arguments, ctx));
+#endif
 		}
 	}
 
+	//
+	// Array initializer expression, the expression is allowed in
+	// variable or field initialization only which makes it tricky as
+	// the type has to be infered based on the context either from field
+	// type or variable type (think of multiple declarators)
+	//
 	public class ArrayInitializer : Expression
 	{
 		List<Expression> elements;
+		BlockVariableDeclaration variable;
 
 		public ArrayInitializer (List<Expression> init, Location loc)
 		{
@@ -5652,9 +5909,8 @@ namespace Mono.CSharp {
 		}
 
 		public ArrayInitializer (int count, Location loc)
+			: this (new List<Expression> (count), loc)
 		{
-			elements = new List<Expression> (count);
-			this.loc = loc;
 		}
 
 		public ArrayInitializer (Location loc)
@@ -5662,6 +5918,29 @@ namespace Mono.CSharp {
 		{
 		}
 
+		#region Properties
+
+		public int Count {
+			get { return elements.Count; }
+		}
+
+		public Expression this [int index] {
+			get {
+				return elements [index];
+			}
+		}
+
+		public BlockVariableDeclaration VariableDeclaration {
+			get {
+				return variable;
+			}
+			set {
+				variable = value;
+			}
+		}
+
+		#endregion
+
 		public void Add (Expression expr)
 		{
 			elements.Add (expr);
@@ -5681,24 +5960,30 @@ namespace Mono.CSharp {
 				target.elements.Add (element.Clone (clonectx));
 		}
 
-		public int Count {
-			get { return elements.Count; }
-		}
-
 		protected override Expression DoResolve (ResolveContext rc)
 		{
 			var current_field = rc.CurrentMemberDefinition as FieldBase;
-			return new ArrayCreation (new TypeExpression (current_field.MemberType, current_field.Location), this).Resolve (rc);
+			TypeExpression type;
+			if (current_field != null) {
+				type = new TypeExpression (current_field.MemberType, current_field.Location);
+			} else if (variable != null) {
+				if (variable.TypeExpression is VarExpr) {
+					rc.Report.Error (820, loc, "An implicitly typed local variable declarator cannot use an array initializer");
+					return EmptyExpression.Null;
+				}
+
+				type = new TypeExpression (variable.Variable.Type, variable.Variable.Location);
+			} else {
+				throw new NotImplementedException ("Unexpected array initializer context");
+			}
+
+			return new ArrayCreation (type, this).Resolve (rc);
 		}
 
 		public override void Emit (EmitContext ec)
 		{
 			throw new InternalErrorException ("Missing Resolve call");
 		}
-
-		public Expression this [int index] {
-			get { return elements [index]; }
-		}
 	}
 
 	/// <summary>
@@ -5968,11 +6253,6 @@ namespace Mono.CSharp {
 		//
 		bool ResolveArrayType (ResolveContext ec)
 		{
-			if (requested_base_type is VarExpr) {
-				ec.Report.Error (820, loc, "An implicitly typed local variable declarator cannot use an array initializer");
-				return false;
-			}
-			
 			//
 			// Lookup the type
 			//
@@ -6173,6 +6453,9 @@ namespace Mono.CSharp {
 #if NET_4_0
 		public override SLE.Expression MakeExpression (BuilderContext ctx)
 		{
+#if STATIC
+			return base.MakeExpression (ctx);
+#else
 			var initializers = new SLE.Expression [array_data.Count];
 			for (var i = 0; i < initializers.Length; i++) {
 				if (array_data [i] == null)
@@ -6182,6 +6465,7 @@ namespace Mono.CSharp {
 			}
 
 			return SLE.Expression.NewArrayInit (array_element_type.GetMetaInfo (), initializers);
+#endif
 		}
 #endif
 		//
@@ -6189,10 +6473,13 @@ namespace Mono.CSharp {
 		//
 		void EmitStaticInitializers (EmitContext ec)
 		{
-			// FIXME: This should go to Resolve !
 			if (TypeManager.void_initializearray_array_fieldhandle == null) {
+				var helper = ec.CurrentTypeDefinition.Module.PredefinedTypes.RuntimeHelpers.Resolve (loc);
+				if (helper == null)
+					return;
+
 				TypeManager.void_initializearray_array_fieldhandle = TypeManager.GetPredefinedMethod (
-					TypeManager.runtime_helpers_type, "InitializeArray", loc,
+					helper, "InitializeArray", loc,
 					TypeManager.array_type, TypeManager.runtime_field_handle_type);
 				if (TypeManager.void_initializearray_array_fieldhandle == null)
 					return;
@@ -6201,11 +6488,8 @@ namespace Mono.CSharp {
 			//
 			// First, the static data
 			//
-			FieldBuilder fb;
-			
 			byte [] data = MakeByteBlob ();
-
-			fb = RootContext.MakeStaticData (data);
+			var fb = ec.CurrentTypeDefinition.Module.MakeStaticData (data, loc);
 
 			ec.Emit (OpCodes.Dup);
 			ec.Emit (OpCodes.Ldtoken, fb);
@@ -6360,7 +6644,38 @@ namespace Mono.CSharp {
 	//
 	class ImplicitlyTypedArrayCreation : ArrayCreation
 	{
-		TypeInferenceContext best_type_inference;
+		sealed class InferenceContext : TypeInferenceContext
+		{
+			class ExpressionBoundInfo : BoundInfo
+			{
+				readonly Expression expr;
+
+				public ExpressionBoundInfo (Expression expr)
+					: base (expr.Type, BoundKind.Lower)
+				{
+					this.expr = expr;
+				}
+
+				public override bool Equals (BoundInfo other)
+				{
+					// We are using expression not type for conversion check
+					// no optimization based on types is possible
+					return false;
+				}
+
+				public override Expression GetTypeExpression ()
+				{
+					return expr;
+				}
+			}
+
+			public void AddExpression (Expression expr)
+			{
+				AddToBounds (new ExpressionBoundInfo (expr), 0);
+			}
+		}
+
+		InferenceContext best_type_inference;
 
 		public ImplicitlyTypedArrayCreation (ComposedTypeSpecifier rank, ArrayInitializer initializers, Location loc)
 			: base (null, rank, initializers, loc)
@@ -6379,7 +6694,7 @@ namespace Mono.CSharp {
 
 			dimensions = rank.Dimension;
 
-			best_type_inference = new TypeInferenceContext ();
+			best_type_inference = new InferenceContext ();
 
 			if (!ResolveInitializers (ec))
 				return null;
@@ -6423,13 +6738,13 @@ namespace Mono.CSharp {
 		{
 			element = element.Resolve (ec);
 			if (element != null)
-				best_type_inference.AddCommonTypeBound (element.Type);
+				best_type_inference.AddExpression (element);
 
 			return element;
 		}
 	}	
 	
-	public sealed class CompilerGeneratedThis : This
+	sealed class CompilerGeneratedThis : This
 	{
 		public static This Instance = new CompilerGeneratedThis ();
 
@@ -6498,6 +6813,14 @@ namespace Mono.CSharp {
 			get { return "this"; }
 		}
 
+		public override bool IsLockedByStatement {
+			get {
+				return false;
+			}
+			set {
+			}
+		}
+
 		public override bool IsRef {
 			get { return type.IsStruct; }
 		}
@@ -6516,6 +6839,14 @@ namespace Mono.CSharp {
 
 		#endregion
 
+		public void CheckStructThisDefiniteAssignment (ResolveContext rc)
+		{
+			if (variable_info != null && !variable_info.IsAssigned (rc)) {
+				rc.Report.Error (188, loc,
+					"The `this' object cannot be used before all of its fields are assigned to");
+			}
+		}
+
 		protected virtual void Error_ThisNotAvailable (ResolveContext ec)
 		{
 			if (ec.IsStatic && !ec.HasSet (ResolveContext.Options.ConstantScope)) {
@@ -6562,36 +6893,24 @@ namespace Mono.CSharp {
 
 		public virtual void ResolveBase (ResolveContext ec)
 		{
+			eclass = ExprClass.Variable;
+			type = ec.CurrentType;
+
 			if (!IsThisAvailable (ec, false)) {
 				Error_ThisNotAvailable (ec);
+				return;
 			}
 
 			var block = ec.CurrentBlock;
 			if (block != null) {
-				if (block.Toplevel.ThisVariable != null)
-					variable_info = block.Toplevel.ThisVariable.VariableInfo;
+				if (block.ParametersBlock.TopBlock.ThisVariable != null)
+					variable_info = block.ParametersBlock.TopBlock.ThisVariable.VariableInfo;
 
 				AnonymousExpression am = ec.CurrentAnonymousMethod;
 				if (am != null && ec.IsVariableCapturingRequired) {
 					am.SetHasThisAccess ();
 				}
 			}
-
-			eclass = ExprClass.Variable;
-			type = ec.CurrentType;
-		}
-
-		//
-		// Called from Invocation to check if the invocation is correct
-		//
-		public override void CheckMarshalByRefAccess (ResolveContext ec)
-		{
-			if ((variable_info != null) && !(TypeManager.IsStruct (type) && ec.OmitStructFlowAnalysis) &&
-			    !variable_info.IsAssigned (ec)) {
-				ec.Report.Error (188, loc,
-					"The `this' object cannot be used before all of its fields are assigned to");
-				variable_info.SetAssigned (ec);
-			}
 		}
 
 		public override Expression CreateExpressionTree (ResolveContext ec)
@@ -6607,6 +6926,11 @@ namespace Mono.CSharp {
 		protected override Expression DoResolve (ResolveContext ec)
 		{
 			ResolveBase (ec);
+
+			if (variable_info != null && type.IsStruct) {
+				CheckStructThisDefiniteAssignment (ec);
+			}
+
 			return this;
 		}
 
@@ -6617,7 +6941,7 @@ namespace Mono.CSharp {
 			if (variable_info != null)
 				variable_info.SetAssigned (ec);
 
-			if (ec.CurrentType.IsClass){
+			if (type.IsClass){
 				if (right_side == EmptyExpression.UnaryAddress)
 					ec.Report.Error (459, loc, "Cannot take the address of `this' because it is read-only");
 				else if (right_side == EmptyExpression.OutAccess.Instance)
@@ -6672,9 +6996,9 @@ namespace Mono.CSharp {
 		protected override Expression DoResolve (ResolveContext ec)
 		{
 			eclass = ExprClass.Variable;
-			type = TypeManager.runtime_argument_handle_type;
+			type = ec.Module.PredefinedTypes.RuntimeArgumentHandle.Resolve (loc);
 
-			if (ec.HasSet (ResolveContext.Options.FieldInitializerScope) || !ec.CurrentBlock.Toplevel.Parameters.HasArglist) {
+			if (ec.HasSet (ResolveContext.Options.FieldInitializerScope) || !ec.CurrentBlock.ParametersBlock.Parameters.HasArglist) {
 				ec.Report.Error (190, loc,
 					"The __arglist construct is valid only within a variable argument method");
 			}
@@ -6711,12 +7035,12 @@ namespace Mono.CSharp {
 			loc = l;
 		}
 
-		public Type[] ArgumentTypes {
+		public MetaType[] ArgumentTypes {
 		    get {
 				if (Arguments == null)
-					return System.Type.EmptyTypes;
+					return MetaType.EmptyTypes;
 
-		        var retval = new Type [Arguments.Count];
+				var retval = new MetaType[Arguments.Count];
 		        for (int i = 0; i < retval.Length; i++)
 					retval[i] = Arguments[i].Expr.Type.GetMetaInfo ();
 
@@ -6795,7 +7119,15 @@ namespace Mono.CSharp {
 
 		protected override Expression DoResolve (ResolveContext ec)
 		{
-			TypeExpr texpr = QueriedType.ResolveAsTypeTerminal (ec, false);
+			TypeExpr texpr;
+
+			//
+			// Pointer types are allowed without explicit unsafe, they are just tokens
+			//
+			using (ec.Set (ResolveContext.Options.UnsafeScope)) {
+				texpr = QueriedType.ResolveAsTypeTerminal (ec, false);
+			}
+
 			if (texpr == null)
 				return null;
 
@@ -6803,8 +7135,6 @@ namespace Mono.CSharp {
 
 			if (typearg == TypeManager.void_type && !(QueriedType is TypeExpression)) {
 				ec.Report.Error (673, loc, "System.Void cannot be used from C#. Use typeof (void) to get the void type object");
-			} else if (typearg.IsPointer && !ec.IsUnsafe){
-				UnsafeError (ec, loc);
 			} else if (texpr is DynamicTypeExpr) {
 				ec.Report.Error (1962, QueriedType.Location,
 					"The typeof operator cannot be used on the dynamic type");
@@ -6847,24 +7177,6 @@ namespace Mono.CSharp {
 			return false;
 		}
 
-		static bool ContainsTypeParameter (TypeSpec type)
-		{
-			if (type.Kind == MemberKind.TypeParameter)
-				return true;
-
-			var element_container = type as ElementTypeSpec;
-			if (element_container != null)
-				return ContainsTypeParameter (element_container.Element);
-
-			foreach (var t in type.TypeArguments) {
-				if (ContainsTypeParameter (t)) {
-					return true;
-				}
-			}
-
-			return false;
-		}
-
 		public override void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType)
 		{
 			// Target type is not System.Type therefore must be object
@@ -6875,7 +7187,7 @@ namespace Mono.CSharp {
 			if (!(QueriedType is GenericOpenTypeExpr)) {
 				var gt = typearg;
 				while (gt != null) {
-					if (ContainsTypeParameter (gt)) {
+					if (InflatedTypeSpec.ContainsTypeParameter (gt)) {
 						rc.Compiler.Report.Error (416, loc, "`{0}': an attribute argument cannot use type parameters",
 							typearg.GetSignatureForError ());
 						return;
@@ -6917,15 +7229,14 @@ namespace Mono.CSharp {
 		protected override Expression DoResolve (ResolveContext ec)
 		{
 			if (member.IsConstructor) {
-				type = TypeManager.ctorinfo_type;
-				if (type == null)
-					type = TypeManager.ctorinfo_type = TypeManager.CoreLookupType (ec.Compiler, "System.Reflection", "ConstructorInfo", MemberKind.Class, true);
+				type = ec.Module.PredefinedTypes.ConstructorInfo.Resolve (loc);
 			} else {
-				type = TypeManager.methodinfo_type;
-				if (type == null)
-					type = TypeManager.methodinfo_type = TypeManager.CoreLookupType (ec.Compiler, "System.Reflection", "MethodInfo", MemberKind.Class, true);
+				type = ec.Module.PredefinedTypes.MethodInfo.Resolve (loc);
 			}
 
+			if (type == null)
+				return null;
+
 			return base.DoResolve (ec);
 		}
 
@@ -6941,8 +7252,14 @@ namespace Mono.CSharp {
 			get { return "GetMethodFromHandle"; }
 		}
 
-		protected override string RuntimeHandleName {
-			get { return "RuntimeMethodHandle"; }
+		protected override PredefinedType GetDeclaringType (PredefinedTypes types)
+		{
+			return types.MethodBase;
+		}
+
+		protected override PredefinedType GetRuntimeHandle (PredefinedTypes types)
+		{
+			return types.RuntimeMethodHandle;
 		}
 
 		protected override MethodSpec TypeFromHandle {
@@ -6962,10 +7279,6 @@ namespace Mono.CSharp {
 				TypeManager.methodbase_get_type_from_handle_generic = value;
 			}
 		}
-
-		protected override string TypeName {
-			get { return "MethodBase"; }
-		}
 	}
 
 	abstract class TypeOfMember<T> : Expression where T : MemberSpec
@@ -6992,13 +7305,13 @@ namespace Mono.CSharp {
 			var mi = is_generic ? TypeFromHandleGeneric : TypeFromHandle;
 
 			if (mi == null) {
-				TypeSpec t = TypeManager.CoreLookupType (ec.Compiler, "System.Reflection", TypeName, MemberKind.Class, true);
-				TypeSpec handle_type = TypeManager.CoreLookupType (ec.Compiler, "System", RuntimeHandleName, MemberKind.Struct, true);
+				TypeSpec declaring_type = GetDeclaringType (ec.Module.PredefinedTypes).Resolve (loc);
+				TypeSpec handle_type = GetRuntimeHandle (ec.Module.PredefinedTypes).Resolve (loc);
 
-				if (t == null || handle_type == null)
+				if (handle_type == null || declaring_type == null)
 					return null;
 
-				mi = TypeManager.GetPredefinedMethod (t, GetMethodName, loc,
+				mi = TypeManager.GetPredefinedMethod (declaring_type, GetMethodName, loc,
 					is_generic ?
 					new TypeSpec[] { handle_type, TypeManager.runtime_handle_type } :
 					new TypeSpec[] { handle_type } );
@@ -7027,11 +7340,11 @@ namespace Mono.CSharp {
 			ec.Emit (OpCodes.Call, mi);
 		}
 
+		protected abstract PredefinedType GetDeclaringType (PredefinedTypes types);
 		protected abstract string GetMethodName { get; }
-		protected abstract string RuntimeHandleName { get; }
+		protected abstract PredefinedType GetRuntimeHandle (PredefinedTypes types);
 		protected abstract MethodSpec TypeFromHandle { get; set; }
 		protected abstract MethodSpec TypeFromHandleGeneric { get; set; }
-		protected abstract string TypeName { get; }
 	}
 
 	class TypeOfField : TypeOfMember<FieldSpec>
@@ -7043,10 +7356,10 @@ namespace Mono.CSharp {
 
 		protected override Expression DoResolve (ResolveContext ec)
 		{
-			if (TypeManager.fieldinfo_type == null)
-				TypeManager.fieldinfo_type = TypeManager.CoreLookupType (ec.Compiler, "System.Reflection", TypeName, MemberKind.Class, true);
+			type = ec.Module.PredefinedTypes.FieldInfo.Resolve (loc);
+			if (type == null)
+				return null;
 
-			type = TypeManager.fieldinfo_type;
 			return base.DoResolve (ec);
 		}
 
@@ -7056,12 +7369,18 @@ namespace Mono.CSharp {
 			base.Emit (ec);
 		}
 
+		protected override PredefinedType GetDeclaringType (PredefinedTypes types)
+		{
+			return types.FieldInfo;
+		}
+
 		protected override string GetMethodName {
 			get { return "GetFieldFromHandle"; }
 		}
 
-		protected override string RuntimeHandleName {
-			get { return "RuntimeFieldHandle"; }
+		protected override PredefinedType GetRuntimeHandle (PredefinedTypes types)
+		{
+			return types.RuntimeFieldHandle;
 		}
 
 		protected override MethodSpec TypeFromHandle {
@@ -7081,10 +7400,6 @@ namespace Mono.CSharp {
 				TypeManager.fieldinfo_get_field_from_handle_generic = value;
 			}
 		}
-
-		protected override string TypeName {
-			get { return "FieldInfo"; }
-		}
 	}
 
 	/// <summary>
@@ -7175,7 +7490,7 @@ namespace Mono.CSharp {
 		public override FullNamedExpression ResolveAsTypeStep (IMemberContext ec, bool silent)
 		{
 			if (alias == GlobalAlias) {
-				expr = ec.Compiler.GlobalRootNamespace;
+				expr = ec.Module.GlobalRootNamespace;
 				return base.ResolveAsTypeStep (ec, silent);
 			}
 
@@ -7224,7 +7539,7 @@ namespace Mono.CSharp {
 			return alias + "::" + name;
 		}
 
-		public override Expression LookupNameExpression (ResolveContext rc, bool readMode, bool invocableOnly)
+		public override Expression LookupNameExpression (ResolveContext rc, MemberLookupRestrictions restrictions)
 		{
 			return DoResolve (rc);
 		}
@@ -7284,7 +7599,7 @@ namespace Mono.CSharp {
 
 		Expression DoResolveName (ResolveContext rc, Expression right_side)
 		{
-			Expression e = LookupNameExpression (rc, right_side == null, false);
+			Expression e = LookupNameExpression (rc, right_side == null ? MemberLookupRestrictions.ReadAccess : MemberLookupRestrictions.None);
 			if (e == null)
 				return null;
 
@@ -7302,7 +7617,7 @@ namespace Mono.CSharp {
 			return e;
 		}
 
-		public override Expression LookupNameExpression (ResolveContext rc, bool readMode, bool invocableOnly)
+		public override Expression LookupNameExpression (ResolveContext rc, MemberLookupRestrictions restrictions)
 		{
 			var sn = expr as SimpleName;
 			const ResolveFlags flags = ResolveFlags.VariableOrValue | ResolveFlags.Type;
@@ -7315,7 +7630,7 @@ namespace Mono.CSharp {
 			//
 			using (rc.Set (ResolveContext.Options.OmitStructFlowAnalysis)) {
 				if (sn != null) {
-					expr = sn.LookupNameExpression (rc, true, false);
+					expr = sn.LookupNameExpression (rc, MemberLookupRestrictions.ReadAccess | MemberLookupRestrictions.ExactArity);
 
 					// Call resolve on expression which does have type set as we need expression type
 					// TODO: I should probably ensure that the type is always set and leave resolve for the final
@@ -7324,7 +7639,7 @@ namespace Mono.CSharp {
 							expr = expr.Resolve (rc);
 						}
 					} else if (expr is TypeParameterExpr) {
-						expr.Error_UnexpectedKind (rc, flags, expr.Location);
+						expr.Error_UnexpectedKind (rc, flags, sn.Location);
 						expr = null;
 					}
 				} else {
@@ -7355,7 +7670,7 @@ namespace Mono.CSharp {
 			if (expr_type == InternalType.Dynamic) {
 				me = expr as MemberExpr;
 				if (me != null)
-					me.ResolveInstanceExpression (rc);
+					me.ResolveInstanceExpression (rc, null);
 
 				Arguments args = new Arguments (1);
 				args.Add (new Argument (expr));
@@ -7378,7 +7693,7 @@ namespace Mono.CSharp {
 			bool errorMode = false;
 			Expression member_lookup;
 			while (true) {
-				member_lookup = MemberLookup (errorMode ? null : rc, current_type, expr_type, Name, lookup_arity, invocableOnly, loc);
+				member_lookup = MemberLookup (errorMode ? null : rc, current_type, expr_type, Name, lookup_arity, restrictions, loc);
 				if (member_lookup == null) {
 					//
 					// Try to look for extension method when member lookup failed
@@ -7395,7 +7710,7 @@ namespace Mono.CSharp {
 								emg.SetTypeArguments (rc, targs);
 							}
 
-							// TODO: Should it really skip the checks bellow
+							// TODO: it should really skip the checks bellow
 							return emg.Resolve (rc);
 						}
 					}
@@ -7425,7 +7740,7 @@ namespace Mono.CSharp {
 
 				current_type = null;
 				lookup_arity = 0;
-				invocableOnly = false;
+				restrictions &= ~MemberLookupRestrictions.InvocableOnly;
 				errorMode = true;
 			}
 
@@ -7515,17 +7830,29 @@ namespace Mono.CSharp {
 				return null;
 			}
 
-			var nested = MemberCache.FindNestedType (expr_type, Name, Arity);
-			if (nested == null) {
-				if (silent)
-					return null;
+			TypeSpec nested = null;
+			while (expr_type != null) {
+				nested = MemberCache.FindNestedType (expr_type, Name, Arity);
+				if (nested == null) {
+					if (silent)
+						return null;
 
-				Error_IdentifierNotFound (rc, expr_type, Name);
-				return null;
-			}
+					if (expr_type == tnew_expr.Type) {
+						Error_IdentifierNotFound (rc, expr_type, Name);
+						return null;
+					}
+
+					expr_type = tnew_expr.Type;
+					nested = MemberCache.FindNestedType (expr_type, Name, Arity);
+					ErrorIsInaccesible (rc, nested.GetSignatureForError (), loc);
+					break;
+				}
+
+				if (nested.IsAccessible (rc.CurrentType))
+					break;
 
-			if (!nested.IsAccessible (rc.CurrentType ?? InternalType.FakeInternalType)) {
-				ErrorIsInaccesible (rc, nested.GetSignatureForError (), loc);
+				// Keep looking after inaccessible candidate
+				expr_type = nested.DeclaringType.BaseType;
 			}
 			
 			TypeExpr texpr;
@@ -7551,7 +7878,7 @@ namespace Mono.CSharp {
 				return;
 			}
 
-			var any_other_member = MemberLookup (null, rc.CurrentType, expr_type, Name, 0, false, loc);
+			var any_other_member = MemberLookup (null, rc.CurrentType, expr_type, Name, 0, MemberLookupRestrictions.None, loc);
 			if (any_other_member != null) {
 				any_other_member.Error_UnexpectedKind (rc.Compiler.Report, null, "type", loc);
 				return;
@@ -7564,6 +7891,7 @@ namespace Mono.CSharp {
 		protected override void Error_TypeDoesNotContainDefinition (ResolveContext ec, TypeSpec type, string name)
 		{
 			if (RootContext.Version > LanguageVersion.ISO_2 && !ec.Compiler.IsRuntimeBinder && MethodGroupExpr.IsExtensionMethodArgument (expr)) {
+				ec.Report.SymbolRelatedToPreviousError (type);
 				ec.Report.Error (1061, loc,
 					"Type `{0}' does not contain a definition for `{1}' and no extension method `{1}' of type `{0}' could be found (are you missing a using directive or an assembly reference?)",
 					type.GetSignatureForError (), name);
@@ -7688,7 +8016,7 @@ namespace Mono.CSharp {
 			using (ec.With (EmitContext.Options.AllCheckStateFlags, false))
 				Expr.Emit (ec);
 		}
-		
+
 		public override void EmitBranchable (EmitContext ec, Label target, bool on_true)
 		{
 			using (ec.With (EmitContext.Options.AllCheckStateFlags, false))
@@ -7742,7 +8070,7 @@ namespace Mono.CSharp {
 
 			var indexers = MemberCache.FindMembers (type, MemberCache.IndexerNameAlias, false);
 			if (indexers != null || type == InternalType.Dynamic) {
-				return new IndexerExpr (indexers, this);
+				return new IndexerExpr (indexers, type, this);
 			}
 
 			ec.Report.Error (21, loc, "Cannot apply indexing with [] to an expression of type `{0}'",
@@ -7837,8 +8165,8 @@ namespace Mono.CSharp {
 		//
 		ElementAccess ea;
 
-		LocalTemporary temp;
-
+		LocalTemporary temp, expr_copy;
+		Expression[] prepared_arguments;
 		bool prepared;
 		
 		public ArrayAccess (ElementAccess ea_data, Location l)
@@ -7899,10 +8227,7 @@ namespace Mono.CSharp {
 		void LoadArrayAndArguments (EmitContext ec)
 		{
 			ea.Expr.Emit (ec);
-
-			for (int i = 0; i < ea.Arguments.Count; ++i) {
-				ea.Arguments [i].Emit (ec);
-			}
+			ea.Arguments.Emit (ec);
 		}
 
 		public void Emit (EmitContext ec, bool leave_copy)
@@ -7912,7 +8237,19 @@ namespace Mono.CSharp {
 			if (prepared) {
 				ec.EmitLoadFromPtr (type);
 			} else {
-				LoadArrayAndArguments (ec);
+				if (prepared_arguments == null) {
+					LoadArrayAndArguments (ec);
+				} else {
+					expr_copy.Emit (ec);
+					LocalTemporary lt;
+					foreach (var expr in prepared_arguments) {
+						expr.Emit (ec);
+						lt = expr as LocalTemporary;
+						if (lt != null)
+							lt.Release (ec);
+					}
+				}
+
 				ec.EmitArrayLoad (ac);
 			}	
 
@@ -7932,31 +8269,38 @@ namespace Mono.CSharp {
 		{
 			var ac = (ArrayContainer) ea.Expr.Type;
 			TypeSpec t = source.Type;
-			prepared = prepare_for_load;
 
-			if (prepared) {
-				AddressOf (ec, AddressOp.LoadStore);
+			//
+			// When we are dealing with a struct, get the address of it to avoid value copy
+			// Same cannot be done for reference type because array covariance and the
+			// check in ldelema requires to specify the type of array element stored at the index
+			//
+			if (t.IsStruct && ((prepare_for_load && !(source is DynamicExpressionStatement)) || !TypeManager.IsPrimitiveType (t))) {
+				LoadArrayAndArguments (ec);
+				ec.EmitArrayAddress (ac);
+
+				if (prepare_for_load) {
+					ec.Emit (OpCodes.Dup);
+				}
+
+				prepared = true;
+			} else if (prepare_for_load) {
+				ea.Expr.Emit (ec);
 				ec.Emit (OpCodes.Dup);
+
+				expr_copy = new LocalTemporary (ea.Expr.Type);
+				expr_copy.Store (ec);
+				prepared_arguments = ea.Arguments.Emit (ec, true);
 			} else {
 				LoadArrayAndArguments (ec);
+			}
 
-				//
-				// If we are dealing with a struct, get the
-				// address of it, so we can store it.
-				//
-				// The stobj opcode used by value types will need
-				// an address on the stack, not really an array/array
-				// pair
-				//
-				if (ac.Rank == 1 && TypeManager.IsStruct (t) &&
-					(!TypeManager.IsBuiltinOrEnum (t) ||
-					 t == TypeManager.decimal_type)) {
+			source.Emit (ec);
 
-					ec.Emit (OpCodes.Ldelema, t);
-				}
+			if (expr_copy != null) {
+				expr_copy.Release (ec);
 			}
 
-			source.Emit (ec);
 			if (leave_copy) {
 				ec.Emit (OpCodes.Dup);
 				temp = new LocalTemporary (this.type);
@@ -7998,9 +8342,7 @@ namespace Mono.CSharp {
 		public SLE.Expression MakeAssignExpression (BuilderContext ctx, Expression source)
 		{
 #if NET_4_0
-			return SLE.Expression.ArrayAccess (
-				ea.Expr.MakeExpression (ctx),
-				Arguments.MakeExpression (ea.Arguments, ctx));
+			return SLE.Expression.ArrayAccess (ea.Expr.MakeExpression (ctx), MakeExpressionArguments (ctx));
 #else
 			throw new NotImplementedException ();
 #endif
@@ -8008,9 +8350,14 @@ namespace Mono.CSharp {
 
 		public override SLE.Expression MakeExpression (BuilderContext ctx)
 		{
-			return SLE.Expression.ArrayIndex (
-				ea.Expr.MakeExpression (ctx),
-				Arguments.MakeExpression (ea.Arguments, ctx));
+			return SLE.Expression.ArrayIndex (ea.Expr.MakeExpression (ctx), MakeExpressionArguments (ctx));
+		}
+
+		SLE.Expression[] MakeExpressionArguments (BuilderContext ctx)
+		{
+			using (ctx.With (BuilderContext.Options.AllCheckStateFlags, true)) {
+				return Arguments.MakeExpression (ea.Arguments, ctx);
+			}
 		}
 	}
 
@@ -8022,11 +8369,13 @@ namespace Mono.CSharp {
 		LocalTemporary prepared_value;
 		IList<MemberSpec> indexers;
 		Arguments arguments;
+		TypeSpec queried_type;
 		
-		public IndexerExpr (IList<MemberSpec> indexers, ElementAccess ea)
+		public IndexerExpr (IList<MemberSpec> indexers, TypeSpec queriedType, ElementAccess ea)
 			: base (ea.Location)
 		{
 			this.indexers = indexers;
+			this.queried_type = queriedType;
 			this.InstanceExpression = ea.Expr;
 			this.arguments = ea.Arguments;
 		}
@@ -8072,7 +8421,7 @@ namespace Mono.CSharp {
 			if (prepared) {
 				prepared_value.Emit (ec);
 			} else {
-				Invocation.EmitCall (ec, InstanceExpression, Getter, arguments, loc, false, false);
+				Invocation.EmitCall (ec, InstanceExpression, Getter, arguments, loc);
 			}
 
 			if (leave_copy) {
@@ -8088,8 +8437,7 @@ namespace Mono.CSharp {
 			Expression value = source;
 
 			if (prepared) {
-				Invocation.EmitCall (ec, InstanceExpression, Getter,
-					arguments, loc, true, false);
+				Invocation.EmitCall (ec, InstanceExpression, Getter, arguments, loc, true, false);
 
 				prepared_value = new LocalTemporary (type);
 				prepared_value.Store (ec);
@@ -8126,6 +8474,9 @@ namespace Mono.CSharp {
 		
 		public override SLE.Expression MakeAssignExpression (BuilderContext ctx, Expression source)
 		{
+#if STATIC
+			throw new NotSupportedException ();
+#else
 			var value = new[] { source.MakeExpression (ctx) };
 			var args = Arguments.MakeExpression (arguments, ctx).Concat (value);
 #if NET_4_0
@@ -8135,12 +8486,17 @@ namespace Mono.CSharp {
 #else
 			return args.First ();
 #endif
+#endif
 		}
 
 		public override SLE.Expression MakeExpression (BuilderContext ctx)
 		{
+#if STATIC
+			return base.MakeExpression (ctx);
+#else
 			var args = Arguments.MakeExpression (arguments, ctx);
 			return SLE.Expression.Call (InstanceExpression.MakeExpression (ctx), (MethodInfo) Getter.GetMetaInfo (), args);
+#endif
 		}
 
 		protected override Expression OverloadResolve (ResolveContext rc, Expression right_side)
@@ -8162,7 +8518,7 @@ namespace Mono.CSharp {
 				// TODO: Do I need 2 argument sets?
 				best_candidate = res.ResolveMember<IndexerSpec> (rc, ref arguments);
 				if (best_candidate != null)
-					type = best_candidate.MemberType;
+					type = res.BestCandidateReturnType;
 				else if (!res.BestCandidateIsDynamic)
 					return null;
 			}
@@ -8184,7 +8540,7 @@ namespace Mono.CSharp {
 				return new DynamicIndexBinder (args, loc);
 			}
 
-			ResolveInstanceExpression (rc);
+			ResolveInstanceExpression (rc, right_side);
 			CheckProtectedMemberAccess (rc, best_candidate);
 			return this;
 		}
@@ -8209,6 +8565,15 @@ namespace Mono.CSharp {
 			return baseType == null ? null : MemberCache.FindMembers (baseType, MemberCache.IndexerNameAlias, false);
 		}
 
+		IParametersMember OverloadResolver.IBaseMembersProvider.GetOverrideMemberParameters (MemberSpec member)
+		{
+			if (queried_type == member.DeclaringType)
+				return null;
+
+			var filter = new MemberFilter (MemberCache.IndexerNameAlias, 0, MemberKind.Indexer, ((IndexerSpec) member).Parameters, null);
+			return MemberCache.FindMember (queried_type, filter, BindingRestriction.InstanceOnly | BindingRestriction.OverrideOnly) as IParametersMember;
+		}
+
 		MethodGroupExpr OverloadResolver.IBaseMembersProvider.LookupExtensionMethod (ResolveContext rc)
 		{
 			return null;
@@ -8452,7 +8817,11 @@ namespace Mono.CSharp {
 
 		public override SLE.Expression MakeExpression (BuilderContext ctx)
 		{
+#if STATIC
+			return base.MakeExpression (ctx);
+#else
 			return SLE.Expression.Convert (source.MakeExpression (ctx), type.GetMetaInfo (), (MethodInfo) method.GetMetaInfo ());
+#endif
 		}
 	}
 
@@ -8813,9 +9182,9 @@ namespace Mono.CSharp {
 				target = new DynamicMemberBinder (Name, args, loc);
 			} else {
 
-				var member = MemberLookup (ec, ec.CurrentType, t, Name, 0, false, loc);
+				var member = MemberLookup (ec, ec.CurrentType, t, Name, 0, MemberLookupRestrictions.ExactArity, loc);
 				if (member == null) {
-					member = Expression.MemberLookup (null, ec.CurrentType, t, Name, 0, false, loc);
+					member = Expression.MemberLookup (null, ec.CurrentType, t, Name, 0, MemberLookupRestrictions.ExactArity, loc);
 
 					if (member != null) {
 						// TODO: ec.Report.SymbolRelatedToPreviousError (member);
@@ -9012,7 +9381,9 @@ namespace Mono.CSharp {
 						initializer.Resolve (ec);
 						throw new InternalErrorException ("This line should never be reached");
 					} else {
-						if (!ec.CurrentInitializerVariable.Type.ImplementsInterface (TypeManager.ienumerable_type)) {
+						var t = ec.CurrentInitializerVariable.Type;
+						// LAMESPEC: The collection must implement IEnumerable only, no dynamic support
+						if (!t.ImplementsInterface (TypeManager.ienumerable_type, false) && t != InternalType.Dynamic) {
 							ec.Report.Error (1922, loc, "A field or property `{0}' cannot be initialized with a collection " +
 								"object initializer because type `{1}' does not implement `{2}' interface",
 								ec.CurrentInitializerVariable.GetSignatureForError (),
@@ -9213,12 +9584,6 @@ namespace Mono.CSharp {
 
 			return left_on_stack;
 		}
-
-		public override bool HasInitializer {
-			get {
-				return !initializers.IsEmpty;
-			}
-		}
 	}
 
 	public class NewAnonymousType : New
@@ -9249,7 +9614,7 @@ namespace Mono.CSharp {
 
 		AnonymousTypeClass CreateAnonymousType (ResolveContext ec, IList<AnonymousTypeParameter> parameters)
 		{
-			AnonymousTypeClass type = parent.Module.Compiled.GetAnonymousType (parameters);
+			AnonymousTypeClass type = parent.Module.GetAnonymousType (parameters);
 			if (type != null)
 				return type;
 
@@ -9265,7 +9630,7 @@ namespace Mono.CSharp {
 			if (ec.Report.Errors == 0)
 				type.CloseType ();
 
-			parent.Module.Compiled.AddAnonymousType (type);
+			parent.Module.AddAnonymousType (type);
 			return type;
 		}
 
@@ -9278,13 +9643,13 @@ namespace Mono.CSharp {
 			foreach (Property p in anonymous_type.Properties)
 				init.Add (new TypeOfMethod (MemberCache.GetMember (type, p.Get.Spec), loc));
 
-			var ctor_args = new ArrayInitializer (Arguments.Count, loc);
-			foreach (Argument a in Arguments)
+			var ctor_args = new ArrayInitializer (arguments.Count, loc);
+			foreach (Argument a in arguments)
 				ctor_args.Add (a.CreateExpressionTree (ec));
 
 			Arguments args = new Arguments (3);
 			args.Add (new Argument (new TypeOfMethod (method, loc)));
-			args.Add (new Argument (new ArrayCreation (TypeManager.expression_type_expr, ctor_args, loc)));
+			args.Add (new Argument (new ArrayCreation (CreateExpressionTypeExpression (ec, loc), ctor_args, loc)));
 			args.Add (new Argument (new ImplicitlyTypedArrayCreation (init, loc)));
 
 			return CreateExpressionFactoryCall (ec, "New", args);
@@ -9304,7 +9669,7 @@ namespace Mono.CSharp {
 			}
 
 			bool error = false;
-			Arguments = new Arguments (parameters.Count);
+			arguments = new Arguments (parameters.Count);
 			TypeExpression [] t_args = new TypeExpression [parameters.Count];
 			for (int i = 0; i < parameters.Count; ++i) {
 				Expression e = ((AnonymousTypeParameter) parameters [i]).Resolve (ec);
@@ -9313,7 +9678,7 @@ namespace Mono.CSharp {
 					continue;
 				}
 
-				Arguments.Add (new Argument (e));
+				arguments.Add (new Argument (e));
 				t_args [i] = new TypeExpression (e.Type, e.Location);
 			}
 
diff --git a/mcs/mcs/field.cs b/mcs/mcs/field.cs
index af08bc5..4026d96 100644
--- a/mcs/mcs/field.cs
+++ b/mcs/mcs/field.cs
@@ -13,9 +13,17 @@
 
 using System;
 using System.Collections.Generic;
+using System.Runtime.InteropServices;
+
+#if STATIC
+using MetaType = IKVM.Reflection.Type;
+using IKVM.Reflection;
+using IKVM.Reflection.Emit;
+#else
+using MetaType = System.Type;
 using System.Reflection;
 using System.Reflection.Emit;
-using System.Runtime.InteropServices;
+#endif
 
 namespace Mono.CSharp
 {
@@ -147,6 +155,11 @@ namespace Mono.CSharp
 			FieldBuilder.SetCustomAttribute ((ConstructorInfo) ctor.GetMetaInfo (), cdata);
 		}
 
+		public void SetCustomAttribute (MethodSpec ctor, byte[] data)
+		{
+			FieldBuilder.SetCustomAttribute ((ConstructorInfo) ctor.GetMetaInfo (), data);
+		}
+
  		protected override bool CheckBase ()
 		{
  			if (!base.CheckBase ())
@@ -208,19 +221,13 @@ namespace Mono.CSharp
 		public override void Emit ()
 		{
 			if (member_type == InternalType.Dynamic) {
-				Compiler.PredefinedAttributes.Dynamic.EmitAttribute (FieldBuilder);
-			} else {
-				var trans_flags = TypeManager.HasDynamicTypeUsed (member_type);
-				if (trans_flags != null) {
-					var pa = Compiler.PredefinedAttributes.DynamicTransform;
-					if (pa.Constructor != null || pa.ResolveConstructor (Location, ArrayContainer.MakeType (TypeManager.bool_type, 1))) {
-						FieldBuilder.SetCustomAttribute (new CustomAttributeBuilder (pa.Constructor, new object[] { trans_flags }));
-					}
-				}
+				Module.PredefinedAttributes.Dynamic.EmitAttribute (FieldBuilder);
+			} else if (!(Parent is CompilerGeneratedClass) && member_type.HasDynamicElement) {
+				Module.PredefinedAttributes.Dynamic.EmitAttribute (FieldBuilder, member_type, Location);
 			}
 
 			if ((ModFlags & Modifiers.COMPILER_GENERATED) != 0 && !Parent.IsCompilerGenerated)
-				Compiler.PredefinedAttributes.CompilerGenerated.EmitAttribute (FieldBuilder);
+				Module.PredefinedAttributes.CompilerGenerated.EmitAttribute (FieldBuilder);
 
 			if (OptAttributes != null) {
 				OptAttributes.Emit ();
@@ -268,7 +275,7 @@ namespace Mono.CSharp
 			this.memberType = memberType;
 		}
 
-#region Properties
+		#region Properties
 
 		public bool IsReadOnly {
 			get {
@@ -339,8 +346,6 @@ namespace Mono.CSharp
 	{
 		public const string FixedElementName = "FixedElementField";
 		static int GlobalCounter = 0;
-		static object[] ctor_args = new object[] { (short)LayoutKind.Sequential };
-		static FieldInfo[] fi;
 
 		TypeBuilder fixed_buffer_type;
 
@@ -357,6 +362,17 @@ namespace Mono.CSharp
 		{
 		}
 
+		#region Properties
+
+		//
+		// Explicit struct layout set by parent
+		//
+		public CharSet? CharSet {
+			get; set;
+		}		
+
+		#endregion
+
 		public override Constant ConvertInitializer (ResolveContext rc, Constant expr)
 		{
 			return expr.ImplicitConversionRequired (rc, TypeManager.int32_type, Location);
@@ -388,7 +404,6 @@ namespace Mono.CSharp
 				TypeAttributes.NestedPublic | TypeAttributes.Sealed | TypeAttributes.BeforeFieldInit, TypeManager.value_type.GetMetaInfo ());
 
 			fixed_buffer_type.DefineField (FixedElementName, MemberType.GetMetaInfo (), FieldAttributes.Public);
-			RootContext.RegisterCompilerGeneratedType (fixed_buffer_type);
 			
 			FieldBuilder = Parent.TypeBuilder.DefineField (Name, fixed_buffer_type, ModifiersExtensions.FieldAttr (ModFlags));
 			var element_spec = new FieldSpec (null, this, MemberType, FieldBuilder, ModFlags);
@@ -433,69 +448,60 @@ namespace Mono.CSharp
 				return;
 			}
 
-			buffer_size *= type_size;
 			EmitFieldSize (buffer_size);
 
-			Compiler.PredefinedAttributes.UnsafeValueType.EmitAttribute (fixed_buffer_type);
+			Module.PredefinedAttributes.UnsafeValueType.EmitAttribute (fixed_buffer_type);
+			Module.PredefinedAttributes.CompilerGenerated.EmitAttribute (fixed_buffer_type);
+			fixed_buffer_type.CreateType ();
 
 			base.Emit ();
 		}
 
 		void EmitFieldSize (int buffer_size)
 		{
-			CustomAttributeBuilder cab;
 			PredefinedAttribute pa;
+			AttributeEncoder encoder;
 
-			pa = Compiler.PredefinedAttributes.StructLayout;
-			if (pa.Constructor == null &&
-				!pa.ResolveConstructor (Location, TypeManager.short_type))
-					return;
+			pa = Module.PredefinedAttributes.StructLayout;
+			if (pa.Constructor == null && !pa.ResolveConstructor (Location, TypeManager.short_type))
+				return;
 
-			// TODO: It's not cleared
-			if (fi == null) {
-				var field = (FieldSpec) MemberCache.FindMember (pa.Type, MemberFilter.Field ("Size", null), BindingRestriction.DeclaredOnly);
-				fi = new FieldInfo[] { field.GetMetaInfo () };
-			}
+			var char_set_type = Module.PredefinedTypes.CharSet.Resolve (Location);
+			if (char_set_type == null)
+				return;
+
+			var field_size = pa.GetField ("Size", TypeManager.int32_type, Location);
+			var field_charset = pa.GetField ("CharSet", char_set_type, Location);
+			if (field_size == null || field_charset == null)
+				return;
+
+			var char_set = CharSet ?? Module.DefaultCharSet;
+
+			encoder = new AttributeEncoder (false);
+			encoder.Encode ((short)LayoutKind.Sequential);
+			encoder.EncodeNamedArguments (
+				new [] { field_size, field_charset },
+				new Constant [] { new IntConstant (buffer_size, Location), new IntConstant ((int) char_set, Location) }
+			);
+
+			pa.EmitAttribute (fixed_buffer_type, encoder);
 
-			object[] fi_val = new object[] { buffer_size };
-			cab = new CustomAttributeBuilder (pa.Constructor,
-				ctor_args, fi, fi_val);
-			fixed_buffer_type.SetCustomAttribute (cab);
-			
 			//
 			// Don't emit FixedBufferAttribute attribute for private types
 			//
 			if ((ModFlags & Modifiers.PRIVATE) != 0)
 				return;
 
-			pa = Compiler.PredefinedAttributes.FixedBuffer;
-			if (pa.Constructor == null &&
-				!pa.ResolveConstructor (Location, TypeManager.type_type, TypeManager.int32_type))
+			pa = Module.PredefinedAttributes.FixedBuffer;
+			if (pa.Constructor == null && !pa.ResolveConstructor (Location, TypeManager.type_type, TypeManager.int32_type))
 				return;
 
-			cab = new CustomAttributeBuilder (pa.Constructor, new object[] { MemberType.GetMetaInfo (), buffer_size });
-			FieldBuilder.SetCustomAttribute (cab);
-		}
-
-		public void SetCharSet (TypeAttributes ta)
-		{
-			TypeAttributes cta = fixed_buffer_type.Attributes;
-			if ((cta & TypeAttributes.UnicodeClass) != (ta & TypeAttributes.UnicodeClass))
-				SetTypeBuilderCharSet ((cta & ~TypeAttributes.AutoClass) | TypeAttributes.UnicodeClass);
-			else if ((cta & TypeAttributes.AutoClass) != (ta & TypeAttributes.AutoClass))
-				SetTypeBuilderCharSet ((cta & ~TypeAttributes.UnicodeClass) | TypeAttributes.AutoClass);
-			else if (cta == 0 && ta != 0)
-				SetTypeBuilderCharSet (cta & ~(TypeAttributes.UnicodeClass | TypeAttributes.AutoClass));
-		}
+			encoder = new AttributeEncoder (false);
+			encoder.EncodeTypeName (MemberType);
+			encoder.Encode (buffer_size);
+			encoder.EncodeEmptyNamedArguments ();
 
-		void SetTypeBuilderCharSet (TypeAttributes ta)
-		{
-			MethodInfo mi = typeof (TypeBuilder).GetMethod ("SetCharSet", BindingFlags.Instance | BindingFlags.NonPublic);
-			if (mi == null) {
-				Report.RuntimeMissingSupport (Location, "TypeBuilder::SetCharSet");
-			} else {
-				mi.Invoke (fixed_buffer_type, new object [] { ta });
-			}
+			pa.EmitAttribute (FieldBuilder, encoder);
 		}
 	}
 
@@ -573,34 +579,26 @@ namespace Mono.CSharp
 			if (!base.Define ())
 				return false;
 
-			try {
-				Type[] required_modifier = null;
-				if ((ModFlags & Modifiers.VOLATILE) != 0) {
-					if (TypeManager.isvolatile_type == null)
-						TypeManager.isvolatile_type = TypeManager.CoreLookupType (Compiler,
-							"System.Runtime.CompilerServices", "IsVolatile", MemberKind.Class, true);
-
-					if (TypeManager.isvolatile_type != null)
-						required_modifier = new Type[] { TypeManager.isvolatile_type.GetMetaInfo () };
-				}
+			MetaType[] required_modifier = null;
+			if ((ModFlags & Modifiers.VOLATILE) != 0) {
+				var mod = Module.PredefinedTypes.IsVolatile.Resolve (Location);
+				if (mod != null)
+					required_modifier = new MetaType[] { mod.GetMetaInfo () };
+			}
 
-				FieldBuilder = Parent.TypeBuilder.DefineField (
-					Name, member_type.GetMetaInfo (), required_modifier, null, ModifiersExtensions.FieldAttr (ModFlags));
+			FieldBuilder = Parent.TypeBuilder.DefineField (
+				Name, member_type.GetMetaInfo (), required_modifier, null, ModifiersExtensions.FieldAttr (ModFlags));
 
-				spec = new FieldSpec (Parent.Definition, this, MemberType, FieldBuilder, ModFlags);
+			spec = new FieldSpec (Parent.Definition, this, MemberType, FieldBuilder, ModFlags);
 
-				// Don't cache inaccessible fields
-				if ((ModFlags & Modifiers.BACKING_FIELD) == 0) {
-					Parent.MemberCache.AddMember (spec);
-				}
+			// Don't cache inaccessible fields
+			if ((ModFlags & Modifiers.BACKING_FIELD) == 0) {
+				Parent.MemberCache.AddMember (spec);
+			}
 
-				if (initializer != null) {
-					((TypeContainer) Parent).RegisterFieldForInitialization (this,
-						new FieldInitializer (spec, initializer, this));
-				}
-			} catch (ArgumentException) {
-				Report.RuntimeMissingSupport (Location, "`void' or `void*' field type");
-				return false;
+			if (initializer != null) {
+				((TypeContainer) Parent).RegisterFieldForInitialization (this,
+					new FieldInitializer (spec, initializer, this));
 			}
 
 			if (declarators != null) {
diff --git a/mcs/mcs/flowanalysis.cs b/mcs/mcs/flowanalysis.cs
index bc35e35..07c9233 100644
--- a/mcs/mcs/flowanalysis.cs
+++ b/mcs/mcs/flowanalysis.cs
@@ -12,9 +12,6 @@
 using System;
 using System.Text;
 using System.Collections.Generic;
-using System.Reflection;
-using System.Reflection.Emit;
-using System.Diagnostics;
 
 namespace Mono.CSharp
 {
@@ -471,6 +468,7 @@ namespace Mono.CSharp
 			CurrentUsageVector.SetFieldAssigned (vi, name);
 		}
 
+#if DEBUG
 		public override string ToString ()
 		{
 			StringBuilder sb = new StringBuilder ();
@@ -493,6 +491,7 @@ namespace Mono.CSharp
 			sb.Append (")");
 			return sb.ToString ();
 		}
+#endif
 
 		public string Name {
 			get { return String.Format ("{0} ({1}:{2}:{3})", GetType (), id, Type, Location); }
@@ -639,7 +638,7 @@ namespace Mono.CSharp
 	{
 		Iterator iterator;
 		public FlowBranchingIterator (FlowBranching parent, Iterator iterator)
-			: base (parent, BranchingType.Iterator, SiblingType.Block, null, iterator.Location)
+			: base (parent, BranchingType.Iterator, SiblingType.Block, iterator.Block, iterator.Location)
 		{
 			this.iterator = iterator;
 		}
@@ -655,7 +654,7 @@ namespace Mono.CSharp
 	{
 		UsageVector return_origins;
 
-		public FlowBranchingToplevel (FlowBranching parent, ToplevelBlock stmt)
+		public FlowBranchingToplevel (FlowBranching parent, ParametersBlock stmt)
 			: base (parent, BranchingType.Toplevel, SiblingType.Conditional, stmt, stmt.loc)
 		{
 		}
@@ -714,10 +713,10 @@ namespace Mono.CSharp
 		protected override UsageVector Merge ()
 		{
 			for (UsageVector origin = return_origins; origin != null; origin = origin.Next)
-				Block.Toplevel.CheckOutParameters (origin, origin.Location);
+				Block.ParametersBlock.CheckOutParameters (origin, origin.Location);
 
 			UsageVector vector = base.Merge ();
-			Block.Toplevel.CheckOutParameters (vector, Block.loc);
+			Block.ParametersBlock.CheckOutParameters (vector, Block.loc);
 			// Note: we _do_not_ merge in the return origins
 			return vector;
 		}
@@ -1067,17 +1066,6 @@ namespace Mono.CSharp
 			return info;
 		}
 
-		public static TypeInfo GetTypeInfo (TypeContainer tc)
-		{
-			TypeInfo info;
-			if (type_hash.TryGetValue (tc.Definition, out info))
-				return info;
-
-			info = new TypeInfo (tc);
-			type_hash.Add (tc.Definition, info);
-			return info;
-		}
-
 		private TypeInfo (TypeSpec type)
 		{
 			this.Type = type;
@@ -1095,23 +1083,6 @@ namespace Mono.CSharp
 			}
 		}
 
-		private TypeInfo (TypeContainer tc)
-		{
-			this.Type = tc.Definition;
-
-			struct_info = StructInfo.GetStructInfo (tc);
-			if (struct_info != null) {
-				Length = struct_info.Length;
-				TotalLength = struct_info.TotalLength;
-				SubStructInfo = struct_info.StructFields;
-				IsStruct = true;
-			} else {
-				Length = 0;
-				TotalLength = 1;
-				IsStruct = false;
-			}
-		}
-
 		TypeInfo (StructInfo struct_info, int offset)
 		{
 			this.struct_info = struct_info;
@@ -1156,7 +1127,7 @@ namespace Mono.CSharp
 				if (!branching.IsFieldAssigned (vi, field.Name)) {
 					if (field.MemberDefinition is Property.BackingField) {
 						ec.Report.Error (843, loc,
-							"An automatically implemented property `{0}' must be fully assigned before control leaves the constructor. Consider calling default contructor",
+							"An automatically implemented property `{0}' must be fully assigned before control leaves the constructor. Consider calling the default struct contructor from a constructor initializer",
 							field.GetSignatureForError ());
 					} else {
 						ec.Report.Error (171, loc,
@@ -1289,11 +1260,7 @@ namespace Mono.CSharp
 
 			public static StructInfo GetStructInfo (TypeSpec type)
 			{
-				if (!TypeManager.IsValueType (type) || TypeManager.IsEnumType (type) ||
-				    TypeManager.IsBuiltinType (type))
-					return null;
-
-				if (TypeManager.IsGenericParameter (type))
+				if (!type.IsStruct || TypeManager.IsBuiltinType (type))
 					return null;
 
 				StructInfo info;
@@ -1302,15 +1269,6 @@ namespace Mono.CSharp
 
 				return new StructInfo (type);
 			}
-
-			public static StructInfo GetStructInfo (TypeContainer tc)
-			{
-				StructInfo info;
-				if (field_type_hash.TryGetValue (tc.Definition, out info))
-					return info;
-
-				return new StructInfo (tc.Definition);
-			}
 		}
 	}
 
@@ -1341,7 +1299,7 @@ namespace Mono.CSharp
 		// </summary>
 		public readonly bool IsParameter;
 
-		public readonly LocalInfo LocalInfo;
+		public readonly LocalVariable LocalInfo;
 
 		readonly VariableInfo Parent;
 		VariableInfo[] sub_info;
@@ -1389,8 +1347,8 @@ namespace Mono.CSharp
 				sub_info = new VariableInfo [0];
 		}
 
-		public VariableInfo (LocalInfo local_info, int offset)
-			: this (local_info.Name, local_info.VariableType, offset)
+		public VariableInfo (LocalVariable local_info, int offset)
+			: this (local_info.Name, local_info.Type, offset)
 		{
 			this.LocalInfo = local_info;
 			this.IsParameter = false;
@@ -1405,7 +1363,7 @@ namespace Mono.CSharp
 		public bool IsAssigned (ResolveContext ec)
 		{
 			return !ec.DoFlowAnalysis ||
-				ec.OmitStructFlowAnalysis && TypeInfo.IsStruct ||
+				(ec.OmitStructFlowAnalysis && TypeInfo.Type.IsStruct) ||
 				ec.CurrentBranching.IsAssigned (this);
 		}
 
@@ -1738,7 +1696,7 @@ namespace Mono.CSharp
 		public void SetRange (int offset, int length)
 		{
 			if (offset > Count || offset + length > Count)
-				throw new ArgumentOutOfRangeException ();
+				throw new ArgumentOutOfRangeException ("flow-analysis");
 
 			if (shared == null && vector == null)
 				return;
diff --git a/mcs/mcs/generic.cs b/mcs/mcs/generic.cs
index e05c459..3ef2984 100644
--- a/mcs/mcs/generic.cs
+++ b/mcs/mcs/generic.cs
@@ -11,13 +11,20 @@
 // Copyright 2004-2008 Novell, Inc
 //
 using System;
-using System.Reflection;
-using System.Reflection.Emit;
-using System.Globalization;
 using System.Collections.Generic;
 using System.Text;
 using System.Linq;
-	
+
+#if STATIC
+using MetaType = IKVM.Reflection.Type;
+using IKVM.Reflection;
+using IKVM.Reflection.Emit;
+#else
+using MetaType = System.Type;
+using System.Reflection;
+using System.Reflection.Emit;
+#endif
+
 namespace Mono.CSharp {
 	public enum Variance
 	{
@@ -88,17 +95,31 @@ namespace Mono.CSharp {
 
 		#endregion
 
-		bool CheckConflictingInheritedConstraint (TypeSpec ba, TypeSpec bb, IMemberContext context, Location loc)
+		public static bool CheckConflictingInheritedConstraint (TypeParameterSpec spec, TypeSpec bb, IMemberContext context, Location loc)
 		{
-			if (!TypeSpec.IsBaseClass (ba, bb, false) && !TypeSpec.IsBaseClass (bb, ba, false)) {
+			if (spec.HasSpecialClass && bb.IsStruct) {
 				context.Compiler.Report.Error (455, loc,
 					"Type parameter `{0}' inherits conflicting constraints `{1}' and `{2}'",
-					tparam.Value,
-					ba.GetSignatureForError (), bb.GetSignatureForError ());
+					spec.Name, "class", bb.GetSignatureForError ());
+
 				return false;
 			}
 
-			return true;
+			return CheckConflictingInheritedConstraint (spec, spec.BaseType, bb, context, loc);
+		}
+
+		static bool CheckConflictingInheritedConstraint (TypeParameterSpec spec, TypeSpec ba, TypeSpec bb, IMemberContext context, Location loc)
+		{
+			if (ba == bb)
+				return true;
+
+			if (TypeSpec.IsBaseClass (ba, bb, false) || TypeSpec.IsBaseClass (bb, ba, false))
+				return true;
+
+			context.Compiler.Report.Error (455, loc,
+				"Type parameter `{0}' inherits conflicting constraints `{1}' and `{2}'",
+				spec.Name, ba.GetSignatureForError (), bb.GetSignatureForError ());
+			return false;
 		}
 
 		public void CheckGenericConstraints (IMemberContext context)
@@ -210,14 +231,14 @@ namespace Mono.CSharp {
 					//
 					if (constraint_tp.HasTypeConstraint) {
 						if (spec.HasTypeConstraint || spec.HasSpecialStruct) {
-							if (!CheckConflictingInheritedConstraint (spec.BaseType, constraint_tp.BaseType, context, constraint.Location))
+							if (!CheckConflictingInheritedConstraint (spec, constraint_tp.BaseType, context, constraint.Location))
 								continue;
 						} else {
 							for (int ii = 0; ii < tparam_types.Count; ++ii) {
 								if (!tparam_types[ii].HasTypeConstraint)
 									continue;
 
-								if (!CheckConflictingInheritedConstraint (tparam_types[ii].BaseType, constraint_tp.BaseType, context, constraint.Location))
+								if (!CheckConflictingInheritedConstraint (spec, tparam_types[ii].BaseType, constraint_tp.BaseType, context, constraint.Location))
 									break;
 							}
 						}
@@ -333,6 +354,12 @@ namespace Mono.CSharp {
 			}
 		}
 
+		public IAssemblyDefinition DeclaringAssembly {
+			get	{
+				return Module.DeclaringAssembly;
+			}
+		}
+
 		public override string DocCommentHeader {
 			get {
 				throw new InvalidOperationException (
@@ -532,7 +559,12 @@ namespace Mono.CSharp {
 			return MemberName.Name;
 		}
 
-		public MemberCache LoadMembers (TypeSpec declaringType)
+		bool ITypeDefinition.IsInternalAsPublic (IAssemblyDefinition assembly)
+		{
+			throw new NotImplementedException ();
+		}
+
+		public void LoadMembers (TypeSpec declaringType, bool onlyTypes, ref MemberCache cache)
 		{
 			throw new NotSupportedException ("Not supported for compiled definition");
 		}
@@ -587,7 +619,7 @@ namespace Mono.CSharp {
 		//
 		// Creates type owned type parameter
 		//
-		public TypeParameterSpec (TypeSpec declaringType, int index, ITypeDefinition definition, SpecialConstraint spec, Variance variance, Type info)
+		public TypeParameterSpec (TypeSpec declaringType, int index, ITypeDefinition definition, SpecialConstraint spec, Variance variance, MetaType info)
 			: base (MemberKind.TypeParameter, declaringType, definition, info, Modifiers.PUBLIC)
 		{
 			this.variance = variance;
@@ -599,7 +631,7 @@ namespace Mono.CSharp {
 		//
 		// Creates method owned type parameter
 		//
-		public TypeParameterSpec (int index, ITypeDefinition definition, SpecialConstraint spec, Variance variance, Type info)
+		public TypeParameterSpec (int index, ITypeDefinition definition, SpecialConstraint spec, Variance variance, MetaType info)
 			: this (null, index, definition, spec, variance, info)
 		{
 		}
@@ -691,7 +723,17 @@ namespace Mono.CSharp {
 		//
 		public bool IsReferenceType {
 			get {
-				return (spec & SpecialConstraint.Class) != 0 || HasTypeConstraint;
+				if ((spec & SpecialConstraint.Class) != 0 || HasTypeConstraint)
+					return true;
+
+				if (targs != null) {
+					foreach (var ta in targs) {
+						if (TypeManager.IsReferenceType (ta))
+							return true;
+					}
+				}
+
+				return false;
 			}
 		}
 
@@ -743,6 +785,21 @@ namespace Mono.CSharp {
 
 		#endregion
 
+		public void ChangeTypeArgumentToBaseType (int index)
+		{
+			BaseType = targs [index];
+			if (targs.Length == 1) {
+				targs = null;
+			} else {
+				var copy = new TypeSpec[targs.Length - 1];
+				if (index > 0)
+					Array.Copy (targs, copy, index);
+
+				Array.Copy (targs, index + 1, copy, index, targs.Length - index - 1);
+				targs = copy;
+			}
+		}
+
 		public string DisplayDebugInfo ()
 		{
 			var s = GetSignatureForError ();
@@ -927,7 +984,13 @@ namespace Mono.CSharp {
 
 		public static TypeParameterSpec[] InflateConstraints (TypeParameterInflator inflator, TypeParameterSpec[] tparams)
 		{
+			return InflateConstraints (tparams, l => l, inflator);
+		}
+
+		public static TypeParameterSpec[] InflateConstraints<T> (TypeParameterSpec[] tparams, Func<T, TypeParameterInflator> inflatorFactory, T arg)
+		{
 			TypeParameterSpec[] constraints = null;
+			TypeParameterInflator? inflator = null;
 
 			for (int i = 0; i < tparams.Length; ++i) {
 				var tp = tparams[i];
@@ -937,7 +1000,13 @@ namespace Mono.CSharp {
 						Array.Copy (tparams, constraints, constraints.Length);
 					}
 
-					constraints[i] = (TypeParameterSpec) constraints[i].InflateMember (inflator);
+					//
+					// Using a factory to avoid possibly expensive inflator build up
+					//
+					if (inflator == null)
+						inflator = inflatorFactory (arg);
+
+					constraints[i] = (TypeParameterSpec) constraints[i].InflateMember (inflator.Value);
 				}
 			}
 
@@ -955,6 +1024,7 @@ namespace Mono.CSharp {
 				for (int i = 0; i < ifaces.Count; ++i)
 					tps.ifaces.Add (inflator.Inflate (ifaces[i]));
 			}
+
 			if (targs != null) {
 				tps.targs = new TypeSpec[targs.Length];
 				for (int i = 0; i < targs.Length; ++i)
@@ -977,11 +1047,32 @@ namespace Mono.CSharp {
 		protected override void InitializeMemberCache (bool onlyTypes)
 		{
 			cache = new MemberCache ();
+
+			//
+			// For a type parameter the membercache is the union of the sets of members of the types
+			// specified as a primary constraint or secondary constraint
+			//
+			if (BaseType != TypeManager.object_type && BaseType != TypeManager.value_type)
+				cache.AddBaseType (BaseType);
+
 			if (ifaces != null) {
 				foreach (var iface_type in Interfaces) {
 					cache.AddInterface (iface_type);
 				}
 			}
+
+			if (targs != null) {
+				foreach (var ta in targs) {
+					if (ta.BaseType != TypeManager.object_type && ta.BaseType != TypeManager.value_type)
+						cache.AddBaseType (ta.BaseType);
+
+					if (ta.Interfaces != null) {
+						foreach (var iface_type in ta.Interfaces) {
+							cache.AddInterface (iface_type);
+						}
+					}
+				}
+			}
 		}
 
 		public bool IsConvertibleToInterface (TypeSpec iface)
@@ -1030,6 +1121,12 @@ namespace Mono.CSharp {
 			this.type = type;
 		}
 
+		#region Properties
+
+		public TypeSpec TypeInstance {
+			get { return type; }
+		}
+
 		//
 		// Type parameters to inflate
 		//
@@ -1039,13 +1136,15 @@ namespace Mono.CSharp {
 			}
 		}
 
-		public TypeSpec Inflate (TypeSpec ts)
+		#endregion
+
+		public TypeSpec Inflate (TypeSpec type)
 		{
-			var tp = ts as TypeParameterSpec;
+			var tp = type as TypeParameterSpec;
 			if (tp != null)
 				return Inflate (tp);
 
-			var ac = ts as ArrayContainer;
+			var ac = type as ArrayContainer;
 			if (ac != null) {
 				var et = Inflate (ac.Element);
 				if (et != ac.Element)
@@ -1058,95 +1157,80 @@ namespace Mono.CSharp {
 			// When inflating a nested type, inflate its parent first
 			// in case it's using same type parameters (was inflated within the type)
 			//
-			if (ts.IsNested) {
-				var parent = Inflate (ts.DeclaringType);
-				if (ts.DeclaringType != parent) {
-					//
-					// Keep the inflated type arguments
-					// 
-					var targs = ts.TypeArguments;
+			TypeSpec[] targs;
+			int i = 0;
+			if (type.IsNested) {
+				var parent = Inflate (type.DeclaringType);
 
-					//
-					// Parent was inflated, find the same type on inflated type
-					// to use same cache for nested types on same generic parent
-					//
-					// TODO: Should use BindingRestriction.DeclaredOnly or GetMember
-					ts = MemberCache.FindNestedType (parent, ts.Name, targs.Length);
+				//
+				// Keep the inflated type arguments
+				// 
+				targs = type.TypeArguments;
 
-					//
-					// Handle the tricky case where parent shares local type arguments
-					// which means inflating inflated type
-					//
-					// class Test<T> {
-					//		public static Nested<T> Foo () { return null; }
-					//
-					//		public class Nested<U> {}
-					//	}
-					//
-					//  return type of Test<string>.Foo() has to be Test<string>.Nested<string> 
-					//
-					if (targs.Length > 0) {
-						var inflated_targs = new TypeSpec [targs.Length];
-						for (var i = 0; i < targs.Length; ++i)
-							inflated_targs[i] = Inflate (targs[i]);
+				//
+				// Parent was inflated, find the same type on inflated type
+				// to use same cache for nested types on same generic parent
+				//
+				type = MemberCache.FindNestedType (parent, type.Name, type.Arity);
 
-						ts = ts.MakeGenericType (inflated_targs);
-					}
+				//
+				// Handle the tricky case where parent shares local type arguments
+				// which means inflating inflated type
+				//
+				// class Test<T> {
+				//		public static Nested<T> Foo () { return null; }
+				//
+				//		public class Nested<U> {}
+				//	}
+				//
+				//  return type of Test<string>.Foo() has to be Test<string>.Nested<string> 
+				//
+				if (targs.Length > 0) {
+					var inflated_targs = new TypeSpec[targs.Length];
+					for (; i < targs.Length; ++i)
+						inflated_targs[i] = Inflate (targs[i]);
 
-					return ts;
+					type = type.MakeGenericType (inflated_targs);
 				}
-			}
-
-			// Inflate generic type
-			if (ts.Arity > 0)
-				return InflateTypeParameters (ts);
-
-			return ts;
-		}
-
-		public TypeSpec Inflate (TypeParameterSpec tp)
-		{
-			for (int i = 0; i < tparams.Length; ++i)
-				if (tparams [i] == tp)
-					return targs[i];
 
-			// This can happen when inflating nested types
-			// without type arguments specified
-			return tp;
-		}
+				return type;
+			}
 
-		//
-		// Inflates generic types
-		//
-		TypeSpec InflateTypeParameters (TypeSpec type)
-		{
-			var targs = new TypeSpec[type.Arity];
-			var i = 0;
+			// Nothing to do for non-generic type
+			if (type.Arity == 0)
+				return type;
 
-			var gti = type as InflatedTypeSpec;
+			targs = new TypeSpec[type.Arity];
 
 			//
 			// Inflating using outside type arguments, var v = new Foo<int> (), class Foo<T> {}
 			//
-			if (gti != null) {
+			if (type is InflatedTypeSpec) {
 				for (; i < targs.Length; ++i)
-					targs[i] = Inflate (gti.TypeArguments[i]);
+					targs[i] = Inflate (type.TypeArguments[i]);
 
-				return gti.GetDefinition ().MakeGenericType (targs);
+				type = type.GetDefinition ();
+			} else {
+				//
+				// Inflating parent using inside type arguments, class Foo<T> { ITest<T> foo; }
+				//
+				var args = type.MemberDefinition.TypeParameters;
+				foreach (var ds_tp in args)
+					targs[i++] = Inflate (ds_tp);
 			}
 
-			//
-			// Inflating parent using inside type arguments, class Foo<T> { ITest<T> foo; }
-			//
-			var args = type.MemberDefinition.TypeParameters;
-			foreach (var ds_tp in args)
-				targs[i++] = Inflate (ds_tp);
-
 			return type.MakeGenericType (targs);
 		}
 
-		public TypeSpec TypeInstance {
-			get { return type; }
+		public TypeSpec Inflate (TypeParameterSpec tp)
+		{
+			for (int i = 0; i < tparams.Length; ++i)
+				if (tparams [i] == tp)
+					return targs[i];
+
+			// This can happen when inflating nested types
+			// without type arguments specified
+			return tp;
 		}
 	}
 
@@ -1247,11 +1331,6 @@ namespace Mono.CSharp {
 		{
 			return this;
 		}
-
-		public override bool CheckAccessLevel (IMemberContext ds)
-		{
-			return true;
-		}
 	}
 
 	public class InflatedTypeSpec : TypeSpec
@@ -1269,6 +1348,13 @@ namespace Mono.CSharp {
 //			this.state = openType.state;
 			this.open_type = openType;
 			this.targs = targs;
+
+			foreach (var arg in targs) {
+				if (arg.HasDynamicElement || arg == InternalType.Dynamic) {
+					state |= StateFlags.HasDynamicElement;
+					break;
+				}
+			}
 		}
 
 		#region Properties
@@ -1288,8 +1374,7 @@ namespace Mono.CSharp {
 		public TypeParameterSpec[] Constraints {
 			get {
 				if (constraints == null) {
-					var inflator = new TypeParameterInflator (this, MemberDefinition.TypeParameters, targs);
-					constraints = TypeParameterSpec.InflateConstraints (inflator, MemberDefinition.TypeParameters);
+					constraints = TypeParameterSpec.InflateConstraints (MemberDefinition.TypeParameters, l => l.CreateLocalInflator (), this);
 				}
 
 				return constraints;
@@ -1305,15 +1390,6 @@ namespace Mono.CSharp {
 			}
 		}
 
-		public override MemberCache MemberCacheTypes {
-			get {
-				if (cache == null)
-					InitializeMemberCache (true);
-
-				return cache;
-			}
-		}
-
 		//
 		// Types used to inflate the generic  type
 		//
@@ -1325,13 +1401,83 @@ namespace Mono.CSharp {
 
 		#endregion
 
-		Type CreateMetaInfo (TypeParameterMutator mutator)
+		public static bool ContainsTypeParameter (TypeSpec type)
+		{
+			if (type.Kind == MemberKind.TypeParameter)
+				return true;
+
+			var element_container = type as ElementTypeSpec;
+			if (element_container != null)
+				return ContainsTypeParameter (element_container.Element);
+
+			foreach (var t in type.TypeArguments) {
+				if (ContainsTypeParameter (t)) {
+					return true;
+				}
+			}
+
+			return false;
+		}
+
+		TypeParameterInflator CreateLocalInflator ()
+		{
+			TypeParameterSpec[] tparams_full;
+			TypeSpec[] targs_full = targs;
+			if (IsNested) {
+				//
+				// Special case is needed when we are inflating an open type (nested type definition)
+				// on inflated parent. Consider following case
+				//
+				// Foo<T>.Bar<U> => Foo<string>.Bar<U>
+				//
+				// Any later inflation of Foo<string>.Bar<U> has to also inflate T if used inside Bar<U>
+				//
+				List<TypeSpec> merged_targs = null;
+				List<TypeParameterSpec> merged_tparams = null;
+
+				var type = DeclaringType;
+
+				do {
+					if (type.TypeArguments.Length > 0) {
+						if (merged_targs == null) {
+							merged_targs = new List<TypeSpec> ();
+							merged_tparams = new List<TypeParameterSpec> ();
+							if (targs.Length > 0) {
+								merged_targs.AddRange (targs);
+								merged_tparams.AddRange (open_type.MemberDefinition.TypeParameters);
+							}
+						}
+						merged_tparams.AddRange (type.MemberDefinition.TypeParameters);
+						merged_targs.AddRange (type.TypeArguments);
+					}
+					type = type.DeclaringType;
+				} while (type != null);
+
+				if (merged_targs != null) {
+					// Type arguments are not in the right order but it should not matter in this case
+					targs_full = merged_targs.ToArray ();
+					tparams_full = merged_tparams.ToArray ();
+				} else if (targs.Length == 0) {
+					tparams_full = TypeParameterSpec.EmptyTypes;
+				} else {
+					tparams_full = open_type.MemberDefinition.TypeParameters;
+				}
+			} else if (targs.Length == 0) {
+				tparams_full = TypeParameterSpec.EmptyTypes;
+			} else {
+				tparams_full = open_type.MemberDefinition.TypeParameters;
+			}
+
+			return new TypeParameterInflator (this, tparams_full, targs_full);
+		}
+
+		MetaType CreateMetaInfo (TypeParameterMutator mutator)
 		{
 			//
 			// Converts nested type arguments into right order
 			// Foo<string, bool>.Bar<int> => string, bool, int
 			//
-			var all = new List<Type> ();
+			var all = new List<MetaType> ();
 			TypeSpec type = this;
 			TypeSpec definition = type;
 			do {
@@ -1372,7 +1518,7 @@ namespace Mono.CSharp {
 			return open_type;
 		}
 
-		public override Type GetMetaInfo ()
+		public override MetaType GetMetaInfo ()
 		{
 			if (info == null)
 				info = CreateMetaInfo (null);
@@ -1401,54 +1547,7 @@ namespace Mono.CSharp {
 			if (cache == null)
 				cache = new MemberCache (onlyTypes ? open_type.MemberCacheTypes : open_type.MemberCache);
 
-			TypeParameterSpec[] tparams_full;
-			TypeSpec[] targs_full = targs;
-			if (IsNested) {
-				//
-				// Special case is needed when we are inflating an open type (nested type definition)
-				// on inflated parent. Consider following case
-				//
-				// Foo<T>.Bar<U> => Foo<string>.Bar<U>
-				//
-				// Any later inflation of Foo<string>.Bar<U> has to also inflate T if used inside Bar<U>
-				//
-				List<TypeSpec> merged_targs = null;
-				List<TypeParameterSpec> merged_tparams = null;
-
-				var type = DeclaringType;
-
-				do {
-					if (type.TypeArguments.Length > 0) {
-						if (merged_targs == null) {
-							merged_targs = new List<TypeSpec> ();
-							merged_tparams = new List<TypeParameterSpec> ();
-							if (targs.Length > 0) {
-								merged_targs.AddRange (targs);
-								merged_tparams.AddRange (open_type.MemberDefinition.TypeParameters);
-							}
-						}
-						merged_tparams.AddRange (type.MemberDefinition.TypeParameters);
-						merged_targs.AddRange (type.TypeArguments);
-					}
-					type = type.DeclaringType;
-				} while (type != null);
-
-				if (merged_targs != null) {
-					// Type arguments are not in the right order but it should not matter in this case
-					targs_full = merged_targs.ToArray ();
-					tparams_full = merged_tparams.ToArray ();
-				} else if (targs.Length == 0) {
-					tparams_full = TypeParameterSpec.EmptyTypes;
-				} else {
-					tparams_full = open_type.MemberDefinition.TypeParameters;
-				}
-			} else if (targs.Length == 0) {
-				tparams_full = TypeParameterSpec.EmptyTypes;
-			} else {
-				tparams_full = open_type.MemberDefinition.TypeParameters;
-			}
-
-			var inflator = new TypeParameterInflator (this, tparams_full, targs_full);
+			var inflator = CreateLocalInflator ();
 
 			//
 			// Two stage inflate due to possible nested types recursive
@@ -1782,16 +1881,7 @@ namespace Mono.CSharp {
 			if (constraints == null)
 				return true;
 
-			return ConstraintChecker.CheckAll (ec, open_type, args.Arguments, constraints, loc);
-		}
-	
-		public override bool CheckAccessLevel (IMemberContext mc)
-		{
-			DeclSpace c = mc.CurrentMemberDefinition as DeclSpace;
-			if (c == null)
-				c = mc.CurrentMemberDefinition.Parent;
-
-			return c.CheckAccessLevel (open_type);
+			return new ConstraintChecker(ec).CheckAll (open_type, args.Arguments, constraints, loc);
 		}
 
 		public bool HasDynamicArguments ()
@@ -1858,23 +1948,48 @@ namespace Mono.CSharp {
 		}
 	}
 
-	static class ConstraintChecker
+	struct ConstraintChecker
 	{
+		IMemberContext mc;
+		bool ignore_inferred_dynamic;
+
+		public ConstraintChecker (IMemberContext ctx)
+		{
+			this.mc = ctx;
+			ignore_inferred_dynamic = false;
+		}
+
+		#region Properties
+
+		public bool IgnoreInferredDynamic {
+			get {
+				return ignore_inferred_dynamic;
+			}
+			set {
+				ignore_inferred_dynamic = value;
+			}
+		}
+
+		#endregion
+
 		//
 		// Checks all type arguments againts type parameters constraints
 		// NOTE: It can run in probing mode when `mc' is null
 		//
-		public static bool CheckAll (IMemberContext mc, MemberSpec context, TypeSpec[] targs, TypeParameterSpec[] tparams, Location loc)
+		public bool CheckAll (MemberSpec context, TypeSpec[] targs, TypeParameterSpec[] tparams, Location loc)
 		{
 			for (int i = 0; i < tparams.Length; i++) {
-				if (!CheckConstraint (mc, context, targs [i], tparams [i], loc))
+				if (ignore_inferred_dynamic && targs[i] == InternalType.Dynamic)
+					continue;
+
+				if (!CheckConstraint (context, targs [i], tparams [i], loc))
 					return false;
 			}
 
 			return true;
 		}
 
-		static bool CheckConstraint (IMemberContext mc, MemberSpec context, TypeSpec atype, TypeParameterSpec tparam, Location loc)
+		bool CheckConstraint (MemberSpec context, TypeSpec atype, TypeParameterSpec tparam, Location loc)
 		{
 			//
 			// First, check the `class' and `struct' constraints.
@@ -1902,9 +2017,18 @@ namespace Mono.CSharp {
 			bool ok = true;
 
 			//
-			// The class constraint comes next.
+			// Check the class constraint
 			//
 			if (tparam.HasTypeConstraint) {
+				var dep = tparam.BaseType.GetMissingDependencies ();
+				if (dep != null) {
+					if (mc == null)
+						return false;
+
+					ImportedTypeDefinition.Error_MissingDependency (mc, dep, loc);
+					ok = false;
+				}
+
 				if (!CheckConversion (mc, context, atype, tparam, tparam.BaseType, loc)) {
 					if (mc == null)
 						return false;
@@ -1914,7 +2038,7 @@ namespace Mono.CSharp {
 			}
 
 			//
-			// Now, check the interfaces and type parameters constraints
+			// Check the interfaces constraints
 			//
 			if (tparam.Interfaces != null) {
 				if (TypeManager.IsNullableType (atype)) {
@@ -1927,6 +2051,19 @@ namespace Mono.CSharp {
 					ok = false;
 				} else {
 					foreach (TypeSpec iface in tparam.Interfaces) {
+						var dep = iface.GetMissingDependencies ();
+						if (dep != null) {
+							if (mc == null)
+								return false;
+
+							ImportedTypeDefinition.Error_MissingDependency (mc, dep, loc);
+							ok = false;
+
+							// return immediately to avoid duplicate errors because we are scanning
+							// expanded interface list
+							return false;
+						}
+
 						if (!CheckConversion (mc, context, atype, tparam, iface, loc)) {
 							if (mc == null)
 								return false;
@@ -1938,6 +2075,20 @@ namespace Mono.CSharp {
 			}
 
 			//
+			// Check the type parameter constraint
+			//
+			if (tparam.TypeArguments != null) {
+				foreach (var ta in tparam.TypeArguments) {
+					if (!CheckConversion (mc, context, atype, tparam, ta, loc)) {
+						if (mc == null)
+							return false;
+
+						ok = false;
+					}
+				}
+			}
+
+			//
 			// Finally, check the constructor constraint.
 			//
 			if (!tparam.HasSpecialConstructor)
@@ -1956,22 +2107,58 @@ namespace Mono.CSharp {
 			return ok;
 		}
 
-		static bool CheckConversion (IMemberContext mc, MemberSpec context, TypeSpec atype, TypeParameterSpec tparam, TypeSpec ttype, Location loc)
+		static bool HasDynamicTypeArgument (TypeSpec[] targs)
 		{
-			var expr = new EmptyExpression (atype);
-			if (Convert.ImplicitStandardConversionExists (expr, ttype))
+			for (int i = 0; i < targs.Length; ++i) {
+				var targ = targs [i];
+				if (targ == InternalType.Dynamic)
+					return true;
+
+				if (HasDynamicTypeArgument (targ.TypeArguments))
+					return true;
+			}
+
+			return false;
+		}
+
+		bool CheckConversion (IMemberContext mc, MemberSpec context, TypeSpec atype, TypeParameterSpec tparam, TypeSpec ttype, Location loc)
+		{
+			if (TypeManager.IsValueType (atype)) {
+				if (atype == ttype || Convert.ImplicitBoxingConversion (null, atype, ttype) != null)
+					return true;
+			} else {
+				var expr = new EmptyExpression (atype);
+
+				if (atype.IsGenericParameter) {
+					if (Convert.ImplicitTypeParameterConversion (expr, ttype) != null)
+						return true;
+				}
+
+				if (Convert.ImplicitStandardConversionExists (expr, ttype))
+					return true;
+			}
+
+			//
+			// When partial/full type inference finds a dynamic type argument delay
+			// the constraint check to runtime, it can succeed for real underlying
+			// dynamic type
+			//
+			if (ignore_inferred_dynamic && HasDynamicTypeArgument (ttype.TypeArguments))
 				return true;
 
 			if (mc != null) {
 				mc.Compiler.Report.SymbolRelatedToPreviousError (tparam);
 				if (TypeManager.IsValueType (atype)) {
-					mc.Compiler.Report.Error (315, loc, "The type `{0}' cannot be used as type parameter `{1}' in the generic type or method `{2}'. There is no boxing conversion from `{0}' to `{3}'",
+					mc.Compiler.Report.Error (315, loc,
+						"The type `{0}' cannot be used as type parameter `{1}' in the generic type or method `{2}'. There is no boxing conversion from `{0}' to `{3}'",
 						atype.GetSignatureForError (), tparam.GetSignatureForError (), context.GetSignatureForError (), ttype.GetSignatureForError ());
 				} else if (atype.IsGenericParameter) {
-					mc.Compiler.Report.Error (314, loc, "The type `{0}' cannot be used as type parameter `{1}' in the generic type or method `{2}'. There is no boxing or type parameter conversion from `{0}' to `{3}'",
+					mc.Compiler.Report.Error (314, loc,
+						"The type `{0}' cannot be used as type parameter `{1}' in the generic type or method `{2}'. There is no boxing or type parameter conversion from `{0}' to `{3}'",
 						atype.GetSignatureForError (), tparam.GetSignatureForError (), context.GetSignatureForError (), ttype.GetSignatureForError ());
 				} else {
-					mc.Compiler.Report.Error (311, loc, "The type `{0}' cannot be used as type parameter `{1}' in the generic type or method `{2}'. There is no implicit reference conversion from `{0}' to `{3}'",
+					mc.Compiler.Report.Error (311, loc,
+						"The type `{0}' cannot be used as type parameter `{1}' in the generic type or method `{2}'. There is no implicit reference conversion from `{0}' to `{3}'",
 						atype.GetSignatureForError (), tparam.GetSignatureForError (), context.GetSignatureForError (), ttype.GetSignatureForError ());
 				}
 			}
@@ -1979,7 +2166,7 @@ namespace Mono.CSharp {
 			return false;
 		}
 
-		static bool HasDefaultConstructor (TypeSpec atype)
+		bool HasDefaultConstructor (TypeSpec atype)
 		{
 			var tp = atype as TypeParameterSpec;
 			if (tp != null) {
@@ -2053,7 +2240,7 @@ namespace Mono.CSharp {
 			}
 		}
 
-		public override TypeBuilder DefineType ()
+		public override void DefineType ()
 		{
 			throw new Exception ();
 		}
@@ -2076,25 +2263,26 @@ namespace Mono.CSharp {
 		{
 			TypeParameterName[] names = MemberName.TypeArguments.GetDeclarations ();
 			string[] snames = new string [names.Length];
+			var block = m.Block;
 			for (int i = 0; i < names.Length; i++) {
 				string type_argument_name = names[i].Name;
-				int idx = parameters.GetParameterIndexByName (type_argument_name);
 
-				if (idx >= 0) {
-					var b = m.Block;
-					if (b == null)
-						b = new ToplevelBlock (Compiler, Location);
+				if (block == null) {
+					int idx = parameters.GetParameterIndexByName (type_argument_name);
+					if (idx >= 0) {
+						var b = m.Block;
+						if (b == null)
+							b = new ToplevelBlock (Compiler, Location);
 
-					b.Error_AlreadyDeclaredTypeParameter (parameters [i].Location,
-						type_argument_name, "method parameter");
+						b.Error_AlreadyDeclaredTypeParameter (type_argument_name, parameters[i].Location);
+					}
+				} else {
+					INamedBlockVariable variable = null;
+					block.GetLocalName (type_argument_name, m.Block, ref variable);
+					if (variable != null)
+						variable.Block.Error_AlreadyDeclaredTypeParameter (type_argument_name, variable.Location);
 				}
 
-				if (m.Block != null) {
-					var ikv = m.Block.GetKnownVariable (type_argument_name);
-					if (ikv != null)
-						ikv.Block.Error_AlreadyDeclaredTypeParameter (ikv.Location, type_argument_name, "local variable");
-				}
-				
 				snames[i] = type_argument_name;
 			}
 
@@ -2166,76 +2354,34 @@ namespace Mono.CSharp {
 
 			return Variance.None;
 		}
-
-		/// <summary>
-		///   Type inference.  Try to infer the type arguments from `method',
-		///   which is invoked with the arguments `arguments'.  This is used
-		///   when resolving an Invocation or a DelegateInvocation and the user
-		///   did not explicitly specify type arguments.
-		/// </summary>
-		public static int InferTypeArguments (ResolveContext ec, Arguments arguments, ref MethodSpec method)
-		{
-			ATypeInference ti = ATypeInference.CreateInstance (arguments);
-			TypeSpec[] i_args = ti.InferMethodArguments (ec, method);
-			if (i_args == null)
-				return ti.InferenceScore;
-
-			if (i_args.Length == 0)
-				return 0;
-
-			method = method.MakeGenericMethod (i_args);
-			return 0;
-		}
-	}
-
-	abstract class ATypeInference
-	{
-		protected readonly Arguments arguments;
-		protected readonly int arg_count;
-
-		protected ATypeInference (Arguments arguments)
-		{
-			this.arguments = arguments;
-			if (arguments != null)
-				arg_count = arguments.Count;
-		}
-
-		public static ATypeInference CreateInstance (Arguments arguments)
-		{
-			return new TypeInference (arguments);
-		}
-
-		public virtual int InferenceScore {
-			get {
-				return int.MaxValue;
-			}
-		}
-
-		public abstract TypeSpec[] InferMethodArguments (ResolveContext ec, MethodSpec method);
 	}
 
 	//
 	// Implements C# type inference
 	//
-	class TypeInference : ATypeInference
+	class TypeInference
 	{
 		//
 		// Tracks successful rate of type inference
 		//
 		int score = int.MaxValue;
+		readonly Arguments arguments;
+		readonly int arg_count;
 
 		public TypeInference (Arguments arguments)
-			: base (arguments)
 		{
+			this.arguments = arguments;
+			if (arguments != null)
+				arg_count = arguments.Count;
 		}
 
-		public override int InferenceScore {
+		public int InferenceScore {
 			get {
 				return score;
 			}
 		}
 
-		public override TypeSpec[] InferMethodArguments (ResolveContext ec, MethodSpec method)
+		public TypeSpec[] InferMethodArguments (ResolveContext ec, MethodSpec method)
 		{
 			var method_generic_args = method.GenericDefinition.TypeParameters;
 			TypeInferenceContext context = new TypeInferenceContext (method_generic_args);
@@ -2367,14 +2513,14 @@ namespace Mono.CSharp {
 
 	public class TypeInferenceContext
 	{
-		enum BoundKind
+		protected enum BoundKind
 		{
 			Exact	= 0,
 			Lower	= 1,
 			Upper	= 2
 		}
 
-		class BoundInfo : IEquatable<BoundInfo>
+		protected class BoundInfo : IEquatable<BoundInfo>
 		{
 			public readonly TypeSpec Type;
 			public readonly BoundKind Kind;
@@ -2390,9 +2536,14 @@ namespace Mono.CSharp {
 				return Type.GetHashCode ();
 			}
 
+			public virtual Expression GetTypeExpression ()
+			{
+				return new TypeExpression (Type, Location.Null);
+			}
+
 			#region IEquatable<BoundInfo> Members
 
-			public bool Equals (BoundInfo other)
+			public virtual bool Equals (BoundInfo other)
 			{
 				return Type == other.Type && Kind == other.Kind;
 			}
@@ -2400,7 +2551,7 @@ namespace Mono.CSharp {
 			#endregion
 		}
 
-		readonly TypeSpec[] unfixed_types;
+		readonly TypeSpec[] tp_args;
 		readonly TypeSpec[] fixed_types;
 		readonly List<BoundInfo>[] bounds;
 		bool failed;
@@ -2416,9 +2567,9 @@ namespace Mono.CSharp {
 				if (typeArguments [i].IsGenericParameter) {
 					if (bounds == null) {
 						bounds = new List<BoundInfo> [typeArguments.Length];
-						unfixed_types = new TypeSpec [typeArguments.Length];
+						tp_args = new TypeSpec [typeArguments.Length];
 					}
-					unfixed_types [i] = typeArguments [i];
+					tp_args [i] = typeArguments [i];
 				} else {
 					fixed_types [i] = typeArguments [i];
 				}
@@ -2432,8 +2583,8 @@ namespace Mono.CSharp {
 		public TypeInferenceContext ()
 		{
 			fixed_types = new TypeSpec [1];
-			unfixed_types = new TypeSpec [1];
-			unfixed_types[0] = InternalType.Arglist; // it can be any internal type
+			tp_args = new TypeSpec [1];
+			tp_args[0] = InternalType.Arglist; // it can be any internal type
 			bounds = new List<BoundInfo> [1];
 		}
 
@@ -2448,7 +2599,7 @@ namespace Mono.CSharp {
 			AddToBounds (new BoundInfo (type, BoundKind.Lower), 0);
 		}
 
-		void AddToBounds (BoundInfo bound, int index)
+		protected void AddToBounds (BoundInfo bound, int index)
 		{
 			//
 			// Some types cannot be used as type arguments
@@ -2531,7 +2682,7 @@ namespace Mono.CSharp {
 
 		public bool FixAllTypes (ResolveContext ec)
 		{
-			for (int i = 0; i < unfixed_types.Length; ++i) {
+			for (int i = 0; i < tp_args.Length; ++i) {
 				if (!FixType (ec, i))
 					return false;
 			}
@@ -2545,8 +2696,8 @@ namespace Mono.CSharp {
 		// 
 		public bool FixDependentTypes (ResolveContext ec, ref bool fixed_any)
 		{
-			for (int i = 0; i < unfixed_types.Length; ++i) {
-				if (unfixed_types[i] == null)
+			for (int i = 0; i < tp_args.Length; ++i) {
+				if (fixed_types[i] != null)
 					continue;
 
 				if (bounds[i] == null)
@@ -2566,7 +2717,7 @@ namespace Mono.CSharp {
 		//
 		public bool FixIndependentTypeArguments (ResolveContext ec, TypeSpec[] methodParameters, ref bool fixed_any)
 		{
-			var types_to_fix = new List<TypeSpec> (unfixed_types);
+			var types_to_fix = new List<TypeSpec> (tp_args);
 			for (int i = 0; i < methodParameters.Length; ++i) {
 				TypeSpec t = methodParameters[i];
 
@@ -2609,7 +2760,7 @@ namespace Mono.CSharp {
 		public bool FixType (ResolveContext ec, int i)
 		{
 			// It's already fixed
-			if (unfixed_types[i] == null)
+			if (fixed_types[i] != null)
 				throw new InternalErrorException ("Type argument has been already fixed");
 
 			if (failed)
@@ -2620,7 +2771,6 @@ namespace Mono.CSharp {
 				return false;
 
 			if (candidates.Count == 1) {
-				unfixed_types[i] = null;
 				TypeSpec t = candidates[0].Type;
 				if (t == InternalType.Null)
 					return false;
@@ -2655,14 +2805,14 @@ namespace Mono.CSharp {
 
 					if (bound.Kind == BoundKind.Exact || cbound.Kind == BoundKind.Exact) {
 						if (cbound.Kind == BoundKind.Lower) {
-							if (!Convert.ImplicitConversionExists (ec, new TypeExpression (cbound.Type, Location.Null), bound.Type)) {
+							if (!Convert.ImplicitConversionExists (ec, cbound.GetTypeExpression (), bound.Type)) {
 								break;
 							}
 
 							continue;
 						}
 						if (cbound.Kind == BoundKind.Upper) {
-							if (!Convert.ImplicitConversionExists (ec, new TypeExpression (bound.Type, Location.Null), cbound.Type)) {
+							if (!Convert.ImplicitConversionExists (ec, bound.GetTypeExpression (), cbound.Type)) {
 								break;
 							}
 
@@ -2670,7 +2820,7 @@ namespace Mono.CSharp {
 						}
 						
 						if (bound.Kind != BoundKind.Exact) {
-							if (!Convert.ImplicitConversionExists (ec, new TypeExpression (bound.Type, Location.Null), cbound.Type)) {
+							if (!Convert.ImplicitConversionExists (ec, bound.GetTypeExpression (), cbound.Type)) {
 								break;
 							}
 
@@ -2683,11 +2833,11 @@ namespace Mono.CSharp {
 
 					if (bound.Kind == BoundKind.Lower) {
 						if (cbound.Kind == BoundKind.Lower) {
-							if (!Convert.ImplicitConversionExists (ec, new TypeExpression (cbound.Type, Location.Null), bound.Type)) {
+							if (!Convert.ImplicitConversionExists (ec, cbound.GetTypeExpression (), bound.Type)) {
 								break;
 							}
 						} else {
-							if (!Convert.ImplicitConversionExists (ec, new TypeExpression (bound.Type, Location.Null), cbound.Type)) {
+							if (!Convert.ImplicitConversionExists (ec, bound.GetTypeExpression (), cbound.Type)) {
 								break;
 							}
 
@@ -2698,7 +2848,7 @@ namespace Mono.CSharp {
 					}
 
 					if (bound.Kind == BoundKind.Upper) {
-						if (!Convert.ImplicitConversionExists (ec, new TypeExpression (bound.Type, Location.Null), cbound.Type)) {
+						if (!Convert.ImplicitConversionExists (ec, bound.GetTypeExpression (), cbound.Type)) {
 							break;
 						}
 					} else {
@@ -2729,26 +2879,31 @@ namespace Mono.CSharp {
 			if (best_candidate == null)
 				return false;
 
-			unfixed_types[i] = null;
 			fixed_types[i] = best_candidate;
 			return true;
 		}
 		
 		//
 		// Uses inferred or partially infered types to inflate delegate type argument. Returns
-		// null when type parameter was not yet inferres
+		// null when type parameter has not been fixed
 		//
 		public TypeSpec InflateGenericArgument (TypeSpec parameter)
 		{
 			var tp = parameter as TypeParameterSpec;
 			if (tp != null) {
 				//
-				// Type inference work on generic arguments (MVAR) only
+				// Type inference works on generic arguments (MVAR) only
 				//
 				if (!tp.IsMethodOwned)
 					return parameter;
 
-				return fixed_types [tp.DeclaredPosition] ?? parameter;
+				//
+				// Ensure the type parameter belongs to same container
+				//
+				if (tp.DeclaredPosition < tp_args.Length && tp_args[tp.DeclaredPosition] == parameter)
+					return fixed_types[tp.DeclaredPosition] ?? parameter;
+
+				return parameter;
 			}
 
 			var gt = parameter as InflatedTypeSpec;
@@ -2807,10 +2962,13 @@ namespace Mono.CSharp {
 			if (!type.IsGenericParameter)
 				return -1;
 
-			//return unfixed_types[type.GenericParameterPosition] != null;
-			for (int i = 0; i < unfixed_types.Length; ++i) {
-				if (unfixed_types [i] == type)
+			for (int i = 0; i < tp_args.Length; ++i) {
+				if (tp_args[i] == type) {
+					if (fixed_types[i] != null)
+						break;
+
 					return i;
+				}
 			}
 
 			return -1;
@@ -2879,6 +3037,13 @@ namespace Mono.CSharp {
 					if (open_v == t.MemberDefinition)
 						u_candidates.Add (t);
 
+					//
+					// Using this trick for dynamic type inference, the spec says the type arguments are "unknown" but
+					// that would complicate the process a lot, instead I treat them as dynamic
+					//
+					if (t == InternalType.Dynamic)
+						u_candidates.Add (t);
+
 					if (t.Interfaces != null) {
 						foreach (var iface in t.Interfaces) {
 							if (open_v == iface.MemberDefinition)
@@ -2909,7 +3074,21 @@ namespace Mono.CSharp {
 						return 1;
 					}
 
-					unique_candidate_targs = TypeManager.GetTypeArguments (u_candidate);
+					//
+					// A candidate is dynamic type expression, to simplify things use dynamic
+					// for all type parameter of this type. For methods like this one
+					// 
+					// void M<T, U> (IList<T>, IList<U[]>)
+					//
+					// dynamic becomes both T and U when the arguments are of dynamic type
+					//
+					if (u_candidate == InternalType.Dynamic) {
+						unique_candidate_targs = new TypeSpec[ga_v.Length];
+						for (int i = 0; i < unique_candidate_targs.Length; ++i)
+							unique_candidate_targs[i] = u_candidate;
+					} else {
+						unique_candidate_targs = TypeManager.GetTypeArguments (u_candidate);
+					}
 				}
 
 				if (unique_candidate_targs != null) {
@@ -2987,6 +3166,9 @@ namespace Mono.CSharp {
 					if (inflated == null)
 						return 0;
 
+					if (IsUnfixed (inflated) >= 0)
+						return 0;
+
 					param_types[i] = inflated;
 				}
 
@@ -2996,7 +3178,7 @@ namespace Mono.CSharp {
 				if (mg == null)
 					return 0;
 
-				return LowerBoundInference (mg.BestCandidate.ReturnType, rtype) + 1;
+				return LowerBoundInference (mg.BestCandidateReturnType, rtype) + 1;
 			}
 
 			//
@@ -3023,12 +3205,11 @@ namespace Mono.CSharp {
 
 		public bool UnfixedVariableExists {
 			get {
-				if (unfixed_types == null)
-					return false;
-
-				foreach (TypeSpec ut in unfixed_types)
-					if (ut != null)
+				foreach (TypeSpec ut in fixed_types) {
+					if (ut == null)
 						return true;
+				}
+
 				return false;
 			}
 		}
diff --git a/mcs/mcs/gmcs.csproj b/mcs/mcs/gmcs.csproj
index 612d21a..20883e1 100644
--- a/mcs/mcs/gmcs.csproj
+++ b/mcs/mcs/gmcs.csproj
@@ -47,6 +47,7 @@
     <Compile Include="..\class\Mono.CompilerServices.SymbolWriter\MonoSymbolTable.cs" />
     <Compile Include="..\class\Mono.CompilerServices.SymbolWriter\MonoSymbolWriter.cs" />
     <Compile Include="argument.cs" />
+    <Compile Include="assembly.cs" />
     <Compile Include="AssemblyInfo.cs" />
     <Compile Include="anonymous.cs" />
     <Compile Include="assign.cs" />
@@ -86,6 +87,7 @@
     <Compile Include="parameter.cs" />
     <Compile Include="pending.cs" />
     <Compile Include="property.cs" />
+    <Compile Include="reflection.cs" />
     <Compile Include="report.cs" />
     <Compile Include="rootcontext.cs" />
     <Compile Include="roottypes.cs" />
@@ -109,4 +111,4 @@
   <Target Name="AfterBuild">
   </Target>
   -->
-</Project>
\ No newline at end of file
+</Project>
diff --git a/mcs/mcs/gmcs.exe.sources b/mcs/mcs/gmcs.exe.sources
index 03738c5..be9c343 100644
--- a/mcs/mcs/gmcs.exe.sources
+++ b/mcs/mcs/gmcs.exe.sources
@@ -2,6 +2,7 @@ AssemblyInfo.cs
 anonymous.cs
 argument.cs
 assign.cs
+assembly.cs
 attribute.cs
 cs-tokenizer.cs
 cfold.cs
@@ -39,6 +40,7 @@ nullable.cs
 parameter.cs
 pending.cs
 property.cs
+reflection.cs
 report.cs
 rootcontext.cs
 roottypes.cs
diff --git a/mcs/mcs/ikvm.cs b/mcs/mcs/ikvm.cs
new file mode 100644
index 0000000..005e955
--- /dev/null
+++ b/mcs/mcs/ikvm.cs
@@ -0,0 +1,790 @@
+//
+// ikvm.cs: IKVM.Reflection and IKVM.Reflection.Emit specific implementations
+//
+// Author: Marek Safar (marek.safar at gmail.com)
+//
+// Dual licensed under the terms of the MIT X11 or GNU GPL
+//
+// Copyright 2009-2010 Novell, Inc. 
+//
+//
+
+using System;
+using System.Collections.Generic;
+using MetaType = IKVM.Reflection.Type;
+using IKVM.Reflection;
+using IKVM.Reflection.Emit;
+using System.IO;
+using System.Configuration.Assemblies;
+
+namespace Mono.CSharp
+{
+#if !STATIC
+	public class StaticImporter
+	{
+		public StaticImporter (BuildinTypes buildin)
+		{
+			throw new NotSupportedException ();
+		}
+
+		public void ImportAssembly (Assembly assembly, RootNamespace targetNamespace)
+		{
+			throw new NotSupportedException ();
+		}
+
+		public void ImportModule (Module module, RootNamespace targetNamespace)
+		{
+			throw new NotSupportedException ();
+		}
+
+		public TypeSpec ImportType (System.Type type)
+		{
+			throw new NotSupportedException ();
+		}
+	}
+
+#else
+
+	sealed class StaticImporter : MetadataImporter
+	{
+		public StaticImporter ()
+		{
+		}
+
+		protected override MemberKind DetermineKindFromBaseType (MetaType baseType)
+		{
+			string name = baseType.Name;
+
+			if (name == "ValueType" && baseType.Namespace == "System")
+				return MemberKind.Struct;
+
+			if (name == "Enum" && baseType.Namespace == "System")
+				return MemberKind.Enum;
+
+			if (name == "MulticastDelegate" && baseType.Namespace == "System")
+				return MemberKind.Delegate;
+
+			return MemberKind.Class;
+		}
+
+		protected override bool HasVolatileModifier (MetaType[] modifiers)
+		{
+			foreach (var t in modifiers) {
+				if (t.Name == "IsVolatile" && t.Namespace == CompilerServicesNamespace)
+					return true;
+			}
+
+			return false;
+		}
+
+		public override void GetCustomAttributeTypeName (CustomAttributeData cad, out string typeNamespace, out string typeName)
+		{
+			cad.__ReadTypeName (out typeNamespace, out typeName);
+		}
+
+		public void ImportAssembly (Assembly assembly, RootNamespace targetNamespace)
+		{
+			// It can be used more than once when importing same assembly
+			// into 2 or more global aliases
+			var definition = GetAssemblyDefinition (assembly);
+
+			var all_types = assembly.GetTypes ();
+			ImportTypes (all_types, targetNamespace, definition.HasExtensionMethod);
+		}
+
+		public ImportedModuleDefinition ImportModule (Module module, RootNamespace targetNamespace)
+		{
+			var module_definition = new ImportedModuleDefinition (module, this);
+			module_definition.ReadAttributes ();
+
+			var all_types = module.GetTypes ();
+			ImportTypes (all_types, targetNamespace, false);
+
+			return module_definition;
+		}
+
+		public void InitializeBuildinTypes (BuildinTypes buildin, Assembly corlib)
+		{
+			//
+			// Setup mapping for build-in types to avoid duplication of their definition
+			//
+			foreach (var type in buildin.AllTypes) {
+				buildin_types.Add (corlib.GetType (type.FullName), type);
+			}
+		}
+	}
+#endif
+
+	class AssemblyDefinitionStatic : AssemblyDefinition
+	{
+		//
+		// Assembly container with file output
+		//
+		public AssemblyDefinitionStatic (ModuleContainer module, string name, string fileName)
+			: base (module, name, fileName)
+		{
+		}
+
+		//
+		// Initializes the code generator
+		//
+		public bool Create (StaticLoader loader)
+		{
+			ResolveAssemblySecurityAttributes ();
+			var an = CreateAssemblyName ();
+
+			Builder = loader.Domain.DefineDynamicAssembly (an, AssemblyBuilderAccess.Save, Path.GetDirectoryName (file_name));
+
+			if (loader.Corlib != null) {
+				Builder.__SetImageRuntimeVersion (loader.Corlib.ImageRuntimeVersion, 0x20000);
+			} else {
+				// Sets output file metadata version when there is no mscorlib
+				switch (RootContext.StdLibRuntimeVersion) {
+				case RuntimeVersion.v4:
+					Builder.__SetImageRuntimeVersion ("v4.0.30319", 0x20000);
+					break;
+				case RuntimeVersion.v2:
+					Builder.__SetImageRuntimeVersion ("v2.0.50727", 0x20000);
+					break;
+				case RuntimeVersion.v1:
+					// Compiler does not do any checks whether the produced metadata
+					// are valid in the context of 1.0 stream version
+					Builder.__SetImageRuntimeVersion ("v1.1.4322", 0x10000);
+					break;
+				default:
+					throw new NotImplementedException ();
+				}
+			}
+
+			builder_extra = new AssemblyBuilderIKVM (Builder, Compiler);
+			return true;
+		}
+
+		public Module IncludeModule (RawModule moduleFile)
+		{
+			return Builder.__AddModule (moduleFile);
+		}
+
+		protected override void SaveModule (PortableExecutableKinds pekind, ImageFileMachine machine)
+		{
+			module.Builder.__Save (pekind, machine);
+		}
+	}
+
+	class StaticLoader : AssemblyReferencesLoader<Assembly>, IDisposable
+	{
+		readonly StaticImporter importer;
+		readonly Universe domain;
+		Assembly corlib;
+		List<Tuple<AssemblyName, string>> loaded_names;
+		static readonly Dictionary<SdkVersion, string[]> sdk_directory;
+
+		static StaticLoader ()
+		{
+			sdk_directory = new Dictionary<SdkVersion, string[]> ();
+			sdk_directory.Add (SdkVersion.v2, new string[] { "2.0", "net_2_0", "v2.0.50727" });
+			sdk_directory.Add (SdkVersion.v4, new string[] { "4.0", "net_4_0", "v4.0.30319" });
+		}
+
+		public StaticLoader (StaticImporter importer, CompilerContext compiler)
+			: base (compiler)
+		{
+			this.importer = importer;
+			domain = new Universe ();
+			domain.AssemblyResolve += AssemblyReferenceResolver;
+			loaded_names = new List<Tuple<AssemblyName, string>> ();
+
+			var corlib_path = Path.GetDirectoryName (typeof (object).Assembly.Location);
+			string fx_path = corlib_path.Substring (0, corlib_path.LastIndexOf (Path.DirectorySeparatorChar));
+			string sdk_path = null;
+
+			foreach (var dir in sdk_directory[RootContext.SdkVersion]) {
+				sdk_path = Path.Combine (fx_path, dir);
+				if (File.Exists (Path.Combine (sdk_path, "mscorlib.dll")))
+					break;
+
+				sdk_path = null;
+			}
+
+			if (sdk_path == null) {
+				compiler.Report.Warning (-1, 1, "SDK path could not be resolved");
+				sdk_path = corlib_path;
+			}
+
+			paths.Add (sdk_path);
+		}
+
+		public Assembly Corlib {
+			get {
+				return corlib;
+			}
+			set {
+				corlib = value;
+			}
+		}
+
+		public Universe Domain {
+			get {
+				return domain;
+			}
+		}
+
+		Assembly AssemblyReferenceResolver (object sender, IKVM.Reflection.ResolveEventArgs args)
+		{
+			var refname = args.Name;
+			if (refname == "mscorlib")
+				return corlib;
+
+			Assembly version_mismatch = null;
+			foreach (var assembly in domain.GetAssemblies ()) {
+				// TODO: Cannot handle unification into current assembly yet
+				if (assembly is AssemblyBuilder)
+					continue;
+
+				AssemblyComparisonResult result;
+				if (!Fusion.CompareAssemblyIdentityPure (refname, false, assembly.FullName, false, out result)) {
+					if ((result == AssemblyComparisonResult.NonEquivalentVersion || result == AssemblyComparisonResult.NonEquivalentPartialVersion) &&
+						(version_mismatch == null || version_mismatch.GetName ().Version < assembly.GetName ().Version)) {
+						version_mismatch = assembly;
+					}
+
+					continue;
+				}
+
+				if (result == AssemblyComparisonResult.EquivalentFXUnified ||
+					result == AssemblyComparisonResult.EquivalentFullMatch ||
+					result == AssemblyComparisonResult.EquivalentWeakNamed ||
+					result == AssemblyComparisonResult.EquivalentPartialMatch) {
+					return assembly;
+				}
+
+				throw new NotImplementedException ("Assembly equality = " + result.ToString ());
+			}
+
+			if (version_mismatch != null) {
+				var v1 = new AssemblyName (refname).Version;
+				var v2 = version_mismatch.GetName ().Version;
+
+				if (v1 > v2) {
+//					compiler.Report.SymbolRelatedToPreviousError (args.RequestingAssembly.Location);
+					compiler.Report.Error (1705, "Assembly `{0}' references `{1}' which has higher version number than imported assembly `{2}'",
+						args.RequestingAssembly.FullName, refname, version_mismatch.GetName ().FullName);
+				} else if (v1.Major != v2.Major || v1.Minor != v2.Minor) {
+					compiler.Report.Warning (1701, 2,
+						"Assuming assembly reference `{0}' matches assembly `{1}'. You may need to supply runtime policy",
+						refname, version_mismatch.GetName ().FullName);
+				} else {
+					compiler.Report.Warning (1702, 3,
+						"Assuming assembly reference `{0}' matches assembly `{1}'. You may need to supply runtime policy",
+						refname, version_mismatch.GetName ().FullName);
+				}
+
+				return version_mismatch;
+			}
+
+			// AssemblyReference has not been found in the domain
+			// create missing reference and continue
+			return new MissingAssembly (domain, args.Name);
+		}
+
+		public void Dispose ()
+		{
+			domain.Dispose ();
+		}
+
+		protected override string[] GetDefaultReferences ()
+		{
+			//
+			// For now the "default config" is harcoded into the compiler
+			// we can move this outside later
+			//
+			var default_references = new List<string> (4);
+
+			default_references.Add ("System.dll");
+			default_references.Add ("System.Xml.dll");
+
+			if (RootContext.Version > LanguageVersion.ISO_2)
+				default_references.Add ("System.Core.dll");
+			if (RootContext.Version > LanguageVersion.V_3)
+				default_references.Add ("Microsoft.CSharp.dll");
+
+			return default_references.ToArray ();
+		}
+
+		public override bool HasObjectType (Assembly assembly)
+		{
+			return assembly.GetType (compiler.BuildinTypes.Object.FullName) != null;
+		}
+
+		public override Assembly LoadAssemblyFile (string fileName)
+		{
+			bool? has_extension = null;
+			foreach (var path in paths) {
+				var file = Path.Combine (path, fileName);
+				if (!File.Exists (file)) {
+					if (!has_extension.HasValue)
+						has_extension = fileName.EndsWith (".dll", StringComparison.Ordinal) || fileName.EndsWith (".exe", StringComparison.Ordinal);
+
+					if (has_extension.Value)
+						continue;
+
+					file += ".dll";
+					if (!File.Exists (file))
+						continue;
+				}
+
+				try {
+					using (RawModule module = domain.OpenRawModule (file)) {
+						if (!module.IsManifestModule) {
+							Error_AssemblyIsModule (fileName);
+							return null;
+						}
+
+						//
+						// check whether the assembly can be actually imported without
+						// collision
+						//
+						var an = module.GetAssemblyName ();
+						foreach (var entry in loaded_names) {
+							var loaded_name = entry.Item1;
+							if (an.Name != loaded_name.Name)
+								continue;
+
+							if (an.CodeBase == loaded_name.CodeBase)
+								return null;
+							
+							if (((an.Flags | loaded_name.Flags) & AssemblyNameFlags.PublicKey) == 0) {
+								compiler.Report.SymbolRelatedToPreviousError (entry.Item2);
+								compiler.Report.SymbolRelatedToPreviousError (fileName);
+								compiler.Report.Error (1704,
+									"An assembly with the same name `{0}' has already been imported. Consider removing one of the references or sign the assembly",
+									an.Name);
+								return null;
+							}
+
+							if ((an.Flags & AssemblyNameFlags.PublicKey) == (loaded_name.Flags & AssemblyNameFlags.PublicKey) && an.Version.Equals (loaded_name.Version)) {
+								compiler.Report.SymbolRelatedToPreviousError (entry.Item2);
+								compiler.Report.SymbolRelatedToPreviousError (fileName);
+								compiler.Report.Error (1703,
+									"An assembly with the same identity `{0}' has already been imported. Consider removing one of the references",
+									an.FullName);
+								return null;
+							}
+						}
+
+						if (Report.DebugFlags > 0)
+							Console.WriteLine ("Loading assembly `{0}'", fileName);
+
+						loaded_names.Add (Tuple.Create (an, fileName));
+						return domain.LoadAssembly (module);
+					}
+				} catch {
+					Error_FileCorrupted (file);
+					return null;
+				}
+			}
+
+			Error_FileNotFound (fileName);
+			return null;
+		}
+
+		public RawModule LoadModuleFile (string moduleName)
+		{
+			foreach (var path in paths) {
+				var file = Path.Combine (path, moduleName);
+				if (!File.Exists (file)) {
+					if (moduleName.EndsWith (".netmodule", StringComparison.Ordinal))
+						continue;
+
+					file += ".netmodule";
+					if (!File.Exists (file))
+						continue;
+				}
+
+				try {
+					return domain.OpenRawModule (file);
+				} catch {
+					Error_FileCorrupted (file);
+					return null;
+				}
+			}
+
+			Error_FileNotFound (moduleName);
+			return null;				
+		}
+
+		//
+		// Optimized default assembly loader version
+		//
+		public override Assembly LoadAssemblyDefault (string assembly)
+		{
+			foreach (var path in paths) {
+				var file = Path.Combine (path, assembly);
+				if (!File.Exists (file))
+					continue;
+
+				try {
+					if (Report.DebugFlags > 0)
+						Console.WriteLine ("Loading default assembly `{0}'", file);
+
+					var a = domain.LoadFile (file);
+					if (a != null) {
+						loaded_names.Add (Tuple.Create (a.GetName (), assembly));
+					}
+
+					return a;
+				} catch {
+					// Default assemblies can fail to load without error
+					return null;
+				}
+			}
+
+			return null;
+		}
+
+		public override void LoadReferences (ModuleContainer module)
+		{
+			List<Tuple<RootNamespace, Assembly>> loaded;
+			base.LoadReferencesCore (module, out corlib, out loaded);
+
+			if (corlib != null) {
+				importer.InitializeBuildinTypes (compiler.BuildinTypes, corlib);
+				importer.ImportAssembly (corlib, module.GlobalRootNamespace);
+			}
+
+			foreach (var entry in loaded) {
+				importer.ImportAssembly (entry.Item2, entry.Item1);
+			}
+		}
+
+		public void LoadModules (AssemblyDefinitionStatic assembly, RootNamespace targetNamespace)
+		{
+			if (RootContext.Modules.Count == 0)
+				return;
+
+			foreach (var moduleName in RootContext.Modules) {
+				var m = LoadModuleFile (moduleName);
+				if (m == null)
+					continue;
+
+				if (m.IsManifestModule) {
+					Error_FileCorrupted (moduleName);
+					continue;
+				}
+
+				var md = importer.ImportModule (assembly.IncludeModule (m), targetNamespace);
+				assembly.AddModule (md);
+			}
+		}
+	}
+
+	//
+	// Represents missing assembly reference
+	//
+	public class MissingAssembly : Assembly
+	{
+		class MissingModule : Module
+		{
+			readonly Assembly assembly;
+
+			public MissingModule (Universe universe, Assembly assembly)
+				: base (universe)
+			{
+				this.assembly = assembly;
+			}
+
+			public override int MDStreamVersion {
+				get {
+					throw new NotImplementedException ();
+				}
+			}
+
+			public override Assembly Assembly {
+				get {
+					return assembly;
+				}
+			}
+
+			public override string FullyQualifiedName {
+				get {
+					throw new NotImplementedException ();
+				}
+			}
+
+			public override string Name {
+				get {
+					throw new NotImplementedException ();
+				}
+			}
+
+			public override Guid ModuleVersionId {
+				get {
+					throw new NotImplementedException ();
+				}
+			}
+
+			public override MetaType ResolveType (int metadataToken, MetaType[] genericTypeArguments, MetaType[] genericMethodArguments)
+			{
+				throw new NotImplementedException ();
+			}
+
+			public override MethodBase ResolveMethod (int metadataToken, MetaType[] genericTypeArguments, MetaType[] genericMethodArguments)
+			{
+				throw new NotImplementedException ();
+			}
+
+			public override FieldInfo ResolveField (int metadataToken, MetaType[] genericTypeArguments, MetaType[] genericMethodArguments)
+			{
+				throw new NotImplementedException ();
+			}
+
+			public override MemberInfo ResolveMember (int metadataToken, MetaType[] genericTypeArguments, MetaType[] genericMethodArguments)
+			{
+				throw new NotImplementedException ();
+			}
+
+			public override string ResolveString (int metadataToken)
+			{
+				throw new NotImplementedException ();
+			}
+
+			public override MetaType[] __ResolveOptionalParameterTypes (int metadataToken)
+			{
+				throw new NotImplementedException ();
+			}
+
+			public override string ScopeName {
+				get {
+					throw new NotImplementedException ();
+				}
+			}
+
+			internal override MetaType GetTypeImpl (string typeName)
+			{
+				throw new NotImplementedException ();
+			}
+
+			internal override void GetTypesImpl (List<MetaType> list)
+			{
+				throw new NotImplementedException ();
+			}
+
+			public override AssemblyName[] __GetReferencedAssemblies ()
+			{
+				throw new NotImplementedException ();
+			}
+
+			internal override MetaType GetModuleType ()
+			{
+				throw new NotImplementedException ();
+			}
+
+			internal override IKVM.Reflection.Reader.ByteReader GetBlob (int blobIndex)
+			{
+				throw new NotImplementedException ();
+			}
+		}
+
+		readonly string full_name;
+		readonly Module module;
+		Dictionary<string, MetaType> types;
+
+		public MissingAssembly (Universe universe, string fullName)
+			: base (universe)
+		{
+			this.full_name = fullName;
+			this.module = new MissingModule (universe, this);
+			types = new Dictionary<string, MetaType> ();
+		}
+
+		public override MetaType[] GetTypes ()
+		{
+			throw new NotImplementedException ();
+		}
+
+		public override string FullName {
+			get {
+				return full_name;
+			}
+		}
+
+		public override AssemblyName GetName ()
+		{
+			return new AssemblyName (full_name);
+		}
+
+		public override string ImageRuntimeVersion {
+			get {
+				throw new NotImplementedException ();
+			}
+		}
+
+		public override Module ManifestModule {
+			get {
+				return module;
+			}
+		}
+
+		public override MethodInfo EntryPoint {
+			get {
+				throw new NotImplementedException ();
+			}
+		}
+
+		public override string Location {
+			get {
+				throw new NotImplementedException ();
+			}
+		}
+
+		public override AssemblyName[] GetReferencedAssemblies ()
+		{
+			throw new NotImplementedException ();
+		}
+
+		public override Module[] GetModules (bool getResourceModules)
+		{
+			throw new NotImplementedException ();
+		}
+
+		public override Module[] GetLoadedModules (bool getResourceModules)
+		{
+			throw new NotImplementedException ();
+		}
+
+		public override Module GetModule (string name)
+		{
+			throw new NotImplementedException ();
+		}
+
+		public override string[] GetManifestResourceNames ()
+		{
+			throw new NotImplementedException ();
+		}
+
+		public override ManifestResourceInfo GetManifestResourceInfo (string resourceName)
+		{
+			throw new NotImplementedException ();
+		}
+
+		public override Stream GetManifestResourceStream (string resourceName)
+		{
+			throw new NotImplementedException ();
+		}
+
+		internal override MetaType GetTypeImpl (string typeName)
+		{
+			//
+			// We are loading a type from missing reference
+			// this itself is fine. The error will be reported
+			// later when the type is actually used
+			//
+			MetaType t;
+			if (!types.TryGetValue (typeName, out t)) {
+				t = new MissingType (typeName, this);
+				types.Add (typeName, t);
+			}
+
+			return t;
+		}
+
+		internal override IList<CustomAttributeData> GetCustomAttributesData (MetaType attributeType)
+		{
+			throw new NotImplementedException ();
+		}
+	}
+
+	public class MissingType : MetaType
+	{
+		readonly string full_name;
+		readonly MissingAssembly assembly;
+
+		public MissingType (string typeName, MissingAssembly assembly)
+		{
+			this.full_name = typeName;
+			this.assembly = assembly;
+		}
+
+		public override TypeAttributes Attributes {
+			get {
+				// TODO: Don't know yet
+				return TypeAttributes.Public;
+			}
+		}
+
+		public override MetaType BaseType {
+			get {
+				return null;
+			}
+		}
+
+		public override string FullName {
+			get {
+				return full_name;
+			}
+		}
+
+		internal override MetaType GetGenericTypeArgument (int index)
+		{
+			return new MissingType ("#" + index.ToString (), assembly);
+		}
+
+		public override MetaType GetNestedType (string name, BindingFlags bindingAttr)
+		{
+			return new MissingType (full_name + name, assembly);
+		}
+
+		public override bool IsGenericTypeDefinition {
+			get {
+				return full_name.IndexOf ('`') > 0;
+			}
+		}
+
+		public override Module Module {
+			get {
+				return assembly.ManifestModule;
+			}
+		}
+	}
+
+	class AssemblyBuilderIKVM : AssemblyBuilderExtension
+	{
+		readonly AssemblyBuilder builder;
+
+		public AssemblyBuilderIKVM (AssemblyBuilder builder, CompilerContext ctx)
+			: base (ctx)
+		{
+			this.builder = builder;
+		}
+
+		public override void AddTypeForwarder (TypeSpec type, Location loc)
+		{
+			builder.__AddTypeForwarder (type.GetMetaInfo ());
+		}
+
+		public override void DefineWin32IconResource (string fileName)
+		{
+			builder.__DefineIconResource (File.ReadAllBytes (fileName));
+		}
+
+		public override void SetAlgorithmId (uint value, Location loc)
+		{
+			builder.__SetAssemblyAlgorithmId ((AssemblyHashAlgorithm) value);
+		}
+
+		public override void SetCulture (string culture, Location loc)
+		{
+			builder.__SetAssemblyCulture (culture);
+		}
+
+		public override void SetFlags (uint flags, Location loc)
+		{
+			builder.__SetAssemblyFlags ((AssemblyNameFlags) flags);
+		}
+
+		public override void SetVersion (Version version, Location loc)
+		{
+			builder.__SetAssemblyVersion (version);
+		}
+	}
+}
\ No newline at end of file
diff --git a/mcs/mcs/import.cs b/mcs/mcs/import.cs
index 8c4cfa0..84276a6 100644
--- a/mcs/mcs/import.cs
+++ b/mcs/mcs/import.cs
@@ -9,73 +9,141 @@
 //
 
 using System;
-using System.Reflection;
 using System.Runtime.CompilerServices;
 using System.Linq;
 using System.Collections.Generic;
-using System.Diagnostics;
-using System.Runtime.InteropServices;
+
+#if STATIC
+using MetaType = IKVM.Reflection.Type;
+using IKVM.Reflection;
+#else
+using MetaType = System.Type;
+using System.Reflection;
+#endif
 
 namespace Mono.CSharp
 {
-	public class ReflectionMetaImporter
+	public abstract class MetadataImporter
 	{
-		Dictionary<Type, TypeSpec> import_cache;
-		Dictionary<Type, PredefinedTypeSpec> type_2_predefined;
+		//
+		// Dynamic types reader with additional logic to reconstruct a dynamic
+		// type using DynamicAttribute values
+		//
+		struct DynamicTypeReader
+		{
+			static readonly bool[] single_attribute = { true };
+
+			public int Position;
+			bool[] flags;
+
+			// There is no common type for CustomAttributeData and we cannot
+			// use ICustomAttributeProvider
+			object provider;
+
+			//
+			// A member provider which can be used to get CustomAttributeData
+			//
+			public DynamicTypeReader (object provider)
+			{
+				Position = 0;
+				flags = null;
+				this.provider = provider;
+			}
+
+			//
+			// Returns true when object at local position has dynamic attribute flag
+			//
+			public bool IsDynamicObject (MetadataImporter importer)
+			{
+				if (provider != null)
+					ReadAttribute (importer);
+
+				return flags != null && Position < flags.Length && flags[Position];
+			}
+
+			//
+			// Returns true when DynamicAttribute exists
+			//
+			public bool HasDynamicAttribute (MetadataImporter importer)
+			{
+				if (provider != null)
+					ReadAttribute (importer);
+
+				return flags != null;
+			}
+
+			void ReadAttribute (MetadataImporter importer)
+			{
+				IList<CustomAttributeData> cad;
+				if (provider is MemberInfo) {
+					cad = CustomAttributeData.GetCustomAttributes ((MemberInfo) provider);
+				} else if (provider is ParameterInfo) {
+					cad = CustomAttributeData.GetCustomAttributes ((ParameterInfo) provider);
+				} else {
+					provider = null;
+					return;
+				}
 
-		public ReflectionMetaImporter ()
+				if (cad.Count > 0) {
+					string ns, name;
+					foreach (var ca in cad) {
+						importer.GetCustomAttributeTypeName (ca, out ns, out name);
+						if (name != "DynamicAttribute" && ns != CompilerServicesNamespace)
+							continue;
+
+						if (ca.ConstructorArguments.Count == 0) {
+							flags = single_attribute;
+							break;
+						}
+
+						var arg_type = ca.ConstructorArguments[0].ArgumentType;
+
+						if (arg_type.IsArray && MetaType.GetTypeCode (arg_type.GetElementType ()) == TypeCode.Boolean) {
+							var carg = (IList<CustomAttributeTypedArgument>) ca.ConstructorArguments[0].Value;
+							flags = new bool[carg.Count];
+							for (int i = 0; i < flags.Length; ++i) {
+								if (MetaType.GetTypeCode (carg[i].ArgumentType) == TypeCode.Boolean)
+									flags[i] = (bool) carg[i].Value;
+							}
+
+							break;
+						}
+					}
+				}
+
+				provider = null;
+			}
+		}
+
+		protected readonly Dictionary<MetaType, TypeSpec> import_cache;
+		protected readonly Dictionary<MetaType, BuildinTypeSpec> buildin_types;
+		readonly Dictionary<Assembly, ImportedAssemblyDefinition> assembly_2_definition;
+
+		public static readonly string CompilerServicesNamespace = "System.Runtime.CompilerServices";
+
+		protected MetadataImporter ()
 		{
-			import_cache = new Dictionary<Type, TypeSpec> (1024, ReferenceEquality<Type>.Default);
+			import_cache = new Dictionary<MetaType, TypeSpec> (1024, ReferenceEquality<MetaType>.Default);
+			buildin_types = new Dictionary<MetaType, BuildinTypeSpec> (40, ReferenceEquality<MetaType>.Default);
+			assembly_2_definition = new Dictionary<Assembly, ImportedAssemblyDefinition> (ReferenceEquality<Assembly>.Default);
 			IgnorePrivateMembers = true;
 		}
 
 		#region Properties
 
+		public ICollection<ImportedAssemblyDefinition> Assemblies {
+			get {
+				return assembly_2_definition.Values;
+			}
+		}
+
 		public bool IgnorePrivateMembers { get; set; }
 
 		#endregion
 
-		public void Initialize ()
-		{
-			// Setup mapping for predefined types
-			type_2_predefined = new Dictionary<Type, PredefinedTypeSpec> () {
-				{ typeof (object), TypeManager.object_type },
-				{ typeof (System.ValueType), TypeManager.value_type },
-				{ typeof (System.Attribute), TypeManager.attribute_type },
-
-				{ typeof (int), TypeManager.int32_type },
-				{ typeof (long), TypeManager.int64_type },
-				{ typeof (uint), TypeManager.uint32_type },
-				{ typeof (ulong), TypeManager.uint64_type },
-				{ typeof (byte), TypeManager.byte_type },
-				{ typeof (sbyte), TypeManager.sbyte_type },
-				{ typeof (short), TypeManager.short_type },
-				{ typeof (ushort), TypeManager.ushort_type },
-
-				{ typeof (System.Collections.IEnumerator), TypeManager.ienumerator_type },
-				{ typeof (System.Collections.IEnumerable), TypeManager.ienumerable_type },
-				{ typeof (System.IDisposable), TypeManager.idisposable_type },
-
-				{ typeof (char), TypeManager.char_type },
-				{ typeof (string), TypeManager.string_type },
-				{ typeof (float), TypeManager.float_type },
-				{ typeof (double), TypeManager.double_type },
-				{ typeof (decimal), TypeManager.decimal_type },
-				{ typeof (bool), TypeManager.bool_type },
-				{ typeof (System.IntPtr), TypeManager.intptr_type },
-				{ typeof (System.UIntPtr), TypeManager.uintptr_type },
-
-				{ typeof (System.MulticastDelegate), TypeManager.multicast_delegate_type },
-				{ typeof (System.Delegate), TypeManager.delegate_type },
-				{ typeof (System.Enum), TypeManager.enum_type },
-				{ typeof (System.Array), TypeManager.array_type },
-				{ typeof (void), TypeManager.void_type },
-				{ typeof (System.Type), TypeManager.type_type },
-				{ typeof (System.Exception), TypeManager.exception_type },
-				{ typeof (System.RuntimeFieldHandle), TypeManager.runtime_field_handle_type },
-				{ typeof (System.RuntimeTypeHandle), TypeManager.runtime_handle_type }
-			};
-		}
+		protected abstract MemberKind DetermineKindFromBaseType (MetaType baseType);
+		protected abstract bool HasVolatileModifier (MetaType[] modifiers);
+		public abstract void GetCustomAttributeTypeName (CustomAttributeData cad, out string typeNamespace, out string typeName);
 
 		public FieldSpec CreateField (FieldInfo fi, TypeSpec declaringType)
 		{
@@ -96,55 +164,53 @@ namespace Mono.CSharp
 					break;
 				default:
 					// Ignore private fields (even for error reporting) to not require extra dependencies
-					if (IgnorePrivateMembers || fi.IsDefined (typeof (CompilerGeneratedAttribute), false))
+					if (IgnorePrivateMembers || HasAttribute (CustomAttributeData.GetCustomAttributes (fi), "CompilerGeneratedAttribute", CompilerServicesNamespace))
 						return null;
 
 					mod = Modifiers.PRIVATE;
 					break;
 			}
 
-			var definition = new ImportedMemberDefinition (fi);
 			TypeSpec field_type;
 
 			try {
-				field_type = ImportType (fi.FieldType);
+				field_type = ImportType (fi.FieldType, new DynamicTypeReader (fi));
 			} catch (Exception e) {
 				// TODO: I should construct fake TypeSpec based on TypeRef signature
 				// but there is no way to do it with System.Reflection
 				throw new InternalErrorException (e, "Cannot import field `{0}.{1}' referenced in assembly `{2}'",
-					declaringType.GetSignatureForError (), fi.Name, declaringType.Assembly);
+					declaringType.GetSignatureForError (), fi.Name, declaringType.MemberDefinition.DeclaringAssembly);
 			}
 
+			var definition = new ImportedMemberDefinition (fi, field_type, this);
+
 			if ((fa & FieldAttributes.Literal) != 0) {
-				var c = Constant.CreateConstantFromValue (field_type, fi.GetValue (fi), Location.Null);
+				var c = Constant.CreateConstantFromValue (field_type, fi.GetRawConstantValue (), Location.Null);
 				return new ConstSpec (declaringType, definition, field_type, fi, mod, c);
 			}
 
 			if ((fa & FieldAttributes.InitOnly) != 0) {
 				if (field_type == TypeManager.decimal_type) {
-					var dc = ReadDecimalConstant (fi);
+					var dc = ReadDecimalConstant (CustomAttributeData.GetCustomAttributes (fi));
 					if (dc != null)
 						return new ConstSpec (declaringType, definition, field_type, fi, mod, dc);
 				}
 
 				mod |= Modifiers.READONLY;
 			} else {
-				var reqs = fi.GetRequiredCustomModifiers ();
-				if (reqs.Length > 0) {
-					foreach (Type t in reqs) {
-						if (t == typeof (System.Runtime.CompilerServices.IsVolatile)) {
-							mod |= Modifiers.VOLATILE;
-							break;
-						}
-					}
-				}
+				var req_mod = fi.GetRequiredCustomModifiers ();
+				if (req_mod.Length > 0 && HasVolatileModifier (req_mod))
+					mod |= Modifiers.VOLATILE;
 			}
 
-			if ((fa & FieldAttributes.Static) != 0)
+			if ((fa & FieldAttributes.Static) != 0) {
 				mod |= Modifiers.STATIC;
+			} else {
+				// Fixed buffers cannot be static
+				if (declaringType.IsStruct && field_type.IsStruct && field_type.IsNested &&
+					HasAttribute (CustomAttributeData.GetCustomAttributes (fi), "FixedBufferAttribute", CompilerServicesNamespace)) {
 
-			if (field_type.IsStruct) {
-				 if (fi.IsDefined (typeof (FixedBufferAttribute), false)) {
+					// TODO: Sanity check on field_type (only few type are allowed)
 					var element_field = CreateField (fi.FieldType.GetField (FixedField.FixedElementName), declaringType);
 					return new FixedFieldSpec (declaringType, definition, fi, element_field, mod);
 				}
@@ -161,13 +227,14 @@ namespace Mono.CSharp
 			if (add.Modifiers != remove.Modifiers)
 				throw new NotImplementedException ("Different accessor modifiers " + ei.Name);
 
-			var definition = new ImportedMemberDefinition (ei);
-			return new EventSpec (declaringType, definition, ImportType (ei.EventHandlerType), add.Modifiers, add, remove);
+			var event_type = ImportType (ei.EventHandlerType, new DynamicTypeReader (ei));
+			var definition = new ImportedMemberDefinition (ei, event_type,  this);
+			return new EventSpec (declaringType, definition, event_type, add.Modifiers, add, remove);
 		}
 
-		T[] CreateGenericParameters<T> (Type type, TypeSpec declaringType) where T : TypeSpec
+		TypeParameterSpec[] CreateGenericParameters (MetaType type, TypeSpec declaringType)
 		{
-			Type[] tparams = type.GetGenericArguments ();
+			var tparams = type.GetGenericArguments ();
 
 			int parent_owned_count;
 			if (type.IsNested) {
@@ -202,27 +269,63 @@ namespace Mono.CSharp
 			if (tparams.Length - parent_owned_count == 0)
 				return null;
 
-			return CreateGenericParameters<T> (parent_owned_count, tparams);
+			return CreateGenericParameters (parent_owned_count, tparams);
 		}
 
-		T[] CreateGenericParameters<T> (int first, Type[] tparams) where T : TypeSpec
+		TypeParameterSpec[] CreateGenericParameters (int first, MetaType[] tparams)
 		{
-			var tspec = new T [tparams.Length - first];
+			var tspec = new TypeParameterSpec[tparams.Length - first];
 			for (int pos = first; pos < tparams.Length; ++pos) {
 				var type = tparams[pos];
+				int index = pos - first;
+
+				tspec [index] = (TypeParameterSpec) CreateType (type, new DynamicTypeReader (), false);
+			}
+
+			return tspec;
+		}
+
+		TypeSpec[] CreateGenericArguments (int first, MetaType[] tparams, DynamicTypeReader dtype)
+		{
+			++dtype.Position;
+
+			var tspec = new TypeSpec [tparams.Length - first];
+			for (int pos = first; pos < tparams.Length; ++pos) {
+				var type = tparams[pos];
+				int index = pos - first;
+
+				TypeSpec spec;
 				if (type.HasElementType) {
 					var element = type.GetElementType ();
-					var spec = ImportType (element);
+					++dtype.Position;
+					spec = ImportType (element, dtype);
 
-					if (type.IsArray) {
-						tspec[pos - first] = (T) (TypeSpec) ArrayContainer.MakeType (spec, type.GetArrayRank ());
-						continue;
+					if (!type.IsArray) {
+						throw new NotImplementedException ("Unknown element type " + type.ToString ());
 					}
 
-					throw new NotImplementedException ("Unknown element type " + type.ToString ());
+					spec = ArrayContainer.MakeType (spec, type.GetArrayRank ());
+				} else {
+					spec = CreateType (type, dtype, true);
+
+					//
+					// We treat nested generic types as inflated internally where
+					// reflection uses type definition
+					//
+					// class A<T> {
+					//    IFoo<A<T>> foo;	// A<T> is definition in this case
+					// }
+					//
+					// TODO: Is full logic from CreateType needed here as well?
+					//
+					if (type.IsGenericTypeDefinition) {
+						var targs = CreateGenericArguments (0, type.GetGenericArguments (), dtype);
+						spec = spec.MakeGenericType (targs);
+					}
 				}
 
-				tspec [pos - first] = (T) CreateType (type);
+				++dtype.Position;
+				tspec[index] = spec;
 			}
 
 			return tspec;
@@ -232,7 +335,6 @@ namespace Mono.CSharp
 		{
 			Modifiers mod = ReadMethodModifiers (mb, declaringType);
 			TypeParameterSpec[] tparams;
-			ImportedMethodDefinition definition;
 
 			var parameters = CreateParameters (declaringType, mb.GetParameters (), mb);
 
@@ -240,10 +342,8 @@ namespace Mono.CSharp
 				if (!mb.IsGenericMethodDefinition)
 					throw new NotSupportedException ("assert");
 
-				tparams = CreateGenericParameters<TypeParameterSpec>(0, mb.GetGenericArguments ());
-				definition = new ImportedGenericMethodDefinition ((MethodInfo) mb, parameters, tparams);
+				tparams = CreateGenericParameters (0, mb.GetGenericArguments ());
 			} else {
-				definition = new ImportedMethodDefinition (mb, parameters);
 				tparams = null;
 			}
 
@@ -275,7 +375,8 @@ namespace Mono.CSharp
 					}
 				}
 
-				returnType = ImportType (((MethodInfo)mb).ReturnType);
+				var mi = (MethodInfo) mb;
+				returnType = ImportType (mi.ReturnType, new DynamicTypeReader (mi.ReturnParameter));
 
 				// Cannot set to OVERRIDE without full hierarchy checks
 				// this flag indicates that the method could be override
@@ -297,6 +398,13 @@ namespace Mono.CSharp
 				}
 			}
 
+			IMemberDefinition definition;
+			if (tparams != null) {
+				definition = new ImportedGenericMethodDefinition ((MethodInfo) mb, returnType, parameters, tparams, this);
+			} else {
+				definition = new ImportedParameterMemberDefinition (mb, returnType, parameters, this);
+			}
+
 			MethodSpec ms = new MethodSpec (kind, declaringType, definition, returnType, mb, parameters, mod);
 			if (tparams != null)
 				ms.IsGeneric = true;
@@ -330,30 +438,41 @@ namespace Mono.CSharp
 					//
 					// Strip reference wrapping
 					//
-					types[i] = ImportType (p.ParameterType.GetElementType ());
-				} else if (i == 0 && method.IsStatic && parent.IsStatic && // TODO: parent.Assembly.IsExtension &&
-					HasExtensionAttribute (CustomAttributeData.GetCustomAttributes (method)) != null) {
+					var el = p.ParameterType.GetElementType ();
+					types[i] = ImportType (el, new DynamicTypeReader (p));	// TODO: 1-based positio to be csc compatible
+				} else if (i == 0 && method.IsStatic && parent.IsStatic && parent.MemberDefinition.DeclaringAssembly.HasExtensionMethod &&
+					HasAttribute (CustomAttributeData.GetCustomAttributes (method), "ExtensionAttribute", CompilerServicesNamespace)) {
 					mod = Parameter.Modifier.This;
 					types[i] = ImportType (p.ParameterType);
 				} else {
-					types[i] = ImportType (p.ParameterType);
+					types[i] = ImportType (p.ParameterType, new DynamicTypeReader (p));
 
 					if (i >= pi.Length - 2 && types[i] is ArrayContainer) {
-						var cattrs = CustomAttributeData.GetCustomAttributes (p);
-						if (cattrs != null && cattrs.Any (l => l.Constructor.DeclaringType == typeof (ParamArrayAttribute))) {
+						if (HasAttribute (CustomAttributeData.GetCustomAttributes (p), "ParamArrayAttribute", "System")) {
 							mod = Parameter.Modifier.PARAMS;
 							is_params = true;
 						}
 					}
 
 					if (!is_params && p.IsOptional) {
-						object value = p.DefaultValue;
-						if (value == Missing.Value) {
-							default_value = EmptyExpression.Null;
+						object value = p.RawDefaultValue;
+						var ptype = types[i];
+						if ((p.Attributes & ParameterAttributes.HasDefault) != 0 && ptype.Kind != MemberKind.TypeParameter && (value != null || TypeManager.IsReferenceType (ptype))) {
+							if (value == null) {
+								default_value = Constant.CreateConstant (null, ptype, null, Location.Null);
+							} else {
+								default_value = ImportParameterConstant (value).Resolve (null);
+
+								if (ptype.IsEnum) {
+									default_value = new EnumConstant ((Constant) default_value, ptype).Resolve (null);
+								}
+							}
+						} else if (value == Missing.Value) {
+							default_value = EmptyExpression.MissingValue;
 						} else if (value == null) {
-							default_value = new NullLiteral (Location.Null);
-						} else {
-							default_value = Constant.CreateConstant (null, ImportType (value.GetType ()), value, Location.Null);
+							default_value = new DefaultValueExpression (new TypeExpression (ptype, Location.Null), Location.Null);
+						} else if (ptype == TypeManager.decimal_type) {
+							default_value = ImportParameterConstant (value).Resolve (null);
 						}
 					}
 				}
@@ -371,14 +490,11 @@ namespace Mono.CSharp
 				new ParametersImported (par, types, is_params);
 		}
 
-
 		//
 		// Returns null when the property is not valid C# property
 		//
 		public PropertySpec CreateProperty (PropertyInfo pi, TypeSpec declaringType, MethodSpec get, MethodSpec set)
 		{
-			var definition = new ImportedMemberDefinition (pi);
-
 			Modifiers mod = 0;
 			AParametersCollection param = null;
 			TypeSpec type = null;
@@ -472,11 +588,11 @@ namespace Mono.CSharp
 				}
 
 				if (is_valid_property)
-					spec = new IndexerSpec (declaringType, definition, type, param, pi, mod);
+					spec = new IndexerSpec (declaringType, new ImportedParameterMemberDefinition (pi, type, param, this), type, param, pi, mod);
 			}
 
 			if (spec == null)
-				spec = new PropertySpec (MemberKind.Property, declaringType, definition, type, pi, mod);
+				spec = new PropertySpec (MemberKind.Property, declaringType, new ImportedMemberDefinition (pi, type, this), type, pi, mod);
 
 			if (!is_valid_property) {
 				spec.IsNotRealProperty = true;
@@ -491,45 +607,108 @@ namespace Mono.CSharp
 			return spec;
 		}
 
-		public TypeSpec CreateType (Type type)
+		public TypeSpec CreateType (MetaType type)
+		{
+			return CreateType (type, new DynamicTypeReader (), true);
+		}
+
+		public TypeSpec CreateNestedType (MetaType type, TypeSpec declaringType)
+		{
+			return CreateType (type, declaringType, new DynamicTypeReader (type), false);
+		}
+
+		TypeSpec CreateType (MetaType type, DynamicTypeReader dtype, bool canImportBaseType)
 		{
 			TypeSpec declaring_type;
 			if (type.IsNested && !type.IsGenericParameter)
-				declaring_type = CreateType (type.DeclaringType);
+				declaring_type = CreateType (type.DeclaringType, new DynamicTypeReader (type.DeclaringType), true);
 			else
 				declaring_type = null;
 
-			return CreateType (type, declaring_type);
+			return CreateType (type, declaring_type, dtype, canImportBaseType);
 		}
 
-		public TypeSpec CreateType (Type type, TypeSpec declaringType)
+		TypeSpec CreateType (MetaType type, TypeSpec declaringType, DynamicTypeReader dtype, bool canImportBaseType)
 		{
 			TypeSpec spec;
-			if (import_cache.TryGetValue (type, out spec))
-				return spec;
+			if (import_cache.TryGetValue (type, out spec)) {
+				if (spec == TypeManager.object_type) {
+					if (dtype.IsDynamicObject (this))
+						return InternalType.Dynamic;
 
-			if (type.IsGenericType && !type.IsGenericTypeDefinition) {	
-				var type_def = type.GetGenericTypeDefinition ();
-				spec = CreateType (type_def, declaringType);
+					return spec;
+				}
+
+				if (!spec.IsGeneric || type.IsGenericTypeDefinition)
+					return spec;
 
-				var targs = CreateGenericParameters<TypeSpec> (type, null);
+				if (!dtype.HasDynamicAttribute (this))
+					return spec;
+
+				// We've found same object in the cache but this one has a dynamic custom attribute
+				// and it's most likely dynamic version of same type IFoo<object> agains IFoo<dynamic>
+				// Do type resolve process again in that case
+
+				// TODO: Handle cases where they still unify
+			}
 
-				InflatedTypeSpec inflated;
-				if (targs == null) {
-					// Inflating nested non-generic type, same in TypeSpec::InflateMember
-					inflated = new InflatedTypeSpec (spec, declaringType, TypeSpec.EmptyTypes);
+			if (type.IsGenericType && !type.IsGenericTypeDefinition) {
+				var type_def = type.GetGenericTypeDefinition ();
+				var targs = CreateGenericArguments (0, type.GetGenericArguments (), dtype);
+				if (declaringType == null) {
+					// Simple case, no nesting
+					spec = CreateType (type_def, null, new DynamicTypeReader (), canImportBaseType);
+					spec = spec.MakeGenericType (targs);
 				} else {
-					// CreateGenericParameters constraint could inflate type
-					if (import_cache.ContainsKey (type))
-						return import_cache[type];
+					//
+					// Nested type case, converting .NET types like
+					// A`1.B`1.C`1<int, long, string> to typespec like
+					// A<int>.B<long>.C<string>
+					//
+					var nested_hierarchy = new List<TypeSpec> ();
+					while (declaringType.IsNested) {
+						nested_hierarchy.Add (declaringType);
+						declaringType = declaringType.DeclaringType;
+					}
+
+					int targs_pos = 0;
+					if (declaringType.Arity > 0) {
+						spec = declaringType.MakeGenericType (targs.Skip (targs_pos).Take (declaringType.Arity).ToArray ());
+						targs_pos = spec.Arity;
+					} else {
+						spec = declaringType;
+					}
+
+					for (int i = nested_hierarchy.Count; i != 0; --i) {
+						var t = nested_hierarchy [i - 1];
+						spec = MemberCache.FindNestedType (spec, t.Name, t.Arity);
+						if (t.Arity > 0) {
+							spec = spec.MakeGenericType (targs.Skip (targs_pos).Take (spec.Arity).ToArray ());
+							targs_pos += t.Arity;
+						}
+					}
+
+					string name = type.Name;
+					int index = name.IndexOf ('`');
+					if (index > 0)
+						name = name.Substring (0, index);
+
+					spec = MemberCache.FindNestedType (spec, name, targs.Length - targs_pos);
+					if (spec.Arity > 0) {
+						spec = spec.MakeGenericType (targs.Skip (targs_pos).ToArray ());
+					}
+				}
 
-					inflated = spec.MakeGenericType (targs);
+				// Don't add generic type with dynamic arguments, they can interfere with same type
+				// using object type arguments
+				if (!spec.HasDynamicElement) {
 
-					// Use of reading cache to speed up reading only
-					import_cache.Add (type, inflated);
+					// Add to reading cache to speed up reading
+					if (!import_cache.ContainsKey (type))
+						import_cache.Add (type, spec);
 				}
 
-				return inflated;
+				return spec;
 			}
 
 			Modifiers mod;
@@ -559,19 +738,18 @@ namespace Mono.CSharp
 				kind = MemberKind.Interface;
 			} else if (type.IsGenericParameter) {
 				kind = MemberKind.TypeParameter;
-			} else if (type.IsClass || type.IsAbstract) {  				// SRE: System.Enum returns false for IsClass
-				if ((ma & TypeAttributes.Sealed) != 0 && type.IsSubclassOf (typeof (MulticastDelegate))) {
-					kind = MemberKind.Delegate;
-					mod |= Modifiers.SEALED;
-				} else {
+			} else {
+				var base_type = type.BaseType;
+				if (base_type == null || (ma & TypeAttributes.Abstract) != 0) {
 					kind = MemberKind.Class;
-
-#if NET_4_0
-					if (type == typeof (object) && type.IsDefined (typeof (DynamicAttribute), false)) {
-						return InternalType.Dynamic;
+				} else {
+					kind = DetermineKindFromBaseType (base_type);
+					if (kind == MemberKind.Struct || kind == MemberKind.Delegate) {
+						mod |= Modifiers.SEALED;
 					}
-#endif
+				}
 
+				if (kind == MemberKind.Class) {
 					if ((ma & TypeAttributes.Sealed) != 0) {
 						mod |= Modifiers.SEALED;
 						if ((ma & TypeAttributes.Abstract) != 0)
@@ -580,15 +758,10 @@ namespace Mono.CSharp
 						mod |= Modifiers.ABSTRACT;
 					}
 				}
-			} else if (type.IsEnum) {
-				kind = MemberKind.Enum;
-			} else {
-				kind = MemberKind.Struct;
-				mod |= Modifiers.SEALED;
 			}
 
-			var definition = new ImportedTypeDefinition (this, type);
-			PredefinedTypeSpec pt;
+			var definition = new ImportedTypeDefinition (type, this);
+			BuildinTypeSpec pt;
 
 			if (kind == MemberKind.Enum) {
 				const BindingFlags underlying_member = BindingFlags.DeclaredOnly |
@@ -608,15 +781,15 @@ namespace Mono.CSharp
 				// Return as type_cache was updated
 				return CreateTypeParameter (type, declaringType);
 			} else if (type.IsGenericTypeDefinition) {
-				definition.TypeParameters = CreateGenericParameters<TypeParameterSpec>(type, declaringType);
+				definition.TypeParameters = CreateGenericParameters (type, declaringType);
 
 				// Constraints are not loaded on demand and can reference this type
 				if (import_cache.TryGetValue (type, out spec))
 					return spec;
 
-			} else if (type_2_predefined.TryGetValue (type, out pt)) {
+			} else if (buildin_types.TryGetValue (type, out pt)) {
 				spec = pt;
-				pt.SetDefinition (definition, type);
+				pt.SetDefinition (definition, type, mod);
 			}
 
 			if (spec == null)
@@ -624,22 +797,62 @@ namespace Mono.CSharp
 
 			import_cache.Add (type, spec);
 
-			if (kind == MemberKind.Interface)
+			//
+			// Two stage setup as the base type can be inflated declaring type or
+			// another nested type inside same declaring type which has not been
+			// loaded, therefore we can import a base type of nested types once
+			// the types have been imported
+			//
+			if (canImportBaseType)
+				ImportTypeBase (spec, type);
+
+			return spec;
+		}
+
+		public ImportedAssemblyDefinition GetAssemblyDefinition (Assembly assembly)
+		{
+			ImportedAssemblyDefinition def;
+			if (!assembly_2_definition.TryGetValue (assembly, out def)) {
+
+				// This can happen in dynamic context only
+				def = new ImportedAssemblyDefinition (assembly, this);
+				assembly_2_definition.Add (assembly, def);
+				def.ReadAttributes ();
+			}
+
+			return def;
+		}
+
+		public void ImportTypeBase (MetaType type)
+		{
+			TypeSpec spec = import_cache[type];
+			if (spec != null)
+				ImportTypeBase (spec, type);
+		}
+
+		void ImportTypeBase (TypeSpec spec, MetaType type)
+		{
+			if (spec.Kind == MemberKind.Interface)
 				spec.BaseType = TypeManager.object_type;
-			else if (type.BaseType != null)
-				spec.BaseType = CreateType (type.BaseType);
+			else if (type.BaseType != null) {
+				TypeSpec base_type;
+				if (type.BaseType.IsGenericType)
+					base_type = CreateType (type.BaseType, new DynamicTypeReader (type), true);
+				else
+					base_type = CreateType (type.BaseType);
+
+				spec.BaseType = base_type;
+			}
 
 			var ifaces = type.GetInterfaces ();
 			if (ifaces.Length > 0) {
-				foreach (Type iface in ifaces) {
+				foreach (var iface in ifaces) {
 					spec.AddInterface (CreateType (iface));
 				}
 			}
-
-			return spec;
 		}
 
-		TypeParameterSpec CreateTypeParameter (Type type, TypeSpec declaringType)
+		TypeParameterSpec CreateTypeParameter (MetaType type, TypeSpec declaringType)
 		{
 			Variance variance;
 			switch (type.GenericParameterAttributes & GenericParameterAttributes.VarianceMask) {
@@ -668,7 +881,7 @@ namespace Mono.CSharp
 			}
 
 			TypeParameterSpec spec;
-			var def = new ImportedTypeParameterDefinition (type);
+			var def = new ImportedTypeParameterDefinition (type, this);
 			if (type.DeclaringMethod != null)
 				spec = new TypeParameterSpec (type.GenericParameterPosition, def, special, variance, type);
 			else
@@ -689,12 +902,7 @@ namespace Mono.CSharp
 				}
 
 				if (ct.IsClass) {
-					if (ct == typeof (ValueType)) {
-						spec.BaseType = TypeManager.value_type;
-					} else {
-						spec.BaseType = CreateType (ct);
-					}
-
+					spec.BaseType = CreateType (ct);
 					continue;
 				}
 
@@ -710,45 +918,41 @@ namespace Mono.CSharp
 			return spec;
 		}
 
-		static Type HasExtensionAttribute (IList<CustomAttributeData> attributes)
+		//
+		// Test for a custom attribute type match. Custom attributes are not really predefined globaly 
+		// they can be assembly specific therefore we do check based on names only
+		//
+		public bool HasAttribute (IList<CustomAttributeData> attributesData, string attrName, string attrNamespace)
 		{
-			foreach (var attr in attributes) {
-				var dt = attr.Constructor.DeclaringType;
-				if (dt.Name == "ExtensionAttribute" && dt.Namespace == "System.Runtime.CompilerServices") {
-					return dt;
-				}
+			if (attributesData.Count == 0)
+				return false;
+
+			string ns, name;
+			foreach (var attr in attributesData) {
+				GetCustomAttributeTypeName (attr, out ns, out name);
+				if (name == attrName && ns == attrNamespace)
+					return true;
 			}
 
-			return null;
+			return false;
 		}
 
-		public void ImportAssembly (Assembly assembly, Namespace targetNamespace)
+		protected void ImportTypes (MetaType[] types, Namespace targetNamespace, bool hasExtensionTypes)
 		{
-			Type extension_type = HasExtensionAttribute (CustomAttributeData.GetCustomAttributes (assembly));
-
-			//
-			// This part tries to simulate loading of top-level
-			// types only, any missing dependencies are ignores here.
-			// Full error report is reported later when the type is
-			// actually used
-			//
-			Type[] all_types;
-			try {
-				all_types = assembly.GetTypes ();
-			} catch (ReflectionTypeLoadException e) {
-				all_types = e.Types;
-			}
-
 			Namespace ns = targetNamespace;
 			string prev_namespace = null;
-			foreach (var t in all_types) {
-				if (t == null || t.IsNested)
+			foreach (var t in types) {
+				if (t == null)
+					continue;
+
+				// Be careful not to trigger full parent type loading
+				if (t.MemberType == MemberTypes.NestedType)
 					continue;
 
 				if (t.Name[0] == '<')
 					continue;
 
-				var it = CreateType (t, null);
+				var it = CreateType (t, null, new DynamicTypeReader (t), true);
 				if (it == null)
 					continue;
 
@@ -759,17 +963,64 @@ namespace Mono.CSharp
 
 				ns.AddType (it);
 
-				if (it.IsStatic && extension_type != null && t.IsDefined (extension_type, false)) {
+				if (it.IsStatic && hasExtensionTypes &&
+					HasAttribute (CustomAttributeData.GetCustomAttributes (t), "ExtensionAttribute", CompilerServicesNamespace)) {
 					it.SetExtensionMethodContainer ();
 				}
 			}
 		}
 
-		public TypeSpec ImportType (Type type)
+		static Constant ImportParameterConstant (object value)
+		{
+			//
+			// Get type of underlying value as int constant can be used for object
+			// parameter type. This is not allowed in C# but other languages can do that
+			//
+			switch (System.Type.GetTypeCode (value.GetType ())) {
+			case TypeCode.Boolean:
+				return new BoolConstant ((bool) value, Location.Null);
+			case TypeCode.Byte:
+				return new ByteConstant ((byte) value, Location.Null);
+			case TypeCode.Char:
+				return new CharConstant ((char) value, Location.Null);
+			case TypeCode.Decimal:
+				return new DecimalConstant ((decimal) value, Location.Null);
+			case TypeCode.Double:
+				return new DoubleConstant ((double) value, Location.Null);
+			case TypeCode.Int16:
+				return new ShortConstant ((short) value, Location.Null);
+			case TypeCode.Int32:
+				return new IntConstant ((int) value, Location.Null);
+			case TypeCode.Int64:
+				return new LongConstant ((long) value, Location.Null);
+			case TypeCode.SByte:
+				return new SByteConstant ((sbyte) value, Location.Null);
+			case TypeCode.Single:
+				return new FloatConstant ((float) value, Location.Null);
+			case TypeCode.String:
+				return new StringConstant ((string) value, Location.Null);
+			case TypeCode.UInt16:
+				return new UShortConstant ((ushort) value, Location.Null);
+			case TypeCode.UInt32:
+				return new UIntConstant ((uint) value, Location.Null);
+			case TypeCode.UInt64:
+				return new ULongConstant ((ulong) value, Location.Null);
+			}
+
+			throw new NotImplementedException (value.GetType ().ToString ());
+		}
+
+		public TypeSpec ImportType (MetaType type)
+		{
+			return ImportType (type, new DynamicTypeReader (type));
+		}
+
+		TypeSpec ImportType (MetaType type, DynamicTypeReader dtype)
 		{
 			if (type.HasElementType) {
 				var element = type.GetElementType ();
-				var spec = ImportType (element);
+				++dtype.Position;
+				var spec = ImportType (element, dtype);
 
 				if (type.IsArray)
 					return ArrayContainer.MakeType (spec, type.GetArrayRank ());
@@ -781,13 +1032,7 @@ namespace Mono.CSharp
 				throw new NotImplementedException ("Unknown element type " + type.ToString ());
 			}
 
-			TypeSpec dtype;
-			if (type.IsNested)
-				dtype = ImportType (type.DeclaringType);
-			else
-				dtype = null;
-
-			return CreateType (type, dtype);
+			return CreateType (type, dtype, true);
 		}
 
 		//
@@ -795,13 +1040,28 @@ namespace Mono.CSharp
 		// as IsInitOnly ('readonly' in C# parlance).  We get its value from the 
 		// DecimalConstantAttribute metadata.
 		//
-		static Constant ReadDecimalConstant (FieldInfo fi)
+		Constant ReadDecimalConstant (IList<CustomAttributeData> attrs)
 		{
-			object[] attrs = fi.GetCustomAttributes (typeof (DecimalConstantAttribute), false);
-			if (attrs.Length != 1)
+			if (attrs.Count == 0)
 				return null;
 
-			return new DecimalConstant (((DecimalConstantAttribute) attrs [0]).Value, Location.Null);
+			string name, ns;
+			foreach (var ca in attrs) {
+				GetCustomAttributeTypeName (ca, out ns, out name);
+				if (name != "DecimalConstantAttribute" || ns != CompilerServicesNamespace)
+					continue;
+
+				var value = new decimal (
+					(int) (uint) ca.ConstructorArguments[4].Value,
+					(int) (uint) ca.ConstructorArguments[3].Value,
+					(int) (uint) ca.ConstructorArguments[2].Value,
+					(byte) ca.ConstructorArguments[1].Value != 0,
+					(byte) ca.ConstructorArguments[0].Value);
+
+				return new DecimalConstant (value, Location.Null).Resolve (null);
+			}
+
+			return null;
 		}
 
 		static Modifiers ReadMethodModifiers (MethodBase mb, TypeSpec declaringType)
@@ -853,7 +1113,7 @@ namespace Mono.CSharp
 		}
 	}
 
-	class ImportedMemberDefinition : IMemberDefinition
+	abstract class ImportedDefinition : IMemberDefinition
 	{
 		protected class AttributesBag
 		{
@@ -864,8 +1124,9 @@ namespace Mono.CSharp
 			public string[] Conditionals;
 			public string DefaultIndexerName;
 			public bool IsNotCLSCompliant;
-
-			public static AttributesBag Read (MemberInfo mi)
+			public TypeSpec CoClass;
+			
+			public static AttributesBag Read (MemberInfo mi, MetadataImporter importer)
 			{
 				AttributesBag bag = null;
 				List<string> conditionals = null;
@@ -873,9 +1134,13 @@ namespace Mono.CSharp
 				// It should not throw any loading exception
 				IList<CustomAttributeData> attrs = CustomAttributeData.GetCustomAttributes (mi);
 
+				string ns, name;
 				foreach (var a in attrs) {
-					var type = a.Constructor.DeclaringType;
-					if (type == typeof (ObsoleteAttribute)) {
+					importer.GetCustomAttributeTypeName (a, out ns, out name);
+					if (name == "ObsoleteAttribute") {
+						if (ns != "System")
+							continue;
+
 						if (bag == null)
 							bag = new AttributesBag ();
 
@@ -892,7 +1157,10 @@ namespace Mono.CSharp
 						continue;
 					}
 
-					if (type == typeof (ConditionalAttribute)) {
+					if (name == "ConditionalAttribute") {
+						if (ns != "System.Diagnostics")
+							continue;
+
 						if (bag == null)
 							bag = new AttributesBag ();
 
@@ -903,7 +1171,10 @@ namespace Mono.CSharp
 						continue;
 					}
 
-					if (type == typeof (CLSCompliantAttribute)) {
+					if (name == "CLSCompliantAttribute") {
+						if (ns != "System")
+							continue;
+
 						if (bag == null)
 							bag = new AttributesBag ();
 
@@ -912,26 +1183,46 @@ namespace Mono.CSharp
 					}
 
 					// Type only attributes
-					if (type == typeof (DefaultMemberAttribute)) {
-						if (bag == null)
-							bag = new AttributesBag ();
+					if (mi.MemberType == MemberTypes.TypeInfo || mi.MemberType == MemberTypes.NestedType) {
+						if (name == "DefaultMemberAttribute") {
+							if (ns != "System.Reflection")
+								continue;
 
-						bag.DefaultIndexerName = (string) a.ConstructorArguments[0].Value;
-						continue;
-					}
+							if (bag == null)
+								bag = new AttributesBag ();
 
-					if (type == typeof (AttributeUsageAttribute)) {
-						if (bag == null)
-							bag = new AttributesBag ();
+							bag.DefaultIndexerName = (string) a.ConstructorArguments[0].Value;
+							continue;
+						}
+
+						if (name == "AttributeUsageAttribute") {
+							if (ns != "System")
+								continue;
 
-						bag.AttributeUsage = new AttributeUsageAttribute ((AttributeTargets) a.ConstructorArguments[0].Value);
-						foreach (var named in a.NamedArguments) {
-							if (named.MemberInfo.Name == "AllowMultiple")
-								bag.AttributeUsage.AllowMultiple = (bool) named.TypedValue.Value;
-							else if (named.MemberInfo.Name == "Inherited")
-								bag.AttributeUsage.Inherited = (bool) named.TypedValue.Value;
+							if (bag == null)
+								bag = new AttributesBag ();
+
+							bag.AttributeUsage = new AttributeUsageAttribute ((AttributeTargets) a.ConstructorArguments[0].Value);
+							foreach (var named in a.NamedArguments) {
+								if (named.MemberInfo.Name == "AllowMultiple")
+									bag.AttributeUsage.AllowMultiple = (bool) named.TypedValue.Value;
+								else if (named.MemberInfo.Name == "Inherited")
+									bag.AttributeUsage.Inherited = (bool) named.TypedValue.Value;
+							}
+							continue;
+						}
+
+						// Interface only attribute
+						if (name == "CoClassAttribute") {
+							if (ns != "System.Runtime.InteropServices")
+								continue;
+
+							if (bag == null)
+								bag = new AttributesBag ();
+
+							bag.CoClass = importer.ImportType ((MetaType) a.ConstructorArguments[0].Value);
+							continue;
 						}
-						continue;
 					}
 				}
 
@@ -940,27 +1231,23 @@ namespace Mono.CSharp
 
 				if (conditionals != null)
 					bag.Conditionals = conditionals.ToArray ();
-
+				
 				return bag;
 			}
 		}
 
 		protected readonly MemberInfo provider;
 		protected AttributesBag cattrs;
+		protected readonly MetadataImporter importer;
 
-		public ImportedMemberDefinition (MemberInfo provider)
+		public ImportedDefinition (MemberInfo provider, MetadataImporter importer)
 		{
 			this.provider = provider;
+			this.importer = importer;
 		}
 
 		#region Properties
 
-		public Assembly Assembly {
-			get { 
-				return provider.Module.Assembly;
-			}
-		}
-
 		public bool IsImported {
 			get {
 				return true;
@@ -975,6 +1262,8 @@ namespace Mono.CSharp
 
 		#endregion
 
+		public abstract List<MissingType> ResolveMissingDependencies ();
+
 		public string[] ConditionalConditions ()
 		{
 			if (cattrs == null)
@@ -1001,7 +1290,7 @@ namespace Mono.CSharp
 
 		protected void ReadAttributes ()
 		{
-			cattrs = AttributesBag.Read (provider);
+			cattrs = AttributesBag.Read (provider, importer);
 		}
 
 		public void SetIsAssigned ()
@@ -1015,39 +1304,319 @@ namespace Mono.CSharp
 		}
 	}
 
-	class ImportedMethodDefinition : ImportedMemberDefinition, IParametersMember
+	public class ImportedModuleDefinition
 	{
-		readonly AParametersCollection parameters;
+		readonly Module module;
+		bool cls_compliant;
+		readonly MetadataImporter importer;
+		
+		public ImportedModuleDefinition (Module module, MetadataImporter importer)
+		{
+			this.module = module;
+			this.importer = importer;
+		}
 
-		public ImportedMethodDefinition (MethodBase provider, AParametersCollection parameters)
-			: base (provider)
+		#region Properties
+
+		public bool IsCLSCompliant {
+			get {
+				return cls_compliant;
+			}
+		}
+
+		public string Name {
+			get {
+				return module.Name;
+			}
+		}
+
+		#endregion
+
+		public void ReadAttributes ()
 		{
-			this.parameters = parameters;
+			IList<CustomAttributeData> attrs = CustomAttributeData.GetCustomAttributes (module);
+
+			string ns, name;
+			foreach (var a in attrs) {
+				importer.GetCustomAttributeTypeName (a, out ns, out name);
+				if (name == "CLSCompliantAttribute") {
+					if (ns != "System")
+						continue;
+
+					cls_compliant = (bool) a.ConstructorArguments[0].Value;
+					continue;
+				}
+			}
+		}
+
+		//
+		// Reads assembly attributes which where attached to a special type because
+		// module does have assembly manifest
+		//
+		public List<Attribute> ReadAssemblyAttributes ()
+		{
+			var t = module.GetType (AssemblyAttributesPlaceholder.GetGeneratedName (Name));
+			if (t == null)
+				return null;
+
+			var field = t.GetField (AssemblyAttributesPlaceholder.AssemblyFieldName, BindingFlags.NonPublic | BindingFlags.Static);
+			if (field == null)
+				return null;
+
+			// TODO: implement, the idea is to fabricate specil Attribute class and
+			// add it to OptAttributes before resolving the source code attributes
+			// Need to build module location as well for correct error reporting
+
+			//var assembly_attributes = CustomAttributeData.GetCustomAttributes (field);
+			//var attrs = new List<Attribute> (assembly_attributes.Count);
+			//foreach (var a in assembly_attributes)
+			//{
+			//    var type = metaImporter.ImportType (a.Constructor.DeclaringType);
+			//    var ctor = metaImporter.CreateMethod (a.Constructor, type);
+
+			//    foreach (var carg in a.ConstructorArguments) {
+			//        carg.Value
+			//    }
+
+			//    attrs.Add (new Attribute ("assembly", ctor, null, Location.Null, true));
+			//}
+
+			return null;
+		}
+	}
+
+	public class ImportedAssemblyDefinition : IAssemblyDefinition
+	{
+		readonly Assembly assembly;
+		readonly AssemblyName aname;
+		readonly MetadataImporter importer;
+		bool cls_compliant;
+		bool contains_extension_methods;
+
+		List<AssemblyName> internals_visible_to;
+		Dictionary<IAssemblyDefinition, AssemblyName> internals_visible_to_cache;
+
+		public ImportedAssemblyDefinition (Assembly assembly, MetadataImporter importer)
+		{
+			this.assembly = assembly;
+			this.aname = assembly.GetName ();
+			this.importer = importer;
 		}
 
 		#region Properties
 
-		public AParametersCollection Parameters {
+		public Assembly Assembly {
 			get {
-				return parameters;
+				return assembly;
+			}
+		}
+
+		public string FullName {
+			get {
+				return aname.FullName;
+			}
+		}
+
+		public bool HasExtensionMethod {
+			get {
+				return contains_extension_methods;
+			}
+		}
+
+		public bool HasStrongName {
+			get {
+				return aname.GetPublicKey ().Length != 0;
+			}
+		}
+
+		public bool IsCLSCompliant {
+			get {
+				return cls_compliant;
+			}
+		}
+
+		public string Location {
+			get {
+				return assembly.Location;
+			}
+		}
+
+		public string Name {
+			get {
+				return aname.Name;
 			}
 		}
 
+		#endregion
+
+		public byte[] GetPublicKeyToken ()
+		{
+			return aname.GetPublicKeyToken ();
+		}
+
+		public AssemblyName GetAssemblyVisibleToName (IAssemblyDefinition assembly)
+		{
+			return internals_visible_to_cache [assembly];
+		}
+
+		public bool IsFriendAssemblyTo (IAssemblyDefinition assembly)
+		{
+			if (internals_visible_to == null)
+				return false;
+
+			AssemblyName is_visible = null;
+			if (internals_visible_to_cache == null) {
+				internals_visible_to_cache = new Dictionary<IAssemblyDefinition, AssemblyName> ();
+			} else {
+				if (internals_visible_to_cache.TryGetValue (assembly, out is_visible))
+					return is_visible != null;
+			}
+
+			var token = assembly.GetPublicKeyToken ();
+			if (token != null && token.Length == 0)
+				token = null;
+
+			foreach (var internals in internals_visible_to) {
+				if (internals.Name != assembly.Name)
+					continue;
+
+				if (token == null && assembly is AssemblyDefinition) {
+					is_visible = internals;
+					break;
+				}
+
+				if (!ArrayComparer.IsEqual (token, internals.GetPublicKeyToken ()))
+					continue;
+
+				is_visible = internals;
+				break;
+			}
+
+			internals_visible_to_cache.Add (assembly, is_visible);
+			return is_visible != null;
+		}
+
+		public void ReadAttributes ()
+		{
+			IList<CustomAttributeData> attrs = CustomAttributeData.GetCustomAttributes (assembly);
+
+			string ns, name;
+			foreach (var a in attrs) {
+				importer.GetCustomAttributeTypeName (a, out ns, out name);
+
+				if (name == "CLSCompliantAttribute") {
+					if (ns == "System")
+						cls_compliant = (bool) a.ConstructorArguments[0].Value;
+					continue;
+				}
+
+				if (name == "InternalsVisibleToAttribute") {
+					if (ns != MetadataImporter.CompilerServicesNamespace)
+						continue;
+
+					string s = a.ConstructorArguments[0].Value as string;
+					if (s == null)
+						continue;
+
+					var an = new AssemblyName (s);
+					if (internals_visible_to == null)
+						internals_visible_to = new List<AssemblyName> ();
+
+					internals_visible_to.Add (an);
+					continue;
+				}
+
+				if (name == "ExtensionAttribute") {
+					if (ns == MetadataImporter.CompilerServicesNamespace)
+						contains_extension_methods = true;
+
+					continue;
+				}
+			}
+		}
+
+		public override string ToString ()
+		{
+			return FullName;
+		}
+	}
+
+	class ImportedMemberDefinition : ImportedDefinition
+	{
+		readonly TypeSpec type;
+
+		public ImportedMemberDefinition (MemberInfo member, TypeSpec type, MetadataImporter importer)
+			: base (member, importer)
+		{
+			this.type = type;
+		}
+
+		#region Properties
+
 		public TypeSpec MemberType {
 			get {
-				throw new NotImplementedException ();
+				return type;
 			}
 		}
 
 		#endregion
+
+		public override List<MissingType> ResolveMissingDependencies ()
+		{
+			return type.GetMissingDependencies ();
+		}
 	}
 
-	class ImportedGenericMethodDefinition : ImportedMethodDefinition, IGenericMethodDefinition
+	class ImportedParameterMemberDefinition : ImportedMemberDefinition, IParametersMember
 	{
-		TypeParameterSpec[] tparams;
+		readonly AParametersCollection parameters;
+
+		public ImportedParameterMemberDefinition (MethodBase provider, TypeSpec type, AParametersCollection parameters, MetadataImporter importer)
+			: base (provider, type, importer)
+		{
+			this.parameters = parameters;
+		}
+
+		public ImportedParameterMemberDefinition (PropertyInfo provider, TypeSpec type, AParametersCollection parameters, MetadataImporter importer)
+			: base (provider, type, importer)
+		{
+			this.parameters = parameters;
+		}
+
+		#region Properties
+
+		public AParametersCollection Parameters {
+			get {
+				return parameters;
+			}
+		}
+
+		#endregion
+
+		public override List<MissingType> ResolveMissingDependencies ()
+		{
+			var missing = base.ResolveMissingDependencies ();
+			foreach (var pt in parameters.Types) {
+				var m = pt.GetMissingDependencies ();
+				if (m == null)
+					continue;
+
+				if (missing == null)
+					missing = new List<MissingType> ();
+
+				missing.AddRange (m);
+			}
+
+			return missing;
+		}
+	}
+
+	class ImportedGenericMethodDefinition : ImportedParameterMemberDefinition, IGenericMethodDefinition
+	{
+		readonly TypeParameterSpec[] tparams;
 
-		public ImportedGenericMethodDefinition (MethodInfo provider, AParametersCollection parameters, TypeParameterSpec[] tparams)
-			: base (provider, parameters)
+		public ImportedGenericMethodDefinition (MethodInfo provider, TypeSpec type, AParametersCollection parameters, TypeParameterSpec[] tparams, MetadataImporter importer)
+			: base (provider, type, parameters, importer)
 		{
 			this.tparams = tparams;
 		}
@@ -1069,26 +1638,33 @@ namespace Mono.CSharp
 		#endregion
 	}
 
-	class ImportedTypeDefinition : ImportedMemberDefinition, ITypeDefinition
+	class ImportedTypeDefinition : ImportedDefinition, ITypeDefinition
 	{
 		TypeParameterSpec[] tparams;
 		string name;
-		ReflectionMetaImporter meta_import;
 
-		public ImportedTypeDefinition (ReflectionMetaImporter metaImport, Type type)
-			: base (type)
+		public ImportedTypeDefinition (MetaType type, MetadataImporter importer)
+			: base (type, importer)
 		{
-			this.meta_import = metaImport;
 		}
 
 		#region Properties
 
+		public IAssemblyDefinition DeclaringAssembly {
+			get {
+				return importer.GetAssemblyDefinition (provider.Module.Assembly);
+			}
+		}
+
 		public override string Name {
 			get {
 				if (name == null) {
 					name = base.Name;
-					if (tparams != null)
-						name = name.Substring (0, name.IndexOf ('`'));
+					if (tparams != null) {
+						int arity_start = name.IndexOf ('`');
+						if (arity_start > 0)
+							name = name.Substring (0, arity_start);
+					}
 				}
 
 				return name;
@@ -1097,7 +1673,7 @@ namespace Mono.CSharp
 
 		public string Namespace {
 			get {
-				return ((Type) provider).Namespace;
+				return ((MetaType) provider).Namespace;
 			}
 		}
 
@@ -1118,14 +1694,31 @@ namespace Mono.CSharp
 
 		#endregion
 
+		public static void Error_MissingDependency (IMemberContext ctx, List<MissingType> types, Location loc)
+		{
+			foreach (var t in types) {
+				string name = t.Name;
+				if (t.Namespace != null)
+					name = t.Namespace + "." + name;
+
+				if (t.Module.Assembly.GetName ().Name == ctx.Module.DeclaringAssembly.Name) {
+					ctx.Compiler.Report.Warning (1683, 1, loc,
+						"Reference to type `{0}' claims it is defined in this assembly, but it is not defined in source or any added modules",
+						name);
+				}
+
+				ctx.Compiler.Report.Error (12, loc,
+					"The type `{0}' is defined in an assembly that is not referenced. Consider adding a reference to assembly `{1}'",
+					name, t.Module.Assembly.FullName);
+			}
+		}
+
 		public TypeSpec GetAttributeCoClass ()
 		{
-			// TODO: Use ReadAttributes
-			var attr =  provider.GetCustomAttributes (typeof (CoClassAttribute), false);
-			if (attr.Length < 1)
-				return null;
+			if (cattrs == null)
+				ReadAttributes ();
 
-			return meta_import.CreateType (((CoClassAttribute) attr[0]).CoClass);
+			return cattrs.CoClass;
 		}
 
 		public string GetAttributeDefaultMember ()
@@ -1144,15 +1737,23 @@ namespace Mono.CSharp
 			return cattrs.AttributeUsage;
 		}
 
-		public MemberCache LoadMembers (TypeSpec declaringType)
+		bool ITypeDefinition.IsInternalAsPublic (IAssemblyDefinition assembly)
+		{
+			var a = importer.GetAssemblyDefinition (provider.Module.Assembly);
+			return a == assembly || a.IsFriendAssemblyTo (assembly);
+		}
+
+		public void LoadMembers (TypeSpec declaringType, bool onlyTypes, ref MemberCache cache)
 		{
 			//
 			// Not interested in members of nested private types unless the importer needs them
 			//
-			if (declaringType.IsPrivate && meta_import.IgnorePrivateMembers)
-				return MemberCache.Empty;
+			if (declaringType.IsPrivate && importer.IgnorePrivateMembers) {
+				cache = MemberCache.Empty;
+				return;
+			}
 
-			var loading_type = (Type) provider;
+			var loading_type = (MetaType) provider;
 			const BindingFlags all_members = BindingFlags.DeclaredOnly |
 				BindingFlags.Static | BindingFlags.Instance |
 				BindingFlags.Public | BindingFlags.NonPublic;
@@ -1171,131 +1772,166 @@ namespace Mono.CSharp
 				all = loading_type.GetMembers (all_members);
 			} catch (Exception e) {
 				throw new InternalErrorException (e, "Could not import type `{0}' from `{1}'",
-					declaringType.GetSignatureForError (), declaringType.Assembly.Location);
+					declaringType.GetSignatureForError (), declaringType.MemberDefinition.DeclaringAssembly.FullName);
 			}
 
-			//
-			// The logic here requires methods to be returned first which seems to work for both Mono and .NET
-			//
-			var cache = new MemberCache (all.Length);
-			foreach (var member in all) {
-				switch (member.MemberType) {
-				case MemberTypes.Constructor:
-				case MemberTypes.Method:
-					MethodBase mb = (MethodBase) member;
-
-					// Ignore explicitly implemented members
-					if ((mb.Attributes & explicit_impl) == explicit_impl && (mb.Attributes & MethodAttributes.MemberAccessMask) == MethodAttributes.Private)
+			if (cache == null) {
+				cache = new MemberCache (all.Length);
+
+				//
+				// Do the types first as they can be referenced by the members before
+				// they are found or inflated
+				//
+				foreach (var member in all) {
+					if (member.MemberType != MemberTypes.NestedType)
 						continue;
 
-					// Ignore compiler generated methods
-					if (mb.IsPrivate && mb.IsDefined (typeof (CompilerGeneratedAttribute), false))
+					var t = (MetaType) member;
+
+					// Ignore compiler generated types, mostly lambda containers
+					if ((t.Attributes & TypeAttributes.VisibilityMask) == TypeAttributes.NestedPrivate)
 						continue;
 
-					imported = meta_import.CreateMethod (mb, declaringType);
-					if (imported.Kind == MemberKind.Method && !imported.IsGeneric) {
-						if (possible_accessors == null)
-							possible_accessors = new Dictionary<MethodBase, MethodSpec> (ReferenceEquality<MethodBase>.Default);
+					imported = importer.CreateNestedType (t, declaringType);
+					cache.AddMember (imported);
+				}
 
-						// There are no metadata rules for accessors, we have to consider any method as possible candidate
-						possible_accessors.Add (mb, (MethodSpec) imported);
-					}
+				foreach (var member in all) {
+					if (member.MemberType != MemberTypes.NestedType)
+						continue;
 
-					break;
-				case MemberTypes.Property:
-					if (possible_accessors == null)
+					var t = (MetaType) member;
+
+					if ((t.Attributes & TypeAttributes.VisibilityMask) == TypeAttributes.NestedPrivate)
 						continue;
 
-					var p = (PropertyInfo) member;
-					//
-					// Links possible accessors with property
-					//
-					MethodSpec get, set;
-					m = p.GetGetMethod (true);
-					if (m == null || !possible_accessors.TryGetValue (m, out get))
-						get = null;
+					importer.ImportTypeBase (t);
+				}
+			}
 
-					m = p.GetSetMethod (true);
-					if (m == null || !possible_accessors.TryGetValue (m, out set))
-						set = null;
+			if (!onlyTypes) {
+				//
+				// The logic here requires methods to be returned first which seems to work for both Mono and .NET
+				//
+				foreach (var member in all) {
+					switch (member.MemberType) {
+					case MemberTypes.Constructor:
+					case MemberTypes.Method:
+						MethodBase mb = (MethodBase) member;
+						var attrs = mb.Attributes;
+
+						if ((attrs & MethodAttributes.MemberAccessMask) == MethodAttributes.Private) {
+							if (importer.IgnorePrivateMembers)
+								continue;
+
+							// Ignore explicitly implemented members
+							if ((attrs & explicit_impl) == explicit_impl)
+								continue;
+
+							// Ignore compiler generated methods
+							if (importer.HasAttribute (CustomAttributeData.GetCustomAttributes (mb), "CompilerGeneratedAttribute", MetadataImporter.CompilerServicesNamespace))
+								continue;
+						}
 
-					// No accessors registered (e.g. explicit implementation)
-					if (get == null && set == null)
-						continue;
+						imported = importer.CreateMethod (mb, declaringType);
+						if (imported.Kind == MemberKind.Method && !imported.IsGeneric) {
+							if (possible_accessors == null)
+								possible_accessors = new Dictionary<MethodBase, MethodSpec> (ReferenceEquality<MethodBase>.Default);
 
-					imported = meta_import.CreateProperty (p, declaringType, get, set);
-					if (imported == null)
-						continue;
+							// There are no metadata rules for accessors, we have to consider any method as possible candidate
+							possible_accessors.Add (mb, (MethodSpec) imported);
+						}
 
-					break;
-				case MemberTypes.Event:
-					if (possible_accessors == null)
-						continue;
+						break;
+					case MemberTypes.Property:
+						if (possible_accessors == null)
+							continue;
 
-					var e = (EventInfo) member;
-					//
-					// Links accessors with event
-					//
-					MethodSpec add, remove;
-					m = e.GetAddMethod (true);
-					if (m == null || !possible_accessors.TryGetValue (m, out add))
-						add = null;
+						var p = (PropertyInfo) member;
+						//
+						// Links possible accessors with property
+						//
+						MethodSpec get, set;
+						m = p.GetGetMethod (true);
+						if (m == null || !possible_accessors.TryGetValue (m, out get))
+							get = null;
 
-					m = e.GetRemoveMethod (true);
-					if (m == null || !possible_accessors.TryGetValue (m, out remove))
-						remove = null;
+						m = p.GetSetMethod (true);
+						if (m == null || !possible_accessors.TryGetValue (m, out set))
+							set = null;
 
-					// Both accessors are required
-					if (add == null || remove == null)
-						continue;
+						// No accessors registered (e.g. explicit implementation)
+						if (get == null && set == null)
+							continue;
 
-					event_spec = meta_import.CreateEvent (e, declaringType, add, remove);
-					if (!meta_import.IgnorePrivateMembers) {
-						if (imported_events == null)
-							imported_events = new List<EventSpec> ();
+						imported = importer.CreateProperty (p, declaringType, get, set);
+						if (imported == null)
+							continue;
 
-						imported_events.Add (event_spec);
-					}
+						break;
+					case MemberTypes.Event:
+						if (possible_accessors == null)
+							continue;
 
-					imported = event_spec;
-					break;
-				case MemberTypes.Field:
-					var fi = (FieldInfo) member;
+						var e = (EventInfo) member;
+						//
+						// Links accessors with event
+						//
+						MethodSpec add, remove;
+						m = e.GetAddMethod (true);
+						if (m == null || !possible_accessors.TryGetValue (m, out add))
+							add = null;
 
-					imported = meta_import.CreateField (fi, declaringType);
-					if (imported == null)
-						continue;
+						m = e.GetRemoveMethod (true);
+						if (m == null || !possible_accessors.TryGetValue (m, out remove))
+							remove = null;
 
-					//
-					// For dynamic binder event has to be fully restored to allow operations
-					// within the type container to work correctly
-					//
-					if (imported_events != null) {
-						// The backing event field should be private but it may not
-						int index = imported_events.FindIndex (l => l.Name == fi.Name);
-						if (index >= 0) {
-							event_spec = imported_events[index];
-							event_spec.BackingField = (FieldSpec) imported;
-							imported_events.RemoveAt (index);
+						// Both accessors are required
+						if (add == null || remove == null)
 							continue;
+
+						event_spec = importer.CreateEvent (e, declaringType, add, remove);
+						if (!importer.IgnorePrivateMembers) {
+							if (imported_events == null)
+								imported_events = new List<EventSpec> ();
+
+							imported_events.Add (event_spec);
 						}
-					}
 
-					break;
-				case MemberTypes.NestedType:
-					Type t = (Type) member;
+						imported = event_spec;
+						break;
+					case MemberTypes.Field:
+						var fi = (FieldInfo) member;
 
-					// Ignore compiler generated types, mostly lambda containers
-					if (t.IsNotPublic && t.IsDefined (typeof (CompilerGeneratedAttribute), false))
+						imported = importer.CreateField (fi, declaringType);
+						if (imported == null)
+							continue;
+
+						//
+						// For dynamic binder event has to be fully restored to allow operations
+						// within the type container to work correctly
+						//
+						if (imported_events != null) {
+							// The backing event field should be private but it may not
+							int index = imported_events.FindIndex (l => l.Name == fi.Name);
+							if (index >= 0) {
+								event_spec = imported_events[index];
+								event_spec.BackingField = (FieldSpec) imported;
+								imported_events.RemoveAt (index);
+								continue;
+							}
+						}
+
+						break;
+					case MemberTypes.NestedType:
+						// Already in the cache from the first pass
 						continue;
+					default:
+						throw new NotImplementedException (member.ToString ());
+					}
 
-					imported = meta_import.CreateType (t, declaringType);
-					break;
-				default:
-					throw new NotImplementedException (member.ToString ());
+					cache.AddMember (imported);
 				}
-
-				cache.AddMember (imported);
 			}
 
 			if (declaringType.IsInterface && declaringType.Interfaces != null) {
@@ -1303,20 +1939,54 @@ namespace Mono.CSharp
 					cache.AddInterface (iface);
 				}
 			}
+		}
 
-			return cache;
+		public override List<MissingType> ResolveMissingDependencies ()
+		{
+#if STATIC
+			List<MissingType> missing = null;
+
+			MetaType mt = (MetaType) provider;
+			do {
+				if (mt is MissingType) {
+					missing = new List<MissingType> ();
+					missing.Add ((MissingType) mt);
+				}
+
+				foreach (var iface in mt.GetInterfaces ()) {
+					if (iface is MissingType) {
+						if (missing == null)
+							missing = new List<MissingType> ();
+
+						missing.Add ((MissingType) iface);
+					}
+				}
+
+				if (missing != null)
+					return missing;
+
+				mt = mt.BaseType;
+			} while (mt != null);
+#endif
+			return null;
 		}
 	}
 
-	class ImportedTypeParameterDefinition : ImportedMemberDefinition, ITypeDefinition
+	class ImportedTypeParameterDefinition : ImportedDefinition, ITypeDefinition
 	{
-		public ImportedTypeParameterDefinition (Type type)
-			: base (type)
+		public ImportedTypeParameterDefinition (MetaType type, MetadataImporter importer)
+			: base (type, importer)
 		{
 		}
 
 		#region Properties
 
+		public IAssemblyDefinition DeclaringAssembly {
+			get {
+				throw new NotImplementedException ();
+			}
+		}
+
 		public string Namespace {
 			get {
 				return null;
@@ -1352,9 +2022,19 @@ namespace Mono.CSharp
 			throw new NotSupportedException ();
 		}
 
-		public MemberCache LoadMembers (TypeSpec declaringType)
+		bool ITypeDefinition.IsInternalAsPublic (IAssemblyDefinition assembly)
+		{
+			throw new NotImplementedException ();
+		}
+
+		public void LoadMembers (TypeSpec declaringType, bool onlyTypes, ref MemberCache cache)
 		{
 			throw new NotImplementedException ();
 		}
+
+		public override List<MissingType> ResolveMissingDependencies ()
+		{
+			return null;
+		}
 	}
 }
diff --git a/mcs/mcs/iterators.cs b/mcs/mcs/iterators.cs
index 5511b0a..37a9b00 100644
--- a/mcs/mcs/iterators.cs
+++ b/mcs/mcs/iterators.cs
@@ -16,8 +16,12 @@
 
 using System;
 using System.Collections.Generic;
-using System.Reflection;
+
+#if STATIC
+using IKVM.Reflection.Emit;
+#else
 using System.Reflection.Emit;
+#endif
 
 namespace Mono.CSharp {
 
@@ -35,10 +39,6 @@ namespace Mono.CSharp {
 
 		public static bool CheckContext (ResolveContext ec, Location loc)
 		{
-			//
-			// We can't use `ec.InUnsafe' here because it's allowed to have an iterator
-			// inside an unsafe class.  See test-martin-29.cs for an example.
-			//
 			if (!ec.CurrentAnonymousMethod.IsIterator) {
 				ec.Report.Error (1621, loc,
 					      "The yield statement cannot be used inside " +
@@ -119,66 +119,8 @@ namespace Mono.CSharp {
 		}
 	}
 
-	//
-	// Wraps method block into iterator wrapper block
-	//
-	class IteratorStatement : Statement
-	{
-		Iterator iterator;
-		Block original_block;
-
-		public IteratorStatement (Iterator iterator, Block original_block)
-		{
-			this.iterator = iterator;
-			this.original_block = original_block;
-			this.loc = iterator.Location;
-		}
-
-		protected override void CloneTo (CloneContext clonectx, Statement target)
-		{
-			IteratorStatement t = (IteratorStatement) target;
-			t.original_block = (ExplicitBlock) original_block.Clone (clonectx);
-			t.iterator = (Iterator) iterator.Clone (clonectx);
-		}
-
-		public override bool Resolve (BlockContext ec)
-		{
-			ec.StartFlowBranching (iterator);
-			bool ok = original_block.Resolve (ec);
-			ec.EndFlowBranching ();
-			return ok;
-		}
-
-		protected override void DoEmit (EmitContext ec)
-		{
-			iterator.EmitMoveNext (ec, original_block);
-		}
-	}
-
 	public class IteratorStorey : AnonymousMethodStorey
 	{
-		class IteratorMethod : Method
-		{
-			readonly IteratorStorey host;
-
-			public IteratorMethod (IteratorStorey host, FullNamedExpression returnType, Modifiers mod, MemberName name)
-				: base (host, null, returnType, mod | Modifiers.DEBUGGER_HIDDEN | Modifiers.COMPILER_GENERATED,
-				  name, ParametersCompiled.EmptyReadOnlyParameters, null)
-			{
-				this.host = host;
-
-				Block = new ToplevelBlock (Compiler, host.Iterator.Container.Toplevel, ParametersCompiled.EmptyReadOnlyParameters, Location);
-			}
-
-			public override EmitContext CreateEmitContext (ILGenerator ig)
-			{
-				EmitContext ec = new EmitContext (this, ig, MemberType);
-
-				ec.CurrentAnonymousMethod = host.Iterator;
-				return ec;
-			}
-		}
-
 		class GetEnumeratorMethod : IteratorMethod
 		{
 			sealed class GetEnumeratorStatement : Statement
@@ -238,22 +180,20 @@ namespace Mono.CSharp {
 					if (new_storey != null)
 						new_storey = Convert.ImplicitConversionRequired (ec, new_storey, host_method.MemberType, loc);
 
-					if (TypeManager.int_interlocked_compare_exchange == null) {
-						TypeSpec t = TypeManager.CoreLookupType (ec.Compiler, "System.Threading", "Interlocked", MemberKind.Class, true);
-						if (t != null) {
-							var p = new ParametersImported (
-								new[] {
+					var t = ec.Module.PredefinedTypes.Interlocked.Resolve (loc);
+					if (t != null) {
+						var p = new ParametersImported (
+							new[] {
 									new ParameterData (null, Parameter.Modifier.REF),
 									new ParameterData (null, Parameter.Modifier.NONE),
 									new ParameterData (null, Parameter.Modifier.NONE)
 								},
-								new[] {
+							new[] {
 									TypeManager.int32_type, TypeManager.int32_type, TypeManager.int32_type
 								},
-								false);
-							var f = new MemberFilter ("CompareExchange", 0, MemberKind.Method, p, TypeManager.int32_type);
-							TypeManager.int_interlocked_compare_exchange = TypeManager.GetPredefinedMethod (t, f, loc);
-						}
+							false);
+						var f = new MemberFilter ("CompareExchange", 0, MemberKind.Method, p, TypeManager.int32_type);
+						TypeManager.int_interlocked_compare_exchange = TypeManager.GetPredefinedMethod (t, f, loc);
 					}
 
 					ec.CurrentBranching.CurrentUsageVector.Goto ();
@@ -284,7 +224,7 @@ namespace Mono.CSharp {
 			}
 
 			public GetEnumeratorMethod (IteratorStorey host, FullNamedExpression returnType, MemberName name)
-				: base (host, returnType, 0, name)
+				: base (host, returnType, Modifiers.DEBUGGER_HIDDEN, name)
 			{
 				Block.AddStatement (new GetEnumeratorStatement (host, this));
 			}
@@ -319,11 +259,11 @@ namespace Mono.CSharp {
 			}
 
 			public DisposeMethod (IteratorStorey host)
-				: base (host, new TypeExpression (TypeManager.void_type, host.Location), Modifiers.PUBLIC, new MemberName ("Dispose", host.Location))
+				: base (host, new TypeExpression (TypeManager.void_type, host.Location), Modifiers.PUBLIC | Modifiers.DEBUGGER_HIDDEN,
+					new MemberName ("Dispose", host.Location))
 			{
 				host.AddMethod (this);
 
-				Block = new ToplevelBlock (Compiler, host.Iterator.Container, ParametersCompiled.EmptyReadOnlyParameters, Location);
 				Block.AddStatement (new DisposeMethodStatement (host.Iterator));
 			}
 		}
@@ -386,7 +326,7 @@ namespace Mono.CSharp {
 		int local_name_idx;
 
 		public IteratorStorey (Iterator iterator)
-			: base (iterator.Container.Toplevel, iterator.Host,
+			: base (iterator.Container.ParametersBlock, iterator.Host,
 			  iterator.OriginalMethod as MemberBase, iterator.GenericMethod == null ? null : iterator.GenericMethod.CurrentTypeParameters, "Iterator")
 		{
 			this.Iterator = iterator;
@@ -433,10 +373,9 @@ namespace Mono.CSharp {
 
 			list.Add (new TypeExpression (TypeManager.idisposable_type, Location));
 
-			if (TypeManager.generic_ienumerator_type != null) {
-				generic_enumerator_type = new GenericTypeExpr (
-					TypeManager.generic_ienumerator_type,
-					generic_args, Location);
+			var ienumerator_generic = Module.PredefinedTypes.IEnumeratorGeneric;
+			if (ienumerator_generic.Define ()) {
+				generic_enumerator_type = new GenericTypeExpr (ienumerator_generic.TypeSpec, generic_args, Location);
 				list.Add (generic_enumerator_type);
 			}
 
@@ -445,7 +384,7 @@ namespace Mono.CSharp {
 			return base.ResolveBaseTypes (out base_class);
 		}
 
-		protected override string GetVariableMangledName (LocalInfo local_info)
+		protected override string GetVariableMangledName (LocalVariable local_info)
 		{
 			return "<" + local_info.Name + ">__" + local_name_idx++.ToString ();
 		}
@@ -555,7 +494,7 @@ namespace Mono.CSharp {
 
 			reset.Block = new ToplevelBlock (Compiler, Location);
 
-			TypeSpec ex_type = TypeManager.CoreLookupType (Compiler, "System", "NotSupportedException", MemberKind.Class, true);
+			TypeSpec ex_type = Module.PredefinedTypes.NotSupportedException.Resolve (Location);
 			if (ex_type == null)
 				return;
 
@@ -563,12 +502,60 @@ namespace Mono.CSharp {
 		}
 	}
 
+	class IteratorMethod : Method
+	{
+		readonly IteratorStorey host;
+
+		public IteratorMethod (IteratorStorey host, FullNamedExpression returnType, Modifiers mod, MemberName name)
+			: base (host, null, returnType, mod | Modifiers.COMPILER_GENERATED,
+			  name, ParametersCompiled.EmptyReadOnlyParameters, null)
+		{
+			this.host = host;
+
+			Block = new ToplevelBlock (host.Compiler, ParametersCompiled.EmptyReadOnlyParameters, Location);
+		}
+
+		public override EmitContext CreateEmitContext (ILGenerator ig)
+		{
+			EmitContext ec = new EmitContext (this, ig, MemberType);
+
+			ec.CurrentAnonymousMethod = host.Iterator;
+			return ec;
+		}
+	}
+
 	//
 	// Iterators are implemented as hidden anonymous block
 	//
-	public class Iterator : AnonymousExpression {
+	public class Iterator : AnonymousExpression
+	{
+		sealed class MoveNextMethodStatement : Statement
+		{
+			Iterator iterator;
+
+			public MoveNextMethodStatement (Iterator iterator)
+			{
+				this.iterator = iterator;
+				this.loc = iterator.Location;
+			}
+
+			protected override void CloneTo (CloneContext clonectx, Statement target)
+			{
+				throw new NotSupportedException ();
+			}
+
+			public override bool Resolve (BlockContext ec)
+			{
+				return true;
+			}
+
+			protected override void DoEmit (EmitContext ec)
+			{
+				iterator.EmitMoveNext (ec);
+			}
+		}
+
 		public readonly IMethodData OriginalMethod;
-		AnonymousMethodMethod method;
 		public readonly TypeContainer Host;
 		public readonly bool IsEnumerable;
 		List<ResumableStatement> resume_points;
@@ -597,7 +584,7 @@ namespace Mono.CSharp {
 
 		public readonly TypeSpec OriginalIteratorType;
 
-		readonly IteratorStorey IteratorHost;
+		IteratorStorey IteratorHost;
 
 		public enum State {
 			Running = -3, // Used only in CurrentPC, never stored into $PC
@@ -632,13 +619,13 @@ namespace Mono.CSharp {
 			ec.Emit (OpCodes.Ret);
 		}
 
-		internal void EmitMoveNext (EmitContext ec, Block original_block)
+		void EmitMoveNext (EmitContext ec)
 		{
 			move_next_ok = ec.DefineLabel ();
 			move_next_error = ec.DefineLabel ();
 
 			if (resume_points == null) {
-				EmitMoveNext_NoResumePoints (ec, original_block);
+				EmitMoveNext_NoResumePoints (ec, block);
 				return;
 			}
 
@@ -678,7 +665,7 @@ namespace Mono.CSharp {
 			ec.MarkLabel (labels [0]);
 
 			SymbolWriter.StartIteratorBody (ec);
-			original_block.Emit (ec);
+			block.Emit (ec);
 			SymbolWriter.EndIteratorBody (ec);
 
 			SymbolWriter.StartIteratorDispatcher (ec);
@@ -777,34 +764,29 @@ namespace Mono.CSharp {
 			ec.MarkLabel (resume_point);
 		}
 
-		public override string ContainerType {
-			get { return "iterator"; }
-		}
-
-		public override bool IsIterator {
-			get { return true; }
-		}
-
-		public override AnonymousMethodStorey Storey {
-			get { return IteratorHost; }
-		}
-
 		//
 		// Our constructor
 		//
-		private Iterator (CompilerContext ctx, IMethodData method, TypeContainer host, TypeSpec iterator_type, bool is_enumerable)
-			: base (
-				new ToplevelBlock (ctx, method.Block, ParametersCompiled.EmptyReadOnlyParameters, method.Block.StartLocation),
-				TypeManager.bool_type,
-				method.Location)
+		public Iterator (ParametersBlock block, IMethodData method, TypeContainer host, TypeSpec iterator_type, bool is_enumerable)
+			: base (block, TypeManager.bool_type, block.StartLocation)
 		{
 			this.OriginalMethod = method;
 			this.OriginalIteratorType = iterator_type;
 			this.IsEnumerable = is_enumerable;
 			this.Host = host;
 			this.type = method.ReturnType;
+		}
+
+		public override string ContainerType {
+			get { return "iterator"; }
+		}
 
-			IteratorHost = Block.ChangeToIterator (this, method.Block);
+		public override bool IsIterator {
+			get { return true; }
+		}
+
+		public override AnonymousMethodStorey Storey {
+			get { return IteratorHost; }
 		}
 
 		public override string GetSignatureForError ()
@@ -814,14 +796,19 @@ namespace Mono.CSharp {
 
 		protected override Expression DoResolve (ResolveContext ec)
 		{
-			method = new AnonymousMethodMethod (Storey,
-				this, Storey, null, new TypeExpression (TypeManager.bool_type, loc),
-				Modifiers.PUBLIC, OriginalMethod.GetSignatureForError (),
-				new MemberName ("MoveNext", Location),
-				ParametersCompiled.EmptyReadOnlyParameters);
+			IteratorHost = (IteratorStorey) block.TopBlock.AnonymousMethodStorey;
+
+			BlockContext ctx = new BlockContext (ec, block, ReturnType);
+			ctx.CurrentAnonymousMethod = this;
 
-			if (Compatible (ec) == null)
-				return null;
+			ctx.StartFlowBranching (this, ec.CurrentBranching);
+			Block.Resolve (ctx);
+			ctx.EndFlowBranching ();
+
+			var move_next = new IteratorMethod (IteratorHost, new TypeExpression (TypeManager.bool_type, loc),
+				Modifiers.PUBLIC, new MemberName ("MoveNext", Location));
+			move_next.Block.AddStatement (new MoveNextMethodStatement (this));
+			IteratorHost.AddMethod (move_next);
 
 			eclass = ExprClass.Value;
 			return this;
@@ -832,7 +819,7 @@ namespace Mono.CSharp {
 			//
 			// Load Iterator storey instance
 			//
-			method.Storey.Instance.Emit (ec);
+			IteratorHost.Instance.Emit (ec);
 
 			//
 			// Initialize iterator PC when it's unitialized
@@ -899,11 +886,9 @@ namespace Mono.CSharp {
 
 			if ((modifiers & Modifiers.UNSAFE) != 0) {
 				ctx.Report.Error (1629, method.Location, "Unsafe code may not appear in iterators");
-				return;
 			}
 
-			// TODO: Ugly leftover
-			new Iterator (ctx, method, parent, iterator_type, is_enumerable);
+			method.Block.WrapIntoIterator (method, parent, iterator_type, is_enumerable);
 		}
 
 		static bool CheckType (TypeSpec ret, out TypeSpec original_iterator_type, out bool is_enumerable)
diff --git a/mcs/mcs/lambda.cs b/mcs/mcs/lambda.cs
index 817f9c2..e11a110 100644
--- a/mcs/mcs/lambda.cs
+++ b/mcs/mcs/lambda.cs
@@ -9,9 +9,11 @@
 // Copyright 2007-2008 Novell, Inc
 //
 
-using System;
-using System.Reflection;
+#if STATIC
+using IKVM.Reflection.Emit;
+#else
 using System.Reflection.Emit;
+#endif
 
 namespace Mono.CSharp {
 	public class LambdaExpression : AnonymousMethodExpression
@@ -31,7 +33,7 @@ namespace Mono.CSharp {
 			if (ec.IsInProbingMode)
 				return this;
 
-			BlockContext bc = new BlockContext (ec.MemberContext, ec.CurrentBlock.Explicit, TypeManager.void_type) {
+			BlockContext bc = new BlockContext (ec.MemberContext, ec.ConstructorBlock, TypeManager.void_type) {
 				CurrentAnonymousMethod = ec.CurrentAnonymousMethod
 			};
 
@@ -92,7 +94,7 @@ namespace Mono.CSharp {
 
 				ptypes [i] = d_param;
 				ImplicitLambdaParameter ilp = (ImplicitLambdaParameter) Parameters.FixedParameters [i];
-				ilp.Type = d_param;
+				ilp.SetParameterType (d_param);
 				ilp.Resolve (null, i);
 			}
 
@@ -100,7 +102,7 @@ namespace Mono.CSharp {
 			return Parameters;
 		}
 
-		protected override AnonymousMethodBody CompatibleMethodFactory (TypeSpec returnType, TypeSpec delegateType, ParametersCompiled p, ToplevelBlock b)
+		protected override AnonymousMethodBody CompatibleMethodFactory (TypeSpec returnType, TypeSpec delegateType, ParametersCompiled p, ParametersBlock b)
 		{
 			return new LambdaMethod (p, b, returnType, delegateType, loc);
 		}
@@ -126,7 +128,7 @@ namespace Mono.CSharp {
 	class LambdaMethod : AnonymousMethodBody
 	{
 		public LambdaMethod (ParametersCompiled parameters,
-					ToplevelBlock block, TypeSpec return_type, TypeSpec delegate_type,
+					ParametersBlock block, TypeSpec return_type, TypeSpec delegate_type,
 					Location loc)
 			: base (parameters, block, return_type, delegate_type, loc)
 		{
diff --git a/mcs/mcs/linq.cs b/mcs/mcs/linq.cs
index 8578323..afda915 100644
--- a/mcs/mcs/linq.cs
+++ b/mcs/mcs/linq.cs
@@ -9,7 +9,6 @@
 //
 
 using System;
-using System.Reflection;
 using System.Collections.Generic;
 
 namespace Mono.CSharp.Linq
@@ -113,7 +112,7 @@ namespace Mono.CSharp.Linq
 				if (source_type != null) {
 					Argument a = arguments[0];
 
-					if (TypeManager.IsGenericType (source_type) && TypeManager.ContainsGenericParameters (source_type)) {
+					if (TypeManager.IsGenericType (source_type) && InflatedTypeSpec.ContainsTypeParameter (source_type)) {
 						TypeInferenceContext tic = new TypeInferenceContext (source_type.TypeArguments);
 						tic.OutputTypeInference (rc, a.Expr, source_type);
 						if (tic.FixAllTypes (rc)) {
@@ -194,7 +193,8 @@ namespace Mono.CSharp.Linq
 
 		protected virtual Parameter CreateChildrenParameters (Parameter parameter)
 		{
-			return parameter;
+			// Have to clone the parameter for any children use, it carries block sensitive data
+			return parameter.Clone ();
 		}
 
 		protected virtual void CreateArguments (ResolveContext ec, Parameter parameter, ref Arguments args)
@@ -203,7 +203,7 @@ namespace Mono.CSharp.Linq
 
 			LambdaExpression selector = new LambdaExpression (loc);
 
-			block.SetParameter (parameter.Clone ());
+			block.SetParameter (parameter);
 			selector.Block = block;
 			selector.Block.AddStatement (new ContextualReturn (expr));
 
@@ -238,8 +238,8 @@ namespace Mono.CSharp.Linq
 	{
 		sealed class RangeAnonymousTypeParameter : AnonymousTypeParameter
 		{
-			public RangeAnonymousTypeParameter (Expression initializer, SimpleMemberName parameter)
-				: base (initializer, parameter.Value, parameter.Location)
+			public RangeAnonymousTypeParameter (Expression initializer, RangeVariable parameter)
+				: base (initializer, parameter.Name, parameter.Location)
 			{
 			}
 
@@ -250,12 +250,29 @@ namespace Mono.CSharp.Linq
 			}
 		}
 
-		protected SimpleMemberName range_variable;
+		class RangeParameterReference : ParameterReference
+		{
+			Parameter parameter;
+
+			public RangeParameterReference (Parameter p)
+				: base (null, p.Location)
+			{
+				this.parameter = p;
+			}
+
+			protected override Expression DoResolve (ResolveContext ec)
+			{
+				pi = ec.CurrentBlock.ParametersBlock.GetParameterInfo (parameter);
+				return base.DoResolve (ec);
+			}
+		}
+
+		protected RangeVariable identifier;
 
-		protected ARangeVariableQueryClause (QueryBlock block, SimpleMemberName identifier, Expression expr, Location loc)
+		protected ARangeVariableQueryClause (QueryBlock block, RangeVariable identifier, Expression expr, Location loc)
 			: base (block, expr, loc)
 		{
-			range_variable = identifier;
+			this.identifier = identifier;
 		}
 
 		public FullNamedExpression IdentifierType { get; set; }
@@ -268,26 +285,115 @@ namespace Mono.CSharp.Linq
 
 		protected override Parameter CreateChildrenParameters (Parameter parameter)
 		{
-			return new QueryBlock.TransparentParameter (parameter, GetIntoVariable ());
+			return new QueryBlock.TransparentParameter (parameter.Clone (), GetIntoVariable ());
 		}
 
-		protected static Expression CreateRangeVariableType (ResolveContext rc, Parameter parameter, SimpleMemberName name, Expression init)
+		protected static Expression CreateRangeVariableType (ResolveContext rc, Parameter parameter, RangeVariable name, Expression init)
 		{
 			var args = new List<AnonymousTypeParameter> (2);
-			args.Add (new AnonymousTypeParameter (parameter));
+
+			//
+			// The first argument is the reference to the parameter
+			//
+			args.Add (new AnonymousTypeParameter (new RangeParameterReference (parameter), parameter.Name, parameter.Location));
+
+			//
+			// The second argument is the linq expression
+			//
 			args.Add (new RangeAnonymousTypeParameter (init, name));
+
+			//
+			// Create unique anonymous type
+			//
 			return new NewAnonymousType (args, rc.MemberContext.CurrentMemberDefinition.Parent, name.Location);
 		}
 
-		protected virtual SimpleMemberName GetIntoVariable ()
+		protected virtual RangeVariable GetIntoVariable ()
 		{
-			return range_variable;
+			return identifier;
+		}
+	}
+
+	public sealed class RangeVariable : INamedBlockVariable
+	{
+		Block block;
+
+		public RangeVariable (string name, Location loc)
+		{
+			Name = name;
+			Location = loc;
+		}
+
+		#region Properties
+
+		public Block Block {
+			get {
+				return block;
+			}
+			set {
+				block = value;
+			}
+		}
+
+		public bool IsDeclared {
+			get {
+				return true;
+			}
+		}
+
+		public Location Location { get; private set; }
+
+		public string Name { get; private set; }
+
+		#endregion
+
+		public Expression CreateReferenceExpression (ResolveContext rc, Location loc)
+		{
+			Expression expr = null;
+
+			// 
+			// We know the variable name is somewhere in the scope. This generates
+			// an access expression from current block
+			//
+			var pb = rc.CurrentBlock.ParametersBlock;
+			while (true) {
+				if (pb is QueryBlock) {
+					for (int i = pb.Parameters.Count - 1; i >= 0; --i) {
+						var p = pb.Parameters[i];
+						if (p.Name == Name)
+							return pb.GetParameterReference (i, loc);
+
+						var tp = p as QueryBlock.TransparentParameter;
+						while (tp != null) {
+							if (expr == null)
+								expr = pb.GetParameterReference (i, loc);
+							else
+								expr = new TransparentMemberAccess (expr, tp.Name);
+
+							if (tp.Identifier == Name)
+								return new TransparentMemberAccess (expr, Name);
+
+							if (tp.Parent.Name == Name)
+								return new TransparentMemberAccess (expr, Name);
+
+							tp = tp.Parent as QueryBlock.TransparentParameter;
+						}
+					}
+
+					expr = null;
+				}
+
+				if (pb == block)
+					return null;
+
+				pb = pb.Parent.ParametersBlock;
+			}
 		}
 	}
 
 	class QueryStartClause : ARangeVariableQueryClause
 	{
-		public QueryStartClause (QueryBlock block, Expression expr, SimpleMemberName identifier, Location loc)
+		public QueryStartClause (QueryBlock block, Expression expr, RangeVariable identifier, Location loc)
 			: base (block, identifier, expr, loc)
 		{
 			block.AddRangeVariable (identifier);
@@ -314,7 +420,7 @@ namespace Mono.CSharp.Linq
 			if (parameter == null)
 				lSide = expr;
 
-			return next.BuildQueryClause (ec, lSide, new ImplicitLambdaParameter (range_variable.Value, range_variable.Location));
+			return next.BuildQueryClause (ec, lSide, new ImplicitLambdaParameter (identifier.Name, identifier.Location));
 		}
 
 		protected override Expression DoResolve (ResolveContext ec)
@@ -379,7 +485,7 @@ namespace Mono.CSharp.Linq
 	{
 		QueryBlock inner_selector, outer_selector;
 
-		public Join (QueryBlock block, SimpleMemberName lt, Expression inner, QueryBlock outerSelector, QueryBlock innerSelector, Location loc)
+		public Join (QueryBlock block, RangeVariable lt, Expression inner, QueryBlock outerSelector, QueryBlock innerSelector, Location loc)
 			: base (block, lt, inner, loc)
 		{
 			this.outer_selector = outerSelector;
@@ -400,7 +506,7 @@ namespace Mono.CSharp.Linq
 			lambda.Block = outer_selector;
 			args.Add (new Argument (lambda));
 
-			inner_selector.SetParameter (new ImplicitLambdaParameter (range_variable.Value, range_variable.Location));
+			inner_selector.SetParameter (new ImplicitLambdaParameter (identifier.Name, identifier.Location));
 			lambda = new LambdaExpression (inner_selector.StartLocation);
 			lambda.Block = inner_selector;
 			args.Add (new Argument (lambda));
@@ -423,16 +529,16 @@ namespace Mono.CSharp.Linq
 
 	public class GroupJoin : Join
 	{
-		readonly SimpleMemberName into;
+		readonly RangeVariable into;
 
-		public GroupJoin (QueryBlock block, SimpleMemberName lt, Expression inner,
-			QueryBlock outerSelector, QueryBlock innerSelector, SimpleMemberName into, Location loc)
+		public GroupJoin (QueryBlock block, RangeVariable lt, Expression inner,
+			QueryBlock outerSelector, QueryBlock innerSelector, RangeVariable into, Location loc)
 			: base (block, lt, inner, outerSelector, innerSelector, loc)
 		{
 			this.into = into;
 		}
 
-		protected override SimpleMemberName GetIntoVariable ()
+		protected override RangeVariable GetIntoVariable ()
 		{
 			return into;
 		}
@@ -444,14 +550,14 @@ namespace Mono.CSharp.Linq
 
 	public class Let : ARangeVariableQueryClause
 	{
-		public Let (QueryBlock block, SimpleMemberName identifier, Expression expr, Location loc)
+		public Let (QueryBlock block, RangeVariable identifier, Expression expr, Location loc)
 			: base (block, identifier, expr, loc)
 		{
 		}
 
 		protected override void CreateArguments (ResolveContext ec, Parameter parameter, ref Arguments args)
 		{
-			expr = CreateRangeVariableType (ec, parameter, range_variable, expr);
+			expr = CreateRangeVariableType (ec, parameter, identifier, expr);
 			base.CreateArguments (ec, parameter, ref args);
 		}
 
@@ -487,7 +593,7 @@ namespace Mono.CSharp.Linq
 
 	public class SelectMany : ARangeVariableQueryClause
 	{
-		public SelectMany (QueryBlock block, SimpleMemberName identifier, Expression expr, Location loc)
+		public SelectMany (QueryBlock block, RangeVariable identifier, Expression expr, Location loc)
 			: base (block, identifier, expr, loc)
 		{
 		}
@@ -498,14 +604,14 @@ namespace Mono.CSharp.Linq
 				if (IdentifierType != null)
 					expr = CreateCastExpression (expr);
 
-				base.CreateArguments (ec, parameter, ref args);
+				base.CreateArguments (ec, parameter.Clone (), ref args);
 			}
 
 			Expression result_selector_expr;
 			QueryBlock result_block;
 
 			var target = GetIntoVariable ();
-			var target_param = new ImplicitLambdaParameter (target.Value, target.Location);
+			var target_param = new ImplicitLambdaParameter (target.Name, target.Location);
 
 			//
 			// When select follows use it as a result selector
@@ -518,7 +624,7 @@ namespace Mono.CSharp.Linq
 
 				next = next.next;
 			} else {
-				result_selector_expr = CreateRangeVariableType (ec, parameter, target, new SimpleName (target.Value, target.Location));
+				result_selector_expr = CreateRangeVariableType (ec, parameter, target, new SimpleName (target.Name, target.Location));
 
 				result_block = new QueryBlock (ec.Compiler, block.Parent, block.StartLocation);
 				result_block.SetParameters (parameter, target_param);
@@ -546,11 +652,6 @@ namespace Mono.CSharp.Linq
 		protected override string MethodName {
 			get { return "Where"; }
 		}
-
-		protected override void CreateArguments (ResolveContext ec, Parameter parameter, ref Arguments args)
-		{
-			base.CreateArguments (ec, parameter, ref args);
-		}
 	}
 
 	public class OrderByAscending : AQueryClause
@@ -604,7 +705,7 @@ namespace Mono.CSharp.Linq
 	//
 	// Implicit query block
 	//
-	public class QueryBlock : ToplevelBlock
+	public class QueryBlock : ParametersBlock
 	{
 		//
 		// Transparent parameters are used to package up the intermediate results
@@ -618,11 +719,11 @@ namespace Mono.CSharp.Linq
 			public readonly Parameter Parent;
 			public readonly string Identifier;
 
-			public TransparentParameter (Parameter parent, SimpleMemberName identifier)
+			public TransparentParameter (Parameter parent, RangeVariable identifier)
 				: base (ParameterNamePrefix + Counter++, identifier.Location)
 			{
 				Parent = parent;
-				Identifier = identifier.Value;
+				Identifier = identifier.Name;
 			}
 
 			public new static void Reset ()
@@ -631,110 +732,53 @@ namespace Mono.CSharp.Linq
 			}
 		}
 
-		sealed class RangeVariable : IKnownVariable
-		{
-			public RangeVariable (QueryBlock block, Location loc)
-			{
-				Block = block;
-				Location = loc;
-			}
-
-			public Block Block { get; private set; }
-
-			public Location Location { get; private set; }
-		}
-
-		List<SimpleMemberName> range_variables;
-
 		public QueryBlock (CompilerContext ctx, Block parent, Location start)
-			: base (ctx, parent, ParametersCompiled.EmptyReadOnlyParameters, start)
+			: base (parent, ParametersCompiled.EmptyReadOnlyParameters, start)
 		{
+			flags |= Flags.CompilerGenerated;
 		}
 
-		public void AddRangeVariable (SimpleMemberName name)
+		public void AddRangeVariable (RangeVariable variable)
 		{
-			if (!CheckParentConflictName (this, name.Value, name.Location))
-				return;
-
-			if (range_variables == null)
-				range_variables = new List<SimpleMemberName> ();
-
-			range_variables.Add (name);
-			AddKnownVariable (name.Value, new RangeVariable (this, name.Location));
+			variable.Block = this;
+			AddLocalName (variable.Name, variable);
 		}
 
-		// 
-		// Query parameter reference can include transparent parameters
-		//
-		protected override Expression GetParameterReferenceExpression (string name, Location loc)
+		public override void Error_AlreadyDeclared (string name, INamedBlockVariable variable, string reason)
 		{
-			Expression expr = base.GetParameterReferenceExpression (name, loc);
-			if (expr != null)
-				return expr;
-
-			TransparentParameter tp = parameters [0] as TransparentParameter;
-			while (tp != null) {
-				if (tp.Identifier == name)
-					break;
-
-				TransparentParameter tp_next = tp.Parent as TransparentParameter;
-				if (tp_next == null && tp.Parent.Name == name)
-					break;
-
-				tp = tp_next;
-			}
-
-			if (tp != null) {
-				expr = new SimpleName (parameters[0].Name, loc);
-				TransparentParameter tp_cursor = (TransparentParameter) parameters[0];
-				while (tp_cursor != tp) {
-					tp_cursor = (TransparentParameter) tp_cursor.Parent;
-					expr = new TransparentMemberAccess (expr, tp_cursor.Name);
-				}
-
-				return new TransparentMemberAccess (expr, name);
-			}
-
-			return null;
+			TopBlock.Report.Error (1931, variable.Location,
+				"A range variable `{0}' conflicts with a previous declaration of `{0}'",
+				name);
 		}
 
-		protected override bool HasParameterWithName (string name)
+		public override void Error_AlreadyDeclared (string name, INamedBlockVariable variable)
 		{
-			return range_variables != null && range_variables.Exists (l => l.Value == name);
+			TopBlock.Report.Error (1930, variable.Location,
+				"A range variable `{0}' has already been declared in this scope",
+				name);		
 		}
 
-		protected override void Error_AlreadyDeclared (Location loc, string var, string reason)
+		public override void Error_AlreadyDeclaredTypeParameter (string name, Location loc)
 		{
-			Report.Error (1931, loc, "A range variable `{0}' conflicts with a previous declaration of `{0}'",
-				var);
-		}
-		
-		protected override void Error_AlreadyDeclared (Location loc, string var)
-		{
-			Report.Error (1930, loc, "A range variable `{0}' has already been declared in this scope",
-				var);		
-		}
-		
-		public override void Error_AlreadyDeclaredTypeParameter (Location loc, string name, string conflict)
-		{
-			Report.Error (1948, loc, "A range variable `{0}' conflicts with a method type parameter",
+			TopBlock.Report.Error (1948, loc,
+				"A range variable `{0}' conflicts with a method type parameter",
 				name);
 		}
 
 		public void SetParameter (Parameter parameter)
 		{
-			base.parameters = new ParametersCompiled (null, parameter);
-			base.parameter_info = new ToplevelParameterInfo [] {
-				new ToplevelParameterInfo (this, 0)
+			base.parameters = new ParametersCompiled (parameter);
+			base.parameter_info = new ParameterInfo[] {
+				new ParameterInfo (this, 0)
 			};
 		}
 
 		public void SetParameters (Parameter first, Parameter second)
 		{
-			base.parameters = new ParametersCompiled (null, first, second);
-			base.parameter_info = new ToplevelParameterInfo[] {
-				new ToplevelParameterInfo (this, 0),
-				new ToplevelParameterInfo (this, 1)
+			base.parameters = new ParametersCompiled (first, second);
+			base.parameter_info = new ParameterInfo[] {
+				new ParameterInfo (this, 0),
+				new ParameterInfo (this, 1)
 			};
 		}
 	}
@@ -745,5 +789,14 @@ namespace Mono.CSharp.Linq
 			: base (expr, name)
 		{
 		}
+
+		public override Expression DoResolveLValue (ResolveContext rc, Expression right_side)
+		{
+			rc.Report.Error (1947, loc,
+				"A range variable `{0}' cannot be assigned to. Consider using `let' clause to store the value",
+				Name);
+
+			return null;
+		}
 	}
 }
diff --git a/mcs/mcs/literal.cs b/mcs/mcs/literal.cs
index 0fd9782..fbf7188 100644
--- a/mcs/mcs/literal.cs
+++ b/mcs/mcs/literal.cs
@@ -19,9 +19,11 @@
 // and are fully resolved when born.
 //
 
-using System;
-using System.Reflection;
+#if STATIC
+using IKVM.Reflection.Emit;
+#else
 using System.Reflection.Emit;
+#endif
 
 namespace Mono.CSharp {
 
diff --git a/mcs/mcs/mcs.csproj b/mcs/mcs/mcs.csproj
new file mode 100644
index 0000000..e5fdb95
--- /dev/null
+++ b/mcs/mcs/mcs.csproj
@@ -0,0 +1,176 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>10.0.20506</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{D4A01C5B-A1B5-48F5-BB5B-D2E1BD236E56}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>Mono.CSharp</RootNamespace>
+    <AssemblyName>mcs</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <PlatformTarget>x86</PlatformTarget>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>.\</OutputPath>
+    <DefineConstants>TRACE;DEBUG;NET_4_0;STATIC</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <UseVSHostingProcess>true</UseVSHostingProcess>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <DefineConstants>TRACE;NET_4_0;STATIC</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <OutputPath>.\</OutputPath>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="..\build\common\Consts.cs">
+    </Compile>
+    <Compile Include="..\class\corlib\Mono.Security.Cryptography\CryptoConvert.cs">
+      <Link>CryptoConvert.cs</Link>
+    </Compile>
+    <Compile Include="..\class\Mono.CompilerServices.SymbolWriter\MonoSymbolFile.cs">
+      <Link>MonoSymbolFile.cs</Link>
+    </Compile>
+    <Compile Include="..\class\Mono.CompilerServices.SymbolWriter\MonoSymbolTable.cs">
+      <Link>MonoSymbolTable.cs</Link>
+    </Compile>
+    <Compile Include="..\class\Mono.CompilerServices.SymbolWriter\MonoSymbolWriter.cs">
+      <Link>MonoSymbolWriter.cs</Link>
+    </Compile>
+    <Compile Include="argument.cs" />
+    <Compile Include="assembly.cs" />
+    <Compile Include="AssemblyInfo.cs">
+    </Compile>
+    <Compile Include="anonymous.cs">
+    </Compile>
+    <Compile Include="assign.cs">
+    </Compile>
+    <Compile Include="attribute.cs">
+    </Compile>
+    <Compile Include="cfold.cs">
+    </Compile>
+    <Compile Include="class.cs">
+    </Compile>
+    <Compile Include="codegen.cs">
+    </Compile>
+    <Compile Include="complete.cs" />
+    <Compile Include="const.cs">
+    </Compile>
+    <Compile Include="constant.cs">
+    </Compile>
+    <Compile Include="convert.cs">
+    </Compile>
+    <Compile Include="context.cs" />
+    <Compile Include="dynamic.cs" />
+    <Compile Include="eval.cs" />
+    <Compile Include="ikvm.cs" />
+    <Compile Include="import.cs" />
+    <Compile Include="lambda.cs">
+    </Compile>
+    <Compile Include="cs-parser.cs" />
+    <Compile Include="cs-tokenizer.cs">
+    </Compile>
+    <Compile Include="decl.cs">
+    </Compile>
+    <Compile Include="delegate.cs">
+    </Compile>
+    <Compile Include="doc.cs">
+    </Compile>
+    <Compile Include="driver.cs">
+    </Compile>
+    <Compile Include="ecore.cs">
+    </Compile>
+    <Compile Include="enum.cs">
+    </Compile>
+    <Compile Include="expression.cs">
+    </Compile>
+    <Compile Include="flowanalysis.cs">
+    </Compile>
+    <Compile Include="generic.cs" />
+    <Compile Include="iterators.cs">
+    </Compile>
+    <Compile Include="literal.cs">
+    </Compile>
+    <Compile Include="location.cs">
+    </Compile>
+    <Compile Include="membercache.cs" />
+    <Compile Include="method.cs" />
+    <Compile Include="modifiers.cs">
+    </Compile>
+    <Compile Include="namespace.cs">
+    </Compile>
+    <Compile Include="nullable.cs" />
+    <Compile Include="..\tools\monop\outline.cs">
+      <Link>outline.cs</Link>
+    </Compile>
+    <Compile Include="parameter.cs" />
+    <Compile Include="pending.cs" />
+    <Compile Include="property.cs" />
+    <Compile Include="reflection.cs" />
+    <Compile Include="report.cs" />
+    <Compile Include="rootcontext.cs">
+    </Compile>
+    <Compile Include="roottypes.cs">
+    </Compile>
+    <Compile Include="statement.cs">
+    </Compile>
+    <Compile Include="support.cs">
+    </Compile>
+    <Compile Include="symbolwriter.cs">
+    </Compile>
+    <Compile Include="typemanager.cs">
+    </Compile>
+    <Compile Include="linq.cs" />
+    <Compile Include="field.cs" />
+    <Compile Include="typespec.cs" />
+  </ItemGroup>
+  <ItemGroup Label="IKVM.Reflection">
+    <Compile Include="..\class\IKVM.Reflection\*.cs">
+      <Visible>false</Visible>
+    </Compile>
+    <Compile Include="..\class\IKVM.Reflection\Emit\*.cs">
+      <Visible>false</Visible>
+    </Compile>
+    <Compile Include="..\class\IKVM.Reflection\Metadata\*.cs">
+      <Visible>false</Visible>
+    </Compile>
+    <Compile Include="..\class\IKVM.Reflection\Reader\*.cs">
+      <Visible>false</Visible>
+    </Compile>
+    <Compile Include="..\class\IKVM.Reflection\Writer\*.cs">
+      <Visible>false</Visible>
+    </Compile>
+    <Compile Include="..\class\IKVM.Reflection\Impl\CryptoHack.cs">
+      <Visible>false</Visible>
+    </Compile>
+    <Compile Include="..\class\IKVM.Reflection\Impl\ITypeOwner.cs">
+      <Visible>false</Visible>
+    </Compile>
+    <Compile Include="..\class\IKVM.Reflection\Impl\SymbolSupport.cs">
+      <Visible>false</Visible>
+    </Compile>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
\ No newline at end of file
diff --git a/mcs/mcs/mcs.exe.sources b/mcs/mcs/mcs.exe.sources
new file mode 100644
index 0000000..bc28dbf
--- /dev/null
+++ b/mcs/mcs/mcs.exe.sources
@@ -0,0 +1,67 @@
+AssemblyInfo.cs
+anonymous.cs
+argument.cs
+assign.cs
+assembly.cs
+attribute.cs
+cs-tokenizer.cs
+cfold.cs
+class.cs
+codegen.cs
+complete.cs
+const.cs
+constant.cs
+convert.cs
+context.cs
+decl.cs
+delegate.cs
+doc.cs
+driver.cs
+dynamic.cs
+ecore.cs
+enum.cs
+eval.cs
+expression.cs
+field.cs
+flowanalysis.cs
+generic.cs
+import.cs
+iterators.cs
+ikvm.cs
+lambda.cs
+linq.cs
+literal.cs
+location.cs
+membercache.cs
+method.cs
+modifiers.cs
+namespace.cs
+nullable.cs
+parameter.cs
+pending.cs
+property.cs
+reflection.cs
+report.cs
+rootcontext.cs
+roottypes.cs
+statement.cs
+support.cs
+typemanager.cs
+typespec.cs
+visit.cs
+symbolwriter.cs
+../class/Mono.CompilerServices.SymbolWriter/MonoSymbolFile.cs
+../class/Mono.CompilerServices.SymbolWriter/MonoSymbolTable.cs
+../class/Mono.CompilerServices.SymbolWriter/MonoSymbolWriter.cs
+../class/corlib/Mono.Security.Cryptography/CryptoConvert.cs
+../build/common/Consts.cs
+../tools/monop/outline.cs
+
+../class/IKVM.Reflection/*.cs
+../class/IKVM.Reflection/Emit/*.cs
+../class/IKVM.Reflection/Metadata/*.cs
+../class/IKVM.Reflection/Reader/*.cs
+../class/IKVM.Reflection/Writer/*.cs
+../class/IKVM.Reflection/Impl/CryptoHack.cs
+../class/IKVM.Reflection/Impl/ITypeOwner.cs
+../class/IKVM.Reflection/Impl/SymbolSupport.cs
diff --git a/mcs/mcs/mcs.sln b/mcs/mcs/mcs.sln
new file mode 100644
index 0000000..4028ae6
--- /dev/null
+++ b/mcs/mcs/mcs.sln
@@ -0,0 +1,20 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "mcs", "mcs.csproj", "{D4A01C5B-A1B5-48F5-BB5B-D2E1BD236E56}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Release|Any CPU = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{D4A01C5B-A1B5-48F5-BB5B-D2E1BD236E56}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{D4A01C5B-A1B5-48F5-BB5B-D2E1BD236E56}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{D4A01C5B-A1B5-48F5-BB5B-D2E1BD236E56}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{D4A01C5B-A1B5-48F5-BB5B-D2E1BD236E56}.Release|Any CPU.Build.0 = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
diff --git a/mcs/mcs/membercache.cs b/mcs/mcs/membercache.cs
index bf825c0..580cbf6 100644
--- a/mcs/mcs/membercache.cs
+++ b/mcs/mcs/membercache.cs
@@ -12,10 +12,7 @@
 //
 
 using System;
-using System.Text;
 using System.Collections.Generic;
-using System.Reflection;
-using System.Linq;
 
 namespace Mono.CSharp {
 
@@ -59,7 +56,10 @@ namespace Mono.CSharp {
 		// Exclude static
 		InstanceOnly = 1 << 2,
 
-		NoAccessors = 1 << 3
+		NoAccessors = 1 << 3,
+
+		// Member has to be override
+		OverrideOnly = 1 << 4
 	}
 
 	public struct MemberFilter : IEquatable<MemberSpec>
@@ -100,7 +100,7 @@ namespace Mono.CSharp {
 
 		public static MemberFilter Constructor (AParametersCollection param)
 		{
-			return new MemberFilter (System.Reflection.ConstructorInfo.ConstructorName, 0, MemberKind.Constructor, param, null);
+			return new MemberFilter (Mono.CSharp.Constructor.ConstructorName, 0, MemberKind.Constructor, param, null);
 		}
 
 		public static MemberFilter Property (string name, TypeSpec type)
@@ -208,6 +208,40 @@ namespace Mono.CSharp {
 		}
 
 		//
+		// For cases where we need to union cache members
+		//
+		public void AddBaseType (TypeSpec baseType)
+		{
+			var cache = baseType.MemberCache;
+
+			IList<MemberSpec> list;
+			foreach (var entry in cache.member_hash) {
+				if (!member_hash.TryGetValue (entry.Key, out list)) {
+					if (entry.Value.Count == 1) {
+						list = entry.Value;
+					} else {
+						list = new List<MemberSpec> (entry.Value);
+					}
+
+					member_hash.Add (entry.Key, list);
+					continue;
+				}
+
+				foreach (var ce in entry.Value) {
+					if (list.Contains (ce))
+						continue;
+
+					if (list is MemberSpec[]) {
+						list = new List<MemberSpec> () { list [0] };
+						member_hash[entry.Key] = list;
+					}
+
+					list.Add (ce);
+				}
+			}
+		}
+
+		//
 		// Member-cache does not contain base members but it does
 		// contain all base interface members, so the Lookup code
 		// can use simple inheritance rules.
@@ -325,7 +359,7 @@ namespace Mono.CSharp {
 						continue;
 				}
 
-				if (member.DeclaringType.ImplementsInterface (entry.DeclaringType)) {
+				if (member.DeclaringType.ImplementsInterface (entry.DeclaringType, false)) {
 					if (existing is MemberSpec[]) {
 						existing = new MemberSpec[] { member };
 						return true;
@@ -336,7 +370,7 @@ namespace Mono.CSharp {
 				}
 
 				if ((entry.DeclaringType == member.DeclaringType && entry.IsAccessor == member.IsAccessor) ||
-					entry.DeclaringType.ImplementsInterface (member.DeclaringType))
+					entry.DeclaringType.ImplementsInterface (member.DeclaringType, false))
 					return false;
 			}
 
@@ -364,6 +398,9 @@ namespace Mono.CSharp {
 						if ((restrictions & BindingRestriction.NoAccessors) != 0 && entry.IsAccessor)
 							continue;
 
+						if ((restrictions & BindingRestriction.OverrideOnly) != 0 && (entry.Modifiers & Modifiers.OVERRIDE) == 0)
+							continue;
+
 						if (!filter.Equals (entry))
 							continue;
 
@@ -447,7 +484,7 @@ namespace Mono.CSharp {
 		//
 		// Looks for extension methods with defined name and extension type
 		//
-		public List<MethodSpec> FindExtensionMethods (TypeSpec invocationType, TypeSpec extensionType, string name, int arity)
+		public List<MethodSpec> FindExtensionMethods (TypeContainer invocationType, TypeSpec extensionType, string name, int arity)
 		{
 			IList<MemberSpec> entries;
 			if (!member_hash.TryGetValue (name, out entries))
@@ -462,12 +499,10 @@ namespace Mono.CSharp {
 				if (!ms.IsExtensionMethod)
 					continue;
 
-				if (!ms.IsAccessible (invocationType))
+				if (!ms.IsAccessible (invocationType.CurrentType))
 					continue;
 
-				// TODO: CodeGen.Assembly.Builder
-				if ((ms.DeclaringType.Modifiers & Modifiers.INTERNAL) != 0 &&
-					!TypeManager.IsThisOrFriendAssembly (CodeGen.Assembly.Builder, ms.Assembly))
+				if ((ms.DeclaringType.Modifiers & Modifiers.INTERNAL) != 0 && !ms.DeclaringType.MemberDefinition.IsInternalAsPublic (invocationType.DeclaringAssembly))
 					continue;
 
 				if (candidates == null)
@@ -486,9 +521,14 @@ namespace Mono.CSharp {
 		{
 			bestCandidate = null;
 			var container = member.Parent.PartialContainer.Definition;
-			if (!container.IsInterface)
+			if (!container.IsInterface) {
 				container = container.BaseType;
 
+				// It can happen for a user definition of System.Object
+				if (container == null)
+					return null;
+			}
+
 			string name = GetLookupName (member);
 			IList<MemberSpec> applicable;
 			var member_param = member is IParametersMember ? ((IParametersMember) member).Parameters : null;
@@ -504,60 +544,39 @@ namespace Mono.CSharp {
 						if ((entry.Modifiers & Modifiers.PRIVATE) != 0)
 							continue;
 
-						if ((entry.Modifiers & Modifiers.AccessibilityMask) == Modifiers.INTERNAL) {
-							if (!TypeManager.IsThisOrFriendAssembly (member.Assembly, entry.Assembly))
-								continue;
-						}
+						if ((entry.Modifiers & Modifiers.AccessibilityMask) == Modifiers.INTERNAL &&
+							!entry.DeclaringType.MemberDefinition.IsInternalAsPublic (member.Module.DeclaringAssembly))
+							continue;
 
 						//
-						// Is the member of same type ?
+						// Is the member of same kind ?
 						//
 						if ((entry.Kind & ~MemberKind.Destructor & mkind & MemberKind.MaskType) == 0) {
 							// Destructors are ignored as they cannot be overridden by user
 							if ((entry.Kind & MemberKind.Destructor) != 0)
 								continue;
 
-							// Only different arity methods hide
+							// A method with different arity does not hide base member
 							if (mkind != MemberKind.Method && member.MemberName.Arity != entry.Arity)
 								continue;
-							
-							if ((member_param == null || !(entry is IParametersMember))) {
-								bestCandidate = entry;
-								return null;
-							}
 
-							continue;
+							bestCandidate = entry;
+							return null;
 						}
 
-						if (entry.Kind != mkind) {
-							if (bestCandidate == null)
-								bestCandidate = entry;
-
+						//
+						// Same kind of different arity is valid
+						//
+						if (member.MemberName.Arity != entry.Arity) {
 							continue;
 						}
 
-						if (member_param != null) {
-							// Check arity match
-							int arity = member.MemberName.Arity;
-							if (arity != entry.Arity)
-								continue;
-
-							var pm = entry as IParametersMember;
-							AParametersCollection entry_parameters;
-							if (pm == null) {
-								if (entry.Kind != MemberKind.Delegate)
-									continue;
-
-								// TODO: I don't have DelegateSpec
-								entry_parameters = Delegate.GetParameters (member.Compiler, (TypeSpec) entry);
-							} else {
-								entry_parameters = pm.Parameters;
-							}
-
+						if ((entry.Kind & mkind & (MemberKind.Method | MemberKind.Indexer)) != 0) {
 							if (entry.IsAccessor != member is AbstractPropertyEventMethod)
 								continue;
 
-							if (!TypeSpecComparer.Override.IsEqual (entry_parameters, member_param))
+							var pm = entry as IParametersMember;
+							if (!TypeSpecComparer.Override.IsEqual (pm.Parameters, member_param))
 								continue;
 						}
 
@@ -790,9 +809,9 @@ namespace Mono.CSharp {
 
 			if (ms.Kind == MemberKind.Constructor) {
 				if (ms.IsStatic)
-					return ConstructorInfo.TypeConstructorName;
+					return Constructor.TypeConstructorName;
 
-				return ConstructorInfo.ConstructorName;
+				return Constructor.ConstructorName;
 			}
 
 			return ms.Name;
@@ -804,7 +823,7 @@ namespace Mono.CSharp {
 				return IndexerNameAlias;
 
 			if (mc is Constructor)
-				return ConstructorInfo.ConstructorName;
+				return Constructor.ConstructorName;
 
 			return mc.MemberName.Name;
 		}
@@ -824,29 +843,37 @@ namespace Mono.CSharp {
 					 (mc.state & StateFlags.HasUserOperator) != 0) {
 
 					if (mc.member_hash.TryGetValue (Operator.GetMetadataName (op), out applicable)) {
-						int match_count = 0;
-						for (int i = 0; i < applicable.Count; ++i) {
-							if (applicable[i].Kind == MemberKind.Operator) {
-								++match_count;
-								continue;
+						int i;
+						for (i = 0; i < applicable.Count; ++i) {
+							if (applicable[i].Kind != MemberKind.Operator) {
+								break;
 							}
+						}
 
-							// Handles very rare case where a method exists with same name as operator (op_xxxx)
-							if (found == null) {
-								found = new List<MemberSpec> ();
-								found.Add (applicable [i]);
-							} else {
-								var prev = found as List<MemberSpec>;
-								if (prev == null) {
-									prev = new List<MemberSpec> (found.Count + 1);
-									prev.AddRange (found);
+						//
+						// Handles very rare case where a method with same name as operator (op_xxxx) exists
+						// and we have to resize the applicable list
+						//
+						if (i != applicable.Count) {
+							for (i = 0; i < applicable.Count; ++i) {
+								if (applicable[i].Kind != MemberKind.Operator) {
+									continue;
 								}
 
-								prev.Add (applicable[i]);
-							}
-						}
+								if (found == null) {
+									found = new List<MemberSpec> ();
+									found.Add (applicable[i]);
+								} else {
+									var prev = found as List<MemberSpec>;
+									if (prev == null) {
+										prev = new List<MemberSpec> (found.Count + 1);
+										prev.AddRange (found);
+									}
 
-						if (match_count > 0 && match_count == applicable.Count) {
+									prev.Add (applicable[i]);
+								}
+							}
+						} else {
 							if (found == null) {
 								found = applicable;
 							} else {
@@ -906,7 +933,7 @@ namespace Mono.CSharp {
 		public void InflateMembers (MemberCache cacheToInflate, TypeSpec inflatedType, TypeParameterInflator inflator)
 		{
 			var inflated_member_hash = cacheToInflate.member_hash;
-			Dictionary<MethodSpec, MethodSpec> accessor_relation = null;
+			Dictionary<MemberSpec, MethodSpec> accessor_relation = null;
 			List<MemberSpec> accessor_members = null;
 
 			// Copy member specific flags when all members were added
@@ -942,10 +969,10 @@ namespace Mono.CSharp {
 
 					if (member.DeclaringType != inflatedType) {
 						//
-						// Don't inflate non generic interface members
+						// Don't inflate top-level non-generic interface members
 						// merged into generic interface
 						//
-						if (!member.DeclaringType.IsGeneric) {
+						if (!member.DeclaringType.IsGeneric && !member.DeclaringType.IsNested) {
 							inflated_members [i] = member;
 							continue;
 						}
@@ -982,8 +1009,8 @@ namespace Mono.CSharp {
 
 					if (member.IsAccessor) {
 						if (accessor_relation == null)
-							accessor_relation = new Dictionary<MethodSpec, MethodSpec> ();
-						accessor_relation.Add ((MethodSpec) member, (MethodSpec) inflated);
+							accessor_relation = new Dictionary<MemberSpec, MethodSpec> ();
+						accessor_relation.Add (member, (MethodSpec) inflated);
 					}
 				}
 			}
diff --git a/mcs/mcs/method.cs b/mcs/mcs/method.cs
index 849677c..2af0b78 100644
--- a/mcs/mcs/method.cs
+++ b/mcs/mcs/method.cs
@@ -13,10 +13,6 @@
 
 using System;
 using System.Collections.Generic;
-using System.Reflection;
-using System.Reflection.Emit;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
 using System.Security;
 using System.Security.Permissions;
 using System.Text;
@@ -28,6 +24,18 @@ using XmlElement = System.Object;
 using System.Xml;
 #endif
 
+#if STATIC
+using MetaType = IKVM.Reflection.Type;
+using SecurityType = System.Collections.Generic.List<IKVM.Reflection.Emit.CustomAttributeBuilder>;
+using IKVM.Reflection;
+using IKVM.Reflection.Emit;
+#else
+using MetaType = System.Type;
+using SecurityType = System.Collections.Generic.Dictionary<System.Security.Permissions.SecurityAction, System.Security.PermissionSet>;
+using System.Reflection;
+using System.Reflection.Emit;
+#endif
+
 using Mono.CompilerServices.SymbolWriter;
 
 namespace Mono.CSharp {
@@ -185,9 +193,9 @@ namespace Mono.CSharp {
 //		MethodInfo MakeGenericMethod (TypeSpec[] targs);
 	}
 
-	public class MethodSpec : MemberSpec, IParametersMember
+	public sealed class MethodSpec : MemberSpec, IParametersMember
 	{
-		MethodBase metaInfo;
+		MethodBase metaInfo, inflatedMetaInfo;
 		AParametersCollection parameters;
 		TypeSpec returnType;
 
@@ -293,29 +301,46 @@ namespace Mono.CSharp {
 
 		public MethodBase GetMetaInfo ()
 		{
-			if ((state & StateFlags.PendingMetaInflate) != 0) {
-				if (DeclaringType.IsTypeBuilder) {
-					if (IsConstructor)
-						metaInfo = TypeBuilder.GetConstructor (DeclaringType.GetMetaInfo (), (ConstructorInfo) metaInfo);
-					else
-						metaInfo = TypeBuilder.GetMethod (DeclaringType.GetMetaInfo (), (MethodInfo) metaInfo);
+			//
+			// inflatedMetaInfo is extra field needed for cases where we
+			// inflate method but another nested type can later inflate
+			// again (the cache would be build with inflated metaInfo) and
+			// TypeBuilder can work with method definitions only
+			//
+			if (inflatedMetaInfo == null) {
+				if ((state & StateFlags.PendingMetaInflate) != 0) {
+					var dt_meta = DeclaringType.GetMetaInfo ();
+
+					if (DeclaringType.IsTypeBuilder) {
+						if (IsConstructor)
+							inflatedMetaInfo = TypeBuilder.GetConstructor (dt_meta, (ConstructorInfo) metaInfo);
+						else
+							inflatedMetaInfo = TypeBuilder.GetMethod (dt_meta, (MethodInfo) metaInfo);
+					} else {
+#if STATIC
+						// it should not be reached
+						throw new NotImplementedException ();
+#else
+						inflatedMetaInfo = MethodInfo.GetMethodFromHandle (metaInfo.MethodHandle, dt_meta.TypeHandle);
+#endif
+					}
+
+					state &= ~StateFlags.PendingMetaInflate;
 				} else {
-					metaInfo = MethodInfo.GetMethodFromHandle (metaInfo.MethodHandle, DeclaringType.GetMetaInfo ().TypeHandle);
+					inflatedMetaInfo = metaInfo;
 				}
-
-				state &= ~StateFlags.PendingMetaInflate;
 			}
 
 			if ((state & StateFlags.PendingMakeMethod) != 0) {
-				var sre_targs = new Type[targs.Length];
+				var sre_targs = new MetaType[targs.Length];
 				for (int i = 0; i < sre_targs.Length; ++i)
 					sre_targs[i] = targs[i].GetMetaInfo ();
 
-				metaInfo = ((MethodInfo) metaInfo).MakeGenericMethod (sre_targs);
+				inflatedMetaInfo = ((MethodInfo) inflatedMetaInfo).MakeGenericMethod (sre_targs);
 				state &= ~StateFlags.PendingMakeMethod;
 			}
 
-			return metaInfo;
+			return inflatedMetaInfo;
 		}
 
 		public override string GetSignatureForError ()
@@ -358,10 +383,11 @@ namespace Mono.CSharp {
 		public override MemberSpec InflateMember (TypeParameterInflator inflator)
 		{
 			var ms = (MethodSpec) base.InflateMember (inflator);
+			ms.inflatedMetaInfo = null;
 			ms.returnType = inflator.Inflate (returnType);
 			ms.parameters = parameters.Inflate (inflator);
 			if (IsGeneric)
-				ms.constraints = TypeParameterSpec.InflateConstraints (inflator, GenericDefinition.TypeParameters);
+				ms.constraints = TypeParameterSpec.InflateConstraints (inflator, Constraints);
 
 			return ms;
 		}
@@ -410,9 +436,7 @@ namespace Mono.CSharp {
 
 			var ms = (MethodSpec) MemberwiseClone ();
 			if (decl != DeclaringType) {
-				// Gets back MethodInfo in case of metaInfo was inflated
-				ms.metaInfo = MemberCache.GetMember (TypeParameterMutator.GetMemberDeclaringType (DeclaringType), this).metaInfo;
-
+				ms.inflatedMetaInfo = null;
 				ms.declaringType = decl;
 				ms.state |= StateFlags.PendingMetaInflate;
 			}
@@ -438,7 +462,7 @@ namespace Mono.CSharp {
 	{
 		public MethodBuilder MethodBuilder;
 		ReturnParameter return_attributes;
-		Dictionary<SecurityAction, PermissionSet> declarative_security;
+		SecurityType declarative_security;
 		protected MethodData MethodData;
 
 		static string[] attribute_targets = new string [] { "method", "return" };
@@ -461,8 +485,8 @@ namespace Mono.CSharp {
 				return;
 			}
 
-			if (a.IsInternalMethodImplAttribute) {
-				is_external_implementation = true;
+			if (a.Type == pa.MethodImpl) {
+				is_external_implementation = a.IsInternalCall ();
 			}
 
 			if (a.Type == pa.DllImport) {
@@ -474,9 +498,7 @@ namespace Mono.CSharp {
 			}
 
 			if (a.IsValidSecurityAttribute ()) {
-				if (declarative_security == null)
-					declarative_security = new Dictionary<SecurityAction, PermissionSet> ();
-				a.ExtractSecurityPermissionSet (declarative_security);
+				a.ExtractSecurityPermissionSet (ctor, ref declarative_security);
 				return;
 			}
 
@@ -580,23 +602,16 @@ namespace Mono.CSharp {
 		public override void Emit ()
 		{
 			if ((ModFlags & Modifiers.COMPILER_GENERATED) != 0 && !Parent.IsCompilerGenerated)
-				Compiler.PredefinedAttributes.CompilerGenerated.EmitAttribute (MethodBuilder);
+				Module.PredefinedAttributes.CompilerGenerated.EmitAttribute (MethodBuilder);
 			if ((ModFlags & Modifiers.DEBUGGER_HIDDEN) != 0)
-				Compiler.PredefinedAttributes.DebuggerHidden.EmitAttribute (MethodBuilder);
+				Module.PredefinedAttributes.DebuggerHidden.EmitAttribute (MethodBuilder);
 
 			if (ReturnType == InternalType.Dynamic) {
 				return_attributes = new ReturnParameter (this, MethodBuilder, Location);
-				Compiler.PredefinedAttributes.Dynamic.EmitAttribute (return_attributes.Builder);
-			} else {
-				var trans_flags = TypeManager.HasDynamicTypeUsed (ReturnType);
-				if (trans_flags != null) {
-					var pa = Compiler.PredefinedAttributes.DynamicTransform;
-					if (pa.Constructor != null || pa.ResolveConstructor (Location, ArrayContainer.MakeType (TypeManager.bool_type))) {
-						return_attributes = new ReturnParameter (this, MethodBuilder, Location);
-						return_attributes.Builder.SetCustomAttribute (
-							new CustomAttributeBuilder (pa.Constructor, new object [] { trans_flags }));
-					}
-				}
+				Module.PredefinedAttributes.Dynamic.EmitAttribute (return_attributes.Builder);
+			} else if (ReturnType.HasDynamicElement) {
+				return_attributes = new ReturnParameter (this, MethodBuilder, Location);
+				Module.PredefinedAttributes.Dynamic.EmitAttribute (return_attributes.Builder, ReturnType, Location);
 			}
 
 			if (OptAttributes != null)
@@ -604,7 +619,11 @@ namespace Mono.CSharp {
 
 			if (declarative_security != null) {
 				foreach (var de in declarative_security) {
+#if STATIC
+					MethodBuilder.__AddDeclarativeSecurity (de);
+#else
 					MethodBuilder.AddDeclarativeSecurity (de.Key, de.Value);
+#endif
 				}
 			}
 
@@ -674,7 +693,7 @@ namespace Mono.CSharp {
 				if (OptAttributes == null)
 					return null;
 
-				Attribute[] attrs = OptAttributes.SearchMulti (Compiler.PredefinedAttributes.Conditional);
+				Attribute[] attrs = OptAttributes.SearchMulti (Module.PredefinedAttributes.Conditional);
 				if (attrs == null)
 					return null;
 
@@ -722,12 +741,17 @@ namespace Mono.CSharp {
 
 		public int Token {
 			get {
-				if (method is MethodBuilder)
-					return ((MethodBuilder) method).GetToken ().Token;
-				else if (method is ConstructorBuilder)
-					return ((ConstructorBuilder) method).GetToken ().Token;
+				MethodToken token;
+				var mb = method as MethodBuilder;
+				if (mb != null)
+					token = mb.GetToken ();
 				else
-					throw new NotSupportedException ();
+					token = ((ConstructorBuilder) method).GetToken ();
+#if STATIC
+				if (token.IsPseudoToken)
+					return ((ModuleBuilder) method.Module).ResolvePseudoToken (token.Token);
+#endif
+				return token.Token;
 			}
 		}
 
@@ -769,7 +793,7 @@ namespace Mono.CSharp {
 			       FullNamedExpression return_type, Modifiers mod,
 			       MemberName name, ParametersCompiled parameters, Attributes attrs)
 			: base (parent, generic, return_type, mod,
-				parent.PartialContainer.Kind == MemberKind.Interface ? AllowedModifiersClass :
+				parent.PartialContainer.Kind == MemberKind.Interface ? AllowedModifiersInterface :
 				parent.PartialContainer.Kind == MemberKind.Struct ? AllowedModifiersStruct :
 				AllowedModifiersClass,
 				name, attrs, parameters)
@@ -782,7 +806,7 @@ namespace Mono.CSharp {
 		{
 		}
 
-#region Properties
+		#region Properties
 
 		public override TypeParameter[] CurrentTypeParameters {
 			get {
@@ -834,7 +858,7 @@ namespace Mono.CSharp {
 		{
 			Report.Error (17, b.Location,
 				"Program `{0}' has more than one entry point defined: `{1}'",
-				CodeGen.FileName, b.GetSignatureForError ());
+				b.Module.Builder.ScopeName, b.GetSignatureForError ());
 		}
 
 		bool IsEntryPoint ()
@@ -927,10 +951,33 @@ namespace Mono.CSharp {
 				
 					if (base_method.DeclaringType.IsGeneric) {
 						base_decl_tparams = base_method.DeclaringType.MemberDefinition.TypeParameters;
-						base_targs = Parent.BaseType.TypeArguments;
+
+						var base_type_parent = CurrentType;
+						while (base_type_parent.BaseType != base_method.DeclaringType) {
+							base_type_parent = base_type_parent.BaseType;
+						}
+
+						base_targs = base_type_parent.BaseType.TypeArguments;
 					}
 
 					if (base_method.IsGeneric) {
+						ObsoleteAttribute oa;
+						foreach (var base_tp in base_tparams) {
+							oa = base_tp.BaseType.GetAttributeObsolete ();
+							if (oa != null) {
+								AttributeTester.Report_ObsoleteMessage (oa, base_tp.BaseType.GetSignatureForError (), Location, Report);
+							}
+
+							if (base_tp.InterfacesDefined != null) {
+								foreach (var iface in base_tp.InterfacesDefined) {
+									oa = iface.GetAttributeObsolete ();
+									if (oa != null) {
+										AttributeTester.Report_ObsoleteMessage (oa, iface.GetSignatureForError (), Location, Report);
+									}
+								}
+							}
+						}
+
 						if (base_decl_tparams.Length != 0) {
 							base_decl_tparams = base_decl_tparams.Concat (base_tparams).ToArray ();
 							base_targs = base_targs.Concat (tparams.Select<TypeParameter, TypeSpec> (l => l.Type)).ToArray ();
@@ -964,11 +1011,38 @@ namespace Mono.CSharp {
 				//
 				if (base_tparams != null) {
 					var base_tparam = base_tparams[i];
-					tp.Type.SpecialConstraint = base_tparam.SpecialConstraint;
+					var local_tparam = tp.Type;
+					local_tparam.SpecialConstraint = base_tparam.SpecialConstraint;
 
 					var inflator = new TypeParameterInflator (CurrentType, base_decl_tparams, base_targs);
-					base_tparam.InflateConstraints (inflator, tp.Type);
-				} else if (MethodData.implementing != null) {
+					base_tparam.InflateConstraints (inflator, local_tparam);
+
+					//
+					// Check all type argument constraints for possible collision
+					// introduced by inflating inherited constraints in this context
+					//
+					// Conflict example:
+					//
+					// class A<T> { virtual void Foo<U> () where U : class, T {} }
+					// class B : A<int> { override void Foo<U> {} }
+					//
+					var local_tparam_targs = local_tparam.TypeArguments;
+					if (local_tparam_targs != null) {					
+						for (int ii = 0; ii < local_tparam_targs.Length; ++ii) {
+							var ta = local_tparam_targs [ii];
+							if (!ta.IsClass && !ta.IsStruct)
+								continue;
+
+							if (Constraints.CheckConflictingInheritedConstraint (local_tparam, ta, this, Location)) {
+								local_tparam.ChangeTypeArgumentToBaseType (ii);
+							}
+						}
+					}
+
+					continue;
+				}
+				
+				if (MethodData.implementing != null) {
 					var base_tp = MethodData.implementing.Constraints[i];
 					if (!tp.Type.HasSameConstraintsImplementation (base_tp)) {
 						Report.SymbolRelatedToPreviousError (MethodData.implementing);
@@ -1012,7 +1086,7 @@ namespace Mono.CSharp {
 				DefineTypeParameters ();
 			}
 
-			if (block != null && block.IsIterator && !(Parent is IteratorStorey)) {
+			if (block != null && block.IsIterator) {
 				//
 				// Current method is turned into automatically generated
 				// wrapper which creates an instance of iterator
@@ -1030,7 +1104,7 @@ namespace Mono.CSharp {
 						Report.Error (1109, Location, "`{0}': Extension methods cannot be defined in a nested class",
 							GetSignatureForError ());
 
-					PredefinedAttribute pa = Compiler.PredefinedAttributes.Extension;
+					PredefinedAttribute pa = Module.PredefinedAttributes.Extension;
 					if (!pa.IsDefined) {
 						Report.Error (1110, Location,
 							"`{0}': Extension methods cannot be declared without a reference to System.Core.dll assembly. Add the assembly reference or remove `this' modifer from the first parameter",
@@ -1040,7 +1114,7 @@ namespace Mono.CSharp {
 					ModFlags |= Modifiers.METHOD_EXTENSION;
 					Parent.PartialContainer.ModFlags |= Modifiers.METHOD_EXTENSION;
 					Spec.DeclaringType.SetExtensionMethodContainer ();
-					CodeGen.Assembly.HasExtensionMethods = true;
+					Parent.Module.HasExtensionMethod = true;
 				} else {
 					Report.Error (1106, Location, "`{0}': Extension methods must be defined in a non-generic static class",
 						GetSignatureForError ());
@@ -1056,16 +1130,16 @@ namespace Mono.CSharp {
 				RootContext.MainClass == Parent.TypeBuilder.FullName)){
 				if (IsEntryPoint ()) {
 
-					if (RootContext.EntryPoint == null) {
+					if (Parent.DeclaringAssembly.EntryPoint == null) {
 						if (Parent.IsGeneric || MemberName.IsGeneric) {
 							Report.Warning (402, 4, Location, "`{0}': an entry point cannot be generic or in a generic type",
 								GetSignatureForError ());
 						} else {
 							SetIsUsed ();
-							RootContext.EntryPoint = this;
+							Parent.DeclaringAssembly.EntryPoint = this;
 						}
 					} else {
-						Error_DuplicateEntryPoint (RootContext.EntryPoint);
+						Error_DuplicateEntryPoint (Parent.DeclaringAssembly.EntryPoint);
 						Error_DuplicateEntryPoint (this);
 					}
 				} else {
@@ -1120,7 +1194,7 @@ namespace Mono.CSharp {
 				base.Emit ();
 				
 				if ((ModFlags & Modifiers.METHOD_EXTENSION) != 0)
-					Compiler.PredefinedAttributes.Extension.EmitAttribute (MethodBuilder);
+					Module.PredefinedAttributes.Extension.EmitAttribute (MethodBuilder);
 			} catch {
 				Console.WriteLine ("Internal compiler error at {0}: exception caught while emitting {1}",
 						   Location, MethodBuilder);
@@ -1207,47 +1281,46 @@ namespace Mono.CSharp {
 			// FIXME: Hack
 			var caller_builder = (Constructor) ec.MemberContext;
 
-			if (argument_list != null) {
-				bool dynamic;
-
-				//
-				// Spec mandates that constructor initializer will not have `this' access
-				//
-				using (ec.Set (ResolveContext.Options.BaseInitializer)) {
+			//
+			// Spec mandates that constructor initializer will not have `this' access
+			//
+			using (ec.Set (ResolveContext.Options.BaseInitializer)) {
+				if (argument_list != null) {
+					bool dynamic;
 					argument_list.Resolve (ec, out dynamic);
-				}
 
-				if (dynamic) {
-					ec.Report.Error (1975, loc,
-						"The constructor call cannot be dynamically dispatched within constructor initializer");
+					if (dynamic) {
+						ec.Report.Error (1975, loc,
+							"The constructor call cannot be dynamically dispatched within constructor initializer");
 
-					return null;
+						return null;
+					}
 				}
-			}
 
-			type = ec.CurrentType;
-			if (this is ConstructorBaseInitializer) {
-				if (ec.CurrentType.BaseType == null)
-					return this;
+				type = ec.CurrentType;
+				if (this is ConstructorBaseInitializer) {
+					if (ec.CurrentType.BaseType == null)
+						return this;
 
-				type = ec.CurrentType.BaseType;
-				if (ec.CurrentType.IsStruct) {
-					ec.Report.Error (522, loc,
-						"`{0}': Struct constructors cannot call base constructors", caller_builder.GetSignatureForError ());
-					return this;
+					type = ec.CurrentType.BaseType;
+					if (ec.CurrentType.IsStruct) {
+						ec.Report.Error (522, loc,
+							"`{0}': Struct constructors cannot call base constructors", caller_builder.GetSignatureForError ());
+						return this;
+					}
+				} else {
+					//
+					// It is legal to have "this" initializers that take no arguments
+					// in structs, they are just no-ops.
+					//
+					// struct D { public D (int a) : this () {}
+					//
+					if (TypeManager.IsStruct (ec.CurrentType) && argument_list == null)
+						return this;
 				}
-			} else {
-				//
-				// It is legal to have "this" initializers that take no arguments
-				// in structs, they are just no-ops.
-				//
-				// struct D { public D (int a) : this () {}
-				//
-				if (TypeManager.IsStruct (ec.CurrentType) && argument_list == null)
-					return this;			
-			}
 
-			base_ctor = ConstructorLookup (ec, type, ref argument_list, loc);
+				base_ctor = ConstructorLookup (ec, type, ref argument_list, loc);
+			}
 	
 			// TODO MemberCache: Does it work for inflated types ?
 			if (base_ctor == caller_builder.Spec){
@@ -1299,7 +1372,7 @@ namespace Mono.CSharp {
 	public class Constructor : MethodCore, IMethodData {
 		public ConstructorBuilder ConstructorBuilder;
 		public ConstructorInitializer Initializer;
-		Dictionary<SecurityAction, PermissionSet> declarative_security;
+		SecurityType declarative_security;
 		bool has_compliant_args;
 
 		// <summary>
@@ -1316,6 +1389,9 @@ namespace Mono.CSharp {
 
 		static readonly string[] attribute_targets = new string [] { "method" };
 
+		public static readonly string ConstructorName = ".ctor";
+		public static readonly string TypeConstructorName = ".cctor";
+
 		//
 		// The spec claims that static is not permitted, but
 		// my very own code has static constructors.
@@ -1352,15 +1428,12 @@ namespace Mono.CSharp {
 		public override void ApplyAttributeBuilder (Attribute a, MethodSpec ctor, byte[] cdata, PredefinedAttributes pa)
 		{
 			if (a.IsValidSecurityAttribute ()) {
-				if (declarative_security == null) {
-					declarative_security = new Dictionary<SecurityAction, PermissionSet> ();
-				}
-				a.ExtractSecurityPermissionSet (declarative_security);
+				a.ExtractSecurityPermissionSet (ctor, ref declarative_security);
 				return;
 			}
 
-			if (a.IsInternalMethodImplAttribute) {
-				is_external_implementation = true;
+			if (a.Type == pa.MethodImpl) {
+				is_external_implementation = a.IsInternalCall ();
 			}
 
 			ConstructorBuilder.SetCustomAttribute ((ConstructorInfo) ctor.GetMetaInfo (), cdata);
@@ -1447,11 +1520,15 @@ namespace Mono.CSharp {
 					Report.Error (669, Location, "`{0}': A class with the ComImport attribute cannot have a user-defined constructor",
 						Parent.GetSignatureForError ());
 				}
+
+				// Set as internal implementation and reset block data
+				// to ensure no IL is generated
 				ConstructorBuilder.SetImplementationFlags (MethodImplAttributes.InternalCall);
+				block = null;
 			}
 
 			if ((ModFlags & Modifiers.DEBUGGER_HIDDEN) != 0)
-				Compiler.PredefinedAttributes.DebuggerHidden.EmitAttribute (ConstructorBuilder);
+				Module.PredefinedAttributes.DebuggerHidden.EmitAttribute (ConstructorBuilder);
 
 			if (OptAttributes != null)
 				OptAttributes.Emit ();
@@ -1476,7 +1553,7 @@ namespace Mono.CSharp {
 				// initializer, it must initialize all of the struct's fields.
 				if ((Parent.PartialContainer.Kind == MemberKind.Struct) &&
 					((ModFlags & Modifiers.STATIC) == 0) && (Initializer == null))
-					block.AddThisVariable (Parent, Location);
+					block.AddThisVariable (bc, Parent, Location);
 
 				if (block != null && (ModFlags & Modifiers.STATIC) == 0){
 					if (Parent.PartialContainer.Kind == MemberKind.Class && Initializer == null)
@@ -1493,7 +1570,7 @@ namespace Mono.CSharp {
 			SourceMethod source = SourceMethod.Create (Parent, ConstructorBuilder, block);
 
 			if (block != null) {
-				if (block.Resolve (null, bc, parameters, this)) {
+				if (block.Resolve (null, bc, this)) {
 					EmitContext ec = new EmitContext (this, ConstructorBuilder.GetILGenerator (), bc.ReturnType);
 					ec.With (EmitContext.Options.ConstructorScope, true);
 
@@ -1511,7 +1588,11 @@ namespace Mono.CSharp {
 
 			if (declarative_security != null) {
 				foreach (var de in declarative_security) {
+#if STATIC
+					ConstructorBuilder.__AddDeclarativeSecurity (de);
+#else
 					ConstructorBuilder.AddDeclarativeSecurity (de.Key, de.Value);
+#endif
 				}
 			}
 
@@ -1843,6 +1924,9 @@ namespace Mono.CSharp {
 			builder.SetParameters (p_types);
 			builder.SetReturnType (return_type);
 			if (builder.Attributes != flags) {
+#if STATIC
+				builder.__SetAttributes (flags);
+#else
 				try {
 					if (methodbuilder_attrs_field == null)
 						methodbuilder_attrs_field = typeof (MethodBuilder).GetField ("attrs", BindingFlags.NonPublic | BindingFlags.Instance);
@@ -1850,6 +1934,7 @@ namespace Mono.CSharp {
 				} catch {
 					container.Compiler.Report.RuntimeMissingSupport (method.Location, "Generic method MethodAttributes");
 				}
+#endif
 			}
 		}
 
@@ -1870,7 +1955,7 @@ namespace Mono.CSharp {
 			ToplevelBlock block = method.Block;
 			if (block != null) {
 				BlockContext bc = new BlockContext (mc, block, method.ReturnType);
-				if (block.Resolve (null, bc, method.ParameterInfo, method)) {
+				if (block.Resolve (null, bc, method)) {
 					EmitContext ec = method.CreateEmitContext (MethodBuilder.GetILGenerator ());
 					if (!ec.HasReturnLabel && bc.HasReturnLabel) {
 						ec.ReturnLabel = bc.ReturnLabel;
@@ -1935,11 +2020,8 @@ namespace Mono.CSharp {
 				MethodGroupExpr method_expr = MethodGroupExpr.CreatePredefined (base_dtor, base_type, Location);
 				method_expr.InstanceExpression = new BaseThis (base_type, Location);
 
-				ToplevelBlock new_block = new ToplevelBlock (Compiler, Block.StartLocation);
-				new_block.EndLocation = Block.EndLocation;
-
-				Block finaly_block = new ExplicitBlock (new_block, Location, Location);
-				Block try_block = new Block (new_block, block);
+				var try_block = new ExplicitBlock (block, block.StartLocation, block.EndLocation);
+				var finaly_block = new ExplicitBlock (block, Location, Location);
 
 				//
 				// 0-size arguments to avoid CS0250 error
@@ -1947,9 +2029,9 @@ namespace Mono.CSharp {
 				// debugger scope
 				//
 				finaly_block.AddStatement (new StatementExpression (new Invocation (method_expr, new Arguments (0))));
-				new_block.AddStatement (new TryFinally (try_block, finaly_block, Location));
 
-				block = new_block;
+				var tf = new TryFinally (try_block, finaly_block, Location);
+				block.WrapIntoDestructor (tf, try_block);
 			}
 
 			base.Emit ();
@@ -1978,7 +2060,7 @@ namespace Mono.CSharp {
 	public abstract class AbstractPropertyEventMethod : MemberCore, IMethodData {
 		protected MethodData method_data;
 		protected ToplevelBlock block;
-		protected Dictionary<SecurityAction, PermissionSet> declarative_security;
+		protected SecurityType declarative_security;
 
 		protected readonly string prefix;
 
@@ -2061,9 +2143,7 @@ namespace Mono.CSharp {
 			}
 
 			if (a.IsValidSecurityAttribute ()) {
-				if (declarative_security == null)
-					declarative_security = new Dictionary<SecurityAction, PermissionSet> ();
-				a.ExtractSecurityPermissionSet (declarative_security);
+				a.ExtractSecurityPermissionSet (ctor, ref declarative_security);
 				return;
 			}
 
@@ -2099,23 +2179,16 @@ namespace Mono.CSharp {
 			method_data.Emit (parent);
 
 			if ((ModFlags & Modifiers.COMPILER_GENERATED) != 0 && !Parent.IsCompilerGenerated)
-				Compiler.PredefinedAttributes.CompilerGenerated.EmitAttribute (method_data.MethodBuilder);
+				Module.PredefinedAttributes.CompilerGenerated.EmitAttribute (method_data.MethodBuilder);
 			if (((ModFlags & Modifiers.DEBUGGER_HIDDEN) != 0))
-				Compiler.PredefinedAttributes.DebuggerHidden.EmitAttribute (method_data.MethodBuilder);
+				Module.PredefinedAttributes.DebuggerHidden.EmitAttribute (method_data.MethodBuilder);
 
 			if (ReturnType == InternalType.Dynamic) {
 				return_attributes = new ReturnParameter (this, method_data.MethodBuilder, Location);
-				Compiler.PredefinedAttributes.Dynamic.EmitAttribute (return_attributes.Builder);
-			} else {
-				var trans_flags = TypeManager.HasDynamicTypeUsed (ReturnType);
-				if (trans_flags != null) {
-					var pa = Compiler.PredefinedAttributes.DynamicTransform;
-					if (pa.Constructor != null || pa.ResolveConstructor (Location, ArrayContainer.MakeType (TypeManager.bool_type))) {
-						return_attributes = new ReturnParameter (this, method_data.MethodBuilder, Location);
-						return_attributes.Builder.SetCustomAttribute (
-							new CustomAttributeBuilder (pa.Constructor, new object [] { trans_flags }));
-					}
-				}
+				Module.PredefinedAttributes.Dynamic.EmitAttribute (return_attributes.Builder);
+			} else if (ReturnType.HasDynamicElement) {
+				return_attributes = new ReturnParameter (this, method_data.MethodBuilder, Location);
+				Module.PredefinedAttributes.Dynamic.EmitAttribute (return_attributes.Builder, ReturnType, Location);
 			}
 
 			if (OptAttributes != null)
@@ -2123,7 +2196,11 @@ namespace Mono.CSharp {
 
 			if (declarative_security != null) {
 				foreach (var de in declarative_security) {
+#if STATIC
+					method_data.MethodBuilder.__AddDeclarativeSecurity (de);
+#else
 					method_data.MethodBuilder.AddDeclarativeSecurity (de.Key, de.Value);
+#endif
 				}
 			}
 
@@ -2277,7 +2354,7 @@ namespace Mono.CSharp {
 			if (!base.Define ())
 				return false;
 
-			if (block != null && block.IsIterator && !(Parent is IteratorStorey)) {
+			if (block != null && block.IsIterator) {
 				//
 				// Current method is turned into automatically generated
 				// wrapper which creates an instance of iterator
diff --git a/mcs/mcs/modifiers.cs b/mcs/mcs/modifiers.cs
index f3c8061..3eb63d7 100644
--- a/mcs/mcs/modifiers.cs
+++ b/mcs/mcs/modifiers.cs
@@ -1,8 +1,22 @@
 //
-// modifiers.cs: Modifier handling.
-// 
+// modifiers.cs: Modifiers handling
+//
+// Authors: Miguel de Icaza (miguel at gnu.org)
+//          Marek Safar (marek.safar at gmail.com)
+//
+// Dual licensed under the terms of the MIT X11 or GNU GPL
+//
+// Copyright 2001, 2002, 2003 Ximian, Inc (http://www.ximian.com)
+// Copyright 2004-2010 Novell, Inc
+//
+
 using System;
+
+#if STATIC
+using IKVM.Reflection;
+#else
 using System.Reflection;
+#endif
 
 namespace Mono.CSharp
 {
@@ -30,6 +44,7 @@ namespace Mono.CSharp
 		//
 		PROPERTY_CUSTOM 		= 0x4000,
 
+		ASYNC					= 0x10000,
 		PARTIAL					= 0x20000,
 		DEFAULT_ACCESS_MODIFER	= 0x40000,
 		METHOD_EXTENSION		= 0x80000,
diff --git a/mcs/mcs/namespace.cs b/mcs/mcs/namespace.cs
index 131a815..80b6429 100644
--- a/mcs/mcs/namespace.cs
+++ b/mcs/mcs/namespace.cs
@@ -10,53 +10,27 @@
 //
 using System;
 using System.Collections.Generic;
-using System.Reflection;
 using System.Linq;
 
 namespace Mono.CSharp {
 
 	public class RootNamespace : Namespace {
 
-		protected readonly string alias_name;
-		protected Assembly [] referenced_assemblies;
-
-		Dictionary<string, Namespace> all_namespaces;
+		readonly string alias_name;
+		readonly Dictionary<string, Namespace> all_namespaces;
 
 		public RootNamespace (string alias_name)
 			: base (null, String.Empty)
 		{
 			this.alias_name = alias_name;
-			referenced_assemblies = new Assembly [0];
 
 			all_namespaces = new Dictionary<string, Namespace> ();
 			all_namespaces.Add ("", this);
 		}
 
-		public void AddAssemblyReference (Assembly a)
-		{
-			foreach (Assembly assembly in referenced_assemblies) {
-				if (a == assembly)
-					return;
-			}
-
-			int top = referenced_assemblies.Length;
-			Assembly [] n = new Assembly [top + 1];
-			referenced_assemblies.CopyTo (n, 0);
-			n [top] = a;
-			referenced_assemblies = n;
-		}
-
-		public void ImportTypes (CompilerContext ctx)
-		{
-			foreach (Assembly a in referenced_assemblies) {
-				try {
-					ctx.MetaImporter.ImportAssembly (a, this);
-				} catch (TypeLoadException e) {
-					ctx.Report.Error (11, Location.Null, e.Message);
-				} catch (System.IO.FileNotFoundException) {
-					ctx.Report.Error (12, Location.Null, "An assembly `{0}' is used without being referenced",
-						a.FullName);
-				}
+		public string Alias {
+			get {
+				return alias_name;
 			}
 		}
 
@@ -83,63 +57,11 @@ namespace Mono.CSharp {
 		}
 	}
 
-	// TODO: It should go to AssemblyClass or AssemblySpec
-	public class GlobalRootNamespace : RootNamespace {
-		Module [] modules;
-		Dictionary<string, RootNamespace> root_namespaces;
-
+	public class GlobalRootNamespace : RootNamespace
+	{
 		public GlobalRootNamespace ()
 			: base ("global")
 		{
-			root_namespaces = new Dictionary<string, RootNamespace> ();
-			root_namespaces.Add (alias_name, this);
-		}
-
-		public Assembly [] Assemblies {
-		    get { return referenced_assemblies; }
-		}
-
-		public Module [] Modules {
-			get { return modules; }
-		}
-
-		public void AddModuleReference (Module m)
-		{
-			int top = modules != null ? modules.Length : 0;
-			Module [] n = new Module [top + 1];
-			if (modules != null)
-				modules.CopyTo (n, 0);
-			n [top] = m;
-			modules = n;
-
-			if (m == RootContext.ToplevelTypes.Builder)
-				return;
-
-			foreach (var t in m.GetTypes ())
-				RegisterNamespace (t.Namespace);
-		}
-
-		public void ComputeNamespaces (CompilerContext ctx)
-		{
-			foreach (RootNamespace rn in root_namespaces.Values) {
-				rn.ImportTypes (ctx);
-			}
-		}
-
-		public void DefineRootNamespace (string alias, Assembly assembly, CompilerContext ctx)
-		{
-			if (alias == alias_name) {
-				NamespaceEntry.Error_GlobalNamespaceRedefined (Location.Null, ctx.Report);
-				return;
-			}
-
-			RootNamespace retval = GetRootNamespace (alias);
-			if (retval == null) {
-				retval = new RootNamespace (alias);
-				root_namespaces.Add (alias, retval);
-			}
-
-			retval.AddAssemblyReference (assembly);
 		}
 
 		public override void Error_NamespaceDoesNotExist (Location loc, string name, int arity, IMemberContext ctx)
@@ -148,15 +70,6 @@ namespace Mono.CSharp {
 				"The type or namespace name `{0}' could not be found in the global namespace (are you missing an assembly reference?)",
 				name);
 		}
-
-		public RootNamespace GetRootNamespace (string name)
-		{
-			RootNamespace rn;
-			if (!root_namespaces.TryGetValue (name, out rn))
-				return null;
-
-			return rn;
-		}
 	}
 
 	/// <summary>
@@ -316,9 +229,9 @@ namespace Mono.CSharp {
 						continue;
 					}
 
-					var pts = best as PredefinedTypeSpec;
+					var pts = best as BuildinTypeSpec;
 					if (pts == null)
-						pts = ts as PredefinedTypeSpec;
+						pts = ts as BuildinTypeSpec;
 
 					if (pts != null) {
 						ctx.Report.SymbolRelatedToPreviousError (best);
@@ -338,7 +251,7 @@ namespace Mono.CSharp {
 						if (silent) {
 							ctx.Report.Warning (1685, 1, loc,
 								"The predefined type `{0}' is defined in multiple assemblies. Using definition from `{1}'",
-								ts.GetSignatureForError (), best.Assembly.GetName ().Name);
+								ts.GetSignatureForError (), best.MemberDefinition.DeclaringAssembly.Name);
 						} else {
 							ctx.Report.Error (433, loc, "The imported type `{0}' is defined multiple times", ts.GetSignatureForError ());
 						}
@@ -349,7 +262,7 @@ namespace Mono.CSharp {
 					if (best.MemberDefinition.IsImported)
 						best = ts;
 
-					if ((best.Modifiers & Modifiers.INTERNAL) != 0 && !TypeManager.IsThisOrFriendAssembly (CodeGen.Assembly.Builder, best.MemberDefinition.Assembly))
+					if ((best.Modifiers & Modifiers.INTERNAL) != 0 && !best.MemberDefinition.IsInternalAsPublic (RootContext.ToplevelTypes.DeclaringAssembly))
 						continue;
 
 					if (silent)
@@ -378,6 +291,9 @@ namespace Mono.CSharp {
 			if (best == null)
 				return null;
 
+			if ((best.Modifiers & Modifiers.INTERNAL) != 0 && !best.MemberDefinition.IsInternalAsPublic (RootContext.ToplevelTypes.DeclaringAssembly))
+				return null;
+
 			te = new TypeExpression (best, Location.Null);
 
 			// TODO MemberCache: Cache more
@@ -447,15 +363,13 @@ namespace Mono.CSharp {
 		/// 
 		/// Looks for extension method in this namespace
 		/// 
-		public List<MethodSpec> LookupExtensionMethod (TypeSpec extensionType, ClassOrStruct currentClass, string name, int arity)
+		public List<MethodSpec> LookupExtensionMethod (TypeSpec extensionType, TypeContainer invocationContext, string name, int arity)
 		{
 			if (types == null)
 				return null;
 
 			List<MethodSpec> found = null;
 
-			var invocation_type = currentClass == null ? InternalType.FakeInternalType : currentClass.CurrentType;
-
 			// TODO: Add per namespace flag when at least 1 type has extension
 
 			foreach (var tgroup in types.Values) {
@@ -463,7 +377,7 @@ namespace Mono.CSharp {
 					if ((ts.Modifiers & Modifiers.METHOD_EXTENSION) == 0)
 						continue;
 
-					var res = ts.MemberCache.FindExtensionMethods (invocation_type, extensionType, name, arity);
+					var res = ts.MemberCache.FindExtensionMethods (invocationContext, extensionType, name, arity);
 					if (res == null)
 						continue;
 
@@ -536,8 +450,8 @@ namespace Mono.CSharp {
 		//
 		public static TypeSpec IsImportedTypeOverride (TypeSpec ts, TypeSpec found)
 		{
-			var ts_accessible = (ts.Modifiers & Modifiers.PUBLIC) != 0 || TypeManager.IsThisOrFriendAssembly (CodeGen.Assembly.Builder, ts.MemberDefinition.Assembly);
-			var found_accessible = (found.Modifiers & Modifiers.PUBLIC) != 0 || TypeManager.IsThisOrFriendAssembly (CodeGen.Assembly.Builder, found.MemberDefinition.Assembly);
+			var ts_accessible = (ts.Modifiers & Modifiers.PUBLIC) != 0 || ts.MemberDefinition.IsInternalAsPublic (RootContext.ToplevelTypes.DeclaringAssembly);
+			var found_accessible = (found.Modifiers & Modifiers.PUBLIC) != 0 || found.MemberDefinition.IsInternalAsPublic (RootContext.ToplevelTypes.DeclaringAssembly);
 
 			if (ts_accessible && !found_accessible)
 				return ts;
@@ -554,7 +468,7 @@ namespace Mono.CSharp {
 			types.Remove (name);
 		}
 
-		public void ReplaceTypeWithPredefined (TypeSpec ts, PredefinedTypeSpec pts)
+		public void ReplaceTypeWithPredefined (TypeSpec ts, BuildinTypeSpec pts)
 		{
 			var found = types [ts.Name];
 			cached_types.Remove (ts.Name);
@@ -690,7 +604,7 @@ namespace Mono.CSharp {
 
 			public virtual FullNamedExpression Resolve (IMemberContext rc, bool local)
 			{
-				FullNamedExpression fne = rc.Compiler.GlobalRootNamespace.GetRootNamespace (Alias);
+				FullNamedExpression fne = rc.Module.GetRootNamespace (Alias);
 				if (fne == null) {
 					rc.Compiler.Report.Error (430, Location,
 						"The extern alias `{0}' was not specified in -reference option",
@@ -758,7 +672,7 @@ namespace Mono.CSharp {
 		public readonly DeclSpace SlaveDeclSpace;
 		static readonly Namespace [] empty_namespaces = new Namespace [0];
 		Namespace [] namespace_using_table;
-		CompilerContext ctx;
+		ModuleContainer ctx;
 
 		static List<NamespaceEntry> entries = new List<NamespaceEntry> ();
 
@@ -767,8 +681,7 @@ namespace Mono.CSharp {
 			entries = new List<NamespaceEntry> ();
 		}
 
-		// TODO: ctx should be a module
-		public NamespaceEntry (CompilerContext ctx, NamespaceEntry parent, CompilationUnit file, string name)
+		public NamespaceEntry (ModuleContainer ctx, NamespaceEntry parent, CompilationUnit file, string name)
 		{
 			this.ctx = ctx;
 			this.parent = parent;
@@ -778,13 +691,14 @@ namespace Mono.CSharp {
 			if (parent != null)
 				ns = parent.NS.GetNamespace (name, true);
 			else if (name != null)
-				ns = Compiler.GlobalRootNamespace.GetNamespace (name, true);
+				ns = ctx.GlobalRootNamespace.GetNamespace (name, true);
 			else
-				ns = Compiler.GlobalRootNamespace;
+				ns = ctx.GlobalRootNamespace;
+
 			SlaveDeclSpace = new RootDeclSpace (this);
 		}
 
-		private NamespaceEntry (CompilerContext ctx, NamespaceEntry parent, CompilationUnit file, Namespace ns, bool slave)
+		private NamespaceEntry (ModuleContainer ctx, NamespaceEntry parent, CompilationUnit file, Namespace ns, bool slave)
 		{
 			this.ctx = ctx;
 			this.parent = parent;
@@ -985,7 +899,7 @@ namespace Mono.CSharp {
 		{
 			List<MethodSpec> candidates = null;
 			foreach (Namespace n in GetUsingTable ()) {
-				var a = n.LookupExtensionMethod (extensionType, null, name, arity);
+				var a = n.LookupExtensionMethod (extensionType, RootContext.ToplevelTypes, name, arity);
 				if (a == null)
 					continue;
 
@@ -1007,7 +921,7 @@ namespace Mono.CSharp {
 			//
 			Namespace parent_ns = ns.Parent;
 			do {
-				candidates = parent_ns.LookupExtensionMethod (extensionType, null, name, arity);
+				candidates = parent_ns.LookupExtensionMethod (extensionType, RootContext.ToplevelTypes, name, arity);
 				if (candidates != null)
 					return candidates;
 
@@ -1101,7 +1015,7 @@ namespace Mono.CSharp {
 			}
 
 			if (fne != null) {
-				if (!((fne.Type.Modifiers & Modifiers.INTERNAL) != 0 && !TypeManager.IsThisOrFriendAssembly (CodeGen.Assembly.Builder, fne.Type.Assembly)))
+				if (!((fne.Type.Modifiers & Modifiers.INTERNAL) != 0 && !fne.Type.MemberDefinition.IsInternalAsPublic (RootContext.ToplevelTypes.DeclaringAssembly)))
 					return fne;
 			}
 
@@ -1210,7 +1124,7 @@ namespace Mono.CSharp {
 
 		public static void Error_GlobalNamespaceRedefined (Location loc, Report Report)
 		{
-			Report.Error (1681, loc, "You cannot redefine the global extern alias");
+			Report.Error (1681, loc, "The global extern alias cannot be redefined");
 		}
 
 		public static void Error_NamespaceNotFound (Location loc, string name, Report Report)
@@ -1281,7 +1195,7 @@ namespace Mono.CSharp {
 		#region IMemberContext Members
 
 		public CompilerContext Compiler {
-			get { return ctx; }
+			get { return ctx.Compiler; }
 		}
 
 		public TypeSpec CurrentType {
@@ -1313,6 +1227,10 @@ namespace Mono.CSharp {
 			get { return SlaveDeclSpace.IsStatic; }
 		}
 
+		public ModuleContainer Module {
+			get { return SlaveDeclSpace.Module; }
+		}
+
 		#endregion
 	}
 }
diff --git a/mcs/mcs/nullable.cs b/mcs/mcs/nullable.cs
index 301536c..0b1641f 100644
--- a/mcs/mcs/nullable.cs
+++ b/mcs/mcs/nullable.cs
@@ -12,8 +12,12 @@
 //
 
 using System;
-using System.Reflection;
+
+#if STATIC
+using IKVM.Reflection.Emit;
+#else
 using System.Reflection.Emit;
+#endif
 	
 namespace Mono.CSharp.Nullable
 {
@@ -35,13 +39,12 @@ namespace Mono.CSharp.Nullable
 
 		protected override TypeExpr DoResolveAsTypeStep (IMemberContext ec)
 		{
-			if (TypeManager.generic_nullable_type == null) {
-				TypeManager.generic_nullable_type = TypeManager.CoreLookupType (ec.Compiler,
-					"System", "Nullable", 1, MemberKind.Struct, true);
-			}
+			var type = ec.Module.PredefinedTypes.Nullable.Resolve (loc);
+			if (type == null)
+				return null;
 
 			TypeArguments args = new TypeArguments (underlying);
-			GenericTypeExpr ctype = new GenericTypeExpr (TypeManager.generic_nullable_type, args, loc);
+			GenericTypeExpr ctype = new GenericTypeExpr (type, args, loc);
 			return ctype.ResolveAsTypeTerminal (ec, false);
 		}
 	}
@@ -198,7 +201,7 @@ namespace Mono.CSharp.Nullable
 		public void AddressOf (EmitContext ec, AddressOp mode)
 		{
 			IMemoryLocation ml = expr as VariableReference;
-			if (ml != null) 
+			if (ml != null)
 				ml.AddressOf (ec, mode);
 			else
 				LocalVariable.AddressOf (ec, mode);
@@ -261,6 +264,32 @@ namespace Mono.CSharp.Nullable
 		}
 	}
 
+	//
+	// Calls get_Value method on nullable expression
+	//
+	public class UnwrapCall : CompositeExpression
+	{
+		public UnwrapCall (Expression expr)
+			: base (expr)
+		{
+		}
+
+		protected override Expression DoResolve (ResolveContext rc)
+		{
+			base.DoResolve (rc);
+
+			if (type != null)
+				type = NullableInfo.GetUnderlyingType (type);
+
+			return this;
+		}
+
+		public override void Emit (EmitContext ec)
+		{
+			Invocation.EmitCall (ec, Child, NullableInfo.GetValue (Child.Type), null, loc);
+		}
+	}
+
 	public class Wrap : TypeCast
 	{
 		private Wrap (Expression expr, TypeSpec type)
@@ -315,7 +344,7 @@ namespace Mono.CSharp.Nullable
 			return new LiftedNull (nullable, loc);
 		}
 
-		public static Expression CreateFromExpression (ResolveContext ec, Expression e)
+		public static Constant CreateFromExpression (ResolveContext ec, Expression e)
 		{
 			ec.Report.Warning (458, 2, e.Location, "The result of the expression is always `null' of type `{0}'",
 				TypeManager.CSharpName (e.Type));
@@ -536,7 +565,6 @@ namespace Mono.CSharp.Nullable
 	public class LiftedBinaryOperator : Binary
 	{
 		Unwrap left_unwrap, right_unwrap;
-		bool left_null_lifted, right_null_lifted;
 		Expression left_orig, right_orig;
 		Expression user_operator;
 		MethodSpec wrap_ctor;
@@ -546,6 +574,26 @@ namespace Mono.CSharp.Nullable
 		{
 		}
 
+		bool IsBitwiseBoolean {
+			get {
+				return (Oper == Operator.BitwiseAnd || Oper == Operator.BitwiseOr) &&
+				((left_unwrap != null && left_unwrap.Type == TypeManager.bool_type) ||
+				 (right_unwrap != null && right_unwrap.Type == TypeManager.bool_type));
+			}
+		}
+
+		bool IsLeftNullLifted {
+			get {
+				return (state & State.LeftNullLifted) != 0;
+			}
+		}
+
+		bool IsRightNullLifted {
+			get {
+				return (state & State.RightNullLifted) != 0;
+			}
+		}
+
 		public override Expression CreateExpressionTree (ResolveContext ec)
 		{
 			if (user_operator != null)
@@ -559,7 +607,7 @@ namespace Mono.CSharp.Nullable
 		// with the null literal *outside* of a generics context and
 		// inlines that as true or false.
 		//
-		Expression CreateNullConstant (ResolveContext ec, Expression expr)
+		Constant CreateNullConstant (ResolveContext ec, Expression expr)
 		{
 			// FIXME: Handle side effect constants
 			Constant c = new BoolConstant (Oper == Operator.Inequality, loc).Resolve (ec);
@@ -602,15 +650,19 @@ namespace Mono.CSharp.Nullable
 			// Arguments can be lifted for equal operators when the return type is bool and both
 			// arguments are of same type
 			//	
-			if (left_orig.IsNull) {
+			if (left_orig is NullLiteral) {
 				left = right;
-				left_null_lifted = true;
+				state |= State.LeftNullLifted;
 				type = TypeManager.bool_type;
 			}
 
 			if (right_orig.IsNull) {
-				right = left;
-				right_null_lifted = true;
+				if ((Oper & Operator.ShiftMask) != 0)
+					right = new EmptyExpression (TypeManager.int32_type);
+				else
+					right = left;
+
+				state |= State.RightNullLifted;
 				type = TypeManager.bool_type;
 			}
 
@@ -624,11 +676,21 @@ namespace Mono.CSharp.Nullable
 			Label load_right = ec.DefineLabel ();
 			Label end_label = ec.DefineLabel ();
 
+			// null & value, null | value
+			if (left_unwrap == null) {
+				left_unwrap = right_unwrap;
+				right_unwrap = null;
+				right = left;
+			}
+
 			left_unwrap.Emit (ec);
 			ec.Emit (OpCodes.Brtrue_S, load_right);
 
-			right_unwrap.Emit (ec);
-			ec.Emit (OpCodes.Brtrue_S, load_left);
+			// value & null, value | null
+			if (right_unwrap != null) {
+				right_unwrap.Emit (ec);
+				ec.Emit (OpCodes.Brtrue_S, load_left);
+			}
 
 			left_unwrap.EmitCheck (ec);
 			ec.Emit (OpCodes.Brfalse_S, load_right);
@@ -639,14 +701,30 @@ namespace Mono.CSharp.Nullable
 			if (Oper == Operator.BitwiseAnd) {
 				left_unwrap.Load (ec);
 			} else {
-				right_unwrap.Load (ec);
-				right_unwrap = left_unwrap;
+				if (right_unwrap == null) {
+					right.Emit (ec);
+					if (right is EmptyConstantCast || right is EmptyCast)
+						ec.Emit (OpCodes.Newobj, NullableInfo.GetConstructor (type));
+				} else {
+					right_unwrap.Load (ec);
+					right_unwrap = left_unwrap;
+				}
 			}
 			ec.Emit (OpCodes.Br_S, end_label);
 
 			// load right
 			ec.MarkLabel (load_right);
-			right_unwrap.Load (ec);
+			if (right_unwrap == null) {
+				if (Oper == Operator.BitwiseAnd) {
+					right.Emit (ec);
+					if (right is EmptyConstantCast || right is EmptyCast)
+						ec.Emit (OpCodes.Newobj, NullableInfo.GetConstructor (type));
+				} else {
+					left_unwrap.Load (ec);
+				}
+			} else {
+				right_unwrap.Load (ec);
+			}
 
 			ec.MarkLabel (end_label);
 		}
@@ -659,7 +737,7 @@ namespace Mono.CSharp.Nullable
 			//
 			// Either left or right is null
 			//
-			if (left_unwrap != null && (right_null_lifted || right.IsNull)) {
+			if (left_unwrap != null && (IsRightNullLifted || right.IsNull)) {
 				left_unwrap.EmitCheck (ec);
 				if (Oper == Binary.Operator.Equality) {
 					ec.Emit (OpCodes.Ldc_I4_0);
@@ -668,7 +746,7 @@ namespace Mono.CSharp.Nullable
 				return;
 			}
 
-			if (right_unwrap != null && (left_null_lifted || left.IsNull)) {
+			if (right_unwrap != null && (IsLeftNullLifted || left.IsNull)) {
 				right_unwrap.EmitCheck (ec);
 				if (Oper == Binary.Operator.Equality) {
 					ec.Emit (OpCodes.Ldc_I4_0);
@@ -789,13 +867,6 @@ namespace Mono.CSharp.Nullable
 			base.EmitOperator (ec, l);
 		}
 
-		bool IsBitwiseBoolean {
-			get {
-				return (Oper & Operator.BitwiseMask) != 0 && left_unwrap != null && right_unwrap != null &&
-				left_unwrap.Type == TypeManager.bool_type && right_unwrap.Type == TypeManager.bool_type;
-			}
-		}
-
 		Expression LiftResult (ResolveContext ec, Expression res_expr)
 		{
 			TypeExpr lifted_type;
@@ -803,7 +874,7 @@ namespace Mono.CSharp.Nullable
 			//
 			// Avoid double conversion
 			//
-			if (left_unwrap == null || left_null_lifted || left_unwrap.Type != left.Type || (left_unwrap != null && right_null_lifted)) {
+			if (left_unwrap == null || IsLeftNullLifted || left_unwrap.Type != left.Type || (left_unwrap != null && IsRightNullLifted)) {
 				lifted_type = new NullableType (left.Type, loc);
 				lifted_type = lifted_type.ResolveAsTypeTerminal (ec, false);
 				if (lifted_type == null)
@@ -815,14 +886,18 @@ namespace Mono.CSharp.Nullable
 					left = EmptyCast.Create (left, lifted_type.Type);
 			}
 
-			if (left != right && (right_unwrap == null || right_null_lifted || right_unwrap.Type != right.Type || (right_unwrap != null && left_null_lifted))) {
+			if (left != right && (right_unwrap == null || IsRightNullLifted || right_unwrap.Type != right.Type || (right_unwrap != null && IsLeftNullLifted))) {
 				lifted_type = new NullableType (right.Type, loc);
 				lifted_type = lifted_type.ResolveAsTypeTerminal (ec, false);
 				if (lifted_type == null)
 					return null;
 
-				if (right is UserCast || right is TypeCast)
-					right.Type = lifted_type.Type;
+				var r = right;
+				if (r is ReducedExpression)
+					r = ((ReducedExpression) r).OriginalExpression;
+
+				if (r is UserCast || r is TypeCast)
+					r.Type = lifted_type.Type;
 				else
 					right = EmptyCast.Create (right, lifted_type.Type);
 			}
@@ -837,9 +912,16 @@ namespace Mono.CSharp.Nullable
 				type = res_expr.Type = lifted_type.Type;
 			}
 
-			if (left_null_lifted) {
+			if (IsLeftNullLifted) {
 				left = LiftedNull.Create (right.Type, left.Location);
 
+				//
+				// Special case for bool?, the result depends on both null right side and left side value
+				//
+				if ((Oper == Operator.BitwiseAnd || Oper == Operator.BitwiseOr) && NullableInfo.GetUnderlyingType (type) == TypeManager.bool_type) {
+					return res_expr;
+				}
+
 				if ((Oper & (Operator.ArithmeticMask | Operator.ShiftMask | Operator.BitwiseMask)) != 0)
 					return LiftedNull.CreateFromExpression (ec, res_expr);
 
@@ -850,9 +932,16 @@ namespace Mono.CSharp.Nullable
 					return CreateNullConstant (ec, right_orig).Resolve (ec);
 			}
 
-			if (right_null_lifted) {
+			if (IsRightNullLifted) {
 				right = LiftedNull.Create (left.Type, right.Location);
 
+				//
+				// Special case for bool?, the result depends on both null right side and left side value
+				//
+				if ((Oper == Operator.BitwiseAnd || Oper == Operator.BitwiseOr) && NullableInfo.GetUnderlyingType (type) == TypeManager.bool_type) {
+					return res_expr;
+				}
+
 				if ((Oper & (Operator.ArithmeticMask | Operator.ShiftMask | Operator.BitwiseMask)) != 0)
 					return LiftedNull.CreateFromExpression (ec, res_expr);
 
@@ -881,19 +970,44 @@ namespace Mono.CSharp.Nullable
 			// (in unlifted or lifted form) exists for the operation.
 			//
 			if (e == null && (Oper & Operator.EqualityMask) != 0) {
-				if ((left_null_lifted && right_unwrap != null) || (right_null_lifted && left_unwrap != null))
+				if ((IsLeftNullLifted && right_unwrap != null) || (IsRightNullLifted && left_unwrap != null))
 					return LiftResult (ec, this);
 			}
 
 			return e;
 		}
 
-		protected override Expression ResolveUserOperator (ResolveContext ec, TypeSpec l, TypeSpec r)
+		protected override Expression ResolveUserOperator (ResolveContext ec, Expression left, Expression right)
 		{
-			Expression expr = base.ResolveUserOperator (ec, l, r);
+			//
+			// Try original types first for exact match without unwrapping
+			//
+			Expression expr = base.ResolveUserOperator (ec, left_orig, right_orig);
+			if (expr != null)
+				return expr;
+
+			State orig_state = state;
+
+			//
+			// One side is a nullable type, try to match underlying types
+			//
+			if (left_unwrap != null || right_unwrap != null || (state & (State.RightNullLifted | State.LeftNullLifted)) != 0) {
+				expr = base.ResolveUserOperator (ec, left, right);
+			}
+
 			if (expr == null)
 				return null;
 
+			//
+			// Lift the result in the case it can be null and predefined or user operator
+			// result type is of a value type
+			//
+			if (!TypeManager.IsValueType (expr.Type))
+				return null;
+
+			if (state != orig_state)
+				return expr;
+
 			expr = LiftResult (ec, expr);
 			if (expr is Constant)
 				return expr;
@@ -958,29 +1072,56 @@ namespace Mono.CSharp.Nullable
 				if (unwrap == null)
 					return null;
 
+				//
+				// Reduce (left ?? null) to left
+				//
+				if (right.IsNull)
+					return ReducedExpression.Create (left, this);
+
 				if (Convert.ImplicitConversionExists (ec, right, unwrap.Type)) {
 					left = unwrap;
-					type = left.Type;
-					right = Convert.ImplicitConversion (ec, right, type, loc);
+					ltype = left.Type;
+
+					//
+					// If right is a dynamic expression, the result type is dynamic
+					//
+					if (right.Type == InternalType.Dynamic) {
+						type = right.Type;
+
+						// Need to box underlying value type
+						left = Convert.ImplicitBoxingConversion (left, ltype, type);
+						return this;
+					}
+
+					right = Convert.ImplicitConversion (ec, right, ltype, loc);
+					type = ltype;
 					return this;
 				}
 			} else if (TypeManager.IsReferenceType (ltype)) {
 				if (Convert.ImplicitConversionExists (ec, right, ltype)) {
 					//
-					// Reduce (constant ?? expr) to constant
+					// If right is a dynamic expression, the result type is dynamic
+					//
+					if (right.Type == InternalType.Dynamic) {
+						type = right.Type;
+						return this;
+					}
+
+					//
+					// Reduce ("foo" ?? expr) to expression
 					//
 					Constant lc = left as Constant;
 					if (lc != null && !lc.IsDefaultValue)
-						return new SideEffectConstant (lc, right, loc).Resolve (ec);
+						return ReducedExpression.Create (lc, this).Resolve (ec);
 
 					//
 					// Reduce (left ?? null) to left OR (null-constant ?? right) to right
 					//
 					if (right.IsNull || lc != null)
-						return ReducedExpression.Create (lc != null ? right : left, this);
+						return ReducedExpression.Create (lc != null ? right : left, this).Resolve (ec);
 
 					right = Convert.ImplicitConversion (ec, right, ltype, loc);
-					type = left.Type;
+					type = ltype;
 					return this;
 				}
 			} else {
@@ -995,7 +1136,7 @@ namespace Mono.CSharp.Nullable
 			// Reduce (null ?? right) to right
 			//
 			if (left.IsNull)
-				return ReducedExpression.Create (right, this);
+				return ReducedExpression.Create (right, this).Resolve (ec);
 
 			left = Convert.ImplicitConversion (ec, unwrap != null ? unwrap : left, rtype, loc);
 			type = rtype;
diff --git a/mcs/mcs/parameter.cs b/mcs/mcs/parameter.cs
index 395d622..7ccda1d 100644
--- a/mcs/mcs/parameter.cs
+++ b/mcs/mcs/parameter.cs
@@ -11,10 +11,17 @@
 //
 //
 using System;
+using System.Text;
+
+#if STATIC
+using MetaType = IKVM.Reflection.Type;
+using IKVM.Reflection;
+using IKVM.Reflection.Emit;
+#else
+using MetaType = System.Type;
 using System.Reflection;
 using System.Reflection.Emit;
-using System.Text;
-using System.Linq;
+#endif
 
 namespace Mono.CSharp {
 
@@ -110,34 +117,6 @@ namespace Mono.CSharp {
 		}
 	}
 
-	/// <summary>
-	/// Class for applying custom attributes on the implicit parameter type
-	/// of the 'set' method in properties, and the 'add' and 'remove' methods in events.
-	/// </summary>
-	/// 
-	// TODO: should use more code from Parameter.ApplyAttributeBuilder
-	public class ImplicitParameter : ParameterBase {
-		public ImplicitParameter (MethodBuilder mb)
-		{
-			builder = mb.DefineParameter (1, ParameterAttributes.None, "value");			
-		}
-
-		public override AttributeTargets AttributeTargets {
-			get {
-				return AttributeTargets.Parameter;
-			}
-		}
-
-		/// <summary>
-		/// Is never called
-		/// </summary>
-		public override string[] ValidAttributeTargets {
-			get {
-				return null;
-			}
-		}
-	}
-
 	public class ImplicitLambdaParameter : Parameter
 	{
 		public ImplicitLambdaParameter (string name, Location loc)
@@ -155,8 +134,9 @@ namespace Mono.CSharp {
 			return parameter_type;
 		}
 
-		public TypeSpec Type {
-			set { parameter_type = value; }
+		public void SetParameterType (TypeSpec type)
+		{
+			parameter_type = type;
 		}
 	}
 
@@ -223,7 +203,8 @@ namespace Mono.CSharp {
 	//
 	// Parameter information created by parser
 	//
-	public class Parameter : ParameterBase, IParameterData, ILocalVariable {
+	public class Parameter : ParameterBase, IParameterData, ILocalVariable // TODO: INamedBlockVariable
+	{
 		[Flags]
 		public enum Modifier : byte {
 			NONE    = 0,
@@ -244,11 +225,11 @@ namespace Mono.CSharp {
 		string name;
 		Expression default_expr;
 		protected TypeSpec parameter_type;
-		public readonly Location Location;
+		readonly Location loc;
 		protected int idx;
 		public bool HasAddressTaken;
 
-		Expression expr_tree_variable;
+		TemporaryVariableReference expr_tree_variable;
 		static TypeExpr parameter_expr_tree_type;
 
 		HoistedVariable hoisted_variant;
@@ -257,14 +238,15 @@ namespace Mono.CSharp {
 		{
 			this.name = name;
 			modFlags = mod;
-			Location = loc;
+			this.loc = loc;
 			texpr = type;
 
 			// Only assign, attributes will be attached during resolve
 			base.attributes = attrs;
 		}
 
-#region Properties
+		#region Properties
+
 		public Expression DefaultValue {
 			get {
 				return default_expr;
@@ -274,12 +256,31 @@ namespace Mono.CSharp {
 			}
 		}
 
+		public Location Location {
+			get {
+				return loc;
+			}
+		}
+
+		public TypeSpec Type {
+			get {
+				return parameter_type;
+			}
+		}
+
 		public FullNamedExpression TypeExpression  {
 			get {
 				return texpr;
 			}
 		}
-#endregion
+
+		public override string[] ValidAttributeTargets {
+			get {
+				return attribute_targets;
+			}
+		}
+
+		#endregion
 
 		public override void ApplyAttributeBuilder (Attribute a, MethodSpec ctor, byte[] cdata, PredefinedAttributes pa)
 		{
@@ -408,7 +409,7 @@ namespace Mono.CSharp {
 			if (attributes == null)
 				return;
 			
-			var pa = attributes.Search (rc.Compiler.PredefinedAttributes.OptionalParameter);
+			var pa = attributes.Search (rc.Module.PredefinedAttributes.OptionalParameter);
 			if (pa == null)
 				return;
 
@@ -418,7 +419,7 @@ namespace Mono.CSharp {
 			attributes.Attrs.Remove (pa);
 
 			TypeSpec expr_type = null;
-			pa = attributes.Search (rc.Compiler.PredefinedAttributes.DefaultParameterValue);
+			pa = attributes.Search (rc.Module.PredefinedAttributes.DefaultParameterValue);
 			if (pa != null) {
 				attributes.Attrs.Remove (pa);
 				default_expr = pa.GetParameterDefaultValue (out expr_type);
@@ -442,16 +443,10 @@ namespace Mono.CSharp {
 			if (default_expr == null)
 				return null;
 
-			if (!(default_expr is Constant || default_expr is DefaultValueExpression)) {
-				if (TypeManager.IsNullableType (parameter_type)) {
-					rc.Compiler.Report.Error (1770, default_expr.Location,
-						"The expression being assigned to nullable optional parameter `{0}' must be default value",
-						Name);
-				} else {
-					rc.Compiler.Report.Error (1736, default_expr.Location,
-						"The expression being assigned to optional parameter `{0}' must be a constant or default value",
-						Name);
-				}
+			if (!(default_expr is Constant || default_expr is DefaultValueExpression || (default_expr is New && ((New)default_expr).IsDefaultStruct))) {
+				rc.Compiler.Report.Error (1736, default_expr.Location,
+					"The expression being assigned to optional parameter `{0}' must be a constant or default value",
+					Name);
 
 				return null;
 			}
@@ -459,22 +454,28 @@ namespace Mono.CSharp {
 			if (default_expr.Type == parameter_type)
 				return default_expr;
 
-			if (TypeManager.IsNullableType (parameter_type)) {
-				if (Convert.ImplicitNulableConversion (rc, default_expr, parameter_type) != null)
-					return default_expr;
-			} else {
-				var res = Convert.ImplicitConversionStandard (rc, default_expr, parameter_type, default_expr.Location);
-				if (res != null) {
-					if (!default_expr.IsNull && TypeManager.IsReferenceType (parameter_type) && parameter_type != TypeManager.string_type) {
-						rc.Compiler.Report.Error (1763, default_expr.Location,
-							"Optional parameter `{0}' of type `{1}' can only be initialized with `null'",
-							Name, GetSignatureForError ());
-
+			var res = Convert.ImplicitConversionStandard (rc, default_expr, parameter_type, default_expr.Location);
+			if (res != null) {
+				if (TypeManager.IsNullableType (parameter_type) && res is Nullable.Wrap) {
+					Nullable.Wrap wrap = (Nullable.Wrap) res;
+					res = wrap.Child;
+					if (!(res is Constant)) {
+						rc.Compiler.Report.Error (1770, default_expr.Location,
+							"The expression being assigned to nullable optional parameter `{0}' must be default value",
+							Name);
 						return null;
 					}
+				}
+
+				if (!default_expr.IsNull && TypeManager.IsReferenceType (parameter_type) && parameter_type != TypeManager.string_type) {
+					rc.Compiler.Report.Error (1763, default_expr.Location,
+						"Optional parameter `{0}' of type `{1}' can only be initialized with `null'",
+						Name, GetSignatureForError ());
 
-					return res;
+					return null;
 				}
+
+				return res;
 			}
 
 			rc.Compiler.Report.Error (1750, Location,
@@ -561,11 +562,14 @@ namespace Mono.CSharp {
 				return;
 
 			ctx.Compiler.Report.Warning (3001, 1, Location,
-				"Argument type `{0}' is not CLS-compliant", GetSignatureForError ());
+				"Argument type `{0}' is not CLS-compliant", parameter_type.GetSignatureForError ());
 		}
 
 		public virtual void ApplyAttributes (MethodBuilder mb, ConstructorBuilder cb, int index, PredefinedAttributes pa)
 		{
+			if (builder != null)
+				throw new InternalErrorException ("builder already exists");
+
 			if (mb == null)
 				builder = cb.DefineParameter (index, Attributes, Name);
 			else
@@ -582,33 +586,29 @@ namespace Mono.CSharp {
 				Constant c = default_expr as Constant;
 				if (c != null) {
 					if (default_expr.Type == TypeManager.decimal_type) {
-						builder.SetCustomAttribute (Const.CreateDecimalConstantAttribute (c, pa));
+						pa.DecimalConstant.EmitAttribute (builder, (decimal) c.GetValue (), c.Location);
 					} else {
-						builder.SetConstant (c.GetTypedValue ());
+						builder.SetConstant (c.GetValue ());
 					}
+				} else if (default_expr.Type.IsStruct) {
+					//
+					// Handles special case where default expression is used with value-type
+					//
+					// void Foo (S s = default (S)) {}
+					//
+					builder.SetConstant (null);
 				}
 			}
 
-			if (parameter_type == InternalType.Dynamic) {
-				pa.Dynamic.EmitAttribute (builder);
-			} else {
-				var trans_flags = TypeManager.HasDynamicTypeUsed (parameter_type);
-				if (trans_flags != null) {
-					var dt = pa.DynamicTransform;
-					if (dt.Constructor != null || dt.ResolveConstructor (Location, ArrayContainer.MakeType (TypeManager.bool_type))) {
-						builder.SetCustomAttribute (
-							new CustomAttributeBuilder (dt.Constructor, new object [] { trans_flags }));
-					}
+			if (parameter_type != null) {
+				if (parameter_type == InternalType.Dynamic) {
+					pa.Dynamic.EmitAttribute (builder);
+				} else if (parameter_type.HasDynamicElement) {
+					pa.Dynamic.EmitAttribute (builder, parameter_type, Location);
 				}
 			}
 		}
 
-		public override string[] ValidAttributeTargets {
-			get {
-				return attribute_targets;
-			}
-		}
-
 		public Parameter Clone ()
 		{
 			Parameter p = (Parameter) MemberwiseClone ();
@@ -623,8 +623,8 @@ namespace Mono.CSharp {
 			if ((modFlags & Modifier.ISBYREF) != 0)
 				ec.Report.Error (1951, Location, "An expression tree parameter cannot use `ref' or `out' modifier");
 
-			expr_tree_variable = new TemporaryVariable (ResolveParameterExpressionType (ec, Location).Type, Location);
-			expr_tree_variable = expr_tree_variable.Resolve (ec);
+			expr_tree_variable = TemporaryVariableReference.Create (ResolveParameterExpressionType (ec, Location).Type, ec.CurrentBlock.ParametersBlock, Location);
+			expr_tree_variable = (TemporaryVariableReference) expr_tree_variable.Resolve (ec);
 
 			Arguments arguments = new Arguments (2);
 			arguments.Add (new Argument (new TypeOf (
@@ -673,7 +673,7 @@ namespace Mono.CSharp {
 			}
 		}
 
-		public Expression ExpressionTreeVariableReference ()
+		public TemporaryVariableReference ExpressionTreeVariableReference ()
 		{
 			return expr_tree_variable;
 		}
@@ -686,12 +686,7 @@ namespace Mono.CSharp {
 			if (parameter_expr_tree_type != null)
 				return parameter_expr_tree_type;
 
-			TypeSpec p_type = TypeManager.parameter_expression_type;
-			if (p_type == null) {
-				p_type = TypeManager.CoreLookupType (ec.Compiler, "System.Linq.Expressions", "ParameterExpression", MemberKind.Class, true);
-				TypeManager.parameter_expression_type = p_type;
-			}
-
+			TypeSpec p_type = ec.Module.PredefinedTypes.ParameterExpression.Resolve (location);
 			parameter_expr_tree_type = new TypeExpression (p_type, location).
 				ResolveAsTypeTerminal (ec, false);
 
@@ -796,19 +791,19 @@ namespace Mono.CSharp {
 		}
 
 		// Very expensive operation
-		public Type[] GetMetaInfo ()
+		public MetaType[] GetMetaInfo ()
 		{
-			Type[] types;
+			MetaType[] types;
 			if (has_arglist) {
 				if (Count == 1)
-					return Type.EmptyTypes;
+					return MetaType.EmptyTypes;
 
-				types = new Type [Count - 1];
+				types = new MetaType[Count - 1];
 			} else {
 				if (Count == 0)
-					return Type.EmptyTypes;
+					return MetaType.EmptyTypes;
 
-				types = new Type [Count];
+				types = new MetaType[Count];
 			}
 
 			for (int i = 0; i < types.Length; ++i) {
@@ -977,40 +972,21 @@ namespace Mono.CSharp {
 		    this.types = types;
 		}
 		
-		public ParametersCompiled (CompilerContext ctx, params Parameter[] parameters)
+		public ParametersCompiled (params Parameter[] parameters)
 		{
-			if (parameters == null)
+			if (parameters == null || parameters.Length == 0)
 				throw new ArgumentException ("Use EmptyReadOnlyParameters");
 
 			this.parameters = parameters;
 			int count = parameters.Length;
 
-			if (count == 0)
-				return;
-
-			if (count == 1) {
-				has_params = (parameters [0].ModFlags & Parameter.Modifier.PARAMS) != 0;
-				return;
-			}
-
 			for (int i = 0; i < count; i++){
 				has_params |= (parameters [i].ModFlags & Parameter.Modifier.PARAMS) != 0;
-				if (ctx != null) {
-					string base_name = parameters[i].Name;
-
-					for (int j = i + 1; j < count; j++) {
-						if (base_name != parameters[j].Name)
-							continue;
-
-						ErrorDuplicateName (parameters[i], ctx.Report);
-						i = j;
-					}
-				}
 			}
 		}
 
-		public ParametersCompiled (CompilerContext ctx, Parameter [] parameters, bool has_arglist) :
-			this (ctx, parameters)
+		public ParametersCompiled (Parameter [] parameters, bool has_arglist) :
+			this (parameters)
 		{
 			this.has_arglist = has_arglist;
 		}
@@ -1133,11 +1109,6 @@ namespace Mono.CSharp {
 			return parameters;
 		}
 
-		protected virtual void ErrorDuplicateName (Parameter p, Report Report)
-		{
-			Report.Error (100, p.Location, "The parameter name `{0}' is a duplicate", p.Name);
-		}
-
 		public bool Resolve (IMemberContext ec)
 		{
 			if (types != null)
@@ -1163,16 +1134,18 @@ namespace Mono.CSharp {
 
 		public void ResolveDefaultValues (MemberCore m)
 		{
-			var count = parameters.Length;
+			ResolveContext rc = null;
+			for (int i = 0; i < parameters.Length; ++i) {
+				Parameter p = (Parameter) parameters [i];
 
-			//
-			// Try not to enter default values resolution if there are not any
-			//
-			if (parameters[count - 1].HasDefaultValue || (HasParams && count > 1 && parameters[count - 2].HasDefaultValue) ||
-				((Parameter) parameters[count - 1]).OptAttributes != null) {
-				var rc = new ResolveContext (m);
-				for (int i = 0; i < count; ++i) {
-					this [i].ResolveDefaultValue (rc);
+				//
+				// Try not to enter default values resolution if there are is not any default value possible
+				//
+				if (p.HasDefaultValue || p.OptAttributes != null) {
+					if (rc == null)
+						rc = new ResolveContext (m);
+
+					p.ResolveDefaultValue (rc);
 				}
 			}
 		}
@@ -1186,7 +1159,7 @@ namespace Mono.CSharp {
 
 			MethodBuilder mb = builder as MethodBuilder;
 			ConstructorBuilder cb = builder as ConstructorBuilder;
-			var pa = mc.Compiler.PredefinedAttributes;
+			var pa = mc.Module.PredefinedAttributes;
 
 			for (int i = 0; i < Count; i++) {
 				this [i].ApplyAttributes (mb, cb, i + 1, pa);
@@ -1212,8 +1185,10 @@ namespace Mono.CSharp {
 				// to save some memory when referenced later.
 				//
 				StatementExpression se = new StatementExpression (p.CreateExpressionTreeVariable (ec));
-				if (se.Resolve (ec))
+				if (se.Resolve (ec)) {
+					ec.CurrentBlock.AddScopeStatement (new TemporaryVariableReference.Declarator (p.ExpressionTreeVariableReference ()));
 					ec.CurrentBlock.AddScopeStatement (se);
+				}
 				
 				initializers.Add (p.ExpressionTreeVariableReference ());
 			}
diff --git a/mcs/mcs/pending.cs b/mcs/mcs/pending.cs
index c82b60c..1970d4b 100644
--- a/mcs/mcs/pending.cs
+++ b/mcs/mcs/pending.cs
@@ -11,11 +11,16 @@
 // Copyright 2003-2008 Novell, Inc.
 //
 
-using System;
 using System.Collections.Generic;
+using System.Linq;
+
+#if STATIC
+using IKVM.Reflection;
+using IKVM.Reflection.Emit;
+#else
 using System.Reflection;
 using System.Reflection.Emit;
-using System.Linq;
+#endif
 
 namespace Mono.CSharp {
 
@@ -360,7 +365,14 @@ namespace Mono.CSharp {
 		bool BaseImplements (TypeSpec iface_type, MethodSpec mi, out MethodSpec base_method)
 		{
 			var base_type = container.BaseType;
-			base_method = (MethodSpec) MemberCache.FindMember (base_type, new MemberFilter (mi), BindingRestriction.None);
+
+			//
+			// Setup filter with no return type to give better error message
+			// about mismatch at return type when the check bellow rejects them
+			//
+			var filter = new MemberFilter (mi.Name, mi.Arity, MemberKind.Method, mi.Parameters, null);
+
+			base_method = (MethodSpec) MemberCache.FindMember (base_type, filter, BindingRestriction.None);
 
 			if (base_method == null || (base_method.Modifiers & Modifiers.PUBLIC) == 0)
 				return false;
@@ -368,10 +380,8 @@ namespace Mono.CSharp {
 			if (base_method.DeclaringType.IsInterface)
 				return false;
 
-			// Why was it here ????
-			//if (TypeManager.ImplementsInterface (base_type, iface_type)) {
-			//	return true;
-			//}
+			if (!TypeSpecComparer.Override.IsEqual (mi.ReturnType, base_method.ReturnType))
+				return false;
 
 			if (!base_method.IsAbstract && !base_method.IsVirtual)
 				// FIXME: We can avoid creating a proxy if base_method can be marked 'final virtual' instead.
@@ -396,7 +406,7 @@ namespace Mono.CSharp {
 
 				bool base_implements_type = type.IsInterface &&
 					container.BaseType != null &&
-					container.BaseType.ImplementsInterface (type);
+					container.BaseType.ImplementsInterface (type, false);
 
 				for (int j = 0; j < pending_implementations [i].methods.Count; ++j) {
 					var mi = pending_implementations[i].methods[j];
diff --git a/mcs/mcs/property.cs b/mcs/mcs/property.cs
index 13e5551..a584018 100644
--- a/mcs/mcs/property.cs
+++ b/mcs/mcs/property.cs
@@ -13,21 +13,19 @@
 
 using System;
 using System.Collections.Generic;
-using System.Reflection;
-using System.Reflection.Emit;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-using System.Security;
-using System.Security.Permissions;
 using System.Text;
 
 #if NET_2_1
 using XmlElement = System.Object;
-#else
-using System.Xml;
 #endif
 
-using Mono.CompilerServices.SymbolWriter;
+#if STATIC
+using IKVM.Reflection;
+using IKVM.Reflection.Emit;
+#else
+using System.Reflection;
+using System.Reflection.Emit;
+#endif
 
 namespace Mono.CSharp
 {
@@ -244,7 +242,6 @@ namespace Mono.CSharp
 
 			internal const string Prefix = "set_";
 
-			ImplicitParameter param_attr;
 			protected ParametersCompiled parameters;
 
 			public SetMethod (PropertyBase method, Modifiers modifiers, ParametersCompiled parameters, Attributes attrs, Location loc)
@@ -256,10 +253,7 @@ namespace Mono.CSharp
 			protected override void ApplyToExtraTarget (Attribute a, MethodSpec ctor, byte[] cdata, PredefinedAttributes pa)
 			{
 				if (a.Target == AttributeTargets.Parameter) {
-					if (param_attr == null)
-						param_attr = new ImplicitParameter (method_data.MethodBuilder);
-
-					param_attr.ApplyAttributeBuilder (a, ctor, cdata, pa);
+					parameters[0].ApplyAttributeBuilder (a, ctor, cdata, pa);
 					return;
 				}
 
@@ -325,8 +319,8 @@ namespace Mono.CSharp
 
 			public override void ApplyAttributeBuilder (Attribute a, MethodSpec ctor, byte[] cdata, PredefinedAttributes pa)
 			{
-				if (a.IsInternalMethodImplAttribute) {
-					method.is_external_implementation = true;
+				if (a.Type == pa.MethodImpl) {
+					method.is_external_implementation = a.IsInternalCall ();
 				}
 
 				base.ApplyAttributeBuilder (a, ctor, cdata, pa);
@@ -655,16 +649,9 @@ namespace Mono.CSharp
 				OptAttributes.Emit ();
 
 			if (member_type == InternalType.Dynamic) {
-				Compiler.PredefinedAttributes.Dynamic.EmitAttribute (PropertyBuilder);
-			} else {
-				var trans_flags = TypeManager.HasDynamicTypeUsed (member_type);
-				if (trans_flags != null) {
-					var pa = Compiler.PredefinedAttributes.DynamicTransform;
-					if (pa.Constructor != null || pa.ResolveConstructor (Location, ArrayContainer.MakeType (TypeManager.bool_type))) {
-						PropertyBuilder.SetCustomAttribute (
-							new CustomAttributeBuilder (pa.Constructor, new object[] { trans_flags }));
-					}
-				}
+				Module.PredefinedAttributes.Dynamic.EmitAttribute (PropertyBuilder);
+			} else if (member_type.HasDynamicElement) {
+				Module.PredefinedAttributes.Dynamic.EmitAttribute (PropertyBuilder, member_type, Location);
 			}
 
 			first.Emit (Parent);
@@ -871,7 +858,8 @@ namespace Mono.CSharp
 	/// <summary>
 	/// Event is declared like field.
 	/// </summary>
-	public class EventField : Event {
+	public class EventField : Event
+	{
 		abstract class EventFieldAccessor : AEventAccessor
 		{
 			protected EventFieldAccessor (EventField method, string prefix)
@@ -879,31 +867,85 @@ namespace Mono.CSharp
 			{
 			}
 
+			protected abstract MethodSpec Operation { get; }
+
 			public override void Emit (DeclSpace parent)
 			{
 				if ((method.ModFlags & (Modifiers.ABSTRACT | Modifiers.EXTERN)) == 0) {
-					if (parent is Class) {
-						MethodBuilder mb = method_data.MethodBuilder;
-						mb.SetImplementationFlags (mb.GetMethodImplementationFlags () | MethodImplAttributes.Synchronized);
-					}
-
-					var field_info = ((EventField) method).backing_field;
-					FieldExpr f_expr = new FieldExpr (field_info, Location);
-					if ((method.ModFlags & Modifiers.STATIC) == 0)
-						f_expr.InstanceExpression = new CompilerGeneratedThis (field_info.Spec.MemberType, Location);
-
 					block = new ToplevelBlock (Compiler, ParameterInfo, Location);
-					block.AddStatement (new StatementExpression (
-						new CompoundAssign (Operation,
-							f_expr,
-							block.GetParameterReference (ParameterInfo[0].Name, Location),
-							Location)));
+					FabricateBodyStatement ();
 				}
 
 				base.Emit (parent);
 			}
 
-			protected abstract Binary.Operator Operation { get; }
+			void FabricateBodyStatement ()
+			{
+				var cas = TypeManager.gen_interlocked_compare_exchange;
+				if (cas == null) {
+					var t = Module.PredefinedTypes.Interlocked.Resolve (Location);
+					if (t == null)
+						return;
+
+					var p = new ParametersImported (
+						new[] {
+								new ParameterData (null, Parameter.Modifier.REF),
+								new ParameterData (null, Parameter.Modifier.NONE),
+								new ParameterData (null, Parameter.Modifier.NONE)
+							},
+						new[] {
+								new TypeParameterSpec (0, null, SpecialConstraint.None, Variance.None, null),
+								new TypeParameterSpec (0, null, SpecialConstraint.None, Variance.None, null),
+								new TypeParameterSpec (0, null, SpecialConstraint.None, Variance.None, null),
+							}, false);
+
+					var filter = new MemberFilter ("CompareExchange", 1, MemberKind.Method, p, null);
+					cas = TypeManager.gen_interlocked_compare_exchange = TypeManager.GetPredefinedMethod (t, filter, Location);
+				}
+
+				//
+				// Delegate obj1 = backing_field
+				// do {
+				//   Delegate obj2 = obj1;
+				//   obj1 =	Interlocked.CompareExchange (ref backing_field, Delegate.Combine|Remove(obj2, value), obj1);
+				// } while (obj1 != obj2)
+				//
+
+				var field_info = ((EventField) method).backing_field;
+				FieldExpr f_expr = new FieldExpr (field_info, Location);
+				if (!IsStatic)
+					f_expr.InstanceExpression = new CompilerGeneratedThis (Parent.CurrentType, Location);
+
+				var obj1 = LocalVariable.CreateCompilerGenerated (field_info.MemberType, block, Location);
+				var obj2 = LocalVariable.CreateCompilerGenerated (field_info.MemberType, block, Location);
+
+				block.AddStatement (new StatementExpression (new SimpleAssign (new LocalVariableReference (obj1, Location), f_expr)));
+
+				var cond = new BooleanExpression (new Binary (Binary.Operator.Inequality,
+					new LocalVariableReference (obj1, Location), new LocalVariableReference (obj2, Location), Location));
+
+				var body = new ExplicitBlock (block, Location, Location);
+				block.AddStatement (new Do (body, cond, Location));
+
+				body.AddStatement (new StatementExpression (
+					new SimpleAssign (new LocalVariableReference (obj2, Location), new LocalVariableReference (obj1, Location))));
+
+				var args_oper = new Arguments (2);
+				args_oper.Add (new Argument (new LocalVariableReference (obj2, Location)));
+				args_oper.Add (new Argument (block.GetParameterReference (0, Location)));
+
+				var args = new Arguments (3);
+				args.Add (new Argument (f_expr, Argument.AType.Ref));
+				args.Add (new Argument (new Cast (
+					new TypeExpression (field_info.MemberType, Location),
+					new Invocation (MethodGroupExpr.CreatePredefined (Operation, Operation.DeclaringType, Location), args_oper),
+					Location)));
+				args.Add (new Argument (new LocalVariableReference (obj1, Location)));
+
+				body.AddStatement (new StatementExpression (new SimpleAssign (
+					new LocalVariableReference (obj1, Location),
+					new Invocation (MethodGroupExpr.CreatePredefined (cas, cas.DeclaringType, Location), args))));
+			}
 		}
 
 		sealed class AddDelegateMethod: EventFieldAccessor
@@ -913,8 +955,15 @@ namespace Mono.CSharp
 			{
 			}
 
-			protected override Binary.Operator Operation {
-				get { return Binary.Operator.Addition; }
+			protected override MethodSpec Operation {
+				get {
+					if (TypeManager.delegate_combine_delegate_delegate == null) {
+						TypeManager.delegate_combine_delegate_delegate = TypeManager.GetPredefinedMethod (
+							TypeManager.delegate_type, "Combine", Location, TypeManager.delegate_type, TypeManager.delegate_type);
+					}
+
+					return TypeManager.delegate_combine_delegate_delegate;
+				}
 			}
 		}
 
@@ -925,8 +974,15 @@ namespace Mono.CSharp
 			{
 			}
 
-			protected override Binary.Operator Operation {
-				get { return Binary.Operator.Subtraction; }
+			protected override MethodSpec Operation {
+				get {
+					if (TypeManager.delegate_remove_delegate_delegate == null) {
+						TypeManager.delegate_remove_delegate_delegate = TypeManager.GetPredefinedMethod (
+							TypeManager.delegate_type, "Remove", Location, TypeManager.delegate_type, TypeManager.delegate_type);
+					}
+
+					return TypeManager.delegate_remove_delegate_delegate;
+				}
 			}
 		}
 
@@ -1049,11 +1105,11 @@ namespace Mono.CSharp
 		}
 	}
 
-	public abstract class Event : PropertyBasedMember {
+	public abstract class Event : PropertyBasedMember
+	{
 		public abstract class AEventAccessor : AbstractPropertyEventMethod
 		{
 			protected readonly Event method;
-			ImplicitParameter param_attr;
 			ParametersCompiled parameters;
 
 			static readonly string[] attribute_targets = new string [] { "method", "param", "return" };
@@ -1066,7 +1122,7 @@ namespace Mono.CSharp
 			{
 				this.method = method;
 				this.ModFlags = method.ModFlags;
-				this.parameters = ParametersCompiled.CreateImplicitParameter (method.TypeExpression, loc);;
+				this.parameters = ParametersCompiled.CreateImplicitParameter (method.TypeExpression, loc);
 			}
 
 			public bool IsInterfaceImplementation {
@@ -1075,8 +1131,8 @@ namespace Mono.CSharp
 
 			public override void ApplyAttributeBuilder (Attribute a, MethodSpec ctor, byte[] cdata, PredefinedAttributes pa)
 			{
-				if (a.IsInternalMethodImplAttribute) {
-					method.is_external_implementation = true;
+				if (a.Type == pa.MethodImpl) {
+					method.is_external_implementation = a.IsInternalCall ();
 				}
 
 				base.ApplyAttributeBuilder (a, ctor, cdata, pa);
@@ -1085,10 +1141,7 @@ namespace Mono.CSharp
 			protected override void ApplyToExtraTarget (Attribute a, MethodSpec ctor, byte[] cdata, PredefinedAttributes pa)
 			{
 				if (a.Target == AttributeTargets.Parameter) {
-					if (param_attr == null)
-						param_attr = new ImplicitParameter (method_data.MethodBuilder);
-
-					param_attr.ApplyAttributeBuilder (a, ctor, cdata, pa);
+					parameters[0].ApplyAttributeBuilder (a, ctor, cdata, pa);
 					return;
 				}
 
@@ -1117,7 +1170,7 @@ namespace Mono.CSharp
 					return null;
 
 				MethodBuilder mb = method_data.MethodBuilder;
-				ParameterInfo.ApplyAttributes (this, mb);
+
 				Spec = new MethodSpec (MemberKind.Method, parent.PartialContainer.Definition, this, ReturnType, mb, ParameterInfo, method.ModFlags);
 				Spec.IsAccessor = true;
 
@@ -1235,7 +1288,7 @@ namespace Mono.CSharp
 			if (RemoveBuilder == null)
 				return false;
 
-			EventBuilder = Parent.TypeBuilder.DefineEvent (Name, EventAttributes.None, MemberType.GetMetaInfo ());
+			EventBuilder = Parent.TypeBuilder.DefineEvent (GetFullName (MemberName), EventAttributes.None, MemberType.GetMetaInfo ());
 			EventBuilder.SetAddOnMethod (AddBuilder);
 			EventBuilder.SetRemoveOnMethod (RemoveBuilder);
 
@@ -1321,6 +1374,10 @@ namespace Mono.CSharp
 		{
 			var es = (EventSpec) base.InflateMember (inflator);
 			es.MemberType = inflator.Inflate (MemberType);
+
+			if (backing_field != null)
+				es.backing_field = (FieldSpec) backing_field.InflateMember (inflator);
+
 			return es;
 		}
 	}
@@ -1447,7 +1504,7 @@ namespace Mono.CSharp
 				return false;
 
 			if (OptAttributes != null) {
-				Attribute indexer_attr = OptAttributes.Search (Compiler.PredefinedAttributes.IndexerName);
+				Attribute indexer_attr = OptAttributes.Search (Module.PredefinedAttributes.IndexerName);
 				if (indexer_attr != null) {
 					var compiling = indexer_attr.Type.MemberDefinition as TypeContainer;
 					if (compiling != null)
diff --git a/mcs/mcs/reflection.cs b/mcs/mcs/reflection.cs
new file mode 100644
index 0000000..a34b9d7
--- /dev/null
+++ b/mcs/mcs/reflection.cs
@@ -0,0 +1,575 @@
+//
+// reflection.cs: System.Reflection and System.Reflection.Emit specific implementations
+//
+// Author: Marek Safar (marek.safar at gmail.com)
+//
+// Dual licensed under the terms of the MIT X11 or GNU GPL
+//
+// Copyright 2009-2010 Novell, Inc. 
+//
+//
+
+using System;
+using System.Collections.Generic;
+using System.Reflection;
+using System.IO;
+using System.Runtime.CompilerServices;
+using System.Reflection.Emit;
+using System.Security;
+
+namespace Mono.CSharp
+{
+#if STATIC
+	public class ReflectionImporter
+	{
+		public ReflectionImporter (BuildinTypes buildin)
+		{
+			throw new NotSupportedException ();
+		}
+
+		public void ImportAssembly (Assembly assembly, RootNamespace targetNamespace)
+		{
+			throw new NotSupportedException ();
+		}
+
+		public ImportedModuleDefinition ImportModule (Module module, RootNamespace targetNamespace)
+		{
+			throw new NotSupportedException ();
+		}
+
+		public TypeSpec ImportType (Type type)
+		{
+			throw new NotSupportedException ();
+		}
+	}
+#else
+	public sealed class ReflectionImporter : MetadataImporter
+	{
+		public ReflectionImporter (BuildinTypes buildin)
+		{
+			Initialize (buildin);
+		}
+
+		protected override MemberKind DetermineKindFromBaseType (Type baseType)
+		{
+			if (baseType == typeof (ValueType))
+				return MemberKind.Struct;
+
+			if (baseType == typeof (System.Enum))
+				return MemberKind.Enum;
+
+			if (baseType == typeof (MulticastDelegate))
+				return MemberKind.Delegate;
+
+			return MemberKind.Class;
+		}
+
+		public override void GetCustomAttributeTypeName (CustomAttributeData cad, out string typeNamespace, out string typeName)
+		{
+			var dt = cad.Constructor.DeclaringType;
+			typeNamespace = dt.Namespace;
+			typeName = dt.Name;
+		}
+
+		protected override bool HasVolatileModifier (Type[] modifiers)
+		{
+			foreach (var t in modifiers) {
+				if (t == typeof (IsVolatile))
+					return true;
+			}
+
+			return false;
+		}
+
+		public void ImportAssembly (Assembly assembly, RootNamespace targetNamespace)
+		{
+			// It can be used more than once when importing same assembly
+			// into 2 or more global aliases
+			var definition = GetAssemblyDefinition (assembly);
+
+			//
+			// This part tries to simulate loading of top-level
+			// types only, any missing dependencies are ignores here.
+			// Full error report is reported later when the type is
+			// actually used
+			//
+			Type[] all_types;
+			try {
+				all_types = assembly.GetTypes ();
+			} catch (ReflectionTypeLoadException e) {
+				all_types = e.Types;
+			}
+
+			ImportTypes (all_types, targetNamespace, definition.HasExtensionMethod);
+		}
+
+		public ImportedModuleDefinition ImportModule (Module module, RootNamespace targetNamespace)
+		{
+			var module_definition = new ImportedModuleDefinition (module, this);
+			module_definition.ReadAttributes ();
+
+			Type[] all_types;
+			try {
+				all_types = module.GetTypes ();
+			} catch (ReflectionTypeLoadException e) {
+				all_types = e.Types;
+			}
+
+			ImportTypes (all_types, targetNamespace, false);
+
+			return module_definition;
+		}
+
+		void Initialize (BuildinTypes buildin)
+		{
+			//
+			// Setup mapping for build-in types to avoid duplication of their definition
+			//
+			buildin_types.Add (typeof (object), buildin.Object);
+			buildin_types.Add (typeof (System.ValueType), buildin.ValueType);
+			buildin_types.Add (typeof (System.Attribute), buildin.Attribute);
+
+			buildin_types.Add (typeof (int), buildin.Int);
+			buildin_types.Add (typeof (long), buildin.Long);
+			buildin_types.Add (typeof (uint), buildin.UInt);
+			buildin_types.Add (typeof (ulong), buildin.ULong);
+			buildin_types.Add (typeof (byte), buildin.Byte);
+			buildin_types.Add (typeof (sbyte), buildin.SByte);
+			buildin_types.Add (typeof (short), buildin.Short);
+			buildin_types.Add (typeof (ushort), buildin.UShort);
+
+			buildin_types.Add (typeof (System.Collections.IEnumerator), buildin.IEnumerator);
+			buildin_types.Add (typeof (System.Collections.IEnumerable), buildin.IEnumerable);
+			buildin_types.Add (typeof (System.IDisposable), buildin.IDisposable);
+
+			buildin_types.Add (typeof (char), buildin.Char);
+			buildin_types.Add (typeof (string), buildin.String);
+			buildin_types.Add (typeof (float), buildin.Float);
+			buildin_types.Add (typeof (double), buildin.Double);
+			buildin_types.Add (typeof (decimal), buildin.Decimal);
+			buildin_types.Add (typeof (bool), buildin.Bool);
+			buildin_types.Add (typeof (System.IntPtr), buildin.IntPtr);
+			buildin_types.Add (typeof (System.UIntPtr), buildin.UIntPtr);
+
+			buildin_types.Add (typeof (System.MulticastDelegate), buildin.MulticastDelegate);
+			buildin_types.Add (typeof (System.Delegate), buildin.Delegate);
+			buildin_types.Add (typeof (System.Enum), buildin.Enum);
+			buildin_types.Add (typeof (System.Array), buildin.Array);
+			buildin_types.Add (typeof (void), buildin.Void);
+			buildin_types.Add (typeof (System.Type), buildin.Type);
+			buildin_types.Add (typeof (System.Exception), buildin.Exception);
+			buildin_types.Add (typeof (System.RuntimeFieldHandle), buildin.RuntimeFieldHandle);
+			buildin_types.Add (typeof (System.RuntimeTypeHandle), buildin.RuntimeTypeHandle);
+		}
+	}
+
+	public class MissingType
+	{
+		public Module Module {
+			get {
+				throw new NotSupportedException ();
+			}
+		}
+
+		public string Name {
+			get {
+				throw new NotSupportedException ();
+			}
+		}
+
+		public string Namespace {
+			get {
+				throw new NotSupportedException ();
+			}
+		}
+	}
+
+#endif
+
+	public class AssemblyDefinitionDynamic : AssemblyDefinition
+	{
+		//
+		// In-memory only assembly container
+		//
+		public AssemblyDefinitionDynamic (ModuleContainer module, string name)
+			: base (module, name)
+		{
+		}
+
+		//
+		// Assembly container with file output
+		//
+		public AssemblyDefinitionDynamic (ModuleContainer module, string name, string fileName)
+			: base (module, name, fileName)
+		{
+		}
+
+		public Module IncludeModule (string moduleFile)
+		{
+			return builder_extra.AddModule (moduleFile);
+		}
+
+#if !STATIC
+		public override ModuleBuilder CreateModuleBuilder ()
+		{
+			if (file_name == null)
+				return Builder.DefineDynamicModule (Name, false);
+
+			return base.CreateModuleBuilder ();
+		}
+#endif
+		//
+		// Initializes the code generator
+		//
+		public bool Create (AppDomain domain, AssemblyBuilderAccess access)
+		{
+#if STATIC
+			throw new NotSupportedException ();
+#else
+			ResolveAssemblySecurityAttributes ();
+			var an = CreateAssemblyName ();
+
+			try {
+				Builder = file_name == null ?
+					domain.DefineDynamicAssembly (an, access) :
+					domain.DefineDynamicAssembly (an, access, Dirname (file_name));
+			} catch (ArgumentException) {
+				// specified key may not be exportable outside it's container
+				if (RootContext.StrongNameKeyContainer != null) {
+					Report.Error (1548, "Could not access the key inside the container `" +
+						RootContext.StrongNameKeyContainer + "'.");
+				}
+				throw;
+			}
+
+			builder_extra = new AssemblyBuilderMonoSpecific (Builder, Compiler);
+			return true;
+#endif
+		}
+
+		static string Dirname (string name)
+		{
+			int pos = name.LastIndexOf ('/');
+
+			if (pos != -1)
+				return name.Substring (0, pos);
+
+			pos = name.LastIndexOf ('\\');
+			if (pos != -1)
+				return name.Substring (0, pos);
+
+			return ".";
+		}
+
+#if !STATIC
+		protected override void SaveModule (PortableExecutableKinds pekind, ImageFileMachine machine)
+		{
+			try {
+				var module_only = typeof (AssemblyBuilder).GetProperty ("IsModuleOnly", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
+				var set_module_only = module_only.GetSetMethod (true);
+
+				set_module_only.Invoke (Builder, new object[] { true });
+			} catch {
+				base.SaveModule (pekind, machine);
+			}
+
+			Builder.Save (file_name, pekind, machine);
+		}
+#endif
+	}
+
+	//
+	// Extension to System.Reflection.Emit.AssemblyBuilder to have fully compatible
+	// compiler
+	//
+	class AssemblyBuilderMonoSpecific : AssemblyBuilderExtension
+	{
+		static MethodInfo adder_method;
+		static MethodInfo add_permission;
+		static MethodInfo add_type_forwarder;
+		static MethodInfo win32_icon_define;
+		static FieldInfo assembly_version;
+		static FieldInfo assembly_algorithm;
+		static FieldInfo assembly_culture;
+		static FieldInfo assembly_flags;
+
+		AssemblyBuilder builder;
+
+		public AssemblyBuilderMonoSpecific (AssemblyBuilder ab, CompilerContext ctx)
+			: base (ctx)
+		{
+			this.builder = ab;
+		}
+
+		public override Module AddModule (string module)
+		{
+			try {
+				if (adder_method == null)
+					adder_method = typeof (AssemblyBuilder).GetMethod ("AddModule", BindingFlags.Instance | BindingFlags.NonPublic);
+
+				return (Module) adder_method.Invoke (builder, new object[] { module });
+			} catch {
+				return base.AddModule (module);
+			}
+		}
+
+		public override void AddPermissionRequests (PermissionSet[] permissions)
+		{
+			try {
+				if (add_permission == null)
+					add_permission = typeof (AssemblyBuilder).GetMethod ("AddPermissionRequests", BindingFlags.Instance | BindingFlags.NonPublic);
+
+				add_permission.Invoke (builder, permissions);
+			} catch {
+				base.AddPermissionRequests (permissions);
+			}
+		}
+
+		public override void AddTypeForwarder (TypeSpec type, Location loc)
+		{
+			try {
+				if (add_type_forwarder == null) {
+					add_type_forwarder = typeof (AssemblyBuilder).GetMethod ("AddTypeForwarder", BindingFlags.NonPublic | BindingFlags.Instance);
+				}
+
+				add_type_forwarder.Invoke (builder, new object[] { type.GetMetaInfo () });
+			} catch {
+				base.AddTypeForwarder (type, loc);
+			}
+		}
+
+		public override void DefineWin32IconResource (string fileName)
+		{
+			try {
+				if (win32_icon_define == null)
+					win32_icon_define = typeof (AssemblyBuilder).GetMethod ("DefineIconResource", BindingFlags.Instance | BindingFlags.NonPublic);
+
+				win32_icon_define.Invoke (builder, new object[] { fileName });
+			} catch {
+				base.DefineWin32IconResource (fileName);
+			}
+		}
+
+		public override void SetAlgorithmId (uint value, Location loc)
+		{
+			try {
+				if (assembly_algorithm == null)
+					assembly_algorithm = typeof (AssemblyBuilder).GetField ("algid", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.SetField);
+
+				assembly_algorithm.SetValue (builder, value);
+			} catch {
+				base.SetAlgorithmId (value, loc);
+			}
+		}
+
+		public override void SetCulture (string culture, Location loc)
+		{
+			try {
+				if (assembly_culture == null)
+					assembly_culture = typeof (AssemblyBuilder).GetField ("culture", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.SetField);
+
+				assembly_culture.SetValue (builder, culture);
+			} catch {
+				base.SetCulture (culture, loc);
+			}
+		}
+
+		public override void SetFlags (uint flags, Location loc)
+		{
+			try {
+				if (assembly_flags == null)
+					assembly_flags = typeof (AssemblyBuilder).GetField ("flags", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.SetField);
+
+				assembly_flags.SetValue (builder, flags);
+			} catch {
+				base.SetFlags (flags, loc);
+			}
+		}
+
+		public override void SetVersion (Version version, Location loc)
+		{
+			try {
+				if (assembly_version == null)
+					assembly_version = typeof (AssemblyBuilder).GetField ("version", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.SetField);
+
+				assembly_version.SetValue (builder, version.ToString (4));
+			} catch {
+				base.SetVersion (version, loc);
+			}
+		}
+	}
+
+	//
+	// Reflection based references loader
+	//
+	class DynamicLoader : AssemblyReferencesLoader<Assembly>
+	{
+		readonly ReflectionImporter importer;
+
+		public DynamicLoader (ReflectionImporter importer, CompilerContext compiler)
+			: base (compiler)
+		{
+			paths.Add (GetSystemDir ());
+
+			this.importer = importer;
+		}
+
+		public ReflectionImporter Importer {
+			get {
+				return importer;
+			}
+		}
+
+		protected override string[] GetDefaultReferences ()
+		{
+			//
+			// For now the "default config" is harcoded into the compiler
+			// we can move this outside later
+			//
+			var default_references = new List<string> (8);
+
+			default_references.Add ("System");
+			default_references.Add ("System.Xml");
+#if NET_2_1
+			default_references.Add ("System.Net");
+			default_references.Add ("System.Windows");
+			default_references.Add ("System.Windows.Browser");
+#endif
+
+			if (RootContext.Version > LanguageVersion.ISO_2)
+				default_references.Add ("System.Core");
+			if (RootContext.Version > LanguageVersion.V_3)
+				default_references.Add ("Microsoft.CSharp");
+
+			return default_references.ToArray ();
+		}
+
+		//
+		// Returns the directory where the system assemblies are installed
+		//
+		static string GetSystemDir ()
+		{
+			return Path.GetDirectoryName (typeof (object).Assembly.Location);
+		}
+
+		public override bool HasObjectType (Assembly assembly)
+		{
+			return assembly.GetType (compiler.BuildinTypes.Object.FullName) != null;
+		}
+
+		public override Assembly LoadAssemblyFile (string fileName)
+		{
+			return LoadAssemblyFile (fileName, false);
+		}
+
+		Assembly LoadAssemblyFile (string assembly, bool soft)
+		{
+			Assembly a = null;
+
+			try {
+				try {
+					char[] path_chars = { '/', '\\' };
+
+					if (assembly.IndexOfAny (path_chars) != -1) {
+						a = Assembly.LoadFrom (assembly);
+					} else {
+						string ass = assembly;
+						if (ass.EndsWith (".dll") || ass.EndsWith (".exe"))
+							ass = assembly.Substring (0, assembly.Length - 4);
+						a = Assembly.Load (ass);
+					}
+				} catch (FileNotFoundException) {
+					bool err = !soft;
+					foreach (string dir in paths) {
+						string full_path = Path.Combine (dir, assembly);
+						if (!assembly.EndsWith (".dll") && !assembly.EndsWith (".exe"))
+							full_path += ".dll";
+
+						try {
+							a = Assembly.LoadFrom (full_path);
+							err = false;
+							break;
+						} catch (FileNotFoundException) {
+						}
+					}
+
+					if (err) {
+						Error_FileNotFound (assembly);
+						return a;
+					}
+				}
+			} catch (BadImageFormatException) {
+				Error_FileCorrupted (assembly);
+			}
+
+			return a;
+		}
+
+		public override Assembly LoadAssemblyDefault (string fileName)
+		{
+			return LoadAssemblyFile (fileName, true);
+		}
+
+		Module LoadModuleFile (AssemblyDefinitionDynamic assembly, string module)
+		{
+			string total_log = "";
+
+			try {
+				try {
+					return assembly.IncludeModule (module);
+				} catch (FileNotFoundException) {
+					bool err = true;
+					foreach (string dir in paths) {
+						string full_path = Path.Combine (dir, module);
+						if (!module.EndsWith (".netmodule"))
+							full_path += ".netmodule";
+
+						try {
+							return assembly.IncludeModule (full_path);
+						} catch (FileNotFoundException ff) {
+							total_log += ff.FusionLog;
+						}
+					}
+					if (err) {
+						Error_FileNotFound (module);
+						return null;
+					}
+				}
+			} catch (BadImageFormatException) {
+				Error_FileCorrupted (module);
+			}
+
+			return null;
+		}
+
+		public void LoadModules (AssemblyDefinitionDynamic assembly, RootNamespace targetNamespace)
+		{
+			if (RootContext.Modules.Count == 0)
+				return;
+
+			foreach (var moduleName in RootContext.Modules) {
+				var m = LoadModuleFile (assembly, moduleName);
+				if (m == null)
+					continue;
+
+				var md = importer.ImportModule (m, targetNamespace);
+				assembly.AddModule (md);
+			}
+		}
+
+		public override void LoadReferences (ModuleContainer module)
+		{
+			Assembly corlib;
+			List<Tuple<RootNamespace, Assembly>> loaded;
+			base.LoadReferencesCore (module, out corlib, out loaded);
+
+			if (corlib == null)
+				return;
+
+			importer.ImportAssembly (corlib, module.GlobalRootNamespace);
+			foreach (var entry in loaded) {
+				importer.ImportAssembly (entry.Item2, entry.Item1);
+			}
+		}
+	}
+}
\ No newline at end of file
diff --git a/mcs/mcs/report.cs b/mcs/mcs/report.cs
index 9f98995..98ae95c 100644
--- a/mcs/mcs/report.cs
+++ b/mcs/mcs/report.cs
@@ -12,7 +12,6 @@ using System.IO;
 using System.Text;
 using System.Collections.Generic;
 using System.Diagnostics;
-using System.Reflection;
 
 namespace Mono.CSharp {
 
@@ -59,11 +58,12 @@ namespace Mono.CSharp {
 			219, 251, 252, 253, 278, 282,
 			402, 414, 419, 420, 429, 436, 440, 458, 464, 465, 467, 469, 472,
 			612, 618, 626, 628, 642, 649, 652, 658, 659, 660, 661, 665, 672, 675, 693,
+			728,
 			809,
 			1030, 1058, 1066,
 			1522, 1570, 1571, 1572, 1573, 1574, 1580, 1581, 1584, 1587, 1589, 1590, 1591, 1592,
-			1616, 1633, 1634, 1635, 1685, 1690, 1691, 1692, 1695, 1696, 1699,
-			1700, 1709, 1717, 1718, 1720,
+			1607, 1616, 1633, 1634, 1635, 1685, 1690, 1691, 1692, 1695, 1696, 1699, 1683,
+			1700, 1701, 1702, 1709, 1717, 1718, 1720,
 			1901, 1981,
 			2002, 2023, 2029,
 			3000, 3001, 3002, 3003, 3005, 3006, 3007, 3008, 3009,
@@ -170,7 +170,7 @@ namespace Mono.CSharp {
 		/// </summary>
 		public void SymbolRelatedToPreviousError (Location loc, string symbol)
 		{
-			SymbolRelatedToPreviousError (loc.ToString (), symbol);
+			SymbolRelatedToPreviousError (loc.ToString ());
 		}
 
 		public void SymbolRelatedToPreviousError (MemberSpec ms)
@@ -186,8 +186,15 @@ namespace Mono.CSharp {
 
 			if (mc != null) {
 				SymbolRelatedToPreviousError (mc);
-			} else if (ms.MemberDefinition != null) {
-				SymbolRelatedToPreviousError (ms.MemberDefinition.Assembly.Location, "");
+			} else {
+				if (ms.DeclaringType != null)
+					ms = ms.DeclaringType;
+
+				var imported_type = ms.MemberDefinition as ImportedTypeDefinition;
+				if (imported_type != null) {
+					var iad = imported_type.DeclaringAssembly as ImportedAssemblyDefinition;
+					SymbolRelatedToPreviousError (iad.Location);
+				}
 			}
 		}
 
@@ -196,7 +203,7 @@ namespace Mono.CSharp {
 			SymbolRelatedToPreviousError (mc.Location, mc.GetSignatureForError ());
 		}
 
-		void SymbolRelatedToPreviousError (string loc, string symbol)
+		public void SymbolRelatedToPreviousError (string loc)
 		{
 			string msg = String.Format ("{0} (Location of the symbol related to previous ", loc);
 			if (extra_information.Contains (msg))
@@ -650,6 +657,12 @@ namespace Mono.CSharp {
 					output.WriteLine (s + msg.MessageType + ")");
 			}
 		}
+
+		public void Reset ()
+		{
+			// Temporary hack for broken repl flow
+			errors = warnings = 0;
+		}
 	}
 
 	//
@@ -906,7 +919,7 @@ namespace Mono.CSharp {
 			
 			for (int i = 0; i < t.FrameCount; i++) {
 				StackFrame f = t.GetFrame (i);
-				MethodBase mb = f.GetMethod ();
+				var mb = f.GetMethod ();
 				
 				if (!foundUserCode && mb.ReflectedType == typeof (Report))
 					continue;
@@ -921,7 +934,7 @@ namespace Mono.CSharp {
 				sb.AppendFormat ("{0}.{1} (", mb.ReflectedType.Name, mb.Name);
 				
 				bool first = true;
-				foreach (ParameterInfo pi in mb.GetParameters ()) {
+				foreach (var pi in mb.GetParameters ()) {
 					if (!first)
 						sb.Append (", ");
 					first = false;
diff --git a/mcs/mcs/rootcontext.cs b/mcs/mcs/rootcontext.cs
index 8ee0ce4..bd7823d 100644
--- a/mcs/mcs/rootcontext.cs
+++ b/mcs/mcs/rootcontext.cs
@@ -11,11 +11,9 @@
 // Copyright 2001 Ximian, Inc (http://www.ximian.com)
 // Copyright 2004-2008 Novell, Inc
 
-using System;
 using System.Collections.Generic;
-using System.Reflection;
-using System.Reflection.Emit;
-using System.Diagnostics;
+using System.IO;
+using System.Text;
 
 namespace Mono.CSharp {
 
@@ -30,13 +28,29 @@ namespace Mono.CSharp {
 		Default		= LanguageVersion.V_4,
 	}
 
-	public enum MetadataVersion
+	public enum RuntimeVersion
 	{
 		v1,
 		v2,
 		v4
 	}
 
+	public enum SdkVersion
+	{
+		v2,
+		v4
+	}
+
+	public enum Target
+	{
+		Library, Exe, Module, WinExe
+	}
+
+	public enum Platform
+	{
+		AnyCPU, X86, X64, IA64
+	}
+
 	public class RootContext {
 
 		//
@@ -45,12 +59,12 @@ namespace Mono.CSharp {
 		public static Target Target;
 		public static Platform Platform;
 		public static string TargetExt;
-		public static bool VerifyClsCompliance = true;
-		public static bool Optimize = true;
+		public static bool VerifyClsCompliance;
+		public static bool Optimize;
 		public static LanguageVersion Version;
 		public static bool EnhancedWarnings;
-
-		public static MetadataVersion MetadataCompatibilityVersion;
+		public static bool LoadDefaultReferences;
+		public static SdkVersion SdkVersion;
 
 		//
 		// We keep strongname related info here because
@@ -61,12 +75,51 @@ namespace Mono.CSharp {
 		public static bool StrongNameDelaySign;
 
 		//
+		// Assemblies references to be loaded
+		//
+		public static List<string> AssemblyReferences;
+
+		// 
+		// External aliases for assemblies
+		//
+		public static List<Tuple<string, string>> AssemblyReferencesAliases;
+
+		//
+		// Modules to be embedded
+		//
+		public static List<string> Modules;
+
+		//
+		// Lookup paths for referenced assemblies
+		//
+		public static List<string> ReferencesLookupPaths;
+
+		//
+		// Encoding.
+		//
+		public static Encoding Encoding;
+
+		//
 		// If set, enable XML documentation generation
 		//
 		public static Documentation Documentation;
 
 		static public string MainClass;
 
+		//
+		// Output file
+		//
+		static string output_file;
+		public static string OutputFile {
+			set {
+				output_file = value;
+			}
+			get {
+				return output_file;
+			}
+		}
+
+
 		// 
 		// The default compiler checked state
 		//
@@ -91,6 +144,19 @@ namespace Mono.CSharp {
 		//
 		static public bool Unsafe;
 
+		static public string Win32ResourceFile;
+		static public string Win32IconFile;
+
+		//
+		// A list of resource files for embedding
+		//
+		static public  List<AssemblyResource> Resources;
+
+		static public bool GenerateDebugInfo;
+
+		// Compiler debug flags only
+		public static bool ParseOnly, TokenizeOnly;
+
 		//
 		// Whether we are being linked against the standard libraries.
 		// This is only used to tell whether `System.Object' should
@@ -98,6 +164,8 @@ namespace Mono.CSharp {
 		//
 		public static bool StdLib;
 
+		public static RuntimeVersion StdLibRuntimeVersion;
+
 		public static bool NeedsEntryPoint {
 			get { return Target == Target.Exe || Target == Target.WinExe; }
 		}
@@ -109,23 +177,13 @@ namespace Mono.CSharp {
 		//
 		// Contains the parsed tree
 		//
-		static ModuleCompiled root;
+		static ModuleContainer root;
 
 		//
 		// This hashtable contains all of the #definitions across the source code
 		// it is used by the ConditionalAttribute handler.
 		//
 		static List<string> AllDefines;
-		
-		//
-		// Holds a reference to the Private Implementation Details
-		// class.
-		//
-		static List<TypeBuilder> helper_classes;
-		
-		static TypeBuilder impl_details_class;
-
-		public static List<Enum> hack_corlib_enums = new List<Enum> ();
 
 		//
 		// Constructor
@@ -142,13 +200,9 @@ namespace Mono.CSharp {
 		
 		public static void Reset (bool full)
 		{
-			impl_details_class = null;
-			helper_classes = null;
-
 			if (!full)
 				return;
 			
-			EntryPoint = null;
 			Checked = false;
 			Unsafe = false;
 			StdLib = true;
@@ -156,19 +210,28 @@ namespace Mono.CSharp {
 			StrongNameKeyContainer = null;
 			StrongNameDelaySign = false;
 			MainClass = null;
+			OutputFile = null;
 			Target = Target.Exe;
+			SdkVersion = SdkVersion.v2;
 			TargetExt = ".exe";
 			Platform = Platform.AnyCPU;
 			Version = LanguageVersion.Default;
+			VerifyClsCompliance = true;
+			Optimize = true;
+			Encoding = Encoding.Default;
 			Documentation = null;
-			impl_details_class = null;
-			helper_classes = null;
-
-#if NET_4_0
-			MetadataCompatibilityVersion = MetadataVersion.v4;
-#else
-			MetadataCompatibilityVersion = MetadataVersion.v2;
-#endif
+			GenerateDebugInfo = false;
+			ParseOnly = false;
+			TokenizeOnly = false;
+			Win32IconFile = null;
+			Win32ResourceFile = null;
+			Resources = null;
+			LoadDefaultReferences = true;
+			AssemblyReferences = new List<string> ();
+			AssemblyReferencesAliases = new List<Tuple<string, string>> ();
+			Modules = new List<string> ();
+			ReferencesLookupPaths = new List<string> ();
+			StdLibRuntimeVersion = RuntimeVersion.v2;
 
 			//
 			// Setup default defines
@@ -189,214 +252,9 @@ namespace Mono.CSharp {
 			return AllDefines.Contains (value);
 		}
 
-		static public ModuleCompiled ToplevelTypes {
+		static public ModuleContainer ToplevelTypes {
 			get { return root; }
 			set { root = value; }
 		}
-
-		// <remarks>
-		//   This function is used to resolve the hierarchy tree.
-		//   It processes interfaces, structs and classes in that order.
-		//
-		//   It creates the TypeBuilder's as it processes the user defined
-		//   types.  
-		// </remarks>
-		static public void ResolveTree ()
-		{
-			root.Resolve ();
-
-			//
-			// Interfaces are processed next, as classes and
-			// structs might inherit from an object or implement
-			// a set of interfaces, we need to be able to tell
-			// them appart by just using the TypeManager.
-			//
-			foreach (TypeContainer tc in root.Types)
-				tc.CreateType ();
-
-			foreach (TypeContainer tc in root.Types)
-				tc.DefineType ();
-		}
-
-		static void HackCorlib ()
-		{
-			if (StdLib)
-				return;
-
-			//
-			// HACK: When building corlib mcs uses loaded mscorlib which
-			// has different predefined types and this method sets mscorlib types
-			// to be same to avoid type check errors in CreateType.
-			//
-			var type = typeof (Type);
-			var system_4_type_arg = new[] { type, type, type, type };
-
-			MethodInfo set_corlib_type_builders =
-				typeof (System.Reflection.Emit.AssemblyBuilder).GetMethod (
-				"SetCorlibTypeBuilders", BindingFlags.NonPublic | BindingFlags.Instance, null,
-				system_4_type_arg, null);
-
-			if (set_corlib_type_builders == null) {
-				root.Compiler.Report.Warning (-26, 3, "The compilation may fail due to missing `{0}.SetCorlibTypeBuilders(...)' method",
-					typeof (System.Reflection.Emit.AssemblyBuilder).FullName);
-				return;
-			}
-
-			object[] args = new object[4];
-			args[0] = TypeManager.object_type.GetMetaInfo ();
-			args[1] = TypeManager.value_type.GetMetaInfo ();
-			args[2] = TypeManager.enum_type.GetMetaInfo ();
-			args[3] = TypeManager.void_type.GetMetaInfo ();
-			set_corlib_type_builders.Invoke (CodeGen.Assembly.Builder, args);
-		}
-
-		static void HackCorlibEnums ()
-		{
-			if (StdLib)
-				return;
-
-			// Another Mono corlib HACK
-			// mono_class_layout_fields requires to have enums created
-			// before creating a class which used the enum for any of its fields
-			foreach (var e in hack_corlib_enums)
-				e.CloseType ();
-		}
-
-		// <summary>
-		//   Closes all open types
-		// </summary>
-		//
-		// <remarks>
-		//   We usually use TypeBuilder types.  When we are done
-		//   creating the type (which will happen after we have added
-		//   methods, fields, etc) we need to "Define" them before we
-		//   can save the Assembly
-		// </remarks>
-		static public void CloseTypes (CompilerContext ctx)
-		{
-			HackCorlibEnums ();
-
-			foreach (TypeContainer tc in root.Types){
-				tc.CloseType ();
-			}
-
-			if (root.CompilerGeneratedClasses != null)
-				foreach (CompilerGeneratedClass c in root.CompilerGeneratedClasses)
-					c.CloseType ();
-
-			//
-			// If we have a <PrivateImplementationDetails> class, close it
-			//
-			if (helper_classes != null){
-				var cg = ctx.PredefinedAttributes.CompilerGenerated;
-				foreach (TypeBuilder type_builder in helper_classes) {
-					cg.EmitAttribute (type_builder);
-					type_builder.CreateType ();
-				}
-			}
-			
-			helper_classes = null;
-		}
-
-		/// <summary>
-		///   Used to register classes that need to be closed after all the
-		///   user defined classes
-		/// </summary>
-		public static void RegisterCompilerGeneratedType (TypeBuilder helper_class)
-		{
-			if (helper_classes == null)
-				helper_classes = new List<TypeBuilder> ();
-
-			helper_classes.Add (helper_class);
-		}
-		
-		// <summary>
-		//   Populates the structs and classes with fields and methods
-		// </summary>
-		//
-		// This is invoked after all interfaces, structs and classes
-		// have been defined through `ResolveTree' 
-		static public void PopulateTypes ()
-		{
-			foreach (TypeContainer tc in ToplevelTypes.Types)
-				tc.ResolveTypeParameters ();
-
-			foreach (TypeContainer tc in ToplevelTypes.Types) {
-				try {
-					tc.Define ();
-				} catch (Exception e) {
-					throw new InternalErrorException (tc, e);
-				}
-			}
-		}
-
-		static public void EmitCode ()
-		{
-			foreach (var tc in ToplevelTypes.Types)
-				tc.DefineConstants ();
-
-			HackCorlib ();
-
-			foreach (TypeContainer tc in ToplevelTypes.Types)
-				tc.EmitType ();
-
-			if (ToplevelTypes.Compiler.Report.Errors > 0)
-				return;
-
-			foreach (TypeContainer tc in ToplevelTypes.Types)
-				tc.VerifyMembers ();
-
-			if (root.CompilerGeneratedClasses != null)
-				foreach (CompilerGeneratedClass c in root.CompilerGeneratedClasses)
-					c.EmitType ();
-
-			CodeGen.Assembly.Emit (root);
-			root.Emit ();
-		}
-		
-		//
-		// Public Field, used to track which method is the public entry
-		// point.
-		//
-		static public Method EntryPoint;
-
-		//
-		// These are used to generate unique names on the structs and fields.
-		//
-		static int field_count;
-		
-		//
-		// Makes an initialized struct, returns the field builder that
-		// references the data.  Thanks go to Sergey Chaban for researching
-		// how to do this.  And coming up with a shorter mechanism than I
-		// was able to figure out.
-		//
-		// This works but makes an implicit public struct $ArrayType$SIZE and
-		// makes the fields point to it.  We could get more control if we did
-		// use instead:
-		//
-		// 1. DefineNestedType on the impl_details_class with our struct.
-		//
-		// 2. Define the field on the impl_details_class
-		//
-		static public FieldBuilder MakeStaticData (byte [] data)
-		{
-			FieldBuilder fb;
-			
-			if (impl_details_class == null){
-				impl_details_class = ToplevelTypes.Builder.DefineType (
-					"<PrivateImplementationDetails>",
-                                        TypeAttributes.NotPublic,
-                                        TypeManager.object_type.GetMetaInfo ());
-                                
-				RegisterCompilerGeneratedType (impl_details_class);
-			}
-
-			fb = impl_details_class.DefineInitializedData (
-				"$$field-" + (field_count++), data,
-				FieldAttributes.Static | FieldAttributes.Assembly);
-			
-			return fb;
-		}
 	}
 }
diff --git a/mcs/mcs/roottypes.cs b/mcs/mcs/roottypes.cs
index eb31fb7..245a6d7 100644
--- a/mcs/mcs/roottypes.cs
+++ b/mcs/mcs/roottypes.cs
@@ -12,75 +12,217 @@
 
 using System;
 using System.Collections.Generic;
+using System.Runtime.InteropServices;
+using Mono.CompilerServices.SymbolWriter;
+
+#if STATIC
+using IKVM.Reflection;
+using IKVM.Reflection.Emit;
+#else
 using System.Reflection;
 using System.Reflection.Emit;
-using System.Runtime.InteropServices;
+#endif
 
 namespace Mono.CSharp
 {
 	//
-	// Module container, it can be used as a top-level type
+	// Module (top-level type) container
 	//
 	public class ModuleContainer : TypeContainer
 	{
-		public CharSet DefaultCharSet = CharSet.Ansi;
-		public TypeAttributes DefaultCharSetType = TypeAttributes.AnsiClass;
+		//
+		// Compiler generated container for static data
+		//
+		sealed class StaticDataContainer : CompilerGeneratedClass
+		{
+			Dictionary<int, Struct> size_types;
+			new int fields;
+#if !STATIC
+			static MethodInfo set_data;
+#endif
+
+			public StaticDataContainer (ModuleContainer module)
+				: base (module, new MemberName ("<PrivateImplementationDetails>" + module.builder.ModuleVersionId.ToString ("B"), Location.Null), Modifiers.STATIC)
+			{
+				size_types = new Dictionary<int, Struct> ();
+			}
 
-		protected Assembly assembly;
+			public override void CloseType ()
+			{
+				base.CloseType ();
 
-		public ModuleContainer (Assembly assembly)
-			: base (null, null, MemberName.Null, null, 0)
-		{
-			this.assembly = assembly;
-		}
+				foreach (var entry in size_types) {
+					entry.Value.CloseType ();
+				}
+			}
 
-		public override Assembly Assembly {
-			get { return assembly; }
-		}
+			public FieldSpec DefineInitializedData (byte[] data, Location loc)
+			{
+				Struct size_type;
+				if (!size_types.TryGetValue (data.Length, out size_type)) {
+					//
+					// Build common type for this data length. We cannot use
+					// DefineInitializedData because it creates public type,
+					// and its name is not unique among modules
+					//
+					size_type = new Struct (null, this, new MemberName ("$ArrayType=" + data.Length, Location), Modifiers.PRIVATE | Modifiers.COMPILER_GENERATED, null);
+					size_type.CreateType ();
+					size_type.DefineType ();
+
+					size_types.Add (data.Length, size_type);
+
+					var pa = Module.PredefinedAttributes.StructLayout;
+					if (pa.Constructor != null || pa.ResolveConstructor (Location, TypeManager.short_type)) {
+						var argsEncoded = new AttributeEncoder (false);
+						argsEncoded.Encode ((short) LayoutKind.Explicit);
+
+						var field_size = pa.GetField ("Size", TypeManager.int32_type, Location);
+						var pack = pa.GetField ("Pack", TypeManager.int32_type, Location);
+						if (field_size != null) {
+							argsEncoded.EncodeNamedArguments (
+								new[] { field_size, pack },
+								new[] { new IntConstant ((int) data.Length, Location), new IntConstant (1, Location) }
+							);
+						}
+
+						pa.EmitAttribute (size_type.TypeBuilder, argsEncoded);
+					}
+				}
 
-		// FIXME: Remove this evil one day
-		public ModuleCompiled Compiled {
-			get { return (ModuleCompiled) this; }
-		}
+				var name = "$field-" + fields.ToString ("X");
+				++fields;
+				const Modifiers fmod = Modifiers.STATIC | Modifiers.INTERNAL;
+				var fbuilder = TypeBuilder.DefineField (name, size_type.CurrentType.GetMetaInfo (), ModifiersExtensions.FieldAttr (fmod) | FieldAttributes.HasFieldRVA);
+#if STATIC
+				fbuilder.__SetDataAndRVA (data);
+#else
+				if (set_data == null)
+					set_data = typeof (FieldBuilder).GetMethod ("SetRVAData", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
+
+				try {
+					set_data.Invoke (fbuilder, new object[] { data });
+				} catch {
+					Report.RuntimeMissingSupport (loc, "SetRVAData");
+				}
+#endif
 
-		public override ModuleContainer Module {
-			get {
-				return this;
+				return new FieldSpec (CurrentType, null, size_type.CurrentType, fbuilder, fmod);
 			}
 		}
-	}
 
-	//
-	// Compiled top-level types
-	//
-	public class ModuleCompiled : ModuleContainer
-	{
+		public CharSet DefaultCharSet = CharSet.Ansi;
+		public TypeAttributes DefaultCharSetType = TypeAttributes.AnsiClass;
+
 		Dictionary<int, List<AnonymousTypeClass>> anonymous_types;
-		readonly bool is_unsafe;
+		StaticDataContainer static_data;
+
+		AssemblyDefinition assembly;
 		readonly CompilerContext context;
+		readonly RootNamespace global_ns;
+		Dictionary<string, RootNamespace> alias_ns;
 
 		ModuleBuilder builder;
 
+		// HACK
+		public List<Enum> hack_corlib_enums = new List<Enum> ();
+
 		bool has_default_charset;
+		bool has_extenstion_method;
 
-		static readonly string[] attribute_targets = new string[] { "module" };
+		PredefinedAttributes predefined_attributes;
+		PredefinedTypes predefined_types;
 
-		public ModuleCompiled (CompilerContext context, bool isUnsafe)
-			: base (null)
+		static readonly string[] attribute_targets = new string[] { "assembly", "module" };
+
+		public ModuleContainer (CompilerContext context)
+			: base (null, null, MemberName.Null, null, 0)
 		{
-			this.is_unsafe = isUnsafe;
 			this.context = context;
 
+			caching_flags &= ~(Flags.Obsolete_Undetected | Flags.Excluded_Undetected);
+
 			types = new List<TypeContainer> ();
 			anonymous_types = new Dictionary<int, List<AnonymousTypeClass>> ();
+			global_ns = new GlobalRootNamespace ();
+			alias_ns = new Dictionary<string, RootNamespace> ();
 		}
 
+		#region Properties
+
  		public override AttributeTargets AttributeTargets {
  			get {
- 				return AttributeTargets.Module;
+ 				return AttributeTargets.Assembly;
  			}
 		}
 
+		public ModuleBuilder Builder {
+			get {
+				return builder;
+			}
+		}
+
+		public override CompilerContext Compiler {
+			get {
+				return context;
+			}
+		}
+
+		public override AssemblyDefinition DeclaringAssembly {
+			get {
+				return assembly;
+			}
+		}
+
+		public bool HasDefaultCharSet {
+			get {
+				return has_default_charset;
+			}
+		}
+
+		public bool HasExtensionMethod {
+			get {
+				return has_extenstion_method;
+			}
+			set {
+				has_extenstion_method = value;
+			}
+		}
+
+		//
+		// Returns module global:: namespace
+		//
+		public RootNamespace GlobalRootNamespace {
+		    get {
+		        return global_ns;
+		    }
+		}
+
+		public override ModuleContainer Module {
+			get {
+				return this;
+			}
+		}
+
+		internal PredefinedAttributes PredefinedAttributes {
+			get {
+				return predefined_attributes;
+			}
+		}
+
+		internal PredefinedTypes PredefinedTypes {
+			get {
+				return predefined_types;
+			}
+		}
+
+		public override string[] ValidAttributeTargets {
+			get {
+				return attribute_targets;
+			}
+		}
+
+		#endregion
+
 		public void AddAnonymousType (AnonymousTypeClass type)
 		{
 			List<AnonymousTypeClass> existing;
@@ -95,14 +237,18 @@ namespace Mono.CSharp
 
 		public void AddAttributes (List<Attribute> attrs)
 		{
+			AddAttributes (attrs, this);
+		}
+
+		public void AddAttributes (List<Attribute> attrs, IMemberContext context)
+		{
 			foreach (Attribute a in attrs)
-				a.AttachTo (this, CodeGen.Assembly);
+				a.AttachTo (this, context);
 
 			if (attributes == null) {
 				attributes = new Attributes (attrs);
 				return;
 			}
-
 			attributes.AddAttributes (attrs);
 		}
 
@@ -113,12 +259,20 @@ namespace Mono.CSharp
 
 		public override void ApplyAttributeBuilder (Attribute a, MethodSpec ctor, byte[] cdata, PredefinedAttributes pa)
 		{
+			if (a.Target == AttributeTargets.Assembly) {
+				assembly.ApplyAttributeBuilder (a, ctor, cdata, pa);
+				return;
+			}
+
 			if (a.Type == pa.CLSCompliant) {
-				if (CodeGen.Assembly.ClsCompliantAttribute == null) {
-					Report.Warning (3012, 1, a.Location, "You must specify the CLSCompliant attribute on the assembly, not the module, to enable CLS compliance checking");
-				} else if (CodeGen.Assembly.IsClsCompliant != a.GetBoolean ()) {
-					Report.SymbolRelatedToPreviousError (CodeGen.Assembly.ClsCompliantAttribute.Location, CodeGen.Assembly.ClsCompliantAttribute.GetSignatureForError ());
-					Report.Warning (3017, 1, a.Location, "You cannot specify the CLSCompliant attribute on a module that differs from the CLSCompliant attribute on the assembly");
+				Attribute cls = DeclaringAssembly.CLSCompliantAttribute;
+				if (cls == null) {
+					Report.Warning (3012, 1, a.Location,
+						"You must specify the CLSCompliant attribute on the assembly, not the module, to enable CLS compliance checking");
+				} else if (DeclaringAssembly.IsCLSCompliant != a.GetBoolean ()) {
+					Report.SymbolRelatedToPreviousError (cls.Location, cls.GetSignatureForError ());
+					Report.Warning (3017, 1, a.Location,
+						"You cannot specify the CLSCompliant attribute on a module that differs from the CLSCompliant attribute on the assembly");
 					return;
 				}
 			}
@@ -126,19 +280,72 @@ namespace Mono.CSharp
 			builder.SetCustomAttribute ((ConstructorInfo) ctor.GetMetaInfo (), cdata);
 		}
 
-		public ModuleBuilder Builder {
-			get {
-				return builder;
+		public override void CloseType ()
+		{
+			HackCorlibEnums ();
+
+			foreach (TypeContainer tc in types) {
+				tc.CloseType ();
 			}
 
-			set {
-				builder = value;
-				assembly = builder.Assembly;
+			if (compiler_generated != null)
+				foreach (CompilerGeneratedClass c in compiler_generated)
+					c.CloseType ();
+		}
+
+		public TypeBuilder CreateBuilder (string name, TypeAttributes attr, int typeSize)
+		{
+			return builder.DefineType (name, attr, null, typeSize);
+		}
+
+		//
+		// Creates alias global namespace
+		//
+		public RootNamespace CreateRootNamespace (string alias)
+		{
+			if (alias == global_ns.Alias) {
+				NamespaceEntry.Error_GlobalNamespaceRedefined (Location.Null, Report);
+				return global_ns;
 			}
+
+			RootNamespace rn;
+			if (!alias_ns.TryGetValue (alias, out rn)) {
+				rn = new RootNamespace (alias);
+				alias_ns.Add (alias, rn);
+			}
+
+			return rn;
 		}
 
-		public override CompilerContext Compiler {
-			get { return context; }
+		public new void Define ()
+		{
+			builder = assembly.CreateModuleBuilder ();
+
+			// FIXME: Temporary hack for repl to reset
+			static_data = null;
+
+			// TODO: It should be done much later when the types are resolved
+			// but that require DefineType clean-up
+			ResolveGlobalAttributes ();
+
+			foreach (TypeContainer tc in types)
+				tc.CreateType ();
+
+			InitializePredefinedTypes ();
+
+			foreach (TypeContainer tc in types)
+				tc.DefineType ();
+
+			foreach (TypeContainer tc in types)
+				tc.ResolveTypeParameters ();
+
+			foreach (TypeContainer tc in types) {
+				try {
+					tc.Define ();
+				} catch (Exception e) {
+					throw new InternalErrorException (tc, e);
+				}
+			}
 		}
 
 		public override void Emit ()
@@ -146,14 +353,29 @@ namespace Mono.CSharp
 			if (OptAttributes != null)
 				OptAttributes.Emit ();
 
-			if (is_unsafe) {
-				TypeSpec t = TypeManager.CoreLookupType (context, "System.Security", "UnverifiableCodeAttribute", MemberKind.Class, true);
-				if (t != null) {
-					var unverifiable_code_ctor = TypeManager.GetPredefinedConstructor (t, Location.Null, TypeSpec.EmptyTypes);
-					if (unverifiable_code_ctor != null)
-						builder.SetCustomAttribute (new CustomAttributeBuilder ((ConstructorInfo) unverifiable_code_ctor.GetMetaInfo (), new object[0]));
-				}
+			if (RootContext.Unsafe) {
+				var pa = PredefinedAttributes.UnverifiableCode;
+				if (pa.IsDefined)
+					pa.EmitAttribute (builder);
 			}
+
+			foreach (var tc in types)
+				tc.DefineConstants ();
+
+			HackCorlib ();
+
+			foreach (TypeContainer tc in types)
+				tc.EmitType ();
+
+			if (Compiler.Report.Errors > 0)
+				return;
+
+			foreach (TypeContainer tc in types)
+				tc.VerifyMembers ();
+
+			if (compiler_generated != null)
+				foreach (var c in compiler_generated)
+					c.EmitType ();
 		}
 
 		public AnonymousTypeClass GetAnonymousType (IList<AnonymousTypeParameter> parameters)
@@ -176,10 +398,11 @@ namespace Mono.CSharp
 			return null;
 		}
 
-		public bool HasDefaultCharSet {
-			get {
-				return has_default_charset;
-			}
+		public RootNamespace GetRootNamespace (string name)
+		{
+			RootNamespace rn;
+			alias_ns.TryGetValue (name, out rn);
+			return rn;
 		}
 
 		public override string GetSignatureForError ()
@@ -187,9 +410,77 @@ namespace Mono.CSharp
 			return "<module>";
 		}
 
+		void HackCorlib ()
+		{
+#if !STATIC
+			if (RootContext.StdLib)
+				return;
+
+			//
+			// HACK: When building corlib mcs uses loaded mscorlib which
+			// has different predefined types and this method sets mscorlib types
+			// to be same to avoid type check errors in CreateType.
+			//
+			var type = typeof (Type);
+			var system_4_type_arg = new[] { type, type, type, type };
+
+			MethodInfo set_corlib_type_builders =
+				typeof (System.Reflection.Emit.AssemblyBuilder).GetMethod (
+				"SetCorlibTypeBuilders", BindingFlags.NonPublic | BindingFlags.Instance, null,
+				system_4_type_arg, null);
+
+			if (set_corlib_type_builders == null) {
+				Compiler.Report.Warning (-26, 3,
+					"The compilation may fail due to missing `System.Reflection.Emit.AssemblyBuilder.SetCorlibTypeBuilders(...)' method");
+				return;
+			}
+
+			object[] args = new object[4];
+			args[0] = TypeManager.object_type.GetMetaInfo ();
+			args[1] = TypeManager.value_type.GetMetaInfo ();
+			args[2] = TypeManager.enum_type.GetMetaInfo ();
+			args[3] = TypeManager.void_type.GetMetaInfo ();
+			set_corlib_type_builders.Invoke (assembly.Builder, args);
+#endif
+		}
+
+		void HackCorlibEnums ()
+		{
+			if (RootContext.StdLib)
+				return;
+
+			// Another Mono corlib HACK
+			// mono_class_layout_fields requires to have enums created
+			// before creating a class which used the enum for any of its fields
+			foreach (var e in hack_corlib_enums)
+				e.CloseType ();
+		}
+
+		public void InitializePredefinedTypes ()
+		{
+			predefined_attributes = new PredefinedAttributes (this);
+			predefined_types = new PredefinedTypes (this);
+		}
+
 		public override bool IsClsComplianceRequired ()
 		{
-			return CodeGen.Assembly.IsClsCompliant;
+			return DeclaringAssembly.IsCLSCompliant;
+		}
+
+		//
+		// Makes const data field inside internal type container
+		//
+		public FieldSpec MakeStaticData (byte[] data, Location loc)
+		{
+			if (static_data == null) {
+				static_data = new StaticDataContainer (this);
+				static_data.CreateType ();
+				static_data.DefineType ();
+
+				AddCompilerGeneratedClass (static_data);
+			}
+
+			return static_data.DefineInitializedData (data, loc);
 		}
 
 		protected override bool AddMemberType (TypeContainer ds)
@@ -209,7 +500,7 @@ namespace Mono.CSharp
 		/// <summary>
 		/// It is called very early therefore can resolve only predefined attributes
 		/// </summary>
-		public void Resolve ()
+		void ResolveGlobalAttributes ()
 		{
 			if (OptAttributes == null)
 				return;
@@ -217,7 +508,10 @@ namespace Mono.CSharp
 			if (!OptAttributes.CheckTargets ())
 				return;
 
-			Attribute a = ResolveAttribute (Compiler.PredefinedAttributes.DefaultCharset);
+			// FIXME: Define is wrong as the type may not exist yet
+			var DefaultCharSet_attr = new PredefinedAttribute (this, "System.Runtime.InteropServices", "DefaultCharSetAttribute");
+			DefaultCharSet_attr.Define ();
+			Attribute a = ResolveModuleAttribute (DefaultCharSet_attr);
 			if (a != null) {
 				has_default_charset = true;
 				DefaultCharSet = a.GetCharSetValue ();
@@ -232,25 +526,35 @@ namespace Mono.CSharp
 					DefaultCharSetType = TypeAttributes.UnicodeClass;
 					break;
 				default:
-					Report.Error (1724, a.Location, "Value specified for the argument to 'System.Runtime.InteropServices.DefaultCharSetAttribute' is not valid");
+					Report.Error (1724, a.Location, "Value specified for the argument to `{0}' is not valid", 
+						DefaultCharSet_attr.GetSignatureForError ());
 					break;
 				}
 			}
 		}
 
-		Attribute ResolveAttribute (PredefinedAttribute a_type)
+		public Attribute ResolveAssemblyAttribute (PredefinedAttribute a_type)
 		{
-			Attribute a = OptAttributes.Search (a_type);
+			Attribute a = OptAttributes.Search ("assembly", a_type);
 			if (a != null) {
 				a.Resolve ();
 			}
 			return a;
 		}
 
-		public override string[] ValidAttributeTargets {
-			get {
-				return attribute_targets;
+		Attribute ResolveModuleAttribute (PredefinedAttribute a_type)
+		{
+			Attribute a = OptAttributes.Search ("module", a_type);
+			if (a != null) {
+				a.Resolve ();
 			}
+			return a;
+		}
+
+		public void SetDeclaringAssembly (AssemblyDefinition assembly)
+		{
+			// TODO: This setter is quite ugly but I have not found a way around it yet
+			this.assembly = assembly;
 		}
 	}
 
@@ -275,12 +579,7 @@ namespace Mono.CSharp
 			get { throw new InternalErrorException ("should not be called"); }
 		}
 
-		//public override bool Define ()
-		//{
-		//    throw new InternalErrorException ("should not be called");
-		//}
-
-		public override TypeBuilder DefineType ()
+		public override void DefineType ()
 		{
 			throw new InternalErrorException ("should not be called");
 		}
diff --git a/mcs/mcs/smcs.exe.sources b/mcs/mcs/smcs.exe.sources
index 208d2ee..c7d2392 100644
--- a/mcs/mcs/smcs.exe.sources
+++ b/mcs/mcs/smcs.exe.sources
@@ -2,6 +2,7 @@ AssemblyInfo.cs
 anonymous.cs
 argument.cs
 assign.cs
+assembly.cs
 attribute.cs
 driver.cs
 cs-tokenizer.cs
@@ -38,6 +39,7 @@ nullable.cs
 parameter.cs
 pending.cs
 property.cs
+reflection.cs
 report.cs
 rootcontext.cs
 roottypes.cs
diff --git a/mcs/mcs/statement.cs b/mcs/mcs/statement.cs
index 4167e1d..a639157 100644
--- a/mcs/mcs/statement.cs
+++ b/mcs/mcs/statement.cs
@@ -11,12 +11,14 @@
 //
 
 using System;
-using System.Text;
-using System.Reflection;
-using System.Reflection.Emit;
-using System.Diagnostics;
 using System.Collections.Generic;
 
+#if STATIC
+using IKVM.Reflection.Emit;
+#else
+using System.Reflection.Emit;
+#endif
+
 namespace Mono.CSharp {
 	
 	public abstract class Statement {
@@ -860,12 +862,14 @@ namespace Mono.CSharp {
 		bool defined;
 		bool referenced;
 		Label label;
+		Block block;
 
 		FlowBranching.UsageVector vectors;
 		
-		public LabeledStatement (string name, Location l)
+		public LabeledStatement (string name, Block block, Location l)
 		{
 			this.name = name;
+			this.block = block;
 			this.loc = l;
 		}
 
@@ -879,6 +883,12 @@ namespace Mono.CSharp {
 			return label;
 		}
 
+		public Block Block {
+			get {
+				return block;
+			}
+		}
+
 		public string Name {
 			get { return name; }
 		}
@@ -916,6 +926,9 @@ namespace Mono.CSharp {
 
 		protected override void DoEmit (EmitContext ec)
 		{
+			if (!HasBeenReferenced)
+				ec.Report.Warning (164, 2, loc, "This label has not been referenced");
+
 			LabelTarget (ec);
 			ec.MarkLabel (label);
 		}
@@ -1146,91 +1159,373 @@ namespace Mono.CSharp {
 		void EmitAddressOf (EmitContext ec);
 	}
 
-	public interface IKnownVariable {
+	public interface INamedBlockVariable
+	{
 		Block Block { get; }
+		Expression CreateReferenceExpression (ResolveContext rc, Location loc);
+		bool IsDeclared { get; }
 		Location Location { get; }
 	}
 
-	//
-	// The information about a user-perceived local variable
-	//
-	public class LocalInfo : IKnownVariable, ILocalVariable
+	public class BlockVariableDeclaration : Statement
 	{
-		public readonly FullNamedExpression Type;
+		public class Declarator
+		{
+			LocalVariable li;
+			Expression initializer;
 
-		public TypeSpec VariableType;
-		public readonly string Name;
-		public readonly Location Location;
-		public readonly Block Block;
+			public Declarator (LocalVariable li, Expression initializer)
+			{
+				if (li.Type != null)
+					throw new ArgumentException ("Expected null variable type");
 
-		public VariableInfo VariableInfo;
-		HoistedVariable hoisted_variant;
+				this.li = li;
+				this.initializer = initializer;
+			}
 
-		[Flags]
-		enum Flags : byte {
-			Used = 1,
-			ReadOnly = 2,
-			Pinned = 4,
-			IsThis = 8,
-			AddressTaken = 32,
-			CompilerGenerated = 64,
-			IsConstant = 128
+			public Declarator (Declarator clone, Expression initializer)
+			{
+				this.li = clone.li;
+				this.initializer = initializer;
+			}
+
+			#region Properties
+
+			public LocalVariable Variable {
+				get {
+					return li;
+				}
+			}
+
+			public Expression Initializer {
+				get {
+					return initializer;
+				}
+				set {
+					initializer = value;
+				}
+			}
+
+			#endregion
 		}
 
-		public enum ReadOnlyContext: byte {
-			Using,
-			Foreach,
-			Fixed
+		Expression initializer;
+		protected FullNamedExpression type_expr;
+		protected LocalVariable li;
+		protected List<Declarator> declarators;
+
+		public BlockVariableDeclaration (FullNamedExpression type, LocalVariable li)
+		{
+			this.type_expr = type;
+			this.li = li;
+			this.loc = type_expr.Location;
 		}
 
-		Flags flags;
-		ReadOnlyContext ro_context;
-		LocalBuilder builder;
+		protected BlockVariableDeclaration (LocalVariable li)
+		{
+			this.li = li;
+		}
+
+		#region Properties
+
+		public List<Declarator> Declarators {
+			get {
+				return declarators;
+			}
+		}
+
+		public Expression Initializer {
+			get {
+				return initializer;
+			}
+			set {
+				initializer = value;
+			}
+		}
+
+		public FullNamedExpression TypeExpression {
+			get {
+				return type_expr;
+			}
+		}
 
-		public LocalInfo (FullNamedExpression type, string name, Block block, Location l)
+		public LocalVariable Variable {
+			get {
+				return li;
+			}
+		}
+
+		#endregion
+
+		public void AddDeclarator (Declarator decl)
 		{
-			Type = type;
-			Name = name;
-			Block = block;
-			Location = l;
+			if (declarators == null)
+				declarators = new List<Declarator> ();
+
+			declarators.Add (decl);
 		}
 
-		public LocalInfo (TypeContainer ds, Block block, Location l)
+		void CreateEvaluatorVariable (BlockContext bc, LocalVariable li)
 		{
-			VariableType = ds.IsGeneric ? ds.CurrentType : ds.Definition;
-			Block = block;
-			Location = l;
+			var container = bc.CurrentMemberDefinition.Parent;
+
+			Field f = new Field (container, new TypeExpression (li.Type, li.Location), Modifiers.PUBLIC | Modifiers.STATIC,
+				new MemberName (li.Name, li.Location), null);
+
+			container.AddField (f);
+			f.Define ();
+			Evaluator.QueueField (f);
+
+			li.HoistedVariant = new HoistedEvaluatorVariable (f);
+			li.SetIsUsed ();
 		}
 
-		public void ResolveVariable (EmitContext ec)
+		public override bool Resolve (BlockContext bc)
 		{
-			if (HoistedVariant != null)
+			if (li.Type == null) {
+				TypeSpec type = null;
+				if (type_expr is VarExpr) {
+					//
+					// C# 3.0 introduced contextual keywords (var) which behaves like a type if type with
+					// same name exists or as a keyword when no type was found
+					// 
+					var texpr = type_expr.ResolveAsTypeTerminal (bc, true);
+					if (texpr == null) {
+						if (RootContext.Version < LanguageVersion.V_3)
+							bc.Report.FeatureIsNotAvailable (loc, "implicitly typed local variable");
+
+						if (li.IsFixed) {
+							bc.Report.Error (821, loc, "A fixed statement cannot use an implicitly typed local variable");
+							return false;
+						}
+
+						if (li.IsConstant) {
+							bc.Report.Error (822, loc, "An implicitly typed local variable cannot be a constant");
+							return false;
+						}
+
+						if (Initializer == null) {
+							bc.Report.Error (818, loc, "An implicitly typed local variable declarator must include an initializer");
+							return false;
+						}
+
+						if (declarators != null) {
+							bc.Report.Error (819, loc, "An implicitly typed local variable declaration cannot include multiple declarators");
+							declarators = null;
+						}
+
+						Initializer = Initializer.Resolve (bc);
+						if (Initializer != null) {
+							((VarExpr) type_expr).InferType (bc, Initializer);
+							type = type_expr.Type;
+						}
+					}
+				}
+
+				if (type == null) {
+					var texpr = type_expr.ResolveAsTypeTerminal (bc, false);
+					if (texpr == null)
+						return false;
+
+					type = texpr.Type;
+
+					if (li.IsConstant && !type.IsConstantCompatible) {
+						Const.Error_InvalidConstantType (type, loc, bc.Report);
+					}
+				}
+
+				if (type.IsStatic)
+					FieldBase.Error_VariableOfStaticClass (loc, li.Name, type, bc.Report);
+
+				if (type.IsPointer && !bc.IsUnsafe)
+					Expression.UnsafeError (bc, loc);
+
+				li.Type = type;
+			}
+
+			bool eval_global = RootContext.StatementMode && bc.CurrentBlock is ToplevelBlock;
+			if (eval_global) {
+				CreateEvaluatorVariable (bc, li);
+			} else {
+				li.PrepareForFlowAnalysis (bc);
+			}
+
+			if (initializer != null) {
+				initializer = ResolveInitializer (bc, li, initializer);
+				// li.Variable.DefinitelyAssigned 
+			}
+
+			if (declarators != null) {
+				foreach (var d in declarators) {
+					d.Variable.Type = li.Type;
+					if (eval_global) {
+						CreateEvaluatorVariable (bc, d.Variable);
+					} else {
+						d.Variable.PrepareForFlowAnalysis (bc);
+					}
+
+					if (d.Initializer != null) {
+						d.Initializer = ResolveInitializer (bc, d.Variable, d.Initializer);
+						// d.Variable.DefinitelyAssigned 
+					}
+				}
+			}
+
+			return true;
+		}
+
+		protected virtual Expression ResolveInitializer (BlockContext bc, LocalVariable li, Expression initializer)
+		{
+			var a = new SimpleAssign (li.CreateReferenceExpression (bc, li.Location), initializer, li.Location);
+			return a.ResolveStatement (bc);
+		}
+
+		protected override void DoEmit (EmitContext ec)
+		{
+			if (li.IsConstant)
 				return;
 
-			if (builder == null) {
-				builder = ec.DeclareLocal (VariableType, Pinned);
+			li.CreateBuilder (ec);
+
+			if (Initializer != null)
+				((ExpressionStatement) Initializer).EmitStatement (ec);
+
+			if (declarators != null) {
+				foreach (var d in declarators) {
+					d.Variable.CreateBuilder (ec);
+					if (d.Initializer != null)
+						((ExpressionStatement) d.Initializer).EmitStatement (ec);
+				}
 			}
 		}
 
-		public void Emit (EmitContext ec)
+		protected override void CloneTo (CloneContext clonectx, Statement target)
 		{
-			ec.Emit (OpCodes.Ldloc, builder);
+			BlockVariableDeclaration t = (BlockVariableDeclaration) target;
+
+			if (type_expr != null)
+				t.type_expr = (FullNamedExpression) type_expr.Clone (clonectx);
+
+			if (initializer != null)
+				t.initializer = initializer.Clone (clonectx);
+
+			if (declarators != null) {
+				t.declarators = null;
+				foreach (var d in declarators)
+					t.AddDeclarator (new Declarator (d, d.Initializer == null ? null : d.Initializer.Clone (clonectx)));
+			}
 		}
+	}
 
-		public void EmitAssign (EmitContext ec)
+	class BlockConstantDeclaration : BlockVariableDeclaration
+	{
+		public BlockConstantDeclaration (FullNamedExpression type, LocalVariable li)
+			: base (type, li)
 		{
-			ec.Emit (OpCodes.Stloc, builder);
 		}
 
-		public void EmitAddressOf (EmitContext ec)
+		protected override Expression ResolveInitializer (BlockContext bc, LocalVariable li, Expression initializer)
 		{
-			ec.Emit (OpCodes.Ldloca, builder);
+			initializer = initializer.Resolve (bc);
+			if (initializer == null)
+				return null;
+
+			var c = initializer as Constant;
+			if (c == null) {
+				initializer.Error_ExpressionMustBeConstant (bc, initializer.Location, li.Name);
+				return null;
+			}
+
+			c = c.ConvertImplicitly (bc, li.Type);
+			if (c == null) {
+				if (TypeManager.IsReferenceType (li.Type))
+					initializer.Error_ConstantCanBeInitializedWithNullOnly (bc, li.Type, initializer.Location, li.Name);
+				else
+					initializer.Error_ValueCannotBeConverted (bc, initializer.Location, li.Type, false);
+
+				return null;
+			}
+
+			li.ConstantValue = c;
+			return initializer;
+		}
+	}
+
+	//
+	// The information about a user-perceived local variable
+	//
+	public class LocalVariable : INamedBlockVariable, ILocalVariable
+	{
+		[Flags]
+		public enum Flags
+		{
+			Used = 1,
+			IsThis = 1 << 1,
+			AddressTaken = 1 << 2,
+			CompilerGenerated = 1 << 3,
+			Constant = 1 << 4,
+			ForeachVariable = 1 << 5,
+			FixedVariable = 1 << 6,
+			UsingVariable = 1 << 7,
+//			DefinitelyAssigned = 1 << 8,
+			IsLocked = 1 << 9,
+
+			ReadonlyMask = ForeachVariable | FixedVariable | UsingVariable
+		}
+
+		TypeSpec type;
+		readonly string name;
+		readonly Location loc;
+		readonly Block block;
+		Flags flags;
+		Constant const_value;
+
+		public VariableInfo VariableInfo;
+		HoistedVariable hoisted_variant;
+
+		LocalBuilder builder;
+
+		public LocalVariable (Block block, string name, Location loc)
+		{
+			this.block = block;
+			this.name = name;
+			this.loc = loc;
 		}
 
-		public void EmitSymbolInfo (EmitContext ec)
+		public LocalVariable (Block block, string name, Flags flags, Location loc)
+			: this (block, name, loc)
 		{
-			if (builder != null)
-				ec.DefineLocalVariable (Name, builder);
+			this.flags = flags;
+		}
+
+		//
+		// Used by variable declarators
+		//
+		public LocalVariable (LocalVariable li, string name, Location loc)
+			: this (li.block, name, li.flags, loc)
+		{
+		}
+
+		#region Properties
+
+		public bool AddressTaken {
+			get { return (flags & Flags.AddressTaken) != 0; }
+			set { flags |= Flags.AddressTaken; }
+		}
+
+		public Block Block {
+			get {
+				return block;
+			}
+		}
+
+		public Constant ConstantValue {
+			get {
+				return const_value;
+			}
+			set {
+				const_value = value;
+			}
 		}
 
 		//
@@ -1245,135 +1540,195 @@ namespace Mono.CSharp {
 			}
 		}
 
-		public bool IsThisAssigned (BlockContext ec, Block block)
-		{
-			if (VariableInfo == null)
-				throw new Exception ();
-
-			if (!ec.DoFlowAnalysis || ec.CurrentBranching.IsAssigned (VariableInfo))
-				return true;
-
-			return VariableInfo.TypeInfo.IsFullyInitialized (ec, VariableInfo, block.StartLocation);
+		public bool IsDeclared {
+			get {
+				return type != null;
+			}
 		}
 
-		public bool IsAssigned (BlockContext ec)
-		{
-			if (VariableInfo == null)
-				throw new Exception ();
+		public bool IsConstant {
+			get {
+				return (flags & Flags.Constant) != 0;
+			}
+		}
 
-			return !ec.DoFlowAnalysis || ec.CurrentBranching.IsAssigned (VariableInfo);
+		public bool IsLocked {
+			get {
+				return (flags & Flags.IsLocked) != 0;
+			}
+			set {
+				flags = value ? flags | Flags.IsLocked : flags & ~Flags.IsLocked;
+			}
 		}
 
-		public bool Resolve (ResolveContext ec)
-		{
-			if (VariableType != null)
-				return true;
+		public bool IsThis {
+			get {
+				return (flags & Flags.IsThis) != 0;
+			}
+		}
 
-			TypeExpr texpr = Type.ResolveAsContextualType (ec, false);
-			if (texpr == null)
-				return false;
-				
-			VariableType = texpr.Type;
+		public bool IsFixed {
+			get {
+				return (flags & Flags.FixedVariable) != 0;
+			}
+		}
 
-			if (VariableType.IsStatic) {
-				FieldBase.Error_VariableOfStaticClass (Location, Name, VariableType, ec.Report);
-				return false;
+		public bool IsReadonly {
+			get {
+				return (flags & Flags.ReadonlyMask) != 0;
 			}
+		}
 
-			if (VariableType.IsPointer && !ec.IsUnsafe)
-				Expression.UnsafeError (ec, Location);
+		public Location Location {
+			get {
+				return loc;
+			}
+		}
 
-			return true;
+		public string Name {
+			get {
+				return name;
+			}
 		}
 
-		public bool IsConstant {
-			get { return (flags & Flags.IsConstant) != 0; }
-			set { flags |= Flags.IsConstant; }
+		public TypeSpec Type {
+		    get {
+				return type;
+			}
+		    set {
+				type = value;
+			}
 		}
 
-		public bool AddressTaken {
-			get { return (flags & Flags.AddressTaken) != 0; }
-			set { flags |= Flags.AddressTaken; }
+		#endregion
+
+		public void CreateBuilder (EmitContext ec)
+		{
+			if ((flags & Flags.Used) == 0) {
+				if (VariableInfo == null) {
+					// Missing flow analysis or wrong variable flags
+					throw new InternalErrorException ("VariableInfo is null and the variable `{0}' is not used", name);
+				}
+
+				if (VariableInfo.IsEverAssigned)
+					ec.Report.Warning (219, 3, Location, "The variable `{0}' is assigned but its value is never used", Name);
+				else
+					ec.Report.Warning (168, 3, Location, "The variable `{0}' is declared but never used", Name);
+			}
+
+			if (HoistedVariant != null)
+				return;
+
+			if (builder != null) {
+				if ((flags & Flags.CompilerGenerated) != 0)
+					return;
+
+				// To avoid Used warning duplicates
+				throw new InternalErrorException ("Already created variable `{0}'", name);
+			}
+
+			//
+			// All fixed variabled are pinned, a slot has to be alocated
+			//
+			builder = ec.DeclareLocal (Type, IsFixed);
+			if (SymbolWriter.HasSymbolWriter)
+				ec.DefineLocalVariable (name, builder);
 		}
 
-		public bool CompilerGenerated {
-			get { return (flags & Flags.CompilerGenerated) != 0; }
-			set { flags |= Flags.CompilerGenerated; }
+		public static LocalVariable CreateCompilerGenerated (TypeSpec type, Block block, Location loc)
+		{
+			LocalVariable li = new LocalVariable (block, "<$$>", Flags.CompilerGenerated | Flags.Used, loc);
+			li.Type = type;
+			return li;
 		}
 
-		public override string ToString ()
+		public Expression CreateReferenceExpression (ResolveContext rc, Location loc)
 		{
-			return String.Format ("LocalInfo ({0},{1},{2},{3})",
-					      Name, Type, VariableInfo, Location);
+			if (IsConstant && const_value != null)
+				return Constant.CreateConstantFromValue (Type, const_value.GetValue (), loc).Resolve (rc);
+
+			return new LocalVariableReference (this, loc);
 		}
 
-		public bool Used {
-			get { return (flags & Flags.Used) != 0; }
-			set { flags = value ? (flags | Flags.Used) : (unchecked (flags & ~Flags.Used)); }
+		public void Emit (EmitContext ec)
+		{
+			// TODO: Need something better for temporary variables
+			if ((flags & Flags.CompilerGenerated) != 0)
+				CreateBuilder (ec);
+
+			ec.Emit (OpCodes.Ldloc, builder);
 		}
 
-		public bool ReadOnly {
-			get { return (flags & Flags.ReadOnly) != 0; }
+		public void EmitAssign (EmitContext ec)
+		{
+			// TODO: Need something better for temporary variables
+			if ((flags & Flags.CompilerGenerated) != 0)
+				CreateBuilder (ec);
+
+			ec.Emit (OpCodes.Stloc, builder);
 		}
 
-		public void SetReadOnlyContext (ReadOnlyContext context)
+		public void EmitAddressOf (EmitContext ec)
 		{
-			flags |= Flags.ReadOnly;
-			ro_context = context;
+			ec.Emit (OpCodes.Ldloca, builder);
 		}
 
 		public string GetReadOnlyContext ()
 		{
-			if (!ReadOnly)
-				throw new InternalErrorException ("Variable is not readonly");
-
-			switch (ro_context) {
-			case ReadOnlyContext.Fixed:
+			switch (flags & Flags.ReadonlyMask) {
+			case Flags.FixedVariable:
 				return "fixed variable";
-			case ReadOnlyContext.Foreach:
+			case Flags.ForeachVariable:
 				return "foreach iteration variable";
-			case ReadOnlyContext.Using:
+			case Flags.UsingVariable:
 				return "using variable";
 			}
-			throw new NotImplementedException ();
-		}
 
-		//
-		// Whether the variable is pinned, if Pinned the variable has been 
-		// allocated in a pinned slot with DeclareLocal.
-		//
-		public bool Pinned {
-			get { return (flags & Flags.Pinned) != 0; }
-			set { flags = value ? (flags | Flags.Pinned) : (flags & ~Flags.Pinned); }
+			throw new InternalErrorException ("Variable is not readonly");
 		}
 
-		public bool IsThis {
-			get { return (flags & Flags.IsThis) != 0; }
-			set { flags = value ? (flags | Flags.IsThis) : (flags & ~Flags.IsThis); }
-		}
+		public bool IsThisAssigned (BlockContext ec, Block block)
+		{
+			if (VariableInfo == null)
+				throw new Exception ();
+
+			if (!ec.DoFlowAnalysis || ec.CurrentBranching.IsAssigned (VariableInfo))
+				return true;
 
-		Block IKnownVariable.Block {
-			get { return Block; }
+			return VariableInfo.TypeInfo.IsFullyInitialized (ec, VariableInfo, block.StartLocation);
 		}
 
-		Location IKnownVariable.Location {
-			get { return Location; }
+		public bool IsAssigned (BlockContext ec)
+		{
+			if (VariableInfo == null)
+				throw new Exception ();
+
+			return !ec.DoFlowAnalysis || ec.CurrentBranching.IsAssigned (VariableInfo);
 		}
 
-		public LocalInfo Clone (CloneContext clonectx)
+		public void PrepareForFlowAnalysis (BlockContext bc)
 		{
 			//
-			// Variables in anonymous block are not resolved yet
+			// No need for definitely assigned check for these guys
 			//
-			if (VariableType == null)
-				return new LocalInfo ((FullNamedExpression) Type.Clone (clonectx), Name, clonectx.LookupBlock (Block), Location);
+			if ((flags & (Flags.Constant | Flags.ReadonlyMask | Flags.CompilerGenerated)) != 0)
+				return;
 
-			//
-			// Variables in method block are resolved
-			//
-			LocalInfo li = new LocalInfo (null, Name, clonectx.LookupBlock (Block), Location);
-			li.VariableType = VariableType;
-			return li;			
+			VariableInfo = new VariableInfo (this, bc.FlowOffset);
+			bc.FlowOffset += VariableInfo.Length;
+		}
+
+		//
+		// Mark the variables as referenced in the user code
+		//
+		public void SetIsUsed ()
+		{
+			flags |= Flags.Used;
+		}
+
+		public override string ToString ()
+		{
+			return string.Format ("LocalInfo ({0},{1},{2},{3})", name, type, VariableInfo, Location);
 		}
 	}
 
@@ -1392,124 +1747,61 @@ namespace Mono.CSharp {
 	///   they contain extra information that is not necessary on normal blocks.
 	/// </remarks>
 	public class Block : Statement {
-		public Block    Parent;
-		public Location StartLocation;
-		public Location EndLocation = Location.Null;
-
-		public ExplicitBlock Explicit;
-		public ToplevelBlock Toplevel; // TODO: Use Explicit
-
 		[Flags]
 		public enum Flags
 		{
 			Unchecked = 1,
-			BlockUsed = 2,
-			VariablesInitialized = 4,
 			HasRet = 8,
 			Unsafe = 16,
 			IsIterator = 32,
 			HasCapturedVariable = 64,
 			HasCapturedThis = 1 << 7,
-			IsExpressionTree = 1 << 8
+			IsExpressionTree = 1 << 8,
+			CompilerGenerated = 1 << 9
 		}
 
-		protected Flags flags;
+		public Block Parent;
+		public Location StartLocation;
+		public Location EndLocation;
 
-		public bool Unchecked {
-			get { return (flags & Flags.Unchecked) != 0; }
-			set { flags = value ? flags | Flags.Unchecked : flags & ~Flags.Unchecked; }
-		}
+		public ExplicitBlock Explicit;
+		public ParametersBlock ParametersBlock;
 
-		public bool Unsafe {
-			get { return (flags & Flags.Unsafe) != 0; }
-			set { flags |= Flags.Unsafe; }
-		}
+		protected Flags flags;
 
 		//
 		// The statements in this block
 		//
 		protected List<Statement> statements;
 
-		//
-		// An array of Blocks.  We keep track of children just
-		// to generate the local variable declarations.
-		//
-		// Statements and child statements are handled through the
-		// statements.
-		//
-		List<Block> children;
-
-		//
-		// Labels.  (label, block) pairs.
-		//
-		protected Dictionary<string, LabeledStatement> labels;
-
-		//
-		// Keeps track of (name, type) pairs
-		//
-		Dictionary<string, LocalInfo> variables;
-
-		//
-		// Keeps track of constants
-		Dictionary<string, Expression> constants;
-
-		//
-		// Temporary variables.
-		//
-		List<LocalInfo> temporary_variables;
-		
-		//
-		// If this is a switch section, the enclosing switch block.
-		//
-		protected ExplicitBlock switch_block;
-
 		protected List<Statement> scope_initializers;
 
-		List<ToplevelBlock> anonymous_children;
-
 		int? resolving_init_idx;
 
-		protected static int id;
+		Block original;
 
-		int this_id;
+#if DEBUG
+		static int id;
+		public int ID = id++;
 
-		int assignable_slots;
+		static int clone_id_counter;
+		int clone_id;
+#endif
+
+//		int assignable_slots;
 		bool unreachable_shown;
 		bool unreachable;
 		
-		public Block (Block parent)
-			: this (parent, (Flags) 0, Location.Null, Location.Null)
-		{ }
-
-		public Block (Block parent, Flags flags)
-			: this (parent, flags, Location.Null, Location.Null)
-		{ }
-
 		public Block (Block parent, Location start, Location end)
-			: this (parent, (Flags) 0, start, end)
-		{ }
-
-		//
-		// Useful when TopLevel block is downgraded to normal block
-		//
-		public Block (ToplevelBlock parent, ToplevelBlock source)
-			: this (parent, source.flags, source.StartLocation, source.EndLocation)
+			: this (parent, 0, start, end)
 		{
-			statements = source.statements;
-			children = source.children;
-			labels = source.labels;
-			variables = source.variables;
-			constants = source.constants;
-			switch_block = source.switch_block;
 		}
 
 		public Block (Block parent, Flags flags, Location start, Location end)
 		{
 			if (parent != null) {
-				parent.AddChild (this);
-
 				// the appropriate constructors will fixup these fields
-				Toplevel = parent.Toplevel;
+				ParametersBlock = parent.ParametersBlock;
 				Explicit = parent.Explicit;
 			}
 			
@@ -1518,349 +1810,105 @@ namespace Mono.CSharp {
 			this.StartLocation = start;
 			this.EndLocation = end;
 			this.loc = start;
-			this_id = id++;
 			statements = new List<Statement> (4);
+
+			this.original = this;
 		}
 
 		#region Properties
 
-		public int ID {
-			get { return this_id; }
+		public bool HasRet {
+			get { return (flags & Flags.HasRet) != 0; }
 		}
 
-		public IDictionary<string, LocalInfo> Variables {
+		public Block Original {
 			get {
-				if (variables == null)
-					variables = new Dictionary<string, LocalInfo> ();
-				return variables;
+				return original;
 			}
 		}
 
+		public bool IsCompilerGenerated {
+			get { return (flags & Flags.CompilerGenerated) != 0; }
+			set { flags = value ? flags | Flags.CompilerGenerated : flags & ~Flags.CompilerGenerated; }
+		}
+
+		public bool Unchecked {
+			get { return (flags & Flags.Unchecked) != 0; }
+			set { flags = value ? flags | Flags.Unchecked : flags & ~Flags.Unchecked; }
+		}
+
+		public bool Unsafe {
+			get { return (flags & Flags.Unsafe) != 0; }
+			set { flags |= Flags.Unsafe; }
+		}
+
 		#endregion
 
-		public ExplicitBlock CreateSwitchBlock (Location start)
+		public Block CreateSwitchBlock (Location start)
 		{
 			// FIXME: Only explicit block should be created
-			var new_block = new ExplicitBlock (this, start, start);
-			new_block.switch_block = Explicit;
+			var new_block = new Block (this, start, start);
+			new_block.IsCompilerGenerated = true;
 			return new_block;
 		}
 
-		void AddChild (Block b)
-		{
-			if (children == null)
-				children = new List<Block> (1);
-			
-			children.Add (b);
-		}
-
 		public void SetEndLocation (Location loc)
 		{
 			EndLocation = loc;
 		}
 
-		protected void Error_158 (string name, Location loc)
+		public void AddLabel (LabeledStatement target)
 		{
-			Toplevel.Report.Error (158, loc, "The label `{0}' shadows another label " +
-				      "by the same name in a contained scope", name);
-		}
-
-		/// <summary>
-		///   Adds a label to the current block. 
-		/// </summary>
-		///
-		/// <returns>
-		///   false if the name already exists in this block. true
-		///   otherwise.
-		/// </returns>
-		///
-		public bool AddLabel (LabeledStatement target)
-		{
-			if (switch_block != null)
-				return switch_block.AddLabel (target);
-
-			string name = target.Name;
-
-			Block cur = this;
-			while (cur != null) {
-				LabeledStatement s = cur.DoLookupLabel (name);
-				if (s != null) {
-					Toplevel.Report.SymbolRelatedToPreviousError (s.loc, s.Name);
-					Toplevel.Report.Error (140, target.loc, "The label `{0}' is a duplicate", name);
-					return false;
-				}
-
-				if (this == Explicit)
-					break;
-
-				cur = cur.Parent;
-			}
-
-			while (cur != null) {
-				if (cur.DoLookupLabel (name) != null) {
-					Error_158 (name, target.loc);
-					return false;
-				}
-
-				if (children != null) {
-					foreach (Block b in children) {
-						LabeledStatement s = b.DoLookupLabel (name);
-						if (s == null)
-							continue;
-
-						Toplevel.Report.SymbolRelatedToPreviousError (s.loc, s.Name);
-						Error_158 (name, target.loc);
-						return false;
-					}
-				}
-
-				cur = cur.Parent;
-			}
-
-			Toplevel.CheckError158 (name, target.loc);
-
-			if (labels == null)
-				labels = new Dictionary<string, LabeledStatement> ();
-
-			labels.Add (name, target);
-			return true;
+			ParametersBlock.TopBlock.AddLabel (target.Name, target);
 		}
 
-		public LabeledStatement LookupLabel (string name)
+		public void AddLocalName (LocalVariable li)
 		{
-			LabeledStatement s = DoLookupLabel (name);
-			if (s != null)
-				return s;
-
-			if (children == null)
-				return null;
-
-			foreach (Block child in children) {
-				if (Explicit != child.Explicit)
-					continue;
-
-				s = child.LookupLabel (name);
-				if (s != null)
-					return s;
-			}
-
-			return null;
+			AddLocalName (li.Name, li);
 		}
 
-		LabeledStatement DoLookupLabel (string name)
+		public virtual void AddLocalName (string name, INamedBlockVariable li)
 		{
-			if (switch_block != null)
-				return switch_block.LookupLabel (name);
-
-			if (labels != null)
-				if (labels.ContainsKey (name))
-					return labels [name];
-
-			return null;
+			ParametersBlock.TopBlock.AddLocalName (name, li);
 		}
 
-		public bool CheckInvariantMeaningInBlock (string name, Expression e, Location loc)
+		public virtual void Error_AlreadyDeclared (string name, INamedBlockVariable variable, string reason)
 		{
-			Block b = this;
-			IKnownVariable kvi = b.Explicit.GetKnownVariable (name);
-			while (kvi == null) {
-				b = b.Explicit.Parent;
-				if (b == null)
-					return true;
-				kvi = b.Explicit.GetKnownVariable (name);
-			}
-
-			if (kvi.Block == b)
-				return true;
-
-			// Is kvi.Block nested inside 'b'
-			if (b.Explicit != kvi.Block.Explicit) {
-				//
-				// If a variable by the same name it defined in a nested block of this
-				// block, we violate the invariant meaning in a block.
-				//
-				if (b == this) {
-					Toplevel.Report.SymbolRelatedToPreviousError (kvi.Location, name);
-					Toplevel.Report.Error (135, loc, "`{0}' conflicts with a declaration in a child block", name);
-					return false;
-				}
-
-				//
-				// It's ok if the definition is in a nested subblock of b, but not
-				// nested inside this block -- a definition in a sibling block
-				// should not affect us.
-				//
-				return true;
-			}
-
-			//
-			// Block 'b' and kvi.Block are the same textual block.
-			// However, different variables are extant.
-			//
-			// Check if the variable is in scope in both blocks.  We use
-			// an indirect check that depends on AddVariable doing its
-			// part in maintaining the invariant-meaning-in-block property.
-			//
-			if (e is VariableReference || (e is Constant && b.GetLocalInfo (name) != null))
-				return true;
-
-			if (this is ToplevelBlock) {
-				Toplevel.Report.SymbolRelatedToPreviousError (kvi.Location, name);
-				e.Error_VariableIsUsedBeforeItIsDeclared (Toplevel.Report, name);
-				return false;
+			if (reason == null) {
+				Error_AlreadyDeclared (name, variable);
+				return;
 			}
 
-			//
-			// Even though we detected the error when the name is used, we
-			// treat it as if the variable declaration was in error.
-			//
-			Toplevel.Report.SymbolRelatedToPreviousError (loc, name);
-			Error_AlreadyDeclared (kvi.Location, name, "parent or current");
-			return false;
+			ParametersBlock.TopBlock.Report.Error (136, variable.Location,
+				"A local variable named `{0}' cannot be declared in this scope because it would give a different meaning " +
+				"to `{0}', which is already used in a `{1}' scope to denote something else",
+				name, reason);
 		}
 
-		protected bool CheckParentConflictName (ToplevelBlock block, string name, Location l)
+		public virtual void Error_AlreadyDeclared (string name, INamedBlockVariable variable)
 		{
-			LocalInfo vi = GetLocalInfo (name);
-			if (vi != null) {
-				block.Report.SymbolRelatedToPreviousError (vi.Location, name);
-				if (Explicit == vi.Block.Explicit) {
-					Error_AlreadyDeclared (l, name, null);
+			var pi = variable as ParametersBlock.ParameterInfo;
+			if (pi != null) {
+				var p = pi.Parameter;
+				if (p is AnonymousTypeClass.GeneratedParameter) {
+					ParametersBlock.TopBlock.Report.Error (833, p.Location, "`{0}': An anonymous type cannot have multiple properties with the same name",
+						p.Name);
 				} else {
-					Error_AlreadyDeclared (l, name, this is ToplevelBlock ?
-						"parent or current" : "parent");
-				}
-				return false;
-			}
-
-			if (block != null) {
-				var tblock = block.CheckParameterNameConflict (name);
-				if (tblock != null) {
-					if (block == tblock && block is Linq.QueryBlock)
-						Error_AlreadyDeclared (loc, name);
-					else
-						Error_AlreadyDeclared (loc, name, "parent or current");
-
-					return false;
+					ParametersBlock.TopBlock.Report.Error (100, p.Location, "The parameter name `{0}' is a duplicate", p.Name);
 				}
-			}
-
-			return true;
-		}
-
-		public LocalInfo AddVariable (Expression type, string name, Location l)
-		{
-			if (!CheckParentConflictName (Toplevel, name, l))
-				return null;
-
-			IKnownVariable kvi = Explicit.GetKnownVariable (name);
-			if (kvi != null) {
-				Toplevel.Report.SymbolRelatedToPreviousError (kvi.Location, name);
-				Error_AlreadyDeclared (l, name, "child");
-				return null;
-			}
-
-			LocalInfo vi = new LocalInfo ((FullNamedExpression) type, name, this, l);
-			AddVariable (vi);
 
-			if ((flags & Flags.VariablesInitialized) != 0)
-				throw new InternalErrorException ("block has already been resolved");
-
-			return vi;
-		}
-		
-		protected virtual void AddVariable (LocalInfo li)
-		{
-			Variables.Add (li.Name, li);
-			Explicit.AddKnownVariable (li.Name, li);
-		}
-
-		protected virtual void Error_AlreadyDeclared (Location loc, string var, string reason)
-		{
-			if (reason == null) {
-				Error_AlreadyDeclared (loc, var);
 				return;
 			}
-			
-			Toplevel.Report.Error (136, loc, "A local variable named `{0}' cannot be declared " +
-				      "in this scope because it would give a different meaning " +
-				      "to `{0}', which is already used in a `{1}' scope " +
-				      "to denote something else", var, reason);
-		}
 
-		protected virtual void Error_AlreadyDeclared (Location loc, string name)
-		{
-			Toplevel.Report.Error (128, loc,
+			ParametersBlock.TopBlock.Report.Error (128, variable.Location,
 				"A local variable named `{0}' is already defined in this scope", name);
 		}
 					
-		public virtual void Error_AlreadyDeclaredTypeParameter (Location loc, string name, string conflict)
-		{
-			Toplevel.Report.Error (412, loc, "The type parameter name `{0}' is the same as `{1}'",
-				name, conflict);
-		}
-
-		public bool AddConstant (Expression type, string name, Expression value, Location l)
-		{
-			if (AddVariable (type, name, l) == null)
-				return false;
-			
-			if (constants == null)
-				constants = new Dictionary<string, Expression> ();
-
-			constants.Add (name, value);
-
-			// A block is considered used if we perform an initialization in a local declaration, even if it is constant.
-			Use ();
-			return true;
-		}
-
-		static int next_temp_id = 0;
-
-		public LocalInfo AddTemporaryVariable (TypeExpr te, Location loc)
-		{
-			Report.Debug (64, "ADD TEMPORARY", this, Toplevel, loc);
-
-			if (temporary_variables == null)
-				temporary_variables = new List<LocalInfo> ();
-
-			int id = ++next_temp_id;
-			string name = "$s_" + id.ToString ();
-
-			LocalInfo li = new LocalInfo (te, name, this, loc);
-			li.CompilerGenerated = true;
-			temporary_variables.Add (li);
-			return li;
-		}
-
-		public LocalInfo GetLocalInfo (string name)
+		public virtual void Error_AlreadyDeclaredTypeParameter (string name, Location loc)
 		{
-			LocalInfo ret;
-			for (Block b = this; b != null; b = b.Parent) {
-				if (b.variables != null && b.variables.TryGetValue (name, out ret)) {
-					return ret;
-				}
-			}
-
-			return null;
-		}
-
-		public Expression GetVariableType (string name)
-		{
-			LocalInfo vi = GetLocalInfo (name);
-			return vi == null ? null : vi.Type;
-		}
-
-		public Expression GetConstantExpression (string name)
-		{
-			Expression ret;
-			for (Block b = this; b != null; b = b.Parent) {
-				if (b.constants != null) {
-					if (b.constants.TryGetValue (name, out ret))
-						return ret;
-				}
-			}
-			return null;
+			ParametersBlock.TopBlock.Report.Error (412, loc,
+				"The type parameter name `{0}' is the same as local variable or parameter name",
+				name);
 		}
 
 		//
@@ -1889,206 +1937,19 @@ namespace Mono.CSharp {
 		public void AddStatement (Statement s)
 		{
 			statements.Add (s);
-			flags |= Flags.BlockUsed;
-		}
-
-		public bool Used {
-			get { return (flags & Flags.BlockUsed) != 0; }
-		}
-
-		public void Use ()
-		{
-			flags |= Flags.BlockUsed;
-		}
-
-		public bool HasRet {
-			get { return (flags & Flags.HasRet) != 0; }
 		}
 
 		public int AssignableSlots {
 			get {
-// TODO: Re-enable			
-//				if ((flags & Flags.VariablesInitialized) == 0)
-//					throw new Exception ("Variables have not been initialized yet");
-				return assignable_slots;
+				// FIXME: HACK, we don't know the block available variables count now, so set this high enough
+				return 4096;
+//				return assignable_slots;
 			}
 		}
 
-		public IList<ToplevelBlock> AnonymousChildren {
-			get { return anonymous_children; }
-		}
-
-		public void AddAnonymousChild (ToplevelBlock b)
-		{
-			if (anonymous_children == null)
-				anonymous_children = new List<ToplevelBlock> ();
-
-			anonymous_children.Add (b);
-		}
-
-		void DoResolveConstants (BlockContext ec)
-		{
-			if (constants == null)
-				return;
-
-			if (variables == null)
-				throw new InternalErrorException ("cannot happen");
-
-			foreach (var de in variables) {
-				string name = de.Key;
-				LocalInfo vi = de.Value;
-				TypeSpec variable_type = vi.VariableType;
-
-				if (variable_type == null) {
-					if (vi.Type is VarExpr)
-						ec.Report.Error (822, vi.Type.Location, "An implicitly typed local variable cannot be a constant");
-
-					continue;
-				}
-
-				Expression cv;
-				if (!constants.TryGetValue (name, out cv))
-					continue;
-
-				// Don't let 'const int Foo = Foo;' succeed.
-				// Removing the name from 'constants' ensures that we get a LocalVariableReference below,
-				// which in turn causes the 'must be constant' error to be triggered.
-				constants.Remove (name);
-
-				if (!variable_type.IsConstantCompatible) {
-					Const.Error_InvalidConstantType (variable_type, vi.Location, ec.Report);
-					continue;
-				}
-
-				ec.CurrentBlock = this;
-				Expression e;
-				using (ec.With (ResolveContext.Options.ConstantCheckState, (flags & Flags.Unchecked) == 0)) {
-					using (ec.With (ResolveContext.Options.DoFlowAnalysis, false)) {
-						e = cv.Resolve (ec);
-					}
-				}
-				if (e == null)
-					continue;
-
-				Constant ce = e as Constant;
-				if (ce == null) {
-					e.Error_ExpressionMustBeConstant (ec, vi.Location, name);
-					continue;
-				}
-
-				e = ce.ConvertImplicitly (ec, variable_type);
-				if (e == null) {
-					if (TypeManager.IsReferenceType (variable_type))
-						ce.Error_ConstantCanBeInitializedWithNullOnly (ec, variable_type, vi.Location, vi.Name);
-					else
-						ce.Error_ValueCannotBeConverted (ec, vi.Location, variable_type, false);
-					continue;
-				}
-
-				constants.Add (name, e);
-				vi.IsConstant = true;
-			}
-		}
-
-		protected void ResolveMeta (BlockContext ec, int offset)
-		{
-			Report.Debug (64, "BLOCK RESOLVE META", this, Parent);
-
-			// If some parent block was unsafe, we remain unsafe even if this block
-			// isn't explicitly marked as such.
-			using (ec.With (ResolveContext.Options.UnsafeScope, ec.IsUnsafe | Unsafe)) {
-				flags |= Flags.VariablesInitialized;
-
-				if (variables != null) {
-					foreach (LocalInfo li in variables.Values) {
-						if (!li.Resolve (ec))
-							continue;
-						li.VariableInfo = new VariableInfo (li, offset);
-						offset += li.VariableInfo.Length;
-					}
-				}
-				assignable_slots = offset;
-
-				DoResolveConstants (ec);
-
-				if (children == null)
-					return;
-				foreach (Block b in children)
-					b.ResolveMeta (ec, offset);
-			}
-		}
-
-		//
-		// Emits the local variable declarations for a block
-		//
-		public virtual void EmitMeta (EmitContext ec)
-		{
-			if (variables != null){
-				foreach (LocalInfo vi in variables.Values)
-					vi.ResolveVariable (ec);
-			}
-
-			if (temporary_variables != null) {
-				for (int i = 0; i < temporary_variables.Count; i++)
-					((LocalInfo)temporary_variables[i]).ResolveVariable(ec);
-			}
-
-			if (children != null) {
-				for (int i = 0; i < children.Count; i++)
-					((Block)children[i]).EmitMeta(ec);
-			}
-		}
-
-		void UsageWarning (BlockContext ec)
+		public LabeledStatement LookupLabel (string name)
 		{
-			if (variables == null || ec.Report.WarningLevel < 3)
-				return;
-
-			foreach (var de in variables) {
-				LocalInfo vi = de.Value;
-
-				if (!vi.Used) {
-					string name = de.Key;
-
-					// vi.VariableInfo can be null for 'catch' variables
-					if (vi.VariableInfo != null && vi.VariableInfo.IsEverAssigned)
-						ec.Report.Warning (219, 3, vi.Location, "The variable `{0}' is assigned but its value is never used", name);
-					else
-						ec.Report.Warning (168, 3, vi.Location, "The variable `{0}' is declared but never used", name);
-				}
-			}
-		}
-
-		static void CheckPossibleMistakenEmptyStatement (BlockContext ec, Statement s)
-		{
-			Statement body;
-
-			// Some statements are wrapped by a Block. Since
-			// others' internal could be changed, here I treat
-			// them as possibly wrapped by Block equally.
-			Block b = s as Block;
-			if (b != null && b.statements.Count == 1)
-				s = (Statement) b.statements [0];
-
-			if (s is Lock)
-				body = ((Lock) s).Statement;
-			else if (s is For)
-				body = ((For) s).Statement;
-			else if (s is Foreach)
-				body = ((Foreach) s).Statement;
-			else if (s is While)
-				body = ((While) s).Statement;
-			else if (s is Fixed)
-				body = ((Fixed) s).Statement;
-			else if (s is Using)
-				body = ((Using) s).EmbeddedStatement;
-			else if (s is UsingTemporary)
-				body = ((UsingTemporary) s).Statement;
-			else
-				return;
-
-			if (body == null || body is EmptyStatement)
-				ec.Report.Warning (642, 3, s.loc, "Possible mistaken empty statement");
+			return ParametersBlock.TopBlock.GetLabel (name, this);
 		}
 
 		public override bool Resolve (BlockContext ec)
@@ -2096,8 +1957,6 @@ namespace Mono.CSharp {
 			Block prev_block = ec.CurrentBlock;
 			bool ok = true;
 
-			int errors = ec.Report.Errors;
-
 			ec.CurrentBlock = this;
 			ec.StartFlowBranching (this);
 
@@ -2123,10 +1982,6 @@ namespace Mono.CSharp {
 			int statement_count = statements.Count;
 			for (int ix = 0; ix < statement_count; ix++){
 				Statement s = statements [ix];
-				// Check possible empty statement (CS0642)
-				if (ix + 1 < statement_count && ec.Report.WarningLevel >= 3 &&
-					statements [ix + 1] is ExplicitBlock)
-					CheckPossibleMistakenEmptyStatement (ec, s);
 
 				//
 				// Warn if we detect unreachable code.
@@ -2185,18 +2040,9 @@ namespace Mono.CSharp {
 
 			// If we're a non-static `struct' constructor which doesn't have an
 			// initializer, then we must initialize all of the struct's fields.
-			if (this == Toplevel && !Toplevel.IsThisAssigned (ec) && !flow_unreachable)
+			if (this == ParametersBlock.TopBlock && !ParametersBlock.TopBlock.IsThisAssigned (ec) && !flow_unreachable)
 				ok = false;
 
-			if ((labels != null) && (ec.Report.WarningLevel >= 2)) {
-				foreach (LabeledStatement label in labels.Values)
-					if (!label.HasBeenReferenced)
-						ec.Report.Warning (164, 2, label.loc, "This label has not been referenced");
-			}
-
-			if (ok && errors == ec.Report.Errors)
-				UsageWarning (ec);
-
 			return ok;
 		}
 
@@ -2248,60 +2094,38 @@ namespace Mono.CSharp {
 
 		protected virtual void EmitSymbolInfo (EmitContext ec)
 		{
-			if (variables != null) {
-				foreach (LocalInfo vi in variables.Values) {
-					vi.EmitSymbolInfo (ec);
-				}
-			}
 		}
 
+#if DEBUG
 		public override string ToString ()
 		{
-			return String.Format ("{0} ({1}:{2})", GetType (), this_id, StartLocation);
+			return String.Format ("{0} ({1}:{2})", GetType (), ID, StartLocation);
 		}
+#endif
 
 		protected override void CloneTo (CloneContext clonectx, Statement t)
 		{
 			Block target = (Block) t;
+#if DEBUG
+			target.clone_id = clone_id_counter++;
+#endif
 
 			clonectx.AddBlockMap (this, target);
 
-			target.Toplevel = (ToplevelBlock) (Toplevel == this ? target : clonectx.LookupBlock (Toplevel));
+			target.ParametersBlock = (ParametersBlock) (ParametersBlock == this ? target : clonectx.RemapBlockCopy (ParametersBlock));
 			target.Explicit = (ExplicitBlock) (Explicit == this ? target : clonectx.LookupBlock (Explicit));
 
 			if (Parent != null)
 				target.Parent = clonectx.RemapBlockCopy (Parent);
 
-			if (variables != null){
-				target.variables = new Dictionary<string, LocalInfo> ();
-
-				foreach (var de in variables){
-					LocalInfo newlocal = de.Value.Clone (clonectx);
-					target.variables [de.Key] = newlocal;
-					clonectx.AddVariableMap (de.Value, newlocal);
-				}
-			}
-
 			target.statements = new List<Statement> (statements.Count);
 			foreach (Statement s in statements)
 				target.statements.Add (s.Clone (clonectx));
-
-			if (target.children != null){
-				target.children = new List<Block> (children.Count);
-				foreach (Block b in children){
-					target.children.Add (clonectx.LookupBlock (b));
-				}
-			}
-
-			//
-			// TODO: labels, switch_block, constants (?), anonymous_children
-			//
 		}
 	}
 
 	public class ExplicitBlock : Block
 	{
-		Dictionary<string, IKnownVariable> known_variables;
 		protected AnonymousMethodStorey am_storey;
 
 		public ExplicitBlock (Block parent, Location start, Location end)
@@ -2315,52 +2139,47 @@ namespace Mono.CSharp {
 			this.Explicit = this;
 		}
 
-		// <summary>
-		//   Marks a variable with name @name as being used in this or a child block.
-		//   If a variable name has been used in a child block, it's illegal to
-		//   declare a variable with the same name in the current block.
-		// </summary>
-		internal void AddKnownVariable (string name, IKnownVariable info)
-		{
-			if (known_variables == null)
-				known_variables = new Dictionary<string, IKnownVariable> ();
+		#region Properties
 
-			known_variables [name] = info;
+		public AnonymousMethodStorey AnonymousMethodStorey {
+			get {
+				return am_storey;
+			}
+		}
 
-			if (Parent != null)
-				Parent.Explicit.AddKnownVariable (name, info);
+		public bool HasCapturedThis {
+			set { flags = value ? flags | Flags.HasCapturedThis : flags & ~Flags.HasCapturedThis; }
+			get {
+				return (flags & Flags.HasCapturedThis) != 0;
+			}
 		}
 
-		public AnonymousMethodStorey AnonymousMethodStorey {
-			get { return am_storey; }
+		public bool HasCapturedVariable {
+			set { flags = value ? flags | Flags.HasCapturedVariable : flags & ~Flags.HasCapturedVariable; }
+			get {
+				return (flags & Flags.HasCapturedVariable) != 0;
+			}
 		}
 
+		#endregion
+
 		//
 		// Creates anonymous method storey in current block
 		//
 		public AnonymousMethodStorey CreateAnonymousMethodStorey (ResolveContext ec)
 		{
 			//
-			// When referencing a variable in iterator storey from children anonymous method
-			//
-			if (Toplevel.am_storey is IteratorStorey) {
-				return Toplevel.am_storey;
-			}
-
-			//
 			// An iterator has only 1 storey block
 			//
 			if (ec.CurrentIterator != null)
 			    return ec.CurrentIterator.Storey;
 
 			//
-			// Switch block does not follow sequential flow and we cannot emit
-			// storey initialization inside the block because it can be jumped over
-			// for all non-first cases. Instead we push it to the parent block to be
-			// always initialized
+			// When referencing a variable in iterator storey from children anonymous method
 			//
-			if (switch_block != null)
-				return switch_block.CreateAnonymousMethodStorey (ec);
+			if (ParametersBlock.am_storey is IteratorStorey) {
+				return ParametersBlock.am_storey;
+			}
 
 			if (am_storey == null) {
 				MemberBase mc = ec.MemberContext as MemberBase;
@@ -2376,8 +2195,10 @@ namespace Mono.CSharp {
 
 		public override void Emit (EmitContext ec)
 		{
-			if (am_storey != null)
-				am_storey.EmitStoreyInstantiation (ec);
+			if (am_storey != null) {
+				DefineAnonymousStorey (ec);
+				am_storey.EmitStoreyInstantiation (ec, this);
+			}
 
 			bool emit_debug_info = SymbolWriter.HasSymbolWriter && Parent != null && !(am_storey is IteratorStorey);
 			if (emit_debug_info)
@@ -2389,141 +2210,148 @@ namespace Mono.CSharp {
 				ec.EndScope ();
 		}
 
-		public override void EmitMeta (EmitContext ec)
+		void DefineAnonymousStorey (EmitContext ec)
 		{
 			//
 			// Creates anonymous method storey
 			//
-			if (am_storey != null) {
-				if (ec.CurrentAnonymousMethod != null && ec.CurrentAnonymousMethod.Storey != null) {
+			if (ec.CurrentAnonymousMethod != null && ec.CurrentAnonymousMethod.Storey != null) {
+				//
+				// Creates parent storey reference when hoisted this is accessible
+				//
+				if (am_storey.OriginalSourceBlock.Explicit.HasCapturedThis) {
+					ExplicitBlock parent = am_storey.OriginalSourceBlock.Explicit.Parent.Explicit;
+
 					//
-					// Creates parent storey reference when hoisted this is accessible
+					// Hoisted this exists in top-level parent storey only
 					//
-					if (am_storey.OriginalSourceBlock.Explicit.HasCapturedThis) {
-						ExplicitBlock parent = Toplevel.Parent.Explicit;
+					while (parent.am_storey == null || parent.am_storey.Parent is AnonymousMethodStorey)
+						parent = parent.Parent.Explicit;
 
-						//
-						// Hoisted this exists in top-level parent storey only
-						//
-						while (parent.am_storey == null || parent.am_storey.Parent is AnonymousMethodStorey)
-							parent = parent.Parent.Explicit;
+					am_storey.AddParentStoreyReference (ec, parent.am_storey);
+				}
 
-						am_storey.AddParentStoreyReference (ec, parent.am_storey);
-					}
+				am_storey.SetNestedStoryParent (ec.CurrentAnonymousMethod.Storey);
 
-					am_storey.SetNestedStoryParent (ec.CurrentAnonymousMethod.Storey);
+				// TODO MemberCache: Review
+				am_storey.Mutator = ec.CurrentAnonymousMethod.Storey.Mutator;
+			}
 
-					// TODO MemberCache: Review
-					am_storey.Mutator = ec.CurrentAnonymousMethod.Storey.Mutator;
-				}
+			am_storey.CreateType ();
+			if (am_storey.Mutator == null && ec.CurrentTypeParameters != null)
+				am_storey.Mutator = new TypeParameterMutator (ec.CurrentTypeParameters, am_storey.CurrentTypeParameters);
+
+			am_storey.DefineType ();
+			am_storey.ResolveTypeParameters ();
 
-				am_storey.CreateType ();
-				if (am_storey.Mutator == null && ec.CurrentTypeParameters != null)
-					am_storey.Mutator = new TypeParameterMutator (ec.CurrentTypeParameters, am_storey.CurrentTypeParameters);
-
-				am_storey.DefineType ();
-				am_storey.ResolveTypeParameters ();
-				am_storey.Define ();
-				am_storey.Parent.PartialContainer.AddCompilerGeneratedClass (am_storey);
-
-				var ref_blocks = am_storey.ReferencesFromChildrenBlock;
-				if (ref_blocks != null) {
-					foreach (ExplicitBlock ref_block in ref_blocks) {
-						for (ExplicitBlock b = ref_block.Explicit; b != this; b = b.Parent.Explicit) {
-							if (b.am_storey != null) {
-								b.am_storey.AddParentStoreyReference (ec, am_storey);
-
-								// Stop propagation inside same top block
-								if (b.Toplevel == Toplevel)
-									break;
-
-								b = b.Toplevel;
-						    }
-							b.HasCapturedVariable = true;
+			var ref_blocks = am_storey.ReferencesFromChildrenBlock;
+			if (ref_blocks != null) {
+				foreach (ExplicitBlock ref_block in ref_blocks) {
+					for (ExplicitBlock b = ref_block.Explicit; b.am_storey != am_storey; b = b.Parent.Explicit) {
+						if (b.am_storey != null) {
+							b.am_storey.AddParentStoreyReference (ec, am_storey);
+
+							// Stop propagation inside same top block
+							if (b.ParametersBlock.am_storey == ParametersBlock.am_storey)
+								break;
+
+							b = b.ParametersBlock;
 						}
+
+						b.HasCapturedVariable = true;
 					}
 				}
 			}
 
-			base.EmitMeta (ec);
+			am_storey.Define ();
+			am_storey.Parent.PartialContainer.AddCompilerGeneratedClass (am_storey);
 		}
 
-		public IKnownVariable GetKnownVariable (string name)
+		public void WrapIntoDestructor (TryFinally tf, ExplicitBlock tryBlock)
 		{
-			if (known_variables == null)
-				return null;
-
-			IKnownVariable kw;
-			known_variables.TryGetValue (name, out kw);
-			return kw;
+			tryBlock.statements = statements;
+			statements = new List<Statement> (1);
+			statements.Add (tf);
 		}
+	}
 
-		public bool HasCapturedThis
+	//
+	// ParametersBlock was introduced to support anonymous methods
+	// and lambda expressions
+	// 
+	public class ParametersBlock : ExplicitBlock
+	{
+		public class ParameterInfo : INamedBlockVariable
 		{
-			set { flags = value ? flags | Flags.HasCapturedThis : flags & ~Flags.HasCapturedThis; }
-			get { return (flags & Flags.HasCapturedThis) != 0; }
-		}
+			readonly ParametersBlock block;
+			readonly int index;
+			public VariableInfo VariableInfo;
+			bool is_locked;
 
-		public bool HasCapturedVariable
-		{
-			set { flags = value ? flags | Flags.HasCapturedVariable : flags & ~Flags.HasCapturedVariable; }
-			get { return (flags & Flags.HasCapturedVariable) != 0; }
-		}
+			public ParameterInfo (ParametersBlock block, int index)
+			{
+				this.block = block;
+				this.index = index;
+			}
 
-		protected override void CloneTo (CloneContext clonectx, Statement t)
-		{
-			ExplicitBlock target = (ExplicitBlock) t;
-			target.known_variables = null;
-			base.CloneTo (clonectx, t);
-		}
-	}
+			#region Properties
 
-	public class ToplevelParameterInfo : IKnownVariable {
-		public readonly ToplevelBlock Block;
-		public readonly int Index;
-		public VariableInfo VariableInfo;
+			public Block Block {
+				get {
+					return block;
+				}
+			}
 
-		Block IKnownVariable.Block {
-			get { return Block; }
-		}
-		public Parameter Parameter {
-			get { return Block.Parameters [Index]; }
-		}
+			public bool IsDeclared {
+				get {
+					return true;
+				}
+			}
 
-		public TypeSpec ParameterType {
-			get { return Block.Parameters.Types [Index]; }
-		}
+			public bool IsLocked {
+				get {
+					return is_locked;
+				}
+				set {
+					is_locked = value;
+				}
+			}
 
-		public Location Location {
-			get { return Parameter.Location; }
-		}
+			public Location Location {
+				get {
+					return Parameter.Location;
+				}
+			}
 
-		public ToplevelParameterInfo (ToplevelBlock block, int idx)
-		{
-			this.Block = block;
-			this.Index = idx;
+			public Parameter Parameter {
+				get {
+					return block.Parameters [index];
+				}
+			}
+
+			public TypeSpec ParameterType {
+				get {
+					return Parameter.Type;
+				}
+			}
+
+			#endregion
+
+			public Expression CreateReferenceExpression (ResolveContext rc, Location loc)
+			{
+				return new ParameterReference (this, loc);
+			}
 		}
-	}
 
-	//
-	// A toplevel block contains extra information, the split is done
-	// only to separate information that would otherwise bloat the more
-	// lightweight Block.
-	//
-	// In particular, this was introduced when the support for Anonymous
-	// Methods was implemented. 
-	// 
-	public class ToplevelBlock : ExplicitBlock
-	{
 		// 
 		// Block is converted to an expression
 		//
 		sealed class BlockScopeExpression : Expression
 		{
 			Expression child;
-			readonly ToplevelBlock block;
+			readonly ParametersBlock block;
 
-			public BlockScopeExpression (Expression child, ToplevelBlock block)
+			public BlockScopeExpression (Expression child, ParametersBlock block)
 			{
 				this.child = child;
 				this.block = block;
@@ -2538,7 +2366,7 @@ namespace Mono.CSharp {
 			{
 				if (child == null)
 					return null;
-				
+
 				child = child.Resolve (ec);
 				if (child == null)
 					return null;
@@ -2550,24 +2378,62 @@ namespace Mono.CSharp {
 
 			public override void Emit (EmitContext ec)
 			{
-				block.EmitMeta (ec);
 				block.EmitScopeInitializers (ec);
 				child.Emit (ec);
 			}
 		}
 
 		protected ParametersCompiled parameters;
-		protected ToplevelParameterInfo[] parameter_info;
-		LocalInfo this_variable;
+		protected ParameterInfo[] parameter_info;
 		bool resolved;
-		bool unreachable;
-		CompilerContext compiler;
+		protected bool unreachable;
+		protected ToplevelBlock top_block;
 
-		public HoistedVariable HoistedThisVariable;
+		public ParametersBlock (Block parent, ParametersCompiled parameters, Location start)
+			: base (parent, 0, start, start)
+		{
+			if (parameters == null)
+				throw new ArgumentNullException ("parameters");
 
-		public bool Resolved {
+			this.parameters = parameters;
+			ParametersBlock = this;
+
+			this.top_block = parent.ParametersBlock.top_block;
+			ProcessParameters ();
+		}
+
+		protected ParametersBlock (ParametersCompiled parameters, Location start)
+			: base (null, 0, start, start)
+		{
+			if (parameters == null)
+				throw new ArgumentNullException ("parameters");
+
+			this.parameters = parameters;
+			ParametersBlock = this;
+		}
+
+		protected ParametersBlock (ParametersBlock source, ParametersCompiled parameters)
+			: base (null, 0, source.StartLocation, source.EndLocation)
+		{
+			this.parameters = parameters;
+			this.statements = source.statements;
+			this.scope_initializers = source.scope_initializers;
+
+			this.resolved = true;
+			this.unreachable = source.unreachable;
+			this.am_storey = source.am_storey;
+
+			ParametersBlock = this;
+		}
+
+		#region Properties
+
+		//
+		// Block has been converted to expression tree
+		//
+		public bool IsExpressionTree {
 			get {
-				return resolved;
+				return (flags & Flags.IsExpressionTree) != 0;
 			}
 		}
 
@@ -2575,148 +2441,338 @@ namespace Mono.CSharp {
 		// The parameters for the block.
 		//
 		public ParametersCompiled Parameters {
-			get { return parameters; }
+			get {
+				return parameters;
+			}
 		}
 
-		public Report Report {
-			get { return compiler.Report; }
+		public ToplevelBlock TopBlock {
+			get {
+				return top_block;
+			}
 		}
 
-		public ToplevelBlock Container {
-			get { return Parent == null ? null : Parent.Toplevel; }
+		public bool Resolved {
+			get {
+				return resolved;
+			}
 		}
 
-		public ToplevelBlock (CompilerContext ctx, Block parent, ParametersCompiled parameters, Location start) :
-			this (ctx, parent, (Flags) 0, parameters, start)
-		{
-		}
+		#endregion
 
-		public ToplevelBlock (CompilerContext ctx, ParametersCompiled parameters, Location start) :
-			this (ctx, null, (Flags) 0, parameters, start)
+		// <summary>
+		//   Check whether all `out' parameters have been assigned.
+		// </summary>
+		public void CheckOutParameters (FlowBranching.UsageVector vector, Location loc)
 		{
+			if (vector.IsUnreachable)
+				return;
+
+			int n = parameter_info == null ? 0 : parameter_info.Length;
+
+			for (int i = 0; i < n; i++) {
+				VariableInfo var = parameter_info[i].VariableInfo;
+
+				if (var == null)
+					continue;
+
+				if (vector.IsAssigned (var, false))
+					continue;
+
+				TopBlock.Report.Error (177, loc, "The out parameter `{0}' must be assigned to before control leaves the current method",
+					var.Name);
+			}
 		}
 
-		ToplevelBlock (CompilerContext ctx, Flags flags, ParametersCompiled parameters, Location start) :
-			this (ctx, null, flags, parameters, start)
+		public override Expression CreateExpressionTree (ResolveContext ec)
 		{
+			if (statements.Count == 1) {
+				Expression expr = ((Statement) statements[0]).CreateExpressionTree (ec);
+				if (scope_initializers != null)
+					expr = new BlockScopeExpression (expr, this);
+
+				return expr;
+			}
+
+			return base.CreateExpressionTree (ec);
 		}
 
-		// We use 'Parent' to hook up to the containing block, but don't want to register the current block as a child.
-		// So, we use a two-stage setup -- first pass a null parent to the base constructor, and then override 'Parent'.
-		public ToplevelBlock (CompilerContext ctx, Block parent, Flags flags, ParametersCompiled parameters, Location start) :
-			base (null, flags, start, Location.Null)
+		public ParameterInfo GetParameterInfo (Parameter p)
 		{
-			this.compiler = ctx;
-			this.Toplevel = this;
-
-			this.parameters = parameters;
-			this.Parent = parent;
-			if (parent != null)
-				parent.AddAnonymousChild (this);
+			for (int i = 0; i < parameters.Count; ++i) {
+				if (parameters[i] == p)
+					return parameter_info[i];
+			}
 
-			if (!this.parameters.IsEmpty)
-				ProcessParameters ();
+			throw new ArgumentException ("Invalid parameter");
 		}
 
-		public ToplevelBlock (CompilerContext ctx, Location loc)
-			: this (ctx, null, (Flags) 0, ParametersCompiled.EmptyReadOnlyParameters, loc)
+		public Expression GetParameterReference (int index, Location loc)
 		{
+			return new ParameterReference (parameter_info[index], loc);
 		}
 
-		protected override void CloneTo (CloneContext clonectx, Statement t)
+		protected void ProcessParameters ()
 		{
-			base.CloneTo (clonectx, t);
+			if (parameters.Count == 0)
+				return;
 
-			if (parameters.Count != 0) {
-				ToplevelBlock target = (ToplevelBlock) t;
+			parameter_info = new ParameterInfo[parameters.Count];
+			for (int i = 0; i < parameter_info.Length; ++i) {
+				var p = parameters.FixedParameters[i];
+				if (p == null)
+					continue;
 
-				target.parameter_info = new ToplevelParameterInfo[parameters.Count];
-				for (int i = 0; i < parameters.Count; ++i)
-					target.parameter_info[i] = new ToplevelParameterInfo (target, i);
+				// TODO: Should use Parameter only and more block there
+				parameter_info[i] = new ParameterInfo (this, i);
+				AddLocalName (p.Name, parameter_info[i]);
 			}
 		}
 
-		public bool CheckError158 (string name, Location loc)
+		public bool Resolve (FlowBranching parent, BlockContext rc, IMethodData md)
 		{
-			if (AnonymousChildren != null) {
-				foreach (ToplevelBlock child in AnonymousChildren) {
-					if (!child.CheckError158 (name, loc))
+			if (resolved)
+				return true;
+
+			resolved = true;
+
+			if (rc.HasSet (ResolveContext.Options.ExpressionTreeConversion))
+				flags |= Flags.IsExpressionTree;
+
+			try {
+				ResolveMeta (rc);
+
+				using (rc.With (ResolveContext.Options.DoFlowAnalysis, true)) {
+					FlowBranchingToplevel top_level = rc.StartFlowBranching (this, parent);
+
+					if (!Resolve (rc))
 						return false;
+
+					unreachable = top_level.End ();
+				}
+			} catch (Exception e) {
+				if (e is CompletionResult || rc.Report.IsDisabled)
+					throw;
+
+				if (rc.CurrentBlock != null) {
+					rc.Report.Error (584, rc.CurrentBlock.StartLocation, "Internal compiler error: {0}", e.Message);
+				} else {
+					rc.Report.Error (587, "Internal compiler error: {0}", e.Message);
 				}
+
+				if (Report.DebugFlags > 0)
+					throw;
 			}
 
-			for (ToplevelBlock c = Container; c != null; c = c.Container) {
-				if (!c.DoCheckError158 (name, loc))
+			if (rc.ReturnType != TypeManager.void_type && !unreachable) {
+				if (rc.CurrentAnonymousMethod == null) {
+					// FIXME: Missing FlowAnalysis for generated iterator MoveNext method
+					if (md is IteratorMethod) {
+						unreachable = true;
+					} else {
+						rc.Report.Error (161, md.Location, "`{0}': not all code paths return a value", md.GetSignatureForError ());
+						return false;
+					}
+				} else {
+					rc.Report.Error (1643, rc.CurrentAnonymousMethod.Location, "Not all code paths return a value in anonymous method of type `{0}'",
+							  rc.CurrentAnonymousMethod.GetSignatureForError ());
 					return false;
+				}
 			}
 
 			return true;
 		}
 
-		void ProcessParameters ()
+		void ResolveMeta (BlockContext ec)
 		{
-			int n = parameters.Count;
-			parameter_info = new ToplevelParameterInfo [n];
-			ToplevelBlock top_parent = Parent == null ? null : Parent.Toplevel;
-			for (int i = 0; i < n; ++i) {
-				parameter_info [i] = new ToplevelParameterInfo (this, i);
+			int orig_count = parameters.Count;
 
-				var p = parameters.FixedParameters [i];
-				if (p == null)
+			for (int i = 0; i < orig_count; ++i) {
+				Parameter.Modifier mod = parameters.FixedParameters[i].ModFlags;
+
+				if ((mod & Parameter.Modifier.OUT) != Parameter.Modifier.OUT)
 					continue;
 
-				string name = p.Name;
-				if (CheckParentConflictName (top_parent, name, loc))
-					AddKnownVariable (name, parameter_info [i]);
+				VariableInfo vi = new VariableInfo (parameters, i, ec.FlowOffset);
+				parameter_info[i].VariableInfo = vi;
+				ec.FlowOffset += vi.Length;
 			}
-
-			// mark this block as "used" so that we create local declarations in a sub-block
-			// FIXME: This appears to uncover a lot of bugs
-			//this.Use ();
 		}
 
-		bool DoCheckError158 (string name, Location loc)
+		public void WrapIntoIterator (IMethodData method, TypeContainer host, TypeSpec iterator_type, bool is_enumerable)
 		{
-			LabeledStatement s = LookupLabel (name);
-			if (s != null) {
-				Report.SymbolRelatedToPreviousError (s.loc, s.Name);
-				Error_158 (name, loc);
-				return false;
-			}
+			ParametersBlock pb = new ParametersBlock (this, ParametersCompiled.EmptyReadOnlyParameters, StartLocation);
+			pb.EndLocation = EndLocation;
+			pb.statements = statements;
 
-			return true;
+			var iterator = new Iterator (pb, method, host, iterator_type, is_enumerable);
+			am_storey = new IteratorStorey (iterator);
+
+			statements = new List<Statement> (1);
+			AddStatement (new Return (iterator, iterator.Location));
 		}
+	}
 
-		public override Expression CreateExpressionTree (ResolveContext ec)
+	//
+	//
+	//
+	public class ToplevelBlock : ParametersBlock
+	{
+		LocalVariable this_variable;
+		CompilerContext compiler;
+		Dictionary<string, object> names;
+		Dictionary<string, object> labels;
+
+		public HoistedVariable HoistedThisVariable;
+
+		public Report Report {
+			get { return compiler.Report; }
+		}
+
+		public ToplevelBlock (CompilerContext ctx, Location loc)
+			: this (ctx, ParametersCompiled.EmptyReadOnlyParameters, loc)
 		{
-			if (statements.Count == 1) {
-				Expression expr = ((Statement) statements[0]).CreateExpressionTree (ec);
-				if (scope_initializers != null)
-					expr = new BlockScopeExpression (expr, this);
+		}
 
-				return expr;
-			}
+		public ToplevelBlock (CompilerContext ctx, ParametersCompiled parameters, Location start)
+			: base (parameters, start)
+		{
+			this.compiler = ctx;
+			top_block = this;
 
-			return base.CreateExpressionTree (ec);
+			ProcessParameters ();
 		}
 
 		//
-		// Reformats this block to be top-level iterator block
+		// Recreates a top level block from parameters block. Used for
+		// compiler generated methods where the original block comes from
+		// explicit child block. This works for already resolved blocks
+		// only to ensure we resolve them in the correct flow order
 		//
-		public IteratorStorey ChangeToIterator (Iterator iterator, ToplevelBlock source)
+		public ToplevelBlock (ParametersBlock source, ParametersCompiled parameters)
+			: base (source, parameters)
 		{
-			IsIterator = true;
+			this.compiler = source.TopBlock.compiler;
+			top_block = this;
+		}
+
+		public override void AddLocalName (string name, INamedBlockVariable li)
+		{
+			if (names == null)
+				names = new Dictionary<string, object> ();
+
+			object value;
+			if (!names.TryGetValue (name, out value)) {
+				names.Add (name, li);
+				return;
+			}
 
-			// Creates block with original statements
-			AddStatement (new IteratorStatement (iterator, new Block (this, source)));
+			INamedBlockVariable existing = value as INamedBlockVariable;
+			List<INamedBlockVariable> existing_list;
+			if (existing != null) {
+				existing_list = new List<INamedBlockVariable> ();
+				existing_list.Add (existing);
+				names[name] = existing_list;
+			} else {
+				existing_list = (List<INamedBlockVariable>) value;
+			}
+
+			//
+			// A collision checking between local names
+			//
+			for (int i = 0; i < existing_list.Count; ++i) {
+				existing = existing_list[i];
+				Block b = existing.Block;
+
+				// Collision at same level
+				if (li.Block == b) {
+					li.Block.Error_AlreadyDeclared (name, li);
+					break;
+				}
+
+				// Collision with parent
+				b = li.Block;
+				while ((b = b.Parent) != null) {
+					if (existing.Block == b) {
+						li.Block.Error_AlreadyDeclared (name, li, "parent or current");
+						i = existing_list.Count;
+						break;
+					}
+				}
 
-			source.statements = new List<Statement> (1);
-			source.AddStatement (new Return (iterator, iterator.Location));
-			source.IsIterator = false;
+				// Collision with with children
+				b = existing.Block;
+				while ((b = b.Parent) != null) {
+					if (li.Block == b) {
+						li.Block.Error_AlreadyDeclared (name, li, "child");
+						i = existing_list.Count;
+						break;
+					}
+				}
+			}
 
-			IteratorStorey iterator_storey = new IteratorStorey (iterator);
-			source.am_storey = iterator_storey;
-			return iterator_storey;
+			existing_list.Add (li);
+		}
+
+		public void AddLabel (string name, LabeledStatement label)
+		{
+			if (labels == null)
+				labels = new Dictionary<string, object> ();
+
+			object value;
+			if (!labels.TryGetValue (name, out value)) {
+				labels.Add (name, label);
+				return;
+			}
+
+			LabeledStatement existing = value as LabeledStatement;
+			List<LabeledStatement> existing_list;
+			if (existing != null) {
+				existing_list = new List<LabeledStatement> ();
+				existing_list.Add (existing);
+				labels[name] = existing_list;
+			} else {
+				existing_list = (List<LabeledStatement>) value;
+			}
+
+			//
+			// A collision checking between labels
+			//
+			for (int i = 0; i < existing_list.Count; ++i) {
+				existing = existing_list[i];
+				Block b = existing.Block;
+
+				// Collision at same level
+				if (label.Block == b) {
+					Report.SymbolRelatedToPreviousError (existing.loc, name);
+					Report.Error (140, label.loc, "The label `{0}' is a duplicate", name);
+					break;
+				}
+
+				// Collision with parent
+				b = label.Block;
+				while ((b = b.Parent) != null) {
+					if (existing.Block == b) {
+						Report.Error (158, label.loc,
+							"The label `{0}' shadows another label by the same name in a contained scope", name);
+						i = existing_list.Count;
+						break;
+					}
+				}
+
+				// Collision with with children
+				b = existing.Block;
+				while ((b = b.Parent) != null) {
+					if (label.Block == b) {
+						Report.Error (158, label.loc,
+							"The label `{0}' shadows another label by the same name in a contained scope", name);
+						i = existing_list.Count;
+						break;
+					}
+				}
+			}
+
+			existing_list.Add (label);
 		}
 
 		//
@@ -2727,7 +2783,7 @@ namespace Mono.CSharp {
 			int count = parameters.Count;
 			Arguments args = new Arguments (count);
 			for (int i = 0; i < count; ++i) {
-				var arg_expr = new ParameterReference (parameter_info[i], parameter_info[i].Location);
+				var arg_expr = GetParameterReference (i, parameter_info[i].Location);
 				args.Add (new Argument (arg_expr));
 			}
 
@@ -2735,50 +2791,105 @@ namespace Mono.CSharp {
 		}
 
 		//
-		// Returns a parameter reference expression for the given name,
-		// or null if there is no such parameter
+		// Lookup inside a block, the returned value can represent 3 states
+		//
+		// true+variable: A local name was found and it's valid
+		// false+variable: A local name was found in a child block only
+		// false+null: No local name was found
 		//
-		public Expression GetParameterReference (string name, Location loc)
+		public bool GetLocalName (string name, Block block, ref INamedBlockVariable variable)
 		{
-			for (ToplevelBlock t = this; t != null; t = t.Container) {
-				if (t.parameters.IsEmpty)
-					continue;
+			if (names == null)
+				return false;
+
+			object value;
+			if (!names.TryGetValue (name, out value))
+				return false;
+
+			variable = value as INamedBlockVariable;
+			Block b = block;
+			if (variable != null) {
+				do {
+					if (variable.Block == b.Original)
+						return true;
+
+					b = b.Parent;
+				} while (b != null);
+
+				b = variable.Block;
+				do {
+					if (block == b)
+						return false;
+
+					b = b.Parent;
+				} while (b != null);
+			} else {
+				List<INamedBlockVariable> list = (List<INamedBlockVariable>) value;
+				for (int i = 0; i < list.Count; ++i) {
+					variable = list[i];
+					do {
+						if (variable.Block == b.Original)
+							return true;
+
+						b = b.Parent;
+					} while (b != null);
+
+					b = variable.Block;
+					do {
+						if (block == b)
+							return false;
+
+						b = b.Parent;
+					} while (b != null);
 
-				Expression expr = t.GetParameterReferenceExpression (name, loc);
-				if (expr != null)
-					return expr;
+					b = block;
+				}
 			}
 
-			return null;
+			variable = null;
+			return false;
 		}
 
-		protected virtual Expression GetParameterReferenceExpression (string name, Location loc)
+		public LabeledStatement GetLabel (string name, Block block)
 		{
-			int idx = parameters.GetParameterIndexByName (name);
-			return idx < 0 ?
-				null : new ParameterReference (parameter_info [idx], loc);
-		}
+			if (labels == null)
+				return null;
 
-		public ToplevelBlock CheckParameterNameConflict (string name)
-		{
-			for (ToplevelBlock t = this; t != null; t = t.Container) {
-				if (t.HasParameterWithName (name))
-					return t;
+			object value;
+			if (!labels.TryGetValue (name, out value)) {
+				return null;
 			}
 
-			return null;
-		}
+			var label = value as LabeledStatement;
+			Block b = block;
+			if (label != null) {
+				if (label.Block == b.Original)
+					return label;
 
-		protected virtual bool HasParameterWithName (string name)
-		{
-			return parameters.GetParameterIndexByName (name) >= 0;
+				// TODO: Temporary workaround for the switch block implicit label block
+				if (label.Block.IsCompilerGenerated && label.Block.Parent == b.Original)
+					return label;
+			} else {
+				List<LabeledStatement> list = (List<LabeledStatement>) value;
+				for (int i = 0; i < list.Count; ++i) {
+					label = list[i];
+					if (label.Block == b.Original)
+						return label;
+
+					// TODO: Temporary workaround for the switch block implicit label block
+					if (label.Block.IsCompilerGenerated && label.Block.Parent == b.Original)
+						return label;
+				}
+			}
+				
+			return null;
 		}
 
 		// <summary>
 		//   Returns the "this" instance variable of this block.
 		//   See AddThisVariable() for more information.
 		// </summary>
-		public LocalInfo ThisVariable {
+		public LocalVariable ThisVariable {
 			get { return this_variable; }
 		}
 
@@ -2789,14 +2900,12 @@ namespace Mono.CSharp {
 		//   analysis code to ensure that it's been fully initialized before control
 		//   leaves the constructor.
 		// </summary>
-		public LocalInfo AddThisVariable (TypeContainer ds, Location l)
+		public LocalVariable AddThisVariable (BlockContext bc, TypeContainer ds, Location l)
 		{
 			if (this_variable == null) {
-				this_variable = new LocalInfo (ds, this, l);
-				this_variable.Used = true;
-				this_variable.IsThis = true;
-
-				Variables.Add ("this", this_variable);
+				this_variable = new LocalVariable (this, "this", LocalVariable.Flags.IsThis | LocalVariable.Flags.Used, l);
+				this_variable.Type = ds.CurrentType;
+				this_variable.PrepareForFlowAnalysis (bc);
 			}
 
 			return this_variable;
@@ -2807,122 +2916,11 @@ namespace Mono.CSharp {
 			set { flags = value ? flags | Flags.IsIterator : flags & ~Flags.IsIterator; }
 		}
 
-		//
-		// Block has been converted to expression tree
-		//
-		public bool IsExpressionTree {
-			get { return (flags & Flags.IsExpressionTree) != 0; }
-		}
-
 		public bool IsThisAssigned (BlockContext ec)
 		{
 			return this_variable == null || this_variable.IsThisAssigned (ec, this);
 		}
 
-		public bool Resolve (FlowBranching parent, BlockContext rc, ParametersCompiled ip, IMethodData md)
-		{
-			if (resolved)
-				return true;
-
-			resolved = true;
-
-			if (rc.HasSet (ResolveContext.Options.ExpressionTreeConversion))
-				flags |= Flags.IsExpressionTree;
-
-			try {
-				if (!ResolveMeta (rc, ip))
-					return false;
-
-				using (rc.With (ResolveContext.Options.DoFlowAnalysis, true)) {
-					FlowBranchingToplevel top_level = rc.StartFlowBranching (this, parent);
-
-					if (!Resolve (rc))
-						return false;
-
-					unreachable = top_level.End ();
-				}
-			} catch (Exception e) {
-				if (e is CompletionResult || rc.Report.IsDisabled)
-					throw;
-
-				if (rc.CurrentBlock != null) {
-					rc.Report.Error (584, rc.CurrentBlock.StartLocation, "Internal compiler error: {0}", e.Message);
-				} else {
-					rc.Report.Error (587, "Internal compiler error: {0}", e.Message);
-				}
-
-				if (Report.DebugFlags > 0)
-					throw;
-			}
-
-			if (rc.ReturnType != TypeManager.void_type && !unreachable) {
-				if (rc.CurrentAnonymousMethod == null) {
-					rc.Report.Error (161, md.Location, "`{0}': not all code paths return a value", md.GetSignatureForError ());
-					return false;
-				} else if (!rc.CurrentAnonymousMethod.IsIterator) {
-					rc.Report.Error (1643, rc.CurrentAnonymousMethod.Location, "Not all code paths return a value in anonymous method of type `{0}'",
-							  rc.CurrentAnonymousMethod.GetSignatureForError ());
-					return false;
-				}
-			}
-
-			return true;
-		}
-
-		bool ResolveMeta (BlockContext ec, ParametersCompiled ip)
-		{
-			int errors = ec.Report.Errors;
-			int orig_count = parameters.Count;
-
-			if (ip != null)
-				parameters = ip;
-
-			// Assert: orig_count != parameter.Count => orig_count == 0
-			if (orig_count != 0 && orig_count != parameters.Count)
-				throw new InternalErrorException ("parameter information mismatch");
-
-			int offset = Parent == null ? 0 : Parent.AssignableSlots;
-
-			for (int i = 0; i < orig_count; ++i) {
-				Parameter.Modifier mod = parameters.FixedParameters [i].ModFlags;
-
-				if ((mod & Parameter.Modifier.OUT) != Parameter.Modifier.OUT)
-					continue;
-
-				VariableInfo vi = new VariableInfo (ip, i, offset);
-				parameter_info [i].VariableInfo = vi;
-				offset += vi.Length;
-			}
-
-			ResolveMeta (ec, offset);
-
-			return ec.Report.Errors == errors;
-		}
-
-		// <summary>
-		//   Check whether all `out' parameters have been assigned.
-		// </summary>
-		public void CheckOutParameters (FlowBranching.UsageVector vector, Location loc)
-		{
-			if (vector.IsUnreachable)
-				return;
-
-			int n = parameter_info == null ? 0 : parameter_info.Length;
-
-			for (int i = 0; i < n; i++) {
-				VariableInfo var = parameter_info [i].VariableInfo;
-
-				if (var == null)
-					continue;
-
-				if (vector.IsAssigned (var, false))
-					continue;
-
-				Report.Error (177, loc, "The out parameter `{0}' must be assigned to before control leaves the current method",
-					var.Name);
-			}
-		}
-
 		public override void Emit (EmitContext ec)
 		{
 			if (Report.Errors > 0)
@@ -2931,8 +2929,6 @@ namespace Mono.CSharp {
 #if PRODUCTION
 			try {
 #endif
-			EmitMeta (ec);
-
 			if (ec.HasReturnLabel)
 				ec.ReturnLabel = ec.DefineLabel ();
 
@@ -2978,15 +2974,6 @@ namespace Mono.CSharp {
 #endif
 		}
 
-		public override void EmitMeta (EmitContext ec)
-		{
-			// Avoid declaring an IL variable for this_variable since it is not accessed
-			// from the generated IL
-			if (this_variable != null)
-				Variables.Remove ("this");
-			base.EmitMeta (ec);
-		}
-
 		protected override void EmitSymbolInfo (EmitContext ec)
 		{
 			AnonymousExpression ae = ec.CurrentAnonymousMethod;
@@ -3103,12 +3090,14 @@ namespace Mono.CSharp {
 
 		public SwitchLabel Clone (CloneContext clonectx)
 		{
+			if (label == null)
+				return this;
+
 			return new SwitchLabel (label.Clone (clonectx), loc);
 		}
 	}
 
 	public class SwitchSection {
-		// An array of SwitchLabels.
 		public readonly List<SwitchLabel> Labels;
 		public readonly Block Block;
 		
@@ -3122,7 +3111,7 @@ namespace Mono.CSharp {
 		{
 			var cloned_labels = new List<SwitchLabel> ();
 
-			foreach (SwitchLabel sl in cloned_labels)
+			foreach (SwitchLabel sl in Labels)
 				cloned_labels.Add (sl.Clone (clonectx));
 			
 			return new SwitchSection (cloned_labels, clonectx.LookupBlock (Block));
@@ -3157,6 +3146,7 @@ namespace Mono.CSharp {
 		ExpressionStatement string_dictionary;
 		FieldExpr switch_cache_field;
 		static int unique_counter;
+		ExplicitBlock block;
 
 		//
 		// Nullable Types support
@@ -3173,13 +3163,20 @@ namespace Mono.CSharp {
 		//
 		static TypeSpec [] allowed_types;
 
-		public Switch (Expression e, List<SwitchSection> sects, Location l)
+		public Switch (Expression e, ExplicitBlock block, List<SwitchSection> sects, Location l)
 		{
 			Expr = e;
+			this.block = block;
 			Sections = sects;
 			loc = l;
 		}
 
+		public ExplicitBlock Block {
+			get {
+				return block;
+			}
+		}
+
 		public bool GotDefault {
 			get {
 				return default_section != null;
@@ -3829,6 +3826,12 @@ namespace Mono.CSharp {
 		
 		protected override void DoEmit (EmitContext ec)
 		{
+			//
+			// Needed to emit anonymous storey initialization
+			// Otherwise it does not contain any statements for now
+			//
+			block.Emit (ec);
+
 			default_target = ec.DefineLabel ();
 			null_target = ec.DefineLabel ();
 
@@ -3923,6 +3926,25 @@ namespace Mono.CSharp {
 		Iterator iter;
 		List<ResumableStatement> resume_points;
 		int first_resume_pc;
+		protected Statement stmt;
+		Label dispose_try_block;
+		bool prepared_for_dispose, emitted_dispose;
+
+		protected ExceptionStatement (Statement stmt, Location loc)
+		{
+			this.stmt = stmt;
+			this.loc = loc;
+		}
+
+		#region Properties
+
+		public Statement Statement {
+			get {
+				return stmt;
+			}
+		}
+
+		#endregion
 
 		protected abstract void EmitPreTryBody (EmitContext ec);
 		protected abstract void EmitTryBody (EmitContext ec);
@@ -3950,7 +3972,7 @@ namespace Mono.CSharp {
 
 				Label [] labels = new Label [resume_points.Count];
 				for (int i = 0; i < resume_points.Count; ++i)
-					labels [i] = ((ResumableStatement) resume_points [i]).PrepareForEmit (ec);
+					labels [i] = resume_points [i].PrepareForEmit (ec);
 				ec.Emit (OpCodes.Switch, labels);
 			}
 
@@ -4000,8 +4022,6 @@ namespace Mono.CSharp {
 			resume_points.Add (stmt);
 		}
 
-		Label dispose_try_block;
-		bool prepared_for_dispose, emitted_dispose;
 		public override Label PrepareForDispose (EmitContext ec, Label end)
 		{
 			if (!prepared_for_dispose) {
@@ -4074,14 +4094,13 @@ namespace Mono.CSharp {
 
 	public class Lock : ExceptionStatement {
 		Expression expr;
-		public Statement Statement;
-		TemporaryVariable temp;
+		TemporaryVariableReference expr_copy;
+		TemporaryVariableReference lock_taken;
 			
-		public Lock (Expression expr, Statement stmt, Location l)
+		public Lock (Expression expr, Statement stmt, Location loc)
+			: base (stmt, loc)
 		{
 			this.expr = expr;
-			Statement = stmt;
-			loc = l;
 		}
 
 		public override bool Resolve (BlockContext ec)
@@ -4092,47 +4111,132 @@ namespace Mono.CSharp {
 
 			if (!TypeManager.IsReferenceType (expr.Type)){
 				ec.Report.Error (185, loc,
-					      "`{0}' is not a reference type as required by the lock statement",
-					      TypeManager.CSharpName (expr.Type));
-				return false;
+					"`{0}' is not a reference type as required by the lock statement",
+					expr.Type.GetSignatureForError ());
+			}
+
+			if (expr.Type.IsGenericParameter) {
+				expr = Convert.ImplicitTypeParameterConversion (expr, TypeManager.object_type);
+			}
+
+			VariableReference lv = expr as VariableReference;
+			bool locked;
+			if (lv != null) {
+				locked = lv.IsLockedByStatement;
+				lv.IsLockedByStatement = true;
+			} else {
+				lv = null;
+				locked = false;
 			}
 
 			ec.StartFlowBranching (this);
-			bool ok = Statement.Resolve (ec);
+			Statement.Resolve (ec);
 			ec.EndFlowBranching ();
 
-			ok &= base.Resolve (ec);
+			if (lv != null) {
+				lv.IsLockedByStatement = locked;
+			}
 
-			temp = new TemporaryVariable (expr.Type, loc);
-			temp.Resolve (ec);
+			base.Resolve (ec);
 
-			if (TypeManager.void_monitor_enter_object == null || TypeManager.void_monitor_exit_object == null) {
-				TypeSpec monitor_type = TypeManager.CoreLookupType (ec.Compiler, "System.Threading", "Monitor", MemberKind.Class, true);
-				TypeManager.void_monitor_enter_object = TypeManager.GetPredefinedMethod (
-					monitor_type, "Enter", loc, TypeManager.object_type);
-				TypeManager.void_monitor_exit_object = TypeManager.GetPredefinedMethod (
-					monitor_type, "Exit", loc, TypeManager.object_type);
+			//
+			// Have to keep original lock value around to unlock same location
+			// in the case the original has changed or is null
+			//
+			expr_copy = TemporaryVariableReference.Create (TypeManager.object_type, ec.CurrentBlock.Parent, loc);
+			expr_copy.Resolve (ec);
+
+			//
+			// Ensure Monitor methods are available
+			//
+			if (ResolvePredefinedMethods (ec) > 1) {
+				lock_taken = TemporaryVariableReference.Create (TypeManager.bool_type, ec.CurrentBlock.Parent, loc);
+				lock_taken.Resolve (ec);
 			}
-			
-			return ok;
+
+			return true;
 		}
 		
 		protected override void EmitPreTryBody (EmitContext ec)
 		{
-			temp.EmitAssign (ec, expr);
-			temp.Emit (ec);
-			ec.Emit (OpCodes.Call, TypeManager.void_monitor_enter_object);
+			expr_copy.EmitAssign (ec, expr);
+
+			if (lock_taken != null) {
+				//
+				// Initialize ref variable
+				//
+				lock_taken.EmitAssign (ec, new BoolLiteral (false, loc));
+			} else {
+				//
+				// Monitor.Enter (expr_copy)
+				//
+				expr_copy.Emit (ec);
+				ec.Emit (OpCodes.Call, TypeManager.void_monitor_enter_object);
+			}
 		}
 
 		protected override void EmitTryBody (EmitContext ec)
 		{
+			//
+			// Monitor.Enter (expr_copy, ref lock_taken)
+			//
+			if (lock_taken != null) {
+				expr_copy.Emit (ec);
+				lock_taken.LocalInfo.CreateBuilder (ec);
+				lock_taken.AddressOf (ec, AddressOp.Load);
+				ec.Emit (OpCodes.Call, TypeManager.void_monitor_enter_object);
+			}
+
 			Statement.Emit (ec);
 		}
 
 		protected override void EmitFinallyBody (EmitContext ec)
 		{
-			temp.Emit (ec);
+			//
+			// if (lock_taken) Monitor.Exit (expr_copy)
+			//
+			Label skip = ec.DefineLabel ();
+
+			if (lock_taken != null) {
+				lock_taken.Emit (ec);
+				ec.Emit (OpCodes.Brfalse_S, skip);
+			}
+
+			expr_copy.Emit (ec);
 			ec.Emit (OpCodes.Call, TypeManager.void_monitor_exit_object);
+			ec.MarkLabel (skip);
+		}
+
+		int ResolvePredefinedMethods (ResolveContext rc)
+		{
+			if (TypeManager.void_monitor_enter_object == null || TypeManager.void_monitor_exit_object == null) {
+				TypeSpec monitor_type = rc.Module.PredefinedTypes.Monitor.Resolve (loc);
+
+				if (monitor_type == null)
+					return 0;
+
+				// Try 4.0 Monitor.Enter (object, ref bool) overload first
+				var filter = MemberFilter.Method ("Enter", 0, new ParametersImported (
+					new[] {
+							new ParameterData (null, Parameter.Modifier.NONE),
+							new ParameterData (null, Parameter.Modifier.REF)
+						},
+					new[] {
+							TypeManager.object_type,
+							TypeManager.bool_type
+						}, false), null);
+
+				TypeManager.void_monitor_enter_object = TypeManager.GetPredefinedMethod (monitor_type, filter, true, loc);
+				if (TypeManager.void_monitor_enter_object == null) {
+					TypeManager.void_monitor_enter_object = TypeManager.GetPredefinedMethod (
+						monitor_type, "Enter", loc, TypeManager.object_type);
+				}
+
+				TypeManager.void_monitor_exit_object = TypeManager.GetPredefinedMethod (
+					monitor_type, "Exit", loc, TypeManager.object_type);
+			}
+
+			return TypeManager.void_monitor_enter_object.Parameters.Count;
 		}
 
 		protected override void CloneTo (CloneContext clonectx, Statement t)
@@ -4140,7 +4244,7 @@ namespace Mono.CSharp {
 			Lock target = (Lock) t;
 
 			target.expr = expr.Clone (clonectx);
-			target.Statement = Statement.Clone (clonectx);
+			target.stmt = Statement.Clone (clonectx);
 		}
 	}
 
@@ -4239,40 +4343,37 @@ namespace Mono.CSharp {
 	// 
 	// Fixed statement
 	//
-	public class Fixed : Statement {
-		Expression type;
-		List<KeyValuePair<LocalInfo, Expression>> declarators;
-		Statement statement;
-		TypeSpec expr_type;
-		Emitter[] data;
-		bool has_ret;
-
-		abstract class Emitter
+	public class Fixed : Statement
+	{
+		abstract class Emitter : ShimExpression
 		{
-			protected LocalInfo vi;
-			protected Expression converted;
+			protected LocalVariable vi;
 
-			protected Emitter (Expression expr, LocalInfo li)
+			protected Emitter (Expression expr, LocalVariable li)
+				: base (expr)
 			{
-				converted = expr;
 				vi = li;
 			}
 
-			public abstract void Emit (EmitContext ec);
 			public abstract void EmitExit (EmitContext ec);
 		}
 
 		class ExpressionEmitter : Emitter {
-			public ExpressionEmitter (Expression converted, LocalInfo li) :
+			public ExpressionEmitter (Expression converted, LocalVariable li) :
 				base (converted, li)
 			{
 			}
 
+			protected override Expression DoResolve (ResolveContext rc)
+			{
+				throw new NotImplementedException ();
+			}
+
 			public override void Emit (EmitContext ec) {
 				//
 				// Store pointer in pinned location
 				//
-				converted.Emit (ec);
+				expr.Emit (ec);
 				vi.EmitAssign (ec);
 			}
 
@@ -4286,32 +4387,39 @@ namespace Mono.CSharp {
 
 		class StringEmitter : Emitter
 		{
-			LocalInfo pinned_string;
+			LocalVariable pinned_string;
 
-			public StringEmitter (Expression expr, LocalInfo li, Location loc):
-				base (expr, li)
+			public StringEmitter (Expression expr, LocalVariable li, Location loc)
+				: base (expr, li)
 			{
-				pinned_string = new LocalInfo (new TypeExpression (TypeManager.string_type, loc), null, null, loc);
-				pinned_string.Pinned = true;
 			}
 
-			public StringEmitter Resolve (ResolveContext rc)
+			protected override Expression DoResolve (ResolveContext rc)
 			{
-				pinned_string.Resolve (rc);
+				pinned_string = new LocalVariable (vi.Block, "$pinned",
+					LocalVariable.Flags.FixedVariable | LocalVariable.Flags.CompilerGenerated | LocalVariable.Flags.Used,
+					vi.Location);
+
+				pinned_string.Type = TypeManager.string_type;
 
 				if (TypeManager.int_get_offset_to_string_data == null) {
-					TypeManager.int_get_offset_to_string_data = TypeManager.GetPredefinedProperty (
-						TypeManager.runtime_helpers_type, "OffsetToStringData", pinned_string.Location, TypeManager.int32_type);
+					var helper = rc.Module.PredefinedTypes.RuntimeHelpers.Resolve (loc);
+					if (helper != null) {
+						TypeManager.int_get_offset_to_string_data = TypeManager.GetPredefinedProperty (helper,
+							"OffsetToStringData", pinned_string.Location, TypeManager.int32_type);
+					}
 				}
 
+				eclass = ExprClass.Variable;
+				type = TypeManager.int32_type;
 				return this;
 			}
 
 			public override void Emit (EmitContext ec)
 			{
-				pinned_string.ResolveVariable (ec);
+				pinned_string.CreateBuilder (ec);
 
-				converted.Emit (ec);
+				expr.Emit (ec);
 				pinned_string.EmitAssign (ec);
 
 				// TODO: Should use Binary::Add
@@ -4333,49 +4441,20 @@ namespace Mono.CSharp {
 			}
 		}
 
-		public Fixed (Expression type, List<KeyValuePair<LocalInfo, Expression>> decls, Statement stmt, Location l)
-		{
-			this.type = type;
-			declarators = decls;
-			statement = stmt;
-			loc = l;
-		}
-
-		public Statement Statement {
-			get { return statement; }
-		}
-
-		public override bool Resolve (BlockContext ec)
+		public class VariableDeclaration : BlockVariableDeclaration
 		{
-			if (!ec.IsUnsafe){
-				Expression.UnsafeError (ec, loc);
-				return false;
-			}
-			
-			TypeExpr texpr = type.ResolveAsContextualType (ec, false);
-			if (texpr == null) {
-				if (type is VarExpr)
-					ec.Report.Error (821, type.Location, "A fixed statement cannot use an implicitly typed local variable");
-
-				return false;
+			public VariableDeclaration (FullNamedExpression type, LocalVariable li)
+				: base (type, li)
+			{
 			}
 
-			expr_type = texpr.Type;
-
-			data = new Emitter [declarators.Count];
-
-			if (!expr_type.IsPointer){
-				ec.Report.Error (209, loc, "The type of locals declared in a fixed statement must be a pointer type");
-				return false;
-			}
-			
-			int i = 0;
-			foreach (var p in declarators){
-				LocalInfo vi = p.Key;
-				Expression e = p.Value;
-				
-				vi.VariableInfo.SetAssigned (ec);
-				vi.SetReadOnlyContext (LocalInfo.ReadOnlyContext.Fixed);
+			protected override Expression ResolveInitializer (BlockContext bc, LocalVariable li, Expression initializer)
+			{
+				if (!Variable.Type.IsPointer && li == Variable) {
+					bc.Report.Error (209, TypeExpression.Location,
+						"The type of locals declared in a fixed statement must be a pointer type");
+					return null;
+				}
 
 				//
 				// The rules for the possible declarators are pretty wise,
@@ -4388,88 +4467,119 @@ namespace Mono.CSharp {
 				// is present, so we need to test for this particular case.
 				//
 
-				if (e is Cast){
-					ec.Report.Error (254, loc, "The right hand side of a fixed statement assignment may not be a cast expression");
-					return false;
+				if (initializer is Cast) {
+					bc.Report.Error (254, initializer.Location, "The right hand side of a fixed statement assignment may not be a cast expression");
+					return null;
 				}
 
-				using (ec.Set (ResolveContext.Options.FixedInitializerScope)) {
-					e = e.Resolve (ec);
-				}
+				initializer = initializer.Resolve (bc);
 
-				if (e == null)
-					return false;
+				if (initializer == null)
+					return null;
 
 				//
-				// Case 2: Array
+				// Case 1: Array
 				//
-				if (e.Type.IsArray){
-					TypeSpec array_type = TypeManager.GetElementType (e.Type);
-					
+				if (initializer.Type.IsArray) {
+					TypeSpec array_type = TypeManager.GetElementType (initializer.Type);
+
 					//
 					// Provided that array_type is unmanaged,
 					//
-					if (!TypeManager.VerifyUnmanaged (ec.Compiler, array_type, loc))
-						return false;
+					if (!TypeManager.VerifyUnmanaged (bc.Compiler, array_type, loc))
+						return null;
 
 					//
 					// and T* is implicitly convertible to the
 					// pointer type given in the fixed statement.
 					//
-					ArrayPtr array_ptr = new ArrayPtr (e, array_type, loc);
-					
+					ArrayPtr array_ptr = new ArrayPtr (initializer, array_type, loc);
+
 					Expression converted = Convert.ImplicitConversionRequired (
-						ec, array_ptr, vi.VariableType, loc);
+						bc, array_ptr, li.Type, loc);
 					if (converted == null)
-						return false;
-					
+						return null;
+
 					//
 					// fixed (T* e_ptr = (e == null || e.Length == 0) ? null : converted [0])
 					//
 					converted = new Conditional (new BooleanExpression (new Binary (Binary.Operator.LogicalOr,
-						new Binary (Binary.Operator.Equality, e, new NullLiteral (loc), loc),
-						new Binary (Binary.Operator.Equality, new MemberAccess (e, "Length"), new IntConstant (0, loc), loc), loc)),
+						new Binary (Binary.Operator.Equality, initializer, new NullLiteral (loc), loc),
+						new Binary (Binary.Operator.Equality, new MemberAccess (initializer, "Length"), new IntConstant (0, loc), loc), loc)),
 							new NullPointer (loc),
 							converted, loc);
 
-					converted = converted.Resolve (ec);					
-
-					data [i] = new ExpressionEmitter (converted, vi);
-					i++;
+					converted = converted.Resolve (bc);
 
-					continue;
+					return new ExpressionEmitter (converted, li);
 				}
 
 				//
-				// Case 3: string
+				// Case 2: string
 				//
-				if (e.Type == TypeManager.string_type){
-					data [i] = new StringEmitter (e, vi, loc).Resolve (ec);
-					i++;
-					continue;
+				if (initializer.Type == TypeManager.string_type) {
+					return new StringEmitter (initializer, li, loc).Resolve (bc);
 				}
 
-				// Case 4: fixed buffer
-				if (e is FixedBufferPtr) {
-					data [i++] = new ExpressionEmitter (e, vi);
-					continue;
+				// Case 3: fixed buffer
+				if (initializer is FixedBufferPtr) {
+					return new ExpressionEmitter (initializer, li);
 				}
 
 				//
-				// Case 1: & object.
+				// Case 4: & object.
 				//
-				Unary u = e as Unary;
+				bool already_fixed = true;
+				Unary u = initializer as Unary;
 				if (u != null && u.Oper == Unary.Operator.AddressOf) {
 					IVariableReference vr = u.Expr as IVariableReference;
 					if (vr == null || !vr.IsFixed) {
-						data [i] = new ExpressionEmitter (e, vi);
+						already_fixed = false;
 					}
 				}
 
-				if (data [i++] == null)
-					ec.Report.Error (213, vi.Location, "You cannot use the fixed statement to take the address of an already fixed expression");
+				if (already_fixed) {
+					bc.Report.Error (213, loc, "You cannot use the fixed statement to take the address of an already fixed expression");
+				}
+
+				initializer = Convert.ImplicitConversionRequired (bc, initializer, li.Type, loc);
+				return new ExpressionEmitter (initializer, li);
+			}
+		}
+
+
+		VariableDeclaration decl;
+		Statement statement;
+		bool has_ret;
+
+		public Fixed (VariableDeclaration decl, Statement stmt, Location l)
+		{
+			this.decl = decl;
+			statement = stmt;
+			loc = l;
+		}
+
+		#region Properties
+
+		public Statement Statement {
+			get {
+				return statement;
+			}
+		}
+
+		public BlockVariableDeclaration Variables {
+			get {
+				return decl;
+			}
+		}
 
-				e = Convert.ImplicitConversionRequired (ec, e, expr_type, loc);
+		#endregion
+
+		public override bool Resolve (BlockContext ec)
+		{
+			using (ec.Set (ResolveContext.Options.FixedInitializerScope)) {
+				if (!decl.Resolve (ec))
+					return false;
 			}
 
 			ec.StartFlowBranching (FlowBranching.BranchingType.Conditional, loc);
@@ -4482,8 +4592,13 @@ namespace Mono.CSharp {
 		
 		protected override void DoEmit (EmitContext ec)
 		{
-			for (int i = 0; i < data.Length; i++) {
-				data [i].Emit (ec);
+			decl.Variable.CreateBuilder (ec);
+			decl.Initializer.Emit (ec);
+			if (decl.Declarators != null) {
+				foreach (var d in decl.Declarators) {
+					d.Variable.CreateBuilder (ec);
+					d.Initializer.Emit (ec);
+				}
 			}
 
 			statement.Emit (ec);
@@ -4494,8 +4609,11 @@ namespace Mono.CSharp {
 			//
 			// Clear the pinned variable
 			//
-			for (int i = 0; i < data.Length; i++) {
-				data [i].EmitExit (ec);
+			((Emitter) decl.Initializer).EmitExit (ec);
+			if (decl.Declarators != null) {
+				foreach (var d in decl.Declarators) {
+					((Emitter)d.Initializer).EmitExit (ec);
+				}
 			}
 		}
 
@@ -4503,32 +4621,31 @@ namespace Mono.CSharp {
 		{
 			Fixed target = (Fixed) t;
 
-			target.type = type.Clone (clonectx);
-			target.declarators = new List<KeyValuePair<LocalInfo, Expression>> (declarators.Count);
-			foreach (var p in declarators) {
-				target.declarators.Add (new KeyValuePair<LocalInfo, Expression> (
-					clonectx.LookupVariable (p.Key), p.Value.Clone (clonectx)));
-			}
-			
+			target.decl = (VariableDeclaration) decl.Clone (clonectx);
 			target.statement = statement.Clone (clonectx);
 		}
 	}
-	
-	public class Catch : Statement {
-		public readonly string Name;
-		public Block  Block;
-		public Block  VarBlock;
 
-		Expression type_expr;
+	public class Catch : Statement
+	{
+		Block block;
+		LocalVariable li;
+		FullNamedExpression type_expr;
+		CompilerAssign assign;
 		TypeSpec type;
 		
-		public Catch (Expression type, string name, Block block, Block var_block, Location l)
+		public Catch (Block block, Location loc)
 		{
-			type_expr = type;
-			Name = name;
-			Block = block;
-			VarBlock = var_block;
-			loc = l;
+			this.block = block;
+			this.loc = loc;
+		}
+
+		#region Properties
+
+		public Block Block {
+			get {
+				return block;
+			}
 		}
 
 		public TypeSpec CatchType {
@@ -4543,38 +4660,55 @@ namespace Mono.CSharp {
 			}
 		}
 
+		public FullNamedExpression TypeExpression {
+			get {
+				return type_expr;
+			}
+			set {
+				type_expr = value;
+			}
+		}
+
+		public LocalVariable Variable {
+			get {
+				return li;
+			}
+			set {
+				li = value;
+			}
+		}
+
+		#endregion
+
 		protected override void DoEmit (EmitContext ec)
 		{
-			if (CatchType != null)
-				ec.BeginCatchBlock (CatchType);
-			else
+			if (IsGeneral)
 				ec.BeginCatchBlock (TypeManager.object_type);
+			else
+				ec.BeginCatchBlock (CatchType);
 
-			if (VarBlock != null)
-				VarBlock.Emit (ec);
-
-			if (Name != null) {
-				// TODO: Move to resolve
-				LocalVariableReference lvr = new LocalVariableReference (Block, Name, loc);
-				lvr.Resolve (new ResolveContext (ec.MemberContext));
-				
-				// Only to make verifier happy
-				if (TypeManager.IsGenericParameter (lvr.Type))
-					ec.Emit (OpCodes.Unbox_Any, lvr.Type);
+			if (li != null) {
+				li.CreateBuilder (ec);
 
-				Expression source;
-				if (lvr.IsHoisted) {
-					LocalTemporary lt = new LocalTemporary (lvr.Type);
+				//
+				// Special case hoisted catch variable, we have to use a temporary variable
+				// to pass via anonymous storey initialization with the value still on top
+				// of the stack
+				//
+				if (li.HoistedVariant != null) {
+					LocalTemporary lt = new LocalTemporary (li.Type);
+					SymbolWriter.OpenCompilerGeneratedBlock (ec);
 					lt.Store (ec);
-					source = lt;
-				} else {
-					// Variable is at the top of the stack
-					source = EmptyExpression.Null;
-				}
+					SymbolWriter.CloseCompilerGeneratedBlock (ec);
 
-				lvr.EmitAssign (ec, source, false, false);
-			} else
+					// switch to assigning from the temporary variable and not from top of the stack
+					assign.UpdateSource (lt);
+				}
+			} else {
+				SymbolWriter.OpenCompilerGeneratedBlock (ec);
 				ec.Emit (OpCodes.Pop);
+				SymbolWriter.CloseCompilerGeneratedBlock (ec);
+			}
 
 			Block.Emit (ec);
 		}
@@ -4588,23 +4722,23 @@ namespace Mono.CSharp {
 						return false;
 
 					type = te.Type;
-
-					if (type != TypeManager.exception_type && !TypeSpec.IsBaseClass (type, TypeManager.exception_type, false)){
+					if (type != TypeManager.exception_type && !TypeSpec.IsBaseClass (type, TypeManager.exception_type, false)) {
 						ec.Report.Error (155, loc, "The type caught or thrown must be derived from System.Exception");
-						return false;
-					}
-				} else
-					type = null;
+					} else if (li != null) {
+						li.Type = type;
+						li.PrepareForFlowAnalysis (ec);
 
-				if (!Block.Resolve (ec))
-					return false;
+						// source variable is at the top of the stack
+						Expression source = new EmptyExpression (li.Type);
+						if (li.Type.IsGenericParameter)
+							source = new UnboxCast (source, li.Type);
 
-				// Even though VarBlock surrounds 'Block' we resolve it later, so that we can correctly
-				// emit the "unused variable" warnings.
-				if (VarBlock != null)
-					return VarBlock.Resolve (ec);
+						assign = new CompilerAssign (new LocalVariableReference (li, loc), source, loc);
+						Block.AddScopeStatement (new StatementExpression (assign));
+					}
+				}
 
-				return true;
+				return Block.Resolve (ec);
 			}
 		}
 
@@ -4613,22 +4747,19 @@ namespace Mono.CSharp {
 			Catch target = (Catch) t;
 
 			if (type_expr != null)
-				target.type_expr = type_expr.Clone (clonectx);
-			if (VarBlock != null)
-				target.VarBlock = clonectx.LookupBlock (VarBlock);			
-			target.Block = clonectx.LookupBlock (Block);
+				target.type_expr = (FullNamedExpression) type_expr.Clone (clonectx);
+
+			target.block = clonectx.LookupBlock (block);
 		}
 	}
 
 	public class TryFinally : ExceptionStatement {
-		Statement stmt;
 		Block fini;
 
-		public TryFinally (Statement stmt, Block fini, Location l)
+		public TryFinally (Statement stmt, Block fini, Location loc)
+			 : base (stmt, loc)
 		{
-			this.stmt = stmt;
 			this.fini = fini;
-			loc = l;
 		}
 
 		public override bool Resolve (BlockContext ec)
@@ -4713,14 +4844,6 @@ namespace Mono.CSharp {
 			foreach (Catch c in Specific){
 				ec.CurrentBranching.CreateSibling (c.Block, FlowBranching.SiblingType.Catch);
 
-				if (c.Name != null) {
-					LocalInfo vi = c.Block.GetLocalInfo (c.Name);
-					if (vi == null)
-						throw new Exception ();
-
-					vi.VariableInfo = null;
-				}
-
 				if (!c.Resolve (ec)) {
 					ok = false;
 					continue;
@@ -4740,13 +4863,18 @@ namespace Mono.CSharp {
 			}
 
 			if (General != null) {
-				if (CodeGen.Assembly.WrapNonExceptionThrows) {
-					foreach (Catch c in Specific){
-						if (c.CatchType == TypeManager.exception_type && ec.Compiler.PredefinedAttributes.RuntimeCompatibility.IsDefined) {
-							ec.Report.Warning (1058, 1, c.loc,
-								"A previous catch clause already catches all exceptions. All non-exceptions thrown will be wrapped in a `System.Runtime.CompilerServices.RuntimeWrappedException'");
-						}
-					}
+				foreach (Catch c in Specific) {
+					if (c.CatchType != TypeManager.exception_type)
+						continue;
+
+					if (!ec.Module.DeclaringAssembly.WrapNonExceptionThrows)
+						continue;
+
+					if (!ec.Module.PredefinedAttributes.RuntimeCompatibility.IsDefined)
+						continue;
+
+					ec.Report.Warning (1058, 1, c.loc,
+						"A previous catch clause already catches all exceptions. All non-exceptions thrown will be wrapped in a `System.Runtime.CompilerServices.RuntimeWrappedException'");
 				}
 
 				ec.CurrentBranching.CreateSibling (General.Block, FlowBranching.SiblingType.Catch);
@@ -4802,145 +4930,185 @@ namespace Mono.CSharp {
 		}
 	}
 
-	// FIXME: Why is it almost exact copy of Using ??
-	public class UsingTemporary : ExceptionStatement
+	public class Using : ExceptionStatement
 	{
-		protected TemporaryVariable local_copy;
-		Statement statement;
-		Expression expr;
-		protected Statement dispose_call;
-
-		public UsingTemporary (Expression expr, Statement stmt, Location l)
+		public class VariableDeclaration : BlockVariableDeclaration
 		{
-			this.expr = expr;
-			statement = stmt;
-			loc = l;
-		}
+			Statement dispose_call;
 
-		#region Properties
-		public Expression Expression {
-			get {
-				return expr;
+			public VariableDeclaration (FullNamedExpression type, LocalVariable li)
+				: base (type, li)
+			{
 			}
-		}
 
-		public Statement Statement {
-			get {
-				return statement;
+			public VariableDeclaration (LocalVariable li, Location loc)
+				: base (li)
+			{
+				this.loc = loc;
 			}
-		}
 
-		#endregion
+			public VariableDeclaration (Expression expr)
+				: base (null)
+			{
+				loc = expr.Location;
+				Initializer = expr;
+			}
 
-		protected virtual bool DoResolve (BlockContext ec)
-		{
-			expr = expr.Resolve (ec);
-			if (expr == null)
-				return false;
+			#region Properties
 
-			if (expr.Type != TypeManager.idisposable_type && !expr.Type.ImplementsInterface (TypeManager.idisposable_type)) {
-				if (TypeManager.IsNullableType (expr.Type)) {
-					// Will handle it a custom code
-				} else if (expr.Type == InternalType.Dynamic) {
-					expr = Convert.ImplicitConversionStandard (ec, expr, TypeManager.idisposable_type, loc);
-				} else {
-					Using.Error_IsNotConvertibleToIDisposable (ec, expr);
-					return false;
-				}
+			public bool IsNested { get; private set; }
+
+			#endregion
+
+			public void EmitDispose (EmitContext ec)
+			{
+				dispose_call.Emit (ec);
 			}
 
-			var expr_type = expr.Type;
+			public override bool Resolve (BlockContext bc)
+			{
+				if (IsNested)
+					return true;
 
-			local_copy = new TemporaryVariable (expr_type, loc);
-			local_copy.Resolve (ec);
+				return base.Resolve (bc);
+			}
 
-			if (TypeManager.void_dispose_void == null) {
-				TypeManager.void_dispose_void = TypeManager.GetPredefinedMethod (
-					TypeManager.idisposable_type, "Dispose", loc, TypeSpec.EmptyTypes);
+			public Expression ResolveExpression (BlockContext bc)
+			{
+				var e = Initializer.Resolve (bc);
+				if (e == null)
+					return null;
+
+				li = LocalVariable.CreateCompilerGenerated (e.Type, bc.CurrentBlock, loc);
+				Initializer = ResolveInitializer (bc, Variable, e);
+				return e;
 			}
 
-			var dispose_mg = MethodGroupExpr.CreatePredefined (TypeManager.void_dispose_void, TypeManager.idisposable_type, loc);
-			dispose_mg.InstanceExpression = TypeManager.IsNullableType (expr_type) ?
-				new Cast (new TypeExpression (TypeManager.idisposable_type, loc), local_copy, loc).Resolve (ec) :
-				local_copy;
+			protected override Expression ResolveInitializer (BlockContext bc, LocalVariable li, Expression initializer)
+			{
+				if (li.Type == InternalType.Dynamic) {
+					initializer = initializer.Resolve (bc);
+					if (initializer == null)
+						return null;
+
+					// Once there is dynamic used defer conversion to runtime even if we know it will never succeed
+					Arguments args = new Arguments (1);
+					args.Add (new Argument (initializer));
+					initializer = new DynamicConversion (TypeManager.idisposable_type, 0, args, initializer.Location).Resolve (bc);
+					if (initializer == null)
+						return null;
+
+					var var = LocalVariable.CreateCompilerGenerated (TypeManager.idisposable_type, bc.CurrentBlock, loc);
+					dispose_call = CreateDisposeCall (bc, var);
+					dispose_call.Resolve (bc);
+
+					return base.ResolveInitializer (bc, li, new SimpleAssign (var.CreateReferenceExpression (bc, loc), initializer, loc));
+				}
 
-			dispose_call = new StatementExpression (new Invocation (dispose_mg, null));
+				if (li == Variable) {
+					CheckIDiposableConversion (bc, li, initializer);
+					dispose_call = CreateDisposeCall (bc, li);
+					dispose_call.Resolve (bc);
+				}
 
-			// Add conditional call when disposing possible null variable
-			if (!expr_type.IsStruct || TypeManager.IsNullableType (expr_type))
-				dispose_call = new If (new Binary (Binary.Operator.Inequality, local_copy, new NullLiteral (loc), loc), dispose_call, loc);
+				return base.ResolveInitializer (bc, li, initializer);
+			}
 
-			return dispose_call.Resolve (ec);
-		}
+			protected virtual void CheckIDiposableConversion (BlockContext bc, LocalVariable li, Expression initializer)
+			{
+				var type = li.Type;
 
-		public override bool Resolve (BlockContext ec)
-		{
-			bool ok = DoResolve (ec);
+				if (type != TypeManager.idisposable_type && !type.ImplementsInterface (TypeManager.idisposable_type, false)) {
+					if (TypeManager.IsNullableType (type)) {
+						// it's handled in CreateDisposeCall
+						return;
+					}
 
-			ec.StartFlowBranching (this);
+					bc.Report.SymbolRelatedToPreviousError (type);
+					var loc = type_expr == null ? initializer.Location : type_expr.Location;
+					bc.Report.Error (1674, loc, "`{0}': type used in a using statement must be implicitly convertible to `System.IDisposable'",
+						type.GetSignatureForError ());
 
-			ok &= statement.Resolve (ec);
+					return;
+				}
+			}
 
-			ec.EndFlowBranching ();
+			protected virtual Statement CreateDisposeCall (BlockContext bc, LocalVariable lv)
+			{
+				var lvr = lv.CreateReferenceExpression (bc, lv.Location);
+				var type = lv.Type;
+				var loc = lv.Location;
 
-			ok &= base.Resolve (ec);
+				if (TypeManager.void_dispose_void == null) {
+					TypeManager.void_dispose_void = TypeManager.GetPredefinedMethod (
+						TypeManager.idisposable_type, "Dispose", loc, TypeSpec.EmptyTypes);
+				}
 
-			return ok;
-		}
+				var dispose_mg = MethodGroupExpr.CreatePredefined (TypeManager.void_dispose_void, TypeManager.idisposable_type, loc);
+				dispose_mg.InstanceExpression = TypeManager.IsNullableType (type) ?
+					new Cast (new TypeExpression (TypeManager.idisposable_type, loc), lvr, loc).Resolve (bc) :
+					lvr;
 
-		protected override void EmitPreTryBody (EmitContext ec)
-		{
-			local_copy.EmitAssign (ec, expr);
-		}
+				Statement dispose = new StatementExpression (new Invocation (dispose_mg, null));
 
-		protected override void EmitTryBody (EmitContext ec)
-		{
-			statement.Emit (ec);
-		}
+				// Add conditional call when disposing possible null variable
+				if (!type.IsStruct || TypeManager.IsNullableType (type))
+					dispose = new If (new Binary (Binary.Operator.Inequality, lvr, new NullLiteral (loc), loc), dispose, loc);
 
-		protected override void EmitFinallyBody (EmitContext ec)
-		{
-			dispose_call.Emit (ec);
-		}
+				return dispose;
+			}
 
-		protected override void CloneTo (CloneContext clonectx, Statement t)
-		{
-			UsingTemporary target = (UsingTemporary) t;
+			public Statement RewriteForDeclarators (BlockContext bc, Statement stmt)
+			{
+				for (int i = declarators.Count - 1; i >= 0; --i) {
+					var d = declarators [i];
+					var vd = new VariableDeclaration (d.Variable, type_expr.Location);
+					vd.Initializer = d.Initializer;
+					vd.IsNested = true;
+					vd.dispose_call = CreateDisposeCall (bc, d.Variable);
+					vd.dispose_call.Resolve (bc);
+
+					stmt = new Using (vd, stmt, d.Variable.Location);
+				}
 
-			target.expr = expr.Clone (clonectx);
-			target.statement = statement.Clone (clonectx);
+				declarators = null;
+				return stmt;
+			}
 		}
-	}
 
-	public class Using : ExceptionStatement {
-		Statement stmt;
-		public Statement EmbeddedStatement {
-			get { return stmt is Using ? ((Using) stmt).EmbeddedStatement : stmt; }
+		VariableDeclaration decl;
+
+		public Using (VariableDeclaration decl, Statement stmt, Location loc)
+			: base (stmt, loc)
+		{
+			this.decl = decl;
 		}
 
-		Expression var;
-		Expression init;
+		public Using (Expression expr, Statement stmt, Location loc)
+			: base (stmt, loc)
+		{
+			this.decl = new VariableDeclaration (expr);
+		}
 
-		ExpressionStatement assign;
+		#region Properties
 
-		public Using (Expression var, Expression init, Statement stmt, Location l)
-		{
-			this.var = var;
-			this.init = init;
-			this.stmt = stmt;
-			loc = l;
+		public Expression Expression {
+			get {
+				return decl.Variable == null ? decl.Initializer : null;
+			}
 		}
 
-		static public void Error_IsNotConvertibleToIDisposable (BlockContext ec, Expression expr)
-		{
-			ec.Report.SymbolRelatedToPreviousError (expr.Type);
-			ec.Report.Error (1674, expr.Location, "`{0}': type used in a using statement must be implicitly convertible to `System.IDisposable'",
-				TypeManager.CSharpName (expr.Type));
+		public BlockVariableDeclaration Variables {
+			get {
+				return decl;
+			}
 		}
 
+		#endregion
+
 		protected override void EmitPreTryBody (EmitContext ec)
 		{
-			assign.EmitStatement (ec);
+			decl.Emit (ec);
 		}
 
 		protected override void EmitTryBody (EmitContext ec)
@@ -4950,70 +5118,52 @@ namespace Mono.CSharp {
 
 		protected override void EmitFinallyBody (EmitContext ec)
 		{
-			Label skip = ec.DefineLabel ();
-
-			bool emit_null_check = !TypeManager.IsValueType (var.Type);
-			if (emit_null_check) {
-				var.Emit (ec);
-				ec.Emit (OpCodes.Brfalse, skip);
-			}
-
-			Invocation.EmitCall (ec, var, TypeManager.void_dispose_void, null, loc);
-
-			if (emit_null_check)
-				ec.MarkLabel (skip);
+			decl.EmitDispose (ec);
 		}
 
 		public override bool Resolve (BlockContext ec)
 		{
-			if (!ResolveVariable (ec))
-				return false;
-
-			ec.StartFlowBranching (this);
+			VariableReference vr;
+			bool vr_locked = false;
 
-			bool ok = stmt.Resolve (ec);
-
-			ec.EndFlowBranching ();
+			using (ec.Set (ResolveContext.Options.UsingInitializerScope)) {
+				if (decl.Variable == null) {
+					vr = decl.ResolveExpression (ec) as VariableReference;
+					if (vr != null) {
+						vr_locked = vr.IsLockedByStatement;
+						vr.IsLockedByStatement = true;
+					}
+				} else {
+					if (!decl.Resolve (ec))
+						return false;
 
-			ok &= base.Resolve (ec);
+					if (decl.Declarators != null) {
+						stmt = decl.RewriteForDeclarators (ec, stmt);
+					}
 
-			if (TypeManager.void_dispose_void == null) {
-				TypeManager.void_dispose_void = TypeManager.GetPredefinedMethod (
-					TypeManager.idisposable_type, "Dispose", loc, TypeSpec.EmptyTypes);
+					vr = null;
+				}
 			}
 
-			return ok;
-		}
+			ec.StartFlowBranching (this);
 
-		bool ResolveVariable (BlockContext ec)
-		{
-			assign = new SimpleAssign (var, init, loc);
-			assign = assign.ResolveStatement (ec);
-			if (assign == null)
-				return false;
+			stmt.Resolve (ec);
 
-			if (assign.Type == TypeManager.idisposable_type || assign.Type.ImplementsInterface (TypeManager.idisposable_type)) {
-				return true;
-			}
+			ec.EndFlowBranching ();
 
-			Expression e;
-			if (assign.Type == InternalType.Dynamic) {
-				e = Convert.ImplicitConversionStandard (ec, assign, TypeManager.idisposable_type, loc);
-			    var = new TemporaryVariable (e.Type, loc);
-			    assign = new SimpleAssign (var, e, loc).ResolveStatement (ec);
-			    return true;
-			}
+			if (vr != null)
+				vr.IsLockedByStatement = vr_locked;
 
-			Error_IsNotConvertibleToIDisposable (ec, var);
-			return false;
+			base.Resolve (ec);
+
+			return true;
 		}
 
 		protected override void CloneTo (CloneContext clonectx, Statement t)
 		{
 			Using target = (Using) t;
 
-			target.var = var.Clone (clonectx);
-			target.init = init.Clone (clonectx);
+			target.decl = (VariableDeclaration) decl.Clone (clonectx);
 			target.stmt = stmt.Clone (clonectx);
 		}
 	}
@@ -5025,45 +5175,28 @@ namespace Mono.CSharp {
 
 		sealed class ArrayForeach : Statement
 		{
-			class ArrayCounter : TemporaryVariable
-			{
-				StatementExpression increment;
-
-				public ArrayCounter (Location loc)
-					: base (TypeManager.int32_type, loc)
-				{
-				}
-
-				public void ResolveIncrement (BlockContext ec)
-				{
-					increment = new StatementExpression (new UnaryMutator (UnaryMutator.Mode.PostIncrement, this, loc));
-					increment.Resolve (ec);
-				}
-
-				public void EmitIncrement (EmitContext ec)
-				{
-					increment.Emit (ec);
-				}
-			}
-
 			readonly Foreach for_each;
 			readonly Statement statement;
 
 			Expression conv;
-			TemporaryVariable[] lengths;
+			TemporaryVariableReference[] lengths;
 			Expression [] length_exprs;
-			ArrayCounter[] counter;
+			StatementExpression[] counter;
+			TemporaryVariableReference[] variables;
 
-			TemporaryVariable copy;
+			TemporaryVariableReference copy;
 			Expression access;
+			LocalVariableReference variable;
 
 			public ArrayForeach (Foreach @foreach, int rank)
 			{
 				for_each = @foreach;
 				statement = for_each.statement;
 				loc = @foreach.loc;
+				variable = new LocalVariableReference (for_each.variable, loc);
 
-				counter = new ArrayCounter [rank];
+				counter = new StatementExpression[rank];
+				variables = new TemporaryVariableReference[rank];
 				length_exprs = new Expression [rank];
 
 				//
@@ -5071,7 +5204,7 @@ namespace Mono.CSharp {
 				// multi-dimensional arrays
 				//
 				if (rank > 1)
-					lengths = new TemporaryVariable [rank];
+					lengths = new TemporaryVariableReference [rank];
 			}
 
 			protected override void CloneTo (CloneContext clonectx, Statement target)
@@ -5081,27 +5214,30 @@ namespace Mono.CSharp {
 
 			public override bool Resolve (BlockContext ec)
 			{
-				copy = new TemporaryVariable (for_each.expr.Type, loc);
+				Block variables_block = variable.local_info.Block;
+				copy = TemporaryVariableReference.Create (for_each.expr.Type, variables_block, loc);
 				copy.Resolve (ec);
 
 				int rank = length_exprs.Length;
 				Arguments list = new Arguments (rank);
 				for (int i = 0; i < rank; i++) {
-					counter [i] = new ArrayCounter (loc);
-					counter [i].ResolveIncrement (ec);					
+					var v = TemporaryVariableReference.Create (TypeManager.int32_type, variables_block, loc);
+					variables[i] = v;
+					counter[i] = new StatementExpression (new UnaryMutator (UnaryMutator.Mode.PostIncrement, v, loc));
+					counter[i].Resolve (ec);
 
 					if (rank == 1) {
 						length_exprs [i] = new MemberAccess (copy, "Length").Resolve (ec);
 					} else {
-						lengths [i] = new TemporaryVariable (TypeManager.int32_type, loc);
-						lengths [i].Resolve (ec);
+						lengths[i] = TemporaryVariableReference.Create (TypeManager.int32_type, variables_block, loc);
+						lengths[i].Resolve (ec);
 
 						Arguments args = new Arguments (1);
 						args.Add (new Argument (new IntConstant (i, loc)));
 						length_exprs [i] = new Invocation (new MemberAccess (copy, "GetLength"), args).Resolve (ec);
 					}
 
-					list.Add (new Argument (counter [i]));
+					list.Add (new Argument (v));
 				}
 
 				access = new ElementAccess (copy, list, loc).Resolve (ec);
@@ -5128,9 +5264,8 @@ namespace Mono.CSharp {
 				ec.StartFlowBranching (FlowBranching.BranchingType.Loop, loc);
 				ec.CurrentBranching.CreateSibling ();
 
-				for_each.variable = for_each.variable.ResolveLValue (ec, conv);
-				if (for_each.variable == null)
-					ok = false;
+				variable.local_info.Type = conv.Type;
+				variable.Resolve (ec);
 
 				ec.StartFlowBranching (FlowBranching.BranchingType.Embedded, loc);
 				if (!statement.Resolve (ec))
@@ -5163,23 +5298,24 @@ namespace Mono.CSharp {
 
 				IntConstant zero = new IntConstant (0, loc);
 				for (int i = 0; i < rank; i++) {
-					counter [i].EmitAssign (ec, zero);
+					variables [i].EmitAssign (ec, zero);
 
 					ec.Emit (OpCodes.Br, test [i]);
 					ec.MarkLabel (loop [i]);
 				}
 
-				((IAssignMethod) for_each.variable).EmitAssign (ec, conv, false, false);
+				variable.local_info.CreateBuilder (ec);
+				variable.EmitAssign (ec, conv, false, false);
 
 				statement.Emit (ec);
 
 				ec.MarkLabel (ec.LoopBegin);
 
 				for (int i = rank - 1; i >= 0; i--){
-					counter [i].EmitIncrement (ec);
+					counter [i].Emit (ec);
 
 					ec.MarkLabel (test [i]);
-					counter [i].Emit (ec);
+					variables [i].Emit (ec);
 
 					if (lengths != null)
 						lengths [i].Emit (ec);
@@ -5198,16 +5334,16 @@ namespace Mono.CSharp {
 			class Body : Statement
 			{
 				TypeSpec type;
-				Expression variable, current, conv;
+				LocalVariableReference variable;
+				Expression current, conv;
 				Statement statement;
-				Assign assign;
 
-				public Body (TypeSpec type, Expression variable,
+				public Body (TypeSpec type, LocalVariable variable,
 								   Expression current, Statement statement,
 								   Location loc)
 				{
 					this.type = type;
-					this.variable = variable;
+					this.variable = new LocalVariableReference (variable, loc);
 					this.current = current;
 					this.statement = statement;
 					this.loc = loc;
@@ -5228,9 +5364,8 @@ namespace Mono.CSharp {
 					if (conv == null)
 						return false;
 
-					assign = new SimpleAssign (variable, conv, loc);
-					if (assign.Resolve (ec) == null)
-						return false;
+					variable.local_info.Type = conv.Type;
+					variable.Resolve (ec);
 
 					if (!statement.Resolve (ec))
 						return false;
@@ -5240,68 +5375,62 @@ namespace Mono.CSharp {
 
 				protected override void DoEmit (EmitContext ec)
 				{
-					assign.EmitStatement (ec);
+					variable.local_info.CreateBuilder (ec);
+					variable.EmitAssign (ec, conv, false, false);
+
 					statement.Emit (ec);
 				}
 			}
 
-			class Dispose : UsingTemporary
+			class RuntimeDispose : Using.VariableDeclaration
 			{
-				LocalTemporary dispose;
+				public RuntimeDispose (LocalVariable lv, Location loc)
+					: base (lv, loc)
+				{
+				}
 
-				public Dispose (TemporaryVariable variable, LocalTemporary dispose, Expression expr, Statement statement, Location loc)
-					: base (expr, statement, loc)
+				protected override void CheckIDiposableConversion (BlockContext bc, LocalVariable li, Expression initializer)
 				{
-					base.local_copy = variable;
-					this.dispose = dispose;
+					// Defered to runtime check
 				}
 
-				protected override bool DoResolve (BlockContext ec)
+				protected override Statement CreateDisposeCall (BlockContext bc, LocalVariable lv)
 				{
 					if (TypeManager.void_dispose_void == null) {
 						TypeManager.void_dispose_void = TypeManager.GetPredefinedMethod (
 							TypeManager.idisposable_type, "Dispose", loc, TypeSpec.EmptyTypes);
 					}
 
-					Expression dispose_var = (Expression) dispose ?? local_copy;
-
-					var dispose_mg = MethodGroupExpr.CreatePredefined (TypeManager.void_dispose_void, TypeManager.idisposable_type, loc);
-					dispose_mg.InstanceExpression = dispose_var;
-
-					dispose_call = new StatementExpression (new Invocation (dispose_mg, null));
-
-					if (!dispose_var.Type.IsStruct)
-						dispose_call = new If (new Binary (Binary.Operator.Inequality, dispose_var, new NullLiteral (loc), loc), dispose_call, loc);
+					//
+					// Fabricates code like
+					//
+					// if ((temp = vr as IDisposable) != null) temp.Dispose ();
+					//
 
-					return dispose_call.Resolve (ec);
-				}
+					var dispose_variable = LocalVariable.CreateCompilerGenerated (TypeManager.idisposable_type, bc.CurrentBlock, loc);
 
-				protected override void EmitFinallyBody (EmitContext ec)
-				{
-					Label call_dispose = ec.DefineLabel ();
-					if (dispose != null) {
-						local_copy.Emit (ec, false);
-						ec.Emit (OpCodes.Isinst, dispose.Type);
-						dispose.Store (ec);
-					}
+					var idisaposable_test = new Binary (Binary.Operator.Inequality, new CompilerAssign (
+						dispose_variable.CreateReferenceExpression (bc, loc),
+						new As (lv.CreateReferenceExpression (bc, loc), new TypeExpression (dispose_variable.Type, loc), loc),
+						loc), new NullLiteral (loc), loc);
 
-					base.EmitFinallyBody (ec);
+					var dispose_mg = MethodGroupExpr.CreatePredefined (TypeManager.void_dispose_void, TypeManager.idisposable_type, loc);
+					dispose_mg.InstanceExpression = dispose_variable.CreateReferenceExpression (bc, loc);
 
-					if (dispose != null) {
-						ec.MarkLabel (call_dispose);
-						dispose.Release (ec);
-					}
+					Statement dispose = new StatementExpression (new Invocation (dispose_mg, null));
+					return new If (idisaposable_test, dispose, loc);
 				}
 			}
 
-			Expression variable, expr;
+			LocalVariable variable;
+			Expression expr;
 			Statement statement;
 			Expression var_type;
 			ExpressionStatement init;
+			TemporaryVariableReference enumerator_variable;
 			bool ambiguous_getenumerator_name;
 
-			public CollectionForeach (Expression var_type, Expression var,
-						  Expression expr, Statement stmt, Location l)
+			public CollectionForeach (Expression var_type, LocalVariable var, Expression expr, Statement stmt, Location l)
 			{
 				this.var_type = var_type;
 				this.variable = var;
@@ -5328,7 +5457,8 @@ namespace Mono.CSharp {
 				//
 				// Option 1: Try to match by name GetEnumerator first
 				//
-				var mexpr = Expression.MemberLookup (rc, rc.CurrentType, expr.Type, "GetEnumerator", 0, true, loc);		// TODO: What if CS0229 ?
+				var mexpr = Expression.MemberLookup (rc, rc.CurrentType, expr.Type,
+					"GetEnumerator", 0, Expression.MemberLookupRestrictions.ExactArity, loc);		// TODO: What if CS0229 ?
 
 				var mg = mexpr as MethodGroupExpr;
 				if (mg != null) {
@@ -5349,7 +5479,8 @@ namespace Mono.CSharp {
 				// Option 2: Try to match using IEnumerable interfaces with preference of generic version
 				//
 				TypeSpec iface_candidate = null;
-				for (TypeSpec t = expr.Type; t != null && t != TypeManager.object_type; t = t.BaseType) {
+				var t = expr.Type;
+				do {
 					var ifaces = t.Interfaces;
 					if (ifaces != null) {
 						foreach (var iface in ifaces) {
@@ -5372,7 +5503,13 @@ namespace Mono.CSharp {
 							}
 						}
 					}
-				}
+
+					if (t.IsGenericParameter)
+						t = t.BaseType;
+					else
+						t = null;
+
+				} while (t != null);
 
 				if (iface_candidate == null) {
 					rc.Report.Error (1579, loc,
@@ -5424,8 +5561,12 @@ namespace Mono.CSharp {
 			public override bool Resolve (BlockContext ec)
 			{
 				bool is_dynamic = expr.Type == InternalType.Dynamic;
-				if (is_dynamic)
+
+				if (is_dynamic) {
 					expr = Convert.ImplicitConversionRequired (ec, expr, TypeManager.ienumerable_type, loc);
+				} else if (TypeManager.IsNullableType (expr.Type)) {
+					expr = new Nullable.UnwrapCall (expr).Resolve (ec);
+				}
 
 				var get_enumerator_mg = ResolveGetEnumerator (ec);
 				if (get_enumerator_mg == null) {
@@ -5433,8 +5574,8 @@ namespace Mono.CSharp {
 				}
 
 				var get_enumerator = get_enumerator_mg.BestCandidate;
-				var enumerator = new TemporaryVariable (get_enumerator.ReturnType, loc);
-				enumerator.Resolve (ec);
+				enumerator_variable = TemporaryVariableReference.Create (get_enumerator.ReturnType, variable.Block, loc);
+				enumerator_variable.Resolve (ec);
 
 				// Prepare bool MoveNext ()
 				var move_next_mg = ResolveMoveNext (ec, get_enumerator);
@@ -5442,7 +5583,7 @@ namespace Mono.CSharp {
 					return false;
 				}
 
-				move_next_mg.InstanceExpression = enumerator;
+				move_next_mg.InstanceExpression = enumerator_variable;
 
 				// Prepare ~T~ Current { get; }
 				var current_prop = ResolveCurrent (ec, get_enumerator);
@@ -5450,7 +5591,7 @@ namespace Mono.CSharp {
 					return false;
 				}
 
-				var current_pe = new PropertyExpr (current_prop, loc) { InstanceExpression = enumerator }.Resolve (ec);
+				var current_pe = new PropertyExpr (current_prop, loc) { InstanceExpression = enumerator_variable }.Resolve (ec);
 				if (current_pe == null)
 					return false;
 
@@ -5472,36 +5613,40 @@ namespace Mono.CSharp {
 				if (var_type == null)
 					return false;
 
+				variable.Type = var_type.Type;
+
 				var init = new Invocation (get_enumerator_mg, null);
-				init.Resolve (ec);
 
 				statement = new While (new BooleanExpression (new Invocation (move_next_mg, null)),
 					new Body (var_type.Type, variable, current_pe, statement, loc), loc);
 
-				var enum_type = enumerator.Type;
+				var enum_type = enumerator_variable.Type;
 
 				//
 				// Add Dispose method call when enumerator can be IDisposable
 				//
-				if (!enumerator.Type.ImplementsInterface (TypeManager.idisposable_type)) {
+				if (!enum_type.ImplementsInterface (TypeManager.idisposable_type, false)) {
 					if (!enum_type.IsSealed && !TypeManager.IsValueType (enum_type)) {
 						//
 						// Runtime Dispose check
 						//
-						var tv = new LocalTemporary (TypeManager.idisposable_type);
-						statement = new Dispose (enumerator, tv, init, statement, loc);
+						var vd = new RuntimeDispose (enumerator_variable.LocalInfo, loc);
+						vd.Initializer = init;
+						statement = new Using (vd, statement, loc);
 					} else {
 						//
 						// No Dispose call needed
 						//
-						this.init = new SimpleAssign (enumerator, init);
+						this.init = new SimpleAssign (enumerator_variable, init);
 						this.init.Resolve (ec);
 					}
 				} else {
 					//
 					// Static Dispose check
 					//
-					statement = new Dispose (enumerator, null, init, statement, loc);
+					var vd = new Using.VariableDeclaration (enumerator_variable.LocalInfo, loc);
+					vd.Initializer = init;
+					statement = new Using (vd, statement, loc);
 				}
 
 				return statement.Resolve (ec);
@@ -5509,6 +5654,8 @@ namespace Mono.CSharp {
 
 			protected override void DoEmit (EmitContext ec)
 			{
+				enumerator_variable.LocalInfo.CreateBuilder (ec);
+
 				if (init != null)
 					init.EmitStatement (ec);
 
@@ -5548,12 +5695,11 @@ namespace Mono.CSharp {
 		}
 
 		Expression type;
-		Expression variable;
+		LocalVariable variable;
 		Expression expr;
 		Statement statement;
 
-		public Foreach (Expression type, LocalVariableReference var, Expression expr,
-				Statement stmt, Location l)
+		public Foreach (Expression type, LocalVariable var, Expression expr, Statement stmt, Location l)
 		{
 			this.type = type;
 			this.variable = var;
@@ -5611,7 +5757,6 @@ namespace Mono.CSharp {
 			Foreach target = (Foreach) t;
 
 			target.type = type.Clone (clonectx);
-			target.variable = variable.Clone (clonectx);
 			target.expr = expr.Clone (clonectx);
 			target.statement = statement.Clone (clonectx);
 		}
diff --git a/mcs/mcs/support.cs b/mcs/mcs/support.cs
index 6bf8f1c..79f76b5 100644
--- a/mcs/mcs/support.cs
+++ b/mcs/mcs/support.cs
@@ -13,9 +13,6 @@
 using System;
 using System.IO;
 using System.Text;
-using System.Reflection;
-using System.Reflection.Emit;
-using System.Globalization;
 using System.Collections.Generic;
 
 namespace Mono.CSharp {
@@ -74,6 +71,25 @@ namespace Mono.CSharp {
 		}
 	}
 
+	static class ArrayComparer
+	{
+		public static bool IsEqual<T> (T[] array1, T[] array2)
+		{
+			if (array1 == null || array2 == null)
+				return array1 == array2;
+
+			var eq = EqualityComparer<T>.Default;
+
+			for (int i = 0; i < array1.Length; ++i) {
+				if (!eq.Equals (array1[i], array2[i])) {
+					return false;
+				}
+			}
+
+			return true;
+		}
+	}
+
 	/// <summary>
 	///   This is an arbitrarily seekable StreamReader wrapper.
 	///
@@ -83,23 +99,21 @@ namespace Mono.CSharp {
 	/// </summary>
 	public class SeekableStreamReader : IDisposable
 	{
-		const int buffer_read_length_spans = 3;
-
-		TextReader reader;
+		StreamReader reader;
 		Stream stream;
 
 		static char[] buffer;
-		int average_read_length;
+		int read_ahead_length;	// the length of read buffer
 		int buffer_start;       // in chars
-		int char_count;         // count buffer[] valid characters
+		int char_count;         // count of filled characters in buffer[]
 		int pos;                // index into buffer[]
 
 		public SeekableStreamReader (Stream stream, Encoding encoding)
 		{
 			this.stream = stream;
 
-			const int default_average_read_length = 1024;
-			InitializeStream (default_average_read_length);
+			const int default_read_ahead = 2048;
+			InitializeStream (default_read_ahead);
 			reader = new StreamReader (stream, encoding, true);
 		}
 
@@ -111,13 +125,14 @@ namespace Mono.CSharp {
 
 		void InitializeStream (int read_length_inc)
 		{
-			average_read_length += read_length_inc;
+			read_ahead_length += read_length_inc;
+
+			int required_buffer_size = read_ahead_length * 2;
 
-			int required_buffer_size = average_read_length * buffer_read_length_spans;
 			if (buffer == null || buffer.Length < required_buffer_size)
 				buffer = new char [required_buffer_size];
 
-			stream.Position = 0;			
+			stream.Position = 0;
 			buffer_start = char_count = pos = 0;
 		}
 
@@ -129,12 +144,25 @@ namespace Mono.CSharp {
 		///   a correlation between them.
 		/// </remarks>
 		public int Position {
-			get { return buffer_start + pos; }
+			get {
+				return buffer_start + pos;
+			}
 
 			set {
-				// If the lookahead was too small, re-read from the beginning.  Increase the buffer size while we're at it
-				if (value < buffer_start)
-					InitializeStream (average_read_length / 2);
+				//
+				// If the lookahead was too small, re-read from the beginning. Increase the buffer size while we're at it
+				// This should never happen until we are parsing some weird source code
+				//
+				if (value < buffer_start) {
+					InitializeStream (read_ahead_length);
+
+					//
+					// Discard buffer data after underlying stream changed position
+					// Cannot use handy reader.DiscardBufferedData () because it for
+					// some strange reason resets encoding as well
+					//
+					reader = new StreamReader (stream, reader.CurrentEncoding, true);
+				}
 
 				while (value > buffer_start + char_count) {
 					pos = char_count;
@@ -146,17 +174,26 @@ namespace Mono.CSharp {
 			}
 		}
 
-		private bool ReadBuffer ()
+		bool ReadBuffer ()
 		{
 			int slack = buffer.Length - char_count;
-			if (slack <= average_read_length / 2) {
-				// shift the buffer to make room for average_read_length number of characters
-				int shift = average_read_length - slack;
+
+			//
+			// read_ahead_length is only half of the buffer to deal with
+			// reads ahead and moves back without re-reading whole buffer
+			//
+			if (slack <= read_ahead_length) {
+				//
+				// shift the buffer to make room for read_ahead_length number of characters
+				//
+				int shift = read_ahead_length - slack;
 				Array.Copy (buffer, shift, buffer, 0, char_count - shift);
+
+				// Update all counters
 				pos -= shift;
 				char_count -= shift;
 				buffer_start += shift;
-				slack += shift;		// slack == average_read_length
+				slack += shift;
 			}
 
 			char_count += reader.Read (buffer, char_count, slack);
diff --git a/mcs/mcs/symbolwriter.cs b/mcs/mcs/symbolwriter.cs
index 38e6996..ce19cfc 100644
--- a/mcs/mcs/symbolwriter.cs
+++ b/mcs/mcs/symbolwriter.cs
@@ -1,99 +1,94 @@
 //
-// symbolwriter.cs: The symbol writer
+// symbolwriter.cs: The debug symbol writer
 //
-// Author:
-//   Martin Baulig (martin at ximian.com)
+// Authors: Martin Baulig (martin at ximian.com)
+//          Marek Safar (marek.safar at gmail.com)
 //
-// Copyright 2003 Ximian, Inc.
-// Copyright 2003-2008 Novell, Inc.
+// Dual licensed under the terms of the MIT X11 or GNU GPL
+//
+// Copyright 2003 Ximian, Inc (http://www.ximian.com)
+// Copyright 2004-2010 Novell, Inc
 //
 
 using System;
+
+#if STATIC
+using IKVM.Reflection;
+using IKVM.Reflection.Emit;
+#else
 using System.Reflection;
 using System.Reflection.Emit;
+#endif
 
 using Mono.CompilerServices.SymbolWriter;
 
-namespace Mono.CSharp {
-	public static class SymbolWriter
+namespace Mono.CSharp
+{
+	static class SymbolWriter
 	{
-		public static bool HasSymbolWriter {
-			get { return symwriter != null; }
-		}
+#if !NET_4_0 && !STATIC
+		delegate int GetILOffsetFunc (ILGenerator ig);
+		static GetILOffsetFunc get_il_offset_func;
 
-		private static SymbolWriterImpl symwriter;
+		delegate Guid GetGuidFunc (ModuleBuilder mb);
+		static GetGuidFunc get_guid_func;
 
-		class SymbolWriterImpl : MonoSymbolWriter {
-#if !NET_4_0
-			delegate int GetILOffsetFunc (ILGenerator ig);
-			GetILOffsetFunc get_il_offset_func;
+		static void Initialize ()
+		{
+			var mi = typeof (ILGenerator).GetMethod (
+				"Mono_GetCurrentOffset",
+				BindingFlags.Static | BindingFlags.NonPublic);
+			if (mi == null)
+				throw new MissingMethodException ("Mono_GetCurrentOffset");
 
-			delegate Guid GetGuidFunc (ModuleBuilder mb);
-			GetGuidFunc get_guid_func;
-#endif
+			get_il_offset_func = (GetILOffsetFunc) System.Delegate.CreateDelegate (
+				typeof (GetILOffsetFunc), mi);
 
-			ModuleBuilder module_builder;
+			mi = typeof (ModuleBuilder).GetMethod (
+				"Mono_GetGuid",
+				BindingFlags.Static | BindingFlags.NonPublic);
+			if (mi == null)
+				throw new MissingMethodException ("Mono_GetGuid");
 
-			public SymbolWriterImpl (ModuleBuilder module_builder, string filename)
-				: base (filename)
-			{
-				this.module_builder = module_builder;
-			}
-
-			public int GetILOffset (ILGenerator ig)
-			{
-#if NET_4_0
-				return ig.ILOffset;
-#else
-				return get_il_offset_func (ig);
+			get_guid_func = (GetGuidFunc) System.Delegate.CreateDelegate (
+				typeof (GetGuidFunc), mi);
+		}
 #endif
-			}
 
-			public void WriteSymbolFile ()
-			{
-				Guid guid;
-#if NET_4_0
-				guid = module_builder.ModuleVersionId;
+		static int GetILOffset (ILGenerator ig)
+		{
+#if NET_4_0 || STATIC
+			return ig.ILOffset;
 #else
-				guid = get_guid_func (module_builder);
-#endif
-				WriteSymbolFile (guid);
-			}
-
-			public bool Initialize ()
-			{
-#if !NET_4_0
-				MethodInfo mi;
-
-				mi = typeof (ILGenerator).GetMethod (
-					"Mono_GetCurrentOffset",
-					BindingFlags.Static | BindingFlags.NonPublic);
-				if (mi == null)
-					return false;
+			if (get_il_offset_func == null)
+				Initialize ();
 
-				get_il_offset_func = (GetILOffsetFunc) System.Delegate.CreateDelegate (
-					typeof (GetILOffsetFunc), mi);
+			return get_il_offset_func (ig);
+#endif
+		}
 
-				mi = typeof (ModuleBuilder).GetMethod (
-					"Mono_GetGuid",
-					BindingFlags.Static | BindingFlags.NonPublic);
-				if (mi == null)
-					return false;
+		public static Guid GetGuid (ModuleBuilder module)
+		{
+#if NET_4_0 || STATIC
+			return module.ModuleVersionId;
+#else
+			if (get_guid_func == null)
+				Initialize ();
 
-				get_guid_func = (GetGuidFunc) System.Delegate.CreateDelegate (
-					typeof (GetGuidFunc), mi);
+			return get_guid_func (module);
 #endif
+		}
 
-				Location.DefineSymbolDocuments (this);
-				return true;
-			}
+		public static bool HasSymbolWriter {
+			get { return symwriter != null; }
 		}
 
+		public static MonoSymbolWriter symwriter;
+
 		public static void DefineLocalVariable (string name, LocalBuilder builder)
 		{
 			if (symwriter != null) {
-				int index = MonoDebuggerSupport.GetLocalIndex (builder);
-				symwriter.DefineLocalVariable (index, name);
+				symwriter.DefineLocalVariable (builder.LocalIndex, name);
 			}
 		}
 
@@ -115,7 +110,7 @@ namespace Mono.CSharp {
 		public static int OpenScope (ILGenerator ig)
 		{
 			if (symwriter != null) {
-				int offset = symwriter.GetILOffset (ig);
+				int offset = GetILOffset (ig);
 				return symwriter.OpenScope (offset);
 			} else {
 				return -1;
@@ -125,7 +120,7 @@ namespace Mono.CSharp {
 		public static void CloseScope (ILGenerator ig)
 		{
 			if (symwriter != null) {
-				int offset = symwriter.GetILOffset (ig);
+				int offset = GetILOffset (ig);
 				symwriter.CloseScope (offset);
 			}
 		}
@@ -139,7 +134,6 @@ namespace Mono.CSharp {
 				return -1;
 		}
 
-#region Terrania additions
 		public static void DefineAnonymousScope (int id)
 		{
 			if (symwriter != null)
@@ -149,8 +143,7 @@ namespace Mono.CSharp {
 		public static void DefineScopeVariable (int scope, LocalBuilder builder)
 		{
 			if (symwriter != null) {
-				int index = MonoDebuggerSupport.GetLocalIndex (builder);
-				symwriter.DefineScopeVariable (scope, index);
+				symwriter.DefineScopeVariable (scope, builder.LocalIndex);
 			}
 		}
 
@@ -189,7 +182,7 @@ namespace Mono.CSharp {
 		public static void OpenCompilerGeneratedBlock (EmitContext ec)
 		{
 			if (symwriter != null) {
-				int offset = symwriter.GetILOffset (ec.ig);
+				int offset = GetILOffset (ec.ig);
 				symwriter.OpenCompilerGeneratedBlock (offset);
 			}
 		}
@@ -197,7 +190,7 @@ namespace Mono.CSharp {
 		public static void CloseCompilerGeneratedBlock (EmitContext ec)
 		{
 			if (symwriter != null) {
-				int offset = symwriter.GetILOffset (ec.ig);
+				int offset = GetILOffset (ec.ig);
 				symwriter.CloseCompilerGeneratedBlock (offset);
 			}
 		}
@@ -205,7 +198,7 @@ namespace Mono.CSharp {
 		public static void StartIteratorBody (EmitContext ec)
 		{
 			if (symwriter != null) {
-				int offset = symwriter.GetILOffset (ec.ig);
+				int offset = GetILOffset (ec.ig);
 				symwriter.StartIteratorBody (offset);
 			}
 		}
@@ -213,7 +206,7 @@ namespace Mono.CSharp {
 		public static void EndIteratorBody (EmitContext ec)
 		{
 			if (symwriter != null) {
-				int offset = symwriter.GetILOffset (ec.ig);
+				int offset = GetILOffset (ec.ig);
 				symwriter.EndIteratorBody (offset);
 			}
 		}
@@ -221,7 +214,7 @@ namespace Mono.CSharp {
 		public static void StartIteratorDispatcher (EmitContext ec)
 		{
 			if (symwriter != null) {
-				int offset = symwriter.GetILOffset (ec.ig);
+				int offset = GetILOffset (ec.ig);
 				symwriter.StartIteratorDispatcher (offset);
 			}
 		}
@@ -229,39 +222,21 @@ namespace Mono.CSharp {
 		public static void EndIteratorDispatcher (EmitContext ec)
 		{
 			if (symwriter != null) {
-				int offset = symwriter.GetILOffset (ec.ig);
+				int offset = GetILOffset (ec.ig);
 				symwriter.EndIteratorDispatcher (offset);
 			}
 		}
-#endregion
 
 		public static void MarkSequencePoint (ILGenerator ig, Location loc)
 		{
 			if (symwriter != null) {
 				SourceFileEntry file = loc.SourceFile.SourceFileEntry;
-				int offset = symwriter.GetILOffset (ig);
+				int offset = GetILOffset (ig);
 				symwriter.MarkSequencePoint (
 					offset, file, loc.Row, loc.Column, loc.Hidden);
 			}
 		}
 
-		public static void WriteSymbolFile ()
-		{
-			if (symwriter != null)
-				symwriter.WriteSymbolFile ();
-		}
-
-		public static bool Initialize (ModuleBuilder module, string filename)
-		{
-			symwriter = new SymbolWriterImpl (module, filename);
-			if (!symwriter.Initialize ()) {
-				symwriter = null;
-				return false;
-			}
-
-			return true;
-		}
-
 		public static void Reset ()
 		{
 			symwriter = null;
diff --git a/mcs/mcs/typemanager.cs b/mcs/mcs/typemanager.cs
index 7b2b885..bb8f217 100644
--- a/mcs/mcs/typemanager.cs
+++ b/mcs/mcs/typemanager.cs
@@ -12,93 +12,455 @@
 //
 
 using System;
-using System.IO;
 using System.Globalization;
 using System.Collections.Generic;
-using System.Reflection;
-using System.Reflection.Emit;
 using System.Text;
-using System.Runtime.CompilerServices;
-using System.Diagnostics;
-using System.Linq;
 
-namespace Mono.CSharp {
+namespace Mono.CSharp
+{
+	//
+	// All compiler build-in types (they have to exist otherwise the compile will not work)
+	//
+	public class BuildinTypes
+	{
+		public readonly BuildinTypeSpec Object;
+		public readonly BuildinTypeSpec ValueType;
+		public readonly BuildinTypeSpec Attribute;
+
+		public readonly BuildinTypeSpec Int;
+		public readonly BuildinTypeSpec UInt;
+		public readonly BuildinTypeSpec Long;
+		public readonly BuildinTypeSpec ULong;
+		public readonly BuildinTypeSpec Float;
+		public readonly BuildinTypeSpec Double;
+		public readonly BuildinTypeSpec Char;
+		public readonly BuildinTypeSpec Short;
+		public readonly BuildinTypeSpec Decimal;
+		public readonly BuildinTypeSpec Bool;
+		public readonly BuildinTypeSpec SByte;
+		public readonly BuildinTypeSpec Byte;
+		public readonly BuildinTypeSpec UShort;
+		public readonly BuildinTypeSpec String;
+
+		public readonly BuildinTypeSpec Enum;
+		public readonly BuildinTypeSpec Delegate;
+		public readonly BuildinTypeSpec MulticastDelegate;
+		public readonly BuildinTypeSpec Void;
+		public readonly BuildinTypeSpec Array;
+		public readonly BuildinTypeSpec Type;
+		public readonly BuildinTypeSpec IEnumerator;
+		public readonly BuildinTypeSpec IEnumerable;
+		public readonly BuildinTypeSpec IDisposable;
+		public readonly BuildinTypeSpec IntPtr;
+		public readonly BuildinTypeSpec UIntPtr;
+		public readonly BuildinTypeSpec RuntimeFieldHandle;
+		public readonly BuildinTypeSpec RuntimeTypeHandle;
+		public readonly BuildinTypeSpec Exception;
+
+		//
+		// These are internal buil-in types which depend on other
+		// build-in type (mostly object)
+		//
+		public readonly BuildinTypeSpec Dynamic;
+		public readonly BuildinTypeSpec Null;
+
+		readonly BuildinTypeSpec[] types;
+
+		public BuildinTypes ()
+		{
+			Object = new BuildinTypeSpec (MemberKind.Class, "System", "Object", BuildinTypeSpec.Type.Object);
+			ValueType = new BuildinTypeSpec (MemberKind.Class, "System", "ValueType", BuildinTypeSpec.Type.ValueType);
+			Attribute = new BuildinTypeSpec (MemberKind.Class, "System", "Attribute", BuildinTypeSpec.Type.Attribute);
+
+			Int = new BuildinTypeSpec (MemberKind.Struct, "System", "Int32", BuildinTypeSpec.Type.Int);
+			Long = new BuildinTypeSpec (MemberKind.Struct, "System", "Int64", BuildinTypeSpec.Type.Long);
+			UInt = new BuildinTypeSpec (MemberKind.Struct, "System", "UInt32", BuildinTypeSpec.Type.UInt);
+			ULong = new BuildinTypeSpec (MemberKind.Struct, "System", "UInt64", BuildinTypeSpec.Type.ULong);
+			Byte = new BuildinTypeSpec (MemberKind.Struct, "System", "Byte", BuildinTypeSpec.Type.Byte);
+			SByte = new BuildinTypeSpec (MemberKind.Struct, "System", "SByte", BuildinTypeSpec.Type.SByte);
+			Short = new BuildinTypeSpec (MemberKind.Struct, "System", "Int16", BuildinTypeSpec.Type.Short);
+			UShort = new BuildinTypeSpec (MemberKind.Struct, "System", "UInt16", BuildinTypeSpec.Type.UShort);
+
+			IEnumerator = new BuildinTypeSpec (MemberKind.Interface, "System.Collections", "IEnumerator", BuildinTypeSpec.Type.IEnumerator);
+			IEnumerable = new BuildinTypeSpec (MemberKind.Interface, "System.Collections", "IEnumerable", BuildinTypeSpec.Type.IEnumerable);
+			IDisposable = new BuildinTypeSpec (MemberKind.Interface, "System", "IDisposable", BuildinTypeSpec.Type.IDisposable);
+
+			Char = new BuildinTypeSpec (MemberKind.Struct, "System", "Char", BuildinTypeSpec.Type.Char);
+			String = new BuildinTypeSpec (MemberKind.Class, "System", "String", BuildinTypeSpec.Type.String);
+			Float = new BuildinTypeSpec (MemberKind.Struct, "System", "Single", BuildinTypeSpec.Type.Float);
+			Double = new BuildinTypeSpec (MemberKind.Struct, "System", "Double", BuildinTypeSpec.Type.Double);
+			Decimal = new BuildinTypeSpec (MemberKind.Struct, "System", "Decimal", BuildinTypeSpec.Type.Decimal);
+			Bool = new BuildinTypeSpec (MemberKind.Struct, "System", "Boolean", BuildinTypeSpec.Type.Bool);
+			IntPtr = new BuildinTypeSpec (MemberKind.Struct, "System", "IntPtr", BuildinTypeSpec.Type.IntPtr);
+			UIntPtr = new BuildinTypeSpec (MemberKind.Struct, "System", "UIntPtr", BuildinTypeSpec.Type.UIntPtr);
+
+			MulticastDelegate = new BuildinTypeSpec (MemberKind.Class, "System", "MulticastDelegate", BuildinTypeSpec.Type.MulticastDelegate);
+			Delegate = new BuildinTypeSpec (MemberKind.Class, "System", "Delegate", BuildinTypeSpec.Type.Delegate);
+			Enum = new BuildinTypeSpec (MemberKind.Class, "System", "Enum", BuildinTypeSpec.Type.Enum);
+			Array = new BuildinTypeSpec (MemberKind.Class, "System", "Array", BuildinTypeSpec.Type.Array);
+			Void = new BuildinTypeSpec (MemberKind.Struct, "System", "Void", BuildinTypeSpec.Type.Void);
+			Type = new BuildinTypeSpec (MemberKind.Class, "System", "Type", BuildinTypeSpec.Type.Type);
+			Exception = new BuildinTypeSpec (MemberKind.Class, "System", "Exception", BuildinTypeSpec.Type.Exception);
+			RuntimeFieldHandle = new BuildinTypeSpec (MemberKind.Struct, "System", "RuntimeFieldHandle", BuildinTypeSpec.Type.RuntimeFieldHandle);
+			RuntimeTypeHandle = new BuildinTypeSpec (MemberKind.Struct, "System", "RuntimeTypeHandle", BuildinTypeSpec.Type.RuntimeTypeHandle);
+
+			Dynamic = new BuildinTypeSpec ("dynamic", BuildinTypeSpec.Type.Dynamic);
+			Null = new BuildinTypeSpec ("null", BuildinTypeSpec.Type.Null);
+			Null.MemberCache = MemberCache.Empty;
+
+			types = new BuildinTypeSpec[] {
+				Object, ValueType, Attribute,
+				Int, UInt, Long, ULong, Float, Double, Char, Short, Decimal, Bool, SByte, Byte, UShort, String,
+				Enum, Delegate, MulticastDelegate, Void, Array, Type, IEnumerator, IEnumerable, IDisposable,
+				IntPtr, UIntPtr, RuntimeFieldHandle, RuntimeTypeHandle, Exception };
+
+			// Deal with obsolete static types
+			// TODO: remove
+			TypeManager.object_type = Object;
+			TypeManager.value_type = ValueType;
+			TypeManager.string_type = String;
+			TypeManager.int32_type = Int;
+			TypeManager.uint32_type = UInt;
+			TypeManager.int64_type = Long;
+			TypeManager.uint64_type = ULong;
+			TypeManager.float_type = Float;
+			TypeManager.double_type = Double;
+			TypeManager.char_type = Char;
+			TypeManager.short_type = Short;
+			TypeManager.decimal_type = Decimal;
+			TypeManager.bool_type = Bool;
+			TypeManager.sbyte_type = SByte;
+			TypeManager.byte_type = Byte;
+			TypeManager.ushort_type = UShort;
+			TypeManager.enum_type = Enum;
+			TypeManager.delegate_type = Delegate;
+			TypeManager.multicast_delegate_type = MulticastDelegate; ;
+			TypeManager.void_type = Void;
+			TypeManager.array_type = Array; ;
+			TypeManager.runtime_handle_type = RuntimeTypeHandle;
+			TypeManager.type_type = Type;
+			TypeManager.ienumerator_type = IEnumerator;
+			TypeManager.ienumerable_type = IEnumerable;
+			TypeManager.idisposable_type = IDisposable;
+			TypeManager.intptr_type = IntPtr;
+			TypeManager.uintptr_type = UIntPtr;
+			TypeManager.runtime_field_handle_type = RuntimeFieldHandle;
+			TypeManager.attribute_type = Attribute;
+			TypeManager.exception_type = Exception;
+
+			InternalType.Dynamic = Dynamic;
+			InternalType.Null = Null;
+		}
+
+		public BuildinTypeSpec[] AllTypes {
+			get {
+				return types;
+			}
+		}
+
+		public bool CheckDefinitions (ModuleContainer module)
+		{
+			var ctx = module.Compiler;
+			foreach (var p in types) {
+				var found = PredefinedType.Resolve (module, p.Kind, p.Namespace, p.Name, p.Arity, Location.Null);
+				if (found == null || found == p)
+					continue;
+
+				if (!RootContext.StdLib) {
+					var ns = module.GlobalRootNamespace.GetNamespace (p.Namespace, false);
+					ns.ReplaceTypeWithPredefined (found, p);
+
+					var tc = found.MemberDefinition as TypeContainer;
+					tc.SetPredefinedSpec (p);
+					p.SetDefinition (found);
+				}
+			}
+
+			if (ctx.Report.Errors != 0)
+				return false;
+
+			// Set internal build-in types
+			Dynamic.SetDefinition (Object);
+			Null.SetDefinition (Object);
+
+			return true;
+		}
+	}
+
+	//
+	// Compiler predefined types. Usually used for compiler generated
+	// code or for comparison against well known framework type
+	//
+	class PredefinedTypes
+	{
+		// TODO: These two exist only to reject type comparison
+		public readonly PredefinedType TypedReference;
+		public readonly PredefinedType ArgIterator;
+
+		public readonly PredefinedType MarshalByRefObject;
+		public readonly PredefinedType RuntimeHelpers;
+		public readonly PredefinedType IAsyncResult;
+		public readonly PredefinedType AsyncCallback;
+		public readonly PredefinedType RuntimeArgumentHandle;
+		public readonly PredefinedType CharSet;
+		public readonly PredefinedType IsVolatile;
+		public readonly PredefinedType IEnumeratorGeneric;
+		public readonly PredefinedType IListGeneric;
+		public readonly PredefinedType ICollectionGeneric;
+		public readonly PredefinedType IEnumerableGeneric;
+		public readonly PredefinedType Nullable;
+		public readonly PredefinedType Activator;
+		public readonly PredefinedType Interlocked;
+		public readonly PredefinedType Monitor;
+		public readonly PredefinedType NotSupportedException;
+		public readonly PredefinedType RuntimeFieldHandle;
+		public readonly PredefinedType RuntimeMethodHandle;
+		public readonly PredefinedType SecurityAction;
+
+		//
+		// C# 3.0
+		//
+		public readonly PredefinedType Expression;
+		public readonly PredefinedType ExpressionGeneric;
+		public readonly PredefinedType ParameterExpression;
+		public readonly PredefinedType FieldInfo;
+		public readonly PredefinedType MethodBase;
+		public readonly PredefinedType MethodInfo;
+		public readonly PredefinedType ConstructorInfo;
+
+		//
+		// C# 4.0
+		//
+		public readonly PredefinedType Binder;
+		public readonly PredefinedType CallSite;
+		public readonly PredefinedType CallSiteGeneric;
+		public readonly PredefinedType BinderFlags;
+
+		public PredefinedTypes (ModuleContainer module)
+		{
+			TypedReference = new PredefinedType (module, MemberKind.Struct, "System", "TypedReference");
+			ArgIterator = new PredefinedType (module, MemberKind.Struct, "System", "ArgIterator");
+			MarshalByRefObject = new PredefinedType (module, MemberKind.Class, "System", "MarshalByRefObject");
+			RuntimeHelpers = new PredefinedType (module, MemberKind.Class, "System.Runtime.CompilerServices", "RuntimeHelpers");
+			IAsyncResult = new PredefinedType (module, MemberKind.Interface, "System", "IAsyncResult");
+			AsyncCallback = new PredefinedType (module, MemberKind.Delegate, "System", "AsyncCallback");
+			RuntimeArgumentHandle = new PredefinedType (module, MemberKind.Struct, "System", "RuntimeArgumentHandle");
+			CharSet = new PredefinedType (module, MemberKind.Enum, "System.Runtime.InteropServices", "CharSet");
+			IsVolatile = new PredefinedType (module, MemberKind.Class, "System.Runtime.CompilerServices", "IsVolatile");
+			IEnumeratorGeneric = new PredefinedType (module, MemberKind.Interface, "System.Collections.Generic", "IEnumerator", 1);
+			IListGeneric = new PredefinedType (module, MemberKind.Interface, "System.Collections.Generic", "IList", 1);
+			ICollectionGeneric = new PredefinedType (module, MemberKind.Interface, "System.Collections.Generic", "ICollection", 1);
+			IEnumerableGeneric = new PredefinedType (module, MemberKind.Interface, "System.Collections.Generic", "IEnumerable", 1);
+			Nullable = new PredefinedType (module, MemberKind.Struct, "System", "Nullable", 1);
+			Activator = new PredefinedType (module, MemberKind.Class, "System", "Activator");
+			Interlocked = new PredefinedType (module, MemberKind.Class, "System.Threading", "Interlocked");
+			Monitor = new PredefinedType (module, MemberKind.Class, "System.Threading", "Monitor");
+			NotSupportedException = new PredefinedType (module, MemberKind.Class, "System", "NotSupportedException");
+			RuntimeFieldHandle = new PredefinedType (module, MemberKind.Struct, "System", "RuntimeFieldHandle");
+			RuntimeMethodHandle = new PredefinedType (module, MemberKind.Struct, "System", "RuntimeMethodHandle");
+			SecurityAction = new PredefinedType (module, MemberKind.Enum, "System.Security.Permissions", "SecurityAction");
+
+			Expression = new PredefinedType (module, MemberKind.Class, "System.Linq.Expressions", "Expression");
+			ExpressionGeneric = new PredefinedType (module, MemberKind.Class, "System.Linq.Expressions", "Expression", 1);
+			ParameterExpression = new PredefinedType (module, MemberKind.Class, "System.Linq.Expressions", "ParameterExpression");
+			FieldInfo = new PredefinedType (module, MemberKind.Class, "System.Reflection", "FieldInfo");
+			MethodBase = new PredefinedType (module, MemberKind.Class, "System.Reflection", "MethodBase");
+			MethodInfo = new PredefinedType (module, MemberKind.Class, "System.Reflection", "MethodInfo");
+			ConstructorInfo = new PredefinedType (module, MemberKind.Class, "System.Reflection", "ConstructorInfo");
+
+			CallSite = new PredefinedType (module, MemberKind.Class, "System.Runtime.CompilerServices", "CallSite");
+			CallSiteGeneric = new PredefinedType (module, MemberKind.Class, "System.Runtime.CompilerServices", "CallSite", 1);
+			Binder = new PredefinedType (module, MemberKind.Class, "Microsoft.CSharp.RuntimeBinder", "Binder");
+			BinderFlags = new PredefinedType (module, MemberKind.Enum, "Microsoft.CSharp.RuntimeBinder", "CSharpBinderFlags");
+
+			//
+			// Define types which are used for comparison. It does not matter
+			// if they don't exist as no error report is needed
+			//
+			TypedReference.Define ();
+			ArgIterator.Define ();
+			MarshalByRefObject.Define ();
+			CharSet.Define ();
+
+			IEnumerableGeneric.Define ();
+			IListGeneric.Define ();
+			ICollectionGeneric.Define ();
+			IEnumerableGeneric.Define ();
+			IEnumeratorGeneric.Define ();
+			Nullable.Define ();
+			ExpressionGeneric.Define ();
+
+			// Deal with obsolete static types
+			// TODO: remove
+			TypeManager.typed_reference_type = TypedReference.TypeSpec;
+			TypeManager.arg_iterator_type = ArgIterator.TypeSpec;
+			TypeManager.mbr_type = MarshalByRefObject.TypeSpec;
+			TypeManager.generic_ilist_type = IListGeneric.TypeSpec;
+			TypeManager.generic_icollection_type = ICollectionGeneric.TypeSpec;
+			TypeManager.generic_ienumerator_type = IEnumeratorGeneric.TypeSpec;
+			TypeManager.generic_ienumerable_type = IEnumerableGeneric.TypeSpec;
+			TypeManager.generic_nullable_type = Nullable.TypeSpec;
+			TypeManager.expression_type = ExpressionGeneric.TypeSpec;
+		}
+	}
+
+	public class PredefinedType
+	{
+		string name;
+		string ns;
+		int arity;
+		MemberKind kind;
+		ModuleContainer module;
+		protected TypeSpec type;
+
+		public PredefinedType (ModuleContainer module, MemberKind kind, string ns, string name, int arity)
+			: this (module, kind, ns, name)
+		{
+			this.arity = arity;
+		}
+
+		public PredefinedType (ModuleContainer module, MemberKind kind, string ns, string name)
+		{
+			this.module = module;
+			this.kind = kind;
+			this.name = name;
+			this.ns = ns;
+		}
+
+		#region Properties
+
+		public int Arity {
+			get {
+				return arity;
+			}
+		}
+
+		public bool IsDefined {
+			get {
+				return type != null;
+			}
+		}
+
+		public string Name {
+			get {
+				return name;
+			}
+		}
+
+		public string Namespace {
+			get {
+				return ns;
+			}
+		}
+
+		public TypeSpec TypeSpec {
+			get {
+				return type;
+			}
+		}
+
+		#endregion
+
+		public bool Define ()
+		{
+			if (type != null)
+				return true;
+
+			Namespace type_ns = module.GlobalRootNamespace.GetNamespace (ns, true);
+			var te = type_ns.LookupType (module.Compiler, name, arity, true, Location.Null);
+			if (te == null)
+				return false;
+
+			if (te.Type.Kind != kind)
+				return false;
+
+			type = te.Type;
+			return true;
+		}
+
+		public FieldSpec GetField (string name, TypeSpec memberType, Location loc)
+		{
+			return TypeManager.GetPredefinedField (type, name, loc, memberType);
+		}
+
+		public string GetSignatureForError ()
+		{
+			return ns + "." + name;
+		}
+
+		public static TypeSpec Resolve (ModuleContainer module, MemberKind kind, string ns, string name, int arity, Location loc)
+		{
+			Namespace type_ns = module.GlobalRootNamespace.GetNamespace (ns, true);
+			var te = type_ns.LookupType (module.Compiler, name, arity, false, Location.Null);
+			if (te == null) {
+				module.Compiler.Report.Error (518, loc, "The predefined type `{0}.{1}' is not defined or imported", ns, name);
+				return null;
+			}
+
+			var type = te.Type;
+			if (type.Kind != kind) {
+				module.Compiler.Report.Error (520, loc, "The predefined type `{0}.{1}' is not declared correctly", ns, name);
+				return null;
+			}
+
+			return type;
+		}
+
+		public TypeSpec Resolve (Location loc)
+		{
+			if (type == null)
+				type = Resolve (module, kind, ns, name, arity, loc);
+
+			return type;
+		}
+	}
 
 	partial class TypeManager {
 	//
 	// A list of core types that the compiler requires or uses
 	//
-	static public PredefinedTypeSpec object_type;
-	static public PredefinedTypeSpec value_type;
-	static public PredefinedTypeSpec string_type;
-	static public PredefinedTypeSpec int32_type;
-	static public PredefinedTypeSpec uint32_type;
-	static public PredefinedTypeSpec int64_type;
-	static public PredefinedTypeSpec uint64_type;
-	static public PredefinedTypeSpec float_type;
-	static public PredefinedTypeSpec double_type;
-	static public PredefinedTypeSpec char_type;
-	static public PredefinedTypeSpec short_type;
-	static public PredefinedTypeSpec decimal_type;
-	static public PredefinedTypeSpec bool_type;
-	static public PredefinedTypeSpec sbyte_type;
-	static public PredefinedTypeSpec byte_type;
-	static public PredefinedTypeSpec ushort_type;
-	static public PredefinedTypeSpec enum_type;
-	static public PredefinedTypeSpec delegate_type;
-	static public PredefinedTypeSpec multicast_delegate_type;
-	static public PredefinedTypeSpec void_type;
-	static public PredefinedTypeSpec array_type;
-	static public PredefinedTypeSpec runtime_handle_type;
-	static public PredefinedTypeSpec type_type;
-	static public PredefinedTypeSpec ienumerator_type;
-	static public PredefinedTypeSpec ienumerable_type;
-	static public PredefinedTypeSpec idisposable_type;
-	static public PredefinedTypeSpec intptr_type;
-	static public PredefinedTypeSpec uintptr_type;
-	static public PredefinedTypeSpec runtime_field_handle_type;
-	static public PredefinedTypeSpec attribute_type;
-	static public PredefinedTypeSpec exception_type;
+	static public BuildinTypeSpec object_type;
+	static public BuildinTypeSpec value_type;
+	static public BuildinTypeSpec string_type;
+	static public BuildinTypeSpec int32_type;
+	static public BuildinTypeSpec uint32_type;
+	static public BuildinTypeSpec int64_type;
+	static public BuildinTypeSpec uint64_type;
+	static public BuildinTypeSpec float_type;
+	static public BuildinTypeSpec double_type;
+	static public BuildinTypeSpec char_type;
+	static public BuildinTypeSpec short_type;
+	static public BuildinTypeSpec decimal_type;
+	static public BuildinTypeSpec bool_type;
+	static public BuildinTypeSpec sbyte_type;
+	static public BuildinTypeSpec byte_type;
+	static public BuildinTypeSpec ushort_type;
+	static public BuildinTypeSpec enum_type;
+	static public BuildinTypeSpec delegate_type;
+	static public BuildinTypeSpec multicast_delegate_type;
+	static public BuildinTypeSpec void_type;
+	static public BuildinTypeSpec array_type;
+	static public BuildinTypeSpec runtime_handle_type;
+	static public BuildinTypeSpec type_type;
+	static public BuildinTypeSpec ienumerator_type;
+	static public BuildinTypeSpec ienumerable_type;
+	static public BuildinTypeSpec idisposable_type;
+	static public BuildinTypeSpec intptr_type;
+	static public BuildinTypeSpec uintptr_type;
+	static public BuildinTypeSpec runtime_field_handle_type;
+	static public BuildinTypeSpec attribute_type;
+	static public BuildinTypeSpec exception_type;
 
 
 	static public TypeSpec typed_reference_type;
 	static public TypeSpec arg_iterator_type;
 	static public TypeSpec mbr_type;
-	public static TypeSpec runtime_helpers_type;
-	static public TypeSpec iasyncresult_type;
-	static public TypeSpec asynccallback_type;
-	static public TypeSpec runtime_argument_handle_type;
-	static public TypeSpec void_ptr_type;
-
-	// 
-	// C# 2.0
-	//
-	static internal TypeSpec isvolatile_type;
 	static public TypeSpec generic_ilist_type;
 	static public TypeSpec generic_icollection_type;
 	static public TypeSpec generic_ienumerator_type;
 	static public TypeSpec generic_ienumerable_type;
 	static public TypeSpec generic_nullable_type;
-
-	//
-	// C# 3.0
-	//
 	static internal TypeSpec expression_type;
-	public static TypeSpec parameter_expression_type;
-	public static TypeSpec fieldinfo_type;
-	public static TypeSpec methodinfo_type;
-	public static TypeSpec ctorinfo_type;
-
-	//
-	// C# 4.0
-	//
-	public static TypeSpec call_site_type;
-	public static TypeSpec generic_call_site_type;
-	public static TypeExpr binder_type;
-	public static TypeSpec binder_flags;
-
-	public static TypeExpr expression_type_expr;
-
 
 	//
 	// These methods are called by code generated by the compiler
@@ -114,6 +476,7 @@ namespace Mono.CSharp {
 	static public MethodSpec delegate_remove_delegate_delegate;
 	static public PropertySpec int_get_offset_to_string_data;
 	static public MethodSpec int_interlocked_compare_exchange;
+	public static MethodSpec gen_interlocked_compare_exchange;
 	static public PropertySpec ienumerator_getcurrent;
 	public static MethodSpec methodbase_get_type_from_handle;
 	public static MethodSpec methodbase_get_type_from_handle_generic;
@@ -128,8 +491,6 @@ namespace Mono.CSharp {
 	static public MethodSpec void_decimal_ctor_int_arg;
 	public static MethodSpec void_decimal_ctor_long_arg;
 
-	static Dictionary<Assembly, bool> assembly_internals_vis_attrs;
-
 	static TypeManager ()
 	{
 		Reset ();
@@ -139,8 +500,6 @@ namespace Mono.CSharp {
 	{
 //		object_type = null;
 	
-		assembly_internals_vis_attrs = new Dictionary<Assembly, bool> ();
-		
 		// TODO: I am really bored by all this static stuff
 		system_type_get_type_from_handle =
 		bool_movenext_void =
@@ -149,6 +508,7 @@ namespace Mono.CSharp {
 		void_monitor_exit_object =
 		void_initializearray_array_fieldhandle =
 		int_interlocked_compare_exchange =
+		gen_interlocked_compare_exchange =
 		methodbase_get_type_from_handle =
 		methodbase_get_type_from_handle_generic =
 		fieldinfo_get_field_from_handle =
@@ -166,20 +526,9 @@ namespace Mono.CSharp {
 
 		string_empty = null;
 
-		call_site_type =
-		generic_call_site_type =
-		binder_flags = null;
-
-		binder_type = null;
-
 		typed_reference_type = arg_iterator_type = mbr_type =
-		runtime_helpers_type = iasyncresult_type = asynccallback_type =
-		runtime_argument_handle_type = void_ptr_type = isvolatile_type =
 		generic_ilist_type = generic_icollection_type = generic_ienumerator_type =
-		generic_ienumerable_type = generic_nullable_type = expression_type =
-		parameter_expression_type = fieldinfo_type = methodinfo_type = ctorinfo_type = null;
-
-		expression_type_expr = null;
+		generic_ienumerable_type = generic_nullable_type = expression_type = null;
 	}
 
 	/// <summary>
@@ -215,46 +564,16 @@ namespace Mono.CSharp {
 		return mb.GetSignatureForError ();
 	}
 
-	//
-	// Looks up a type, and aborts if it is not found.  This is used
-	// by predefined types required by the compiler
-	//
-	public static TypeSpec CoreLookupType (CompilerContext ctx, string ns_name, string name, MemberKind kind, bool required)
-	{
-		return CoreLookupType (ctx, ns_name, name, 0, kind, required);
-	}
-
-	public static TypeSpec CoreLookupType (CompilerContext ctx, string ns_name, string name, int arity, MemberKind kind, bool required)
-	{
-		Namespace ns = ctx.GlobalRootNamespace.GetNamespace (ns_name, true);
-		var te = ns.LookupType (ctx, name, arity, !required, Location.Null);
-		var ts = te == null ? null : te.Type;
-
-		if (!required)
-			return ts;
-
-		if (ts == null) {
-			ctx.Report.Error (518, "The predefined type `{0}.{1}' is not defined or imported",
-				ns_name, name);
-			return null;
-		}
-
-		if (ts.Kind != kind) {
-			ctx.Report.Error (520, "The predefined type `{0}.{1}' is not declared correctly",
-				ns_name, name);
-			return null;
-		}
-
-		return ts;
-	}
-
-	static MemberSpec GetPredefinedMember (TypeSpec t, MemberFilter filter, Location loc)
+	static MemberSpec GetPredefinedMember (TypeSpec t, MemberFilter filter, bool optional, Location loc)
 	{
 		var member = MemberCache.FindMember (t, filter, BindingRestriction.DeclaredOnly);
 
 		if (member != null && member.IsAccessible (InternalType.FakeInternalType))
 			return member;
 
+		if (optional)
+			return member;
+
 		string method_args = null;
 		if (filter.Parameters != null)
 			method_args = filter.Parameters.GetSignatureForError ();
@@ -271,7 +590,7 @@ namespace Mono.CSharp {
 	public static MethodSpec GetPredefinedConstructor (TypeSpec t, Location loc, params TypeSpec [] args)
 	{
 		var pc = ParametersCompiled.CreateFullyResolved (args);
-		return GetPredefinedMember (t, MemberFilter.Constructor (pc), loc) as MethodSpec;
+		return GetPredefinedMember (t, MemberFilter.Constructor (pc), false, loc) as MethodSpec;
 	}
 
 	//
@@ -281,138 +600,27 @@ namespace Mono.CSharp {
 	public static MethodSpec GetPredefinedMethod (TypeSpec t, string name, Location loc, params TypeSpec [] args)
 	{
 		var pc = ParametersCompiled.CreateFullyResolved (args);
-		return GetPredefinedMethod (t, MemberFilter.Method (name, 0, pc, null), loc);
+		return GetPredefinedMethod (t, MemberFilter.Method (name, 0, pc, null), false, loc);
 	}
 
 	public static MethodSpec GetPredefinedMethod (TypeSpec t, MemberFilter filter, Location loc)
 	{
-		return GetPredefinedMember (t, filter, loc) as MethodSpec;
+		return GetPredefinedMethod (t, filter, false, loc);
 	}
 
-	public static FieldSpec GetPredefinedField (TypeSpec t, string name, Location loc, TypeSpec type)
+	public static MethodSpec GetPredefinedMethod (TypeSpec t, MemberFilter filter, bool optional, Location loc)
 	{
-		return GetPredefinedMember (t, MemberFilter.Field (name, type), loc) as FieldSpec;
+		return GetPredefinedMember (t, filter, optional, loc) as MethodSpec;
 	}
 
-	public static PropertySpec GetPredefinedProperty (TypeSpec t, string name, Location loc, TypeSpec type)
+	public static FieldSpec GetPredefinedField (TypeSpec t, string name, Location loc, TypeSpec type)
 	{
-		return GetPredefinedMember (t, MemberFilter.Property (name, type), loc) as PropertySpec;
-	}
-
-	public static IList<PredefinedTypeSpec> InitCoreTypes ()
-	{
-		var core_types = new PredefinedTypeSpec[] {
-			object_type = new PredefinedTypeSpec (MemberKind.Class, "System", "Object"),
-			value_type = new PredefinedTypeSpec (MemberKind.Class, "System", "ValueType"),
-			attribute_type = new PredefinedTypeSpec (MemberKind.Class, "System", "Attribute"),
-
-			int32_type = new PredefinedTypeSpec (MemberKind.Struct, "System", "Int32"),
-			int64_type = new PredefinedTypeSpec (MemberKind.Struct, "System", "Int64"),
-			uint32_type = new PredefinedTypeSpec (MemberKind.Struct, "System", "UInt32"),
-			uint64_type = new PredefinedTypeSpec (MemberKind.Struct, "System", "UInt64"),
-			byte_type = new PredefinedTypeSpec (MemberKind.Struct, "System", "Byte"),
-			sbyte_type = new PredefinedTypeSpec (MemberKind.Struct, "System", "SByte"),
-			short_type = new PredefinedTypeSpec (MemberKind.Struct, "System", "Int16"),
-			ushort_type = new PredefinedTypeSpec (MemberKind.Struct, "System", "UInt16"),
-
-			ienumerator_type = new PredefinedTypeSpec (MemberKind.Interface, "System.Collections", "IEnumerator"),
-			ienumerable_type = new PredefinedTypeSpec (MemberKind.Interface, "System.Collections", "IEnumerable"),
-			idisposable_type = new PredefinedTypeSpec (MemberKind.Interface, "System", "IDisposable"),
-
-			char_type = new PredefinedTypeSpec (MemberKind.Struct, "System", "Char"),
-			string_type = new PredefinedTypeSpec (MemberKind.Class, "System", "String"),
-			float_type = new PredefinedTypeSpec (MemberKind.Struct, "System", "Single"),
-			double_type = new PredefinedTypeSpec (MemberKind.Struct, "System", "Double"),
-			decimal_type = new PredefinedTypeSpec (MemberKind.Struct, "System", "Decimal"),
-			bool_type = new PredefinedTypeSpec (MemberKind.Struct, "System", "Boolean"),
-			intptr_type = new PredefinedTypeSpec (MemberKind.Struct, "System", "IntPtr"),
-			uintptr_type = new PredefinedTypeSpec (MemberKind.Struct, "System", "UIntPtr"),
-
-			multicast_delegate_type = new PredefinedTypeSpec (MemberKind.Class, "System", "MulticastDelegate"),
-			delegate_type = new PredefinedTypeSpec (MemberKind.Class, "System", "Delegate"),
-			enum_type = new PredefinedTypeSpec (MemberKind.Class, "System", "Enum"),
-			array_type = new PredefinedTypeSpec (MemberKind.Class, "System", "Array"),
-			void_type = new PredefinedTypeSpec (MemberKind.Struct, "System", "Void"),
-			type_type = new PredefinedTypeSpec (MemberKind.Class, "System", "Type"),
-			exception_type = new PredefinedTypeSpec (MemberKind.Class, "System", "Exception"),
-			runtime_field_handle_type = new PredefinedTypeSpec (MemberKind.Struct, "System", "RuntimeFieldHandle"),
-			runtime_handle_type = new PredefinedTypeSpec (MemberKind.Struct, "System", "RuntimeTypeHandle"),
-		};
-
-		return core_types;
-	}
-
-	/// <remarks>
-	///   The types have to be initialized after the initial
-	///   population of the type has happened (for example, to
-	///   bootstrap the corlib.dll
-	/// </remarks>
-	public static bool InitCoreTypes (CompilerContext ctx, IList<PredefinedTypeSpec> predefined)
-	{
-		foreach (var p in predefined) {
-			var found = CoreLookupType (ctx, p.Namespace, p.Name, p.Kind, true);
-			if (found == null || found == p)
-				continue;
-
-			if (!RootContext.StdLib) {
-				var ns = ctx.GlobalRootNamespace.GetNamespace (p.Namespace, false);
-				ns.ReplaceTypeWithPredefined (found, p);
-
-				var tc = found.MemberDefinition as TypeContainer;
-				tc.SetPredefinedSpec (p);
-				p.SetDefinition (found);
-			}
-		}
-
-		ctx.PredefinedAttributes.ParamArray.Initialize (ctx, false);
-		ctx.PredefinedAttributes.Out.Initialize (ctx, false);
-
-		if (InternalType.Dynamic.GetMetaInfo () == null) {
-			InternalType.Dynamic.SetMetaInfo (object_type.GetMetaInfo ());
-
-			if (object_type.MemberDefinition.IsImported)
-				InternalType.Dynamic.MemberCache = object_type.MemberCache;
-
-			InternalType.Null.SetMetaInfo (object_type.GetMetaInfo ());
-		}
-
-		return ctx.Report.Errors == 0;
+		return GetPredefinedMember (t, MemberFilter.Field (name, type), false, loc) as FieldSpec;
 	}
 
-	//
-	// Initializes optional core types
-	//
-	public static void InitOptionalCoreTypes (CompilerContext ctx)
+	public static PropertySpec GetPredefinedProperty (TypeSpec t, string name, Location loc, TypeSpec type)
 	{
-		void_ptr_type = PointerContainer.MakeType (void_type);
-
-		//
-		// Initialize InternalsVisibleTo as the very first optional type. Otherwise we would populate
-		// types cache with incorrect accessiblity when any of optional types is internal.
-		//
-		ctx.PredefinedAttributes.Initialize (ctx);
-
-		runtime_argument_handle_type = CoreLookupType (ctx, "System", "RuntimeArgumentHandle", MemberKind.Struct, false);
-		asynccallback_type = CoreLookupType (ctx, "System", "AsyncCallback", MemberKind.Delegate, false);
-		iasyncresult_type = CoreLookupType (ctx, "System", "IAsyncResult", MemberKind.Interface, false);
-		typed_reference_type = CoreLookupType (ctx, "System", "TypedReference", MemberKind.Struct, false);
-		arg_iterator_type = CoreLookupType (ctx, "System", "ArgIterator", MemberKind.Struct, false);
-		mbr_type = CoreLookupType (ctx, "System", "MarshalByRefObject", MemberKind.Class, false);
-
-		generic_ienumerator_type = CoreLookupType (ctx, "System.Collections.Generic", "IEnumerator", 1, MemberKind.Interface, false);
-		generic_ilist_type = CoreLookupType (ctx, "System.Collections.Generic", "IList", 1, MemberKind.Interface, false);
-		generic_icollection_type = CoreLookupType (ctx, "System.Collections.Generic", "ICollection", 1, MemberKind.Interface, false);
-		generic_ienumerable_type = CoreLookupType (ctx, "System.Collections.Generic", "IEnumerable", 1, MemberKind.Interface, false);
-		generic_nullable_type = CoreLookupType (ctx, "System", "Nullable", 1, MemberKind.Struct, false);
-
-		//
-		// Optional types which are used as types and for member lookup
-		//
-		runtime_helpers_type = CoreLookupType (ctx, "System.Runtime.CompilerServices", "RuntimeHelpers", MemberKind.Class, false);
-
-		// New in .NET 3.5
-		// Note: extension_attribute_type is already loaded
-		expression_type = CoreLookupType (ctx, "System.Linq.Expressions", "Expression", 1, MemberKind.Class, false);
+		return GetPredefinedMember (t, MemberFilter.Property (name, type), false, loc) as PropertySpec;
 	}
 
 	public static bool IsBuiltinType (TypeSpec t)
@@ -443,60 +651,6 @@ namespace Mono.CSharp {
 	{
 		return t.IsDelegate;
 	}
-
-	//
-	// When any element of the type is a dynamic type
-	//
-	// This method builds a transformation array for dynamic types
-	// used in places where DynamicAttribute cannot be applied to.
-	// It uses bool flag when type is of dynamic type and each
-	// section always starts with "false" for some reason.
-	//
-	// LAMESPEC: This should be part of C# specification !
-	// 
-	// Example: Func<dynamic, int, dynamic[]>
-	// Transformation: { false, true, false, false, true }
-	//
-	public static bool[] HasDynamicTypeUsed (TypeSpec t)
-	{
-		var ac = t as ArrayContainer;
-		if (ac != null) {
-			if (HasDynamicTypeUsed (ac.Element) != null)
-				return new bool[] { false, true };
-
-			return null;
-		}
-
-		if (t == null)
-			return null;
-
-		if (IsGenericType (t)) {
-			List<bool> transform = null;
-			var targs = GetTypeArguments (t);
-			for (int i = 0; i < targs.Length; ++i) {
-				var element = HasDynamicTypeUsed (targs [i]);
-				if (element != null) {
-					if (transform == null) {
-						transform = new List<bool> ();
-						for (int ii = 0; ii <= i; ++ii)
-							transform.Add (false);
-					}
-
-					transform.AddRange (element);
-				} else if (transform != null) {
-					transform.Add (false);
-				}
-			}
-
-			if (transform != null)
-				return transform.ToArray ();
-		}
-
-		if (object.ReferenceEquals (InternalType.Dynamic, t))
-			return new bool [] { true };
-
-		return null;
-	}
 	
 	// Obsolete
 	public static bool IsEnumType (TypeSpec t)
@@ -610,20 +764,17 @@ namespace Mono.CSharp {
 	//
 	// Checks whether `type' is a nested child of `parent'.
 	//
-	public static bool IsNestedChildOf (TypeSpec type, TypeSpec parent)
+	public static bool IsNestedChildOf (TypeSpec type, ITypeDefinition parent)
 	{
 		if (type == null)
 			return false;
 
-		type = type.GetDefinition (); // DropGenericTypeArguments (type);
-		parent = parent.GetDefinition (); // DropGenericTypeArguments (parent);
-
-		if (type == parent)
+		if (type.MemberDefinition == parent)
 			return false;
 
 		type = type.DeclaringType;
 		while (type != null) {
-			if (type.GetDefinition () == parent)
+			if (type.MemberDefinition == parent)
 				return true;
 
 			type = type.DeclaringType;
@@ -637,91 +788,6 @@ namespace Mono.CSharp {
 		return t == arg_iterator_type || t == typed_reference_type;
 	}
 
-	//
-	// Checks whether `invocationAssembly' is same or a friend of the assembly
-	//
-	public static bool IsThisOrFriendAssembly (Assembly invocationAssembly, Assembly assembly)
-	{
-		if (assembly == null)
-			throw new ArgumentNullException ("assembly");
-
-		// TODO: This can happen for constants used at assembly level and
-		// predefined members
-		// But there is no way to test for it for now, so it could be abused
-		// elsewhere too.
-		if (invocationAssembly == null)
-			invocationAssembly = CodeGen.Assembly.Builder;
-
-		if (invocationAssembly == assembly)
-			return true;
-
-		bool value;
-		if (assembly_internals_vis_attrs.TryGetValue (assembly, out value))
-			return value;
-
-		object[] attrs = assembly.GetCustomAttributes (typeof (InternalsVisibleToAttribute), false);
-		if (attrs.Length == 0) {
-			assembly_internals_vis_attrs.Add (assembly, false);
-			return false;
-		}
-
-		bool is_friend = false;
-
-		AssemblyName this_name = CodeGen.Assembly.Name;
-		if (this_name == null)
-			return false;
-
-		byte [] this_token = this_name.GetPublicKeyToken ();
-		foreach (InternalsVisibleToAttribute attr in attrs) {
-			if (attr.AssemblyName == null || attr.AssemblyName.Length == 0)
-				continue;
-			
-			AssemblyName aname = null;
-			try {
-				aname = new AssemblyName (attr.AssemblyName);
-			} catch (FileLoadException) {
-			} catch (ArgumentException) {
-			}
-
-			if (aname == null || aname.Name != this_name.Name)
-				continue;
-			
-			byte [] key_token = aname.GetPublicKeyToken ();
-			if (key_token != null) {
-				if (this_token.Length == 0) {
-					// Same name, but assembly is not strongnamed
-					Error_FriendAccessNameNotMatching (aname.FullName, RootContext.ToplevelTypes.Compiler.Report);
-					break;
-				}
-				
-				if (!CompareKeyTokens (this_token, key_token))
-					continue;
-			}
-
-			is_friend = true;
-			break;
-		}
-
-		assembly_internals_vis_attrs.Add (assembly, is_friend);
-		return is_friend;
-	}
-
-	static bool CompareKeyTokens (byte [] token1, byte [] token2)
-	{
-		for (int i = 0; i < token1.Length; i++)
-			if (token1 [i] != token2 [i])
-				return false;
-
-		return true;
-	}
-
-	static void Error_FriendAccessNameNotMatching (string other_name, Report Report)
-	{
-		Report.Error (281,
-			"Friend access was granted to `{0}', but the output assembly is named `{1}'. Try adding a reference to `{0}' or change the output assembly name to match it",
-			other_name, CodeGen.Assembly.Name.FullName);
-	}
-
 	public static TypeSpec GetElementType (TypeSpec t)
 	{
 		return ((ElementTypeSpec)t).Element;
@@ -838,12 +904,6 @@ namespace Mono.CSharp {
 		return type.IsGeneric;
 	}
 
-	// TODO: Implement correctly
-	public static bool ContainsGenericParameters (TypeSpec type)
-	{
-		return type.GetMetaInfo ().ContainsGenericParameters;
-	}
-
 	public static TypeSpec[] GetTypeArguments (TypeSpec t)
 	{
 		// TODO: return empty array !!
diff --git a/mcs/mcs/typespec.cs b/mcs/mcs/typespec.cs
index 242dacd..33cc5b5 100644
--- a/mcs/mcs/typespec.cs
+++ b/mcs/mcs/typespec.cs
@@ -11,13 +11,20 @@
 using System;
 using System.Collections.Generic;
 using System.Text;
-using System.Linq;
+
+#if STATIC
+using MetaType = IKVM.Reflection.Type;
+using IKVM.Reflection;
+#else
+using MetaType = System.Type;
+using System.Reflection;
+#endif
 
 namespace Mono.CSharp
 {
 	public class TypeSpec : MemberSpec
 	{
-		protected Type info;
+		protected MetaType info;
 		protected MemberCache cache;
 		protected IList<TypeSpec> ifaces;
 		TypeSpec base_type;
@@ -26,9 +33,10 @@ namespace Mono.CSharp
 
 		public static readonly TypeSpec[] EmptyTypes = new TypeSpec[0];
 
+#if !STATIC
 		// Reflection Emit hacking
-		static Type TypeBuilder;
-		static Type GenericTypeBuilder;
+		static readonly Type TypeBuilder;
+		static readonly Type GenericTypeBuilder;
 
 		static TypeSpec ()
 		{
@@ -38,8 +46,9 @@ namespace Mono.CSharp
 			if (GenericTypeBuilder == null)
 				GenericTypeBuilder = assembly.GetType ("System.Reflection.Emit.TypeBuilderInstantiation");
 		}
+#endif
 
-		public TypeSpec (MemberKind kind, TypeSpec declaringType, ITypeDefinition definition, Type info, Modifiers modifiers)
+		public TypeSpec (MemberKind kind, TypeSpec declaringType, ITypeDefinition definition, MetaType info, Modifiers modifiers)
 			: base (kind, declaringType, definition, modifiers)
 		{
 			this.declaringType = declaringType;
@@ -66,6 +75,18 @@ namespace Mono.CSharp
 			}
 		}
 
+		public virtual BuildinTypeSpec.Type BuildinType {
+			get {
+				return BuildinTypeSpec.Type.None;
+			}
+		}
+
+		public bool HasDynamicElement {
+			get {
+				return (state & StateFlags.HasDynamicElement) != 0;
+			}
+		}
+
 		public virtual IList<TypeSpec> Interfaces {
 			get {
 				return ifaces;
@@ -174,8 +195,12 @@ namespace Mono.CSharp
 
 		public bool IsTypeBuilder {
 			get {
+#if STATIC
+				return true;
+#else
 				var meta = GetMetaInfo().GetType ();
 				return meta == TypeBuilder || meta == GenericTypeBuilder;
+#endif
 			}
 		}
 
@@ -194,9 +219,12 @@ namespace Mono.CSharp
 			}
 		}
 
-		public virtual MemberCache MemberCacheTypes {
+		public MemberCache MemberCacheTypes {
 			get {
-				return MemberCache;
+				if (cache == null)
+					InitializeMemberCache (true);
+
+				return cache;
 			}
 		}	
 
@@ -253,7 +281,7 @@ namespace Mono.CSharp
 			return aua;
 		}
 
-		public virtual Type GetMetaInfo ()
+		public virtual MetaType GetMetaInfo ()
 		{
 			return info;
 		}
@@ -289,13 +317,16 @@ namespace Mono.CSharp
 			return "<" + TypeManager.CSharpName (MemberDefinition.TypeParameters) + ">";
 		}
 
-		public bool ImplementsInterface (TypeSpec iface)
+		public bool ImplementsInterface (TypeSpec iface, bool variantly)
 		{
 			var t = this;
 			do {
 				if (t.Interfaces != null) {	// TODO: Try t.iface
 					foreach (TypeSpec i in t.Interfaces) {
-						if (i == iface || TypeSpecComparer.Variant.IsEqual (i, iface) || TypeSpecComparer.IsEqual (i, iface))
+						if (i == iface || TypeSpecComparer.IsEqual (i, iface))
+							return true;
+
+						if (variantly && TypeSpecComparer.Variant.IsEqual (i, iface))
 							return true;
 					}
 				}
@@ -308,7 +339,12 @@ namespace Mono.CSharp
 
 		protected virtual void InitializeMemberCache (bool onlyTypes)
 		{
-			cache = MemberDefinition.LoadMembers (this);
+			MemberDefinition.LoadMembers (this, onlyTypes, ref cache);
+
+			if (onlyTypes)
+				state |= StateFlags.PendingMemberCacheMembers;
+			else
+				state &= ~StateFlags.PendingMemberCacheMembers;
 		}
 
 		//
@@ -350,8 +386,9 @@ namespace Mono.CSharp
 			// When inflating nested type from inside the type instance will be same
 			// because type parameters are same for all nested types
 			//
-			if (DeclaringType == inflator.TypeInstance)
+			if (DeclaringType == inflator.TypeInstance) {
 				return MakeGenericType (targs);
+			}
 
 			return new InflatedTypeSpec (this, inflator.TypeInstance, targs);
 		}
@@ -359,16 +396,30 @@ namespace Mono.CSharp
 		public InflatedTypeSpec MakeGenericType (TypeSpec[] targs)
 		{
 			if (targs.Length == 0 && !IsNested)
-				throw new ArgumentException ("Empty type arguments");
+				throw new ArgumentException ("Empty type arguments for type " + GetSignatureForError ());
 
 			InflatedTypeSpec instance;
 
-			if (inflated_instances == null)
+			if (inflated_instances == null) {
 				inflated_instances = new Dictionary<TypeSpec[], InflatedTypeSpec> (TypeSpecComparer.Default);
 
+				if (IsNested) {
+					instance = this as InflatedTypeSpec;
+					if (instance != null) {
+						//
+						// Nested types could be inflated on already inflated instances
+						// Caching this type ensured we are using same instance for
+						// inside/outside inflation using local type parameters
+						//
+						inflated_instances.Add (TypeArguments, instance);
+					}
+				}
+			}
+
 			if (!inflated_instances.TryGetValue (targs, out instance)) {
 				if (GetDefinition () != this && !IsNested)
-					throw new InternalErrorException ("Only type definition or nested non-inflated types can be used to call MakeGenericType");
+					throw new InternalErrorException ("`{0}' must be type definition or nested non-inflated type to MakeGenericType",
+						GetSignatureForError ());
 
 				instance = new InflatedTypeSpec (this, declaringType, targs);
 				inflated_instances.Add (targs, instance);
@@ -382,7 +433,7 @@ namespace Mono.CSharp
 			return this;
 		}
 
-		public void SetMetaInfo (Type info)
+		public void SetMetaInfo (MetaType info)
 		{
 			if (this.info != null)
 				throw new InternalErrorException ("MetaInfo reset");
@@ -396,16 +447,66 @@ namespace Mono.CSharp
 		}
 	}
 
-	public class PredefinedTypeSpec : TypeSpec
+	public sealed class BuildinTypeSpec : TypeSpec
 	{
-		string name;
-		string ns;
+		public enum Type
+		{
+			None = 0,
+
+			// TODO: Reorder it more carefully so we can do fast compares
+			Object,
+			ValueType,
+			Attribute,
+			Int,
+			UInt,
+			Long,
+			ULong,
+			Float,
+			Double,
+			Char,
+			Short,
+			Decimal,
+			Bool,
+			SByte,
+			Byte,
+			UShort,
+			String,
+			Enum,
+			Delegate,
+			MulticastDelegate,
+			Void,
+			Array,
+			Type,
+			IEnumerator,
+			IEnumerable,
+			IDisposable,
+			IntPtr,
+			UIntPtr,
+			RuntimeFieldHandle,
+			RuntimeTypeHandle,
+			Exception,
+
+			Null,
+			Dynamic
+		}
+
+		readonly Type type;
+		readonly string ns;
+		readonly string name;
 
-		public PredefinedTypeSpec (MemberKind kind, string ns, string name)
+		public BuildinTypeSpec (MemberKind kind, string ns, string name, Type buildinKind)
 			: base (kind, null, null, null, Modifiers.PUBLIC)
 		{
-			this.name = name;
+			this.type = buildinKind;
 			this.ns = ns;
+			this.name = name;
+		}
+
+		public BuildinTypeSpec (string name, Type buildinKind)
+			: this (MemberKind.InternalCompilerType, "", name, buildinKind)
+		{
+			// Make all internal types CLS-compliant, non-obsolete, compact
+			state = (state & ~(StateFlags.CLSCompliant_Undetected | StateFlags.Obsolete_Undetected | StateFlags.MissingDependency_Undetected)) | StateFlags.CLSCompliant;
 		}
 
 		#region Properties
@@ -416,6 +517,18 @@ namespace Mono.CSharp
 			}
 		}
 
+		public override BuildinTypeSpec.Type BuildinType {
+			get {
+				return type;
+			}
+		}
+
+		public string FullName {
+			get {
+				return ns + '.' + name;
+			}
+		}
+
 		public override string Name {
 			get {
 				return name;
@@ -432,7 +545,7 @@ namespace Mono.CSharp
 
 		public override string GetSignatureForError ()
 		{
-			switch (name) {
+			switch (Name) {
 			case "Int32": return "int";
 			case "Int64": return "long";
 			case "String": return "string";
@@ -451,13 +564,17 @@ namespace Mono.CSharp
 			case "SByte": return "sbyte";
 			}
 
-			return ns + "." + name;
+			if (ns.Length == 0)
+				return name;
+
+			return FullName;
 		}
 
-		public void SetDefinition (ITypeDefinition td, Type type)
+		public void SetDefinition (ITypeDefinition td, MetaType type, Modifiers mod)
 		{
 			this.definition = td;
 			this.info = type;
+			this.modifiers |= (mod & ~Modifiers.AccessibilityMask);
 		}
 
 		public void SetDefinition (TypeSpec ts)
@@ -466,6 +583,7 @@ namespace Mono.CSharp
 			this.info = ts.GetMetaInfo ();
 			this.BaseType = ts.BaseType;
 			this.Interfaces = ts.Interfaces;
+			this.modifiers = ts.Modifiers;
 		}
 	}
 
@@ -544,21 +662,6 @@ namespace Mono.CSharp
 					return tp_b != null && tp_a.IsMethodOwned == tp_b.IsMethodOwned && tp_a.DeclaredPosition == tp_b.DeclaredPosition;
 				}
 
-				if (a.TypeArguments.Length != b.TypeArguments.Length)
-					return false;
-
-				if (a.TypeArguments.Length != 0) {
-					if (a.MemberDefinition != b.MemberDefinition)
-						return false;
-
-					for (int i = 0; i < a.TypeArguments.Length; ++i) {
-						if (!IsEqual (a.TypeArguments[i], b.TypeArguments[i]))
-							return false;
-					}
-
-					return true;
-				}
-
 				var ac_a = a as ArrayContainer;
 				if (ac_a != null) {
 					var ac_b = b as ArrayContainer;
@@ -568,7 +671,20 @@ namespace Mono.CSharp
 				if (a == InternalType.Dynamic || b == InternalType.Dynamic)
 					return b == TypeManager.object_type || a == TypeManager.object_type;
 
-				return false;
+				if (a.MemberDefinition != b.MemberDefinition)
+					return false;
+
+				do {
+					for (int i = 0; i < a.TypeArguments.Length; ++i) {
+						if (!IsEqual (a.TypeArguments[i], b.TypeArguments[i]))
+							return false;
+					}
+
+					a = a.DeclaringType;
+					b = b.DeclaringType;
+				} while (a != null);
+
+				return true;
 			}
 
 			//
@@ -638,7 +754,7 @@ namespace Mono.CSharp
 				var targs_definition = target_type_def.TypeParameters;
 
 				if (!type1.IsInterface && !type1.IsDelegate) {
-					return TypeSpecComparer.Equals (t1_targs, t2_targs);
+					return false;
 				}
 
 				for (int i = 0; i < targs_definition.Length; ++i) {
@@ -807,18 +923,39 @@ namespace Mono.CSharp
 			if (a == InternalType.Dynamic || b == InternalType.Dynamic)
 				return b == TypeManager.object_type || a == TypeManager.object_type;
 
-			if (a == null || !a.IsGeneric || b == null || !b.IsGeneric)
+			if (a == null)
+				return false;
+
+			if (a.IsArray) {
+				var a_a = (ArrayContainer) a;
+				var b_a = b as ArrayContainer;
+				if (b_a == null)
+					return false;
+
+				return IsEqual (a_a.Element, b_a.Element) && a_a.Rank == b_a.Rank;
+			}
+
+			if (!a.IsGeneric || b == null || !b.IsGeneric)
 				return false;
 
 			if (a.MemberDefinition != b.MemberDefinition)
 				return false;
 
-			return Equals (a.TypeArguments, b.TypeArguments);
+			do {
+				if (!Equals (a.TypeArguments, b.TypeArguments))
+					return false;
+
+				a = a.DeclaringType;
+				b = b.DeclaringType;
+			} while (a != null);
+
+			return true;
 		}
 	}
 
 	public interface ITypeDefinition : IMemberDefinition
 	{
+		IAssemblyDefinition DeclaringAssembly { get; }
 		string Namespace { get; }
 		int TypeParametersCount { get; }
 		TypeParameterSpec[] TypeParameters { get; }
@@ -826,16 +963,17 @@ namespace Mono.CSharp
 		TypeSpec GetAttributeCoClass ();
 		string GetAttributeDefaultMember ();
 		AttributeUsageAttribute GetAttributeUsage (PredefinedAttribute pa);
-		MemberCache LoadMembers (TypeSpec declaringType);
+		bool IsInternalAsPublic (IAssemblyDefinition assembly);
+		void LoadMembers (TypeSpec declaringType, bool onlyTypes, ref MemberCache cache);
 	}
 
-	class InternalType : TypeSpec
+	class InternalType : TypeSpec, ITypeDefinition
 	{
 		public static readonly InternalType AnonymousMethod = new InternalType ("anonymous method");
 		public static readonly InternalType Arglist = new InternalType ("__arglist");
-		public static readonly InternalType Dynamic = new InternalType ("dynamic", null);
+		public static BuildinTypeSpec Dynamic;
 		public static readonly InternalType MethodGroup = new InternalType ("method group");
-		public static readonly InternalType Null = new InternalType ("null");
+		public static BuildinTypeSpec Null;
 		public static readonly InternalType FakeInternalType = new InternalType ("<fake$type>");
 
 		readonly string name;
@@ -850,6 +988,7 @@ namespace Mono.CSharp
 			: base (MemberKind.InternalCompilerType, null, null, null, Modifiers.PUBLIC)
 		{
 			this.name = name;
+			this.definition = this;
 			cache = MemberCache.Empty;
 
 			// Make all internal types CLS-compliant, non-obsolete
@@ -864,27 +1003,118 @@ namespace Mono.CSharp
 			}
 		}
 
+		IAssemblyDefinition ITypeDefinition.DeclaringAssembly {
+			get {
+				throw new NotImplementedException ();
+			}
+		}
+
+		bool IMemberDefinition.IsImported {
+			get {
+				return false;
+			}
+		}
+
 		public override string Name {
 			get {
 				return name;
 			}
 		}
 
+		string ITypeDefinition.Namespace {
+			get {
+				return null;
+			}
+		}
+
+		int ITypeDefinition.TypeParametersCount {
+			get {
+				return 0;
+			}
+		}
+
+		TypeParameterSpec[] ITypeDefinition.TypeParameters {
+			get {
+				return null;
+			}
+		}
+
 		#endregion
 
 		public override string GetSignatureForError ()
 		{
 			return name;
 		}
+
+		#region ITypeDefinition Members
+
+		TypeSpec ITypeDefinition.GetAttributeCoClass ()
+		{
+			return null;
+		}
+
+		string ITypeDefinition.GetAttributeDefaultMember ()
+		{
+			return null;
+		}
+
+		AttributeUsageAttribute ITypeDefinition.GetAttributeUsage (PredefinedAttribute pa)
+		{
+			return null;
+		}
+
+		bool ITypeDefinition.IsInternalAsPublic (IAssemblyDefinition assembly)
+		{
+			throw new NotImplementedException ();
+		}
+
+		void ITypeDefinition.LoadMembers (TypeSpec declaringType, bool onlyTypes, ref MemberCache cache)
+		{
+			throw new NotImplementedException ();
+		}
+
+		string[] IMemberDefinition.ConditionalConditions ()
+		{
+			return null;
+		}
+
+		ObsoleteAttribute IMemberDefinition.GetAttributeObsolete ()
+		{
+			return null;
+		}
+
+		bool IMemberDefinition.IsNotCLSCompliant ()
+		{
+			return false;
+		}
+
+		void IMemberDefinition.SetIsAssigned ()
+		{
+		}
+
+		void IMemberDefinition.SetIsUsed ()
+		{
+		}
+
+		#endregion
 	}
 
 	public abstract class ElementTypeSpec : TypeSpec, ITypeDefinition
 	{
-		protected ElementTypeSpec (MemberKind kind, TypeSpec element, Type info)
+		protected ElementTypeSpec (MemberKind kind, TypeSpec element, MetaType info)
 			: base (kind, element.DeclaringType, null, info, element.Modifiers)
 		{
 			this.Element = element;
 
+			// Some flags can be copied directly from the element
+			const StateFlags shared_flags = StateFlags.CLSCompliant | StateFlags.CLSCompliant_Undetected
+				| StateFlags.Obsolete | StateFlags.Obsolete_Undetected | StateFlags.HasDynamicElement;
+			state &= ~shared_flags;
+			state |= (element.state & shared_flags);
+
+			if (element == InternalType.Dynamic)
+				state |= StateFlags.HasDynamicElement;
+
 			// Has to use its own type definition instead of just element definition to
 			// correctly identify itself for cases like x.MemberDefininition == predefined.MemberDefinition
 			this.definition = this;
@@ -933,12 +1163,17 @@ namespace Mono.CSharp
 
 		#region ITypeDefinition Members
 
-		System.Reflection.Assembly IMemberDefinition.Assembly {
+		IAssemblyDefinition ITypeDefinition.DeclaringAssembly {
 			get {
-				return Element.Assembly;
+				return Element.MemberDefinition.DeclaringAssembly;
 			}
 		}
 
+		bool ITypeDefinition.IsInternalAsPublic (IAssemblyDefinition assembly)
+		{
+			return Element.MemberDefinition.IsInternalAsPublic (assembly);
+		}
+
 		public string Namespace {
 			get { throw new NotImplementedException (); }
 		}
@@ -965,9 +1200,9 @@ namespace Mono.CSharp
 			return Element.MemberDefinition.GetAttributeDefaultMember ();
 		}
 
-		public MemberCache LoadMembers (TypeSpec declaringType)
+		public void LoadMembers (TypeSpec declaringType, bool onlyTypes, ref MemberCache cache)
 		{
-			return Element.MemberDefinition.LoadMembers (declaringType);
+			Element.MemberDefinition.LoadMembers (declaringType, onlyTypes, ref cache);
 		}
 
 		public bool IsImported {
@@ -1042,59 +1277,59 @@ namespace Mono.CSharp
 			}
 		}
 
-		public System.Reflection.MethodInfo GetConstructor ()
+		public MethodInfo GetConstructor ()
 		{
 			var mb = RootContext.ToplevelTypes.Builder;
 
-			var arg_types = new Type[rank];
+			var arg_types = new MetaType[rank];
 			for (int i = 0; i < rank; i++)
 				arg_types[i] = TypeManager.int32_type.GetMetaInfo ();
 
 			var ctor = mb.GetArrayMethod (
-				GetMetaInfo (), ".ctor",
-				System.Reflection.CallingConventions.HasThis,
+				GetMetaInfo (), Constructor.ConstructorName,
+				CallingConventions.HasThis,
 				null, arg_types);
 
 			return ctor;
 		}
 
-		public System.Reflection.MethodInfo GetAddressMethod ()
+		public MethodInfo GetAddressMethod ()
 		{
 			var mb = RootContext.ToplevelTypes.Builder;
 
-			var arg_types = new Type[rank];
+			var arg_types = new MetaType[rank];
 			for (int i = 0; i < rank; i++)
 				arg_types[i] = TypeManager.int32_type.GetMetaInfo ();
 
 			var address = mb.GetArrayMethod (
 				GetMetaInfo (), "Address",
-				System.Reflection.CallingConventions.HasThis | System.Reflection.CallingConventions.Standard,
+				CallingConventions.HasThis | CallingConventions.Standard,
 				ReferenceContainer.MakeType (Element).GetMetaInfo (), arg_types);
 
 			return address;
 		}
 
-		public System.Reflection.MethodInfo GetGetMethod ()
+		public MethodInfo GetGetMethod ()
 		{
 			var mb = RootContext.ToplevelTypes.Builder;
 
-			var arg_types = new Type[rank];
+			var arg_types = new MetaType[rank];
 			for (int i = 0; i < rank; i++)
 				arg_types[i] = TypeManager.int32_type.GetMetaInfo ();
 
 			var get = mb.GetArrayMethod (
 				GetMetaInfo (), "Get",
-				System.Reflection.CallingConventions.HasThis | System.Reflection.CallingConventions.Standard,
+				CallingConventions.HasThis | CallingConventions.Standard,
 				Element.GetMetaInfo (), arg_types);
 
 			return get;
 		}
 
-		public System.Reflection.MethodInfo GetSetMethod ()
+		public MethodInfo GetSetMethod ()
 		{
 			var mb = RootContext.ToplevelTypes.Builder;
 
-			var arg_types = new Type[rank + 1];
+			var arg_types = new MetaType[rank + 1];
 			for (int i = 0; i < rank; i++)
 				arg_types[i] = TypeManager.int32_type.GetMetaInfo ();
 
@@ -1102,13 +1337,13 @@ namespace Mono.CSharp
 
 			var set = mb.GetArrayMethod (
 				GetMetaInfo (), "Set",
-				System.Reflection.CallingConventions.HasThis | System.Reflection.CallingConventions.Standard,
+				CallingConventions.HasThis | CallingConventions.Standard,
 				TypeManager.void_type.GetMetaInfo (), arg_types);
 
 			return set;
 		}
 
-		public override Type GetMetaInfo ()
+		public override MetaType GetMetaInfo ()
 		{
 			if (info == null) {
 				if (rank == 1)
@@ -1172,7 +1407,7 @@ namespace Mono.CSharp
 		{
 		}
 
-		public override Type GetMetaInfo ()
+		public override MetaType GetMetaInfo ()
 		{
 			if (info == null) {
 				info = Element.GetMetaInfo ().MakeByRefType ();
@@ -1209,7 +1444,7 @@ namespace Mono.CSharp
 			state &= ~StateFlags.CLSCompliant_Undetected;
 		}
 
-		public override Type GetMetaInfo ()
+		public override MetaType GetMetaInfo ()
 		{
 			if (info == null) {
 				info = Element.GetMetaInfo ().MakePointerType ();
diff --git a/mcs/mcs/visit.cs b/mcs/mcs/visit.cs
index 568d09a..b531c75 100644
--- a/mcs/mcs/visit.cs
+++ b/mcs/mcs/visit.cs
@@ -247,11 +247,6 @@ namespace Mono.CSharp
 			return null;
 		}
 
-		public virtual object Visit (UsingTemporary usingTemporaryStatement)
-		{
-			return null;
-		}
-
 		public virtual object Visit (Foreach foreachStatement)
 		{
 			return null;
diff --git a/mcs/nunit.key b/mcs/nunit.key
deleted file mode 100644
index 733af42..0000000
Binary files a/mcs/nunit.key and /dev/null differ
diff --git a/mcs/tests/ChangeLog b/mcs/tests/ChangeLog
index de9531c..b4bb440 100644
--- a/mcs/tests/ChangeLog
+++ b/mcs/tests/ChangeLog
@@ -1,16 +1,708 @@
+2011-01-08  Marek Safar  <marek.safar at gmail.com>
+
+	Test update
+
+2011-01-07  Marek Safar  <marek.safar at gmail.com>
+
+	Tests update
+
+2011-01-06  Marek Safar  <marek.safar at gmail.com>
+
+	Tests update
+
+2011-01-05  Marek Safar  <marek.safar at gmail.com>
+
+	[662440] Don't expand nested type builders of non-generic types
+
+2011-01-04  Marek Safar  <marek.safar at gmail.com>
+
+	New test
+
+2011-01-04  Marek Safar  <marek.safar at gmail.com>
+
+	Cleanup isinst expression resolver
+
+2011-01-04  Marek Safar  <marek.safar at gmail.com>
+
+	Use reduced expression for transparent is check
+
+2010-12-20  Marek Safar  <marek.safar at gmail.com>
+
+	Disable ikvm exception optimization until it's fixed
+
+2010-12-20  Marek Safar  <marek.safar at gmail.com>
+
+	[660260] A static method is inaccessible from a nested type with
+	explicit generic args
+
+2010-12-20  Marek Safar  <marek.safar at gmail.com>
+
+	[660255] Keep inflated non-inflated method info independently
+
+2010-12-17  Marek Safar  <marek.safar at gmail.com>
+
+	[660077] Setup class interfaces for defined types in same way as
+	for imported types
+
+2010-12-17  Marek Safar  <marek.safar at gmail.com>
+
+	Made SecurityAction predefined type
+
+2010-12-17  Marek Safar  <marek.safar at gmail.com>
+
+	[657601] Fixes parsing pragma warning when encounter eof
+
+2010-12-16  Marek Safar  <marek.safar at gmail.com>
+
+	[659970] Close anonymous method scope also for top-level blocks
+
+2010-12-16  Marek Safar  <marek.safar at gmail.com>
+
+	New test
+
+2010-12-15  Marek Safar  <marek.safar at gmail.com>
+
+	Fixed cloning of default switch case
+
+2010-12-15  Marek Safar  <marek.safar at gmail.com>
+
+	New tests.
+
+2010-12-14  Marek Safar  <marek.safar at gmail.com>
+
+	[653710] Check type parameter reference type constraint
+	recursively
+
+2010-12-14  Marek Safar  <marek.safar at gmail.com>
+
+	[656918] Implement expression tree access to hoisted variable
+	reference
+
+2010-12-14  Marek Safar  <marek.safar at gmail.com>
+
+	[656918] Emit instance expression for ET delegate creation
+
+2010-12-14  Marek Safar  <marek.safar at gmail.com>
+
+	[655284] Implemented automatic assembly version numbers
+
+2010-12-14  Marek Safar  <marek.safar at gmail.com>
+
+	[657623] Fix incorrect logic in value type parameter `is' check
+
+2010-12-14  Marek Safar  <marek.safar at gmail.com>
+
+	[657797] Expand type member cache using secondary constraints as
+	well.
+
+2010-12-13  Marek Safar  <marek.safar at gmail.com>
+
+	New test.
+
+2010-12-13  Marek Safar  <marek.safar at gmail.com>
+
+	[659038] Check interface hierarchy before reporting ambiguous
+	errors
+
+2010-12-13  Marek Safar  <marek.safar at gmail.com>
+
+	[657862] Correctly scan for parent of base method override
+
+2010-12-13  Marek Safar  <marek.safar at gmail.com>
+
+	[659022] Resolve reduced expressions
+
+2010-12-09  Marek Safar  <marek.safar at gmail.com>
+
+	New test
+
+2010-12-07  Marek Safar  <marek.safar at gmail.com>
+
+	Test update
+
+2010-12-03  Zoltan Varga  <vargaz at gmail.com>
+
+	Add a 'check' target to mcs/tests.
+
+2010-12-03  Marek Safar  <marek.safar at gmail.com>
+
+	Test files update
+
+2010-11-30  Marek Safar  <marek.safar at gmail.com>
+
+	Tests update
+
+2010-11-30  Marek Safar  <marek.safar at gmail.com>
+
+	Emit optional default value-type parameter using nullref
+
+2010-11-30  Marek Safar  <marek.safar at gmail.com>
+
+	New test
+
+2010-11-26  Marek Safar  <marek.safar at gmail.com>
+
+	Removed few custom attribute IsDefined calls
+
+2010-11-26  Marek Safar  <marek.safar at gmail.com>
+
+	Import constants using their raw values only
+
+2010-11-26  Marek Safar  <marek.safar at gmail.com>
+
+	New test
+
+2010-11-24  Marek Safar  <marek.safar at gmail.com>
+
+	Inflate imported type arguments types with type definition type
+	arguments
+
+2010-11-24  Jb Evain  <jbevain at gmail.com>
+
+	Port mcs/tests to cecil-light
+
+2010-11-23  Marek Safar  <marek.safar at gmail.com>
+
+	Remove typeof comparisons
+
+2010-11-22  Marek Safar  <marek.safar at gmail.com>
+
+	Don't multiply fixed buffer size (it's done by runtime). Fixes
+	#654058
+
+2010-11-22  Marek Safar  <marek.safar at gmail.com>
+
+	Emit fixed buffers using standard api only
+
+2010-11-22  Marek Safar  <marek.safar at gmail.com>
+
+	group all fixed buffer tests
+
+2010-11-22  Marek Safar  <marek.safar at gmail.com>
+
+	Updated mcs tests failures
+
+2010-11-21  Marek Safar  <marek.safar at gmail.com>
+
+	Make generated assembly attributes container name unique
+
+2010-11-21  Marek Safar  <marek.safar at gmail.com>
+
+	Improve handling of netmodules. Fixes #504085
+
+2010-11-19  Marek Safar  <marek.safar at gmail.com>
+
+	Add AssemblySpec to handle all assembly attributes in same way.
+
+2010-11-12  Marek Safar  <marek.safar at gmail.com>
+
+	New tests
+
+2010-11-12  Marek Safar  <marek.safar at gmail.com>
+
+	Inflate nested non-generic interfaces inside generic type
+
+2010-11-11  Marek Safar  <marek.safar at gmail.com>
+
+	New tests.
+
+2010-11-11  Marek Safar  <marek.safar at gmail.com>
+
+	[650850] Inflate all hoisted type parameter constraints
+
+2010-11-11  Marek Safar  <marek.safar at gmail.com>
+
+	Synchronize event add/remove using CAS
+
+2010-11-10  Marek Safar  <marek.safar at gmail.com>
+
+	Implement dynamic mutator over dynamic indexer
+
+2010-11-10  Marek Safar  <marek.safar at gmail.com>
+
+	More tweaks for nullable binary operation
+
+2010-11-10  Marek Safar  <marek.safar at gmail.com>
+
+	False user-operator has priority over logical not user-operator
+
+2010-11-10  Marek Safar  <marek.safar at gmail.com>
+
+	Fixes a logic error in filtering out operators like methods
+
+2010-11-09  Marek Safar  <marek.safar at gmail.com>
+
+	Logical binary operarions with dynamic arguments have to be
+	unfolded
+
+2010-11-09  Marek Safar  <marek.safar at gmail.com>
+
+	Import declaring type base type when walking up the tree
+
+2010-11-08  Marek Safar  <marek.safar at gmail.com>
+
+	Emit correctly EndInvoke parameters attributes and names
+
+2010-11-08  Marek Safar  <marek.safar at gmail.com>
+
+	Fixed ambiguity for overload resolution between params and
+	optional parameter of same type
+
+2010-11-08  Marek Safar  <marek.safar at gmail.com>
+
+	[651547] Check definitely assigned struct this access correctly.
+
+2010-11-05  Marek Safar  <marek.safar at gmail.com>
+
+	Only when importing nested types definition base type cannot be
+	setup
+
+2010-11-04  Marek Safar  <marek.safar at gmail.com>
+
+	Allow liften null as a given number of bit positions for shift
+	operator
+
+2010-11-04  Marek Safar  <marek.safar at gmail.com>
+
+	Add boxing for dynamic nullable conversion of coalescing operator
+
+2010-11-04  Marek Safar  <marek.safar at gmail.com>
+
+	Reject inaccessible members based on declaring type in dynamic
+	context
+
+2010-11-03  Marek Safar  <marek.safar at gmail.com>
+
+	Inflate also event backing field
+
+2010-11-03  Marek Safar  <marek.safar at gmail.com>
+
+	Another missing full dynamic type equality check
+
+2010-11-03  Marek Safar  <marek.safar at gmail.com>
+
+	Implement lock statement over generic type parameter
+
+2010-11-03  Marek Safar  <marek.safar at gmail.com>
+
+	Reset lock_taken before entering Monitor.Enter
+
+2010-11-03  Marek Safar  <marek.safar at gmail.com>
+
+	ExclusiveOr is not nullable bitwise boolean operator
+
+2010-11-03  Marek Safar  <marek.safar at gmail.com>
+
+	A candidate method can use dynamic in expanded form at non-first
+	position
+
+2010-11-03  Marek Safar  <marek.safar at gmail.com>
+
+	typeof expression does not need unsafe context for pointer types
+
+2010-11-03  Marek Safar  <marek.safar at gmail.com>
+
+	Pass checked context to compound member access setters
+
+2010-11-02  Marek Safar  <marek.safar at gmail.com>
+
+	Emit lock statement using Monitor.Enter (object, ref bool) when
+	available
+
+2010-11-02  Marek Safar  <marek.safar at gmail.com>
+
+	Implements indirect delegates invocation via dynamic member
+	dispatch
+
+2010-11-01  Marek Safar  <marek.safar at gmail.com>
+
+	Pass value type dynamic members as by-ref to persist member side
+	effects
+
+2010-11-01  Marek Safar  <marek.safar at gmail.com>
+
+	Convert dynamic assignment in checked context when set
+
+2010-11-01  Marek Safar  <marek.safar at gmail.com>
+
+	Check for unfixed type arguments before calling overload
+	resolution for inferred return type
+
 2010-11-01  Marek Safar  <marek.safar at gmail.com>
 
 	Set correct result type for chained folded enum subtraction
 
+2010-10-29  Marek Safar  <marek.safar at gmail.com>
+
+	Make dynamic array access index expresions in checked context
+
+2010-10-29  Marek Safar  <marek.safar at gmail.com>
+
+	Ignore private methods in batch import
+
+2010-10-28  Marek Safar  <marek.safar at gmail.com>
+
+	Fix emitted code for predefined or/and operation between bool? and
+	bool
+
+2010-10-28  Marek Safar  <marek.safar at gmail.com>
+
+	Add more type parameter checks for inherited constraints.
+
+2010-10-27  Marek Safar  <marek.safar at gmail.com>
+
+	New test.
+
+2010-10-27  Marek Safar  <marek.safar at gmail.com>
+
+	Implement type inference of dynamic arguments used as unknown
+	types
+
+2010-10-27  Marek Safar  <marek.safar at gmail.com>
+
+	More tests
+
+2010-10-27  Marek Safar  <marek.safar at gmail.com>
+
+	[649448] Compare original goto block for cloned blocks.
+
+2010-10-27  Marek Safar  <marek.safar at gmail.com>
+
+	[648360] When inflating nested generic type use same type
+	arguments to not inflate already inflated type
+
+2010-10-26  Marek Safar  <marek.safar at gmail.com>
+
+	Check nested declaring types when testing member overrides
+
+2010-10-23  Marek Safar  <marek.safar at gmail.com>
+
+	New test.
+
+2010-10-22  Marek Safar  <marek.safar at gmail.com>
+
+	Use faster MemberKind when checking for a nested type
+
+2010-10-22  Marek Safar  <marek.safar at gmail.com>
+
+	Include parent type parameters when inflating nested type
+	parameter constraint of type parameter type
+
+2010-10-21  Marek Safar  <marek.safar at gmail.com>
+
+	Add dynamic conversion to coalescing operator
+
+2010-10-21  Marek Safar  <marek.safar at gmail.com>
+
+	Implement closest override return type matching
+
+2010-10-20  Marek Safar  <marek.safar at gmail.com>
+
+	Forget to re-add this test file
+
+2010-10-20  Andrew Jorgensen  <ajorgensen at novell.com>
+
+	README.tests was deleted in d9c8bdf
+
+2010-10-20  Marek Safar  <marek.safar at gmail.com>
+
+	Clean up test files
+
+2010-10-20  Marek Safar  <marek.safar at gmail.com>
+
+	[601801] Fixes for parsing nant documentation
+
+	Gleb Golubitsky <rush.william at gmail.com>
+
+2010-10-20  Marek Safar  <marek.safar at gmail.com>
+
+	[647845] Don't skip parent types when looking for simple name
+
+2010-10-20  Marek Safar  <marek.safar at gmail.com>
+
+	More work on ambiguous named arguments
+
+2010-10-19  Marek Safar  <marek.safar at gmail.com>
+
+	More optional parameter VB compatibility fixes
+
+2010-10-19  Marek Safar  <marek.safar at gmail.com>
+
+	Restore altered arguments when overload resolution ends up in
+	dynamic dispatch
+
+2010-10-18  Marek Safar  <marek.safar at gmail.com>
+
+	[512754] Overload resolution with named or optional arguments has
+	to use closest member parameters
+
 2010-10-15  Marek Safar  <marek.safar at gmail.com>
 
 	[646997] Correctly emit platform ILOnly flag
 
+2010-10-15  Marek Safar  <marek.safar at gmail.com>
+
+	Add more dynamic conversion restrictions
+
+2010-10-15  Marek Safar  <marek.safar at gmail.com>
+
+	More tweaks to dynamic overload resolution
+
+2010-10-14  Marek Safar  <marek.safar at gmail.com>
+
+	A conditional expression with either dynamic side is always of
+	dynamic type
+
+2010-10-14  Marek Safar  <marek.safar at gmail.com>
+
+	More conversion tweaks for dynamic in using statement
+
+2010-10-13  Marek Safar  <marek.safar at gmail.com>
+
+	Use 2 phase dynamic load only for compound operations
+
+2010-10-13  Marek Safar  <marek.safar at gmail.com>
+
+	[645992] When importing dynamic type arguments dynamic custom
+	attribute flag has to be checked
+
+2010-10-13  Marek Safar  <marek.safar at gmail.com>
+
+	Dynamic type is never better than other types in overload
+	resolution
+
+2010-10-12  Marek Safar  <marek.safar at gmail.com>
+
+	More fixes for implicit conversions of nullable types with
+	nullable arguments
+
+2010-10-12  Marek Safar  <marek.safar at gmail.com>
+
+	[645572] Import more type as possible dynamic types.
+
+2010-10-12  Marek Safar  <marek.safar at gmail.com>
+
+	Do not create a constant null value for runtime types.
+
+2010-10-12  Marek Safar  <marek.safar at gmail.com>
+
+	Report correct error message for compound lifted binary operations
+
+2010-10-12  Marek Safar  <marek.safar at gmail.com>
+
+	Fold duplex conversion casts into a expression to emit single
+	convert for expression trees
+
+2010-10-11  Marek Safar  <marek.safar at gmail.com>
+
+	Compound assignments over reference type array cannot use ldelema
+
+2010-10-10  Marek Safar  <marek.safar at gmail.com>
+
+	[645232] Implement ITypeDefinition for internal types.
+
+2010-10-08  Marek Safar  <marek.safar at gmail.com>
+
+	Don't assume the system.object does not have any fields
+
 2010-10-08  Marek Safar  <marek.safar at gmail.com>
 
 	[642975] Fix initializer of partially static multidimensional
 	arrays
 
+2010-10-07  Marek Safar  <marek.safar at gmail.com>
+
+	Fix compound event assigments with dynamic side effect
+
+2010-10-07  Marek Safar  <marek.safar at gmail.com>
+
+	[644507] Don't use nested type cache until declaring type is
+	setup.
+
+2010-10-07  Marek Safar  <marek.safar at gmail.com>
+
+	Fix compound assigments with dynamic side effect
+
+2010-10-06  Marek Safar  <marek.safar at gmail.com>
+
+	Verify type parameter constraints type parameters
+
+2010-10-05  Marek Safar  <marek.safar at gmail.com>
+
+	New test.
+
+2010-10-01  Marek Safar  <marek.safar at gmail.com>
+
+	ref/out arguments are always of static type
+
+2010-10-01  Marek Safar  <marek.safar at gmail.com>
+
+	Keep imported indexer parameters (they can contain non-inflated
+	type parameters)
+
+2010-10-01  Marek Safar  <marek.safar at gmail.com>
+
+	Implement compound assignment over null value
+
+2010-10-01  Marek Safar  <marek.safar at gmail.com>
+
+	New test
+
+2010-10-01  Marek Safar  <marek.safar at gmail.com>
+
+	Dynamic compound assignment breaks standard C# result conversion
+	rules
+
+2010-09-30  Marek Safar  <marek.safar at gmail.com>
+
+	Null constant cannot be used for ref/out variables
+
+2010-09-30  Marek Safar  <marek.safar at gmail.com>
+
+	More awkward nullable binary expressions which are not lifted even
+	though they should be
+
+2010-09-29  Marek Safar  <marek.safar at gmail.com>
+
+	Implement binary user operators over nullable not lifted
+	expressions.
+
+2010-09-29  Marek Safar  <marek.safar at gmail.com>
+
+	Dynamic compound assignment can be used as an expression as well.
+
+2010-09-29  Marek Safar  <marek.safar at gmail.com>
+
+	New test.
+
+2010-09-29  Marek Safar  <marek.safar at gmail.com>
+
+	New test.
+
+2010-09-29  Marek Safar  <marek.safar at gmail.com>
+
+	Skip inaccessible nested types for member access expressions.
+
+2010-09-29  Marek Safar  <marek.safar at gmail.com>
+
+	Inflate custom site container delegates correctly.
+
+2010-09-28  Marek Safar  <marek.safar at gmail.com>
+
+	Optional parameters can be of a user value type
+
+2010-09-28  Marek Safar  <marek.safar at gmail.com>
+
+	Ignore imported not visible internal types
+
+2010-09-25  Marek Safar  <marek.safar at gmail.com>
+
+	Implemented more combinations of nullable boolean logical
+	operators
+
+2010-09-21  Marek Safar  <marek.safar at gmail.com>
+
+	New tests.
+
+2010-09-20  Marek Safar  <marek.safar at gmail.com>
+
+	Implement postfix operations involving an implicit user operator.
+
+2010-09-20  Marek Safar  <marek.safar at gmail.com>
+
+	Don't check inferred dynamic type arguments against best candidate
+	constraints.
+
+2010-09-20  Marek Safar  <marek.safar at gmail.com>
+
+	[640285] Initialize this in current block instead of original
+	block
+
+2010-09-20  Marek Safar  <marek.safar at gmail.com>
+
+	Parse secondary static like expression as a non-cast
+
+2010-09-17  Marek Safar  <marek.safar at gmail.com>
+
+	User operators are resolved in a batch, pick up the foremost
+
+2010-09-17  Marek Safar  <marek.safar at gmail.com>
+
+	Fixes preference of a user-defined conversion operators over
+	lifted conversion operators
+
+2010-09-17  Marek Safar  <marek.safar at gmail.com>
+
+	Fixes cloning of a variable declarator.
+
+2010-09-17  Marek Safar  <marek.safar at gmail.com>
+
+	Implement predefined binary enum operators involving an implicit
+	user conversion
+
+2010-09-15  Marek Safar  <marek.safar at gmail.com>
+
+	New test.
+
+2010-09-14  Marek Safar  <marek.safar at gmail.com>
+
+	Encode correctly all constants into a payload
+
+2010-09-13  Marek Safar  <marek.safar at gmail.com>
+
+	Add a test for arrays with dynamic elements.
+
+2010-09-13  Marek Safar  <marek.safar at gmail.com>
+
+	Implement foreach over nullable values.
+
+2010-09-13  Marek Safar  <marek.safar at gmail.com>
+
+	Keep only 1 using implementation and handle all nullable and
+	dynamic cases there.
+
+2010-09-10  Marek Safar  <marek.safar at gmail.com>
+
+	Always compare original block for cloned versions.
+
+2010-09-10  Marek Safar  <marek.safar at gmail.com>
+
+	New test.
+
+2010-09-10  Marek Safar  <marek.safar at gmail.com>
+
+	Converting the switch statement into normal statement (the block
+	part).
+
+2010-09-10  Marek Safar  <marek.safar at gmail.com>
+
+	When doing member access left side lookup the arity value is
+	actually the exact value.
+
+2010-09-09  Marek Safar  <marek.safar at gmail.com>
+
+	Don't recreate top-level destructor block, it carries precious
+	stuff
+
+2010-09-09  Marek Safar  <marek.safar at gmail.com>
+
+	The first push to make flow-analysis work for complex blocks.
+
+	All blocks are now strictly hierachical which greatly simplifies
+	many things and fixes many subtle bugs with local names. Removing
+	the block cross references helps scalling when compiling deeply
+	nested blocks or large method bodies including linq. Prepared
+	possible dynamic statements to work with variable declarators.
+
+2010-09-06  Jonathan Pobst  <monkey at jpobst.com>
+
+	Normalize line endings.
+
+2010-09-01  Marek Safar  <marek.safar at gmail.com>
+
+	Add ctor block to field initializers to avoid member lookup at
+	wrong block
+
 2010-08-31  Marek Safar  <marek.safar at gmail.com>
 
 	Add support for indirect pointer type constants.
diff --git a/mcs/tests/Makefile b/mcs/tests/Makefile
index e1f8112..2950fa6 100644
--- a/mcs/tests/Makefile
+++ b/mcs/tests/Makefile
@@ -6,7 +6,7 @@ thisdir = tests
 SUBDIRS =
 include ../build/rules.make
 
-DISTFILES = README.tests $(wildcard dlls/**/*.cs)
+DISTFILES = $(wildcard dlls/**/*.cs)
 DISTFILES += $(wildcard *.cs) $(wildcard *.il) $(wildcard *.xml) $(wildcard *.inc) $(wildcard known-issues-*) $(wildcard *.snk)
 
 with_mono_path = MONO_PATH="$(topdir)/class/lib/$(PROFILE)$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH"
@@ -80,6 +80,8 @@ test-local:
 
 run-test-local: $(TEST_ILS:.il=.dll) setup qcheck
 
+check: run-test-local
+
 endif
 
 clean-local:
diff --git a/mcs/tests/README.tests b/mcs/tests/README.tests
deleted file mode 100644
index 65bc2a6..0000000
--- a/mcs/tests/README.tests
+++ /dev/null
@@ -1,597 +0,0 @@
-Test cases listed by Category:
-==============================
-
-* Operators
-
-  test-146.cs test-175.cs test-200.cs test-204.cs
-
-* Overloading
-
-  test-147.cs test-173.cs
-
-* Try/Catch blocks
-
-  verify-1.cs verify-2.cs
-
-* Indexers and Properties
-
-  test-148.cs test-166.cs test-206.cs test-208.cs test-209.cs
-  test-221.cs test-236.cs
-
-* Events and Delegates
-
-  test-149.cs test-164.cs test-237.cs verify-3.cs
-
-* Constant Folding
-
-  test-150.cs
-
-* Switch blocks
-
-  test-152.cs test-193.cs test-234.cs verify-4.cs
-
-* Member Access & Simple Names
-
-  test-151.cs test-159.cs test-160.cs test-161.cs test-190.cs
-
-* Invocation and Casts
-
-  test-153.cs test-163.c test-207.cs test-210.cs test-211.cs test-223.cs
-
-* Flow Analysis
-
-  test-154.cs test-162.cs test-185.cs
-
-* Type Containers
-
-  test-155.cs test-156.cs
-
-* Attributes
-
-  test-157.cs test-158.cs test-177.cs test-230.cs test-238.cs test-239.cs test-240.cs
-
-* Arrays and array creation
-
-  test-165.cs, test-167.cs, test-232.cs
-
-* Labels and goto
-
-  verify-5.cs
-
-* Enums
-
-  verify-6.cs
-
-* Type resolution and name lookup
-
-  test-198.cs test-201.cs test-202.cs test-203.cs test-214.cs
-
-Test cases listed by Number:
-============================
-
-test-91.cs
-----------
-
-Tests various permissions sets based on the visiblity flags.
-
-test-146.cs
------------
-Test for Binary.EmitBrancheable() to ensure we're emitting correct
-unsinged branch targets.
-
-test-147.cs
------------
-Testing `new' modifier.
-
-test-148.cs
------------
-Testing the `IndexerName' attribute in interface indexers.
-
-test-149.cs
------------
-Testing interface events.
-
-test-150.cs
------------
-Test for folding of UIntConstants.  See bug #28106.
-FIXME:  We should all all possible test cases to this test.
-
-test-151.cs
------------
-
-  A.Iface b;
-  void doit (Object A) {
-    b = (A.Iface)A;
- }
-
-test-152.cs
------------
-Scope of variables declared inside a switch case.
-
-test-153.cs
------------
-Testing invocation of varargs function.
-
-test-154.cs
------------
-Flow analysis: This test contains all situations which are "allowed".
-
-test-155.cs
------------
-Nested interfaces.
-
-test-156.cs
------------
-Check whether base types are at least as accessible than the current type.
-
-test-157.cs
------------
-Attributes.
-
-test-158.cs
------------
-Attributes.
-
-test-159.cs
------------
-SimpleNameLookup: Cast to `A.Iface' type when there's a parameter called `A'.
-
-test-160.cs
------------
-ResolveMemberLookup: `B look; return look.s.a' must work in static context.
-
-test-161.cs
------------
-ResolveMemberLookup: Field initializer references `DateTime.Now' when there's
-an instance property/field `DateTime'.
-
-test-162.cs
------------
-Control Flow Analysis wrt. structs.
-
-test-163.cs
------------
-Test to check we select string over object when we have a Null literal as the argument.
-
-test-164.cs
------------
-Virtual functions in delegate creation expressions.
-
-test-165.cs
------------
-Enums in array creation expression.
-
-test-166.cs
------------
-Using property from interface which is inherited multiple times.
-
-test-173.cs
------------
-Check whether we select the correct function, don't report CS0121
-for integer literals.
-
-test-174.cs
------------
-Checks access to protected properties on base classes, and access to 
-private properties on container classes.
-
-test-175.cs
------------
-Check for user-defined implicit conversions if both arguments of a
-binary operator are of a user-defined type.  Bug #30443.
-
-test-176.cs
------------
-This tests checks that we perform constant folding on byte values.  The
-compiler had a bug where it did not do so.
-
-test-177.cs
------------
-This tests that the compiler is generating "return:" attributes for a 
-method.  This was a separate code path, and was not handled in the past.
-
-
-test-178.cs
------------
-Ensure that we emit attributes only once for operators. Bug #45876
-
-
-test-179.cs
------------
-Tests various uses of the indexers in the presence of the `new' keyword
-and various different argument types.
-
-test-180.cs
------------
-This test is part of a bug report in which casting an enumeration value
-into System.Enum was not wrapped correctly, and the wrong method was
-called.
-
-test-181.cs
------------
-Test whenever mcs correctly handles the MethodImplAttributes
-custom attribute.
-
-test-182.cs
------------
-Tests that bug 37473 is gone.  The problem was that we were generating
-incorrect code for field references on a value type.  The code was originally
-written by Martin, but I turned it off as I did not see what it did fix.  The
-code is now turned on again.  
-
-test-183.cs
------------
-This test just verifies that we generate the proper signature for
-EndInvoke, something that we were not doing before in the presence
-of out parameters
-
-test-184.cs
------------
-This test fixes a bug that exposed a problem when calling a struct
-constructor that is initialized from an instance constructor
-
-test-185.cs
------------
-Flow analysis wrt. infinite loops.  Bug #37708.
-
-test-186.cs
------------
-Typecasts were not being constant-folded/reduced, which triggered
-the bug 37363.   (String) null was not a null constant in attributes.
-
-test-187.cs
------------
-This test verifies that we resolve the source expression in a compound
-expression before we attempt to use it.
-
-test-188.cs
------------
-Test that the foreach statement generated by mcs invokes the Dispose()
-method even if the enumerator class returned by GetEnumerator () does not
-implement IDisposable.
-
-test-189.cs
------------
-Test to ensure proper overload resolution of params method under various cases.
-
-test-190.cs
------------
-Accessing private field of outer class from which we derive.
-
-tests-191.cs
-------------
-Some accessibility tests that exist in Corlib and System, to probe the new
-functionality in the compiler for accessibility of private nested classes.
-
-test-192.cs
------------
-Fix for bug 41952, basically, we were not using the `unchecked' bit during
-constant resolution due to the nature of EmitMeta.
-
-test-193.cs
------------
-Fix for bug 39828, allow goto to a label in another switch section.
-
-test-194.cs
------------
-Fix for bug #39108 - ensure that the correct form of a params method is called:
-
-"explicit conversion of argument to object
-(type object cannot be implicitly converted to type
-object[]) affects resolution of normal/expanded form
-of method invocation."
-
-test-195.cs
------------
-
-Fix for bug #45149, constructors that call another constructor in the
-same class (using ": this()") should not emit instance field initializers. 
-
-test-196.cs:
-------------
-
-The optimization that we perform in uint & int-constant was triggering a bug
-because we returned always, when we should have continued the processing if the
-conditions were not correct.
-
-test-197.cs
------------
-
-Fix for bug #42973.
-
-test-198.cs
------------
-
-Type resolution and name lookup.  Fixes for bugs #36316, #36314.
-
-test-199.cs
------------
-
-Name resolution wrt. inaccessible types.  Fixes bug #36313.
-
-test-200.cs
------------
-
-Compound assignment (x = (y += 3)).  Fixes bug #45854.
-
-test-201.cs
------------
-
-Fix for bug #35631.
-
-test-202.cs
------------
-
-Fix for bug #41975.
-
-test-203.cs
------------
-
-Fix for bug #33026.
-
-test-204.cs
------------
-
-User defined conditional logical operators; bug #40505.
-
-test-206.cs
------------
-
-Indexers; bug #46502.
-
-test-207.cs
------------
-
-Expressions which return delegates.
-
-test-208.cs
------------
-
-Indexers; bug #46788.
-
-test-209.cs
------------
-
-Embedded assignments; while fixing a bug and making a mistake, I discovered some
-problems during class libs compilation.  Let's just add a testcase for them here.
-
-test-210.cs
------------
-
-Cast something to a delegate and then invoke it; bug #46923.
-
-test-211.cs
------------
-
-Multiple casts.
-
-test-212.cs
------------
-
-Params overload resolution with implicit user conversion
-
-test-213.cs
------------
-
-Unboxing struct from interface type; bug #47822.
-
-test-214.cs
------------
-
-Namespace lookups; bug #47853.
-
-test-215.cs
------------
-
-Namespace lookups; bug #47927.
-
-test-216.cs:
-------------
-Accessability bug fix #48710 on events
-
-test-217.cs
------------
-
->= and <= operators; bug #48679
-
-test-218.cs
------------
-Tests delegate creation inside an array;  This exposed a bug in the
-fact that New is called for DoResolve twice from array initialization.
-Bug #48800
-
-test-219.cs:
-------------
-Tests that we can call typeof(void) in an attribtue delcaration, since
-we removed previously typeof (System.Void) as a valid way of referencing void.
-
-test-220.cs:
-------------
-Test for a bug in foreach, where it would pick the wrong GetEnumerator in a class.
-Bug # was 51446
-
-test-221.cs:
-------------
-Test for correct scanning for base properties.
-
-test-222.cs:
-------------
-Compilation test to check overload resolution. We should prefer int->uint over int->ulong.
-
-test-223.cs:
-------------
-This tests that conversions from Enum and ValueType to structs
-are treated as unboxing conversions, and the `unbox' opcode
-is emitted. #52569.
-
-test-224.cs:
-------------
-This tests the compilation of attributes with array parameters.
-
-test-229.cs:
-------------
-Test enumerating on:
-public class List : IEnumerable {
-
-	public MyEnumerator GetEnumerator () {
-		return new MyEnumerator(this);
-	}
-	
-	IEnumerator IEnumerable.GetEnumerator () {
-		...
-	}
-	
-	public struct MyEnumerator : IEnumerator {
-		...
-	}
-}
-
-test-231.cs:
-------------
-Test for emitting callvirt when we need it.
-
-test-232.cs:
-------------
-Tests for {...}-style array creation
-
-test-233.cs:
-------------
-dup of basic-float.cs from mini, for bug 54303.
-
-test-234.cs:
-------------
-Switch statement on a [Flags] style enum. bug 55885.
-
-test-236.cs:
------------
-Test for bug #56300.  DefaultMemberAttribute should not be created if a
-class has only private interface indexers.
-
-test-237.cs:
------------
-Test for bug #56442.  Verify that delegate invocation and normal method
-invocation act the same when the 'params' keyword is used.
-
-test-290.cs:
------------
-Test for bug reported in 
-
-  http://lists.ximian.com/archives/public/mono-devel-list/2004-September/007777.html
-
-verify-1.cs
------------
-Test whether we do not jump out of the method in a Try/Finally block.
-
-verify-2.cs
------------
-Test whether `return' in a Try/Catch block actually returns.  Test
-whether continue uses Leave when the branch is across Try/Catch
-boundaries.
-
-verify-3.cs
------------
-Checks default add/remove method of static events.
-
-verify-4.cs
------------
-When there's an unreachable break in a switch section, it must not emit a jump out of
-the method.
-
-verify-6.cs
------------
-Casts from/to System.Enum.
-
-unsafe-6.cs:
-------------
-Tests the correct computation of compound operators in the context of a pointer 
-dereference on the left side.
-
-gen-1.cs:
----------
-
-Simple constructed type.
-
-gen-2.cs:
----------
-
-Type parameter as field.
-
-gen-3.cs:
----------
-
-Field of constructed type.
-
-gen-4.cs:
----------
-
-Method argument of constructed type.
-
-gen-5.cs:
----------
-
-Local variable of constructed type.
-
-gen-6.cs:
----------
-
-More complex example.
-
-gen-7.cs:
----------
-
-Constructed type deriving from a class type.
-
-gen-8.cs:
----------
-
-`where' clauses.
-
-gen-9.cs:
----------
-
-`where T : ICloneable' and then calling t.Clone ().
-
-gen-10.cs:
-----------
-
-`where T : I, J' - I is an inferface, J a class.
-
-gen-15.cs:
-----------
-
-Generic methods.
-
-2test-1.cs
-----------
-C# 2.0 Iterators: Enumerator and Enumerable with foreach
-
-2test-2.cs
-----------
-C# 2.0 Iterators: Obtaining the enumerator manually
-
-2test-3.cs
-----------
-C# 2.0 Iterators: Multi-dimensional arrays as arguments to iterator method
-
-2test-4.cs
-----------
-C# 2.0 Iterators: Use of a local variable in an enumerator.
-
-2test-5.cs
-----------
-Method group conversions for C# 2.0
-
-2test-6.cs
-----------
-Test iterators using foreach where you have to load the address of a struct
-
-2test-15.cs
------------
-Partial type with a destructor.
-
-pu-ip.cs, pu-pi.cs, pi.cs, pu.cs
---------------------------------
-Test that the order for internal/public in external assemblies does not
-affect the outcome of a build.  Also checks that multiple `entry points'
-can be declared in a library. (eg, that it is not confused by two Main
-methods).
diff --git a/mcs/tests/dtest-001.cs b/mcs/tests/dtest-001.cs
index cb51ff5..06f2fed 100644
--- a/mcs/tests/dtest-001.cs
+++ b/mcs/tests/dtest-001.cs
@@ -8,6 +8,10 @@ using System.Runtime.CompilerServices;
 using System.Collections.Generic;
 using System.Linq;
 
+interface I<T>
+{
+}
+
 class C
 {
 	public C (dynamic d)
@@ -31,6 +35,7 @@ class C
 	public dynamic[] t;
 	public dynamic[,] t2;
 	public Func<dynamic, int, dynamic[]> v;
+	public I<dynamic>[] iface;
 }
 
 delegate dynamic Del (dynamic d);
@@ -123,6 +128,12 @@ class Test
 			return 44;
 		if (!da.TransformFlags.SequenceEqual (new bool[] { false, true, false, false, true }))
 			return 45;
+		
+		da = t.GetMember ("iface")[0].GetCustomAttributes (ca, false)[0] as DynamicAttribute;
+		if (da == null)
+			return 46;
+		if (!da.TransformFlags.SequenceEqual (new bool[] { false, false, true }))
+			return 47;
 
 		t = typeof (Del);
 
diff --git a/mcs/tests/dtest-003.cs b/mcs/tests/dtest-003.cs
index d729de7..f09a598 100644
--- a/mcs/tests/dtest-003.cs
+++ b/mcs/tests/dtest-003.cs
@@ -66,9 +66,9 @@ class AssertDynamicObject : DynamicMetaObject
 		if (mock.GetMemberOperation == null)
 			throw new ApplicationException ("Unexpected BindGetMember");
 
-		mock.GetMemberOperation (binder);
+		var r = mock.GetMemberOperation (binder);
 
-		return GetFakeMetaObject (new object ());
+		return GetFakeMetaObject (r);
 	}
 
 	public override DynamicMetaObject BindInvoke (InvokeBinder binder, DynamicMetaObject[] args)
@@ -140,7 +140,7 @@ class DynamicObjectMock : DynamicObject
 	public Action<BinaryOperationBinder, object> BinaryOperation;
 	public Func<ConvertBinder, object> ConvertOperation;
 	public Action<GetIndexBinder, object[]> GetIndexOperation;
-	public Action<GetMemberBinder> GetMemberOperation;
+	public Func<GetMemberBinder, object> GetMemberOperation;
 	public Action<InvokeBinder, object[]> InvokeOperation;
 	public Action<InvokeMemberBinder, object[]> InvokeMemberOperation;
 	public Action<SetIndexBinder, object[], object> SetIndexOperation;
@@ -260,7 +260,7 @@ class Tester : DynamicObjectMock
 			Assert (binder.Operation, ExpressionType.Add, "Operation");
 			AssertArgument (binder, new[] {
 			    CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null),
-			    CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.UseCompileTimeType, null)
+			    CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.UseCompileTimeType | CSharpArgumentInfoFlags.Constant, null)
 			}, "ArgumentInfo");
 
 			Assert (arg, Enum.A, "arg");
@@ -546,6 +546,20 @@ class Tester : DynamicObjectMock
 		d = d <= 1;
 	}
 
+	void BinaryLogicalAnd_1 (dynamic d, DynamicObjectMock mock)
+	{
+		mock.HitCounter = 1;
+		bool b = false;
+		d = b && d;
+	}
+
+	void BinaryLogicalOr_1 (dynamic d, DynamicObjectMock mock)
+	{
+		mock.HitCounter = 1;
+		bool b = true;
+		d = b || d;
+	}
+
 	void BinaryModulo_1 (dynamic d, DynamicObjectMock mock)
 	{
 		mock.BinaryOperation = (binder, arg) => {
@@ -775,7 +789,6 @@ class Tester : DynamicObjectMock
 	{
 		mock.GetIndexOperation = (binder, args) => {
 			Assert (binder.CallInfo, new CallInfo (1, new string[0]), "CallInfo");
-//			Assert (binder.CallingContext, typeof (Tester), "CallingContext");
 			AssertArgument (binder, new[] {
 				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null),
 				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.Constant | CSharpArgumentInfoFlags.UseCompileTimeType, null) },
@@ -791,7 +804,6 @@ class Tester : DynamicObjectMock
 	{
 		mock.GetIndexOperation = (binder, args) => {
 			Assert (binder.CallInfo, new CallInfo (2, new string[0]), "CallInfo");
-//			Assert (binder.CallingContext, typeof (Tester), "CallingContext");
 			AssertArgument (binder, new[] {
 				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null),
 				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.Constant | CSharpArgumentInfoFlags.UseCompileTimeType, null),
@@ -809,7 +821,6 @@ class Tester : DynamicObjectMock
 	{
 		mock.GetIndexOperation = (binder, args) => {
 			Assert (binder.CallInfo, new CallInfo (1, new string[0]), "CallInfo");
-//			Assert (binder.CallingContext, typeof (Tester), "CallingContext");
 			AssertArgument (binder, new[] {
 				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.UseCompileTimeType, null),
 				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null) },
@@ -826,10 +837,11 @@ class Tester : DynamicObjectMock
 		mock.GetMemberOperation = (binder) => {
 			Assert (binder.Name, "Foo", "Name");
 			Assert (binder.IgnoreCase, false, "IgnoreCase");
-//			Assert (binder.CallingContext, typeof (Tester), "CallingContext");
 			AssertArgument (binder, new[] {
 				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null) },
 				"ArgumentInfo");
+
+			return null;
 		};
 
 		var g = d.Foo;
@@ -839,11 +851,10 @@ class Tester : DynamicObjectMock
 	{
 		mock.InvokeOperation = (binder, args) => {
 			Assert (binder.CallInfo, new CallInfo (2, new string[0]), "CallInfo");
-//			Assert (binder.CallingContext, typeof (Tester), "CallingContext");
 			AssertArgument (binder, new[] {
 				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null),
 				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.Constant | CSharpArgumentInfoFlags.UseCompileTimeType, null),
-				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.Constant | CSharpArgumentInfoFlags.UseCompileTimeType, null)
+				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.Constant, null)
 			}, "ArgumentInfo");
 
 			Assert ((IList<object>) args, new object[] { "foo", null }, "args");
@@ -856,7 +867,6 @@ class Tester : DynamicObjectMock
 	{
 		mock.InvokeOperation = (binder, args) => {
 			Assert (binder.CallInfo, new CallInfo (0, new string[0]), "CallInfo");
-//			Assert (binder.CallingContext, typeof (Tester), "CallingContext");
 			AssertArgument (binder, new[] {
 				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null) },
 				"ArgumentInfo");
@@ -880,11 +890,10 @@ class Tester : DynamicObjectMock
 	{
 		mock.InvokeOperation = (binder, args) => {
 			Assert (binder.CallInfo, new CallInfo (2, new string[] { "name" }), "CallInfo");
-//			Assert (binder.CallingContext, typeof (Tester), "CallingContext");
 			AssertArgument (binder, new[] {
 				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null),
 				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.UseCompileTimeType, null),
-				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.NamedArgument | CSharpArgumentInfoFlags.UseCompileTimeType, "name")
+				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.NamedArgument | CSharpArgumentInfoFlags.Constant | CSharpArgumentInfoFlags.UseCompileTimeType, "name")
 			}, "ArgumentInfo");
 
 			Assert ((IList<object>) args, new object[] { typeof (bool), -1 }, "args");
@@ -896,34 +905,44 @@ class Tester : DynamicObjectMock
 	void Invoke_5 (dynamic d, DynamicObjectMock mock)
 	{
 		mock.InvokeOperation = (binder, args) => {
-			Assert (binder.CallInfo, new CallInfo (2, new string[] { "name" }), "CallInfo");
+			Assert (binder.CallInfo, new CallInfo (1, new string[0]), "CallInfo");
 			AssertArgument (binder, new[] {
 				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null),
-				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.UseCompileTimeType, null),
-				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.NamedArgument | CSharpArgumentInfoFlags.UseCompileTimeType, "name")
+				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.UseCompileTimeType | CSharpArgumentInfoFlags.Constant, null)
 			}, "ArgumentInfo");
 
-			Assert ((IList<object>) args, new object[] { typeof (bool), -1 }, "args");
+			Assert ((IList<object>) args, new object[] { "a" }, "args");
 		};
 
-		Action<object> a = (i) => { };
+		Action<dynamic> a = (i) => { i ("a"); };
 		a (d);
 	}
 
+	void Invoke_6 (dynamic d, DynamicObjectMock mock)
+	{
+		mock.InvokeOperation = (binder, args) => {
+			Assert (binder.CallInfo, new CallInfo (1, new string[0]), "CallInfo");
+			AssertArgument (binder, new[] {
+				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null),
+				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.UseCompileTimeType | CSharpArgumentInfoFlags.Constant, null)
+			}, "ArgumentInfo");
+
+			Assert ((IList<object>) args, new object[] { 3 }, "args");
+		};
+
+		d (1 + 2);
+	}
+
 	void InvokeMember_1 (dynamic d, DynamicObjectMock mock)
 	{
 		mock.InvokeMemberOperation = (binder, args) => {
 			Assert (binder.CallInfo, new CallInfo (1, new string[0]), "CallInfo");
-//			Assert (binder.CallingContext, typeof (Tester), "CallingContext");
 			AssertArgument (binder, new[] {
 				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null),
 				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.Constant | CSharpArgumentInfoFlags.UseCompileTimeType, null)},
 				"ArgumentInfo");
 
-//			Assert (binder.Flags, CSharpCallFlags.None, "Flags");
 			Assert (binder.IgnoreCase, false, "IgnoreCase");
-//			Assert (binder.TypeArguments, new Type[0], "TypeArguments");
-
 			Assert ((IList<object>) args, new object[] { 'a' }, "args");
 		};
 
@@ -934,16 +953,12 @@ class Tester : DynamicObjectMock
 	{
 		mock.InvokeMemberOperation = (binder, args) => {
 			Assert (binder.CallInfo, new CallInfo (1, new string[0]), "CallInfo");
-//			Assert (binder.CallingContext, typeof (Tester), "CallingContext");
 			AssertArgument (binder, new[] {
 				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.UseCompileTimeType, null),
 				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null)},
 				"ArgumentInfo");
 
-//			Assert (binder.Flags, CSharpCallFlags.None, "Flags");
 			Assert (binder.IgnoreCase, false, "IgnoreCase");
-//			Assert (binder.TypeArguments, new Type[0], "TypeArguments");
-
 			Assert ((IList<object>) args, new object[] { mock }, "args");
 		};
 
@@ -954,16 +969,12 @@ class Tester : DynamicObjectMock
 	{
 		mock.InvokeMemberOperation = (binder, args) => {
 			Assert (binder.CallInfo, new CallInfo (1, new string[0]), "CallInfo");
-//			Assert (binder.CallingContext, typeof (Tester), "CallingContext");
 			AssertArgument (binder, new[] {
 				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null),
 				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.IsRef | CSharpArgumentInfoFlags.UseCompileTimeType, null) },
 				"ArgumentInfo");
 
-//			Assert (binder.Flags, CSharpCallFlags.None, "Flags");
 			Assert (binder.IgnoreCase, false, "IgnoreCase");
-//			Assert (binder.TypeArguments, new Type[0], "TypeArguments");
-
 			Assert ((IList<object>) args, new object[] { 9 }, "args");
 		};
 
@@ -975,16 +986,12 @@ class Tester : DynamicObjectMock
 	{
 		mock.InvokeMemberOperation = (binder, args) => {
 			Assert (binder.CallInfo, new CallInfo (1, new string[0]), "CallInfo");
-//			Assert (binder.CallingContext, typeof (Tester), "CallingContext");
 			AssertArgument (binder, new[] {
 				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null),
 				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.IsOut | CSharpArgumentInfoFlags.UseCompileTimeType, null)	},
 				"ArgumentInfo");
 
-//			Assert (binder.Flags, CSharpCallFlags.None, "Flags");
 			Assert (binder.IgnoreCase, false, "IgnoreCase");
-//			Assert (binder.TypeArguments, new Type[0], "TypeArguments");
-
 			Assert ((IList<object>) args, new object[] { 0 }, "args");
 		};
 
@@ -1001,16 +1008,13 @@ class Tester : DynamicObjectMock
 	{
 		InvokeMemberOperation = (binder, args) => {
 			Assert (binder.CallInfo, new CallInfo (2, new string[0]), "CallInfo");
-//			Assert (binder.CallingContext, typeof (Tester), "CallingContext");
 			AssertArgument (binder, new[] {
 				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.UseCompileTimeType, null),
 				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null),
-				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.UseCompileTimeType | CSharpArgumentInfoFlags.Constant, null),
+				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.Constant, null),
 			}, "ArgumentInfo");
-//			Assert (binder.Flags, CSharpCallFlags.SimpleNameCall, "Flags");
-			Assert (binder.IgnoreCase, false, "IgnoreCase");
-//			Assert (binder.TypeArguments, Type.EmptyTypes, "TypeArguments");
 
+			Assert (binder.IgnoreCase, false, "IgnoreCase");
 			Assert ((IList<object>) args, new object[] { d, null }, "args");
 		};
 
@@ -1021,25 +1025,38 @@ class Tester : DynamicObjectMock
 	{
 		mock.InvokeMemberOperation = (binder, args) => {
 			Assert (binder.CallInfo, new CallInfo (0, new string[0]), "CallInfo");
-//			Assert (binder.CallingContext, typeof (Tester), "CallingContext");
 			AssertArgument (binder, new[] {
 				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null)
 			}, "ArgumentInfo");
-//			Assert (binder.Flags, CSharpCallFlags.None, "Flags");
-			Assert (binder.IgnoreCase, false, "IgnoreCase");
-//			Assert (binder.TypeArguments, new Type[] { typeof (object) }, "TypeArguments");
 
+			Assert (binder.IgnoreCase, false, "IgnoreCase");
 			Assert ((IList<object>) args, new object[0], "args");
 		};
 
 		d.Max<dynamic> ();
 	}
 
+	void InvokeMember_8 (dynamic d, DynamicObjectMock mock)
+	{
+		mock.InvokeMemberOperation = (binder, args) => {
+			Assert (binder.CallInfo, new CallInfo (1, new string[0]), "CallInfo");
+			AssertArgument (binder, new[] {
+				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null),
+				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.IsRef | CSharpArgumentInfoFlags.UseCompileTimeType, null) },
+				"ArgumentInfo");
+
+			Assert (binder.IgnoreCase, false, "IgnoreCase");
+			Assert ((IList<object>) args, new object[] { 9 }, "args");
+		};
+
+		dynamic i = 9;
+		d.Max (ref i);
+	}
+
 	void SetIndex_1 (dynamic d, DynamicObjectMock mock)
 	{
 		mock.SetIndexOperation = (binder, args, value) => {
 			Assert (binder.CallInfo, new CallInfo (1, new string[0]), "CallInfo");
-//			Assert (binder.CallingContext, typeof (Tester), "CallingContext");
 			AssertArgument (binder, new[] {
 				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null),
 				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.Constant | CSharpArgumentInfoFlags.UseCompileTimeType, null),
@@ -1057,12 +1074,11 @@ class Tester : DynamicObjectMock
 	{
 		mock.SetIndexOperation = (binder, args, value) => {
 			Assert (binder.CallInfo, new CallInfo (2, new string[0]), "CallInfo");
-//			Assert (binder.CallingContext, typeof (Tester), "CallingContext");
 			AssertArgument (binder, new[] {
 				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null),
 				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.Constant | CSharpArgumentInfoFlags.UseCompileTimeType, null),
 				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.UseCompileTimeType, null),
-				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.UseCompileTimeType, null)
+				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.Constant | CSharpArgumentInfoFlags.UseCompileTimeType, null)
 			}, "ArgumentInfo");
 
 			Assert ((IList<object>) args, new object[] { 2, 3 }, "args");
@@ -1077,7 +1093,6 @@ class Tester : DynamicObjectMock
 	{
 		mock.SetIndexOperation = (binder, args, value) => {
 			Assert (binder.CallInfo, new CallInfo (1, new string[0]), "CallInfo");
-//			Assert (binder.CallingContext, typeof (Tester), "CallingContext");
 			AssertArgument (binder, new[] {
 				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.UseCompileTimeType, null),
 				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null),
@@ -1098,10 +1113,9 @@ class Tester : DynamicObjectMock
 		mock.SetMemberOperation = (binder, value) => {
 			Assert (binder.Name, "Foo", "Name");
 			Assert (binder.IgnoreCase, false, "IgnoreCase");
-//			Assert (binder.CallingContext, typeof (Tester), "CallingContext");
 			AssertArgument (binder, new[] {
 				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null),
-				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.UseCompileTimeType | CSharpArgumentInfoFlags.Constant, null)	// CSC bug?
+				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.UseCompileTimeType | CSharpArgumentInfoFlags.Constant, null)
 			}, "ArgumentInfo");
 
 			Assert (value, d_const, "value");
@@ -1110,6 +1124,40 @@ class Tester : DynamicObjectMock
 		d.Foo = d_const;
 	}
 
+	void SetMember_2 (dynamic d, DynamicObjectMock mock)
+	{
+		mock.GetMemberOperation = (binder) => {
+			Assert (binder.Name, "Foo", "Name");
+			Assert (binder.IgnoreCase, false, "IgnoreCase");
+			AssertArgument (binder, new[] {
+				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null) },
+				"ArgumentInfo");
+
+			return mock;
+		};
+
+		mock.BinaryOperation = (binder, arg) => {
+			Assert (binder.Operation, ExpressionType.MultiplyAssign, "Operation");
+			AssertArgument (binder, new[] {
+			    CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null),
+			    CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.Constant, null) },
+				"ArgumentInfo");
+
+			Assert (arg, null, "arg");
+		};
+
+		mock.SetMemberOperation = (binder, value) => {
+			Assert (binder.Name, "Foo", "Name");
+			Assert (binder.IgnoreCase, false, "IgnoreCase");
+			AssertArgument (binder, new[] {
+				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null),
+				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null)
+			}, "ArgumentInfo");
+		};
+
+		d.Foo *= null;
+	}
+
 	void UnaryPlus_1 (dynamic d, DynamicObjectMock mock)
 	{
 		mock.UnaryOperation = (binder) => {
@@ -1237,7 +1285,7 @@ class Tester : DynamicObjectMock
 			Assert (binder.Operation, ExpressionType.Equal, "Operation");
 			AssertArgument (binder, new[] {
 				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null),
-				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.Constant | CSharpArgumentInfoFlags.UseCompileTimeType, null) },
+				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.Constant, null) },
 				"ArgumentInfo");
 
 			Assert (arg, null, "arg");
@@ -1261,7 +1309,7 @@ class Tester : DynamicObjectMock
 			Assert (binder.Operation, ExpressionType.NotEqual, "Operation");
 			AssertArgument (binder, new[] {
 				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null),
-				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.Constant | CSharpArgumentInfoFlags.UseCompileTimeType, null) },
+				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.Constant, null) },
 				"ArgumentInfo");
 
 			Assert (arg, null, "arg");
@@ -1285,7 +1333,7 @@ class Tester : DynamicObjectMock
 			Assert (binder.Operation, ExpressionType.And, "Operation");
 			AssertArgument (binder, new[] {
 				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null),
-				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.Constant | CSharpArgumentInfoFlags.UseCompileTimeType, null) },
+				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.Constant, null) },
 				"ArgumentInfo");
 
 			Assert (arg, null, "arg");
@@ -1323,7 +1371,7 @@ class Tester : DynamicObjectMock
 			Assert (binder.Operation, ExpressionType.Or, "Operation");
 			AssertArgument (binder, new[] {
 				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null),
-				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.Constant | CSharpArgumentInfoFlags.UseCompileTimeType, null) },
+				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.Constant, null) },
 				"ArgumentInfo");
 
 			Assert (arg, null, "arg");
@@ -1332,6 +1380,31 @@ class Tester : DynamicObjectMock
 		object x = d || null;
 	}
 
+	void UnaryIsTrue_3 (dynamic d, DynamicObjectMock mock)
+	{
+		mock.UnaryOperation = (binder) => {
+			Assert (binder.Operation, ExpressionType.IsTrue, "Operation");
+			AssertArgument (binder, new[] {
+				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null)
+			}, "ArgumentInfo");
+
+			return false;
+		};
+
+		mock.BinaryOperation = (binder, arg) => {
+			Assert (binder.Operation, ExpressionType.Or, "Operation");
+			AssertArgument (binder, new[] {
+				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null),
+				CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.UseCompileTimeType, null) },
+				"ArgumentInfo");
+
+			Assert (arg, false, "arg");
+		};
+
+		bool b = false;
+		object x = d || b;
+	}
+
 #pragma warning restore 168, 169, 219
 
 	static bool RunTest (MethodInfo test)
diff --git a/mcs/tests/dtest-006.cs b/mcs/tests/dtest-006.cs
index e43d80d..7be6c2e 100644
--- a/mcs/tests/dtest-006.cs
+++ b/mcs/tests/dtest-006.cs
@@ -309,7 +309,7 @@ class Tester
 
 		dynamic d2 = (MyEnumUlong?) MyEnumUlong.Value_1;
 		Assert (d2 + (byte) 1, MyEnumUlong.Value_2, "#2");
-		Assert<MyEnumUlong?> (d2 + (object) null, null, "#2a");
+		Assert<MyEnumUlong?> (d2 + null, null, "#2a");
 		
 		// CSC: Invalid System.InvalidOperationException
 		Assert<MyEnum?> (d + null, null, "#1");
@@ -1759,7 +1759,7 @@ class Tester
 		Assert (d || d, true, "#2");
 
 		dynamic d3 = new MyType (-7);
-		Assert<MyType> (d3 || new MyType (6), new MyType (-1), "#3");
+		Assert<MyType> (d3 || new MyType (6), new MyType (-7), "#3");
 	}
 
 	void RightShiftTest ()
@@ -1878,7 +1878,7 @@ class Tester
 
 		dynamic d2 = (MyEnumUlong?) MyEnumUlong.Value_2;
 		Assert (d2 - (byte) 1, MyEnumUlong.Value_1, "#2");
-		Assert<MyEnumUlong?> (d2 - (object) null, null, "#2a");
+		Assert<MyEnumUlong?> (d2 - null, null, "#2a");
 		
 		// CSC: Invalid System.InvalidOperationException
 		Assert<MyEnum?> (d - null, null, "#3");
diff --git a/mcs/tests/dtest-007.cs b/mcs/tests/dtest-007.cs
index 505ae21..ec92b62 100644
--- a/mcs/tests/dtest-007.cs
+++ b/mcs/tests/dtest-007.cs
@@ -196,6 +196,10 @@ class Tester
 		d.field += 5;
 		Assert (5, d.field, "#2");
 		
+		int r = d.field += 7;
+		Assert (12, r, "#2a");
+		Assert (12, d.field, "#2b");
+		
 		d = new EventClass ();
 		d.OutEvent += new Func<int> (() => 100);
 		Assert (100, d.CallEvent (), "#3");
diff --git a/mcs/tests/dtest-008.cs b/mcs/tests/dtest-008.cs
index e234ac9..42433a3 100644
--- a/mcs/tests/dtest-008.cs
+++ b/mcs/tests/dtest-008.cs
@@ -5,7 +5,7 @@ using System.Collections.Generic;
 
 class Disposable : IDisposable
 {
-	public int Counter;
+	public static int Counter;
 
 	public void Dispose ()
 	{
@@ -27,13 +27,12 @@ public class Test
 			res += v;
 		}
 
-		Console.WriteLine (res);
 		return res == 31;
 	}
 	
 	bool ForEachTest_2()
 	{
-		dynamic c = new int [2] { 5, 7 };
+		dynamic c = new int [] { 5, 7 };
 		int total = 0;
 		foreach (var v in c)
 		{
@@ -42,6 +41,19 @@ public class Test
 		
 		return total == 12;
 	}
+	
+	bool ForEachTest_3()
+	{
+		dynamic[] c = new dynamic [] { (byte) 1, 7 };
+		int total = 0;
+		foreach (var v in c)
+		{
+			total += v;
+		}
+
+		Console.WriteLine (total);
+		return total == 8;
+	}
 
 	bool UsingTest ()
 	{
@@ -52,7 +64,7 @@ public class Test
 			}
 		} catch { }
 
-		if (d.Counter != 1)
+		if (Disposable.Counter != 1)
 			return false;
 
 		try {
@@ -61,8 +73,12 @@ public class Test
 			}
 		} catch { }
 
-		if (d.Counter != 1)
+		if (Disposable.Counter != 2)
 			return false;
+		
+		using (dynamic u = new Disposable ()) {
+			u.Test ();
+		}
 
 		return true;
 	}
@@ -76,8 +92,11 @@ public class Test
 		if (!t.ForEachTest_2 ())
 			return 2;
 		
-		if (!t.UsingTest ())
+		if (!t.ForEachTest_3 ())
 			return 3;
+		
+		if (!t.UsingTest ())
+			return 10;
 
 		Console.WriteLine ("ok");
 		return 0;
diff --git a/mcs/tests/dtest-010.cs b/mcs/tests/dtest-010.cs
index c9ca789..e38e82d 100644
--- a/mcs/tests/dtest-010.cs
+++ b/mcs/tests/dtest-010.cs
@@ -21,9 +21,8 @@ class C
 		if (A.Test<dynamic> (d, o).TestCall () != 1)
 			return 1;
 
-		// FIXME: Very tricky, I not sure what to do for now
-		//if (A.Test (d, o).TestCall () != 1)
-		//	return 1;
+		if (A.Test (d, o).TestCall () != 1)
+			return 2;
 
 		return 0;
 	}
diff --git a/mcs/tests/dtest-011.cs b/mcs/tests/dtest-011.cs
index 2b72f4f..39e78ea 100644
--- a/mcs/tests/dtest-011.cs
+++ b/mcs/tests/dtest-011.cs
@@ -16,6 +16,16 @@ class C
 	{
 		Console.WriteLine ("Got static long: {0}", l);
 	}
+	
+	static int MethodBest (short d)
+	{
+		return 1;
+	}
+	
+	static int MethodBest (dynamic d)
+	{
+		return -1;
+	}
 
 	void test ()
 	{
@@ -24,8 +34,13 @@ class C
 		foo_static (d);
 	}
 
-	static void Main ()
+	static int Main ()
 	{
 		new C ().test ();
+		
+		if (MethodBest (1) != 1)
+			return 1;
+		
+		return 0;
 	}
 }
diff --git a/mcs/tests/dtest-016.cs b/mcs/tests/dtest-016.cs
index efeb1a8..cee5846 100644
--- a/mcs/tests/dtest-016.cs
+++ b/mcs/tests/dtest-016.cs
@@ -25,6 +25,43 @@ public class C
 	public void Method_B (ref dynamic i)
 	{
 	}
+	
+	public static int M (string a, string b)
+	{
+		return 5;
+	}
+	
+	public static int M (ref object o, out dynamic d)
+	{
+		d = null;
+		return 1;
+	}
+}
+
+class D
+{
+	public static int Foo (dynamic d)
+	{
+		return 1;
+	}
+
+	public static int Foo (params object[] o)
+	{
+		return 2;
+	}
+}
+
+class E
+{
+	public static int Foo (int i, dynamic d)
+	{
+		return 1;
+	}
+
+	public static int Foo (double d, object i)
+	{
+		return 2;
+	}
 }
 
 class Program
@@ -39,12 +76,17 @@ class Program
 		d = null;
 	}
 	
+	static int DynParams (int a, int b, params int[] arr)
+	{
+		return arr [1] + b;
+	}
+	
 	void TestErrorVersions ()
 	{
 		var c = new C ();
 		dynamic d = null;
 		c.Method_A (d);
-		c.Method_A (d);	
+		c.Method_B (d);	
 	}
 
 	static int Main ()
@@ -54,6 +96,28 @@ class Program
 
 		dynamic d = null;
 		DynRef (ref d);
+		
+		dynamic d1 = 1, d2;
+		
+		// This should not involve runtime binder
+		if (C.M (ref d1, out d2) != 1)
+			return 1;
+		
+		dynamic d3 = 5;
+		dynamic d4 = -9;
+		if (DynParams (1, 2, d3, d4) != -7)
+			return 2;
+
+		if (DynParams (1, 2, 3, d4) != -7)
+			return 3;
+		
+		d = 44;
+		if (D.Foo (d) != 1)
+			return 4;
+
+		if (E.Foo (0, 0) != 1)
+			return 5;
+		
 		return 0;
 	}
 }
diff --git a/mcs/tests/dtest-017.cs b/mcs/tests/dtest-017.cs
index 9fcd0ac..ee4b8ba 100644
--- a/mcs/tests/dtest-017.cs
+++ b/mcs/tests/dtest-017.cs
@@ -16,6 +16,10 @@ interface IA<U>
 {
 }
 
+struct S<T>
+{
+}
+
 delegate dynamic D (dynamic d);
 
 class DynamicAssignments
@@ -48,6 +52,13 @@ class DynamicAssignments
 		I<object> io = null;
 		IA<dynamic> id = io;
 		
+		IA<object> ia_o = null;
+		IA<dynamic> ia_d = ia_o;
+		
+		S<dynamic> s_d = new S<dynamic> ();
+		S<object> s_o = s_d;
+		S<object>? s_o_n = s_d;
+		
 		D del = delegate (object del_arg) {
 			 return (object) null;
 		};
diff --git a/mcs/tests/dtest-025.cs b/mcs/tests/dtest-025.cs
index 6e5912a..c741ea7 100644
--- a/mcs/tests/dtest-025.cs
+++ b/mcs/tests/dtest-025.cs
@@ -1,13 +1,45 @@
+interface I
+{
+	void SetValue (int arg);
+}
+
+public struct S : I
+{
+	public int Value;
+
+	public void SetValue (int v)
+	{
+		Value = v;
+	}
+}
+
 class C
 {
+	static void Method<T> (ref T t) where T : struct, I
+	{
+		dynamic d = 25;
+		t.SetValue (d);
+	}
+		
 	public static int Main ()
 	{
 		int? x = null;
 		dynamic y = 50;
-		int v =  x.GetValueOrDefault(y);
+		int v = x.GetValueOrDefault(y);
 		if (v != 50)
 			return 1;
 		
+		var s = new S ();
+		dynamic d = 5;
+
+		s.SetValue (d);
+		if (s.Value != 5)
+			return 2;
+		
+		Method (ref s);
+		if (s.Value != 25)
+			return 3;
+		
 		return 0;
 	}
 }
diff --git a/mcs/tests/dtest-027.cs b/mcs/tests/dtest-027.cs
index ab8431b..9a97972 100644
--- a/mcs/tests/dtest-027.cs
+++ b/mcs/tests/dtest-027.cs
@@ -14,6 +14,16 @@ class C
 	{
 		return 3;
 	}
+	
+	public int M2 (object d)
+	{
+		return 1;
+	}
+	
+	public int M2 (byte s)
+	{
+		return 2;
+	}
 }
 
 public class Test
@@ -27,6 +37,10 @@ public class Test
 		
 		if (v != 2)
 			return 1;
+		
+		v = d.M2 (1 + 3);
+		if (v != 2)
+			return 2;
 
 		return 0;
 	}
diff --git a/mcs/tests/dtest-028.cs b/mcs/tests/dtest-028.cs
index 65b6b1a..94c3379 100644
--- a/mcs/tests/dtest-028.cs
+++ b/mcs/tests/dtest-028.cs
@@ -13,6 +13,10 @@ class C
 
 public class Test
 {
+	static void M (ref dynamic[] d, ref object[] o)
+	{
+	}
+	
 	public static int Main ()
 	{
 		dynamic d = new C ();
@@ -27,6 +31,9 @@ public class Test
 		if (u != 40)
 			return 2;
 		
+		object[] o = null;
+		M (ref o, ref o);
+		
 		return 0;
 	}
 }
diff --git a/mcs/tests/dtest-030.cs b/mcs/tests/dtest-030.cs
new file mode 100644
index 0000000..979e719
--- /dev/null
+++ b/mcs/tests/dtest-030.cs
@@ -0,0 +1,40 @@
+using System;
+
+class A<T>
+{
+}
+
+class B
+{
+	static void M1<T> (T t) where T : struct
+	{
+	}
+	
+	static void M2<T, U> (T t, U u) where U : IEquatable<T>
+	{
+	}
+	
+	static void M3<T, U> (T t, A<U> u) where U : IEquatable<T>
+	{
+	}
+
+	static void M4<T, U> (T t, IEquatable<U> u) where T : IEquatable<U>
+	{
+	}
+
+	public static void Main ()
+	{
+		dynamic d = 2;
+		M1 (d);
+		
+		M2 (d, 6);
+		M2 (4, d);
+		
+		M3 (d, new A<int> ());
+		
+		M4 (d, 6);
+		// TODO: type inference
+		//M4 (4, d);
+	}
+}
+
diff --git a/mcs/tests/dtest-031.cs b/mcs/tests/dtest-031.cs
new file mode 100644
index 0000000..afce420
--- /dev/null
+++ b/mcs/tests/dtest-031.cs
@@ -0,0 +1,26 @@
+using System;
+
+public class A<T>
+{
+	public U CustomDelegate<U>(out U u)
+	{
+		u = default(U);
+		return default(U);
+	}
+}
+
+public class Test
+{
+	public static int Main()
+	{
+		Foo<int> ();
+		return 0;
+	}
+	
+	static void Foo<Z> ()
+	{
+		dynamic a = new A<Z>();
+		Z z;
+		a.CustomDelegate(out z);
+	}
+}
\ No newline at end of file
diff --git a/mcs/tests/dtest-032.cs b/mcs/tests/dtest-032.cs
new file mode 100644
index 0000000..1685ee2
--- /dev/null
+++ b/mcs/tests/dtest-032.cs
@@ -0,0 +1,31 @@
+using System;
+
+class A
+{
+	public int value;
+	
+	public A (int value)
+	{
+		this.value = value;
+	}
+}
+
+class B
+{
+	static void Foo (int i, out A a)
+	{
+		a = new A (i);
+	}
+
+	public static int Main ()
+	{
+		dynamic d = 6;
+		A a;
+		Foo (d, out a);
+		if (a.value != 6)
+			return 1;
+		
+		return 0;
+	}
+}
+
diff --git a/mcs/tests/dtest-033.cs b/mcs/tests/dtest-033.cs
new file mode 100644
index 0000000..f64fdc0
--- /dev/null
+++ b/mcs/tests/dtest-033.cs
@@ -0,0 +1,94 @@
+using System;
+
+public class Test
+{
+	byte Prop {
+		get { return 4; }
+		set { }
+	}
+
+	byte this [int arg] {
+		get { return 2; }
+		set { }
+	}
+	
+	byte Byte = 200;
+	static dynamic V;
+	dynamic DynamicByte;
+	byte[] ByteArray = { 1, 100 };
+
+	public static int Main ()
+	{
+		dynamic v = 'a';
+		dynamic a = new Test ();
+
+		string s = "-sdfas";
+		
+		// dynamic compound assignment with different result type
+		v += s;
+
+		if (v != "a-sdfas")
+			return 1;
+		
+		dynamic d2 = null;
+		d2 += "a";
+		if (d2 != "a")
+			return 2;
+
+		byte b = 4;
+		a.Prop *= b;
+		a[4] ^= b;
+		
+		dynamic d = 1;
+		b = byte.MaxValue;
+		try {
+			checked {
+				b += d;
+				return 3;
+			}
+		} catch (OverflowException) {
+		}
+			
+		b += d;
+		
+		try {
+			checked {
+				a.Byte += 100;
+				return 4;
+			}
+		} catch (OverflowException) {
+		}
+		
+		a.Byte += 100;
+		
+		checked {
+			d = byte.MaxValue;
+			d += 100;
+		}
+
+		checked {
+			V = byte.MaxValue;
+			V -= 300;
+		}
+
+		var t = new Test ();
+		t.DynamicByte = byte.MaxValue;
+		d = t;
+		checked {
+			d.DynamicByte -= 500;
+		}
+		
+		if (t.DynamicByte != -245)
+			return 5;
+
+		try {
+			checked {
+				d.ByteArray[1] += 200;
+				return 6;
+			}			
+		} catch (OverflowException) {
+		}
+
+		return 0;
+	}
+}
diff --git a/mcs/tests/dtest-034.cs b/mcs/tests/dtest-034.cs
new file mode 100644
index 0000000..b556f1f
--- /dev/null
+++ b/mcs/tests/dtest-034.cs
@@ -0,0 +1,28 @@
+public class C
+{
+	public void M<U, V> (out U u, ref V v)
+	{
+		u = default (U);
+	}
+}
+
+public class Test
+{
+	public static int Main ()
+	{
+		dynamic u = "s";
+		dynamic v = 5;
+		dynamic c = new C ();
+		c.M (out u, ref v);
+		
+		if (v != 5)
+			return 1;
+			
+		if (u != null)
+			return 2;
+
+		return 0;
+	}
+}
+
+
diff --git a/mcs/tests/dtest-035.cs b/mcs/tests/dtest-035.cs
new file mode 100644
index 0000000..6f83bc2
--- /dev/null
+++ b/mcs/tests/dtest-035.cs
@@ -0,0 +1,79 @@
+using System;
+
+public class Test
+{
+	public dynamic this[int i] {
+		get { 
+			return 0;
+		}
+		set {
+		}
+	}
+
+	public dynamic[] Prop {
+		get {
+			return new dynamic [] { 0 };
+		}
+		set {
+		}
+	}
+	
+	public int Prop2 {
+		get {
+			return 5;
+		}
+		set {
+		}
+	}
+	
+	int prop = 500;
+	public dynamic Prop3
+	{
+		get { return prop; }
+		set { prop = value; }
+	}
+
+	public static int Main ()
+	{
+		int i = 0;
+		var d = new dynamic[] { 1 };
+		d[i++] += null;
+		if (i != 1)
+			return 1;
+		
+		i = 0;
+		var t = new Test ();
+		t [i++] += null;
+		if (i != 1)
+			return 2;
+		
+		i = 0;
+		t.Prop [i++] += null;
+		if (i != 1)
+			return 3;
+		
+		i = 0;
+		d [0] = 9;
+		t.Prop2 += d [0];
+		
+		int v = 3;
+		v *= t.Prop3 -= 15;
+		if (v != 1455)
+			return 4;
+		
+		dynamic dvalue = 3;
+		int[] iar = new [] { -14 };
+		iar [0] += dvalue;
+		if (iar [0] != -11)
+			return 5;
+		
+		dynamic dn = 1;
+		int?[] array = new int?[1];
+		array[0] = dn;
+		if (array [0] != 1)
+			return 6;
+
+		Console.WriteLine ("ok");
+		return 0;
+	}
+}
diff --git a/mcs/tests/dtest-036.cs b/mcs/tests/dtest-036.cs
new file mode 100644
index 0000000..9b5bbc0
--- /dev/null
+++ b/mcs/tests/dtest-036.cs
@@ -0,0 +1,29 @@
+using System;
+
+public class C
+{
+	event Func<int, int> E;
+	Func<int, int> D;
+
+	public static int Main ()
+	{
+		var c = new C ();
+		Func<int, int> v = Foo;
+		dynamic[] arr = new dynamic [] { v };
+		
+		c.E += arr [0];
+		if (c.E.GetInvocationList ().Length != 1)
+			return 1;
+
+		c.D += arr [0];
+		if (c.D.GetInvocationList ().Length != 1)
+			return 2;
+		
+		return 0;
+	}
+	
+	static int Foo (int ii)
+	{
+		return 9;
+	}
+}
diff --git a/mcs/tests/dtest-037-lib.cs b/mcs/tests/dtest-037-lib.cs
new file mode 100644
index 0000000..e326a84
--- /dev/null
+++ b/mcs/tests/dtest-037-lib.cs
@@ -0,0 +1,49 @@
+// Compiler options: -t:library
+
+public interface I<T>
+{
+	T Value { get; }
+}
+
+public class AI: I<object>
+{
+	public object Value { get; set; }
+}
+
+public class External
+{
+	public dynamic DynamicProperty { get; set; }
+	public dynamic Field;
+	public dynamic[,] FieldArray;
+	
+	public dynamic Method (dynamic d)
+	{
+		return d;
+	}
+	
+	public void MethodOut (out dynamic d)
+	{
+		d = decimal.MaxValue;
+	}
+	
+	public I<dynamic>[] Method2 (dynamic d)
+	{
+		return new [] { new AI () { Value = d }};
+	}
+	
+	// Same as Method2 to check we are interning dynamic
+	public I<dynamic>[] Method3 (dynamic d)
+	{
+		return d;
+	}
+}
+
+public class CI<T> : I<T>
+{
+	public T Value { get; set; }
+}
+
+public class CI2 : CI<dynamic>
+{
+}
+
diff --git a/mcs/tests/dtest-037.cs b/mcs/tests/dtest-037.cs
new file mode 100644
index 0000000..b1485bd
--- /dev/null
+++ b/mcs/tests/dtest-037.cs
@@ -0,0 +1,47 @@
+// Compiler options: -r:dtest-037-lib.dll
+
+enum E
+{
+	Value = 9
+}
+
+class C
+{
+	public static int Main ()
+	{
+		var t = new External ();
+
+		t.DynamicProperty = "test";
+		string s = t.DynamicProperty;
+		if (s != "test")
+			return 1;
+		
+		t.Field = 's';
+		if (t.Field != 's')
+			return 2;
+
+		t.FieldArray = new dynamic [2,2];
+		t.FieldArray [1,1] = 'b';
+		if (t.FieldArray[1,1] != 'b')
+			return 21;
+		
+		if (t.Method (E.Value) != E.Value)
+			return 3;
+		
+		dynamic d;
+		t.MethodOut (out d);
+		if (d != decimal.MaxValue)
+			return 4;
+
+		I<dynamic>[] r = t.Method2 (1);
+		int res = r [0].Value;
+		r = t.Method3 (null);
+		
+		CI<dynamic> ci2 = new CI2 ();
+		ci2.Value = 'v';
+		if (ci2.Value != 'v')
+			return 5;
+		
+		return 0;
+	}
+}
\ No newline at end of file
diff --git a/mcs/tests/dtest-038.cs b/mcs/tests/dtest-038.cs
new file mode 100644
index 0000000..e6f747b
--- /dev/null
+++ b/mcs/tests/dtest-038.cs
@@ -0,0 +1,29 @@
+using System;
+using Microsoft.CSharp.RuntimeBinder;
+
+public class Test
+{
+	void Foo ()
+	{
+	}
+	
+	public static int Main ()
+	{
+		dynamic d = new Test ();
+
+		var t1 = true ? d : 2;
+		t1.Foo ();
+		
+		var t2 = true ? 1 : d;
+		if (t2 != 1)
+			return 1;
+		
+		try {
+			t2.Foo ();
+			return 2;
+		} catch (RuntimeBinderException) {
+		}
+
+		return 0;
+	}
+}
\ No newline at end of file
diff --git a/mcs/tests/dtest-039.cs b/mcs/tests/dtest-039.cs
new file mode 100644
index 0000000..1535710
--- /dev/null
+++ b/mcs/tests/dtest-039.cs
@@ -0,0 +1,102 @@
+class A
+{
+	public virtual object Foo ()
+	{
+		return null;
+	}
+	
+	public virtual object[] FooArray ()
+	{
+		return null;
+	}
+	
+	internal virtual object Prop {
+		get {
+			return 9;
+		}
+		set {
+		}
+	}
+	
+	public virtual object[] PropArray {
+		get {
+			return null;
+		}
+	}
+	
+	internal virtual object this [int arg] {
+		get {
+			return 5;
+		}
+		set {
+		}
+	}
+}
+
+class B : A
+{
+	public override dynamic Foo ()
+	{
+		return 5;
+	}
+	
+	public override dynamic[] FooArray ()
+	{
+		return new object [] { 'a', 'b' , 'z' };
+	}
+	
+	internal override dynamic Prop {
+		set {
+		}
+	}
+	
+	public override dynamic[] PropArray {
+		get {
+			return new object [] { 'a', 'b' };
+		}
+	}
+	
+	internal override dynamic this [int arg] {
+		set {
+		}
+	}
+}
+
+class MainClass : B
+{
+	void Test ()
+	{
+		char ch;
+		ch = Prop;
+		ch = PropArray [1];
+		ch = this [1];
+	}
+	
+	public static int Main ()
+	{
+		B b = new B ();
+		int res;
+		res = b.Foo ();
+		if (res != 5)
+			return 1;
+		
+		char ch = b.FooArray () [1];
+		if (ch != 'b')
+			return 2;
+		
+		++b.Prop;
+		res = b.Prop;
+		if (res != 9)
+			return 3;
+		
+		ch = b.PropArray [1];
+		if (ch != 'b')
+			return 4;
+		
+		res = b [3];
+		if (res != 5)
+			return 5;
+		
+		return 0;
+	}
+}
\ No newline at end of file
diff --git a/mcs/tests/dtest-040.cs b/mcs/tests/dtest-040.cs
new file mode 100644
index 0000000..5cfa4e9
--- /dev/null
+++ b/mcs/tests/dtest-040.cs
@@ -0,0 +1,52 @@
+struct S<T1, T2>
+{
+	public T1 First;
+	public T2 Second;
+}
+
+class A
+{
+	public virtual S<U, object> Foo<U> (U u)
+	{
+		return new S<U, object> ();
+	}
+}
+
+class B : A
+{
+	public override S<T, dynamic> Foo<T> (T t)
+	{
+		return new S<T, dynamic> () {
+			First = t,
+			Second = "second"
+		};
+	}
+}
+
+public class MainClass
+{
+	public static int Main ()
+	{
+		B b = new B ();
+		var res = b.Foo<int> (5);
+		int i;
+		i = res.First;
+		if (i != 5)
+			return 1;
+		
+		i = res.Second.Length;
+		if (i != 6)
+			return 2;
+		
+		res = b.Foo (4);
+		i = res.First;
+		if (i != 4)
+			return 3;
+		
+		i = res.Second.Length;
+		if (i != 6)
+			return 4;
+		
+		return 0;
+	}
+}
\ No newline at end of file
diff --git a/mcs/tests/dtest-041.cs b/mcs/tests/dtest-041.cs
new file mode 100644
index 0000000..ea5a23a
--- /dev/null
+++ b/mcs/tests/dtest-041.cs
@@ -0,0 +1,26 @@
+
+class A<AA>
+{
+	public virtual AA Foo<U> (U u)
+	{
+		return default (AA);
+	}
+}
+
+class B : A<object>
+{
+	public override dynamic Foo<T> (T t)
+	{
+		return 'c';
+	}
+}
+
+public class MainClass
+{
+	public static int Main ()
+	{
+		B b = new B ();
+		char res = b.Foo<int> (5);
+		return 0;
+	}
+}
\ No newline at end of file
diff --git a/mcs/tests/dtest-042.cs b/mcs/tests/dtest-042.cs
new file mode 100644
index 0000000..c78f9cf
--- /dev/null
+++ b/mcs/tests/dtest-042.cs
@@ -0,0 +1,26 @@
+class A
+{
+	protected virtual object Prop { get { return null; } set { } }
+}
+
+class B : A
+{
+	public void Foo ()
+	{
+	}
+
+	protected override dynamic Prop { get { return new B (); } }
+}
+
+class Program : B
+{
+	void Test ()
+	{
+		base.Prop.Foo ();
+	}
+
+	public static void Main ()
+	{
+		new Program ().Test ();
+	}
+}
\ No newline at end of file
diff --git a/mcs/tests/dtest-043.cs b/mcs/tests/dtest-043.cs
new file mode 100644
index 0000000..0308e88
--- /dev/null
+++ b/mcs/tests/dtest-043.cs
@@ -0,0 +1,27 @@
+class A
+{
+	public static int Main ()
+	{
+		dynamic d = 'a';
+		object o = null;
+		
+		char ch = o ?? d;
+		if (ch != 'a')
+			return 1;
+		
+		const A a = null;
+		ch = a ?? d;
+		if (ch != 'a')
+			return 2;
+		
+		ch = d ?? 'b';
+		if (ch != 'a')
+			return 3;
+		
+		int? n = null;
+		dynamic d2 = null;
+		var r = n ?? d2;
+		
+		return 0;
+	}
+}
\ No newline at end of file
diff --git a/mcs/tests/dtest-044.cs b/mcs/tests/dtest-044.cs
new file mode 100644
index 0000000..327dd1e
--- /dev/null
+++ b/mcs/tests/dtest-044.cs
@@ -0,0 +1,30 @@
+using System;
+using System.Collections.Generic;
+
+class C
+{
+	public static int Test<T, U>(T a, IComparable<U> b) where T: IComparable<U>
+	{
+		return 1;
+	}
+
+	public static int Test_2<T>(IList<T> a, T b)
+	{
+		return 2;
+	}
+	
+	static int Main ()
+	{
+		dynamic d = 1;
+		if (Test (1, d) != 1)
+			return 1;
+		
+		if (Test (d, 1) != 1)
+			return 2;
+		
+		if (Test_2 (new int [0], d) != 2)
+			return 3;
+		
+		return 0;
+	}
+}
diff --git a/mcs/tests/dtest-045.cs b/mcs/tests/dtest-045.cs
new file mode 100644
index 0000000..30d9c07
--- /dev/null
+++ b/mcs/tests/dtest-045.cs
@@ -0,0 +1,24 @@
+using System;
+
+class Test
+{
+	static int Main ()
+	{
+		dynamic index = (uint) int.MaxValue + 1;
+		dynamic array = new int[] { 1, 2 };
+
+		try {
+			var a = array [index];
+			return 1;
+		} catch (System.OverflowException) {
+		}
+
+		try {
+			array[ulong.MaxValue] = 1;
+			return 2;
+		} catch (System.OverflowException) {
+		}
+
+		return 0;
+	}
+}
\ No newline at end of file
diff --git a/mcs/tests/dtest-046.cs b/mcs/tests/dtest-046.cs
new file mode 100644
index 0000000..55eba0d
--- /dev/null
+++ b/mcs/tests/dtest-046.cs
@@ -0,0 +1,37 @@
+using System;
+
+class Test
+{
+	delegate int D (ref int i);
+
+	public dynamic Foo;
+
+	public static int Main ()
+	{
+		dynamic d = new Test ();
+
+		d.Foo = (Func<int, int>) (l => 4 + l);
+
+		var r1 = d.Foo (3);
+		if (r1 != 7)
+			return 1;
+
+		d.Foo (2);
+
+		d.Foo = (Action) (() => Console.WriteLine ("action"));
+		d.Foo ();
+
+		d.Foo = (D) ((ref int l) => { l = 9; return 4; });
+
+		int ref_value = 3;
+		var r2 = d.Foo (ref ref_value);
+		if (r2 != 4)
+			return 2;
+
+		if (ref_value != 9)
+			return 3;
+
+		Console.WriteLine ("ok");
+		return 0;
+	}
+}
diff --git a/mcs/tests/dtest-047.cs b/mcs/tests/dtest-047.cs
new file mode 100644
index 0000000..07cd35c
--- /dev/null
+++ b/mcs/tests/dtest-047.cs
@@ -0,0 +1,23 @@
+using System;
+
+class C<T>
+{
+	public event Func<int, int> E = l => l + 9;
+	
+	public static int Test (int arg)
+	{
+		dynamic c = new C<T> ();
+		return c.E (arg);
+	}
+}
+
+public class Test
+{
+	public static int Main ()
+	{
+		if (C<int>.Test (5) != 14)
+			return 1;
+		
+		return 0;
+	}
+}
diff --git a/mcs/tests/dtest-048.cs b/mcs/tests/dtest-048.cs
new file mode 100644
index 0000000..aa205bf
--- /dev/null
+++ b/mcs/tests/dtest-048.cs
@@ -0,0 +1,30 @@
+using System;
+class A
+{
+	static int M (string s, object o)
+	{
+		return 1;
+	}
+
+	static int M (string s, params object[] o)
+	{
+		if (o != null)
+			return 2;
+
+		return 0;
+	}
+
+	public static int Main ()
+	{
+		if (M ("x", null) != 0)
+			return 1;
+		
+		if (M ("x", (object[])null) != 0)
+			return 2;
+		
+		if (M ("x", (dynamic)null) != 0)
+			return 3;
+		
+		return 0;
+	}
+}
\ No newline at end of file
diff --git a/mcs/tests/dtest-049.cs b/mcs/tests/dtest-049.cs
new file mode 100644
index 0000000..3f74984
--- /dev/null
+++ b/mcs/tests/dtest-049.cs
@@ -0,0 +1,25 @@
+public class A
+{
+	public class N : B.N
+	{
+	}
+}
+
+public class B
+{
+	public class N
+	{
+		public void Test ()
+		{
+		}
+	}
+}
+
+class C
+{
+	public static void Main ()
+	{
+		dynamic n = new A.N ();
+		n.Test ();
+	}
+}
diff --git a/mcs/tests/dtest-050.cs b/mcs/tests/dtest-050.cs
new file mode 100644
index 0000000..b79d8a3
--- /dev/null
+++ b/mcs/tests/dtest-050.cs
@@ -0,0 +1,64 @@
+using System;
+
+
+public struct S
+{
+	public static bool operator true (S s)
+	{
+		throw new ApplicationException ();
+	}
+
+	public static bool operator false (S s)
+	{
+		return true;
+	}
+
+	public static string operator ! (S s)
+	{
+		throw new ApplicationException ();
+	}
+}
+
+class C
+{
+	static bool Throw ()
+	{
+		throw new ApplicationException ("error");
+	}
+	
+	static bool Return (bool value)
+	{
+		return value;
+	}
+	
+	public static int Main ()
+	{
+		dynamic d = 4;
+		
+		if (Return (false) && d)
+			return 1;
+
+		if (Return (true) || d) {
+		} else {
+			return 2;
+		}
+
+		d = false;
+		if (d && Throw ())
+			return 3;
+		
+		d = true;
+		if (d || Throw ()) {
+		} else {
+			return 4;
+		}
+		
+		dynamic a = new S ();
+		dynamic b = new S ();
+		var result = a && b;
+		
+		Console.WriteLine ("ok");
+		return 0;
+	}
+	
+}
\ No newline at end of file
diff --git a/mcs/tests/dtest-051.cs b/mcs/tests/dtest-051.cs
new file mode 100644
index 0000000..5c9d432
--- /dev/null
+++ b/mcs/tests/dtest-051.cs
@@ -0,0 +1,31 @@
+using System;
+
+class C
+{
+	int value = 1;
+	
+	public int this [int arg] {
+		get { return this.value; }
+		set { this.value = value + arg; }
+	}
+	
+	public static int Main ()
+	{
+		C c = new C ();
+		dynamic d = c;
+		int index = 1;
+
+		var x = ++d[++index];
+
+		if (index != 2)
+			return 1;
+		
+		if (c.value != 4)
+			return 2;
+		
+		if (x != 2)
+			return 3;
+		
+		return 0;
+	}
+}
\ No newline at end of file
diff --git a/mcs/tests/dtest-052-lib.cs b/mcs/tests/dtest-052-lib.cs
new file mode 100644
index 0000000..e862269
--- /dev/null
+++ b/mcs/tests/dtest-052-lib.cs
@@ -0,0 +1,12 @@
+// Compiler options: -t:library
+
+public interface IG<T>
+{
+	T Value { get; }
+}
+
+public class DynamicReference
+{
+	public IG<dynamic> DynType;
+	public IG<dynamic[][]> DynArray;
+}
diff --git a/mcs/tests/dtest-052.cs b/mcs/tests/dtest-052.cs
new file mode 100644
index 0000000..7fa9e06
--- /dev/null
+++ b/mcs/tests/dtest-052.cs
@@ -0,0 +1,16 @@
+// Compiler options: -r:dtest-052-lib.dll
+
+// Importing of complex dynamic arguments
+
+class A
+{
+	public void Method (DynamicReference d)
+	{
+		d.DynType.Value.AnyMethod ();
+		d.DynArray.Value[0][0].AnyMethod ();
+	}
+	
+	public static void Main ()
+	{
+	}
+}
diff --git a/mcs/tests/dtest-cls-01.cs b/mcs/tests/dtest-cls-01.cs
new file mode 100644
index 0000000..1a9bb65
--- /dev/null
+++ b/mcs/tests/dtest-cls-01.cs
@@ -0,0 +1,21 @@
+// Compiler options: -warnaserror
+
+using System;
+using System.Collections.Generic;
+
+[assembly: CLSCompliant (true)]
+
+public class A
+{
+	public static void Main ()
+	{
+	}
+
+	public void CLSCompliantMethod (dynamic[] parameter)
+	{
+	}
+
+	public void CLSCompliantMethod (IEnumerable<dynamic> parameter)
+	{
+	}
+}
\ No newline at end of file
diff --git a/mcs/tests/dtest-collectioninit-01.cs b/mcs/tests/dtest-collectioninit-01.cs
new file mode 100644
index 0000000..55bbbb7
--- /dev/null
+++ b/mcs/tests/dtest-collectioninit-01.cs
@@ -0,0 +1,31 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+
+public class Test
+{
+	class Wrap
+	{
+		List<short> numbers = new List<short> ();
+		
+		public dynamic Numbers { 
+			get { 
+				return numbers;
+			}
+		}
+	}
+	
+	static int Main ()
+	{
+		var a = new Wrap () {
+			Numbers =  { 3, 9 }
+		};
+		
+		if (a.Numbers [1] != 9)
+			return 1;
+		
+		Console.WriteLine ("OK");
+		return 0;
+	}
+}
+
diff --git a/mcs/tests/dtest-error-01.cs b/mcs/tests/dtest-error-01.cs
index 52b3de6..a7ee0ef 100644
--- a/mcs/tests/dtest-error-01.cs
+++ b/mcs/tests/dtest-error-01.cs
@@ -17,6 +17,23 @@ class Helper
 class Tester
 {
 #pragma warning disable 169
+	void NonInvocable ()
+	{
+		AssertError (
+			() => {
+				dynamic d = 1;
+				d ();
+			}, "Cannot invoke a non-delegate type `int'");
+	}
+	
+	void Using_1 ()
+	{
+		AssertError (
+			() => {
+				using (dynamic d = 1) { }
+			}, "Cannot implicitly convert type `int' to `System.IDisposable'");
+	}
+	
 	void Unsafe_1 ()
 	{
 		dynamic d = 1;
@@ -25,6 +42,17 @@ class Tester
 			"Pointers and fixed size buffers cannot be used in a dynamic context");
 	}
 	
+	void NullableConversion ()
+	{
+		dynamic d = 1;
+		AssertError (
+			() => {
+				dynamic b = false;
+				byte? b2 = null;
+				b &= b2;
+			}, "Operator `&=' cannot be applied to operands of type `bool' and `byte?'");
+	}
+	
 #pragma warning restore 169
 	
 	static void AssertError (Action a, string msg)
@@ -33,7 +61,7 @@ class Tester
 			a ();
 		} catch (RuntimeBinderException e) {
 			if (e.Message != msg)
-				throw;
+				throw new ApplicationException ("Expected error message: " + e.Message);
 			
 			return;
 		}
diff --git a/mcs/tests/dtest-error-02.cs b/mcs/tests/dtest-error-02.cs
new file mode 100644
index 0000000..b8b4eb0
--- /dev/null
+++ b/mcs/tests/dtest-error-02.cs
@@ -0,0 +1,35 @@
+using System;
+using Microsoft.CSharp.RuntimeBinder;
+
+class A
+{
+	private class N
+	{
+		public void Foo ()
+		{
+		}
+	}
+	
+	public static dynamic Factory ()
+	{
+		return new N ();
+	}
+}
+
+public class Test
+{
+	public static int Main ()
+	{
+		dynamic d = A.Factory ();
+		
+		try {
+			d.Foo ();
+			return 1;
+		} catch (RuntimeBinderException e) {
+			if (e.Message != "`A.N.Foo()' is inaccessible due to its protection level")
+				return 2;
+		}
+		
+		return 0;
+	}
+}
diff --git a/mcs/tests/dtest-etree-01.cs b/mcs/tests/dtest-etree-01.cs
new file mode 100644
index 0000000..95553f9
--- /dev/null
+++ b/mcs/tests/dtest-etree-01.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Linq.Expressions;
+
+public class C
+{
+	static void Conv1(Expression<Func<object, object>> l)
+	{
+	}
+	
+	static void Conv2(Expression<Func<dynamic, dynamic>> l)
+	{
+	}
+	
+	public static void Main ()
+	{
+		Expression<Func<object>> e1 = () => (dynamic) 1;
+		Expression<Func<dynamic>> e2 = () => (object) 1;
+		
+		Conv1 ((d) => (dynamic) 1);
+		Conv1 ((dynamic d) => d);
+		
+		Conv2 ((o) => (object) 1);
+		Conv2 ((object o) => o);
+	}
+}
\ No newline at end of file
diff --git a/mcs/tests/dtest-etree-02.cs b/mcs/tests/dtest-etree-02.cs
new file mode 100644
index 0000000..0e9d1a6
--- /dev/null
+++ b/mcs/tests/dtest-etree-02.cs
@@ -0,0 +1,11 @@
+using System;
+using System.Linq.Expressions;
+
+class C
+{
+	public static void Main ()
+	{
+		Expression<Func<dynamic, int, dynamic>> e = (dynamic da, int xa) => true ? da : xa;
+		string s = e.Compile () ("in", 1);
+	}
+}
diff --git a/mcs/tests/dtest-friend-01-lib.cs b/mcs/tests/dtest-friend-01-lib.cs
new file mode 100644
index 0000000..f114034
--- /dev/null
+++ b/mcs/tests/dtest-friend-01-lib.cs
@@ -0,0 +1,12 @@
+// Compiler options: -t:library
+
+using System.Runtime.CompilerServices;
+
+[assembly: InternalsVisibleTo("dtest-friend-01")]
+
+public class A
+{
+	internal void Test ()
+	{
+	}
+}
\ No newline at end of file
diff --git a/mcs/tests/dtest-friend-01.cs b/mcs/tests/dtest-friend-01.cs
new file mode 100644
index 0000000..4766599
--- /dev/null
+++ b/mcs/tests/dtest-friend-01.cs
@@ -0,0 +1,10 @@
+// Compiler options: -r:dtest-friend-01-lib.dll
+
+class C
+{
+	public static void Main ()
+	{
+		dynamic d = new A();
+		d.Test ();
+	}
+}
diff --git a/mcs/tests/dtest-named-01.cs b/mcs/tests/dtest-named-01.cs
new file mode 100644
index 0000000..8a1e5df
--- /dev/null
+++ b/mcs/tests/dtest-named-01.cs
@@ -0,0 +1,18 @@
+public class Test
+{
+	public void Foo (out int arg)
+	{
+		arg = 5;
+	}
+
+	public static int Main ()
+	{
+		dynamic d = new Test ();
+		int x;
+		d.Foo (arg: out x);
+		if (x != 5)
+			return 1;
+
+		return 0;
+	}
+}
\ No newline at end of file
diff --git a/mcs/tests/dtest-named-02.cs b/mcs/tests/dtest-named-02.cs
new file mode 100644
index 0000000..2ec4651
--- /dev/null
+++ b/mcs/tests/dtest-named-02.cs
@@ -0,0 +1,50 @@
+using System;
+
+public class Test
+{
+	static int counter;
+
+	static int M1 ()
+	{
+		if (counter != 2)
+			throw new ApplicationException ();
+
+		return counter++;
+	}
+
+	static int M2 ()
+	{
+		if (counter != 3)
+			throw new ApplicationException ();
+
+		return counter++;
+	}
+
+	static dynamic M3 ()
+	{
+		if (counter != 1)
+			throw new ApplicationException ();
+
+		return counter++;
+	}
+
+	static int Foo (int a, int b, int c)
+	{
+		if (a != 2)
+			return 1;
+
+		if (b != 3)
+			return 2;
+
+		if (c != 1)
+			return 3;
+
+		return 0;
+	}
+
+	public static int Main ()
+	{
+		counter = 1;
+		return Foo (c: M3 (), a: M1 (), b: M2 ());
+	}
+}
\ No newline at end of file
diff --git a/mcs/tests/dtest-optional-01.cs b/mcs/tests/dtest-optional-01.cs
new file mode 100644
index 0000000..09eacbe
--- /dev/null
+++ b/mcs/tests/dtest-optional-01.cs
@@ -0,0 +1,59 @@
+using System;
+using System.Reflection;
+using System.Runtime.InteropServices;
+
+struct S
+{
+}
+
+public class G<T>
+{
+
+	public object M1 (T o = default (T))
+	{
+		return o;
+	}
+
+	public object M2 ([Optional] T o)
+	{
+		return o;
+	}
+}
+
+public class C
+{
+	public static object Test ([Optional] dynamic a)
+	{
+		return a;
+	}
+	
+	void TestS (S s = default (S))
+	{
+	}
+	
+	object TestD (dynamic o = null)
+	{
+		return o;
+	}
+
+	public static int Main ()
+	{
+		if (Test () != Missing.Value)
+			return 1;
+		
+		dynamic d = new C ();
+		d.TestS ();
+		
+		if (d.TestD () != null)
+			return 2;
+			
+		d = new G<string> ();
+		if (d.M1 () != null)
+			return 3;
+			
+		if (d.M2 () != null)
+			return 4;
+		
+		return 0;
+	}
+}
diff --git a/mcs/tests/gtest-078.cs b/mcs/tests/gtest-078.cs
index 4ef3c9b..46ec88e 100644
--- a/mcs/tests/gtest-078.cs
+++ b/mcs/tests/gtest-078.cs
@@ -1,17 +1,66 @@
 using System;
-using System.Collections;
 
-public class Test
+struct S : IDisposable
 {
-        public static void Main ()
-        {
-                foreach (object o in new Test ())
-                        Console.WriteLine (o);
-        }
-
-        public IEnumerator GetEnumerator ()
-        {
-                foreach (int i in new ArrayList ())
-                        yield return i;
-        }
+	public static int hit;
+
+	void IDisposable.Dispose ()
+	{
+		hit++;
+	}
+
+	public void Dispose ()
+	{
+		throw new ApplicationException ();
+	}
+}
+
+class C : IDisposable
+{
+
+	void IDisposable.Dispose ()
+	{
+	}
+
+	public void Dispose ()
+	{
+		throw new ApplicationException ();
+	}
+}
+
+class Test
+{
+	public static int Main ()
+	{
+		S? nullable = null;
+		using (var a = nullable) {
+		}
+
+		if (S.hit != 0)
+			return 1;
+
+		using (var s = new S ()) {
+		}
+
+		if (S.hit != 1)
+			return 2;
+
+		C c = null;
+		GenMethod (c);
+		
+		using (S? a = nullable, b = nullable) {
+		}
+		
+		if (S.hit != 1)
+			return 3;
+
+		Console.WriteLine ("ok");
+		return 0;
+	}
+
+	static void GenMethod<T> (T t) where T : IDisposable
+	{
+		using (T t2 = t) {
+		}
+	}
 }
diff --git a/mcs/tests/gtest-139.cs b/mcs/tests/gtest-139.cs
new file mode 100644
index 0000000..435598d
--- /dev/null
+++ b/mcs/tests/gtest-139.cs
@@ -0,0 +1,42 @@
+using System;
+
+public struct MyStruct
+{
+	public static int operator !=(MyStruct? a, string b)
+	{
+		return -1;
+	}
+	
+	public static int operator ==(MyStruct? a, string b)
+	{
+		return 1;
+	}
+	
+	public static int operator !=(string a, MyStruct? b)
+	{
+		return -2;
+	}
+	
+	public static int operator ==(string a, MyStruct? b)
+	{
+		return 2;
+	}
+}
+
+public class Test
+{
+	public static int Main()
+	{
+		MyStruct? ms = new MyStruct ();
+		int v;
+		v = ms == "a";
+		if (v != 1)
+			return 1;
+		
+		v = "b" != ms;
+		if (v != -2)
+			return 2;
+		
+		return 0;
+	}
+}
\ No newline at end of file
diff --git a/mcs/tests/gtest-142.cs b/mcs/tests/gtest-142.cs
index 1347905..c9a1b60 100644
--- a/mcs/tests/gtest-142.cs
+++ b/mcs/tests/gtest-142.cs
@@ -91,6 +91,16 @@ class X
 		Assert.IsTrue ("f | b", f | b);
 		Assert.IsTrue ("f | c", f | c);
 
+		Assert.IsNull ("d ^ a", d ^ a);
+		Assert.IsNull ("d ^ b", d ^ b);
+		Assert.IsNull ("d ^ c", d ^ c);
+		Assert.IsNull ("e ^ a", e ^ a);
+		Assert.IsFalse ("e ^ b", e ^ b);
+		Assert.IsTrue ("e ^ c", e ^ c);
+		Assert.IsNull ("f ^ a", f ^ a);
+		Assert.IsTrue ("f ^ b", f ^ b);
+		Assert.IsFalse ("f ^ c", f ^ c);
+		
 		int? g = 3, h = null, i = 3, j = null;
 
 		Assert.IsFalse ("g == null", g == null);
diff --git a/mcs/tests/gtest-165-lib.cs b/mcs/tests/gtest-165-lib.cs
new file mode 100644
index 0000000..599ad27
--- /dev/null
+++ b/mcs/tests/gtest-165-lib.cs
@@ -0,0 +1,16 @@
+// Compiler options: -t:library
+
+public class A<T>
+{
+	public int this [T arg] {
+		get {
+			return 1;
+		}
+	}
+	
+	public int this [string arg] {
+		get {
+			return 2;
+		}
+	}
+}
diff --git a/mcs/tests/gtest-165.cs b/mcs/tests/gtest-165.cs
index 6ed567b..1d79d25 100644
--- a/mcs/tests/gtest-165.cs
+++ b/mcs/tests/gtest-165.cs
@@ -1,33 +1,13 @@
-using System;
-using System.Collections;
- 
-class X {
-        delegate void A ();
- 
-        static IEnumerable GetIt (int [] args)
-        {
-                foreach (int arg in args) {
-                        Console.WriteLine ("OUT: {0}", arg);
-                        A a = delegate {
-                                Console.WriteLine ("arg: {0}", arg);
-				return;
-                        };
-                        a ();
-                        yield return arg;
-                }
-        }
- 
-        static int Main ()
-        {
-                int total = 0;
-                foreach (int i in GetIt (new int [] { 1, 2, 3})){
-                        Console.WriteLine ("Got: " + i);
-                        total += i;
-                }
- 
-                if (total != 6)
-                        return 1;
- 
-                return 0;
-        }
-}
+// Compiler options: -r:gtest-165-lib.dll
+
+class C
+{
+	public static int Main ()
+	{
+		var a = new A<string>();
+		if (a ["s"] != 2)
+			return 1;
+		
+		return 0;
+	}
+}
\ No newline at end of file
diff --git a/mcs/tests/gtest-166-lib.cs b/mcs/tests/gtest-166-lib.cs
index 61b92f1..0ee4b9f 100644
--- a/mcs/tests/gtest-166-lib.cs
+++ b/mcs/tests/gtest-166-lib.cs
@@ -1,6 +1,19 @@
-// Compiler options: -t:library -unsafe
+// Compiler options: -t:library
 
-public unsafe struct ExternalStruct
+using System;
+
+public class TestClass
 {
-    public fixed double double_buffer [4];
+	public class B : A<Nested>
+	{
+	}
+	
+	public abstract class A<T>
+	{
+		public static Comparison<A<T>> Compare;
+	}
+	
+	public class Nested
+	{
+	}
 }
diff --git a/mcs/tests/gtest-166.cs b/mcs/tests/gtest-166.cs
index 022b823..693ebe8 100644
--- a/mcs/tests/gtest-166.cs
+++ b/mcs/tests/gtest-166.cs
@@ -1,69 +1,11 @@
-// Compiler options: -unsafe -r:gtest-166-lib.dll
-
-// Fixed buffers tests
+// Compiler options: -r:gtest-166-lib.dll
 
 using System;
-using System.Runtime.InteropServices;
-
-//[module: DefaultCharSet (CharSet.Ansi)]
-
-[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
-public unsafe struct TestNew {
-	private fixed char test_1 [128];
-	public fixed bool test2 [4];
-	
-	public fixed int T [2];
-	public fixed bool test20 [4], test21 [40];
-	
-	private int foo, foo2;
-	public void SetTest () {
-		fixed (char* c = test_1) {
-			*c = 'g';
-		}
-	}
-}
-
-struct Struct2 {
-	public unsafe fixed byte Pad[64];
-}
-
-public class C {
-	unsafe static int Test () {
-		TestNew tt = new TestNew ();
-		tt.SetTest ();
-		tt.test2 [2] = false;
-		tt.T [1] = 5544;
-		if (tt.T [1] != 5544)
-			return 2;
-	
-		ExternalStruct es = new ExternalStruct ();
-		es.double_buffer [1] = 999999.8888;
-		es.double_buffer [0] = es.double_buffer [1];
-
-		// Attributes test
-		if (Attribute.GetCustomAttribute (typeof (TestNew).GetField ("test2"), typeof (System.Runtime.CompilerServices.FixedBufferAttribute)) == null)
-			return 3;
 
-		
-		if (typeof (TestNew).GetNestedTypes ().Length != 5)
-			return 5;
-
-		foreach (Type t in typeof (TestNew).GetNestedTypes ()) {
-			if (Attribute.GetCustomAttribute (t, typeof (System.Runtime.CompilerServices.CompilerGeneratedAttribute)) == null)
-				return 40;
-				
-			if (Attribute.GetCustomAttribute (t, typeof (System.Runtime.CompilerServices.UnsafeValueTypeAttribute)) == null)
-				return 41;
-				
-			if (!t.IsUnicodeClass)
-				return 42;
-		}
-
-		Console.WriteLine ("OK");
-		return 0;
-	}
-    
-	public static int Main () {
-		return Test ();
+public class Foo
+{
+	public static void Main () 
+	{
+		Comparison<TestClass.A<TestClass.Nested>> b = TestClass.B.Compare;
 	}
 }
diff --git a/mcs/tests/gtest-232-lib.cs b/mcs/tests/gtest-232-lib.cs
new file mode 100644
index 0000000..64aaa4a
--- /dev/null
+++ b/mcs/tests/gtest-232-lib.cs
@@ -0,0 +1,41 @@
+// Compiler options: -t:library
+
+public class A<T>
+{
+	public class B<U>
+	{
+		public class C<V>
+		{
+			public T T;
+			public U U;
+		}
+	}
+	
+	public class B2
+	{
+		public T T;
+
+		public class C<V>
+		{
+			public T T2;
+		}
+	}	
+}
+
+public static class Factory
+{
+	public static A<int>.B<bool>.C<string> Create_1()
+	{
+		return new A<int>.B<bool>.C<string> ();
+	}
+	
+	public static A<int>.B2.C<string> Create_2()
+	{
+		return new A<int>.B2.C<string> ();
+	}
+	
+	public static A<int>.B2 Create_3()
+	{
+		return new A<int>.B2 ();
+	}	
+}
diff --git a/mcs/tests/gtest-232.cs b/mcs/tests/gtest-232.cs
new file mode 100644
index 0000000..262056e
--- /dev/null
+++ b/mcs/tests/gtest-232.cs
@@ -0,0 +1,23 @@
+// Compiler options: -r:gtest-232-lib.dll
+using System;
+
+class M
+{
+	public static int Main ()
+	{
+		A<int>.B<bool>.C<string> v_1 = Factory.Create_1 ();		
+		v_1.T = 5;
+		v_1.U = true;
+		v_1 = new A<int>.B<bool>.C<string> ();
+		
+		A<int>.B2.C<string> v_2 = Factory.Create_2 ();
+		v_2.T2 = -5;
+		v_2 = new A<int>.B2.C<string> ();
+
+		A<int>.B2 v_3 = Factory.Create_3 ();
+		v_3.T = 99;
+		v_3 = new A<int>.B2 ();
+		
+		return 0;
+	}
+}
\ No newline at end of file
diff --git a/mcs/tests/gtest-329.cs b/mcs/tests/gtest-329.cs
index 398ad91..c5f2dd8 100644
--- a/mcs/tests/gtest-329.cs
+++ b/mcs/tests/gtest-329.cs
@@ -2,7 +2,7 @@ using System;
 
 public class NullableInt
 {
-         public static void Main()
+         public static int Main()
          {
                  object x = null;
 
@@ -10,5 +10,11 @@ public class NullableInt
 
                  Console.WriteLine("y: '{0}'", y);
                  Console.WriteLine("y.HasValue: '{0}'", y.HasValue);
+			 
+			 int? b = 1 as int?;
+			 if (b != 1)
+				 return 1;
+			 
+			 return 0;
          }
 }
diff --git a/mcs/tests/gtest-333.cs b/mcs/tests/gtest-333.cs
index 04892ec..e9f6455 100644
--- a/mcs/tests/gtest-333.cs
+++ b/mcs/tests/gtest-333.cs
@@ -1,11 +1,10 @@
-public class Test
-{
-	public static void Main ()
-	{
-	}
+using System;
 
-	public static void Foo (object arg)
+public static class Program
+{
+	private static void Main ()
 	{
-	      string result = arg as string ?? "";
+		Exception ex1 = null ?? new Exception ();
+		Exception ex2 = new Exception() ?? null;
 	}
 }
diff --git a/mcs/tests/gtest-353.cs b/mcs/tests/gtest-353.cs
index c122cc1..42d0603 100644
--- a/mcs/tests/gtest-353.cs
+++ b/mcs/tests/gtest-353.cs
@@ -1,46 +1,27 @@
-// Compiler options: -unsafe
-
 using System;
-using System.Runtime.InteropServices;
 
-namespace Bug
+class A<D1, D2, D3>
 {
-	[StructLayout (LayoutKind.Sequential, Pack = 1)]
-	public unsafe struct xxx
+	public virtual void Foo<T> () where T : D2
 	{
-		internal fixed byte zzz [5];
 	}
+}
+
+class B<DD2> : A<int, DD2, short>
+{
+}
 
-	internal class RedSkyTimeCode
+class C : B<string>
+{
+	public override void Foo<T> ()
 	{
-		public unsafe void CopyTo (xxx* dest)
-		{
-			fixed (ulong* p = &_rep) {
-				byte* pb = (byte*) p;
-				dest->zzz [0] = pb [0];
-				dest->zzz [1] = pb [1];
-				dest->zzz [2] = pb [2];
-				dest->zzz [3] = pb [3];
-				dest->zzz [4] = pb [4];
-			}
-		}
-		
-		public static unsafe void Convert (xxx* src, ulong* dest)
-		{
-			byte* pb = (byte*) dest;
-			*dest = 0L;
-			pb [0] = src->zzz [0];
-			pb [1] = src->zzz [1];
-			pb [2] = src->zzz [2];
-			pb [3] = src->zzz [3];
-			pb [4] = src->zzz [4];
-		}
-		
-		private ulong _rep;
-		
-		public static void Main ()
-		{
-		}
 	}
 }
 
+public class Program
+{
+	static void Main ()
+	{
+		new C ().Foo<string> ();
+	}
+}
diff --git a/mcs/tests/gtest-354.cs b/mcs/tests/gtest-354.cs
index 5cb5678..82a3e6a 100644
--- a/mcs/tests/gtest-354.cs
+++ b/mcs/tests/gtest-354.cs
@@ -1,27 +1,38 @@
-// Compiler options: -unsafe
-
-using System.Runtime.InteropServices;
-
-public unsafe struct A
+interface IA<T>
 {
-	fixed byte fileid [DbConst.DB_FILE_ID_LEN];
+	T Method (int index);
 }
 
-public static class DbConst
+interface IB
 {
-	public const int DB_FILE_ID_LEN = 20;
+	void Method (int index);
 }
 
-[StructLayout(LayoutKind.Sequential, Size=92)]
-internal unsafe struct hci_dev_info {
-	public fixed sbyte name[8];
-	private fixed byte bdaddr[6];
-	hci_dev_info* foo;
+interface IC : IA<string>, IB
+{
+	void Method (params int[] index);
 }
 
-class M
+class M : IC
 {
+
+	void IC.Method (params int[] index)
+	{
+	}
+
+	string IA<string>.Method (int index)
+	{
+		throw new System.NotImplementedException ();
+	}
+
+	void IB.Method (int index)
+	{
+		throw new System.NotImplementedException ();
+	}
+
 	public static void Main ()
 	{
+		IC ic = new M ();
+		ic.Method (1);
 	}
-}
+}
\ No newline at end of file
diff --git a/mcs/tests/gtest-358.cs b/mcs/tests/gtest-358.cs
index 854d7ca..631dfb8 100644
--- a/mcs/tests/gtest-358.cs
+++ b/mcs/tests/gtest-358.cs
@@ -15,16 +15,57 @@ struct Foo
 	}
 }
 
+struct S2
+{
+	public static bool operator == (S2 d1, S2? d2)
+	{
+		throw new ApplicationException ();
+	}
+		
+	public static bool operator != (S2 d1, S2? d2)
+	{
+		throw new ApplicationException ();	
+	}
+}
+
+public struct S3
+{
+	public static decimal operator != (S3 a, object b)
+	{
+		return -1;
+	}
+	
+	public static decimal operator == (S3 a, object b)
+	{
+		return 1;
+	}
+}
+
+
 public class Test
 {
 	static Foo ctx;
+	static S2? s2;
+	static S3? s3;
 
-	public static void Main ()
+	public static int Main ()
 	{
 		if (ctx == null)
-			return;
+			return 1;
+		
+		bool b = ctx != null;
+		if (!b)
+			return 2;
+		
+		if (s2 != null)
+			return 3;
+		
+		s3 = new S3 ();
+		decimal d = s3.Value == null;
+		if (d != 1)
+			return 4;
 		
-		if (ctx != null)
-			return;
+		Console.WriteLine ("ok");
+		return 0;
 	}
 }
diff --git a/mcs/tests/gtest-374.cs b/mcs/tests/gtest-374.cs
index e024317..c03931b 100644
--- a/mcs/tests/gtest-374.cs
+++ b/mcs/tests/gtest-374.cs
@@ -1,15 +1,46 @@
-// Compiler options: -unsafe
 
-public class aClass
+public class Z : IGenericInterface<Z>
 {
-	public unsafe struct foo_t
+	public void Stop ()
 	{
-		public fixed char b[16];
 	}
-	
-	public static unsafe void Main(string[] args)
+
+	Z IGenericInterface<Z>.Start ()
+	{
+		return this;
+	}
+}
+
+public interface IGenericInterface<T>
+{
+	T Start ();
+}
+
+public class A<Y, Y2, W>
+	where Y : Z, IGenericInterface<Y>
+	where Y2 : class
+	where W : Y, Y2
+{
+	public void SomeOperation (W w)
+	{
+		w.Start ();
+		w.Stop ();
+	}
+
+	public void SomeOtherOperation (Y y)
+	{
+		y.Start ();
+		y.Stop ();
+	}
+}
+
+public class Foo
+{
+	public static int Main ()
 	{
-		foo_t bar;
-		char* oo = bar.b;
+		var a = new A<Z, object, Z> ();
+		a.SomeOperation (new Z ());
+		a.SomeOtherOperation (new Z ());
+		return 0;
 	}
 }
diff --git a/mcs/tests/gtest-391.cs b/mcs/tests/gtest-391.cs
index 580d6ce..bea3615 100644
--- a/mcs/tests/gtest-391.cs
+++ b/mcs/tests/gtest-391.cs
@@ -8,6 +8,10 @@ class C
 		return xx ?? true;
 	}
 	
+	static void Test (object s, EventArgs a)
+	{
+	}
+	
 	public static int Main ()
 	{
 		string a = null;
@@ -31,6 +35,14 @@ class C
 		if (p2 != "x")
 			return 5;
 
+		object arg = null;
+		string result = arg as string ?? "";
+		
+		int? nint = null;
+		int? r = nint ?? null;
+		
+		EventHandler h = new EventHandler (Test) ?? Test;
+		
 		return 0;
 	}
 }
diff --git a/mcs/tests/gtest-409.cs b/mcs/tests/gtest-409.cs
index fb80a14..f6f3f8c 100644
--- a/mcs/tests/gtest-409.cs
+++ b/mcs/tests/gtest-409.cs
@@ -1,9 +1,14 @@
 using System;
 
 //
-// Parser conditional expression tests
+// Parser conditional and cast expression tests
 //
 
+class A<T>
+{
+	public static int Value;
+}
+
 public class ConditionalParsing
 {
 	class T
@@ -85,6 +90,11 @@ public class ConditionalParsing
 	{
 		int i = new int [] { 1, 2, 3 } [1];
 	}
+	
+	void Test_11 ()
+	{
+		int a = (int)(A<int>.Value);
+	}
 
 	public static void Main ()
 	{
diff --git a/mcs/tests/gtest-415.cs b/mcs/tests/gtest-415.cs
index a71b5b9..c8f32bc 100644
--- a/mcs/tests/gtest-415.cs
+++ b/mcs/tests/gtest-415.cs
@@ -1,27 +1,20 @@
-// Compiler options: -unsafe
+using System;
 
-unsafe struct S
+class Foo
 {
-	public short nData;
-	public fixed int Data [1];
-}
+	static int Main ()
+	{
+		if (Bar (1))
+			return 1;
 
-unsafe struct S2
-{
-	public uint Header;
-	public fixed byte Data [5];
+		if (!Bar (IntPtr.Zero))
+			return 2;
 
-	public void Test ()
-	{
-		fixed (byte* bP = Data) {
-			S* p = (S*) bP;
-			p = (S*) (p->Data + p->nData);
-		}
+		return 0;
 	}
 
-	public static void Main ()
+	static bool Bar<T> (T val) where T : struct
 	{
-		new S2 ().Test ();
+		return val is IntPtr;
 	}
 }
-
diff --git a/mcs/tests/gtest-416.cs b/mcs/tests/gtest-416.cs
index a08d163..a61546e 100644
--- a/mcs/tests/gtest-416.cs
+++ b/mcs/tests/gtest-416.cs
@@ -1,43 +1,23 @@
-// Compiler options: -unsafe
+public class Z { }
 
-using System;
+public class A<X, Y>
+	where Y : Z
+	where X : Y
+{
+	public X Foo (Y y)
+	{
+		return y as X;
+	}
+}
 
-namespace Bug
+public class Foo
 {
-	unsafe struct Demo
+	public static int Main ()
 	{
-		fixed bool test [4];
-	
-		bool Fixed ()
-		{
-			fixed (bool* data_ptr = test)
-			{
-				return true;
-			}
-		}
-		
-		static bool Foo (int [] data)
-		{
-			fixed (int* data_ptr = data)
-			{
-				return data_ptr == null ? true : false;
-			}
-		}
+		var a = new A<Z, Z> ();
+		if (a.Foo (new Z ()) == null)
+			return 1;
 		
-		public static int Main ()
-		{
-			if (!Foo (null))
-				return 1;
-			
-			if (!Foo (new int [0]))
-				return 2;
-			
-			if (!new Demo().Fixed ())
-				return 3;
-			
-			Console.WriteLine ("OK");
-			return 0;
-		}
+		return 0;
 	}
 }
-
diff --git a/mcs/tests/gtest-417-lib.cs b/mcs/tests/gtest-417-lib.cs
new file mode 100644
index 0000000..0565f82
--- /dev/null
+++ b/mcs/tests/gtest-417-lib.cs
@@ -0,0 +1,29 @@
+// Compiler options: -t:library
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+
+public class GlobalMonitoredCharacterCollection : ReadonlyCollection<int>
+{
+}
+
+public class ReadonlyCollection<T> : IReadonlyCollection<T>
+{
+	protected List<T> m_items;
+	protected ReadonlyCollection () { m_items = new List<T> (); }
+
+	IEnumerator<T> IEnumerable<T>.GetEnumerator ()
+	{
+		return m_items.GetEnumerator ();
+	}
+
+	IEnumerator IEnumerable.GetEnumerator ()
+	{
+		return m_items.GetEnumerator ();
+	}
+}
+
+public interface IReadonlyCollection<T> : IEnumerable<T>
+{
+}
diff --git a/mcs/tests/gtest-417.cs b/mcs/tests/gtest-417.cs
index 289e700..c91f959 100644
--- a/mcs/tests/gtest-417.cs
+++ b/mcs/tests/gtest-417.cs
@@ -1,16 +1,35 @@
-// Compiler options: -unsafe
+// Compiler options: -r:gtest-417-lib.dll
 
-public unsafe struct B {
-	private fixed int a[5];
+using System;
+using System.Collections;
+
+class Indirect : Base
+{
 }
 
-public unsafe class C {
-	private B x;
+abstract class Base : IEnumerable
+{
+	IEnumerator IEnumerable.GetEnumerator ()
+	{
+		return new int [0].GetEnumerator ();
+	}
+}
 
-	public void Goo() {
-		fixed(B* y=&x) {
+public class TestCase
+{
+	public static GlobalMonitoredCharacterCollection MonitoredCharacters;
+	
+	static int Main ()
+	{
+		MonitoredCharacters = new GlobalMonitoredCharacterCollection();
+		foreach (var character in MonitoredCharacters)
+		{
 		}
-	} 
-
-	public static void Main () {}
+		
+		foreach (var n in new Indirect ())
+		{
+		}
+		
+		return 0;
+	}
 }
diff --git a/mcs/tests/gtest-423.cs b/mcs/tests/gtest-423.cs
index b130470..c8e6ddc 100644
--- a/mcs/tests/gtest-423.cs
+++ b/mcs/tests/gtest-423.cs
@@ -1,13 +1,32 @@
 using System;
 
-class App
+namespace MonoTest
 {
-	public static void Main ()
+	public class A<TA>
 	{
-		EventHandler h = new EventHandler (Test) ?? Test;
+		class B<TB>
+		{
+			static void foo ()
+			{
+			}
+
+			class C
+			{
+				static void bar ()
+				{
+					foo ();
+					B<C>.foo ();
+					A<C>.B<C>.foo ();
+				}
+			}
+		}
 	}
 
-	public static void Test (object s, EventArgs a)
+	class Program
 	{
+		static void Main ()
+		{
+		}
 	}
 }
+
diff --git a/mcs/tests/gtest-448.cs b/mcs/tests/gtest-448.cs
new file mode 100644
index 0000000..012549c
--- /dev/null
+++ b/mcs/tests/gtest-448.cs
@@ -0,0 +1,51 @@
+using System;
+using System.Collections.Generic;
+
+interface I<T> : I2<T>, IEnumerable<T>
+{
+}
+
+interface I2<T2>
+{
+	void Foo<U> (IEnumerable<U> list) where U : T2;
+}
+
+class Impl<T> : I<T>
+{
+	public void Foo<U> (IEnumerable<U> list) where U : T
+	{
+	}
+	
+	public IEnumerator<T> GetEnumerator ()
+	{
+		return null;
+	}
+	
+	System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator ()
+	{
+		return null;
+	}
+}
+
+class A<K>
+{
+	public I<K> Value = new Impl<K> ();
+}
+
+class Test<TT> : A<TT>
+{
+	public void Foo ()
+	{
+		var a = new Test<TT> ();
+		a.Value.Foo (Value);
+	}
+}
+
+class M 
+{
+	public static void Main ()
+	{
+		new Test<ulong> ().Foo ();
+	}
+}
+
diff --git a/mcs/tests/gtest-451-lib.cs b/mcs/tests/gtest-451-lib.cs
new file mode 100644
index 0000000..6eba31f
--- /dev/null
+++ b/mcs/tests/gtest-451-lib.cs
@@ -0,0 +1,20 @@
+// Compiler options: -t:library
+
+using System;
+
+public class A<T> where T : new ()
+{
+	public T Value = new T ();
+	
+	public class N1 : A<N2>
+	{
+	}
+	
+	public class N2
+	{
+		public int Foo ()
+		{
+			return 0;
+		}
+	}
+}
\ No newline at end of file
diff --git a/mcs/tests/gtest-451.cs b/mcs/tests/gtest-451.cs
new file mode 100644
index 0000000..d993911
--- /dev/null
+++ b/mcs/tests/gtest-451.cs
@@ -0,0 +1,10 @@
+// Compiler options: -r:gtest-451-lib.dll
+
+public class Test
+{
+	public static int Main ()
+	{
+		var a = new A<int>.N1 ();
+		return a.Value.Foo ();
+	}
+}
diff --git a/mcs/tests/gtest-452.cs b/mcs/tests/gtest-452.cs
new file mode 100644
index 0000000..8eafd94
--- /dev/null
+++ b/mcs/tests/gtest-452.cs
@@ -0,0 +1,27 @@
+using System;
+
+public class Test
+{
+	public static int Main ()
+	{
+		S mc = new S ();
+		float? f = mc;
+		if (f != 5)
+			return 1;
+		
+		return 0;
+	}
+}
+
+struct S
+{
+	public static implicit operator float (S p1)
+	{
+		throw new ApplicationException ("should not be called");
+	}
+	
+	public static implicit operator float? (S p1)
+	{
+		return 5;
+	}
+}
diff --git a/mcs/tests/gtest-536.cs b/mcs/tests/gtest-536.cs
new file mode 100644
index 0000000..64c54cd
--- /dev/null
+++ b/mcs/tests/gtest-536.cs
@@ -0,0 +1,21 @@
+using System;
+
+public class Test
+{
+
+	public sealed class Expression<TDelegate>
+	{
+	}
+
+	public class Expression
+	{
+		public static void Test ()
+		{
+		}
+	}
+
+	static void Main ()
+	{
+		Expression.Test ();
+	}
+}
diff --git a/mcs/tests/gtest-537.cs b/mcs/tests/gtest-537.cs
new file mode 100644
index 0000000..688ac12
--- /dev/null
+++ b/mcs/tests/gtest-537.cs
@@ -0,0 +1,32 @@
+using System;
+
+public class Test
+{
+	public static int Main ()
+	{
+		S a = new S ();
+		S? b = null;
+		var res = a | b;
+		if (res != "op")
+			return 1;
+		
+		var res2 = a + b;
+		if (res2 != 9)
+			return 2;
+
+		return 0;
+	}
+}
+
+struct S
+{
+	public static string operator | (S p1, S? p2)
+	{ 
+		return "op";
+	}
+	
+	public static int? operator + (S p1, S? p2)
+	{ 
+		return 9;
+	}
+}
diff --git a/mcs/tests/gtest-538.cs b/mcs/tests/gtest-538.cs
new file mode 100644
index 0000000..5458c4b
--- /dev/null
+++ b/mcs/tests/gtest-538.cs
@@ -0,0 +1,82 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+
+public struct S : IEnumerable<int>
+{
+	public S (int i)
+	{
+	}
+
+	public IEnumerator<int> GetEnumerator ()
+	{
+		return new Enumerator<int> ();
+	}
+
+	IEnumerator IEnumerable.GetEnumerator ()
+	{
+		throw new ApplicationException ();
+	}
+}
+
+public struct S2
+{
+	public IEnumerator<int> GetEnumerator ()
+	{
+		return new Enumerator<int> ();
+	}
+}
+
+public struct Enumerator<T> : IEnumerator<T>
+{
+	public T Current {
+		get {
+			throw new NotImplementedException ();
+		}
+	}
+
+	object IEnumerator.Current {
+		get {
+			throw new NotImplementedException ();
+		}
+	}
+
+	public bool MoveNext ()
+	{
+		return false;
+	}
+
+	public void Reset ()
+	{
+		throw new NotImplementedException ();
+	}
+
+	public void Dispose ()
+	{
+		MySystem.DisposeCounter++;
+	}
+}
+
+public class MySystem
+{
+	public static int DisposeCounter;
+
+	public static int Main ()
+	{
+		S? s = new S ();
+		foreach (var a in s) {
+		}
+
+		if (DisposeCounter != 1)
+			return 1;
+
+		S2? s2 = new S2 ();
+		foreach (var a in s2) {
+		}
+
+		if (DisposeCounter != 2)
+			return 2;
+
+		return 0;
+	}
+}
diff --git a/mcs/tests/gtest-539.cs b/mcs/tests/gtest-539.cs
new file mode 100644
index 0000000..e040a42
--- /dev/null
+++ b/mcs/tests/gtest-539.cs
@@ -0,0 +1,46 @@
+using System;
+
+struct S
+{
+	public int ID { get; set; }
+}
+
+class C
+{
+	public readonly int ID;
+
+	private C (int id)
+	{
+		ID = id;
+	}
+
+	public static explicit operator C (S x)
+	{
+		throw new ApplicationException ("wrong conversion");
+	}
+
+	public static explicit operator C (S? x)
+	{
+		return new C (x.HasValue ? x.Value.ID : 5);
+	}
+}
+
+public class Test
+{
+	public static int Main ()
+	{
+		S? s = null;
+		C c = (C) s;
+
+		if (c.ID != 5)
+			return 1;
+
+		s = new S () { ID = 10 };
+		c = (C) s;
+
+		if (c.ID != 10)
+			return 2;
+
+		return 0;
+	}
+}
diff --git a/mcs/tests/gtest-540.cs b/mcs/tests/gtest-540.cs
new file mode 100644
index 0000000..8c9c43a
--- /dev/null
+++ b/mcs/tests/gtest-540.cs
@@ -0,0 +1,91 @@
+// lifted null binary operators
+
+using System;
+
+class C
+{
+	public static int Main ()
+	{
+		bool v;
+		v = (true & null) == null;
+		if (!v)
+			return 1;
+
+		v = (false & null) != null;
+		if (!v)
+			return 2;
+		
+		v = (null & true) == null;
+		if (!v)
+			return 3;
+
+		v = (null & false) != null;
+		if (!v)
+			return 4;
+
+		v = (true | null) == null;
+		if (v != false)
+			return 11;
+
+		v = (false | null) != null;
+		if (v != false)
+			return 12;
+
+		v = (null | true) == null;
+		if (v != false)
+			return 13;
+
+		v = (null | false) != null;
+		if (v != false)
+			return 14;
+		
+		v = (null & 1) == null;
+		if (v != true)
+			return 20;
+		
+		v = (null & 0) != null;
+		if (v != false)
+			return 21;
+
+		bool? a = false;
+		bool? b = true;
+
+		if ((a & null) != false)
+			return 50;
+
+		if ((b & null) != null)
+			return 51;
+		
+		if ((null & a) != false)
+			return 52;
+		
+		if ((null & b) != null)
+			return 53;
+
+		if ((a & true) != false)
+			return 54;
+		
+		if ((true & a) != false)
+			return 55;
+
+		if ((a | null) != null)
+			return 60;
+
+		if ((b | null) != true)
+			return 61;
+		
+		if ((null | a) != null)
+			return 62;
+		
+		if ((null | b) != true)
+			return 63;
+		
+		if ((a | true) != true)
+			return 64;
+		
+		if ((true | a) != true)
+			return 65;
+		
+		return 0;
+	}
+}
\ No newline at end of file
diff --git a/mcs/tests/gtest-541.cs b/mcs/tests/gtest-541.cs
new file mode 100644
index 0000000..1984d87
--- /dev/null
+++ b/mcs/tests/gtest-541.cs
@@ -0,0 +1,26 @@
+public class Foo
+{
+}
+
+public class Top<S> where S : Foo
+{
+	public class Base<T> where T : S
+	{
+		public class Derived<U> where U : T
+		{
+			public void Test ()
+			{
+			}
+		}
+	}
+}
+
+public class Test
+{
+	public static int Main ()
+	{
+		Top<Foo>.Base<Foo>.Derived<Foo> d = new Top<Foo>.Base<Foo>.Derived<Foo> ();
+		d.Test ();
+		return 0;
+	}
+}
diff --git a/mcs/tests/gtest-542.cs b/mcs/tests/gtest-542.cs
new file mode 100644
index 0000000..7737000
--- /dev/null
+++ b/mcs/tests/gtest-542.cs
@@ -0,0 +1,24 @@
+abstract class A<T>
+{
+	public abstract T getT ();
+
+	public class B : A<B>
+	{
+		public override A<T>.B getT ()
+		{
+			return this;
+		}
+	}
+}
+
+class C
+{
+	static int Main ()
+	{
+		var r = new A<short>.B ();
+		if (r.getT () != r)
+			return 1;
+		
+		return 0;
+	}
+}
diff --git a/mcs/tests/gtest-543.cs b/mcs/tests/gtest-543.cs
new file mode 100644
index 0000000..75ae4e0
--- /dev/null
+++ b/mcs/tests/gtest-543.cs
@@ -0,0 +1,45 @@
+using System.Collections.Generic;
+
+public class Blah<T>
+{
+	public class WrapperWrapper<N>
+	{
+		public readonly Wrapper<N> Wrapper;
+
+		public WrapperWrapper ()
+			: this (Wrapper<N>.Empty)
+		{
+		}
+
+		protected WrapperWrapper (Wrapper<N> val)
+		{
+			Wrapper = val;
+		}
+
+		public WrapperWrapper<N> NewWrapperWrapper (Wrapper<N> val)
+		{
+			return new WrapperWrapper<N> (val);
+		}
+	}
+}
+
+public class Wrapper<U>
+{
+	public static Wrapper<U> Empty = new Wrapper<U> (default (U));
+	
+	private Wrapper (U u)
+	{
+	}
+}
+
+public class C
+{
+	public static int Main ()
+	{
+		var r = new Blah<ulong>.WrapperWrapper<byte>().NewWrapperWrapper (Wrapper<byte>.Empty);
+		if (r == null)
+			return 1;
+		
+		return 0;
+	}
+}
diff --git a/mcs/tests/gtest-544.cs b/mcs/tests/gtest-544.cs
new file mode 100644
index 0000000..98c2c85
--- /dev/null
+++ b/mcs/tests/gtest-544.cs
@@ -0,0 +1,53 @@
+using System;
+
+public abstract class A<T>
+{
+	public abstract G Foo<G> () where G : T;
+	
+	public virtual G Foo2<G> () where G : T
+	{
+		return default (G);
+	}
+}
+
+public class B : A<int?>
+{
+	public override G Foo<G> ()
+	{
+		return new G ();
+	}
+	
+	public override G Foo2<G> ()
+	{
+		return base.Foo2<G> ();
+	}
+}
+
+abstract class A2<T>
+{
+	public abstract void Foo<U> () where U : struct, T;
+}
+
+class B2 : A2<System.ValueType>
+{
+	public override void Foo<Y> ()
+	{
+	}
+}
+
+class Program
+{
+	public static int Main ()
+	{
+		var b = new B ();
+		if (b.Foo<int?> () == null)
+			return 0;
+		
+		b.Foo2<int?> ();
+		
+		var b2 = new B2 ();
+		b2.Foo<byte> ();
+		
+		return 1;
+	}
+}
diff --git a/mcs/tests/gtest-545.cs b/mcs/tests/gtest-545.cs
new file mode 100644
index 0000000..63ca06b
--- /dev/null
+++ b/mcs/tests/gtest-545.cs
@@ -0,0 +1,26 @@
+using System;
+
+public static class ApplicationContext
+{
+	static bool Foo ()
+	{
+		return false;
+	}
+		
+	public static int Main ()
+	{
+		bool? debugging = false;
+		debugging = debugging | Foo ();
+		
+		bool res = debugging.Value;
+		if (res)
+			return 1;
+		
+		debugging = true;
+		debugging = debugging & Foo ();
+		if (res)
+			return 2;
+		
+		return 0;
+	}
+}
diff --git a/mcs/tests/gtest-546.cs b/mcs/tests/gtest-546.cs
new file mode 100644
index 0000000..7e31531
--- /dev/null
+++ b/mcs/tests/gtest-546.cs
@@ -0,0 +1,26 @@
+using System;
+
+class Factory
+{
+	public class S<G1, G2>
+	{
+	}
+	
+	public static S<F1, F2> Create<F1, F2> (F1 f1, F2 f2)
+	{
+		return null;
+	}
+}
+
+class A
+{
+	static TR Test<T1, T2, TR>(T1 t1, T2 t2, Func<T1, T2, TR> f)
+	{
+		return f (t1, t2);
+	}
+	
+	static void Main ()
+	{
+		var r = Test ("a", "b", Factory.Create);
+	}
+}
\ No newline at end of file
diff --git a/mcs/tests/gtest-547.cs b/mcs/tests/gtest-547.cs
new file mode 100644
index 0000000..b745555
--- /dev/null
+++ b/mcs/tests/gtest-547.cs
@@ -0,0 +1,16 @@
+using System;
+
+public class Foo
+{
+	static void GenericLock<T> (T t) where T : class
+	{
+		lock (t)
+		{
+		}
+	}
+	
+	public static void Main ()
+	{
+		GenericLock ("s");
+	}
+}
\ No newline at end of file
diff --git a/mcs/tests/gtest-548.cs b/mcs/tests/gtest-548.cs
new file mode 100644
index 0000000..732ed6a
--- /dev/null
+++ b/mcs/tests/gtest-548.cs
@@ -0,0 +1,52 @@
+using System;
+
+class C
+{
+	public static int Main ()
+	{
+		if (null > null)
+			return 1;
+		
+		if ((int?)null > null)
+			return 2;
+
+		if (null >= null)
+			return 3;
+		
+		if ((int?)null >= null)
+			return 4;
+
+		if (null < null)
+			return 10;
+		
+		if ((int?)null < null)
+			return 11;
+
+		if (null <= null)
+			return 12;
+		
+		if ((int?)null <= null)
+			return 13;
+		
+		if ((null * null) != null)
+			return 20;
+
+		if ((null / null) != null)
+			return 21;
+
+		if ((null % null) != null)
+			return 22;
+
+		if ((null - null) != null)
+			return 22;
+
+		if ((null >> null) != null)
+			return 23;
+
+		if ((null << null) != null)
+			return 24;
+		
+		Console.WriteLine ("ok");
+		return 0;
+	}
+}
diff --git a/mcs/tests/gtest-549.cs b/mcs/tests/gtest-549.cs
new file mode 100644
index 0000000..d732bc5
--- /dev/null
+++ b/mcs/tests/gtest-549.cs
@@ -0,0 +1,36 @@
+class C<T>
+{
+	public interface IA
+	{
+		void MA (T arg);
+	}
+	
+	public interface IB : IA
+	{
+		void MB (T arg);
+	}
+}
+
+class D : C<int>
+{
+	public class Impl : IB
+	{
+		public void MA (int arg)
+		{
+		}
+		
+		public void MB (int arg)
+		{
+		}
+	}
+}
+
+class Test
+{
+	public static void Main ()
+	{
+		C<int>.IB arg = new D.Impl ();
+		arg.MA (1);
+		arg.MB (1);	
+	}
+}
\ No newline at end of file
diff --git a/mcs/tests/gtest-550.cs b/mcs/tests/gtest-550.cs
new file mode 100644
index 0000000..a845c12
--- /dev/null
+++ b/mcs/tests/gtest-550.cs
@@ -0,0 +1,61 @@
+using System;
+
+namespace Foo
+{
+	public static class Magic
+	{
+		public interface IUpDown
+		{
+			int DestinationDimension { get; }
+		}
+
+		public static int Main ()
+		{
+			Magic<decimal>.Upsample (new Instance ());
+			return 0;
+		}
+	}
+
+	public static class Magic<T>
+	{
+		public interface IAccessible { T this[int index] { get; set; } }
+
+		public interface IUpDown : Magic.IUpDown, IAccessible { }
+
+		public static void Upsample (IUpDown o)
+		{
+			var count = o.DestinationDimension;
+		}
+	}
+
+	class Instance : Magic<decimal>.IUpDown
+	{
+		#region IUpDown Members
+
+		public int DestinationDimension
+		{
+			get
+			{
+				return 1;
+			}
+		}
+
+		#endregion
+
+		#region IAccessible Members
+
+		public decimal this[int index]
+		{
+			get
+			{
+				throw new NotImplementedException ();
+			}
+			set
+			{
+				throw new NotImplementedException ();
+			}
+		}
+
+		#endregion
+	}
+}
\ No newline at end of file
diff --git a/mcs/tests/gtest-anon-20.cs b/mcs/tests/gtest-anon-20.cs
new file mode 100644
index 0000000..ac2a101
--- /dev/null
+++ b/mcs/tests/gtest-anon-20.cs
@@ -0,0 +1,22 @@
+using System;
+
+class C<T>
+{
+	public static void Foo<U> (U arg)
+	{
+		Action a = () => C<U>.Run ();
+		a ();
+	}
+	
+	static void Run ()
+	{
+	}
+}
+
+class A
+{
+	public static void Main ()
+	{
+		C<int>.Foo<long> (8);
+	}
+}
\ No newline at end of file
diff --git a/mcs/tests/gtest-anon-23.cs b/mcs/tests/gtest-anon-23.cs
index 6ff5738..91c72b4 100644
--- a/mcs/tests/gtest-anon-23.cs
+++ b/mcs/tests/gtest-anon-23.cs
@@ -20,6 +20,13 @@ class MemberAccessData
 	}
 }
 
+enum E
+{
+	E1,
+	E2,
+	E3
+}
+
 public class B
 {
 	protected virtual void BaseM ()
@@ -35,6 +42,11 @@ public class C : B
 	{
 	}
 	
+	static void Test (Action<E> func)
+	{
+		func (E.E1);
+	}
+	
 	void InstanceTests ()
 	{
 		Test (() => base.BaseM ());
@@ -82,6 +94,17 @@ public class C : B
 			};
 		});
 		
+		Test (x => {
+			switch (x) {
+			case E.E1:
+				goto case E.E2;
+			case E.E2:
+				break;
+			default:
+				break;
+			}
+		});		
+		
 		var c = new C ();
 		c.InstanceTests ();
 	}
diff --git a/mcs/tests/gtest-anon-50.cs b/mcs/tests/gtest-anon-50.cs
index de85856..389bc7b 100644
--- a/mcs/tests/gtest-anon-50.cs
+++ b/mcs/tests/gtest-anon-50.cs
@@ -14,6 +14,7 @@ class SomeGenericClass<SomeType>
 
 	void Invoke (SomeHandlerType h)
 	{
+		h ();
 	}
 
 	public void FailsToCompile ()
diff --git a/mcs/tests/gtest-anon-64.cs b/mcs/tests/gtest-anon-64.cs
new file mode 100644
index 0000000..91fdea2
--- /dev/null
+++ b/mcs/tests/gtest-anon-64.cs
@@ -0,0 +1,39 @@
+using System;
+
+class C<T> where T : C<T>
+{
+	public static void Foo<U> (U arg) where U : C<U>, new ()
+	{
+		var i = new U ();
+		{
+			var ii = new U ();
+			Func<U> f = () => i;
+			{
+				Action a = () => C<U>.Run (ii);
+				a ();
+			}
+			f ();
+		}
+	}
+	
+	static void Run (T a)
+	{
+	}
+}
+
+class D : C<D>
+{
+}
+
+class E : C<E>
+{
+}
+
+class A
+{
+	public static int Main ()
+	{
+		D.Foo (new E ());
+		return 0;
+	}
+}
\ No newline at end of file
diff --git a/mcs/tests/gtest-anon-type-12.cs b/mcs/tests/gtest-anon-type-12.cs
new file mode 100644
index 0000000..88585dd
--- /dev/null
+++ b/mcs/tests/gtest-anon-type-12.cs
@@ -0,0 +1,13 @@
+using System;
+
+class C
+{
+	public static int Main ()
+	{
+		var a = new { ToString = 1 };
+		if (a.ToString != 1)
+			return 1;
+		
+		return 0;
+	}
+}
\ No newline at end of file
diff --git a/mcs/tests/gtest-etree-01.cs b/mcs/tests/gtest-etree-01.cs
index 75887cc..3556924 100644
--- a/mcs/tests/gtest-etree-01.cs
+++ b/mcs/tests/gtest-etree-01.cs
@@ -861,7 +861,7 @@ class Tester
 		
 	}
 	
-	unsafe void ConstantTest_14 ()
+	void ConstantTest_14 ()
 	{
 		Expression<Func<Type>> e14 = () => typeof (bool*);
 		AssertNodeType (e14, ExpressionType.Constant);
@@ -1070,7 +1070,15 @@ class Tester
 		Assert (50, e6.Compile ().Invoke (100, new MyType (2)));
 		Assert (null, e6.Compile ().Invoke (20, null));
 	}
-
+	
+	void DivideTest_7 ()
+	{
+		Expression<Func<float, uint?, float?>> e = (a, b) => a / b;
+		AssertNodeType (e, ExpressionType.Divide);
+		Assert (50, e.Compile () (100, 2));
+		Assert (null, e.Compile () (20, null));
+	}
+	
 	void EqualTest ()
 	{
 		Expression<Func<int, int, bool>> e = (int a, int b) => a == b;
@@ -1849,6 +1857,14 @@ class Tester
 		Assert (null, e7.Compile ().Invoke (60));
 	}
 	
+	void MultiplyTest_8 ()
+	{
+		Expression<Func<double, ulong?, double?>> e = (a, b) => a * b;
+		AssertNodeType (e, ExpressionType.Multiply);
+		Assert (180, e.Compile () (60, 3));
+		Assert (null, e.Compile () (60, null));
+	}
+	
 	void MultiplyCheckedTest ()
 	{
 		checked {
@@ -2492,6 +2508,13 @@ class Tester
 		Assert (31, e.Compile ().Invoke (0xFE, new MyTypeImplicitOnly (3)));
 	}
 	
+	void RightShiftTest_6 ()
+	{
+		Expression<Func<ulong, byte?, ulong?>> e = (a, b) => a >> b;
+		AssertNodeType (e, ExpressionType.RightShift);
+		Assert (null, e.Compile () (2, null));
+	}
+	
 	void SubtractTest ()
 	{
 		Expression<Func<int, int, int>> e = (int a, int b) => a - b;
@@ -2635,6 +2658,14 @@ class Tester
 		Assert (null, e3.Compile ().Invoke (null));
 	}
 
+	void TypeAsTest_4 ()
+	{
+		Expression<Func<int, IConvertible>> e = a => a as IConvertible;
+		AssertNodeType (e, ExpressionType.TypeAs);
+		Assert (ExpressionType.Parameter, ((UnaryExpression) e.Body).Operand.NodeType);
+		Assert (5, e.Compile ().Invoke (5));
+	}
+	
 	void TypeIsTest ()
 	{
 		Expression<Func<object, bool>> e = (object a) => a is Tester;
diff --git a/mcs/tests/gtest-etree-07.cs b/mcs/tests/gtest-etree-07.cs
index 067717a..74a4d1a 100644
--- a/mcs/tests/gtest-etree-07.cs
+++ b/mcs/tests/gtest-etree-07.cs
@@ -20,6 +20,26 @@ class C
 		return (int*)1;
 	}
 	
+	void M ()
+	{
+	}
+	
+	int TestInstance ()
+	{
+		Expression<Func<EmptyDelegate>> e = () => M;
+		if (e.Body.ToString () != "Convert(CreateDelegate(EmptyDelegate, value(C), Void M()))")
+			return 1;
+		
+		e.Compile () ();
+		
+		Expression<Func<C, EmptyDelegate>> e2 = (l) => l.M;
+		if (e2.Body.ToString () != "Convert(CreateDelegate(EmptyDelegate, l, Void M()))")
+			return 2;
+		
+		e2.Compile () (this);
+		return 0;
+	}
+	
 	public static int Main ()
 	{
 		Expression<Func<EmptyDelegate>> e = () => new EmptyDelegate (Test);
@@ -52,6 +72,9 @@ class C
 			if (v3.Invoke ()() != (int*)1)
 				return 6;
 		}
+		
+		if (new C ().TestInstance () != 0)
+			return 7;
 
 		Console.WriteLine ("OK");
 		return 0;
diff --git a/mcs/tests/gtest-etree-25.cs b/mcs/tests/gtest-etree-25.cs
new file mode 100644
index 0000000..40ffe66
--- /dev/null
+++ b/mcs/tests/gtest-etree-25.cs
@@ -0,0 +1,37 @@
+using System;
+using System.Linq.Expressions;
+
+class Foo
+{
+	public void OnBaz (IBaz baz)
+	{
+	}
+}
+
+interface IBar
+{
+	void RunOnBaz (Action<IBaz> action);
+}
+
+interface IBaz
+{
+}
+
+class C : IBar
+{
+	public void RunOnBaz (Action<IBaz> action)
+	{
+		action (null);
+	}
+	
+    static int Main ()
+    {
+		var foo = new Foo ();
+
+		Expression<Action<IBar>> e = bar => bar.RunOnBaz (foo.OnBaz);
+		e.Compile () (new C ());
+		
+		return 0;
+    }
+}
+
diff --git a/mcs/tests/gtest-etree-26.cs b/mcs/tests/gtest-etree-26.cs
new file mode 100644
index 0000000..ecf5063
--- /dev/null
+++ b/mcs/tests/gtest-etree-26.cs
@@ -0,0 +1,30 @@
+using System;
+using System.Linq.Expressions;
+
+class A<TA>
+{
+	public class B<TB>
+	{
+		public static void foo ()
+		{
+			Expression<Action> func = () => foo ();
+		}
+
+		class C<TC>
+		{
+			static void bar ()
+			{
+				B<TC>.foo ();
+			}
+		}
+	}
+}
+
+class Program
+{
+	static int Main ()
+	{
+		A<int>.B<ulong>.foo ();
+		return 0;
+	}
+}
diff --git a/mcs/tests/gtest-166-lib.cs b/mcs/tests/gtest-fixedbuffer-01-lib.cs
similarity index 100%
copy from mcs/tests/gtest-166-lib.cs
copy to mcs/tests/gtest-fixedbuffer-01-lib.cs
diff --git a/mcs/tests/gtest-fixedbuffer-01.cs b/mcs/tests/gtest-fixedbuffer-01.cs
new file mode 100644
index 0000000..ecc2caa
--- /dev/null
+++ b/mcs/tests/gtest-fixedbuffer-01.cs
@@ -0,0 +1,69 @@
+// Compiler options: -unsafe -r:gtest-fixedbuffer-01-lib.dll
+
+// Fixed buffers tests
+
+using System;
+using System.Runtime.InteropServices;
+
+[module: DefaultCharSet (CharSet.Ansi)]
+
+[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
+public unsafe struct TestNew {
+	private fixed char test_1 [128];
+	public fixed bool test2 [4];
+	
+	public fixed int T [2];
+	public fixed bool test20 [4], test21 [40];
+	
+	private int foo, foo2;
+	public void SetTest () {
+		fixed (char* c = test_1) {
+			*c = 'g';
+		}
+	}
+}
+
+struct Struct2 {
+	public unsafe fixed byte Pad[64];
+}
+
+public class C {
+	unsafe static int Test () {
+		TestNew tt = new TestNew ();
+		tt.SetTest ();
+		tt.test2 [2] = false;
+		tt.T [1] = 5544;
+		if (tt.T [1] != 5544)
+			return 2;
+	
+		ExternalStruct es = new ExternalStruct ();
+		es.double_buffer [1] = 999999.8888;
+		es.double_buffer [0] = es.double_buffer [1];
+
+		// Attributes test
+		if (Attribute.GetCustomAttribute (typeof (TestNew).GetField ("test2"), typeof (System.Runtime.CompilerServices.FixedBufferAttribute)) == null)
+			return 3;
+
+		
+		if (typeof (TestNew).GetNestedTypes ().Length != 5)
+			return 5;
+
+		foreach (Type t in typeof (TestNew).GetNestedTypes ()) {
+			if (Attribute.GetCustomAttribute (t, typeof (System.Runtime.CompilerServices.CompilerGeneratedAttribute)) == null)
+				return 40;
+				
+			if (Attribute.GetCustomAttribute (t, typeof (System.Runtime.CompilerServices.UnsafeValueTypeAttribute)) == null)
+				return 41;
+				
+			if (!t.IsUnicodeClass)
+				return 42;
+		}
+
+		Console.WriteLine ("OK");
+		return 0;
+	}
+    
+	public static int Main () {
+		return Test ();
+	}
+}
diff --git a/mcs/tests/gtest-354.cs b/mcs/tests/gtest-fixedbuffer-02.cs
similarity index 100%
copy from mcs/tests/gtest-354.cs
copy to mcs/tests/gtest-fixedbuffer-02.cs
diff --git a/mcs/tests/gtest-353.cs b/mcs/tests/gtest-fixedbuffer-03.cs
similarity index 100%
copy from mcs/tests/gtest-353.cs
copy to mcs/tests/gtest-fixedbuffer-03.cs
diff --git a/mcs/tests/gtest-374.cs b/mcs/tests/gtest-fixedbuffer-04.cs
similarity index 100%
copy from mcs/tests/gtest-374.cs
copy to mcs/tests/gtest-fixedbuffer-04.cs
diff --git a/mcs/tests/gtest-415.cs b/mcs/tests/gtest-fixedbuffer-05.cs
similarity index 100%
copy from mcs/tests/gtest-415.cs
copy to mcs/tests/gtest-fixedbuffer-05.cs
diff --git a/mcs/tests/gtest-416.cs b/mcs/tests/gtest-fixedbuffer-06.cs
similarity index 100%
copy from mcs/tests/gtest-416.cs
copy to mcs/tests/gtest-fixedbuffer-06.cs
diff --git a/mcs/tests/gtest-417.cs b/mcs/tests/gtest-fixedbuffer-07.cs
similarity index 100%
copy from mcs/tests/gtest-417.cs
copy to mcs/tests/gtest-fixedbuffer-07.cs
diff --git a/mcs/tests/gtest-fixedbuffer-08.cs b/mcs/tests/gtest-fixedbuffer-08.cs
new file mode 100644
index 0000000..cad4f3b
--- /dev/null
+++ b/mcs/tests/gtest-fixedbuffer-08.cs
@@ -0,0 +1,46 @@
+// Compiler options: -unsafe
+
+using System;
+using System.Runtime.InteropServices;
+
+[StructLayout (LayoutKind.Auto, CharSet = CharSet.Auto)]
+struct S
+{
+	public unsafe fixed byte o[6];
+}
+
+class A
+{
+	public static int Main ()
+	{
+		Type t = typeof (S);
+		var sa = t.StructLayoutAttribute;
+		if (sa.Value != LayoutKind.Auto)
+			return 1;
+
+		if (sa.CharSet != CharSet.Auto)
+			return 2;
+
+		if (sa.Pack != 8)
+			return 3;
+
+		if (sa.Size != 0)
+			return 4;
+
+		t = t.GetNestedTypes ()[0];
+		sa = t.StructLayoutAttribute;
+		if (sa.Value != LayoutKind.Sequential)
+			return 11;
+
+		if (sa.CharSet != CharSet.Auto)
+			return 12;
+
+		if (sa.Pack != 8)
+			return 13;
+
+		if (sa.Size != 6)
+			return 14;
+
+		return 0;
+	}
+}
diff --git a/mcs/tests/gtest-fixedbuffer-09.cs b/mcs/tests/gtest-fixedbuffer-09.cs
new file mode 100644
index 0000000..d100cea
--- /dev/null
+++ b/mcs/tests/gtest-fixedbuffer-09.cs
@@ -0,0 +1,23 @@
+// Compiler options: -unsafe
+
+using System;
+using System.Runtime.CompilerServices;
+
+unsafe struct Foo
+{
+	public fixed long FieldName[32];
+}
+
+class Test
+{
+	public static int Main ()
+	{
+		var t = typeof (Foo);
+		var f = t.GetField ("FieldName");
+		var fbas = f.GetCustomAttributes (typeof (FixedBufferAttribute), true)[0] as FixedBufferAttribute;
+		if (fbas.Length != 32)
+			return 1;
+
+		return 0;
+	}
+}
diff --git a/mcs/tests/gtest-implicitarray-03.cs b/mcs/tests/gtest-implicitarray-03.cs
new file mode 100644
index 0000000..97ab1ba
--- /dev/null
+++ b/mcs/tests/gtest-implicitarray-03.cs
@@ -0,0 +1,18 @@
+using System;
+using System.Linq.Expressions;
+
+public static class InferArrayType
+{
+	public static void foo (Func<Expression, bool>[] args)
+	{
+	}
+
+	public static void bar (Action<Expression> seq, Func<Expression, bool> action)
+	{
+		foo (new[] { p => { seq (p); return true; }, action });
+	}
+
+	public static void Main ()
+	{
+	}
+}
diff --git a/mcs/tests/gtest-iter-16.cs b/mcs/tests/gtest-iter-16.cs
new file mode 100644
index 0000000..648bc6f
--- /dev/null
+++ b/mcs/tests/gtest-iter-16.cs
@@ -0,0 +1,37 @@
+using System.Collections.Generic;
+
+namespace Test
+{
+	public abstract class Base
+	{
+		public virtual IEnumerable<Base> GetStuff (int a)
+		{
+			yield return this;
+		}
+	}
+
+	public abstract class Derived : Base
+	{
+		public override IEnumerable<Base> GetStuff (int a)
+		{
+			foreach (var x in base.GetStuff (a))
+				yield return x;
+		}
+	}
+
+	public class SpecialDerived : Derived
+	{
+		public override IEnumerable<Base> GetStuff (int a)
+		{
+			foreach (var x in base.GetStuff (a))
+				yield return x;
+		}
+
+		public static void Main ()
+		{
+			Base b = new SpecialDerived ();
+			foreach (var a in b.GetStuff (5)) {
+			}
+		}
+	}
+}
diff --git a/mcs/tests/gtest-iter-17.cs b/mcs/tests/gtest-iter-17.cs
new file mode 100644
index 0000000..d626cfe
--- /dev/null
+++ b/mcs/tests/gtest-iter-17.cs
@@ -0,0 +1,19 @@
+using System;
+using System.Collections.Generic;
+
+public class Test
+{
+	public IEnumerable<int> TestMethod ()
+	{
+		try {
+
+		} catch (Exception ex) {
+			throw;
+		}
+		yield break;
+	}
+
+	static void Main ()
+	{
+	}
+}
diff --git a/mcs/tests/gtest-iter-18.cs b/mcs/tests/gtest-iter-18.cs
new file mode 100644
index 0000000..7e40f4f
--- /dev/null
+++ b/mcs/tests/gtest-iter-18.cs
@@ -0,0 +1,19 @@
+using System.Collections.Generic;
+
+public class c
+{
+	public static IEnumerable<char> func ()
+	{
+		yield return '0';
+		yield break;
+		foreach (char c in "1") {
+			yield return c;
+		}
+	}
+
+	public static void Main ()
+	{
+		foreach (char a in func ()) {
+		}
+	}
+}
\ No newline at end of file
diff --git a/mcs/tests/gtest-lambda-26.cs b/mcs/tests/gtest-lambda-26.cs
new file mode 100644
index 0000000..450430d
--- /dev/null
+++ b/mcs/tests/gtest-lambda-26.cs
@@ -0,0 +1,13 @@
+using System;
+
+class C
+{
+	static void Main ()
+	{
+		Execute (() => {
+			  int a, b;
+		  });
+	}
+
+	public static void Execute (Action action) { }
+}
\ No newline at end of file
diff --git a/mcs/tests/gtest-linq-25.cs b/mcs/tests/gtest-linq-25.cs
new file mode 100644
index 0000000..8de5de1
--- /dev/null
+++ b/mcs/tests/gtest-linq-25.cs
@@ -0,0 +1,37 @@
+using System;
+using System.Linq;
+
+class A
+{
+	public string Header { get { return null; } }
+}
+
+class B
+{
+	public string Name { get { return null; } }
+}
+
+class C
+{
+	public static int Main ()
+	{
+		Test (delegate () {
+			var a = new A[0];
+			var b = new B[0];
+
+			if (a != null) {
+				var r = from c in new A[0]
+						from p in new B[0]
+						where c.Header == p.Name && p.Name == typeof (string).ToString ()
+						select new { C = c, P = p };
+			}
+		});
+		
+		return 0;
+	}
+
+	static void Test (Action a)
+	{
+		a ();
+	}
+}
diff --git a/mcs/tests/gtest-named-03.cs b/mcs/tests/gtest-named-03.cs
index 144a33b..d363e9a 100644
--- a/mcs/tests/gtest-named-03.cs
+++ b/mcs/tests/gtest-named-03.cs
@@ -6,6 +6,16 @@ public class C
 	{
 		return a;
 	}
+	
+	int v;
+	int this [int a, int b = 1, int c = 2] {
+		set {
+			v = a * 500 + b * 50 + c;
+		}
+		get {
+			return v;
+		}
+	}
 
 	public static int Main ()
 	{
@@ -14,7 +24,13 @@ public class C
 
 		if (Foo (a: 10) != 10)
 			return 2;
-
+		
+		C c = new C ();
+		c [a : 1, c : 2, b : 3] = 1;
+		var res = c [1];
+		if (res != 652)
+			return 3;
+		
 		return 0;
 	}
 }
diff --git a/mcs/tests/gtest-optional-02.cs b/mcs/tests/gtest-optional-02.cs
index abc1608..890b05c 100644
--- a/mcs/tests/gtest-optional-02.cs
+++ b/mcs/tests/gtest-optional-02.cs
@@ -16,6 +16,11 @@ public class C
 	{
 		return i ?? 9;
 	}
+	
+	public static long Test4 (long? i = 5)
+	{
+		return i.Value;
+	}
 
 	public static int Main ()
 	{
@@ -34,6 +39,9 @@ public class C
 		if (!Test3 ())
 			return 5;
 
+		if (Test4 () != 5)
+			return 6;
+		
 		return 0;
 	}
 }
diff --git a/mcs/tests/gtest-optional-03-lib.cs b/mcs/tests/gtest-optional-03-lib.cs
index f801dfd..d7d9f3c 100644
--- a/mcs/tests/gtest-optional-03-lib.cs
+++ b/mcs/tests/gtest-optional-03-lib.cs
@@ -4,6 +4,11 @@ public struct S
 {
 }
 
+public enum E
+{
+	Value = 3
+}
+
 public class B
 {
 	public static string TestString (string s = "mono")
@@ -31,6 +36,11 @@ public class B
 		return d;
 	}
 	
+	public static E TestEnum (E e = E.Value)
+	{
+		return e;
+	}
+	
 	char ch;
 	public char this [int id, char v = 'h'] {
 		get { return v; }
diff --git a/mcs/tests/gtest-optional-03.cs b/mcs/tests/gtest-optional-03.cs
index 845c2e8..aac0710 100644
--- a/mcs/tests/gtest-optional-03.cs
+++ b/mcs/tests/gtest-optional-03.cs
@@ -32,10 +32,13 @@ class C
 		if (B.TestDecimal (2, 5) != 5)
 			return 8;
 		
+		if (B.TestEnum () != E.Value)
+			return 9;
+		
 		B b = new B ();
 		b [1] = 'z';
 		if (b [0] != 'h')
-			return 9;
+			return 10;
 		
 		B.TestNew ();
 		
diff --git a/mcs/tests/gtest-optional-04.cs b/mcs/tests/gtest-optional-04.cs
index f15fd54..5cfa2ad 100644
--- a/mcs/tests/gtest-optional-04.cs
+++ b/mcs/tests/gtest-optional-04.cs
@@ -1,5 +1,9 @@
 using System;
 
+public struct S
+{
+}
+
 public class C
 {
 	static void Foo<T> (T t, T u = default (T))
@@ -17,6 +21,12 @@ public class C
 
 	static void TestStruct (int? s = new int ())
 	{
+		if (!s.HasValue)
+			throw new ApplicationException ("TestStruct");
+	}
+	
+	static void TestStruct2 (S? s = new S? ())
+	{
 	}
 	
 	public string this [int i, string s = "test"] {
@@ -35,6 +45,7 @@ public class C
 		TestParams ();
 		
 		TestStruct ();
+		TestStruct2 ();
 		
 		C c = new C ();
 		if (c [1] != "test")
diff --git a/mcs/tests/gtest-optional-11-lib.cs b/mcs/tests/gtest-optional-11-lib.cs
new file mode 100644
index 0000000..0c944b7
--- /dev/null
+++ b/mcs/tests/gtest-optional-11-lib.cs
@@ -0,0 +1,40 @@
+// Compiler options: -t:library
+
+using System;
+using System.Runtime.InteropServices;
+
+public struct S
+{
+}
+
+public class Lib
+{
+	public static int TestA ([Optional][DefaultParameterValue (1)] int u)
+	{
+		return u;
+	}
+
+	public static T TestB<T> (T a, [Optional] T u)
+	{
+		return u;
+	}
+	
+	public static object TestC ([Optional] object a)
+	{
+		return a;
+	}
+	
+	public static object TestC2 (object a = null)
+	{
+		return a;
+	}
+
+	public static int TestD ([Optional] int a, int i)
+	{
+		return a;
+	}
+
+	public static void TestS (S s = default (S))
+	{
+	}
+}
diff --git a/mcs/tests/gtest-optional-11.cs b/mcs/tests/gtest-optional-11.cs
index a97b41d..85b035d 100644
--- a/mcs/tests/gtest-optional-11.cs
+++ b/mcs/tests/gtest-optional-11.cs
@@ -1,3 +1,5 @@
+// Compiler options: -r:gtest-optional-11-lib.dll
+
 using System;
 using System.Reflection;
 using System.Runtime.InteropServices;
@@ -19,6 +21,11 @@ public class C
 		return a;
 	}
 
+	public static int TestD ([Optional] int a, int i)
+	{
+		return a;
+	}
+
 	public static int Main ()
 	{
 		if (TestA () != 1)
@@ -33,6 +40,29 @@ public class C
 		if (TestC () != Missing.Value)
 			return 4;
 		
+		if (TestD (i:2) != 0)
+			return 5;
+		
+		if (Lib.TestA () != 1)
+			return 11;
+
+		if (Lib.TestB (-4) != 0)
+			return 12;
+
+		if (Lib.TestB ((object) null) != Missing.Value)
+			return 13;
+
+		if (Lib.TestC () != Missing.Value)
+			return 14;
+		
+		if (Lib.TestC2 () != null)
+			return 15;
+		
+		if (Lib.TestD (i:2) != 0)
+			return 16;
+		
+		Lib.TestS ();
+		
 		return 0;
 	}
 }
diff --git a/mcs/tests/gtest-optional-13.cs b/mcs/tests/gtest-optional-13.cs
new file mode 100644
index 0000000..b351c0f
--- /dev/null
+++ b/mcs/tests/gtest-optional-13.cs
@@ -0,0 +1,73 @@
+using System;
+
+class A
+{
+	public virtual int Foo (int i)
+	{
+		return i;
+	}
+	
+	public virtual int Foo2 (int i = 99)
+	{
+		return i;
+	}
+
+	public virtual int this[string s, int arg] {
+		get {
+			return arg;
+		}
+	}
+}
+
+class B : A
+{
+	public override int Foo (int i2 = 4)
+	{
+		return i2 + 1;
+	}
+	
+	public new int Foo2 (int i)
+	{
+		return 77;
+	}
+
+	public override int this[string s, int arg2 = 9] {
+		get {
+			return arg2 + 1;
+		}
+	}
+}
+
+class C
+{
+	public static int Main ()
+	{
+		B b = new B ();
+		int i = b.Foo ();
+		if (i != 5)
+			return 1;
+
+		i = b.Foo (i2: 3);
+		if (i != 4)
+			return 2;
+
+		i = b["a"];
+		if (i != 10)
+			return 3;
+
+		i = b["a", arg2: 20];
+		if (i != 21)
+			return 4;
+		
+		i = b.Foo2 ();
+		if (i != 99)
+			return 5;
+
+		i = b.Foo2 (i : 8);
+		if (i != 77)
+			return 6;
+		
+		Console.WriteLine ("ok");
+		return 0;
+	}
+}
diff --git a/mcs/tests/gtest-optional-14.cs b/mcs/tests/gtest-optional-14.cs
new file mode 100644
index 0000000..de7f1d6
--- /dev/null
+++ b/mcs/tests/gtest-optional-14.cs
@@ -0,0 +1,25 @@
+class A
+{
+	public int GetValues (string[] s, string value = null)
+	{
+		return 1;
+	}
+
+	public int GetValues (string s, params string [] args)
+	{
+		return 2;
+	}
+}
+
+
+class B
+{
+	public static int Main ()
+	{
+		var a = new A ();
+		if (a.GetValues (null) != 1)
+			return 1;
+		
+		return 0;
+	}
+}
\ No newline at end of file
diff --git a/mcs/tests/gtest-optional-15.cs b/mcs/tests/gtest-optional-15.cs
new file mode 100644
index 0000000..e5636ba
--- /dev/null
+++ b/mcs/tests/gtest-optional-15.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Reflection;
+
+struct S
+{
+}
+
+class Program
+{
+	public static void Test (S s = default (S))
+	{
+	}
+
+	static int Main ()
+	{
+		var t = typeof (Program).GetMethod ("Test");
+		var p = t.GetParameters ()[0];
+		if (p.RawDefaultValue != null)
+			return 1;
+		
+		if (p.Attributes != (ParameterAttributes.Optional | ParameterAttributes.HasDefault))
+			return 2;
+		
+		return 0;
+	}
+}
diff --git a/mcs/tests/gtest-repl-01.cs b/mcs/tests/gtest-repl-01.cs
index adc45cb..758450c 100644
--- a/mcs/tests/gtest-repl-01.cs
+++ b/mcs/tests/gtest-repl-01.cs
@@ -30,10 +30,7 @@ public class MyTest {
 	static void Main ()
 	{
 		Evaluator.Init (new string [0]); //new string [] { "-v", "-v" });
-		//
-		// This fails because of the grammar issue with the pointer type
-		// Evaluate ("multiply", "1*2;", 2);
-		//
+
 		Run ("1",      "System.Console.WriteLine (100);");
 		Run ("Length", "var a = new int [] {1,2,3}; var b = a.Length;");
 		
diff --git a/mcs/tests/known-issues-dmcs b/mcs/tests/known-issues-dmcs
index 65563c4..f5e4a31 100644
--- a/mcs/tests/known-issues-dmcs
+++ b/mcs/tests/known-issues-dmcs
@@ -10,13 +10,7 @@ gtest-230.cs
 gtest-437.cs
 
 test-106.cs bug #628662
-test-416.cs bug #504085
-test-418.cs bug #504085
-test-454.cs bug #593342
-test-682.cs bug #530861
-test-704.cs IGNORE #472845
-test-715.cs bug #504085
-test-759.cs IGNORE bug #604218
+test-704.cs bug #472845
 
 test-xml-030.cs
 test-xml-035.cs
diff --git a/mcs/tests/known-issues-gmcs b/mcs/tests/known-issues-gmcs
index 65563c4..f5e4a31 100644
--- a/mcs/tests/known-issues-gmcs
+++ b/mcs/tests/known-issues-gmcs
@@ -10,13 +10,7 @@ gtest-230.cs
 gtest-437.cs
 
 test-106.cs bug #628662
-test-416.cs bug #504085
-test-418.cs bug #504085
-test-454.cs bug #593342
-test-682.cs bug #530861
-test-704.cs IGNORE #472845
-test-715.cs bug #504085
-test-759.cs IGNORE bug #604218
+test-704.cs bug #472845
 
 test-xml-030.cs
 test-xml-035.cs
diff --git a/mcs/tests/test-275.cs b/mcs/tests/test-275.cs
index 924526e..80b5393 100644
--- a/mcs/tests/test-275.cs
+++ b/mcs/tests/test-275.cs
@@ -1,48 +1,36 @@
 using System;
-using System.Reflection;
-using System.Runtime.CompilerServices;
 
-public delegate void DelType ();
+public delegate int DelType ();
 
 struct S
 {
 	public event DelType MyEvent;
+	public static event DelType MyEventStatic;
+	
+	public int RunInstance ()
+	{
+		return MyEvent ();
+	}
+	
+	public int RunStatic ()
+	{
+		return MyEventStatic ();
+	}
 }
 
 public class Test
 {
-	public event DelType MyEvent;
-
 	public static int Main ()
 	{
-		EventInfo ei = typeof (Test).GetEvent ("MyEvent");
-		MethodImplAttributes methodImplAttributes = ei.GetAddMethod ().GetMethodImplementationFlags ();
-
-		if ((methodImplAttributes & MethodImplAttributes.Synchronized) == 0) {
-			Console.WriteLine ("FAILED");
+		S.MyEventStatic += delegate () { return 22; };
+		S s = new S ();
+		s.MyEvent += delegate () { return 6; };
+		if (s.RunInstance () != 6)
 			return 1;
-		}
-
-		methodImplAttributes = ei.GetRemoveMethod ().GetMethodImplementationFlags ();
-		if ((methodImplAttributes & MethodImplAttributes.Synchronized) == 0) {
-			Console.WriteLine ("FAILED");
+		
+		if (s.RunStatic () != 22)
 			return 2;
-		}
-
-		ei = typeof (S).GetEvent ("MyEvent");
-		methodImplAttributes = ei.GetAddMethod ().GetMethodImplementationFlags ();
-
-		if ((methodImplAttributes & MethodImplAttributes.Synchronized) != 0) {
-			Console.WriteLine ("FAILED");
-			return 3;
-		}
-
-		methodImplAttributes = ei.GetRemoveMethod ().GetMethodImplementationFlags ();
-		if ((methodImplAttributes & MethodImplAttributes.Synchronized) != 0) {
-			Console.WriteLine ("FAILED");
-			return 4;
-		}
-
+		
 		return 0;
 	}
 }
diff --git a/mcs/tests/test-298.cs b/mcs/tests/test-298.cs
new file mode 100644
index 0000000..10ea181
--- /dev/null
+++ b/mcs/tests/test-298.cs
@@ -0,0 +1,50 @@
+using System;
+
+class A
+{
+	public static int operator + (short x, A b)
+	{
+		return -1;
+	}
+	
+	public static int operator - (A a)
+	{
+		return -1;
+	}
+}
+
+class B : A
+{
+	public static int operator + (int x, B d)
+	{
+		return 1;
+	}
+	
+	public static int operator - (B b)
+	{
+		return 1;
+	}
+}
+
+class C : B
+{
+}
+
+public class Test
+{
+	public static int Main ()
+	{
+		var b = new B ();
+		short s = 3;
+		var res = s + b;
+
+		if (res != 1)
+			return 1;
+		
+		var c = new C ();
+		if (-c != 1)
+			return 2;
+
+		return 0;
+	}
+}
\ No newline at end of file
diff --git a/mcs/tests/test-418.cs b/mcs/tests/test-418.cs
index acbb038..e939cb1 100644
--- a/mcs/tests/test-418.cs
+++ b/mcs/tests/test-418.cs
@@ -10,13 +10,18 @@ public class M3 : M1 {
 	public static int Main () {
 		if (new M3 ().Foo != "FOO")
 			return 1;
+			
 		/* Test that the EXPORTEDTYPES table is correctly set up */
-		if (typeof (M3).Assembly.GetTypes ().Length != 3)
+		// It should be 3 but we add 2 compiler generated <$AssemblyAttributes$....>
+		if (typeof (M3).Assembly.GetTypes ().Length != 3 + 2)
 			return 2;
+
 		if (typeof (M3).Assembly.GetType ("M2") == null)
 			return 3;
+
 		if (typeof (M3).Assembly.GetType ("M2") != typeof (M2))
-			return 3;
+			return 4;
+
 		return 0;
 	}
 }
diff --git a/mcs/tests/test-424.cs b/mcs/tests/test-424.cs
index 482ba03..815df52 100644
--- a/mcs/tests/test-424.cs
+++ b/mcs/tests/test-424.cs
@@ -1,32 +1,15 @@
-//
-// Sample for bug 75674
-//
 using System;
-using System.Collections;
 
-class XX {
-	static void Metodo (Exception e)
+class C
+{
+	public static int Main ()
 	{
-		if (e is NotImplementedException){
-			Console.WriteLine ("OK");
-		} else {
-			Console.WriteLine ("Fail");
-		}
-	}
-	
-	static IEnumerable X ()
-	{
-		try {
-			throw new NotImplementedException ();
-		} catch (Exception e){
-			Metodo (e);
-		}
-		yield return 0;
-	}
-	
-	static void Main ()
-	{
-		foreach (int a in X ()){
+		const string s = "oups";
+		if (s.Length != 4) {
+			Console.WriteLine (s.Length);
+			return 2;
 		}
+		
+		return 0;
 	}
 }
diff --git a/mcs/tests/test-450.cs b/mcs/tests/test-450.cs
new file mode 100644
index 0000000..3c70f16
--- /dev/null
+++ b/mcs/tests/test-450.cs
@@ -0,0 +1,42 @@
+using System;
+
+enum E : byte
+{
+	V
+}
+
+class A
+{
+	int value;
+	
+	private A (int value)
+	{
+		this.value = value;
+	}
+	
+	public static implicit operator byte (A a)
+	{
+		return 6;
+	}
+
+	public static implicit operator A (int a)
+	{
+		return new A (a);
+	}
+	
+	public static int Main ()
+	{
+		var a = new A (0);
+		a++;
+		if (a.value != 7)
+			return 1;
+		
+		var e = E.V;
+		e++;
+		
+		if ((int) e != 1)
+			return 2;
+		
+		return 0;
+	}
+}
\ No newline at end of file
diff --git a/mcs/tests/test-465.cs b/mcs/tests/test-465.cs
index f05da6a..3064c20 100644
--- a/mcs/tests/test-465.cs
+++ b/mcs/tests/test-465.cs
@@ -1,4 +1,4 @@
-// Compiler options: -res:test-465.cs
+// Compiler options: -res:test-465.cs,
 
 using System.Reflection;
 using System;
diff --git a/mcs/tests/test-466-lib.cs b/mcs/tests/test-466-lib.cs
new file mode 100644
index 0000000..69a0a23
--- /dev/null
+++ b/mcs/tests/test-466-lib.cs
@@ -0,0 +1,18 @@
+// Compiler options: -t:library
+
+namespace A
+{
+	public class C
+	{
+		public void Foo ()
+		{
+		}
+	}
+}
+
+namespace A.B
+{
+	class C
+	{
+	}
+}
diff --git a/mcs/tests/test-466.cs b/mcs/tests/test-466.cs
new file mode 100644
index 0000000..94365cd
--- /dev/null
+++ b/mcs/tests/test-466.cs
@@ -0,0 +1,15 @@
+// Compiler options: -r:test-466-lib.dll
+
+namespace A.X
+{
+	using A.B;
+	
+	class Test
+	{
+		public static void Main ()
+		{
+			C c = new C ();
+			c.Foo ();
+		}
+	}
+}
\ No newline at end of file
diff --git a/mcs/tests/test-467.cs b/mcs/tests/test-467.cs
index 4079595..baea127 100644
--- a/mcs/tests/test-467.cs
+++ b/mcs/tests/test-467.cs
@@ -1,32 +1,28 @@
 using System;
 
-public class ExceptionWithAnonMethod
+class A
 {
-	public delegate void EmptyCallback();
-    	static string res;
-	
-	public static int Main()
+	public delegate int D ();
+}
+
+class B : A
+{
+	new delegate void D ();
+}
+
+class C
+{
+	static int Foo ()
 	{
-		try {
-			throw new Exception("e is afraid to enter anonymous land");
-		} catch(Exception e) {
-			AnonHandler(delegate {
-				Console.WriteLine(e.Message); 
-				res = e.Message;
-			});
-		}
-		if (res == "e is afraid to enter anonymous land"){
-		    Console.WriteLine ("Test passed");
-		    return 0;
-		}
-		Console.WriteLine ("Test failed");
 		return 1;
 	}
-
-	public static void AnonHandler(EmptyCallback handler)
+	
+	public static int Main ()
 	{
-		if(handler != null) {
-			handler();
-		}
+		A.D d = new B.D (Foo);
+		if (d () != 1)
+			return 1;
+		
+		return 0;
 	}
-}
+}
\ No newline at end of file
diff --git a/mcs/tests/test-471.cs b/mcs/tests/test-471.cs
index 648d786..771a8e9 100644
--- a/mcs/tests/test-471.cs
+++ b/mcs/tests/test-471.cs
@@ -1,14 +1,26 @@
-// Compiler options: /doc:test-471.xml
-
 using System;
 
-/// <summary><see cref="AAttribute" /></summary>
-[Obsolete("whatever", true)]
-public class AAttribute : Attribute {
+class AAttribute : Attribute
+{
+	public string Value;
+	
+	public AAttribute (string s)
+	{
+		Value = s;
+	}
 }
 
-class Demo {
-	static void Main ()
+[A (value)]
+class MainClass
+{
+	const string value = null;
+	
+	public static int Main ()
 	{
+		var attr = typeof (MainClass).GetCustomAttributes (false) [0] as AAttribute;
+		if (attr.Value != null)
+			return 1;
+		
+		return 0;
 	}
-}
+} 
diff --git a/mcs/tests/test-480.cs b/mcs/tests/test-480.cs
index c594439..eed776f 100644
--- a/mcs/tests/test-480.cs
+++ b/mcs/tests/test-480.cs
@@ -1,38 +1,64 @@
-//
-// This is a build test: checks that the compiler does not loop
-// forever endlessly with anonymous methods
-//
 using System;
-using System.Collections;
-using System.Text;
 
-  class Space
-  { public int Value = -1;
+class A : IDisposable
+{
+	public A (int v)
+	{
+	}
+	
+	public void Dispose ()
+	{
+	}
+}
 
-    public delegate void DoCopy();
+class C
+{
+	int b;
+	
+	delegate void D (int i);
+	
+	static void Test (object arg)
+	{
+		const int a2= 9, a3 = a2, a4 = a3, a5 = a4;
+		Console.WriteLine (a5);
+		
+		if (a2 > 0) {
+			bool a = false;
+		} else {
+			const bool a = false;
+		}
 
-    public DoCopy CopyIt;
+		for (int i = 0; i < 10; ++i) {
+			Console.WriteLine (i);
+		}
+		
+		for (int i = 0; i < 10; ++i) {
+			Console.WriteLine (i);
+		}
+		
+		foreach (var i in new int[] { 9, 8 }) {
+			Console.WriteLine (i);
+		}
 
-    public void Leak(bool useArray, int max)
-    { DoCopy one;
+		using (A i = new A (1), i2 = new A (2), i3 = new A (3)) {
+		}
+		
+		using (A i = new A (3)) {
+		}
 
-      { int answer = 0;
-        int[] work;
-        
-        CopyIt = delegate { Value = answer; };
-        one = delegate 
-              { work = new int[max];
-                foreach(int x in work) answer += x;
-              };
-      }
+		try {
+		}
+		catch (Exception o) {
+			o = null;
+		}
 
-      one();
-    }
-  }
+		D action = delegate (int i) {
+		};
+	}
 
-  class Program
-  { 
-    static void Main(string[] args)
-    {
-    }
-  }
+	public static int Main ()
+	{
+		Test (1);
+		return 0;
+	}
+}
\ No newline at end of file
diff --git a/mcs/tests/test-496.cs b/mcs/tests/test-496.cs
index 4e3125a..e06d366 100644
--- a/mcs/tests/test-496.cs
+++ b/mcs/tests/test-496.cs
@@ -1,41 +1,13 @@
-using System;
-using System.Collections;
+// Compiler options: -unsafe
 
-public class Test
+unsafe class Baz
 {
-	public IEnumerator GetEnumerator ()
+	struct Foo
 	{
-		yield return "TEST";
-		try {
-			int.Parse (arg);
-		} catch {
-			yield break;
-		}
-		yield return "TEST2";
+		public Foo *next;
 	}
-
-	static void Main ()
-	{
-		new Test ().Run ();
-	}
-
-	string arg;
-
-	void Run ()
+	
+	public static void Main ()
 	{
-		int i = 0;
-		foreach (string s in this)
-			i++;
-		if (i != 1)
-			throw new Exception ();
-
-		arg = "1";
-		i = 0;
-		foreach (string s in this)
-			i++;
-		if (i != 2)
-			throw new Exception ();
 	}
 }
-
-
diff --git a/mcs/tests/test-524.cs b/mcs/tests/test-524.cs
index b9a440f..913061a 100644
--- a/mcs/tests/test-524.cs
+++ b/mcs/tests/test-524.cs
@@ -1,14 +1,25 @@
 using System;
-public class Foo {
-   public static int Main()
-   {
-	   try {
-		   lock (null) {
-		   }
-	   }
-	   catch (ArgumentNullException) {
-		   return 0;
-	   }
-	   return 1;
-   }
+
+public class Foo
+{
+	public static int Main ()
+	{
+		try {
+			lock (null) {
+				return 1;
+			}
+		} catch (ArgumentNullException) {
+		}
+
+		for (int i = 0; i < 3; ++i) {
+			object token = new object ();
+
+			lock (token)
+			{
+				token = null;
+			}
+		}
+
+		return 0;
+	}
 }
\ No newline at end of file
diff --git a/mcs/tests/test-525.cs b/mcs/tests/test-525.cs
index e0655b2..f500871 100644
--- a/mcs/tests/test-525.cs
+++ b/mcs/tests/test-525.cs
@@ -3,7 +3,8 @@ using System;
 class X {
 	~X ()
 	{
-		Console.WriteLine ("DESTRUCTOR!");
+		int id = 1;
+		Console.WriteLine ("DESTRUCTOR!" + id);
 	}
 
         public static int Test1()
diff --git a/mcs/tests/test-541.cs b/mcs/tests/test-541.cs
index 60f0ca1..6b02422 100644
--- a/mcs/tests/test-541.cs
+++ b/mcs/tests/test-541.cs
@@ -1,20 +1,23 @@
-delegate void TestFunc (int val);
+using System;
 
-class A
+class ClassMain
 {
-	public A(TestFunc func)
+	delegate void D (int i);
+	
+	public static void Main ()
 	{
-		func (0);
+		if (true) {
+			const bool test = false;
+		} else {
+			test = false;
+		}
+		
+		D d = delegate (int test) { };
 	}
-}
-
-class TestClass
-{
-	static int i = 1;
-	static readonly A a = new A(delegate(int a) { i = a; });
-
-	static int Main ()
-	{
-		return i;
+	
+	static bool test { 
+		set {
+		}
 	}
 }
+
diff --git a/mcs/tests/test-577.cs b/mcs/tests/test-577.cs
new file mode 100644
index 0000000..b55573a
--- /dev/null
+++ b/mcs/tests/test-577.cs
@@ -0,0 +1,16 @@
+using System;
+
+interface IA
+{
+	event EventHandler e_a, e_b;
+}
+
+class C : IA
+{
+	event EventHandler IA.e_a { add {} remove {} }
+	event EventHandler IA.e_b { add {} remove {} }
+	
+	public static void Main ()
+	{
+	}
+}
\ No newline at end of file
diff --git a/mcs/tests/test-579.cs b/mcs/tests/test-579.cs
index dd32486..b2e6c68 100644
--- a/mcs/tests/test-579.cs
+++ b/mcs/tests/test-579.cs
@@ -1,17 +1,24 @@
-using System;
-using System.Reflection;
+// Compiler options: -warnaserror
 
-class X {
-	delegate object test (MethodInfo x);
-		
-	static void Main ()
-	{
-		DoCall (delegate(MethodInfo from) {
-                    return from.Invoke (null, new object[] { from });
-                });
-	}
-
-	static void DoCall (test t)
+public class TestCase
+{
+	static int Main ()
 	{
+		int i = 0;
+		{
+			goto A;
+			A:
+				i += 3;
+		}
+		{
+			goto A;
+			A:
+				i *= 4;
+		}
+		
+		if (i != 12)
+			return 1;
+			
+		return 0;
 	}
 }
diff --git a/mcs/tests/test-580.cs b/mcs/tests/test-580.cs
index e0c7dba..e171283 100644
--- a/mcs/tests/test-580.cs
+++ b/mcs/tests/test-580.cs
@@ -55,6 +55,35 @@ public class Bla {
 		label[idx++, idx - 1] += s + s + s + s;
 	}
 	
+	static bool Test_Object ()
+	{
+		int a = 0;
+		object[] o_a = new string[] { "A" };
+		o_a [a++] += "Z";
+		if ((string) o_a [0] != "AZ")
+			return false;
+		
+		a = 0;
+		object[,] o_a2 = new string[,] { { "X" } };
+		o_a2[a++, 0] += "Z";
+		if ((string) o_a2 [0, 0] != "XZ")
+			return false;
+		
+		return true;
+	}
+	
+	static bool Test_Decimal ()
+	{
+		decimal[,] da = new decimal[,] { { 5, 6 } };
+		da[0,0] = 6.7m;
+		da[0,0] += 1.2m;
+		
+		if (da [0,0] != 7.9m)
+			return false;
+		
+		return true;
+	}
+	
 	public static int Main ()
 	{
 		String str = "test";
@@ -97,6 +126,12 @@ public class Bla {
 		if (sa2 [0,0] != "aaaa")
 			return 7;
 		
+		if (!Test_Object ())
+			return 8;
+
+		if (!Test_Decimal ())
+			return 9;
+
 		return 0;
 	}
 }
diff --git a/mcs/tests/test-594.cs b/mcs/tests/test-594.cs
index c279822..c8e0cc6 100644
--- a/mcs/tests/test-594.cs
+++ b/mcs/tests/test-594.cs
@@ -1,11 +1,25 @@
 using System;
 using System.Reflection;
 
-[assembly: AssemblyVersion ("1.0.0.*")]
+[assembly: AssemblyVersion ("2.3.*")]
 
-public class Test {
-
-	static void Main ()
+public class Test
+{
+	static int Main ()
 	{
+		var v = typeof (Test).Assembly.GetName ().Version;
+		if (v.Major != 2)
+			return 1;
+		
+		if (v.Minor != 3)
+			return 2;
+
+		if (v.Build < 1)
+			return 3;
+		
+		if (v.Revision < 1)
+			return 4;
+
+		return 0;
 	}
 }
diff --git a/mcs/tests/test-616.cs b/mcs/tests/test-616.cs
index a2804a9..00fe6db 100644
--- a/mcs/tests/test-616.cs
+++ b/mcs/tests/test-616.cs
@@ -6,7 +6,10 @@
 
 namespace System
 {
-	public class Object {}
+	public class Object
+	{
+		object value_with_no_base;
+	}
 		
 	public struct Byte {}
 	public struct Int16 {}
diff --git a/mcs/tests/test-618.cs b/mcs/tests/test-618.cs
index 825c0a9..7982c6d 100644
--- a/mcs/tests/test-618.cs
+++ b/mcs/tests/test-618.cs
@@ -19,9 +19,19 @@ class C
 		a = a >> 0x40;
 	}
 	
+	public static void ZeroBasedReductionsWithConversion ()
+	{
+		byte b = 0;
+		b |= 0;
+		b += 0;
+		b -= 0;
+		b *= 1;
+	}
+	
 	public static void Main ()
 	{
 		ZeroBasedReductions ();
+		ZeroBasedReductionsWithConversion ();
 	}
 }
 
diff --git a/mcs/tests/test-629.cs b/mcs/tests/test-629.cs
index 8113301..98b7194 100644
--- a/mcs/tests/test-629.cs
+++ b/mcs/tests/test-629.cs
@@ -1,14 +1,24 @@
-using System.Collections;
-class Foo {
-	static public IEnumerable foo ()
+public class Foo
+{
+	public static class Nested
 	{
-		try { yield break; } catch { } finally { }
+		public static int Bar {
+			get {
+				// bar should be referring to Foo.Nested.bar here
+				return bar.value;
+			}
+		} 
+
+		static class bar {
+			// The desired
+			public const int value = 3;
+		}
 	}
-	static int Main ()
+
+	// The undesired
+	int bar; 
+
+	public static void Main ()
 	{
-		int i = 0;
-		foreach (object o in foo ())
-			++i;
-		return i;
 	}
 }
diff --git a/mcs/tests/test-637.cs b/mcs/tests/test-637.cs
new file mode 100644
index 0000000..9519fb1
--- /dev/null
+++ b/mcs/tests/test-637.cs
@@ -0,0 +1,39 @@
+using System;
+
+struct S {}
+
+class A : Attribute
+{
+	public A ()
+	{
+	}
+	
+	public A (object value)
+	{
+		Value = (Type) value;
+	}
+	
+	public Type Value { get; set; }
+}
+
+[A (Value = typeof (S*))]
+class TestProp
+{
+}
+
+[A (typeof (ushort**))]
+public class Test
+{
+	public static int Main ()
+	{
+		A a = (A)typeof (Test).GetCustomAttributes (false)[0];
+		if (a.Value != typeof (ushort**))
+			return 1;
+
+		a = (A)typeof (TestProp).GetCustomAttributes (false)[0];
+		if (a.Value != typeof (S*))
+			return 2;
+		
+		return 0;
+	}
+}
diff --git a/mcs/tests/test-645-lib.cs b/mcs/tests/test-645-lib.cs
new file mode 100644
index 0000000..897d358
--- /dev/null
+++ b/mcs/tests/test-645-lib.cs
@@ -0,0 +1,49 @@
+// Compiler options: -t:library
+
+using System;
+
+public class A
+{
+	public class AN
+	{
+		public B.N TestReturn ()
+		{
+			return new B.N ();
+		}
+	}
+}
+
+public class B
+{
+	public class N : C.N
+	{
+	}
+}
+
+public class C
+{
+	public class N
+	{
+		public void Test ()
+		{
+		}
+	}
+}
+
+public class T3 : T2.E
+{
+}
+
+public class T1
+{
+	public void Test ()
+	{
+	}
+}
+
+public class T2 : T1
+{
+	public interface E
+	{
+	}
+}
diff --git a/mcs/tests/test-645.cs b/mcs/tests/test-645.cs
index 00568fd..3db869d 100644
--- a/mcs/tests/test-645.cs
+++ b/mcs/tests/test-645.cs
@@ -1,24 +1,13 @@
-using System;
-using System.Collections;
+// Compiler options: -r:test-645-lib.dll
 
-class Program
+class C
 {
-    static public IEnumerable Empty {
-        get {
-            object [] os = new object [] { };
-            foreach (object o in os) {
-                yield return o;
-            }
-        }
-    }
-
-    static void Main()
-    {
-        IEnumerator enumerator = Empty.GetEnumerator();
-        if (enumerator.Current == null)
-            Console.WriteLine("Successful");
-        enumerator.MoveNext();
-        if (enumerator.Current == null)
-            Console.WriteLine("Successful");
-    }
+	public static void Main ()
+	{
+		var n = new A.AN ();
+		n.TestReturn ().Test ();
+		
+		var t2 = new T2 ();
+		t2.Test ();
+	}
 }
diff --git a/mcs/tests/test-679.cs b/mcs/tests/test-679.cs
index 4d756d4..f59290d 100644
--- a/mcs/tests/test-679.cs
+++ b/mcs/tests/test-679.cs
@@ -1,13 +1,12 @@
-// Compiler options: -r:dlls/test-679-1/test-679-lib.dll -r:dlls/test-679-2/test-679-lib-2.dll
+// Compiler options: -t:library -r:dlls/test-679-1/test-679-lib.dll -r:dlls/test-679-2/test-679-lib-2.dll
 
 using System;
 
-class Program {
-
-	static int Main ()
+class Program
+{
+	void Main ()
 	{
 		LibB.A ();
 		LibB.B ();
-		return 0;
 	}
 }
diff --git a/mcs/tests/test-682.cs b/mcs/tests/test-682.cs
index 03b59bb..43d6f1d 100644
--- a/mcs/tests/test-682.cs
+++ b/mcs/tests/test-682.cs
@@ -73,45 +73,45 @@ public class broken_cast
 			conv_ovf_i (ok_number, false);
 			++i;
 			conv_ovf_i (negative, false);
-			++i;
-			conv_ovf_i (biggerThanI4, true && is32bits);
-			++i;
-			conv_ovf_i (smallerThanI4, true && is32bits);
-			++i;
-			conv_ovf_i (biggerThanU4, true && is32bits);
+//			++i;
+//			conv_ovf_i (biggerThanI4, true && is32bits);
+//			++i;
+//			conv_ovf_i (smallerThanI4, true && is32bits);
+//			++i;
+//			conv_ovf_i (biggerThanU4, true && is32bits);
 
 			++i;
 			conv_ovf_i_un (ok_number, false);
 			++i;
 			conv_ovf_i_un (negative, false);
 			++i;
-			conv_ovf_i_un (biggerThanI4, true && is32bits);
-			++i;
-			conv_ovf_i_un (smallerThanI4, true && is32bits);
-			++i;
-			conv_ovf_i_un (biggerThanU4, true && is32bits);
+//			conv_ovf_i_un (biggerThanI4, true && is32bits);
+//			++i;
+//			conv_ovf_i_un (smallerThanI4, true && is32bits);
+//			++i;
+//			conv_ovf_i_un (biggerThanU4, true && is32bits);
 
 			++i;
 			conv_ovf_u (ok_number, false);
 			++i;
 			conv_ovf_u (negative, false);
-			++i;
-			conv_ovf_u (biggerThanI4, true && is32bits);
-			++i;
-			conv_ovf_u (smallerThanI4, true && is32bits);
-			++i;
-			conv_ovf_u (biggerThanU4, true && is32bits);
+//			++i;
+//			conv_ovf_u (biggerThanI4, true && is32bits);
+//			++i;
+//			conv_ovf_u (smallerThanI4, true && is32bits);
+//			++i;
+//			conv_ovf_u (biggerThanU4, true && is32bits);
 
 			++i;
 			conv_ovf_u_un (ok_number, false);
 			++i;
 			conv_ovf_u_un (negative, false);
-			++i;
-			conv_ovf_u_un (biggerThanI4, true && is32bits);
-			++i;
-			conv_ovf_u_un (smallerThanI4, true && is32bits);
-			++i;
-			conv_ovf_u_un (biggerThanU4, true && is32bits);
+//			++i;
+//			conv_ovf_u_un (biggerThanI4, true && is32bits);
+//			++i;
+//			conv_ovf_u_un (smallerThanI4, true && is32bits);
+//			++i;
+//			conv_ovf_u_un (biggerThanU4, true && is32bits);
 
 			return 0;
 		} catch (Exception e) {
diff --git a/mcs/tests/test-695.cs b/mcs/tests/test-695.cs
index d572543..63d9da3 100644
--- a/mcs/tests/test-695.cs
+++ b/mcs/tests/test-695.cs
@@ -18,28 +18,28 @@ class Program
 		AssemblyName an;
 		AssemblyBuilder ab;
 
-		assembly = AssemblyFactory.GetAssembly (Path.Combine (basedir, "test-695-2-lib.dll"));
-		if (assembly.Name.Flags != AssemblyFlags.PublicKey)
+		assembly = AssemblyDefinition.ReadAssembly (Path.Combine (basedir, "test-695-2-lib.dll"));
+		if (assembly.Name.Attributes != AssemblyAttributes.PublicKey)
 			return 1;
 		a = Assembly.LoadFrom (Path.Combine (basedir, "test-695-2-lib.dll"));
 		if (a.GetName ().Flags != AssemblyNameFlags.PublicKey)
 			return 2;
 
-		assembly = AssemblyFactory.GetAssembly (Path.Combine (basedir, "test-695-3-lib.dll"));
+		assembly = AssemblyDefinition.ReadAssembly (Path.Combine (basedir, "test-695-3-lib.dll"));
 		if (Environment.Version.Major >= 2) {
-			if (assembly.Name.Flags != AssemblyFlags.SideBySideCompatible)
+			if (assembly.Name.Attributes != AssemblyAttributes.SideBySideCompatible)
 				return 3;
 
 		} else {
-			if (assembly.Name.Flags != AssemblyFlags.PublicKey)
+			if (assembly.Name.Attributes != AssemblyAttributes.PublicKey)
 				return 3;
 		}
 		a = Assembly.LoadFrom (Path.Combine (basedir, "test-695-3-lib.dll"));
 		if (a.GetName ().Flags != AssemblyNameFlags.PublicKey)
 			return 4;
 
-		assembly = AssemblyFactory.GetAssembly (Path.Combine (basedir, "test-695.exe"));
-		if (assembly.Name.Flags != AssemblyFlags.SideBySideCompatible)
+		assembly = AssemblyDefinition.ReadAssembly (Path.Combine (basedir, "test-695.exe"));
+		if (assembly.Name.Attributes != AssemblyAttributes.SideBySideCompatible)
 			return 5;
 		a = Assembly.LoadFrom (Path.Combine (basedir, "test-695.exe"));
 		if (a.GetName ().Flags != AssemblyNameFlags.PublicKey)
@@ -54,8 +54,8 @@ class Program
 			AssemblyBuilderAccess.Save, basedir);
 		ab.Save ("test-695-4-lib.dll");
 
-		assembly = AssemblyFactory.GetAssembly (Path.Combine (basedir, "test-695-4-lib.dll"));
-		if (assembly.Name.Flags != (AssemblyFlags.PublicKey | AssemblyFlags.Retargetable))
+		assembly = AssemblyDefinition.ReadAssembly (Path.Combine (basedir, "test-695-4-lib.dll"));
+		if (assembly.Name.Attributes != (AssemblyAttributes.PublicKey | AssemblyAttributes.Retargetable))
 			return 7;
 
 		an = new AssemblyName ();
@@ -67,8 +67,8 @@ class Program
 			AssemblyBuilderAccess.Save, basedir);
 		ab.Save ("test-695-5-lib.dll");
 
-		assembly = AssemblyFactory.GetAssembly (Path.Combine (basedir, "test-695-5-lib.dll"));
-		if (assembly.Name.Flags != (AssemblyFlags.PublicKey | AssemblyFlags.Retargetable))
+		assembly = AssemblyDefinition.ReadAssembly (Path.Combine (basedir, "test-695-5-lib.dll"));
+		if (assembly.Name.Attributes != (AssemblyAttributes.PublicKey | AssemblyAttributes.Retargetable))
 			return 8;
 		a = Assembly.LoadFrom (Path.Combine (basedir, "test-695-5-lib.dll"));
 		if (a.GetName ().Flags != (AssemblyNameFlags.PublicKey | AssemblyNameFlags.Retargetable))
@@ -84,8 +84,8 @@ class Program
 		an.Flags = AssemblyNameFlags.None;
 		ab.Save ("test-695-6-lib.dll");
 
-		assembly = AssemblyFactory.GetAssembly (Path.Combine (basedir, "test-695-6-lib.dll"));
-		if (assembly.Name.Flags != (AssemblyFlags.PublicKey | AssemblyFlags.Retargetable))
+		assembly = AssemblyDefinition.ReadAssembly (Path.Combine (basedir, "test-695-6-lib.dll"));
+		if (assembly.Name.Attributes != (AssemblyAttributes.PublicKey | AssemblyAttributes.Retargetable))
 			return 10;
 		a = Assembly.LoadFrom (Path.Combine (basedir, "test-695-6-lib.dll"));
 		if (a.GetName ().Flags != (AssemblyNameFlags.PublicKey | AssemblyNameFlags.Retargetable))
diff --git a/mcs/tests/test-702.cs b/mcs/tests/test-702.cs
new file mode 100644
index 0000000..ba84110
--- /dev/null
+++ b/mcs/tests/test-702.cs
@@ -0,0 +1,21 @@
+struct S
+{
+	int a;
+	int b;
+	
+	public S (int i)
+	{
+		this = new S ();
+	}
+	
+	public S (string s, int a)
+	{
+		this.a = a;
+		this.b = 2;
+	}
+	
+	static void Main ()
+	{
+		S s = new S (1);
+	}
+}
\ No newline at end of file
diff --git a/mcs/tests/test-722.cs b/mcs/tests/test-722.cs
new file mode 100644
index 0000000..c8dec1b
--- /dev/null
+++ b/mcs/tests/test-722.cs
@@ -0,0 +1,39 @@
+interface IA
+{
+}
+
+interface IF : IA
+{
+	int Prop { set; }
+}
+
+struct S : IF
+{
+	int prop;
+	
+	public S (int a)
+	{
+		this.prop = 5;
+	}
+	
+	public int Prop {
+		set {
+			prop = value;
+		}
+	}
+	
+	void M<T> (T ia) where T : struct, IA
+	{
+		((IF)ia).Prop = 3;
+	}
+	
+	static void Main ()
+	{
+		S s = new S ();
+		object o = s;
+		((IF)((S)o)).Prop = 3;
+		
+		IA ia = new S ();
+		((IF)ia).Prop = 3;
+	}
+}
diff --git a/mcs/tests/test-725.cs b/mcs/tests/test-725.cs
new file mode 100644
index 0000000..f139e09
--- /dev/null
+++ b/mcs/tests/test-725.cs
@@ -0,0 +1,33 @@
+using System;
+using System.Reflection;
+using System.Runtime.InteropServices;
+
+public delegate int D ([In] ref int arg);
+
+class B
+{
+	public static int Main ()
+	{
+		var methods = typeof (D).GetMethods ();
+		foreach (var m in methods) {
+			var pi = m.GetParameters ();
+			switch (m.Name) {
+			case "Invoke":
+				if (!pi[0].IsIn)
+					return 1;
+				break;
+			case "BeginInvoke":
+				if (!pi[0].IsIn)
+					return 2;
+				break;
+			case "EndInvoke":
+				if (!pi[0].IsIn)
+					return 3;
+
+				break;
+			}
+		}
+
+		return 0;
+	}
+}
\ No newline at end of file
diff --git a/mcs/tests/test-732.cs b/mcs/tests/test-732.cs
new file mode 100644
index 0000000..04d6f67
--- /dev/null
+++ b/mcs/tests/test-732.cs
@@ -0,0 +1,21 @@
+class C
+{
+	public static explicit operator int (C c)
+	{
+		return 1;
+	}
+	
+	public static int op_Implicit (C c, bool b)
+	{
+		return -1;
+	}
+
+	public static int Main ()
+	{
+		int res = (int) new C ();
+		if (res != 1)
+			return 1;
+		
+		return 0;
+	}
+}
\ No newline at end of file
diff --git a/mcs/tests/test-783.cs b/mcs/tests/test-783.cs
index a9756d8..93e2482 100644
--- a/mcs/tests/test-783.cs
+++ b/mcs/tests/test-783.cs
@@ -2,15 +2,40 @@ enum E { a, b }
 
 class C
 {
-	public static void Main ()
+	static void M (E e)
+	{
+	}
+	
+	static int Test (int a)
+	{
+		return -1;
+	}
+	
+	static int Test (E e)
+	{
+		return 1;
+	}
+	
+	public static int Main ()
 	{
 		M ((uint) 0);
 		M ((long) 0);
 		M ((sbyte) 0);
 		M ((ulong) 0);
-	}
+		
+		var d = E.b;
+		if (Test (d - 0) != 1)
+			return 1;
+		
+		if (Test (d - 1) != 1)
+			return 2;
 
-	static void M (E e)
-	{
+		if (Test (d + 0) != 1)
+			return 3;
+
+		if (Test (d + 1) != 1)
+			return 4;
+		
+		return 0;
 	}
-}
\ No newline at end of file
+}
diff --git a/mcs/tests/test-789.cs b/mcs/tests/test-789.cs
index c91de6f..ac3d163 100644
--- a/mcs/tests/test-789.cs
+++ b/mcs/tests/test-789.cs
@@ -1,10 +1,13 @@
 using System;
 
-class Program {
-    static void Main ()
-    {
-        Action action = () => Console.WriteLine (1);
-        action += null;
-        action ();
-    }
+class Program
+{
+	static void Main ()
+	{
+		Action action = () => Console.WriteLine (1);
+		action += null;
+		action = null + action;
+		action = action + null;
+		action ();
+	}
 }
diff --git a/mcs/tests/test-792-lib.il b/mcs/tests/test-792-lib.il
index e7d4b8b..85d97c4 100644
--- a/mcs/tests/test-792-lib.il
+++ b/mcs/tests/test-792-lib.il
@@ -8,6 +8,7 @@
 
 .assembly 'test-792-lib'
 {
+//	.custom instance void ['missing-lib']System.Runtime.CompilerServices.ExtensionAttribute::.ctor() = ( 01 00 00 00 ) 
 }
 
 .module 'test-792-lib.dll'
@@ -35,14 +36,22 @@
   .custom instance void [mscorlib]System.ObsoleteAttribute::.ctor() = ( 01 00 00 00 ) 
   .field private class [mscorlib]System.Collections.Generic.List`1<valuetype ['missing-lib']XX> field2
   .field private class ['missing-lib']XX field3
+  .field public class MembersDelayed[] fooArray
+  .field private static initonly class['missing-lib']XX field4
+  
   .method public hidebysig specialname rtspecialname 
           instance void  .ctor() cil managed
   {
-    .maxstack  8
     IL_0000:  ldarg.0
     IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
     IL_0006:  ret
   }
+  
+  .method private hidebysig specialname
+          instance void  PrivateMissing(class ['missing-lib']XX p) cil managed
+  {
+    IL_0000:  ret
+  }
 }
 
 .class public auto ansi beforefieldinit MultipleSameNames extends [mscorlib]System.Object
@@ -53,9 +62,74 @@
   .method public hidebysig specialname rtspecialname 
           instance void  .ctor() cil managed
   {
-    .maxstack  8
     IL_0000:  ldarg.0
     IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
     IL_0006:  ret
   }  
-}
\ No newline at end of file
+}
+
+.class public auto ansi beforefieldinit Another extends ['missing-lib']XXBase
+{
+  .class auto ansi nested public beforefieldinit Nested extends [mscorlib]System.Object
+  {
+    .method public hidebysig specialname rtspecialname instance void  .ctor() cil managed
+    {
+      IL_0000:  ldarg.0
+      IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
+      IL_0006:  ret
+    }
+  }
+
+  .method public hidebysig specialname rtspecialname instance void  .ctor() cil managed
+  {
+    IL_0000:  ldarg.0
+    IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
+    IL_0006:  ret
+  }
+}
+
+.class public auto ansi beforefieldinit MembersDelayed extends [mscorlib]System.Object
+{
+  .field public class ['missing-lib']Missing foo
+  
+  .method public hidebysig specialname rtspecialname instance void  .ctor() cil managed
+  {
+    IL_0000:  ldarg.0
+    IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
+    IL_0006:  ret
+  }
+}
+
+.class public auto ansi beforefieldinit G`1<T> extends [mscorlib]System.Object
+{
+  .field public class ['missing-lib']Missing foo
+  
+  .method public hidebysig specialname rtspecialname instance void  .ctor() cil managed
+  {
+    IL_0000:  ldarg.0
+    IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
+    IL_0006:  ret
+  }
+}
+
+.class interface public abstract auto ansi IMemberDelayed
+{
+  .method public hidebysig newslot abstract virtual 
+          instance class MembersDelayed[] 
+          foo(class [mscorlib]System.Object t) cil managed
+  {
+  }
+
+  .method public hidebysig newslot abstract virtual 
+          instance class [mscorlib]System.Object[] 
+          Working() cil managed
+  {
+  }
+  
+  .method public hidebysig newslot abstract virtual 
+          instance class [mscorlib]System.Object[] 
+          Working(class G`1<class MembersDelayed> arg) cil managed
+  {
+  } 
+}
+
diff --git a/mcs/tests/test-792.cs b/mcs/tests/test-792.cs
index 2c4aacc..be77f30 100644
--- a/mcs/tests/test-792.cs
+++ b/mcs/tests/test-792.cs
@@ -11,6 +11,12 @@ class Program
 		var s = new MultipleSameNames ();
 		s.AA = "1";
 	}
+	
+	void Test2 (IMemberDelayed md)
+	{
+		md.Working ();
+		var t = typeof (IMemberDelayed);
+	}
 
 	static void Main ()
 	{
diff --git a/mcs/tests/test-801.cs b/mcs/tests/test-801.cs
new file mode 100644
index 0000000..0c20484
--- /dev/null
+++ b/mcs/tests/test-801.cs
@@ -0,0 +1,56 @@
+using System;
+
+class C
+{
+	public enum E
+	{
+		V_0 = 10,
+		V_1	= 50,
+		V_2 = 80
+	}
+	
+	public static implicit operator E (C x)
+	{
+		return E.V_2;
+	}
+
+	public static implicit operator int (C x)
+	{
+		return 1;
+	}
+
+	public static int Main ()
+	{
+		var v = new C ();
+		int i = E.V_1 - v;
+		if (i != -30)
+			return 1;
+		
+		i = v - E.V_1;
+		if (i != 30)
+			return 10;
+		
+		E e = E.V_1 + v;
+		if (e != (E) 51)
+			return 2;
+		
+		e = v + E.V_0;
+		if (e != (E) 11)
+			return 3;
+		
+		bool b = E.V_2 > v;
+		if (b)
+			return 4;
+		
+		int iv = 900;
+		e = iv - E.V_1;
+		if (e != (E)850)
+			return 5;
+		
+		i = v - E.V_1;
+		if (i != (int) 30)
+			return 6;
+
+		return 0;
+	}
+}
diff --git a/mcs/tests/test-802.cs b/mcs/tests/test-802.cs
new file mode 100644
index 0000000..e232e30
--- /dev/null
+++ b/mcs/tests/test-802.cs
@@ -0,0 +1,9 @@
+#pragma warning disable 1591
+public class C
+{
+	public static void Main ()
+	{
+		// only to test tokenizer with eof
+	}
+}
+#pragma warning restore 1591
\ No newline at end of file
diff --git a/mcs/tests/test-803.cs b/mcs/tests/test-803.cs
new file mode 100644
index 0000000..d21ceac
--- /dev/null
+++ b/mcs/tests/test-803.cs
@@ -0,0 +1,17 @@
+using System;
+
+class A
+{
+	public static int Main ()
+	{
+		int a = 1;
+		while (a < 2) {
+			try {}
+			finally {
+				a++;
+			}
+		}
+		
+		return 0;
+	}
+}
\ No newline at end of file
diff --git a/mcs/tests/test-anon-26.cs b/mcs/tests/test-anon-26.cs
new file mode 100644
index 0000000..0c37e3a
--- /dev/null
+++ b/mcs/tests/test-anon-26.cs
@@ -0,0 +1,23 @@
+namespace TestGotoLabels
+{
+	class GotoLabelsTest
+	{
+		public delegate void MyDelegate ();
+
+		public static int Main ()
+		{
+			TestMethod2 (delegate () {
+				goto outLabel;
+			outLabel:
+				return;
+			});
+
+			return 0;
+		}
+
+		public static void TestMethod2 (MyDelegate md)
+		{
+			md.Invoke ();
+		}
+	}
+} 
diff --git a/mcs/tests/test-anon-31.cs b/mcs/tests/test-anon-31.cs
index 9fd5e19..dd32486 100644
--- a/mcs/tests/test-anon-31.cs
+++ b/mcs/tests/test-anon-31.cs
@@ -1,35 +1,17 @@
-// Test case for Bug #75934
-// Checks for duplicate field names
-
 using System;
-using System.Collections;
 using System.Reflection;
 
-class test
-{
-        public IEnumerable testen (int x)
-        {
-                for (int i = 0;i < x; i++)
-                        if (i % 2 == 0) {
-                                int o = i;
-                                yield return o;
-                        } else {
-                                int o = i*2;
-                                yield return o;
-                        }
-        }
-}
+class X {
+	delegate object test (MethodInfo x);
+		
+	static void Main ()
+	{
+		DoCall (delegate(MethodInfo from) {
+                    return from.Invoke (null, new object[] { from });
+                });
+	}
 
-class reflect
-{
-	public static void Main (string [] args)
+	static void DoCall (test t)
 	{
-		Hashtable ht = new Hashtable ();
-		Assembly asm = Assembly.GetAssembly (typeof (test));
-		foreach (Type t in asm.GetTypes ()) {
-			ht.Clear ();
-			foreach (FieldInfo fi in t.GetFields (BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance))
-				ht.Add (fi.Name, fi);
-		}
 	}
 }
diff --git a/mcs/tests/test-anon-35.cs b/mcs/tests/test-anon-35.cs
index 42b6783..4079595 100644
--- a/mcs/tests/test-anon-35.cs
+++ b/mcs/tests/test-anon-35.cs
@@ -1,30 +1,32 @@
-//
-// This was a bug which was triggered because I removed a routine
-// inadvertently.   The routine was restored, and now the scopes
-// are initialized
-//
 using System;
-using System.Collections;
-using System.Reflection;
 
-public class CustomDict {
-	ArrayList data;
-
-	public CustomDict() { 
-		foreach (object o in this)
-			Console.WriteLine (o);
-	}
-
-	public IEnumerator GetEnumerator() {
-		if (data != null)
-			yield return 1;
-	}
-}
-
-public class Tests
+public class ExceptionWithAnonMethod
 {
+	public delegate void EmptyCallback();
+    	static string res;
+	
+	public static int Main()
+	{
+		try {
+			throw new Exception("e is afraid to enter anonymous land");
+		} catch(Exception e) {
+			AnonHandler(delegate {
+				Console.WriteLine(e.Message); 
+				res = e.Message;
+			});
+		}
+		if (res == "e is afraid to enter anonymous land"){
+		    Console.WriteLine ("Test passed");
+		    return 0;
+		}
+		Console.WriteLine ("Test failed");
+		return 1;
+	}
 
-	public static void Main () {
-		new CustomDict ();
+	public static void AnonHandler(EmptyCallback handler)
+	{
+		if(handler != null) {
+			handler();
+		}
 	}
 }
diff --git a/mcs/tests/test-anon-45.cs b/mcs/tests/test-anon-45.cs
index a3e7385..60f0ca1 100644
--- a/mcs/tests/test-anon-45.cs
+++ b/mcs/tests/test-anon-45.cs
@@ -1,17 +1,20 @@
-using System;
-using System.Collections;
+delegate void TestFunc (int val);
 
-public class Test
+class A
 {
-        public static void Main ()
-        {
-                foreach (object o in new Test ())
-                        Console.WriteLine (o);
-        }
+	public A(TestFunc func)
+	{
+		func (0);
+	}
+}
+
+class TestClass
+{
+	static int i = 1;
+	static readonly A a = new A(delegate(int a) { i = a; });
 
-        public IEnumerator GetEnumerator ()
-        {
-		int i = 2;
-		yield return 3;
-        }
+	static int Main ()
+	{
+		return i;
+	}
 }
diff --git a/mcs/tests/test-anon-83.cs b/mcs/tests/test-anon-83.cs
new file mode 100644
index 0000000..879c2c8
--- /dev/null
+++ b/mcs/tests/test-anon-83.cs
@@ -0,0 +1,20 @@
+using System;
+
+public class C
+{
+	public event EventHandler MyDelegate = delegate { };
+
+	internal void DoSomething (bool bValue)
+	{
+		if (!bValue) {
+			// It has to be here to check we are closing correctly top-block
+			return;
+		}
+	}
+	
+	public static void Main ()
+	{
+	}
+}
+
+
diff --git a/mcs/tests/test-480.cs b/mcs/tests/test-anon-97.cs
similarity index 100%
copy from mcs/tests/test-480.cs
copy to mcs/tests/test-anon-97.cs
diff --git a/mcs/tests/test-anon-98.cs b/mcs/tests/test-anon-98.cs
new file mode 100644
index 0000000..7c9d32b
--- /dev/null
+++ b/mcs/tests/test-anon-98.cs
@@ -0,0 +1,15 @@
+using System;
+
+class Foo
+{
+    ~Foo()
+	{
+		int x = 1;
+		Action a = () => Console.WriteLine("{0}", x);
+    }
+	
+    public static void Main ()
+	{
+		new Foo ();
+	}
+}
diff --git a/mcs/tests/test-424.cs b/mcs/tests/test-iter-14.cs
similarity index 100%
copy from mcs/tests/test-424.cs
copy to mcs/tests/test-iter-14.cs
diff --git a/mcs/tests/test-496.cs b/mcs/tests/test-iter-15.cs
similarity index 100%
copy from mcs/tests/test-496.cs
copy to mcs/tests/test-iter-15.cs
diff --git a/mcs/tests/test-629.cs b/mcs/tests/test-iter-16.cs
similarity index 100%
copy from mcs/tests/test-629.cs
copy to mcs/tests/test-iter-16.cs
diff --git a/mcs/tests/test-645.cs b/mcs/tests/test-iter-17.cs
similarity index 100%
copy from mcs/tests/test-645.cs
copy to mcs/tests/test-iter-17.cs
diff --git a/mcs/tests/test-anon-31.cs b/mcs/tests/test-iter-18.cs
similarity index 100%
copy from mcs/tests/test-anon-31.cs
copy to mcs/tests/test-iter-18.cs
diff --git a/mcs/tests/test-anon-45.cs b/mcs/tests/test-iter-19.cs
similarity index 100%
copy from mcs/tests/test-anon-45.cs
copy to mcs/tests/test-iter-19.cs
diff --git a/mcs/tests/test-anon-35.cs b/mcs/tests/test-iter-20.cs
similarity index 100%
copy from mcs/tests/test-anon-35.cs
copy to mcs/tests/test-iter-20.cs
diff --git a/mcs/tests/gtest-165.cs b/mcs/tests/test-iter-21.cs
similarity index 100%
copy from mcs/tests/gtest-165.cs
copy to mcs/tests/test-iter-21.cs
diff --git a/mcs/tests/gtest-078.cs b/mcs/tests/test-iter-22.cs
similarity index 100%
copy from mcs/tests/gtest-078.cs
copy to mcs/tests/test-iter-22.cs
diff --git a/mcs/tests/test-named-05.cs b/mcs/tests/test-named-05.cs
new file mode 100644
index 0000000..361f5ab
--- /dev/null
+++ b/mcs/tests/test-named-05.cs
@@ -0,0 +1,54 @@
+using System;
+
+public class A
+{
+	public virtual int Foo (int i)
+	{
+		return 1;
+	}
+	
+	public virtual int this [int i, string s] {
+		get {
+			return 1;
+		}
+	}
+}
+
+public class B : A
+{
+	public new int Foo (int x)
+	{
+		return 2;
+	}
+	
+	public new int this [int i, string s2] {
+		get {
+			return 2;
+		}
+	}
+}
+
+public class Test
+{
+	public static int Main ()
+	{
+		B p = new B ();
+		if (p.Foo (i : 1) != 1)
+			return 1;
+
+		if (p.Foo (2) != 2)
+			return 2;
+		
+		if (p [i : 1, s : "2"] != 1)
+			return 3;
+		
+		if (p [i : 1, s2 : "2"] != 2)
+			return 4;
+
+		if (p [1, "2"] != 2)
+			return 5;
+		
+		return 0;
+	}
+}
+
diff --git a/mcs/tests/test-named-06.cs b/mcs/tests/test-named-06.cs
new file mode 100644
index 0000000..773d369
--- /dev/null
+++ b/mcs/tests/test-named-06.cs
@@ -0,0 +1,26 @@
+class C
+{
+	public static int Main ()
+	{
+		var d = new C ();
+		if (d.Foo (x: 1, y : 2) != 3)
+			return 1;
+		
+		return 0;
+	}
+
+	public int Foo (int x, long y, string a = "a")
+	{
+		return 1;
+	}
+
+	public int Foo (int x, long y, params string[] args)
+	{
+		return 2;
+	}
+
+	public int Foo (long y, int x)
+	{
+		return 3;
+	}
+}
diff --git a/mcs/tests/test-var-09.cs b/mcs/tests/test-var-09.cs
new file mode 100644
index 0000000..085559b
--- /dev/null
+++ b/mcs/tests/test-var-09.cs
@@ -0,0 +1,12 @@
+using System;
+
+class A
+{
+	public static int Main ()
+	{
+		var list = new A ();
+		var a = list as object;
+		object o = a;
+		return 0;
+	}
+}
\ No newline at end of file
diff --git a/mcs/tests/test-xml-055-ref.xml b/mcs/tests/test-xml-055-ref.xml
new file mode 100644
index 0000000..3d6d59d
--- /dev/null
+++ b/mcs/tests/test-xml-055-ref.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>test-xml-055</name>
+    </assembly>
+    <members>
+        <member name="T:NAnt.Core.Filters.FilterChain">
+            <summary>
+            Represent a chain of NAnt filters that can be applied to a 'Task'.
+            </summary>
+            <remarks>
+                <list type="bullet">
+                    <item>
+                        <description>
+                            <see cref="T:NAnt.Core.Tasks.CopyTask" />
+                        </description>
+                    </item>
+                </list>
+            </remarks>
+        </member>
+        <member name="T:NAnt.Core.Tasks.CopyTask">
+            <summary>
+            Copies a file or set of files to a new file or directory.
+            </summary>
+        </member>
+    </members>
+</doc>
diff --git a/mcs/tests/test-xml-055.cs b/mcs/tests/test-xml-055.cs
new file mode 100644
index 0000000..814802b
--- /dev/null
+++ b/mcs/tests/test-xml-055.cs
@@ -0,0 +1,29 @@
+// Compiler options: -doc:xml-055.xml -warnaserror
+
+namespace NAnt.Core.Filters
+{
+	/// <summary>
+	/// Represent a chain of NAnt filters that can be applied to a 'Task'.
+	/// </summary>
+	/// <remarks>
+	/// <list type="bullet">
+	///   <item>
+	///       <description><see cref="NAnt.Core.Tasks.CopyTask"/></description>
+	///   </item>
+	/// </list>
+	/// </remarks>
+	public class FilterChain
+	{
+		static void Main ()
+		{
+		}
+	}
+}
+
+namespace NAnt.Core.Tasks
+{
+	/// <summary>
+	/// Copies a file or set of files to a new file or directory.
+	/// </summary>
+	public class CopyTask { }
+}
diff --git a/mcs/tests/test-xml-056-ref.xml b/mcs/tests/test-xml-056-ref.xml
new file mode 100644
index 0000000..1dff122
--- /dev/null
+++ b/mcs/tests/test-xml-056-ref.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>test-xml-056</name>
+    </assembly>
+    <members>
+        <member name="T:AAttribute">
+            <summary>
+                <see cref="T:AAttribute" />
+            </summary>
+        </member>
+    </members>
+</doc>
diff --git a/mcs/tests/test-xml-056.cs b/mcs/tests/test-xml-056.cs
new file mode 100644
index 0000000..25d036e
--- /dev/null
+++ b/mcs/tests/test-xml-056.cs
@@ -0,0 +1,14 @@
+// Compiler options: -doc:xml-056.xml
+
+using System;
+
+/// <summary><see cref="AAttribute" /></summary>
+[Obsolete("whatever", true)]
+public class AAttribute : Attribute {
+}
+
+class Demo {
+	static void Main ()
+	{
+	}
+}
diff --git a/mcs/tests/ver-il-dmcs.xml b/mcs/tests/ver-il-dmcs.xml
index 0bb93cc..a0756fc 100644
--- a/mcs/tests/ver-il-dmcs.xml
+++ b/mcs/tests/ver-il-dmcs.xml
@@ -41,7 +41,7 @@
     </type>
     <type name="Test">
       <method name="Int32 Main()">
-        <size>987</size>
+        <size>1053</size>
       </method>
       <method name="Void .ctor()">
         <size>7</size>
@@ -95,7 +95,7 @@
         <size>96</size>
       </method>
       <method name="System.Dynamic.DynamicMetaObject BindGetMember(System.Dynamic.GetMemberBinder)">
-        <size>56</size>
+        <size>53</size>
       </method>
       <method name="System.Dynamic.DynamicMetaObject BindInvoke(System.Dynamic.InvokeBinder, System.Dynamic.DynamicMetaObject[])">
         <size>96</size>
@@ -360,13 +360,13 @@
         <size>158</size>
       </method>
       <method name="Void UnaryIsFalse_3(System.Object, DynamicObjectMock)">
-        <size>157</size>
+        <size>245</size>
       </method>
       <method name="Void UnaryIsTrue_1(System.Object, DynamicObjectMock)">
         <size>129</size>
       </method>
       <method name="Void UnaryIsTrue_2(System.Object, DynamicObjectMock)">
-        <size>158</size>
+        <size>246</size>
       </method>
       <method name="Boolean RunTest(System.Reflection.MethodInfo)">
         <size>130</size>
@@ -503,9 +503,6 @@
       <method name="Void <GetIndex_2>m__2B(System.Dynamic.GetIndexBinder, System.Object[])">
         <size>111</size>
       </method>
-      <method name="Void <GetMember_1>m__2D(System.Dynamic.GetMemberBinder)">
-        <size>66</size>
-      </method>
       <method name="Void <Invoke_1>m__2E(System.Dynamic.InvokeBinder, System.Object[])">
         <size>101</size>
       </method>
@@ -516,142 +513,213 @@
         <size>127</size>
       </method>
       <method name="Void <Invoke_5>m__31(System.Dynamic.InvokeBinder, System.Object[])">
-        <size>127</size>
+        <size>91</size>
       </method>
       <method name="Void <Invoke_5>m__32(System.Object)">
-        <size>1</size>
+        <size>93</size>
+      </method>
+    </type>
+    <type name="AssertDynamicObject+<GetFakeMetaObject>c__AnonStorey0">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Tester+<BinaryAddChecked_2>c__AnonStorey1">
+      <method name="System.Object <>m__A()">
+        <size>91</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Tester+<GetIndex_3>c__AnonStorey2">
+      <method name="Void <>m__2C(System.Dynamic.GetIndexBinder, System.Object[])">
+        <size>92</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Tester+<InvokeMember_2>c__AnonStorey3">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Tester+<InvokeMember_6>c__AnonStorey4">
+      <method name="Void .ctor()">
+        <size>7</size>
       </method>
-      <method name="Void <InvokeMember_1>m__33(System.Dynamic.InvokeMemberBinder, System.Object[])">
+    </type>
+    <type name="Tester+<SetIndex_3>c__AnonStorey5">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Tester">
+      <method name="Void Invoke_6(System.Object, DynamicObjectMock)">
+        <size>124</size>
+      </method>
+      <method name="Void <Invoke_6>m__33(System.Dynamic.InvokeBinder, System.Object[])">
+        <size>92</size>
+      </method>
+      <method name="Void <InvokeMember_1>m__34(System.Dynamic.InvokeMemberBinder, System.Object[])">
         <size>110</size>
       </method>
-      <method name="Void <InvokeMember_3>m__35(System.Dynamic.InvokeMemberBinder, System.Object[])">
+      <method name="Void <InvokeMember_3>m__36(System.Dynamic.InvokeMemberBinder, System.Object[])">
         <size>111</size>
       </method>
-      <method name="Void <InvokeMember_4>m__36(System.Dynamic.InvokeMemberBinder, System.Object[])">
+      <method name="Void <InvokeMember_4>m__37(System.Dynamic.InvokeMemberBinder, System.Object[])">
         <size>110</size>
       </method>
-      <method name="Void <InvokeMember_7>m__38(System.Dynamic.InvokeMemberBinder, System.Object[])">
+      <method name="Void <InvokeMember_7>m__39(System.Dynamic.InvokeMemberBinder, System.Object[])">
         <size>90</size>
       </method>
-      <method name="Void <SetIndex_1>m__39(System.Dynamic.SetIndexBinder, System.Object[], System.Object)">
+    </type>
+    <type name="Tester+<InvokeMember_2>c__AnonStorey3">
+      <method name="Void <>m__35(System.Dynamic.InvokeMemberBinder, System.Object[])">
+        <size>109</size>
+      </method>
+    </type>
+    <type name="Tester+<InvokeMember_6>c__AnonStorey4">
+      <method name="Void <>m__38(System.Dynamic.InvokeMemberBinder, System.Object[])">
+        <size>119</size>
+      </method>
+    </type>
+    <type name="Tester">
+      <method name="Void SetMember_2(System.Object, DynamicObjectMock)">
+        <size>372</size>
+      </method>
+      <method name="System.Object <GetMember_1>m__2D(System.Dynamic.GetMemberBinder)">
+        <size>67</size>
+      </method>
+    </type>
+    <type name="Tester+<SetMember_2>c__AnonStorey6">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Tester">
+      <method name="Void InvokeMember_8(System.Object, DynamicObjectMock)">
+        <size>140</size>
+      </method>
+      <method name="Void <InvokeMember_8>m__3A(System.Dynamic.InvokeMemberBinder, System.Object[])">
+        <size>111</size>
+      </method>
+      <method name="Void <SetIndex_1>m__3B(System.Dynamic.SetIndexBinder, System.Object[], System.Object)">
         <size>124</size>
       </method>
-      <method name="Void <SetIndex_2>m__3A(System.Dynamic.SetIndexBinder, System.Object[], System.Object)">
+      <method name="Void <SetIndex_2>m__3C(System.Dynamic.SetIndexBinder, System.Object[], System.Object)">
         <size>139</size>
       </method>
-      <method name="Void <SetMember_1>m__3C(System.Dynamic.SetMemberBinder, System.Object)">
+      <method name="Void <SetMember_1>m__3E(System.Dynamic.SetMemberBinder, System.Object)">
         <size>101</size>
       </method>
-      <method name="System.Object <UnaryPlus_1>m__3D(System.Dynamic.UnaryOperationBinder)">
+      <method name="Void <SetMember_2>m__40(System.Dynamic.BinaryOperationBinder, System.Object)">
+        <size>68</size>
+      </method>
+      <method name="Void <SetMember_2>m__41(System.Dynamic.SetMemberBinder, System.Object)">
+        <size>76</size>
+      </method>
+      <method name="System.Object <UnaryPlus_1>m__42(System.Dynamic.UnaryOperationBinder)">
         <size>47</size>
       </method>
-      <method name="System.Object <UnaryMinus_1>m__3E(System.Dynamic.UnaryOperationBinder)">
+      <method name="System.Object <UnaryMinus_1>m__43(System.Dynamic.UnaryOperationBinder)">
         <size>47</size>
       </method>
-      <method name="System.Object <UnaryNot_1>m__3F(System.Dynamic.UnaryOperationBinder)">
+      <method name="System.Object <UnaryNot_1>m__44(System.Dynamic.UnaryOperationBinder)">
         <size>47</size>
       </method>
-      <method name="System.Object <UnaryOnesComplement_1>m__40(System.Dynamic.UnaryOperationBinder)">
+      <method name="System.Object <UnaryOnesComplement_1>m__45(System.Dynamic.UnaryOperationBinder)">
         <size>47</size>
       </method>
-      <method name="System.Object <UnaryDecrement_1>m__41(System.Dynamic.UnaryOperationBinder)">
+      <method name="System.Object <UnaryDecrement_1>m__46(System.Dynamic.UnaryOperationBinder)">
         <size>47</size>
       </method>
-      <method name="System.Object <UnaryDecrement_2>m__42(System.Dynamic.UnaryOperationBinder)">
+      <method name="System.Object <UnaryDecrement_2>m__47(System.Dynamic.UnaryOperationBinder)">
         <size>51</size>
       </method>
-      <method name="System.Object <UnaryIncrement_1>m__43(System.Dynamic.UnaryOperationBinder)">
+      <method name="System.Object <UnaryIncrement_1>m__48(System.Dynamic.UnaryOperationBinder)">
         <size>47</size>
       </method>
-      <method name="System.Object <UnaryIncrement_2>m__44(System.Dynamic.UnaryOperationBinder)">
+      <method name="System.Object <UnaryIncrement_2>m__49(System.Dynamic.UnaryOperationBinder)">
         <size>51</size>
       </method>
-      <method name="System.Object <UnaryIsFalse_1>m__45(System.Dynamic.UnaryOperationBinder)">
+      <method name="System.Object <UnaryIsFalse_1>m__4A(System.Dynamic.UnaryOperationBinder)">
         <size>52</size>
       </method>
-      <method name="Void <UnaryIsFalse_1>m__46(System.Dynamic.BinaryOperationBinder, System.Object)">
+      <method name="Void <UnaryIsFalse_1>m__4B(System.Dynamic.BinaryOperationBinder, System.Object)">
         <size>68</size>
       </method>
-      <method name="System.Object <UnaryIsFalse_2>m__47(System.Dynamic.UnaryOperationBinder)">
+      <method name="System.Object <UnaryIsFalse_2>m__4C(System.Dynamic.UnaryOperationBinder)">
         <size>52</size>
       </method>
-      <method name="Void <UnaryIsFalse_2>m__48(System.Dynamic.BinaryOperationBinder, System.Object)">
+      <method name="Void <UnaryIsFalse_2>m__4D(System.Dynamic.BinaryOperationBinder, System.Object)">
         <size>68</size>
       </method>
-      <method name="System.Object <UnaryIsFalse_3>m__49(System.Dynamic.UnaryOperationBinder)">
+      <method name="System.Object <UnaryIsFalse_3>m__4E(System.Dynamic.UnaryOperationBinder)">
         <size>52</size>
       </method>
-      <method name="Void <UnaryIsFalse_3>m__4A(System.Dynamic.BinaryOperationBinder, System.Object)">
+      <method name="Void <UnaryIsFalse_3>m__4F(System.Dynamic.BinaryOperationBinder, System.Object)">
         <size>67</size>
       </method>
-      <method name="System.Object <UnaryIsTrue_1>m__4B(System.Dynamic.UnaryOperationBinder)">
+      <method name="System.Object <UnaryIsTrue_1>m__50(System.Dynamic.UnaryOperationBinder)">
         <size>52</size>
       </method>
-      <method name="System.Object <UnaryIsTrue_2>m__4C(System.Dynamic.UnaryOperationBinder)">
+      <method name="System.Object <UnaryIsTrue_2>m__51(System.Dynamic.UnaryOperationBinder)">
         <size>52</size>
       </method>
-      <method name="Void <UnaryIsTrue_2>m__4D(System.Dynamic.BinaryOperationBinder, System.Object)">
+      <method name="Void <UnaryIsTrue_2>m__52(System.Dynamic.BinaryOperationBinder, System.Object)">
         <size>68</size>
       </method>
-      <method name="Boolean <Main>m__4E(System.Reflection.MethodInfo)">
+      <method name="Boolean <Main>m__55(System.Reflection.MethodInfo)">
         <size>12</size>
       </method>
-      <method name="System.String <Main>m__4F(System.Reflection.MethodInfo)">
-        <size>7</size>
-      </method>
-      <method name="Boolean <Main>m__50(System.Reflection.MethodInfo)">
-        <size>7</size>
-      </method>
-      <method name="Boolean <Main>m__51(Boolean)">
-        <size>5</size>
+    </type>
+    <type name="Tester+<SetIndex_3>c__AnonStorey5">
+      <method name="Void <>m__3D(System.Dynamic.SetIndexBinder, System.Object[], System.Object)">
+        <size>119</size>
       </method>
     </type>
-    <type name="AssertDynamicObject+<GetFakeMetaObject>c__AnonStorey0">
-      <method name="Void .ctor()">
-        <size>7</size>
+    <type name="Tester+<SetMember_2>c__AnonStorey6">
+      <method name="System.Object <>m__3F(System.Dynamic.GetMemberBinder)">
+        <size>72</size>
       </method>
     </type>
-    <type name="Tester+<BinaryAddChecked_2>c__AnonStorey1">
-      <method name="System.Object <>m__A()">
-        <size>91</size>
+    <type name="Tester">
+      <method name="Void BinaryLogicalAnd_1(System.Object, DynamicObjectMock)">
+        <size>116</size>
       </method>
-      <method name="Void .ctor()">
-        <size>7</size>
+      <method name="Void BinaryLogicalOr_1(System.Object, DynamicObjectMock)">
+        <size>117</size>
       </method>
-    </type>
-    <type name="Tester+<GetIndex_3>c__AnonStorey2">
-      <method name="Void <>m__2C(System.Dynamic.GetIndexBinder, System.Object[])">
-        <size>92</size>
+      <method name="Void UnaryIsTrue_3(System.Object, DynamicObjectMock)">
+        <size>248</size>
       </method>
-      <method name="Void .ctor()">
-        <size>7</size>
+      <method name="System.Object <UnaryIsTrue_3>m__53(System.Dynamic.UnaryOperationBinder)">
+        <size>52</size>
       </method>
-    </type>
-    <type name="Tester+<InvokeMember_2>c__AnonStorey3">
-      <method name="Void <>m__34(System.Dynamic.InvokeMemberBinder, System.Object[])">
-        <size>109</size>
+      <method name="Void <UnaryIsTrue_3>m__54(System.Dynamic.BinaryOperationBinder, System.Object)">
+        <size>73</size>
       </method>
-      <method name="Void .ctor()">
+      <method name="System.String <Main>m__56(System.Reflection.MethodInfo)">
         <size>7</size>
       </method>
-    </type>
-    <type name="Tester+<InvokeMember_6>c__AnonStorey4">
-      <method name="Void <>m__37(System.Dynamic.InvokeMemberBinder, System.Object[])">
-        <size>119</size>
-      </method>
-      <method name="Void .ctor()">
+      <method name="Boolean <Main>m__57(System.Reflection.MethodInfo)">
         <size>7</size>
       </method>
+      <method name="Boolean <Main>m__58(Boolean)">
+        <size>5</size>
+      </method>
     </type>
-    <type name="Tester+<SetIndex_3>c__AnonStorey5">
-      <method name="Void <>m__3B(System.Dynamic.SetIndexBinder, System.Object[], System.Object)">
-        <size>119</size>
+    <type name="Tester+<InvokeMember_3>c__DynamicSite32+Container0">
+      <method name="Void Invoke(System.Runtime.CompilerServices.CallSite, System.Object, Int32 ByRef)">
+        <size>0</size>
       </method>
-      <method name="Void .ctor()">
-        <size>7</size>
+      <method name="Void .ctor(Object, IntPtr)">
+        <size>0</size>
       </method>
     </type>
-    <type name="Tester+<InvokeMember_3>c__DynamicSite0+Container0">
+    <type name="Tester+<InvokeMember_4>c__DynamicSite33+Container0">
       <method name="Void Invoke(System.Runtime.CompilerServices.CallSite, System.Object, Int32 ByRef)">
         <size>0</size>
       </method>
@@ -659,8 +727,8 @@
         <size>0</size>
       </method>
     </type>
-    <type name="Tester+<InvokeMember_4>c__DynamicSite0+Container0">
-      <method name="Void Invoke(System.Runtime.CompilerServices.CallSite, System.Object, Int32 ByRef)">
+    <type name="Tester+<InvokeMember_8>c__DynamicSite37+Container0">
+      <method name="Void Invoke(System.Runtime.CompilerServices.CallSite, System.Object, System.Object ByRef)">
         <size>0</size>
       </method>
       <method name="Void .ctor(Object, IntPtr)">
@@ -832,10 +900,10 @@
     </type>
     <type name="Tester">
       <method name="Void add_ev_assign(System.Action)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_ev_assign(System.Action)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void Assert[T](T, T, System.String)">
         <size>78</size>
@@ -850,7 +918,7 @@
         <size>1370</size>
       </method>
       <method name="Void AddNullableTest()">
-        <size>2277</size>
+        <size>2278</size>
       </method>
       <method name="Void AddEnumTest()">
         <size>874</size>
@@ -886,7 +954,7 @@
         <size>670</size>
       </method>
       <method name="Void AndTestNullable()">
-        <size>1807</size>
+        <size>1808</size>
       </method>
       <method name="Void AndAssignedTest()">
         <size>911</size>
@@ -895,13 +963,13 @@
         <size>683</size>
       </method>
       <method name="Void AndAlsoTest()">
-        <size>892</size>
+        <size>1252</size>
       </method>
       <method name="Void DivideTest()">
         <size>927</size>
       </method>
       <method name="Void DivideNullableTest()">
-        <size>2305</size>
+        <size>2306</size>
       </method>
       <method name="Void DivideCheckedTest()">
         <size>1</size>
@@ -913,7 +981,7 @@
         <size>1</size>
       </method>
       <method name="Void ConvertImplicitTest()">
-        <size>1331</size>
+        <size>1265</size>
       </method>
       <method name="Int32 ConvertImplicitReturnTest()">
         <size>75</size>
@@ -934,7 +1002,7 @@
         <size>1941</size>
       </method>
       <method name="Void EqualNullableTest()">
-        <size>3032</size>
+        <size>3033</size>
       </method>
       <method name="Void EqualEnumTest()">
         <size>1047</size>
@@ -949,7 +1017,7 @@
         <size>1546</size>
       </method>
       <method name="Void ExclusiveOrNullableTest()">
-        <size>1815</size>
+        <size>1816</size>
       </method>
       <method name="Void ExclusiveOrTestEnum()">
         <size>692</size>
@@ -964,7 +1032,7 @@
         <size>1983</size>
       </method>
       <method name="Void GreaterThanNullableTest()">
-        <size>2405</size>
+        <size>2406</size>
       </method>
       <method name="Void GreaterThanEnumTest()">
         <size>1047</size>
@@ -973,7 +1041,7 @@
         <size>1983</size>
       </method>
       <method name="Void GreaterThanEqualNullableTest()">
-        <size>2405</size>
+        <size>2406</size>
       </method>
       <method name="Void GreaterThanEqualEnumTest()">
         <size>1047</size>
@@ -994,7 +1062,7 @@
         <size>1983</size>
       </method>
       <method name="Void LessThanNullableTest()">
-        <size>2419</size>
+        <size>2420</size>
       </method>
       <method name="Void LessThanEnumTest()">
         <size>1047</size>
@@ -1003,7 +1071,7 @@
         <size>1983</size>
       </method>
       <method name="Void LessThanOrEqualNullableTest()">
-        <size>2405</size>
+        <size>2406</size>
       </method>
       <method name="Void LessThanOrEqualEnumTest()">
         <size>1047</size>
@@ -1012,7 +1080,7 @@
         <size>923</size>
       </method>
       <method name="Void ModuloNullableTest()">
-        <size>2293</size>
+        <size>2294</size>
       </method>
       <method name="Void ModuloAssignTest()">
         <size>1137</size>
@@ -1021,7 +1089,7 @@
         <size>1167</size>
       </method>
       <method name="Void MultiplyNullableTest()">
-        <size>2293</size>
+        <size>2294</size>
       </method>
       <method name="Void MultiplyCheckedTest()">
         <size>343</size>
@@ -1048,7 +1116,7 @@
         <size>1945</size>
       </method>
       <method name="Void NotEqualNullableTest()">
-        <size>3032</size>
+        <size>3033</size>
       </method>
       <method name="Void NotEqualEnumTest()">
         <size>1047</size>
@@ -1069,7 +1137,7 @@
         <size>674</size>
       </method>
       <method name="Void OrTestNullable()">
-        <size>1591</size>
+        <size>1592</size>
       </method>
       <method name="Void OrAssignedTest()">
         <size>911</size>
@@ -1078,7 +1146,7 @@
         <size>685</size>
       </method>
       <method name="Void OrElseTest()">
-        <size>896</size>
+        <size>1257</size>
       </method>
       <method name="Void RightShiftTest()">
         <size>1152</size>
@@ -1096,7 +1164,7 @@
         <size>1132</size>
       </method>
       <method name="Void SubtractNullableTest()">
-        <size>2288</size>
+        <size>2289</size>
       </method>
       <method name="Void SubtractEnumTest()">
         <size>896</size>
@@ -1209,7 +1277,7 @@
         <size>26</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>147</size>
+        <size>145</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -1370,10 +1438,10 @@
     </type>
     <type name="Tester">
       <method name="Void add_e(System.Func`1[System.Int32])">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_e(System.Func`1[System.Int32])">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void Assert[T](T, T, System.String)">
         <size>78</size>
@@ -1397,7 +1465,7 @@
         <size>231</size>
       </method>
       <method name="Void IsEvent()">
-        <size>1999</size>
+        <size>2673</size>
       </method>
       <method name="Void MemberGetTest()">
         <size>810</size>
@@ -1406,7 +1474,7 @@
         <size>36</size>
       </method>
       <method name="Void MemberSetTest()">
-        <size>2971</size>
+        <size>2964</size>
       </method>
       <method name="Void MemberSetError_Null()">
         <size>36</size>
@@ -1430,11 +1498,6 @@
         <size>7</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
     <type name="Tester+<GetIndexError_Null>c__AnonStorey0">
       <method name="Void <>m__0()">
         <size>91</size>
@@ -1460,10 +1523,10 @@
     </type>
     <type name="EventClass">
       <method name="Void add_OutEvent(System.Func`1[System.Int32])">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_OutEvent(System.Func`1[System.Int32])">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Int32 CallEvent()">
         <size>12</size>
@@ -1523,7 +1586,7 @@
         <size>101</size>
       </method>
     </type>
-    <type name="Tester+<InvokeMember>c__DynamicSite0+Container0">
+    <type name="Tester+<InvokeMember>c__DynamicSite2+Container0">
       <method name="Void Invoke(System.Runtime.CompilerServices.CallSite, System.Object, Int32 ByRef, System.String ByRef)">
         <size>0</size>
       </method>
@@ -1535,7 +1598,7 @@
   <test name="dtest-008.cs">
     <type name="Disposable">
       <method name="Void Dispose()">
-        <size>15</size>
+        <size>13</size>
       </method>
       <method name="Void Test()">
         <size>1</size>
@@ -1546,19 +1609,22 @@
     </type>
     <type name="Test">
       <method name="Boolean ForEachTest()">
-        <size>512</size>
+        <size>404</size>
       </method>
       <method name="Boolean UsingTest()">
-        <size>862</size>
+        <size>585</size>
       </method>
       <method name="Int32 Main()">
-        <size>57</size>
+        <size>71</size>
       </method>
       <method name="Void .ctor()">
         <size>7</size>
       </method>
       <method name="Boolean ForEachTest_2()">
-        <size>300</size>
+        <size>299</size>
+      </method>
+      <method name="Boolean ForEachTest_3()">
+        <size>219</size>
       </method>
     </type>
   </test>
@@ -1589,7 +1655,7 @@
         <size>2</size>
       </method>
       <method name="Int32 Main()">
-        <size>388</size>
+        <size>743</size>
       </method>
       <method name="Void .ctor()">
         <size>7</size>
@@ -1610,12 +1676,18 @@
       <method name="Void test()">
         <size>196</size>
       </method>
-      <method name="Void Main()">
-        <size>11</size>
-      </method>
       <method name="Void .ctor()">
         <size>7</size>
       </method>
+      <method name="Int32 MethodBest(Int16)">
+        <size>2</size>
+      </method>
+      <method name="Int32 MethodBest(System.Object)">
+        <size>2</size>
+      </method>
+      <method name="Int32 Main()">
+        <size>26</size>
+      </method>
     </type>
   </test>
   <test name="dtest-012.cs">
@@ -1727,7 +1799,42 @@
         <size>197</size>
       </method>
       <method name="Int32 Main()">
-        <size>18</size>
+        <size>956</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="C">
+      <method name="Int32 M(System.String, System.String)">
+        <size>2</size>
+      </method>
+      <method name="Int32 M(System.Object ByRef, System.Object ByRef)">
+        <size>5</size>
+      </method>
+    </type>
+    <type name="Program">
+      <method name="Int32 DynParams(Int32, Int32, System.Int32[])">
+        <size>6</size>
+      </method>
+    </type>
+    <type name="D">
+      <method name="Int32 Foo(System.Object)">
+        <size>2</size>
+      </method>
+      <method name="Int32 Foo(System.Object[])">
+        <size>2</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="E">
+      <method name="Int32 Foo(Int32, System.Object)">
+        <size>2</size>
+      </method>
+      <method name="Int32 Foo(Double, System.Object)">
+        <size>2</size>
       </method>
       <method name="Void .ctor()">
         <size>7</size>
@@ -1761,7 +1868,7 @@
     </type>
     <type name="DynamicAssignments">
       <method name="Int32 Main()">
-        <size>102</size>
+        <size>130</size>
       </method>
       <method name="System.Object <Main>m__0(System.Object)">
         <size>2</size>
@@ -1952,12 +2059,46 @@
   <test name="dtest-025.cs">
     <type name="C">
       <method name="Int32 Main()">
-        <size>187</size>
+        <size>340</size>
       </method>
       <method name="Void .ctor()">
         <size>7</size>
       </method>
     </type>
+    <type name="S">
+      <method name="Void SetValue(Int32)">
+        <size>8</size>
+      </method>
+    </type>
+    <type name="C">
+      <method name="Void Method[T](T ByRef)">
+        <size>104</size>
+      </method>
+    </type>
+    <type name="C+<Method>c__DynamicSite0`1+Container0[T]">
+      <method name="Void Invoke(System.Runtime.CompilerServices.CallSite, T ByRef, System.Object)">
+        <size>0</size>
+      </method>
+      <method name="Void .ctor(Object, IntPtr)">
+        <size>0</size>
+      </method>
+    </type>
+    <type name="C+<Main>c__DynamicSite1+Container0">
+      <method name="System.Object Invoke(System.Runtime.CompilerServices.CallSite, Nullable`1 ByRef, System.Object)">
+        <size>0</size>
+      </method>
+      <method name="Void .ctor(Object, IntPtr)">
+        <size>0</size>
+      </method>
+    </type>
+    <type name="C+<Main>c__DynamicSite1+Container1">
+      <method name="Void Invoke(System.Runtime.CompilerServices.CallSite, S ByRef, System.Object)">
+        <size>0</size>
+      </method>
+      <method name="Void .ctor(Object, IntPtr)">
+        <size>0</size>
+      </method>
+    </type>
   </test>
   <test name="dtest-026.cs">
     <type name="C">
@@ -1986,12 +2127,20 @@
     </type>
     <type name="Test">
       <method name="Int32 Main()">
-        <size>194</size>
+        <size>360</size>
       </method>
       <method name="Void .ctor()">
         <size>7</size>
       </method>
     </type>
+    <type name="C">
+      <method name="Int32 M2(System.Object)">
+        <size>2</size>
+      </method>
+      <method name="Int32 M2(Byte)">
+        <size>2</size>
+      </method>
+    </type>
   </test>
   <test name="dtest-028.cs">
     <type name="C">
@@ -2007,7 +2156,7 @@
     </type>
     <type name="Test">
       <method name="Int32 Main()">
-        <size>225</size>
+        <size>236</size>
       </method>
       <method name="Void .ctor()">
         <size>7</size>
@@ -2029,11 +2178,16 @@
         <size>0</size>
       </method>
     </type>
+    <type name="Test">
+      <method name="Void M(System.Object[] ByRef, System.Object[] ByRef)">
+        <size>1</size>
+      </method>
+    </type>
   </test>
   <test name="dtest-029.cs">
     <type name="C">
       <method name="Boolean Test[T,U](T, U)">
-        <size>335</size>
+        <size>423</size>
       </method>
       <method name="Int32 Main()">
         <size>82</size>
@@ -2046,6 +2200,601 @@
       </method>
     </type>
   </test>
+  <test name="dtest-030.cs">
+    <type name="A`1[T]">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="B">
+      <method name="Void M1[T](T)">
+        <size>1</size>
+      </method>
+      <method name="Void M2[T,U](T, U)">
+        <size>1</size>
+      </method>
+      <method name="Void M3[T,U](T, A`1[U])">
+        <size>1</size>
+      </method>
+      <method name="Void M4[T,U](T, IEquatable`1)">
+        <size>1</size>
+      </method>
+      <method name="Void Main()">
+        <size>576</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="dtest-031.cs">
+    <type name="A`1[T]">
+      <method name="U CustomDelegate[U](U ByRef)">
+        <size>25</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Test">
+      <method name="Int32 Main()">
+        <size>7</size>
+      </method>
+      <method name="Void Foo[Z]()">
+        <size>103</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Test+<Foo>c__DynamicSite0`1+Container0[Z]">
+      <method name="Void Invoke(System.Runtime.CompilerServices.CallSite, System.Object, Z ByRef)">
+        <size>0</size>
+      </method>
+      <method name="Void .ctor(Object, IntPtr)">
+        <size>0</size>
+      </method>
+    </type>
+  </test>
+  <test name="dtest-032.cs">
+    <type name="A">
+      <method name="Void .ctor(Int32)">
+        <size>14</size>
+      </method>
+    </type>
+    <type name="B">
+      <method name="Void Foo(Int32, A ByRef)">
+        <size>9</size>
+      </method>
+      <method name="Int32 Main()">
+        <size>140</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="B+<Main>c__DynamicSite0+Container0">
+      <method name="Void Invoke(System.Runtime.CompilerServices.CallSite, System.Type, System.Object, A ByRef)">
+        <size>0</size>
+      </method>
+      <method name="Void .ctor(Object, IntPtr)">
+        <size>0</size>
+      </method>
+    </type>
+  </test>
+  <test name="dtest-033.cs">
+    <type name="Test">
+      <method name="Byte get_Prop()">
+        <size>2</size>
+      </method>
+      <method name="Void set_Prop(Byte)">
+        <size>1</size>
+      </method>
+      <method name="Byte get_Item(Int32)">
+        <size>2</size>
+      </method>
+      <method name="Void set_Item(Int32, Byte)">
+        <size>1</size>
+      </method>
+      <method name="Int32 Main()">
+        <size>3585</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>39</size>
+      </method>
+    </type>
+  </test>
+  <test name="dtest-034.cs">
+    <type name="C">
+      <method name="Void M[U,V](U ByRef, V ByRef)">
+        <size>16</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Test">
+      <method name="Int32 Main()">
+        <size>464</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Test+<Main>c__DynamicSite0+Container0">
+      <method name="Void Invoke(System.Runtime.CompilerServices.CallSite, System.Object, System.Object ByRef, System.Object ByRef)">
+        <size>0</size>
+      </method>
+      <method name="Void .ctor(Object, IntPtr)">
+        <size>0</size>
+      </method>
+    </type>
+  </test>
+  <test name="dtest-035.cs">
+    <type name="Test">
+      <method name="System.Object get_Item(Int32)">
+        <size>7</size>
+      </method>
+      <method name="Void set_Item(Int32, System.Object)">
+        <size>1</size>
+      </method>
+      <method name="System.Object[] get_Prop()">
+        <size>16</size>
+      </method>
+      <method name="Void set_Prop(System.Object[])">
+        <size>1</size>
+      </method>
+      <method name="Int32 get_Prop2()">
+        <size>2</size>
+      </method>
+      <method name="Void set_Prop2(Int32)">
+        <size>1</size>
+      </method>
+      <method name="System.Object get_Prop3()">
+        <size>12</size>
+      </method>
+      <method name="Void set_Prop3(System.Object)">
+        <size>74</size>
+      </method>
+      <method name="Int32 Main()">
+        <size>1181</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>18</size>
+      </method>
+    </type>
+  </test>
+  <test name="dtest-036.cs">
+    <type name="C">
+      <method name="Void add_E(System.Func`2[System.Int32,System.Int32])">
+        <size>47</size>
+      </method>
+      <method name="Void remove_E(System.Func`2[System.Int32,System.Int32])">
+        <size>47</size>
+      </method>
+      <method name="Int32 Main()">
+        <size>314</size>
+      </method>
+      <method name="Int32 Foo(Int32)">
+        <size>3</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="dtest-037.cs">
+    <type name="C">
+      <method name="Int32 Main()">
+        <size>1166</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="dtest-038.cs">
+    <type name="Test">
+      <method name="Void Foo()">
+        <size>1</size>
+      </method>
+      <method name="Int32 Main()">
+        <size>370</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="dtest-039.cs">
+    <type name="A">
+      <method name="System.Object Foo()">
+        <size>2</size>
+      </method>
+      <method name="System.Object[] FooArray()">
+        <size>2</size>
+      </method>
+      <method name="System.Object get_Prop()">
+        <size>8</size>
+      </method>
+      <method name="Void set_Prop(System.Object)">
+        <size>1</size>
+      </method>
+      <method name="System.Object[] get_PropArray()">
+        <size>2</size>
+      </method>
+      <method name="System.Object get_Item(Int32)">
+        <size>7</size>
+      </method>
+      <method name="Void set_Item(Int32, System.Object)">
+        <size>1</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="B">
+      <method name="System.Object Foo()">
+        <size>7</size>
+      </method>
+      <method name="System.Object[] FooArray()">
+        <size>37</size>
+      </method>
+      <method name="Void set_Prop(System.Object)">
+        <size>1</size>
+      </method>
+      <method name="System.Object[] get_PropArray()">
+        <size>27</size>
+      </method>
+      <method name="Void set_Item(Int32, System.Object)">
+        <size>1</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="MainClass">
+      <method name="Void Test()">
+        <size>223</size>
+      </method>
+      <method name="Int32 Main()">
+        <size>512</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="dtest-040.cs">
+    <type name="A">
+      <method name="S`2 Foo[U](U)">
+        <size>10</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="B">
+      <method name="S`2 Foo[T](T)">
+        <size>30</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="MainClass">
+      <method name="Int32 Main()">
+        <size>378</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="dtest-041.cs">
+    <type name="A`1[AA]">
+      <method name="AA Foo[U](U)">
+        <size>10</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="B">
+      <method name="System.Object Foo[T](T)">
+        <size>8</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="MainClass">
+      <method name="Int32 Main()">
+        <size>82</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="dtest-042.cs">
+    <type name="A">
+      <method name="System.Object get_Prop()">
+        <size>2</size>
+      </method>
+      <method name="Void set_Prop(System.Object)">
+        <size>1</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="B">
+      <method name="Void Foo()">
+        <size>1</size>
+      </method>
+      <method name="System.Object get_Prop()">
+        <size>6</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Program">
+      <method name="Void Test()">
+        <size>89</size>
+      </method>
+      <method name="Void Main()">
+        <size>11</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="dtest-043.cs">
+    <type name="A">
+      <method name="Int32 Main()">
+        <size>323</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="dtest-044.cs">
+    <type name="C">
+      <method name="Int32 Test[T,U](T, IComparable`1)">
+        <size>2</size>
+      </method>
+      <method name="Int32 Test_2[T](IList`1, T)">
+        <size>2</size>
+      </method>
+      <method name="Int32 Main()">
+        <size>845</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="dtest-045.cs">
+    <type name="Test">
+      <method name="Int32 Main()">
+        <size>247</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="dtest-046.cs">
+    <type name="Test">
+      <method name="Int32 Main()">
+        <size>1076</size>
+      </method>
+      <method name="Int32 <Main>m__0(Int32)">
+        <size>4</size>
+      </method>
+      <method name="Void <Main>m__1()">
+        <size>11</size>
+      </method>
+      <method name="Int32 <Main>m__2(Int32 ByRef)">
+        <size>6</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Test+D">
+      <method name="Int32 Invoke(Int32 ByRef)">
+        <size>0</size>
+      </method>
+      <method name="IAsyncResult BeginInvoke(Int32 ByRef, System.AsyncCallback, System.Object)">
+        <size>0</size>
+      </method>
+      <method name="Int32 EndInvoke(Int32 ByRef, IAsyncResult)">
+        <size>0</size>
+      </method>
+      <method name="Void .ctor(Object, IntPtr)">
+        <size>0</size>
+      </method>
+    </type>
+    <type name="Test+<Main>c__DynamicSite0+Container0">
+      <method name="System.Object Invoke(System.Runtime.CompilerServices.CallSite, System.Object, Int32 ByRef)">
+        <size>0</size>
+      </method>
+      <method name="Void .ctor(Object, IntPtr)">
+        <size>0</size>
+      </method>
+    </type>
+  </test>
+  <test name="dtest-047.cs">
+    <type name="C`1[T]">
+      <method name="Void add_E(System.Func`2[System.Int32,System.Int32])">
+        <size>47</size>
+      </method>
+      <method name="Void remove_E(System.Func`2[System.Int32,System.Int32])">
+        <size>47</size>
+      </method>
+      <method name="Int32 Test(Int32)">
+        <size>163</size>
+      </method>
+      <method name="Int32 <E>m__0(Int32)">
+        <size>5</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>42</size>
+      </method>
+    </type>
+    <type name="Test">
+      <method name="Int32 Main()">
+        <size>17</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="dtest-048.cs">
+    <type name="A">
+      <method name="Int32 M(System.String, System.Object)">
+        <size>2</size>
+      </method>
+      <method name="Int32 M(System.String, System.Object[])">
+        <size>10</size>
+      </method>
+      <method name="Int32 Main()">
+        <size>319</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="dtest-049.cs">
+    <type name="A">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="A+N">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="B">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="B+N">
+      <method name="Void Test()">
+        <size>1</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="C">
+      <method name="Void Main()">
+        <size>90</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="dtest-050.cs">
+    <type name="C">
+      <method name="Boolean Throw()">
+        <size>11</size>
+      </method>
+      <method name="Boolean Return(Boolean)">
+        <size>2</size>
+      </method>
+      <method name="Int32 Main()">
+        <size>1158</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="S">
+      <method name="Boolean op_True(S)">
+        <size>6</size>
+      </method>
+      <method name="Boolean op_False(S)">
+        <size>2</size>
+      </method>
+      <method name="System.String op_LogicalNot(S)">
+        <size>6</size>
+      </method>
+    </type>
+  </test>
+  <test name="dtest-051.cs">
+    <type name="C">
+      <method name="Int32 get_Item(Int32)">
+        <size>7</size>
+      </method>
+      <method name="Void set_Item(Int32, Int32)">
+        <size>10</size>
+      </method>
+      <method name="Int32 Main()">
+        <size>463</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>14</size>
+      </method>
+    </type>
+  </test>
+  <test name="dtest-052.cs">
+    <type name="A">
+      <method name="Void Method(DynamicReference)">
+        <size>191</size>
+      </method>
+      <method name="Void Main()">
+        <size>1</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="dtest-cls-01.cs">
+    <type name="A">
+      <method name="Void Main()">
+        <size>1</size>
+      </method>
+      <method name="Void CLSCompliantMethod(System.Object[])">
+        <size>1</size>
+      </method>
+      <method name="Void CLSCompliantMethod(IEnumerable`1)">
+        <size>1</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="dtest-collectioninit-01.cs">
+    <type name="Test">
+      <method name="Int32 Main()">
+        <size>475</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Test+Wrap">
+      <method name="System.Object get_Numbers()">
+        <size>7</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>18</size>
+      </method>
+    </type>
+  </test>
   <test name="dtest-error-01.cs">
     <type name="Helper">
       <method name="Int32* Foo(Int32)">
@@ -2060,7 +2809,7 @@
         <size>41</size>
       </method>
       <method name="Void AssertError(System.Action, System.String)">
-        <size>53</size>
+        <size>73</size>
       </method>
       <method name="Boolean RunTest(System.Reflection.MethodInfo)">
         <size>92</size>
@@ -2068,25 +2817,109 @@
       <method name="Int32 Main()">
         <size>179</size>
       </method>
-      <method name="Boolean <Main>m__1(System.Reflection.MethodInfo)">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Tester+<Unsafe_1>c__AnonStorey0">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Tester">
+      <method name="Void NullableConversion()">
+        <size>47</size>
+      </method>
+      <method name="Void Using_1()">
+        <size>40</size>
+      </method>
+      <method name="Void NonInvocable()">
+        <size>40</size>
+      </method>
+      <method name="Void <NonInvocable>m__0()">
+        <size>85</size>
+      </method>
+      <method name="Void <Using_1>m__1()">
+        <size>89</size>
+      </method>
+      <method name="Void <NullableConversion>m__3()">
+        <size>105</size>
+      </method>
+      <method name="Boolean <Main>m__4(System.Reflection.MethodInfo)">
         <size>12</size>
       </method>
-      <method name="System.String <Main>m__2(System.Reflection.MethodInfo)">
+      <method name="System.String <Main>m__5(System.Reflection.MethodInfo)">
         <size>7</size>
       </method>
-      <method name="Boolean <Main>m__3(System.Reflection.MethodInfo)">
+      <method name="Boolean <Main>m__6(System.Reflection.MethodInfo)">
         <size>7</size>
       </method>
-      <method name="Boolean <Main>m__4(Boolean)">
+      <method name="Boolean <Main>m__7(Boolean)">
         <size>5</size>
       </method>
+    </type>
+    <type name="Tester+<Unsafe_1>c__AnonStorey0">
+      <method name="Void <>m__2()">
+        <size>110</size>
+      </method>
+    </type>
+  </test>
+  <test name="dtest-error-02.cs">
+    <type name="A">
+      <method name="System.Object Factory()">
+        <size>6</size>
+      </method>
       <method name="Void .ctor()">
         <size>7</size>
       </method>
     </type>
-    <type name="Tester+<Unsafe_1>c__AnonStorey0">
-      <method name="Void <>m__0()">
-        <size>110</size>
+    <type name="A+N">
+      <method name="Void Foo()">
+        <size>1</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Test">
+      <method name="Int32 Main()">
+        <size>139</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="dtest-etree-01.cs">
+    <type name="C">
+      <method name="Void Conv1(System.Linq.Expressions.Expression`1[System.Func`2[System.Object,System.Object]])">
+        <size>1</size>
+      </method>
+      <method name="Void Conv2(System.Linq.Expressions.Expression`1[System.Func`2[System.Object,System.Object]])">
+        <size>1</size>
+      </method>
+      <method name="Void Main()">
+        <size>382</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="dtest-etree-02.cs">
+    <type name="C">
+      <method name="Void Main()">
+        <size>190</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="dtest-friend-01.cs">
+    <type name="C">
+      <method name="Void Main()">
+        <size>90</size>
       </method>
       <method name="Void .ctor()">
         <size>7</size>
@@ -2171,6 +3004,79 @@
       </method>
     </type>
   </test>
+  <test name="dtest-named-01.cs">
+    <type name="Test">
+      <method name="Void Foo(Int32 ByRef)">
+        <size>4</size>
+      </method>
+      <method name="Int32 Main()">
+        <size>117</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Test+<Main>c__DynamicSite0+Container0">
+      <method name="Void Invoke(System.Runtime.CompilerServices.CallSite, System.Object, Int32 ByRef)">
+        <size>0</size>
+      </method>
+      <method name="Void .ctor(Object, IntPtr)">
+        <size>0</size>
+      </method>
+    </type>
+  </test>
+  <test name="dtest-named-02.cs">
+    <type name="Test">
+      <method name="Int32 M1()">
+        <size>31</size>
+      </method>
+      <method name="Int32 M2()">
+        <size>31</size>
+      </method>
+      <method name="System.Object M3()">
+        <size>36</size>
+      </method>
+      <method name="Int32 Foo(Int32, Int32, Int32)">
+        <size>29</size>
+      </method>
+      <method name="Int32 Main()">
+        <size>219</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="dtest-optional-01.cs">
+    <type name="G`1[T]">
+      <method name="System.Object M1(T)">
+        <size>7</size>
+      </method>
+      <method name="System.Object M2(T)">
+        <size>7</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="C">
+      <method name="System.Object Test(System.Object)">
+        <size>2</size>
+      </method>
+      <method name="Void TestS(S)">
+        <size>1</size>
+      </method>
+      <method name="System.Object TestD(System.Object)">
+        <size>2</size>
+      </method>
+      <method name="Int32 Main()">
+        <size>854</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="gtest-001.cs">
     <type name="Stack`1[type]">
       <method name="Void .ctor()">
@@ -3250,11 +4156,6 @@
         <size>86</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
   </test>
   <test name="gtest-046.cs">
     <type name="Foo`1[T]">
@@ -3262,10 +4163,10 @@
         <size>7</size>
       </method>
       <method name="Void add_MyEvent(Test`1[T])">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_MyEvent(Test`1[T])">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void Hello(T)">
         <size>24</size>
@@ -3676,7 +4577,7 @@
         <size>7</size>
       </method>
       <method name="Void Main(System.String[])">
-        <size>203</size>
+        <size>204</size>
       </method>
     </type>
   </test>
@@ -3820,7 +4721,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>107</size>
+        <size>105</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -4097,10 +4998,10 @@
         <size>7</size>
       </method>
       <method name="Void Main(System.String[])">
-        <size>208</size>
+        <size>209</size>
       </method>
       <method name="Void TestPairLog()">
-        <size>182</size>
+        <size>184</size>
       </method>
     </type>
     <type name="Pair`2[T,U]">
@@ -4225,33 +5126,34 @@
       <method name="Void .ctor()">
         <size>7</size>
       </method>
-      <method name="Void Main()">
-        <size>66</size>
-      </method>
-      <method name="IEnumerator GetEnumerator()">
-        <size>8</size>
-      </method>
     </type>
-    <type name="Test+<GetEnumerator>c__Iterator0">
-      <method name="Void .ctor()">
-        <size>7</size>
+    <type name="S">
+      <method name="Void System.IDisposable.Dispose()">
+        <size>13</size>
       </method>
-      <method name="System.Object System.Collections.IEnumerator.get_Current()">
-        <size>7</size>
+      <method name="Void Dispose()">
+        <size>6</size>
       </method>
-      <method name="Boolean MoveNext()">
-        <size>187</size>
+    </type>
+    <type name="C">
+      <method name="Void System.IDisposable.Dispose()">
+        <size>1</size>
       </method>
       <method name="Void Dispose()">
-        <size>64</size>
-      </method>
-      <method name="Void Reset()">
         <size>6</size>
       </method>
-      <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
+      <method name="Void .ctor()">
         <size>7</size>
       </method>
     </type>
+    <type name="Test">
+      <method name="Int32 Main()">
+        <size>209</size>
+      </method>
+      <method name="Void GenMethod[T](T)">
+        <size>33</size>
+      </method>
+    </type>
   </test>
   <test name="gtest-079.cs">
     <type name="A.ArrayList`1[T]">
@@ -5073,7 +5975,7 @@
         <size>12</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>75</size>
+        <size>73</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -5291,7 +6193,7 @@
         <size>14</size>
       </method>
       <method name="Void Insert(Int32, T)">
-        <size>256</size>
+        <size>255</size>
       </method>
       <method name="Void RemoveAt(Int32)">
         <size>113</size>
@@ -5309,7 +6211,7 @@
         <size>7</size>
       </method>
       <method name="LinkedList`1[T] op_Addition(LinkedList`1[T], LinkedList`1[T])">
-        <size>123</size>
+        <size>120</size>
       </method>
     </type>
     <type name="LinkedList`1+Node[T]">
@@ -5399,11 +6301,6 @@
         <size>17</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
   </test>
   <test name="gtest-116.cs">
     <type name="Slow.Test">
@@ -5419,7 +6316,7 @@
         <size>7</size>
       </method>
       <method name="Void Main(System.String[])">
-        <size>201</size>
+        <size>197</size>
       </method>
     </type>
   </test>
@@ -5737,13 +6634,13 @@
         <size>7</size>
       </method>
       <method name="Void add__changed(A`1+Changed[T])">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove__changed(A`1+Changed[T])">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void Register(A`1+Changed[T])">
-        <size>36</size>
+        <size>20</size>
       </method>
     </type>
     <type name="Test">
@@ -5786,7 +6683,7 @@
         <size>7</size>
       </method>
       <method name="Void Main(System.String[])">
-        <size>120</size>
+        <size>119</size>
       </method>
     </type>
   </test>
@@ -5811,7 +6708,7 @@
         <size>7</size>
       </method>
       <method name="Void Main(System.String[])">
-        <size>846</size>
+        <size>920</size>
       </method>
     </type>
   </test>
@@ -5821,7 +6718,7 @@
         <size>7</size>
       </method>
       <method name="Void Main(System.String[])">
-        <size>1330</size>
+        <size>1332</size>
       </method>
     </type>
   </test>
@@ -5865,7 +6762,7 @@
         <size>7</size>
       </method>
       <method name="Void Main(System.String[])">
-        <size>112</size>
+        <size>113</size>
       </method>
     </type>
     <type name="Foo`1[T]">
@@ -5919,7 +6816,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>134</size>
+        <size>136</size>
       </method>
     </type>
   </test>
@@ -5933,6 +6830,30 @@
       </method>
     </type>
   </test>
+  <test name="gtest-139.cs">
+    <type name="MyStruct">
+      <method name="Int32 op_Inequality(Nullable`1, System.String)">
+        <size>2</size>
+      </method>
+      <method name="Int32 op_Equality(Nullable`1, System.String)">
+        <size>2</size>
+      </method>
+      <method name="Int32 op_Inequality(System.String, Nullable`1)">
+        <size>3</size>
+      </method>
+      <method name="Int32 op_Equality(System.String, Nullable`1)">
+        <size>2</size>
+      </method>
+    </type>
+    <type name="Test">
+      <method name="Int32 Main()">
+        <size>60</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="gtest-140.cs">
     <type name="X">
       <method name="Void .ctor()">
@@ -5988,7 +6909,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>1599</size>
+        <size>2199</size>
       </method>
     </type>
   </test>
@@ -6499,7 +7420,7 @@
         <size>12</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>91</size>
+        <size>89</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -6513,81 +7434,22 @@
     </type>
   </test>
   <test name="gtest-165.cs">
-    <type name="X">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-      <method name="IEnumerable GetIt(System.Int32[])">
-        <size>30</size>
-      </method>
+    <type name="C">
       <method name="Int32 Main()">
-        <size>119</size>
-      </method>
-    </type>
-    <type name="X+A">
-      <method name="Void .ctor(Object, IntPtr)">
-        <size>0</size>
-      </method>
-      <method name="Void Invoke()">
-        <size>0</size>
-      </method>
-      <method name="IAsyncResult BeginInvoke(System.AsyncCallback, System.Object)">
-        <size>0</size>
-      </method>
-      <method name="Void EndInvoke(IAsyncResult)">
-        <size>0</size>
-      </method>
-    </type>
-    <type name="X+<GetIt>c__Iterator0">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-      <method name="System.Object System.Collections.IEnumerator.get_Current()">
-        <size>7</size>
-      </method>
-      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
-        <size>7</size>
-      </method>
-      <method name="Boolean MoveNext()">
-        <size>201</size>
-      </method>
-      <method name="Void <>m__0()">
-        <size>22</size>
-      </method>
-      <method name="Void Dispose()">
-        <size>8</size>
-      </method>
-      <method name="Void Reset()">
-        <size>6</size>
-      </method>
-      <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
-        <size>7</size>
-      </method>
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<object>.GetEnumerator()">
-        <size>40</size>
+        <size>27</size>
       </method>
-    </type>
-    <type name="<PrivateImplementationDetails>">
       <method name="Void .ctor()">
         <size>7</size>
       </method>
     </type>
   </test>
   <test name="gtest-166.cs">
-    <type name="C">
-      <method name="Void .ctor()">
+    <type name="Foo">
+      <method name="Void Main()">
         <size>7</size>
       </method>
-      <method name="Int32 Test()">
-        <size>324</size>
-      </method>
-      <method name="Int32 Main()">
-        <size>6</size>
-      </method>
-    </type>
-    <type name="TestNew">
-      <method name="Void SetTest()">
-        <size>20</size>
+      <method name="Void .ctor()">
+        <size>7</size>
       </method>
     </type>
   </test>
@@ -6958,7 +7820,7 @@
         <size>1</size>
       </method>
       <method name="Int32 Main()">
-        <size>186</size>
+        <size>184</size>
       </method>
     </type>
     <type name="X+<>c__Iterator0">
@@ -6969,7 +7831,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>126</size>
+        <size>124</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -6989,7 +7851,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>145</size>
+        <size>143</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -7061,7 +7923,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>84</size>
+        <size>82</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -7160,13 +8022,13 @@
         <size>11</size>
       </method>
       <method name="Void .ctor(Object[], Object)">
-        <size>217</size>
+        <size>201</size>
       </method>
       <method name="Void add_DoSomething(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_DoSomething(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void Main()">
         <size>21</size>
@@ -7393,7 +8255,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>70</size>
+        <size>68</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -7413,7 +8275,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>82</size>
+        <size>80</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -7433,7 +8295,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>82</size>
+        <size>80</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -7877,7 +8739,7 @@
         <size>12</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>75</size>
+        <size>73</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -8249,7 +9111,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>207</size>
+        <size>205</size>
       </method>
       <method name="Void Dispose()">
         <size>62</size>
@@ -8269,7 +9131,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>118</size>
+        <size>116</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -8577,6 +9439,16 @@
       </method>
     </type>
   </test>
+  <test name="gtest-232.cs">
+    <type name="M">
+      <method name="Int32 Main()">
+        <size>68</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="gtest-233.cs">
     <type name="Program">
       <method name="Void .ctor()">
@@ -9106,11 +9978,6 @@
         <size>1</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
   </test>
   <test name="gtest-252.cs">
     <type name="EqualityComparer`1[T]">
@@ -9228,7 +10095,7 @@
         <size>11</size>
       </method>
       <method name="Void Run()">
-        <size>151</size>
+        <size>147</size>
       </method>
     </type>
     <type name="Test+<GetEnumerator>c__Iterator0">
@@ -9239,7 +10106,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>129</size>
+        <size>127</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -9394,7 +10261,7 @@
         <size>1</size>
       </method>
       <method name="Void Main()">
-        <size>163</size>
+        <size>162</size>
       </method>
       <method name="Void f6(ParamEnum)">
         <size>1</size>
@@ -9426,7 +10293,7 @@
         <size>12</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>80</size>
+        <size>78</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -9983,7 +10850,7 @@
         <size>136</size>
       </method>
       <method name="Int32 Test(System.Type, System.Type[])">
-        <size>434</size>
+        <size>425</size>
       </method>
       <method name="Int32 Test()">
         <size>532</size>
@@ -10097,10 +10964,10 @@
         <size>7</size>
       </method>
       <method name="Void add_Ev1(D)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_Ev1(D)">
-        <size>24</size>
+        <size>47</size>
       </method>
     </type>
     <type name="Consts">
@@ -10116,7 +10983,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>94</size>
+        <size>74</size>
       </method>
     </type>
     <type name="D">
@@ -10140,10 +11007,10 @@
         <size>7</size>
       </method>
       <method name="Void add_TestEvent(GenericEventHandler`2[GenericEventNotUsedTest`1[T],T])">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_TestEvent(GenericEventHandler`2[GenericEventNotUsedTest`1[T],T])">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void RaiseTestEvent(T)">
         <size>14</size>
@@ -10838,7 +11705,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>69</size>
+        <size>67</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -10970,10 +11837,10 @@
         <size>19</size>
       </method>
       <method name="Void add_D(A)">
-        <size>22</size>
+        <size>45</size>
       </method>
       <method name="Void remove_D(A)">
-        <size>22</size>
+        <size>45</size>
       </method>
       <method name="Void C()">
         <size>36</size>
@@ -11004,7 +11871,7 @@
         <size>7</size>
       </method>
       <method name="Void <>m__0()">
-        <size>54</size>
+        <size>39</size>
       </method>
     </type>
     <type name="B+<C>c__AnonStorey1+<C>c__AnonStorey0">
@@ -11103,8 +11970,8 @@
       <method name="Void .ctor()">
         <size>7</size>
       </method>
-      <method name="Void Main()">
-        <size>53</size>
+      <method name="Int32 Main()">
+        <size>91</size>
       </method>
     </type>
   </test>
@@ -11181,15 +12048,9 @@
     </type>
   </test>
   <test name="gtest-333.cs">
-    <type name="Test">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
+    <type name="Program">
       <method name="Void Main()">
-        <size>1</size>
-      </method>
-      <method name="Void Foo(System.Object)">
-        <size>20</size>
+        <size>13</size>
       </method>
     </type>
   </test>
@@ -11729,28 +12590,52 @@
     </type>
   </test>
   <test name="gtest-353.cs">
-    <type name="Bug.RedSkyTimeCode">
+    <type name="A`3[D1,D2,D3]">
+      <method name="Void Foo[T]()">
+        <size>1</size>
+      </method>
       <method name="Void .ctor()">
         <size>7</size>
       </method>
-      <method name="Void CopyTo(Bug.xxx*)">
-        <size>99</size>
+    </type>
+    <type name="B`1[DD2]">
+      <method name="Void .ctor()">
+        <size>7</size>
       </method>
-      <method name="Void Main()">
+    </type>
+    <type name="C">
+      <method name="Void Foo[T]()">
         <size>1</size>
       </method>
-      <method name="Void Convert(Bug.xxx*, UInt64*)">
-        <size>93</size>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Program">
+      <method name="Void Main()">
+        <size>11</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
       </method>
     </type>
   </test>
   <test name="gtest-354.cs">
     <type name="M">
-      <method name="Void .ctor()">
-        <size>7</size>
+      <method name="Void IC.Method(System.Int32[])">
+        <size>1</size>
+      </method>
+      <method name="System.String IA<string>.Method(Int32)">
+        <size>6</size>
+      </method>
+      <method name="Void IB.Method(Int32)">
+        <size>6</size>
       </method>
       <method name="Void Main()">
-        <size>1</size>
+        <size>23</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
       </method>
     </type>
   </test>
@@ -11847,9 +12732,6 @@
       <method name="Void .ctor()">
         <size>7</size>
       </method>
-      <method name="Void Main()">
-        <size>1</size>
-      </method>
     </type>
     <type name="Foo">
       <method name="Boolean op_Equality(Foo, Foo)">
@@ -11859,6 +12741,27 @@
         <size>6</size>
       </method>
     </type>
+    <type name="S2">
+      <method name="Boolean op_Equality(S2, Nullable`1)">
+        <size>6</size>
+      </method>
+      <method name="Boolean op_Inequality(S2, Nullable`1)">
+        <size>6</size>
+      </method>
+    </type>
+    <type name="S3">
+      <method name="Decimal op_Inequality(S3, System.Object)">
+        <size>7</size>
+      </method>
+      <method name="Decimal op_Equality(S3, System.Object)">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Test">
+      <method name="Int32 Main()">
+        <size>97</size>
+      </method>
+    </type>
   </test>
   <test name="gtest-359.cs">
     <type name="BaseGeneric`1[T]">
@@ -12178,11 +13081,6 @@
         <size>86</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
   </test>
   <test name="gtest-372.cs">
     <type name="TestClass`1[T]">
@@ -12234,12 +13132,34 @@
     </type>
   </test>
   <test name="gtest-374.cs">
-    <type name="aClass">
+    <type name="Z">
+      <method name="Z IGenericInterface<Z>.Start()">
+        <size>2</size>
+      </method>
+      <method name="Void Stop()">
+        <size>1</size>
+      </method>
       <method name="Void .ctor()">
         <size>7</size>
       </method>
-      <method name="Void Main(System.String[])">
-        <size>14</size>
+    </type>
+    <type name="A`3[Y,Y2,W]">
+      <method name="Void SomeOperation(W)">
+        <size>28</size>
+      </method>
+      <method name="Void SomeOtherOperation(Y)">
+        <size>28</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Foo">
+      <method name="Int32 Main()">
+        <size>30</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
       </method>
     </type>
   </test>
@@ -12280,7 +13200,7 @@
         <size>26</size>
       </method>
       <method name="Void Main()">
-        <size>98</size>
+        <size>88</size>
       </method>
     </type>
   </test>
@@ -12368,7 +13288,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>106</size>
+        <size>104</size>
       </method>
       <method name="Void Dispose()">
         <size>46</size>
@@ -12549,7 +13469,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>220</size>
+        <size>222</size>
       </method>
     </type>
     <type name="MyType">
@@ -12567,7 +13487,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>168</size>
+        <size>169</size>
       </method>
     </type>
   </test>
@@ -12595,7 +13515,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>234</size>
+        <size>235</size>
       </method>
     </type>
   </test>
@@ -12615,11 +13535,14 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>121</size>
+        <size>194</size>
       </method>
       <method name="Boolean Test_1()">
         <size>36</size>
       </method>
+      <method name="Void Test(System.Object, System.EventArgs)">
+        <size>1</size>
+      </method>
     </type>
   </test>
   <test name="gtest-392.cs">
@@ -12895,10 +13818,10 @@
         <size>7</size>
       </method>
       <method name="Void add_doSomething(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_doSomething(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
     </type>
     <type name="Test.Class2`1[T]">
@@ -13018,11 +13941,6 @@
         <size>7</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
     <type name="ConditionalParsing+Const">
       <method name="Void .ctor()">
         <size>7</size>
@@ -13039,6 +13957,16 @@
         <size>21</size>
       </method>
     </type>
+    <type name="A`1[T]">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="ConditionalParsing">
+      <method name="Void Test_11()">
+        <size>7</size>
+      </method>
+    </type>
   </test>
   <test name="gtest-410.cs">
     <type name="Program">
@@ -13145,38 +14073,61 @@
     </type>
   </test>
   <test name="gtest-415.cs">
-    <type name="S2">
-      <method name="Void Test()">
-        <size>39</size>
+    <type name="Foo">
+      <method name="Int32 Main()">
+        <size>32</size>
       </method>
-      <method name="Void Main()">
-        <size>16</size>
+      <method name="Boolean Bar[T](T)">
+        <size>15</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
       </method>
     </type>
   </test>
   <test name="gtest-416.cs">
-    <type name="Bug.Demo">
-      <method name="Boolean Fixed()">
-        <size>14</size>
+    <type name="Z">
+      <method name="Void .ctor()">
+        <size>7</size>
       </method>
-      <method name="Boolean Foo(System.Int32[])">
-        <size>43</size>
+    </type>
+    <type name="A`2[X,Y]">
+      <method name="X Foo(Y)">
+        <size>17</size>
       </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Foo">
       <method name="Int32 Main()">
-        <size>65</size>
+        <size>26</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
       </method>
     </type>
   </test>
   <test name="gtest-417.cs">
-    <type name="C">
+    <type name="Indirect">
       <method name="Void .ctor()">
         <size>7</size>
       </method>
-      <method name="Void Goo()">
-        <size>11</size>
+    </type>
+    <type name="Base">
+      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
+        <size>12</size>
       </method>
-      <method name="Void Main()">
-        <size>1</size>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="TestCase">
+      <method name="Int32 Main()">
+        <size>125</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
       </method>
     </type>
   </test>
@@ -13249,11 +14200,6 @@
         <size>171</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
   </test>
   <test name="gtest-422.cs">
     <type name="A">
@@ -13283,16 +14229,34 @@
     </type>
   </test>
   <test name="gtest-423.cs">
-    <type name="App">
+    <type name="MonoTest.A`1[TA]">
       <method name="Void .ctor()">
         <size>7</size>
       </method>
-      <method name="Void Main()">
-        <size>33</size>
+    </type>
+    <type name="MonoTest.A`1+B`1[TA,TB]">
+      <method name="Void foo()">
+        <size>1</size>
       </method>
-      <method name="Void Test(System.Object, System.EventArgs)">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="MonoTest.A`1+B`1+C[TA,TB]">
+      <method name="Void bar()">
+        <size>16</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="MonoTest.Program">
+      <method name="Void Main()">
         <size>1</size>
       </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
     </type>
   </test>
   <test name="gtest-424.cs">
@@ -13446,7 +14410,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>173</size>
+        <size>174</size>
       </method>
     </type>
   </test>
@@ -13559,7 +14523,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>258</size>
+        <size>261</size>
       </method>
     </type>
   </test>
@@ -13753,6 +14717,43 @@
       </method>
     </type>
   </test>
+  <test name="gtest-448.cs">
+    <type name="Impl`1[T]">
+      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
+        <size>2</size>
+      </method>
+      <method name="Void Foo[U](IEnumerable`1)">
+        <size>1</size>
+      </method>
+      <method name="IEnumerator`1 GetEnumerator()">
+        <size>2</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="A`1[K]">
+      <method name="Void .ctor()">
+        <size>18</size>
+      </method>
+    </type>
+    <type name="Test`1[TT]">
+      <method name="Void Foo()">
+        <size>24</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="M">
+      <method name="Void Main()">
+        <size>11</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="gtest-449.cs">
     <type name="Program">
       <method name="Void .ctor()">
@@ -13773,6 +14774,34 @@
       </method>
     </type>
   </test>
+  <test name="gtest-451.cs">
+    <type name="Test">
+      <method name="Int32 Main()">
+        <size>18</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-452.cs">
+    <type name="Test">
+      <method name="Int32 Main()">
+        <size>51</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="S">
+      <method name="Single op_Implicit(S)">
+        <size>11</size>
+      </method>
+      <method name="Nullable`1 op_Implicit(S)">
+        <size>11</size>
+      </method>
+    </type>
+  </test>
   <test name="gtest-453.cs">
     <type name="Test.CompilerTest">
       <method name="Void .ctor()">
@@ -15092,7 +16121,7 @@
   <test name="gtest-514.cs">
     <type name="test2.Test`3[T,U,V]">
       <method name="Void Method()">
-        <size>128</size>
+        <size>127</size>
       </method>
       <method name="Void .ctor()">
         <size>7</size>
@@ -15285,10 +16314,10 @@
     </type>
     <type name="E`1+I[T]">
       <method name="Void add_E(D)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_E(D)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void .ctor()">
         <size>7</size>
@@ -15657,6 +16686,386 @@
       </method>
     </type>
   </test>
+  <test name="gtest-536.cs">
+    <type name="Test">
+      <method name="Void Main()">
+        <size>6</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Test+Expression`1[TDelegate]">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Test+Expression">
+      <method name="Void Test()">
+        <size>1</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-537.cs">
+    <type name="Test">
+      <method name="Int32 Main()">
+        <size>86</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="S">
+      <method name="System.String op_BitwiseOr(S, Nullable`1)">
+        <size>6</size>
+      </method>
+      <method name="Nullable`1 op_Addition(S, Nullable`1)">
+        <size>8</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-538.cs">
+    <type name="S">
+      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
+        <size>6</size>
+      </method>
+      <method name="IEnumerator`1 GetEnumerator()">
+        <size>15</size>
+      </method>
+      <method name="Void .ctor(Int32)">
+        <size>1</size>
+      </method>
+    </type>
+    <type name="S2">
+      <method name="IEnumerator`1 GetEnumerator()">
+        <size>15</size>
+      </method>
+    </type>
+    <type name="Enumerator`1[T]">
+      <method name="System.Object System.Collections.IEnumerator.get_Current()">
+        <size>6</size>
+      </method>
+      <method name="T get_Current()">
+        <size>6</size>
+      </method>
+      <method name="Boolean MoveNext()">
+        <size>2</size>
+      </method>
+      <method name="Void Reset()">
+        <size>6</size>
+      </method>
+      <method name="Void Dispose()">
+        <size>13</size>
+      </method>
+    </type>
+    <type name="MySystem">
+      <method name="Int32 Main()">
+        <size>182</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-539.cs">
+    <type name="S">
+      <method name="Int32 get_ID()">
+        <size>7</size>
+      </method>
+      <method name="Void set_ID(Int32)">
+        <size>8</size>
+      </method>
+    </type>
+    <type name="C">
+      <method name="C op_Explicit(S)">
+        <size>11</size>
+      </method>
+      <method name="C op_Explicit(Nullable`1)">
+        <size>39</size>
+      </method>
+      <method name="Void .ctor(Int32)">
+        <size>14</size>
+      </method>
+    </type>
+    <type name="Test">
+      <method name="Int32 Main()">
+        <size>79</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-540.cs">
+    <type name="C">
+      <method name="Int32 Main()">
+        <size>809</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-541.cs">
+    <type name="Foo">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Top`1[S]">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Top`1+Base`1[S,T]">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Top`1+Base`1+Derived`1[S,T,U]">
+      <method name="Void Test()">
+        <size>1</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Test">
+      <method name="Int32 Main()">
+        <size>14</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-542.cs">
+    <type name="A`1[T]">
+      <method name="T getT()">
+        <size>0</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="A`1+B[T]">
+      <method name="A`1+B[T] getT()">
+        <size>2</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="C">
+      <method name="Int32 Main()">
+        <size>22</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-543.cs">
+    <type name="Blah`1[T]">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Blah`1+WrapperWrapper`1[T,N]">
+      <method name="Blah`1+WrapperWrapper`1[T,N] NewWrapperWrapper(Wrapper`1[N])">
+        <size>7</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>12</size>
+      </method>
+      <method name="Void .ctor(Wrapper`1)">
+        <size>14</size>
+      </method>
+    </type>
+    <type name="Wrapper`1[U]">
+      <method name="Void .ctor(U)">
+        <size>7</size>
+      </method>
+      <method name="Void .cctor()">
+        <size>20</size>
+      </method>
+    </type>
+    <type name="C">
+      <method name="Int32 Main()">
+        <size>26</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-544.cs">
+    <type name="A`1[T]">
+      <method name="G Foo[G]()">
+        <size>0</size>
+      </method>
+      <method name="G Foo2[G]()">
+        <size>10</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="B">
+      <method name="G Foo[G]()">
+        <size>6</size>
+      </method>
+      <method name="G Foo2[G]()">
+        <size>7</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="A2`1[T]">
+      <method name="Void Foo[U]()">
+        <size>0</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="B2">
+      <method name="Void Foo[Y]()">
+        <size>1</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Program">
+      <method name="Int32 Main()">
+        <size>51</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-545.cs">
+    <type name="ApplicationContext">
+      <method name="Boolean Foo()">
+        <size>2</size>
+      </method>
+      <method name="Int32 Main()">
+        <size>104</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-546.cs">
+    <type name="Factory">
+      <method name="Factory+S`2[F1,F2] Create[F1,F2](F1, F2)">
+        <size>2</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Factory+S`2[G1,G2]">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="A">
+      <method name="TR Test[T1,T2,TR](T1, T2, System.Func`3[T1,T2,TR])">
+        <size>9</size>
+      </method>
+      <method name="Void Main()">
+        <size>29</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-547.cs">
+    <type name="Foo">
+      <method name="Void GenericLock[T](T)">
+        <size>33</size>
+      </method>
+      <method name="Void Main()">
+        <size>11</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-548.cs">
+    <type name="C">
+      <method name="Int32 Main()">
+        <size>12</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-549.cs">
+    <type name="C`1[T]">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="D">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="D+Impl">
+      <method name="Void MA(Int32)">
+        <size>1</size>
+      </method>
+      <method name="Void MB(Int32)">
+        <size>1</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Test">
+      <method name="Void Main()">
+        <size>21</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-550.cs">
+    <type name="Foo.Magic">
+      <method name="Int32 Main()">
+        <size>12</size>
+      </method>
+    </type>
+    <type name="Foo.Magic`1[T]">
+      <method name="Void Upsample(IUpDown)">
+        <size>8</size>
+      </method>
+    </type>
+    <type name="Foo.Instance">
+      <method name="Int32 get_DestinationDimension()">
+        <size>2</size>
+      </method>
+      <method name="Decimal get_Item(Int32)">
+        <size>6</size>
+      </method>
+      <method name="Void set_Item(Int32, Decimal)">
+        <size>6</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="gtest-anon-1.cs">
     <type name="X">
       <method name="Void .ctor()">
@@ -15718,7 +17127,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>110</size>
+        <size>108</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -16143,6 +17552,30 @@
       </method>
     </type>
   </test>
+  <test name="gtest-anon-20.cs">
+    <type name="C`1[T]">
+      <method name="Void Foo[U](U)">
+        <size>20</size>
+      </method>
+      <method name="Void Run()">
+        <size>1</size>
+      </method>
+      <method name="Void <Foo`1>m__0[U]()">
+        <size>6</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="A">
+      <method name="Void Main()">
+        <size>8</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="gtest-anon-21.cs">
     <type name="BaseObject">
       <method name="Void .ctor()">
@@ -16259,7 +17692,7 @@
         <size>1</size>
       </method>
       <method name="Void Main()">
-        <size>212</size>
+        <size>246</size>
       </method>
     </type>
     <type name="C+D">
@@ -16295,11 +17728,6 @@
         <size>61</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
     <type name="B">
       <method name="Void BaseM()">
         <size>1</size>
@@ -16328,6 +17756,12 @@
       <method name="Void <BaseM>__BaseCallProxy0()">
         <size>7</size>
       </method>
+      <method name="Void Test(System.Action`1[E])">
+        <size>8</size>
+      </method>
+      <method name="Void <Main>m__7(E)">
+        <size>36</size>
+      </method>
     </type>
   </test>
   <test name="gtest-anon-24.cs">
@@ -16371,7 +17805,7 @@
         <size>26</size>
       </method>
       <method name="Int32 Main()">
-        <size>577</size>
+        <size>575</size>
       </method>
     </type>
     <type name="Test+<For>c__AnonStorey0`1[T]">
@@ -16419,7 +17853,7 @@
     </type>
     <type name="Test+<Lock>c__AnonStorey4`1[T]">
       <method name="T <>m__4()">
-        <size>65</size>
+        <size>72</size>
       </method>
       <method name="Void .ctor()">
         <size>7</size>
@@ -16848,7 +18282,7 @@
         <size>33</size>
       </method>
       <method name="System.String Implode[TSource](IEnumerable`1, System.String, System.Action`2[System.Text.StringBuilder,TSource])">
-        <size>128</size>
+        <size>125</size>
       </method>
     </type>
     <type name="Test">
@@ -16965,16 +18399,16 @@
         <size>7</size>
       </method>
       <method name="Void add_handler(Handler`1[T])">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_handler(Handler`1[T])">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void add_Handler(Handler`1[T])">
-        <size>64</size>
+        <size>48</size>
       </method>
       <method name="Void remove_Handler(Handler`1[T])">
-        <size>24</size>
+        <size>8</size>
       </method>
       <method name="Void <add_Handler>m__0(System.Object)">
         <size>18</size>
@@ -17062,11 +18496,6 @@
         <size>7</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
   </test>
   <test name="gtest-anon-39.cs">
     <type name="Test">
@@ -17142,11 +18571,6 @@
         <size>16</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
     <type name="Test+<GetItems>c__Iterator0">
       <method name="Void .ctor()">
         <size>7</size>
@@ -17158,7 +18582,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>69</size>
+        <size>67</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -17534,7 +18958,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>98</size>
+        <size>96</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -17580,7 +19004,7 @@
         <size>7</size>
       </method>
       <method name="Void Invoke(SomeGenericClass`1+SomeHandlerType[SomeType])">
-        <size>1</size>
+        <size>7</size>
       </method>
       <method name="Void FailsToCompile()">
         <size>19</size>
@@ -18041,11 +19465,6 @@
         <size>7</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
     <type name="TestCase+<Test>c__AnonStorey0`1[T]">
       <method name="Void <>m__0()">
         <size>46</size>
@@ -18160,6 +19579,53 @@
       </method>
     </type>
   </test>
+  <test name="gtest-anon-64.cs">
+    <type name="C`1[T]">
+      <method name="Void Foo[U](U)">
+        <size>81</size>
+      </method>
+      <method name="Void Run(T)">
+        <size>1</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="D">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="E">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="A">
+      <method name="Int32 Main()">
+        <size>12</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="C`1+<Foo>c__AnonStorey0`1[T,U]">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="C`1+<Foo>c__AnonStorey1`1[T,U]">
+      <method name="U <>m__0()">
+        <size>12</size>
+      </method>
+      <method name="Void <>m__1()">
+        <size>12</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="gtest-anon-7.cs">
     <type name="MyDisposable">
       <method name="Void .ctor()">
@@ -18197,7 +19663,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>180</size>
+        <size>178</size>
       </method>
       <method name="Void Dispose()">
         <size>66</size>
@@ -18304,7 +19770,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>65</size>
+        <size>63</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -18324,7 +19790,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>98</size>
+        <size>96</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -18350,6 +19816,33 @@
       </method>
     </type>
   </test>
+  <test name="gtest-anon-type-12.cs">
+    <type name="C">
+      <method name="Int32 Main()">
+        <size>23</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="<>__AnonType0`1[<ToString>__T]">
+      <method name="<ToString>__T get_ToString()">
+        <size>7</size>
+      </method>
+      <method name="Boolean Equals(System.Object)">
+        <size>39</size>
+      </method>
+      <method name="Int32 GetHashCode()">
+        <size>63</size>
+      </method>
+      <method name="System.String ToString()">
+        <size>67</size>
+      </method>
+      <method name="Void .ctor(<ToString>__T)">
+        <size>14</size>
+      </method>
+    </type>
+  </test>
   <test name="gtest-anontype-01.cs">
     <type name="Test">
       <method name="Void .ctor()">
@@ -18996,7 +20489,7 @@
         <size>83</size>
       </method>
       <method name="Int32 Main()">
-        <size>534</size>
+        <size>528</size>
       </method>
     </type>
     <type name="Test+Wrap">
@@ -19051,10 +20544,10 @@
         <size>16</size>
       </method>
       <method name="Void add_EventField(System.Func`1[System.Boolean])">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_EventField(System.Func`1[System.Boolean])">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="System.Linq.Expressions.Expression`1[System.Func`1[System.Func`1[System.Boolean]]] GetEvent()">
         <size>33</size>
@@ -19504,7 +20997,7 @@
         <size>162</size>
       </method>
       <method name="Void LeftShiftTest_3()">
-        <size>184</size>
+        <size>169</size>
       </method>
       <method name="Void LeftShiftTest_4()">
         <size>261</size>
@@ -19846,7 +21339,7 @@
         <size>159</size>
       </method>
       <method name="Void RightShiftTest_3()">
-        <size>184</size>
+        <size>169</size>
       </method>
       <method name="Void RightShiftTest_4()">
         <size>258</size>
@@ -20183,13 +21676,6 @@
       <method name="Void NewArrayBoundsTest_4()">
         <size>82</size>
       </method>
-    </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
-    <type name="Tester">
       <method name="Void LeftShiftTest_6()">
         <size>155</size>
       </method>
@@ -20238,6 +21724,18 @@
       <method name="Void EqualTestDelegate_3()">
         <size>212</size>
       </method>
+      <method name="Void DivideTest_7()">
+        <size>185</size>
+      </method>
+      <method name="Void MultiplyTest_8()">
+        <size>198</size>
+      </method>
+      <method name="Void RightShiftTest_6()">
+        <size>145</size>
+      </method>
+      <method name="Void TypeAsTest_4()">
+        <size>113</size>
+      </method>
     </type>
   </test>
   <test name="gtest-etree-02.cs">
@@ -20346,7 +21844,7 @@
         <size>3</size>
       </method>
       <method name="Int32 Main()">
-        <size>519</size>
+        <size>536</size>
       </method>
     </type>
     <type name="EmptyDelegate">
@@ -20377,6 +21875,14 @@
         <size>0</size>
       </method>
     </type>
+    <type name="C">
+      <method name="Void M()">
+        <size>1</size>
+      </method>
+      <method name="Int32 TestInstance()">
+        <size>321</size>
+      </method>
+    </type>
   </test>
   <test name="gtest-etree-08.cs">
     <type name="Foo">
@@ -20405,7 +21911,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>276</size>
+        <size>274</size>
       </method>
       <method name="System.Int64[] GetValues()">
         <size>18</size>
@@ -20416,11 +21922,6 @@
         <size>7</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
   </test>
   <test name="gtest-etree-10.cs">
     <type name="Foo`1[T]">
@@ -20447,11 +21948,6 @@
         <size>7</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
   </test>
   <test name="gtest-etree-11.cs">
     <type name="C">
@@ -20529,7 +22025,7 @@
         <size>40</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>108</size>
+        <size>106</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -20582,7 +22078,7 @@
         <size>52</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>295</size>
+        <size>293</size>
       </method>
       <method name="Void Dispose()">
         <size>62</size>
@@ -20666,7 +22162,7 @@
   <test name="gtest-etree-20.cs">
     <type name="S">
       <method name="Int32 Main()">
-        <size>215</size>
+        <size>216</size>
       </method>
     </type>
     <type name="A">
@@ -20752,6 +22248,63 @@
       </method>
     </type>
   </test>
+  <test name="gtest-etree-25.cs">
+    <type name="Foo">
+      <method name="Void OnBaz(IBaz)">
+        <size>1</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="C">
+      <method name="Void RunOnBaz(System.Action`1[IBaz])">
+        <size>8</size>
+      </method>
+      <method name="Int32 Main()">
+        <size>214</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="C+<Main>c__AnonStorey0">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-etree-26.cs">
+    <type name="A`1[TA]">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="A`1+B`1[TA,TB]">
+      <method name="Void foo()">
+        <size>39</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="A`1+B`1+C`1[TA,TB,TC]">
+      <method name="Void bar()">
+        <size>6</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Program">
+      <method name="Int32 Main()">
+        <size>7</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="gtest-exmethod-01.cs">
     <type name="SimpleTest">
       <method name="System.String Prefix(System.String, System.String)">
@@ -21034,10 +22587,10 @@
         <size>7</size>
       </method>
       <method name="Void add_e(D)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_e(D)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="System.String get_Item(Int32)">
         <size>6</size>
@@ -21494,6 +23047,116 @@
       </method>
     </type>
   </test>
+  <test name="gtest-fixedbuffer-01.cs">
+    <type name="TestNew">
+      <method name="Void SetTest()">
+        <size>20</size>
+      </method>
+    </type>
+    <type name="C">
+      <method name="Int32 Test()">
+        <size>323</size>
+      </method>
+      <method name="Int32 Main()">
+        <size>6</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-fixedbuffer-02.cs">
+    <type name="M">
+      <method name="Void Main()">
+        <size>1</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-fixedbuffer-03.cs">
+    <type name="Bug.RedSkyTimeCode">
+      <method name="Void CopyTo(Bug.xxx*)">
+        <size>99</size>
+      </method>
+      <method name="Void Convert(Bug.xxx*, UInt64*)">
+        <size>93</size>
+      </method>
+      <method name="Void Main()">
+        <size>1</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-fixedbuffer-04.cs">
+    <type name="aClass">
+      <method name="Void Main(System.String[])">
+        <size>14</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-fixedbuffer-05.cs">
+    <type name="S2">
+      <method name="Void Test()">
+        <size>39</size>
+      </method>
+      <method name="Void Main()">
+        <size>16</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-fixedbuffer-06.cs">
+    <type name="Bug.Demo">
+      <method name="Boolean Fixed()">
+        <size>14</size>
+      </method>
+      <method name="Boolean Foo(System.Int32[])">
+        <size>43</size>
+      </method>
+      <method name="Int32 Main()">
+        <size>65</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-fixedbuffer-07.cs">
+    <type name="C">
+      <method name="Void Goo()">
+        <size>11</size>
+      </method>
+      <method name="Void Main()">
+        <size>1</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-fixedbuffer-08.cs">
+    <type name="A">
+      <method name="Int32 Main()">
+        <size>150</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-fixedbuffer-09.cs">
+    <type name="Test">
+      <method name="Int32 Main()">
+        <size>65</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="gtest-friend-01.cs">
     <type name="Test">
       <method name="Void .ctor()">
@@ -21654,11 +23317,6 @@
         <size>296</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
   </test>
   <test name="gtest-implicitarray-02.cs">
     <type name="MyString">
@@ -21678,6 +23336,27 @@
       </method>
     </type>
   </test>
+  <test name="gtest-implicitarray-03.cs">
+    <type name="InferArrayType">
+      <method name="Void foo(System.Func`2[System.Linq.Expressions.Expression,System.Boolean][])">
+        <size>1</size>
+      </method>
+      <method name="Void bar(System.Action`1[System.Linq.Expressions.Expression], System.Func`2[System.Linq.Expressions.Expression,System.Boolean])">
+        <size>44</size>
+      </method>
+      <method name="Void Main()">
+        <size>1</size>
+      </method>
+    </type>
+    <type name="InferArrayType+<bar>c__AnonStorey0">
+      <method name="Boolean <>m__0(System.Linq.Expressions.Expression)">
+        <size>14</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="gtest-initialize-01.cs">
     <type name="MyClass">
       <method name="Void .ctor()">
@@ -21705,7 +23384,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>1243</size>
+        <size>1234</size>
       </method>
     </type>
     <type name="Test+Point">
@@ -21868,11 +23547,6 @@
         <size>53</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
   </test>
   <test name="gtest-initialize-10.cs">
     <type name="Foo">
@@ -21970,7 +23644,7 @@
         <size>12</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>136</size>
+        <size>134</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -22042,7 +23716,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>196</size>
+        <size>194</size>
       </method>
       <method name="Void Dispose()">
         <size>62</size>
@@ -22062,7 +23736,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>224</size>
+        <size>222</size>
       </method>
       <method name="Void Dispose()">
         <size>57</size>
@@ -22169,7 +23843,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>187</size>
+        <size>185</size>
       </method>
       <method name="Void Dispose()">
         <size>62</size>
@@ -22221,7 +23895,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>184</size>
+        <size>181</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -22268,7 +23942,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>187</size>
+        <size>185</size>
       </method>
       <method name="Void Dispose()">
         <size>57</size>
@@ -22307,7 +23981,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>84</size>
+        <size>82</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -22356,7 +24030,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>130</size>
+        <size>128</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -22371,11 +24045,6 @@
         <size>40</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
   </test>
   <test name="gtest-iter-10.cs">
     <type name="Test">
@@ -22406,7 +24075,7 @@
         <size>52</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>103</size>
+        <size>101</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -22457,7 +24126,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>150</size>
+        <size>143</size>
       </method>
     </type>
     <type name="Collection`1+<GetEnumerator>c__Iterator0[T]">
@@ -22471,7 +24140,7 @@
         <size>12</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>176</size>
+        <size>174</size>
       </method>
       <method name="Void Dispose()">
         <size>57</size>
@@ -22507,7 +24176,7 @@
         <size>40</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>117</size>
+        <size>115</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -22554,10 +24223,10 @@
         <size>52</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>205</size>
+        <size>215</size>
       </method>
       <method name="Void Dispose()">
-        <size>64</size>
+        <size>76</size>
       </method>
       <method name="Void Reset()">
         <size>6</size>
@@ -22603,7 +24272,7 @@
         <size>23</size>
       </method>
       <method name="Int32 Main()">
-        <size>133</size>
+        <size>135</size>
       </method>
       <method name="Int32 <get_BaseM>__BaseCallProxy0()">
         <size>7</size>
@@ -22629,7 +24298,7 @@
         <size>40</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>75</size>
+        <size>73</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -22655,7 +24324,7 @@
         <size>40</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>86</size>
+        <size>84</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -22704,7 +24373,7 @@
         <size>40</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>181</size>
+        <size>179</size>
       </method>
       <method name="Void Dispose()">
         <size>62</size>
@@ -22717,6 +24386,197 @@
       </method>
     </type>
   </test>
+  <test name="gtest-iter-16.cs">
+    <type name="Test.Base">
+      <method name="IEnumerable`1 GetStuff(Int32)">
+        <size>23</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Test.Derived">
+      <method name="IEnumerable`1 GetStuff(Int32)">
+        <size>37</size>
+      </method>
+      <method name="IEnumerable`1 <GetStuff>__BaseCallProxy0(Int32)">
+        <size>8</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Test.SpecialDerived">
+      <method name="IEnumerable`1 GetStuff(Int32)">
+        <size>37</size>
+      </method>
+      <method name="Void Main()">
+        <size>61</size>
+      </method>
+      <method name="IEnumerable`1 <GetStuff>__BaseCallProxy0(Int32)">
+        <size>8</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Test.Base+<GetStuff>c__Iterator0">
+      <method name="Test.Base System.Collections.Generic.IEnumerator<Test.Base>.get_Current()">
+        <size>7</size>
+      </method>
+      <method name="System.Object System.Collections.IEnumerator.get_Current()">
+        <size>7</size>
+      </method>
+      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
+        <size>7</size>
+      </method>
+      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<Test.Base>.GetEnumerator()">
+        <size>40</size>
+      </method>
+      <method name="Boolean MoveNext()">
+        <size>68</size>
+      </method>
+      <method name="Void Dispose()">
+        <size>8</size>
+      </method>
+      <method name="Void Reset()">
+        <size>6</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Test.Derived+<GetStuff>c__Iterator1">
+      <method name="Test.Base System.Collections.Generic.IEnumerator<Test.Base>.get_Current()">
+        <size>7</size>
+      </method>
+      <method name="System.Object System.Collections.IEnumerator.get_Current()">
+        <size>7</size>
+      </method>
+      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
+        <size>7</size>
+      </method>
+      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<Test.Base>.GetEnumerator()">
+        <size>52</size>
+      </method>
+      <method name="Boolean MoveNext()">
+        <size>185</size>
+      </method>
+      <method name="Void Dispose()">
+        <size>62</size>
+      </method>
+      <method name="Void Reset()">
+        <size>6</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Test.SpecialDerived+<GetStuff>c__Iterator2">
+      <method name="Test.Base System.Collections.Generic.IEnumerator<Test.Base>.get_Current()">
+        <size>7</size>
+      </method>
+      <method name="System.Object System.Collections.IEnumerator.get_Current()">
+        <size>7</size>
+      </method>
+      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
+        <size>7</size>
+      </method>
+      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<Test.Base>.GetEnumerator()">
+        <size>52</size>
+      </method>
+      <method name="Boolean MoveNext()">
+        <size>185</size>
+      </method>
+      <method name="Void Dispose()">
+        <size>62</size>
+      </method>
+      <method name="Void Reset()">
+        <size>6</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-iter-17.cs">
+    <type name="Test">
+      <method name="IEnumerable`1 TestMethod()">
+        <size>16</size>
+      </method>
+      <method name="Void Main()">
+        <size>1</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Test+<TestMethod>c__Iterator0">
+      <method name="Int32 System.Collections.Generic.IEnumerator<int>.get_Current()">
+        <size>7</size>
+      </method>
+      <method name="System.Object System.Collections.IEnumerator.get_Current()">
+        <size>12</size>
+      </method>
+      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
+        <size>7</size>
+      </method>
+      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<int>.GetEnumerator()">
+        <size>26</size>
+      </method>
+      <method name="Boolean MoveNext()">
+        <size>45</size>
+      </method>
+      <method name="Void Dispose()">
+        <size>8</size>
+      </method>
+      <method name="Void Reset()">
+        <size>6</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-iter-18.cs">
+    <type name="c">
+      <method name="IEnumerable`1 func()">
+        <size>16</size>
+      </method>
+      <method name="Void Main()">
+        <size>53</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="c+<func>c__Iterator0">
+      <method name="Char System.Collections.Generic.IEnumerator<char>.get_Current()">
+        <size>7</size>
+      </method>
+      <method name="System.Object System.Collections.IEnumerator.get_Current()">
+        <size>12</size>
+      </method>
+      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
+        <size>7</size>
+      </method>
+      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<char>.GetEnumerator()">
+        <size>26</size>
+      </method>
+      <method name="Boolean MoveNext()">
+        <size>69</size>
+      </method>
+      <method name="Void Dispose()">
+        <size>8</size>
+      </method>
+      <method name="Void Reset()">
+        <size>6</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="gtest-lambda-01.cs">
     <type name="X">
       <method name="Int32 Main()">
@@ -23404,7 +25264,7 @@
         <size>32</size>
       </method>
       <method name="TR Sum[TA,TR](IEnumerable`1, System.Func`3[TR,TA,TR])">
-        <size>122</size>
+        <size>123</size>
       </method>
     </type>
     <type name="Repro">
@@ -23701,13 +25561,29 @@
       </method>
     </type>
   </test>
+  <test name="gtest-lambda-26.cs">
+    <type name="C">
+      <method name="Void Main()">
+        <size>35</size>
+      </method>
+      <method name="Void Execute(System.Action)">
+        <size>1</size>
+      </method>
+      <method name="Void <Main>m__0()">
+        <size>1</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="gtest-linq-01.cs">
     <type name="from.C">
       <method name="Void .ctor()">
         <size>7</size>
       </method>
       <method name="Void Main()">
-        <size>2205</size>
+        <size>2180</size>
       </method>
       <method name="Void Foo(Int32, Boolean)">
         <size>11</size>
@@ -24036,7 +25912,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>509</size>
+        <size>507</size>
       </method>
       <method name="Int32 <Main>m__0(Int32)">
         <size>2</size>
@@ -24077,15 +25953,8 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>561</size>
-      </method>
-    </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
+        <size>559</size>
       </method>
-    </type>
-    <type name="TestGroupBy">
       <method name="Int32 <Main>m__0(Int32)">
         <size>4</size>
       </method>
@@ -24189,7 +26058,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>410</size>
+        <size>408</size>
       </method>
     </type>
     <type name="<>__AnonType0`2[<i>__T,<u>__T]">
@@ -24259,7 +26128,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>754</size>
+        <size>748</size>
       </method>
     </type>
     <type name="<>__AnonType0`2[<i1>__T,<i2>__T]">
@@ -24406,7 +26275,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>912</size>
+        <size>911</size>
       </method>
     </type>
     <type name="<>__AnonType0`1[<Result>__T]">
@@ -24513,7 +26382,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>729</size>
+        <size>734</size>
       </method>
     </type>
     <type name="<>__AnonType0`2[<a>__T,<ab>__T]">
@@ -24854,7 +26723,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>86</size>
+        <size>84</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -24943,17 +26812,12 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>159</size>
+        <size>157</size>
       </method>
       <method name="Int32 <Main>m__0(Int32)">
         <size>2</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
   </test>
   <test name="gtest-linq-18.cs">
     <type name="C">
@@ -25046,11 +26910,6 @@
         <size>142</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
     <type name="C+<Main>c__AnonStorey0">
       <method name="Void .ctor()">
         <size>7</size>
@@ -25382,7 +27241,7 @@
     </type>
     <type name="OrderByBugExample.Program">
       <method name="Int32 Main()">
-        <size>351</size>
+        <size>345</size>
       </method>
       <method name="System.String <Main>m__0(OrderByBugExample.Foo)">
         <size>7</size>
@@ -25419,6 +27278,90 @@
       </method>
     </type>
   </test>
+  <test name="gtest-linq-25.cs">
+    <type name="A">
+      <method name="System.String get_Header()">
+        <size>2</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="B">
+      <method name="System.String get_Name()">
+        <size>2</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="C">
+      <method name="Int32 Main()">
+        <size>36</size>
+      </method>
+      <method name="Void Test(System.Action)">
+        <size>7</size>
+      </method>
+      <method name="Void <Main>m__0()">
+        <size>159</size>
+      </method>
+      <method name="IEnumerable`1 <Main>m__1(A)">
+        <size>7</size>
+      </method>
+      <method name="<>__AnonType0`2[A,B] <Main>m__2(A, B)">
+        <size>8</size>
+      </method>
+      <method name="Boolean <Main>m__3(<>__AnonType0`2[A,B])">
+        <size>67</size>
+      </method>
+      <method name="<>__AnonType1`2[A,B] <Main>m__4(<>__AnonType0`2[A,B])">
+        <size>18</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="<>__AnonType0`2[<c>__T,<p>__T]">
+      <method name="<c>__T get_c()">
+        <size>7</size>
+      </method>
+      <method name="<p>__T get_p()">
+        <size>7</size>
+      </method>
+      <method name="Boolean Equals(System.Object)">
+        <size>69</size>
+      </method>
+      <method name="Int32 GetHashCode()">
+        <size>86</size>
+      </method>
+      <method name="System.String ToString()">
+        <size>142</size>
+      </method>
+      <method name="Void .ctor(<c>__T, <p>__T)">
+        <size>21</size>
+      </method>
+    </type>
+    <type name="<>__AnonType1`2[<C>__T,<P>__T]">
+      <method name="<C>__T get_C()">
+        <size>7</size>
+      </method>
+      <method name="<P>__T get_P()">
+        <size>7</size>
+      </method>
+      <method name="Boolean Equals(System.Object)">
+        <size>69</size>
+      </method>
+      <method name="Int32 GetHashCode()">
+        <size>86</size>
+      </method>
+      <method name="System.String ToString()">
+        <size>142</size>
+      </method>
+      <method name="Void .ctor(<C>__T, <P>__T)">
+        <size>21</size>
+      </method>
+    </type>
+  </test>
   <test name="gtest-named-01.cs">
     <type name="C">
       <method name="Int32 Test(Int32, Int32, System.String)">
@@ -25465,11 +27408,17 @@
         <size>2</size>
       </method>
       <method name="Int32 Main()">
-        <size>38</size>
+        <size>77</size>
       </method>
       <method name="Void .ctor()">
         <size>7</size>
       </method>
+      <method name="Void set_Item(Int32, Int32, Int32, Int32)">
+        <size>21</size>
+      </method>
+      <method name="Int32 get_Item(Int32, Int32, Int32)">
+        <size>7</size>
+      </method>
     </type>
   </test>
   <test name="gtest-optional-01.cs">
@@ -25500,7 +27449,7 @@
         <size>27</size>
       </method>
       <method name="Int32 Main()">
-        <size>101</size>
+        <size>122</size>
       </method>
       <method name="Void .ctor()">
         <size>7</size>
@@ -25508,6 +27457,9 @@
       <method name="Boolean Test3(Nullable`1)">
         <size>21</size>
       </method>
+      <method name="Int64 Test4(Nullable`1)">
+        <size>8</size>
+      </method>
     </type>
   </test>
   <test name="gtest-optional-03.cs">
@@ -25516,7 +27468,7 @@
         <size>2</size>
       </method>
       <method name="Int32 Main()">
-        <size>225</size>
+        <size>240</size>
       </method>
       <method name="Void .ctor()">
         <size>7</size>
@@ -25535,7 +27487,7 @@
         <size>1</size>
       </method>
       <method name="Void TestStruct(Nullable`1)">
-        <size>1</size>
+        <size>24</size>
       </method>
       <method name="System.String get_Item(Int32, System.String)">
         <size>2</size>
@@ -25544,11 +27496,14 @@
         <size>4</size>
       </method>
       <method name="Int32 Main()">
-        <size>120</size>
+        <size>134</size>
       </method>
       <method name="Void .ctor()">
         <size>7</size>
       </method>
+      <method name="Void TestStruct2(Nullable`1)">
+        <size>1</size>
+      </method>
     </type>
   </test>
   <test name="gtest-optional-05.cs">
@@ -25718,11 +27673,14 @@
         <size>2</size>
       </method>
       <method name="Int32 Main()">
-        <size>76</size>
+        <size>211</size>
       </method>
       <method name="Void .ctor()">
         <size>7</size>
       </method>
+      <method name="Int32 TestD(Int32, Int32)">
+        <size>2</size>
+      </method>
     </type>
   </test>
   <test name="gtest-optional-12.cs">
@@ -25737,7 +27695,74 @@
         <size>7</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
+  </test>
+  <test name="gtest-optional-13.cs">
+    <type name="A">
+      <method name="Int32 Foo(Int32)">
+        <size>2</size>
+      </method>
+      <method name="Int32 Foo2(Int32)">
+        <size>2</size>
+      </method>
+      <method name="Int32 get_Item(System.String, Int32)">
+        <size>2</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="B">
+      <method name="Int32 Foo(Int32)">
+        <size>4</size>
+      </method>
+      <method name="Int32 Foo2(Int32)">
+        <size>3</size>
+      </method>
+      <method name="Int32 get_Item(System.String, Int32)">
+        <size>4</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="C">
+      <method name="Int32 Main()">
+        <size>137</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-optional-14.cs">
+    <type name="A">
+      <method name="Int32 GetValues(System.String[], System.String)">
+        <size>2</size>
+      </method>
+      <method name="Int32 GetValues(System.String, System.String[])">
+        <size>2</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="B">
+      <method name="Int32 Main()">
+        <size>24</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-optional-15.cs">
+    <type name="Program">
+      <method name="Void Test(S)">
+        <size>1</size>
+      </method>
+      <method name="Int32 Main()">
+        <size>63</size>
+      </method>
       <method name="Void .ctor()">
         <size>7</size>
       </method>
@@ -25796,7 +27821,7 @@
         <size>80</size>
       </method>
       <method name="Void Main()">
-        <size>540</size>
+        <size>561</size>
       </method>
       <method name="Void .ctor()">
         <size>7</size>
@@ -25873,13 +27898,13 @@
   <test name="gtest-variance-12.cs">
     <type name="D">
       <method name="Void add_field(D`1[System.String])">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_field(D`1[System.String])">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Int32 Main()">
-        <size>72</size>
+        <size>56</size>
       </method>
       <method name="Void <Main>m__0()">
         <size>1</size>
@@ -26656,7 +28681,7 @@
         <size>7</size>
       </method>
       <method name="Void ExtraTst()">
-        <size>12</size>
+        <size>10</size>
       </method>
     </type>
   </test>
@@ -27537,10 +29562,10 @@
         <size>7</size>
       </method>
       <method name="Void add_Blah(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_Blah(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
     </type>
   </test>
@@ -27782,19 +29807,19 @@
         <size>1</size>
       </method>
       <method name="Void add_Foo(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_Foo(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void add_TestEvent(MyDelegate)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_TestEvent(MyDelegate)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Int32 Test()">
-        <size>166</size>
+        <size>134</size>
       </method>
       <method name="Void callback1(System.Object, System.EventArgs)">
         <size>7</size>
@@ -27811,10 +29836,10 @@
         <size>7</size>
       </method>
       <method name="Void add_BuildStarted(Z+SomeEventHandler)">
-        <size>22</size>
+        <size>45</size>
       </method>
       <method name="Void remove_BuildStarted(Z+SomeEventHandler)">
-        <size>22</size>
+        <size>45</size>
       </method>
       <method name="Int32 a()">
         <size>2</size>
@@ -27828,10 +29853,10 @@
         <size>7</size>
       </method>
       <method name="Void add_Test(System.EventHandler)">
-        <size>22</size>
+        <size>45</size>
       </method>
       <method name="Void remove_Test(System.EventHandler)">
-        <size>22</size>
+        <size>45</size>
       </method>
       <method name="Void Fire()">
         <size>23</size>
@@ -27934,7 +29959,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>99</size>
+        <size>101</size>
       </method>
     </type>
   </test>
@@ -27975,7 +30000,7 @@
         <size>33</size>
       </method>
       <method name="Int32 test5(Single ByRef, Int64)">
-        <size>75</size>
+        <size>73</size>
       </method>
       <method name="Int32 test6(Single ByRef)">
         <size>10</size>
@@ -29162,7 +31187,7 @@
         <size>7</size>
       </method>
       <method name="Void A(System.Collections.Specialized.NameValueCollection, MyClass, System.Object)">
-        <size>65</size>
+        <size>69</size>
       </method>
       <method name="Int32 Main()">
         <size>2</size>
@@ -29476,7 +31501,7 @@
         <size>15</size>
       </method>
       <method name="Void Bug2()">
-        <size>16</size>
+        <size>15</size>
       </method>
       <method name="Int32 Main()">
         <size>2</size>
@@ -29818,11 +31843,6 @@
         <size>91</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
   </test>
   <test name="test-207.cs">
     <type name="X">
@@ -30070,10 +32090,10 @@
         <size>7</size>
       </method>
       <method name="Void add_OnWhatever(OnWhateverDelegate)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_OnWhatever(OnWhateverDelegate)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void CallMyDel(System.String)">
         <size>13</size>
@@ -30201,7 +32221,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Main(System.String[])">
-        <size>140</size>
+        <size>136</size>
       </method>
     </type>
     <type name="MonoBUG.Foo">
@@ -30323,7 +32343,7 @@
         <size>1</size>
       </method>
       <method name="Boolean Test()">
-        <size>110</size>
+        <size>108</size>
       </method>
     </type>
     <type name="Driver">
@@ -30604,11 +32624,6 @@
         <size>38</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
   </test>
   <test name="test-233.cs">
     <type name="Tests">
@@ -31041,16 +33056,16 @@
         <size>7</size>
       </method>
       <method name="Void add_Bar(Foo)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_Bar(Foo)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void m1()">
         <size>1</size>
       </method>
       <method name="Int32 Main()">
-        <size>93</size>
+        <size>61</size>
       </method>
     </type>
     <type name="Foo">
@@ -31121,16 +33136,16 @@
         <size>7</size>
       </method>
       <method name="Void add_e_1(test_delegate)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_e_1(test_delegate)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void add_e_2(test_delegate)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_e_2(test_delegate)">
-        <size>24</size>
+        <size>47</size>
       </method>
     </type>
     <type name="Test_4">
@@ -31317,11 +33332,6 @@
         <size>0</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
   </test>
   <test name="test-260.cs">
     <type name="x.Test">
@@ -31658,36 +33668,54 @@
       <method name="Void .ctor()">
         <size>7</size>
       </method>
-      <method name="Void add_MyEvent(DelType)">
-        <size>24</size>
-      </method>
-      <method name="Void remove_MyEvent(DelType)">
-        <size>24</size>
-      </method>
       <method name="Int32 Main()">
-        <size>176</size>
+        <size>111</size>
       </method>
     </type>
     <type name="DelType">
       <method name="Void .ctor(Object, IntPtr)">
         <size>0</size>
       </method>
-      <method name="Void Invoke()">
+      <method name="IAsyncResult BeginInvoke(System.AsyncCallback, System.Object)">
         <size>0</size>
       </method>
-      <method name="IAsyncResult BeginInvoke(System.AsyncCallback, System.Object)">
+    </type>
+    <type name="S">
+      <method name="Void add_MyEvent(DelType)">
+        <size>47</size>
+      </method>
+      <method name="Void remove_MyEvent(DelType)">
+        <size>47</size>
+      </method>
+    </type>
+    <type name="DelType">
+      <method name="Int32 Invoke()">
         <size>0</size>
       </method>
-      <method name="Void EndInvoke(IAsyncResult)">
+      <method name="Int32 EndInvoke(IAsyncResult)">
         <size>0</size>
       </method>
     </type>
     <type name="S">
-      <method name="Void add_MyEvent(DelType)">
-        <size>24</size>
+      <method name="Void add_MyEventStatic(DelType)">
+        <size>45</size>
       </method>
-      <method name="Void remove_MyEvent(DelType)">
-        <size>24</size>
+      <method name="Void remove_MyEventStatic(DelType)">
+        <size>45</size>
+      </method>
+      <method name="Int32 RunInstance()">
+        <size>12</size>
+      </method>
+      <method name="Int32 RunStatic()">
+        <size>11</size>
+      </method>
+    </type>
+    <type name="Test">
+      <method name="Int32 <Main>m__0()">
+        <size>3</size>
+      </method>
+      <method name="Int32 <Main>m__1()">
+        <size>2</size>
       </method>
     </type>
   </test>
@@ -31697,10 +33725,10 @@
         <size>7</size>
       </method>
       <method name="Void add_Elapsed(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_Elapsed(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
     </type>
     <type name="EntryPoint">
@@ -32060,10 +34088,10 @@
         <size>7</size>
       </method>
       <method name="Void add_FooEvent(EntryPoint+EventHandler)">
-        <size>22</size>
+        <size>45</size>
       </method>
       <method name="Void remove_FooEvent(EntryPoint+EventHandler)">
-        <size>22</size>
+        <size>45</size>
       </method>
       <method name="Void bar_f(System.Object)">
         <size>1</size>
@@ -32186,7 +34214,7 @@
         <size>7</size>
       </method>
       <method name="Void T()">
-        <size>59</size>
+        <size>73</size>
       </method>
     </type>
   </test>
@@ -32239,6 +34267,43 @@
       </method>
     </type>
   </test>
+  <test name="test-298.cs">
+    <type name="A">
+      <method name="Int32 op_Addition(Int16, A)">
+        <size>2</size>
+      </method>
+      <method name="Int32 op_UnaryNegation(A)">
+        <size>2</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="B">
+      <method name="Int32 op_Addition(Int32, B)">
+        <size>2</size>
+      </method>
+      <method name="Int32 op_UnaryNegation(B)">
+        <size>2</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="C">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Test">
+      <method name="Int32 Main()">
+        <size>47</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="test-299.cs">
     <type name="SampleClass">
       <method name="Void .ctor()">
@@ -32322,7 +34387,7 @@
     </type>
     <type name="A+B">
       <method name="Void .ctor()">
-        <size>500</size>
+        <size>499</size>
       </method>
     </type>
     <type name="A+B+C">
@@ -32418,7 +34483,7 @@
     </type>
     <type name="A+B">
       <method name="Void .ctor()">
-        <size>500</size>
+        <size>499</size>
       </method>
     </type>
     <type name="A+B+C">
@@ -32662,7 +34727,7 @@
         <size>1</size>
       </method>
       <method name="Int32 Main()">
-        <size>140</size>
+        <size>138</size>
       </method>
     </type>
   </test>
@@ -33292,11 +35357,6 @@
         <size>269</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
     <type name="FancyInt">
       <method name="Void .ctor(Int32)">
         <size>8</size>
@@ -33415,16 +35475,16 @@
         <size>7</size>
       </method>
       <method name="Void add_y(Y)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_y(Y)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void Main(System.String[])">
         <size>13</size>
       </method>
       <method name="Void Foo()">
-        <size>66</size>
+        <size>50</size>
       </method>
     </type>
     <type name="Y">
@@ -33551,10 +35611,10 @@
         <size>7</size>
       </method>
       <method name="Void add_Ev1(D)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_Ev1(D)">
-        <size>24</size>
+        <size>47</size>
       </method>
     </type>
     <type name="X">
@@ -33565,16 +35625,16 @@
         <size>1</size>
       </method>
       <method name="Void add_Ev1(D)">
-        <size>22</size>
+        <size>45</size>
       </method>
       <method name="Void remove_Ev1(D)">
-        <size>22</size>
+        <size>45</size>
       </method>
       <method name="Void add_Ev2(D)">
-        <size>22</size>
+        <size>45</size>
       </method>
       <method name="Void remove_Ev2(D)">
-        <size>22</size>
+        <size>45</size>
       </method>
     </type>
     <type name="X2">
@@ -33800,7 +35860,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>278</size>
+        <size>276</size>
       </method>
     </type>
     <type name="X">
@@ -33808,11 +35868,6 @@
         <size>35</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
   </test>
   <test name="test-360.cs">
     <type name="Application">
@@ -33904,10 +35959,10 @@
         <size>7</size>
       </method>
       <method name="Void add_MyDelegate(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_MyDelegate(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
     </type>
     <type name="X+Foo">
@@ -34248,7 +36303,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>288</size>
+        <size>268</size>
       </method>
     </type>
   </test>
@@ -35119,16 +37174,34 @@
       </method>
     </type>
   </test>
+  <test name="test-416.cs">
+    <type name="ModTest">
+      <method name="Void Main(System.String[])">
+        <size>20</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="n1.Adder">
+      <method name="Int32 Add(Int32, Int32)">
+        <size>4</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="test-417.cs">
     <type name="blah2.MyClass">
       <method name="Void .ctor()">
         <size>7</size>
       </method>
       <method name="Void add_DoSomething(blah.MyFunnyDelegate)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_DoSomething(blah.MyFunnyDelegate)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void DoSomethingFunny()">
         <size>46</size>
@@ -35138,6 +37211,26 @@
       </method>
     </type>
   </test>
+  <test name="test-418.cs">
+    <type name="M3">
+      <method name="Int32 Main()">
+        <size>144</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>12</size>
+      </method>
+    </type>
+    <type name="M1">
+      <method name="Void .ctor(String)">
+        <size>14</size>
+      </method>
+    </type>
+    <type name="M2">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="test-419.cs">
     <type name="Test">
       <method name="Void .ctor()">
@@ -35191,10 +37284,10 @@
         <size>18</size>
       </method>
       <method name="Int32 i_pre_increment(X)">
-        <size>27</size>
+        <size>26</size>
       </method>
       <method name="Int32 i_post_increment(X)">
-        <size>27</size>
+        <size>26</size>
       </method>
       <method name="Z overload_increment(Z)">
         <size>10</size>
@@ -35293,45 +37386,13 @@
     </type>
   </test>
   <test name="test-424.cs">
-    <type name="XX">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-      <method name="Void Metodo(System.Exception)">
-        <size>37</size>
-      </method>
-      <method name="IEnumerable X()">
-        <size>16</size>
-      </method>
-      <method name="Void Main()">
-        <size>65</size>
+    <type name="C">
+      <method name="Int32 Main()">
+        <size>35</size>
       </method>
-    </type>
-    <type name="XX+<X>c__Iterator0">
       <method name="Void .ctor()">
         <size>7</size>
       </method>
-      <method name="System.Object System.Collections.IEnumerator.get_Current()">
-        <size>7</size>
-      </method>
-      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
-        <size>7</size>
-      </method>
-      <method name="Boolean MoveNext()">
-        <size>105</size>
-      </method>
-      <method name="Void Dispose()">
-        <size>8</size>
-      </method>
-      <method name="Void Reset()">
-        <size>6</size>
-      </method>
-      <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
-        <size>7</size>
-      </method>
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<object>.GetEnumerator()">
-        <size>26</size>
-      </method>
     </type>
   </test>
   <test name="test-425.cs">
@@ -35418,26 +37479,21 @@
         <size>34</size>
       </method>
       <method name="Int32 test_continue(System.Int32[])">
-        <size>57</size>
+        <size>54</size>
       </method>
       <method name="Boolean test_double(System.Double[])">
-        <size>61</size>
+        <size>58</size>
       </method>
       <method name="Int32 test_break(System.Int32[])">
-        <size>57</size>
+        <size>54</size>
       </method>
       <method name="Boolean test_multi(System.Int32[,])">
-        <size>84</size>
+        <size>87</size>
       </method>
       <method name="Int32 Main()">
         <size>284</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
   </test>
   <test name="test-430.cs">
     <type name="A">
@@ -35600,7 +37656,7 @@
         <size>7</size>
       </method>
       <method name="Int32 dob(System.Int32[,])">
-        <size>80</size>
+        <size>83</size>
       </method>
       <method name="Int32 count(System.Object)">
         <size>39</size>
@@ -35773,10 +37829,21 @@
         <size>755</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
+  </test>
+  <test name="test-450.cs">
+    <type name="A">
+      <method name="Int32 Main()">
+        <size>53</size>
+      </method>
+      <method name="Byte op_Implicit(A)">
+        <size>2</size>
+      </method>
+      <method name="A op_Implicit(Int32)">
         <size>7</size>
       </method>
+      <method name="Void .ctor(Int32)">
+        <size>14</size>
+      </method>
     </type>
   </test>
   <test name="test-451.cs">
@@ -35814,6 +37881,21 @@
       </method>
     </type>
   </test>
+  <test name="test-454.cs">
+    <type name="FooAttribute">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Test">
+      <method name="Int32 Main()">
+        <size>247</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="test-455.cs">
     <type name="Test">
       <method name="Void .ctor()">
@@ -36063,22 +38145,42 @@
       </method>
     </type>
   </test>
+  <test name="test-466.cs">
+    <type name="A.X.Test">
+      <method name="Void Main()">
+        <size>13</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="test-467.cs">
-    <type name="ExceptionWithAnonMethod">
+    <type name="A">
       <method name="Void .ctor()">
         <size>7</size>
       </method>
-      <method name="Int32 Main()">
-        <size>96</size>
+    </type>
+    <type name="A+D">
+      <method name="Int32 Invoke()">
+        <size>0</size>
       </method>
-      <method name="Void AnonHandler(ExceptionWithAnonMethod+EmptyCallback)">
-        <size>13</size>
+      <method name="IAsyncResult BeginInvoke(System.AsyncCallback, System.Object)">
+        <size>0</size>
+      </method>
+      <method name="Int32 EndInvoke(IAsyncResult)">
+        <size>0</size>
       </method>
-    </type>
-    <type name="ExceptionWithAnonMethod+EmptyCallback">
       <method name="Void .ctor(Object, IntPtr)">
         <size>0</size>
       </method>
+    </type>
+    <type name="B">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="B+D">
       <method name="Void Invoke()">
         <size>0</size>
       </method>
@@ -36088,14 +38190,20 @@
       <method name="Void EndInvoke(IAsyncResult)">
         <size>0</size>
       </method>
+      <method name="Void .ctor(Object, IntPtr)">
+        <size>0</size>
+      </method>
     </type>
-    <type name="ExceptionWithAnonMethod+<Main>c__AnonStorey0">
+    <type name="C">
+      <method name="Int32 Foo()">
+        <size>2</size>
+      </method>
+      <method name="Int32 Main()">
+        <size>29</size>
+      </method>
       <method name="Void .ctor()">
         <size>7</size>
       </method>
-      <method name="Void <>m__0()">
-        <size>33</size>
-      </method>
     </type>
   </test>
   <test name="test-468.cs">
@@ -36196,17 +38304,17 @@
   </test>
   <test name="test-471.cs">
     <type name="AAttribute">
-      <method name="Void .ctor()">
-        <size>7</size>
+      <method name="Void .ctor(String)">
+        <size>14</size>
       </method>
     </type>
-    <type name="Demo">
+    <type name="MainClass">
+      <method name="Int32 Main()">
+        <size>39</size>
+      </method>
       <method name="Void .ctor()">
         <size>7</size>
       </method>
-      <method name="Void Main()">
-        <size>1</size>
-      </method>
     </type>
   </test>
   <test name="test-472.cs">
@@ -36367,10 +38475,10 @@
         <size>24</size>
       </method>
       <method name="Void add_e(MyDelegate)">
-        <size>22</size>
+        <size>45</size>
       </method>
       <method name="Void remove_e(MyDelegate)">
-        <size>22</size>
+        <size>45</size>
       </method>
       <method name="Void Test(Int32)">
         <size>17</size>
@@ -36459,7 +38567,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>59</size>
+        <size>55</size>
       </method>
       <method name="Void Test_1()">
         <size>1</size>
@@ -36467,50 +38575,40 @@
     </type>
   </test>
   <test name="test-480.cs">
-    <type name="Space">
-      <method name="Void .ctor()">
-        <size>14</size>
+    <type name="A">
+      <method name="Void Dispose()">
+        <size>1</size>
       </method>
-      <method name="Void Leak(Boolean, Int32)">
-        <size>85</size>
+      <method name="Void .ctor(Int32)">
+        <size>7</size>
       </method>
     </type>
-    <type name="Program">
-      <method name="Void .ctor()">
-        <size>7</size>
+    <type name="C">
+      <method name="Void Test(System.Object)">
+        <size>271</size>
       </method>
-      <method name="Void Main(System.String[])">
+      <method name="Int32 Main()">
+        <size>13</size>
+      </method>
+      <method name="Void <Test>m__0(Int32)">
         <size>1</size>
       </method>
-    </type>
-    <type name="Space+DoCopy">
-      <method name="Void .ctor(Object, IntPtr)">
-        <size>0</size>
+      <method name="Void .ctor()">
+        <size>7</size>
       </method>
-      <method name="Void Invoke()">
+    </type>
+    <type name="C+D">
+      <method name="Void Invoke(Int32)">
         <size>0</size>
       </method>
-      <method name="IAsyncResult BeginInvoke(System.AsyncCallback, System.Object)">
+      <method name="IAsyncResult BeginInvoke(Int32, System.AsyncCallback, System.Object)">
         <size>0</size>
       </method>
       <method name="Void EndInvoke(IAsyncResult)">
         <size>0</size>
       </method>
-    </type>
-    <type name="Space+<Leak>c__AnonStorey0">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-      <method name="Void <>m__0()">
-        <size>18</size>
-      </method>
-      <method name="Void <>m__1()">
-        <size>68</size>
-      </method>
-    </type>
-    <type name="Space+<Leak>c__AnonStorey1">
-      <method name="Void .ctor()">
-        <size>7</size>
+      <method name="Void .ctor(Object, IntPtr)">
+        <size>0</size>
       </method>
     </type>
   </test>
@@ -36623,7 +38721,7 @@
         <size>2</size>
       </method>
       <method name="Void Main()">
-        <size>169</size>
+        <size>166</size>
       </method>
     </type>
     <type name="Q">
@@ -36847,39 +38945,13 @@
     </type>
   </test>
   <test name="test-496.cs">
-    <type name="Test">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-      <method name="IEnumerator GetEnumerator()">
-        <size>15</size>
-      </method>
+    <type name="Baz">
       <method name="Void Main()">
-        <size>11</size>
-      </method>
-      <method name="Void Run()">
-        <size>180</size>
+        <size>1</size>
       </method>
-    </type>
-    <type name="Test+<GetEnumerator>c__Iterator0">
       <method name="Void .ctor()">
         <size>7</size>
       </method>
-      <method name="System.Object System.Collections.IEnumerator.get_Current()">
-        <size>7</size>
-      </method>
-      <method name="Boolean MoveNext()">
-        <size>129</size>
-      </method>
-      <method name="Void Dispose()">
-        <size>8</size>
-      </method>
-      <method name="Void Reset()">
-        <size>6</size>
-      </method>
-      <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
-        <size>7</size>
-      </method>
     </type>
   </test>
   <test name="test-497.cs">
@@ -36950,7 +39022,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>117</size>
+        <size>115</size>
       </method>
     </type>
   </test>
@@ -37146,10 +39218,10 @@
         <size>7</size>
       </method>
       <method name="Void add_OnEvent(DelegateHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_OnEvent(DelegateHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
     </type>
     <type name="ExtendingClass">
@@ -37357,7 +39429,7 @@
         <size>6</size>
       </method>
       <method name="Int32 Main()">
-        <size>504</size>
+        <size>501</size>
       </method>
     </type>
   </test>
@@ -37447,7 +39519,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>42</size>
+        <size>110</size>
       </method>
     </type>
   </test>
@@ -37457,7 +39529,7 @@
         <size>7</size>
       </method>
       <method name="Void Finalize()">
-        <size>23</size>
+        <size>36</size>
       </method>
       <method name="Int32 Test1()">
         <size>33</size>
@@ -37469,11 +39541,6 @@
         <size>39</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
   </test>
   <test name="test-526.cs">
     <type name="Test">
@@ -37628,10 +39695,10 @@
   <test name="test-536.cs">
     <type name="Test">
       <method name="Void add_Foo(FooHandler)">
-        <size>22</size>
+        <size>45</size>
       </method>
       <method name="Void remove_Foo(FooHandler)">
-        <size>22</size>
+        <size>45</size>
       </method>
       <method name="Void OnFooTest()">
         <size>1</size>
@@ -37656,7 +39723,7 @@
     </type>
     <type name="Test">
       <method name="Void <Main>m__0()">
-        <size>33</size>
+        <size>18</size>
       </method>
     </type>
   </test>
@@ -37741,6 +39808,16 @@
       </method>
     </type>
   </test>
+  <test name="test-539.cs">
+    <type name="Test">
+      <method name="Int32 Main()">
+        <size>84</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="test-54.cs">
     <type name="X">
       <method name="Void .ctor()">
@@ -37771,7 +39848,7 @@
         <size>1</size>
       </method>
       <method name="Int32 Main()">
-        <size>93</size>
+        <size>89</size>
       </method>
       <method name="Constraint op_LogicalNot(Constraint)">
         <size>2</size>
@@ -37788,26 +39865,21 @@
     </type>
   </test>
   <test name="test-541.cs">
-    <type name="A">
-      <method name="Void .ctor(TestFunc)">
-        <size>14</size>
+    <type name="ClassMain">
+      <method name="Void Main()">
+        <size>31</size>
       </method>
-    </type>
-    <type name="TestClass">
-      <method name="Void .ctor()">
-        <size>7</size>
+      <method name="Void set_test(Boolean)">
+        <size>1</size>
       </method>
-      <method name="Void .cctor()">
-        <size>46</size>
+      <method name="Void <Main>m__0(Int32)">
+        <size>1</size>
       </method>
-      <method name="Int32 Main()">
-        <size>6</size>
+      <method name="Void .ctor()">
+        <size>7</size>
       </method>
     </type>
-    <type name="TestFunc">
-      <method name="Void .ctor(Object, IntPtr)">
-        <size>0</size>
-      </method>
+    <type name="ClassMain+D">
       <method name="Void Invoke(Int32)">
         <size>0</size>
       </method>
@@ -37817,10 +39889,8 @@
       <method name="Void EndInvoke(IAsyncResult)">
         <size>0</size>
       </method>
-    </type>
-    <type name="TestClass">
-      <method name="Void <a>m__0(Int32)">
-        <size>7</size>
+      <method name="Void .ctor(Object, IntPtr)">
+        <size>0</size>
       </method>
     </type>
   </test>
@@ -38085,11 +40155,6 @@
         <size>145</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
   </test>
   <test name="test-555.cs">
     <type name="Test">
@@ -38160,10 +40225,10 @@
         <size>7</size>
       </method>
       <method name="Void add_TestEvent(B+TestDelegate)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_TestEvent(B+TestDelegate)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void Main()">
         <size>1</size>
@@ -38393,10 +40458,10 @@
         <size>7</size>
       </method>
       <method name="Void add_e(preservesig_test.TestClass+D)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_e(preservesig_test.TestClass+D)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Int32 DoFoo()">
         <size>2</size>
@@ -38598,6 +40663,28 @@
       </method>
     </type>
   </test>
+  <test name="test-577.cs">
+    <type name="C">
+      <method name="Void IA.add_e_a(System.EventHandler)">
+        <size>1</size>
+      </method>
+      <method name="Void IA.remove_e_a(System.EventHandler)">
+        <size>1</size>
+      </method>
+      <method name="Void IA.add_e_b(System.EventHandler)">
+        <size>1</size>
+      </method>
+      <method name="Void IA.remove_e_b(System.EventHandler)">
+        <size>1</size>
+      </method>
+      <method name="Void Main()">
+        <size>1</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="test-578.cs">
     <type name="Test1.TestItem1">
       <method name="Void .ctor()">
@@ -38653,35 +40740,13 @@
     </type>
   </test>
   <test name="test-579.cs">
-    <type name="X">
+    <type name="TestCase">
+      <method name="Int32 Main()">
+        <size>32</size>
+      </method>
       <method name="Void .ctor()">
         <size>7</size>
       </method>
-      <method name="Void Main()">
-        <size>35</size>
-      </method>
-      <method name="Void DoCall(X+test)">
-        <size>1</size>
-      </method>
-    </type>
-    <type name="X+test">
-      <method name="Void .ctor(Object, IntPtr)">
-        <size>0</size>
-      </method>
-      <method name="System.Object Invoke(System.Reflection.MethodInfo)">
-        <size>0</size>
-      </method>
-      <method name="IAsyncResult BeginInvoke(System.Reflection.MethodInfo, System.AsyncCallback, System.Object)">
-        <size>0</size>
-      </method>
-      <method name="System.Object EndInvoke(IAsyncResult)">
-        <size>0</size>
-      </method>
-    </type>
-    <type name="X">
-      <method name="System.Object <Main>m__0(System.Reflection.MethodInfo)">
-        <size>18</size>
-      </method>
     </type>
   </test>
   <test name="test-58.cs">
@@ -38703,22 +40768,28 @@
         <size>43</size>
       </method>
       <method name="Void BuildNode(System.String[] ByRef)">
-        <size>56</size>
+        <size>58</size>
       </method>
       <method name="Void BuildNode_B(System.Object ByRef)">
         <size>18</size>
       </method>
       <method name="System.String BuildNode_C(System.String ByRef)">
-        <size>76</size>
+        <size>80</size>
       </method>
       <method name="System.String BuildNode_D()">
-        <size>157</size>
+        <size>160</size>
       </method>
       <method name="Void BuildNode_E(System.String[,] ByRef)">
-        <size>68</size>
+        <size>83</size>
       </method>
       <method name="Int32 Main()">
-        <size>265</size>
+        <size>290</size>
+      </method>
+      <method name="Boolean Test_Object()">
+        <size>160</size>
+      </method>
+      <method name="Boolean Test_Decimal()">
+        <size>128</size>
       </method>
     </type>
   </test>
@@ -38748,7 +40819,7 @@
         <size>40</size>
       </method>
       <method name="Void TestMethod()">
-        <size>71</size>
+        <size>73</size>
       </method>
     </type>
     <type name="M">
@@ -38965,7 +41036,7 @@
         <size>8</size>
       </method>
       <method name="Int32 Do(System.String, System.String, System.String)">
-        <size>334</size>
+        <size>332</size>
       </method>
     </type>
   </test>
@@ -39027,8 +41098,8 @@
       <method name="Void .ctor()">
         <size>7</size>
       </method>
-      <method name="Void Main()">
-        <size>1</size>
+      <method name="Int32 Main()">
+        <size>84</size>
       </method>
     </type>
   </test>
@@ -39584,10 +41655,10 @@
         <size>1</size>
       </method>
       <method name="Void add_Foo(MyDelegate)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_Foo(MyDelegate)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Int32 X.get_Prop()">
         <size>2</size>
@@ -39617,10 +41688,13 @@
         <size>7</size>
       </method>
       <method name="Void ZeroBasedReductions()">
-        <size>18</size>
+        <size>17</size>
       </method>
       <method name="Void Main()">
-        <size>6</size>
+        <size>11</size>
+      </method>
+      <method name="Void ZeroBasedReductionsWithConversion()">
+        <size>15</size>
       </method>
     </type>
   </test>
@@ -39826,40 +41900,16 @@
   </test>
   <test name="test-629.cs">
     <type name="Foo">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-      <method name="IEnumerable foo()">
-        <size>16</size>
-      </method>
-      <method name="Int32 Main()">
-        <size>67</size>
+      <method name="Void Main()">
+        <size>1</size>
       </method>
-    </type>
-    <type name="Foo+<foo>c__Iterator0">
       <method name="Void .ctor()">
         <size>7</size>
       </method>
-      <method name="System.Object System.Collections.IEnumerator.get_Current()">
-        <size>7</size>
-      </method>
-      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
-        <size>7</size>
-      </method>
-      <method name="Boolean MoveNext()">
-        <size>39</size>
-      </method>
-      <method name="Void Dispose()">
-        <size>8</size>
-      </method>
-      <method name="Void Reset()">
-        <size>6</size>
-      </method>
-      <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
-        <size>7</size>
-      </method>
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<object>.GetEnumerator()">
-        <size>26</size>
+    </type>
+    <type name="Foo+Nested">
+      <method name="Int32 get_Bar()">
+        <size>2</size>
       </method>
     </type>
   </test>
@@ -40123,6 +42173,35 @@
       </method>
     </type>
   </test>
+  <test name="test-637.cs">
+    <type name="A">
+      <method name="System.Type get_Value()">
+        <size>7</size>
+      </method>
+      <method name="Void set_Value(System.Type)">
+        <size>8</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+      <method name="Void .ctor(Object)">
+        <size>19</size>
+      </method>
+    </type>
+    <type name="TestProp">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Test">
+      <method name="Int32 Main()">
+        <size>106</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="test-638.cs">
     <type name="Fail">
       <method name="Void .ctor()">
@@ -40284,42 +42363,13 @@
     </type>
   </test>
   <test name="test-645.cs">
-    <type name="Program">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-      <method name="IEnumerable get_Empty()">
-        <size>16</size>
-      </method>
+    <type name="C">
       <method name="Void Main()">
-        <size>61</size>
+        <size>30</size>
       </method>
-    </type>
-    <type name="Program+<>c__Iterator0">
       <method name="Void .ctor()">
         <size>7</size>
       </method>
-      <method name="System.Object System.Collections.IEnumerator.get_Current()">
-        <size>7</size>
-      </method>
-      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
-        <size>7</size>
-      </method>
-      <method name="Boolean MoveNext()">
-        <size>158</size>
-      </method>
-      <method name="Void Dispose()">
-        <size>8</size>
-      </method>
-      <method name="Void Reset()">
-        <size>6</size>
-      </method>
-      <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
-        <size>7</size>
-      </method>
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<object>.GetEnumerator()">
-        <size>26</size>
-      </method>
     </type>
   </test>
   <test name="test-646.cs">
@@ -40496,7 +42546,7 @@
         <size>8</size>
       </method>
       <method name="Int32 Main()">
-        <size>77</size>
+        <size>69</size>
       </method>
     </type>
   </test>
@@ -40898,10 +42948,10 @@
         <size>7</size>
       </method>
       <method name="Void add_E(D)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_E(D)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void Run()">
         <size>12</size>
@@ -40946,16 +42996,6 @@
       </method>
     </type>
   </test>
-  <test name="test-679.cs">
-    <type name="Program">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-      <method name="Int32 Main()">
-        <size>12</size>
-      </method>
-    </type>
-  </test>
   <test name="test-68.cs">
     <type name="Y">
       <method name="Void .ctor()">
@@ -41013,6 +43053,31 @@
       </method>
     </type>
   </test>
+  <test name="test-682.cs">
+    <type name="broken_cast">
+      <method name="Void report(System.String)">
+        <size>7</size>
+      </method>
+      <method name="Void conv_ovf_i(Int64, Boolean)">
+        <size>73</size>
+      </method>
+      <method name="Void conv_ovf_i_un(Int64, Boolean)">
+        <size>73</size>
+      </method>
+      <method name="Void conv_ovf_u(Int64, Boolean)">
+        <size>73</size>
+      </method>
+      <method name="Void conv_ovf_u_un(Int64, Boolean)">
+        <size>73</size>
+      </method>
+      <method name="Int32 Main()">
+        <size>198</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="test-683.cs">
     <type name="broken_cast">
       <method name="Void .ctor()">
@@ -41055,7 +43120,7 @@
         <size>51</size>
       </method>
       <method name="Void Foo()">
-        <size>145</size>
+        <size>148</size>
       </method>
     </type>
   </test>
@@ -41149,7 +43214,7 @@
         <size>23</size>
       </method>
       <method name="Void Main()">
-        <size>127</size>
+        <size>128</size>
       </method>
     </type>
   </test>
@@ -41191,23 +43256,18 @@
   </test>
   <test name="test-695.cs">
     <type name="Program">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-      <method name="Void .cctor()">
-        <size>53</size>
-      </method>
       <method name="Int32 Main()">
         <size>680</size>
       </method>
       <method name="System.String get_BaseDirectory()">
         <size>28</size>
       </method>
-    </type>
-    <type name="<PrivateImplementationDetails>">
       <method name="Void .ctor()">
         <size>7</size>
       </method>
+      <method name="Void .cctor()">
+        <size>53</size>
+      </method>
     </type>
   </test>
   <test name="test-696.cs">
@@ -41400,6 +43460,19 @@
       </method>
     </type>
   </test>
+  <test name="test-702.cs">
+    <type name="S">
+      <method name="Void Main()">
+        <size>9</size>
+      </method>
+      <method name="Void .ctor(Int32)">
+        <size>8</size>
+      </method>
+      <method name="Void .ctor(String, Int32)">
+        <size>15</size>
+      </method>
+    </type>
+  </test>
   <test name="test-703.cs">
     <type name="A">
       <method name="Void .ctor()">
@@ -41420,13 +43493,13 @@
     </type>
     <type name="B">
       <method name="Void .ctor()">
-        <size>65</size>
+        <size>49</size>
       </method>
       <method name="Void add_Finished(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_Finished(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void TestB(System.Object, System.EventArgs)">
         <size>25</size>
@@ -41664,6 +43737,16 @@
       </method>
     </type>
   </test>
+  <test name="test-715.cs">
+    <type name="C">
+      <method name="Int32 Main()">
+        <size>2</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="test-716.cs">
     <type name="SS">
       <method name="Void .cctor()">
@@ -41824,10 +43907,10 @@
         <size>7</size>
       </method>
       <method name="Void add_Example(N.Parent+ExampleHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_Example(N.Parent+ExampleHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void OnExample()">
         <size>23</size>
@@ -41866,6 +43949,22 @@
       </method>
     </type>
   </test>
+  <test name="test-722.cs">
+    <type name="S">
+      <method name="Void set_Prop(Int32)">
+        <size>8</size>
+      </method>
+      <method name="Void M[T](T)">
+        <size>18</size>
+      </method>
+      <method name="Void Main()">
+        <size>60</size>
+      </method>
+      <method name="Void .ctor(Int32)">
+        <size>8</size>
+      </method>
+    </type>
+  </test>
   <test name="test-723.cs">
     <type name="Test">
       <method name="Void .ctor()">
@@ -41908,6 +44007,30 @@
       </method>
     </type>
   </test>
+  <test name="test-725.cs">
+    <type name="D">
+      <method name="Int32 Invoke(Int32 ByRef)">
+        <size>0</size>
+      </method>
+      <method name="IAsyncResult BeginInvoke(Int32 ByRef, System.AsyncCallback, System.Object)">
+        <size>0</size>
+      </method>
+      <method name="Int32 EndInvoke(Int32 ByRef, IAsyncResult)">
+        <size>0</size>
+      </method>
+      <method name="Void .ctor(Object, IntPtr)">
+        <size>0</size>
+      </method>
+    </type>
+    <type name="B">
+      <method name="Int32 Main()">
+        <size>237</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="test-726.cs">
     <type name="CS0102">
       <method name="System.Object IFoo.Clone()">
@@ -41960,7 +44083,7 @@
   <test name="test-729.cs">
     <type name="Primes.MainClass">
       <method name="Int32 Main()">
-        <size>141</size>
+        <size>136</size>
       </method>
       <method name="Void .ctor()">
         <size>7</size>
@@ -42035,7 +44158,18 @@
         <size>7</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
+  </test>
+  <test name="test-732.cs">
+    <type name="C">
+      <method name="Int32 op_Implicit(C, Boolean)">
+        <size>2</size>
+      </method>
+      <method name="Int32 Main()">
+        <size>22</size>
+      </method>
+      <method name="Int32 op_Explicit(C)">
+        <size>2</size>
+      </method>
       <method name="Void .ctor()">
         <size>7</size>
       </method>
@@ -42092,10 +44226,10 @@
   <test name="test-736.cs">
     <type name="TestGeneric`1[T]">
       <method name="Void add_Event(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_Event(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void Raise()">
         <size>18</size>
@@ -42106,10 +44240,10 @@
     </type>
     <type name="TestGeneric2`1[T]">
       <method name="Void add_Event(TestGeneric2`1+GenericHandler[T])">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_Event(TestGeneric2`1+GenericHandler[T])">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void Raise()">
         <size>21</size>
@@ -42120,10 +44254,10 @@
     </type>
     <type name="Test">
       <method name="Void add_Event(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_Event(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void Raise()">
         <size>18</size>
@@ -42164,7 +44298,7 @@
     </type>
     <type name="Tester">
       <method name="Int32 Main()">
-        <size>80</size>
+        <size>74</size>
       </method>
       <method name="Void .ctor()">
         <size>7</size>
@@ -42604,11 +44738,6 @@
         <size>7</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
   </test>
   <test name="test-758.cs">
     <type name="C">
@@ -42628,6 +44757,16 @@
       </method>
     </type>
   </test>
+  <test name="test-759.cs">
+    <type name="B">
+      <method name="Void Main()">
+        <size>12</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="test-76.cs">
     <type name="foo">
       <method name="Void .ctor()">
@@ -42885,10 +45024,10 @@
     </type>
     <type name="MyClass+A">
       <method name="Void add_MouseClick(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_MouseClick(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void .ctor()">
         <size>7</size>
@@ -42896,10 +45035,10 @@
     </type>
     <type name="MyClass+B">
       <method name="Void add_MouseClick(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_MouseClick(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void .ctor()">
         <size>7</size>
@@ -43272,10 +45411,10 @@
     </type>
     <type name="E">
       <method name="Void add_temp(D)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_temp(D)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void .ctor()">
         <size>7</size>
@@ -43311,15 +45450,21 @@
   </test>
   <test name="test-783.cs">
     <type name="C">
-      <method name="Void Main()">
-        <size>25</size>
-      </method>
       <method name="Void M(E)">
         <size>1</size>
       </method>
       <method name="Void .ctor()">
         <size>7</size>
       </method>
+      <method name="Int32 Test(Int32)">
+        <size>2</size>
+      </method>
+      <method name="Int32 Test(E)">
+        <size>2</size>
+      </method>
+      <method name="Int32 Main()">
+        <size>88</size>
+      </method>
     </type>
   </test>
   <test name="test-784.cs">
@@ -43350,7 +45495,7 @@
         <size>9</size>
       </method>
       <method name="Int32 Main()">
-        <size>53</size>
+        <size>52</size>
       </method>
       <method name="Void .ctor()">
         <size>7</size>
@@ -43522,7 +45667,7 @@
   <test name="test-789.cs">
     <type name="Program">
       <method name="Void Main()">
-        <size>50</size>
+        <size>76</size>
       </method>
       <method name="Void <Main>m__0()">
         <size>7</size>
@@ -43584,6 +45729,9 @@
       <method name="Void Test()">
         <size>24</size>
       </method>
+      <method name="Void Test2(IMemberDelayed)">
+        <size>19</size>
+      </method>
       <method name="Void Main()">
         <size>1</size>
       </method>
@@ -43679,6 +45827,26 @@
       </method>
     </type>
   </test>
+  <test name="test-799.cs">
+    <type name="Test2">
+      <method name="Int32 Main()">
+        <size>13</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Test2+Foo">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Test2+Bar">
+      <method name="Void .ctor(Foo)">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="test-8.cs">
     <type name="X">
       <method name="Void .ctor()">
@@ -43710,6 +45878,52 @@
       </method>
     </type>
   </test>
+  <test name="test-800.cs">
+    <type name="C">
+      <method name="Void Main()">
+        <size>5</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="test-801.cs">
+    <type name="C">
+      <method name="Int32 Main()">
+        <size>154</size>
+      </method>
+      <method name="E op_Implicit(C)">
+        <size>3</size>
+      </method>
+      <method name="Int32 op_Implicit(C)">
+        <size>2</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="test-802.cs">
+    <type name="C">
+      <method name="Void Main()">
+        <size>1</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="test-803.cs">
+    <type name="A">
+      <method name="Int32 Main()">
+        <size>26</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="test-81.cs">
     <type name="N1.A">
       <method name="Void .ctor()">
@@ -43763,10 +45977,10 @@
         <size>14</size>
       </method>
       <method name="Void add_PersonArrived(PersonArrivedHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_PersonArrived(PersonArrivedHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void AddPerson(System.String)">
         <size>14</size>
@@ -43896,11 +46110,6 @@
         <size>63</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
   </test>
   <test name="test-89.cs">
     <type name="X">
@@ -44547,7 +46756,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>259</size>
+        <size>256</size>
       </method>
       <method name="System.Collections.ArrayList Find(predicate, System.Collections.ArrayList)">
         <size>83</size>
@@ -44614,16 +46823,16 @@
         <size>7</size>
       </method>
       <method name="Void add_Click(X+T)">
-        <size>22</size>
+        <size>45</size>
       </method>
       <method name="Void remove_Click(X+T)">
-        <size>22</size>
+        <size>45</size>
       </method>
       <method name="Void Method()">
         <size>1</size>
       </method>
       <method name="Void Main()">
-        <size>46</size>
+        <size>31</size>
       </method>
     </type>
     <type name="X+T">
@@ -44713,10 +46922,10 @@
         <size>7</size>
       </method>
       <method name="Void add_Clicked(ClickEvent)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_Clicked(ClickEvent)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void DoClick()">
         <size>12</size>
@@ -45070,6 +47279,36 @@
       </method>
     </type>
   </test>
+  <test name="test-anon-26.cs">
+    <type name="TestGotoLabels.GotoLabelsTest">
+      <method name="Int32 Main()">
+        <size>36</size>
+      </method>
+      <method name="Void TestMethod2(TestGotoLabels.GotoLabelsTest+MyDelegate)">
+        <size>7</size>
+      </method>
+      <method name="Void <Main>m__0()">
+        <size>6</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="TestGotoLabels.GotoLabelsTest+MyDelegate">
+      <method name="Void Invoke()">
+        <size>0</size>
+      </method>
+      <method name="IAsyncResult BeginInvoke(System.AsyncCallback, System.Object)">
+        <size>0</size>
+      </method>
+      <method name="Void EndInvoke(IAsyncResult)">
+        <size>0</size>
+      </method>
+      <method name="Void .ctor(Object, IntPtr)">
+        <size>0</size>
+      </method>
+    </type>
+  </test>
   <test name="test-anon-27.cs">
     <type name="X">
       <method name="Void .ctor()">
@@ -45119,10 +47358,10 @@
         <size>7</size>
       </method>
       <method name="Void add_MyDelegate(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_MyDelegate(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
     </type>
     <type name="DelegateTest">
@@ -45202,10 +47441,10 @@
     </type>
     <type name="Program">
       <method name="Void add_E(Program+D)">
-        <size>22</size>
+        <size>45</size>
       </method>
       <method name="Void remove_E(Program+D)">
-        <size>22</size>
+        <size>45</size>
       </method>
       <method name="Void Main()">
         <size>38</size>
@@ -45235,46 +47474,32 @@
     </type>
   </test>
   <test name="test-anon-31.cs">
-    <type name="test">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-      <method name="IEnumerable testen(Int32)">
-        <size>30</size>
+    <type name="X">
+      <method name="Void Main()">
+        <size>35</size>
       </method>
-    </type>
-    <type name="reflect">
-      <method name="Void .ctor()">
-        <size>7</size>
+      <method name="Void DoCall(X+test)">
+        <size>1</size>
       </method>
-      <method name="Void Main(System.String[])">
-        <size>122</size>
+      <method name="System.Object <Main>m__0(System.Reflection.MethodInfo)">
+        <size>18</size>
       </method>
-    </type>
-    <type name="test+<testen>c__Iterator0">
       <method name="Void .ctor()">
         <size>7</size>
       </method>
-      <method name="System.Object System.Collections.IEnumerator.get_Current()">
-        <size>7</size>
-      </method>
-      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
-        <size>7</size>
-      </method>
-      <method name="Boolean MoveNext()">
-        <size>195</size>
-      </method>
-      <method name="Void Dispose()">
-        <size>8</size>
+    </type>
+    <type name="X+test">
+      <method name="System.Object Invoke(System.Reflection.MethodInfo)">
+        <size>0</size>
       </method>
-      <method name="Void Reset()">
-        <size>6</size>
+      <method name="IAsyncResult BeginInvoke(System.Reflection.MethodInfo, System.AsyncCallback, System.Object)">
+        <size>0</size>
       </method>
-      <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
-        <size>7</size>
+      <method name="System.Object EndInvoke(IAsyncResult)">
+        <size>0</size>
       </method>
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<object>.GetEnumerator()">
-        <size>40</size>
+      <method name="Void .ctor(Object, IntPtr)">
+        <size>0</size>
       </method>
     </type>
   </test>
@@ -45425,39 +47650,36 @@
     </type>
   </test>
   <test name="test-anon-35.cs">
-    <type name="CustomDict">
-      <method name="Void .ctor()">
-        <size>68</size>
+    <type name="ExceptionWithAnonMethod">
+      <method name="Int32 Main()">
+        <size>96</size>
       </method>
-      <method name="IEnumerator GetEnumerator()">
-        <size>15</size>
+      <method name="Void AnonHandler(ExceptionWithAnonMethod+EmptyCallback)">
+        <size>13</size>
       </method>
-    </type>
-    <type name="Tests">
       <method name="Void .ctor()">
         <size>7</size>
       </method>
-      <method name="Void Main()">
-        <size>7</size>
-      </method>
     </type>
-    <type name="CustomDict+<GetEnumerator>c__Iterator0">
-      <method name="Void .ctor()">
-        <size>7</size>
+    <type name="ExceptionWithAnonMethod+EmptyCallback">
+      <method name="Void Invoke()">
+        <size>0</size>
       </method>
-      <method name="System.Object System.Collections.IEnumerator.get_Current()">
-        <size>7</size>
+      <method name="IAsyncResult BeginInvoke(System.AsyncCallback, System.Object)">
+        <size>0</size>
       </method>
-      <method name="Boolean MoveNext()">
-        <size>86</size>
+      <method name="Void EndInvoke(IAsyncResult)">
+        <size>0</size>
       </method>
-      <method name="Void Dispose()">
-        <size>8</size>
+      <method name="Void .ctor(Object, IntPtr)">
+        <size>0</size>
       </method>
-      <method name="Void Reset()">
-        <size>6</size>
+    </type>
+    <type name="ExceptionWithAnonMethod+<Main>c__AnonStorey0">
+      <method name="Void <>m__0()">
+        <size>33</size>
       </method>
-      <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
+      <method name="Void .ctor()">
         <size>7</size>
       </method>
     </type>
@@ -45949,36 +48171,38 @@
     </type>
   </test>
   <test name="test-anon-45.cs">
-    <type name="Test">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-      <method name="Void Main()">
-        <size>66</size>
-      </method>
-      <method name="IEnumerator GetEnumerator()">
-        <size>8</size>
+    <type name="TestFunc">
+      <method name="Void Invoke(Int32)">
+        <size>0</size>
       </method>
-    </type>
-    <type name="Test+<GetEnumerator>c__Iterator0">
-      <method name="Void .ctor()">
-        <size>7</size>
+      <method name="IAsyncResult BeginInvoke(Int32, System.AsyncCallback, System.Object)">
+        <size>0</size>
       </method>
-      <method name="System.Object System.Collections.IEnumerator.get_Current()">
-        <size>7</size>
+      <method name="Void EndInvoke(IAsyncResult)">
+        <size>0</size>
       </method>
-      <method name="Boolean MoveNext()">
-        <size>77</size>
+      <method name="Void .ctor(Object, IntPtr)">
+        <size>0</size>
       </method>
-      <method name="Void Dispose()">
-        <size>8</size>
+    </type>
+    <type name="A">
+      <method name="Void .ctor(TestFunc)">
+        <size>14</size>
       </method>
-      <method name="Void Reset()">
+    </type>
+    <type name="TestClass">
+      <method name="Int32 Main()">
         <size>6</size>
       </method>
-      <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
+      <method name="Void <a>m__0(Int32)">
+        <size>7</size>
+      </method>
+      <method name="Void .ctor()">
         <size>7</size>
       </method>
+      <method name="Void .cctor()">
+        <size>46</size>
+      </method>
     </type>
   </test>
   <test name="test-anon-46.cs">
@@ -46033,7 +48257,7 @@
         <size>1</size>
       </method>
       <method name="Void Test(Int32)">
-        <size>158</size>
+        <size>153</size>
       </method>
     </type>
     <type name="X">
@@ -46150,10 +48374,10 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>187</size>
+        <size>197</size>
       </method>
       <method name="Void Dispose()">
-        <size>64</size>
+        <size>76</size>
       </method>
       <method name="Void Reset()">
         <size>6</size>
@@ -46273,7 +48497,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>201</size>
+        <size>199</size>
       </method>
       <method name="Void <>m__0()">
         <size>22</size>
@@ -46288,11 +48512,6 @@
         <size>7</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
   </test>
   <test name="test-anon-53.cs">
     <type name="Test">
@@ -46506,7 +48725,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Test(Int32)">
-        <size>344</size>
+        <size>342</size>
       </method>
       <method name="Int32 Main()">
         <size>46</size>
@@ -46551,7 +48770,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Test(Int32)">
-        <size>515</size>
+        <size>512</size>
       </method>
       <method name="Int32 Main()">
         <size>46</size>
@@ -46601,7 +48820,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Test(Int32)">
-        <size>567</size>
+        <size>564</size>
       </method>
       <method name="Int32 Main()">
         <size>46</size>
@@ -46774,7 +48993,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>195</size>
+        <size>193</size>
       </method>
       <method name="Int32 <>m__0()">
         <size>44</size>
@@ -46789,11 +49008,6 @@
         <size>7</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
   </test>
   <test name="test-anon-64.cs">
     <type name="Source">
@@ -46801,22 +49015,22 @@
         <size>7</size>
       </method>
       <method name="Void add_ChildSourceAdded(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_ChildSourceAdded(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void add_ChildSourceRemoved(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_ChildSourceRemoved(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Source FindSource(Source)">
         <size>2</size>
       </method>
       <method name="Void AddSource(Source, Int32, System.Object)">
-        <size>132</size>
+        <size>100</size>
       </method>
       <method name="Void Main()">
         <size>1</size>
@@ -46879,10 +49093,10 @@
         <size>7</size>
       </method>
       <method name="Void add_testEvent(Test+TestEventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_testEvent(Test+TestEventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void add_TestEvent(Test+TestEventHandler)">
         <size>33</size>
@@ -47109,11 +49323,6 @@
         <size>3</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
   </test>
   <test name="test-anon-71.cs">
     <type name="Program">
@@ -47443,10 +49652,10 @@
         <size>7</size>
       </method>
       <method name="Void add_E(Test+D)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_E(Test+D)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void add_Changed(Test+D)">
         <size>30</size>
@@ -47722,6 +49931,28 @@
       </method>
     </type>
   </test>
+  <test name="test-anon-83.cs">
+    <type name="C">
+      <method name="Void add_MyDelegate(System.EventHandler)">
+        <size>47</size>
+      </method>
+      <method name="Void remove_MyDelegate(System.EventHandler)">
+        <size>47</size>
+      </method>
+      <method name="Void DoSomething(Boolean)">
+        <size>8</size>
+      </method>
+      <method name="Void Main()">
+        <size>1</size>
+      </method>
+      <method name="Void <MyDelegate>m__0(System.Object, System.EventArgs)">
+        <size>1</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>42</size>
+      </method>
+    </type>
+  </test>
   <test name="test-anon-84.cs">
     <type name="C">
       <method name="Void .ctor()">
@@ -47881,7 +50112,7 @@
         <size>12</size>
       </method>
       <method name="Void Test()">
-        <size>102</size>
+        <size>97</size>
       </method>
     </type>
     <type name="C+D">
@@ -48074,7 +50305,7 @@
         <size>7</size>
       </method>
       <method name="Void <>m__0()">
-        <size>109</size>
+        <size>108</size>
       </method>
     </type>
     <type name="C+<Test>c__AnonStorey0+<Test>c__AnonStorey1">
@@ -48233,10 +50464,10 @@
     </type>
     <type name="B">
       <method name="Void add_Event(D)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_Event(D)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Int32 Run()">
         <size>12</size>
@@ -48282,7 +50513,7 @@
         <size>3</size>
       </method>
       <method name="Program+D Get(Int32)">
-        <size>115</size>
+        <size>128</size>
       </method>
       <method name="Int32 Run(Int32)">
         <size>12</size>
@@ -48306,15 +50537,89 @@
       </method>
     </type>
     <type name="Program+<Get>c__AnonStorey0">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Program+<Get>c__AnonStorey1">
       <method name="Int32 <>m__0()">
-        <size>19</size>
+        <size>24</size>
       </method>
       <method name="Int32 <>m__1()">
-        <size>19</size>
+        <size>24</size>
       </method>
       <method name="Int32 <>m__2()">
+        <size>19</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="test-anon-97.cs">
+    <type name="Space">
+      <method name="Void Leak(Boolean, Int32)">
+        <size>85</size>
+      </method>
+      <method name="Void .ctor()">
         <size>14</size>
       </method>
+    </type>
+    <type name="Space+DoCopy">
+      <method name="Void Invoke()">
+        <size>0</size>
+      </method>
+      <method name="IAsyncResult BeginInvoke(System.AsyncCallback, System.Object)">
+        <size>0</size>
+      </method>
+      <method name="Void EndInvoke(IAsyncResult)">
+        <size>0</size>
+      </method>
+      <method name="Void .ctor(Object, IntPtr)">
+        <size>0</size>
+      </method>
+    </type>
+    <type name="Program">
+      <method name="Void Main(System.String[])">
+        <size>1</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Space+<Leak>c__AnonStorey1">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Space+<Leak>c__AnonStorey0">
+      <method name="Void <>m__0()">
+        <size>18</size>
+      </method>
+      <method name="Void <>m__1()">
+        <size>68</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="test-anon-98.cs">
+    <type name="Foo">
+      <method name="Void Finalize()">
+        <size>39</size>
+      </method>
+      <method name="Void Main()">
+        <size>7</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Foo+<Finalize>c__AnonStorey0">
+      <method name="Void <>m__0()">
+        <size>22</size>
+      </method>
       <method name="Void .ctor()">
         <size>7</size>
       </method>
@@ -49005,7 +51310,7 @@
         <size>16</size>
       </method>
       <method name="Int32 Main()">
-        <size>173</size>
+        <size>172</size>
       </method>
     </type>
     <type name="X+<GetIt>c__Iterator0">
@@ -49016,7 +51321,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>126</size>
+        <size>124</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -49036,7 +51341,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>126</size>
+        <size>124</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -49079,7 +51384,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>173</size>
+        <size>171</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -49104,12 +51409,7 @@
         <size>30</size>
       </method>
       <method name="Int32 Main()">
-        <size>248</size>
-      </method>
-    </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
+        <size>247</size>
       </method>
     </type>
     <type name="X+<GetIt>c__Iterator0">
@@ -49123,7 +51423,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>151</size>
+        <size>149</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -49143,7 +51443,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>238</size>
+        <size>236</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -49192,7 +51492,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>123</size>
+        <size>121</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -49245,7 +51545,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>183</size>
+        <size>181</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -49289,7 +51589,7 @@
         <size>30</size>
       </method>
       <method name="Int32 Main()">
-        <size>407</size>
+        <size>403</size>
       </method>
     </type>
     <type name="S+<Get>c__Iterator0">
@@ -49303,7 +51603,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>183</size>
+        <size>181</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -49323,7 +51623,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>136</size>
+        <size>134</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -49343,7 +51643,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>131</size>
+        <size>129</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -49363,7 +51663,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>136</size>
+        <size>134</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -49427,7 +51727,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>374</size>
+        <size>373</size>
       </method>
     </type>
     <type name="Test+<Foo>c__Iterator0">
@@ -49488,7 +51788,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>360</size>
+        <size>358</size>
       </method>
       <method name="Void Dispose()">
         <size>102</size>
@@ -49518,7 +51818,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>270</size>
+        <size>268</size>
       </method>
     </type>
     <type name="Tester+<GetEnumerator>c__Iterator0">
@@ -49529,10 +51829,10 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>625</size>
+        <size>635</size>
       </method>
       <method name="Void Dispose()">
-        <size>84</size>
+        <size>96</size>
       </method>
       <method name="Void Reset()">
         <size>6</size>
@@ -49560,7 +51860,7 @@
         <size>1</size>
       </method>
       <method name="Int32 Main()">
-        <size>186</size>
+        <size>184</size>
       </method>
     </type>
     <type name="X+<>c__Iterator0">
@@ -49571,7 +51871,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>126</size>
+        <size>124</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -49591,7 +51891,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>145</size>
+        <size>143</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -49620,10 +51920,10 @@
         <size>7</size>
       </method>
       <method name="Void add_Hook(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_Hook(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="IEnumerator Pipeline()">
         <size>15</size>
@@ -49632,7 +51932,7 @@
         <size>11</size>
       </method>
       <method name="Void Main()">
-        <size>55</size>
+        <size>39</size>
       </method>
     </type>
     <type name="X+<Pipeline>c__Iterator0">
@@ -49643,7 +51943,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>124</size>
+        <size>122</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -49679,10 +51979,10 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>165</size>
+        <size>184</size>
       </method>
       <method name="Void Dispose()">
-        <size>55</size>
+        <size>63</size>
       </method>
       <method name="Void Reset()">
         <size>6</size>
@@ -49729,7 +52029,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>27</size>
+        <size>25</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -49745,6 +52045,366 @@
       </method>
     </type>
   </test>
+  <test name="test-iter-14.cs">
+    <type name="XX">
+      <method name="Void Metodo(System.Exception)">
+        <size>37</size>
+      </method>
+      <method name="IEnumerable X()">
+        <size>16</size>
+      </method>
+      <method name="Void Main()">
+        <size>65</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="XX+<X>c__Iterator0">
+      <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
+        <size>7</size>
+      </method>
+      <method name="System.Object System.Collections.IEnumerator.get_Current()">
+        <size>7</size>
+      </method>
+      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
+        <size>7</size>
+      </method>
+      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<object>.GetEnumerator()">
+        <size>26</size>
+      </method>
+      <method name="Boolean MoveNext()">
+        <size>103</size>
+      </method>
+      <method name="Void Dispose()">
+        <size>8</size>
+      </method>
+      <method name="Void Reset()">
+        <size>6</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="test-iter-15.cs">
+    <type name="Test">
+      <method name="IEnumerator GetEnumerator()">
+        <size>15</size>
+      </method>
+      <method name="Void Main()">
+        <size>11</size>
+      </method>
+      <method name="Void Run()">
+        <size>177</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Test+<GetEnumerator>c__Iterator0">
+      <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
+        <size>7</size>
+      </method>
+      <method name="System.Object System.Collections.IEnumerator.get_Current()">
+        <size>7</size>
+      </method>
+      <method name="Boolean MoveNext()">
+        <size>127</size>
+      </method>
+      <method name="Void Dispose()">
+        <size>8</size>
+      </method>
+      <method name="Void Reset()">
+        <size>6</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="test-iter-16.cs">
+    <type name="Foo">
+      <method name="IEnumerable foo()">
+        <size>16</size>
+      </method>
+      <method name="Int32 Main()">
+        <size>67</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Foo+<foo>c__Iterator0">
+      <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
+        <size>7</size>
+      </method>
+      <method name="System.Object System.Collections.IEnumerator.get_Current()">
+        <size>7</size>
+      </method>
+      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
+        <size>7</size>
+      </method>
+      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<object>.GetEnumerator()">
+        <size>26</size>
+      </method>
+      <method name="Boolean MoveNext()">
+        <size>37</size>
+      </method>
+      <method name="Void Dispose()">
+        <size>8</size>
+      </method>
+      <method name="Void Reset()">
+        <size>6</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="test-iter-17.cs">
+    <type name="Program">
+      <method name="IEnumerable get_Empty()">
+        <size>16</size>
+      </method>
+      <method name="Void Main()">
+        <size>61</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Program+<>c__Iterator0">
+      <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
+        <size>7</size>
+      </method>
+      <method name="System.Object System.Collections.IEnumerator.get_Current()">
+        <size>7</size>
+      </method>
+      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
+        <size>7</size>
+      </method>
+      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<object>.GetEnumerator()">
+        <size>26</size>
+      </method>
+      <method name="Boolean MoveNext()">
+        <size>156</size>
+      </method>
+      <method name="Void Dispose()">
+        <size>8</size>
+      </method>
+      <method name="Void Reset()">
+        <size>6</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="test-iter-18.cs">
+    <type name="test">
+      <method name="IEnumerable testen(Int32)">
+        <size>30</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="reflect">
+      <method name="Void Main(System.String[])">
+        <size>119</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="test+<testen>c__Iterator0">
+      <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
+        <size>7</size>
+      </method>
+      <method name="System.Object System.Collections.IEnumerator.get_Current()">
+        <size>7</size>
+      </method>
+      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
+        <size>7</size>
+      </method>
+      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<object>.GetEnumerator()">
+        <size>40</size>
+      </method>
+      <method name="Boolean MoveNext()">
+        <size>193</size>
+      </method>
+      <method name="Void Dispose()">
+        <size>8</size>
+      </method>
+      <method name="Void Reset()">
+        <size>6</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="test-iter-19.cs">
+    <type name="Test">
+      <method name="Void Main()">
+        <size>66</size>
+      </method>
+      <method name="IEnumerator GetEnumerator()">
+        <size>8</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Test+<GetEnumerator>c__Iterator0">
+      <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
+        <size>7</size>
+      </method>
+      <method name="System.Object System.Collections.IEnumerator.get_Current()">
+        <size>7</size>
+      </method>
+      <method name="Boolean MoveNext()">
+        <size>75</size>
+      </method>
+      <method name="Void Dispose()">
+        <size>8</size>
+      </method>
+      <method name="Void Reset()">
+        <size>6</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="test-iter-20.cs">
+    <type name="CustomDict">
+      <method name="IEnumerator GetEnumerator()">
+        <size>15</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>68</size>
+      </method>
+    </type>
+    <type name="Tests">
+      <method name="Void Main()">
+        <size>7</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="CustomDict+<GetEnumerator>c__Iterator0">
+      <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
+        <size>7</size>
+      </method>
+      <method name="System.Object System.Collections.IEnumerator.get_Current()">
+        <size>7</size>
+      </method>
+      <method name="Boolean MoveNext()">
+        <size>84</size>
+      </method>
+      <method name="Void Dispose()">
+        <size>8</size>
+      </method>
+      <method name="Void Reset()">
+        <size>6</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="test-iter-21.cs">
+    <type name="X">
+      <method name="IEnumerable GetIt(System.Int32[])">
+        <size>30</size>
+      </method>
+      <method name="Int32 Main()">
+        <size>119</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="X+A">
+      <method name="Void Invoke()">
+        <size>0</size>
+      </method>
+      <method name="IAsyncResult BeginInvoke(System.AsyncCallback, System.Object)">
+        <size>0</size>
+      </method>
+      <method name="Void EndInvoke(IAsyncResult)">
+        <size>0</size>
+      </method>
+      <method name="Void .ctor(Object, IntPtr)">
+        <size>0</size>
+      </method>
+    </type>
+    <type name="X+<GetIt>c__Iterator0">
+      <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
+        <size>7</size>
+      </method>
+      <method name="System.Object System.Collections.IEnumerator.get_Current()">
+        <size>7</size>
+      </method>
+      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
+        <size>7</size>
+      </method>
+      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<object>.GetEnumerator()">
+        <size>40</size>
+      </method>
+      <method name="Boolean MoveNext()">
+        <size>199</size>
+      </method>
+      <method name="Void Dispose()">
+        <size>8</size>
+      </method>
+      <method name="Void Reset()">
+        <size>6</size>
+      </method>
+      <method name="Void <>m__0()">
+        <size>22</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="test-iter-22.cs">
+    <type name="Test">
+      <method name="Void Main()">
+        <size>66</size>
+      </method>
+      <method name="IEnumerator GetEnumerator()">
+        <size>8</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Test+<GetEnumerator>c__Iterator0">
+      <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
+        <size>7</size>
+      </method>
+      <method name="System.Object System.Collections.IEnumerator.get_Current()">
+        <size>7</size>
+      </method>
+      <method name="Boolean MoveNext()">
+        <size>197</size>
+      </method>
+      <method name="Void Dispose()">
+        <size>76</size>
+      </method>
+      <method name="Void Reset()">
+        <size>6</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="test-named-01.cs">
     <type name="A">
       <method name="Void .ctor()">
@@ -49813,7 +52473,7 @@
         <size>30</size>
       </method>
       <method name="Int32 Main()">
-        <size>279</size>
+        <size>274</size>
       </method>
     </type>
   </test>
@@ -49850,7 +52510,58 @@
         <size>40</size>
       </method>
       <method name="Int32 Main()">
-        <size>239</size>
+        <size>242</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="test-named-05.cs">
+    <type name="A">
+      <method name="Int32 Foo(Int32)">
+        <size>2</size>
+      </method>
+      <method name="Int32 get_Item(Int32, System.String)">
+        <size>2</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="B">
+      <method name="Int32 Foo(Int32)">
+        <size>2</size>
+      </method>
+      <method name="Int32 get_Item(Int32, System.String)">
+        <size>2</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Test">
+      <method name="Int32 Main()">
+        <size>98</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="test-named-06.cs">
+    <type name="C">
+      <method name="Int32 Main()">
+        <size>25</size>
+      </method>
+      <method name="Int32 Foo(Int32, Int64, System.String)">
+        <size>2</size>
+      </method>
+      <method name="Int32 Foo(Int32, Int64, System.String[])">
+        <size>2</size>
+      </method>
+      <method name="Int32 Foo(Int64, Int32)">
+        <size>2</size>
       </method>
       <method name="Void .ctor()">
         <size>7</size>
@@ -50157,7 +52868,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>69</size>
+        <size>67</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -50419,10 +53130,10 @@
         <size>7</size>
       </method>
       <method name="Void add_ContactsEventHandler(Mono.Sms.Contacts+ContactsHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_ContactsEventHandler(Mono.Sms.Contacts+ContactsHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void Test()">
         <size>12</size>
@@ -50617,11 +53328,6 @@
         <size>177</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
   </test>
   <test name="test-var-05.cs">
     <type name="MyClass">
@@ -50679,6 +53385,16 @@
       </method>
     </type>
   </test>
+  <test name="test-var-09.cs">
+    <type name="A">
+      <method name="Int32 Main()">
+        <size>12</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="test-xml-042.cs">
     <type name="TestNamespace.TestClass">
       <method name="Void .ctor()">
diff --git a/mcs/tests/ver-il-gmcs.xml b/mcs/tests/ver-il-gmcs.xml
index d5568e8..d7c2494 100644
--- a/mcs/tests/ver-il-gmcs.xml
+++ b/mcs/tests/ver-il-gmcs.xml
@@ -1080,11 +1080,6 @@
         <size>86</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
   </test>
   <test name="gtest-046.cs">
     <type name="Foo`1[T]">
@@ -1092,10 +1087,10 @@
         <size>7</size>
       </method>
       <method name="Void add_MyEvent(Test`1[T])">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_MyEvent(Test`1[T])">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void Hello(T)">
         <size>24</size>
@@ -1506,7 +1501,7 @@
         <size>7</size>
       </method>
       <method name="Void Main(System.String[])">
-        <size>203</size>
+        <size>204</size>
       </method>
     </type>
   </test>
@@ -1650,7 +1645,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>107</size>
+        <size>105</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -1927,10 +1922,10 @@
         <size>7</size>
       </method>
       <method name="Void Main(System.String[])">
-        <size>208</size>
+        <size>209</size>
       </method>
       <method name="Void TestPairLog()">
-        <size>182</size>
+        <size>184</size>
       </method>
     </type>
     <type name="Pair`2[T,U]">
@@ -2055,33 +2050,34 @@
       <method name="Void .ctor()">
         <size>7</size>
       </method>
-      <method name="Void Main()">
-        <size>66</size>
-      </method>
-      <method name="IEnumerator GetEnumerator()">
-        <size>8</size>
-      </method>
     </type>
-    <type name="Test+<GetEnumerator>c__Iterator0">
-      <method name="Void .ctor()">
-        <size>7</size>
+    <type name="S">
+      <method name="Void System.IDisposable.Dispose()">
+        <size>13</size>
       </method>
-      <method name="System.Object System.Collections.IEnumerator.get_Current()">
-        <size>7</size>
+      <method name="Void Dispose()">
+        <size>6</size>
       </method>
-      <method name="Boolean MoveNext()">
-        <size>187</size>
+    </type>
+    <type name="C">
+      <method name="Void System.IDisposable.Dispose()">
+        <size>1</size>
       </method>
       <method name="Void Dispose()">
-        <size>64</size>
-      </method>
-      <method name="Void Reset()">
         <size>6</size>
       </method>
-      <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
+      <method name="Void .ctor()">
         <size>7</size>
       </method>
     </type>
+    <type name="Test">
+      <method name="Int32 Main()">
+        <size>209</size>
+      </method>
+      <method name="Void GenMethod[T](T)">
+        <size>33</size>
+      </method>
+    </type>
   </test>
   <test name="gtest-079.cs">
     <type name="A.ArrayList`1[T]">
@@ -2903,7 +2899,7 @@
         <size>12</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>75</size>
+        <size>73</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -3121,7 +3117,7 @@
         <size>14</size>
       </method>
       <method name="Void Insert(Int32, T)">
-        <size>256</size>
+        <size>255</size>
       </method>
       <method name="Void RemoveAt(Int32)">
         <size>113</size>
@@ -3139,7 +3135,7 @@
         <size>7</size>
       </method>
       <method name="LinkedList`1[T] op_Addition(LinkedList`1[T], LinkedList`1[T])">
-        <size>123</size>
+        <size>120</size>
       </method>
     </type>
     <type name="LinkedList`1+Node[T]">
@@ -3229,11 +3225,6 @@
         <size>17</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
   </test>
   <test name="gtest-116.cs">
     <type name="Slow.Test">
@@ -3249,7 +3240,7 @@
         <size>7</size>
       </method>
       <method name="Void Main(System.String[])">
-        <size>201</size>
+        <size>197</size>
       </method>
     </type>
   </test>
@@ -3567,13 +3558,13 @@
         <size>7</size>
       </method>
       <method name="Void add__changed(A`1+Changed[T])">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove__changed(A`1+Changed[T])">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void Register(A`1+Changed[T])">
-        <size>36</size>
+        <size>20</size>
       </method>
     </type>
     <type name="Test">
@@ -3616,7 +3607,7 @@
         <size>7</size>
       </method>
       <method name="Void Main(System.String[])">
-        <size>120</size>
+        <size>119</size>
       </method>
     </type>
   </test>
@@ -3641,7 +3632,7 @@
         <size>7</size>
       </method>
       <method name="Void Main(System.String[])">
-        <size>846</size>
+        <size>920</size>
       </method>
     </type>
   </test>
@@ -3651,7 +3642,7 @@
         <size>7</size>
       </method>
       <method name="Void Main(System.String[])">
-        <size>1330</size>
+        <size>1332</size>
       </method>
     </type>
   </test>
@@ -3695,7 +3686,7 @@
         <size>7</size>
       </method>
       <method name="Void Main(System.String[])">
-        <size>112</size>
+        <size>113</size>
       </method>
     </type>
     <type name="Foo`1[T]">
@@ -3749,7 +3740,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>134</size>
+        <size>136</size>
       </method>
     </type>
   </test>
@@ -3763,6 +3754,30 @@
       </method>
     </type>
   </test>
+  <test name="gtest-139.cs">
+    <type name="MyStruct">
+      <method name="Int32 op_Inequality(Nullable`1, System.String)">
+        <size>2</size>
+      </method>
+      <method name="Int32 op_Equality(Nullable`1, System.String)">
+        <size>2</size>
+      </method>
+      <method name="Int32 op_Inequality(System.String, Nullable`1)">
+        <size>3</size>
+      </method>
+      <method name="Int32 op_Equality(System.String, Nullable`1)">
+        <size>2</size>
+      </method>
+    </type>
+    <type name="Test">
+      <method name="Int32 Main()">
+        <size>60</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="gtest-140.cs">
     <type name="X">
       <method name="Void .ctor()">
@@ -3818,7 +3833,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>1599</size>
+        <size>2199</size>
       </method>
     </type>
   </test>
@@ -4329,7 +4344,7 @@
         <size>12</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>91</size>
+        <size>89</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -4343,81 +4358,22 @@
     </type>
   </test>
   <test name="gtest-165.cs">
-    <type name="X">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-      <method name="IEnumerable GetIt(System.Int32[])">
-        <size>30</size>
-      </method>
+    <type name="C">
       <method name="Int32 Main()">
-        <size>119</size>
-      </method>
-    </type>
-    <type name="X+A">
-      <method name="Void .ctor(Object, IntPtr)">
-        <size>0</size>
-      </method>
-      <method name="Void Invoke()">
-        <size>0</size>
-      </method>
-      <method name="IAsyncResult BeginInvoke(System.AsyncCallback, System.Object)">
-        <size>0</size>
-      </method>
-      <method name="Void EndInvoke(IAsyncResult)">
-        <size>0</size>
-      </method>
-    </type>
-    <type name="X+<GetIt>c__Iterator0">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-      <method name="System.Object System.Collections.IEnumerator.get_Current()">
-        <size>7</size>
-      </method>
-      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
-        <size>7</size>
-      </method>
-      <method name="Boolean MoveNext()">
-        <size>201</size>
-      </method>
-      <method name="Void <>m__0()">
-        <size>22</size>
-      </method>
-      <method name="Void Dispose()">
-        <size>8</size>
-      </method>
-      <method name="Void Reset()">
-        <size>6</size>
-      </method>
-      <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
-        <size>7</size>
-      </method>
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<object>.GetEnumerator()">
-        <size>40</size>
+        <size>27</size>
       </method>
-    </type>
-    <type name="<PrivateImplementationDetails>">
       <method name="Void .ctor()">
         <size>7</size>
       </method>
     </type>
   </test>
   <test name="gtest-166.cs">
-    <type name="C">
-      <method name="Void .ctor()">
+    <type name="Foo">
+      <method name="Void Main()">
         <size>7</size>
       </method>
-      <method name="Int32 Test()">
-        <size>324</size>
-      </method>
-      <method name="Int32 Main()">
-        <size>6</size>
-      </method>
-    </type>
-    <type name="TestNew">
-      <method name="Void SetTest()">
-        <size>20</size>
+      <method name="Void .ctor()">
+        <size>7</size>
       </method>
     </type>
   </test>
@@ -4788,7 +4744,7 @@
         <size>1</size>
       </method>
       <method name="Int32 Main()">
-        <size>186</size>
+        <size>184</size>
       </method>
     </type>
     <type name="X+<>c__Iterator0">
@@ -4799,7 +4755,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>126</size>
+        <size>124</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -4819,7 +4775,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>145</size>
+        <size>143</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -4891,7 +4847,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>84</size>
+        <size>82</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -4990,13 +4946,13 @@
         <size>11</size>
       </method>
       <method name="Void .ctor(Object[], Object)">
-        <size>217</size>
+        <size>201</size>
       </method>
       <method name="Void add_DoSomething(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_DoSomething(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void Main()">
         <size>21</size>
@@ -5223,7 +5179,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>70</size>
+        <size>68</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -5243,7 +5199,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>82</size>
+        <size>80</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -5263,7 +5219,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>82</size>
+        <size>80</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -5707,7 +5663,7 @@
         <size>12</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>75</size>
+        <size>73</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -6079,7 +6035,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>207</size>
+        <size>205</size>
       </method>
       <method name="Void Dispose()">
         <size>62</size>
@@ -6099,7 +6055,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>118</size>
+        <size>116</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -6407,6 +6363,16 @@
       </method>
     </type>
   </test>
+  <test name="gtest-232.cs">
+    <type name="M">
+      <method name="Int32 Main()">
+        <size>68</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="gtest-233.cs">
     <type name="Program">
       <method name="Void .ctor()">
@@ -6936,11 +6902,6 @@
         <size>1</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
   </test>
   <test name="gtest-252.cs">
     <type name="EqualityComparer`1[T]">
@@ -7058,7 +7019,7 @@
         <size>11</size>
       </method>
       <method name="Void Run()">
-        <size>151</size>
+        <size>147</size>
       </method>
     </type>
     <type name="Test+<GetEnumerator>c__Iterator0">
@@ -7069,7 +7030,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>129</size>
+        <size>127</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -7224,7 +7185,7 @@
         <size>1</size>
       </method>
       <method name="Void Main()">
-        <size>163</size>
+        <size>162</size>
       </method>
       <method name="Void f6(ParamEnum)">
         <size>1</size>
@@ -7256,7 +7217,7 @@
         <size>12</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>80</size>
+        <size>78</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -7813,7 +7774,7 @@
         <size>106</size>
       </method>
       <method name="Int32 Test(System.Type, System.Type[])">
-        <size>400</size>
+        <size>391</size>
       </method>
       <method name="Int32 Test()">
         <size>532</size>
@@ -7927,10 +7888,10 @@
         <size>7</size>
       </method>
       <method name="Void add_Ev1(D)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_Ev1(D)">
-        <size>24</size>
+        <size>47</size>
       </method>
     </type>
     <type name="Consts">
@@ -7946,7 +7907,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>94</size>
+        <size>74</size>
       </method>
     </type>
     <type name="D">
@@ -7970,10 +7931,10 @@
         <size>7</size>
       </method>
       <method name="Void add_TestEvent(GenericEventHandler`2[GenericEventNotUsedTest`1[T],T])">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_TestEvent(GenericEventHandler`2[GenericEventNotUsedTest`1[T],T])">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void RaiseTestEvent(T)">
         <size>14</size>
@@ -8668,7 +8629,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>69</size>
+        <size>67</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -8800,10 +8761,10 @@
         <size>19</size>
       </method>
       <method name="Void add_D(A)">
-        <size>22</size>
+        <size>45</size>
       </method>
       <method name="Void remove_D(A)">
-        <size>22</size>
+        <size>45</size>
       </method>
       <method name="Void C()">
         <size>36</size>
@@ -8834,7 +8795,7 @@
         <size>7</size>
       </method>
       <method name="Void <>m__0()">
-        <size>54</size>
+        <size>39</size>
       </method>
     </type>
     <type name="B+<C>c__AnonStorey1+<C>c__AnonStorey0">
@@ -8933,8 +8894,8 @@
       <method name="Void .ctor()">
         <size>7</size>
       </method>
-      <method name="Void Main()">
-        <size>53</size>
+      <method name="Int32 Main()">
+        <size>91</size>
       </method>
     </type>
   </test>
@@ -9011,15 +8972,9 @@
     </type>
   </test>
   <test name="gtest-333.cs">
-    <type name="Test">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
+    <type name="Program">
       <method name="Void Main()">
-        <size>1</size>
-      </method>
-      <method name="Void Foo(System.Object)">
-        <size>20</size>
+        <size>13</size>
       </method>
     </type>
   </test>
@@ -9559,28 +9514,52 @@
     </type>
   </test>
   <test name="gtest-353.cs">
-    <type name="Bug.RedSkyTimeCode">
+    <type name="A`3[D1,D2,D3]">
+      <method name="Void Foo[T]()">
+        <size>1</size>
+      </method>
       <method name="Void .ctor()">
         <size>7</size>
       </method>
-      <method name="Void CopyTo(Bug.xxx*)">
-        <size>99</size>
+    </type>
+    <type name="B`1[DD2]">
+      <method name="Void .ctor()">
+        <size>7</size>
       </method>
-      <method name="Void Main()">
+    </type>
+    <type name="C">
+      <method name="Void Foo[T]()">
         <size>1</size>
       </method>
-      <method name="Void Convert(Bug.xxx*, UInt64*)">
-        <size>93</size>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Program">
+      <method name="Void Main()">
+        <size>11</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
       </method>
     </type>
   </test>
   <test name="gtest-354.cs">
     <type name="M">
-      <method name="Void .ctor()">
-        <size>7</size>
+      <method name="Void IC.Method(System.Int32[])">
+        <size>1</size>
+      </method>
+      <method name="System.String IA<string>.Method(Int32)">
+        <size>6</size>
+      </method>
+      <method name="Void IB.Method(Int32)">
+        <size>6</size>
       </method>
       <method name="Void Main()">
-        <size>1</size>
+        <size>23</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
       </method>
     </type>
   </test>
@@ -9677,9 +9656,6 @@
       <method name="Void .ctor()">
         <size>7</size>
       </method>
-      <method name="Void Main()">
-        <size>1</size>
-      </method>
     </type>
     <type name="Foo">
       <method name="Boolean op_Equality(Foo, Foo)">
@@ -9689,6 +9665,27 @@
         <size>6</size>
       </method>
     </type>
+    <type name="S2">
+      <method name="Boolean op_Equality(S2, Nullable`1)">
+        <size>6</size>
+      </method>
+      <method name="Boolean op_Inequality(S2, Nullable`1)">
+        <size>6</size>
+      </method>
+    </type>
+    <type name="Test">
+      <method name="Int32 Main()">
+        <size>97</size>
+      </method>
+    </type>
+    <type name="S3">
+      <method name="Decimal op_Inequality(S3, System.Object)">
+        <size>7</size>
+      </method>
+      <method name="Decimal op_Equality(S3, System.Object)">
+        <size>7</size>
+      </method>
+    </type>
   </test>
   <test name="gtest-359.cs">
     <type name="BaseGeneric`1[T]">
@@ -10008,11 +10005,6 @@
         <size>86</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
   </test>
   <test name="gtest-372.cs">
     <type name="TestClass`1[T]">
@@ -10064,12 +10056,34 @@
     </type>
   </test>
   <test name="gtest-374.cs">
-    <type name="aClass">
+    <type name="Z">
+      <method name="Z IGenericInterface<Z>.Start()">
+        <size>2</size>
+      </method>
+      <method name="Void Stop()">
+        <size>1</size>
+      </method>
       <method name="Void .ctor()">
         <size>7</size>
       </method>
-      <method name="Void Main(System.String[])">
-        <size>14</size>
+    </type>
+    <type name="A`3[Y,Y2,W]">
+      <method name="Void SomeOperation(W)">
+        <size>28</size>
+      </method>
+      <method name="Void SomeOtherOperation(Y)">
+        <size>28</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Foo">
+      <method name="Int32 Main()">
+        <size>30</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
       </method>
     </type>
   </test>
@@ -10110,7 +10124,7 @@
         <size>26</size>
       </method>
       <method name="Void Main()">
-        <size>98</size>
+        <size>88</size>
       </method>
     </type>
   </test>
@@ -10198,7 +10212,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>106</size>
+        <size>104</size>
       </method>
       <method name="Void Dispose()">
         <size>46</size>
@@ -10379,7 +10393,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>220</size>
+        <size>222</size>
       </method>
     </type>
     <type name="MyType">
@@ -10397,7 +10411,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>168</size>
+        <size>169</size>
       </method>
     </type>
   </test>
@@ -10425,7 +10439,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>234</size>
+        <size>235</size>
       </method>
     </type>
   </test>
@@ -10445,11 +10459,14 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>121</size>
+        <size>194</size>
       </method>
       <method name="Boolean Test_1()">
         <size>36</size>
       </method>
+      <method name="Void Test(System.Object, System.EventArgs)">
+        <size>1</size>
+      </method>
     </type>
   </test>
   <test name="gtest-392.cs">
@@ -10725,10 +10742,10 @@
         <size>7</size>
       </method>
       <method name="Void add_doSomething(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_doSomething(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
     </type>
     <type name="Test.Class2`1[T]">
@@ -10848,11 +10865,6 @@
         <size>7</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
     <type name="ConditionalParsing+Const">
       <method name="Void .ctor()">
         <size>7</size>
@@ -10869,6 +10881,16 @@
         <size>21</size>
       </method>
     </type>
+    <type name="A`1[T]">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="ConditionalParsing">
+      <method name="Void Test_11()">
+        <size>7</size>
+      </method>
+    </type>
   </test>
   <test name="gtest-410.cs">
     <type name="Program">
@@ -10975,38 +10997,61 @@
     </type>
   </test>
   <test name="gtest-415.cs">
-    <type name="S2">
-      <method name="Void Test()">
-        <size>39</size>
+    <type name="Foo">
+      <method name="Int32 Main()">
+        <size>32</size>
       </method>
-      <method name="Void Main()">
-        <size>16</size>
+      <method name="Boolean Bar[T](T)">
+        <size>15</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
       </method>
     </type>
   </test>
   <test name="gtest-416.cs">
-    <type name="Bug.Demo">
-      <method name="Boolean Fixed()">
-        <size>14</size>
+    <type name="Z">
+      <method name="Void .ctor()">
+        <size>7</size>
       </method>
-      <method name="Boolean Foo(System.Int32[])">
-        <size>43</size>
+    </type>
+    <type name="A`2[X,Y]">
+      <method name="X Foo(Y)">
+        <size>17</size>
       </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Foo">
       <method name="Int32 Main()">
-        <size>65</size>
+        <size>26</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
       </method>
     </type>
   </test>
   <test name="gtest-417.cs">
-    <type name="C">
+    <type name="Indirect">
       <method name="Void .ctor()">
         <size>7</size>
       </method>
-      <method name="Void Goo()">
-        <size>11</size>
+    </type>
+    <type name="Base">
+      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
+        <size>12</size>
       </method>
-      <method name="Void Main()">
-        <size>1</size>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="TestCase">
+      <method name="Int32 Main()">
+        <size>125</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
       </method>
     </type>
   </test>
@@ -11079,11 +11124,6 @@
         <size>166</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
   </test>
   <test name="gtest-422.cs">
     <type name="A">
@@ -11113,16 +11153,34 @@
     </type>
   </test>
   <test name="gtest-423.cs">
-    <type name="App">
+    <type name="MonoTest.A`1[TA]">
       <method name="Void .ctor()">
         <size>7</size>
       </method>
-      <method name="Void Main()">
-        <size>33</size>
+    </type>
+    <type name="MonoTest.A`1+B`1[TA,TB]">
+      <method name="Void foo()">
+        <size>1</size>
       </method>
-      <method name="Void Test(System.Object, System.EventArgs)">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="MonoTest.A`1+B`1+C[TA,TB]">
+      <method name="Void bar()">
+        <size>16</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="MonoTest.Program">
+      <method name="Void Main()">
         <size>1</size>
       </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
     </type>
   </test>
   <test name="gtest-424.cs">
@@ -11276,7 +11334,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>173</size>
+        <size>174</size>
       </method>
     </type>
   </test>
@@ -11389,7 +11447,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>258</size>
+        <size>261</size>
       </method>
     </type>
   </test>
@@ -11583,6 +11641,43 @@
       </method>
     </type>
   </test>
+  <test name="gtest-448.cs">
+    <type name="Impl`1[T]">
+      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
+        <size>2</size>
+      </method>
+      <method name="Void Foo[U](IEnumerable`1)">
+        <size>1</size>
+      </method>
+      <method name="IEnumerator`1 GetEnumerator()">
+        <size>2</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="A`1[K]">
+      <method name="Void .ctor()">
+        <size>18</size>
+      </method>
+    </type>
+    <type name="Test`1[TT]">
+      <method name="Void Foo()">
+        <size>24</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="M">
+      <method name="Void Main()">
+        <size>11</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="gtest-449.cs">
     <type name="Program">
       <method name="Void .ctor()">
@@ -11603,6 +11698,34 @@
       </method>
     </type>
   </test>
+  <test name="gtest-451.cs">
+    <type name="Test">
+      <method name="Int32 Main()">
+        <size>18</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-452.cs">
+    <type name="Test">
+      <method name="Int32 Main()">
+        <size>51</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="S">
+      <method name="Single op_Implicit(S)">
+        <size>11</size>
+      </method>
+      <method name="Nullable`1 op_Implicit(S)">
+        <size>11</size>
+      </method>
+    </type>
+  </test>
   <test name="gtest-453.cs">
     <type name="Test.CompilerTest">
       <method name="Void .ctor()">
@@ -12922,7 +13045,7 @@
   <test name="gtest-514.cs">
     <type name="test2.Test`3[T,U,V]">
       <method name="Void Method()">
-        <size>128</size>
+        <size>127</size>
       </method>
       <method name="Void .ctor()">
         <size>7</size>
@@ -13115,10 +13238,10 @@
     </type>
     <type name="E`1+I[T]">
       <method name="Void add_E(D)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_E(D)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void .ctor()">
         <size>7</size>
@@ -13487,6 +13610,386 @@
       </method>
     </type>
   </test>
+  <test name="gtest-536.cs">
+    <type name="Test">
+      <method name="Void Main()">
+        <size>6</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Test+Expression`1[TDelegate]">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Test+Expression">
+      <method name="Void Test()">
+        <size>1</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-537.cs">
+    <type name="Test">
+      <method name="Int32 Main()">
+        <size>86</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="S">
+      <method name="System.String op_BitwiseOr(S, Nullable`1)">
+        <size>6</size>
+      </method>
+      <method name="Nullable`1 op_Addition(S, Nullable`1)">
+        <size>8</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-538.cs">
+    <type name="S">
+      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
+        <size>6</size>
+      </method>
+      <method name="IEnumerator`1 GetEnumerator()">
+        <size>15</size>
+      </method>
+      <method name="Void .ctor(Int32)">
+        <size>1</size>
+      </method>
+    </type>
+    <type name="S2">
+      <method name="IEnumerator`1 GetEnumerator()">
+        <size>15</size>
+      </method>
+    </type>
+    <type name="Enumerator`1[T]">
+      <method name="System.Object System.Collections.IEnumerator.get_Current()">
+        <size>6</size>
+      </method>
+      <method name="T get_Current()">
+        <size>6</size>
+      </method>
+      <method name="Boolean MoveNext()">
+        <size>2</size>
+      </method>
+      <method name="Void Reset()">
+        <size>6</size>
+      </method>
+      <method name="Void Dispose()">
+        <size>13</size>
+      </method>
+    </type>
+    <type name="MySystem">
+      <method name="Int32 Main()">
+        <size>182</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-539.cs">
+    <type name="S">
+      <method name="Int32 get_ID()">
+        <size>7</size>
+      </method>
+      <method name="Void set_ID(Int32)">
+        <size>8</size>
+      </method>
+    </type>
+    <type name="C">
+      <method name="C op_Explicit(S)">
+        <size>11</size>
+      </method>
+      <method name="C op_Explicit(Nullable`1)">
+        <size>39</size>
+      </method>
+      <method name="Void .ctor(Int32)">
+        <size>14</size>
+      </method>
+    </type>
+    <type name="Test">
+      <method name="Int32 Main()">
+        <size>79</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-540.cs">
+    <type name="C">
+      <method name="Int32 Main()">
+        <size>809</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-541.cs">
+    <type name="Foo">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Top`1[S]">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Top`1+Base`1[S,T]">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Top`1+Base`1+Derived`1[S,T,U]">
+      <method name="Void Test()">
+        <size>1</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Test">
+      <method name="Int32 Main()">
+        <size>14</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-542.cs">
+    <type name="A`1[T]">
+      <method name="T getT()">
+        <size>0</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="A`1+B[T]">
+      <method name="A`1+B[T] getT()">
+        <size>2</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="C">
+      <method name="Int32 Main()">
+        <size>22</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-543.cs">
+    <type name="Blah`1[T]">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Blah`1+WrapperWrapper`1[T,N]">
+      <method name="Blah`1+WrapperWrapper`1[T,N] NewWrapperWrapper(Wrapper`1[N])">
+        <size>7</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>12</size>
+      </method>
+      <method name="Void .ctor(Wrapper`1)">
+        <size>14</size>
+      </method>
+    </type>
+    <type name="Wrapper`1[U]">
+      <method name="Void .ctor(U)">
+        <size>7</size>
+      </method>
+      <method name="Void .cctor()">
+        <size>20</size>
+      </method>
+    </type>
+    <type name="C">
+      <method name="Int32 Main()">
+        <size>26</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-544.cs">
+    <type name="A`1[T]">
+      <method name="G Foo[G]()">
+        <size>0</size>
+      </method>
+      <method name="G Foo2[G]()">
+        <size>10</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="B">
+      <method name="G Foo[G]()">
+        <size>6</size>
+      </method>
+      <method name="G Foo2[G]()">
+        <size>7</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="A2`1[T]">
+      <method name="Void Foo[U]()">
+        <size>0</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="B2">
+      <method name="Void Foo[Y]()">
+        <size>1</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Program">
+      <method name="Int32 Main()">
+        <size>51</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-545.cs">
+    <type name="ApplicationContext">
+      <method name="Boolean Foo()">
+        <size>2</size>
+      </method>
+      <method name="Int32 Main()">
+        <size>104</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-546.cs">
+    <type name="Factory">
+      <method name="Factory+S`2[F1,F2] Create[F1,F2](F1, F2)">
+        <size>2</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Factory+S`2[G1,G2]">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="A">
+      <method name="TR Test[T1,T2,TR](T1, T2, System.Func`3[T1,T2,TR])">
+        <size>9</size>
+      </method>
+      <method name="Void Main()">
+        <size>29</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-547.cs">
+    <type name="Foo">
+      <method name="Void GenericLock[T](T)">
+        <size>26</size>
+      </method>
+      <method name="Void Main()">
+        <size>11</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-548.cs">
+    <type name="C">
+      <method name="Int32 Main()">
+        <size>12</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-549.cs">
+    <type name="C`1[T]">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="D">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="D+Impl">
+      <method name="Void MA(Int32)">
+        <size>1</size>
+      </method>
+      <method name="Void MB(Int32)">
+        <size>1</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Test">
+      <method name="Void Main()">
+        <size>21</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-550.cs">
+    <type name="Foo.Magic">
+      <method name="Int32 Main()">
+        <size>12</size>
+      </method>
+    </type>
+    <type name="Foo.Magic`1[T]">
+      <method name="Void Upsample(IUpDown)">
+        <size>8</size>
+      </method>
+    </type>
+    <type name="Foo.Instance">
+      <method name="Int32 get_DestinationDimension()">
+        <size>2</size>
+      </method>
+      <method name="Decimal get_Item(Int32)">
+        <size>6</size>
+      </method>
+      <method name="Void set_Item(Int32, Decimal)">
+        <size>6</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="gtest-anon-1.cs">
     <type name="X">
       <method name="Void .ctor()">
@@ -13548,7 +14051,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>110</size>
+        <size>108</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -13973,6 +14476,30 @@
       </method>
     </type>
   </test>
+  <test name="gtest-anon-20.cs">
+    <type name="C`1[T]">
+      <method name="Void Foo[U](U)">
+        <size>20</size>
+      </method>
+      <method name="Void Run()">
+        <size>1</size>
+      </method>
+      <method name="Void <Foo`1>m__0[U]()">
+        <size>6</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="A">
+      <method name="Void Main()">
+        <size>8</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="gtest-anon-21.cs">
     <type name="BaseObject">
       <method name="Void .ctor()">
@@ -14089,7 +14616,7 @@
         <size>1</size>
       </method>
       <method name="Void Main()">
-        <size>212</size>
+        <size>246</size>
       </method>
     </type>
     <type name="C+D">
@@ -14125,11 +14652,6 @@
         <size>61</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
     <type name="B">
       <method name="Void BaseM()">
         <size>1</size>
@@ -14158,6 +14680,12 @@
       <method name="Void <BaseM>__BaseCallProxy0()">
         <size>7</size>
       </method>
+      <method name="Void Test(System.Action`1[E])">
+        <size>8</size>
+      </method>
+      <method name="Void <Main>m__7(E)">
+        <size>36</size>
+      </method>
     </type>
   </test>
   <test name="gtest-anon-24.cs">
@@ -14201,7 +14729,7 @@
         <size>26</size>
       </method>
       <method name="Int32 Main()">
-        <size>572</size>
+        <size>570</size>
       </method>
     </type>
     <type name="Test+<For>c__AnonStorey0`1[T]">
@@ -14678,7 +15206,7 @@
         <size>33</size>
       </method>
       <method name="System.String Implode[TSource](IEnumerable`1, System.String, System.Action`2[System.Text.StringBuilder,TSource])">
-        <size>128</size>
+        <size>125</size>
       </method>
     </type>
     <type name="Test">
@@ -14795,16 +15323,16 @@
         <size>7</size>
       </method>
       <method name="Void add_handler(Handler`1[T])">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_handler(Handler`1[T])">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void add_Handler(Handler`1[T])">
-        <size>64</size>
+        <size>48</size>
       </method>
       <method name="Void remove_Handler(Handler`1[T])">
-        <size>24</size>
+        <size>8</size>
       </method>
       <method name="Void <add_Handler>m__0(System.Object)">
         <size>18</size>
@@ -14892,11 +15420,6 @@
         <size>7</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
   </test>
   <test name="gtest-anon-39.cs">
     <type name="Test">
@@ -14972,11 +15495,6 @@
         <size>16</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
     <type name="Test+<GetItems>c__Iterator0">
       <method name="Void .ctor()">
         <size>7</size>
@@ -14988,7 +15506,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>69</size>
+        <size>67</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -15364,7 +15882,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>98</size>
+        <size>96</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -15410,7 +15928,7 @@
         <size>7</size>
       </method>
       <method name="Void Invoke(SomeGenericClass`1+SomeHandlerType[SomeType])">
-        <size>1</size>
+        <size>7</size>
       </method>
       <method name="Void FailsToCompile()">
         <size>19</size>
@@ -15871,11 +16389,6 @@
         <size>7</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
     <type name="TestCase+<Test>c__AnonStorey0`1[T]">
       <method name="Void <>m__0()">
         <size>46</size>
@@ -15990,6 +16503,53 @@
       </method>
     </type>
   </test>
+  <test name="gtest-anon-64.cs">
+    <type name="C`1[T]">
+      <method name="Void Foo[U](U)">
+        <size>81</size>
+      </method>
+      <method name="Void Run(T)">
+        <size>1</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="D">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="E">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="A">
+      <method name="Int32 Main()">
+        <size>12</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="C`1+<Foo>c__AnonStorey0`1[T,U]">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="C`1+<Foo>c__AnonStorey1`1[T,U]">
+      <method name="U <>m__0()">
+        <size>12</size>
+      </method>
+      <method name="Void <>m__1()">
+        <size>12</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="gtest-anon-7.cs">
     <type name="MyDisposable">
       <method name="Void .ctor()">
@@ -16027,7 +16587,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>180</size>
+        <size>178</size>
       </method>
       <method name="Void Dispose()">
         <size>66</size>
@@ -16134,7 +16694,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>65</size>
+        <size>63</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -16154,7 +16714,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>98</size>
+        <size>96</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -16180,6 +16740,33 @@
       </method>
     </type>
   </test>
+  <test name="gtest-anon-type-12.cs">
+    <type name="C">
+      <method name="Int32 Main()">
+        <size>23</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="<>__AnonType0`1[<ToString>__T]">
+      <method name="<ToString>__T get_ToString()">
+        <size>7</size>
+      </method>
+      <method name="Boolean Equals(System.Object)">
+        <size>39</size>
+      </method>
+      <method name="Int32 GetHashCode()">
+        <size>63</size>
+      </method>
+      <method name="System.String ToString()">
+        <size>67</size>
+      </method>
+      <method name="Void .ctor(<ToString>__T)">
+        <size>14</size>
+      </method>
+    </type>
+  </test>
   <test name="gtest-anontype-01.cs">
     <type name="Test">
       <method name="Void .ctor()">
@@ -16826,7 +17413,7 @@
         <size>83</size>
       </method>
       <method name="Int32 Main()">
-        <size>534</size>
+        <size>528</size>
       </method>
     </type>
     <type name="Test+Wrap">
@@ -16881,10 +17468,10 @@
         <size>16</size>
       </method>
       <method name="Void add_EventField(System.Func`1[System.Boolean])">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_EventField(System.Func`1[System.Boolean])">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="System.Linq.Expressions.Expression`1[System.Func`1[System.Func`1[System.Boolean]]] GetEvent()">
         <size>33</size>
@@ -17334,7 +17921,7 @@
         <size>162</size>
       </method>
       <method name="Void LeftShiftTest_3()">
-        <size>184</size>
+        <size>169</size>
       </method>
       <method name="Void LeftShiftTest_4()">
         <size>261</size>
@@ -17676,7 +18263,7 @@
         <size>159</size>
       </method>
       <method name="Void RightShiftTest_3()">
-        <size>184</size>
+        <size>169</size>
       </method>
       <method name="Void RightShiftTest_4()">
         <size>258</size>
@@ -18013,13 +18600,6 @@
       <method name="Void NewArrayBoundsTest_4()">
         <size>82</size>
       </method>
-    </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
-    <type name="Tester">
       <method name="Void LeftShiftTest_6()">
         <size>155</size>
       </method>
@@ -18068,6 +18648,18 @@
       <method name="Void EqualTestDelegate_3()">
         <size>227</size>
       </method>
+      <method name="Void DivideTest_7()">
+        <size>185</size>
+      </method>
+      <method name="Void MultiplyTest_8()">
+        <size>198</size>
+      </method>
+      <method name="Void RightShiftTest_6()">
+        <size>145</size>
+      </method>
+      <method name="Void TypeAsTest_4()">
+        <size>113</size>
+      </method>
     </type>
   </test>
   <test name="gtest-etree-02.cs">
@@ -18176,7 +18768,7 @@
         <size>3</size>
       </method>
       <method name="Int32 Main()">
-        <size>564</size>
+        <size>581</size>
       </method>
     </type>
     <type name="EmptyDelegate">
@@ -18207,6 +18799,14 @@
         <size>0</size>
       </method>
     </type>
+    <type name="C">
+      <method name="Void M()">
+        <size>1</size>
+      </method>
+      <method name="Int32 TestInstance()">
+        <size>351</size>
+      </method>
+    </type>
   </test>
   <test name="gtest-etree-08.cs">
     <type name="Foo">
@@ -18235,7 +18835,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>300</size>
+        <size>298</size>
       </method>
       <method name="System.Int64[] GetValues()">
         <size>18</size>
@@ -18246,11 +18846,6 @@
         <size>7</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
   </test>
   <test name="gtest-etree-10.cs">
     <type name="Foo`1[T]">
@@ -18277,11 +18872,6 @@
         <size>7</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
   </test>
   <test name="gtest-etree-11.cs">
     <type name="C">
@@ -18359,7 +18949,7 @@
         <size>40</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>108</size>
+        <size>106</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -18412,7 +19002,7 @@
         <size>52</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>295</size>
+        <size>293</size>
       </method>
       <method name="Void Dispose()">
         <size>62</size>
@@ -18496,7 +19086,7 @@
   <test name="gtest-etree-20.cs">
     <type name="S">
       <method name="Int32 Main()">
-        <size>215</size>
+        <size>216</size>
       </method>
     </type>
     <type name="A">
@@ -18582,6 +19172,63 @@
       </method>
     </type>
   </test>
+  <test name="gtest-etree-25.cs">
+    <type name="Foo">
+      <method name="Void OnBaz(IBaz)">
+        <size>1</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="C">
+      <method name="Void RunOnBaz(System.Action`1[IBaz])">
+        <size>8</size>
+      </method>
+      <method name="Int32 Main()">
+        <size>229</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="C+<Main>c__AnonStorey0">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-etree-26.cs">
+    <type name="A`1[TA]">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="A`1+B`1[TA,TB]">
+      <method name="Void foo()">
+        <size>39</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="A`1+B`1+C`1[TA,TB,TC]">
+      <method name="Void bar()">
+        <size>6</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Program">
+      <method name="Int32 Main()">
+        <size>7</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="gtest-exmethod-01.cs">
     <type name="SimpleTest">
       <method name="System.String Prefix(System.String, System.String)">
@@ -18864,10 +19511,10 @@
         <size>7</size>
       </method>
       <method name="Void add_e(D)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_e(D)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="System.String get_Item(Int32)">
         <size>6</size>
@@ -19324,6 +19971,116 @@
       </method>
     </type>
   </test>
+  <test name="gtest-fixedbuffer-01.cs">
+    <type name="TestNew">
+      <method name="Void SetTest()">
+        <size>20</size>
+      </method>
+    </type>
+    <type name="C">
+      <method name="Int32 Test()">
+        <size>323</size>
+      </method>
+      <method name="Int32 Main()">
+        <size>6</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-fixedbuffer-02.cs">
+    <type name="M">
+      <method name="Void Main()">
+        <size>1</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-fixedbuffer-03.cs">
+    <type name="Bug.RedSkyTimeCode">
+      <method name="Void CopyTo(Bug.xxx*)">
+        <size>99</size>
+      </method>
+      <method name="Void Convert(Bug.xxx*, UInt64*)">
+        <size>93</size>
+      </method>
+      <method name="Void Main()">
+        <size>1</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-fixedbuffer-04.cs">
+    <type name="aClass">
+      <method name="Void Main(System.String[])">
+        <size>14</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-fixedbuffer-05.cs">
+    <type name="S2">
+      <method name="Void Test()">
+        <size>39</size>
+      </method>
+      <method name="Void Main()">
+        <size>16</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-fixedbuffer-06.cs">
+    <type name="Bug.Demo">
+      <method name="Boolean Fixed()">
+        <size>14</size>
+      </method>
+      <method name="Boolean Foo(System.Int32[])">
+        <size>43</size>
+      </method>
+      <method name="Int32 Main()">
+        <size>65</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-fixedbuffer-07.cs">
+    <type name="C">
+      <method name="Void Goo()">
+        <size>11</size>
+      </method>
+      <method name="Void Main()">
+        <size>1</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-fixedbuffer-08.cs">
+    <type name="A">
+      <method name="Int32 Main()">
+        <size>150</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-fixedbuffer-09.cs">
+    <type name="Test">
+      <method name="Int32 Main()">
+        <size>65</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="gtest-friend-01.cs">
     <type name="Test">
       <method name="Void .ctor()">
@@ -19484,11 +20241,6 @@
         <size>296</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
   </test>
   <test name="gtest-implicitarray-02.cs">
     <type name="MyString">
@@ -19508,6 +20260,27 @@
       </method>
     </type>
   </test>
+  <test name="gtest-implicitarray-03.cs">
+    <type name="InferArrayType">
+      <method name="Void foo(System.Func`2[System.Linq.Expressions.Expression,System.Boolean][])">
+        <size>1</size>
+      </method>
+      <method name="Void bar(System.Action`1[System.Linq.Expressions.Expression], System.Func`2[System.Linq.Expressions.Expression,System.Boolean])">
+        <size>44</size>
+      </method>
+      <method name="Void Main()">
+        <size>1</size>
+      </method>
+    </type>
+    <type name="InferArrayType+<bar>c__AnonStorey0">
+      <method name="Boolean <>m__0(System.Linq.Expressions.Expression)">
+        <size>14</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="gtest-initialize-01.cs">
     <type name="MyClass">
       <method name="Void .ctor()">
@@ -19535,7 +20308,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>1243</size>
+        <size>1234</size>
       </method>
     </type>
     <type name="Test+Point">
@@ -19698,11 +20471,6 @@
         <size>53</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
   </test>
   <test name="gtest-initialize-10.cs">
     <type name="Foo">
@@ -19800,7 +20568,7 @@
         <size>12</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>136</size>
+        <size>134</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -19872,7 +20640,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>196</size>
+        <size>194</size>
       </method>
       <method name="Void Dispose()">
         <size>62</size>
@@ -19892,7 +20660,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>219</size>
+        <size>217</size>
       </method>
       <method name="Void Dispose()">
         <size>57</size>
@@ -19999,7 +20767,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>187</size>
+        <size>185</size>
       </method>
       <method name="Void Dispose()">
         <size>62</size>
@@ -20051,7 +20819,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>184</size>
+        <size>181</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -20098,7 +20866,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>187</size>
+        <size>185</size>
       </method>
       <method name="Void Dispose()">
         <size>57</size>
@@ -20137,7 +20905,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>84</size>
+        <size>82</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -20186,7 +20954,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>130</size>
+        <size>128</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -20201,11 +20969,6 @@
         <size>40</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
   </test>
   <test name="gtest-iter-10.cs">
     <type name="Test">
@@ -20236,7 +20999,7 @@
         <size>52</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>103</size>
+        <size>101</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -20287,7 +21050,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>150</size>
+        <size>143</size>
       </method>
     </type>
     <type name="Collection`1+<GetEnumerator>c__Iterator0[T]">
@@ -20301,7 +21064,7 @@
         <size>12</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>176</size>
+        <size>174</size>
       </method>
       <method name="Void Dispose()">
         <size>57</size>
@@ -20337,7 +21100,7 @@
         <size>40</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>117</size>
+        <size>115</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -20384,10 +21147,10 @@
         <size>52</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>205</size>
+        <size>215</size>
       </method>
       <method name="Void Dispose()">
-        <size>64</size>
+        <size>76</size>
       </method>
       <method name="Void Reset()">
         <size>6</size>
@@ -20433,7 +21196,7 @@
         <size>23</size>
       </method>
       <method name="Int32 Main()">
-        <size>133</size>
+        <size>135</size>
       </method>
       <method name="Int32 <get_BaseM>__BaseCallProxy0()">
         <size>7</size>
@@ -20459,7 +21222,7 @@
         <size>40</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>75</size>
+        <size>73</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -20485,7 +21248,7 @@
         <size>40</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>86</size>
+        <size>84</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -20534,7 +21297,7 @@
         <size>40</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>181</size>
+        <size>179</size>
       </method>
       <method name="Void Dispose()">
         <size>62</size>
@@ -20547,6 +21310,197 @@
       </method>
     </type>
   </test>
+  <test name="gtest-iter-16.cs">
+    <type name="Test.Base">
+      <method name="IEnumerable`1 GetStuff(Int32)">
+        <size>23</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Test.Derived">
+      <method name="IEnumerable`1 GetStuff(Int32)">
+        <size>37</size>
+      </method>
+      <method name="IEnumerable`1 <GetStuff>__BaseCallProxy0(Int32)">
+        <size>8</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Test.SpecialDerived">
+      <method name="IEnumerable`1 GetStuff(Int32)">
+        <size>37</size>
+      </method>
+      <method name="Void Main()">
+        <size>61</size>
+      </method>
+      <method name="IEnumerable`1 <GetStuff>__BaseCallProxy0(Int32)">
+        <size>8</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Test.Base+<GetStuff>c__Iterator0">
+      <method name="Test.Base System.Collections.Generic.IEnumerator<Test.Base>.get_Current()">
+        <size>7</size>
+      </method>
+      <method name="System.Object System.Collections.IEnumerator.get_Current()">
+        <size>7</size>
+      </method>
+      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
+        <size>7</size>
+      </method>
+      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<Test.Base>.GetEnumerator()">
+        <size>40</size>
+      </method>
+      <method name="Boolean MoveNext()">
+        <size>68</size>
+      </method>
+      <method name="Void Dispose()">
+        <size>8</size>
+      </method>
+      <method name="Void Reset()">
+        <size>6</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Test.Derived+<GetStuff>c__Iterator1">
+      <method name="Test.Base System.Collections.Generic.IEnumerator<Test.Base>.get_Current()">
+        <size>7</size>
+      </method>
+      <method name="System.Object System.Collections.IEnumerator.get_Current()">
+        <size>7</size>
+      </method>
+      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
+        <size>7</size>
+      </method>
+      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<Test.Base>.GetEnumerator()">
+        <size>52</size>
+      </method>
+      <method name="Boolean MoveNext()">
+        <size>185</size>
+      </method>
+      <method name="Void Dispose()">
+        <size>62</size>
+      </method>
+      <method name="Void Reset()">
+        <size>6</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Test.SpecialDerived+<GetStuff>c__Iterator2">
+      <method name="Test.Base System.Collections.Generic.IEnumerator<Test.Base>.get_Current()">
+        <size>7</size>
+      </method>
+      <method name="System.Object System.Collections.IEnumerator.get_Current()">
+        <size>7</size>
+      </method>
+      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
+        <size>7</size>
+      </method>
+      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<Test.Base>.GetEnumerator()">
+        <size>52</size>
+      </method>
+      <method name="Boolean MoveNext()">
+        <size>185</size>
+      </method>
+      <method name="Void Dispose()">
+        <size>62</size>
+      </method>
+      <method name="Void Reset()">
+        <size>6</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-iter-17.cs">
+    <type name="Test">
+      <method name="IEnumerable`1 TestMethod()">
+        <size>16</size>
+      </method>
+      <method name="Void Main()">
+        <size>1</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Test+<TestMethod>c__Iterator0">
+      <method name="Int32 System.Collections.Generic.IEnumerator<int>.get_Current()">
+        <size>7</size>
+      </method>
+      <method name="System.Object System.Collections.IEnumerator.get_Current()">
+        <size>12</size>
+      </method>
+      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
+        <size>7</size>
+      </method>
+      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<int>.GetEnumerator()">
+        <size>26</size>
+      </method>
+      <method name="Boolean MoveNext()">
+        <size>45</size>
+      </method>
+      <method name="Void Dispose()">
+        <size>8</size>
+      </method>
+      <method name="Void Reset()">
+        <size>6</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-iter-18.cs">
+    <type name="c">
+      <method name="IEnumerable`1 func()">
+        <size>16</size>
+      </method>
+      <method name="Void Main()">
+        <size>53</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="c+<func>c__Iterator0">
+      <method name="Char System.Collections.Generic.IEnumerator<char>.get_Current()">
+        <size>7</size>
+      </method>
+      <method name="System.Object System.Collections.IEnumerator.get_Current()">
+        <size>12</size>
+      </method>
+      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
+        <size>7</size>
+      </method>
+      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<char>.GetEnumerator()">
+        <size>26</size>
+      </method>
+      <method name="Boolean MoveNext()">
+        <size>69</size>
+      </method>
+      <method name="Void Dispose()">
+        <size>8</size>
+      </method>
+      <method name="Void Reset()">
+        <size>6</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="gtest-lambda-01.cs">
     <type name="X">
       <method name="Int32 Main()">
@@ -21234,7 +22188,7 @@
         <size>32</size>
       </method>
       <method name="TR Sum[TA,TR](IEnumerable`1, System.Func`3[TR,TA,TR])">
-        <size>122</size>
+        <size>123</size>
       </method>
     </type>
     <type name="Repro">
@@ -21531,13 +22485,29 @@
       </method>
     </type>
   </test>
+  <test name="gtest-lambda-26.cs">
+    <type name="C">
+      <method name="Void Main()">
+        <size>35</size>
+      </method>
+      <method name="Void Execute(System.Action)">
+        <size>1</size>
+      </method>
+      <method name="Void <Main>m__0()">
+        <size>1</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="gtest-linq-01.cs">
     <type name="from.C">
       <method name="Void .ctor()">
         <size>7</size>
       </method>
       <method name="Void Main()">
-        <size>2205</size>
+        <size>2180</size>
       </method>
       <method name="Void Foo(Int32, Boolean)">
         <size>11</size>
@@ -21866,7 +22836,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>509</size>
+        <size>507</size>
       </method>
       <method name="Int32 <Main>m__0(Int32)">
         <size>2</size>
@@ -21907,15 +22877,8 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>561</size>
-      </method>
-    </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
+        <size>559</size>
       </method>
-    </type>
-    <type name="TestGroupBy">
       <method name="Int32 <Main>m__0(Int32)">
         <size>4</size>
       </method>
@@ -22019,7 +22982,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>410</size>
+        <size>408</size>
       </method>
     </type>
     <type name="<>__AnonType0`2[<i>__T,<u>__T]">
@@ -22089,7 +23052,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>754</size>
+        <size>748</size>
       </method>
     </type>
     <type name="<>__AnonType0`2[<i1>__T,<i2>__T]">
@@ -22236,7 +23199,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>912</size>
+        <size>911</size>
       </method>
     </type>
     <type name="<>__AnonType0`1[<Result>__T]">
@@ -22343,7 +23306,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>729</size>
+        <size>734</size>
       </method>
     </type>
     <type name="<>__AnonType0`2[<a>__T,<ab>__T]">
@@ -22684,7 +23647,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>86</size>
+        <size>84</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -22773,17 +23736,12 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>159</size>
+        <size>157</size>
       </method>
       <method name="Int32 <Main>m__0(Int32)">
         <size>2</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
   </test>
   <test name="gtest-linq-18.cs">
     <type name="C">
@@ -22876,11 +23834,6 @@
         <size>142</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
     <type name="C+<Main>c__AnonStorey0">
       <method name="Void .ctor()">
         <size>7</size>
@@ -23212,7 +24165,7 @@
     </type>
     <type name="OrderByBugExample.Program">
       <method name="Int32 Main()">
-        <size>351</size>
+        <size>345</size>
       </method>
       <method name="System.String <Main>m__0(OrderByBugExample.Foo)">
         <size>7</size>
@@ -23249,6 +24202,90 @@
       </method>
     </type>
   </test>
+  <test name="gtest-linq-25.cs">
+    <type name="A">
+      <method name="System.String get_Header()">
+        <size>2</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="B">
+      <method name="System.String get_Name()">
+        <size>2</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="C">
+      <method name="Int32 Main()">
+        <size>36</size>
+      </method>
+      <method name="Void Test(System.Action)">
+        <size>7</size>
+      </method>
+      <method name="Void <Main>m__0()">
+        <size>159</size>
+      </method>
+      <method name="IEnumerable`1 <Main>m__1(A)">
+        <size>7</size>
+      </method>
+      <method name="<>__AnonType0`2[A,B] <Main>m__2(A, B)">
+        <size>8</size>
+      </method>
+      <method name="Boolean <Main>m__3(<>__AnonType0`2[A,B])">
+        <size>67</size>
+      </method>
+      <method name="<>__AnonType1`2[A,B] <Main>m__4(<>__AnonType0`2[A,B])">
+        <size>18</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="<>__AnonType0`2[<c>__T,<p>__T]">
+      <method name="<c>__T get_c()">
+        <size>7</size>
+      </method>
+      <method name="<p>__T get_p()">
+        <size>7</size>
+      </method>
+      <method name="Boolean Equals(System.Object)">
+        <size>69</size>
+      </method>
+      <method name="Int32 GetHashCode()">
+        <size>86</size>
+      </method>
+      <method name="System.String ToString()">
+        <size>142</size>
+      </method>
+      <method name="Void .ctor(<c>__T, <p>__T)">
+        <size>21</size>
+      </method>
+    </type>
+    <type name="<>__AnonType1`2[<C>__T,<P>__T]">
+      <method name="<C>__T get_C()">
+        <size>7</size>
+      </method>
+      <method name="<P>__T get_P()">
+        <size>7</size>
+      </method>
+      <method name="Boolean Equals(System.Object)">
+        <size>69</size>
+      </method>
+      <method name="Int32 GetHashCode()">
+        <size>86</size>
+      </method>
+      <method name="System.String ToString()">
+        <size>142</size>
+      </method>
+      <method name="Void .ctor(<C>__T, <P>__T)">
+        <size>21</size>
+      </method>
+    </type>
+  </test>
   <test name="gtest-named-01.cs">
     <type name="C">
       <method name="Int32 Test(Int32, Int32, System.String)">
@@ -23295,11 +24332,17 @@
         <size>2</size>
       </method>
       <method name="Int32 Main()">
-        <size>38</size>
+        <size>77</size>
       </method>
       <method name="Void .ctor()">
         <size>7</size>
       </method>
+      <method name="Void set_Item(Int32, Int32, Int32, Int32)">
+        <size>21</size>
+      </method>
+      <method name="Int32 get_Item(Int32, Int32, Int32)">
+        <size>7</size>
+      </method>
     </type>
   </test>
   <test name="gtest-optional-01.cs">
@@ -23330,7 +24373,7 @@
         <size>27</size>
       </method>
       <method name="Int32 Main()">
-        <size>101</size>
+        <size>122</size>
       </method>
       <method name="Void .ctor()">
         <size>7</size>
@@ -23338,6 +24381,9 @@
       <method name="Boolean Test3(Nullable`1)">
         <size>21</size>
       </method>
+      <method name="Int64 Test4(Nullable`1)">
+        <size>8</size>
+      </method>
     </type>
   </test>
   <test name="gtest-optional-03.cs">
@@ -23346,7 +24392,7 @@
         <size>2</size>
       </method>
       <method name="Int32 Main()">
-        <size>225</size>
+        <size>240</size>
       </method>
       <method name="Void .ctor()">
         <size>7</size>
@@ -23365,7 +24411,7 @@
         <size>1</size>
       </method>
       <method name="Void TestStruct(Nullable`1)">
-        <size>1</size>
+        <size>24</size>
       </method>
       <method name="System.String get_Item(Int32, System.String)">
         <size>2</size>
@@ -23374,11 +24420,14 @@
         <size>4</size>
       </method>
       <method name="Int32 Main()">
-        <size>120</size>
+        <size>134</size>
       </method>
       <method name="Void .ctor()">
         <size>7</size>
       </method>
+      <method name="Void TestStruct2(Nullable`1)">
+        <size>1</size>
+      </method>
     </type>
   </test>
   <test name="gtest-optional-05.cs">
@@ -23548,11 +24597,14 @@
         <size>2</size>
       </method>
       <method name="Int32 Main()">
-        <size>76</size>
+        <size>211</size>
       </method>
       <method name="Void .ctor()">
         <size>7</size>
       </method>
+      <method name="Int32 TestD(Int32, Int32)">
+        <size>2</size>
+      </method>
     </type>
   </test>
   <test name="gtest-optional-12.cs">
@@ -23567,7 +24619,74 @@
         <size>7</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
+  </test>
+  <test name="gtest-optional-13.cs">
+    <type name="A">
+      <method name="Int32 Foo(Int32)">
+        <size>2</size>
+      </method>
+      <method name="Int32 Foo2(Int32)">
+        <size>2</size>
+      </method>
+      <method name="Int32 get_Item(System.String, Int32)">
+        <size>2</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="B">
+      <method name="Int32 Foo(Int32)">
+        <size>4</size>
+      </method>
+      <method name="Int32 Foo2(Int32)">
+        <size>3</size>
+      </method>
+      <method name="Int32 get_Item(System.String, Int32)">
+        <size>4</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="C">
+      <method name="Int32 Main()">
+        <size>137</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-optional-14.cs">
+    <type name="A">
+      <method name="Int32 GetValues(System.String[], System.String)">
+        <size>2</size>
+      </method>
+      <method name="Int32 GetValues(System.String, System.String[])">
+        <size>2</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="B">
+      <method name="Int32 Main()">
+        <size>24</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-optional-15.cs">
+    <type name="Program">
+      <method name="Void Test(S)">
+        <size>1</size>
+      </method>
+      <method name="Int32 Main()">
+        <size>63</size>
+      </method>
       <method name="Void .ctor()">
         <size>7</size>
       </method>
@@ -23703,13 +24822,13 @@
   <test name="gtest-variance-12.cs">
     <type name="D">
       <method name="Void add_field(D`1[System.String])">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_field(D`1[System.String])">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Int32 Main()">
-        <size>72</size>
+        <size>56</size>
       </method>
       <method name="Void <Main>m__0()">
         <size>1</size>
@@ -24486,7 +25605,7 @@
         <size>7</size>
       </method>
       <method name="Void ExtraTst()">
-        <size>12</size>
+        <size>10</size>
       </method>
     </type>
   </test>
@@ -25367,10 +26486,10 @@
         <size>7</size>
       </method>
       <method name="Void add_Blah(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_Blah(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
     </type>
   </test>
@@ -25612,19 +26731,19 @@
         <size>1</size>
       </method>
       <method name="Void add_Foo(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_Foo(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void add_TestEvent(MyDelegate)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_TestEvent(MyDelegate)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Int32 Test()">
-        <size>166</size>
+        <size>134</size>
       </method>
       <method name="Void callback1(System.Object, System.EventArgs)">
         <size>7</size>
@@ -25641,10 +26760,10 @@
         <size>7</size>
       </method>
       <method name="Void add_BuildStarted(Z+SomeEventHandler)">
-        <size>22</size>
+        <size>45</size>
       </method>
       <method name="Void remove_BuildStarted(Z+SomeEventHandler)">
-        <size>22</size>
+        <size>45</size>
       </method>
       <method name="Int32 a()">
         <size>2</size>
@@ -25658,10 +26777,10 @@
         <size>7</size>
       </method>
       <method name="Void add_Test(System.EventHandler)">
-        <size>22</size>
+        <size>45</size>
       </method>
       <method name="Void remove_Test(System.EventHandler)">
-        <size>22</size>
+        <size>45</size>
       </method>
       <method name="Void Fire()">
         <size>23</size>
@@ -25764,7 +26883,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>99</size>
+        <size>101</size>
       </method>
     </type>
   </test>
@@ -25805,7 +26924,7 @@
         <size>33</size>
       </method>
       <method name="Int32 test5(Single ByRef, Int64)">
-        <size>75</size>
+        <size>73</size>
       </method>
       <method name="Int32 test6(Single ByRef)">
         <size>10</size>
@@ -26992,7 +28111,7 @@
         <size>7</size>
       </method>
       <method name="Void A(System.Collections.Specialized.NameValueCollection, MyClass, System.Object)">
-        <size>65</size>
+        <size>69</size>
       </method>
       <method name="Int32 Main()">
         <size>2</size>
@@ -27306,7 +28425,7 @@
         <size>15</size>
       </method>
       <method name="Void Bug2()">
-        <size>16</size>
+        <size>15</size>
       </method>
       <method name="Int32 Main()">
         <size>2</size>
@@ -27648,11 +28767,6 @@
         <size>91</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
   </test>
   <test name="test-207.cs">
     <type name="X">
@@ -27900,10 +29014,10 @@
         <size>7</size>
       </method>
       <method name="Void add_OnWhatever(OnWhateverDelegate)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_OnWhatever(OnWhateverDelegate)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void CallMyDel(System.String)">
         <size>13</size>
@@ -28031,7 +29145,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Main(System.String[])">
-        <size>140</size>
+        <size>136</size>
       </method>
     </type>
     <type name="MonoBUG.Foo">
@@ -28153,7 +29267,7 @@
         <size>1</size>
       </method>
       <method name="Boolean Test()">
-        <size>110</size>
+        <size>108</size>
       </method>
     </type>
     <type name="Driver">
@@ -28434,11 +29548,6 @@
         <size>38</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
   </test>
   <test name="test-233.cs">
     <type name="Tests">
@@ -28871,16 +29980,16 @@
         <size>7</size>
       </method>
       <method name="Void add_Bar(Foo)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_Bar(Foo)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void m1()">
         <size>1</size>
       </method>
       <method name="Int32 Main()">
-        <size>93</size>
+        <size>61</size>
       </method>
     </type>
     <type name="Foo">
@@ -28951,16 +30060,16 @@
         <size>7</size>
       </method>
       <method name="Void add_e_1(test_delegate)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_e_1(test_delegate)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void add_e_2(test_delegate)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_e_2(test_delegate)">
-        <size>24</size>
+        <size>47</size>
       </method>
     </type>
     <type name="Test_4">
@@ -29147,11 +30256,6 @@
         <size>0</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
   </test>
   <test name="test-260.cs">
     <type name="x.Test">
@@ -29488,36 +30592,54 @@
       <method name="Void .ctor()">
         <size>7</size>
       </method>
-      <method name="Void add_MyEvent(DelType)">
-        <size>24</size>
-      </method>
-      <method name="Void remove_MyEvent(DelType)">
-        <size>24</size>
-      </method>
       <method name="Int32 Main()">
-        <size>176</size>
+        <size>111</size>
       </method>
     </type>
     <type name="DelType">
       <method name="Void .ctor(Object, IntPtr)">
         <size>0</size>
       </method>
-      <method name="Void Invoke()">
+      <method name="IAsyncResult BeginInvoke(System.AsyncCallback, System.Object)">
         <size>0</size>
       </method>
-      <method name="IAsyncResult BeginInvoke(System.AsyncCallback, System.Object)">
+    </type>
+    <type name="S">
+      <method name="Void add_MyEvent(DelType)">
+        <size>47</size>
+      </method>
+      <method name="Void remove_MyEvent(DelType)">
+        <size>47</size>
+      </method>
+    </type>
+    <type name="DelType">
+      <method name="Int32 Invoke()">
         <size>0</size>
       </method>
-      <method name="Void EndInvoke(IAsyncResult)">
+      <method name="Int32 EndInvoke(IAsyncResult)">
         <size>0</size>
       </method>
     </type>
     <type name="S">
-      <method name="Void add_MyEvent(DelType)">
-        <size>24</size>
+      <method name="Void add_MyEventStatic(DelType)">
+        <size>45</size>
       </method>
-      <method name="Void remove_MyEvent(DelType)">
-        <size>24</size>
+      <method name="Void remove_MyEventStatic(DelType)">
+        <size>45</size>
+      </method>
+      <method name="Int32 RunInstance()">
+        <size>12</size>
+      </method>
+      <method name="Int32 RunStatic()">
+        <size>11</size>
+      </method>
+    </type>
+    <type name="Test">
+      <method name="Int32 <Main>m__0()">
+        <size>3</size>
+      </method>
+      <method name="Int32 <Main>m__1()">
+        <size>2</size>
       </method>
     </type>
   </test>
@@ -29527,10 +30649,10 @@
         <size>7</size>
       </method>
       <method name="Void add_Elapsed(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_Elapsed(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
     </type>
     <type name="EntryPoint">
@@ -29890,10 +31012,10 @@
         <size>7</size>
       </method>
       <method name="Void add_FooEvent(EntryPoint+EventHandler)">
-        <size>22</size>
+        <size>45</size>
       </method>
       <method name="Void remove_FooEvent(EntryPoint+EventHandler)">
-        <size>22</size>
+        <size>45</size>
       </method>
       <method name="Void bar_f(System.Object)">
         <size>1</size>
@@ -30069,6 +31191,43 @@
       </method>
     </type>
   </test>
+  <test name="test-298.cs">
+    <type name="A">
+      <method name="Int32 op_Addition(Int16, A)">
+        <size>2</size>
+      </method>
+      <method name="Int32 op_UnaryNegation(A)">
+        <size>2</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="B">
+      <method name="Int32 op_Addition(Int32, B)">
+        <size>2</size>
+      </method>
+      <method name="Int32 op_UnaryNegation(B)">
+        <size>2</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="C">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Test">
+      <method name="Int32 Main()">
+        <size>47</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="test-299.cs">
     <type name="SampleClass">
       <method name="Void .ctor()">
@@ -30152,7 +31311,7 @@
     </type>
     <type name="A+B">
       <method name="Void .ctor()">
-        <size>475</size>
+        <size>474</size>
       </method>
     </type>
     <type name="A+B+C">
@@ -30248,7 +31407,7 @@
     </type>
     <type name="A+B">
       <method name="Void .ctor()">
-        <size>475</size>
+        <size>474</size>
       </method>
     </type>
     <type name="A+B+C">
@@ -30492,7 +31651,7 @@
         <size>1</size>
       </method>
       <method name="Int32 Main()">
-        <size>134</size>
+        <size>132</size>
       </method>
     </type>
   </test>
@@ -31122,11 +32281,6 @@
         <size>269</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
     <type name="FancyInt">
       <method name="Void .ctor(Int32)">
         <size>8</size>
@@ -31245,16 +32399,16 @@
         <size>7</size>
       </method>
       <method name="Void add_y(Y)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_y(Y)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void Main(System.String[])">
         <size>13</size>
       </method>
       <method name="Void Foo()">
-        <size>66</size>
+        <size>50</size>
       </method>
     </type>
     <type name="Y">
@@ -31381,10 +32535,10 @@
         <size>7</size>
       </method>
       <method name="Void add_Ev1(D)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_Ev1(D)">
-        <size>24</size>
+        <size>47</size>
       </method>
     </type>
     <type name="X">
@@ -31395,16 +32549,16 @@
         <size>1</size>
       </method>
       <method name="Void add_Ev1(D)">
-        <size>22</size>
+        <size>45</size>
       </method>
       <method name="Void remove_Ev1(D)">
-        <size>22</size>
+        <size>45</size>
       </method>
       <method name="Void add_Ev2(D)">
-        <size>22</size>
+        <size>45</size>
       </method>
       <method name="Void remove_Ev2(D)">
-        <size>22</size>
+        <size>45</size>
       </method>
     </type>
     <type name="X2">
@@ -31630,7 +32784,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>278</size>
+        <size>276</size>
       </method>
     </type>
     <type name="X">
@@ -31638,11 +32792,6 @@
         <size>35</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
   </test>
   <test name="test-360.cs">
     <type name="Application">
@@ -31734,10 +32883,10 @@
         <size>7</size>
       </method>
       <method name="Void add_MyDelegate(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_MyDelegate(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
     </type>
     <type name="X+Foo">
@@ -32078,7 +33227,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>288</size>
+        <size>268</size>
       </method>
     </type>
   </test>
@@ -32949,16 +34098,34 @@
       </method>
     </type>
   </test>
+  <test name="test-416.cs">
+    <type name="ModTest">
+      <method name="Void Main(System.String[])">
+        <size>20</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="n1.Adder">
+      <method name="Int32 Add(Int32, Int32)">
+        <size>4</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="test-417.cs">
     <type name="blah2.MyClass">
       <method name="Void .ctor()">
         <size>7</size>
       </method>
       <method name="Void add_DoSomething(blah.MyFunnyDelegate)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_DoSomething(blah.MyFunnyDelegate)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void DoSomethingFunny()">
         <size>46</size>
@@ -32968,6 +34135,26 @@
       </method>
     </type>
   </test>
+  <test name="test-418.cs">
+    <type name="M3">
+      <method name="Int32 Main()">
+        <size>133</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>12</size>
+      </method>
+    </type>
+    <type name="M1">
+      <method name="Void .ctor(String)">
+        <size>14</size>
+      </method>
+    </type>
+    <type name="M2">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="test-419.cs">
     <type name="Test">
       <method name="Void .ctor()">
@@ -33021,10 +34208,10 @@
         <size>18</size>
       </method>
       <method name="Int32 i_pre_increment(X)">
-        <size>27</size>
+        <size>26</size>
       </method>
       <method name="Int32 i_post_increment(X)">
-        <size>27</size>
+        <size>26</size>
       </method>
       <method name="Z overload_increment(Z)">
         <size>10</size>
@@ -33123,45 +34310,13 @@
     </type>
   </test>
   <test name="test-424.cs">
-    <type name="XX">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-      <method name="Void Metodo(System.Exception)">
-        <size>37</size>
-      </method>
-      <method name="IEnumerable X()">
-        <size>16</size>
-      </method>
-      <method name="Void Main()">
-        <size>65</size>
+    <type name="C">
+      <method name="Int32 Main()">
+        <size>35</size>
       </method>
-    </type>
-    <type name="XX+<X>c__Iterator0">
       <method name="Void .ctor()">
         <size>7</size>
       </method>
-      <method name="System.Object System.Collections.IEnumerator.get_Current()">
-        <size>7</size>
-      </method>
-      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
-        <size>7</size>
-      </method>
-      <method name="Boolean MoveNext()">
-        <size>105</size>
-      </method>
-      <method name="Void Dispose()">
-        <size>8</size>
-      </method>
-      <method name="Void Reset()">
-        <size>6</size>
-      </method>
-      <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
-        <size>7</size>
-      </method>
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<object>.GetEnumerator()">
-        <size>26</size>
-      </method>
     </type>
   </test>
   <test name="test-425.cs">
@@ -33248,26 +34403,21 @@
         <size>34</size>
       </method>
       <method name="Int32 test_continue(System.Int32[])">
-        <size>57</size>
+        <size>54</size>
       </method>
       <method name="Boolean test_double(System.Double[])">
-        <size>61</size>
+        <size>58</size>
       </method>
       <method name="Int32 test_break(System.Int32[])">
-        <size>57</size>
+        <size>54</size>
       </method>
       <method name="Boolean test_multi(System.Int32[,])">
-        <size>84</size>
+        <size>87</size>
       </method>
       <method name="Int32 Main()">
         <size>284</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
   </test>
   <test name="test-430.cs">
     <type name="A">
@@ -33430,7 +34580,7 @@
         <size>7</size>
       </method>
       <method name="Int32 dob(System.Int32[,])">
-        <size>80</size>
+        <size>83</size>
       </method>
       <method name="Int32 count(System.Object)">
         <size>39</size>
@@ -33603,10 +34753,21 @@
         <size>755</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
+  </test>
+  <test name="test-450.cs">
+    <type name="A">
+      <method name="Int32 Main()">
+        <size>53</size>
+      </method>
+      <method name="Byte op_Implicit(A)">
+        <size>2</size>
+      </method>
+      <method name="A op_Implicit(Int32)">
         <size>7</size>
       </method>
+      <method name="Void .ctor(Int32)">
+        <size>14</size>
+      </method>
     </type>
   </test>
   <test name="test-451.cs">
@@ -33644,6 +34805,21 @@
       </method>
     </type>
   </test>
+  <test name="test-454.cs">
+    <type name="FooAttribute">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Test">
+      <method name="Int32 Main()">
+        <size>237</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="test-455.cs">
     <type name="Test">
       <method name="Void .ctor()">
@@ -33893,22 +35069,42 @@
       </method>
     </type>
   </test>
+  <test name="test-466.cs">
+    <type name="A.X.Test">
+      <method name="Void Main()">
+        <size>13</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="test-467.cs">
-    <type name="ExceptionWithAnonMethod">
+    <type name="A">
       <method name="Void .ctor()">
         <size>7</size>
       </method>
-      <method name="Int32 Main()">
-        <size>96</size>
+    </type>
+    <type name="A+D">
+      <method name="Int32 Invoke()">
+        <size>0</size>
       </method>
-      <method name="Void AnonHandler(ExceptionWithAnonMethod+EmptyCallback)">
-        <size>13</size>
+      <method name="IAsyncResult BeginInvoke(System.AsyncCallback, System.Object)">
+        <size>0</size>
+      </method>
+      <method name="Int32 EndInvoke(IAsyncResult)">
+        <size>0</size>
       </method>
-    </type>
-    <type name="ExceptionWithAnonMethod+EmptyCallback">
       <method name="Void .ctor(Object, IntPtr)">
         <size>0</size>
       </method>
+    </type>
+    <type name="B">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="B+D">
       <method name="Void Invoke()">
         <size>0</size>
       </method>
@@ -33918,14 +35114,20 @@
       <method name="Void EndInvoke(IAsyncResult)">
         <size>0</size>
       </method>
+      <method name="Void .ctor(Object, IntPtr)">
+        <size>0</size>
+      </method>
     </type>
-    <type name="ExceptionWithAnonMethod+<Main>c__AnonStorey0">
+    <type name="C">
+      <method name="Int32 Foo()">
+        <size>2</size>
+      </method>
+      <method name="Int32 Main()">
+        <size>29</size>
+      </method>
       <method name="Void .ctor()">
         <size>7</size>
       </method>
-      <method name="Void <>m__0()">
-        <size>33</size>
-      </method>
     </type>
   </test>
   <test name="test-468.cs">
@@ -34026,17 +35228,17 @@
   </test>
   <test name="test-471.cs">
     <type name="AAttribute">
-      <method name="Void .ctor()">
-        <size>7</size>
+      <method name="Void .ctor(String)">
+        <size>14</size>
       </method>
     </type>
-    <type name="Demo">
+    <type name="MainClass">
+      <method name="Int32 Main()">
+        <size>39</size>
+      </method>
       <method name="Void .ctor()">
         <size>7</size>
       </method>
-      <method name="Void Main()">
-        <size>1</size>
-      </method>
     </type>
   </test>
   <test name="test-472.cs">
@@ -34197,10 +35399,10 @@
         <size>24</size>
       </method>
       <method name="Void add_e(MyDelegate)">
-        <size>22</size>
+        <size>45</size>
       </method>
       <method name="Void remove_e(MyDelegate)">
-        <size>22</size>
+        <size>45</size>
       </method>
       <method name="Void Test(Int32)">
         <size>17</size>
@@ -34289,7 +35491,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>59</size>
+        <size>55</size>
       </method>
       <method name="Void Test_1()">
         <size>1</size>
@@ -34297,50 +35499,40 @@
     </type>
   </test>
   <test name="test-480.cs">
-    <type name="Space">
-      <method name="Void .ctor()">
-        <size>14</size>
+    <type name="A">
+      <method name="Void Dispose()">
+        <size>1</size>
       </method>
-      <method name="Void Leak(Boolean, Int32)">
-        <size>85</size>
+      <method name="Void .ctor(Int32)">
+        <size>7</size>
       </method>
     </type>
-    <type name="Program">
-      <method name="Void .ctor()">
-        <size>7</size>
+    <type name="C">
+      <method name="Void Test(System.Object)">
+        <size>271</size>
       </method>
-      <method name="Void Main(System.String[])">
+      <method name="Int32 Main()">
+        <size>13</size>
+      </method>
+      <method name="Void <Test>m__0(Int32)">
         <size>1</size>
       </method>
-    </type>
-    <type name="Space+DoCopy">
-      <method name="Void .ctor(Object, IntPtr)">
-        <size>0</size>
+      <method name="Void .ctor()">
+        <size>7</size>
       </method>
-      <method name="Void Invoke()">
+    </type>
+    <type name="C+D">
+      <method name="Void Invoke(Int32)">
         <size>0</size>
       </method>
-      <method name="IAsyncResult BeginInvoke(System.AsyncCallback, System.Object)">
+      <method name="IAsyncResult BeginInvoke(Int32, System.AsyncCallback, System.Object)">
         <size>0</size>
       </method>
       <method name="Void EndInvoke(IAsyncResult)">
         <size>0</size>
       </method>
-    </type>
-    <type name="Space+<Leak>c__AnonStorey0">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-      <method name="Void <>m__0()">
-        <size>18</size>
-      </method>
-      <method name="Void <>m__1()">
-        <size>68</size>
-      </method>
-    </type>
-    <type name="Space+<Leak>c__AnonStorey1">
-      <method name="Void .ctor()">
-        <size>7</size>
+      <method name="Void .ctor(Object, IntPtr)">
+        <size>0</size>
       </method>
     </type>
   </test>
@@ -34453,7 +35645,7 @@
         <size>2</size>
       </method>
       <method name="Void Main()">
-        <size>169</size>
+        <size>166</size>
       </method>
     </type>
     <type name="Q">
@@ -34677,39 +35869,13 @@
     </type>
   </test>
   <test name="test-496.cs">
-    <type name="Test">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-      <method name="IEnumerator GetEnumerator()">
-        <size>15</size>
-      </method>
+    <type name="Baz">
       <method name="Void Main()">
-        <size>11</size>
-      </method>
-      <method name="Void Run()">
-        <size>180</size>
+        <size>1</size>
       </method>
-    </type>
-    <type name="Test+<GetEnumerator>c__Iterator0">
       <method name="Void .ctor()">
         <size>7</size>
       </method>
-      <method name="System.Object System.Collections.IEnumerator.get_Current()">
-        <size>7</size>
-      </method>
-      <method name="Boolean MoveNext()">
-        <size>129</size>
-      </method>
-      <method name="Void Dispose()">
-        <size>8</size>
-      </method>
-      <method name="Void Reset()">
-        <size>6</size>
-      </method>
-      <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
-        <size>7</size>
-      </method>
     </type>
   </test>
   <test name="test-497.cs">
@@ -34780,7 +35946,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>117</size>
+        <size>115</size>
       </method>
     </type>
   </test>
@@ -34976,10 +36142,10 @@
         <size>7</size>
       </method>
       <method name="Void add_OnEvent(DelegateHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_OnEvent(DelegateHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
     </type>
     <type name="ExtendingClass">
@@ -35187,7 +36353,7 @@
         <size>6</size>
       </method>
       <method name="Int32 Main()">
-        <size>504</size>
+        <size>501</size>
       </method>
     </type>
   </test>
@@ -35277,7 +36443,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>42</size>
+        <size>91</size>
       </method>
     </type>
   </test>
@@ -35287,7 +36453,7 @@
         <size>7</size>
       </method>
       <method name="Void Finalize()">
-        <size>23</size>
+        <size>36</size>
       </method>
       <method name="Int32 Test1()">
         <size>33</size>
@@ -35299,11 +36465,6 @@
         <size>39</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
   </test>
   <test name="test-526.cs">
     <type name="Test">
@@ -35368,20 +36529,20 @@
   </test>
   <test name="test-53.cs">
     <type name="MyDispose">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
       <method name="Void Dispose()">
         <size>8</size>
       </method>
-    </type>
-    <type name="X">
       <method name="Void .ctor()">
         <size>7</size>
       </method>
+    </type>
+    <type name="X">
       <method name="Int32 Main()">
         <size>257</size>
       </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
     </type>
   </test>
   <test name="test-530.cs">
@@ -35458,10 +36619,10 @@
   <test name="test-536.cs">
     <type name="Test">
       <method name="Void add_Foo(FooHandler)">
-        <size>22</size>
+        <size>45</size>
       </method>
       <method name="Void remove_Foo(FooHandler)">
-        <size>22</size>
+        <size>45</size>
       </method>
       <method name="Void OnFooTest()">
         <size>1</size>
@@ -35486,7 +36647,7 @@
     </type>
     <type name="Test">
       <method name="Void <Main>m__0()">
-        <size>33</size>
+        <size>18</size>
       </method>
     </type>
   </test>
@@ -35571,6 +36732,16 @@
       </method>
     </type>
   </test>
+  <test name="test-539.cs">
+    <type name="Test">
+      <method name="Int32 Main()">
+        <size>84</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="test-54.cs">
     <type name="X">
       <method name="Void .ctor()">
@@ -35601,7 +36772,7 @@
         <size>1</size>
       </method>
       <method name="Int32 Main()">
-        <size>93</size>
+        <size>89</size>
       </method>
       <method name="Constraint op_LogicalNot(Constraint)">
         <size>2</size>
@@ -35618,26 +36789,21 @@
     </type>
   </test>
   <test name="test-541.cs">
-    <type name="A">
-      <method name="Void .ctor(TestFunc)">
-        <size>14</size>
+    <type name="ClassMain">
+      <method name="Void Main()">
+        <size>31</size>
       </method>
-    </type>
-    <type name="TestClass">
-      <method name="Void .ctor()">
-        <size>7</size>
+      <method name="Void set_test(Boolean)">
+        <size>1</size>
       </method>
-      <method name="Void .cctor()">
-        <size>46</size>
+      <method name="Void <Main>m__0(Int32)">
+        <size>1</size>
       </method>
-      <method name="Int32 Main()">
-        <size>6</size>
+      <method name="Void .ctor()">
+        <size>7</size>
       </method>
     </type>
-    <type name="TestFunc">
-      <method name="Void .ctor(Object, IntPtr)">
-        <size>0</size>
-      </method>
+    <type name="ClassMain+D">
       <method name="Void Invoke(Int32)">
         <size>0</size>
       </method>
@@ -35647,10 +36813,8 @@
       <method name="Void EndInvoke(IAsyncResult)">
         <size>0</size>
       </method>
-    </type>
-    <type name="TestClass">
-      <method name="Void <a>m__0(Int32)">
-        <size>7</size>
+      <method name="Void .ctor(Object, IntPtr)">
+        <size>0</size>
       </method>
     </type>
   </test>
@@ -35915,11 +37079,6 @@
         <size>145</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
   </test>
   <test name="test-555.cs">
     <type name="Test">
@@ -35990,10 +37149,10 @@
         <size>7</size>
       </method>
       <method name="Void add_TestEvent(B+TestDelegate)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_TestEvent(B+TestDelegate)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void Main()">
         <size>1</size>
@@ -36223,10 +37382,10 @@
         <size>7</size>
       </method>
       <method name="Void add_e(preservesig_test.TestClass+D)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_e(preservesig_test.TestClass+D)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Int32 DoFoo()">
         <size>2</size>
@@ -36428,6 +37587,28 @@
       </method>
     </type>
   </test>
+  <test name="test-577.cs">
+    <type name="C">
+      <method name="Void IA.add_e_a(System.EventHandler)">
+        <size>1</size>
+      </method>
+      <method name="Void IA.remove_e_a(System.EventHandler)">
+        <size>1</size>
+      </method>
+      <method name="Void IA.add_e_b(System.EventHandler)">
+        <size>1</size>
+      </method>
+      <method name="Void IA.remove_e_b(System.EventHandler)">
+        <size>1</size>
+      </method>
+      <method name="Void Main()">
+        <size>1</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="test-578.cs">
     <type name="Test1.TestItem1">
       <method name="Void .ctor()">
@@ -36483,35 +37664,13 @@
     </type>
   </test>
   <test name="test-579.cs">
-    <type name="X">
+    <type name="TestCase">
+      <method name="Int32 Main()">
+        <size>32</size>
+      </method>
       <method name="Void .ctor()">
         <size>7</size>
       </method>
-      <method name="Void Main()">
-        <size>35</size>
-      </method>
-      <method name="Void DoCall(X+test)">
-        <size>1</size>
-      </method>
-    </type>
-    <type name="X+test">
-      <method name="Void .ctor(Object, IntPtr)">
-        <size>0</size>
-      </method>
-      <method name="System.Object Invoke(System.Reflection.MethodInfo)">
-        <size>0</size>
-      </method>
-      <method name="IAsyncResult BeginInvoke(System.Reflection.MethodInfo, System.AsyncCallback, System.Object)">
-        <size>0</size>
-      </method>
-      <method name="System.Object EndInvoke(IAsyncResult)">
-        <size>0</size>
-      </method>
-    </type>
-    <type name="X">
-      <method name="System.Object <Main>m__0(System.Reflection.MethodInfo)">
-        <size>18</size>
-      </method>
     </type>
   </test>
   <test name="test-58.cs">
@@ -36533,22 +37692,28 @@
         <size>43</size>
       </method>
       <method name="Void BuildNode(System.String[] ByRef)">
-        <size>56</size>
+        <size>58</size>
       </method>
       <method name="Void BuildNode_B(System.Object ByRef)">
         <size>18</size>
       </method>
       <method name="System.String BuildNode_C(System.String ByRef)">
-        <size>76</size>
+        <size>80</size>
       </method>
       <method name="System.String BuildNode_D()">
-        <size>157</size>
+        <size>160</size>
       </method>
       <method name="Void BuildNode_E(System.String[,] ByRef)">
-        <size>68</size>
+        <size>83</size>
       </method>
       <method name="Int32 Main()">
-        <size>265</size>
+        <size>290</size>
+      </method>
+      <method name="Boolean Test_Object()">
+        <size>160</size>
+      </method>
+      <method name="Boolean Test_Decimal()">
+        <size>128</size>
       </method>
     </type>
   </test>
@@ -36578,7 +37743,7 @@
         <size>40</size>
       </method>
       <method name="Void TestMethod()">
-        <size>71</size>
+        <size>73</size>
       </method>
     </type>
     <type name="M">
@@ -36795,7 +37960,7 @@
         <size>8</size>
       </method>
       <method name="Int32 Do(System.String, System.String, System.String)">
-        <size>334</size>
+        <size>332</size>
       </method>
     </type>
   </test>
@@ -36857,8 +38022,8 @@
       <method name="Void .ctor()">
         <size>7</size>
       </method>
-      <method name="Void Main()">
-        <size>1</size>
+      <method name="Int32 Main()">
+        <size>84</size>
       </method>
     </type>
   </test>
@@ -37414,10 +38579,10 @@
         <size>1</size>
       </method>
       <method name="Void add_Foo(MyDelegate)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_Foo(MyDelegate)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Int32 X.get_Prop()">
         <size>2</size>
@@ -37447,10 +38612,13 @@
         <size>7</size>
       </method>
       <method name="Void ZeroBasedReductions()">
-        <size>18</size>
+        <size>17</size>
       </method>
       <method name="Void Main()">
-        <size>6</size>
+        <size>11</size>
+      </method>
+      <method name="Void ZeroBasedReductionsWithConversion()">
+        <size>15</size>
       </method>
     </type>
   </test>
@@ -37656,40 +38824,16 @@
   </test>
   <test name="test-629.cs">
     <type name="Foo">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-      <method name="IEnumerable foo()">
-        <size>16</size>
-      </method>
-      <method name="Int32 Main()">
-        <size>67</size>
+      <method name="Void Main()">
+        <size>1</size>
       </method>
-    </type>
-    <type name="Foo+<foo>c__Iterator0">
       <method name="Void .ctor()">
         <size>7</size>
       </method>
-      <method name="System.Object System.Collections.IEnumerator.get_Current()">
-        <size>7</size>
-      </method>
-      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
-        <size>7</size>
-      </method>
-      <method name="Boolean MoveNext()">
-        <size>39</size>
-      </method>
-      <method name="Void Dispose()">
-        <size>8</size>
-      </method>
-      <method name="Void Reset()">
-        <size>6</size>
-      </method>
-      <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
-        <size>7</size>
-      </method>
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<object>.GetEnumerator()">
-        <size>26</size>
+    </type>
+    <type name="Foo+Nested">
+      <method name="Int32 get_Bar()">
+        <size>2</size>
       </method>
     </type>
   </test>
@@ -37953,6 +39097,35 @@
       </method>
     </type>
   </test>
+  <test name="test-637.cs">
+    <type name="A">
+      <method name="System.Type get_Value()">
+        <size>7</size>
+      </method>
+      <method name="Void set_Value(System.Type)">
+        <size>8</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+      <method name="Void .ctor(Object)">
+        <size>19</size>
+      </method>
+    </type>
+    <type name="TestProp">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Test">
+      <method name="Int32 Main()">
+        <size>96</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="test-638.cs">
     <type name="Fail">
       <method name="Void .ctor()">
@@ -38114,42 +39287,13 @@
     </type>
   </test>
   <test name="test-645.cs">
-    <type name="Program">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-      <method name="IEnumerable get_Empty()">
-        <size>16</size>
-      </method>
+    <type name="C">
       <method name="Void Main()">
-        <size>61</size>
+        <size>30</size>
       </method>
-    </type>
-    <type name="Program+<>c__Iterator0">
       <method name="Void .ctor()">
         <size>7</size>
       </method>
-      <method name="System.Object System.Collections.IEnumerator.get_Current()">
-        <size>7</size>
-      </method>
-      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
-        <size>7</size>
-      </method>
-      <method name="Boolean MoveNext()">
-        <size>158</size>
-      </method>
-      <method name="Void Dispose()">
-        <size>8</size>
-      </method>
-      <method name="Void Reset()">
-        <size>6</size>
-      </method>
-      <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
-        <size>7</size>
-      </method>
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<object>.GetEnumerator()">
-        <size>26</size>
-      </method>
     </type>
   </test>
   <test name="test-646.cs">
@@ -38326,7 +39470,7 @@
         <size>8</size>
       </method>
       <method name="Int32 Main()">
-        <size>77</size>
+        <size>69</size>
       </method>
     </type>
   </test>
@@ -38728,10 +39872,10 @@
         <size>7</size>
       </method>
       <method name="Void add_E(D)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_E(D)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void Run()">
         <size>12</size>
@@ -38776,16 +39920,6 @@
       </method>
     </type>
   </test>
-  <test name="test-679.cs">
-    <type name="Program">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-      <method name="Int32 Main()">
-        <size>12</size>
-      </method>
-    </type>
-  </test>
   <test name="test-68.cs">
     <type name="Y">
       <method name="Void .ctor()">
@@ -38843,6 +39977,31 @@
       </method>
     </type>
   </test>
+  <test name="test-682.cs">
+    <type name="broken_cast">
+      <method name="Void report(System.String)">
+        <size>7</size>
+      </method>
+      <method name="Void conv_ovf_i(Int64, Boolean)">
+        <size>73</size>
+      </method>
+      <method name="Void conv_ovf_i_un(Int64, Boolean)">
+        <size>73</size>
+      </method>
+      <method name="Void conv_ovf_u(Int64, Boolean)">
+        <size>73</size>
+      </method>
+      <method name="Void conv_ovf_u_un(Int64, Boolean)">
+        <size>73</size>
+      </method>
+      <method name="Int32 Main()">
+        <size>198</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="test-683.cs">
     <type name="broken_cast">
       <method name="Void .ctor()">
@@ -38885,7 +40044,7 @@
         <size>51</size>
       </method>
       <method name="Void Foo()">
-        <size>145</size>
+        <size>148</size>
       </method>
     </type>
   </test>
@@ -38979,7 +40138,7 @@
         <size>23</size>
       </method>
       <method name="Void Main()">
-        <size>127</size>
+        <size>128</size>
       </method>
     </type>
   </test>
@@ -39034,11 +40193,6 @@
         <size>28</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
   </test>
   <test name="test-696.cs">
     <type name="S">
@@ -39230,6 +40384,19 @@
       </method>
     </type>
   </test>
+  <test name="test-702.cs">
+    <type name="S">
+      <method name="Void Main()">
+        <size>9</size>
+      </method>
+      <method name="Void .ctor(Int32)">
+        <size>8</size>
+      </method>
+      <method name="Void .ctor(String, Int32)">
+        <size>15</size>
+      </method>
+    </type>
+  </test>
   <test name="test-703.cs">
     <type name="A">
       <method name="Void .ctor()">
@@ -39250,13 +40417,13 @@
     </type>
     <type name="B">
       <method name="Void .ctor()">
-        <size>65</size>
+        <size>49</size>
       </method>
       <method name="Void add_Finished(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_Finished(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void TestB(System.Object, System.EventArgs)">
         <size>25</size>
@@ -39494,6 +40661,16 @@
       </method>
     </type>
   </test>
+  <test name="test-715.cs">
+    <type name="C">
+      <method name="Int32 Main()">
+        <size>2</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="test-716.cs">
     <type name="SS">
       <method name="Void .cctor()">
@@ -39654,10 +40831,10 @@
         <size>7</size>
       </method>
       <method name="Void add_Example(N.Parent+ExampleHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_Example(N.Parent+ExampleHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void OnExample()">
         <size>23</size>
@@ -39696,6 +40873,22 @@
       </method>
     </type>
   </test>
+  <test name="test-722.cs">
+    <type name="S">
+      <method name="Void set_Prop(Int32)">
+        <size>8</size>
+      </method>
+      <method name="Void M[T](T)">
+        <size>18</size>
+      </method>
+      <method name="Void Main()">
+        <size>60</size>
+      </method>
+      <method name="Void .ctor(Int32)">
+        <size>8</size>
+      </method>
+    </type>
+  </test>
   <test name="test-723.cs">
     <type name="Test">
       <method name="Void .ctor()">
@@ -39738,6 +40931,30 @@
       </method>
     </type>
   </test>
+  <test name="test-725.cs">
+    <type name="D">
+      <method name="Int32 Invoke(Int32 ByRef)">
+        <size>0</size>
+      </method>
+      <method name="IAsyncResult BeginInvoke(Int32 ByRef, System.AsyncCallback, System.Object)">
+        <size>0</size>
+      </method>
+      <method name="Int32 EndInvoke(Int32 ByRef, IAsyncResult)">
+        <size>0</size>
+      </method>
+      <method name="Void .ctor(Object, IntPtr)">
+        <size>0</size>
+      </method>
+    </type>
+    <type name="B">
+      <method name="Int32 Main()">
+        <size>237</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="test-726.cs">
     <type name="CS0102">
       <method name="System.Object IFoo.Clone()">
@@ -39790,7 +41007,7 @@
   <test name="test-729.cs">
     <type name="Primes.MainClass">
       <method name="Int32 Main()">
-        <size>141</size>
+        <size>136</size>
       </method>
       <method name="Void .ctor()">
         <size>7</size>
@@ -39865,7 +41082,18 @@
         <size>7</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
+  </test>
+  <test name="test-732.cs">
+    <type name="C">
+      <method name="Int32 op_Implicit(C, Boolean)">
+        <size>2</size>
+      </method>
+      <method name="Int32 Main()">
+        <size>22</size>
+      </method>
+      <method name="Int32 op_Explicit(C)">
+        <size>2</size>
+      </method>
       <method name="Void .ctor()">
         <size>7</size>
       </method>
@@ -39922,10 +41150,10 @@
   <test name="test-736.cs">
     <type name="TestGeneric`1[T]">
       <method name="Void add_Event(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_Event(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void Raise()">
         <size>18</size>
@@ -39936,10 +41164,10 @@
     </type>
     <type name="TestGeneric2`1[T]">
       <method name="Void add_Event(TestGeneric2`1+GenericHandler[T])">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_Event(TestGeneric2`1+GenericHandler[T])">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void Raise()">
         <size>21</size>
@@ -39950,10 +41178,10 @@
     </type>
     <type name="Test">
       <method name="Void add_Event(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_Event(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void Raise()">
         <size>18</size>
@@ -39994,7 +41222,7 @@
     </type>
     <type name="Tester">
       <method name="Int32 Main()">
-        <size>80</size>
+        <size>74</size>
       </method>
       <method name="Void .ctor()">
         <size>7</size>
@@ -40434,11 +41662,6 @@
         <size>7</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
   </test>
   <test name="test-758.cs">
     <type name="C">
@@ -40458,6 +41681,16 @@
       </method>
     </type>
   </test>
+  <test name="test-759.cs">
+    <type name="B">
+      <method name="Void Main()">
+        <size>12</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="test-76.cs">
     <type name="foo">
       <method name="Void .ctor()">
@@ -40715,10 +41948,10 @@
     </type>
     <type name="MyClass+A">
       <method name="Void add_MouseClick(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_MouseClick(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void .ctor()">
         <size>7</size>
@@ -40726,10 +41959,10 @@
     </type>
     <type name="MyClass+B">
       <method name="Void add_MouseClick(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_MouseClick(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void .ctor()">
         <size>7</size>
@@ -41102,10 +42335,10 @@
     </type>
     <type name="E">
       <method name="Void add_temp(D)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_temp(D)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void .ctor()">
         <size>7</size>
@@ -41141,15 +42374,21 @@
   </test>
   <test name="test-783.cs">
     <type name="C">
-      <method name="Void Main()">
-        <size>25</size>
-      </method>
       <method name="Void M(E)">
         <size>1</size>
       </method>
       <method name="Void .ctor()">
         <size>7</size>
       </method>
+      <method name="Int32 Test(Int32)">
+        <size>2</size>
+      </method>
+      <method name="Int32 Test(E)">
+        <size>2</size>
+      </method>
+      <method name="Int32 Main()">
+        <size>88</size>
+      </method>
     </type>
   </test>
   <test name="test-784.cs">
@@ -41180,7 +42419,7 @@
         <size>9</size>
       </method>
       <method name="Int32 Main()">
-        <size>53</size>
+        <size>52</size>
       </method>
       <method name="Void .ctor()">
         <size>7</size>
@@ -41352,7 +42591,7 @@
   <test name="test-789.cs">
     <type name="Program">
       <method name="Void Main()">
-        <size>50</size>
+        <size>76</size>
       </method>
       <method name="Void <Main>m__0()">
         <size>7</size>
@@ -41414,6 +42653,9 @@
       <method name="Void Test()">
         <size>24</size>
       </method>
+      <method name="Void Test2(IMemberDelayed)">
+        <size>19</size>
+      </method>
       <method name="Void Main()">
         <size>1</size>
       </method>
@@ -41563,8 +42805,44 @@
   <test name="test-800.cs">
     <type name="C">
       <method name="Void Main()">
+        <size>5</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="test-801.cs">
+    <type name="C">
+      <method name="Int32 Main()">
+        <size>154</size>
+      </method>
+      <method name="E op_Implicit(C)">
+        <size>3</size>
+      </method>
+      <method name="Int32 op_Implicit(C)">
+        <size>2</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="test-802.cs">
+    <type name="C">
+      <method name="Void Main()">
+        <size>1</size>
+      </method>
+      <method name="Void .ctor()">
         <size>7</size>
       </method>
+    </type>
+  </test>
+  <test name="test-803.cs">
+    <type name="A">
+      <method name="Int32 Main()">
+        <size>26</size>
+      </method>
       <method name="Void .ctor()">
         <size>7</size>
       </method>
@@ -41623,10 +42901,10 @@
         <size>14</size>
       </method>
       <method name="Void add_PersonArrived(PersonArrivedHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_PersonArrived(PersonArrivedHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void AddPerson(System.String)">
         <size>14</size>
@@ -41756,11 +43034,6 @@
         <size>63</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
   </test>
   <test name="test-89.cs">
     <type name="X">
@@ -42407,7 +43680,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>259</size>
+        <size>256</size>
       </method>
       <method name="System.Collections.ArrayList Find(predicate, System.Collections.ArrayList)">
         <size>83</size>
@@ -42474,16 +43747,16 @@
         <size>7</size>
       </method>
       <method name="Void add_Click(X+T)">
-        <size>22</size>
+        <size>45</size>
       </method>
       <method name="Void remove_Click(X+T)">
-        <size>22</size>
+        <size>45</size>
       </method>
       <method name="Void Method()">
         <size>1</size>
       </method>
       <method name="Void Main()">
-        <size>46</size>
+        <size>31</size>
       </method>
     </type>
     <type name="X+T">
@@ -42573,10 +43846,10 @@
         <size>7</size>
       </method>
       <method name="Void add_Clicked(ClickEvent)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_Clicked(ClickEvent)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void DoClick()">
         <size>12</size>
@@ -42930,6 +44203,36 @@
       </method>
     </type>
   </test>
+  <test name="test-anon-26.cs">
+    <type name="TestGotoLabels.GotoLabelsTest">
+      <method name="Int32 Main()">
+        <size>36</size>
+      </method>
+      <method name="Void TestMethod2(TestGotoLabels.GotoLabelsTest+MyDelegate)">
+        <size>7</size>
+      </method>
+      <method name="Void <Main>m__0()">
+        <size>6</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="TestGotoLabels.GotoLabelsTest+MyDelegate">
+      <method name="Void Invoke()">
+        <size>0</size>
+      </method>
+      <method name="IAsyncResult BeginInvoke(System.AsyncCallback, System.Object)">
+        <size>0</size>
+      </method>
+      <method name="Void EndInvoke(IAsyncResult)">
+        <size>0</size>
+      </method>
+      <method name="Void .ctor(Object, IntPtr)">
+        <size>0</size>
+      </method>
+    </type>
+  </test>
   <test name="test-anon-27.cs">
     <type name="X">
       <method name="Void .ctor()">
@@ -42979,10 +44282,10 @@
         <size>7</size>
       </method>
       <method name="Void add_MyDelegate(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_MyDelegate(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
     </type>
     <type name="DelegateTest">
@@ -43062,10 +44365,10 @@
     </type>
     <type name="Program">
       <method name="Void add_E(Program+D)">
-        <size>22</size>
+        <size>45</size>
       </method>
       <method name="Void remove_E(Program+D)">
-        <size>22</size>
+        <size>45</size>
       </method>
       <method name="Void Main()">
         <size>38</size>
@@ -43095,46 +44398,32 @@
     </type>
   </test>
   <test name="test-anon-31.cs">
-    <type name="test">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-      <method name="IEnumerable testen(Int32)">
-        <size>30</size>
+    <type name="X">
+      <method name="Void Main()">
+        <size>35</size>
       </method>
-    </type>
-    <type name="reflect">
-      <method name="Void .ctor()">
-        <size>7</size>
+      <method name="Void DoCall(X+test)">
+        <size>1</size>
       </method>
-      <method name="Void Main(System.String[])">
-        <size>122</size>
+      <method name="System.Object <Main>m__0(System.Reflection.MethodInfo)">
+        <size>18</size>
       </method>
-    </type>
-    <type name="test+<testen>c__Iterator0">
       <method name="Void .ctor()">
         <size>7</size>
       </method>
-      <method name="System.Object System.Collections.IEnumerator.get_Current()">
-        <size>7</size>
-      </method>
-      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
-        <size>7</size>
-      </method>
-      <method name="Boolean MoveNext()">
-        <size>195</size>
-      </method>
-      <method name="Void Dispose()">
-        <size>8</size>
+    </type>
+    <type name="X+test">
+      <method name="System.Object Invoke(System.Reflection.MethodInfo)">
+        <size>0</size>
       </method>
-      <method name="Void Reset()">
-        <size>6</size>
+      <method name="IAsyncResult BeginInvoke(System.Reflection.MethodInfo, System.AsyncCallback, System.Object)">
+        <size>0</size>
       </method>
-      <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
-        <size>7</size>
+      <method name="System.Object EndInvoke(IAsyncResult)">
+        <size>0</size>
       </method>
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<object>.GetEnumerator()">
-        <size>40</size>
+      <method name="Void .ctor(Object, IntPtr)">
+        <size>0</size>
       </method>
     </type>
   </test>
@@ -43285,39 +44574,36 @@
     </type>
   </test>
   <test name="test-anon-35.cs">
-    <type name="CustomDict">
-      <method name="Void .ctor()">
-        <size>68</size>
+    <type name="ExceptionWithAnonMethod">
+      <method name="Int32 Main()">
+        <size>96</size>
       </method>
-      <method name="IEnumerator GetEnumerator()">
-        <size>15</size>
+      <method name="Void AnonHandler(ExceptionWithAnonMethod+EmptyCallback)">
+        <size>13</size>
       </method>
-    </type>
-    <type name="Tests">
       <method name="Void .ctor()">
         <size>7</size>
       </method>
-      <method name="Void Main()">
-        <size>7</size>
-      </method>
     </type>
-    <type name="CustomDict+<GetEnumerator>c__Iterator0">
-      <method name="Void .ctor()">
-        <size>7</size>
+    <type name="ExceptionWithAnonMethod+EmptyCallback">
+      <method name="Void Invoke()">
+        <size>0</size>
       </method>
-      <method name="System.Object System.Collections.IEnumerator.get_Current()">
-        <size>7</size>
+      <method name="IAsyncResult BeginInvoke(System.AsyncCallback, System.Object)">
+        <size>0</size>
       </method>
-      <method name="Boolean MoveNext()">
-        <size>86</size>
+      <method name="Void EndInvoke(IAsyncResult)">
+        <size>0</size>
       </method>
-      <method name="Void Dispose()">
-        <size>8</size>
+      <method name="Void .ctor(Object, IntPtr)">
+        <size>0</size>
       </method>
-      <method name="Void Reset()">
-        <size>6</size>
+    </type>
+    <type name="ExceptionWithAnonMethod+<Main>c__AnonStorey0">
+      <method name="Void <>m__0()">
+        <size>33</size>
       </method>
-      <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
+      <method name="Void .ctor()">
         <size>7</size>
       </method>
     </type>
@@ -43809,36 +45095,38 @@
     </type>
   </test>
   <test name="test-anon-45.cs">
-    <type name="Test">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-      <method name="Void Main()">
-        <size>66</size>
-      </method>
-      <method name="IEnumerator GetEnumerator()">
-        <size>8</size>
+    <type name="TestFunc">
+      <method name="Void Invoke(Int32)">
+        <size>0</size>
       </method>
-    </type>
-    <type name="Test+<GetEnumerator>c__Iterator0">
-      <method name="Void .ctor()">
-        <size>7</size>
+      <method name="IAsyncResult BeginInvoke(Int32, System.AsyncCallback, System.Object)">
+        <size>0</size>
       </method>
-      <method name="System.Object System.Collections.IEnumerator.get_Current()">
-        <size>7</size>
+      <method name="Void EndInvoke(IAsyncResult)">
+        <size>0</size>
       </method>
-      <method name="Boolean MoveNext()">
-        <size>77</size>
+      <method name="Void .ctor(Object, IntPtr)">
+        <size>0</size>
       </method>
-      <method name="Void Dispose()">
-        <size>8</size>
+    </type>
+    <type name="A">
+      <method name="Void .ctor(TestFunc)">
+        <size>14</size>
       </method>
-      <method name="Void Reset()">
+    </type>
+    <type name="TestClass">
+      <method name="Int32 Main()">
         <size>6</size>
       </method>
-      <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
+      <method name="Void <a>m__0(Int32)">
+        <size>7</size>
+      </method>
+      <method name="Void .ctor()">
         <size>7</size>
       </method>
+      <method name="Void .cctor()">
+        <size>46</size>
+      </method>
     </type>
   </test>
   <test name="test-anon-46.cs">
@@ -43893,7 +45181,7 @@
         <size>1</size>
       </method>
       <method name="Void Test(Int32)">
-        <size>158</size>
+        <size>153</size>
       </method>
     </type>
     <type name="X">
@@ -44010,10 +45298,10 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>187</size>
+        <size>197</size>
       </method>
       <method name="Void Dispose()">
-        <size>64</size>
+        <size>76</size>
       </method>
       <method name="Void Reset()">
         <size>6</size>
@@ -44133,7 +45421,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>201</size>
+        <size>199</size>
       </method>
       <method name="Void <>m__0()">
         <size>22</size>
@@ -44148,11 +45436,6 @@
         <size>7</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
   </test>
   <test name="test-anon-53.cs">
     <type name="Test">
@@ -44366,7 +45649,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Test(Int32)">
-        <size>344</size>
+        <size>342</size>
       </method>
       <method name="Int32 Main()">
         <size>46</size>
@@ -44411,7 +45694,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Test(Int32)">
-        <size>515</size>
+        <size>512</size>
       </method>
       <method name="Int32 Main()">
         <size>46</size>
@@ -44461,7 +45744,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Test(Int32)">
-        <size>567</size>
+        <size>564</size>
       </method>
       <method name="Int32 Main()">
         <size>46</size>
@@ -44634,7 +45917,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>195</size>
+        <size>193</size>
       </method>
       <method name="Int32 <>m__0()">
         <size>44</size>
@@ -44649,11 +45932,6 @@
         <size>7</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
   </test>
   <test name="test-anon-64.cs">
     <type name="Source">
@@ -44661,22 +45939,22 @@
         <size>7</size>
       </method>
       <method name="Void add_ChildSourceAdded(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_ChildSourceAdded(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void add_ChildSourceRemoved(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_ChildSourceRemoved(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Source FindSource(Source)">
         <size>2</size>
       </method>
       <method name="Void AddSource(Source, Int32, System.Object)">
-        <size>132</size>
+        <size>100</size>
       </method>
       <method name="Void Main()">
         <size>1</size>
@@ -44739,10 +46017,10 @@
         <size>7</size>
       </method>
       <method name="Void add_testEvent(Test+TestEventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_testEvent(Test+TestEventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void add_TestEvent(Test+TestEventHandler)">
         <size>33</size>
@@ -44969,11 +46247,6 @@
         <size>3</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
   </test>
   <test name="test-anon-71.cs">
     <type name="Program">
@@ -45303,10 +46576,10 @@
         <size>7</size>
       </method>
       <method name="Void add_E(Test+D)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_E(Test+D)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void add_Changed(Test+D)">
         <size>30</size>
@@ -45582,6 +46855,28 @@
       </method>
     </type>
   </test>
+  <test name="test-anon-83.cs">
+    <type name="C">
+      <method name="Void add_MyDelegate(System.EventHandler)">
+        <size>47</size>
+      </method>
+      <method name="Void remove_MyDelegate(System.EventHandler)">
+        <size>47</size>
+      </method>
+      <method name="Void DoSomething(Boolean)">
+        <size>8</size>
+      </method>
+      <method name="Void Main()">
+        <size>1</size>
+      </method>
+      <method name="Void <MyDelegate>m__0(System.Object, System.EventArgs)">
+        <size>1</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>42</size>
+      </method>
+    </type>
+  </test>
   <test name="test-anon-84.cs">
     <type name="C">
       <method name="Void .ctor()">
@@ -45741,7 +47036,7 @@
         <size>12</size>
       </method>
       <method name="Void Test()">
-        <size>102</size>
+        <size>97</size>
       </method>
     </type>
     <type name="C+D">
@@ -45934,7 +47229,7 @@
         <size>7</size>
       </method>
       <method name="Void <>m__0()">
-        <size>109</size>
+        <size>108</size>
       </method>
     </type>
     <type name="C+<Test>c__AnonStorey0+<Test>c__AnonStorey1">
@@ -46093,10 +47388,10 @@
     </type>
     <type name="B">
       <method name="Void add_Event(D)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_Event(D)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Int32 Run()">
         <size>12</size>
@@ -46142,7 +47437,7 @@
         <size>3</size>
       </method>
       <method name="Program+D Get(Int32)">
-        <size>115</size>
+        <size>128</size>
       </method>
       <method name="Int32 Run(Int32)">
         <size>12</size>
@@ -46166,15 +47461,89 @@
       </method>
     </type>
     <type name="Program+<Get>c__AnonStorey0">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Program+<Get>c__AnonStorey1">
       <method name="Int32 <>m__0()">
-        <size>19</size>
+        <size>24</size>
       </method>
       <method name="Int32 <>m__1()">
-        <size>19</size>
+        <size>24</size>
       </method>
       <method name="Int32 <>m__2()">
+        <size>19</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="test-anon-97.cs">
+    <type name="Space">
+      <method name="Void Leak(Boolean, Int32)">
+        <size>85</size>
+      </method>
+      <method name="Void .ctor()">
         <size>14</size>
       </method>
+    </type>
+    <type name="Space+DoCopy">
+      <method name="Void Invoke()">
+        <size>0</size>
+      </method>
+      <method name="IAsyncResult BeginInvoke(System.AsyncCallback, System.Object)">
+        <size>0</size>
+      </method>
+      <method name="Void EndInvoke(IAsyncResult)">
+        <size>0</size>
+      </method>
+      <method name="Void .ctor(Object, IntPtr)">
+        <size>0</size>
+      </method>
+    </type>
+    <type name="Program">
+      <method name="Void Main(System.String[])">
+        <size>1</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Space+<Leak>c__AnonStorey1">
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Space+<Leak>c__AnonStorey0">
+      <method name="Void <>m__0()">
+        <size>18</size>
+      </method>
+      <method name="Void <>m__1()">
+        <size>68</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="test-anon-98.cs">
+    <type name="Foo">
+      <method name="Void Finalize()">
+        <size>39</size>
+      </method>
+      <method name="Void Main()">
+        <size>7</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Foo+<Finalize>c__AnonStorey0">
+      <method name="Void <>m__0()">
+        <size>22</size>
+      </method>
       <method name="Void .ctor()">
         <size>7</size>
       </method>
@@ -46865,7 +48234,7 @@
         <size>16</size>
       </method>
       <method name="Int32 Main()">
-        <size>173</size>
+        <size>172</size>
       </method>
     </type>
     <type name="X+<GetIt>c__Iterator0">
@@ -46876,7 +48245,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>126</size>
+        <size>124</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -46896,7 +48265,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>126</size>
+        <size>124</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -46939,7 +48308,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>173</size>
+        <size>171</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -46964,12 +48333,7 @@
         <size>30</size>
       </method>
       <method name="Int32 Main()">
-        <size>248</size>
-      </method>
-    </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
+        <size>247</size>
       </method>
     </type>
     <type name="X+<GetIt>c__Iterator0">
@@ -46983,7 +48347,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>151</size>
+        <size>149</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -47003,7 +48367,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>238</size>
+        <size>236</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -47052,7 +48416,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>123</size>
+        <size>121</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -47105,7 +48469,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>183</size>
+        <size>181</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -47149,7 +48513,7 @@
         <size>30</size>
       </method>
       <method name="Int32 Main()">
-        <size>407</size>
+        <size>403</size>
       </method>
     </type>
     <type name="S+<Get>c__Iterator0">
@@ -47163,7 +48527,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>183</size>
+        <size>181</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -47183,7 +48547,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>136</size>
+        <size>134</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -47203,7 +48567,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>131</size>
+        <size>129</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -47223,7 +48587,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>136</size>
+        <size>134</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -47287,7 +48651,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>374</size>
+        <size>373</size>
       </method>
     </type>
     <type name="Test+<Foo>c__Iterator0">
@@ -47319,26 +48683,26 @@
   </test>
   <test name="test-iter-08.cs">
     <type name="Foo">
-      <method name="Void .ctor(Int32)">
-        <size>14</size>
-      </method>
       <method name="Void Dispose()">
         <size>8</size>
       </method>
+      <method name="Void .ctor(Int32)">
+        <size>14</size>
+      </method>
     </type>
     <type name="X">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
       <method name="IEnumerable Test(Int32, Int32)">
         <size>44</size>
       </method>
       <method name="Int32 Main()">
         <size>169</size>
       </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
     </type>
     <type name="X+<Test>c__Iterator0">
-      <method name="Void .ctor()">
+      <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
         <size>7</size>
       </method>
       <method name="System.Object System.Collections.IEnumerator.get_Current()">
@@ -47347,8 +48711,11 @@
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
         <size>7</size>
       </method>
+      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<object>.GetEnumerator()">
+        <size>52</size>
+      </method>
       <method name="Boolean MoveNext()">
-        <size>360</size>
+        <size>358</size>
       </method>
       <method name="Void Dispose()">
         <size>102</size>
@@ -47356,12 +48723,9 @@
       <method name="Void Reset()">
         <size>6</size>
       </method>
-      <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
+      <method name="Void .ctor()">
         <size>7</size>
       </method>
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<object>.GetEnumerator()">
-        <size>52</size>
-      </method>
     </type>
   </test>
   <test name="test-iter-09.cs">
@@ -47378,7 +48742,7 @@
         <size>7</size>
       </method>
       <method name="Int32 Main()">
-        <size>270</size>
+        <size>268</size>
       </method>
     </type>
     <type name="Tester+<GetEnumerator>c__Iterator0">
@@ -47389,10 +48753,10 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>625</size>
+        <size>635</size>
       </method>
       <method name="Void Dispose()">
-        <size>84</size>
+        <size>96</size>
       </method>
       <method name="Void Reset()">
         <size>6</size>
@@ -47420,7 +48784,7 @@
         <size>1</size>
       </method>
       <method name="Int32 Main()">
-        <size>186</size>
+        <size>184</size>
       </method>
     </type>
     <type name="X+<>c__Iterator0">
@@ -47431,7 +48795,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>126</size>
+        <size>124</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -47451,7 +48815,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>145</size>
+        <size>143</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -47480,10 +48844,10 @@
         <size>7</size>
       </method>
       <method name="Void add_Hook(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_Hook(System.EventHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="IEnumerator Pipeline()">
         <size>15</size>
@@ -47492,7 +48856,7 @@
         <size>11</size>
       </method>
       <method name="Void Main()">
-        <size>55</size>
+        <size>39</size>
       </method>
     </type>
     <type name="X+<Pipeline>c__Iterator0">
@@ -47503,7 +48867,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>124</size>
+        <size>122</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -47539,7 +48903,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>165</size>
+        <size>163</size>
       </method>
       <method name="Void Dispose()">
         <size>55</size>
@@ -47589,7 +48953,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>27</size>
+        <size>25</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -47605,6 +48969,366 @@
       </method>
     </type>
   </test>
+  <test name="test-iter-14.cs">
+    <type name="XX">
+      <method name="Void Metodo(System.Exception)">
+        <size>37</size>
+      </method>
+      <method name="IEnumerable X()">
+        <size>16</size>
+      </method>
+      <method name="Void Main()">
+        <size>65</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="XX+<X>c__Iterator0">
+      <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
+        <size>7</size>
+      </method>
+      <method name="System.Object System.Collections.IEnumerator.get_Current()">
+        <size>7</size>
+      </method>
+      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
+        <size>7</size>
+      </method>
+      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<object>.GetEnumerator()">
+        <size>26</size>
+      </method>
+      <method name="Boolean MoveNext()">
+        <size>103</size>
+      </method>
+      <method name="Void Dispose()">
+        <size>8</size>
+      </method>
+      <method name="Void Reset()">
+        <size>6</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="test-iter-15.cs">
+    <type name="Test">
+      <method name="IEnumerator GetEnumerator()">
+        <size>15</size>
+      </method>
+      <method name="Void Main()">
+        <size>11</size>
+      </method>
+      <method name="Void Run()">
+        <size>177</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Test+<GetEnumerator>c__Iterator0">
+      <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
+        <size>7</size>
+      </method>
+      <method name="System.Object System.Collections.IEnumerator.get_Current()">
+        <size>7</size>
+      </method>
+      <method name="Boolean MoveNext()">
+        <size>127</size>
+      </method>
+      <method name="Void Dispose()">
+        <size>8</size>
+      </method>
+      <method name="Void Reset()">
+        <size>6</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="test-iter-16.cs">
+    <type name="Foo">
+      <method name="IEnumerable foo()">
+        <size>16</size>
+      </method>
+      <method name="Int32 Main()">
+        <size>67</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Foo+<foo>c__Iterator0">
+      <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
+        <size>7</size>
+      </method>
+      <method name="System.Object System.Collections.IEnumerator.get_Current()">
+        <size>7</size>
+      </method>
+      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
+        <size>7</size>
+      </method>
+      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<object>.GetEnumerator()">
+        <size>26</size>
+      </method>
+      <method name="Boolean MoveNext()">
+        <size>37</size>
+      </method>
+      <method name="Void Dispose()">
+        <size>8</size>
+      </method>
+      <method name="Void Reset()">
+        <size>6</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="test-iter-17.cs">
+    <type name="Program">
+      <method name="IEnumerable get_Empty()">
+        <size>16</size>
+      </method>
+      <method name="Void Main()">
+        <size>61</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Program+<>c__Iterator0">
+      <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
+        <size>7</size>
+      </method>
+      <method name="System.Object System.Collections.IEnumerator.get_Current()">
+        <size>7</size>
+      </method>
+      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
+        <size>7</size>
+      </method>
+      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<object>.GetEnumerator()">
+        <size>26</size>
+      </method>
+      <method name="Boolean MoveNext()">
+        <size>156</size>
+      </method>
+      <method name="Void Dispose()">
+        <size>8</size>
+      </method>
+      <method name="Void Reset()">
+        <size>6</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="test-iter-18.cs">
+    <type name="test">
+      <method name="IEnumerable testen(Int32)">
+        <size>30</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="reflect">
+      <method name="Void Main(System.String[])">
+        <size>119</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="test+<testen>c__Iterator0">
+      <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
+        <size>7</size>
+      </method>
+      <method name="System.Object System.Collections.IEnumerator.get_Current()">
+        <size>7</size>
+      </method>
+      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
+        <size>7</size>
+      </method>
+      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<object>.GetEnumerator()">
+        <size>40</size>
+      </method>
+      <method name="Boolean MoveNext()">
+        <size>193</size>
+      </method>
+      <method name="Void Dispose()">
+        <size>8</size>
+      </method>
+      <method name="Void Reset()">
+        <size>6</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="test-iter-19.cs">
+    <type name="Test">
+      <method name="Void Main()">
+        <size>66</size>
+      </method>
+      <method name="IEnumerator GetEnumerator()">
+        <size>8</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Test+<GetEnumerator>c__Iterator0">
+      <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
+        <size>7</size>
+      </method>
+      <method name="System.Object System.Collections.IEnumerator.get_Current()">
+        <size>7</size>
+      </method>
+      <method name="Boolean MoveNext()">
+        <size>75</size>
+      </method>
+      <method name="Void Dispose()">
+        <size>8</size>
+      </method>
+      <method name="Void Reset()">
+        <size>6</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="test-iter-20.cs">
+    <type name="CustomDict">
+      <method name="IEnumerator GetEnumerator()">
+        <size>15</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>68</size>
+      </method>
+    </type>
+    <type name="Tests">
+      <method name="Void Main()">
+        <size>7</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="CustomDict+<GetEnumerator>c__Iterator0">
+      <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
+        <size>7</size>
+      </method>
+      <method name="System.Object System.Collections.IEnumerator.get_Current()">
+        <size>7</size>
+      </method>
+      <method name="Boolean MoveNext()">
+        <size>84</size>
+      </method>
+      <method name="Void Dispose()">
+        <size>8</size>
+      </method>
+      <method name="Void Reset()">
+        <size>6</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="test-iter-21.cs">
+    <type name="X">
+      <method name="IEnumerable GetIt(System.Int32[])">
+        <size>30</size>
+      </method>
+      <method name="Int32 Main()">
+        <size>119</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="X+A">
+      <method name="Void Invoke()">
+        <size>0</size>
+      </method>
+      <method name="IAsyncResult BeginInvoke(System.AsyncCallback, System.Object)">
+        <size>0</size>
+      </method>
+      <method name="Void EndInvoke(IAsyncResult)">
+        <size>0</size>
+      </method>
+      <method name="Void .ctor(Object, IntPtr)">
+        <size>0</size>
+      </method>
+    </type>
+    <type name="X+<GetIt>c__Iterator0">
+      <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
+        <size>7</size>
+      </method>
+      <method name="System.Object System.Collections.IEnumerator.get_Current()">
+        <size>7</size>
+      </method>
+      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
+        <size>7</size>
+      </method>
+      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<object>.GetEnumerator()">
+        <size>40</size>
+      </method>
+      <method name="Boolean MoveNext()">
+        <size>199</size>
+      </method>
+      <method name="Void Dispose()">
+        <size>8</size>
+      </method>
+      <method name="Void Reset()">
+        <size>6</size>
+      </method>
+      <method name="Void <>m__0()">
+        <size>22</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="test-iter-22.cs">
+    <type name="Test">
+      <method name="Void Main()">
+        <size>66</size>
+      </method>
+      <method name="IEnumerator GetEnumerator()">
+        <size>8</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Test+<GetEnumerator>c__Iterator0">
+      <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
+        <size>7</size>
+      </method>
+      <method name="System.Object System.Collections.IEnumerator.get_Current()">
+        <size>7</size>
+      </method>
+      <method name="Boolean MoveNext()">
+        <size>197</size>
+      </method>
+      <method name="Void Dispose()">
+        <size>76</size>
+      </method>
+      <method name="Void Reset()">
+        <size>6</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="test-named-01.cs">
     <type name="A">
       <method name="Void .ctor()">
@@ -47673,7 +49397,7 @@
         <size>30</size>
       </method>
       <method name="Int32 Main()">
-        <size>279</size>
+        <size>274</size>
       </method>
     </type>
   </test>
@@ -47710,7 +49434,58 @@
         <size>40</size>
       </method>
       <method name="Int32 Main()">
-        <size>239</size>
+        <size>242</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="test-named-05.cs">
+    <type name="A">
+      <method name="Int32 Foo(Int32)">
+        <size>2</size>
+      </method>
+      <method name="Int32 get_Item(Int32, System.String)">
+        <size>2</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="B">
+      <method name="Int32 Foo(Int32)">
+        <size>2</size>
+      </method>
+      <method name="Int32 get_Item(Int32, System.String)">
+        <size>2</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Test">
+      <method name="Int32 Main()">
+        <size>98</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="test-named-06.cs">
+    <type name="C">
+      <method name="Int32 Main()">
+        <size>25</size>
+      </method>
+      <method name="Int32 Foo(Int32, Int64, System.String)">
+        <size>2</size>
+      </method>
+      <method name="Int32 Foo(Int32, Int64, System.String[])">
+        <size>2</size>
+      </method>
+      <method name="Int32 Foo(Int64, Int32)">
+        <size>2</size>
       </method>
       <method name="Void .ctor()">
         <size>7</size>
@@ -48017,7 +49792,7 @@
         <size>7</size>
       </method>
       <method name="Boolean MoveNext()">
-        <size>69</size>
+        <size>67</size>
       </method>
       <method name="Void Dispose()">
         <size>8</size>
@@ -48279,10 +50054,10 @@
         <size>7</size>
       </method>
       <method name="Void add_ContactsEventHandler(Mono.Sms.Contacts+ContactsHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void remove_ContactsEventHandler(Mono.Sms.Contacts+ContactsHandler)">
-        <size>24</size>
+        <size>47</size>
       </method>
       <method name="Void Test()">
         <size>12</size>
@@ -48477,11 +50252,6 @@
         <size>167</size>
       </method>
     </type>
-    <type name="<PrivateImplementationDetails>">
-      <method name="Void .ctor()">
-        <size>7</size>
-      </method>
-    </type>
   </test>
   <test name="test-var-05.cs">
     <type name="MyClass">
@@ -48539,6 +50309,16 @@
       </method>
     </type>
   </test>
+  <test name="test-var-09.cs">
+    <type name="A">
+      <method name="Int32 Main()">
+        <size>12</size>
+      </method>
+      <method name="Void .ctor()">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="test-xml-042.cs">
     <type name="TestNamespace.TestClass">
       <method name="Void .ctor()">
diff --git a/mcs/tools/ChangeLog b/mcs/tools/ChangeLog
index be2005d..4ef68df 100644
--- a/mcs/tools/ChangeLog
+++ b/mcs/tools/ChangeLog
@@ -1,3 +1,86 @@
+2010-12-29  Marek Safar  <marek.safar at gmail.com>
+
+	Build culevel in basic as well
+
+2010-12-29  Marek Safar  <marek.safar at gmail.com>
+
+	[661642] Fixed v4 resgen compilation
+
+2010-12-29  Marek Safar  <marek.safar at gmail.com>
+
+	Remove no longer used bootstrap profiles
+
+2010-09-22  Jonathan Pryor  <jonpryor at vt.edu>
+
+	Revert "mdoc 2.0-only profile build support, take 3!"
+
+	We'll instead just disable the docs build entirely if
+	--with-profile4=no is specified [future commit, not this one].
+
+2010-09-22  Jonathan Pryor  <jonpryor at vt.edu>
+
+	mdoc 2.0-only profile build support, take 3!
+
+	Further discussion suggested that, even if mdoc 2.0 works, it
+	hasn't gotten widespread testing (as it's been a 4.0 app for
+	months), so it would be preferable to keep it as a 4.0 app.
+
+	However, it still needs to be built under 2.0 so that a
+	--with-profile4=no build can...build...without errors.
+
+	Thus, the compromise: build mdoc twice, once for each profile.
+	This will ensure that *some* version of mdoc is around when
+	mcs/docs is built.
+
+	Unfortunately we can't place mdoc into $(per_profile_dirs), as
+	these are built before $(net_2_0_dirs) (and thus before monodoc,
+	which needs to be built before mdoc). Thus the compromise of
+	listing mdoc in *both* $(net_2_0_dirs) and $(net_4_0_dirs),
+	allowing build dependencies to be met.
+
+2010-09-22  Marek Habersack  <grendel at twistedcode.net>
+
+	Revert "mdoc 2.0-only profile build support, take 2!"
+
+	This reverts commit 313633fc67cf1479514019a56143e5ad1643d28f
+	because it breaks the build.
+
+2010-09-21  Jonathan Pryor  <jonpryor at vt.edu>
+
+	mdoc 2.0-only profile build support, take 2!
+
+	Further discussion suggested that, even if mdoc 2.0 works, it
+	hasn't gotten widespread testing (as it's been a 4.0 app for
+	months), so it would be preferable to keep it as a 4.0 app.
+
+	However, it still needs to be built under 2.0 so that a
+	--with-profile4=no build can...build...without errors.
+
+	Thus, the compromise: build mdoc twice, once for each profile.
+	This will ensure that *some* version of mdoc is around when
+	mcs/docs is built.
+
+2010-09-16  Jonathan Pryor  <jonpryor at vt.edu>
+
+	Build monodoc before mdoc.
+
+	mdoc deps on monodoc. Doh!
+
+2010-09-16  Jonathan Pryor  <jonpryor at vt.edu>
+
+	Make mdoc a 2.0 app, not a 4.0 app.
+
+	The problem is build sanity: it's possible to disable the 4.0
+	profile (--with-profile4=no) while not disabling documentation
+	building (--with-mcs-docs=yes is the default). The result would be
+	a 4.0-less build, and thus no mdoc, and thus no mdoc to assemble
+	the documentation, and thus a build break as we attempted to use
+	an app during the build which didn't exist.
+
+	Oops.
+
+	mdoc doesn't need to be a 4.0 app anyway...
+
 2010-08-13  Marek Safar  <marek.safar at gmail.com>
 
 	Remove Mono.Options.dll dependency
diff --git a/mcs/tools/Makefile b/mcs/tools/Makefile
index 9547cad..0d8e482 100644
--- a/mcs/tools/Makefile
+++ b/mcs/tools/Makefile
@@ -20,7 +20,6 @@ net_4_0_dirs := \
 	$(per_profile_dirs) \
 	corcompare	\
 	mono-xmltool	\
-	mdoc		\
 	mono-shlib-cop	\
 	sgen		\
 	mconfig		\
@@ -47,20 +46,19 @@ net_4_0_dirs := \
 net_2_0_dirs := \
 	$(per_profile_dirs) \
 	monodoc		\
+	mdoc		\
 	compiler-tester
 
 moonlight_dirs := \
 	compiler-tester
 
-basic_SUBDIRS = gacutil security
-net_2_0_bootstrap_SUBDIRS = resgen culevel
+basic_SUBDIRS = gacutil resgen security culevel
 net_2_0_SUBDIRS := $(basic_SUBDIRS) $(net_2_0_dirs)
 moonlight_raw_SUBDIRS := $(moonlight_dirs)
 moonlight_SUBDIRS := $(moonlight_dirs)
-net_4_0_bootstrap_SUBDIRS = resgen culevel
 net_4_0_SUBDIRS := $(net_4_0_dirs) $(basic_SUBDIRS)
 
-SUBDIRS = $(basic_SUBDIRS) $(net_2_0_bootstrap_SUBDIRS) $(net_2_0_SUBDIRS) $(moonlight_SUBDIRS)
+SUBDIRS = $(basic_SUBDIRS) $(net_2_0_SUBDIRS) $(moonlight_SUBDIRS)
 DIST_SUBDIRS = $(SUBDIRS) $(net_4_0_dirs)
 
 include ../build/rules.make
diff --git a/mcs/tools/cil-strip/AssemblyStripper.cs b/mcs/tools/cil-strip/AssemblyStripper.cs
new file mode 100644
index 0000000..3e5b0b9
--- /dev/null
+++ b/mcs/tools/cil-strip/AssemblyStripper.cs
@@ -0,0 +1,221 @@
+//
+// AssemblyStripper.cs
+//
+// Author:
+//   Jb Evain (jbevain at novell.com)
+//
+// (C) 2008 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System.Collections;
+using System.IO;
+
+using Mono.Cecil;
+using Mono.Cecil.Binary;
+using Mono.Cecil.Cil;
+using Mono.Cecil.Metadata;
+
+namespace Mono.CilStripper {
+
+	class AssemblyStripper {
+
+		AssemblyDefinition assembly;
+		BinaryWriter writer;
+
+		Image original;
+		Image stripped;
+
+		ReflectionWriter reflection_writer;
+		MetadataWriter metadata_writer;
+
+		TablesHeap original_tables;
+		TablesHeap stripped_tables;
+
+		AssemblyStripper (AssemblyDefinition assembly, BinaryWriter writer)
+		{
+			this.assembly = assembly;
+			this.writer = writer;
+		}
+
+		void Strip ()
+		{
+			FullLoad ();
+			ClearMethodBodies ();
+			CopyOriginalImage ();
+			PatchMethods ();
+			PatchFields ();
+			PatchResources ();
+			Write ();
+		}
+
+		void FullLoad ()
+		{
+			assembly.MainModule.FullLoad ();
+		}
+
+		void ClearMethodBodies ()
+		{
+			foreach (TypeDefinition type in assembly.MainModule.Types) {
+				ClearMethodBodies (type.Constructors);
+				ClearMethodBodies (type.Methods);
+			}
+		}
+
+		static void ClearMethodBodies (ICollection methods)
+		{
+			foreach (MethodDefinition method in methods) {
+				if (!method.HasBody)
+					continue;
+
+				MethodBody body = new MethodBody (method);
+				body.CilWorker.Emit (OpCodes.Ret);
+
+				method.Body = body;
+			}
+		}
+
+		void CopyOriginalImage ()
+		{
+			original = assembly.MainModule.Image;
+			stripped = Image.CreateImage();
+
+			stripped.Accept (new CopyImageVisitor (original));
+
+			assembly.MainModule.Image = stripped;
+
+			original_tables = original.MetadataRoot.Streams.TablesHeap;
+			stripped_tables = stripped.MetadataRoot.Streams.TablesHeap;
+
+			TableCollection tables = original_tables.Tables;
+			foreach (IMetadataTable table in tables)
+				stripped_tables.Tables.Add(table);
+
+			stripped_tables.Valid = original_tables.Valid;
+			stripped_tables.Sorted = original_tables.Sorted;
+
+			reflection_writer = new ReflectionWriter (assembly.MainModule);
+			reflection_writer.StructureWriter = new StructureWriter (assembly, writer);
+			reflection_writer.CodeWriter.Stripped = true;
+
+			metadata_writer = reflection_writer.MetadataWriter;
+
+			PatchHeap (metadata_writer.StringWriter, original.MetadataRoot.Streams.StringsHeap);
+			PatchHeap (metadata_writer.GuidWriter, original.MetadataRoot.Streams.GuidHeap);
+			PatchHeap (metadata_writer.UserStringWriter, original.MetadataRoot.Streams.UserStringsHeap);
+			PatchHeap (metadata_writer.BlobWriter, original.MetadataRoot.Streams.BlobHeap);
+
+			if (assembly.EntryPoint != null)
+				metadata_writer.EntryPointToken = assembly.EntryPoint.MetadataToken.ToUInt ();
+		}
+
+		static void PatchHeap (MemoryBinaryWriter heap_writer, MetadataHeap heap)
+		{
+			if (heap == null)
+				return;
+
+			heap_writer.BaseStream.Position = 0;
+			heap_writer.Write (heap.Data);
+		}
+
+		void PatchMethods ()
+		{
+			MethodTable methodTable = (MethodTable) stripped_tables [MethodTable.RId];
+			if (methodTable == null)
+				return;
+
+			RVA method_rva = RVA.Zero;
+
+			for (int i = 0; i < methodTable.Rows.Count; i++) {
+				MethodRow methodRow = methodTable[i];
+
+				MetadataToken methodToken = MetadataToken.FromMetadataRow (TokenType.Method, i);
+
+				MethodDefinition method = (MethodDefinition) assembly.MainModule.LookupByToken (methodToken);
+
+				if (method.HasBody) {
+					method_rva = method_rva != RVA.Zero
+						? method_rva
+						: reflection_writer.CodeWriter.WriteMethodBody (method);
+
+					methodRow.RVA = method_rva;
+				} else
+					methodRow.RVA = RVA.Zero;
+			}
+		}
+
+		void PatchFields ()
+		{
+			FieldRVATable fieldRvaTable = (FieldRVATable) stripped_tables [FieldRVATable.RId];
+			if (fieldRvaTable == null)
+				return;
+
+			for (int i = 0; i < fieldRvaTable.Rows.Count; i++) {
+				FieldRVARow fieldRvaRow = fieldRvaTable [i];
+
+				MetadataToken fieldToken = new MetadataToken (TokenType.Field, fieldRvaRow.Field);
+
+				FieldDefinition field = (FieldDefinition) assembly.MainModule.LookupByToken (fieldToken);
+
+				fieldRvaRow.RVA = metadata_writer.GetDataCursor ();
+				metadata_writer.AddData (field.InitialValue.Length + 3 & (~3));
+				metadata_writer.AddFieldInitData (field.InitialValue);
+			}
+		}
+
+		void PatchResources ()
+		{
+			ManifestResourceTable resourceTable = (ManifestResourceTable) stripped_tables [ManifestResourceTable.RId];
+			if (resourceTable == null)
+				return;
+
+			for (int i = 0; i < resourceTable.Rows.Count; i++) {
+				ManifestResourceRow resourceRow = resourceTable [i];
+
+				if (resourceRow.Implementation.RID != 0)
+					continue;
+
+				foreach (Resource resource in assembly.MainModule.Resources) {
+					EmbeddedResource er = resource as EmbeddedResource;
+					if (er == null)
+						continue;
+
+					if (resource.Name != original.MetadataRoot.Streams.StringsHeap [resourceRow.Name])
+						continue;
+
+					resourceRow.Offset = metadata_writer.AddResource (er.Data);
+				}
+			}
+		}
+
+		void Write ()
+		{
+			stripped.MetadataRoot.Accept (metadata_writer);
+		}
+
+		public static void StripAssembly (AssemblyDefinition assembly, string file)
+		{
+			using (FileStream fs = new FileStream (file, FileMode.Create, FileAccess.Write, FileShare.None)) {
+				new AssemblyStripper (assembly, new BinaryWriter (fs)).Strip ();
+			}
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/ChangeLog b/mcs/tools/cil-strip/ChangeLog
index ff6ea77..899a6d9 100644
--- a/mcs/tools/cil-strip/ChangeLog
+++ b/mcs/tools/cil-strip/ChangeLog
@@ -1,3 +1,7 @@
+2010-11-21  Jb Evain  <jbevain at gmail.com>
+
+	internalize private cecil
+
 2009-03-12  Jb Evain  <jbevain at novell.com>
 
 	* cilstrip.cs: unwrap TargetInvocationException.
diff --git a/mcs/tools/cil-strip/ChangeLog b/mcs/tools/cil-strip/ChangeLog.old
similarity index 100%
copy from mcs/tools/cil-strip/ChangeLog
copy to mcs/tools/cil-strip/ChangeLog.old
diff --git a/mcs/tools/cil-strip/Makefile b/mcs/tools/cil-strip/Makefile
index de7c67c..31407e8 100644
--- a/mcs/tools/cil-strip/Makefile
+++ b/mcs/tools/cil-strip/Makefile
@@ -4,6 +4,4 @@ include ../../build/rules.make
 
 PROGRAM = mono-cil-strip.exe
 
-LOCAL_MCS_FLAGS = /r:Mono.Cecil.dll
-
 include ../../build/executable.make
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/BaseImageVisitor.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/BaseImageVisitor.cs
new file mode 100644
index 0000000..4c6876b
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Binary/BaseImageVisitor.cs
@@ -0,0 +1,101 @@
+//
+// BaseImageVisitor.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 - 2007 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+	internal abstract class BaseImageVisitor : IBinaryVisitor {
+
+		public virtual void VisitImage (Image img)
+		{
+		}
+
+		public virtual void VisitDOSHeader (DOSHeader header)
+		{
+		}
+
+		public virtual void VisitPEFileHeader (PEFileHeader header)
+		{
+		}
+
+		public virtual void VisitPEOptionalHeader (PEOptionalHeader header)
+		{
+		}
+
+		public virtual void VisitStandardFieldsHeader (PEOptionalHeader.StandardFieldsHeader header)
+		{
+		}
+
+		public virtual void VisitNTSpecificFieldsHeader (PEOptionalHeader.NTSpecificFieldsHeader header)
+		{
+		}
+
+		public virtual void VisitDataDirectoriesHeader (PEOptionalHeader.DataDirectoriesHeader header)
+		{
+		}
+
+		public virtual void VisitSectionCollection (SectionCollection coll)
+		{
+		}
+
+		public virtual void VisitSection (Section section)
+		{
+		}
+
+		public virtual void VisitImportAddressTable (ImportAddressTable iat)
+		{
+		}
+
+		public virtual void VisitDebugHeader (DebugHeader dh)
+		{
+		}
+
+		public virtual void VisitCLIHeader (CLIHeader header)
+		{
+		}
+
+		public virtual void VisitImportTable (ImportTable it)
+		{
+		}
+
+		public virtual void VisitImportLookupTable (ImportLookupTable ilt)
+		{
+		}
+
+		public virtual void VisitHintNameTable (HintNameTable hnt)
+		{
+		}
+
+		public virtual void VisitExportTable (ExportTable et)
+		{
+		}
+
+		public virtual void TerminateImage (Image img)
+		{
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/CLIHeader.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/CLIHeader.cs
new file mode 100644
index 0000000..036d1c0
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Binary/CLIHeader.cs
@@ -0,0 +1,66 @@
+//
+// CLIHeader.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+	internal sealed class CLIHeader : IHeader, IBinaryVisitable {
+
+		public uint Cb;
+		public ushort MajorRuntimeVersion;
+		public ushort MinorRuntimeVersion;
+		public DataDirectory Metadata;
+		public RuntimeImage Flags;
+		public uint EntryPointToken;
+		public DataDirectory Resources;
+		public DataDirectory StrongNameSignature;
+		public DataDirectory CodeManagerTable;
+		public DataDirectory VTableFixups;
+		public DataDirectory ExportAddressTableJumps;
+		public DataDirectory ManagedNativeHeader;
+
+		public byte [] ImageHash;
+
+		internal CLIHeader ()
+		{
+		}
+
+		public void SetDefaultValues ()
+		{
+			Cb = 0x48;
+			Flags = RuntimeImage.ILOnly;
+			CodeManagerTable = DataDirectory.Zero;
+			ExportAddressTableJumps = DataDirectory.Zero;
+			ManagedNativeHeader = DataDirectory.Zero;
+		}
+
+		public void Accept (IBinaryVisitor visitor)
+		{
+			visitor.VisitCLIHeader (this);
+		}
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/CopyImageVisitor.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/CopyImageVisitor.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil.Binary/CopyImageVisitor.cs
rename to mcs/tools/cil-strip/Mono.Cecil.Binary/CopyImageVisitor.cs
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/DOSHeader.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/DOSHeader.cs
new file mode 100644
index 0000000..3716b02
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Binary/DOSHeader.cs
@@ -0,0 +1,75 @@
+//
+// DOSHeader.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+	internal sealed class DOSHeader : IHeader, IBinaryVisitable {
+
+		public byte [] Start;
+		public byte [] End;
+
+		public uint Lfanew;
+
+		internal DOSHeader ()
+		{
+		}
+
+		public void SetDefaultValues ()
+		{
+			Start = new byte [60] {
+				0x4d, 0x5a, 0x90, 0x00, 0x03, 0x00, 0x00,
+				0x00, 0x04, 0x00, 0x00, 0x00, 0xff, 0xff,
+				0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x00,
+				0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
+				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+				0x00, 0x00, 0x00, 0x00
+			};
+			Lfanew = 128;
+			End = new byte [64] {
+				0x0e, 0x1f, 0xba, 0x0e, 0x00, 0xb4, 0x09,
+				0xcd, 0x21, 0xb8, 0x01, 0x4c, 0xcd, 0x21,
+				0x54, 0x68, 0x69, 0x73, 0x20, 0x70, 0x72,
+				0x6f, 0x67, 0x72, 0x61, 0x6d, 0x20, 0x63,
+				0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x20, 0x62,
+				0x65, 0x20, 0x72, 0x75, 0x6e, 0x20, 0x69,
+				0x6e, 0x20, 0x44, 0x4f, 0x53, 0x20, 0x6d,
+				0x6f, 0x64, 0x65, 0x2e, 0x0d, 0x0d, 0x0a,
+				0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+				0x00
+			};
+		}
+
+		public void Accept (IBinaryVisitor visitor)
+		{
+			visitor.VisitDOSHeader (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/DataDirectory.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/DataDirectory.cs
new file mode 100644
index 0000000..7945e80
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Binary/DataDirectory.cs
@@ -0,0 +1,84 @@
+//
+// DataDirectory.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+	internal struct DataDirectory {
+
+		public static readonly DataDirectory Zero = new DataDirectory (RVA.Zero, 0);
+
+		RVA m_virtualAddress;
+		uint m_size;
+
+		public RVA VirtualAddress {
+			get { return m_virtualAddress; }
+			set { m_virtualAddress = value; }
+		}
+
+		public uint Size {
+			get { return m_size; }
+			set { m_size = value; }
+		}
+
+		public DataDirectory (RVA virtualAddress, uint size)
+		{
+			m_virtualAddress = virtualAddress;
+			m_size = size;
+		}
+
+		public override int GetHashCode ()
+		{
+			return (m_virtualAddress.GetHashCode () ^ (int) m_size << 1);
+		}
+
+		public override bool Equals (object other)
+		{
+			if (other is DataDirectory) {
+				DataDirectory odd = (DataDirectory) other;
+				return this.m_virtualAddress == odd.m_virtualAddress && this.m_size == odd.m_size;
+			}
+
+			return false;
+		}
+
+		public override string ToString ()
+		{
+			return string.Format ("{0} [{1}]", m_virtualAddress, m_size.ToString ("X"));
+		}
+
+		public static bool operator == (DataDirectory one, DataDirectory other)
+		{
+			return one.m_virtualAddress == other.m_virtualAddress && one.m_size == other.m_size;
+		}
+
+		public static bool operator != (DataDirectory one, DataDirectory other)
+		{
+			return one.m_virtualAddress != other.m_virtualAddress || one.m_size != other.m_size;
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/DebugHeader.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/DebugHeader.cs
new file mode 100644
index 0000000..0a56084
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Binary/DebugHeader.cs
@@ -0,0 +1,73 @@
+//
+// DebugHeader.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+	using System;
+
+	internal sealed class DebugHeader : IHeader, IBinaryVisitable {
+
+		public uint Characteristics;
+		public uint TimeDateStamp;
+		public ushort MajorVersion;
+		public ushort MinorVersion;
+		public DebugStoreType Type;
+		public uint SizeOfData;
+		public RVA AddressOfRawData;
+		public uint PointerToRawData;
+
+		public uint Magic;
+		public Guid Signature;
+		public uint Age;
+		public string FileName;
+
+		internal DebugHeader ()
+		{
+		}
+
+		public void SetDefaultValues ()
+		{
+			Characteristics = 0;
+
+			this.Magic = 0x53445352;
+			this.Age = 0;
+			this.Type = DebugStoreType.CodeView;
+			this.FileName = string.Empty;
+		}
+
+		public uint GetSize ()
+		{
+			return 0x34 + (uint) FileName.Length + 1;
+		}
+
+		public void Accept (IBinaryVisitor visitor)
+		{
+			visitor.VisitDebugHeader (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/DebugStoreType.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/DebugStoreType.cs
new file mode 100644
index 0000000..576acd0
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Binary/DebugStoreType.cs
@@ -0,0 +1,45 @@
+//
+// DebugStoreType.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+	internal enum DebugStoreType : uint {
+		Unknown = 0x00000000,
+		COFF = 0x00000001,
+		CodeView = 0x00000002,
+		FPO = 0x00000003,
+		Misc = 0x00000004,
+		Exception = 0x00000005,
+		Fixup = 0x00000006,
+		OMAPToSrc = 0x00000007,
+		OMAPFromSrc = 0x00000008,
+		Borland = 0x00000009,
+		Reserved10 = 0x0000000a,
+		CLSID = 0x0000000b
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/ExportTable.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/ExportTable.cs
new file mode 100644
index 0000000..39afa56
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Binary/ExportTable.cs
@@ -0,0 +1,59 @@
+//
+// ExportTable.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2007 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+	internal sealed class ExportTable : IBinaryVisitable {
+
+		public uint Characteristics;
+		public uint TimeDateStamp;
+		public ushort MajorVersion;
+		public ushort MinorVersion;
+		public string Name;
+		public uint Base;
+		public uint NumberOfFunctions;
+		public uint NumberOfNames;
+		public RVA AddressOfFunctions;
+		public RVA AddressOfNames;
+		public RVA AddressOfNameOrdinals;
+
+		public RVA [] AddressesOfFunctions;
+		public RVA [] AddressesOfNames;
+		public ushort [] NameOrdinals;
+		public string [] Names;
+
+		internal ExportTable ()
+		{
+		}
+
+		public void Accept (IBinaryVisitor visitor)
+		{
+			visitor.VisitExportTable (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/IBinaryVisitable.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/IBinaryVisitable.cs
new file mode 100644
index 0000000..9b4b543
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Binary/IBinaryVisitable.cs
@@ -0,0 +1,35 @@
+//
+// IBinaryVisitable.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+	internal interface IBinaryVisitable {
+		void Accept (IBinaryVisitor visitor);
+	}
+}
+
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/IBinaryVisitor.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/IBinaryVisitor.cs
new file mode 100644
index 0000000..fd2b2b1
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Binary/IBinaryVisitor.cs
@@ -0,0 +1,51 @@
+//
+// IBinaryVisitor.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 - 2007 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+	internal interface IBinaryVisitor {
+		void VisitImage (Image img);
+		void VisitDOSHeader (DOSHeader header);
+		void VisitPEFileHeader (PEFileHeader header);
+		void VisitPEOptionalHeader (PEOptionalHeader header);
+		void VisitStandardFieldsHeader (PEOptionalHeader.StandardFieldsHeader header);
+		void VisitNTSpecificFieldsHeader (PEOptionalHeader.NTSpecificFieldsHeader header);
+		void VisitDataDirectoriesHeader (PEOptionalHeader.DataDirectoriesHeader header);
+		void VisitSectionCollection (SectionCollection coll);
+		void VisitSection (Section section);
+		void VisitImportAddressTable (ImportAddressTable iat);
+		void VisitDebugHeader (DebugHeader dh);
+		void VisitCLIHeader (CLIHeader header);
+		void VisitImportTable (ImportTable it);
+		void VisitImportLookupTable (ImportLookupTable ilt);
+		void VisitHintNameTable (HintNameTable hnt);
+		void VisitExportTable (ExportTable et);
+
+		void TerminateImage (Image img);
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/IHeader.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/IHeader.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil.Binary/IHeader.cs
rename to mcs/tools/cil-strip/Mono.Cecil.Binary/IHeader.cs
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/Image.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/Image.cs
new file mode 100644
index 0000000..507dd5e
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Binary/Image.cs
@@ -0,0 +1,243 @@
+//
+// Image.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 - 2007 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+	using System;
+	using System.IO;
+
+	using Mono.Cecil.Metadata;
+
+	internal sealed class Image : IBinaryVisitable {
+
+		DOSHeader m_dosHeader;
+		PEFileHeader m_peFileHeader;
+		PEOptionalHeader m_peOptionalHeader;
+
+		SectionCollection m_sections;
+		Section m_textSection;
+
+		ImportAddressTable m_importAddressTable;
+		CLIHeader m_cliHeader;
+		ImportTable m_importTable;
+		ImportLookupTable m_importLookupTable;
+		HintNameTable m_hintNameTable;
+		ExportTable m_exportTable;
+
+		DebugHeader m_debugHeader;
+		MetadataRoot m_mdRoot;
+
+		ResourceDirectoryTable m_rsrcRoot;
+
+		FileInfo m_img;
+
+		public DOSHeader DOSHeader {
+			get { return m_dosHeader; }
+		}
+
+		public PEFileHeader PEFileHeader {
+			get { return m_peFileHeader; }
+		}
+
+		public PEOptionalHeader PEOptionalHeader {
+			get { return m_peOptionalHeader; }
+		}
+
+		public SectionCollection Sections {
+			get { return m_sections; }
+		}
+
+		public Section TextSection {
+			get { return m_textSection; }
+			set { m_textSection = value; }
+		}
+
+		public ImportAddressTable ImportAddressTable {
+			get { return m_importAddressTable; }
+		}
+
+		public CLIHeader CLIHeader {
+			get { return m_cliHeader; }
+			set { m_cliHeader = value; }
+		}
+
+		public DebugHeader DebugHeader {
+			get { return m_debugHeader; }
+			set { m_debugHeader = value; }
+		}
+
+		public MetadataRoot MetadataRoot {
+			get { return m_mdRoot; }
+		}
+
+		public ImportTable ImportTable {
+			get { return m_importTable; }
+		}
+
+		public ImportLookupTable ImportLookupTable {
+			get { return m_importLookupTable; }
+		}
+
+		public HintNameTable HintNameTable {
+			get { return m_hintNameTable; }
+		}
+
+		public ExportTable ExportTable {
+			get { return m_exportTable; }
+			set { m_exportTable = value; }
+		}
+
+		internal ResourceDirectoryTable ResourceDirectoryRoot {
+			get { return m_rsrcRoot; }
+			set { m_rsrcRoot = value; }
+		}
+
+		public FileInfo FileInformation {
+			get { return m_img; }
+		}
+
+		internal Image ()
+		{
+			m_dosHeader = new DOSHeader ();
+			m_peFileHeader = new PEFileHeader ();
+			m_peOptionalHeader = new PEOptionalHeader ();
+			m_sections = new SectionCollection ();
+			m_importAddressTable = new ImportAddressTable ();
+			m_importTable = new ImportTable ();
+			m_importLookupTable = new ImportLookupTable ();
+			m_hintNameTable = new HintNameTable ();
+			m_mdRoot = new MetadataRoot (this);
+		}
+
+		internal Image (FileInfo img) : this ()
+		{
+			m_img = img;
+		}
+
+		public long ResolveVirtualAddress (RVA rva)
+		{
+			foreach (Section sect in this.Sections) {
+				if (rva >= sect.VirtualAddress &&
+					rva < sect.VirtualAddress + sect.SizeOfRawData)
+
+					return rva + sect.PointerToRawData - sect.VirtualAddress;
+			}
+
+			throw new ArgumentOutOfRangeException ("Cannot map the rva to any section");
+		}
+
+		internal Section GetSectionAtVirtualAddress (RVA rva)
+		{
+			foreach (Section sect in this.Sections) {
+				if (rva >= sect.VirtualAddress &&
+					rva < sect.VirtualAddress + sect.SizeOfRawData) {
+					return sect;
+				}
+			}
+			return null;
+		}
+
+		public BinaryReader GetReaderAtVirtualAddress (RVA rva)
+		{
+			Section sect = GetSectionAtVirtualAddress (rva);
+			if (sect == null)
+				return null;
+
+			BinaryReader br = new BinaryReader (new MemoryStream (sect.Data));
+			br.BaseStream.Position = rva - sect.VirtualAddress;
+			return br;
+		}
+
+		public void AddDebugHeader ()
+		{
+			m_debugHeader = new DebugHeader ();
+			m_debugHeader.SetDefaultValues ();
+		}
+
+		internal void SetFileInfo (FileInfo file)
+		{
+			m_img = file;
+		}
+
+		public void Accept (IBinaryVisitor visitor)
+		{
+			visitor.VisitImage (this);
+
+			m_dosHeader.Accept (visitor);
+			m_peFileHeader.Accept (visitor);
+			m_peOptionalHeader.Accept (visitor);
+
+			m_sections.Accept (visitor);
+
+			m_importAddressTable.Accept (visitor);
+
+			AcceptIfNotNull (m_cliHeader, visitor);
+			AcceptIfNotNull (m_debugHeader, visitor);
+
+			m_importTable.Accept (visitor);
+			m_importLookupTable.Accept (visitor);
+			m_hintNameTable.Accept (visitor);
+			AcceptIfNotNull (m_exportTable, visitor);
+
+			visitor.TerminateImage (this);
+		}
+
+		static void AcceptIfNotNull (IBinaryVisitable visitable, IBinaryVisitor visitor)
+		{
+			if (visitable == null)
+				return;
+
+			visitable.Accept (visitor);
+		}
+
+		public static Image CreateImage ()
+		{
+			Image img = new Image ();
+
+			ImageInitializer init = new ImageInitializer (img);
+			img.Accept (init);
+
+			return img;
+		}
+
+		public static Image GetImage (string file)
+		{
+			return ImageReader.Read (file).Image;
+		}
+
+		public static Image GetImage (byte [] image)
+		{
+			return ImageReader.Read (image).Image;
+		}
+
+		public static Image GetImage (Stream stream)
+		{
+			return ImageReader.Read (stream).Image;
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/ImageCharacteristics.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/ImageCharacteristics.cs
new file mode 100644
index 0000000..c2dc74d
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Binary/ImageCharacteristics.cs
@@ -0,0 +1,57 @@
+//
+// ImageCharacteristics.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+	using System;
+
+	[Flags]
+	internal enum ImageCharacteristics : ushort {
+		RelocsStripped = 0x0001,
+		ExecutableImage = 0x0002,
+		LineNumsStripped = 0x0004,
+		LocalSymsStripped = 0x0008,
+		AggressiveWSTrim = 0x0010,
+		LargeAddressAware = 0x0020,
+		ReservedForFutureUse = 0x0040,
+		BytesReversedLo = 0x0080,
+		_32BitsMachine = 0x0100,
+		DebugStripped = 0x0200,
+		RemovableRunFromSwap = 0x0400,
+		NetRunFromSwap = 0x0800,
+		System = 0x1000,
+		Dll = 0x2000,
+		UPSystemOnly = 0x4000,
+		BytesReversedHI = 0x8000,
+
+		__flags = 0x0002 | 0x0004 | 0x0008 | 0x0100,
+
+		CILOnlyDll = 0x2000 | (ushort) __flags,
+		CILOnlyExe = __flags
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/ImageFormatException.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/ImageFormatException.cs
new file mode 100644
index 0000000..1b70548
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Binary/ImageFormatException.cs
@@ -0,0 +1,53 @@
+//
+// ImageFormatException.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+	using System;
+
+	internal class ImageFormatException : Exception {
+
+		internal ImageFormatException () : base()
+		{
+		}
+
+		internal ImageFormatException (string message) : base(message)
+		{
+		}
+
+		internal ImageFormatException (string message, params string[] parameters) :
+			base(string.Format(message, parameters))
+		{
+		}
+
+		internal ImageFormatException (string message, Exception inner) :
+			base(message, inner)
+		{
+		}
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ImageInitializer.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/ImageInitializer.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil.Binary/ImageInitializer.cs
rename to mcs/tools/cil-strip/Mono.Cecil.Binary/ImageInitializer.cs
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ImageReader.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/ImageReader.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil.Binary/ImageReader.cs
rename to mcs/tools/cil-strip/Mono.Cecil.Binary/ImageReader.cs
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ImageWriter.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/ImageWriter.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil.Binary/ImageWriter.cs
rename to mcs/tools/cil-strip/Mono.Cecil.Binary/ImageWriter.cs
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/Imports.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/Imports.cs
new file mode 100644
index 0000000..c425554
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Binary/Imports.cs
@@ -0,0 +1,98 @@
+//
+// Imports.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+	internal sealed class ImportAddressTable : IBinaryVisitable {
+
+		public RVA HintNameTableRVA;
+
+		internal ImportAddressTable ()
+		{
+		}
+
+		public void Accept (IBinaryVisitor visitor)
+		{
+			visitor.VisitImportAddressTable (this);
+		}
+	}
+
+	internal sealed class ImportTable : IBinaryVisitable {
+
+		public RVA ImportLookupTable;
+		public uint DateTimeStamp;
+		public uint ForwardChain;
+		public RVA Name;
+		public RVA ImportAddressTable;
+
+		internal ImportTable ()
+		{
+		}
+
+		public void Accept (IBinaryVisitor visitor)
+		{
+			visitor.VisitImportTable (this);
+		}
+	}
+
+	internal sealed class ImportLookupTable : IBinaryVisitable {
+
+		public RVA HintNameRVA;
+
+		internal ImportLookupTable ()
+		{
+		}
+
+		public void Accept (IBinaryVisitor visitor)
+		{
+			visitor.VisitImportLookupTable (this);
+		}
+	}
+
+	internal sealed class HintNameTable : IBinaryVisitable {
+
+		public const string RuntimeMainExe = "_CorExeMain";
+		public const string RuntimeMainDll = "_CorDllMain";
+		public const string RuntimeCorEE = "mscoree.dll";
+
+		public ushort Hint;
+		public string RuntimeMain;
+		public string RuntimeLibrary;
+		public ushort EntryPoint;
+		public RVA RVA;
+
+		internal HintNameTable ()
+		{
+		}
+
+		public void Accept (IBinaryVisitor visitor)
+		{
+			visitor.VisitHintNameTable (this);
+		}
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/MemoryBinaryWriter.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/MemoryBinaryWriter.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil.Binary/MemoryBinaryWriter.cs
rename to mcs/tools/cil-strip/Mono.Cecil.Binary/MemoryBinaryWriter.cs
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/PEFileHeader.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/PEFileHeader.cs
new file mode 100644
index 0000000..c541fef
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Binary/PEFileHeader.cs
@@ -0,0 +1,58 @@
+//
+// PEFileHeader.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+	internal sealed class PEFileHeader : IHeader, IBinaryVisitable {
+
+		public ushort Machine;
+		public ushort NumberOfSections;
+		public uint TimeDateStamp;
+		public uint PointerToSymbolTable;
+		public uint NumberOfSymbols;
+		public ushort OptionalHeaderSize;
+		public ImageCharacteristics Characteristics;
+
+		internal PEFileHeader ()
+		{
+		}
+
+		public void SetDefaultValues ()
+		{
+			Machine = 0x14c;
+			PointerToSymbolTable = 0;
+			NumberOfSymbols = 0;
+			OptionalHeaderSize = 0xe0;
+		}
+
+		public void Accept (IBinaryVisitor visitor)
+		{
+			visitor.VisitPEFileHeader (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/PEOptionalHeader.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/PEOptionalHeader.cs
new file mode 100644
index 0000000..2dea24d
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Binary/PEOptionalHeader.cs
@@ -0,0 +1,200 @@
+//
+// PEOptionalHeader.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+	internal sealed class PEOptionalHeader : IHeader, IBinaryVisitable {
+
+		public StandardFieldsHeader StandardFields;
+		public NTSpecificFieldsHeader NTSpecificFields;
+		public DataDirectoriesHeader DataDirectories;
+
+		internal PEOptionalHeader ()
+		{
+			StandardFields = new StandardFieldsHeader ();
+			NTSpecificFields = new NTSpecificFieldsHeader ();
+			DataDirectories = new DataDirectoriesHeader ();
+		}
+
+		public void SetDefaultValues ()
+		{
+		}
+
+		public void Accept (IBinaryVisitor visitor)
+		{
+			visitor.VisitPEOptionalHeader (this);
+
+			StandardFields.Accept (visitor);
+			NTSpecificFields.Accept (visitor);
+			DataDirectories.Accept (visitor);
+		}
+
+		internal sealed class StandardFieldsHeader : IHeader, IBinaryVisitable {
+
+			public ushort Magic;
+			public byte LMajor;
+			public byte LMinor;
+			public uint CodeSize;
+			public uint InitializedDataSize;
+			public uint UninitializedDataSize;
+			public RVA EntryPointRVA;
+			public RVA BaseOfCode;
+			public RVA BaseOfData;
+
+			public bool IsPE64 {
+				get { return Magic == 0x20b; }
+				set {
+					if (value)
+						Magic = 0x20b;
+					else
+						Magic = 0x10b;
+				}
+			}
+
+			internal StandardFieldsHeader ()
+			{
+			}
+
+			public void SetDefaultValues ()
+			{
+				Magic = 0x10b;
+				LMajor = 6;
+				LMinor = 0;
+			}
+
+			public void Accept (IBinaryVisitor visitor)
+			{
+				visitor.VisitStandardFieldsHeader (this);
+			}
+		}
+
+		internal sealed class NTSpecificFieldsHeader : IHeader, IBinaryVisitable {
+
+			public ulong ImageBase;
+			public uint SectionAlignment;
+			public uint FileAlignment;
+			public ushort OSMajor;
+			public ushort OSMinor;
+			public ushort UserMajor;
+			public ushort UserMinor;
+			public ushort SubSysMajor;
+			public ushort SubSysMinor;
+			public uint Reserved;
+			public uint ImageSize;
+			public uint HeaderSize;
+			public uint FileChecksum;
+			public SubSystem SubSystem;
+			public ushort DLLFlags;
+			public ulong StackReserveSize;
+			public ulong StackCommitSize;
+			public ulong HeapReserveSize;
+			public ulong HeapCommitSize;
+			public uint LoaderFlags;
+			public uint NumberOfDataDir;
+
+			internal NTSpecificFieldsHeader ()
+			{
+			}
+
+			public void SetDefaultValues ()
+			{
+				ImageBase = 0x400000;
+				SectionAlignment = 0x2000;
+				FileAlignment = 0x200;
+				OSMajor = 4;
+				OSMinor = 0;
+				UserMajor = 0;
+				UserMinor = 0;
+				SubSysMajor = 4;
+				SubSysMinor = 0;
+				Reserved = 0;
+				HeaderSize = 0x200;
+				FileChecksum = 0;
+				DLLFlags = 0;
+				StackReserveSize = 0x100000;
+				StackCommitSize = 0x1000;
+				HeapReserveSize = 0x100000;
+				HeapCommitSize = 0x1000;
+				LoaderFlags = 0;
+				NumberOfDataDir = 0x10;
+			}
+
+			public void Accept (IBinaryVisitor visitor)
+			{
+				visitor.VisitNTSpecificFieldsHeader (this);
+			}
+		}
+
+		internal sealed class DataDirectoriesHeader : IHeader, IBinaryVisitable {
+
+			public DataDirectory ExportTable;
+			public DataDirectory ImportTable;
+			public DataDirectory ResourceTable;
+			public DataDirectory ExceptionTable;
+			public DataDirectory CertificateTable;
+			public DataDirectory BaseRelocationTable;
+			public DataDirectory Debug;
+			public DataDirectory Copyright;
+			public DataDirectory GlobalPtr;
+			public DataDirectory TLSTable;
+			public DataDirectory LoadConfigTable;
+			public DataDirectory BoundImport;
+			public DataDirectory IAT;
+			public DataDirectory DelayImportDescriptor;
+			public DataDirectory CLIHeader;
+			public DataDirectory Reserved;
+
+			internal DataDirectoriesHeader ()
+			{
+			}
+
+			public void SetDefaultValues ()
+			{
+				ExportTable = DataDirectory.Zero;
+				ResourceTable = DataDirectory.Zero;
+				ExceptionTable = DataDirectory.Zero;
+				CertificateTable = DataDirectory.Zero;
+				Debug = DataDirectory.Zero;
+				Copyright = DataDirectory.Zero;
+				GlobalPtr = DataDirectory.Zero;
+				TLSTable = DataDirectory.Zero;
+				LoadConfigTable = DataDirectory.Zero;
+				BoundImport = DataDirectory.Zero;
+				IAT = new DataDirectory (new RVA (0x2000), 8);
+				DelayImportDescriptor = DataDirectory.Zero;
+				CLIHeader = new DataDirectory (new RVA (0x2008), 0x48);
+				Reserved = DataDirectory.Zero;
+			}
+
+			public void Accept (IBinaryVisitor visitor)
+			{
+				visitor.VisitDataDirectoriesHeader (this);
+			}
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/RVA.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/RVA.cs
new file mode 100644
index 0000000..c8b32bd
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Binary/RVA.cs
@@ -0,0 +1,115 @@
+//
+// RVA.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+	internal struct RVA {
+
+		public static readonly RVA Zero = new RVA (0);
+
+		uint m_rva;
+
+		public uint Value {
+			get { return m_rva; }
+			set { m_rva = value; }
+		}
+
+		public RVA (uint rva)
+		{
+			m_rva = rva;
+		}
+
+		public override int GetHashCode ()
+		{
+			return (int) m_rva;
+		}
+
+		public override bool Equals (object other)
+		{
+			if (other is RVA)
+				return this.m_rva == ((RVA) other).m_rva;
+
+			return false;
+		}
+
+		public override string ToString ()
+		{
+			return string.Format ("0x{0}", m_rva.ToString ("X"));
+		}
+
+		public static bool operator == (RVA one, RVA other)
+		{
+			return one.m_rva == other.m_rva;
+		}
+
+		public static bool operator != (RVA one, RVA other)
+		{
+			return one.m_rva != other.m_rva;
+		}
+
+		public static bool operator < (RVA one, RVA other)
+		{
+			return one.m_rva < other.m_rva;
+		}
+
+		public static bool operator > (RVA one, RVA other)
+		{
+			return one.m_rva > other.m_rva;
+		}
+
+		public static bool operator <= (RVA one, RVA other)
+		{
+			return one.m_rva <= other.m_rva;
+		}
+
+		public static bool operator >= (RVA one, RVA other)
+		{
+			return one.m_rva >= other.m_rva;
+		}
+
+		public static RVA operator + (RVA rva, uint x)
+		{
+			return new RVA (rva.m_rva + x);
+		}
+
+		public static RVA operator - (RVA rva, uint x)
+		{
+			return new RVA (rva.m_rva - x);
+		}
+
+		public static implicit operator RVA (uint val)
+		{
+			return val == 0 ? Zero : new RVA (val);
+		}
+
+		public static implicit operator uint (RVA rva)
+		{
+			return rva.m_rva;
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/ResourceDataEntry.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/ResourceDataEntry.cs
new file mode 100644
index 0000000..14a76dc
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Binary/ResourceDataEntry.cs
@@ -0,0 +1,48 @@
+//
+// ResourceDataEntry.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2006 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+	internal class ResourceDataEntry : ResourceNode {
+
+		public RVA Data;
+		public uint Size;
+		public uint Codepage;
+		public uint Reserved = 0;
+
+		public byte [] ResourceData;
+
+		public ResourceDataEntry (int offset) : base (offset)
+		{
+		}
+
+		public ResourceDataEntry ()
+		{
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/ResourceDirectoryEntry.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/ResourceDirectoryEntry.cs
new file mode 100644
index 0000000..8ddd293
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Binary/ResourceDirectoryEntry.cs
@@ -0,0 +1,66 @@
+//
+// ResourceDirectoryEntry.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2006 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+	internal class ResourceDirectoryEntry : ResourceNode {
+
+		private bool m_idByName;
+
+		public int ID;
+		public ResourceDirectoryString Name;
+
+		public bool IdentifiedByName {
+			get { return m_idByName; }
+		}
+
+		public ResourceNode Child;
+
+		public ResourceDirectoryEntry (ResourceDirectoryString name)
+		{
+			this.Name = name;
+			m_idByName = true;
+		}
+
+		public ResourceDirectoryEntry (ResourceDirectoryString name, int offset) : base (offset)
+		{
+			this.Name = name;
+			m_idByName = true;
+		}
+
+		public ResourceDirectoryEntry (int id)
+		{
+			this.ID = id;
+		}
+
+		public ResourceDirectoryEntry (int id, int offset) : base (offset)
+		{
+			this.ID = id;
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/ResourceDirectoryString.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/ResourceDirectoryString.cs
new file mode 100644
index 0000000..f0250c1
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Binary/ResourceDirectoryString.cs
@@ -0,0 +1,45 @@
+//
+// ResourceDirectoryString.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2006 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+	internal class ResourceDirectoryString : ResourceNode {
+
+		public string String;
+
+		public ResourceDirectoryString (string str)
+		{
+			this.String = str;
+		}
+
+		public ResourceDirectoryString (string str, int offset) : base (offset)
+		{
+			this.String = str;
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/ResourceDirectoryTable.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/ResourceDirectoryTable.cs
new file mode 100644
index 0000000..2970a70
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Binary/ResourceDirectoryTable.cs
@@ -0,0 +1,56 @@
+//
+// ResourceDirectoryTable.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2006 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+	using System.Collections;
+
+	internal class ResourceDirectoryTable : ResourceNode {
+
+		private ArrayList m_entries;
+
+		public uint Characteristics;
+		public uint TimeDateStamp;
+		public ushort MajorVersion;
+		public ushort MinorVersion;
+
+		public IList Entries {
+			get { return m_entries; }
+		}
+
+		public ResourceDirectoryTable (int offset) : base (offset)
+		{
+			m_entries = new ArrayList ();
+		}
+
+		public ResourceDirectoryTable ()
+		{
+			m_entries = new ArrayList ();
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/ResourceNode.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/ResourceNode.cs
new file mode 100644
index 0000000..8b77575
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Binary/ResourceNode.cs
@@ -0,0 +1,44 @@
+//
+// ResourceNode.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2006 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+	internal abstract class ResourceNode {
+
+		public int Offset;
+
+		internal ResourceNode (int offset)
+		{
+			this.Offset = offset;
+		}
+
+		internal ResourceNode ()
+		{
+		}
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ResourceReader.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/ResourceReader.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil.Binary/ResourceReader.cs
rename to mcs/tools/cil-strip/Mono.Cecil.Binary/ResourceReader.cs
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Binary/ResourceWriter.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/ResourceWriter.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil.Binary/ResourceWriter.cs
rename to mcs/tools/cil-strip/Mono.Cecil.Binary/ResourceWriter.cs
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/RuntimeImage.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/RuntimeImage.cs
new file mode 100644
index 0000000..9ae5a64
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Binary/RuntimeImage.cs
@@ -0,0 +1,40 @@
+//
+// RuntimeImage.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+namespace Mono.Cecil.Binary {
+
+	[Flags]
+	internal enum RuntimeImage : uint {
+		ILOnly = 0x0000001,
+		F32BitsRequired = 0x0000002,
+		StrongNameSigned = 0x0000008,
+		TrackDebugData = 0x00010000
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/Section.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/Section.cs
new file mode 100644
index 0000000..2dae1a0
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Binary/Section.cs
@@ -0,0 +1,66 @@
+//
+// Section.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+	internal sealed class Section : IHeader, IBinaryVisitable {
+
+		public const string Text = ".text";
+		public const string Resources = ".rsrc";
+		public const string Relocs = ".reloc";
+		public const string SData = ".sdata";
+
+		public uint VirtualSize;
+		public RVA VirtualAddress;
+		public uint SizeOfRawData;
+		public RVA PointerToRawData;
+		public RVA PointerToRelocations;
+		public RVA PointerToLineNumbers;
+		public ushort NumberOfRelocations;
+		public ushort NumberOfLineNumbers;
+		public SectionCharacteristics Characteristics;
+
+		public string Name;
+		public byte [] Data;
+
+		internal Section ()
+		{
+		}
+
+		public void SetDefaultValues ()
+		{
+			PointerToLineNumbers = RVA.Zero;
+			NumberOfLineNumbers = 0;
+		}
+
+		public void Accept (IBinaryVisitor visitor)
+		{
+			visitor.VisitSection (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/SectionCharacteristics.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/SectionCharacteristics.cs
new file mode 100644
index 0000000..7741fb3
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Binary/SectionCharacteristics.cs
@@ -0,0 +1,70 @@
+//
+// SectionCharacteristics.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+	using System;
+
+	[Flags]
+	internal enum SectionCharacteristics : uint {
+		TypeNoPad = 0x0000008,
+		ContainsCode = 0x00000020,
+		ContainsInitializedData = 0x00000040,
+		ContainsUninitializedData = 0x00000080,
+		LnkOther = 0x0000100,
+		LnkInfo = 0x000200,
+		LnkRemove = 0x0000800,
+		LnkCOMDAT = 0x00001000,
+		GPRel = 0x00008000,
+		MemPurgeable = 0x00020000,
+		MemLocked = 0x00040000,
+		MemPreload = 0x00080000,
+		Align1Bytes = 0x00100000,
+		Align2Bytes = 0x00200000,
+		Align4Bytes = 0x00300000,
+		Align8Bytes = 0x00400000,
+		Align16Bytes = 0x00500000,
+		Align32Bytes = 0x00600000,
+		Align64Bytes = 0x00700000,
+		Align128Bytes = 0x00800000,
+		Align256Bytes = 0x00900000,
+		Align512Bytes = 0x00a00000,
+		Align1024Bytes = 0x00b00000,
+		Align2048Bytes = 0x00c00000,
+		Align4096Bytes = 0x00d00000,
+		Align8192Bytes = 0x00e00000,
+		LnkNRelocOvfl = 0x01000000,
+		MemDiscardable = 0x02000000,
+		MemNotCached = 0x04000000,
+		MemNotPaged = 0x08000000,
+		MemShared = 0x10000000,
+		MemExecute = 0x20000000,
+		MemoryRead = 0x40000000,
+		MemoryWrite = 0x80000000
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/SectionCollection.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/SectionCollection.cs
new file mode 100644
index 0000000..503988d
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Binary/SectionCollection.cs
@@ -0,0 +1,114 @@
+//
+// SectionCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+	using System;
+	using System.Collections;
+
+	internal sealed class SectionCollection : ICollection, IBinaryVisitable {
+
+		IList m_items;
+
+		public Section this [int index]
+		{
+			get { return m_items [index] as Section; }
+			set { m_items [index] = value; }
+		}
+
+		public int Count {
+			get { return m_items.Count; }
+		}
+
+		public bool IsSynchronized {
+			get { return false; }
+		}
+
+		public object SyncRoot {
+			get { return this; }
+		}
+
+		internal SectionCollection ()
+		{
+			m_items = new ArrayList (4);
+		}
+
+		internal void Add (Section value)
+		{
+			m_items.Add (value);
+		}
+
+		internal void Clear ()
+		{
+			m_items.Clear ();
+		}
+
+		public bool Contains (Section value)
+		{
+			return m_items.Contains (value);
+		}
+
+		public int IndexOf (Section value)
+		{
+			return m_items.IndexOf (value);
+		}
+
+		internal void Insert (int index, Section value)
+		{
+			m_items.Insert (index, value);
+		}
+
+		internal void Remove (Section value)
+		{
+			m_items.Remove (value);
+		}
+
+		internal void RemoveAt (int index)
+		{
+			m_items.Remove (index);
+		}
+
+		public void CopyTo (Array ary, int index)
+		{
+			m_items.CopyTo (ary, index);
+		}
+
+		public IEnumerator GetEnumerator ()
+		{
+			return m_items.GetEnumerator ();
+		}
+
+		public void Accept (IBinaryVisitor visitor)
+		{
+			visitor.VisitSectionCollection (this);
+
+			for (int i = 0; i < m_items.Count; i++)
+				this [i].Accept (visitor);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Binary/SubSystem.cs b/mcs/tools/cil-strip/Mono.Cecil.Binary/SubSystem.cs
new file mode 100644
index 0000000..4306ff9
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Binary/SubSystem.cs
@@ -0,0 +1,45 @@
+//
+// SubSystem.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Binary {
+
+	internal enum SubSystem : ushort {
+		Unknown = 0x0,
+		Native = 0x1,
+		WindowsGui = 0x2,
+		WindowsCui = 0x3,
+		PosixCui = 0x7,
+		WindowsCeGui = 0x9,
+		EfiApplication = 0x10,
+		EfiBootServiceDriver = 0x11,
+		EfiRuntimeDriver = 0x12,
+		EfiRom = 0x13,
+		Xbox = 0x14,
+		NexusAgent = 0x15
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/BaseCodeVisitor.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/BaseCodeVisitor.cs
new file mode 100644
index 0000000..3cc839a
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Cil/BaseCodeVisitor.cs
@@ -0,0 +1,73 @@
+//
+// BaseCodeVisitor.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+	internal abstract class BaseCodeVisitor : ICodeVisitor {
+
+		public virtual void VisitMethodBody (MethodBody body)
+		{
+		}
+
+		public virtual void VisitInstructionCollection (InstructionCollection instructions)
+		{
+		}
+
+		public virtual void VisitInstruction (Instruction instr)
+		{
+		}
+
+		public virtual void VisitExceptionHandlerCollection (ExceptionHandlerCollection seh)
+		{
+		}
+
+		public virtual void VisitExceptionHandler (ExceptionHandler eh)
+		{
+		}
+
+		public virtual void VisitVariableDefinitionCollection (VariableDefinitionCollection variables)
+		{
+		}
+
+		public virtual void VisitVariableDefinition (VariableDefinition var)
+		{
+		}
+
+		public virtual void VisitScopeCollection (ScopeCollection scopes)
+		{
+		}
+
+		public virtual void VisitScope (Scope s)
+		{
+		}
+
+		public virtual void TerminateMethodBody (MethodBody body)
+		{
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/CilWorker.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/CilWorker.cs
new file mode 100644
index 0000000..c92de40
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Cil/CilWorker.cs
@@ -0,0 +1,402 @@
+//
+// CilWorker.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+	using System;
+	using SR = System.Reflection;
+
+	internal sealed class CilWorker {
+
+		MethodBody m_mbody;
+		InstructionCollection m_instrs;
+
+		internal CilWorker (MethodBody body)
+		{
+			m_mbody = body;
+			m_instrs = m_mbody.Instructions;
+		}
+
+		public MethodBody GetBody ()
+		{
+			return m_mbody;
+		}
+
+		public Instruction Create (OpCode opcode)
+		{
+			if (opcode.OperandType != OperandType.InlineNone)
+				throw new ArgumentException ("opcode");
+
+			return FinalCreate (opcode);
+		}
+
+		public Instruction Create (OpCode opcode, TypeReference type)
+		{
+			if (type == null)
+				throw new ArgumentNullException ("type");
+			if (opcode.OperandType != OperandType.InlineType &&
+				opcode.OperandType != OperandType.InlineTok)
+				throw new ArgumentException ("opcode");
+
+			return FinalCreate (opcode, type);
+		}
+
+		public Instruction Create (OpCode opcode, CallSite site)
+		{
+			if (site == null)
+				throw new ArgumentNullException ("site");
+			if (opcode.Code != Code.Calli)
+				throw new ArgumentException ("code");
+
+			return FinalCreate (opcode, site);
+		}
+
+		public Instruction Create (OpCode opcode, MethodReference method)
+		{
+			if (method == null)
+				throw new ArgumentNullException ("method");
+			if (opcode.OperandType != OperandType.InlineMethod &&
+				opcode.OperandType != OperandType.InlineTok)
+				throw new ArgumentException ("opcode");
+
+			return FinalCreate (opcode, method);
+		}
+
+		public Instruction Create (OpCode opcode, FieldReference field)
+		{
+			if (field == null)
+				throw new ArgumentNullException ("field");
+			if (opcode.OperandType != OperandType.InlineField &&
+				opcode.OperandType != OperandType.InlineTok)
+				throw new ArgumentException ("opcode");
+
+			return FinalCreate (opcode, field);
+		}
+
+		public Instruction Create (OpCode opcode, string str)
+		{
+			if (str == null)
+				throw new ArgumentNullException ("str");
+			if (opcode.OperandType != OperandType.InlineString)
+				throw new ArgumentException ("opcode");
+
+			return FinalCreate (opcode, str);
+		}
+
+		public Instruction Create (OpCode opcode, sbyte b)
+		{
+			if (opcode.OperandType != OperandType.ShortInlineI &&
+				opcode != OpCodes.Ldc_I4_S)
+				throw new ArgumentException ("opcode");
+
+			return FinalCreate (opcode, b);
+		}
+
+		public Instruction Create (OpCode opcode, byte b)
+		{
+			if (opcode.OperandType == OperandType.ShortInlineVar)
+				return Create (opcode, m_mbody.Variables [b]);
+
+			if (opcode.OperandType == OperandType.ShortInlineParam)
+				return Create (opcode, CodeReader.GetParameter (m_mbody, b));
+
+			if (opcode.OperandType != OperandType.ShortInlineI ||
+				opcode == OpCodes.Ldc_I4_S)
+				throw new ArgumentException ("opcode");
+
+			return FinalCreate (opcode, b);
+		}
+
+		public Instruction Create (OpCode opcode, int i)
+		{
+			if (opcode.OperandType == OperandType.InlineVar)
+				return Create (opcode, m_mbody.Variables [i]);
+
+			if (opcode.OperandType == OperandType.InlineParam)
+				return Create (opcode, CodeReader.GetParameter (m_mbody, i));
+
+			if (opcode.OperandType != OperandType.InlineI)
+				throw new ArgumentException ("opcode");
+
+			return FinalCreate (opcode, i);
+		}
+
+		public Instruction Create (OpCode opcode, long l)
+		{
+			if (opcode.OperandType != OperandType.InlineI8)
+				throw new ArgumentException ("opcode");
+
+			return FinalCreate (opcode, l);
+		}
+
+		public Instruction Create (OpCode opcode, float f)
+		{
+			if (opcode.OperandType != OperandType.ShortInlineR)
+				throw new ArgumentException ("opcode");
+
+			return FinalCreate (opcode, f);
+		}
+
+		public Instruction Create (OpCode opcode, double d)
+		{
+			if (opcode.OperandType != OperandType.InlineR)
+				throw new ArgumentException ("opcode");
+
+			return FinalCreate (opcode, d);
+		}
+
+		public Instruction Create (OpCode opcode, Instruction label)
+		{
+			if (label == null)
+				throw new ArgumentNullException ("label");
+			if (opcode.OperandType != OperandType.InlineBrTarget &&
+				opcode.OperandType != OperandType.ShortInlineBrTarget)
+				throw new ArgumentException ("opcode");
+
+			return FinalCreate (opcode, label);
+		}
+
+		public Instruction Create (OpCode opcode, Instruction [] labels)
+		{
+			if (labels == null)
+				throw new ArgumentNullException ("labels");
+			if (opcode.OperandType != OperandType.InlineSwitch)
+				throw new ArgumentException ("opcode");
+
+			return FinalCreate (opcode, labels);
+		}
+
+		public Instruction Create (OpCode opcode, VariableDefinition var)
+		{
+			if (var == null)
+				throw new ArgumentNullException ("var");
+			if (opcode.OperandType != OperandType.ShortInlineVar &&
+				opcode.OperandType != OperandType.InlineVar)
+				throw new ArgumentException ("opcode");
+
+			return FinalCreate (opcode, var);
+		}
+
+		public Instruction Create (OpCode opcode, ParameterDefinition param)
+		{
+			if (param == null)
+				throw new ArgumentNullException ("param");
+			if (opcode.OperandType != OperandType.ShortInlineParam &&
+				opcode.OperandType != OperandType.InlineParam)
+				throw new ArgumentException ("opcode");
+
+			return FinalCreate (opcode, param);
+		}
+
+		static Instruction FinalCreate (OpCode opcode)
+		{
+			return FinalCreate (opcode, null);
+		}
+
+		static Instruction FinalCreate (OpCode opcode, object operand)
+		{
+			return new Instruction (opcode, operand);
+		}
+
+		public Instruction Emit (OpCode opcode)
+		{
+			Instruction instr = Create (opcode);
+			Append (instr);
+			return instr;
+		}
+
+		public Instruction Emit (OpCode opcode, TypeReference type)
+		{
+			Instruction instr = Create (opcode, type);
+			Append (instr);
+			return instr;
+		}
+
+		public Instruction Emit (OpCode opcode, MethodReference meth)
+		{
+			Instruction instr = Create (opcode, meth);
+			Append (instr);
+			return instr;
+		}
+
+		public Instruction Emit (OpCode opcode, CallSite site)
+		{
+			Instruction instr = Create (opcode, site);
+			Append (instr);
+			return instr;
+		}
+
+		public Instruction Emit (OpCode opcode, FieldReference field)
+		{
+			Instruction instr = Create (opcode, field);
+			Append (instr);
+			return instr;
+		}
+
+		public Instruction Emit (OpCode opcode, string str)
+		{
+			Instruction instr = Create (opcode, str);
+			Append (instr);
+			return instr;
+		}
+
+		public Instruction Emit (OpCode opcode, byte b)
+		{
+			Instruction instr = Create (opcode, b);
+			Append (instr);
+			return instr;
+		}
+
+		public Instruction Emit (OpCode opcode, sbyte b)
+		{
+			Instruction instr = Create (opcode, b);
+			Append (instr);
+			return instr;
+		}
+
+		public Instruction Emit (OpCode opcode, int i)
+		{
+			Instruction instr = Create (opcode, i);
+			Append (instr);
+			return instr;
+		}
+
+		public Instruction Emit (OpCode opcode, long l)
+		{
+			Instruction instr = Create (opcode, l);
+			Append (instr);
+			return instr;
+		}
+
+		public Instruction Emit (OpCode opcode, float f)
+		{
+			Instruction instr = Create (opcode, f);
+			Append (instr);
+			return instr;
+		}
+
+		public Instruction Emit (OpCode opcode, double d)
+		{
+			Instruction instr = Create (opcode, d);
+			Append (instr);
+			return instr;
+		}
+
+		public Instruction Emit (OpCode opcode, Instruction target)
+		{
+			Instruction instr = Create (opcode, target);
+			Append (instr);
+			return instr;
+		}
+
+		public Instruction Emit (OpCode opcode, Instruction [] targets)
+		{
+			Instruction instr = Create (opcode, targets);
+			Append (instr);
+			return instr;
+		}
+
+		public Instruction Emit (OpCode opcode, VariableDefinition var)
+		{
+			Instruction instr = Create (opcode, var);
+			Append (instr);
+			return instr;
+		}
+
+		public Instruction Emit (OpCode opcode, ParameterDefinition param)
+		{
+			Instruction instr = Create (opcode, param);
+			Append (instr);
+			return instr;
+		}
+
+		public void InsertBefore (Instruction target, Instruction instr)
+		{
+			int index = m_instrs.IndexOf (target);
+			if (index == -1)
+				throw new ArgumentOutOfRangeException ("Target instruction not in method body");
+
+			m_instrs.Insert (index, instr);
+			instr.Previous = target.Previous;
+			if (target.Previous != null)
+				target.Previous.Next = instr;
+			target.Previous = instr;
+			instr.Next = target;
+		}
+
+		public void InsertAfter (Instruction target, Instruction instr)
+		{
+			int index = m_instrs.IndexOf (target);
+			if (index == -1)
+				throw new ArgumentOutOfRangeException ("Target instruction not in method body");
+
+			m_instrs.Insert (index + 1, instr);
+			instr.Next = target.Next;
+			if (target.Next != null)
+				target.Next.Previous = instr;
+			target.Next = instr;
+			instr.Previous = target;
+		}
+
+		public void Append (Instruction instr)
+		{
+			Instruction last = null, current = instr;
+			if (m_instrs.Count > 0)
+				last = m_instrs [m_instrs.Count - 1];
+
+			if (last != null) {
+				last.Next = instr;
+				current.Previous = last;
+			}
+
+			m_instrs.Add (current);
+		}
+
+		public void Replace (Instruction old, Instruction instr)
+		{
+			int index = m_instrs.IndexOf (old);
+			if (index == -1)
+				throw new ArgumentOutOfRangeException ("Target instruction not in method body");
+
+			InsertAfter (old, instr);
+			Remove (old);
+		}
+
+		public void Remove (Instruction instr)
+		{
+			if (!m_instrs.Contains (instr))
+				throw new ArgumentException ("Instruction not in method body");
+
+			if (instr.Previous != null)
+				instr.Previous.Next = instr.Next;
+			if (instr.Next != null)
+				instr.Next.Previous = instr.Previous;
+			m_instrs.Remove (instr);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/Code.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/Code.cs
new file mode 100644
index 0000000..9ea0b9f
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Cil/Code.cs
@@ -0,0 +1,255 @@
+//
+// Code.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Fri Mar 16 15:37:23 +0100 2007
+//
+// (C) 2007 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+	internal enum Code {
+		Nop,
+		Break,
+		Ldarg_0,
+		Ldarg_1,
+		Ldarg_2,
+		Ldarg_3,
+		Ldloc_0,
+		Ldloc_1,
+		Ldloc_2,
+		Ldloc_3,
+		Stloc_0,
+		Stloc_1,
+		Stloc_2,
+		Stloc_3,
+		Ldarg_S,
+		Ldarga_S,
+		Starg_S,
+		Ldloc_S,
+		Ldloca_S,
+		Stloc_S,
+		Ldnull,
+		Ldc_I4_M1,
+		Ldc_I4_0,
+		Ldc_I4_1,
+		Ldc_I4_2,
+		Ldc_I4_3,
+		Ldc_I4_4,
+		Ldc_I4_5,
+		Ldc_I4_6,
+		Ldc_I4_7,
+		Ldc_I4_8,
+		Ldc_I4_S,
+		Ldc_I4,
+		Ldc_I8,
+		Ldc_R4,
+		Ldc_R8,
+		Dup,
+		Pop,
+		Jmp,
+		Call,
+		Calli,
+		Ret,
+		Br_S,
+		Brfalse_S,
+		Brtrue_S,
+		Beq_S,
+		Bge_S,
+		Bgt_S,
+		Ble_S,
+		Blt_S,
+		Bne_Un_S,
+		Bge_Un_S,
+		Bgt_Un_S,
+		Ble_Un_S,
+		Blt_Un_S,
+		Br,
+		Brfalse,
+		Brtrue,
+		Beq,
+		Bge,
+		Bgt,
+		Ble,
+		Blt,
+		Bne_Un,
+		Bge_Un,
+		Bgt_Un,
+		Ble_Un,
+		Blt_Un,
+		Switch,
+		Ldind_I1,
+		Ldind_U1,
+		Ldind_I2,
+		Ldind_U2,
+		Ldind_I4,
+		Ldind_U4,
+		Ldind_I8,
+		Ldind_I,
+		Ldind_R4,
+		Ldind_R8,
+		Ldind_Ref,
+		Stind_Ref,
+		Stind_I1,
+		Stind_I2,
+		Stind_I4,
+		Stind_I8,
+		Stind_R4,
+		Stind_R8,
+		Add,
+		Sub,
+		Mul,
+		Div,
+		Div_Un,
+		Rem,
+		Rem_Un,
+		And,
+		Or,
+		Xor,
+		Shl,
+		Shr,
+		Shr_Un,
+		Neg,
+		Not,
+		Conv_I1,
+		Conv_I2,
+		Conv_I4,
+		Conv_I8,
+		Conv_R4,
+		Conv_R8,
+		Conv_U4,
+		Conv_U8,
+		Callvirt,
+		Cpobj,
+		Ldobj,
+		Ldstr,
+		Newobj,
+		Castclass,
+		Isinst,
+		Conv_R_Un,
+		Unbox,
+		Throw,
+		Ldfld,
+		Ldflda,
+		Stfld,
+		Ldsfld,
+		Ldsflda,
+		Stsfld,
+		Stobj,
+		Conv_Ovf_I1_Un,
+		Conv_Ovf_I2_Un,
+		Conv_Ovf_I4_Un,
+		Conv_Ovf_I8_Un,
+		Conv_Ovf_U1_Un,
+		Conv_Ovf_U2_Un,
+		Conv_Ovf_U4_Un,
+		Conv_Ovf_U8_Un,
+		Conv_Ovf_I_Un,
+		Conv_Ovf_U_Un,
+		Box,
+		Newarr,
+		Ldlen,
+		Ldelema,
+		Ldelem_I1,
+		Ldelem_U1,
+		Ldelem_I2,
+		Ldelem_U2,
+		Ldelem_I4,
+		Ldelem_U4,
+		Ldelem_I8,
+		Ldelem_I,
+		Ldelem_R4,
+		Ldelem_R8,
+		Ldelem_Ref,
+		Stelem_I,
+		Stelem_I1,
+		Stelem_I2,
+		Stelem_I4,
+		Stelem_I8,
+		Stelem_R4,
+		Stelem_R8,
+		Stelem_Ref,
+		Ldelem_Any,
+		Stelem_Any,
+		Unbox_Any,
+		Conv_Ovf_I1,
+		Conv_Ovf_U1,
+		Conv_Ovf_I2,
+		Conv_Ovf_U2,
+		Conv_Ovf_I4,
+		Conv_Ovf_U4,
+		Conv_Ovf_I8,
+		Conv_Ovf_U8,
+		Refanyval,
+		Ckfinite,
+		Mkrefany,
+		Ldtoken,
+		Conv_U2,
+		Conv_U1,
+		Conv_I,
+		Conv_Ovf_I,
+		Conv_Ovf_U,
+		Add_Ovf,
+		Add_Ovf_Un,
+		Mul_Ovf,
+		Mul_Ovf_Un,
+		Sub_Ovf,
+		Sub_Ovf_Un,
+		Endfinally,
+		Leave,
+		Leave_S,
+		Stind_I,
+		Conv_U,
+		Arglist,
+		Ceq,
+		Cgt,
+		Cgt_Un,
+		Clt,
+		Clt_Un,
+		Ldftn,
+		Ldvirtftn,
+		Ldarg,
+		Ldarga,
+		Starg,
+		Ldloc,
+		Ldloca,
+		Stloc,
+		Localloc,
+		Endfilter,
+		Unaligned,
+		Volatile,
+		Tail,
+		Initobj,
+		Constrained,
+		Cpblk,
+		Initblk,
+		No,
+		Rethrow,
+		Sizeof,
+		Refanytype,
+		Readonly,
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/CodeReader.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/CodeReader.cs
similarity index 100%
copy from mcs/class/Mono.Cecil/Mono.Cecil.Cil/CodeReader.cs
copy to mcs/tools/cil-strip/Mono.Cecil.Cil/CodeReader.cs
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/CodeWriter.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/CodeWriter.cs
similarity index 100%
copy from mcs/class/Mono.Cecil/Mono.Cecil.Cil/CodeWriter.cs
copy to mcs/tools/cil-strip/Mono.Cecil.Cil/CodeWriter.cs
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/Document.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/Document.cs
new file mode 100644
index 0000000..bdb107c
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Cil/Document.cs
@@ -0,0 +1,80 @@
+//
+// Document.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2006 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+	using System;
+
+	internal class Document {
+
+		string m_url;
+
+		Guid m_type;
+		DocumentHashAlgorithm m_hashAlgorithm;
+		Guid m_language;
+		Guid m_languageVendor;
+
+		byte [] m_hash;
+
+		public string Url {
+			get { return m_url; }
+			set { m_url = value; }
+		}
+
+		public Guid Type {
+			get { return m_type; }
+			set { m_type = value; }
+		}
+
+		public DocumentHashAlgorithm HashAlgorithm {
+			get { return m_hashAlgorithm; }
+			set { m_hashAlgorithm = value; }
+		}
+
+		public Guid Language {
+			get { return m_language; }
+			set { m_language = value; }
+		}
+
+		public Guid LanguageVendor {
+			get { return m_languageVendor; }
+			set { m_languageVendor = value; }
+		}
+
+		public byte [] Hash {
+			get { return m_hash; }
+			set { m_hash = value; }
+		}
+
+		public Document (string url)
+		{
+			m_url = url;
+			m_hash = new byte [0];
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/DocumentHashAlgorithm.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/DocumentHashAlgorithm.cs
new file mode 100644
index 0000000..be6548a
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Cil/DocumentHashAlgorithm.cs
@@ -0,0 +1,36 @@
+//
+// DocumentHashAlgorithm.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2006 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+	internal enum DocumentHashAlgorithm {
+		[Guid (0x00000000, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00)] None,
+		[Guid (0x406ea660, 0x64cf, 0x4c82, 0xb6, 0xf0, 0x42, 0xd4, 0x81, 0x72, 0xa7, 0x99)] MD5,
+		[Guid (0xff1816ec, 0xaa5e, 0x4d10, 0x87, 0xf7, 0x6f, 0x49, 0x63, 0x83, 0x34, 0x60)] SHA1
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/DocumentLanguage.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/DocumentLanguage.cs
new file mode 100644
index 0000000..37b6ece
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Cil/DocumentLanguage.cs
@@ -0,0 +1,62 @@
+//
+// DocumentLanguage.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2006 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+	using System;
+
+	internal abstract class DocumentLanguage {
+#if CF_2_0
+		public static readonly Guid None = new Guid ("00000000-0000-0000-0000-000000000000");
+		public static readonly Guid C = new Guid ("63a08714-fc37-11d2-904c-00c04fa302a1");
+		public static readonly Guid Cpp = new Guid ("3a12d0b7-c26c-11d0-b442-00a0244a1dd2");
+		public static readonly Guid CSharp = new Guid ("3f5162f8-07c6-11d3-9053-00c04fa302a1");
+		public static readonly Guid Basic = new Guid ("3a12d0b8-c26c-11d0-b442-00a0244a1dd2");
+		public static readonly Guid Java = new Guid ("3a12d0b4-c26c-11d0-b442-00a0244a1dd2");
+		public static readonly Guid Cobol = new Guid ("af046cd1-d0e1-11d2-977c-00a0c9b4d50c");
+		public static readonly Guid Pascal = new Guid ("af046cd2-d0e1-11d2-977c-00a0c9b4d50c");
+		public static readonly Guid CIL = new Guid ("af046cd3-d0e1-11d2-977c-00a0c9b4d50c");
+		public static readonly Guid JScript = new Guid ("3a12d0b6-c26c-11d0-b442-00a0244a1dd2");
+		public static readonly Guid SMC = new Guid ("0d9b9f7b-6611-11d3-bd2a-0000f80849bd");
+		public static readonly Guid MCpp = new Guid ("4b35fde8-07c6-11d3-9053-00c04fa302a1");
+#else
+		public static readonly Guid None = new Guid (0x00000000, 0x0000, 0x0000, 0x00, 0x00, 0x0, 0x00, 0x00, 0x00, 0x00, 0x00);
+		public static readonly Guid C = new Guid (0x63a08714, 0xfc37, 0x11d2, 0x90, 0x4c, 0x0, 0xc0, 0x4f, 0xa3, 0x02, 0xa1);
+		public static readonly Guid Cpp = new Guid (0x3a12d0b7, 0xc26c, 0x11d0, 0xb4, 0x42, 0x0, 0xa0, 0x24, 0x4a, 0x1d, 0xd2);
+		public static readonly Guid CSharp = new Guid (0x3f5162f8, 0x07c6, 0x11d3, 0x90, 0x53, 0x0, 0xc0, 0x4f, 0xa3, 0x02, 0xa1);
+		public static readonly Guid Basic = new Guid (0x3a12d0b8, 0xc26c, 0x11d0, 0xb4, 0x42, 0x0, 0xa0, 0x24, 0x4a, 0x1d, 0xd2);
+		public static readonly Guid Java = new Guid (0x3a12d0b4, 0xc26c, 0x11d0, 0xb4, 0x42, 0x0, 0xa0, 0x24, 0x4a, 0x1d, 0xd2);
+		public static readonly Guid Cobol = new Guid (0xaf046cd1, 0xd0e1, 0x11d2, 0x97, 0x7c, 0x0, 0xa0, 0xc9, 0xb4, 0xd5, 0xc);
+		public static readonly Guid Pascal = new Guid (0xaf046cd2, 0xd0e1, 0x11d2, 0x97, 0x7c, 0x0, 0xa0, 0xc9, 0xb4, 0xd5, 0xc);
+		public static readonly Guid CIL = new Guid (0xaf046cd3, 0xd0e1, 0x11d2, 0x97, 0x7c, 0x0, 0xa0, 0xc9, 0xb4, 0xd5, 0xc);
+		public static readonly Guid JScript = new Guid (0x3a12d0b6, 0xc26c, 0x11d0, 0xb4, 0x42, 0x0, 0xa0, 0x24, 0x4a, 0x1d, 0xd2);
+		public static readonly Guid SMC = new Guid (0xd9b9f7b, 0x6611, 0x11d3, 0xbd, 0x2a, 0x0, 0x0, 0xf8, 0x8, 0x49, 0xbd);
+		public static readonly Guid MCpp = new Guid (0x4b35fde8, 0x07c6, 0x11d3, 0x90, 0x53, 0x0, 0xc0, 0x4f, 0xa3, 0x02, 0xa1);
+#endif
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/DocumentLanguageVendor.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/DocumentLanguageVendor.cs
new file mode 100644
index 0000000..e4bb6d0
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Cil/DocumentLanguageVendor.cs
@@ -0,0 +1,42 @@
+//
+// DocumentLanguageVendor.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2006 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+	using System;
+
+	internal abstract class DocumentLanguageVendor {
+#if CF_2_0
+		public static readonly Guid Other = new Guid ("00000000-0000-0000-0000-000000000000");
+		public static readonly Guid Microsoft = new Guid ("994b45c4-e6e9-11d2-903f-00c04fa302a1");
+#else
+		public static readonly Guid Other = new Guid (0x00000000, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00);
+		public static readonly Guid Microsoft = new Guid (0x994b45c4, 0xe6e9, 0x11d2, 0x90, 0x3f, 0x00, 0xc0, 0x4f, 0xa3, 0x02, 0xa1);
+#endif
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/DocumentType.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/DocumentType.cs
new file mode 100644
index 0000000..b66605e
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Cil/DocumentType.cs
@@ -0,0 +1,38 @@
+//
+// DocumentType.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2006 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+	using System;
+
+	internal abstract class DocumentType {
+
+		public static readonly Guid Other = new Guid (0x00000000, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00);
+		public static readonly Guid Text = new Guid (0x5a869d0b, 0x6611, 0x11d3, 0xbd, 0x2a, 0x00, 0x00, 0xf8, 0x08, 0x49, 0xbd);
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/ExceptionHandler.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/ExceptionHandler.cs
new file mode 100644
index 0000000..8a86120
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Cil/ExceptionHandler.cs
@@ -0,0 +1,95 @@
+//
+// ExceptionHandler.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+	using Mono.Cecil;
+
+	internal sealed class ExceptionHandler : ICodeVisitable {
+
+		Instruction m_tryStart;
+		Instruction m_tryEnd;
+		Instruction m_filterStart;
+		Instruction m_filterEnd;
+		Instruction m_handlerStart;
+		Instruction m_handlerEnd;
+
+		TypeReference m_catchType;
+		ExceptionHandlerType m_type;
+
+		public Instruction TryStart {
+			get { return m_tryStart; }
+			set { m_tryStart = value; }
+		}
+
+		public Instruction TryEnd {
+			get { return m_tryEnd; }
+			set { m_tryEnd = value; }
+		}
+
+		public Instruction FilterStart {
+			get { return m_filterStart; }
+			set { m_filterStart = value; }
+		}
+
+		public Instruction FilterEnd {
+			get { return m_filterEnd; }
+			set { m_filterEnd = value; }
+		}
+
+		public Instruction HandlerStart {
+			get { return m_handlerStart; }
+			set { m_handlerStart = value; }
+		}
+
+		public Instruction HandlerEnd {
+			get { return m_handlerEnd; }
+			set { m_handlerEnd = value; }
+		}
+
+		public TypeReference CatchType {
+			get { return m_catchType; }
+			set { m_catchType = value; }
+		}
+
+		public ExceptionHandlerType Type {
+			get { return m_type; }
+			set { m_type = value; }
+		}
+
+		public ExceptionHandler (ExceptionHandlerType type)
+		{
+			m_type = type;
+		}
+
+		public void Accept (ICodeVisitor visitor)
+		{
+			visitor.VisitExceptionHandler (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/ExceptionHandlerCollection.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/ExceptionHandlerCollection.cs
new file mode 100644
index 0000000..8897cbd
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Cil/ExceptionHandlerCollection.cs
@@ -0,0 +1,93 @@
+//
+// ExceptionHandlerCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Wed Sep 27 12:46:53 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+	using System;
+	using System.Collections;
+
+	using Mono.Cecil.Cil;
+
+	internal sealed class ExceptionHandlerCollection : CollectionBase, ICodeVisitable {
+
+		MethodBody m_container;
+
+		public ExceptionHandler this [int index] {
+			get { return List [index] as ExceptionHandler; }
+			set { List [index] = value; }
+		}
+
+		public MethodBody Container {
+			get { return m_container; }
+		}
+
+		public ExceptionHandlerCollection (MethodBody container)
+		{
+			m_container = container;
+		}
+
+		public void Add (ExceptionHandler value)
+		{
+			List.Add (value);
+		}
+
+		public bool Contains (ExceptionHandler value)
+		{
+			return List.Contains (value);
+		}
+
+		public int IndexOf (ExceptionHandler value)
+		{
+			return List.IndexOf (value);
+		}
+
+		public void Insert (int index, ExceptionHandler value)
+		{
+			List.Insert (index, value);
+		}
+
+		public void Remove (ExceptionHandler value)
+		{
+			List.Remove (value);
+		}
+
+		protected override void OnValidate (object o)
+		{
+			if (! (o is ExceptionHandler))
+				throw new ArgumentException ("Must be of type " + typeof (ExceptionHandler).FullName);
+		}
+
+		public void Accept (ICodeVisitor visitor)
+		{
+			visitor.VisitExceptionHandlerCollection (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/ExceptionHandlerType.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/ExceptionHandlerType.cs
new file mode 100644
index 0000000..a2008eb
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Cil/ExceptionHandlerType.cs
@@ -0,0 +1,37 @@
+//
+// ExceptionHandlerType.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+	internal enum ExceptionHandlerType {
+		Catch = 0x0000,
+		Filter = 0x0001,
+		Finally = 0x0002,
+		Fault = 0x0004
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/FlowControl.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/FlowControl.cs
new file mode 100644
index 0000000..71789bc
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Cil/FlowControl.cs
@@ -0,0 +1,42 @@
+//
+// FlowControl.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+	internal enum FlowControl {
+		Branch,
+		Break,
+		Call,
+		Cond_Branch,
+		Meta,
+		Next,
+		Phi,
+		Return,
+		Throw
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/GuidAttribute.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/GuidAttribute.cs
new file mode 100644
index 0000000..fc6a8ef
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Cil/GuidAttribute.cs
@@ -0,0 +1,91 @@
+//
+// GuidAttribute.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2006 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+	using System;
+	using System.Reflection;
+
+	[AttributeUsage (AttributeTargets.Field)]
+	internal sealed class GuidAttribute : Attribute {
+
+		private Guid m_guid;
+
+		public Guid Guid {
+			get { return m_guid; }
+		}
+
+		GuidAttribute ()
+		{
+			m_guid = new Guid ();
+		}
+
+		public GuidAttribute (
+			uint a,
+			ushort b,
+			ushort c,
+			byte d,
+			byte e,
+			byte f,
+			byte g,
+			byte h,
+			byte i,
+			byte j,
+			byte k)
+		{
+			m_guid = new Guid ((int) a, (short) b, (short) c, d, e, f, g, h, i, j, k);
+		}
+
+		public static int GetValueFromGuid (Guid id, Type enumeration)
+		{
+			foreach (FieldInfo fi in enumeration.GetFields (BindingFlags.Static | BindingFlags.Public))
+				if (id == GetGuidAttribute (fi).Guid)
+					return (int) fi.GetValue (null);
+
+			return -1;
+		}
+
+		public static Guid GetGuidFromValue (int value, Type enumeration)
+		{
+			foreach (FieldInfo fi in enumeration.GetFields (BindingFlags.Static | BindingFlags.Public))
+				if (value == (int) fi.GetValue (null))
+					return GetGuidAttribute (fi).Guid;
+
+			return new Guid ();
+		}
+
+		static GuidAttribute GetGuidAttribute (FieldInfo fi)
+		{
+			GuidAttribute [] attributes = fi.GetCustomAttributes (typeof (GuidAttribute), false) as GuidAttribute [];
+			if (attributes == null || attributes.Length != 1)
+				return new GuidAttribute ();
+
+			return attributes [0];
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/ICodeVisitable.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/ICodeVisitable.cs
new file mode 100644
index 0000000..964bb42
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Cil/ICodeVisitable.cs
@@ -0,0 +1,34 @@
+//
+// ICodeVisitable.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+	internal interface ICodeVisitable {
+		void Accept (ICodeVisitor visitor);
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/ICodeVisitor.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/ICodeVisitor.cs
new file mode 100644
index 0000000..1ce20a4
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Cil/ICodeVisitor.cs
@@ -0,0 +1,45 @@
+//
+// ICodeVisitor.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+	internal interface ICodeVisitor {
+
+		void VisitMethodBody (MethodBody body);
+		void VisitInstructionCollection (InstructionCollection instructions);
+		void VisitInstruction (Instruction instr);
+		void VisitExceptionHandlerCollection (ExceptionHandlerCollection seh);
+		void VisitExceptionHandler (ExceptionHandler eh);
+		void VisitVariableDefinitionCollection (VariableDefinitionCollection variables);
+		void VisitVariableDefinition (VariableDefinition var);
+		void VisitScopeCollection (ScopeCollection scopes);
+		void VisitScope (Scope scope);
+
+		void TerminateMethodBody (MethodBody body);
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/IScopeProvider.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/IScopeProvider.cs
new file mode 100644
index 0000000..e246f84
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Cil/IScopeProvider.cs
@@ -0,0 +1,35 @@
+//
+// Document.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2006 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+	internal interface IScopeProvider {
+
+		ScopeCollection Scopes { get; }
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/ISymbolReader.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/ISymbolReader.cs
new file mode 100644
index 0000000..2050a3c
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Cil/ISymbolReader.cs
@@ -0,0 +1,38 @@
+//
+// ISymbolReader.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2006 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections;
+
+namespace Mono.Cecil.Cil {
+
+	internal interface ISymbolReader : IDisposable {
+
+		void Read (MethodBody body, IDictionary instructions);
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/ISymbolStoreFactory.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/ISymbolStoreFactory.cs
new file mode 100644
index 0000000..5d64c16
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Cil/ISymbolStoreFactory.cs
@@ -0,0 +1,36 @@
+//
+// ISymbolStoreFactory.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2006 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+	internal interface ISymbolStoreFactory {
+
+		ISymbolReader CreateReader (ModuleDefinition module, string assemblyFileName);
+		ISymbolWriter CreateWriter (ModuleDefinition module, string assemblyFileName);
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/ISymbolWriter.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/ISymbolWriter.cs
new file mode 100644
index 0000000..615c54a
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Cil/ISymbolWriter.cs
@@ -0,0 +1,37 @@
+//
+// ISymbolWriter.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2006 - 2007 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+	using System;
+
+	internal interface ISymbolWriter : IDisposable {
+
+		void Write (MethodBody body);
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/IVariableDefinitionProvider.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/IVariableDefinitionProvider.cs
new file mode 100644
index 0000000..147c099
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Cil/IVariableDefinitionProvider.cs
@@ -0,0 +1,35 @@
+//
+// IVariableDefinitionProvider.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2006 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+	internal interface IVariableDefinitionProvider {
+
+		VariableDefinitionCollection Variables { get; }
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/Instruction.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/Instruction.cs
new file mode 100644
index 0000000..f4f92ea
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Cil/Instruction.cs
@@ -0,0 +1,133 @@
+//
+// Instruction.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+	internal sealed class Instruction : ICodeVisitable {
+
+		int m_offset;
+		OpCode m_opCode;
+		object m_operand;
+
+		Instruction m_previous;
+		Instruction m_next;
+
+		SequencePoint m_sequencePoint;
+
+		public int Offset {
+			get { return m_offset; }
+			set { m_offset = value; }
+		}
+
+		public OpCode OpCode {
+			get { return m_opCode; }
+			set { m_opCode = value; }
+		}
+
+		public object Operand {
+			get { return m_operand; }
+			set { m_operand = value; }
+		}
+
+		public Instruction Previous {
+			get { return m_previous; }
+			set { m_previous = value; }
+		}
+
+		public Instruction Next {
+			get { return m_next; }
+			set { m_next = value; }
+		}
+
+		public SequencePoint SequencePoint {
+			get { return m_sequencePoint; }
+			set { m_sequencePoint = value; }
+		}
+
+		internal Instruction (int offset, OpCode opCode, object operand) : this (offset, opCode)
+		{
+			m_operand = operand;
+		}
+
+		internal Instruction (int offset, OpCode opCode)
+		{
+			m_offset = offset;
+			m_opCode = opCode;
+		}
+
+		internal Instruction (OpCode opCode, object operand) : this (0, opCode, operand)
+		{
+		}
+
+		internal Instruction (OpCode opCode) : this (0, opCode)
+		{
+		}
+
+		public int GetSize ()
+		{
+			int size = m_opCode.Size;
+
+			switch (m_opCode.OperandType) {
+			case OperandType.InlineSwitch:
+				size += (1 + ((Instruction []) m_operand).Length) * 4;
+				break;
+			case OperandType.InlineI8:
+			case OperandType.InlineR:
+				size += 8;
+				break;
+			case OperandType.InlineBrTarget:
+			case OperandType.InlineField:
+			case OperandType.InlineI:
+			case OperandType.InlineMethod:
+			case OperandType.InlineString:
+			case OperandType.InlineTok:
+			case OperandType.InlineType:
+			case OperandType.ShortInlineR:
+				size += 4;
+				break;
+			case OperandType.InlineParam:
+			case OperandType.InlineVar:
+				size += 2;
+				break;
+			case OperandType.ShortInlineBrTarget:
+			case OperandType.ShortInlineI:
+			case OperandType.ShortInlineParam:
+			case OperandType.ShortInlineVar:
+				size += 1;
+				break;
+			}
+
+			return size;
+		}
+
+		public void Accept (ICodeVisitor visitor)
+		{
+			visitor.VisitInstruction (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/InstructionCollection.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/InstructionCollection.cs
new file mode 100644
index 0000000..1c6e60f
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Cil/InstructionCollection.cs
@@ -0,0 +1,94 @@
+//
+// InstructionCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Thu Sep 28 17:54:43 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+	using System;
+	using System.Collections;
+
+	using Mono.Cecil.Cil;
+
+	internal sealed class InstructionCollection : CollectionBase, ICodeVisitable {
+
+		MethodBody m_container;
+		public readonly Instruction Outside = new Instruction (int.MaxValue, OpCodes.Nop);
+
+		public Instruction this [int index] {
+			get { return List [index] as Instruction; }
+			set { List [index] = value; }
+		}
+
+		public MethodBody Container {
+			get { return m_container; }
+		}
+
+		public InstructionCollection (MethodBody container)
+		{
+			m_container = container;
+		}
+
+		internal void Add (Instruction value)
+		{
+			List.Add (value);
+		}
+
+		public bool Contains (Instruction value)
+		{
+			return List.Contains (value);
+		}
+
+		public int IndexOf (Instruction value)
+		{
+			return List.IndexOf (value);
+		}
+
+		internal void Insert (int index, Instruction value)
+		{
+			List.Insert (index, value);
+		}
+
+		internal void Remove (Instruction value)
+		{
+			List.Remove (value);
+		}
+
+		protected override void OnValidate (object o)
+		{
+			if (! (o is Instruction))
+				throw new ArgumentException ("Must be of type " + typeof (Instruction).FullName);
+		}
+
+		public void Accept (ICodeVisitor visitor)
+		{
+			visitor.VisitInstructionCollection (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/MethodBody.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/MethodBody.cs
new file mode 100644
index 0000000..56e08b3
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Cil/MethodBody.cs
@@ -0,0 +1,623 @@
+//
+// MethodBody.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+	using Mono.Cecil;
+
+	internal sealed class MethodBody : IVariableDefinitionProvider, IScopeProvider, ICodeVisitable {
+
+		MethodDefinition m_method;
+		int m_maxStack;
+		int m_codeSize;
+		bool m_initLocals;
+		int m_localVarToken;
+
+		InstructionCollection m_instructions;
+		ExceptionHandlerCollection m_exceptions;
+		VariableDefinitionCollection m_variables;
+		ScopeCollection m_scopes;
+
+		private CilWorker m_cilWorker;
+
+		public MethodDefinition Method {
+			get { return m_method; }
+		}
+
+		public int MaxStack {
+			get { return m_maxStack; }
+			set { m_maxStack = value; }
+		}
+
+		public int CodeSize {
+			get { return m_codeSize; }
+			set { m_codeSize = value; }
+		}
+
+		public bool InitLocals {
+			get { return m_initLocals; }
+			set { m_initLocals = value; }
+		}
+
+		public int LocalVarToken {
+			get { return m_localVarToken; }
+			set { m_localVarToken = value; }
+		}
+
+		public CilWorker CilWorker {
+			get {
+				if (m_cilWorker == null)
+					m_cilWorker = new CilWorker (this);
+				return m_cilWorker;
+			}
+			set { m_cilWorker = value; }
+		}
+
+		public InstructionCollection Instructions {
+			get { return m_instructions; }
+		}
+
+		public bool HasExceptionHandlers {
+			get { return m_exceptions != null && m_exceptions.Count > 0; }
+		}
+
+		public ExceptionHandlerCollection ExceptionHandlers {
+			get {
+				if (m_exceptions == null)
+					m_exceptions = new ExceptionHandlerCollection (this);
+				return m_exceptions;
+			}
+		}
+
+		public bool HasVariables {
+			get { return m_variables != null && m_variables.Count > 0; }
+		}
+
+		public VariableDefinitionCollection Variables {
+			get {
+				if (m_variables == null)
+					m_variables = new VariableDefinitionCollection (this);
+				return m_variables;
+			}
+		}
+
+		public bool HasScopes {
+			get { return m_scopes != null && m_scopes.Count > 0; }
+		}
+
+		public ScopeCollection Scopes {
+			get {
+				if (m_scopes == null)
+					m_scopes = new ScopeCollection (this);
+				return m_scopes;
+			}
+		}
+
+		public MethodBody (MethodDefinition meth)
+		{
+			m_method = meth;
+			// there is always a RET instruction (if a body is present)
+			m_instructions = new InstructionCollection (this);
+		}
+
+		internal static Instruction GetInstruction (MethodBody oldBody, MethodBody newBody, Instruction i)
+		{
+			int pos = oldBody.Instructions.IndexOf (i);
+			if (pos > -1 && pos < newBody.Instructions.Count)
+				return newBody.Instructions [pos];
+
+			return newBody.Instructions.Outside;
+		}
+
+		internal static MethodBody Clone (MethodBody body, MethodDefinition parent, ImportContext context)
+		{
+			MethodBody nb = new MethodBody (parent);
+			nb.MaxStack = body.MaxStack;
+			nb.InitLocals = body.InitLocals;
+			nb.CodeSize = body.CodeSize;
+
+			CilWorker worker = nb.CilWorker;
+
+			if (body.HasVariables) {
+				foreach (VariableDefinition var in body.Variables)
+					nb.Variables.Add (new VariableDefinition (
+						var.Name, var.Index, parent,
+						context.Import (var.VariableType)));
+			}
+
+			foreach (Instruction instr in body.Instructions) {
+				Instruction ni = new Instruction (instr.OpCode);
+
+				switch (instr.OpCode.OperandType) {
+				case OperandType.InlineParam :
+				case OperandType.ShortInlineParam :
+					if (instr.Operand == body.Method.This)
+						ni.Operand = nb.Method.This;
+					else {
+						int param = body.Method.Parameters.IndexOf ((ParameterDefinition) instr.Operand);
+						ni.Operand = parent.Parameters [param];
+					}
+					break;
+				case OperandType.InlineVar :
+				case OperandType.ShortInlineVar :
+					int var = body.Variables.IndexOf ((VariableDefinition) instr.Operand);
+					ni.Operand = nb.Variables [var];
+					break;
+				case OperandType.InlineField :
+					ni.Operand = context.Import ((FieldReference) instr.Operand);
+					break;
+				case OperandType.InlineMethod :
+					ni.Operand = context.Import ((MethodReference) instr.Operand);
+					break;
+				case OperandType.InlineType :
+					ni.Operand = context.Import ((TypeReference) instr.Operand);
+					break;
+				case OperandType.InlineTok :
+					if (instr.Operand is TypeReference)
+						ni.Operand = context.Import ((TypeReference) instr.Operand);
+					else if (instr.Operand is FieldReference)
+						ni.Operand = context.Import ((FieldReference) instr.Operand);
+					else if (instr.Operand is MethodReference)
+						ni.Operand = context.Import ((MethodReference) instr.Operand);
+					break;
+				case OperandType.ShortInlineBrTarget :
+				case OperandType.InlineBrTarget :
+				case OperandType.InlineSwitch :
+					break;
+				default :
+					ni.Operand = instr.Operand;
+					break;
+				}
+
+				worker.Append (ni);
+			}
+
+			for (int i = 0; i < body.Instructions.Count; i++) {
+				Instruction instr = nb.Instructions [i];
+				Instruction oldi = body.Instructions [i];
+
+				if (instr.OpCode.OperandType == OperandType.InlineSwitch) {
+					Instruction [] olds = (Instruction []) oldi.Operand;
+					Instruction [] targets = new Instruction [olds.Length];
+
+					for (int j = 0; j < targets.Length; j++)
+						targets [j] = GetInstruction (body, nb, olds [j]);
+
+					instr.Operand = targets;
+				} else if (instr.OpCode.OperandType == OperandType.ShortInlineBrTarget || instr.OpCode.OperandType == OperandType.InlineBrTarget)
+					instr.Operand = GetInstruction (body, nb, (Instruction) oldi.Operand);
+			}
+
+			if (!body.HasExceptionHandlers)
+				return nb;
+
+			foreach (ExceptionHandler eh in body.ExceptionHandlers) {
+				ExceptionHandler neh = new ExceptionHandler (eh.Type);
+				neh.TryStart = GetInstruction (body, nb, eh.TryStart);
+				neh.TryEnd = GetInstruction (body, nb, eh.TryEnd);
+				neh.HandlerStart = GetInstruction (body, nb, eh.HandlerStart);
+				neh.HandlerEnd = GetInstruction (body, nb, eh.HandlerEnd);
+
+				switch (eh.Type) {
+				case ExceptionHandlerType.Catch :
+					neh.CatchType = context.Import (eh.CatchType);
+					break;
+				case ExceptionHandlerType.Filter :
+					neh.FilterStart = GetInstruction (body, nb, eh.FilterStart);
+					neh.FilterEnd = GetInstruction (body, nb, eh.FilterEnd);
+					break;
+				}
+
+				nb.ExceptionHandlers.Add (neh);
+			}
+
+			return nb;
+		}
+
+		public void Simplify ()
+		{
+			foreach (Instruction i in this.Instructions) {
+				if (i.OpCode.OpCodeType != OpCodeType.Macro)
+					continue;
+
+				switch (i.OpCode.Code) {
+				case Code.Ldarg_0 :
+					Modify (i, OpCodes.Ldarg,
+						CodeReader.GetParameter (this, 0));
+					break;
+				case Code.Ldarg_1 :
+					Modify (i, OpCodes.Ldarg,
+						CodeReader.GetParameter (this, 1));
+					break;
+				case Code.Ldarg_2 :
+					Modify (i, OpCodes.Ldarg,
+						CodeReader.GetParameter (this, 2));
+					break;
+				case Code.Ldarg_3 :
+					Modify (i, OpCodes.Ldarg,
+						CodeReader.GetParameter (this, 3));
+					break;
+				case Code.Ldloc_0 :
+					Modify (i, OpCodes.Ldloc,
+						CodeReader.GetVariable (this, 0));
+					break;
+				case Code.Ldloc_1 :
+					Modify (i, OpCodes.Ldloc,
+						CodeReader.GetVariable (this, 1));
+					break;
+				case Code.Ldloc_2 :
+					Modify (i, OpCodes.Ldloc,
+						CodeReader.GetVariable (this, 2));
+					break;
+				case Code.Ldloc_3 :
+					Modify (i, OpCodes.Ldloc,
+						CodeReader.GetVariable (this, 3));
+					break;
+				case Code.Stloc_0 :
+					Modify (i, OpCodes.Stloc,
+						CodeReader.GetVariable (this, 0));
+					break;
+				case Code.Stloc_1 :
+					Modify (i, OpCodes.Stloc,
+						CodeReader.GetVariable (this, 1));
+					break;
+				case Code.Stloc_2 :
+					Modify (i, OpCodes.Stloc,
+						CodeReader.GetVariable (this, 2));
+					break;
+				case Code.Stloc_3 :
+					Modify (i, OpCodes.Stloc,
+						CodeReader.GetVariable (this, 3));
+					break;
+				case Code.Ldarg_S :
+					i.OpCode = OpCodes.Ldarg;
+					break;
+				case Code.Ldarga_S :
+					i.OpCode = OpCodes.Ldarga;
+					break;
+				case Code.Starg_S :
+					i.OpCode = OpCodes.Starg;
+					break;
+				case Code.Ldloc_S :
+					i.OpCode = OpCodes.Ldloc;
+					break;
+				case Code.Ldloca_S :
+					i.OpCode = OpCodes.Ldloca;
+					break;
+				case Code.Stloc_S :
+					i.OpCode = OpCodes.Stloc;
+					break;
+				case Code.Ldc_I4_M1 :
+					Modify (i, OpCodes.Ldc_I4, -1);
+					break;
+				case Code.Ldc_I4_0 :
+					Modify (i, OpCodes.Ldc_I4, 0);
+					break;
+				case Code.Ldc_I4_1 :
+					Modify (i, OpCodes.Ldc_I4, 1);
+					break;
+				case Code.Ldc_I4_2 :
+					Modify (i, OpCodes.Ldc_I4, 2);
+					break;
+				case Code.Ldc_I4_3 :
+					Modify (i, OpCodes.Ldc_I4, 3);
+					break;
+				case Code.Ldc_I4_4 :
+					Modify (i, OpCodes.Ldc_I4, 4);
+					break;
+				case Code.Ldc_I4_5 :
+					Modify (i, OpCodes.Ldc_I4, 5);
+					break;
+				case Code.Ldc_I4_6 :
+					Modify (i, OpCodes.Ldc_I4, 6);
+					break;
+				case Code.Ldc_I4_7 :
+					Modify (i, OpCodes.Ldc_I4, 7);
+					break;
+				case Code.Ldc_I4_8 :
+					Modify (i, OpCodes.Ldc_I4, 8);
+					break;
+				case Code.Ldc_I4_S :
+					i.OpCode = OpCodes.Ldc_I4;
+					i.Operand = (int) (sbyte) i.Operand;
+					break;
+				case Code.Br_S :
+					i.OpCode = OpCodes.Br;
+					break;
+				case Code.Brfalse_S :
+					i.OpCode = OpCodes.Brfalse;
+					break;
+				case Code.Brtrue_S :
+					i.OpCode = OpCodes.Brtrue;
+					break;
+				case Code.Beq_S :
+					i.OpCode = OpCodes.Beq;
+					break;
+				case Code.Bge_S :
+					i.OpCode = OpCodes.Bge;
+					break;
+				case Code.Bgt_S :
+					i.OpCode = OpCodes.Bgt;
+					break;
+				case Code.Ble_S :
+					i.OpCode = OpCodes.Ble;
+					break;
+				case Code.Blt_S :
+					i.OpCode = OpCodes.Blt;
+					break;
+				case Code.Bne_Un_S :
+					i.OpCode = OpCodes.Bne_Un;
+					break;
+				case Code.Bge_Un_S :
+					i.OpCode = OpCodes.Bge_Un;
+					break;
+				case Code.Bgt_Un_S :
+					i.OpCode = OpCodes.Bgt_Un;
+					break;
+				case Code.Ble_Un_S :
+					i.OpCode = OpCodes.Ble_Un;
+					break;
+				case Code.Blt_Un_S :
+					i.OpCode = OpCodes.Blt_Un;
+					break;
+				case Code.Leave_S :
+					i.OpCode = OpCodes.Leave;
+					break;
+				}
+			}
+		}
+
+		public void Optimize ()
+		{
+			foreach (Instruction instr in m_instructions) {
+				int index;
+				switch (instr.OpCode.Code) {
+				case Code.Ldarg:
+					index = m_method.Parameters.IndexOf ((ParameterDefinition) instr.Operand);
+					if (index == -1 && instr.Operand == m_method.This)
+						index = 0;
+					else if (m_method.HasThis)
+						index++;
+
+					switch (index) {
+					case 0:
+						Modify (instr, OpCodes.Ldarg_0, null);
+						break;
+					case 1:
+						Modify (instr, OpCodes.Ldarg_1, null);
+						break;
+					case 2:
+						Modify (instr, OpCodes.Ldarg_2, null);
+						break;
+					case 3:
+						Modify (instr, OpCodes.Ldarg_3, null);
+						break;
+					default:
+						if (index < 256)
+							Modify (instr, OpCodes.Ldarg_S, instr.Operand);
+						break;
+					}
+					break;
+				case Code.Ldloc:
+					index = m_variables.IndexOf ((VariableDefinition) instr.Operand);
+					switch (index) {
+					case 0:
+						Modify (instr, OpCodes.Ldloc_0, null);
+						break;
+					case 1:
+						Modify (instr, OpCodes.Ldloc_1, null);
+						break;
+					case 2:
+						Modify (instr, OpCodes.Ldloc_2, null);
+						break;
+					case 3:
+						Modify (instr, OpCodes.Ldloc_3, null);
+						break;
+					default:
+						if (index < 256)
+							Modify (instr, OpCodes.Ldloc_S, instr.Operand);
+						break;
+					}
+					break;
+				case Code.Stloc:
+					index = m_variables.IndexOf ((VariableDefinition) instr.Operand);
+					switch (index) {
+					case 0:
+						Modify (instr, OpCodes.Stloc_0, null);
+						break;
+					case 1:
+						Modify (instr, OpCodes.Stloc_1, null);
+						break;
+					case 2:
+						Modify (instr, OpCodes.Stloc_2, null);
+						break;
+					case 3:
+						Modify (instr, OpCodes.Stloc_3, null);
+						break;
+					default:
+						if (index < 256)
+							Modify (instr, OpCodes.Stloc_S, instr.Operand);
+						break;
+					}
+					break;
+				case Code.Ldarga:
+					index = m_method.Parameters.IndexOf ((ParameterDefinition) instr.Operand);
+					if (index == -1 && instr.Operand == m_method.This)
+						index = 0;
+					else if (m_method.HasThis)
+						index++;
+					if (index < 256)
+						Modify (instr, OpCodes.Ldarga_S, instr.Operand);
+					break;
+				case Code.Ldloca:
+					if (m_variables.IndexOf ((VariableDefinition) instr.Operand) < 256)
+						Modify (instr, OpCodes.Ldloca_S, instr.Operand);
+					break;
+				case Code.Ldc_I4:
+					int i = (int) instr.Operand;
+					switch (i) {
+					case -1:
+						Modify (instr, OpCodes.Ldc_I4_M1, null);
+						break;
+					case 0:
+						Modify (instr, OpCodes.Ldc_I4_0, null);
+						break;
+					case 1:
+						Modify (instr, OpCodes.Ldc_I4_1, null);
+						break;
+					case 2:
+						Modify (instr, OpCodes.Ldc_I4_2, null);
+						break;
+					case 3:
+						Modify (instr, OpCodes.Ldc_I4_3, null);
+						break;
+					case 4:
+						Modify (instr, OpCodes.Ldc_I4_4, null);
+						break;
+					case 5:
+						Modify (instr, OpCodes.Ldc_I4_5, null);
+						break;
+					case 6:
+						Modify (instr, OpCodes.Ldc_I4_6, null);
+						break;
+					case 7:
+						Modify (instr, OpCodes.Ldc_I4_7, null);
+						break;
+					case 8:
+						Modify (instr, OpCodes.Ldc_I4_8, null);
+						break;
+					default:
+						if (i >= -128 && i < 128)
+							Modify (instr, OpCodes.Ldc_I4_S, (sbyte) i);
+						break;
+					}
+					break;
+				}
+			}
+
+			OptimizeBranches ();
+		}
+
+		void OptimizeBranches ()
+		{
+			ComputeOffsets ();
+
+			foreach (Instruction instr in m_instructions) {
+				if (instr.OpCode.OperandType != OperandType.InlineBrTarget)
+					continue;
+
+				if (OptimizeBranch (instr))
+					ComputeOffsets ();
+			}
+		}
+
+		static bool OptimizeBranch (Instruction instr)
+		{
+			int offset = ((Instruction) instr.Operand).Offset - (instr.Offset + instr.OpCode.Size + 4);
+			if (! (offset >= -128 && offset <= 127))
+				return false;
+
+			switch (instr.OpCode.Code) {
+			case Code.Br:
+				instr.OpCode = OpCodes.Br_S;
+				break;
+			case Code.Brfalse:
+				instr.OpCode = OpCodes.Brfalse_S;
+				break;
+			case Code.Brtrue:
+				instr.OpCode = OpCodes.Brtrue_S;
+				break;
+			case Code.Beq:
+				instr.OpCode = OpCodes.Beq_S;
+				break;
+			case Code.Bge:
+				instr.OpCode = OpCodes.Bge_S;
+				break;
+			case Code.Bgt:
+				instr.OpCode = OpCodes.Bgt_S;
+				break;
+			case Code.Ble:
+				instr.OpCode = OpCodes.Ble_S;
+				break;
+			case Code.Blt:
+				instr.OpCode = OpCodes.Blt_S;
+				break;
+			case Code.Bne_Un:
+				instr.OpCode = OpCodes.Bne_Un_S;
+				break;
+			case Code.Bge_Un:
+				instr.OpCode = OpCodes.Bge_Un_S;
+				break;
+			case Code.Bgt_Un:
+				instr.OpCode = OpCodes.Bgt_Un_S;
+				break;
+			case Code.Ble_Un:
+				instr.OpCode = OpCodes.Ble_Un_S;
+				break;
+			case Code.Blt_Un:
+				instr.OpCode = OpCodes.Blt_Un_S;
+				break;
+			case Code.Leave:
+				instr.OpCode = OpCodes.Leave_S;
+				break;
+			}
+
+			return true;
+		}
+
+		void ComputeOffsets ()
+		{
+			int offset = 0;
+
+			foreach (Instruction instr in m_instructions) {
+				instr.Offset = offset;
+				offset += instr.GetSize ();
+			}
+		}
+
+		static void Modify (Instruction i, OpCode op, object operand)
+		{
+			i.OpCode = op;
+			i.Operand = operand;
+		}
+
+		public void Accept (ICodeVisitor visitor)
+		{
+			visitor.VisitMethodBody (this);
+			if (HasVariables)
+				m_variables.Accept (visitor);
+			m_instructions.Accept (visitor);
+			if (HasExceptionHandlers)
+				m_exceptions.Accept (visitor);
+			if (HasScopes)
+				m_scopes.Accept (visitor);
+
+			visitor.TerminateMethodBody (this);
+		}
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/MethodDataSection.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/MethodDataSection.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil.Cil/MethodDataSection.cs
rename to mcs/tools/cil-strip/Mono.Cecil.Cil/MethodDataSection.cs
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/MethodHeader.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/MethodHeader.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil.Cil/MethodHeader.cs
rename to mcs/tools/cil-strip/Mono.Cecil.Cil/MethodHeader.cs
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/OpCode.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/OpCode.cs
new file mode 100644
index 0000000..2406ec1
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Cil/OpCode.cs
@@ -0,0 +1,139 @@
+//
+// OpCode.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+	internal struct OpCode {
+		short m_value;
+		byte m_code;
+		byte m_flowControl;
+		byte m_opCodeType;
+		byte m_operandType;
+		byte m_stackBehaviourPop;
+		byte m_stackBehaviourPush;
+
+		public string Name {
+			get {
+				int index = (Size == 1) ? Op2 : (Op2 + 256);
+				return OpCodeNames.names [index];
+			}
+		}
+
+		public int Size {
+			get { return ((m_value & 0xff00) == 0xff00) ? 1 : 2; }
+		}
+
+		public byte Op1 {
+			get { return (byte) (m_value >> 8); }
+		}
+
+		public byte Op2 {
+			get { return (byte) m_value; }
+		}
+
+		public short Value {
+			get { return (Size == 1) ? Op2 : m_value; }
+		}
+
+		public Code Code {
+			get { return (Code) m_code; }
+		}
+
+		public FlowControl FlowControl {
+			get { return (FlowControl) m_flowControl; }
+		}
+
+		public OpCodeType OpCodeType {
+			get { return (OpCodeType) m_opCodeType; }
+		}
+
+		public OperandType OperandType {
+			get { return (OperandType) m_operandType; }
+		}
+
+		public StackBehaviour StackBehaviourPop {
+			get { return (StackBehaviour) m_stackBehaviourPop; }
+		}
+
+		public StackBehaviour StackBehaviourPush {
+			get { return (StackBehaviour) m_stackBehaviourPush; }
+		}
+
+		internal OpCode (byte op1, byte op2,
+			Code code, FlowControl flowControl,
+			OpCodeType opCodeType, OperandType operandType,
+			StackBehaviour pop, StackBehaviour push)
+		{
+			m_value = (short) ((op1 << 8) | op2);
+			m_code = (byte) code;
+			m_flowControl = (byte) flowControl;
+			m_opCodeType = (byte) opCodeType;
+			m_operandType = (byte) operandType;
+			m_stackBehaviourPop = (byte) pop;
+			m_stackBehaviourPush = (byte) push;
+
+			if (op1 == 0xff)
+				OpCodes.OneByteOpCode [op2] = this;
+			else
+				OpCodes.TwoBytesOpCode [op2] = this;
+		}
+
+		public override int GetHashCode ()
+		{
+			return m_value;
+		}
+
+		public override bool Equals (object obj)
+		{
+			if (!(obj is OpCode))
+				return false;
+			OpCode v = (OpCode) obj;
+			return v.m_value == m_value;
+		}
+
+		public bool Equals (OpCode opcode)
+		{
+			return (m_value == opcode.m_value);
+		}
+
+		public static bool operator == (OpCode one, OpCode other)
+		{
+			return (one.m_value == other.m_value);
+		}
+
+		public static bool operator != (OpCode one, OpCode other)
+		{
+			return (one.m_value != other.m_value);
+		}
+
+		public override string ToString ()
+		{
+			return Name;
+		}
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/OpCodeNames.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/OpCodeNames.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil.Cil/OpCodeNames.cs
rename to mcs/tools/cil-strip/Mono.Cecil.Cil/OpCodeNames.cs
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/OpCodeType.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/OpCodeType.cs
new file mode 100644
index 0000000..ef85f52
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Cil/OpCodeType.cs
@@ -0,0 +1,39 @@
+//
+// OpCodeType.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+	internal enum OpCodeType {
+		Annotation,
+		Macro,
+		Nternal,
+		Objmodel,
+		Prefix,
+		Primitive
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/OpCodes.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/OpCodes.cs
new file mode 100644
index 0000000..a54e326
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Cil/OpCodes.cs
@@ -0,0 +1,1583 @@
+//
+// OpCodes.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Fri Jun 06 13:04:02 +0200 2008
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+	internal sealed class OpCodes {
+
+		internal static readonly OpCode [] OneByteOpCode = new OpCode [0xe0 + 1];
+		internal static readonly OpCode [] TwoBytesOpCode = new OpCode [0x1e + 1];
+
+		public static readonly OpCode Nop = new OpCode (
+			0xff, 0x00,
+			Code.Nop, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop0, StackBehaviour.Push0);
+
+		public static readonly OpCode Break = new OpCode (
+			0xff, 0x01,
+			Code.Break, FlowControl.Break,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop0, StackBehaviour.Push0);
+
+		public static readonly OpCode Ldarg_0 = new OpCode (
+			0xff, 0x02,
+			Code.Ldarg_0, FlowControl.Next,
+			OpCodeType.Macro, OperandType.InlineNone,
+			StackBehaviour.Pop0, StackBehaviour.Push1);
+
+		public static readonly OpCode Ldarg_1 = new OpCode (
+			0xff, 0x03,
+			Code.Ldarg_1, FlowControl.Next,
+			OpCodeType.Macro, OperandType.InlineNone,
+			StackBehaviour.Pop0, StackBehaviour.Push1);
+
+		public static readonly OpCode Ldarg_2 = new OpCode (
+			0xff, 0x04,
+			Code.Ldarg_2, FlowControl.Next,
+			OpCodeType.Macro, OperandType.InlineNone,
+			StackBehaviour.Pop0, StackBehaviour.Push1);
+
+		public static readonly OpCode Ldarg_3 = new OpCode (
+			0xff, 0x05,
+			Code.Ldarg_3, FlowControl.Next,
+			OpCodeType.Macro, OperandType.InlineNone,
+			StackBehaviour.Pop0, StackBehaviour.Push1);
+
+		public static readonly OpCode Ldloc_0 = new OpCode (
+			0xff, 0x06,
+			Code.Ldloc_0, FlowControl.Next,
+			OpCodeType.Macro, OperandType.InlineNone,
+			StackBehaviour.Pop0, StackBehaviour.Push1);
+
+		public static readonly OpCode Ldloc_1 = new OpCode (
+			0xff, 0x07,
+			Code.Ldloc_1, FlowControl.Next,
+			OpCodeType.Macro, OperandType.InlineNone,
+			StackBehaviour.Pop0, StackBehaviour.Push1);
+
+		public static readonly OpCode Ldloc_2 = new OpCode (
+			0xff, 0x08,
+			Code.Ldloc_2, FlowControl.Next,
+			OpCodeType.Macro, OperandType.InlineNone,
+			StackBehaviour.Pop0, StackBehaviour.Push1);
+
+		public static readonly OpCode Ldloc_3 = new OpCode (
+			0xff, 0x09,
+			Code.Ldloc_3, FlowControl.Next,
+			OpCodeType.Macro, OperandType.InlineNone,
+			StackBehaviour.Pop0, StackBehaviour.Push1);
+
+		public static readonly OpCode Stloc_0 = new OpCode (
+			0xff, 0x0a,
+			Code.Stloc_0, FlowControl.Next,
+			OpCodeType.Macro, OperandType.InlineNone,
+			StackBehaviour.Pop1, StackBehaviour.Push0);
+
+		public static readonly OpCode Stloc_1 = new OpCode (
+			0xff, 0x0b,
+			Code.Stloc_1, FlowControl.Next,
+			OpCodeType.Macro, OperandType.InlineNone,
+			StackBehaviour.Pop1, StackBehaviour.Push0);
+
+		public static readonly OpCode Stloc_2 = new OpCode (
+			0xff, 0x0c,
+			Code.Stloc_2, FlowControl.Next,
+			OpCodeType.Macro, OperandType.InlineNone,
+			StackBehaviour.Pop1, StackBehaviour.Push0);
+
+		public static readonly OpCode Stloc_3 = new OpCode (
+			0xff, 0x0d,
+			Code.Stloc_3, FlowControl.Next,
+			OpCodeType.Macro, OperandType.InlineNone,
+			StackBehaviour.Pop1, StackBehaviour.Push0);
+
+		public static readonly OpCode Ldarg_S = new OpCode (
+			0xff, 0x0e,
+			Code.Ldarg_S, FlowControl.Next,
+			OpCodeType.Macro, OperandType.ShortInlineParam,
+			StackBehaviour.Pop0, StackBehaviour.Push1);
+
+		public static readonly OpCode Ldarga_S = new OpCode (
+			0xff, 0x0f,
+			Code.Ldarga_S, FlowControl.Next,
+			OpCodeType.Macro, OperandType.ShortInlineParam,
+			StackBehaviour.Pop0, StackBehaviour.Pushi);
+
+		public static readonly OpCode Starg_S = new OpCode (
+			0xff, 0x10,
+			Code.Starg_S, FlowControl.Next,
+			OpCodeType.Macro, OperandType.ShortInlineParam,
+			StackBehaviour.Pop1, StackBehaviour.Push0);
+
+		public static readonly OpCode Ldloc_S = new OpCode (
+			0xff, 0x11,
+			Code.Ldloc_S, FlowControl.Next,
+			OpCodeType.Macro, OperandType.ShortInlineVar,
+			StackBehaviour.Pop0, StackBehaviour.Push1);
+
+		public static readonly OpCode Ldloca_S = new OpCode (
+			0xff, 0x12,
+			Code.Ldloca_S, FlowControl.Next,
+			OpCodeType.Macro, OperandType.ShortInlineVar,
+			StackBehaviour.Pop0, StackBehaviour.Pushi);
+
+		public static readonly OpCode Stloc_S = new OpCode (
+			0xff, 0x13,
+			Code.Stloc_S, FlowControl.Next,
+			OpCodeType.Macro, OperandType.ShortInlineVar,
+			StackBehaviour.Pop1, StackBehaviour.Push0);
+
+		public static readonly OpCode Ldnull = new OpCode (
+			0xff, 0x14,
+			Code.Ldnull, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop0, StackBehaviour.Pushref);
+
+		public static readonly OpCode Ldc_I4_M1 = new OpCode (
+			0xff, 0x15,
+			Code.Ldc_I4_M1, FlowControl.Next,
+			OpCodeType.Macro, OperandType.InlineNone,
+			StackBehaviour.Pop0, StackBehaviour.Pushi);
+
+		public static readonly OpCode Ldc_I4_0 = new OpCode (
+			0xff, 0x16,
+			Code.Ldc_I4_0, FlowControl.Next,
+			OpCodeType.Macro, OperandType.InlineNone,
+			StackBehaviour.Pop0, StackBehaviour.Pushi);
+
+		public static readonly OpCode Ldc_I4_1 = new OpCode (
+			0xff, 0x17,
+			Code.Ldc_I4_1, FlowControl.Next,
+			OpCodeType.Macro, OperandType.InlineNone,
+			StackBehaviour.Pop0, StackBehaviour.Pushi);
+
+		public static readonly OpCode Ldc_I4_2 = new OpCode (
+			0xff, 0x18,
+			Code.Ldc_I4_2, FlowControl.Next,
+			OpCodeType.Macro, OperandType.InlineNone,
+			StackBehaviour.Pop0, StackBehaviour.Pushi);
+
+		public static readonly OpCode Ldc_I4_3 = new OpCode (
+			0xff, 0x19,
+			Code.Ldc_I4_3, FlowControl.Next,
+			OpCodeType.Macro, OperandType.InlineNone,
+			StackBehaviour.Pop0, StackBehaviour.Pushi);
+
+		public static readonly OpCode Ldc_I4_4 = new OpCode (
+			0xff, 0x1a,
+			Code.Ldc_I4_4, FlowControl.Next,
+			OpCodeType.Macro, OperandType.InlineNone,
+			StackBehaviour.Pop0, StackBehaviour.Pushi);
+
+		public static readonly OpCode Ldc_I4_5 = new OpCode (
+			0xff, 0x1b,
+			Code.Ldc_I4_5, FlowControl.Next,
+			OpCodeType.Macro, OperandType.InlineNone,
+			StackBehaviour.Pop0, StackBehaviour.Pushi);
+
+		public static readonly OpCode Ldc_I4_6 = new OpCode (
+			0xff, 0x1c,
+			Code.Ldc_I4_6, FlowControl.Next,
+			OpCodeType.Macro, OperandType.InlineNone,
+			StackBehaviour.Pop0, StackBehaviour.Pushi);
+
+		public static readonly OpCode Ldc_I4_7 = new OpCode (
+			0xff, 0x1d,
+			Code.Ldc_I4_7, FlowControl.Next,
+			OpCodeType.Macro, OperandType.InlineNone,
+			StackBehaviour.Pop0, StackBehaviour.Pushi);
+
+		public static readonly OpCode Ldc_I4_8 = new OpCode (
+			0xff, 0x1e,
+			Code.Ldc_I4_8, FlowControl.Next,
+			OpCodeType.Macro, OperandType.InlineNone,
+			StackBehaviour.Pop0, StackBehaviour.Pushi);
+
+		public static readonly OpCode Ldc_I4_S = new OpCode (
+			0xff, 0x1f,
+			Code.Ldc_I4_S, FlowControl.Next,
+			OpCodeType.Macro, OperandType.ShortInlineI,
+			StackBehaviour.Pop0, StackBehaviour.Pushi);
+
+		public static readonly OpCode Ldc_I4 = new OpCode (
+			0xff, 0x20,
+			Code.Ldc_I4, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineI,
+			StackBehaviour.Pop0, StackBehaviour.Pushi);
+
+		public static readonly OpCode Ldc_I8 = new OpCode (
+			0xff, 0x21,
+			Code.Ldc_I8, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineI8,
+			StackBehaviour.Pop0, StackBehaviour.Pushi8);
+
+		public static readonly OpCode Ldc_R4 = new OpCode (
+			0xff, 0x22,
+			Code.Ldc_R4, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.ShortInlineR,
+			StackBehaviour.Pop0, StackBehaviour.Pushr4);
+
+		public static readonly OpCode Ldc_R8 = new OpCode (
+			0xff, 0x23,
+			Code.Ldc_R8, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineR,
+			StackBehaviour.Pop0, StackBehaviour.Pushr8);
+
+		public static readonly OpCode Dup = new OpCode (
+			0xff, 0x25,
+			Code.Dup, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1, StackBehaviour.Push1_push1);
+
+		public static readonly OpCode Pop = new OpCode (
+			0xff, 0x26,
+			Code.Pop, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1, StackBehaviour.Push0);
+
+		public static readonly OpCode Jmp = new OpCode (
+			0xff, 0x27,
+			Code.Jmp, FlowControl.Call,
+			OpCodeType.Primitive, OperandType.InlineMethod,
+			StackBehaviour.Pop0, StackBehaviour.Push0);
+
+		public static readonly OpCode Call = new OpCode (
+			0xff, 0x28,
+			Code.Call, FlowControl.Call,
+			OpCodeType.Primitive, OperandType.InlineMethod,
+			StackBehaviour.Varpop, StackBehaviour.Varpush);
+
+		public static readonly OpCode Calli = new OpCode (
+			0xff, 0x29,
+			Code.Calli, FlowControl.Call,
+			OpCodeType.Primitive, OperandType.InlineSig,
+			StackBehaviour.Varpop, StackBehaviour.Varpush);
+
+		public static readonly OpCode Ret = new OpCode (
+			0xff, 0x2a,
+			Code.Ret, FlowControl.Return,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Varpop, StackBehaviour.Push0);
+
+		public static readonly OpCode Br_S = new OpCode (
+			0xff, 0x2b,
+			Code.Br_S, FlowControl.Branch,
+			OpCodeType.Macro, OperandType.ShortInlineBrTarget,
+			StackBehaviour.Pop0, StackBehaviour.Push0);
+
+		public static readonly OpCode Brfalse_S = new OpCode (
+			0xff, 0x2c,
+			Code.Brfalse_S, FlowControl.Cond_Branch,
+			OpCodeType.Macro, OperandType.ShortInlineBrTarget,
+			StackBehaviour.Popi, StackBehaviour.Push0);
+
+		public static readonly OpCode Brtrue_S = new OpCode (
+			0xff, 0x2d,
+			Code.Brtrue_S, FlowControl.Cond_Branch,
+			OpCodeType.Macro, OperandType.ShortInlineBrTarget,
+			StackBehaviour.Popi, StackBehaviour.Push0);
+
+		public static readonly OpCode Beq_S = new OpCode (
+			0xff, 0x2e,
+			Code.Beq_S, FlowControl.Cond_Branch,
+			OpCodeType.Macro, OperandType.ShortInlineBrTarget,
+			StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+
+		public static readonly OpCode Bge_S = new OpCode (
+			0xff, 0x2f,
+			Code.Bge_S, FlowControl.Cond_Branch,
+			OpCodeType.Macro, OperandType.ShortInlineBrTarget,
+			StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+
+		public static readonly OpCode Bgt_S = new OpCode (
+			0xff, 0x30,
+			Code.Bgt_S, FlowControl.Cond_Branch,
+			OpCodeType.Macro, OperandType.ShortInlineBrTarget,
+			StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+
+		public static readonly OpCode Ble_S = new OpCode (
+			0xff, 0x31,
+			Code.Ble_S, FlowControl.Cond_Branch,
+			OpCodeType.Macro, OperandType.ShortInlineBrTarget,
+			StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+
+		public static readonly OpCode Blt_S = new OpCode (
+			0xff, 0x32,
+			Code.Blt_S, FlowControl.Cond_Branch,
+			OpCodeType.Macro, OperandType.ShortInlineBrTarget,
+			StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+
+		public static readonly OpCode Bne_Un_S = new OpCode (
+			0xff, 0x33,
+			Code.Bne_Un_S, FlowControl.Cond_Branch,
+			OpCodeType.Macro, OperandType.ShortInlineBrTarget,
+			StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+
+		public static readonly OpCode Bge_Un_S = new OpCode (
+			0xff, 0x34,
+			Code.Bge_Un_S, FlowControl.Cond_Branch,
+			OpCodeType.Macro, OperandType.ShortInlineBrTarget,
+			StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+
+		public static readonly OpCode Bgt_Un_S = new OpCode (
+			0xff, 0x35,
+			Code.Bgt_Un_S, FlowControl.Cond_Branch,
+			OpCodeType.Macro, OperandType.ShortInlineBrTarget,
+			StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+
+		public static readonly OpCode Ble_Un_S = new OpCode (
+			0xff, 0x36,
+			Code.Ble_Un_S, FlowControl.Cond_Branch,
+			OpCodeType.Macro, OperandType.ShortInlineBrTarget,
+			StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+
+		public static readonly OpCode Blt_Un_S = new OpCode (
+			0xff, 0x37,
+			Code.Blt_Un_S, FlowControl.Cond_Branch,
+			OpCodeType.Macro, OperandType.ShortInlineBrTarget,
+			StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+
+		public static readonly OpCode Br = new OpCode (
+			0xff, 0x38,
+			Code.Br, FlowControl.Branch,
+			OpCodeType.Primitive, OperandType.InlineBrTarget,
+			StackBehaviour.Pop0, StackBehaviour.Push0);
+
+		public static readonly OpCode Brfalse = new OpCode (
+			0xff, 0x39,
+			Code.Brfalse, FlowControl.Cond_Branch,
+			OpCodeType.Primitive, OperandType.InlineBrTarget,
+			StackBehaviour.Popi, StackBehaviour.Push0);
+
+		public static readonly OpCode Brtrue = new OpCode (
+			0xff, 0x3a,
+			Code.Brtrue, FlowControl.Cond_Branch,
+			OpCodeType.Primitive, OperandType.InlineBrTarget,
+			StackBehaviour.Popi, StackBehaviour.Push0);
+
+		public static readonly OpCode Beq = new OpCode (
+			0xff, 0x3b,
+			Code.Beq, FlowControl.Cond_Branch,
+			OpCodeType.Macro, OperandType.InlineBrTarget,
+			StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+
+		public static readonly OpCode Bge = new OpCode (
+			0xff, 0x3c,
+			Code.Bge, FlowControl.Cond_Branch,
+			OpCodeType.Macro, OperandType.InlineBrTarget,
+			StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+
+		public static readonly OpCode Bgt = new OpCode (
+			0xff, 0x3d,
+			Code.Bgt, FlowControl.Cond_Branch,
+			OpCodeType.Macro, OperandType.InlineBrTarget,
+			StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+
+		public static readonly OpCode Ble = new OpCode (
+			0xff, 0x3e,
+			Code.Ble, FlowControl.Cond_Branch,
+			OpCodeType.Macro, OperandType.InlineBrTarget,
+			StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+
+		public static readonly OpCode Blt = new OpCode (
+			0xff, 0x3f,
+			Code.Blt, FlowControl.Cond_Branch,
+			OpCodeType.Macro, OperandType.InlineBrTarget,
+			StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+
+		public static readonly OpCode Bne_Un = new OpCode (
+			0xff, 0x40,
+			Code.Bne_Un, FlowControl.Cond_Branch,
+			OpCodeType.Macro, OperandType.InlineBrTarget,
+			StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+
+		public static readonly OpCode Bge_Un = new OpCode (
+			0xff, 0x41,
+			Code.Bge_Un, FlowControl.Cond_Branch,
+			OpCodeType.Macro, OperandType.InlineBrTarget,
+			StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+
+		public static readonly OpCode Bgt_Un = new OpCode (
+			0xff, 0x42,
+			Code.Bgt_Un, FlowControl.Cond_Branch,
+			OpCodeType.Macro, OperandType.InlineBrTarget,
+			StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+
+		public static readonly OpCode Ble_Un = new OpCode (
+			0xff, 0x43,
+			Code.Ble_Un, FlowControl.Cond_Branch,
+			OpCodeType.Macro, OperandType.InlineBrTarget,
+			StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+
+		public static readonly OpCode Blt_Un = new OpCode (
+			0xff, 0x44,
+			Code.Blt_Un, FlowControl.Cond_Branch,
+			OpCodeType.Macro, OperandType.InlineBrTarget,
+			StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
+
+		public static readonly OpCode Switch = new OpCode (
+			0xff, 0x45,
+			Code.Switch, FlowControl.Cond_Branch,
+			OpCodeType.Primitive, OperandType.InlineSwitch,
+			StackBehaviour.Popi, StackBehaviour.Push0);
+
+		public static readonly OpCode Ldind_I1 = new OpCode (
+			0xff, 0x46,
+			Code.Ldind_I1, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Popi, StackBehaviour.Pushi);
+
+		public static readonly OpCode Ldind_U1 = new OpCode (
+			0xff, 0x47,
+			Code.Ldind_U1, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Popi, StackBehaviour.Pushi);
+
+		public static readonly OpCode Ldind_I2 = new OpCode (
+			0xff, 0x48,
+			Code.Ldind_I2, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Popi, StackBehaviour.Pushi);
+
+		public static readonly OpCode Ldind_U2 = new OpCode (
+			0xff, 0x49,
+			Code.Ldind_U2, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Popi, StackBehaviour.Pushi);
+
+		public static readonly OpCode Ldind_I4 = new OpCode (
+			0xff, 0x4a,
+			Code.Ldind_I4, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Popi, StackBehaviour.Pushi);
+
+		public static readonly OpCode Ldind_U4 = new OpCode (
+			0xff, 0x4b,
+			Code.Ldind_U4, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Popi, StackBehaviour.Pushi);
+
+		public static readonly OpCode Ldind_I8 = new OpCode (
+			0xff, 0x4c,
+			Code.Ldind_I8, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Popi, StackBehaviour.Pushi8);
+
+		public static readonly OpCode Ldind_I = new OpCode (
+			0xff, 0x4d,
+			Code.Ldind_I, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Popi, StackBehaviour.Pushi);
+
+		public static readonly OpCode Ldind_R4 = new OpCode (
+			0xff, 0x4e,
+			Code.Ldind_R4, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Popi, StackBehaviour.Pushr4);
+
+		public static readonly OpCode Ldind_R8 = new OpCode (
+			0xff, 0x4f,
+			Code.Ldind_R8, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Popi, StackBehaviour.Pushr8);
+
+		public static readonly OpCode Ldind_Ref = new OpCode (
+			0xff, 0x50,
+			Code.Ldind_Ref, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Popi, StackBehaviour.Pushref);
+
+		public static readonly OpCode Stind_Ref = new OpCode (
+			0xff, 0x51,
+			Code.Stind_Ref, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Popi_popi, StackBehaviour.Push0);
+
+		public static readonly OpCode Stind_I1 = new OpCode (
+			0xff, 0x52,
+			Code.Stind_I1, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Popi_popi, StackBehaviour.Push0);
+
+		public static readonly OpCode Stind_I2 = new OpCode (
+			0xff, 0x53,
+			Code.Stind_I2, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Popi_popi, StackBehaviour.Push0);
+
+		public static readonly OpCode Stind_I4 = new OpCode (
+			0xff, 0x54,
+			Code.Stind_I4, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Popi_popi, StackBehaviour.Push0);
+
+		public static readonly OpCode Stind_I8 = new OpCode (
+			0xff, 0x55,
+			Code.Stind_I8, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Popi_popi8, StackBehaviour.Push0);
+
+		public static readonly OpCode Stind_R4 = new OpCode (
+			0xff, 0x56,
+			Code.Stind_R4, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Popi_popr4, StackBehaviour.Push0);
+
+		public static readonly OpCode Stind_R8 = new OpCode (
+			0xff, 0x57,
+			Code.Stind_R8, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Popi_popr8, StackBehaviour.Push0);
+
+		public static readonly OpCode Add = new OpCode (
+			0xff, 0x58,
+			Code.Add, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+
+		public static readonly OpCode Sub = new OpCode (
+			0xff, 0x59,
+			Code.Sub, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+
+		public static readonly OpCode Mul = new OpCode (
+			0xff, 0x5a,
+			Code.Mul, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+
+		public static readonly OpCode Div = new OpCode (
+			0xff, 0x5b,
+			Code.Div, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+
+		public static readonly OpCode Div_Un = new OpCode (
+			0xff, 0x5c,
+			Code.Div_Un, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+
+		public static readonly OpCode Rem = new OpCode (
+			0xff, 0x5d,
+			Code.Rem, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+
+		public static readonly OpCode Rem_Un = new OpCode (
+			0xff, 0x5e,
+			Code.Rem_Un, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+
+		public static readonly OpCode And = new OpCode (
+			0xff, 0x5f,
+			Code.And, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+
+		public static readonly OpCode Or = new OpCode (
+			0xff, 0x60,
+			Code.Or, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+
+		public static readonly OpCode Xor = new OpCode (
+			0xff, 0x61,
+			Code.Xor, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+
+		public static readonly OpCode Shl = new OpCode (
+			0xff, 0x62,
+			Code.Shl, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+
+		public static readonly OpCode Shr = new OpCode (
+			0xff, 0x63,
+			Code.Shr, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+
+		public static readonly OpCode Shr_Un = new OpCode (
+			0xff, 0x64,
+			Code.Shr_Un, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+
+		public static readonly OpCode Neg = new OpCode (
+			0xff, 0x65,
+			Code.Neg, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1, StackBehaviour.Push1);
+
+		public static readonly OpCode Not = new OpCode (
+			0xff, 0x66,
+			Code.Not, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1, StackBehaviour.Push1);
+
+		public static readonly OpCode Conv_I1 = new OpCode (
+			0xff, 0x67,
+			Code.Conv_I1, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1, StackBehaviour.Pushi);
+
+		public static readonly OpCode Conv_I2 = new OpCode (
+			0xff, 0x68,
+			Code.Conv_I2, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1, StackBehaviour.Pushi);
+
+		public static readonly OpCode Conv_I4 = new OpCode (
+			0xff, 0x69,
+			Code.Conv_I4, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1, StackBehaviour.Pushi);
+
+		public static readonly OpCode Conv_I8 = new OpCode (
+			0xff, 0x6a,
+			Code.Conv_I8, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1, StackBehaviour.Pushi8);
+
+		public static readonly OpCode Conv_R4 = new OpCode (
+			0xff, 0x6b,
+			Code.Conv_R4, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1, StackBehaviour.Pushr4);
+
+		public static readonly OpCode Conv_R8 = new OpCode (
+			0xff, 0x6c,
+			Code.Conv_R8, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1, StackBehaviour.Pushr8);
+
+		public static readonly OpCode Conv_U4 = new OpCode (
+			0xff, 0x6d,
+			Code.Conv_U4, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1, StackBehaviour.Pushi);
+
+		public static readonly OpCode Conv_U8 = new OpCode (
+			0xff, 0x6e,
+			Code.Conv_U8, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1, StackBehaviour.Pushi8);
+
+		public static readonly OpCode Callvirt = new OpCode (
+			0xff, 0x6f,
+			Code.Callvirt, FlowControl.Call,
+			OpCodeType.Objmodel, OperandType.InlineMethod,
+			StackBehaviour.Varpop, StackBehaviour.Varpush);
+
+		public static readonly OpCode Cpobj = new OpCode (
+			0xff, 0x70,
+			Code.Cpobj, FlowControl.Next,
+			OpCodeType.Objmodel, OperandType.InlineType,
+			StackBehaviour.Popi_popi, StackBehaviour.Push0);
+
+		public static readonly OpCode Ldobj = new OpCode (
+			0xff, 0x71,
+			Code.Ldobj, FlowControl.Next,
+			OpCodeType.Objmodel, OperandType.InlineType,
+			StackBehaviour.Popi, StackBehaviour.Push1);
+
+		public static readonly OpCode Ldstr = new OpCode (
+			0xff, 0x72,
+			Code.Ldstr, FlowControl.Next,
+			OpCodeType.Objmodel, OperandType.InlineString,
+			StackBehaviour.Pop0, StackBehaviour.Pushref);
+
+		public static readonly OpCode Newobj = new OpCode (
+			0xff, 0x73,
+			Code.Newobj, FlowControl.Call,
+			OpCodeType.Objmodel, OperandType.InlineMethod,
+			StackBehaviour.Varpop, StackBehaviour.Pushref);
+
+		public static readonly OpCode Castclass = new OpCode (
+			0xff, 0x74,
+			Code.Castclass, FlowControl.Next,
+			OpCodeType.Objmodel, OperandType.InlineType,
+			StackBehaviour.Popref, StackBehaviour.Pushref);
+
+		public static readonly OpCode Isinst = new OpCode (
+			0xff, 0x75,
+			Code.Isinst, FlowControl.Next,
+			OpCodeType.Objmodel, OperandType.InlineType,
+			StackBehaviour.Popref, StackBehaviour.Pushi);
+
+		public static readonly OpCode Conv_R_Un = new OpCode (
+			0xff, 0x76,
+			Code.Conv_R_Un, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1, StackBehaviour.Pushr8);
+
+		public static readonly OpCode Unbox = new OpCode (
+			0xff, 0x79,
+			Code.Unbox, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineType,
+			StackBehaviour.Popref, StackBehaviour.Pushi);
+
+		public static readonly OpCode Throw = new OpCode (
+			0xff, 0x7a,
+			Code.Throw, FlowControl.Throw,
+			OpCodeType.Objmodel, OperandType.InlineNone,
+			StackBehaviour.Popref, StackBehaviour.Push0);
+
+		public static readonly OpCode Ldfld = new OpCode (
+			0xff, 0x7b,
+			Code.Ldfld, FlowControl.Next,
+			OpCodeType.Objmodel, OperandType.InlineField,
+			StackBehaviour.Popref, StackBehaviour.Push1);
+
+		public static readonly OpCode Ldflda = new OpCode (
+			0xff, 0x7c,
+			Code.Ldflda, FlowControl.Next,
+			OpCodeType.Objmodel, OperandType.InlineField,
+			StackBehaviour.Popref, StackBehaviour.Pushi);
+
+		public static readonly OpCode Stfld = new OpCode (
+			0xff, 0x7d,
+			Code.Stfld, FlowControl.Next,
+			OpCodeType.Objmodel, OperandType.InlineField,
+			StackBehaviour.Popref_pop1, StackBehaviour.Push0);
+
+		public static readonly OpCode Ldsfld = new OpCode (
+			0xff, 0x7e,
+			Code.Ldsfld, FlowControl.Next,
+			OpCodeType.Objmodel, OperandType.InlineField,
+			StackBehaviour.Pop0, StackBehaviour.Push1);
+
+		public static readonly OpCode Ldsflda = new OpCode (
+			0xff, 0x7f,
+			Code.Ldsflda, FlowControl.Next,
+			OpCodeType.Objmodel, OperandType.InlineField,
+			StackBehaviour.Pop0, StackBehaviour.Pushi);
+
+		public static readonly OpCode Stsfld = new OpCode (
+			0xff, 0x80,
+			Code.Stsfld, FlowControl.Next,
+			OpCodeType.Objmodel, OperandType.InlineField,
+			StackBehaviour.Pop1, StackBehaviour.Push0);
+
+		public static readonly OpCode Stobj = new OpCode (
+			0xff, 0x81,
+			Code.Stobj, FlowControl.Next,
+			OpCodeType.Objmodel, OperandType.InlineType,
+			StackBehaviour.Popi_pop1, StackBehaviour.Push0);
+
+		public static readonly OpCode Conv_Ovf_I1_Un = new OpCode (
+			0xff, 0x82,
+			Code.Conv_Ovf_I1_Un, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1, StackBehaviour.Pushi);
+
+		public static readonly OpCode Conv_Ovf_I2_Un = new OpCode (
+			0xff, 0x83,
+			Code.Conv_Ovf_I2_Un, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1, StackBehaviour.Pushi);
+
+		public static readonly OpCode Conv_Ovf_I4_Un = new OpCode (
+			0xff, 0x84,
+			Code.Conv_Ovf_I4_Un, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1, StackBehaviour.Pushi);
+
+		public static readonly OpCode Conv_Ovf_I8_Un = new OpCode (
+			0xff, 0x85,
+			Code.Conv_Ovf_I8_Un, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1, StackBehaviour.Pushi8);
+
+		public static readonly OpCode Conv_Ovf_U1_Un = new OpCode (
+			0xff, 0x86,
+			Code.Conv_Ovf_U1_Un, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1, StackBehaviour.Pushi);
+
+		public static readonly OpCode Conv_Ovf_U2_Un = new OpCode (
+			0xff, 0x87,
+			Code.Conv_Ovf_U2_Un, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1, StackBehaviour.Pushi);
+
+		public static readonly OpCode Conv_Ovf_U4_Un = new OpCode (
+			0xff, 0x88,
+			Code.Conv_Ovf_U4_Un, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1, StackBehaviour.Pushi);
+
+		public static readonly OpCode Conv_Ovf_U8_Un = new OpCode (
+			0xff, 0x89,
+			Code.Conv_Ovf_U8_Un, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1, StackBehaviour.Pushi8);
+
+		public static readonly OpCode Conv_Ovf_I_Un = new OpCode (
+			0xff, 0x8a,
+			Code.Conv_Ovf_I_Un, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1, StackBehaviour.Pushi);
+
+		public static readonly OpCode Conv_Ovf_U_Un = new OpCode (
+			0xff, 0x8b,
+			Code.Conv_Ovf_U_Un, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1, StackBehaviour.Pushi);
+
+		public static readonly OpCode Box = new OpCode (
+			0xff, 0x8c,
+			Code.Box, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineType,
+			StackBehaviour.Pop1, StackBehaviour.Pushref);
+
+		public static readonly OpCode Newarr = new OpCode (
+			0xff, 0x8d,
+			Code.Newarr, FlowControl.Next,
+			OpCodeType.Objmodel, OperandType.InlineType,
+			StackBehaviour.Popi, StackBehaviour.Pushref);
+
+		public static readonly OpCode Ldlen = new OpCode (
+			0xff, 0x8e,
+			Code.Ldlen, FlowControl.Next,
+			OpCodeType.Objmodel, OperandType.InlineNone,
+			StackBehaviour.Popref, StackBehaviour.Pushi);
+
+		public static readonly OpCode Ldelema = new OpCode (
+			0xff, 0x8f,
+			Code.Ldelema, FlowControl.Next,
+			OpCodeType.Objmodel, OperandType.InlineType,
+			StackBehaviour.Popref_popi, StackBehaviour.Pushi);
+
+		public static readonly OpCode Ldelem_I1 = new OpCode (
+			0xff, 0x90,
+			Code.Ldelem_I1, FlowControl.Next,
+			OpCodeType.Objmodel, OperandType.InlineNone,
+			StackBehaviour.Popref_popi, StackBehaviour.Pushi);
+
+		public static readonly OpCode Ldelem_U1 = new OpCode (
+			0xff, 0x91,
+			Code.Ldelem_U1, FlowControl.Next,
+			OpCodeType.Objmodel, OperandType.InlineNone,
+			StackBehaviour.Popref_popi, StackBehaviour.Pushi);
+
+		public static readonly OpCode Ldelem_I2 = new OpCode (
+			0xff, 0x92,
+			Code.Ldelem_I2, FlowControl.Next,
+			OpCodeType.Objmodel, OperandType.InlineNone,
+			StackBehaviour.Popref_popi, StackBehaviour.Pushi);
+
+		public static readonly OpCode Ldelem_U2 = new OpCode (
+			0xff, 0x93,
+			Code.Ldelem_U2, FlowControl.Next,
+			OpCodeType.Objmodel, OperandType.InlineNone,
+			StackBehaviour.Popref_popi, StackBehaviour.Pushi);
+
+		public static readonly OpCode Ldelem_I4 = new OpCode (
+			0xff, 0x94,
+			Code.Ldelem_I4, FlowControl.Next,
+			OpCodeType.Objmodel, OperandType.InlineNone,
+			StackBehaviour.Popref_popi, StackBehaviour.Pushi);
+
+		public static readonly OpCode Ldelem_U4 = new OpCode (
+			0xff, 0x95,
+			Code.Ldelem_U4, FlowControl.Next,
+			OpCodeType.Objmodel, OperandType.InlineNone,
+			StackBehaviour.Popref_popi, StackBehaviour.Pushi);
+
+		public static readonly OpCode Ldelem_I8 = new OpCode (
+			0xff, 0x96,
+			Code.Ldelem_I8, FlowControl.Next,
+			OpCodeType.Objmodel, OperandType.InlineNone,
+			StackBehaviour.Popref_popi, StackBehaviour.Pushi8);
+
+		public static readonly OpCode Ldelem_I = new OpCode (
+			0xff, 0x97,
+			Code.Ldelem_I, FlowControl.Next,
+			OpCodeType.Objmodel, OperandType.InlineNone,
+			StackBehaviour.Popref_popi, StackBehaviour.Pushi);
+
+		public static readonly OpCode Ldelem_R4 = new OpCode (
+			0xff, 0x98,
+			Code.Ldelem_R4, FlowControl.Next,
+			OpCodeType.Objmodel, OperandType.InlineNone,
+			StackBehaviour.Popref_popi, StackBehaviour.Pushr4);
+
+		public static readonly OpCode Ldelem_R8 = new OpCode (
+			0xff, 0x99,
+			Code.Ldelem_R8, FlowControl.Next,
+			OpCodeType.Objmodel, OperandType.InlineNone,
+			StackBehaviour.Popref_popi, StackBehaviour.Pushr8);
+
+		public static readonly OpCode Ldelem_Ref = new OpCode (
+			0xff, 0x9a,
+			Code.Ldelem_Ref, FlowControl.Next,
+			OpCodeType.Objmodel, OperandType.InlineNone,
+			StackBehaviour.Popref_popi, StackBehaviour.Pushref);
+
+		public static readonly OpCode Stelem_I = new OpCode (
+			0xff, 0x9b,
+			Code.Stelem_I, FlowControl.Next,
+			OpCodeType.Objmodel, OperandType.InlineNone,
+			StackBehaviour.Popref_popi_popi, StackBehaviour.Push0);
+
+		public static readonly OpCode Stelem_I1 = new OpCode (
+			0xff, 0x9c,
+			Code.Stelem_I1, FlowControl.Next,
+			OpCodeType.Objmodel, OperandType.InlineNone,
+			StackBehaviour.Popref_popi_popi, StackBehaviour.Push0);
+
+		public static readonly OpCode Stelem_I2 = new OpCode (
+			0xff, 0x9d,
+			Code.Stelem_I2, FlowControl.Next,
+			OpCodeType.Objmodel, OperandType.InlineNone,
+			StackBehaviour.Popref_popi_popi, StackBehaviour.Push0);
+
+		public static readonly OpCode Stelem_I4 = new OpCode (
+			0xff, 0x9e,
+			Code.Stelem_I4, FlowControl.Next,
+			OpCodeType.Objmodel, OperandType.InlineNone,
+			StackBehaviour.Popref_popi_popi, StackBehaviour.Push0);
+
+		public static readonly OpCode Stelem_I8 = new OpCode (
+			0xff, 0x9f,
+			Code.Stelem_I8, FlowControl.Next,
+			OpCodeType.Objmodel, OperandType.InlineNone,
+			StackBehaviour.Popref_popi_popi8, StackBehaviour.Push0);
+
+		public static readonly OpCode Stelem_R4 = new OpCode (
+			0xff, 0xa0,
+			Code.Stelem_R4, FlowControl.Next,
+			OpCodeType.Objmodel, OperandType.InlineNone,
+			StackBehaviour.Popref_popi_popr4, StackBehaviour.Push0);
+
+		public static readonly OpCode Stelem_R8 = new OpCode (
+			0xff, 0xa1,
+			Code.Stelem_R8, FlowControl.Next,
+			OpCodeType.Objmodel, OperandType.InlineNone,
+			StackBehaviour.Popref_popi_popr8, StackBehaviour.Push0);
+
+		public static readonly OpCode Stelem_Ref = new OpCode (
+			0xff, 0xa2,
+			Code.Stelem_Ref, FlowControl.Next,
+			OpCodeType.Objmodel, OperandType.InlineNone,
+			StackBehaviour.Popref_popi_popref, StackBehaviour.Push0);
+
+		public static readonly OpCode Ldelem_Any = new OpCode (
+			0xff, 0xa3,
+			Code.Ldelem_Any, FlowControl.Next,
+			OpCodeType.Objmodel, OperandType.InlineType,
+			StackBehaviour.Popref_popi, StackBehaviour.Push1);
+
+		public static readonly OpCode Stelem_Any = new OpCode (
+			0xff, 0xa4,
+			Code.Stelem_Any, FlowControl.Next,
+			OpCodeType.Objmodel, OperandType.InlineType,
+			StackBehaviour.Popref_popi_popref, StackBehaviour.Push0);
+
+		public static readonly OpCode Unbox_Any = new OpCode (
+			0xff, 0xa5,
+			Code.Unbox_Any, FlowControl.Next,
+			OpCodeType.Objmodel, OperandType.InlineType,
+			StackBehaviour.Popref, StackBehaviour.Push1);
+
+		public static readonly OpCode Conv_Ovf_I1 = new OpCode (
+			0xff, 0xb3,
+			Code.Conv_Ovf_I1, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1, StackBehaviour.Pushi);
+
+		public static readonly OpCode Conv_Ovf_U1 = new OpCode (
+			0xff, 0xb4,
+			Code.Conv_Ovf_U1, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1, StackBehaviour.Pushi);
+
+		public static readonly OpCode Conv_Ovf_I2 = new OpCode (
+			0xff, 0xb5,
+			Code.Conv_Ovf_I2, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1, StackBehaviour.Pushi);
+
+		public static readonly OpCode Conv_Ovf_U2 = new OpCode (
+			0xff, 0xb6,
+			Code.Conv_Ovf_U2, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1, StackBehaviour.Pushi);
+
+		public static readonly OpCode Conv_Ovf_I4 = new OpCode (
+			0xff, 0xb7,
+			Code.Conv_Ovf_I4, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1, StackBehaviour.Pushi);
+
+		public static readonly OpCode Conv_Ovf_U4 = new OpCode (
+			0xff, 0xb8,
+			Code.Conv_Ovf_U4, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1, StackBehaviour.Pushi);
+
+		public static readonly OpCode Conv_Ovf_I8 = new OpCode (
+			0xff, 0xb9,
+			Code.Conv_Ovf_I8, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1, StackBehaviour.Pushi8);
+
+		public static readonly OpCode Conv_Ovf_U8 = new OpCode (
+			0xff, 0xba,
+			Code.Conv_Ovf_U8, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1, StackBehaviour.Pushi8);
+
+		public static readonly OpCode Refanyval = new OpCode (
+			0xff, 0xc2,
+			Code.Refanyval, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineType,
+			StackBehaviour.Pop1, StackBehaviour.Pushi);
+
+		public static readonly OpCode Ckfinite = new OpCode (
+			0xff, 0xc3,
+			Code.Ckfinite, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1, StackBehaviour.Pushr8);
+
+		public static readonly OpCode Mkrefany = new OpCode (
+			0xff, 0xc6,
+			Code.Mkrefany, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineType,
+			StackBehaviour.Popi, StackBehaviour.Push1);
+
+		public static readonly OpCode Ldtoken = new OpCode (
+			0xff, 0xd0,
+			Code.Ldtoken, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineTok,
+			StackBehaviour.Pop0, StackBehaviour.Pushi);
+
+		public static readonly OpCode Conv_U2 = new OpCode (
+			0xff, 0xd1,
+			Code.Conv_U2, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1, StackBehaviour.Pushi);
+
+		public static readonly OpCode Conv_U1 = new OpCode (
+			0xff, 0xd2,
+			Code.Conv_U1, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1, StackBehaviour.Pushi);
+
+		public static readonly OpCode Conv_I = new OpCode (
+			0xff, 0xd3,
+			Code.Conv_I, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1, StackBehaviour.Pushi);
+
+		public static readonly OpCode Conv_Ovf_I = new OpCode (
+			0xff, 0xd4,
+			Code.Conv_Ovf_I, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1, StackBehaviour.Pushi);
+
+		public static readonly OpCode Conv_Ovf_U = new OpCode (
+			0xff, 0xd5,
+			Code.Conv_Ovf_U, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1, StackBehaviour.Pushi);
+
+		public static readonly OpCode Add_Ovf = new OpCode (
+			0xff, 0xd6,
+			Code.Add_Ovf, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+
+		public static readonly OpCode Add_Ovf_Un = new OpCode (
+			0xff, 0xd7,
+			Code.Add_Ovf_Un, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+
+		public static readonly OpCode Mul_Ovf = new OpCode (
+			0xff, 0xd8,
+			Code.Mul_Ovf, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+
+		public static readonly OpCode Mul_Ovf_Un = new OpCode (
+			0xff, 0xd9,
+			Code.Mul_Ovf_Un, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+
+		public static readonly OpCode Sub_Ovf = new OpCode (
+			0xff, 0xda,
+			Code.Sub_Ovf, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+
+		public static readonly OpCode Sub_Ovf_Un = new OpCode (
+			0xff, 0xdb,
+			Code.Sub_Ovf_Un, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
+
+		public static readonly OpCode Endfinally = new OpCode (
+			0xff, 0xdc,
+			Code.Endfinally, FlowControl.Return,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop0, StackBehaviour.Push0);
+
+		public static readonly OpCode Leave = new OpCode (
+			0xff, 0xdd,
+			Code.Leave, FlowControl.Branch,
+			OpCodeType.Primitive, OperandType.InlineBrTarget,
+			StackBehaviour.PopAll, StackBehaviour.Push0);
+
+		public static readonly OpCode Leave_S = new OpCode (
+			0xff, 0xde,
+			Code.Leave_S, FlowControl.Branch,
+			OpCodeType.Macro, OperandType.ShortInlineBrTarget,
+			StackBehaviour.PopAll, StackBehaviour.Push0);
+
+		public static readonly OpCode Stind_I = new OpCode (
+			0xff, 0xdf,
+			Code.Stind_I, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Popi_popi, StackBehaviour.Push0);
+
+		public static readonly OpCode Conv_U = new OpCode (
+			0xff, 0xe0,
+			Code.Conv_U, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1, StackBehaviour.Pushi);
+
+		public static readonly OpCode Arglist = new OpCode (
+			0xfe, 0x00,
+			Code.Arglist, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop0, StackBehaviour.Pushi);
+
+		public static readonly OpCode Ceq = new OpCode (
+			0xfe, 0x01,
+			Code.Ceq, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1_pop1, StackBehaviour.Pushi);
+
+		public static readonly OpCode Cgt = new OpCode (
+			0xfe, 0x02,
+			Code.Cgt, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1_pop1, StackBehaviour.Pushi);
+
+		public static readonly OpCode Cgt_Un = new OpCode (
+			0xfe, 0x03,
+			Code.Cgt_Un, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1_pop1, StackBehaviour.Pushi);
+
+		public static readonly OpCode Clt = new OpCode (
+			0xfe, 0x04,
+			Code.Clt, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1_pop1, StackBehaviour.Pushi);
+
+		public static readonly OpCode Clt_Un = new OpCode (
+			0xfe, 0x05,
+			Code.Clt_Un, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1_pop1, StackBehaviour.Pushi);
+
+		public static readonly OpCode Ldftn = new OpCode (
+			0xfe, 0x06,
+			Code.Ldftn, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineMethod,
+			StackBehaviour.Pop0, StackBehaviour.Pushi);
+
+		public static readonly OpCode Ldvirtftn = new OpCode (
+			0xfe, 0x07,
+			Code.Ldvirtftn, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineMethod,
+			StackBehaviour.Popref, StackBehaviour.Pushi);
+
+		public static readonly OpCode Ldarg = new OpCode (
+			0xfe, 0x09,
+			Code.Ldarg, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineParam,
+			StackBehaviour.Pop0, StackBehaviour.Push1);
+
+		public static readonly OpCode Ldarga = new OpCode (
+			0xfe, 0x0a,
+			Code.Ldarga, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineParam,
+			StackBehaviour.Pop0, StackBehaviour.Pushi);
+
+		public static readonly OpCode Starg = new OpCode (
+			0xfe, 0x0b,
+			Code.Starg, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineParam,
+			StackBehaviour.Pop1, StackBehaviour.Push0);
+
+		public static readonly OpCode Ldloc = new OpCode (
+			0xfe, 0x0c,
+			Code.Ldloc, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineVar,
+			StackBehaviour.Pop0, StackBehaviour.Push1);
+
+		public static readonly OpCode Ldloca = new OpCode (
+			0xfe, 0x0d,
+			Code.Ldloca, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineVar,
+			StackBehaviour.Pop0, StackBehaviour.Pushi);
+
+		public static readonly OpCode Stloc = new OpCode (
+			0xfe, 0x0e,
+			Code.Stloc, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineVar,
+			StackBehaviour.Pop1, StackBehaviour.Push0);
+
+		public static readonly OpCode Localloc = new OpCode (
+			0xfe, 0x0f,
+			Code.Localloc, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Popi, StackBehaviour.Pushi);
+
+		public static readonly OpCode Endfilter = new OpCode (
+			0xfe, 0x11,
+			Code.Endfilter, FlowControl.Return,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Popi, StackBehaviour.Push0);
+
+		public static readonly OpCode Unaligned = new OpCode (
+			0xfe, 0x12,
+			Code.Unaligned, FlowControl.Meta,
+			OpCodeType.Prefix, OperandType.ShortInlineI,
+			StackBehaviour.Pop0, StackBehaviour.Push0);
+
+		public static readonly OpCode Volatile = new OpCode (
+			0xfe, 0x13,
+			Code.Volatile, FlowControl.Meta,
+			OpCodeType.Prefix, OperandType.InlineNone,
+			StackBehaviour.Pop0, StackBehaviour.Push0);
+
+		public static readonly OpCode Tail = new OpCode (
+			0xfe, 0x14,
+			Code.Tail, FlowControl.Meta,
+			OpCodeType.Prefix, OperandType.InlineNone,
+			StackBehaviour.Pop0, StackBehaviour.Push0);
+
+		public static readonly OpCode Initobj = new OpCode (
+			0xfe, 0x15,
+			Code.Initobj, FlowControl.Next,
+			OpCodeType.Objmodel, OperandType.InlineType,
+			StackBehaviour.Popi, StackBehaviour.Push0);
+
+		public static readonly OpCode Constrained = new OpCode (
+			0xfe, 0x16,
+			Code.Constrained, FlowControl.Next,
+			OpCodeType.Prefix, OperandType.InlineType,
+			StackBehaviour.Pop0, StackBehaviour.Push0);
+
+		public static readonly OpCode Cpblk = new OpCode (
+			0xfe, 0x17,
+			Code.Cpblk, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Popi_popi_popi, StackBehaviour.Push0);
+
+		public static readonly OpCode Initblk = new OpCode (
+			0xfe, 0x18,
+			Code.Initblk, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Popi_popi_popi, StackBehaviour.Push0);
+
+		public static readonly OpCode No = new OpCode (
+			0xfe, 0x19,
+			Code.No, FlowControl.Next,
+			OpCodeType.Prefix, OperandType.ShortInlineI,
+			StackBehaviour.Pop0, StackBehaviour.Push0);
+
+		public static readonly OpCode Rethrow = new OpCode (
+			0xfe, 0x1a,
+			Code.Rethrow, FlowControl.Throw,
+			OpCodeType.Objmodel, OperandType.InlineNone,
+			StackBehaviour.Pop0, StackBehaviour.Push0);
+
+		public static readonly OpCode Sizeof = new OpCode (
+			0xfe, 0x1c,
+			Code.Sizeof, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineType,
+			StackBehaviour.Pop0, StackBehaviour.Pushi);
+
+		public static readonly OpCode Refanytype = new OpCode (
+			0xfe, 0x1d,
+			Code.Refanytype, FlowControl.Next,
+			OpCodeType.Primitive, OperandType.InlineNone,
+			StackBehaviour.Pop1, StackBehaviour.Pushi);
+
+		public static readonly OpCode Readonly = new OpCode (
+			0xfe, 0x1e,
+			Code.Readonly, FlowControl.Next,
+			OpCodeType.Prefix, OperandType.InlineNone,
+			StackBehaviour.Pop0, StackBehaviour.Push0);
+
+		OpCodes ()
+		{
+		}
+
+		public static OpCode GetOpCode (Code code)
+		{
+			switch (code) {
+			case Code.Nop : return OpCodes.Nop;
+			case Code.Break : return OpCodes.Break;
+			case Code.Ldarg_0 : return OpCodes.Ldarg_0;
+			case Code.Ldarg_1 : return OpCodes.Ldarg_1;
+			case Code.Ldarg_2 : return OpCodes.Ldarg_2;
+			case Code.Ldarg_3 : return OpCodes.Ldarg_3;
+			case Code.Ldloc_0 : return OpCodes.Ldloc_0;
+			case Code.Ldloc_1 : return OpCodes.Ldloc_1;
+			case Code.Ldloc_2 : return OpCodes.Ldloc_2;
+			case Code.Ldloc_3 : return OpCodes.Ldloc_3;
+			case Code.Stloc_0 : return OpCodes.Stloc_0;
+			case Code.Stloc_1 : return OpCodes.Stloc_1;
+			case Code.Stloc_2 : return OpCodes.Stloc_2;
+			case Code.Stloc_3 : return OpCodes.Stloc_3;
+			case Code.Ldarg_S : return OpCodes.Ldarg_S;
+			case Code.Ldarga_S : return OpCodes.Ldarga_S;
+			case Code.Starg_S : return OpCodes.Starg_S;
+			case Code.Ldloc_S : return OpCodes.Ldloc_S;
+			case Code.Ldloca_S : return OpCodes.Ldloca_S;
+			case Code.Stloc_S : return OpCodes.Stloc_S;
+			case Code.Ldnull : return OpCodes.Ldnull;
+			case Code.Ldc_I4_M1 : return OpCodes.Ldc_I4_M1;
+			case Code.Ldc_I4_0 : return OpCodes.Ldc_I4_0;
+			case Code.Ldc_I4_1 : return OpCodes.Ldc_I4_1;
+			case Code.Ldc_I4_2 : return OpCodes.Ldc_I4_2;
+			case Code.Ldc_I4_3 : return OpCodes.Ldc_I4_3;
+			case Code.Ldc_I4_4 : return OpCodes.Ldc_I4_4;
+			case Code.Ldc_I4_5 : return OpCodes.Ldc_I4_5;
+			case Code.Ldc_I4_6 : return OpCodes.Ldc_I4_6;
+			case Code.Ldc_I4_7 : return OpCodes.Ldc_I4_7;
+			case Code.Ldc_I4_8 : return OpCodes.Ldc_I4_8;
+			case Code.Ldc_I4_S : return OpCodes.Ldc_I4_S;
+			case Code.Ldc_I4 : return OpCodes.Ldc_I4;
+			case Code.Ldc_I8 : return OpCodes.Ldc_I8;
+			case Code.Ldc_R4 : return OpCodes.Ldc_R4;
+			case Code.Ldc_R8 : return OpCodes.Ldc_R8;
+			case Code.Dup : return OpCodes.Dup;
+			case Code.Pop : return OpCodes.Pop;
+			case Code.Jmp : return OpCodes.Jmp;
+			case Code.Call : return OpCodes.Call;
+			case Code.Calli : return OpCodes.Calli;
+			case Code.Ret : return OpCodes.Ret;
+			case Code.Br_S : return OpCodes.Br_S;
+			case Code.Brfalse_S : return OpCodes.Brfalse_S;
+			case Code.Brtrue_S : return OpCodes.Brtrue_S;
+			case Code.Beq_S : return OpCodes.Beq_S;
+			case Code.Bge_S : return OpCodes.Bge_S;
+			case Code.Bgt_S : return OpCodes.Bgt_S;
+			case Code.Ble_S : return OpCodes.Ble_S;
+			case Code.Blt_S : return OpCodes.Blt_S;
+			case Code.Bne_Un_S : return OpCodes.Bne_Un_S;
+			case Code.Bge_Un_S : return OpCodes.Bge_Un_S;
+			case Code.Bgt_Un_S : return OpCodes.Bgt_Un_S;
+			case Code.Ble_Un_S : return OpCodes.Ble_Un_S;
+			case Code.Blt_Un_S : return OpCodes.Blt_Un_S;
+			case Code.Br : return OpCodes.Br;
+			case Code.Brfalse : return OpCodes.Brfalse;
+			case Code.Brtrue : return OpCodes.Brtrue;
+			case Code.Beq : return OpCodes.Beq;
+			case Code.Bge : return OpCodes.Bge;
+			case Code.Bgt : return OpCodes.Bgt;
+			case Code.Ble : return OpCodes.Ble;
+			case Code.Blt : return OpCodes.Blt;
+			case Code.Bne_Un : return OpCodes.Bne_Un;
+			case Code.Bge_Un : return OpCodes.Bge_Un;
+			case Code.Bgt_Un : return OpCodes.Bgt_Un;
+			case Code.Ble_Un : return OpCodes.Ble_Un;
+			case Code.Blt_Un : return OpCodes.Blt_Un;
+			case Code.Switch : return OpCodes.Switch;
+			case Code.Ldind_I1 : return OpCodes.Ldind_I1;
+			case Code.Ldind_U1 : return OpCodes.Ldind_U1;
+			case Code.Ldind_I2 : return OpCodes.Ldind_I2;
+			case Code.Ldind_U2 : return OpCodes.Ldind_U2;
+			case Code.Ldind_I4 : return OpCodes.Ldind_I4;
+			case Code.Ldind_U4 : return OpCodes.Ldind_U4;
+			case Code.Ldind_I8 : return OpCodes.Ldind_I8;
+			case Code.Ldind_I : return OpCodes.Ldind_I;
+			case Code.Ldind_R4 : return OpCodes.Ldind_R4;
+			case Code.Ldind_R8 : return OpCodes.Ldind_R8;
+			case Code.Ldind_Ref : return OpCodes.Ldind_Ref;
+			case Code.Stind_Ref : return OpCodes.Stind_Ref;
+			case Code.Stind_I1 : return OpCodes.Stind_I1;
+			case Code.Stind_I2 : return OpCodes.Stind_I2;
+			case Code.Stind_I4 : return OpCodes.Stind_I4;
+			case Code.Stind_I8 : return OpCodes.Stind_I8;
+			case Code.Stind_R4 : return OpCodes.Stind_R4;
+			case Code.Stind_R8 : return OpCodes.Stind_R8;
+			case Code.Add : return OpCodes.Add;
+			case Code.Sub : return OpCodes.Sub;
+			case Code.Mul : return OpCodes.Mul;
+			case Code.Div : return OpCodes.Div;
+			case Code.Div_Un : return OpCodes.Div_Un;
+			case Code.Rem : return OpCodes.Rem;
+			case Code.Rem_Un : return OpCodes.Rem_Un;
+			case Code.And : return OpCodes.And;
+			case Code.Or : return OpCodes.Or;
+			case Code.Xor : return OpCodes.Xor;
+			case Code.Shl : return OpCodes.Shl;
+			case Code.Shr : return OpCodes.Shr;
+			case Code.Shr_Un : return OpCodes.Shr_Un;
+			case Code.Neg : return OpCodes.Neg;
+			case Code.Not : return OpCodes.Not;
+			case Code.Conv_I1 : return OpCodes.Conv_I1;
+			case Code.Conv_I2 : return OpCodes.Conv_I2;
+			case Code.Conv_I4 : return OpCodes.Conv_I4;
+			case Code.Conv_I8 : return OpCodes.Conv_I8;
+			case Code.Conv_R4 : return OpCodes.Conv_R4;
+			case Code.Conv_R8 : return OpCodes.Conv_R8;
+			case Code.Conv_U4 : return OpCodes.Conv_U4;
+			case Code.Conv_U8 : return OpCodes.Conv_U8;
+			case Code.Callvirt : return OpCodes.Callvirt;
+			case Code.Cpobj : return OpCodes.Cpobj;
+			case Code.Ldobj : return OpCodes.Ldobj;
+			case Code.Ldstr : return OpCodes.Ldstr;
+			case Code.Newobj : return OpCodes.Newobj;
+			case Code.Castclass : return OpCodes.Castclass;
+			case Code.Isinst : return OpCodes.Isinst;
+			case Code.Conv_R_Un : return OpCodes.Conv_R_Un;
+			case Code.Unbox : return OpCodes.Unbox;
+			case Code.Throw : return OpCodes.Throw;
+			case Code.Ldfld : return OpCodes.Ldfld;
+			case Code.Ldflda : return OpCodes.Ldflda;
+			case Code.Stfld : return OpCodes.Stfld;
+			case Code.Ldsfld : return OpCodes.Ldsfld;
+			case Code.Ldsflda : return OpCodes.Ldsflda;
+			case Code.Stsfld : return OpCodes.Stsfld;
+			case Code.Stobj : return OpCodes.Stobj;
+			case Code.Conv_Ovf_I1_Un : return OpCodes.Conv_Ovf_I1_Un;
+			case Code.Conv_Ovf_I2_Un : return OpCodes.Conv_Ovf_I2_Un;
+			case Code.Conv_Ovf_I4_Un : return OpCodes.Conv_Ovf_I4_Un;
+			case Code.Conv_Ovf_I8_Un : return OpCodes.Conv_Ovf_I8_Un;
+			case Code.Conv_Ovf_U1_Un : return OpCodes.Conv_Ovf_U1_Un;
+			case Code.Conv_Ovf_U2_Un : return OpCodes.Conv_Ovf_U2_Un;
+			case Code.Conv_Ovf_U4_Un : return OpCodes.Conv_Ovf_U4_Un;
+			case Code.Conv_Ovf_U8_Un : return OpCodes.Conv_Ovf_U8_Un;
+			case Code.Conv_Ovf_I_Un : return OpCodes.Conv_Ovf_I_Un;
+			case Code.Conv_Ovf_U_Un : return OpCodes.Conv_Ovf_U_Un;
+			case Code.Box : return OpCodes.Box;
+			case Code.Newarr : return OpCodes.Newarr;
+			case Code.Ldlen : return OpCodes.Ldlen;
+			case Code.Ldelema : return OpCodes.Ldelema;
+			case Code.Ldelem_I1 : return OpCodes.Ldelem_I1;
+			case Code.Ldelem_U1 : return OpCodes.Ldelem_U1;
+			case Code.Ldelem_I2 : return OpCodes.Ldelem_I2;
+			case Code.Ldelem_U2 : return OpCodes.Ldelem_U2;
+			case Code.Ldelem_I4 : return OpCodes.Ldelem_I4;
+			case Code.Ldelem_U4 : return OpCodes.Ldelem_U4;
+			case Code.Ldelem_I8 : return OpCodes.Ldelem_I8;
+			case Code.Ldelem_I : return OpCodes.Ldelem_I;
+			case Code.Ldelem_R4 : return OpCodes.Ldelem_R4;
+			case Code.Ldelem_R8 : return OpCodes.Ldelem_R8;
+			case Code.Ldelem_Ref : return OpCodes.Ldelem_Ref;
+			case Code.Stelem_I : return OpCodes.Stelem_I;
+			case Code.Stelem_I1 : return OpCodes.Stelem_I1;
+			case Code.Stelem_I2 : return OpCodes.Stelem_I2;
+			case Code.Stelem_I4 : return OpCodes.Stelem_I4;
+			case Code.Stelem_I8 : return OpCodes.Stelem_I8;
+			case Code.Stelem_R4 : return OpCodes.Stelem_R4;
+			case Code.Stelem_R8 : return OpCodes.Stelem_R8;
+			case Code.Stelem_Ref : return OpCodes.Stelem_Ref;
+			case Code.Ldelem_Any : return OpCodes.Ldelem_Any;
+			case Code.Stelem_Any : return OpCodes.Stelem_Any;
+			case Code.Unbox_Any : return OpCodes.Unbox_Any;
+			case Code.Conv_Ovf_I1 : return OpCodes.Conv_Ovf_I1;
+			case Code.Conv_Ovf_U1 : return OpCodes.Conv_Ovf_U1;
+			case Code.Conv_Ovf_I2 : return OpCodes.Conv_Ovf_I2;
+			case Code.Conv_Ovf_U2 : return OpCodes.Conv_Ovf_U2;
+			case Code.Conv_Ovf_I4 : return OpCodes.Conv_Ovf_I4;
+			case Code.Conv_Ovf_U4 : return OpCodes.Conv_Ovf_U4;
+			case Code.Conv_Ovf_I8 : return OpCodes.Conv_Ovf_I8;
+			case Code.Conv_Ovf_U8 : return OpCodes.Conv_Ovf_U8;
+			case Code.Refanyval : return OpCodes.Refanyval;
+			case Code.Ckfinite : return OpCodes.Ckfinite;
+			case Code.Mkrefany : return OpCodes.Mkrefany;
+			case Code.Ldtoken : return OpCodes.Ldtoken;
+			case Code.Conv_U2 : return OpCodes.Conv_U2;
+			case Code.Conv_U1 : return OpCodes.Conv_U1;
+			case Code.Conv_I : return OpCodes.Conv_I;
+			case Code.Conv_Ovf_I : return OpCodes.Conv_Ovf_I;
+			case Code.Conv_Ovf_U : return OpCodes.Conv_Ovf_U;
+			case Code.Add_Ovf : return OpCodes.Add_Ovf;
+			case Code.Add_Ovf_Un : return OpCodes.Add_Ovf_Un;
+			case Code.Mul_Ovf : return OpCodes.Mul_Ovf;
+			case Code.Mul_Ovf_Un : return OpCodes.Mul_Ovf_Un;
+			case Code.Sub_Ovf : return OpCodes.Sub_Ovf;
+			case Code.Sub_Ovf_Un : return OpCodes.Sub_Ovf_Un;
+			case Code.Endfinally : return OpCodes.Endfinally;
+			case Code.Leave : return OpCodes.Leave;
+			case Code.Leave_S : return OpCodes.Leave_S;
+			case Code.Stind_I : return OpCodes.Stind_I;
+			case Code.Conv_U : return OpCodes.Conv_U;
+			case Code.Arglist : return OpCodes.Arglist;
+			case Code.Ceq : return OpCodes.Ceq;
+			case Code.Cgt : return OpCodes.Cgt;
+			case Code.Cgt_Un : return OpCodes.Cgt_Un;
+			case Code.Clt : return OpCodes.Clt;
+			case Code.Clt_Un : return OpCodes.Clt_Un;
+			case Code.Ldftn : return OpCodes.Ldftn;
+			case Code.Ldvirtftn : return OpCodes.Ldvirtftn;
+			case Code.Ldarg : return OpCodes.Ldarg;
+			case Code.Ldarga : return OpCodes.Ldarga;
+			case Code.Starg : return OpCodes.Starg;
+			case Code.Ldloc : return OpCodes.Ldloc;
+			case Code.Ldloca : return OpCodes.Ldloca;
+			case Code.Stloc : return OpCodes.Stloc;
+			case Code.Localloc : return OpCodes.Localloc;
+			case Code.Endfilter : return OpCodes.Endfilter;
+			case Code.Unaligned : return OpCodes.Unaligned;
+			case Code.Volatile : return OpCodes.Volatile;
+			case Code.Tail : return OpCodes.Tail;
+			case Code.Initobj : return OpCodes.Initobj;
+			case Code.Constrained : return OpCodes.Constrained;
+			case Code.Cpblk : return OpCodes.Cpblk;
+			case Code.Initblk : return OpCodes.Initblk;
+			case Code.No : return OpCodes.No;
+			case Code.Rethrow : return OpCodes.Rethrow;
+			case Code.Sizeof : return OpCodes.Sizeof;
+			case Code.Refanytype : return OpCodes.Refanytype;
+			case Code.Readonly : return OpCodes.Readonly;
+			default : return OpCodes.Nop;
+			}
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/OperandType.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/OperandType.cs
new file mode 100644
index 0000000..9284ae6
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Cil/OperandType.cs
@@ -0,0 +1,53 @@
+//
+// OperandType.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+	internal enum OperandType {
+		InlineBrTarget,
+		InlineField,
+		InlineI,
+		InlineI8,
+		InlineMethod,
+		InlineNone,
+		InlinePhi,
+		InlineR,
+		InlineSig,
+		InlineString,
+		InlineSwitch,
+		InlineTok,
+		InlineType,
+		InlineVar,
+		InlineParam,
+		ShortInlineBrTarget,
+		ShortInlineI,
+		ShortInlineR,
+		ShortInlineVar,
+		ShortInlineParam
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/Scope.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/Scope.cs
new file mode 100644
index 0000000..d941cc0
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Cil/Scope.cs
@@ -0,0 +1,79 @@
+//
+// Scope.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2006 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+	internal class Scope : IScopeProvider, IVariableDefinitionProvider, ICodeVisitable {
+
+		Instruction m_start;
+		Instruction m_end;
+
+		Scope m_parent;
+		ScopeCollection m_scopes;
+
+		VariableDefinitionCollection m_variables;
+
+		public Instruction Start {
+			get { return m_start; }
+			set { m_start = value; }
+		}
+
+		public Instruction End {
+			get { return m_end; }
+			set { m_end = value; }
+		}
+
+		public Scope Parent {
+			get { return m_parent; }
+			set { m_parent = value; }
+		}
+
+		public ScopeCollection Scopes {
+			get {
+				if (m_scopes == null)
+					m_scopes = new ScopeCollection (this);
+
+				return m_scopes;
+			}
+		}
+
+		public VariableDefinitionCollection Variables {
+			get {
+				if (m_variables == null)
+					m_variables = new VariableDefinitionCollection (this);
+
+				return m_variables;
+			}
+		}
+
+		public void Accept (ICodeVisitor visitor)
+		{
+			visitor.VisitScope (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/ScopeCollection.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/ScopeCollection.cs
new file mode 100644
index 0000000..b9eda34
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Cil/ScopeCollection.cs
@@ -0,0 +1,93 @@
+//
+// ScopeCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Wed Sep 27 12:46:54 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+	using System;
+	using System.Collections;
+
+	using Mono.Cecil.Cil;
+
+	internal sealed class ScopeCollection : CollectionBase, ICodeVisitable {
+
+		IScopeProvider m_container;
+
+		public Scope this [int index] {
+			get { return List [index] as Scope; }
+			set { List [index] = value; }
+		}
+
+		public IScopeProvider Container {
+			get { return m_container; }
+		}
+
+		public ScopeCollection (IScopeProvider container)
+		{
+			m_container = container;
+		}
+
+		public void Add (Scope value)
+		{
+			List.Add (value);
+		}
+
+		public bool Contains (Scope value)
+		{
+			return List.Contains (value);
+		}
+
+		public int IndexOf (Scope value)
+		{
+			return List.IndexOf (value);
+		}
+
+		public void Insert (int index, Scope value)
+		{
+			List.Insert (index, value);
+		}
+
+		public void Remove (Scope value)
+		{
+			List.Remove (value);
+		}
+
+		protected override void OnValidate (object o)
+		{
+			if (! (o is Scope))
+				throw new ArgumentException ("Must be of type " + typeof (Scope).FullName);
+		}
+
+		public void Accept (ICodeVisitor visitor)
+		{
+			visitor.VisitScopeCollection (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/SequencePoint.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/SequencePoint.cs
new file mode 100644
index 0000000..0704756
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Cil/SequencePoint.cs
@@ -0,0 +1,78 @@
+//
+// SequencePoint.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2006 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+	internal class SequencePoint {
+
+		Document m_document;
+
+		int m_startLine;
+		int m_startColumn;
+		int m_endLine;
+		int m_endColumn;
+
+		public int StartLine {
+			get { return m_startLine; }
+			set { m_startLine = value; }
+		}
+
+		public int StartColumn {
+			get { return m_startColumn; }
+			set { m_startColumn = value; }
+		}
+
+		public int EndLine {
+			get { return m_endLine; }
+			set { m_endLine = value; }
+		}
+
+		public int EndColumn {
+			get { return m_endColumn; }
+			set { m_endColumn = value; }
+		}
+
+		public Document Document {
+			get { return m_document; }
+			set { m_document = value; }
+		}
+
+		public SequencePoint (Document document)
+		{
+			m_document = document;
+		}
+
+		public SequencePoint (Document doc, int startLine, int startCol, int endLine, int endCol) : this (doc)
+		{
+			m_startLine = startLine;
+			m_startColumn = startCol;
+			m_endLine = endLine;
+			m_endColumn = endCol;
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/StackBehaviour.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/StackBehaviour.cs
new file mode 100644
index 0000000..91c0eba
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Cil/StackBehaviour.cs
@@ -0,0 +1,62 @@
+//
+// StackBehaviour.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+	internal enum StackBehaviour {
+		Pop0,
+		Pop1,
+		Pop1_pop1,
+		Popi,
+		Popi_pop1,
+		Popi_popi,
+		Popi_popi8,
+		Popi_popi_popi,
+		Popi_popr4,
+		Popi_popr8,
+		Popref,
+		Popref_pop1,
+		Popref_popi,
+		Popref_popi_popi,
+		Popref_popi_popi8,
+		Popref_popi_popr4,
+		Popref_popi_popr8,
+		Popref_popi_popref,
+		PopAll,
+		Push0,
+		Push1,
+		Push1_push1,
+		Pushi,
+		Pushi8,
+		Pushr4,
+		Pushr8,
+		Pushref,
+		Varpop,
+		Varpush
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Cil/SymbolStoreHelper.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/SymbolStoreHelper.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil.Cil/SymbolStoreHelper.cs
rename to mcs/tools/cil-strip/Mono.Cecil.Cil/SymbolStoreHelper.cs
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/VariableDefinition.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/VariableDefinition.cs
new file mode 100644
index 0000000..74c1c4d
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Cil/VariableDefinition.cs
@@ -0,0 +1,60 @@
+//
+// VariableDefinition.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+	internal sealed class VariableDefinition : VariableReference {
+
+		MethodDefinition m_method;
+
+		public MethodDefinition Method {
+			get { return m_method; }
+			set { m_method = value; }
+		}
+
+		public VariableDefinition (TypeReference variableType) : base (variableType)
+		{
+		}
+
+		public VariableDefinition (string name, int index, MethodDefinition method, TypeReference variableType) :
+			base (name, index, variableType)
+		{
+			m_method = method;
+		}
+
+		public override VariableDefinition Resolve ()
+		{
+			return this;
+		}
+
+		public override void Accept (ICodeVisitor visitor)
+		{
+			visitor.VisitVariableDefinition (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/VariableDefinitionCollection.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/VariableDefinitionCollection.cs
new file mode 100644
index 0000000..6f01604
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Cil/VariableDefinitionCollection.cs
@@ -0,0 +1,93 @@
+//
+// VariableDefinitionCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Wed Sep 27 12:46:53 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+	using System;
+	using System.Collections;
+
+	using Mono.Cecil.Cil;
+
+	internal sealed class VariableDefinitionCollection : CollectionBase, ICodeVisitable {
+
+		IVariableDefinitionProvider m_container;
+
+		public VariableDefinition this [int index] {
+			get { return List [index] as VariableDefinition; }
+			set { List [index] = value; }
+		}
+
+		public IVariableDefinitionProvider Container {
+			get { return m_container; }
+		}
+
+		public VariableDefinitionCollection (IVariableDefinitionProvider container)
+		{
+			m_container = container;
+		}
+
+		public void Add (VariableDefinition value)
+		{
+			List.Add (value);
+		}
+
+		public bool Contains (VariableDefinition value)
+		{
+			return List.Contains (value);
+		}
+
+		public int IndexOf (VariableDefinition value)
+		{
+			return List.IndexOf (value);
+		}
+
+		public void Insert (int index, VariableDefinition value)
+		{
+			List.Insert (index, value);
+		}
+
+		public void Remove (VariableDefinition value)
+		{
+			List.Remove (value);
+		}
+
+		protected override void OnValidate (object o)
+		{
+			if (! (o is VariableDefinition))
+				throw new ArgumentException ("Must be of type " + typeof (VariableDefinition).FullName);
+		}
+
+		public void Accept (ICodeVisitor visitor)
+		{
+			visitor.VisitVariableDefinitionCollection (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Cil/VariableReference.cs b/mcs/tools/cil-strip/Mono.Cecil.Cil/VariableReference.cs
new file mode 100644
index 0000000..a8cace1
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Cil/VariableReference.cs
@@ -0,0 +1,75 @@
+//
+// VariableReference.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Cil {
+
+	internal abstract class VariableReference : ICodeVisitable {
+
+		string m_name;
+		int m_index;
+		TypeReference m_variableType;
+
+		public string Name {
+			get { return m_name; }
+			set { m_name = value; }
+		}
+
+		public int Index {
+			get { return m_index; }
+			set { m_index = value; }
+		}
+
+		public TypeReference VariableType {
+			get { return m_variableType; }
+			set { m_variableType = value; }
+		}
+
+		public VariableReference (TypeReference variableType)
+		{
+			m_variableType = variableType;
+		}
+
+		public VariableReference (string name, int index, TypeReference variableType) : this (variableType)
+		{
+			m_name = name;
+			m_index = index;
+		}
+
+		public abstract VariableDefinition Resolve ();
+
+		public override string ToString ()
+		{
+			if (m_name != null && m_name.Length > 0)
+				return m_name;
+
+			return string.Concat ("V_", m_index);
+		}
+
+		public abstract void Accept (ICodeVisitor visitor);
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/Assembly.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/Assembly.cs
new file mode 100644
index 0000000..d72fdab
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/Assembly.cs
@@ -0,0 +1,88 @@
+//
+// AssemblyTable.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:25 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	using Mono.Cecil;
+
+	internal sealed class AssemblyTable : IMetadataTable {
+
+		public const int RId = 0x20;
+
+		RowCollection m_rows;
+
+		public AssemblyRow this [int index] {
+			get { return m_rows [index] as AssemblyRow; }
+			set { m_rows [index] = value; }
+		}
+
+		public RowCollection Rows {
+			get { return m_rows; }
+			set { m_rows = value; }
+		}
+
+		public int Id {
+			get { return RId; }
+		}
+
+		internal AssemblyTable ()
+		{
+		}
+
+		public void Accept (IMetadataTableVisitor visitor)
+		{
+			visitor.VisitAssemblyTable (this);
+			this.Rows.Accept (visitor.GetRowVisitor ());
+		}
+	}
+
+	internal sealed class AssemblyRow : IMetadataRow {
+
+		public AssemblyHashAlgorithm HashAlgId;
+		public ushort MajorVersion;
+		public ushort MinorVersion;
+		public ushort BuildNumber;
+		public ushort RevisionNumber;
+		public AssemblyFlags Flags;
+		public uint PublicKey;
+		public uint Name;
+		public uint Culture;
+
+		internal AssemblyRow ()
+		{
+		}
+
+		public void Accept (IMetadataRowVisitor visitor)
+		{
+			visitor.VisitAssemblyRow (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/AssemblyOS.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/AssemblyOS.cs
new file mode 100644
index 0000000..a87ce94
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/AssemblyOS.cs
@@ -0,0 +1,80 @@
+//
+// AssemblyOSTable.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:25 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	internal sealed class AssemblyOSTable : IMetadataTable {
+
+		public const int RId = 0x22;
+
+		RowCollection m_rows;
+
+		public AssemblyOSRow this [int index] {
+			get { return m_rows [index] as AssemblyOSRow; }
+			set { m_rows [index] = value; }
+		}
+
+		public RowCollection Rows {
+			get { return m_rows; }
+			set { m_rows = value; }
+		}
+
+		public int Id {
+			get { return RId; }
+		}
+
+		internal AssemblyOSTable ()
+		{
+		}
+
+		public void Accept (IMetadataTableVisitor visitor)
+		{
+			visitor.VisitAssemblyOSTable (this);
+			this.Rows.Accept (visitor.GetRowVisitor ());
+		}
+	}
+
+	internal sealed class AssemblyOSRow : IMetadataRow {
+
+		public uint OSPlatformID;
+		public uint OSMajorVersion;
+		public uint OSMinorVersion;
+
+		internal AssemblyOSRow ()
+		{
+		}
+
+		public void Accept (IMetadataRowVisitor visitor)
+		{
+			visitor.VisitAssemblyOSRow (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/AssemblyProcessor.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/AssemblyProcessor.cs
new file mode 100644
index 0000000..f46d227
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/AssemblyProcessor.cs
@@ -0,0 +1,78 @@
+//
+// AssemblyProcessorTable.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:25 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	internal sealed class AssemblyProcessorTable : IMetadataTable {
+
+		public const int RId = 0x21;
+
+		RowCollection m_rows;
+
+		public AssemblyProcessorRow this [int index] {
+			get { return m_rows [index] as AssemblyProcessorRow; }
+			set { m_rows [index] = value; }
+		}
+
+		public RowCollection Rows {
+			get { return m_rows; }
+			set { m_rows = value; }
+		}
+
+		public int Id {
+			get { return RId; }
+		}
+
+		internal AssemblyProcessorTable ()
+		{
+		}
+
+		public void Accept (IMetadataTableVisitor visitor)
+		{
+			visitor.VisitAssemblyProcessorTable (this);
+			this.Rows.Accept (visitor.GetRowVisitor ());
+		}
+	}
+
+	internal sealed class AssemblyProcessorRow : IMetadataRow {
+
+		public uint Processor;
+
+		internal AssemblyProcessorRow ()
+		{
+		}
+
+		public void Accept (IMetadataRowVisitor visitor)
+		{
+			visitor.VisitAssemblyProcessorRow (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/AssemblyRef.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/AssemblyRef.cs
new file mode 100644
index 0000000..9dbff40
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/AssemblyRef.cs
@@ -0,0 +1,88 @@
+//
+// AssemblyRefTable.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:25 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	using Mono.Cecil;
+
+	internal sealed class AssemblyRefTable : IMetadataTable {
+
+		public const int RId = 0x23;
+
+		RowCollection m_rows;
+
+		public AssemblyRefRow this [int index] {
+			get { return m_rows [index] as AssemblyRefRow; }
+			set { m_rows [index] = value; }
+		}
+
+		public RowCollection Rows {
+			get { return m_rows; }
+			set { m_rows = value; }
+		}
+
+		public int Id {
+			get { return RId; }
+		}
+
+		internal AssemblyRefTable ()
+		{
+		}
+
+		public void Accept (IMetadataTableVisitor visitor)
+		{
+			visitor.VisitAssemblyRefTable (this);
+			this.Rows.Accept (visitor.GetRowVisitor ());
+		}
+	}
+
+	internal sealed class AssemblyRefRow : IMetadataRow {
+
+		public ushort MajorVersion;
+		public ushort MinorVersion;
+		public ushort BuildNumber;
+		public ushort RevisionNumber;
+		public AssemblyFlags Flags;
+		public uint PublicKeyOrToken;
+		public uint Name;
+		public uint Culture;
+		public uint HashValue;
+
+		internal AssemblyRefRow ()
+		{
+		}
+
+		public void Accept (IMetadataRowVisitor visitor)
+		{
+			visitor.VisitAssemblyRefRow (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/AssemblyRefOS.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/AssemblyRefOS.cs
new file mode 100644
index 0000000..858651d
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/AssemblyRefOS.cs
@@ -0,0 +1,81 @@
+//
+// AssemblyRefOSTable.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:25 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	internal sealed class AssemblyRefOSTable : IMetadataTable {
+
+		public const int RId = 0x25;
+
+		RowCollection m_rows;
+
+		public AssemblyRefOSRow this [int index] {
+			get { return m_rows [index] as AssemblyRefOSRow; }
+			set { m_rows [index] = value; }
+		}
+
+		public RowCollection Rows {
+			get { return m_rows; }
+			set { m_rows = value; }
+		}
+
+		public int Id {
+			get { return RId; }
+		}
+
+		internal AssemblyRefOSTable ()
+		{
+		}
+
+		public void Accept (IMetadataTableVisitor visitor)
+		{
+			visitor.VisitAssemblyRefOSTable (this);
+			this.Rows.Accept (visitor.GetRowVisitor ());
+		}
+	}
+
+	internal sealed class AssemblyRefOSRow : IMetadataRow {
+
+		public uint OSPlatformID;
+		public uint OSMajorVersion;
+		public uint OSMinorVersion;
+		public uint AssemblyRef;
+
+		internal AssemblyRefOSRow ()
+		{
+		}
+
+		public void Accept (IMetadataRowVisitor visitor)
+		{
+			visitor.VisitAssemblyRefOSRow (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/AssemblyRefProcessor.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/AssemblyRefProcessor.cs
new file mode 100644
index 0000000..744a356
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/AssemblyRefProcessor.cs
@@ -0,0 +1,79 @@
+//
+// AssemblyRefProcessorTable.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:25 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	internal sealed class AssemblyRefProcessorTable : IMetadataTable {
+
+		public const int RId = 0x24;
+
+		RowCollection m_rows;
+
+		public AssemblyRefProcessorRow this [int index] {
+			get { return m_rows [index] as AssemblyRefProcessorRow; }
+			set { m_rows [index] = value; }
+		}
+
+		public RowCollection Rows {
+			get { return m_rows; }
+			set { m_rows = value; }
+		}
+
+		public int Id {
+			get { return RId; }
+		}
+
+		internal AssemblyRefProcessorTable ()
+		{
+		}
+
+		public void Accept (IMetadataTableVisitor visitor)
+		{
+			visitor.VisitAssemblyRefProcessorTable (this);
+			this.Rows.Accept (visitor.GetRowVisitor ());
+		}
+	}
+
+	internal sealed class AssemblyRefProcessorRow : IMetadataRow {
+
+		public uint Processor;
+		public uint AssemblyRef;
+
+		internal AssemblyRefProcessorRow ()
+		{
+		}
+
+		public void Accept (IMetadataRowVisitor visitor)
+		{
+			visitor.VisitAssemblyRefProcessorRow (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/BaseMetadataVisitor.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/BaseMetadataVisitor.cs
new file mode 100644
index 0000000..7a1baf6
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/BaseMetadataVisitor.cs
@@ -0,0 +1,448 @@
+//
+// BaseMetadataVisitor.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Thu Feb 22 14:39:38 CET 2007
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	internal abstract class BaseMetadataVisitor : IMetadataVisitor {
+
+		public virtual void VisitMetadataRoot (MetadataRoot root)
+		{
+		}
+
+		public virtual void VisitMetadataRootHeader (MetadataRoot.MetadataRootHeader header)
+		{
+		}
+
+		public virtual void VisitMetadataStreamCollection (MetadataStreamCollection streams)
+		{
+		}
+
+		public virtual void VisitMetadataStream (MetadataStream stream)
+		{
+		}
+
+		public virtual void VisitMetadataStreamHeader (MetadataStream.MetadataStreamHeader header)
+		{
+		}
+
+		public virtual void VisitGuidHeap (GuidHeap heap)
+		{
+		}
+
+		public virtual void VisitStringsHeap (StringsHeap heap)
+		{
+		}
+
+		public virtual void VisitTablesHeap (TablesHeap heap)
+		{
+		}
+
+		public virtual void VisitBlobHeap (BlobHeap heap)
+		{
+		}
+
+		public virtual void VisitUserStringsHeap (UserStringsHeap heap)
+		{
+		}
+
+		public virtual void TerminateMetadataRoot (MetadataRoot root)
+		{
+		}
+	}
+
+	internal abstract class BaseMetadataTableVisitor : IMetadataTableVisitor {
+
+		public virtual void VisitTableCollection (TableCollection coll)
+		{
+		}
+
+		public virtual void VisitAssemblyTable (AssemblyTable table)
+		{
+		}
+
+		public virtual void VisitAssemblyOSTable (AssemblyOSTable table)
+		{
+		}
+
+		public virtual void VisitAssemblyProcessorTable (AssemblyProcessorTable table)
+		{
+		}
+
+		public virtual void VisitAssemblyRefTable (AssemblyRefTable table)
+		{
+		}
+
+		public virtual void VisitAssemblyRefOSTable (AssemblyRefOSTable table)
+		{
+		}
+
+		public virtual void VisitAssemblyRefProcessorTable (AssemblyRefProcessorTable table)
+		{
+		}
+
+		public virtual void VisitClassLayoutTable (ClassLayoutTable table)
+		{
+		}
+
+		public virtual void VisitConstantTable (ConstantTable table)
+		{
+		}
+
+		public virtual void VisitCustomAttributeTable (CustomAttributeTable table)
+		{
+		}
+
+		public virtual void VisitDeclSecurityTable (DeclSecurityTable table)
+		{
+		}
+
+		public virtual void VisitEventTable (EventTable table)
+		{
+		}
+
+		public virtual void VisitEventMapTable (EventMapTable table)
+		{
+		}
+
+		public virtual void VisitEventPtrTable (EventPtrTable table)
+		{
+		}
+
+		public virtual void VisitExportedTypeTable (ExportedTypeTable table)
+		{
+		}
+
+		public virtual void VisitFieldTable (FieldTable table)
+		{
+		}
+
+		public virtual void VisitFieldLayoutTable (FieldLayoutTable table)
+		{
+		}
+
+		public virtual void VisitFieldMarshalTable (FieldMarshalTable table)
+		{
+		}
+
+		public virtual void VisitFieldPtrTable (FieldPtrTable table)
+		{
+		}
+
+		public virtual void VisitFieldRVATable (FieldRVATable table)
+		{
+		}
+
+		public virtual void VisitFileTable (FileTable table)
+		{
+		}
+
+		public virtual void VisitGenericParamTable (GenericParamTable table)
+		{
+		}
+
+		public virtual void VisitGenericParamConstraintTable (GenericParamConstraintTable table)
+		{
+		}
+
+		public virtual void VisitImplMapTable (ImplMapTable table)
+		{
+		}
+
+		public virtual void VisitInterfaceImplTable (InterfaceImplTable table)
+		{
+		}
+
+		public virtual void VisitManifestResourceTable (ManifestResourceTable table)
+		{
+		}
+
+		public virtual void VisitMemberRefTable (MemberRefTable table)
+		{
+		}
+
+		public virtual void VisitMethodTable (MethodTable table)
+		{
+		}
+
+		public virtual void VisitMethodImplTable (MethodImplTable table)
+		{
+		}
+
+		public virtual void VisitMethodPtrTable (MethodPtrTable table)
+		{
+		}
+
+		public virtual void VisitMethodSemanticsTable (MethodSemanticsTable table)
+		{
+		}
+
+		public virtual void VisitMethodSpecTable (MethodSpecTable table)
+		{
+		}
+
+		public virtual void VisitModuleTable (ModuleTable table)
+		{
+		}
+
+		public virtual void VisitModuleRefTable (ModuleRefTable table)
+		{
+		}
+
+		public virtual void VisitNestedClassTable (NestedClassTable table)
+		{
+		}
+
+		public virtual void VisitParamTable (ParamTable table)
+		{
+		}
+
+		public virtual void VisitParamPtrTable (ParamPtrTable table)
+		{
+		}
+
+		public virtual void VisitPropertyTable (PropertyTable table)
+		{
+		}
+
+		public virtual void VisitPropertyMapTable (PropertyMapTable table)
+		{
+		}
+
+		public virtual void VisitPropertyPtrTable (PropertyPtrTable table)
+		{
+		}
+
+		public virtual void VisitStandAloneSigTable (StandAloneSigTable table)
+		{
+		}
+
+		public virtual void VisitTypeDefTable (TypeDefTable table)
+		{
+		}
+
+		public virtual void VisitTypeRefTable (TypeRefTable table)
+		{
+		}
+
+		public virtual void VisitTypeSpecTable (TypeSpecTable table)
+		{
+		}
+
+		public virtual void TerminateTableCollection (TableCollection coll)
+		{
+		}
+
+		public abstract IMetadataRowVisitor GetRowVisitor();
+	}
+
+	internal abstract class BaseMetadataRowVisitor : IMetadataRowVisitor {
+
+		public virtual void VisitRowCollection (RowCollection coll)
+		{
+		}
+
+		public virtual void VisitAssemblyRow (AssemblyRow row)
+		{
+		}
+
+		public virtual void VisitAssemblyOSRow (AssemblyOSRow row)
+		{
+		}
+
+		public virtual void VisitAssemblyProcessorRow (AssemblyProcessorRow row)
+		{
+		}
+
+		public virtual void VisitAssemblyRefRow (AssemblyRefRow row)
+		{
+		}
+
+		public virtual void VisitAssemblyRefOSRow (AssemblyRefOSRow row)
+		{
+		}
+
+		public virtual void VisitAssemblyRefProcessorRow (AssemblyRefProcessorRow row)
+		{
+		}
+
+		public virtual void VisitClassLayoutRow (ClassLayoutRow row)
+		{
+		}
+
+		public virtual void VisitConstantRow (ConstantRow row)
+		{
+		}
+
+		public virtual void VisitCustomAttributeRow (CustomAttributeRow row)
+		{
+		}
+
+		public virtual void VisitDeclSecurityRow (DeclSecurityRow row)
+		{
+		}
+
+		public virtual void VisitEventRow (EventRow row)
+		{
+		}
+
+		public virtual void VisitEventMapRow (EventMapRow row)
+		{
+		}
+
+		public virtual void VisitEventPtrRow (EventPtrRow row)
+		{
+		}
+
+		public virtual void VisitExportedTypeRow (ExportedTypeRow row)
+		{
+		}
+
+		public virtual void VisitFieldRow (FieldRow row)
+		{
+		}
+
+		public virtual void VisitFieldLayoutRow (FieldLayoutRow row)
+		{
+		}
+
+		public virtual void VisitFieldMarshalRow (FieldMarshalRow row)
+		{
+		}
+
+		public virtual void VisitFieldPtrRow (FieldPtrRow row)
+		{
+		}
+
+		public virtual void VisitFieldRVARow (FieldRVARow row)
+		{
+		}
+
+		public virtual void VisitFileRow (FileRow row)
+		{
+		}
+
+		public virtual void VisitGenericParamRow (GenericParamRow row)
+		{
+		}
+
+		public virtual void VisitGenericParamConstraintRow (GenericParamConstraintRow row)
+		{
+		}
+
+		public virtual void VisitImplMapRow (ImplMapRow row)
+		{
+		}
+
+		public virtual void VisitInterfaceImplRow (InterfaceImplRow row)
+		{
+		}
+
+		public virtual void VisitManifestResourceRow (ManifestResourceRow row)
+		{
+		}
+
+		public virtual void VisitMemberRefRow (MemberRefRow row)
+		{
+		}
+
+		public virtual void VisitMethodRow (MethodRow row)
+		{
+		}
+
+		public virtual void VisitMethodImplRow (MethodImplRow row)
+		{
+		}
+
+		public virtual void VisitMethodPtrRow (MethodPtrRow row)
+		{
+		}
+
+		public virtual void VisitMethodSemanticsRow (MethodSemanticsRow row)
+		{
+		}
+
+		public virtual void VisitMethodSpecRow (MethodSpecRow row)
+		{
+		}
+
+		public virtual void VisitModuleRow (ModuleRow row)
+		{
+		}
+
+		public virtual void VisitModuleRefRow (ModuleRefRow row)
+		{
+		}
+
+		public virtual void VisitNestedClassRow (NestedClassRow row)
+		{
+		}
+
+		public virtual void VisitParamRow (ParamRow row)
+		{
+		}
+
+		public virtual void VisitParamPtrRow (ParamPtrRow row)
+		{
+		}
+
+		public virtual void VisitPropertyRow (PropertyRow row)
+		{
+		}
+
+		public virtual void VisitPropertyMapRow (PropertyMapRow row)
+		{
+		}
+
+		public virtual void VisitPropertyPtrRow (PropertyPtrRow row)
+		{
+		}
+
+		public virtual void VisitStandAloneSigRow (StandAloneSigRow row)
+		{
+		}
+
+		public virtual void VisitTypeDefRow (TypeDefRow row)
+		{
+		}
+
+		public virtual void VisitTypeRefRow (TypeRefRow row)
+		{
+		}
+
+		public virtual void VisitTypeSpecRow (TypeSpecRow row)
+		{
+		}
+
+		public virtual void TerminateRowCollection (RowCollection coll)
+		{
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/BlobHeap.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/BlobHeap.cs
new file mode 100644
index 0000000..63adb29
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/BlobHeap.cs
@@ -0,0 +1,90 @@
+//
+// BlobHeap.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	using System;
+	using System.Collections;
+	using System.IO;
+
+	internal class BlobHeap : MetadataHeap {
+
+		internal BlobHeap (MetadataStream stream) : base (stream, MetadataStream.Blob)
+		{
+		}
+
+		public byte [] Read (uint index)
+		{
+			return ReadBytesFromStream (index);
+		}
+
+		public BinaryReader GetReader (uint index)
+		{
+			return new BinaryReader (new MemoryStream (Read (index)));
+		}
+
+		public override void Accept (IMetadataVisitor visitor)
+		{
+			visitor.VisitBlobHeap (this);
+		}
+	}
+
+	class ByteArrayEqualityComparer : IHashCodeProvider, IComparer {
+
+		public static readonly ByteArrayEqualityComparer Instance = new ByteArrayEqualityComparer ();
+
+		public int GetHashCode (object obj)
+		{
+			byte [] array = (byte []) obj;
+
+			int hash = 0;
+			for (int i = 0; i < array.Length; i++)
+				hash = (hash * 37) ^ array [i];
+
+			return hash;
+		}
+
+		public int Compare (object a, object b)
+		{
+			byte [] x = (byte []) a;
+			byte [] y = (byte []) b;
+
+			if (x == null || y == null)
+				return x == y ? 0 : 1;
+
+			if (x.Length != y.Length)
+				return 1;
+
+			for (int i = 0; i < x.Length; i++)
+				if (x [i] != y [i])
+					return 1;
+
+			return 0;
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/ClassLayout.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/ClassLayout.cs
new file mode 100644
index 0000000..cb937ec
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/ClassLayout.cs
@@ -0,0 +1,80 @@
+//
+// ClassLayoutTable.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:25 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	internal sealed class ClassLayoutTable : IMetadataTable {
+
+		public const int RId = 0x0f;
+
+		RowCollection m_rows;
+
+		public ClassLayoutRow this [int index] {
+			get { return m_rows [index] as ClassLayoutRow; }
+			set { m_rows [index] = value; }
+		}
+
+		public RowCollection Rows {
+			get { return m_rows; }
+			set { m_rows = value; }
+		}
+
+		public int Id {
+			get { return RId; }
+		}
+
+		internal ClassLayoutTable ()
+		{
+		}
+
+		public void Accept (IMetadataTableVisitor visitor)
+		{
+			visitor.VisitClassLayoutTable (this);
+			this.Rows.Accept (visitor.GetRowVisitor ());
+		}
+	}
+
+	internal sealed class ClassLayoutRow : IMetadataRow {
+
+		public ushort PackingSize;
+		public uint ClassSize;
+		public uint Parent;
+
+		internal ClassLayoutRow ()
+		{
+		}
+
+		public void Accept (IMetadataRowVisitor visitor)
+		{
+			visitor.VisitClassLayoutRow (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/CodedIndex.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/CodedIndex.cs
new file mode 100644
index 0000000..c8e1e1e
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/CodedIndex.cs
@@ -0,0 +1,49 @@
+//
+// CodedIndex.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Mar 20 16:02:16 +0100 2007
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	internal enum CodedIndex {
+		TypeDefOrRef,
+		HasConstant,
+		HasCustomAttribute,
+		HasFieldMarshal,
+		HasDeclSecurity,
+		MemberRefParent,
+		HasSemantics,
+		MethodDefOrRef,
+		MemberForwarded,
+		Implementation,
+		CustomAttributeType,
+		ResolutionScope,
+		TypeOrMethodDef
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/Constant.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/Constant.cs
new file mode 100644
index 0000000..c109fdf
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/Constant.cs
@@ -0,0 +1,80 @@
+//
+// ConstantTable.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:25 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	internal sealed class ConstantTable : IMetadataTable {
+
+		public const int RId = 0x0b;
+
+		RowCollection m_rows;
+
+		public ConstantRow this [int index] {
+			get { return m_rows [index] as ConstantRow; }
+			set { m_rows [index] = value; }
+		}
+
+		public RowCollection Rows {
+			get { return m_rows; }
+			set { m_rows = value; }
+		}
+
+		public int Id {
+			get { return RId; }
+		}
+
+		internal ConstantTable ()
+		{
+		}
+
+		public void Accept (IMetadataTableVisitor visitor)
+		{
+			visitor.VisitConstantTable (this);
+			this.Rows.Accept (visitor.GetRowVisitor ());
+		}
+	}
+
+	internal sealed class ConstantRow : IMetadataRow {
+
+		public ElementType Type;
+		public MetadataToken Parent;
+		public uint Value;
+
+		internal ConstantRow ()
+		{
+		}
+
+		public void Accept (IMetadataRowVisitor visitor)
+		{
+			visitor.VisitConstantRow (this);
+		}
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/CultureUtils.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/CultureUtils.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil.Metadata/CultureUtils.cs
rename to mcs/tools/cil-strip/Mono.Cecil.Metadata/CultureUtils.cs
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/CustomAttribute.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/CustomAttribute.cs
new file mode 100644
index 0000000..ce49b8f
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/CustomAttribute.cs
@@ -0,0 +1,80 @@
+//
+// CustomAttributeTable.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:25 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	internal sealed class CustomAttributeTable : IMetadataTable {
+
+		public const int RId = 0x0c;
+
+		RowCollection m_rows;
+
+		public CustomAttributeRow this [int index] {
+			get { return m_rows [index] as CustomAttributeRow; }
+			set { m_rows [index] = value; }
+		}
+
+		public RowCollection Rows {
+			get { return m_rows; }
+			set { m_rows = value; }
+		}
+
+		public int Id {
+			get { return RId; }
+		}
+
+		internal CustomAttributeTable ()
+		{
+		}
+
+		public void Accept (IMetadataTableVisitor visitor)
+		{
+			visitor.VisitCustomAttributeTable (this);
+			this.Rows.Accept (visitor.GetRowVisitor ());
+		}
+	}
+
+	internal sealed class CustomAttributeRow : IMetadataRow {
+
+		public MetadataToken Parent;
+		public MetadataToken Type;
+		public uint Value;
+
+		internal CustomAttributeRow ()
+		{
+		}
+
+		public void Accept (IMetadataRowVisitor visitor)
+		{
+			visitor.VisitCustomAttributeRow (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/DeclSecurity.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/DeclSecurity.cs
new file mode 100644
index 0000000..78784ad
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/DeclSecurity.cs
@@ -0,0 +1,82 @@
+//
+// DeclSecurityTable.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	using Mono.Cecil;
+
+	internal sealed class DeclSecurityTable : IMetadataTable {
+
+		public const int RId = 0x0e;
+
+		RowCollection m_rows;
+
+		public DeclSecurityRow this [int index] {
+			get { return m_rows [index] as DeclSecurityRow; }
+			set { m_rows [index] = value; }
+		}
+
+		public RowCollection Rows {
+			get { return m_rows; }
+			set { m_rows = value; }
+		}
+
+		public int Id {
+			get { return RId; }
+		}
+
+		internal DeclSecurityTable ()
+		{
+		}
+
+		public void Accept (IMetadataTableVisitor visitor)
+		{
+			visitor.VisitDeclSecurityTable (this);
+			this.Rows.Accept (visitor.GetRowVisitor ());
+		}
+	}
+
+	internal sealed class DeclSecurityRow : IMetadataRow {
+
+		public SecurityAction Action;
+		public MetadataToken Parent;
+		public uint PermissionSet;
+
+		internal DeclSecurityRow ()
+		{
+		}
+
+		public void Accept (IMetadataRowVisitor visitor)
+		{
+			visitor.VisitDeclSecurityRow (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/ElementType.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/ElementType.cs
new file mode 100644
index 0000000..81b1807
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/ElementType.cs
@@ -0,0 +1,73 @@
+//
+// ElementType.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	internal enum ElementType {
+		End		 = 0x00,   // Marks end of a list
+		Void		= 0x01,
+		Boolean	 = 0x02,
+		Char		= 0x03,
+		I1		  = 0x04,
+		U1		  = 0x05,
+		I2		  = 0x06,
+		U2		  = 0x07,
+		I4		  = 0x08,
+		U4		  = 0x09,
+		I8		  = 0x0a,
+		U8		  = 0x0b,
+		R4		  = 0x0c,
+		R8		  = 0x0d,
+		String	  = 0x0e,
+		Ptr		 = 0x0f,   // Followed by <type> token
+		ByRef	   = 0x10,   // Followed by <type> token
+		ValueType   = 0x11,   // Followed by <type> token
+		Class	   = 0x12,   // Followed by <type> token
+		Var        = 0x13,   // Followed by generic parameter number
+		Array	   = 0x14,   // <type> <rank> <boundsCount> <bound1>  <loCount> <lo1>
+		GenericInst = 0x15,   // <type> <type-arg-count> <type-1> ... <type-n> */
+		TypedByRef  = 0x16,
+		I		   = 0x18,   // System.IntPtr
+		U		   = 0x19,   // System.UIntPtr
+		FnPtr	   = 0x1b,   // Followed by full method signature
+		Object	  = 0x1c,   // System.Object
+		SzArray	 = 0x1d,   // Single-dim array with 0 lower bound
+		MVar       = 0x1e,   // Followed by generic parameter number
+		CModReqD	= 0x1f,   // Required modifier : followed by a TypeDef or TypeRef token
+		CModOpt	 = 0x20,   // Optional modifier : followed by a TypeDef or TypeRef token
+		Internal	= 0x21,   // Implemented within the CLI
+		Modifier	= 0x40,   // Or'd with following element types
+		Sentinel	= 0x41,   // Sentinel for varargs method signature
+		Pinned	  = 0x45,   // Denotes a local variable that points at a pinned object
+
+		// special undocumented constants
+		Type		= 0x50,
+		Boxed	   = 0x51,
+		Enum		= 0x55
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/Event.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/Event.cs
new file mode 100644
index 0000000..154134d
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/Event.cs
@@ -0,0 +1,82 @@
+//
+// EventTable.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	using Mono.Cecil;
+
+	internal sealed class EventTable : IMetadataTable {
+
+		public const int RId = 0x14;
+
+		RowCollection m_rows;
+
+		public EventRow this [int index] {
+			get { return m_rows [index] as EventRow; }
+			set { m_rows [index] = value; }
+		}
+
+		public RowCollection Rows {
+			get { return m_rows; }
+			set { m_rows = value; }
+		}
+
+		public int Id {
+			get { return RId; }
+		}
+
+		internal EventTable ()
+		{
+		}
+
+		public void Accept (IMetadataTableVisitor visitor)
+		{
+			visitor.VisitEventTable (this);
+			this.Rows.Accept (visitor.GetRowVisitor ());
+		}
+	}
+
+	internal sealed class EventRow : IMetadataRow {
+
+		public EventAttributes EventFlags;
+		public uint Name;
+		public MetadataToken EventType;
+
+		internal EventRow ()
+		{
+		}
+
+		public void Accept (IMetadataRowVisitor visitor)
+		{
+			visitor.VisitEventRow (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/EventMap.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/EventMap.cs
new file mode 100644
index 0000000..58e977a
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/EventMap.cs
@@ -0,0 +1,79 @@
+//
+// EventMapTable.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	internal sealed class EventMapTable : IMetadataTable {
+
+		public const int RId = 0x12;
+
+		RowCollection m_rows;
+
+		public EventMapRow this [int index] {
+			get { return m_rows [index] as EventMapRow; }
+			set { m_rows [index] = value; }
+		}
+
+		public RowCollection Rows {
+			get { return m_rows; }
+			set { m_rows = value; }
+		}
+
+		public int Id {
+			get { return RId; }
+		}
+
+		internal EventMapTable ()
+		{
+		}
+
+		public void Accept (IMetadataTableVisitor visitor)
+		{
+			visitor.VisitEventMapTable (this);
+			this.Rows.Accept (visitor.GetRowVisitor ());
+		}
+	}
+
+	internal sealed class EventMapRow : IMetadataRow {
+
+		public uint Parent;
+		public uint EventList;
+
+		internal EventMapRow ()
+		{
+		}
+
+		public void Accept (IMetadataRowVisitor visitor)
+		{
+			visitor.VisitEventMapRow (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/EventPtr.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/EventPtr.cs
new file mode 100644
index 0000000..d719c56
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/EventPtr.cs
@@ -0,0 +1,78 @@
+//
+// EventPtrTable.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Thu Feb 22 14:39:38 CET 2007
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	internal sealed class EventPtrTable : IMetadataTable {
+
+		public const int RId = 0x13;
+
+		RowCollection m_rows;
+
+		public EventPtrRow this [int index] {
+			get { return m_rows [index] as EventPtrRow; }
+			set { m_rows [index] = value; }
+		}
+
+		public RowCollection Rows {
+			get { return m_rows; }
+			set { m_rows = value; }
+		}
+
+		public int Id {
+			get { return RId; }
+		}
+
+		internal EventPtrTable ()
+		{
+		}
+
+		public void Accept (IMetadataTableVisitor visitor)
+		{
+			visitor.VisitEventPtrTable (this);
+			this.Rows.Accept (visitor.GetRowVisitor ());
+		}
+	}
+
+	internal sealed class EventPtrRow : IMetadataRow {
+
+		public uint Event;
+
+		internal EventPtrRow ()
+		{
+		}
+
+		public void Accept (IMetadataRowVisitor visitor)
+		{
+			visitor.VisitEventPtrRow (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/ExportedType.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/ExportedType.cs
new file mode 100644
index 0000000..316f2a1
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/ExportedType.cs
@@ -0,0 +1,84 @@
+//
+// ExportedTypeTable.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	using Mono.Cecil;
+
+	internal sealed class ExportedTypeTable : IMetadataTable {
+
+		public const int RId = 0x27;
+
+		RowCollection m_rows;
+
+		public ExportedTypeRow this [int index] {
+			get { return m_rows [index] as ExportedTypeRow; }
+			set { m_rows [index] = value; }
+		}
+
+		public RowCollection Rows {
+			get { return m_rows; }
+			set { m_rows = value; }
+		}
+
+		public int Id {
+			get { return RId; }
+		}
+
+		internal ExportedTypeTable ()
+		{
+		}
+
+		public void Accept (IMetadataTableVisitor visitor)
+		{
+			visitor.VisitExportedTypeTable (this);
+			this.Rows.Accept (visitor.GetRowVisitor ());
+		}
+	}
+
+	internal sealed class ExportedTypeRow : IMetadataRow {
+
+		public TypeAttributes Flags;
+		public uint TypeDefId;
+		public uint TypeName;
+		public uint TypeNamespace;
+		public MetadataToken Implementation;
+
+		internal ExportedTypeRow ()
+		{
+		}
+
+		public void Accept (IMetadataRowVisitor visitor)
+		{
+			visitor.VisitExportedTypeRow (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/Field.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/Field.cs
new file mode 100644
index 0000000..ddddc61
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/Field.cs
@@ -0,0 +1,82 @@
+//
+// FieldTable.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	using Mono.Cecil;
+
+	internal sealed class FieldTable : IMetadataTable {
+
+		public const int RId = 0x04;
+
+		RowCollection m_rows;
+
+		public FieldRow this [int index] {
+			get { return m_rows [index] as FieldRow; }
+			set { m_rows [index] = value; }
+		}
+
+		public RowCollection Rows {
+			get { return m_rows; }
+			set { m_rows = value; }
+		}
+
+		public int Id {
+			get { return RId; }
+		}
+
+		internal FieldTable ()
+		{
+		}
+
+		public void Accept (IMetadataTableVisitor visitor)
+		{
+			visitor.VisitFieldTable (this);
+			this.Rows.Accept (visitor.GetRowVisitor ());
+		}
+	}
+
+	internal sealed class FieldRow : IMetadataRow {
+
+		public FieldAttributes Flags;
+		public uint Name;
+		public uint Signature;
+
+		internal FieldRow ()
+		{
+		}
+
+		public void Accept (IMetadataRowVisitor visitor)
+		{
+			visitor.VisitFieldRow (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/FieldLayout.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/FieldLayout.cs
new file mode 100644
index 0000000..5537695
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/FieldLayout.cs
@@ -0,0 +1,79 @@
+//
+// FieldLayoutTable.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	internal sealed class FieldLayoutTable : IMetadataTable {
+
+		public const int RId = 0x10;
+
+		RowCollection m_rows;
+
+		public FieldLayoutRow this [int index] {
+			get { return m_rows [index] as FieldLayoutRow; }
+			set { m_rows [index] = value; }
+		}
+
+		public RowCollection Rows {
+			get { return m_rows; }
+			set { m_rows = value; }
+		}
+
+		public int Id {
+			get { return RId; }
+		}
+
+		internal FieldLayoutTable ()
+		{
+		}
+
+		public void Accept (IMetadataTableVisitor visitor)
+		{
+			visitor.VisitFieldLayoutTable (this);
+			this.Rows.Accept (visitor.GetRowVisitor ());
+		}
+	}
+
+	internal sealed class FieldLayoutRow : IMetadataRow {
+
+		public uint Offset;
+		public uint Field;
+
+		internal FieldLayoutRow ()
+		{
+		}
+
+		public void Accept (IMetadataRowVisitor visitor)
+		{
+			visitor.VisitFieldLayoutRow (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/FieldMarshal.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/FieldMarshal.cs
new file mode 100644
index 0000000..45d3e75
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/FieldMarshal.cs
@@ -0,0 +1,79 @@
+//
+// FieldMarshalTable.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	internal sealed class FieldMarshalTable : IMetadataTable {
+
+		public const int RId = 0x0d;
+
+		RowCollection m_rows;
+
+		public FieldMarshalRow this [int index] {
+			get { return m_rows [index] as FieldMarshalRow; }
+			set { m_rows [index] = value; }
+		}
+
+		public RowCollection Rows {
+			get { return m_rows; }
+			set { m_rows = value; }
+		}
+
+		public int Id {
+			get { return RId; }
+		}
+
+		internal FieldMarshalTable ()
+		{
+		}
+
+		public void Accept (IMetadataTableVisitor visitor)
+		{
+			visitor.VisitFieldMarshalTable (this);
+			this.Rows.Accept (visitor.GetRowVisitor ());
+		}
+	}
+
+	internal sealed class FieldMarshalRow : IMetadataRow {
+
+		public MetadataToken Parent;
+		public uint NativeType;
+
+		internal FieldMarshalRow ()
+		{
+		}
+
+		public void Accept (IMetadataRowVisitor visitor)
+		{
+			visitor.VisitFieldMarshalRow (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/FieldPtr.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/FieldPtr.cs
new file mode 100644
index 0000000..5810b28
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/FieldPtr.cs
@@ -0,0 +1,78 @@
+//
+// FieldPtrTable.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Thu Feb 22 14:39:38 CET 2007
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	internal sealed class FieldPtrTable : IMetadataTable {
+
+		public const int RId = 0x03;
+
+		RowCollection m_rows;
+
+		public FieldPtrRow this [int index] {
+			get { return m_rows [index] as FieldPtrRow; }
+			set { m_rows [index] = value; }
+		}
+
+		public RowCollection Rows {
+			get { return m_rows; }
+			set { m_rows = value; }
+		}
+
+		public int Id {
+			get { return RId; }
+		}
+
+		internal FieldPtrTable ()
+		{
+		}
+
+		public void Accept (IMetadataTableVisitor visitor)
+		{
+			visitor.VisitFieldPtrTable (this);
+			this.Rows.Accept (visitor.GetRowVisitor ());
+		}
+	}
+
+	internal sealed class FieldPtrRow : IMetadataRow {
+
+		public uint Field;
+
+		internal FieldPtrRow ()
+		{
+		}
+
+		public void Accept (IMetadataRowVisitor visitor)
+		{
+			visitor.VisitFieldPtrRow (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/FieldRVA.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/FieldRVA.cs
new file mode 100644
index 0000000..56af427
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/FieldRVA.cs
@@ -0,0 +1,81 @@
+//
+// FieldRVATable.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	using Mono.Cecil.Binary;
+
+	internal sealed class FieldRVATable : IMetadataTable {
+
+		public const int RId = 0x1d;
+
+		RowCollection m_rows;
+
+		public FieldRVARow this [int index] {
+			get { return m_rows [index] as FieldRVARow; }
+			set { m_rows [index] = value; }
+		}
+
+		public RowCollection Rows {
+			get { return m_rows; }
+			set { m_rows = value; }
+		}
+
+		public int Id {
+			get { return RId; }
+		}
+
+		internal FieldRVATable ()
+		{
+		}
+
+		public void Accept (IMetadataTableVisitor visitor)
+		{
+			visitor.VisitFieldRVATable (this);
+			this.Rows.Accept (visitor.GetRowVisitor ());
+		}
+	}
+
+	internal sealed class FieldRVARow : IMetadataRow {
+
+		public RVA RVA;
+		public uint Field;
+
+		internal FieldRVARow ()
+		{
+		}
+
+		public void Accept (IMetadataRowVisitor visitor)
+		{
+			visitor.VisitFieldRVARow (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/File.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/File.cs
new file mode 100644
index 0000000..af0d81b
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/File.cs
@@ -0,0 +1,82 @@
+//
+// FileTable.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	using Mono.Cecil;
+
+	internal sealed class FileTable : IMetadataTable {
+
+		public const int RId = 0x26;
+
+		RowCollection m_rows;
+
+		public FileRow this [int index] {
+			get { return m_rows [index] as FileRow; }
+			set { m_rows [index] = value; }
+		}
+
+		public RowCollection Rows {
+			get { return m_rows; }
+			set { m_rows = value; }
+		}
+
+		public int Id {
+			get { return RId; }
+		}
+
+		internal FileTable ()
+		{
+		}
+
+		public void Accept (IMetadataTableVisitor visitor)
+		{
+			visitor.VisitFileTable (this);
+			this.Rows.Accept (visitor.GetRowVisitor ());
+		}
+	}
+
+	internal sealed class FileRow : IMetadataRow {
+
+		public FileAttributes Flags;
+		public uint Name;
+		public uint HashValue;
+
+		internal FileRow ()
+		{
+		}
+
+		public void Accept (IMetadataRowVisitor visitor)
+		{
+			visitor.VisitFileRow (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/GenericParam.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/GenericParam.cs
new file mode 100644
index 0000000..2e6b578
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/GenericParam.cs
@@ -0,0 +1,83 @@
+//
+// GenericParamTable.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	using Mono.Cecil;
+
+	internal sealed class GenericParamTable : IMetadataTable {
+
+		public const int RId = 0x2a;
+
+		RowCollection m_rows;
+
+		public GenericParamRow this [int index] {
+			get { return m_rows [index] as GenericParamRow; }
+			set { m_rows [index] = value; }
+		}
+
+		public RowCollection Rows {
+			get { return m_rows; }
+			set { m_rows = value; }
+		}
+
+		public int Id {
+			get { return RId; }
+		}
+
+		internal GenericParamTable ()
+		{
+		}
+
+		public void Accept (IMetadataTableVisitor visitor)
+		{
+			visitor.VisitGenericParamTable (this);
+			this.Rows.Accept (visitor.GetRowVisitor ());
+		}
+	}
+
+	internal sealed class GenericParamRow : IMetadataRow {
+
+		public ushort Number;
+		public GenericParameterAttributes Flags;
+		public MetadataToken Owner;
+		public uint Name;
+
+		internal GenericParamRow ()
+		{
+		}
+
+		public void Accept (IMetadataRowVisitor visitor)
+		{
+			visitor.VisitGenericParamRow (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/GenericParamConstraint.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/GenericParamConstraint.cs
new file mode 100644
index 0000000..d91c2e5
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/GenericParamConstraint.cs
@@ -0,0 +1,79 @@
+//
+// GenericParamConstraintTable.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	internal sealed class GenericParamConstraintTable : IMetadataTable {
+
+		public const int RId = 0x2c;
+
+		RowCollection m_rows;
+
+		public GenericParamConstraintRow this [int index] {
+			get { return m_rows [index] as GenericParamConstraintRow; }
+			set { m_rows [index] = value; }
+		}
+
+		public RowCollection Rows {
+			get { return m_rows; }
+			set { m_rows = value; }
+		}
+
+		public int Id {
+			get { return RId; }
+		}
+
+		internal GenericParamConstraintTable ()
+		{
+		}
+
+		public void Accept (IMetadataTableVisitor visitor)
+		{
+			visitor.VisitGenericParamConstraintTable (this);
+			this.Rows.Accept (visitor.GetRowVisitor ());
+		}
+	}
+
+	internal sealed class GenericParamConstraintRow : IMetadataRow {
+
+		public uint Owner;
+		public MetadataToken Constraint;
+
+		internal GenericParamConstraintRow ()
+		{
+		}
+
+		public void Accept (IMetadataRowVisitor visitor)
+		{
+			visitor.VisitGenericParamConstraintRow (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/GuidHeap.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/GuidHeap.cs
new file mode 100644
index 0000000..46a1729
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/GuidHeap.cs
@@ -0,0 +1,80 @@
+//
+// GuidHeap.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	using System;
+	using System.Collections;
+
+	internal class GuidHeap : MetadataHeap {
+
+		readonly IDictionary m_guids;
+
+		public IDictionary Guids {
+			get { return m_guids; }
+		}
+
+		public GuidHeap (MetadataStream stream) : base (stream, MetadataStream.GUID)
+		{
+			int capacity = (int)(stream.Header.Size / 16);
+			m_guids = new Hashtable (capacity);
+		}
+
+		public Guid this [uint index] {
+			get {
+				if (index == 0)
+					return new Guid (new byte [16]);
+
+				int idx = (int) index - 1;
+
+				if (m_guids.Contains (idx))
+					return (Guid) m_guids [idx];
+
+				if (idx + 16 > this.Data.Length)
+					throw new IndexOutOfRangeException ();
+
+				byte [] buffer = null;
+				if (this.Data.Length == 16) {
+					buffer = this.Data;
+				} else {
+					buffer = new byte [16];
+					Buffer.BlockCopy (this.Data, idx, buffer, 0, 16);
+				}
+				Guid res = new Guid (buffer);
+				m_guids [idx] = res;
+				return res;
+			}
+			set { m_guids [index] = value; }
+		}
+
+		public override void Accept (IMetadataVisitor visitor)
+		{
+			visitor.VisitGuidHeap (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/IMetadataRow.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/IMetadataRow.cs
new file mode 100644
index 0000000..ac36673
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/IMetadataRow.cs
@@ -0,0 +1,33 @@
+//
+// IMetadataRow.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	internal interface IMetadataRow : IMetadataRowVisitable {
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/IMetadataTable.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/IMetadataTable.cs
new file mode 100644
index 0000000..6dfaa77
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/IMetadataTable.cs
@@ -0,0 +1,35 @@
+//
+// IMetadataTable.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	internal interface IMetadataTable : IMetadataTableVisitable {
+		int Id { get; }
+		RowCollection Rows { get; set; }
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/IMetadataVisitable.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/IMetadataVisitable.cs
new file mode 100644
index 0000000..3762837
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/IMetadataVisitable.cs
@@ -0,0 +1,42 @@
+//
+// IMetadataVisitable.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	internal interface IMetadataVisitable {
+		void Accept (IMetadataVisitor visitor);
+	}
+
+	internal interface IMetadataTableVisitable {
+		void Accept (IMetadataTableVisitor visitor);
+	}
+
+	internal interface IMetadataRowVisitable {
+		void Accept (IMetadataRowVisitor visitor);
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/IMetadataVisitor.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/IMetadataVisitor.cs
new file mode 100644
index 0000000..5ba6959
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/IMetadataVisitor.cs
@@ -0,0 +1,149 @@
+//
+// IMetadataVisitor.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Thu Feb 22 14:39:38 CET 2007
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	internal interface IMetadataVisitor {
+		void VisitMetadataRoot (MetadataRoot root);
+		void VisitMetadataRootHeader (MetadataRoot.MetadataRootHeader header);
+		void VisitMetadataStreamCollection (MetadataStreamCollection streams);
+		void VisitMetadataStream (MetadataStream stream);
+		void VisitMetadataStreamHeader (MetadataStream.MetadataStreamHeader header);
+		void VisitGuidHeap (GuidHeap heap);
+		void VisitStringsHeap (StringsHeap heap);
+		void VisitTablesHeap (TablesHeap heap);
+		void VisitBlobHeap (BlobHeap heap);
+		void VisitUserStringsHeap (UserStringsHeap heap);
+
+		void TerminateMetadataRoot (MetadataRoot root);
+	}
+
+	internal interface IMetadataTableVisitor {
+		void VisitTableCollection (TableCollection coll);
+
+		void VisitAssemblyTable (AssemblyTable table);
+		void VisitAssemblyOSTable (AssemblyOSTable table);
+		void VisitAssemblyProcessorTable (AssemblyProcessorTable table);
+		void VisitAssemblyRefTable (AssemblyRefTable table);
+		void VisitAssemblyRefOSTable (AssemblyRefOSTable table);
+		void VisitAssemblyRefProcessorTable (AssemblyRefProcessorTable table);
+		void VisitClassLayoutTable (ClassLayoutTable table);
+		void VisitConstantTable (ConstantTable table);
+		void VisitCustomAttributeTable (CustomAttributeTable table);
+		void VisitDeclSecurityTable (DeclSecurityTable table);
+		void VisitEventTable (EventTable table);
+		void VisitEventMapTable (EventMapTable table);
+		void VisitEventPtrTable (EventPtrTable table);
+		void VisitExportedTypeTable (ExportedTypeTable table);
+		void VisitFieldTable (FieldTable table);
+		void VisitFieldLayoutTable (FieldLayoutTable table);
+		void VisitFieldMarshalTable (FieldMarshalTable table);
+		void VisitFieldPtrTable (FieldPtrTable table);
+		void VisitFieldRVATable (FieldRVATable table);
+		void VisitFileTable (FileTable table);
+		void VisitGenericParamTable (GenericParamTable table);
+		void VisitGenericParamConstraintTable (GenericParamConstraintTable table);
+		void VisitImplMapTable (ImplMapTable table);
+		void VisitInterfaceImplTable (InterfaceImplTable table);
+		void VisitManifestResourceTable (ManifestResourceTable table);
+		void VisitMemberRefTable (MemberRefTable table);
+		void VisitMethodTable (MethodTable table);
+		void VisitMethodImplTable (MethodImplTable table);
+		void VisitMethodPtrTable (MethodPtrTable table);
+		void VisitMethodSemanticsTable (MethodSemanticsTable table);
+		void VisitMethodSpecTable (MethodSpecTable table);
+		void VisitModuleTable (ModuleTable table);
+		void VisitModuleRefTable (ModuleRefTable table);
+		void VisitNestedClassTable (NestedClassTable table);
+		void VisitParamTable (ParamTable table);
+		void VisitParamPtrTable (ParamPtrTable table);
+		void VisitPropertyTable (PropertyTable table);
+		void VisitPropertyMapTable (PropertyMapTable table);
+		void VisitPropertyPtrTable (PropertyPtrTable table);
+		void VisitStandAloneSigTable (StandAloneSigTable table);
+		void VisitTypeDefTable (TypeDefTable table);
+		void VisitTypeRefTable (TypeRefTable table);
+		void VisitTypeSpecTable (TypeSpecTable table);
+
+		void TerminateTableCollection (TableCollection coll);
+		IMetadataRowVisitor GetRowVisitor();
+}
+
+	internal interface IMetadataRowVisitor {
+		void VisitRowCollection (RowCollection coll);
+
+		void VisitAssemblyRow (AssemblyRow row);
+		void VisitAssemblyOSRow (AssemblyOSRow row);
+		void VisitAssemblyProcessorRow (AssemblyProcessorRow row);
+		void VisitAssemblyRefRow (AssemblyRefRow row);
+		void VisitAssemblyRefOSRow (AssemblyRefOSRow row);
+		void VisitAssemblyRefProcessorRow (AssemblyRefProcessorRow row);
+		void VisitClassLayoutRow (ClassLayoutRow row);
+		void VisitConstantRow (ConstantRow row);
+		void VisitCustomAttributeRow (CustomAttributeRow row);
+		void VisitDeclSecurityRow (DeclSecurityRow row);
+		void VisitEventRow (EventRow row);
+		void VisitEventMapRow (EventMapRow row);
+		void VisitEventPtrRow (EventPtrRow row);
+		void VisitExportedTypeRow (ExportedTypeRow row);
+		void VisitFieldRow (FieldRow row);
+		void VisitFieldLayoutRow (FieldLayoutRow row);
+		void VisitFieldMarshalRow (FieldMarshalRow row);
+		void VisitFieldPtrRow (FieldPtrRow row);
+		void VisitFieldRVARow (FieldRVARow row);
+		void VisitFileRow (FileRow row);
+		void VisitGenericParamRow (GenericParamRow row);
+		void VisitGenericParamConstraintRow (GenericParamConstraintRow row);
+		void VisitImplMapRow (ImplMapRow row);
+		void VisitInterfaceImplRow (InterfaceImplRow row);
+		void VisitManifestResourceRow (ManifestResourceRow row);
+		void VisitMemberRefRow (MemberRefRow row);
+		void VisitMethodRow (MethodRow row);
+		void VisitMethodImplRow (MethodImplRow row);
+		void VisitMethodPtrRow (MethodPtrRow row);
+		void VisitMethodSemanticsRow (MethodSemanticsRow row);
+		void VisitMethodSpecRow (MethodSpecRow row);
+		void VisitModuleRow (ModuleRow row);
+		void VisitModuleRefRow (ModuleRefRow row);
+		void VisitNestedClassRow (NestedClassRow row);
+		void VisitParamRow (ParamRow row);
+		void VisitParamPtrRow (ParamPtrRow row);
+		void VisitPropertyRow (PropertyRow row);
+		void VisitPropertyMapRow (PropertyMapRow row);
+		void VisitPropertyPtrRow (PropertyPtrRow row);
+		void VisitStandAloneSigRow (StandAloneSigRow row);
+		void VisitTypeDefRow (TypeDefRow row);
+		void VisitTypeRefRow (TypeRefRow row);
+		void VisitTypeSpecRow (TypeSpecRow row);
+
+		void TerminateRowCollection (RowCollection coll);
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/ImplMap.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/ImplMap.cs
new file mode 100644
index 0000000..688c864
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/ImplMap.cs
@@ -0,0 +1,83 @@
+//
+// ImplMapTable.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	using Mono.Cecil;
+
+	internal sealed class ImplMapTable : IMetadataTable {
+
+		public const int RId = 0x1c;
+
+		RowCollection m_rows;
+
+		public ImplMapRow this [int index] {
+			get { return m_rows [index] as ImplMapRow; }
+			set { m_rows [index] = value; }
+		}
+
+		public RowCollection Rows {
+			get { return m_rows; }
+			set { m_rows = value; }
+		}
+
+		public int Id {
+			get { return RId; }
+		}
+
+		internal ImplMapTable ()
+		{
+		}
+
+		public void Accept (IMetadataTableVisitor visitor)
+		{
+			visitor.VisitImplMapTable (this);
+			this.Rows.Accept (visitor.GetRowVisitor ());
+		}
+	}
+
+	internal sealed class ImplMapRow : IMetadataRow {
+
+		public PInvokeAttributes MappingFlags;
+		public MetadataToken MemberForwarded;
+		public uint ImportName;
+		public uint ImportScope;
+
+		internal ImplMapRow ()
+		{
+		}
+
+		public void Accept (IMetadataRowVisitor visitor)
+		{
+			visitor.VisitImplMapRow (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/InterfaceImpl.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/InterfaceImpl.cs
new file mode 100644
index 0000000..8558c74
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/InterfaceImpl.cs
@@ -0,0 +1,79 @@
+//
+// InterfaceImplTable.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	internal sealed class InterfaceImplTable : IMetadataTable {
+
+		public const int RId = 0x09;
+
+		RowCollection m_rows;
+
+		public InterfaceImplRow this [int index] {
+			get { return m_rows [index] as InterfaceImplRow; }
+			set { m_rows [index] = value; }
+		}
+
+		public RowCollection Rows {
+			get { return m_rows; }
+			set { m_rows = value; }
+		}
+
+		public int Id {
+			get { return RId; }
+		}
+
+		internal InterfaceImplTable ()
+		{
+		}
+
+		public void Accept (IMetadataTableVisitor visitor)
+		{
+			visitor.VisitInterfaceImplTable (this);
+			this.Rows.Accept (visitor.GetRowVisitor ());
+		}
+	}
+
+	internal sealed class InterfaceImplRow : IMetadataRow {
+
+		public uint Class;
+		public MetadataToken Interface;
+
+		internal InterfaceImplRow ()
+		{
+		}
+
+		public void Accept (IMetadataRowVisitor visitor)
+		{
+			visitor.VisitInterfaceImplRow (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/ManifestResource.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/ManifestResource.cs
new file mode 100644
index 0000000..5fec7e0
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/ManifestResource.cs
@@ -0,0 +1,83 @@
+//
+// ManifestResourceTable.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	using Mono.Cecil;
+
+	internal sealed class ManifestResourceTable : IMetadataTable {
+
+		public const int RId = 0x28;
+
+		RowCollection m_rows;
+
+		public ManifestResourceRow this [int index] {
+			get { return m_rows [index] as ManifestResourceRow; }
+			set { m_rows [index] = value; }
+		}
+
+		public RowCollection Rows {
+			get { return m_rows; }
+			set { m_rows = value; }
+		}
+
+		public int Id {
+			get { return RId; }
+		}
+
+		internal ManifestResourceTable ()
+		{
+		}
+
+		public void Accept (IMetadataTableVisitor visitor)
+		{
+			visitor.VisitManifestResourceTable (this);
+			this.Rows.Accept (visitor.GetRowVisitor ());
+		}
+	}
+
+	internal sealed class ManifestResourceRow : IMetadataRow {
+
+		public uint Offset;
+		public ManifestResourceAttributes Flags;
+		public uint Name;
+		public MetadataToken Implementation;
+
+		internal ManifestResourceRow ()
+		{
+		}
+
+		public void Accept (IMetadataRowVisitor visitor)
+		{
+			visitor.VisitManifestResourceRow (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/MemberRef.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/MemberRef.cs
new file mode 100644
index 0000000..15354f9
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/MemberRef.cs
@@ -0,0 +1,80 @@
+//
+// MemberRefTable.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	internal sealed class MemberRefTable : IMetadataTable {
+
+		public const int RId = 0x0a;
+
+		RowCollection m_rows;
+
+		public MemberRefRow this [int index] {
+			get { return m_rows [index] as MemberRefRow; }
+			set { m_rows [index] = value; }
+		}
+
+		public RowCollection Rows {
+			get { return m_rows; }
+			set { m_rows = value; }
+		}
+
+		public int Id {
+			get { return RId; }
+		}
+
+		internal MemberRefTable ()
+		{
+		}
+
+		public void Accept (IMetadataTableVisitor visitor)
+		{
+			visitor.VisitMemberRefTable (this);
+			this.Rows.Accept (visitor.GetRowVisitor ());
+		}
+	}
+
+	internal sealed class MemberRefRow : IMetadataRow {
+
+		public MetadataToken Class;
+		public uint Name;
+		public uint Signature;
+
+		internal MemberRefRow ()
+		{
+		}
+
+		public void Accept (IMetadataRowVisitor visitor)
+		{
+			visitor.VisitMemberRefRow (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataFormatException.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataFormatException.cs
new file mode 100644
index 0000000..2dee4dc
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataFormatException.cs
@@ -0,0 +1,55 @@
+//
+// MetadataFormatException.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	using System;
+
+	using Mono.Cecil.Binary;
+
+	internal class MetadataFormatException : ImageFormatException {
+
+		internal MetadataFormatException () : base ()
+		{
+		}
+
+		internal MetadataFormatException (string message) : base (message)
+		{
+		}
+
+		internal MetadataFormatException (string message, params string [] parameters) :
+			base (string.Format (message, parameters))
+		{
+		}
+
+		internal MetadataFormatException (string message, Exception inner) :
+			base (message, inner)
+		{
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataHeap.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataHeap.cs
new file mode 100644
index 0000000..ed793e3
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataHeap.cs
@@ -0,0 +1,92 @@
+//
+// MetadataHeap.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	using System;
+
+	using Mono.Cecil;
+
+	internal abstract class MetadataHeap : IMetadataVisitable  {
+
+		MetadataStream m_stream;
+		string m_name;
+		byte [] m_data;
+
+		public string Name {
+			get { return m_name; }
+		}
+
+		public byte [] Data {
+			get { return m_data; }
+			set { m_data = value; }
+		}
+
+		public int IndexSize;
+
+		internal MetadataHeap (MetadataStream stream, string name)
+		{
+			m_name = name;
+			m_stream = stream;
+		}
+
+		public static MetadataHeap HeapFactory (MetadataStream stream)
+		{
+			switch (stream.Header.Name) {
+			case MetadataStream.Tables :
+			case MetadataStream.IncrementalTables :
+				return new TablesHeap (stream);
+			case MetadataStream.GUID :
+				return new GuidHeap (stream);
+			case MetadataStream.Strings :
+				return new StringsHeap (stream);
+			case MetadataStream.UserStrings :
+				return new UserStringsHeap (stream);
+			case MetadataStream.Blob :
+				return new BlobHeap (stream);
+			default :
+				return null;
+			}
+		}
+
+		public MetadataStream GetStream ()
+		{
+			return m_stream;
+		}
+
+		protected virtual byte [] ReadBytesFromStream (uint pos)
+		{
+			int start, length = Utilities.ReadCompressedInteger (m_data, (int) pos, out start);
+			byte [] buffer = new byte [length];
+			Buffer.BlockCopy (m_data, start, buffer, 0, length);
+			return buffer;
+		}
+
+		public abstract void Accept (IMetadataVisitor visitor);
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataInitializer.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataInitializer.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataInitializer.cs
rename to mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataInitializer.cs
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataReader.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataReader.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataReader.cs
rename to mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataReader.cs
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataRoot.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataRoot.cs
new file mode 100644
index 0000000..fbf76a8
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataRoot.cs
@@ -0,0 +1,99 @@
+//
+// MetadataRoot.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	using Mono.Cecil.Binary;
+
+	internal sealed class MetadataRoot : IMetadataVisitable {
+
+		MetadataRootHeader m_header;
+		Image m_image;
+
+		MetadataStreamCollection m_streams;
+
+		public MetadataRootHeader Header {
+			get { return m_header; }
+			set { m_header = value; }
+		}
+
+		public MetadataStreamCollection Streams {
+			get { return m_streams; }
+			set { m_streams = value; }
+		}
+
+		internal MetadataRoot (Image img)
+		{
+			m_image = img;
+		}
+
+		public Image GetImage ()
+		{
+			return m_image;
+		}
+
+		public void Accept (IMetadataVisitor visitor)
+		{
+			visitor.VisitMetadataRoot (this);
+
+			m_header.Accept (visitor);
+			m_streams.Accept (visitor);
+
+			visitor.TerminateMetadataRoot (this);
+		}
+
+		internal sealed class MetadataRootHeader : IHeader, IMetadataVisitable {
+
+			public const uint StandardSignature = 0x424a5342;
+
+			public uint Signature;
+			public ushort MinorVersion;
+			public ushort MajorVersion;
+			public uint Reserved;
+			public string Version;
+			public ushort Flags;
+			public ushort Streams;
+
+			internal MetadataRootHeader ()
+			{
+			}
+
+			public void SetDefaultValues ()
+			{
+				Signature = StandardSignature;
+				Reserved = 0;
+				Flags = 0;
+			}
+
+			public void Accept (IMetadataVisitor visitor)
+			{
+				visitor.VisitMetadataRootHeader (this);
+			}
+		}
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataRowReader.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataRowReader.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataRowReader.cs
rename to mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataRowReader.cs
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataRowWriter.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataRowWriter.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataRowWriter.cs
rename to mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataRowWriter.cs
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataStream.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataStream.cs
new file mode 100644
index 0000000..402cc65
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataStream.cs
@@ -0,0 +1,90 @@
+//
+// MetadataStream.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	internal class MetadataStream : IMetadataVisitable {
+
+		public const string Strings = "#Strings";
+		public const string Tables = "#~";
+		public const string IncrementalTables = "#-";
+		public const string Blob = "#Blob";
+		public const string GUID = "#GUID";
+		public const string UserStrings = "#US";
+
+		MetadataStreamHeader m_header;
+		MetadataHeap m_heap;
+
+		public MetadataStreamHeader Header {
+			get { return m_header; }
+			set { m_header = value; }
+		}
+
+		public MetadataHeap Heap {
+			get { return m_heap; }
+			set { m_heap = value; }
+		}
+
+		internal MetadataStream ()
+		{
+			m_header = new MetadataStreamHeader (this);
+		}
+
+		public void Accept (IMetadataVisitor visitor)
+		{
+			visitor.VisitMetadataStream (this);
+
+			m_header.Accept (visitor);
+			if (m_heap != null)
+				m_heap.Accept (visitor);
+		}
+
+		internal class MetadataStreamHeader : IMetadataVisitable {
+
+			public uint Offset;
+			public uint Size;
+			public string Name;
+
+			private MetadataStream m_stream;
+
+			public MetadataStream Stream {
+				get { return m_stream; }
+			}
+
+			internal MetadataStreamHeader (MetadataStream stream)
+			{
+				m_stream = stream;
+			}
+
+			public void Accept (IMetadataVisitor visitor)
+			{
+				visitor.VisitMetadataStreamHeader (this);
+			}
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataStreamCollection.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataStreamCollection.cs
new file mode 100644
index 0000000..43509cd
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataStreamCollection.cs
@@ -0,0 +1,145 @@
+//
+// MetadataStreamCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	using System;
+	using System.Collections;
+
+	internal class MetadataStreamCollection : ICollection, IMetadataVisitable {
+
+		IList m_items;
+
+		BlobHeap m_blobHeap;
+		GuidHeap m_guidHeap;
+		StringsHeap m_stringsHeap;
+		UserStringsHeap m_usHeap;
+		TablesHeap m_tablesHeap;
+
+		public MetadataStream this [int index] {
+			get { return m_items [index] as MetadataStream; }
+			set { m_items [index] = value; }
+		}
+
+		public int Count {
+			get { return m_items.Count; }
+		}
+
+		public bool IsSynchronized {
+			get { return false; }
+		}
+
+		public object SyncRoot {
+			get { return this; }
+		}
+
+		public BlobHeap BlobHeap {
+			get {
+				if (m_blobHeap == null)
+					m_blobHeap = GetHeap (MetadataStream.Blob) as BlobHeap;
+				return m_blobHeap;
+			}
+		}
+
+		public GuidHeap GuidHeap {
+			get {
+				if (m_guidHeap == null)
+					m_guidHeap = GetHeap (MetadataStream.GUID) as GuidHeap;
+				return m_guidHeap;
+			}
+		}
+
+		public StringsHeap StringsHeap {
+			get {
+				if (m_stringsHeap == null)
+					m_stringsHeap = GetHeap (MetadataStream.Strings) as StringsHeap;
+				return m_stringsHeap;
+			}
+		}
+
+		public TablesHeap TablesHeap {
+			get {
+				if (m_tablesHeap == null)
+					m_tablesHeap = GetHeap (MetadataStream.Tables) as TablesHeap;
+				return m_tablesHeap;
+			}
+		}
+
+		public UserStringsHeap UserStringsHeap {
+			get {
+				if (m_usHeap == null)
+					m_usHeap = GetHeap (MetadataStream.UserStrings) as UserStringsHeap;
+				return m_usHeap;
+			}
+		}
+
+		public MetadataStreamCollection ()
+		{
+			m_items = new ArrayList (5);
+		}
+
+		private MetadataHeap GetHeap (string name)
+		{
+			for (int i = 0; i < m_items.Count; i++) {
+				MetadataStream stream = m_items [i] as MetadataStream;
+				if (stream.Heap.Name == name)
+					return stream.Heap;
+			}
+
+			return null;
+		}
+
+		internal void Add (MetadataStream value)
+		{
+			m_items.Add (value);
+		}
+
+		internal void Remove (MetadataStream value)
+		{
+			m_items.Remove (value);
+		}
+
+		public void CopyTo (Array ary, int index)
+		{
+			m_items.CopyTo (ary, index);
+		}
+
+		public IEnumerator GetEnumerator ()
+		{
+			return m_items.GetEnumerator ();
+		}
+
+		public void Accept (IMetadataVisitor visitor)
+		{
+			visitor.VisitMetadataStreamCollection (this);
+
+			for (int i = 0; i < m_items.Count; i++)
+				this [i].Accept (visitor);
+		}
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataTableReader.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataTableReader.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataTableReader.cs
rename to mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataTableReader.cs
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataTableWriter.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataTableWriter.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataTableWriter.cs
rename to mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataTableWriter.cs
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataToken.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataToken.cs
new file mode 100644
index 0000000..5b287e4
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataToken.cs
@@ -0,0 +1,102 @@
+//
+// MetadataToken.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	internal struct MetadataToken {
+
+		uint m_rid;
+		TokenType m_type;
+
+		public uint RID {
+			get { return m_rid; }
+		}
+
+		public TokenType TokenType {
+			get { return m_type; }
+		}
+
+		public static readonly MetadataToken Zero = new MetadataToken ((TokenType) 0, 0);
+
+		public MetadataToken (int token)
+		{
+			m_type = (TokenType) (token & 0xff000000);
+			m_rid = (uint) token & 0x00ffffff;
+		}
+
+		public MetadataToken (TokenType table, uint rid)
+		{
+			m_type = table;
+			m_rid = rid;
+		}
+
+		internal static MetadataToken FromMetadataRow (TokenType table, int rowIndex)
+		{
+			return new MetadataToken (table, (uint) rowIndex + 1);
+		}
+
+		public uint ToUInt ()
+		{
+			return (uint) m_type | m_rid;
+		}
+
+		public override int GetHashCode ()
+		{
+			return (int) ToUInt ();
+		}
+
+		public override bool Equals (object other)
+		{
+			if (other is MetadataToken)
+				return Equals ((MetadataToken) other);
+
+			return false;
+		}
+
+		private bool Equals (MetadataToken other)
+		{
+			return other.m_rid == m_rid && other.m_type == m_type;
+		}
+
+		public static bool operator == (MetadataToken one, MetadataToken other)
+		{
+			return one.Equals (other);
+		}
+
+		public static bool operator != (MetadataToken one, MetadataToken other)
+		{
+			return !one.Equals (other);
+		}
+
+		public override string ToString ()
+		{
+			return string.Format ("{0} [0x{1}]",
+				m_type, m_rid.ToString ("x4"));
+		}
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataWriter.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataWriter.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil.Metadata/MetadataWriter.cs
rename to mcs/tools/cil-strip/Mono.Cecil.Metadata/MetadataWriter.cs
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/Method.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/Method.cs
new file mode 100644
index 0000000..dc9963a
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/Method.cs
@@ -0,0 +1,87 @@
+//
+// MethodTable.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	using Mono.Cecil;
+
+	using Mono.Cecil.Binary;
+
+	internal sealed class MethodTable : IMetadataTable {
+
+		public const int RId = 0x06;
+
+		RowCollection m_rows;
+
+		public MethodRow this [int index] {
+			get { return m_rows [index] as MethodRow; }
+			set { m_rows [index] = value; }
+		}
+
+		public RowCollection Rows {
+			get { return m_rows; }
+			set { m_rows = value; }
+		}
+
+		public int Id {
+			get { return RId; }
+		}
+
+		internal MethodTable ()
+		{
+		}
+
+		public void Accept (IMetadataTableVisitor visitor)
+		{
+			visitor.VisitMethodTable (this);
+			this.Rows.Accept (visitor.GetRowVisitor ());
+		}
+	}
+
+	internal sealed class MethodRow : IMetadataRow {
+
+		public RVA RVA;
+		public MethodImplAttributes ImplFlags;
+		public MethodAttributes Flags;
+		public uint Name;
+		public uint Signature;
+		public uint ParamList;
+
+		internal MethodRow ()
+		{
+		}
+
+		public void Accept (IMetadataRowVisitor visitor)
+		{
+			visitor.VisitMethodRow (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/MethodImpl.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/MethodImpl.cs
new file mode 100644
index 0000000..2d2a23a
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/MethodImpl.cs
@@ -0,0 +1,80 @@
+//
+// MethodImplTable.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	internal sealed class MethodImplTable : IMetadataTable {
+
+		public const int RId = 0x19;
+
+		RowCollection m_rows;
+
+		public MethodImplRow this [int index] {
+			get { return m_rows [index] as MethodImplRow; }
+			set { m_rows [index] = value; }
+		}
+
+		public RowCollection Rows {
+			get { return m_rows; }
+			set { m_rows = value; }
+		}
+
+		public int Id {
+			get { return RId; }
+		}
+
+		internal MethodImplTable ()
+		{
+		}
+
+		public void Accept (IMetadataTableVisitor visitor)
+		{
+			visitor.VisitMethodImplTable (this);
+			this.Rows.Accept (visitor.GetRowVisitor ());
+		}
+	}
+
+	internal sealed class MethodImplRow : IMetadataRow {
+
+		public uint Class;
+		public MetadataToken MethodBody;
+		public MetadataToken MethodDeclaration;
+
+		internal MethodImplRow ()
+		{
+		}
+
+		public void Accept (IMetadataRowVisitor visitor)
+		{
+			visitor.VisitMethodImplRow (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/MethodPtr.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/MethodPtr.cs
new file mode 100644
index 0000000..c660803
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/MethodPtr.cs
@@ -0,0 +1,78 @@
+//
+// MethodPtrTable.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Thu Feb 22 14:39:38 CET 2007
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	internal sealed class MethodPtrTable : IMetadataTable {
+
+		public const int RId = 0x05;
+
+		RowCollection m_rows;
+
+		public MethodPtrRow this [int index] {
+			get { return m_rows [index] as MethodPtrRow; }
+			set { m_rows [index] = value; }
+		}
+
+		public RowCollection Rows {
+			get { return m_rows; }
+			set { m_rows = value; }
+		}
+
+		public int Id {
+			get { return RId; }
+		}
+
+		internal MethodPtrTable ()
+		{
+		}
+
+		public void Accept (IMetadataTableVisitor visitor)
+		{
+			visitor.VisitMethodPtrTable (this);
+			this.Rows.Accept (visitor.GetRowVisitor ());
+		}
+	}
+
+	internal sealed class MethodPtrRow : IMetadataRow {
+
+		public uint Method;
+
+		internal MethodPtrRow ()
+		{
+		}
+
+		public void Accept (IMetadataRowVisitor visitor)
+		{
+			visitor.VisitMethodPtrRow (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/MethodSemantics.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/MethodSemantics.cs
new file mode 100644
index 0000000..1ff8a5c
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/MethodSemantics.cs
@@ -0,0 +1,82 @@
+//
+// MethodSemanticsTable.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	using Mono.Cecil;
+
+	internal sealed class MethodSemanticsTable : IMetadataTable {
+
+		public const int RId = 0x18;
+
+		RowCollection m_rows;
+
+		public MethodSemanticsRow this [int index] {
+			get { return m_rows [index] as MethodSemanticsRow; }
+			set { m_rows [index] = value; }
+		}
+
+		public RowCollection Rows {
+			get { return m_rows; }
+			set { m_rows = value; }
+		}
+
+		public int Id {
+			get { return RId; }
+		}
+
+		internal MethodSemanticsTable ()
+		{
+		}
+
+		public void Accept (IMetadataTableVisitor visitor)
+		{
+			visitor.VisitMethodSemanticsTable (this);
+			this.Rows.Accept (visitor.GetRowVisitor ());
+		}
+	}
+
+	internal sealed class MethodSemanticsRow : IMetadataRow {
+
+		public MethodSemanticsAttributes Semantics;
+		public uint Method;
+		public MetadataToken Association;
+
+		internal MethodSemanticsRow ()
+		{
+		}
+
+		public void Accept (IMetadataRowVisitor visitor)
+		{
+			visitor.VisitMethodSemanticsRow (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/MethodSpec.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/MethodSpec.cs
new file mode 100644
index 0000000..2eb3dec
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/MethodSpec.cs
@@ -0,0 +1,79 @@
+//
+// MethodSpecTable.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	internal sealed class MethodSpecTable : IMetadataTable {
+
+		public const int RId = 0x2b;
+
+		RowCollection m_rows;
+
+		public MethodSpecRow this [int index] {
+			get { return m_rows [index] as MethodSpecRow; }
+			set { m_rows [index] = value; }
+		}
+
+		public RowCollection Rows {
+			get { return m_rows; }
+			set { m_rows = value; }
+		}
+
+		public int Id {
+			get { return RId; }
+		}
+
+		internal MethodSpecTable ()
+		{
+		}
+
+		public void Accept (IMetadataTableVisitor visitor)
+		{
+			visitor.VisitMethodSpecTable (this);
+			this.Rows.Accept (visitor.GetRowVisitor ());
+		}
+	}
+
+	internal sealed class MethodSpecRow : IMetadataRow {
+
+		public MetadataToken Method;
+		public uint Instantiation;
+
+		internal MethodSpecRow ()
+		{
+		}
+
+		public void Accept (IMetadataRowVisitor visitor)
+		{
+			visitor.VisitMethodSpecRow (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/Module.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/Module.cs
new file mode 100644
index 0000000..7fe93d7
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/Module.cs
@@ -0,0 +1,82 @@
+//
+// ModuleTable.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	internal sealed class ModuleTable : IMetadataTable {
+
+		public const int RId = 0x00;
+
+		RowCollection m_rows;
+
+		public ModuleRow this [int index] {
+			get { return m_rows [index] as ModuleRow; }
+			set { m_rows [index] = value; }
+		}
+
+		public RowCollection Rows {
+			get { return m_rows; }
+			set { m_rows = value; }
+		}
+
+		public int Id {
+			get { return RId; }
+		}
+
+		internal ModuleTable ()
+		{
+		}
+
+		public void Accept (IMetadataTableVisitor visitor)
+		{
+			visitor.VisitModuleTable (this);
+			this.Rows.Accept (visitor.GetRowVisitor ());
+		}
+	}
+
+	internal sealed class ModuleRow : IMetadataRow {
+
+		public ushort Generation;
+		public uint Name;
+		public uint Mvid;
+		public uint EncId;
+		public uint EncBaseId;
+
+		internal ModuleRow ()
+		{
+		}
+
+		public void Accept (IMetadataRowVisitor visitor)
+		{
+			visitor.VisitModuleRow (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/ModuleRef.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/ModuleRef.cs
new file mode 100644
index 0000000..36be44f
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/ModuleRef.cs
@@ -0,0 +1,78 @@
+//
+// ModuleRefTable.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	internal sealed class ModuleRefTable : IMetadataTable {
+
+		public const int RId = 0x1a;
+
+		RowCollection m_rows;
+
+		public ModuleRefRow this [int index] {
+			get { return m_rows [index] as ModuleRefRow; }
+			set { m_rows [index] = value; }
+		}
+
+		public RowCollection Rows {
+			get { return m_rows; }
+			set { m_rows = value; }
+		}
+
+		public int Id {
+			get { return RId; }
+		}
+
+		internal ModuleRefTable ()
+		{
+		}
+
+		public void Accept (IMetadataTableVisitor visitor)
+		{
+			visitor.VisitModuleRefTable (this);
+			this.Rows.Accept (visitor.GetRowVisitor ());
+		}
+	}
+
+	internal sealed class ModuleRefRow : IMetadataRow {
+
+		public uint Name;
+
+		internal ModuleRefRow ()
+		{
+		}
+
+		public void Accept (IMetadataRowVisitor visitor)
+		{
+			visitor.VisitModuleRefRow (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/NestedClass.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/NestedClass.cs
new file mode 100644
index 0000000..14bc791
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/NestedClass.cs
@@ -0,0 +1,79 @@
+//
+// NestedClassTable.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	internal sealed class NestedClassTable : IMetadataTable {
+
+		public const int RId = 0x29;
+
+		RowCollection m_rows;
+
+		public NestedClassRow this [int index] {
+			get { return m_rows [index] as NestedClassRow; }
+			set { m_rows [index] = value; }
+		}
+
+		public RowCollection Rows {
+			get { return m_rows; }
+			set { m_rows = value; }
+		}
+
+		public int Id {
+			get { return RId; }
+		}
+
+		internal NestedClassTable ()
+		{
+		}
+
+		public void Accept (IMetadataTableVisitor visitor)
+		{
+			visitor.VisitNestedClassTable (this);
+			this.Rows.Accept (visitor.GetRowVisitor ());
+		}
+	}
+
+	internal sealed class NestedClassRow : IMetadataRow {
+
+		public uint NestedClass;
+		public uint EnclosingClass;
+
+		internal NestedClassRow ()
+		{
+		}
+
+		public void Accept (IMetadataRowVisitor visitor)
+		{
+			visitor.VisitNestedClassRow (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/Param.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/Param.cs
new file mode 100644
index 0000000..07f5cd5
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/Param.cs
@@ -0,0 +1,82 @@
+//
+// ParamTable.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	using Mono.Cecil;
+
+	internal sealed class ParamTable : IMetadataTable {
+
+		public const int RId = 0x08;
+
+		RowCollection m_rows;
+
+		public ParamRow this [int index] {
+			get { return m_rows [index] as ParamRow; }
+			set { m_rows [index] = value; }
+		}
+
+		public RowCollection Rows {
+			get { return m_rows; }
+			set { m_rows = value; }
+		}
+
+		public int Id {
+			get { return RId; }
+		}
+
+		internal ParamTable ()
+		{
+		}
+
+		public void Accept (IMetadataTableVisitor visitor)
+		{
+			visitor.VisitParamTable (this);
+			this.Rows.Accept (visitor.GetRowVisitor ());
+		}
+	}
+
+	internal sealed class ParamRow : IMetadataRow {
+
+		public ParameterAttributes Flags;
+		public ushort Sequence;
+		public uint Name;
+
+		internal ParamRow ()
+		{
+		}
+
+		public void Accept (IMetadataRowVisitor visitor)
+		{
+			visitor.VisitParamRow (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/ParamPtr.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/ParamPtr.cs
new file mode 100644
index 0000000..b6bf7ad
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/ParamPtr.cs
@@ -0,0 +1,78 @@
+//
+// ParamPtrTable.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Thu Feb 22 14:39:38 CET 2007
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	internal sealed class ParamPtrTable : IMetadataTable {
+
+		public const int RId = 0x07;
+
+		RowCollection m_rows;
+
+		public ParamPtrRow this [int index] {
+			get { return m_rows [index] as ParamPtrRow; }
+			set { m_rows [index] = value; }
+		}
+
+		public RowCollection Rows {
+			get { return m_rows; }
+			set { m_rows = value; }
+		}
+
+		public int Id {
+			get { return RId; }
+		}
+
+		internal ParamPtrTable ()
+		{
+		}
+
+		public void Accept (IMetadataTableVisitor visitor)
+		{
+			visitor.VisitParamPtrTable (this);
+			this.Rows.Accept (visitor.GetRowVisitor ());
+		}
+	}
+
+	internal sealed class ParamPtrRow : IMetadataRow {
+
+		public uint Param;
+
+		internal ParamPtrRow ()
+		{
+		}
+
+		public void Accept (IMetadataRowVisitor visitor)
+		{
+			visitor.VisitParamPtrRow (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/Property.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/Property.cs
new file mode 100644
index 0000000..08eaaf4
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/Property.cs
@@ -0,0 +1,82 @@
+//
+// PropertyTable.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	using Mono.Cecil;
+
+	internal sealed class PropertyTable : IMetadataTable {
+
+		public const int RId = 0x17;
+
+		RowCollection m_rows;
+
+		public PropertyRow this [int index] {
+			get { return m_rows [index] as PropertyRow; }
+			set { m_rows [index] = value; }
+		}
+
+		public RowCollection Rows {
+			get { return m_rows; }
+			set { m_rows = value; }
+		}
+
+		public int Id {
+			get { return RId; }
+		}
+
+		internal PropertyTable ()
+		{
+		}
+
+		public void Accept (IMetadataTableVisitor visitor)
+		{
+			visitor.VisitPropertyTable (this);
+			this.Rows.Accept (visitor.GetRowVisitor ());
+		}
+	}
+
+	internal sealed class PropertyRow : IMetadataRow {
+
+		public PropertyAttributes Flags;
+		public uint Name;
+		public uint Type;
+
+		internal PropertyRow ()
+		{
+		}
+
+		public void Accept (IMetadataRowVisitor visitor)
+		{
+			visitor.VisitPropertyRow (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/PropertyMap.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/PropertyMap.cs
new file mode 100644
index 0000000..83dd27e
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/PropertyMap.cs
@@ -0,0 +1,79 @@
+//
+// PropertyMapTable.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	internal sealed class PropertyMapTable : IMetadataTable {
+
+		public const int RId = 0x15;
+
+		RowCollection m_rows;
+
+		public PropertyMapRow this [int index] {
+			get { return m_rows [index] as PropertyMapRow; }
+			set { m_rows [index] = value; }
+		}
+
+		public RowCollection Rows {
+			get { return m_rows; }
+			set { m_rows = value; }
+		}
+
+		public int Id {
+			get { return RId; }
+		}
+
+		internal PropertyMapTable ()
+		{
+		}
+
+		public void Accept (IMetadataTableVisitor visitor)
+		{
+			visitor.VisitPropertyMapTable (this);
+			this.Rows.Accept (visitor.GetRowVisitor ());
+		}
+	}
+
+	internal sealed class PropertyMapRow : IMetadataRow {
+
+		public uint Parent;
+		public uint PropertyList;
+
+		internal PropertyMapRow ()
+		{
+		}
+
+		public void Accept (IMetadataRowVisitor visitor)
+		{
+			visitor.VisitPropertyMapRow (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/PropertyPtr.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/PropertyPtr.cs
new file mode 100644
index 0000000..abe6619
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/PropertyPtr.cs
@@ -0,0 +1,78 @@
+//
+// PropertyPtrTable.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Thu Feb 22 14:39:38 CET 2007
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	internal sealed class PropertyPtrTable : IMetadataTable {
+
+		public const int RId = 0x16;
+
+		RowCollection m_rows;
+
+		public PropertyPtrRow this [int index] {
+			get { return m_rows [index] as PropertyPtrRow; }
+			set { m_rows [index] = value; }
+		}
+
+		public RowCollection Rows {
+			get { return m_rows; }
+			set { m_rows = value; }
+		}
+
+		public int Id {
+			get { return RId; }
+		}
+
+		internal PropertyPtrTable ()
+		{
+		}
+
+		public void Accept (IMetadataTableVisitor visitor)
+		{
+			visitor.VisitPropertyPtrTable (this);
+			this.Rows.Accept (visitor.GetRowVisitor ());
+		}
+	}
+
+	internal sealed class PropertyPtrRow : IMetadataRow {
+
+		public uint Property;
+
+		internal PropertyPtrRow ()
+		{
+		}
+
+		public void Accept (IMetadataRowVisitor visitor)
+		{
+			visitor.VisitPropertyPtrRow (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/RowCollection.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/RowCollection.cs
new file mode 100644
index 0000000..e3ffe5c
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/RowCollection.cs
@@ -0,0 +1,125 @@
+//
+// RowCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	using System;
+	using System.Collections;
+
+	internal class RowCollection : ICollection, IMetadataRowVisitable {
+
+		ArrayList m_items;
+
+		public IMetadataRow this [int index] {
+			get { return m_items [index] as IMetadataRow; }
+			set { m_items [index] = value; }
+		}
+
+		public int Count {
+			get { return m_items.Count; }
+		}
+
+		public bool IsSynchronized {
+			get { return false; }
+		}
+
+		public object SyncRoot {
+			get { return this; }
+		}
+
+		internal RowCollection (int size)
+		{
+			m_items = new ArrayList (size);
+		}
+
+		internal RowCollection ()
+		{
+			m_items = new ArrayList ();
+		}
+
+		internal void Add (IMetadataRow value)
+		{
+			m_items.Add (value);
+		}
+
+		public void Clear ()
+		{
+			m_items.Clear ();
+		}
+
+		public bool Contains (IMetadataRow value)
+		{
+			return m_items.Contains (value);
+		}
+
+		public int IndexOf (IMetadataRow value)
+		{
+			return m_items.IndexOf (value);
+		}
+
+		public void Insert (int index, IMetadataRow value)
+		{
+			m_items.Insert (index, value);
+		}
+
+		public void Remove (IMetadataRow value)
+		{
+			m_items.Remove (value);
+		}
+
+		public void RemoveAt (int index)
+		{
+			m_items.Remove (index);
+		}
+
+		public void CopyTo (Array ary, int index)
+		{
+			m_items.CopyTo (ary, index);
+		}
+
+		public void Sort (IComparer comp)
+		{
+			m_items.Sort (comp);
+		}
+
+		public IEnumerator GetEnumerator ()
+		{
+			return m_items.GetEnumerator ();
+		}
+
+		public void Accept (IMetadataRowVisitor visitor)
+		{
+			visitor.VisitRowCollection (this);
+
+			for (int i = 0; i < m_items.Count; i++)
+				this [i].Accept (visitor);
+
+			visitor.TerminateRowCollection (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/StandAloneSig.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/StandAloneSig.cs
new file mode 100644
index 0000000..7097f82
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/StandAloneSig.cs
@@ -0,0 +1,78 @@
+//
+// StandAloneSigTable.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	internal sealed class StandAloneSigTable : IMetadataTable {
+
+		public const int RId = 0x11;
+
+		RowCollection m_rows;
+
+		public StandAloneSigRow this [int index] {
+			get { return m_rows [index] as StandAloneSigRow; }
+			set { m_rows [index] = value; }
+		}
+
+		public RowCollection Rows {
+			get { return m_rows; }
+			set { m_rows = value; }
+		}
+
+		public int Id {
+			get { return RId; }
+		}
+
+		internal StandAloneSigTable ()
+		{
+		}
+
+		public void Accept (IMetadataTableVisitor visitor)
+		{
+			visitor.VisitStandAloneSigTable (this);
+			this.Rows.Accept (visitor.GetRowVisitor ());
+		}
+	}
+
+	internal sealed class StandAloneSigRow : IMetadataRow {
+
+		public uint Signature;
+
+		internal StandAloneSigRow ()
+		{
+		}
+
+		public void Accept (IMetadataRowVisitor visitor)
+		{
+			visitor.VisitStandAloneSigRow (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/StringsHeap.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/StringsHeap.cs
new file mode 100644
index 0000000..0c6bcdf
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/StringsHeap.cs
@@ -0,0 +1,79 @@
+//
+// StringsHeap.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	using System.Collections;
+	using System.Text;
+
+	internal class StringsHeap : MetadataHeap {
+
+		IDictionary m_strings;
+
+		public string this [uint index] {
+			get {
+				string str = m_strings [index] as string;
+				if (str == null) {
+					str = ReadStringAt (index);
+					m_strings [index] = str;
+				}
+				return str;
+			}
+			set { m_strings [index] = value; }
+		}
+
+		internal StringsHeap (MetadataStream stream) : base (stream, MetadataStream.Strings)
+		{
+			m_strings = new Hashtable ();
+		}
+
+		string ReadStringAt (uint index)
+		{
+			byte [] data = this.Data;
+			int heap_length = data.Length;
+
+			if (index > heap_length - 1)
+				return string.Empty;
+
+			int length = 0;
+			for (int i = (int) index; i < heap_length; i++) {
+				if (data [i] == 0)
+					break;
+
+				length++;
+			}
+
+			return Encoding.UTF8.GetString (data, (int) index, length);
+		}
+
+		public override void Accept (IMetadataVisitor visitor)
+		{
+			visitor.VisitStringsHeap (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/TableCollection.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/TableCollection.cs
new file mode 100644
index 0000000..cb8a1cc
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/TableCollection.cs
@@ -0,0 +1,115 @@
+//
+// TableCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	using System;
+	using System.Collections;
+
+	internal class TableCollection : ICollection, IMetadataTableVisitable	{
+
+		IMetadataTable [] m_tables = new IMetadataTable [TablesHeap.MaxTableCount];
+
+		TablesHeap m_heap;
+
+		public IMetadataTable this [int index] {
+			get { return m_tables [index]; }
+			set { m_tables [index] = value; }
+		}
+
+		public int Count {
+			get {
+				return GetList ().Count;
+			}
+		}
+
+		public bool IsSynchronized {
+			get { return false; }
+		}
+
+		public object SyncRoot {
+			get { return this; }
+		}
+
+		public TablesHeap Heap {
+			get { return m_heap; }
+		}
+
+		internal TableCollection (TablesHeap heap)
+		{
+			m_heap = heap;
+		}
+
+		internal void Add (IMetadataTable value)
+		{
+			m_tables [value.Id] = value;
+		}
+
+		public bool Contains (IMetadataTable value)
+		{
+			return m_tables [value.Id] != null;
+		}
+
+		internal void Remove (IMetadataTable value)
+		{
+			m_tables [value.Id] = null;
+		}
+
+		public void CopyTo (Array array, int index)
+		{
+			GetList ().CopyTo (array, index);
+		}
+
+		internal IList GetList ()
+		{
+			IList tables = new ArrayList ();
+			for (int i = 0; i < m_tables.Length; i++) {
+				IMetadataTable table = m_tables [i];
+				if (table != null)
+					tables.Add (table);
+			}
+
+			return tables;
+		}
+
+		public IEnumerator GetEnumerator ()
+		{
+			return GetList ().GetEnumerator ();
+		}
+
+		public void Accept (IMetadataTableVisitor visitor)
+		{
+			visitor.VisitTableCollection (this);
+
+			foreach (IMetadataTable table in GetList ())
+				table.Accept (visitor);
+
+			visitor.TerminateTableCollection (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/TablesHeap.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/TablesHeap.cs
new file mode 100644
index 0000000..c4d502f
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/TablesHeap.cs
@@ -0,0 +1,73 @@
+//
+// TablesHeap.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	using System;
+	using System.Collections;
+
+	internal class TablesHeap : MetadataHeap {
+
+		public uint Reserved;
+		public byte MajorVersion;
+		public byte MinorVersion;
+		public byte HeapSizes;
+		public byte Reserved2;
+		public long Valid;
+		public long Sorted;
+
+		TableCollection m_tables;
+
+		public const int MaxTableCount = 45;
+
+		public TableCollection Tables {
+			get { return m_tables; }
+			set { m_tables = value; }
+		}
+
+		public IMetadataTable this [int id]
+		{
+			get { return m_tables [id]; }
+			set { m_tables [id] = value; }
+		}
+
+		internal TablesHeap (MetadataStream stream) : base(stream, MetadataStream.Tables)
+		{
+		}
+
+		public bool HasTable (int id)
+		{
+			return (Valid & (1L << id)) != 0;
+		}
+
+		public override void Accept (IMetadataVisitor visitor)
+		{
+			visitor.VisitTablesHeap (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/TokenType.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/TokenType.cs
new file mode 100644
index 0000000..5aafa22
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/TokenType.cs
@@ -0,0 +1,58 @@
+//
+// TokenType.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	internal enum TokenType : uint {
+		Module			  = 0x00000000,
+		TypeRef			 = 0x01000000,
+		TypeDef			 = 0x02000000,
+		Field			   = 0x04000000,
+		Method			  = 0x06000000,
+		Param			   = 0x08000000,
+		InterfaceImpl	   = 0x09000000,
+		MemberRef		   = 0x0a000000,
+		CustomAttribute	 = 0x0c000000,
+		Permission		  = 0x0e000000,
+		Signature		   = 0x11000000,
+		Event			   = 0x14000000,
+		Property			= 0x17000000,
+		ModuleRef		   = 0x1a000000,
+		TypeSpec			= 0x1b000000,
+		Assembly			= 0x20000000,
+		AssemblyRef		 = 0x23000000,
+		File				= 0x26000000,
+		ExportedType		= 0x27000000,
+		ManifestResource	= 0x28000000,
+		GenericParam			= 0x2a000000,
+		MethodSpec			= 0x2b000000,
+		String			  = 0x70000000,
+		Name				= 0x71000000,
+		BaseType			= 0x72000000
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/TypeDef.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/TypeDef.cs
new file mode 100644
index 0000000..47b9f7a
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/TypeDef.cs
@@ -0,0 +1,85 @@
+//
+// TypeDefTable.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	using Mono.Cecil;
+
+	internal sealed class TypeDefTable : IMetadataTable {
+
+		public const int RId = 0x02;
+
+		RowCollection m_rows;
+
+		public TypeDefRow this [int index] {
+			get { return m_rows [index] as TypeDefRow; }
+			set { m_rows [index] = value; }
+		}
+
+		public RowCollection Rows {
+			get { return m_rows; }
+			set { m_rows = value; }
+		}
+
+		public int Id {
+			get { return RId; }
+		}
+
+		internal TypeDefTable ()
+		{
+		}
+
+		public void Accept (IMetadataTableVisitor visitor)
+		{
+			visitor.VisitTypeDefTable (this);
+			this.Rows.Accept (visitor.GetRowVisitor ());
+		}
+	}
+
+	internal sealed class TypeDefRow : IMetadataRow {
+
+		public TypeAttributes Flags;
+		public uint Name;
+		public uint Namespace;
+		public MetadataToken Extends;
+		public uint FieldList;
+		public uint MethodList;
+
+		internal TypeDefRow ()
+		{
+		}
+
+		public void Accept (IMetadataRowVisitor visitor)
+		{
+			visitor.VisitTypeDefRow (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/TypeRef.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/TypeRef.cs
new file mode 100644
index 0000000..d54ca56
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/TypeRef.cs
@@ -0,0 +1,80 @@
+//
+// TypeRefTable.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	internal sealed class TypeRefTable : IMetadataTable {
+
+		public const int RId = 0x01;
+
+		RowCollection m_rows;
+
+		public TypeRefRow this [int index] {
+			get { return m_rows [index] as TypeRefRow; }
+			set { m_rows [index] = value; }
+		}
+
+		public RowCollection Rows {
+			get { return m_rows; }
+			set { m_rows = value; }
+		}
+
+		public int Id {
+			get { return RId; }
+		}
+
+		internal TypeRefTable ()
+		{
+		}
+
+		public void Accept (IMetadataTableVisitor visitor)
+		{
+			visitor.VisitTypeRefTable (this);
+			this.Rows.Accept (visitor.GetRowVisitor ());
+		}
+	}
+
+	internal sealed class TypeRefRow : IMetadataRow {
+
+		public MetadataToken ResolutionScope;
+		public uint Name;
+		public uint Namespace;
+
+		internal TypeRefRow ()
+		{
+		}
+
+		public void Accept (IMetadataRowVisitor visitor)
+		{
+			visitor.VisitTypeRefRow (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/TypeSpec.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/TypeSpec.cs
new file mode 100644
index 0000000..1a779a0
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/TypeSpec.cs
@@ -0,0 +1,78 @@
+//
+// TypeSpecTable.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Tue Oct 10 23:08:26 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	internal sealed class TypeSpecTable : IMetadataTable {
+
+		public const int RId = 0x1b;
+
+		RowCollection m_rows;
+
+		public TypeSpecRow this [int index] {
+			get { return m_rows [index] as TypeSpecRow; }
+			set { m_rows [index] = value; }
+		}
+
+		public RowCollection Rows {
+			get { return m_rows; }
+			set { m_rows = value; }
+		}
+
+		public int Id {
+			get { return RId; }
+		}
+
+		internal TypeSpecTable ()
+		{
+		}
+
+		public void Accept (IMetadataTableVisitor visitor)
+		{
+			visitor.VisitTypeSpecTable (this);
+			this.Rows.Accept (visitor.GetRowVisitor ());
+		}
+	}
+
+	internal sealed class TypeSpecRow : IMetadataRow {
+
+		public uint Signature;
+
+		internal TypeSpecRow ()
+		{
+		}
+
+		public void Accept (IMetadataRowVisitor visitor)
+		{
+			visitor.VisitTypeSpecRow (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Metadata/UserStringsHeap.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/UserStringsHeap.cs
new file mode 100644
index 0000000..b27e4f0
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Metadata/UserStringsHeap.cs
@@ -0,0 +1,77 @@
+//
+// UserStringsHeap.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Metadata {
+
+	using System.Collections;
+	using System.Text;
+
+	internal class UserStringsHeap : MetadataHeap {
+
+		readonly IDictionary m_strings;
+
+		public string this [uint offset] {
+			get {
+				string us = m_strings [offset] as string;
+				if (us != null)
+					return us;
+
+				us = ReadStringAt ((int) offset);
+				if (us != null && us.Length != 0)
+					m_strings [offset] = us;
+
+				return us;
+			}
+			set { m_strings [offset] = value; }
+		}
+
+		internal UserStringsHeap (MetadataStream stream) : base (stream, MetadataStream.UserStrings)
+		{
+			m_strings = new Hashtable ();
+		}
+
+		string ReadStringAt (int offset)
+		{
+			int length = Utilities.ReadCompressedInteger (this.Data, offset, out offset) - 1;
+			if (length < 1)
+				return string.Empty;
+
+			char [] chars = new char [length / 2];
+
+			for (int i = offset, j = 0; i < offset + length; i += 2)
+				chars [j++] = (char) (Data [i] | (Data [i + 1] << 8));
+
+			return new string (chars);
+		}
+
+		public override void Accept (IMetadataVisitor visitor)
+		{
+			visitor.VisitUserStringsHeap (this);
+		}
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Utilities.cs b/mcs/tools/cil-strip/Mono.Cecil.Metadata/Utilities.cs
similarity index 100%
copy from mcs/class/Mono.Cecil/Mono.Cecil.Metadata/Utilities.cs
copy to mcs/tools/cil-strip/Mono.Cecil.Metadata/Utilities.cs
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/Array.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/Array.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil.Signatures/Array.cs
rename to mcs/tools/cil-strip/Mono.Cecil.Signatures/Array.cs
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/ArrayShape.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/ArrayShape.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil.Signatures/ArrayShape.cs
rename to mcs/tools/cil-strip/Mono.Cecil.Signatures/ArrayShape.cs
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/BaseSignatureVisitor.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/BaseSignatureVisitor.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil.Signatures/BaseSignatureVisitor.cs
rename to mcs/tools/cil-strip/Mono.Cecil.Signatures/BaseSignatureVisitor.cs
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/Class.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/Class.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil.Signatures/Class.cs
rename to mcs/tools/cil-strip/Mono.Cecil.Signatures/Class.cs
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/Constraint.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/Constraint.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil.Signatures/Constraint.cs
rename to mcs/tools/cil-strip/Mono.Cecil.Signatures/Constraint.cs
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Signatures/CustomAttrib.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/CustomAttrib.cs
new file mode 100644
index 0000000..3ad8e9c
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Signatures/CustomAttrib.cs
@@ -0,0 +1,84 @@
+//
+// CustomAttrib.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Signatures {
+
+	using Mono.Cecil.Metadata;
+
+	internal sealed class CustomAttrib {
+
+		public const ushort StdProlog = 0x0001;
+
+		public MethodReference Constructor;
+
+		public ushort Prolog;
+		public FixedArg [] FixedArgs;
+		public ushort NumNamed;
+		public NamedArg [] NamedArgs;
+		public bool Read;
+
+		public CustomAttrib (MethodReference ctor)
+		{
+			Constructor = ctor;
+		}
+
+		internal struct FixedArg {
+
+			public bool SzArray;
+			public uint NumElem;
+			public Elem [] Elems;
+
+			internal static FixedArg [] Empty = new FixedArg [0];
+		}
+
+		internal struct Elem {
+
+			public bool Simple;
+			public bool String;
+			public bool Type;
+			public bool BoxedValueType;
+
+			public ElementType FieldOrPropType;
+			public object Value;
+
+			public TypeReference ElemType;
+		}
+
+		internal struct NamedArg {
+
+			public bool Field;
+			public bool Property;
+
+			public ElementType FieldOrPropType;
+			public string FieldOrPropName;
+			public FixedArg FixedArg;
+
+			internal static NamedArg [] Empty = new NamedArg [0];
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Signatures/CustomMod.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/CustomMod.cs
new file mode 100644
index 0000000..195dc4f
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Signatures/CustomMod.cs
@@ -0,0 +1,50 @@
+//
+// CustomMod.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Signatures {
+
+	using Mono.Cecil.Metadata;
+
+	internal sealed class CustomMod {
+
+		public static CustomMod [] EmptyCustomMod = new CustomMod [0];
+
+		internal enum CMODType : byte {
+			None = 0x0,
+			OPT = (byte) ElementType.CModOpt,
+			REQD = (byte) ElementType.CModReqD
+		}
+
+		public CMODType CMOD;
+		public MetadataToken TypeDefOrRef;
+
+		public CustomMod ()
+		{
+		}
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/FieldSig.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/FieldSig.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil.Signatures/FieldSig.cs
rename to mcs/tools/cil-strip/Mono.Cecil.Signatures/FieldSig.cs
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/FnPtr.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/FnPtr.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil.Signatures/FnPtr.cs
rename to mcs/tools/cil-strip/Mono.Cecil.Signatures/FnPtr.cs
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/GenericArg.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/GenericArg.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil.Signatures/GenericArg.cs
rename to mcs/tools/cil-strip/Mono.Cecil.Signatures/GenericArg.cs
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/GenericInst.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/GenericInst.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil.Signatures/GenericInst.cs
rename to mcs/tools/cil-strip/Mono.Cecil.Signatures/GenericInst.cs
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/GenericInstSignature.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/GenericInstSignature.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil.Signatures/GenericInstSignature.cs
rename to mcs/tools/cil-strip/Mono.Cecil.Signatures/GenericInstSignature.cs
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/ISignatureVisitable.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/ISignatureVisitable.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil.Signatures/ISignatureVisitable.cs
rename to mcs/tools/cil-strip/Mono.Cecil.Signatures/ISignatureVisitable.cs
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/ISignatureVisitor.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/ISignatureVisitor.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil.Signatures/ISignatureVisitor.cs
rename to mcs/tools/cil-strip/Mono.Cecil.Signatures/ISignatureVisitor.cs
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/InputOutputItem.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/InputOutputItem.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil.Signatures/InputOutputItem.cs
rename to mcs/tools/cil-strip/Mono.Cecil.Signatures/InputOutputItem.cs
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Signatures/LocalVarSig.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/LocalVarSig.cs
new file mode 100644
index 0000000..5f8f737
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Signatures/LocalVarSig.cs
@@ -0,0 +1,58 @@
+//
+// LocalVarSig.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Signatures {
+
+	internal sealed class LocalVarSig : Signature {
+
+		public bool Local;
+		public int Count;
+		public LocalVariable [] LocalVariables;
+
+		public LocalVarSig () : base ()
+		{
+		}
+
+		public LocalVarSig (uint blobIndex) : base (blobIndex)
+		{
+		}
+
+		public override void Accept (ISignatureVisitor visitor)
+		{
+			visitor.VisitLocalVarSig (this);
+		}
+
+		internal struct LocalVariable {
+
+			public CustomMod [] CustomMods;
+			public Constraint Constraint;
+			public bool ByRef;
+			public SigType Type;
+		}
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/MVar.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/MVar.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil.Signatures/MVar.cs
rename to mcs/tools/cil-strip/Mono.Cecil.Signatures/MVar.cs
diff --git a/mcs/tools/cil-strip/Mono.Cecil.Signatures/MarshalSig.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/MarshalSig.cs
new file mode 100644
index 0000000..89b7102
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil.Signatures/MarshalSig.cs
@@ -0,0 +1,93 @@
+//
+// MarshalSig.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil.Signatures {
+
+	using System;
+
+	using Mono.Cecil;
+
+	internal sealed class MarshalSig {
+
+		public NativeType NativeInstrinsic;
+		public IMarshalSigSpec Spec;
+
+		public MarshalSig (NativeType nt)
+		{
+			this.NativeInstrinsic = nt;
+		}
+
+		internal interface IMarshalSigSpec {
+		}
+
+		internal sealed class Array : IMarshalSigSpec {
+
+			public NativeType ArrayElemType;
+			public int ParamNum;
+			public int ElemMult;
+			public int NumElem;
+
+			public Array ()
+			{
+				this.ParamNum = 0;
+				this.ElemMult = 0;
+				this.NumElem = 0;
+			}
+		}
+
+		internal sealed class CustomMarshaler : IMarshalSigSpec {
+
+			public string Guid;
+			public string UnmanagedType;
+			public string ManagedType;
+			public string Cookie;
+		}
+
+		internal sealed class FixedArray : IMarshalSigSpec {
+
+			public int NumElem;
+			public NativeType ArrayElemType;
+
+			public FixedArray ()
+			{
+				this.NumElem = 0;
+				this.ArrayElemType = NativeType.NONE;
+			}
+		}
+
+		internal sealed class SafeArray : IMarshalSigSpec {
+
+			public VariantType ArrayElemType;
+		}
+
+		internal sealed class FixedSysString : IMarshalSigSpec {
+
+			public int Size;
+		}
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/MethodDefSig.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/MethodDefSig.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil.Signatures/MethodDefSig.cs
rename to mcs/tools/cil-strip/Mono.Cecil.Signatures/MethodDefSig.cs
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/MethodRefSig.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/MethodRefSig.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil.Signatures/MethodRefSig.cs
rename to mcs/tools/cil-strip/Mono.Cecil.Signatures/MethodRefSig.cs
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/MethodSig.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/MethodSig.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil.Signatures/MethodSig.cs
rename to mcs/tools/cil-strip/Mono.Cecil.Signatures/MethodSig.cs
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/MethodSpec.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/MethodSpec.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil.Signatures/MethodSpec.cs
rename to mcs/tools/cil-strip/Mono.Cecil.Signatures/MethodSpec.cs
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/Param.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/Param.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil.Signatures/Param.cs
rename to mcs/tools/cil-strip/Mono.Cecil.Signatures/Param.cs
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/PropertySig.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/PropertySig.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil.Signatures/PropertySig.cs
rename to mcs/tools/cil-strip/Mono.Cecil.Signatures/PropertySig.cs
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/Ptr.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/Ptr.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil.Signatures/Ptr.cs
rename to mcs/tools/cil-strip/Mono.Cecil.Signatures/Ptr.cs
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/RetType.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/RetType.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil.Signatures/RetType.cs
rename to mcs/tools/cil-strip/Mono.Cecil.Signatures/RetType.cs
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/SigType.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/SigType.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil.Signatures/SigType.cs
rename to mcs/tools/cil-strip/Mono.Cecil.Signatures/SigType.cs
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/Signature.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/Signature.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil.Signatures/Signature.cs
rename to mcs/tools/cil-strip/Mono.Cecil.Signatures/Signature.cs
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/SignatureReader.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/SignatureReader.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil.Signatures/SignatureReader.cs
rename to mcs/tools/cil-strip/Mono.Cecil.Signatures/SignatureReader.cs
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/SignatureWriter.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/SignatureWriter.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil.Signatures/SignatureWriter.cs
rename to mcs/tools/cil-strip/Mono.Cecil.Signatures/SignatureWriter.cs
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/SzArray.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/SzArray.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil.Signatures/SzArray.cs
rename to mcs/tools/cil-strip/Mono.Cecil.Signatures/SzArray.cs
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/TypeSpec.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/TypeSpec.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil.Signatures/TypeSpec.cs
rename to mcs/tools/cil-strip/Mono.Cecil.Signatures/TypeSpec.cs
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/ValueType.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/ValueType.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil.Signatures/ValueType.cs
rename to mcs/tools/cil-strip/Mono.Cecil.Signatures/ValueType.cs
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil.Signatures/Var.cs b/mcs/tools/cil-strip/Mono.Cecil.Signatures/Var.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil.Signatures/Var.cs
rename to mcs/tools/cil-strip/Mono.Cecil.Signatures/Var.cs
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/AggressiveReflectionReader.cs b/mcs/tools/cil-strip/Mono.Cecil/AggressiveReflectionReader.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil/AggressiveReflectionReader.cs
rename to mcs/tools/cil-strip/Mono.Cecil/AggressiveReflectionReader.cs
diff --git a/mcs/tools/cil-strip/Mono.Cecil/ArrayDimension.cs b/mcs/tools/cil-strip/Mono.Cecil/ArrayDimension.cs
new file mode 100644
index 0000000..7e94599
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/ArrayDimension.cs
@@ -0,0 +1,59 @@
+//
+// ArrayDimension.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	internal sealed class ArrayDimension {
+
+		int m_lowerBound;
+		int m_upperBound;
+
+		public int LowerBound {
+			get { return m_lowerBound; }
+			set { m_lowerBound = value; }
+		}
+
+		public int UpperBound {
+			get { return m_upperBound; }
+			set { m_upperBound = value; }
+		}
+
+		public ArrayDimension (int lb, int ub)
+		{
+			m_lowerBound = lb;
+			m_upperBound = ub;
+		}
+
+		public override string ToString ()
+		{
+			if (m_upperBound == 0)
+				return string.Empty;
+			return string.Concat (m_lowerBound, "...", m_upperBound);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/ArrayDimensionCollection.cs b/mcs/tools/cil-strip/Mono.Cecil/ArrayDimensionCollection.cs
new file mode 100644
index 0000000..e7b5082
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/ArrayDimensionCollection.cs
@@ -0,0 +1,88 @@
+//
+// ArrayDimensionCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Wed Sep 27 12:46:53 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System;
+	using System.Collections;
+
+	using Mono.Cecil.Cil;
+
+	internal sealed class ArrayDimensionCollection : CollectionBase {
+
+		ArrayType m_container;
+
+		public ArrayDimension this [int index] {
+			get { return List [index] as ArrayDimension; }
+			set { List [index] = value; }
+		}
+
+		public ArrayType Container {
+			get { return m_container; }
+		}
+
+		public ArrayDimensionCollection (ArrayType container)
+		{
+			m_container = container;
+		}
+
+		public void Add (ArrayDimension value)
+		{
+			List.Add (value);
+		}
+
+		public bool Contains (ArrayDimension value)
+		{
+			return List.Contains (value);
+		}
+
+		public int IndexOf (ArrayDimension value)
+		{
+			return List.IndexOf (value);
+		}
+
+		public void Insert (int index, ArrayDimension value)
+		{
+			List.Insert (index, value);
+		}
+
+		public void Remove (ArrayDimension value)
+		{
+			List.Remove (value);
+		}
+
+		protected override void OnValidate (object o)
+		{
+			if (! (o is ArrayDimension))
+				throw new ArgumentException ("Must be of type " + typeof (ArrayDimension).FullName);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/ArrayType.cs b/mcs/tools/cil-strip/Mono.Cecil/ArrayType.cs
new file mode 100644
index 0000000..e06a8eb
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/ArrayType.cs
@@ -0,0 +1,109 @@
+//
+// ArrayType.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System.Text;
+
+	using Mono.Cecil.Signatures;
+
+	internal sealed class ArrayType : TypeSpecification {
+
+		private ArrayDimensionCollection m_dimensions;
+
+		public ArrayDimensionCollection Dimensions {
+			get { return m_dimensions; }
+		}
+
+		public int Rank {
+			get { return m_dimensions.Count; }
+		}
+
+		public bool IsSizedArray {
+			get {
+				if (this.Rank != 1)
+					return false;
+				ArrayDimension dim = m_dimensions [0];
+				return dim.UpperBound == 0;
+			}
+		}
+
+		public override string Name {
+			get { return string.Concat (base.Name, Suffix ()); }
+		}
+
+		public override string FullName {
+			get { return string.Concat (base.FullName, Suffix ()); }
+		}
+
+		string Suffix ()
+		{
+			StringBuilder sb = new StringBuilder ();
+			sb.Append ("[");
+			for (int i = 0; i < m_dimensions.Count; i++) {
+				ArrayDimension dim = m_dimensions [i];
+				string rank = dim.ToString ();
+				if (i < m_dimensions.Count - 1)
+					sb.Append (",");
+				if (rank.Length > 0) {
+					sb.Append (" ");
+					sb.Append (rank);
+				}
+			}
+			sb.Append ("]");
+			return sb.ToString ();
+		}
+
+		internal ArrayType (TypeReference elementType, ArrayShape shape) : base (elementType)
+		{
+			m_dimensions = new ArrayDimensionCollection (this);
+			for (int i = 0; i < shape.Rank; i++) {
+				int lower = 0, upper = 0;
+				if (i < shape.NumSizes)
+					if (i < shape.NumLoBounds) {
+						lower = shape.LoBounds [i];
+						upper = shape.LoBounds [i] + shape.Sizes [i] - 1;
+					} else
+						upper = shape.Sizes [i] - 1;
+
+				m_dimensions.Add (new ArrayDimension (lower, upper));
+			}
+		}
+
+		public ArrayType (TypeReference elementType, int rank) : base (elementType)
+		{
+			m_dimensions = new ArrayDimensionCollection (this);
+			for (int i = 0; i < rank; i++)
+				m_dimensions.Add (new ArrayDimension (0, 0));
+		}
+
+		public ArrayType (TypeReference elementType) : this (elementType, 1)
+		{
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/AssemblyDefinition.cs b/mcs/tools/cil-strip/Mono.Cecil/AssemblyDefinition.cs
new file mode 100644
index 0000000..b0c3aa6
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/AssemblyDefinition.cs
@@ -0,0 +1,169 @@
+//
+// AssemblyDefinition.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System;
+	using System.Collections;
+
+	using Mono.Cecil.Metadata;
+
+	internal class AssemblyDefinition : ICustomAttributeProvider,
+		IHasSecurity, IAnnotationProvider, IReflectionStructureVisitable {
+
+		MetadataToken m_token;
+		AssemblyNameDefinition m_asmName;
+		ModuleDefinitionCollection m_modules;
+		SecurityDeclarationCollection m_secDecls;
+		CustomAttributeCollection m_customAttrs;
+		MethodDefinition m_ep;
+		TargetRuntime m_runtime;
+		AssemblyKind m_kind;
+
+		ModuleDefinition m_mainModule;
+		StructureReader m_reader;
+
+		IAssemblyResolver m_resolver;
+		IDictionary m_annotations;
+
+		public MetadataToken MetadataToken {
+			get { return m_token; }
+			set { m_token = value; }
+		}
+
+		public AssemblyNameDefinition Name {
+			get { return m_asmName; }
+		}
+
+		public ModuleDefinitionCollection Modules {
+			get { return m_modules; }
+		}
+
+		public bool HasSecurityDeclarations {
+			get { return (m_secDecls == null) ? false : (m_secDecls.Count > 0); }
+		}
+
+		public SecurityDeclarationCollection SecurityDeclarations {
+			get {
+				if (m_secDecls == null)
+					m_secDecls = new SecurityDeclarationCollection (this);
+
+				return m_secDecls;
+			}
+		}
+
+		public bool HasCustomAttributes {
+			get { return (m_customAttrs == null) ? false : (m_customAttrs.Count > 0); }
+		}
+
+		public CustomAttributeCollection CustomAttributes {
+			get {
+				if (m_customAttrs == null)
+					m_customAttrs = new CustomAttributeCollection (this);
+
+				return m_customAttrs;
+			}
+		}
+
+		public MethodDefinition EntryPoint {
+			get { return m_ep; }
+			set { m_ep = value; }
+		}
+
+		public TargetRuntime Runtime {
+			get { return m_runtime; }
+			set { m_runtime = value; }
+		}
+
+		public AssemblyKind Kind {
+			get { return m_kind; }
+			set { m_kind = value; }
+		}
+
+		public ModuleDefinition MainModule {
+			get {
+				if (m_mainModule == null) {
+					foreach (ModuleDefinition module in m_modules) {
+						if (module.Main) {
+							m_mainModule = module;
+							break;
+						}
+					}
+				}
+				return m_mainModule;
+			}
+		}
+
+		internal StructureReader Reader {
+			get { return m_reader; }
+		}
+
+		public IAssemblyResolver Resolver {
+			get { return m_resolver; }
+			set { m_resolver = value; }
+		}
+
+		IDictionary IAnnotationProvider.Annotations {
+			get {
+				if (m_annotations == null)
+					m_annotations = new Hashtable ();
+				return m_annotations;
+			}
+		}
+
+		internal AssemblyDefinition (AssemblyNameDefinition name)
+		{
+			if (name == null)
+				throw new ArgumentNullException ("name");
+
+			m_asmName = name;
+			m_modules = new ModuleDefinitionCollection (this);
+			m_resolver = new DefaultAssemblyResolver ();
+		}
+
+		internal AssemblyDefinition (AssemblyNameDefinition name, StructureReader reader) : this (name)
+		{
+			m_reader = reader;
+		}
+
+		public void Accept (IReflectionStructureVisitor visitor)
+		{
+			visitor.VisitAssemblyDefinition (this);
+
+			m_asmName.Accept (visitor);
+			m_modules.Accept (visitor);
+
+			visitor.TerminateAssemblyDefinition (this);
+		}
+
+		public override string ToString ()
+		{
+			return m_asmName.FullName;
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/AssemblyFactory.cs b/mcs/tools/cil-strip/Mono.Cecil/AssemblyFactory.cs
new file mode 100644
index 0000000..8a63627
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/AssemblyFactory.cs
@@ -0,0 +1,183 @@
+//
+// AssemblyFactory.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System;
+	using System.IO;
+	using SR = System.Reflection;
+
+	using Mono.Cecil.Binary;
+
+	internal sealed class AssemblyFactory {
+
+		AssemblyFactory ()
+		{
+		}
+
+		static AssemblyDefinition GetAssembly (ImageReader irv, bool manifestOnly)
+		{
+			StructureReader srv = new StructureReader (irv, manifestOnly);
+			AssemblyDefinition asm = new AssemblyDefinition (
+				new AssemblyNameDefinition (), srv);
+
+			asm.Accept (srv);
+			return asm;
+		}
+
+		static AssemblyDefinition GetAssembly (ImageReader reader)
+		{
+			return GetAssembly (reader, false);
+		}
+
+		static AssemblyDefinition GetAssemblyManifest (ImageReader reader)
+		{
+			return GetAssembly (reader, true);
+		}
+
+		public static AssemblyDefinition GetAssembly (string file)
+		{
+			return GetAssembly (ImageReader.Read (file));
+		}
+
+		public static AssemblyDefinition GetAssembly (byte [] assembly)
+		{
+			return GetAssembly (ImageReader.Read (assembly));
+		}
+
+		public static AssemblyDefinition GetAssembly (Stream stream)
+		{
+			return GetAssembly (ImageReader.Read (stream));
+		}
+
+		public static AssemblyDefinition GetAssemblyManifest (string file)
+		{
+			return GetAssemblyManifest (ImageReader.Read (file));
+		}
+
+		public static AssemblyDefinition GetAssemblyManifest (byte [] assembly)
+		{
+			return GetAssemblyManifest (ImageReader.Read (assembly));
+		}
+
+		public static AssemblyDefinition GetAssemblyManifest (Stream stream)
+		{
+			return GetAssemblyManifest (ImageReader.Read (stream));
+		}
+
+		static TargetRuntime CurrentRuntime ()
+		{
+			Version corlib = typeof (object).Assembly.GetName ().Version;
+
+			switch (corlib.Major) {
+			case 1:
+				return corlib.Minor == 0 ? TargetRuntime.NET_1_0 : TargetRuntime.NET_1_1;
+			case 2:
+				return TargetRuntime.NET_2_0;
+			case 4:
+				return TargetRuntime.NET_4_0;
+			default:
+				throw new NotSupportedException ();
+			}
+		}
+
+		public static AssemblyDefinition DefineAssembly (string name, AssemblyKind kind)
+		{
+			return DefineAssembly (name, name, CurrentRuntime (), kind);
+		}
+
+		public static AssemblyDefinition DefineAssembly (string name, TargetRuntime rt, AssemblyKind kind)
+		{
+			return DefineAssembly (name, name, rt, kind);
+		}
+
+		public static AssemblyDefinition DefineAssembly (string assemblyName, string moduleName, TargetRuntime rt, AssemblyKind kind)
+		{
+			AssemblyNameDefinition asmName = new AssemblyNameDefinition ();
+			asmName.Name = assemblyName;
+			AssemblyDefinition asm = new AssemblyDefinition (asmName);
+			asm.Runtime = rt;
+			asm.Kind = kind;
+			ModuleDefinition main = new ModuleDefinition (moduleName, asm, true);
+			asm.Modules.Add (main);
+			return asm;
+		}
+
+		static void WriteAssembly (AssemblyDefinition asm, BinaryWriter bw)
+		{
+			asm.Accept (new StructureWriter (asm, bw));
+		}
+
+		public static void SaveAssembly (AssemblyDefinition asm, string file)
+		{
+			using (FileStream fs = new FileStream (
+				file, FileMode.Create, FileAccess.Write, FileShare.None)) {
+
+				SaveAssembly (asm, fs);
+				asm.MainModule.Image.SetFileInfo (new FileInfo (file));
+			}
+		}
+
+		public static void SaveAssembly (AssemblyDefinition asm, out byte [] assembly)
+		{
+			MemoryBinaryWriter bw = new MemoryBinaryWriter ();
+			SaveAssembly (asm, bw.BaseStream);
+			assembly = bw.ToArray ();
+		}
+
+		public static void SaveAssembly (AssemblyDefinition asm, Stream stream)
+		{
+			BinaryWriter bw = new BinaryWriter (stream);
+			try {
+				WriteAssembly (asm, bw);
+			} finally {
+				bw.Close ();
+			}
+
+			foreach (ModuleDefinition module in asm.Modules)
+				if (module.Controller.Writer.SaveSymbols)
+					module.Controller.Writer.WriteSymbols (module);
+		}
+
+#if !CF_1_0 && !CF_2_0
+		public static SR.Assembly CreateReflectionAssembly (AssemblyDefinition asm, AppDomain domain)
+		{
+			using (MemoryBinaryWriter writer = new MemoryBinaryWriter ()) {
+
+				WriteAssembly (asm, writer);
+				return domain.Load (writer.ToArray ());
+			}
+		}
+
+		public static SR.Assembly CreateReflectionAssembly (AssemblyDefinition asm)
+		{
+			return CreateReflectionAssembly (asm, AppDomain.CurrentDomain);
+		}
+#endif
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/AssemblyFlags.cs b/mcs/tools/cil-strip/Mono.Cecil/AssemblyFlags.cs
new file mode 100644
index 0000000..bc2980d
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/AssemblyFlags.cs
@@ -0,0 +1,41 @@
+//
+// AssemblyFlags.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System;
+
+	[Flags]
+	internal enum AssemblyFlags : uint {
+		PublicKey					 	= 0x0001,
+		SideBySideCompatible			= 0x0000,
+		Retargetable					= 0x0100,
+		EnableJITcompileTracking		= 0x8000,
+		DisableJITcompileOptimizer	  	= 0x4000
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/AssemblyHashAlgorithm.cs b/mcs/tools/cil-strip/Mono.Cecil/AssemblyHashAlgorithm.cs
new file mode 100644
index 0000000..c95c842
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/AssemblyHashAlgorithm.cs
@@ -0,0 +1,37 @@
+//
+// AssemblyHashAlgorithm.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	internal enum AssemblyHashAlgorithm : uint {
+		None		= 0x0000,
+		Reserved	= 0x8003,	// MD5
+		SHA1		= 0x8004
+	}
+}
+
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/AssemblyInfo.cs b/mcs/tools/cil-strip/Mono.Cecil/AssemblyInfo.cs
similarity index 100%
copy from mcs/class/Mono.Cecil/Mono.Cecil/AssemblyInfo.cs
copy to mcs/tools/cil-strip/Mono.Cecil/AssemblyInfo.cs
diff --git a/mcs/tools/cil-strip/Mono.Cecil/AssemblyKind.cs b/mcs/tools/cil-strip/Mono.Cecil/AssemblyKind.cs
new file mode 100644
index 0000000..a4b7e46
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/AssemblyKind.cs
@@ -0,0 +1,36 @@
+//
+// AssemblyKind.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	internal enum AssemblyKind {
+		Dll,
+		Console,
+		Windows
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/AssemblyLinkedResource.cs b/mcs/tools/cil-strip/Mono.Cecil/AssemblyLinkedResource.cs
new file mode 100644
index 0000000..2b30344
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/AssemblyLinkedResource.cs
@@ -0,0 +1,51 @@
+//
+// AssemblyLinkedResource.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	internal sealed class AssemblyLinkedResource : Resource {
+
+		private AssemblyNameReference m_asmRef;
+
+		public AssemblyNameReference Assembly {
+			get { return m_asmRef; }
+			set { m_asmRef = value; }
+		}
+
+		public AssemblyLinkedResource (string name, ManifestResourceAttributes flags,
+			AssemblyNameReference asmRef) : base (name, flags)
+		{
+			m_asmRef = asmRef;
+		}
+
+		public override void Accept (IReflectionStructureVisitor visitor)
+		{
+			visitor.VisitAssemblyLinkedResource (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/AssemblyNameDefinition.cs b/mcs/tools/cil-strip/Mono.Cecil/AssemblyNameDefinition.cs
new file mode 100644
index 0000000..ef36e08
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/AssemblyNameDefinition.cs
@@ -0,0 +1,52 @@
+//
+// AssemblyNameDefinition.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System;
+
+	internal sealed class AssemblyNameDefinition : AssemblyNameReference {
+
+		public override byte [] Hash {
+			get { return new byte [0]; }
+		}
+
+		public AssemblyNameDefinition () : base()
+		{
+		}
+
+		public AssemblyNameDefinition (string name, string culture, Version version) : base (name, culture, version)
+		{
+		}
+
+		public override void Accept (IReflectionStructureVisitor visitor)
+		{
+			visitor.VisitAssemblyNameDefinition (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/AssemblyNameReference.cs b/mcs/tools/cil-strip/Mono.Cecil/AssemblyNameReference.cs
new file mode 100644
index 0000000..3d2278a
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/AssemblyNameReference.cs
@@ -0,0 +1,275 @@
+//
+// AssemblyNameReference.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System;
+	using System.Collections;
+	using System.Globalization;
+	using System.Security.Cryptography;
+	using System.Text;
+
+	using Mono.Cecil.Metadata;
+
+	internal class AssemblyNameReference : IMetadataScope, IAnnotationProvider, IReflectionStructureVisitable {
+
+		string m_name;
+		string m_culture;
+		Version m_version;
+		AssemblyFlags m_flags;
+		byte [] m_publicKey;
+		byte [] m_publicKeyToken;
+		AssemblyHashAlgorithm m_hashAlgo;
+		byte [] m_hash;
+		MetadataToken m_token;
+		IDictionary m_annotations;
+
+		bool m_fullNameDiscarded = true;
+		string m_fullName;
+
+		public string Name {
+			get { return m_name; }
+			set {
+				m_name = value;
+				m_fullNameDiscarded = true;
+			}
+		}
+
+		public string Culture {
+			get { return m_culture; }
+			set {
+				m_culture = value;
+				m_fullNameDiscarded = true;
+			}
+		}
+
+		public Version Version {
+			get { return m_version; }
+			set {
+				 m_version = value;
+				 m_fullNameDiscarded = true;
+			}
+		}
+
+		public AssemblyFlags Flags {
+			get { return m_flags; }
+			set { m_flags = value; }
+		}
+
+		public bool HasPublicKey {
+			get { return (m_flags & AssemblyFlags.PublicKey) != 0; }
+			set {
+				if (value)
+					m_flags |= AssemblyFlags.PublicKey;
+				else
+					m_flags &= ~AssemblyFlags.PublicKey;
+			}
+		}
+
+		public bool IsSideBySideCompatible {
+			get { return (m_flags & AssemblyFlags.SideBySideCompatible) != 0; }
+			set {
+				if (value)
+					m_flags |= AssemblyFlags.SideBySideCompatible;
+				else
+					m_flags &= ~AssemblyFlags.SideBySideCompatible;
+			}
+		}
+
+		public bool IsRetargetable {
+			get { return (m_flags & AssemblyFlags.Retargetable) != 0; }
+			set {
+				if (value)
+					m_flags |= AssemblyFlags.Retargetable;
+				else
+					m_flags &= ~AssemblyFlags.Retargetable;
+			}
+		}
+
+		public byte [] PublicKey {
+			get { return m_publicKey; }
+			set {
+				m_publicKey = value;
+				m_publicKeyToken = null;
+				m_fullNameDiscarded = true;
+			}
+		}
+
+		public byte [] PublicKeyToken {
+			get {
+#if !CF_1_0
+				if ((m_publicKeyToken == null || m_publicKeyToken.Length == 0) && (m_publicKey != null && m_publicKey.Length > 0)) {
+					HashAlgorithm ha;
+					switch (m_hashAlgo) {
+					case AssemblyHashAlgorithm.Reserved:
+						ha = MD5.Create (); break;
+					default:
+						// None default to SHA1
+						ha = SHA1.Create (); break;
+					}
+					byte [] hash = ha.ComputeHash (m_publicKey);
+					// we need the last 8 bytes in reverse order
+					m_publicKeyToken = new byte [8];
+					Array.Copy (hash, (hash.Length - 8), m_publicKeyToken, 0, 8);
+					Array.Reverse (m_publicKeyToken, 0, 8);
+				}
+#endif
+				return m_publicKeyToken;
+			}
+			set {
+				m_publicKeyToken = value;
+				m_fullNameDiscarded = true;
+			}
+		}
+
+		public string FullName {
+			get {
+				if (m_fullName != null && !m_fullNameDiscarded)
+					return m_fullName;
+
+				StringBuilder sb = new StringBuilder ();
+				string sep = ", ";
+				sb.Append (m_name);
+				if (m_version != null) {
+					sb.Append (sep);
+					sb.Append ("Version=");
+					sb.Append (m_version.ToString ());
+				}
+				sb.Append (sep);
+				sb.Append ("Culture=");
+				sb.Append (m_culture == null || m_culture.Length == 0 ? "neutral" : m_culture);
+				sb.Append (sep);
+				sb.Append ("PublicKeyToken=");
+				if (this.PublicKeyToken != null && m_publicKeyToken.Length > 0) {
+					for (int i = 0 ; i < m_publicKeyToken.Length ; i++) {
+						sb.Append (m_publicKeyToken [i].ToString ("x2"));
+					}
+				} else {
+					sb.Append ("null");
+				}
+				m_fullName = sb.ToString ();
+				m_fullNameDiscarded = false;
+				return m_fullName;
+			}
+		}
+
+		public static AssemblyNameReference Parse (string fullName)
+		{
+			if (fullName == null)
+				throw new ArgumentNullException ("fullName");
+			if (fullName.Length == 0)
+				throw new ArgumentException ("Name can not be empty");
+
+			AssemblyNameReference name = new AssemblyNameReference ();
+			string [] tokens = fullName.Split (',');
+			for (int i = 0; i < tokens.Length; i++) {
+				string token = tokens [i].Trim ();
+
+				if (i == 0) {
+					name.Name = token;
+					continue;
+				}
+
+				string [] parts = token.Split ('=');
+				if (parts.Length != 2)
+					throw new ArgumentException ("Malformed name");
+
+				switch (parts [0]) {
+				case "Version":
+					name.Version = new Version (parts [1]);
+					break;
+				case "Culture":
+					name.Culture = parts [1];
+					break;
+				case "PublicKeyToken":
+					string pkToken = parts [1];
+					if (pkToken == "null")
+						break;
+
+					name.PublicKeyToken = new byte [pkToken.Length / 2];
+					for (int j = 0; j < name.PublicKeyToken.Length; j++) {
+						name.PublicKeyToken [j] = Byte.Parse (pkToken.Substring (j * 2, 2), NumberStyles.HexNumber);
+					}
+					break;
+				}
+			}
+
+			return name;
+		}
+
+		public AssemblyHashAlgorithm HashAlgorithm
+		{
+			get { return m_hashAlgo; }
+			set { m_hashAlgo = value; }
+		}
+
+		public virtual byte [] Hash {
+			get { return m_hash; }
+			set { m_hash = value; }
+		}
+
+		public MetadataToken MetadataToken {
+			get { return m_token; }
+			set { m_token = value; }
+		}
+
+		IDictionary IAnnotationProvider.Annotations {
+			get {
+				if (m_annotations == null)
+					m_annotations = new Hashtable ();
+				return m_annotations;
+			}
+		}
+
+		public AssemblyNameReference () : this (string.Empty, string.Empty, new Version (0, 0, 0, 0))
+		{
+		}
+
+		public AssemblyNameReference (string name, string culture, Version version)
+		{
+			if (name == null)
+				throw new ArgumentNullException ("name");
+			if (culture == null)
+				throw new ArgumentNullException ("culture");
+			m_name = name;
+			m_culture = culture;
+			m_version = version;
+			m_hashAlgo = AssemblyHashAlgorithm.None;
+		}
+
+		public override string ToString ()
+		{
+			return this.FullName;
+		}
+
+		public virtual void Accept (IReflectionStructureVisitor visitor)
+		{
+			visitor.VisitAssemblyNameReference (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/AssemblyNameReferenceCollection.cs b/mcs/tools/cil-strip/Mono.Cecil/AssemblyNameReferenceCollection.cs
new file mode 100644
index 0000000..280ede5
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/AssemblyNameReferenceCollection.cs
@@ -0,0 +1,93 @@
+//
+// AssemblyNameReferenceCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Wed Sep 27 12:46:52 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System;
+	using System.Collections;
+
+	using Mono.Cecil.Cil;
+
+	internal sealed class AssemblyNameReferenceCollection : CollectionBase, IReflectionStructureVisitable {
+
+		ModuleDefinition m_container;
+
+		public AssemblyNameReference this [int index] {
+			get { return List [index] as AssemblyNameReference; }
+			set { List [index] = value; }
+		}
+
+		public ModuleDefinition Container {
+			get { return m_container; }
+		}
+
+		public AssemblyNameReferenceCollection (ModuleDefinition container)
+		{
+			m_container = container;
+		}
+
+		public void Add (AssemblyNameReference value)
+		{
+			List.Add (value);
+		}
+
+		public bool Contains (AssemblyNameReference value)
+		{
+			return List.Contains (value);
+		}
+
+		public int IndexOf (AssemblyNameReference value)
+		{
+			return List.IndexOf (value);
+		}
+
+		public void Insert (int index, AssemblyNameReference value)
+		{
+			List.Insert (index, value);
+		}
+
+		public void Remove (AssemblyNameReference value)
+		{
+			List.Remove (value);
+		}
+
+		protected override void OnValidate (object o)
+		{
+			if (! (o is AssemblyNameReference))
+				throw new ArgumentException ("Must be of type " + typeof (AssemblyNameReference).FullName);
+		}
+
+		public void Accept (IReflectionStructureVisitor visitor)
+		{
+			visitor.VisitAssemblyNameReferenceCollection (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/BaseAssemblyResolver.cs b/mcs/tools/cil-strip/Mono.Cecil/BaseAssemblyResolver.cs
new file mode 100644
index 0000000..f661075
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/BaseAssemblyResolver.cs
@@ -0,0 +1,264 @@
+//
+// BaseAssemblyResolver.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System;
+	using System.Collections;
+	using System.IO;
+	using SR = System.Reflection;
+	using System.Text;
+
+	internal abstract class BaseAssemblyResolver : IAssemblyResolver {
+
+		ArrayList m_directories;
+		string[] m_monoGacPaths;
+
+		public void AddSearchDirectory (string directory)
+		{
+			m_directories.Add (directory);
+		}
+
+		public void RemoveSearchDirectory (string directory)
+		{
+			m_directories.Remove (directory);
+		}
+
+		public string [] GetSearchDirectories ()
+		{
+			return (string []) m_directories.ToArray (typeof (string));
+		}
+
+		public virtual AssemblyDefinition Resolve (string fullName)
+		{
+			return Resolve (AssemblyNameReference.Parse (fullName));
+		}
+
+		public BaseAssemblyResolver ()
+		{
+			m_directories = new ArrayList ();
+			m_directories.Add (".");
+			m_directories.Add ("bin");
+		}
+
+		public virtual AssemblyDefinition Resolve (AssemblyNameReference name)
+		{
+			AssemblyDefinition assembly;
+			string frameworkdir = Path.GetDirectoryName (typeof (object).Module.FullyQualifiedName);
+
+			assembly = SearchDirectory (name, m_directories);
+			if (assembly != null)
+				return assembly;
+
+			if (IsZero (name.Version)) {
+				assembly = SearchDirectory (name, new string [] {frameworkdir});
+				if (assembly != null)
+					return assembly;
+			}
+
+#if !CF_1_0 && !CF_2_0 && !NO_SYSTEM_DLL
+			if (name.Name == "mscorlib") {
+				assembly = GetCorlib (name);
+				if (assembly != null)
+					return assembly;
+			}
+
+			assembly = GetAssemblyInGac (name);
+			if (assembly != null)
+				return assembly;
+#endif
+
+			assembly = SearchDirectory (name, new string [] {frameworkdir});
+			if (assembly != null)
+				return assembly;
+
+			throw new FileNotFoundException ("Could not resolve: " + name);
+		}
+
+		static readonly string [] _extentions = new string [] { ".dll", ".exe" };
+
+		static AssemblyDefinition SearchDirectory (AssemblyNameReference name, IEnumerable directories)
+		{
+			foreach (string dir in directories) {
+				foreach (string ext in _extentions) {
+					string file = Path.Combine (dir, name.Name + ext);
+					if (File.Exists (file))
+						return AssemblyFactory.GetAssembly (file);
+				}
+			}
+
+			return null;
+		}
+
+		static bool IsZero (Version version)
+		{
+			return version.Major == 0 && version.Minor == 0 && version.Build == 0 && version.Revision == 0;
+		}
+
+#if !CF_1_0 && !CF_2_0 && !NO_SYSTEM_DLL
+		static AssemblyDefinition GetCorlib (AssemblyNameReference reference)
+		{
+			SR.AssemblyName corlib = typeof (object).Assembly.GetName ();
+			if (corlib.Version == reference.Version || IsZero (reference.Version))
+				return AssemblyFactory.GetAssembly (typeof (object).Module.FullyQualifiedName);
+
+			string path = Directory.GetParent (
+				Directory.GetParent (
+					typeof (object).Module.FullyQualifiedName).FullName
+				).FullName;
+
+			string runtime_path = null;
+			if (OnMono ()) {
+				if (reference.Version.Major == 1)
+					runtime_path = "1.0";
+				else if (reference.Version.Major == 2) {
+					if (reference.Version.Minor == 1)
+						runtime_path = "2.1";
+					else
+						runtime_path = "2.0";
+				} else if (reference.Version.Major == 4)
+					runtime_path = "4.0";
+			} else {
+				switch (reference.Version.ToString ()) {
+				case "1.0.3300.0":
+					runtime_path = "v1.0.3705";
+					break;
+				case "1.0.5000.0":
+					runtime_path = "v1.1.4322";
+					break;
+				case "2.0.0.0":
+					runtime_path = "v2.0.50727";
+					break;
+				case "4.0.0.0":
+					runtime_path = "v4.0.30319";
+					break;
+				}
+			}
+
+			if (runtime_path == null)
+				throw new NotSupportedException ("Version not supported: " + reference.Version);
+
+			path = Path.Combine (path, runtime_path);
+
+			if (File.Exists (Path.Combine (path, "mscorlib.dll")))
+				return AssemblyFactory.GetAssembly (Path.Combine (path, "mscorlib.dll"));
+
+			return null;
+		}
+
+		public static bool OnMono ()
+		{
+			return typeof (object).Assembly.GetType ("System.MonoType", false) != null;
+		}
+
+		string[] MonoGacPaths {
+			get {
+				if (m_monoGacPaths == null)
+					m_monoGacPaths = GetDefaultMonoGacPaths ();
+				return m_monoGacPaths;
+			}
+		}
+
+		static string[] GetDefaultMonoGacPaths ()
+		{
+			ArrayList paths = new ArrayList ();
+			string s = GetCurrentGacPath ();
+			if (s != null)
+				paths.Add (s);
+			string gacPathsEnv = Environment.GetEnvironmentVariable ("MONO_GAC_PREFIX");
+			if (gacPathsEnv != null && gacPathsEnv.Length > 0) {
+				string[] gacPrefixes = gacPathsEnv.Split (Path.PathSeparator);
+				foreach (string gacPrefix in gacPrefixes) {
+					if (gacPrefix != null && gacPrefix.Length > 0) {
+						string gac = Path.Combine (Path.Combine (Path.Combine (gacPrefix, "lib"), "mono"), "gac");
+						if (Directory.Exists (gac) && !paths.Contains (gac))
+							paths.Add (gac);
+					}
+				}
+			}
+			return (string[]) paths.ToArray (typeof (String));
+		}
+
+		AssemblyDefinition GetAssemblyInGac (AssemblyNameReference reference)
+		{
+			if (reference.PublicKeyToken == null || reference.PublicKeyToken.Length == 0)
+				return null;
+
+			if (OnMono ()) {
+				foreach (string gacpath in MonoGacPaths) {
+					string s = GetAssemblyFile (reference, gacpath);
+					if (File.Exists (s))
+						return AssemblyFactory.GetAssembly (s);
+				}
+			} else {
+				string currentGac = GetCurrentGacPath ();
+				if (currentGac == null)
+					return null;
+
+				string [] gacs = new string [] {"GAC_MSIL", "GAC_32", "GAC"};
+				for (int i = 0; i < gacs.Length; i++) {
+					string gac = Path.Combine (Directory.GetParent (currentGac).FullName, gacs [i]);
+					string asm = GetAssemblyFile (reference, gac);
+					if (Directory.Exists (gac) && File.Exists (asm))
+						return AssemblyFactory.GetAssembly (asm);
+				}
+			}
+
+			return null;
+		}
+
+		static string GetAssemblyFile (AssemblyNameReference reference, string gac)
+		{
+			StringBuilder sb = new StringBuilder ();
+			sb.Append (reference.Version);
+			sb.Append ("__");
+			for (int i = 0; i < reference.PublicKeyToken.Length; i++)
+				sb.Append (reference.PublicKeyToken [i].ToString ("x2"));
+
+			return Path.Combine (
+				Path.Combine (
+					Path.Combine (gac, reference.Name), sb.ToString ()),
+					string.Concat (reference.Name, ".dll"));
+		}
+
+		static string GetCurrentGacPath ()
+		{
+			string file = typeof (Uri).Module.FullyQualifiedName;
+			if (!File.Exists (file))
+				return null;
+
+			return Directory.GetParent (
+				Directory.GetParent (
+					Path.GetDirectoryName (
+						file)
+					).FullName
+				).FullName;
+		}
+#endif
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/BaseReflectionReader.cs b/mcs/tools/cil-strip/Mono.Cecil/BaseReflectionReader.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil/BaseReflectionReader.cs
rename to mcs/tools/cil-strip/Mono.Cecil/BaseReflectionReader.cs
diff --git a/mcs/tools/cil-strip/Mono.Cecil/BaseReflectionVisitor.cs b/mcs/tools/cil-strip/Mono.Cecil/BaseReflectionVisitor.cs
new file mode 100644
index 0000000..5bef67a
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/BaseReflectionVisitor.cs
@@ -0,0 +1,188 @@
+//
+// BaseReflectionVisitor.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System.Collections;
+
+	internal abstract class BaseReflectionVisitor : IReflectionVisitor {
+
+		public virtual void VisitModuleDefinition (ModuleDefinition module)
+		{
+		}
+
+		public virtual void VisitTypeDefinitionCollection (TypeDefinitionCollection types)
+		{
+		}
+
+		public virtual void VisitTypeDefinition (TypeDefinition type)
+		{
+		}
+
+		public virtual void VisitTypeReferenceCollection (TypeReferenceCollection refs)
+		{
+		}
+
+		public virtual void VisitTypeReference (TypeReference type)
+		{
+		}
+
+		public virtual void VisitMemberReferenceCollection (MemberReferenceCollection members)
+		{
+		}
+
+		public virtual void VisitMemberReference (MemberReference member)
+		{
+		}
+
+		public virtual void VisitInterfaceCollection (InterfaceCollection interfaces)
+		{
+		}
+
+		public virtual void VisitInterface (TypeReference interf)
+		{
+		}
+
+		public virtual void VisitExternTypeCollection (ExternTypeCollection externs)
+		{
+		}
+
+		public virtual void VisitExternType (TypeReference externType)
+		{
+		}
+
+		public virtual void VisitOverrideCollection (OverrideCollection meth)
+		{
+		}
+
+		public virtual void VisitOverride (MethodReference ov)
+		{
+		}
+
+		public virtual void VisitNestedTypeCollection (NestedTypeCollection nestedTypes)
+		{
+		}
+
+		public virtual void VisitNestedType (TypeDefinition nestedType)
+		{
+		}
+
+		public virtual void VisitParameterDefinitionCollection (ParameterDefinitionCollection parameters)
+		{
+		}
+
+		public virtual void VisitParameterDefinition (ParameterDefinition parameter)
+		{
+		}
+
+		public virtual void VisitMethodDefinitionCollection (MethodDefinitionCollection methods)
+		{
+		}
+
+		public virtual void VisitMethodDefinition (MethodDefinition method)
+		{
+		}
+
+		public virtual void VisitConstructorCollection (ConstructorCollection ctors)
+		{
+		}
+
+		public virtual void VisitConstructor (MethodDefinition ctor)
+		{
+		}
+
+		public virtual void VisitPInvokeInfo (PInvokeInfo pinvk)
+		{
+		}
+
+		public virtual void VisitEventDefinitionCollection (EventDefinitionCollection events)
+		{
+		}
+
+		public virtual void VisitEventDefinition (EventDefinition evt)
+		{
+		}
+
+		public virtual void VisitFieldDefinitionCollection (FieldDefinitionCollection fields)
+		{
+		}
+
+		public virtual void VisitFieldDefinition (FieldDefinition field)
+		{
+		}
+
+		public virtual void VisitPropertyDefinitionCollection (PropertyDefinitionCollection properties)
+		{
+		}
+
+		public virtual void VisitPropertyDefinition (PropertyDefinition property)
+		{
+		}
+
+		public virtual void VisitSecurityDeclarationCollection (SecurityDeclarationCollection secDecls)
+		{
+		}
+
+		public virtual void VisitSecurityDeclaration (SecurityDeclaration secDecl)
+		{
+		}
+
+		public virtual void VisitCustomAttributeCollection (CustomAttributeCollection customAttrs)
+		{
+		}
+
+		public virtual void VisitCustomAttribute (CustomAttribute customAttr)
+		{
+		}
+
+		public virtual void VisitGenericParameterCollection (GenericParameterCollection genparams)
+		{
+		}
+
+		public virtual void VisitGenericParameter (GenericParameter genparam)
+		{
+		}
+
+		public virtual void VisitMarshalSpec (MarshalSpec marshalSpec)
+		{
+		}
+
+		public virtual void TerminateModuleDefinition (ModuleDefinition module)
+		{
+		}
+
+		protected void VisitCollection (ICollection coll)
+		{
+			if (coll.Count == 0)
+				return;
+
+			foreach (IReflectionVisitable visitable in coll)
+				visitable.Accept (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/BaseStructureVisitor.cs b/mcs/tools/cil-strip/Mono.Cecil/BaseStructureVisitor.cs
new file mode 100644
index 0000000..e2c6ec3
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/BaseStructureVisitor.cs
@@ -0,0 +1,96 @@
+//
+// BaseStructureVisitor.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System.Collections;
+
+	internal abstract class BaseStructureVisitor : IReflectionStructureVisitor {
+
+		public virtual void VisitAssemblyDefinition (AssemblyDefinition asm)
+		{
+		}
+
+		public virtual void VisitAssemblyNameDefinition (AssemblyNameDefinition name)
+		{
+		}
+
+		public virtual void VisitAssemblyNameReferenceCollection (AssemblyNameReferenceCollection names)
+		{
+		}
+
+		public virtual void VisitAssemblyNameReference (AssemblyNameReference name)
+		{
+		}
+
+		public virtual void VisitResourceCollection (ResourceCollection resources)
+		{
+		}
+
+		public virtual void VisitEmbeddedResource (EmbeddedResource res)
+		{
+		}
+
+		public virtual void VisitLinkedResource (LinkedResource res)
+		{
+		}
+
+		public virtual void VisitAssemblyLinkedResource (AssemblyLinkedResource res)
+		{
+		}
+
+		public virtual void VisitModuleDefinition (ModuleDefinition module)
+		{
+		}
+
+		public virtual void VisitModuleDefinitionCollection (ModuleDefinitionCollection modules)
+		{
+		}
+
+		public virtual void VisitModuleReference (ModuleReference module)
+		{
+		}
+
+		public virtual void VisitModuleReferenceCollection (ModuleReferenceCollection modules)
+		{
+		}
+
+		public virtual void TerminateAssemblyDefinition (AssemblyDefinition asm)
+		{
+		}
+
+		protected void VisitCollection (ICollection coll)
+		{
+			if (coll.Count == 0)
+				return;
+
+			foreach (IReflectionStructureVisitable visitable in coll)
+				visitable.Accept (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/CallSite.cs b/mcs/tools/cil-strip/Mono.Cecil/CallSite.cs
new file mode 100644
index 0000000..ece4997
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/CallSite.cs
@@ -0,0 +1,109 @@
+//
+// CallSite.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 - 2007 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System.Collections;
+	using System.Text;
+
+	using Mono.Cecil.Metadata;
+
+	internal sealed class CallSite : IMethodSignature, IAnnotationProvider, IMetadataTokenProvider {
+
+		MethodReference m_function;
+
+		public bool HasThis {
+			get { return m_function.HasThis; }
+			set { m_function.HasThis = value; }
+		}
+
+		public bool ExplicitThis {
+			get { return m_function.ExplicitThis; }
+			set { m_function.ExplicitThis = value; }
+		}
+
+		public MethodCallingConvention CallingConvention {
+			get { return m_function.CallingConvention; }
+			set { m_function.CallingConvention = value; }
+		}
+
+		public bool HasParameters {
+			get { return m_function.HasParameters; }
+		}
+
+		public ParameterDefinitionCollection Parameters {
+			get { return m_function.Parameters; }
+		}
+
+		public MethodReturnType ReturnType {
+			get { return m_function.ReturnType; }
+			set { m_function.ReturnType = value; }
+		}
+
+		public MetadataToken MetadataToken {
+			get { return m_function.MetadataToken; }
+			set { m_function.MetadataToken = value; }
+		}
+
+		IDictionary IAnnotationProvider.Annotations {
+			get { return ((IAnnotationProvider) m_function).Annotations; }
+		}
+
+		public CallSite (bool hasThis, bool explicitThis, MethodCallingConvention callConv, MethodReturnType retType)
+		{
+			m_function = new MethodReference (string.Empty, hasThis, explicitThis, callConv);
+			m_function.ReturnType = retType;
+		}
+
+		public int GetSentinel ()
+		{
+			return m_function.GetSentinel ();
+		}
+
+		public override string ToString ()
+		{
+			int sentinel = GetSentinel ();
+			StringBuilder sb = new StringBuilder ();
+			sb.Append (m_function.ReturnType.ReturnType.FullName);
+			sb.Append ("(");
+			if (m_function.HasParameters) {
+				for (int i = 0; i < m_function.Parameters.Count; i++) {
+					if (i > 0)
+						sb.Append (",");
+
+					if (i == sentinel)
+						sb.Append ("...,");
+
+					sb.Append (m_function.Parameters [i].ParameterType.FullName);
+				}
+			}
+			sb.Append (")");
+			return sb.ToString ();
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/CompactFrameworkCompatibility.cs b/mcs/tools/cil-strip/Mono.Cecil/CompactFrameworkCompatibility.cs
new file mode 100644
index 0000000..a8802e2
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/CompactFrameworkCompatibility.cs
@@ -0,0 +1,68 @@
+//
+// FrameworkCompatibility.cs
+//
+// Author:
+//   Rodrigo B. de Oliveira (rodrigobamboo at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+#if CF_1_0
+namespace System {
+
+	internal class NotImplementedException : System.Exception {
+
+		public NotImplementedException (string message) : base (message)
+		{
+		}
+
+		public NotImplementedException ()
+		{
+		}
+	}
+}
+#endif
+
+#if CF_1_0 || CF_2_0
+namespace System.Security {
+
+	internal class SecurityElement 	{
+
+		public SecurityElement (string tag)
+		{
+		}
+
+		public string Text
+		{
+			get { return string.Empty; }
+			set {}
+		}
+
+		public void AddChild (SecurityElement child)
+		{
+		}
+
+		public void AddAttribute (string name, string value)
+		{
+		}
+	}
+}
+#endif
diff --git a/mcs/tools/cil-strip/Mono.Cecil/Constants.cs b/mcs/tools/cil-strip/Mono.Cecil/Constants.cs
new file mode 100644
index 0000000..46af5cf
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/Constants.cs
@@ -0,0 +1,65 @@
+//
+// Constants.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	internal class Constants {
+
+		Constants ()
+		{
+		}
+
+		public const string Corlib = "mscorlib";
+
+		public const string ModuleType = "<Module>";
+		public const string PrivateImplDetails = "<PrivateImplementationDetails>";
+		public const string Deleted = "_Deleted";
+
+		public const string Void = "System.Void";
+		public const string Object = "System.Object";
+		public const string String = "System.String";
+		public const string Boolean = "System.Boolean";
+		public const string Char = "System.Char";
+		public const string Single = "System.Single";
+		public const string Double = "System.Double";
+		public const string SByte = "System.SByte";
+		public const string Byte = "System.Byte";
+		public const string Int16 = "System.Int16";
+		public const string UInt16 = "System.UInt16";
+		public const string Int32 = "System.Int32";
+		public const string UInt32 = "System.UInt32";
+		public const string Int64 = "System.Int64";
+		public const string UInt64 = "System.UInt64";
+		public const string IntPtr = "System.IntPtr";
+		public const string UIntPtr = "System.UIntPtr";
+		public const string TypedReference = "System.TypedReference";
+		public const string Type = "System.Type";
+		public const string ValueType = "System.ValueType";
+		public const string Enum = "System.Enum";
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/ConstraintCollection.cs b/mcs/tools/cil-strip/Mono.Cecil/ConstraintCollection.cs
new file mode 100644
index 0000000..072aebf
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/ConstraintCollection.cs
@@ -0,0 +1,88 @@
+//
+// ConstraintCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Wed Sep 27 12:46:54 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System;
+	using System.Collections;
+
+	using Mono.Cecil.Cil;
+
+	internal sealed class ConstraintCollection : CollectionBase {
+
+		GenericParameter m_container;
+
+		public TypeReference this [int index] {
+			get { return List [index] as TypeReference; }
+			set { List [index] = value; }
+		}
+
+		public GenericParameter Container {
+			get { return m_container; }
+		}
+
+		public ConstraintCollection (GenericParameter container)
+		{
+			m_container = container;
+		}
+
+		public void Add (TypeReference value)
+		{
+			List.Add (value);
+		}
+
+		public bool Contains (TypeReference value)
+		{
+			return List.Contains (value);
+		}
+
+		public int IndexOf (TypeReference value)
+		{
+			return List.IndexOf (value);
+		}
+
+		public void Insert (int index, TypeReference value)
+		{
+			List.Insert (index, value);
+		}
+
+		public void Remove (TypeReference value)
+		{
+			List.Remove (value);
+		}
+
+		protected override void OnValidate (object o)
+		{
+			if (! (o is TypeReference))
+				throw new ArgumentException ("Must be of type " + typeof (TypeReference).FullName);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/ConstructorCollection.cs b/mcs/tools/cil-strip/Mono.Cecil/ConstructorCollection.cs
new file mode 100644
index 0000000..011af98
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/ConstructorCollection.cs
@@ -0,0 +1,182 @@
+//
+// ConstructorCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Fri Mar 30 18:43:56 +0200 2007
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System;
+	using System.Collections;
+
+	using Mono.Cecil.Cil;
+
+	internal sealed class ConstructorCollection : CollectionBase, IReflectionVisitable {
+
+		TypeDefinition m_container;
+
+		public MethodDefinition this [int index] {
+			get { return List [index] as MethodDefinition; }
+			set { List [index] = value; }
+		}
+
+		public TypeDefinition Container {
+			get { return m_container; }
+		}
+
+		public ConstructorCollection (TypeDefinition container)
+		{
+			m_container = container;
+		}
+
+		public void Add (MethodDefinition value)
+		{
+			Attach (value);
+
+			List.Add (value);
+		}
+
+
+		public new void Clear ()
+		{
+			foreach (MethodDefinition item in this)
+				Detach (item);
+
+			base.Clear ();
+		}
+
+		public bool Contains (MethodDefinition value)
+		{
+			return List.Contains (value);
+		}
+
+		public int IndexOf (MethodDefinition value)
+		{
+			return List.IndexOf (value);
+		}
+
+		public void Insert (int index, MethodDefinition value)
+		{
+			Attach (value);
+
+			List.Insert (index, value);
+		}
+
+		public void Remove (MethodDefinition value)
+		{
+			List.Remove (value);
+
+			Detach (value);
+		}
+
+
+		public new void RemoveAt (int index)
+		{
+			MethodDefinition item = this [index];
+			Remove (item);
+		}
+
+		protected override void OnValidate (object o)
+		{
+			if (! (o is MethodDefinition))
+				throw new ArgumentException ("Must be of type " + typeof (MethodDefinition).FullName);
+		}
+
+		internal MethodDefinition GetConstructorInternal (bool isStatic, IList parameters)
+		{
+			if (parameters == null)
+#if CF_2_0 || CF_1_0
+				parameters = new Type[0];
+#else
+				parameters = Type.EmptyTypes;
+#endif
+
+			foreach (MethodDefinition ctor in this) {
+				if (ctor.IsStatic != isStatic || ctor.Parameters.Count != parameters.Count)
+					continue;
+
+				bool match = true;
+				for (int i = 0; i < parameters.Count; i++) {
+					string pname;
+					object param = parameters [i];
+					if (param is Type)
+						pname = ReflectionHelper.GetTypeSignature (param as Type);
+					else if (param is TypeReference)
+						pname = (param as TypeReference).FullName;
+					else if (param is ParameterDefinition)
+						pname = (param as ParameterDefinition).ParameterType.FullName;
+					else
+						throw new NotSupportedException ();
+
+					if (ctor.Parameters [i].ParameterType.FullName != pname) {
+						match = false;
+						break;
+					}
+				}
+
+				if (match)
+					return ctor;
+			}
+
+			return null;
+		}
+
+		public MethodDefinition GetConstructor (bool isStatic, Type [] parameters)
+		{
+			return GetConstructorInternal (isStatic, parameters);
+		}
+
+		public MethodDefinition GetConstructor (bool isStatic, TypeReference [] parameters)
+		{
+			return GetConstructorInternal (isStatic, parameters);
+		}
+
+		public MethodDefinition GetConstructor (bool isStatic, ParameterDefinitionCollection parameters)
+		{
+			return GetConstructorInternal (isStatic, parameters);
+		}
+
+		void Attach (MemberReference member)
+		{
+			if (member.DeclaringType != null)
+				throw new ReflectionException ("Member already attached, clone it instead");
+
+			member.DeclaringType = m_container;
+		}
+
+		void Detach (MemberReference member)
+		{
+			member.DeclaringType = null;
+		}
+
+		public void Accept (IReflectionVisitor visitor)
+		{
+			visitor.VisitConstructorCollection (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/CustomAttribute.cs b/mcs/tools/cil-strip/Mono.Cecil/CustomAttribute.cs
new file mode 100644
index 0000000..feec720
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/CustomAttribute.cs
@@ -0,0 +1,199 @@
+//
+// CustomAttribute.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System.Collections;
+
+	internal sealed class CustomAttribute : IRequireResolving, IAnnotationProvider, IReflectionVisitable {
+
+		MethodReference m_ctor;
+		IList m_parameters;
+		IDictionary m_fields;
+		IDictionary m_properties;
+		IDictionary m_fieldTypes;
+		IDictionary m_propTypes;
+		IDictionary m_annotations;
+
+		bool m_resolved;
+		byte [] m_blob;
+
+		public MethodReference Constructor {
+			get { return m_ctor; }
+			set { m_ctor = value; }
+		}
+
+		public IList ConstructorParameters {
+			get {
+				if (m_parameters == null)
+					m_parameters = new ArrayList ();
+				return m_parameters;
+			}
+		}
+
+		public IDictionary Fields {
+			get {
+				if (m_fields == null)
+					m_fields = new Hashtable ();
+
+				return m_fields;
+			}
+		}
+
+		public IDictionary Properties {
+			get {
+				if (m_properties == null)
+					m_properties = new Hashtable ();
+
+				return m_properties;
+			}
+		}
+
+		internal IDictionary FieldTypes {
+			get {
+				if (m_fieldTypes == null)
+					m_fieldTypes = new Hashtable ();
+
+				return m_fieldTypes;
+			}
+		}
+
+		internal IDictionary PropertyTypes {
+			get {
+				if (m_propTypes == null)
+					m_propTypes = new Hashtable ();
+
+				return m_propTypes;
+			}
+		}
+
+		public bool Resolved {
+			get { return m_resolved; }
+			set { m_resolved = value; }
+		}
+
+		public byte [] Blob {
+			get { return m_blob; }
+			set { m_blob = value; }
+		}
+
+		IDictionary IAnnotationProvider.Annotations {
+			get {
+				if (m_annotations == null)
+					m_annotations = new Hashtable ();
+				return m_annotations;
+			}
+		}
+
+		public CustomAttribute (MethodReference ctor)
+		{
+			m_ctor = ctor;
+			m_resolved = true;
+		}
+
+		public CustomAttribute (MethodReference ctor, byte [] blob)
+		{
+			m_ctor = ctor;
+			m_blob = blob;
+		}
+
+		public TypeReference GetFieldType (string fieldName)
+		{
+			return (TypeReference) FieldTypes [fieldName];
+		}
+
+		public TypeReference GetPropertyType (string propertyName)
+		{
+			return (TypeReference) PropertyTypes [propertyName];
+		}
+
+		public void SetFieldType (string fieldName, TypeReference type)
+		{
+			FieldTypes [fieldName] = type;
+		}
+
+		public void SetPropertyType (string propertyName, TypeReference type)
+		{
+			PropertyTypes [propertyName] = type;
+		}
+
+		public CustomAttribute Clone ()
+		{
+			return Clone (this, new ImportContext (NullReferenceImporter.Instance));
+		}
+
+		static void Clone (IDictionary original, IDictionary target)
+		{
+			target.Clear ();
+			foreach (DictionaryEntry entry in original)
+				target.Add (entry.Key, entry.Value);
+		}
+
+		internal static CustomAttribute Clone (CustomAttribute custattr, ImportContext context)
+		{
+			CustomAttribute ca = new CustomAttribute (context.Import (custattr.Constructor));
+			custattr.CopyTo (ca);
+			return ca;
+		}
+
+		void CopyTo (CustomAttribute target)
+		{
+			target.Resolved = Resolved;
+			if (!Resolved) {
+				target.Blob = Blob;
+				return;
+			}
+
+			foreach (object o in ConstructorParameters)
+				target.ConstructorParameters.Add (o);
+			Clone (Fields, target.Fields);
+			Clone (FieldTypes, target.FieldTypes);
+			Clone (Properties, target.Properties);
+			Clone (PropertyTypes, target.PropertyTypes);
+		}
+
+		public bool Resolve ()
+		{
+			if (Resolved)
+				return true;
+
+			ReflectionReader r = m_ctor.DeclaringType.Module.Controller.Reader;
+			CustomAttribute newCa = r.GetCustomAttribute (m_ctor, Blob, true);
+			if (!newCa.Resolved)
+				return false;
+
+			newCa.CopyTo (this);
+			return true;
+		}
+
+		public void Accept (IReflectionVisitor visitor)
+		{
+			visitor.VisitCustomAttribute (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/CustomAttributeCollection.cs b/mcs/tools/cil-strip/Mono.Cecil/CustomAttributeCollection.cs
new file mode 100644
index 0000000..b4e1870
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/CustomAttributeCollection.cs
@@ -0,0 +1,93 @@
+//
+// CustomAttributeCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Wed Sep 27 12:46:53 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System;
+	using System.Collections;
+
+	using Mono.Cecil.Cil;
+
+	internal sealed class CustomAttributeCollection : CollectionBase, IReflectionVisitable {
+
+		ICustomAttributeProvider m_container;
+
+		public CustomAttribute this [int index] {
+			get { return List [index] as CustomAttribute; }
+			set { List [index] = value; }
+		}
+
+		public ICustomAttributeProvider Container {
+			get { return m_container; }
+		}
+
+		public CustomAttributeCollection (ICustomAttributeProvider container)
+		{
+			m_container = container;
+		}
+
+		public void Add (CustomAttribute value)
+		{
+			List.Add (value);
+		}
+
+		public bool Contains (CustomAttribute value)
+		{
+			return List.Contains (value);
+		}
+
+		public int IndexOf (CustomAttribute value)
+		{
+			return List.IndexOf (value);
+		}
+
+		public void Insert (int index, CustomAttribute value)
+		{
+			List.Insert (index, value);
+		}
+
+		public void Remove (CustomAttribute value)
+		{
+			List.Remove (value);
+		}
+
+		protected override void OnValidate (object o)
+		{
+			if (! (o is CustomAttribute))
+				throw new ArgumentException ("Must be of type " + typeof (CustomAttribute).FullName);
+		}
+
+		public void Accept (IReflectionVisitor visitor)
+		{
+			visitor.VisitCustomAttributeCollection (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/DefaultAssemblyResolver.cs b/mcs/tools/cil-strip/Mono.Cecil/DefaultAssemblyResolver.cs
new file mode 100644
index 0000000..161349d
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/DefaultAssemblyResolver.cs
@@ -0,0 +1,62 @@
+//
+// DefaultAssemblyResolver.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System.Collections;
+
+	internal class DefaultAssemblyResolver : BaseAssemblyResolver {
+
+		IDictionary m_cache;
+
+		public DefaultAssemblyResolver ()
+		{
+			m_cache = new Hashtable ();
+		}
+
+		public override AssemblyDefinition Resolve (AssemblyNameReference name)
+		{
+			AssemblyDefinition asm = (AssemblyDefinition) m_cache [name.FullName];
+			if (asm == null) {
+				asm = base.Resolve (name);
+				m_cache [name.FullName] = asm;
+			}
+
+			return asm;
+		}
+
+		protected void RegisterAssembly (AssemblyDefinition assembly)
+		{
+			string key = assembly.Name.FullName;
+			if (m_cache.Contains (key))
+				return;
+
+			m_cache [key] = assembly;
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/DefaultImporter.cs b/mcs/tools/cil-strip/Mono.Cecil/DefaultImporter.cs
new file mode 100644
index 0000000..a367f1a
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/DefaultImporter.cs
@@ -0,0 +1,266 @@
+//
+// DefaultReferenceImporter.cs
+//
+// Author:
+//   Jb Evain (jbevain at novell.com)
+//
+// (C) 2007 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System;
+
+	internal class DefaultImporter : IImporter {
+
+		ModuleDefinition m_module;
+
+		public ModuleDefinition Module {
+			get { return m_module; }
+		}
+
+		public DefaultImporter (ModuleDefinition module)
+		{
+			m_module = module;
+		}
+
+		public AssemblyNameReference ImportAssembly (AssemblyNameReference asm)
+		{
+			AssemblyNameReference asmRef = GetAssemblyNameReference (asm);
+			if (asmRef != null)
+				return asmRef;
+
+			asmRef = new AssemblyNameReference (
+				asm.Name, asm.Culture, asm.Version);
+			asmRef.PublicKeyToken = asm.PublicKeyToken;
+			asmRef.HashAlgorithm = asm.HashAlgorithm;
+			m_module.AssemblyReferences.Add (asmRef);
+			return asmRef;
+		}
+
+		AssemblyNameReference GetAssemblyNameReference (AssemblyNameReference asm)
+		{
+			foreach (AssemblyNameReference reference in m_module.AssemblyReferences)
+				if (reference.FullName == asm.FullName)
+					return reference;
+
+			return null;
+		}
+
+		TypeSpecification GetTypeSpec (TypeSpecification original, ImportContext context)
+		{
+			TypeSpecification typeSpec;
+
+			TypeReference elementType = ImportTypeReference (original.ElementType, context);
+			if (original is PointerType) {
+				typeSpec = new PointerType (elementType);
+			} else if (original is ArrayType) { // deal with complex arrays
+				typeSpec = new ArrayType (elementType);
+			} else if (original is ReferenceType) {
+				typeSpec = new ReferenceType (elementType);
+			} else if (original is GenericInstanceType) {
+				GenericInstanceType git = original as GenericInstanceType;
+				GenericInstanceType genElemType = new GenericInstanceType (elementType);
+
+				context.GenericContext.CheckProvider (genElemType.GetOriginalType (), git.GenericArguments.Count);
+				foreach (TypeReference arg in git.GenericArguments)
+					genElemType.GenericArguments.Add (ImportTypeReference (arg, context));
+
+				typeSpec = genElemType;
+			} else if (original is ModifierOptional) {
+				TypeReference mt = (original as ModifierOptional).ModifierType;
+				typeSpec = new ModifierOptional (elementType, ImportTypeReference (mt, context));
+			} else if (original is ModifierRequired) {
+				TypeReference mt = (original as ModifierRequired).ModifierType;
+				typeSpec = new ModifierRequired (elementType, ImportTypeReference (mt, context));
+			} else if (original is SentinelType) {
+				typeSpec = new SentinelType (elementType);
+			} else if (original is FunctionPointerType) {
+				FunctionPointerType ori = original as FunctionPointerType;
+
+				FunctionPointerType fnptr = new FunctionPointerType (
+					ori.HasThis,
+					ori.ExplicitThis,
+					ori.CallingConvention,
+					new MethodReturnType (ImportTypeReference (ori.ReturnType.ReturnType, context)));
+
+				foreach (ParameterDefinition parameter in ori.Parameters)
+					fnptr.Parameters.Add (new ParameterDefinition (ImportTypeReference (parameter.ParameterType, context)));
+
+				typeSpec = fnptr;
+			} else
+				throw new ReflectionException ("Unknown element type: {0}", original.GetType ().Name);
+
+			return typeSpec;
+		}
+
+		static GenericParameter GetGenericParameter (GenericParameter gp, ImportContext context)
+		{
+			GenericParameter p;
+			if (gp.Owner is TypeReference)
+				p = context.GenericContext.Type.GenericParameters [gp.Position];
+			else if (gp.Owner is MethodReference)
+				p = context.GenericContext.Method.GenericParameters [gp.Position];
+			else
+				throw new NotSupportedException ();
+
+			return p;
+		}
+
+		TypeReference AdjustReference (TypeReference type, TypeReference reference)
+		{
+			if (type.IsValueType && !reference.IsValueType)
+				reference.IsValueType = true;
+
+			if (type.HasGenericParameters) {
+				for (int i = reference.GenericParameters.Count; i < type.GenericParameters.Count; i++)
+					reference.GenericParameters.Add (new GenericParameter (i, reference));
+			}
+
+			return reference;
+		}
+
+		public virtual TypeReference ImportTypeReference (TypeReference t, ImportContext context)
+		{
+			if (t.Module == m_module)
+				return t;
+
+			if (t is TypeSpecification)
+				return GetTypeSpec (t as TypeSpecification, context);
+
+			if (t is GenericParameter)
+				return GetGenericParameter (t as GenericParameter, context);
+
+			TypeReference type = m_module.TypeReferences [t.FullName];
+			if (type != null)
+				return AdjustReference (t, type);
+
+			AssemblyNameReference asm;
+			if (t.Scope is AssemblyNameReference)
+				asm = ImportAssembly ((AssemblyNameReference) t.Scope);
+			else if (t.Scope is ModuleDefinition)
+				asm = ImportAssembly (((ModuleDefinition) t.Scope).Assembly.Name);
+			else
+				throw new NotImplementedException ();
+
+			if (t.DeclaringType != null) {
+				type = new TypeReference (t.Name, string.Empty, asm, t.IsValueType);
+				type.DeclaringType = ImportTypeReference (t.DeclaringType, context);
+			} else
+				type = new TypeReference (t.Name, t.Namespace, asm, t.IsValueType);
+
+			TypeReference contextType = context.GenericContext.Type;
+
+			context.GenericContext.Type = type;
+
+			GenericParameter.CloneInto (t, type, context);
+
+			context.GenericContext.Type = contextType;
+
+			m_module.TypeReferences.Add (type);
+			return type;
+		}
+
+		public virtual FieldReference ImportFieldReference (FieldReference fr, ImportContext context)
+		{
+			if (fr.DeclaringType.Module == m_module)
+				return fr;
+
+			FieldReference field = (FieldReference) GetMemberReference (fr);
+			if (field != null)
+				return field;
+
+			field = new FieldReference (
+				fr.Name,
+				ImportTypeReference (fr.DeclaringType, context),
+				ImportTypeReference (fr.FieldType, context));
+
+			m_module.MemberReferences.Add (field);
+			return field;
+		}
+
+		MethodReference GetMethodSpec (MethodReference meth, ImportContext context)
+		{
+			if (!(meth is GenericInstanceMethod))
+				return null;
+
+			GenericInstanceMethod gim = meth as GenericInstanceMethod;
+			GenericInstanceMethod ngim = new GenericInstanceMethod (
+				ImportMethodReference (gim.ElementMethod, context));
+
+			context.GenericContext.CheckProvider (ngim.GetOriginalMethod (), gim.GenericArguments.Count);
+			foreach (TypeReference arg in gim.GenericArguments)
+				ngim.GenericArguments.Add (ImportTypeReference (arg, context));
+
+			return ngim;
+		}
+
+		public virtual MethodReference ImportMethodReference (MethodReference mr, ImportContext context)
+		{
+			if (mr.DeclaringType.Module == m_module)
+				return mr;
+
+			if (mr is MethodSpecification)
+				return GetMethodSpec (mr, context);
+
+			MethodReference meth = (MethodReference) GetMemberReference (mr);
+			if (meth != null)
+				return meth;
+
+			meth = new MethodReference (
+				mr.Name,
+				mr.HasThis,
+				mr.ExplicitThis,
+				mr.CallingConvention);
+			meth.DeclaringType = ImportTypeReference (mr.DeclaringType, context);
+
+			TypeReference contextType = context.GenericContext.Type;
+			MethodReference contextMethod = context.GenericContext.Method;
+
+			context.GenericContext.Method = meth;
+			context.GenericContext.Type = meth.DeclaringType.GetOriginalType();
+
+			GenericParameter.CloneInto (mr, meth, context);
+
+			meth.ReturnType.ReturnType = ImportTypeReference (mr.ReturnType.ReturnType, context);
+
+			foreach (ParameterDefinition param in mr.Parameters)
+				meth.Parameters.Add (new ParameterDefinition (
+					ImportTypeReference (param.ParameterType, context)));
+
+			context.GenericContext.Type = contextType;
+			context.GenericContext.Method = contextMethod;
+
+			m_module.MemberReferences.Add (meth);
+			return meth;
+		}
+
+		MemberReference GetMemberReference (MemberReference member)
+		{
+			foreach (MemberReference reference in m_module.MemberReferences)
+				if (reference.ToString () == member.ToString ())
+					return reference;
+
+			return null;
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/EmbeddedResource.cs b/mcs/tools/cil-strip/Mono.Cecil/EmbeddedResource.cs
new file mode 100644
index 0000000..6f9d98f
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/EmbeddedResource.cs
@@ -0,0 +1,56 @@
+//
+// EmbeddedResource.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	internal sealed class EmbeddedResource : Resource {
+
+		byte [] m_data;
+
+		public byte [] Data {
+			get { return m_data; }
+			set { m_data = value; }
+		}
+
+		public EmbeddedResource (string name, ManifestResourceAttributes flags) :
+			base (name, flags)
+		{
+		}
+
+		public EmbeddedResource (string name, ManifestResourceAttributes flags, byte [] data) :
+			base (name, flags)
+		{
+			m_data = data;
+		}
+
+		public override void Accept (IReflectionStructureVisitor visitor)
+		{
+			visitor.VisitEmbeddedResource (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/EventAttributes.cs b/mcs/tools/cil-strip/Mono.Cecil/EventAttributes.cs
new file mode 100644
index 0000000..94c1d50
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/EventAttributes.cs
@@ -0,0 +1,38 @@
+//
+// EventAttributes.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System;
+
+	[Flags]
+	internal enum EventAttributes : ushort {
+		SpecialName		= 0x0200,	// Event is special
+		RTSpecialName	= 0x0400	 // CLI provides 'special' behavior, depending upon the name of the event
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/EventDefinition.cs b/mcs/tools/cil-strip/Mono.Cecil/EventDefinition.cs
new file mode 100644
index 0000000..9abfedb
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/EventDefinition.cs
@@ -0,0 +1,173 @@
+//
+// EventDefinition.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	internal sealed class EventDefinition : EventReference, IMemberDefinition, ICustomAttributeProvider {
+
+		EventAttributes m_attributes;
+
+		CustomAttributeCollection m_customAttrs;
+
+		MethodDefinition m_addMeth;
+		MethodDefinition m_invMeth;
+		MethodDefinition m_remMeth;
+
+		public EventAttributes Attributes {
+			get { return m_attributes; }
+			set { m_attributes = value; }
+		}
+
+		public MethodDefinition AddMethod {
+			get { return m_addMeth; }
+			set { m_addMeth = value; }
+		}
+
+		public MethodDefinition InvokeMethod {
+			get { return m_invMeth; }
+			set { m_invMeth = value; }
+		}
+
+		public MethodDefinition RemoveMethod {
+			get { return m_remMeth; }
+			set { m_remMeth = value; }
+		}
+
+		public bool HasCustomAttributes {
+			get { return (m_customAttrs == null) ? false : (m_customAttrs.Count > 0); }
+		}
+
+		public CustomAttributeCollection CustomAttributes {
+			get {
+				if (m_customAttrs == null)
+					m_customAttrs = new CustomAttributeCollection (this);
+
+				return m_customAttrs;
+			}
+		}
+
+		#region EventAttributes
+
+		public bool IsSpecialName {
+			get { return (m_attributes & EventAttributes.SpecialName) != 0; }
+			set {
+				if (value)
+					m_attributes |= EventAttributes.SpecialName;
+				else
+					m_attributes &= ~EventAttributes.SpecialName;
+			}
+		}
+
+		public bool IsRuntimeSpecialName {
+			get { return (m_attributes & EventAttributes.RTSpecialName) != 0; }
+			set {
+				if (value)
+					m_attributes |= EventAttributes.RTSpecialName;
+				else
+					m_attributes &= ~EventAttributes.RTSpecialName;
+			}
+		}
+
+		#endregion
+
+		public new TypeDefinition DeclaringType {
+			get { return (TypeDefinition) base.DeclaringType; }
+			set { base.DeclaringType = value; }
+		}
+
+		public EventDefinition (string name, TypeReference eventType,
+			EventAttributes attrs) : base (name, eventType)
+		{
+			m_attributes = attrs;
+		}
+
+		public override EventDefinition Resolve ()
+		{
+			return this;
+		}
+
+		public static MethodDefinition CreateAddMethod (EventDefinition evt)
+		{
+			MethodDefinition add = new MethodDefinition (
+				string.Concat ("add_", evt.Name), (MethodAttributes) 0, evt.EventType);
+			evt.AddMethod = add;
+			return add;
+		}
+
+		public static MethodDefinition CreateRemoveMethod (EventDefinition evt)
+		{
+			MethodDefinition remove = new MethodDefinition (
+				string.Concat ("remove_", evt.Name), (MethodAttributes) 0, evt.EventType);
+			evt.RemoveMethod = remove;
+			return remove;
+		}
+
+		public static MethodDefinition CreateInvokeMethod (EventDefinition evt)
+		{
+			MethodDefinition raise = new MethodDefinition (
+				string.Concat ("raise_", evt.Name), (MethodAttributes) 0, evt.EventType);
+			evt.InvokeMethod = raise;
+			return raise;
+		}
+
+		public EventDefinition Clone ()
+		{
+			return Clone (this, new ImportContext (NullReferenceImporter.Instance, this.DeclaringType));
+		}
+
+		internal static EventDefinition Clone (EventDefinition evt, ImportContext context)
+		{
+			EventDefinition ne = new EventDefinition (
+				evt.Name,
+				context.Import (evt.EventType),
+				evt.Attributes);
+
+			if (context.GenericContext.Type is TypeDefinition) {
+				TypeDefinition type = context.GenericContext.Type as TypeDefinition;
+				if (evt.AddMethod != null)
+					ne.AddMethod = type.Methods.GetMethod (evt.AddMethod.Name) [0];
+				if (evt.InvokeMethod != null)
+					ne.InvokeMethod = type.Methods.GetMethod (evt.InvokeMethod.Name) [0];
+				if (evt.RemoveMethod != null)
+					ne.RemoveMethod = type.Methods.GetMethod (evt.RemoveMethod.Name) [0];
+			}
+
+			foreach (CustomAttribute ca in evt.CustomAttributes)
+				ne.CustomAttributes.Add (CustomAttribute.Clone (ca, context));
+
+			return ne;
+		}
+
+		public override void Accept (IReflectionVisitor visitor)
+		{
+			visitor.VisitEventDefinition (this);
+
+			this.CustomAttributes.Accept (visitor);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/EventDefinitionCollection.cs b/mcs/tools/cil-strip/Mono.Cecil/EventDefinitionCollection.cs
new file mode 100644
index 0000000..94a2c54
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/EventDefinitionCollection.cs
@@ -0,0 +1,137 @@
+//
+// EventDefinitionCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Fri Mar 30 18:43:57 +0200 2007
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System;
+	using System.Collections;
+
+	using Mono.Cecil.Cil;
+
+	internal sealed class EventDefinitionCollection : CollectionBase, IReflectionVisitable {
+
+		TypeDefinition m_container;
+
+		public EventDefinition this [int index] {
+			get { return List [index] as EventDefinition; }
+			set { List [index] = value; }
+		}
+
+		public TypeDefinition Container {
+			get { return m_container; }
+		}
+
+		public EventDefinitionCollection (TypeDefinition container)
+		{
+			m_container = container;
+		}
+
+		public void Add (EventDefinition value)
+		{
+			Attach (value);
+
+			List.Add (value);
+		}
+
+
+		public new void Clear ()
+		{
+			foreach (EventDefinition item in this)
+				Detach (item);
+
+			base.Clear ();
+		}
+
+		public bool Contains (EventDefinition value)
+		{
+			return List.Contains (value);
+		}
+
+		public int IndexOf (EventDefinition value)
+		{
+			return List.IndexOf (value);
+		}
+
+		public void Insert (int index, EventDefinition value)
+		{
+			Attach (value);
+
+			List.Insert (index, value);
+		}
+
+		public void Remove (EventDefinition value)
+		{
+			List.Remove (value);
+
+			Detach (value);
+		}
+
+
+		public new void RemoveAt (int index)
+		{
+			EventDefinition item = this [index];
+			Remove (item);
+		}
+
+		protected override void OnValidate (object o)
+		{
+			if (! (o is EventDefinition))
+				throw new ArgumentException ("Must be of type " + typeof (EventDefinition).FullName);
+		}
+
+		public EventDefinition GetEvent (string name)
+		{
+			foreach (EventDefinition evt in this)
+				if (evt.Name == name)
+					return evt;
+
+			return null;
+		}
+
+		void Attach (MemberReference member)
+		{
+			if (member.DeclaringType != null)
+				throw new ReflectionException ("Member already attached, clone it instead");
+
+			member.DeclaringType = m_container;
+		}
+
+		void Detach (MemberReference member)
+		{
+			member.DeclaringType = null;
+		}
+
+		public void Accept (IReflectionVisitor visitor)
+		{
+			visitor.VisitEventDefinitionCollection (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/EventReference.cs b/mcs/tools/cil-strip/Mono.Cecil/EventReference.cs
new file mode 100644
index 0000000..b1205b5
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/EventReference.cs
@@ -0,0 +1,52 @@
+//
+// EventReference.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	internal abstract class EventReference : MemberReference {
+
+		TypeReference m_eventType;
+
+		public TypeReference EventType {
+			get { return m_eventType; }
+			set { m_eventType = value; }
+		}
+
+		public EventReference (string name, TypeReference eventType) : base (name)
+		{
+			m_eventType = eventType;
+		}
+
+		public abstract EventDefinition Resolve ();
+
+		public override string ToString ()
+		{
+			return string.Concat (m_eventType.FullName, " ", base.ToString ());
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/ExternTypeCollection.cs b/mcs/tools/cil-strip/Mono.Cecil/ExternTypeCollection.cs
new file mode 100644
index 0000000..ea86be1
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/ExternTypeCollection.cs
@@ -0,0 +1,192 @@
+//
+// ExternTypeCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Fri Mar 30 18:43:57 +0200 2007
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System;
+	using System.Collections;
+	using System.Collections.Specialized;
+
+	using Mono.Cecil.Cil;
+
+	using Hcp = Mono.Cecil.HashCodeProvider;
+	using Cmp = System.Collections.Comparer;
+
+	internal sealed class ExternTypeCollection : NameObjectCollectionBase, IList, IReflectionVisitable  {
+
+		ModuleDefinition m_container;
+
+		public TypeReference this [int index] {
+			get { return this.BaseGet (index) as TypeReference; }
+			set { this.BaseSet (index, value); }
+		}
+
+		public TypeReference this [string fullName] {
+			get { return this.BaseGet (fullName) as TypeReference; }
+			set { this.BaseSet (fullName, value); }
+		}
+
+		public ModuleDefinition Container {
+			get { return m_container; }
+		}
+
+		public bool IsSynchronized {
+			get { return false; }
+		}
+
+		public object SyncRoot {
+			get { return this; }
+		}
+
+		bool IList.IsReadOnly {
+			get { return false; }
+		}
+
+		bool IList.IsFixedSize {
+			get { return false; }
+		}
+
+		object IList.this [int index] {
+			get { return BaseGet (index); }
+			set {
+				Check (value);
+				BaseSet (index, value);
+			}
+		}
+
+		public ExternTypeCollection (ModuleDefinition container) :
+			base (Hcp.Instance, Cmp.Default)
+		{
+			m_container = container;
+		}
+
+		public void Add (TypeReference value)
+		{
+			if (value == null)
+				throw new ArgumentNullException ("value");
+
+			this.BaseAdd (value.FullName, value);
+		}
+
+		public void Clear ()
+		{
+			this.BaseClear ();
+		}
+
+		public bool Contains (TypeReference value)
+		{
+			return Contains (value.FullName);
+		}
+
+		public bool Contains (string fullName)
+		{
+			return this.BaseGet (fullName) != null;
+		}
+
+		public int IndexOf (TypeReference value)
+		{
+			string [] keys = this.BaseGetAllKeys ();
+			return Array.IndexOf (keys, value.FullName, 0, keys.Length);
+		}
+
+		public void Remove (TypeReference value)
+		{
+			this.BaseRemove (value.FullName);
+		}
+
+		public void RemoveAt (int index)
+		{
+			TypeReference item = this [index];
+			Remove (item);
+		}
+
+		public void CopyTo (Array ary, int index)
+		{
+			this.BaseGetAllValues ().CopyTo (ary, index);
+		}
+
+		public new IEnumerator GetEnumerator ()
+		{
+			return this.BaseGetAllValues ().GetEnumerator ();
+		}
+
+		public void Accept (IReflectionVisitor visitor)
+		{
+			visitor.VisitExternTypeCollection (this);
+		}
+
+#if CF_1_0 || CF_2_0
+		internal object [] BaseGetAllValues ()
+		{
+			object [] values = new object [this.Count];
+			for (int i=0; i < values.Length; ++i) {
+				values [i] = this.BaseGet (i);
+			}
+			return values;
+		}
+#endif
+
+		void Check (object value)
+		{
+			if (!(value is TypeReference))
+				throw new ArgumentException ();
+		}
+
+		int IList.Add (object value)
+		{
+			Check (value);
+			Add (value as TypeReference);
+			return 0;
+		}
+
+		bool IList.Contains (object value)
+		{
+			Check (value);
+			return Contains (value as TypeReference);
+		}
+
+		int IList.IndexOf (object value)
+		{
+			throw new NotSupportedException ();
+		}
+
+		void IList.Insert (int index, object value)
+		{
+			throw new NotSupportedException ();
+		}
+
+		void IList.Remove (object value)
+		{
+			Check (value);
+			Remove (value as TypeReference);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/FieldAttributes.cs b/mcs/tools/cil-strip/Mono.Cecil/FieldAttributes.cs
new file mode 100644
index 0000000..2c20927
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/FieldAttributes.cs
@@ -0,0 +1,59 @@
+//
+// FieldAttributes.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System;
+
+	[Flags]
+	internal enum FieldAttributes : ushort {
+		FieldAccessMask		= 0x0007,
+		Compilercontrolled	= 0x0000,	// Member not referenceable
+		Private				= 0x0001,	// Accessible only by the parent type
+		FamANDAssem			= 0x0002,	// Accessible by sub-types only in this assembly
+		Assembly			= 0x0003,	// Accessible by anyone in the Assembly
+		Family				= 0x0004,	// Accessible only by type and sub-types
+		FamORAssem			= 0x0005,	// Accessible by sub-types anywhere, plus anyone in the assembly
+		Public				= 0x0006,	// Accessible by anyone who has visibility to this scope field contract attributes
+
+		Static				= 0x0010,	// Defined on type, else per instance
+		InitOnly			= 0x0020,	// Field may only be initialized, not written after init
+		Literal				= 0x0040,	// Value is compile time constant
+		NotSerialized		= 0x0080,	// Field does not have to be serialized when type is remoted
+		SpecialName			= 0x0200,	// Field is special
+
+		// Interop Attributes
+		PInvokeImpl			= 0x2000,	// Implementation is forwarded through PInvoke
+
+		// Additional flags
+		RTSpecialName		= 0x0400,	// CLI provides 'special' behavior, depending upon the name of the field
+		HasFieldMarshal		= 0x1000,	// Field has marshalling information
+		HasDefault			= 0x8000,	// Field has default
+		HasFieldRVA			= 0x0100	 // Field has RVA
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/FieldDefinition.cs b/mcs/tools/cil-strip/Mono.Cecil/FieldDefinition.cs
new file mode 100644
index 0000000..ad9509e
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/FieldDefinition.cs
@@ -0,0 +1,331 @@
+//
+// FieldDefinition.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using Mono.Cecil;
+	using Mono.Cecil.Binary;
+
+	internal sealed class FieldDefinition : FieldReference, IMemberDefinition,
+		ICustomAttributeProvider, IHasMarshalSpec, IHasConstant {
+
+		FieldAttributes m_attributes;
+
+		CustomAttributeCollection m_customAttrs;
+
+		bool m_hasInfo;
+		uint m_offset;
+
+		RVA m_rva;
+		byte [] m_initVal;
+
+		bool m_hasConstant;
+		object m_const;
+
+		MarshalSpec m_marshalDesc;
+
+		public bool HasLayoutInfo {
+			get { return m_hasInfo; }
+		}
+
+		public uint Offset {
+			get { return m_offset; }
+			set {
+				m_hasInfo = true;
+				m_offset = value;
+			}
+		}
+
+		public RVA RVA {
+			get { return m_rva; }
+			set { m_rva = value; }
+		}
+
+		public byte [] InitialValue {
+			get { return m_initVal; }
+			set { m_initVal = value; }
+		}
+
+		public FieldAttributes Attributes {
+			get { return m_attributes; }
+			set { m_attributes = value; }
+		}
+
+		public bool HasConstant {
+			get { return m_hasConstant; }
+		}
+
+		public object Constant {
+			get { return m_const; }
+			set {
+				m_hasConstant = true;
+				m_const = value;
+			}
+		}
+
+		public bool HasCustomAttributes {
+			get { return (m_customAttrs == null) ? false : (m_customAttrs.Count > 0); }
+		}
+
+		public CustomAttributeCollection CustomAttributes {
+			get {
+				if (m_customAttrs == null)
+					m_customAttrs = new CustomAttributeCollection (this);
+
+				return m_customAttrs;
+			}
+		}
+
+		public MarshalSpec MarshalSpec {
+			get { return m_marshalDesc; }
+			set {
+				m_marshalDesc = value;
+				if (value != null)
+					m_attributes |= FieldAttributes.HasFieldMarshal;
+				else
+					m_attributes &= FieldAttributes.HasFieldMarshal;
+			}
+		}
+
+		#region FieldAttributes
+
+		public bool IsCompilerControlled {
+			get { return (m_attributes & FieldAttributes.FieldAccessMask) == FieldAttributes.Compilercontrolled; }
+			set {
+				if (value) {
+					m_attributes &= ~FieldAttributes.FieldAccessMask;
+					m_attributes |= FieldAttributes.Compilercontrolled;
+				} else
+					m_attributes &= ~(FieldAttributes.FieldAccessMask & FieldAttributes.Compilercontrolled);
+			}
+		}
+
+		public bool IsPrivate {
+			get { return (m_attributes & FieldAttributes.FieldAccessMask) == FieldAttributes.Private; }
+			set {
+				if (value) {
+					m_attributes &= ~FieldAttributes.FieldAccessMask;
+					m_attributes |= FieldAttributes.Private;
+				} else
+					m_attributes &= ~(FieldAttributes.FieldAccessMask & FieldAttributes.Private);
+			}
+		}
+
+		public bool IsFamilyAndAssembly {
+			get { return (m_attributes & FieldAttributes.FieldAccessMask) == FieldAttributes.FamANDAssem; }
+			set {
+				if (value) {
+					m_attributes &= ~FieldAttributes.FieldAccessMask;
+					m_attributes |= FieldAttributes.FamANDAssem;
+				} else
+					m_attributes &= ~(FieldAttributes.FieldAccessMask & FieldAttributes.FamANDAssem);
+			}
+		}
+
+		public bool IsAssembly {
+			get { return (m_attributes & FieldAttributes.FieldAccessMask) == FieldAttributes.Assembly; }
+			set {
+				if (value) {
+					m_attributes &= ~FieldAttributes.FieldAccessMask;
+					m_attributes |= FieldAttributes.Assembly;
+				} else
+					m_attributes &= ~(FieldAttributes.FieldAccessMask & FieldAttributes.Assembly);
+			}
+		}
+
+		public bool IsFamily {
+			get { return (m_attributes & FieldAttributes.FieldAccessMask) == FieldAttributes.Family; }
+			set {
+				if (value) {
+					m_attributes &= ~FieldAttributes.FieldAccessMask;
+					m_attributes |= FieldAttributes.Family;
+				} else
+					m_attributes &= ~(FieldAttributes.FieldAccessMask & FieldAttributes.Family);
+			}
+		}
+
+		public bool IsFamilyOrAssembly {
+			get { return (m_attributes & FieldAttributes.FieldAccessMask) == FieldAttributes.FamORAssem; }
+			set {
+				if (value) {
+					m_attributes &= ~FieldAttributes.FieldAccessMask;
+					m_attributes |= FieldAttributes.FamORAssem;
+				} else
+					m_attributes &= ~(FieldAttributes.FieldAccessMask & FieldAttributes.FamORAssem);
+			}
+		}
+
+		public bool IsPublic {
+			get { return (m_attributes & FieldAttributes.FieldAccessMask) == FieldAttributes.Public; }
+			set {
+				if (value) {
+					m_attributes &= ~FieldAttributes.FieldAccessMask;
+					m_attributes |= FieldAttributes.Public;
+				} else
+					m_attributes &= ~(FieldAttributes.FieldAccessMask & FieldAttributes.Public);
+			}
+		}
+
+		public bool IsStatic {
+			get { return (m_attributes & FieldAttributes.Static) != 0; }
+			set {
+				if (value)
+					m_attributes |= FieldAttributes.Static;
+				else
+					m_attributes &= ~FieldAttributes.Static;
+			}
+		}
+
+		public bool IsInitOnly {
+			get { return (m_attributes & FieldAttributes.InitOnly) != 0; }
+			set {
+				if (value)
+					m_attributes |= FieldAttributes.InitOnly;
+				else
+					m_attributes &= ~FieldAttributes.InitOnly;
+			}
+		}
+
+		public bool IsLiteral {
+			get { return (m_attributes & FieldAttributes.Literal) != 0; }
+			set {
+				if (value)
+					m_attributes |= FieldAttributes.Literal;
+				else
+					m_attributes &= ~FieldAttributes.Literal;
+			}
+		}
+
+		public bool IsNotSerialized {
+			get { return (m_attributes & FieldAttributes.NotSerialized) != 0; }
+			set {
+				if (value)
+					m_attributes |= FieldAttributes.NotSerialized;
+				else
+					m_attributes &= ~FieldAttributes.NotSerialized;
+			}
+		}
+
+		public bool IsSpecialName {
+			get { return (m_attributes & FieldAttributes.SpecialName) != 0; }
+			set {
+				if (value)
+					m_attributes |= FieldAttributes.SpecialName;
+				else
+					m_attributes &= ~FieldAttributes.SpecialName;
+			}
+		}
+
+		public bool IsPInvokeImpl {
+			get { return (m_attributes & FieldAttributes.PInvokeImpl) != 0; }
+			set {
+				if (value)
+					m_attributes |= FieldAttributes.PInvokeImpl;
+				else
+					m_attributes &= ~FieldAttributes.PInvokeImpl;
+			}
+		}
+
+		public bool IsRuntimeSpecialName {
+			get { return (m_attributes & FieldAttributes.RTSpecialName) != 0; }
+			set {
+				if (value)
+					m_attributes |= FieldAttributes.RTSpecialName;
+				else
+					m_attributes &= ~FieldAttributes.RTSpecialName;
+			}
+		}
+
+		public bool HasDefault {
+			get { return (m_attributes & FieldAttributes.HasDefault) != 0; }
+			set {
+				if (value)
+					m_attributes |= FieldAttributes.HasDefault;
+				else
+					m_attributes &= ~FieldAttributes.HasDefault;
+			}
+		}
+
+		#endregion
+
+		public new TypeDefinition DeclaringType {
+			get { return (TypeDefinition) base.DeclaringType; }
+			set { base.DeclaringType = value; }
+		}
+
+		public FieldDefinition (string name, TypeReference fieldType,
+			FieldAttributes attrs) : base (name, fieldType)
+		{
+			m_attributes = attrs;
+		}
+
+		public override FieldDefinition Resolve ()
+		{
+			return this;
+		}
+
+		public FieldDefinition Clone ()
+		{
+			return Clone (this, new ImportContext (NullReferenceImporter.Instance, this.DeclaringType));
+		}
+
+		internal static FieldDefinition Clone (FieldDefinition field, ImportContext context)
+		{
+			FieldDefinition nf = new FieldDefinition (
+				field.Name,
+				context.Import (field.FieldType),
+				field.Attributes);
+
+			if (field.HasConstant)
+				nf.Constant = field.Constant;
+			if (field.MarshalSpec != null)
+				nf.MarshalSpec = field.MarshalSpec.CloneInto (nf);
+			if (field.RVA != RVA.Zero)
+				nf.InitialValue = field.InitialValue;
+			else
+				nf.InitialValue = new byte [0];
+			if (field.HasLayoutInfo)
+				nf.Offset = field.Offset;
+
+			foreach (CustomAttribute ca in field.CustomAttributes)
+				nf.CustomAttributes.Add (CustomAttribute.Clone (ca, context));
+
+			return nf;
+		}
+
+		public override void Accept (IReflectionVisitor visitor)
+		{
+			visitor.VisitFieldDefinition (this);
+
+			if (this.MarshalSpec != null)
+				this.MarshalSpec.Accept (visitor);
+
+			this.CustomAttributes.Accept (visitor);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/FieldDefinitionCollection.cs b/mcs/tools/cil-strip/Mono.Cecil/FieldDefinitionCollection.cs
new file mode 100644
index 0000000..65b5784
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/FieldDefinitionCollection.cs
@@ -0,0 +1,137 @@
+//
+// FieldDefinitionCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Fri Mar 30 18:43:57 +0200 2007
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System;
+	using System.Collections;
+
+	using Mono.Cecil.Cil;
+
+	internal sealed class FieldDefinitionCollection : CollectionBase, IReflectionVisitable {
+
+		TypeDefinition m_container;
+
+		public FieldDefinition this [int index] {
+			get { return List [index] as FieldDefinition; }
+			set { List [index] = value; }
+		}
+
+		public TypeDefinition Container {
+			get { return m_container; }
+		}
+
+		public FieldDefinitionCollection (TypeDefinition container)
+		{
+			m_container = container;
+		}
+
+		public void Add (FieldDefinition value)
+		{
+			Attach (value);
+
+			List.Add (value);
+		}
+
+
+		public new void Clear ()
+		{
+			foreach (FieldDefinition item in this)
+				Detach (item);
+
+			base.Clear ();
+		}
+
+		public bool Contains (FieldDefinition value)
+		{
+			return List.Contains (value);
+		}
+
+		public int IndexOf (FieldDefinition value)
+		{
+			return List.IndexOf (value);
+		}
+
+		public void Insert (int index, FieldDefinition value)
+		{
+			Attach (value);
+
+			List.Insert (index, value);
+		}
+
+		public void Remove (FieldDefinition value)
+		{
+			List.Remove (value);
+
+			Detach (value);
+		}
+
+
+		public new void RemoveAt (int index)
+		{
+			FieldDefinition item = this [index];
+			Remove (item);
+		}
+
+		protected override void OnValidate (object o)
+		{
+			if (! (o is FieldDefinition))
+				throw new ArgumentException ("Must be of type " + typeof (FieldDefinition).FullName);
+		}
+
+		public FieldDefinition GetField (string name)
+		{
+			foreach (FieldDefinition field in this)
+				if (field.Name == name)
+					return field;
+
+			return null;
+		}
+
+		void Attach (MemberReference member)
+		{
+			if (member.DeclaringType != null)
+				throw new ReflectionException ("Member already attached, clone it instead");
+
+			member.DeclaringType = m_container;
+		}
+
+		void Detach (MemberReference member)
+		{
+			member.DeclaringType = null;
+		}
+
+		public void Accept (IReflectionVisitor visitor)
+		{
+			visitor.VisitFieldDefinitionCollection (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/FieldReference.cs b/mcs/tools/cil-strip/Mono.Cecil/FieldReference.cs
new file mode 100644
index 0000000..b7eb33d
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/FieldReference.cs
@@ -0,0 +1,67 @@
+//
+// FieldReference.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using Mono.Cecil;
+
+	internal class FieldReference : MemberReference {
+
+		TypeReference m_fieldType;
+
+		public TypeReference FieldType {
+			get { return m_fieldType; }
+			set { m_fieldType = value; }
+		}
+
+		internal FieldReference (string name, TypeReference fieldType) : base (name)
+		{
+			m_fieldType = fieldType;
+		}
+
+		public FieldReference (string name, TypeReference declaringType, TypeReference fieldType) :
+			this (name, fieldType)
+		{
+			this.DeclaringType = declaringType;
+		}
+
+		public virtual FieldDefinition Resolve ()
+		{
+			TypeReference declaringType = DeclaringType;
+			if (declaringType == null)
+				return null;
+
+			return declaringType.Module.Resolver.Resolve (this);
+		}
+
+		public override string ToString ()
+		{
+			return string.Concat (m_fieldType.FullName, " ", base.ToString ());
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/FileAttributes.cs b/mcs/tools/cil-strip/Mono.Cecil/FileAttributes.cs
new file mode 100644
index 0000000..74d29a9
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/FileAttributes.cs
@@ -0,0 +1,35 @@
+//
+// FileAttributes.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	internal enum FileAttributes : uint {
+		ContainsMetaData	= 0x0000,	// This is not a resource file
+		ContainsNoMetaData  = 0x0001,	// This is a resource file or other non-metadata-containing file
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/FunctionPointerType.cs b/mcs/tools/cil-strip/Mono.Cecil/FunctionPointerType.cs
new file mode 100644
index 0000000..ef1375f
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/FunctionPointerType.cs
@@ -0,0 +1,116 @@
+//
+// FunctionPointerType.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 - 2007 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System;
+	using System.Text;
+
+	internal sealed class FunctionPointerType : TypeSpecification, IMethodSignature {
+
+		MethodReference m_function;
+
+		public bool HasThis {
+			get { return m_function.HasThis; }
+			set { m_function.HasThis = value; }
+		}
+
+		public bool ExplicitThis {
+			get { return m_function.ExplicitThis; }
+			set { m_function.ExplicitThis = value; }
+		}
+
+		public MethodCallingConvention CallingConvention {
+			get { return m_function.CallingConvention; }
+			set { m_function.CallingConvention = value; }
+		}
+
+		public bool HasParameters {
+			get { return m_function.HasParameters; }
+		}
+
+		public ParameterDefinitionCollection Parameters {
+			get { return m_function.Parameters; }
+		}
+
+		public MethodReturnType ReturnType {
+			get { return m_function.ReturnType; }
+			set { m_function.ReturnType = value; }
+		}
+
+		public override string Name {
+			get { return m_function.Name; }
+			set { throw new InvalidOperationException (); }
+		}
+
+		public override string Namespace {
+			get { return string.Empty; }
+			set { throw new InvalidOperationException (); }
+		}
+
+		public override IMetadataScope Scope {
+			get { return m_function.DeclaringType.Scope; }
+		}
+
+		public override string FullName {
+			get {
+				int sentinel = GetSentinel ();
+				StringBuilder sb = new StringBuilder ();
+				sb.Append (m_function.Name);
+				sb.Append (" ");
+				sb.Append (m_function.ReturnType.ReturnType.FullName);
+				sb.Append (" *(");
+				if (m_function.HasParameters) {
+					for (int i = 0; i < m_function.Parameters.Count; i++) {
+						if (i > 0)
+							sb.Append (",");
+
+						if (i == sentinel)
+							sb.Append ("...,");
+
+						sb.Append (m_function.Parameters [i].ParameterType.FullName);
+					}
+				}
+				sb.Append (")");
+				return sb.ToString ();
+			}
+		}
+
+		public FunctionPointerType (bool hasThis, bool explicitThis, MethodCallingConvention callConv, MethodReturnType retType) :
+			base (retType.ReturnType)
+		{
+			m_function = new MethodReference ("method", hasThis, explicitThis, callConv);
+			m_function.ReturnType = retType;
+		}
+
+		public int GetSentinel ()
+		{
+			return m_function.GetSentinel ();
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/GenericArgumentCollection.cs b/mcs/tools/cil-strip/Mono.Cecil/GenericArgumentCollection.cs
new file mode 100644
index 0000000..3faea84
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/GenericArgumentCollection.cs
@@ -0,0 +1,88 @@
+//
+// GenericArgumentCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Wed Sep 27 12:46:54 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System;
+	using System.Collections;
+
+	using Mono.Cecil.Cil;
+
+	internal sealed class GenericArgumentCollection : CollectionBase {
+
+		IGenericInstance m_container;
+
+		public TypeReference this [int index] {
+			get { return List [index] as TypeReference; }
+			set { List [index] = value; }
+		}
+
+		public IGenericInstance Container {
+			get { return m_container; }
+		}
+
+		public GenericArgumentCollection (IGenericInstance container)
+		{
+			m_container = container;
+		}
+
+		public void Add (TypeReference value)
+		{
+			List.Add (value);
+		}
+
+		public bool Contains (TypeReference value)
+		{
+			return List.Contains (value);
+		}
+
+		public int IndexOf (TypeReference value)
+		{
+			return List.IndexOf (value);
+		}
+
+		public void Insert (int index, TypeReference value)
+		{
+			List.Insert (index, value);
+		}
+
+		public void Remove (TypeReference value)
+		{
+			List.Remove (value);
+		}
+
+		protected override void OnValidate (object o)
+		{
+			if (! (o is TypeReference))
+				throw new ArgumentException ("Must be of type " + typeof (TypeReference).FullName);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/GenericContext.cs b/mcs/tools/cil-strip/Mono.Cecil/GenericContext.cs
new file mode 100644
index 0000000..bdf0026
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/GenericContext.cs
@@ -0,0 +1,92 @@
+//
+// GenericContext.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	internal class GenericContext {
+
+		TypeReference m_type;
+		MethodReference m_method;
+
+		public TypeReference Type {
+			get { return m_type; }
+			set { m_type = value; }
+		}
+
+		public MethodReference Method {
+			get { return m_method; }
+			set { m_method = value; }
+		}
+
+		public bool AllowCreation {
+			get { return m_type != null && m_type.GetType () == typeof (TypeReference); }
+		}
+
+		public bool Null {
+			get { return m_type == null && m_method == null; }
+		}
+
+		public GenericContext ()
+		{
+		}
+
+		public GenericContext (TypeReference type, MethodReference meth)
+		{
+			m_type = type;
+			m_method = meth;
+		}
+
+		public GenericContext (IGenericParameterProvider provider)
+		{
+			if (provider is TypeReference)
+				m_type = provider as TypeReference;
+			else if (provider is MethodReference) {
+				MethodReference meth = provider as MethodReference;
+				m_method = meth;
+				m_type = meth.DeclaringType;
+			}
+		}
+
+		internal void CheckProvider (IGenericParameterProvider provider, int count)
+		{
+			if (!AllowCreation)
+				return;
+
+			for (int i = provider.GenericParameters.Count; i < count; i++)
+				provider.GenericParameters.Add (new GenericParameter (i, provider));
+		}
+
+		public GenericContext Clone ()
+		{
+			GenericContext ctx = new GenericContext ();
+			ctx.Type = m_type;
+			ctx.Method = m_method;
+			return ctx;
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/GenericInstanceMethod.cs b/mcs/tools/cil-strip/Mono.Cecil/GenericInstanceMethod.cs
new file mode 100644
index 0000000..342dba5
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/GenericInstanceMethod.cs
@@ -0,0 +1,81 @@
+//
+// IGenericInstanceMethod.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System.Text;
+
+	internal sealed class GenericInstanceMethod : MethodSpecification, IGenericInstance {
+
+		private GenericArgumentCollection m_genArgs;
+
+		public GenericArgumentCollection GenericArguments {
+			get {
+				if (m_genArgs == null)
+					m_genArgs = new GenericArgumentCollection (this);
+				return m_genArgs;
+			}
+		}
+
+		public bool HasGenericArguments {
+			get { return m_genArgs == null ? false : m_genArgs.Count > 0; }
+		}
+
+		public GenericInstanceMethod (MethodReference elemMethod) : base (elemMethod)
+		{
+		}
+
+		public override string ToString ()
+		{
+			StringBuilder sb = new StringBuilder ();
+			MethodReference meth = this.ElementMethod;
+			sb.Append (meth.ReturnType.ReturnType.FullName);
+			sb.Append (" ");
+			sb.Append (meth.DeclaringType.FullName);
+			sb.Append ("::");
+			sb.Append (meth.Name);
+			sb.Append ("<");
+			for (int i = 0; i < this.GenericArguments.Count; i++) {
+				if (i > 0)
+					sb.Append (",");
+				sb.Append (this.GenericArguments [i].FullName);
+			}
+			sb.Append (">");
+			sb.Append ("(");
+			if (meth.HasParameters) {
+				for (int i = 0; i < meth.Parameters.Count; i++) {
+					sb.Append (meth.Parameters [i].ParameterType.FullName);
+					if (i < meth.Parameters.Count - 1)
+						sb.Append (",");
+				}
+			}
+			sb.Append (")");
+			return sb.ToString ();
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/GenericInstanceType.cs b/mcs/tools/cil-strip/Mono.Cecil/GenericInstanceType.cs
new file mode 100644
index 0000000..ee672eb
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/GenericInstanceType.cs
@@ -0,0 +1,75 @@
+//
+// GenericInstanceType.cs
+//
+// Author:
+//	Martin Baulig  <martin at ximian.com>
+//  Jb Evain  <jbevain at gmail.com>
+//
+// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System.Text;
+
+	internal sealed class GenericInstanceType : TypeSpecification, IGenericInstance {
+
+		private GenericArgumentCollection m_genArgs;
+
+		public GenericArgumentCollection GenericArguments {
+			get {
+				if (m_genArgs == null)
+					m_genArgs = new GenericArgumentCollection (this);
+				return m_genArgs;
+			}
+		}
+
+		public bool HasGenericArguments {
+			get { return m_genArgs == null ? false : m_genArgs.Count > 0; }
+		}
+
+		public override bool IsValueType {
+			get { return m_isValueType; }
+			set { m_isValueType = value; }
+		}
+
+		public override string FullName {
+			get {
+				StringBuilder sb = new StringBuilder ();
+				sb.Append (base.FullName);
+				sb.Append ("<");
+				for (int i = 0; i < this.GenericArguments.Count; i++) {
+					if (i > 0)
+						sb.Append (",");
+					sb.Append (this.GenericArguments [i].FullName);
+				}
+				sb.Append (">");
+				return sb.ToString ();
+			}
+		}
+
+		public GenericInstanceType (TypeReference elementType) : base (elementType)
+		{
+			m_isValueType = elementType.IsValueType;
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/GenericParameter.cs b/mcs/tools/cil-strip/Mono.Cecil/GenericParameter.cs
new file mode 100644
index 0000000..205b06e
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/GenericParameter.cs
@@ -0,0 +1,238 @@
+//
+// GenericParameter.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System;
+
+	internal sealed class GenericParameter : TypeReference {
+
+		int m_position;
+		string m_name;
+		GenericParameterAttributes m_attributes;
+		IGenericParameterProvider m_owner;
+		ConstraintCollection m_constraints;
+
+		public int Position {
+			get { return m_position; }
+			set { m_position = value; }
+		}
+
+		public GenericParameterAttributes Attributes {
+			get { return m_attributes; }
+			set { m_attributes = value; }
+		}
+
+		public IGenericParameterProvider Owner {
+			get { return m_owner; }
+		}
+
+		public bool HasConstraints {
+			get { return (m_constraints == null) ? false : (m_constraints.Count > 0); }
+		}
+
+		public ConstraintCollection Constraints {
+			get {
+				if (m_constraints == null)
+					m_constraints = new ConstraintCollection (this);
+
+				return m_constraints;
+			}
+		}
+
+		public override IMetadataScope Scope {
+			get {
+				if (m_owner is TypeReference)
+					return ((TypeReference) m_owner).Scope;
+				if (m_owner is MethodReference)
+					return ((MethodReference) m_owner).DeclaringType.Scope;
+
+				throw new InvalidOperationException ();
+			}
+		}
+
+		public override ModuleDefinition Module {
+			get {
+				if (m_owner is TypeReference)
+					return ((TypeReference) m_owner).Module;
+				if (m_owner is MethodReference)
+					return ((MethodReference) m_owner).DeclaringType.Module;
+
+				throw new InvalidOperationException ();
+			}
+		}
+
+		public override string Name {
+			get {
+				if (m_name != null)
+					return m_name;
+
+				if (m_owner is TypeReference)
+					return string.Concat ("!", m_position.ToString ());
+				else if (m_owner is MethodReference)
+					return string.Concat ("!!", m_position.ToString ());
+				else
+					throw new InvalidOperationException ();
+			}
+			set { m_name = value; }
+		}
+
+		public override string Namespace {
+			get { return string.Empty; }
+			set { throw new InvalidOperationException (); }
+		}
+
+		public override string FullName {
+			get { return Name; }
+		}
+
+		#region GenericParameterAttributes
+
+		public bool IsNonVariant {
+			get { return (m_attributes & GenericParameterAttributes.VarianceMask) == GenericParameterAttributes.NonVariant; }
+			set {
+				if (value) {
+					m_attributes &= ~GenericParameterAttributes.VarianceMask;
+					m_attributes |= GenericParameterAttributes.NonVariant;
+				} else
+					m_attributes &= ~(GenericParameterAttributes.VarianceMask & GenericParameterAttributes.NonVariant);
+			}
+		}
+
+		public bool IsCovariant {
+			get { return (m_attributes & GenericParameterAttributes.VarianceMask) == GenericParameterAttributes.Covariant; }
+			set {
+				if (value) {
+					m_attributes &= ~GenericParameterAttributes.VarianceMask;
+					m_attributes |= GenericParameterAttributes.Covariant;
+				} else
+					m_attributes &= ~(GenericParameterAttributes.VarianceMask & GenericParameterAttributes.Covariant);
+			}
+		}
+
+		public bool IsContravariant {
+			get { return (m_attributes & GenericParameterAttributes.VarianceMask) == GenericParameterAttributes.Contravariant; }
+			set {
+				if (value) {
+					m_attributes &= ~GenericParameterAttributes.VarianceMask;
+					m_attributes |= GenericParameterAttributes.Contravariant;
+				} else
+					m_attributes &= ~(GenericParameterAttributes.VarianceMask & GenericParameterAttributes.Contravariant);
+			}
+		}
+
+		public bool HasReferenceTypeConstraint {
+			get { return (m_attributes & GenericParameterAttributes.ReferenceTypeConstraint) != 0; }
+			set {
+				if (value) {
+					m_attributes |= GenericParameterAttributes.ReferenceTypeConstraint;
+				} else
+					m_attributes &= ~GenericParameterAttributes.ReferenceTypeConstraint;
+			}
+		}
+
+		public bool HasNotNullableValueTypeConstraint {
+			get { return (m_attributes & GenericParameterAttributes.NotNullableValueTypeConstraint) != 0; }
+			set {
+				if (value) {
+					m_attributes |= GenericParameterAttributes.NotNullableValueTypeConstraint;
+				} else
+					m_attributes &= ~GenericParameterAttributes.NotNullableValueTypeConstraint;
+			}
+		}
+
+		public bool HasDefaultConstructorConstraint {
+			get { return (m_attributes & GenericParameterAttributes.DefaultConstructorConstraint) != 0; }
+			set {
+				if (value) {
+					m_attributes |= GenericParameterAttributes.DefaultConstructorConstraint;
+				} else
+					m_attributes &= ~GenericParameterAttributes.DefaultConstructorConstraint;
+			}
+		}
+
+		#endregion
+
+		internal GenericParameter (int pos, IGenericParameterProvider owner) :
+			base (string.Empty, string.Empty)
+		{
+			m_position = pos;
+			m_owner = owner;
+		}
+
+		public GenericParameter (string name, IGenericParameterProvider owner) :
+			base (string.Empty, string.Empty)
+		{
+			m_name = name;
+			m_owner = owner;
+		}
+
+		public override TypeDefinition Resolve ()
+		{
+			return null;
+		}
+
+		internal static void CloneInto (IGenericParameterProvider old, IGenericParameterProvider np, ImportContext context)
+		{
+			foreach (GenericParameter gp in old.GenericParameters) {
+				GenericParameter ngp = Clone (gp, context);
+				np.GenericParameters.Add (ngp);
+				CloneConstraints (gp, ngp, context);
+			}
+		}
+
+		internal static GenericParameter Clone (GenericParameter gp, ImportContext context)
+		{
+			GenericParameter ngp;
+			if (gp.Owner is TypeReference)
+				ngp = new GenericParameter (gp.m_name, context.GenericContext.Type);
+			else if (gp.Owner is MethodReference)
+				ngp = new GenericParameter (gp.m_name, context.GenericContext.Method);
+			else
+				throw new NotSupportedException ();
+
+			ngp.Position = gp.Owner.GenericParameters.IndexOf (gp);
+			ngp.Attributes = gp.Attributes;
+
+			if (gp.HasCustomAttributes) {
+				foreach (CustomAttribute ca in gp.CustomAttributes)
+					ngp.CustomAttributes.Add (CustomAttribute.Clone (ca, context));
+			}
+
+			return ngp;
+		}
+
+		static void CloneConstraints (GenericParameter gp, GenericParameter ngp, ImportContext context)
+		{
+			if (gp.HasConstraints) {
+				foreach (TypeReference constraint in gp.Constraints)
+					ngp.Constraints.Add (context.Import (constraint));
+			}
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/GenericParameterAttributes.cs b/mcs/tools/cil-strip/Mono.Cecil/GenericParameterAttributes.cs
new file mode 100644
index 0000000..141e968
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/GenericParameterAttributes.cs
@@ -0,0 +1,45 @@
+//
+// GenericParameterAttributes.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System;
+
+	[Flags]
+	internal enum GenericParameterAttributes : ushort {
+		VarianceMask	= 0x0003,
+		NonVariant		= 0x0000,
+		Covariant		= 0x0001,
+		Contravariant	= 0x0002,
+
+		SpecialConstraintMask			= 0x001c,
+		ReferenceTypeConstraint			= 0x0004,
+		NotNullableValueTypeConstraint	= 0x0008,
+		DefaultConstructorConstraint	= 0x0010
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/GenericParameterCollection.cs b/mcs/tools/cil-strip/Mono.Cecil/GenericParameterCollection.cs
new file mode 100644
index 0000000..9d9ec0b
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/GenericParameterCollection.cs
@@ -0,0 +1,93 @@
+//
+// GenericParameterCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Wed Sep 27 12:46:53 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System;
+	using System.Collections;
+
+	using Mono.Cecil.Cil;
+
+	internal sealed class GenericParameterCollection : CollectionBase, IReflectionVisitable {
+
+		IGenericParameterProvider m_container;
+
+		public GenericParameter this [int index] {
+			get { return List [index] as GenericParameter; }
+			set { List [index] = value; }
+		}
+
+		public IGenericParameterProvider Container {
+			get { return m_container; }
+		}
+
+		public GenericParameterCollection (IGenericParameterProvider container)
+		{
+			m_container = container;
+		}
+
+		public void Add (GenericParameter value)
+		{
+			List.Add (value);
+		}
+
+		public bool Contains (GenericParameter value)
+		{
+			return List.Contains (value);
+		}
+
+		public int IndexOf (GenericParameter value)
+		{
+			return List.IndexOf (value);
+		}
+
+		public void Insert (int index, GenericParameter value)
+		{
+			List.Insert (index, value);
+		}
+
+		public void Remove (GenericParameter value)
+		{
+			List.Remove (value);
+		}
+
+		protected override void OnValidate (object o)
+		{
+			if (! (o is GenericParameter))
+				throw new ArgumentException ("Must be of type " + typeof (GenericParameter).FullName);
+		}
+
+		public void Accept (IReflectionVisitor visitor)
+		{
+			visitor.VisitGenericParameterCollection (this);
+		}
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/HashCodeProvider.cs b/mcs/tools/cil-strip/Mono.Cecil/HashCodeProvider.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil/HashCodeProvider.cs
rename to mcs/tools/cil-strip/Mono.Cecil/HashCodeProvider.cs
diff --git a/mcs/tools/cil-strip/Mono.Cecil/IAnnotationProvider.cs b/mcs/tools/cil-strip/Mono.Cecil/IAnnotationProvider.cs
new file mode 100644
index 0000000..6ebc22e
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/IAnnotationProvider.cs
@@ -0,0 +1,37 @@
+//
+// AssemblyDefinition.cs
+//
+// Author:
+//   Jb Evain (jbevain at novell.com)
+//
+// (C) 2007 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System.Collections;
+
+	internal interface IAnnotationProvider {
+
+		IDictionary Annotations { get; }
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/IAssemblyResolver.cs b/mcs/tools/cil-strip/Mono.Cecil/IAssemblyResolver.cs
new file mode 100644
index 0000000..ed4329a
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/IAssemblyResolver.cs
@@ -0,0 +1,36 @@
+//
+// IAssemblyResolver.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2006 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	internal interface IAssemblyResolver {
+
+		AssemblyDefinition Resolve (string fullName);
+		AssemblyDefinition Resolve (AssemblyNameReference name);
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/ICustomAttributeProvider.cs b/mcs/tools/cil-strip/Mono.Cecil/ICustomAttributeProvider.cs
new file mode 100644
index 0000000..fdd5225
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/ICustomAttributeProvider.cs
@@ -0,0 +1,39 @@
+//
+// ICustomAttributeProvider.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System.Reflection;
+
+	internal interface ICustomAttributeProvider {
+
+		CustomAttributeCollection CustomAttributes { get; }
+
+		bool HasCustomAttributes { get; }
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/IDetailReader.cs b/mcs/tools/cil-strip/Mono.Cecil/IDetailReader.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil/IDetailReader.cs
rename to mcs/tools/cil-strip/Mono.Cecil/IDetailReader.cs
diff --git a/mcs/tools/cil-strip/Mono.Cecil/IGenericInstance.cs b/mcs/tools/cil-strip/Mono.Cecil/IGenericInstance.cs
new file mode 100644
index 0000000..8aa7c5c
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/IGenericInstance.cs
@@ -0,0 +1,37 @@
+//
+// IGenericInstanceMethod.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	internal interface IGenericInstance : IMetadataTokenProvider {
+
+		GenericArgumentCollection GenericArguments { get; }
+
+		bool HasGenericArguments { get; }
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/IGenericParameterProvider.cs b/mcs/tools/cil-strip/Mono.Cecil/IGenericParameterProvider.cs
new file mode 100644
index 0000000..5e823dd
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/IGenericParameterProvider.cs
@@ -0,0 +1,37 @@
+//
+// IGenericParameterProvider.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	internal interface IGenericParameterProvider : IMetadataTokenProvider {
+
+		GenericParameterCollection GenericParameters { get; }
+
+		bool HasGenericParameters { get; }
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/IHasConstant.cs b/mcs/tools/cil-strip/Mono.Cecil/IHasConstant.cs
new file mode 100644
index 0000000..13f299e
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/IHasConstant.cs
@@ -0,0 +1,36 @@
+//
+// IHasConstant.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	internal interface IHasConstant : IMetadataTokenProvider {
+
+		bool HasConstant { get; }
+		object Constant { get; set; }
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/IHasMarshalSpec.cs b/mcs/tools/cil-strip/Mono.Cecil/IHasMarshalSpec.cs
new file mode 100644
index 0000000..e5991df
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/IHasMarshalSpec.cs
@@ -0,0 +1,35 @@
+//
+// IHasMarshalSpec.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	internal interface IHasMarshalSpec : IMetadataTokenProvider {
+
+		MarshalSpec MarshalSpec { get; set; }
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/IHasSecurity.cs b/mcs/tools/cil-strip/Mono.Cecil/IHasSecurity.cs
new file mode 100644
index 0000000..470b6f4
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/IHasSecurity.cs
@@ -0,0 +1,37 @@
+//
+// IHasSecurity.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	internal interface IHasSecurity : IMetadataTokenProvider {
+
+		SecurityDeclarationCollection SecurityDeclarations { get; }
+
+		bool HasSecurityDeclarations { get; }
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/IImporter.cs b/mcs/tools/cil-strip/Mono.Cecil/IImporter.cs
new file mode 100644
index 0000000..7a16080
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/IImporter.cs
@@ -0,0 +1,37 @@
+//
+// IImporter.cs
+//
+// Author:
+//   Jb Evain (jbevain at novell.com)
+//
+// (C) 2007 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	internal interface IImporter {
+
+		TypeReference ImportTypeReference (TypeReference type, ImportContext context);
+		FieldReference ImportFieldReference (FieldReference field, ImportContext context);
+		MethodReference ImportMethodReference (MethodReference method, ImportContext context);
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/IMemberDefinition.cs b/mcs/tools/cil-strip/Mono.Cecil/IMemberDefinition.cs
new file mode 100644
index 0000000..be0828e
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/IMemberDefinition.cs
@@ -0,0 +1,37 @@
+//
+// IMemberDefinition.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	internal interface IMemberDefinition : IMemberReference, ICustomAttributeProvider {
+
+		new TypeDefinition DeclaringType { get; set; }
+		bool IsSpecialName { get; set; }
+		bool IsRuntimeSpecialName { get; set; }
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/IMemberReference.cs b/mcs/tools/cil-strip/Mono.Cecil/IMemberReference.cs
new file mode 100644
index 0000000..e7f4f34
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/IMemberReference.cs
@@ -0,0 +1,36 @@
+//
+// IMemberReference.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	internal interface IMemberReference : IMetadataTokenProvider, IAnnotationProvider, IReflectionVisitable {
+
+		string Name { get; set; }
+		TypeReference DeclaringType { get; }
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/IMetadataScope.cs b/mcs/tools/cil-strip/Mono.Cecil/IMetadataScope.cs
new file mode 100644
index 0000000..a7cbe9f
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/IMetadataScope.cs
@@ -0,0 +1,34 @@
+//
+// IMetadataScope.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	internal interface IMetadataScope : IMetadataTokenProvider {
+		string Name { get; set; }
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/IMetadataTokenProvider.cs b/mcs/tools/cil-strip/Mono.Cecil/IMetadataTokenProvider.cs
new file mode 100644
index 0000000..cff4fb7
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/IMetadataTokenProvider.cs
@@ -0,0 +1,37 @@
+//
+// IMetadataTokenProvider.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using Mono.Cecil.Metadata;
+
+	internal interface IMetadataTokenProvider {
+
+		MetadataToken MetadataToken { get; set; }
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/IMethodSignature.cs b/mcs/tools/cil-strip/Mono.Cecil/IMethodSignature.cs
new file mode 100644
index 0000000..35ecf9b
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/IMethodSignature.cs
@@ -0,0 +1,43 @@
+//
+// IMethodSignature.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 - 2007 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	internal interface IMethodSignature {
+
+		bool HasParameters { get; }
+		bool HasThis { get; set; }
+		bool ExplicitThis { get; set; }
+		MethodCallingConvention CallingConvention { get; set; }
+
+		ParameterDefinitionCollection Parameters { get; }
+		MethodReturnType ReturnType { get; }
+
+		int GetSentinel ();
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/IReflectionStructureVisitable.cs b/mcs/tools/cil-strip/Mono.Cecil/IReflectionStructureVisitable.cs
new file mode 100644
index 0000000..be6d54b
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/IReflectionStructureVisitable.cs
@@ -0,0 +1,36 @@
+//
+// IReflectionStructureVisitable.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	internal interface IReflectionStructureVisitable {
+
+		void Accept (IReflectionStructureVisitor visitor);
+	}
+}
+
diff --git a/mcs/tools/cil-strip/Mono.Cecil/IReflectionStructureVisitor.cs b/mcs/tools/cil-strip/Mono.Cecil/IReflectionStructureVisitor.cs
new file mode 100644
index 0000000..3f2e65d
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/IReflectionStructureVisitor.cs
@@ -0,0 +1,49 @@
+//
+// IReflectionStructureVisitor.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	internal interface IReflectionStructureVisitor {
+
+		void VisitAssemblyDefinition (AssemblyDefinition asm);
+		void VisitAssemblyNameDefinition (AssemblyNameDefinition name);
+		void VisitAssemblyNameReferenceCollection (AssemblyNameReferenceCollection names);
+		void VisitAssemblyNameReference (AssemblyNameReference name);
+		void VisitResourceCollection (ResourceCollection resources);
+		void VisitEmbeddedResource (EmbeddedResource res);
+		void VisitLinkedResource (LinkedResource res);
+		void VisitAssemblyLinkedResource (AssemblyLinkedResource res);
+		void VisitModuleDefinition (ModuleDefinition module);
+		void VisitModuleDefinitionCollection (ModuleDefinitionCollection modules);
+		void VisitModuleReference (ModuleReference module);
+		void VisitModuleReferenceCollection (ModuleReferenceCollection modules);
+
+		void TerminateAssemblyDefinition (AssemblyDefinition asm);
+	}
+}
+
diff --git a/mcs/tools/cil-strip/Mono.Cecil/IReflectionVisitable.cs b/mcs/tools/cil-strip/Mono.Cecil/IReflectionVisitable.cs
new file mode 100644
index 0000000..575f14f
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/IReflectionVisitable.cs
@@ -0,0 +1,36 @@
+//
+// IReflectionVisitable.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	internal interface IReflectionVisitable {
+
+		void Accept (IReflectionVisitor visitor);
+	}
+}
+
diff --git a/mcs/tools/cil-strip/Mono.Cecil/IReflectionVisitor.cs b/mcs/tools/cil-strip/Mono.Cecil/IReflectionVisitor.cs
new file mode 100644
index 0000000..b1c991f
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/IReflectionVisitor.cs
@@ -0,0 +1,71 @@
+//
+// IReflectionVisitor.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	internal interface IReflectionVisitor {
+
+		void VisitModuleDefinition (ModuleDefinition module);
+		void VisitTypeDefinitionCollection (TypeDefinitionCollection types);
+		void VisitTypeDefinition (TypeDefinition type);
+		void VisitTypeReferenceCollection (TypeReferenceCollection refs);
+		void VisitTypeReference (TypeReference type);
+		void VisitMemberReferenceCollection (MemberReferenceCollection members);
+		void VisitMemberReference (MemberReference member);
+		void VisitInterfaceCollection (InterfaceCollection interfaces);
+		void VisitInterface (TypeReference interf);
+		void VisitExternTypeCollection (ExternTypeCollection externs);
+		void VisitExternType (TypeReference externType);
+		void VisitOverrideCollection (OverrideCollection meth);
+		void VisitOverride (MethodReference ov);
+		void VisitNestedTypeCollection (NestedTypeCollection nestedTypes);
+		void VisitNestedType (TypeDefinition nestedType);
+		void VisitParameterDefinitionCollection (ParameterDefinitionCollection parameters);
+		void VisitParameterDefinition (ParameterDefinition parameter);
+		void VisitMethodDefinitionCollection (MethodDefinitionCollection methods);
+		void VisitMethodDefinition (MethodDefinition method);
+		void VisitConstructorCollection (ConstructorCollection ctors);
+		void VisitConstructor (MethodDefinition ctor);
+		void VisitPInvokeInfo (PInvokeInfo pinvk);
+		void VisitEventDefinitionCollection (EventDefinitionCollection events);
+		void VisitEventDefinition (EventDefinition evt);
+		void VisitFieldDefinitionCollection (FieldDefinitionCollection fields);
+		void VisitFieldDefinition (FieldDefinition field);
+		void VisitPropertyDefinitionCollection (PropertyDefinitionCollection properties);
+		void VisitPropertyDefinition (PropertyDefinition property);
+		void VisitSecurityDeclarationCollection (SecurityDeclarationCollection secDecls);
+		void VisitSecurityDeclaration (SecurityDeclaration secDecl);
+		void VisitCustomAttributeCollection (CustomAttributeCollection customAttrs);
+		void VisitCustomAttribute (CustomAttribute customAttr);
+		void VisitGenericParameterCollection (GenericParameterCollection genparams);
+		void VisitGenericParameter (GenericParameter genparam);
+		void VisitMarshalSpec (MarshalSpec marshalSpec);
+
+		void TerminateModuleDefinition (ModuleDefinition module);
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/IRequireResolving.cs b/mcs/tools/cil-strip/Mono.Cecil/IRequireResolving.cs
new file mode 100644
index 0000000..41bfc0d
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/IRequireResolving.cs
@@ -0,0 +1,37 @@
+//
+// IRequireResolving.cs
+//
+// Author:
+//	Jb Evain <jbevain at gmail.com>
+//
+// Copyright (C) 2006 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	internal interface IRequireResolving {
+
+		byte [] Blob { get; }
+		bool Resolved { get; }
+		bool Resolve ();
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/ImportContext.cs b/mcs/tools/cil-strip/Mono.Cecil/ImportContext.cs
new file mode 100644
index 0000000..bc41788
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/ImportContext.cs
@@ -0,0 +1,68 @@
+//
+// ImportContext.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2006 Evaluant RC S.A.
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	internal class ImportContext {
+
+		GenericContext m_genContext;
+		IImporter m_importer;
+
+		public GenericContext GenericContext {
+			get { return m_genContext; }
+			set { m_genContext = value; }
+		}
+
+		public ImportContext (IImporter importer)
+		{
+			m_genContext = new GenericContext ();
+			m_importer = importer;
+		}
+
+		public ImportContext (IImporter importer, IGenericParameterProvider provider)
+		{
+			m_importer = importer;
+			m_genContext = new GenericContext (provider);
+		}
+
+		public TypeReference Import (TypeReference type)
+		{
+			return m_importer.ImportTypeReference (type, this);
+		}
+
+		public MethodReference Import (MethodReference meth)
+		{
+			return m_importer.ImportMethodReference (meth, this);
+		}
+
+		public FieldReference Import (FieldReference field)
+		{
+			return m_importer.ImportFieldReference (field, this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/InterfaceCollection.cs b/mcs/tools/cil-strip/Mono.Cecil/InterfaceCollection.cs
new file mode 100644
index 0000000..be0a3d2
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/InterfaceCollection.cs
@@ -0,0 +1,93 @@
+//
+// InterfaceCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Wed Sep 27 12:46:52 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System;
+	using System.Collections;
+
+	using Mono.Cecil.Cil;
+
+	internal sealed class InterfaceCollection : CollectionBase, IReflectionVisitable {
+
+		TypeDefinition m_container;
+
+		public TypeReference this [int index] {
+			get { return List [index] as TypeReference; }
+			set { List [index] = value; }
+		}
+
+		public TypeDefinition Container {
+			get { return m_container; }
+		}
+
+		public InterfaceCollection (TypeDefinition container)
+		{
+			m_container = container;
+		}
+
+		public void Add (TypeReference value)
+		{
+			List.Add (value);
+		}
+
+		public bool Contains (TypeReference value)
+		{
+			return List.Contains (value);
+		}
+
+		public int IndexOf (TypeReference value)
+		{
+			return List.IndexOf (value);
+		}
+
+		public void Insert (int index, TypeReference value)
+		{
+			List.Insert (index, value);
+		}
+
+		public void Remove (TypeReference value)
+		{
+			List.Remove (value);
+		}
+
+		protected override void OnValidate (object o)
+		{
+			if (! (o is TypeReference))
+				throw new ArgumentException ("Must be of type " + typeof (TypeReference).FullName);
+		}
+
+		public void Accept (IReflectionVisitor visitor)
+		{
+			visitor.VisitInterfaceCollection (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/LinkedResource.cs b/mcs/tools/cil-strip/Mono.Cecil/LinkedResource.cs
new file mode 100644
index 0000000..9520769
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/LinkedResource.cs
@@ -0,0 +1,57 @@
+//
+// LinkedResource.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 - 2007 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	internal sealed class LinkedResource : Resource {
+
+		byte [] m_hash;
+		string m_file;
+
+		public byte [] Hash {
+			get { return m_hash; }
+			set { m_hash = value; }
+		}
+
+		public string File {
+			get { return m_file; }
+			set { m_file = value; }
+		}
+
+		public LinkedResource (string name, ManifestResourceAttributes flags, string file) :
+			base (name, flags)
+		{
+			m_file = file;
+		}
+
+		public override void Accept (IReflectionStructureVisitor visitor)
+		{
+			visitor.VisitLinkedResource (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/ManifestResourceAttributes.cs b/mcs/tools/cil-strip/Mono.Cecil/ManifestResourceAttributes.cs
new file mode 100644
index 0000000..390c25b
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/ManifestResourceAttributes.cs
@@ -0,0 +1,39 @@
+//
+// ManigestResourceAttributes.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System;
+
+	[Flags]
+	internal enum ManifestResourceAttributes {
+		VisibilityMask	= 0x0007,
+		Public			= 0x0001,	// The resource is exported from the Assembly
+		Private			= 0x0002	 // The resource is private to the Assembly
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/MarshalSpec.cs b/mcs/tools/cil-strip/Mono.Cecil/MarshalSpec.cs
new file mode 100644
index 0000000..c4fd81d
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/MarshalSpec.cs
@@ -0,0 +1,218 @@
+//
+// MarshalDesc.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System;
+
+	internal class MarshalSpec {
+
+		NativeType m_natIntr;
+		IHasMarshalSpec m_container;
+
+		public NativeType NativeIntrinsic {
+			get { return m_natIntr; }
+			set { m_natIntr = value; }
+		}
+
+		public IHasMarshalSpec Container {
+			get { return m_container; }
+			set { m_container = value; }
+		}
+
+		public MarshalSpec (NativeType natIntr, IHasMarshalSpec container)
+		{
+			m_natIntr = natIntr;
+			m_container = container;
+		}
+
+		public virtual void Accept (IReflectionVisitor visitor)
+		{
+			visitor.VisitMarshalSpec (this);
+		}
+
+		public virtual MarshalSpec CloneInto (IHasMarshalSpec container)
+		{
+			return new MarshalSpec (m_natIntr, container);
+		}
+	}
+
+	internal sealed class ArrayMarshalSpec : MarshalSpec {
+
+		NativeType m_elemType;
+		int m_paramNum;
+		int m_elemMult;
+		int m_numElem;
+
+		public NativeType ElemType {
+			get { return m_elemType; }
+			set { m_elemType = value; }
+		}
+
+		public int ParamNum {
+			get { return m_paramNum; }
+			set { m_paramNum = value; }
+		}
+
+		public int ElemMult {
+			get { return m_elemMult; }
+			set { m_elemMult = value; }
+		}
+
+		public int NumElem {
+			get { return m_numElem; }
+			set { m_numElem = value; }
+		}
+
+		public ArrayMarshalSpec (IHasMarshalSpec container) : base (NativeType.ARRAY, container)
+		{
+		}
+
+		public override MarshalSpec CloneInto (IHasMarshalSpec container)
+		{
+			ArrayMarshalSpec spec = new ArrayMarshalSpec (container);
+			spec.m_elemType = m_elemType;
+			spec.m_paramNum = m_paramNum;
+			spec.m_elemMult = m_elemMult;
+			spec.m_numElem = m_numElem;
+			return spec;
+		}
+	}
+
+	internal sealed class CustomMarshalerSpec : MarshalSpec {
+
+		Guid m_guid;
+		string m_unmanagedType;
+		string m_managedType;
+		string m_cookie;
+
+		public Guid Guid {
+			get { return m_guid; }
+			set { m_guid = value; }
+		}
+
+		public String UnmanagedType {
+			get { return m_unmanagedType; }
+			set { m_unmanagedType = value; }
+		}
+
+		public string ManagedType {
+			get { return m_managedType; }
+			set { m_managedType = value; }
+		}
+
+		public string Cookie {
+			get { return m_cookie; }
+			set { m_cookie = value; }
+		}
+
+		public CustomMarshalerSpec (IHasMarshalSpec container) : base (NativeType.CUSTOMMARSHALER, container)
+		{
+		}
+
+		public override MarshalSpec CloneInto (IHasMarshalSpec container)
+		{
+			CustomMarshalerSpec spec = new CustomMarshalerSpec (container);
+			spec.m_guid = m_guid;
+			spec.m_unmanagedType = m_unmanagedType;
+			spec.m_managedType = m_managedType;
+			spec.m_cookie = m_cookie;
+			return spec;
+		}
+	}
+
+	internal sealed class SafeArraySpec : MarshalSpec {
+
+		private VariantType m_elemType;
+
+		public VariantType ElemType {
+			get { return m_elemType; }
+			set { m_elemType = value; }
+		}
+
+		public SafeArraySpec (IHasMarshalSpec container) : base (NativeType.SAFEARRAY, container)
+		{
+		}
+
+		public override MarshalSpec CloneInto(IHasMarshalSpec container)
+		{
+			SafeArraySpec spec = new SafeArraySpec	(container);
+			spec.m_elemType = m_elemType;
+			return spec;
+		}
+	}
+
+	internal sealed class FixedArraySpec : MarshalSpec {
+
+		private int m_numElem;
+		private NativeType m_elemType;
+
+		public int NumElem {
+			get { return m_numElem; }
+			set { m_numElem = value; }
+		}
+
+		public NativeType ElemType {
+			get { return m_elemType; }
+			set { m_elemType = value; }
+		}
+
+		public FixedArraySpec (IHasMarshalSpec container) : base (NativeType.FIXEDARRAY, container)
+		{
+		}
+
+		public override MarshalSpec CloneInto (IHasMarshalSpec container)
+		{
+			FixedArraySpec spec = new FixedArraySpec (container);
+			spec.m_numElem = m_numElem;
+			spec.m_elemType = m_elemType;
+			return spec;
+		}
+	}
+
+	internal sealed class FixedSysStringSpec : MarshalSpec {
+
+		private int m_size;
+
+		public int Size {
+			get { return m_size; }
+			set { m_size = value; }
+		}
+
+		public FixedSysStringSpec (IHasMarshalSpec container) : base (NativeType.FIXEDSYSSTRING, container)
+		{
+		}
+
+		public override MarshalSpec CloneInto (IHasMarshalSpec container)
+		{
+			FixedSysStringSpec spec = new FixedSysStringSpec (container);
+			spec.m_size = m_size;
+			return spec;
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/MemberReference.cs b/mcs/tools/cil-strip/Mono.Cecil/MemberReference.cs
new file mode 100644
index 0000000..0e1f194
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/MemberReference.cs
@@ -0,0 +1,82 @@
+//
+// MemberReference.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System.Collections;
+
+	using Mono.Cecil.Metadata;
+
+	internal abstract class MemberReference : IMemberReference {
+
+		string m_name;
+		TypeReference m_decType;
+		MetadataToken m_token;
+		IDictionary m_annotations;
+
+		public virtual string Name {
+			get { return m_name; }
+			set { m_name = value; }
+		}
+
+		public virtual TypeReference DeclaringType {
+			get { return m_decType; }
+			set { m_decType = value; }
+		}
+
+		public MetadataToken MetadataToken {
+			get { return m_token; }
+			set { m_token = value; }
+		}
+
+		IDictionary IAnnotationProvider.Annotations {
+			get {
+				if (m_annotations == null)
+					m_annotations = new Hashtable ();
+				return m_annotations;
+			}
+		}
+
+		public MemberReference (string name)
+		{
+			m_name = name;
+		}
+
+		public override string ToString ()
+		{
+			if (m_decType == null)
+				return m_name;
+
+			return string.Concat (m_decType.FullName, "::", m_name);
+		}
+
+		public virtual void Accept (IReflectionVisitor visitor)
+		{
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/MemberReferenceCollection.cs b/mcs/tools/cil-strip/Mono.Cecil/MemberReferenceCollection.cs
new file mode 100644
index 0000000..c916025
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/MemberReferenceCollection.cs
@@ -0,0 +1,93 @@
+//
+// MemberReferenceCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Wed Sep 27 12:46:53 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System;
+	using System.Collections;
+
+	using Mono.Cecil.Cil;
+
+	internal sealed class MemberReferenceCollection : CollectionBase, IReflectionVisitable {
+
+		ModuleDefinition m_container;
+
+		public MemberReference this [int index] {
+			get { return List [index] as MemberReference; }
+			set { List [index] = value; }
+		}
+
+		public ModuleDefinition Container {
+			get { return m_container; }
+		}
+
+		public MemberReferenceCollection (ModuleDefinition container)
+		{
+			m_container = container;
+		}
+
+		public void Add (MemberReference value)
+		{
+			List.Add (value);
+		}
+
+		public bool Contains (MemberReference value)
+		{
+			return List.Contains (value);
+		}
+
+		public int IndexOf (MemberReference value)
+		{
+			return List.IndexOf (value);
+		}
+
+		public void Insert (int index, MemberReference value)
+		{
+			List.Insert (index, value);
+		}
+
+		public void Remove (MemberReference value)
+		{
+			List.Remove (value);
+		}
+
+		protected override void OnValidate (object o)
+		{
+			if (! (o is MemberReference))
+				throw new ArgumentException ("Must be of type " + typeof (MemberReference).FullName);
+		}
+
+		public void Accept (IReflectionVisitor visitor)
+		{
+			visitor.VisitMemberReferenceCollection (this);
+		}
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/MetadataResolver.cs b/mcs/tools/cil-strip/Mono.Cecil/MetadataResolver.cs
similarity index 100%
copy from mcs/class/Mono.Cecil/Mono.Cecil/MetadataResolver.cs
copy to mcs/tools/cil-strip/Mono.Cecil/MetadataResolver.cs
diff --git a/mcs/tools/cil-strip/Mono.Cecil/MethodAttributes.cs b/mcs/tools/cil-strip/Mono.Cecil/MethodAttributes.cs
new file mode 100644
index 0000000..55ee872
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/MethodAttributes.cs
@@ -0,0 +1,66 @@
+//
+// MethodAttributes.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System;
+
+	[Flags]
+	internal enum MethodAttributes : ushort {
+		MemberAccessMask	= 0x0007,
+		Compilercontrolled	= 0x0000,	// Member not referenceable
+		Private				= 0x0001,	// Accessible only by the parent type
+		FamANDAssem			= 0x0002,	// Accessible by sub-types only in this Assembly
+		Assem				= 0x0003,	// Accessibly by anyone in the Assembly
+		Family				= 0x0004,	// Accessible only by type and sub-types
+		FamORAssem			= 0x0005,	// Accessibly by sub-types anywhere, plus anyone in assembly
+		Public				= 0x0006,	// Accessibly by anyone who has visibility to this scope
+
+		Static				= 0x0010,	// Defined on type, else per instance
+		Final				= 0x0020,	// Method may not be overridden
+		Virtual				= 0x0040,	// Method is virtual
+		HideBySig			= 0x0080,	// Method hides by name+sig, else just by name
+
+		VtableLayoutMask	= 0x0100,	// Use this mask to retrieve vtable attributes
+		ReuseSlot			= 0x0000,	// Method reuses existing slot in vtable
+		NewSlot				= 0x0100,	// Method always gets a new slot in the vtable
+
+		Strict 				= 0x0200,   // Method can only be overriden if also accessible
+		Abstract			= 0x0400,	// Method does not provide an implementation
+		SpecialName			= 0x0800,	// Method is special
+
+		// Interop Attributes
+		PInvokeImpl			= 0x2000,	// Implementation is forwarded through PInvoke
+		UnmanagedExport		= 0x0008,	// Reserved: shall be zero for conforming implementations
+
+		// Additional flags
+		RTSpecialName		= 0x1000,	// CLI provides 'special' behavior, depending upon the name of the method
+		HasSecurity			= 0x4000,	// Method has security associate with it
+		RequireSecObject	= 0x8000	 // Method calls another method containing security code
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/MethodCallingConvention.cs b/mcs/tools/cil-strip/Mono.Cecil/MethodCallingConvention.cs
new file mode 100644
index 0000000..80ecd58
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/MethodCallingConvention.cs
@@ -0,0 +1,40 @@
+//
+// MethodCallingConvention.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	internal enum MethodCallingConvention : byte {
+		Default		= 0x0,
+		C			= 0x1,
+		StdCall		= 0x2,
+		ThisCall	= 0x3,
+		FastCall	= 0x4,
+		VarArg		= 0x5,
+		Generic		= 0x10
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/MethodDefinition.cs b/mcs/tools/cil-strip/Mono.Cecil/MethodDefinition.cs
new file mode 100644
index 0000000..ca9045e
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/MethodDefinition.cs
@@ -0,0 +1,653 @@
+//
+// MethodDefinition.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using Mono.Cecil.Binary;
+	using Mono.Cecil.Cil;
+
+	internal sealed class MethodDefinition : MethodReference, IMemberDefinition,
+		IHasSecurity, ICustomAttributeProvider {
+
+		public const string Cctor = ".cctor";
+		public const string Ctor = ".ctor";
+
+		MethodAttributes m_attributes;
+		MethodImplAttributes m_implAttrs;
+		MethodSemanticsAttributes m_semAttrs;
+		SecurityDeclarationCollection m_secDecls;
+		CustomAttributeCollection m_customAttrs;
+
+		MethodBody m_body;
+		RVA m_rva;
+		OverrideCollection m_overrides;
+		PInvokeInfo m_pinvoke;
+		readonly ParameterDefinition m_this;
+
+		public MethodAttributes Attributes {
+			get { return m_attributes; }
+			set { m_attributes = value; }
+		}
+
+		public MethodImplAttributes ImplAttributes {
+			get { return m_implAttrs; }
+			set { m_implAttrs = value; }
+		}
+
+		public MethodSemanticsAttributes SemanticsAttributes {
+			get { return m_semAttrs; }
+			set { m_semAttrs = value; }
+		}
+
+		public bool HasSecurityDeclarations {
+			get { return (m_secDecls == null) ? false : (m_secDecls.Count > 0); }
+		}
+
+		public SecurityDeclarationCollection SecurityDeclarations {
+			get {
+				if (m_secDecls == null)
+					m_secDecls = new SecurityDeclarationCollection (this);
+
+				return m_secDecls;
+			}
+		}
+
+		public bool HasCustomAttributes {
+			get { return (m_customAttrs == null) ? false : (m_customAttrs.Count > 0); }
+		}
+
+		public CustomAttributeCollection CustomAttributes {
+			get {
+				if (m_customAttrs == null)
+					m_customAttrs = new CustomAttributeCollection (this);
+
+				return m_customAttrs;
+			}
+		}
+
+		public RVA RVA {
+			get { return m_rva; }
+			set { m_rva = value; }
+		}
+
+		public MethodBody Body {
+			get {
+				LoadBody ();
+				return m_body;
+			}
+			set { m_body = value; }
+		}
+
+		public PInvokeInfo PInvokeInfo {
+			get { return m_pinvoke; }
+			set { m_pinvoke = value; }
+		}
+
+		public bool HasOverrides {
+			get { return (m_overrides == null) ? false : (m_overrides.Count > 0); }
+		}
+
+		public OverrideCollection Overrides {
+			get {
+				if (m_overrides == null)
+					m_overrides = new OverrideCollection (this);
+
+				return m_overrides;
+			}
+		}
+
+		public ParameterDefinition This {
+			get { return m_this; }
+		}
+
+		#region MethodAttributes
+
+		public bool IsCompilerControlled {
+			get { return (m_attributes & MethodAttributes.MemberAccessMask) == MethodAttributes.Compilercontrolled; }
+			set {
+				if (value) {
+					m_attributes &= ~MethodAttributes.MemberAccessMask;
+					m_attributes |= MethodAttributes.Compilercontrolled;
+				} else
+					m_attributes &= ~(MethodAttributes.MemberAccessMask & MethodAttributes.Compilercontrolled);
+			}
+		}
+
+		public bool IsPrivate {
+			get { return (m_attributes & MethodAttributes.MemberAccessMask) == MethodAttributes.Private; }
+			set {
+				if (value) {
+					m_attributes &= ~MethodAttributes.MemberAccessMask;
+					m_attributes |= MethodAttributes.Private;
+				} else
+					m_attributes &= ~(MethodAttributes.MemberAccessMask & MethodAttributes.Private);
+			}
+		}
+
+		public bool IsFamilyAndAssembly {
+			get { return (m_attributes & MethodAttributes.MemberAccessMask) == MethodAttributes.FamANDAssem; }
+			set {
+				if (value) {
+					m_attributes &= ~MethodAttributes.MemberAccessMask;
+					m_attributes |= MethodAttributes.FamANDAssem;
+				} else
+					m_attributes &= ~(MethodAttributes.MemberAccessMask & MethodAttributes.FamANDAssem);
+			}
+		}
+
+		public bool IsAssembly {
+			get { return (m_attributes & MethodAttributes.MemberAccessMask) == MethodAttributes.Assem; }
+			set {
+				if (value) {
+					m_attributes &= ~MethodAttributes.MemberAccessMask;
+					m_attributes |= MethodAttributes.Assem;
+				} else
+					m_attributes &= ~(MethodAttributes.MemberAccessMask & MethodAttributes.Assem);
+			}
+		}
+
+		public bool IsFamily {
+			get { return (m_attributes & MethodAttributes.MemberAccessMask) == MethodAttributes.Family; }
+			set {
+				if (value) {
+					m_attributes &= ~MethodAttributes.MemberAccessMask;
+					m_attributes |= MethodAttributes.Family;
+				} else
+					m_attributes &= ~(MethodAttributes.MemberAccessMask & MethodAttributes.Family);
+			}
+		}
+
+		public bool IsFamilyOrAssembly {
+			get { return (m_attributes & MethodAttributes.MemberAccessMask) == MethodAttributes.FamORAssem; }
+			set {
+				if (value) {
+					m_attributes &= ~MethodAttributes.MemberAccessMask;
+					m_attributes |= MethodAttributes.FamORAssem;
+				} else
+					m_attributes &= ~(MethodAttributes.MemberAccessMask & MethodAttributes.FamORAssem);
+			}
+		}
+
+		public bool IsPublic {
+			get { return (m_attributes & MethodAttributes.MemberAccessMask) == MethodAttributes.Public; }
+			set {
+				if (value) {
+					m_attributes &= ~MethodAttributes.MemberAccessMask;
+					m_attributes |= MethodAttributes.Public;
+				} else
+					m_attributes &= ~(MethodAttributes.MemberAccessMask & MethodAttributes.Public);
+			}
+		}
+
+		public bool IsStatic {
+			get { return (m_attributes & MethodAttributes.Static) != 0; }
+			set {
+				if (value)
+					m_attributes |= MethodAttributes.Static;
+				else
+					m_attributes &= ~MethodAttributes.Static;
+			}
+		}
+
+		public bool IsFinal {
+			get { return (m_attributes & MethodAttributes.Final) != 0; }
+			set {
+				if (value)
+					m_attributes |= MethodAttributes.Final;
+				else
+					m_attributes &= ~MethodAttributes.Final;
+			}
+		}
+
+		public bool IsVirtual {
+			get { return (m_attributes & MethodAttributes.Virtual) != 0; }
+			set {
+				if (value)
+					m_attributes |= MethodAttributes.Virtual;
+				else
+					m_attributes &= ~MethodAttributes.Virtual;
+			}
+		}
+
+		public bool IsHideBySig {
+			get { return (m_attributes & MethodAttributes.HideBySig) != 0; }
+			set {
+				if (value)
+					m_attributes |= MethodAttributes.HideBySig;
+				else
+					m_attributes &= ~MethodAttributes.HideBySig;
+			}
+		}
+
+		public bool IsReuseSlot {
+			get { return (m_attributes & MethodAttributes.VtableLayoutMask) == MethodAttributes.ReuseSlot; }
+			set {
+				if (value) {
+					m_attributes &= ~MethodAttributes.VtableLayoutMask;
+					m_attributes |= MethodAttributes.ReuseSlot;
+				} else
+					m_attributes &= ~(MethodAttributes.VtableLayoutMask & MethodAttributes.ReuseSlot);
+			}
+		}
+
+		public bool IsNewSlot {
+			get { return (m_attributes & MethodAttributes.VtableLayoutMask) == MethodAttributes.NewSlot; }
+			set {
+				if (value) {
+					m_attributes &= ~MethodAttributes.VtableLayoutMask;
+					m_attributes |= MethodAttributes.NewSlot;
+				} else
+					m_attributes &= ~(MethodAttributes.VtableLayoutMask & MethodAttributes.NewSlot);
+			}
+		}
+
+		public bool IsStrict {
+			get { return (m_attributes & MethodAttributes.Strict) != 0; }
+			set {
+				if (value)
+					m_attributes |= MethodAttributes.Strict;
+				else
+					m_attributes &= ~MethodAttributes.Strict;
+			}
+		}
+
+		public bool IsAbstract {
+			get { return (m_attributes & MethodAttributes.Abstract) != 0; }
+			set {
+				if (value)
+					m_attributes |= MethodAttributes.Abstract;
+				else
+					m_attributes &= ~MethodAttributes.Abstract;
+			}
+		}
+
+		public bool IsSpecialName {
+			get { return (m_attributes & MethodAttributes.SpecialName) != 0; }
+			set {
+				if (value)
+					m_attributes |= MethodAttributes.SpecialName;
+				else
+					m_attributes &= ~MethodAttributes.SpecialName;
+			}
+		}
+
+		public bool IsPInvokeImpl {
+			get { return (m_attributes & MethodAttributes.PInvokeImpl) != 0; }
+			set {
+				if (value)
+					m_attributes |= MethodAttributes.PInvokeImpl;
+				else
+					m_attributes &= ~MethodAttributes.PInvokeImpl;
+			}
+		}
+
+		public bool IsUnmanagedExport {
+			get { return (m_attributes & MethodAttributes.UnmanagedExport) != 0; }
+			set {
+				if (value)
+					m_attributes |= MethodAttributes.UnmanagedExport;
+				else
+					m_attributes &= ~MethodAttributes.UnmanagedExport;
+			}
+		}
+
+		public bool IsRuntimeSpecialName {
+			get { return (m_attributes & MethodAttributes.RTSpecialName) != 0; }
+			set {
+				if (value)
+					m_attributes |= MethodAttributes.RTSpecialName;
+				else
+					m_attributes &= ~MethodAttributes.RTSpecialName;
+			}
+		}
+
+		public bool HasSecurity {
+			get { return (m_attributes & MethodAttributes.HasSecurity) != 0; }
+			set {
+				if (value)
+					m_attributes |= MethodAttributes.HasSecurity;
+				else
+					m_attributes &= ~MethodAttributes.HasSecurity;
+			}
+		}
+
+		#endregion
+
+		#region MethodImplAttributes
+
+		public bool IsIL {
+			get { return (m_implAttrs & MethodImplAttributes.CodeTypeMask) == MethodImplAttributes.IL; }
+			set {
+				if (value) {
+					m_implAttrs &= ~MethodImplAttributes.CodeTypeMask;
+					m_implAttrs |= MethodImplAttributes.IL;
+				} else
+					m_implAttrs &= ~(MethodImplAttributes.CodeTypeMask & MethodImplAttributes.IL);
+			}
+		}
+
+		public bool IsNative {
+			get { return (m_implAttrs & MethodImplAttributes.CodeTypeMask) == MethodImplAttributes.Native; }
+			set {
+				if (value) {
+					m_implAttrs &= ~MethodImplAttributes.CodeTypeMask;
+					m_implAttrs |= MethodImplAttributes.Native;
+				} else
+					m_implAttrs &= ~(MethodImplAttributes.CodeTypeMask & MethodImplAttributes.Native);
+			}
+		}
+
+		public bool IsRuntime {
+			get { return (m_implAttrs & MethodImplAttributes.CodeTypeMask) == MethodImplAttributes.Runtime; }
+			set {
+				if (value) {
+					m_implAttrs &= ~MethodImplAttributes.CodeTypeMask;
+					m_implAttrs |= MethodImplAttributes.Runtime;
+				} else
+					m_implAttrs &= ~(MethodImplAttributes.CodeTypeMask & MethodImplAttributes.Runtime);
+			}
+		}
+
+		public bool IsUnmanaged {
+			get { return (m_implAttrs & MethodImplAttributes.ManagedMask) == MethodImplAttributes.Unmanaged; }
+			set {
+				if (value) {
+					m_implAttrs &= ~MethodImplAttributes.ManagedMask;
+					m_implAttrs |= MethodImplAttributes.Unmanaged;
+				} else
+					m_implAttrs &= ~(MethodImplAttributes.ManagedMask & MethodImplAttributes.Unmanaged);
+			}
+		}
+
+		public bool IsManaged {
+			get { return (m_implAttrs & MethodImplAttributes.ManagedMask) == MethodImplAttributes.Managed; }
+			set {
+				if (value) {
+					m_implAttrs &= ~MethodImplAttributes.ManagedMask;
+					m_implAttrs |= MethodImplAttributes.Managed;
+				} else
+					m_implAttrs &= ~(MethodImplAttributes.ManagedMask & MethodImplAttributes.Managed);
+			}
+		}
+
+		public bool IsForwardRef {
+			get { return (m_implAttrs & MethodImplAttributes.ForwardRef) != 0; }
+			set {
+				if (value)
+					m_implAttrs |= MethodImplAttributes.ForwardRef;
+				else
+					m_implAttrs &= ~MethodImplAttributes.ForwardRef;
+			}
+		}
+
+		public bool IsPreserveSig {
+			get { return (m_implAttrs & MethodImplAttributes.PreserveSig) != 0; }
+			set {
+				if (value)
+					m_implAttrs |= MethodImplAttributes.PreserveSig;
+				else
+					m_implAttrs &= ~MethodImplAttributes.PreserveSig;
+			}
+		}
+
+		public bool IsInternalCall {
+			get { return (m_implAttrs & MethodImplAttributes.InternalCall) != 0; }
+			set {
+				if (value)
+					m_implAttrs |= MethodImplAttributes.InternalCall;
+				else
+					m_implAttrs &= ~MethodImplAttributes.InternalCall;
+			}
+		}
+
+		public bool IsSynchronized {
+			get { return (m_implAttrs & MethodImplAttributes.Synchronized) != 0; }
+			set {
+				if (value)
+					m_implAttrs |= MethodImplAttributes.Synchronized;
+				else
+					m_implAttrs &= ~MethodImplAttributes.Synchronized;
+			}
+		}
+
+		public bool NoInlining {
+			get { return (m_implAttrs & MethodImplAttributes.NoInlining) != 0; }
+			set {
+				if (value)
+					m_implAttrs |= MethodImplAttributes.NoInlining;
+				else
+					m_implAttrs &= ~MethodImplAttributes.NoInlining;
+			}
+		}
+
+		#endregion
+
+		#region MethodSemanticsAttributes
+		public bool IsSetter {
+			get { return (m_semAttrs & MethodSemanticsAttributes.Setter) != 0; }
+			set {
+				if (value)
+					m_semAttrs |= MethodSemanticsAttributes.Setter;
+				else
+					m_semAttrs &= ~MethodSemanticsAttributes.Setter;
+			}
+		}
+
+		public bool IsGetter {
+			get { return (m_semAttrs & MethodSemanticsAttributes.Getter) != 0; }
+			set {
+				if (value)
+					m_semAttrs |= MethodSemanticsAttributes.Getter;
+				else
+					m_semAttrs &= ~MethodSemanticsAttributes.Getter;
+			}
+		}
+
+		public bool IsOther {
+			get { return (m_semAttrs & MethodSemanticsAttributes.Other) != 0; }
+			set {
+				if (value)
+					m_semAttrs |= MethodSemanticsAttributes.Other;
+				else
+					m_semAttrs &= ~MethodSemanticsAttributes.Other;
+			}
+		}
+
+		public bool IsAddOn {
+			get { return (m_semAttrs & MethodSemanticsAttributes.AddOn) != 0; }
+			set {
+				if (value)
+					m_semAttrs |= MethodSemanticsAttributes.AddOn;
+				else
+					m_semAttrs &= ~MethodSemanticsAttributes.AddOn;
+			}
+		}
+
+		public bool IsRemoveOn {
+			get { return (m_semAttrs & MethodSemanticsAttributes.RemoveOn) != 0; }
+			set {
+				if (value)
+					m_semAttrs |= MethodSemanticsAttributes.RemoveOn;
+				else
+					m_semAttrs &= ~MethodSemanticsAttributes.RemoveOn;
+			}
+		}
+
+		public bool IsFire {
+			get { return (m_semAttrs & MethodSemanticsAttributes.Fire) != 0; }
+			set {
+				if (value)
+					m_semAttrs |= MethodSemanticsAttributes.Fire;
+				else
+					m_semAttrs &= ~MethodSemanticsAttributes.Fire;
+			}
+		}
+
+		#endregion
+
+		public bool IsConstructor {
+			get {
+				return this.IsRuntimeSpecialName && this.IsSpecialName &&
+					(this.Name == Cctor || this.Name == Ctor);
+			}
+		}
+
+		public bool HasBody {
+			get {
+				return (m_attributes & MethodAttributes.Abstract) == 0 &&
+					(m_attributes & MethodAttributes.PInvokeImpl) == 0 &&
+					(m_implAttrs & MethodImplAttributes.InternalCall) == 0 &&
+					(m_implAttrs & MethodImplAttributes.Native) == 0 &&
+					(m_implAttrs & MethodImplAttributes.Unmanaged) == 0 &&
+					(m_implAttrs & MethodImplAttributes.Runtime) == 0;
+			}
+		}
+
+		public new TypeDefinition DeclaringType {
+			get { return (TypeDefinition) base.DeclaringType; }
+			set { base.DeclaringType = value; }
+		}
+
+		public MethodDefinition (string name, RVA rva,
+			MethodAttributes attrs, MethodImplAttributes implAttrs,
+			bool hasThis, bool explicitThis, MethodCallingConvention callConv) :
+			base (name, hasThis, explicitThis, callConv)
+		{
+			m_rva = rva;
+			m_attributes = attrs;
+			m_implAttrs = implAttrs;
+
+			if (!IsStatic)
+				m_this = new ParameterDefinition ("this", 0, (ParameterAttributes) 0, null);
+		}
+
+		internal MethodDefinition (string name, MethodAttributes attrs) : base (name)
+		{
+			m_attributes = attrs;
+
+			this.HasThis = !this.IsStatic;
+			if (!IsStatic)
+				m_this = new ParameterDefinition ("this", 0, (ParameterAttributes) 0, null);
+		}
+
+		public MethodDefinition (string name, MethodAttributes attrs, TypeReference returnType) :
+			this (name, attrs)
+		{
+			this.ReturnType.ReturnType = returnType;
+		}
+
+		internal void LoadBody ()
+		{
+			if (m_body == null && this.HasBody) {
+				m_body = new MethodBody (this);
+
+				ModuleDefinition module = DeclaringType != null ? DeclaringType.Module : null;
+
+				if (module != null && m_rva != RVA.Zero)
+					module.Controller.Reader.Code.VisitMethodBody (m_body);
+			}
+		}
+
+		public override MethodDefinition Resolve ()
+		{
+			return this;
+		}
+
+		public MethodDefinition Clone ()
+		{
+			return Clone (this, new ImportContext (NullReferenceImporter.Instance, this));
+		}
+
+		internal static MethodDefinition Clone (MethodDefinition meth, ImportContext context)
+		{
+			MethodDefinition nm = new MethodDefinition (
+				meth.Name,
+				RVA.Zero,
+				meth.Attributes,
+				meth.ImplAttributes,
+				meth.HasThis,
+				meth.ExplicitThis,
+				meth.CallingConvention);
+
+			MethodReference contextMethod = context.GenericContext.Method;
+
+			context.GenericContext.Method = nm;
+
+			GenericParameter.CloneInto (meth, nm, context);
+
+			nm.ReturnType.ReturnType = context.Import (meth.ReturnType.ReturnType);
+
+			if (meth.ReturnType.Parameter != null) {
+				nm.ReturnType.Parameter = ParameterDefinition.Clone (meth.ReturnType.Parameter, context);
+				nm.ReturnType.Parameter.Method = nm;
+			}
+
+			if (meth.PInvokeInfo != null)
+				nm.PInvokeInfo = meth.PInvokeInfo; // TODO: import module ?
+
+			if (meth.HasParameters) {
+				foreach (ParameterDefinition param in meth.Parameters)
+					nm.Parameters.Add (ParameterDefinition.Clone (param, context));
+			}
+			if (meth.HasOverrides) {
+				foreach (MethodReference ov in meth.Overrides)
+					nm.Overrides.Add (context.Import (ov));
+			}
+			if (meth.HasCustomAttributes) {
+				foreach (CustomAttribute ca in meth.CustomAttributes)
+					nm.CustomAttributes.Add (CustomAttribute.Clone (ca, context));
+			}
+			if (meth.HasSecurityDeclarations) {
+				foreach (SecurityDeclaration sec in meth.SecurityDeclarations)
+					nm.SecurityDeclarations.Add (SecurityDeclaration.Clone (sec));
+			}
+
+			if (meth.Body != null)
+				nm.Body = MethodBody.Clone (meth.Body, nm, context);
+
+			context.GenericContext.Method = contextMethod;
+
+			return nm;
+		}
+
+		public override void Accept (IReflectionVisitor visitor)
+		{
+			visitor.VisitMethodDefinition (this);
+
+			this.GenericParameters.Accept (visitor);
+			this.Parameters.Accept (visitor);
+
+			if (this.PInvokeInfo != null)
+				this.PInvokeInfo.Accept (visitor);
+
+			this.SecurityDeclarations.Accept (visitor);
+			this.Overrides.Accept (visitor);
+			this.CustomAttributes.Accept (visitor);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/MethodDefinitionCollection.cs b/mcs/tools/cil-strip/Mono.Cecil/MethodDefinitionCollection.cs
new file mode 100644
index 0000000..0042aa1
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/MethodDefinitionCollection.cs
@@ -0,0 +1,185 @@
+//
+// MethodDefinitionCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Fri Mar 30 18:43:56 +0200 2007
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System;
+	using System.Collections;
+
+	using Mono.Cecil.Cil;
+
+	internal sealed class MethodDefinitionCollection : CollectionBase, IReflectionVisitable {
+
+		TypeDefinition m_container;
+
+		public MethodDefinition this [int index] {
+			get { return List [index] as MethodDefinition; }
+			set { List [index] = value; }
+		}
+
+		public TypeDefinition Container {
+			get { return m_container; }
+		}
+
+		public MethodDefinitionCollection (TypeDefinition container)
+		{
+			m_container = container;
+		}
+
+		public void Add (MethodDefinition value)
+		{
+			Attach (value);
+
+			List.Add (value);
+		}
+
+
+		public new void Clear ()
+		{
+			foreach (MethodDefinition item in this)
+				Detach (item);
+
+			base.Clear ();
+		}
+
+		public bool Contains (MethodDefinition value)
+		{
+			return List.Contains (value);
+		}
+
+		public int IndexOf (MethodDefinition value)
+		{
+			return List.IndexOf (value);
+		}
+
+		public void Insert (int index, MethodDefinition value)
+		{
+			Attach (value);
+
+			List.Insert (index, value);
+		}
+
+		public void Remove (MethodDefinition value)
+		{
+			List.Remove (value);
+
+			Detach (value);
+		}
+
+
+		public new void RemoveAt (int index)
+		{
+			MethodDefinition item = this [index];
+			Remove (item);
+		}
+
+		protected override void OnValidate (object o)
+		{
+			if (! (o is MethodDefinition))
+				throw new ArgumentException ("Must be of type " + typeof (MethodDefinition).FullName);
+		}
+
+		public MethodDefinition [] GetMethod (string name)
+		{
+			ArrayList ret = new ArrayList ();
+			foreach (MethodDefinition meth in this)
+				if (meth.Name == name)
+					ret.Add (meth);
+
+			return ret.ToArray (typeof (MethodDefinition)) as MethodDefinition [];
+		}
+
+		internal MethodDefinition GetMethodInternal (string name, IList parameters)
+		{
+			foreach (MethodDefinition meth in this) {
+				if (meth.Name != name || meth.Parameters.Count != parameters.Count)
+					continue;
+
+				bool match = true;
+				for (int i = 0; i < parameters.Count; i++) {
+					string pname;
+					object param = parameters [i];
+					if (param is Type)
+						pname = ReflectionHelper.GetTypeSignature (param as Type);
+					else if (param is TypeReference)
+						pname = (param as TypeReference).FullName;
+					else if (param is ParameterDefinition)
+						pname = (param as ParameterDefinition).ParameterType.FullName;
+					else
+						throw new NotSupportedException ();
+
+					if (meth.Parameters [i].ParameterType.FullName != pname) {
+						match = false;
+						break;
+					}
+				}
+
+				if (match)
+					return meth;
+			}
+
+			return null;
+		}
+
+		public MethodDefinition GetMethod (string name, Type [] parameters)
+		{
+			return GetMethodInternal (name, parameters);
+		}
+
+		public MethodDefinition GetMethod (string name, TypeReference [] parameters)
+		{
+			return GetMethodInternal (name, parameters);
+		}
+
+		public MethodDefinition GetMethod (string name, ParameterDefinitionCollection parameters)
+		{
+			return GetMethodInternal (name, parameters);
+		}
+
+		void Attach (MemberReference member)
+		{
+			if (member.DeclaringType != null)
+				throw new ReflectionException ("Member already attached, clone it instead");
+
+			member.DeclaringType = m_container;
+		}
+
+		void Detach (MemberReference member)
+		{
+			member.DeclaringType = null;
+		}
+
+		public void Accept (IReflectionVisitor visitor)
+		{
+			visitor.VisitMethodDefinitionCollection (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/MethodImplAttributes.cs b/mcs/tools/cil-strip/Mono.Cecil/MethodImplAttributes.cs
new file mode 100644
index 0000000..7e43d4e
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/MethodImplAttributes.cs
@@ -0,0 +1,53 @@
+//
+// MethodImplAttributes.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System;
+
+	[Flags]
+	internal enum MethodImplAttributes : ushort {
+		CodeTypeMask		= 0x0003,
+		IL					= 0x0000,	// Method impl is CIL
+		Native				= 0x0001,	// Method impl is native
+		OPTIL				= 0x0002,	// Reserved: shall be zero in conforming implementations
+		Runtime				= 0x0003,	// Method impl is provided by the runtime
+
+		ManagedMask			= 0x0004,	// Flags specifying whether the code is managed or unmanaged
+		Unmanaged			= 0x0004,	// Method impl is unmanaged, otherwise managed
+		Managed				= 0x0000,	// Method impl is managed
+
+		// Implementation info and interop
+		ForwardRef			= 0x0010,	// Indicates method is defined; used primarily in merge scenarios
+		PreserveSig			= 0x0080,	// Reserved: conforming implementations may ignore
+		InternalCall		= 0x1000,	// Reserved: shall be zero in conforming implementations
+		Synchronized		= 0x0020,	// Method is single threaded through the body
+		NoInlining			= 0x0008,	// Method may not be inlined
+		MaxMethodImplVal	= 0xffff	 // Range check value
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/MethodReference.cs b/mcs/tools/cil-strip/Mono.Cecil/MethodReference.cs
new file mode 100644
index 0000000..84984ac
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/MethodReference.cs
@@ -0,0 +1,158 @@
+//
+// MethodReference.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 - 2007 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System.Text;
+
+	internal class MethodReference : MemberReference, IMethodSignature, IGenericParameterProvider {
+
+		ParameterDefinitionCollection m_parameters;
+		MethodReturnType m_returnType;
+
+		bool m_hasThis;
+		bool m_explicitThis;
+		MethodCallingConvention m_callConv;
+		GenericParameterCollection m_genparams;
+
+		public virtual bool HasThis {
+			get { return m_hasThis; }
+			set { m_hasThis = value; }
+		}
+
+		public virtual bool ExplicitThis {
+			get { return m_explicitThis; }
+			set { m_explicitThis = value; }
+		}
+
+		public virtual MethodCallingConvention CallingConvention {
+			get { return m_callConv; }
+			set { m_callConv = value; }
+		}
+
+		public virtual bool HasParameters {
+			get { return (m_parameters == null) ? false : (m_parameters.Count > 0); }
+		}
+
+		public virtual ParameterDefinitionCollection Parameters {
+			get {
+				if (m_parameters == null)
+					m_parameters = new ParameterDefinitionCollection (this);
+				return m_parameters;
+			}
+		}
+
+		public bool HasGenericParameters {
+			get { return (m_genparams == null) ? false : (m_genparams.Count > 0); }
+		}
+
+		public GenericParameterCollection GenericParameters {
+			get {
+				if (m_genparams == null)
+					m_genparams = new GenericParameterCollection (this);
+				return m_genparams;
+			}
+		}
+
+		public virtual MethodReturnType ReturnType {
+			get { return m_returnType;}
+			set { m_returnType = value; }
+		}
+
+		internal MethodReference (string name, bool hasThis,
+			bool explicitThis, MethodCallingConvention callConv) : this (name)
+		{
+			m_parameters = new ParameterDefinitionCollection (this);
+			m_hasThis = hasThis;
+			m_explicitThis = explicitThis;
+			m_callConv = callConv;
+		}
+
+		internal MethodReference (string name) : base (name)
+		{
+			m_returnType = new MethodReturnType (null);
+		}
+
+		public MethodReference (string name,
+			TypeReference declaringType, TypeReference returnType,
+			bool hasThis, bool explicitThis, MethodCallingConvention callConv) :
+			this (name, hasThis, explicitThis, callConv)
+		{
+			this.DeclaringType = declaringType;
+			this.ReturnType.ReturnType = returnType;
+		}
+
+		public virtual MethodDefinition Resolve ()
+		{
+			TypeReference declaringType = DeclaringType;
+			if (declaringType == null)
+				return null;
+
+			return declaringType.Module.Resolver.Resolve (this);
+		}
+
+		public virtual MethodReference GetOriginalMethod ()
+		{
+			return this;
+		}
+
+		public int GetSentinel ()
+		{
+			if (HasParameters) {
+				for (int i = 0; i < Parameters.Count; i++)
+					if (Parameters [i].ParameterType is SentinelType)
+						return i;
+			}
+			return -1;
+		}
+
+		public override string ToString ()
+		{
+			int sentinel = GetSentinel ();
+
+			StringBuilder sb = new StringBuilder ();
+			sb.Append (m_returnType.ReturnType.FullName);
+			sb.Append (" ");
+			sb.Append (base.ToString ());
+			sb.Append ("(");
+			if (this.HasParameters) {
+				for (int i = 0; i < this.Parameters.Count; i++) {
+					if (i > 0)
+						sb.Append (",");
+
+					if (i == sentinel)
+						sb.Append ("...,");
+
+					sb.Append (this.Parameters [i].ParameterType.FullName);
+				}
+			}
+			sb.Append (")");
+			return sb.ToString ();
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/MethodReturnType.cs b/mcs/tools/cil-strip/Mono.Cecil/MethodReturnType.cs
new file mode 100644
index 0000000..d39b859
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/MethodReturnType.cs
@@ -0,0 +1,101 @@
+//
+// MethodReturnType.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+using Mono.Cecil.Metadata;
+
+namespace Mono.Cecil {
+
+	internal sealed class MethodReturnType : ICustomAttributeProvider, IHasMarshalSpec, IHasConstant {
+
+		MethodReference m_method;
+		ParameterDefinition m_param;
+
+		TypeReference m_returnType;
+
+		public MethodReference Method {
+			get { return m_method; }
+			set { m_method = value; }
+		}
+
+		public TypeReference ReturnType {
+			get { return m_returnType; }
+			set { m_returnType = value; }
+		}
+
+		internal ParameterDefinition Parameter {
+			get {
+				if (m_param == null) {
+					m_param = new ParameterDefinition (m_returnType);
+					m_param.Method = m_method;
+				}
+
+				return m_param;
+			}
+			set { m_param = value; }
+		}
+
+		public MetadataToken MetadataToken {
+			get { return Parameter.MetadataToken; }
+			set { Parameter.MetadataToken = value; }
+		}
+
+		public bool HasCustomAttributes {
+			get { return m_param != null && m_param.HasCustomAttributes; }
+		}
+
+		public CustomAttributeCollection CustomAttributes {
+			get { return Parameter.CustomAttributes; }
+		}
+
+		public bool HasConstant {
+			get { return m_param != null && m_param.HasConstant; }
+		}
+
+		public object Constant {
+			get { return Parameter.Constant; }
+			set { Parameter.Constant = value; }
+		}
+
+		public MarshalSpec MarshalSpec {
+			get { return Parameter.MarshalSpec; }
+			set { Parameter.MarshalSpec = value; }
+		}
+
+		public MethodReturnType (TypeReference retType)
+		{
+			m_returnType = retType;
+		}
+
+		public override string ToString ()
+		{
+			return String.Format ("[return: {0}]", m_returnType);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/MethodSemanticsAttributes.cs b/mcs/tools/cil-strip/Mono.Cecil/MethodSemanticsAttributes.cs
new file mode 100644
index 0000000..232b27a
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/MethodSemanticsAttributes.cs
@@ -0,0 +1,42 @@
+//
+// MethodSemanticsAttributes.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System;
+
+	[Flags]
+	internal enum MethodSemanticsAttributes : ushort {
+		Setter		= 0x0001,	// Setter for property
+		Getter		= 0x0002,	// Getter for property
+		Other		= 0x0004,	// Other method for property or event
+		AddOn		= 0x0008,	// AddOn method for event
+		RemoveOn	= 0x0010,	// RemoveOn method for event
+		Fire		= 0x0020	 // Fire method for event
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/MethodSpecification.cs b/mcs/tools/cil-strip/Mono.Cecil/MethodSpecification.cs
new file mode 100644
index 0000000..97e2679
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/MethodSpecification.cs
@@ -0,0 +1,90 @@
+//
+// MethodSpecification.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System;
+
+	internal abstract class MethodSpecification : MethodReference {
+
+		MethodReference m_elementMethod;
+
+		public MethodReference ElementMethod {
+			get { return m_elementMethod; }
+			set { m_elementMethod = value; }
+		}
+
+		public override string Name {
+			get { return m_elementMethod.Name; }
+			set { throw new InvalidOperationException (); }
+		}
+
+		public override MethodCallingConvention CallingConvention {
+			get { return m_elementMethod.CallingConvention; }
+			set { throw new InvalidOperationException (); }
+		}
+
+		public override bool HasThis {
+			get { return m_elementMethod.HasThis; }
+			set { throw new InvalidOperationException (); }
+		}
+
+		public override bool ExplicitThis {
+			get { return m_elementMethod.ExplicitThis; }
+			set { throw new InvalidOperationException (); }
+		}
+
+		public override MethodReturnType ReturnType {
+			get { return m_elementMethod.ReturnType; }
+			set { throw new InvalidOperationException (); }
+		}
+
+		public override TypeReference DeclaringType {
+			get { return m_elementMethod.DeclaringType; }
+			set { throw new InvalidOperationException (); }
+		}
+
+		public override bool HasParameters {
+			get { return m_elementMethod.HasParameters; }
+		}
+
+		public override ParameterDefinitionCollection Parameters {
+			get { return m_elementMethod.Parameters; }
+		}
+
+		internal MethodSpecification (MethodReference elemMethod) : base (string.Empty)
+		{
+			m_elementMethod = elemMethod;
+		}
+
+		public override MethodReference GetOriginalMethod()
+		{
+			return m_elementMethod.GetOriginalMethod ();
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/Modifiers.cs b/mcs/tools/cil-strip/Mono.Cecil/Modifiers.cs
new file mode 100644
index 0000000..3bab6af
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/Modifiers.cs
@@ -0,0 +1,87 @@
+//
+// Modifiers.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	internal abstract class ModType : TypeSpecification {
+
+		TypeReference m_modifierType;
+
+		public TypeReference ModifierType {
+			get { return m_modifierType; }
+			set { m_modifierType = value; }
+		}
+
+		public override string Name
+		{
+			get { return string.Concat (base.Name, Suffix ()); }
+		}
+
+		public override string FullName
+		{
+			get { return string.Concat (base.FullName, Suffix ()); }
+		}
+
+		string Suffix ()
+		{
+			return string.Concat (" ", ModifierName, "(", this.ModifierType.FullName, ")");
+		}
+
+		protected abstract string ModifierName {
+			get;
+		}
+
+		public ModType (TypeReference elemType, TypeReference modType) : base (elemType)
+		{
+			m_modifierType = modType;
+		}
+	}
+
+	internal sealed class ModifierOptional : ModType {
+
+		protected override string ModifierName {
+			get { return "modopt"; }
+		}
+
+		public ModifierOptional (TypeReference elemType, TypeReference modType) : base (elemType, modType)
+		{
+		}
+
+	}
+
+	internal sealed class ModifierRequired : ModType {
+
+		protected override string ModifierName {
+			get { return "modreq"; }
+		}
+
+		public ModifierRequired (TypeReference elemType, TypeReference modType) : base (elemType, modType)
+		{
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/ModuleDefinition.cs b/mcs/tools/cil-strip/Mono.Cecil/ModuleDefinition.cs
new file mode 100644
index 0000000..c7f4a0b
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/ModuleDefinition.cs
@@ -0,0 +1,601 @@
+//
+// ModuleDefinition.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System;
+	using SR = System.Reflection;
+	using SS = System.Security;
+	using SSP = System.Security.Permissions;
+	using System.Text;
+
+	using Mono.Cecil.Cil;
+	using Mono.Cecil.Binary;
+	using Mono.Cecil.Metadata;
+
+	internal sealed class ModuleDefinition : ModuleReference, ICustomAttributeProvider, IMetadataScope,
+		IReflectionStructureVisitable, IReflectionVisitable {
+
+		Guid m_mvid;
+		bool m_main;
+		bool m_manifestOnly;
+
+		AssemblyNameReferenceCollection m_asmRefs;
+		ModuleReferenceCollection m_modRefs;
+		ResourceCollection m_res;
+		TypeDefinitionCollection m_types;
+		TypeReferenceCollection m_refs;
+		ExternTypeCollection m_externs;
+		MemberReferenceCollection m_members;
+		CustomAttributeCollection m_customAttrs;
+
+		AssemblyDefinition m_asm;
+		Image m_image;
+
+		ImageReader m_imgReader;
+		ReflectionController m_controller;
+		MetadataResolver m_resolver;
+		SecurityDeclarationReader m_secReader;
+
+		public Guid Mvid {
+			get { return m_mvid; }
+			set { m_mvid = value; }
+		}
+
+		public bool Main {
+			get { return m_main; }
+			set { m_main = value; }
+		}
+
+		public AssemblyNameReferenceCollection AssemblyReferences {
+			get { return m_asmRefs; }
+		}
+
+		public ModuleReferenceCollection ModuleReferences {
+			get { return m_modRefs; }
+		}
+
+		public ResourceCollection Resources {
+			get { return m_res; }
+		}
+
+		public TypeDefinitionCollection Types {
+			get { return m_types; }
+		}
+
+		public TypeReferenceCollection TypeReferences {
+			get { return m_refs; }
+		}
+
+		public MemberReferenceCollection MemberReferences {
+			get { return m_members; }
+		}
+
+		public ExternTypeCollection ExternTypes {
+			get {
+				if (m_externs == null)
+					m_externs = new ExternTypeCollection (this);
+
+				return m_externs;
+			}
+		}
+
+		public bool HasCustomAttributes {
+			get { return (m_customAttrs == null) ? false : (m_customAttrs.Count > 0); }
+		}
+
+		public CustomAttributeCollection CustomAttributes {
+			get {
+				if (m_customAttrs == null)
+					m_customAttrs = new CustomAttributeCollection (this);
+
+				return m_customAttrs;
+			}
+		}
+
+		public AssemblyDefinition Assembly {
+			get { return m_asm; }
+		}
+
+		internal ReflectionController Controller {
+			get { return m_controller; }
+		}
+
+		internal MetadataResolver Resolver {
+			get { return m_resolver; }
+		}
+
+		internal ImageReader ImageReader {
+			get { return m_imgReader; }
+		}
+
+		public Image Image {
+			get { return m_image; }
+			set {
+				m_image = value;
+				m_secReader = null;
+			}
+		}
+
+		public ModuleDefinition (string name, AssemblyDefinition asm) :
+			this (name, asm, null, false)
+		{
+		}
+
+		public ModuleDefinition (string name, AssemblyDefinition asm, bool main) :
+			this (name, asm, null, main)
+		{
+		}
+
+		internal ModuleDefinition (string name, AssemblyDefinition asm, StructureReader reader, bool main) : base (name)
+		{
+			if (asm == null)
+				throw new ArgumentNullException ("asm");
+			if (name == null || name.Length == 0)
+				throw new ArgumentNullException ("name");
+
+			m_asm = asm;
+			m_main = main;
+#if !CF_1_0
+			m_mvid = Guid.NewGuid ();
+#endif
+			if (reader != null) {
+				m_image = reader.Image;
+				m_imgReader = reader.ImageReader;
+				m_manifestOnly = reader.ManifestOnly;
+			} else
+				m_image = Image.CreateImage ();
+
+			m_modRefs = new ModuleReferenceCollection (this);
+			m_asmRefs = new AssemblyNameReferenceCollection (this);
+			m_res = new ResourceCollection (this);
+			m_types = new TypeDefinitionCollection (this);
+			m_refs = new TypeReferenceCollection (this);
+			m_members = new MemberReferenceCollection (this);
+
+			m_controller = new ReflectionController (this);
+			m_resolver = new MetadataResolver (asm);
+		}
+
+		public IMetadataTokenProvider LookupByToken (MetadataToken token)
+		{
+			return m_controller.Reader.LookupByToken (token);
+		}
+
+		public IMetadataTokenProvider LookupByToken (TokenType table, int rid)
+		{
+			return LookupByToken (new MetadataToken (table, (uint) rid));
+		}
+
+		void CheckContext (TypeDefinition context)
+		{
+			if (context.Module != this)
+				throw new ArgumentException ("The context parameter does not belongs to this module");
+
+			CheckGenericParameterProvider (context);
+		}
+
+		void CheckContext (MethodDefinition context)
+		{
+			CheckGenericParameterProvider (context);
+		}
+
+		static void CheckGenericParameterProvider (IGenericParameterProvider context)
+		{
+			if (context == null)
+				throw new ArgumentNullException ("context");
+			if (context.GenericParameters.Count == 0)
+				throw new ArgumentException ("The context parameter is not a generic type");
+		}
+
+		ImportContext GetContext ()
+		{
+			return new ImportContext (m_controller.Importer);
+		}
+
+		static ImportContext GetContext (IImporter importer)
+		{
+			return new ImportContext (importer);
+		}
+
+		ImportContext GetContext (TypeDefinition context)
+		{
+			return new ImportContext (m_controller.Importer, context);
+		}
+
+		ImportContext GetContext (MethodDefinition context)
+		{
+			return new ImportContext (m_controller.Importer, context);
+		}
+
+		static ImportContext GetContext (IImporter importer, TypeDefinition context)
+		{
+			return new ImportContext (importer, context);
+		}
+
+		public TypeReference Import (Type type)
+		{
+			if (type == null)
+				throw new ArgumentNullException ("type");
+
+			return m_controller.Helper.ImportSystemType (type, GetContext ());
+		}
+
+		public TypeReference Import (Type type, TypeDefinition context)
+		{
+			if (type == null)
+				throw new ArgumentNullException ("type");
+			CheckContext (context);
+
+			return m_controller.Helper.ImportSystemType (type, GetContext (context));
+		}
+
+		public TypeReference Import (Type type, MethodDefinition context)
+		{
+			if (type == null)
+				throw new ArgumentNullException ("type");
+			CheckContext (context);
+
+			return m_controller.Helper.ImportSystemType (type, GetContext (context));
+		}
+
+		public MethodReference Import (SR.MethodBase meth)
+		{
+			if (meth == null)
+				throw new ArgumentNullException ("meth");
+
+			if (meth is SR.ConstructorInfo)
+				return m_controller.Helper.ImportConstructorInfo (
+					meth as SR.ConstructorInfo, GetContext ());
+			else
+				return m_controller.Helper.ImportMethodInfo (
+					meth as SR.MethodInfo, GetContext ());
+		}
+
+		public MethodReference Import (SR.MethodBase meth, TypeDefinition context)
+		{
+			if (meth == null)
+				throw new ArgumentNullException ("meth");
+			CheckContext (context);
+
+			ImportContext import_context = GetContext (context);
+
+			if (meth is SR.ConstructorInfo)
+				return m_controller.Helper.ImportConstructorInfo (
+					meth as SR.ConstructorInfo, import_context);
+			else
+				return m_controller.Helper.ImportMethodInfo (
+					meth as SR.MethodInfo, import_context);
+		}
+
+		public FieldReference Import (SR.FieldInfo field)
+		{
+			if (field == null)
+				throw new ArgumentNullException ("field");
+
+			return m_controller.Helper.ImportFieldInfo (field, GetContext ());
+		}
+
+		public FieldReference Import (SR.FieldInfo field, TypeDefinition context)
+		{
+			if (field == null)
+				throw new ArgumentNullException ("field");
+			CheckContext (context);
+
+			return m_controller.Helper.ImportFieldInfo (field, GetContext (context));
+		}
+
+		public FieldReference Import (SR.FieldInfo field, MethodDefinition context)
+		{
+			if (field == null)
+				throw new ArgumentNullException ("field");
+			CheckContext (context);
+
+			return m_controller.Helper.ImportFieldInfo (field, GetContext (context));
+		}
+
+		public TypeReference Import (TypeReference type)
+		{
+			if (type == null)
+				throw new ArgumentNullException ("type");
+
+			return m_controller.Importer.ImportTypeReference (type, GetContext ());
+		}
+
+		public TypeReference Import (TypeReference type, TypeDefinition context)
+		{
+			if (type == null)
+				throw new ArgumentNullException ("type");
+			CheckContext (context);
+
+			return m_controller.Importer.ImportTypeReference (type, GetContext (context));
+		}
+
+		public TypeReference Import (TypeReference type, MethodDefinition context)
+		{
+			if (type == null)
+				throw new ArgumentNullException ("type");
+			CheckContext (context);
+
+			return m_controller.Importer.ImportTypeReference (type, GetContext (context));
+		}
+
+		public MethodReference Import (MethodReference meth)
+		{
+			if (meth == null)
+				throw new ArgumentNullException ("meth");
+
+			return m_controller.Importer.ImportMethodReference (meth, GetContext ());
+		}
+
+		public MethodReference Import (MethodReference meth, TypeDefinition context)
+		{
+			if (meth == null)
+				throw new ArgumentNullException ("meth");
+			CheckContext (context);
+
+			return m_controller.Importer.ImportMethodReference (meth, GetContext (context));
+		}
+
+		public MethodReference Import (MethodReference meth, MethodDefinition context)
+		{
+			if (meth == null)
+				throw new ArgumentNullException ("meth");
+			CheckContext (context);
+
+			return m_controller.Importer.ImportMethodReference (meth, GetContext (context));
+		}
+
+		public FieldReference Import (FieldReference field)
+		{
+			if (field == null)
+				throw new ArgumentNullException ("field");
+
+			return m_controller.Importer.ImportFieldReference (field, GetContext ());
+		}
+
+		public FieldReference Import (FieldReference field, TypeDefinition context)
+		{
+			if (field == null)
+				throw new ArgumentNullException ("field");
+			CheckContext (context);
+
+			return m_controller.Importer.ImportFieldReference (field, GetContext (context));
+		}
+
+		public FieldReference Import (FieldReference field, MethodDefinition context)
+		{
+			if (field == null)
+				throw new ArgumentNullException ("field");
+			CheckContext (context);
+
+			return m_controller.Importer.ImportFieldReference (field, GetContext (context));
+		}
+
+		static FieldDefinition ImportFieldDefinition (FieldDefinition field, ImportContext context)
+		{
+			return FieldDefinition.Clone (field, context);
+		}
+
+		static MethodDefinition ImportMethodDefinition (MethodDefinition meth, ImportContext context)
+		{
+			return MethodDefinition.Clone (meth, context);
+		}
+
+		static TypeDefinition ImportTypeDefinition (TypeDefinition type, ImportContext context)
+		{
+			return TypeDefinition.Clone (type, context);
+		}
+
+		public TypeDefinition Inject (TypeDefinition type)
+		{
+			return Inject (type, m_controller.Importer);
+		}
+
+		public TypeDefinition Inject (TypeDefinition type, IImporter importer)
+		{
+			if (type == null)
+				throw new ArgumentNullException ("type");
+			if (importer == null)
+				throw new ArgumentNullException ("importer");
+
+			TypeDefinition definition = ImportTypeDefinition (type, GetContext (importer));
+			this.Types.Add (definition);
+			return definition;
+		}
+
+		public TypeDefinition Inject (TypeDefinition type, TypeDefinition context)
+		{
+			return Inject (type, context, m_controller.Importer);
+		}
+
+		public TypeDefinition Inject (TypeDefinition type, TypeDefinition context, IImporter importer)
+		{
+			Check (type, context, importer);
+
+			TypeDefinition definition = ImportTypeDefinition (type, GetContext (importer, context));
+			context.NestedTypes.Add (definition);
+			return definition;
+		}
+
+		public MethodDefinition Inject (MethodDefinition meth, TypeDefinition context)
+		{
+			return Inject (meth, context, m_controller.Importer);
+		}
+
+		void Check (IMemberDefinition definition, TypeDefinition context, IImporter importer)
+		{
+			if (definition == null)
+				throw new ArgumentNullException ("definition");
+			if (context == null)
+				throw new ArgumentNullException ("context");
+			if (importer == null)
+				throw new ArgumentNullException ("importer");
+			if (context.Module != this)
+				throw new ArgumentException ("The context parameter does not belongs to this module");
+		}
+
+		public MethodDefinition Inject (MethodDefinition meth, TypeDefinition context, IImporter importer)
+		{
+			Check (meth, context, importer);
+
+			MethodDefinition definition = ImportMethodDefinition (meth, GetContext (importer, context));
+			context.Methods.Add (definition);
+			return definition;
+		}
+
+		public FieldDefinition Inject (FieldDefinition field, TypeDefinition context)
+		{
+			return Inject (field, context, m_controller.Importer);
+		}
+
+		public FieldDefinition Inject (FieldDefinition field, TypeDefinition context, IImporter importer)
+		{
+			Check (field, context, importer);
+
+			FieldDefinition definition = ImportFieldDefinition (field, GetContext (importer, context));
+			context.Fields.Add (definition);
+			return definition;
+		}
+
+		public void FullLoad ()
+		{
+			if (m_manifestOnly)
+				m_controller.Reader.VisitModuleDefinition (this);
+
+			foreach (TypeDefinition type in this.Types) {
+				foreach (MethodDefinition meth in type.Methods)
+					meth.LoadBody ();
+				foreach (MethodDefinition ctor in type.Constructors)
+					ctor.LoadBody ();
+			}
+
+			if (m_controller.Reader.SymbolReader == null)
+				return;
+
+			m_controller.Reader.SymbolReader.Dispose ();
+			m_controller.Reader.SymbolReader = null;
+		}
+
+		public void LoadSymbols ()
+		{
+			m_controller.Reader.SymbolReader = SymbolStoreHelper.GetReader (this);
+		}
+
+		public void LoadSymbols (ISymbolReader reader)
+		{
+			m_controller.Reader.SymbolReader = reader;
+		}
+
+		public void SaveSymbols ()
+		{
+			m_controller.Writer.SaveSymbols = true;
+		}
+
+		public void SaveSymbols (ISymbolWriter writer)
+		{
+			SaveSymbols ();
+			m_controller.Writer.SymbolWriter = writer;
+		}
+
+		public void SaveSymbols (string outputDirectory)
+		{
+			SaveSymbols ();
+			m_controller.Writer.OutputFile = outputDirectory;
+		}
+
+		public void SaveSymbols (string outputDirectory, ISymbolWriter writer)
+		{
+			SaveSymbols (outputDirectory);
+			m_controller.Writer.SymbolWriter = writer;
+		}
+
+		public byte [] GetAsByteArray (CustomAttribute ca)
+		{
+			CustomAttribute customAttr = ca;
+			if (!ca.Resolved)
+				if (customAttr.Blob != null)
+					return customAttr.Blob;
+				else
+					return new byte [0];
+
+			return m_controller.Writer.SignatureWriter.CompressCustomAttribute (
+				ReflectionWriter.GetCustomAttributeSig (ca), ca.Constructor);
+		}
+
+		public byte [] GetAsByteArray (SecurityDeclaration dec)
+		{
+			// TODO - add support for 2.0 format
+			// note: the 1.x format is still supported in 2.0 so this isn't an immediate problem
+			if (!dec.Resolved)
+				return dec.Blob;
+
+#if !CF_1_0 && !CF_2_0
+			if (dec.PermissionSet != null)
+				return Encoding.Unicode.GetBytes (dec.PermissionSet.ToXml ().ToString ());
+#endif
+
+			return new byte [0];
+		}
+
+		public CustomAttribute FromByteArray (MethodReference ctor, byte [] data)
+		{
+			return m_controller.Reader.GetCustomAttribute (ctor, data);
+		}
+
+		public SecurityDeclaration FromByteArray (SecurityAction action, byte [] declaration)
+		{
+			if (m_secReader == null)
+				m_secReader = new SecurityDeclarationReader (Image.MetadataRoot, m_controller.Reader);
+			return m_secReader.FromByteArray (action, declaration);
+		}
+
+		public override void Accept (IReflectionStructureVisitor visitor)
+		{
+			visitor.VisitModuleDefinition (this);
+
+			this.AssemblyReferences.Accept (visitor);
+			this.ModuleReferences.Accept (visitor);
+			this.Resources.Accept (visitor);
+		}
+
+		public void Accept (IReflectionVisitor visitor)
+		{
+			visitor.VisitModuleDefinition (this);
+
+			this.Types.Accept (visitor);
+			this.TypeReferences.Accept (visitor);
+		}
+
+		public override string ToString ()
+		{
+			string s = (m_main ? "(main), Mvid=" : "Mvid=");
+			return s + m_mvid;
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/ModuleDefinitionCollection.cs b/mcs/tools/cil-strip/Mono.Cecil/ModuleDefinitionCollection.cs
new file mode 100644
index 0000000..2676126
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/ModuleDefinitionCollection.cs
@@ -0,0 +1,93 @@
+//
+// ModuleDefinitionCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Wed Sep 27 12:46:54 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System;
+	using System.Collections;
+
+	using Mono.Cecil.Cil;
+
+	internal sealed class ModuleDefinitionCollection : CollectionBase, IReflectionStructureVisitable {
+
+		AssemblyDefinition m_container;
+
+		public ModuleDefinition this [int index] {
+			get { return List [index] as ModuleDefinition; }
+			set { List [index] = value; }
+		}
+
+		public AssemblyDefinition Container {
+			get { return m_container; }
+		}
+
+		public ModuleDefinitionCollection (AssemblyDefinition container)
+		{
+			m_container = container;
+		}
+
+		public void Add (ModuleDefinition value)
+		{
+			List.Add (value);
+		}
+
+		public bool Contains (ModuleDefinition value)
+		{
+			return List.Contains (value);
+		}
+
+		public int IndexOf (ModuleDefinition value)
+		{
+			return List.IndexOf (value);
+		}
+
+		public void Insert (int index, ModuleDefinition value)
+		{
+			List.Insert (index, value);
+		}
+
+		public void Remove (ModuleDefinition value)
+		{
+			List.Remove (value);
+		}
+
+		protected override void OnValidate (object o)
+		{
+			if (! (o is ModuleDefinition))
+				throw new ArgumentException ("Must be of type " + typeof (ModuleDefinition).FullName);
+		}
+
+		public void Accept (IReflectionStructureVisitor visitor)
+		{
+			visitor.VisitModuleDefinitionCollection (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/ModuleReference.cs b/mcs/tools/cil-strip/Mono.Cecil/ModuleReference.cs
new file mode 100644
index 0000000..520cd7a
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/ModuleReference.cs
@@ -0,0 +1,71 @@
+//
+// ModuleReference.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System.Collections;
+
+	using Mono.Cecil;
+	using Mono.Cecil.Metadata;
+
+	internal class ModuleReference : IMetadataScope, IAnnotationProvider, IReflectionStructureVisitable {
+
+		string m_name;
+		MetadataToken m_token;
+		IDictionary m_annotations;
+
+		public string Name {
+			get { return m_name; }
+			set { m_name = value; }
+		}
+
+		public MetadataToken MetadataToken {
+			get { return m_token; }
+			set { m_token = value; }
+		}
+
+		IDictionary IAnnotationProvider.Annotations {
+			get {
+				if (m_annotations == null)
+					m_annotations = new Hashtable ();
+				return m_annotations;
+			}
+		}
+
+		public ModuleReference (string name)
+		{
+			m_name = name;
+		}
+
+		public virtual void Accept (IReflectionStructureVisitor visitor)
+		{
+			visitor.VisitModuleReference (this);
+		}
+	}
+}
+
diff --git a/mcs/tools/cil-strip/Mono.Cecil/ModuleReferenceCollection.cs b/mcs/tools/cil-strip/Mono.Cecil/ModuleReferenceCollection.cs
new file mode 100644
index 0000000..a6b3048
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/ModuleReferenceCollection.cs
@@ -0,0 +1,93 @@
+//
+// ModuleReferenceCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Wed Sep 27 12:46:53 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System;
+	using System.Collections;
+
+	using Mono.Cecil.Cil;
+
+	internal sealed class ModuleReferenceCollection : CollectionBase, IReflectionStructureVisitable {
+
+		ModuleDefinition m_container;
+
+		public ModuleReference this [int index] {
+			get { return List [index] as ModuleReference; }
+			set { List [index] = value; }
+		}
+
+		public ModuleDefinition Container {
+			get { return m_container; }
+		}
+
+		public ModuleReferenceCollection (ModuleDefinition container)
+		{
+			m_container = container;
+		}
+
+		public void Add (ModuleReference value)
+		{
+			List.Add (value);
+		}
+
+		public bool Contains (ModuleReference value)
+		{
+			return List.Contains (value);
+		}
+
+		public int IndexOf (ModuleReference value)
+		{
+			return List.IndexOf (value);
+		}
+
+		public void Insert (int index, ModuleReference value)
+		{
+			List.Insert (index, value);
+		}
+
+		public void Remove (ModuleReference value)
+		{
+			List.Remove (value);
+		}
+
+		protected override void OnValidate (object o)
+		{
+			if (! (o is ModuleReference))
+				throw new ArgumentException ("Must be of type " + typeof (ModuleReference).FullName);
+		}
+
+		public void Accept (IReflectionStructureVisitor visitor)
+		{
+			visitor.VisitModuleReferenceCollection (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/NativeType.cs b/mcs/tools/cil-strip/Mono.Cecil/NativeType.cs
new file mode 100644
index 0000000..84b0c37
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/NativeType.cs
@@ -0,0 +1,73 @@
+//
+// NativeType.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	internal enum NativeType {
+		NONE = 0x66,
+
+		BOOLEAN = 0x02,
+		I1 = 0x03,
+		U1 = 0x04,
+		I2 = 0x05,
+		U2 = 0x06,
+		I4 = 0x07,
+		U4 = 0x08,
+		I8 = 0x09,
+		U8 = 0x0a,
+		R4 = 0x0b,
+		R8 = 0x0c,
+		LPSTR = 0x14,
+		INT = 0x1f,
+		UINT = 0x20,
+		FUNC = 0x26,
+		ARRAY = 0x2a,
+
+		// Msft specific
+		CURRENCY = 0x0f,
+		BSTR = 0x13,
+		LPWSTR = 0x15,
+		LPTSTR = 0x16,
+		FIXEDSYSSTRING = 0x17,
+		IUNKNOWN = 0x19,
+		IDISPATCH = 0x1a,
+		STRUCT = 0x1b,
+		INTF = 0x1c,
+		SAFEARRAY = 0x1d,
+		FIXEDARRAY = 0x1e,
+		BYVALSTR = 0x22,
+		ANSIBSTR = 0x23,
+		TBSTR = 0x24,
+		VARIANTBOOL = 0x25,
+		ASANY = 0x28,
+		LPSTRUCT = 0x2b,
+		CUSTOMMARSHALER = 0x2c,
+		ERROR = 0x2d,
+		MAX = 0x50
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/NestedTypeCollection.cs b/mcs/tools/cil-strip/Mono.Cecil/NestedTypeCollection.cs
new file mode 100644
index 0000000..9e6fc9f
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/NestedTypeCollection.cs
@@ -0,0 +1,128 @@
+//
+// NestedTypeCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Fri Mar 30 18:43:57 +0200 2007
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System;
+	using System.Collections;
+
+	using Mono.Cecil.Cil;
+
+	internal sealed class NestedTypeCollection : CollectionBase, IReflectionVisitable {
+
+		TypeDefinition m_container;
+
+		public TypeDefinition this [int index] {
+			get { return List [index] as TypeDefinition; }
+			set { List [index] = value; }
+		}
+
+		public TypeDefinition Container {
+			get { return m_container; }
+		}
+
+		public NestedTypeCollection (TypeDefinition container)
+		{
+			m_container = container;
+		}
+
+		public void Add (TypeDefinition value)
+		{
+			Attach (value);
+
+			List.Add (value);
+		}
+
+
+		public new void Clear ()
+		{
+			foreach (TypeDefinition item in this)
+				Detach (item);
+
+			base.Clear ();
+		}
+
+		public bool Contains (TypeDefinition value)
+		{
+			return List.Contains (value);
+		}
+
+		public int IndexOf (TypeDefinition value)
+		{
+			return List.IndexOf (value);
+		}
+
+		public void Insert (int index, TypeDefinition value)
+		{
+			Attach (value);
+
+			List.Insert (index, value);
+		}
+
+		public void Remove (TypeDefinition value)
+		{
+			List.Remove (value);
+
+			Detach (value);
+		}
+
+
+		public new void RemoveAt (int index)
+		{
+			TypeDefinition item = this [index];
+			Remove (item);
+		}
+
+		protected override void OnValidate (object o)
+		{
+			if (! (o is TypeDefinition))
+				throw new ArgumentException ("Must be of type " + typeof (TypeDefinition).FullName);
+		}
+
+		void Attach (MemberReference member)
+		{
+			if (member.DeclaringType != null)
+				throw new ReflectionException ("Member already attached, clone it instead");
+
+			member.DeclaringType = m_container;
+		}
+
+		void Detach (MemberReference member)
+		{
+			member.DeclaringType = null;
+		}
+
+		public void Accept (IReflectionVisitor visitor)
+		{
+			visitor.VisitNestedTypeCollection (this);
+		}
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/NullReferenceImporter.cs b/mcs/tools/cil-strip/Mono.Cecil/NullReferenceImporter.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil/NullReferenceImporter.cs
rename to mcs/tools/cil-strip/Mono.Cecil/NullReferenceImporter.cs
diff --git a/mcs/tools/cil-strip/Mono.Cecil/OverrideCollection.cs b/mcs/tools/cil-strip/Mono.Cecil/OverrideCollection.cs
new file mode 100644
index 0000000..e99e8a6
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/OverrideCollection.cs
@@ -0,0 +1,93 @@
+//
+// OverrideCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Wed Sep 27 12:46:53 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System;
+	using System.Collections;
+
+	using Mono.Cecil.Cil;
+
+	internal sealed class OverrideCollection : CollectionBase, IReflectionVisitable {
+
+		MethodDefinition m_container;
+
+		public MethodReference this [int index] {
+			get { return List [index] as MethodReference; }
+			set { List [index] = value; }
+		}
+
+		public MethodDefinition Container {
+			get { return m_container; }
+		}
+
+		public OverrideCollection (MethodDefinition container)
+		{
+			m_container = container;
+		}
+
+		public void Add (MethodReference value)
+		{
+			List.Add (value);
+		}
+
+		public bool Contains (MethodReference value)
+		{
+			return List.Contains (value);
+		}
+
+		public int IndexOf (MethodReference value)
+		{
+			return List.IndexOf (value);
+		}
+
+		public void Insert (int index, MethodReference value)
+		{
+			List.Insert (index, value);
+		}
+
+		public void Remove (MethodReference value)
+		{
+			List.Remove (value);
+		}
+
+		protected override void OnValidate (object o)
+		{
+			if (! (o is MethodReference))
+				throw new ArgumentException ("Must be of type " + typeof (MethodReference).FullName);
+		}
+
+		public void Accept (IReflectionVisitor visitor)
+		{
+			visitor.VisitOverrideCollection (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/PInvokeAttributes.cs b/mcs/tools/cil-strip/Mono.Cecil/PInvokeAttributes.cs
new file mode 100644
index 0000000..b586f0b
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/PInvokeAttributes.cs
@@ -0,0 +1,53 @@
+//
+// PInvokeAttributes.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System;
+
+	[Flags]
+	internal enum PInvokeAttributes : ushort {
+		NoMangle			= 0x0001,	// PInvoke is to use the member name as specified
+
+		// Character set
+		CharSetMask			= 0x0006,
+		CharSetNotSpec		= 0x0000,
+		CharSetAnsi			= 0x0002,
+		CharSetUnicode		= 0x0004,
+		CharSetAuto			= 0x0006,
+		SupportsLastError	= 0x0040,	// Information about target function. Not relevant for fields
+
+		// Calling convetion
+		CallConvMask		= 0x0700,
+		CallConvWinapi		= 0x0100,
+		CallConvCdecl		= 0x0200,
+		CallConvStdCall		= 0x0300,
+		CallConvThiscall	= 0x0400,
+		CallConvFastcall	= 0x0500
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/PInvokeInfo.cs b/mcs/tools/cil-strip/Mono.Cecil/PInvokeInfo.cs
new file mode 100644
index 0000000..e4d2406
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/PInvokeInfo.cs
@@ -0,0 +1,200 @@
+//
+// PInvokeInfo.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	internal sealed class PInvokeInfo : IReflectionVisitable {
+
+		MethodDefinition m_meth;
+
+		PInvokeAttributes m_attributes;
+		string m_entryPoint;
+		ModuleReference m_module;
+
+		public MethodDefinition Method {
+			get { return m_meth; }
+		}
+
+		public PInvokeAttributes Attributes {
+			get { return m_attributes; }
+			set { m_attributes = value; }
+		}
+
+		public string EntryPoint {
+			get { return m_entryPoint; }
+			set { m_entryPoint = value; }
+		}
+
+		public ModuleReference Module {
+			get { return m_module; }
+			set { m_module = value; }
+		}
+
+		#region PInvokeAttributes
+
+		public bool IsNoMangle {
+			get { return (m_attributes & PInvokeAttributes.NoMangle) != 0; }
+			set {
+				if (value)
+					m_attributes |= PInvokeAttributes.NoMangle;
+				else
+					m_attributes &= ~PInvokeAttributes.NoMangle;
+			}
+		}
+
+		public bool IsCharSetNotSpec {
+			get { return (m_attributes & PInvokeAttributes.CharSetMask) == PInvokeAttributes.CharSetNotSpec; }
+			set {
+				if (value) {
+					m_attributes &= ~PInvokeAttributes.CharSetMask;
+					m_attributes |= PInvokeAttributes.CharSetNotSpec;
+				} else
+					m_attributes &= ~(PInvokeAttributes.CharSetMask & PInvokeAttributes.CharSetNotSpec);
+			}
+		}
+
+		public bool IsCharSetAnsi {
+			get { return (m_attributes & PInvokeAttributes.CharSetMask) == PInvokeAttributes.CharSetAnsi; }
+			set {
+				if (value) {
+					m_attributes &= ~PInvokeAttributes.CharSetMask;
+					m_attributes |= PInvokeAttributes.CharSetAnsi;
+				} else
+					m_attributes &= ~(PInvokeAttributes.CharSetMask & PInvokeAttributes.CharSetAnsi);
+			}
+		}
+
+		public bool IsCharSetUnicode {
+			get { return (m_attributes & PInvokeAttributes.CharSetMask) == PInvokeAttributes.CharSetUnicode; }
+			set {
+				if (value) {
+					m_attributes &= ~PInvokeAttributes.CharSetMask;
+					m_attributes |= PInvokeAttributes.CharSetUnicode;
+				} else
+					m_attributes &= ~(PInvokeAttributes.CharSetMask & PInvokeAttributes.CharSetUnicode);
+			}
+		}
+
+		public bool IsCharSetAuto {
+			get { return (m_attributes & PInvokeAttributes.CharSetMask) == PInvokeAttributes.CharSetAuto; }
+			set {
+				if (value) {
+					m_attributes &= ~PInvokeAttributes.CharSetMask;
+					m_attributes |= PInvokeAttributes.CharSetAuto;
+				} else
+					m_attributes &= ~(PInvokeAttributes.CharSetMask & PInvokeAttributes.CharSetAuto);
+			}
+		}
+
+		public bool SupportsLastError {
+			get { return (m_attributes & PInvokeAttributes.CharSetMask) == PInvokeAttributes.SupportsLastError; }
+			set {
+				if (value) {
+					m_attributes &= ~PInvokeAttributes.CharSetMask;
+					m_attributes |= PInvokeAttributes.SupportsLastError;
+				} else
+					m_attributes &= ~(PInvokeAttributes.CharSetMask & PInvokeAttributes.SupportsLastError);
+			}
+		}
+
+		public bool IsCallConvWinapi {
+			get { return (m_attributes & PInvokeAttributes.CallConvMask) == PInvokeAttributes.CallConvWinapi; }
+			set {
+				if (value) {
+					m_attributes &= ~PInvokeAttributes.CallConvMask;
+					m_attributes |= PInvokeAttributes.CallConvWinapi;
+				} else
+					m_attributes &= ~(PInvokeAttributes.CallConvMask & PInvokeAttributes.CallConvWinapi);
+			}
+		}
+
+		public bool IsCallConvCdecl {
+			get { return (m_attributes & PInvokeAttributes.CallConvMask) == PInvokeAttributes.CallConvCdecl; }
+			set {
+				if (value) {
+					m_attributes &= ~PInvokeAttributes.CallConvMask;
+					m_attributes |= PInvokeAttributes.CallConvCdecl;
+				} else
+					m_attributes &= ~(PInvokeAttributes.CallConvMask & PInvokeAttributes.CallConvCdecl);
+			}
+		}
+
+		public bool IsCallConvStdCall {
+			get { return (m_attributes & PInvokeAttributes.CallConvMask) == PInvokeAttributes.CallConvStdCall; }
+			set {
+				if (value) {
+					m_attributes &= ~PInvokeAttributes.CallConvMask;
+					m_attributes |= PInvokeAttributes.CallConvStdCall;
+				} else
+					m_attributes &= ~(PInvokeAttributes.CallConvMask & PInvokeAttributes.CallConvStdCall);
+			}
+		}
+
+		public bool IsCallConvThiscall {
+			get { return (m_attributes & PInvokeAttributes.CallConvMask) == PInvokeAttributes.CallConvThiscall; }
+			set {
+				if (value) {
+					m_attributes &= ~PInvokeAttributes.CallConvMask;
+					m_attributes |= PInvokeAttributes.CallConvThiscall;
+				} else
+					m_attributes &= ~(PInvokeAttributes.CallConvMask & PInvokeAttributes.CallConvThiscall);
+			}
+		}
+
+		public bool IsCallConvFastcall {
+			get { return (m_attributes & PInvokeAttributes.CallConvMask) == PInvokeAttributes.CallConvFastcall; }
+			set {
+				if (value) {
+					m_attributes &= ~PInvokeAttributes.CallConvMask;
+					m_attributes |= PInvokeAttributes.CallConvFastcall;
+				} else
+					m_attributes &= ~(PInvokeAttributes.CallConvMask & PInvokeAttributes.CallConvFastcall);
+			}
+		}
+
+		#endregion
+
+		public PInvokeInfo (MethodDefinition meth)
+		{
+			m_meth = meth;
+		}
+
+		public PInvokeInfo (MethodDefinition meth, PInvokeAttributes attrs,
+			string entryPoint, ModuleReference mod) : this (meth)
+		{
+			m_attributes = attrs;
+			m_entryPoint = entryPoint;
+			m_module = mod;
+		}
+
+		public void Accept (IReflectionVisitor visitor)
+		{
+			visitor.VisitPInvokeInfo (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/ParameterAttributes.cs b/mcs/tools/cil-strip/Mono.Cecil/ParameterAttributes.cs
new file mode 100644
index 0000000..1e0f932
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/ParameterAttributes.cs
@@ -0,0 +1,45 @@
+//
+// ParameterAttributes.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System;
+
+	[Flags]
+	internal enum ParameterAttributes : ushort {
+		None				= 0x0000,
+		In					= 0x0001,	// Param is [In]
+		Out					= 0x0002,	// Param is [Out]
+		Lcid				= 0x0004,
+		Retval				= 0x0008,
+		Optional			= 0x0010,	// Param is optional
+		HasDefault			= 0x1000,	// Param has default value
+		HasFieldMarshal		= 0x2000,	// Param has field marshal
+		Unused				= 0xcfe0	 // Reserved: shall be zero in a conforming implementation
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/ParameterDefinition.cs b/mcs/tools/cil-strip/Mono.Cecil/ParameterDefinition.cs
new file mode 100644
index 0000000..2310b15
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/ParameterDefinition.cs
@@ -0,0 +1,204 @@
+//
+// ParameterDefinition.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 - 2007 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	internal sealed class ParameterDefinition : ParameterReference, IHasMarshalSpec,
+		IMetadataTokenProvider, ICustomAttributeProvider, IHasConstant {
+
+		ParameterAttributes m_attributes;
+
+		bool m_hasConstant;
+		object m_const;
+
+		MethodReference m_method;
+		CustomAttributeCollection m_customAttrs;
+
+		MarshalSpec m_marshalDesc;
+
+		public ParameterAttributes Attributes {
+			get { return m_attributes; }
+			set { m_attributes = value; }
+		}
+
+		public bool HasConstant {
+			get { return m_hasConstant; }
+		}
+
+		public object Constant {
+			get { return m_const; }
+			set {
+				m_hasConstant = true;
+				m_const = value;
+			}
+		}
+
+		public MethodReference Method {
+			get { return m_method; }
+			set { m_method = value; }
+		}
+
+		public bool HasCustomAttributes {
+			get { return (m_customAttrs == null) ? false : (m_customAttrs.Count > 0); }
+		}
+
+		public CustomAttributeCollection CustomAttributes {
+			get {
+				if (m_customAttrs == null)
+					m_customAttrs = new CustomAttributeCollection (this);
+
+				return m_customAttrs;
+			}
+		}
+
+		public MarshalSpec MarshalSpec {
+			get { return m_marshalDesc; }
+			set {
+				m_marshalDesc = value;
+				if (value != null)
+					m_attributes |= ParameterAttributes.HasFieldMarshal;
+				else
+					m_attributes &= ~ParameterAttributes.HasFieldMarshal;
+			}
+		}
+
+		#region ParameterAttributes
+
+		public bool IsIn {
+			get { return (m_attributes & ParameterAttributes.In) != 0; }
+			set {
+				if (value)
+					m_attributes |= ParameterAttributes.In;
+				else
+					m_attributes &= ~ParameterAttributes.In;
+			}
+		}
+
+		public bool IsOut {
+			get { return (m_attributes & ParameterAttributes.Out) != 0; }
+			set {
+				if (value)
+					m_attributes |= ParameterAttributes.Out;
+				else
+					m_attributes &= ~ParameterAttributes.Out;
+			}
+		}
+
+		public bool IsRetval {
+			get { return (m_attributes & ParameterAttributes.Retval) != 0; }
+			set {
+				if (value)
+					m_attributes |= ParameterAttributes.Retval;
+				else
+					m_attributes &= ~ParameterAttributes.Retval;
+			}
+		}
+
+		public bool IsLcid {
+			get { return (m_attributes & ParameterAttributes.Lcid) != 0; }
+			set {
+				if (value)
+					m_attributes |= ParameterAttributes.Lcid;
+				else
+					m_attributes &= ~ParameterAttributes.Lcid;
+			}
+		}
+
+		public bool IsOptional {
+			get { return (m_attributes & ParameterAttributes.Optional) != 0; }
+			set {
+				if (value)
+					m_attributes |= ParameterAttributes.Optional;
+				else
+					m_attributes &= ~ParameterAttributes.Optional;
+			}
+		}
+
+		public bool HasDefault {
+			get { return (m_attributes & ParameterAttributes.HasDefault) != 0; }
+			set {
+				if (value)
+					m_attributes |= ParameterAttributes.HasDefault;
+				else
+					m_attributes &= ~ParameterAttributes.HasDefault;
+			}
+		}
+
+		#endregion
+
+		public ParameterDefinition (TypeReference paramType) :
+			this (string.Empty, -1, (ParameterAttributes) 0, paramType)
+		{
+		}
+
+		public override ParameterDefinition Resolve ()
+		{
+			return this;
+		}
+
+		public ParameterDefinition (string name, int seq, ParameterAttributes attrs, TypeReference paramType) : base (name, seq, paramType)
+		{
+			m_attributes = attrs;
+		}
+
+		public ParameterDefinition Clone ()
+		{
+			return Clone (this, new ImportContext (NullReferenceImporter.Instance, m_method));
+		}
+
+		internal static ParameterDefinition Clone (ParameterDefinition param, ImportContext context)
+		{
+			ParameterDefinition np = new ParameterDefinition (
+				param.Name,
+				param.Sequence,
+				param.Attributes,
+				context.Import (param.ParameterType));
+
+			if (param.HasConstant)
+				np.Constant = param.Constant;
+
+			if (param.MarshalSpec != null)
+				np.MarshalSpec = param.MarshalSpec.CloneInto (np);
+
+			foreach (CustomAttribute ca in param.CustomAttributes)
+				np.CustomAttributes.Add (CustomAttribute.Clone (ca, context));
+
+			return np;
+		}
+
+		public override void Accept (IReflectionVisitor visitor)
+		{
+			visitor.VisitParameterDefinition (this);
+
+			if (this.MarshalSpec != null)
+				this.MarshalSpec.Accept (visitor);
+
+			this.CustomAttributes.Accept (visitor);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/ParameterDefinitionCollection.cs b/mcs/tools/cil-strip/Mono.Cecil/ParameterDefinitionCollection.cs
new file mode 100644
index 0000000..37a8041
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/ParameterDefinitionCollection.cs
@@ -0,0 +1,93 @@
+//
+// ParameterDefinitionCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Wed Sep 27 12:46:52 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System;
+	using System.Collections;
+
+	using Mono.Cecil.Cil;
+
+	internal sealed class ParameterDefinitionCollection : CollectionBase, IReflectionVisitable {
+
+		IMemberReference m_container;
+
+		public ParameterDefinition this [int index] {
+			get { return List [index] as ParameterDefinition; }
+			set { List [index] = value; }
+		}
+
+		public IMemberReference Container {
+			get { return m_container; }
+		}
+
+		public ParameterDefinitionCollection (IMemberReference container)
+		{
+			m_container = container;
+		}
+
+		public void Add (ParameterDefinition value)
+		{
+			List.Add (value);
+		}
+
+		public bool Contains (ParameterDefinition value)
+		{
+			return List.Contains (value);
+		}
+
+		public int IndexOf (ParameterDefinition value)
+		{
+			return List.IndexOf (value);
+		}
+
+		public void Insert (int index, ParameterDefinition value)
+		{
+			List.Insert (index, value);
+		}
+
+		public void Remove (ParameterDefinition value)
+		{
+			List.Remove (value);
+		}
+
+		protected override void OnValidate (object o)
+		{
+			if (! (o is ParameterDefinition))
+				throw new ArgumentException ("Must be of type " + typeof (ParameterDefinition).FullName);
+		}
+
+		public void Accept (IReflectionVisitor visitor)
+		{
+			visitor.VisitParameterDefinitionCollection (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/ParameterReference.cs b/mcs/tools/cil-strip/Mono.Cecil/ParameterReference.cs
new file mode 100644
index 0000000..04aff64
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/ParameterReference.cs
@@ -0,0 +1,90 @@
+//
+// ParameterReference.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System.Collections;
+
+	using Mono.Cecil.Metadata;
+
+	internal abstract class ParameterReference : IMetadataTokenProvider, IAnnotationProvider, IReflectionVisitable {
+
+		string m_name;
+		int m_sequence;
+		TypeReference m_paramType;
+		MetadataToken m_token;
+		IDictionary m_annotations;
+
+		public string Name {
+			get { return m_name; }
+			set { m_name = value; }
+		}
+
+		public int Sequence {
+			get { return m_sequence; }
+			set { m_sequence = value; }
+		}
+
+		public TypeReference ParameterType {
+			get { return m_paramType; }
+			set { m_paramType = value; }
+		}
+
+		public MetadataToken MetadataToken {
+			get { return m_token; }
+			set { m_token = value; }
+		}
+
+		IDictionary IAnnotationProvider.Annotations {
+			get {
+				if (m_annotations == null)
+					m_annotations = new Hashtable ();
+				return m_annotations;
+			}
+		}
+
+		public ParameterReference (string name, int sequence, TypeReference parameterType)
+		{
+			m_name = name;
+			m_sequence = sequence;
+			m_paramType = parameterType;
+		}
+
+		public abstract ParameterDefinition Resolve ();
+
+		public override string ToString ()
+		{
+			if (m_name != null && m_name.Length > 0)
+				return m_name;
+
+			return string.Concat ("A_", m_sequence);
+		}
+
+		public abstract void Accept (IReflectionVisitor visitor);
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/PinnedType.cs b/mcs/tools/cil-strip/Mono.Cecil/PinnedType.cs
new file mode 100644
index 0000000..95d05c1
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/PinnedType.cs
@@ -0,0 +1,37 @@
+//
+// PinnedType.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	internal sealed class PinnedType : TypeSpecification {
+
+		public PinnedType (TypeReference pType) : base (pType)
+		{
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/PointerType.cs b/mcs/tools/cil-strip/Mono.Cecil/PointerType.cs
new file mode 100644
index 0000000..7707b30
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/PointerType.cs
@@ -0,0 +1,45 @@
+//
+// PointerType.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	internal sealed class PointerType : TypeSpecification {
+
+		public override string Name {
+			get { return string.Concat (base.Name, "*"); }
+		}
+
+		public override string FullName {
+			get { return string.Concat (base.FullName, "*"); }
+		}
+
+		public PointerType (TypeReference pType) : base (pType)
+		{
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/PropertyAttributes.cs b/mcs/tools/cil-strip/Mono.Cecil/PropertyAttributes.cs
new file mode 100644
index 0000000..8ebd872
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/PropertyAttributes.cs
@@ -0,0 +1,40 @@
+//
+// PropertyAttributes.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System;
+
+	[Flags]
+	internal enum PropertyAttributes : ushort {
+		SpecialName		= 0x0200,	// Property is special
+		RTSpecialName	= 0x0400,	// Runtime(metadata internal APIs) should check name encoding
+		HasDefault		= 0x1000,	// Property has default
+		Unused			= 0xe9ff	 // Reserved: shall be zero in a conforming implementation
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/PropertyDefinition.cs b/mcs/tools/cil-strip/Mono.Cecil/PropertyDefinition.cs
new file mode 100644
index 0000000..4357274
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/PropertyDefinition.cs
@@ -0,0 +1,252 @@
+//
+// PropertyDefinition.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System;
+	using System.Text;
+
+	internal sealed class PropertyDefinition : PropertyReference,
+		IMemberDefinition, ICustomAttributeProvider, IHasConstant {
+
+		PropertyAttributes m_attributes;
+
+		CustomAttributeCollection m_customAttrs;
+
+		MethodDefinition m_getMeth;
+		MethodDefinition m_setMeth;
+
+		bool m_hasConstant;
+		object m_const;
+
+		public PropertyAttributes Attributes {
+			get { return m_attributes; }
+			set { m_attributes = value; }
+		}
+
+		public bool HasCustomAttributes {
+			get { return (m_customAttrs == null) ? false : (m_customAttrs.Count > 0); }
+		}
+
+		public CustomAttributeCollection CustomAttributes {
+			get {
+				if (m_customAttrs == null)
+					m_customAttrs = new CustomAttributeCollection (this);
+
+				return m_customAttrs;
+			}
+		}
+
+		public override bool HasParameters {
+			get {
+				if (m_getMeth != null)
+					return m_getMeth.HasParameters;
+				else if (m_setMeth != null)
+					return m_setMeth.HasParameters;
+				else if (m_parameters == null)
+					return false;
+				else
+					return m_parameters.Count > 0;
+			}
+		}
+
+		public override ParameterDefinitionCollection Parameters {
+			get {
+				if (this.GetMethod != null)
+					return CloneParameterCollection (this.GetMethod.Parameters);
+				else if (this.SetMethod != null) {
+					ParameterDefinitionCollection parameters =
+						CloneParameterCollection (this.SetMethod.Parameters);
+					if (parameters.Count > 0)
+						parameters.RemoveAt (parameters.Count - 1);
+					return parameters;
+				}
+
+				if (m_parameters == null)
+					m_parameters = new ParameterDefinitionCollection (this);
+
+				return m_parameters;
+			}
+		}
+
+		public MethodDefinition GetMethod {
+			get { return m_getMeth; }
+			set { m_getMeth = value; }
+		}
+
+		public MethodDefinition SetMethod {
+			get { return m_setMeth; }
+			set { m_setMeth = value; }
+		}
+
+		ParameterDefinitionCollection CloneParameterCollection (ParameterDefinitionCollection original)
+		{
+			ParameterDefinitionCollection clone = new ParameterDefinitionCollection (
+				original.Container);
+			foreach (ParameterDefinition param in original)
+				clone.Add (param);
+			return clone;
+		}
+
+		public bool HasConstant {
+			get { return m_hasConstant; }
+		}
+
+		public object Constant {
+			get { return m_const; }
+			set {
+				m_hasConstant = true;
+				m_const = value;
+			}
+		}
+
+		#region PropertyAttributes
+
+		public bool IsSpecialName {
+			get { return (m_attributes & PropertyAttributes.SpecialName) != 0; }
+			set {
+				if (value)
+					m_attributes |= PropertyAttributes.SpecialName;
+				else
+					m_attributes &= ~PropertyAttributes.SpecialName;
+			}
+		}
+
+		public bool IsRuntimeSpecialName {
+			get { return (m_attributes & PropertyAttributes.RTSpecialName) != 0; }
+			set {
+				if (value)
+					m_attributes |= PropertyAttributes.RTSpecialName;
+				else
+					m_attributes &= ~PropertyAttributes.RTSpecialName;
+			}
+		}
+
+		public bool HasDefault {
+			get { return (m_attributes & PropertyAttributes.HasDefault) != 0; }
+			set {
+				if (value)
+					m_attributes |= PropertyAttributes.HasDefault;
+				else
+					m_attributes &= ~PropertyAttributes.HasDefault;
+			}
+		}
+
+		#endregion
+
+		public new TypeDefinition DeclaringType {
+			get { return (TypeDefinition) base.DeclaringType; }
+			set { base.DeclaringType = value; }
+		}
+
+		public PropertyDefinition (string name, TypeReference propertyType, PropertyAttributes attrs) : base (name, propertyType)
+		{
+			m_attributes = attrs;
+		}
+
+		public override PropertyDefinition Resolve ()
+		{
+			return this;
+		}
+
+		public static MethodDefinition CreateGetMethod (PropertyDefinition prop)
+		{
+			MethodDefinition get = new MethodDefinition (
+				string.Concat ("get_", prop.Name), (MethodAttributes) 0, prop.PropertyType);
+			prop.GetMethod = get;
+			return get;
+		}
+
+		public static MethodDefinition CreateSetMethod (PropertyDefinition prop)
+		{
+			MethodDefinition set = new MethodDefinition (
+				string.Concat ("set_", prop.Name), (MethodAttributes) 0, prop.PropertyType);
+			prop.SetMethod = set;
+			return set;
+		}
+
+		public PropertyDefinition Clone ()
+		{
+			return Clone (this, new ImportContext (NullReferenceImporter.Instance, this.DeclaringType));
+		}
+
+		internal static PropertyDefinition Clone (PropertyDefinition prop, ImportContext context)
+		{
+			PropertyDefinition np = new PropertyDefinition (
+				prop.Name,
+				context.Import (prop.PropertyType),
+				prop.Attributes);
+
+			if (prop.HasConstant)
+				np.Constant = prop.Constant;
+
+			if (context.GenericContext.Type is TypeDefinition) {
+				TypeDefinition type = context.GenericContext.Type as TypeDefinition;
+				if (prop.SetMethod != null)
+					np.SetMethod = type.Methods.GetMethod (prop.SetMethod.Name, prop.SetMethod.Parameters);
+				if (prop.GetMethod != null)
+					np.GetMethod = type.Methods.GetMethod (prop.GetMethod.Name, prop.GetMethod.Parameters);
+			}
+
+			foreach (CustomAttribute ca in prop.CustomAttributes)
+				np.CustomAttributes.Add (CustomAttribute.Clone (ca, context));
+
+			return np;
+		}
+
+		public override string ToString ()
+		{
+			StringBuilder sb = new StringBuilder ();
+			sb.Append (PropertyType.ToString ());
+			sb.Append (' ');
+
+			if (this.DeclaringType != null) {
+				sb.Append (this.DeclaringType.ToString ());
+				sb.Append ("::");
+			}
+
+			sb.Append (this.Name);
+			sb.Append ('(');
+			ParameterDefinitionCollection parameters = this.Parameters;
+			for (int i = 0; i < parameters.Count; i++) {
+				if (i > 0)
+					sb.Append (',');
+				sb.Append (parameters [i].ParameterType.ToString ());
+			}
+			sb.Append (')');
+			return sb.ToString ();
+		}
+
+		public override void Accept (IReflectionVisitor visitor)
+		{
+			visitor.VisitPropertyDefinition (this);
+
+			this.CustomAttributes.Accept (visitor);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/PropertyDefinitionCollection.cs b/mcs/tools/cil-strip/Mono.Cecil/PropertyDefinitionCollection.cs
new file mode 100644
index 0000000..b437647
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/PropertyDefinitionCollection.cs
@@ -0,0 +1,138 @@
+//
+// PropertyDefinitionCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Fri Mar 30 18:43:57 +0200 2007
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System;
+	using System.Collections;
+
+	using Mono.Cecil.Cil;
+
+	internal sealed class PropertyDefinitionCollection : CollectionBase, IReflectionVisitable {
+
+		TypeDefinition m_container;
+
+		public PropertyDefinition this [int index] {
+			get { return List [index] as PropertyDefinition; }
+			set { List [index] = value; }
+		}
+
+		public TypeDefinition Container {
+			get { return m_container; }
+		}
+
+		public PropertyDefinitionCollection (TypeDefinition container)
+		{
+			m_container = container;
+		}
+
+		public void Add (PropertyDefinition value)
+		{
+			Attach (value);
+
+			List.Add (value);
+		}
+
+
+		public new void Clear ()
+		{
+			foreach (PropertyDefinition item in this)
+				Detach (item);
+
+			base.Clear ();
+		}
+
+		public bool Contains (PropertyDefinition value)
+		{
+			return List.Contains (value);
+		}
+
+		public int IndexOf (PropertyDefinition value)
+		{
+			return List.IndexOf (value);
+		}
+
+		public void Insert (int index, PropertyDefinition value)
+		{
+			Attach (value);
+
+			List.Insert (index, value);
+		}
+
+		public void Remove (PropertyDefinition value)
+		{
+			List.Remove (value);
+
+			Detach (value);
+		}
+
+
+		public new void RemoveAt (int index)
+		{
+			PropertyDefinition item = this [index];
+			Remove (item);
+		}
+
+		protected override void OnValidate (object o)
+		{
+			if (! (o is PropertyDefinition))
+				throw new ArgumentException ("Must be of type " + typeof (PropertyDefinition).FullName);
+		}
+
+		public PropertyDefinition [] GetProperties (string name)
+		{
+			ArrayList ret = new ArrayList ();
+			foreach (PropertyDefinition prop in this)
+				if (prop.Name == name)
+					ret.Add (prop);
+
+			return ret.ToArray (typeof (PropertyDefinition)) as PropertyDefinition [];
+		}
+
+		void Attach (MemberReference member)
+		{
+			if (member.DeclaringType != null)
+				throw new ReflectionException ("Member already attached, clone it instead");
+
+			member.DeclaringType = m_container;
+		}
+
+		void Detach (MemberReference member)
+		{
+			member.DeclaringType = null;
+		}
+
+		public void Accept (IReflectionVisitor visitor)
+		{
+			visitor.VisitPropertyDefinitionCollection (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/PropertyReference.cs b/mcs/tools/cil-strip/Mono.Cecil/PropertyReference.cs
new file mode 100644
index 0000000..6daaee5
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/PropertyReference.cs
@@ -0,0 +1,56 @@
+//
+// PropertyReference.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	internal abstract class PropertyReference : MemberReference {
+
+		TypeReference m_propertyType;
+		protected ParameterDefinitionCollection m_parameters;
+
+		public TypeReference PropertyType {
+			get { return m_propertyType; }
+			set { m_propertyType = value; }
+		}
+
+		public abstract bool HasParameters {
+			get;
+		}
+
+		public abstract ParameterDefinitionCollection Parameters {
+			get;
+		}
+
+		public PropertyReference (string name, TypeReference propertyType) : base (name)
+		{
+			m_propertyType = propertyType;
+		}
+
+		public abstract PropertyDefinition Resolve ();
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/ReferenceType.cs b/mcs/tools/cil-strip/Mono.Cecil/ReferenceType.cs
new file mode 100644
index 0000000..1c7a97e
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/ReferenceType.cs
@@ -0,0 +1,45 @@
+//
+// ReferenceType.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	internal sealed class ReferenceType : TypeSpecification {
+
+		public override string Name {
+			get { return string.Concat (base.Name, "&"); }
+		}
+
+		public override string FullName {
+			get { return string.Concat (base.FullName, "&"); }
+		}
+
+		public ReferenceType (TypeReference type) : base (type)
+		{
+		}
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/ReflectionController.cs b/mcs/tools/cil-strip/Mono.Cecil/ReflectionController.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil/ReflectionController.cs
rename to mcs/tools/cil-strip/Mono.Cecil/ReflectionController.cs
diff --git a/mcs/tools/cil-strip/Mono.Cecil/ReflectionException.cs b/mcs/tools/cil-strip/Mono.Cecil/ReflectionException.cs
new file mode 100644
index 0000000..b0c7215
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/ReflectionException.cs
@@ -0,0 +1,55 @@
+//
+// ReflectionException.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System;
+
+	using Mono.Cecil.Metadata;
+
+	internal sealed class ReflectionException : MetadataFormatException {
+
+		internal ReflectionException () : base ()
+		{
+		}
+
+		internal ReflectionException (string message) : base (message)
+		{
+		}
+
+		internal ReflectionException (string message, params string [] parameters) :
+			base (string.Format (message, parameters))
+		{
+		}
+
+		internal ReflectionException (string message, Exception inner) :
+			base (message, inner)
+		{
+		}
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/ReflectionHelper.cs b/mcs/tools/cil-strip/Mono.Cecil/ReflectionHelper.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil/ReflectionHelper.cs
rename to mcs/tools/cil-strip/Mono.Cecil/ReflectionHelper.cs
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/ReflectionReader.cs b/mcs/tools/cil-strip/Mono.Cecil/ReflectionReader.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil/ReflectionReader.cs
rename to mcs/tools/cil-strip/Mono.Cecil/ReflectionReader.cs
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/ReflectionWriter.cs b/mcs/tools/cil-strip/Mono.Cecil/ReflectionWriter.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil/ReflectionWriter.cs
rename to mcs/tools/cil-strip/Mono.Cecil/ReflectionWriter.cs
diff --git a/mcs/tools/cil-strip/Mono.Cecil/Resource.cs b/mcs/tools/cil-strip/Mono.Cecil/Resource.cs
new file mode 100644
index 0000000..9c98085
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/Resource.cs
@@ -0,0 +1,91 @@
+//
+// Resource.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System.Collections;
+
+	internal abstract class Resource : IAnnotationProvider, IReflectionStructureVisitable {
+
+		string m_name;
+		ManifestResourceAttributes m_attributes;
+		IDictionary m_annotations;
+
+		public string Name {
+			get { return m_name; }
+			set { m_name = value; }
+		}
+
+		public ManifestResourceAttributes Flags {
+			get { return m_attributes; }
+			set { m_attributes = value; }
+		}
+
+		IDictionary IAnnotationProvider.Annotations {
+			get {
+				if (m_annotations == null)
+					m_annotations = new Hashtable ();
+				return m_annotations;
+			}
+		}
+
+		#region ManifestResourceAttributes
+
+		public bool IsPublic {
+			get { return (m_attributes & ManifestResourceAttributes.VisibilityMask) == ManifestResourceAttributes.Public; }
+			set {
+				if (value) {
+					m_attributes &= ~ManifestResourceAttributes.VisibilityMask;
+					m_attributes |= ManifestResourceAttributes.Public;
+				} else
+					m_attributes &= ~(ManifestResourceAttributes.VisibilityMask & ManifestResourceAttributes.Public);
+			}
+		}
+
+		public bool IsPrivate {
+			get { return (m_attributes & ManifestResourceAttributes.VisibilityMask) == ManifestResourceAttributes.Private; }
+			set {
+				if (value) {
+					m_attributes &= ~ManifestResourceAttributes.VisibilityMask;
+					m_attributes |= ManifestResourceAttributes.Private;
+				} else
+					m_attributes &= ~(ManifestResourceAttributes.VisibilityMask & ManifestResourceAttributes.Private);
+			}
+		}
+
+		#endregion
+
+		internal Resource (string name, ManifestResourceAttributes attributes)
+		{
+			m_name = name;
+			m_attributes = attributes;
+		}
+
+		public abstract void Accept (IReflectionStructureVisitor visitor);
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/ResourceCollection.cs b/mcs/tools/cil-strip/Mono.Cecil/ResourceCollection.cs
new file mode 100644
index 0000000..feadcc9
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/ResourceCollection.cs
@@ -0,0 +1,93 @@
+//
+// ResourceCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Wed Sep 27 12:46:54 CEST 2006
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System;
+	using System.Collections;
+
+	using Mono.Cecil.Cil;
+
+	internal sealed class ResourceCollection : CollectionBase, IReflectionStructureVisitable {
+
+		ModuleDefinition m_container;
+
+		public Resource this [int index] {
+			get { return List [index] as Resource; }
+			set { List [index] = value; }
+		}
+
+		public ModuleDefinition Container {
+			get { return m_container; }
+		}
+
+		public ResourceCollection (ModuleDefinition container)
+		{
+			m_container = container;
+		}
+
+		public void Add (Resource value)
+		{
+			List.Add (value);
+		}
+
+		public bool Contains (Resource value)
+		{
+			return List.Contains (value);
+		}
+
+		public int IndexOf (Resource value)
+		{
+			return List.IndexOf (value);
+		}
+
+		public void Insert (int index, Resource value)
+		{
+			List.Insert (index, value);
+		}
+
+		public void Remove (Resource value)
+		{
+			List.Remove (value);
+		}
+
+		protected override void OnValidate (object o)
+		{
+			if (! (o is Resource))
+				throw new ArgumentException ("Must be of type " + typeof (Resource).FullName);
+		}
+
+		public void Accept (IReflectionStructureVisitor visitor)
+		{
+			visitor.VisitResourceCollection (this);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/SecurityAction.cs b/mcs/tools/cil-strip/Mono.Cecil/SecurityAction.cs
new file mode 100644
index 0000000..3f1be07
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/SecurityAction.cs
@@ -0,0 +1,48 @@
+//
+// SecurityAction.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	internal enum SecurityAction : short {
+		Request = 1,
+		Demand = 2,
+		Assert = 3,
+		Deny = 4,
+		PermitOnly = 5,
+		LinkDemand = 6,
+		InheritDemand = 7,
+		RequestMinimum = 8,
+		RequestOptional = 9,
+		RequestRefuse = 10,
+		PreJitGrant = 11,
+		PreJitDeny = 12,
+		NonCasDemand = 13,
+		NonCasLinkDemand = 14,
+		NonCasInheritance = 15
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/SecurityDeclaration.cs b/mcs/tools/cil-strip/Mono.Cecil/SecurityDeclaration.cs
new file mode 100644
index 0000000..8bda63d
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/SecurityDeclaration.cs
@@ -0,0 +1,136 @@
+//
+// SecurityDeclaration.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System;
+	using System.Collections;
+	using System.Security;
+
+	internal sealed class SecurityDeclaration : IRequireResolving, IAnnotationProvider, IReflectionVisitable {
+
+		SecurityAction m_action;
+		SecurityDeclarationReader m_reader;
+		IDictionary m_annotations;
+
+#if !CF_1_0 && !CF_2_0
+		PermissionSet m_permSet;
+#endif
+
+		bool m_resolved;
+		byte [] m_blob;
+
+		public SecurityAction Action {
+			get { return m_action; }
+			set { m_action = value; }
+		}
+
+#if !CF_1_0 && !CF_2_0
+		public PermissionSet PermissionSet {
+			get { return m_permSet; }
+			set { m_permSet = value; }
+		}
+#endif
+
+		public bool Resolved {
+			get { return m_resolved; }
+			set { m_resolved = value; }
+		}
+
+		public byte [] Blob {
+			get { return m_blob; }
+			set { m_blob = value; }
+		}
+
+		IDictionary IAnnotationProvider.Annotations {
+			get {
+				if (m_annotations == null)
+					m_annotations = new Hashtable ();
+				return m_annotations;
+			}
+		}
+
+		public SecurityDeclaration (SecurityAction action)
+		{
+			m_action = action;
+		}
+
+		internal SecurityDeclaration (SecurityAction action, SecurityDeclarationReader reader)
+		{
+			m_action = action;
+			m_reader = reader;
+		}
+
+		public SecurityDeclaration Clone ()
+		{
+			return Clone (this);
+		}
+
+		internal static SecurityDeclaration Clone (SecurityDeclaration sec)
+		{
+			SecurityDeclaration sd = new SecurityDeclaration (sec.Action);
+			if (!sec.Resolved) {
+				sd.Resolved = false;
+				sd.Blob = sec.Blob;
+				return sd;
+			}
+
+#if !CF_1_0 && !CF_2_0
+            sd.PermissionSet = sec.PermissionSet.Copy ();
+#endif
+			return sd;
+		}
+
+		public bool Resolve ()
+		{
+			if (m_resolved)
+				return true;
+
+			if (m_reader == null)
+				return false;
+
+			SecurityDeclaration clone = m_reader.FromByteArray (m_action, m_blob, true);
+			if (!clone.Resolved)
+				return false;
+
+			m_action = clone.Action;
+#if !CF_1_0 && !CF_2_0
+			m_permSet = clone.PermissionSet.Copy ();
+#endif
+			m_resolved = true;
+
+			return true;
+		}
+
+		public void Accept (IReflectionVisitor visitor)
+		{
+			visitor.VisitSecurityDeclaration (this);
+		}
+	}
+}
+
diff --git a/mcs/tools/cil-strip/Mono.Cecil/SecurityDeclarationCollection.cs b/mcs/tools/cil-strip/Mono.Cecil/SecurityDeclarationCollection.cs
new file mode 100644
index 0000000..e5565e7
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/SecurityDeclarationCollection.cs
@@ -0,0 +1,157 @@
+//
+// SecurityDeclarationCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System;
+	using System.Collections;
+
+	internal sealed class SecurityDeclarationCollection : IReflectionVisitable, IEnumerable {
+
+		IDictionary m_items;
+		IHasSecurity m_container;
+
+		public SecurityDeclaration this [int index] {
+			get { return m_items [index] as SecurityDeclaration; }
+			set { m_items [index] = value; }
+		}
+
+		public SecurityDeclaration this [SecurityAction action] {
+			get { return m_items [action] as SecurityDeclaration; }
+			set { m_items [action] = value; }
+		}
+
+		public IHasSecurity Container {
+			get { return m_container; }
+		}
+
+		public int Count {
+			get { return m_items.Count; }
+		}
+
+		public bool IsSynchronized {
+			get { return false; }
+		}
+
+		public object SyncRoot {
+			get { return this; }
+		}
+
+		public SecurityDeclarationCollection (IHasSecurity container)
+		{
+			m_container = container;
+			m_items = new Hashtable ();
+		}
+
+		public void Add (SecurityDeclaration value)
+		{
+			if (value == null)
+				throw new ArgumentNullException ("value");
+
+			// Each action can only be added once so...
+			SecurityDeclaration current = (SecurityDeclaration) m_items[value.Action];
+			if (current != null) {
+				// ... further additions are transformed into unions
+#if !CF_1_0 && !CF_2_0
+                current.PermissionSet = current.PermissionSet.Union (value.PermissionSet);
+#endif
+			} else {
+				m_items.Add (value.Action, value);
+				SetHasSecurity (true);
+			}
+		}
+
+		public void Clear ()
+		{
+			m_items.Clear ();
+			SetHasSecurity (false);
+		}
+
+		public bool Contains (SecurityAction action)
+		{
+			return (m_items [action] != null);
+		}
+
+		public bool Contains (SecurityDeclaration value)
+		{
+			if (value == null)
+				return (m_items.Count == 0);
+
+			SecurityDeclaration item = (SecurityDeclaration) m_items[value.Action];
+			if (item == null)
+				return false;
+
+#if !CF_1_0 && !CF_2_0
+			return value.PermissionSet.IsSubsetOf (item.PermissionSet);
+#else
+            // XXX For CF, this concept does not exist--so always be true
+            return true;
+#endif
+		}
+
+		public void Remove (SecurityAction action)
+		{
+			m_items.Remove (action);
+			SetHasSecurity (this.Count > 0);
+		}
+
+		public void CopyTo (Array ary, int index)
+		{
+			m_items.Values.CopyTo (ary, index);
+		}
+
+		public IEnumerator GetEnumerator ()
+		{
+			return m_items.Values.GetEnumerator ();
+		}
+
+		public void Accept (IReflectionVisitor visitor)
+		{
+			visitor.VisitSecurityDeclarationCollection (this);
+		}
+
+		private void SetHasSecurity (bool value)
+		{
+			TypeDefinition td = (m_container as TypeDefinition);
+			if (td != null) {
+				if (value)
+					td.Attributes |= TypeAttributes.HasSecurity;
+				else
+					td.Attributes &= ~TypeAttributes.HasSecurity;
+				return;
+			}
+			MethodDefinition md = (m_container as MethodDefinition);
+			if (md != null) {
+				if (value)
+					md.Attributes |= MethodAttributes.HasSecurity;
+				else
+					md.Attributes &= ~MethodAttributes.HasSecurity;
+			}
+		}
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/SecurityDeclarationReader.cs b/mcs/tools/cil-strip/Mono.Cecil/SecurityDeclarationReader.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil/SecurityDeclarationReader.cs
rename to mcs/tools/cil-strip/Mono.Cecil/SecurityDeclarationReader.cs
diff --git a/mcs/tools/cil-strip/Mono.Cecil/SentinelType.cs b/mcs/tools/cil-strip/Mono.Cecil/SentinelType.cs
new file mode 100644
index 0000000..9509089
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/SentinelType.cs
@@ -0,0 +1,37 @@
+//
+// SentinelType.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2007 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	internal sealed class SentinelType : TypeSpecification {
+
+		public SentinelType (TypeReference elementType) : base (elementType)
+		{
+		}
+	}
+}
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/StructureReader.cs b/mcs/tools/cil-strip/Mono.Cecil/StructureReader.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil/StructureReader.cs
rename to mcs/tools/cil-strip/Mono.Cecil/StructureReader.cs
diff --git a/mcs/class/Mono.Cecil/Mono.Cecil/StructureWriter.cs b/mcs/tools/cil-strip/Mono.Cecil/StructureWriter.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Cecil/StructureWriter.cs
rename to mcs/tools/cil-strip/Mono.Cecil/StructureWriter.cs
diff --git a/mcs/tools/cil-strip/Mono.Cecil/TableComparers.cs b/mcs/tools/cil-strip/Mono.Cecil/TableComparers.cs
new file mode 100644
index 0000000..48943b9
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/TableComparers.cs
@@ -0,0 +1,276 @@
+//
+// TableComparers.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System;
+	using System.Collections;
+
+	using Mono.Cecil.Metadata;
+
+	sealed class TableComparers {
+
+		internal sealed class TypeDef : IComparer {
+
+			public static readonly TypeDef Instance = new TypeDef ();
+
+			public int Compare (object x, object y)
+			{
+				TypeDefinition a = x as TypeDefinition;
+				TypeDefinition b = y as TypeDefinition;
+
+				if (a == null || b == null)
+					throw new ReflectionException ("TypeDefComparer can only compare TypeDefinition");
+
+				if (a.Name == Constants.ModuleType && b.Name == Constants.ModuleType)
+					return 0;
+				else if (a.Name == Constants.ModuleType)
+					return -1;
+				else if (b.Name == Constants.ModuleType)
+					return 1;
+
+				return Comparer.Default.Compare (a.FullName, b.FullName);
+			}
+		}
+
+		internal sealed class TypeRef : IComparer {
+
+			public static readonly TypeRef Instance = new TypeRef ();
+
+			public int Compare (object x, object y)
+			{
+				TypeReference a = x as TypeReference;
+				TypeReference b = y as TypeReference;
+
+				if (a == null || b == null)
+					throw new ReflectionException ("TypeRefComparer can only compare TypeReference");
+
+				if (b.DeclaringType == a)
+					return -1;
+				else if (a.DeclaringType == b)
+					return 1;
+
+				return Comparer.Default.Compare (a.FullName, b.FullName);
+			}
+		}
+
+		internal sealed class NestedClass : IComparer {
+
+			public static readonly NestedClass Instance = new NestedClass ();
+
+			public int Compare (object x, object y)
+			{
+				NestedClassRow a = x as NestedClassRow;
+				NestedClassRow b = y as NestedClassRow;
+
+				return Comparer.Default.Compare (a.NestedClass, b.NestedClass);
+			}
+		}
+
+		internal sealed class Constant : IComparer {
+
+			public static readonly Constant Instance = new Constant ();
+
+			public int Compare (object x, object y)
+			{
+				ConstantRow a = x as ConstantRow;
+				ConstantRow b = y as ConstantRow;
+
+				return Comparer.Default.Compare (
+					Utilities.CompressMetadataToken (CodedIndex.HasConstant, a.Parent),
+					Utilities.CompressMetadataToken (CodedIndex.HasConstant, b.Parent));
+			}
+
+		}
+
+		internal sealed class InterfaceImpl : IComparer {
+
+			public static readonly InterfaceImpl Instance = new InterfaceImpl ();
+
+			public int Compare (object x, object y)
+			{
+				InterfaceImplRow a = x as InterfaceImplRow;
+				InterfaceImplRow b = y as InterfaceImplRow;
+
+				int klass = Comparer.Default.Compare (a.Class, b.Class);
+
+				if (klass == 0)
+					return Comparer.Default.Compare (
+						Utilities.CompressMetadataToken (CodedIndex.TypeDefOrRef, a.Interface),
+						Utilities.CompressMetadataToken (CodedIndex.TypeDefOrRef, b.Interface));
+
+				return klass;
+			}
+		}
+
+		internal sealed class MethodSem : IComparer {
+
+			public static readonly MethodSem Instance = new MethodSem ();
+
+			public int Compare (object x, object y)
+			{
+				MethodSemanticsRow a = x as MethodSemanticsRow;
+				MethodSemanticsRow b = y as MethodSemanticsRow;
+
+				return Comparer.Default.Compare (
+					Utilities.CompressMetadataToken (CodedIndex.HasSemantics, a.Association),
+					Utilities.CompressMetadataToken (CodedIndex.HasSemantics, b.Association));
+			}
+		}
+
+		internal sealed class CustomAttribute : IComparer {
+
+			public static readonly CustomAttribute Instance = new CustomAttribute ();
+
+			public int Compare (object x, object y)
+			{
+				CustomAttributeRow a = x as CustomAttributeRow;
+				CustomAttributeRow b = y as CustomAttributeRow;
+
+				return Comparer.Default.Compare (
+					Utilities.CompressMetadataToken (CodedIndex.HasCustomAttribute, a.Parent),
+					Utilities.CompressMetadataToken (CodedIndex.HasCustomAttribute, b.Parent));
+			}
+		}
+
+		internal sealed class SecurityDeclaration : IComparer {
+
+			public static readonly SecurityDeclaration Instance = new SecurityDeclaration ();
+
+			public int Compare (object x, object y)
+			{
+				DeclSecurityRow a = x as DeclSecurityRow;
+				DeclSecurityRow b = y as DeclSecurityRow;
+
+				return Comparer.Default.Compare (
+					Utilities.CompressMetadataToken (CodedIndex.HasDeclSecurity, a.Parent),
+					Utilities.CompressMetadataToken (CodedIndex.HasDeclSecurity, b.Parent));
+			}
+		}
+
+		internal sealed class Override : IComparer {
+
+			public static readonly Override Instance = new Override ();
+
+			public int Compare (object x, object y)
+			{
+				MethodImplRow a = x as MethodImplRow;
+				MethodImplRow b = y as MethodImplRow;
+
+				return Comparer.Default.Compare (a.Class, b.Class);
+			}
+		}
+
+		internal sealed class PInvoke : IComparer {
+
+			public static readonly PInvoke Instance = new PInvoke ();
+
+			public int Compare (object x, object y)
+			{
+				ImplMapRow a = x as ImplMapRow;
+				ImplMapRow b = y as ImplMapRow;
+
+				return Comparer.Default.Compare (a.MemberForwarded.RID, b.MemberForwarded.RID);
+			}
+		}
+
+		internal sealed class FieldRVA : IComparer {
+
+			public static readonly FieldRVA Instance = new FieldRVA ();
+
+			public int Compare (object x, object y)
+			{
+				FieldRVARow a = x as FieldRVARow;
+				FieldRVARow b = y as FieldRVARow;
+
+				return Comparer.Default.Compare (a.Field, b.Field);
+			}
+		}
+
+		internal sealed class FieldLayout : IComparer {
+
+			public static readonly FieldLayout Instance = new FieldLayout ();
+
+			public int Compare (object x, object y)
+			{
+				FieldLayoutRow a = x as FieldLayoutRow;
+				FieldLayoutRow b = y as FieldLayoutRow;
+
+				return Comparer.Default.Compare (a.Field, b.Field);
+			}
+		}
+
+		internal sealed class FieldMarshal : IComparer {
+
+			public static readonly FieldMarshal Instance = new FieldMarshal ();
+
+			public int Compare (object x, object y)
+			{
+				FieldMarshalRow a = x as FieldMarshalRow;
+				FieldMarshalRow b = y as FieldMarshalRow;
+
+				return Comparer.Default.Compare (
+					Utilities.CompressMetadataToken (CodedIndex.HasFieldMarshal, a.Parent),
+					Utilities.CompressMetadataToken (CodedIndex.HasFieldMarshal, b.Parent));
+			}
+		}
+
+		internal sealed class TypeLayout : IComparer {
+
+			public static readonly TypeLayout Instance = new TypeLayout ();
+
+			public int Compare (object x, object y)
+			{
+				ClassLayoutRow a = x as ClassLayoutRow;
+				ClassLayoutRow b = y as ClassLayoutRow;
+
+				return Comparer.Default.Compare (a.Parent, b.Parent);
+			}
+		}
+
+		internal sealed class GenericParam : IComparer {
+
+			public static readonly GenericParam Instance = new GenericParam ();
+
+			public int Compare (object x, object y)
+			{
+				GenericParameter a = x as GenericParameter;
+				GenericParameter b = y as GenericParameter;
+
+				int token = Comparer.Default.Compare (
+					Utilities.CompressMetadataToken (CodedIndex.TypeOrMethodDef, a.Owner.MetadataToken),
+					Utilities.CompressMetadataToken (CodedIndex.TypeOrMethodDef, b.Owner.MetadataToken));
+
+				if (token == 0)
+					return Comparer.Default.Compare (a.Position, b.Position);
+
+				return token;
+			}
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/TargetRuntime.cs b/mcs/tools/cil-strip/Mono.Cecil/TargetRuntime.cs
new file mode 100644
index 0000000..52abace
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/TargetRuntime.cs
@@ -0,0 +1,37 @@
+//
+// TargetRuntime.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	internal enum TargetRuntime {
+		NET_1_0,
+		NET_1_1,
+		NET_2_0,
+		NET_4_0,
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/TypeAttributes.cs b/mcs/tools/cil-strip/Mono.Cecil/TypeAttributes.cs
new file mode 100644
index 0000000..304ecbf
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/TypeAttributes.cs
@@ -0,0 +1,80 @@
+//
+// TypeAttributes.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System;
+
+	[Flags]
+	internal enum TypeAttributes : uint {
+		// Visibility attributes
+		VisibilityMask		= 0x00000007,	// Use this mask to retrieve visibility information
+		NotPublic			= 0x00000000,	// Class has no public scope
+		Public				= 0x00000001,	// Class has public scope
+		NestedPublic		= 0x00000002,	// Class is nested with public visibility
+		NestedPrivate		= 0x00000003,	// Class is nested with private visibility
+		NestedFamily		= 0x00000004,	// Class is nested with family visibility
+		NestedAssembly		= 0x00000005,	// Class is nested with assembly visibility
+		NestedFamANDAssem	= 0x00000006,	// Class is nested with family and assembly visibility
+		NestedFamORAssem	= 0x00000007,	// Class is nested with family or assembly visibility
+
+		// Class layout attributes
+		LayoutMask			= 0x00000018,	// Use this mask to retrieve class layout information
+		AutoLayout			= 0x00000000,	// Class fields are auto-laid out
+		SequentialLayout	= 0x00000008,	// Class fields are laid out sequentially
+		ExplicitLayout		= 0x00000010,	// Layout is supplied explicitly
+
+		// Class semantics attributes
+		ClassSemanticMask	= 0x00000020,	// Use this mask to retrieve class semantics information
+		Class				= 0x00000000,	// Type is a class
+		Interface			= 0x00000020,	// Type is an interface
+
+		// Special semantics in addition to class semantics
+		Abstract			= 0x00000080,	// Class is abstract
+		Sealed				= 0x00000100,	// Class cannot be extended
+		SpecialName			= 0x00000400,	// Class name is special
+
+		// Implementation attributes
+		Import				= 0x00001000,	// Class/Interface is imported
+		Serializable		= 0x00002000,	// Class is serializable
+
+		// String formatting attributes
+		StringFormatMask	= 0x00030000,	// Use this mask to retrieve string information for native interop
+		AnsiClass			= 0x00000000,	// LPSTR is interpreted as ANSI
+		UnicodeClass		= 0x00010000,	// LPSTR is interpreted as Unicode
+		AutoClass			= 0x00020000,	// LPSTR is interpreted automatically
+
+		// Class initialization attributes
+		BeforeFieldInit		= 0x00100000,	// Initialize the class before first static field access
+
+		// Additional flags
+		RTSpecialName		= 0x00000800,	// CLI provides 'special' behavior, depending upon the name of the Type
+		HasSecurity			= 0x00040000,	// Type has security associate with it
+		Forwarder			= 0x00200000,   // Exported type is a type forwarder
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/TypeDefinition.cs b/mcs/tools/cil-strip/Mono.Cecil/TypeDefinition.cs
new file mode 100644
index 0000000..5731b7d
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/TypeDefinition.cs
@@ -0,0 +1,562 @@
+//
+// TypeDefinition.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	internal sealed class TypeDefinition : TypeReference, IMemberDefinition, IHasSecurity {
+
+		TypeAttributes m_attributes;
+		TypeReference m_baseType;
+
+		bool m_hasInfo;
+		ushort m_packingSize;
+		uint m_classSize;
+
+		InterfaceCollection m_interfaces;
+		NestedTypeCollection m_nestedTypes;
+		MethodDefinitionCollection m_methods;
+		ConstructorCollection m_ctors;
+		FieldDefinitionCollection m_fields;
+		EventDefinitionCollection m_events;
+		PropertyDefinitionCollection m_properties;
+		SecurityDeclarationCollection m_secDecls;
+
+		public TypeAttributes Attributes {
+			get { return m_attributes; }
+			set { m_attributes = value; }
+		}
+
+		public TypeReference BaseType {
+			get { return m_baseType; }
+			set { m_baseType = value; }
+		}
+
+		public bool HasLayoutInfo {
+			get { return m_hasInfo; }
+		}
+
+		public ushort PackingSize {
+			get { return m_packingSize; }
+			set {
+				m_hasInfo = true;
+				m_packingSize = value;
+			}
+		}
+
+		public uint ClassSize {
+			get { return m_classSize; }
+			set {
+				m_hasInfo = true;
+				m_classSize = value;
+			}
+		}
+
+		public bool HasInterfaces {
+			get { return (m_interfaces == null) ? false : (m_interfaces.Count > 0); }
+		}
+
+		public InterfaceCollection Interfaces {
+			get {
+				if (m_interfaces == null)
+					m_interfaces = new InterfaceCollection (this);
+
+				return m_interfaces;
+			}
+		}
+
+		public bool HasNestedTypes {
+			get { return (m_nestedTypes == null) ? false : (m_nestedTypes.Count > 0); }
+		}
+
+		public NestedTypeCollection NestedTypes {
+			get {
+				if (m_nestedTypes == null)
+					m_nestedTypes = new NestedTypeCollection (this);
+
+				return m_nestedTypes;
+			}
+		}
+
+		public bool HasMethods {
+			get { return (m_methods == null) ? false : (m_methods.Count > 0); }
+		}
+
+		public MethodDefinitionCollection Methods {
+			get {
+				if (m_methods == null)
+					m_methods = new MethodDefinitionCollection (this);
+
+				return m_methods;
+			}
+		}
+
+		public bool HasConstructors {
+			get { return (m_ctors == null) ? false : (m_ctors.Count > 0); }
+		}
+
+		public ConstructorCollection Constructors {
+			get {
+				if (m_ctors == null)
+					m_ctors = new ConstructorCollection (this);
+
+				return m_ctors;
+			}
+		}
+
+		public bool HasFields {
+			get { return (m_fields == null) ? false : (m_fields.Count > 0); }
+		}
+
+		public FieldDefinitionCollection Fields {
+			get {
+				if (m_fields == null)
+					m_fields = new FieldDefinitionCollection (this);
+
+				return m_fields;
+			}
+		}
+
+		public bool HasEvents {
+			get { return (m_events == null) ? false : (m_events.Count > 0); }
+		}
+
+		public EventDefinitionCollection Events {
+			get {
+				if (m_events == null)
+					m_events = new EventDefinitionCollection (this);
+
+				return m_events;
+			}
+		}
+
+		public bool HasProperties {
+			get { return (m_properties == null) ? false : (m_properties.Count > 0); }
+		}
+
+		public PropertyDefinitionCollection Properties {
+			get {
+				if (m_properties == null)
+					m_properties = new PropertyDefinitionCollection (this);
+
+				return m_properties;
+			}
+		}
+
+		public bool HasSecurityDeclarations {
+			get { return (m_secDecls == null) ? false : (m_secDecls.Count > 0); }
+		}
+
+		public SecurityDeclarationCollection SecurityDeclarations {
+			get {
+				if (m_secDecls == null)
+					m_secDecls = new SecurityDeclarationCollection (this);
+
+				return m_secDecls;
+			}
+		}
+
+		#region TypeAttributes
+
+		public bool IsNotPublic {
+			get { return (m_attributes & TypeAttributes.VisibilityMask) == TypeAttributes.NotPublic; }
+			set {
+				if (value) {
+					m_attributes &= ~TypeAttributes.VisibilityMask;
+					m_attributes |= TypeAttributes.NotPublic;
+				} else
+					m_attributes &= ~(TypeAttributes.VisibilityMask & TypeAttributes.NotPublic);
+			}
+		}
+
+		public bool IsPublic {
+			get { return (m_attributes & TypeAttributes.VisibilityMask) == TypeAttributes.Public; }
+			set {
+				if (value) {
+					m_attributes &= ~TypeAttributes.VisibilityMask;
+					m_attributes |= TypeAttributes.Public;
+				} else
+					m_attributes &= ~(TypeAttributes.VisibilityMask & TypeAttributes.Public);
+			}
+		}
+
+		public bool IsNestedPublic {
+			get { return (m_attributes & TypeAttributes.VisibilityMask) == TypeAttributes.NestedPublic; }
+			set {
+				if (value) {
+					m_attributes &= ~TypeAttributes.VisibilityMask;
+					m_attributes |= TypeAttributes.NestedPublic;
+				} else
+					m_attributes &= ~(TypeAttributes.VisibilityMask & TypeAttributes.NestedPublic);
+			}
+		}
+
+		public bool IsNestedPrivate {
+			get { return (m_attributes & TypeAttributes.VisibilityMask) == TypeAttributes.NestedPrivate; }
+			set {
+				if (value) {
+					m_attributes &= ~TypeAttributes.VisibilityMask;
+					m_attributes |= TypeAttributes.NestedPrivate;
+				} else
+					m_attributes &= ~(TypeAttributes.VisibilityMask & TypeAttributes.NestedPrivate);
+			}
+		}
+
+		public bool IsNestedFamily {
+			get { return (m_attributes & TypeAttributes.VisibilityMask) == TypeAttributes.NestedFamily; }
+			set {
+				if (value) {
+					m_attributes &= ~TypeAttributes.VisibilityMask;
+					m_attributes |= TypeAttributes.NestedFamily;
+				} else
+					m_attributes &= ~(TypeAttributes.VisibilityMask & TypeAttributes.NestedFamily);
+			}
+		}
+
+		public bool IsNestedAssembly {
+			get { return (m_attributes & TypeAttributes.VisibilityMask) == TypeAttributes.NestedAssembly; }
+			set {
+				if (value) {
+					m_attributes &= ~TypeAttributes.VisibilityMask;
+					m_attributes |= TypeAttributes.NestedAssembly;
+				} else
+					m_attributes &= ~(TypeAttributes.VisibilityMask & TypeAttributes.NestedAssembly);
+			}
+		}
+
+		public bool IsNestedFamilyAndAssembly {
+			get { return (m_attributes & TypeAttributes.VisibilityMask) == TypeAttributes.NestedFamANDAssem; }
+			set {
+				if (value) {
+					m_attributes &= ~TypeAttributes.VisibilityMask;
+					m_attributes |= TypeAttributes.NestedFamANDAssem;
+				} else
+					m_attributes &= ~(TypeAttributes.VisibilityMask & TypeAttributes.NestedFamANDAssem);
+			}
+		}
+
+		public bool IsNestedFamilyOrAssembly {
+			get { return (m_attributes & TypeAttributes.VisibilityMask) == TypeAttributes.NestedFamORAssem; }
+			set {
+				if (value) {
+					m_attributes &= ~TypeAttributes.VisibilityMask;
+					m_attributes |= TypeAttributes.NestedFamORAssem;
+				} else
+					m_attributes &= ~(TypeAttributes.VisibilityMask & TypeAttributes.NestedFamORAssem);
+			}
+		}
+
+		public bool IsAutoLayout {
+			get { return (m_attributes & TypeAttributes.LayoutMask) == TypeAttributes.AutoLayout; }
+			set {
+				if (value) {
+					m_attributes &= ~TypeAttributes.LayoutMask;
+					m_attributes |= TypeAttributes.AutoLayout;
+				} else
+					m_attributes &= ~(TypeAttributes.LayoutMask & TypeAttributes.AutoLayout);
+			}
+		}
+
+		public bool IsSequentialLayout {
+			get { return (m_attributes & TypeAttributes.LayoutMask) == TypeAttributes.SequentialLayout; }
+			set {
+				if (value) {
+					m_attributes &= ~TypeAttributes.LayoutMask;
+					m_attributes |= TypeAttributes.SequentialLayout;
+				} else
+					m_attributes &= ~(TypeAttributes.LayoutMask & TypeAttributes.SequentialLayout);
+			}
+		}
+
+		public bool IsExplicitLayout {
+			get { return (m_attributes & TypeAttributes.LayoutMask) == TypeAttributes.ExplicitLayout; }
+			set {
+				if (value) {
+					m_attributes &= ~TypeAttributes.LayoutMask;
+					m_attributes |= TypeAttributes.ExplicitLayout;
+				} else
+					m_attributes &= ~(TypeAttributes.LayoutMask & TypeAttributes.ExplicitLayout);
+			}
+		}
+
+		public bool IsClass {
+			get { return (m_attributes & TypeAttributes.ClassSemanticMask) == TypeAttributes.Class; }
+			set {
+				if (value) {
+					m_attributes &= ~TypeAttributes.ClassSemanticMask;
+					m_attributes |= TypeAttributes.Class;
+				} else
+					m_attributes &= ~(TypeAttributes.ClassSemanticMask & TypeAttributes.Class);
+			}
+		}
+
+		public bool IsInterface {
+			get { return (m_attributes & TypeAttributes.ClassSemanticMask) == TypeAttributes.Interface; }
+			set {
+				if (value) {
+					m_attributes &= ~TypeAttributes.ClassSemanticMask;
+					m_attributes |= TypeAttributes.Interface;
+				} else
+					m_attributes &= ~(TypeAttributes.ClassSemanticMask & TypeAttributes.Interface);
+			}
+		}
+
+		public bool IsAbstract {
+			get { return (m_attributes & TypeAttributes.Abstract) != 0; }
+			set {
+				if (value)
+					m_attributes |= TypeAttributes.Abstract;
+				else
+					m_attributes &= ~TypeAttributes.Abstract;
+			}
+		}
+
+		public bool IsSealed {
+			get { return (m_attributes & TypeAttributes.Sealed) != 0; }
+			set {
+				if (value)
+					m_attributes |= TypeAttributes.Sealed;
+				else
+					m_attributes &= ~TypeAttributes.Sealed;
+			}
+		}
+
+		public bool IsSpecialName {
+			get { return (m_attributes & TypeAttributes.SpecialName) != 0; }
+			set {
+				if (value)
+					m_attributes |= TypeAttributes.SpecialName;
+				else
+					m_attributes &= ~TypeAttributes.SpecialName;
+			}
+		}
+
+		public bool IsImport {
+			get { return (m_attributes & TypeAttributes.Import) != 0; }
+			set {
+				if (value)
+					m_attributes |= TypeAttributes.Import;
+				else
+					m_attributes &= ~TypeAttributes.Import;
+			}
+		}
+
+		public bool IsSerializable {
+			get { return (m_attributes & TypeAttributes.Serializable) != 0; }
+			set {
+				if (value)
+					m_attributes |= TypeAttributes.Serializable;
+				else
+					m_attributes &= ~TypeAttributes.Serializable;
+			}
+		}
+
+		public bool IsAnsiClass {
+			get { return (m_attributes & TypeAttributes.StringFormatMask) == TypeAttributes.AnsiClass; }
+			set {
+				if (value) {
+					m_attributes &= ~TypeAttributes.StringFormatMask;
+					m_attributes |= TypeAttributes.AnsiClass;
+				} else
+					m_attributes &= ~(TypeAttributes.StringFormatMask & TypeAttributes.AnsiClass);
+			}
+		}
+
+		public bool IsUnicodeClass {
+			get { return (m_attributes & TypeAttributes.StringFormatMask) == TypeAttributes.UnicodeClass; }
+			set {
+				if (value) {
+					m_attributes &= ~TypeAttributes.StringFormatMask;
+					m_attributes |= TypeAttributes.UnicodeClass;
+				} else
+					m_attributes &= ~(TypeAttributes.StringFormatMask & TypeAttributes.UnicodeClass);
+			}
+		}
+
+		public bool IsAutoClass {
+			get { return (m_attributes & TypeAttributes.StringFormatMask) == TypeAttributes.AutoClass; }
+			set {
+				if (value) {
+					m_attributes &= ~TypeAttributes.StringFormatMask;
+					m_attributes |= TypeAttributes.AutoClass;
+				} else
+					m_attributes &= ~(TypeAttributes.StringFormatMask & TypeAttributes.AutoClass);
+			}
+		}
+
+		public bool IsBeforeFieldInit {
+			get { return (m_attributes & TypeAttributes.BeforeFieldInit) != 0; }
+			set {
+				if (value)
+					m_attributes |= TypeAttributes.BeforeFieldInit;
+				else
+					m_attributes &= ~TypeAttributes.BeforeFieldInit;
+			}
+		}
+
+		public bool IsRuntimeSpecialName {
+			get { return (m_attributes & TypeAttributes.RTSpecialName) != 0; }
+			set {
+				if (value)
+					m_attributes |= TypeAttributes.RTSpecialName;
+				else
+					m_attributes &= ~TypeAttributes.RTSpecialName;
+			}
+		}
+
+		public bool HasSecurity {
+			get { return (m_attributes & TypeAttributes.HasSecurity) != 0; }
+			set {
+				if (value)
+					m_attributes |= TypeAttributes.HasSecurity;
+				else
+					m_attributes &= ~TypeAttributes.HasSecurity;
+			}
+		}
+
+		#endregion
+
+		public bool IsEnum {
+			get { return m_baseType != null && m_baseType.FullName == Constants.Enum; }
+		}
+
+		public override bool IsValueType {
+			get {
+				return m_baseType != null && ((m_baseType.FullName == Constants.Enum) ||
+					(m_baseType.FullName == Constants.ValueType && this.FullName != Constants.Enum));
+			}
+		}
+
+		public new TypeDefinition DeclaringType {
+			get { return (TypeDefinition) base.DeclaringType; }
+			set { base.DeclaringType = value; }
+		}
+
+		internal TypeDefinition (string name, string ns, TypeAttributes attrs) :
+			base (name, ns)
+		{
+			m_hasInfo = false;
+			m_attributes = attrs;
+		}
+
+		public TypeDefinition (string name, string ns,
+			TypeAttributes attributes, TypeReference baseType) :
+			this (name, ns, attributes)
+		{
+			this.BaseType = baseType;
+		}
+
+		public override TypeDefinition Resolve ()
+		{
+			return this;
+		}
+
+		public TypeDefinition Clone ()
+		{
+			return Clone (this, new ImportContext (NullReferenceImporter.Instance, this));
+		}
+
+		internal static TypeDefinition Clone (TypeDefinition type, ImportContext context)
+		{
+			TypeDefinition nt = new TypeDefinition (
+				type.Name,
+				type.Namespace,
+				type.Attributes);
+
+			TypeReference contextType = context.GenericContext.Type;
+
+			context.GenericContext.Type = nt;
+
+			GenericParameter.CloneInto (type, nt, context);
+
+			if (type.BaseType != null)
+				nt.BaseType = context.Import (type.BaseType);
+
+			if (type.HasLayoutInfo) {
+				nt.ClassSize = type.ClassSize;
+				nt.PackingSize = type.PackingSize;
+			}
+
+			if (type.HasFields) {
+				foreach (FieldDefinition field in type.Fields)
+					nt.Fields.Add (FieldDefinition.Clone (field, context));
+			}
+			if (type.HasConstructors) {
+				foreach (MethodDefinition ctor in type.Constructors)
+					nt.Constructors.Add (MethodDefinition.Clone (ctor, context));
+			}
+			if (type.HasMethods) {
+				foreach (MethodDefinition meth in type.Methods)
+					nt.Methods.Add (MethodDefinition.Clone (meth, context));
+			}
+			if (type.HasEvents) {
+				foreach (EventDefinition evt in type.Events)
+					nt.Events.Add (EventDefinition.Clone (evt, context));
+			}
+			if (type.HasProperties) {
+				foreach (PropertyDefinition prop in type.Properties)
+					nt.Properties.Add (PropertyDefinition.Clone (prop, context));
+			}
+			if (type.HasInterfaces) {
+				foreach (TypeReference intf in type.Interfaces)
+					nt.Interfaces.Add (context.Import (intf));
+			}
+			if (type.HasNestedTypes) {
+				foreach (TypeDefinition nested in type.NestedTypes)
+					nt.NestedTypes.Add (Clone (nested, context));
+			}
+			if (type.HasCustomAttributes) {
+				foreach (CustomAttribute ca in type.CustomAttributes)
+					nt.CustomAttributes.Add (CustomAttribute.Clone (ca, context));
+			}
+			if (type.HasSecurityDeclarations) {
+				foreach (SecurityDeclaration dec in type.SecurityDeclarations)
+					nt.SecurityDeclarations.Add (SecurityDeclaration.Clone (dec));
+			}
+
+			context.GenericContext.Type = contextType;
+
+			return nt;
+		}
+
+		public override void Accept (IReflectionVisitor visitor)
+		{
+			visitor.VisitTypeDefinition (this);
+
+			this.GenericParameters.Accept (visitor);
+			this.Interfaces.Accept (visitor);
+			this.Constructors.Accept (visitor);
+			this.Methods.Accept (visitor);
+			this.Fields.Accept (visitor);
+			this.Properties.Accept (visitor);
+			this.Events.Accept (visitor);
+			this.NestedTypes.Accept (visitor);
+			this.CustomAttributes.Accept (visitor);
+			this.SecurityDeclarations.Accept (visitor);
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/TypeDefinitionCollection.cs b/mcs/tools/cil-strip/Mono.Cecil/TypeDefinitionCollection.cs
new file mode 100644
index 0000000..845d117
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/TypeDefinitionCollection.cs
@@ -0,0 +1,216 @@
+//
+// TypeDefinitionCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Fri Mar 30 18:43:56 +0200 2007
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System;
+	using System.Collections;
+	using System.Collections.Specialized;
+
+	using Mono.Cecil.Cil;
+
+	using Hcp = Mono.Cecil.HashCodeProvider;
+	using Cmp = System.Collections.Comparer;
+
+	internal sealed class TypeDefinitionCollection : NameObjectCollectionBase, IList, IReflectionVisitable  {
+
+		ModuleDefinition m_container;
+
+		public TypeDefinition this [int index] {
+			get { return this.BaseGet (index) as TypeDefinition; }
+			set { this.BaseSet (index, value); }
+		}
+
+		public TypeDefinition this [string fullName] {
+			get { return this.BaseGet (fullName) as TypeDefinition; }
+			set { this.BaseSet (fullName, value); }
+		}
+
+		public ModuleDefinition Container {
+			get { return m_container; }
+		}
+
+		public bool IsSynchronized {
+			get { return false; }
+		}
+
+		public object SyncRoot {
+			get { return this; }
+		}
+
+		bool IList.IsReadOnly {
+			get { return false; }
+		}
+
+		bool IList.IsFixedSize {
+			get { return false; }
+		}
+
+		object IList.this [int index] {
+			get { return BaseGet (index); }
+			set {
+				Check (value);
+				BaseSet (index, value);
+			}
+		}
+
+		public TypeDefinitionCollection (ModuleDefinition container) :
+			base (Hcp.Instance, Cmp.Default)
+		{
+			m_container = container;
+		}
+
+		public void Add (TypeDefinition value)
+		{
+			if (value == null)
+				throw new ArgumentNullException ("value");
+
+			Attach (value);
+
+			this.BaseAdd (value.FullName, value);
+		}
+
+		public void Clear ()
+		{
+			foreach (TypeDefinition item in this)
+				Detach (item);
+
+			this.BaseClear ();
+		}
+
+		public bool Contains (TypeDefinition value)
+		{
+			return Contains (value.FullName);
+		}
+
+		public bool Contains (string fullName)
+		{
+			return this.BaseGet (fullName) != null;
+		}
+
+		public int IndexOf (TypeDefinition value)
+		{
+			string [] keys = this.BaseGetAllKeys ();
+			return Array.IndexOf (keys, value.FullName, 0, keys.Length);
+		}
+
+		public void Remove (TypeDefinition value)
+		{
+			this.BaseRemove (value.FullName);
+
+			Detach (value);
+		}
+
+		public void RemoveAt (int index)
+		{
+			TypeDefinition item = this [index];
+			Remove (item);
+
+			Detach (item);
+		}
+
+		public void CopyTo (Array ary, int index)
+		{
+			this.BaseGetAllValues ().CopyTo (ary, index);
+		}
+
+		public new IEnumerator GetEnumerator ()
+		{
+			return this.BaseGetAllValues ().GetEnumerator ();
+		}
+
+		public void Accept (IReflectionVisitor visitor)
+		{
+			visitor.VisitTypeDefinitionCollection (this);
+		}
+
+#if CF_1_0 || CF_2_0
+		internal object [] BaseGetAllValues ()
+		{
+			object [] values = new object [this.Count];
+			for (int i=0; i < values.Length; ++i) {
+				values [i] = this.BaseGet (i);
+			}
+			return values;
+		}
+#endif
+
+		void Check (object value)
+		{
+			if (!(value is TypeDefinition))
+				throw new ArgumentException ();
+		}
+
+		int IList.Add (object value)
+		{
+			Check (value);
+			Add (value as TypeDefinition);
+			return 0;
+		}
+
+		bool IList.Contains (object value)
+		{
+			Check (value);
+			return Contains (value as TypeDefinition);
+		}
+
+		int IList.IndexOf (object value)
+		{
+			throw new NotSupportedException ();
+		}
+
+		void IList.Insert (int index, object value)
+		{
+			throw new NotSupportedException ();
+		}
+
+		void IList.Remove (object value)
+		{
+			Check (value);
+			Remove (value as TypeDefinition);
+		}
+
+		void Detach (TypeReference type)
+		{
+			type.Module = null;
+		}
+
+		void Attach (TypeReference type)
+		{
+			if (type.Module != null)
+				throw new ReflectionException ("Type is already attached, clone it instead");
+
+			type.Module = m_container;
+			type.AttachToScope (m_container);
+
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/TypeReference.cs b/mcs/tools/cil-strip/Mono.Cecil/TypeReference.cs
new file mode 100644
index 0000000..5cf95d2
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/TypeReference.cs
@@ -0,0 +1,170 @@
+//
+// TypeReference.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	internal class TypeReference : MemberReference, IGenericParameterProvider, ICustomAttributeProvider {
+
+		string m_namespace;
+		bool m_fullNameDiscarded;
+		string m_fullName;
+		protected bool m_isValueType;
+		IMetadataScope m_scope;
+		ModuleDefinition m_module;
+
+		CustomAttributeCollection m_customAttrs;
+		GenericParameterCollection m_genparams;
+
+		public override string Name {
+			get { return base.Name; }
+			set {
+				base.Name = value;
+				m_fullNameDiscarded = true;
+			}
+		}
+
+		public virtual string Namespace {
+			get { return m_namespace; }
+			set {
+				m_namespace = value;
+				m_fullNameDiscarded = true;
+			}
+		}
+
+		public virtual bool IsValueType {
+			get { return m_isValueType; }
+			set { m_isValueType = value; }
+		}
+
+		public virtual ModuleDefinition Module {
+			get { return m_module; }
+			set { m_module = value; }
+		}
+
+		public bool HasCustomAttributes {
+			get { return (m_customAttrs == null) ? false : (m_customAttrs.Count > 0); }
+		}
+
+		public CustomAttributeCollection CustomAttributes {
+			get {
+				if (m_customAttrs == null)
+					m_customAttrs = new CustomAttributeCollection (this);
+
+				return m_customAttrs;
+			}
+		}
+
+		public bool HasGenericParameters {
+			get { return (m_genparams == null) ? false : (m_genparams.Count > 0); }
+		}
+
+		public GenericParameterCollection GenericParameters {
+			get {
+				if (m_genparams == null)
+					m_genparams = new GenericParameterCollection (this);
+				return m_genparams;
+			}
+		}
+
+		public virtual IMetadataScope Scope {
+			get {
+				if (this.DeclaringType != null)
+					return this.DeclaringType.Scope;
+
+				return m_scope;
+			}
+		}
+
+		public bool IsNested {
+			get { return this.DeclaringType != null; }
+		}
+
+		public virtual string FullName {
+			get {
+				if (m_fullName != null && !m_fullNameDiscarded)
+					return m_fullName;
+
+				if (this.IsNested)
+					return string.Concat (this.DeclaringType.FullName, "/", this.Name);
+
+				if (m_namespace == null || m_namespace.Length == 0)
+					return this.Name;
+
+				m_fullName = string.Concat (m_namespace, ".", this.Name);
+				m_fullNameDiscarded = false;
+				return m_fullName;
+			}
+		}
+
+		protected TypeReference (string name, string ns) : base (name)
+		{
+			m_namespace = ns;
+			m_fullNameDiscarded = false;
+		}
+
+		internal TypeReference (string name, string ns, IMetadataScope scope) : this (name, ns)
+		{
+			m_scope = scope;
+		}
+
+		public TypeReference (string name, string ns, IMetadataScope scope, bool valueType) :
+			this (name, ns, scope)
+		{
+			m_isValueType = valueType;
+		}
+
+		public virtual TypeDefinition Resolve ()
+		{
+			ModuleDefinition module = Module;
+			if (module == null)
+				return null;
+
+			return module.Resolver.Resolve (this);
+		}
+
+		public virtual TypeReference GetOriginalType ()
+		{
+			return this;
+		}
+
+		internal void AttachToScope (IMetadataScope scope)
+		{
+			m_scope = scope;
+		}
+
+		public override void Accept (IReflectionVisitor visitor)
+		{
+			visitor.VisitTypeReference (this);
+		}
+
+		public override string ToString ()
+		{
+			return this.FullName;
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/TypeReferenceCollection.cs b/mcs/tools/cil-strip/Mono.Cecil/TypeReferenceCollection.cs
new file mode 100644
index 0000000..3e484b0
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/TypeReferenceCollection.cs
@@ -0,0 +1,214 @@
+//
+// TypeReferenceCollection.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// Generated by /CodeGen/cecil-gen.rb do not edit
+// Fri Mar 30 18:43:56 +0200 2007
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System;
+	using System.Collections;
+	using System.Collections.Specialized;
+
+	using Mono.Cecil.Cil;
+
+	using Hcp = Mono.Cecil.HashCodeProvider;
+	using Cmp = System.Collections.Comparer;
+
+	internal sealed class TypeReferenceCollection : NameObjectCollectionBase, IList, IReflectionVisitable  {
+
+		ModuleDefinition m_container;
+
+		public TypeReference this [int index] {
+			get { return this.BaseGet (index) as TypeReference; }
+			set { this.BaseSet (index, value); }
+		}
+
+		public TypeReference this [string fullName] {
+			get { return this.BaseGet (fullName) as TypeReference; }
+			set { this.BaseSet (fullName, value); }
+		}
+
+		public ModuleDefinition Container {
+			get { return m_container; }
+		}
+
+		public bool IsSynchronized {
+			get { return false; }
+		}
+
+		public object SyncRoot {
+			get { return this; }
+		}
+
+		bool IList.IsReadOnly {
+			get { return false; }
+		}
+
+		bool IList.IsFixedSize {
+			get { return false; }
+		}
+
+		object IList.this [int index] {
+			get { return BaseGet (index); }
+			set {
+				Check (value);
+				BaseSet (index, value);
+			}
+		}
+
+		public TypeReferenceCollection (ModuleDefinition container) :
+			base (Hcp.Instance, Cmp.Default)
+		{
+			m_container = container;
+		}
+
+		public void Add (TypeReference value)
+		{
+			if (value == null)
+				throw new ArgumentNullException ("value");
+
+			Attach (value);
+
+			this.BaseAdd (value.FullName, value);
+		}
+
+		public void Clear ()
+		{
+			foreach (TypeReference item in this)
+				Detach (item);
+
+			this.BaseClear ();
+		}
+
+		public bool Contains (TypeReference value)
+		{
+			return Contains (value.FullName);
+		}
+
+		public bool Contains (string fullName)
+		{
+			return this.BaseGet (fullName) != null;
+		}
+
+		public int IndexOf (TypeReference value)
+		{
+			string [] keys = this.BaseGetAllKeys ();
+			return Array.IndexOf (keys, value.FullName, 0, keys.Length);
+		}
+
+		public void Remove (TypeReference value)
+		{
+			this.BaseRemove (value.FullName);
+
+			Detach (value);
+		}
+
+		public void RemoveAt (int index)
+		{
+			TypeReference item = this [index];
+			Remove (item);
+
+			Detach (item);
+		}
+
+		public void CopyTo (Array ary, int index)
+		{
+			this.BaseGetAllValues ().CopyTo (ary, index);
+		}
+
+		public new IEnumerator GetEnumerator ()
+		{
+			return this.BaseGetAllValues ().GetEnumerator ();
+		}
+
+		public void Accept (IReflectionVisitor visitor)
+		{
+			visitor.VisitTypeReferenceCollection (this);
+		}
+
+#if CF_1_0 || CF_2_0
+		internal object [] BaseGetAllValues ()
+		{
+			object [] values = new object [this.Count];
+			for (int i=0; i < values.Length; ++i) {
+				values [i] = this.BaseGet (i);
+			}
+			return values;
+		}
+#endif
+
+		void Check (object value)
+		{
+			if (!(value is TypeReference))
+				throw new ArgumentException ();
+		}
+
+		int IList.Add (object value)
+		{
+			Check (value);
+			Add (value as TypeReference);
+			return 0;
+		}
+
+		bool IList.Contains (object value)
+		{
+			Check (value);
+			return Contains (value as TypeReference);
+		}
+
+		int IList.IndexOf (object value)
+		{
+			throw new NotSupportedException ();
+		}
+
+		void IList.Insert (int index, object value)
+		{
+			throw new NotSupportedException ();
+		}
+
+		void IList.Remove (object value)
+		{
+			Check (value);
+			Remove (value as TypeReference);
+		}
+
+		void Detach (TypeReference type)
+		{
+			type.Module = null;
+		}
+
+		void Attach (TypeReference type)
+		{
+			if (type.Module != null)
+				throw new ReflectionException ("Type is already attached, clone it instead");
+
+			type.Module = m_container;
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/TypeSpecification.cs b/mcs/tools/cil-strip/Mono.Cecil/TypeSpecification.cs
new file mode 100644
index 0000000..8267c16
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/TypeSpecification.cs
@@ -0,0 +1,80 @@
+//
+// TypeSpecification.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	using System;
+
+	internal abstract class TypeSpecification : TypeReference {
+
+		private TypeReference m_elementType;
+
+		public override string Name {
+			get { return m_elementType.Name; }
+			set { throw new NotSupportedException (); }
+		}
+
+		public override string Namespace {
+			get { return m_elementType.Namespace; }
+			set { throw new NotSupportedException (); }
+		}
+
+		public override bool IsValueType {
+			get { return m_elementType.IsValueType; }
+			set { throw new InvalidOperationException (); }
+		}
+
+		public override IMetadataScope Scope {
+			get { return m_elementType.Scope; }
+		}
+
+		public override ModuleDefinition Module {
+			get { return m_elementType.Module; }
+			set { throw new InvalidOperationException (); }
+		}
+
+		public TypeReference ElementType {
+			get { return m_elementType; }
+			set { m_elementType = value; }
+		}
+
+		public override string FullName {
+			get { return m_elementType.FullName; }
+		}
+
+		internal TypeSpecification (TypeReference elementType) : base (string.Empty, string.Empty)
+		{
+			m_elementType = elementType;
+		}
+
+		public override TypeReference GetOriginalType ()
+		{
+			return m_elementType.GetOriginalType ();
+		}
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Cecil/VariantType.cs b/mcs/tools/cil-strip/Mono.Cecil/VariantType.cs
new file mode 100644
index 0000000..23aa39b
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Cecil/VariantType.cs
@@ -0,0 +1,52 @@
+//
+// VariantType.cs
+//
+// Author:
+//   Jb Evain (jbevain at gmail.com)
+//
+// (C) 2005 Jb Evain
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Mono.Cecil {
+
+	internal enum VariantType {
+		I2 = 2,
+		I4 = 3,
+		R4 = 4,
+		R8 = 5,
+		CY = 6,
+		DATE = 7,
+		BSTR = 8,
+		DISPATCH = 9,
+		ERROR = 10,
+		BOOL = 11,
+		VARIANT = 12,
+		UNKNOWN = 13,
+		DECIMAL = 14,
+		I1 = 16,
+		UI1 = 17,
+		UI2 = 18,
+		UI4 = 19,
+		INT = 22,
+		UINT = 23
+	}
+}
diff --git a/mcs/tools/cil-strip/Mono.Xml/ChangeLog b/mcs/tools/cil-strip/Mono.Xml/ChangeLog
new file mode 100644
index 0000000..d35c7fb
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Xml/ChangeLog
@@ -0,0 +1,32 @@
+2010-11-21  Jb Evain  <jbevain at gmail.com>
+
+	internalize private cecil
+
+2005-06-15  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* SmallXmlParser.cs, SecurityParser.cs : they can be CLSCompliant now.
+
+2005-05-12  Atsushi Enomoto  <atsushi at ximian.com>
+
+	* SmallXmlParser.cs,
+	  SecurityParser.cs : Use new SmallXmlParser.cs instead of MiniParser.
+
+2004-09-16  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* MiniParser.cs: Fixed warning (l4) for unused variables. Removed
+	duplicate (and identical) license.
+
+2004-05-14  Marek Safar  <marek.safar at seznam.cz>
+
+	* MiniParser.cs, SecurityParser.cs: [CLSCompliant (false)]
+	only for public mode.
+
+2003-07-05  Sebastien Pouliot  <spouliot at videotron.ca>
+
+	* SecurityParser.cs: Parse an XML string and convert it to a
+	SecurityElement object.
+
+2003-02-08  Sebastien Pouliot  <spouliot at videotron.ca>
+
+	* MiniParser.cs: Renamed namespace to match new location.
+
diff --git a/mcs/class/Mono.Cecil/Mono.Xml/ChangeLog b/mcs/tools/cil-strip/Mono.Xml/ChangeLog.old
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Xml/ChangeLog
rename to mcs/tools/cil-strip/Mono.Xml/ChangeLog.old
diff --git a/mcs/class/Mono.Cecil/Mono.Xml/SecurityParser.cs b/mcs/tools/cil-strip/Mono.Xml/SecurityParser.cs
similarity index 100%
rename from mcs/class/Mono.Cecil/Mono.Xml/SecurityParser.cs
rename to mcs/tools/cil-strip/Mono.Xml/SecurityParser.cs
diff --git a/mcs/tools/cil-strip/Mono.Xml/SmallXmlParser.cs b/mcs/tools/cil-strip/Mono.Xml/SmallXmlParser.cs
new file mode 100644
index 0000000..c57b2a2
--- /dev/null
+++ b/mcs/tools/cil-strip/Mono.Xml/SmallXmlParser.cs
@@ -0,0 +1,637 @@
+//
+// SmallXmlParser.cs
+//
+// Author:
+//	Atsushi Enomoto  <atsushi at ximian.com>
+//
+// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+//
+// small xml parser that is mostly compatible with
+//
+
+using System;
+using System.Collections;
+using System.Globalization;
+using System.IO;
+using System.Text;
+
+namespace Mono.Xml
+{
+	internal sealed class DefaultHandler : SmallXmlParser.IContentHandler
+	{
+		public void OnStartParsing (SmallXmlParser parser)
+		{
+		}
+
+		public void OnEndParsing (SmallXmlParser parser)
+		{
+		}
+
+		public void OnStartElement (string name, SmallXmlParser.IAttrList attrs)
+		{
+		}
+
+		public void OnEndElement (string name)
+		{
+		}
+
+		public void OnChars (string s)
+		{
+		}
+
+		public void OnIgnorableWhitespace (string s)
+		{
+		}
+
+		public void OnProcessingInstruction (string name, string text)
+		{
+		}
+	}
+
+	internal class SmallXmlParser
+	{
+		internal interface IContentHandler
+		{
+			void OnStartParsing (SmallXmlParser parser);
+			void OnEndParsing (SmallXmlParser parser);
+			void OnStartElement (string name, IAttrList attrs);
+			void OnEndElement (string name);
+			void OnProcessingInstruction (string name, string text);
+			void OnChars (string text);
+			void OnIgnorableWhitespace (string text);
+		}
+
+		internal interface IAttrList
+		{
+			int Length { get; }
+			bool IsEmpty { get; }
+			string GetName (int i);
+			string GetValue (int i);
+			string GetValue (string name);
+			string [] Names { get; }
+			string [] Values { get; }
+		}
+
+		sealed class AttrListImpl : IAttrList
+		{
+			public int Length {
+				get { return attrNames.Count; }
+			}
+			public bool IsEmpty {
+				get { return attrNames.Count == 0; }
+			}
+			public string GetName (int i)
+			{
+				return (string) attrNames [i];
+			}
+			public string GetValue (int i)
+			{
+				return (string) attrValues [i];
+			}
+			public string GetValue (string name)
+			{
+				for (int i = 0; i < attrNames.Count; i++)
+					if ((string) attrNames [i] == name)
+						return (string) attrValues [i];
+				return null;
+			}
+			public string [] Names {
+				get { return (string []) attrNames.ToArray (typeof (string)); }
+			}
+			public string [] Values {
+				get { return (string []) attrValues.ToArray (typeof (string)); }
+			}
+
+			ArrayList attrNames = new ArrayList ();
+			ArrayList attrValues = new ArrayList ();
+
+			internal void Clear ()
+			{
+				attrNames.Clear ();
+				attrValues.Clear ();
+			}
+
+			internal void Add (string name, string value)
+			{
+				attrNames.Add (name);
+				attrValues.Add (value);
+			}
+		}
+
+		IContentHandler handler;
+		TextReader reader;
+		Stack elementNames = new Stack ();
+		Stack xmlSpaces = new Stack ();
+		string xmlSpace;
+		StringBuilder buffer = new StringBuilder (200);
+		char [] nameBuffer = new char [30];
+		bool isWhitespace;
+
+		AttrListImpl attributes = new AttrListImpl ();
+		int line = 1, column;
+		bool resetColumn;
+
+		public SmallXmlParser ()
+		{
+		}
+
+		private Exception Error (string msg)
+		{
+			return new SmallXmlParserException (msg, line, column);
+		}
+
+		private Exception UnexpectedEndError ()
+		{
+			string [] arr = new string [elementNames.Count];
+			// COMPACT FRAMEWORK NOTE: CopyTo is not visible through the Stack class
+			(elementNames as ICollection).CopyTo (arr, 0);
+			return Error (String.Format (
+							  "Unexpected end of stream. Element stack content is {0}", String.Join (",", arr)));
+		}
+
+
+		private bool IsNameChar (char c, bool start)
+		{
+			switch (c) {
+			case ':':
+			case '_':
+				return true;
+			case '-':
+			case '.':
+				return !start;
+			}
+			if (c > 0x100) { // optional condition for optimization
+				switch (c) {
+				case '\u0559':
+				case '\u06E5':
+				case '\u06E6':
+					return true;
+				}
+				if ('\u02BB' <= c && c <= '\u02C1')
+					return true;
+			}
+			switch (Char.GetUnicodeCategory (c)) {
+			case UnicodeCategory.LowercaseLetter:
+			case UnicodeCategory.UppercaseLetter:
+			case UnicodeCategory.OtherLetter:
+			case UnicodeCategory.TitlecaseLetter:
+			case UnicodeCategory.LetterNumber:
+				return true;
+			case UnicodeCategory.SpacingCombiningMark:
+			case UnicodeCategory.EnclosingMark:
+			case UnicodeCategory.NonSpacingMark:
+			case UnicodeCategory.ModifierLetter:
+			case UnicodeCategory.DecimalDigitNumber:
+				return !start;
+			default:
+				return false;
+			}
+		}
+
+		private bool IsWhitespace (int c)
+		{
+			switch (c) {
+			case ' ':
+			case '\r':
+			case '\t':
+			case '\n':
+				return true;
+			default:
+				return false;
+			}
+		}
+
+
+		public void SkipWhitespaces ()
+		{
+			SkipWhitespaces (false);
+		}
+
+		private void HandleWhitespaces ()
+		{
+			while (IsWhitespace (Peek ()))
+				buffer.Append ((char) Read ());
+			if (Peek () != '<' && Peek () >= 0)
+				isWhitespace = false;
+		}
+
+		public void SkipWhitespaces (bool expected)
+		{
+			while (true) {
+				switch (Peek ()) {
+				case ' ':
+				case '\r':
+				case '\t':
+				case '\n':
+					Read ();
+					if (expected)
+						expected = false;
+					continue;
+				}
+				if (expected)
+					throw Error ("Whitespace is expected.");
+				return;
+			}
+		}
+
+
+		private int Peek ()
+		{
+			return reader.Peek ();
+		}
+
+		private int Read ()
+		{
+			int i = reader.Read ();
+			if (i == '\n')
+				resetColumn = true;
+			if (resetColumn) {
+				line++;
+				resetColumn = false;
+				column = 1;
+			}
+			else
+				column++;
+			return i;
+		}
+
+		public void Expect (int c)
+		{
+			int p = Read ();
+			if (p < 0)
+				throw UnexpectedEndError ();
+			else if (p != c)
+				throw Error (String.Format ("Expected '{0}' but got {1}", (char) c, (char) p));
+		}
+
+		private string ReadUntil (char until, bool handleReferences)
+		{
+			while (true) {
+				if (Peek () < 0)
+					throw UnexpectedEndError ();
+				char c = (char) Read ();
+				if (c == until)
+					break;
+				else if (handleReferences && c == '&')
+					ReadReference ();
+				else
+					buffer.Append (c);
+			}
+			string ret = buffer.ToString ();
+			buffer.Length = 0;
+			return ret;
+		}
+
+		public string ReadName ()
+		{
+			int idx = 0;
+			if (Peek () < 0 || !IsNameChar ((char) Peek (), true))
+				throw Error ("XML name start character is expected.");
+			for (int i = Peek (); i >= 0; i = Peek ()) {
+				char c = (char) i;
+				if (!IsNameChar (c, false))
+					break;
+				if (idx == nameBuffer.Length) {
+					char [] tmp = new char [idx * 2];
+					// COMPACT FRAMEWORK NOTE: Array.Copy(sourceArray, destinationArray, count) is not available.
+					Array.Copy (nameBuffer, 0, tmp, 0, idx);
+					nameBuffer = tmp;
+				}
+				nameBuffer [idx++] = c;
+				Read ();
+			}
+			if (idx == 0)
+				throw Error ("Valid XML name is expected.");
+			return new string (nameBuffer, 0, idx);
+		}
+
+
+		public void Parse (TextReader input, IContentHandler handler)
+		{
+			this.reader = input;
+			this.handler = handler;
+
+			handler.OnStartParsing (this);
+
+			while (Peek () >= 0)
+				ReadContent ();
+			HandleBufferedContent ();
+			if (elementNames.Count > 0)
+				throw Error (String.Format ("Insufficient close tag: {0}", elementNames.Peek ()));
+
+			handler.OnEndParsing (this);
+
+			Cleanup ();
+		}
+
+		private void Cleanup ()
+		{
+			line = 1;
+			column = 0;
+			handler = null;
+			reader = null;
+#if CF_1_0
+			elementNames = new Stack ();
+			xmlSpaces = new Stack ();
+#else
+			elementNames.Clear ();
+			xmlSpaces.Clear ();
+#endif
+			attributes.Clear ();
+			buffer.Length = 0;
+			xmlSpace = null;
+			isWhitespace = false;
+		}
+
+		public void ReadContent ()
+		{
+			string name;
+			if (IsWhitespace (Peek ())) {
+				if (buffer.Length == 0)
+					isWhitespace = true;
+				HandleWhitespaces ();
+			}
+			if (Peek () == '<') {
+				Read ();
+				switch (Peek ()) {
+				case '!': // declarations
+					Read ();
+					if (Peek () == '[') {
+						Read ();
+						if (ReadName () != "CDATA")
+							throw Error ("Invalid declaration markup");
+						Expect ('[');
+						ReadCDATASection ();
+						return;
+					}
+					else if (Peek () == '-') {
+						ReadComment ();
+						return;
+					}
+					else if (ReadName () != "DOCTYPE")
+						throw Error ("Invalid declaration markup.");
+					else
+						throw Error ("This parser does not support document type.");
+				case '?': // PIs
+					HandleBufferedContent ();
+					Read ();
+					name = ReadName ();
+					SkipWhitespaces ();
+					string text = String.Empty;
+					if (Peek () != '?') {
+						while (true) {
+							text += ReadUntil ('?', false);
+							if (Peek () == '>')
+								break;
+							text += "?";
+						}
+					}
+					handler.OnProcessingInstruction (
+						name, text);
+					Expect ('>');
+					return;
+				case '/': // end tags
+					HandleBufferedContent ();
+					if (elementNames.Count == 0)
+						throw UnexpectedEndError ();
+					Read ();
+					name = ReadName ();
+					SkipWhitespaces ();
+					string expected = (string) elementNames.Pop ();
+					xmlSpaces.Pop ();
+					if (xmlSpaces.Count > 0)
+						xmlSpace = (string) xmlSpaces.Peek ();
+					else
+						xmlSpace = null;
+					if (name != expected)
+						throw Error (String.Format ("End tag mismatch: expected {0} but found {1}", expected, name));
+					handler.OnEndElement (name);
+					Expect ('>');
+					return;
+				default: // start tags (including empty tags)
+					HandleBufferedContent ();
+					name = ReadName ();
+					while (Peek () != '>' && Peek () != '/')
+						ReadAttribute (attributes);
+					handler.OnStartElement (name, attributes);
+					attributes.Clear ();
+					SkipWhitespaces ();
+					if (Peek () == '/') {
+						Read ();
+						handler.OnEndElement (name);
+					}
+					else {
+						elementNames.Push (name);
+						xmlSpaces.Push (xmlSpace);
+					}
+					Expect ('>');
+					return;
+				}
+			}
+			else
+				ReadCharacters ();
+		}
+
+		private void HandleBufferedContent ()
+		{
+			if (buffer.Length == 0)
+				return;
+			if (isWhitespace)
+				handler.OnIgnorableWhitespace (buffer.ToString ());
+			else
+				handler.OnChars (buffer.ToString ());
+			buffer.Length = 0;
+			isWhitespace = false;
+		}
+
+		private void ReadCharacters ()
+		{
+			isWhitespace = false;
+			while (true) {
+				int i = Peek ();
+				switch (i) {
+				case -1:
+					return;
+				case '<':
+					return;
+				case '&':
+					Read ();
+					ReadReference ();
+					continue;
+				default:
+					buffer.Append ((char) Read ());
+					continue;
+				}
+			}
+		}
+
+		private void ReadReference ()
+		{
+			if (Peek () == '#') {
+				// character reference
+				Read ();
+				ReadCharacterReference ();
+			} else {
+				string name = ReadName ();
+				Expect (';');
+				switch (name) {
+				case "amp":
+					buffer.Append ('&');
+					break;
+				case "quot":
+					buffer.Append ('"');
+					break;
+				case "apos":
+					buffer.Append ('\'');
+					break;
+				case "lt":
+					buffer.Append ('<');
+					break;
+				case "gt":
+					buffer.Append ('>');
+					break;
+				default:
+					throw Error ("General non-predefined entity reference is not supported in this parser.");
+				}
+			}
+		}
+
+		private int ReadCharacterReference ()
+		{
+			int n = 0;
+			if (Peek () == 'x') { // hex
+				Read ();
+				for (int i = Peek (); i >= 0; i = Peek ()) {
+					if ('0' <= i && i <= '9')
+						n = n << 4 + i - '0';
+					else if ('A' <= i && i <='F')
+						n = n << 4 + i - 'A' + 10;
+					else if ('a' <= i && i <='f')
+						n = n << 4 + i - 'a' + 10;
+					else
+						break;
+					Read ();
+				}
+			} else {
+				for (int i = Peek (); i >= 0; i = Peek ()) {
+					if ('0' <= i && i <= '9')
+						n = n << 4 + i - '0';
+					else
+						break;
+					Read ();
+				}
+			}
+			return n;
+		}
+
+		private void ReadAttribute (AttrListImpl a)
+		{
+			SkipWhitespaces (true);
+			if (Peek () == '/' || Peek () == '>')
+			// came here just to spend trailing whitespaces
+				return;
+
+			string name = ReadName ();
+			string value;
+			SkipWhitespaces ();
+			Expect ('=');
+			SkipWhitespaces ();
+			switch (Read ()) {
+			case '\'':
+				value = ReadUntil ('\'', true);
+				break;
+			case '"':
+				value = ReadUntil ('"', true);
+				break;
+			default:
+				throw Error ("Invalid attribute value markup.");
+			}
+			if (name == "xml:space")
+				xmlSpace = value;
+			a.Add (name, value);
+		}
+
+		private void ReadCDATASection ()
+		{
+			int nBracket = 0;
+			while (true) {
+				if (Peek () < 0)
+					throw UnexpectedEndError ();
+				char c = (char) Read ();
+				if (c == ']')
+					nBracket++;
+				else if (c == '>' && nBracket > 1) {
+					for (int i = nBracket; i > 2; i--)
+						buffer.Append (']');
+					break;
+				}
+				else {
+					for (int i = 0; i < nBracket; i++)
+						buffer.Append (']');
+					nBracket = 0;
+					buffer.Append (c);
+				}
+			}
+		}
+
+		private void ReadComment ()
+		{
+			Expect ('-');
+			Expect ('-');
+			while (true) {
+				if (Read () != '-')
+					continue;
+				if (Read () != '-')
+					continue;
+				if (Read () != '>')
+					throw Error ("'--' is not allowed inside comment markup.");
+				break;
+			}
+		}
+	}
+
+	internal sealed class SmallXmlParserException : SystemException
+	{
+		int line;
+		int column;
+
+		public SmallXmlParserException (string msg, int line, int column)
+		: base (String.Format ("{0}. At ({1},{2})", msg, line, column))
+		{
+			this.line = line;
+			this.column = column;
+		}
+
+		public int Line {
+			get { return line; }
+		}
+
+		public int Column {
+			get { return column; }
+		}
+	}
+}
+
+
+
diff --git a/mcs/tools/cil-strip/cilstrip.cs b/mcs/tools/cil-strip/cilstrip.cs
index 2c09265..4b56f2e 100644
--- a/mcs/tools/cil-strip/cilstrip.cs
+++ b/mcs/tools/cil-strip/cilstrip.cs
@@ -44,11 +44,7 @@ namespace Mono.CilStripper {
 
 		static void StripAssembly (AssemblyDefinition assembly, string output)
 		{
-			Type stripper = typeof (AssemblyDefinition).Assembly.GetType ("Mono.Cecil.AssemblyStripper");
-			if (stripper == null)
-				throw new NotSupportedException ("Cecil doesn't have support for mono-cil-strip");
-
-			stripper.GetMethod ("StripAssembly").Invoke (null, new object [] { assembly, output });
+			AssemblyStripper.StripAssembly (assembly, output);
 		}
 
 		static void Header ()
diff --git a/mcs/tools/cil-strip/mono-cil-strip.exe.sources b/mcs/tools/cil-strip/mono-cil-strip.exe.sources
index c879f82..5ea4d80 100644
--- a/mcs/tools/cil-strip/mono-cil-strip.exe.sources
+++ b/mcs/tools/cil-strip/mono-cil-strip.exe.sources
@@ -1 +1,314 @@
-cilstrip.cs
+./cilstrip.cs
+./AssemblyStripper.cs
+./Mono.Cecil/AggressiveReflectionReader.cs
+./Mono.Cecil/ArrayDimension.cs
+./Mono.Cecil/ArrayDimensionCollection.cs
+./Mono.Cecil/ArrayType.cs
+./Mono.Cecil/AssemblyDefinition.cs
+./Mono.Cecil/AssemblyFactory.cs
+./Mono.Cecil/AssemblyFlags.cs
+./Mono.Cecil/AssemblyHashAlgorithm.cs
+./Mono.Cecil/AssemblyInfo.cs
+./Mono.Cecil/AssemblyKind.cs
+./Mono.Cecil/AssemblyLinkedResource.cs
+./Mono.Cecil/AssemblyNameDefinition.cs
+./Mono.Cecil/AssemblyNameReference.cs
+./Mono.Cecil/AssemblyNameReferenceCollection.cs
+./Mono.Cecil/BaseAssemblyResolver.cs
+./Mono.Cecil/BaseReflectionReader.cs
+./Mono.Cecil/BaseReflectionVisitor.cs
+./Mono.Cecil/BaseStructureVisitor.cs
+./Mono.Cecil/CallSite.cs
+./Mono.Cecil/CompactFrameworkCompatibility.cs
+./Mono.Cecil/Constants.cs
+./Mono.Cecil/ConstraintCollection.cs
+./Mono.Cecil/ConstructorCollection.cs
+./Mono.Cecil/CustomAttribute.cs
+./Mono.Cecil/CustomAttributeCollection.cs
+./Mono.Cecil/DefaultAssemblyResolver.cs
+./Mono.Cecil/DefaultImporter.cs
+./Mono.Cecil/EmbeddedResource.cs
+./Mono.Cecil/EventAttributes.cs
+./Mono.Cecil/EventDefinition.cs
+./Mono.Cecil/EventDefinitionCollection.cs
+./Mono.Cecil/EventReference.cs
+./Mono.Cecil/ExternTypeCollection.cs
+./Mono.Cecil/FieldAttributes.cs
+./Mono.Cecil/FieldDefinition.cs
+./Mono.Cecil/FieldDefinitionCollection.cs
+./Mono.Cecil/FieldReference.cs
+./Mono.Cecil/FileAttributes.cs
+./Mono.Cecil/FunctionPointerType.cs
+./Mono.Cecil/GenericArgumentCollection.cs
+./Mono.Cecil/GenericContext.cs
+./Mono.Cecil/GenericInstanceMethod.cs
+./Mono.Cecil/GenericInstanceType.cs
+./Mono.Cecil/GenericParameter.cs
+./Mono.Cecil/GenericParameterAttributes.cs
+./Mono.Cecil/GenericParameterCollection.cs
+./Mono.Cecil/HashCodeProvider.cs
+./Mono.Cecil/IAnnotationProvider.cs
+./Mono.Cecil/IAssemblyResolver.cs
+./Mono.Cecil/ICustomAttributeProvider.cs
+./Mono.Cecil/IDetailReader.cs
+./Mono.Cecil/IGenericInstance.cs
+./Mono.Cecil/IGenericParameterProvider.cs
+./Mono.Cecil/IHasConstant.cs
+./Mono.Cecil/IHasMarshalSpec.cs
+./Mono.Cecil/IHasSecurity.cs
+./Mono.Cecil/IImporter.cs
+./Mono.Cecil/IMemberDefinition.cs
+./Mono.Cecil/IMemberReference.cs
+./Mono.Cecil/IMetadataScope.cs
+./Mono.Cecil/IMetadataTokenProvider.cs
+./Mono.Cecil/IMethodSignature.cs
+./Mono.Cecil/ImportContext.cs
+./Mono.Cecil/InterfaceCollection.cs
+./Mono.Cecil/IReflectionStructureVisitable.cs
+./Mono.Cecil/IReflectionStructureVisitor.cs
+./Mono.Cecil/IReflectionVisitable.cs
+./Mono.Cecil/IReflectionVisitor.cs
+./Mono.Cecil/IRequireResolving.cs
+./Mono.Cecil/LinkedResource.cs
+./Mono.Cecil/ManifestResourceAttributes.cs
+./Mono.Cecil/MarshalSpec.cs
+./Mono.Cecil/MemberReference.cs
+./Mono.Cecil/MemberReferenceCollection.cs
+./Mono.Cecil/MetadataResolver.cs
+./Mono.Cecil/MethodAttributes.cs
+./Mono.Cecil/MethodCallingConvention.cs
+./Mono.Cecil/MethodDefinition.cs
+./Mono.Cecil/MethodDefinitionCollection.cs
+./Mono.Cecil/MethodImplAttributes.cs
+./Mono.Cecil/MethodReference.cs
+./Mono.Cecil/MethodReturnType.cs
+./Mono.Cecil/MethodSemanticsAttributes.cs
+./Mono.Cecil/MethodSpecification.cs
+./Mono.Cecil/Modifiers.cs
+./Mono.Cecil/ModuleDefinition.cs
+./Mono.Cecil/ModuleDefinitionCollection.cs
+./Mono.Cecil/ModuleReference.cs
+./Mono.Cecil/ModuleReferenceCollection.cs
+./Mono.Cecil/NativeType.cs
+./Mono.Cecil/NestedTypeCollection.cs
+./Mono.Cecil/NullReferenceImporter.cs
+./Mono.Cecil/OverrideCollection.cs
+./Mono.Cecil/ParameterAttributes.cs
+./Mono.Cecil/ParameterDefinition.cs
+./Mono.Cecil/ParameterDefinitionCollection.cs
+./Mono.Cecil/ParameterReference.cs
+./Mono.Cecil/PinnedType.cs
+./Mono.Cecil/PInvokeAttributes.cs
+./Mono.Cecil/PInvokeInfo.cs
+./Mono.Cecil/PointerType.cs
+./Mono.Cecil/PropertyAttributes.cs
+./Mono.Cecil/PropertyDefinition.cs
+./Mono.Cecil/PropertyDefinitionCollection.cs
+./Mono.Cecil/PropertyReference.cs
+./Mono.Cecil/ReferenceType.cs
+./Mono.Cecil/ReflectionController.cs
+./Mono.Cecil/ReflectionException.cs
+./Mono.Cecil/ReflectionHelper.cs
+./Mono.Cecil/ReflectionReader.cs
+./Mono.Cecil/ReflectionWriter.cs
+./Mono.Cecil/Resource.cs
+./Mono.Cecil/ResourceCollection.cs
+./Mono.Cecil/SecurityAction.cs
+./Mono.Cecil/SecurityDeclaration.cs
+./Mono.Cecil/SecurityDeclarationCollection.cs
+./Mono.Cecil/SecurityDeclarationReader.cs
+./Mono.Cecil/SentinelType.cs
+./Mono.Cecil/StructureReader.cs
+./Mono.Cecil/StructureWriter.cs
+./Mono.Cecil/TableComparers.cs
+./Mono.Cecil/TargetRuntime.cs
+./Mono.Cecil/TypeAttributes.cs
+./Mono.Cecil/TypeDefinition.cs
+./Mono.Cecil/TypeDefinitionCollection.cs
+./Mono.Cecil/TypeReference.cs
+./Mono.Cecil/TypeReferenceCollection.cs
+./Mono.Cecil/TypeSpecification.cs
+./Mono.Cecil/VariantType.cs
+./Mono.Cecil.Binary/BaseImageVisitor.cs
+./Mono.Cecil.Binary/CLIHeader.cs
+./Mono.Cecil.Binary/CopyImageVisitor.cs
+./Mono.Cecil.Binary/DataDirectory.cs
+./Mono.Cecil.Binary/DebugHeader.cs
+./Mono.Cecil.Binary/DebugStoreType.cs
+./Mono.Cecil.Binary/DOSHeader.cs
+./Mono.Cecil.Binary/ExportTable.cs
+./Mono.Cecil.Binary/IBinaryVisitable.cs
+./Mono.Cecil.Binary/IBinaryVisitor.cs
+./Mono.Cecil.Binary/IHeader.cs
+./Mono.Cecil.Binary/Image.cs
+./Mono.Cecil.Binary/ImageCharacteristics.cs
+./Mono.Cecil.Binary/ImageFormatException.cs
+./Mono.Cecil.Binary/ImageInitializer.cs
+./Mono.Cecil.Binary/ImageReader.cs
+./Mono.Cecil.Binary/ImageWriter.cs
+./Mono.Cecil.Binary/Imports.cs
+./Mono.Cecil.Binary/MemoryBinaryWriter.cs
+./Mono.Cecil.Binary/PEFileHeader.cs
+./Mono.Cecil.Binary/PEOptionalHeader.cs
+./Mono.Cecil.Binary/ResourceDataEntry.cs
+./Mono.Cecil.Binary/ResourceDirectoryEntry.cs
+./Mono.Cecil.Binary/ResourceDirectoryString.cs
+./Mono.Cecil.Binary/ResourceDirectoryTable.cs
+./Mono.Cecil.Binary/ResourceNode.cs
+./Mono.Cecil.Binary/ResourceReader.cs
+./Mono.Cecil.Binary/ResourceWriter.cs
+./Mono.Cecil.Binary/RuntimeImage.cs
+./Mono.Cecil.Binary/RVA.cs
+./Mono.Cecil.Binary/Section.cs
+./Mono.Cecil.Binary/SectionCharacteristics.cs
+./Mono.Cecil.Binary/SectionCollection.cs
+./Mono.Cecil.Binary/SubSystem.cs
+./Mono.Cecil.Metadata/Assembly.cs
+./Mono.Cecil.Metadata/AssemblyOS.cs
+./Mono.Cecil.Metadata/AssemblyProcessor.cs
+./Mono.Cecil.Metadata/AssemblyRef.cs
+./Mono.Cecil.Metadata/AssemblyRefOS.cs
+./Mono.Cecil.Metadata/AssemblyRefProcessor.cs
+./Mono.Cecil.Metadata/BaseMetadataVisitor.cs
+./Mono.Cecil.Metadata/BlobHeap.cs
+./Mono.Cecil.Metadata/ClassLayout.cs
+./Mono.Cecil.Metadata/CodedIndex.cs
+./Mono.Cecil.Metadata/Constant.cs
+./Mono.Cecil.Metadata/CultureUtils.cs
+./Mono.Cecil.Metadata/CustomAttribute.cs
+./Mono.Cecil.Metadata/DeclSecurity.cs
+./Mono.Cecil.Metadata/ElementType.cs
+./Mono.Cecil.Metadata/Event.cs
+./Mono.Cecil.Metadata/EventMap.cs
+./Mono.Cecil.Metadata/EventPtr.cs
+./Mono.Cecil.Metadata/ExportedType.cs
+./Mono.Cecil.Metadata/Field.cs
+./Mono.Cecil.Metadata/FieldLayout.cs
+./Mono.Cecil.Metadata/FieldMarshal.cs
+./Mono.Cecil.Metadata/FieldPtr.cs
+./Mono.Cecil.Metadata/FieldRVA.cs
+./Mono.Cecil.Metadata/File.cs
+./Mono.Cecil.Metadata/GenericParam.cs
+./Mono.Cecil.Metadata/GenericParamConstraint.cs
+./Mono.Cecil.Metadata/GuidHeap.cs
+./Mono.Cecil.Metadata/IMetadataRow.cs
+./Mono.Cecil.Metadata/IMetadataTable.cs
+./Mono.Cecil.Metadata/IMetadataVisitable.cs
+./Mono.Cecil.Metadata/IMetadataVisitor.cs
+./Mono.Cecil.Metadata/ImplMap.cs
+./Mono.Cecil.Metadata/InterfaceImpl.cs
+./Mono.Cecil.Metadata/ManifestResource.cs
+./Mono.Cecil.Metadata/MemberRef.cs
+./Mono.Cecil.Metadata/MetadataFormatException.cs
+./Mono.Cecil.Metadata/MetadataHeap.cs
+./Mono.Cecil.Metadata/MetadataInitializer.cs
+./Mono.Cecil.Metadata/MetadataReader.cs
+./Mono.Cecil.Metadata/MetadataRoot.cs
+./Mono.Cecil.Metadata/MetadataRowReader.cs
+./Mono.Cecil.Metadata/MetadataRowWriter.cs
+./Mono.Cecil.Metadata/MetadataStream.cs
+./Mono.Cecil.Metadata/MetadataStreamCollection.cs
+./Mono.Cecil.Metadata/MetadataTableReader.cs
+./Mono.Cecil.Metadata/MetadataTableWriter.cs
+./Mono.Cecil.Metadata/MetadataToken.cs
+./Mono.Cecil.Metadata/MetadataWriter.cs
+./Mono.Cecil.Metadata/Method.cs
+./Mono.Cecil.Metadata/MethodImpl.cs
+./Mono.Cecil.Metadata/MethodPtr.cs
+./Mono.Cecil.Metadata/MethodSemantics.cs
+./Mono.Cecil.Metadata/MethodSpec.cs
+./Mono.Cecil.Metadata/Module.cs
+./Mono.Cecil.Metadata/ModuleRef.cs
+./Mono.Cecil.Metadata/NestedClass.cs
+./Mono.Cecil.Metadata/Param.cs
+./Mono.Cecil.Metadata/ParamPtr.cs
+./Mono.Cecil.Metadata/Property.cs
+./Mono.Cecil.Metadata/PropertyMap.cs
+./Mono.Cecil.Metadata/PropertyPtr.cs
+./Mono.Cecil.Metadata/RowCollection.cs
+./Mono.Cecil.Metadata/StandAloneSig.cs
+./Mono.Cecil.Metadata/StringsHeap.cs
+./Mono.Cecil.Metadata/TableCollection.cs
+./Mono.Cecil.Metadata/TablesHeap.cs
+./Mono.Cecil.Metadata/TokenType.cs
+./Mono.Cecil.Metadata/TypeDef.cs
+./Mono.Cecil.Metadata/TypeRef.cs
+./Mono.Cecil.Metadata/TypeSpec.cs
+./Mono.Cecil.Metadata/UserStringsHeap.cs
+./Mono.Cecil.Metadata/Utilities.cs
+./Mono.Cecil.Cil/BaseCodeVisitor.cs
+./Mono.Cecil.Cil/CilWorker.cs
+./Mono.Cecil.Cil/Code.cs
+./Mono.Cecil.Cil/CodeReader.cs
+./Mono.Cecil.Cil/CodeWriter.cs
+./Mono.Cecil.Cil/Document.cs
+./Mono.Cecil.Cil/DocumentHashAlgorithm.cs
+./Mono.Cecil.Cil/DocumentLanguage.cs
+./Mono.Cecil.Cil/DocumentLanguageVendor.cs
+./Mono.Cecil.Cil/DocumentType.cs
+./Mono.Cecil.Cil/ExceptionHandler.cs
+./Mono.Cecil.Cil/ExceptionHandlerCollection.cs
+./Mono.Cecil.Cil/ExceptionHandlerType.cs
+./Mono.Cecil.Cil/FlowControl.cs
+./Mono.Cecil.Cil/GuidAttribute.cs
+./Mono.Cecil.Cil/ICodeVisitable.cs
+./Mono.Cecil.Cil/ICodeVisitor.cs
+./Mono.Cecil.Cil/Instruction.cs
+./Mono.Cecil.Cil/InstructionCollection.cs
+./Mono.Cecil.Cil/IScopeProvider.cs
+./Mono.Cecil.Cil/ISymbolReader.cs
+./Mono.Cecil.Cil/ISymbolStoreFactory.cs
+./Mono.Cecil.Cil/ISymbolWriter.cs
+./Mono.Cecil.Cil/IVariableDefinitionProvider.cs
+./Mono.Cecil.Cil/MethodBody.cs
+./Mono.Cecil.Cil/MethodDataSection.cs
+./Mono.Cecil.Cil/MethodHeader.cs
+./Mono.Cecil.Cil/OpCode.cs
+./Mono.Cecil.Cil/OpCodes.cs
+./Mono.Cecil.Cil/OpCodeNames.cs
+./Mono.Cecil.Cil/OpCodeType.cs
+./Mono.Cecil.Cil/OperandType.cs
+./Mono.Cecil.Cil/Scope.cs
+./Mono.Cecil.Cil/ScopeCollection.cs
+./Mono.Cecil.Cil/SequencePoint.cs
+./Mono.Cecil.Cil/StackBehaviour.cs
+./Mono.Cecil.Cil/SymbolStoreHelper.cs
+./Mono.Cecil.Cil/VariableDefinition.cs
+./Mono.Cecil.Cil/VariableDefinitionCollection.cs
+./Mono.Cecil.Cil/VariableReference.cs
+./Mono.Cecil.Signatures/Array.cs
+./Mono.Cecil.Signatures/ArrayShape.cs
+./Mono.Cecil.Signatures/BaseSignatureVisitor.cs
+./Mono.Cecil.Signatures/Class.cs
+./Mono.Cecil.Signatures/Constraint.cs
+./Mono.Cecil.Signatures/CustomAttrib.cs
+./Mono.Cecil.Signatures/CustomMod.cs
+./Mono.Cecil.Signatures/FieldSig.cs
+./Mono.Cecil.Signatures/FnPtr.cs
+./Mono.Cecil.Signatures/GenericArg.cs
+./Mono.Cecil.Signatures/GenericInst.cs
+./Mono.Cecil.Signatures/GenericInstSignature.cs
+./Mono.Cecil.Signatures/InputOutputItem.cs
+./Mono.Cecil.Signatures/ISignatureVisitable.cs
+./Mono.Cecil.Signatures/ISignatureVisitor.cs
+./Mono.Cecil.Signatures/LocalVarSig.cs
+./Mono.Cecil.Signatures/MarshalSig.cs
+./Mono.Cecil.Signatures/MethodDefSig.cs
+./Mono.Cecil.Signatures/MethodRefSig.cs
+./Mono.Cecil.Signatures/MethodSig.cs
+./Mono.Cecil.Signatures/MethodSpec.cs
+./Mono.Cecil.Signatures/MVar.cs
+./Mono.Cecil.Signatures/Param.cs
+./Mono.Cecil.Signatures/PropertySig.cs
+./Mono.Cecil.Signatures/Ptr.cs
+./Mono.Cecil.Signatures/RetType.cs
+./Mono.Cecil.Signatures/Signature.cs
+./Mono.Cecil.Signatures/SignatureReader.cs
+./Mono.Cecil.Signatures/SignatureWriter.cs
+./Mono.Cecil.Signatures/SigType.cs
+./Mono.Cecil.Signatures/SzArray.cs
+./Mono.Cecil.Signatures/TypeSpec.cs
+./Mono.Cecil.Signatures/ValueType.cs
+./Mono.Cecil.Signatures/Var.cs
+./Mono.Xml/SecurityParser.cs
+./Mono.Xml/SmallXmlParser.cs
diff --git a/mcs/tools/compiler-tester/ChangeLog b/mcs/tools/compiler-tester/ChangeLog
index 93c5bef..c850e95 100644
--- a/mcs/tools/compiler-tester/ChangeLog
+++ b/mcs/tools/compiler-tester/ChangeLog
@@ -1,3 +1,15 @@
+2010-12-07  Marek Safar  <marek.safar at gmail.com>
+
+	Revert ordering of compiler tests
+
+2010-12-07  Marek Safar  <marek.safar at gmail.com>
+
+	Sort the files manually to always get same order
+
+2010-11-06  Marek Safar  <marek.safar at gmail.com>
+
+	Report error duplicate only when expected error has been found
+
 2009-11-05  Marek Safar  <marek.safar at gmail.com>
 
 	* compiler-tester.cs: Add predefined negative file masks.
diff --git a/mcs/tools/compiler-tester/ChangeLog b/mcs/tools/compiler-tester/ChangeLog.old
similarity index 100%
copy from mcs/tools/compiler-tester/ChangeLog
copy to mcs/tools/compiler-tester/ChangeLog.old
diff --git a/mcs/tools/compiler-tester/compiler-tester.cs b/mcs/tools/compiler-tester/compiler-tester.cs
index 89a8bec..4ef1b33 100644
--- a/mcs/tools/compiler-tester/compiler-tester.cs
+++ b/mcs/tools/compiler-tester/compiler-tester.cs
@@ -35,6 +35,7 @@ using System.Reflection;
 using System.Text;
 using System.Collections;
 using System.Xml;
+using System.Collections.Generic;
 
 namespace TestRunner {
 
@@ -1141,7 +1142,7 @@ namespace TestRunner {
 			ArrayList ld = new ArrayList ();
 			CompilerError result = CompilerError.Missing;
 			while (line != null) {
-				if (ld.Contains (line)) {
+				if (ld.Contains (line) && result == CompilerError.Expected) {
 					if (line.IndexOf ("Location of the symbol related to previous") == -1)
 						return CompilerError.Duplicate;
 				}
@@ -1362,7 +1363,7 @@ namespace TestRunner {
 				return 1;
 			}
 
-			ArrayList files = new ArrayList ();
+			var files = new List<string> ();
 			switch (test_pattern) {
 			case "v1":
 				files.AddRange (Directory.GetFiles (".", positive ? "test*.cs" : "cs*.cs"));
@@ -1384,7 +1385,19 @@ namespace TestRunner {
 			}
 
 			checker.Initialize ();
+/*
+			files.Sort ((a, b) => {
+				if (a.EndsWith ("-lib.cs", StringComparison.Ordinal)) {
+					if (!b.EndsWith ("-lib.cs", StringComparison.Ordinal))
+						return -1;
+				} else if (b.EndsWith ("-lib.cs", StringComparison.Ordinal)) {
+					if (!a.EndsWith ("-lib.cs", StringComparison.Ordinal))
+						return 1;
+				}
 
+				return a.CompareTo (b);
+			});
+*/
 			foreach (string s in files) {
 				string filename = Path.GetFileName (s);
 				if (Char.IsUpper (filename, 0)) { // Windows hack
diff --git a/mcs/tools/corcompare/AssemblyResolver.cs b/mcs/tools/corcompare/AssemblyResolver.cs
index ff927b1..56000ca 100644
--- a/mcs/tools/corcompare/AssemblyResolver.cs
+++ b/mcs/tools/corcompare/AssemblyResolver.cs
@@ -34,36 +34,19 @@ using Mono.Cecil;
 
 namespace GuiCompare {
 
-	public class AssemblyResolver : IAssemblyResolver {
+	public class AssemblyResolver : DefaultAssemblyResolver {
 
-		DefaultAssemblyResolver resolver = new DefaultAssemblyResolver ();
-
-		public AssemblyResolver ()
+		public AssemblyDefinition ResolveFile (string file)
 		{
-		}
-
-		public AssemblyDefinition Resolve (string fullName)
-		{
-			if (File.Exists (fullName))
-				return Attach (ProcessFile (fullName));
-
-			return Attach (resolver.Resolve (fullName));
+			return ProcessFile (file);
 		}
 
 		AssemblyDefinition ProcessFile (string file)
 		{
-			resolver.AddSearchDirectory (Path.GetDirectoryName (file));
-			return AssemblyFactory.GetAssembly (file);
-		}
+			AddSearchDirectory (Path.GetDirectoryName (file));
+			var assembly = AssemblyDefinition.ReadAssembly (file, new ReaderParameters { AssemblyResolver = this });
+			RegisterAssembly (assembly);
 
-		public AssemblyDefinition Resolve (AssemblyNameReference name)
-		{
-			return Attach (resolver.Resolve (name));
-		}
-
-		AssemblyDefinition Attach (AssemblyDefinition assembly)
-		{
-			assembly.Resolver = this;
 			return assembly;
 		}
 	}
diff --git a/mcs/tools/corcompare/ChangeLog b/mcs/tools/corcompare/ChangeLog
index 01ff304..43319c0 100644
--- a/mcs/tools/corcompare/ChangeLog
+++ b/mcs/tools/corcompare/ChangeLog
@@ -1,3 +1,22 @@
+2010-12-23  Marek Safar  <marek.safar at gmail.com>
+
+	Update mono-api-info to work with latest cecil. Updated to latest
+	SL4
+
+2010-12-22  Alan McGovern  <alan.mcgovern at gmail.com>
+
+	[mono-api-info] Do not ignore finalizers
+
+	Finalizer chaining is done at compile time, so if you compile
+	against a lib with no finalizer and then run against one with a
+	finalizer, you'll end up ignoring the finalizer in the second lib
+	and it will never be run. Therefore we need to take these into
+	account.
+
+2010-10-06  Jb Evain  <jbevain at gmail.com>
+
+	Port corcompare to cecil-light
+
 2010-08-23  Andrés G. Aragoneses  <knocte at gmail.com>
 
 	[tools] Merge mono-abi-info tool into a "--abi" flag for
diff --git a/mcs/tools/corcompare/Util.cs b/mcs/tools/corcompare/Util.cs
index 9d3b3eb..7822805 100644
--- a/mcs/tools/corcompare/Util.cs
+++ b/mcs/tools/corcompare/Util.cs
@@ -19,7 +19,7 @@ namespace CorCompare {
 			TypeDefinition td = typeref.Resolve ();
 			if (td == null)
 				return false;
-			
+
 			return td.IsPublic;
 		}
 
@@ -30,10 +30,17 @@ namespace CorCompare {
 
 		internal static bool IsDerivedFrom (TypeReference type, string derivedFrom)
 		{
-			foreach (var def in WalkHierarchy (type))
+			bool first = true;
+			foreach (var def in WalkHierarchy (type)) {
+				if (first) {
+					first = false;
+					continue;
+				}
+				
 				if (def.FullName == derivedFrom)
 					return true;
-
+			}
+			
 			return false;
 		}
 
@@ -64,17 +71,17 @@ namespace CorCompare {
 
 		internal static bool IsPublic (CustomAttribute att)
 		{
-			return IsPublic (att.Constructor.DeclaringType);
+			return IsPublic (att.AttributeType);
 		}
 
 		internal static string GetFullName (CustomAttribute att)
 		{
-			return att.Constructor.DeclaringType.FullName;
+			return att.AttributeType.FullName;
 		}
 
 		internal static TypeDefinition GetTypeDefinition (CustomAttribute att)
 		{
-			return att.Constructor.DeclaringType.Resolve ();
+			return att.AttributeType.Resolve ();
 		}
 	}
 }
diff --git a/mcs/tools/corcompare/WellFormedXmlWriter.cs b/mcs/tools/corcompare/WellFormedXmlWriter.cs
index 631f136..334c57f 100644
--- a/mcs/tools/corcompare/WellFormedXmlWriter.cs
+++ b/mcs/tools/corcompare/WellFormedXmlWriter.cs
@@ -19,7 +19,7 @@ namespace CorCompare {
 		{
 			return !IsInvalid (ch);
 		}
-	
+
 		public static bool IsInvalid (int ch)
 		{
 			switch (ch) {
@@ -43,7 +43,7 @@ namespace CorCompare {
 			else
 				return true;
 		}
-	
+
 		public static int IndexOfInvalid (string s, bool allowSurrogate)
 		{
 			for (int i = 0; i < s.Length; i++)
@@ -59,7 +59,7 @@ namespace CorCompare {
 				}
 			return -1;
 		}
-	
+
 		public static int IndexOfInvalid (char [] s, int start, int length, bool allowSurrogate)
 		{
 			int end = start + length;
@@ -78,11 +78,11 @@ namespace CorCompare {
 				}
 			return -1;
 		}
-	
+
 		public WellFormedXmlWriter (XmlWriter writer) : base (writer)
 		{
 		}
-	
+
 		public override void WriteString (string text)
 		{
 			int i = IndexOfInvalid (text, true);
@@ -95,7 +95,7 @@ namespace CorCompare {
 				Writer.WriteString (text);
 			}
 		}
-	
+
 		public override void WriteChars (char [] text, int idx, int length)
 		{
 			int start = idx;
@@ -112,179 +112,179 @@ namespace CorCompare {
 			if (start < end)
 				Writer.WriteChars (text, start, end - start);
 		}
-	
+
 	}
-	
+
 	public class DefaultXmlWriter : XmlWriter
 	{
 		XmlWriter writer;
-	
+
 		public DefaultXmlWriter (XmlWriter writer)
 		{
 			this.writer = writer;
 		}
-	
+
 		protected XmlWriter Writer {
 			get { return writer; }
 		}
-	
+
 		public override void Close ()
 		{
 			writer.Close ();
 		}
-	
+
 		public override void Flush ()
 		{
 			writer.Flush ();
 		}
-	
+
 		public override string LookupPrefix (string ns)
 		{
 			return writer.LookupPrefix (ns);
 		}
-	
+
 		public override void WriteBase64 (byte [] buffer, int index, int count)
 		{
 			writer.WriteBase64 (buffer, index, count);
 		}
-	
+
 		public override void WriteBinHex (byte [] buffer, int index, int count)
 		{
 			writer.WriteBinHex (buffer, index, count);
 		}
-	
+
 		public override void WriteCData (string text)
 		{
 			writer.WriteCData (text);
 		}
-	
+
 		public override void WriteCharEntity (char ch)
 		{
 			writer.WriteCharEntity (ch);
 		}
-	
+
 		public override void WriteChars (char [] buffer, int index, int count)
 		{
 			writer.WriteChars (buffer, index, count);
 		}
-	
+
 		public override void WriteComment (string text)
 		{
 			writer.WriteComment (text);
 		}
-	
+
 		public override void WriteDocType (string name, string pubid, string sysid, string subset)
 		{
 			writer.WriteDocType (name, pubid, sysid, subset);
 		}
-	
+
 		public override void WriteEndAttribute ()
 		{
 			writer.WriteEndAttribute ();
 		}
-	
+
 		public override void WriteEndDocument ()
 		{
 			writer.WriteEndDocument ();
 		}
-	
+
 		public override void WriteEndElement ()
 		{
 			writer.WriteEndElement ();
 		}
-	
+
 		public override void WriteEntityRef (string name)
 		{
 			writer.WriteEntityRef (name);
 		}
-	
+
 		public override void WriteFullEndElement ()
 		{
 			writer.WriteFullEndElement ();
 		}
-	
+
 		public override void WriteName (string name)
 		{
 			writer.WriteName (name);
 		}
-	
+
 		public override void WriteNmToken (string name)
 		{
 			writer.WriteNmToken (name);
 		}
-	
+
 		public override void WriteNode (XmlReader reader, bool defattr)
 		{
 			writer.WriteNode (reader, defattr);
 		}
-	
+
 		public override void WriteProcessingInstruction (string name, string text)
 		{
 			writer.WriteProcessingInstruction (name, text);
 		}
-	
+
 		public override void WriteQualifiedName (string localName, string ns)
 		{
 			writer.WriteQualifiedName (localName, ns);
 		}
-	
+
 		public override void WriteRaw (string data)
 		{
 			writer.WriteRaw (data);
 		}
-	
+
 		public override void WriteRaw (char [] buffer, int index, int count)
 		{
 			writer.WriteRaw (buffer, index, count);
 		}
-	
+
 		public override void WriteStartAttribute (string prefix, string localName, string ns)
 		{
 			writer.WriteStartAttribute (prefix, localName, ns);
 		}
-	
+
 		public override void WriteStartDocument (bool standalone)
 		{
 			writer.WriteStartDocument (standalone);
 		}
-	
+
 		public override void WriteStartDocument ()
 		{
 			writer.WriteStartDocument ();
 		}
-	
+
 		public override void WriteStartElement (string prefix, string localName, string ns)
 		{
 			writer.WriteStartElement (prefix, localName, ns);
 		}
-	
+
 		public override void WriteString (string text)
 		{
 			writer.WriteString (text);
 		}
-	
+
 		public override void WriteSurrogateCharEntity (char lowChar, char highChar)
 		{
 			writer.WriteSurrogateCharEntity (lowChar, highChar);
 		}
-	
+
 		public override void WriteWhitespace (string ws)
 		{
 			writer.WriteWhitespace (ws);
 		}
-	
+
 		public override WriteState WriteState {
 			get {
 				return writer.WriteState;
 			}
 		}
-	
+
 		public override string XmlLang {
 			get {
 				return writer.XmlLang;
 			}
 		}
-	
+
 		public override XmlSpace XmlSpace {
 			get {
 				return writer.XmlSpace;
diff --git a/mcs/tools/corcompare/mono-api-info.cs b/mcs/tools/corcompare/mono-api-info.cs
index c488c0d..18f2daf 100644
--- a/mcs/tools/corcompare/mono-api-info.cs
+++ b/mcs/tools/corcompare/mono-api-info.cs
@@ -11,6 +11,7 @@ using System;
 using System.Collections;
 using System.Collections.Generic;
 using System.Globalization;
+using System.Linq;
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
 using System.Security.Permissions;
@@ -19,6 +20,7 @@ using System.Xml;
 
 using Mono.Cecil;
 using Mono.Cecil.Cil;
+using System.IO;
 
 namespace CorCompare
 {
@@ -33,11 +35,31 @@ namespace CorCompare
 
 			AssemblyCollection acoll = new AssemblyCollection ();
 
+			string windir = Environment.GetFolderPath(Environment.SpecialFolder.Windows);
+			string pf = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles);
+			TypeHelper.Resolver.AddSearchDirectory (Path.Combine (windir, @"assembly\GAC\MSDATASRC\7.0.3300.0__b03f5f7f11d50a3a"));
+
 			foreach (string arg in args) {
-				if (arg == "--abi")
+				if (arg == "--abi") {
 					AbiMode = true;
-				else
+				} else {
 					acoll.Add (arg);
+
+					if (arg.Contains ("v3.0")) {
+						TypeHelper.Resolver.AddSearchDirectory (Path.Combine (windir, @"Microsoft.NET\Framework\v2.0.50727"));
+					} else if (arg.Contains ("v3.5")) {
+						TypeHelper.Resolver.AddSearchDirectory (Path.Combine (windir, @"Microsoft.NET\Framework\v2.0.50727"));
+						TypeHelper.Resolver.AddSearchDirectory (Path.Combine (windir, @"Microsoft.NET\Framework\v3.0\Windows Communication Foundation"));
+					} else if (arg.Contains ("v4.0")) {
+						if (arg.Contains ("Silverlight")) {
+							TypeHelper.Resolver.AddSearchDirectory (Path.Combine (pf, @"Microsoft Silverlight\4.0.51204.0"));
+						} else {
+							TypeHelper.Resolver.AddSearchDirectory (Path.Combine (windir, @"Microsoft.NET\Framework\v4.0.30319"));
+							TypeHelper.Resolver.AddSearchDirectory (Path.Combine (windir, @"Microsoft.NET\Framework\v4.0.30319\WPF"));
+						}
+					}
+
+				}
 			}
 
 			XmlDocument doc = new XmlDocument ();
@@ -61,7 +83,7 @@ namespace CorCompare
 			return CleanupTypeName (type.FullName);
 		}
 
-		static string CleanupTypeName (string t)
+		public static string CleanupTypeName (string t)
 		{
 			return t.Replace ('<', '[').Replace ('>', ']').Replace ('/', '+');
 		}
@@ -79,8 +101,10 @@ namespace CorCompare
 		public bool Add (string name)
 		{
 			AssemblyDefinition ass = LoadAssembly (name);
-			if (ass == null)
+			if (ass == null) {
+				Console.Error.WriteLine ("Cannot load assembly file " + name);
 				return false;
+			}
 
 			assemblies.Add (ass);
 			return true;
@@ -151,13 +175,10 @@ namespace CorCompare
 				natts = document.CreateElement ("attributes", null);
 				parent.AppendChild (natts);
 			}
-			
-			foreach (TypeReference tref in ass.MainModule.ExternTypes) {
-				TypeDefinition def = tref.Resolve ();
-				if (def == null)
-					continue;
 
-				if (((uint)def.Attributes & 0x200000u) == 0)
+			foreach (ExportedType type in ass.MainModule.ExportedTypes) {
+
+				if (((uint)type.Attributes & 0x200000u) == 0)
 					continue;
 
 				XmlNode node = document.CreateElement ("attribute");
@@ -165,7 +186,7 @@ namespace CorCompare
 				XmlNode properties = node.AppendChild (document.CreateElement ("properties"));
 				XmlNode property = properties.AppendChild (document.CreateElement ("property"));
 				AddAttribute (property, "name", "Destination");
-				AddAttribute (property, "value", Utils.CleanupTypeName (tref));
+				AddAttribute (property, "value", Utils.CleanupTypeName (type.FullName));
 				natts.AppendChild (node);
 			}
 		}
@@ -176,7 +197,7 @@ namespace CorCompare
 			tftd.DoOutput ();
 		}
 	}
-	
+
 	class AssemblyData : BaseData
 	{
 		AssemblyDefinition ass;
@@ -199,7 +220,7 @@ namespace CorCompare
 			parent.AppendChild (nassembly);
 			TypeForwardedToData.OutputForwarders (document, nassembly, ass);
 			AttributeData.OutputAttributes (document, nassembly, ass.CustomAttributes);
-			TypeDefinitionCollection typesCollection = ass.MainModule.Types;
+			var typesCollection = ass.MainModule.Types;
 			if (typesCollection == null || typesCollection.Count == 0)
 				return;
 			object [] typesArray = new object [typesCollection.Count];
@@ -268,7 +289,7 @@ namespace CorCompare
 		}
 
 
-		protected abstract CustomAttributeCollection GetCustomAttributes (MemberReference member);
+		protected abstract IList<CustomAttribute> GetCustomAttributes (MemberReference member);
 
 		protected virtual void AddExtraData (XmlNode p, MemberReference memberDefenition)
 		{
@@ -343,7 +364,7 @@ namespace CorCompare
 			this.type = type;
 		}
 
-		protected override CustomAttributeCollection GetCustomAttributes (MemberReference member) {
+		protected override IList<CustomAttribute> GetCustomAttributes (MemberReference member) {
 			return ((TypeDefinition) member).CustomAttributes;
 		}
 
@@ -376,6 +397,14 @@ namespace CorCompare
 			if (layout != null)
 				AddAttribute (nclass, "layout", layout);
 
+			if (type.PackingSize >= 0) {
+				AddAttribute (nclass, "pack", type.PackingSize.ToString ());
+			}
+
+			if (type.ClassSize >= 0) {
+				AddAttribute (nclass, "size", type.ClassSize.ToString ());
+			}
+
 			parent.AppendChild (nclass);
 
 			AttributeData.OutputAttributes (document, nclass, GetCustomAttributes(type));
@@ -446,7 +475,7 @@ namespace CorCompare
 			foreach (MemberData md in members)
 				md.DoOutput ();
 
-			NestedTypeCollection nested = type.NestedTypes;
+			var nested = type.NestedTypes;
 			//remove non public(familiy) and nested in second degree
 			for (int i = nested.Count - 1; i >= 0; i--) {
 				TypeDefinition t = nested [i];
@@ -547,7 +576,7 @@ namespace CorCompare
 		FieldDefinition [] GetFields (TypeDefinition type) {
 			ArrayList list = new ArrayList ();
 
-			FieldDefinitionCollection fields = type.Fields;
+			var fields = type.Fields;
 			foreach (FieldDefinition field in fields) {
 				if (field.IsSpecialName)
 					continue;
@@ -575,7 +604,7 @@ namespace CorCompare
 		internal static PropertyDefinition [] GetProperties (TypeDefinition type) {
 			ArrayList list = new ArrayList ();
 
-			PropertyDefinitionCollection properties = type.Properties;//type.GetProperties (flags);
+			var properties = type.Properties;//type.GetProperties (flags);
 			foreach (PropertyDefinition property in properties) {
 				MethodDefinition getMethod = property.GetMethod;
 				MethodDefinition setMethod = property.SetMethod;
@@ -597,7 +626,7 @@ namespace CorCompare
 		{
 			ArrayList list = new ArrayList ();
 
-			MethodDefinitionCollection methods = type.Methods;//type.GetMethods (flags);
+			var methods = type.Methods;//type.GetMethods (flags);
 			foreach (MethodDefinition method in methods) {
 				if (method.IsSpecialName && !method.Name.StartsWith ("op_"))
 					continue;
@@ -606,8 +635,14 @@ namespace CorCompare
 				if (!MustDocumentMethod(method))
 					continue;
 
-				if (IsFinalizer (method))
-					continue;
+				if (IsFinalizer (method)) {
+					string name = method.DeclaringType.Name;
+					int arity = name.IndexOf ('`');
+					if (arity > 0)
+						name = name.Substring (0, arity);
+
+					method.Name = "~" + name;
+				}
 
 				list.Add (method);
 			}
@@ -633,7 +668,7 @@ namespace CorCompare
 		{
 			ArrayList list = new ArrayList ();
 
-			ConstructorCollection ctors = type.Constructors;//type.GetConstructors (flags);
+			var ctors = type.Methods.Where (m => m.IsConstructor);//type.GetConstructors (flags);
 			foreach (MethodDefinition constructor in ctors) {
 				// we're only interested in public or protected members
 				if (!MustDocumentMethod(constructor))
@@ -649,7 +684,7 @@ namespace CorCompare
 		{
 			ArrayList list = new ArrayList ();
 
-			EventDefinitionCollection events = type.Events;//type.GetEvents (flags);
+			var events = type.Events;//type.GetEvents (flags);
 			foreach (EventDefinition eventDef in events) {
 				MethodDefinition addMethod = eventDef.AddMethod;//eventInfo.GetAddMethod (true);
 
@@ -670,7 +705,7 @@ namespace CorCompare
 		{
 		}
 
-		protected override CustomAttributeCollection GetCustomAttributes (MemberReference member) {
+		protected override IList<CustomAttribute> GetCustomAttributes (MemberReference member) {
 			return ((FieldDefinition) member).CustomAttributes;
 		}
 
@@ -726,7 +761,7 @@ namespace CorCompare
 		{
 		}
 
-		protected override CustomAttributeCollection GetCustomAttributes (MemberReference member) {
+		protected override IList<CustomAttribute> GetCustomAttributes (MemberReference member) {
 			return ((PropertyDefinition) member).CustomAttributes;
 		}
 
@@ -789,7 +824,7 @@ namespace CorCompare
 		{
 		}
 
-		protected override CustomAttributeCollection GetCustomAttributes (MemberReference member) {
+		protected override IList<CustomAttribute> GetCustomAttributes (MemberReference member) {
 			return ((EventDefinition) member).CustomAttributes;
 		}
 
@@ -830,7 +865,7 @@ namespace CorCompare
 		{
 		}
 
-		protected override CustomAttributeCollection GetCustomAttributes (MemberReference member) {
+		protected override IList<CustomAttribute> GetCustomAttributes (MemberReference member) {
 			return ((MethodDefinition) member).CustomAttributes;
 		}
 
@@ -868,11 +903,11 @@ namespace CorCompare
 			if (mbase.IsStatic)
 				AddAttribute (p, "static", "true");
 
-			string rettype = Utils.CleanupTypeName (mbase.ReturnType.ReturnType);
+			string rettype = Utils.CleanupTypeName (mbase.MethodReturnType.ReturnType);
 			if (rettype != "System.Void" || !mbase.IsConstructor)
 				AddAttribute (p, "returntype", (rettype));
 
-			AttributeData.OutputAttributes (document, p, mbase.ReturnType.CustomAttributes);
+			AttributeData.OutputAttributes (document, p, mbase.MethodReturnType.CustomAttributes);
 
 			MemberData.OutputGenericParameters (document, p, mbase);
 		}
@@ -909,9 +944,9 @@ namespace CorCompare
 
 	class ParameterData : BaseData
 	{
-		private ParameterDefinitionCollection parameters;
+		private IList<ParameterDefinition> parameters;
 
-		public ParameterData (XmlDocument document, XmlNode parent, ParameterDefinitionCollection parameters)
+		public ParameterData (XmlDocument document, XmlNode parent, IList<ParameterDefinition> parameters)
 			: base (document, parent)
 		{
 			this.parameters = parameters;
@@ -931,7 +966,7 @@ namespace CorCompare
 
 				string direction = "in";
 
-				if (parameter.ParameterType is ReferenceType)
+				if (parameter.ParameterType is ByReferenceType)
 					direction = parameter.IsOut ? "out" : "ref";
 
 				TypeReference t = parameter.ParameterType;
@@ -953,9 +988,9 @@ namespace CorCompare
 
 	class AttributeData : BaseData
 	{
-		CustomAttributeCollection atts;
+		IList<CustomAttribute> atts;
 
-		AttributeData (XmlDocument doc, XmlNode parent, CustomAttributeCollection attributes)
+		AttributeData (XmlDocument doc, XmlNode parent, IList<CustomAttribute> attributes)
 			: base (doc, parent)
 		{
 			atts = attributes;
@@ -977,12 +1012,6 @@ namespace CorCompare
 
 			for (int i = 0; i < atts.Count; ++i) {
 				CustomAttribute att = atts [i];
-				try {
-					att.Resolve ();
-				} catch {}
-
-				if (!att.Resolved)
-					continue;
 
 				string attName = Utils.CleanupTypeName (att.Constructor.DeclaringType);
 				if (SkipAttribute (att))
@@ -1039,10 +1068,10 @@ namespace CorCompare
 
 		static void PopulateMapping (Dictionary<string, object> mapping, CustomAttribute attribute)
 		{
-			foreach (DictionaryEntry entry in attribute.Properties) {
-				var name = (string) entry.Key;
+			foreach (var named_argument in attribute.Properties) {
+				var name = named_argument.Name;
 
-				mapping.Add (name, GetArgumentValue (attribute.GetPropertyType (name), entry.Value));
+				mapping.Add (name, GetArgumentValue (named_argument.Argument.Type, named_argument.Argument.Value));
 			}
 		}
 
@@ -1065,7 +1094,7 @@ namespace CorCompare
 					break;
 				case Code.Ldarg:
 				case Code.Ldarg_S:
-					argument = ((ParameterDefinition) instruction.Operand).Sequence;
+					argument = ((ParameterDefinition) instruction.Operand).Index + 1;
 					break;
 
 				case Code.Stfld:
@@ -1126,7 +1155,8 @@ namespace CorCompare
 				if (!field_mapping.TryGetValue (pair.Value, out argument))
 					continue;
 
-				mapping.Add (pair.Key.Name, GetArgumentValue (constructor.Parameters [argument].ParameterType, attribute.ConstructorParameters [argument]));
+				var ca_arg = attribute.ConstructorArguments [argument];
+				mapping.Add (pair.Key.Name, GetArgumentValue (ca_arg.Type, ca_arg.Value));
 			}
 		}
 
@@ -1210,7 +1240,7 @@ namespace CorCompare
 				|| type_name.EndsWith ("TODOAttribute");
 		}
 
-		public static void OutputAttributes (XmlDocument doc, XmlNode parent, CustomAttributeCollection attributes)
+		public static void OutputAttributes (XmlDocument doc, XmlNode parent, IList<CustomAttribute> attributes)
 		{
 			AttributeData ad = new AttributeData (doc, parent, attributes);
 			ad.DoOutput ();
@@ -1219,7 +1249,7 @@ namespace CorCompare
 
 	static class Parameters {
 
-		public static string GetSignature (ParameterDefinitionCollection infos)
+		public static string GetSignature (IList<ParameterDefinition> infos)
 		{
 			if (infos == null || infos.Count == 0)
 				return "";
@@ -1235,8 +1265,6 @@ namespace CorCompare
 				string modifier;
 				if ((info.Attributes & ParameterAttributes.In) != 0)
 					modifier = "in";
-				else if ((info.Attributes & ParameterAttributes.Retval) != 0)
-					modifier = "ref";
 				else if ((info.Attributes & ParameterAttributes.Out) != 0)
 					modifier = "out";
 				else
@@ -1293,8 +1321,8 @@ namespace CorCompare
 			if (res != 0)
 				return res;
 
-			ParameterDefinitionCollection pia = ma.Parameters ;
-			ParameterDefinitionCollection pib = mb.Parameters;
+			IList<ParameterDefinition> pia = ma.Parameters ;
+			IList<ParameterDefinition> pib = mb.Parameters;
 			res = pia.Count - pib.Count;
 			if (res != 0)
 				return res;
diff --git a/mcs/tools/culevel/Makefile b/mcs/tools/culevel/Makefile
index cd0d446..a3cd396 100644
--- a/mcs/tools/culevel/Makefile
+++ b/mcs/tools/culevel/Makefile
@@ -7,8 +7,4 @@ PROGRAM = $(topdir)/class/lib/$(PROFILE)/culevel.exe
 
 CLEAN_FILES = culevel.exe culevel.exe.mdb
 
-ifeq (net_2_0_bootstrap, $(PROFILE))
-all-local: $(topdir)/class/lib/$(PROFILE)/culevel.exe
-endif
-
 include ../../build/executable.make
diff --git a/mcs/tools/linker/ChangeLog b/mcs/tools/linker/ChangeLog
index 32d0104..83d3461 100644
--- a/mcs/tools/linker/ChangeLog
+++ b/mcs/tools/linker/ChangeLog
@@ -1,3 +1,35 @@
+2011-01-11  Jb Evain  <jbevain at gmail.com>
+
+	Remove custom ResolutionException now that Cecil is providing one
+
+2010-11-24  Jb Evain  <jbevain at gmail.com>
+
+	[Linker] fix the moonlight tuning wrt debug symbols
+
+2010-11-24  Jb Evain  <jbevain at gmail.com>
+
+	[Linker] properly read symbols
+
+2010-11-24  Jb Evain  <jbevain at gmail.com>
+
+	[Linker] fix custom AssemblyResolver
+
+2010-11-24  Jb Evain  <jbevain at gmail.com>
+
+	[Linker] refactorize how symbols are loaded
+
+2010-11-23  Jb Evain  <jbevain at gmail.com>
+
+	More linker fixes for moonlight
+
+2010-11-23  Jb Evain  <jbevain at gmail.com>
+
+	Fix sweeping of nested types
+
+2010-10-05  Jb Evain  <jbevain at gmail.com>
+
+	Update the linker to cecil-light
+
 2010-05-31  Jb Evain  <jbevain at novell.com>
 
 	Merge the MonoTouch Linker branch.
diff --git a/mcs/tools/linker/ChangeLog b/mcs/tools/linker/ChangeLog.old
similarity index 100%
copy from mcs/tools/linker/ChangeLog
copy to mcs/tools/linker/ChangeLog.old
diff --git a/mcs/tools/linker/Mono.Linker.Steps/BaseStep.cs b/mcs/tools/linker/Mono.Linker.Steps/BaseStep.cs
index 696740e..13cf468 100644
--- a/mcs/tools/linker/Mono.Linker.Steps/BaseStep.cs
+++ b/mcs/tools/linker/Mono.Linker.Steps/BaseStep.cs
@@ -38,6 +38,10 @@ namespace Mono.Linker.Steps {
 			get { return _context; }
 		}
 
+		public AnnotationStore Annotations {
+			get { return _context.Annotations; }
+		}
+
 		public void Process (LinkContext context)
 		{
 			_context = context;
diff --git a/mcs/tools/linker/Mono.Linker.Steps/CleanStep.cs b/mcs/tools/linker/Mono.Linker.Steps/CleanStep.cs
index fabe022..ccc34cb 100644
--- a/mcs/tools/linker/Mono.Linker.Steps/CleanStep.cs
+++ b/mcs/tools/linker/Mono.Linker.Steps/CleanStep.cs
@@ -42,59 +42,20 @@ namespace Mono.Linker.Steps {
 
 		static void CleanAssembly (AssemblyDefinition asm)
 		{
-			CleanMemberReferences (asm.MainModule);
 			foreach (TypeDefinition type in asm.MainModule.Types)
 				CleanType (type);
 		}
 
-		static void CleanMemberReferences (ModuleDefinition module)
-		{
-			var references = module.MemberReferences;
-
-			for (int i = 0; i < references.Count; i++) {
-				var reference = references [i];
-				GenericInstanceType git = reference.DeclaringType as GenericInstanceType;
-				if (git == null)
-					continue;
-
-				foreach (TypeReference arg in git.GenericArguments)
-					if (!CheckType (module, arg))
-						references.RemoveAt (i--);
-			}
-		}
-
-		static bool CheckType (ModuleDefinition module, TypeReference reference)
-		{
-			TypeSpecification spec = reference as TypeSpecification;
-			if (spec != null)
-				return CheckType (module, spec.ElementType);
-
-			TypeDefinition type = reference as TypeDefinition;
-			if (type == null)
-				return true;
-
-			return module.Types.Contains (type);
-		}
-
 		static void CleanType (TypeDefinition type)
 		{
-			if (type.HasNestedTypes)
-				CleanNestedTypes (type);
 			if (type.HasProperties)
 				CleanProperties (type);
 			if (type.HasEvents)
 				CleanEvents (type);
-		}
 
-		static void CleanNestedTypes (TypeDefinition type)
-		{
-			var nested_types = type.NestedTypes;
-
-			for (int i = 0; i < nested_types.Count; i++) {
-				var nested_type = nested_types [i];
-				if (!type.Module.Types.Contains (nested_type))
-					nested_types.RemoveAt (i--);
-			}
+			if (type.HasNestedTypes)
+				foreach (var nested in type.NestedTypes)
+					CleanType (nested);
 		}
 
 		static MethodDefinition CheckMethod (TypeDefinition type, MethodDefinition method)
diff --git a/mcs/tools/linker/Mono.Linker.Steps/LoadI18nAssemblies.cs b/mcs/tools/linker/Mono.Linker.Steps/LoadI18nAssemblies.cs
index c8256a5..45ac924 100644
--- a/mcs/tools/linker/Mono.Linker.Steps/LoadI18nAssemblies.cs
+++ b/mcs/tools/linker/Mono.Linker.Steps/LoadI18nAssemblies.cs
@@ -77,17 +77,15 @@ namespace Mono.Linker.Steps {
 		void LoadAssembly (AssemblyNameReference name)
 		{
 			AssemblyDefinition assembly = Context.Resolve (name);
-			ResolveFromAssemblyStep.ProcessLibrary (assembly);
+			ResolveFromAssemblyStep.ProcessLibrary (Context, assembly);
 		}
 
 		AssemblyNameReference GetAssemblyName (I18nAssemblies assembly)
 		{
-			AssemblyNameReference name = new AssemblyNameReference ();
-			name.Name = "I18N";
+			AssemblyNameReference name = new AssemblyNameReference ("I18N", GetCorlibVersion ());
 			if (assembly != I18nAssemblies.Base)
 				name.Name += "." + assembly;
 
-			name.Version = GetCorlibVersion ();
 			name.PublicKeyToken = _pktoken;
 			return name;
 		}
diff --git a/mcs/tools/linker/Mono.Linker.Steps/MarkStep.cs b/mcs/tools/linker/Mono.Linker.Steps/MarkStep.cs
index 745ed94..f161c15 100644
--- a/mcs/tools/linker/Mono.Linker.Steps/MarkStep.cs
+++ b/mcs/tools/linker/Mono.Linker.Steps/MarkStep.cs
@@ -29,6 +29,8 @@
 
 using System;
 using System.Collections;
+using System.Linq;
+
 using Mono.Cecil;
 using Mono.Cecil.Cil;
 
@@ -40,6 +42,10 @@ namespace Mono.Linker.Steps {
 		Queue _methods;
 		ArrayList _virtual_methods;
 
+		public AnnotationStore Annotations {
+			get { return _context.Annotations; }
+		}
+
 		public MarkStep ()
 		{
 			_methods = new Queue ();
@@ -79,8 +85,10 @@ namespace Mono.Linker.Steps {
 				InitializeFields (type);
 			if (type.HasMethods)
 				InitializeMethods (type.Methods);
-			if (type.HasConstructors)
-				InitializeMethods (type.Constructors);
+
+			if (type.HasNestedTypes)
+				foreach (var nested in type.NestedTypes)
+					InitializeType (nested);
 		}
 
 		void InitializeFields (TypeDefinition type)
@@ -157,27 +165,16 @@ namespace Mono.Linker.Steps {
 			ProcessVirtualMethod (method);
 		}
 
-		void MarkMethodBody (MethodBody body)
+		void MarkMarshalSpec (IMarshalInfoProvider spec)
 		{
-			foreach (VariableDefinition var in body.Variables)
-				MarkType (var.VariableType);
-
-			foreach (ExceptionHandler eh in body.ExceptionHandlers)
-				if (eh.Type == ExceptionHandlerType.Catch)
-					MarkType (eh.CatchType);
-
-			foreach (Instruction instruction in body.Instructions)
-				MarkInstruction (instruction);
-		}
+			if (!spec.HasMarshalInfo)
+				return;
 
-		void MarkMarshalSpec (IHasMarshalSpec spec)
-		{
-			CustomMarshalerSpec marshaler = spec.MarshalSpec as CustomMarshalerSpec;
+			var marshaler = spec.MarshalInfo as CustomMarshalInfo;
 			if (marshaler == null)
 				return;
 
-			TypeDefinition type = _context.GetType (marshaler.ManagedType);
-			MarkType (type);
+			MarkType (marshaler.ManagedType);
 		}
 
 		void MarkCustomAttributes (ICustomAttributeProvider provider)
@@ -193,15 +190,7 @@ namespace Mono.Linker.Steps {
 		{
 			MarkMethod (ca.Constructor);
 
-			if (!ca.Resolved) {
-				ca = ca.Clone ();
-				ca.Resolve ();
-			}
-
-			if (!ca.Resolved)
-				return;
-
-			MarkCustomAttributeParameters (ca);
+			MarkCustomAttributeArguments (ca);
 
 			TypeReference constructor_type = ca.Constructor.DeclaringType;
 			TypeDefinition type = constructor_type.Resolve ();
@@ -214,24 +203,21 @@ namespace Mono.Linker.Steps {
 
 		void MarkCustomAttributeProperties (CustomAttribute ca, TypeDefinition attribute)
 		{
-			foreach (DictionaryEntry de in ca.Properties) {
-				string propertyname = (string) de.Key;
-
-				PropertyDefinition property = GetProperty (attribute, propertyname);
+			foreach (var named_argument in ca.Properties) {
+				PropertyDefinition property = GetProperty (attribute, named_argument.Name);
 				if (property != null)
 					MarkMethod (property.SetMethod);
 
-				TypeReference propType = ca.GetPropertyType (propertyname);
-				MarkIfType (propType, de.Value);
+				MarkIfType (named_argument.Argument);
 			}
 		}
 
 		PropertyDefinition GetProperty (TypeDefinition type, string propertyname)
 		{
 			while (type != null) {
-				PropertyDefinition [] properties = type.Properties.GetProperties (propertyname);
-				if (properties != null && properties.Length != 0 && properties [0].SetMethod != null)
-					return properties [0];
+				PropertyDefinition property = type.Properties.FirstOrDefault (p => p.Name == propertyname);
+				if (property != null)
+					return property;
 
 				type = type.BaseType != null ? ResolveTypeDefinition (type.BaseType) : null;
 			}
@@ -241,22 +227,19 @@ namespace Mono.Linker.Steps {
 
 		void MarkCustomAttributeFields (CustomAttribute ca, TypeDefinition attribute)
 		{
-			foreach (DictionaryEntry de in ca.Fields) {
-				string fieldname = (string) de.Key;
-
-				FieldDefinition field = GetField (attribute, fieldname);
+			foreach (var named_argument in ca.Fields) {
+				FieldDefinition field = GetField (attribute, named_argument.Name);
 				if (field != null)
 					MarkField (field);
 
-				TypeReference fieldType = ca.GetFieldType (fieldname);
-				MarkIfType (fieldType, de.Value);
+				MarkIfType (named_argument.Argument);
 			}
 		}
 
 		FieldDefinition GetField (TypeDefinition type, string fieldname)
 		{
 			while (type != null) {
-				FieldDefinition field = type.Fields.GetField (fieldname);
+				FieldDefinition field = type.Fields.FirstOrDefault (f => f.Name == fieldname);
 				if (field != null)
 					return field;
 
@@ -266,33 +249,22 @@ namespace Mono.Linker.Steps {
 			return null;
 		}
 
-		void MarkCustomAttributeParameters (CustomAttribute ca)
+		void MarkCustomAttributeArguments (CustomAttribute ca)
 		{
-			for (int i = 0; i < ca.Constructor.Parameters.Count; i++) {
-				ParameterDefinition param = ca.Constructor.Parameters [i];
-				MarkIfType (param.ParameterType, ca.ConstructorParameters [i]);
-			}
+			foreach (var argument in ca.ConstructorArguments)
+				MarkIfType (argument);
 		}
 
-		void MarkIfType (TypeReference slotType, object value)
+		void MarkIfType (CustomAttributeArgument argument)
 		{
-			if (slotType.FullName != Constants.Type)
+			if (argument.Type.FullName != "System.Type")
 				return;
 
-			string type_name = (string) value;
-
-			try {
-				var type = TypeParser.ParseType (slotType.Module, type_name);
-				if (type == null)
-					return;
-
-				MarkType (type);
-			} catch {
-				return;
-			}
+			MarkType (argument.Type);
+			MarkType ((TypeReference) argument.Value);
 		}
 
-		protected static bool CheckProcessed (IAnnotationProvider provider)
+		protected bool CheckProcessed (IMetadataTokenProvider provider)
 		{
 			if (Annotations.IsProcessed (provider))
 				return true;
@@ -350,7 +322,7 @@ namespace Mono.Linker.Steps {
 
 		void MarkScope (IMetadataScope scope)
 		{
-			IAnnotationProvider provider = scope as IAnnotationProvider;
+			var provider = scope as IMetadataTokenProvider;
 			if (provider == null)
 				return;
 
@@ -384,13 +356,12 @@ namespace Mono.Linker.Steps {
 			MarkCustomAttributes (type);
 
 			if (IsMulticastDelegate (type)) {
-				MarkMethodCollection (type.Constructors);
 				MarkMethodCollection (type.Methods);
 			}
 
-			if (IsSerializable (type) && type.HasConstructors) {
-				MarkMethodsIf (type.Constructors, IsDefaultConstructorPredicate);
-				MarkMethodsIf (type.Constructors, IsSpecialSerializationConstructorPredicate);
+			if (IsSerializable (type) && type.HasMethods) {
+				MarkMethodsIf (type.Methods, IsDefaultConstructorPredicate);
+				MarkMethodsIf (type.Methods, IsSpecialSerializationConstructorPredicate);
 			}
 
 			MarkTypeSpecialCustomAttributes (type);
@@ -405,11 +376,10 @@ namespace Mono.Linker.Steps {
 					MarkType (iface);
 			}
 
-			if (type.HasMethods)
+			if (type.HasMethods) {
 				MarkMethodsIf (type.Methods, IsVirtualAndHasPreservedParent);
-
-			if (type.HasConstructors)
-				MarkMethodsIf (type.Constructors, IsStaticConstructorPredicate);
+				MarkMethodsIf (type.Methods, IsStaticConstructorPredicate);
+			}
 
 			Annotations.Mark (type);
 
@@ -457,10 +427,10 @@ namespace Mono.Linker.Steps {
 		{
 			argument = null;
 
-			if (!attribute.Resolved || attribute.ConstructorParameters.Count < 1)
+			if (attribute.ConstructorArguments.Count < 1)
 				return false;
 
-			argument = attribute.ConstructorParameters [0] as string;
+			argument = attribute.ConstructorArguments [0].Value as string;
 
 			return argument != null;
 		}
@@ -558,7 +528,7 @@ namespace Mono.Linker.Steps {
 			if (!IsConstructor (method))
 				return false;
 
-			ParameterDefinitionCollection parameters = method.Parameters;
+			var parameters = method.Parameters;
 			if (parameters.Count != 2)
 				return false;
 
@@ -584,16 +554,14 @@ namespace Mono.Linker.Steps {
 
 		static bool IsConstructor (MethodDefinition method)
 		{
-			return method.Name == MethodDefinition.Ctor && method.IsSpecialName &&
-				method.IsRuntimeSpecialName;
+			return method.IsConstructor && !method.IsStatic;
 		}
 
 		static MethodPredicate IsStaticConstructorPredicate = new MethodPredicate (IsStaticConstructor);
 
 		static bool IsStaticConstructor (MethodDefinition method)
 		{
-			return method.Name == MethodDefinition.Cctor && method.IsSpecialName &&
-				method.IsRuntimeSpecialName;
+			return method.IsConstructor && method.IsStatic;
 		}
 
 		static bool IsSerializable (TypeDefinition td)
@@ -622,7 +590,7 @@ namespace Mono.Linker.Steps {
 				if (git != null)
 					MarkGenericArguments (git);
 
-				ModType mod = type as ModType;
+				var mod = type as IModifierType;
 				if (mod != null)
 					MarkModifierType (mod);
 
@@ -632,7 +600,7 @@ namespace Mono.Linker.Steps {
 			return type;
 		}
 
-		void MarkModifierType (ModType mod)
+		void MarkModifierType (IModifierType mod)
 		{
 			MarkType (mod.ModifierType);
 		}
@@ -669,7 +637,7 @@ namespace Mono.Linker.Steps {
 				if (argument_definition == null)
 					continue;
 
-				MarkMethodsIf (argument_definition.Constructors, ctor => !ctor.IsStatic && !ctor.HasParameters);
+				MarkMethodsIf (argument_definition.Methods, ctor => !ctor.IsStatic && !ctor.HasParameters);
 			}
 		}
 
@@ -730,8 +698,6 @@ namespace Mono.Linker.Steps {
 		{
 			if (type.HasMethods)
 				MarkMethodCollection (type.Methods);
-			if (type.HasConstructors)
-				MarkMethodCollection (type.Constructors);
 		}
 
 		void MarkMethodCollection (IEnumerable methods)
@@ -825,9 +791,9 @@ namespace Mono.Linker.Steps {
 
 			MarkBaseMethods (method);
 
-			MarkType (method.ReturnType.ReturnType);
-			MarkCustomAttributes (method.ReturnType);
-			MarkMarshalSpec (method.ReturnType);
+			MarkType (method.ReturnType);
+			MarkCustomAttributes (method.MethodReturnType);
+			MarkMarshalSpec (method.MethodReturnType);
 
 			if (ShouldParseMethodBody (method))
 				MarkMethodBody (method.Body);
@@ -911,6 +877,19 @@ namespace Mono.Linker.Steps {
 			MarkMethod (method);
 		}
 
+		void MarkMethodBody (MethodBody body)
+		{
+			foreach (VariableDefinition var in body.Variables)
+				MarkType (var.VariableType);
+
+			foreach (ExceptionHandler eh in body.ExceptionHandlers)
+				if (eh.HandlerType == ExceptionHandlerType.Catch)
+					MarkType (eh.CatchType);
+
+			foreach (Instruction instruction in body.Instructions)
+				MarkInstruction (instruction);
+		}
+
 		void MarkInstruction (Instruction instruction)
 		{
 			switch (instruction.OpCode.OperandType) {
diff --git a/mcs/tools/linker/Mono.Linker.Steps/OutputStep.cs b/mcs/tools/linker/Mono.Linker.Steps/OutputStep.cs
index f6ec44d..d2b137c 100644
--- a/mcs/tools/linker/Mono.Linker.Steps/OutputStep.cs
+++ b/mcs/tools/linker/Mono.Linker.Steps/OutputStep.cs
@@ -61,8 +61,7 @@ namespace Mono.Linker.Steps {
 
 			switch (Annotations.GetAction (assembly)) {
 			case AssemblyAction.Link:
-				SaveSymbols (assembly);
-				AssemblyFactory.SaveAssembly (assembly, GetAssemblyFileName (assembly, directory));
+				assembly.Write (GetAssemblyFileName (assembly, directory), SaveSymbols (assembly));
 				break;
 			case AssemblyAction.Copy:
 				CopyAssembly (GetOriginalAssemblyFileInfo (assembly), directory);
@@ -75,15 +74,17 @@ namespace Mono.Linker.Steps {
 			}
 		}
 
-		void SaveSymbols (AssemblyDefinition assembly)
+		WriterParameters SaveSymbols (AssemblyDefinition assembly)
 		{
+			var parameters = new WriterParameters ();
 			if (!Context.LinkSymbols)
-				return;
+				return parameters;
 
-			if (!Annotations.HasSymbols (assembly))
-				return;
+			if (!assembly.MainModule.HasSymbols)
+				return parameters;
 
-			assembly.MainModule.SaveSymbols();
+			parameters.WriteSymbols = true;
+			return parameters;
 		}
 
 		static void CopyConfigFileIfNeeded (AssemblyDefinition assembly, string directory)
@@ -107,7 +108,7 @@ namespace Mono.Linker.Steps {
 
 		static FileInfo GetOriginalAssemblyFileInfo (AssemblyDefinition assembly)
 		{
-			return assembly.MainModule.Image.FileInformation;
+			return new FileInfo (assembly.MainModule.FullyQualifiedName);
 		}
 
 		static void CopyAssembly (FileInfo fi, string directory)
@@ -121,7 +122,7 @@ namespace Mono.Linker.Steps {
 
 		static string GetAssemblyFileName (AssemblyDefinition assembly, string directory)
 		{
-			string file = assembly.Name.Name + (assembly.Kind == AssemblyKind.Dll ? ".dll" : ".exe");
+			string file = assembly.Name.Name + (assembly.MainModule.Kind == ModuleKind.Dll ? ".dll" : ".exe");
 			return Path.Combine (directory, file);
 		}
 	}
diff --git a/mcs/tools/linker/Mono.Linker.Steps/ResolveFromAssemblyStep.cs b/mcs/tools/linker/Mono.Linker.Steps/ResolveFromAssemblyStep.cs
index 37e707d..9872cbe 100644
--- a/mcs/tools/linker/Mono.Linker.Steps/ResolveFromAssemblyStep.cs
+++ b/mcs/tools/linker/Mono.Linker.Steps/ResolveFromAssemblyStep.cs
@@ -46,18 +46,16 @@ namespace Mono.Linker.Steps {
 			_assembly = assembly;
 		}
 
-		public override void Process (LinkContext context)
+		protected override void Process ()
 		{
-			if (_assembly != null) {
-				context.SafeLoadSymbols (_assembly);
-				context.Resolver.CacheAssembly (_assembly);
-			}
+			if (_assembly != null)
+				Context.Resolver.CacheAssembly (_assembly);
 
-			AssemblyDefinition assembly = _assembly ?? context.Resolve (_file);
+			AssemblyDefinition assembly = _assembly ?? Context.Resolve (_file);
 
-			switch (assembly.Kind) {
-			case AssemblyKind.Dll:
-				ProcessLibrary (assembly);
+			switch (assembly.MainModule.Kind) {
+			case ModuleKind.Dll:
+				ProcessLibrary (Context, assembly);
 				return;
 			default:
 				ProcessExecutable (assembly);
@@ -65,46 +63,51 @@ namespace Mono.Linker.Steps {
 			}
 		}
 
-		public static void ProcessLibrary (AssemblyDefinition assembly)
+		public static void ProcessLibrary (LinkContext context, AssemblyDefinition assembly)
 		{
-			Annotations.SetAction (assembly, AssemblyAction.Copy);
+			context.Annotations.SetAction (assembly, AssemblyAction.Copy);
 
-			foreach (TypeDefinition type in assembly.MainModule.Types) {
-				Annotations.Mark (type);
+			foreach (TypeDefinition type in assembly.MainModule.Types)
+				MarkType (context, type);
+		}
 
-				if (type.HasFields)
-					MarkFields (type.Fields);
-				if (type.HasMethods)
-					MarkMethods (type.Methods);
-				if (type.HasConstructors)
-					MarkMethods (type.Constructors);
-			}
+		static void MarkType (LinkContext context, TypeDefinition type)
+		{
+			context.Annotations.Mark (type);
+
+			if (type.HasFields)
+				MarkFields (context, type.Fields);
+			if (type.HasMethods)
+				MarkMethods (context, type.Methods);
+			if (type.HasNestedTypes)
+				foreach (var nested in type.NestedTypes)
+					MarkType (context, nested);
 		}
 
-		static void ProcessExecutable (AssemblyDefinition assembly)
+		void ProcessExecutable (AssemblyDefinition assembly)
 		{
 			Annotations.SetAction (assembly, AssemblyAction.Link);
 
 			Annotations.Mark (assembly.EntryPoint.DeclaringType);
-			MarkMethod (assembly.EntryPoint, MethodAction.Parse);
+			MarkMethod (Context, assembly.EntryPoint, MethodAction.Parse);
 		}
 
-		static void MarkFields (ICollection fields)
+		static void MarkFields (LinkContext context, ICollection fields)
 		{
 			foreach (FieldDefinition field in fields)
-				Annotations.Mark (field);
+				context.Annotations.Mark (field);
 		}
 
-		static void MarkMethods (ICollection methods)
+		static void MarkMethods (LinkContext context, ICollection methods)
 		{
 			foreach (MethodDefinition method in methods)
-				MarkMethod (method, MethodAction.ForceParse);
+				MarkMethod (context, method, MethodAction.ForceParse);
 		}
 
-		static void MarkMethod (MethodDefinition method, MethodAction action)
+		static void MarkMethod (LinkContext context, MethodDefinition method, MethodAction action)
 		{
-			Annotations.Mark (method);
-			Annotations.SetAction (method, action);
+			context.Annotations.Mark (method);
+			context.Annotations.SetAction (method, action);
 		}
 	}
 }
diff --git a/mcs/tools/linker/Mono.Linker.Steps/ResolveFromXApiStep.cs b/mcs/tools/linker/Mono.Linker.Steps/ResolveFromXApiStep.cs
index 453eeba..c4ce86d 100644
--- a/mcs/tools/linker/Mono.Linker.Steps/ResolveFromXApiStep.cs
+++ b/mcs/tools/linker/Mono.Linker.Steps/ResolveFromXApiStep.cs
@@ -39,8 +39,6 @@ namespace Mono.Linker.Steps {
 		static readonly string _name = "name";
 		static readonly string _ns = string.Empty;
 
-		LinkContext _context;
-
 		XPathDocument _document;
 
 		public ResolveFromXApiStep (XPathDocument document)
@@ -48,11 +46,10 @@ namespace Mono.Linker.Steps {
 			_document = document;
 		}
 
-		public override void Process (LinkContext context)
+		protected override void Process ()
 		{
-			_context = context;
 			XApiReader reader = new XApiReader (_document, this);
-			reader.Process (context);
+			reader.Process (Context);
 		}
 
 		public void OnAssembly (XPathNavigator nav, AssemblyDefinition assembly)
@@ -63,7 +60,7 @@ namespace Mono.Linker.Steps {
 		{
 			string name = GetName (nav);
 
-			TypeDefinition type = _context.GetType (name);
+			TypeDefinition type = Context.GetType (name);
 			if (type != null)
 				MarkType (type);
 		}
@@ -117,23 +114,23 @@ namespace Mono.Linker.Steps {
 			return nav.GetAttribute (attribute, _ns);
 		}
 
-		static void MarkType (TypeDefinition type)
+		void MarkType (TypeDefinition type)
 		{
 			InternalMark (type);
 		}
 
-		static void MarkField (FieldDefinition field)
+		void MarkField (FieldDefinition field)
 		{
 			InternalMark (field);
 		}
 
-		static void InternalMark (IAnnotationProvider provider)
+		void InternalMark (IMetadataTokenProvider provider)
 		{
 			Annotations.Mark (provider);
 			Annotations.SetPublic (provider);
 		}
 
-		static void MarkMethod (MethodDefinition method)
+		void MarkMethod (MethodDefinition method)
 		{
 			InternalMark (method);
 			Annotations.SetAction (method, MethodAction.Parse);
diff --git a/mcs/tools/linker/Mono.Linker.Steps/ResolveFromXmlStep.cs b/mcs/tools/linker/Mono.Linker.Steps/ResolveFromXmlStep.cs
index ee16fa1..593f532 100644
--- a/mcs/tools/linker/Mono.Linker.Steps/ResolveFromXmlStep.cs
+++ b/mcs/tools/linker/Mono.Linker.Steps/ResolveFromXmlStep.cs
@@ -52,11 +52,11 @@ namespace Mono.Linker.Steps {
 			_document = document;
 		}
 
-		public override void Process (LinkContext context)
+		protected override void Process ()
 		{
 			XPathNavigator nav = _document.CreateNavigator ();
 			nav.MoveToFirstChild ();
-			ProcessAssemblies (context, nav.SelectChildren ("assembly", _ns));
+			ProcessAssemblies (Context, nav.SelectChildren ("assembly", _ns));
 		}
 
 		void ProcessAssemblies (LinkContext context, XPathNodeIterator iterator)
@@ -81,7 +81,7 @@ namespace Mono.Linker.Steps {
 			}
 		}
 
-		static void MarkAndPreserveAll (TypeDefinition type)
+		void MarkAndPreserveAll (TypeDefinition type)
 		{
 			Annotations.Mark (type);
 			Annotations.SetPreserve (type, TypePreserve.All);
@@ -104,7 +104,7 @@ namespace Mono.Linker.Steps {
 					continue;
 				}
 
-				TypeDefinition type = assembly.MainModule.Types [fullname];
+				TypeDefinition type = assembly.MainModule.GetType (fullname);
 				if (type == null)
 					continue;
 
@@ -276,15 +276,12 @@ namespace Mono.Linker.Steps {
 		void ProcessMethodName (TypeDefinition type, XPathNavigator nav)
 		{
 			string name = GetAttribute (nav, "name");
-			if (name == ".ctor" || name == ".cctor" && type.HasConstructors)
-				foreach (MethodDefinition ctor in type.Constructors)
-					if (name == ctor.Name)
-						MarkMethod (type, ctor, name);
+			if (!type.HasMethods)
+				return;
 
-			if (type.HasMethods)
-				foreach (MethodDefinition method in type.Methods)
-					if (name == method.Name)
-						MarkMethod (type, method, name);
+			foreach (MethodDefinition method in type.Methods)
+				if (name == method.Name)
+					MarkMethod (type, method, name);
 		}
 
 		static MethodDefinition GetMethod (TypeDefinition type, string signature)
@@ -294,18 +291,13 @@ namespace Mono.Linker.Steps {
 					if (signature == GetMethodSignature (meth))
 						return meth;
 
-			if (type.HasConstructors)
-				foreach (MethodDefinition ctor in type.Constructors)
-					if (signature == GetMethodSignature (ctor))
-						return ctor;
-
 			return null;
 		}
 
 		static string GetMethodSignature (MethodDefinition meth)
 		{
 			StringBuilder sb = new StringBuilder ();
-			sb.Append (meth.ReturnType.ReturnType.FullName);
+			sb.Append (meth.ReturnType.FullName);
 			sb.Append (" ");
 			sb.Append (meth.Name);
 			sb.Append ("(");
diff --git a/mcs/tools/linker/Mono.Linker.Steps/ResolveStep.cs b/mcs/tools/linker/Mono.Linker.Steps/ResolveStep.cs
index f6d9c9c..b17bf5c 100644
--- a/mcs/tools/linker/Mono.Linker.Steps/ResolveStep.cs
+++ b/mcs/tools/linker/Mono.Linker.Steps/ResolveStep.cs
@@ -30,7 +30,7 @@ namespace Mono.Linker.Steps {
 
 	using System.Collections;
 
-	public abstract class ResolveStep : IStep {
+	public abstract class ResolveStep : BaseStep {
 
 		ArrayList _unResolved;
 
@@ -53,7 +53,5 @@ namespace Mono.Linker.Steps {
 		{
 			_unResolved.Add (signature);
 		}
-
-		public abstract void Process (LinkContext context);
 	}
 }
diff --git a/mcs/tools/linker/Mono.Linker.Steps/SweepStep.cs b/mcs/tools/linker/Mono.Linker.Steps/SweepStep.cs
index d5fe17d..371f049 100644
--- a/mcs/tools/linker/Mono.Linker.Steps/SweepStep.cs
+++ b/mcs/tools/linker/Mono.Linker.Steps/SweepStep.cs
@@ -28,18 +28,18 @@
 //
 
 using System.Collections;
-
+using System.Collections.Generic;
 using Mono.Cecil;
 
 namespace Mono.Linker.Steps {
 
-	public class SweepStep : IStep {
+	public class SweepStep : BaseStep {
 
 		AssemblyDefinition [] assemblies;
 
-		public void Process (LinkContext context)
+		protected override void Process ()
 		{
-			assemblies = context.GetAssemblies ();
+			assemblies = Context.GetAssemblies ();
 			foreach (var assembly in assemblies)
 				SweepAssembly (assembly);
 		}
@@ -55,7 +55,7 @@ namespace Mono.Linker.Steps {
 			}
 
 			var types = assembly.MainModule.Types;
-			var cloned_types = Clone (types);
+			var cloned_types = new List<TypeDefinition> (types);
 
 			types.Clear ();
 
@@ -66,11 +66,12 @@ namespace Mono.Linker.Steps {
 					continue;
 				}
 
-				SweepReferences (assembly, type);
+				if (type.Name == "<Module>")
+					types.Add (type);
 			}
 		}
 
-		static bool IsMarkedAssembly (AssemblyDefinition assembly)
+		bool IsMarkedAssembly (AssemblyDefinition assembly)
 		{
 			return Annotations.IsMarked (assembly.MainModule);
 		}
@@ -106,56 +107,34 @@ namespace Mono.Linker.Steps {
 			return new ArrayList (collection);
 		}
 
-		void SweepReferences (AssemblyDefinition assembly, TypeDefinition type)
-		{
-			foreach (AssemblyDefinition asm in assemblies) {
-				ModuleDefinition module = asm.MainModule;
-				if (!module.TypeReferences.Contains (type))
-					continue;
-
-				TypeReference typeRef = module.TypeReferences [type.FullName];
-				if (AssemblyMatch (assembly, typeRef)) {
-					SweepMemberReferences (module, typeRef);
-					module.TypeReferences.Remove (typeRef);
-				}
-			}
-		}
-
-		static void SweepMemberReferences (ModuleDefinition module, TypeReference reference)
-		{
-			var references = module.MemberReferences;
-
-			for (int i = 0; i < references.Count; i++) {
-				if (references [i].DeclaringType == reference)
-					references.RemoveAt (i--);
-			}
-		}
-
-		static bool AssemblyMatch (AssemblyDefinition assembly, TypeReference type)
-		{
-			AssemblyNameReference reference = type.Scope as AssemblyNameReference;
-			if (reference == null)
-				return false;
-
-			return AreSameReference (assembly.Name, reference);
-		}
-
-		static void SweepType (TypeDefinition type)
+		void SweepType (TypeDefinition type)
 		{
 			if (type.HasFields)
 				SweepCollection (type.Fields);
 
-			if (type.HasConstructors)
-				SweepCollection (type.Constructors);
-
 			if (type.HasMethods)
 				SweepCollection (type.Methods);
+
+			if (type.HasNestedTypes)
+				SweepNestedTypes (type);
+		}
+
+		void SweepNestedTypes (TypeDefinition type)
+		{
+			for (int i = 0; i < type.NestedTypes.Count; i++) {
+				var nested = type.NestedTypes [i];
+				if (Annotations.IsMarked (nested)) {
+					SweepType (nested);
+				} else {
+					type.NestedTypes.RemoveAt (i--);
+				}
+			}
 		}
 
-		static void SweepCollection (IList list)
+		void SweepCollection (IList list)
 		{
 			for (int i = 0; i < list.Count; i++)
-				if (!Annotations.IsMarked ((IAnnotationProvider) list [i]))
+				if (!Annotations.IsMarked ((IMetadataTokenProvider) list [i]))
 					list.RemoveAt (i--);
 		}
 
diff --git a/mcs/tools/linker/Mono.Linker.Steps/TypeMapStep.cs b/mcs/tools/linker/Mono.Linker.Steps/TypeMapStep.cs
index f92b242..8f0d4c1 100644
--- a/mcs/tools/linker/Mono.Linker.Steps/TypeMapStep.cs
+++ b/mcs/tools/linker/Mono.Linker.Steps/TypeMapStep.cs
@@ -41,12 +41,42 @@ namespace Mono.Linker.Steps {
 				MapType (type);
 		}
 
-		static void MapType (TypeDefinition type)
+		void MapType (TypeDefinition type)
 		{
 			MapVirtualMethods (type);
+			MapInterfaceMethodsInTypeHierarchy (type);
+
+			if (!type.HasNestedTypes)
+				return;
+
+			foreach (var nested in type.NestedTypes)
+				MapType (nested);
 		}
 
-		static void MapVirtualMethods (TypeDefinition type)
+		void MapInterfaceMethodsInTypeHierarchy (TypeDefinition type)
+		{
+			if (!type.HasInterfaces)
+				return;
+
+			foreach (TypeReference @interface in type.Interfaces) {
+				var iface = @interface.Resolve ();
+				if (iface == null || !iface.HasMethods)
+					continue;
+
+				foreach (MethodDefinition method in iface.Methods) {
+					if (TryMatchMethod (type, method) != null)
+						continue;
+
+					var @base = GetBaseMethodInTypeHierarchy (type, method);
+					if (@base == null)
+						continue;
+
+					Annotations.AddPreservedMethod (type, @base);
+				}
+			}
+		}
+
+		void MapVirtualMethods (TypeDefinition type)
 		{
 			if (!type.HasMethods)
 				return;
@@ -62,13 +92,13 @@ namespace Mono.Linker.Steps {
 			}
 		}
 
-		static void MapVirtualMethod (MethodDefinition method)
+		void MapVirtualMethod (MethodDefinition method)
 		{
 			MapVirtualBaseMethod (method);
 			MapVirtualInterfaceMethod (method);
 		}
 
-		static void MapVirtualBaseMethod (MethodDefinition method)
+		void MapVirtualBaseMethod (MethodDefinition method)
 		{
 			MethodDefinition @base = GetBaseMethodInTypeHierarchy (method);
 			if (@base == null)
@@ -77,7 +107,7 @@ namespace Mono.Linker.Steps {
 			AnnotateMethods (@base, method);
 		}
 
-		static void MapVirtualInterfaceMethod (MethodDefinition method)
+		void MapVirtualInterfaceMethod (MethodDefinition method)
 		{
 			MethodDefinition @base = GetBaseMethodInInterfaceHierarchy (method);
 			if (@base == null)
@@ -86,7 +116,7 @@ namespace Mono.Linker.Steps {
 			AnnotateMethods (@base, method);
 		}
 
-		static void MapOverrides (MethodDefinition method)
+		void MapOverrides (MethodDefinition method)
 		{
 			foreach (MethodReference override_ref in method.Overrides) {
 				MethodDefinition @override = override_ref.Resolve ();
@@ -97,7 +127,7 @@ namespace Mono.Linker.Steps {
 			}
 		}
 
-		static void AnnotateMethods (MethodDefinition @base, MethodDefinition @override)
+		void AnnotateMethods (MethodDefinition @base, MethodDefinition @override)
 		{
 			Annotations.AddBaseMethod (@override, @base);
 			Annotations.AddOverride (@base, @override);
@@ -105,7 +135,12 @@ namespace Mono.Linker.Steps {
 
 		static MethodDefinition GetBaseMethodInTypeHierarchy (MethodDefinition method)
 		{
-			TypeDefinition @base = GetBaseType (method.DeclaringType);
+			return GetBaseMethodInTypeHierarchy (method.DeclaringType, method);
+		}
+
+		static MethodDefinition GetBaseMethodInTypeHierarchy (TypeDefinition type, MethodDefinition method)
+		{
+			TypeDefinition @base = GetBaseType (type);
 			while (@base != null) {
 				MethodDefinition base_method = TryMatchMethod (@base, method);
 				if (base_method != null)
@@ -164,7 +199,7 @@ namespace Mono.Linker.Steps {
 			if (candidate.Name != method.Name)
 				return false;
 
-			if (!TypeMatch (candidate.ReturnType.ReturnType, method.ReturnType.ReturnType))
+			if (!TypeMatch (candidate.ReturnType, method.ReturnType))
 				return false;
 
 			if (candidate.Parameters.Count != method.Parameters.Count)
@@ -177,7 +212,7 @@ namespace Mono.Linker.Steps {
 			return true;
 		}
 
-		static bool TypeMatch (ModType a, ModType b)
+		static bool TypeMatch (IModifierType a, IModifierType b)
 		{
 			if (!TypeMatch (a.ModifierType, b.ModifierType))
 				return false;
@@ -190,8 +225,8 @@ namespace Mono.Linker.Steps {
 			if (a is GenericInstanceType)
 				return TypeMatch ((GenericInstanceType) a, (GenericInstanceType) b);
 
-			if (a is ModType)
-				return TypeMatch ((ModType) a, (ModType) b);
+			if (a is IModifierType)
+				return TypeMatch ((IModifierType) a, (IModifierType) b);
 
 			return TypeMatch (a.ElementType, b.ElementType);
 		}
diff --git a/mcs/tools/linker/Mono.Linker/Annotations.cs b/mcs/tools/linker/Mono.Linker/Annotations.cs
index 55330d3..c29da52 100644
--- a/mcs/tools/linker/Mono.Linker/Annotations.cs
+++ b/mcs/tools/linker/Mono.Linker/Annotations.cs
@@ -28,162 +28,330 @@
 
 using System;
 using System.Collections;
+using System.Collections.Generic;
 
 using Mono.Cecil;
 
 namespace Mono.Linker {
 
-	public class Annotations {
+	public class AnnotationStore {
 
-		private static readonly object _actionKey = new object ();
-		private static readonly object _markedKey = new object ();
-		private static readonly object _processedKey = new object ();
-		private static readonly object _preservedKey = new object ();
-		private static readonly object _preservedMethodsKey = new object ();
-		private static readonly object _publicKey = new object ();
-		private static readonly object _symbolsKey = new object ();
-		private static readonly object _overrideKey = new object ();
-		private static readonly object _baseKey = new object ();
+		readonly Dictionary<AssemblyDefinition, AssemblyAction> assembly_actions = new Dictionary<AssemblyDefinition, AssemblyAction> ();
+		readonly Dictionary<MethodDefinition, MethodAction> method_actions = new Dictionary<MethodDefinition, MethodAction> ();
+		readonly HashSet<IMetadataTokenProvider> marked = new HashSet<IMetadataTokenProvider> ();
+		readonly HashSet<IMetadataTokenProvider> processed = new HashSet<IMetadataTokenProvider> ();
+		readonly Dictionary<TypeDefinition, TypePreserve> preserved_types = new Dictionary<TypeDefinition, TypePreserve> ();
+		readonly Dictionary<TypeDefinition, List<MethodDefinition>> preserved_methods = new Dictionary<TypeDefinition, List<MethodDefinition>> ();
+		readonly HashSet<IMetadataTokenProvider> public_api = new HashSet<IMetadataTokenProvider> ();
+		readonly Dictionary<MethodDefinition, List<MethodDefinition>> override_methods = new Dictionary<MethodDefinition, List<MethodDefinition>> ();
+		readonly Dictionary<MethodDefinition, List<MethodDefinition>> base_methods = new Dictionary<MethodDefinition, List<MethodDefinition>> ();
 
-		public static AssemblyAction GetAction (AssemblyDefinition assembly)
+		readonly Dictionary<object, Dictionary<IMetadataTokenProvider, object>> custom_annotations = new Dictionary<object, Dictionary<IMetadataTokenProvider, object>> ();
+
+		public AssemblyAction GetAction (AssemblyDefinition assembly)
 		{
-			return (AssemblyAction) GetAction (AsProvider (assembly));
+			AssemblyAction action;
+			if (assembly_actions.TryGetValue (assembly, out action))
+				return action;
+
+			throw new NotSupportedException ();
 		}
 
-		public static MethodAction GetAction (MethodDefinition method)
+		public MethodAction GetAction (MethodDefinition method)
 		{
-			var action = GetAction (AsProvider (method));
-			return action == null ? MethodAction.Nothing : (MethodAction) action;
+			MethodAction action;
+			if (method_actions.TryGetValue (method, out action))
+				return action;
+
+			return MethodAction.Nothing;
 		}
 
-		static object GetAction (IAnnotationProvider provider)
+		public void SetAction (AssemblyDefinition assembly, AssemblyAction action)
 		{
-			return provider.Annotations [_actionKey];
+			assembly_actions [assembly] = action;
 		}
 
-		public static bool HasAction (IAnnotationProvider provider)
+		public bool HasAction (AssemblyDefinition assembly)
 		{
-			return provider.Annotations.Contains (_actionKey);
+			return assembly_actions.ContainsKey (assembly);
 		}
 
-		public static void SetAction (AssemblyDefinition assembly, AssemblyAction action)
+		public void SetAction (MethodDefinition method, MethodAction action)
 		{
-			SetAction (AsProvider (assembly), action);
+			method_actions [method] = action;
 		}
 
-		public static void SetAction (MethodDefinition method, MethodAction action)
+		public void Mark (IMetadataTokenProvider provider)
 		{
-			SetAction (AsProvider (method), action);
+			marked.Add (provider);
 		}
 
-		static void SetAction (IAnnotationProvider provider, object action)
+		public bool IsMarked (IMetadataTokenProvider provider)
 		{
-			provider.Annotations [_actionKey] = action;
+			return marked.Contains (provider);
 		}
 
-		public static void Mark (IAnnotationProvider provider)
+		public void Processed (IMetadataTokenProvider provider)
 		{
-			provider.Annotations [_markedKey] = _markedKey;
+			processed.Add (provider);
 		}
 
-		public static bool IsMarked (IAnnotationProvider provider)
+		public bool IsProcessed (IMetadataTokenProvider provider)
 		{
-			return provider.Annotations.Contains (_markedKey);
+			return processed.Contains (provider);
 		}
 
-		public static void Processed (IAnnotationProvider provider)
+		public bool IsPreserved (TypeDefinition type)
 		{
-			provider.Annotations [_processedKey] = _processedKey;
+			return preserved_types.ContainsKey (type);
 		}
 
-		public static bool IsProcessed (IAnnotationProvider provider)
+		public void SetPreserve (TypeDefinition type, TypePreserve preserve)
 		{
-			return provider.Annotations.Contains (_processedKey);
+			preserved_types [type] = preserve;
 		}
 
-		public static bool IsPreserved (TypeDefinition type)
+		public TypePreserve GetPreserve (TypeDefinition type)
 		{
-			return AsProvider (type).Annotations.Contains (_preservedKey);
+			TypePreserve preserve;
+			if (preserved_types.TryGetValue (type, out preserve))
+				return preserve;
+
+			throw new NotSupportedException ();
 		}
 
-		public static void SetPreserve (TypeDefinition type, TypePreserve preserve)
+		public void SetPublic (IMetadataTokenProvider provider)
 		{
-			AsProvider (type).Annotations [_preservedKey] = preserve;
+			public_api.Add (provider);
 		}
 
-		public static TypePreserve GetPreserve (TypeDefinition type)
+		public bool IsPublic (IMetadataTokenProvider provider)
+		{
+			return public_api.Contains (provider);
+		}
+
+		public void AddOverride (MethodDefinition @base, MethodDefinition @override)
+		{
+			var methods = GetOverrides (@base);
+			if (methods == null) {
+				methods = new List<MethodDefinition> ();
+				override_methods [@base] = methods;
+			}
+
+			methods.Add (@override);
+		}
+
+		public List<MethodDefinition> GetOverrides (MethodDefinition method)
+		{
+			List<MethodDefinition> overrides;
+			if (override_methods.TryGetValue (method, out overrides))
+				return overrides;
+
+			return null;
+		}
+
+		public void AddBaseMethod (MethodDefinition method, MethodDefinition @base)
+		{
+			var methods = GetBaseMethods (method);
+			if (methods == null) {
+				methods = new List<MethodDefinition> ();
+				base_methods [method] = methods;
+			}
+
+			methods.Add (@base);
+		}
+
+		public List<MethodDefinition> GetBaseMethods (MethodDefinition method)
+		{
+			List<MethodDefinition> bases;
+			if (base_methods.TryGetValue (method, out bases))
+				return bases;
+
+			return null;
+		}
+
+		public List<MethodDefinition> GetPreservedMethods (TypeDefinition type)
+		{
+			List<MethodDefinition> preserved;
+			if (preserved_methods.TryGetValue (type, out preserved))
+				return preserved;
+
+			return null;
+		}
+
+		public void AddPreservedMethod (TypeDefinition type, MethodDefinition method)
+		{
+			var methods = GetPreservedMethods (type);
+			if (methods == null) {
+				methods = new List<MethodDefinition> ();
+				preserved_methods [type] = methods;
+			}
+
+			methods.Add (method);
+		}
+
+		public Dictionary<IMetadataTokenProvider, object> GetCustomAnnotations (object key)
+		{
+			Dictionary<IMetadataTokenProvider, object> slots;
+			if (custom_annotations.TryGetValue (key, out slots))
+				return slots;
+
+			slots = new Dictionary<IMetadataTokenProvider, object> ();
+			custom_annotations.Add (key, slots);
+			return slots;
+		}
+	}
+
+	/*
+	public class Annotations {
+
+		static readonly Dictionary<AssemblyDefinition, AssemblyAction> assembly_actions = new Dictionary<AssemblyDefinition, AssemblyAction> ();
+		static readonly Dictionary<MethodDefinition, MethodAction> method_actions = new Dictionary<MethodDefinition, MethodAction> ();
+		static readonly HashSet<IMetadataTokenProvider> marked = new HashSet<IMetadataTokenProvider> ();
+		static readonly HashSet<IMetadataTokenProvider> processed = new HashSet<IMetadataTokenProvider> ();
+		static readonly Dictionary<TypeDefinition, TypePreserve> preserved_types = new Dictionary<TypeDefinition, TypePreserve> ();
+		static readonly Dictionary<TypeDefinition, List<MethodDefinition>> preserved_methods = new Dictionary<TypeDefinition, List<MethodDefinition>> ();
+		static readonly HashSet<IMetadataTokenProvider> public_api = new HashSet<IMetadataTokenProvider> ();
+		static readonly Dictionary<MethodDefinition, List<MethodDefinition>> override_methods = new Dictionary<MethodDefinition, List<MethodDefinition>> ();
+		static readonly Dictionary<MethodDefinition, List<MethodDefinition>> base_methods = new Dictionary<MethodDefinition, List<MethodDefinition>> ();
+
+		public static AssemblyAction GetAction (AssemblyDefinition assembly)
+		{
+			AssemblyAction action;
+			if (assembly_actions.TryGetValue (assembly, out action))
+				return action;
+
+			throw new NotSupportedException ();
+		}
+
+		public static MethodAction GetAction (MethodDefinition method)
+		{
+			MethodAction action;
+			if (method_actions.TryGetValue (method, out action))
+				return action;
+
+			return MethodAction.Nothing;
+		}
+
+		public static void SetAction (AssemblyDefinition assembly, AssemblyAction action)
+		{
+			assembly_actions [assembly] = action;
+		}
+
+		public static bool HasAction (AssemblyDefinition assembly)
 		{
-			return (TypePreserve) AsProvider (type).Annotations [_preservedKey];
+			return assembly_actions.ContainsKey (assembly);
 		}
 
-		public static void SetPublic (IAnnotationProvider provider)
+		public static void SetAction (MethodDefinition method, MethodAction action)
 		{
-			provider.Annotations [_publicKey] = _publicKey;
+			method_actions [method] = action;
 		}
 
-		public static bool IsPublic (IAnnotationProvider provider)
+		public static void Mark (IMetadataTokenProvider provider)
 		{
-			return provider.Annotations.Contains (_publicKey);
+			marked.Add (provider);
 		}
 
-		static IAnnotationProvider AsProvider (object obj)
+		public static bool IsMarked (IMetadataTokenProvider provider)
 		{
-			return (IAnnotationProvider) obj;
+			return marked.Contains (provider);
 		}
 
-		public static bool HasSymbols (AssemblyDefinition assembly)
+		public static void Processed (IMetadataTokenProvider provider)
 		{
-			return AsProvider (assembly).Annotations.Contains (_symbolsKey);
+			processed.Add (provider);
 		}
 
-		public static void SetHasSymbols (AssemblyDefinition assembly)
+		public static bool IsProcessed (IMetadataTokenProvider provider)
 		{
-			AsProvider (assembly).Annotations [_symbolsKey] = _symbolsKey;
+			return processed.Contains (provider);
+		}
+
+		public static bool IsPreserved (TypeDefinition type)
+		{
+			return preserved_types.ContainsKey (type);
+		}
+
+		public static void SetPreserve (TypeDefinition type, TypePreserve preserve)
+		{
+			preserved_types [type] = preserve;
+		}
+
+		public static TypePreserve GetPreserve (TypeDefinition type)
+		{
+			TypePreserve preserve;
+			if (preserved_types.TryGetValue (type, out preserve))
+				return preserve;
+
+			throw new NotSupportedException ();
+		}
+
+		public static void SetPublic (IMetadataTokenProvider provider)
+		{
+			public_api.Add (provider);
+		}
+
+		public static bool IsPublic (IMetadataTokenProvider provider)
+		{
+			return public_api.Contains (provider);
 		}
 
 		public static void AddOverride (MethodDefinition @base, MethodDefinition @override)
 		{
-			ArrayList methods = (ArrayList) GetOverrides (@base);
+			var methods = GetOverrides (@base);
 			if (methods == null) {
-				methods = new ArrayList ();
-				AsProvider (@base).Annotations.Add (_overrideKey, methods);
+				methods = new List<MethodDefinition> ();
+				override_methods [@base] = methods;
 			}
 
 			methods.Add (@override);
 		}
 
-		public static IList GetOverrides (MethodDefinition method)
+		public static List<MethodDefinition> GetOverrides (MethodDefinition method)
 		{
-			return (IList) AsProvider (method).Annotations [_overrideKey];
+			List<MethodDefinition> overrides;
+			if (override_methods.TryGetValue (method, out overrides))
+				return overrides;
+
+			return null;
 		}
 
 		public static void AddBaseMethod (MethodDefinition method, MethodDefinition @base)
 		{
-			ArrayList methods = (ArrayList) GetBaseMethods (method);
+			var methods = GetBaseMethods (method);
 			if (methods == null) {
-				methods = new ArrayList ();
-				AsProvider (method).Annotations.Add (_baseKey, methods);
+				methods = new List<MethodDefinition> ();
+				base_methods [method] = methods;
 			}
 
 			methods.Add (@base);
 		}
 
-		public static IList GetBaseMethods (MethodDefinition method)
+		public static List<MethodDefinition> GetBaseMethods (MethodDefinition method)
 		{
-			return (IList) AsProvider (method).Annotations [_baseKey];
+			List<MethodDefinition> bases;
+			if (base_methods.TryGetValue (method, out bases))
+				return bases;
+
+			return null;
 		}
 
-		public static IList GetPreservedMethods (TypeDefinition type)
+		public static List<MethodDefinition> GetPreservedMethods (TypeDefinition type)
 		{
-			return (IList) AsProvider (type).Annotations [_preservedMethodsKey];
+			List<MethodDefinition> preserved;
+			if (preserved_methods.TryGetValue (type, out preserved))
+				return preserved;
+
+			return null;
 		}
 
 		public static void AddPreservedMethod (TypeDefinition type, MethodDefinition method)
 		{
-			ArrayList methods = (ArrayList) GetPreservedMethods (type);
+			var methods = GetPreservedMethods (type);
 			if (methods == null) {
-				methods = new ArrayList ();
-				AsProvider (type).Annotations.Add (_preservedMethodsKey, methods);
+				methods = new List<MethodDefinition> ();
+				preserved_methods [type] = methods;
 			}
 
 			methods.Add (method);
@@ -192,5 +360,5 @@ namespace Mono.Linker {
 		private Annotations ()
 		{
 		}
-	}
+	}*/
 }
diff --git a/mcs/tools/linker/Mono.Linker/AssemblyResolver.cs b/mcs/tools/linker/Mono.Linker/AssemblyResolver.cs
index f203638..23aca21 100644
--- a/mcs/tools/linker/Mono.Linker/AssemblyResolver.cs
+++ b/mcs/tools/linker/Mono.Linker/AssemblyResolver.cs
@@ -28,7 +28,7 @@
 
 using System;
 using System.Collections;
-
+using System.IO;
 using Mono.Cecil;
 
 namespace Mono.Linker {
@@ -51,12 +51,11 @@ namespace Mono.Linker {
 			_assemblies = assembly_cache;
 		}
 
-		public override AssemblyDefinition Resolve (AssemblyNameReference name)
+		public override AssemblyDefinition Resolve (AssemblyNameReference name, ReaderParameters parameters)
 		{
 			AssemblyDefinition asm = (AssemblyDefinition) _assemblies [name.Name];
 			if (asm == null) {
-				asm = base.Resolve (name);
-				asm.Resolver = this;
+				asm = base.Resolve (name, parameters);
 				_assemblies [name.Name] = asm;
 			}
 
@@ -66,7 +65,7 @@ namespace Mono.Linker {
 		public void CacheAssembly (AssemblyDefinition assembly)
 		{
 			_assemblies [assembly.Name.Name] = assembly;
-			assembly.Resolver = this;
+			base.AddSearchDirectory (Path.GetDirectoryName (assembly.MainModule.FullyQualifiedName));
 		}
 	}
 }
diff --git a/mcs/tools/linker/Mono.Linker/LinkContext.cs b/mcs/tools/linker/Mono.Linker/LinkContext.cs
index 4873df0..d5d41f0 100644
--- a/mcs/tools/linker/Mono.Linker/LinkContext.cs
+++ b/mcs/tools/linker/Mono.Linker/LinkContext.cs
@@ -26,6 +26,7 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System;
 using System.Collections;
 using System.IO;
 using Mono.Cecil;
@@ -43,10 +44,18 @@ namespace Mono.Linker {
 
 		AssemblyResolver _resolver;
 
+		ReaderParameters _readerParameters;
+
+		AnnotationStore _annotations;
+
 		public Pipeline Pipeline {
 			get { return _pipeline; }
 		}
 
+		public AnnotationStore Annotations {
+			get { return _annotations; }
+		}
+
 		public string OutputDirectory {
 			get { return _outputDirectory; }
 			set { _outputDirectory = value; }
@@ -81,70 +90,67 @@ namespace Mono.Linker {
 			_resolver = resolver;
 			_actions = new Hashtable ();
 			_parameters = new Hashtable ();
+			_annotations = new AnnotationStore ();
+			_readerParameters = new ReaderParameters {
+				AssemblyResolver = _resolver,
+			};
 		}
 
-		public TypeDefinition GetType (string type)
+		public TypeDefinition GetType (string fullName)
 		{
-			int pos = type.IndexOf (",");
-			type = type.Replace ("+", "/");
+			int pos = fullName.IndexOf (",");
+			fullName = fullName.Replace ("+", "/");
 			if (pos == -1) {
-				foreach (AssemblyDefinition asm in GetAssemblies ())
-					if (asm.MainModule.Types.Contains (type))
-						return asm.MainModule.Types [type];
+				foreach (AssemblyDefinition asm in GetAssemblies ()) {
+					var type = asm.MainModule.GetType (fullName);
+					if (type != null)
+						return type;
+				}
 
 				return null;
 			}
 
-			string asmname = type.Substring (pos + 1);
-			type = type.Substring (0, pos);
+			string asmname = fullName.Substring (pos + 1);
+			fullName = fullName.Substring (0, pos);
 			AssemblyDefinition assembly = Resolve (AssemblyNameReference.Parse (asmname));
-			return assembly.MainModule.Types [type];
+			return assembly.MainModule.GetType (fullName);
 		}
 
 		public AssemblyDefinition Resolve (string name)
 		{
 			if (File.Exists (name)) {
-				AssemblyDefinition assembly = AssemblyFactory.GetAssembly (name);
+				AssemblyDefinition assembly = AssemblyDefinition.ReadAssembly (name, _readerParameters);
 				_resolver.CacheAssembly (assembly);
-				SafeLoadSymbols (assembly);
 				return assembly;
-			} else {
-				AssemblyNameReference reference = new AssemblyNameReference ();
-				reference.Name = name;
-				return Resolve (reference);
 			}
+
+			return Resolve (new AssemblyNameReference (name, new Version ()));
 		}
 
 		public AssemblyDefinition Resolve (IMetadataScope scope)
 		{
 			AssemblyNameReference reference = GetReference (scope);
 
-			AssemblyDefinition assembly = _resolver.Resolve (reference);
+			AssemblyDefinition assembly = _resolver.Resolve (reference, _readerParameters);
 
 			if (SeenFirstTime (assembly)) {
+				SafeReadSymbols (assembly);
 				SetAction (assembly);
-				SafeLoadSymbols (assembly);
 			}
 
 			return assembly;
 		}
 
-		public void SafeLoadSymbols (AssemblyDefinition assembly)
+		bool SeenFirstTime (AssemblyDefinition assembly)
 		{
-			if (!_linkSymbols)
-				return;
-
-			try {
-				assembly.MainModule.LoadSymbols ();
-				Annotations.SetHasSymbols (assembly);
-			} catch {
-				return; // resharper loves this
-			}
+			return !_annotations.HasAction (assembly);
 		}
 
-		static bool SeenFirstTime (AssemblyDefinition assembly)
+		void SafeReadSymbols (AssemblyDefinition assembly)
 		{
-			return !Annotations.HasAction (assembly);
+			try {
+				assembly.MainModule.ReadSymbols ();
+			} catch {}
 		}
 
 		static AssemblyNameReference GetReference (IMetadataScope scope)
@@ -170,7 +176,7 @@ namespace Mono.Linker {
 			else if (IsCore (name))
 				action = _coreAction;
 
-			Annotations.SetAction (assembly, action);
+			_annotations.SetAction (assembly, action);
 		}
 
 		static bool IsCore (AssemblyNameReference name)
diff --git a/mcs/tools/linker/Mono.Linker/Pipeline.cs b/mcs/tools/linker/Mono.Linker/Pipeline.cs
index 8b2c487..d8f4365 100644
--- a/mcs/tools/linker/Mono.Linker/Pipeline.cs
+++ b/mcs/tools/linker/Mono.Linker/Pipeline.cs
@@ -28,6 +28,7 @@
 
 using System;
 using System.Collections;
+using System.Diagnostics;
 
 using Mono.Linker.Steps;
 
@@ -81,6 +82,19 @@ namespace Mono.Linker {
 			}
 		}
 
+		public void AddStepAfter (IStep target, IStep step)
+		{
+			for (int i = 0; i < _steps.Count; i++) {
+				if (_steps [i] == target) {
+					if (i == _steps.Count - 1)
+						_steps.Add (step);
+					else
+						_steps.Insert (i + 1, step);
+					return;
+				}
+			}
+		}
+
 		public void RemoveStep (Type target)
 		{
 			for (int i = 0; i < _steps.Count; i++) {
diff --git a/mcs/tools/linker/Mono.Linker/ResolutionException.cs b/mcs/tools/linker/Mono.Linker/ResolutionException.cs
deleted file mode 100644
index b6d2f76..0000000
--- a/mcs/tools/linker/Mono.Linker/ResolutionException.cs
+++ /dev/null
@@ -1,42 +0,0 @@
-//
-// ResolutionException.cs
-//
-// Author:
-//   Jb Evain (jbevain at novell.com)
-//
-// (C) 2007 Novell, Inc.
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-using Mono.Cecil;
-
-namespace Mono.Linker {
-
-	public class ResolutionException : Exception {
-
-		public ResolutionException (MemberReference reference)
-			: base (string.Format ("Can not resolve reference: {0}", reference))
-		{
-		}
-	}
-}
diff --git a/mcs/tools/linker/Mono.Linker/TypeParser.cs b/mcs/tools/linker/Mono.Linker/TypeParser.cs
deleted file mode 100644
index 101e3e8..0000000
--- a/mcs/tools/linker/Mono.Linker/TypeParser.cs
+++ /dev/null
@@ -1,444 +0,0 @@
-//
-// TypeParser.cs
-//
-// Author:
-//   Jb Evain (jbevain at gmail.com)
-//
-// Copyright (c) 2008 - 2010 Jb Evain
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-using Mono.Cecil;
-
-namespace Mono.Linker {
-
-	class TypeParser {
-
-		class Type {
-			public const int Ptr = -1;
-			public const int ByRef = -2;
-			public const int SzArray = -3;
-
-			public string type_fullname;
-			public string [] nested_names;
-			public int arity;
-			public int [] specs;
-			public Type [] generic_arguments;
-			public string assembly;
-		}
-
-		readonly string fullname;
-		readonly int length;
-
-		int position;
-
-		TypeParser (string fullname)
-		{
-			this.fullname = fullname;
-			this.length = fullname.Length;
-		}
-
-		Type ParseType (bool fq_name)
-		{
-			var type = new Type ();
-			type.type_fullname = ParsePart ();
-
-			type.nested_names = ParseNestedNames ();
-
-			if (TryGetArity (type))
-				type.generic_arguments = ParseGenericArguments (type.arity);
-
-			type.specs = ParseSpecs ();
-
-			if (fq_name)
-				type.assembly = ParseAssemblyName ();
-
-			return type;
-		}
-
-		static bool TryGetArity (Type type)
-		{
-			int arity = 0;
-
-			TryAddArity (type.type_fullname, ref arity);
-
-			var nested_names = type.nested_names;
-			if (!IsNullOrEmpty (nested_names)) {
-				for (int i = 0; i < nested_names.Length; i++)
-					TryAddArity (nested_names [i], ref arity);
-			}
-
-			type.arity = arity;
-			return arity > 0;
-		}
-
-		static bool TryGetArity (string name, out int arity)
-		{
-			arity = 0;
-			var index = name.LastIndexOf ('`');
-			if (index == -1)
-				return false;
-
-			return int.TryParse (name.Substring (index + 1), out arity);
-		}
-
-		static void TryAddArity (string name, ref int arity)
-		{
-			int type_arity;
-			if (!TryGetArity (name, out type_arity))
-				return;
-
-			arity += type_arity;
-		}
-
-		string ParsePart ()
-		{
-			int start = position;
-			while (position < length && !IsDelimiter (fullname [position]))
-				position++;
-
-			return fullname.Substring (start, position - start);
-		}
-
-		static bool IsDelimiter (char chr)
-		{
-			return "+,[]*&".IndexOf (chr) != -1;
-		}
-
-		void TryParseWhiteSpace ()
-		{
-			while (position < length && Char.IsWhiteSpace (fullname [position]))
-				position++;
-		}
-
-		string [] ParseNestedNames ()
-		{
-			string [] nested_names = null;
-			while (TryParse ('+'))
-				Add (ref nested_names, ParsePart ());
-
-			return nested_names;
-		}
-
-		bool TryParse (char chr)
-		{
-			if (position < length && fullname [position] == chr) {
-				position++;
-				return true;
-			}
-
-			return false;
-		}
-
-		static void Add<T> (ref T [] array, T item)
-		{
-			if (array == null) {
-				array = new [] { item };
-				return;
-			}
-
-			Array.Resize (ref array, array.Length + 1);
-			array [array.Length - 1] = item;
-		}
-
-		int [] ParseSpecs ()
-		{
-			int [] specs = null;
-
-			while (position < length) {
-				switch (fullname [position]) {
-				case '*':
-					position++;
-					Add (ref specs, Type.Ptr);
-					break;
-				case '&':
-					position++;
-					Add (ref specs, Type.ByRef);
-					break;
-				case '[':
-					position++;
-					switch (fullname [position]) {
-					case ']':
-						position++;
-						Add (ref specs, Type.SzArray);
-						break;
-					case '*':
-						position++;
-						Add (ref specs, 1);
-						break;
-					default:
-						var rank = 1;
-						while (TryParse (','))
-							rank++;
-
-						Add (ref specs, rank);
-
-						TryParse (']');
-						break;
-					}
-					break;
-				default:
-					return specs;
-				}
-			}
-
-			return specs;
-		}
-
-		Type [] ParseGenericArguments (int arity)
-		{
-			Type [] generic_arguments = null;
-
-			if (position == length || fullname [position] != '[')
-				return generic_arguments;
-
-			TryParse ('[');
-
-			for (int i = 0; i < arity; i++) {
-				var fq_argument = TryParse ('[');
-				Add (ref generic_arguments, ParseType (fq_argument));
-				if (fq_argument)
-					TryParse (']');
-
-				TryParse (',');
-				TryParseWhiteSpace ();
-			}
-
-			TryParse (']');
-
-			return generic_arguments;
-		}
-
-		string ParseAssemblyName ()
-		{
-			if (!TryParse (','))
-				return string.Empty;
-
-			TryParseWhiteSpace ();
-
-			var start = position;
-			while (position < length) {
-				var chr = fullname [position];
-				if (chr == '[' || chr == ']')
-					break;
-
-				position++;
-			}
-
-			return fullname.Substring (start, position - start);
-		}
-
-		public static TypeReference ParseType (ModuleDefinition module, string fullname)
-		{
-			if (fullname == null)
-				return null;
-
-			var parser = new TypeParser (fullname);
-			return GetTypeReference (module, parser.ParseType (true));
-		}
-
-		static TypeReference GetTypeReference (ModuleDefinition module, Type type_info)
-		{
-			TypeReference type;
-			if (!TryGetDefinition (module, type_info, out type))
-				type = CreateReference (type_info, module, GetMetadataScope (module, type_info));
-
-			return CreateSpecs (type, type_info);
-		}
-
-		static TypeReference CreateSpecs (TypeReference type, Type type_info)
-		{
-			type = TryCreateGenericInstanceType (type, type_info);
-
-			var specs = type_info.specs;
-			if (IsNullOrEmpty (specs))
-				return type;
-
-			for (int i = 0; i < specs.Length; i++) {
-				switch (specs [i]) {
-				case Type.Ptr:
-					type = new PointerType (type);
-					break;
-				case Type.ByRef:
-					type = new ReferenceType (type);
-					break;
-				case Type.SzArray:
-					type = new ArrayType (type);
-					break;
-				default:
-					var array = new ArrayType (type);
-					array.Dimensions.Clear ();
-
-					for (int j = 0; j < specs [i]; j++)
-						array.Dimensions.Add (new ArrayDimension (0, 0));
-
-					type = array;
-					break;
-				}
-			}
-
-			return type;
-		}
-
-		static TypeReference TryCreateGenericInstanceType (TypeReference type, Type type_info)
-		{
-			var generic_arguments = type_info.generic_arguments;
-			if (IsNullOrEmpty (generic_arguments))
-				return type;
-
-			var instance = new GenericInstanceType (type);
-			for (int i = 0; i < generic_arguments.Length; i++)
-				instance.GenericArguments.Add (GetTypeReference (type.Module, generic_arguments [i]));
-
-			return instance;
-		}
-
-		public static void SplitFullName (string fullname, out string @namespace, out string name)
-		{
-			var last_dot = fullname.LastIndexOf ('.');
-
-			if (last_dot == -1) {
-				@namespace = string.Empty;
-				name = fullname;
-			} else {
-				@namespace = fullname.Substring (0, last_dot);
-				name = fullname.Substring (last_dot + 1);
-			}
-		}
-
-		static TypeReference CreateReference (Type type_info, ModuleDefinition module, IMetadataScope scope)
-		{
-			string @namespace, name;
-			SplitFullName (type_info.type_fullname, out @namespace, out name);
-
-			var type = new TypeReference (name, @namespace, scope, false) {
-				Module = module,
-			};
-
-			AdjustGenericParameters (type);
-
-			var nested_names = type_info.nested_names;
-			if (IsNullOrEmpty (nested_names))
-				return type;
-
-			for (int i = 0; i < nested_names.Length; i++) {
-				type = new TypeReference (nested_names [i], string.Empty, null, false) {
-					DeclaringType = type,
-					Module = module,
-				};
-
-				AdjustGenericParameters (type);
-			}
-
-			return type;
-		}
-
-		static void AdjustGenericParameters (TypeReference type)
-		{
-			int arity;
-			if (!TryGetArity (type.Name, out arity))
-				return;
-
-			for (int i = 0; i < arity; i++)
-				type.GenericParameters.Add (new GenericParameter (null, type));
-		}
-
-		static IMetadataScope GetMetadataScope (ModuleDefinition module, Type type_info)
-		{
-			if (string.IsNullOrEmpty (type_info.assembly))
-				return GetCorlib (module);
-
-			return MatchReference (module, AssemblyNameReference.Parse (type_info.assembly));
-		}
-
-		static AssemblyNameReference GetCorlib (ModuleDefinition module)
-		{
-			foreach (AssemblyNameReference reference in module.AssemblyReferences)
-				if (reference.Name == "mscorlib")
-					return reference;
-
-			return null;
-		}
-
-		static AssemblyNameReference MatchReference (ModuleDefinition module, AssemblyNameReference pattern)
-		{
-			var references = module.AssemblyReferences;
-
-			for (int i = 0; i < references.Count; i++) {
-				var reference = references [i];
-				if (reference.FullName == pattern.FullName)
-					return reference;
-			}
-
-			return pattern;
-		}
-
-		static bool TryGetDefinition (ModuleDefinition module, Type type_info, out TypeReference type)
-		{
-			type = null;
-			if (!TryCurrentModule (module, type_info))
-				return false;
-
-			var typedef = module.Types [type_info.type_fullname];
-			if (typedef == null)
-				return false;
-
-			var nested_names = type_info.nested_names;
-			if (!IsNullOrEmpty (nested_names)) {
-				for (int i = 0; i < nested_names.Length; i++)
-					typedef = GetNestedType (typedef, nested_names [i]);
-			}
-
-			type = typedef;
-			return true;
-		}
-
-		static bool TryCurrentModule (ModuleDefinition module, Type type_info)
-		{
-			if (string.IsNullOrEmpty (type_info.assembly))
-				return true;
-
-			if (module.Assembly != null && module.Assembly.Name.FullName == type_info.assembly)
-				return true;
-
-			return false;
-		}
-
-		static TypeDefinition GetNestedType (TypeDefinition type, string nestedTypeName)
-		{
-			if (!type.HasNestedTypes)
-				return null;
-
-			foreach (TypeDefinition nested_type in type.NestedTypes)
-				if (nested_type.Name == nestedTypeName)
-					return nested_type;
-
-			return null;
-		}
-
-		static bool IsNullOrEmpty<T> (T [] array)
-		{
-			return array == null || array.Length == 0;
-		}
-	}
-}
diff --git a/mcs/tools/linker/Mono.Linker/XApiReader.cs b/mcs/tools/linker/Mono.Linker/XApiReader.cs
index 9316eed..bb16e21 100644
--- a/mcs/tools/linker/Mono.Linker/XApiReader.cs
+++ b/mcs/tools/linker/Mono.Linker/XApiReader.cs
@@ -28,6 +28,7 @@
 
 using System;
 using System.Collections;
+using System.Linq;
 using System.Text;
 using System.Xml.XPath;
 
@@ -73,9 +74,9 @@ namespace Mono.Linker {
 
 		AssemblyDefinition GetAssembly (XPathNavigator nav)
 		{
-			AssemblyNameReference name = new AssemblyNameReference ();
-			name.Name = GetName (nav);
-			name.Version = new Version (GetAttribute (nav, "version"));
+			AssemblyNameReference name = new AssemblyNameReference (
+				GetName (nav),
+				new Version (GetAttribute (nav, "version")));
 
 			AssemblyDefinition assembly = _context.Resolve (name);
 			ProcessReferences (assembly);
@@ -119,7 +120,7 @@ namespace Mono.Linker {
 		{
 			string name = GetClassName (nav);
 
-			TypeDefinition type = _assembly.MainModule.Types [name];
+			TypeDefinition type = _assembly.MainModule.GetType (name);
 			if (type == null)
 				return;
 
@@ -156,7 +157,7 @@ namespace Mono.Linker {
 		{
 			TypeDefinition declaring = PeekType ();
 
-			FieldDefinition field = declaring.Fields.GetField (GetName (nav));
+			FieldDefinition field = declaring.Fields.FirstOrDefault (f => f.Name == GetName (nav));
 			if (field != null)
 				_visitor.OnField (nav, field);
 
@@ -192,11 +193,6 @@ namespace Mono.Linker {
 			return GetMethod (PeekType ().Methods, signature);
 		}
 
-		MethodDefinition GetConstructor (string signature)
-		{
-			return GetMethod (PeekType ().Constructors, signature);
-		}
-
 		static MethodDefinition GetMethod (ICollection methods, string signature)
 		{
 			foreach (MethodDefinition method in methods)
@@ -223,7 +219,7 @@ namespace Mono.Linker {
 
 			string returntype = GetAttribute (nav, "returntype");
 			if (returntype == null || returntype.Length == 0)
-				returntype = Constants.Void;
+				returntype = "System.Void";
 
 			_signature.Append (NormalizeTypeName (returntype));
 			_signature.Append (" ");
@@ -278,7 +274,7 @@ namespace Mono.Linker {
 
 			string signature = GetMethodSignature ();
 
-			MethodDefinition ctor = GetConstructor (signature);
+			MethodDefinition ctor = GetMethod (signature);
 			if (ctor != null)
 				_visitor.OnConstructor (nav, ctor);
 
@@ -290,9 +286,9 @@ namespace Mono.Linker {
 			string name = GetName (nav);
 			TypeDefinition type = PeekType ();
 
-			PropertyDefinition [] props = type.Properties.GetProperties (name);
-			if (props != null && props.Length > 0)
-				_visitor.OnProperty (nav, props [0]);
+			var property = type.Properties.FirstOrDefault (p => p.Name == name);
+			if (property != null)
+				_visitor.OnProperty (nav, property);
 
 			ProcessAttributes (nav);
 			ProcessMethods (nav);
@@ -303,7 +299,7 @@ namespace Mono.Linker {
 			string name = GetName (nav);
 			TypeDefinition type = PeekType ();
 
-			EventDefinition evt = type.Events.GetEvent (name);
+			EventDefinition evt = type.Events.FirstOrDefault (e => e.Name == name);
 			if (evt != null)
 				_visitor.OnEvent (nav, evt);
 
diff --git a/mcs/tools/linker/monolinker.exe.sources b/mcs/tools/linker/monolinker.exe.sources
index a18e909..90b8ae0 100644
--- a/mcs/tools/linker/monolinker.exe.sources
+++ b/mcs/tools/linker/monolinker.exe.sources
@@ -2,14 +2,12 @@
 ./Mono.Linker/AssemblyInfo.cs
 ./Mono.Linker/AssemblyResolver.cs
 ./Mono.Linker/TypePreserve.cs
-./Mono.Linker/TypeParser.cs
 ./Mono.Linker/Annotations.cs
 ./Mono.Linker/LinkContext.cs
 ./Mono.Linker/AssemblyAction.cs
 ./Mono.Linker/Driver.cs
 ./Mono.Linker/I18nAssemblies.cs
 ./Mono.Linker/MethodAction.cs
-./Mono.Linker/ResolutionException.cs
 ./Mono.Linker/XApiReader.cs
 ./Mono.Linker/IXApiVisitor.cs
 ./Mono.Linker.Steps/BaseStep.cs
diff --git a/mcs/tools/mdoc/ChangeLog b/mcs/tools/mdoc/ChangeLog
index 7c4b22f..72ebad0 100644
--- a/mcs/tools/mdoc/ChangeLog
+++ b/mcs/tools/mdoc/ChangeLog
@@ -1,3 +1,437 @@
+2010-12-11  Jonathan Pryor  <jonpryor at vt.edu>
+
+	[mdoc] Fix code formatting.
+
+	The expression in `if(expr)`, if overly-long and spanning mulitple
+	lines, should be indented beyond the normal indent so that the
+	expression is more easily distinguished from the `if` body:
+
+	if (expr && expr2 && expr3) body;
+
+	not:
+
+	if (expr && expr2 && expr3) body;
+
+2010-12-12  XTZGZoReX  <xtzgzorex at gmail.com>
+
+	[Monodoc] add GetDeclaringType(this CustomAttribute) extension
+	method.
+
+2010-12-12  XTZGZoReX  <xtzgzorex at gmail.com>
+
+	[monodoc] don't display methods with
+	ContractInvariantMethodAttribute.
+
+2010-12-12  XTZGZoReX  <xtzgzorex at gmail.com>
+
+	[Monodoc] eliminate a few warnings.
+
+2010-12-10  Alex  <xtzgzorex at gmail.com>
+
+	[monodoc] display setter after the getter
+
+2010-12-04  Jonathan Pryor  <jonpryor at vt.edu>
+
+	[mdoc] Response file cleanup.
+
+	Use Mono.Options.ResponseFileSource instead of implementing
+	response file parsing manually.
+
+2010-11-23  Jb Evain  <jbevain at gmail.com>
+
+	Facilitate the merge
+
+2010-11-21  Jb Evain  <jbevain at gmail.com>
+
+	Fix makefile
+
+2010-11-18  Jonathan Pryor  <jonpryor at vt.edu>
+
+	[mdoc export-html] Fixup href generation for nested generics.
+
+	In certain situations, the type-parameter counting code doesn't
+	skip tokens properly. In some circumstances, this results in
+	invalid links (e.g. refing KeyValuePair`1, not KeyValuePair`2), in
+	others it results in an XSLT error with "!WTF 2".
+
+	The problem was we weren't properly checking for nested types.
+
+2010-11-17  Jonathan Pryor  <jonpryor at vt.edu>
+
+	[mdoc-update] Add C#4 dynamic support for method declarations.
+
+2010-11-04  Jonathan Pryor  <jonpryor at vt.edu>
+
+	[mdoc-update] Explicitly order //Type children.
+
+	Unlike 03c231a585c8ff46f93084210fa240e8f6e4f65b, this isn't needed
+	for 'mdoc-validate', it's instead for "niceness" reasons.
+
+	For example, as with f6e4f65b, if we update docs generated by an
+	older version mdoc, we'll add a <TypeSignature/> for ILAsm.
+	However, the added <TypeSignature/> is at the end of the file,
+	nowhere near the existing <TypeSignature/>s, which is...odd. Not
+	bad, per-se, but "undesirable".
+
+	Thus, we order things for consistency during/after updates.
+
+2010-11-04  Jonathan Pryor  <jonpryor at vt.edu>
+
+	[mdoc] Explicitly order //Member children.
+
+	The problem is the intermixing of updating "old" documentation and
+	wanting the result to pass `mdoc validate`.
+
+	For example, mdoc-2.6 will only generate a <MemberSignature/> for
+	C#, while mdoc-2.8+ will generate two, one for C# and one for
+	ILAsm. Unfortunately, mdoc will _append_ the new
+	<MemberSignature/> as the _last_ child within <Member/>; result:
+	'mdoc validate' gives errors.
+
+	Oops.
+
+	Thus, we explicitly reorder //Member children so that the ordering
+	matches the order in monodoc-ecma.xsd.
+
+2010-10-22  Jb Evain  <jbevain at gmail.com>
+
+	simplify code
+
+2010-10-20  Jb Evain  <jbevain at gmail.com>
+
+	Polish monodocer port to cecil-light
+
+2010-10-20  Jb Evain  <jbevain at gmail.com>
+
+	Fix navigation of all types
+
+2010-10-20  Jb Evain  <jbevain at gmail.com>
+
+	Fix resolving of events and properties
+
+2010-10-20  Jb Evain  <jbevain at gmail.com>
+
+	Fix MONO_PATH
+
+2010-10-08  Jb Evain  <jbevain at gmail.com>
+
+	Port mdoc to cecil-light
+
+2010-09-16  Jonathan Pryor  <jonpryor at vt.edu>
+
+	Make mdoc a 2.0 app, not a 4.0 app.
+
+	The problem is build sanity: it's possible to disable the 4.0
+	profile (--with-profile4=no) while not disabling documentation
+	building (--with-mcs-docs=yes is the default). The result would be
+	a 4.0-less build, and thus no mdoc, and thus no mdoc to assemble
+	the documentation, and thus a build break as we attempted to use
+	an app during the build which didn't exist.
+
+	Oops.
+
+	mdoc doesn't need to be a 4.0 app anyway...
+
+2010-09-08  Jonathan Pryor  <jonpryor at vt.edu>
+
+	[mdoc-update] Delegate types should get <returns/>, not <value/>.
+
+	Oops, that's a long-standing bug... Found by Joel Marcey from
+	ECMA.
+
+2010-09-06  Jonathan Pryor  <jonpryor at vt.edu>
+
+	[mdoc-update] Clean up System.Object craziness in ILAsm
+	generation.
+
+	The problem: ILAsm has 'object' as a keyword alias for
+	System.Object, and 99.99% of the time should use 'object'...except
+	in 'extends' declarations, where it remains System.Object and not
+	'object'.
+
+	The solution: Have an ILFullMemberFormatter.WithinExtends "flag"
+	which controls whether we generate System.Object or object.
+
+	The problem: this is flaky as hell, and results 'class
+	A:List<object>' generating:
+
+	.class public auto ansi beforefieldinit MyList extends
+	System.Collections.Generic.List`1<System.Object>
+
+	This is wrong, as it should be List`1<object>, not
+	List`1<System.Object>. (At least, monodis(1) produces
+	List`1<object>...)
+
+	So, instead of the craziness that is WithinExtends, just check
+	check for System.Object as the base type immediately after the
+	'extends' generation. If it's System.Object, keep it, otherwise
+	call full.GetName() (and remove the leading "class " that's
+	generated from GetName).
+
+2010-09-04  Jonathan Pryor  <jonpryor at vt.edu>
+
+	[mdoc-update] Properly map System.IntPtr to 'native int' for
+	ILAsm.
+
+	Similarly, System.UIntPtr maps to 'native unsigned int'.
+
+2010-09-03  Jonathan Pryor  <jonpryor at vt.edu>
+
+	[mdoc-update] Add support ILAsm language output.
+
+2010-09-03  Jonathan Pryor  <jonpryor at vt.edu>
+
+	[mdoc-update] Add support for multiple languages in type/member
+	signatures.
+
+	We're planning on adding IL signature support for <TypeSignature/>
+	and <MemberSignature/>, so having arrays of MemberFormatters
+	instead of having single instances of them will make supporting IL
+	output easier.
+
+2010-09-02  Jonathan Pryor  <jonpryor at vt.edu>
+
+	[mdoc-update-ecma-xml] Assembly [CLSCompliant] shouldn't replace
+	Type version.
+
+	If a type has e.g. [CLSCompliant(false)], then the Assembly's
+	[CLSCompliant(true)] shouldn't replace it.
+
+2010-09-02  Jonathan Pryor  <jonpryor at vt.edu>
+
+	[mdoc-export-ecma-xml] Generate [CLSCompliant] attribute on types.
+
+	If the assembly has [CLSCompliant], then "forward" that to the
+	type.
+
+2010-09-02  Jonathan Pryor  <jonpryor at vt.edu>
+
+	[mdoc-update] Generate an index.xml file when --type is used.
+
+	(Yet another "Let's help ECMA!" fix...)
+
+	For performance reasons, I want to use this workflow:
+
+	mdoc x-msitomsx -o slashdocs msidocs --type=A mdoc update -o docs
+	-i slashdocs/mscorlib.xml mscorlib.dll --type=A mdoc
+	update-ecma-xml -o CLILibraryTypes.xml --type=A
+
+	That is, have a consistent set of --type=TYPEs that are passed
+	between the three apps. I want to do this because otherwise 'mdoc
+	update' takes 12 minutes to process the assemblies I need; with
+	this approach, it takes 12 seconds.
+
+	Unfortunately, 'mdoc update-ecma-xml' needs an index.xml so it can
+	obtain assembly-level custom attributes, and 'mdoc update
+	--type...' wasn't creating an index.xml file.
+
+	Doh!
+
+	Fix: IFF docs/index.xml is NOT present, create a docs/index.xml
+	file which contains ONLY the types & namespaces that were
+	encountered.
+
+	If docs/index.xml IS present, it's unchanged.
+
+	This fix allows the above workflow to Just Work, while maintaining
+	the other "I know this type has been updated, let's not process
+	the entire assembly" workflow that --type allows.
+
+2010-09-02  Jonathan Pryor  <jonpryor at vt.edu>
+
+	[mdoc-update] Add -fignore-missing-types option.
+
+	This prevents an error if you specify a --type=TYPE and TYPE
+	wasn't found within the assembly you're updating.
+
+	I'm adding this so that I can have a single unified types.response
+	file for all types we're adding for ECMA (which contains types
+	from several assemblies) without getting an error when running
+	'mdoc update' against the source assemblies.
+
+2010-09-02  Jonathan Pryor  <jonpryor at vt.edu>
+
+	[mdoc-update] Add --help text for --exceptions=added.
+
+2010-09-02  Jonathan Pryor  <jonpryor at vt.edu>
+
+	[mdoc-x-msitomsx] Ignore <platformNotes/>, <sections/>, etc.
+
+	With this, we convert the mscorlib types that we care about w/o
+	validation errors. Hurrah!
+
+2010-09-02  Jonathan Pryor  <jonpryor at vt.edu>
+
+	[mdoc-x-msitomsx] Support legacy and external links.
+
+	<externalLink/> is mapped to an HTML <a/> (and thus a <format
+	type="text/html"/> wrapper), while <legacyLink/> is just
+	italicized.
+
+2010-09-02  Jonathan Pryor  <jonpryor at vt.edu>
+
+	Fix <embeddedLabel/>, add <i/> as a valid <para/> child.
+
+	<embeddedLabel/> was skipping the content, resulting in <i>:</i>.
+	Oops.
+
+	And since <embeddedLabel/> generates <i/>, validation was failing
+	within <para/>, so add it.
+
+2010-09-02  Jonathan Pryor  <jonpryor at vt.edu>
+
+	[mdoc-x-msitomsx] Additional <token/> replacement values.
+
+2010-09-02  Jonathan Pryor  <jonpryor at vt.edu>
+
+	[mdoc-x-msitomsx] Support <embeddedLabel/>, additional <token/>
+	values.
+
+2010-09-02  Jonathan Pryor  <jonpryor at vt.edu>
+
+	[mdoc-x-msitomsx] Convert <notesForInheritors/> elements into
+	<block/>s.
+
+2010-09-02  Jonathan Pryor  <jonpryor at vt.edu>
+
+	[mdoc-x-msitomsx] Improve <example/> generation so it validates.
+
+	We were getting a <description/> element which should be skipped.
+
+2010-09-02  Jonathan Pryor  <jonpryor at vt.edu>
+
+	Place ignored elements together for consistency.
+
+2010-09-02  Jonathan Pryor  <jonpryor at vt.edu>
+
+	[mdoc-x-msitomsx] Ignore <internalOnly/>.
+
+2010-09-02  Jonathan Pryor  <jonpryor at vt.edu>
+
+	[mdoc] Generate <threadsafe/> from <threadSafety/>.
+
+	We also need to update monodoc-ecma.xsd so that multiple <para/>s
+	are valid within <threadsafe/>; otherwise, we report validation
+	errors on the 'mdoc x-msitomsx' output.
+
+2010-09-02  Jonathan Pryor  <jonpryor at vt.edu>
+
+	[mdoc-x-msitomsx] Add support for converting <list/>s.
+
+2010-09-02  Jonathan Pryor  <jonpryor at vt.edu>
+
+	[mdoc-x-msitomsx] Import <notesForImplementers/> and
+	<notesForCallers/>.
+
+	In the original XML, these are sibling elements to <remarks/>, but
+	they need to be imported as children of <remarks/> as <block/> is
+	the closest matching element, and <block/> is a child of
+	<remarks/>.
+
+2010-09-02  Jonathan Pryor  <jonpryor at vt.edu>
+
+	[mdoc-x-msitomsx] Ignore <clsCompliantAlternative/> elements.
+
+2010-09-02  Jonathan Pryor  <jonpryor at vt.edu>
+
+	[mdoc-x-msitomsx] Replace <token/> with literal text.
+
+2010-09-02  Jonathan Pryor  <jonpryor at vt.edu>
+
+	[mdoc-x-msitomsx] Mutate <permission/> elements.
+
+2010-09-02  Jonathan Pryor  <jonpryor at vt.edu>
+
+	[mdoc-x-msitomsx] Generate <block/> from <alert/>.
+
+2010-09-02  Jonathan Pryor  <jonpryor at vt.edu>
+
+	[mdoc-x-msitomsx] Generate <typeparam/> from <genericParameters/>.
+
+2010-09-02  Jonathan Pryor  <jonpryor at vt.edu>
+
+	Make sure that Resources/msitomsx.xsl is distributed.
+
+2010-09-02  Jonathan Pryor  <jonpryor at vt.edu>
+
+	[mdoc-validate] Add support for validating 'csc /doc' XML.
+
+	This will help in determining which elements I'm not converting
+	within 'mdoc x-msitomsx'.
+
+2010-09-02  Jonathan Pryor  <jonpryor at vt.edu>
+
+	[mdoc-x-msitomsx] Ignore <changeHistory/>, <relatedTopics/>.
+
+2010-09-02  Jonathan Pryor  <jonpryor at vt.edu>
+
+	[mdoc-x-msitomsx] Map <codeInline/> to <c/>, <codeReference/> to
+	<code/>.
+
+2010-09-02  Jonathan Pryor  <jonpryor at vt.edu>
+
+	[mdoc-x-msitomsx] Generate <seealso/> from
+	<equivalentCodeEntity/>.
+
+2010-09-02  Jonathan Pryor  <jonpryor at vt.edu>
+
+	[mdoc-x-msitomsx] Add <table/> conversion support.
+
+2010-09-02  Jonathan Pryor  <jonpryor at vt.edu>
+
+	[mdoc-x-msitomsx] Generate a /doc/assembly/name attribute.
+
+	This is so our generated XML files more closely match 'csc /doc'
+	format.
+
+2010-09-02  Jonathan Pryor  <jonpryor at vt.edu>
+
+	[mdoc-update] Add --library=VALUE option.
+
+	This is so that we can share response files between 'mdoc
+	x-msitomsx', 'mdoc update', and 'mdoc update-ecma-xml', thus
+	ensuring that only the types we care about are imported and
+	processed.
+
+2010-09-02  Jonathan Pryor  <jonpryor at vt.edu>
+
+	[mdoc-x-msitomsx] Flush --help documentation.
+
+2010-09-01  Jonathan Pryor  <jonpryor at vt.edu>
+
+	[mdoc] Add "internal" 'mdoc x-msitomsx' command.
+
+	The 'mdoc x-msitomsx' command converts a Microsoft internal XML
+	dialect into Microsoft XML Documentation format (e.g. what 'mdoc
+	export-msxdoc' generates).
+
+	The 'mdoc x-msitomsx' command is internal, i.e. 'mdoc help' won't
+	list it, as this format is completely internal to Microsoft (and
+	likely subject to change without notice); this command only exists
+	to help facilitate the ECMA standardization process, converting
+	Microsoft's existing (internal) documentation into a format usable
+	by the ECMA committee.
+
+2010-09-01  Jonathan Pryor  <jonpryor at vt.edu>
+
+	[mdoc-update] Refactor out Microsoft XML Documentation import.
+
+	Another side effect of having the DocumentationImporter
+	abstraction is that we're no longer limited to importing from
+	either ECMA XML, Microsoft XML, or both; we can now import from
+	arbitrarily many Microsoft XML sources.
+
+	(Arbitrarily many ECMA XML sources likely won't work, at present,
+	since the ECMA XML file controls type + member enumeration, but I
+	don't think this will be needed any time soon...)
+
+2010-09-01  Jonathan Pryor  <jonpryor at vt.edu>
+
+	[mdoc-update] Refactor out ECMA XML import into
+	EcmaDocumentationImporter.
+
+	Victory for less spaghetti code...
+
 2010-09-01  Jonathan Pryor  <jonpryor at vt.edu>
 
 	[mdoc-update] Only check for duplicate elements, not duplicate
@@ -10,6 +444,36 @@
 
 	Fixes building gendarme from mono-tools.
 
+2010-09-01  Jonathan Pryor  <jonpryor at vt.edu>
+
+	[mdoc-update] Refactor type+member traversal algorithm.
+
+	ECMA wants to import some Microsoft documentation for use in the
+	next version of the ECMA standard (hence mdoc-update-ecma-xml).
+
+	Unfortunately, Microsoft doesn't use the Microsoft XML
+	Documentation format for their internal class library
+	documentation. They use some other XML dialect (which looks
+	similar yet different from "msxdoc").
+
+	So to make life easier for ECMA, mdoc-update of needs to support
+	yet another import format. Yay?
+
+	Unfortunately:
+
+	- The current import logic uses no abstractions; we have
+	"separate" code paths when importing msxdoc's vs. ECMA docs. We
+	need a sane abstraction if we're going to add a third import
+	format.
+
+	- Additionally, the ECMA doc import logic is a mass of spaghetti
+	code, as ECMA import also controls type+member enumeration order.
+
+	Start trying to bring some sanity to this by adding a
+	DocumentationEnumerator abstraction so that some of the XmlReader
+	maintenance for importing/processing ECMA documentation can be
+	split out.
+
 2010-08-31  Jonathan Pryor  <jonpryor at vt.edu>
 
 	[mdoc-update-ecma-xml] Sort libraries and types.
diff --git a/mcs/tools/mdoc/Makefile b/mcs/tools/mdoc/Makefile
index 7e77baa..46a8878 100644
--- a/mcs/tools/mdoc/Makefile
+++ b/mcs/tools/mdoc/Makefile
@@ -9,12 +9,13 @@ MDOC_COMMON_FLAGS = \
 	/resource:../monodoc/Resources/mono-ecma-css.xsl,mono-ecma-css.xsl          \
 	/resource:Resources/defaulttemplate.xsl,defaulttemplate.xsl                 \
 	/resource:Resources/monodoc-ecma.xsd,monodoc-ecma.xsd                       \
+	/resource:Resources/msitomsx.xsl,msitomsx.xsl                               \
 	/resource:Resources/overview.xsl,overview.xsl                               \
 	/resource:Resources/stylesheet.xsl,stylesheet.xsl                           \
 	/r:System.Web.dll                                                           \
 	/r:System.Xml.Linq.dll                                                      \
 	/r:ICSharpCode.SharpZipLib.dll                                              \
-	/r:$(topdir)/class/lib/net_4_0/Mono.Cecil.dll
+	/r:Mono.Cecil.dll
 
 LOCAL_MCS_FLAGS = $(MDOC_COMMON_FLAGS) \
 	/r:$(topdir)/class/lib/net_2_0/monodoc.dll
@@ -41,6 +42,7 @@ MONODOC_RESOURCES = \
 MDOC_RESOURCES = \
 	Resources/defaulttemplate.xsl     \
 	Resources/monodoc-ecma.xsd        \
+	Resources/msitomsx.xsl            \
 	Resources/overview.xsl            \
 	Resources/stylesheet.xsl
 
@@ -64,7 +66,7 @@ include ../../build/executable.make
 $(PROGRAM) : Makefile
 
 MONO = \
-	MONO_PATH="$(topdir)/class/lib/2.0$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" \
+	MONO_PATH="$(topdir)/class/lib/net_2_0$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" \
 	$(RUNTIME) $(RUNTIME_FLAGS)
 
 dist-local: dist-default dist-tests
diff --git a/mcs/tools/mdoc/Mono.Documentation/assembler.cs b/mcs/tools/mdoc/Mono.Documentation/assembler.cs
index 1f6e1a1..c46bfbc 100644
--- a/mcs/tools/mdoc/Mono.Documentation/assembler.cs
+++ b/mcs/tools/mdoc/Mono.Documentation/assembler.cs
@@ -49,7 +49,6 @@ public class MDocAssembler : MDocCommand {
 	{
 		var formats = new Dictionary<string, List<string>> ();
 		string prefix = "tree";
-		string cur_format = "ecma";
 		var formatOptions = CreateFormatOptions (this, formats);
 		var options = new OptionSet () {
 			formatOptions [0],
diff --git a/mcs/tools/mdoc/Mono.Documentation/ecmadoc.cs b/mcs/tools/mdoc/Mono.Documentation/ecmadoc.cs
index 253b2b6..e8c0a5c 100644
--- a/mcs/tools/mdoc/Mono.Documentation/ecmadoc.cs
+++ b/mcs/tools/mdoc/Mono.Documentation/ecmadoc.cs
@@ -260,6 +260,16 @@ namespace Mono.Documentation
 			// TODO: assembly attributes?
 			// The problem is that .NET mscorlib.dll v4.0 has ~26 attributes, and
 			// importing these for every time seems like some serious bloat...
+			var clsDefAttr = assembly.Elements ("Attributes").Elements ("Attribute")
+				.FirstOrDefault (a => a.Element ("AttributeName").Value.StartsWith ("System.CLSCompliant"));
+			if (clsDefAttr != null &&
+					ai.Elements ("Attributes").Elements ("Attribute")
+					.FirstOrDefault (a => a.Element ("AttributeName").Value.StartsWith ("System.CLSCompliant")) == null) {
+				var dest = ai.Element ("Attributes");
+				if (dest == null)
+					ai.Add (dest = new XElement ("Attributes"));
+				dest.Add (clsDefAttr);
+			}
 
 			return type;
 		}
diff --git a/mcs/tools/mdoc/Mono.Documentation/exceptions.cs b/mcs/tools/mdoc/Mono.Documentation/exceptions.cs
index ad1ba9d..9929998 100644
--- a/mcs/tools/mdoc/Mono.Documentation/exceptions.cs
+++ b/mcs/tools/mdoc/Mono.Documentation/exceptions.cs
@@ -47,13 +47,13 @@ namespace Mono.Documentation {
 		internal ExceptionSources (TypeReference exception)
 		{
 			Exception = exception;
-			SourcesList = new List<IMemberReference> ();
-			Sources = new ReadOnlyCollection<IMemberReference> (SourcesList);
+			SourcesList = new List<MemberReference> ();
+			Sources = new ReadOnlyCollection<MemberReference> (SourcesList);
 		}
 
 		public TypeReference Exception { get; private set; }
-		public ReadOnlyCollection<IMemberReference> Sources { get; private set; }
-		internal List<IMemberReference> SourcesList;
+		public ReadOnlyCollection<MemberReference> Sources { get; private set; }
+		internal List<MemberReference> SourcesList;
 	}
 
 
@@ -72,11 +72,11 @@ namespace Mono.Documentation {
 			this.locations = locations;
 		}
 
-		public IEnumerable<ExceptionSources> this [IMemberReference member] {
+		public IEnumerable<ExceptionSources> this [MemberReference member] {
 			get {
 				if (member == null)
 					throw new ArgumentNullException ("member");
-				IMemberReference memberDef = member.Resolve ();
+				MemberReference memberDef = member.Resolve ();
 				if (memberDef == null) {
 					ArrayType array = member.DeclaringType as ArrayType;
 					if (array != null && array.Rank > 1) {
@@ -105,13 +105,13 @@ namespace Mono.Documentation {
 			}
 		}
 
-		MethodBody[] GetMethodBodies (IMemberReference member)
+		MethodBody[] GetMethodBodies (MemberReference member)
 		{
 			if (member is MethodReference) {
 				return new[]{ (((MethodReference) member).Resolve ()).Body };
 			}
 			if (member is PropertyReference) {
-				PropertyDefinition prop = ((PropertyReference) member).Resolve ();
+				PropertyDefinition prop = (PropertyDefinition) member;
 				return new[]{
 					prop.GetMethod != null ? prop.GetMethod.Body : null,
 					prop.SetMethod != null ? prop.SetMethod.Body : null,
@@ -120,7 +120,7 @@ namespace Mono.Documentation {
 			if (member is FieldReference)
 				return new MethodBody[]{};
 			if (member is EventReference) {
-				EventDefinition ev = ((EventReference) member).Resolve ();
+				EventDefinition ev = (EventDefinition) member;
 				return new[]{
 					ev.AddMethod != null ? ev.AddMethod.Body : null,
 					ev.InvokeMethod != null ? ev.InvokeMethod.Body : null, 
@@ -140,7 +140,7 @@ namespace Mono.Documentation {
 						if ((locations & ExceptionLocations.Assembly) == 0 && 
 								(locations & ExceptionLocations.DependentAssemblies) == 0)
 							break;
-						IMemberReference memberRef = ((IMemberReference) instruction.Operand);
+						MemberReference memberRef = ((MemberReference) instruction.Operand);
 						if (((locations & ExceptionLocations.Assembly) != 0 && 
 									body.Method.DeclaringType.Scope.Name == memberRef.DeclaringType.Scope.Name) ||
 								((locations & ExceptionLocations.DependentAssemblies) != 0 && 
@@ -158,7 +158,7 @@ namespace Mono.Documentation {
 						if (IsExceptionConstructor (ctor)) {
 							AddExceptions (body, instruction,
 									new TypeReference[]{ctor.DeclaringType},
-									new IMemberReference[]{body.Method},
+									new MemberReference[]{body.Method},
 									exceptions);
 						}
 						break;
@@ -167,7 +167,7 @@ namespace Mono.Documentation {
 			}
 		}
 
-		void AddExceptions (MethodBody body, Instruction instruction, IEnumerable<TypeReference> add, IEnumerable<IMemberReference> sources,
+		void AddExceptions (MethodBody body, Instruction instruction, IEnumerable<TypeReference> add, IEnumerable<MemberReference> sources,
 				Dictionary<string, ExceptionSources> exceptions)
 		{
 			var handlers = body.ExceptionHandlers.Cast<ExceptionHandler> ()
diff --git a/mcs/tools/mdoc/Mono.Documentation/mdoc.cs b/mcs/tools/mdoc/Mono.Documentation/mdoc.cs
index d728ecb..c610da8 100644
--- a/mcs/tools/mdoc/Mono.Documentation/mdoc.cs
+++ b/mcs/tools/mdoc/Mono.Documentation/mdoc.cs
@@ -51,21 +51,15 @@ namespace Mono.Documentation {
 
 			bool showVersion = false;
 			bool showHelp    = false;
-			var extra = new List<string> ();
 			var p = new OptionSet () {
 				{ "version",  v => showVersion = v != null },
 				{ "v:",       (int? v) => verbosity = v.HasValue ? v.Value : verbosity+1 },
 				{ "debug",    v => debug = v != null },
 				{ "h|?|help", v => showHelp = v != null },
-				{ "<>",       v => { 
-						if (v.Length > 0 && v [0] == '@')
-							extra.AddRange (ReadResponseFile (v.Substring (1)));
-						else
-							extra.Add (v);
-				} },
+				new ResponseFileSource (),
 			};
 
-			p.Parse (args);
+			var extra = p.Parse (args);
 
 			if (showVersion) {
 				Console.WriteLine ("mdoc {0}", Consts.MonoVersion);
@@ -78,52 +72,13 @@ namespace Mono.Documentation {
 			if (showHelp) {
 				extra.Add ("--help");
 			}
-			GetCommand (extra [0]).Run (extra);
-		}
-
-		// Cribbed from mcs/driver.cs:LoadArgs(string)
-		static IEnumerable<string> ReadResponseFile (string file)
-		{
-			StreamReader response;
-			try {
-				response = File.OpenText (file);
-			} catch {
-				yield break;
-			}
-
-			using (response) {
-				StringBuilder arg = new StringBuilder ();
-
-				string line;
-				while ((line = response.ReadLine ()) != null) {
-					int t = line.Length;
-
-					for (int i = 0; i < t; i++) {
-						char c = line [i];
-						
-						if (c == '"' || c == '\'') {
-							char end = c;
-							
-							for (i++; i < t; i++){
-								c = line [i];
-
-								if (c == end)
-									break;
-								arg.Append (c);
-							}
-						} else if (c == ' ') {
-							if (arg.Length > 0) {
-								yield return arg.ToString ();
-								arg.Length = 0;
-							}
-						} else
-							arg.Append (c);
-					}
-					if (arg.Length > 0) {
-						yield return arg.ToString ();
-						arg.Length = 0;
-					}
-				}
+			switch (extra [0]) {
+				case "x-msitomsx":
+					new MsidocToMsxdocConverter ().Run (extra);
+					break;
+				default: 
+					GetCommand (extra [0]).Run (extra);
+					break;
 			}
 		}
 
diff --git a/mcs/tools/mdoc/Mono.Documentation/monodocer.cs b/mcs/tools/mdoc/Mono.Documentation/monodocer.cs
index 72c5135..7807331 100644
--- a/mcs/tools/mdoc/Mono.Documentation/monodocer.cs
+++ b/mcs/tools/mdoc/Mono.Documentation/monodocer.cs
@@ -31,28 +31,37 @@ class MDocUpdater : MDocCommand
 	
 	bool delete;
 	bool show_exceptions;
-	bool no_assembly_versions;
+	bool no_assembly_versions, ignore_missing_types;
 	ExceptionLocations? exceptions;
 	
-	int additions = 0, deletions = 0;
+	internal int additions = 0, deletions = 0;
 
-	static XmlDocument slashdocs;
-	XmlReader ecmadocs;
+	List<DocumentationImporter> importers = new List<DocumentationImporter> ();
+
+	DocumentationEnumerator docEnum;
 
 	string since;
 
-	static readonly MemberFormatter csharpFullFormatter  = new CSharpFullMemberFormatter ();
-	static readonly MemberFormatter csharpFormatter      = new CSharpMemberFormatter ();
 	static readonly MemberFormatter docTypeFormatter     = new DocTypeMemberFormatter ();
-	static readonly MemberFormatter slashdocFormatter    = new SlashDocMemberFormatter ();
 	static readonly MemberFormatter filenameFormatter    = new FileNameMemberFormatter ();
 
+	static MemberFormatter[] typeFormatters = new MemberFormatter[]{
+		new CSharpMemberFormatter (),
+		new ILMemberFormatter (),
+	};
+
+	static MemberFormatter[] memberFormatters = new MemberFormatter[]{
+		new CSharpFullMemberFormatter (),
+		new ILFullMemberFormatter (),
+	};
+
+	internal static readonly MemberFormatter slashdocFormatter    = new SlashDocMemberFormatter ();
+
 	MyXmlNodeList extensionMethods = new MyXmlNodeList ();
 
 	public override void Run (IEnumerable<string> args)
 	{
 		show_exceptions = DebugOutput;
-		string import = null;
 		var types = new List<string> ();
 		var p = new OptionSet () {
 			{ "delete",
@@ -64,6 +73,8 @@ class MDocUpdater : MDocCommand
 				"  asm      Method calls in same assembly\n" +
 				"  depasm   Method calls in dependent assemblies\n" +
 				"  all      Record all possible exceptions\n" +
+				"  added    Modifier; only create <exception/>s\n" +
+				"             for NEW types/members\n" +
 				"If nothing is specified, then only exceptions from the member will " +
 				"be listed.",
 				v => exceptions = ParseExceptionLocations (v) },
@@ -71,6 +82,9 @@ class MDocUpdater : MDocCommand
 				"Specify a {FLAG} to alter behavior.  See later -f* options for available flags.",
 				v => {
 					switch (v) {
+						case "ignore-missing-types":
+							ignore_missing_types = true;
+							break;
 						case "no-assembly-versions":
 							no_assembly_versions = true;
 							break;
@@ -78,15 +92,21 @@ class MDocUpdater : MDocCommand
 							throw new Exception ("Unsupported flag `" + v + "'.");
 					}
 				} },
+			{ "fignore-missing-types",
+				"Do not report an error if a --type=TYPE type\nwas not found.",
+				v => ignore_missing_types = v != null },
 			{ "fno-assembly-versions",
 				"Do not generate //AssemblyVersion elements.",
 				v => no_assembly_versions = v != null },
 			{ "i|import=", 
 				"Import documentation from {FILE}.",
-				v => import = v },
+				v => AddImporter (v) },
 			{ "L|lib=",
 				"Check for assembly references in {DIRECTORY}.",
 				v => assemblyResolver.AddSearchDirectory (v) },
+			{ "library=",
+				"Ignored for compatibility with update-ecma-xml.",
+				v => {} },
 			{ "o|out=",
 				"Root {DIRECTORY} to generate/update documentation.",
 				v => srcPath = v },
@@ -121,38 +141,14 @@ class MDocUpdater : MDocCommand
 		
 		this.assemblies = assemblies.Select (a => LoadAssembly (a)).ToList ();
 
-		if (import != null && ecmadocs == null && slashdocs == null) {
-			try {
-				XmlReader r = new XmlTextReader (import);
-				if (r.Read ()) {
-					while (r.NodeType != XmlNodeType.Element) {
-						if (!r.Read ())
-							Error ("Unable to read XML file: {0}.", import);
-					}
-					if (r.LocalName == "doc") {
-						var xml = File.ReadAllText (import);
-						// Ensure Unix line endings
-						xml = xml.Replace ("\r", "");
-						slashdocs = new XmlDocument();
-						slashdocs.LoadXml (xml);
-					}
-					else if (r.LocalName == "Libraries") {
-						ecmadocs = new XmlTextReader (import);
-					}
-					else
-						Error ("Unsupported XML format within {0}.", import);
-				}
-				r.Close ();
-			} catch (Exception e) {
-				Environment.ExitCode = 1;
-				Error ("Could not load XML file: {0}.", e.Message);
-			}
-		}
+		docEnum = docEnum ?? new DocumentationEnumerator ();
 		
 		// PERFORM THE UPDATES
 		
-		if (types.Count > 0)
+		if (types.Count > 0) {
+			types.Sort ();
 			DoUpdateTypes (srcPath, types, srcPath);
+		}
 #if false
 		else if (opts. at namespace != null)
 			DoUpdateNS (opts. at namespace, Path.Combine (opts.path, opts. at namespace),
@@ -164,6 +160,33 @@ class MDocUpdater : MDocCommand
 		Console.WriteLine("Members Added: {0}, Members Deleted: {1}", additions, deletions);
 	}
 
+	void AddImporter (string path)
+	{
+		try {
+			XmlReader r = new XmlTextReader (path);
+			if (r.Read ()) {
+				while (r.NodeType != XmlNodeType.Element) {
+					if (!r.Read ())
+						Error ("Unable to read XML file: {0}.", path);
+				}
+				if (r.LocalName == "doc") {
+					importers.Add (new MsxdocDocumentationImporter (path));
+				}
+				else if (r.LocalName == "Libraries") {
+					var ecmadocs = new XmlTextReader (path);
+					docEnum = new EcmaDocumentationEnumerator (this, ecmadocs);
+					importers.Add (new EcmaDocumentationImporter (ecmadocs));
+				}
+				else
+					Error ("Unsupported XML format within {0}.", path);
+			}
+			r.Close ();
+		} catch (Exception e) {
+			Environment.ExitCode = 1;
+			Error ("Could not load XML file: {0}.", e.Message);
+		}
+	}
+
 	static ExceptionLocations ParseExceptionLocations (string s)
 	{
 		ExceptionLocations loc = ExceptionLocations.Member;
@@ -181,7 +204,7 @@ class MDocUpdater : MDocCommand
 		return loc;
 	}
 
-	private void Warning (string format, params object[] args)
+	internal void Warning (string format, params object[] args)
 	{
 		Message (TraceLevel.Warning, "mdoc: " + format, args);
 	}
@@ -190,13 +213,12 @@ class MDocUpdater : MDocCommand
 	{
 		AssemblyDefinition assembly = null;
 		try {
-			assembly = AssemblyFactory.GetAssembly (name);
+			assembly = AssemblyDefinition.ReadAssembly (name, new ReaderParameters { AssemblyResolver = assemblyResolver });
 		} catch (System.IO.FileNotFoundException) { }
 
 		if (assembly == null)
 			throw new InvalidOperationException("Assembly " + name + " not found.");
 
-		assembly.Resolver = assemblyResolver;
 		return assembly;
 	}
 
@@ -313,20 +335,85 @@ class MDocUpdater : MDocCommand
 
 	public void DoUpdateTypes (string basepath, List<string> typenames, string dest)
 	{
+		var index = CreateIndexForTypes (dest);
+
 		var found = new HashSet<string> ();
 		foreach (AssemblyDefinition assembly in assemblies) {
-			foreach (DocsTypeInfo docsTypeInfo in GetTypes (assembly, typenames)) {
-				string relpath = DoUpdateType (docsTypeInfo.Type, basepath, dest, docsTypeInfo.EcmaDocs);
-				if (relpath != null)
-					found.Add (docsTypeInfo.Type.FullName);
+			foreach (TypeDefinition type in docEnum.GetDocumentationTypes (assembly, typenames)) {
+				string relpath = DoUpdateType (type, basepath, dest);
+				if (relpath == null)
+					continue;
+
+				found.Add (type.FullName);
+
+				if (index == null)
+					continue;
+
+				index.Add (assembly);
+				index.Add (type);
 			}
 		}
+
+		if (index != null)
+			index.Write ();
+		
+		if (ignore_missing_types)
+			return;
+
 		var notFound = from n in typenames where !found.Contains (n) select n;
 		if (notFound.Any ())
 			throw new InvalidOperationException("Type(s) not found: " + string.Join (", ", notFound.ToArray ()));
 	}
 
-	public string DoUpdateType (TypeDefinition type, string basepath, string dest, XmlReader ecmaDocsType)
+	class IndexForTypes {
+
+		MDocUpdater app;
+		string indexFile;
+
+		XmlDocument index;
+		XmlElement index_types;
+		XmlElement index_assemblies;
+
+		public IndexForTypes (MDocUpdater app, string indexFile, XmlDocument index)
+		{
+			this.app        = app;
+			this.indexFile  = indexFile;
+			this.index      = index;
+
+			index_types = WriteElement (index.DocumentElement, "Types");
+			index_assemblies = WriteElement (index.DocumentElement, "Assemblies");
+		}
+
+		public void Add (AssemblyDefinition assembly)
+		{
+			if (index_assemblies.SelectSingleNode ("Assembly[@Name='" + assembly.Name.Name + "']") != null)
+				return;
+
+			app.AddIndexAssembly (assembly, index_assemblies);
+		}
+
+		public void Add (TypeDefinition type)
+		{
+			app.AddIndexType (type, index_types);
+		}
+
+		public void Write ()
+		{
+			SortIndexEntries (index_types);
+			WriteFile (indexFile, FileMode.Create, 
+					writer => WriteXml (index.DocumentElement, writer));
+		}
+	}
+
+	IndexForTypes CreateIndexForTypes (string dest)
+	{
+		string indexFile = Path.Combine (dest, "index.xml");
+		if (File.Exists (indexFile))
+			return null;
+		return new IndexForTypes (this, indexFile, CreateIndexStub ());
+	}
+
+	public string DoUpdateType (TypeDefinition type, string basepath, string dest)
 	{
 		if (type.Namespace == null)
 			Warning ("warning: The type `{0}' is in the root namespace.  This may cause problems with display within monodoc.",
@@ -359,10 +446,10 @@ class MDocUpdater : MDocCommand
 				throw new InvalidOperationException("Error loading " + typefile + ": " + e.Message, e);
 			}
 			
-			DoUpdateType2("Updating", basefile, type, output, false, ecmaDocsType);
+			DoUpdateType2("Updating", basefile, type, output, false);
 		} else {
 			// Stub
-			XmlElement td = StubType(type, output, ecmaDocsType);
+			XmlElement td = StubType(type, output);
 			if (td == null)
 				return null;
 			
@@ -398,16 +485,15 @@ class MDocUpdater : MDocCommand
 			}			
 
 			seenTypes[type] = seenTypes;
-			DoUpdateType2("Updating", basefile, type, Path.Combine(outpath, file.Name), false, null);
+			DoUpdateType2("Updating", basefile, type, Path.Combine(outpath, file.Name), false);
 		}
 		
 		// Stub types not in the directory
-		foreach (DocsTypeInfo docsTypeInfo in GetTypes (assembly, null)) {
-			TypeDefinition type = docsTypeInfo.Type;
+		foreach (TypeDefinition type in docEnum.GetDocumentationTypes (assembly, null)) {
 			if (type.Namespace != ns || seenTypes.ContainsKey(type))
 				continue;
 
-			XmlElement td = StubType(type, Path.Combine(outpath, GetTypeFileName(type) + ".xml"), docsTypeInfo.EcmaDocs);
+			XmlElement td = StubType(type, Path.Combine(outpath, GetTypeFileName(type) + ".xml"));
 			if (td == null) continue;
 		}
 	}
@@ -479,6 +565,33 @@ class MDocUpdater : MDocCommand
 		parent.AppendChild(index_assembly);
 	}
 
+	private void AddIndexType (TypeDefinition type, XmlElement index_types)
+	{
+		string typename = GetTypeFileName(type);
+
+		// Add namespace and type nodes into the index file as needed
+		string ns = DocUtils.GetNamespace (type);
+		XmlElement nsnode = (XmlElement) index_types.SelectSingleNode ("Namespace[@Name='" + ns + "']");
+		if (nsnode == null) {
+			nsnode = index_types.OwnerDocument.CreateElement("Namespace");
+			nsnode.SetAttribute ("Name", ns);
+			index_types.AppendChild (nsnode);
+		}
+		string doc_typename = GetDocTypeName (type);
+		XmlElement typenode = (XmlElement) nsnode.SelectSingleNode ("Type[@Name='" + typename + "']");
+		if (typenode == null) {
+			typenode = index_types.OwnerDocument.CreateElement ("Type");
+			typenode.SetAttribute ("Name", typename);
+			nsnode.AppendChild (typenode);
+		}
+		if (typename != doc_typename)
+			typenode.SetAttribute("DisplayName", doc_typename);
+		else
+			typenode.RemoveAttribute("DisplayName");
+
+		typenode.SetAttribute ("Kind", GetTypeKind (type));
+	}
+
 	private void DoUpdateAssemblies (string source, string dest) 
 	{
 		string indexfile = dest + "/index.xml";
@@ -525,36 +638,17 @@ class MDocUpdater : MDocCommand
 
 	private void DoUpdateAssembly (AssemblyDefinition assembly, XmlElement index_types, string source, string dest, HashSet<string> goodfiles) 
 	{
-		foreach (DocsTypeInfo docTypeInfo in GetTypes (assembly, null)) {
-			TypeDefinition type = docTypeInfo.Type;
+		foreach (TypeDefinition type in docEnum.GetDocumentationTypes (assembly, null)) {
 			string typename = GetTypeFileName(type);
 			if (!IsPublic (type) || typename.IndexOfAny (InvalidFilenameChars) >= 0)
 				continue;
 
-			string reltypepath = DoUpdateType (type, source, dest, docTypeInfo.EcmaDocs);
+			string reltypepath = DoUpdateType (type, source, dest);
 			if (reltypepath == null)
 				continue;
 			
 			// Add namespace and type nodes into the index file as needed
-			string ns = DocUtils.GetNamespace (type);
-			XmlElement nsnode = (XmlElement) index_types.SelectSingleNode("Namespace[@Name='" + ns + "']");
-			if (nsnode == null) {
-				nsnode = index_types.OwnerDocument.CreateElement("Namespace");
-				nsnode.SetAttribute ("Name", ns);
-				index_types.AppendChild(nsnode);
-			}
-			string doc_typename = GetDocTypeName (type);
-			XmlElement typenode = (XmlElement)nsnode.SelectSingleNode("Type[@Name='" + typename + "']");
-			if (typenode == null) {
-				typenode = index_types.OwnerDocument.CreateElement("Type");
-				typenode.SetAttribute("Name", typename);
-				nsnode.AppendChild(typenode);
-			}
-			if (typename != doc_typename)
-				typenode.SetAttribute("DisplayName", doc_typename);
-			else
-				typenode.RemoveAttribute("DisplayName");
-			typenode.SetAttribute ("Kind", GetTypeKind (type));
+			AddIndexType (type, index_types);
 				
 			// Ensure the namespace index file exists
 			string onsdoc = DocUtils.PathCombine (dest, type.Namespace + ".xml");
@@ -572,68 +666,6 @@ class MDocUpdater : MDocCommand
 		}
 	}
 
-	class DocsTypeInfo {
-		public TypeDefinition Type;
-		public XmlReader EcmaDocs;
-
-		public DocsTypeInfo (TypeDefinition type, XmlReader docs)
-		{
-			this.Type = type;
-			this.EcmaDocs = docs;
-		}
-	}
-
-	IEnumerable<Mono.Documentation.MDocUpdater.DocsTypeInfo> GetTypes (AssemblyDefinition assembly, List<string> forTypes)
-	{
-		HashSet<string> seen = null;
-		if (forTypes != null)
-			forTypes.Sort ();
-		if (ecmadocs != null) {
-			seen = new HashSet<string> ();
-			int typeDepth = -1;
-			while (ecmadocs.Read ()) {
-				switch (ecmadocs.Name) {
-					case "Type": {
-						if (typeDepth == -1)
-							typeDepth = ecmadocs.Depth;
-						if (ecmadocs.NodeType != XmlNodeType.Element)
-							continue;
-						if (typeDepth != ecmadocs.Depth) // nested <TypeDefinition/> element?
-							continue;
-						string typename = ecmadocs.GetAttribute ("FullName");
-						string typename2 = GetTypeFileName (typename);
-						if (forTypes != null && 
-								forTypes.BinarySearch (typename) < 0 &&
-								typename != typename2 &&
-								forTypes.BinarySearch (typename2) < 0)
-							continue;
-						TypeDefinition t;
-						if ((t = assembly.GetType (typename)) == null && 
-								(t = assembly.GetType (typename2)) == null)
-							continue;
-						seen.Add (typename);
-						if (typename != typename2)
-							seen.Add (typename2);
-						Console.WriteLine ("  Import: {0}", t.FullName);
-						yield return new DocsTypeInfo (t, ecmadocs);
-						break;
-					}
-					default:
-						break;
-				}
-			}
-		}
-		foreach (TypeDefinition type in assembly.GetTypes()) {
-			if (forTypes != null && forTypes.BinarySearch (type.FullName) < 0)
-				continue;
-			if (seen != null && seen.Contains (type.FullName))
-				continue;
-			yield return new DocsTypeInfo (type, null);
-			foreach (TypeDefinition nested in type.NestedTypes)
-				yield return new DocsTypeInfo (nested, null);
-		}
-	}
-
 	private static void SortIndexEntries (XmlElement indexTypes)
 	{
 		XmlNodeList namespaces = indexTypes.SelectNodes ("Namespace");
@@ -824,31 +856,23 @@ class MDocUpdater : MDocCommand
 
 	static readonly XmlNodeComparer DefaultExtensionMethodComparer = new ExtensionMethodComparer ();
 		
-	public void DoUpdateType2 (string message, XmlDocument basefile, TypeDefinition type, string output, bool insertSince, XmlReader ecmaDocsType)
+	public void DoUpdateType2 (string message, XmlDocument basefile, TypeDefinition type, string output, bool insertSince)
 	{
 		Console.WriteLine(message + ": " + type.FullName);
 		
 		StringToXmlNodeMap seenmembers = new StringToXmlNodeMap ();
 
 		// Update type metadata
-		UpdateType(basefile.DocumentElement, type, ecmaDocsType);
-
-		if (ecmaDocsType != null) {
-			while (ecmaDocsType.Name != "Members" && ecmaDocsType.Read ()) {
-				// do nothing
-			}
-			if (ecmaDocsType.IsEmptyElement)
-				ecmaDocsType = null;
-		}
+		UpdateType(basefile.DocumentElement, type);
 
 		// Update existing members.  Delete member nodes that no longer should be there,
 		// and remember what members are already documented so we don't add them again.
 		if (true) {
 			MyXmlNodeList todelete = new MyXmlNodeList ();
-			foreach (DocsNodeInfo info in GetDocumentationMembers (basefile, type, ecmaDocsType)) {
+			foreach (DocsNodeInfo info in docEnum.GetDocumentationMembers (basefile, type)) {
 				XmlElement oldmember  = info.Node;
-				IMemberReference oldmember2 = info.Member;
-	 			string sig = oldmember2 != null ? MakeMemberSignature(oldmember2) : null;
+				MemberReference oldmember2 = info.Member;
+				string sig = oldmember2 != null ? memberFormatters [0].GetDeclaration (oldmember2) : null;
 
 				// Interface implementations and overrides are deleted from the docs
 				// unless the overrides option is given.
@@ -886,10 +910,10 @@ class MDocUpdater : MDocCommand
 		
 		if (!DocUtils.IsDelegate (type)) {
 			XmlNode members = WriteElement (basefile.DocumentElement, "Members");
-			foreach (IMemberReference m in type.GetMembers()) {
+			foreach (MemberReference m in type.GetMembers()) {
 				if (m is TypeDefinition) continue;
 				
-				string sig = MakeMemberSignature(m);
+				string sig = memberFormatters [0].GetDeclaration (m);
 				if (sig == null) continue;
 				if (seenmembers.ContainsKey(sig)) continue;
 				
@@ -983,86 +1007,6 @@ class MDocUpdater : MDocCommand
 		return null;
 	}
 
-	private IEnumerable<DocsNodeInfo> GetDocumentationMembers (XmlDocument basefile, TypeDefinition type, XmlReader ecmaDocsMembers)
-	{
-		if (ecmaDocsMembers != null) {
-			int membersDepth = ecmaDocsMembers.Depth;
-			bool go = true;
-			while (go && ecmaDocsMembers.Read ()) {
-				switch (ecmaDocsMembers.Name) {
-					case "Member": {
-						if (membersDepth != ecmaDocsMembers.Depth - 1 || ecmaDocsMembers.NodeType != XmlNodeType.Element)
-							continue;
-						DocumentationMember dm = new DocumentationMember (ecmaDocsMembers);
-						string xp = GetXPathForMember (dm);
-						XmlElement oldmember = (XmlElement) basefile.SelectSingleNode (xp);
-						IMemberReference m;
-						if (oldmember == null) {
-							m = GetMember (type, dm);
-							if (m == null) {
-								Warning ("Could not import ECMA docs for `{0}'s `{1}': Member not found.",
-										type.FullName, dm.MemberSignatures ["C#"]);
-										// SelectSingleNode (ecmaDocsMember, "MemberSignature[@Language=\"C#\"]/@Value").Value);
-								continue;
-							}
-							// oldmember lookup may have failed due to type parameter renames.
-							// Try again.
-							oldmember = (XmlElement) basefile.SelectSingleNode (GetXPathForMember (m));
-							if (oldmember == null) {
-								XmlElement members = WriteElement(basefile.DocumentElement, "Members");
-								oldmember = basefile.CreateElement ("Member");
-								oldmember.SetAttribute ("MemberName", dm.MemberName);
-								members.AppendChild (oldmember);
-								foreach (string key in Sort (dm.MemberSignatures.Keys)) {
-									XmlElement ms = basefile.CreateElement ("MemberSignature");
-									ms.SetAttribute ("Language", key);
-									ms.SetAttribute ("Value", (string) dm.MemberSignatures [key]);
-									oldmember.AppendChild (ms);
-								}
-								oldmember.SetAttribute ("__monodocer-seen__", "true");
-								Console.WriteLine ("Member Added: {0}", MakeMemberSignature (m));
-								additions++;
-							}
-						}
-						else {
-							m = GetMember (type, new DocumentationMember (oldmember));
-							if (m == null) {
-								Warning ("Could not import ECMA docs for `{0}'s `{1}': Member not found.",
-										type.FullName, dm.MemberSignatures ["C#"]);
-								continue;
-							}
-							oldmember.SetAttribute ("__monodocer-seen__", "true");
-						}
-						DocsNodeInfo node = new DocsNodeInfo (oldmember, m);
-						if (ecmaDocsMembers.Name != "Docs")
-							throw new InvalidOperationException ("Found " + ecmaDocsMembers.Name + "; expected <Docs/>!");
-						node.EcmaDocs = ecmaDocsMembers;
-						yield return node;
-						break;
-					}
-					case "Members":
-						if (membersDepth == ecmaDocsMembers.Depth && ecmaDocsMembers.NodeType == XmlNodeType.EndElement) {
-							go = false;
-						}
-						break;
-				}
-			}
-		}
-		foreach (XmlElement oldmember in basefile.SelectNodes("Type/Members/Member")) {
-			if (oldmember.GetAttribute ("__monodocer-seen__") == "true") {
-				oldmember.RemoveAttribute ("__monodocer-seen__");
-				continue;
-			}
-			IMemberReference m = GetMember (type, new DocumentationMember (oldmember));
-			if (m == null) {
-				yield return new DocsNodeInfo (oldmember);
-			}
-			else {
-				yield return new DocsNodeInfo (oldmember, m);
-			}
-		}
-	}
-
 	void DeleteMember (string reason, string output, XmlNode member, MyXmlNodeList todelete)
 	{
 		string format = output != null
@@ -1171,197 +1115,19 @@ class MDocUpdater : MDocCommand
 	}
 	
 	// UPDATE HELPER FUNCTIONS
-
-	private static IMemberReference GetMember (TypeDefinition type, DocumentationMember member)
-	{
-		string membertype = member.MemberType;
-		
-		string returntype = member.ReturnType;
-		
-		string docName = member.MemberName;
-		string[] docTypeParams = GetTypeParameters (docName);
-
-		// Loop through all members in this type with the same name
-		foreach (IMemberReference mi in GetReflectionMembers (type, docName)) {
-			if (mi is TypeDefinition) continue;
-			if (GetMemberType(mi) != membertype) continue;
-
-			string sig = MakeMemberSignature(mi);
-			if (sig == null) continue; // not publicly visible
-
-			ParameterDefinitionCollection pis = null;
-			string[] typeParams = null;
-			if (mi is MethodDefinition) {
-				MethodDefinition mb = (MethodDefinition) mi;
-				pis = mb.Parameters;
-				if (docTypeParams != null && mb.IsGenericMethod ()) {
-					GenericParameterCollection args = mb.GenericParameters;
-					if (args.Count == docTypeParams.Length) {
-						typeParams = args.Cast<GenericParameter> ().Select (p => p.Name).ToArray ();
-					}
-				}
-			}
-			else if (mi is PropertyDefinition)
-				pis = ((PropertyDefinition)mi).Parameters;
-			
-			int mcount = member.Parameters == null ? 0 : member.Parameters.Count;
-			int pcount = pis == null ? 0 : pis.Count;
-			if (mcount != pcount)
-				continue;
-
-			MethodDefinition mDef = mi as MethodDefinition;
-			if (mDef != null && !mDef.IsConstructor) {
-				// Casting operators can overload based on return type.
-				if (returntype != GetReplacedString (
-							GetDocTypeFullName (((MethodDefinition)mi).ReturnType.ReturnType), 
-							typeParams, docTypeParams)) {
-					continue;
-				}
-			}
-
-			if (pcount == 0)
-				return mi;
-			bool good = true;
-			for (int i = 0; i < pis.Count; i++) {
-				string paramType = GetReplacedString (
-					GetDocParameterType (pis [i].ParameterType),
-					typeParams, docTypeParams);
-				if (paramType != (string) member.Parameters [i]) {
-					good = false;
-					break;
-				}
-			}
-			if (!good) continue;
-
-			return mi;
-		}
-		
-		return null;
-	}
-
-	private static IEnumerable<IMemberReference> GetReflectionMembers (TypeDefinition type, string docName)
-	{
-		// need to worry about 4 forms of //@MemberName values:
-		//  1. "Normal" (non-generic) member names: GetEnumerator
-		//    - Lookup as-is.
-		//  2. Explicitly-implemented interface member names: System.Collections.IEnumerable.Current
-		//    - try as-is, and try type.member (due to "kludge" for property
-		//      support.
-		//  3. "Normal" Generic member names: Sort<T> (CSC)
-		//    - need to remove generic parameters --> "Sort"
-		//  4. Explicitly-implemented interface members for generic interfaces: 
-		//    -- System.Collections.Generic.IEnumerable<T>.Current
-		//    - Try as-is, and try type.member, *keeping* the generic parameters.
-		//     --> System.Collections.Generic.IEnumerable<T>.Current, IEnumerable<T>.Current
-		//  5. As of 2008-01-02, gmcs will do e.g. 'IFoo`1[A].Method' instead of
-		//    'IFoo<A>.Method' for explicitly implemented methods; don't interpret
-		//    this as (1) or (2).
-		if (docName.IndexOf ('<') == -1 && docName.IndexOf ('[') == -1) {
-			// Cases 1 & 2
-			foreach (IMemberReference mi in type.GetMembers (docName))
-				yield return mi;
-			if (CountChars (docName, '.') > 0)
-				// might be a property; try only type.member instead of
-				// namespace.type.member.
-				foreach (IMemberReference mi in 
-						type.GetMembers (DocUtils.GetTypeDotMember (docName)))
-					yield return mi;
-			yield break;
-		}
-		// cases 3 & 4
-		int numLt = 0;
-		int numDot = 0;
-		int startLt, startType, startMethod;
-		startLt = startType = startMethod = -1;
-		for (int i = 0; i < docName.Length; ++i) {
-			switch (docName [i]) {
-				case '<':
-					if (numLt == 0) {
-						startLt = i;
-					}
-					++numLt;
-					break;
-				case '>':
-					--numLt;
-					if (numLt == 0 && (i + 1) < docName.Length)
-						// there's another character in docName, so this <...> sequence is
-						// probably part of a generic type -- case 4.
-						startLt = -1;
-					break;
-				case '.':
-					startType = startMethod;
-					startMethod = i;
-					++numDot;
-					break;
-			}
-		}
-		string refName = startLt == -1 ? docName : docName.Substring (0, startLt);
-		// case 3
-		foreach (IMemberReference mi in type.GetMembers (refName))
-			yield return mi;
-
-		// case 4
-		foreach (IMemberReference mi in type.GetMembers (refName.Substring (startType + 1)))
-			yield return mi;
-
-		// If we _still_ haven't found it, we've hit another generic naming issue:
-		// post Mono 1.1.18, gmcs generates [[FQTN]] instead of <TypeName> for
-		// explicitly-implemented METHOD names (not properties), e.g. 
-		// "System.Collections.Generic.IEnumerable`1[[Foo, test, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]].GetEnumerator"
-		// instead of "System.Collections.Generic.IEnumerable<Foo>.GetEnumerator",
-		// which the XML docs will contain.
-		//
-		// Alas, we can't derive the Mono name from docName, so we need to iterate
-		// over all member names, convert them into CSC format, and compare... :-(
-		if (numDot == 0)
-			yield break;
-		foreach (IMemberReference mi in type.GetMembers ()) {
-			if (GetMemberName (mi) == docName)
-				yield return mi;
-		}
-	}
-
-	static string[] GetTypeParameters (string docName)
-	{
-		if (docName [docName.Length-1] != '>')
-			return null;
-		StringList types = new StringList ();
-		int endToken = docName.Length-2;
-		int i = docName.Length-2;
-		do {
-			if (docName [i] == ',' || docName [i] == '<') {
-				types.Add (docName.Substring (i + 1, endToken - i));
-				endToken = i-1;
-			}
-			if (docName [i] == '<')
-				break;
-		} while (--i >= 0);
-
-		types.Reverse ();
-		return types.ToArray ();
-	}
-
-	static string GetReplacedString (string typeName, string[] from, string[] to)
-	{
-		if (from == null)
-			return typeName;
-		for (int i = 0; i < from.Length; ++i)
-			typeName = typeName.Replace (from [i], to [i]);
-		return typeName;
-	}
 	
 	// CREATE A STUB DOCUMENTATION FILE	
 
-	public XmlElement StubType (TypeDefinition type, string output, XmlReader ecmaDocsType)
+	public XmlElement StubType (TypeDefinition type, string output)
 	{
-		string typesig = MakeTypeSignature(type);
+		string typesig = typeFormatters [0].GetDeclaration (type);
 		if (typesig == null) return null; // not publicly visible
 		
 		XmlDocument doc = new XmlDocument();
 		XmlElement root = doc.CreateElement("Type");
 		doc.AppendChild (root);
 
-		DoUpdateType2 ("New Type", doc, type, output, true, ecmaDocsType);
+		DoUpdateType2 ("New Type", doc, type, output, true);
 		
 		return root;
 	}
@@ -1375,13 +1141,16 @@ class MDocUpdater : MDocCommand
 	
 	// STUBBING/UPDATING FUNCTIONS
 	
-	public void UpdateType (XmlElement root, TypeDefinition type, XmlReader ecmaDocsType)
+	public void UpdateType (XmlElement root, TypeDefinition type)
 	{
 		root.SetAttribute("Name", GetDocTypeName (type));
 		root.SetAttribute("FullName", GetDocTypeFullName (type));
 
-		WriteElementAttribute(root, "TypeSignature[@Language='C#']", "Language", "C#");
-		WriteElementAttribute(root, "TypeSignature[@Language='C#']", "Value", MakeTypeSignature(type));
+		foreach (MemberFormatter f in typeFormatters) {
+			string element = "TypeSignature[@Language='" + f.Language + "']";
+			WriteElementAttribute (root, element, "Language", f.Language);
+			WriteElementAttribute (root, element, "Value", f.GetDeclaration (type));
+		}
 		
 		XmlElement ass = WriteElement(root, "AssemblyInfo");
 		WriteElementText(ass, "AssemblyName", type.Module.Assembly.Name.Name);
@@ -1422,12 +1191,12 @@ class MDocUpdater : MDocCommand
 			WriteElementText(root, "Base/BaseTypeName", basetypename);
 			
 			// Document how this type instantiates the generic parameters of its base type
-			TypeReference origBase = type.BaseType.GetOriginalType ();
+			TypeReference origBase = type.BaseType.GetElementType ();
 			if (origBase.IsGenericType ()) {
 				ClearElement(basenode, "BaseTypeArguments");
 				GenericInstanceType baseInst             = type.BaseType as GenericInstanceType;
-				GenericArgumentCollection baseGenArgs    = baseInst == null ? null : baseInst.GenericArguments;
-				GenericParameterCollection baseGenParams = origBase.GenericParameters;
+				IList<TypeReference> baseGenArgs    = baseInst == null ? null : baseInst.GenericArguments;
+				IList<GenericParameter> baseGenParams = origBase.GenericParameters;
 				if (baseGenArgs.Count != baseGenParams.Count)
 					throw new InvalidOperationException ("internal error: number of generic arguments doesn't match number of generic parameters.");
 				for (int i = 0; baseGenArgs != null && i < baseGenArgs.Count; i++) {
@@ -1472,27 +1241,38 @@ class MDocUpdater : MDocCommand
 		}
 		
 		DocsNodeInfo typeInfo = new DocsNodeInfo (WriteElement(root, "Docs"), type);
-		if (ecmaDocsType != null) {
-			if (ecmaDocsType.Name != "Docs") {
-				int depth = ecmaDocsType.Depth;
-				while (ecmaDocsType.Read ()) {
-					if (ecmaDocsType.Name == "Docs" && ecmaDocsType.Depth == depth + 1)
-						break;
-				}
-			}
-			if (!ecmaDocsType.IsStartElement ("Docs"))
-				throw new InvalidOperationException ("Found " + ecmaDocsType.Name + "; expecting <Docs/>!");
-			typeInfo.EcmaDocs = ecmaDocsType;
-		}
 		MakeDocNode (typeInfo);
 		
 		if (!DocUtils.IsDelegate (type))
 			WriteElement (root, "Members");
 
+		OrderTypeNodes (root, root.ChildNodes);
 		NormalizeWhitespace(root);
 	}
 
-	static IEnumerable<T> Sort<T> (IEnumerable<T> list)
+	static readonly string[] TypeNodeOrder = {
+		"TypeSignature",
+		"MemberOfLibrary",
+		"AssemblyInfo",
+		"ThreadingSafetyStatement",
+		"ThreadSafetyStatement",
+		"TypeParameters",
+		"Base",
+		"Interfaces",
+		"Attributes",
+		"Parameters",
+		"ReturnValue",
+		"Docs",
+		"Members",
+		"TypeExcluded",
+	};
+
+	static void OrderTypeNodes (XmlNode member, XmlNodeList children)
+	{
+		ReorderNodes (member, children, TypeNodeOrder);
+	}
+
+	internal static IEnumerable<T> Sort<T> (IEnumerable<T> list)
 	{
 		List<T> l = new List<T> (list);
 		l.Sort ();
@@ -1502,9 +1282,13 @@ class MDocUpdater : MDocCommand
 	private void UpdateMember (DocsNodeInfo info)
 	{
 		XmlElement me = (XmlElement) info.Node;
-		IMemberReference mi = info.Member;
-		WriteElementAttribute(me, "MemberSignature[@Language='C#']", "Language", "C#");
-		WriteElementAttribute(me, "MemberSignature[@Language='C#']", "Value", MakeMemberSignature(mi));
+		MemberReference mi = info.Member;
+
+		foreach (MemberFormatter f in memberFormatters) {
+			string element = "MemberSignature[@Language='" + f.Language + "']";
+			WriteElementAttribute (me, element, "Language", f.Language);
+			WriteElementAttribute (me, element, "Value", f.GetDeclaration (mi));
+		}
 
 		WriteElementText(me, "MemberType", GetMemberType(mi));
 		
@@ -1531,10 +1315,52 @@ class MDocUpdater : MDocCommand
 		
 		info.Node = WriteElement (me, "Docs");
 		MakeDocNode (info);
+		OrderMemberNodes (me, me.ChildNodes);
 		UpdateExtensionMethods (me, info);
 	}
 
-	IEnumerable<string> GetCustomAttributes (IMemberReference mi)
+	static readonly string[] MemberNodeOrder = {
+		"MemberSignature",
+		"MemberType",
+		"AssemblyInfo",
+		"Attributes",
+		"ReturnValue",
+		"TypeParameters",
+		"Parameters",
+		"MemberValue",
+		"Docs",
+		"Excluded",
+		"ExcludedLibrary",
+		"Link",
+	};
+
+	static void OrderMemberNodes (XmlNode member, XmlNodeList children)
+	{
+		ReorderNodes (member, children, MemberNodeOrder);
+	}
+
+	static void ReorderNodes (XmlNode node, XmlNodeList children, string[] ordering)
+	{
+		MyXmlNodeList newChildren = new MyXmlNodeList (children.Count);
+		for (int i = 0; i < ordering.Length; ++i) {
+			for (int j = 0; j < children.Count; ++j) {
+				XmlNode c = children [j];
+				if (c.Name == ordering [i]) {
+					newChildren.Add (c);
+				}
+			}
+		}
+		if (newChildren.Count >= 0)
+			node.PrependChild ((XmlNode) newChildren [0]);
+		for (int i = 1; i < newChildren.Count; ++i) {
+			XmlNode prev = (XmlNode) newChildren [i-1];
+			XmlNode cur  = (XmlNode) newChildren [i];
+			node.RemoveChild (cur);
+			node.InsertAfter (cur, prev);
+		}
+	}
+
+	IEnumerable<string> GetCustomAttributes (MemberReference mi)
 	{
 		IEnumerable<string> attrs = Enumerable.Empty<string>();
 
@@ -1542,18 +1368,16 @@ class MDocUpdater : MDocCommand
 		if (p != null)
 			attrs = attrs.Concat (GetCustomAttributes (p.CustomAttributes, ""));
 
-		PropertyReference pr = mi as PropertyReference;
-		if (pr != null) {
-			PropertyDefinition pd = pr.Resolve ();
+		PropertyDefinition pd = mi as PropertyDefinition;
+		if (pd != null) {
 			if (pd.GetMethod != null)
 				attrs = attrs.Concat (GetCustomAttributes (pd.GetMethod.CustomAttributes, "get: "));
 			if (pd.SetMethod != null)
 				attrs = attrs.Concat (GetCustomAttributes (pd.SetMethod.CustomAttributes, "set: "));
 		}
 
-		EventReference er = mi as EventReference;
-		if (er != null) {
-			EventDefinition ed = er.Resolve ();
+		EventDefinition ed = mi as EventDefinition;
+		if (ed != null) {
 			if (ed.AddMethod != null)
 				attrs = attrs.Concat (GetCustomAttributes (ed.AddMethod.CustomAttributes, "add: "));
 			if (ed.RemoveMethod != null)
@@ -1563,38 +1387,33 @@ class MDocUpdater : MDocCommand
 		return attrs;
 	}
 
-	IEnumerable<string> GetCustomAttributes (CustomAttributeCollection attributes, string prefix)
+	IEnumerable<string> GetCustomAttributes (IList<CustomAttribute> attributes, string prefix)
 	{
-		foreach (CustomAttribute attribute in attributes.Cast<CustomAttribute> ()
-				.OrderBy (ca => ca.Constructor.DeclaringType.FullName)) {
-			if (!attribute.Resolve ()) {
-				// skip?
-				Warning ("warning: could not resolve type {0}.",
-						attribute.Constructor.DeclaringType.FullName);
-			}
-			TypeDefinition attrType = attribute.Constructor.DeclaringType as TypeDefinition;
+		foreach (CustomAttribute attribute in attributes.OrderBy (ca => ca.AttributeType.FullName)) {
+
+			TypeDefinition attrType = attribute.AttributeType as TypeDefinition;
 			if (attrType != null && !IsPublic (attrType))
 				continue;
-			if (slashdocFormatter.GetName (attribute.Constructor.DeclaringType) == null)
+			if (slashdocFormatter.GetName (attribute.AttributeType) == null)
 				continue;
 			
-			if (Array.IndexOf (IgnorableAttributes, attribute.Constructor.DeclaringType.FullName) >= 0)
+			if (Array.IndexOf (IgnorableAttributes, attribute.AttributeType.FullName) >= 0)
 				continue;
 			
 			StringList fields = new StringList ();
 
-			ParameterDefinitionCollection parameters = attribute.Constructor.Parameters;
-			for (int i = 0; i < attribute.ConstructorParameters.Count; ++i) {
+			for (int i = 0; i < attribute.ConstructorArguments.Count; ++i) {
+				CustomAttributeArgument argument = attribute.ConstructorArguments [i];
 				fields.Add (MakeAttributesValueString (
-						attribute.ConstructorParameters [i],
-						parameters [i].ParameterType));
+						argument.Value,
+						argument.Type));
 			}
 			var namedArgs =
-				(from de in attribute.Fields.Cast<DictionaryEntry> ()
-				 select new { Type=attribute.GetFieldType (de.Key.ToString ()), Name=de.Key, Value=de.Value })
+				(from namedArg in attribute.Fields
+				 select new { Type=namedArg.Argument.Type, Name=namedArg.Name, Value=namedArg.Argument.Value })
 				.Concat (
-						(from de in attribute.Properties.Cast<DictionaryEntry> ()
-						 select new { Type=attribute.GetPropertyType (de.Key.ToString ()), Name=de.Key, Value=de.Value }))
+						(from namedArg in attribute.Properties
+						 select new { Type=namedArg.Argument.Type, Name=namedArg.Name, Value=namedArg.Argument.Value }))
 				.OrderBy (v => v.Name);
 			foreach (var d in namedArgs)
 				fields.Add (string.Format ("{0}={1}", d.Name, 
@@ -1603,7 +1422,7 @@ class MDocUpdater : MDocCommand
 			string a2 = String.Join(", ", fields.ToArray ());
 			if (a2 != "") a2 = "(" + a2 + ")";
 
-			string name = attribute.Constructor.DeclaringType.FullName;
+			string name = attribute.GetDeclaringType();
 			if (name.EndsWith("Attribute")) name = name.Substring(0, name.Length-"Attribute".Length);
 			yield return prefix + name + a2;
 		}
@@ -1676,7 +1495,7 @@ class MDocUpdater : MDocCommand
 		}
 		else {
 			GenericParameter gp = (GenericParameter) info.Parameters [0].ParameterType;
-			ConstraintCollection constraints = gp.Constraints;
+			IList<TypeReference> constraints = gp.Constraints;
 			if (constraints.Count == 0)
 				AppendElementAttributeText (targets, "Target", "Type", "System.Object");
 			else
@@ -1712,7 +1531,7 @@ class MDocUpdater : MDocCommand
 	
 	// XML HELPER FUNCTIONS
 	
-	private static XmlElement WriteElement(XmlNode parent, string element) {
+	internal static XmlElement WriteElement(XmlNode parent, string element) {
 		XmlElement ret = (XmlElement)parent.SelectSingleNode(element);
 		if (ret == null) {
 			string[] path = element.Split('/');
@@ -1753,7 +1572,7 @@ class MDocUpdater : MDocCommand
 		return n;
 	}
 
-	private static XmlNode CopyNode (XmlNode source, XmlNode dest)
+	internal static XmlNode CopyNode (XmlNode source, XmlNode dest)
 	{
 		XmlNode copy = dest.OwnerDocument.ImportNode (source, true);
 		dest.AppendChild (copy);
@@ -1772,7 +1591,7 @@ class MDocUpdater : MDocCommand
 		if (node.GetAttribute(attribute) == value) return;
 		node.SetAttribute(attribute, value);
 	}
-	private static void ClearElement(XmlElement parent, string name) {
+	internal static void ClearElement(XmlElement parent, string name) {
 		XmlElement node = (XmlElement)parent.SelectSingleNode(name);
 		if (node != null)
 			parent.RemoveChild(node);
@@ -1783,7 +1602,7 @@ class MDocUpdater : MDocCommand
 	private void MakeDocNode (DocsNodeInfo info)
 	{
 		List<GenericParameter> genericParams      = info.GenericParameters;
-		ParameterDefinitionCollection parameters  = info.Parameters;
+		IList<ParameterDefinition> parameters  = info.Parameters;
 		TypeReference returntype                  = info.ReturnType;
 		bool returnisreturn         = info.ReturnIsReturn;
 		XmlElement e                = info.Node;
@@ -1833,158 +1652,8 @@ class MDocUpdater : MDocCommand
 			UpdateExceptions (e, info.Member);
 		}
 
-		if (info.EcmaDocs != null) {
-			XmlReader r = info.EcmaDocs;
-			int depth = r.Depth;
-			r.ReadStartElement ("Docs");
-			while (r.Read ()) {
-				if (r.Name == "Docs") {
-					if (r.Depth == depth && r.NodeType == XmlNodeType.EndElement)
-						break;
-					else
-						throw new InvalidOperationException ("Skipped past current <Docs/> element!");
-				}
-				if (!r.IsStartElement ())
-					continue;
-				switch (r.Name) {
-					case "param":
-					case "typeparam": {
-						string name = r.GetAttribute ("name");
-						if (name == null)
-							break;
-						XmlNode doc = e.SelectSingleNode (
-								r.Name + "[@name='" + name + "']");
-						string value = r.ReadInnerXml ();
-						if (doc != null)
-							doc.InnerXml = value.Replace ("\r", "");
-						break;
-					}
-					case "altmember":
-					case "exception":
-					case "permission":
-					case "seealso": {
-						string name = r.Name;
-						string cref = r.GetAttribute ("cref");
-						if (cref == null)
-							break;
-						XmlNode doc = e.SelectSingleNode (
-								r.Name + "[@cref='" + cref + "']");
-						string value = r.ReadInnerXml ().Replace ("\r", "");
-						if (doc != null)
-							doc.InnerXml = value;
-						else {
-							XmlElement n = e.OwnerDocument.CreateElement (name);
-							n.SetAttribute ("cref", cref);
-							n.InnerXml = value;
-							e.AppendChild (n);
-						}
-						break;
-					}
-					default: {
-						string name = r.Name;
-						string xpath = r.Name;
-						StringList attributes = new StringList (r.AttributeCount);
-						if (r.MoveToFirstAttribute ()) {
-							do {
-								attributes.Add ("@" + r.Name + "=\"" + r.Value + "\"");
-							} while (r.MoveToNextAttribute ());
-							r.MoveToContent ();
-						}
-						if (attributes.Count > 0) {
-							xpath += "[" + string.Join (" and ", attributes.ToArray ()) + "]";
-						}
-						XmlNode doc = e.SelectSingleNode (xpath);
-						string value = r.ReadInnerXml ().Replace ("\r", "");
-						if (doc != null) {
-							doc.InnerXml = value;
-						}
-						else {
-							XmlElement n = e.OwnerDocument.CreateElement (name);
-							n.InnerXml = value;
-							foreach (string a in attributes) {
-								int eq = a.IndexOf ('=');
-								n.SetAttribute (a.Substring (1, eq-1), a.Substring (eq+2, a.Length-eq-3));
-							}
-							e.AppendChild (n);
-						}
-						break;
-					}
-				}
-			}
-		}
-		if (info.SlashDocs != null) {
-			XmlNode elem = info.SlashDocs;
-			if (elem != null) {
-				if (elem.SelectSingleNode("summary") != null)
-					ClearElement(e, "summary");
-				if (elem.SelectSingleNode("remarks") != null)
-					ClearElement(e, "remarks");
-				if (elem.SelectSingleNode ("value") != null || elem.SelectSingleNode ("returns") != null) {
-					ClearElement(e, "value");
-					ClearElement(e, "returns");
-				}
-
-				foreach (XmlNode child in elem.ChildNodes) {
-					switch (child.Name) {
-						case "param":
-						case "typeparam": {
-							XmlAttribute name = child.Attributes ["name"];
-							if (name == null)
-								break;
-							XmlElement p2 = (XmlElement) e.SelectSingleNode (child.Name + "[@name='" + name.Value + "']");
-							if (p2 != null)
-								p2.InnerXml = child.InnerXml;
-							break;
-						}
-						// Occasionally XML documentation will use <returns/> on
-						// properties, so let's try to normalize things.
-						case "value":
-						case "returns": {
-							XmlElement v = e.OwnerDocument.CreateElement (retnodename ?? child.Name);
-							v.InnerXml = child.InnerXml;
-							e.AppendChild (v);
-							break;
-						}
-						case "altmember":
-						case "exception":
-						case "permission": {
-							XmlAttribute cref = child.Attributes ["cref"] ?? child.Attributes ["name"];
-							if (cref == null)
-								break;
-							XmlElement a = (XmlElement) e.SelectSingleNode (child.Name + "[@cref='" + cref.Value + "']");
-							if (a == null) {
-								a = e.OwnerDocument.CreateElement (child.Name);
-								a.SetAttribute ("cref", child.Attributes ["cref"].Value);
-								e.AppendChild (a);
-							}
-							a.InnerXml = child.InnerXml;
-							break;
-						}
-						case "seealso": {
-							XmlAttribute cref = child.Attributes ["cref"];
-							if (cref == null)
-								break;
-							XmlElement a = (XmlElement) e.SelectSingleNode ("altmember[@cref='" + cref.Value + "']");
-							if (a == null) {
-								a = e.OwnerDocument.CreateElement ("altmember");
-								a.SetAttribute ("cref", child.Attributes ["cref"].Value);
-								e.AppendChild (a);
-							}
-							break;
-						}
-						default: {
-							bool add = true;
-							if (child.NodeType == XmlNodeType.Element && 
-									e.SelectNodes (child.Name).Cast<XmlElement>().Any (n => n.OuterXml == child.OuterXml))
-								add = false;
-							if (add)
-								CopyNode (child, e);
-							break;
-						}
-					}
-				}
-			}
-		}
+		foreach (DocumentationImporter importer in importers)
+			importer.ImportDocumentation (info);
 		
 		OrderDocsNodes (e, e.ChildNodes);
 		NormalizeWhitespace(e);
@@ -1996,23 +1665,7 @@ class MDocUpdater : MDocCommand
 
 	private static void OrderDocsNodes (XmlNode docs, XmlNodeList children)
 	{
-		MyXmlNodeList newChildren = new MyXmlNodeList (children.Count);
-		for (int i = 0; i < DocsNodeOrder.Length; ++i) {
-			for (int j = 0; j < children.Count; ++j) {
-				XmlNode c = children [j];
-				if (c.Name == DocsNodeOrder [i]) {
-					newChildren.Add (c);
-				}
-			}
-		}
-		if (newChildren.Count >= 0)
-			docs.PrependChild ((XmlNode) newChildren [0]);
-		for (int i = 1; i < newChildren.Count; ++i) {
-			XmlNode prev = (XmlNode) newChildren [i-1];
-			XmlNode cur  = (XmlNode) newChildren [i];
-			docs.RemoveChild (cur);
-			docs.InsertAfter (cur, prev);
-		}
+		ReorderNodes (docs, children, DocsNodeOrder);
 	}
 	
 
@@ -2144,7 +1797,7 @@ class MDocUpdater : MDocCommand
 		}
 	}
 	
-	private void UpdateExceptions (XmlNode docs, IMemberReference member)
+	private void UpdateExceptions (XmlNode docs, MemberReference member)
 	{
 		foreach (var source in new ExceptionLookup (exceptions.Value)[member]) {
 			string cref = slashdocFormatter.GetDeclaration (source.Exception);
@@ -2175,7 +1828,7 @@ class MDocUpdater : MDocCommand
 				n.ParentNode.RemoveChild(n);
 	}
 	
-	private static bool UpdateAssemblyVersions (XmlElement root, IMemberReference member, bool add)
+	private static bool UpdateAssemblyVersions (XmlElement root, MemberReference member, bool add)
 	{
 		TypeDefinition type = member as TypeDefinition;
 		if (type == null)
@@ -2237,6 +1890,8 @@ class MDocUpdater : MDocCommand
 		"System.Runtime.CompilerServices.UnsafeValueTypeAttribute",
 		// extension methods
 		"System.Runtime.CompilerServices.ExtensionAttribute",
+		// Used to differentiate 'object' from C#4 'dynamic'
+		"System.Runtime.CompilerServices.DynamicAttribute",
 	};
 
 	private void MakeAttributes (XmlElement root, IEnumerable<string> attributes)
@@ -2283,8 +1938,7 @@ class MDocUpdater : MDocCommand
 		long c = ToInt64 (v);
 		if (values.ContainsKey (c))
 			return typename + "." + values [c];
-		if (valueDef.CustomAttributes.Cast<CustomAttribute> ()
-				.Any (ca => ca.Constructor.DeclaringType.FullName == "System.FlagsAttribute")) {
+		if (valueDef.CustomAttributes.Any (ca => ca.AttributeType.FullName == "System.FlagsAttribute")) {
 			return string.Join (" | ",
 					(from i in values.Keys
 					 where (c & i) != 0
@@ -2298,7 +1952,7 @@ class MDocUpdater : MDocCommand
 	{
 		var values = new Dictionary<long, string> ();
 		foreach (var f in 
-				(from f in type.Fields.Cast<FieldDefinition> ()
+				(from f in type.Fields
 				 where !(f.IsRuntimeSpecialName || f.IsSpecialName)
 				 select f)) {
 			values [ToInt64 (f.Constant)] = f.Name;
@@ -2313,7 +1967,7 @@ class MDocUpdater : MDocCommand
 		return Convert.ToInt64 (value);
 	}
 	
-	private void MakeParameters (XmlElement root, ParameterDefinitionCollection parameters)
+	private void MakeParameters (XmlElement root, IList<ParameterDefinition> parameters)
 	{
 		XmlElement e = WriteElement(root, "Parameters");
 		e.RemoveAll();
@@ -2322,7 +1976,7 @@ class MDocUpdater : MDocCommand
 			e.AppendChild(pe);
 			pe.SetAttribute("Name", p.Name);
 			pe.SetAttribute("Type", GetDocParameterType (p.ParameterType));
-			if (p.ParameterType is ReferenceType) {
+			if (p.ParameterType is ByReferenceType) {
 				if (p.IsOut) pe.SetAttribute("RefType", "out");
 				else pe.SetAttribute("RefType", "ref");
 			}
@@ -2330,7 +1984,7 @@ class MDocUpdater : MDocCommand
 		}
 	}
 	
-	private void MakeTypeParameters (XmlElement root, GenericParameterCollection typeParams)
+	private void MakeTypeParameters (XmlElement root, IList<GenericParameter> typeParams)
 	{
 		if (typeParams == null || typeParams.Count == 0) {
 			XmlElement f = (XmlElement) root.SelectSingleNode ("TypeParameters");
@@ -2346,7 +2000,7 @@ class MDocUpdater : MDocCommand
 			pe.SetAttribute("Name", t.Name);
 			MakeAttributes (pe, GetCustomAttributes (t.CustomAttributes, ""));
 			XmlElement ce = (XmlElement) e.SelectSingleNode ("Constraints");
-			ConstraintCollection constraints = t.Constraints;
+			IList<TypeReference> constraints = t.Constraints;
 			GenericParameterAttributes attrs = t.Attributes;
 			if (attrs == GenericParameterAttributes.NonVariant && constraints.Count == 0) {
 				if (ce != null)
@@ -2378,13 +2032,13 @@ class MDocUpdater : MDocCommand
 		}
 	}
 
-	private void MakeParameters (XmlElement root, IMemberReference mi)
+	private void MakeParameters (XmlElement root, MemberReference mi)
 	{
 		if (mi is MethodDefinition && ((MethodDefinition) mi).IsConstructor)
 			MakeParameters (root, ((MethodDefinition)mi).Parameters);
 		else if (mi is MethodDefinition) {
 			MethodDefinition mb = (MethodDefinition) mi;
-			ParameterDefinitionCollection parameters = mb.Parameters;
+			IList<ParameterDefinition> parameters = mb.Parameters;
 			MakeParameters(root, parameters);
 			if (parameters.Count > 0 && DocUtils.IsExtensionMethod (mb)) {
 				XmlElement p = (XmlElement) root.SelectSingleNode ("Parameters/Parameter[position()=1]");
@@ -2392,7 +2046,7 @@ class MDocUpdater : MDocCommand
 			}
 		}
 		else if (mi is PropertyDefinition) {
-			ParameterDefinitionCollection parameters = ((PropertyDefinition)mi).Parameters;
+			IList<ParameterDefinition> parameters = ((PropertyDefinition)mi).Parameters;
 			if (parameters.Count > 0)
 				MakeParameters(root, parameters);
 			else
@@ -2403,12 +2057,12 @@ class MDocUpdater : MDocCommand
 		else throw new ArgumentException();
 	}
 
-	private static string GetDocParameterType (TypeReference type)
+	internal static string GetDocParameterType (TypeReference type)
 	{
 		return GetDocTypeFullName (type).Replace ("@", "&");
 	}
 
-	private void MakeReturnValue (XmlElement root, TypeReference type, CustomAttributeCollection attributes) 
+	private void MakeReturnValue (XmlElement root, TypeReference type, IList<CustomAttribute> attributes) 
 	{
 		XmlElement e = WriteElement(root, "ReturnValue");
 		e.RemoveAll();
@@ -2417,12 +2071,12 @@ class MDocUpdater : MDocCommand
 			MakeAttributes(e, GetCustomAttributes (attributes, ""));
 	}
 	
-	private void MakeReturnValue (XmlElement root, IMemberReference mi)
+	private void MakeReturnValue (XmlElement root, MemberReference mi)
 	{
 		if (mi is MethodDefinition && ((MethodDefinition) mi).IsConstructor)
 			return;
 		else if (mi is MethodDefinition)
-			MakeReturnValue (root, ((MethodDefinition)mi).ReturnType.ReturnType, ((MethodDefinition)mi).ReturnType.CustomAttributes);
+			MakeReturnValue (root, ((MethodDefinition)mi).ReturnType, ((MethodDefinition)mi).MethodReturnType.CustomAttributes);
 		else if (mi is PropertyDefinition)
 			MakeReturnValue (root, ((PropertyDefinition)mi).PropertyType, null);
 		else if (mi is FieldDefinition)
@@ -2435,10 +2089,10 @@ class MDocUpdater : MDocCommand
 	
 	private XmlElement MakeMember(XmlDocument doc, DocsNodeInfo info)
 	{
-		IMemberReference mi = info.Member;
+		MemberReference mi = info.Member;
 		if (mi is TypeDefinition) return null;
 
-		string sigs = MakeMemberSignature(mi);
+		string sigs = memberFormatters [0].GetDeclaration (mi);
 		if (sigs == null) return null; // not publicly visible
 		
 		// no documentation for property/event accessors.  Is there a better way of doing this?
@@ -2465,7 +2119,7 @@ class MDocUpdater : MDocCommand
 		return me;
 	}
 
-	private static string GetMemberName (IMemberReference mi)
+	internal static string GetMemberName (MemberReference mi)
 	{
 		MethodDefinition mb = mi as MethodDefinition;
 		if (mb == null) {
@@ -2486,7 +2140,7 @@ class MDocUpdater : MDocCommand
 			sb.Append (ifaceMethod.Name);
 		}
 		if (mb.IsGenericMethod ()) {
-			GenericParameterCollection typeParams = mb.GenericParameters;
+			IList<GenericParameter> typeParams = mb.GenericParameters;
 			if (typeParams.Count > 0) {
 				sb.Append ("<");
 				sb.Append (typeParams [0].Name);
@@ -2497,30 +2151,14 @@ class MDocUpdater : MDocCommand
 		}
 		return sb.ToString ();
 	}
-
-	private static int CountChars (string s, char c)
-	{
-		int count = 0;
-		for (int i = 0; i < s.Length; ++i) {
-			if (s [i] == c)
-				++count;
-		}
-		return count;
-	}
 	
 	/// SIGNATURE GENERATION FUNCTIONS
-	
-	static string MakeTypeSignature (TypeReference type)
-	{
-		return csharpFormatter.GetDeclaration (type);
-	}
-
-	static string MakeMemberSignature (IMemberReference mi)
+	internal static bool IsPrivate (MemberReference mi)
 	{
-		return csharpFullFormatter.GetDeclaration (mi);
+		return memberFormatters [0].GetDeclaration (mi) == null;
 	}
 
-	static string GetMemberType (IMemberReference mi)
+	internal static string GetMemberType (MemberReference mi)
 	{
 		if (mi is MethodDefinition && ((MethodDefinition) mi).IsConstructor)
 			return "Constructor";
@@ -2540,104 +2178,12 @@ class MDocUpdater : MDocCommand
 		return docTypeFormatter.GetName (type);
 	}
 
-	private static string GetDocTypeFullName (TypeReference type)
+	internal static string GetDocTypeFullName (TypeReference type)
 	{
 		return DocTypeFullMemberFormatter.Default.GetName (type);
 	}
 
-	class DocsNodeInfo {
-		public DocsNodeInfo (XmlElement node)
-		{
-			this.Node = node;
-		}
-
-		public DocsNodeInfo (XmlElement node, TypeDefinition type)
-			: this (node)
-		{
-			SetType (type);
-		}
-
-		public DocsNodeInfo (XmlElement node, IMemberReference member)
-			: this (node)
-		{
-			SetMemberInfo (member);
-		}
-
-		void SetType (TypeDefinition type)
-		{
-			if (type == null)
-				throw new ArgumentNullException ("type");
-			GenericParameters = new List<GenericParameter> (type.GenericParameters.Cast<GenericParameter> ());
-			List<TypeReference> declTypes = DocUtils.GetDeclaringTypes (type);
-			int maxGenArgs = DocUtils.GetGenericArgumentCount (type);
-			for (int i = 0; i < declTypes.Count - 1; ++i) {
-				int remove = System.Math.Min (maxGenArgs, 
-						DocUtils.GetGenericArgumentCount (declTypes [i]));
-				maxGenArgs -= remove;
-				while (remove-- > 0)
-					GenericParameters.RemoveAt (0);
-			}
-			if (DocUtils.IsDelegate (type)) {
-				Parameters = type.GetMethod("Invoke").Parameters;
-				ReturnType = type.GetMethod("Invoke").ReturnType.ReturnType;
-			}
-			SetSlashDocs (type);
-		}
-
-		void SetMemberInfo (IMemberReference member)
-		{
-			if (member == null)
-				throw new ArgumentNullException ("member");
-			ReturnIsReturn = true;
-			AddRemarks = true;
-			Member = member;
-			
-			if (member is MethodReference ) {
-				MethodReference mr = (MethodReference) member;
-				Parameters = mr.Parameters;
-				if (mr.IsGenericMethod ()) {
-					GenericParameters = new List<GenericParameter> (mr.GenericParameters.Cast<GenericParameter> ());
-				}
-			}
-			else if (member is PropertyDefinition) {
-				Parameters = ((PropertyDefinition) member).Parameters;
-			}
-				
-			if (member is MethodDefinition) {
-				ReturnType = ((MethodDefinition) member).ReturnType.ReturnType;
-			} else if (member is PropertyDefinition) {
-				ReturnType = ((PropertyDefinition) member).PropertyType;
-				ReturnIsReturn = false;
-			}
-
-			// no remarks section for enum members
-			if (member.DeclaringType != null && ((TypeDefinition) member.DeclaringType).IsEnum)
-				AddRemarks = false;
-			SetSlashDocs (member);
-		}
-
-		private void SetSlashDocs (IMemberReference member)
-		{
-			if (slashdocs == null)
-				return;
-
-			string slashdocsig = slashdocFormatter.GetDeclaration (member);
-			if (slashdocsig != null)
-				SlashDocs = slashdocs.SelectSingleNode ("doc/members/member[@name='" + slashdocsig + "']");
-		}
-
-		public TypeReference ReturnType;
-		public List<GenericParameter> GenericParameters;
-		public ParameterDefinitionCollection Parameters;
-		public bool ReturnIsReturn;
-		public XmlElement Node;
-		public bool AddRemarks = true;
-		public XmlNode SlashDocs;
-		public XmlReader EcmaDocs;
-		public IMemberReference Member;
-	}
-
-	static string GetXPathForMember (DocumentationMember member)
+	internal static string GetXPathForMember (DocumentationMember member)
 	{
 		StringBuilder xpath = new StringBuilder ();
 		xpath.Append ("//Members/Member[@MemberName=\"")
@@ -2681,7 +2227,7 @@ class MDocUpdater : MDocCommand
 		return xpath.ToString ();
 	}
 
-	public static string GetXPathForMember (IMemberReference member)
+	public static string GetXPathForMember (MemberReference member)
 	{
 		StringBuilder xpath = new StringBuilder ();
 		xpath.Append ("//Type[@FullName=\"")
@@ -2691,7 +2237,7 @@ class MDocUpdater : MDocCommand
 			.Append (GetMemberName (member))
 			.Append ("\"]");
 
-		ParameterDefinitionCollection parameters = null;
+		IList<ParameterDefinition> parameters = null;
 		if (member is MethodDefinition)
 			parameters = ((MethodDefinition) member).Parameters;
 		else if (member is PropertyDefinition) {
@@ -2712,28 +2258,33 @@ class MDocUpdater : MDocCommand
 }
 
 static class CecilExtensions {
-	public static IEnumerable<IMemberReference> GetMembers (this TypeDefinition type)
+	public static string GetDeclaringType(this CustomAttribute attribute)
+	{
+		return attribute.Constructor.DeclaringType.FullName;
+	}
+
+	public static IEnumerable<MemberReference> GetMembers (this TypeDefinition type)
 	{
-		foreach (var c in type.Constructors)
-			yield return (IMemberReference) c;
+		foreach (var c in type.Methods.Where (m => m.IsConstructor))
+			yield return (MemberReference) c;
 		foreach (var e in type.Events)
-			yield return (IMemberReference) e;
+			yield return (MemberReference) e;
 		foreach (var f in type.Fields)
-			yield return (IMemberReference) f;
-		foreach (var m in type.Methods)
-			yield return (IMemberReference) m;
+			yield return (MemberReference) f;
+		foreach (var m in type.Methods.Where (m => !m.IsConstructor))
+			yield return (MemberReference) m;
 		foreach (var t in type.NestedTypes)
-			yield return (IMemberReference) t;
+			yield return (MemberReference) t;
 		foreach (var p in type.Properties)
-			yield return (IMemberReference) p;
+			yield return (MemberReference) p;
 	}
 
-	public static IEnumerable<IMemberReference> GetMembers (this TypeDefinition type, string member)
+	public static IEnumerable<MemberReference> GetMembers (this TypeDefinition type, string member)
 	{
 		return GetMembers (type).Where (m => m.Name == member);
 	}
 
-	public static IMemberReference GetMember (this TypeDefinition type, string member)
+	public static MemberReference GetMember (this TypeDefinition type, string member)
 	{
 		return GetMembers (type, member).EnsureZeroOrOne ();
 	}
@@ -2747,31 +2298,29 @@ static class CecilExtensions {
 
 	public static MethodDefinition GetMethod (this TypeDefinition type, string method)
 	{
-		return type.Methods.Cast<MethodDefinition> ()
+		return type.Methods
 			.Where (m => m.Name == method)
 			.EnsureZeroOrOne ();
 	}
 
-	public static IEnumerable<IMemberReference> GetDefaultMembers (this TypeReference type)
+	public static IEnumerable<MemberReference> GetDefaultMembers (this TypeReference type)
 	{
 		TypeDefinition def = type as TypeDefinition;
 		if (def == null)
-			return new IMemberReference [0];
-		CustomAttribute defMemberAttr = type.CustomAttributes.Cast<CustomAttribute> ()
-				.Where (c => c.Constructor.DeclaringType.FullName == "System.Reflection.DefaultMemberAttribute")
-				.FirstOrDefault ();
+			return new MemberReference [0];
+		CustomAttribute defMemberAttr = def.CustomAttributes
+				.FirstOrDefault (c => c.AttributeType.FullName == "System.Reflection.DefaultMemberAttribute");
 		if (defMemberAttr == null)
-			return new IMemberReference [0];
-		string name = (string) defMemberAttr.ConstructorParameters [0];
-		return def.Properties.Cast<PropertyDefinition> ()
+			return new MemberReference [0];
+		string name = (string) defMemberAttr.ConstructorArguments [0].Value;
+		return def.Properties
 				.Where (p => p.Name == name)
-				.Select (p => (IMemberReference) p);
+				.Select (p => (MemberReference) p);
 	}
 
 	public static IEnumerable<TypeDefinition> GetTypes (this AssemblyDefinition assembly)
 	{
-		return assembly.Modules.Cast<ModuleDefinition> ()
-				.SelectMany (md => md.Types.Cast<TypeDefinition> ());
+		return assembly.Modules.SelectMany (md => md.GetAllTypes ());
 	}
 
 	public static TypeDefinition GetType (this AssemblyDefinition assembly, string type)
@@ -2791,25 +2340,48 @@ static class CecilExtensions {
 		return method.GenericParameters.Count > 0;
 	}
 
-	public static IMemberReference Resolve (this IMemberReference member)
+	public static MemberReference Resolve (this MemberReference member)
 	{
-		EventReference er = member as EventReference;
-		if (er != null)
-			return er.Resolve ();
 		FieldReference fr = member as FieldReference;
 		if (fr != null)
 			return fr.Resolve ();
 		MethodReference mr = member as MethodReference;
 		if (mr != null)
 			return mr.Resolve ();
-		PropertyReference pr = member as PropertyReference;
-		if (pr != null)
-			return pr.Resolve ();
 		TypeReference tr = member as TypeReference;
 		if (tr != null)
 			return tr.Resolve ();
+		PropertyReference pr = member as PropertyReference;
+		if (pr != null)
+			return pr;
+		EventReference er = member as EventReference;
+		if (er != null)
+			return er;
 		throw new NotSupportedException ("Cannot find definition for " + member.ToString ());
 	}
+
+	public static TypeReference GetUnderlyingType (this TypeDefinition type)
+	{
+		if (!type.IsEnum)
+			return type;
+		return type.Fields.First (f => f.Name == "value__").FieldType;
+	}
+
+	public static IEnumerable<TypeDefinition> GetAllTypes (this ModuleDefinition self)
+	{
+		return self.Types.SelectMany (t => t.GetAllTypes ());
+	}
+
+	static IEnumerable<TypeDefinition> GetAllTypes (this TypeDefinition self)
+	{
+		yield return self;
+
+		if (!self.HasNestedTypes)
+			yield break;
+
+		foreach (var type in self.NestedTypes.SelectMany (t => t.GetAllTypes ()))
+			yield return type;
+	}
 }
 
 static class DocUtils {
@@ -2872,8 +2444,8 @@ static class DocUtils {
 
 	public static string GetNamespace (TypeReference type)
 	{
-		if (type.GetOriginalType ().IsNested)
-			type = type.GetOriginalType ();
+		if (type.GetElementType ().IsNested)
+			type = type.GetElementType ();
 		while (type != null && type.IsNested)
 			type = type.DeclaringType;
 		if (type == null)
@@ -2893,12 +2465,10 @@ static class DocUtils {
 	public static bool IsExtensionMethod (MethodDefinition method)
 	{
 		return
-			method.CustomAttributes.Cast<CustomAttribute> ()
-					.Where (m => m.Constructor.DeclaringType.FullName == "System.Runtime.CompilerServices.ExtensionAttribute")
-					.Any () &&
-			method.DeclaringType.CustomAttributes.Cast<CustomAttribute> ()
-					.Where (m => m.Constructor.DeclaringType.FullName == "System.Runtime.CompilerServices.ExtensionAttribute")
-					.Any ();
+			method.CustomAttributes
+					.Any (m => m.AttributeType.FullName == "System.Runtime.CompilerServices.ExtensionAttribute")
+			&& method.DeclaringType.CustomAttributes
+					.Any (m => m.AttributeType.FullName == "System.Runtime.CompilerServices.ExtensionAttribute");
 	}
 
 	public static bool IsDelegate (TypeDefinition type)
@@ -2974,6 +2544,657 @@ static class DocUtils {
 	}
 }
 
+class DocsNodeInfo {
+	public DocsNodeInfo (XmlElement node)
+	{
+		this.Node = node;
+	}
+
+	public DocsNodeInfo (XmlElement node, TypeDefinition type)
+		: this (node)
+	{
+		SetType (type);
+	}
+
+	public DocsNodeInfo (XmlElement node, MemberReference member)
+		: this (node)
+	{
+		SetMemberInfo (member);
+	}
+
+	void SetType (TypeDefinition type)
+	{
+		if (type == null)
+			throw new ArgumentNullException ("type");
+		Type = type;
+		GenericParameters = new List<GenericParameter> (type.GenericParameters);
+		List<TypeReference> declTypes = DocUtils.GetDeclaringTypes (type);
+		int maxGenArgs = DocUtils.GetGenericArgumentCount (type);
+		for (int i = 0; i < declTypes.Count - 1; ++i) {
+			int remove = System.Math.Min (maxGenArgs, 
+					DocUtils.GetGenericArgumentCount (declTypes [i]));
+			maxGenArgs -= remove;
+			while (remove-- > 0)
+				GenericParameters.RemoveAt (0);
+		}
+		if (DocUtils.IsDelegate (type)) {
+			Parameters = type.GetMethod("Invoke").Parameters;
+			ReturnType = type.GetMethod("Invoke").ReturnType;
+			ReturnIsReturn = true;
+		}
+	}
+
+	void SetMemberInfo (MemberReference member)
+	{
+		if (member == null)
+			throw new ArgumentNullException ("member");
+		ReturnIsReturn = true;
+		AddRemarks = true;
+		Member = member;
+		
+		if (member is MethodReference ) {
+			MethodReference mr = (MethodReference) member;
+			Parameters = mr.Parameters;
+			if (mr.IsGenericMethod ()) {
+				GenericParameters = new List<GenericParameter> (mr.GenericParameters);
+			}
+		}
+		else if (member is PropertyDefinition) {
+			Parameters = ((PropertyDefinition) member).Parameters;
+		}
+			
+		if (member is MethodDefinition) {
+			ReturnType = ((MethodDefinition) member).ReturnType;
+		} else if (member is PropertyDefinition) {
+			ReturnType = ((PropertyDefinition) member).PropertyType;
+			ReturnIsReturn = false;
+		}
+
+		// no remarks section for enum members
+		if (member.DeclaringType != null && ((TypeDefinition) member.DeclaringType).IsEnum)
+			AddRemarks = false;
+	}
+
+	public TypeReference ReturnType;
+	public List<GenericParameter> GenericParameters;
+	public IList<ParameterDefinition> Parameters;
+	public bool ReturnIsReturn;
+	public XmlElement Node;
+	public bool AddRemarks = true;
+	public MemberReference Member;
+	public TypeDefinition Type;
+}
+
+class DocumentationEnumerator {
+
+	public virtual IEnumerable<TypeDefinition> GetDocumentationTypes (AssemblyDefinition assembly, List<string> forTypes)
+	{
+		return GetDocumentationTypes (assembly, forTypes, null);
+	}
+
+	protected IEnumerable<TypeDefinition> GetDocumentationTypes (AssemblyDefinition assembly, List<string> forTypes, HashSet<string> seen)
+	{
+		foreach (TypeDefinition type in assembly.GetTypes()) {
+			if (forTypes != null && forTypes.BinarySearch (type.FullName) < 0)
+				continue;
+			if (seen != null && seen.Contains (type.FullName))
+				continue;
+			yield return type;
+			foreach (TypeDefinition nested in type.NestedTypes)
+				yield return nested;
+		}
+	}
+
+	public virtual IEnumerable<DocsNodeInfo> GetDocumentationMembers (XmlDocument basefile, TypeDefinition type)
+	{
+		foreach (XmlElement oldmember in basefile.SelectNodes("Type/Members/Member")) {
+			if (oldmember.GetAttribute ("__monodocer-seen__") == "true") {
+				oldmember.RemoveAttribute ("__monodocer-seen__");
+				continue;
+			}
+			MemberReference m = GetMember (type, new DocumentationMember (oldmember));
+			if (m == null) {
+				yield return new DocsNodeInfo (oldmember);
+			}
+			else {
+				yield return new DocsNodeInfo (oldmember, m);
+			}
+		}
+	}
+
+	protected static MemberReference GetMember (TypeDefinition type, DocumentationMember member)
+	{
+		string membertype = member.MemberType;
+		
+		string returntype = member.ReturnType;
+		
+		string docName = member.MemberName;
+		string[] docTypeParams = GetTypeParameters (docName);
+
+		// Loop through all members in this type with the same name
+		foreach (MemberReference mi in GetReflectionMembers (type, docName)) {
+			if (mi is TypeDefinition) continue;
+			if (MDocUpdater.GetMemberType(mi) != membertype) continue;
+
+			if (MDocUpdater.IsPrivate (mi))
+				continue;
+
+			IList<ParameterDefinition> pis = null;
+			string[] typeParams = null;
+			if (mi is MethodDefinition) {
+				MethodDefinition mb = (MethodDefinition) mi;
+				pis = mb.Parameters;
+				if (docTypeParams != null && mb.IsGenericMethod ()) {
+					IList<GenericParameter> args = mb.GenericParameters;
+					if (args.Count == docTypeParams.Length) {
+						typeParams = args.Select (p => p.Name).ToArray ();
+					}
+				}
+			}
+			else if (mi is PropertyDefinition)
+				pis = ((PropertyDefinition)mi).Parameters;
+			
+			int mcount = member.Parameters == null ? 0 : member.Parameters.Count;
+			int pcount = pis == null ? 0 : pis.Count;
+			if (mcount != pcount)
+				continue;
+
+			MethodDefinition mDef = mi as MethodDefinition;
+			if (mDef != null && !mDef.IsConstructor) {
+				// Casting operators can overload based on return type.
+				if (returntype != GetReplacedString (
+							MDocUpdater.GetDocTypeFullName (((MethodDefinition)mi).ReturnType), 
+							typeParams, docTypeParams)) {
+					continue;
+				}
+			}
+
+			if (pcount == 0)
+				return mi;
+			bool good = true;
+			for (int i = 0; i < pis.Count; i++) {
+				string paramType = GetReplacedString (
+					MDocUpdater.GetDocParameterType (pis [i].ParameterType),
+					typeParams, docTypeParams);
+				if (paramType != (string) member.Parameters [i]) {
+					good = false;
+					break;
+				}
+			}
+			if (!good) continue;
+
+			return mi;
+		}
+		
+		return null;
+	}
+
+	static string[] GetTypeParameters (string docName)
+	{
+		if (docName [docName.Length-1] != '>')
+			return null;
+		StringList types = new StringList ();
+		int endToken = docName.Length-2;
+		int i = docName.Length-2;
+		do {
+			if (docName [i] == ',' || docName [i] == '<') {
+				types.Add (docName.Substring (i + 1, endToken - i));
+				endToken = i-1;
+			}
+			if (docName [i] == '<')
+				break;
+		} while (--i >= 0);
+
+		types.Reverse ();
+		return types.ToArray ();
+	}
+
+	protected static IEnumerable<MemberReference> GetReflectionMembers (TypeDefinition type, string docName)
+	{
+		// need to worry about 4 forms of //@MemberName values:
+		//  1. "Normal" (non-generic) member names: GetEnumerator
+		//    - Lookup as-is.
+		//  2. Explicitly-implemented interface member names: System.Collections.IEnumerable.Current
+		//    - try as-is, and try type.member (due to "kludge" for property
+		//      support.
+		//  3. "Normal" Generic member names: Sort<T> (CSC)
+		//    - need to remove generic parameters --> "Sort"
+		//  4. Explicitly-implemented interface members for generic interfaces: 
+		//    -- System.Collections.Generic.IEnumerable<T>.Current
+		//    - Try as-is, and try type.member, *keeping* the generic parameters.
+		//     --> System.Collections.Generic.IEnumerable<T>.Current, IEnumerable<T>.Current
+		//  5. As of 2008-01-02, gmcs will do e.g. 'IFoo`1[A].Method' instead of
+		//    'IFoo<A>.Method' for explicitly implemented methods; don't interpret
+		//    this as (1) or (2).
+		if (docName.IndexOf ('<') == -1 && docName.IndexOf ('[') == -1) {
+			// Cases 1 & 2
+			foreach (MemberReference mi in type.GetMembers (docName))
+				yield return mi;
+			if (CountChars (docName, '.') > 0)
+				// might be a property; try only type.member instead of
+				// namespace.type.member.
+				foreach (MemberReference mi in 
+						type.GetMembers (DocUtils.GetTypeDotMember (docName)))
+					yield return mi;
+			yield break;
+		}
+		// cases 3 & 4
+		int numLt = 0;
+		int numDot = 0;
+		int startLt, startType, startMethod;
+		startLt = startType = startMethod = -1;
+		for (int i = 0; i < docName.Length; ++i) {
+			switch (docName [i]) {
+				case '<':
+					if (numLt == 0) {
+						startLt = i;
+					}
+					++numLt;
+					break;
+				case '>':
+					--numLt;
+					if (numLt == 0 && (i + 1) < docName.Length)
+						// there's another character in docName, so this <...> sequence is
+						// probably part of a generic type -- case 4.
+						startLt = -1;
+					break;
+				case '.':
+					startType = startMethod;
+					startMethod = i;
+					++numDot;
+					break;
+			}
+		}
+		string refName = startLt == -1 ? docName : docName.Substring (0, startLt);
+		// case 3
+		foreach (MemberReference mi in type.GetMembers (refName))
+			yield return mi;
+
+		// case 4
+		foreach (MemberReference mi in type.GetMembers (refName.Substring (startType + 1)))
+			yield return mi;
+
+		// If we _still_ haven't found it, we've hit another generic naming issue:
+		// post Mono 1.1.18, gmcs generates [[FQTN]] instead of <TypeName> for
+		// explicitly-implemented METHOD names (not properties), e.g. 
+		// "System.Collections.Generic.IEnumerable`1[[Foo, test, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]].GetEnumerator"
+		// instead of "System.Collections.Generic.IEnumerable<Foo>.GetEnumerator",
+		// which the XML docs will contain.
+		//
+		// Alas, we can't derive the Mono name from docName, so we need to iterate
+		// over all member names, convert them into CSC format, and compare... :-(
+		if (numDot == 0)
+			yield break;
+		foreach (MemberReference mi in type.GetMembers ()) {
+			if (MDocUpdater.GetMemberName (mi) == docName)
+				yield return mi;
+		}
+	}
+
+	static string GetReplacedString (string typeName, string[] from, string[] to)
+	{
+		if (from == null)
+			return typeName;
+		for (int i = 0; i < from.Length; ++i)
+			typeName = typeName.Replace (from [i], to [i]);
+		return typeName;
+	}
+
+	private static int CountChars (string s, char c)
+	{
+		int count = 0;
+		for (int i = 0; i < s.Length; ++i) {
+			if (s [i] == c)
+				++count;
+		}
+		return count;
+	}
+}
+
+class EcmaDocumentationEnumerator : DocumentationEnumerator {
+
+	XmlReader ecmadocs;
+	MDocUpdater app;
+
+	public EcmaDocumentationEnumerator (MDocUpdater app, XmlReader ecmaDocs)
+	{
+		this.app      = app;
+		this.ecmadocs = ecmaDocs;
+	}
+
+	public override IEnumerable<TypeDefinition> GetDocumentationTypes (AssemblyDefinition assembly, List<string> forTypes)
+	{
+		HashSet<string> seen = new HashSet<string> ();
+		return GetDocumentationTypes (assembly, forTypes, seen)
+			.Concat (base.GetDocumentationTypes (assembly, forTypes, seen));
+	}
+
+	new IEnumerable<TypeDefinition> GetDocumentationTypes (AssemblyDefinition assembly, List<string> forTypes, HashSet<string> seen)
+	{
+		int typeDepth = -1;
+		while (ecmadocs.Read ()) {
+			switch (ecmadocs.Name) {
+				case "Type": {
+					if (typeDepth == -1)
+						typeDepth = ecmadocs.Depth;
+					if (ecmadocs.NodeType != XmlNodeType.Element)
+						continue;
+					if (typeDepth != ecmadocs.Depth) // nested <TypeDefinition/> element?
+						continue;
+					string typename = ecmadocs.GetAttribute ("FullName");
+					string typename2 = MDocUpdater.GetTypeFileName (typename);
+					if (forTypes != null && 
+							forTypes.BinarySearch (typename) < 0 &&
+							typename != typename2 &&
+							forTypes.BinarySearch (typename2) < 0)
+						continue;
+					TypeDefinition t;
+					if ((t = assembly.GetType (typename)) == null && 
+							(t = assembly.GetType (typename2)) == null)
+						continue;
+					seen.Add (typename);
+					if (typename != typename2)
+						seen.Add (typename2);
+					Console.WriteLine ("  Import: {0}", t.FullName);
+					if (ecmadocs.Name != "Docs") {
+						int depth = ecmadocs.Depth;
+						while (ecmadocs.Read ()) {
+							if (ecmadocs.Name == "Docs" && ecmadocs.Depth == depth + 1)
+								break;
+						}
+					}
+					if (!ecmadocs.IsStartElement ("Docs"))
+						throw new InvalidOperationException ("Found " + ecmadocs.Name + "; expecting <Docs/>!");
+					yield return t;
+					break;
+				}
+				default:
+					break;
+			}
+		}
+	}
+
+	public override IEnumerable<DocsNodeInfo> GetDocumentationMembers (XmlDocument basefile, TypeDefinition type)
+	{
+		return GetMembers (basefile, type)
+			.Concat (base.GetDocumentationMembers (basefile, type));
+	}
+
+	private IEnumerable<DocsNodeInfo> GetMembers (XmlDocument basefile, TypeDefinition type)
+	{
+		while (ecmadocs.Name != "Members" && ecmadocs.Read ()) {
+			// do nothing
+		}
+		if (ecmadocs.IsEmptyElement)
+			yield break;
+
+		int membersDepth = ecmadocs.Depth;
+		bool go = true;
+		while (go && ecmadocs.Read ()) {
+			switch (ecmadocs.Name) {
+				case "Member": {
+					if (membersDepth != ecmadocs.Depth - 1 || ecmadocs.NodeType != XmlNodeType.Element)
+						continue;
+					DocumentationMember dm = new DocumentationMember (ecmadocs);
+					string xp = MDocUpdater.GetXPathForMember (dm);
+					XmlElement oldmember = (XmlElement) basefile.SelectSingleNode (xp);
+					MemberReference m;
+					if (oldmember == null) {
+						m = GetMember (type, dm);
+						if (m == null) {
+							app.Warning ("Could not import ECMA docs for `{0}'s `{1}': Member not found.",
+									type.FullName, dm.MemberSignatures ["C#"]);
+									// SelectSingleNode (ecmaDocsMember, "MemberSignature[@Language=\"C#\"]/@Value").Value);
+							continue;
+						}
+						// oldmember lookup may have failed due to type parameter renames.
+						// Try again.
+						oldmember = (XmlElement) basefile.SelectSingleNode (MDocUpdater.GetXPathForMember (m));
+						if (oldmember == null) {
+							XmlElement members = MDocUpdater.WriteElement (basefile.DocumentElement, "Members");
+							oldmember = basefile.CreateElement ("Member");
+							oldmember.SetAttribute ("MemberName", dm.MemberName);
+							members.AppendChild (oldmember);
+							foreach (string key in MDocUpdater.Sort (dm.MemberSignatures.Keys)) {
+								XmlElement ms = basefile.CreateElement ("MemberSignature");
+								ms.SetAttribute ("Language", key);
+								ms.SetAttribute ("Value", (string) dm.MemberSignatures [key]);
+								oldmember.AppendChild (ms);
+							}
+							oldmember.SetAttribute ("__monodocer-seen__", "true");
+							Console.WriteLine ("Member Added: {0}", oldmember.SelectSingleNode("MemberSignature[@Language='C#']/@Value").InnerText);
+							app.additions++;
+						}
+					}
+					else {
+						m = GetMember (type, new DocumentationMember (oldmember));
+						if (m == null) {
+							app.Warning ("Could not import ECMA docs for `{0}'s `{1}': Member not found.",
+									type.FullName, dm.MemberSignatures ["C#"]);
+							continue;
+						}
+						oldmember.SetAttribute ("__monodocer-seen__", "true");
+					}
+					DocsNodeInfo node = new DocsNodeInfo (oldmember, m);
+					if (ecmadocs.Name != "Docs")
+						throw new InvalidOperationException ("Found " + ecmadocs.Name + "; expected <Docs/>!");
+					yield return node;
+					break;
+				}
+				case "Members":
+					if (membersDepth == ecmadocs.Depth && ecmadocs.NodeType == XmlNodeType.EndElement) {
+						go = false;
+					}
+					break;
+			}
+		}
+	}
+}
+
+abstract class DocumentationImporter {
+
+	public abstract void ImportDocumentation (DocsNodeInfo info);
+}
+
+class MsxdocDocumentationImporter : DocumentationImporter {
+
+	XmlDocument slashdocs;
+
+	public MsxdocDocumentationImporter (string file)
+	{
+		var xml = File.ReadAllText (file);
+
+		// Ensure Unix line endings
+		xml = xml.Replace ("\r", "");
+
+		slashdocs = new XmlDocument();
+		slashdocs.LoadXml (xml);
+	}
+
+	public override void ImportDocumentation (DocsNodeInfo info)
+	{
+		XmlNode elem = GetDocs (info.Member ?? info.Type);
+
+		if (elem == null)
+			return;
+
+		XmlElement e = info.Node;
+
+		if (elem.SelectSingleNode("summary") != null)
+			MDocUpdater.ClearElement(e, "summary");
+		if (elem.SelectSingleNode("remarks") != null)
+			MDocUpdater.ClearElement(e, "remarks");
+		if (elem.SelectSingleNode ("value") != null || elem.SelectSingleNode ("returns") != null) {
+			MDocUpdater.ClearElement(e, "value");
+			MDocUpdater.ClearElement(e, "returns");
+		}
+
+		foreach (XmlNode child in elem.ChildNodes) {
+			switch (child.Name) {
+				case "param":
+				case "typeparam": {
+					XmlAttribute name = child.Attributes ["name"];
+					if (name == null)
+						break;
+					XmlElement p2 = (XmlElement) e.SelectSingleNode (child.Name + "[@name='" + name.Value + "']");
+					if (p2 != null)
+						p2.InnerXml = child.InnerXml;
+					break;
+				}
+				// Occasionally XML documentation will use <returns/> on
+				// properties, so let's try to normalize things.
+				case "value":
+				case "returns": {
+					XmlElement v = e.OwnerDocument.CreateElement (info.ReturnIsReturn ? "returns" : "value");
+					v.InnerXml = child.InnerXml;
+					e.AppendChild (v);
+					break;
+				}
+				case "altmember":
+				case "exception":
+				case "permission": {
+					XmlAttribute cref = child.Attributes ["cref"] ?? child.Attributes ["name"];
+					if (cref == null)
+						break;
+					XmlElement a = (XmlElement) e.SelectSingleNode (child.Name + "[@cref='" + cref.Value + "']");
+					if (a == null) {
+						a = e.OwnerDocument.CreateElement (child.Name);
+						a.SetAttribute ("cref", child.Attributes ["cref"].Value);
+						e.AppendChild (a);
+					}
+					a.InnerXml = child.InnerXml;
+					break;
+				}
+				case "seealso": {
+					XmlAttribute cref = child.Attributes ["cref"];
+					if (cref == null)
+						break;
+					XmlElement a = (XmlElement) e.SelectSingleNode ("altmember[@cref='" + cref.Value + "']");
+					if (a == null) {
+						a = e.OwnerDocument.CreateElement ("altmember");
+						a.SetAttribute ("cref", child.Attributes ["cref"].Value);
+						e.AppendChild (a);
+					}
+					break;
+				}
+				default: {
+					bool add = true;
+					if (child.NodeType == XmlNodeType.Element && 
+							e.SelectNodes (child.Name).Cast<XmlElement>().Any (n => n.OuterXml == child.OuterXml))
+						add = false;
+					if (add)
+						MDocUpdater.CopyNode (child, e);
+					break;
+				}
+			}
+		}
+	}
+
+	private XmlNode GetDocs (MemberReference member)
+	{
+		string slashdocsig = MDocUpdater.slashdocFormatter.GetDeclaration (member);
+		if (slashdocsig != null)
+			return slashdocs.SelectSingleNode ("doc/members/member[@name='" + slashdocsig + "']");
+		return null;
+	}
+}
+
+class EcmaDocumentationImporter : DocumentationImporter {
+
+	XmlReader ecmadocs;
+
+	public EcmaDocumentationImporter (XmlReader ecmaDocs)
+	{
+		this.ecmadocs = ecmaDocs;
+	}
+
+	public override void ImportDocumentation (DocsNodeInfo info)
+	{
+		if (!ecmadocs.IsStartElement ("Docs")) {
+			return;
+		}
+
+		XmlElement e = info.Node;
+
+		int depth = ecmadocs.Depth;
+		ecmadocs.ReadStartElement ("Docs");
+		while (ecmadocs.Read ()) {
+			if (ecmadocs.Name == "Docs") {
+				if (ecmadocs.Depth == depth && ecmadocs.NodeType == XmlNodeType.EndElement)
+					break;
+				else
+					throw new InvalidOperationException ("Skipped past current <Docs/> element!");
+			}
+			if (!ecmadocs.IsStartElement ())
+				continue;
+			switch (ecmadocs.Name) {
+				case "param":
+				case "typeparam": {
+					string name = ecmadocs.GetAttribute ("name");
+					if (name == null)
+						break;
+					XmlNode doc = e.SelectSingleNode (
+							ecmadocs.Name + "[@name='" + name + "']");
+					string value = ecmadocs.ReadInnerXml ();
+					if (doc != null)
+						doc.InnerXml = value.Replace ("\r", "");
+					break;
+				}
+				case "altmember":
+				case "exception":
+				case "permission":
+				case "seealso": {
+					string name = ecmadocs.Name;
+					string cref = ecmadocs.GetAttribute ("cref");
+					if (cref == null)
+						break;
+					XmlNode doc = e.SelectSingleNode (
+							ecmadocs.Name + "[@cref='" + cref + "']");
+					string value = ecmadocs.ReadInnerXml ().Replace ("\r", "");
+					if (doc != null)
+						doc.InnerXml = value;
+					else {
+						XmlElement n = e.OwnerDocument.CreateElement (name);
+						n.SetAttribute ("cref", cref);
+						n.InnerXml = value;
+						e.AppendChild (n);
+					}
+					break;
+				}
+				default: {
+					string name = ecmadocs.Name;
+					string xpath = ecmadocs.Name;
+					StringList attributes = new StringList (ecmadocs.AttributeCount);
+					if (ecmadocs.MoveToFirstAttribute ()) {
+						do {
+							attributes.Add ("@" + ecmadocs.Name + "=\"" + ecmadocs.Value + "\"");
+						} while (ecmadocs.MoveToNextAttribute ());
+						ecmadocs.MoveToContent ();
+					}
+					if (attributes.Count > 0) {
+						xpath += "[" + string.Join (" and ", attributes.ToArray ()) + "]";
+					}
+					XmlNode doc = e.SelectSingleNode (xpath);
+					string value = ecmadocs.ReadInnerXml ().Replace ("\r", "");
+					if (doc != null) {
+						doc.InnerXml = value;
+					}
+					else {
+						XmlElement n = e.OwnerDocument.CreateElement (name);
+						n.InnerXml = value;
+						foreach (string a in attributes) {
+							int eq = a.IndexOf ('=');
+							n.SetAttribute (a.Substring (1, eq-1), a.Substring (eq+2, a.Length-eq-3));
+						}
+						e.AppendChild (n);
+					}
+					break;
+				}
+			}
+		}
+	}
+}
+
 class DocumentationMember {
 	public StringToStringMap MemberSignatures = new StringToStringMap ();
 	public string ReturnType;
@@ -3041,11 +3262,16 @@ class DocumentationMember {
 public enum MemberFormatterState {
 	None,
 	WithinArray,
-	WithinGenericTypeContainer,
+	WithinGenericTypeParameters,
 }
 
 public abstract class MemberFormatter {
-	public virtual string GetName (IMemberReference member)
+
+	public virtual string Language {
+		get {return "";}
+	}
+
+	public virtual string GetName (MemberReference member)
 	{
 		TypeReference type = member as TypeReference;
 		if (type != null)
@@ -3085,7 +3311,7 @@ public abstract class MemberFormatter {
 	{
 		if (type is ArrayType) {
 			TypeSpecification spec = type as TypeSpecification;
-			_AppendTypeName (buf, spec != null ? spec.ElementType : type.GetOriginalType ())
+			_AppendTypeName (buf, spec != null ? spec.ElementType : type.GetElementType ())
 					.Append (ArrayDelimeters [0]);
 			var origState = MemberFormatterState;
 			MemberFormatterState = MemberFormatterState.WithinArray;
@@ -3096,7 +3322,7 @@ public abstract class MemberFormatter {
 			MemberFormatterState = origState;
 			return buf.Append (ArrayDelimeters [1]);
 		}
-		if (type is ReferenceType) {
+		if (type is ByReferenceType) {
 			return AppendRefTypeName (buf, type);
 		}
 		if (type is PointerType) {
@@ -3122,7 +3348,7 @@ public abstract class MemberFormatter {
 		return buf;
 	}
 
-	private StringBuilder AppendFullTypeName (StringBuilder buf, TypeReference type)
+	protected virtual StringBuilder AppendFullTypeName (StringBuilder buf, TypeReference type)
 	{
 		if (type.DeclaringType != null)
 			AppendFullTypeName (buf, type.DeclaringType).Append (NestedTypeSeparator);
@@ -3149,7 +3375,7 @@ public abstract class MemberFormatter {
 	protected virtual StringBuilder AppendRefTypeName (StringBuilder buf, TypeReference type)
 	{
 		TypeSpecification spec = type as TypeSpecification;
-		return _AppendTypeName (buf, spec != null ? spec.ElementType : type.GetOriginalType ())
+		return _AppendTypeName (buf, spec != null ? spec.ElementType : type.GetElementType ())
 				.Append (RefTypeModifier);
 	}
 
@@ -3160,7 +3386,7 @@ public abstract class MemberFormatter {
 	protected virtual StringBuilder AppendPointerTypeName (StringBuilder buf, TypeReference type)
 	{
 		TypeSpecification spec = type as TypeSpecification;
-		return _AppendTypeName (buf, spec != null ? spec.ElementType : type.GetOriginalType ())
+		return _AppendTypeName (buf, spec != null ? spec.ElementType : type.GetElementType ())
 				.Append (PointerModifier);
 	}
 
@@ -3175,7 +3401,7 @@ public abstract class MemberFormatter {
 	protected virtual StringBuilder AppendGenericType (StringBuilder buf, TypeReference type)
 	{
 		List<TypeReference> decls = DocUtils.GetDeclaringTypes (
-				type is GenericInstanceType ? type.GetOriginalType () : type);
+				type is GenericInstanceType ? type.GetElementType () : type);
 		List<TypeReference> genArgs = GetGenericArguments (type);
 		int argIdx = 0;
 		int prev = 0;
@@ -3193,7 +3419,7 @@ public abstract class MemberFormatter {
 			if (c > 0) {
 				buf.Append (GenericTypeContainer [0]);
 				var origState = MemberFormatterState;
-				MemberFormatterState = MemberFormatterState.WithinGenericTypeContainer;
+				MemberFormatterState = MemberFormatterState.WithinGenericTypeParameters;
 				_AppendTypeName (buf, genArgs [argIdx++]);
 				for (int i = 1; i < c; ++i)
 					_AppendTypeName (buf.Append (","), genArgs [argIdx++]);
@@ -3204,7 +3430,7 @@ public abstract class MemberFormatter {
 		return buf;
 	}
 
-	private List<TypeReference> GetGenericArguments (TypeReference type)
+	protected List<TypeReference> GetGenericArguments (TypeReference type)
 	{
 		var args = new List<TypeReference> ();
 		GenericInstanceType inst = type as GenericInstanceType;
@@ -3245,7 +3471,7 @@ public abstract class MemberFormatter {
 		return e.Name;
 	}
 
-	public virtual string GetDeclaration (IMemberReference member)
+	public virtual string GetDeclaration (MemberReference member)
 	{
 		if (member == null)
 			throw new ArgumentNullException ("member");
@@ -3286,6 +3512,10 @@ public abstract class MemberFormatter {
 
 	protected virtual string GetMethodDeclaration (MethodDefinition method)
 	{
+		if (method.HasCustomAttributes && method.CustomAttributes.Cast<CustomAttribute>().Any(
+					ca => ca.GetDeclaringType() == "System.Diagnostics.Contracts.ContractInvariantMethodAttribute"))
+			return null;
+
 		// Special signature for destructors.
 		if (method.Name == "Finalize" && method.Parameters.Count == 0)
 			return GetFinalizerName (method);
@@ -3301,7 +3531,7 @@ public abstract class MemberFormatter {
 
 		if (buf.Length != 0)
 			buf.Append (" ");
-		buf.Append (GetName (method.ReturnType.ReturnType)).Append (" ");
+		buf.Append (GetTypeName (method.MethodReturnType)).Append (" ");
 
 		AppendMethodName (buf, method);
 		AppendGenericMethod (buf, method).Append (" ");
@@ -3310,6 +3540,11 @@ public abstract class MemberFormatter {
 		return buf.ToString ();
 	}
 
+	protected virtual string GetTypeName (MethodReturnType returnType)
+	{
+		return GetName (returnType.ReturnType);
+	}
+
 	protected virtual StringBuilder AppendMethodName (StringBuilder buf, MethodDefinition method)
 	{
 		return buf.Append (method.Name);
@@ -3335,7 +3570,7 @@ public abstract class MemberFormatter {
 		return buf;
 	}
 
-	protected virtual StringBuilder AppendParameters (StringBuilder buf, MethodDefinition method, ParameterDefinitionCollection parameters)
+	protected virtual StringBuilder AppendParameters (StringBuilder buf, MethodDefinition method, IList<ParameterDefinition> parameters)
 	{
 		return buf;
 	}
@@ -3361,8 +3596,533 @@ public abstract class MemberFormatter {
 	}
 }
 
+class ILFullMemberFormatter : MemberFormatter {
+
+	public override string Language {
+		get {return "ILAsm";}
+	}
+
+	protected override char NestedTypeSeparator {
+		get {
+			return '/';
+		}
+	}
+
+	protected override StringBuilder AppendNamespace (StringBuilder buf, TypeReference type)
+	{
+		if (GetBuiltinType (type.FullName) != null)
+			return buf;
+		string ns = DocUtils.GetNamespace (type);
+		if (ns != null && ns.Length > 0) {
+			if (type.IsValueType)
+				buf.Append ("valuetype ");
+			else
+				buf.Append ("class ");
+			buf.Append (ns).Append ('.');
+		}
+		return buf;
+	}
+
+	private static string GetBuiltinType (string t)
+	{
+		switch (t) {
+		case "System.Byte":    return "unsigned int8";
+		case "System.SByte":   return "int8";
+		case "System.Int16":   return "int16";
+		case "System.Int32":   return "int32";
+		case "System.Int64":   return "int64";
+		case "System.IntPtr":  return "native int";
+
+		case "System.UInt16":  return "unsigned int16";
+		case "System.UInt32":  return "unsigned int32";
+		case "System.UInt64":  return "unsigned int64";
+		case "System.UIntPtr": return "native unsigned int";
+
+		case "System.Single":  return "float32";
+		case "System.Double":  return "float64";
+		case "System.Boolean": return "bool";
+		case "System.Char":    return "char";
+		case "System.Void":    return "void";
+		case "System.String":  return "string";
+		case "System.Object":  return "object";
+		}
+		return null;
+	}
+
+	protected override StringBuilder AppendTypeName (StringBuilder buf, string typename)
+	{
+		return buf.Append (typename);
+	}
+
+	protected override StringBuilder AppendTypeName (StringBuilder buf, TypeReference type)
+	{
+		if (type is GenericParameter)
+			return AppendGenericParameterConstraints (buf, (GenericParameter) type).Append (type.Name);
+
+		string s = GetBuiltinType (type.FullName);
+		if (s != null)
+			return buf.Append (s);
+		return base.AppendTypeName (buf, type);
+	}
+
+	private StringBuilder AppendGenericParameterConstraints (StringBuilder buf, GenericParameter type)
+	{
+		if (MemberFormatterState != MemberFormatterState.WithinGenericTypeParameters) {
+			return buf.Append (type.Owner is TypeReference ? "!" : "!!");
+		}
+		GenericParameterAttributes attrs = type.Attributes;
+		if ((attrs & GenericParameterAttributes.ReferenceTypeConstraint) != 0)
+			buf.Append ("class ");
+		if ((attrs & GenericParameterAttributes.NotNullableValueTypeConstraint) != 0)
+			buf.Append ("struct ");
+		if ((attrs & GenericParameterAttributes.DefaultConstructorConstraint) != 0)
+			buf.Append (".ctor ");
+		IList<TypeReference> constraints = type.Constraints;
+		MemberFormatterState = 0;
+		if (constraints.Count > 0) {
+			var full = new ILFullMemberFormatter ();
+			buf.Append ("(").Append (full.GetName (constraints [0]));
+			for (int i = 1; i < constraints.Count; ++i) {
+				buf.Append (", ").Append (full.GetName (constraints [i]));
+			}
+			buf.Append (") ");
+		}
+		MemberFormatterState = MemberFormatterState.WithinGenericTypeParameters;
+
+		if ((attrs & GenericParameterAttributes.Covariant) != 0)
+			buf.Append ("+ ");
+		if ((attrs & GenericParameterAttributes.Contravariant) != 0)
+			buf.Append ("- ");
+		return buf;
+	}
+
+	protected override string GetTypeDeclaration (TypeDefinition type)
+	{
+		string visibility = GetTypeVisibility (type.Attributes);
+		if (visibility == null)
+			return null;
+
+		StringBuilder buf = new StringBuilder ();
+
+		buf.Append (".class ");
+		if (type.IsNested)
+			buf.Append ("nested ");
+		buf.Append (visibility).Append (" ");
+		if (type.IsInterface)
+			buf.Append ("interface ");
+		if (type.IsSequentialLayout)
+			buf.Append ("sequential ");
+		if (type.IsAutoLayout)
+			buf.Append ("auto ");
+		if (type.IsAnsiClass)
+			buf.Append ("ansi ");
+		if (type.IsAbstract)
+			buf.Append ("abstract ");
+		if (type.IsSerializable)
+			buf.Append ("serializable ");
+		if (type.IsSealed)
+			buf.Append ("sealed ");
+		if (type.IsBeforeFieldInit)
+			buf.Append ("beforefieldinit ");
+		var state = MemberFormatterState;
+		MemberFormatterState = MemberFormatterState.WithinGenericTypeParameters;
+		buf.Append (GetName (type));
+		MemberFormatterState = state;
+		var full = new ILFullMemberFormatter ();
+		if (type.BaseType != null) {
+			buf.Append (" extends ");
+			if (type.BaseType.FullName == "System.Object")
+				buf.Append ("System.Object");
+			else
+				buf.Append (full.GetName (type.BaseType).Substring ("class ".Length));
+		}
+		bool first = true;
+		foreach (var name in type.Interfaces
+				.Select (i => full.GetName (i))
+				.OrderBy (n => n)) {
+			if (first) {
+				buf.Append (" implements ");
+				first = false;
+			}
+			else {
+				buf.Append (", ");
+			}
+			buf.Append (name);
+		}
+
+		return buf.ToString ();
+	}
+
+	protected override StringBuilder AppendGenericType (StringBuilder buf, TypeReference type)
+	{
+		List<TypeReference> decls = DocUtils.GetDeclaringTypes (
+				type is GenericInstanceType ? type.GetElementType () : type);
+		bool first = true;
+		foreach (var decl in decls) {
+			TypeReference declDef = decl.Resolve () ?? decl;
+			if (!first) {
+				buf.Append (NestedTypeSeparator);
+			}
+			first = false;
+			AppendTypeName (buf, declDef);
+		}
+		buf.Append ('<');
+		first = true;
+		foreach (TypeReference arg in GetGenericArguments (type)) {
+			if (!first)
+				buf.Append (", ");
+			first = false;
+			_AppendTypeName (buf, arg);
+		}
+		buf.Append ('>');
+		return buf;
+	}
+
+	static string GetTypeVisibility (TypeAttributes ta)
+	{
+		switch (ta & TypeAttributes.VisibilityMask) {
+		case TypeAttributes.Public:
+		case TypeAttributes.NestedPublic:
+			return "public";
+
+		case TypeAttributes.NestedFamily:
+		case TypeAttributes.NestedFamORAssem:
+			return "protected";
+
+		default:
+			return null;
+		}
+	}
+
+	protected override string GetConstructorDeclaration (MethodDefinition constructor)
+	{
+		return GetMethodDeclaration (constructor);
+	}
+
+	protected override string GetMethodDeclaration (MethodDefinition method)
+	{
+		if (method.IsPrivate && !DocUtils.IsExplicitlyImplemented (method))
+			return null;
+
+		var buf = new StringBuilder ();
+		buf.Append (".method ");
+		AppendVisibility (buf, method);
+		if (method.IsStatic)
+			buf.Append ("static ");
+		if (method.IsHideBySig)
+			buf.Append ("hidebysig ");
+		if (method.IsPInvokeImpl) {
+			var info = method.PInvokeInfo;
+			buf.Append ("pinvokeimpl (\"")
+				.Append (info.Module.Name)
+				.Append ("\" as \"")
+				.Append (info.EntryPoint)
+				.Append ("\"");
+			if (info.IsCharSetAuto)
+				buf.Append (" auto");
+			if (info.IsCharSetUnicode)
+				buf.Append (" unicode");
+			if (info.IsCharSetAnsi)
+				buf.Append (" ansi");
+			if (info.IsCallConvCdecl)
+				buf.Append (" cdecl");
+			if (info.IsCallConvStdCall)
+				buf.Append (" stdcall");
+			if (info.IsCallConvWinapi)
+				buf.Append (" winapi");
+			if (info.IsCallConvThiscall)
+				buf.Append (" thiscall");
+			if (info.SupportsLastError)
+				buf.Append (" lasterr");
+			buf.Append (")");
+		}
+		if (method.IsSpecialName)
+			buf.Append ("specialname ");
+		if (method.IsRuntimeSpecialName)
+			buf.Append ("rtspecialname ");
+		if (method.IsNewSlot)
+			buf.Append ("newslot ");
+		if (method.IsVirtual)
+			buf.Append ("virtual ");
+		if (!method.IsStatic)
+			buf.Append ("instance ");
+		_AppendTypeName (buf, method.ReturnType);
+		buf.Append (' ')
+			.Append (method.Name);
+		if (method.IsGenericMethod ()) {
+			var state = MemberFormatterState;
+			MemberFormatterState = MemberFormatterState.WithinGenericTypeParameters;
+			IList<GenericParameter> args = method.GenericParameters;
+			if (args.Count > 0) {
+				buf.Append ("<");
+				_AppendTypeName (buf, args [0]);
+				for (int i = 1; i < args.Count; ++i)
+					_AppendTypeName (buf.Append (", "), args [i]);
+				buf.Append (">");
+			}
+			MemberFormatterState = state;
+		}
+
+		buf.Append ('(');
+		bool first = true;
+		for (int i = 0; i < method.Parameters.Count; ++i) {
+			if (!first)
+				buf.Append (", ");
+			first = false;
+			_AppendTypeName (buf, method.Parameters [i].ParameterType);
+			buf.Append (' ');
+			buf.Append (method.Parameters [i].Name);
+		}
+		buf.Append (')');
+		if (method.IsIL)
+			buf.Append (" cil");
+		if (method.IsRuntime)
+			buf.Append (" runtime");
+		if (method.IsManaged)
+			buf.Append (" managed");
+
+		return buf.ToString ();
+	}
+
+	protected override StringBuilder AppendMethodName (StringBuilder buf, MethodDefinition method)
+	{
+		if (DocUtils.IsExplicitlyImplemented (method)) {
+			TypeReference iface;
+			MethodReference ifaceMethod;
+			DocUtils.GetInfoForExplicitlyImplementedMethod (method, out iface, out ifaceMethod);
+			return buf.Append (new CSharpMemberFormatter ().GetName (iface))
+				.Append ('.')
+				.Append (ifaceMethod.Name);
+		}
+		return base.AppendMethodName (buf, method);
+	}
+
+	protected override string RefTypeModifier {
+		get {return "";}
+	}
+
+	protected override StringBuilder AppendVisibility (StringBuilder buf, MethodDefinition method)
+	{
+		if (method.IsPublic)
+			return buf.Append ("public ");
+		if (method.IsFamilyAndAssembly)
+			return buf.Append ("familyandassembly");
+		if (method.IsFamilyOrAssembly)
+			return buf.Append ("familyorassembly");
+		if (method.IsFamily)
+			return buf.Append ("family");
+		return buf;
+	}
+
+	protected override StringBuilder AppendModifiers (StringBuilder buf, MethodDefinition method)
+	{
+		string modifiers = String.Empty;
+		if (method.IsStatic) modifiers += " static";
+		if (method.IsVirtual && !method.IsAbstract) {
+			if ((method.Attributes & MethodAttributes.NewSlot) != 0) modifiers += " virtual";
+			else modifiers += " override";
+		}
+		TypeDefinition declType = (TypeDefinition) method.DeclaringType;
+		if (method.IsAbstract && !declType.IsInterface) modifiers += " abstract";
+		if (method.IsFinal) modifiers += " sealed";
+		if (modifiers == " virtual sealed") modifiers = "";
+
+		return buf.Append (modifiers);
+	}
+
+	protected override StringBuilder AppendGenericMethod (StringBuilder buf, MethodDefinition method)
+	{
+		if (method.IsGenericMethod ()) {
+			IList<GenericParameter> args = method.GenericParameters;
+			if (args.Count > 0) {
+				buf.Append ("<");
+				buf.Append (args [0].Name);
+				for (int i = 1; i < args.Count; ++i)
+					buf.Append (",").Append (args [i].Name);
+				buf.Append (">");
+			}
+		}
+		return buf;
+	}
+
+	protected override StringBuilder AppendParameters (StringBuilder buf, MethodDefinition method, IList<ParameterDefinition> parameters)
+	{
+		return AppendParameters (buf, method, parameters, '(', ')');
+	}
+
+	private StringBuilder AppendParameters (StringBuilder buf, MethodDefinition method, IList<ParameterDefinition> parameters, char begin, char end)
+	{
+		buf.Append (begin);
+
+		if (parameters.Count > 0) {
+			if (DocUtils.IsExtensionMethod (method))
+				buf.Append ("this ");
+			AppendParameter (buf, parameters [0]);
+			for (int i = 1; i < parameters.Count; ++i) {
+				buf.Append (", ");
+				AppendParameter (buf, parameters [i]);
+			}
+		}
+
+		return buf.Append (end);
+	}
+
+	private StringBuilder AppendParameter (StringBuilder buf, ParameterDefinition parameter)
+	{
+		if (parameter.ParameterType is ByReferenceType) {
+			if (parameter.IsOut)
+				buf.Append ("out ");
+			else
+				buf.Append ("ref ");
+		}
+		buf.Append (GetName (parameter.ParameterType)).Append (" ");
+		return buf.Append (parameter.Name);
+	}
+
+	protected override string GetPropertyDeclaration (PropertyDefinition property)
+	{
+		MethodDefinition gm = null, sm = null;
+
+		string get_visible = null;
+		if ((gm = property.GetMethod) != null &&
+				(DocUtils.IsExplicitlyImplemented (gm) ||
+				 (!gm.IsPrivate && !gm.IsAssembly && !gm.IsFamilyAndAssembly)))
+			get_visible = AppendVisibility (new StringBuilder (), gm).ToString ();
+		string set_visible = null;
+		if ((sm = property.SetMethod) != null &&
+				(DocUtils.IsExplicitlyImplemented (sm) ||
+				 (!sm.IsPrivate && !sm.IsAssembly && !sm.IsFamilyAndAssembly)))
+			set_visible = AppendVisibility (new StringBuilder (), sm).ToString ();
+
+		if ((set_visible == null) && (get_visible == null))
+			return null;
+
+		StringBuilder buf = new StringBuilder ()
+			.Append (".property ");
+		if (!(gm ?? sm).IsStatic)
+			buf.Append ("instance ");
+		_AppendTypeName (buf, property.PropertyType);
+		buf.Append (' ').Append (property.Name);
+		if (!property.HasParameters || property.Parameters.Count == 0)
+			return buf.ToString ();
+
+		buf.Append ('(');
+		bool first = true;
+		foreach (ParameterDefinition p in property.Parameters) {
+			if (!first)
+				buf.Append (", ");
+			first = false;
+			_AppendTypeName (buf, p.ParameterType);
+		}
+		buf.Append (')');
+
+		return buf.ToString ();
+	}
+
+	protected override string GetFieldDeclaration (FieldDefinition field)
+	{
+		TypeDefinition declType = (TypeDefinition) field.DeclaringType;
+		if (declType.IsEnum && field.Name == "value__")
+			return null; // This member of enums aren't documented.
+
+		StringBuilder buf = new StringBuilder ();
+		AppendFieldVisibility (buf, field);
+		if (buf.Length == 0)
+			return null;
+
+		buf.Insert (0, ".field ");
+
+		if (field.IsStatic)
+			buf.Append ("static ");
+		if (field.IsInitOnly)
+			buf.Append ("initonly ");
+		if (field.IsLiteral)
+			buf.Append ("literal ");
+		_AppendTypeName (buf, field.FieldType);
+		buf.Append (' ').Append (field.Name);
+		AppendFieldValue (buf, field);
+
+		return buf.ToString ();
+	}
+
+	static StringBuilder AppendFieldVisibility (StringBuilder buf, FieldDefinition field)
+	{
+		if (field.IsPublic)
+			return buf.Append ("public ");
+		if (field.IsFamilyAndAssembly)
+			return buf.Append ("familyandassembly ");
+		if (field.IsFamilyOrAssembly)
+			return buf.Append ("familyorassembly ");
+		if (field.IsFamily)
+			return buf.Append ("family ");
+		return buf;
+	}
+
+	static StringBuilder AppendFieldValue (StringBuilder buf, FieldDefinition field)
+	{
+		// enums have a value__ field, which we ignore
+		if (field.DeclaringType.IsGenericType ())
+			return buf;
+		if (field.HasConstant && field.IsLiteral) {
+			object val = null;
+			try {
+				val   = field.Constant;
+			} catch {
+				return buf;
+			}
+			if (val == null)
+				buf.Append (" = ").Append ("null");
+			else if (val is Enum)
+				buf.Append (" = ")
+					.Append (GetBuiltinType (field.DeclaringType.GetUnderlyingType ().FullName))
+					.Append ('(')
+					.Append (val.ToString ())
+					.Append (')');
+			else if (val is IFormattable) {
+				string value = ((IFormattable)val).ToString();
+				buf.Append (" = ");
+				if (val is string)
+					buf.Append ("\"" + value + "\"");
+				else
+					buf.Append (GetBuiltinType (field.DeclaringType.GetUnderlyingType ().FullName))
+						.Append ('(')
+						.Append (value)
+						.Append (')');
+			}
+		}
+		return buf;
+	}
+
+	protected override string GetEventDeclaration (EventDefinition e)
+	{
+		StringBuilder buf = new StringBuilder ();
+		if (AppendVisibility (buf, e.AddMethod).Length == 0) {
+			return null;
+		}
+
+		buf.Length = 0;
+		buf.Append (".event ")
+			.Append (GetName (e.EventType))
+			.Append (' ')
+			.Append (e.Name);
+
+		return buf.ToString ();
+	}
+}
+
+class ILMemberFormatter : ILFullMemberFormatter {
+	protected override StringBuilder AppendNamespace (StringBuilder buf, TypeReference type)
+	{
+		return buf;
+	}
+}
+
 class CSharpFullMemberFormatter : MemberFormatter {
 
+	public override string Language {
+		get {return "C#";}
+	}
+
 	protected override StringBuilder AppendNamespace (StringBuilder buf, TypeReference type)
 	{
 		string ns = DocUtils.GetNamespace (type);
@@ -3414,7 +4174,7 @@ class CSharpFullMemberFormatter : MemberFormatter {
 
 	private StringBuilder AppendGenericParameterConstraints (StringBuilder buf, GenericParameter type)
 	{
-		if (MemberFormatterState != MemberFormatterState.WithinGenericTypeContainer)
+		if (MemberFormatterState != MemberFormatterState.WithinGenericTypeParameters)
 			return buf;
 		GenericParameterAttributes attrs = type.Attributes;
 		bool isout = (attrs & GenericParameterAttributes.Covariant) != 0;
@@ -3442,7 +4202,7 @@ class CSharpFullMemberFormatter : MemberFormatter {
 		if (DocUtils.IsDelegate (type)) {
 			buf.Append("delegate ");
 			MethodDefinition invoke = type.GetMethod ("Invoke");
-			buf.Append (full.GetName (invoke.ReturnType.ReturnType)).Append (" ");
+			buf.Append (full.GetName (invoke.ReturnType)).Append (" ");
 			buf.Append (GetName (type));
 			AppendParameters (buf, invoke, invoke.Parameters);
 			AppendGenericTypeConstraints (buf, type);
@@ -3529,11 +4289,11 @@ class CSharpFullMemberFormatter : MemberFormatter {
 		return AppendConstraints (buf, type.GenericParameters);
 	}
 
-	private StringBuilder AppendConstraints (StringBuilder buf, GenericParameterCollection genArgs)
+	private StringBuilder AppendConstraints (StringBuilder buf, IList<GenericParameter> genArgs)
 	{
 		foreach (GenericParameter genArg in genArgs) {
 			GenericParameterAttributes attrs = genArg.Attributes;
-			ConstraintCollection constraints = genArg.Constraints;
+			IList<TypeReference> constraints = genArg.Constraints;
 			if (attrs == GenericParameterAttributes.NonVariant && constraints.Count == 0)
 				continue;
 
@@ -3592,6 +4352,21 @@ class CSharpFullMemberFormatter : MemberFormatter {
 		return null;
 	}
 
+	protected override string GetTypeName (MethodReturnType returnType)
+	{
+		return GetTypeName (returnType, () => returnType.ReturnType);
+	}
+
+	string GetTypeName (ICustomAttributeProvider provider, Func<TypeReference> selector)
+	{
+		string type = GetName (selector ());
+		if (type == "object" && provider.HasCustomAttributes &&
+				provider.CustomAttributes.Cast<CustomAttribute>()
+				.Any (ca => ca.GetDeclaringType() == "System.Runtime.CompilerServices.DynamicAttribute"))
+			return "dynamic";
+		return type;
+	}
+
 	protected override StringBuilder AppendMethodName (StringBuilder buf, MethodDefinition method)
 	{
 		if (DocUtils.IsExplicitlyImplemented (method)) {
@@ -3651,7 +4426,7 @@ class CSharpFullMemberFormatter : MemberFormatter {
 	protected override StringBuilder AppendGenericMethod (StringBuilder buf, MethodDefinition method)
 	{
 		if (method.IsGenericMethod ()) {
-			GenericParameterCollection args = method.GenericParameters;
+			IList<GenericParameter> args = method.GenericParameters;
 			if (args.Count > 0) {
 				buf.Append ("<");
 				buf.Append (args [0].Name);
@@ -3663,12 +4438,12 @@ class CSharpFullMemberFormatter : MemberFormatter {
 		return buf;
 	}
 
-	protected override StringBuilder AppendParameters (StringBuilder buf, MethodDefinition method, ParameterDefinitionCollection parameters)
+	protected override StringBuilder AppendParameters (StringBuilder buf, MethodDefinition method, IList<ParameterDefinition> parameters)
 	{
 		return AppendParameters (buf, method, parameters, '(', ')');
 	}
 
-	private StringBuilder AppendParameters (StringBuilder buf, MethodDefinition method, ParameterDefinitionCollection parameters, char begin, char end)
+	private StringBuilder AppendParameters (StringBuilder buf, MethodDefinition method, IList<ParameterDefinition> parameters, char begin, char end)
 	{
 		buf.Append (begin);
 
@@ -3687,13 +4462,13 @@ class CSharpFullMemberFormatter : MemberFormatter {
 
 	private StringBuilder AppendParameter (StringBuilder buf, ParameterDefinition parameter)
 	{
-		if (parameter.ParameterType is ReferenceType) {
+		if (parameter.ParameterType is ByReferenceType) {
 			if (parameter.IsOut)
 				buf.Append ("out ");
 			else
 				buf.Append ("ref ");
 		}
-		buf.Append (GetName (parameter.ParameterType)).Append (" ");
+		buf.Append (GetTypeName (parameter, () => parameter.ParameterType)).Append (" ");
 		return buf.Append (parameter.Name);
 	}
 
@@ -3748,9 +4523,9 @@ class CSharpFullMemberFormatter : MemberFormatter {
 
 		buf.Append (GetName (property.PropertyType)).Append (' ');
 
-		IEnumerable<IMemberReference> defs = property.DeclaringType.GetDefaultMembers ();
+		IEnumerable<MemberReference> defs = property.DeclaringType.GetDefaultMembers ();
 		string name = property.Name;
-		foreach (IMemberReference mi in defs) {
+		foreach (MemberReference mi in defs) {
 			if (mi == property) {
 				name = "this";
 				break;
@@ -3763,16 +4538,16 @@ class CSharpFullMemberFormatter : MemberFormatter {
 		}
 
 		buf.Append (" {");
-		if (set_visible != null) {
-			if (set_visible != visibility)
-				buf.Append (' ').Append (set_visible);
-			buf.Append (" set;");
-		}
 		if (get_visible != null) {
 			if (get_visible != visibility)
 				buf.Append (' ').Append (get_visible);
 			buf.Append (" get;");
 		}
+		if (set_visible != null) {
+			if (set_visible != visibility)
+				buf.Append (' ').Append (set_visible);
+			buf.Append (" set;");
+		}
 		buf.Append (" }");
 	
 		return buf [0] != ' ' ? buf.ToString () : buf.ToString (1, buf.Length-1);
@@ -3898,7 +4673,7 @@ class SlashDocMemberFormatter : MemberFormatter {
 		if (type is GenericParameter) {
 			int l = buf.Length;
 			if (genDeclType != null) {
-				GenericParameterCollection genArgs = genDeclType.GenericParameters;
+				IList<GenericParameter> genArgs = genDeclType.GenericParameters;
 				for (int i = 0; i < genArgs.Count; ++i) {
 					if (genArgs [i].Name == type.Name) {
 						buf.Append ('`').Append (i);
@@ -3907,7 +4682,7 @@ class SlashDocMemberFormatter : MemberFormatter {
 				}
 			}
 			if (genDeclMethod != null) {
-				GenericParameterCollection genArgs = null;
+				IList<GenericParameter> genArgs = null;
 				if (genDeclMethod.IsGenericMethod ()) {
 					genArgs = genDeclMethod.GenericParameters;
 					for (int i = 0; i < genArgs.Count; ++i) {
@@ -3973,7 +4748,7 @@ class SlashDocMemberFormatter : MemberFormatter {
 		return buf;
 	}
 
-	public override string GetDeclaration (IMemberReference member)
+	public override string GetDeclaration (MemberReference member)
 	{
 		TypeReference r = member as TypeReference;
 		if (r != null) {
@@ -4011,11 +4786,11 @@ class SlashDocMemberFormatter : MemberFormatter {
 		buf.Append ('.');
 		buf.Append (name.Replace (".", "#"));
 		if (method.IsGenericMethod ()) {
-			GenericParameterCollection genArgs = method.GenericParameters;
+			IList<GenericParameter> genArgs = method.GenericParameters;
 			if (genArgs.Count > 0)
 				buf.Append ("``").Append (genArgs.Count);
 		}
-		ParameterDefinitionCollection parameters = method.Parameters;
+		IList<ParameterDefinition> parameters = method.Parameters;
 		try {
 			genDeclType   = method.DeclaringType;
 			genDeclMethod = method;
@@ -4028,7 +4803,7 @@ class SlashDocMemberFormatter : MemberFormatter {
 		return buf.ToString ();
 	}
 
-	private StringBuilder AppendParameters (StringBuilder buf, GenericParameterCollection genArgs, ParameterDefinitionCollection parameters)
+	private StringBuilder AppendParameters (StringBuilder buf, IList<GenericParameter> genArgs, IList<ParameterDefinition> parameters)
 	{
 		if (parameters.Count == 0)
 			return buf;
@@ -4044,7 +4819,7 @@ class SlashDocMemberFormatter : MemberFormatter {
 		return buf.Append (')');
 	}
 
-	private StringBuilder AppendParameter (StringBuilder buf, GenericParameterCollection genArgs, ParameterDefinition parameter)
+	private StringBuilder AppendParameter (StringBuilder buf, IList<GenericParameter> genArgs, ParameterDefinition parameter)
 	{
 		AddTypeCount = false;
 		buf.Append (GetTypeName (parameter.ParameterType));
@@ -4078,11 +4853,11 @@ class SlashDocMemberFormatter : MemberFormatter {
 		buf.Append (GetName (property.DeclaringType));
 		buf.Append ('.');
 		buf.Append (name);
-		ParameterDefinitionCollection parameters = property.Parameters;
+		IList<ParameterDefinition> parameters = property.Parameters;
 		if (parameters.Count > 0) {
 			genDeclType = property.DeclaringType;
 			buf.Append ('(');
-			GenericParameterCollection genArgs = property.DeclaringType.GenericParameters;
+			IList<GenericParameter> genArgs = property.DeclaringType.GenericParameters;
 			AppendParameter (buf, genArgs, parameters [0]);
 			for (int i = 1; i < parameters.Count; ++i) {
 				 buf.Append (',');
@@ -4130,7 +4905,7 @@ class SlashDocMemberFormatter : MemberFormatter {
 		if (method.Name == "op_Implicit" || method.Name == "op_Explicit") {
 			genDeclType = method.DeclaringType;
 			genDeclMethod = method;
-			name += "~" + GetName (method.ReturnType.ReturnType);
+			name += "~" + GetName (method.ReturnType);
 			genDeclType = null;
 			genDeclMethod = null;
 		}
diff --git a/mcs/tools/mdoc/Mono.Documentation/msitomsx.cs b/mcs/tools/mdoc/Mono.Documentation/msitomsx.cs
new file mode 100644
index 0000000..459ac17
--- /dev/null
+++ b/mcs/tools/mdoc/Mono.Documentation/msitomsx.cs
@@ -0,0 +1,183 @@
+//
+// msitomsx.cs: Microsoft Internal XML to Microsoft XML Documentation
+//
+// Arguably this doesn't belong in mdoc, but I'd rather not do some
+// stand-alone tool either, especially since the primary reason it exists is
+// to facilitate generating ECMA documentation via mdoc-update and
+// mdoc-update-ecma-xml...
+//
+// Author:
+//   Jonathan Pryor  <jpryor at novell.com>
+//
+// Copyright (c) 2010 Novell, Inc. (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Reflection;
+using System.Text;
+using System.Xml;
+using System.Xml.Linq;
+using System.Xml.Xsl;
+
+using Mono.Options;
+
+namespace Mono.Documentation {
+
+	class MsidocToMsxdocConverter : MDocCommand {
+
+		XslCompiledTransform msiToMsxTransform = new XslCompiledTransform ();
+
+		public MsidocToMsxdocConverter ()
+		{
+			using (var r = XmlReader.Create (
+						Assembly.GetExecutingAssembly ().GetManifestResourceStream ("msitomsx.xsl")))
+				msiToMsxTransform.Load (r);
+		}
+
+		public override void Run (IEnumerable<string> args)
+		{
+			var types = new List<string> ();
+			string outdir = null;
+
+			var options = new OptionSet () {
+				{ "o|out=", 
+					"{DIRECTORY} to create Microsoft XML assembly.xml documentation files.",
+					v => outdir = v },
+				{ "library=",
+					"Ignored for compatibility with update-ecma-xml.",
+					v => {} },
+				{ "type=",
+					"The full {TYPE} name of a type to copy into the output file.",
+					v => types.Add (v) },
+			};
+			var sources = Parse (options, args, "export-ecma-xml", 
+					"[OPTIONS]+ DIRECTORIES",
+					"Convert Microsoft internal XML documentation within DIRECTORIES into\n" +
+					"Microsoft XML documentation.\n" +
+					"\n" +
+					"Microsoft internal XML documentation is a custom XML dialect (yay) with\n" +
+					"a specific directory structure:\n" +
+					"\n" +
+					"\tROOT/dotted.namespace/asset.xml\n" +
+					"\n" +
+					"where ROOT is a directory that can be passed as one of the DIRECTORIES\n" +
+					"arguments to x-msitomsx, dotted.namespace is the lowercased namespace\n" +
+					"in dotted form, e.g. 'system.threading', and asset.xml is the name of \n" +
+					"the \"asset\" being documented.  The asset.xml basename is a GUID, and\n" +
+					"the file contains type/namespace/etc. documentation, one file per asset.\n" +
+					"\n" +
+					"There is no separation of assemblies in this format, only namespaces.\n" +
+					"Types from all assemblies are intermixed with each other.\n" +
+					"\n" +
+					"The output of x-msitomsx will be a set of files in the --out directory,\n" +
+					"one file per assembly (normal 'csc /doc' convention).  For example,\n" +
+					"\n" +
+					"\tmdoc x-msitomsx -o docs import-root --type System.String\n" +
+					"\n" +
+					"will create the file 'docs/mscorlib.dll' which will contain the converted\n" +
+					"documentation for the System.String type.");
+			if (sources == null)
+				return;
+			if (sources.Count == 0)
+				Error ("No directories specified.");
+			if (outdir == null)
+				Error ("No output directory specified.  Please use --out=DIRECTORY.");
+
+			types.Sort ();
+
+			Dictionary<string, XDocument> docs = Convert (sources, types);
+			foreach (KeyValuePair<string, XDocument> e in docs) {
+				using (var o = CreateWriter (Path.Combine (outdir, e.Key + ".xml")))
+					e.Value.WriteTo (o);
+			}
+		}
+
+		private Dictionary<string, XDocument> Convert (List<string> sources, List<string> types)
+		{
+			var docs = new Dictionary<string, XDocument> ();
+
+			foreach (var source in sources) {
+				foreach (var dir in Directory.GetDirectories (source)) {
+					foreach (var file in Directory.GetFiles (dir, "*.xml")) {
+						ConvertDocs (docs, types, file);
+					}
+				}
+			}
+
+			return docs;
+		}
+
+		private void ConvertDocs (Dictionary<string, XDocument> docs, List<string> types, string file)
+		{
+			var doc = LoadFile (file);
+			var type = doc.Root.Element ("members").Element ("member").Attribute ("name").Value;
+
+			if (type.StartsWith ("N:"))
+				return;
+
+			if (!type.StartsWith ("T:"))
+				throw new InvalidOperationException ("File '" + file + "' doesn't contain type documentation, it contains docs for: " + type);
+
+			type = type.Substring (2);
+			if (types.Count > 0 && types.BinarySearch (type) < 0)
+				return;
+
+			var assembly = doc.Root.Element ("assembly").Element ("name").Value;
+			XDocument asmdocs;
+			if (!docs.TryGetValue (assembly, out asmdocs)) {
+				docs.Add (assembly, 
+						asmdocs = new XDocument (
+							new XElement ("doc", 
+								new XElement ("assembly",
+									new XElement ("name", assembly)),
+								new XElement ("members"))));
+			}
+
+			var import = new XDocument ();
+			msiToMsxTransform.Transform (doc.CreateReader (), import.CreateWriter ());
+
+			asmdocs.Root.Element ("members").Add (import.Root.Element ("members").Elements ("member"));
+		}
+
+		static XDocument LoadFile (string file)
+		{
+			using (XmlReader r = XmlReader.Create (file))
+				return XDocument.Load (r);
+		}
+
+		static XmlWriter CreateWriter (string file)
+		{
+			var settings = new XmlWriterSettings {
+				Encoding            = new UTF8Encoding (false),
+				Indent              = true,
+				IndentChars         = "    ",
+				NewLineChars        = "\r\n",
+				OmitXmlDeclaration  = true,
+			};
+
+			return XmlWriter.Create (file, settings);
+		}
+	}
+}
+
diff --git a/mcs/tools/mdoc/Mono.Documentation/webdoc.cs b/mcs/tools/mdoc/Mono.Documentation/webdoc.cs
index 045ab81..14f9ff7 100644
--- a/mcs/tools/mdoc/Mono.Documentation/webdoc.cs
+++ b/mcs/tools/mdoc/Mono.Documentation/webdoc.cs
@@ -196,7 +196,6 @@ namespace Mono.Documentation
 					docRoot.AddSourceFile (source);
 			}
 			hs.RootTree = docRoot;
-			string helpSourceName = Path.GetFileName (basePath);
 			foreach (Node node in tree.TraverseDepthFirst<Node, Node> (t => t, t => t.Nodes.Cast<Node> ())) {
 				var url = node.URL;
 				Message (TraceLevel.Info, "\tProcessing URL: {0}", url);
diff --git a/mcs/tools/mdoc/Resources/monodoc-ecma.xsd b/mcs/tools/mdoc/Resources/monodoc-ecma.xsd
index 89c4daf..ed63ed9 100644
--- a/mcs/tools/mdoc/Resources/monodoc-ecma.xsd
+++ b/mcs/tools/mdoc/Resources/monodoc-ecma.xsd
@@ -488,6 +488,7 @@ add masterdoc support?
     <xs:complexType mixed="true">
       <xs:choice minOccurs="0" maxOccurs="unbounded">
         <xs:element ref="block" />
+        <xs:element ref="i" />
         <xs:element ref="format" />
         <xs:element ref="see" />
         <xs:element ref="geq" />
@@ -746,7 +747,7 @@ add masterdoc support?
   <xs:element name="threadsafe">
     <xs:complexType>
      <xs:sequence>
-       <xs:element ref="para" minOccurs="1" />
+       <xs:element ref="para" minOccurs="1" maxOccurs="unbounded" />
      </xs:sequence>
     </xs:complexType>
   </xs:element>
@@ -1052,5 +1053,57 @@ add masterdoc support?
     </xs:complexType>
   </xs:element>
 
+  <!--
+    ECMA 334 Annex E Documentation Comments support.
+    -->
+
+  <xs:element name="seealso">
+    <xs:complexType>
+      <xs:simpleContent>
+        <xs:extension base="xs:string">
+          <xs:attribute ref="cref" />
+        </xs:extension>
+      </xs:simpleContent>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="doc">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element name="assembly">
+          <xs:complexType>
+            <xs:choice>
+              <xs:element name="name" type="xs:string" />
+            </xs:choice>
+          </xs:complexType>
+        </xs:element>
+        <xs:element name="members">
+          <xs:complexType>
+            <xs:choice minOccurs="0" maxOccurs="unbounded">>
+              <xs:element name="member">
+                <xs:complexType>
+                  <xs:choice minOccurs="0" maxOccurs="unbounded">
+                    <xs:element ref="seealso" />
+                    <xs:element ref="example" />
+                    <xs:element ref="exception" />
+                    <xs:element ref="param" />
+                    <xs:element ref="permission" />
+                    <xs:element ref="PermissionSet" />
+                    <xs:element ref="remarks" />
+                    <xs:element ref="returns" />
+                    <xs:element ref="summary" />
+                    <xs:element ref="threadsafe" />
+                    <xs:element ref="typeparam" />
+                    <xs:element ref="value" />
+                  </xs:choice>
+                  <xs:attribute name="name" type="xs:type" />
+                </xs:complexType>
+              </xs:element>
+            </xs:choice>
+          </xs:complexType>
+        </xs:element>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
 </xs:schema>
 
diff --git a/mcs/tools/mdoc/Resources/msitomsx.xsl b/mcs/tools/mdoc/Resources/msitomsx.xsl
new file mode 100644
index 0000000..33e532e
--- /dev/null
+++ b/mcs/tools/mdoc/Resources/msitomsx.xsl
@@ -0,0 +1,303 @@
+<?xml version="1.0"?>
+<!--
+  Converts the "Microsoft Internal XML Documentation Format" into the 
+  "Microsoft XML Documentation Format".
+
+  The "Microsoft Internal XML Documentation Format" (msidoc) is whatever XML
+  format is used within Microsoft to document the BCL, as deduced from reading
+  their ECMA documentation dump.
+
+  The "Microsoft XML Documentation Format" (msxdoc) is what 'gmcs /doc' 
+  produces, and is documented in ECMA 334 §E.
+
+  msidoc is similar, but not identical to, msxdoc.  For example, where msxdoc
+  uses <see cref="FOO"/>, msidoc uses
+  <codeEntityReference>FOO</codeEntityReference>.  They also introduce
+  additional "wrapping" elements in various places (e.g. <content/>), useful
+  extensions (such as documenting method overload lists), and other oddities.
+  -->
+<xsl:stylesheet
+  version="1.0"
+  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+  xmlns:msxsl="urn:schemas-microsoft-com:xslt"
+  xmlns:authoring="http://ddue.schemas.microsoft.com/authoring/2003/5"
+  exclude-result-prefixes="msxsl authoring"
+  >
+
+  <xsl:output omit-xml-declaration="yes" />
+
+  <xsl:template match="assembly" />
+  <xsl:template match="authoring:changeHistory" />
+  <xsl:template match="authoring:clsCompliantAlternative" />
+  <xsl:template match="authoring:internalOnly" />
+  <xsl:template match="authoring:notesForCallers" />
+  <xsl:template match="authoring:notesForImplementers" />
+  <xsl:template match="authoring:notesForInheritors" />
+  <xsl:template match="authoring:overload" />
+  <xsl:template match="authoring:platformNotes" />
+  <xsl:template match="authoring:relatedTopics" />
+  <xsl:template match="authoring:sections" />
+
+  <xsl:template match="member">
+    <!-- skip Overload: members, as these have no msxdoc equivalent. -->
+    <xsl:if test="not (starts-with (@name, 'Overload:'))">
+      <member name="{@name}">
+        <xsl:apply-templates />
+      </member>
+    </xsl:if>
+  </xsl:template>
+
+  <xsl:template match="authoring:remarks">
+    <remarks>
+      <xsl:apply-templates />
+      <xsl:for-each select="../authoring:notesForInheritors">
+        <block subset="none" type="overrides">
+          <xsl:apply-templates />
+        </block>
+      </xsl:for-each>
+      <xsl:for-each select="../authoring:notesForImplementers">
+        <block subset="none" type="behaviors">
+          <xsl:apply-templates />
+        </block>
+      </xsl:for-each>
+      <xsl:for-each select="../authoring:notesForCallers">
+        <block subset="none" type="usage">
+          <xsl:apply-templates />
+        </block>
+      </xsl:for-each>
+    </remarks>
+  </xsl:template>
+
+  <xsl:template match="authoring:dduexml" >
+    <xsl:apply-templates />
+  </xsl:template>
+
+  <xsl:template match="authoring:codeEntityReference">
+    <see cref="{.}" />
+  </xsl:template>
+
+  <xsl:template match="authoring:equivalentCodeEntity">
+    <seealso cref="{authoring:codeEntityReference}" />
+  </xsl:template>
+
+  <xsl:template match="authoring:codeInline">
+    <c>
+      <xsl:apply-templates />
+    </c>
+  </xsl:template>
+
+  <xsl:template match="authoring:codeReference">
+    <code src="{.}" />
+  </xsl:template>
+
+  <xsl:template match="authoring:parameters">
+    <xsl:apply-templates />
+  </xsl:template>
+
+  <xsl:template match="authoring:parameter">
+    <param name="{authoring:parameterReference}">
+      <xsl:for-each select="*">
+        <xsl:if test="not (position () = 1)">
+          <xsl:apply-templates />
+        </xsl:if>
+      </xsl:for-each>
+    </param>
+  </xsl:template>
+
+  <xsl:template match="authoring:genericParameters">
+    <xsl:apply-templates />
+  </xsl:template>
+
+  <xsl:template match="authoring:genericParameter">
+    <typeparam name="{authoring:parameterReference}">
+      <xsl:for-each select="*">
+        <xsl:if test="not (position () = 1)">
+          <xsl:apply-templates />
+        </xsl:if>
+      </xsl:for-each>
+    </typeparam>
+  </xsl:template>
+
+  <xsl:template match="authoring:parameterReference">
+    <paramref name="{.}" />
+  </xsl:template>
+
+  <xsl:template match="authoring:returnValue">
+    <returns>
+      <xsl:apply-templates />
+    </returns>
+  </xsl:template>
+
+  <xsl:template match="authoring:exceptions">
+    <xsl:apply-templates />
+  </xsl:template>
+
+  <xsl:template match="authoring:exception">
+    <exception cref="{authoring:codeEntityReference}">
+      <xsl:apply-templates select="authoring:content" />
+    </exception>
+  </xsl:template>
+
+  <xsl:template match="authoring:codeExamples">
+    <xsl:apply-templates />
+  </xsl:template>
+
+  <xsl:template match="authoring:codeExample">
+    <xsl:choose>
+      <xsl:when test="count(authoring:legacy) > 0">
+      </xsl:when>
+      <xsl:otherwise>
+        <example>
+          <xsl:apply-templates select="authoring:description/authoring:content" />
+          <xsl:apply-templates select="authoring:codeReference" />
+        </example>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+
+  <xsl:template match="authoring:content">
+    <xsl:apply-templates />
+  </xsl:template>
+
+  <xsl:template match="authoring:languageKeyword">
+    <see langword="{.}" />
+  </xsl:template>
+
+  <xsl:template match="authoring:table">
+    <list type="table">
+      <xsl:apply-templates />
+    </list>
+  </xsl:template>
+
+  <xsl:template match="authoring:tableHeader">
+    <listheader>
+      <xsl:for-each select="authoring:row/authoring:entry">
+        <xsl:choose>
+          <xsl:when test="position() = 1">
+            <term>
+              <xsl:apply-templates />
+            </term>
+          </xsl:when>
+          <xsl:otherwise>
+            <description>
+              <xsl:apply-templates />
+            </description>
+          </xsl:otherwise>
+        </xsl:choose>
+      </xsl:for-each>
+    </listheader>
+  </xsl:template>
+
+  <xsl:template match="authoring:row">
+    <item>
+      <xsl:for-each select="authoring:entry">
+        <xsl:choose>
+          <xsl:when test="position() = 1">
+            <term>
+              <xsl:apply-templates />
+            </term>
+          </xsl:when>
+          <xsl:otherwise>
+            <description>
+              <xsl:apply-templates />
+            </description>
+          </xsl:otherwise>
+        </xsl:choose>
+      </xsl:for-each>
+    </item>
+  </xsl:template>
+
+  <xsl:template match="authoring:list">
+    <list type="{@class}">
+      <xsl:apply-templates />
+    </list>
+  </xsl:template>
+
+  <xsl:template match="authoring:listItem">
+    <item><term>
+      <xsl:apply-templates />
+    </term></item>
+  </xsl:template>
+
+  <xsl:template match="authoring:alert">
+    <block subset="none" type="note">
+      <xsl:apply-templates />
+    </block>
+  </xsl:template>
+
+  <xsl:template match="authoring:permissions">
+    <xsl:apply-templates />
+  </xsl:template>
+
+  <xsl:template match="authoring:permission">
+    <permission cref="{authoring:codeEntityReference}">
+      <xsl:apply-templates select="authoring:content" />
+    </permission>
+  </xsl:template>
+
+  <xsl:template match="authoring:threadSafety">
+    <threadsafe>
+      <xsl:apply-templates />
+    </threadsafe>
+  </xsl:template>
+
+  <xsl:template match="authoring:embeddedLabel">
+    <i>
+      <xsl:value-of select="." />
+      <xsl:text>:</xsl:text>
+    </i>
+  </xsl:template>
+
+  <xsl:template match="authoring:externalLink">
+    <format type="text/html">
+      <a href="{authoring:linkUri}">
+        <xsl:value-of select="authoring:linkText" />
+      </a>
+    </format>
+  </xsl:template>
+
+  <xsl:template match="authoring:legacyLink">
+    <i>
+      <xsl:value-of select="." />
+    </i>
+  </xsl:template>
+
+  <xsl:template match="authoring:legacyItalic">
+    <i>
+      <xsl:value-of select="." />
+    </i>
+  </xsl:template>
+
+  <xsl:template match="authoring:token">
+    <xsl:choose>
+      <xsl:when test=". = 'compact_v20_long'">
+        <xsl:text>.NET Compact Framework version 2.0</xsl:text>
+      </xsl:when>
+      <xsl:when test=". = 'compact_v35_long'">
+        <xsl:text>.NET Compact Framework version 3.5</xsl:text>
+      </xsl:when>
+      <xsl:when test=". = 'dnprdnext'">
+        <xsl:text>.NET Framework version 2.0</xsl:text>
+      </xsl:when>
+      <xsl:when test=". = 'vbprvbext'">
+        <xsl:text>Microsoft Visual Basic 2005</xsl:text>
+      </xsl:when>
+      <xsl:when test=". = 'vbprvblong'">
+        <xsl:text>Visual Basic 2005</xsl:text>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:text>UNKNOWN_TOKEN(</xsl:text>
+        <xsl:value-of select="." />
+        <xsl:text>)</xsl:text>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+
+  <!-- cute trick to remove the xmlns attributes on copied nodes. -->
+  <xsl:template match="*">
+    <xsl:element name="{local-name()}">
+      <xsl:apply-templates />
+    </xsl:element>
+  </xsl:template>
+</xsl:stylesheet>
+
diff --git a/mcs/tools/mdoc/Test/DocTest-v1.cs b/mcs/tools/mdoc/Test/DocTest-v1.cs
index 253233a..259de70 100644
--- a/mcs/tools/mdoc/Test/DocTest-v1.cs
+++ b/mcs/tools/mdoc/Test/DocTest-v1.cs
@@ -530,6 +530,9 @@ namespace Mono.DocTest.Generic {
 		/// <remarks>E:Mono.DocTest.Generic.GenericBase`1.MyEvent</remarks>
 		public event EventHandler<FooEventArgs> MyEvent;
 
+		/// <remarks>E:Mono.DocTest.Generic.GenericBase`1.ItemChanged</remarks>
+		public event Action<MyList<U>, MyList<U>.Helper<U, U>> ItemChanged;
+
 		/// <remarks>T:Mono.DocTest.Generic.GenericBase`1.NestedCollection</remarks>
 		public class NestedCollection {
 			/// <remarks>T:Mono.DocTest.Generic.GenericBase`1.NestedCollection.Enumerator</remarks>
diff --git a/mcs/tools/mdoc/Test/en.expected.importecmadoc/System/Action`1.xml b/mcs/tools/mdoc/Test/en.expected.importecmadoc/System/Action`1.xml
index fefaa9f..745c515 100644
--- a/mcs/tools/mdoc/Test/en.expected.importecmadoc/System/Action`1.xml
+++ b/mcs/tools/mdoc/Test/en.expected.importecmadoc/System/Action`1.xml
@@ -1,5 +1,6 @@
 <Type Name="Action<T>" FullName="System.Action<T>">
   <TypeSignature Language="C#" Value="public delegate void Action<T>(T obj);" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed Action`1<T> extends System.MulticastDelegate" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.importecmadoc/System/Array.xml b/mcs/tools/mdoc/Test/en.expected.importecmadoc/System/Array.xml
index e1bc049..b082688 100644
--- a/mcs/tools/mdoc/Test/en.expected.importecmadoc/System/Array.xml
+++ b/mcs/tools/mdoc/Test/en.expected.importecmadoc/System/Array.xml
@@ -1,5 +1,6 @@
 <Type Name="Array" FullName="System.Array">
   <TypeSignature Language="C#" Value="public class Array" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit Array extends System.Object" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -97,7 +98,7 @@ and the second dimension indexed by 1, 2, and 3. </para>
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public Array ();" />
-      <MemberSignature Language="ILAsm" Value="private rtspecialname specialname instance void .ctor()" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -110,6 +111,7 @@ and the second dimension indexed by 1, 2, and 3. </para>
     </Member>
     <Member MemberName="AsReadOnly<T>">
       <MemberSignature Language="C#" Value="public static System.Collections.ObjectModel.ReadOnlyCollection<T> AsReadOnly<T> (T[] array);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig class System.Collections.ObjectModel.ReadOnlyCollection`1<!!T> AsReadOnly<T>(!!T[] array) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -134,7 +136,7 @@ and the second dimension indexed by 1, 2, and 3. </para>
     </Member>
     <Member MemberName="ConvertAll<T,U>">
       <MemberSignature Language="C#" Value="public static TOutput[] ConvertAll<TInput,TOutput> (TInput[] array, Converter<TInput,TOutput> converter);" />
-      <MemberSignature Language="ILAsm" Value=".method public hidebysig static !!1[] ConvertAll<T,U>(!!0[] array, class System.Converter`1<!!0,!!1> converter)" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig !!TOutput[] ConvertAll<TInput, TOutput>(!!TInput[] array, class System.Converter`2<!!TInput, !!TOutput> converter) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -173,6 +175,7 @@ and the second dimension indexed by 1, 2, and 3. </para>
     </Member>
     <Member MemberName="Resize<T>">
       <MemberSignature Language="C#" Value="public static void Resize<T> (ref T[] array, int newSize);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig void Resize<T>(!!T[] array, int32 newSize) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.importecmadoc/System/AsyncCallback.xml b/mcs/tools/mdoc/Test/en.expected.importecmadoc/System/AsyncCallback.xml
index 2049b23..a232e3c 100644
--- a/mcs/tools/mdoc/Test/en.expected.importecmadoc/System/AsyncCallback.xml
+++ b/mcs/tools/mdoc/Test/en.expected.importecmadoc/System/AsyncCallback.xml
@@ -1,5 +1,6 @@
 <Type Name="AsyncCallback" FullName="System.AsyncCallback">
   <TypeSignature Language="C#" Value="public delegate void AsyncCallback(IAsyncResult ar);" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed AsyncCallback extends System.MulticastDelegate" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.importecmadoc/System/Environment.xml b/mcs/tools/mdoc/Test/en.expected.importecmadoc/System/Environment.xml
index e46ad7e..5ce8949 100644
--- a/mcs/tools/mdoc/Test/en.expected.importecmadoc/System/Environment.xml
+++ b/mcs/tools/mdoc/Test/en.expected.importecmadoc/System/Environment.xml
@@ -1,5 +1,6 @@
 <Type Name="Environment" FullName="System.Environment">
   <TypeSignature Language="C#" Value="public static class Environment" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi abstract sealed beforefieldinit Environment extends System.Object" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -42,6 +43,7 @@
   <Members>
     <Member MemberName="GetFolderPath">
       <MemberSignature Language="C#" Value="public static string GetFolderPath (Environment.SpecialFolder folder);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig string GetFolderPath(valuetype System.Environment/SpecialFolder folder) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.importecmadoc/index.xml b/mcs/tools/mdoc/Test/en.expected.importecmadoc/index.xml
new file mode 100644
index 0000000..c2ec0ea
--- /dev/null
+++ b/mcs/tools/mdoc/Test/en.expected.importecmadoc/index.xml
@@ -0,0 +1,21 @@
+<Overview>
+  <Assemblies>
+    <Assembly Name="DocTest" Version="0.0.0.0">
+      <Attributes>
+        <Attribute>
+          <AttributeName>System.Runtime.CompilerServices.RuntimeCompatibility(WrapNonExceptionThrows=true)</AttributeName>
+        </Attribute>
+      </Attributes>
+    </Assembly>
+  </Assemblies>
+  <Remarks>To be added.</Remarks>
+  <Copyright>To be added.</Copyright>
+  <Types>
+    <Namespace Name="System">
+      <Type Name="Action`1" DisplayName="Action<T>" Kind="Delegate" />
+      <Type Name="Array" Kind="Class" />
+      <Type Name="AsyncCallback" Kind="Delegate" />
+      <Type Name="Environment" Kind="Class" />
+    </Namespace>
+  </Types>
+</Overview>
diff --git a/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest.Generic/Extensions.xml b/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest.Generic/Extensions.xml
index 14da68c..bf6e99b 100644
--- a/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest.Generic/Extensions.xml
+++ b/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest.Generic/Extensions.xml
@@ -1,5 +1,6 @@
 <Type Name="Extensions" FullName="Mono.DocTest.Generic.Extensions">
   <TypeSignature Language="C#" Value="public static class Extensions" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi abstract sealed beforefieldinit Extensions extends System.Object" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -17,6 +18,7 @@
   <Members>
     <Member MemberName="Bar<T>">
       <MemberSignature Language="C#" Value="public static void Bar<T> (this Mono.DocTest.Generic.IFoo<T> self, string s);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig void Bar<T>(class Mono.DocTest.Generic.IFoo`1<!!T> self, string s) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -44,6 +46,7 @@
     </Member>
     <Member MemberName="ForEach<T>">
       <MemberSignature Language="C#" Value="public static void ForEach<T> (this System.Collections.Generic.IEnumerable<T> self, Action<T> a);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig void ForEach<T>(class System.Collections.Generic.IEnumerable`1<!!T> self, class System.Action`1<!!T> a) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -71,6 +74,7 @@
     </Member>
     <Member MemberName="ToDouble">
       <MemberSignature Language="C#" Value="public static System.Collections.Generic.IEnumerable<double> ToDouble (this System.Collections.Generic.IEnumerable<int> list);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig class System.Collections.Generic.IEnumerable`1<float64> ToDouble(class System.Collections.Generic.IEnumerable`1<int32> list) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -95,6 +99,7 @@
     </Member>
     <Member MemberName="ToDouble<T>">
       <MemberSignature Language="C#" Value="public static double ToDouble<T> (this T val) where T : Mono.DocTest.Generic.IFoo<T>;" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig float64 ToDouble<(class Mono.DocTest.Generic.IFoo`1<!!T>) T>(!!T val) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -126,6 +131,7 @@
     </Member>
     <Member MemberName="ToEnumerable<T>">
       <MemberSignature Language="C#" Value="public static System.Collections.Generic.IEnumerable<T> ToEnumerable<T> (this T self);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig class System.Collections.Generic.IEnumerable`1<!!T> ToEnumerable<T>(!!T self) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest.Generic/Func`2.xml b/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest.Generic/Func`2.xml
index bb06014..5c8ad74 100644
--- a/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest.Generic/Func`2.xml
+++ b/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest.Generic/Func`2.xml
@@ -1,5 +1,6 @@
 <Type Name="Func<TArg,TRet>" FullName="Mono.DocTest.Generic.Func<TArg,TRet>">
   <TypeSignature Language="C#" Value="public delegate TRet Func<TArg,TRet>(TArg a) where TArg : Exception;" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed Func`2<(class System.Exception) TArg, TRet> extends System.MulticastDelegate" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -53,7 +54,7 @@
     <typeparam name="TRet">return type, with attributes!</typeparam>
     <param name="a">To be added.</param>
     <summary>To be added.</summary>
-    <value>To be added.</value>
+    <returns>To be added.</returns>
     <remarks>
       <c>T:Mono.DocTest.Generic.Func`2</c>.</remarks>
   </Docs>
diff --git a/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest.Generic/GenericBase`1+FooEventArgs.xml b/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest.Generic/GenericBase`1+FooEventArgs.xml
index 1a56984..f169f10 100644
--- a/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest.Generic/GenericBase`1+FooEventArgs.xml
+++ b/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest.Generic/GenericBase`1+FooEventArgs.xml
@@ -1,5 +1,6 @@
 <Type Name="GenericBase<U>+FooEventArgs" FullName="Mono.DocTest.Generic.GenericBase<U>+FooEventArgs">
   <TypeSignature Language="C#" Value="public class GenericBase<U>.FooEventArgs : EventArgs" />
+  <TypeSignature Language="ILAsm" Value=".class nested public auto ansi beforefieldinit GenericBase`1/FooEventArgs<U> extends System.EventArgs" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -18,6 +19,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public FooEventArgs ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest.Generic/GenericBase`1+NestedCollection+Enumerator.xml b/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest.Generic/GenericBase`1+NestedCollection+Enumerator.xml
index d21457d..4010ee4 100644
--- a/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest.Generic/GenericBase`1+NestedCollection+Enumerator.xml
+++ b/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest.Generic/GenericBase`1+NestedCollection+Enumerator.xml
@@ -1,5 +1,6 @@
 <Type Name="GenericBase<U>+NestedCollection+Enumerator" FullName="Mono.DocTest.Generic.GenericBase<U>+NestedCollection+Enumerator">
   <TypeSignature Language="C#" Value="public struct GenericBase<U>.NestedCollection.Enumerator" />
+  <TypeSignature Language="ILAsm" Value=".class nested public sequential ansi sealed beforefieldinit GenericBase`1/NestedCollection/Enumerator<U> extends System.ValueType" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest.Generic/GenericBase`1+NestedCollection.xml b/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest.Generic/GenericBase`1+NestedCollection.xml
index 47c32c9..20075f8 100644
--- a/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest.Generic/GenericBase`1+NestedCollection.xml
+++ b/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest.Generic/GenericBase`1+NestedCollection.xml
@@ -1,5 +1,6 @@
 <Type Name="GenericBase<U>+NestedCollection" FullName="Mono.DocTest.Generic.GenericBase<U>+NestedCollection">
   <TypeSignature Language="C#" Value="public class GenericBase<U>.NestedCollection" />
+  <TypeSignature Language="ILAsm" Value=".class nested public auto ansi beforefieldinit GenericBase`1/NestedCollection<U> extends System.Object" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -18,6 +19,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public NestedCollection ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest.Generic/GenericBase`1.xml b/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest.Generic/GenericBase`1.xml
index dbfe4e1..9fe29c5 100644
--- a/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest.Generic/GenericBase`1.xml
+++ b/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest.Generic/GenericBase`1.xml
@@ -1,5 +1,6 @@
 <Type Name="GenericBase<U>" FullName="Mono.DocTest.Generic.GenericBase<U>">
   <TypeSignature Language="C#" Value="public class GenericBase<U>" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit GenericBase`1<U> extends System.Object" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -20,6 +21,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public GenericBase ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -32,6 +34,7 @@
     </Member>
     <Member MemberName="BaseMethod<S>">
       <MemberSignature Language="C#" Value="public U BaseMethod<S> (S genericParameter);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance !U BaseMethod<S>(!!S genericParameter) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -62,6 +65,7 @@
     </Member>
     <Member MemberName="ConstField1">
       <MemberSignature Language="C#" Value="public const int ConstField1;" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal int32 ConstField1" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -76,8 +80,26 @@
         </remarks>
       </Docs>
     </Member>
+    <Member MemberName="ItemChanged">
+      <MemberSignature Language="C#" Value="public event Action<Mono.DocTest.Generic.MyList<U>,Mono.DocTest.Generic.MyList<U>.Helper<U,U>> ItemChanged;" />
+      <MemberSignature Language="ILAsm" Value=".event class System.Action`2<class Mono.DocTest.Generic.MyList`1<!U>, class Mono.DocTest.Generic.MyList`1/Helper`2<!U, !U, !U>> ItemChanged" />
+      <MemberType>Event</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.Action<Mono.DocTest.Generic.MyList<U>,Mono.DocTest.Generic.MyList<U>+Helper<U,U>></ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>E:Mono.DocTest.Generic.GenericBase`1.ItemChanged</remarks>
+        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />, <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" /></exception>
+        <exception cref="T:System.MulticastNotSupportedException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" /></exception>
+      </Docs>
+    </Member>
     <Member MemberName="MyEvent">
       <MemberSignature Language="C#" Value="public event EventHandler<Mono.DocTest.Generic.GenericBase<U>.FooEventArgs> MyEvent;" />
+      <MemberSignature Language="ILAsm" Value=".event class System.EventHandler`1<class Mono.DocTest.Generic.GenericBase`1/FooEventArgs<!U>> MyEvent" />
       <MemberType>Event</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -94,6 +116,7 @@
     </Member>
     <Member MemberName="op_Explicit">
       <MemberSignature Language="C#" Value="public static U op_Explicit (Mono.DocTest.Generic.GenericBase<U> list);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig specialname !U op_Explicit(class Mono.DocTest.Generic.GenericBase`1<!U> list) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -115,6 +138,7 @@
     </Member>
     <Member MemberName="StaticField1">
       <MemberSignature Language="C#" Value="public static readonly Mono.DocTest.Generic.GenericBase<U> StaticField1;" />
+      <MemberSignature Language="ILAsm" Value=".field public static initonly class Mono.DocTest.Generic.GenericBase`1<!U> StaticField1" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest.Generic/IFoo`1.xml b/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest.Generic/IFoo`1.xml
index 7d7aca5..15abb95 100644
--- a/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest.Generic/IFoo`1.xml
+++ b/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest.Generic/IFoo`1.xml
@@ -1,5 +1,6 @@
 <Type Name="IFoo<T>" FullName="Mono.DocTest.Generic.IFoo<T>">
   <TypeSignature Language="C#" Value="public interface IFoo<T>" />
+  <TypeSignature Language="ILAsm" Value=".class public interface auto ansi abstract IFoo`1<T>" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -17,6 +18,7 @@
   <Members>
     <Member MemberName="Method<U>">
       <MemberSignature Language="C#" Value="public T Method<U> (T t, U u);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance !T Method<U>(!T t, !!U u) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest.Generic/MyList`1+Helper`2.xml b/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest.Generic/MyList`1+Helper`2.xml
index 276d36e..bd62902 100644
--- a/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest.Generic/MyList`1+Helper`2.xml
+++ b/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest.Generic/MyList`1+Helper`2.xml
@@ -1,5 +1,6 @@
 <Type Name="MyList<T>+Helper<U,V>" FullName="Mono.DocTest.Generic.MyList<T>+Helper<U,V>">
   <TypeSignature Language="C#" Value="public class MyList<T>.Helper<U,V>" />
+  <TypeSignature Language="ILAsm" Value=".class nested public auto ansi beforefieldinit MyList`1/Helper`2<T, U, V> extends System.Object" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -23,6 +24,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public Helper ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -35,6 +37,7 @@
     </Member>
     <Member MemberName="UseT">
       <MemberSignature Language="C#" Value="public void UseT (T a, U b, V c);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void UseT(!T a, !U b, !V c) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest.Generic/MyList`1.xml b/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest.Generic/MyList`1.xml
index c69c9e3..b0cf4b8 100644
--- a/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest.Generic/MyList`1.xml
+++ b/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest.Generic/MyList`1.xml
@@ -1,5 +1,6 @@
 <Type Name="MyList<T>" FullName="Mono.DocTest.Generic.MyList<T>">
   <TypeSignature Language="C#" Value="public class MyList<T> : Mono.DocTest.Generic.GenericBase<T>, System.Collections.Generic.IEnumerable<int[]>" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit MyList`1<T> extends Mono.DocTest.Generic.GenericBase`1<!T> implements class System.Collections.Generic.IEnumerable`1<int32[]>, class System.Collections.IEnumerable" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -33,6 +34,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public MyList ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -45,6 +47,7 @@
     </Member>
     <Member MemberName="GetEnumerator">
       <MemberSignature Language="C#" Value="public System.Collections.Generic.IEnumerator<int[]> GetEnumerator ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class System.Collections.Generic.IEnumerator`1<int32[]> GetEnumerator() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -62,6 +65,7 @@
     </Member>
     <Member MemberName="GetHelper<U,V>">
       <MemberSignature Language="C#" Value="public Mono.DocTest.Generic.MyList<T>.Helper<U,V> GetHelper<U,V> ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.DocTest.Generic.MyList`1/Helper`2<!T, !!U, !!V> GetHelper<U, V>() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -86,6 +90,7 @@
     </Member>
     <Member MemberName="Method<U>">
       <MemberSignature Language="C#" Value="public void Method<U> (T t, U u);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Method<U>(!T t, !!U u) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -111,6 +116,7 @@
     </Member>
     <Member MemberName="RefMethod<U>">
       <MemberSignature Language="C#" Value="public void RefMethod<U> (ref T t, ref U u);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void RefMethod<U>(!T t, !!U u) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -135,6 +141,7 @@
     </Member>
     <Member MemberName="System.Collections.IEnumerable.GetEnumerator">
       <MemberSignature Language="C#" Value="System.Collections.IEnumerator IEnumerable.GetEnumerator ();" />
+      <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance class System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -152,6 +159,7 @@
     </Member>
     <Member MemberName="Test">
       <MemberSignature Language="C#" Value="public void Test (T t);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Test(!T t) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -171,6 +179,7 @@
     </Member>
     <Member MemberName="UseHelper<U,V>">
       <MemberSignature Language="C#" Value="public void UseHelper<U,V> (Mono.DocTest.Generic.MyList<T>.Helper<U,V> helper);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void UseHelper<U, V>(class Mono.DocTest.Generic.MyList`1/Helper`2<!T, !!U, !!V> helper) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest.Generic/MyList`2.xml b/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest.Generic/MyList`2.xml
index 931f4b5..a903045 100644
--- a/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest.Generic/MyList`2.xml
+++ b/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest.Generic/MyList`2.xml
@@ -1,5 +1,6 @@
 <Type Name="MyList<A,B>" FullName="Mono.DocTest.Generic.MyList<A,B>">
   <TypeSignature Language="C#" Value="public class MyList<A,B> : Mono.DocTest.Generic.GenericBase<System.Collections.Generic.Dictionary<A,B>>, Mono.DocTest.Generic.IFoo<A>, System.Collections.Generic.ICollection<A>, System.Collections.Generic.IEnumerable<A>, System.Collections.Generic.IEnumerator<A> where A : class, IList<B>, new() where B : class, A" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit MyList`2<class .ctor (class System.Collections.Generic.IList`1<!B>) A, class (!A) B> extends Mono.DocTest.Generic.GenericBase`1<class System.Collections.Generic.Dictionary`2<!A, !B>> implements class Mono.DocTest.Generic.IFoo`1<!A>, class System.Collections.Generic.ICollection`1<!A>, class System.Collections.Generic.IEnumerable`1<!A>, class System.Collections.Generic.IEnumerator`1<!A>, class System.Collections.IEnumerable, class System.Collections.IEnumerator, class System.IDisposable" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -49,6 +50,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public MyList ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -61,6 +63,7 @@
     </Member>
     <Member MemberName="CopyTo">
       <MemberSignature Language="C#" Value="public void CopyTo (A[] array, int arrayIndex);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void CopyTo(!A[] array, int32 arrayIndex) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -82,6 +85,7 @@
     </Member>
     <Member MemberName="Count">
       <MemberSignature Language="C#" Value="public int Count { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance int32 Count" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -98,6 +102,7 @@
     </Member>
     <Member MemberName="Current">
       <MemberSignature Language="C#" Value="public A Current { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance !A Current" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -114,6 +119,7 @@
     </Member>
     <Member MemberName="Dispose">
       <MemberSignature Language="C#" Value="public void Dispose ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void Dispose() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -130,6 +136,7 @@
     </Member>
     <Member MemberName="Foo">
       <MemberSignature Language="C#" Value="public System.Collections.Generic.KeyValuePair<System.Collections.Generic.IEnumerable<A>,System.Collections.Generic.IEnumerable<B>> Foo ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance valuetype System.Collections.Generic.KeyValuePair`2<class System.Collections.Generic.IEnumerable`1<!A>, class System.Collections.Generic.IEnumerable`1<!B>> Foo() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -146,6 +153,7 @@
     </Member>
     <Member MemberName="GetEnumerator">
       <MemberSignature Language="C#" Value="public System.Collections.Generic.List<A>.Enumerator GetEnumerator ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance valuetype System.Collections.Generic.List`1/Enumerator<!A> GetEnumerator() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -163,6 +171,7 @@
     </Member>
     <Member MemberName="Mono.DocTest.Generic.IFoo<A>.Method<U>">
       <MemberSignature Language="C#" Value="A IFoo<A>.Method<U> (A a, U u);" />
+      <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance !A Mono.DocTest.Generic.IFoo<A>.Method<U>(!A a, !!U u) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -188,6 +197,7 @@
     </Member>
     <Member MemberName="MoveNext">
       <MemberSignature Language="C#" Value="public bool MoveNext ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance bool MoveNext() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -207,6 +217,7 @@
     </Member>
     <Member MemberName="Reset">
       <MemberSignature Language="C#" Value="public void Reset ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void Reset() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -223,6 +234,7 @@
     </Member>
     <Member MemberName="System.Collections.Generic.ICollection<A>.Add">
       <MemberSignature Language="C#" Value="void ICollection<A>.Add (A item);" />
+      <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance void System.Collections.Generic.ICollection<A>.Add(!A item) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -241,6 +253,7 @@
     </Member>
     <Member MemberName="System.Collections.Generic.ICollection<A>.Clear">
       <MemberSignature Language="C#" Value="void ICollection<A>.Clear ();" />
+      <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance void System.Collections.Generic.ICollection<A>.Clear() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -256,6 +269,7 @@
     </Member>
     <Member MemberName="System.Collections.Generic.ICollection<A>.Contains">
       <MemberSignature Language="C#" Value="bool ICollection<A>.Contains (A item);" />
+      <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance bool System.Collections.Generic.ICollection<A>.Contains(!A item) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -275,6 +289,7 @@
     </Member>
     <Member MemberName="System.Collections.Generic.ICollection<A>.IsReadOnly">
       <MemberSignature Language="C#" Value="bool System.Collections.Generic.ICollection<A>.IsReadOnly { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool System.Collections.Generic.ICollection<A>.IsReadOnly" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -290,6 +305,7 @@
     </Member>
     <Member MemberName="System.Collections.Generic.ICollection<A>.Remove">
       <MemberSignature Language="C#" Value="bool ICollection<A>.Remove (A item);" />
+      <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance bool System.Collections.Generic.ICollection<A>.Remove(!A item) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -309,6 +325,7 @@
     </Member>
     <Member MemberName="System.Collections.Generic.IEnumerable<A>.GetEnumerator">
       <MemberSignature Language="C#" Value="System.Collections.Generic.IEnumerator<A> IEnumerable<A>.GetEnumerator ();" />
+      <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance class System.Collections.Generic.IEnumerator`1<!A> System.Collections.Generic.IEnumerable<A>.GetEnumerator() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -325,6 +342,7 @@
     </Member>
     <Member MemberName="System.Collections.Generic.IEnumerator<A>.Current">
       <MemberSignature Language="C#" Value="A System.Collections.Generic.IEnumerator<A>.Current { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance !A System.Collections.Generic.IEnumerator<A>.Current" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -340,6 +358,7 @@
     </Member>
     <Member MemberName="System.Collections.IEnumerable.GetEnumerator">
       <MemberSignature Language="C#" Value="System.Collections.IEnumerator IEnumerable.GetEnumerator ();" />
+      <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance class System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -357,6 +376,7 @@
     </Member>
     <Member MemberName="System.Collections.IEnumerator.Current">
       <MemberSignature Language="C#" Value="object System.Collections.IEnumerator.Current { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance object System.Collections.IEnumerator.Current" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/Color.xml b/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/Color.xml
index 9702a77..6025216 100644
--- a/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/Color.xml
+++ b/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/Color.xml
@@ -1,5 +1,6 @@
 <Type Name="Color" FullName="Mono.DocTest.Color">
   <TypeSignature Language="C#" Value="public enum Color" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed Color extends System.Enum" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -17,6 +18,7 @@
   <Members>
     <Member MemberName="AnotherGreen">
       <MemberSignature Language="C#" Value="AnotherGreen" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.DocTest.Color AnotherGreen = int32(2)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -30,6 +32,7 @@
     </Member>
     <Member MemberName="Blue">
       <MemberSignature Language="C#" Value="Blue" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.DocTest.Color Blue = int32(1)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -45,6 +48,7 @@
     </Member>
     <Member MemberName="Green">
       <MemberSignature Language="C#" Value="Green" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.DocTest.Color Green = int32(2)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -60,6 +64,7 @@
     </Member>
     <Member MemberName="Red">
       <MemberSignature Language="C#" Value="Red" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.DocTest.Color Red = int32(0)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/DocAttribute.xml b/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/DocAttribute.xml
index 7a22870..caccb75 100644
--- a/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/DocAttribute.xml
+++ b/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/DocAttribute.xml
@@ -1,5 +1,6 @@
 <Type Name="DocAttribute" FullName="Mono.DocTest.DocAttribute">
   <TypeSignature Language="C#" Value="public class DocAttribute : Attribute" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit DocAttribute extends System.Attribute" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -38,6 +39,7 @@ class Example {
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public DocAttribute (string docs);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(string docs) cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -56,6 +58,7 @@ class Example {
     </Member>
     <Member MemberName="Field">
       <MemberSignature Language="C#" Value="public bool Field;" />
+      <MemberSignature Language="ILAsm" Value=".field public bool Field" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -72,6 +75,7 @@ class Example {
     </Member>
     <Member MemberName="FlagsEnum">
       <MemberSignature Language="C#" Value="public ConsoleModifiers FlagsEnum;" />
+      <MemberSignature Language="ILAsm" Value=".field public valuetype System.ConsoleModifiers FlagsEnum" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -88,6 +92,7 @@ class Example {
     </Member>
     <Member MemberName="NonFlagsEnum">
       <MemberSignature Language="C#" Value="public Mono.DocTest.Color NonFlagsEnum;" />
+      <MemberSignature Language="ILAsm" Value=".field public valuetype Mono.DocTest.Color NonFlagsEnum" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -104,6 +109,7 @@ class Example {
     </Member>
     <Member MemberName="Property">
       <MemberSignature Language="C#" Value="public Type Property { set; get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class System.Type Property" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/DocValueType.xml b/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/DocValueType.xml
index e8a82e4..42c429c 100644
--- a/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/DocValueType.xml
+++ b/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/DocValueType.xml
@@ -1,5 +1,6 @@
 <Type Name="DocValueType" FullName="Mono.DocTest.DocValueType">
   <TypeSignature Language="C#" Value="public struct DocValueType : Mono.DocTest.IProcess" />
+  <TypeSignature Language="ILAsm" Value=".class public sequential ansi sealed beforefieldinit DocValueType extends System.ValueType implements class Mono.DocTest.IProcess" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -20,6 +21,7 @@
   <Members>
     <Member MemberName="M">
       <MemberSignature Language="C#" Value="public void M (int i);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void M(int32 i) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -41,6 +43,7 @@
     </Member>
     <Member MemberName="total">
       <MemberSignature Language="C#" Value="public int total;" />
+      <MemberSignature Language="ILAsm" Value=".field public int32 total" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/IProcess.xml b/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/IProcess.xml
index a63b5ba..6140cff 100644
--- a/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/IProcess.xml
+++ b/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/IProcess.xml
@@ -1,5 +1,6 @@
 <Type Name="IProcess" FullName="Mono.DocTest.IProcess">
   <TypeSignature Language="C#" Value="public interface IProcess" />
+  <TypeSignature Language="ILAsm" Value=".class public interface auto ansi abstract IProcess" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/UseLists.xml b/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/UseLists.xml
index a05b4fa..983cf0f 100644
--- a/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/UseLists.xml
+++ b/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/UseLists.xml
@@ -1,5 +1,6 @@
 <Type Name="UseLists" FullName="Mono.DocTest.UseLists">
   <TypeSignature Language="C#" Value="public class UseLists" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit UseLists extends System.Object" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -16,6 +17,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public UseLists ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -28,6 +30,7 @@
     </Member>
     <Member MemberName="GetValues<T>">
       <MemberSignature Language="C#" Value="public Mono.DocTest.Generic.MyList<T> GetValues<T> (T value) where T : struct;" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.DocTest.Generic.MyList`1<!!T> GetValues<struct .ctor (class System.ValueType) T>(!!T value) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -58,6 +61,7 @@
     </Member>
     <Member MemberName="Process">
       <MemberSignature Language="C#" Value="public void Process (Mono.DocTest.Generic.MyList<int> list);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Process(class Mono.DocTest.Generic.MyList`1<int32> list) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -77,6 +81,7 @@
     </Member>
     <Member MemberName="Process">
       <MemberSignature Language="C#" Value="public void Process (System.Collections.Generic.List<int> list);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Process(class System.Collections.Generic.List`1<int32> list) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -102,6 +107,7 @@
     </Member>
     <Member MemberName="Process">
       <MemberSignature Language="C#" Value="public void Process (System.Collections.Generic.List<Predicate<int>> list);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Process(class System.Collections.Generic.List`1<class System.Predicate`1<int32>> list) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -123,6 +129,7 @@
     </Member>
     <Member MemberName="Process<T>">
       <MemberSignature Language="C#" Value="public void Process<T> (System.Collections.Generic.List<Predicate<T>> list);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Process<T>(class System.Collections.Generic.List`1<class System.Predicate`1<!!T>> list) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -148,6 +155,7 @@
     </Member>
     <Member MemberName="UseHelper<T,U,V>">
       <MemberSignature Language="C#" Value="public void UseHelper<T,U,V> (Mono.DocTest.Generic.MyList<T>.Helper<U,V> helper);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void UseHelper<T, U, V>(class Mono.DocTest.Generic.MyList`1/Helper`2<!!T, !!U, !!V> helper) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/Widget+Del.xml b/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/Widget+Del.xml
index d2a9ac4..ce0c939 100644
--- a/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/Widget+Del.xml
+++ b/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/Widget+Del.xml
@@ -1,5 +1,6 @@
 <Type Name="Widget+Del" FullName="Mono.DocTest.Widget+Del">
   <TypeSignature Language="C#" Value="public delegate void Widget.Del(int i);" />
+  <TypeSignature Language="ILAsm" Value=".class nested public auto ansi sealed Widget/Del extends System.MulticastDelegate" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/Widget+Direction.xml b/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/Widget+Direction.xml
index 3de3419..9f9df0a 100644
--- a/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/Widget+Direction.xml
+++ b/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/Widget+Direction.xml
@@ -1,5 +1,6 @@
 <Type Name="Widget+Direction" FullName="Mono.DocTest.Widget+Direction">
   <TypeSignature Language="C#" Value="public enum Widget.Direction" />
+  <TypeSignature Language="ILAsm" Value=".class nested public auto ansi sealed Widget/Direction extends System.Enum" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -20,6 +21,7 @@
   <Members>
     <Member MemberName="East">
       <MemberSignature Language="C#" Value="East" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.DocTest.Widget/Direction East = int32(2)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -35,6 +37,7 @@
     </Member>
     <Member MemberName="North">
       <MemberSignature Language="C#" Value="North" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.DocTest.Widget/Direction North = int32(0)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -50,6 +53,7 @@
     </Member>
     <Member MemberName="South">
       <MemberSignature Language="C#" Value="South" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.DocTest.Widget/Direction South = int32(1)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -65,6 +69,7 @@
     </Member>
     <Member MemberName="West">
       <MemberSignature Language="C#" Value="West" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.DocTest.Widget/Direction West = int32(3)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/Widget+IMenuItem.xml b/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/Widget+IMenuItem.xml
index e996959..31d5027 100644
--- a/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/Widget+IMenuItem.xml
+++ b/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/Widget+IMenuItem.xml
@@ -1,5 +1,6 @@
 <Type Name="Widget+IMenuItem" FullName="Mono.DocTest.Widget+IMenuItem">
   <TypeSignature Language="C#" Value="public interface Widget.IMenuItem" />
+  <TypeSignature Language="ILAsm" Value=".class nested public interface auto ansi abstract Widget/IMenuItem" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -13,6 +14,7 @@
   <Members>
     <Member MemberName="A">
       <MemberSignature Language="C#" Value="public void A ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void A() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -29,6 +31,7 @@
     </Member>
     <Member MemberName="B">
       <MemberSignature Language="C#" Value="public int B { set; get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance int32 B" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/Widget+NestedClass+Double+Triple+Quadruple.xml b/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/Widget+NestedClass+Double+Triple+Quadruple.xml
index e0347f4..57f8f61 100644
--- a/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/Widget+NestedClass+Double+Triple+Quadruple.xml
+++ b/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/Widget+NestedClass+Double+Triple+Quadruple.xml
@@ -1,5 +1,6 @@
 <Type Name="Widget+NestedClass+Double+Triple+Quadruple" FullName="Mono.DocTest.Widget+NestedClass+Double+Triple+Quadruple">
   <TypeSignature Language="C#" Value="public class Widget.NestedClass.Double.Triple.Quadruple" />
+  <TypeSignature Language="ILAsm" Value=".class nested public auto ansi beforefieldinit Widget/NestedClass/Double/Triple/Quadruple extends System.Object" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -16,6 +17,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public Quadruple ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/Widget+NestedClass+Double+Triple.xml b/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/Widget+NestedClass+Double+Triple.xml
index 39ad226..a7ec96c 100644
--- a/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/Widget+NestedClass+Double+Triple.xml
+++ b/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/Widget+NestedClass+Double+Triple.xml
@@ -1,5 +1,6 @@
 <Type Name="Widget+NestedClass+Double+Triple" FullName="Mono.DocTest.Widget+NestedClass+Double+Triple">
   <TypeSignature Language="C#" Value="public class Widget.NestedClass.Double.Triple" />
+  <TypeSignature Language="ILAsm" Value=".class nested public auto ansi beforefieldinit Widget/NestedClass/Double/Triple extends System.Object" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -16,6 +17,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public Triple ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/Widget+NestedClass+Double.xml b/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/Widget+NestedClass+Double.xml
index 69e33cc..4f995ec 100644
--- a/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/Widget+NestedClass+Double.xml
+++ b/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/Widget+NestedClass+Double.xml
@@ -1,5 +1,6 @@
 <Type Name="Widget+NestedClass+Double" FullName="Mono.DocTest.Widget+NestedClass+Double">
   <TypeSignature Language="C#" Value="public class Widget.NestedClass.Double" />
+  <TypeSignature Language="ILAsm" Value=".class nested public auto ansi beforefieldinit Widget/NestedClass/Double extends System.Object" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -16,6 +17,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public Double ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/Widget+NestedClass.xml b/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/Widget+NestedClass.xml
index 9bf17ce..1f9fc86 100644
--- a/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/Widget+NestedClass.xml
+++ b/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/Widget+NestedClass.xml
@@ -1,5 +1,6 @@
 <Type Name="Widget+NestedClass" FullName="Mono.DocTest.Widget+NestedClass">
   <TypeSignature Language="C#" Value="public class Widget.NestedClass" />
+  <TypeSignature Language="ILAsm" Value=".class nested public auto ansi beforefieldinit Widget/NestedClass extends System.Object" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -16,6 +17,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public NestedClass ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -28,6 +30,7 @@
     </Member>
     <Member MemberName="M">
       <MemberSignature Language="C#" Value="public void M (int i);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void M(int32 i) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -47,6 +50,7 @@
     </Member>
     <Member MemberName="value">
       <MemberSignature Language="C#" Value="public int value;" />
+      <MemberSignature Language="ILAsm" Value=".field public int32 value" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/Widget+NestedClass`1.xml b/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/Widget+NestedClass`1.xml
index 8866961..69bf681 100644
--- a/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/Widget+NestedClass`1.xml
+++ b/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/Widget+NestedClass`1.xml
@@ -1,5 +1,6 @@
 <Type Name="Widget+NestedClass<T>" FullName="Mono.DocTest.Widget+NestedClass<T>">
   <TypeSignature Language="C#" Value="public class Widget.NestedClass<T>" />
+  <TypeSignature Language="ILAsm" Value=".class nested public auto ansi beforefieldinit Widget/NestedClass`1<T> extends System.Object" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -20,6 +21,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public NestedClass ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -32,6 +34,7 @@
     </Member>
     <Member MemberName="M">
       <MemberSignature Language="C#" Value="public void M (int i);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void M(int32 i) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -51,6 +54,7 @@
     </Member>
     <Member MemberName="value">
       <MemberSignature Language="C#" Value="public int value;" />
+      <MemberSignature Language="ILAsm" Value=".field public int32 value" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/Widget.xml b/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/Widget.xml
index 45cbc76..4eddaba 100644
--- a/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/Widget.xml
+++ b/mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/Widget.xml
@@ -1,5 +1,6 @@
 <Type Name="Widget" FullName="Mono.DocTest.Widget">
   <TypeSignature Language="C#" Value="public class Widget : Mono.DocTest.IProcess" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit Widget extends System.Object implements class Mono.DocTest.IProcess" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -22,6 +23,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public Widget ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -45,6 +47,7 @@
     </Member>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public Widget (Converter<string,string> c);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(class System.Converter`2<string, string> c) cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -63,6 +66,7 @@
     </Member>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public Widget (string s);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(string s) cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -83,6 +87,7 @@
     </Member>
     <Member MemberName="AnEvent">
       <MemberSignature Language="C#" Value="public event Mono.DocTest.Widget.Del AnEvent;" />
+      <MemberSignature Language="ILAsm" Value=".event class Mono.DocTest.Widget/Del AnEvent" />
       <MemberType>Event</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -109,6 +114,7 @@
     </Member>
     <Member MemberName="AnotherEvent">
       <MemberSignature Language="C#" Value="protected event Mono.DocTest.Widget.Del AnotherEvent;" />
+      <MemberSignature Language="ILAsm" Value=".event class Mono.DocTest.Widget/Del AnotherEvent" />
       <MemberType>Event</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -126,6 +132,7 @@
     </Member>
     <Member MemberName="array1">
       <MemberSignature Language="C#" Value="public long[] array1;" />
+      <MemberSignature Language="ILAsm" Value=".field public int64[] array1" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -141,6 +148,7 @@
     </Member>
     <Member MemberName="array2">
       <MemberSignature Language="C#" Value="public Mono.DocTest.Widget[,] array2;" />
+      <MemberSignature Language="ILAsm" Value=".field public class Mono.DocTest.Widget[,] array2" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -156,6 +164,7 @@
     </Member>
     <Member MemberName="classCtorError">
       <MemberSignature Language="C#" Value="public static readonly string[] classCtorError;" />
+      <MemberSignature Language="ILAsm" Value=".field public static initonly string[] classCtorError" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -171,6 +180,7 @@
     </Member>
     <Member MemberName="defaultColor">
       <MemberSignature Language="C#" Value="protected static Mono.DocTest.Color defaultColor;" />
+      <MemberSignature Language="ILAsm" Value=".field family static valuetype Mono.DocTest.Color defaultColor" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -186,6 +196,7 @@
     </Member>
     <Member MemberName="Height">
       <MemberSignature Language="C#" Value="protected long Height { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance int64 Height" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -207,6 +218,7 @@
     </Member>
     <Member MemberName="Item">
       <MemberSignature Language="C#" Value="public int this[int i] { set; get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance int32 Item(int32)" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -235,6 +247,7 @@
     </Member>
     <Member MemberName="Item">
       <MemberSignature Language="C#" Value="public int this[string s, int i] { set; get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance int32 Item(string, int32)" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -257,6 +270,7 @@
     </Member>
     <Member MemberName="M0">
       <MemberSignature Language="C#" Value="public static void M0 ();" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig void M0() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -273,6 +287,7 @@
     </Member>
     <Member MemberName="M1">
       <MemberSignature Language="C#" Value="public void M1 (char c, out float f, ref Mono.DocTest.DocValueType v);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void M1(char c, float32 f, valuetype Mono.DocTest.DocValueType v) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -324,6 +339,7 @@
     </Member>
     <Member MemberName="M2">
       <MemberSignature Language="C#" Value="public void M2 (short[] x1, int[,] x2, long[][] x3);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void M2(int16[] x1, int32[,] x2, int64[][] x3) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -347,6 +363,7 @@
     </Member>
     <Member MemberName="M3">
       <MemberSignature Language="C#" Value="protected void M3 (long[][] x3, Mono.DocTest.Widget[,,][] x4);" />
+      <MemberSignature Language="ILAsm" Value=".method familyhidebysig instance void M3(int64[][] x3, class Mono.DocTest.Widget[,,][] x4) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -368,6 +385,7 @@
     </Member>
     <Member MemberName="M4">
       <MemberSignature Language="C#" Value="protected void M4 (char* pc, Mono.DocTest.Color** ppf);" />
+      <MemberSignature Language="ILAsm" Value=".method familyhidebysig instance void M4(char* pc, valuetype Mono.DocTest.Color** ppf) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -389,6 +407,7 @@
     </Member>
     <Member MemberName="M5">
       <MemberSignature Language="C#" Value="protected void M5 (void* pv, double*[,][] pd);" />
+      <MemberSignature Language="ILAsm" Value=".method familyhidebysig instance void M5(void* pv, float64*[,][] pd) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -410,6 +429,7 @@
     </Member>
     <Member MemberName="M6">
       <MemberSignature Language="C#" Value="protected void M6 (int i, object[] args);" />
+      <MemberSignature Language="ILAsm" Value=".method familyhidebysig instance void M6(int32 i, object[] args) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -437,6 +457,7 @@
     </Member>
     <Member MemberName="M7">
       <MemberSignature Language="C#" Value="public void M7 (Mono.DocTest.Widget.NestedClass.Double.Triple.Quadruple a);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void M7(class Mono.DocTest.Widget/NestedClass/Double/Triple/Quadruple a) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -456,6 +477,7 @@
     </Member>
     <Member MemberName="message">
       <MemberSignature Language="C#" Value="public string message;" />
+      <MemberSignature Language="ILAsm" Value=".field public string message" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -471,6 +493,7 @@
     </Member>
     <Member MemberName="monthlyAverage">
       <MemberSignature Language="C#" Value="protected readonly double monthlyAverage;" />
+      <MemberSignature Language="ILAsm" Value=".field familyorassembly initonly float64 monthlyAverage" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -486,6 +509,7 @@
     </Member>
     <Member MemberName="op_Addition">
       <MemberSignature Language="C#" Value="public static Mono.DocTest.Widget op_Addition (Mono.DocTest.Widget x1, Mono.DocTest.Widget x2);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig specialname class Mono.DocTest.Widget op_Addition(class Mono.DocTest.Widget x1, class Mono.DocTest.Widget x2) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -508,6 +532,7 @@
     </Member>
     <Member MemberName="op_Explicit">
       <MemberSignature Language="C#" Value="public static int op_Explicit (Mono.DocTest.Widget x);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig specialname int32 op_Explicit(class Mono.DocTest.Widget x) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -529,6 +554,7 @@
     </Member>
     <Member MemberName="op_Implicit">
       <MemberSignature Language="C#" Value="public static long op_Implicit (Mono.DocTest.Widget x);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig specialname int64 op_Implicit(class Mono.DocTest.Widget x) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -550,6 +576,7 @@
     </Member>
     <Member MemberName="op_UnaryPlus">
       <MemberSignature Language="C#" Value="public static Mono.DocTest.Widget op_UnaryPlus (Mono.DocTest.Widget x);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig specialname class Mono.DocTest.Widget op_UnaryPlus(class Mono.DocTest.Widget x) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -570,6 +597,7 @@
     </Member>
     <Member MemberName="pCount">
       <MemberSignature Language="C#" Value="public int* pCount;" />
+      <MemberSignature Language="ILAsm" Value=".field public int32* pCount" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -585,6 +613,7 @@
     </Member>
     <Member MemberName="PI">
       <MemberSignature Language="C#" Value="protected const double PI = 3.14159;" />
+      <MemberSignature Language="ILAsm" Value=".field familyorassembly static literal float64 PI = (3.14159)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -601,6 +630,7 @@
     </Member>
     <Member MemberName="ppValues">
       <MemberSignature Language="C#" Value="public float** ppValues;" />
+      <MemberSignature Language="ILAsm" Value=".field public float32** ppValues" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -616,6 +646,7 @@
     </Member>
     <Member MemberName="Width">
       <MemberSignature Language="C#" Value="public int Width { protected set; get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance int32 Width" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -643,6 +674,7 @@
     </Member>
     <Member MemberName="X">
       <MemberSignature Language="C#" Value="protected short X { set; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance int16 X" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -659,6 +691,7 @@
     </Member>
     <Member MemberName="Y">
       <MemberSignature Language="C#" Value="protected double Y { set; get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance float64 Y" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.importslashdoc/NoNamespace.xml b/mcs/tools/mdoc/Test/en.expected.importslashdoc/NoNamespace.xml
index 943e75d..29b4a72 100644
--- a/mcs/tools/mdoc/Test/en.expected.importslashdoc/NoNamespace.xml
+++ b/mcs/tools/mdoc/Test/en.expected.importslashdoc/NoNamespace.xml
@@ -1,5 +1,6 @@
 <Type Name="NoNamespace" FullName="NoNamespace">
   <TypeSignature Language="C#" Value="public class NoNamespace" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit NoNamespace extends System.Object" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -17,6 +18,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public NoNamespace ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.importslashdoc/System/Action`1.xml b/mcs/tools/mdoc/Test/en.expected.importslashdoc/System/Action`1.xml
index 3289436..f4e73d3 100644
--- a/mcs/tools/mdoc/Test/en.expected.importslashdoc/System/Action`1.xml
+++ b/mcs/tools/mdoc/Test/en.expected.importslashdoc/System/Action`1.xml
@@ -1,5 +1,6 @@
 <Type Name="Action<T>" FullName="System.Action<T>">
   <TypeSignature Language="C#" Value="public delegate void Action<T>(T obj);" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed Action`1<T> extends System.MulticastDelegate" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.importslashdoc/System/Array.xml b/mcs/tools/mdoc/Test/en.expected.importslashdoc/System/Array.xml
index c18c5df..2965a7f 100644
--- a/mcs/tools/mdoc/Test/en.expected.importslashdoc/System/Array.xml
+++ b/mcs/tools/mdoc/Test/en.expected.importslashdoc/System/Array.xml
@@ -1,5 +1,6 @@
 <Type Name="Array" FullName="System.Array">
   <TypeSignature Language="C#" Value="public class Array" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit Array extends System.Object" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -15,6 +16,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public Array ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -27,6 +29,7 @@
     </Member>
     <Member MemberName="AsReadOnly<T>">
       <MemberSignature Language="C#" Value="public static System.Collections.ObjectModel.ReadOnlyCollection<T> AsReadOnly<T> (T[] array);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig class System.Collections.ObjectModel.ReadOnlyCollection`1<!!T> AsReadOnly<T>(!!T[] array) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -51,6 +54,7 @@
     </Member>
     <Member MemberName="ConvertAll<TInput,TOutput>">
       <MemberSignature Language="C#" Value="public static TOutput[] ConvertAll<TInput,TOutput> (TInput[] array, Converter<TInput,TOutput> converter);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig !!TOutput[] ConvertAll<TInput, TOutput>(!!TInput[] array, class System.Converter`2<!!TInput, !!TOutput> converter) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -79,6 +83,7 @@
     </Member>
     <Member MemberName="Resize<T>">
       <MemberSignature Language="C#" Value="public static void Resize<T> (ref T[] array, int newSize);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig void Resize<T>(!!T[] array, int32 newSize) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.importslashdoc/System/AsyncCallback.xml b/mcs/tools/mdoc/Test/en.expected.importslashdoc/System/AsyncCallback.xml
index 92d8dcf..deb06e9 100644
--- a/mcs/tools/mdoc/Test/en.expected.importslashdoc/System/AsyncCallback.xml
+++ b/mcs/tools/mdoc/Test/en.expected.importslashdoc/System/AsyncCallback.xml
@@ -1,5 +1,6 @@
 <Type Name="AsyncCallback" FullName="System.AsyncCallback">
   <TypeSignature Language="C#" Value="public delegate void AsyncCallback(IAsyncResult ar);" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed AsyncCallback extends System.MulticastDelegate" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.importslashdoc/System/Environment+SpecialFolder.xml b/mcs/tools/mdoc/Test/en.expected.importslashdoc/System/Environment+SpecialFolder.xml
index aeaedcd..1638524 100644
--- a/mcs/tools/mdoc/Test/en.expected.importslashdoc/System/Environment+SpecialFolder.xml
+++ b/mcs/tools/mdoc/Test/en.expected.importslashdoc/System/Environment+SpecialFolder.xml
@@ -1,5 +1,6 @@
 <Type Name="Environment+SpecialFolder" FullName="System.Environment+SpecialFolder">
   <TypeSignature Language="C#" Value="public enum Environment.SpecialFolder" />
+  <TypeSignature Language="ILAsm" Value=".class nested public auto ansi sealed Environment/SpecialFolder extends System.Enum" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.importslashdoc/System/Environment.xml b/mcs/tools/mdoc/Test/en.expected.importslashdoc/System/Environment.xml
index 932bb61..0a1b940 100644
--- a/mcs/tools/mdoc/Test/en.expected.importslashdoc/System/Environment.xml
+++ b/mcs/tools/mdoc/Test/en.expected.importslashdoc/System/Environment.xml
@@ -1,5 +1,6 @@
 <Type Name="Environment" FullName="System.Environment">
   <TypeSignature Language="C#" Value="public static class Environment" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi abstract sealed beforefieldinit Environment extends System.Object" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -17,6 +18,7 @@
   <Members>
     <Member MemberName="GetFolderPath">
       <MemberSignature Language="C#" Value="public static string GetFolderPath (Environment.SpecialFolder folder);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig string GetFolderPath(valuetype System.Environment/SpecialFolder folder) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.importslashdoc/index.xml b/mcs/tools/mdoc/Test/en.expected.importslashdoc/index.xml
index b1d4401..ffc3964 100644
--- a/mcs/tools/mdoc/Test/en.expected.importslashdoc/index.xml
+++ b/mcs/tools/mdoc/Test/en.expected.importslashdoc/index.xml
@@ -58,6 +58,7 @@
       </Targets>
       <Member MemberName="Bar<T>">
         <MemberSignature Language="C#" Value="public static void Bar<T> (this Mono.DocTest.Generic.IFoo<T> self, string s);" />
+        <MemberSignature Language="ILAsm" Value=".method public static hidebysig void Bar<T>(class Mono.DocTest.Generic.IFoo`1<!!T> self, string s) cil managed" />
         <MemberType>ExtensionMethod</MemberType>
         <ReturnValue>
           <ReturnType>System.Void</ReturnType>
@@ -85,6 +86,7 @@
       </Targets>
       <Member MemberName="ForEach<T>">
         <MemberSignature Language="C#" Value="public static void ForEach<T> (this System.Collections.Generic.IEnumerable<T> self, Action<T> a);" />
+        <MemberSignature Language="ILAsm" Value=".method public static hidebysig void ForEach<T>(class System.Collections.Generic.IEnumerable`1<!!T> self, class System.Action`1<!!T> a) cil managed" />
         <MemberType>ExtensionMethod</MemberType>
         <ReturnValue>
           <ReturnType>System.Void</ReturnType>
@@ -112,6 +114,7 @@
       </Targets>
       <Member MemberName="ToDouble">
         <MemberSignature Language="C#" Value="public static System.Collections.Generic.IEnumerable<double> ToDouble (this System.Collections.Generic.IEnumerable<int> list);" />
+        <MemberSignature Language="ILAsm" Value=".method public static hidebysig class System.Collections.Generic.IEnumerable`1<float64> ToDouble(class System.Collections.Generic.IEnumerable`1<int32> list) cil managed" />
         <MemberType>ExtensionMethod</MemberType>
         <ReturnValue>
           <ReturnType>System.Collections.Generic.IEnumerable<System.Double></ReturnType>
@@ -135,6 +138,7 @@
       </Targets>
       <Member MemberName="ToDouble<T>">
         <MemberSignature Language="C#" Value="public static double ToDouble<T> (this T val) where T : Mono.DocTest.Generic.IFoo<T>;" />
+        <MemberSignature Language="ILAsm" Value=".method public static hidebysig float64 ToDouble<(class Mono.DocTest.Generic.IFoo`1<!!T>) T>(!!T val) cil managed" />
         <MemberType>ExtensionMethod</MemberType>
         <ReturnValue>
           <ReturnType>System.Double</ReturnType>
@@ -165,6 +169,7 @@
       </Targets>
       <Member MemberName="ToEnumerable<T>">
         <MemberSignature Language="C#" Value="public static System.Collections.Generic.IEnumerable<T> ToEnumerable<T> (this T self);" />
+        <MemberSignature Language="ILAsm" Value=".method public static hidebysig class System.Collections.Generic.IEnumerable`1<!!T> ToEnumerable<T>(!!T self) cil managed" />
         <MemberType>ExtensionMethod</MemberType>
         <ReturnValue>
           <ReturnType>System.Collections.Generic.IEnumerable<T></ReturnType>
diff --git a/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest.Generic/Extensions.xml b/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest.Generic/Extensions.xml
index 5baa170..90164c9 100644
--- a/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest.Generic/Extensions.xml
+++ b/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest.Generic/Extensions.xml
@@ -1,5 +1,6 @@
 <Type Name="Extensions" FullName="Mono.DocTest.Generic.Extensions">
   <TypeSignature Language="C#" Value="public static class Extensions" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi abstract sealed beforefieldinit Extensions extends System.Object" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -16,6 +17,7 @@
   <Members>
     <Member MemberName="Bar<T>">
       <MemberSignature Language="C#" Value="public static void Bar<T> (this Mono.DocTest.Generic.IFoo<T> self, string s);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig void Bar<T>(class Mono.DocTest.Generic.IFoo`1<!!T> self, string s) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -41,6 +43,7 @@
     </Member>
     <Member MemberName="ForEach<T>">
       <MemberSignature Language="C#" Value="public static void ForEach<T> (this System.Collections.Generic.IEnumerable<T> self, Action<T> a);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig void ForEach<T>(class System.Collections.Generic.IEnumerable`1<!!T> self, class System.Action`1<!!T> a) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -66,6 +69,7 @@
     </Member>
     <Member MemberName="ToDouble">
       <MemberSignature Language="C#" Value="public static System.Collections.Generic.IEnumerable<double> ToDouble (this System.Collections.Generic.IEnumerable<int> list);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig class System.Collections.Generic.IEnumerable`1<float64> ToDouble(class System.Collections.Generic.IEnumerable`1<int32> list) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -86,6 +90,7 @@
     </Member>
     <Member MemberName="ToDouble<T>">
       <MemberSignature Language="C#" Value="public static double ToDouble<T> (this T val) where T : Mono.DocTest.Generic.IFoo<T>;" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig float64 ToDouble<(class Mono.DocTest.Generic.IFoo`1<!!T>) T>(!!T val) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -114,6 +119,7 @@
     </Member>
     <Member MemberName="ToEnumerable<T>">
       <MemberSignature Language="C#" Value="public static System.Collections.Generic.IEnumerable<T> ToEnumerable<T> (this T self);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig class System.Collections.Generic.IEnumerable`1<!!T> ToEnumerable<T>(!!T self) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest.Generic/Func`2.xml b/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest.Generic/Func`2.xml
index cfa836a..a272ffa 100644
--- a/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest.Generic/Func`2.xml
+++ b/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest.Generic/Func`2.xml
@@ -1,5 +1,6 @@
 <Type Name="Func<TArg,TRet>" FullName="Mono.DocTest.Generic.Func<TArg,TRet>">
   <TypeSignature Language="C#" Value="public delegate TRet Func<TArg,TRet>(TArg a) where TArg : Exception;" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed Func`2<(class System.Exception) TArg, TRet> extends System.MulticastDelegate" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -54,7 +55,7 @@
     <typeparam name="TRet">To be added.</typeparam>
     <param name="a">To be added.</param>
     <summary>To be added.</summary>
-    <value>To be added.</value>
+    <returns>To be added.</returns>
     <remarks>To be added.</remarks>
   </Docs>
 </Type>
diff --git a/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest.Generic/GenericBase`1+FooEventArgs.xml b/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest.Generic/GenericBase`1+FooEventArgs.xml
index 12b6614..f8de1b0 100644
--- a/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest.Generic/GenericBase`1+FooEventArgs.xml
+++ b/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest.Generic/GenericBase`1+FooEventArgs.xml
@@ -1,5 +1,6 @@
 <Type Name="GenericBase<U>+FooEventArgs" FullName="Mono.DocTest.Generic.GenericBase<U>+FooEventArgs">
   <TypeSignature Language="C#" Value="public class GenericBase<U>.FooEventArgs : EventArgs" />
+  <TypeSignature Language="ILAsm" Value=".class nested public auto ansi beforefieldinit GenericBase`1/FooEventArgs<U> extends System.EventArgs" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -19,6 +20,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public FooEventArgs ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest.Generic/GenericBase`1+NestedCollection+Enumerator.xml b/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest.Generic/GenericBase`1+NestedCollection+Enumerator.xml
index 51bfdf8..843ade5 100644
--- a/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest.Generic/GenericBase`1+NestedCollection+Enumerator.xml
+++ b/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest.Generic/GenericBase`1+NestedCollection+Enumerator.xml
@@ -1,5 +1,6 @@
 <Type Name="GenericBase<U>+NestedCollection+Enumerator" FullName="Mono.DocTest.Generic.GenericBase<U>+NestedCollection+Enumerator">
   <TypeSignature Language="C#" Value="public struct GenericBase<U>.NestedCollection.Enumerator" />
+  <TypeSignature Language="ILAsm" Value=".class nested public sequential ansi sealed beforefieldinit GenericBase`1/NestedCollection/Enumerator<U> extends System.ValueType" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest.Generic/GenericBase`1+NestedCollection.xml b/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest.Generic/GenericBase`1+NestedCollection.xml
index f1425b1..5cd7a7e 100644
--- a/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest.Generic/GenericBase`1+NestedCollection.xml
+++ b/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest.Generic/GenericBase`1+NestedCollection.xml
@@ -1,5 +1,6 @@
 <Type Name="GenericBase<U>+NestedCollection" FullName="Mono.DocTest.Generic.GenericBase<U>+NestedCollection">
   <TypeSignature Language="C#" Value="public class GenericBase<U>.NestedCollection" />
+  <TypeSignature Language="ILAsm" Value=".class nested public auto ansi beforefieldinit GenericBase`1/NestedCollection<U> extends System.Object" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -19,6 +20,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public NestedCollection ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest.Generic/GenericBase`1.xml b/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest.Generic/GenericBase`1.xml
index 7810213..c828381 100644
--- a/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest.Generic/GenericBase`1.xml
+++ b/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest.Generic/GenericBase`1.xml
@@ -1,5 +1,6 @@
 <Type Name="GenericBase<U>" FullName="Mono.DocTest.Generic.GenericBase<U>">
   <TypeSignature Language="C#" Value="public class GenericBase<U>" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit GenericBase`1<U> extends System.Object" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -20,6 +21,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public GenericBase ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -33,6 +35,7 @@
     </Member>
     <Member MemberName="AddedInVersion0_1_0_0">
       <MemberSignature Language="C#" Value="public void AddedInVersion0_1_0_0 ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void AddedInVersion0_1_0_0() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>2.0.0.0</AssemblyVersion>
@@ -49,6 +52,7 @@
     </Member>
     <Member MemberName="BaseMethod<S>">
       <MemberSignature Language="C#" Value="public U BaseMethod<S> (S genericParameter);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance !U BaseMethod<S>(!!S genericParameter) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -79,6 +83,7 @@
     </Member>
     <Member MemberName="ConstField1">
       <MemberSignature Language="C#" Value="public const int ConstField1;" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal int32 ConstField1" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -92,8 +97,27 @@
         <remarks>To be added.</remarks>
       </Docs>
     </Member>
+    <Member MemberName="ItemChanged">
+      <MemberSignature Language="C#" Value="public event Action<Mono.DocTest.Generic.MyList<U>,Mono.DocTest.Generic.MyList<U>.Helper<U,U>> ItemChanged;" />
+      <MemberSignature Language="ILAsm" Value=".event class System.Action`2<class Mono.DocTest.Generic.MyList`1<!U>, class Mono.DocTest.Generic.MyList`1/Helper`2<!U, !U, !U>> ItemChanged" />
+      <MemberType>Event</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+        <AssemblyVersion>2.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.Action<Mono.DocTest.Generic.MyList<U>,Mono.DocTest.Generic.MyList<U>+Helper<U,U>></ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />, <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" /></exception>
+        <exception cref="T:System.MulticastNotSupportedException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" /></exception>
+      </Docs>
+    </Member>
     <Member MemberName="MyEvent">
       <MemberSignature Language="C#" Value="public event EventHandler<Mono.DocTest.Generic.GenericBase<U>.FooEventArgs> MyEvent;" />
+      <MemberSignature Language="ILAsm" Value=".event class System.EventHandler`1<class Mono.DocTest.Generic.GenericBase`1/FooEventArgs<!U>> MyEvent" />
       <MemberType>Event</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -111,6 +135,7 @@
     </Member>
     <Member MemberName="op_Explicit">
       <MemberSignature Language="C#" Value="public static U op_Explicit (Mono.DocTest.Generic.GenericBase<U> list);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig specialname !U op_Explicit(class Mono.DocTest.Generic.GenericBase`1<!U> list) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -131,6 +156,7 @@
     </Member>
     <Member MemberName="StaticField1">
       <MemberSignature Language="C#" Value="public static readonly Mono.DocTest.Generic.GenericBase<U> StaticField1;" />
+      <MemberSignature Language="ILAsm" Value=".field public static initonly class Mono.DocTest.Generic.GenericBase`1<!U> StaticField1" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest.Generic/IFoo`1.xml b/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest.Generic/IFoo`1.xml
index 6eab8d9..512a73d 100644
--- a/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest.Generic/IFoo`1.xml
+++ b/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest.Generic/IFoo`1.xml
@@ -1,5 +1,6 @@
 <Type Name="IFoo<T>" FullName="Mono.DocTest.Generic.IFoo<T>">
   <TypeSignature Language="C#" Value="public interface IFoo<T>" />
+  <TypeSignature Language="ILAsm" Value=".class public interface auto ansi abstract IFoo`1<T>" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -17,6 +18,7 @@
   <Members>
     <Member MemberName="Method<U>">
       <MemberSignature Language="C#" Value="public T Method<U> (T t, U u);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance !T Method<U>(!T t, !!U u) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest.Generic/MyList`1+Helper`2.xml b/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest.Generic/MyList`1+Helper`2.xml
index f9b00d6..dcb2a37 100644
--- a/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest.Generic/MyList`1+Helper`2.xml
+++ b/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest.Generic/MyList`1+Helper`2.xml
@@ -1,5 +1,6 @@
 <Type Name="MyList<T>+Helper<U,V>" FullName="Mono.DocTest.Generic.MyList<T>+Helper<U,V>">
   <TypeSignature Language="C#" Value="public class MyList<T>.Helper<U,V>" />
+  <TypeSignature Language="ILAsm" Value=".class nested public auto ansi beforefieldinit MyList`1/Helper`2<T, U, V> extends System.Object" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -23,6 +24,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public Helper ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -36,6 +38,7 @@
     </Member>
     <Member MemberName="UseT">
       <MemberSignature Language="C#" Value="public void UseT (T a, U b, V c);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void UseT(!T a, !U b, !V c) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest.Generic/MyList`1.xml b/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest.Generic/MyList`1.xml
index 1bfffe9..50cd32c 100644
--- a/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest.Generic/MyList`1.xml
+++ b/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest.Generic/MyList`1.xml
@@ -1,5 +1,6 @@
 <Type Name="MyList<T>" FullName="Mono.DocTest.Generic.MyList<T>">
   <TypeSignature Language="C#" Value="public class MyList<T> : Mono.DocTest.Generic.GenericBase<T>, System.Collections.Generic.IEnumerable<int[]>" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit MyList`1<T> extends Mono.DocTest.Generic.GenericBase`1<!T> implements class System.Collections.Generic.IEnumerable`1<int32[]>, class System.Collections.IEnumerable" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -33,6 +34,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public MyList ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -46,6 +48,7 @@
     </Member>
     <Member MemberName="GetEnumerator">
       <MemberSignature Language="C#" Value="public System.Collections.Generic.IEnumerator<int[]> GetEnumerator ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class System.Collections.Generic.IEnumerator`1<int32[]> GetEnumerator() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -63,6 +66,7 @@
     </Member>
     <Member MemberName="GetHelper<U,V>">
       <MemberSignature Language="C#" Value="public Mono.DocTest.Generic.MyList<T>.Helper<U,V> GetHelper<U,V> ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.DocTest.Generic.MyList`1/Helper`2<!T, !!U, !!V> GetHelper<U, V>() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -86,6 +90,7 @@
     </Member>
     <Member MemberName="Method<U>">
       <MemberSignature Language="C#" Value="public void Method<U> (T t, U u);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Method<U>(!T t, !!U u) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -111,6 +116,7 @@
     </Member>
     <Member MemberName="RefMethod<U>">
       <MemberSignature Language="C#" Value="public void RefMethod<U> (ref T t, ref U u);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void RefMethod<U>(!T t, !!U u) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -136,6 +142,7 @@
     </Member>
     <Member MemberName="System.Collections.IEnumerable.GetEnumerator">
       <MemberSignature Language="C#" Value="System.Collections.IEnumerator IEnumerable.GetEnumerator ();" />
+      <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance class System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -153,6 +160,7 @@
     </Member>
     <Member MemberName="Test">
       <MemberSignature Language="C#" Value="public void Test (T t);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Test(!T t) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -172,6 +180,7 @@
     </Member>
     <Member MemberName="UseHelper<U,V>">
       <MemberSignature Language="C#" Value="public void UseHelper<U,V> (Mono.DocTest.Generic.MyList<T>.Helper<U,V> helper);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void UseHelper<U, V>(class Mono.DocTest.Generic.MyList`1/Helper`2<!T, !!U, !!V> helper) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest.Generic/MyList`2.xml b/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest.Generic/MyList`2.xml
index b8f9893..0349333 100644
--- a/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest.Generic/MyList`2.xml
+++ b/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest.Generic/MyList`2.xml
@@ -1,5 +1,6 @@
 <Type Name="MyList<A,B>" FullName="Mono.DocTest.Generic.MyList<A,B>">
   <TypeSignature Language="C#" Value="public class MyList<A,B> : Mono.DocTest.Generic.GenericBase<System.Collections.Generic.Dictionary<A,B>>, Mono.DocTest.Generic.IFoo<A>, System.Collections.Generic.ICollection<A>, System.Collections.Generic.IEnumerable<A>, System.Collections.Generic.IEnumerator<A> where A : class, IList<B>, new() where B : class, A" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit MyList`2<class .ctor (class System.Collections.Generic.IList`1<!B>) A, class (!A) B> extends Mono.DocTest.Generic.GenericBase`1<class System.Collections.Generic.Dictionary`2<!A, !B>> implements class Mono.DocTest.Generic.IFoo`1<!A>, class System.Collections.Generic.ICollection`1<!A>, class System.Collections.Generic.IEnumerable`1<!A>, class System.Collections.Generic.IEnumerator`1<!A>, class System.Collections.IEnumerable, class System.Collections.IEnumerator, class System.IDisposable" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -49,6 +50,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public MyList ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -62,6 +64,7 @@
     </Member>
     <Member MemberName="CopyTo">
       <MemberSignature Language="C#" Value="public void CopyTo (A[] array, int arrayIndex);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void CopyTo(!A[] array, int32 arrayIndex) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -83,6 +86,7 @@
     </Member>
     <Member MemberName="Count">
       <MemberSignature Language="C#" Value="public int Count { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance int32 Count" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -99,6 +103,7 @@
     </Member>
     <Member MemberName="Current">
       <MemberSignature Language="C#" Value="public A Current { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance !A Current" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -115,6 +120,7 @@
     </Member>
     <Member MemberName="Dispose">
       <MemberSignature Language="C#" Value="public void Dispose ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void Dispose() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -131,6 +137,7 @@
     </Member>
     <Member MemberName="Foo">
       <MemberSignature Language="C#" Value="public System.Collections.Generic.KeyValuePair<System.Collections.Generic.IEnumerable<A>,System.Collections.Generic.IEnumerable<B>> Foo ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance valuetype System.Collections.Generic.KeyValuePair`2<class System.Collections.Generic.IEnumerable`1<!A>, class System.Collections.Generic.IEnumerable`1<!B>> Foo() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -148,6 +155,7 @@
     </Member>
     <Member MemberName="GetEnumerator">
       <MemberSignature Language="C#" Value="public System.Collections.Generic.List<A>.Enumerator GetEnumerator ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance valuetype System.Collections.Generic.List`1/Enumerator<!A> GetEnumerator() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -165,6 +173,7 @@
     </Member>
     <Member MemberName="Mono.DocTest.Generic.IFoo<A>.Method<U>">
       <MemberSignature Language="C#" Value="A IFoo<A>.Method<U> (A a, U u);" />
+      <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance !A Mono.DocTest.Generic.IFoo<A>.Method<U>(!A a, !!U u) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -191,6 +200,7 @@
     </Member>
     <Member MemberName="MoveNext">
       <MemberSignature Language="C#" Value="public bool MoveNext ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance bool MoveNext() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -208,6 +218,7 @@
     </Member>
     <Member MemberName="Reset">
       <MemberSignature Language="C#" Value="public void Reset ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void Reset() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -224,6 +235,7 @@
     </Member>
     <Member MemberName="System.Collections.Generic.ICollection<A>.Add">
       <MemberSignature Language="C#" Value="void ICollection<A>.Add (A item);" />
+      <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance void System.Collections.Generic.ICollection<A>.Add(!A item) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -243,6 +255,7 @@
     </Member>
     <Member MemberName="System.Collections.Generic.ICollection<A>.Clear">
       <MemberSignature Language="C#" Value="void ICollection<A>.Clear ();" />
+      <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance void System.Collections.Generic.ICollection<A>.Clear() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -259,6 +272,7 @@
     </Member>
     <Member MemberName="System.Collections.Generic.ICollection<A>.Contains">
       <MemberSignature Language="C#" Value="bool ICollection<A>.Contains (A item);" />
+      <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance bool System.Collections.Generic.ICollection<A>.Contains(!A item) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -279,6 +293,7 @@
     </Member>
     <Member MemberName="System.Collections.Generic.ICollection<A>.IsReadOnly">
       <MemberSignature Language="C#" Value="bool System.Collections.Generic.ICollection<A>.IsReadOnly { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool System.Collections.Generic.ICollection<A>.IsReadOnly" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -295,6 +310,7 @@
     </Member>
     <Member MemberName="System.Collections.Generic.ICollection<A>.Remove">
       <MemberSignature Language="C#" Value="bool ICollection<A>.Remove (A item);" />
+      <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance bool System.Collections.Generic.ICollection<A>.Remove(!A item) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -315,6 +331,7 @@
     </Member>
     <Member MemberName="System.Collections.Generic.IEnumerable<A>.GetEnumerator">
       <MemberSignature Language="C#" Value="System.Collections.Generic.IEnumerator<A> IEnumerable<A>.GetEnumerator ();" />
+      <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance class System.Collections.Generic.IEnumerator`1<!A> System.Collections.Generic.IEnumerable<A>.GetEnumerator() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -332,6 +349,7 @@
     </Member>
     <Member MemberName="System.Collections.Generic.IEnumerator<A>.Current">
       <MemberSignature Language="C#" Value="A System.Collections.Generic.IEnumerator<A>.Current { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance !A System.Collections.Generic.IEnumerator<A>.Current" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -348,6 +366,7 @@
     </Member>
     <Member MemberName="System.Collections.IEnumerable.GetEnumerator">
       <MemberSignature Language="C#" Value="System.Collections.IEnumerator IEnumerable.GetEnumerator ();" />
+      <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance class System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -365,6 +384,7 @@
     </Member>
     <Member MemberName="System.Collections.IEnumerator.Current">
       <MemberSignature Language="C#" Value="object System.Collections.IEnumerator.Current { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance object System.Collections.IEnumerator.Current" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/AddedType.xml b/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/AddedType.xml
index 012b5f2..7197f91 100644
--- a/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/AddedType.xml
+++ b/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/AddedType.xml
@@ -1,5 +1,6 @@
 <Type Name="AddedType" FullName="Mono.DocTest.AddedType">
   <TypeSignature Language="C#" Value="public class AddedType" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit AddedType extends System.Object" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>2.0.0.0</AssemblyVersion>
@@ -16,6 +17,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public AddedType ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>2.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/Color.xml b/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/Color.xml
index 6a1f914..62e20a1 100644
--- a/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/Color.xml
+++ b/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/Color.xml
@@ -1,5 +1,6 @@
 <Type Name="Color" FullName="Mono.DocTest.Color">
   <TypeSignature Language="C#" Value="public enum Color" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed Color extends System.Enum" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -15,6 +16,7 @@
   <Members>
     <Member MemberName="AnotherGreen">
       <MemberSignature Language="C#" Value="AnotherGreen" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.DocTest.Color AnotherGreen = int32(2)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -29,6 +31,7 @@
     </Member>
     <Member MemberName="Blue">
       <MemberSignature Language="C#" Value="Blue" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.DocTest.Color Blue = int32(1)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -43,6 +46,7 @@
     </Member>
     <Member MemberName="Green">
       <MemberSignature Language="C#" Value="Green" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.DocTest.Color Green = int32(2)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -57,6 +61,7 @@
     </Member>
     <Member MemberName="Red">
       <MemberSignature Language="C#" Value="Red" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.DocTest.Color Red = int32(0)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/DocAttribute.xml b/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/DocAttribute.xml
index 449d275..6796b2b 100644
--- a/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/DocAttribute.xml
+++ b/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/DocAttribute.xml
@@ -1,5 +1,6 @@
 <Type Name="DocAttribute" FullName="Mono.DocTest.DocAttribute">
   <TypeSignature Language="C#" Value="public class DocAttribute : Attribute" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit DocAttribute extends System.Attribute" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -21,6 +22,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public DocAttribute (string docs);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(string docs) cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -38,6 +40,7 @@
     </Member>
     <Member MemberName="Field">
       <MemberSignature Language="C#" Value="public bool Field;" />
+      <MemberSignature Language="ILAsm" Value=".field public bool Field" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -53,6 +56,7 @@
     </Member>
     <Member MemberName="FlagsEnum">
       <MemberSignature Language="C#" Value="public ConsoleModifiers FlagsEnum;" />
+      <MemberSignature Language="ILAsm" Value=".field public valuetype System.ConsoleModifiers FlagsEnum" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -68,6 +72,7 @@
     </Member>
     <Member MemberName="NonFlagsEnum">
       <MemberSignature Language="C#" Value="public Mono.DocTest.Color NonFlagsEnum;" />
+      <MemberSignature Language="ILAsm" Value=".field public valuetype Mono.DocTest.Color NonFlagsEnum" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -83,6 +88,7 @@
     </Member>
     <Member MemberName="Property">
       <MemberSignature Language="C#" Value="public Type Property { set; get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class System.Type Property" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/DocValueType.xml b/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/DocValueType.xml
index e44f0e0..ae648fa 100644
--- a/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/DocValueType.xml
+++ b/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/DocValueType.xml
@@ -1,5 +1,6 @@
 <Type Name="DocValueType" FullName="Mono.DocTest.DocValueType">
   <TypeSignature Language="C#" Value="public struct DocValueType : Mono.DocTest.IProcess" />
+  <TypeSignature Language="ILAsm" Value=".class public sequential ansi sealed beforefieldinit DocValueType extends System.ValueType implements class Mono.DocTest.IProcess" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -20,6 +21,7 @@
   <Members>
     <Member MemberName="M">
       <MemberSignature Language="C#" Value="public void M (int i);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void M(int32 i) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -41,6 +43,7 @@
     </Member>
     <Member MemberName="total">
       <MemberSignature Language="C#" Value="public int total;" />
+      <MemberSignature Language="ILAsm" Value=".field public int32 total" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/IProcess.xml b/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/IProcess.xml
index 2fbd7d3..76a31fe 100644
--- a/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/IProcess.xml
+++ b/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/IProcess.xml
@@ -1,5 +1,6 @@
 <Type Name="IProcess" FullName="Mono.DocTest.IProcess">
   <TypeSignature Language="C#" Value="public interface IProcess" />
+  <TypeSignature Language="ILAsm" Value=".class public interface auto ansi abstract IProcess" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/UseLists.xml b/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/UseLists.xml
index 89f6ebf..458a2e2 100644
--- a/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/UseLists.xml
+++ b/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/UseLists.xml
@@ -1,5 +1,6 @@
 <Type Name="UseLists" FullName="Mono.DocTest.UseLists">
   <TypeSignature Language="C#" Value="public class UseLists" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit UseLists extends System.Object" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -16,6 +17,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public UseLists ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -29,6 +31,7 @@
     </Member>
     <Member MemberName="GetValues<T>">
       <MemberSignature Language="C#" Value="public Mono.DocTest.Generic.MyList<T> GetValues<T> (T value) where T : struct;" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.DocTest.Generic.MyList`1<!!T> GetValues<struct .ctor (class System.ValueType) T>(!!T value) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -59,6 +62,7 @@
     </Member>
     <Member MemberName="Process">
       <MemberSignature Language="C#" Value="public void Process (Mono.DocTest.Generic.MyList<int> list);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Process(class Mono.DocTest.Generic.MyList`1<int32> list) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -78,6 +82,7 @@
     </Member>
     <Member MemberName="Process">
       <MemberSignature Language="C#" Value="public void Process (System.Collections.Generic.List<int> list);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Process(class System.Collections.Generic.List`1<int32> list) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -98,6 +103,7 @@
     </Member>
     <Member MemberName="Process">
       <MemberSignature Language="C#" Value="public void Process (System.Collections.Generic.List<Predicate<int>> list);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Process(class System.Collections.Generic.List`1<class System.Predicate`1<int32>> list) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -119,6 +125,7 @@
     </Member>
     <Member MemberName="Process<T>">
       <MemberSignature Language="C#" Value="public void Process<T> (System.Collections.Generic.List<Predicate<T>> list);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Process<T>(class System.Collections.Generic.List`1<class System.Predicate`1<!!T>> list) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -144,6 +151,7 @@
     </Member>
     <Member MemberName="UseHelper<T,U,V>">
       <MemberSignature Language="C#" Value="public void UseHelper<T,U,V> (Mono.DocTest.Generic.MyList<T>.Helper<U,V> helper);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void UseHelper<T, U, V>(class Mono.DocTest.Generic.MyList`1/Helper`2<!!T, !!U, !!V> helper) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/Widget+Del.xml b/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/Widget+Del.xml
index 9f21114..2620b6a 100644
--- a/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/Widget+Del.xml
+++ b/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/Widget+Del.xml
@@ -1,5 +1,6 @@
 <Type Name="Widget+Del" FullName="Mono.DocTest.Widget+Del">
   <TypeSignature Language="C#" Value="public delegate void Widget.Del(int i);" />
+  <TypeSignature Language="ILAsm" Value=".class nested public auto ansi sealed Widget/Del extends System.MulticastDelegate" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/Widget+Direction.xml b/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/Widget+Direction.xml
index 1b02291..f7834f5 100644
--- a/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/Widget+Direction.xml
+++ b/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/Widget+Direction.xml
@@ -1,5 +1,6 @@
 <Type Name="Widget+Direction" FullName="Mono.DocTest.Widget+Direction">
   <TypeSignature Language="C#" Value="public enum Widget.Direction" />
+  <TypeSignature Language="ILAsm" Value=".class nested public auto ansi sealed Widget/Direction extends System.Enum" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -20,6 +21,7 @@
   <Members>
     <Member MemberName="East">
       <MemberSignature Language="C#" Value="East" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.DocTest.Widget/Direction East = int32(2)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -34,6 +36,7 @@
     </Member>
     <Member MemberName="North">
       <MemberSignature Language="C#" Value="North" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.DocTest.Widget/Direction North = int32(0)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -48,6 +51,7 @@
     </Member>
     <Member MemberName="South">
       <MemberSignature Language="C#" Value="South" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.DocTest.Widget/Direction South = int32(1)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -62,6 +66,7 @@
     </Member>
     <Member MemberName="West">
       <MemberSignature Language="C#" Value="West" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.DocTest.Widget/Direction West = int32(3)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/Widget+IMenuItem.xml b/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/Widget+IMenuItem.xml
index 8e57be4..53111ef 100644
--- a/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/Widget+IMenuItem.xml
+++ b/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/Widget+IMenuItem.xml
@@ -1,5 +1,6 @@
 <Type Name="Widget+IMenuItem" FullName="Mono.DocTest.Widget+IMenuItem">
   <TypeSignature Language="C#" Value="public interface Widget.IMenuItem" />
+  <TypeSignature Language="ILAsm" Value=".class nested public interface auto ansi abstract Widget/IMenuItem" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -13,6 +14,7 @@
   <Members>
     <Member MemberName="A">
       <MemberSignature Language="C#" Value="public void A ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void A() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -29,6 +31,7 @@
     </Member>
     <Member MemberName="B">
       <MemberSignature Language="C#" Value="public int B { set; get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance int32 B" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/Widget+NestedClass+Double+Triple+Quadruple.xml b/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/Widget+NestedClass+Double+Triple+Quadruple.xml
index 335ffff..cfab552 100644
--- a/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/Widget+NestedClass+Double+Triple+Quadruple.xml
+++ b/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/Widget+NestedClass+Double+Triple+Quadruple.xml
@@ -1,5 +1,6 @@
 <Type Name="Widget+NestedClass+Double+Triple+Quadruple" FullName="Mono.DocTest.Widget+NestedClass+Double+Triple+Quadruple">
   <TypeSignature Language="C#" Value="public class Widget.NestedClass.Double.Triple.Quadruple" />
+  <TypeSignature Language="ILAsm" Value=".class nested public auto ansi beforefieldinit Widget/NestedClass/Double/Triple/Quadruple extends System.Object" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -16,6 +17,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public Quadruple ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/Widget+NestedClass+Double+Triple.xml b/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/Widget+NestedClass+Double+Triple.xml
index 73197a8..4686e27 100644
--- a/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/Widget+NestedClass+Double+Triple.xml
+++ b/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/Widget+NestedClass+Double+Triple.xml
@@ -1,5 +1,6 @@
 <Type Name="Widget+NestedClass+Double+Triple" FullName="Mono.DocTest.Widget+NestedClass+Double+Triple">
   <TypeSignature Language="C#" Value="public class Widget.NestedClass.Double.Triple" />
+  <TypeSignature Language="ILAsm" Value=".class nested public auto ansi beforefieldinit Widget/NestedClass/Double/Triple extends System.Object" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -16,6 +17,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public Triple ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/Widget+NestedClass+Double.xml b/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/Widget+NestedClass+Double.xml
index 9003120..12cc838 100644
--- a/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/Widget+NestedClass+Double.xml
+++ b/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/Widget+NestedClass+Double.xml
@@ -1,5 +1,6 @@
 <Type Name="Widget+NestedClass+Double" FullName="Mono.DocTest.Widget+NestedClass+Double">
   <TypeSignature Language="C#" Value="public class Widget.NestedClass.Double" />
+  <TypeSignature Language="ILAsm" Value=".class nested public auto ansi beforefieldinit Widget/NestedClass/Double extends System.Object" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -16,6 +17,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public Double ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/Widget+NestedClass.xml b/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/Widget+NestedClass.xml
index 0c7c9b0..a3590a2 100644
--- a/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/Widget+NestedClass.xml
+++ b/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/Widget+NestedClass.xml
@@ -1,5 +1,6 @@
 <Type Name="Widget+NestedClass" FullName="Mono.DocTest.Widget+NestedClass">
   <TypeSignature Language="C#" Value="public class Widget.NestedClass" />
+  <TypeSignature Language="ILAsm" Value=".class nested public auto ansi beforefieldinit Widget/NestedClass extends System.Object" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -16,6 +17,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public NestedClass ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -29,6 +31,7 @@
     </Member>
     <Member MemberName="M">
       <MemberSignature Language="C#" Value="public void M (int i);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void M(int32 i) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -48,6 +51,7 @@
     </Member>
     <Member MemberName="value">
       <MemberSignature Language="C#" Value="public int value;" />
+      <MemberSignature Language="ILAsm" Value=".field public int32 value" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/Widget+NestedClass`1.xml b/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/Widget+NestedClass`1.xml
index f698f66..e183200 100644
--- a/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/Widget+NestedClass`1.xml
+++ b/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/Widget+NestedClass`1.xml
@@ -1,5 +1,6 @@
 <Type Name="Widget+NestedClass<T>" FullName="Mono.DocTest.Widget+NestedClass<T>">
   <TypeSignature Language="C#" Value="public class Widget.NestedClass<T>" />
+  <TypeSignature Language="ILAsm" Value=".class nested public auto ansi beforefieldinit Widget/NestedClass`1<T> extends System.Object" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -20,6 +21,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public NestedClass ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -33,6 +35,7 @@
     </Member>
     <Member MemberName="M">
       <MemberSignature Language="C#" Value="public void M (int i);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void M(int32 i) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -52,6 +55,7 @@
     </Member>
     <Member MemberName="value">
       <MemberSignature Language="C#" Value="public int value;" />
+      <MemberSignature Language="ILAsm" Value=".field public int32 value" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/Widget.xml b/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/Widget.xml
index ac90301..aed8f39 100644
--- a/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/Widget.xml
+++ b/mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/Widget.xml
@@ -1,5 +1,6 @@
 <Type Name="Widget" FullName="Mono.DocTest.Widget">
   <TypeSignature Language="C#" Value="public class Widget : Mono.DocTest.IProcess" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit Widget extends System.Object implements class Mono.DocTest.IProcess" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -20,6 +21,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public Widget ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -33,6 +35,7 @@
     </Member>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public Widget (Converter<string,string> c);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(class System.Converter`2<string, string> c) cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -49,6 +52,7 @@
     </Member>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public Widget (string s);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(string s) cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -65,6 +69,7 @@
     </Member>
     <Member MemberName="AnEvent">
       <MemberSignature Language="C#" Value="public event Mono.DocTest.Widget.Del AnEvent;" />
+      <MemberSignature Language="ILAsm" Value=".event class Mono.DocTest.Widget/Del AnEvent" />
       <MemberType>Event</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -91,6 +96,7 @@
     </Member>
     <Member MemberName="AnotherEvent">
       <MemberSignature Language="C#" Value="protected event Mono.DocTest.Widget.Del AnotherEvent;" />
+      <MemberSignature Language="ILAsm" Value=".event class Mono.DocTest.Widget/Del AnotherEvent" />
       <MemberType>Event</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -108,6 +114,7 @@
     </Member>
     <Member MemberName="array1">
       <MemberSignature Language="C#" Value="public long[] array1;" />
+      <MemberSignature Language="ILAsm" Value=".field public int64[] array1" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -123,6 +130,7 @@
     </Member>
     <Member MemberName="array2">
       <MemberSignature Language="C#" Value="public Mono.DocTest.Widget[,] array2;" />
+      <MemberSignature Language="ILAsm" Value=".field public class Mono.DocTest.Widget[,] array2" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -138,6 +146,7 @@
     </Member>
     <Member MemberName="classCtorError">
       <MemberSignature Language="C#" Value="public static readonly string[] classCtorError;" />
+      <MemberSignature Language="ILAsm" Value=".field public static initonly string[] classCtorError" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -153,6 +162,7 @@
     </Member>
     <Member MemberName="defaultColor">
       <MemberSignature Language="C#" Value="protected static Mono.DocTest.Color defaultColor;" />
+      <MemberSignature Language="ILAsm" Value=".field family static valuetype Mono.DocTest.Color defaultColor" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -168,6 +178,7 @@
     </Member>
     <Member MemberName="Height">
       <MemberSignature Language="C#" Value="protected long Height { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance int64 Height" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -189,6 +200,7 @@
     </Member>
     <Member MemberName="Item">
       <MemberSignature Language="C#" Value="public int this[int i] { set; get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance int32 Item(int32)" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -217,6 +229,7 @@
     </Member>
     <Member MemberName="Item">
       <MemberSignature Language="C#" Value="public int this[string s, int i] { set; get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance int32 Item(string, int32)" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -239,6 +252,7 @@
     </Member>
     <Member MemberName="M0">
       <MemberSignature Language="C#" Value="public static void M0 ();" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig void M0() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -255,6 +269,7 @@
     </Member>
     <Member MemberName="M1">
       <MemberSignature Language="C#" Value="public void M1 (char c, out float f, ref Mono.DocTest.DocValueType v);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void M1(char c, float32 f, valuetype Mono.DocTest.DocValueType v) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -306,6 +321,7 @@
     </Member>
     <Member MemberName="M2">
       <MemberSignature Language="C#" Value="public void M2 (short[] x1, int[,] x2, long[][] x3);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void M2(int16[] x1, int32[,] x2, int64[][] x3) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -329,6 +345,7 @@
     </Member>
     <Member MemberName="M3">
       <MemberSignature Language="C#" Value="protected void M3 (long[][] x3, Mono.DocTest.Widget[,,][] x4);" />
+      <MemberSignature Language="ILAsm" Value=".method familyhidebysig instance void M3(int64[][] x3, class Mono.DocTest.Widget[,,][] x4) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -350,6 +367,7 @@
     </Member>
     <Member MemberName="M4">
       <MemberSignature Language="C#" Value="protected void M4 (char* pc, Mono.DocTest.Color** ppf);" />
+      <MemberSignature Language="ILAsm" Value=".method familyhidebysig instance void M4(char* pc, valuetype Mono.DocTest.Color** ppf) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -371,6 +389,7 @@
     </Member>
     <Member MemberName="M5">
       <MemberSignature Language="C#" Value="protected void M5 (void* pv, double*[,][] pd);" />
+      <MemberSignature Language="ILAsm" Value=".method familyhidebysig instance void M5(void* pv, float64*[,][] pd) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -392,6 +411,7 @@
     </Member>
     <Member MemberName="M6">
       <MemberSignature Language="C#" Value="protected void M6 (int i, object[] args);" />
+      <MemberSignature Language="ILAsm" Value=".method familyhidebysig instance void M6(int32 i, object[] args) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -419,6 +439,7 @@
     </Member>
     <Member MemberName="M7">
       <MemberSignature Language="C#" Value="public void M7 (Mono.DocTest.Widget.NestedClass.Double.Triple.Quadruple a);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void M7(class Mono.DocTest.Widget/NestedClass/Double/Triple/Quadruple a) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -438,6 +459,7 @@
     </Member>
     <Member MemberName="message">
       <MemberSignature Language="C#" Value="public string message;" />
+      <MemberSignature Language="ILAsm" Value=".field public string message" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -453,6 +475,7 @@
     </Member>
     <Member MemberName="monthlyAverage">
       <MemberSignature Language="C#" Value="protected readonly double monthlyAverage;" />
+      <MemberSignature Language="ILAsm" Value=".field familyorassembly initonly float64 monthlyAverage" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -468,6 +491,7 @@
     </Member>
     <Member MemberName="op_Addition">
       <MemberSignature Language="C#" Value="public static Mono.DocTest.Widget op_Addition (Mono.DocTest.Widget x1, Mono.DocTest.Widget x2);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig specialname class Mono.DocTest.Widget op_Addition(class Mono.DocTest.Widget x1, class Mono.DocTest.Widget x2) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -490,6 +514,7 @@
     </Member>
     <Member MemberName="op_Explicit">
       <MemberSignature Language="C#" Value="public static int op_Explicit (Mono.DocTest.Widget x);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig specialname int32 op_Explicit(class Mono.DocTest.Widget x) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -510,6 +535,7 @@
     </Member>
     <Member MemberName="op_Implicit">
       <MemberSignature Language="C#" Value="public static long op_Implicit (Mono.DocTest.Widget x);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig specialname int64 op_Implicit(class Mono.DocTest.Widget x) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -530,6 +556,7 @@
     </Member>
     <Member MemberName="op_UnaryPlus">
       <MemberSignature Language="C#" Value="public static Mono.DocTest.Widget op_UnaryPlus (Mono.DocTest.Widget x);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig specialname class Mono.DocTest.Widget op_UnaryPlus(class Mono.DocTest.Widget x) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -550,6 +577,7 @@
     </Member>
     <Member MemberName="pCount">
       <MemberSignature Language="C#" Value="public int* pCount;" />
+      <MemberSignature Language="ILAsm" Value=".field public int32* pCount" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -565,6 +593,7 @@
     </Member>
     <Member MemberName="PI">
       <MemberSignature Language="C#" Value="protected const double PI = 3.14159;" />
+      <MemberSignature Language="ILAsm" Value=".field familyorassembly static literal float64 PI = (3.14159)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -581,6 +610,7 @@
     </Member>
     <Member MemberName="ppValues">
       <MemberSignature Language="C#" Value="public float** ppValues;" />
+      <MemberSignature Language="ILAsm" Value=".field public float32** ppValues" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -596,6 +626,7 @@
     </Member>
     <Member MemberName="Width">
       <MemberSignature Language="C#" Value="public int Width { protected set; get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance int32 Width" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -623,6 +654,7 @@
     </Member>
     <Member MemberName="X">
       <MemberSignature Language="C#" Value="protected short X { set; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance int16 X" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -639,6 +671,7 @@
     </Member>
     <Member MemberName="Y">
       <MemberSignature Language="C#" Value="protected double Y { set; get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance float64 Y" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.since/NoNamespace.xml b/mcs/tools/mdoc/Test/en.expected.since/NoNamespace.xml
index 0d18f9a..6b82a64 100644
--- a/mcs/tools/mdoc/Test/en.expected.since/NoNamespace.xml
+++ b/mcs/tools/mdoc/Test/en.expected.since/NoNamespace.xml
@@ -1,5 +1,6 @@
 <Type Name="NoNamespace" FullName="NoNamespace">
   <TypeSignature Language="C#" Value="public class NoNamespace" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit NoNamespace extends System.Object" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -16,6 +17,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public NoNamespace ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.since/System/Action`1.xml b/mcs/tools/mdoc/Test/en.expected.since/System/Action`1.xml
index 9e76943..a065b5a 100644
--- a/mcs/tools/mdoc/Test/en.expected.since/System/Action`1.xml
+++ b/mcs/tools/mdoc/Test/en.expected.since/System/Action`1.xml
@@ -1,5 +1,6 @@
 <Type Name="Action<T>" FullName="System.Action<T>">
   <TypeSignature Language="C#" Value="public delegate void Action<T>(T obj);" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed Action`1<T> extends System.MulticastDelegate" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.since/System/Array.xml b/mcs/tools/mdoc/Test/en.expected.since/System/Array.xml
index aec402e..67fbe3e 100644
--- a/mcs/tools/mdoc/Test/en.expected.since/System/Array.xml
+++ b/mcs/tools/mdoc/Test/en.expected.since/System/Array.xml
@@ -1,5 +1,6 @@
 <Type Name="Array" FullName="System.Array">
   <TypeSignature Language="C#" Value="public class Array" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit Array extends System.Object" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -16,6 +17,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public Array ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -29,6 +31,7 @@
     </Member>
     <Member MemberName="AsReadOnly<T>">
       <MemberSignature Language="C#" Value="public static System.Collections.ObjectModel.ReadOnlyCollection<T> AsReadOnly<T> (T[] array);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig class System.Collections.ObjectModel.ReadOnlyCollection`1<!!T> AsReadOnly<T>(!!T[] array) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -54,6 +57,7 @@
     </Member>
     <Member MemberName="ConvertAll<TInput,TOutput>">
       <MemberSignature Language="C#" Value="public static TOutput[] ConvertAll<TInput,TOutput> (TInput[] array, Converter<TInput,TOutput> converter);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig !!TOutput[] ConvertAll<TInput, TOutput>(!!TInput[] array, class System.Converter`2<!!TInput, !!TOutput> converter) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -83,6 +87,7 @@
     </Member>
     <Member MemberName="Resize<T>">
       <MemberSignature Language="C#" Value="public static void Resize<T> (ref T[] array, int newSize);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig void Resize<T>(!!T[] array, int32 newSize) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.since/System/AsyncCallback.xml b/mcs/tools/mdoc/Test/en.expected.since/System/AsyncCallback.xml
index 92d8dcf..deb06e9 100644
--- a/mcs/tools/mdoc/Test/en.expected.since/System/AsyncCallback.xml
+++ b/mcs/tools/mdoc/Test/en.expected.since/System/AsyncCallback.xml
@@ -1,5 +1,6 @@
 <Type Name="AsyncCallback" FullName="System.AsyncCallback">
   <TypeSignature Language="C#" Value="public delegate void AsyncCallback(IAsyncResult ar);" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed AsyncCallback extends System.MulticastDelegate" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.since/System/Environment+SpecialFolder.xml b/mcs/tools/mdoc/Test/en.expected.since/System/Environment+SpecialFolder.xml
index 67f0937..b5a9f1e 100644
--- a/mcs/tools/mdoc/Test/en.expected.since/System/Environment+SpecialFolder.xml
+++ b/mcs/tools/mdoc/Test/en.expected.since/System/Environment+SpecialFolder.xml
@@ -1,5 +1,6 @@
 <Type Name="Environment+SpecialFolder" FullName="System.Environment+SpecialFolder">
   <TypeSignature Language="C#" Value="public enum Environment.SpecialFolder" />
+  <TypeSignature Language="ILAsm" Value=".class nested public auto ansi sealed Environment/SpecialFolder extends System.Enum" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.since/System/Environment.xml b/mcs/tools/mdoc/Test/en.expected.since/System/Environment.xml
index d64d1a2..0576dfb 100644
--- a/mcs/tools/mdoc/Test/en.expected.since/System/Environment.xml
+++ b/mcs/tools/mdoc/Test/en.expected.since/System/Environment.xml
@@ -1,5 +1,6 @@
 <Type Name="Environment" FullName="System.Environment">
   <TypeSignature Language="C#" Value="public static class Environment" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi abstract sealed beforefieldinit Environment extends System.Object" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -16,6 +17,7 @@
   <Members>
     <Member MemberName="GetFolderPath">
       <MemberSignature Language="C#" Value="public static string GetFolderPath (Environment.SpecialFolder folder);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig string GetFolderPath(valuetype System.Environment/SpecialFolder folder) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected.since/index.xml b/mcs/tools/mdoc/Test/en.expected.since/index.xml
index e4ee769..32b45a0 100644
--- a/mcs/tools/mdoc/Test/en.expected.since/index.xml
+++ b/mcs/tools/mdoc/Test/en.expected.since/index.xml
@@ -59,6 +59,7 @@
       </Targets>
       <Member MemberName="Bar<T>">
         <MemberSignature Language="C#" Value="public static void Bar<T> (this Mono.DocTest.Generic.IFoo<T> self, string s);" />
+        <MemberSignature Language="ILAsm" Value=".method public static hidebysig void Bar<T>(class Mono.DocTest.Generic.IFoo`1<!!T> self, string s) cil managed" />
         <MemberType>ExtensionMethod</MemberType>
         <ReturnValue>
           <ReturnType>System.Void</ReturnType>
@@ -85,6 +86,7 @@
       </Targets>
       <Member MemberName="ForEach<T>">
         <MemberSignature Language="C#" Value="public static void ForEach<T> (this System.Collections.Generic.IEnumerable<T> self, Action<T> a);" />
+        <MemberSignature Language="ILAsm" Value=".method public static hidebysig void ForEach<T>(class System.Collections.Generic.IEnumerable`1<!!T> self, class System.Action`1<!!T> a) cil managed" />
         <MemberType>ExtensionMethod</MemberType>
         <ReturnValue>
           <ReturnType>System.Void</ReturnType>
@@ -111,6 +113,7 @@
       </Targets>
       <Member MemberName="ToDouble">
         <MemberSignature Language="C#" Value="public static System.Collections.Generic.IEnumerable<double> ToDouble (this System.Collections.Generic.IEnumerable<int> list);" />
+        <MemberSignature Language="ILAsm" Value=".method public static hidebysig class System.Collections.Generic.IEnumerable`1<float64> ToDouble(class System.Collections.Generic.IEnumerable`1<int32> list) cil managed" />
         <MemberType>ExtensionMethod</MemberType>
         <ReturnValue>
           <ReturnType>System.Collections.Generic.IEnumerable<System.Double></ReturnType>
@@ -131,6 +134,7 @@
       </Targets>
       <Member MemberName="ToDouble<T>">
         <MemberSignature Language="C#" Value="public static double ToDouble<T> (this T val) where T : Mono.DocTest.Generic.IFoo<T>;" />
+        <MemberSignature Language="ILAsm" Value=".method public static hidebysig float64 ToDouble<(class Mono.DocTest.Generic.IFoo`1<!!T>) T>(!!T val) cil managed" />
         <MemberType>ExtensionMethod</MemberType>
         <ReturnValue>
           <ReturnType>System.Double</ReturnType>
@@ -159,6 +163,7 @@
       </Targets>
       <Member MemberName="ToEnumerable<T>">
         <MemberSignature Language="C#" Value="public static System.Collections.Generic.IEnumerable<T> ToEnumerable<T> (this T self);" />
+        <MemberSignature Language="ILAsm" Value=".method public static hidebysig class System.Collections.Generic.IEnumerable`1<!!T> ToEnumerable<T>(!!T self) cil managed" />
         <MemberType>ExtensionMethod</MemberType>
         <ReturnValue>
           <ReturnType>System.Collections.Generic.IEnumerable<T></ReturnType>
diff --git a/mcs/tools/mdoc/Test/en.expected/Mono.DocTest.Generic/Extensions.xml b/mcs/tools/mdoc/Test/en.expected/Mono.DocTest.Generic/Extensions.xml
index 06fd881..7766049 100644
--- a/mcs/tools/mdoc/Test/en.expected/Mono.DocTest.Generic/Extensions.xml
+++ b/mcs/tools/mdoc/Test/en.expected/Mono.DocTest.Generic/Extensions.xml
@@ -1,5 +1,6 @@
 <Type Name="Extensions" FullName="Mono.DocTest.Generic.Extensions">
   <TypeSignature Language="C#" Value="public static class Extensions" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi abstract sealed beforefieldinit Extensions extends System.Object" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -15,6 +16,7 @@
   <Members>
     <Member MemberName="Bar<T>">
       <MemberSignature Language="C#" Value="public static void Bar<T> (this Mono.DocTest.Generic.IFoo<T> self, string s);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig void Bar<T>(class Mono.DocTest.Generic.IFoo`1<!!T> self, string s) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -39,6 +41,7 @@
     </Member>
     <Member MemberName="ForEach<T>">
       <MemberSignature Language="C#" Value="public static void ForEach<T> (this System.Collections.Generic.IEnumerable<T> self, Action<T> a);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig void ForEach<T>(class System.Collections.Generic.IEnumerable`1<!!T> self, class System.Action`1<!!T> a) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -63,6 +66,7 @@
     </Member>
     <Member MemberName="ToDouble">
       <MemberSignature Language="C#" Value="public static System.Collections.Generic.IEnumerable<double> ToDouble (this System.Collections.Generic.IEnumerable<int> list);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig class System.Collections.Generic.IEnumerable`1<float64> ToDouble(class System.Collections.Generic.IEnumerable`1<int32> list) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -82,6 +86,7 @@
     </Member>
     <Member MemberName="ToDouble<T>">
       <MemberSignature Language="C#" Value="public static double ToDouble<T> (this T val) where T : Mono.DocTest.Generic.IFoo<T>;" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig float64 ToDouble<(class Mono.DocTest.Generic.IFoo`1<!!T>) T>(!!T val) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -109,6 +114,7 @@
     </Member>
     <Member MemberName="ToEnumerable<T>">
       <MemberSignature Language="C#" Value="public static System.Collections.Generic.IEnumerable<T> ToEnumerable<T> (this T self);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig class System.Collections.Generic.IEnumerable`1<!!T> ToEnumerable<T>(!!T self) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected/Mono.DocTest.Generic/Func`2.xml b/mcs/tools/mdoc/Test/en.expected/Mono.DocTest.Generic/Func`2.xml
index 5600d7e..a52f177 100644
--- a/mcs/tools/mdoc/Test/en.expected/Mono.DocTest.Generic/Func`2.xml
+++ b/mcs/tools/mdoc/Test/en.expected/Mono.DocTest.Generic/Func`2.xml
@@ -1,5 +1,6 @@
 <Type Name="Func<TArg,TRet>" FullName="Mono.DocTest.Generic.Func<TArg,TRet>">
   <TypeSignature Language="C#" Value="public delegate TRet Func<TArg,TRet>(TArg a) where TArg : Exception;" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed Func`2<(class System.Exception) TArg, TRet> extends System.MulticastDelegate" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -53,7 +54,7 @@
     <typeparam name="TRet">To be added.</typeparam>
     <param name="a">To be added.</param>
     <summary>To be added.</summary>
-    <value>To be added.</value>
+    <returns>To be added.</returns>
     <remarks>To be added.</remarks>
   </Docs>
 </Type>
diff --git a/mcs/tools/mdoc/Test/en.expected/Mono.DocTest.Generic/GenericBase`1+FooEventArgs.xml b/mcs/tools/mdoc/Test/en.expected/Mono.DocTest.Generic/GenericBase`1+FooEventArgs.xml
index e38e616..dff4379 100644
--- a/mcs/tools/mdoc/Test/en.expected/Mono.DocTest.Generic/GenericBase`1+FooEventArgs.xml
+++ b/mcs/tools/mdoc/Test/en.expected/Mono.DocTest.Generic/GenericBase`1+FooEventArgs.xml
@@ -1,5 +1,6 @@
 <Type Name="GenericBase<U>+FooEventArgs" FullName="Mono.DocTest.Generic.GenericBase<U>+FooEventArgs">
   <TypeSignature Language="C#" Value="public class GenericBase<U>.FooEventArgs : EventArgs" />
+  <TypeSignature Language="ILAsm" Value=".class nested public auto ansi beforefieldinit GenericBase`1/FooEventArgs<U> extends System.EventArgs" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -18,6 +19,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public FooEventArgs ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected/Mono.DocTest.Generic/GenericBase`1+NestedCollection+Enumerator.xml b/mcs/tools/mdoc/Test/en.expected/Mono.DocTest.Generic/GenericBase`1+NestedCollection+Enumerator.xml
index 68899a2..7ddcc91 100644
--- a/mcs/tools/mdoc/Test/en.expected/Mono.DocTest.Generic/GenericBase`1+NestedCollection+Enumerator.xml
+++ b/mcs/tools/mdoc/Test/en.expected/Mono.DocTest.Generic/GenericBase`1+NestedCollection+Enumerator.xml
@@ -1,5 +1,6 @@
 <Type Name="GenericBase<U>+NestedCollection+Enumerator" FullName="Mono.DocTest.Generic.GenericBase<U>+NestedCollection+Enumerator">
   <TypeSignature Language="C#" Value="public struct GenericBase<U>.NestedCollection.Enumerator" />
+  <TypeSignature Language="ILAsm" Value=".class nested public sequential ansi sealed beforefieldinit GenericBase`1/NestedCollection/Enumerator<U> extends System.ValueType" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected/Mono.DocTest.Generic/GenericBase`1+NestedCollection.xml b/mcs/tools/mdoc/Test/en.expected/Mono.DocTest.Generic/GenericBase`1+NestedCollection.xml
index 7e24ded..e396bd2 100644
--- a/mcs/tools/mdoc/Test/en.expected/Mono.DocTest.Generic/GenericBase`1+NestedCollection.xml
+++ b/mcs/tools/mdoc/Test/en.expected/Mono.DocTest.Generic/GenericBase`1+NestedCollection.xml
@@ -1,5 +1,6 @@
 <Type Name="GenericBase<U>+NestedCollection" FullName="Mono.DocTest.Generic.GenericBase<U>+NestedCollection">
   <TypeSignature Language="C#" Value="public class GenericBase<U>.NestedCollection" />
+  <TypeSignature Language="ILAsm" Value=".class nested public auto ansi beforefieldinit GenericBase`1/NestedCollection<U> extends System.Object" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -18,6 +19,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public NestedCollection ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected/Mono.DocTest.Generic/GenericBase`1.xml b/mcs/tools/mdoc/Test/en.expected/Mono.DocTest.Generic/GenericBase`1.xml
index 1c21a88..e4b74d3 100644
--- a/mcs/tools/mdoc/Test/en.expected/Mono.DocTest.Generic/GenericBase`1.xml
+++ b/mcs/tools/mdoc/Test/en.expected/Mono.DocTest.Generic/GenericBase`1.xml
@@ -1,5 +1,6 @@
 <Type Name="GenericBase<U>" FullName="Mono.DocTest.Generic.GenericBase<U>">
   <TypeSignature Language="C#" Value="public class GenericBase<U>" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit GenericBase`1<U> extends System.Object" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -19,6 +20,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public GenericBase ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -31,6 +33,7 @@
     </Member>
     <Member MemberName="BaseMethod<S>">
       <MemberSignature Language="C#" Value="public U BaseMethod<S> (S genericParameter);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance !U BaseMethod<S>(!!S genericParameter) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -60,6 +63,7 @@
     </Member>
     <Member MemberName="ConstField1">
       <MemberSignature Language="C#" Value="public const int ConstField1;" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal int32 ConstField1" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -72,8 +76,26 @@
         <remarks>To be added.</remarks>
       </Docs>
     </Member>
+    <Member MemberName="ItemChanged">
+      <MemberSignature Language="C#" Value="public event Action<Mono.DocTest.Generic.MyList<U>,Mono.DocTest.Generic.MyList<U>.Helper<U,U>> ItemChanged;" />
+      <MemberSignature Language="ILAsm" Value=".event class System.Action`2<class Mono.DocTest.Generic.MyList`1<!U>, class Mono.DocTest.Generic.MyList`1/Helper`2<!U, !U, !U>> ItemChanged" />
+      <MemberType>Event</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.Action<Mono.DocTest.Generic.MyList<U>,Mono.DocTest.Generic.MyList<U>+Helper<U,U>></ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />, <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" /></exception>
+        <exception cref="T:System.MulticastNotSupportedException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" /></exception>
+      </Docs>
+    </Member>
     <Member MemberName="MyEvent">
       <MemberSignature Language="C#" Value="public event EventHandler<Mono.DocTest.Generic.GenericBase<U>.FooEventArgs> MyEvent;" />
+      <MemberSignature Language="ILAsm" Value=".event class System.EventHandler`1<class Mono.DocTest.Generic.GenericBase`1/FooEventArgs<!U>> MyEvent" />
       <MemberType>Event</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -90,6 +112,7 @@
     </Member>
     <Member MemberName="op_Explicit">
       <MemberSignature Language="C#" Value="public static U op_Explicit (Mono.DocTest.Generic.GenericBase<U> list);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig specialname !U op_Explicit(class Mono.DocTest.Generic.GenericBase`1<!U> list) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -109,6 +132,7 @@
     </Member>
     <Member MemberName="StaticField1">
       <MemberSignature Language="C#" Value="public static readonly Mono.DocTest.Generic.GenericBase<U> StaticField1;" />
+      <MemberSignature Language="ILAsm" Value=".field public static initonly class Mono.DocTest.Generic.GenericBase`1<!U> StaticField1" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected/Mono.DocTest.Generic/IFoo`1.xml b/mcs/tools/mdoc/Test/en.expected/Mono.DocTest.Generic/IFoo`1.xml
index 8e890ea..834141d 100644
--- a/mcs/tools/mdoc/Test/en.expected/Mono.DocTest.Generic/IFoo`1.xml
+++ b/mcs/tools/mdoc/Test/en.expected/Mono.DocTest.Generic/IFoo`1.xml
@@ -1,5 +1,6 @@
 <Type Name="IFoo<T>" FullName="Mono.DocTest.Generic.IFoo<T>">
   <TypeSignature Language="C#" Value="public interface IFoo<T>" />
+  <TypeSignature Language="ILAsm" Value=".class public interface auto ansi abstract IFoo`1<T>" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -16,6 +17,7 @@
   <Members>
     <Member MemberName="Method<U>">
       <MemberSignature Language="C#" Value="public T Method<U> (T t, U u);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance !T Method<U>(!T t, !!U u) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected/Mono.DocTest.Generic/MyList`1+Helper`2.xml b/mcs/tools/mdoc/Test/en.expected/Mono.DocTest.Generic/MyList`1+Helper`2.xml
index c4c9438..2f389db 100644
--- a/mcs/tools/mdoc/Test/en.expected/Mono.DocTest.Generic/MyList`1+Helper`2.xml
+++ b/mcs/tools/mdoc/Test/en.expected/Mono.DocTest.Generic/MyList`1+Helper`2.xml
@@ -1,5 +1,6 @@
 <Type Name="MyList<T>+Helper<U,V>" FullName="Mono.DocTest.Generic.MyList<T>+Helper<U,V>">
   <TypeSignature Language="C#" Value="public class MyList<T>.Helper<U,V>" />
+  <TypeSignature Language="ILAsm" Value=".class nested public auto ansi beforefieldinit MyList`1/Helper`2<T, U, V> extends System.Object" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -22,6 +23,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public Helper ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -34,6 +36,7 @@
     </Member>
     <Member MemberName="UseT">
       <MemberSignature Language="C#" Value="public void UseT (T a, U b, V c);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void UseT(!T a, !U b, !V c) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected/Mono.DocTest.Generic/MyList`1.xml b/mcs/tools/mdoc/Test/en.expected/Mono.DocTest.Generic/MyList`1.xml
index 02f0fc7..71d07cf 100644
--- a/mcs/tools/mdoc/Test/en.expected/Mono.DocTest.Generic/MyList`1.xml
+++ b/mcs/tools/mdoc/Test/en.expected/Mono.DocTest.Generic/MyList`1.xml
@@ -1,5 +1,6 @@
 <Type Name="MyList<T>" FullName="Mono.DocTest.Generic.MyList<T>">
   <TypeSignature Language="C#" Value="public class MyList<T> : Mono.DocTest.Generic.GenericBase<T>, System.Collections.Generic.IEnumerable<int[]>" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit MyList`1<T> extends Mono.DocTest.Generic.GenericBase`1<!T> implements class System.Collections.Generic.IEnumerable`1<int32[]>, class System.Collections.IEnumerable" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -32,6 +33,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public MyList ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -44,6 +46,7 @@
     </Member>
     <Member MemberName="GetEnumerator">
       <MemberSignature Language="C#" Value="public System.Collections.Generic.IEnumerator<int[]> GetEnumerator ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class System.Collections.Generic.IEnumerator`1<int32[]> GetEnumerator() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -60,6 +63,7 @@
     </Member>
     <Member MemberName="GetHelper<U,V>">
       <MemberSignature Language="C#" Value="public Mono.DocTest.Generic.MyList<T>.Helper<U,V> GetHelper<U,V> ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.DocTest.Generic.MyList`1/Helper`2<!T, !!U, !!V> GetHelper<U, V>() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -82,6 +86,7 @@
     </Member>
     <Member MemberName="Method<U>">
       <MemberSignature Language="C#" Value="public void Method<U> (T t, U u);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Method<U>(!T t, !!U u) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -106,6 +111,7 @@
     </Member>
     <Member MemberName="RefMethod<U>">
       <MemberSignature Language="C#" Value="public void RefMethod<U> (ref T t, ref U u);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void RefMethod<U>(!T t, !!U u) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -130,6 +136,7 @@
     </Member>
     <Member MemberName="System.Collections.IEnumerable.GetEnumerator">
       <MemberSignature Language="C#" Value="System.Collections.IEnumerator IEnumerable.GetEnumerator ();" />
+      <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance class System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -146,6 +153,7 @@
     </Member>
     <Member MemberName="Test">
       <MemberSignature Language="C#" Value="public void Test (T t);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Test(!T t) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -164,6 +172,7 @@
     </Member>
     <Member MemberName="UseHelper<U,V>">
       <MemberSignature Language="C#" Value="public void UseHelper<U,V> (Mono.DocTest.Generic.MyList<T>.Helper<U,V> helper);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void UseHelper<U, V>(class Mono.DocTest.Generic.MyList`1/Helper`2<!T, !!U, !!V> helper) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected/Mono.DocTest.Generic/MyList`2.xml b/mcs/tools/mdoc/Test/en.expected/Mono.DocTest.Generic/MyList`2.xml
index bd4bbfa..1d56947 100644
--- a/mcs/tools/mdoc/Test/en.expected/Mono.DocTest.Generic/MyList`2.xml
+++ b/mcs/tools/mdoc/Test/en.expected/Mono.DocTest.Generic/MyList`2.xml
@@ -1,5 +1,6 @@
 <Type Name="MyList<A,B>" FullName="Mono.DocTest.Generic.MyList<A,B>">
   <TypeSignature Language="C#" Value="public class MyList<A,B> : Mono.DocTest.Generic.GenericBase<System.Collections.Generic.Dictionary<A,B>>, Mono.DocTest.Generic.IFoo<A>, System.Collections.Generic.ICollection<A>, System.Collections.Generic.IEnumerable<A>, System.Collections.Generic.IEnumerator<A> where A : class, IList<B>, new() where B : class, A" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit MyList`2<class .ctor (class System.Collections.Generic.IList`1<!B>) A, class (!A) B> extends Mono.DocTest.Generic.GenericBase`1<class System.Collections.Generic.Dictionary`2<!A, !B>> implements class Mono.DocTest.Generic.IFoo`1<!A>, class System.Collections.Generic.ICollection`1<!A>, class System.Collections.Generic.IEnumerable`1<!A>, class System.Collections.Generic.IEnumerator`1<!A>, class System.Collections.IEnumerable, class System.Collections.IEnumerator, class System.IDisposable" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -48,6 +49,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public MyList ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -60,6 +62,7 @@
     </Member>
     <Member MemberName="CopyTo">
       <MemberSignature Language="C#" Value="public void CopyTo (A[] array, int arrayIndex);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void CopyTo(!A[] array, int32 arrayIndex) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -80,6 +83,7 @@
     </Member>
     <Member MemberName="Count">
       <MemberSignature Language="C#" Value="public int Count { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance int32 Count" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -95,6 +99,7 @@
     </Member>
     <Member MemberName="Current">
       <MemberSignature Language="C#" Value="public A Current { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance !A Current" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -110,6 +115,7 @@
     </Member>
     <Member MemberName="Dispose">
       <MemberSignature Language="C#" Value="public void Dispose ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void Dispose() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -125,6 +131,7 @@
     </Member>
     <Member MemberName="Foo">
       <MemberSignature Language="C#" Value="public System.Collections.Generic.KeyValuePair<System.Collections.Generic.IEnumerable<A>,System.Collections.Generic.IEnumerable<B>> Foo ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance valuetype System.Collections.Generic.KeyValuePair`2<class System.Collections.Generic.IEnumerable`1<!A>, class System.Collections.Generic.IEnumerable`1<!B>> Foo() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -141,6 +148,7 @@
     </Member>
     <Member MemberName="GetEnumerator">
       <MemberSignature Language="C#" Value="public System.Collections.Generic.List<A>.Enumerator GetEnumerator ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance valuetype System.Collections.Generic.List`1/Enumerator<!A> GetEnumerator() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -157,6 +165,7 @@
     </Member>
     <Member MemberName="Mono.DocTest.Generic.IFoo<A>.Method<U>">
       <MemberSignature Language="C#" Value="A IFoo<A>.Method<U> (A a, U u);" />
+      <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance !A Mono.DocTest.Generic.IFoo<A>.Method<U>(!A a, !!U u) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -182,6 +191,7 @@
     </Member>
     <Member MemberName="MoveNext">
       <MemberSignature Language="C#" Value="public bool MoveNext ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance bool MoveNext() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -198,6 +208,7 @@
     </Member>
     <Member MemberName="Reset">
       <MemberSignature Language="C#" Value="public void Reset ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void Reset() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -213,6 +224,7 @@
     </Member>
     <Member MemberName="System.Collections.Generic.ICollection<A>.Add">
       <MemberSignature Language="C#" Value="void ICollection<A>.Add (A item);" />
+      <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance void System.Collections.Generic.ICollection<A>.Add(!A item) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -231,6 +243,7 @@
     </Member>
     <Member MemberName="System.Collections.Generic.ICollection<A>.Clear">
       <MemberSignature Language="C#" Value="void ICollection<A>.Clear ();" />
+      <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance void System.Collections.Generic.ICollection<A>.Clear() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -246,6 +259,7 @@
     </Member>
     <Member MemberName="System.Collections.Generic.ICollection<A>.Contains">
       <MemberSignature Language="C#" Value="bool ICollection<A>.Contains (A item);" />
+      <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance bool System.Collections.Generic.ICollection<A>.Contains(!A item) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -265,6 +279,7 @@
     </Member>
     <Member MemberName="System.Collections.Generic.ICollection<A>.IsReadOnly">
       <MemberSignature Language="C#" Value="bool System.Collections.Generic.ICollection<A>.IsReadOnly { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance bool System.Collections.Generic.ICollection<A>.IsReadOnly" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -280,6 +295,7 @@
     </Member>
     <Member MemberName="System.Collections.Generic.ICollection<A>.Remove">
       <MemberSignature Language="C#" Value="bool ICollection<A>.Remove (A item);" />
+      <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance bool System.Collections.Generic.ICollection<A>.Remove(!A item) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -299,6 +315,7 @@
     </Member>
     <Member MemberName="System.Collections.Generic.IEnumerable<A>.GetEnumerator">
       <MemberSignature Language="C#" Value="System.Collections.Generic.IEnumerator<A> IEnumerable<A>.GetEnumerator ();" />
+      <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance class System.Collections.Generic.IEnumerator`1<!A> System.Collections.Generic.IEnumerable<A>.GetEnumerator() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -315,6 +332,7 @@
     </Member>
     <Member MemberName="System.Collections.Generic.IEnumerator<A>.Current">
       <MemberSignature Language="C#" Value="A System.Collections.Generic.IEnumerator<A>.Current { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance !A System.Collections.Generic.IEnumerator<A>.Current" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -330,6 +348,7 @@
     </Member>
     <Member MemberName="System.Collections.IEnumerable.GetEnumerator">
       <MemberSignature Language="C#" Value="System.Collections.IEnumerator IEnumerable.GetEnumerator ();" />
+      <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance class System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -346,6 +365,7 @@
     </Member>
     <Member MemberName="System.Collections.IEnumerator.Current">
       <MemberSignature Language="C#" Value="object System.Collections.IEnumerator.Current { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance object System.Collections.IEnumerator.Current" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/Color.xml b/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/Color.xml
index b2cb4f0..dfb73f9 100644
--- a/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/Color.xml
+++ b/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/Color.xml
@@ -1,5 +1,6 @@
 <Type Name="Color" FullName="Mono.DocTest.Color">
   <TypeSignature Language="C#" Value="public enum Color" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed Color extends System.Enum" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -14,6 +15,7 @@
   <Members>
     <Member MemberName="AnotherGreen">
       <MemberSignature Language="C#" Value="AnotherGreen" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.DocTest.Color AnotherGreen = int32(2)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -27,6 +29,7 @@
     </Member>
     <Member MemberName="Blue">
       <MemberSignature Language="C#" Value="Blue" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.DocTest.Color Blue = int32(1)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -40,6 +43,7 @@
     </Member>
     <Member MemberName="Green">
       <MemberSignature Language="C#" Value="Green" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.DocTest.Color Green = int32(2)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -53,6 +57,7 @@
     </Member>
     <Member MemberName="Red">
       <MemberSignature Language="C#" Value="Red" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.DocTest.Color Red = int32(0)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/DocAttribute.xml b/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/DocAttribute.xml
index 25220d6..9d3dd4b 100644
--- a/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/DocAttribute.xml
+++ b/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/DocAttribute.xml
@@ -1,5 +1,6 @@
 <Type Name="DocAttribute" FullName="Mono.DocTest.DocAttribute">
   <TypeSignature Language="C#" Value="public class DocAttribute : Attribute" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit DocAttribute extends System.Attribute" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -20,6 +21,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public DocAttribute (string docs);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(string docs) cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -36,6 +38,7 @@
     </Member>
     <Member MemberName="Field">
       <MemberSignature Language="C#" Value="public bool Field;" />
+      <MemberSignature Language="ILAsm" Value=".field public bool Field" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -50,6 +53,7 @@
     </Member>
     <Member MemberName="FlagsEnum">
       <MemberSignature Language="C#" Value="public ConsoleModifiers FlagsEnum;" />
+      <MemberSignature Language="ILAsm" Value=".field public valuetype System.ConsoleModifiers FlagsEnum" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -64,6 +68,7 @@
     </Member>
     <Member MemberName="NonFlagsEnum">
       <MemberSignature Language="C#" Value="public Mono.DocTest.Color NonFlagsEnum;" />
+      <MemberSignature Language="ILAsm" Value=".field public valuetype Mono.DocTest.Color NonFlagsEnum" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -78,6 +83,7 @@
     </Member>
     <Member MemberName="Property">
       <MemberSignature Language="C#" Value="public Type Property { set; get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance class System.Type Property" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/DocValueType.xml b/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/DocValueType.xml
index 26a4a51..5d27f0a 100644
--- a/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/DocValueType.xml
+++ b/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/DocValueType.xml
@@ -1,5 +1,6 @@
 <Type Name="DocValueType" FullName="Mono.DocTest.DocValueType">
   <TypeSignature Language="C#" Value="public struct DocValueType : Mono.DocTest.IProcess" />
+  <TypeSignature Language="ILAsm" Value=".class public sequential ansi sealed beforefieldinit DocValueType extends System.ValueType implements class Mono.DocTest.IProcess" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -19,6 +20,7 @@
   <Members>
     <Member MemberName="M">
       <MemberSignature Language="C#" Value="public void M (int i);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void M(int32 i) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -39,6 +41,7 @@
     </Member>
     <Member MemberName="total">
       <MemberSignature Language="C#" Value="public int total;" />
+      <MemberSignature Language="ILAsm" Value=".field public int32 total" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/IProcess.xml b/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/IProcess.xml
index f43dc55..2a35c4e 100644
--- a/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/IProcess.xml
+++ b/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/IProcess.xml
@@ -1,5 +1,6 @@
 <Type Name="IProcess" FullName="Mono.DocTest.IProcess">
   <TypeSignature Language="C#" Value="public interface IProcess" />
+  <TypeSignature Language="ILAsm" Value=".class public interface auto ansi abstract IProcess" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/UseLists.xml b/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/UseLists.xml
index cbcb006..b30f8bd 100644
--- a/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/UseLists.xml
+++ b/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/UseLists.xml
@@ -1,5 +1,6 @@
 <Type Name="UseLists" FullName="Mono.DocTest.UseLists">
   <TypeSignature Language="C#" Value="public class UseLists" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit UseLists extends System.Object" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -15,6 +16,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public UseLists ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -27,6 +29,7 @@
     </Member>
     <Member MemberName="GetValues<T>">
       <MemberSignature Language="C#" Value="public Mono.DocTest.Generic.MyList<T> GetValues<T> (T value) where T : struct;" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.DocTest.Generic.MyList`1<!!T> GetValues<struct .ctor (class System.ValueType) T>(!!T value) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -56,6 +59,7 @@
     </Member>
     <Member MemberName="Process">
       <MemberSignature Language="C#" Value="public void Process (Mono.DocTest.Generic.MyList<int> list);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Process(class Mono.DocTest.Generic.MyList`1<int32> list) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -74,6 +78,7 @@
     </Member>
     <Member MemberName="Process">
       <MemberSignature Language="C#" Value="public void Process (System.Collections.Generic.List<int> list);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Process(class System.Collections.Generic.List`1<int32> list) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -93,6 +98,7 @@
     </Member>
     <Member MemberName="Process">
       <MemberSignature Language="C#" Value="public void Process (System.Collections.Generic.List<Predicate<int>> list);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Process(class System.Collections.Generic.List`1<class System.Predicate`1<int32>> list) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -113,6 +119,7 @@
     </Member>
     <Member MemberName="Process<T>">
       <MemberSignature Language="C#" Value="public void Process<T> (System.Collections.Generic.List<Predicate<T>> list);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Process<T>(class System.Collections.Generic.List`1<class System.Predicate`1<!!T>> list) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -137,6 +144,7 @@
     </Member>
     <Member MemberName="UseHelper<T,U,V>">
       <MemberSignature Language="C#" Value="public void UseHelper<T,U,V> (Mono.DocTest.Generic.MyList<T>.Helper<U,V> helper);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void UseHelper<T, U, V>(class Mono.DocTest.Generic.MyList`1/Helper`2<!!T, !!U, !!V> helper) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/Widget+Del.xml b/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/Widget+Del.xml
index 1c419c1..e3ad767 100644
--- a/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/Widget+Del.xml
+++ b/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/Widget+Del.xml
@@ -1,5 +1,6 @@
 <Type Name="Widget+Del" FullName="Mono.DocTest.Widget+Del">
   <TypeSignature Language="C#" Value="public delegate void Widget.Del(int i);" />
+  <TypeSignature Language="ILAsm" Value=".class nested public auto ansi sealed Widget/Del extends System.MulticastDelegate" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/Widget+Direction.xml b/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/Widget+Direction.xml
index 129466d..93c746f 100644
--- a/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/Widget+Direction.xml
+++ b/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/Widget+Direction.xml
@@ -1,5 +1,6 @@
 <Type Name="Widget+Direction" FullName="Mono.DocTest.Widget+Direction">
   <TypeSignature Language="C#" Value="public enum Widget.Direction" />
+  <TypeSignature Language="ILAsm" Value=".class nested public auto ansi sealed Widget/Direction extends System.Enum" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -19,6 +20,7 @@
   <Members>
     <Member MemberName="East">
       <MemberSignature Language="C#" Value="East" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.DocTest.Widget/Direction East = int32(2)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -32,6 +34,7 @@
     </Member>
     <Member MemberName="North">
       <MemberSignature Language="C#" Value="North" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.DocTest.Widget/Direction North = int32(0)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -45,6 +48,7 @@
     </Member>
     <Member MemberName="South">
       <MemberSignature Language="C#" Value="South" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.DocTest.Widget/Direction South = int32(1)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -58,6 +62,7 @@
     </Member>
     <Member MemberName="West">
       <MemberSignature Language="C#" Value="West" />
+      <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.DocTest.Widget/Direction West = int32(3)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/Widget+IMenuItem.xml b/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/Widget+IMenuItem.xml
index ec0f50d..6b5f9fc 100644
--- a/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/Widget+IMenuItem.xml
+++ b/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/Widget+IMenuItem.xml
@@ -1,5 +1,6 @@
 <Type Name="Widget+IMenuItem" FullName="Mono.DocTest.Widget+IMenuItem">
   <TypeSignature Language="C#" Value="public interface Widget.IMenuItem" />
+  <TypeSignature Language="ILAsm" Value=".class nested public interface auto ansi abstract Widget/IMenuItem" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -12,6 +13,7 @@
   <Members>
     <Member MemberName="A">
       <MemberSignature Language="C#" Value="public void A ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void A() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -27,6 +29,7 @@
     </Member>
     <Member MemberName="B">
       <MemberSignature Language="C#" Value="public int B { set; get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance int32 B" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/Widget+NestedClass+Double+Triple+Quadruple.xml b/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/Widget+NestedClass+Double+Triple+Quadruple.xml
index 22cd620..937f51a 100644
--- a/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/Widget+NestedClass+Double+Triple+Quadruple.xml
+++ b/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/Widget+NestedClass+Double+Triple+Quadruple.xml
@@ -1,5 +1,6 @@
 <Type Name="Widget+NestedClass+Double+Triple+Quadruple" FullName="Mono.DocTest.Widget+NestedClass+Double+Triple+Quadruple">
   <TypeSignature Language="C#" Value="public class Widget.NestedClass.Double.Triple.Quadruple" />
+  <TypeSignature Language="ILAsm" Value=".class nested public auto ansi beforefieldinit Widget/NestedClass/Double/Triple/Quadruple extends System.Object" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -15,6 +16,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public Quadruple ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/Widget+NestedClass+Double+Triple.xml b/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/Widget+NestedClass+Double+Triple.xml
index a687257..5726ead 100644
--- a/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/Widget+NestedClass+Double+Triple.xml
+++ b/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/Widget+NestedClass+Double+Triple.xml
@@ -1,5 +1,6 @@
 <Type Name="Widget+NestedClass+Double+Triple" FullName="Mono.DocTest.Widget+NestedClass+Double+Triple">
   <TypeSignature Language="C#" Value="public class Widget.NestedClass.Double.Triple" />
+  <TypeSignature Language="ILAsm" Value=".class nested public auto ansi beforefieldinit Widget/NestedClass/Double/Triple extends System.Object" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -15,6 +16,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public Triple ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/Widget+NestedClass+Double.xml b/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/Widget+NestedClass+Double.xml
index 1a6fba7..04d7bb4 100644
--- a/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/Widget+NestedClass+Double.xml
+++ b/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/Widget+NestedClass+Double.xml
@@ -1,5 +1,6 @@
 <Type Name="Widget+NestedClass+Double" FullName="Mono.DocTest.Widget+NestedClass+Double">
   <TypeSignature Language="C#" Value="public class Widget.NestedClass.Double" />
+  <TypeSignature Language="ILAsm" Value=".class nested public auto ansi beforefieldinit Widget/NestedClass/Double extends System.Object" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -15,6 +16,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public Double ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/Widget+NestedClass.xml b/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/Widget+NestedClass.xml
index 135b3d8..432b7c6 100644
--- a/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/Widget+NestedClass.xml
+++ b/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/Widget+NestedClass.xml
@@ -1,5 +1,6 @@
 <Type Name="Widget+NestedClass" FullName="Mono.DocTest.Widget+NestedClass">
   <TypeSignature Language="C#" Value="public class Widget.NestedClass" />
+  <TypeSignature Language="ILAsm" Value=".class nested public auto ansi beforefieldinit Widget/NestedClass extends System.Object" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -15,6 +16,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public NestedClass ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -27,6 +29,7 @@
     </Member>
     <Member MemberName="M">
       <MemberSignature Language="C#" Value="public void M (int i);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void M(int32 i) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -45,6 +48,7 @@
     </Member>
     <Member MemberName="value">
       <MemberSignature Language="C#" Value="public int value;" />
+      <MemberSignature Language="ILAsm" Value=".field public int32 value" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/Widget+NestedClass`1.xml b/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/Widget+NestedClass`1.xml
index d57403f..56114c5 100644
--- a/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/Widget+NestedClass`1.xml
+++ b/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/Widget+NestedClass`1.xml
@@ -1,5 +1,6 @@
 <Type Name="Widget+NestedClass<T>" FullName="Mono.DocTest.Widget+NestedClass<T>">
   <TypeSignature Language="C#" Value="public class Widget.NestedClass<T>" />
+  <TypeSignature Language="ILAsm" Value=".class nested public auto ansi beforefieldinit Widget/NestedClass`1<T> extends System.Object" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -19,6 +20,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public NestedClass ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -31,6 +33,7 @@
     </Member>
     <Member MemberName="M">
       <MemberSignature Language="C#" Value="public void M (int i);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void M(int32 i) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -49,6 +52,7 @@
     </Member>
     <Member MemberName="value">
       <MemberSignature Language="C#" Value="public int value;" />
+      <MemberSignature Language="ILAsm" Value=".field public int32 value" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/Widget.xml b/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/Widget.xml
index eea1914..ba6c70b 100644
--- a/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/Widget.xml
+++ b/mcs/tools/mdoc/Test/en.expected/Mono.DocTest/Widget.xml
@@ -1,5 +1,6 @@
 <Type Name="Widget" FullName="Mono.DocTest.Widget">
   <TypeSignature Language="C#" Value="public class Widget : Mono.DocTest.IProcess" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit Widget extends System.Object implements class Mono.DocTest.IProcess" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -19,6 +20,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public Widget ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -31,6 +33,7 @@
     </Member>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public Widget (Converter<string,string> c);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(class System.Converter`2<string, string> c) cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -46,6 +49,7 @@
     </Member>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public Widget (string s);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(string s) cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -61,6 +65,7 @@
     </Member>
     <Member MemberName="AnEvent">
       <MemberSignature Language="C#" Value="public event Mono.DocTest.Widget.Del AnEvent;" />
+      <MemberSignature Language="ILAsm" Value=".event class Mono.DocTest.Widget/Del AnEvent" />
       <MemberType>Event</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -86,6 +91,7 @@
     </Member>
     <Member MemberName="AnotherEvent">
       <MemberSignature Language="C#" Value="protected event Mono.DocTest.Widget.Del AnotherEvent;" />
+      <MemberSignature Language="ILAsm" Value=".event class Mono.DocTest.Widget/Del AnotherEvent" />
       <MemberType>Event</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -102,6 +108,7 @@
     </Member>
     <Member MemberName="array1">
       <MemberSignature Language="C#" Value="public long[] array1;" />
+      <MemberSignature Language="ILAsm" Value=".field public int64[] array1" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -116,6 +123,7 @@
     </Member>
     <Member MemberName="array2">
       <MemberSignature Language="C#" Value="public Mono.DocTest.Widget[,] array2;" />
+      <MemberSignature Language="ILAsm" Value=".field public class Mono.DocTest.Widget[,] array2" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -130,6 +138,7 @@
     </Member>
     <Member MemberName="classCtorError">
       <MemberSignature Language="C#" Value="public static readonly string[] classCtorError;" />
+      <MemberSignature Language="ILAsm" Value=".field public static initonly string[] classCtorError" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -144,6 +153,7 @@
     </Member>
     <Member MemberName="defaultColor">
       <MemberSignature Language="C#" Value="protected static Mono.DocTest.Color defaultColor;" />
+      <MemberSignature Language="ILAsm" Value=".field family static valuetype Mono.DocTest.Color defaultColor" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -158,6 +168,7 @@
     </Member>
     <Member MemberName="Height">
       <MemberSignature Language="C#" Value="protected long Height { get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance int64 Height" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -178,6 +189,7 @@
     </Member>
     <Member MemberName="Item">
       <MemberSignature Language="C#" Value="public int this[int i] { set; get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance int32 Item(int32)" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -205,6 +217,7 @@
     </Member>
     <Member MemberName="Item">
       <MemberSignature Language="C#" Value="public int this[string s, int i] { set; get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance int32 Item(string, int32)" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -226,6 +239,7 @@
     </Member>
     <Member MemberName="M0">
       <MemberSignature Language="C#" Value="public static void M0 ();" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig void M0() cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -241,6 +255,7 @@
     </Member>
     <Member MemberName="M1">
       <MemberSignature Language="C#" Value="public void M1 (char c, out float f, ref Mono.DocTest.DocValueType v);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void M1(char c, float32 f, valuetype Mono.DocTest.DocValueType v) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -291,6 +306,7 @@
     </Member>
     <Member MemberName="M2">
       <MemberSignature Language="C#" Value="public void M2 (short[] x1, int[,] x2, long[][] x3);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void M2(int16[] x1, int32[,] x2, int64[][] x3) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -313,6 +329,7 @@
     </Member>
     <Member MemberName="M3">
       <MemberSignature Language="C#" Value="protected void M3 (long[][] x3, Mono.DocTest.Widget[,,][] x4);" />
+      <MemberSignature Language="ILAsm" Value=".method familyhidebysig instance void M3(int64[][] x3, class Mono.DocTest.Widget[,,][] x4) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -333,6 +350,7 @@
     </Member>
     <Member MemberName="M4">
       <MemberSignature Language="C#" Value="protected void M4 (char* pc, Mono.DocTest.Color** ppf);" />
+      <MemberSignature Language="ILAsm" Value=".method familyhidebysig instance void M4(char* pc, valuetype Mono.DocTest.Color** ppf) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -353,6 +371,7 @@
     </Member>
     <Member MemberName="M5">
       <MemberSignature Language="C#" Value="protected void M5 (void* pv, double*[,][] pd);" />
+      <MemberSignature Language="ILAsm" Value=".method familyhidebysig instance void M5(void* pv, float64*[,][] pd) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -373,6 +392,7 @@
     </Member>
     <Member MemberName="M6">
       <MemberSignature Language="C#" Value="protected void M6 (int i, object[] args);" />
+      <MemberSignature Language="ILAsm" Value=".method familyhidebysig instance void M6(int32 i, object[] args) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -399,6 +419,7 @@
     </Member>
     <Member MemberName="M7">
       <MemberSignature Language="C#" Value="public void M7 (Mono.DocTest.Widget.NestedClass.Double.Triple.Quadruple a);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void M7(class Mono.DocTest.Widget/NestedClass/Double/Triple/Quadruple a) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -417,6 +438,7 @@
     </Member>
     <Member MemberName="message">
       <MemberSignature Language="C#" Value="public string message;" />
+      <MemberSignature Language="ILAsm" Value=".field public string message" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -431,6 +453,7 @@
     </Member>
     <Member MemberName="monthlyAverage">
       <MemberSignature Language="C#" Value="protected readonly double monthlyAverage;" />
+      <MemberSignature Language="ILAsm" Value=".field familyorassembly initonly float64 monthlyAverage" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -445,6 +468,7 @@
     </Member>
     <Member MemberName="op_Addition">
       <MemberSignature Language="C#" Value="public static Mono.DocTest.Widget op_Addition (Mono.DocTest.Widget x1, Mono.DocTest.Widget x2);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig specialname class Mono.DocTest.Widget op_Addition(class Mono.DocTest.Widget x1, class Mono.DocTest.Widget x2) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -466,6 +490,7 @@
     </Member>
     <Member MemberName="op_Explicit">
       <MemberSignature Language="C#" Value="public static int op_Explicit (Mono.DocTest.Widget x);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig specialname int32 op_Explicit(class Mono.DocTest.Widget x) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -485,6 +510,7 @@
     </Member>
     <Member MemberName="op_Implicit">
       <MemberSignature Language="C#" Value="public static long op_Implicit (Mono.DocTest.Widget x);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig specialname int64 op_Implicit(class Mono.DocTest.Widget x) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -504,6 +530,7 @@
     </Member>
     <Member MemberName="op_UnaryPlus">
       <MemberSignature Language="C#" Value="public static Mono.DocTest.Widget op_UnaryPlus (Mono.DocTest.Widget x);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig specialname class Mono.DocTest.Widget op_UnaryPlus(class Mono.DocTest.Widget x) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -523,6 +550,7 @@
     </Member>
     <Member MemberName="pCount">
       <MemberSignature Language="C#" Value="public int* pCount;" />
+      <MemberSignature Language="ILAsm" Value=".field public int32* pCount" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -537,6 +565,7 @@
     </Member>
     <Member MemberName="PI">
       <MemberSignature Language="C#" Value="protected const double PI = 3.14159;" />
+      <MemberSignature Language="ILAsm" Value=".field familyorassembly static literal float64 PI = (3.14159)" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -552,6 +581,7 @@
     </Member>
     <Member MemberName="ppValues">
       <MemberSignature Language="C#" Value="public float** ppValues;" />
+      <MemberSignature Language="ILAsm" Value=".field public float32** ppValues" />
       <MemberType>Field</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -566,6 +596,7 @@
     </Member>
     <Member MemberName="Width">
       <MemberSignature Language="C#" Value="public int Width { protected set; get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance int32 Width" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -592,6 +623,7 @@
     </Member>
     <Member MemberName="X">
       <MemberSignature Language="C#" Value="protected short X { set; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance int16 X" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -607,6 +639,7 @@
     </Member>
     <Member MemberName="Y">
       <MemberSignature Language="C#" Value="protected double Y { set; get; }" />
+      <MemberSignature Language="ILAsm" Value=".property instance float64 Y" />
       <MemberType>Property</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected/NoNamespace.xml b/mcs/tools/mdoc/Test/en.expected/NoNamespace.xml
index fdb3d64..89aea7a 100644
--- a/mcs/tools/mdoc/Test/en.expected/NoNamespace.xml
+++ b/mcs/tools/mdoc/Test/en.expected/NoNamespace.xml
@@ -1,5 +1,6 @@
 <Type Name="NoNamespace" FullName="NoNamespace">
   <TypeSignature Language="C#" Value="public class NoNamespace" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit NoNamespace extends System.Object" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -15,6 +16,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public NoNamespace ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected/System/Action`1.xml b/mcs/tools/mdoc/Test/en.expected/System/Action`1.xml
index b2beb95..7560590 100644
--- a/mcs/tools/mdoc/Test/en.expected/System/Action`1.xml
+++ b/mcs/tools/mdoc/Test/en.expected/System/Action`1.xml
@@ -1,5 +1,6 @@
 <Type Name="Action<T>" FullName="System.Action<T>">
   <TypeSignature Language="C#" Value="public delegate void Action<T>(T obj);" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed Action`1<T> extends System.MulticastDelegate" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected/System/Array.xml b/mcs/tools/mdoc/Test/en.expected/System/Array.xml
index c18c5df..2965a7f 100644
--- a/mcs/tools/mdoc/Test/en.expected/System/Array.xml
+++ b/mcs/tools/mdoc/Test/en.expected/System/Array.xml
@@ -1,5 +1,6 @@
 <Type Name="Array" FullName="System.Array">
   <TypeSignature Language="C#" Value="public class Array" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit Array extends System.Object" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -15,6 +16,7 @@
   <Members>
     <Member MemberName=".ctor">
       <MemberSignature Language="C#" Value="public Array ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -27,6 +29,7 @@
     </Member>
     <Member MemberName="AsReadOnly<T>">
       <MemberSignature Language="C#" Value="public static System.Collections.ObjectModel.ReadOnlyCollection<T> AsReadOnly<T> (T[] array);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig class System.Collections.ObjectModel.ReadOnlyCollection`1<!!T> AsReadOnly<T>(!!T[] array) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -51,6 +54,7 @@
     </Member>
     <Member MemberName="ConvertAll<TInput,TOutput>">
       <MemberSignature Language="C#" Value="public static TOutput[] ConvertAll<TInput,TOutput> (TInput[] array, Converter<TInput,TOutput> converter);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig !!TOutput[] ConvertAll<TInput, TOutput>(!!TInput[] array, class System.Converter`2<!!TInput, !!TOutput> converter) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -79,6 +83,7 @@
     </Member>
     <Member MemberName="Resize<T>">
       <MemberSignature Language="C#" Value="public static void Resize<T> (ref T[] array, int newSize);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig void Resize<T>(!!T[] array, int32 newSize) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected/System/AsyncCallback.xml b/mcs/tools/mdoc/Test/en.expected/System/AsyncCallback.xml
index 92d8dcf..deb06e9 100644
--- a/mcs/tools/mdoc/Test/en.expected/System/AsyncCallback.xml
+++ b/mcs/tools/mdoc/Test/en.expected/System/AsyncCallback.xml
@@ -1,5 +1,6 @@
 <Type Name="AsyncCallback" FullName="System.AsyncCallback">
   <TypeSignature Language="C#" Value="public delegate void AsyncCallback(IAsyncResult ar);" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed AsyncCallback extends System.MulticastDelegate" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected/System/Environment+SpecialFolder.xml b/mcs/tools/mdoc/Test/en.expected/System/Environment+SpecialFolder.xml
index aac9cfd..6e6a940 100644
--- a/mcs/tools/mdoc/Test/en.expected/System/Environment+SpecialFolder.xml
+++ b/mcs/tools/mdoc/Test/en.expected/System/Environment+SpecialFolder.xml
@@ -1,5 +1,6 @@
 <Type Name="Environment+SpecialFolder" FullName="System.Environment+SpecialFolder">
   <TypeSignature Language="C#" Value="public enum Environment.SpecialFolder" />
+  <TypeSignature Language="ILAsm" Value=".class nested public auto ansi sealed Environment/SpecialFolder extends System.Enum" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected/System/Environment.xml b/mcs/tools/mdoc/Test/en.expected/System/Environment.xml
index b3a0155..7bf1dc8 100644
--- a/mcs/tools/mdoc/Test/en.expected/System/Environment.xml
+++ b/mcs/tools/mdoc/Test/en.expected/System/Environment.xml
@@ -1,5 +1,6 @@
 <Type Name="Environment" FullName="System.Environment">
   <TypeSignature Language="C#" Value="public static class Environment" />
+  <TypeSignature Language="ILAsm" Value=".class public auto ansi abstract sealed beforefieldinit Environment extends System.Object" />
   <AssemblyInfo>
     <AssemblyName>DocTest</AssemblyName>
     <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -15,6 +16,7 @@
   <Members>
     <Member MemberName="GetFolderPath">
       <MemberSignature Language="C#" Value="public static string GetFolderPath (Environment.SpecialFolder folder);" />
+      <MemberSignature Language="ILAsm" Value=".method public static hidebysig string GetFolderPath(valuetype System.Environment/SpecialFolder folder) cil managed" />
       <MemberType>Method</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mcs/tools/mdoc/Test/en.expected/index.xml b/mcs/tools/mdoc/Test/en.expected/index.xml
index 8506245..9e4659e 100644
--- a/mcs/tools/mdoc/Test/en.expected/index.xml
+++ b/mcs/tools/mdoc/Test/en.expected/index.xml
@@ -58,6 +58,7 @@
       </Targets>
       <Member MemberName="Bar<T>">
         <MemberSignature Language="C#" Value="public static void Bar<T> (this Mono.DocTest.Generic.IFoo<T> self, string s);" />
+        <MemberSignature Language="ILAsm" Value=".method public static hidebysig void Bar<T>(class Mono.DocTest.Generic.IFoo`1<!!T> self, string s) cil managed" />
         <MemberType>ExtensionMethod</MemberType>
         <ReturnValue>
           <ReturnType>System.Void</ReturnType>
@@ -84,6 +85,7 @@
       </Targets>
       <Member MemberName="ForEach<T>">
         <MemberSignature Language="C#" Value="public static void ForEach<T> (this System.Collections.Generic.IEnumerable<T> self, Action<T> a);" />
+        <MemberSignature Language="ILAsm" Value=".method public static hidebysig void ForEach<T>(class System.Collections.Generic.IEnumerable`1<!!T> self, class System.Action`1<!!T> a) cil managed" />
         <MemberType>ExtensionMethod</MemberType>
         <ReturnValue>
           <ReturnType>System.Void</ReturnType>
@@ -110,6 +112,7 @@
       </Targets>
       <Member MemberName="ToDouble">
         <MemberSignature Language="C#" Value="public static System.Collections.Generic.IEnumerable<double> ToDouble (this System.Collections.Generic.IEnumerable<int> list);" />
+        <MemberSignature Language="ILAsm" Value=".method public static hidebysig class System.Collections.Generic.IEnumerable`1<float64> ToDouble(class System.Collections.Generic.IEnumerable`1<int32> list) cil managed" />
         <MemberType>ExtensionMethod</MemberType>
         <ReturnValue>
           <ReturnType>System.Collections.Generic.IEnumerable<System.Double></ReturnType>
@@ -130,6 +133,7 @@
       </Targets>
       <Member MemberName="ToDouble<T>">
         <MemberSignature Language="C#" Value="public static double ToDouble<T> (this T val) where T : Mono.DocTest.Generic.IFoo<T>;" />
+        <MemberSignature Language="ILAsm" Value=".method public static hidebysig float64 ToDouble<(class Mono.DocTest.Generic.IFoo`1<!!T>) T>(!!T val) cil managed" />
         <MemberType>ExtensionMethod</MemberType>
         <ReturnValue>
           <ReturnType>System.Double</ReturnType>
@@ -158,6 +162,7 @@
       </Targets>
       <Member MemberName="ToEnumerable<T>">
         <MemberSignature Language="C#" Value="public static System.Collections.Generic.IEnumerable<T> ToEnumerable<T> (this T self);" />
+        <MemberSignature Language="ILAsm" Value=".method public static hidebysig class System.Collections.Generic.IEnumerable`1<!!T> ToEnumerable<T>(!!T self) cil managed" />
         <MemberType>ExtensionMethod</MemberType>
         <ReturnValue>
           <ReturnType>System.Collections.Generic.IEnumerable<T></ReturnType>
diff --git a/mcs/tools/mdoc/Test/html.expected/Mono.DocTest.Generic/Func`2.html b/mcs/tools/mdoc/Test/html.expected/Mono.DocTest.Generic/Func`2.html
index a3826ea..ade5740 100644
--- a/mcs/tools/mdoc/Test/html.expected/Mono.DocTest.Generic/Func`2.html
+++ b/mcs/tools/mdoc/Test/html.expected/Mono.DocTest.Generic/Func`2.html
@@ -244,10 +244,10 @@
         </dl>
       </blockquote>
       <h4 class="Subsection">
-        <a href="javascript:toggle_display('T:Mono.DocTest.Generic.Func`2:Docs:Value')">
-          <span id="T:Mono.DocTest.Generic.Func`2:Docs:Value:toggle">⊟</span> Value</a>
+        <a href="javascript:toggle_display('T:Mono.DocTest.Generic.Func`2:Docs:Returns')">
+          <span id="T:Mono.DocTest.Generic.Func`2:Docs:Returns:toggle">⊟</span> Returns</a>
       </h4>
-      <blockquote class="SubsectionBox" id="T:Mono.DocTest.Generic.Func`2:Docs:Value">
+      <blockquote class="SubsectionBox" id="T:Mono.DocTest.Generic.Func`2:Docs:Returns">
         <span class="NotEntered">Documentation for this section has not yet been entered.</span>
       </blockquote>
       <h4 class="Subsection">
diff --git a/mcs/tools/mdoc/Test/html.expected/Mono.DocTest.Generic/GenericBase`1.html b/mcs/tools/mdoc/Test/html.expected/Mono.DocTest.Generic/GenericBase`1.html
index 303198a..4d1042c 100644
--- a/mcs/tools/mdoc/Test/html.expected/Mono.DocTest.Generic/GenericBase`1.html
+++ b/mcs/tools/mdoc/Test/html.expected/Mono.DocTest.Generic/GenericBase`1.html
@@ -343,6 +343,20 @@
                 </td>
                 <td>
                   <b>
+                    <a href="#E:Mono.DocTest.Generic.GenericBase`1.ItemChanged">ItemChanged</a>
+                  </b>
+                </td>
+                <td>
+                  <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+                </td>
+              </tr>
+              <tr valign="top">
+                <td>
+                  <div>
+                  </div>
+                </td>
+                <td>
+                  <b>
                     <a href="#E:Mono.DocTest.Generic.GenericBase`1.MyEvent">MyEvent</a>
                   </b>
                 </td>
@@ -502,6 +516,56 @@
             <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</blockquote>
           <hr size="1" />
         </blockquote>
+        <h3 id="E:Mono.DocTest.Generic.GenericBase`1.ItemChanged">
+          <a href="javascript:toggle_display('E:Mono.DocTest.Generic.GenericBase`1.ItemChanged:member')">
+            <span id="E:Mono.DocTest.Generic.GenericBase`1.ItemChanged:member:toggle">⊟</span> ItemChanged Event</a>
+        </h3>
+        <blockquote id="E:Mono.DocTest.Generic.GenericBase`1.ItemChanged:member">
+          <p class="Summary">
+            <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+          </p>
+          <div class="Signature">public event <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Action`2">Action<MyList<U>, MyList<U>.Helper<U, U>></a> <b>ItemChanged</b> </div>
+          <h4 class="Subsection">
+            <a href="javascript:toggle_display('E:Mono.DocTest.Generic.GenericBase`1.ItemChanged:Exceptions')">
+              <span id="E:Mono.DocTest.Generic.GenericBase`1.ItemChanged:Exceptions:toggle">⊟</span> Exceptions</a>
+          </h4>
+          <blockquote class="SubsectionBox" id="E:Mono.DocTest.Generic.GenericBase`1.ItemChanged:Exceptions">
+            <table class="TypeDocumentation">
+              <tr>
+                <th>Type</th>
+                <th>Reason</th>
+              </tr>
+              <tr valign="top">
+                <td>
+                  <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.ArgumentException">ArgumentException</a>
+                </td>
+                <td>
+                  <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+                </td>
+              </tr>
+              <tr valign="top">
+                <td>
+                  <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.MulticastNotSupportedException">MulticastNotSupportedException</a>
+                </td>
+                <td>
+                  <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+                </td>
+              </tr>
+            </table>
+          </blockquote>
+          <h4 class="Subsection">
+            <a href="javascript:toggle_display('E:Mono.DocTest.Generic.GenericBase`1.ItemChanged:Remarks')">
+              <span id="E:Mono.DocTest.Generic.GenericBase`1.ItemChanged:Remarks:toggle">⊟</span> Remarks</a>
+          </h4>
+          <blockquote class="SubsectionBox" id="E:Mono.DocTest.Generic.GenericBase`1.ItemChanged:Remarks">E:Mono.DocTest.Generic.GenericBase`1.ItemChanged</blockquote>
+          <h4 class="Subsection">
+            <a href="javascript:toggle_display('E:Mono.DocTest.Generic.GenericBase`1.ItemChanged:Version Information')">
+              <span id="E:Mono.DocTest.Generic.GenericBase`1.ItemChanged:Version Information:toggle">⊟</span> Requirements</a>
+          </h4>
+          <blockquote class="SubsectionBox" id="E:Mono.DocTest.Generic.GenericBase`1.ItemChanged:Version Information">
+            <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</blockquote>
+          <hr size="1" />
+        </blockquote>
         <h3 id="E:Mono.DocTest.Generic.GenericBase`1.MyEvent">
           <a href="javascript:toggle_display('E:Mono.DocTest.Generic.GenericBase`1.MyEvent:member')">
             <span id="E:Mono.DocTest.Generic.GenericBase`1.MyEvent:member:toggle">⊟</span> MyEvent Event</a>
diff --git a/mcs/tools/mdoc/Test/html.expected/Mono.DocTest.Generic/MyList`1.html b/mcs/tools/mdoc/Test/html.expected/Mono.DocTest.Generic/MyList`1.html
index b37bff2..aa189ef 100644
--- a/mcs/tools/mdoc/Test/html.expected/Mono.DocTest.Generic/MyList`1.html
+++ b/mcs/tools/mdoc/Test/html.expected/Mono.DocTest.Generic/MyList`1.html
@@ -389,6 +389,19 @@
                 </td>
                 <td>
                   <b>
+                    <a href="../Mono.DocTest.Generic/GenericBase`1.html#E:Mono.DocTest.Generic.GenericBase`1.ItemChanged">ItemChanged</a>
+                  </b>
+                </td>
+                <td>
+                  <span class="NotEntered">Documentation for this section has not yet been entered.</span> (<i>Inherited from <a href="../Mono.DocTest.Generic/GenericBase`1.html">GenericBase<U></a>.</i>)</td>
+              </tr>
+              <tr valign="top">
+                <td>
+                  <div>
+                  </div>
+                </td>
+                <td>
+                  <b>
                     <a href="../Mono.DocTest.Generic/GenericBase`1.html#E:Mono.DocTest.Generic.GenericBase`1.MyEvent">MyEvent</a>
                   </b>
                 </td>
diff --git a/mcs/tools/mdoc/Test/html.expected/Mono.DocTest.Generic/MyList`2.html b/mcs/tools/mdoc/Test/html.expected/Mono.DocTest.Generic/MyList`2.html
index 22a3009..450aff9 100644
--- a/mcs/tools/mdoc/Test/html.expected/Mono.DocTest.Generic/MyList`2.html
+++ b/mcs/tools/mdoc/Test/html.expected/Mono.DocTest.Generic/MyList`2.html
@@ -378,7 +378,7 @@
                 <td colspan="2">
                   <b>
                     <a href="#M:Mono.DocTest.Generic.MyList`2.Foo">Foo</a>
-                  </b>()<nobr> : <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Generic.KeyValuePair`1">KeyValuePair<IEnumerable<A>, IEnumerable<B>></a></nobr><blockquote><span class="NotEntered">Documentation for this section has not yet been entered.</span></blockquote></td>
+                  </b>()<nobr> : <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Generic.KeyValuePair`2">KeyValuePair<IEnumerable<A>, IEnumerable<B>></a></nobr><blockquote><span class="NotEntered">Documentation for this section has not yet been entered.</span></blockquote></td>
               </tr>
               <tr valign="top">
                 <td>
@@ -427,6 +427,19 @@
                 </td>
                 <td>
                   <b>
+                    <a href="../Mono.DocTest.Generic/GenericBase`1.html#E:Mono.DocTest.Generic.GenericBase`1.ItemChanged">ItemChanged</a>
+                  </b>
+                </td>
+                <td>
+                  <span class="NotEntered">Documentation for this section has not yet been entered.</span> (<i>Inherited from <a href="../Mono.DocTest.Generic/GenericBase`1.html">GenericBase<U></a>.</i>)</td>
+              </tr>
+              <tr valign="top">
+                <td>
+                  <div>
+                  </div>
+                </td>
+                <td>
+                  <b>
                     <a href="../Mono.DocTest.Generic/GenericBase`1.html#E:Mono.DocTest.Generic.GenericBase`1.MyEvent">MyEvent</a>
                   </b>
                 </td>
@@ -796,7 +809,7 @@
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
-          <div class="Signature">public <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Generic.KeyValuePair`1">KeyValuePair<IEnumerable<A>, IEnumerable<B>></a> <b>Foo</b> ()</div>
+          <div class="Signature">public <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Generic.KeyValuePair`2">KeyValuePair<IEnumerable<A>, IEnumerable<B>></a> <b>Foo</b> ()</div>
           <h4 class="Subsection">
             <a href="javascript:toggle_display('M:Mono.DocTest.Generic.MyList`2.Foo:Returns')">
               <span id="M:Mono.DocTest.Generic.MyList`2.Foo:Returns:toggle">⊟</span> Returns</a>
diff --git a/mcs/tools/mdoc/Test/msxdoc-expected.importslashdoc.xml b/mcs/tools/mdoc/Test/msxdoc-expected.importslashdoc.xml
index aed861b..ce4da95 100644
--- a/mcs/tools/mdoc/Test/msxdoc-expected.importslashdoc.xml
+++ b/mcs/tools/mdoc/Test/msxdoc-expected.importslashdoc.xml
@@ -576,7 +576,7 @@ class Example {
             <typeparam name="TRet">return type, with attributes!</typeparam>
             <param name="a">To be added.</param>
             <summary>To be added.</summary>
-            <value>To be added.</value>
+            <returns>To be added.</returns>
             <remarks>
                 <c>T:Mono.DocTest.Generic.Func`2</c>.</remarks>
         </member>
@@ -604,6 +604,12 @@ class Example {
                 <c>F:Mono.DocTest.GenericBase`1.ConstField1</c>
             </remarks>
         </member>
+        <member name="E:Mono.DocTest.Generic.GenericBase`1.ItemChanged">
+            <summary>To be added.</summary>
+            <remarks>E:Mono.DocTest.Generic.GenericBase`1.ItemChanged</remarks>
+            <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />, <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" /></exception>
+            <exception cref="T:System.MulticastNotSupportedException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" /></exception>
+        </member>
         <member name="E:Mono.DocTest.Generic.GenericBase`1.MyEvent">
             <summary>To be added.</summary>
             <remarks>E:Mono.DocTest.Generic.GenericBase`1.MyEvent</remarks>
diff --git a/mcs/tools/mdoc/Test/validate.check.monodocer.importslashdoc b/mcs/tools/mdoc/Test/validate.check.monodocer.importslashdoc
index 6b36099..ba75ca6 100644
--- a/mcs/tools/mdoc/Test/validate.check.monodocer.importslashdoc
+++ b/mcs/tools/mdoc/Test/validate.check.monodocer.importslashdoc
@@ -1,4 +1,4 @@
-mdoc: XmlSchema error: Invalid start element: :extra XML URI: Test/en.expected.importslashdoc/Mono.DocTest/Widget.xml . Line 20, Position 6.
-mdoc: XmlSchema error: Element declaration for extra is missing. XML URI: Test/en.expected.importslashdoc/Mono.DocTest/Widget.xml . Line 20, Position 6.
-mdoc: XmlSchema error: Invalid end element. There are still required content items. XML URI: Test/en.expected.importslashdoc/Mono.DocTest/Widget.xml . Line 21, Position 5.
+mdoc: XmlSchema error: Invalid start element: :extra XML URI: Test/en.expected.importslashdoc/Mono.DocTest/Widget.xml . Line 21, Position 6.
+mdoc: XmlSchema error: Element declaration for extra is missing. XML URI: Test/en.expected.importslashdoc/Mono.DocTest/Widget.xml . Line 21, Position 6.
+mdoc: XmlSchema error: Invalid end element. There are still required content items. XML URI: Test/en.expected.importslashdoc/Mono.DocTest/Widget.xml . Line 22, Position 5.
 Total validation errors: 3
diff --git a/mcs/tools/mdoc/mdoc.exe.sources b/mcs/tools/mdoc/mdoc.exe.sources
index 65e477a..d39aea2 100644
--- a/mcs/tools/mdoc/mdoc.exe.sources
+++ b/mcs/tools/mdoc/mdoc.exe.sources
@@ -9,6 +9,7 @@ Mono.Documentation/MdocFile.cs
 Mono.Documentation/monodocer.cs
 Mono.Documentation/monodocs2html.cs
 Mono.Documentation/monodocs2slashdoc.cs
+Mono.Documentation/msitomsx.cs
 Mono.Documentation/normalize.cs
 Mono.Documentation/validate.cs
 Mono.Documentation/webdoc.cs
diff --git a/mcs/tools/monodoc/ChangeLog b/mcs/tools/monodoc/ChangeLog
index 486761f..bc32d80 100644
--- a/mcs/tools/monodoc/ChangeLog
+++ b/mcs/tools/monodoc/ChangeLog
@@ -1,3 +1,66 @@
+2011-01-10  Jonathan Pryor  <jonpryor at vt.edu>
+
+	[monodoc/osx] Look for docs in additional directories.
+
+	Fixes #663182.
+
+	OSX allows multiple framework versions to be installed
+	side-by-side, and the current version is available through
+	/Library/Frameworks/Mono.framework/Versions/Current.
+
+	However, documentation installed into
+	/L/F/M.f/V/C/lib/monodoc/sources is specific for that Mono
+	version; upgrade Mono.framework, and the documentation is "lost,"
+	not visible to the newly installed version.
+
+	To fix this, we're creating an *unversioned* directory to contain
+	documentation, which will thus be persistent across Mono.framework
+	upgrades: /Library/Frameworks/Mono.framework/External/monodoc
+
+	This will allow Mono.framework to be upgraded without "losing" the
+	documentation visible within monodoc.
+
+2010-12-29  Miguel de Icaza  <miguel at gnome.org>
+
+	[monodoc] Use points instead of relative-sizing, so that we render
+	the same on web browsers and on WebKit
+
+2010-12-28  Miguel de Icaza  <miguel at gnome.org>
+
+	Revert accidental patch
+
+2010-12-28  Miguel de Icaza  <miguel at gnome.org>
+
+	[monodoc] Update the stylesheets to use Jonathan Pobst's UI
+	design.
+
+	This is a temporary measure, as we only use 1/10th of Jonathan's
+	icons and style, but will do while we get Kipunji deployed.
+
+	The major benefit is that the native Linux and MacOS Monodoc
+	clients when using Gecko or WebKit can render something that is
+	not hideous.
+
+2010-12-28  Miguel de Icaza  <miguel at gnome.org>
+
+	[monodoc] Header no longer needed, we now keep it on the top
+
+2010-12-28  Miguel de Icaza  <miguel at gnome.org>
+
+	[monodoc] Fix the root display once and for all: web does not do
+	editing
+
+2010-11-18  Jonathan Pryor  <jonpryor at vt.edu>
+
+	[mdoc export-html] Fixup href generation for nested generics.
+
+	In certain situations, the type-parameter counting code doesn't
+	skip tokens properly. In some circumstances, this results in
+	invalid links (e.g. refing KeyValuePair`1, not KeyValuePair`2), in
+	others it results in an XSLT error with "!WTF 2".
+
+	The problem was we weren't properly checking for nested types.
+
 2010-08-27  Jonathan Pryor  <jonpryor at vt.edu>
 
 	[mdoc-validate] Support & validate the ECMA XML dialect.
diff --git a/mcs/tools/monodoc/Makefile b/mcs/tools/monodoc/Makefile
index f605e33..4b0d026 100644
--- a/mcs/tools/monodoc/Makefile
+++ b/mcs/tools/monodoc/Makefile
@@ -5,6 +5,51 @@ include ../../build/rules.make
 LIBRARY = monodoc.dll
 LIBRARY_PACKAGE = monodoc
 
+IMAGES = \
+	Resources/images/bc_bg.png		\
+	Resources/images/bc_separator.png	\
+	Resources/images/error.png		\
+	Resources/images/hatch.png		\
+	Resources/images/headerbg.png		\
+	Resources/images/help.png		\
+	Resources/images/house.png		\
+	Resources/images/members.png		\
+	Resources/images/namespace.png		\
+	Resources/images/privclass.png		\
+	Resources/images/privdelegate.png	\
+	Resources/images/privenumeration.png	\
+	Resources/images/privevent.png		\
+	Resources/images/privextension.png	\
+	Resources/images/privfield.png		\
+	Resources/images/privinterface.png	\
+	Resources/images/privmethod.png		\
+	Resources/images/privproperty.png	\
+	Resources/images/privstructure.png	\
+	Resources/images/protclass.png		\
+	Resources/images/protdelegate.png	\
+	Resources/images/protenumeration.png	\
+	Resources/images/protevent.png		\
+	Resources/images/protextension.png	\
+	Resources/images/protfield.png		\
+	Resources/images/protinterface.png	\
+	Resources/images/protmethod.png		\
+	Resources/images/protproperty.png	\
+	Resources/images/protstructure.png	\
+	Resources/images/pubclass.png		\
+	Resources/images/pubdelegate.png	\
+	Resources/images/pubenumeration.png	\
+	Resources/images/pubevent.png		\
+	Resources/images/pubextension.png	\
+	Resources/images/pubfield.png		\
+	Resources/images/pubinterface.png	\
+	Resources/images/pubmethod.png		\
+	Resources/images/pubproperty.png	\
+	Resources/images/pubstructure.png	\
+	Resources/images/reference.png		\
+	Resources/images/treebg.png		
+
+IMAGE_RESOURCE_COMMAND = $(foreach file,$(IMAGES),/resource:$(file),$(notdir $(file)))
+
 RESOURCE_FILES = \
 	../../docs/monodoc.xml            \
 	Resources/base.css                \
@@ -22,7 +67,8 @@ RESOURCE_FILES = \
 	Resources/mono-ecma-css.xsl       \
 	Resources/mono-ecma-impl.xsl      \
 	Resources/mono-ecma.css           \
-	Resources/mono-ecma.xsl
+	Resources/mono-ecma.xsl		\
+	$(IMAGES)
 
 MAN_TEST_FILES = \
 	Test/man-provider-test.cs   \
@@ -61,6 +107,7 @@ LIB_MCS_FLAGS = \
 	/resource:Resources/mono-ecma-impl.xsl,mono-ecma-impl.xsl         \
 	/resource:Resources/mono-ecma.css,mono-ecma.css                   \
 	/resource:Resources/mono-ecma.xsl,mono-ecma.xsl                   \
+	$(IMAGE_RESOURCE_COMMAND)					  \
 	/r:ICSharpCode.SharpZipLib                                        \
 	/r:$(corlib)                                                      \
 	/r:System.dll                                                     \
diff --git a/mcs/tools/monodoc/Monodoc/provider.cs b/mcs/tools/monodoc/Monodoc/provider.cs
index 2d74d60..c2cee55 100644
--- a/mcs/tools/monodoc/Monodoc/provider.cs
+++ b/mcs/tools/monodoc/Monodoc/provider.cs
@@ -871,6 +871,7 @@ public class RootTree : Tree {
 				d.Load (cfgFile);
 				basedir = d.SelectSingleNode ("config/path").Attributes ["docsPath"].Value;
 			}
+			//basedir = "/Library/Frameworks/Mono.framework/Versions/Current/lib/monodoc/";
 		}
 
 		//
@@ -880,9 +881,14 @@ public class RootTree : Tree {
 		string layout = Path.Combine (basedir, "monodoc.xml");
 		doc.Load (layout);
 
+		string osxExternalDir = "/Library/Frameworks/Mono.framework/External/monodoc";
+		string[] osxExternalSources = Directory.Exists (osxExternalDir)
+			? Directory.GetFiles (osxExternalDir, "*.source")
+			: new string[0];
+
 		return LoadTree (basedir, doc, 
-				Directory.GetFiles (Path.Combine (basedir, "sources"))
-				.Where (file => file.EndsWith (".source")));
+				Directory.GetFiles (Path.Combine (basedir, "sources"), "*.source")
+				.Concat (osxExternalSources));
 	}
 
 
@@ -1454,12 +1460,16 @@ public class RootTree : Tree {
 				sb.Replace ("@@FONT_FAMILY@@", SettingsHandler.Settings.preferred_font_family);
 				sb.Replace ("@@FONT_SIZE@@", SettingsHandler.Settings.preferred_font_size.ToString());
 				//contributions
+				var visible = SettingsHandler.Settings.EnableEditing ? "block;" : "none;";
 				if ((oldContrib + contribs) == 0) {
 					sb.Replace ("@@CONTRIB_DISP@@", "display: none;");
+                                        sb.Replace ("@@NO_CONTRIB_DISP@@", "display: " + visible);
 				} else {
+					sb.Replace ("@@CONTRIB_DISP@@", "display: " + visible);
 					sb.Replace ("@@NO_CONTRIB_DISP@@", "display: none;");
 					sb.Replace ("@@CONTRIBS@@", con.ToString ());
 				}
+				sb.Replace ("@@EDITING_ENABLED@@", "display: " + visible);
 					
 				// load the url of nodes
 				String add_str;
diff --git a/mcs/tools/monodoc/Resources/base.css b/mcs/tools/monodoc/Resources/base.css
index d255d8f..d264419 100644
--- a/mcs/tools/monodoc/Resources/base.css
+++ b/mcs/tools/monodoc/Resources/base.css
@@ -5,12 +5,21 @@
 */
 
 body, table {
+	margin: 0px;
+}
+
+body, table, pre, p {
 	font-family: @@FONT_FAMILY@@, sans-serif;
-	font-size: @@FONT_SIZE@@%;
+	/* font-size: @@FONT_SIZE@@pt; */
+	font-size: 10pt;
 }
 
 div.header {
-	padding: 0.2em;
+    background-color: #FAFBFD;
+    font-size: 1.7em;
+    font-weight: bold;
+    padding: 8px 0 0 10px;
+    font-family: 'Segoe UI',Verdana,Arial;
 }
 
 div.title {
diff --git a/mcs/tools/monodoc/Resources/home.html b/mcs/tools/monodoc/Resources/home.html
index dc8c546..2d748a7 100644
--- a/mcs/tools/monodoc/Resources/home.html
+++ b/mcs/tools/monodoc/Resources/home.html
@@ -7,18 +7,6 @@ body, table {
 	font-size: @@FONT_SIZE@@%;
 }
 
-#title {
-	width: 94%;
-	margin-left: 1%;
-	padding: 2%;
-	border: 2px solid black;
-	background: #b0c4de;
-	font-size: 140%;
-	font-weight: bold;
-	font-variant: small-caps;
-	text-align: center;
-	}
-
 /* ECMA BLOCK */
 #docs {
 	margin-bottom: 1em;
@@ -32,12 +20,14 @@ body, table {
 	color: black;
 	background: #fff3f3;
 	border: 1px solid #ffc9c9;
+	@@EDITING_ENABLED@@
 	}
 #contribTitle {
 	text-align: left;
 	font-weight: bold;
 	padding: .4em;
 	font-size: 110%;
+	@@CONTRIB_DISP@@
 }
 #contrib #content {
 	padding: .4em;
@@ -53,24 +43,27 @@ body, table {
 	text-align: justify;
 	}
 </style>
+<link type="text/css" rel="stylesheet" href="mono-ecma.css"/>
 </head>
 
-<div id="title">Mono Documentation Library</div>
-
-<div id="docs">
-	<ul>
-	    @@API_DOCS@@
-	</ul>
-</div>
-
-<div id="contrib">
-	<div id="contribTitle">Contributions</div>
-	<div id="content">
-		<div id="some-contrib">
-			@@CONTRIBS@@
-		</div>
-		<div id="no-contrib">
-			<p><b>You have not made any contributions yet.</b></p>
- 			<p>The Documentation of the libraries is not complete and your contributions would be greatly appreciated. The procedure is easy, browse to the part of the documentation you want to contribute to and click on the <font color="blue">[Edit]</font> link to start writing documentation.</p>
- 			<p>When you are happy with your changes, use the Contributing--> Upload Contribution--> menu to send your contributions to our server.</p></div>	</div>
+<div class="Content">
+  <p>The following documentation collections are available:
+  
+  <div id="docs">
+  	<ul>
+  	    @@API_DOCS@@
+  	</ul>
+  </div>
+  
+  <div id="contrib">
+  	<div id="contribTitle">Contributions</div>
+  	<div id="content">
+  		<div id="some-contrib">
+  			@@CONTRIBS@@
+  		</div>
+  		<div id="no-contrib">
+  			<p><b>You have not made any contributions yet.</b></p>
+   			<p>The Documentation of the libraries is not complete and your contributions would be greatly appreciated. The procedure is easy, browse to the part of the documentation you want to contribute to and click on the <font color="blue">[Edit]</font> link to start writing documentation.</p>
+   			<p>When you are happy with your changes, use the Contributing--> Upload Contribution--> menu to send your contributions to our server.</p></div>	</div>
+  </div>
 </div>
diff --git a/mcs/tools/monodoc/Resources/images/bc_bg.png b/mcs/tools/monodoc/Resources/images/bc_bg.png
new file mode 100644
index 0000000..6f7bca7
Binary files /dev/null and b/mcs/tools/monodoc/Resources/images/bc_bg.png differ
diff --git a/mcs/tools/monodoc/Resources/images/bc_separator.png b/mcs/tools/monodoc/Resources/images/bc_separator.png
new file mode 100644
index 0000000..c137258
Binary files /dev/null and b/mcs/tools/monodoc/Resources/images/bc_separator.png differ
diff --git a/mcs/tools/monodoc/Resources/images/hatch.png b/mcs/tools/monodoc/Resources/images/hatch.png
new file mode 100644
index 0000000..33bf2c2
Binary files /dev/null and b/mcs/tools/monodoc/Resources/images/hatch.png differ
diff --git a/mcs/tools/monodoc/Resources/images/headerbg.png b/mcs/tools/monodoc/Resources/images/headerbg.png
new file mode 100644
index 0000000..15575da
Binary files /dev/null and b/mcs/tools/monodoc/Resources/images/headerbg.png differ
diff --git a/mcs/tools/monodoc/Resources/images/help.png b/mcs/tools/monodoc/Resources/images/help.png
new file mode 100644
index 0000000..5c87017
Binary files /dev/null and b/mcs/tools/monodoc/Resources/images/help.png differ
diff --git a/mcs/tools/monodoc/Resources/images/house.png b/mcs/tools/monodoc/Resources/images/house.png
new file mode 100644
index 0000000..fed6221
Binary files /dev/null and b/mcs/tools/monodoc/Resources/images/house.png differ
diff --git a/mcs/tools/monodoc/Resources/images/members.png b/mcs/tools/monodoc/Resources/images/members.png
new file mode 100644
index 0000000..4a8672b
Binary files /dev/null and b/mcs/tools/monodoc/Resources/images/members.png differ
diff --git a/mcs/tools/monodoc/Resources/images/namespace.png b/mcs/tools/monodoc/Resources/images/namespace.png
new file mode 100644
index 0000000..2bc1624
Binary files /dev/null and b/mcs/tools/monodoc/Resources/images/namespace.png differ
diff --git a/mcs/tools/monodoc/Resources/images/privclass.png b/mcs/tools/monodoc/Resources/images/privclass.png
new file mode 100644
index 0000000..bb0c871
Binary files /dev/null and b/mcs/tools/monodoc/Resources/images/privclass.png differ
diff --git a/mcs/tools/monodoc/Resources/images/privdelegate.png b/mcs/tools/monodoc/Resources/images/privdelegate.png
new file mode 100644
index 0000000..a5b470e
Binary files /dev/null and b/mcs/tools/monodoc/Resources/images/privdelegate.png differ
diff --git a/mcs/tools/monodoc/Resources/images/privenumeration.png b/mcs/tools/monodoc/Resources/images/privenumeration.png
new file mode 100644
index 0000000..df2c3c9
Binary files /dev/null and b/mcs/tools/monodoc/Resources/images/privenumeration.png differ
diff --git a/mcs/tools/monodoc/Resources/images/privevent.png b/mcs/tools/monodoc/Resources/images/privevent.png
new file mode 100644
index 0000000..e1d3887
Binary files /dev/null and b/mcs/tools/monodoc/Resources/images/privevent.png differ
diff --git a/mcs/tools/monodoc/Resources/images/privextension.png b/mcs/tools/monodoc/Resources/images/privextension.png
new file mode 100644
index 0000000..d336ddd
Binary files /dev/null and b/mcs/tools/monodoc/Resources/images/privextension.png differ
diff --git a/mcs/tools/monodoc/Resources/images/privfield.png b/mcs/tools/monodoc/Resources/images/privfield.png
new file mode 100644
index 0000000..0b246cf
Binary files /dev/null and b/mcs/tools/monodoc/Resources/images/privfield.png differ
diff --git a/mcs/tools/monodoc/Resources/images/privinterface.png b/mcs/tools/monodoc/Resources/images/privinterface.png
new file mode 100644
index 0000000..cde4b50
Binary files /dev/null and b/mcs/tools/monodoc/Resources/images/privinterface.png differ
diff --git a/mcs/tools/monodoc/Resources/images/privmethod.png b/mcs/tools/monodoc/Resources/images/privmethod.png
new file mode 100644
index 0000000..d698426
Binary files /dev/null and b/mcs/tools/monodoc/Resources/images/privmethod.png differ
diff --git a/mcs/tools/monodoc/Resources/images/privproperty.png b/mcs/tools/monodoc/Resources/images/privproperty.png
new file mode 100644
index 0000000..41a008d
Binary files /dev/null and b/mcs/tools/monodoc/Resources/images/privproperty.png differ
diff --git a/mcs/tools/monodoc/Resources/images/privstructure.png b/mcs/tools/monodoc/Resources/images/privstructure.png
new file mode 100644
index 0000000..ff064e6
Binary files /dev/null and b/mcs/tools/monodoc/Resources/images/privstructure.png differ
diff --git a/mcs/tools/monodoc/Resources/images/protclass.png b/mcs/tools/monodoc/Resources/images/protclass.png
new file mode 100644
index 0000000..0c32ce0
Binary files /dev/null and b/mcs/tools/monodoc/Resources/images/protclass.png differ
diff --git a/mcs/tools/monodoc/Resources/images/protdelegate.png b/mcs/tools/monodoc/Resources/images/protdelegate.png
new file mode 100644
index 0000000..ca44396
Binary files /dev/null and b/mcs/tools/monodoc/Resources/images/protdelegate.png differ
diff --git a/mcs/tools/monodoc/Resources/images/protenumeration.png b/mcs/tools/monodoc/Resources/images/protenumeration.png
new file mode 100644
index 0000000..14a4cf3
Binary files /dev/null and b/mcs/tools/monodoc/Resources/images/protenumeration.png differ
diff --git a/mcs/tools/monodoc/Resources/images/protevent.png b/mcs/tools/monodoc/Resources/images/protevent.png
new file mode 100644
index 0000000..613e88e
Binary files /dev/null and b/mcs/tools/monodoc/Resources/images/protevent.png differ
diff --git a/mcs/tools/monodoc/Resources/images/protextension.png b/mcs/tools/monodoc/Resources/images/protextension.png
new file mode 100644
index 0000000..f350d55
Binary files /dev/null and b/mcs/tools/monodoc/Resources/images/protextension.png differ
diff --git a/mcs/tools/monodoc/Resources/images/protfield.png b/mcs/tools/monodoc/Resources/images/protfield.png
new file mode 100644
index 0000000..6e08553
Binary files /dev/null and b/mcs/tools/monodoc/Resources/images/protfield.png differ
diff --git a/mcs/tools/monodoc/Resources/images/protinterface.png b/mcs/tools/monodoc/Resources/images/protinterface.png
new file mode 100644
index 0000000..4579a76
Binary files /dev/null and b/mcs/tools/monodoc/Resources/images/protinterface.png differ
diff --git a/mcs/tools/monodoc/Resources/images/protmethod.png b/mcs/tools/monodoc/Resources/images/protmethod.png
new file mode 100644
index 0000000..4ecb6ff
Binary files /dev/null and b/mcs/tools/monodoc/Resources/images/protmethod.png differ
diff --git a/mcs/tools/monodoc/Resources/images/protproperty.png b/mcs/tools/monodoc/Resources/images/protproperty.png
new file mode 100644
index 0000000..f79838a
Binary files /dev/null and b/mcs/tools/monodoc/Resources/images/protproperty.png differ
diff --git a/mcs/tools/monodoc/Resources/images/protstructure.png b/mcs/tools/monodoc/Resources/images/protstructure.png
new file mode 100644
index 0000000..9b806cc
Binary files /dev/null and b/mcs/tools/monodoc/Resources/images/protstructure.png differ
diff --git a/mcs/tools/monodoc/Resources/images/pubclass.png b/mcs/tools/monodoc/Resources/images/pubclass.png
new file mode 100644
index 0000000..7531558
Binary files /dev/null and b/mcs/tools/monodoc/Resources/images/pubclass.png differ
diff --git a/mcs/tools/monodoc/Resources/images/pubdelegate.png b/mcs/tools/monodoc/Resources/images/pubdelegate.png
new file mode 100644
index 0000000..19368a6
Binary files /dev/null and b/mcs/tools/monodoc/Resources/images/pubdelegate.png differ
diff --git a/mcs/tools/monodoc/Resources/images/pubenumeration.png b/mcs/tools/monodoc/Resources/images/pubenumeration.png
new file mode 100644
index 0000000..9adab41
Binary files /dev/null and b/mcs/tools/monodoc/Resources/images/pubenumeration.png differ
diff --git a/mcs/tools/monodoc/Resources/images/pubevent.png b/mcs/tools/monodoc/Resources/images/pubevent.png
new file mode 100644
index 0000000..7abef63
Binary files /dev/null and b/mcs/tools/monodoc/Resources/images/pubevent.png differ
diff --git a/mcs/tools/monodoc/Resources/images/pubextension.png b/mcs/tools/monodoc/Resources/images/pubextension.png
new file mode 100644
index 0000000..0725306
Binary files /dev/null and b/mcs/tools/monodoc/Resources/images/pubextension.png differ
diff --git a/mcs/tools/monodoc/Resources/images/pubfield.png b/mcs/tools/monodoc/Resources/images/pubfield.png
new file mode 100644
index 0000000..c2fc5a2
Binary files /dev/null and b/mcs/tools/monodoc/Resources/images/pubfield.png differ
diff --git a/mcs/tools/monodoc/Resources/images/pubinterface.png b/mcs/tools/monodoc/Resources/images/pubinterface.png
new file mode 100644
index 0000000..050ea99
Binary files /dev/null and b/mcs/tools/monodoc/Resources/images/pubinterface.png differ
diff --git a/mcs/tools/monodoc/Resources/images/pubmethod.png b/mcs/tools/monodoc/Resources/images/pubmethod.png
new file mode 100644
index 0000000..50ad06d
Binary files /dev/null and b/mcs/tools/monodoc/Resources/images/pubmethod.png differ
diff --git a/mcs/tools/monodoc/Resources/images/pubproperty.png b/mcs/tools/monodoc/Resources/images/pubproperty.png
new file mode 100644
index 0000000..2f0ef15
Binary files /dev/null and b/mcs/tools/monodoc/Resources/images/pubproperty.png differ
diff --git a/mcs/tools/monodoc/Resources/images/pubstructure.png b/mcs/tools/monodoc/Resources/images/pubstructure.png
new file mode 100644
index 0000000..161f2fc
Binary files /dev/null and b/mcs/tools/monodoc/Resources/images/pubstructure.png differ
diff --git a/mcs/tools/monodoc/Resources/images/reference.png b/mcs/tools/monodoc/Resources/images/reference.png
new file mode 100644
index 0000000..9720bf8
Binary files /dev/null and b/mcs/tools/monodoc/Resources/images/reference.png differ
diff --git a/mcs/tools/monodoc/Resources/images/treebg.png b/mcs/tools/monodoc/Resources/images/treebg.png
new file mode 100644
index 0000000..a5588a9
Binary files /dev/null and b/mcs/tools/monodoc/Resources/images/treebg.png differ
diff --git a/mcs/tools/monodoc/Resources/mdoc-html-utils.xsl b/mcs/tools/monodoc/Resources/mdoc-html-utils.xsl
index cc2cd3c..5db361c 100644
--- a/mcs/tools/monodoc/Resources/mdoc-html-utils.xsl
+++ b/mcs/tools/monodoc/Resources/mdoc-html-utils.xsl
@@ -663,38 +663,25 @@
 			</xsl:call-template>
 		</xsl:if>
 
-		<!-- thread safety -->
-
-		<xsl:if test="count(ThreadingSafetyStatement)">
-			<xsl:call-template name="CreateH4Section">
-				<xsl:with-param name="name" select="'Thread Safety'"/>
-				<xsl:with-param name="child-id" select="concat ($linkid, ':Thread Safety')" />
-				<xsl:with-param name="content">
-					<xsl:apply-templates select="ThreadingSafetyStatement" mode="notoppara"/>
-				</xsl:with-param>
-			</xsl:call-template>
-		</xsl:if>
-
-
-		<!-- permissions -->
+		<!-- method/property/constructor exceptions -->
 
-		<xsl:if test="count(Docs/permission)">
+		<xsl:if test="count(Docs/exception)">
 			<xsl:call-template name="CreateH4Section">
-				<xsl:with-param name="name" select="'Permissions'"/>
-				<xsl:with-param name="child-id" select="concat ($linkid, ':Permissions')" />
+				<xsl:with-param name="name" select="'Exceptions'"/>
+				<xsl:with-param name="child-id" select="concat ($linkid, ':Exceptions')" />
 				<xsl:with-param name="content">
 					<xsl:call-template name="CreateTypeDocumentationTable">
 					<xsl:with-param name="content">
-					<xsl:for-each select="Docs/permission">
+					<xsl:for-each select="Docs/exception">
 						<tr valign="top">
 						<td>
 							<xsl:apply-templates select="@cref" mode="typelink">
 								<xsl:with-param name="wrt" select="$TypeNamespace"/>
 							</xsl:apply-templates>
-							<xsl:apply-templates select="." mode="editlink"/>
 						</td>
 						<td>
 							<xsl:apply-templates select="." mode="notoppara"/>
+							<xsl:apply-templates select="." mode="editlink"/>
 						</td>
 						</tr>
 					</xsl:for-each>
@@ -704,25 +691,51 @@
 			</xsl:call-template>
 		</xsl:if>
 
-		<!-- method/property/constructor exceptions -->
+		<!-- remarks -->
 
-		<xsl:if test="count(Docs/exception)">
-			<xsl:call-template name="CreateH4Section">
-				<xsl:with-param name="name" select="'Exceptions'"/>
-				<xsl:with-param name="child-id" select="concat ($linkid, ':Exceptions')" />
+		<xsl:if test="count(Docs/remarks)">
+			<xsl:call-template name="CreateH2Section">
+				<xsl:with-param name="name" select="'Remarks'"/>
+				<xsl:with-param name="child-id" select="concat ($linkid, ':Remarks')" />
+				<xsl:with-param name="content">
+					<xsl:apply-templates select="Docs/remarks" mode="notoppara"/>
+					<xsl:apply-templates select="Docs/remarks" mode="editlink"/>
+				</xsl:with-param>
+			</xsl:call-template>
+		</xsl:if>
+
+		<!-- thread safety -->
+
+		<xsl:if test="count(ThreadingSafetyStatement)">
+			<xsl:call-template name="CreateH2Section">
+				<xsl:with-param name="name" select="'Thread Safety'"/>
+				<xsl:with-param name="child-id" select="concat ($linkid, ':Thread Safety')" />
+				<xsl:with-param name="content">
+					<xsl:apply-templates select="ThreadingSafetyStatement" mode="notoppara"/>
+				</xsl:with-param>
+			</xsl:call-template>
+		</xsl:if>
+
+
+		<!-- permissions -->
+
+		<xsl:if test="count(Docs/permission)">
+			<xsl:call-template name="CreateH2Section">
+				<xsl:with-param name="name" select="'Permissions'"/>
+				<xsl:with-param name="child-id" select="concat ($linkid, ':Permissions')" />
 				<xsl:with-param name="content">
 					<xsl:call-template name="CreateTypeDocumentationTable">
 					<xsl:with-param name="content">
-					<xsl:for-each select="Docs/exception">
+					<xsl:for-each select="Docs/permission">
 						<tr valign="top">
 						<td>
 							<xsl:apply-templates select="@cref" mode="typelink">
 								<xsl:with-param name="wrt" select="$TypeNamespace"/>
 							</xsl:apply-templates>
+							<xsl:apply-templates select="." mode="editlink"/>
 						</td>
 						<td>
 							<xsl:apply-templates select="." mode="notoppara"/>
-							<xsl:apply-templates select="." mode="editlink"/>
 						</td>
 						</tr>
 					</xsl:for-each>
@@ -732,23 +745,10 @@
 			</xsl:call-template>
 		</xsl:if>
 
-		<!-- remarks -->
-
-		<xsl:if test="count(Docs/remarks)">
-			<xsl:call-template name="CreateH4Section">
-				<xsl:with-param name="name" select="'Remarks'"/>
-				<xsl:with-param name="child-id" select="concat ($linkid, ':Remarks')" />
-				<xsl:with-param name="content">
-					<xsl:apply-templates select="Docs/remarks" mode="notoppara"/>
-					<xsl:apply-templates select="Docs/remarks" mode="editlink"/>
-				</xsl:with-param>
-			</xsl:call-template>
-		</xsl:if>
-
 		<!-- enumeration values -->
 
 		<xsl:if test="Base/BaseTypeName = 'System.Enum'">
-			<xsl:call-template name="CreateH4Section">
+			<xsl:call-template name="CreateH2Section">
 				<xsl:with-param name="name" select="'Members'"/>
 				<xsl:with-param name="child-id" select="concat ($linkid, ':Members')" />
 				<xsl:with-param name="content">
@@ -785,7 +785,7 @@
 
 		<xsl:if test="count(Docs/example)">
 			<xsl:for-each select="Docs/example">
-				<xsl:call-template name="CreateH4Section">
+				<xsl:call-template name="CreateH2Section">
 					<xsl:with-param name="name" select="'Example'"/>
 					<xsl:with-param name="child-id" select="concat ($linkid, ':Example:', position())" />
 					<xsl:with-param name="content">
@@ -795,7 +795,7 @@
 			</xsl:for-each>
 		</xsl:if>
 
-		<xsl:call-template name="CreateH4Section">
+		<xsl:call-template name="CreateH2Section">
 			<xsl:with-param name="name" select="'Requirements'"/>
 			<xsl:with-param name="child-id" select="concat ($linkid, ':Version Information')" />
 			<xsl:with-param name="content">
@@ -1855,7 +1855,7 @@
 		</xsl:variable>
 
 		<!-- header -->
-		<xsl:call-template name="CreateH3Section">
+		<xsl:call-template name="CreateH2Section">
 			<xsl:with-param name="name" select="$SectionName" />
 			<xsl:with-param name="child-id" select="$SectionName" />
 			<xsl:with-param name="content">
@@ -2318,7 +2318,19 @@ SkipTypeArgument: invalid type substring '<xsl:value-of select="$s" />'
 						<xsl:with-param name="s" select="substring-after ($s, '<')" />
 					</xsl:call-template>
 				</xsl:variable>
-				<xsl:value-of select="substring-after ($r, '>')" />
+				<xsl:choose>
+					<xsl:when test="starts-with ($r, '>') or starts-with ($r, '+')">
+						<xsl:value-of select="substring-after ($r, '>')" />
+					</xsl:when>
+					<xsl:when test="starts-with ($r, ',')">
+						<xsl:value-of select="$r" />
+					</xsl:when>
+					<xsl:otherwise>
+						<xsl:message>
+! WTF3: s=<xsl:value-of select="$s" />; r=<xsl:value-of select="$r" />
+						</xsl:message>
+					</xsl:otherwise>
+				</xsl:choose>
 			</xsl:when>
 			<xsl:when test="$p/Gt/@Length > 0">
 				<xsl:text>></xsl:text>
diff --git a/mcs/tools/monodoc/Resources/mdoc-sections-css.xsl b/mcs/tools/monodoc/Resources/mdoc-sections-css.xsl
index 2cc7e15..ab31043 100644
--- a/mcs/tools/monodoc/Resources/mdoc-sections-css.xsl
+++ b/mcs/tools/monodoc/Resources/mdoc-sections-css.xsl
@@ -31,15 +31,11 @@
 					<xsl:value-of select="$id" />
 				</xsl:attribute>
 			</xsl:if>
-			<a href="javascript:toggle_display('{$child-id}')">
-				<span id="{$child-id}:toggle"><xsl:call-template name="CreateExpandedToggle" /></span>
-				<xsl:value-of select="' '"/>
-				<xsl:value-of select="$name" />
-			</a>
+			<xsl:value-of select="$name" />
 		</h2>
-		<blockquote class="SectionBox" id="{$child-id}">
+		<div class="SectionBox" id="{$child-id}">
 			<xsl:copy-of select="$content" />
-		</blockquote>
+		</div>
 	</xsl:template>
 
 	<xsl:template name="CreateH3Section">
@@ -60,11 +56,7 @@
 					<xsl:value-of select="$id" />
 				</xsl:attribute>
 			</xsl:if>
-			<a href="javascript:toggle_display('{$child-id}')">
-				<span id="{$child-id}:toggle"><xsl:call-template name="CreateExpandedToggle" /></span>
-				<xsl:value-of select="' '"/>
-				<xsl:value-of select="$name" />
-			</a>
+			<xsl:value-of select="$name" />
 		</h3>
 		<blockquote id="{$child-id}">
 			<xsl:copy-of select="$content" />
@@ -83,11 +75,7 @@
 					<xsl:value-of select="$id" />
 				</xsl:attribute>
 			</xsl:if>
-			<a href="javascript:toggle_display('{$child-id}')">
-				<span id="{$child-id}:toggle"><xsl:call-template name="CreateExpandedToggle" /></span>
-				<xsl:value-of select="' '"/>
-				<xsl:value-of select="$name" />
-			</a>
+			<xsl:value-of select="$name" />
 		</h4>
 		<blockquote class="SubsectionBox" id="{$child-id}">
 			<xsl:copy-of select="$content" />
@@ -104,9 +92,7 @@
 
 	<xsl:template name="CreateHeader">
 		<xsl:param name="content" />
-		<div class="Header">
-			<xsl:copy-of select="$content" />
-		</div>
+		<xsl:copy-of select="$content" />
 	</xsl:template>
 
 	<xsl:template name="CreateListTable">
@@ -127,6 +113,7 @@
 
 	<xsl:template name="CreateSignature">
 		<xsl:param name="content" />
+		<h2>Syntax</h2>
 		<div class="Signature">
 			<xsl:copy-of select="$content" />
 		</div>
diff --git a/mcs/tools/monodoc/Resources/mono-ecma-impl.xsl b/mcs/tools/monodoc/Resources/mono-ecma-impl.xsl
index 81da95c..9b8ac0b 100644
--- a/mcs/tools/monodoc/Resources/mono-ecma-impl.xsl
+++ b/mcs/tools/monodoc/Resources/mono-ecma-impl.xsl
@@ -61,51 +61,82 @@
 
 		<xsl:call-template name="CreateHeader">
 			<xsl:with-param name="content">
-				<i class="subtitle">Mono Class Library</i>
-
+			  <ul class="breadcrumb">
 				<xsl:choose>
 					<xsl:when test="$show='masteroverview'">
+						<li class="namespace">
+						  <xsl:text>Namespaces in this Collection</xsl:text>
+						</li>
 					</xsl:when>
 					<xsl:when test="$show='typeoverview'">
-						<xsl:text>: </xsl:text>
+						<li class="namespace">
 						<a>
 							<xsl:attribute name="href">N:<xsl:value-of select="$TypeNamespace"/></xsl:attribute>
-							<xsl:value-of select="$TypeNamespace"/> Namespace</a>						
+							<xsl:value-of select="$TypeNamespace"/></a>
+						</li>
+						<li class="pubclass">
+							<xsl:value-of select="@Name"/>
+						</li>
 					</xsl:when>
 					<xsl:when test="$show='members'">
-						<xsl:text>: </xsl:text>
-						<a>
+						<li class="namespace">
+						  <a>
+						    <xsl:attribute name="href">N:<xsl:value-of select="$TypeNamespace"/></xsl:attribute>
+						    <xsl:value-of select="$TypeNamespace"/>
+						  </a>
+						</li>
+						<li class="pubclass">
+						  <a>
 							<xsl:attribute name="href">
 								<xsl:text>T:</xsl:text>
 								<xsl:value-of select="$typelink" />
-							</xsl:attribute>
-							<xsl:value-of select="typename"/> Overview</a>
+							</xsl:attribute>						  
+							<xsl:value-of select="@Name"/>
+						  </a>
+						</li>
+						<li class="members">
+						  Members
+						</li>
 					</xsl:when>
 					<xsl:when test="$show='member' or $show='overloads'">
-						<xsl:text>: </xsl:text>
-						<a>
-							<xsl:attribute name="href">
-								<xsl:text>T:</xsl:text>
-								<xsl:value-of select="$typelink" />
-							</xsl:attribute>
-							<xsl:value-of select="$typename"/> Overview</a>
-						<xsl:text> | </xsl:text>
+						<li class="namespace">
 						<a>
+							<xsl:attribute name="href">N:<xsl:value-of select="$TypeNamespace"/></xsl:attribute>
+							<xsl:value-of select="$TypeNamespace"/></a>
+						</li>
+						<li class="pubclass">
+						  <a>
 							<xsl:attribute name="href">
 								<xsl:text>T:</xsl:text>
 								<xsl:value-of select="$typelink" />
-								<xsl:text>/*</xsl:text>
-							</xsl:attribute>
-							<xsl:text>Members</xsl:text>
-						</a>
+							</xsl:attribute>						  
+							<xsl:value-of select="@Name"/>
+						  </a>
+						</li>
+						<li class="pubproperty">
+						  <xsl:choose>
+						  <xsl:when test="$membertype='Operator'">
+						  	<xsl:value-of select="$typename"/>
+						  	<xsl:value-of select="' '"/> <!-- hard space -->
+						  	<xsl:value-of select="substring-after(Members/Member[MemberType='Method'][position()=$index+1]/@MemberName, 'op_')"/>
+						  </xsl:when>
+						  <xsl:when test="$membertype='Constructor'">
+						  	<xsl:value-of select="$typename"/>
+						  </xsl:when>
+						  <xsl:otherwise>
+						  	<xsl:value-of select="Members/Member[MemberType=$membertype][position()=$index+1]/@MemberName"/>
+						  </xsl:otherwise>
+						  </xsl:choose>
+						</li>
 					</xsl:when>
 					<xsl:when test="$show='namespace'">
-						<xsl:text>: </xsl:text>
-						<a href="root:/classlib">Namespaces</a>
+						<li class="namespace">
+						  <xsl:value-of select="$namespace"/>
+						</li>
 					</xsl:when>
 				</xsl:choose>
-			
-				<h3>
+			</ul>
+			<div class="named-header">
 				<xsl:choose>
 					<xsl:when test="$show='masteroverview'">
 						<xsl:text>Master Overview</xsl:text>
@@ -117,7 +148,7 @@
 					</xsl:when>
 					<xsl:when test="$show='members' and $membertype='All'">
 						<xsl:value-of select="$typename"/>
-						<xsl:text>: Members</xsl:text>
+						<xsl:text> Members</xsl:text>
 					</xsl:when>
 					<xsl:when test="$show='members'">
 						<xsl:value-of select="$typename"/>
@@ -153,7 +184,7 @@
 					</xsl:when>
 
 				</xsl:choose>
-				</h3>
+			</div>
 			</xsl:with-param>
 		</xsl:call-template>
 
@@ -383,14 +414,14 @@
 			<!-- remarks -->
 
 			<xsl:if test="not(remarks = '')">
-				<h4>Remarks</h4>
-				<blockquote>
-				<xsl:apply-templates select="remarks"/>
-				<xsl:if test="monodoc:MonoEditing()">
-					<xsl:value-of select="' '" />
-					[<a href="{monodoc:EditUrlNamespace (., $namespace, 'remarks')}">Edit</a>]
-				</xsl:if>
-				</blockquote>
+				<h2>Remarks</h2>
+				<div class="SectionBox">
+					<xsl:apply-templates select="remarks"/>
+					<xsl:if test="monodoc:MonoEditing()">
+						<xsl:value-of select="' '" />
+						[<a href="{monodoc:EditUrlNamespace (., $namespace, 'remarks')}">Edit</a>]
+					</xsl:if>
+				</div>
 			</xsl:if>
 		
 			<xsl:call-template name="namespacetypes">
@@ -453,7 +484,7 @@
 
 		<xsl:if test="count($NODES)">
 
-		<xsl:call-template name="CreateH4Section">
+		<xsl:call-template name="CreateH2Section">
 			<xsl:with-param name="name" select="$typetitle" />
 			<xsl:with-param name="child-id" select="$typetitle" />
 			<xsl:with-param name="content">
diff --git a/mcs/tools/monodoc/Resources/mono-ecma.css b/mcs/tools/monodoc/Resources/mono-ecma.css
index 5e6d3cc..2ffa1d2 100644
--- a/mcs/tools/monodoc/Resources/mono-ecma.css
+++ b/mcs/tools/monodoc/Resources/mono-ecma.css
@@ -1,58 +1,565 @@
-#ecma {
-	background: #b0c4de;
-	border: 2px solid #0b366f;
+body
+{
+    font-family: "Lucida Grande", Geneva, Helvetica, Arial, Verdana, Sans-Serif;
+    margin: 0;
+    padding: 0;
+    color: #333333;
 }
 
-div.Footer {
-	border-top: 1px solid gray;
-	margin-top: 1.5em;
-	padding-top: 0.6em;
-	text-align: center;
-	color: gray;
+a:link
+{
+    color: #034af3;
+    text-decoration: underline;
+}
+a:visited
+{
+    color: #505abc;
+}
+a:hover
+{
+    color: #1d60ff;
+    text-decoration: none;
+}
+a:active
+{
+    color: #12eb87;
 }
 
-span.NotEntered /* Documentation for this section has not yet been entered */ {
-	font-style: italic;
-	color: red;	
+pre
+{
+    font-family: Consolas, "Courier New", Monospace;
+    border: 1px solid #CCCCCC;
+    background-color: #F7F7F7;
+    padding: 7px;
+    margin: 0 20px 0 20px;
+    line-height: 1.3em;
+    -moz-border-radius: 3px;
+    -webkit-border-radius: 3px;
+    border-radius: 3px;
 }
 
-div.Header {
-  background: #B0C4DE;
-  border: double;
-  border-color: white;
-  border-width: 7px;
-  padding: 0.5em;
+img
+{
+    border: 0px;
+}
+
+/* HEADINGS   
+----------------------------------------------------------*/
+h1, h2, h3, h4, h5, h6
+{
+    color: #000;
+    font-family: Arial, Helvetica, sans-serif;
+}
+
+h1
+{
+    font-size: 16pt;
+    padding-bottom: 0;
+    margin-bottom: 0;
+}
+h2
+{
+    font-size: 14pt;
+    padding: 0 0 1px 0;
+    border-bottom: 1px solid #DDDDDD;
+    margin-top: 20px;
+}
+h3
+{
+    font-size: 12pt;
+    margin-top: 20px;
+    margin-bottom: 5px;
+}
+h4
+{
+    font-size: 11pt;
+}
+h5, h6
+{
+    font-size: 10pt;
+}
+
+/* this rule styles <h2> tags that are the 
+first child of the left and right table columns */
+.rightColumn > h1, .rightColumn > h2, .leftColumn > h1, .leftColumn > h2
+{
+    margin-top: 0;
+}
+
+/* PRIMARY LAYOUT ELEMENTS   
+----------------------------------------------------------*/
+
+/* you can specify a greater or lesser percentage for the 
+page width. Or, you can specify an exact pixel width. */
+.page
+{
+    padding: 0;
+    margin: 0;
+}
+
+#header
+{
+    position: relative;
+    margin-bottom: 0px;
+    color: #000;
+    padding: 0 0 0 15px;
+    background: url('mdocimages/headerbg.png');
+    background-position: right;
+    background-repeat: no-repeat;
+    background-color: #679EF1;
+    height: 40px;
+    border-bottom: 1px solid #98C2F7;
+    border-bottom: 1px dotted #3363BD;
+}
+
+#header h1
+{
+    font-weight: bold;
+    padding: 0;
+    margin: 0;
+    color: #fff;
+    border: none;
+    line-height: 1.8em;
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 22px !important;
+}
+
+#main
+{
+    padding: 0px 0px 15px 0px;
+    background-color: #fff;
+    margin-bottom: 30px;
+    _height: 1px; /* only IE6 applies CSS properties starting with an underscore */
+}
+
+#footer
+{
+    color: #999;
+    padding: 10px 0;
+    text-align: center;
+    line-height: normal;
+    margin: 0;
+    font-size: 8pt;
+}
+
+#line-background
+{
+    background-image: url('mdocimages/treebg.png');
+    background-repeat: repeat-y;
+    height: 100%;
+}
+
+#left-content
+{
+    float: left;
+    width: 186px;
+    padding-top: 5px;
+    margin-right: 5px;
+    overflow: hidden;
+}
+
+#right-content
+{
+    padding-top: 0px;
+    overflow: auto;
+    height: 100%;
+}
+
+.right-content-pad
+{
+    margin: 6px 10px 0px 10px;
+}
+
+.named-header
+{
+    background: url('mdocimages/hatch.png') repeat-x left bottom;
+    height: 48px;
+    background-color: #FAFBFD;
+    font-size: 16pt;
+    font-weight: bold;
+    padding: 8px 0 0 10px;
+    font-family: 'Segoe UI',Verdana,Arial, sans-serif;
+}
+
+.member-list
+{
+    border-spacing: 0px;
+}
+
+.member-list td
+{
+    padding: 4px;
+    margin: 0px;
+    border-bottom: 1px dotted #CCCCCC;
+}
+
+.member-list
+{
+    
+}
+/* TAB MENU   
+----------------------------------------------------------*/
+ul#menu
+{
+    border-bottom: 1px #5C87B2 solid;
+    padding: 0 0 2px;
+    position: relative;
+    margin: 0;
+    text-align: right;
+}
+
+ul#menu li
+{
+    display: inline;
+    list-style: none;
+}
+
+ul#menu li#greeting
+{
+    padding: 10px 20px;
+    font-weight: bold;
+    text-decoration: none;
+    line-height: 2.8em;
+    color: #fff;
+}
+
+ul#menu li a
+{
+    padding: 10px 20px;
+    font-weight: bold;
+    text-decoration: none;
+    line-height: 2.8em;
+    background-color: #e8eef4;
+    color: #034af3;
+}
+
+ul#menu li a:hover
+{
+    background-color: #fff;
+    text-decoration: none;
+}
+
+ul#menu li a:active
+{
+    background-color: #a6e2a6;
+    text-decoration: none;
+}
+
+ul#menu li.selected a
+{
+    background-color: #fff;
+    color: #000;
+}
+
+/* FORM LAYOUT ELEMENTS   
+----------------------------------------------------------*/
+
+fieldset 
+{
+    margin: 1em 0;
+    padding: 1em;
+    border: 1px solid #CCC;
+}
+
+fieldset p 
+{
+    margin: 2px 12px 10px 10px;
+}
+
+legend 
+{
+    font-size: 11pt;
+    font-weight: 600;
+    padding: 2px 4px 8px 4px;
 }
 
-div.Header * {
-  font-size: smaller;
+input[type="text"] 
+{
+    width: 200px;
+    border: 1px solid #CCC;
 }
 
-div.Note {
+input[type="password"] 
+{
+    width: 200px;
+    border: 1px solid #CCC;
 }
 
-i.ParamRef {
+/* TABLE
+----------------------------------------------------------*/
+
+table 
+{
+/*  border: solid 1px #e8eef4;
+  border-collapse: collapse;*/
 }
 
-i.subtitle {
+table td 
+{
+  padding: 5px;   
+/*  border: solid 1px #e8eef4;*/
 }
 
-ul.TypeMembersIndex {
+table th
+{
+  padding: 6px 5px;
   text-align: left;
-  background: #F8F8F8;
+  background-color: #e8eef4; 
+  border: solid 1px #e8eef4;   
+}
+
+/* MISC  
+----------------------------------------------------------*/
+.clear
+{
+    clear: both;
+}
+
+.error
+{
+    color:Red;
+}
+
+.indent
+{
+    margin-left: 20px;
+    margin-right: 20px;
+}
+
+#menucontainer
+{
+    margin-top:40px;
+}
+
+div#title
+{
+    display:block;
+    float:left;
+    text-align:left;
+}
+
+#logindisplay
+{
+    font-size:11pt;
+    display:block;
+    text-align:right;
+    margin:0px;
+    color:White;
+}
+
+#logindisplay a:link
+{
+    color: white;
+    text-decoration: underline;
+}
+
+#logindisplay a:visited
+{
+    color: white;
+    text-decoration: underline;
+}
+
+#logindisplay a:hover
+{
+    color: white;
+    text-decoration: none;
+}
+
+/* Styles for validation helpers
+-----------------------------------------------------------*/
+.field-validation-error
+{
+    color: #ff0000;
+}
+
+.field-validation-valid
+{
+    display: none;
+}
+
+.input-validation-error
+{
+    border: 1px solid #ff0000;
+    background-color: #ffeeee;
+}
+
+.validation-summary-errors
+{
+    font-weight: bold;
+    color: #ff0000;
+}
+
+.validation-summary-valid
+{
+    display: none;
+}
+
+/* Styles for editor and display helpers
+----------------------------------------------------------*/
+.display-label,
+.editor-label,
+.display-field,
+.editor-field
+{
+    margin: 0.5em 0;
+}
+
+.text-box
+{
+    width: 30em;
+}
+
+.text-box.multi-line
+{
+    height: 6.5em;
+}
+
+.tri-state
+{
+    width: 6em;
+}
+
+/* Breadcrumb Bar */
+.breadcrumb
+{
+    border-left: 1px solid #cacaca;
+    border-right: 1px solid #cacaca;
+    border-bottom: 1px solid #cacaca;
+    background-image: url('mdocimages/bc_bg.png');
+    background-repeat: repeat-x;
+    height: 25px;
+    line-height: 25px;
+    color: #454545;
+    border-top: 0px;
+    width: 100%;
+    overflow: hidden;
+    margin-left: -2px;
+    padding: 0px;
+    font-style: normal;
+    font-variant: normal;
+    font-weight: normal;
+    font-size: 11px;
+    font-family: Arial, Helvetica, sans-serif;
+    margin-right: 0px;
+    margin-top: 0px;
+    margin-bottom: 0px;
+}
+
+.breadcrumb li
+{
+    list-style-type: none;
+    float: left;
+    padding-left: 25px;
+    background-position: 5px center;
+    background-repeat: no-repeat;
+}
+
+.breadcrumb li.pubclass { background-image: url('mdocimages/pubclass.png'); }
+.breadcrumb li.pubdelegate { background-image: url('mdocimages/pubdelegate.png'); }
+.breadcrumb li.pubenumeration { background-image: url('mdocimages/pubenumeration.png'); }
+.breadcrumb li.pubevent { background-image: url('mdocimages/pubevent.png'); }
+.breadcrumb li.pubextension { background-image: url('mdocimages/pubextension.png'); }
+.breadcrumb li.pubfield { background-image: url('mdocimages/pubfield.png'); }
+.breadcrumb li.pubinterface { background-image: url('mdocimages/pubinterface.png'); }
+.breadcrumb li.pubmethod { background-image: url('mdocimages/pubmethod.png'); }
+.breadcrumb li.pubproperty { background-image: url('mdocimages/pubproperty.png'); }
+.breadcrumb li.pubstructure { background-image: url('mdocimages/pubstructure.png'); }
+
+.breadcrumb li.protclass { background-image: url('mdocimages/protclass.png'); }
+.breadcrumb li.protdelegate { background-image: url('mdocimages/protdelegate.png'); }
+.breadcrumb li.protenumeration { background-image: url('mdocimages/protenumeration.png'); }
+.breadcrumb li.protevent { background-image: url('mdocimages/protevent.png'); }
+.breadcrumb li.protextension { background-image: url('mdocimages/protextension.png'); }
+.breadcrumb li.protfield { background-image: url('mdocimages/protfield.png'); }
+.breadcrumb li.protinterface { background-image: url('mdocimages/protinterface.png'); }
+.breadcrumb li.protmethod { background-image: url('mdocimages/protmethod.png'); }
+.breadcrumb li.protproperty { background-image: url('mdocimages/protproperty.png'); }
+.breadcrumb li.protstructure { background-image: url('mdocimages/protstructure.png'); }
+
+.breadcrumb li.privclass { background-image: url('mdocimages/privclass.png'); }
+.breadcrumb li.privdelegate { background-image: url('mdocimages/privdelegate.png'); }
+.breadcrumb li.privenumeration { background-image: url('mdocimages/privenumeration.png'); }
+.breadcrumb li.privevent { background-image: url('mdocimages/privevent.png'); }
+.breadcrumb li.privextension { background-image: url('mdocimages/privextension.png'); }
+.breadcrumb li.privfield { background-image: url('mdocimages/privfield.png'); }
+.breadcrumb li.privinterface { background-image: url('mdocimages/privinterface.png'); }
+.breadcrumb li.privmethod { background-image: url('mdocimages/privmethod.png'); }
+.breadcrumb li.privproperty { background-image: url('mdocimages/privproperty.png'); }
+.breadcrumb li.privstructure { background-image: url('mdocimages/privstructure.png'); }
+
+.breadcrumb li.namespace 
+{
+    padding-left: 26px;
+    background-image: url('mdocimages/namespace.png');
+}
+
+.breadcrumb li.reference 
+{
+    padding-left: 26px;
+    background-image: url('mdocimages/reference.png');
+}
+
+.breadcrumb li.members 
+{
+    padding-left: 24px;
+    background-image: url('mdocimages/members.png');
 }
 
-ul.TypeMembersIndex li {
-  display: inline;
-  margin:  0.5em;
+.breadcrumb li.home 
+{
+    padding-left: 31px;
+    background-image: url('mdocimages/house.png');
+    background-position: 8px center;
 }
 
-table.HeaderTable {
+.breadcrumb li.help 
+{
+    background-image: url('mdocimages/help.png');
 }
 
-table.SignatureTable {
+.breadcrumb li.unrecognized 
+{
+    background-image: url('mdocimages/error.png');
 }
 
+.breadcrumb a
+{
+    height: 25px;
+    display: block;
+    background-image: url('mdocimages/bc_separator.png');
+    background-repeat: no-repeat;
+    background-position: right;
+    padding-right: 15px;
+    color: #454545;
+    text-decoration: none;
+}
+
+.breadcrumb a:hover
+{
+    text-decoration: underline;
+}
+
+.clearer
+{
+    clear: both;
+}
+
+div.Signature {
+  border: 1px solid #C0C0C0;
+  background: #F2F2F2;
+  padding: 1em;
+  margin-left: 1em;
+}
+
+div.Content {
+    margin-left: 1em;
+}
+
+.SectionBox {
+    margin-left: 1em;
+}
+
+/* Salvaged from the old style */
 table.Documentation, table.Enumeration, table.TypeDocumentation {
   border-collapse: collapse;
   width: 100%;
@@ -83,38 +590,7 @@ table.TypeMembers tr td {
   border: white;
 }
 
-table.Documentation {
-}
-
-table.TypeMembers {
-}
-
-div.CodeExample {
-  width: 100%;
-  border: 1px solid #DDDDDD;
-  background-color: #F8F8F8;
-}
-
-div.CodeExample p {
-  margin: 0.5em;
-  border-bottom: 1px solid #DDDDDD;
-}
-
-div.CodeExample div {
-  margin: 0.5em;
-}
-
-h4 {
-  margin-bottom: 0;
-}
-
-h2 a, h3 a, h4 a {
-  color: inherit;
-  text-decoration: none;
-}
-
-div.Signature {
-  border: 1px solid #C0C0C0;
-  background: #F2F2F2;
-  padding: 1em;
+span.NotEntered /* Documentation for this section has not yet been entered */ {
+	font-style: italic;
+	color: #aaa;	
 }
diff --git a/mcs/tools/pdb2mdb/ChangeLog b/mcs/tools/pdb2mdb/ChangeLog
index 3109ad3..15eae38 100644
--- a/mcs/tools/pdb2mdb/ChangeLog
+++ b/mcs/tools/pdb2mdb/ChangeLog
@@ -1,3 +1,13 @@
+2011-01-17  Jb Evain  <jbevain at gmail.com>
+
+	Fix pdb2mdb when a pdb has a method with no seq points.
+
+	Patch by Thad Thompson <TThompson at nucsafe.com>
+
+2010-10-05  Jb Evain  <jbevain at gmail.com>
+
+	Port pdb2mdb to cecil-light
+
 2009-04-27  Jb Evain  <jbevain at novell.com>
 
 	* sync with CodePlex r10923.
diff --git a/mcs/tools/pdb2mdb/ChangeLog b/mcs/tools/pdb2mdb/ChangeLog.old
similarity index 100%
copy from mcs/tools/pdb2mdb/ChangeLog
copy to mcs/tools/pdb2mdb/ChangeLog.old
diff --git a/mcs/tools/pdb2mdb/Driver.cs b/mcs/tools/pdb2mdb/Driver.cs
index 0a37c9c..ab3549e 100644
--- a/mcs/tools/pdb2mdb/Driver.cs
+++ b/mcs/tools/pdb2mdb/Driver.cs
@@ -43,6 +43,9 @@ namespace Pdb2Mdb {
 
 		void ConvertFunction (PdbFunction function)
 		{
+			if (function.lines == null)
+				return;
+
 			var method = new SourceMethod { Name = function.name, Token = (int) function.token };
 
 			var file = GetSourceFile (mdb, function);
@@ -58,9 +61,6 @@ namespace Pdb2Mdb {
 
 		void ConvertSequencePoints (PdbFunction function, SourceFile file, SourceMethodBuilder builder)
 		{
-			if (function.lines == null)
-				return;
-
 			foreach (var line in function.lines.SelectMany (lines => lines.lines))
 				builder.MarkSequencePoint (
 					(int) line.offset,
@@ -146,7 +146,7 @@ namespace Pdb2Mdb {
 			if (!File.Exists (asm))
 				Usage ();
 
-			var assembly = AssemblyFactory.GetAssembly (asm);
+			var assembly = AssemblyDefinition.ReadAssembly (asm);
 
 			var pdb = assembly.Name.Name + ".pdb";
 
diff --git a/mcs/tools/resgen/ChangeLog b/mcs/tools/resgen/ChangeLog
index 6bd690b..68c9f60 100644
--- a/mcs/tools/resgen/ChangeLog
+++ b/mcs/tools/resgen/ChangeLog
@@ -1,3 +1,7 @@
+2010-12-29  Marek Safar  <marek.safar at gmail.com>
+
+	Remove no longer used bootstrap profiles
+
 2008-09-09  Sebastien Pouliot  <sebastien at ximian.com>
 
 	* monoresgen.cs: Make resgen2 report a bit more useful by considering
diff --git a/mcs/tools/resgen/ChangeLog b/mcs/tools/resgen/ChangeLog.old
similarity index 100%
copy from mcs/tools/resgen/ChangeLog
copy to mcs/tools/resgen/ChangeLog.old
diff --git a/mcs/tools/security/ChangeLog b/mcs/tools/security/ChangeLog
index 3c07d07..4850892 100644
--- a/mcs/tools/security/ChangeLog
+++ b/mcs/tools/security/ChangeLog
@@ -1,3 +1,50 @@
+2010-11-03  Marek Habersack  <grendel at twistedcode.net>
+
+	Fix mixed newlines
+
+2010-10-20  Pablo Ruiz Garcia  <pablo.ruiz at gmail.com>
+
+	[API] X509 related enhacemnts to allow 1) associating keystore's
+	private keys with their corresponding public certificates found at
+	X509Stores, and 2) importing private keys to X509Stores along with
+	certificates.
+
+	mcs/class/corlib/Mono.Security.X509/X509Store.cs:
+	mcs/class/Mono.Security/Mono.Security.X509/X509Store.cs:
+	mcs/class/corlib/Mono.Security.X509/X509StoreManager.cs:
+	mcs/class/Mono.Security/Mono.Security.X509/X509StoreManager.cs:
+	Modified MSX.X509Store to allow importing privateKeys along
+	certificates (by using RSACryptoServiceProvider and
+	KeyPairPersister). Fixed X509Store to use certificate's hash as
+	CspParameters.KeyContainerName.
+
+	mcs/tools/security/certmgr.cs: Added a new -importKey action to
+	certmgr, which allows importing a PKCS12 contained key into our
+	KeyPair store. Added a more (verbose) output to certmgr's -list
+	action.
+
+	man/certmgr.1: Updated certmgr man page ti reflect -importKey
+	addition.
+
+	mcs/class/corlib/System.Security.Cryptography/CspParameters.cs:
+	mcs/class/corlib/System.Security.Cryptography/RSACryptoServiceProvider.cs:
+	Implemented RSACryptoServiceProvider.CspKeyContainerInfo getter
+	RSACryptoServiceProvider will not take into account
+	CspParameterFlags.UseExistingKey by throwing a
+	CryptographicException if keyset identified by KeyContainerName
+	does not exists.
+
+2010-10-06  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	URL moved and use the raw format for certdata
+
+	The URL has been moved permanently. Use the raw format instead of
+	downloading the HTML page.
+
+2010-10-05  Jb Evain  <jbevain at gmail.com>
+
+	Port permview to cecil-light
+
 2010-06-16  Sebastien Pouliot  <sebastien at ximian.com>
 
 	* certmgr.cs: Fix case where DSA is used in SSL certificate (rare 
diff --git a/mcs/tools/security/ChangeLog b/mcs/tools/security/ChangeLog.old
similarity index 100%
copy from mcs/tools/security/ChangeLog
copy to mcs/tools/security/ChangeLog.old
diff --git a/mcs/tools/security/certmgr.cs b/mcs/tools/security/certmgr.cs
index 5799fcf..5251bf9 100644
--- a/mcs/tools/security/certmgr.cs
+++ b/mcs/tools/security/certmgr.cs
@@ -9,6 +9,7 @@
 
 using System;
 using System.Collections;
+using System.Globalization;
 using System.IO;
 using System.Net;
 using System.Net.Sockets;
@@ -40,21 +41,24 @@ namespace Mono.Tools {
 			Console.WriteLine ("   or: certmgr -list object-type [options] store");
 			Console.WriteLine ("   or: certmgr -del object-type [options] store certhash");
 			Console.WriteLine ("   or: certmgr -ssl [options] url");
+			Console.WriteLine ("   or: certmgr -importKey [options] store pkcs12file");
 			Console.WriteLine ();
 			Console.WriteLine ("actions");
-			Console.WriteLine ("\t-add\tAdd a certificate, CRL or CTL to specified store");
-			Console.WriteLine ("\t-del\tRemove a certificate, CRL or CTL to specified store");
-			Console.WriteLine ("\t-put\tCopy a certificate, CRL or CTL from a store to a file");
-			Console.WriteLine ("\t-list\tList certificates, CRL ot CTL in the specified store.");
-			Console.WriteLine ("\t-ssl\tDownload and add certificates from an SSL session");
+			Console.WriteLine ("\t-add\t\tAdd a certificate, CRL or CTL to specified store");
+			Console.WriteLine ("\t-del\t\tRemove a certificate, CRL or CTL to specified store");
+			Console.WriteLine ("\t-put\t\tCopy a certificate, CRL or CTL from a store to a file");
+			Console.WriteLine ("\t-list\t\tList certificates, CRL ot CTL in the specified store.");
+			Console.WriteLine ("\t-ssl\t\tDownload and add certificates from an SSL session");
+			Console.WriteLine ("\t-importKey\tImport PKCS12 privateKey to keypair store.");
 			Console.WriteLine ("object types");
-			Console.WriteLine ("\t-c\tadd/del/put certificates");
-			Console.WriteLine ("\t-crl\tadd/del/put certificate revocation lists");
-			Console.WriteLine ("\t-ctl\tadd/del/put certificate trust lists [unsupported]");
+			Console.WriteLine ("\t-c\t\tadd/del/put certificates");
+			Console.WriteLine ("\t-crl\t\tadd/del/put certificate revocation lists");
+			Console.WriteLine ("\t-ctl\t\tadd/del/put certificate trust lists [unsupported]");
 			Console.WriteLine ("other options");
-			Console.WriteLine ("\t-m\tuse the machine certificate store (default to user)");
-			Console.WriteLine ("\t-v\tverbose mode (display status for every steps)");
-			Console.WriteLine ("\t-?\th[elp]\tDisplay this help message");
+			Console.WriteLine ("\t-m\t\tuse the machine certificate store (default to user)");
+			Console.WriteLine ("\t-v\t\tverbose mode (display status for every steps)");
+			Console.WriteLine ("\t-p [password]\tPassword used to decrypt PKCS12");
+			Console.WriteLine ("\t-?\t\th[elp]\tDisplay this help message");
 			Console.WriteLine ();
 		}
 
@@ -82,7 +86,8 @@ namespace Mono.Tools {
 			Delete,
 			Put,
 			List,
-			Ssl
+			Ssl,
+			ImportKey
 		}
 
 		static Action GetAction (string arg) 
@@ -107,6 +112,9 @@ namespace Mono.Tools {
 				case "TLS":
 					action = Action.Ssl;
 					break;
+				case "IMPORTKEY":
+					action = Action.ImportKey;
+					break;
 			}
 			return action;
 		}
@@ -168,7 +176,7 @@ namespace Mono.Tools {
 			return Convert.FromBase64String (base64);
 		}
 
-		static X509CertificateCollection LoadCertificates (string filename) 
+		static X509CertificateCollection LoadCertificates (string filename, string password, bool verbose) 
 		{
 			X509Certificate x509 = null;
 			X509CertificateCollection coll = new X509CertificateCollection ();
@@ -196,9 +204,23 @@ namespace Mono.Tools {
 					break;
 				case ".P12":
 				case ".PFX":
-					// TODO - support PKCS12 with passwords
-					PKCS12 p12 = PKCS12.LoadFromFile (filename);
-					coll.AddRange (p12.Certificates);
+					PKCS12 p12 = password == null ? PKCS12.LoadFromFile (filename)
+						: PKCS12.LoadFromFile (filename, password);
+					X509CertificateCollection tmp = new X509CertificateCollection (p12.Certificates);
+
+					for (int i = 0; i != p12.Keys.Count; i++) {
+						X509Certificate cert = p12.Certificates[i];
+						RSACryptoServiceProvider pk = p12.Keys[i] as RSACryptoServiceProvider;
+
+						if (pk == null || pk.PublicOnly)
+							continue;
+
+						if (verbose)
+							Console.WriteLine ("Found key for certificate: {0}", cert.SubjectName);
+
+						tmp[0].RSA = pk;
+					}
+					coll.AddRange(tmp);
 					p12 = null;
 					break;
 				default:
@@ -236,11 +258,11 @@ namespace Mono.Tools {
 			return list;
 		}
 
-		static void Add (ObjectType type, X509Store store, string file, bool verbose) 
+		static void Add (ObjectType type, X509Store store, string file, string password, bool verbose) 
 		{
 			switch (type) {
 				case ObjectType.Certificate:
-					X509CertificateCollection coll = LoadCertificates (file);
+					X509CertificateCollection coll = LoadCertificates (file, password, verbose);
 					foreach (X509Certificate x509 in coll) {
 						store.Import (x509);
 					}
@@ -286,7 +308,7 @@ namespace Mono.Tools {
 			}
 		}
 
-		static void Put (ObjectType type, X509Store store, string file, bool verbose) 
+		static void Put (ObjectType type, X509Store store, string file, string password, bool verbose) 
 		{
 			throw new NotImplementedException ("Put not yet supported");
 /*			switch (type) {
@@ -300,7 +322,7 @@ namespace Mono.Tools {
 			}*/
 		}
 
-		static void DisplayCertificate (X509Certificate x509, bool verbose)
+		static void DisplayCertificate (X509Certificate x509, bool machine, bool verbose)
 		{
 			Console.WriteLine ("{0}X.509 v{1} Certificate", (x509.IsSelfSigned ? "Self-signed " : String.Empty), x509.Version);
 			Console.WriteLine ("  Serial Number: {0}", CryptoConvert.ToHex (x509.SerialNumber));
@@ -318,16 +340,25 @@ namespace Mono.Tools {
 				Console.WriteLine ("  Algorithm Parameters: {0}", (x509.SignatureAlgorithmParameters == null) ? "None" :
 					CryptoConvert.ToHex (x509.SignatureAlgorithmParameters));
 				Console.WriteLine ("  Signature:            {0}", CryptoConvert.ToHex (x509.Signature));
+				RSACryptoServiceProvider rsaCsp = x509.RSA as RSACryptoServiceProvider;
+				RSAManaged rsaManaged = x509.RSA as RSAManaged;
+				Console.WriteLine ("  Private Key:			{0}", ((rsaCsp != null && !rsaCsp.PublicOnly) 
+					|| (rsaManaged != null && !rsaManaged.PublicOnly)));
+				CspParameters cspParams = new CspParameters ();
+				cspParams.KeyContainerName = CryptoConvert.ToHex (x509.Hash);
+				cspParams.Flags = machine ? CspProviderFlags.UseMachineKeyStore : 0;
+				KeyPairPersistence kpp = new KeyPairPersistence (cspParams);
+				Console.WriteLine ("  KeyPair Key:			{0}", kpp.Load ());
 			}
 			Console.WriteLine ();
 		}
 
-		static void List (ObjectType type, X509Store store, string file, bool verbose) 
+		static void List (ObjectType type, X509Store store, bool machine, string file, bool verbose) 
 		{
 			switch (type) {
 				case ObjectType.Certificate:
 					foreach (X509Certificate x509 in store.Certificates) {
-						DisplayCertificate (x509, verbose);
+						DisplayCertificate (x509, machine, verbose);
 					}
 					break;
 				case ObjectType.CRL:
@@ -479,9 +510,40 @@ namespace Mono.Tools {
 			}
 		}
 
+		static void ImportKey (ObjectType type, bool machine, string file, string password, bool verbose)
+		{
+			switch (type) {
+				case ObjectType.Certificate:
+					X509CertificateCollection coll = LoadCertificates (file, password, verbose);
+					int count = 0;
+
+					foreach (X509Certificate x509 in coll) {
+						RSACryptoServiceProvider pk = x509.RSA as RSACryptoServiceProvider;
+
+						if (pk == null || pk.PublicOnly)
+							continue;
+
+						CspParameters csp = new CspParameters ();
+						csp.KeyContainerName = CryptoConvert.ToHex (x509.Hash);
+						csp.Flags = machine ? CspProviderFlags.UseMachineKeyStore : 0;
+						RSACryptoServiceProvider rsa = new RSACryptoServiceProvider (csp);
+						rsa.ImportParameters (pk.ExportParameters (true));
+						rsa.PersistKeyInCsp = true;
+						count++;
+					}
+					Console.WriteLine ("{0} keys(s) imported to KeyPair {1} persister.", 
+						count, machine ? "LocalMachine" : "CurrentUser");
+					break;
+				default:
+					throw new NotSupportedException (type.ToString ());
+			}
+		}
+
 		[STAThread]
 		static void Main (string[] args)
 		{
+			string password = null;
+
 			Header ();
 			if (args.Length < 2) {
 				Help ();
@@ -505,6 +567,12 @@ namespace Mono.Tools {
 			if (machine)
 				n++;
 
+			if (GetCommand (args [n]) == "P")
+			{
+				n++;
+				password = args[n++];
+			}
+
 			X509Store store = null;
 			string storeName = null;
 			if (action != Action.Ssl) {
@@ -537,20 +605,23 @@ namespace Mono.Tools {
 			try {
 				switch (action) {
 				case Action.Add:
-					Add (type, store, file, verbose);
+					Add (type, store, file, password, verbose);
 					break;
 				case Action.Delete:
 					Delete (type, store, file, verbose);
 					break;
 				case Action.Put:
-					Put (type, store, file, verbose);
+					Put (type, store, file, password, verbose);
 					break;
 				case Action.List:
-					List (type, store, file, verbose);
+					List (type, store, machine, file, verbose);
 					break;
 				case Action.Ssl:
 					Ssl (file, machine, verbose);
 					break;
+				case Action.ImportKey:
+					ImportKey (type, machine, file, password, verbose);
+					break;
 				default:
 					throw new NotSupportedException (action.ToString ());
 				}
diff --git a/mcs/tools/security/mozroots.cs b/mcs/tools/security/mozroots.cs
index be16334..442ee9e 100644
--- a/mcs/tools/security/mozroots.cs
+++ b/mcs/tools/security/mozroots.cs
@@ -38,13 +38,13 @@ using Mono.Security.Authenticode;
 using Mono.Security.X509;
 
 [assembly: AssemblyTitle ("Mozilla Roots Importer")]
-[assembly: AssemblyDescription ("Download and import trusted root certificates from Mozilla's LXR.")]
+[assembly: AssemblyDescription ("Download and import trusted root certificates from Mozilla's MXR.")]
 
 namespace Mono.Tools {
 
 	class MozRoots {
 
-		private const string defaultUrl = "http://lxr.mozilla.org/seamonkey/source/security/nss/lib/ckfw/builtins/certdata.txt";
+		private const string defaultUrl = "http://mxr.mozilla.org/seamonkey/source/security/nss/lib/ckfw/builtins/certdata.txt?raw=1";
 
 		static string url;
 		static string inputFile;
@@ -79,10 +79,10 @@ namespace Mono.Tools {
 				} else {
 					WriteLine ("Downloading from '{0}'...", url);
 					HttpWebRequest req = (HttpWebRequest) WebRequest.Create (url);
+					req.Timeout = 10000;
 					return req.GetResponse ().GetResponseStream ();
 				}
-			}
-			catch {
+			} catch {
 				return null;
 			}
 		}
@@ -93,36 +93,34 @@ namespace Mono.Tools {
 			StringBuilder sb = new StringBuilder ();
 			bool processing = false;
 
-			Stream s = GetFile ();
-			if (s == null) {
-				WriteLine ("Couldn't retrieve the file using the supplied informations.");
-				return null;
-			}
+			using (Stream s = GetFile ()) {
+				if (s == null) {
+					WriteLine ("Couldn't retrieve the file using the supplied information.");
+					return null;
+				}
 
-			StreamReader sr = new StreamReader (s);
-			while (true) {
-				string line = sr.ReadLine ();
-				if (line == null)
-					break;
-				int start = line.IndexOf ("</a> ");
-				if (start < 0)
-					continue;
-
-				if (processing) {
-					if (line.IndexOf ("END") > start) {
-						processing = false;
-						X509Certificate root = DecodeCertificate (sb.ToString ());
-						roots.Add (root);
-
-						sb = new StringBuilder ();
-						continue;
+				StreamReader sr = new StreamReader (s);
+				while (true) {
+					string line = sr.ReadLine ();
+					if (line == null)
+						break;
+
+					if (processing) {
+						if (line.StartsWith ("END")) {
+							processing = false;
+							X509Certificate root = DecodeCertificate (sb.ToString ());
+							roots.Add (root);
+
+							sb = new StringBuilder ();
+							continue;
+						}
+						sb.Append (line);
+					} else {
+						processing = line.StartsWith ("CKA_VALUE MULTILINE_OCTAL");
 					}
-					sb.Append (line.Substring (start + 5));
-				} else {
-					processing = (line.IndexOf ("CKA_VALUE MULTILINE_OCTAL") > start);
 				}
+				return roots;
 			}
-			return roots;
 		}
 
 		static int Process ()
@@ -295,7 +293,7 @@ namespace Mono.Tools {
 			Console.WriteLine (" --ask-remove\tAlways confirm before removing an existing trusted certificate.");
 			Console.WriteLine ("{0}and the advanced options are", Environment.NewLine);
 			Console.WriteLine (" --url url\tSpecify an alternative URL for downloading the trusted");
-			Console.WriteLine ("\t\tcertificates (LXR source format).");
+			Console.WriteLine ("\t\tcertificates (MXR source format).");
 			Console.WriteLine (" --file name\tDo not download but use the specified file.");
 			Console.WriteLine (" --pkcs7 name\tExport the certificates into a PKCS#7 file.");
 			Console.WriteLine (" --machine\tImport the certificate in the machine trust store.");
@@ -303,6 +301,12 @@ namespace Mono.Tools {
 			Console.WriteLine (" --quiet\tLimit console output to errors and confirmations messages.");
 		}
 
+		static void WriteLine (string str)
+		{
+			if (!quiet)
+				Console.WriteLine (str);
+		}
+
 		static void WriteLine (string format, params object[] args)
 		{
 			if (!quiet)
diff --git a/mcs/tools/security/permview.cs b/mcs/tools/security/permview.cs
index cfe379c..422de82 100644
--- a/mcs/tools/security/permview.cs
+++ b/mcs/tools/security/permview.cs
@@ -9,10 +9,11 @@
 
 using System;
 using System.Collections;
+using System.Collections.Generic;
 using System.IO;
 using System.Reflection;
 using System.Security;
-using System.Security.Permissions;
+using SSP = System.Security.Permissions;
 using System.Text;
 
 using Mono.Cecil;
@@ -22,6 +23,110 @@ using Mono.Cecil;
 
 namespace Mono.Tools {
 
+	static class SecurityDeclarationRocks {
+
+		public static PermissionSet ToPermissionSet (this SecurityDeclaration self)
+		{
+			if (self == null)
+				throw new ArgumentNullException ("self");
+
+			PermissionSet set;
+			if (TryProcessPermissionSetAttribute (self, out set))
+				return set;
+
+			return CreatePermissionSet (self);
+		}
+
+		static bool TryProcessPermissionSetAttribute (SecurityDeclaration declaration, out PermissionSet set)
+		{
+			set = null;
+
+			if (!declaration.HasSecurityAttributes && declaration.SecurityAttributes.Count != 1)
+				return false;
+
+			var security_attribute = declaration.SecurityAttributes [0];
+			var attribute_type = security_attribute.AttributeType;
+
+			if (attribute_type.Name != "PermissionSetAttribute" || attribute_type.Namespace != "System.Security.Permissions")
+				return false;
+
+			var named_argument = security_attribute.Properties [0];
+			if (named_argument.Name != "XML")
+				throw new NotSupportedException ();
+
+			var attribute = new SSP.PermissionSetAttribute ((SSP.SecurityAction) declaration.Action);
+			attribute.XML = (string) named_argument.Argument.Value;
+
+			set = attribute.CreatePermissionSet ();
+			return true;
+		}
+
+		static PermissionSet CreatePermissionSet (SecurityDeclaration declaration)
+		{
+			var set = new PermissionSet (SSP.PermissionState.None);
+
+			foreach (var attribute in declaration.SecurityAttributes) {
+				var permission = CreatePermission (declaration, attribute);
+				set.AddPermission (permission);
+			}
+
+			return set;
+		}
+
+		static IPermission CreatePermission (SecurityDeclaration declaration, SecurityAttribute attribute)
+		{
+			var attribute_type = Type.GetType (attribute.AttributeType.FullName);
+			if (attribute_type == null)
+				throw new ArgumentException ();
+
+			var security_attribute = CreateSecurityAttribute (attribute_type, declaration);
+			if (security_attribute == null)
+				throw new InvalidOperationException ();
+
+			CompleteSecurityAttribute (security_attribute, attribute);
+
+			return security_attribute.CreatePermission ();
+		}
+
+		static void CompleteSecurityAttribute (SSP.SecurityAttribute security_attribute, SecurityAttribute attribute)
+		{
+			if (attribute.HasFields)
+				CompleteSecurityAttributeFields (security_attribute, attribute);
+
+			if (attribute.HasProperties)
+				CompleteSecurityAttributeProperties (security_attribute, attribute);
+		}
+
+		static void CompleteSecurityAttributeFields (SSP.SecurityAttribute security_attribute, SecurityAttribute attribute)
+		{
+			var type = security_attribute.GetType ();
+
+			foreach (var named_argument in attribute.Fields)
+				type.GetField (named_argument.Name).SetValue (security_attribute, named_argument.Argument.Value);
+		}
+
+		static void CompleteSecurityAttributeProperties (SSP.SecurityAttribute security_attribute, SecurityAttribute attribute)
+		{
+			var type = security_attribute.GetType ();
+
+			foreach (var named_argument in attribute.Properties)
+				type.GetProperty (named_argument.Name).SetValue (security_attribute, named_argument.Argument.Value, null);
+		}
+
+		static SSP.SecurityAttribute CreateSecurityAttribute (Type attribute_type, SecurityDeclaration declaration)
+		{
+			SSP.SecurityAttribute security_attribute;
+			try {
+				security_attribute = (SSP.SecurityAttribute) Activator.CreateInstance (
+					attribute_type, new object [] { (SSP.SecurityAction) declaration.Action });
+			} catch (MissingMethodException) {
+				security_attribute = (SSP.SecurityAttribute) Activator.CreateInstance (attribute_type, new object [0]);
+			}
+
+			return security_attribute;
+		}
+	}
+
 	class SecurityElementComparer : IComparer {
 
 		public int Compare (object x, object y)
@@ -101,17 +206,17 @@ namespace Mono.Tools {
 			foreach (SecurityDeclaration decl in ad.SecurityDeclarations) {
 				switch (decl.Action) {
 				case Mono.Cecil.SecurityAction.RequestMinimum:
-					minimal = decl.PermissionSet.ToString ();
+					minimal = decl.ToPermissionSet ().ToString ();
 					break;
 				case Mono.Cecil.SecurityAction.RequestOptional:
-					optional = decl.PermissionSet.ToString ();
+					optional = decl.ToPermissionSet ().ToString ();
 					break;
 				case Mono.Cecil.SecurityAction.RequestRefuse:
-					refused = decl.PermissionSet.ToString ();
+					refused = decl.ToPermissionSet ().ToString ();
 					break;
 				default:
 					tw.WriteLine ("Invalid assembly level declaration {0}{1}{2}",
-						decl.Action, Environment.NewLine, decl.PermissionSet);
+						decl.Action, Environment.NewLine, decl.ToPermissionSet ());
 					result = false;
 					break;
 				}
@@ -126,11 +231,11 @@ namespace Mono.Tools {
 			return result;
 		}
 
-		static void ShowSecurity (TextWriter tw, string header, SecurityDeclarationCollection declarations)
+		static void ShowSecurity (TextWriter tw, string header, IEnumerable<SecurityDeclaration> declarations)
 		{
 			foreach (SecurityDeclaration declsec in declarations) {
 				tw.WriteLine ("{0} {1} Permission Set:{2}{3}", header,
-					declsec.Action, Environment.NewLine, declsec.PermissionSet);
+					declsec.Action, Environment.NewLine, declsec.ToPermissionSet ());
 			}
 		}
 
@@ -164,13 +269,13 @@ namespace Mono.Tools {
 			se.AddAttribute (attr, value);
 		}
 
-		static SecurityElement AddSecurityXml (SecurityDeclarationCollection declarations)
+		static SecurityElement AddSecurityXml (IEnumerable<SecurityDeclaration> declarations)
 		{
 			ArrayList list = new ArrayList ();
 			foreach (SecurityDeclaration declsec in declarations) {
 				SecurityElement child = new SecurityElement ("Action");
 				AddAttribute (child, "Name", declsec.Action.ToString ());
-				child.AddChild (declsec.PermissionSet.ToXml ());
+				child.AddChild (declsec.ToPermissionSet ().ToXml ());
 				list.Add (child);
 			}
 			// sort actions
@@ -270,7 +375,7 @@ namespace Mono.Tools {
 					return 0;
 
 				string assemblyName = args [args.Length - 1];
-				AssemblyDefinition ad = AssemblyFactory.GetAssembly (assemblyName);
+				AssemblyDefinition ad = AssemblyDefinition.ReadAssembly (assemblyName);
 				if (ad != null) {
 					bool complete = false;
 					
diff --git a/mcs/tools/svcutil/ChangeLog b/mcs/tools/svcutil/ChangeLog
index d127448..7aa0d55 100644
--- a/mcs/tools/svcutil/ChangeLog
+++ b/mcs/tools/svcutil/ChangeLog
@@ -1,3 +1,24 @@
+2011-01-05  Atsushi Eno  <atsushi at ximian.com>
+
+	AssemblyPath support, patch by Michel Faucault.
+
+2010-10-22  Atsushi Eno  <atsushi at ximian.com>
+
+	We can use ImportAllEndpoints().
+
+2010-10-21  Atsushi Eno  <atsushi at ximian.com>
+
+	Since event arg type name can be EventArgs1, do not match by type
+	name. Check rather base type instead.
+
+2010-10-21  Atsushi Eno  <atsushi at ximian.com>
+
+	Async end operation needs cast.
+
+2010-10-21  Atsushi Eno  <atsushi at ximian.com>
+
+	Remove ExtensionData from moonlight proxy.
+
 2010-03-04  Jonathan Pryor  <jpryor at novell.com>
 
 	* Driver.cs, CommandLineOptions.cs: Remove Mono.GetOptions use and use
diff --git a/mcs/tools/svcutil/ChangeLog b/mcs/tools/svcutil/ChangeLog.old
similarity index 100%
copy from mcs/tools/svcutil/ChangeLog
copy to mcs/tools/svcutil/ChangeLog.old
diff --git a/mcs/tools/svcutil/Driver.cs b/mcs/tools/svcutil/Driver.cs
index 315d461..5c2a8c4 100644
--- a/mcs/tools/svcutil/Driver.cs
+++ b/mcs/tools/svcutil/Driver.cs
@@ -2,6 +2,7 @@ using System;
 using System.CodeDom;
 using System.CodeDom.Compiler;
 using System.IO;
+using System.Linq;
 using System.Reflection;
 using System.ServiceModel;
 using System.ServiceModel.Channels;
@@ -65,57 +66,56 @@ namespace Mono.ServiceContractTool
 
 			// For now only assemblyPath is supported.
 			foreach (string arg in co.RemainingArguments) {
-				Uri uri = null;
-				if (Uri.TryCreate (arg, UriKind.Absolute, out uri)) {
-					metadata = ResolveWithDisco (arg);
-					if (metadata == null)
-						metadata = ResolveWithWSMex (arg);
-
-					continue;
-				}
-
-				FileInfo fi = new FileInfo (arg);
-				if (!fi.Exists)
-				switch (fi.Extension) {
-				case ".exe":
-				case ".dll":
-					GenerateContractType (fi.FullName);
-					break;
-				default:
-					throw new NotSupportedException ("Not supported file extension: " + fi.Extension);
+				if (!File.Exists (arg)) {
+					Uri uri = null;
+					if (Uri.TryCreate (arg, UriKind.Absolute, out uri)) {
+						metadata = ResolveWithDisco (arg);
+						if (metadata == null)
+							metadata = ResolveWithWSMex (arg);
+
+							continue;
+					}
+				} else {
+					FileInfo fi = new FileInfo (arg);
+					switch (fi.Extension) {
+					case ".exe":
+					case ".dll":
+						GenerateContractType (fi.FullName);
+						break;
+					default:
+						throw new NotSupportedException ("Not supported file extension: " + fi.Extension);
+					}
 				}
 			}
 
-			if (metadata == null)
-				return;
-			
-			List<IWsdlImportExtension> list = new List<IWsdlImportExtension> ();
-			list.Add (new TransportBindingElementImporter ());
-			//list.Add (new DataContractSerializerMessageContractImporter ());
-			list.Add (new XmlSerializerMessageContractImporter ());
-
-			//WsdlImporter importer = new WsdlImporter (metadata, null, list);
-			WsdlImporter importer = new WsdlImporter (metadata);
-			//ServiceEndpointCollection endpoints = importer.ImportAllEndpoints ();
-
-			Console.WriteLine ("Generating files..");
-			/*foreach (ServiceEndpoint se in endpoints)
-				generator.GenerateServiceContractType (se.Contract);*/
-
-			Collection<ContractDescription> contracts = importer.ImportAllContracts ();
-			foreach (ContractDescription cd in contracts) {
-				if (co.GenerateMoonlightProxy) {
-					var moonctx = new MoonlightChannelBaseContext ();
-					cd.Behaviors.Add (new MoonlightChannelBaseContractExtension (moonctx, co.GenerateMonoTouchProxy));
-					foreach (var od in cd.Operations)
-						od.Behaviors.Add (new MoonlightChannelBaseOperationExtension (moonctx, co.GenerateMonoTouchProxy));
-					generator.GenerateServiceContractType (cd);
-					moonctx.Fixup ();
+			if (metadata != null)
+			{
+				List<IWsdlImportExtension> list = new List<IWsdlImportExtension> ();
+				list.Add (new TransportBindingElementImporter ());
+				//list.Add (new DataContractSerializerMessageContractImporter ());
+				list.Add (new XmlSerializerMessageContractImporter ());
+
+				//WsdlImporter importer = new WsdlImporter (metadata, null, list);
+				WsdlImporter importer = new WsdlImporter (metadata);
+				ServiceEndpointCollection endpoints = importer.ImportAllEndpoints ();
+				Collection<ContractDescription> contracts = new Collection<ContractDescription> ((from se in endpoints select se.Contract).ToArray ());
+
+				Console.WriteLine ("Generating files..");
+
+				// FIXME: could better become IWsdlExportExtension
+				foreach (ContractDescription cd in contracts) {
+					if (co.GenerateMoonlightProxy) {
+						var moonctx = new MoonlightChannelBaseContext ();
+						cd.Behaviors.Add (new MoonlightChannelBaseContractExtension (moonctx, co.GenerateMonoTouchProxy));
+						foreach (var od in cd.Operations)
+							od.Behaviors.Add (new MoonlightChannelBaseOperationExtension (moonctx, co.GenerateMonoTouchProxy));
+						generator.GenerateServiceContractType (cd);
+						moonctx.Fixup ();
+					}
+					else
+						generator.GenerateServiceContractType (cd);
 				}
-				else
-					generator.GenerateServiceContractType (cd);
 			}
-
 			/*if (cns.Types.Count == 0) {
 				Console.Error.WriteLine ("Argument assemblies have no types.");
 				Environment.Exit (1);
diff --git a/mcs/tools/svcutil/Makefile b/mcs/tools/svcutil/Makefile
index 7d99ab4..2d09ad1 100644
--- a/mcs/tools/svcutil/Makefile
+++ b/mcs/tools/svcutil/Makefile
@@ -3,6 +3,7 @@ SUBDIRS =
 include ../../build/rules.make
 
 LOCAL_MCS_FLAGS = \
+	-r:System.Core.dll \
 	-r:System.Runtime.Serialization.dll \
 	-r:System.ServiceModel.dll \
 	-r:System.Web.Services.dll
diff --git a/mcs/tools/svcutil/MoonlightChannelBaseExtension.cs b/mcs/tools/svcutil/MoonlightChannelBaseExtension.cs
index 404258e..afabe52 100644
--- a/mcs/tools/svcutil/MoonlightChannelBaseExtension.cs
+++ b/mcs/tools/svcutil/MoonlightChannelBaseExtension.cs
@@ -179,10 +179,35 @@ namespace Mono.ServiceContractTool
 			// clear IExtensibleDataObject. Since there is *no* way 
 			// to identify the type of a TypeReference, I cannot do 
 			// anything but this brutal removal.
-			foreach (CodeNamespace cns in context.ServiceContractGenerator.TargetCompileUnit.Namespaces)
-				foreach (CodeTypeDeclaration ct in cns.Types)
-					if (ct != ml_context.ClientType && !ct.Name.EndsWith ("EventArgs", StringComparison.Ordinal))
+			// Also clear ExtensionDataObject members.
+			foreach (CodeNamespace cns in context.ServiceContractGenerator.TargetCompileUnit.Namespaces) {
+				foreach (CodeTypeDeclaration ct in cns.Types) {
+					if (!ShouldPreserveBaseTypes (ct))
 						ct.BaseTypes.Clear ();
+					CodeTypeMember cp = null, cf = null;
+					foreach (CodeTypeMember cm in ct.Members) {
+						if (cm is CodeMemberProperty && cm.Name == "ExtensionData")
+							cp = cm;
+						else if (cm is CodeMemberField && cm.Name == "extensionDataField")
+							cf = cm;
+					}
+					if (cf != null)
+						ct.Members.Remove (cf);
+					if (cp != null)
+						ct.Members.Remove (cp);
+				}
+			}
+		}
+
+		bool ShouldPreserveBaseTypes (CodeTypeDeclaration ct)
+		{
+			foreach (CodeTypeReference cr in ct.BaseTypes) {
+				if (cr.BaseType == "System.ServiceModel.ClientBase`1")
+					return true;
+				if (cr.BaseType == "System.ComponentModel.AsyncCompletedEventArgs")
+					return true;
+			}
+			return false;
 		}
 
 		void EliminateSync ()
@@ -398,19 +423,16 @@ namespace Mono.ServiceContractTool
 				new CodeArrayCreateExpression (typeof (object), new CodePrimitiveExpression (outArgs.Count)));
 			cm.Statements.Add (argsDecl);
 
-			var cast = new CodeCastExpression (
-				context.EndMethod.ReturnType,
-				new CodeMethodInvokeExpression (
+			var ret = new CodeMethodInvokeExpression (
 				baseExpr,
 				"EndInvoke",
 				new CodePrimitiveExpression (od.Name),
 				new CodeVariableReferenceExpression ("args"),
-				new CodeArgumentReferenceExpression (resultArgName)));
-
+				new CodeArgumentReferenceExpression (resultArgName));
 			if (cm.ReturnType.BaseType == "System.Void")
-				cm.Statements.Add (new CodeExpressionStatement (cast));
+				cm.Statements.Add (new CodeExpressionStatement (ret));
 			else
-				cm.Statements.Add (new CodeMethodReturnStatement (cast));
+				cm.Statements.Add (new CodeMethodReturnStatement (new CodeCastExpression (context.EndMethod.ReturnType, ret)));
 		}
 
 		void AddMethodParam (CodeMemberMethod cm, Type type, string name)
diff --git a/mcs/tools/tuner/ChangeLog b/mcs/tools/tuner/ChangeLog
index f7360b4..12e64f2 100644
--- a/mcs/tools/tuner/ChangeLog
+++ b/mcs/tools/tuner/ChangeLog
@@ -1,3 +1,11 @@
+2010-10-20  Jb Evain  <jbevain at gmail.com>
+
+	Fix tuner build
+
+2010-10-05  Jb Evain  <jbevain at gmail.com>
+
+	Update the tuner to cecil-light
+
 2009-11-03  Jb Evain  <jbevain at novell.com>
 
 	* Mono.Tuner/CheckVisibility.cs: detect a throw_on_visibility_error
diff --git a/mcs/tools/tuner/ChangeLog b/mcs/tools/tuner/ChangeLog.old
similarity index 100%
copy from mcs/tools/tuner/ChangeLog
copy to mcs/tools/tuner/ChangeLog.old
diff --git a/mcs/tools/tuner/Makefile b/mcs/tools/tuner/Makefile
index f849690..b3de3da 100644
--- a/mcs/tools/tuner/Makefile
+++ b/mcs/tools/tuner/Makefile
@@ -5,7 +5,7 @@ include ../../build/rules.make
 CECIL = $(topdir)/class/lib/$(PROFILE)/Mono.Cecil.dll
 LINKER = $(topdir)/class/lib/$(PROFILE)/monolinker.exe
 
-LOCAL_MCS_FLAGS = -r:System.dll -r:System.Xml.dll -r:$(LINKER) -r:$(CECIL)
+LOCAL_MCS_FLAGS = -r:System.dll -r:System.Core.dll -r:System.Xml.dll -r:$(LINKER) -r:$(CECIL)
 
 LIBRARY = Mono.Tuner.dll
 
diff --git a/mcs/tools/tuner/Mono.Tuner/AdjustVisibility.cs b/mcs/tools/tuner/Mono.Tuner/AdjustVisibility.cs
index b983ed7..30c5ac4 100644
--- a/mcs/tools/tuner/Mono.Tuner/AdjustVisibility.cs
+++ b/mcs/tools/tuner/Mono.Tuner/AdjustVisibility.cs
@@ -28,6 +28,7 @@
 
 using System;
 using System.Collections;
+using System.Collections.Generic;
 
 using Mono.Linker;
 using Mono.Linker.Steps;
@@ -38,6 +39,8 @@ namespace Mono.Tuner {
 
 	public class AdjustVisibility : BaseStep {
 
+		static readonly object internalized_key = new object ();
+
 		protected override void ProcessAssembly (AssemblyDefinition assembly)
 		{
 			if (Annotations.GetAction (assembly) != AssemblyAction.Link)
@@ -46,13 +49,13 @@ namespace Mono.Tuner {
 			ProcessTypes (assembly.MainModule.Types);
 		}
 
-		static void ProcessTypes (ICollection types)
+		void ProcessTypes (ICollection types)
 		{
 			foreach (TypeDefinition type in types)
 				ProcessType (type);
 		}
 
-		static void ProcessType (TypeDefinition type)
+		void ProcessType (TypeDefinition type)
 		{
 			if (!IsPublic (type))
 				return;
@@ -66,7 +69,6 @@ namespace Mono.Tuner {
 				return;
 
 			ProcessFields (type.Fields);
-			ProcessMethods (type.Constructors);
 			ProcessMethods (type.Methods);
 		}
 
@@ -75,7 +77,7 @@ namespace Mono.Tuner {
 			return type.DeclaringType == null ? type.IsPublic : type.IsNestedPublic;
 		}
 
-		static void SetInternalVisibility (TypeDefinition type)
+		void SetInternalVisibility (TypeDefinition type)
 		{
 			type.Attributes &= ~TypeAttributes.VisibilityMask;
 			if (type.DeclaringType == null)
@@ -86,13 +88,13 @@ namespace Mono.Tuner {
 			MarkInternalized (type);
 		}
 
-		static void ProcessMethods (ICollection methods)
+		void ProcessMethods (ICollection methods)
 		{
 			foreach (MethodDefinition method in methods)
 				ProcessMethod (method);
 		}
 
-		static void ProcessMethod (MethodDefinition method)
+		void ProcessMethod (MethodDefinition method)
 		{
 			if (IsMarkedAsPublic (method))
 				return;
@@ -103,15 +105,15 @@ namespace Mono.Tuner {
 				SetProtectedAndInternalVisibility (method);
 		}
 
-		static void SetInternalVisibility (MethodDefinition method)
+		void SetInternalVisibility (MethodDefinition method)
 		{
 			method.Attributes &= ~MethodAttributes.MemberAccessMask;
-			method.Attributes |= MethodAttributes.Assem;
+			method.Attributes |= MethodAttributes.Assembly;
 
 			MarkInternalized (method);
 		}
 
-		static void SetProtectedAndInternalVisibility (MethodDefinition method)
+		void SetProtectedAndInternalVisibility (MethodDefinition method)
 		{
 			method.Attributes &= ~MethodAttributes.MemberAccessMask;
 			method.Attributes |= MethodAttributes.FamANDAssem;
@@ -119,18 +121,18 @@ namespace Mono.Tuner {
 			MarkInternalized (method);
 		}
 
-		static bool IsMarkedAsPublic (IAnnotationProvider provider)
+		bool IsMarkedAsPublic (IMetadataTokenProvider provider)
 		{
 			return Annotations.IsPublic (provider);
 		}
 
-		static void ProcessFields (FieldDefinitionCollection fields)
+		void ProcessFields (IEnumerable<FieldDefinition> fields)
 		{
 			foreach (FieldDefinition field in fields)
 				ProcessField (field);
 		}
 
-		static void ProcessField (FieldDefinition field)
+		void ProcessField (FieldDefinition field)
 		{
 			if (IsMarkedAsPublic (field))
 				return;
@@ -141,7 +143,7 @@ namespace Mono.Tuner {
 				SetProtectedAndInternalVisibility (field);
 		}
 
-		static void SetInternalVisibility (FieldDefinition field)
+		void SetInternalVisibility (FieldDefinition field)
 		{
 			field.Attributes &= ~FieldAttributes.FieldAccessMask;
 			field.Attributes |= FieldAttributes.Assembly;
@@ -149,7 +151,7 @@ namespace Mono.Tuner {
 			MarkInternalized (field);
 		}
 
-		static void SetProtectedAndInternalVisibility (FieldDefinition field)
+		void SetProtectedAndInternalVisibility (FieldDefinition field)
 		{
 			field.Attributes &= ~FieldAttributes.FieldAccessMask;
 			field.Attributes |= FieldAttributes.FamANDAssem;
@@ -157,9 +159,9 @@ namespace Mono.Tuner {
 			MarkInternalized (field);
 		}
 
-		static void MarkInternalized (IAnnotationProvider provider)
+		void MarkInternalized (IMetadataTokenProvider provider)
 		{
-			TunerAnnotations.Internalized (provider);
+			TunerAnnotations.Internalized (Context, provider);
 		}
 	}
 }
diff --git a/mcs/tools/tuner/Mono.Tuner/CheckVisibility.cs b/mcs/tools/tuner/Mono.Tuner/CheckVisibility.cs
index ce9d2a9..1447025 100644
--- a/mcs/tools/tuner/Mono.Tuner/CheckVisibility.cs
+++ b/mcs/tools/tuner/Mono.Tuner/CheckVisibility.cs
@@ -81,7 +81,6 @@ namespace Mono.Tuner {
 			CheckInterfaces (type);
 
 			CheckFields (type);
-			CheckConstructors (type);
 			CheckMethods (type);
 		}
 
@@ -114,10 +113,10 @@ namespace Mono.Tuner {
 				if (!IsInternalsVisibleToAttribute (attribute))
 					continue;
 
-				if (attribute.ConstructorParameters.Count == 0)
+				if (attribute.ConstructorArguments.Count == 0)
 					continue;
 
-				string signature = (string) attribute.ConstructorParameters [0];
+				string signature = (string) attribute.ConstructorArguments [0].Value;
 
 				if (InternalsVisibleToSignatureMatch (signature, candidate.Name))
 					return true;
@@ -162,7 +161,7 @@ namespace Mono.Tuner {
 			if (reference == null)
 				return true;
 
-			if (reference is GenericParameter || reference.GetOriginalType () is GenericParameter)
+			if (reference is GenericParameter || reference.GetElementType () is GenericParameter)
 				return true;
 
 			TypeDefinition other = reference.Resolve ();
@@ -298,11 +297,6 @@ namespace Mono.Tuner {
 			}
 		}
 
-		void CheckConstructors (TypeDefinition type)
-		{
-			CheckMethods (type, type.Constructors);
-		}
-
 		void CheckMethods (TypeDefinition type)
 		{
 			CheckMethods (type, type.Methods);
@@ -311,15 +305,15 @@ namespace Mono.Tuner {
 		void CheckMethods (TypeDefinition type, ICollection methods)
 		{
 			foreach (MethodDefinition method in methods) {
-				if (!IsVisibleFrom (type, method.ReturnType.ReturnType)) {
+				if (!IsVisibleFrom (type, method.ReturnType)) {
 					ReportError ("Method return type `{0}` in method `{1}` is not visible",
-						method.ReturnType.ReturnType, method);
+						method.ReturnType, method);
 				}
 
 				foreach (ParameterDefinition parameter in method.Parameters) {
 					if (!IsVisibleFrom (type, parameter.ParameterType)) {
 						ReportError ("Parameter `{0}` of type `{1}` in method `{2}` is not visible.",
-							parameter.Sequence, parameter.ParameterType, method);
+							parameter.Index, parameter.ParameterType, method);
 					}
 				}
 
diff --git a/mcs/tools/tuner/Mono.Tuner/FilterAttributes.cs b/mcs/tools/tuner/Mono.Tuner/FilterAttributes.cs
index d06fd35..19a334a 100644
--- a/mcs/tools/tuner/Mono.Tuner/FilterAttributes.cs
+++ b/mcs/tools/tuner/Mono.Tuner/FilterAttributes.cs
@@ -77,9 +77,6 @@ namespace Mono.Tuner {
 			if (type.HasMethods)
 				ProcessMethods (type.Methods);
 
-			if (type.HasConstructors)
-				ProcessMethods (type.Constructors);
-
 			if (type.HasEvents)
 				ProcessEvents (type.Events);
 
@@ -105,7 +102,7 @@ namespace Mono.Tuner {
 		{
 			ProcessGenericParameters (method);
 
-			Filter (method.ReturnType);
+			Filter (method.MethodReturnType);
 
 			if (method.HasParameters)
 				ProcessParameters (method.Parameters);
diff --git a/mcs/tools/tuner/Mono.Tuner/InjectSecurityAttributes.cs b/mcs/tools/tuner/Mono.Tuner/InjectSecurityAttributes.cs
index 0d4bac4..e3edf0d 100644
--- a/mcs/tools/tuner/Mono.Tuner/InjectSecurityAttributes.cs
+++ b/mcs/tools/tuner/Mono.Tuner/InjectSecurityAttributes.cs
@@ -29,6 +29,7 @@
 using System;
 using System.Collections;
 using System.IO;
+using System.Linq;
 using System.Text;
 
 using Mono.Linker;
@@ -101,17 +102,13 @@ namespace Mono.Tuner {
 			foreach (TypeDefinition type in _assembly.MainModule.Types) {
 				RemoveSecurityAttributes (type);
 
-				if (type.HasConstructors)
-					foreach (MethodDefinition ctor in type.Constructors)
-						RemoveSecurityAttributes (ctor);
-
 				if (type.HasMethods)
 					foreach (MethodDefinition method in type.Methods)
 						RemoveSecurityAttributes (method);
 			}
 		}
 
-		static void RemoveSecurityDeclarations (IHasSecurity provider)
+		static void RemoveSecurityDeclarations (ISecurityDeclarationProvider provider)
 		{
 			// also remove already existing CAS security declarations
 
@@ -126,12 +123,12 @@ namespace Mono.Tuner {
 
 		static void RemoveSecurityAttributes (ICustomAttributeProvider provider)
 		{
-			RemoveSecurityDeclarations (provider as IHasSecurity);
+			RemoveSecurityDeclarations (provider as ISecurityDeclarationProvider);
 
 			if (!provider.HasCustomAttributes)
 				return;
 
-			CustomAttributeCollection attributes = provider.CustomAttributes;
+			var attributes = provider.CustomAttributes;
 			for (int i = 0; i < attributes.Count; i++) {
 				CustomAttribute attribute = attributes [i];
 				switch (attribute.Constructor.DeclaringType.FullName) {
@@ -231,7 +228,7 @@ namespace Mono.Tuner {
 			if (HasSecurityAttribute (provider, type))
 				return;
 
-			CustomAttributeCollection attributes = provider.CustomAttributes;
+			var attributes = provider.CustomAttributes;
 			switch (type) {
 			case AttributeType.Critical:
 				attributes.Add (CreateCriticalAttribute ());
@@ -279,7 +276,7 @@ namespace Mono.Tuner {
 
 		TypeDefinition GetType (string fullname)
 		{
-			return _assembly.MainModule.Types [fullname];
+			return _assembly.MainModule.GetType (fullname);
 		}
 
 		MethodDefinition GetMethod (string signature)
@@ -306,9 +303,7 @@ namespace Mono.Tuner {
 			if (type == null)
 				return null;
 
-			return method_name.StartsWith (".c") ?
-				GetMethod (type.Constructors, signature) :
-				GetMethod (type.Methods, signature);
+			return GetMethod (type.Methods, signature);
 		}
 
 		static MethodDefinition GetMethod (IEnumerable methods, string signature)
@@ -322,10 +317,13 @@ namespace Mono.Tuner {
 
 		static string GetFullName (MethodReference method)
 		{
-			int sentinel = method.GetSentinel ();
+			var sentinel = method.Parameters.FirstOrDefault (p => p.ParameterType.IsSentinel);
+			var sentinel_pos = -1;
+			if (sentinel != null)
+				sentinel_pos = method.Parameters.IndexOf (sentinel);
 
 			StringBuilder sb = new StringBuilder ();
-			sb.Append (method.ReturnType.ReturnType.FullName);
+			sb.Append (method.ReturnType.FullName);
 			sb.Append (" ");
 			sb.Append (method.DeclaringType.FullName);
 			sb.Append ("::");
@@ -345,7 +343,7 @@ namespace Mono.Tuner {
 					if (i > 0)
 						sb.Append (",");
 
-					if (i == sentinel)
+					if (i == sentinel_pos)
 						sb.Append ("...,");
 
 					sb.Append (method.Parameters [i].ParameterType.FullName);
@@ -357,7 +355,7 @@ namespace Mono.Tuner {
 
 		static MethodDefinition GetDefaultConstructor (TypeDefinition type)
 		{
-			foreach (MethodDefinition ctor in type.Constructors)
+			foreach (MethodDefinition ctor in type.Methods.Where (m => m.IsConstructor))
 				if (ctor.Parameters.Count == 0)
 					return ctor;
 
@@ -372,7 +370,7 @@ namespace Mono.Tuner {
 			TypeDefinition safe_critical_type = Context.GetType (_safe_critical);
 			if (safe_critical_type == null)
 				throw new InvalidOperationException (String.Format ("{0} type not found", _safe_critical));
-			
+
 			_safe_critical_ctor = GetDefaultConstructor (safe_critical_type);
 			return _safe_critical_ctor;
 		}
@@ -385,7 +383,7 @@ namespace Mono.Tuner {
 			TypeDefinition critical_type = Context.GetType (_critical);
 			if (critical_type == null)
 				throw new InvalidOperationException (String.Format ("{0} type not found", _critical));
-			
+
 			_critical_ctor = GetDefaultConstructor (critical_type);
 			return _critical_ctor;
 		}
diff --git a/mcs/tools/tuner/Mono.Tuner/MoonlightA11yAssemblyStep.cs b/mcs/tools/tuner/Mono.Tuner/MoonlightA11yAssemblyStep.cs
index d48bafe..63a82b2 100644
--- a/mcs/tools/tuner/Mono.Tuner/MoonlightA11yAssemblyStep.cs
+++ b/mcs/tools/tuner/Mono.Tuner/MoonlightA11yAssemblyStep.cs
@@ -38,7 +38,7 @@ using Mono.Cecil;
 namespace Mono.Tuner {
 
 	public class MoonlightA11yAssemblyStep : MoonlightAssemblyStep {
-		
+
 		protected override void CustomizePipeline (Pipeline pipeline)
 		{
 			pipeline.RemoveStep (typeof (LoadI18nAssemblies));
@@ -49,6 +49,6 @@ namespace Mono.Tuner {
 			pipeline.RemoveStep (typeof (RegenerateGuidStep));
 			pipeline.AddStepBefore (typeof (OutputStep), new MoonlightA11yProcessor ());
 		}
-		
+
 	}
 }
diff --git a/mcs/tools/tuner/Mono.Tuner/MoonlightA11yDescriptorGenerator.cs b/mcs/tools/tuner/Mono.Tuner/MoonlightA11yDescriptorGenerator.cs
index 0111879..17db23b 100644
--- a/mcs/tools/tuner/Mono.Tuner/MoonlightA11yDescriptorGenerator.cs
+++ b/mcs/tools/tuner/Mono.Tuner/MoonlightA11yDescriptorGenerator.cs
@@ -74,19 +74,19 @@ namespace Mono.Tuner {
 			if (types != null && types.Count > 0) {
 				writer.WriteStartElement("assembly");
 				writer.WriteAttributeString ("fullname", assembly.Name.Name);
-				
+
 				foreach (TypeDefinition type in types.Keys) {
 					IList members = types [type];
 					if (members != null && members.Count > 0) {
 						writer.WriteStartElement("type");
 						writer.WriteAttributeString ("fullname", type.FullName);
 
-						foreach (IAnnotationProvider member in members) {
+						foreach (IMetadataTokenProvider member in members) {
 							MethodDefinition method = member as MethodDefinition;
 							if (method != null) {
 								writer.WriteStartElement("method");
-								writer.WriteAttributeString ("signature", 
-								                             method.ReturnType.ReturnType.FullName + " " +
+								writer.WriteAttributeString ("signature",
+								                             method.ReturnType.FullName + " " +
 								                             method.Name + GetMethodParams (method));
 								writer.WriteEndElement ();
 								continue;
@@ -102,11 +102,11 @@ namespace Mono.Tuner {
 						writer.WriteEndElement ();
 					}
 				}
-				
+
 				writer.WriteEndElement ();
 				Console.WriteLine ();
 			}
-			
+
 		}
 
 		protected override void EndProcess ()
@@ -149,16 +149,16 @@ namespace Mono.Tuner {
 				IList used_providers = FilterPublicMembers (ScanType (type));
 				if (used_providers.Count > 0)
 					members_used [type] = used_providers;
-				else if (IsInternal (type, true) && 
+				else if (IsInternal (type, true) &&
 				         Annotations.IsMarked (type))
 					throw new NotSupportedException (String.Format ("The type {0} is used while its API is not", type.ToString ()));
 			}
 			return members_used;
 		}
 
-		static IList ScanType (TypeDefinition type)
+		IList ScanType (TypeDefinition type)
 		{
-			return ExtractUsedProviders (type.Methods, type.Constructors, type.Fields);
+			return ExtractUsedProviders (type.Methods, type.Fields);
 		}
 
 		static IList FilterPublicMembers (IList members)
@@ -177,12 +177,12 @@ namespace Mono.Tuner {
 		{
 			if (master_infos.Length == 0)
 				throw new Exception ("No masterinfo files found in current directory");
-			
+
 			foreach (string file in master_infos) {
 				if (file.EndsWith (name + ".info"))
 					return file;
 			}
-			
+
 			return null;
 		}
 
@@ -198,12 +198,12 @@ namespace Mono.Tuner {
 			}
 			return String.Format (xpath_init, parent_type.Namespace, parent_type.Name) + xpath;
 		}
-		
+
 		static bool IsInternal (MemberReference member, bool master_info)
 		{
 			TypeDefinition type = null;
 			string master_info_file = null;
-			
+
 			if (member is TypeDefinition) {
 				type = member as TypeDefinition;
 				if (!master_info)
@@ -224,7 +224,7 @@ namespace Mono.Tuner {
 
 			MethodDefinition method = member as MethodDefinition;
 			FieldDefinition field = member as FieldDefinition;
-	
+
 			if (field == null && method == null)
 				throw new System.NotSupportedException ("Members to scan should be methods or fields");
 
@@ -246,7 +246,7 @@ namespace Mono.Tuner {
 				name = field.Name;
 			else {
 				name = method.ToString ();
-				
+
 				//lame, I know...
 				name = WackyOutArgs (WackyCommas (name.Substring (name.IndexOf ("::") + 2)
 				                    .Replace ("/", "+") // nested classes
@@ -258,7 +258,7 @@ namespace Mono.Tuner {
 
 			return !NodeExists (master_info_file, xpath_type + String.Format ("/properties/*/*/*[@name='{0}']", name));
 		}
-		
+
 		//at some point I want to get rid of this method and ask cecil's maintainer to spew commas in a uniform way...
 		static string WackyCommas (string method)
 		{
@@ -310,14 +310,14 @@ namespace Mono.Tuner {
 			return nav.SelectSingleNode (xpath) != null;
 		}
 
-		static IList /*List<IAnnotationProvider>*/ ExtractUsedProviders (params IList[] members)
+		IList /*List<IAnnotationProvider>*/ ExtractUsedProviders (params IList[] members)
 		{
 			IList used = new ArrayList ();
 			if (members == null || members.Length == 0)
 				return used;
 
 			foreach (IList members_list in members)
-				foreach (IAnnotationProvider provider in members_list)
+				foreach (IMetadataTokenProvider provider in members_list)
 					if (Annotations.IsMarked (provider))
 						used.Add (provider);
 
diff --git a/mcs/tools/tuner/Mono.Tuner/MoonlightA11yProcessor.cs b/mcs/tools/tuner/Mono.Tuner/MoonlightA11yProcessor.cs
index ad7fe39..d8d9e54 100644
--- a/mcs/tools/tuner/Mono.Tuner/MoonlightA11yProcessor.cs
+++ b/mcs/tools/tuner/Mono.Tuner/MoonlightA11yProcessor.cs
@@ -28,20 +28,21 @@
 
 
 using System;
+using System.Linq;
 
 using Mono.Cecil;
 
 using Mono.Linker;
 
 namespace Mono.Tuner {
-	
+
 	public class MoonlightA11yProcessor : InjectSecurityAttributes {
-		
+
 		protected override bool ConditionToProcess ()
 		{
 			return true;
 		}
-		
+
 		protected override void ProcessAssembly (AssemblyDefinition assembly)
 		{
 			if (Annotations.GetAction (assembly) != AssemblyAction.Link)
@@ -54,45 +55,45 @@ namespace Mono.Tuner {
 
 			// add [SecurityCritical]
 			AddSecurityAttributes ();
-			
+
 			// convert all public members into internal
 			MakeApiInternal ();
 		}
-		
+
 		void MakeApiInternal ()
 		{
 			foreach (TypeDefinition type in _assembly.MainModule.Types) {
 				if (type.IsPublic)
 					type.IsPublic = false;
 
-				if (type.HasConstructors && !type.Name.EndsWith ("Adapter"))
-					foreach (MethodDefinition ctor in type.Constructors)
+				if (type.HasMethods && !type.Name.EndsWith ("Adapter"))
+					foreach (MethodDefinition ctor in type.Methods.Where (m => m.IsConstructor))
 						if (ctor.IsPublic)
 							ctor.IsAssembly = true;
 
 				if (type.HasMethods)
-					foreach (MethodDefinition method in type.Methods)
+					foreach (MethodDefinition method in type.Methods.Where (m => !m.IsConstructor))
 						if (method.IsPublic)
 							method.IsAssembly = true;
 			}
 		}
-		
+
 		void AddSecurityAttributes ()
 		{
 			foreach (TypeDefinition type in _assembly.MainModule.Types) {
 				AddCriticalAttribute (type);
 
-				if (type.HasConstructors)
-					foreach (MethodDefinition ctor in type.Constructors)
+				if (type.HasMethods)
+					foreach (MethodDefinition ctor in type.Methods.Where (m => m.IsConstructor))
 						AddCriticalAttribute (ctor);
 
 				if (type.HasMethods)
-					foreach (MethodDefinition method in type.Methods) {
+					foreach (MethodDefinition method in type.Methods.Where (m => !m.IsConstructor)) {
 						MethodDefinition parent = null;
-					
+
 						//TODO: take in account generic params
 						if (!method.HasGenericParameters) {
-							
+
 							/*
 							 * we need to scan base methods because the CoreCLR complains about SC attribs added
 							 * to overriden methods whose base (virtual or interface) method is not marked as SC
@@ -112,16 +113,16 @@ namespace Mono.Tuner {
 
 							AddCriticalAttribute (method);
 				}
-				
+
 			}
 		}
-		
+
 		MethodDefinition GetBaseMethod (TypeDefinition finalType, MethodDefinition final)
 		{
 			// both GetOverridenMethod and GetInterfaceMethod return null if there is no base method
 			return GetOverridenMethod (finalType, final) ?? GetInterfaceMethod (finalType, final);
 		}
-		
+
 		//note: will not return abstract methods
 		MethodDefinition GetOverridenMethod (TypeDefinition finalType, MethodDefinition final)
 		{
@@ -130,11 +131,11 @@ namespace Mono.Tuner {
 				foreach (MethodDefinition method in baseType.Resolve ().Methods) {
 					if (!method.IsVirtual || method.Name != final.Name)
 						continue;
-					
+
 					//TODO: should we discard them?
 					if (method.IsAbstract)
 						continue;
-					
+
 					if (HasSameSignature (method, final))
 						return method;
 				}
@@ -142,7 +143,7 @@ namespace Mono.Tuner {
 			}
 			return null;
 		}
-		
+
 		MethodDefinition GetInterfaceMethod (TypeDefinition finalType, MethodDefinition final)
 		{
 			TypeDefinition baseType = finalType;
@@ -157,12 +158,12 @@ namespace Mono.Tuner {
 			}
 			return null;
 		}
-		
+
 		bool HasSameSignature (MethodDefinition method1, MethodDefinition method2)
 		{
-			if (method1.ReturnType.ReturnType.FullName != method2.ReturnType.ReturnType.FullName)
+			if (method1.ReturnType.FullName != method2.ReturnType.FullName)
 				return false;
-			
+
 			if (method1.Parameters.Count != method2.Parameters.Count)
 				return false;
 
@@ -171,7 +172,7 @@ namespace Mono.Tuner {
 				    method2.Parameters [i].ParameterType.FullName)
 					return false;
 			}
-			
+
 			return true;
 		}
 	}
diff --git a/mcs/tools/tuner/Mono.Tuner/MoonlightAssemblyStep.cs b/mcs/tools/tuner/Mono.Tuner/MoonlightAssemblyStep.cs
index cba710b..fc98536 100644
--- a/mcs/tools/tuner/Mono.Tuner/MoonlightAssemblyStep.cs
+++ b/mcs/tools/tuner/Mono.Tuner/MoonlightAssemblyStep.cs
@@ -42,13 +42,13 @@ namespace Mono.Tuner {
 		public void Process (LinkContext context)
 		{
 			CustomizePipeline (context.Pipeline);
-			ProcessAssemblies (context.GetAssemblies ());
+			ProcessAssemblies (context);
 		}
 
-		static void ProcessAssemblies (AssemblyDefinition [] assemblies)
+		static void ProcessAssemblies (LinkContext context)
 		{
-			foreach (AssemblyDefinition assembly in assemblies)
-				Annotations.SetAction (assembly, AssemblyAction.Link);
+			foreach (AssemblyDefinition assembly in context.GetAssemblies ())
+				context.Annotations.SetAction (assembly, AssemblyAction.Link);
 		}
 
 		protected virtual void CustomizePipeline (Pipeline pipeline)
diff --git a/mcs/tools/tuner/Mono.Tuner/PrintStatus.cs b/mcs/tools/tuner/Mono.Tuner/PrintStatus.cs
index 9380e57..374395b 100644
--- a/mcs/tools/tuner/Mono.Tuner/PrintStatus.cs
+++ b/mcs/tools/tuner/Mono.Tuner/PrintStatus.cs
@@ -45,7 +45,7 @@ namespace Mono.Tuner {
 			if (Annotations.GetAction (assembly) != AssemblyAction.Link)
 				return;
 
-			Console.WriteLine ("Assembly `{0}' ({1}) tuned", assembly.Name, assembly.MainModule.Image.FileInformation);
+			Console.WriteLine ("Assembly `{0}' ({1}) tuned", assembly.Name, assembly.MainModule.FullyQualifiedName);
 
 			if (!DisplayInternalized ())
 				return;
@@ -63,22 +63,21 @@ namespace Mono.Tuner {
 			}
 		}
 
-		static void ProcessType (TypeDefinition type)
+		void ProcessType (TypeDefinition type)
 		{
 			ProcessCollection (type.Fields);
-			ProcessCollection (type.Constructors);
 			ProcessCollection (type.Methods);
 		}
 
-		static void ProcessCollection (ICollection collection)
+		void ProcessCollection (ICollection collection)
 		{
-			foreach (IAnnotationProvider provider in collection)
+			foreach (IMetadataTokenProvider provider in collection)
 				ProcessProvider (provider);
 		}
 
-		static void ProcessProvider (IAnnotationProvider provider)
+		void ProcessProvider (IMetadataTokenProvider provider)
 		{
-			if (!TunerAnnotations.IsInternalized (provider))
+			if (!TunerAnnotations.IsInternalized (Context, provider))
 				return;
 
 			Console.WriteLine ("[internalized] {0}", provider);
diff --git a/mcs/tools/tuner/Mono.Tuner/RemoveSerialization.cs b/mcs/tools/tuner/Mono.Tuner/RemoveSerialization.cs
index 13fcc45..1266c9d 100644
--- a/mcs/tools/tuner/Mono.Tuner/RemoveSerialization.cs
+++ b/mcs/tools/tuner/Mono.Tuner/RemoveSerialization.cs
@@ -54,7 +54,7 @@ namespace Mono.Tuner {
 
 		protected override void ProcessAssembly (AssemblyDefinition assembly)
 		{
-			if (assembly.Name.Name == Constants.Corlib)
+			if (assembly.Name.Name == "mscorlib")
 				return;
 
 			if (Annotations.GetAction (assembly) != AssemblyAction.Link)
@@ -86,11 +86,11 @@ namespace Mono.Tuner {
 			RemoveSerializableFlag (type);
 
 			RemoveInterface (type, _ISerializable);
-			RemoveConstructor (type, _SerializationInfo, _StreamingContext);
+			RemoveMethod (type, ".ctor", _SerializationInfo, _StreamingContext);
 			RemoveInterfaceMethod (type, _ISerializable, _GetObjectData, _SerializationInfo, _StreamingContext);
 
 			RemoveInterface (type, _IDeserializationCallback);
-			RemoveInterfaceMethod (type, _IDeserializationCallback, _OnDeserialization, Constants.Object);
+			RemoveInterfaceMethod (type, _IDeserializationCallback, _OnDeserialization, "System.Object");
 
 			RemoveField (type);
 		}
@@ -128,11 +128,6 @@ namespace Mono.Tuner {
 			RemoveMethod (type.Methods, name, parameters);
 		}
 
-		static void RemoveConstructor (TypeDefinition type, params string [] parameters)
-		{
-			RemoveMethod (type.Constructors, MethodDefinition.Ctor, parameters);
-		}
-
 		static void RemoveMethod (IList container, string name, params string [] parameters)
 		{
 			for (int i = 0; i < container.Count; i++) {
diff --git a/mcs/tools/tuner/Mono.Tuner/TunerAnnotations.cs b/mcs/tools/tuner/Mono.Tuner/TunerAnnotations.cs
index 8271fa6..2107ac4 100644
--- a/mcs/tools/tuner/Mono.Tuner/TunerAnnotations.cs
+++ b/mcs/tools/tuner/Mono.Tuner/TunerAnnotations.cs
@@ -27,6 +27,7 @@
 //
 
 using Mono.Cecil;
+using Mono.Linker;
 
 namespace Mono.Tuner {
 
@@ -34,14 +35,17 @@ namespace Mono.Tuner {
 
 		static readonly object _internalizedKey = new object ();
 
-		public static void Internalized (IAnnotationProvider provider)
+		public static void Internalized (LinkContext context, IMetadataTokenProvider provider)
 		{
-			provider.Annotations [_internalizedKey] = _internalizedKey;
+			var annotations = context.Annotations.GetCustomAnnotations (_internalizedKey);
+			annotations [provider] = _internalizedKey;
 		}
 
-		public static bool IsInternalized (IAnnotationProvider provider)
+		public static bool IsInternalized (LinkContext context, IMetadataTokenProvider provider)
 		{
-			return provider.Annotations.Contains (_internalizedKey);
+			var annotations = context.Annotations.GetCustomAnnotations (_internalizedKey);
+
+			return annotations.ContainsKey (provider);
 		}
 
 		private TunerAnnotations ()
diff --git a/mcs/tools/xbuild/ChangeLog b/mcs/tools/xbuild/ChangeLog
index 0bc3bef..dde8f5c 100644
--- a/mcs/tools/xbuild/ChangeLog
+++ b/mcs/tools/xbuild/ChangeLog
@@ -1,3 +1,23 @@
+2011-01-14  Ankit Jain  <radical at corewars.org>
+
+	[xbuild] Add $(TargetDir) property.
+
+	Add $(TargetDir) and set TargetPath only if its not set already.
+
+2011-01-11  Ankit Jain  <radical at corewars.org>
+
+	[xbuild] Ensure trailing slash on some properties.
+
+	Ensure trailing slash on $(BaseIntermediateOutputPath) and
+	$(IntermediateOutputPath).
+
+2010-12-20  Ankit Jain  <radical at corewars.org>
+
+	[xbuild] Fix bug #660508 .
+
+	Use correctly escaped project+target names when specifying project
+	dependencies in the project file generated from a .sln file.
+
 2010-10-15  Ankit Jain  <radical at corewars.org>
 
 	[xbuild] Fix bug #646941. Add explicit System.Core for >=3.5
diff --git a/mcs/tools/xbuild/SolutionParser.cs b/mcs/tools/xbuild/SolutionParser.cs
index 30e7b38..c3fc69a 100644
--- a/mcs/tools/xbuild/SolutionParser.cs
+++ b/mcs/tools/xbuild/SolutionParser.cs
@@ -751,20 +751,10 @@ namespace Mono.XBuild.CommandLine {
 					string target_name = GetTargetNameForProject (project.Name, buildTarget);
 					Target target = p.Targets.AddNewTarget (target_name);
 					target.Condition = "'$(CurrentSolutionConfigurationContents)' != ''"; 
-
-					if (project.Dependencies.Count > 0) {
-						StringBuilder dependencies = new StringBuilder ();
-						foreach (ProjectInfo dependentInfo in project.Dependencies.Values) {
-							if (dependencies.Length > 0)
-								dependencies.Append (";");
-							if (IsBuildTargetName (dependentInfo.Name))
-								dependencies.Append ("Solution:");
-							dependencies.Append (dependentInfo.Name);
-							if (buildTarget != "Build")
-								dependencies.Append (":" + buildTarget);
-						}
-						target.DependsOnTargets = dependencies.ToString ();
-					}
+					if (project.Dependencies.Count > 0)
+						target.DependsOnTargets = String.Join (";",
+								project.Dependencies.Values.Select (
+									di => GetTargetNameForProject (di.Name, buildTarget)).ToArray ());
 
 					foreach (TargetInfo targetInfo in solutionTargets) {
 						BuildTask task = null;
diff --git a/mcs/tools/xbuild/xbuild/2.0/Microsoft.Common.targets b/mcs/tools/xbuild/xbuild/2.0/Microsoft.Common.targets
index 8b237ee..133f45d 100644
--- a/mcs/tools/xbuild/xbuild/2.0/Microsoft.Common.targets
+++ b/mcs/tools/xbuild/xbuild/2.0/Microsoft.Common.targets
@@ -34,6 +34,7 @@
 
 	<PropertyGroup>
 		<BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)' == ''">obj\</BaseIntermediateOutputPath>
+		<BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)' != '' and !HasTrailingSlash('$(BaseIntermediateOutputPath)')">$(BaseIntermediateOutputPath)\</BaseIntermediateOutputPath>
 		<CleanFile Condition="'$(CleanFile)'==''">$(MSBuildProjectFile).FilesWrittenAbsolute.txt</CleanFile>
 	</PropertyGroup>
 
@@ -42,6 +43,10 @@
 		<IntermediateOutputPath Condition=" '$(PlatformName)' != 'AnyCPU'">$(BaseIntermediateOutputPath)$(PlatformName)\$(Configuration)\</IntermediateOutputPath>
 	</PropertyGroup>
 
+	<PropertyGroup>
+		<IntermediateOutputPath Condition="'$(IntermediateOutputPath)' != '' and !HasTrailingSlash('$(IntermediateOutputPath)')">$(IntermediateOutputPath)\</IntermediateOutputPath>
+	</PropertyGroup>
+
 	<ItemGroup>
 		<IntermediateAssembly Include="$(IntermediateOutputPath)$(AssemblyName)$(TargetExt)" />
 
@@ -52,7 +57,8 @@
 	<PropertyGroup>
 		<TargetName Condition="'$(TargetName)' == '' ">$(AssemblyName)</TargetName>
 		<TargetFileName Condition="'$(TargetFileName)' == '' ">$(TargetName)$(TargetExt)</TargetFileName>
-		<TargetPath>@(_OutDirItem->'%(FullPath)\$(TargetFileName)')</TargetPath>
+		<TargetDir Condition=" '$(TargetDir)' == '' ">@(_OutDirItem->'%(FullPath)')</TargetDir>
+		<TargetPath Condition=" '$(TargetPath)' == '' ">@(_OutDirItem->'%(FullPath)\$(TargetFileName)')</TargetPath>
 		<MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildProjectFullPath);$(MSBuildToolsPath)\Microsoft.Common.targets</MSBuildAllProjects>
 
 		<KeyOriginatorFile Condition=" '$(SignAssembly)' == 'true' ">$(AssemblyOriginatorKeyFile)</KeyOriginatorFile>
diff --git a/mcs/tools/xbuild/xbuild/3.5/Microsoft.Common.targets b/mcs/tools/xbuild/xbuild/3.5/Microsoft.Common.targets
index 8b237ee..133f45d 100644
--- a/mcs/tools/xbuild/xbuild/3.5/Microsoft.Common.targets
+++ b/mcs/tools/xbuild/xbuild/3.5/Microsoft.Common.targets
@@ -34,6 +34,7 @@
 
 	<PropertyGroup>
 		<BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)' == ''">obj\</BaseIntermediateOutputPath>
+		<BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)' != '' and !HasTrailingSlash('$(BaseIntermediateOutputPath)')">$(BaseIntermediateOutputPath)\</BaseIntermediateOutputPath>
 		<CleanFile Condition="'$(CleanFile)'==''">$(MSBuildProjectFile).FilesWrittenAbsolute.txt</CleanFile>
 	</PropertyGroup>
 
@@ -42,6 +43,10 @@
 		<IntermediateOutputPath Condition=" '$(PlatformName)' != 'AnyCPU'">$(BaseIntermediateOutputPath)$(PlatformName)\$(Configuration)\</IntermediateOutputPath>
 	</PropertyGroup>
 
+	<PropertyGroup>
+		<IntermediateOutputPath Condition="'$(IntermediateOutputPath)' != '' and !HasTrailingSlash('$(IntermediateOutputPath)')">$(IntermediateOutputPath)\</IntermediateOutputPath>
+	</PropertyGroup>
+
 	<ItemGroup>
 		<IntermediateAssembly Include="$(IntermediateOutputPath)$(AssemblyName)$(TargetExt)" />
 
@@ -52,7 +57,8 @@
 	<PropertyGroup>
 		<TargetName Condition="'$(TargetName)' == '' ">$(AssemblyName)</TargetName>
 		<TargetFileName Condition="'$(TargetFileName)' == '' ">$(TargetName)$(TargetExt)</TargetFileName>
-		<TargetPath>@(_OutDirItem->'%(FullPath)\$(TargetFileName)')</TargetPath>
+		<TargetDir Condition=" '$(TargetDir)' == '' ">@(_OutDirItem->'%(FullPath)')</TargetDir>
+		<TargetPath Condition=" '$(TargetPath)' == '' ">@(_OutDirItem->'%(FullPath)\$(TargetFileName)')</TargetPath>
 		<MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildProjectFullPath);$(MSBuildToolsPath)\Microsoft.Common.targets</MSBuildAllProjects>
 
 		<KeyOriginatorFile Condition=" '$(SignAssembly)' == 'true' ">$(AssemblyOriginatorKeyFile)</KeyOriginatorFile>
diff --git a/mcs/tools/xbuild/xbuild/4.0/Microsoft.Common.targets b/mcs/tools/xbuild/xbuild/4.0/Microsoft.Common.targets
index b55f2de..63396db 100644
--- a/mcs/tools/xbuild/xbuild/4.0/Microsoft.Common.targets
+++ b/mcs/tools/xbuild/xbuild/4.0/Microsoft.Common.targets
@@ -37,6 +37,7 @@
 
 	<PropertyGroup>
 		<BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)' == ''">obj\</BaseIntermediateOutputPath>
+		<BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)' != '' and !HasTrailingSlash('$(BaseIntermediateOutputPath)')">$(BaseIntermediateOutputPath)\</BaseIntermediateOutputPath>
 		<CleanFile Condition="'$(CleanFile)'==''">$(MSBuildProjectFile).FilesWrittenAbsolute.txt</CleanFile>
 	</PropertyGroup>
 
@@ -45,6 +46,10 @@
 		<IntermediateOutputPath Condition=" '$(PlatformName)' != 'AnyCPU'">$(BaseIntermediateOutputPath)$(PlatformName)\$(Configuration)\</IntermediateOutputPath>
 	</PropertyGroup>
 
+	<PropertyGroup>
+		<IntermediateOutputPath Condition="'$(IntermediateOutputPath)' != '' and !HasTrailingSlash('$(IntermediateOutputPath)')">$(IntermediateOutputPath)\</IntermediateOutputPath>
+	</PropertyGroup>
+
 	<ItemGroup>
 		<IntermediateAssembly Include="$(IntermediateOutputPath)$(AssemblyName)$(TargetExt)" />
 
@@ -55,9 +60,9 @@
 	<PropertyGroup>
 		<TargetName Condition="'$(TargetName)' == '' ">$(AssemblyName)</TargetName>
 		<TargetFileName Condition="'$(TargetFileName)' == '' ">$(TargetName)$(TargetExt)</TargetFileName>
-		<TargetPath>@(_OutDirItem->'%(FullPath)\$(TargetFileName)')</TargetPath>
+		<TargetDir Condition=" '$(TargetDir)' == '' ">@(_OutDirItem->'%(FullPath)')</TargetDir>
+		<TargetPath Condition=" '$(TargetPath)' == '' ">@(_OutDirItem->'%(FullPath)\$(TargetFileName)')</TargetPath>
 		<MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildProjectFullPath);$(MSBuildToolsPath)\Microsoft.Common.targets</MSBuildAllProjects>
-
 		<KeyOriginatorFile Condition=" '$(SignAssembly)' == 'true' ">$(AssemblyOriginatorKeyFile)</KeyOriginatorFile>
 	</PropertyGroup>
 
diff --git a/mono-core.spec.in b/mono-core.spec.in
index 25a87d6..77716f5 100644
--- a/mono-core.spec.in
+++ b/mono-core.spec.in
@@ -148,7 +148,6 @@ rm -rf %buildroot
 %dir %_prefix/lib/mono/3.5
 %dir %_prefix/lib/mono/4.0
 %dir %_prefix/lib/mono/compat-2.0
-%dir %_prefix/lib/mono/compat-4.0
 %dir %_prefix/lib/mono/gac
 %dir %_sysconfdir/mono
 %dir %_sysconfdir/mono/2.0
@@ -206,6 +205,7 @@ rm -rf %buildroot
 %_prefix/lib/mono/2.0/System.Configuration.dll
 %_prefix/lib/mono/2.0/System.Core.dll
 %_prefix/lib/mono/2.0/System.Drawing.dll
+%_prefix/lib/mono/2.0/System.Net.dll
 %_prefix/lib/mono/2.0/System.Security.dll
 %_prefix/lib/mono/2.0/System.Xml.Linq.dll
 %_prefix/lib/mono/2.0/System.Xml.dll
@@ -215,6 +215,7 @@ rm -rf %buildroot
 %_prefix/lib/mono/2.0/csharp.exe*
 %_prefix/lib/mono/2.0/gacutil.exe*
 %_prefix/lib/mono/2.0/gmcs.exe*
+%_prefix/lib/mono/2.0/mcs.exe*
 %_prefix/lib/mono/2.0/mscorlib.dll*
 %_prefix/lib/mono/4.0/Commons.Xml.Relaxng.dll
 %_prefix/lib/mono/4.0/CustomMarshalers.dll
@@ -237,6 +238,7 @@ rm -rf %buildroot
 %_prefix/lib/mono/4.0/System.Core.dll
 %_prefix/lib/mono/4.0/System.Drawing.dll
 %_prefix/lib/mono/4.0/System.Dynamic.dll
+%_prefix/lib/mono/4.0/System.Net.dll
 %_prefix/lib/mono/4.0/System.Numerics.dll
 %_prefix/lib/mono/4.0/System.Security.dll
 %_prefix/lib/mono/4.0/System.Xml.Linq.dll
@@ -254,7 +256,6 @@ rm -rf %buildroot
 %_prefix/lib/mono/4.0/setreg.exe*
 %_prefix/lib/mono/4.0/sn.exe*
 %_prefix/lib/mono/compat-2.0/ICSharpCode.SharpZipLib.dll
-%_prefix/lib/mono/compat-4.0/ICSharpCode.SharpZipLib.dll
 %_prefix/lib/mono/gac/Commons.Xml.Relaxng
 %_prefix/lib/mono/gac/CustomMarshalers
 %_prefix/lib/mono/gac/I18N
@@ -279,6 +280,7 @@ rm -rf %buildroot
 %_prefix/lib/mono/gac/System.Core
 %_prefix/lib/mono/gac/System.Drawing
 %_prefix/lib/mono/gac/System.Dynamic
+%_prefix/lib/mono/gac/System.Net
 %_prefix/lib/mono/gac/System.Numerics
 %_prefix/lib/mono/gac/System.Security
 %_prefix/lib/mono/gac/System.Xml
@@ -817,7 +819,6 @@ Mono implementation of ASP.NET MVC.
 %_prefix/lib/mono/2.0/System.Web.Extensions.Design.dll
 %_prefix/lib/mono/2.0/System.Web.Extensions.dll
 %_prefix/lib/mono/2.0/System.Web.Mvc.dll
-%_prefix/lib/mono/3.5/System.Web.Extensions.Design.dll
 %_prefix/lib/mono/4.0/System.Web.DynamicData.dll
 %_prefix/lib/mono/4.0/System.Web.Extensions.Design.dll
 %_prefix/lib/mono/4.0/System.Web.Extensions.dll
@@ -985,6 +986,7 @@ Mono development tools.
 %_bindir/monolinker
 %_bindir/monop
 %_bindir/monop2
+%_bindir/mprof-report
 %_bindir/pdb2mdb
 %_bindir/pedump
 %_bindir/permview
@@ -999,10 +1001,7 @@ Mono development tools.
 %dir %_datadir/mono-2.0/mono
 %dir %_datadir/mono-2.0/mono/cil
 %_datadir/mono-2.0/mono/cil/cil-opcodes.xml
-%_libdir/libmono-profiler-aot.*
-%_libdir/libmono-profiler-cov.*
-%_libdir/libmono-profiler-iomap.*
-%_libdir/libmono-profiler-logging.*
+%_libdir/libmono-profiler-*.*
 %_libdir/pkgconfig/cecil.pc
 %_libdir/pkgconfig/dotnet.pc
 %_libdir/pkgconfig/dotnet35.pc
@@ -1028,6 +1027,7 @@ Mono development tools.
 %_mandir/man1/monodis.1%ext_man
 %_mandir/man1/monolinker.1%ext_man
 %_mandir/man1/monop.1%ext_man
+%_mandir/man1/mprof-report.1%ext_man
 %_mandir/man1/pdb2mdb.1%ext_man
 %_mandir/man1/permview.1%ext_man
 %_mandir/man1/prj2make.1%ext_man
@@ -1161,7 +1161,7 @@ Monodoc-core contains documentation tools for C#.
 %_mandir/man1/monodocer.1%ext_man
 %_mandir/man1/monodocs2html.1%ext_man
 %_mandir/man5/mdoc.5%ext_man
-%_prefix/lib/mono/4.0/mdoc.exe*
+%_prefix/lib/mono/2.0/mdoc.exe*
 %_prefix/lib/mono/4.0/mod.exe*
 %_prefix/lib/mono/gac/monodoc
 %_prefix/lib/mono/monodoc
@@ -1209,6 +1209,5 @@ not install anything from outside the mono source (XSP, mono-basic, etc.).
 %files -n mono-complete
 %defattr(-, root, root)
 %dir %_prefix/lib/mono/compat-2.0
-%dir %_prefix/lib/mono/compat-4.0
 
 %changelog
diff --git a/mono/Makefile.am b/mono/Makefile.am
index d090464..98be7cf 100644
--- a/mono/Makefile.am
+++ b/mono/Makefile.am
@@ -2,7 +2,30 @@ if CROSS_COMPILING
 SUBDIRS = utils io-layer cil metadata arch $(interpreter_dir) mini dis
 else
 if MOONLIGHT
-SUBDIRS = utils io-layer     metadata arch $(interpreter_dir) mini
+SUBDIRS = utils io-layer metadata arch mini
+
+moon-do-build:
+	@list='$(SUBDIRS)'; for subdir in $$list; do \
+	  case "x$$subdir" in \
+		xmetadata ) target="moon-do-build" ;; \
+		xmini ) target="moon-do-build" ;; \
+		* ) target="all" ;; \
+	  esac; \
+	  echo "Making $$target in $$subdir"; \
+	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$target); \
+    done;
+
+moon-do-clean:
+	@list='$(SUBDIRS)'; for subdir in $$list; do \
+	  case "x$$subdir" in \
+		xmetadata ) target="moon-do-clean" ;; \
+		xmini ) target="moon-do-clean" ;; \
+		* ) target="clean" ;; \
+	  esac; \
+	  echo "Making $$target in $$subdir"; \
+	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$target); \
+    done;
+
 else
 SUBDIRS = utils io-layer cil metadata arch $(interpreter_dir) mini dis monograph tests benchmark profiler
 endif
diff --git a/mono/Makefile.in b/mono/Makefile.in
index b5d54de..fad0585 100644
--- a/mono/Makefile.in
+++ b/mono/Makefile.in
@@ -144,6 +144,7 @@ MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
 MONO_DL_NEED_USCORE = @MONO_DL_NEED_USCORE@
 MONO_NACL_ALIGN_MASK_OFF = @MONO_NACL_ALIGN_MASK_OFF@
+MOONLIGHT_DEFINES = @MOONLIGHT_DEFINES@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
@@ -253,7 +254,7 @@ top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 @CROSS_COMPILING_FALSE@@MOONLIGHT_FALSE at SUBDIRS = utils io-layer cil metadata arch $(interpreter_dir) mini dis monograph tests benchmark profiler
- at CROSS_COMPILING_FALSE@@MOONLIGHT_TRUE at SUBDIRS = utils io-layer     metadata arch $(interpreter_dir) mini
+ at CROSS_COMPILING_FALSE@@MOONLIGHT_TRUE at SUBDIRS = utils io-layer metadata arch mini
 @CROSS_COMPILING_TRUE at SUBDIRS = utils io-layer cil metadata arch $(interpreter_dir) mini dis
 DIST_SUBDIRS = utils io-layer cil metadata arch interpreter mini dis monograph tests benchmark profiler
 all: all-recursive
@@ -568,6 +569,28 @@ uninstall-am:
 	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
 	uninstall uninstall-am
 
+
+ at CROSS_COMPILING_FALSE@@MOONLIGHT_TRUE at moon-do-build:
+ at CROSS_COMPILING_FALSE@@MOONLIGHT_TRUE@	@list='$(SUBDIRS)'; for subdir in $$list; do \
+ at CROSS_COMPILING_FALSE@@MOONLIGHT_TRUE@	  case "x$$subdir" in \
+ at CROSS_COMPILING_FALSE@@MOONLIGHT_TRUE@		xmetadata ) target="moon-do-build" ;; \
+ at CROSS_COMPILING_FALSE@@MOONLIGHT_TRUE@		xmini ) target="moon-do-build" ;; \
+ at CROSS_COMPILING_FALSE@@MOONLIGHT_TRUE@		* ) target="all" ;; \
+ at CROSS_COMPILING_FALSE@@MOONLIGHT_TRUE@	  esac; \
+ at CROSS_COMPILING_FALSE@@MOONLIGHT_TRUE@	  echo "Making $$target in $$subdir"; \
+ at CROSS_COMPILING_FALSE@@MOONLIGHT_TRUE@	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$target); \
+ at CROSS_COMPILING_FALSE@@MOONLIGHT_TRUE@    done;
+
+ at CROSS_COMPILING_FALSE@@MOONLIGHT_TRUE at moon-do-clean:
+ at CROSS_COMPILING_FALSE@@MOONLIGHT_TRUE@	@list='$(SUBDIRS)'; for subdir in $$list; do \
+ at CROSS_COMPILING_FALSE@@MOONLIGHT_TRUE@	  case "x$$subdir" in \
+ at CROSS_COMPILING_FALSE@@MOONLIGHT_TRUE@		xmetadata ) target="moon-do-clean" ;; \
+ at CROSS_COMPILING_FALSE@@MOONLIGHT_TRUE@		xmini ) target="moon-do-clean" ;; \
+ at CROSS_COMPILING_FALSE@@MOONLIGHT_TRUE@		* ) target="clean" ;; \
+ at CROSS_COMPILING_FALSE@@MOONLIGHT_TRUE@	  esac; \
+ at CROSS_COMPILING_FALSE@@MOONLIGHT_TRUE@	  echo "Making $$target in $$subdir"; \
+ at CROSS_COMPILING_FALSE@@MOONLIGHT_TRUE@	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$target); \
+ at CROSS_COMPILING_FALSE@@MOONLIGHT_TRUE@    done;
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/mono/arch/ChangeLog b/mono/arch/ChangeLog
index 20a29f3..180c4ed 100644
--- a/mono/arch/ChangeLog
+++ b/mono/arch/ChangeLog
@@ -1,3 +1,49 @@
+2011-01-10  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Implement mono.simd new conversion ops on amd64
+
+2011-01-10  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Implement a few conversion operations.
+
+	Add conversion operations between 4f, 2d and 4i. Implemented only
+	on x86 for now.
+
+2011-01-07  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	AMD64 version of the new mono.simd ops
+
+2011-01-06  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* x86-codegen.h: Add macro and define to emit pshufpd.
+
+2011-01-06  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Add SHUFPS and macro to emit it.
+
+2011-01-06  Zoltan Varga  <vargaz at gmail.com>
+
+	Put back a macro definition accidently removed by the nacl
+	changes.
+
+2011-01-06  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix warnings introduced by the NACL merge.
+
+2010-12-14  Elijah Taylor  <elijahtaylor at google.com>
+
+	Merge mono/io-layer, mono/metadata, mono/arch/x86 and configure.in
+	for Native Client
+
+2010-12-14  Elijah Taylor  <elijahtaylor at google.com>
+
+	Changes to mono/arch/amd64 for Native Client
+
+2010-09-24  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* amd64-codegen.h (amd64_alu_reg_membase_size): Add support for
+	RIP based addressing.
+
 2010-08-18  Mark Mason  <mmason at upwardaccess.com>
 
 	Simplify test for MIPS imm16 operands.
diff --git a/mono/arch/Makefile.in b/mono/arch/Makefile.in
index d7904fd..419e834 100644
--- a/mono/arch/Makefile.in
+++ b/mono/arch/Makefile.in
@@ -160,6 +160,7 @@ MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
 MONO_DL_NEED_USCORE = @MONO_DL_NEED_USCORE@
 MONO_NACL_ALIGN_MASK_OFF = @MONO_NACL_ALIGN_MASK_OFF@
+MOONLIGHT_DEFINES = @MOONLIGHT_DEFINES@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
diff --git a/mono/arch/alpha/Makefile.in b/mono/arch/alpha/Makefile.in
index 944730b..60d5ee0 100644
--- a/mono/arch/alpha/Makefile.in
+++ b/mono/arch/alpha/Makefile.in
@@ -155,6 +155,7 @@ MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
 MONO_DL_NEED_USCORE = @MONO_DL_NEED_USCORE@
 MONO_NACL_ALIGN_MASK_OFF = @MONO_NACL_ALIGN_MASK_OFF@
+MOONLIGHT_DEFINES = @MOONLIGHT_DEFINES@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
diff --git a/mono/arch/amd64/Makefile.in b/mono/arch/amd64/Makefile.in
index ebe957e..4a12e63 100644
--- a/mono/arch/amd64/Makefile.in
+++ b/mono/arch/amd64/Makefile.in
@@ -149,6 +149,7 @@ MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
 MONO_DL_NEED_USCORE = @MONO_DL_NEED_USCORE@
 MONO_NACL_ALIGN_MASK_OFF = @MONO_NACL_ALIGN_MASK_OFF@
+MOONLIGHT_DEFINES = @MOONLIGHT_DEFINES@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
diff --git a/mono/arch/amd64/amd64-codegen.h b/mono/arch/amd64/amd64-codegen.h
index 2cef670..857c7ab 100644
--- a/mono/arch/amd64/amd64-codegen.h
+++ b/mono/arch/amd64/amd64-codegen.h
@@ -67,6 +67,32 @@ typedef enum
   AMD64_REX_W = 8  /* Opeartion is 64-bits instead of 32 (default) or 16 (with 0x66 prefix) */
 } AMD64_REX_Bits;
 
+#if defined(__default_codegen__)
+
+#define amd64_codegen_pre(inst)
+#define amd64_codegen_post(inst)
+
+#elif defined(__native_client_codegen__)
+
+#define amd64_codegen_pre(inst) guint8* _codegen_start = (inst); amd64_nacl_instruction_pre();
+#define amd64_codegen_post(inst) (amd64_nacl_instruction_post(&_codegen_start, &(inst)), _codegen_start);
+
+/* Because of rex prefixes, etc, call sequences are not constant size.  */
+/* These pre- and post-sequence hooks remedy this by aligning the call  */
+/* sequence after we emit it, since we will know the exact size then.   */
+#define amd64_call_sequence_pre(inst) guint8* _code_start = (inst);
+#define amd64_call_sequence_post(inst) \
+  (mono_nacl_align_call(&_code_start, &(inst)), _code_start);
+
+/* Native client can load/store using one of the following registers     */
+/* as a base: rip, r15, rbp, rsp.  Any other base register needs to have */
+/* its upper 32 bits cleared and reference memory using r15 as the base. */
+#define amd64_is_valid_nacl_base(reg) \
+  ((reg) == AMD64_RIP || (reg) == AMD64_R15 || \
+   (reg) == AMD64_RBP || (reg) == AMD64_RSP)
+
+#endif /*__native_client_codegen__*/
+
 #ifdef TARGET_WIN32
 #define AMD64_ARG_REG1 AMD64_RCX
 #define AMD64_ARG_REG2 AMD64_RDX
@@ -88,6 +114,16 @@ typedef enum
 
 #define AMD64_CALLEE_SAVED_REGS ((1<<AMD64_RDI) | (1<<AMD64_RSI) | (1<<AMD64_RBX) | (1<<AMD64_R12) | (1<<AMD64_R13) | (1<<AMD64_R14) | (1<<AMD64_R15) | (1<<AMD64_RBP))
 #define AMD64_IS_CALLEE_SAVED_REG(reg) (AMD64_CALLEE_SAVED_REGS & (1 << (reg)))
+#elif defined(__native_client_codegen__)
+/* AMD64 Native Client code may not write R15 */
+#define AMD64_CALLEE_REGS ((1<<AMD64_RAX) | (1<<AMD64_RCX) | (1<<AMD64_RDX) | (1<<AMD64_RSI) | (1<<AMD64_RDI) | (1<<AMD64_R8) | (1<<AMD64_R9) | (1<<AMD64_R10))
+#define AMD64_IS_CALLEE_REG(reg)  (AMD64_CALLEE_REGS & (1 << (reg)))
+
+#define AMD64_ARGUMENT_REGS ((1<<AMD64_RDI) | (1<<AMD64_RSI) | (1<<AMD64_RDX) | (1<<AMD64_RCX) | (1<<AMD64_R8) | (1<<AMD64_R9))
+#define AMD64_IS_ARGUMENT_REG(reg) (AMD64_ARGUMENT_REGS & (1 << (reg)))
+
+#define AMD64_CALLEE_SAVED_REGS ((1<<AMD64_RBX) | (1<<AMD64_R12) | (1<<AMD64_R13) | (1<<AMD64_R14) | (1<<AMD64_RBP))
+#define AMD64_IS_CALLEE_SAVED_REG(reg) (AMD64_CALLEE_SAVED_REGS & (1 << (reg)))
 #else
 #define AMD64_CALLEE_REGS ((1<<AMD64_RAX) | (1<<AMD64_RCX) | (1<<AMD64_RDX) | (1<<AMD64_RSI) | (1<<AMD64_RDI) | (1<<AMD64_R8) | (1<<AMD64_R9) | (1<<AMD64_R10))
 #define AMD64_IS_CALLEE_REG(reg)  (AMD64_CALLEE_REGS & (1 << (reg)))
@@ -100,6 +136,17 @@ typedef enum
 #endif
 
 #define AMD64_REX(bits) ((unsigned char)(0x40 | (bits)))
+#if defined(__default_codegen__)
+#define amd64_emit_rex(inst, width, reg_modrm, reg_index, reg_rm_base_opcode) do \
+	{ \
+		unsigned char _amd64_rex_bits = \
+			(((width) > 4) ? AMD64_REX_W : 0) | \
+			(((reg_modrm) > 7) ? AMD64_REX_R : 0) | \
+			(((reg_index) > 7) ? AMD64_REX_X : 0) | \
+			(((reg_rm_base_opcode) > 7) ? AMD64_REX_B : 0); \
+		if ((_amd64_rex_bits != 0) || (((width) == 1))) *(inst)++ = AMD64_REX(_amd64_rex_bits); \
+	} while (0)
+#elif defined(__native_client_codegen__)
 #define amd64_emit_rex(inst, width, reg_modrm, reg_index, reg_rm_base_opcode) do \
 	{ \
 		unsigned char _amd64_rex_bits = \
@@ -107,11 +154,13 @@ typedef enum
 			(((reg_modrm) > 7) ? AMD64_REX_R : 0) | \
 			(((reg_index) > 7) ? AMD64_REX_X : 0) | \
 			(((reg_rm_base_opcode) > 7) ? AMD64_REX_B : 0); \
+		amd64_nacl_tag_rex((inst)); \
 		if ((_amd64_rex_bits != 0) || (((width) == 1))) *(inst)++ = AMD64_REX(_amd64_rex_bits); \
 	} while (0)
+#endif
 
 typedef union {
-	gsize val;
+	guint64 val;
 	unsigned char b [8];
 } amd64_imm_buf;
 
@@ -138,7 +187,7 @@ typedef union {
 #define x86_imm_emit64(inst,imm)     \
 	do {	\
 			amd64_imm_buf imb; 	\
-			imb.val = (gsize) (imm);	\
+			imb.val = (guint64) (imm);	\
 			*(inst)++ = imb.b [0];	\
 			*(inst)++ = imb.b [1];	\
 			*(inst)++ = imb.b [2];	\
@@ -158,7 +207,7 @@ typedef union {
 		x86_membase_emit ((inst),(reg)&0x7, (basereg)&0x7, (disp)); \
 } while (0)
 
-#define amd64_alu_reg_imm_size(inst,opc,reg,imm,size) 	\
+#define amd64_alu_reg_imm_size_body(inst,opc,reg,imm,size) \
 	do {	\
 		if (x86_is_imm8((imm))) {	\
 			amd64_emit_rex(inst, size, 0, 0, (reg)); \
@@ -177,21 +226,76 @@ typedef union {
 		}	\
 	} while (0)
 
-#define amd64_alu_reg_imm(inst,opc,reg,imm) amd64_alu_reg_imm_size((inst),(opc),(reg),(imm),8)
-
-#define amd64_alu_reg_reg_size(inst,opc,dreg,reg,size)	\
+#define amd64_alu_reg_reg_size_body(inst,opc,dreg,reg,size)	\
 	do {	\
 		amd64_emit_rex(inst, size, (dreg), 0, (reg)); \
 		*(inst)++ = (((unsigned char)(opc)) << 3) + 3;	\
 		x86_reg_emit ((inst), (dreg), (reg));	\
 	} while (0)
 
+#if defined(__default_codegen__)
+
+#define amd64_alu_reg_imm_size(inst,opc,reg,imm,size) \
+	amd64_alu_reg_imm_size_body((inst), (opc), (reg), (imm), (size))
+
+#define amd64_alu_reg_reg_size(inst,opc,dreg,reg,size) \
+		amd64_alu_reg_reg_size_body((inst), (opc), (dreg), (reg), (size))
+
+#elif defined(__native_client_codegen__)
+/* NaCl modules may not directly update RSP or RBP other than direct copies */
+/* between them. Instead the lower 4 bytes are updated and then added to R15 */
+#define amd64_is_nacl_stack_reg(reg) (((reg) == AMD64_RSP) || ((reg) == AMD64_RBP))
+
+#define amd64_alu_reg_imm_size(inst,opc,reg,imm,size) 	\
+	do{ \
+		amd64_codegen_pre(inst);		\
+		if (amd64_is_nacl_stack_reg(reg)) { \
+			if (((opc) != X86_ADD) && ((opc) != X86_SUB)) \
+				g_assert_not_reached(); \
+			amd64_alu_reg_imm_size_body((inst), (opc), (reg), (imm), 4); \
+			/* Use LEA instead of ADD to preserve flags */ \
+			amd64_lea_memindex_size((inst), (reg), (reg), 0, AMD64_R15, 0, 8); \
+		} else { \
+			amd64_alu_reg_imm_size_body((inst), (opc), (reg), (imm), (size)); \
+		} \
+		amd64_codegen_post(inst);		\
+	} while(0)
+
+#define amd64_alu_reg_reg_size(inst,opc,dreg,reg,size) \
+	do { \
+		amd64_codegen_pre(inst);		\
+		if (amd64_is_nacl_stack_reg((dreg)) && ((reg) != AMD64_R15)) { \
+			if (((opc) != X86_ADD && (opc) != X86_SUB)) \
+				g_assert_not_reached(); \
+			amd64_alu_reg_reg_size_body((inst), (opc), (dreg), (reg), 4); \
+			/* Use LEA instead of ADD to preserve flags */ \
+			amd64_lea_memindex_size((inst), (dreg), (dreg), 0, AMD64_R15, 0, 8); \
+		} else { \
+			amd64_alu_reg_reg_size_body((inst), (opc), (dreg), (reg), (size)); \
+		} \
+		amd64_codegen_post(inst);		\
+	} while (0)
+
+#endif /*__native_client_codegen__*/
+
+#define amd64_alu_reg_imm(inst,opc,reg,imm) amd64_alu_reg_imm_size((inst),(opc),(reg),(imm),8)
+
 #define amd64_alu_reg_reg(inst,opc,dreg,reg) amd64_alu_reg_reg_size ((inst),(opc),(dreg),(reg),8)
 
+#define amd64_alu_reg_membase_size(inst,opc,reg,basereg,disp,size) \
+	do { \
+		amd64_codegen_pre(inst);						  \
+		amd64_emit_rex ((inst),(size),(reg),0,(basereg)); \
+		*(inst)++ = (((unsigned char)(opc)) << 3) + 3;	\
+		amd64_membase_emit (inst, reg, basereg, disp); \
+		amd64_codegen_post(inst);					   \
+} while (0)
+
 #define amd64_mov_regp_reg(inst,regp,reg,size)	\
 	do {	\
+		amd64_codegen_pre(inst); \
 		if ((size) == 2) \
-			*(inst)++ = (unsigned char)0x66; \
+			x86_prefix((inst), X86_OPERAND_PREFIX); \
 		amd64_emit_rex(inst, (size), (reg), 0, (regp)); \
 		switch ((size)) {	\
 		case 1: *(inst)++ = (unsigned char)0x88; break;	\
@@ -199,12 +303,14 @@ typedef union {
 		default: assert (0);	\
 		}	\
 		x86_regp_emit ((inst), (reg), (regp));	\
+		amd64_codegen_post(inst); \
 	} while (0)
 
 #define amd64_mov_membase_reg(inst,basereg,disp,reg,size)	\
 	do {	\
+		amd64_codegen_pre(inst); \
 		if ((size) == 2) \
-			*(inst)++ = (unsigned char)0x66; \
+			x86_prefix((inst), X86_OPERAND_PREFIX); \
 		amd64_emit_rex(inst, (size), (reg), 0, (basereg)); \
 		switch ((size)) {	\
 		case 1: *(inst)++ = (unsigned char)0x88; break;	\
@@ -212,27 +318,31 @@ typedef union {
 		default: assert (0);	\
 		}	\
 		x86_membase_emit ((inst), ((reg)&0x7), ((basereg)&0x7), (disp));	\
+		amd64_codegen_post(inst); \
 	} while (0)
 
 #define amd64_mov_mem_reg(inst,mem,reg,size)	\
 	do {	\
+		amd64_codegen_pre(inst); \
 		if ((size) == 2) \
-			*(inst)++ = (unsigned char)0x66; \
+			x86_prefix((inst), X86_OPERAND_PREFIX); \
 		amd64_emit_rex(inst, (size), (reg), 0, 0); \
 		switch ((size)) {	\
 		case 1: *(inst)++ = (unsigned char)0x88; break;	\
 		case 2: case 4: case 8: *(inst)++ = (unsigned char)0x89; break;	\
 		default: assert (0);	\
 		}	\
-        x86_address_byte ((inst), 0, (reg), 4); \
-        x86_address_byte ((inst), 0, 4, 5); \
-        x86_imm_emit32 ((inst), (mem)); \
+		x86_address_byte ((inst), 0, (reg), 4); \
+		x86_address_byte ((inst), 0, 4, 5); \
+		x86_imm_emit32 ((inst), (mem)); \
+		amd64_codegen_post(inst); \
 	} while (0)
 
 #define amd64_mov_reg_reg(inst,dreg,reg,size)	\
 	do {	\
+		amd64_codegen_pre(inst); \
 		if ((size) == 2) \
-			*(inst)++ = (unsigned char)0x66; \
+			x86_prefix((inst), X86_OPERAND_PREFIX); \
 		amd64_emit_rex(inst, (size), (dreg), 0, (reg)); \
 		switch ((size)) {	\
 		case 1: *(inst)++ = (unsigned char)0x8a; break;	\
@@ -240,27 +350,43 @@ typedef union {
 		default: assert (0);	\
 		}	\
 		x86_reg_emit ((inst), (dreg), (reg));	\
+		amd64_codegen_post(inst); \
 	} while (0)
 
-#define amd64_mov_reg_mem(inst,reg,mem,size)	\
+#define amd64_mov_reg_mem_body(inst,reg,mem,size)	\
 	do {	\
+		amd64_codegen_pre(inst); \
 		if ((size) == 2) \
-			*(inst)++ = (unsigned char)0x66; \
+			x86_prefix((inst), X86_OPERAND_PREFIX); \
 		amd64_emit_rex(inst, (size), (reg), 0, 0); \
 		switch ((size)) {	\
 		case 1: *(inst)++ = (unsigned char)0x8a; break;	\
 		case 2: case 4: case 8: *(inst)++ = (unsigned char)0x8b; break;	\
 		default: assert (0);	\
 		}	\
-        x86_address_byte ((inst), 0, (reg), 4); \
-        x86_address_byte ((inst), 0, 4, 5); \
-        x86_imm_emit32 ((inst), (mem)); \
+		x86_address_byte ((inst), 0, (reg), 4); \
+		x86_address_byte ((inst), 0, 4, 5); \
+		x86_imm_emit32 ((inst), (mem)); \
+		amd64_codegen_post(inst); \
 	} while (0)
 
-#define amd64_mov_reg_membase(inst,reg,basereg,disp,size)	\
+#if defined(__default_codegen__)
+#define amd64_mov_reg_mem(inst,reg,mem,size)	\
+	do {    \
+		amd64_mov_reg_mem_body((inst),(reg),(mem),(size)); \
+	} while (0)
+#elif defined(__native_client_codegen__)
+/* We have to re-base memory reads because memory isn't zero based. */
+#define amd64_mov_reg_mem(inst,reg,mem,size)	\
+	do {    \
+		amd64_mov_reg_membase((inst),(reg),AMD64_R15,(mem),(size)); \
+	} while (0)
+#endif /* __native_client_codegen__ */
+
+#define amd64_mov_reg_membase_body(inst,reg,basereg,disp,size)	\
 	do {	\
 		if ((size) == 2) \
-			*(inst)++ = (unsigned char)0x66; \
+			x86_prefix((inst), X86_OPERAND_PREFIX); \
 		amd64_emit_rex(inst, (size), (reg), 0, (basereg)); \
 		switch ((size)) {	\
 		case 1: *(inst)++ = (unsigned char)0x8a; break;	\
@@ -270,8 +396,56 @@ typedef union {
 		amd64_membase_emit ((inst), (reg), (basereg), (disp));	\
 	} while (0)
 
+#define amd64_mov_reg_memindex_size_body(inst,reg,basereg,disp,indexreg,shift,size) \
+	do { \
+		amd64_emit_rex ((inst),(size),(reg),(indexreg),(basereg)); \
+		x86_mov_reg_memindex((inst),((reg)&0x7),((basereg)&0x7),(disp),((indexreg)&0x7),(shift),(size) == 8 ? 4 : (size)); \
+	} while (0)
+
+#if defined(__default_codegen__)
+
+#define amd64_mov_reg_memindex_size(inst,reg,basereg,disp,indexreg,shift,size) \
+	amd64_mov_reg_memindex_size_body((inst),(reg),(basereg),(disp),(indexreg),(shift),(size))
+#define amd64_mov_reg_membase(inst,reg,basereg,disp,size)	\
+	do {	\
+		amd64_mov_reg_membase_body((inst), (reg), (basereg), (disp), (size)); \
+	} while (0)
+
+#elif defined(__native_client_codegen__)
+
+#define amd64_mov_reg_memindex_size(inst,reg,basereg,disp,indexreg,shift,size) \
+	do { \
+		amd64_codegen_pre(inst); \
+		if (amd64_is_nacl_stack_reg((reg))) { \
+			/* Clear upper 32 bits with mov of size 4 */ \
+			amd64_mov_reg_memindex_size_body((inst), (reg), (basereg), (disp), (indexreg), (shift), 4); \
+			/* Add %r15 using LEA to preserve flags */ \
+			amd64_lea_memindex_size((inst), (reg), (reg), 0, AMD64_R15, 0, 8); \
+		} else { \
+			amd64_mov_reg_memindex_size_body((inst), (reg), (basereg), (disp), (indexreg), (shift), (size)); \
+		} \
+		amd64_codegen_post(inst); \
+	} while(0)
+
+#define amd64_mov_reg_membase(inst,reg,basereg,disp,size)	\
+	do {	\
+		amd64_codegen_pre(inst); \
+		if (amd64_is_nacl_stack_reg((reg))) { \
+			/* Clear upper 32 bits with mov of size 4 */ \
+			amd64_mov_reg_membase_body((inst), (reg), (basereg), (disp), 4); \
+			/* Add %r15 */ \
+			amd64_lea_memindex_size((inst), (reg), (reg), 0, AMD64_R15, 0, 8); \
+		} else { \
+			amd64_mov_reg_membase_body((inst), (reg), (basereg), (disp), (size)); \
+		} \
+		amd64_codegen_post(inst); \
+	} while (0)
+
+#endif /*__native_client_codegen__*/
+
 #define amd64_movzx_reg_membase(inst,reg,basereg,disp,size)	\
 	do {	\
+		amd64_codegen_pre(inst); \
 		amd64_emit_rex(inst, (size), (reg), 0, (basereg)); \
 		switch ((size)) {	\
 		case 1: *(inst)++ = (unsigned char)0x0f; *(inst)++ = (unsigned char)0xb6; break;	\
@@ -280,27 +454,34 @@ typedef union {
 		default: assert (0);	\
 		}	\
 		x86_membase_emit ((inst), ((reg)&0x7), ((basereg)&0x7), (disp));	\
+		amd64_codegen_post(inst); \
 	} while (0)
 
 #define amd64_movsxd_reg_mem(inst,reg,mem) \
     do {     \
-       amd64_emit_rex(inst,8,(reg),0,0); \
-       *(inst)++ = (unsigned char)0x63; \
-       x86_mem_emit ((inst), ((reg)&0x7), (mem)); \
+	amd64_codegen_pre(inst); \
+	amd64_emit_rex(inst,8,(reg),0,0); \
+	*(inst)++ = (unsigned char)0x63; \
+	x86_mem_emit ((inst), ((reg)&0x7), (mem)); \
+	amd64_codegen_post(inst); \
     } while (0)
 
 #define amd64_movsxd_reg_membase(inst,reg,basereg,disp) \
     do {     \
-       amd64_emit_rex(inst,8,(reg),0,(basereg)); \
-       *(inst)++ = (unsigned char)0x63; \
-       x86_membase_emit ((inst), ((reg)&0x7), ((basereg)&0x7), (disp)); \
+	amd64_codegen_pre(inst); \
+	amd64_emit_rex(inst,8,(reg),0,(basereg)); \
+	*(inst)++ = (unsigned char)0x63; \
+	x86_membase_emit ((inst), ((reg)&0x7), ((basereg)&0x7), (disp)); \
+	amd64_codegen_post(inst); \
     } while (0)
 
 #define amd64_movsxd_reg_reg(inst,dreg,reg) \
     do {     \
-       amd64_emit_rex(inst,8,(dreg),0,(reg)); \
-       *(inst)++ = (unsigned char)0x63; \
-	   x86_reg_emit ((inst), (dreg), (reg));	\
+	amd64_codegen_pre(inst); \
+	amd64_emit_rex(inst,8,(dreg),0,(reg)); \
+	*(inst)++ = (unsigned char)0x63; \
+	x86_reg_emit ((inst), (dreg), (reg));	\
+	amd64_codegen_post(inst); \
     } while (0)
 
 /* Pretty much the only instruction that supports a 64-bit immediate. Optimize for common case of
@@ -308,18 +489,22 @@ typedef union {
  */
 #define amd64_mov_reg_imm_size(inst,reg,imm,size)	\
 	do {	\
+		amd64_codegen_pre(inst); \
 		amd64_emit_rex(inst, (size), 0, 0, (reg)); \
 		*(inst)++ = (unsigned char)0xb8 + ((reg) & 0x7);	\
 		if ((size) == 8) \
-			x86_imm_emit64 ((inst), (gsize)(imm));	\
+			x86_imm_emit64 ((inst), (guint64)(imm));	\
 		else \
-			x86_imm_emit32 ((inst), (int)(gsize)(imm));	\
+			x86_imm_emit32 ((inst), (int)(guint64)(imm));	\
+		amd64_codegen_post(inst); \
 	} while (0)
 
 #define amd64_mov_reg_imm(inst,reg,imm)	\
 	do {	\
-		int _amd64_width_temp = ((gsize)(imm) == (gsize)(int)(gsize)(imm)); \
-        amd64_mov_reg_imm_size ((inst), (reg), (imm), (_amd64_width_temp ? 4 : 8)); \
+		int _amd64_width_temp = ((guint64)(imm) == (guint64)(int)(guint64)(imm)); \
+		amd64_codegen_pre(inst); \
+		amd64_mov_reg_imm_size ((inst), (reg), (imm), (_amd64_width_temp ? 4 : 8)); \
+		amd64_codegen_post(inst); \
 	} while (0)
 
 #define amd64_set_reg_template(inst,reg) amd64_mov_reg_imm_size ((inst),(reg), 0, 8)
@@ -328,8 +513,9 @@ typedef union {
 
 #define amd64_mov_membase_imm(inst,basereg,disp,imm,size)	\
 	do {	\
+		amd64_codegen_pre(inst); \
 		if ((size) == 2) \
-			*(inst)++ = (unsigned char)0x66; \
+			x86_prefix((inst), X86_OPERAND_PREFIX); \
 		amd64_emit_rex(inst, (size) == 1 ? 0 : (size), 0, 0, (basereg)); \
 		if ((size) == 1) {	\
 			*(inst)++ = (unsigned char)0xc6;	\
@@ -344,36 +530,69 @@ typedef union {
 			x86_membase_emit ((inst), 0, (basereg) & 0x7, (disp));	\
 			x86_imm_emit32 ((inst), (imm));	\
 		}	\
+		amd64_codegen_post(inst); \
 	} while (0)
 
-#define amd64_lea_membase(inst,reg,basereg,disp)	\
+
+#define amd64_lea_membase_body(inst,reg,basereg,disp)	\
 	do {	\
 		amd64_emit_rex(inst, 8, (reg), 0, (basereg)); \
 		*(inst)++ = (unsigned char)0x8d;	\
 		amd64_membase_emit ((inst), (reg), (basereg), (disp));	\
 	} while (0)
 
+#if defined(__default_codegen__)
+#define amd64_lea_membase(inst,reg,basereg,disp) \
+	amd64_lea_membase_body((inst), (reg), (basereg), (disp))
+#elif defined(__native_client_codegen__)
+/* NaCl modules may not write directly into RSP/RBP. Instead, use a */
+/*  32-bit LEA and add R15 to the effective address */
+#define amd64_lea_membase(inst,reg,basereg,disp) \
+	do { \
+		amd64_codegen_pre(inst); \
+		if (amd64_is_nacl_stack_reg(reg)) { \
+			/* 32-bit LEA */ \
+			amd64_emit_rex((inst), 4, (reg), 0, (basereg)); \
+			*(inst)++ = (unsigned char)0x8d; \
+			amd64_membase_emit((inst), (reg), (basereg), (disp)); \
+			/* Use a 64-bit LEA instead of an ADD to preserve flags */ \
+			amd64_lea_memindex_size((inst), (reg), (reg), 0, AMD64_R15, 0, 8); \
+		} else { \
+			amd64_lea_membase_body((inst), (reg), (basereg), (disp)); \
+		} \
+		amd64_codegen_post(inst); \
+	} while (0)
+#endif /*__native_client_codegen__*/
+
 /* Instruction are implicitly 64-bits so don't generate REX for just the size. */
 #define amd64_push_reg(inst,reg)	\
 	do {	\
+		amd64_codegen_pre(inst); \
 		amd64_emit_rex(inst, 0, 0, 0, (reg)); \
 		*(inst)++ = (unsigned char)0x50 + ((reg) & 0x7);	\
+		amd64_codegen_post(inst); \
 	} while (0)
 
 /* Instruction is implicitly 64-bits so don't generate REX for just the size. */
 #define amd64_push_membase(inst,basereg,disp)	\
 	do {	\
+		amd64_codegen_pre(inst); \
 		amd64_emit_rex(inst, 0, 0, 0, (basereg)); \
 		*(inst)++ = (unsigned char)0xff;	\
 		x86_membase_emit ((inst), 6, (basereg) & 0x7, (disp));	\
+		amd64_codegen_post(inst); \
 	} while (0)
 
-#define amd64_pop_reg(inst,reg)	\
+#define amd64_pop_reg_body(inst,reg)	\
 	do {	\
+		amd64_codegen_pre(inst);  \
 		amd64_emit_rex(inst, 0, 0, 0, (reg)); \
 		*(inst)++ = (unsigned char)0x58 + ((reg) & 0x7);	\
+		amd64_codegen_post(inst);  \
 	} while (0)
 
+#if defined(__default_codegen__)
+
 #define amd64_call_reg(inst,reg)	\
 	do {	\
 		amd64_emit_rex(inst, 0, 0, 0, (reg)); \
@@ -381,94 +600,203 @@ typedef union {
 		x86_reg_emit ((inst), 2, ((reg) & 0x7));	\
 	} while (0)
 
+
 #define amd64_ret(inst) do { *(inst)++ = (unsigned char)0xc3; } while (0)
 #define amd64_leave(inst) do { *(inst)++ = (unsigned char)0xc9; } while (0)
+
+#define amd64_pop_reg(inst,reg) amd64_pop_reg_body((inst), (reg))
+
+#elif defined(__native_client_codegen__)
+
+/* Size is ignored for Native Client jumps, we restrict jumping to 32-bits */
+#define amd64_jump_reg_size(inst,reg,size)                                \
+  do {                                                                    \
+    amd64_codegen_pre((inst));                                            \
+    amd64_alu_reg_imm_size((inst), X86_AND, (reg), (nacl_align_byte), 4); \
+    amd64_alu_reg_reg_size((inst), X86_ADD, (reg), AMD64_R15, 8);         \
+    amd64_emit_rex ((inst),0,0,0,(reg));                                  \
+    x86_jump_reg((inst),((reg)&0x7));                                     \
+    amd64_codegen_post((inst));                                           \
+  } while (0)
+
+/* Size is ignored for Native Client jumps, we restrict jumping to 32-bits */
+#define amd64_jump_mem_size(inst,mem,size)                                \
+  do {                                                                    \
+    amd64_codegen_pre((inst));                                            \
+    amd64_mov_reg_mem((inst), (mem), AMD64_R11, 4);                       \
+    amd64_jump_reg_size((inst), AMD64_R11, 4);                            \
+    amd64_codegen_post((inst));                                           \
+  } while (0)
+
+#define amd64_call_reg_internal(inst,reg)                                 \
+  do {                                                                    \
+    amd64_codegen_pre((inst));                                            \
+    amd64_alu_reg_imm_size((inst), X86_AND, (reg), (nacl_align_byte), 4); \
+    amd64_alu_reg_reg_size((inst), X86_ADD, (reg), AMD64_R15, 8);         \
+    amd64_emit_rex((inst), 0, 0, 0, (reg));                               \
+    x86_call_reg((inst), ((reg) & 0x7));                                  \
+    amd64_codegen_post((inst));                                           \
+  } while (0)
+
+#define amd64_call_reg(inst,reg)                                          \
+  do {                                                                    \
+    amd64_codegen_pre((inst));                                            \
+    amd64_call_sequence_pre(inst);                                        \
+    amd64_call_reg_internal((inst), (reg));                               \
+    amd64_call_sequence_post(inst);                                       \
+    amd64_codegen_post((inst));                                           \
+  } while (0)
+
+
+#define amd64_ret(inst)                                                   \
+  do {                                                                    \
+    amd64_codegen_pre(inst);						  \
+    amd64_pop_reg_body((inst), AMD64_R11);                                \
+    amd64_jump_reg_size((inst), AMD64_R11, 8);                            \
+    amd64_codegen_post(inst);						  \
+  } while (0)
+
+#define amd64_leave(inst)                                                 \
+  do {                                                                    \
+    amd64_codegen_pre(inst);						  \
+    amd64_mov_reg_reg((inst), AMD64_RSP, AMD64_RBP, 8);                   \
+    amd64_pop_reg_body((inst), AMD64_R11);                                \
+    amd64_mov_reg_reg_size((inst), AMD64_RBP, AMD64_R11, 4);              \
+    amd64_alu_reg_reg_size((inst), X86_ADD, AMD64_RBP, AMD64_R15, 8);     \
+    amd64_codegen_post(inst);						  \
+  } while (0)
+
+#define amd64_pop_reg(inst,reg) \
+	do { \
+		amd64_codegen_pre(inst); \
+		if (amd64_is_nacl_stack_reg((reg))) { \
+			amd64_pop_reg_body((inst), AMD64_R11); \
+			amd64_mov_reg_reg_size((inst), (reg), AMD64_R11, 4); \
+			amd64_alu_reg_reg_size((inst), X86_ADD, (reg), AMD64_R15, 8); \
+		} else { \
+			amd64_pop_reg_body((inst), (reg)); \
+		} \
+		amd64_codegen_post(inst); \
+	} while (0)
+
+#endif /*__native_client_codegen__*/
+
 #define amd64_movsd_reg_regp(inst,reg,regp)	\
 	do {	\
-		*(inst)++ = (unsigned char)0xf2;	\
+		amd64_codegen_pre(inst); \
+		x86_prefix((inst), 0xf2); \
 		amd64_emit_rex(inst, 0, (reg), 0, (regp)); \
 		*(inst)++ = (unsigned char)0x0f;	\
 		*(inst)++ = (unsigned char)0x10;	\
 		x86_regp_emit ((inst), (reg) & 0x7, (regp) & 0x7);	\
+		amd64_codegen_post(inst); \
 	} while (0)
 
 #define amd64_movsd_regp_reg(inst,regp,reg)	\
 	do {	\
-		*(inst)++ = (unsigned char)0xf2;	\
+		amd64_codegen_pre(inst); \
+		x86_prefix((inst), 0xf2); \
 		amd64_emit_rex(inst, 0, (reg), 0, (regp)); \
 		*(inst)++ = (unsigned char)0x0f;	\
 		*(inst)++ = (unsigned char)0x11;	\
 		x86_regp_emit ((inst), (reg) & 0x7, (regp) & 0x7);	\
+		amd64_codegen_post(inst); \
 	} while (0)
 
 #define amd64_movss_reg_regp(inst,reg,regp)	\
 	do {	\
-		*(inst)++ = (unsigned char)0xf3;	\
+		amd64_codegen_pre(inst); \
+		x86_prefix((inst), 0xf3); \
 		amd64_emit_rex(inst, 0, (reg), 0, (regp)); \
 		*(inst)++ = (unsigned char)0x0f;	\
 		*(inst)++ = (unsigned char)0x10;	\
 		x86_regp_emit ((inst), (reg) & 0x7, (regp) & 0x7);	\
+		amd64_codegen_post(inst); \
 	} while (0)
 
 #define amd64_movss_regp_reg(inst,regp,reg)	\
 	do {	\
-		*(inst)++ = (unsigned char)0xf3;	\
+		amd64_codegen_pre(inst); \
+		x86_prefix((inst), 0xf3); \
 		amd64_emit_rex(inst, 0, (reg), 0, (regp)); \
 		*(inst)++ = (unsigned char)0x0f;	\
 		*(inst)++ = (unsigned char)0x11;	\
 		x86_regp_emit ((inst), (reg) & 0x7, (regp) & 0x7);	\
+		amd64_codegen_post(inst); \
 	} while (0)
 
 #define amd64_movsd_reg_membase(inst,reg,basereg,disp)	\
 	do {	\
-		*(inst)++ = (unsigned char)0xf2;	\
+		amd64_codegen_pre(inst); \
+		x86_prefix((inst), 0xf2); \
 		amd64_emit_rex(inst, 0, (reg), 0, (basereg)); \
 		*(inst)++ = (unsigned char)0x0f;	\
 		*(inst)++ = (unsigned char)0x10;	\
 		x86_membase_emit ((inst), (reg) & 0x7, (basereg) & 0x7, (disp));	\
+		amd64_codegen_post(inst); \
 	} while (0)
 
 #define amd64_movss_reg_membase(inst,reg,basereg,disp)	\
 	do {	\
-		*(inst)++ = (unsigned char)0xf3;	\
+		amd64_codegen_pre(inst); \
+		x86_prefix((inst), 0xf3); \
 		amd64_emit_rex(inst, 0, (reg), 0, (basereg)); \
 		*(inst)++ = (unsigned char)0x0f;	\
 		*(inst)++ = (unsigned char)0x10;	\
 		x86_membase_emit ((inst), (reg) & 0x7, (basereg) & 0x7, (disp));	\
+		amd64_codegen_post(inst); \
 	} while (0)
 
 #define amd64_movsd_membase_reg(inst,basereg,disp,reg)	\
 	do {	\
-		*(inst)++ = (unsigned char)0xf2;	\
+		amd64_codegen_pre(inst); \
+		x86_prefix((inst), 0xf2); \
 		amd64_emit_rex(inst, 0, (reg), 0, (basereg)); \
 		*(inst)++ = (unsigned char)0x0f;	\
 		*(inst)++ = (unsigned char)0x11;	\
 		x86_membase_emit ((inst), (reg) & 0x7, (basereg) & 0x7, (disp));	\
+		amd64_codegen_post(inst); \
 	} while (0)
 
 #define amd64_movss_membase_reg(inst,basereg,disp,reg)	\
 	do {	\
-		*(inst)++ = (unsigned char)0xf3;	\
+		amd64_codegen_pre(inst); \
+		x86_prefix((inst), 0xf3); \
 		amd64_emit_rex(inst, 0, (reg), 0, (basereg)); \
 		*(inst)++ = (unsigned char)0x0f;	\
 		*(inst)++ = (unsigned char)0x11;	\
 		x86_membase_emit ((inst), (reg) & 0x7, (basereg) & 0x7, (disp));	\
+		amd64_codegen_post(inst); \
 	} while (0)
 
 /* The original inc_reg opcode is used as the REX prefix */
 #define amd64_inc_reg_size(inst,reg,size) \
-    do { \
-	    amd64_emit_rex ((inst),(size),0,0,(reg)); \
-        *(inst)++ = (unsigned char)0xff; \
-        x86_reg_emit ((inst),0,(reg) & 0x7); \
-    } while (0)
+	do { \
+		amd64_codegen_pre(inst); \
+		amd64_emit_rex ((inst),(size),0,0,(reg)); \
+		*(inst)++ = (unsigned char)0xff; \
+		x86_reg_emit ((inst),0,(reg) & 0x7); \
+		amd64_codegen_post(inst); \
+	} while (0)
 
 #define amd64_dec_reg_size(inst,reg,size) \
-    do { \
-	    amd64_emit_rex ((inst),(size),0,0,(reg)); \
-        *(inst)++ = (unsigned char)0xff; \
-        x86_reg_emit ((inst),1,(reg) & 0x7); \
-    } while (0)
+	do { \
+		amd64_codegen_pre(inst); \
+		amd64_emit_rex ((inst),(size),0,0,(reg)); \
+		*(inst)++ = (unsigned char)0xff; \
+		x86_reg_emit ((inst),1,(reg) & 0x7); \
+		amd64_codegen_post(inst); \
+	} while (0)
+
+#define amd64_fld_membase_size(inst,basereg,disp,is_double,size) do { \
+	amd64_codegen_pre(inst); \
+	amd64_emit_rex ((inst),0,0,0,(basereg)); \
+	*(inst)++ = (is_double) ? (unsigned char)0xdd : (unsigned char)0xd9;	\
+	amd64_membase_emit ((inst), 0, (basereg), (disp));	\
+	amd64_codegen_post(inst); \
+} while (0)
+
+#if defined (__default_codegen__)
 
 /* From the AMD64 Software Optimization Manual */
 #define amd64_padding_size(inst,size) \
@@ -481,12 +809,6 @@ typedef union {
 		}; \
 		} while (0)
 
-#define amd64_fld_membase_size(inst,basereg,disp,is_double,size) do { \
-	amd64_emit_rex ((inst),0,0,0,(basereg)); \
-    *(inst)++ = (is_double) ? (unsigned char)0xdd : (unsigned char)0xd9;	\
-	amd64_membase_emit ((inst), 0, (basereg), (disp));	\
-} while (0)
-
 #define amd64_call_membase_size(inst,basereg,disp,size) do { amd64_emit_rex ((inst),0,0,0,(basereg)); *(inst)++ = (unsigned char)0xff; amd64_membase_emit ((inst),2, (basereg),(disp)); } while (0)
 #define amd64_jump_membase_size(inst,basereg,disp,size) do { amd64_emit_rex ((inst),0,0,0,(basereg)); *(inst)++ = (unsigned char)0xff; amd64_membase_emit ((inst), 4, (basereg), (disp)); } while (0)
     
@@ -500,6 +822,98 @@ typedef union {
 	} \
 } while (0)
 
+#elif defined(__native_client_codegen__)
+
+/* The 3-7 byte NOP sequences in amd64_padding_size below are all illegal in */
+/* 64-bit Native Client because they load into rSP/rBP or use duplicate */
+/* prefixes. Instead we use the NOPs recommended in Section 3.5.1.8 of the */
+/* Intel64 and IA-32 Architectures Optimization Reference Manual and */
+/* Section 4.13 of AMD Software Optimization Guide for Family 10h Processors. */
+
+#define amd64_padding_size(inst,size) \
+	do { \
+		unsigned char *code_start = (inst); \
+		switch ((size)) { \
+			/* xchg %eax,%eax, recognized by hardware as a NOP */ \
+			case 1: *(inst)++ = 0x90; break; \
+			/* xchg %ax,%ax */ \
+			case 2: *(inst)++ = 0x66; *(inst)++ = 0x90; \
+				break; \
+			/* nop (%rax) */ \
+			case 3: *(inst)++ = 0x0f; *(inst)++ = 0x1f; \
+				*(inst)++ = 0x00; \
+				break; \
+			/* nop 0x0(%rax) */ \
+			case 4: *(inst)++ = 0x0f; *(inst)++ = 0x1f; \
+				x86_address_byte ((inst), 1, 0, AMD64_RAX);	\
+				x86_imm_emit8 ((inst), 0);	\
+				break; \
+			/* nop 0x0(%rax,%rax) */ \
+			case 5: *(inst)++ = 0x0f; *(inst)++ = 0x1f; \
+				x86_address_byte ((inst), 1, 0, 4);	\
+				x86_address_byte ((inst), 0, AMD64_RAX, AMD64_RAX);	\
+				x86_imm_emit8 ((inst), 0);	\
+				break; \
+			/* nopw 0x0(%rax,%rax) */ \
+			case 6: *(inst)++ = 0x66; *(inst)++ = 0x0f; \
+				*(inst)++ = 0x1f; \
+				x86_address_byte ((inst), 1, 0, 4);	\
+				x86_address_byte ((inst), 0, AMD64_RAX, AMD64_RAX);	\
+				x86_imm_emit8 ((inst), 0);	\
+				break; \
+			/* nop 0x0(%rax) (32-bit displacement) */ \
+			case 7: *(inst)++ = 0x0f; *(inst)++ = 0x1f; \
+				x86_address_byte ((inst), 2, 0, AMD64_RAX);	\
+				x86_imm_emit32((inst), 0); \
+				break; \
+			/* nop 0x0(%rax,%rax) (32-bit displacement) */ \
+			case 8: *(inst)++ = 0x0f; *(inst)++ = 0x1f; \
+				x86_address_byte ((inst), 2, 0, 4);	\
+				x86_address_byte ((inst), 0, AMD64_RAX, AMD64_RAX);	\
+				x86_imm_emit32 ((inst), 0);	\
+				break; \
+			default: \
+				g_assert_not_reached(); \
+		} \
+		g_assert(code_start + (size) == (unsigned char *)(inst)); \
+	} while (0)
+
+
+/* Size is ignored for Native Client calls, we restrict jumping to 32-bits */
+#define amd64_call_membase_size(inst,basereg,disp,size)                   \
+  do {                                                                    \
+    amd64_codegen_pre((inst));                                            \
+    amd64_call_sequence_pre(inst);                                        \
+    amd64_mov_reg_membase((inst), AMD64_R11, (basereg), (disp), 4);       \
+    amd64_call_reg_internal((inst), AMD64_R11);                           \
+    amd64_call_sequence_post(inst);                                       \
+    amd64_codegen_post((inst));                                           \
+  } while (0)
+
+/* Size is ignored for Native Client jumps, we restrict jumping to 32-bits */
+#define amd64_jump_membase_size(inst,basereg,disp,size)                   \
+  do {                                                                    \
+    amd64_mov_reg_membase((inst), AMD64_R11, (basereg), (disp), 4);       \
+    amd64_jump_reg_size((inst), AMD64_R11, 4);                            \
+  } while (0)
+    
+/* On Native Client we can't jump more than INT_MAX in either direction */
+#define amd64_jump_code_size(inst,target,size)                            \
+  do {                                                                    \
+    /* x86_jump_code used twice in case of */                             \
+    /* relocation by amd64_codegen_post    */                             \
+    guint8* jump_start;                                                   \
+    amd64_codegen_pre(inst);                                              \
+    assert(amd64_is_imm32 ((gint64)(target) - (gint64)(inst)));           \
+    x86_jump_code((inst),(target));                                       \
+    inst = amd64_codegen_post(inst);                                      \
+    jump_start = (inst);                                                  \
+    x86_jump_code((inst),(target));                                       \
+    mono_amd64_patch(jump_start, (target));                               \
+} while (0)
+
+#endif /*__native_client_codegen__*/
+
 /*
  * SSE
  */
@@ -509,31 +923,39 @@ typedef union {
 /* Two opcode SSE defines */
 
 #define emit_sse_reg_reg_op2_size(inst,dreg,reg,op1,op2,size) do { \
+    amd64_codegen_pre(inst); \
     amd64_emit_rex ((inst), size, (dreg), 0, (reg)); \
     *(inst)++ = (unsigned char)(op1); \
     *(inst)++ = (unsigned char)(op2); \
     x86_reg_emit ((inst), (dreg), (reg)); \
+    amd64_codegen_post(inst); \
 } while (0)
 
 #define emit_sse_reg_reg_op2(inst,dreg,reg,op1,op2) emit_sse_reg_reg_op2_size ((inst), (dreg), (reg), (op1), (op2), 0)
 
 #define emit_sse_reg_reg_op2_imm(inst,dreg,reg,op1,op2,imm) do { \
+   amd64_codegen_pre(inst); \
    emit_sse_reg_reg_op2 ((inst), (dreg), (reg), (op1), (op2)); \
    x86_imm_emit8 ((inst), (imm)); \
+   amd64_codegen_post(inst); \
 } while (0)
 
 #define emit_sse_membase_reg_op2(inst,basereg,disp,reg,op1,op2) do { \
+    amd64_codegen_pre(inst); \
     amd64_emit_rex ((inst), 0, (reg), 0, (basereg)); \
     *(inst)++ = (unsigned char)(op1); \
     *(inst)++ = (unsigned char)(op2); \
     amd64_membase_emit ((inst), (reg), (basereg), (disp)); \
+    amd64_codegen_post(inst); \
 } while (0)
 
 #define emit_sse_reg_membase_op2(inst,dreg,basereg,disp,op1,op2) do { \
+    amd64_codegen_pre(inst); \
     amd64_emit_rex ((inst), 0, (dreg), 0, (basereg) == AMD64_RIP ? 0 : (basereg)); \
     *(inst)++ = (unsigned char)(op1); \
     *(inst)++ = (unsigned char)(op2); \
     amd64_membase_emit ((inst), (dreg), (basereg), (disp)); \
+    amd64_codegen_post(inst); \
 } while (0)
 
 /* Three opcode SSE defines */
@@ -545,45 +967,55 @@ typedef union {
 } while (0)
 
 #define emit_sse_reg_reg_size(inst,dreg,reg,op1,op2,op3,size) do { \
+    amd64_codegen_pre(inst); \
     *(inst)++ = (unsigned char)(op1); \
 	amd64_emit_rex ((inst), size, (dreg), 0, (reg)); \
     *(inst)++ = (unsigned char)(op2); \
     *(inst)++ = (unsigned char)(op3); \
     x86_reg_emit ((inst), (dreg), (reg)); \
+    amd64_codegen_post(inst); \
 } while (0)
 
 #define emit_sse_reg_reg(inst,dreg,reg,op1,op2,op3) emit_sse_reg_reg_size ((inst), (dreg), (reg), (op1), (op2), (op3), 0)
 
 #define emit_sse_reg_reg_imm(inst,dreg,reg,op1,op2,op3,imm) do { \
+   amd64_codegen_pre(inst); \
    emit_sse_reg_reg ((inst), (dreg), (reg), (op1), (op2), (op3)); \
    x86_imm_emit8 ((inst), (imm)); \
+   amd64_codegen_post(inst); \
 } while (0)
 
 #define emit_sse_membase_reg(inst,basereg,disp,reg,op1,op2,op3) do { \
-    *(inst)++ = (unsigned char)(op1); \
+    amd64_codegen_pre(inst); \
+    x86_prefix((inst), (unsigned char)(op1)); \
     amd64_emit_rex ((inst), 0, (reg), 0, (basereg)); \
     *(inst)++ = (unsigned char)(op2); \
     *(inst)++ = (unsigned char)(op3); \
     amd64_membase_emit ((inst), (reg), (basereg), (disp)); \
+    amd64_codegen_post(inst); \
 } while (0)
 
 #define emit_sse_reg_membase(inst,dreg,basereg,disp,op1,op2,op3) do { \
-    *(inst)++ = (unsigned char)(op1); \
+    amd64_codegen_pre(inst); \
+    x86_prefix((inst), (unsigned char)(op1)); \
     amd64_emit_rex ((inst), 0, (dreg), 0, (basereg) == AMD64_RIP ? 0 : (basereg)); \
     *(inst)++ = (unsigned char)(op2); \
     *(inst)++ = (unsigned char)(op3); \
     amd64_membase_emit ((inst), (dreg), (basereg), (disp)); \
+    amd64_codegen_post(inst); \
 } while (0)
 
 /* Four opcode SSE defines */
 
 #define emit_sse_reg_reg_op4_size(inst,dreg,reg,op1,op2,op3,op4,size) do { \
-    *(inst)++ = (unsigned char)(op1); \
-	amd64_emit_rex ((inst), size, (dreg), 0, (reg)); \
+    amd64_codegen_pre(inst); \
+    x86_prefix((inst), (unsigned char)(op1)); \
+    amd64_emit_rex ((inst), size, (dreg), 0, (reg)); \
     *(inst)++ = (unsigned char)(op2); \
     *(inst)++ = (unsigned char)(op3); \
     *(inst)++ = (unsigned char)(op4); \
     x86_reg_emit ((inst), (dreg), (reg)); \
+    amd64_codegen_post(inst); \
 } while (0)
 
 #define emit_sse_reg_reg_op4(inst,dreg,reg,op1,op2,op3,op4) emit_sse_reg_reg_op4_size ((inst), (dreg), (reg), (op1), (op2), (op3), (op4), 0)
@@ -690,6 +1122,10 @@ typedef union {
 
 #define amd64_sse_pshufd_reg_reg_imm(inst,dreg,reg,imm) emit_sse_reg_reg_imm((inst), (dreg), (reg), 0x66, 0x0f, 0x70, (imm))
 
+#define amd64_sse_shufps_reg_reg_imm(inst,dreg,reg,imm) emit_sse_reg_reg_op2_imm((inst), (dreg), (reg), 0x0f, 0xC6, (imm))
+
+#define amd64_sse_shufpd_reg_reg_imm(inst,dreg,reg,imm) emit_sse_reg_reg_imm((inst), (dreg), (reg), 0x66, 0x0f, 0xC6, (imm))
+
 
 #define amd64_sse_addpd_reg_reg(inst,dreg,reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0x58)
 
@@ -917,6 +1353,23 @@ typedef union {
 #define amd64_sse_psllq_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0f, 0xf3)
 
 
+#define amd64_sse_cvtdq2pd_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0xF3, 0x0F, 0xE6)
+
+#define amd64_sse_cvtdq2ps_reg_reg(inst, dreg, reg) emit_sse_reg_reg_op2((inst), (dreg), (reg), 0x0F, 0x5B)
+
+#define amd64_sse_cvtpd2dq_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0xF2, 0x0F, 0xE6)
+
+#define amd64_sse_cvtpd2ps_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0F, 0x5A)
+
+#define amd64_sse_cvtps2dq_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0F, 0x5B)
+
+#define amd64_sse_cvtps2pd_reg_reg(inst, dreg, reg) emit_sse_reg_reg_op2((inst), (dreg), (reg), 0x0F, 0x5A)
+
+#define amd64_sse_cvttpd2dq_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0x66, 0x0F, 0xE6)
+
+#define amd64_sse_cvttps2dq_reg_reg(inst, dreg, reg) emit_sse_reg_reg((inst), (dreg), (reg), 0xF3, 0x0F, 0x5B)
+
+
 #define amd64_movd_xreg_reg_size(inst,dreg,sreg,size) emit_sse_reg_reg_size((inst), (dreg), (sreg), 0x66, 0x0f, 0x6e, (size))
 
 #define amd64_movd_reg_xreg_size(inst,dreg,sreg,size) emit_sse_reg_reg_size((inst), (sreg), (dreg), 0x66, 0x0f, 0x7e, (size))
@@ -946,189 +1399,244 @@ typedef union {
 /* Generated from x86-codegen.h */
 
 #define amd64_breakpoint_size(inst,size) do { x86_breakpoint(inst); } while (0)
-#define amd64_cld_size(inst,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_cld(inst); } while (0)
-#define amd64_stosb_size(inst,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_stosb(inst); } while (0)
-#define amd64_stosl_size(inst,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_stosl(inst); } while (0)
-#define amd64_stosd_size(inst,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_stosd(inst); } while (0)
-#define amd64_movsb_size(inst,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_movsb(inst); } while (0)
-#define amd64_movsl_size(inst,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_movsl(inst); } while (0)
-#define amd64_movsd_size(inst,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_movsd(inst); } while (0)
-#define amd64_prefix_size(inst,p,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_prefix((inst), p); } while (0)
-#define amd64_rdtsc_size(inst,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_rdtsc(inst); } while (0)
-#define amd64_cmpxchg_reg_reg_size(inst,dreg,reg,size) do { amd64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_cmpxchg_reg_reg((inst),((dreg)&0x7),((reg)&0x7)); } while (0)
-#define amd64_cmpxchg_mem_reg_size(inst,mem,reg,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_cmpxchg_mem_reg((inst),(mem),((reg)&0x7)); } while (0)
-#define amd64_cmpxchg_membase_reg_size(inst,basereg,disp,reg,size) do { amd64_emit_rex ((inst),(size),(reg),0,(basereg)); x86_cmpxchg_membase_reg((inst),((basereg)&0x7),(disp),((reg)&0x7)); } while (0)
-#define amd64_xchg_reg_reg_size(inst,dreg,reg,size) do { amd64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_xchg_reg_reg((inst),((dreg)&0x7),((reg)&0x7),(size) == 8 ? 4 : (size)); } while (0)
-#define amd64_xchg_mem_reg_size(inst,mem,reg,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_xchg_mem_reg((inst),(mem),((reg)&0x7),(size) == 8 ? 4 : (size)); } while (0)
-#define amd64_xchg_membase_reg_size(inst,basereg,disp,reg,size) do { amd64_emit_rex ((inst),(size),(reg),0,(basereg)); x86_xchg_membase_reg((inst),((basereg)&0x7),(disp),((reg)&0x7),(size) == 8 ? 4 : (size)); } while (0)
-#define amd64_inc_mem_size(inst,mem,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_inc_mem((inst),(mem)); } while (0)
-#define amd64_inc_membase_size(inst,basereg,disp,size) do { amd64_emit_rex ((inst),(size),0,0,(basereg)); x86_inc_membase((inst),((basereg)&0x7),(disp)); } while (0)
-//#define amd64_inc_reg_size(inst,reg,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_inc_reg((inst),((reg)&0x7)); } while (0)
-#define amd64_dec_mem_size(inst,mem,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_dec_mem((inst),(mem)); } while (0)
-#define amd64_dec_membase_size(inst,basereg,disp,size) do { amd64_emit_rex ((inst),(size),0,0,(basereg)); x86_dec_membase((inst),((basereg)&0x7),(disp)); } while (0)
-//#define amd64_dec_reg_size(inst,reg,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_dec_reg((inst),((reg)&0x7)); } while (0)
-#define amd64_not_mem_size(inst,mem,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_not_mem((inst),(mem)); } while (0)
-#define amd64_not_membase_size(inst,basereg,disp,size) do { amd64_emit_rex ((inst),(size),0,0,(basereg)); x86_not_membase((inst),((basereg)&0x7),(disp)); } while (0)
-#define amd64_not_reg_size(inst,reg,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_not_reg((inst),((reg)&0x7)); } while (0)
-#define amd64_neg_mem_size(inst,mem,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_neg_mem((inst),(mem)); } while (0)
-#define amd64_neg_membase_size(inst,basereg,disp,size) do { amd64_emit_rex ((inst),(size),0,0,(basereg)); x86_neg_membase((inst),((basereg)&0x7),(disp)); } while (0)
-#define amd64_neg_reg_size(inst,reg,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_neg_reg((inst),((reg)&0x7)); } while (0)
-#define amd64_nop_size(inst,size) do { x86_nop(inst); } while (0)
-//#define amd64_alu_reg_imm_size(inst,opc,reg,imm,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_alu_reg_imm((inst),(opc),((reg)&0x7),(imm)); } while (0)
-#define amd64_alu_mem_imm_size(inst,opc,mem,imm,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_alu_mem_imm((inst),(opc),(mem),(imm)); } while (0)
-#define amd64_alu_membase_imm_size(inst,opc,basereg,disp,imm,size) do { amd64_emit_rex ((inst),(size),0,0,(basereg)); x86_alu_membase_imm((inst),(opc),((basereg)&0x7),(disp),(imm)); } while (0)
-#define amd64_alu_membase8_imm_size(inst,opc,basereg,disp,imm,size) do { amd64_emit_rex ((inst),(size),0,0,(basereg)); x86_alu_membase8_imm((inst),(opc),((basereg)&0x7),(disp),(imm)); } while (0)	
-#define amd64_alu_mem_reg_size(inst,opc,mem,reg,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_alu_mem_reg((inst),(opc),(mem),((reg)&0x7)); } while (0)
-#define amd64_alu_membase_reg_size(inst,opc,basereg,disp,reg,size) do { amd64_emit_rex ((inst),(size),(reg),0,(basereg)); x86_alu_membase_reg((inst),(opc),((basereg)&0x7),(disp),((reg)&0x7)); } while (0)
-//#define amd64_alu_reg_reg_size(inst,opc,dreg,reg,size) do { amd64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_alu_reg_reg((inst),(opc),((dreg)&0x7),((reg)&0x7)); } while (0)
-#define amd64_alu_reg8_reg8_size(inst,opc,dreg,reg,is_dreg_h,is_reg_h,size) do { amd64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_alu_reg8_reg8((inst),(opc),((dreg)&0x7),((reg)&0x7),(is_dreg_h),(is_reg_h)); } while (0)
-#define amd64_alu_reg_mem_size(inst,opc,reg,mem,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_alu_reg_mem((inst),(opc),((reg)&0x7),(mem)); } while (0)
-#define amd64_alu_reg_membase_size(inst,opc,reg,basereg,disp,size) do { amd64_emit_rex ((inst),(size),(reg),0,(basereg)); x86_alu_reg_membase((inst),(opc),((reg)&0x7),((basereg)&0x7),(disp)); } while (0)
-#define amd64_test_reg_imm_size(inst,reg,imm,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_test_reg_imm((inst),((reg)&0x7),(imm)); } while (0)
-#define amd64_test_mem_imm_size(inst,mem,imm,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_test_mem_imm((inst),(mem),(imm)); } while (0)
-#define amd64_test_membase_imm_size(inst,basereg,disp,imm,size) do { amd64_emit_rex ((inst),(size),0,0,(basereg)); x86_test_membase_imm((inst),((basereg)&0x7),(disp),(imm)); } while (0)
-#define amd64_test_reg_reg_size(inst,dreg,reg,size) do { amd64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_test_reg_reg((inst),((dreg)&0x7),((reg)&0x7)); } while (0)
-#define amd64_test_mem_reg_size(inst,mem,reg,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_test_mem_reg((inst),(mem),((reg)&0x7)); } while (0)
-#define amd64_test_membase_reg_size(inst,basereg,disp,reg,size) do { amd64_emit_rex ((inst),(size),(reg),0,(basereg)); x86_test_membase_reg((inst),((basereg)&0x7),(disp),((reg)&0x7)); } while (0)
-#define amd64_shift_reg_imm_size(inst,opc,reg,imm,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_shift_reg_imm((inst),(opc),((reg)&0x7),(imm)); } while (0)
-#define amd64_shift_mem_imm_size(inst,opc,mem,imm,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_shift_mem_imm((inst),(opc),(mem),(imm)); } while (0)
-#define amd64_shift_membase_imm_size(inst,opc,basereg,disp,imm,size) do { amd64_emit_rex ((inst),(size),(reg),0,(basereg)); x86_shift_membase_imm((inst),(opc),((basereg)&0x7),(disp),(imm)); } while (0)
-#define amd64_shift_reg_size(inst,opc,reg,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_shift_reg((inst),(opc),((reg)&0x7)); } while (0)
-#define amd64_shift_mem_size(inst,opc,mem,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_shift_mem((inst),(opc),(mem)); } while (0)
-#define amd64_shift_membase_size(inst,opc,basereg,disp,size) do { amd64_emit_rex ((inst),(size),0,0,(basereg)); x86_shift_membase((inst),(opc),((basereg)&0x7),(disp)); } while (0)
-#define amd64_shrd_reg_size(inst,dreg,reg,size) do { amd64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_shrd_reg((inst),((dreg)&0x7),((reg)&0x7)); } while (0)
-#define amd64_shrd_reg_imm_size(inst,dreg,reg,shamt,size) do { amd64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_shrd_reg_imm((inst),((dreg)&0x7),((reg)&0x7),(shamt)); } while (0)
-#define amd64_shld_reg_size(inst,dreg,reg,size) do { amd64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_shld_reg((inst),((dreg)&0x7),((reg)&0x7)); } while (0)
-#define amd64_shld_reg_imm_size(inst,dreg,reg,shamt,size) do { amd64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_shld_reg_imm((inst),((dreg)&0x7),((reg)&0x7),(shamt)); } while (0)
-#define amd64_mul_reg_size(inst,reg,is_signed,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_mul_reg((inst),((reg)&0x7),(is_signed)); } while (0)
-#define amd64_mul_mem_size(inst,mem,is_signed,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_mul_mem((inst),(mem),(is_signed)); } while (0)
-#define amd64_mul_membase_size(inst,basereg,disp,is_signed,size) do { amd64_emit_rex ((inst),(size),0,0,(basereg)); x86_mul_membase((inst),((basereg)&0x7),(disp),(is_signed)); } while (0)
-#define amd64_imul_reg_reg_size(inst,dreg,reg,size) do { amd64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_imul_reg_reg((inst),((dreg)&0x7),((reg)&0x7)); } while (0)
-#define amd64_imul_reg_mem_size(inst,reg,mem,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_imul_reg_mem((inst),((reg)&0x7),(mem)); } while (0)
-#define amd64_imul_reg_membase_size(inst,reg,basereg,disp,size) do { amd64_emit_rex ((inst),(size),(reg),0,(basereg)); x86_imul_reg_membase((inst),((reg)&0x7),((basereg)&0x7),(disp)); } while (0)
-#define amd64_imul_reg_reg_imm_size(inst,dreg,reg,imm,size) do { amd64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_imul_reg_reg_imm((inst),((dreg)&0x7),((reg)&0x7),(imm)); } while (0)
-#define amd64_imul_reg_mem_imm_size(inst,reg,mem,imm,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_imul_reg_mem_imm((inst),((reg)&0x7),(mem),(imm)); } while (0)
-#define amd64_imul_reg_membase_imm_size(inst,reg,basereg,disp,imm,size) do { amd64_emit_rex ((inst),(size),(reg),0,(basereg)); x86_imul_reg_membase_imm((inst),((reg)&0x7),((basereg)&0x7),(disp),(imm)); } while (0)
-#define amd64_div_reg_size(inst,reg,is_signed,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_div_reg((inst),((reg)&0x7),(is_signed)); } while (0)
-#define amd64_div_mem_size(inst,mem,is_signed,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_div_mem((inst),(mem),(is_signed)); } while (0)
-#define amd64_div_membase_size(inst,basereg,disp,is_signed,size) do { amd64_emit_rex ((inst),(size),0,0,(basereg)); x86_div_membase((inst),((basereg)&0x7),(disp),(is_signed)); } while (0)
-#define amd64_mov_mem_reg_size(inst,mem,reg,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_mov_mem_reg((inst),(mem),((reg)&0x7),(size) == 8 ? 4 : (size)); } while (0)
-//#define amd64_mov_regp_reg_size(inst,regp,reg,size) do { amd64_emit_rex ((inst),(size),(regp),0,(reg)); x86_mov_regp_reg((inst),(regp),((reg)&0x7),(size) == 8 ? 4 : (size)); } while (0)
-//#define amd64_mov_membase_reg_size(inst,basereg,disp,reg,size) do { amd64_emit_rex ((inst),(size),(reg),0,(basereg)); x86_mov_membase_reg((inst),((basereg)&0x7),(disp),((reg)&0x7),(size) == 8 ? 4 : (size)); } while (0)
-#define amd64_mov_memindex_reg_size(inst,basereg,disp,indexreg,shift,reg,size) do { amd64_emit_rex ((inst),(size),(reg),(indexreg),(basereg)); x86_mov_memindex_reg((inst),((basereg)&0x7),(disp),((indexreg)&0x7),(shift),((reg)&0x7),(size) == 8 ? 4 : (size)); } while (0)
-#define amd64_mov_reg_reg_size(inst,dreg,reg,size) do { amd64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_mov_reg_reg((inst),((dreg)&0x7),((reg)&0x7),(size) == 8 ? 4 : (size)); } while (0)
-//#define amd64_mov_reg_mem_size(inst,reg,mem,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_mov_reg_mem((inst),((reg)&0x7),(mem),(size) == 8 ? 4 : (size)); } while (0)
-//#define amd64_mov_reg_membase_size(inst,reg,basereg,disp,size) do { amd64_emit_rex ((inst),(size),(reg),0,(basereg)); x86_mov_reg_membase((inst),((reg)&0x7),((basereg)&0x7),(disp),(size) == 8 ? 4 : (size)); } while (0)
-#define amd64_mov_reg_memindex_size(inst,reg,basereg,disp,indexreg,shift,size) do { amd64_emit_rex ((inst),(size),(reg),(indexreg),(basereg)); x86_mov_reg_memindex((inst),((reg)&0x7),((basereg)&0x7),(disp),((indexreg)&0x7),(shift),(size) == 8 ? 4 : (size)); } while (0)
-#define amd64_clear_reg_size(inst,reg,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_clear_reg((inst),((reg)&0x7)); } while (0)
-//#define amd64_mov_reg_imm_size(inst,reg,imm,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_mov_reg_imm((inst),((reg)&0x7),(imm)); } while (0)
-#define amd64_mov_mem_imm_size(inst,mem,imm,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_mov_mem_imm((inst),(mem),(imm),(size) == 8 ? 4 : (size)); } while (0)
-//#define amd64_mov_membase_imm_size(inst,basereg,disp,imm,size) do { amd64_emit_rex ((inst),(size),0,0,(basereg)); x86_mov_membase_imm((inst),((basereg)&0x7),(disp),(imm),(size) == 8 ? 4 : (size)); } while (0)
-#define amd64_mov_memindex_imm_size(inst,basereg,disp,indexreg,shift,imm,size) do { amd64_emit_rex ((inst),(size),0,(indexreg),(basereg)); x86_mov_memindex_imm((inst),((basereg)&0x7),(disp),((indexreg)&0x7),(shift),(imm),(size) == 8 ? 4 : (size)); } while (0)
-#define amd64_lea_mem_size(inst,reg,mem,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_lea_mem((inst),((reg)&0x7),(mem)); } while (0)
-//#define amd64_lea_membase_size(inst,reg,basereg,disp,size) do { amd64_emit_rex ((inst),(size),0,0,(basereg)); x86_lea_membase((inst),((reg)&0x7),((basereg)&0x7),(disp)); } while (0)
-#define amd64_lea_memindex_size(inst,reg,basereg,disp,indexreg,shift,size) do { amd64_emit_rex ((inst),(size),(reg),(indexreg),(basereg)); x86_lea_memindex((inst),((reg)&0x7),((basereg)&0x7),(disp),((indexreg)&0x7),(shift)); } while (0)
-#define amd64_widen_reg_size(inst,dreg,reg,is_signed,is_half,size) do { amd64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_widen_reg((inst),((dreg)&0x7),((reg)&0x7),(is_signed),(is_half)); } while (0)
-#define amd64_widen_mem_size(inst,dreg,mem,is_signed,is_half,size) do { amd64_emit_rex ((inst),(size),(dreg),0,0); x86_widen_mem((inst),((dreg)&0x7),(mem),(is_signed),(is_half)); } while (0)
-#define amd64_widen_membase_size(inst,dreg,basereg,disp,is_signed,is_half,size) do { amd64_emit_rex ((inst),(size),(dreg),0,(basereg)); x86_widen_membase((inst),((dreg)&0x7),((basereg)&0x7),(disp),(is_signed),(is_half)); } while (0)
-#define amd64_widen_memindex_size(inst,dreg,basereg,disp,indexreg,shift,is_signed,is_half,size) do { amd64_emit_rex ((inst),(size),(dreg),(indexreg),(basereg)); x86_widen_memindex((inst),((dreg)&0x7),((basereg)&0x7),(disp),((indexreg)&0x7),(shift),(is_signed),(is_half)); } while (0)
-#define amd64_cdq_size(inst,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_cdq(inst); } while (0)
-#define amd64_wait_size(inst,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_wait(inst); } while (0)
-#define amd64_fp_op_mem_size(inst,opc,mem,is_double,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_fp_op_mem((inst),(opc),(mem),(is_double)); } while (0)
-#define amd64_fp_op_membase_size(inst,opc,basereg,disp,is_double,size) do { amd64_emit_rex ((inst),0,0,0,(basereg)); x86_fp_op_membase((inst),(opc),((basereg)&0x7),(disp),(is_double)); } while (0)
-#define amd64_fp_op_size(inst,opc,index,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_fp_op((inst),(opc),(index)); } while (0)
-#define amd64_fp_op_reg_size(inst,opc,index,pop_stack,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_fp_op_reg((inst),(opc),(index),(pop_stack)); } while (0)
-#define amd64_fp_int_op_membase_size(inst,opc,basereg,disp,is_int,size) do { amd64_emit_rex ((inst),0,0,0,(basereg)); x86_fp_int_op_membase((inst),(opc),((basereg)&0x7),(disp),(is_int)); } while (0)
-#define amd64_fstp_size(inst,index,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_fstp((inst),(index)); } while (0)
-#define amd64_fcompp_size(inst,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_fcompp(inst); } while (0)
-#define amd64_fucompp_size(inst,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_fucompp(inst); } while (0)
-#define amd64_fnstsw_size(inst,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_fnstsw(inst); } while (0)
-#define amd64_fnstcw_size(inst,mem,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_fnstcw((inst),(mem)); } while (0)
-#define amd64_fnstcw_membase_size(inst,basereg,disp,size) do { amd64_emit_rex ((inst),(size),0,0,(basereg)); x86_fnstcw_membase((inst),((basereg)&0x7),(disp)); } while (0)
-#define amd64_fldcw_size(inst,mem,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_fldcw((inst),(mem)); } while (0)
-#define amd64_fldcw_membase_size(inst,basereg,disp,size) do { amd64_emit_rex ((inst),0,0,0,(basereg)); x86_fldcw_membase((inst),((basereg)&0x7),(disp)); } while (0)
-#define amd64_fchs_size(inst,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_fchs(inst); } while (0)
-#define amd64_frem_size(inst,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_frem(inst); } while (0)
-#define amd64_fxch_size(inst,index,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_fxch((inst),(index)); } while (0)
-#define amd64_fcomi_size(inst,index,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_fcomi((inst),(index)); } while (0)
-#define amd64_fcomip_size(inst,index,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_fcomip((inst),(index)); } while (0)
-#define amd64_fucomi_size(inst,index,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_fucomi((inst),(index)); } while (0)
-#define amd64_fucomip_size(inst,index,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_fucomip((inst),(index)); } while (0)
-#define amd64_fld_size(inst,mem,is_double,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_fld((inst),(mem),(is_double)); } while (0)
-//#define amd64_fld_membase_size(inst,basereg,disp,is_double,size) do { amd64_emit_rex ((inst),0,0,0,(basereg)); x86_fld_membase((inst),((basereg)&0x7),(disp),(is_double)); } while (0)
-#define amd64_fld80_mem_size(inst,mem,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_fld80_mem((inst),(mem)); } while (0)
-#define amd64_fld80_membase_size(inst,basereg,disp,size) do { amd64_emit_rex ((inst),(size),0,0,(basereg)); x86_fld80_membase((inst),((basereg)&0x7),(disp)); } while (0)
-#define amd64_fild_size(inst,mem,is_long,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_fild((inst),(mem),(is_long)); } while (0)
-#define amd64_fild_membase_size(inst,basereg,disp,is_long,size) do { amd64_emit_rex ((inst),0,0,0,(basereg)); x86_fild_membase((inst),((basereg)&0x7),(disp),(is_long)); } while (0)
-#define amd64_fld_reg_size(inst,index,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_fld_reg((inst),(index)); } while (0)
-#define amd64_fldz_size(inst,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_fldz(inst); } while (0)
-#define amd64_fld1_size(inst,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_fld1(inst); } while (0)
-#define amd64_fldpi_size(inst,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_fldpi(inst); } while (0)
-#define amd64_fst_size(inst,mem,is_double,pop_stack,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_fst((inst),(mem),(is_double),(pop_stack)); } while (0)
-#define amd64_fst_membase_size(inst,basereg,disp,is_double,pop_stack,size) do { amd64_emit_rex ((inst),0,0,0,(basereg)); x86_fst_membase((inst),((basereg)&0x7),(disp),(is_double),(pop_stack)); } while (0)
-#define amd64_fst80_mem_size(inst,mem,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_fst80_mem((inst),(mem)); } while (0)
-#define amd64_fst80_membase_size(inst,basereg,disp,size) do { amd64_emit_rex ((inst),0,0,0,(basereg)); x86_fst80_membase((inst),((basereg)&0x7),(disp)); } while (0)
-#define amd64_fist_pop_size(inst,mem,is_long,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_fist_pop((inst),(mem),(is_long)); } while (0)
-#define amd64_fist_pop_membase_size(inst,basereg,disp,is_long,size) do { amd64_emit_rex ((inst),0,0,0,(basereg)); x86_fist_pop_membase((inst),((basereg)&0x7),(disp),(is_long)); } while (0)
-#define amd64_fstsw_size(inst,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_fstsw(inst); } while (0)
-#define amd64_fist_membase_size(inst,basereg,disp,is_int,size) do { amd64_emit_rex ((inst),0,0,0,(basereg)); x86_fist_membase((inst),((basereg)&0x7),(disp),(is_int)); } while (0)
-//#define amd64_push_reg_size(inst,reg,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_push_reg((inst),((reg)&0x7)); } while (0)
-#define amd64_push_regp_size(inst,reg,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_push_regp((inst),((reg)&0x7)); } while (0)
-#define amd64_push_mem_size(inst,mem,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_push_mem((inst),(mem)); } while (0)
-//#define amd64_push_membase_size(inst,basereg,disp,size) do { amd64_emit_rex ((inst),(size),0,0,(basereg)); x86_push_membase((inst),((basereg)&0x7),(disp)); } while (0)
-#define amd64_push_memindex_size(inst,basereg,disp,indexreg,shift,size) do { amd64_emit_rex ((inst),(size),0,(indexreg),(basereg)); x86_push_memindex((inst),((basereg)&0x7),(disp),((indexreg)&0x7),(shift)); } while (0)
-#define amd64_push_imm_size(inst,imm,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_push_imm((inst),(imm)); } while (0)
-//#define amd64_pop_reg_size(inst,reg,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_pop_reg((inst),((reg)&0x7)); } while (0)
-#define amd64_pop_mem_size(inst,mem,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_pop_mem((inst),(mem)); } while (0)
-#define amd64_pop_membase_size(inst,basereg,disp,size) do { amd64_emit_rex ((inst),(size),0,0,(basereg)); x86_pop_membase((inst),((basereg)&0x7),(disp)); } while (0)
-#define amd64_pushad_size(inst,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_pushad(inst); } while (0)
-#define amd64_pushfd_size(inst,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_pushfd(inst); } while (0)
-#define amd64_popad_size(inst,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_popad(inst); } while (0)
-#define amd64_popfd_size(inst,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_popfd(inst); } while (0)
-#define amd64_loop_size(inst,imm,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_loop((inst),(imm)); } while (0)
-#define amd64_loope_size(inst,imm,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_loope((inst),(imm)); } while (0)
-#define amd64_loopne_size(inst,imm,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_loopne((inst),(imm)); } while (0)
-#define amd64_jump32_size(inst,imm,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_jump32((inst),(imm)); } while (0)
-#define amd64_jump8_size(inst,imm,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_jump8((inst),(imm)); } while (0)
+#define amd64_cld_size(inst,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),0,0,0,0); x86_cld(inst); amd64_codegen_post(inst); } while (0)
+#define amd64_stosb_size(inst,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,0); x86_stosb(inst); amd64_codegen_post(inst); } while (0)
+#define amd64_stosl_size(inst,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,0); x86_stosl(inst); amd64_codegen_post(inst); } while (0)
+#define amd64_stosd_size(inst,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,0); x86_stosd(inst); amd64_codegen_post(inst); } while (0)
+#define amd64_movsb_size(inst,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,0); x86_movsb(inst); amd64_codegen_post(inst); } while (0)
+#define amd64_movsl_size(inst,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,0); x86_movsl(inst); amd64_codegen_post(inst); } while (0)
+#define amd64_movsd_size(inst,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,0); x86_movsd(inst); amd64_codegen_post(inst); } while (0)
+#define amd64_prefix_size(inst,p,size) do { x86_prefix((inst), p); } while (0)
+#define amd64_rdtsc_size(inst,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,0); x86_rdtsc(inst); amd64_codegen_post(inst); } while (0)
+#define amd64_cmpxchg_reg_reg_size(inst,dreg,reg,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_cmpxchg_reg_reg((inst),((dreg)&0x7),((reg)&0x7)); amd64_codegen_post(inst); } while (0)
+#define amd64_cmpxchg_mem_reg_size(inst,mem,reg,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,(reg)); x86_cmpxchg_mem_reg((inst),(mem),((reg)&0x7)); amd64_codegen_post(inst); } while (0)
+#define amd64_cmpxchg_membase_reg_size(inst,basereg,disp,reg,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),(reg),0,(basereg)); x86_cmpxchg_membase_reg((inst),((basereg)&0x7),(disp),((reg)&0x7)); amd64_codegen_post(inst); } while (0)
+#define amd64_xchg_reg_reg_size(inst,dreg,reg,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_xchg_reg_reg((inst),((dreg)&0x7),((reg)&0x7),(size) == 8 ? 4 : (size)); amd64_codegen_post(inst); } while (0)
+#define amd64_xchg_mem_reg_size(inst,mem,reg,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,(reg)); x86_xchg_mem_reg((inst),(mem),((reg)&0x7),(size) == 8 ? 4 : (size)); amd64_codegen_post(inst); } while (0)
+#define amd64_xchg_membase_reg_size(inst,basereg,disp,reg,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),(reg),0,(basereg)); x86_xchg_membase_reg((inst),((basereg)&0x7),(disp),((reg)&0x7),(size) == 8 ? 4 : (size)); amd64_codegen_post(inst); } while (0)
+#define amd64_inc_mem_size(inst,mem,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,0); x86_inc_mem((inst),(mem)); amd64_codegen_post(inst); } while (0)
+#define amd64_inc_membase_size(inst,basereg,disp,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,(basereg)); x86_inc_membase((inst),((basereg)&0x7),(disp)); amd64_codegen_post(inst); } while (0)
+//#define amd64_inc_reg_size(inst,reg,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,(reg)); x86_inc_reg((inst),((reg)&0x7)); amd64_codegen_post(inst); } while (0)
+#define amd64_dec_mem_size(inst,mem,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,0); x86_dec_mem((inst),(mem)); amd64_codegen_post(inst); } while (0)
+#define amd64_dec_membase_size(inst,basereg,disp,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,(basereg)); x86_dec_membase((inst),((basereg)&0x7),(disp)); amd64_codegen_post(inst); } while (0)
+//#define amd64_dec_reg_size(inst,reg,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,(reg)); x86_dec_reg((inst),((reg)&0x7)); amd64_codegen_post(inst); } while (0)
+#define amd64_not_mem_size(inst,mem,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,0); x86_not_mem((inst),(mem)); amd64_codegen_post(inst); } while (0)
+#define amd64_not_membase_size(inst,basereg,disp,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,(basereg)); x86_not_membase((inst),((basereg)&0x7),(disp)); amd64_codegen_post(inst); } while (0)
+#define amd64_not_reg_size(inst,reg,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,(reg)); x86_not_reg((inst),((reg)&0x7)); amd64_codegen_post(inst); } while (0)
+#define amd64_neg_mem_size(inst,mem,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,0); x86_neg_mem((inst),(mem)); amd64_codegen_post(inst); } while (0)
+#define amd64_neg_membase_size(inst,basereg,disp,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,(basereg)); x86_neg_membase((inst),((basereg)&0x7),(disp)); amd64_codegen_post(inst); } while (0)
+#define amd64_neg_reg_size(inst,reg,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,(reg)); x86_neg_reg((inst),((reg)&0x7)); amd64_codegen_post(inst); } while (0)
+#define amd64_nop_size(inst,size) do { amd64_codegen_pre(inst); x86_nop(inst); amd64_codegen_post(inst); } while (0)
+//#define amd64_alu_reg_imm_size(inst,opc,reg,imm,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,(reg)); x86_alu_reg_imm((inst),(opc),((reg)&0x7),(imm)); amd64_codegen_post(inst); } while (0)
+#define amd64_alu_mem_imm_size(inst,opc,mem,imm,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,0); x86_alu_mem_imm((inst),(opc),(mem),(imm)); amd64_codegen_post(inst); } while (0)
+#define amd64_alu_membase_imm_size(inst,opc,basereg,disp,imm,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,(basereg)); x86_alu_membase_imm((inst),(opc),((basereg)&0x7),(disp),(imm)); amd64_codegen_post(inst); } while (0)
+#define amd64_alu_membase8_imm_size(inst,opc,basereg,disp,imm,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,(basereg)); x86_alu_membase8_imm((inst),(opc),((basereg)&0x7),(disp),(imm)); amd64_codegen_post(inst); } while (0)	
+#define amd64_alu_mem_reg_size(inst,opc,mem,reg,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,(reg)); x86_alu_mem_reg((inst),(opc),(mem),((reg)&0x7)); amd64_codegen_post(inst); } while (0)
+#define amd64_alu_membase_reg_size(inst,opc,basereg,disp,reg,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),(reg),0,(basereg)); x86_alu_membase_reg((inst),(opc),((basereg)&0x7),(disp),((reg)&0x7)); amd64_codegen_post(inst); } while (0)
+//#define amd64_alu_reg_reg_size(inst,opc,dreg,reg,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_alu_reg_reg((inst),(opc),((dreg)&0x7),((reg)&0x7)); amd64_codegen_post(inst); } while (0)
+#define amd64_alu_reg8_reg8_size(inst,opc,dreg,reg,is_dreg_h,is_reg_h,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_alu_reg8_reg8((inst),(opc),((dreg)&0x7),((reg)&0x7),(is_dreg_h),(is_reg_h)); amd64_codegen_post(inst); } while (0)
+#define amd64_alu_reg_mem_size(inst,opc,reg,mem,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,(reg)); x86_alu_reg_mem((inst),(opc),((reg)&0x7),(mem)); amd64_codegen_post(inst); } while (0)
+//#define amd64_alu_reg_membase_size(inst,opc,reg,basereg,disp,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),(reg),0,(basereg)); x86_alu_reg_membase((inst),(opc),((reg)&0x7),((basereg)&0x7),(disp)); amd64_codegen_post(inst); } while (0)
+#define amd64_test_reg_imm_size(inst,reg,imm,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,(reg)); x86_test_reg_imm((inst),((reg)&0x7),(imm)); amd64_codegen_post(inst); } while (0)
+#define amd64_test_mem_imm_size(inst,mem,imm,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,0); x86_test_mem_imm((inst),(mem),(imm)); amd64_codegen_post(inst); } while (0)
+#define amd64_test_membase_imm_size(inst,basereg,disp,imm,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,(basereg)); x86_test_membase_imm((inst),((basereg)&0x7),(disp),(imm)); amd64_codegen_post(inst); } while (0)
+#define amd64_test_reg_reg_size(inst,dreg,reg,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_test_reg_reg((inst),((dreg)&0x7),((reg)&0x7)); amd64_codegen_post(inst); } while (0)
+#define amd64_test_mem_reg_size(inst,mem,reg,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,(reg)); x86_test_mem_reg((inst),(mem),((reg)&0x7)); amd64_codegen_post(inst); } while (0)
+#define amd64_test_membase_reg_size(inst,basereg,disp,reg,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),(reg),0,(basereg)); x86_test_membase_reg((inst),((basereg)&0x7),(disp),((reg)&0x7)); amd64_codegen_post(inst); } while (0)
+#define amd64_shift_reg_imm_size(inst,opc,reg,imm,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,(reg)); x86_shift_reg_imm((inst),(opc),((reg)&0x7),(imm)); amd64_codegen_post(inst); } while (0)
+#define amd64_shift_mem_imm_size(inst,opc,mem,imm,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,(reg)); x86_shift_mem_imm((inst),(opc),(mem),(imm)); amd64_codegen_post(inst); } while (0)
+#define amd64_shift_membase_imm_size(inst,opc,basereg,disp,imm,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),(reg),0,(basereg)); x86_shift_membase_imm((inst),(opc),((basereg)&0x7),(disp),(imm)); amd64_codegen_post(inst); } while (0)
+#define amd64_shift_reg_size(inst,opc,reg,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,(reg)); x86_shift_reg((inst),(opc),((reg)&0x7)); amd64_codegen_post(inst); } while (0)
+#define amd64_shift_mem_size(inst,opc,mem,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,(reg)); x86_shift_mem((inst),(opc),(mem)); amd64_codegen_post(inst); } while (0)
+#define amd64_shift_membase_size(inst,opc,basereg,disp,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,(basereg)); x86_shift_membase((inst),(opc),((basereg)&0x7),(disp)); amd64_codegen_post(inst); } while (0)
+#define amd64_shrd_reg_size(inst,dreg,reg,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_shrd_reg((inst),((dreg)&0x7),((reg)&0x7)); amd64_codegen_post(inst); } while (0)
+#define amd64_shrd_reg_imm_size(inst,dreg,reg,shamt,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_shrd_reg_imm((inst),((dreg)&0x7),((reg)&0x7),(shamt)); amd64_codegen_post(inst); } while (0)
+#define amd64_shld_reg_size(inst,dreg,reg,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_shld_reg((inst),((dreg)&0x7),((reg)&0x7)); amd64_codegen_post(inst); } while (0)
+#define amd64_shld_reg_imm_size(inst,dreg,reg,shamt,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_shld_reg_imm((inst),((dreg)&0x7),((reg)&0x7),(shamt)); amd64_codegen_post(inst); } while (0)
+#define amd64_mul_reg_size(inst,reg,is_signed,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,(reg)); x86_mul_reg((inst),((reg)&0x7),(is_signed)); amd64_codegen_post(inst); } while (0)
+#define amd64_mul_mem_size(inst,mem,is_signed,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,0); x86_mul_mem((inst),(mem),(is_signed)); amd64_codegen_post(inst); } while (0)
+#define amd64_mul_membase_size(inst,basereg,disp,is_signed,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,(basereg)); x86_mul_membase((inst),((basereg)&0x7),(disp),(is_signed)); amd64_codegen_post(inst); } while (0)
+#define amd64_imul_reg_reg_size(inst,dreg,reg,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_imul_reg_reg((inst),((dreg)&0x7),((reg)&0x7)); amd64_codegen_post(inst); } while (0)
+#define amd64_imul_reg_mem_size(inst,reg,mem,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,(reg)); x86_imul_reg_mem((inst),((reg)&0x7),(mem)); amd64_codegen_post(inst); } while (0)
+#define amd64_imul_reg_membase_size(inst,reg,basereg,disp,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),(reg),0,(basereg)); x86_imul_reg_membase((inst),((reg)&0x7),((basereg)&0x7),(disp)); amd64_codegen_post(inst); } while (0)
+#define amd64_imul_reg_reg_imm_size(inst,dreg,reg,imm,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_imul_reg_reg_imm((inst),((dreg)&0x7),((reg)&0x7),(imm)); amd64_codegen_post(inst); } while (0)
+#define amd64_imul_reg_mem_imm_size(inst,reg,mem,imm,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,(reg)); x86_imul_reg_mem_imm((inst),((reg)&0x7),(mem),(imm)); amd64_codegen_post(inst); } while (0)
+#define amd64_imul_reg_membase_imm_size(inst,reg,basereg,disp,imm,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),(reg),0,(basereg)); x86_imul_reg_membase_imm((inst),((reg)&0x7),((basereg)&0x7),(disp),(imm)); amd64_codegen_post(inst); } while (0)
+#define amd64_div_reg_size(inst,reg,is_signed,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,(reg)); x86_div_reg((inst),((reg)&0x7),(is_signed)); amd64_codegen_post(inst); } while (0)
+#define amd64_div_mem_size(inst,mem,is_signed,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,0); x86_div_mem((inst),(mem),(is_signed)); amd64_codegen_post(inst); } while (0)
+#define amd64_div_membase_size(inst,basereg,disp,is_signed,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,(basereg)); x86_div_membase((inst),((basereg)&0x7),(disp),(is_signed)); amd64_codegen_post(inst); } while (0)
+#define amd64_mov_mem_reg_size(inst,mem,reg,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,(reg)); x86_mov_mem_reg((inst),(mem),((reg)&0x7),(size) == 8 ? 4 : (size)); amd64_codegen_post(inst); } while (0)
+//#define amd64_mov_regp_reg_size(inst,regp,reg,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),(regp),0,(reg)); x86_mov_regp_reg((inst),(regp),((reg)&0x7),(size) == 8 ? 4 : (size)); amd64_codegen_post(inst); } while (0)
+//#define amd64_mov_membase_reg_size(inst,basereg,disp,reg,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),(reg),0,(basereg)); x86_mov_membase_reg((inst),((basereg)&0x7),(disp),((reg)&0x7),(size) == 8 ? 4 : (size)); amd64_codegen_post(inst); } while (0)
+#define amd64_mov_memindex_reg_size(inst,basereg,disp,indexreg,shift,reg,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),(reg),(indexreg),(basereg)); x86_mov_memindex_reg((inst),((basereg)&0x7),(disp),((indexreg)&0x7),(shift),((reg)&0x7),(size) == 8 ? 4 : (size)); amd64_codegen_post(inst); } while (0)
+#define amd64_mov_reg_reg_size(inst,dreg,reg,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_mov_reg_reg((inst),((dreg)&0x7),((reg)&0x7),(size) == 8 ? 4 : (size)); amd64_codegen_post(inst); } while (0)
+//#define amd64_mov_reg_mem_size(inst,reg,mem,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,(reg)); x86_mov_reg_mem((inst),((reg)&0x7),(mem),(size) == 8 ? 4 : (size)); amd64_codegen_post(inst); } while (0)
+//#define amd64_mov_reg_membase_size(inst,reg,basereg,disp,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),(reg),0,(basereg)); x86_mov_reg_membase((inst),((reg)&0x7),((basereg)&0x7),(disp),(size) == 8 ? 4 : (size)); amd64_codegen_post(inst); } while (0)
+//#define amd64_mov_reg_memindex_size(inst,reg,basereg,disp,indexreg,shift,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),(reg),(indexreg),(basereg)); x86_mov_reg_memindex((inst),((reg)&0x7),((basereg)&0x7),(disp),((indexreg)&0x7),(shift),(size) == 8 ? 4 : (size)); amd64_codegen_post(inst); } while (0)
+#define amd64_clear_reg_size(inst,reg,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,(reg)); x86_clear_reg((inst),((reg)&0x7)); amd64_codegen_post(inst); } while (0)
+//#define amd64_mov_reg_imm_size(inst,reg,imm,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,(reg)); x86_mov_reg_imm((inst),((reg)&0x7),(imm)); amd64_codegen_post(inst); } while (0)
+#define amd64_mov_mem_imm_size(inst,mem,imm,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,0); x86_mov_mem_imm((inst),(mem),(imm),(size) == 8 ? 4 : (size)); amd64_codegen_post(inst); } while (0)
+//#define amd64_mov_membase_imm_size(inst,basereg,disp,imm,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,(basereg)); x86_mov_membase_imm((inst),((basereg)&0x7),(disp),(imm),(size) == 8 ? 4 : (size)); amd64_codegen_post(inst); } while (0)
+#define amd64_mov_memindex_imm_size(inst,basereg,disp,indexreg,shift,imm,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,(indexreg),(basereg)); x86_mov_memindex_imm((inst),((basereg)&0x7),(disp),((indexreg)&0x7),(shift),(imm),(size) == 8 ? 4 : (size)); amd64_codegen_post(inst); } while (0)
+#define amd64_lea_mem_size(inst,reg,mem,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,(reg)); x86_lea_mem((inst),((reg)&0x7),(mem)); amd64_codegen_post(inst); } while (0)
+//#define amd64_lea_membase_size(inst,reg,basereg,disp,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,(basereg)); x86_lea_membase((inst),((reg)&0x7),((basereg)&0x7),(disp)); amd64_codegen_post(inst); } while (0)
+#define amd64_lea_memindex_size(inst,reg,basereg,disp,indexreg,shift,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),(reg),(indexreg),(basereg)); x86_lea_memindex((inst),((reg)&0x7),((basereg)&0x7),(disp),((indexreg)&0x7),(shift)); amd64_codegen_post(inst); } while (0)
+#define amd64_widen_reg_size(inst,dreg,reg,is_signed,is_half,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_widen_reg((inst),((dreg)&0x7),((reg)&0x7),(is_signed),(is_half)); amd64_codegen_post(inst); } while (0)
+#define amd64_widen_mem_size(inst,dreg,mem,is_signed,is_half,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),(dreg),0,0); x86_widen_mem((inst),((dreg)&0x7),(mem),(is_signed),(is_half)); amd64_codegen_post(inst); } while (0)
+#define amd64_widen_membase_size(inst,dreg,basereg,disp,is_signed,is_half,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),(dreg),0,(basereg)); x86_widen_membase((inst),((dreg)&0x7),((basereg)&0x7),(disp),(is_signed),(is_half)); amd64_codegen_post(inst); } while (0)
+#define amd64_widen_memindex_size(inst,dreg,basereg,disp,indexreg,shift,is_signed,is_half,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),(dreg),(indexreg),(basereg)); x86_widen_memindex((inst),((dreg)&0x7),((basereg)&0x7),(disp),((indexreg)&0x7),(shift),(is_signed),(is_half)); amd64_codegen_post(inst); } while (0)
+#define amd64_cdq_size(inst,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,0); x86_cdq(inst); amd64_codegen_post(inst); } while (0)
+#define amd64_wait_size(inst,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,0); x86_wait(inst); amd64_codegen_post(inst); } while (0)
+#define amd64_fp_op_mem_size(inst,opc,mem,is_double,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),0,0,0,0); x86_fp_op_mem((inst),(opc),(mem),(is_double)); amd64_codegen_post(inst); } while (0)
+#define amd64_fp_op_membase_size(inst,opc,basereg,disp,is_double,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),0,0,0,(basereg)); x86_fp_op_membase((inst),(opc),((basereg)&0x7),(disp),(is_double)); amd64_codegen_post(inst); } while (0)
+#define amd64_fp_op_size(inst,opc,index,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),0,0,0,0); x86_fp_op((inst),(opc),(index)); amd64_codegen_post(inst); } while (0)
+#define amd64_fp_op_reg_size(inst,opc,index,pop_stack,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),0,0,0,0); x86_fp_op_reg((inst),(opc),(index),(pop_stack)); amd64_codegen_post(inst); } while (0)
+#define amd64_fp_int_op_membase_size(inst,opc,basereg,disp,is_int,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),0,0,0,(basereg)); x86_fp_int_op_membase((inst),(opc),((basereg)&0x7),(disp),(is_int)); amd64_codegen_post(inst); } while (0)
+#define amd64_fstp_size(inst,index,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),0,0,0,0); x86_fstp((inst),(index)); amd64_codegen_post(inst); } while (0)
+#define amd64_fcompp_size(inst,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),0,0,0,0); x86_fcompp(inst); amd64_codegen_post(inst); } while (0)
+#define amd64_fucompp_size(inst,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),0,0,0,0); x86_fucompp(inst); amd64_codegen_post(inst); } while (0)
+#define amd64_fnstsw_size(inst,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),0,0,0,0); x86_fnstsw(inst); amd64_codegen_post(inst); } while (0)
+#define amd64_fnstcw_size(inst,mem,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),0,0,0,0); x86_fnstcw((inst),(mem)); amd64_codegen_post(inst); } while (0)
+#define amd64_fnstcw_membase_size(inst,basereg,disp,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,(basereg)); x86_fnstcw_membase((inst),((basereg)&0x7),(disp)); amd64_codegen_post(inst); } while (0)
+#define amd64_fldcw_size(inst,mem,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),0,0,0,0); x86_fldcw((inst),(mem)); amd64_codegen_post(inst); } while (0)
+#define amd64_fldcw_membase_size(inst,basereg,disp,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),0,0,0,(basereg)); x86_fldcw_membase((inst),((basereg)&0x7),(disp)); amd64_codegen_post(inst); } while (0)
+#define amd64_fchs_size(inst,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),0,0,0,0); x86_fchs(inst); amd64_codegen_post(inst); } while (0)
+#define amd64_frem_size(inst,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),0,0,0,0); x86_frem(inst); amd64_codegen_post(inst); } while (0)
+#define amd64_fxch_size(inst,index,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),0,0,0,0); x86_fxch((inst),(index)); amd64_codegen_post(inst); } while (0)
+#define amd64_fcomi_size(inst,index,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),0,0,0,0); x86_fcomi((inst),(index)); amd64_codegen_post(inst); } while (0)
+#define amd64_fcomip_size(inst,index,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),0,0,0,0); x86_fcomip((inst),(index)); amd64_codegen_post(inst); } while (0)
+#define amd64_fucomi_size(inst,index,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),0,0,0,0); x86_fucomi((inst),(index)); amd64_codegen_post(inst); } while (0)
+#define amd64_fucomip_size(inst,index,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),0,0,0,0); x86_fucomip((inst),(index)); amd64_codegen_post(inst); } while (0)
+#define amd64_fld_size(inst,mem,is_double,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),0,0,0,0); x86_fld((inst),(mem),(is_double)); amd64_codegen_post(inst); } while (0)
+//#define amd64_fld_membase_size(inst,basereg,disp,is_double,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),0,0,0,(basereg)); x86_fld_membase((inst),((basereg)&0x7),(disp),(is_double)); amd64_codegen_post(inst); } while (0)
+#define amd64_fld80_mem_size(inst,mem,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),0,0,0,0); x86_fld80_mem((inst),(mem)); amd64_codegen_post(inst); } while (0)
+#define amd64_fld80_membase_size(inst,basereg,disp,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,(basereg)); x86_fld80_membase((inst),((basereg)&0x7),(disp)); amd64_codegen_post(inst); } while (0)
+#define amd64_fild_size(inst,mem,is_long,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),0,0,0,0); x86_fild((inst),(mem),(is_long)); amd64_codegen_post(inst); } while (0)
+#define amd64_fild_membase_size(inst,basereg,disp,is_long,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),0,0,0,(basereg)); x86_fild_membase((inst),((basereg)&0x7),(disp),(is_long)); amd64_codegen_post(inst); } while (0)
+#define amd64_fld_reg_size(inst,index,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),0,0,0,0); x86_fld_reg((inst),(index)); amd64_codegen_post(inst); } while (0)
+#define amd64_fldz_size(inst,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),0,0,0,0); x86_fldz(inst); amd64_codegen_post(inst); } while (0)
+#define amd64_fld1_size(inst,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),0,0,0,0); x86_fld1(inst); amd64_codegen_post(inst); } while (0)
+#define amd64_fldpi_size(inst,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),0,0,0,0); x86_fldpi(inst); amd64_codegen_post(inst); } while (0)
+#define amd64_fst_size(inst,mem,is_double,pop_stack,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),0,0,0,0); x86_fst((inst),(mem),(is_double),(pop_stack)); amd64_codegen_post(inst); } while (0)
+#define amd64_fst_membase_size(inst,basereg,disp,is_double,pop_stack,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),0,0,0,(basereg)); x86_fst_membase((inst),((basereg)&0x7),(disp),(is_double),(pop_stack)); amd64_codegen_post(inst); } while (0)
+#define amd64_fst80_mem_size(inst,mem,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),0,0,0,0); x86_fst80_mem((inst),(mem)); amd64_codegen_post(inst); } while (0)
+#define amd64_fst80_membase_size(inst,basereg,disp,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),0,0,0,(basereg)); x86_fst80_membase((inst),((basereg)&0x7),(disp)); amd64_codegen_post(inst); } while (0)
+#define amd64_fist_pop_size(inst,mem,is_long,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),0,0,0,0); x86_fist_pop((inst),(mem),(is_long)); amd64_codegen_post(inst); } while (0)
+#define amd64_fist_pop_membase_size(inst,basereg,disp,is_long,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),0,0,0,(basereg)); x86_fist_pop_membase((inst),((basereg)&0x7),(disp),(is_long)); amd64_codegen_post(inst); } while (0)
+#define amd64_fstsw_size(inst,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,0); x86_fstsw(inst); amd64_codegen_post(inst); } while (0)
+#define amd64_fist_membase_size(inst,basereg,disp,is_int,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),0,0,0,(basereg)); x86_fist_membase((inst),((basereg)&0x7),(disp),(is_int)); amd64_codegen_post(inst); } while (0)
+//#define amd64_push_reg_size(inst,reg,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,(reg)); x86_push_reg((inst),((reg)&0x7)); amd64_codegen_post(inst); } while (0)
+#define amd64_push_regp_size(inst,reg,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,(reg)); x86_push_regp((inst),((reg)&0x7)); amd64_codegen_post(inst); } while (0)
+#define amd64_push_mem_size(inst,mem,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,0); x86_push_mem((inst),(mem)); amd64_codegen_post(inst); } while (0)
+//#define amd64_push_membase_size(inst,basereg,disp,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,(basereg)); x86_push_membase((inst),((basereg)&0x7),(disp)); amd64_codegen_post(inst); } while (0)
+#define amd64_push_memindex_size(inst,basereg,disp,indexreg,shift,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,(indexreg),(basereg)); x86_push_memindex((inst),((basereg)&0x7),(disp),((indexreg)&0x7),(shift)); amd64_codegen_post(inst); } while (0)
+#define amd64_push_imm_size(inst,imm,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),0,0,0,0); x86_push_imm((inst),(imm)); amd64_codegen_post(inst); } while (0)
+//#define amd64_pop_reg_size(inst,reg,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,(reg)); x86_pop_reg((inst),((reg)&0x7)); amd64_codegen_post(inst); } while (0)
+#define amd64_pop_mem_size(inst,mem,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,0); x86_pop_mem((inst),(mem)); amd64_codegen_post(inst); } while (0)
+#define amd64_pop_membase_size(inst,basereg,disp,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,(basereg)); x86_pop_membase((inst),((basereg)&0x7),(disp)); amd64_codegen_post(inst); } while (0)
+#define amd64_pushad_size(inst,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,0); x86_pushad(inst); amd64_codegen_post(inst); } while (0)
+#define amd64_pushfd_size(inst,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,0); x86_pushfd(inst); amd64_codegen_post(inst); } while (0)
+#define amd64_popad_size(inst,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,0); x86_popad(inst); amd64_codegen_post(inst); } while (0)
+#define amd64_popfd_size(inst,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,0); x86_popfd(inst); amd64_codegen_post(inst); } while (0)
+#define amd64_loop_size(inst,imm,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,0); x86_loop((inst),(imm)); amd64_codegen_post(inst); } while (0)
+#define amd64_loope_size(inst,imm,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,0); x86_loope((inst),(imm)); amd64_codegen_post(inst); } while (0)
+#define amd64_loopne_size(inst,imm,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,0); x86_loopne((inst),(imm)); amd64_codegen_post(inst); } while (0)
+#define amd64_jump32_size(inst,imm,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,0); x86_jump32((inst),(imm)); amd64_codegen_post(inst); } while (0)
+#define amd64_jump8_size(inst,imm,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,0); x86_jump8((inst),(imm)); amd64_codegen_post(inst); } while (0)
+#if !defined( __native_client_codegen__ )
+/* Defined above for Native Client, so they can be used in other macros */
 #define amd64_jump_reg_size(inst,reg,size) do { amd64_emit_rex ((inst),0,0,0,(reg)); x86_jump_reg((inst),((reg)&0x7)); } while (0)
 #define amd64_jump_mem_size(inst,mem,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_jump_mem((inst),(mem)); } while (0)
-#define amd64_jump_disp_size(inst,disp,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_jump_disp((inst),(disp)); } while (0)
+#endif
+#define amd64_jump_disp_size(inst,disp,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),0,0,0,0); x86_jump_disp((inst),(disp)); amd64_codegen_post(inst); } while (0)
 #define amd64_branch8_size(inst,cond,imm,is_signed,size) do { x86_branch8((inst),(cond),(imm),(is_signed)); } while (0)
 #define amd64_branch32_size(inst,cond,imm,is_signed,size) do { x86_branch32((inst),(cond),(imm),(is_signed)); } while (0)
-#define amd64_branch_size(inst,cond,target,is_signed,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_branch((inst),(cond),(target),(is_signed)); } while (0)
-#define amd64_branch_disp_size(inst,cond,disp,is_signed,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_branch_disp((inst),(cond),(disp),(is_signed)); } while (0)
-#define amd64_set_reg_size(inst,cond,reg,is_signed,size) do { amd64_emit_rex((inst),1,0,0,(reg)); x86_set_reg((inst),(cond),((reg)&0x7),(is_signed)); } while (0)
-#define amd64_set_mem_size(inst,cond,mem,is_signed,size) do { x86_set_mem((inst),(cond),(mem),(is_signed)); } while (0)
-#define amd64_set_membase_size(inst,cond,basereg,disp,is_signed,size) do { amd64_emit_rex ((inst),0,0,0,(basereg)); x86_set_membase((inst),(cond),((basereg)&0x7),(disp),(is_signed)); } while (0)
+#define amd64_branch_size_body(inst,cond,target,is_signed,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,0); x86_branch((inst),(cond),(target),(is_signed)); amd64_codegen_post(inst); } while (0)
+#if defined(__default_codegen__)
+#define amd64_branch_size(inst,cond,target,is_signed,size) do { amd64_branch_size_body((inst),(cond),(target),(is_signed),(size)); } while (0)
+#elif defined(__native_client_codegen__)
+#define amd64_branch_size(inst,cond,target,is_signed,size) \
+	do { \
+		/* amd64_branch_size_body used twice in     */ \
+		/* case of relocation by amd64_codegen_post */ \
+		guint8* branch_start; \
+		amd64_codegen_pre(inst); \
+		amd64_branch_size_body((inst),(cond),(target),(is_signed),(size)); \
+		inst = amd64_codegen_post(inst); \
+		branch_start = inst; \
+		amd64_branch_size_body((inst),(cond),(target),(is_signed),(size)); \
+		mono_amd64_patch(branch_start, (target)); \
+	} while (0)
+#endif
+
+#define amd64_branch_disp_size(inst,cond,disp,is_signed,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,0); x86_branch_disp((inst),(cond),(disp),(is_signed)); amd64_codegen_post(inst); } while (0)
+#define amd64_set_reg_size(inst,cond,reg,is_signed,size) do { amd64_codegen_pre(inst); amd64_emit_rex((inst),1,0,0,(reg)); x86_set_reg((inst),(cond),((reg)&0x7),(is_signed)); amd64_codegen_post(inst); } while (0)
+#define amd64_set_mem_size(inst,cond,mem,is_signed,size) do { amd64_codegen_pre(inst); x86_set_mem((inst),(cond),(mem),(is_signed)); amd64_codegen_post(inst); } while (0)
+#define amd64_set_membase_size(inst,cond,basereg,disp,is_signed,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),0,0,0,(basereg)); x86_set_membase((inst),(cond),((basereg)&0x7),(disp),(is_signed)); amd64_codegen_post(inst); } while (0)
+//#define amd64_call_reg_size(inst,reg,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,(reg)); x86_call_reg((inst),((reg)&0x7)); amd64_codegen_post(inst); } while (0)
+#define amd64_call_mem_size(inst,mem,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,0); x86_call_mem((inst),(mem)); amd64_codegen_post(inst); } while (0)
+
+#if defined(__default_codegen__)
+
 #define amd64_call_imm_size(inst,disp,size) do { x86_call_imm((inst),(disp)); } while (0)
-//#define amd64_call_reg_size(inst,reg,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_call_reg((inst),((reg)&0x7)); } while (0)
-#define amd64_call_mem_size(inst,mem,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_call_mem((inst),(mem)); } while (0)
 #define amd64_call_code_size(inst,target,size) do { x86_call_code((inst),(target)); } while (0)
-//#define amd64_ret_size(inst,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_ret(inst); } while (0)
-#define amd64_ret_imm_size(inst,imm,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_ret_imm((inst),(imm)); } while (0)
-#define amd64_cmov_reg_size(inst,cond,is_signed,dreg,reg,size) do { amd64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_cmov_reg((inst),(cond),(is_signed),((dreg)&0x7),((reg)&0x7)); } while (0)
-#define amd64_cmov_mem_size(inst,cond,is_signed,reg,mem,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_cmov_mem((inst),(cond),(is_signed),((reg)&0x7),(mem)); } while (0)
-#define amd64_cmov_membase_size(inst,cond,is_signed,reg,basereg,disp,size) do { amd64_emit_rex ((inst),(size),0,0,(basereg)); x86_cmov_membase((inst),(cond),(is_signed),((reg)&0x7),((basereg)&0x7),(disp)); } while (0)
-#define amd64_enter_size(inst,framesize) do { amd64_emit_rex ((inst),(size),0,0,0); x86_enter((inst),(framesize)); } while (0)
-//#define amd64_leave_size(inst,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_leave(inst); } while (0)
-#define amd64_sahf_size(inst,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_sahf(inst); } while (0)
-#define amd64_fsin_size(inst,size) do { x86_fsin(inst); } while (0)
-#define amd64_fcos_size(inst,size) do { x86_fcos(inst); } while (0)
-#define amd64_fabs_size(inst,size) do { x86_fabs(inst); } while (0)
-#define amd64_ftst_size(inst,size) do { x86_ftst(inst); } while (0)
-#define amd64_fxam_size(inst,size) do { x86_fxam(inst); } while (0)
-#define amd64_fpatan_size(inst,size) do { x86_fpatan(inst); } while (0)
-#define amd64_fprem_size(inst,size) do { x86_fprem(inst); } while (0)
-#define amd64_fprem1_size(inst,size) do { x86_fprem1(inst); } while (0)
-#define amd64_frndint_size(inst,size) do { x86_frndint(inst); } while (0)
-#define amd64_fsqrt_size(inst,size) do { x86_fsqrt(inst); } while (0)
-#define amd64_fptan_size(inst,size) do { x86_fptan(inst); } while (0)
-//#define amd64_padding_size(inst,size) do { x86_padding((inst),(size)); } while (0)
-#define amd64_prolog_size(inst,frame_size,reg_mask,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_prolog((inst),(frame_size),(reg_mask)); } while (0)
-#define amd64_epilog_size(inst,reg_mask,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_epilog((inst),(reg_mask)); } while (0)
-#define amd64_xadd_reg_reg_size(inst,dreg,reg,size) do { amd64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_xadd_reg_reg ((inst), (dreg), (reg), (size)); } while (0)
-#define amd64_xadd_mem_reg_size(inst,mem,reg,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_xadd_mem_reg((inst),(mem),((reg)&0x7), (size)); } while (0)
-#define amd64_xadd_membase_reg_size(inst,basereg,disp,reg,size) do { amd64_emit_rex ((inst),(size),(reg),0,(basereg)); x86_xadd_membase_reg((inst),((basereg)&0x7),(disp),((reg)&0x7),(size)); } while (0)
+
+#elif defined(__native_client_codegen__)
+/* Size is ignored for Native Client calls, we restrict jumping to 32-bits */
+#define amd64_call_imm_size(inst,disp,size)             \
+  do {                                                  \
+    amd64_codegen_pre((inst));                          \
+    amd64_call_sequence_pre((inst));                    \
+    x86_call_imm((inst),(disp));                        \
+    amd64_call_sequence_post((inst));                   \
+    amd64_codegen_post((inst));                         \
+  } while (0)
+
+/* x86_call_code is called twice below, first so we can get the size of the */
+/* call sequence, and again so the exact offset from "inst" is used, since  */
+/* the sequence could have moved from amd64_call_sequence_post.             */
+/* Size is ignored for Native Client jumps, we restrict jumping to 32-bits  */
+#define amd64_call_code_size(inst,target,size)          \
+  do {                                                  \
+    amd64_codegen_pre((inst));                          \
+    guint8* adjusted_start;                             \
+    guint8* call_start;                                 \
+    amd64_call_sequence_pre((inst));                    \
+    x86_call_code((inst),(target));                     \
+    adjusted_start = amd64_call_sequence_post((inst));  \
+    call_start = adjusted_start;                        \
+    x86_call_code(adjusted_start, (target));            \
+    amd64_codegen_post((inst));                         \
+    mono_amd64_patch(call_start, (target));             \
+  } while (0)
+
+#endif /*__native_client_codegen__*/
+
+//#define amd64_ret_size(inst,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,0); x86_ret(inst); amd64_codegen_post(inst); } while (0)
+#define amd64_ret_imm_size(inst,imm,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,0); x86_ret_imm((inst),(imm)); amd64_codegen_post(inst); } while (0)
+#define amd64_cmov_reg_size(inst,cond,is_signed,dreg,reg,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_cmov_reg((inst),(cond),(is_signed),((dreg)&0x7),((reg)&0x7)); amd64_codegen_post(inst); } while (0)
+#define amd64_cmov_mem_size(inst,cond,is_signed,reg,mem,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,(reg)); x86_cmov_mem((inst),(cond),(is_signed),((reg)&0x7),(mem)); amd64_codegen_post(inst); } while (0)
+#define amd64_cmov_membase_size(inst,cond,is_signed,reg,basereg,disp,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,(basereg)); x86_cmov_membase((inst),(cond),(is_signed),((reg)&0x7),((basereg)&0x7),(disp)); amd64_codegen_post(inst); } while (0)
+#define amd64_enter_size(inst,framesize) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,0); x86_enter((inst),(framesize)); amd64_codegen_post(inst); } while (0)
+//#define amd64_leave_size(inst,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,0); x86_leave(inst); amd64_codegen_post(inst); } while (0)
+#define amd64_sahf_size(inst,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,0); x86_sahf(inst); amd64_codegen_post(inst); } while (0)
+#define amd64_fsin_size(inst,size) do { amd64_codegen_pre(inst); x86_fsin(inst); amd64_codegen_post(inst); } while (0)
+#define amd64_fcos_size(inst,size) do { amd64_codegen_pre(inst); x86_fcos(inst); amd64_codegen_post(inst); } while (0)
+#define amd64_fabs_size(inst,size) do { amd64_codegen_pre(inst); x86_fabs(inst); amd64_codegen_post(inst); } while (0)
+#define amd64_ftst_size(inst,size) do { amd64_codegen_pre(inst); x86_ftst(inst); amd64_codegen_post(inst); } while (0)
+#define amd64_fxam_size(inst,size) do { amd64_codegen_pre(inst); x86_fxam(inst); amd64_codegen_post(inst); } while (0)
+#define amd64_fpatan_size(inst,size) do { amd64_codegen_pre(inst); x86_fpatan(inst); amd64_codegen_post(inst); } while (0)
+#define amd64_fprem_size(inst,size) do { amd64_codegen_pre(inst); x86_fprem(inst); amd64_codegen_post(inst); } while (0)
+#define amd64_fprem1_size(inst,size) do { amd64_codegen_pre(inst); x86_fprem1(inst); amd64_codegen_post(inst); } while (0)
+#define amd64_frndint_size(inst,size) do { amd64_codegen_pre(inst); x86_frndint(inst); amd64_codegen_post(inst); } while (0)
+#define amd64_fsqrt_size(inst,size) do { amd64_codegen_pre(inst); x86_fsqrt(inst); amd64_codegen_post(inst); } while (0)
+#define amd64_fptan_size(inst,size) do { amd64_codegen_pre(inst); x86_fptan(inst); amd64_codegen_post(inst); } while (0)
+//#define amd64_padding_size(inst,size) do { amd64_codegen_pre(inst); x86_padding((inst),(size)); amd64_codegen_post(inst); } while (0)
+#define amd64_prolog_size(inst,frame_size,reg_mask,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,0); x86_prolog((inst),(frame_size),(reg_mask)); amd64_codegen_post(inst); } while (0)
+#define amd64_epilog_size(inst,reg_mask,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,0); x86_epilog((inst),(reg_mask)); amd64_codegen_post(inst); } while (0)
+#define amd64_xadd_reg_reg_size(inst,dreg,reg,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_xadd_reg_reg ((inst), (dreg), (reg), (size)); amd64_codegen_post(inst); } while (0)
+#define amd64_xadd_mem_reg_size(inst,mem,reg,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),0,0,(reg)); x86_xadd_mem_reg((inst),(mem),((reg)&0x7), (size)); amd64_codegen_post(inst); } while (0)
+#define amd64_xadd_membase_reg_size(inst,basereg,disp,reg,size) do { amd64_codegen_pre(inst); amd64_emit_rex ((inst),(size),(reg),0,(basereg)); x86_xadd_membase_reg((inst),((basereg)&0x7),(disp),((reg)&0x7),(size)); amd64_codegen_post(inst); } while (0)
 
 
 
diff --git a/mono/arch/amd64/tramp.c b/mono/arch/amd64/tramp.c
index 5a4f9a9..6dbec93 100644
--- a/mono/arch/amd64/tramp.c
+++ b/mono/arch/amd64/tramp.c
@@ -543,7 +543,7 @@ enum_marshal2:
 	amd64_call_reg (p, AMD64_R11);
 
 	if (sig->ret->byref || string_ctor || !(retval_implicit || sig->ret->type == MONO_TYPE_VOID)) {
-		amd64_mov_reg_membase(p, AMD64_RSI, AMD64_RBP, -8, 8);
+		amd64_mov_reg_membase(p, AMD64_RSI, AMD64_RBP, -8, SIZEOF_VOID_P);
 	}
 	/*
 	 * Handle retval.
@@ -883,19 +883,19 @@ enum_calc_size:
 	 * Initialize MonoInvocation fields, first the ones known now.
 	 */
 	amd64_alu_reg_reg (p, X86_XOR, AMD64_RAX, AMD64_RAX);
-	amd64_mov_membase_reg (p, AMD64_RBP, (mono_invocation_pos + G_STRUCT_OFFSET (MonoInvocation, ex)), AMD64_RAX, 8);
-	amd64_mov_membase_reg (p, AMD64_RBP, (mono_invocation_pos + G_STRUCT_OFFSET (MonoInvocation, ex_handler)), AMD64_RAX, 8);
-	amd64_mov_membase_reg (p, AMD64_RBP, (mono_invocation_pos + G_STRUCT_OFFSET (MonoInvocation, parent)), AMD64_RAX, 8);
+	amd64_mov_membase_reg (p, AMD64_RBP, (mono_invocation_pos + G_STRUCT_OFFSET (MonoInvocation, ex)), AMD64_RAX, SIZEOF_VOID_P);
+	amd64_mov_membase_reg (p, AMD64_RBP, (mono_invocation_pos + G_STRUCT_OFFSET (MonoInvocation, ex_handler)), AMD64_RAX, SIZEOF_VOID_P);
+	amd64_mov_membase_reg (p, AMD64_RBP, (mono_invocation_pos + G_STRUCT_OFFSET (MonoInvocation, parent)), AMD64_RAX, SIZEOF_VOID_P);
 	/*
 	 * Set the method pointer.
 	 */
-	amd64_mov_membase_imm (p, AMD64_RBP, (mono_invocation_pos + G_STRUCT_OFFSET (MonoInvocation, method)), (long)method, 8);
+	amd64_mov_membase_imm (p, AMD64_RBP, (mono_invocation_pos + G_STRUCT_OFFSET (MonoInvocation, method)), (long)method, SIZEOF_VOID_P);
 
 	/*
 	 * Handle this.
 	 */
 	if (sig->hasthis)
-		amd64_mov_membase_reg(p, AMD64_RBP, (mono_invocation_pos + G_STRUCT_OFFSET (MonoInvocation, obj)), this_reg, 8);
+		amd64_mov_membase_reg(p, AMD64_RBP, (mono_invocation_pos + G_STRUCT_OFFSET (MonoInvocation, obj)), this_reg, SIZEOF_VOID_P);
 
 	/*
 	 * Handle the arguments. stackval_pos is the offset from RBP of the stackval in the MonoInvocation args array .
@@ -903,7 +903,7 @@ enum_calc_size:
 	 * We just call stackval_from_data to handle all the (nasty) issues....
 	 */
 	amd64_lea_membase (p, AMD64_RAX, AMD64_RBP, stackval_pos);
-	amd64_mov_membase_reg (p, AMD64_RBP, (mono_invocation_pos + G_STRUCT_OFFSET (MonoInvocation, stack_args)), AMD64_RAX, 8);
+	amd64_mov_membase_reg (p, AMD64_RBP, (mono_invocation_pos + G_STRUCT_OFFSET (MonoInvocation, stack_args)), AMD64_RAX, SIZEOF_VOID_P);
 	for (i = 0; i < sig->param_count; ++i) {
 /* Need to call stackval_from_data (MonoType *type, stackval *result, char *data, gboolean pinvoke); */
 		amd64_mov_reg_imm (p, AMD64_R11, stackval_from_data);
@@ -926,12 +926,12 @@ enum_calc_size:
 	 * Handle the return value storage area.
 	 */
 	amd64_lea_membase (p, AMD64_RAX, AMD64_RBP, stackval_pos);
-	amd64_mov_membase_reg (p, AMD64_RBP, (mono_invocation_pos + G_STRUCT_OFFSET (MonoInvocation, retval)), AMD64_RAX, 8);
+	amd64_mov_membase_reg (p, AMD64_RBP, (mono_invocation_pos + G_STRUCT_OFFSET (MonoInvocation, retval)), AMD64_RAX, SIZEOF_VOID_P);
 	if (sig->ret->type == MONO_TYPE_VALUETYPE && !sig->ret->byref) {
 		MonoClass *klass  = sig->ret->data.klass;
 		if (!klass->enumtype) {
-			amd64_mov_reg_membase (p, AMD64_RCX, AMD64_RBP, retval_ptr_rbp_offset, 8);
-			amd64_mov_membase_reg (p, AMD64_RBP, stackval_pos, AMD64_RCX, 8);
+			amd64_mov_reg_membase (p, AMD64_RCX, AMD64_RBP, retval_ptr_rbp_offset, SIZEOF_VOID_P);
+			amd64_mov_membase_reg (p, AMD64_RBP, stackval_pos, AMD64_RCX, SIZEOF_VOID_P);
 		}
 	}
 
@@ -947,7 +947,7 @@ enum_calc_size:
 	 */
 	amd64_lea_membase (p, AMD64_RAX, AMD64_RBP, stackval_pos);
 	if (sig->ret->byref) {
-		amd64_mov_reg_membase (p, AMD64_RAX, AMD64_RAX, 0, 8);
+		amd64_mov_reg_membase (p, AMD64_RAX, AMD64_RAX, 0, SIZEOF_VOID_P);
 	} else {
 		int simpletype = sig->ret->type;	
 	enum_retvalue:
diff --git a/mono/arch/arm/Makefile.in b/mono/arch/arm/Makefile.in
index 7c5cbfe..46922ec 100644
--- a/mono/arch/arm/Makefile.in
+++ b/mono/arch/arm/Makefile.in
@@ -151,6 +151,7 @@ MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
 MONO_DL_NEED_USCORE = @MONO_DL_NEED_USCORE@
 MONO_NACL_ALIGN_MASK_OFF = @MONO_NACL_ALIGN_MASK_OFF@
+MOONLIGHT_DEFINES = @MOONLIGHT_DEFINES@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
diff --git a/mono/arch/hppa/Makefile.in b/mono/arch/hppa/Makefile.in
index 0f63e45..27b1e4a 100644
--- a/mono/arch/hppa/Makefile.in
+++ b/mono/arch/hppa/Makefile.in
@@ -149,6 +149,7 @@ MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
 MONO_DL_NEED_USCORE = @MONO_DL_NEED_USCORE@
 MONO_NACL_ALIGN_MASK_OFF = @MONO_NACL_ALIGN_MASK_OFF@
+MOONLIGHT_DEFINES = @MOONLIGHT_DEFINES@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
diff --git a/mono/arch/ia64/Makefile.in b/mono/arch/ia64/Makefile.in
index 3f01e4c..fc459e4 100644
--- a/mono/arch/ia64/Makefile.in
+++ b/mono/arch/ia64/Makefile.in
@@ -133,6 +133,7 @@ MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
 MONO_DL_NEED_USCORE = @MONO_DL_NEED_USCORE@
 MONO_NACL_ALIGN_MASK_OFF = @MONO_NACL_ALIGN_MASK_OFF@
+MOONLIGHT_DEFINES = @MOONLIGHT_DEFINES@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
diff --git a/mono/arch/mips/Makefile.in b/mono/arch/mips/Makefile.in
index 1b61768..e3fd492 100644
--- a/mono/arch/mips/Makefile.in
+++ b/mono/arch/mips/Makefile.in
@@ -155,6 +155,7 @@ MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
 MONO_DL_NEED_USCORE = @MONO_DL_NEED_USCORE@
 MONO_NACL_ALIGN_MASK_OFF = @MONO_NACL_ALIGN_MASK_OFF@
+MOONLIGHT_DEFINES = @MOONLIGHT_DEFINES@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
diff --git a/mono/arch/ppc/Makefile.in b/mono/arch/ppc/Makefile.in
index fd29755..4efb05a 100644
--- a/mono/arch/ppc/Makefile.in
+++ b/mono/arch/ppc/Makefile.in
@@ -157,6 +157,7 @@ MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
 MONO_DL_NEED_USCORE = @MONO_DL_NEED_USCORE@
 MONO_NACL_ALIGN_MASK_OFF = @MONO_NACL_ALIGN_MASK_OFF@
+MOONLIGHT_DEFINES = @MOONLIGHT_DEFINES@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
diff --git a/mono/arch/s390/Makefile.in b/mono/arch/s390/Makefile.in
index 9a4e4fa..6be7617 100644
--- a/mono/arch/s390/Makefile.in
+++ b/mono/arch/s390/Makefile.in
@@ -149,6 +149,7 @@ MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
 MONO_DL_NEED_USCORE = @MONO_DL_NEED_USCORE@
 MONO_NACL_ALIGN_MASK_OFF = @MONO_NACL_ALIGN_MASK_OFF@
+MOONLIGHT_DEFINES = @MOONLIGHT_DEFINES@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
diff --git a/mono/arch/s390x/Makefile.in b/mono/arch/s390x/Makefile.in
index 78cc31f..f9ebbec 100644
--- a/mono/arch/s390x/Makefile.in
+++ b/mono/arch/s390x/Makefile.in
@@ -149,6 +149,7 @@ MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
 MONO_DL_NEED_USCORE = @MONO_DL_NEED_USCORE@
 MONO_NACL_ALIGN_MASK_OFF = @MONO_NACL_ALIGN_MASK_OFF@
+MOONLIGHT_DEFINES = @MOONLIGHT_DEFINES@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
diff --git a/mono/arch/sparc/Makefile.in b/mono/arch/sparc/Makefile.in
index df97d0f..3224495 100644
--- a/mono/arch/sparc/Makefile.in
+++ b/mono/arch/sparc/Makefile.in
@@ -149,6 +149,7 @@ MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
 MONO_DL_NEED_USCORE = @MONO_DL_NEED_USCORE@
 MONO_NACL_ALIGN_MASK_OFF = @MONO_NACL_ALIGN_MASK_OFF@
+MOONLIGHT_DEFINES = @MOONLIGHT_DEFINES@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
diff --git a/mono/arch/x86/Makefile.in b/mono/arch/x86/Makefile.in
index 3ab2123..d819e3b 100644
--- a/mono/arch/x86/Makefile.in
+++ b/mono/arch/x86/Makefile.in
@@ -151,6 +151,7 @@ MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
 MONO_DL_NEED_USCORE = @MONO_DL_NEED_USCORE@
 MONO_NACL_ALIGN_MASK_OFF = @MONO_NACL_ALIGN_MASK_OFF@
+MOONLIGHT_DEFINES = @MOONLIGHT_DEFINES@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
diff --git a/mono/arch/x86/x86-codegen.h b/mono/arch/x86/x86-codegen.h
index af3e3c6..ff79b52 100644
--- a/mono/arch/x86/x86-codegen.h
+++ b/mono/arch/x86/x86-codegen.h
@@ -17,26 +17,24 @@
 #include <assert.h>
 
 #ifdef __native_client_codegen__
-#define kNaClAlignment 32
-#define kNaClAlignmentMask (kNaClAlignment - 1)
-extern guint8 nacl_align_byte;
+extern gint8 nacl_align_byte;
 #endif /* __native_client_codegen__ */
 
 
 #if defined( __native_client_codegen__ ) && defined( TARGET_X86 )
 #define x86_codegen_pre(inst_ptr_ptr, inst_len) do { mono_nacl_align_inst(inst_ptr_ptr, inst_len); } while (0)
-#define x86_call_sequence_pre(inst) guint8* _code_start = (inst);
-#define x86_call_sequence_post(inst) \
-  (mono_nacl_align_call(&_code_start, &(inst)), _code_start);
 #define x86_call_sequence_pre_val(inst) guint8* _code_start = (inst);
 #define x86_call_sequence_post_val(inst) \
   (mono_nacl_align_call(&_code_start, &(inst)), _code_start);
+#define x86_call_sequence_pre(inst) x86_call_sequence_pre_val((inst))
+#define x86_call_sequence_post(inst) x86_call_sequence_post_val((inst))
 #else
 #define x86_codegen_pre(inst_ptr_ptr, inst_len) do {} while (0)
-#define x86_call_sequence_pre(inst)
-#define x86_call_sequence_post(inst)
+/* Two variants are needed to avoid warnings */
 #define x86_call_sequence_pre_val(inst) guint8* _code_start = (inst);
 #define x86_call_sequence_post_val(inst) _code_start
+#define x86_call_sequence_pre(inst)
+#define x86_call_sequence_post(inst)
 #endif  /* __native_client_codegen__ */
 
 
@@ -305,7 +303,7 @@ typedef union {
 
 #define kMaxMembaseEmitPadding 6
 
-#define x86_membase_emit(inst,r,basereg,disp)	do {\
+#define x86_membase_emit_body(inst,r,basereg,disp)	do {\
 	if ((basereg) == X86_ESP) {	\
 		if ((disp) == 0) {	\
 			x86_address_byte ((inst), 0, (r), X86_ESP);	\
@@ -334,6 +332,18 @@ typedef union {
 	}	\
 	} while (0)
 
+#if defined(__native_client_codegen__) && defined(TARGET_AMD64)
+#define x86_membase_emit(inst,r,basereg,disp) \
+	do { \
+		amd64_nacl_membase_handler(&(inst), (basereg), (disp), (r)) ; \
+	} while (0)
+#else /* __default_codegen__ || 32-bit NaCl codegen */
+#define x86_membase_emit(inst,r,basereg,disp) \
+	do { \
+		x86_membase_emit_body((inst),(r),(basereg),(disp)); \
+	} while (0)
+#endif
+
 #define kMaxMemindexEmitPadding 6
 
 #define x86_memindex_emit(inst,r,basereg,disp,indexreg,shift)	\
@@ -351,7 +361,7 @@ typedef union {
 			x86_imm_emit8 ((inst), (disp));	\
 		} else {	\
 			x86_address_byte ((inst), 2, (r), 4);	\
-			x86_address_byte ((inst), (shift), (indexreg), 5);	\
+			x86_address_byte ((inst), (shift), (indexreg), (basereg));	\
 			x86_imm_emit32 ((inst), (disp));	\
 		}	\
 	} while (0)
@@ -438,12 +448,23 @@ typedef union {
     } while ( in_nop );  \
   } while (0)
 
+#if defined(__native_client__)
 #define x86_patch(ins,target) \
   do { \
     unsigned char* inst = (ins); \
+    guint8* new_target = nacl_modify_patch_target((target)); \
     x86_skip_nops((inst)); \
-    x86_do_patch((inst), (target)); \
+    x86_do_patch((inst), new_target); \
   } while (0)
+#else /* __native_client__ */
+#define x86_patch(ins,target) \
+  do { \
+    unsigned char* inst = (ins); \
+    guint8* new_target = (target); \
+    x86_skip_nops((inst)); \
+    x86_do_patch((inst), new_target); \
+  } while (0)
+#endif /* __native_client__ */
 
 #else
 #define x86_patch(ins,target) do { x86_do_patch((ins), (target)); } while (0)
@@ -472,6 +493,13 @@ typedef union {
 #define x86_movsl(inst) do { *(inst)++ =(unsigned char)0xa5; } while (0)
 #define x86_movsd(inst) x86_movsl((inst))
 
+#if defined(__default_codegen__)
+#define x86_prefix(inst,p) \
+	do { \
+		*(inst)++ =(unsigned char) (p); \
+	} while (0)
+#elif defined(__native_client_codegen__)
+#if defined(TARGET_X86)
 /* kNaClAlignment - 1 is the max value we can pass into x86_codegen_pre. */
 /* This keeps us from having to call x86_codegen_pre with specific       */
 /* knowledge of the size of the instruction that follows it, and         */
@@ -481,6 +509,18 @@ typedef union {
 		x86_codegen_pre(&(inst), kNaClAlignment - 1); \
 		*(inst)++ =(unsigned char) (p); \
 	} while (0)
+#elif defined(TARGET_AMD64)
+/* We need to tag any prefixes so we can perform proper membase sandboxing */
+/* See: mini-amd64.c:amd64_nacl_membase_handler for verbose details        */
+#define x86_prefix(inst,p) \
+	do { \
+		amd64_nacl_tag_legacy_prefix((inst)); \
+		*(inst)++ =(unsigned char) (p); \
+	} while (0)
+
+#endif /* TARGET_AMD64 */
+
+#endif /* __native_client_codegen__ */
 
 #define x86_rdtsc(inst) \
 	do {	\
@@ -1041,7 +1081,7 @@ typedef union {
 		x86_codegen_pre(&(inst), 7); \
 		switch ((size)) {	\
 		case 1: *(inst)++ = (unsigned char)0x88; break;	\
-		case 2: *(inst)++ = (unsigned char)0x66; /* fall through */	\
+		case 2: x86_prefix((inst), X86_OPERAND_PREFIX); /* fall through */	\
 		case 4: *(inst)++ = (unsigned char)0x89; break;	\
 		default: assert (0);	\
 		}	\
@@ -1053,7 +1093,7 @@ typedef union {
 		x86_codegen_pre(&(inst), 3); \
 		switch ((size)) {	\
 		case 1: *(inst)++ = (unsigned char)0x88; break;	\
-		case 2: *(inst)++ = (unsigned char)0x66; /* fall through */	\
+		case 2: x86_prefix((inst), X86_OPERAND_PREFIX); /* fall through */	\
 		case 4: *(inst)++ = (unsigned char)0x89; break;	\
 		default: assert (0);	\
 		}	\
@@ -1065,7 +1105,7 @@ typedef union {
 		x86_codegen_pre(&(inst), 2 + kMaxMembaseEmitPadding); \
 		switch ((size)) {	\
 		case 1: *(inst)++ = (unsigned char)0x88; break;	\
-		case 2: *(inst)++ = (unsigned char)0x66; /* fall through */	\
+		case 2: x86_prefix((inst), X86_OPERAND_PREFIX); /* fall through */	\
 		case 4: *(inst)++ = (unsigned char)0x89; break;	\
 		default: assert (0);	\
 		}	\
@@ -1077,7 +1117,7 @@ typedef union {
 		x86_codegen_pre(&(inst), 2 + kMaxMemindexEmitPadding); \
 		switch ((size)) {	\
 		case 1: *(inst)++ = (unsigned char)0x88; break;	\
-		case 2: *(inst)++ = (unsigned char)0x66; /* fall through */	\
+		case 2: x86_prefix((inst), X86_OPERAND_PREFIX); /* fall through */	\
 		case 4: *(inst)++ = (unsigned char)0x89; break;	\
 		default: assert (0);	\
 		}	\
@@ -1089,7 +1129,7 @@ typedef union {
 		x86_codegen_pre(&(inst), 3); \
 		switch ((size)) {	\
 		case 1: *(inst)++ = (unsigned char)0x8a; break;	\
-		case 2: *(inst)++ = (unsigned char)0x66; /* fall through */	\
+		case 2: x86_prefix((inst), X86_OPERAND_PREFIX); /* fall through */	\
 		case 4: *(inst)++ = (unsigned char)0x8b; break;	\
 		default: assert (0);	\
 		}	\
@@ -1101,7 +1141,7 @@ typedef union {
 		x86_codegen_pre(&(inst), 7); \
 		switch ((size)) {	\
 		case 1: *(inst)++ = (unsigned char)0x8a; break;	\
-		case 2: *(inst)++ = (unsigned char)0x66; /* fall through */	\
+		case 2: x86_prefix((inst), X86_OPERAND_PREFIX); /* fall through */	\
 		case 4: *(inst)++ = (unsigned char)0x8b; break;	\
 		default: assert (0);	\
 		}	\
@@ -1115,7 +1155,7 @@ typedef union {
 		x86_codegen_pre(&(inst), kMovRegMembasePadding); \
 		switch ((size)) {	\
 		case 1: *(inst)++ = (unsigned char)0x8a; break;	\
-		case 2: *(inst)++ = (unsigned char)0x66; /* fall through */	\
+		case 2: x86_prefix((inst), X86_OPERAND_PREFIX); /* fall through */	\
 		case 4: *(inst)++ = (unsigned char)0x8b; break;	\
 		default: assert (0);	\
 		}	\
@@ -1127,7 +1167,7 @@ typedef union {
 		x86_codegen_pre(&(inst), 2 + kMaxMemindexEmitPadding); \
 		switch ((size)) {	\
 		case 1: *(inst)++ = (unsigned char)0x8a; break;	\
-		case 2: *(inst)++ = (unsigned char)0x66; /* fall through */	\
+		case 2: x86_prefix((inst), X86_OPERAND_PREFIX); /* fall through */	\
 		case 4: *(inst)++ = (unsigned char)0x8b; break;	\
 		default: assert (0);	\
 		}	\
@@ -1155,7 +1195,7 @@ typedef union {
 			x86_imm_emit8 ((inst), (imm));	\
 		} else if ((size) == 2) {	\
 			x86_codegen_pre(&(inst), 9); \
-			*(inst)++ = (unsigned char)0x66;	\
+			x86_prefix((inst), X86_OPERAND_PREFIX);	\
 			*(inst)++ = (unsigned char)0xc7;	\
 			x86_mem_emit ((inst), 0, (mem));	\
 			x86_imm_emit16 ((inst), (imm));	\
@@ -1176,7 +1216,7 @@ typedef union {
 			x86_imm_emit8 ((inst), (imm));	\
 		} else if ((size) == 2) {	\
 			x86_codegen_pre(&(inst), 4 + kMaxMembaseEmitPadding); \
-			*(inst)++ = (unsigned char)0x66;	\
+			x86_prefix((inst), X86_OPERAND_PREFIX);	\
 			*(inst)++ = (unsigned char)0xc7;	\
 			x86_membase_emit ((inst), 0, (basereg), (disp));	\
 			x86_imm_emit16 ((inst), (imm));	\
@@ -1197,7 +1237,7 @@ typedef union {
 			x86_imm_emit8 ((inst), (imm));	\
 		} else if ((size) == 2) {	\
 			x86_codegen_pre(&(inst), 4 + kMaxMemindexEmitPadding); \
-			*(inst)++ = (unsigned char)0x66;	\
+			x86_prefix((inst), X86_OPERAND_PREFIX);	\
 			*(inst)++ = (unsigned char)0xc7;	\
 			x86_memindex_emit ((inst), 0, (basereg), (disp), (indexreg), (shift));	\
 			x86_imm_emit16 ((inst), (imm));	\
@@ -1681,6 +1721,7 @@ typedef union {
 		x86_imm_emit8 ((inst), (imm));	\
 	} while (0)
 
+#if defined(TARGET_X86)
 #define x86_jump32(inst,imm)	\
 	do {	\
 		x86_codegen_pre(&(inst), 5); \
@@ -1694,9 +1735,27 @@ typedef union {
 		*(inst)++ = (unsigned char)0xeb;	\
 		x86_imm_emit8 ((inst), (imm));	\
 	} while (0)
+#elif defined(TARGET_AMD64)
+/* These macros are used directly from mini-amd64.c and other      */
+/* amd64 specific files, so they need to be instrumented directly. */
+#define x86_jump32(inst,imm)	\
+	do {	\
+		amd64_codegen_pre(inst); \
+		*(inst)++ = (unsigned char)0xe9;	\
+		x86_imm_emit32 ((inst), (imm));	\
+		amd64_codegen_post(inst); \
+	} while (0)
 
+#define x86_jump8(inst,imm)	\
+	do {	\
+		amd64_codegen_pre(inst); \
+		*(inst)++ = (unsigned char)0xeb;	\
+		x86_imm_emit8 ((inst), (imm));	\
+		amd64_codegen_post(inst); \
+	} while (0)
+#endif
 
-#ifdef __native_client_codegen__
+#if defined( __native_client_codegen__ ) && defined( TARGET_X86 )
 #define x86_jump_reg(inst,reg)	do {	\
     x86_codegen_pre(&(inst), 5);			\
     *(inst)++ = (unsigned char)0x83;  /* and */		\
@@ -1747,7 +1806,7 @@ typedef union {
 /*
  * target is a pointer in our buffer.
  */
-#define x86_jump_code(inst,target)	\
+#define x86_jump_code_body(inst,target)	\
 	do {	\
 		int t; \
 		x86_codegen_pre(&(inst), 2); \
@@ -1761,6 +1820,31 @@ typedef union {
 		}	\
 	} while (0)
 
+#if defined(__default_codegen__) 
+#define x86_jump_code(inst,target) \
+	do { \
+		x86_jump_code_body((inst),(target)); \
+	} while (0)
+#elif defined(__native_client_codegen__) && defined(TARGET_X86)
+#define x86_jump_code(inst,target) \
+	do { \
+    		guint8* jump_start = (inst); \
+		x86_jump_code_body((inst),(target)); \
+		x86_patch(jump_start, (target)); \
+	} while (0)
+#elif defined(__native_client_codegen__) && defined(TARGET_AMD64)
+#define x86_jump_code(inst,target) \
+	do { \
+		/* jump_code_body is used twice because there are offsets */ \
+		/* calculated based on the IP, which can change after the */ \
+		/* call to amd64_codegen_post                             */ \
+		amd64_codegen_pre(inst); \
+		x86_jump_code_body((inst),(target)); \
+		inst = amd64_codegen_post(inst); \
+		x86_jump_code_body((inst),(target)); \
+	} while (0)
+#endif /* __native_client_codegen__ */
+
 #define x86_jump_disp(inst,disp)	\
 	do {	\
 		int t = (disp) - 2;	\
@@ -1772,6 +1856,7 @@ typedef union {
 		}	\
 	} while (0)
 
+#if defined(TARGET_X86)
 #define x86_branch8(inst,cond,imm,is_signed)	\
 	do {	\
 		x86_codegen_pre(&(inst), 2); \
@@ -1792,12 +1877,40 @@ typedef union {
 			*(inst)++ = x86_cc_unsigned_map [(cond)] + 0x10;	\
 		x86_imm_emit32 ((inst), (imm));	\
 	} while (0)
+#elif defined(TARGET_AMD64)
+/* These macros are used directly from mini-amd64.c and other      */
+/* amd64 specific files, so they need to be instrumented directly. */
+#define x86_branch8(inst,cond,imm,is_signed)	\
+	do {	\
+		amd64_codegen_pre(inst); \
+		if ((is_signed))	\
+			*(inst)++ = x86_cc_signed_map [(cond)];	\
+		else	\
+			*(inst)++ = x86_cc_unsigned_map [(cond)];	\
+		x86_imm_emit8 ((inst), (imm));	\
+		amd64_codegen_post(inst); \
+	} while (0)
+#define x86_branch32(inst,cond,imm,is_signed)	\
+	do {	\
+		amd64_codegen_pre(inst); \
+		*(inst)++ = (unsigned char)0x0f;	\
+		if ((is_signed))	\
+			*(inst)++ = x86_cc_signed_map [(cond)] + 0x10;	\
+		else	\
+			*(inst)++ = x86_cc_unsigned_map [(cond)] + 0x10;	\
+		x86_imm_emit32 ((inst), (imm));	\
+		amd64_codegen_post(inst); \
+	} while (0)
+#endif
 
+#if defined(TARGET_X86)
 #define x86_branch(inst,cond,target,is_signed)	\
 	do {	\
 		int offset;					 \
+		guint8* branch_start; \
 		x86_codegen_pre(&(inst), 2); \
 		offset = (target) - (inst) - 2;	\
+		branch_start = (inst); \
 		if (x86_is_imm8 ((offset)))	\
 			x86_branch8 ((inst), (cond), offset, (is_signed));	\
 		else {	\
@@ -1805,7 +1918,42 @@ typedef union {
 			offset = (target) - (inst) - 6;	\
 			x86_branch32 ((inst), (cond), offset, (is_signed));	\
 		}	\
+		x86_patch(branch_start, (target)); \
+	} while (0)
+#elif defined(TARGET_AMD64)
+/* This macro is used directly from mini-amd64.c and other        */
+/* amd64 specific files, so it needs to be instrumented directly. */
+
+#define x86_branch_body(inst,cond,target,is_signed)	\
+	do {	\
+		int offset = (target) - (inst) - 2;	\
+		if (x86_is_imm8 ((offset)))	\
+			x86_branch8 ((inst), (cond), offset, (is_signed));	\
+		else {	\
+			offset = (target) - (inst) - 6;	\
+			x86_branch32 ((inst), (cond), offset, (is_signed));	\
+		}	\
+	} while (0)
+
+#if defined(__default_codegen__)
+#define x86_branch(inst,cond,target,is_signed)	\
+	do { \
+		x86_branch_body((inst),(cond),(target),(is_signed)); \
 	} while (0)
+#elif defined(__native_client_codegen__)
+#define x86_branch(inst,cond,target,is_signed)	\
+	do {	\
+		/* branch_body is used twice because there are offsets */ \
+		/* calculated based on the IP, which can change after  */ \
+ 		/* the call to amd64_codegen_post                      */ \
+		amd64_codegen_pre(inst); \
+		x86_branch_body((inst),(cond),(target),(is_signed)); \
+		inst = amd64_codegen_post(inst); \
+		x86_branch_body((inst),(cond),(target),(is_signed)); \
+	} while (0)
+#endif /* __native_client_codegen__ */
+
+#endif /* TARGET_AMD64 */
 
 #define x86_branch_disp(inst,cond,disp,is_signed)	\
 	do {	\
@@ -1865,10 +2013,10 @@ typedef union {
 		x86_call_sequence_post((inst)); \
 	} while (0)
 
-#ifdef __native_client_codegen__
+
+#if defined( __native_client_codegen__ ) && defined( TARGET_X86 )
 #define x86_call_reg_internal(inst,reg)	\
   do {							\
-    x86_codegen_pre(&(inst), 5);			\
     *(inst)++ = (unsigned char)0x83;  /* and */		\
     x86_reg_emit ((inst), 4, (reg));  /* reg */		\
     *(inst)++ = (unsigned char)nacl_align_byte;		\
@@ -1914,20 +2062,23 @@ typedef union {
 #endif  /* __native_client_codegen__ */
 
 
-#ifdef __native_client_codegen__
+#if defined( __native_client_codegen__ ) && defined( TARGET_X86 )
 
 #define x86_call_code(inst,target)	\
 	do {	\
 		int _x86_offset; \
+		guint8* call_start; \
 		guint8* _aligned_start; \
-		x86_call_sequence_pre_val ((inst)); \
+		x86_call_sequence_pre_val((inst)); \
 		_x86_offset = (unsigned char*)(target) - (inst);	\
 		_x86_offset -= 5;	\
 		x86_call_imm_body ((inst), _x86_offset);	\
-		_aligned_start = x86_call_sequence_post_val ((inst)); \
+		_aligned_start = x86_call_sequence_post_val((inst)); \
+		call_start = _aligned_start; \
 		_x86_offset = (unsigned char*)(target) - (_aligned_start);	\
 		_x86_offset -= 5;	\
 		x86_call_imm_body ((_aligned_start), _x86_offset);	\
+		x86_patch(call_start, (target)); \
 	} while (0)
 
 #define SIZE_OF_RET 6
@@ -2062,9 +2213,9 @@ typedef union {
 
 #ifdef __native_client_codegen__
 
-#define kNaClLengthOfCallReg 5
-#define kNaClLengthOfCallImm 5
-#define kNaClLengthOfCallMembase (kNaClLengthOfCallReg + 6)
+#define kx86NaClLengthOfCallReg 5
+#define kx86NaClLengthOfCallImm 5
+#define kx86NaClLengthOfCallMembase (kx86NaClLengthOfCallReg + 6)
 
 #endif  /* __native_client_codegen__ */
 
@@ -2229,6 +2380,17 @@ typedef enum {
 	X86_SSE_PEXTRB = 0x14,/*sse41*/
 	X86_SSE_PEXTRW = 0xC5,
 	X86_SSE_PEXTRD = 0x16,/*sse41*/
+
+	X86_SSE_SHUFP = 0xC6,	
+
+	X86_SSE_CVTDQ2PD = 0xE6,
+	X86_SSE_CVTDQ2PS = 0x5B,
+	X86_SSE_CVTPD2DQ = 0xE6,
+	X86_SSE_CVTPD2PS = 0x5A,
+	X86_SSE_CVTPS2DQ = 0x5B,
+	X86_SSE_CVTPS2PD = 0x5A,
+	X86_SSE_CVTTPD2DQ = 0xE6,
+	X86_SSE_CVTTPS2DQ = 0x5B,
 } X86_SSE_Opcode;
 
 
@@ -2275,6 +2437,21 @@ typedef enum {
 		x86_membase_emit ((inst), (reg), (basereg), (disp));	\
 	} while (0)
 
+#define x86_sse_alu_reg_reg_imm8(inst,opc,dreg,reg, imm8)	\
+	do {	\
+		x86_codegen_pre(&(inst), 4); \
+		*(inst)++ = (unsigned char)0x0F;	\
+		*(inst)++ = (unsigned char)(opc);	\
+		x86_reg_emit ((inst), (dreg), (reg));	\
+		*(inst)++ = (unsigned char)(imm8);	\
+	} while (0)
+
+#define x86_sse_alu_pd_reg_reg_imm8(inst,opc,dreg,reg, imm8)       \
+	do {    \
+		x86_codegen_pre(&(inst), 5); \
+		*(inst)++ = (unsigned char)0x66;        \
+		x86_sse_alu_reg_reg_imm8 ((inst), (opc), (dreg), (reg), (imm8)); \
+	} while (0)
 
 #define x86_sse_alu_pd_reg_reg(inst,opc,dreg,reg)       \
 	do {    \
diff --git a/mono/benchmark/Makefile.in b/mono/benchmark/Makefile.in
index 716915d..3272fe5 100644
--- a/mono/benchmark/Makefile.in
+++ b/mono/benchmark/Makefile.in
@@ -133,6 +133,7 @@ MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
 MONO_DL_NEED_USCORE = @MONO_DL_NEED_USCORE@
 MONO_NACL_ALIGN_MASK_OFF = @MONO_NACL_ALIGN_MASK_OFF@
+MOONLIGHT_DEFINES = @MOONLIGHT_DEFINES@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
diff --git a/mono/cil/Makefile.in b/mono/cil/Makefile.in
index 8f9f9e9..9859c2d 100644
--- a/mono/cil/Makefile.in
+++ b/mono/cil/Makefile.in
@@ -145,6 +145,7 @@ MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
 MONO_DL_NEED_USCORE = @MONO_DL_NEED_USCORE@
 MONO_NACL_ALIGN_MASK_OFF = @MONO_NACL_ALIGN_MASK_OFF@
+MOONLIGHT_DEFINES = @MOONLIGHT_DEFINES@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
diff --git a/mono/dis/ChangeLog b/mono/dis/ChangeLog
index d3df475..76a8245 100644
--- a/mono/dis/ChangeLog
+++ b/mono/dis/ChangeLog
@@ -1,3 +1,11 @@
+2010-11-14  Zoltan Varga  <vargaz at gmail.com>
+
+	Remove the unused and incomplete CMake build scripts for now.
+
+2010-09-20  Alan McGovern  <alan.mcgovern at gmail.com>
+
+	[monodis] Ensure we don't try to free uninitialized memory.
+
 2010-08-04  Marek Safar  <marek.safar at gmail.com>
 
 	Add escaping for legacy keyword.
diff --git a/mono/dis/Makefile.in b/mono/dis/Makefile.in
index c5c0838..bac55c3 100644
--- a/mono/dis/Makefile.in
+++ b/mono/dis/Makefile.in
@@ -169,6 +169,7 @@ MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
 MONO_DL_NEED_USCORE = @MONO_DL_NEED_USCORE@
 MONO_NACL_ALIGN_MASK_OFF = @MONO_NACL_ALIGN_MASK_OFF@
+MOONLIGHT_DEFINES = @MOONLIGHT_DEFINES@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
diff --git a/mono/dis/main.c b/mono/dis/main.c
index 37d389b..d4719ca 100644
--- a/mono/dis/main.c
+++ b/mono/dis/main.c
@@ -862,8 +862,10 @@ dis_method_list (const char *klass_name, MonoImage *m, guint32 start, guint32 en
 		if (ms != NULL){
 			sig_str = dis_stringify_method_signature (m, ms, i + 1, container, FALSE);
 			method_name = mono_metadata_string_heap (m, cols [MONO_METHOD_NAME]);
-		} else
+		} else {
+			sig_str = NULL;
 			method_name = g_strdup ("<NULL METHOD SIGNATURE>");
+		}
 
 		fprintf (output, "    // method line %d\n", i + 1);
 		fprintf (output, "    .method %s", flags);
diff --git a/mono/interpreter/Makefile.in b/mono/interpreter/Makefile.in
index 6e33158..268c03f 100644
--- a/mono/interpreter/Makefile.in
+++ b/mono/interpreter/Makefile.in
@@ -179,6 +179,7 @@ MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
 MONO_DL_NEED_USCORE = @MONO_DL_NEED_USCORE@
 MONO_NACL_ALIGN_MASK_OFF = @MONO_NACL_ALIGN_MASK_OFF@
+MOONLIGHT_DEFINES = @MOONLIGHT_DEFINES@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
diff --git a/mono/io-layer/ChangeLog b/mono/io-layer/ChangeLog
index b6c9944..f442535 100644
--- a/mono/io-layer/ChangeLog
+++ b/mono/io-layer/ChangeLog
@@ -1,3 +1,47 @@
+2011-01-05  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	[sockets] Fixed reading blocking flag
+
+	Calling ioctlsocket() would set the flag... Thanks to Thad
+	Thompson for finding this.
+
+2010-12-21  Kenneth Bell  <ken.git at chezbell.org.uk>
+
+	Add block device support to file_getfilesize on Linux
+
+	FileStream.Length for a block device (such as '/dev/sr0') now
+	returns actual size, rather than Zero on Linux.
+
+2010-12-20  Elijah Taylor  <elijahtaylor at google.com>
+
+	Changes to get NaCl builds working minimally
+
+2010-12-14  Elijah Taylor  <elijahtaylor at google.com>
+
+	Merge mono/io-layer, mono/metadata, mono/arch/x86 and configure.in
+	for Native Client
+
+2010-12-06  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Fix Process.HasExited regression
+
+	When we have a pseudo handle, we can at least check whether the
+	process is alive or not, instead of always returning FALSE.
+
+	Fixes bug #650979.
+
+2010-11-21  Zoltan Varga  <vargaz at gmail.com>
+
+	Unref all handles on shutdown so their memory is freed.
+
+2010-11-19  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix the thumb build.
+
+2010-11-14  Zoltan Varga  <vargaz at gmail.com>
+
+	Remove the unused and incomplete CMake build scripts for now.
+
 2010-11-02  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
 
 	Renaming a dangling symlink works now
@@ -6,6 +50,14 @@
 
 	Fixes bug #650779.
 
+2010-10-29  Geoff Norton  <grompf at sublimeintervention.com>
+
+	[OSX] Fix DriveInfo.GetDrives on OSX [Bug #643910]
+
+	Merge a patch from John Labovitz <johnl at johnlabovitz.com> which
+	correctly populates the DriveInfo structure on OSX instead of
+	returning random values.
+
 2010-10-21  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
 
 	Replace EnumProcesses with OpenProcess
@@ -17,23 +69,12 @@
 	Fixes bug #648133 (note that you need MONO_ENABLE_SHM for this to
 	work)
 
-2010-09-04  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
-
-	Fixed GetLogicalDriveString
-
-	When calling GetLogicalDriveString, icall.c was passing the length
-	in the wrong units.
-
-	GetLogicalDriveString now translates any octal sequence found into
-	its corresponding byte. Use the UTF16 length ('items_written')
-	instead of the UTF8 input string length ('items_read') when
-	computing the total size.
-
-2010-09-14  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+2010-10-21  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
 
-	GetProcessById now works on the Mac too
+	No need to use a GArray in EnumProcesses
 
-	Ditto. This should fix MD problems when SHM is disabled.
+	Use the provided array instead of creating a new one and then
+	copying it to the result.
 
 2010-10-05  Michael Hutchinson  <mhutchinson at novell.com>
 
@@ -74,6 +115,18 @@
 	The wapi init functions call this even when shared is compiled
 	out, lets just return FALSE to get into the right codepaths.
 
+2010-09-04  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Fixed GetLogicalDriveString
+
+	When calling GetLogicalDriveString, icall.c was passing the length
+	in the wrong units.
+
+	GetLogicalDriveString now translates any octal sequence found into
+	its corresponding byte. Use the UTF16 length ('items_written')
+	instead of the UTF8 input string length ('items_read') when
+	computing the total size.
+
 2010-08-26  Zoltan Varga  <vargaz at gmail.com>
 
 	Store information about file shares in a hash table instead of a
diff --git a/mono/io-layer/Makefile.in b/mono/io-layer/Makefile.in
index 498a1a2..5580e53 100644
--- a/mono/io-layer/Makefile.in
+++ b/mono/io-layer/Makefile.in
@@ -185,6 +185,7 @@ MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
 MONO_DL_NEED_USCORE = @MONO_DL_NEED_USCORE@
 MONO_NACL_ALIGN_MASK_OFF = @MONO_NACL_ALIGN_MASK_OFF@
+MOONLIGHT_DEFINES = @MOONLIGHT_DEFINES@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
diff --git a/mono/io-layer/atomic.h b/mono/io-layer/atomic.h
index 5237ae5..e45cfcf 100644
--- a/mono/io-layer/atomic.h
+++ b/mono/io-layer/atomic.h
@@ -92,7 +92,7 @@ static inline gpointer InterlockedCompareExchangePointer(volatile gpointer *dest
 	gpointer old;
 
 	__asm__ __volatile__ ("lock; "
-#ifdef __x86_64__
+#if defined(__x86_64__)  && !defined(__native_client__)
 			      "cmpxchgq"
 #else
 			      "cmpxchgl"
@@ -154,7 +154,7 @@ static inline gpointer InterlockedExchangePointer(volatile gpointer *val,
 	gpointer ret;
 	
 	__asm__ __volatile__ ("1:; lock; "
-#ifdef __x86_64__
+#if defined(__x86_64__)  && !defined(__native_client__)
 			      "cmpxchgq"
 #else
 			      "cmpxchgl"
@@ -752,6 +752,7 @@ static inline gint32 InterlockedCompareExchange(volatile gint32 *dest, gint32 ex
 				"mov	%0, #0\n"
 				"ldrex %1, [%2]\n"
 				"teq	%1, %3\n"
+				"it eq\n"
 				"strexeq %0, %4, [%2]\n"
 				"teq %0, #0\n"
 				"bne 1b\n"
@@ -789,6 +790,7 @@ static inline gpointer InterlockedCompareExchangePointer(volatile gpointer *dest
 				"mov	%0, #0\n"
 				"ldrex %1, [%2]\n"
 				"teq	%1, %3\n"
+				"it eq\n"
 				"strexeq %0, %4, [%2]\n"
 				"teq %0, #0\n"
 				"bne 1b\n"
diff --git a/mono/io-layer/handles.c b/mono/io-layer/handles.c
index 0dbc5ed..b69be1b 100644
--- a/mono/io-layer/handles.c
+++ b/mono/io-layer/handles.c
@@ -186,11 +186,9 @@ static void handle_cleanup (void)
 		for(j = SLOT_OFFSET (0); j < _WAPI_HANDLE_INITIAL_COUNT; j++) {
 			struct _WapiHandleUnshared *handle_data = &_wapi_private_handles[i][j];
 			int type = handle_data->type;
-			
+			gpointer handle = GINT_TO_POINTER (i*_WAPI_HANDLE_INITIAL_COUNT+j);
 			
 			if (_WAPI_SHARED_HANDLE (type)) {
-				gpointer handle = GINT_TO_POINTER (i*_WAPI_HANDLE_INITIAL_COUNT+j);
-				
 				if (type == WAPI_HANDLE_THREAD) {
 					/* Special-case thread handles
 					 * because they need extra
@@ -207,14 +205,14 @@ static void handle_cleanup (void)
 					 */
 					_wapi_thread_set_termination_details (handle, 0);
 				}
+			}
 				
-				for(k = handle_data->ref; k > 0; k--) {
+			for(k = handle_data->ref; k > 0; k--) {
 #ifdef DEBUG
-					g_message ("%s: unreffing %s handle %p", __func__, _wapi_handle_typename[type], handle);
+				g_message ("%s: unreffing %s handle %p", __func__, _wapi_handle_typename[type], handle);
 #endif
 					
-					_wapi_handle_unref (handle);
-				}
+				_wapi_handle_unref (handle);
 			}
 		}
 	}
diff --git a/mono/io-layer/io.c b/mono/io-layer/io.c
index 64a15e6..e060a7d 100644
--- a/mono/io-layer/io.c
+++ b/mono/io-layer/io.c
@@ -28,6 +28,10 @@
 #include <fnmatch.h>
 #include <stdio.h>
 #include <utime.h>
+#ifdef __linux__
+#include <sys/ioctl.h>
+#include <linux/fs.h>
+#endif
 
 #include <mono/io-layer/wapi.h>
 #include <mono/io-layer/wapi-private.h>
@@ -798,6 +802,34 @@ static guint32 file_getfilesize(gpointer handle, guint32 *highsize)
 		return(INVALID_FILE_SIZE);
 	}
 	
+	/* fstat indicates block devices as zero-length, so go a different path */
+#ifdef BLKGETSIZE64
+	if (S_ISBLK(statbuf.st_mode)) {
+		guint64 bigsize;
+		if (ioctl(fd, BLKGETSIZE64, &bigsize) < 0) {
+#ifdef DEBUG
+			g_message ("%s: handle %p ioctl BLKGETSIZE64 failed: %s",
+				   __func__, handle, strerror(errno));
+#endif
+
+			_wapi_set_last_error_from_errno ();
+			return(INVALID_FILE_SIZE);
+		}
+		
+		size = bigsize & 0xFFFFFFFF;
+		if (highsize != NULL) {
+			*highsize = bigsize>>32;
+		}
+
+#ifdef DEBUG
+		g_message ("%s: Returning block device size %d/%d",
+			   __func__, size, *highsize);
+#endif
+	
+		return(size);
+	}
+#endif
+	
 #ifdef HAVE_LARGE_FILE_SUPPORT
 	size = statbuf.st_size & 0xFFFFFFFF;
 	if (highsize != NULL) {
@@ -3682,6 +3714,7 @@ gboolean GetDiskFreeSpaceEx(const gunichar2 *path_name, WapiULargeInteger *free_
 	gboolean isreadonly;
 	gchar *utf8_path_name;
 	int ret;
+	unsigned long block_size;
 
 	if (path_name == NULL) {
 		utf8_path_name = g_strdup (g_get_current_dir());
@@ -3706,9 +3739,11 @@ gboolean GetDiskFreeSpaceEx(const gunichar2 *path_name, WapiULargeInteger *free_
 #ifdef HAVE_STATVFS
 		ret = statvfs (utf8_path_name, &fsstat);
 		isreadonly = ((fsstat.f_flag & ST_RDONLY) == ST_RDONLY);
+		block_size = fsstat.f_frsize;
 #elif defined(HAVE_STATFS)
 		ret = statfs (utf8_path_name, &fsstat);
 		isreadonly = ((fsstat.f_flags & MNT_RDONLY) == MNT_RDONLY);
+		block_size = fsstat.f_bsize;
 #endif
 	} while(ret == -1 && errno == EINTR);
 
@@ -3728,13 +3763,13 @@ gboolean GetDiskFreeSpaceEx(const gunichar2 *path_name, WapiULargeInteger *free_
 			free_bytes_avail->QuadPart = 0;
 		}
 		else {
-			free_bytes_avail->QuadPart = fsstat.f_bsize * fsstat.f_bavail;
+			free_bytes_avail->QuadPart = block_size * (guint64)fsstat.f_bavail;
 		}
 	}
 
 	/* total number of bytes available for non-root */
 	if (total_number_of_bytes != NULL) {
-		total_number_of_bytes->QuadPart = fsstat.f_bsize * fsstat.f_blocks;
+		total_number_of_bytes->QuadPart = block_size * (guint64)fsstat.f_blocks;
 	}
 
 	/* total number of bytes available for root */
@@ -3743,7 +3778,7 @@ gboolean GetDiskFreeSpaceEx(const gunichar2 *path_name, WapiULargeInteger *free_
 			total_number_of_free_bytes->QuadPart = 0;
 		}
 		else {
-			total_number_of_free_bytes->QuadPart = fsstat.f_bsize * fsstat.f_bfree;
+			total_number_of_free_bytes->QuadPart = block_size * (guint64)fsstat.f_bfree;
 		}
 	}
 	
diff --git a/mono/io-layer/posix.c b/mono/io-layer/posix.c
index 7325290..a7781bd 100644
--- a/mono/io-layer/posix.c
+++ b/mono/io-layer/posix.c
@@ -60,7 +60,8 @@ gpointer _wapi_stdhandle_create (int fd, const gchar *name)
 	g_message("%s: creating standard handle type %s, fd %d", __func__,
 		  name, fd);
 #endif
-	
+
+#if !defined(__native_client__)	
 	/* Check if fd is valid */
 	do {
 		flags=fcntl(fd, F_GETFL);
@@ -78,11 +79,18 @@ gpointer _wapi_stdhandle_create (int fd, const gchar *name)
 		SetLastError (_wapi_get_win32_file_error (errno));
 		return(INVALID_HANDLE_VALUE);
 	}
+	file_handle.fileaccess=convert_from_flags(flags);
+#else
+	/* 
+	 * fcntl will return -1 in nacl, as there is no real file system API. 
+	 * Yet, standard streams are available.
+	 */
+	file_handle.fileaccess = (fd == STDIN_FILENO) ? GENERIC_READ : GENERIC_WRITE;
+#endif
 
 	file_handle.filename = g_strdup(name);
 	/* some default security attributes might be needed */
 	file_handle.security_attributes=0;
-	file_handle.fileaccess=convert_from_flags(flags);
 
 	/* Apparently input handles can't be written to.  (I don't
 	 * know if output or error handles can't be read from.)
diff --git a/mono/io-layer/processes.c b/mono/io-layer/processes.c
index 1ce52fa..33037f1 100644
--- a/mono/io-layer/processes.c
+++ b/mono/io-layer/processes.c
@@ -1624,8 +1624,7 @@ gboolean EnumProcesses (guint32 *pids, guint32 len, guint32 *needed)
 #else
 gboolean EnumProcesses (guint32 *pids, guint32 len, guint32 *needed)
 {
-	GArray *processes = g_array_new (FALSE, FALSE, sizeof(pid_t));
-	guint32 fit, i, j;
+	guint32 fit, i;
 	DIR *dir;
 	struct dirent *entry;
 	
@@ -1635,29 +1634,22 @@ gboolean EnumProcesses (guint32 *pids, guint32 len, guint32 *needed)
 	if (dir == NULL) {
 		return(FALSE);
 	}
-	while((entry = readdir (dir)) != NULL) {
-		if (isdigit (entry->d_name[0])) {
-			char *endptr;
-			pid_t pid = (pid_t)strtol (entry->d_name, &endptr, 10);
 
-			if (*endptr == '\0') {
-				/* Name was entirely numeric, so was a
-				 * process ID
-				 */
-				g_array_append_val (processes, pid);
-			}
-		}
-	}
-	closedir (dir);
+	i = 0;
+	fit = len / sizeof (guint32);
+	while(i < fit && (entry = readdir (dir)) != NULL) {
+		pid_t pid;
+		char *endptr;
 
-	fit=len/sizeof(guint32);
-	for (i = 0, j = 0; j < fit && i < processes->len; i++) {
-		pids[j++] = g_array_index (processes, pid_t, i);
-	}
+		if (!isdigit (entry->d_name[0]))
+			continue;
 
-	g_array_free (processes, TRUE);
-	
-	*needed = j * sizeof(guint32);
+		pid = (pid_t) strtol (entry->d_name, &endptr, 10);
+		if (*endptr == '\0')
+			pids [i++] = (guint32) pid;
+	}
+	closedir (dir);
+	*needed = i * sizeof(guint32);
 	
 	return(TRUE);
 }
@@ -1711,10 +1703,9 @@ gpointer OpenProcess (guint32 req_access G_GNUC_UNUSED, gboolean inherit G_GNUC_
 	g_message ("%s: looking for process %d", __func__, pid);
 #endif
 
-	if (_wapi_shm_enabled ())
-		handle = _wapi_search_handle (WAPI_HANDLE_PROCESS,
-					      process_open_compare,
-					      GUINT_TO_POINTER (pid), NULL, TRUE);
+	handle = _wapi_search_handle (WAPI_HANDLE_PROCESS,
+				      process_open_compare,
+				      GUINT_TO_POINTER (pid), NULL, TRUE);
 	if (handle == 0) {
 #if defined(PLATFORM_MACOSX) || defined(__OpenBSD__)
 		if ((kill(pid, 0) == 0) || (errno == EPERM)) {
@@ -1749,6 +1740,7 @@ gboolean GetExitCodeProcess (gpointer process, guint32 *code)
 {
 	struct _WapiHandle_process *process_handle;
 	gboolean ok;
+	guint32 pid = -1;
 	
 	mono_once (&process_current_once, process_set_current);
 
@@ -1756,13 +1748,27 @@ gboolean GetExitCodeProcess (gpointer process, guint32 *code)
 		return(FALSE);
 	}
 	
+	pid = GPOINTER_TO_UINT (process) - _WAPI_PROCESS_UNHANDLED;
 	if ((GPOINTER_TO_UINT (process) & _WAPI_PROCESS_UNHANDLED) == _WAPI_PROCESS_UNHANDLED) {
 		/* This is a pseudo handle, so we don't know what the
-		 * exit code was
+		 * exit code was, but we can check whether it's alive or not
 		 */
-		return(FALSE);
+#if defined(PLATFORM_MACOSX) || defined(__OpenBSD__)
+		if ((kill(pid, 0) == 0) || (errno == EPERM)) {
+#elif defined(__HAIKU__)
+		team_info teamInfo;
+		if (get_team_info ((team_id)pid, &teamInfo) == B_OK) {
+#else
+		gchar *dir = g_strdup_printf ("/proc/%d", pid);
+		if (!access (dir, F_OK)) {
+#endif
+			*code = STILL_ACTIVE;
+			return TRUE;
+		} else {
+			return FALSE;
+		}
 	}
-	
+
 	ok=_wapi_lookup_handle (process, WAPI_HANDLE_PROCESS,
 				(gpointer *)&process_handle);
 	if(ok==FALSE) {
diff --git a/mono/io-layer/sockets.c b/mono/io-layer/sockets.c
index 2a88bd4..c068f06 100644
--- a/mono/io-layer/sockets.c
+++ b/mono/io-layer/sockets.c
@@ -7,9 +7,10 @@
  * (C) 2002 Ximian, Inc.
  */
 
+#include <config.h>
+
 #ifndef DISABLE_SOCKETS
 
-#include <config.h>
 #include <glib.h>
 #include <pthread.h>
 #include <errno.h>
@@ -716,15 +717,15 @@ int _wapi_send(guint32 fd, const void *msg, size_t len, int send_flags)
 		g_message ("%s: send error: %s", __func__, strerror (errno));
 #endif
 
+#ifdef O_NONBLOCK
 		/* At least linux returns EAGAIN/EWOULDBLOCK when the timeout has been set on
 		 * a blocking socket. See bug #599488 */
 		if (errnum == EAGAIN) {
-			gboolean nonblock;
-
-			ret = ioctlsocket (fd, FIONBIO, (gulong *) &nonblock);
-			if (ret != SOCKET_ERROR && !nonblock)
+			ret = fcntl (fd, F_GETFL, 0);
+			if (ret != -1 && (ret & O_NONBLOCK) == 0)
 				errnum = ETIMEDOUT;
 		}
+#endif /* O_NONBLOCK */
 		errnum = errno_to_WSA (errnum, __func__);
 		WSASetLastError (errnum);
 		
diff --git a/mono/metadata/ChangeLog b/mono/metadata/ChangeLog
index 9aa08c8..7c438f2 100644
--- a/mono/metadata/ChangeLog
+++ b/mono/metadata/ChangeLog
@@ -1,58 +1,1476 @@
+2011-01-18  Zoltan Varga  <vargaz at gmail.com>
+
+	Disable some of the FastCopy fast paths since they are racy.
+
+2011-01-18  Zoltan Varga  <vargaz at gmail.com>
+
+	Allow only primitive types/enums in RuntimeHelpers.InitializeArray
+	().
+
+2011-01-17  Zoltan Varga  <vargaz at gmail.com>
+
+	Make runtime invoke wrappers use cdecl cconv on windows.
+
+2011-01-17  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* verify.c (is_valid_generic_instantiation): Don't check if any
+	argument is broken during constraint check as an instance should
+	be valid, but not realizable, even if it has broken arguments.
+
+	Fixes one of the issues with #664612
+
+2011-01-17  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix the previous marshalling change so it only applies to chars,
+	not structures which contain char fields.
+
+2011-01-16  Zoltan Varga  <vargaz at gmail.com>
+
+	Pass the string encoding to emit_struct_conv () so marshalling of
+	char arrays works on big-ending machines like s390/ppc64.
+
+2011-01-13  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Fix 2.0 remapping of System.Transations to 2.0 and not 3.5.
+
+2011-01-12  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* verify.c: mono_class_is_assignable_from can't handle
+	IList<GTD<T>> x GTD[] since GTD[] won't have the right iface slots
+	set. This isn't a problem for the runtime since GTD[] will never
+	happen as it's an unrealizable type.
+
+	Fixes #663815
+
+2011-01-12  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* verify.c (mono_type_is_valid_type_in_context_full): The trick of
+	encoding the GTD as an instantiation over its own arguments is
+	also valid for component types such as GTD[] GTD[,] and Foo<GTD>.
+
+2011-01-12  Atsushi Eno  <atsushi at ximian.com>
+
+	Fix cygwin build.
+
+2011-01-11  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix a regression introduced by db4299a1.
+
+2011-01-10  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* assembly.c: * domain.c: * image.c: * coree.c: Coree funcionality
+	is now under the ENABLE_COREE define that is not set by default.
+	The current code breaks the verification infrastructure.
+
+2011-01-10  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* class.c (mono_class_get_virtual_methods): Handle missing methods
+	in the methods array.
+
+	Fixes #572223
+
+	Patch by Sebastien Pouliot <spouliot at novell.com>
+
+2011-01-07  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Remove debug spew
+
+2011-01-06  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* marshal.c (emit_marshal_custom): If the lookup for
+	ICustomMarshaler fails, emit code to raise an exception instead of
+	asserting.
+
+	Fixes #560334
+
+2011-01-06  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* verify.c (mono_method_verify): If neither the method or its
+	class is generic a signature can't have type parametets.
+
+	Fixes #662238
+
+2011-01-05  Mark Probst  <mark.probst at gmail.com>
+
+	[sgen] Always use the GC descriptor instead of
+	MonoClass.has_references.
+
+	has_references can be set even though the class has no references
+	registered by the GC. One case is Ephemeron. Now we always go by
+	the GC descriptor which holds the information relevant to SGen.
+
+	This fixes a crash in the 4.0 corlib testsuite.
+
+2011-01-05  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* class.c (mono_generic_class_get_class): Use the checked version
+	of mono_class_inflate_generic_class to avoid aborting on error.
+
+	Fixes #560327
+
+2011-01-04  Elijah Taylor  <elijahtaylor at google.com>
+
+	fix IMT_REG assignments that got switched for non-nacl builds,
+	provide no-op versions of nacl routines to avoid #ifdef's all over
+
+2011-01-03  Zoltan Varga  <vargaz at gmail.com>
+
+	Implement VBByRefStr marshalling. Fixes #661917.
+
+2011-01-03  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* reflection.c: The copy versions of type/hash functions is no
+	longer needed. Just get rid of them which brings some niceties
+	such such as support for FNPTR.
+
+2011-01-03  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix a warning.
+
+2011-01-03  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* class.c (mono_class_implement_interface_slow): If the reflection
+	type has not been realized, ignore it since can't affort to do it
+	from here.
+
+	Fixes #656262
+
+2011-01-03  Paolo Molaro  <lupus at oddwiz.org>
+
+	Allow the special ECMA key when parsing assembly names
+	(bug#660570).
+
+2011-01-03  Zoltan Varga  <vargaz at gmail.com>
+
+	Avoid computing GC maps if precise stack marking is disabled.
+
+2011-01-03  Zoltan Varga  <vargaz at gmail.com>
+
+	Make conservative stack marking the default for now.
+
+2011-01-03  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix some merge problems.
+
+2010-11-10  Zoltan Varga  <vargaz at gmail.com>
+
+	Remove obsolete conservative-stack-mark MONO_GC_DEBUG option, it
+	is superseded by a MONO_GC_PARAMS option.
+
+2010-10-11  Zoltan Varga  <vargaz at gmail.com>
+
+	Add stats for the number of pinned objects during all collections.
+	Avoid scanning the frames above the start_wrapper () frame. Rework
+	start_wrapper () to avoid references to the Thread object, so
+	hopefully it won't get pinned.
+
+2010-10-05  Zoltan Varga  <vargaz at gmail.com>
+
+	Log to stdout by default, so it matches up with the output of the
+	program.
+
+2010-10-05  Zoltan Varga  <vargaz at gmail.com>
+
+	Share the log file between sgen and the stack marking code.
+
+2010-10-04  Zoltan Varga  <vargaz at gmail.com>
+
+	Revert "Flush the actual file too in binary_protocol_flush_buffers
+	()."
+
+	This reverts commit 27bb69444433cd4eda1fccfcd45fcc619559a29d.
+
+2010-10-04  Zoltan Varga  <vargaz at gmail.com>
+
+	Flush the actual file too in binary_protocol_flush_buffers ().
+
+2010-10-02  Zoltan Varga  <vargaz at gmail.com>
+
+	Allow an argument to collect-before-allocs to force sgen to do a
+	minor collection every N allocations. Implement
+	major_ptr_is_in_non_pinned_space ().
+
+2010-09-26  Zoltan Varga  <vargaz at gmail.com>
+
+	Add an option to turn on CLEAR_AT_GC.
+
+2010-09-25  Zoltan Varga  <vargaz at gmail.com>
+
+	Don't assert in describe_ptr () for oldspace pointers.
+
+2010-09-22  Zoltan Varga  <vargaz at gmail.com>
+
+	Add a free callback to sgen, use it to free our TLS data.
+
+2010-09-22  Zoltan Varga  <vargaz at gmail.com>
+
+	Add the conservative-stack-mark option to the MONO_GC_DEBUG help.
+
+2010-09-06  Zoltan Varga  <vargaz at gmail.com>
+
+	Ongoing work.
+
+2011-01-03  Miguel de Icaza  <miguel at gnome.org>
+
+	[mscorlib] inside mscorlib Platform's value will be correct for
+	OSX, but userland still gets Unix.
+
+	This change allows mscorlib to get the real PlatformID, to split
+	code between OSX and general Unix. We continue to expose the value
+	4 (Unix) to usercode as changing this might break user
+	applications.
+
+2011-01-03  Zoltan Varga  <vargaz at gmail.com>
+
+	.gitignore.
+
+2010-12-24  Zoltan Varga  <vargaz at gmail.com>
+
+	Partially revert 759ebbb3df836e82fac2443dea23659ede972ce7: pass
+	the 'err' argument to mono_dl_open () again. Fixes #661356.
+
+2010-12-24  Zoltan Varga  <vargaz at gmail.com>
+
+	Remove an obsolete comment.
+
+2010-12-21  Andreia Gaita  <shana at jitted.com>
+
+	Moonlight build fixes and cleanup
+
+2010-12-20  Mark Probst  <mark.probst at gmail.com>
+
+	[sgen] Make Mark&Sweep compile without card tables.
+
+2010-12-19  Zoltan Varga  <vargaz at gmail.com>
+
+	Add functions to access values of ThreadStatic fields from another
+	threads.
+
+2010-12-17  Andreia Gaita  <shana at jitted.com>
+
+	Add --with-moon-gc to select the gc to use with moon (boehm/sgen)
+
+2010-12-17  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	[ThreadPool] Reset the abort state when unloading a domain
+
+	Properly reset the abort state of threadpool threads that
+	processed domain unloading or were running in a domain that was
+	being unloaded.
+
+	Thanks go to Kumpera for finding this out.
+
+2010-12-14  Elijah Taylor  <elijahtaylor at google.com>
+
+	Merge mono/io-layer, mono/metadata, mono/arch/x86 and configure.in
+	for Native Client
+
+2010-12-14  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* appdomain.c (unload_thread_main): Call function bindings
+	cleanup.
+
+	* assembly.c (mono_assembly_apply_binding): Dupe the content of
+	per-domain bindings. Assign a domain_id on such entries to be
+	possible to track them later.
+
+	* assembly.c (mono_assembly_cleanup_domain_bindings): New function
+	that removes per-domain bindings on unload.
+
+	* metadata-internals.h (MonoAssemblyBindingInfo): Add domain_id
+	field so it's possible to track if an entry is appdomain bound.
+
+2010-12-14  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* marshal.c (emit_struct_conv): Take the native type of the field
+	to decide what kind of conv to use if field is of type char.
+
+	* marshal.c (mono_pinvoke_is_unicode): Unify auto and default.
+
+	* marshal.c (emit_struct_conv_full): Kill this variant that
+	doesn't make any sense as structures are marshaled in the same way
+	regardless of the charset of the method.
+
+	* metadata.c (mono_type_to_unmanaged): Handle marshalspec for
+	char.
+
+	Fixes the regression on MD caused by 1f3cfba.
+
+2010-12-12  Bojan Rajkovic  <bojan at airpoweranalytics.com>
+
+	Use SIGXFSZ on FreeBSD too by checking for the __FreeBSD__ define.
+	Like Apple and OpenBSD, it doesn't have SIGPWR.
+
+2010-12-10  joncham  <joncham at gmail.com>
+
+	Use 2.0 instead of 1.0 when probing install dirs.
+
+2010-12-10  Sebastien Pouliot  <sebastien at ximian.com>
+
+	* security-core-clr.c: call mono_field_get_type_checked to ensure
+	the field's type is resolved since coreclr checks can occurs
+	before the "normal" check done by mono. Fix crashes in DRT#8005
+
+2010-12-10  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* marshal.c (emit_struct_conv): Add _full variant that takes an
+	extra boolean argument to tell if char is to be marshaled with one
+	or two bytes.
+
+	* marshal.c (emit_marshal_array): Use emit_struct_conv_full to
+	correctly marshal ansi char arrays.
+
+2010-12-09  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Add a few more undocumented bits to allowed AssemblyFlags
+
+	Fixes #657516
+
+2010-12-09  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* metadata-verify.c (verify_typedef_table): Fail if the token
+	index is encoded as zero.
+
+	Fixes #651682
+
+2010-12-08  Geoff Norton  <grompf at sublimeintervention.com>
+
+	Avoid leaking the name buffer since we already resolve this below
+
+2010-12-08  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* reflection.c (lookup_custom_attr): Since we memdup the returned
+	cattr, we better mark it as not cached.
+
+2010-12-08  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* verify.c (mono_type_is_valid_type_in_context): Refuse a GTD if
+	not at a root positision.
+
+	Fixes #656913
+
+2010-12-08  Zoltan Varga  <vargaz at gmail.com>
+
+	Mark runtime invoke wrappers as pinvoke, since they are called
+	from native code.
+
+2010-12-08  Zoltan Varga  <vargaz at gmail.com>
+
+	Update a comment.
+
+2010-12-08  Mark Probst  <mark.probst at gmail.com>
+
+	[sgen] Have an allocated block list for fixed-heap M&S, too.
+
+	It turns out we iterate over all allocated blocks often enough
+	that the way we did it for fixed-heap Mark&Sweep (iterating over
+	all blocks and jumping over the non-allocated ones) slows us down
+	considerably. So, use the same allocated block list as "regular"
+	Mark&Sweep, which also unifies the code a bit.
+
+2010-12-08  Mark Probst  <mark.probst at gmail.com>
+
+	[sgen] Don't increase degraded_mode in alloc_degraded().
+
+	Mature allocation uses the degraded allocation machinery to
+	allocate objects in the major space. Modifying degraded_mode in
+	those cases will actually put us into degraded mode which slows us
+	down immensely.
+
+2010-12-08  Zoltan Varga  <vargaz at gmail.com>
+
+	Tidy up the assembly loading log messages a bit.
+
+2010-12-07  Zoltan Varga  <vargaz at gmail.com>
+
+	Log images still loaded during shutdown.
+
+2010-12-07  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix some small memory leaks.
+
+2010-12-07  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* metadata-verify.c
+	(mono_verifier_verify_memberref_method_signature): Memberref
+	method signatures allow sentinels.
+
+2010-12-07  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* verify.c (mono_delegate_type_equal): Properly check if candidate
+	is a pointer type.
+
+	Fixes #657746
+
+2010-12-07  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* class.c (mono_class_create_from_typedef): Set failed enums to
+	extends int32 as the whole runtime can't handle this been null.
+
+	Fixes #657745
+
+2010-12-07  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* verify.c (do_newobj): Honor skip visibility request.
+
+	* verify.c (do_load_function_ptr): Ditto.
+
+	Fixes #657694
+
+2010-12-07  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* loader.c: Use new split functions.
+
+	* metadata-verify.c (parse_custom_mods): Make sure encoded type
+	tokens are not zero.
+
+	* metadata-verify.c (parse_generic_inst): Ditto.
+
+	* metadata-verify.c (parse_type): Ditto.
+
+	* metadata-verify.c (mono_verifier_verify_memberref_signature):
+	Replace this function with a pair that does field or method
+	verification.
+
+	Fixes #656914
+
+2010-12-06  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix a few SRE memory leaks.
+
+2010-12-06  Zoltan Varga  <vargaz at gmail.com>
+
+	Remove some #ifdef HAVE_SGEN_GC deps, centralize others to
+	gc-internal.h.
+
+2010-12-05  Zoltan Varga  <vargaz at gmail.com>
+
+	Make sgen-protocol.c into its own module.
+
+2010-12-04  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix a warning.
+
+2010-12-03  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* verify.c (do_ldstr): We encode string tokens in a weird way in
+	dynamic modules.
+
+2010-12-03  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Handle one more case we cmods can appear in odd places.
+
+2010-12-03  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* metadata-verify.c (parse_generic_inst): A ginst param can have a
+	cmod.
+
+	* metadata-verify.c (parse_param): We can have a cmod after the
+	byref.
+
+	* metadata-verify.c (parse_property_signature): A property
+	signature can have a cmod on the parameters.
+
+	Fixes the verifier for #656787
+
+2010-12-03  Mark Probst  <mark.probst at gmail.com>
+
+	[sgen] Make concurrent sweep user-selectable.
+
+	It's off by default for now.
+
+2010-12-02  Mark Probst  <mark.probst at gmail.com>
+
+	[sgen] Compute allowance when sweeping is finished.
+
+	Before sweeping hasn't finished we don't know how many major
+	blocks are in use, so we delay computing the minor collection
+	allowance until sweeping is done. In the mean time we use the
+	minimum allowance.
+
+2010-12-01  Mark Probst  <mark.probst at gmail.com>
+
+	[sgen] Concurrent sweep.
+
+2010-12-03  Zoltan Varga  <vargaz at gmail.com>
+
+	Parse custom modifiers in mono_type_create_from_typespec ().
+
+2010-12-01  Mark Probst  <mark.probst at gmail.com>
+
+	[sgen] Remove skip_size in sgen-scan-object.h.
+
+	Dead code.
+
+2010-12-01  Mark Probst  <mark.probst at gmail.com>
+
+	[sgen] Handle forwarding in mono_gc_scan_for_specific_ref().
+
+	This function is used for debugging purposes only. Previously it
+	didn't handle forwarding which meant that it couldn't be used
+	during a collection.
+
+2010-12-01  Mark Probst  <mark.probst at gmail.com>
+
+	[sgen] Zero freed blocks in fixed heap Mark&Sweep.
+
+	Fresh blocks must be zeroed, which means that when we free blocks
+	we must ensure that they are zeroed before they are used again.
+
+2010-12-01  Zoltan Varga  <vargaz at gmail.com>
+
+	Make sgen-los.c into a proper C module.
+
+2010-12-01  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Fix thread attaching
+
+2010-12-01  Zoltan Varga  <vargaz at gmail.com>
+
+	Move the DEBUG() macro to sgen-gc.h and resurrect debug logging in
+	the major collectors.
+
+2010-12-01  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix some warnings.
+
+2010-12-01  Zoltan Varga  <vargaz at gmail.com>
+
+	Handle LOS objects in describe_ptr ().
+
+2010-12-01  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* verify.c (do_load_function_ptr): Handle wrappers correctly.
+
+	* verify.c (do_sizeof): Remove superfluous check.
+
+	* verify.c (do_ldstr): Handle wrappers correctly.
+
+2010-12-01  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* metadata.c (mono_type_to_unmanaged): Return the appropriate type
+	for char based on unicode option.
+
+	* marshal.c (emit_marshal_array): Calculate char size based on
+	marshaling preferences.
+
+	Fixes #647267
+
+2010-11-30  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* gc.c: Implement mono_gc_alloc_mature for boehm and null-gc.
+
+	* sgen-gc.c (mono_gc_alloc_mature): Alloc using the degrated
+	machinery.
+
+	* threads.c (create_internal_thread_object): Alloc using
+	mono_gc_alloc_mature instead of mono_gc_alloc_pinned_obj as the
+	later requires explicit freeing and we don't do it.
+
+	* threads.c (create_thread_object): Ditto.
+
+2010-11-30  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* class.c (check_interface_method_override): Check if signatures
+	decoded correctly before comparing them.
+
+	Fixes #541815
+
+2010-11-30  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Fix token checking for dynamic methods.
+
+2010-11-29  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* verify.c (token_bounds_check): Check if token index is zero.
+
+	Fixes #651682
+
+2010-11-29  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Remove some junk I left by accident
+
+2010-11-29  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* security-core-clr.c (get_default_ctor): Handle nulls in
+	MonoClass::methods.
+
+	Fixes #569542
+
+2010-11-29  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* reflection.c (mono_image_create_token): Don't mono_class_init
+	here as it's not needed and break mcs for cases doing typeof()
+	over broken types.
+
+	Fixes a TLE in #653211
+
+2010-11-29  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	WIP
+
+2010-11-25  Mark Probst  <mark.probst at gmail.com>
+
+	[sgen] Recompute heap boundaries at each major collection.
+
+	Previously we updated heap boundaries when a new block was
+	allocated, but no updates were performed for freed blocks,
+	resulting in a constant increase in the heap boundaries which can
+	lead to unnecessary work during pinning.
+
+	Now we recompute the heap boundaries during the sweep phase at
+	each major collection.
+
+2010-11-29  Paolo Molaro  <lupus at oddwiz.org>
+
+	Forgot old header file in profiler.c.
+
+2010-11-29  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* class.c (make_generic_param_class): Don't assert if parent is
+	broken.
+
+	Fixes #653211
+
+2010-11-29  Paolo Molaro  <lupus at oddwiz.org>
+
+	Profiler: reomved the old builtin default profiler.
+
+	The new log profiler is now used automatically instead of the old
+	default profiler.
+
+2010-11-27  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Remove some culture caching dead code
+
+2010-11-27  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* threads.c: Remove culture caching machinery.
+
+	* icall-def.h: Ditto.
+
+	Fixes #318750 as a byproduct.
+
+2010-11-27  Zoltan Varga  <vargaz at gmail.com>
+
+	Throw an exception if a custom attr cannot be decoded. Fixes
+	#656058.
+
+2010-11-26  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* verify.c (mono_verifier_is_enabled_for_method): A dynamic method
+	has a different wrapper kind than regular methods.
+
+	* verify.c (mono_verifier_is_method_full_trust): Dynamic methods
+	can't be handled as fulltrust since they don't store proper origin
+	for verifying it.
+
+2010-11-26  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix the DISABLE_REFLECTION_EMIT build.
+
+2010-11-26  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix crashes inside find_method_in_metadata (). Fixes #561728.
+
+2010-11-25  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
+	CreateDelegate can be called with an abstract method in a similar
+	fashion to how ldvirtftn works.
+
+	Fixes #655741
+
+2010-11-25  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix a bug introduced by the last change to
+	mono_marshal_get_virtual_stelemref () in
+	r038598e503d3db631224288ca5295988c3d22288.
+
+2010-11-25  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* verify.c: Add new function to internal verifier API to check
+	method instantiations.
+
+	* reflection.c (mono_reflection_bind_generic_method_parameters):
+	Check the instantiation before returning it.
+
+	Fixes #655847
+
+2010-11-25  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Fix argument name on the exception
+
+2010-11-25  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* gc.c (alloc_handle): Set domain_ids if it's a weak ref handle.
+
+	* gc.c (mono_gchandle_set_target): Ditto.
+
+	Fixes #655669
+
+2010-11-24  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* class.c (mono_class_setup_interfaces): Don't free
+	MonoClass::interfaces on failure since this is now allocated from
+	a mempool.
+
+	Fixes #655749
+
+2010-11-24  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	[Sockets] Support Remote/LocalEndPoint for AF_UNIX
+
+	We were not handling correctly the AF_UNIX family when getting the
+	socket name or the peer name.
+
+	Fixes bug #655637.
+
+2010-11-24  Andreia Gaita  <shana at jitted.com>
+
+	[Moon] Speed up the moonlight build by stripping it down to the
+	bare basics
+
+2010-11-23  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* icall.c (ves_icall_Type_MakeGenericType): We can inflate into
+	the gtd and the verifier function is not able to handle it.
+
+2010-11-23  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Fix typo.
+
+2010-11-23  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Fix some array overflow bugs
+
+2010-11-23  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* class.c (mono_class_init): Check instantiations of generic
+	instances.
+
+	* icall.c (ves_icall_Type_MakeGenericType): Ditto.
+
+	* verify.c: Add mono_verifier_class_is_valid_generic_instantiation
+	to the internal API so generic instances can be checked.
+
+	Fixes #654136
+
+2010-11-22  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix a memory leak.
+
+2010-11-22  Zoltan Varga  <vargaz at gmail.com>
+
+	Allocate memory for generic instances from the mempool of the
+	image set they belong to. Use this to simplify the freeing of
+	these instances.
+
+2010-11-22  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* metadata-verify.c (is_valid_fixed_param): Handle arrays of
+	types. They can be encoded as 0x1B or 0x50.
+
+	* metadata-verify.c (is_valid_cattr_content): Ditto.
+
+	Fixes #655159
+
+2010-11-21  Zoltan Varga  <vargaz at gmail.com>
+
+	Allocate generic param constraint data from the image mempool.
+
+2010-11-21  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix some small memory leaks.
+
+2010-11-20  Zoltan Varga  <vargaz at gmail.com>
+
+	Add support for the processorArchitecture field in assembly names.
+	Fixes #655096.
+
+2010-11-19  Mark Probst  <mark.probst at gmail.com>
+
+	[sgen] Implement evacuation for parallel mark.
+
+2010-11-18  Mark Probst  <mark.probst at gmail.com>
+
+	[sgen] Use bit fields for the booleans in MSBlockInfo.
+
+2010-11-18  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* loader.c (method_from_methodspec): Don't crash if parsing of the
+	generic instance fails.
+
+	Fixed #560834
+
+2010-11-18  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* verify.c (do_invoke_method): Make sure the returned value is
+	valid in the caller's context.
+
+	Fixes #562324
+
+2010-11-17  joncham  <joncham at gmail.com>
+
+	Undefine AF_INET6 on windows to disable IPv6 for now.
+
+2010-11-17  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Updated remove_wsq.
+
+	remove_wsq() should only clean up the queue when the runtime is
+	shutting down. In any other case, removing a queue that still
+	contains work items is an error.
+
+2010-11-17  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Fix typo.
+
+	Thanks Rolf debugging this.
+
+2010-11-17  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Wrong return value in mono_sem_timedwait()
+
+	The return value of mono_sem_timedwait() with a timeout 0 was
+	incorrect (0=failure, !0=success instead of 0=success). This
+	worked on non-Windows platforms because the only call with timeout
+	0 was expecting the incorrect return value, but it made the mono
+	threadpool in Windows fail.
+
+	Fixes bug #653928.
+
+2010-11-17  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* loader.c (find_method_in_class): Properly handle failure of
+	loading a method.
+
+	* loader.c (find_method_in_class): Handle method load failure. We
+	can't just bail out since working code depends on working while
+	having broken methods in the mix.
+
+	Fixes #562009
+
+2010-11-16  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* loader.c (find_method): Instead of asserting when a type has its
+	interfaces missing, ignore them and keep searching.
+
+	Fixes #560346
+
+2010-11-16  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* class.c (mono_class_is_assignable_from): Simply return false if
+	any of the arguments is broken.
+
+	Fixes #651287
+
+2010-11-16  Paolo Molaro  <lupus at oddwiz.org>
+
+	* profiler-private.h, profiler.c, profiler.h: added API to
+	enumerate the roots used during a garbage collection. * sgen-gc.c:
+	enumerate roots if requested by the profiler.
+
+2010-11-16  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* metadata-verify.c (verify_cattr_table): Type column can't have a
+	zero index.
+
+	Fixes #651682
+
+2010-11-15  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* reflection.c (mono_reflection_method_on_tb_inst_get_handle):
+	Ensure the typebuilder had it's generic arguments initialized.
+
+	Fixes #652952
+
+2010-11-14  Zoltan Varga  <vargaz at gmail.com>
+
+	Remove the unused and incomplete CMake build scripts for now.
+
+2010-11-13  Vincent Povirk  <madewokherd at gmail.com>
+
+	Convert MONO_MARSHAL_CONV_LPSTR_STR to mono_string_to_utf16 on
+	windows.
+
+2010-11-13  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix a typo (DISABLE_SOCKET->DISABLE_SOCKETS).
+
+2010-11-13  Zoltan Varga  <vargaz at gmail.com>
+
+	Use CloseHandle () for closing process handles if HOST_WIN32 is
+	defined, so it works on windows based cross compilers.
+
+2010-11-12  Paolo Molaro  <lupus at oddwiz.org>
+
+	GC: changed the heap walk API to also report the offset of
+	referenced objects.
+
+2010-11-12  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* sgen-marksweep.c (major_copy_or_mark_object): Stop evacuating
+	major objects if we fail to alloc them.
+
+2010-11-11  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Don't disable IPv6 if bulding with VS.
+
+	When building with Cygwin or a cross-compiler there are at least 4
+	functions that are not present (inet_ntop, getaddrinfo,
+	getnameinfo and freeaddringo) so in these cases we just disable
+	IPv6. Note that Socket.OSSupportsIPv6 will still return true.
+
+	When building with VS, IPv6 will be supported without a problem.
+
+2010-11-11  Zoltan Varga  <vargaz at gmail.com>
+
+	Define mono_gc_get_card_table () for boehm/null gc too, to reduce
+	the number of sgen dependencies in mini/.
+
+2010-11-10  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* sgen-marksweep.c (major_copy_or_mark_object): Until we figure
+	out how to handle OOM while evacuating major objects lets assert.
+
+2010-11-10  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Handle OOM on string intern icall.
+
+2010-11-05  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Handle OOM with string interning.
+
+2010-11-05  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Handle OOM with string interning.
+
+2010-11-10  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* sgen-marksweep.c (major_copy_or_mark_object): Use a loop around
+	CAS'ng on failed memory allocation to make sure we have the right
+	behavior in place.
+
+2010-11-05  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* sgen-gc.c (collect_nursery): If any object was pinned after
+	initial pinning, sort the queue so build_nursery_fragments will
+	see the aditional objects. If pinning due to OOM happened ask for
+	a major collection.
+
+	* sgen-gc.c (major_do_collection): Adjust the pin queue if OOM
+	happened. Here we have to clean discarded entries before
+	optimizing the queue or we might end with interior pointers in the
+	mix.
+
+	* sgen-gc.c (sgen_collect_major_no_lock): New function so major
+	collectors can trigger a collection. They can't use public API
+	since the gc lock is not meant to be reentrant.
+
+	* sgen-major-copy-object.h (copy_object_no_checks): Pin the object
+	if we can't promote it.
+
+	* sgen-marksweep.c (alloc_obj): Return null if we fail to allocate
+	a block for a given freelist size.
+
+	* sgen-marksweep.c (major_alloc_degraded): Ditto.
+
+	* sgen-marksweep.c (major_copy_or_mark_object): Handle OOM.
+
+	* sgen-marksweep.c (major_alloc_small_pinned_obj): If allocation
+	fails, try a major collection since this is memory requested by
+	the runtime and it's much harder to handle failure.
+
+2010-11-05  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* sgen-gc.c (need_major_collection): Add a space_needed parameter
+	that is checked against the available space quota.
+
+	* sgen-gc.c (alloc_degraded): Adjust call to
+	need_major_collection. Pass zero as space_needed since it's won't
+	help to do a major gc if we're already doing degrated alloc and
+	old gen is full.
+
+	* sgen-gc.c (alloc_large_inner): Pass size to
+	need_major_collection as shrinking major might be needed to meet
+	the space quota for.
+
+2010-11-05  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* sgen-gc.c: Simple accounting with no los/major reserve.
+
+	* sgen-los.c: * sgen-marksweep.c: Account for allocation and
+	release of memory. Fail to allocate if above alloc quota.
+
+2010-11-05  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* sgen-gc.c (mono_gc_alloc_obj_nolock): * sgen-gc.c
+	(mono_gc_alloc_obj): * sgen-gc.c (mono_gc_alloc_vector): *
+	sgen-gc.c (mono_gc_alloc_array): * sgen-gc.c
+	(mono_gc_alloc_string): * sgen-gc.c (mono_gc_alloc_pinned_obj):
+	Handle allocation failure.
+
+2010-11-05  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* sgen-gc.c (mono_gc_base_init): Added new parameter. Right now it
+	is not used.
+
+2010-10-28  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Add boehm support for max-heap-size.
+
+	boehm-gc.c (mono_gc_base_init): Check MONO_GC_PARAMS environment
+	variable for max-heap-size.
+
+2010-11-05  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* sgen-gc.c (mono_sgen_parse_environment_string_extract_number):
+	Move this function to gc.c and rename.
+
+2010-10-28  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* object.c (mono_print_unhandled_exception): We can't really do a
+	ToString () during an OOM.
+
+2010-11-10  Zoltan Varga  <vargaz at gmail.com>
+
+	Allocate MonoInternalThread/MonoThread objects using
+	mono_gc_alloc_pinned () when using sgen, since they will be pinned
+	anyway.
+
+2010-11-10  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix a warning.
+
+2010-11-10  Paolo Molaro  <lupus at oddwiz.org>
+
+	* gc.c: set the name of the finalizer thread. * threadpool.c: set
+	the name of the threadpool worker threads.
+
+2010-11-10  Paolo Molaro  <lupus at oddwiz.org>
+
+	* profiler-private.h, profiler.c, profiler.h: users can now get a
+	callback when the name of a thread gets set when
+	MONO_PROFILE_THREADS is enabled. * threads.c: notify profilers
+	about thread name changes.
+
+2010-11-09  Paolo Molaro  <lupus at oddwiz.org>
+
+	* profiler-private.h, profiler.c, profiler.h: new API to get
+	notiffications when GC handles are created or destroyed. * gc.c:
+	notify the profiler on GC handle creation/destruction.
+
+2010-11-09  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* verify.c (mono_generic_param_is_constraint_compatible): Handle
+	transitive constraints where one type can only satisfy the
+	constraints required by means of the other types it's constainted
+	to. For example:
+
+	Bar<K> where K : IFace Foo<T, U> where T : U where U : IFace
+	Bar<T>
+
+	On the above example, T can only satisfy K constraint by means of
+	the constraints that U has.
+
+2010-11-09  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix the DISABLE_REFLECTION_EMIT build. Fixes #652188.
+
+2010-11-08  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* verify.c (verifier_load_field): Fail if the field is literal.
+
+	Fixes #595044
+
+2010-11-08  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* metadata-verify.c (is_valid_method_header): The local token
+	cannot have a zero index.
+
+	* metadata.c (mono_metadata_parse_mh_full): Fail if locals token
+	index is zero.
+
+	Fixes #651682
+
+2010-11-05  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* metadata.c (do_mono_metadata_parse_type): It's possible that
+	we're decoding a reference to a class that it's currently been
+	loaded so byval_arg.type will be zero.
+
+2010-11-06  Mark Probst  <mark.probst at gmail.com>
+
+	[sgen] Don't compile evacuation for parallel mark.
+
+	Parallel Mark doesn't yet support evacuation, so don't compile it
+	in.
+
+2010-10-30  Mark Probst  <mark.probst at gmail.com>
+
+	[sgen] User-settable evacuation threshold.
+
+	A MONO_GC_PARAMS option for setting the evacuation threshold.
+
+2010-10-30  Mark Probst  <mark.probst at gmail.com>
+
+	[sgen] Mark&Sweep evacuation.
+
+	When the occupancy for some block size falls below a certain
+	threshold the objects in that block size will be evacuated in the
+	next major collection, resulting in optimal occupancy.
+
+2010-10-29  Mark Probst  <mark.probst at gmail.com>
+
+	[sgen] Function for querying current collection generation.
+
+	This lets the major collector query whether the current collection
+	is a minor or a major one.
+
+2010-10-18  Mark Probst  <mark.probst at gmail.com>
+
+	[sgen] Dump Mark&Sweep heap occupancy.
+
+	For each block size dump the occupancy to the heap-dump file.
+
+2010-10-20  Mark Probst  <mark.probst at gmail.com>
+
+	[sgen] Flush the binary protocol file when protocol is flushed.
+
 2010-11-05  Zoltan Varga  <vargaz at gmail.com>
 
 	Fix DISABLE_REFLECTION_EMIT build.
 
-2010-10-12  Paolo Molaro  <lupus at oddwiz.org>
+2010-11-03  Rodrigo Kumpera  <kumpera at gmail.com>
 
-	* loader.c: we don't search the current directory anymore for
-	shared libraries referenced in DllImport attributes, as it has a
-	slight security risk. We search in the same directory where the
-	referencing image was loaded from, instead. Fixes bug# 641915.
+	* metadata.c (do_mono_metadata_parse_type): Fail if a valuetype is
+	encoded as MONO_TYPE_CLASS and vice-versa. This can't be done
+	easily in the verifier since it requires resolving the destination
+	type.
 
-2010-10-21  Rodrigo Kumpera  <kumpera at gmail.com>
+	Fixes #650936
 
-	Disable cardtable unde 64bits as it is broken for 2.8.
+2010-11-03  Rodrigo Kumpera  <kumpera at gmail.com>
 
-2010-09-03  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+	* metadata-verify.c (parse_type): Don't allow zero index type
+	tokens.
 
-	Allow ordinal entry points in windows.
+	* metadata.c (mono_metadata_decode_row): Assert on negative
+	indexes.
 
-	Windows allows entry point names like "#10" which refer to the Nth
-	function (n > 1 and less than the highest ordinal value in the
-	.def file).
+	Fixes #560359
 
-	Fixes bug #636966.
+2010-11-03  Rodrigo Kumpera  <kumpera at gmail.com>
 
-2010-09-04  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+	* pedump.c (verify_image_file): Finish initializing the runtime
+	here since at this point we can safely query what version the
+	supplied image requires.
 
-	Fixed GetLogicalDriveString
+	Fixes #650916
 
-	When calling GetLogicalDriveString, icall.c was passing the length
-	in the wrong units.
+2010-11-02  Paolo Molaro  <lupus at oddwiz.org>
 
-	GetLogicalDriveString now translates any octal sequence found into
-	its corresponding byte. Use the UTF16 length ('items_written')
-	instead of the UTF8 input string length ('items_read') when
-	computing the total size.
+	Introduced a GC heap walk API.
 
-2010-10-04  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+	This API is currently only implemented for the sgen GC. It can be
+	used to iterate over all the managed objects in the heap and it
+	allows to also easily track object references.
 
-	Map SO_EXCLUSIVEADDRUSE to !SO_REUSEADDR
+2010-11-03  Marek Habersack  <grendel at twistedcode.net>
 
-	This will make windows app that use that property work on *nix.
-	Fixes bug #643475.
+	[runtime] System.Web.Extensions must not be remapped to the
+	current framework.
+
+	The reason for this is applications which still use Sys.Web.Ext
+	1.0* (note: 1.0 does NOT mean the assembly is for the 1.x runtime
+	- it's for 2.0). Remapping would cause 1.0* not to be loaded,
+	instead a 3.5 or 4.0 assembly would be fetched.
+
+2010-11-02  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix the text of the Signatures size stat.
+
+2010-11-02  Zoltan Varga  <vargaz at gmail.com>
+
+	Add a stat for the memory occupied by MonoMethodSignature
+	structures.
+
+2010-11-02  Zoltan Varga  <vargaz at gmail.com>
+
+	Add a stat for the the memory occupied by MonoMethod structures.
+
+2010-10-31  Zoltan Varga  <vargaz at gmail.com>
+
+	Disable inlining if the assembly has a DebuggableAttribute with
+	the IsJITOptimizerDisabled flag set. Fixes #604486.
+
+2010-10-31  Zoltan Varga  <vargaz at gmail.com>
+
+	Call mono_field_get_type () in one place to fix an aot problem.
+
+2010-10-30  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix some copyright messages.
+
+2010-10-29  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* icall.c (ves_icall_MonoField_SetValueInternal): Handle lazy
+	field loading. Fixes buildbot crash.
+
+2010-10-29  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* icall.c (ves_icall_Type_GetGenericTypeDefinition_impl): Don't
+	mono_class_init the type. Fixes test-792.
+
+2010-10-29  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* icall.c (ves_icall_get_method_info): Use _checked variant and
+	avoid the assert.
+
+2010-10-29  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* class.c (mono_class_check_vtable_constraints): Only fetch the
+	class of generic arguments as those are the only ones we care
+	about. This fixes the case where a generic arguments has its
+	container as a constraint and we crash with a stackoverflow.
+
+2010-10-28  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* class.c (mono_class_create_from_typedef): If the type fails due
+	to a problem with the parent make sure we have byval_arg and
+	this_arg are setup properly as the whole runtime requires those
+	two to be setup even for broken types.
+
+2010-10-27  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* class.c (mono_class_create_from_typedef): Avoid a loader leak on
+	parent load.
+
+	* class.c (mono_method_signature_checked): Avoid a loader leak if
+	type parsing fails.
+
+2010-10-27  Geoff Norton  <grompf at sublimeintervention.com>
+
+	Fix the profiler thread start/end hooks for threadpool threads
+
+2010-10-27  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Only set lockTaken to TRUE if it did not timeout.
+
+2010-10-27  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* reflection.c (mono_param_get_objects_internal): Use checked
+	variant of mono_method_signature.
+
+2010-10-27  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* icall.c (ves_icall_Type_GetField): Use code path that lazy load
+	the field type.
+
+	Fixes #649522
+
+2010-10-27  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* loader.c (mono_loader_set_error_assembly_load): Don't g_warning
+	on failure. Use our tracing facility instead.
+
+2010-10-27  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* icall.c: New icall to resolve ::Attributes so it can avoid
+	loading the signature and work around methods with broken
+	signatures.
+
+	Fixes #649527
+
+2010-10-26  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* monitor.c: New icall for the above.
+
+	Fixes #649159
+
+2010-10-26  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* reflection.c (field_encode_signature): If the field was
+	constructed with a GTD, encode it as an open instance.
+
+	Fixes #649233
+
+2010-10-26  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* icall.c (ves_icall_MonoType_GetArrayRank): Don't mono_class_init
+	the class as it's not needed.
+
+	* icall.c (ves_icall_Type_make_array_type): Ditto.
+
+	Fixes #648833
+
+2010-10-26  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* verify.c (do_cast): The casted to type must be a boxable type.
+
+	Fixes #649014
+
+2010-10-25  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Rename create_methodspec to create_open_instance.
+
+2010-10-25  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* appdomain.c: Ditto.
+
+	* icall.c: Pass the new value forward to mono_image_create_token.
+
+	* reflection.c (mono_image_create_token): Handle create_methodspec
+	for TypeBuilder and MonoType.
+
+	Fixes #649017
+
+2010-10-23  Zoltan Varga  <vargaz at gmail.com>
+
+	Extract the default profiler into its own file.
+
+2010-10-22  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* icall.c (ves_icall_MonoType_GetGenericArguments): Don't
+	mono_class_init here since it's not needed.
+
+	Fixes #648725
+
+2010-10-22  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* reflection.c (mono_image_get_generic_field_token): If the field
+	type is a GTD, ensure its generic_container is properly
+	initialized.
+
+	Fixes #648616
+
+2010-10-22  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Remove arbitrary 1024 limit in GetProcesses
+
+	Reallocate the array of PIDs if EnumProcesses used all of it and
+	try again.
+
+2010-10-21  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix the assembly/class caching problems in the threadpool code
+	too.
+
+2010-10-21  Zoltan Varga  <vargaz at gmail.com>
+
+	Add an assert to mono_class_from_name_cached () to make sure it is
+	only called for mscorlib.
 
 2010-10-21  Zoltan Varga  <vargaz at gmail.com>
 
 	Avoid caching stuff in socket-io.c in static variables, since the
 	socket assembly can be unloaded, cache them in MonoDomain instead.
 
+2010-10-20  Tak  <levi at unity3d.com>
+
+	* metadata/threads.c: Ensure correct stack pointer initialization
+	on !POSIX. This fixes some random crashes with embedded,
+	release-optimized binaries on windows.
+
+	License: MIT/X11
+
+2010-10-19  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* metadata-verify.c: Add mono_verifier_verify_methodimpl_row.
+
+	* metadata.c (mono_class_get_overrides_full): Call in the
+	verifier.
+
+	* verify.c: Add mono_verifier_is_signature_compatible that does
+	propery signature variance checking.
+
+2010-10-20  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* class.c: Pass around a list of currently been built vtables to
+	really avoid going into loop.
+
+	* reflection.c: Adjust to extra arguments.
+
+	* object.c: Ditto.
+
+2010-10-19  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Temporarily disable iface check o generic instances
+
+2010-10-19  Zoltan Varga  <vargaz at gmail.com>
+
+	Remove the duplicate assembly name->string code from two places,
+	uses mono_stringify_assembly_name ().
+
+2010-10-19  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* reflection.c (ensure_runtime_vtable): When recalculating method
+	slots, ignore static methods.
+
+	Fixes #640780
+
+2010-10-19  Zoltan Varga  <vargaz at gmail.com>
+
+	Avoid crashes in the assembly name->string code if aname->name is
+	NULL.
+
 2010-10-19  Tak  <levi at unity3d.com>
 
 	* metadata/object.c: * mini/mini.c: Ensure that exceptions get
 	propagated back to the caller when mono is being embedded.
 	License: MIT/X11
 
+2010-10-18  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* class.c (collect_implemented_interfaces_aux): Fail if any of the
+	collected interfaces is broken.
+
+	* class.c (mono_class_init): Don't bother initing if the class is
+	broken. Don't assert on cycles, fail the type instead.
+
+	Fixes #568025
+
+2010-10-18  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* verify.c (do_newobj): Check if the .ctor signature is hasthis.
+	Even thou this is not a string 335 requirement our runtime asserts
+	otherwise.
+
+	Fixes #568004
+
+2010-10-18  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* class.c (mono_class_setup_vtable): Check generic instances using
+	mono_class_check_vtable_constraints.
+
+	* object.c (mono_class_create_runtime_vtable): Check generic
+	instance arguments since creating the rumtime vtable doesn't
+	require resolving the metadata one.
+
+	Fixes #644915
+
+2010-10-18  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix some warnings.
+
+2010-10-18  Marek Habersack  <grendel at twistedcode.net>
+
+	[runtime] Fix for bug 646075. Added support for short version
+	string in the <supportedRuntime> element
+
+	Starting from .NET 4.0, the <supportedRuntime/> 'version'
+	attribute accepts a shorter runtime version string - v4.0 - in
+	addition to the previously accepted vX.Y.Z format.
+
+2010-10-15  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix a regression introduced by the assembly name parsing changes.
+
+2010-10-15  Zoltan Varga  <vargaz at gmail.com>
+
+	Add support for assembly names with embedded and starting spaces.
+
 2010-10-14  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
 
 	[ThreadPool] Clear the thread state
@@ -60,10 +1478,220 @@
 	Clear the thread state after finishing a work item. We were only
 	resetting the background state.
 
+2010-10-14  Geoff Norton  <grompf at sublimeintervention.com>
+
+	Fix windows build
+
+2010-10-14  Geoff Norton  <grompf at sublimeintervention.com>
+
+	[android] pthread_kill cannot be used safely on android
+
+	Android's fork() function does not properly update the
+	pthread_internal_t->threadid variable to point to the tid of the
+	fork()'d thread, and instead still points to the pid of zygote. As
+	a result we need to track the android tid's manually since
+	gettid() is sane, and use an alternate to pthread_kill on android
+	Additionally, disable sgen support on android until the same work
+	has been done there
+
+	r: kumpera, vargaz
+
+2010-10-14  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* class.c (mono_class_is_open_constructed_type): Treat generic
+	type definition as an open type too. All code that checks is_open
+	does to make sure the generic instance is realizable.
+
+2010-10-14  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* marshal.c (mono_marshal_get_castclass_with_cache): Use the right
+	parameter for the cache.
+
+	* marshal.c (mono_marshal_get_isinst_with_cache): Use the right
+	parameter for the cache. In the negative case store the obj_vtable
+	and not the cache address.
+
+2010-10-13  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* verify.c (is_valid_generic_instantiation): If the generic
+	instantiation is open, GTDs can appear in mutual types.
+
+2010-10-13  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* verify.c (mono_verifier_verify_class): The generic instance over
+	its parent generic arguments will end up extending a GTD. The
+	check against not extending a GTD is only valid for not generic
+	instance types.
+
+2010-10-12  Rolf Bjarne Kvinge  <RKvinge at novell.com>
+
+	The System.Net.Sockets.Socket type lives in both System.dll and
+	System.Net.dll for moonlight
+
+2010-10-12  Paolo Molaro  <lupus at oddwiz.org>
+
+	* console-io.h, console-null.c, console-unix.c, console-win32.c,
+	gc.c: instead of executing tons of managed code in signal context,
+	we wake up the finalizer thread and any complex console-specific
+	code will be handled there. This can cause a (usually small)
+	delay, but it's much better than deadlocking.
+
+2010-10-12  Paolo Molaro  <lupus at oddwiz.org>
+
+	* loader.c: we don't search the current directory anymore for
+	shared libraries referenced in DllImport attributes, as it has a
+	slight security risk. We search in the same directory where the
+	referencing image was loaded from, instead. Fixes bug# 641915.
+
+2010-10-12  Zoltan Varga  <vargaz at gmail.com>
+
+	Load vtable->max_interface_id using LDIND_U2.
+
+2010-10-12  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* class.c (mono_class_setup_vtable): Fail the class if we fail to
+	load its overloads.
+
+	Fixes #562156
+
+2010-10-11  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* verify.c (mono_verifier_verify_class): Don't allow parent to be
+	a GTD.
+
+	Fixes #562150
+
+2010-10-11  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* verify.c (is_valid_generic_instantiation): A GTD cannot be used
+	as generic argument. Check for those conditions even if the
+	argument has no constraints.
+
+	Fixes #562771
+
+2010-10-11  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* verify.c (verify_generic_parameters): If a generic constraint is
+	a generic instance, it must respect the constraint of that type
+	too.
+
+	Fixes #644935
+
+2010-10-11  Zoltan Varga  <vargaz at gmail.com>
+
+	Set the wrapper info for the virtual stelemref wrappers to a
+	non-NULL value.
+
+2010-10-08  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* marshal.c (mono_marshal_get_virtual_stelemref): Add a custom
+	wrapper for interface casts.
+
+	This was the most frequent array kind left without a fast
+	stelem.ref wrapper. During testing the only easy target left was
+	arrays of arrays, but those are so rare that won't make a
+	different on any workload.
+
+2010-10-08  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* class.c (mono_class_setup_vtable_general): Inject the array
+	stelemref method on vectors of reference types.
+
+	* class.c (mono_class_init): Properly handle the fact that arrays
+	have different vtable sizes.
+
+	* marshal.c (mono_marshal_get_virtual_stelemref): New function
+	that returns a better tailored stelemref wrapper for a given array
+	type.
+
+2010-10-06  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Fix Marshal.SizeOf() for structs with explicit layout
+
+	Marshal.SizeOf is now returning the expected values for explicit
+	layout in 32 and 64 bits systems.
+
+	Fixes bug #641535.
+
+2010-10-08  Jb Evain  <jbevain at gmail.com>
+
+	Add support generic arguments in ModuleBuilder.Resolve*Token
+	icalls
+
+	For ResolveTypeToken, ResolveFieldToken and ResolveMethodToken,
+	resolve definitions directly and try to instantiate only types
+	that can be instantiated, such as MemberRef, MethodSpec and
+	TypeSpec. Also validate the memberref token type for ResolveField
+	and ResolveMethod when passing them a MemberRef token.
+
+2010-10-07  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* marshal.c: Add mono_marshal_get_isinst_with_cache and
+	mono_marshal_get_castclass_with_cache.
+
+	* marshal.h: Export those 2 new functions.
+
+2010-10-07  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* class-internals.h: Add new kind of rgctx slot.
+
+2010-10-07  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* marshal.c (mono_marshal_load_type_info): Properly check for
+	array types.
+
+2010-10-07  Jb Evain  <jbevain at gmail.com>
+
+	Fix resolution of memberref tokens in the dynamic case.
+
+	mono_metadata_memberref_is_method: rename to
+	mono_memberref_is_method and deal with the case where the assembly
+	is dynamic. This prevents a runtime crash when calling
+	ModuleBuilder.ResolveMemberToken with a MemberRef token pointing
+	to a field.
+
+2010-10-07  Jb Evain  <jbevain at gmail.com>
+
+	[Fix] Properly compute the tokens for FieldBuilders.
+
+	mono_reflection_get_token: For FieldBuilders, now reuse the token
+	computed when the FieldBuilder are instantiated, instead of
+	re-creating them. This avoids registering field definitions as
+	MemberRefs.
+
+2010-10-07  Zoltan Varga  <vargaz at gmail.com>
+
+	Clear the domain before unloading assemblies in mono_domain_free
+	().
+
+2010-10-07  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix more wrappers of dynamic methods.
+
+2010-09-30  Zoltan Varga  <vargaz at gmail.com>
+
+	Avoid clearing nursery fragments before pinning, instead place
+	arrays at the start of each fragment which cover the whole
+	fragment.
+
+2010-10-06  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Avoid a warning
+
+	Use MONO_TYPE_BOOLEAN instead of MONO_NATIVE_BOOLEAN. Same value,
+	different enums.
+
 2010-10-05  Geoff Norton  <grompf at sublimeintervention.com>
 
 	Fix the build on windows
 
+2010-10-05  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* class.c (mono_generic_class_get_class): Don't inflated nested_in
+	since it's not the expected behavior from managed land. It's a
+	safety issue as well since the outer type can have more generic
+	arguments.
+
 2010-10-05  Geoff Norton  <grompf at sublimeintervention.com>
 
 	Its possible that we're calling Process_free_internal on a
@@ -74,19 +1702,321 @@
 	in CloseProcess, which could lead to calling unref on a fake
 	handle.
 
-2010-09-15  Miguel de Icaza  <miguel at gnome.org>
+2010-10-04  Rodrigo Kumpera  <kumpera at gmail.com>
 
-	Revert
+	Make cards_in_range more accurate
 
-2010-09-13  Rodrigo Kumpera  <kumpera at gmail.com>
+2010-10-04  Rodrigo Kumpera  <kumpera at gmail.com>
 
-	* threads.c (mono_thread_suspend_all_other_threads): wait_data
-	must not be malloc'd since it holds managed pointers. Alloc it on
-	stack since the struct is about 512/1024 bytes long.
+	* sgen-cardtable.c (sgen_card_table_is_range_marked): Use
+	card_in_range here since this is used for objects that can start
+	at the middle of a card.
 
-	* threads.c (mono_thread_manage): Ditto.
+	* sgen-cardtable.c (move_cards_to_shadow_table): Properly copy the
+	tail bytes of an object that spam around the cardtable. Don't copy
+	more bytes than required.
 
-	* threads.c (mono_threads_request_thread_dump): Ditto.
+	* sgen-cardtable.c (sgen_cardtable_scan_object): Add extra_idx
+	variable that tracks the card offset that we're scanning. This is
+	required when we wrap around.
+
+	* sgen-cardtable.c (sgen_cardtable_scan_object): Properly reset
+	card_base when at wrap around.
+
+2010-10-04  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Kill some dead code and fix a function name
+
+2010-10-04  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* loader.c (mono_lookup_pinvoke_call): Don't assert on bad row
+	indexes.
+
+	* metadata-verify.c (verify_implmap_table): Fix the bounds check
+	for the module table.
+
+	Fix #563956
+
+2010-10-04  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Map SO_EXCLUSIVEADDRUSE to !SO_REUSEADDR
+
+	This will make windows app that use that property work on *nix.
+	Fixes bug #643475.
+
+2010-10-04  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Check no longer needed.
+
+	The is_* function takes care of this check now.
+
+2010-10-03  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Check class names in a better way
+
+	Verify image, nesting status, namespace and class for the types
+	used in threadpool.c
+
+2010-09-30  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Schedule the user callback from unmanaged code
+
+	When possible, schedule the user callback from unmanaged code. We
+	pass it from the IO pool to the regular pool after our internal
+	callback is finished.
+
+2010-09-30  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Avoid a few warnings
+
+2010-09-30  Zoltan Varga  <vargaz at gmail.com>
+
+	Disable the freeing of monitors again, it still crashes with sgen
+	when running tests/async_read.exe.
+
+2010-09-29  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Fix AOT support for delegates
+
+2010-09-29  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* marshal.c (mono_marshal_get_delegate_invoke): Properly handle a
+	static method that has it's first argument bound.
+
+	* marshal.c (mono_marshal_free_inflated_wrappers): Free from the
+	new hashtable too.
+
+	* image.c (mono_image_close_except_pools): Free the new hash
+	table.
+
+	* metadata-internals.h (MonoImage): Add new hashtable to store the
+	new kind of invoke wrappers.
+
+2010-09-28  Jonathan Pryor  <jonpryor at vt.edu>
+
+	Allow mono_install_assembly_preload_hook() to provide mscorlib.dll
+
+	In some embedding scenarios, mscorlib.dll may be present in a
+	non-standard location (outside of MONO_PATH) or with an alternate
+	filename.
+
+	Use the installed assembly preload hooks to search for
+	mscorlib.dll before falling back to the default lookup strategy.
+
+2010-09-29  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix 'thread may have been prematurely finalized' warnings when a
+	GC happens during thread attach in sgen.
+
+2010-09-27  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* icall.c (ves_icall_get_enum_info): All instance fields should be
+	ignored here.
+
+	Fixes #604218
+
+2010-09-26  Zoltan Varga  <vargaz at gmail.com>
+
+	Update the comment explaining why the small_id_table uses
+	conservative GC tracking.
+
+2010-09-26  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Bypass BeginInvoke for asynch. operations
+
+	The code involved in a delegate BeginInvoke is too heavy and of no
+	use for socket asynchronous operations. With these changes, we
+	bypass all that and send the work items directly to the
+	asynchronous IO queue, improving performance and lowering memory
+	use.
+
+2010-09-25  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Added support for ArraySegment
+
+	-Removed NET_2_0 -Implemented support for the Receive/Send
+	overloads that take a list of ArraySegments.
+
+2010-09-25  Zoltan Varga  <vargaz at gmail.com>
+
+	Enable support for wrapping non Exception subclasses in
+	RuntimeWrappedException objects, implement support for
+	RuntimeCompatibilityAttribute.
+
+2010-09-24  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix the setting of pointer type fields using reflection. Fixes
+	#641590.
+
+2010-09-24  Zoltan Varga  <vargaz at gmail.com>
+
+	Avoid making the small_id table precisely GC tracked, some runtime
+	code can't handle MonoInternalThread's being moved.
+
+2010-09-24  Zoltan Varga  <vargaz at gmail.com>
+
+	Disable make_root_descr_all_refs () for now since it seems to
+	cause crashes.
+
+2010-09-24  Zoltan Varga  <vargaz at gmail.com>
+
+	Use g_malloc0 in mono_gc_make_root-descr_all_refs ().
+
+2010-09-24  Zoltan Varga  <vargaz at gmail.com>
+
+	Remove a debug printf.
+
+2010-09-24  Zoltan Varga  <vargaz at gmail.com>
+
+	Add a few variants of the MONO_GC_REGISTER_ROOT () to make most
+	roots precisely tracked and to avoid registering locations
+	pointing to memory allocated by mono_gc_alloc_fixed () as roots
+	under SGEN.
+
+2010-09-23  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* verify.c (mono_type_is_valid_type_in_context): Handle types such
+	as VAR and MVAR encoded as CLASS or VALUETYPE. This encoding is
+	not the canonical one, but works and must be properly verified.
+
+	Fixes #601970
+
+2010-09-23  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Remove unwanted debug spew.
+
+2010-09-23  Zoltan Varga  <vargaz at gmail.com>
+
+	Wrap thrown objects which do not derive from Exception into a
+	RuntimeWrappedException. Fixes #640687.
+
+2010-09-22  Sebastien Pouliot  <sebastien at ximian.com>
+
+	Add missing SocketOptionName_HopLimit definition for IPv6
+
+2010-09-23  Zoltan Varga  <vargaz at gmail.com>
+
+	Convert ERROR_PATH_NOT_FOUND to ENOENT too.
+
+2010-09-22  Zoltan Varga  <vargaz at gmail.com>
+
+	Set errno correctly when loading an image fails on windows. Fixes
+	#362607.
+
+2010-09-22  Zoltan Varga  <vargaz at gmail.com>
+
+	Call the thread cleanup at the end as it was done before, call it
+	even if handle_remove () fails.
+
+2010-09-21  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* sgen-marksweep.c (mono_sgen_marksweep_init): Enable cardtable
+	for the parallel collector.
+
+	This closes by 50% the gap in binary-tree against the serial
+	collector.
+
+2010-09-20  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* class.c: The typeref table is now lazily verified thanks to some
+	awesome obfuscators that love to produce junk. So it has to be
+	checked everytime before usage instead of at loading time.
+
+2010-09-20  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* metadata-verify.c: Add mono_verifier_verify_typeref_row that
+	checks the metadata of a single row. Fix code around to couple
+	with this new function.
+
+	* verify-internals.h: Export it.
+
+2010-09-20  Paolo Molaro  <lupus at oddwiz.org>
+
+	* sgen-gc.c, sgen-los.c: added hooks for the important GC events.
+	Update some of the GC-related performance counters, too.
+
+2010-09-16  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* sgen-marksweep.c (major_scan_card_table): Avoid an extra copy
+	under overlapping card.
+
+2010-09-16  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* sgen-cardtable.h: Auto detect the need for
+	SGEN_HAVE_OVERLAPPING_CARDS.
+
+	* sgen-cardtable.h: Add CARD_TABLE_BITS and make CARD_COUNT_BITS
+	depend on it.
+
+	* sgen-cardtable.h: Document which and how each tunable affect
+	runtime of sgen.
+
+2010-09-16  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* sgen-cardtable.c (sgen_cardtable_scan_object): If the card range
+	overflows the cardtable, split the scanning in two steps.
+
+2010-09-16  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* sgen-cardtable.c (sgen_cardtable_scan_object): Use the card
+	pointer as the loop induction variable so it's easier handle
+	overlapping cards and overflow.
+
+2010-09-16  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* sgen-cardtable.c: The copy/clear functions may write into
+	invalid memory if a block lives across the edges of the cardtable
+	address range.
+
+2010-09-15  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Document some cardtable requirements and add an assert.
+
+2010-09-18  Zoltan Varga  <vargaz at gmail.com>
+
+	Make MonoThreadCleanupFunc take an InternalThread instead of a
+	Thread. Move its definition to threads-types.h since it is not
+	public API. Use this to remove the workaround in thread_cleanup ()
+	so the JIT info for threads is properly cleaned up at shutdown.
+
+2010-09-17  Rolf Bjarne Kvinge  <RKvinge at novell.com>
+
+	Fix typo in Makefile causing build breakage
+
+2010-09-16  Rolf Bjarne Kvinge  <RKvinge at novell.com>
+
+	Only build one version of libmonoruntimemoon.la (the convenience
+	lib)
+
+2010-09-16  Rolf Bjarne Kvinge  <RKvinge at novell.com>
+
+	Add a configure option to disable building the shared libmono
+	library
+
+2010-09-15  Rolf Bjarne Kvinge  <RKvinge at novell.com>
+
+	Add configure option for disabling assembly remapping
+
+2010-09-15  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Remove 2 extra calls to gettimeofday.
+
+2010-08-26  Mark Probst  <mark.probst at gmail.com>
+
+	Remove weak links for monitors.
+
+	mono_runtime_cleanup() calls mono_monitor_cleanup(), which frees
+	the memory associated with monitors. Some of them still have weak
+	links registered, which leads to a crash when calling
+	mono_domain_free() later on.
+
+2010-09-16  Mark Probst  <mark.probst at gmail.com>
+
+	[sgen] Avoid doing an unnecessary gettimeofday().
+
+2010-09-15  Miguel de Icaza  <miguel at gnome.org>
+
+	Revert
 
 2010-09-15  Miguel de Icaza  <miguel at gnome.org>
 
@@ -111,9 +2041,40 @@
 	/Library/Frameworks/Mono.framework. We now resolve the symlink
 	before allowing the embedding code to proceed.
 
-2010-09-13  Geoff Norton  <gnorton at novell.com>
+2010-09-15  Paolo Molaro  <lupus at oddwiz.org>
+
+	Documentation for a few garbage collector APIs.
+
+2010-09-10  Rolf Bjarne Kvinge  <RKvinge at novell.com>
+
+	mono_trace already adds a newline to trace messages, don't add
+	another one
+
+2010-09-14  Chris Toshok  <toshok at gmail.com>
+
+	built a separate libmonoruntime for moonlight, so we can do
+	-DMOONLIGHT just in the moonlight lib instead of globally.
+
+2010-09-14  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* pedump.c (verify_image_file): Setup the fake assembly before
+	doing full metadata verification since it does type loading.
+
+	Fixes #598228
 
-	Fix a typo in my last commit
+2010-09-14  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* sgen-cardtable.c (sgen_card_table_get_card_data): Start must be
+	incremented with and without overlapping cards.
+
+2010-09-13  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Add v4.0 beta to runtime versions list.
+
+2010-09-13  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* verify.c (mono_method_verify): Only skip dead code after
+	checking for fallthru.
 
 2010-09-13  Geoff Norton  <gnorton at novell.com>
 
@@ -124,10 +2085,6 @@
 
 2010-09-13  Geoff Norton  <gnorton at novell.com>
 
-	Mono 2.8 has a few more usages of the old type
-
-2010-09-13  Geoff Norton  <gnorton at novell.com>
-
 	Rename major -> major_collector and drop unguarded usage of
 	ucontext_t.
 
@@ -138,6 +2095,70 @@
 	strongly type our contexts to that and let the macros do their
 	job.
 
+2010-09-13  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix a warning.
+
+2010-09-13  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* threads.c (mono_thread_suspend_all_other_threads): wait_data
+	must not be malloc'd since it holds managed pointers. Alloc it on
+	stack since the struct is about 512/1024 bytes long.
+
+	* threads.c (mono_thread_manage): Ditto.
+
+	* threads.c (mono_threads_request_thread_dump): Ditto.
+
+2010-09-10  Zoltan Varga  <vargaz at gmail.com>
+
+	Log the clearing of nursery fragments, avoid clearing small
+	fragments twice.
+
+2010-09-10  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* sgen-marksweep.c (major_scan_card_table): Rework the small
+	object size loop to have a single induction variable. In adition
+	to that, add a fast initial card skip code.
+
+2010-09-09  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* sgen-cardtable.c (sgen_card_table_get_card_data): Check if any
+	card is marked and return it.
+
+	* sgen-marksweep.c (major_scan_card_table): Don't waste time
+	scanning a block if no card was marked.
+
+2010-09-09  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* sgen-cardtable.c (sgen_cardtable_scan_object): Lookup the card
+	once and then bump over it. This saves a bunch of stores and opens
+	up for later improvements.
+
+	* sgen-marksweep.c (major_scan_card_table): Ditto.
+
+	* sgen-cardtable.h: Add new inline function to return the card
+	scan pointer of a given adddress.
+
+2010-09-10  Andrew Jorgensen  <ajorgensen at novell.com>
+
+	Dist sgen-cardtable.h
+
+2010-09-09  Chris Toshok  <toshok at gmail.com>
+
+	move the call to mono_gc_base_init into mono_debug_init
+
+	mono_debug_init is a public embedding interface and calls into
+	mono_debugger_initialize, which registers a GC root. driver.c
+	calls mono_gc_base_init before calling mono_debug_init for this
+	reason, but that's not an option for embedding (as
+	mono_gc_base_init is internal.)
+
+	since mono_gc_base_init is idempotent, just add a call to
+	mono_debug_init (and remove the driver.c call). Document (in
+	sgen-gc and sgen-gc.h) the fact that although mono_gc_base_init is
+	idempotent, changing LOCK_INIT to something non-idempotent will
+	break this.
+
 2010-09-09  Zoltan Varga  <vargaz at gmail.com>
 
 	Avoid freeing the allocated monitors on shutdown, it seems to
@@ -153,6 +2174,177 @@
 	(sgen-marksweep.c:692) ==29095== by 0x67E00B: mono_gc_clear_domain
 	(sgen-gc.c:1459)
 
+2010-09-06  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* sgen-cardtable.h (sgen_card_table_get_card_address): This needs
+	marking under SGEN_HAVE_OVERLAPPING_CARDS too.
+
+2010-09-06  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* class.c (mono_class_create_from_typedef): If if any parent
+	doesn't extend the generic instantiation.
+
+	Fixes #604270
+
+2010-09-06  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* verify.c (do_leave): Set the target of leave.
+
+	* verify.c (mono_method_verify): Merge the resulting empty stack
+	of a leave instruction with it's target.
+
+	Fixes #633248
+
+2010-09-05  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix the build.
+
+2010-09-04  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* sgen-gc.c: Introduce dummy_use function that forces the compiler
+	to keep a given value alive until the call to it.
+
+	* sgen-gc.c (mono_gc_wbarrier_set_field): Use dummy_use to avoid
+	race condition between the store and the barrier.
+
+	* sgen-gc.c (mono_gc_wbarrier_set_arrayref): Ditto.
+
+	* sgen-gc.c (mono_gc_wbarrier_arrayref_copy): Ditto.
+
+	* sgen-gc.c (mono_gc_wbarrier_arrayref_copy): Ditto.
+
+	* sgen-gc.c (mono_gc_wbarrier_generic_store): Ditto.
+
+	This pattern of usage is the same we do with managed code write
+	barrier. The race condition is extremely race and requires the
+	thread to be interrupted in between the store and the barrier,
+	which is a very tiny narrow window.
+
+2010-09-04  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* sgen-gc.c (mono_gc_wbarrier_arrayref_copy): Avoid locking if
+	using cardtables. Even thou the new code looks slower than a plain
+	memmove, it has the advantage of not taking locks, which means
+	it's much more scalable.
+
+	Array copy under sgen/cardtables was 1.6x slower than with boehm.
+	With this patch it reduces to 1.54x. The serial performance
+	speedup is nice, but it is much more helpfull in multi-threaded
+	workloads.
+
+2010-09-03  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Fix a warning
+
+2010-09-03  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* sgen-gc.c: Avoid taking locks for single pointer barriers.
+
+2010-09-03  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* sgen-cardtable.c: Move a bunch of stuff to new header.
+
+	* sgen-cardtable.h: New header with functions meant to be inlined.
+
+	* sgen-gc.c: Use new header.
+
+	* sgen-marksweep.c (major_scan_card_table): Introduce fast version
+	of some macros that avoid a few indirections.
+
+2010-09-03  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Better cardtable stats gathering codebase.
+
+2010-09-03  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* sgen-cardtable.c (sgen_cardtable_scan_object): The source of the
+	cardtable can now be supplied, this is needed since major blocks
+	can't use regular card checking code here.
+
+	* sgen-los.c (los_scan_card_table): Adjust to signature change in
+	sgen_cardtable_scan_object.
+
+	* sgen-marksweep.c (major_scan_card_table): If the block size is
+	larger than a card it makes more sense to loop around objects and
+	not cards since objects might be scanned twice since a card can be
+	shared between two of them.
+
+	In such case the cards of a block must be copied to a side buffer
+	since we are no longer looping one by one. This ia a problem when
+	two objects share a marked card as the first can cause it to be
+	left cleared and not have the second one scanned.
+
+	Another advantage of this patch is that it enables partial
+	scanning of larger array in the major heap.
+
+2010-09-03  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* sgen-los.c (los_scan_card_table): Move meat of this function
+	into a separate one.
+
+	* sgen-cardtable.c: New function sgen_cardtable_scan_object.
+
+	* sgen-gc.h: Add sgen_cardtable_scan_object.
+
+2010-09-03  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* sgen-marksweep.c (major_scan_card_table): Don't load some fields
+	if the block has no references.
+
+2010-09-02  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Add stats for cardtable processing time
+
+2010-09-04  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Fixed GetLogicalDriveString
+
+	When calling GetLogicalDriveString, icall.c was passing the length
+	in the wrong units.
+
+	GetLogicalDriveString now translates any octal sequence found into
+	its corresponding byte. Use the UTF16 length ('items_written')
+	instead of the UTF8 input string length ('items_read') when
+	computing the total size.
+
+2010-09-03  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Allow ordinal entry points in windows.
+
+	Windows allows entry point names like "#10" which refer to the Nth
+	function (n > 1 and less than the highest ordinal value in the
+	.def file).
+
+	Fixes bug #636966.
+
+2010-09-03  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix a crash when the signature of the Main method could not be
+	loaded. Fixes #636794.
+
+2010-09-02  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Return IPv6 addresses
+
+	We were not returning IPv6 addresses if there was no IPv6
+	configured interface. Now we will return those addresses if ipv6
+	is enabled by configuration.
+
+	Fixes bug #636517.
+
+2010-09-01  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* metadata-verify.c (mono_verifier_verify_method_header): If the
+	header has a locals token, verify the corresponding row in the
+	standalonesig table.
+
+2010-08-31  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Handle WAIT_IO_TIMEOUT in WaitAny call
+
+	WaitForMultipleObjectsEx might return WAIT_IO_COMPLETION if an APC
+	is queued. Fixes bug #549807.
+
 2010-08-30  Rodrigo Kumpera  <kumpera at gmail.com>
 
 	* sgen-cardtable.c (cards_in_range): This should take into account
@@ -890,6 +3082,13 @@
 
 	Fixes #560348
 
+2011-01-04  Veerapuram Varadhan  <v.varadhan at gmail.com>
+
+	* assembly.c (framework_assemblies): Map System.Transactions to
+	4.0 framework assemblies.
+
+	Fixes #635335
+
 2010-11-03  Martin Baulig  <martin at ximian.com>
 
 	* mono-debug.c (mono_register_symfile_for_assembly): New method.
diff --git a/mono/metadata/ChangeLog.old b/mono/metadata/ChangeLog.old
index 71269ce..b204bc7 100644
--- a/mono/metadata/ChangeLog.old
+++ b/mono/metadata/ChangeLog.old
@@ -1,3 +1,10 @@
+2011-01-04  Veerapuram Varadhan  <v.varadhan at gmail.com>
+
+	* assembly.c (framework_assemblies): Map System.Transactions to
+	4.0 framework assemblies.
+
+	Fixes #635335
+
 2010-11-03  Martin Baulig  <martin at ximian.com>
 
 	* mono-debug.c (mono_register_symfile_for_assembly): New method.
diff --git a/mono/metadata/Makefile.am b/mono/metadata/Makefile.am
index c9e1e11..0b767a4 100644
--- a/mono/metadata/Makefile.am
+++ b/mono/metadata/Makefile.am
@@ -28,17 +28,33 @@ unix_sources = \
 platform_sources = $(unix_sources)
 endif
 
+if SHARED_MONO
 bin_PROGRAMS = pedump
+endif
 
 #
 # libtool is not capable of creating static/shared versions of the same
 # convenience lib, so we have to do it ourselves
 #
 if SUPPORT_SGEN
-sgen_libraries = libmonoruntimesgen.la libmonoruntimesgen-static.la 
+if SHARED_MONO
+shared_sgen_libraries = libmonoruntimesgen.la 
+endif
+sgen_libraries = $(shared_sgen_libraries) libmonoruntimesgen-static.la 
+endif
+
+if MOONLIGHT
+moonlight_libraries = libmonoruntimemoon.la
+moon-do-build: libmonoruntime-static.la libmonoruntimemoon.la
+moon-do-clean:
+	-test -z "libmonoruntime-static.la" || rm -f libmonoruntime-static.la
+	-test -z "libmonoruntimemoon.la" || rm -f libmonoruntimemoon.la
 endif
 
-noinst_LTLIBRARIES = libmonoruntime.la libmonoruntime-static.la $(sgen_libraries)
+if SHARED_MONO
+shared_libraries = libmonoruntime.la
+endif
+noinst_LTLIBRARIES =  $(shared_libraries) libmonoruntime-static.la $(sgen_libraries) $(moonlight_libraries)
 
 INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/mono $(LIBGC_CFLAGS) $(GLIB_CFLAGS) -DMONO_BINDIR=\"$(bindir)/\" -DMONO_ASSEMBLIES=\"$(assembliesdir)\" -DMONO_CFG_DIR=\"$(confdir)\"
 
@@ -65,8 +81,6 @@ sgen_sources = \
 	sgen-gray.c		\
 	sgen-pinning.c		\
 	sgen-pinning-stats.c	\
-	sgen-los.c		\
-	sgen-protocol.c		\
 	sgen-workers.c
 
 libmonoruntime_la_SOURCES = \
@@ -175,8 +189,11 @@ libmonoruntime_la_SOURCES = \
 	sgen-marksweep-par.c	\
 	sgen-marksweep-fixed-par.c	\
 	sgen-major-copying.c	\
+	sgen-los.c		\
+	sgen-protocol.c \
 	sgen-gc.h		\
 	sgen-archdep.h		\
+	sgen-cardtable.h	\
 	sgen-major-copy-object.h \
 	sgen-major-scan-object.h \
 	sgen-protocol.h		\
@@ -197,6 +214,15 @@ libmonoruntime_la_SOURCES = \
 
 libmonoruntime_la_CFLAGS = $(BOEHM_DEFINES)
 
+if MOONLIGHT
+libmonoruntimemoon_la_SOURCES = $(libmonoruntime_la_SOURCES)
+if MOONLIGHT_BOEHM
+libmonoruntimemoon_la_CFLAGS = $(MOONLIGHT_DEFINES) $(BOEHM_DEFINES)
+else
+libmonoruntimemoon_la_CFLAGS = $(MOONLIGHT_DEFINES) $(SGEN_DEFINES)
+endif
+endif
+
 libmonoruntimesgen_la_SOURCES = $(libmonoruntime_la_SOURCES)
 libmonoruntimesgen_la_CFLAGS = $(SGEN_DEFINES)
 
@@ -247,6 +273,7 @@ else
 PEDUMP_DTRACE_OBJECT = 
 endif
 
+if SHARED_MONO
 pedump_SOURCES =		\
 	pedump.c
 
@@ -256,6 +283,7 @@ pedump_LDADD = libmonoruntime.la ../io-layer/libwapi.la ../utils/libmonoutils.la
 if PLATFORM_DARWIN
 pedump_LDFLAGS=-framework CoreFoundation
 endif
+endif
 
 EXTRA_DIST = make-bundle.pl sample-bundle $(win32_sources) $(unix_sources) $(null_sources) $(sgen_sources) runtime.h
 
diff --git a/mono/metadata/Makefile.in b/mono/metadata/Makefile.in
index 3ac2280..6e0f53a 100644
--- a/mono/metadata/Makefile.in
+++ b/mono/metadata/Makefile.in
@@ -35,7 +35,7 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
-bin_PROGRAMS = pedump$(EXEEXT)
+ at SHARED_MONO_TRUE@bin_PROGRAMS = pedump$(EXEEXT)
 subdir = mono/metadata
 DIST_COMMON = $(libmonoruntimeinclude_HEADERS) $(srcdir)/Makefile.am \
 	$(srcdir)/Makefile.in ChangeLog TODO
@@ -80,13 +80,13 @@ am__libmonoruntime_static_la_SOURCES_DIST = console-unix.c \
 	security-manager.h sgen-os-posix.c sgen-os-mach.c sgen-gc.c \
 	sgen-internal.c sgen-marksweep.c sgen-marksweep-fixed.c \
 	sgen-marksweep-par.c sgen-marksweep-fixed-par.c \
-	sgen-major-copying.c sgen-gc.h sgen-archdep.h \
-	sgen-major-copy-object.h sgen-major-scan-object.h \
-	sgen-protocol.h sgen-scan-object.h string-icalls.c \
-	string-icalls.h sysmath.h sysmath.c tabledefs.h threads.c \
-	threads-types.h threadpool.c threadpool.h \
-	threadpool-internals.h verify.c verify-internals.h \
-	wrapper-types.h
+	sgen-major-copying.c sgen-los.c sgen-protocol.c sgen-gc.h \
+	sgen-archdep.h sgen-cardtable.h sgen-major-copy-object.h \
+	sgen-major-scan-object.h sgen-protocol.h sgen-scan-object.h \
+	string-icalls.c string-icalls.h sysmath.h sysmath.c \
+	tabledefs.h threads.c threads-types.h threadpool.c \
+	threadpool.h threadpool-internals.h verify.c \
+	verify-internals.h wrapper-types.h
 @HOST_WIN32_FALSE at am__objects_1 =  \
 @HOST_WIN32_FALSE@	libmonoruntime_static_la-console-unix.lo
 @HOST_WIN32_TRUE at am__objects_2 =  \
@@ -151,6 +151,8 @@ am__objects_4 = $(am__objects_3) libmonoruntime_static_la-appdomain.lo \
 	libmonoruntime_static_la-sgen-marksweep-par.lo \
 	libmonoruntime_static_la-sgen-marksweep-fixed-par.lo \
 	libmonoruntime_static_la-sgen-major-copying.lo \
+	libmonoruntime_static_la-sgen-los.lo \
+	libmonoruntime_static_la-sgen-protocol.lo \
 	libmonoruntime_static_la-string-icalls.lo \
 	libmonoruntime_static_la-sysmath.lo \
 	libmonoruntime_static_la-threads.lo \
@@ -190,13 +192,14 @@ am__libmonoruntime_la_SOURCES_DIST = console-unix.c console-win32.c \
 	security-core-clr.h security-manager.c security-manager.h \
 	sgen-os-posix.c sgen-os-mach.c sgen-gc.c sgen-internal.c \
 	sgen-marksweep.c sgen-marksweep-fixed.c sgen-marksweep-par.c \
-	sgen-marksweep-fixed-par.c sgen-major-copying.c sgen-gc.h \
-	sgen-archdep.h sgen-major-copy-object.h \
-	sgen-major-scan-object.h sgen-protocol.h sgen-scan-object.h \
-	string-icalls.c string-icalls.h sysmath.h sysmath.c \
-	tabledefs.h threads.c threads-types.h threadpool.c \
-	threadpool.h threadpool-internals.h verify.c \
-	verify-internals.h wrapper-types.h
+	sgen-marksweep-fixed-par.c sgen-major-copying.c sgen-los.c \
+	sgen-protocol.c sgen-gc.h sgen-archdep.h sgen-cardtable.h \
+	sgen-major-copy-object.h sgen-major-scan-object.h \
+	sgen-protocol.h sgen-scan-object.h string-icalls.c \
+	string-icalls.h sysmath.h sysmath.c tabledefs.h threads.c \
+	threads-types.h threadpool.c threadpool.h \
+	threadpool-internals.h verify.c verify-internals.h \
+	wrapper-types.h
 @HOST_WIN32_FALSE at am__objects_5 = libmonoruntime_la-console-unix.lo
 @HOST_WIN32_TRUE at am__objects_6 = libmonoruntime_la-console-win32.lo
 @HOST_WIN32_FALSE at am__objects_7 = $(am__objects_5)
@@ -241,6 +244,8 @@ am_libmonoruntime_la_OBJECTS = $(am__objects_7) \
 	libmonoruntime_la-sgen-marksweep-par.lo \
 	libmonoruntime_la-sgen-marksweep-fixed-par.lo \
 	libmonoruntime_la-sgen-major-copying.lo \
+	libmonoruntime_la-sgen-los.lo \
+	libmonoruntime_la-sgen-protocol.lo \
 	libmonoruntime_la-string-icalls.lo \
 	libmonoruntime_la-sysmath.lo libmonoruntime_la-threads.lo \
 	libmonoruntime_la-threadpool.lo libmonoruntime_la-verify.lo
@@ -249,8 +254,9 @@ libmonoruntime_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) \
 	$(libmonoruntime_la_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
 	-o $@
-libmonoruntimesgen_static_la_LIBADD =
-am__libmonoruntimesgen_static_la_SOURCES_DIST = console-unix.c \
+ at SHARED_MONO_TRUE@am_libmonoruntime_la_rpath =
+libmonoruntimemoon_la_LIBADD =
+am__libmonoruntimemoon_la_SOURCES_DIST = console-unix.c \
 	console-win32.c appdomain.c assembly.c attach.h attach.c \
 	boehm-gc.c char-conversions.h cil-coff.h class.c \
 	class-internals.h cominterop.c cominterop.h console-io.h \
@@ -277,18 +283,128 @@ am__libmonoruntimesgen_static_la_SOURCES_DIST = console-unix.c \
 	security-manager.h sgen-os-posix.c sgen-os-mach.c sgen-gc.c \
 	sgen-internal.c sgen-marksweep.c sgen-marksweep-fixed.c \
 	sgen-marksweep-par.c sgen-marksweep-fixed-par.c \
-	sgen-major-copying.c sgen-gc.h sgen-archdep.h \
-	sgen-major-copy-object.h sgen-major-scan-object.h \
-	sgen-protocol.h sgen-scan-object.h string-icalls.c \
-	string-icalls.h sysmath.h sysmath.c tabledefs.h threads.c \
-	threads-types.h threadpool.c threadpool.h \
-	threadpool-internals.h verify.c verify-internals.h \
-	wrapper-types.h
- at HOST_WIN32_FALSE@am__objects_8 = libmonoruntimesgen_static_la-console-unix.lo
- at HOST_WIN32_TRUE@am__objects_9 = libmonoruntimesgen_static_la-console-win32.lo
+	sgen-major-copying.c sgen-los.c sgen-protocol.c sgen-gc.h \
+	sgen-archdep.h sgen-cardtable.h sgen-major-copy-object.h \
+	sgen-major-scan-object.h sgen-protocol.h sgen-scan-object.h \
+	string-icalls.c string-icalls.h sysmath.h sysmath.c \
+	tabledefs.h threads.c threads-types.h threadpool.c \
+	threadpool.h threadpool-internals.h verify.c \
+	verify-internals.h wrapper-types.h
+ at HOST_WIN32_FALSE@am__objects_8 =  \
+ at HOST_WIN32_FALSE@	libmonoruntimemoon_la-console-unix.lo
+ at HOST_WIN32_TRUE@am__objects_9 =  \
+ at HOST_WIN32_TRUE@	libmonoruntimemoon_la-console-win32.lo
 @HOST_WIN32_FALSE at am__objects_10 = $(am__objects_8)
 @HOST_WIN32_TRUE at am__objects_10 = $(am__objects_9)
-am__objects_11 = $(am__objects_10) \
+am__objects_11 = $(am__objects_10) libmonoruntimemoon_la-appdomain.lo \
+	libmonoruntimemoon_la-assembly.lo \
+	libmonoruntimemoon_la-attach.lo \
+	libmonoruntimemoon_la-boehm-gc.lo \
+	libmonoruntimemoon_la-class.lo \
+	libmonoruntimemoon_la-cominterop.lo \
+	libmonoruntimemoon_la-coree.lo \
+	libmonoruntimemoon_la-debug-helpers.lo \
+	libmonoruntimemoon_la-debug-mono-symfile.lo \
+	libmonoruntimemoon_la-decimal.lo \
+	libmonoruntimemoon_la-domain.lo \
+	libmonoruntimemoon_la-environment.lo \
+	libmonoruntimemoon_la-exception.lo \
+	libmonoruntimemoon_la-file-io.lo \
+	libmonoruntimemoon_la-filewatcher.lo \
+	libmonoruntimemoon_la-gc.lo libmonoruntimemoon_la-icall.lo \
+	libmonoruntimemoon_la-image.lo libmonoruntimemoon_la-loader.lo \
+	libmonoruntimemoon_la-locales.lo \
+	libmonoruntimemoon_la-lock-tracer.lo \
+	libmonoruntimemoon_la-marshal.lo \
+	libmonoruntimemoon_la-mempool.lo \
+	libmonoruntimemoon_la-metadata.lo \
+	libmonoruntimemoon_la-metadata-verify.lo \
+	libmonoruntimemoon_la-method-builder.lo \
+	libmonoruntimemoon_la-mono-basic-block.lo \
+	libmonoruntimemoon_la-mono-config.lo \
+	libmonoruntimemoon_la-mono-debug.lo \
+	libmonoruntimemoon_la-mono-debug-debugger.lo \
+	libmonoruntimemoon_la-mono-endian.lo \
+	libmonoruntimemoon_la-mono-hash.lo \
+	libmonoruntimemoon_la-mono-mlist.lo \
+	libmonoruntimemoon_la-mono-perfcounters.lo \
+	libmonoruntimemoon_la-mono-wsq.lo \
+	libmonoruntimemoon_la-monitor.lo \
+	libmonoruntimemoon_la-nacl-stub.lo \
+	libmonoruntimemoon_la-null-gc.lo \
+	libmonoruntimemoon_la-object.lo \
+	libmonoruntimemoon_la-opcodes.lo \
+	libmonoruntimemoon_la-socket-io.lo \
+	libmonoruntimemoon_la-process.lo \
+	libmonoruntimemoon_la-profiler.lo \
+	libmonoruntimemoon_la-rand.lo libmonoruntimemoon_la-runtime.lo \
+	libmonoruntimemoon_la-reflection.lo \
+	libmonoruntimemoon_la-security.lo \
+	libmonoruntimemoon_la-security-core-clr.lo \
+	libmonoruntimemoon_la-security-manager.lo \
+	libmonoruntimemoon_la-sgen-os-posix.lo \
+	libmonoruntimemoon_la-sgen-os-mach.lo \
+	libmonoruntimemoon_la-sgen-gc.lo \
+	libmonoruntimemoon_la-sgen-internal.lo \
+	libmonoruntimemoon_la-sgen-marksweep.lo \
+	libmonoruntimemoon_la-sgen-marksweep-fixed.lo \
+	libmonoruntimemoon_la-sgen-marksweep-par.lo \
+	libmonoruntimemoon_la-sgen-marksweep-fixed-par.lo \
+	libmonoruntimemoon_la-sgen-major-copying.lo \
+	libmonoruntimemoon_la-sgen-los.lo \
+	libmonoruntimemoon_la-sgen-protocol.lo \
+	libmonoruntimemoon_la-string-icalls.lo \
+	libmonoruntimemoon_la-sysmath.lo \
+	libmonoruntimemoon_la-threads.lo \
+	libmonoruntimemoon_la-threadpool.lo \
+	libmonoruntimemoon_la-verify.lo
+ at MOONLIGHT_TRUE@am_libmonoruntimemoon_la_OBJECTS = $(am__objects_11)
+libmonoruntimemoon_la_OBJECTS = $(am_libmonoruntimemoon_la_OBJECTS)
+libmonoruntimemoon_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+	$(LDFLAGS) -o $@
+ at MOONLIGHT_TRUE@am_libmonoruntimemoon_la_rpath =
+libmonoruntimesgen_static_la_LIBADD =
+am__libmonoruntimesgen_static_la_SOURCES_DIST = console-unix.c \
+	console-win32.c appdomain.c assembly.c attach.h attach.c \
+	boehm-gc.c char-conversions.h cil-coff.h class.c \
+	class-internals.h cominterop.c cominterop.h console-io.h \
+	coree.c coree.h culture-info.h culture-info-tables.h \
+	debug-helpers.c debug-mono-symfile.h debug-mono-symfile.c \
+	decimal.c decimal.h domain.c domain-internals.h environment.c \
+	environment.h exception.c exception.h file-io.c file-io.h \
+	filewatcher.c filewatcher.h gc.c gc-internal.h icall.c \
+	icall-def.h image.c loader.c locales.c locales.h lock-tracer.c \
+	lock-tracer.h marshal.c marshal.h mempool.c mempool.h \
+	mempool-internals.h metadata.c metadata-verify.c \
+	metadata-internals.h method-builder.h method-builder.c \
+	mono-basic-block.c mono-basic-block.h mono-config.c \
+	mono-debug.h mono-debug.c mono-debug-debugger.h \
+	mono-debug-debugger.c mono-endian.c mono-endian.h mono-hash.c \
+	mono-hash.h mono-mlist.c mono-mlist.h mono-perfcounters.c \
+	mono-perfcounters.h mono-perfcounters-def.h mono-ptr-array.h \
+	mono-wsq.c mono-wsq.h monitor.c monitor.h nacl-stub.c \
+	normalization-tables.h null-gc.c number-formatter.h object.c \
+	object-internals.h opcodes.c socket-io.c socket-io.h process.c \
+	process.h profiler.c profiler-private.h rand.h rand.c \
+	runtime.c reflection.c security.c security.h \
+	security-core-clr.c security-core-clr.h security-manager.c \
+	security-manager.h sgen-os-posix.c sgen-os-mach.c sgen-gc.c \
+	sgen-internal.c sgen-marksweep.c sgen-marksweep-fixed.c \
+	sgen-marksweep-par.c sgen-marksweep-fixed-par.c \
+	sgen-major-copying.c sgen-los.c sgen-protocol.c sgen-gc.h \
+	sgen-archdep.h sgen-cardtable.h sgen-major-copy-object.h \
+	sgen-major-scan-object.h sgen-protocol.h sgen-scan-object.h \
+	string-icalls.c string-icalls.h sysmath.h sysmath.c \
+	tabledefs.h threads.c threads-types.h threadpool.c \
+	threadpool.h threadpool-internals.h verify.c \
+	verify-internals.h wrapper-types.h
+ at HOST_WIN32_FALSE@am__objects_12 = libmonoruntimesgen_static_la-console-unix.lo
+ at HOST_WIN32_TRUE@am__objects_13 = libmonoruntimesgen_static_la-console-win32.lo
+ at HOST_WIN32_FALSE@am__objects_14 = $(am__objects_12)
+ at HOST_WIN32_TRUE@am__objects_14 = $(am__objects_13)
+am__objects_15 = $(am__objects_14) \
 	libmonoruntimesgen_static_la-appdomain.lo \
 	libmonoruntimesgen_static_la-assembly.lo \
 	libmonoruntimesgen_static_la-attach.lo \
@@ -347,12 +463,14 @@ am__objects_11 = $(am__objects_10) \
 	libmonoruntimesgen_static_la-sgen-marksweep-par.lo \
 	libmonoruntimesgen_static_la-sgen-marksweep-fixed-par.lo \
 	libmonoruntimesgen_static_la-sgen-major-copying.lo \
+	libmonoruntimesgen_static_la-sgen-los.lo \
+	libmonoruntimesgen_static_la-sgen-protocol.lo \
 	libmonoruntimesgen_static_la-string-icalls.lo \
 	libmonoruntimesgen_static_la-sysmath.lo \
 	libmonoruntimesgen_static_la-threads.lo \
 	libmonoruntimesgen_static_la-threadpool.lo \
 	libmonoruntimesgen_static_la-verify.lo
-am_libmonoruntimesgen_static_la_OBJECTS = $(am__objects_11)
+am_libmonoruntimesgen_static_la_OBJECTS = $(am__objects_15)
 libmonoruntimesgen_static_la_OBJECTS =  \
 	$(am_libmonoruntimesgen_static_la_OBJECTS)
 libmonoruntimesgen_static_la_LINK = $(LIBTOOL) --tag=CC \
@@ -388,20 +506,20 @@ am__libmonoruntimesgen_la_SOURCES_DIST = console-unix.c \
 	security-manager.h sgen-os-posix.c sgen-os-mach.c sgen-gc.c \
 	sgen-internal.c sgen-marksweep.c sgen-marksweep-fixed.c \
 	sgen-marksweep-par.c sgen-marksweep-fixed-par.c \
-	sgen-major-copying.c sgen-gc.h sgen-archdep.h \
-	sgen-major-copy-object.h sgen-major-scan-object.h \
-	sgen-protocol.h sgen-scan-object.h string-icalls.c \
-	string-icalls.h sysmath.h sysmath.c tabledefs.h threads.c \
-	threads-types.h threadpool.c threadpool.h \
-	threadpool-internals.h verify.c verify-internals.h \
-	wrapper-types.h
- at HOST_WIN32_FALSE@am__objects_12 =  \
+	sgen-major-copying.c sgen-los.c sgen-protocol.c sgen-gc.h \
+	sgen-archdep.h sgen-cardtable.h sgen-major-copy-object.h \
+	sgen-major-scan-object.h sgen-protocol.h sgen-scan-object.h \
+	string-icalls.c string-icalls.h sysmath.h sysmath.c \
+	tabledefs.h threads.c threads-types.h threadpool.c \
+	threadpool.h threadpool-internals.h verify.c \
+	verify-internals.h wrapper-types.h
+ at HOST_WIN32_FALSE@am__objects_16 =  \
 @HOST_WIN32_FALSE@	libmonoruntimesgen_la-console-unix.lo
- at HOST_WIN32_TRUE@am__objects_13 =  \
+ at HOST_WIN32_TRUE@am__objects_17 =  \
 @HOST_WIN32_TRUE@	libmonoruntimesgen_la-console-win32.lo
- at HOST_WIN32_FALSE@am__objects_14 = $(am__objects_12)
- at HOST_WIN32_TRUE@am__objects_14 = $(am__objects_13)
-am__objects_15 = $(am__objects_14) libmonoruntimesgen_la-appdomain.lo \
+ at HOST_WIN32_FALSE@am__objects_18 = $(am__objects_16)
+ at HOST_WIN32_TRUE@am__objects_18 = $(am__objects_17)
+am__objects_19 = $(am__objects_18) libmonoruntimesgen_la-appdomain.lo \
 	libmonoruntimesgen_la-assembly.lo \
 	libmonoruntimesgen_la-attach.lo \
 	libmonoruntimesgen_la-boehm-gc.lo \
@@ -456,29 +574,34 @@ am__objects_15 = $(am__objects_14) libmonoruntimesgen_la-appdomain.lo \
 	libmonoruntimesgen_la-sgen-marksweep-par.lo \
 	libmonoruntimesgen_la-sgen-marksweep-fixed-par.lo \
 	libmonoruntimesgen_la-sgen-major-copying.lo \
+	libmonoruntimesgen_la-sgen-los.lo \
+	libmonoruntimesgen_la-sgen-protocol.lo \
 	libmonoruntimesgen_la-string-icalls.lo \
 	libmonoruntimesgen_la-sysmath.lo \
 	libmonoruntimesgen_la-threads.lo \
 	libmonoruntimesgen_la-threadpool.lo \
 	libmonoruntimesgen_la-verify.lo
-am_libmonoruntimesgen_la_OBJECTS = $(am__objects_15)
+am_libmonoruntimesgen_la_OBJECTS = $(am__objects_19)
 libmonoruntimesgen_la_OBJECTS = $(am_libmonoruntimesgen_la_OBJECTS)
 libmonoruntimesgen_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) \
 	$(libmonoruntimesgen_la_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
- at SUPPORT_SGEN_TRUE@am_libmonoruntimesgen_la_rpath =
+ at SHARED_MONO_TRUE@@SUPPORT_SGEN_TRUE at am_libmonoruntimesgen_la_rpath =
 am__installdirs = "$(DESTDIR)$(bindir)" \
 	"$(DESTDIR)$(libmonoruntimeincludedir)"
 binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
 PROGRAMS = $(bin_PROGRAMS)
-am_pedump_OBJECTS = pedump.$(OBJEXT)
+am__pedump_SOURCES_DIST = pedump.c
+ at SHARED_MONO_TRUE@am_pedump_OBJECTS = pedump.$(OBJEXT)
 pedump_OBJECTS = $(am_pedump_OBJECTS)
 am__DEPENDENCIES_1 =
 @DTRACE_G_REQUIRED_TRUE at am__DEPENDENCIES_2 = pedump-dtrace.$(OBJEXT)
-pedump_DEPENDENCIES = libmonoruntime.la ../io-layer/libwapi.la \
-	../utils/libmonoutils.la $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
+ at SHARED_MONO_TRUE@pedump_DEPENDENCIES = libmonoruntime.la \
+ at SHARED_MONO_TRUE@	../io-layer/libwapi.la \
+ at SHARED_MONO_TRUE@	../utils/libmonoutils.la \
+ at SHARED_MONO_TRUE@	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ at SHARED_MONO_TRUE@	$(am__DEPENDENCIES_2)
 pedump_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
 	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(pedump_LDFLAGS) \
 	$(LDFLAGS) -o $@
@@ -492,13 +615,15 @@ LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
 	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
 SOURCES = $(libmonoruntime_static_la_SOURCES) \
-	$(libmonoruntime_la_SOURCES) \
+	$(libmonoruntime_la_SOURCES) $(libmonoruntimemoon_la_SOURCES) \
 	$(libmonoruntimesgen_static_la_SOURCES) \
 	$(libmonoruntimesgen_la_SOURCES) $(pedump_SOURCES)
 DIST_SOURCES = $(am__libmonoruntime_static_la_SOURCES_DIST) \
 	$(am__libmonoruntime_la_SOURCES_DIST) \
+	$(am__libmonoruntimemoon_la_SOURCES_DIST) \
 	$(am__libmonoruntimesgen_static_la_SOURCES_DIST) \
-	$(am__libmonoruntimesgen_la_SOURCES_DIST) $(pedump_SOURCES)
+	$(am__libmonoruntimesgen_la_SOURCES_DIST) \
+	$(am__pedump_SOURCES_DIST)
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
@@ -594,6 +719,7 @@ MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
 MONO_DL_NEED_USCORE = @MONO_DL_NEED_USCORE@
 MONO_NACL_ALIGN_MASK_OFF = @MONO_NACL_ALIGN_MASK_OFF@
+MOONLIGHT_DEFINES = @MOONLIGHT_DEFINES@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
@@ -728,8 +854,11 @@ top_srcdir = @top_srcdir@
 # libtool is not capable of creating static/shared versions of the same
 # convenience lib, so we have to do it ourselves
 #
- at SUPPORT_SGEN_TRUE@sgen_libraries = libmonoruntimesgen.la libmonoruntimesgen-static.la 
-noinst_LTLIBRARIES = libmonoruntime.la libmonoruntime-static.la $(sgen_libraries)
+ at SHARED_MONO_TRUE@@SUPPORT_SGEN_TRUE at shared_sgen_libraries = libmonoruntimesgen.la 
+ at SUPPORT_SGEN_TRUE@sgen_libraries = $(shared_sgen_libraries) libmonoruntimesgen-static.la 
+ at MOONLIGHT_TRUE@moonlight_libraries = libmonoruntimemoon.la
+ at SHARED_MONO_TRUE@shared_libraries = libmonoruntime.la
+noinst_LTLIBRARIES = $(shared_libraries) libmonoruntime-static.la $(sgen_libraries) $(moonlight_libraries)
 INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/mono $(LIBGC_CFLAGS) $(GLIB_CFLAGS) -DMONO_BINDIR=\"$(bindir)/\" -DMONO_ASSEMBLIES=\"$(assembliesdir)\" -DMONO_CFG_DIR=\"$(confdir)\"
 CLEANFILES = mono-bundle.stamp
 libmonoruntime_static_la_LIBADD = $(bundle_obj) $(libmonoruntime_la_LIBADD)
@@ -741,8 +870,6 @@ sgen_sources = \
 	sgen-gray.c		\
 	sgen-pinning.c		\
 	sgen-pinning-stats.c	\
-	sgen-los.c		\
-	sgen-protocol.c		\
 	sgen-workers.c
 
 libmonoruntime_la_SOURCES = \
@@ -851,8 +978,11 @@ libmonoruntime_la_SOURCES = \
 	sgen-marksweep-par.c	\
 	sgen-marksweep-fixed-par.c	\
 	sgen-major-copying.c	\
+	sgen-los.c		\
+	sgen-protocol.c \
 	sgen-gc.h		\
 	sgen-archdep.h		\
+	sgen-cardtable.h	\
 	sgen-major-copy-object.h \
 	sgen-major-scan-object.h \
 	sgen-protocol.h		\
@@ -872,6 +1002,9 @@ libmonoruntime_la_SOURCES = \
 	wrapper-types.h
 
 libmonoruntime_la_CFLAGS = $(BOEHM_DEFINES)
+ at MOONLIGHT_TRUE@libmonoruntimemoon_la_SOURCES = $(libmonoruntime_la_SOURCES)
+ at MOONLIGHT_BOEHM_FALSE@@MOONLIGHT_TRUE at libmonoruntimemoon_la_CFLAGS = $(MOONLIGHT_DEFINES) $(SGEN_DEFINES)
+ at MOONLIGHT_BOEHM_TRUE@@MOONLIGHT_TRUE at libmonoruntimemoon_la_CFLAGS = $(MOONLIGHT_DEFINES) $(BOEHM_DEFINES)
 libmonoruntimesgen_la_SOURCES = $(libmonoruntime_la_SOURCES)
 libmonoruntimesgen_la_CFLAGS = $(SGEN_DEFINES)
 libmonoruntime_static_la_SOURCES = $(libmonoruntime_la_SOURCES)
@@ -908,13 +1041,13 @@ libmonoruntimeinclude_HEADERS = \
 
 @DTRACE_G_REQUIRED_FALSE at PEDUMP_DTRACE_OBJECT = 
 @DTRACE_G_REQUIRED_TRUE at PEDUMP_DTRACE_OBJECT = pedump-dtrace.$(OBJEXT)
-pedump_SOURCES = \
-	pedump.c
+ at SHARED_MONO_TRUE@pedump_SOURCES = \
+ at SHARED_MONO_TRUE@	pedump.c
 
-pedump_LDADD = libmonoruntime.la ../io-layer/libwapi.la ../utils/libmonoutils.la \
-	$(LIBGC_LIBS) $(GLIB_LIBS) -lm $(PEDUMP_DTRACE_OBJECT)
+ at SHARED_MONO_TRUE@pedump_LDADD = libmonoruntime.la ../io-layer/libwapi.la ../utils/libmonoutils.la \
+ at SHARED_MONO_TRUE@	$(LIBGC_LIBS) $(GLIB_LIBS) -lm $(PEDUMP_DTRACE_OBJECT)
 
- at PLATFORM_DARWIN_TRUE@pedump_LDFLAGS = -framework CoreFoundation
+ at PLATFORM_DARWIN_TRUE@@SHARED_MONO_TRUE at pedump_LDFLAGS = -framework CoreFoundation
 EXTRA_DIST = make-bundle.pl sample-bundle $(win32_sources) $(unix_sources) $(null_sources) $(sgen_sources) runtime.h
 all: all-am
 
@@ -961,7 +1094,9 @@ clean-noinstLTLIBRARIES:
 libmonoruntime-static.la: $(libmonoruntime_static_la_OBJECTS) $(libmonoruntime_static_la_DEPENDENCIES) 
 	$(libmonoruntime_static_la_LINK)  $(libmonoruntime_static_la_OBJECTS) $(libmonoruntime_static_la_LIBADD) $(LIBS)
 libmonoruntime.la: $(libmonoruntime_la_OBJECTS) $(libmonoruntime_la_DEPENDENCIES) 
-	$(libmonoruntime_la_LINK)  $(libmonoruntime_la_OBJECTS) $(libmonoruntime_la_LIBADD) $(LIBS)
+	$(libmonoruntime_la_LINK) $(am_libmonoruntime_la_rpath) $(libmonoruntime_la_OBJECTS) $(libmonoruntime_la_LIBADD) $(LIBS)
+libmonoruntimemoon.la: $(libmonoruntimemoon_la_OBJECTS) $(libmonoruntimemoon_la_DEPENDENCIES) 
+	$(libmonoruntimemoon_la_LINK) $(am_libmonoruntimemoon_la_rpath) $(libmonoruntimemoon_la_OBJECTS) $(libmonoruntimemoon_la_LIBADD) $(LIBS)
 libmonoruntimesgen-static.la: $(libmonoruntimesgen_static_la_OBJECTS) $(libmonoruntimesgen_static_la_DEPENDENCIES) 
 	$(libmonoruntimesgen_static_la_LINK) $(am_libmonoruntimesgen_static_la_rpath) $(libmonoruntimesgen_static_la_OBJECTS) $(libmonoruntimesgen_static_la_LIBADD) $(LIBS)
 libmonoruntimesgen.la: $(libmonoruntimesgen_la_OBJECTS) $(libmonoruntimesgen_la_DEPENDENCIES) 
@@ -1056,6 +1191,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntime_la-security.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntime_la-sgen-gc.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntime_la-sgen-internal.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntime_la-sgen-los.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntime_la-sgen-major-copying.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntime_la-sgen-marksweep-fixed-par.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntime_la-sgen-marksweep-fixed.Plo at am__quote@
@@ -1063,6 +1199,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntime_la-sgen-marksweep.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntime_la-sgen-os-mach.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntime_la-sgen-os-posix.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntime_la-sgen-protocol.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntime_la-socket-io.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntime_la-string-icalls.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntime_la-sysmath.Plo at am__quote@
@@ -1121,6 +1258,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntime_static_la-security.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntime_static_la-sgen-gc.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntime_static_la-sgen-internal.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntime_static_la-sgen-los.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntime_static_la-sgen-major-copying.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntime_static_la-sgen-marksweep-fixed-par.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntime_static_la-sgen-marksweep-fixed.Plo at am__quote@
@@ -1128,12 +1266,80 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntime_static_la-sgen-marksweep.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntime_static_la-sgen-os-mach.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntime_static_la-sgen-os-posix.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntime_static_la-sgen-protocol.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntime_static_la-socket-io.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntime_static_la-string-icalls.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntime_static_la-sysmath.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntime_static_la-threadpool.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntime_static_la-threads.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntime_static_la-verify.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-appdomain.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-assembly.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-attach.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-boehm-gc.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-class.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-cominterop.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-console-unix.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-console-win32.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-coree.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-debug-helpers.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-debug-mono-symfile.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-decimal.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-domain.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-environment.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-exception.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-file-io.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-filewatcher.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-gc.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-icall.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-image.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-loader.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-locales.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-lock-tracer.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-marshal.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-mempool.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-metadata-verify.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-metadata.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-method-builder.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-monitor.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-mono-basic-block.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-mono-config.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-mono-debug-debugger.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-mono-debug.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-mono-endian.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-mono-hash.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-mono-mlist.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-mono-perfcounters.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-mono-wsq.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-nacl-stub.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-null-gc.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-object.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-opcodes.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-process.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-profiler.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-rand.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-reflection.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-runtime.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-security-core-clr.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-security-manager.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-security.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-sgen-gc.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-sgen-internal.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-sgen-los.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-sgen-major-copying.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-sgen-marksweep-fixed-par.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-sgen-marksweep-fixed.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-sgen-marksweep-par.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-sgen-marksweep.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-sgen-os-mach.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-sgen-os-posix.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-sgen-protocol.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-socket-io.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-string-icalls.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-sysmath.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-threadpool.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-threads.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimemoon_la-verify.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimesgen_la-appdomain.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimesgen_la-assembly.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimesgen_la-attach.Plo at am__quote@
@@ -1186,6 +1392,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimesgen_la-security.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimesgen_la-sgen-gc.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimesgen_la-sgen-internal.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimesgen_la-sgen-los.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimesgen_la-sgen-major-copying.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimesgen_la-sgen-marksweep-fixed-par.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimesgen_la-sgen-marksweep-fixed.Plo at am__quote@
@@ -1193,6 +1400,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimesgen_la-sgen-marksweep.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimesgen_la-sgen-os-mach.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimesgen_la-sgen-os-posix.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimesgen_la-sgen-protocol.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimesgen_la-socket-io.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimesgen_la-string-icalls.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimesgen_la-sysmath.Plo at am__quote@
@@ -1251,6 +1459,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimesgen_static_la-security.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimesgen_static_la-sgen-gc.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimesgen_static_la-sgen-internal.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimesgen_static_la-sgen-los.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimesgen_static_la-sgen-major-copying.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimesgen_static_la-sgen-marksweep-fixed-par.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimesgen_static_la-sgen-marksweep-fixed.Plo at am__quote@
@@ -1258,6 +1467,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimesgen_static_la-sgen-marksweep.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimesgen_static_la-sgen-os-mach.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimesgen_static_la-sgen-os-posix.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimesgen_static_la-sgen-protocol.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimesgen_static_la-socket-io.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimesgen_static_la-string-icalls.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libmonoruntimesgen_static_la-sysmath.Plo at am__quote@
@@ -1707,6 +1917,20 @@ libmonoruntime_static_la-sgen-major-copying.lo: sgen-major-copying.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntime_static_la_CFLAGS) $(CFLAGS) -c -o libmonoruntime_static_la-sgen-major-copying.lo `test -f 'sgen-major-copying.c' || echo '$(srcdir)/'`sgen-major-copying.c
 
+libmonoruntime_static_la-sgen-los.lo: sgen-los.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntime_static_la_CFLAGS) $(CFLAGS) -MT libmonoruntime_static_la-sgen-los.lo -MD -MP -MF $(DEPDIR)/libmonoruntime_static_la-sgen-los.Tpo -c -o libmonoruntime_static_la-sgen-los.lo `test -f 'sgen-los.c' || echo '$(srcdir)/'`sgen-los.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntime_static_la-sgen-los.Tpo $(DEPDIR)/libmonoruntime_static_la-sgen-los.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='sgen-los.c' object='libmonoruntime_static_la-sgen-los.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntime_static_la_CFLAGS) $(CFLAGS) -c -o libmonoruntime_static_la-sgen-los.lo `test -f 'sgen-los.c' || echo '$(srcdir)/'`sgen-los.c
+
+libmonoruntime_static_la-sgen-protocol.lo: sgen-protocol.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntime_static_la_CFLAGS) $(CFLAGS) -MT libmonoruntime_static_la-sgen-protocol.lo -MD -MP -MF $(DEPDIR)/libmonoruntime_static_la-sgen-protocol.Tpo -c -o libmonoruntime_static_la-sgen-protocol.lo `test -f 'sgen-protocol.c' || echo '$(srcdir)/'`sgen-protocol.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntime_static_la-sgen-protocol.Tpo $(DEPDIR)/libmonoruntime_static_la-sgen-protocol.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='sgen-protocol.c' object='libmonoruntime_static_la-sgen-protocol.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntime_static_la_CFLAGS) $(CFLAGS) -c -o libmonoruntime_static_la-sgen-protocol.lo `test -f 'sgen-protocol.c' || echo '$(srcdir)/'`sgen-protocol.c
+
 libmonoruntime_static_la-string-icalls.lo: string-icalls.c
 @am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntime_static_la_CFLAGS) $(CFLAGS) -MT libmonoruntime_static_la-string-icalls.lo -MD -MP -MF $(DEPDIR)/libmonoruntime_static_la-string-icalls.Tpo -c -o libmonoruntime_static_la-string-icalls.lo `test -f 'string-icalls.c' || echo '$(srcdir)/'`string-icalls.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntime_static_la-string-icalls.Tpo $(DEPDIR)/libmonoruntime_static_la-string-icalls.Plo
@@ -2162,6 +2386,20 @@ libmonoruntime_la-sgen-major-copying.lo: sgen-major-copying.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntime_la_CFLAGS) $(CFLAGS) -c -o libmonoruntime_la-sgen-major-copying.lo `test -f 'sgen-major-copying.c' || echo '$(srcdir)/'`sgen-major-copying.c
 
+libmonoruntime_la-sgen-los.lo: sgen-los.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntime_la_CFLAGS) $(CFLAGS) -MT libmonoruntime_la-sgen-los.lo -MD -MP -MF $(DEPDIR)/libmonoruntime_la-sgen-los.Tpo -c -o libmonoruntime_la-sgen-los.lo `test -f 'sgen-los.c' || echo '$(srcdir)/'`sgen-los.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntime_la-sgen-los.Tpo $(DEPDIR)/libmonoruntime_la-sgen-los.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='sgen-los.c' object='libmonoruntime_la-sgen-los.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntime_la_CFLAGS) $(CFLAGS) -c -o libmonoruntime_la-sgen-los.lo `test -f 'sgen-los.c' || echo '$(srcdir)/'`sgen-los.c
+
+libmonoruntime_la-sgen-protocol.lo: sgen-protocol.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntime_la_CFLAGS) $(CFLAGS) -MT libmonoruntime_la-sgen-protocol.lo -MD -MP -MF $(DEPDIR)/libmonoruntime_la-sgen-protocol.Tpo -c -o libmonoruntime_la-sgen-protocol.lo `test -f 'sgen-protocol.c' || echo '$(srcdir)/'`sgen-protocol.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntime_la-sgen-protocol.Tpo $(DEPDIR)/libmonoruntime_la-sgen-protocol.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='sgen-protocol.c' object='libmonoruntime_la-sgen-protocol.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntime_la_CFLAGS) $(CFLAGS) -c -o libmonoruntime_la-sgen-protocol.lo `test -f 'sgen-protocol.c' || echo '$(srcdir)/'`sgen-protocol.c
+
 libmonoruntime_la-string-icalls.lo: string-icalls.c
 @am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntime_la_CFLAGS) $(CFLAGS) -MT libmonoruntime_la-string-icalls.lo -MD -MP -MF $(DEPDIR)/libmonoruntime_la-string-icalls.Tpo -c -o libmonoruntime_la-string-icalls.lo `test -f 'string-icalls.c' || echo '$(srcdir)/'`string-icalls.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntime_la-string-icalls.Tpo $(DEPDIR)/libmonoruntime_la-string-icalls.Plo
@@ -2197,6 +2435,475 @@ libmonoruntime_la-verify.lo: verify.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntime_la_CFLAGS) $(CFLAGS) -c -o libmonoruntime_la-verify.lo `test -f 'verify.c' || echo '$(srcdir)/'`verify.c
 
+libmonoruntimemoon_la-console-unix.lo: console-unix.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-console-unix.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-console-unix.Tpo -c -o libmonoruntimemoon_la-console-unix.lo `test -f 'console-unix.c' || echo '$(srcdir)/'`console-unix.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-console-unix.Tpo $(DEPDIR)/libmonoruntimemoon_la-console-unix.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='console-unix.c' object='libmonoruntimemoon_la-console-unix.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-console-unix.lo `test -f 'console-unix.c' || echo '$(srcdir)/'`console-unix.c
+
+libmonoruntimemoon_la-console-win32.lo: console-win32.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-console-win32.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-console-win32.Tpo -c -o libmonoruntimemoon_la-console-win32.lo `test -f 'console-win32.c' || echo '$(srcdir)/'`console-win32.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-console-win32.Tpo $(DEPDIR)/libmonoruntimemoon_la-console-win32.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='console-win32.c' object='libmonoruntimemoon_la-console-win32.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-console-win32.lo `test -f 'console-win32.c' || echo '$(srcdir)/'`console-win32.c
+
+libmonoruntimemoon_la-appdomain.lo: appdomain.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-appdomain.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-appdomain.Tpo -c -o libmonoruntimemoon_la-appdomain.lo `test -f 'appdomain.c' || echo '$(srcdir)/'`appdomain.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-appdomain.Tpo $(DEPDIR)/libmonoruntimemoon_la-appdomain.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='appdomain.c' object='libmonoruntimemoon_la-appdomain.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-appdomain.lo `test -f 'appdomain.c' || echo '$(srcdir)/'`appdomain.c
+
+libmonoruntimemoon_la-assembly.lo: assembly.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-assembly.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-assembly.Tpo -c -o libmonoruntimemoon_la-assembly.lo `test -f 'assembly.c' || echo '$(srcdir)/'`assembly.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-assembly.Tpo $(DEPDIR)/libmonoruntimemoon_la-assembly.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='assembly.c' object='libmonoruntimemoon_la-assembly.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-assembly.lo `test -f 'assembly.c' || echo '$(srcdir)/'`assembly.c
+
+libmonoruntimemoon_la-attach.lo: attach.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-attach.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-attach.Tpo -c -o libmonoruntimemoon_la-attach.lo `test -f 'attach.c' || echo '$(srcdir)/'`attach.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-attach.Tpo $(DEPDIR)/libmonoruntimemoon_la-attach.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='attach.c' object='libmonoruntimemoon_la-attach.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-attach.lo `test -f 'attach.c' || echo '$(srcdir)/'`attach.c
+
+libmonoruntimemoon_la-boehm-gc.lo: boehm-gc.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-boehm-gc.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-boehm-gc.Tpo -c -o libmonoruntimemoon_la-boehm-gc.lo `test -f 'boehm-gc.c' || echo '$(srcdir)/'`boehm-gc.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-boehm-gc.Tpo $(DEPDIR)/libmonoruntimemoon_la-boehm-gc.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='boehm-gc.c' object='libmonoruntimemoon_la-boehm-gc.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-boehm-gc.lo `test -f 'boehm-gc.c' || echo '$(srcdir)/'`boehm-gc.c
+
+libmonoruntimemoon_la-class.lo: class.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-class.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-class.Tpo -c -o libmonoruntimemoon_la-class.lo `test -f 'class.c' || echo '$(srcdir)/'`class.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-class.Tpo $(DEPDIR)/libmonoruntimemoon_la-class.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='class.c' object='libmonoruntimemoon_la-class.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-class.lo `test -f 'class.c' || echo '$(srcdir)/'`class.c
+
+libmonoruntimemoon_la-cominterop.lo: cominterop.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-cominterop.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-cominterop.Tpo -c -o libmonoruntimemoon_la-cominterop.lo `test -f 'cominterop.c' || echo '$(srcdir)/'`cominterop.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-cominterop.Tpo $(DEPDIR)/libmonoruntimemoon_la-cominterop.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='cominterop.c' object='libmonoruntimemoon_la-cominterop.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-cominterop.lo `test -f 'cominterop.c' || echo '$(srcdir)/'`cominterop.c
+
+libmonoruntimemoon_la-coree.lo: coree.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-coree.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-coree.Tpo -c -o libmonoruntimemoon_la-coree.lo `test -f 'coree.c' || echo '$(srcdir)/'`coree.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-coree.Tpo $(DEPDIR)/libmonoruntimemoon_la-coree.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='coree.c' object='libmonoruntimemoon_la-coree.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-coree.lo `test -f 'coree.c' || echo '$(srcdir)/'`coree.c
+
+libmonoruntimemoon_la-debug-helpers.lo: debug-helpers.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-debug-helpers.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-debug-helpers.Tpo -c -o libmonoruntimemoon_la-debug-helpers.lo `test -f 'debug-helpers.c' || echo '$(srcdir)/'`debug-helpers.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-debug-helpers.Tpo $(DEPDIR)/libmonoruntimemoon_la-debug-helpers.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='debug-helpers.c' object='libmonoruntimemoon_la-debug-helpers.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-debug-helpers.lo `test -f 'debug-helpers.c' || echo '$(srcdir)/'`debug-helpers.c
+
+libmonoruntimemoon_la-debug-mono-symfile.lo: debug-mono-symfile.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-debug-mono-symfile.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-debug-mono-symfile.Tpo -c -o libmonoruntimemoon_la-debug-mono-symfile.lo `test -f 'debug-mono-symfile.c' || echo '$(srcdir)/'`debug-mono-symfile.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-debug-mono-symfile.Tpo $(DEPDIR)/libmonoruntimemoon_la-debug-mono-symfile.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='debug-mono-symfile.c' object='libmonoruntimemoon_la-debug-mono-symfile.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-debug-mono-symfile.lo `test -f 'debug-mono-symfile.c' || echo '$(srcdir)/'`debug-mono-symfile.c
+
+libmonoruntimemoon_la-decimal.lo: decimal.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-decimal.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-decimal.Tpo -c -o libmonoruntimemoon_la-decimal.lo `test -f 'decimal.c' || echo '$(srcdir)/'`decimal.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-decimal.Tpo $(DEPDIR)/libmonoruntimemoon_la-decimal.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='decimal.c' object='libmonoruntimemoon_la-decimal.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-decimal.lo `test -f 'decimal.c' || echo '$(srcdir)/'`decimal.c
+
+libmonoruntimemoon_la-domain.lo: domain.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-domain.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-domain.Tpo -c -o libmonoruntimemoon_la-domain.lo `test -f 'domain.c' || echo '$(srcdir)/'`domain.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-domain.Tpo $(DEPDIR)/libmonoruntimemoon_la-domain.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='domain.c' object='libmonoruntimemoon_la-domain.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-domain.lo `test -f 'domain.c' || echo '$(srcdir)/'`domain.c
+
+libmonoruntimemoon_la-environment.lo: environment.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-environment.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-environment.Tpo -c -o libmonoruntimemoon_la-environment.lo `test -f 'environment.c' || echo '$(srcdir)/'`environment.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-environment.Tpo $(DEPDIR)/libmonoruntimemoon_la-environment.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='environment.c' object='libmonoruntimemoon_la-environment.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-environment.lo `test -f 'environment.c' || echo '$(srcdir)/'`environment.c
+
+libmonoruntimemoon_la-exception.lo: exception.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-exception.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-exception.Tpo -c -o libmonoruntimemoon_la-exception.lo `test -f 'exception.c' || echo '$(srcdir)/'`exception.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-exception.Tpo $(DEPDIR)/libmonoruntimemoon_la-exception.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='exception.c' object='libmonoruntimemoon_la-exception.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-exception.lo `test -f 'exception.c' || echo '$(srcdir)/'`exception.c
+
+libmonoruntimemoon_la-file-io.lo: file-io.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-file-io.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-file-io.Tpo -c -o libmonoruntimemoon_la-file-io.lo `test -f 'file-io.c' || echo '$(srcdir)/'`file-io.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-file-io.Tpo $(DEPDIR)/libmonoruntimemoon_la-file-io.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='file-io.c' object='libmonoruntimemoon_la-file-io.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-file-io.lo `test -f 'file-io.c' || echo '$(srcdir)/'`file-io.c
+
+libmonoruntimemoon_la-filewatcher.lo: filewatcher.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-filewatcher.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-filewatcher.Tpo -c -o libmonoruntimemoon_la-filewatcher.lo `test -f 'filewatcher.c' || echo '$(srcdir)/'`filewatcher.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-filewatcher.Tpo $(DEPDIR)/libmonoruntimemoon_la-filewatcher.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='filewatcher.c' object='libmonoruntimemoon_la-filewatcher.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-filewatcher.lo `test -f 'filewatcher.c' || echo '$(srcdir)/'`filewatcher.c
+
+libmonoruntimemoon_la-gc.lo: gc.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-gc.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-gc.Tpo -c -o libmonoruntimemoon_la-gc.lo `test -f 'gc.c' || echo '$(srcdir)/'`gc.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-gc.Tpo $(DEPDIR)/libmonoruntimemoon_la-gc.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='gc.c' object='libmonoruntimemoon_la-gc.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-gc.lo `test -f 'gc.c' || echo '$(srcdir)/'`gc.c
+
+libmonoruntimemoon_la-icall.lo: icall.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-icall.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-icall.Tpo -c -o libmonoruntimemoon_la-icall.lo `test -f 'icall.c' || echo '$(srcdir)/'`icall.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-icall.Tpo $(DEPDIR)/libmonoruntimemoon_la-icall.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='icall.c' object='libmonoruntimemoon_la-icall.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-icall.lo `test -f 'icall.c' || echo '$(srcdir)/'`icall.c
+
+libmonoruntimemoon_la-image.lo: image.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-image.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-image.Tpo -c -o libmonoruntimemoon_la-image.lo `test -f 'image.c' || echo '$(srcdir)/'`image.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-image.Tpo $(DEPDIR)/libmonoruntimemoon_la-image.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='image.c' object='libmonoruntimemoon_la-image.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-image.lo `test -f 'image.c' || echo '$(srcdir)/'`image.c
+
+libmonoruntimemoon_la-loader.lo: loader.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-loader.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-loader.Tpo -c -o libmonoruntimemoon_la-loader.lo `test -f 'loader.c' || echo '$(srcdir)/'`loader.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-loader.Tpo $(DEPDIR)/libmonoruntimemoon_la-loader.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='loader.c' object='libmonoruntimemoon_la-loader.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-loader.lo `test -f 'loader.c' || echo '$(srcdir)/'`loader.c
+
+libmonoruntimemoon_la-locales.lo: locales.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-locales.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-locales.Tpo -c -o libmonoruntimemoon_la-locales.lo `test -f 'locales.c' || echo '$(srcdir)/'`locales.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-locales.Tpo $(DEPDIR)/libmonoruntimemoon_la-locales.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='locales.c' object='libmonoruntimemoon_la-locales.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-locales.lo `test -f 'locales.c' || echo '$(srcdir)/'`locales.c
+
+libmonoruntimemoon_la-lock-tracer.lo: lock-tracer.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-lock-tracer.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-lock-tracer.Tpo -c -o libmonoruntimemoon_la-lock-tracer.lo `test -f 'lock-tracer.c' || echo '$(srcdir)/'`lock-tracer.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-lock-tracer.Tpo $(DEPDIR)/libmonoruntimemoon_la-lock-tracer.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='lock-tracer.c' object='libmonoruntimemoon_la-lock-tracer.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-lock-tracer.lo `test -f 'lock-tracer.c' || echo '$(srcdir)/'`lock-tracer.c
+
+libmonoruntimemoon_la-marshal.lo: marshal.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-marshal.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-marshal.Tpo -c -o libmonoruntimemoon_la-marshal.lo `test -f 'marshal.c' || echo '$(srcdir)/'`marshal.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-marshal.Tpo $(DEPDIR)/libmonoruntimemoon_la-marshal.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='marshal.c' object='libmonoruntimemoon_la-marshal.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-marshal.lo `test -f 'marshal.c' || echo '$(srcdir)/'`marshal.c
+
+libmonoruntimemoon_la-mempool.lo: mempool.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-mempool.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-mempool.Tpo -c -o libmonoruntimemoon_la-mempool.lo `test -f 'mempool.c' || echo '$(srcdir)/'`mempool.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-mempool.Tpo $(DEPDIR)/libmonoruntimemoon_la-mempool.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mempool.c' object='libmonoruntimemoon_la-mempool.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-mempool.lo `test -f 'mempool.c' || echo '$(srcdir)/'`mempool.c
+
+libmonoruntimemoon_la-metadata.lo: metadata.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-metadata.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-metadata.Tpo -c -o libmonoruntimemoon_la-metadata.lo `test -f 'metadata.c' || echo '$(srcdir)/'`metadata.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-metadata.Tpo $(DEPDIR)/libmonoruntimemoon_la-metadata.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='metadata.c' object='libmonoruntimemoon_la-metadata.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-metadata.lo `test -f 'metadata.c' || echo '$(srcdir)/'`metadata.c
+
+libmonoruntimemoon_la-metadata-verify.lo: metadata-verify.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-metadata-verify.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-metadata-verify.Tpo -c -o libmonoruntimemoon_la-metadata-verify.lo `test -f 'metadata-verify.c' || echo '$(srcdir)/'`metadata-verify.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-metadata-verify.Tpo $(DEPDIR)/libmonoruntimemoon_la-metadata-verify.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='metadata-verify.c' object='libmonoruntimemoon_la-metadata-verify.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-metadata-verify.lo `test -f 'metadata-verify.c' || echo '$(srcdir)/'`metadata-verify.c
+
+libmonoruntimemoon_la-method-builder.lo: method-builder.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-method-builder.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-method-builder.Tpo -c -o libmonoruntimemoon_la-method-builder.lo `test -f 'method-builder.c' || echo '$(srcdir)/'`method-builder.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-method-builder.Tpo $(DEPDIR)/libmonoruntimemoon_la-method-builder.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='method-builder.c' object='libmonoruntimemoon_la-method-builder.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-method-builder.lo `test -f 'method-builder.c' || echo '$(srcdir)/'`method-builder.c
+
+libmonoruntimemoon_la-mono-basic-block.lo: mono-basic-block.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-mono-basic-block.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-mono-basic-block.Tpo -c -o libmonoruntimemoon_la-mono-basic-block.lo `test -f 'mono-basic-block.c' || echo '$(srcdir)/'`mono-basic-block.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-mono-basic-block.Tpo $(DEPDIR)/libmonoruntimemoon_la-mono-basic-block.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mono-basic-block.c' object='libmonoruntimemoon_la-mono-basic-block.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-mono-basic-block.lo `test -f 'mono-basic-block.c' || echo '$(srcdir)/'`mono-basic-block.c
+
+libmonoruntimemoon_la-mono-config.lo: mono-config.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-mono-config.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-mono-config.Tpo -c -o libmonoruntimemoon_la-mono-config.lo `test -f 'mono-config.c' || echo '$(srcdir)/'`mono-config.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-mono-config.Tpo $(DEPDIR)/libmonoruntimemoon_la-mono-config.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mono-config.c' object='libmonoruntimemoon_la-mono-config.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-mono-config.lo `test -f 'mono-config.c' || echo '$(srcdir)/'`mono-config.c
+
+libmonoruntimemoon_la-mono-debug.lo: mono-debug.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-mono-debug.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-mono-debug.Tpo -c -o libmonoruntimemoon_la-mono-debug.lo `test -f 'mono-debug.c' || echo '$(srcdir)/'`mono-debug.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-mono-debug.Tpo $(DEPDIR)/libmonoruntimemoon_la-mono-debug.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mono-debug.c' object='libmonoruntimemoon_la-mono-debug.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-mono-debug.lo `test -f 'mono-debug.c' || echo '$(srcdir)/'`mono-debug.c
+
+libmonoruntimemoon_la-mono-debug-debugger.lo: mono-debug-debugger.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-mono-debug-debugger.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-mono-debug-debugger.Tpo -c -o libmonoruntimemoon_la-mono-debug-debugger.lo `test -f 'mono-debug-debugger.c' || echo '$(srcdir)/'`mono-debug-debugger.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-mono-debug-debugger.Tpo $(DEPDIR)/libmonoruntimemoon_la-mono-debug-debugger.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mono-debug-debugger.c' object='libmonoruntimemoon_la-mono-debug-debugger.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-mono-debug-debugger.lo `test -f 'mono-debug-debugger.c' || echo '$(srcdir)/'`mono-debug-debugger.c
+
+libmonoruntimemoon_la-mono-endian.lo: mono-endian.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-mono-endian.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-mono-endian.Tpo -c -o libmonoruntimemoon_la-mono-endian.lo `test -f 'mono-endian.c' || echo '$(srcdir)/'`mono-endian.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-mono-endian.Tpo $(DEPDIR)/libmonoruntimemoon_la-mono-endian.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mono-endian.c' object='libmonoruntimemoon_la-mono-endian.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-mono-endian.lo `test -f 'mono-endian.c' || echo '$(srcdir)/'`mono-endian.c
+
+libmonoruntimemoon_la-mono-hash.lo: mono-hash.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-mono-hash.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-mono-hash.Tpo -c -o libmonoruntimemoon_la-mono-hash.lo `test -f 'mono-hash.c' || echo '$(srcdir)/'`mono-hash.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-mono-hash.Tpo $(DEPDIR)/libmonoruntimemoon_la-mono-hash.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mono-hash.c' object='libmonoruntimemoon_la-mono-hash.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-mono-hash.lo `test -f 'mono-hash.c' || echo '$(srcdir)/'`mono-hash.c
+
+libmonoruntimemoon_la-mono-mlist.lo: mono-mlist.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-mono-mlist.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-mono-mlist.Tpo -c -o libmonoruntimemoon_la-mono-mlist.lo `test -f 'mono-mlist.c' || echo '$(srcdir)/'`mono-mlist.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-mono-mlist.Tpo $(DEPDIR)/libmonoruntimemoon_la-mono-mlist.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mono-mlist.c' object='libmonoruntimemoon_la-mono-mlist.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-mono-mlist.lo `test -f 'mono-mlist.c' || echo '$(srcdir)/'`mono-mlist.c
+
+libmonoruntimemoon_la-mono-perfcounters.lo: mono-perfcounters.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-mono-perfcounters.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-mono-perfcounters.Tpo -c -o libmonoruntimemoon_la-mono-perfcounters.lo `test -f 'mono-perfcounters.c' || echo '$(srcdir)/'`mono-perfcounters.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-mono-perfcounters.Tpo $(DEPDIR)/libmonoruntimemoon_la-mono-perfcounters.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mono-perfcounters.c' object='libmonoruntimemoon_la-mono-perfcounters.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-mono-perfcounters.lo `test -f 'mono-perfcounters.c' || echo '$(srcdir)/'`mono-perfcounters.c
+
+libmonoruntimemoon_la-mono-wsq.lo: mono-wsq.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-mono-wsq.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-mono-wsq.Tpo -c -o libmonoruntimemoon_la-mono-wsq.lo `test -f 'mono-wsq.c' || echo '$(srcdir)/'`mono-wsq.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-mono-wsq.Tpo $(DEPDIR)/libmonoruntimemoon_la-mono-wsq.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mono-wsq.c' object='libmonoruntimemoon_la-mono-wsq.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-mono-wsq.lo `test -f 'mono-wsq.c' || echo '$(srcdir)/'`mono-wsq.c
+
+libmonoruntimemoon_la-monitor.lo: monitor.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-monitor.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-monitor.Tpo -c -o libmonoruntimemoon_la-monitor.lo `test -f 'monitor.c' || echo '$(srcdir)/'`monitor.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-monitor.Tpo $(DEPDIR)/libmonoruntimemoon_la-monitor.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='monitor.c' object='libmonoruntimemoon_la-monitor.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-monitor.lo `test -f 'monitor.c' || echo '$(srcdir)/'`monitor.c
+
+libmonoruntimemoon_la-nacl-stub.lo: nacl-stub.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-nacl-stub.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-nacl-stub.Tpo -c -o libmonoruntimemoon_la-nacl-stub.lo `test -f 'nacl-stub.c' || echo '$(srcdir)/'`nacl-stub.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-nacl-stub.Tpo $(DEPDIR)/libmonoruntimemoon_la-nacl-stub.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='nacl-stub.c' object='libmonoruntimemoon_la-nacl-stub.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-nacl-stub.lo `test -f 'nacl-stub.c' || echo '$(srcdir)/'`nacl-stub.c
+
+libmonoruntimemoon_la-null-gc.lo: null-gc.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-null-gc.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-null-gc.Tpo -c -o libmonoruntimemoon_la-null-gc.lo `test -f 'null-gc.c' || echo '$(srcdir)/'`null-gc.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-null-gc.Tpo $(DEPDIR)/libmonoruntimemoon_la-null-gc.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='null-gc.c' object='libmonoruntimemoon_la-null-gc.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-null-gc.lo `test -f 'null-gc.c' || echo '$(srcdir)/'`null-gc.c
+
+libmonoruntimemoon_la-object.lo: object.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-object.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-object.Tpo -c -o libmonoruntimemoon_la-object.lo `test -f 'object.c' || echo '$(srcdir)/'`object.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-object.Tpo $(DEPDIR)/libmonoruntimemoon_la-object.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='object.c' object='libmonoruntimemoon_la-object.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-object.lo `test -f 'object.c' || echo '$(srcdir)/'`object.c
+
+libmonoruntimemoon_la-opcodes.lo: opcodes.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-opcodes.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-opcodes.Tpo -c -o libmonoruntimemoon_la-opcodes.lo `test -f 'opcodes.c' || echo '$(srcdir)/'`opcodes.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-opcodes.Tpo $(DEPDIR)/libmonoruntimemoon_la-opcodes.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='opcodes.c' object='libmonoruntimemoon_la-opcodes.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-opcodes.lo `test -f 'opcodes.c' || echo '$(srcdir)/'`opcodes.c
+
+libmonoruntimemoon_la-socket-io.lo: socket-io.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-socket-io.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-socket-io.Tpo -c -o libmonoruntimemoon_la-socket-io.lo `test -f 'socket-io.c' || echo '$(srcdir)/'`socket-io.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-socket-io.Tpo $(DEPDIR)/libmonoruntimemoon_la-socket-io.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='socket-io.c' object='libmonoruntimemoon_la-socket-io.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-socket-io.lo `test -f 'socket-io.c' || echo '$(srcdir)/'`socket-io.c
+
+libmonoruntimemoon_la-process.lo: process.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-process.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-process.Tpo -c -o libmonoruntimemoon_la-process.lo `test -f 'process.c' || echo '$(srcdir)/'`process.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-process.Tpo $(DEPDIR)/libmonoruntimemoon_la-process.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='process.c' object='libmonoruntimemoon_la-process.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-process.lo `test -f 'process.c' || echo '$(srcdir)/'`process.c
+
+libmonoruntimemoon_la-profiler.lo: profiler.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-profiler.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-profiler.Tpo -c -o libmonoruntimemoon_la-profiler.lo `test -f 'profiler.c' || echo '$(srcdir)/'`profiler.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-profiler.Tpo $(DEPDIR)/libmonoruntimemoon_la-profiler.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='profiler.c' object='libmonoruntimemoon_la-profiler.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-profiler.lo `test -f 'profiler.c' || echo '$(srcdir)/'`profiler.c
+
+libmonoruntimemoon_la-rand.lo: rand.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-rand.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-rand.Tpo -c -o libmonoruntimemoon_la-rand.lo `test -f 'rand.c' || echo '$(srcdir)/'`rand.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-rand.Tpo $(DEPDIR)/libmonoruntimemoon_la-rand.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='rand.c' object='libmonoruntimemoon_la-rand.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-rand.lo `test -f 'rand.c' || echo '$(srcdir)/'`rand.c
+
+libmonoruntimemoon_la-runtime.lo: runtime.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-runtime.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-runtime.Tpo -c -o libmonoruntimemoon_la-runtime.lo `test -f 'runtime.c' || echo '$(srcdir)/'`runtime.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-runtime.Tpo $(DEPDIR)/libmonoruntimemoon_la-runtime.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='runtime.c' object='libmonoruntimemoon_la-runtime.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-runtime.lo `test -f 'runtime.c' || echo '$(srcdir)/'`runtime.c
+
+libmonoruntimemoon_la-reflection.lo: reflection.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-reflection.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-reflection.Tpo -c -o libmonoruntimemoon_la-reflection.lo `test -f 'reflection.c' || echo '$(srcdir)/'`reflection.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-reflection.Tpo $(DEPDIR)/libmonoruntimemoon_la-reflection.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='reflection.c' object='libmonoruntimemoon_la-reflection.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-reflection.lo `test -f 'reflection.c' || echo '$(srcdir)/'`reflection.c
+
+libmonoruntimemoon_la-security.lo: security.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-security.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-security.Tpo -c -o libmonoruntimemoon_la-security.lo `test -f 'security.c' || echo '$(srcdir)/'`security.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-security.Tpo $(DEPDIR)/libmonoruntimemoon_la-security.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='security.c' object='libmonoruntimemoon_la-security.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-security.lo `test -f 'security.c' || echo '$(srcdir)/'`security.c
+
+libmonoruntimemoon_la-security-core-clr.lo: security-core-clr.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-security-core-clr.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-security-core-clr.Tpo -c -o libmonoruntimemoon_la-security-core-clr.lo `test -f 'security-core-clr.c' || echo '$(srcdir)/'`security-core-clr.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-security-core-clr.Tpo $(DEPDIR)/libmonoruntimemoon_la-security-core-clr.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='security-core-clr.c' object='libmonoruntimemoon_la-security-core-clr.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-security-core-clr.lo `test -f 'security-core-clr.c' || echo '$(srcdir)/'`security-core-clr.c
+
+libmonoruntimemoon_la-security-manager.lo: security-manager.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-security-manager.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-security-manager.Tpo -c -o libmonoruntimemoon_la-security-manager.lo `test -f 'security-manager.c' || echo '$(srcdir)/'`security-manager.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-security-manager.Tpo $(DEPDIR)/libmonoruntimemoon_la-security-manager.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='security-manager.c' object='libmonoruntimemoon_la-security-manager.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-security-manager.lo `test -f 'security-manager.c' || echo '$(srcdir)/'`security-manager.c
+
+libmonoruntimemoon_la-sgen-os-posix.lo: sgen-os-posix.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-sgen-os-posix.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-sgen-os-posix.Tpo -c -o libmonoruntimemoon_la-sgen-os-posix.lo `test -f 'sgen-os-posix.c' || echo '$(srcdir)/'`sgen-os-posix.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-sgen-os-posix.Tpo $(DEPDIR)/libmonoruntimemoon_la-sgen-os-posix.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='sgen-os-posix.c' object='libmonoruntimemoon_la-sgen-os-posix.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-sgen-os-posix.lo `test -f 'sgen-os-posix.c' || echo '$(srcdir)/'`sgen-os-posix.c
+
+libmonoruntimemoon_la-sgen-os-mach.lo: sgen-os-mach.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-sgen-os-mach.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-sgen-os-mach.Tpo -c -o libmonoruntimemoon_la-sgen-os-mach.lo `test -f 'sgen-os-mach.c' || echo '$(srcdir)/'`sgen-os-mach.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-sgen-os-mach.Tpo $(DEPDIR)/libmonoruntimemoon_la-sgen-os-mach.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='sgen-os-mach.c' object='libmonoruntimemoon_la-sgen-os-mach.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-sgen-os-mach.lo `test -f 'sgen-os-mach.c' || echo '$(srcdir)/'`sgen-os-mach.c
+
+libmonoruntimemoon_la-sgen-gc.lo: sgen-gc.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-sgen-gc.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-sgen-gc.Tpo -c -o libmonoruntimemoon_la-sgen-gc.lo `test -f 'sgen-gc.c' || echo '$(srcdir)/'`sgen-gc.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-sgen-gc.Tpo $(DEPDIR)/libmonoruntimemoon_la-sgen-gc.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='sgen-gc.c' object='libmonoruntimemoon_la-sgen-gc.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-sgen-gc.lo `test -f 'sgen-gc.c' || echo '$(srcdir)/'`sgen-gc.c
+
+libmonoruntimemoon_la-sgen-internal.lo: sgen-internal.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-sgen-internal.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-sgen-internal.Tpo -c -o libmonoruntimemoon_la-sgen-internal.lo `test -f 'sgen-internal.c' || echo '$(srcdir)/'`sgen-internal.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-sgen-internal.Tpo $(DEPDIR)/libmonoruntimemoon_la-sgen-internal.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='sgen-internal.c' object='libmonoruntimemoon_la-sgen-internal.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-sgen-internal.lo `test -f 'sgen-internal.c' || echo '$(srcdir)/'`sgen-internal.c
+
+libmonoruntimemoon_la-sgen-marksweep.lo: sgen-marksweep.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-sgen-marksweep.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-sgen-marksweep.Tpo -c -o libmonoruntimemoon_la-sgen-marksweep.lo `test -f 'sgen-marksweep.c' || echo '$(srcdir)/'`sgen-marksweep.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-sgen-marksweep.Tpo $(DEPDIR)/libmonoruntimemoon_la-sgen-marksweep.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='sgen-marksweep.c' object='libmonoruntimemoon_la-sgen-marksweep.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-sgen-marksweep.lo `test -f 'sgen-marksweep.c' || echo '$(srcdir)/'`sgen-marksweep.c
+
+libmonoruntimemoon_la-sgen-marksweep-fixed.lo: sgen-marksweep-fixed.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-sgen-marksweep-fixed.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-sgen-marksweep-fixed.Tpo -c -o libmonoruntimemoon_la-sgen-marksweep-fixed.lo `test -f 'sgen-marksweep-fixed.c' || echo '$(srcdir)/'`sgen-marksweep-fixed.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-sgen-marksweep-fixed.Tpo $(DEPDIR)/libmonoruntimemoon_la-sgen-marksweep-fixed.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='sgen-marksweep-fixed.c' object='libmonoruntimemoon_la-sgen-marksweep-fixed.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-sgen-marksweep-fixed.lo `test -f 'sgen-marksweep-fixed.c' || echo '$(srcdir)/'`sgen-marksweep-fixed.c
+
+libmonoruntimemoon_la-sgen-marksweep-par.lo: sgen-marksweep-par.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-sgen-marksweep-par.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-sgen-marksweep-par.Tpo -c -o libmonoruntimemoon_la-sgen-marksweep-par.lo `test -f 'sgen-marksweep-par.c' || echo '$(srcdir)/'`sgen-marksweep-par.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-sgen-marksweep-par.Tpo $(DEPDIR)/libmonoruntimemoon_la-sgen-marksweep-par.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='sgen-marksweep-par.c' object='libmonoruntimemoon_la-sgen-marksweep-par.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-sgen-marksweep-par.lo `test -f 'sgen-marksweep-par.c' || echo '$(srcdir)/'`sgen-marksweep-par.c
+
+libmonoruntimemoon_la-sgen-marksweep-fixed-par.lo: sgen-marksweep-fixed-par.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-sgen-marksweep-fixed-par.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-sgen-marksweep-fixed-par.Tpo -c -o libmonoruntimemoon_la-sgen-marksweep-fixed-par.lo `test -f 'sgen-marksweep-fixed-par.c' || echo '$(srcdir)/'`sgen-marksweep-fixed-par.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-sgen-marksweep-fixed-par.Tpo $(DEPDIR)/libmonoruntimemoon_la-sgen-marksweep-fixed-par.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='sgen-marksweep-fixed-par.c' object='libmonoruntimemoon_la-sgen-marksweep-fixed-par.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-sgen-marksweep-fixed-par.lo `test -f 'sgen-marksweep-fixed-par.c' || echo '$(srcdir)/'`sgen-marksweep-fixed-par.c
+
+libmonoruntimemoon_la-sgen-major-copying.lo: sgen-major-copying.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-sgen-major-copying.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-sgen-major-copying.Tpo -c -o libmonoruntimemoon_la-sgen-major-copying.lo `test -f 'sgen-major-copying.c' || echo '$(srcdir)/'`sgen-major-copying.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-sgen-major-copying.Tpo $(DEPDIR)/libmonoruntimemoon_la-sgen-major-copying.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='sgen-major-copying.c' object='libmonoruntimemoon_la-sgen-major-copying.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-sgen-major-copying.lo `test -f 'sgen-major-copying.c' || echo '$(srcdir)/'`sgen-major-copying.c
+
+libmonoruntimemoon_la-sgen-los.lo: sgen-los.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-sgen-los.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-sgen-los.Tpo -c -o libmonoruntimemoon_la-sgen-los.lo `test -f 'sgen-los.c' || echo '$(srcdir)/'`sgen-los.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-sgen-los.Tpo $(DEPDIR)/libmonoruntimemoon_la-sgen-los.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='sgen-los.c' object='libmonoruntimemoon_la-sgen-los.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-sgen-los.lo `test -f 'sgen-los.c' || echo '$(srcdir)/'`sgen-los.c
+
+libmonoruntimemoon_la-sgen-protocol.lo: sgen-protocol.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-sgen-protocol.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-sgen-protocol.Tpo -c -o libmonoruntimemoon_la-sgen-protocol.lo `test -f 'sgen-protocol.c' || echo '$(srcdir)/'`sgen-protocol.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-sgen-protocol.Tpo $(DEPDIR)/libmonoruntimemoon_la-sgen-protocol.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='sgen-protocol.c' object='libmonoruntimemoon_la-sgen-protocol.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-sgen-protocol.lo `test -f 'sgen-protocol.c' || echo '$(srcdir)/'`sgen-protocol.c
+
+libmonoruntimemoon_la-string-icalls.lo: string-icalls.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-string-icalls.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-string-icalls.Tpo -c -o libmonoruntimemoon_la-string-icalls.lo `test -f 'string-icalls.c' || echo '$(srcdir)/'`string-icalls.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-string-icalls.Tpo $(DEPDIR)/libmonoruntimemoon_la-string-icalls.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='string-icalls.c' object='libmonoruntimemoon_la-string-icalls.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-string-icalls.lo `test -f 'string-icalls.c' || echo '$(srcdir)/'`string-icalls.c
+
+libmonoruntimemoon_la-sysmath.lo: sysmath.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-sysmath.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-sysmath.Tpo -c -o libmonoruntimemoon_la-sysmath.lo `test -f 'sysmath.c' || echo '$(srcdir)/'`sysmath.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-sysmath.Tpo $(DEPDIR)/libmonoruntimemoon_la-sysmath.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='sysmath.c' object='libmonoruntimemoon_la-sysmath.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-sysmath.lo `test -f 'sysmath.c' || echo '$(srcdir)/'`sysmath.c
+
+libmonoruntimemoon_la-threads.lo: threads.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-threads.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-threads.Tpo -c -o libmonoruntimemoon_la-threads.lo `test -f 'threads.c' || echo '$(srcdir)/'`threads.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-threads.Tpo $(DEPDIR)/libmonoruntimemoon_la-threads.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='threads.c' object='libmonoruntimemoon_la-threads.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-threads.lo `test -f 'threads.c' || echo '$(srcdir)/'`threads.c
+
+libmonoruntimemoon_la-threadpool.lo: threadpool.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-threadpool.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-threadpool.Tpo -c -o libmonoruntimemoon_la-threadpool.lo `test -f 'threadpool.c' || echo '$(srcdir)/'`threadpool.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-threadpool.Tpo $(DEPDIR)/libmonoruntimemoon_la-threadpool.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='threadpool.c' object='libmonoruntimemoon_la-threadpool.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-threadpool.lo `test -f 'threadpool.c' || echo '$(srcdir)/'`threadpool.c
+
+libmonoruntimemoon_la-verify.lo: verify.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -MT libmonoruntimemoon_la-verify.lo -MD -MP -MF $(DEPDIR)/libmonoruntimemoon_la-verify.Tpo -c -o libmonoruntimemoon_la-verify.lo `test -f 'verify.c' || echo '$(srcdir)/'`verify.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimemoon_la-verify.Tpo $(DEPDIR)/libmonoruntimemoon_la-verify.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='verify.c' object='libmonoruntimemoon_la-verify.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimemoon_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimemoon_la-verify.lo `test -f 'verify.c' || echo '$(srcdir)/'`verify.c
+
 libmonoruntimesgen_static_la-console-unix.lo: console-unix.c
 @am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimesgen_static_la_CFLAGS) $(CFLAGS) -MT libmonoruntimesgen_static_la-console-unix.lo -MD -MP -MF $(DEPDIR)/libmonoruntimesgen_static_la-console-unix.Tpo -c -o libmonoruntimesgen_static_la-console-unix.lo `test -f 'console-unix.c' || echo '$(srcdir)/'`console-unix.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimesgen_static_la-console-unix.Tpo $(DEPDIR)/libmonoruntimesgen_static_la-console-unix.Plo
@@ -2617,6 +3324,20 @@ libmonoruntimesgen_static_la-sgen-major-copying.lo: sgen-major-copying.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimesgen_static_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimesgen_static_la-sgen-major-copying.lo `test -f 'sgen-major-copying.c' || echo '$(srcdir)/'`sgen-major-copying.c
 
+libmonoruntimesgen_static_la-sgen-los.lo: sgen-los.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimesgen_static_la_CFLAGS) $(CFLAGS) -MT libmonoruntimesgen_static_la-sgen-los.lo -MD -MP -MF $(DEPDIR)/libmonoruntimesgen_static_la-sgen-los.Tpo -c -o libmonoruntimesgen_static_la-sgen-los.lo `test -f 'sgen-los.c' || echo '$(srcdir)/'`sgen-los.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimesgen_static_la-sgen-los.Tpo $(DEPDIR)/libmonoruntimesgen_static_la-sgen-los.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='sgen-los.c' object='libmonoruntimesgen_static_la-sgen-los.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimesgen_static_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimesgen_static_la-sgen-los.lo `test -f 'sgen-los.c' || echo '$(srcdir)/'`sgen-los.c
+
+libmonoruntimesgen_static_la-sgen-protocol.lo: sgen-protocol.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimesgen_static_la_CFLAGS) $(CFLAGS) -MT libmonoruntimesgen_static_la-sgen-protocol.lo -MD -MP -MF $(DEPDIR)/libmonoruntimesgen_static_la-sgen-protocol.Tpo -c -o libmonoruntimesgen_static_la-sgen-protocol.lo `test -f 'sgen-protocol.c' || echo '$(srcdir)/'`sgen-protocol.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimesgen_static_la-sgen-protocol.Tpo $(DEPDIR)/libmonoruntimesgen_static_la-sgen-protocol.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='sgen-protocol.c' object='libmonoruntimesgen_static_la-sgen-protocol.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimesgen_static_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimesgen_static_la-sgen-protocol.lo `test -f 'sgen-protocol.c' || echo '$(srcdir)/'`sgen-protocol.c
+
 libmonoruntimesgen_static_la-string-icalls.lo: string-icalls.c
 @am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimesgen_static_la_CFLAGS) $(CFLAGS) -MT libmonoruntimesgen_static_la-string-icalls.lo -MD -MP -MF $(DEPDIR)/libmonoruntimesgen_static_la-string-icalls.Tpo -c -o libmonoruntimesgen_static_la-string-icalls.lo `test -f 'string-icalls.c' || echo '$(srcdir)/'`string-icalls.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimesgen_static_la-string-icalls.Tpo $(DEPDIR)/libmonoruntimesgen_static_la-string-icalls.Plo
@@ -3072,6 +3793,20 @@ libmonoruntimesgen_la-sgen-major-copying.lo: sgen-major-copying.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimesgen_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimesgen_la-sgen-major-copying.lo `test -f 'sgen-major-copying.c' || echo '$(srcdir)/'`sgen-major-copying.c
 
+libmonoruntimesgen_la-sgen-los.lo: sgen-los.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimesgen_la_CFLAGS) $(CFLAGS) -MT libmonoruntimesgen_la-sgen-los.lo -MD -MP -MF $(DEPDIR)/libmonoruntimesgen_la-sgen-los.Tpo -c -o libmonoruntimesgen_la-sgen-los.lo `test -f 'sgen-los.c' || echo '$(srcdir)/'`sgen-los.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimesgen_la-sgen-los.Tpo $(DEPDIR)/libmonoruntimesgen_la-sgen-los.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='sgen-los.c' object='libmonoruntimesgen_la-sgen-los.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimesgen_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimesgen_la-sgen-los.lo `test -f 'sgen-los.c' || echo '$(srcdir)/'`sgen-los.c
+
+libmonoruntimesgen_la-sgen-protocol.lo: sgen-protocol.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimesgen_la_CFLAGS) $(CFLAGS) -MT libmonoruntimesgen_la-sgen-protocol.lo -MD -MP -MF $(DEPDIR)/libmonoruntimesgen_la-sgen-protocol.Tpo -c -o libmonoruntimesgen_la-sgen-protocol.lo `test -f 'sgen-protocol.c' || echo '$(srcdir)/'`sgen-protocol.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimesgen_la-sgen-protocol.Tpo $(DEPDIR)/libmonoruntimesgen_la-sgen-protocol.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='sgen-protocol.c' object='libmonoruntimesgen_la-sgen-protocol.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimesgen_la_CFLAGS) $(CFLAGS) -c -o libmonoruntimesgen_la-sgen-protocol.lo `test -f 'sgen-protocol.c' || echo '$(srcdir)/'`sgen-protocol.c
+
 libmonoruntimesgen_la-string-icalls.lo: string-icalls.c
 @am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmonoruntimesgen_la_CFLAGS) $(CFLAGS) -MT libmonoruntimesgen_la-string-icalls.lo -MD -MP -MF $(DEPDIR)/libmonoruntimesgen_la-string-icalls.Tpo -c -o libmonoruntimesgen_la-string-icalls.lo `test -f 'string-icalls.c' || echo '$(srcdir)/'`string-icalls.c
 @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libmonoruntimesgen_la-string-icalls.Tpo $(DEPDIR)/libmonoruntimesgen_la-string-icalls.Plo
@@ -3314,6 +4049,10 @@ uninstall-am: uninstall-binPROGRAMS \
 	uninstall-libmonoruntimeincludeHEADERS
 
 @HOST_WIN32_TRUE at export HOST_CC
+ at MOONLIGHT_TRUE@moon-do-build: libmonoruntime-static.la libmonoruntimemoon.la
+ at MOONLIGHT_TRUE@moon-do-clean:
+ at MOONLIGHT_TRUE@	-test -z "libmonoruntime-static.la" || rm -f libmonoruntime-static.la
+ at MOONLIGHT_TRUE@	-test -z "libmonoruntimemoon.la" || rm -f libmonoruntimemoon.la
 
 #
 # Make sure any prefix changes are updated in the binaries too.
diff --git a/mono/metadata/appdomain.c b/mono/metadata/appdomain.c
index 3764d29..ab1fc10 100644
--- a/mono/metadata/appdomain.c
+++ b/mono/metadata/appdomain.c
@@ -73,7 +73,7 @@
  * Changes which are already detected at runtime, like the addition
  * of icalls, do not require an increment.
  */
-#define MONO_CORLIB_VERSION 93
+#define MONO_CORLIB_VERSION 94
 
 typedef struct
 {
@@ -990,7 +990,7 @@ add_assemblies_to_domain (MonoDomain *domain, MonoAssembly *ass, GHashTable *ht)
 		mono_assembly_addref (ass);
 		g_hash_table_insert (ht, ass, ass);
 		domain->domain_assemblies = g_slist_prepend (domain->domain_assemblies, ass);
-		mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_ASSEMBLY, "Assembly %s %p added to domain %s, ref_count=%d\n", ass->aname.name, ass, domain->friendly_name, ass->ref_count);
+		mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_ASSEMBLY, "Assembly %s[%p] added to domain %s, ref_count=%d", ass->aname.name, ass, domain->friendly_name, ass->ref_count);
 	}
 
 	if (ass->image->references) {
@@ -2173,7 +2173,6 @@ typedef struct unload_data {
 	char *failure_reason;
 } unload_data;
 
-#ifdef HAVE_SGEN_GC
 static void
 deregister_reflection_info_roots_nspace_table (gpointer key, gpointer value, gpointer image)
 {
@@ -2237,7 +2236,6 @@ deregister_reflection_info_roots (MonoDomain *domain)
 	mono_domain_assemblies_unlock (domain);
 	mono_loader_unlock ();
 }
-#endif
 
 static guint32 WINAPI
 unload_thread_main (void *arg)
@@ -2293,9 +2291,10 @@ unload_thread_main (void *arg)
 #endif
 	for (i = 0; i < domain->class_vtable_array->len; ++i)
 		clear_cached_vtable (g_ptr_array_index (domain->class_vtable_array, i));
-#ifdef HAVE_SGEN_GC
 	deregister_reflection_info_roots (domain);
-#endif
+
+	mono_assembly_cleanup_domain_bindings (domain->domain_id);
+
 	mono_domain_unlock (domain);
 	mono_loader_unlock ();
 
@@ -2312,7 +2311,7 @@ unload_thread_main (void *arg)
 
 	mono_gc_collect (mono_gc_max_generation ());
 
-	mono_thread_detach  (thread);
+	mono_thread_detach (thread);
 
 	return 0;
 }
diff --git a/mono/metadata/assembly.c b/mono/metadata/assembly.c
index 99013f2..1d2bf75 100644
--- a/mono/metadata/assembly.c
+++ b/mono/metadata/assembly.c
@@ -62,6 +62,7 @@ static char **assemblies_path = NULL;
 /* Contains the list of directories that point to auxiliary GACs */
 static char **extra_gac_paths = NULL;
 
+#ifndef DISABLE_ASSEMBLY_REMAPPING
 /* The list of system assemblies what will be remapped to the running
  * runtime version. WARNING: this list must be sorted.
  */
@@ -111,9 +112,9 @@ static const AssemblyVersionMap framework_assemblies [] = {
 	{"System.Runtime.Serialization.Formatters.Soap", 0},
 	{"System.Security", 0},
 	{"System.ServiceProcess", 0},
+	{"System.Transactions", 0},
 	{"System.Web", 0},
 	{"System.Web.Abstractions", 2},
-	{"System.Web.Extensions", 2},
 	{"System.Web.Mobile", 0},
 	{"System.Web.Routing", 2},
 	{"System.Web.Services", 0},
@@ -121,6 +122,7 @@ static const AssemblyVersionMap framework_assemblies [] = {
 	{"System.Xml", 0},
 	{"mscorlib", 0}
 };
+#endif
 
 /*
  * keeps track of loaded assemblies
@@ -195,13 +197,23 @@ mono_public_tokens_are_equal (const unsigned char *pubt1, const unsigned char *p
 	return memcmp (pubt1, pubt2, 16) == 0;
 }
 
+/* Native Client can't get this info from an environment variable so */
+/* it's passed in to the runtime, or set manually by embedding code. */
+#ifdef __native_client__
+char* nacl_mono_path = NULL;
+#endif
+
 static void
 check_path_env (void)
 {
 	const char *path;
 	char **splitted, **dest;
 	
+#ifdef __native_client__
+	path = nacl_mono_path;
+#else
 	path = g_getenv ("MONO_PATH");
+#endif
 	if (!path)
 		return;
 
@@ -566,7 +578,7 @@ set_dirs (char *exe)
 
 	config = g_build_filename (base, "etc", NULL);
 	lib = g_build_filename (base, "lib", NULL);
-	mono = g_build_filename (lib, "mono/1.0", NULL);
+	mono = g_build_filename (lib, "mono/2.0", NULL);
 	if (stat (mono, &buf) == -1)
 		fallback ();
 	else {
@@ -613,8 +625,6 @@ mono_set_rootdir (void)
  			fallback ();
  			return;
  		}
-
-		name = mono_path_resolve_symlinks (name);
  	}
 #endif
 
@@ -755,9 +765,11 @@ mono_assembly_fill_assembly_name (MonoImage *image, MonoAssemblyName *aname)
 char*
 mono_stringify_assembly_name (MonoAssemblyName *aname)
 {
+	const char *quote = (aname->name && g_ascii_isspace (aname->name [0])) ? "\"" : "";
+
 	return g_strdup_printf (
-		"%s, Version=%d.%d.%d.%d, Culture=%s, PublicKeyToken=%s%s",
-		aname->name,
+		"%s%s%s, Version=%d.%d.%d.%d, Culture=%s, PublicKeyToken=%s%s",
+		quote, aname->name, quote,
 		aname->major, aname->minor, aname->build, aname->revision,
 		aname->culture && *aname->culture? aname->culture: "neutral",
 		aname->public_key_token [0] ? (char *)aname->public_key_token : "null",
@@ -796,6 +808,7 @@ mono_assembly_addref (MonoAssembly *assembly)
 	InterlockedIncrement (&assembly->ref_count);
 }
 
+#ifndef DISABLE_ASSEMBLY_REMAPPING
 static MonoAssemblyName *
 mono_assembly_remap_version (MonoAssemblyName *aname, MonoAssemblyName *dest_aname)
 {
@@ -844,6 +857,7 @@ mono_assembly_remap_version (MonoAssemblyName *aname, MonoAssemblyName *dest_ana
 	}
 	return aname;
 }
+#endif
 
 /*
  * mono_assembly_get_assemblyref:
@@ -960,11 +974,11 @@ mono_assembly_load_reference (MonoImage *image, int index)
 		if (reference != REFERENCE_MISSING){
 			mono_assembly_addref (reference);
 			if (image->assembly)
-				mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_ASSEMBLY, "Assembly Ref addref %s %p -> %s %p: %d\n",
+				mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_ASSEMBLY, "Assembly Ref addref %s[%p] -> %s[%p]: %d",
 				    image->assembly->aname.name, image->assembly, reference->aname.name, reference, reference->ref_count);
 		} else {
 			if (image->assembly)
-				mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_ASSEMBLY, "Failed to load assembly %s %p\n",
+				mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_ASSEMBLY, "Failed to load assembly %s[%p]\n",
 				    image->assembly->aname.name, image->assembly);
 		}
 		
@@ -1559,7 +1573,7 @@ mono_assembly_load_from_full (MonoImage *image, const char*fname,
 	/* Add a non-temporary reference because of ass->image */
 	mono_image_addref (image);
 
-	mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_ASSEMBLY, "Image addref %s %p -> %s %p: %d\n", ass->aname.name, ass, image->name, image, image->ref_count);
+	mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_ASSEMBLY, "Image addref %s[%p] -> %s[%p]: %d", ass->aname.name, ass, image->name, image, image->ref_count);
 
 	/* 
 	 * The load hooks might take locks so we can't call them while holding the
@@ -1597,7 +1611,7 @@ mono_assembly_load_from_full (MonoImage *image, const char*fname,
 	loaded_assemblies = g_list_prepend (loaded_assemblies, ass);
 	mono_assemblies_unlock ();
 
-#ifdef HOST_WIN32
+#ifdef ENABLE_COREE
 	if (image->is_module_handle)
 		mono_image_fixup_vtable (image);
 #endif
@@ -1644,7 +1658,15 @@ parse_public_key (const gchar *key, gchar** pubkey)
 	keylen = strlen (key) >> 1;
 	if (keylen < 1)
 		return FALSE;
-	
+
+	/* allow the ECMA standard key */
+	if (strcmp (key, "00000000000000000400000000000000") == 0) {
+		if (pubkey) {
+			arr = g_strdup ("b77a5c561934e089");
+			*pubkey = arr;
+		}
+		return TRUE;
+	}
 	val = g_ascii_xdigit_value (key [0]) << 4;
 	val |= g_ascii_xdigit_value (key [1]);
 	switch (val) {
@@ -1713,7 +1735,7 @@ parse_public_key (const gchar *key, gchar** pubkey)
 }
 
 static gboolean
-build_assembly_name (const char *name, const char *version, const char *culture, const char *token, const char *key, guint32 flags, MonoAssemblyName *aname, gboolean save_public_key)
+build_assembly_name (const char *name, const char *version, const char *culture, const char *token, const char *key, guint32 flags, guint32 arch, MonoAssemblyName *aname, gboolean save_public_key)
 {
 	gint major, minor, build, revision;
 	gint len;
@@ -1743,6 +1765,7 @@ build_assembly_name (const char *name, const char *version, const char *culture,
 	}
 	
 	aname->flags = flags;
+	aname->arch = arch;
 	aname->name = g_strdup (name);
 	
 	if (culture) {
@@ -1799,7 +1822,7 @@ parse_assembly_directory_name (const char *name, const char *dirname, MonoAssemb
 		return FALSE;
 	}
 	
-	res = build_assembly_name (name, parts[0], parts[1], parts[2], NULL, 0, aname, FALSE);
+	res = build_assembly_name (name, parts[0], parts[1], parts[2], NULL, 0, 0, aname, FALSE);
 	g_strfreev (parts);
 	return res;
 }
@@ -1820,6 +1843,7 @@ mono_assembly_name_parse_full (const char *name, MonoAssemblyName *aname, gboole
 	gboolean version_defined;
 	gboolean token_defined;
 	guint32 flags = 0;
+	guint32 arch = PROCESSOR_ARCHITECTURE_NONE;
 
 	if (!is_version_defined)
 		is_version_defined = &version_defined;
@@ -1893,7 +1917,19 @@ mono_assembly_name_parse_full (const char *name, MonoAssemblyName *aname, gboole
 		}
 
 		if (!g_ascii_strncasecmp (value, "ProcessorArchitecture=", 22)) {
-			/* this is ignored for now, until we can change MonoAssemblyName */
+			char *s = g_strstrip (value + 22);
+			if (!g_ascii_strcasecmp (s, "None"))
+				arch = PROCESSOR_ARCHITECTURE_NONE;
+			else if (!g_ascii_strcasecmp (s, "MSIL"))
+				arch = PROCESSOR_ARCHITECTURE_MSIL;
+			else if (!g_ascii_strcasecmp (s, "X86"))
+				arch = PROCESSOR_ARCHITECTURE_X86;
+			else if (!g_ascii_strcasecmp (s, "IA64"))
+				arch = PROCESSOR_ARCHITECTURE_IA64;
+			else if (!g_ascii_strcasecmp (s, "AMD64"))
+				arch = PROCESSOR_ARCHITECTURE_AMD64;
+			else
+				goto cleanup_and_fail;
 			tmp++;
 			continue;
 		}
@@ -1907,7 +1943,7 @@ mono_assembly_name_parse_full (const char *name, MonoAssemblyName *aname, gboole
 		goto cleanup_and_fail;
 	}
 
-	res = build_assembly_name (dllname, version, culture, token, key, flags,
+	res = build_assembly_name (dllname, version, culture, token, key, flags, arch,
 		aname, save_public_key);
 	g_strfreev (parts);
 	return res;
@@ -2059,7 +2095,10 @@ MonoAssembly*
 mono_assembly_load_with_partial_name (const char *name, MonoImageOpenStatus *status)
 {
 	MonoAssembly *res;
-	MonoAssemblyName *aname, base_name, maped_aname;
+	MonoAssemblyName *aname, base_name;
+#ifndef DISABLE_ASSEMBLY_REMAPPING
+	MonoAssemblyName maped_aname;
+#endif
 	gchar *fullname, *gacpath;
 	gchar **paths;
 
@@ -2069,12 +2108,14 @@ mono_assembly_load_with_partial_name (const char *name, MonoImageOpenStatus *sta
 	if (!mono_assembly_name_parse (name, aname))
 		return NULL;
 
+#ifndef DISABLE_ASSEMBLY_REMAPPING
 	/* 
 	 * If no specific version has been requested, make sure we load the
 	 * correct version for system assemblies.
 	 */ 
 	if ((aname->major | aname->minor | aname->build | aname->revision) == 0)
 		aname = mono_assembly_remap_version (aname, &maped_aname);
+#endif
 	
 	res = mono_assembly_loaded (aname);
 	if (res) {
@@ -2423,7 +2464,15 @@ mono_assembly_apply_binding (MonoAssemblyName *aname, MonoAssemblyName *dest_nam
 
 		mono_loader_lock ();
 		mono_domain_lock (domain);
-		info = get_per_domain_assembly_binding_info (domain, aname);
+		info2 = get_per_domain_assembly_binding_info (domain, aname);
+
+		if (info2) {
+			info = g_memdup (info2, sizeof (MonoAssemblyBindingInfo));
+			info->name = g_strdup (info2->name);
+			info->culture = g_strdup (info2->culture);
+			info->domain_id = domain->domain_id;
+		}
+
 		mono_domain_unlock (domain);
 		mono_loader_unlock ();
 	}
@@ -2546,6 +2595,7 @@ MonoAssembly*
 mono_assembly_load_corlib (const MonoRuntimeInfo *runtime, MonoImageOpenStatus *status)
 {
 	char *corlib_file;
+	MonoAssemblyName *aname;
 
 	if (corlib) {
 		/* g_print ("corlib already loaded\n"); */
@@ -2567,7 +2617,14 @@ mono_assembly_load_corlib (const MonoRuntimeInfo *runtime, MonoImageOpenStatus *
 			return corlib;
 	}
 #endif
-	
+
+	aname = mono_assembly_name_new ("mscorlib.dll");
+	corlib = invoke_assembly_preload_hook (aname, assemblies_path);
+	mono_assembly_name_free (aname);
+	g_free (aname);
+	if (corlib != NULL)
+		return corlib;
+
 	if (assemblies_path) {
 		corlib = load_in_path ("mscorlib.dll", (const char**)assemblies_path, status, FALSE);
 		if (corlib)
@@ -2598,12 +2655,17 @@ mono_assembly_load_full_nosearch (MonoAssemblyName *aname,
 {
 	MonoAssembly *result;
 	char *fullpath, *filename;
-	MonoAssemblyName maped_aname, maped_name_pp;
+#ifndef DISABLE_ASSEMBLY_REMAPPING
+	MonoAssemblyName maped_aname;
+#endif
+	MonoAssemblyName maped_name_pp;
 	int ext_index;
 	const char *ext;
 	int len;
 
+#ifndef DISABLE_ASSEMBLY_REMAPPING
 	aname = mono_assembly_remap_version (aname, &maped_aname);
+#endif
 	
 	/* Reflection only assemblies don't get assembly binding */
 	if (!refonly)
@@ -2714,9 +2776,11 @@ MonoAssembly*
 mono_assembly_loaded_full (MonoAssemblyName *aname, gboolean refonly)
 {
 	MonoAssembly *res;
+#ifndef DISABLE_ASSEMBLY_REMAPPING
 	MonoAssemblyName maped_aname;
 
 	aname = mono_assembly_remap_version (aname, &maped_aname);
+#endif
 
 	res = mono_assembly_invoke_search_hook_internal (aname, refonly, FALSE);
 
@@ -2860,6 +2924,27 @@ mono_assemblies_cleanup (void)
 	free_assembly_preload_hooks ();
 }
 
+/*LOCKING assumes loader lock is held*/
+void
+mono_assembly_cleanup_domain_bindings (guint32 domain_id)
+{
+	GSList **iter = &loaded_assembly_bindings;
+
+	while (*iter) {
+		GSList *l = *iter;
+		MonoAssemblyBindingInfo *info = l->data;
+
+		if (info->domain_id == domain_id) {
+			*iter = l->next;
+			mono_assembly_binding_info_free (info);
+			g_free (info);
+			g_slist_free_1 (l);
+		} else {
+			iter = &l->next;
+		}
+	}
+}
+
 /*
  * Holds the assembly of the application, for
  * System.Diagnostics.Process::MainModule
diff --git a/mono/metadata/boehm-gc.c b/mono/metadata/boehm-gc.c
index 504bdcb..050cb32 100644
--- a/mono/metadata/boehm-gc.c
+++ b/mono/metadata/boehm-gc.c
@@ -35,6 +35,9 @@
 #endif
 
 #define GC_NO_DESCRIPTOR ((gpointer)(0 | GC_DS_LENGTH))
+/*Boehm max heap cannot be smaller than 16MB*/
+#define MIN_BOEHM_MAX_HEAP_SIZE_IN_MB 16
+#define MIN_BOEHM_MAX_HEAP_SIZE (MIN_BOEHM_MAX_HEAP_SIZE_IN_MB << 20)
 
 static gboolean gc_initialized = FALSE;
 
@@ -47,6 +50,8 @@ mono_gc_warning (char *msg, GC_word arg)
 void
 mono_gc_base_init (void)
 {
+	char *env;
+
 	if (gc_initialized)
 		return;
 
@@ -100,6 +105,8 @@ mono_gc_base_init (void)
 
 		GC_stackbottom = (char*)ss.ss_sp;
 	}
+#elif defined(__native_client__)
+	/* Do nothing, GC_stackbottom is set correctly in libgc */
 #else
 	{
 		int dummy;
@@ -124,10 +131,51 @@ mono_gc_base_init (void)
 #ifdef HAVE_GC_GCJ_MALLOC
 	GC_init_gcj_malloc (5, NULL);
 #endif
+
+	if ((env = getenv ("MONO_GC_PARAMS"))) {
+		char **ptr, **opts = g_strsplit (env, ",", -1);
+		for (ptr = opts; *ptr; ++ptr) {
+			char *opt = *ptr;
+			if (g_str_has_prefix (opt, "max-heap-size=")) {
+				glong max_heap;
+
+				opt = strchr (opt, '=') + 1;
+				if (*opt && mono_gc_parse_environment_string_extract_number (opt, &max_heap)) {
+					if (max_heap < MIN_BOEHM_MAX_HEAP_SIZE) {
+						fprintf (stderr, "max-heap-size must be at least %dMb.\n", MIN_BOEHM_MAX_HEAP_SIZE_IN_MB);
+						exit (1);
+					}
+					GC_set_max_heap_size (max_heap);
+				} else {
+					fprintf (stderr, "max-heap-size must be an integer.\n");
+					exit (1);
+				}
+				continue;
+			} else {
+				fprintf (stderr, "MONO_GC_PARAMS must be a comma-delimited list of one or more of the following:\n");
+				fprintf (stderr, "  max-heap-size=N (where N is an integer, possibly with a k, m or a g suffix)\n");
+				exit (1);
+			}
+		}
+		g_strfreev (opts);
+	}
+
 	mono_gc_enable_events ();
 	gc_initialized = TRUE;
 }
 
+/**
+ * mono_gc_collect:
+ * @generation: GC generation identifier
+ *
+ * Perform a garbage collection for the given generation, higher numbers
+ * mean usually older objects. Collecting a high-numbered generation
+ * implies collecting also the lower-numbered generations.
+ * The maximum value for @generation can be retrieved with a call to
+ * mono_gc_max_generation(), so this function is usually called as:
+ *
+ * 	mono_gc_collect (mono_gc_max_generation ());
+ */
 void
 mono_gc_collect (int generation)
 {
@@ -145,35 +193,87 @@ mono_gc_collect (int generation)
 #endif
 }
 
+/**
+ * mono_gc_max_generation:
+ *
+ * Get the maximum generation number used by the current garbage
+ * collector. The value will be 0 for the Boehm collector, 1 or more
+ * for the generational collectors.
+ *
+ * Returns: the maximum generation number.
+ */
 int
 mono_gc_max_generation (void)
 {
 	return 0;
 }
 
+/**
+ * mono_gc_get_generation:
+ * @object: a managed object
+ *
+ * Get the garbage collector's generation that @object belongs to.
+ * Use this has a hint only.
+ *
+ * Returns: a garbage collector generation number
+ */
 int
 mono_gc_get_generation  (MonoObject *object)
 {
 	return 0;
 }
 
+/**
+ * mono_gc_collection_count:
+ * @generation: a GC generation number
+ *
+ * Get how many times a garbage collection has been performed
+ * for the given @generation number.
+ *
+ * Returns: the number of garbage collections
+ */
 int
 mono_gc_collection_count (int generation)
 {
 	return GC_gc_no;
 }
 
+/**
+ * mono_gc_add_memory_pressure:
+ * @value: amount of bytes
+ *
+ * Adjust the garbage collector's view of how many bytes of memory
+ * are indirectly referenced by managed objects (for example unmanaged
+ * memory holding image or other binary data).
+ * This is a hint only to the garbage collector algorithm.
+ * Note that negative amounts of @value will decrease the memory
+ * pressure.
+ */
 void
 mono_gc_add_memory_pressure (gint64 value)
 {
 }
 
+/**
+ * mono_gc_get_used_size:
+ *
+ * Get the approximate amount of memory used by managed objects.
+ *
+ * Returns: the amount of memory used in bytes
+ */
 int64_t
 mono_gc_get_used_size (void)
 {
 	return GC_get_heap_size () - GC_get_free_bytes ();
 }
 
+/**
+ * mono_gc_get_heap_size:
+ *
+ * Get the amount of memory used by the garbage collector.
+ *
+ * Returns: the size of the heap in bytes
+ */
 int64_t
 mono_gc_get_heap_size (void)
 {
@@ -256,6 +356,12 @@ mono_object_is_alive (MonoObject* o)
 #endif
 }
 
+int
+mono_gc_walk_heap (int flags, MonoGCReferences callback, void *data)
+{
+	return 1;
+}
+
 #ifdef USE_INCLUDED_LIBGC
 
 static gint64 gc_start_time;
@@ -390,6 +496,12 @@ mono_gc_make_descr_from_bitmap (gsize *bitmap, int numbits)
 }
 
 void*
+mono_gc_make_root_descr_all_refs (int numbits)
+{
+	return NULL;
+}
+
+void*
 mono_gc_alloc_fixed (size_t size, void *descr)
 {
 	/* To help track down typed allocation bugs */
@@ -993,6 +1105,20 @@ mono_gc_wbarrier_value_copy_bitmap (gpointer _dest, gpointer _src, int size, uns
 	g_assert_not_reached ();
 }
 
+
+guint8*
+mono_gc_get_card_table (int *shift_bits, gpointer *card_mask)
+{
+	g_assert_not_reached ();
+	return NULL;
+}
+
+void*
+mono_gc_get_nursery (int *shift_bits, size_t *size)
+{
+	return NULL;
+}
+
 /*
  * These will call the redefined versions in libgc.
  */
diff --git a/mono/metadata/class-internals.h b/mono/metadata/class-internals.h
index c165260..710891c 100644
--- a/mono/metadata/class-internals.h
+++ b/mono/metadata/class-internals.h
@@ -199,7 +199,8 @@ enum {
 	MONO_EXCEPTION_FIELD_ACCESS = 10,
 	MONO_EXCEPTION_GENERIC_SHARING_FAILED = 11,
 	MONO_EXCEPTION_BAD_IMAGE = 12,
-	MONO_EXCEPTION_OBJECT_SUPPLIED = 13 /*The exception object is already created.*/
+	MONO_EXCEPTION_OBJECT_SUPPLIED = 13, /*The exception object is already created.*/
+	MONO_EXCEPTION_OUT_OF_MEMORY = 14
 	/* add other exception type */
 };
 
@@ -226,7 +227,8 @@ enum {
 	MONO_RGCTX_INFO_METHOD_RGCTX,
 	MONO_RGCTX_INFO_METHOD_CONTEXT,
 	MONO_RGCTX_INFO_REMOTING_INVOKE_WITH_CHECK,
-	MONO_RGCTX_INFO_METHOD_DELEGATE_CODE
+	MONO_RGCTX_INFO_METHOD_DELEGATE_CODE,
+	MONO_RGCTX_INFO_CAST_CACHE
 };
 
 typedef struct _MonoRuntimeGenericContextOtherInfoTemplate {
@@ -530,6 +532,13 @@ struct _MonoGenericClass {
 	guint is_dynamic  : 1;		/* We're a MonoDynamicGenericClass */
 	guint is_tb_open  : 1;		/* This is the fully open instantiation for a type_builder. Quite ugly, but it's temporary.*/
 	MonoClass *cached_class;	/* if present, the MonoClass corresponding to the instantiation.  */
+
+	/* 
+	 * The image set which owns this generic class. Memory owned by the generic class
+	 * including cached_class should be allocated from the mempool of the image set,
+	 * so it is easy to free.
+	 */
+	MonoImageSet *owner;
 };
 
 /*
@@ -865,7 +874,7 @@ void
 mono_class_setup_interface_offsets (MonoClass *klass) MONO_INTERNAL;
 
 void
-mono_class_setup_vtable_general (MonoClass *klass, MonoMethod **overrides, int onum) MONO_INTERNAL;
+mono_class_setup_vtable_general (MonoClass *klass, MonoMethod **overrides, int onum, GList *in_setup) MONO_INTERNAL;
 
 void
 mono_class_setup_vtable (MonoClass *klass) MONO_INTERNAL;
@@ -916,6 +925,9 @@ mono_class_needs_cctor_run (MonoClass *klass, MonoMethod *caller) MONO_INTERNAL;
 gboolean
 mono_class_field_is_special_static (MonoClassField *field) MONO_INTERNAL;
 
+guint32
+mono_class_field_get_special_static_type (MonoClassField *field) MONO_INTERNAL;
+
 gboolean
 mono_class_has_special_static_fields (MonoClass *klass) MONO_INTERNAL;
 
@@ -1281,4 +1293,8 @@ mono_field_get_type_checked (MonoClassField *field, MonoError *error) MONO_INTER
 
 MonoClassField*
 mono_class_get_fields_lazy (MonoClass* klass, gpointer *iter) MONO_INTERNAL;
+
+gboolean
+mono_class_check_vtable_constraints (MonoClass *class, GList *in_setup) MONO_INTERNAL;
+
 #endif /* __MONO_METADATA_CLASS_INTERBALS_H__ */
diff --git a/mono/metadata/class.c b/mono/metadata/class.c
index 0b01c0f..999bcb0 100644
--- a/mono/metadata/class.c
+++ b/mono/metadata/class.c
@@ -65,6 +65,7 @@ static char* mono_assembly_name_from_token (MonoImage *image, guint32 type_token
 static gboolean mono_class_is_variant_compatible (MonoClass *klass, MonoClass *oklass);
 static void mono_field_resolve_type (MonoClassField *field, MonoError *error);
 static guint32 mono_field_resolve_flags (MonoClassField *field);
+static void mono_class_setup_vtable_full (MonoClass *class, GList *in_setup);
 
 
 void (*mono_debugger_class_init_func) (MonoClass *klass) = NULL;
@@ -83,13 +84,19 @@ void (*mono_debugger_class_loaded_methods_func) (MonoClass *klass) = NULL;
 MonoClass *
 mono_class_from_typeref (MonoImage *image, guint32 type_token)
 {
+	MonoError error;
 	guint32 cols [MONO_TYPEREF_SIZE];
 	MonoTableInfo  *t = &image->tables [MONO_TABLE_TYPEREF];
 	guint32 idx;
 	const char *name, *nspace;
 	MonoClass *res;
 	MonoImage *module;
-	
+
+	if (!mono_verifier_verify_typeref_row (image, (type_token & 0xffffff) - 1, &error)) {
+		mono_trace_warning (MONO_TRACE_TYPE, "Failed to resolve typeref from %s due to '%s'", image->name, mono_error_get_message (&error));
+		return NULL;
+	}
+
 	mono_metadata_decode_row (t, (type_token&0xffffff)-1, cols, MONO_TYPEREF_SIZE);
 
 	name = mono_metadata_string_heap (image, cols [MONO_TYPEREF_NAME]);
@@ -231,14 +238,11 @@ static void
 _mono_type_get_assembly_name (MonoClass *klass, GString *str)
 {
 	MonoAssembly *ta = klass->image->assembly;
+	char *name;
 
-	g_string_append_printf (
-		str, ", %s, Version=%d.%d.%d.%d, Culture=%s, PublicKeyToken=%s%s",
-		ta->aname.name,
-		ta->aname.major, ta->aname.minor, ta->aname.build, ta->aname.revision,
-		ta->aname.culture && *ta->aname.culture? ta->aname.culture: "neutral",
-		ta->aname.public_key_token [0] ? (char *)ta->aname.public_key_token : "null",
-		(ta->aname.flags & ASSEMBLYREF_RETARGETABLE_FLAG) ? ", Retargetable=Yes" : "");
+	name = mono_stringify_assembly_name (&ta->aname);
+	g_string_append_printf (str, ", %s", name);
+	g_free (name);
 }
 
 static inline void
@@ -477,9 +481,13 @@ mono_type_get_underlying_type (MonoType *type)
  * mono_class_is_open_constructed_type:
  * @type: a type
  *
- * Returns TRUE if type represents a generics open constructed type
- * (not all the type parameters required for the instantiation have
- * been provided).
+ * Returns TRUE if type represents a generics open constructed type.
+ * IOW, not all type parameters required for the instantiation have
+ * been provided or it's a generic type definition.
+ *
+ * An open constructed type means it's a non realizable type. Not to
+ * be mixed up with an abstract type - we can't cast or dispatch to
+ * an open type, for example.
  */
 gboolean
 mono_class_is_open_constructed_type (MonoType *t)
@@ -496,6 +504,9 @@ mono_class_is_open_constructed_type (MonoType *t)
 		return mono_class_is_open_constructed_type (t->data.type);
 	case MONO_TYPE_GENERICINST:
 		return t->data.generic_class->context.class_inst->is_open;
+	case MONO_TYPE_CLASS:
+	case MONO_TYPE_VALUETYPE:
+		return t->data.klass->generic_container != NULL;
 	default:
 		return FALSE;
 	}
@@ -1206,12 +1217,7 @@ static gpointer
 mono_class_alloc (MonoClass *class, int size)
 {
 	if (class->generic_class)
-		/*
-		 * This should be freed in free_generic_class () in metadata.c.
-		 * FIXME: It would be better to allocate this from the image set mempool, by
-		 * adding an image_set field to MonoGenericClass.
-		 */
-	   return g_malloc (size);
+		return mono_image_set_alloc (class->generic_class->owner, size);
 	else
 		return mono_image_alloc (class->image, size);
 }
@@ -1534,13 +1540,6 @@ mono_class_has_references (MonoClass *klass)
 	}
 }
 
-/* useful until we keep track of gc-references in corlib etc. */
-#ifdef HAVE_SGEN_GC
-#define IS_GC_REFERENCE(t) FALSE
-#else
-#define IS_GC_REFERENCE(t) ((t)->type == MONO_TYPE_U && class->image == mono_defaults.corlib)
-#endif
-
 /*
  * mono_type_get_basic_type_from_generic:
  * @type: a type
@@ -2470,6 +2469,10 @@ collect_implemented_interfaces_aux (MonoClass *klass, GPtrArray **res, MonoError
 			*res = g_ptr_array_new ();
 		g_ptr_array_add (*res, ic);
 		mono_class_init (ic);
+		if (ic->exception_type) {
+			mono_error_set_type_load_class (error, ic, "Error Loading class");
+			return;
+		}
 
 		collect_implemented_interfaces_aux (ic, res, error);
 		if (!mono_error_ok (error))
@@ -3306,6 +3309,58 @@ mono_class_setup_interface_offsets (MonoClass *class)
 
 	mono_loader_unlock ();
 }
+
+/*Checks if @klass has @parent as one of it's parents type gtd
+ *
+ * For example:
+ * 	Foo<T>
+ *	Bar<T> : Foo<Bar<Bar<T>>>
+ *
+ */
+static gboolean
+mono_class_has_gtd_parent (MonoClass *klass, MonoClass *parent)
+{
+	klass = mono_class_get_generic_type_definition (klass);
+	parent = mono_class_get_generic_type_definition (parent);
+	mono_class_setup_supertypes (klass);
+	mono_class_setup_supertypes (parent);
+
+	return klass->idepth >= parent->idepth &&
+		mono_class_get_generic_type_definition (klass->supertypes [parent->idepth - 1]) == parent;
+}
+
+gboolean
+mono_class_check_vtable_constraints (MonoClass *class, GList *in_setup)
+{
+	MonoGenericInst *ginst;
+	int i;
+	if (!class->generic_class) {
+		mono_class_setup_vtable_full (class, in_setup);
+		return class->exception_type == 0;
+	}
+
+	mono_class_setup_vtable_full (mono_class_get_generic_type_definition (class), in_setup);
+	if (class->generic_class->container_class->exception_type) {
+		mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup ("Failed to load generic definition vtable"));
+		return FALSE;
+	}
+
+	ginst = class->generic_class->context.class_inst;
+	for (i = 0; i < ginst->type_argc; ++i) {
+		MonoClass *arg;
+		if (ginst->type_argv [i]->type != MONO_TYPE_GENERICINST)
+			continue;
+		arg = mono_class_from_mono_type (ginst->type_argv [i]);
+		/*Those 2 will be checked by mono_class_setup_vtable itself*/
+		if (mono_class_has_gtd_parent (class, arg) || mono_class_has_gtd_parent (arg, class))
+			continue;
+		if (!mono_class_check_vtable_constraints (arg, in_setup)) {
+			mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup_printf ("Failed to load generic parameter %d", i));
+			return FALSE;
+		}
+	}
+	return TRUE;
+}
  
 /*
  * mono_class_setup_vtable:
@@ -3322,6 +3377,12 @@ mono_class_setup_interface_offsets (MonoClass *class)
 void
 mono_class_setup_vtable (MonoClass *class)
 {
+	mono_class_setup_vtable_full (class, NULL);
+}
+
+static void
+mono_class_setup_vtable_full (MonoClass *class, GList *in_setup)
+{
 	MonoMethod **overrides;
 	MonoGenericContext *context;
 	guint32 type_token;
@@ -3344,6 +3405,9 @@ mono_class_setup_vtable (MonoClass *class)
 	if (class->exception_type)
 		return;
 
+	if (g_list_find (in_setup, class))
+		return;
+
 	mono_loader_lock ();
 
 	if (class->vtable) {
@@ -3352,8 +3416,15 @@ mono_class_setup_vtable (MonoClass *class)
 	}
 
 	mono_stats.generic_vtable_count ++;
+	in_setup = g_list_prepend (in_setup, class);
 
 	if (class->generic_class) {
+		if (!mono_class_check_vtable_constraints (class, in_setup)) {
+			mono_loader_unlock ();
+			g_list_remove (in_setup, class);
+			return;
+		}
+
 		context = mono_class_get_context (class);
 		type_token = class->generic_class->container_class->type_token;
 	} else {
@@ -3374,11 +3445,14 @@ mono_class_setup_vtable (MonoClass *class)
 	}
 
 	if (ok)
-		mono_class_setup_vtable_general (class, overrides, onum);
+		mono_class_setup_vtable_general (class, overrides, onum, in_setup);
+	else
+		mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup ("Could not load list of method overrides"));
 		
 	g_free (overrides);
 
 	mono_loader_unlock ();
+	g_list_remove (in_setup, class);
 
 	return;
 }
@@ -3510,7 +3584,14 @@ check_interface_method_override (MonoClass *class, MonoMethod *im, MonoMethod *c
 			TRACE_INTERFACE_VTABLE (printf ("[RANK CHECK FAILED]"));
 			return FALSE;
 		}
-		if (! mono_metadata_signature_equal (mono_method_signature (cm), mono_method_signature (im))) {
+		cmsig = mono_method_signature (cm);
+		imsig = mono_method_signature (im);
+		if (!cmsig || !imsig) {
+			mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup ("Could not resolve the signature of a virtual method"));
+			return FALSE;
+		}
+
+		if (! mono_metadata_signature_equal (cmsig, imsig)) {
 			TRACE_INTERFACE_VTABLE (printf ("[(INJECTED) SIGNATURE CHECK FAILED  "));
 			TRACE_INTERFACE_VTABLE (print_method_signatures (im, cm));
 			TRACE_INTERFACE_VTABLE (printf ("]"));
@@ -3746,11 +3827,18 @@ verify_class_overrides (MonoClass *class, MonoMethod **overrides, int onum)
 	}
 	return TRUE;
 }
+
+static gboolean
+mono_class_need_stelemref_method (MonoClass *class)
+{
+	return class->rank == 1 && MONO_TYPE_IS_REFERENCE (&class->element_class->byval_arg);
+}
+
 /*
  * LOCKING: this is supposed to be called with the loader lock held.
  */
 void
-mono_class_setup_vtable_general (MonoClass *class, MonoMethod **overrides, int onum)
+mono_class_setup_vtable_general (MonoClass *class, MonoMethod **overrides, int onum, GList *in_setup)
 {
 	MonoError error;
 	MonoClass *k, *ic;
@@ -3765,6 +3853,7 @@ mono_class_setup_vtable_general (MonoClass *class, MonoMethod **overrides, int o
 	int first_non_interface_slot;
 #endif
 	GSList *virt_methods = NULL, *l;
+	int stelemref_slot = 0;
 
 	if (class->vtable)
 		return;
@@ -3790,7 +3879,7 @@ mono_class_setup_vtable_general (MonoClass *class, MonoMethod **overrides, int o
 	
 	if (class->parent) {
 		mono_class_init (class->parent);
-		mono_class_setup_vtable (class->parent);
+		mono_class_setup_vtable_full (class->parent, in_setup);
 
 		if (class->parent->exception_type) {
 			char *name = mono_type_get_full_name (class->parent);
@@ -3805,6 +3894,13 @@ mono_class_setup_vtable_general (MonoClass *class, MonoMethod **overrides, int o
 
 	max_vtsize += class->method.count;
 
+	/*Array have a slot for stelemref*/
+	if (mono_class_need_stelemref_method (class)) {
+		stelemref_slot = cur_slot;
+		++max_vtsize;
+		++cur_slot;
+	}
+
 	vtable = alloca (sizeof (gpointer) * max_vtsize);
 	memset (vtable, 0, sizeof (gpointer) * max_vtsize);
 
@@ -3823,7 +3919,7 @@ mono_class_setup_vtable_general (MonoClass *class, MonoMethod **overrides, int o
 		MonoClass *gklass = class->generic_class->container_class;
 		MonoMethod **tmp;
 
-		mono_class_setup_vtable (gklass);
+		mono_class_setup_vtable_full (gklass, in_setup);
 		if (gklass->exception_type != MONO_EXCEPTION_NONE) {
 			mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, NULL);
 			return;
@@ -3891,6 +3987,17 @@ mono_class_setup_vtable_general (MonoClass *class, MonoMethod **overrides, int o
 		}
 	}
 
+	/*Array have a slot for stelemref*/
+	if (mono_class_need_stelemref_method (class)) {
+		MonoMethod *method = mono_marshal_get_virtual_stelemref (class);
+		if (!method->slot)
+			method->slot = stelemref_slot;
+		else
+			g_assert (method->slot == stelemref_slot);
+
+		vtable [stelemref_slot] = method;
+	}
+
 	TRACE_INTERFACE_VTABLE (print_vtable_full (class, vtable, cur_slot, first_non_interface_slot, "AFTER INHERITING PARENT VTABLE", TRUE));
 	/* override interface methods */
 	for (i = 0; i < onum; i++) {
@@ -4494,24 +4601,23 @@ mono_class_init (MonoClass *class)
 	g_assert (class);
 
 	/* Double-checking locking pattern */
-	if (class->inited)
+	if (class->inited || class->exception_type)
 		return class->exception_type == MONO_EXCEPTION_NONE;
 
-	/*g_print ("Init class %s\n", class->name);*/
+	/*g_print ("Init class %s\n", mono_type_get_full_name (class));*/
 
 	/* We do everything inside the lock to prevent races */
 	mono_loader_lock ();
 
-	if (class->inited) {
+	if (class->inited || class->exception_type) {
 		mono_loader_unlock ();
 		/* Somebody might have gotten in before us */
 		return class->exception_type == MONO_EXCEPTION_NONE;
 	}
 
 	if (class->init_pending) {
-		mono_loader_unlock ();
-		/* this indicates a cyclic dependency */
-		g_error ("pending init %s.%s\n", class->name_space, class->name);
+		mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup ("Recursive type definition detected"));
+		goto leave;
 	}
 
 	class->init_pending = 1;
@@ -4615,14 +4721,19 @@ mono_class_init (MonoClass *class)
 		class->ghcimpl = cached_info.ghcimpl;
 		class->has_cctor = cached_info.has_cctor;
 	} else if (class->rank == 1 && class->byval_arg.type == MONO_TYPE_SZARRAY) {
-		static int szarray_vtable_size = 0;
+		/* SZARRAY can have 2 vtable layouts, with and without the stelemref method.
+		 * The first slot if for array with.
+		 */
+		static int szarray_vtable_size[2] = { 0 };
+
+		int slot = MONO_TYPE_IS_REFERENCE (&class->element_class->byval_arg) ? 0 : 1;
 
 		/* SZARRAY case */
-		if (!szarray_vtable_size) {
+		if (!szarray_vtable_size [slot]) {
 			mono_class_setup_vtable (class);
-			szarray_vtable_size = class->vtable_size;
+			szarray_vtable_size [slot] = class->vtable_size;
 		} else {
-			class->vtable_size = szarray_vtable_size;
+			class->vtable_size = szarray_vtable_size[slot];
 		}
 	} else if (class->generic_class && !MONO_CLASS_IS_INTERFACE (class)) {
 		MonoClass *gklass = class->generic_class->container_class;
@@ -4720,6 +4831,7 @@ mono_class_init (MonoClass *class)
 	}
 
 	if (class->parent) {
+		int first_iface_slot;
 		/* This will compute class->parent->vtable_size for some classes */
 		mono_class_init (class->parent);
 		if (class->parent->exception_type) {
@@ -4738,7 +4850,10 @@ mono_class_init (MonoClass *class)
 			if (mono_loader_get_last_error ())
 				goto leave;
 		}
-		setup_interface_offsets (class, class->parent->vtable_size);
+		first_iface_slot = class->parent->vtable_size;
+		if (mono_class_need_stelemref_method (class))
+			++first_iface_slot;
+		setup_interface_offsets (class, first_iface_slot);
 	} else {
 		setup_interface_offsets (class, 0);
 	}
@@ -4753,6 +4868,9 @@ mono_class_init (MonoClass *class)
 		mono_loader_clear_error ();
 	}
 
+	if (class->generic_class && !mono_verifier_class_is_valid_generic_instantiation (class))
+		mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup ("Invalid generic instantiation"));
+
 	goto leave;
 
  leave:
@@ -5082,7 +5200,7 @@ mono_class_create_from_typedef (MonoImage *image, guint32 type_token)
 
 	if ((class = mono_internal_hash_table_lookup (&image->class_cache, GUINT_TO_POINTER (type_token)))) {
 		mono_loader_unlock ();
-		return class->exception_type ? NULL : class;
+		return class;
 	}
 
 	mono_metadata_decode_row (tt, tidx - 1, cols, MONO_TYPEDEF_SIZE);
@@ -5131,17 +5249,18 @@ mono_class_create_from_typedef (MonoImage *image, guint32 type_token)
 
 		if (parent == NULL){
 			mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup ("Could not load parent type"));
-			mono_loader_unlock ();
-			mono_profiler_class_loaded (class, MONO_PROFILE_FAILED);
-			return NULL;
+			mono_loader_clear_error ();
+			goto parent_failure;
 		}
 
 		for (tmp = parent; tmp; tmp = tmp->parent) {
 			if (tmp == class) {
 				mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup ("Cycle found while resolving parent"));
-				mono_loader_unlock ();
-				mono_profiler_class_loaded (class, MONO_PROFILE_FAILED);
-				return NULL;
+				goto parent_failure;
+			}
+			if (class->generic_container && tmp->generic_class && tmp->generic_class->container_class == class) {
+				mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup ("Parent extends generic instance of this type"));
+				goto parent_failure;
 			}
 		}
 	}
@@ -5226,6 +5345,8 @@ mono_class_create_from_typedef (MonoImage *image, guint32 type_token)
 	if (class->enumtype) {
 		MonoType *enum_basetype = mono_class_find_enum_basetype (class);
 		if (!enum_basetype) {
+			/*set it to a default value as the whole runtime can't handle this to be null*/
+			class->cast_class = class->element_class = mono_defaults.int32_class;
 			mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, NULL);
 			mono_loader_unlock ();
 			mono_profiler_class_loaded (class, MONO_PROFILE_FAILED);
@@ -5259,6 +5380,13 @@ mono_class_create_from_typedef (MonoImage *image, guint32 type_token)
 	mono_profiler_class_loaded (class, MONO_PROFILE_OK);
 
 	return class;
+
+parent_failure:
+	mono_class_setup_mono_type (class);
+	mono_loader_unlock ();
+	mono_profiler_class_loaded (class, MONO_PROFILE_FAILED);
+	return NULL;
+
 }
 
 /** is klass Nullable<T>? */
@@ -5293,19 +5421,14 @@ mono_generic_class_get_class (MonoGenericClass *gclass)
 		return gclass->cached_class;
 	}
 
-	gclass->cached_class = g_malloc0 (sizeof (MonoClass));
+	gclass->cached_class = mono_image_set_alloc0 (gclass->owner, sizeof (MonoClass));
 	klass = gclass->cached_class;
 
 	gklass = gclass->container_class;
 
 	if (gklass->nested_in) {
-		/* 
-		 * FIXME: the nested type context should include everything the
-		 * nesting context should have, but it may also have additional
-		 * generic parameters...
-		 */
-		klass->nested_in = mono_class_inflate_generic_class (gklass->nested_in,
-															 mono_generic_class_get_context (gclass));
+		/* The nested_in type should not be inflated since it's possible to produce a nested type with less generic arguments*/
+		klass->nested_in = gklass->nested_in;
 	}
 
 	klass->name = gklass->name;
@@ -5338,7 +5461,14 @@ mono_generic_class_get_class (MonoGenericClass *gclass)
 	 */
 
 	if (gklass->parent) {
-		klass->parent = mono_class_inflate_generic_class (gklass->parent, mono_generic_class_get_context (gclass));
+		MonoError error;
+		klass->parent = mono_class_inflate_generic_class_checked (gklass->parent, mono_generic_class_get_context (gclass), &error);
+		if (!mono_error_ok (&error)) {
+			/*Set parent to something safe as the runtime doesn't handle well this kind of failure.*/
+			klass->parent = mono_defaults.object_class;
+			mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, NULL);
+			mono_error_cleanup (&error);
+		}
 	}
 
 	if (klass->parent)
@@ -5457,8 +5587,10 @@ make_generic_param_class (MonoGenericParam *param, MonoImage *image, gboolean is
 
 	if (count - pos > 0) {
 		mono_class_setup_vtable (klass->parent);
-		g_assert (!klass->parent->exception_type);
-		setup_interface_offsets (klass, klass->parent->vtable_size);
+		if (klass->parent->exception_type)
+			mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, g_strdup ("Failed to setup parent interfaces"));
+		else
+			setup_interface_offsets (klass, klass->parent->vtable_size);
 	}
 
 	return klass;
@@ -6398,12 +6530,20 @@ mono_class_name_from_token (MonoImage *image, guint32 type_token)
 	}
 
 	case MONO_TOKEN_TYPE_REF: {
+		MonoError error;
 		guint32 cols [MONO_TYPEREF_SIZE];
 		MonoTableInfo  *t = &image->tables [MONO_TABLE_TYPEREF];
 		guint tidx = mono_metadata_token_index (type_token);
 
 		if (tidx > t->rows)
 			return g_strdup_printf ("Invalid type token 0x%08x", type_token);
+
+		if (!mono_verifier_verify_typeref_row (image, tidx - 1, &error)) {
+			char *msg = g_strdup_printf ("Invalid type token 0x%08x due to '%s'", type_token, mono_error_get_message (&error));
+			mono_error_cleanup (&error);
+			return msg;
+		}
+
 		mono_metadata_decode_row (t, tidx-1, cols, MONO_TYPEREF_SIZE);
 		name = mono_metadata_string_heap (image, cols [MONO_TYPEREF_NAME]);
 		nspace = mono_metadata_string_heap (image, cols [MONO_TYPEREF_NAMESPACE]);
@@ -6434,6 +6574,7 @@ mono_assembly_name_from_token (MonoImage *image, guint32 type_token)
 			return g_strdup (image->assembly_name);
 		return g_strdup_printf ("%s", image->name ? image->name : "[Could not resolve assembly name");
 	case MONO_TOKEN_TYPE_REF: {
+		MonoError error;
 		MonoAssemblyName aname;
 		guint32 cols [MONO_TYPEREF_SIZE];
 		MonoTableInfo  *t = &image->tables [MONO_TABLE_TYPEREF];
@@ -6442,6 +6583,11 @@ mono_assembly_name_from_token (MonoImage *image, guint32 type_token)
 		if (idx > t->rows)
 			return g_strdup_printf ("Invalid type token 0x%08x", type_token);
 	
+		if (!mono_verifier_verify_typeref_row (image, idx - 1, &error)) {
+			char *msg = g_strdup_printf ("Invalid type token 0x%08x due to '%s'", type_token, mono_error_get_message (&error));
+			mono_error_cleanup (&error);
+			return msg;
+		}
 		mono_metadata_decode_row (t, idx-1, cols, MONO_TYPEREF_SIZE);
 
 		idx = cols [MONO_TYPEREF_SCOPE] >> MONO_RESOLTION_SCOPE_BITS;
@@ -7070,12 +7216,16 @@ mono_class_is_variant_compatible (MonoClass *klass, MonoClass *oklass)
 gboolean
 mono_class_is_assignable_from (MonoClass *klass, MonoClass *oklass)
 {
+	/*FIXME this will cause a lot of irrelevant stuff to be loaded.*/
 	if (!klass->inited)
 		mono_class_init (klass);
 
 	if (!oklass->inited)
 		mono_class_init (oklass);
 
+	if (klass->exception_type || oklass->exception_type)
+		return FALSE;
+
 	if ((klass->byval_arg.type == MONO_TYPE_VAR) || (klass->byval_arg.type == MONO_TYPE_MVAR))
 		return klass == oklass;
 
@@ -7218,7 +7368,12 @@ mono_class_implement_interface_slow (MonoClass *target, MonoClass *candidate)
 			if (tb && tb->interfaces) {
 				for (j = mono_array_length (tb->interfaces) - 1; j >= 0; --j) {
 					MonoReflectionType *iface = mono_array_get (tb->interfaces, MonoReflectionType*, j);
-					MonoClass *iface_class = mono_class_from_mono_type (iface->type);
+					MonoClass *iface_class;
+
+					/* we can't realize the type here since it can do pretty much anything. */
+					if (!iface->type)
+						continue;
+					iface_class = mono_class_from_mono_type (iface->type);
 					if (iface_class == target)
 						return TRUE;
 					if (is_variant && mono_class_is_variant_compatible_slow (target, iface_class))
@@ -7900,7 +8055,7 @@ mono_class_get_virtual_methods (MonoClass* klass, gpointer *iter)
 			method++;
 		}
 		while (method < &klass->methods [klass->method.count]) {
-			if (((*method)->flags & METHOD_ATTRIBUTE_VIRTUAL))
+			if (*method && ((*method)->flags & METHOD_ATTRIBUTE_VIRTUAL))
 				break;
 			method ++;
 		}
@@ -8429,13 +8584,19 @@ find_method_in_metadata (MonoClass *klass, const char *name, int param_count, in
 	for (i = 0; i < klass->method.count; ++i) {
 		guint32 cols [MONO_METHOD_SIZE];
 		MonoMethod *method;
+		MonoMethodSignature *sig;
 
 		/* class->method.first points into the methodptr table */
 		mono_metadata_decode_table_row (klass->image, MONO_TABLE_METHOD, klass->method.first + i, cols, MONO_METHOD_SIZE);
 
 		if (!strcmp (mono_metadata_string_heap (klass->image, cols [MONO_METHOD_NAME]), name)) {
 			method = mono_get_method (klass->image, MONO_TOKEN_METHOD_DEF | (klass->method.first + i + 1), klass);
-			if ((param_count == -1) || mono_method_signature (method)->param_count == param_count) {
+			if (param_count == -1) {
+				res = method;
+				break;
+			}
+			sig = mono_method_signature (method);
+			if (sig && sig->param_count == param_count) {
 				res = method;
 				break;
 			}
@@ -8912,11 +9073,11 @@ gboolean
 mono_method_can_access_field (MonoMethod *method, MonoClassField *field)
 {
 	/* FIXME: check all overlapping fields */
-	int can = can_access_member (method->klass, field->parent, NULL, field->type->attrs & FIELD_ATTRIBUTE_FIELD_ACCESS_MASK);
+	int can = can_access_member (method->klass, field->parent, NULL, mono_field_get_type (field)->attrs & FIELD_ATTRIBUTE_FIELD_ACCESS_MASK);
 	if (!can) {
 		MonoClass *nested = method->klass->nested_in;
 		while (nested) {
-			can = can_access_member (nested, field->parent, NULL, field->type->attrs & FIELD_ATTRIBUTE_FIELD_ACCESS_MASK);
+			can = can_access_member (nested, field->parent, NULL, mono_field_get_type (field)->attrs & FIELD_ATTRIBUTE_FIELD_ACCESS_MASK);
 			if (can)
 				return TRUE;
 			nested = nested->nested_in;
@@ -9201,7 +9362,6 @@ mono_class_setup_interfaces (MonoClass *klass, MonoError *error)
 			klass->interfaces [i] = mono_class_inflate_generic_class_checked (gklass->interfaces [i], mono_generic_class_get_context (klass->generic_class), error);
 			if (!mono_error_ok (error)) {
 				mono_class_set_failure (klass, MONO_EXCEPTION_TYPE_LOAD, g_strdup ("Could not setup the interfaces"));
-				g_free (klass->interfaces);
 				klass->interfaces = NULL;
 				return;
 			}
diff --git a/mono/metadata/cominterop.c b/mono/metadata/cominterop.c
index da51dc7..c34e986 100644
--- a/mono/metadata/cominterop.c
+++ b/mono/metadata/cominterop.c
@@ -801,7 +801,7 @@ cominterop_get_native_wrapper_adjusted (MonoMethod *method)
 				mspecs[mspec_index] = g_new0 (MonoMarshalSpec, 1);
 				mspecs[mspec_index]->native = MONO_NATIVE_INTERFACE;
 			}
-			else if (sig_native->params[i]->type == MONO_NATIVE_BOOLEAN) {
+			else if (sig_native->params[i]->type == MONO_TYPE_BOOLEAN) {
 				mspecs[mspec_index] = g_new0 (MonoMarshalSpec, 1);
 				mspecs[mspec_index]->native = MONO_NATIVE_VARIANTBOOL;
 			}
@@ -824,7 +824,7 @@ cominterop_get_native_wrapper_adjusted (MonoMethod *method)
 				mspecs[0] = g_new0 (MonoMarshalSpec, 1);
 				mspecs[0]->native = MONO_NATIVE_INTERFACE;
 			}
-			else if (sig->ret->type == MONO_NATIVE_BOOLEAN) {
+			else if (sig->ret->type == MONO_TYPE_BOOLEAN) {
 				mspecs[0] = g_new0 (MonoMarshalSpec, 1);
 				mspecs[0]->native = MONO_NATIVE_VARIANTBOOL;
 			}
@@ -1976,7 +1976,7 @@ cominterop_get_ccw (MonoObject* object, MonoClass* itf)
 						mspecs[mspec_index] = g_new0 (MonoMarshalSpec, 1);
 						mspecs[mspec_index]->native = MONO_NATIVE_INTERFACE;
 					}
-					else if (sig_adjusted->params[param_index]->type == MONO_NATIVE_BOOLEAN) {
+					else if (sig_adjusted->params[param_index]->type == MONO_TYPE_BOOLEAN) {
 						mspecs[mspec_index] = g_new0 (MonoMarshalSpec, 1);
 						mspecs[mspec_index]->native = MONO_NATIVE_VARIANTBOOL;
 					}
@@ -2007,7 +2007,7 @@ cominterop_get_ccw (MonoObject* object, MonoClass* itf)
 						mspecs[0] = g_new0 (MonoMarshalSpec, 1);
 						mspecs[0]->native = MONO_NATIVE_INTERFACE;
 					}
-					else if (sig_adjusted->params[sig_adjusted->param_count-1]->type == MONO_NATIVE_BOOLEAN) {
+					else if (sig_adjusted->params[sig_adjusted->param_count-1]->type == MONO_TYPE_BOOLEAN) {
 						mspecs[0] = g_new0 (MonoMarshalSpec, 1);
 						mspecs[0]->native = MONO_NATIVE_VARIANTBOOL;
 					}
diff --git a/mono/metadata/console-io.h b/mono/metadata/console-io.h
index 46bfe44..a7ef768 100644
--- a/mono/metadata/console-io.h
+++ b/mono/metadata/console-io.h
@@ -19,6 +19,7 @@
 G_BEGIN_DECLS
 
 void mono_console_init (void) MONO_INTERNAL;
+void mono_console_handle_async_ops (void) MONO_INTERNAL;
 MonoBoolean ves_icall_System_ConsoleDriver_Isatty (HANDLE handle) MONO_INTERNAL;
 gint32 ves_icall_System_ConsoleDriver_InternalKeyAvailable (gint32 timeout) MONO_INTERNAL;
 MonoBoolean ves_icall_System_ConsoleDriver_SetEcho (MonoBoolean echo) MONO_INTERNAL;
diff --git a/mono/metadata/console-null.c b/mono/metadata/console-null.c
index a50b2a3..a2e1486 100644
--- a/mono/metadata/console-null.c
+++ b/mono/metadata/console-null.c
@@ -11,6 +11,7 @@
 #include <mono/metadata/object-internals.h>
 #include <mono/metadata/class-internals.h>
 #include <mono/metadata/domain-internals.h>
+#include <mono/metadata/gc-internal.h>
 
 #include <mono/metadata/console-io.h>
 #include <mono/metadata/exception.h>
@@ -20,6 +21,11 @@ mono_console_init (void)
 {
 }
 
+void
+mono_console_handle_async_ops (void)
+{
+}
+
 MonoBoolean
 ves_icall_System_ConsoleDriver_Isatty (HANDLE handle)
 {
diff --git a/mono/metadata/console-unix.c b/mono/metadata/console-unix.c
index 773833d..aae513f 100644
--- a/mono/metadata/console-unix.c
+++ b/mono/metadata/console-unix.c
@@ -28,6 +28,7 @@
 #include <mono/metadata/object-internals.h>
 #include <mono/metadata/class-internals.h>
 #include <mono/metadata/domain-internals.h>
+#include <mono/metadata/gc-internal.h>
 #include <mono/metadata/metadata.h>
 #include <mono/metadata/threadpool.h>
 
@@ -200,13 +201,15 @@ terminal_get_dimensions (void)
 static void
 tty_teardown (void)
 {
+	int unused;
+
 	MONO_ARCH_SAVE_REGS;
 
 	if (!setup_finished)
 		return;
 
 	if (teardown_str != NULL) {
-		write (STDOUT_FILENO, teardown_str, strlen (teardown_str));
+		unused = write (STDOUT_FILENO, teardown_str, strlen (teardown_str));
 		g_free (teardown_str);
 		teardown_str = NULL;
 	}
@@ -229,6 +232,7 @@ do_console_cancel_event (void)
 	MonoMethod *im;
 	MonoVTable *vtable;
 
+	/* FIXME: this should likely iterate all the domains, instead */
 	if (!domain->domain)
 		return;
 
@@ -256,6 +260,17 @@ do_console_cancel_event (void)
 	mono_thread_pool_add ((MonoObject *) load_value, msg, NULL, NULL);
 }
 
+static int need_cancel = FALSE;
+/* this is executed from the finalizer thread */
+void
+mono_console_handle_async_ops (void)
+{
+	if (need_cancel) {
+		need_cancel = FALSE;
+		do_console_cancel_event ();
+	}
+}
+
 static gboolean in_sigint;
 static void
 sigint_handler (int signo)
@@ -268,7 +283,8 @@ sigint_handler (int signo)
 
 	in_sigint = TRUE;
 	save_errno = errno;
-	do_console_cancel_event ();
+	need_cancel = TRUE;
+	mono_gc_finalize_notify ();
 	errno = save_errno;
 	in_sigint = FALSE;
 }
@@ -278,11 +294,12 @@ static struct sigaction save_sigcont, save_sigint, save_sigwinch;
 static void
 sigcont_handler (int signo, void *the_siginfo, void *data)
 {
+	int unused;
 	// Ignore error, there is not much we can do in the sigcont handler.
 	tcsetattr (STDIN_FILENO, TCSANOW, &mono_attr);
 
 	if (keypad_xmit_str != NULL)
-		write (STDOUT_FILENO, keypad_xmit_str, strlen (keypad_xmit_str));
+		unused = write (STDOUT_FILENO, keypad_xmit_str, strlen (keypad_xmit_str));
 
 	// Call previous handler
 	if (save_sigcont.sa_sigaction != NULL &&
diff --git a/mono/metadata/console-win32.c b/mono/metadata/console-win32.c
index 5618099..6b940f3 100644
--- a/mono/metadata/console-win32.c
+++ b/mono/metadata/console-win32.c
@@ -24,6 +24,7 @@
 #include <mono/metadata/object-internals.h>
 #include <mono/metadata/class-internals.h>
 #include <mono/metadata/domain-internals.h>
+#include <mono/metadata/gc-internal.h>
 #include <mono/metadata/metadata.h>
 #include <mono/metadata/threadpool.h>
 
@@ -35,6 +36,11 @@ mono_console_init (void)
 {
 }
 
+void
+mono_console_handle_async_ops (void)
+{
+}
+
 MonoBoolean
 ves_icall_System_ConsoleDriver_Isatty (HANDLE handle)
 {
diff --git a/mono/metadata/coree.c b/mono/metadata/coree.c
index 9e48a3f..c31dfaf 100644
--- a/mono/metadata/coree.c
+++ b/mono/metadata/coree.c
@@ -33,10 +33,14 @@
 #include "environment.h"
 #include "coree.h"
 
+#ifdef ENABLE_COREE
+
 HMODULE coree_module_handle = NULL;
 
 static gboolean init_from_coree = FALSE;
 
+#endif
+
 gchar*
 mono_get_module_file_name (HMODULE module_handle)
 {
@@ -69,6 +73,7 @@ mono_get_module_file_name (HMODULE module_handle)
 	return file_name_utf8;
 }
 
+#ifdef ENABLE_COREE
 /* Entry point called by LdrLoadDll of ntdll.dll after _CorValidateImage. */
 BOOL STDMETHODCALLTYPE _CorDllMain(HINSTANCE hInst, DWORD dwReason, LPVOID lpReserved)
 {
@@ -923,4 +928,6 @@ mono_fixup_exe_image (MonoImage* image)
 		MonoFixupExe ((HMODULE) image->raw_data);
 }
 
+#endif /* ENABLE_COREE */
+
 #endif /* HOST_WIN32 */
diff --git a/mono/metadata/domain-internals.h b/mono/metadata/domain-internals.h
index 9380b07..815f605 100644
--- a/mono/metadata/domain-internals.h
+++ b/mono/metadata/domain-internals.h
@@ -324,6 +324,14 @@ struct _MonoDomain {
 	MonoImage *socket_assembly;
 	MonoClass *sockaddr_class;
 	MonoClassField *sockaddr_data_field;
+
+	/* Used by threadpool.c */
+	MonoImage *system_image;
+	MonoImage *system_net_dll;
+	MonoClass *corlib_asyncresult_class;
+	MonoClass *socket_class;
+	MonoClass *ad_unloaded_ex_class;
+	MonoClass *process_class;
 };
 
 typedef struct  {
@@ -413,6 +421,12 @@ mono_domain_code_reserve_align (MonoDomain *domain, int size, int alignment) MON
 void
 mono_domain_code_commit (MonoDomain *domain, void *data, int size, int newsize) MONO_INTERNAL;
 
+void *
+nacl_domain_get_code_dest (MonoDomain *domain, void *data) MONO_INTERNAL;
+
+void 
+nacl_domain_code_validate (MonoDomain *domain, guint8 **buf_base, int buf_size, guint8 **code_end) MONO_INTERNAL;
+
 void
 mono_domain_code_foreach (MonoDomain *domain, MonoCodeManagerFunc func, void *user_data) MONO_INTERNAL;
 
@@ -558,4 +572,6 @@ int mono_framework_version (void) MONO_INTERNAL;
 
 void mono_reflection_cleanup_domain (MonoDomain *domain) MONO_INTERNAL;
 
+void mono_assembly_cleanup_domain_bindings (guint32 domain_id) MONO_INTERNAL;;
+
 #endif /* __MONO_METADATA_DOMAIN_INTERNALS_H__ */
diff --git a/mono/metadata/domain.c b/mono/metadata/domain.c
index f791cb1..5ff08b7 100644
--- a/mono/metadata/domain.c
+++ b/mono/metadata/domain.c
@@ -130,6 +130,7 @@ static MonoAotModuleInfoTable *aot_modules = NULL;
 static const MonoRuntimeInfo supported_runtimes[] = {
 	{"v2.0.50215","2.0", { {2,0,0,0},    {8,0,0,0}, { 3, 5, 0, 0 } }	},
 	{"v2.0.50727","2.0", { {2,0,0,0},    {8,0,0,0}, { 3, 5, 0, 0 } }	},
+	{"v4.0.20506","4.0", { {4,0,0,0},    {10,0,0,0}, { 4, 0, 0, 0 } }   },
 	{"v4.0.30128","4.0", { {4,0,0,0},    {10,0,0,0}, { 4, 0, 0, 0 } }   },
 	{"v4.0.30319","4.0", { {4,0,0,0},    {10,0,0,0}, { 4, 0, 0, 0 } }   },
 	{"moonlight", "2.1", { {2,0,5,0},    {9,0,0,0}, { 3, 5, 0, 0 } }    },
@@ -1216,9 +1217,7 @@ mono_domain_create (void)
 	domain->jit_info_table = jit_info_table_new (domain);
 	domain->jit_info_free_queue = NULL;
 	domain->finalizable_objects_hash = g_hash_table_new (mono_aligned_addr_hash, NULL);
-#ifndef HAVE_SGEN_GC
 	domain->track_resurrection_handles_hash = g_hash_table_new (mono_aligned_addr_hash, NULL);
-#endif
 
 	InitializeCriticalSection (&domain->lock);
 	InitializeCriticalSection (&domain->assemblies_lock);
@@ -1272,9 +1271,10 @@ mono_init_internal (const char *filename, const char *exe_filename, const char *
 #ifdef HOST_WIN32
 	/* Avoid system error message boxes. */
 	SetErrorMode (SEM_FAILCRITICALERRORS | SEM_NOOPENFILEERRORBOX);
-
+#ifdef ENABLE_COREE
 	mono_load_coree (exe_filename);
 #endif
+#endif
 
 	mono_perfcounters_init ();
 
@@ -1296,7 +1296,7 @@ mono_init_internal (const char *filename, const char *exe_filename, const char *
 	mono_reflection_init ();
 
 	/* FIXME: When should we release this memory? */
-	MONO_GC_REGISTER_ROOT (appdomains_list);
+	MONO_GC_REGISTER_ROOT_FIXED (appdomains_list);
 
 	domain = mono_domain_create ();
 	mono_root_domain = domain;
@@ -1311,7 +1311,7 @@ mono_init_internal (const char *filename, const char *exe_filename, const char *
 		 * exe_image, and close it during shutdown.
 		 */
 		get_runtimes_from_exe (exe_filename, &exe_image, runtimes);
-#ifdef HOST_WIN32
+#ifdef ENABLE_COREE
 		if (!exe_image) {
 			exe_image = mono_assembly_open_from_bundle (exe_filename, NULL, FALSE);
 			if (!exe_image)
@@ -1898,24 +1898,20 @@ mono_domain_assembly_open (MonoDomain *domain, const char *name)
 	return ass;
 }
 
-#ifndef HAVE_SGEN_GC
 static void
 free_slist (gpointer key, gpointer value, gpointer user_data)
 {
 	g_slist_free (value);
 }
-#endif
 
-#if HAVE_SGEN_GC
 static void
 unregister_vtable_reflection_type (MonoVTable *vtable)
 {
 	MonoObject *type = vtable->type;
 
 	if (type->vtable->klass != mono_defaults.monotype_class)
-		mono_gc_deregister_root ((char*)&vtable->type);
+		MONO_GC_UNREGISTER_ROOT_IF_MOVING (vtable->type);
 }
-#endif
 
 void
 mono_domain_free (MonoDomain *domain, gboolean force)
@@ -1969,25 +1965,24 @@ mono_domain_free (MonoDomain *domain, gboolean force)
 		domain->type_init_exception_hash = NULL;
 	}
 
-	for (tmp = domain->domain_assemblies; tmp; tmp = tmp->next) {
-		MonoAssembly *ass = tmp->data;
-		mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_ASSEMBLY, "Unloading domain %s %p, assembly %s %p, refcount=%d\n", domain->friendly_name, domain, ass->aname.name, ass, ass->ref_count);
-		if (!mono_assembly_close_except_image_pools (ass))
-			tmp->data = NULL;
-	}
-
-#if HAVE_SGEN_GC
 	if (domain->class_vtable_array) {
 		int i;
 		for (i = 0; i < domain->class_vtable_array->len; ++i)
 			unregister_vtable_reflection_type (g_ptr_array_index (domain->class_vtable_array, i));
 	}
-#endif
 
+	/* This needs to be done before closing assemblies */
 	mono_gc_clear_domain (domain);
 
 	for (tmp = domain->domain_assemblies; tmp; tmp = tmp->next) {
 		MonoAssembly *ass = tmp->data;
+		mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_ASSEMBLY, "Unloading domain %s[%p], assembly %s[%p], ref_count=%d\n", domain->friendly_name, domain, ass->aname.name, ass, ass->ref_count);
+		if (!mono_assembly_close_except_image_pools (ass))
+			tmp->data = NULL;
+	}
+
+	for (tmp = domain->domain_assemblies; tmp; tmp = tmp->next) {
+		MonoAssembly *ass = tmp->data;
 		if (ass)
 			mono_assembly_close_finish (ass);
 	}
@@ -2059,14 +2054,12 @@ mono_domain_free (MonoDomain *domain, gboolean force)
 
 	g_hash_table_destroy (domain->finalizable_objects_hash);
 	domain->finalizable_objects_hash = NULL;
-#ifndef HAVE_SGEN_GC
 	if (domain->track_resurrection_objects_hash) {
 		g_hash_table_foreach (domain->track_resurrection_objects_hash, free_slist, NULL);
 		g_hash_table_destroy (domain->track_resurrection_objects_hash);
 	}
 	if (domain->track_resurrection_handles_hash)
 		g_hash_table_destroy (domain->track_resurrection_handles_hash);
-#endif
 	if (domain->method_rgctx_hash) {
 		g_hash_table_destroy (domain->method_rgctx_hash);
 		domain->method_rgctx_hash = NULL;
@@ -2204,6 +2197,58 @@ mono_domain_code_commit (MonoDomain *domain, void *data, int size, int newsize)
 	mono_domain_unlock (domain);
 }
 
+#if defined(__native_client_codegen__) && defined(__native_client__)
+/*
+ * Given the temporary buffer (allocated by mono_domain_code_reserve) into which
+ * we are generating code, return a pointer to the destination in the dynamic 
+ * code segment into which the code will be copied when mono_domain_code_commit
+ * is called.
+ * LOCKING: Acquires the domain lock.
+ */
+void *
+nacl_domain_get_code_dest (MonoDomain *domain, void *data)
+{
+	void *dest;
+	mono_domain_lock (domain);
+	dest = nacl_code_manager_get_code_dest (domain->code_mp, data);
+	mono_domain_unlock (domain);
+	return dest;
+}
+
+/* 
+ * Convenience function which calls mono_domain_code_commit to validate and copy
+ * the code. The caller sets *buf_base and *buf_size to the start and size of
+ * the buffer (allocated by mono_domain_code_reserve), and *code_end to the byte
+ * after the last instruction byte. On return, *buf_base will point to the start
+ * of the copied in the code segment, and *code_end will point after the end of 
+ * the copied code.
+ */
+void
+nacl_domain_code_validate (MonoDomain *domain, guint8 **buf_base, int buf_size, guint8 **code_end)
+{
+	guint8 *tmp = nacl_domain_get_code_dest (domain, *buf_base);
+	mono_domain_code_commit (domain, *buf_base, buf_size, *code_end - *buf_base);
+	*code_end = tmp + (*code_end - *buf_base);
+	*buf_base = tmp;
+}
+
+#else
+
+/* no-op versions of Native Client functions */
+
+void *
+nacl_domain_get_code_dest (MonoDomain *domain, void *data)
+{
+	return data;
+}
+
+void
+nacl_domain_code_validate (MonoDomain *domain, guint8 **buf_base, int buf_size, guint8 **code_end)
+{
+}
+
+#endif
+
 /*
  * mono_domain_code_foreach:
  * Iterate over the code thunks of the code manager of @domain.
@@ -2246,7 +2291,8 @@ mono_domain_add_class_static_data (MonoDomain *domain, MonoClass *klass, gpointe
 		int size = GPOINTER_TO_INT (domain->static_data_array [1]);
 		next = GPOINTER_TO_INT (domain->static_data_array [0]);
 		if (next >= size) {
-			gpointer *new_array = mono_gc_alloc_fixed (sizeof (gpointer) * (size * 2), NULL);
+			/* 'data' is allocated by alloc_fixed */
+			gpointer *new_array = mono_gc_alloc_fixed (sizeof (gpointer) * (size * 2), MONO_GC_ROOT_DESCR_FOR_FIXED (size * 2));
 			memcpy (new_array, domain->static_data_array, sizeof (gpointer) * size);
 			size *= 2;
 			new_array [1] = GINT_TO_POINTER (size);
@@ -2255,7 +2301,7 @@ mono_domain_add_class_static_data (MonoDomain *domain, MonoClass *klass, gpointe
 		}
 	} else {
 		int size = 32;
-		gpointer *new_array = mono_gc_alloc_fixed (sizeof (gpointer) * size, NULL);
+		gpointer *new_array = mono_gc_alloc_fixed (sizeof (gpointer) * size, MONO_GC_ROOT_DESCR_FOR_FIXED (size));
 		next = 2;
 		new_array [0] = GINT_TO_POINTER (next);
 		new_array [1] = GINT_TO_POINTER (size);
@@ -2519,8 +2565,21 @@ get_runtime_by_version (const char *version)
 {
 	int n;
 	int max = G_N_ELEMENTS (supported_runtimes);
-	
+	gboolean do_partial_match;
+	int vlen;
+
+	if (!version)
+		return NULL;
+
+	vlen = strlen (version);
+	if (vlen >= 4 && version [1] - '0' >= 4)
+		do_partial_match = TRUE;
+	else
+		do_partial_match = FALSE;
+
 	for (n=0; n<max; n++) {
+		if (do_partial_match && strncmp (version, supported_runtimes[n].runtime_version, vlen) == 0)
+			return &supported_runtimes[n];
 		if (strcmp (version, supported_runtimes[n].runtime_version) == 0)
 			return &supported_runtimes[n];
 	}
diff --git a/mono/metadata/exception.c b/mono/metadata/exception.c
index 7e12b63..ee10668 100644
--- a/mono/metadata/exception.c
+++ b/mono/metadata/exception.c
@@ -749,3 +749,14 @@ mono_get_exception_reflection_type_load (MonoArray *types, MonoArray *exceptions
 
 	return (MonoException *) exc;
 }
+
+MonoException *
+mono_get_exception_runtime_wrapped (MonoObject *wrapped_exception)
+{
+	MonoRuntimeWrappedException *ex = (MonoRuntimeWrappedException*)
+		mono_exception_from_name (mono_get_corlib (), "System.Runtime.CompilerServices",
+								  "RuntimeWrappedException");
+
+   MONO_OBJECT_SETREF (ex, wrapped_exception, wrapped_exception);
+   return (MonoException*)ex;
+}	
diff --git a/mono/metadata/exception.h b/mono/metadata/exception.h
index beb508a..fa17fa2 100644
--- a/mono/metadata/exception.h
+++ b/mono/metadata/exception.h
@@ -142,6 +142,9 @@ mono_get_exception_method_access (void);
 MonoException *
 mono_get_exception_reflection_type_load (MonoArray *types, MonoArray *exceptions);
 
+MonoException *
+mono_get_exception_runtime_wrapped (MonoObject *wrapped_exception);
+
 MONO_END_DECLS
 
 #endif /* _MONO_METADATA_EXCEPTION_H_ */
diff --git a/mono/metadata/gc-internal.h b/mono/metadata/gc-internal.h
index 3ac6ecc..4ec41b9 100644
--- a/mono/metadata/gc-internal.h
+++ b/mono/metadata/gc-internal.h
@@ -17,10 +17,64 @@
 #define mono_domain_finalizers_lock(domain) EnterCriticalSection (&(domain)->finalizable_objects_hash_lock);
 #define mono_domain_finalizers_unlock(domain) LeaveCriticalSection (&(domain)->finalizable_objects_hash_lock);
 
+/* Register a memory area as a conservatively scanned GC root */
 #define MONO_GC_REGISTER_ROOT(x) mono_gc_register_root ((char*)&(x), sizeof(x), NULL)
 
 #define MONO_GC_UNREGISTER_ROOT(x) mono_gc_deregister_root ((char*)&(x))
 
+/*
+ * Register a memory location as a root pointing to memory allocated using
+ * mono_gc_alloc_fixed (). This includes MonoGHashTable.
+ */
+#ifdef HAVE_SGEN_GC
+/* The result of alloc_fixed () is not GC tracked memory */
+#define MONO_GC_REGISTER_ROOT_FIXED(x)
+#else
+#define MONO_GC_REGISTER_ROOT_FIXED(x) MONO_GC_REGISTER_ROOT ((x))
+#endif
+
+/*
+ * Return a GC descriptor for an array containing N pointers to memory allocated
+ * by mono_gc_alloc_fixed ().
+ */
+#ifdef HAVE_SGEN_GC
+/* The result of alloc_fixed () is not GC tracked memory */
+#define MONO_GC_ROOT_DESCR_FOR_FIXED(n) mono_gc_make_root_descr_all_refs (0)
+#else
+/* The result of alloc_fixed () is GC tracked memory */
+#define MONO_GC_ROOT_DESCR_FOR_FIXED(n) NULL
+#endif
+
+/* Register a memory location holding a single object reference as a GC root */
+#define MONO_GC_REGISTER_ROOT_SINGLE(x) do { \
+	g_assert (sizeof (x) == sizeof (MonoObject*)); \
+	mono_gc_register_root ((char*)&(x), sizeof(MonoObject*), mono_gc_make_root_descr_all_refs (1)); \
+	} while (0)
+
+/*
+ * This is used for fields which point to objects which are kept alive by other references
+ * when using Boehm.
+ */
+#ifdef HAVE_SGEN_GC
+#define MONO_GC_REGISTER_ROOT_IF_MOVING(x) do { \
+		MONO_GC_REGISTER_ROOT_SINGLE(x);		\
+} while (0)
+
+#define MONO_GC_UNREGISTER_ROOT_IF_MOVING(x) do { \
+	MONO_GC_UNREGISTER_ROOT (x); \
+} while (0)
+#else
+#define MONO_GC_REGISTER_ROOT_IF_MOVING(x)
+#define MONO_GC_UNREGISTER_ROOT_IF_MOVING(x)
+#endif
+
+/* useful until we keep track of gc-references in corlib etc. */
+#ifdef HAVE_SGEN_GC
+#define IS_GC_REFERENCE(t) FALSE
+#else
+#define IS_GC_REFERENCE(t) ((t)->type == MONO_TYPE_U && class->image == mono_defaults.corlib)
+#endif
+
 void   mono_object_register_finalizer               (MonoObject  *obj) MONO_INTERNAL;
 void   ves_icall_System_GC_InternalCollect          (int          generation) MONO_INTERNAL;
 gint64 ves_icall_System_GC_GetTotalMemory           (MonoBoolean  forceCollection) MONO_INTERNAL;
@@ -56,6 +110,8 @@ extern gboolean mono_gc_register_thread (void *baseptr) MONO_INTERNAL;
 
 extern gboolean mono_gc_is_finalizer_internal_thread (MonoInternalThread *thread) MONO_INTERNAL;
 
+extern void mono_gc_set_stack_end (void *stack_end) MONO_INTERNAL;
+
 /* only valid after the RECLAIM_START GC event and before RECLAIM_END
  * Not exported in public headers, but can be linked to (unsupported).
  */
@@ -86,6 +142,9 @@ GCHandle_CheckCurrentDomain (guint32 gchandle) MONO_INTERNAL;
 /* simple interface for data structures needed in the runtime */
 void* mono_gc_make_descr_from_bitmap (gsize *bitmap, int numbits) MONO_INTERNAL;
 
+/* Return a root descriptor for a root with all refs */
+void* mono_gc_make_root_descr_all_refs (int numbits) MONO_INTERNAL;
+
 /* User defined marking function */
 /* It should work like this:
  * foreach (ref in GC references in the are structure pointed to by ADDR)
@@ -102,6 +161,8 @@ void *mono_gc_make_root_descr_user (MonoGCRootMarkFunc marker);
  * The memory is non-moving and it will be explicitly deallocated.
  * size bytes will be available from the returned address (ie, descr
  * must not be stored in the returned memory)
+ * NOTE: Under Boehm, this returns memory allocated using GC_malloc, so the result should
+ * be stored into a location registered using MONO_GC_REGISTER_ROOT_FIXED ().
  */
 void* mono_gc_alloc_fixed            (size_t size, void *descr) MONO_INTERNAL;
 void  mono_gc_free_fixed             (void* addr) MONO_INTERNAL;
@@ -132,6 +193,7 @@ void  mono_gc_deregister_root (char* addr) MONO_INTERNAL;
 int   mono_gc_finalizers_for_domain (MonoDomain *domain, MonoObject **out_array, int out_size) MONO_INTERNAL;
 void  mono_gc_run_finalize (void *obj, void *data) MONO_INTERNAL;
 void  mono_gc_clear_domain (MonoDomain * domain) MONO_INTERNAL;
+void* mono_gc_alloc_mature (MonoVTable *vtable) MONO_INTERNAL;
 
 /* 
  * Register a root which can only be written using a write barrier.
@@ -190,7 +252,11 @@ typedef struct {
 	 * needed by the other functions.
 	 */
 	gpointer (*thread_attach_func) (void);
-	/* FIXME: Add a cleanup function too */
+	/* 
+	 * Function called during thread deatch to free the data allocated by
+	 * thread_attach_func.
+	 */
+	void (*thread_detach_func) (gpointer user_data);
 	/* 
 	 * Function called from every thread when suspending for GC. It can save
 	 * data needed for marking from thread stacks. user_data is the data returned 
@@ -247,13 +313,11 @@ typedef void* (*MonoGCLockedCallbackFunc) (void *data);
 
 void* mono_gc_invoke_with_gc_lock (MonoGCLockedCallbackFunc func, void *data) MONO_INTERNAL;
 
-#ifdef HAVE_SGEN_GC
 int mono_gc_get_los_limit (void) MONO_INTERNAL;
 
 guint8* mono_gc_get_card_table (int *shift_bits, gpointer *card_mask) MONO_INTERNAL;
 
 void* mono_gc_get_nursery (int *shift_bits, size_t *size) MONO_INTERNAL;
-#endif
 
 /*
  * Return whenever GC is disabled
@@ -265,5 +329,7 @@ void mono_gc_register_mach_exception_thread (pthread_t thread) MONO_INTERNAL;
 pthread_t mono_gc_get_mach_exception_thread (void) MONO_INTERNAL;
 #endif
 
+gboolean mono_gc_parse_environment_string_extract_number (const char *str, glong *out) MONO_INTERNAL;
+
 #endif /* __MONO_METADATA_GC_INTERNAL_H__ */
 
diff --git a/mono/metadata/gc.c b/mono/metadata/gc.c
index a6fbcda..53e07e3 100644
--- a/mono/metadata/gc.c
+++ b/mono/metadata/gc.c
@@ -10,6 +10,7 @@
 #include <config.h>
 #include <glib.h>
 #include <string.h>
+#include <errno.h>
 
 #include <mono/metadata/gc-internal.h>
 #include <mono/metadata/mono-gc.h>
@@ -27,6 +28,7 @@
 #include <mono/metadata/gc-internal.h>
 #include <mono/metadata/marshal.h> /* for mono_delegate_free_ftnptr () */
 #include <mono/metadata/attach.h>
+#include <mono/metadata/console-io.h>
 #include <mono/utils/mono-semaphore.h>
 
 #ifndef HOST_WIN32
@@ -72,7 +74,7 @@ add_thread_to_finalize (MonoInternalThread *thread)
 {
 	mono_finalizer_lock ();
 	if (!threads_to_finalize)
-		MONO_GC_REGISTER_ROOT (threads_to_finalize);
+		MONO_GC_REGISTER_ROOT_SINGLE (threads_to_finalize);
 	threads_to_finalize = mono_mlist_append (threads_to_finalize, (MonoObject*)thread);
 	mono_finalizer_unlock ();
 }
@@ -601,11 +603,12 @@ static guint32
 alloc_handle (HandleData *handles, MonoObject *obj, gboolean track)
 {
 	gint slot, i;
+	guint32 res;
 	lock_handles (handles);
 	if (!handles->size) {
 		handles->size = 32;
 		if (handles->type > HANDLE_WEAK_TRACK) {
-			handles->entries = mono_gc_alloc_fixed (sizeof (gpointer) * handles->size, NULL);
+			handles->entries = mono_gc_alloc_fixed (sizeof (gpointer) * handles->size, mono_gc_make_root_descr_all_refs (handles->size));
 		} else {
 			handles->entries = g_malloc0 (sizeof (gpointer) * handles->size);
 			handles->domain_ids = g_malloc0 (sizeof (guint16) * handles->size);
@@ -641,17 +644,9 @@ alloc_handle (HandleData *handles, MonoObject *obj, gboolean track)
 
 		/* resize and copy the entries */
 		if (handles->type > HANDLE_WEAK_TRACK) {
-			gsize *gc_bitmap;
 			gpointer *entries;
-			void *descr;
-
-			/* Create a GC descriptor */
-			gc_bitmap = g_malloc (new_size / 8);
-			memset (gc_bitmap, 0xff, new_size / 8);
-			descr = mono_gc_make_descr_from_bitmap (gc_bitmap, new_size);
-			g_free (gc_bitmap);
 
-			entries = mono_gc_alloc_fixed (sizeof (gpointer) * new_size, descr);
+			entries = mono_gc_alloc_fixed (sizeof (gpointer) * new_size, mono_gc_make_root_descr_all_refs (new_size));
 			memcpy (entries, handles->entries, sizeof (gpointer) * handles->size);
 
 			mono_gc_free_fixed (handles->entries);
@@ -692,6 +687,8 @@ alloc_handle (HandleData *handles, MonoObject *obj, gboolean track)
 	slot = slot * 32 + i;
 	handles->entries [slot] = obj;
 	if (handles->type <= HANDLE_WEAK_TRACK) {
+		/*FIXME, what to use when obj == null?*/
+		handles->domain_ids [slot] = (obj ? mono_object_get_domain (obj) : mono_domain_get ())->domain_id;
 		if (obj)
 			mono_gc_weak_link_add (&(handles->entries [slot]), obj, track);
 	}
@@ -699,7 +696,9 @@ alloc_handle (HandleData *handles, MonoObject *obj, gboolean track)
 	mono_perfcounters->gc_num_handles++;
 	unlock_handles (handles);
 	/*g_print ("allocated entry %d of type %d to object %p (in slot: %p)\n", slot, handles->type, obj, handles->entries [slot]);*/
-	return (slot << 3) | (handles->type + 1);
+	res = (slot << 3) | (handles->type + 1);
+	mono_profiler_gc_handle (MONO_PROFILER_GC_HANDLE_CREATED, handles->type, res, obj);
+	return res;
 }
 
 /**
@@ -817,6 +816,8 @@ mono_gchandle_set_target (guint32 gchandle, MonoObject *obj)
 				mono_gc_weak_link_remove (&handles->entries [slot]);
 			if (obj)
 				mono_gc_weak_link_add (&handles->entries [slot], obj, handles->type == HANDLE_WEAK_TRACK);
+			/*FIXME, what to use when obj == null?*/
+			handles->domain_ids [slot] = (obj ? mono_object_get_domain (obj) : mono_domain_get ())->domain_id;
 		} else {
 			handles->entries [slot] = obj;
 		}
@@ -903,6 +904,7 @@ mono_gchandle_free (guint32 gchandle)
 	mono_perfcounters->gc_num_handles--;
 	/*g_print ("freed entry %d of type %d\n", slot, handles->type);*/
 	unlock_handles (handles);
+	mono_profiler_gc_handle (MONO_PROFILER_GC_HANDLE_DESTROYED, handles->type, gchandle, NULL);
 }
 
 /**
@@ -1051,6 +1053,8 @@ finalizer_thread (gpointer unused)
 		WaitForSingleObjectEx (finalizer_event, INFINITE, FALSE);
 #endif
 
+		mono_console_handle_async_ops ();
+
 #ifndef DISABLE_ATTACH
 		mono_attach_maybe_start ();
 #endif
@@ -1088,8 +1092,8 @@ mono_gc_init (void)
 
 	InitializeCriticalSection (&finalizer_mutex);
 
-	MONO_GC_REGISTER_ROOT (gc_handles [HANDLE_NORMAL].entries);
-	MONO_GC_REGISTER_ROOT (gc_handles [HANDLE_PINNED].entries);
+	MONO_GC_REGISTER_ROOT_FIXED (gc_handles [HANDLE_NORMAL].entries);
+	MONO_GC_REGISTER_ROOT_FIXED (gc_handles [HANDLE_PINNED].entries);
 
 	mono_gc_base_init ();
 
@@ -1109,6 +1113,7 @@ mono_gc_init (void)
 #endif
 
 	gc_thread = mono_thread_create_internal (mono_domain_get (), finalizer_thread, NULL, FALSE);
+	ves_icall_System_Threading_Thread_SetName_internal (gc_thread, mono_string_new (mono_domain_get (), "Finalizer"));
 }
 
 void
@@ -1221,3 +1226,63 @@ mono_gc_get_mach_exception_thread (void)
 	return mach_exception_thread;
 }
 #endif
+
+/**
+ * mono_gc_parse_environment_string_extract_number:
+ *
+ * @str: points to the first digit of the number
+ * @out: pointer to the variable that will receive the value
+ *
+ * Tries to extract a number from the passed string, taking in to account m, k
+ * and g suffixes
+ *
+ * Returns true if passing was successful
+ */
+gboolean
+mono_gc_parse_environment_string_extract_number (const char *str, glong *out)
+{
+	char *endptr;
+	int len = strlen (str), shift = 0;
+	glong val;
+	gboolean is_suffix = FALSE;
+	char suffix;
+
+	switch (str [len - 1]) {
+		case 'g':
+		case 'G':
+			shift += 10;
+		case 'm':
+		case 'M':
+			shift += 10;
+		case 'k':
+		case 'K':
+			shift += 10;
+			is_suffix = TRUE;
+			suffix = str [len - 1];
+			break;
+	}
+
+	errno = 0;
+	val = strtol (str, &endptr, 10);
+
+	if ((errno == ERANGE && (val == LONG_MAX || val == LONG_MIN))
+			|| (errno != 0 && val == 0) || (endptr == str))
+		return FALSE;
+
+	if (is_suffix) {
+		if (*(endptr + 1)) /* Invalid string. */
+			return FALSE;
+		val <<= shift;
+	}
+
+	*out = val;
+	return TRUE;
+}
+
+#ifndef HAVE_SGEN_GC
+void*
+mono_gc_alloc_mature (MonoVTable *vtable)
+{
+	return mono_object_new_specific (vtable);
+}
+#endif
diff --git a/mono/metadata/icall-def.h b/mono/metadata/icall-def.h
index 9ff1488..26614eb 100644
--- a/mono/metadata/icall-def.h
+++ b/mono/metadata/icall-def.h
@@ -441,12 +441,12 @@ ICALL (SOCK_6a, "Disconnect_internal(intptr,bool,int&)", ves_icall_System_Net_So
 ICALL(SOCK_7, "GetSocketOption_arr_internal(intptr,System.Net.Sockets.SocketOptionLevel,System.Net.Sockets.SocketOptionName,byte[]&,int&)", ves_icall_System_Net_Sockets_Socket_GetSocketOption_arr_internal)
 ICALL(SOCK_8, "GetSocketOption_obj_internal(intptr,System.Net.Sockets.SocketOptionLevel,System.Net.Sockets.SocketOptionName,object&,int&)", ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal)
 ICALL(SOCK_9, "Listen_internal(intptr,int,int&)", ves_icall_System_Net_Sockets_Socket_Listen_internal)
-ICALL(SOCK_10, "LocalEndPoint_internal(intptr,int&)", ves_icall_System_Net_Sockets_Socket_LocalEndPoint_internal)
+ICALL(SOCK_10, "LocalEndPoint_internal(intptr,int,int&)", ves_icall_System_Net_Sockets_Socket_LocalEndPoint_internal)
 ICALL(SOCK_11, "Poll_internal", ves_icall_System_Net_Sockets_Socket_Poll_internal)
 ICALL(SOCK_11a, "Receive_internal(intptr,System.Net.Sockets.Socket/WSABUF[],System.Net.Sockets.SocketFlags,int&)", ves_icall_System_Net_Sockets_Socket_Receive_array_internal)
 ICALL(SOCK_12, "Receive_internal(intptr,byte[],int,int,System.Net.Sockets.SocketFlags,int&)", ves_icall_System_Net_Sockets_Socket_Receive_internal)
 ICALL(SOCK_13, "RecvFrom_internal(intptr,byte[],int,int,System.Net.Sockets.SocketFlags,System.Net.SocketAddress&,int&)", ves_icall_System_Net_Sockets_Socket_RecvFrom_internal)
-ICALL(SOCK_14, "RemoteEndPoint_internal(intptr,int&)", ves_icall_System_Net_Sockets_Socket_RemoteEndPoint_internal)
+ICALL(SOCK_14, "RemoteEndPoint_internal(intptr,int,int&)", ves_icall_System_Net_Sockets_Socket_RemoteEndPoint_internal)
 ICALL(SOCK_15, "Select_internal(System.Net.Sockets.Socket[]&,int,int&)", ves_icall_System_Net_Sockets_Socket_Select_internal)
 ICALL(SOCK_15a, "SendFile(intptr,string,byte[],byte[],System.Net.Sockets.TransmitFileOptions)", ves_icall_System_Net_Sockets_Socket_SendFile)
 ICALL(SOCK_16, "SendTo_internal(intptr,byte[],int,int,System.Net.Sockets.SocketFlags,System.Net.SocketAddress,int&)", ves_icall_System_Net_Sockets_Socket_SendTo_internal)
@@ -456,6 +456,7 @@ ICALL(SOCK_18, "SetSocketOption_internal(intptr,System.Net.Sockets.SocketOptionL
 ICALL(SOCK_19, "Shutdown_internal(intptr,System.Net.Sockets.SocketShutdown,int&)", ves_icall_System_Net_Sockets_Socket_Shutdown_internal)
 ICALL(SOCK_20, "Socket_internal(System.Net.Sockets.AddressFamily,System.Net.Sockets.SocketType,System.Net.Sockets.ProtocolType,int&)", ves_icall_System_Net_Sockets_Socket_Socket_internal)
 ICALL(SOCK_21, "WSAIoctl(intptr,int,byte[],byte[],int&)", ves_icall_System_Net_Sockets_Socket_WSAIoctl)
+ICALL(SOCK_22, "socket_pool_queue", icall_append_io_job)
 
 ICALL_TYPE(SOCKEX, "System.Net.Sockets.SocketException", SOCKEX_1)
 ICALL(SOCKEX_1, "WSAGetLastError_internal", ves_icall_System_Net_Sockets_SocketException_WSAGetLastError_internal)
@@ -625,7 +626,8 @@ ICALL(MMETH_7, "get_IsGenericMethodDefinition", ves_icall_MonoMethod_get_IsGener
 ICALL(MMETH_8, "get_base_method", ves_icall_MonoMethod_get_base_method)
 ICALL(MMETH_9, "get_name", ves_icall_MonoMethod_get_name)
 
-ICALL_TYPE(MMETHI, "System.Reflection.MonoMethodInfo", MMETHI_1)
+ICALL_TYPE(MMETHI, "System.Reflection.MonoMethodInfo", MMETHI_4)
+ICALL(MMETHI_4, "get_method_attributes", vell_icall_get_method_attributes)
 ICALL(MMETHI_1, "get_method_info", ves_icall_get_method_info)
 ICALL(MMETHI_2, "get_parameter_info", ves_icall_get_parameter_info)
 ICALL(MMETHI_3, "get_retval_marshal", ves_icall_System_MonoMethodInfo_get_retval_marshal)
@@ -838,6 +840,7 @@ ICALL(MONIT_4, "Monitor_test_owner", ves_icall_System_Threading_Monitor_Monitor_
 ICALL(MONIT_5, "Monitor_test_synchronised", ves_icall_System_Threading_Monitor_Monitor_test_synchronised)
 ICALL(MONIT_6, "Monitor_try_enter", ves_icall_System_Threading_Monitor_Monitor_try_enter)
 ICALL(MONIT_7, "Monitor_wait", ves_icall_System_Threading_Monitor_Monitor_wait)
+ICALL(MONIT_9, "try_enter_with_atomic_var", ves_icall_System_Threading_Monitor_Monitor_try_enter_with_atomic_var)
 
 ICALL_TYPE(MUTEX, "System.Threading.Mutex", MUTEX_1)
 ICALL(MUTEX_1, "CreateMutex_internal(bool,string,bool&)", ves_icall_System_Threading_Mutex_CreateMutex_internal)
@@ -865,8 +868,6 @@ ICALL(THREAD_2a, "ConstructInternalThread", ves_icall_System_Threading_Thread_Co
 ICALL(THREAD_3, "CurrentInternalThread_internal", mono_thread_internal_current)
 ICALL(THREAD_4, "FreeLocalSlotValues", mono_thread_free_local_slot_values)
 ICALL(THREAD_55, "GetAbortExceptionState", ves_icall_System_Threading_Thread_GetAbortExceptionState)
-ICALL(THREAD_5, "GetCachedCurrentCulture(System.Threading.InternalThread)", ves_icall_System_Threading_Thread_GetCachedCurrentCulture)
-ICALL(THREAD_6, "GetCachedCurrentUICulture(System.Threading.InternalThread)", ves_icall_System_Threading_Thread_GetCachedCurrentUICulture)
 ICALL(THREAD_7, "GetDomainID", ves_icall_System_Threading_Thread_GetDomainID)
 ICALL(THREAD_8, "GetName_internal(System.Threading.InternalThread)", ves_icall_System_Threading_Thread_GetName_internal)
 ICALL(THREAD_11, "GetState(System.Threading.InternalThread)", ves_icall_System_Threading_Thread_GetState)
@@ -875,8 +876,6 @@ ICALL(THREAD_12, "Join_internal(System.Threading.InternalThread,int,intptr)", ve
 ICALL(THREAD_13, "MemoryBarrier", ves_icall_System_Threading_Thread_MemoryBarrier)
 ICALL(THREAD_14, "ResetAbort_internal()", ves_icall_System_Threading_Thread_ResetAbort)
 ICALL(THREAD_15, "Resume_internal()", ves_icall_System_Threading_Thread_Resume)
-ICALL(THREAD_16, "SetCachedCurrentCulture", ves_icall_System_Threading_Thread_SetCachedCurrentCulture)
-ICALL(THREAD_17, "SetCachedCurrentUICulture", ves_icall_System_Threading_Thread_SetCachedCurrentUICulture)
 ICALL(THREAD_18, "SetName_internal(System.Threading.InternalThread,string)", ves_icall_System_Threading_Thread_SetName_internal)
 ICALL(THREAD_21, "SetState(System.Threading.InternalThread,System.Threading.ThreadState)", ves_icall_System_Threading_Thread_SetState)
 ICALL(THREAD_22, "Sleep_internal", ves_icall_System_Threading_Thread_Sleep_internal)
diff --git a/mono/metadata/icall.c b/mono/metadata/icall.c
index ab790a3..a8d0edc 100644
--- a/mono/metadata/icall.c
+++ b/mono/metadata/icall.c
@@ -68,6 +68,7 @@
 #include <mono/metadata/mono-perfcounters.h>
 #include <mono/metadata/mono-debug.h>
 #include <mono/metadata/mono-ptr-array.h>
+#include <mono/metadata/verify-internals.h>
 #include <mono/io-layer/io-layer.h>
 #include <mono/utils/strtod.h>
 #include <mono/utils/monobitset.h>
@@ -686,7 +687,6 @@ ves_icall_System_Array_FastCopy (MonoArray *source, int source_idx, MonoArray* d
 	void * source_addr;
 	MonoClass *src_class;
 	MonoClass *dest_class;
-	int i;
 
 	MONO_ARCH_SAVE_REGS;
 
@@ -710,6 +710,10 @@ ves_icall_System_Array_FastCopy (MonoArray *source, int source_idx, MonoArray* d
 
 	/* Case1: object[] -> valuetype[] (ArrayList::ToArray) */
 	if (src_class == mono_defaults.object_class && dest_class->valuetype) {
+		// FIXME: This is racy
+		return FALSE;
+		/*
+		  int i;
 		int has_refs = dest_class->has_references;
 		for (i = source_idx; i < source_idx + length; ++i) {
 			MonoObject *elem = mono_array_get (source, MonoObject*, i);
@@ -730,6 +734,7 @@ ves_icall_System_Array_FastCopy (MonoArray *source, int source_idx, MonoArray* d
 				memcpy (addr, (char *)elem + sizeof (MonoObject), element_size);
 		}
 		return TRUE;
+		*/
 	}
 
 	/* Check if we're copying a char[] <==> (u)short[] */
@@ -740,13 +745,18 @@ ves_icall_System_Array_FastCopy (MonoArray *source, int source_idx, MonoArray* d
 		if (mono_class_is_subclass_of (src_class, dest_class, FALSE))
 			;
 		/* Case2: object[] -> reftype[] (ArrayList::ToArray) */
-		else if (mono_class_is_subclass_of (dest_class, src_class, FALSE))
+		else if (mono_class_is_subclass_of (dest_class, src_class, FALSE)) {
+			// FIXME: This is racy
+			return FALSE;
+			/*
+			  int i;
 			for (i = source_idx; i < source_idx + length; ++i) {
 				MonoObject *elem = mono_array_get (source, MonoObject*, i);
 				if (elem && !mono_object_isinst (elem, dest_class))
 					return FALSE;
 			}
-		else
+			*/
+		} else
 			return FALSE;
 	}
 
@@ -824,12 +834,9 @@ ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_InitializeArray (MonoAr
 	int align;
 	const char *field_data;
 
-	if (MONO_TYPE_IS_REFERENCE (type) ||
-			(type->type == MONO_TYPE_VALUETYPE &&
-				(!mono_type_get_class (type) ||
-				mono_type_get_class (type)->has_references))) {
+	if (MONO_TYPE_IS_REFERENCE (type) || type->type == MONO_TYPE_VALUETYPE) {
 		MonoException *exc = mono_get_exception_argument("array",
-			"Cannot initialize array containing references");
+			"Cannot initialize array of non-primitive type.");
 		mono_raise_exception (exc);
 	}
 
@@ -1171,13 +1178,13 @@ mono_type_type_from_obj (MonoReflectionType *mtype, MonoObject *obj)
 }
 
 static gint32
-ves_icall_ModuleBuilder_getToken (MonoReflectionModuleBuilder *mb, MonoObject *obj)
+ves_icall_ModuleBuilder_getToken (MonoReflectionModuleBuilder *mb, MonoObject *obj, gboolean create_open_instance)
 {
 	MONO_ARCH_SAVE_REGS;
 	
 	MONO_CHECK_ARG_NULL (obj);
 	
-	return mono_image_create_token (mb->dynamic_image, obj, TRUE, TRUE);
+	return mono_image_create_token (mb->dynamic_image, obj, create_open_instance, TRUE);
 }
 
 static gint32
@@ -1694,18 +1701,24 @@ ves_icall_System_Reflection_FieldInfo_GetTypeModifiers (MonoReflectionField *fie
 	return type_array_from_modifiers (field->field->parent->image, type, optional);
 }
 
+static int
+vell_icall_get_method_attributes (MonoMethod *method)
+{
+	return method->flags;
+}
+
 static void
 ves_icall_get_method_info (MonoMethod *method, MonoMethodInfo *info)
 {
+	MonoError error;
 	MonoDomain *domain = mono_domain_get ();
 	MonoMethodSignature* sig;
 	MONO_ARCH_SAVE_REGS;
 
-	sig = mono_method_signature (method);
-	if (!sig) {
-		g_assert (mono_loader_get_last_error ());
-		mono_raise_exception (mono_loader_error_prepare_exception (mono_loader_get_last_error ()));
-	}
+	sig = mono_method_signature_checked (method, &error);
+	if (!mono_error_ok (&error))
+		mono_error_raise_exception (&error);
+
 
 	MONO_STRUCT_SETREF (info, parent, mono_type_get_object (domain, &method->klass->byval_arg));
 	MONO_STRUCT_SETREF (info, ret, mono_type_get_object (domain, sig->ret));
@@ -1793,7 +1806,9 @@ ves_icall_MonoField_GetValueInternal (MonoReflectionField *field, MonoObject *ob
 static void
 ves_icall_MonoField_SetValueInternal (MonoReflectionField *field, MonoObject *obj, MonoObject *value)
 {
+	MonoError error;
 	MonoClassField *cf = field->field;
+	MonoType *type;
 	gchar *v;
 
 	MONO_ARCH_SAVE_REGS;
@@ -1805,9 +1820,13 @@ ves_icall_MonoField_SetValueInternal (MonoReflectionField *field, MonoObject *ob
 	if (mono_security_get_mode () == MONO_SECURITY_MODE_CORE_CLR)
 		mono_security_core_clr_ensure_reflection_access_field (cf);
 
+	type = mono_field_get_type_checked (cf, &error);
+	if (!mono_error_ok (&error))
+		mono_error_raise_exception (&error);
+
 	v = (gchar *) value;
-	if (!cf->type->byref) {
-		switch (cf->type->type) {
+	if (!type->byref) {
+		switch (type->type) {
 		case MONO_TYPE_U1:
 		case MONO_TYPE_I1:
 		case MONO_TYPE_BOOLEAN:
@@ -1823,6 +1842,7 @@ ves_icall_MonoField_SetValueInternal (MonoReflectionField *field, MonoObject *ob
 		case MONO_TYPE_I8:
 		case MONO_TYPE_R8:
 		case MONO_TYPE_VALUETYPE:
+		case MONO_TYPE_PTR:
 			if (v != NULL)
 				v += sizeof (MonoObject);
 			break;
@@ -1834,11 +1854,11 @@ ves_icall_MonoField_SetValueInternal (MonoReflectionField *field, MonoObject *ob
 			/* Do nothing */
 			break;
 		case MONO_TYPE_GENERICINST: {
-			MonoGenericClass *gclass = cf->type->data.generic_class;
+			MonoGenericClass *gclass = type->data.generic_class;
 			g_assert (!gclass->context.class_inst->is_open);
 
-			if (mono_class_is_nullable (mono_class_from_mono_type (cf->type))) {
-				MonoClass *nklass = mono_class_from_mono_type (cf->type);
+			if (mono_class_is_nullable (mono_class_from_mono_type (type))) {
+				MonoClass *nklass = mono_class_from_mono_type (type);
 				MonoObject *nullable;
 
 				/* 
@@ -1859,12 +1879,12 @@ ves_icall_MonoField_SetValueInternal (MonoReflectionField *field, MonoObject *ob
 		}
 		default:
 			g_error ("type 0x%x not handled in "
-				 "ves_icall_FieldInfo_SetValueInternal", cf->type->type);
+				 "ves_icall_FieldInfo_SetValueInternal", type->type);
 			return;
 		}
 	}
 
-	if (cf->type->attrs & FIELD_ATTRIBUTE_STATIC) {
+	if (type->attrs & FIELD_ATTRIBUTE_STATIC) {
 		MonoVTable *vtable = mono_class_vtable_full (mono_object_domain (field), cf->parent, TRUE);
 		if (!vtable->initialized)
 			mono_runtime_class_init (vtable);
@@ -2321,7 +2341,6 @@ ves_icall_MonoType_GetArrayRank (MonoReflectionType *type)
 		mono_raise_exception (mono_get_exception_argument ("type", "Type must be an array type"));
 
 	class = mono_class_from_mono_type (type->type);
-	mono_class_init_or_throw (class);
 
 	return class->rank;
 }
@@ -2337,7 +2356,6 @@ ves_icall_MonoType_GetGenericArguments (MonoReflectionType *type)
 	MONO_ARCH_SAVE_REGS;
 
 	klass = mono_class_from_mono_type (type->type);
-	mono_class_init_or_throw (klass);
 
 	if (klass->generic_container) {
 		MonoGenericContainer *container = klass->generic_container;
@@ -2383,7 +2401,6 @@ ves_icall_Type_GetGenericTypeDefinition_impl (MonoReflectionType *type)
 		return NULL;
 
 	klass = mono_class_from_mono_type (type->type);
-	mono_class_init_or_throw (klass);
 
 	if (klass->generic_container) {
 		return type; /* check this one */
@@ -2405,6 +2422,7 @@ ves_icall_Type_GetGenericTypeDefinition_impl (MonoReflectionType *type)
 static MonoReflectionType*
 ves_icall_Type_MakeGenericType (MonoReflectionType *type, MonoArray *type_array)
 {
+	MonoClass *class;
 	MonoType *geninst, **types;
 	int i, count;
 
@@ -2424,6 +2442,12 @@ ves_icall_Type_MakeGenericType (MonoReflectionType *type, MonoArray *type_array)
 	if (!geninst)
 		return NULL;
 
+	class = mono_class_from_mono_type (geninst);
+
+	/*we might inflate to the GTD*/
+	if (class->generic_class && !mono_verifier_class_is_valid_generic_instantiation (class))
+		mono_raise_exception (mono_get_exception_argument ("typeArguments", "Invalid generic arguments"));
+
 	return mono_type_get_object (mono_object_domain (type), geninst);
 }
 
@@ -3205,6 +3229,8 @@ ves_icall_get_enum_info (MonoReflectionType *type, MonoEnumInfo *info)
 		int len;
 		MonoTypeEnum def_type;
 		
+		if (!(field->type->attrs & FIELD_ATTRIBUTE_STATIC))
+			continue;
 		if (strcmp ("value__", mono_field_get_name (field)) == 0)
 			continue;
 		if (mono_field_is_deleted (field))
@@ -3269,7 +3295,6 @@ ves_icall_Type_GetField (MonoReflectionType *type, MonoString *name, guint32 bfl
 	int (*compare_func) (const char *s1, const char *s2) = NULL;
 	domain = ((MonoObject *)type)->vtable->domain;
 	klass = startklass = mono_class_from_mono_type (type->type);
-	mono_class_init_or_throw (klass);
 
 	if (!name)
 		mono_raise_exception (mono_get_exception_argument_null ("name"));
@@ -3283,17 +3308,16 @@ handle_parent:
 		mono_raise_exception (mono_class_get_exception_for_failure (klass));
 
 	iter = NULL;
-	while ((field = mono_class_get_fields (klass, &iter))) {
+	while ((field = mono_class_get_fields_lazy (klass, &iter))) {
+		guint32 flags = mono_field_get_flags (field);
 		match = 0;
 
-		if (field->type == NULL)
-			continue;
-		if (mono_field_is_deleted (field))
+		if (mono_field_is_deleted_with_flags (field, flags))
 			continue;
-		if ((field->type->attrs & FIELD_ATTRIBUTE_FIELD_ACCESS_MASK) == FIELD_ATTRIBUTE_PUBLIC) {
+		if ((flags & FIELD_ATTRIBUTE_FIELD_ACCESS_MASK) == FIELD_ATTRIBUTE_PUBLIC) {
 			if (bflags & BFLAGS_Public)
 				match++;
-		} else if ((klass == startklass) || (field->type->attrs & FIELD_ATTRIBUTE_FIELD_ACCESS_MASK) != FIELD_ATTRIBUTE_PRIVATE) {
+		} else if ((klass == startklass) || (flags & FIELD_ATTRIBUTE_FIELD_ACCESS_MASK) != FIELD_ATTRIBUTE_PRIVATE) {
 			if (bflags & BFLAGS_NonPublic) {
 				match++;
 			}
@@ -3301,7 +3325,7 @@ handle_parent:
 		if (!match)
 			continue;
 		match = 0;
-		if (field->type->attrs & FIELD_ATTRIBUTE_STATIC) {
+		if (flags & FIELD_ATTRIBUTE_STATIC) {
 			if (bflags & BFLAGS_Static)
 				if ((bflags & BFLAGS_FlattenHierarchy) || (klass == startklass))
 					match++;
@@ -4927,6 +4951,7 @@ fill_reflection_assembly_name (MonoDomain *domain, MonoReflectionAssemblyName *a
 	aname->revision = name->revision;
 	aname->hashalg = name->hash_alg;
 	aname->versioncompat = 1; /* SameMachine (default) */
+	aname->processor_architecture = name->arch;
 
 	if (by_default_version)
 		MONO_OBJECT_SETREF (aname, version, create_version (domain, name->major, name->minor, name->build, name->revision));
@@ -5013,14 +5038,7 @@ ves_icall_System_Reflection_Assembly_get_fullName (MonoReflectionAssembly *assem
 	MonoString *res;
 	gchar *name;
 
-	name = g_strdup_printf (
-		"%s, Version=%d.%d.%d.%d, Culture=%s, PublicKeyToken=%s%s",
-		mass->aname.name,
-		mass->aname.major, mass->aname.minor, mass->aname.build, mass->aname.revision,
-		mass->aname.culture && *mass->aname.culture? mass->aname.culture: "neutral",
-		mass->aname.public_key_token [0] ? (char *)mass->aname.public_key_token : "null",
-		(mass->aname.flags & ASSEMBLYREF_RETARGETABLE_FLAG) ? ", Retargetable=Yes" : "");
-
+	name = mono_stringify_assembly_name (&mass->aname);
 	res = mono_string_new (domain, name);
 	g_free (name);
 
@@ -5398,14 +5416,23 @@ ves_icall_System_Reflection_Module_InternalGetTypes (MonoReflectionModule *modul
 }
 
 static gboolean
-mono_metadata_memberref_is_method (MonoImage *image, guint32 token)
-{
-	guint32 cols [MONO_MEMBERREF_SIZE];
-	const char *sig;
-	mono_metadata_decode_row (&image->tables [MONO_TABLE_MEMBERREF], mono_metadata_token_index (token) - 1, cols, MONO_MEMBERREF_SIZE);
-	sig = mono_metadata_blob_heap (image, cols [MONO_MEMBERREF_SIGNATURE]);
-	mono_metadata_decode_blob_size (sig, &sig);
-	return (*sig != 0x6);
+mono_memberref_is_method (MonoImage *image, guint32 token)
+{
+	if (!image->dynamic) {
+		guint32 cols [MONO_MEMBERREF_SIZE];
+		const char *sig;
+		mono_metadata_decode_row (&image->tables [MONO_TABLE_MEMBERREF], mono_metadata_token_index (token) - 1, cols, MONO_MEMBERREF_SIZE);
+		sig = mono_metadata_blob_heap (image, cols [MONO_MEMBERREF_SIGNATURE]);
+		mono_metadata_decode_blob_size (sig, &sig);
+		return (*sig != 0x6);
+	} else {
+		MonoClass *handle_class;
+
+		if (!mono_lookup_dynamic_token_class (image, token, FALSE, &handle_class, NULL))
+			return FALSE;
+
+		return mono_defaults.methodhandle_class == handle_class;
+	}
 }
 
 static void
@@ -5441,12 +5468,14 @@ ves_icall_System_Reflection_Module_ResolveTypeToken (MonoImage *image, guint32 t
 	}
 
 	if (image->dynamic) {
-		if (type_args || method_args)
-			mono_raise_exception (mono_get_exception_not_implemented (NULL));
-		klass = mono_lookup_dynamic_token_class (image, token, FALSE, NULL, NULL);
-		if (!klass)
-			return NULL;
-		return &klass->byval_arg;
+		if ((table == MONO_TABLE_TYPEDEF) || (table == MONO_TABLE_TYPEREF)) {
+			klass = mono_lookup_dynamic_token_class (image, token, FALSE, NULL, NULL);
+			return klass ? &klass->byval_arg : NULL;
+		}
+
+		init_generic_context_from_args (&context, type_args, method_args);
+		klass = mono_lookup_dynamic_token_class (image, token, FALSE, NULL, &context);
+		return klass ? &klass->byval_arg : NULL;
 	}
 
 	if ((index <= 0) || (index > image->tables [table].rows)) {
@@ -5484,17 +5513,23 @@ ves_icall_System_Reflection_Module_ResolveMethodToken (MonoImage *image, guint32
 	}
 
 	if (image->dynamic) {
-		if (type_args || method_args)
-			mono_raise_exception (mono_get_exception_not_implemented (NULL));
-		/* FIXME: validate memberref token type */
-		return mono_lookup_dynamic_token_class (image, token, FALSE, NULL, NULL);
+		if (table == MONO_TABLE_METHOD)
+			return mono_lookup_dynamic_token_class (image, token, FALSE, NULL, NULL);
+
+		if ((table == MONO_TABLE_MEMBERREF) && !(mono_memberref_is_method (image, token))) {
+			*error = ResolveTokenError_BadTable;
+			return NULL;
+		}
+
+		init_generic_context_from_args (&context, type_args, method_args);
+		return mono_lookup_dynamic_token_class (image, token, FALSE, NULL, &context);
 	}
 
 	if ((index <= 0) || (index > image->tables [table].rows)) {
 		*error = ResolveTokenError_OutOfRange;
 		return NULL;
 	}
-	if ((table == MONO_TABLE_MEMBERREF) && (!mono_metadata_memberref_is_method (image, token))) {
+	if ((table == MONO_TABLE_MEMBERREF) && (!mono_memberref_is_method (image, token))) {
 		*error = ResolveTokenError_BadTable;
 		return NULL;
 	}
@@ -5552,17 +5587,23 @@ ves_icall_System_Reflection_Module_ResolveFieldToken (MonoImage *image, guint32
 	}
 
 	if (image->dynamic) {
-		if (type_args || method_args)
-			mono_raise_exception (mono_get_exception_not_implemented (NULL));
-		/* FIXME: validate memberref token type */
-		return mono_lookup_dynamic_token_class (image, token, FALSE, NULL, NULL);
+		if (table == MONO_TABLE_FIELD)
+			return mono_lookup_dynamic_token_class (image, token, FALSE, NULL, NULL);
+
+		if (mono_memberref_is_method (image, token)) {
+			*error = ResolveTokenError_BadTable;
+			return NULL;
+		}
+
+		init_generic_context_from_args (&context, type_args, method_args);
+		return mono_lookup_dynamic_token_class (image, token, FALSE, NULL, &context);
 	}
 
 	if ((index <= 0) || (index > image->tables [table].rows)) {
 		*error = ResolveTokenError_OutOfRange;
 		return NULL;
 	}
-	if ((table == MONO_TABLE_MEMBERREF) && (mono_metadata_memberref_is_method (image, token))) {
+	if ((table == MONO_TABLE_MEMBERREF) && (mono_memberref_is_method (image, token))) {
 		*error = ResolveTokenError_BadTable;
 		return NULL;
 	}
@@ -5610,7 +5651,7 @@ ves_icall_System_Reflection_Module_ResolveMemberToken (MonoImage *image, guint32
 			return NULL;
 	}
 	case MONO_TABLE_MEMBERREF:
-		if (mono_metadata_memberref_is_method (image, token)) {
+		if (mono_memberref_is_method (image, token)) {
 			MonoMethod *m = ves_icall_System_Reflection_Module_ResolveMethodToken (image, token, type_args, method_args, error);
 			if (m)
 				return (MonoObject*)mono_method_get_object (mono_domain_get (), m, m->klass);
@@ -5761,7 +5802,6 @@ ves_icall_Type_make_array_type (MonoReflectionType *type, int rank)
 	MONO_ARCH_SAVE_REGS;
 
 	klass = mono_class_from_mono_type (type->type);
-	mono_class_init_or_throw (klass);
 	check_for_invalid_type (klass);
 
 	if (rank == 0) //single dimentional array
@@ -5826,6 +5866,8 @@ ves_icall_System_Delegate_CreateDelegate_internal (MonoReflectionType *type, Mon
 		/* Creating a trampoline would leak memory */
 		func = mono_compile_method (method);
 	} else {
+		if (target && method->flags & METHOD_ATTRIBUTE_VIRTUAL && method->klass != mono_object_class (target))
+			method = mono_object_get_virtual_method (target, method);
 		func = mono_create_ftnptr (mono_domain_get (),
 			mono_runtime_create_jump_trampoline (mono_domain_get (), method, TRUE));
 	}
@@ -6265,12 +6307,13 @@ ves_icall_System_Environment_get_Platform (void)
 #elif defined(__MACH__)
 	/* OSX */
 	//
-	// For compatibility with our client code, this will be 4 for a while.
-	// We will eventually move to 6 to match .NET, but it requires all client
-	// code to be updated and the documentation everywhere to be updated 
-	// first.
+	// Notice that the value is hidden from user code, and only exposed
+	// to mscorlib.   This is due to Mono's Unix/MacOS code predating the
+	// define and making assumptions based on Unix/128/4 values before there
+	// was a MacOS define.    Lots of code would assume that not-Unix meant
+	// Windows, but in this case, it would be OSX. 
 	//
-	return 4;
+	return 6;
 #else
 	/* Unix */
 	return 4;
@@ -7438,12 +7481,14 @@ custom_attrs_get_by_type (MonoObject *obj, MonoReflectionType *attr_type)
 {
 	MonoClass *attr_class = attr_type ? mono_class_from_mono_type (attr_type->type) : NULL;
 	MonoArray *res;
+	MonoError error;
 
 	if (attr_class)
 		mono_class_init_or_throw (attr_class);
 
-	res = mono_reflection_get_custom_attrs_by_type (obj, attr_class);
-
+	res = mono_reflection_get_custom_attrs_by_type (obj, attr_class, &error);
+	if (!mono_error_ok (&error))
+		mono_error_raise_exception (&error);
 	if (mono_loader_get_last_error ()) {
 		mono_raise_exception (mono_loader_error_prepare_exception (mono_loader_get_last_error ()));
 		g_assert_not_reached ();
diff --git a/mono/metadata/image.c b/mono/metadata/image.c
index c6f9ca5..b9d7d7b 100644
--- a/mono/metadata/image.c
+++ b/mono/metadata/image.c
@@ -121,7 +121,7 @@ mono_cli_rva_image_map (MonoImage *image, guint32 addr)
 	for (i = 0; i < top; i++){
 		if ((addr >= tables->st_virtual_address) &&
 		    (addr < tables->st_virtual_address + tables->st_raw_data_size)){
-#ifdef HOST_WIN32
+#ifdef ENABLE_COREE
 			if (image->is_module_handle)
 				return addr;
 #endif
@@ -158,7 +158,7 @@ mono_image_rva_map (MonoImage *image, guint32 addr)
 				if (!mono_image_ensure_section_idx (image, i))
 					return NULL;
 			}
-#ifdef HOST_WIN32
+#ifdef ENABLE_COREE
 			if (image->is_module_handle)
 				return image->raw_data + addr;
 #endif
@@ -196,8 +196,15 @@ mono_images_init (void)
 void
 mono_images_cleanup (void)
 {
+	GHashTableIter iter;
+	MonoImage *image;
+
 	DeleteCriticalSection (&images_mutex);
 
+	g_hash_table_iter_init (&iter, loaded_images_hash);
+	while (g_hash_table_iter_next (&iter, NULL, (void**)&image))
+		mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_ASSEMBLY, "Assembly image '%s' still loaded at shutdown.", image->name);
+
 	g_hash_table_destroy (loaded_images_hash);
 	g_hash_table_destroy (loaded_images_refonly_hash);
 
@@ -232,7 +239,7 @@ mono_image_ensure_section_idx (MonoImage *image, int section)
 
 	if (sect->st_raw_data_ptr + sect->st_raw_data_size > image->raw_data_len)
 		return FALSE;
-#ifdef HOST_WIN32
+#ifdef ENABLE_COREE
 	if (image->is_module_handle)
 		iinfo->cli_sections [section] = image->raw_data + sect->st_virtual_address;
 	else
@@ -621,7 +628,7 @@ mono_image_load_module (MonoImage *image, int idx)
 			if (image->modules [idx - 1]) {
 				mono_image_addref (image->modules [idx - 1]);
 				image->modules [idx - 1]->assembly = image->assembly;
-#ifdef HOST_WIN32
+#ifdef ENABLE_COREE
 				if (image->modules [idx - 1]->is_module_handle)
 					mono_image_fixup_vtable (image->modules [idx - 1]);
 #endif
@@ -695,7 +702,7 @@ do_load_header (MonoImage *image, MonoDotNetHeader *header, int offset)
 {
 	MonoDotNetHeader64 header64;
 
-#ifdef HOST_WIN32
+#ifdef ENABLE_COREE
 	if (!image->is_module_handle)
 #endif
 	if (offset + sizeof (MonoDotNetHeader32) > image->raw_data_len)
@@ -816,7 +823,7 @@ do_load_header (MonoImage *image, MonoDotNetHeader *header, int offset)
  	SWAPPDE (header->datadir.pe_cli_header);
 	SWAPPDE (header->datadir.pe_reserved);
 
-#ifdef HOST_WIN32
+#ifdef ENABLE_COREE
 	if (image->is_module_handle)
 		image->raw_data_len = header->nt.pe_image_size;
 #endif
@@ -835,7 +842,7 @@ mono_image_load_pe_data (MonoImage *image)
 	iinfo = image->image_info;
 	header = &iinfo->cli_header;
 
-#ifdef HOST_WIN32
+#ifdef ENABLE_COREE
 	if (!image->is_module_handle)
 #endif
 	if (offset + sizeof (msdos) > image->raw_data_len)
@@ -1171,7 +1178,7 @@ mono_image_open_from_data (char *data, guint32 data_len, gboolean need_copy, Mon
 	return mono_image_open_from_data_full (data, data_len, need_copy, status, FALSE);
 }
 
-#ifdef HOST_WIN32
+#ifdef ENABLE_COREE
 /* fname is not duplicated. */
 MonoImage*
 mono_image_open_from_module_handle (HMODULE module_handle, char* fname, gboolean has_entry_point, MonoImageOpenStatus* status)
@@ -1205,7 +1212,7 @@ mono_image_open_full (const char *fname, MonoImageOpenStatus *status, gboolean r
 	
 	g_return_val_if_fail (fname != NULL, NULL);
 	
-#ifdef HOST_WIN32
+#ifdef ENABLE_COREE
 	/* Load modules using LoadLibrary. */
 	if (!refonly && coree_module_handle) {
 		HMODULE module_handle;
@@ -1254,8 +1261,12 @@ mono_image_open_full (const char *fname, MonoImageOpenStatus *status, gboolean r
 			if (status) {
 				if (last_error == ERROR_BAD_EXE_FORMAT || last_error == STATUS_INVALID_IMAGE_FORMAT)
 					*status = MONO_IMAGE_IMAGE_INVALID;
-				else
-					*status = MONO_IMAGE_ERROR_ERRNO;
+				else {
+					if (last_error == ERROR_FILE_NOT_FOUND || last_error == ERROR_PATH_NOT_FOUND)
+						errno = ENOENT;
+					else
+						errno = 0;
+				}
 			}
 			return NULL;
 		}
@@ -1353,7 +1364,7 @@ mono_image_open_raw (const char *fname, MonoImageOpenStatus *status)
 void
 mono_image_fixup_vtable (MonoImage *image)
 {
-#ifdef HOST_WIN32
+#ifdef ENABLE_COREE
 	MonoCLIImageInfo *iinfo;
 	MonoPEDirEntry *de;
 	MonoVTableFixup *vtfixup;
@@ -1416,12 +1427,6 @@ free_mr_signatures (gpointer key, gpointer val, gpointer user_data)
 */
 
 static void
-free_remoting_wrappers (gpointer key, gpointer val, gpointer user_data)
-{
-	g_free (val);
-}
-
-static void
 free_array_cache_entry (gpointer key, gpointer val, gpointer user_data)
 {
 	g_slist_free ((GSList*)val);
@@ -1497,7 +1502,7 @@ mono_image_close_except_pools (MonoImage *image)
 
 	mono_images_unlock ();
 
-#ifdef HOST_WIN32
+#ifdef ENABLE_COREE
 	if (image->is_module_handle && image->has_entry_point) {
 		mono_images_lock ();
 		if (image->ref_count == 0) {
@@ -1540,7 +1545,7 @@ mono_image_close_except_pools (MonoImage *image)
 		}
 	}
 
-#ifdef HOST_WIN32
+#ifdef ENABLE_COREE
 	mono_images_lock ();
 	if (image->is_module_handle && !image->has_entry_point)
 		FreeLibrary ((HMODULE) image->raw_data);
@@ -1603,8 +1608,7 @@ mono_image_close_except_pools (MonoImage *image)
 	free_hash (image->delegate_end_invoke_cache);
 	free_hash (image->delegate_invoke_cache);
 	free_hash (image->delegate_abstract_invoke_cache);
-	if (image->remoting_invoke_cache)
-		g_hash_table_foreach (image->remoting_invoke_cache, free_remoting_wrappers, NULL);
+	free_hash (image->delegate_bound_static_invoke_cache);
 	free_hash (image->remoting_invoke_cache);
 	free_hash (image->runtime_invoke_cache);
 	free_hash (image->runtime_invoke_direct_cache);
@@ -1994,7 +1998,7 @@ mono_image_load_file_for_image (MonoImage *image, int fileidx)
 		}
 
 		image->files [fileidx - 1] = res;
-#ifdef HOST_WIN32
+#ifdef ENABLE_COREE
 		if (res->is_module_handle)
 			mono_image_fixup_vtable (res);
 #endif
diff --git a/mono/metadata/loader.c b/mono/metadata/loader.c
index db126b8..9e06e13 100644
--- a/mono/metadata/loader.c
+++ b/mono/metadata/loader.c
@@ -59,6 +59,8 @@ static gboolean loader_lock_inited;
 /* Statistics */
 static guint32 inflated_signatures_size;
 static guint32 memberref_sig_cache_size;
+static guint32 methods_size;
+static guint32 signatures_size;
 
 /*
  * This TLS variable contains the last type load error encountered by the loader.
@@ -89,6 +91,10 @@ mono_loader_init ()
 								MONO_COUNTER_GENERICS | MONO_COUNTER_INT, &inflated_signatures_size);
 		mono_counters_register ("Memberref signature cache size",
 								MONO_COUNTER_METADATA | MONO_COUNTER_INT, &memberref_sig_cache_size);
+		mono_counters_register ("MonoMethod size",
+								MONO_COUNTER_METADATA | MONO_COUNTER_INT, &methods_size);
+		mono_counters_register ("MonoMethodSignature size",
+								MONO_COUNTER_METADATA | MONO_COUNTER_INT, &signatures_size);
 
 		inited = TRUE;
 	}
@@ -148,9 +154,9 @@ mono_loader_set_error_assembly_load (const char *assembly_name, gboolean ref_onl
 	 * assert.
 	 */
 	if (ref_only)
-		g_warning ("Cannot resolve dependency to assembly '%s' because it has not been preloaded. When using the ReflectionOnly APIs, dependent assemblies must be pre-loaded or loaded on demand through the ReflectionOnlyAssemblyResolve event.", assembly_name);
+		mono_trace (G_LOG_LEVEL_WARNING, MONO_TRACE_ASSEMBLY, "Cannot resolve dependency to assembly '%s' because it has not been preloaded. When using the ReflectionOnly APIs, dependent assemblies must be pre-loaded or loaded on demand through the ReflectionOnlyAssemblyResolve event.", assembly_name);
 	else
-		g_warning ("Could not load file or assembly '%s' or one of its dependencies.", assembly_name);
+		mono_trace (G_LOG_LEVEL_WARNING, MONO_TRACE_ASSEMBLY, "Could not load file or assembly '%s' or one of its dependencies.", assembly_name);
 
 	set_loader_error (error);
 }
@@ -436,7 +442,7 @@ field_from_memberref (MonoImage *image, guint32 token, MonoClass **retklass,
 
 	fname = mono_metadata_string_heap (image, cols [MONO_MEMBERREF_NAME]);
 
-	if (!mono_verifier_verify_memberref_signature (image, cols [MONO_MEMBERREF_SIGNATURE], NULL)) {
+	if (!mono_verifier_verify_memberref_field_signature (image, cols [MONO_MEMBERREF_SIGNATURE], NULL)) {
 		mono_loader_set_error_bad_image (g_strdup_printf ("Bad field signature class token 0x%08x field name %s token 0x%08x on image %s", class, fname, token, image->name));
 		return NULL;
 	}
@@ -605,9 +611,11 @@ find_method_in_class (MonoClass *klass, const char *name, const char *qname, con
 				continue;
 
 			method = mono_get_method (klass->image, MONO_TOKEN_METHOD_DEF | (klass->method.first + i + 1), klass);
-			other_sig = mono_method_signature (method);
-			if (method && other_sig && (sig->call_convention != MONO_CALL_VARARG) && mono_metadata_signature_equal (sig, other_sig))
-				return method;
+			if (method) {
+				other_sig = mono_method_signature (method);
+				if (other_sig && (sig->call_convention != MONO_CALL_VARARG) && mono_metadata_signature_equal (sig, other_sig))
+					return method;
+			}
 		}
 	}
 
@@ -623,6 +631,10 @@ find_method_in_class (MonoClass *klass, const char *name, const char *qname, con
 		MonoMethod *m = klass->methods [i];
 		MonoMethodSignature *msig;
 
+		/* We must cope with failing to load some of the types. */
+		if (!m)
+			continue;
+
 		if (!((fqname && !strcmp (m->name, fqname)) ||
 		      (qname && !strcmp (m->name, qname)) ||
 		      (name && !strcmp (m->name, name))))
@@ -675,7 +687,16 @@ find_method (MonoClass *in_class, MonoClass *ic, const char* name, MonoMethodSig
 		if (name [0] == '.' && (!strcmp (name, ".ctor") || !strcmp (name, ".cctor")))
 			break;
 
-		g_assert (from_class->interface_offsets_count == in_class->interface_offsets_count);
+		/*
+		 * This happens when we fail to lazily load the interfaces of one of the types.
+		 * On such case we can't just bail out since user code depends on us trying harder.
+		 */
+		if (from_class->interface_offsets_count != in_class->interface_offsets_count) {
+			in_class = in_class->parent;
+			from_class = from_class->parent;
+			continue;
+		}
+
 		for (i = 0; i < in_class->interface_offsets_count; i++) {
 			MonoClass *in_ic = in_class->interfaces_packed [i];
 			MonoClass *from_ic = from_class->interfaces_packed [i];
@@ -821,7 +842,7 @@ mono_method_get_signature_full (MonoMethod *method, MonoImage *image, guint32 to
 
 		sig = find_cached_memberref_sig (image, sig_idx);
 		if (!sig) {
-			if (!mono_verifier_verify_memberref_signature (image, sig_idx, NULL)) {
+			if (!mono_verifier_verify_memberref_method_signature (image, sig_idx, NULL)) {
 				guint32 class = cols [MONO_MEMBERREF_CLASS] & MONO_MEMBERREF_PARENT_MASK;
 				const char *fname = mono_metadata_string_heap (image, cols [MONO_MEMBERREF_NAME]);
 
@@ -972,7 +993,7 @@ method_from_memberref (MonoImage *image, guint32 idx, MonoGenericContext *typesp
 
 	sig_idx = cols [MONO_MEMBERREF_SIGNATURE];
 
-	if (!mono_verifier_verify_memberref_signature (image, sig_idx, NULL)) {
+	if (!mono_verifier_verify_memberref_method_signature (image, sig_idx, NULL)) {
 		mono_loader_set_error_method_load (klass->name, mname);
 		return NULL;
 	}
@@ -1064,6 +1085,9 @@ method_from_methodspec (MonoImage *image, MonoGenericContext *context, guint32 i
 	g_assert (param_count);
 
 	inst = mono_metadata_parse_generic_inst (image, NULL, param_count, ptr, &ptr);
+	if (!inst)
+		return NULL;
+
 	if (context && inst->is_open) {
 		inst = mono_metadata_inflate_generic_inst (inst, context, &error);
 		if (!mono_error_ok (&error)) {
@@ -1232,7 +1256,7 @@ cached_module_load (const char *name, int flags, char **err)
 		mono_loader_unlock ();
 		return res;
 	}
-	res = mono_dl_open (name, flags, NULL);
+	res = mono_dl_open (name, flags, err);
 	if (res)
 		g_hash_table_insert (global_module_map, g_strdup (name), res);
 	mono_loader_unlock ();
@@ -1273,11 +1297,14 @@ mono_lookup_pinvoke_call (MonoMethod *method, const char **exc_class, const char
 		orig_scope = method_aux->dll;
 	}
 	else {
-		if (!piinfo->implmap_idx)
+		if (!piinfo->implmap_idx || piinfo->implmap_idx > im->rows)
 			return NULL;
 
 		mono_metadata_decode_row (im, piinfo->implmap_idx - 1, im_cols, MONO_IMPLMAP_SIZE);
 
+		if (!im_cols [MONO_IMPLMAP_SCOPE] || im_cols [MONO_IMPLMAP_SCOPE] > mr->rows)
+			return NULL;
+
 		piinfo->piflags = im_cols [MONO_IMPLMAP_FLAGS];
 		import = mono_metadata_string_heap (image, im_cols [MONO_IMPLMAP_NAME]);
 		scope_token = mono_metadata_decode_row_col (mr, im_cols [MONO_IMPLMAP_SCOPE] - 1, MONO_MODULEREF_NAME);
@@ -1494,6 +1521,8 @@ mono_lookup_pinvoke_call (MonoMethod *method, const char **exc_class, const char
 								"Probing '%s'.", mangled_name2);
 
 					error_msg = mono_dl_symbol (module, mangled_name2, &piinfo->addr);
+					g_free (error_msg);
+					error_msg = NULL;
 
 					if (piinfo->addr)
 						mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_DLLIMPORT,
@@ -1570,10 +1599,12 @@ mono_get_method_from_token (MonoImage *image, guint32 token, MonoClass *klass,
 	mono_metadata_decode_row (&image->tables [MONO_TABLE_METHOD], idx - 1, cols, 6);
 
 	if ((cols [2] & METHOD_ATTRIBUTE_PINVOKE_IMPL) ||
-	    (cols [1] & METHOD_IMPL_ATTRIBUTE_INTERNAL_CALL))
+	    (cols [1] & METHOD_IMPL_ATTRIBUTE_INTERNAL_CALL)) {
 		result = (MonoMethod *)mono_image_alloc0 (image, sizeof (MonoMethodPInvoke));
-	else
+	} else {
 		result = (MonoMethod *)mono_image_alloc0 (image, sizeof (MonoMethod));
+		methods_size += sizeof (MonoMethod);
+	}
 
 	mono_stats.method_count ++;
 
@@ -2235,6 +2266,7 @@ mono_method_signature_checked (MonoMethod *m, MonoError *error)
 
 		signature = mono_metadata_parse_method_signature_full (img, container, idx, sig_body, NULL);
 		if (!signature) {
+			mono_loader_clear_error ();
 			mono_loader_unlock ();
 			mono_error_set_method_load (error, m->klass, m->name, "");
 			return NULL;
@@ -2242,6 +2274,8 @@ mono_method_signature_checked (MonoMethod *m, MonoError *error)
 
 		if (can_cache_signature)
 			g_hash_table_insert (img->method_signatures, (gpointer)sig, signature);
+
+		signatures_size += mono_metadata_signature_size (signature);
 	}
 
 	/* Verify metadata consistency */
diff --git a/mono/metadata/marshal.c b/mono/metadata/marshal.c
index afec4e5..fc725e7 100644
--- a/mono/metadata/marshal.c
+++ b/mono/metadata/marshal.c
@@ -86,6 +86,9 @@ delegate_hash_table_add (MonoDelegate *d);
 static void
 emit_struct_conv (MonoMethodBuilder *mb, MonoClass *klass, gboolean to_object);
 
+static void
+emit_struct_conv_full (MonoMethodBuilder *mb, MonoClass *klass, gboolean to_object, MonoMarshalNative string_encoding);
+
 static void 
 mono_struct_delete_old (MonoClass *klass, char *ptr);
 
@@ -104,6 +107,9 @@ mono_string_utf8_to_builder2 (char *text);
 static MonoStringBuilder *
 mono_string_utf16_to_builder2 (gunichar2 *text);
 
+static MonoString*
+mono_string_new_len_wrapper (const char *text, guint length);
+
 static void
 mono_byvalarray_to_array (MonoArray *arr, gpointer native_arr, MonoClass *eltype, guint32 elnum);
 
@@ -204,6 +210,7 @@ mono_marshal_init (void)
 		register_icall (mono_string_to_utf16, "mono_string_to_utf16", "ptr obj", FALSE);
 		register_icall (mono_string_from_utf16, "mono_string_from_utf16", "obj ptr", FALSE);
 		register_icall (mono_string_new_wrapper, "mono_string_new_wrapper", "obj ptr", FALSE);
+		register_icall (mono_string_new_len_wrapper, "mono_string_new_len_wrapper", "obj ptr int", FALSE);
 		register_icall (mono_string_to_utf8, "mono_string_to_utf8", "ptr obj", FALSE);
 		register_icall (mono_string_to_lpstr, "mono_string_to_lpstr", "ptr obj", FALSE);
 		register_icall (mono_string_to_ansibstr, "mono_string_to_ansibstr", "ptr object", FALSE);
@@ -968,6 +975,12 @@ mono_string_to_byvalwstr (gpointer dst, MonoString *src, int size)
 	*((gunichar2 *) dst + len) = 0;
 }
 
+static MonoString*
+mono_string_new_len_wrapper (const char *text, guint length)
+{
+	return mono_string_new_len (mono_domain_get (), text, length);
+}
+
 static int
 mono_mb_emit_proxy_check (MonoMethodBuilder *mb, int branch_code)
 {
@@ -1018,10 +1031,23 @@ mono_mb_emit_contextbound_check (MonoMethodBuilder *mb, int branch_code)
 	return mono_mb_emit_branch (mb, branch_code);
 }
 
+/*
+ * mono_mb_emit_exception_marshal_directive:
+ *
+ *   This function assumes ownership of MSG, which should be malloc-ed.
+ */
 static void
-mono_mb_emit_exception_marshal_directive (MonoMethodBuilder *mb, const char *msg)
+mono_mb_emit_exception_marshal_directive (MonoMethodBuilder *mb, char *msg)
 {
-	mono_mb_emit_exception_full (mb, "System.Runtime.InteropServices", "MarshalDirectiveException", msg);
+	char *s;
+
+	if (!mb->dynamic) {
+		s = mono_image_strdup (mb->method->klass->image, msg);
+		g_free (msg);
+	} else {
+		s = g_strdup (msg);
+	}
+	mono_mb_emit_exception_full (mb, "System.Runtime.InteropServices", "MarshalDirectiveException", s);
 }
 
 guint
@@ -1398,7 +1424,6 @@ emit_ptr_to_object_conv (MonoMethodBuilder *mb, MonoType *type, MonoMarshalConv
 		char *msg = g_strdup_printf ("marshaling conversion %d not implemented", conv);
 
 		mono_mb_emit_exception_marshal_directive (mb, msg);
-		g_free (msg);
 		break;
 	}
 	}
@@ -1413,7 +1438,11 @@ conv_to_icall (MonoMarshalConv conv)
 	case MONO_MARSHAL_CONV_LPWSTR_STR:
 		return mono_string_from_utf16;
 	case MONO_MARSHAL_CONV_LPSTR_STR:
+#ifdef TARGET_WIN32
+		return mono_string_from_utf16;
+#else
 		return mono_string_new_wrapper;
+#endif
 	case MONO_MARSHAL_CONV_STR_LPTSTR:
 #ifdef TARGET_WIN32
 		return mono_marshal_string_to_utf16;
@@ -1740,7 +1769,8 @@ emit_object_to_ptr_conv (MonoMethodBuilder *mb, MonoType *type, MonoMarshalConv
 }
 
 static void
-emit_struct_conv (MonoMethodBuilder *mb, MonoClass *klass, gboolean to_object)
+emit_struct_conv_full (MonoMethodBuilder *mb, MonoClass *klass, gboolean to_object,
+					   MonoMarshalNative string_encoding)
 {
 	MonoMarshalType *info;
 	int i;
@@ -1843,8 +1873,18 @@ emit_struct_conv (MonoMethodBuilder *mb, MonoClass *klass, gboolean to_object)
 			case MONO_TYPE_R8:
 				mono_mb_emit_ldloc (mb, 1);
 				mono_mb_emit_ldloc (mb, 0);
-				mono_mb_emit_byte (mb, mono_type_to_ldind (ftype));
-				mono_mb_emit_byte (mb, mono_type_to_stind (ftype));
+				if (t == MONO_TYPE_CHAR && ntype == MONO_NATIVE_U1 && string_encoding != MONO_NATIVE_LPWSTR) {
+					if (to_object) {
+						mono_mb_emit_byte (mb, CEE_LDIND_U1);
+						mono_mb_emit_byte (mb, CEE_STIND_I2);
+					} else {
+						mono_mb_emit_byte (mb, CEE_LDIND_U2);
+						mono_mb_emit_byte (mb, CEE_STIND_I1);
+					}
+				} else {
+					mono_mb_emit_byte (mb, mono_type_to_ldind (ftype));
+					mono_mb_emit_byte (mb, mono_type_to_stind (ftype));
+				}
 				break;
 			case MONO_TYPE_VALUETYPE: {
 				int src_var, dst_var;
@@ -1950,6 +1990,12 @@ emit_struct_conv (MonoMethodBuilder *mb, MonoClass *klass, gboolean to_object)
 }
 
 static void
+emit_struct_conv (MonoMethodBuilder *mb, MonoClass *klass, gboolean to_object)
+{
+	emit_struct_conv_full (mb, klass, to_object, -1);
+}
+
+static void
 emit_struct_free (MonoMethodBuilder *mb, MonoClass *klass, int struct_var)
 {
 	/* Call DestroyStructure */
@@ -2171,6 +2217,7 @@ mono_marshal_get_string_to_ptr_conv (MonoMethodPInvoke *piinfo, MonoMarshalSpec
 	case MONO_NATIVE_LPWSTR:
 		return MONO_MARSHAL_CONV_STR_LPWSTR;
 	case MONO_NATIVE_LPSTR:
+	case MONO_NATIVE_VBBYREFSTR:
 		return MONO_MARSHAL_CONV_STR_LPSTR;
 	case MONO_NATIVE_LPTSTR:
 		return MONO_MARSHAL_CONV_STR_LPTSTR;
@@ -2213,6 +2260,7 @@ mono_marshal_get_ptr_to_string_conv (MonoMethodPInvoke *piinfo, MonoMarshalSpec
 		*need_free = FALSE;
 		return MONO_MARSHAL_CONV_LPWSTR_STR;
 	case MONO_NATIVE_LPSTR:
+	case MONO_NATIVE_VBBYREFSTR:
 		return MONO_MARSHAL_CONV_LPSTR_STR;
 	case MONO_NATIVE_LPTSTR:
 		return MONO_MARSHAL_CONV_LPTSTR_STR;
@@ -2298,6 +2346,22 @@ get_cache (GHashTable **var, GHashFunc hash_func, GCompareFunc equal_func)
 	return *var;
 }
 
+static GHashTable*
+get_cache_full (GHashTable **var, GHashFunc hash_func, GCompareFunc equal_func, GDestroyNotify key_destroy_func, GDestroyNotify value_destroy_func)
+{
+	if (!(*var)) {
+		mono_marshal_lock ();
+		if (!(*var)) {
+			GHashTable *cache = 
+				g_hash_table_new_full (hash_func, equal_func, key_destroy_func, value_destroy_func);
+			mono_memory_barrier ();
+			*var = cache;
+		}
+		mono_marshal_unlock ();
+	}
+	return *var;
+}
+
 GHashTable*
 mono_marshal_get_cache (GHashTable **var, GHashFunc hash_func, GCompareFunc equal_func)
 {
@@ -2382,7 +2446,7 @@ mono_remoting_mb_create_and_cache (MonoMethod *key, MonoMethodBuilder *mb,
 {
 	MonoMethod **res = NULL;
 	MonoRemotingMethods *wrps;
-	GHashTable *cache = get_cache (&key->klass->image->remoting_invoke_cache, mono_aligned_addr_hash, NULL);
+	GHashTable *cache = get_cache_full (&key->klass->image->remoting_invoke_cache, mono_aligned_addr_hash, NULL, NULL, g_free);
 
 	mono_marshal_lock ();
 	wrps = g_hash_table_lookup (cache, key);
@@ -3740,6 +3804,15 @@ signature_method_pair_equal (SignatureMethodPair *pair1, SignatureMethodPair *pa
 	return mono_metadata_signature_equal (pair1->sig, pair2->sig) && (pair1->method == pair2->method);
 }
 
+static gboolean
+signature_method_pair_matches_method (gpointer key, gpointer value, gpointer user_data)
+{
+	SignatureMethodPair *pair = (SignatureMethodPair*)key;
+	MonoMethod *method = (MonoMethod*)user_data;
+
+	return pair->method == method;
+}
+
 static void
 free_signature_method_pair (SignatureMethodPair *pair)
 {
@@ -3752,7 +3825,7 @@ free_signature_method_pair (SignatureMethodPair *pair)
 MonoMethod *
 mono_marshal_get_delegate_invoke (MonoMethod *method, MonoDelegate *del)
 {
-	MonoMethodSignature *sig, *static_sig;
+	MonoMethodSignature *sig, *static_sig, *invoke_sig;
 	int i;
 	MonoMethodBuilder *mb;
 	MonoMethod *res, *newm;
@@ -3766,6 +3839,7 @@ mono_marshal_get_delegate_invoke (MonoMethod *method, MonoDelegate *del)
 	MonoClass *target_class = NULL;
 	gboolean callvirt = FALSE;
 	gboolean closed_over_null = FALSE;
+	gboolean static_method_with_first_arg_bound = FALSE;
 
 	/*
 	 * If the delegate target is null, and the target method is not static, a virtual 
@@ -3790,18 +3864,30 @@ mono_marshal_get_delegate_invoke (MonoMethod *method, MonoDelegate *del)
 	g_assert (method && method->klass->parent == mono_defaults.multicastdelegate_class &&
 		  !strcmp (method->name, "Invoke"));
 		
-	sig = mono_signature_no_pinvoke (method);
+	invoke_sig = sig = mono_signature_no_pinvoke (method);
 
 	if (callvirt)
 		closed_over_null = sig->param_count == mono_method_signature (del->method)->param_count;
 
-	if (callvirt) {
+	if (del && del->method && mono_method_signature (del->method)->param_count == sig->param_count + 1 && (del->method->flags & METHOD_ATTRIBUTE_STATIC)) {
+		invoke_sig = mono_method_signature (del->method);
+		target_method = del->method;
+		static_method_with_first_arg_bound = TRUE;
+	}
+
+	if (callvirt || static_method_with_first_arg_bound) {
+		GHashTable **cache_ptr;
+		if (static_method_with_first_arg_bound)
+			cache_ptr = &method->klass->image->delegate_bound_static_invoke_cache;
+		else
+			cache_ptr = &method->klass->image->delegate_abstract_invoke_cache;
+
 		/* We need to cache the signature+method pair */
 		mono_marshal_lock ();
-		if (!method->klass->image->delegate_abstract_invoke_cache)
-			method->klass->image->delegate_abstract_invoke_cache = g_hash_table_new_full (signature_method_pair_hash, (GEqualFunc)signature_method_pair_equal, (GDestroyNotify)free_signature_method_pair, NULL);
-		cache = method->klass->image->delegate_abstract_invoke_cache;
-		key.sig = sig;
+		if (!*cache_ptr)
+			*cache_ptr = g_hash_table_new_full (signature_method_pair_hash, (GEqualFunc)signature_method_pair_equal, (GDestroyNotify)free_signature_method_pair, NULL);
+		cache = *cache_ptr;
+		key.sig = invoke_sig;
 		key.method = target_method;
 		res = g_hash_table_lookup (cache, &key);
 		mono_marshal_unlock ();
@@ -3817,6 +3903,8 @@ mono_marshal_get_delegate_invoke (MonoMethod *method, MonoDelegate *del)
 
 	static_sig = signature_dup (method->klass->image, sig);
 	static_sig->hasthis = 0;
+	if (!static_method_with_first_arg_bound)
+		invoke_sig = static_sig;
 
 	name = mono_signature_to_name (sig, "invoke");
 	mb = mono_mb_new (get_wrapper_target_class (method->klass->image), name,  MONO_WRAPPER_DELEGATE_INVOKE);
@@ -3868,28 +3956,31 @@ mono_marshal_get_delegate_invoke (MonoMethod *method, MonoDelegate *del)
 	mono_mb_emit_byte (mb, CEE_LDIND_REF);
 	mono_mb_emit_stloc (mb, local_target);
 
-	/* if target != null */
-	mono_mb_emit_ldloc (mb, local_target);
-	pos0 = mono_mb_emit_branch (mb, CEE_BRFALSE);
-	
-	/* then call this->method_ptr nonstatic */
-	if (callvirt) {
-		// FIXME:
-		mono_mb_emit_exception_full (mb, "System", "NotImplementedException", "");
-	} else {
-		mono_mb_emit_ldloc (mb, local_target); 
-		for (i = 0; i < sig->param_count; ++i)
-			mono_mb_emit_ldarg (mb, i + 1);
-		mono_mb_emit_ldarg (mb, 0);
-		mono_mb_emit_ldflda (mb, G_STRUCT_OFFSET (MonoDelegate, method_ptr));
-		mono_mb_emit_byte (mb, CEE_LDIND_I );
-		mono_mb_emit_op (mb, CEE_CALLI, sig);
+	/*static methods with bound first arg can have null target and still be bound*/
+	if (!static_method_with_first_arg_bound) {
+		/* if target != null */
+		mono_mb_emit_ldloc (mb, local_target);
+		pos0 = mono_mb_emit_branch (mb, CEE_BRFALSE);
 
-		mono_mb_emit_byte (mb, CEE_RET);
-	}
+		/* then call this->method_ptr nonstatic */
+		if (callvirt) {
+			// FIXME:
+			mono_mb_emit_exception_full (mb, "System", "NotImplementedException", "");
+		} else {
+			mono_mb_emit_ldloc (mb, local_target);
+			for (i = 0; i < sig->param_count; ++i)
+				mono_mb_emit_ldarg (mb, i + 1);
+			mono_mb_emit_ldarg (mb, 0);
+			mono_mb_emit_ldflda (mb, G_STRUCT_OFFSET (MonoDelegate, method_ptr));
+			mono_mb_emit_byte (mb, CEE_LDIND_I );
+			mono_mb_emit_op (mb, CEE_CALLI, sig);
 
-	/* else [target == null] call this->method_ptr static */
-	mono_mb_patch_branch (mb, pos0);
+			mono_mb_emit_byte (mb, CEE_RET);
+		}
+	
+		/* else [target == null] call this->method_ptr static */
+		mono_mb_patch_branch (mb, pos0);
+	}
 
 	if (callvirt) {
 		if (!closed_over_null) {
@@ -3905,17 +3996,22 @@ mono_marshal_get_delegate_invoke (MonoMethod *method, MonoDelegate *del)
 			mono_mb_emit_op (mb, CEE_CALL, target_method);
 		}
 	} else {
+		if (static_method_with_first_arg_bound) {
+			mono_mb_emit_ldloc (mb, local_target);
+			if (!MONO_TYPE_IS_REFERENCE (invoke_sig->params[0]))
+				mono_mb_emit_op (mb, CEE_UNBOX_ANY, mono_class_from_mono_type (invoke_sig->params[0]));
+		}
 		for (i = 0; i < sig->param_count; ++i)
 			mono_mb_emit_ldarg (mb, i + 1);
 		mono_mb_emit_ldarg (mb, 0);
 		mono_mb_emit_ldflda (mb, G_STRUCT_OFFSET (MonoDelegate, method_ptr));
 		mono_mb_emit_byte (mb, CEE_LDIND_I );
-		mono_mb_emit_op (mb, CEE_CALLI, static_sig);
+		mono_mb_emit_op (mb, CEE_CALLI, invoke_sig);
 	}
 
 	mono_mb_emit_byte (mb, CEE_RET);
 
-	if (callvirt) {
+	if (static_method_with_first_arg_bound || callvirt) {
 		// From mono_mb_create_and_cache
 		mb->skip_visibility = 1;
 		newm = mono_mb_create_method (mb, sig, sig->param_count + 16);
@@ -3926,8 +4022,7 @@ mono_marshal_get_delegate_invoke (MonoMethod *method, MonoDelegate *del)
 		if (!res) {
 			res = newm;
 			new_key = g_new0 (SignatureMethodPair, 1);
-			new_key->sig = sig;
-			new_key->method = target_method;
+			*new_key = key;
 			g_hash_table_insert (cache, new_key, res);
 			mono_marshal_set_wrapper_info (res, new_key);
 			mono_marshal_unlock ();
@@ -3961,7 +4056,7 @@ signature_dup_add_this (MonoMethodSignature *sig, MonoClass *klass)
 	res->hasthis = FALSE;
 	for (i = sig->param_count - 1; i >= 0; i --)
 		res->params [i + 1] = sig->params [i];
-	res->params [0] = &mono_ptr_class_get (&klass->byval_arg)->byval_arg;
+	res->params [0] = klass->valuetype ? &klass->this_arg : &klass->byval_arg;
 
 	return res;
 }
@@ -4119,7 +4214,7 @@ emit_invoke_call (MonoMethodBuilder *mb, MonoMethod *method,
 
 	/* to make it work with our special string constructors */
 	if (!string_dummy) {
-		MONO_GC_REGISTER_ROOT (string_dummy);
+		MONO_GC_REGISTER_ROOT_SINGLE (string_dummy);
 		string_dummy = mono_string_new_wrapper ("dummy");
 	}
 
@@ -4508,6 +4603,11 @@ mono_marshal_get_runtime_invoke (MonoMethod *method, gboolean virtual)
 	csig->params [1] = &mono_defaults.int_class->byval_arg;
 	csig->params [2] = &mono_defaults.int_class->byval_arg;
 	csig->params [3] = &mono_defaults.int_class->byval_arg;
+	csig->pinvoke = 1;
+#if TARGET_WIN32
+	/* This is called from runtime code so it has to be cdecl */
+	csig->call_convention = MONO_CALL_C;
+#endif
 
 	name = mono_signature_to_name (callsig, virtual ? "runtime_invoke_virtual" : "runtime_invoke");
 	mb = mono_mb_new (target_klass, name,  MONO_WRAPPER_RUNTIME_INVOKE);
@@ -5290,7 +5390,10 @@ emit_marshal_custom (EmitMarshalContext *m, int argnum, MonoType *t,
 
 	if (!ICustomMarshaler) {
 		ICustomMarshaler = mono_class_from_name (mono_defaults.corlib, "System.Runtime.InteropServices", "ICustomMarshaler");
-		g_assert (ICustomMarshaler);
+		if (!ICustomMarshaler) {
+			exception_msg = g_strdup ("Current profile doesn't support ICustomMarshaler");
+			goto handle_exception;
+		}
 
 		cleanup_native = mono_class_get_method_from_name (ICustomMarshaler, "CleanUpNativeData", 1);
 		g_assert (cleanup_native);
@@ -5322,6 +5425,7 @@ emit_marshal_custom (EmitMarshalContext *m, int argnum, MonoType *t,
 	if (!get_instance)
 		exception_msg = g_strdup_printf ("Custom marshaler '%s' does not implement a static GetInstance method that takes a single string parameter and returns an ICustomMarshaler.", mklass->name);
 
+handle_exception:
 	/* Throw exception and emit compensation code if neccesary */
 	if (exception_msg) {
 		switch (action) {
@@ -5946,7 +6050,27 @@ emit_marshal_string (EmitMarshalContext *m, int argnum, MonoType *t,
 			break;
 		}
 
-		if (t->byref && (t->attrs & PARAM_ATTRIBUTE_OUT)) {
+		if (encoding == MONO_NATIVE_VBBYREFSTR) {
+			static MonoMethod *m;
+
+			if (!m) {
+				m = mono_class_get_method_from_name_flags (mono_defaults.string_class, "get_Length", -1, 0);
+				g_assert (m);
+			}
+
+			/* 
+			 * Have to allocate a new string with the same length as the original, and
+			 * copy the contents of the buffer pointed to by CONV_ARG into it.
+			 */
+			g_assert (t->byref);
+			mono_mb_emit_ldarg (mb, argnum);
+			mono_mb_emit_ldloc (mb, conv_arg);
+			mono_mb_emit_ldarg (mb, argnum);
+			mono_mb_emit_byte (mb, CEE_LDIND_I);				
+			mono_mb_emit_managed_call (mb, m, NULL);
+			mono_mb_emit_icall (mb, mono_string_new_len_wrapper);
+			mono_mb_emit_byte (mb, CEE_STIND_REF);
+		} else if (t->byref && (t->attrs & PARAM_ATTRIBUTE_OUT)) {
 			mono_mb_emit_ldarg (mb, argnum);
 			mono_mb_emit_ldloc (mb, conv_arg);
 			mono_mb_emit_icall (mb, conv_to_icall (conv));
@@ -5963,7 +6087,7 @@ emit_marshal_string (EmitMarshalContext *m, int argnum, MonoType *t,
 		break;
 
 	case MARSHAL_ACTION_PUSH:
-		if (t->byref)
+		if (t->byref && encoding != MONO_NATIVE_VBBYREFSTR)
 			mono_mb_emit_ldloc_addr (mb, conv_arg);
 		else
 			mono_mb_emit_ldloc (mb, conv_arg);
@@ -6152,7 +6276,7 @@ emit_marshal_safehandle (EmitMarshalContext *m, int argnum, MonoType *t,
 		
 		if (t->data.klass->flags & TYPE_ATTRIBUTE_ABSTRACT){
 			mono_mb_emit_byte (mb, CEE_POP);
-			mono_mb_emit_exception_marshal_directive (mb, "Returned SafeHandles should not be abstract");
+			mono_mb_emit_exception_marshal_directive (mb, g_strdup ("Returned SafeHandles should not be abstract"));
 			break;
 		}
 
@@ -6212,8 +6336,8 @@ emit_marshal_handleref (EmitMarshalContext *m, int argnum, MonoType *t,
 		*conv_arg_type = intptr_type;
 
 		if (t->byref){
-			mono_mb_emit_exception_marshal_directive (mb,
-				"HandleRefs can not be returned from unmanaged code (or passed by ref)");
+			char *msg = g_strdup ("HandleRefs can not be returned from unmanaged code (or passed by ref)");
+			mono_mb_emit_exception_marshal_directive (mb, msg);
 			break;
 		} 
 		mono_mb_emit_ldarg_addr (mb, argnum);
@@ -6234,8 +6358,8 @@ emit_marshal_handleref (EmitMarshalContext *m, int argnum, MonoType *t,
 	}
 		
 	case MARSHAL_ACTION_CONV_RESULT: {
-		mono_mb_emit_exception_marshal_directive (mb,
-			"HandleRefs can not be returned from unmanaged code (or passed by ref)");
+		char *msg = g_strdup ("HandleRefs can not be returned from unmanaged code (or passed by ref)");
+		mono_mb_emit_exception_marshal_directive (mb, msg);
 		break;
 	}
 		
@@ -6851,6 +6975,24 @@ emit_marshal_variant (EmitMarshalContext *m, int argnum, MonoType *t,
 	return conv_arg;
 }
 
+static gboolean
+mono_pinvoke_is_unicode (MonoMethodPInvoke *piinfo)
+{
+	switch (piinfo->piflags & PINVOKE_ATTRIBUTE_CHAR_SET_MASK) {
+	case PINVOKE_ATTRIBUTE_CHAR_SET_ANSI:
+		return FALSE;
+	case PINVOKE_ATTRIBUTE_CHAR_SET_UNICODE:
+		return TRUE;
+	case PINVOKE_ATTRIBUTE_CHAR_SET_AUTO:
+	default:
+#ifdef TARGET_WIN32
+		return TRUE;
+#else
+		return FALSE;
+#endif
+	}
+}
+
 static int
 emit_marshal_array (EmitMarshalContext *m, int argnum, MonoType *t,
 					MonoMarshalSpec *spec, 
@@ -6921,6 +7063,8 @@ emit_marshal_array (EmitMarshalContext *m, int argnum, MonoType *t,
 
 			if (is_string)
 				esize = sizeof (gpointer);
+			else if (eklass == mono_defaults.char_class) /*can't call mono_marshal_type_size since it causes all sorts of asserts*/
+				esize = mono_pinvoke_is_unicode (m->piinfo) ? 2 : 1;
 			else
 				esize = mono_class_native_size (eklass, NULL);
 
@@ -6973,7 +7117,7 @@ emit_marshal_array (EmitMarshalContext *m, int argnum, MonoType *t,
 				mono_mb_emit_stloc (mb, 1);
 
 				/* emit valuetype conversion code */
-				emit_struct_conv (mb, eklass, FALSE);
+				emit_struct_conv_full (mb, eklass, FALSE, eklass == mono_defaults.char_class ? encoding : -1);
 			}
 
 			mono_mb_emit_add_to_local (mb, index_var, 1);
@@ -7010,6 +7154,8 @@ emit_marshal_array (EmitMarshalContext *m, int argnum, MonoType *t,
 			eklass = klass->element_class;
 			if ((eklass == mono_defaults.stringbuilder_class) || (eklass == mono_defaults.string_class))
 				esize = sizeof (gpointer);
+			else if (eklass == mono_defaults.char_class)
+				esize = mono_pinvoke_is_unicode (m->piinfo) ? 2 : 1;
 			else
 				esize = mono_class_native_size (eklass, NULL);
 			src_ptr = mono_mb_add_local (mb, &mono_defaults.int_class->byval_arg);
@@ -7089,7 +7235,7 @@ emit_marshal_array (EmitMarshalContext *m, int argnum, MonoType *t,
 					mono_mb_emit_stloc (mb, 1);
 
 					/* emit valuetype conversion code */
-					emit_struct_conv (mb, eklass, TRUE);
+					emit_struct_conv_full (mb, eklass, TRUE, eklass == mono_defaults.char_class ? encoding : -1);
 				}
 
 				if (need_free) {
@@ -7453,6 +7599,8 @@ emit_marshal_array (EmitMarshalContext *m, int argnum, MonoType *t,
 
 		if (is_string)
 			esize = sizeof (gpointer);
+		else if (eklass == mono_defaults.char_class)
+			esize = mono_pinvoke_is_unicode (m->piinfo) ? 2 : 1;
 		else
 			esize = mono_class_native_size (eklass, NULL);
 
@@ -8786,6 +8934,203 @@ type_from_handle (MonoType *handle)
 }
 
 /*
+ * This does the equivalent of mono_object_castclass_with_cache.
+ */
+MonoMethod *
+mono_marshal_get_castclass_with_cache (void)
+{
+	static MonoMethod *cached;
+	MonoMethod *res;
+	MonoMethodBuilder *mb;
+	MonoMethodSignature *sig;
+	int return_null_pos, cache_miss_pos, invalid_cast_pos;
+
+	if (cached)
+		return cached;
+
+	mb = mono_mb_new (mono_defaults.object_class, "__castclass_with_cache", MONO_WRAPPER_CASTCLASS);
+	sig = mono_metadata_signature_alloc (mono_defaults.corlib, 3);
+	sig->params [0] = &mono_defaults.object_class->byval_arg;
+	sig->params [1] = &mono_defaults.int_class->byval_arg;
+	sig->params [2] = &mono_defaults.int_class->byval_arg;
+	sig->ret = &mono_defaults.object_class->byval_arg;
+	sig->pinvoke = 0;
+
+	/* allocate local 0 (pointer) obj_vtable */
+	mono_mb_add_local (mb, &mono_defaults.int_class->byval_arg);
+
+	/*if (!obj)*/
+	mono_mb_emit_ldarg (mb, 0);
+	return_null_pos = mono_mb_emit_branch (mb, CEE_BRFALSE);
+
+	/*obj_vtable = obj->vtable;*/
+	mono_mb_emit_ldarg (mb, 0);
+	mono_mb_emit_ldflda (mb, G_STRUCT_OFFSET (MonoObject, vtable));
+	mono_mb_emit_byte (mb, CEE_LDIND_I);
+	mono_mb_emit_stloc (mb, 0);
+
+	/* *cache */
+	mono_mb_emit_ldarg (mb, 2);
+	mono_mb_emit_byte (mb, CEE_LDIND_I);
+	mono_mb_emit_ldloc (mb, 0);
+
+	/*if (*cache == obj_vtable)*/
+	cache_miss_pos = mono_mb_emit_branch (mb, CEE_BNE_UN);
+
+	/*return obj;*/
+	mono_mb_emit_ldarg (mb, 0);
+	mono_mb_emit_byte (mb, CEE_RET);
+
+	mono_mb_patch_branch (mb, cache_miss_pos);
+	/*if (mono_object_isinst (obj, klass)) */
+	mono_mb_emit_ldarg (mb, 0);
+	mono_mb_emit_ldarg (mb, 1);
+	mono_mb_emit_icall (mb, mono_object_isinst);
+	invalid_cast_pos = mono_mb_emit_branch (mb, CEE_BRFALSE);
+
+	/**cache = obj_vtable;*/
+	mono_mb_emit_ldarg (mb, 2);
+	mono_mb_emit_ldloc (mb, 0);
+	mono_mb_emit_byte (mb, CEE_STIND_I);
+
+	/*return obj;*/
+	mono_mb_emit_ldarg (mb, 0);
+	mono_mb_emit_byte (mb, CEE_RET);
+
+	/*fails*/
+	mono_mb_patch_branch (mb, invalid_cast_pos);
+	mono_mb_emit_exception (mb, "InvalidCastException", NULL);
+
+	/*return null*/
+	mono_mb_patch_branch (mb, return_null_pos);
+	mono_mb_emit_byte (mb, CEE_LDNULL);
+	mono_mb_emit_byte (mb, CEE_RET);
+
+	res = mono_mb_create_method (mb, sig, 8);
+	if (InterlockedCompareExchangePointer ((volatile gpointer *)&cached, res, NULL)) {
+		mono_free_method (res);
+		mono_metadata_free_method_signature (sig);
+	}
+	mono_mb_free (mb);
+
+	return cached;
+}
+
+/*
+ * This does the equivalent of mono_object_isinst_with_cache.
+ */
+MonoMethod *
+mono_marshal_get_isinst_with_cache (void)
+{
+	static MonoMethod *cached;
+	MonoMethod *res;
+	MonoMethodBuilder *mb;
+	MonoMethodSignature *sig;
+	int return_null_pos, cache_miss_pos, cache_hit_pos, not_an_instance_pos, negative_cache_hit_pos;
+
+	if (cached)
+		return cached;
+
+	mb = mono_mb_new (mono_defaults.object_class, "__isisnt_with_cache", MONO_WRAPPER_CASTCLASS);
+	sig = mono_metadata_signature_alloc (mono_defaults.corlib, 3);
+	sig->params [0] = &mono_defaults.object_class->byval_arg;
+	sig->params [1] = &mono_defaults.int_class->byval_arg;
+	sig->params [2] = &mono_defaults.int_class->byval_arg;
+	sig->ret = &mono_defaults.object_class->byval_arg;
+	sig->pinvoke = 0;
+
+	/* allocate local 0 (pointer) obj_vtable */
+	mono_mb_add_local (mb, &mono_defaults.int_class->byval_arg);
+	/* allocate local 1 (pointer) cached_vtable */
+	mono_mb_add_local (mb, &mono_defaults.int_class->byval_arg);
+
+	/*if (!obj)*/
+	mono_mb_emit_ldarg (mb, 0);
+	return_null_pos = mono_mb_emit_branch (mb, CEE_BRFALSE);
+
+	/*obj_vtable = obj->vtable;*/
+	mono_mb_emit_ldarg (mb, 0);
+	mono_mb_emit_ldflda (mb, G_STRUCT_OFFSET (MonoObject, vtable));
+	mono_mb_emit_byte (mb, CEE_LDIND_I);
+	mono_mb_emit_stloc (mb, 0);
+
+	/* cached_vtable = *cache*/
+	mono_mb_emit_ldarg (mb, 2);
+	mono_mb_emit_byte (mb, CEE_LDIND_I);
+	mono_mb_emit_stloc (mb, 1);
+
+	mono_mb_emit_ldloc (mb, 1);
+	mono_mb_emit_byte (mb, CEE_LDC_I4);
+	mono_mb_emit_i4 (mb, ~0x1);
+	mono_mb_emit_byte (mb, CEE_CONV_U);
+	mono_mb_emit_byte (mb, CEE_AND);
+	mono_mb_emit_ldloc (mb, 0);
+	/*if ((cached_vtable & ~0x1)== obj_vtable)*/
+	cache_miss_pos = mono_mb_emit_branch (mb, CEE_BNE_UN);
+
+	/*return (cached_vtable & 0x1) ? NULL : obj;*/
+	mono_mb_emit_ldloc (mb, 1);
+	mono_mb_emit_byte(mb, CEE_LDC_I4_1);
+	mono_mb_emit_byte (mb, CEE_CONV_U);
+	mono_mb_emit_byte (mb, CEE_AND);
+	negative_cache_hit_pos = mono_mb_emit_branch (mb, CEE_BRTRUE);
+
+	/*obj*/
+	mono_mb_emit_ldarg (mb, 0);
+	cache_hit_pos = mono_mb_emit_branch (mb, CEE_BR);
+
+	/*NULL*/
+	mono_mb_patch_branch (mb, negative_cache_hit_pos);
+	mono_mb_emit_byte (mb, CEE_LDNULL);
+
+	mono_mb_patch_branch (mb, cache_hit_pos);
+	mono_mb_emit_byte (mb, CEE_RET);
+
+	mono_mb_patch_branch (mb, cache_miss_pos);
+	/*if (mono_object_isinst (obj, klass)) */
+	mono_mb_emit_ldarg (mb, 0);
+	mono_mb_emit_ldarg (mb, 1);
+	mono_mb_emit_icall (mb, mono_object_isinst);
+	not_an_instance_pos = mono_mb_emit_branch (mb, CEE_BRFALSE);
+
+	/**cache = obj_vtable;*/
+	mono_mb_emit_ldarg (mb, 2);
+	mono_mb_emit_ldloc (mb, 0);
+	mono_mb_emit_byte (mb, CEE_STIND_I);
+
+	/*return obj;*/
+	mono_mb_emit_ldarg (mb, 0);
+	mono_mb_emit_byte (mb, CEE_RET);
+
+	/*not an instance*/
+	mono_mb_patch_branch (mb, not_an_instance_pos);
+	/* *cache = (gpointer)(obj_vtable | 0x1);*/
+	mono_mb_emit_ldarg (mb, 2);
+	/*obj_vtable | 0x1*/
+	mono_mb_emit_ldloc (mb, 0);
+	mono_mb_emit_byte(mb, CEE_LDC_I4_1);
+	mono_mb_emit_byte (mb, CEE_CONV_U);
+	mono_mb_emit_byte (mb, CEE_OR);
+
+	/* *cache = ... */
+	mono_mb_emit_byte (mb, CEE_STIND_I);
+
+	/*return null*/
+	mono_mb_patch_branch (mb, return_null_pos);
+	mono_mb_emit_byte (mb, CEE_LDNULL);
+	mono_mb_emit_byte (mb, CEE_RET);
+
+	res = mono_mb_create_method (mb, sig, 8);
+	if (InterlockedCompareExchangePointer ((volatile gpointer *)&cached, res, NULL)) {
+		mono_free_method (res);
+		mono_metadata_free_method_signature (sig);
+	}
+	mono_mb_free (mb);
+
+	return cached;
+}
+
+/*
  * mono_marshal_get_isinst:
  * @klass: the type of the field
  *
@@ -9334,6 +9679,465 @@ mono_marshal_get_unbox_wrapper (MonoMethod *method)
 	return res;	
 }
 
+enum {
+	STELEMREF_OBJECT, /*no check at all*/
+	STELEMREF_SEALED_CLASS, /*check vtable->klass->element_type */
+	STELEMREF_CLASS, /*only the klass->parents check*/
+	STELEMREF_INTERFACE, /*interfaces without variant generic arguments. */
+	STELEMREF_COMPLEX, /*arrays, MBR or types with variant generic args - go straight to icalls*/
+	STELEMREF_KIND_COUNT
+};
+
+static const char *strelemref_wrapper_name[] = {
+	"object", "sealed_class", "class", "interface", "complex"
+};
+
+static gboolean
+is_monomorphic_array (MonoClass *klass)
+{
+	MonoClass *element_class;
+	if (klass->rank != 1)
+		return FALSE;
+
+	element_class = klass->element_class;
+	return (element_class->flags & TYPE_ATTRIBUTE_SEALED) || element_class->valuetype;
+}
+
+static int
+get_virtual_stelemref_kind (MonoClass *element_class)
+{
+	if (element_class == mono_defaults.object_class)
+		return STELEMREF_OBJECT;
+	if (is_monomorphic_array (element_class))
+		return STELEMREF_SEALED_CLASS;
+	if (MONO_CLASS_IS_INTERFACE (element_class) && !mono_class_has_variant_generic_params (element_class))
+		return STELEMREF_INTERFACE;
+	/*Arrays are sealed but are covariant on their element type, We can't use any of the fast paths.*/
+	if (element_class->marshalbyref || element_class->rank || mono_class_has_variant_generic_params (element_class))
+		return STELEMREF_COMPLEX;
+	if (element_class->flags & TYPE_ATTRIBUTE_SEALED)
+		return STELEMREF_SEALED_CLASS;
+	return STELEMREF_CLASS;
+}
+
+static void
+load_array_element_address (MonoMethodBuilder *mb)
+{
+	mono_mb_emit_ldarg (mb, 0);
+	mono_mb_emit_ldarg (mb, 1);
+	mono_mb_emit_op (mb, CEE_LDELEMA, mono_defaults.object_class);
+}
+
+static void
+load_array_class (MonoMethodBuilder *mb, int aklass)
+{
+	mono_mb_emit_ldarg (mb, 0);
+	mono_mb_emit_ldflda (mb, G_STRUCT_OFFSET (MonoObject, vtable));
+	mono_mb_emit_byte (mb, CEE_LDIND_I);
+	mono_mb_emit_ldflda (mb, G_STRUCT_OFFSET (MonoVTable, klass));
+	mono_mb_emit_byte (mb, CEE_LDIND_I);
+	mono_mb_emit_ldflda (mb, G_STRUCT_OFFSET (MonoClass, element_class));
+	mono_mb_emit_byte (mb, CEE_LDIND_I);
+	mono_mb_emit_stloc (mb, aklass);
+}
+
+static void
+load_value_class (MonoMethodBuilder *mb, int vklass)
+{
+	mono_mb_emit_ldarg (mb, 2);
+	mono_mb_emit_ldflda (mb, G_STRUCT_OFFSET (MonoObject, vtable));
+	mono_mb_emit_byte (mb, CEE_LDIND_I);
+	mono_mb_emit_ldflda (mb, G_STRUCT_OFFSET (MonoVTable, klass));
+	mono_mb_emit_byte (mb, CEE_LDIND_I);
+	mono_mb_emit_stloc (mb, vklass);
+}
+
+#if 0
+static void
+record_slot_vstore (MonoObject *array, size_t index, MonoObject *value)
+{
+	char *name = mono_type_get_full_name (array->vtable->klass->element_class);
+	printf ("slow vstore of %s\n", name);
+	g_free (name);
+}
+#endif
+
+/*
+ * The wrapper info for the wrapper contains the wrapper 'kind' + 1.
+ *
+ * TODO:
+ *	- Separate simple interfaces from variant interfaces or mbr types. This way we can avoid the icall for them.
+ *	- Emit a (new) mono bytecode that produces OP_COND_EXC_NE_UN to raise ArrayTypeMismatch
+ *	- Maybe mve some MonoClass field into the vtable to reduce the number of loads
+ *	- Add a case for arrays of arrays.
+ */
+MonoMethod*
+mono_marshal_get_virtual_stelemref (MonoClass *array_class)
+{
+	static MonoMethod *cached_methods [STELEMREF_KIND_COUNT] = { NULL }; /*object iface sealed regular*/
+	static MonoMethodSignature *signature;
+	MonoMethodBuilder *mb;
+	MonoMethod *res;
+	int kind;
+	char *name;
+
+	guint32 b1, b2, b3;
+	int aklass, vklass, vtable, uiid;
+	int array_slot_addr;
+
+	g_assert (array_class->rank == 1);
+	kind = get_virtual_stelemref_kind (array_class->element_class);
+
+	if (cached_methods [kind])
+		return cached_methods [kind];
+
+	name = g_strdup_printf ("virt_stelemref_%s", strelemref_wrapper_name [kind]);
+	mb = mono_mb_new (mono_defaults.object_class, name, MONO_WRAPPER_STELEMREF);
+	g_free (name);
+
+	if (!signature) {
+		MonoMethodSignature *sig = mono_metadata_signature_alloc (mono_defaults.corlib, 2);
+
+		/* void this::stelemref (size_t idx, void* value) */
+		sig->ret = &mono_defaults.void_class->byval_arg;
+		sig->hasthis = TRUE;
+		sig->params [0] = &mono_defaults.int_class->byval_arg; /* this is a natural sized int */
+		sig->params [1] = &mono_defaults.object_class->byval_arg;
+		signature = sig;
+	}
+
+	/*For now simply call plain old stelemref*/
+	switch (kind) {
+	case STELEMREF_OBJECT:
+		/* ldelema (implicit bound check) */
+		load_array_element_address (mb);
+		/* do_store */
+		mono_mb_emit_ldarg (mb, 2);
+		mono_mb_emit_byte (mb, CEE_STIND_REF);
+		mono_mb_emit_byte (mb, CEE_RET);
+		break;
+
+	case STELEMREF_COMPLEX:
+		/*
+		<ldelema (bound check)>
+		if (!value)
+			goto store;
+		if (!mono_object_isinst (value, aklass))
+			goto do_exception;
+
+		 do_store:
+			 *array_slot_addr = value;
+
+		do_exception:
+			throw new ArrayTypeMismatchException ();
+		*/
+
+		aklass = mono_mb_add_local (mb, &mono_defaults.int_class->byval_arg);
+		array_slot_addr = mono_mb_add_local (mb, &mono_defaults.object_class->this_arg);
+
+#if 0
+		{
+			/*Use this to debug/record stores that are going thru the slow path*/
+			MonoMethodSignature *csig;
+			csig = mono_metadata_signature_alloc (mono_defaults.corlib, 3);
+			csig->ret = &mono_defaults.void_class->byval_arg;
+			csig->params [0] = &mono_defaults.object_class->byval_arg;
+			csig->params [1] = &mono_defaults.int_class->byval_arg; /* this is a natural sized int */
+			csig->params [2] = &mono_defaults.object_class->byval_arg;
+			mono_mb_emit_ldarg (mb, 0);
+			mono_mb_emit_ldarg (mb, 1);
+			mono_mb_emit_ldarg (mb, 2);
+			mono_mb_emit_native_call (mb, csig, record_slot_vstore);
+		}
+#endif
+
+		/* ldelema (implicit bound check) */
+		load_array_element_address (mb);
+		mono_mb_emit_stloc (mb, array_slot_addr);
+
+		/* if (!value) goto do_store */
+		mono_mb_emit_ldarg (mb, 2);
+		b1 = mono_mb_emit_branch (mb, CEE_BRFALSE);
+
+		/* aklass = array->vtable->klass->element_class */
+		load_array_class (mb, aklass);
+
+		/*if (mono_object_isinst (value, aklass)) */
+		mono_mb_emit_ldarg (mb, 2);
+		mono_mb_emit_ldloc (mb, aklass);
+		mono_mb_emit_icall (mb, mono_object_isinst);
+		b2 = mono_mb_emit_branch (mb, CEE_BRFALSE);
+
+		/* do_store: */
+		mono_mb_patch_branch (mb, b1);
+		mono_mb_emit_ldloc (mb, array_slot_addr);
+		mono_mb_emit_ldarg (mb, 2);
+		mono_mb_emit_byte (mb, CEE_STIND_REF);
+		mono_mb_emit_byte (mb, CEE_RET);
+
+		/* do_exception: */
+		mono_mb_patch_branch (mb, b2);
+
+		mono_mb_emit_exception (mb, "ArrayTypeMismatchException", NULL);
+		break;
+
+	case STELEMREF_SEALED_CLASS:
+		/*
+		<ldelema (bound check)>
+		if (!value)
+			goto store;
+
+		aklass = array->vtable->klass->element_class;
+		vklass = value->vtable->klass;
+
+		if (vklass != aklass)
+			goto do_exception;
+
+		do_store:
+			 *array_slot_addr = value;
+
+		do_exception:
+			throw new ArrayTypeMismatchException ();
+		*/
+		aklass = mono_mb_add_local (mb, &mono_defaults.int_class->byval_arg);
+		vklass = mono_mb_add_local (mb, &mono_defaults.int_class->byval_arg);
+		array_slot_addr = mono_mb_add_local (mb, &mono_defaults.object_class->this_arg);
+
+
+		/* ldelema (implicit bound check) */
+		load_array_element_address (mb);
+		mono_mb_emit_stloc (mb, array_slot_addr);
+
+		/* if (!value) goto do_store */
+		mono_mb_emit_ldarg (mb, 2);
+		b1 = mono_mb_emit_branch (mb, CEE_BRFALSE);
+
+		/* aklass = array->vtable->klass->element_class */
+		load_array_class (mb, aklass);
+
+		/* vklass = value->vtable->klass */
+		load_value_class (mb, vklass);
+
+		/*if (vklass != aklass) goto do_exception; */
+		mono_mb_emit_ldloc (mb, aklass);
+		mono_mb_emit_ldloc (mb, vklass);
+		b2 = mono_mb_emit_branch (mb, CEE_BNE_UN);
+
+		/* do_store: */
+		mono_mb_patch_branch (mb, b1);
+		mono_mb_emit_ldloc (mb, array_slot_addr);
+		mono_mb_emit_ldarg (mb, 2);
+		mono_mb_emit_byte (mb, CEE_STIND_REF);
+		mono_mb_emit_byte (mb, CEE_RET);
+
+		/* do_exception: */
+		mono_mb_patch_branch (mb, b2);
+		mono_mb_emit_exception (mb, "ArrayTypeMismatchException", NULL);
+		break;
+
+	case STELEMREF_CLASS:
+		/*
+		the method:
+		<ldelema (bound check)>
+		if (!value)
+			goto do_store;
+
+		aklass = array->vtable->klass->element_class;
+		vklass = value->vtable->klass;
+
+		if (vklass->idepth < aklass->idepth)
+			goto do_exception;
+
+		if (vklass->supertypes [aklass->idepth - 1] != aklass)
+			goto do_exception;
+
+		do_store:
+			*array_slot_addr = value;
+			return;
+
+		long:
+			throw new ArrayTypeMismatchException ();
+		*/
+		aklass = mono_mb_add_local (mb, &mono_defaults.int_class->byval_arg);
+		vklass = mono_mb_add_local (mb, &mono_defaults.int_class->byval_arg);
+		array_slot_addr = mono_mb_add_local (mb, &mono_defaults.object_class->this_arg);
+
+		/* ldelema (implicit bound check) */
+		load_array_element_address (mb);
+		mono_mb_emit_stloc (mb, array_slot_addr);
+
+		/* if (!value) goto do_store */
+		mono_mb_emit_ldarg (mb, 2);
+		b1 = mono_mb_emit_branch (mb, CEE_BRFALSE);
+
+		/* aklass = array->vtable->klass->element_class */
+		load_array_class (mb, aklass);
+
+		/* vklass = value->vtable->klass */
+		load_value_class (mb, vklass);
+
+		/*if (mono_object_isinst (value, aklass)) */
+		mono_mb_emit_ldarg (mb, 2);
+		mono_mb_emit_ldloc (mb, aklass);
+		mono_mb_emit_icall (mb, mono_object_isinst);
+		b2 = mono_mb_emit_branch (mb, CEE_BRFALSE);
+
+		/* if (vklass->idepth < aklass->idepth) goto failue */
+		mono_mb_emit_ldloc (mb, vklass);
+		mono_mb_emit_ldflda (mb, G_STRUCT_OFFSET (MonoClass, idepth));
+		mono_mb_emit_byte (mb, CEE_LDIND_U2);
+
+		mono_mb_emit_ldloc (mb, aklass);
+		mono_mb_emit_ldflda (mb, G_STRUCT_OFFSET (MonoClass, idepth));
+		mono_mb_emit_byte (mb, CEE_LDIND_U2);
+
+		b2 = mono_mb_emit_branch (mb, CEE_BLT_UN);
+
+		/* if (vklass->supertypes [aklass->idepth - 1] != aklass) goto failure */
+		mono_mb_emit_ldloc (mb, vklass);
+		mono_mb_emit_ldflda (mb, G_STRUCT_OFFSET (MonoClass, supertypes));
+		mono_mb_emit_byte (mb, CEE_LDIND_I);
+
+		mono_mb_emit_ldloc (mb, aklass);
+		mono_mb_emit_ldflda (mb, G_STRUCT_OFFSET (MonoClass, idepth));
+		mono_mb_emit_byte (mb, CEE_LDIND_U2);
+		mono_mb_emit_icon (mb, 1);
+		mono_mb_emit_byte (mb, CEE_SUB);
+		mono_mb_emit_icon (mb, sizeof (void*));
+		mono_mb_emit_byte (mb, CEE_MUL);
+		mono_mb_emit_byte (mb, CEE_ADD);
+		mono_mb_emit_byte (mb, CEE_LDIND_I);
+
+		mono_mb_emit_ldloc (mb, aklass);
+		b3 = mono_mb_emit_branch (mb, CEE_BNE_UN);
+
+		/* do_store: */
+		mono_mb_patch_branch (mb, b1);
+		mono_mb_emit_ldloc (mb, array_slot_addr);
+		mono_mb_emit_ldarg (mb, 2);
+		mono_mb_emit_byte (mb, CEE_STIND_REF);
+		mono_mb_emit_byte (mb, CEE_RET);
+
+		/* do_exception: */
+		mono_mb_patch_branch (mb, b2);
+		mono_mb_patch_branch (mb, b3);
+
+		mono_mb_emit_exception (mb, "ArrayTypeMismatchException", NULL);
+		break;
+
+	case STELEMREF_INTERFACE:
+		/*Mono *klass;
+		MonoVTable *vt;
+		unsigned uiid;
+		if (value == NULL)
+			goto store;
+
+		klass = array->obj.vtable->klass->element_class;
+		vt = value->vtable;
+		uiid = klass->interface_id;
+		if (uiid > vt->max_interface_id)
+			goto exception;
+		if (!(vt->interface_bitmap [(uiid) >> 3] & (1 << ((uiid)&7))))
+			goto exception;
+		store:
+			mono_array_setref (array, index, value);
+			return;
+		exception:
+			mono_raise_exception (mono_get_exception_array_type_mismatch ());*/
+
+		array_slot_addr = mono_mb_add_local (mb, &mono_defaults.object_class->this_arg);
+		aklass = mono_mb_add_local (mb, &mono_defaults.int_class->byval_arg);
+		vtable = mono_mb_add_local (mb, &mono_defaults.int_class->byval_arg);
+		uiid = mono_mb_add_local (mb, &mono_defaults.int32_class->byval_arg);
+
+		/* ldelema (implicit bound check) */
+		load_array_element_address (mb);
+		mono_mb_emit_stloc (mb, array_slot_addr);
+
+		/* if (!value) goto do_store */
+		mono_mb_emit_ldarg (mb, 2);
+		b1 = mono_mb_emit_branch (mb, CEE_BRFALSE);
+
+		/* klass = array->vtable->klass->element_class */
+		load_array_class (mb, aklass);
+
+		/* vt = value->vtable */
+		mono_mb_emit_ldarg (mb, 2);
+		mono_mb_emit_ldflda (mb, G_STRUCT_OFFSET (MonoObject, vtable));
+		mono_mb_emit_byte (mb, CEE_LDIND_I);
+		mono_mb_emit_stloc (mb, vtable);
+
+		/* uiid = klass->interface_id; */
+		mono_mb_emit_ldloc (mb, aklass);
+		mono_mb_emit_ldflda (mb, G_STRUCT_OFFSET (MonoClass, interface_id));
+		mono_mb_emit_byte (mb, CEE_LDIND_U2);
+		mono_mb_emit_stloc (mb, uiid);
+
+		/*if (uiid > vt->max_interface_id)*/
+		mono_mb_emit_ldloc (mb, uiid);
+		mono_mb_emit_ldloc (mb, vtable);
+		mono_mb_emit_ldflda (mb, G_STRUCT_OFFSET (MonoVTable, max_interface_id));
+		mono_mb_emit_byte (mb, CEE_LDIND_U2);
+		b2 = mono_mb_emit_branch (mb, CEE_BGT_UN);
+
+		/* if (!(vt->interface_bitmap [(uiid) >> 3] & (1 << ((uiid)&7)))) */
+
+		/*vt->interface_bitmap*/
+		mono_mb_emit_ldloc (mb, vtable);
+		mono_mb_emit_ldflda (mb, G_STRUCT_OFFSET (MonoVTable, interface_bitmap));
+		mono_mb_emit_byte (mb, CEE_LDIND_I);
+
+		/*uiid >> 3*/
+		mono_mb_emit_ldloc (mb, uiid);
+		mono_mb_emit_icon (mb, 3);
+		mono_mb_emit_byte (mb, CEE_SHR_UN);
+
+		/*vt->interface_bitmap [(uiid) >> 3]*/
+		mono_mb_emit_byte (mb, CEE_ADD); /*interface_bitmap is a guint8 array*/
+		mono_mb_emit_byte (mb, CEE_LDIND_U1);
+
+		/*(1 << ((uiid)&7)))*/
+		mono_mb_emit_icon (mb, 1);
+		mono_mb_emit_ldloc (mb, uiid);
+		mono_mb_emit_icon (mb, 7);
+		mono_mb_emit_byte (mb, CEE_AND);
+		mono_mb_emit_byte (mb, CEE_SHL);
+
+		/*bitwise and the whole thing*/
+		mono_mb_emit_byte (mb, CEE_AND);
+		b3 = mono_mb_emit_branch (mb, CEE_BRFALSE);
+
+		/* do_store: */
+		mono_mb_patch_branch (mb, b1);
+		mono_mb_emit_ldloc (mb, array_slot_addr);
+		mono_mb_emit_ldarg (mb, 2);
+		mono_mb_emit_byte (mb, CEE_STIND_REF);
+		mono_mb_emit_byte (mb, CEE_RET);
+
+		/* do_exception: */
+		mono_mb_patch_branch (mb, b2);
+		mono_mb_patch_branch (mb, b3);
+		mono_mb_emit_exception (mb, "ArrayTypeMismatchException", NULL);
+		break;
+
+	default:
+		mono_mb_emit_ldarg (mb, 0);
+		mono_mb_emit_ldarg (mb, 1);
+		mono_mb_emit_ldarg (mb, 2);
+		mono_mb_emit_managed_call (mb, mono_marshal_get_stelemref (), NULL);
+		mono_mb_emit_byte (mb, CEE_RET);
+		g_assert (0);
+	}
+
+	res = mono_mb_create_method (mb, signature, 4);
+	res->flags |= METHOD_ATTRIBUTE_VIRTUAL;
+	mono_marshal_set_wrapper_info (res, GUINT_TO_POINTER (kind + 1));
+	cached_methods [kind] = res;
+
+	mono_mb_free (mb);
+	return res;
+}
+
 MonoMethod*
 mono_marshal_get_stelemref ()
 {
@@ -10386,7 +11190,7 @@ MonoMarshalType *
 mono_marshal_load_type_info (MonoClass* klass)
 {
 	int j, count = 0;
-	guint32 native_size = 0, min_align = 1;
+	guint32 native_size = 0, min_align = 1, packing;
 	MonoMarshalType *info;
 	MonoClassField* field;
 	gpointer iter;
@@ -10443,6 +11247,7 @@ mono_marshal_load_type_info (MonoClass* klass)
 		info->native_size = parent_size;
 	}
 
+	packing = klass->packing_size ? klass->packing_size : 8;
 	iter = NULL;
 	j = 0;
 	while ((field = mono_class_get_fields (klass, &iter))) {
@@ -10481,8 +11286,7 @@ mono_marshal_load_type_info (MonoClass* klass)
 		case TYPE_ATTRIBUTE_EXPLICIT_LAYOUT:
 			size = mono_marshal_type_size (field->type, info->fields [j].mspec, 
 						       &align, TRUE, klass->unicode);
-			align = klass->packing_size ? MIN (klass->packing_size, align): align;
-			min_align = MAX (align, min_align);
+			min_align = packing;
 			info->fields [j].offset = field->offset - sizeof (MonoObject);
 			info->native_size = MAX (info->native_size, info->fields [j].offset + size);
 			break;
@@ -10490,8 +11294,15 @@ mono_marshal_load_type_info (MonoClass* klass)
 		j++;
 	}
 
-	if(layout != TYPE_ATTRIBUTE_AUTO_LAYOUT) {
+	if (layout != TYPE_ATTRIBUTE_AUTO_LAYOUT) {
 		info->native_size = MAX (native_size, info->native_size);
+		/*
+		 * If the provided Size is equal or larger than the calculated size, and there
+		 * was no Pack attribute, we set min_align to 1 to avoid native_size being increased
+		 */
+		if (layout == TYPE_ATTRIBUTE_EXPLICIT_LAYOUT)
+			if (native_size && native_size == info->native_size && klass->packing_size == 0)
+				min_align = 1;
 	}
 
 	if (info->native_size & (min_align - 1)) {
@@ -10506,7 +11317,7 @@ mono_marshal_load_type_info (MonoClass* klass)
 		klass->blittable = FALSE;
 
 	/* If this is an array type, ensure that we have element info */
-	if (klass->element_class && !mono_marshal_is_loading_type_info (klass->element_class)) {
+	if (klass->rank && !mono_marshal_is_loading_type_info (klass->element_class)) {
 		mono_marshal_load_type_info (klass->element_class);
 	}
 
@@ -11106,6 +11917,8 @@ mono_marshal_get_thunk_invoke_wrapper (MonoMethod *method)
 void
 mono_marshal_free_dynamic_wrappers (MonoMethod *method)
 {
+	MonoImage *image = method->klass->image;
+
 	g_assert (method->dynamic);
 
 	/* This could be called during shutdown */
@@ -11115,8 +11928,13 @@ mono_marshal_free_dynamic_wrappers (MonoMethod *method)
 	 * FIXME: We currently leak the wrappers. Freeing them would be tricky as
 	 * they could be shared with other methods ?
 	 */
-	if (method->klass->image->runtime_invoke_direct_cache)
-		g_hash_table_remove (method->klass->image->runtime_invoke_direct_cache, method);
+	if (image->runtime_invoke_direct_cache)
+		g_hash_table_remove (image->runtime_invoke_direct_cache, method);
+	if (image->delegate_bound_static_invoke_cache)
+		g_hash_table_foreach_remove (image->delegate_bound_static_invoke_cache, signature_method_pair_matches_method, method);
+	if (image->delegate_abstract_invoke_cache)
+		g_hash_table_foreach_remove (image->delegate_abstract_invoke_cache, signature_method_pair_matches_method, method);
+
 	if (marshal_mutex_initialized)
 		mono_marshal_unlock ();
 }
@@ -11173,6 +11991,10 @@ mono_marshal_free_inflated_wrappers (MonoMethod *method)
                g_hash_table_foreach_remove (method->klass->image->delegate_abstract_invoke_cache,
                                             signature_method_pair_matches_signature, (gpointer)sig);
 
+       if (sig && method->klass->image->delegate_bound_static_invoke_cache)
+                g_hash_table_foreach_remove (method->klass->image->delegate_bound_static_invoke_cache,
+                                             signature_method_pair_matches_signature, (gpointer)sig);
+
         /*
          * indexed by MonoMethod pointers
          */
diff --git a/mono/metadata/marshal.h b/mono/metadata/marshal.h
index 0ce9acd..7baa903 100644
--- a/mono/metadata/marshal.h
+++ b/mono/metadata/marshal.h
@@ -248,6 +248,12 @@ MonoMethod *
 mono_marshal_get_unbox_wrapper (MonoMethod *method) MONO_INTERNAL;
 
 MonoMethod *
+mono_marshal_get_castclass_with_cache (void) MONO_INTERNAL;
+
+MonoMethod *
+mono_marshal_get_isinst_with_cache (void) MONO_INTERNAL;
+
+MonoMethod *
 mono_marshal_get_isinst (MonoClass *klass) MONO_INTERNAL;
 
 MonoMethod *
@@ -260,6 +266,9 @@ MonoMethod *
 mono_marshal_get_stelemref (void) MONO_INTERNAL;
 
 MonoMethod*
+mono_marshal_get_virtual_stelemref (MonoClass *array_class) MONO_INTERNAL;
+
+MonoMethod*
 mono_marshal_get_array_address (int rank, int elem_size) MONO_INTERNAL;
 
 MonoMethod *
diff --git a/mono/metadata/metadata-internals.h b/mono/metadata/metadata-internals.h
index 1344632..fd98455 100644
--- a/mono/metadata/metadata-internals.h
+++ b/mono/metadata/metadata-internals.h
@@ -39,6 +39,12 @@ struct _MonoType {
 
 #define MONO_PUBLIC_KEY_TOKEN_LENGTH	17
 
+#define PROCESSOR_ARCHITECTURE_NONE 0
+#define PROCESSOR_ARCHITECTURE_MSIL 1
+#define PROCESSOR_ARCHITECTURE_X86 2
+#define PROCESSOR_ARCHITECTURE_IA64 3
+#define PROCESSOR_ARCHITECTURE_AMD64 4
+
 struct _MonoAssemblyName {
 	const char *name;
 	const char *culture;
@@ -49,7 +55,7 @@ struct _MonoAssemblyName {
 	uint32_t hash_alg;
 	uint32_t hash_len;
 	uint32_t flags;
-	uint16_t major, minor, build, revision;
+	uint16_t major, minor, build, revision, arch;
 };
 
 struct MonoTypeNameParse {
@@ -80,6 +86,10 @@ struct _MonoAssembly {
 	guint8 dynamic;
 	guint8 corlib_internal;
 	gboolean ref_only;
+	guint8 wrap_non_exception_throws;
+	guint8 wrap_non_exception_throws_inited;
+	guint8 jit_optimizer_disabled;
+	guint8 jit_optimizer_disabled_inited;
 	/* security manager flags (one bit is for lazy initialization) */
 	guint32 ecma:2;		/* Has the ECMA key */
 	guint32 aptc:2;		/* Has the [AllowPartiallyTrustedCallers] attributes */
@@ -251,6 +261,10 @@ struct _MonoImage {
 	GHashTable *delegate_abstract_invoke_cache;
 
 	/*
+	 * indexed by SignatureMethodPair
+	 */
+	GHashTable *delegate_bound_static_invoke_cache;
+	/*
 	 * indexed by MonoMethod pointers 
 	 */
 	GHashTable *runtime_invoke_direct_cache;
@@ -430,6 +444,7 @@ typedef struct _MonoAssemblyBindingInfo {
 	guint has_old_version_top : 1;
 	guint has_new_version : 1;
 	guint is_valid : 1;
+	gint32 domain_id; /*Needed to unload per-domain binding*/
 } MonoAssemblyBindingInfo;
 
 struct _MonoMethodHeader {
@@ -490,6 +505,8 @@ mono_image_alloc  (MonoImage *image, guint size) MONO_INTERNAL;
 gpointer
 mono_image_alloc0 (MonoImage *image, guint size) MONO_INTERNAL;
 
+#define mono_image_new0(image,type,size) ((type *) mono_image_alloc0 (image, sizeof (type)* (size)))
+
 char*
 mono_image_strdup (MonoImage *image, const char *s) MONO_INTERNAL;
 
@@ -528,6 +545,17 @@ mono_install_image_unload_hook (MonoImageUnloadFunc func, gpointer user_data) MO
 void
 mono_remove_image_unload_hook (MonoImageUnloadFunc func, gpointer user_data) MONO_INTERNAL;
 
+gpointer
+mono_image_set_alloc  (MonoImageSet *set, guint size) MONO_INTERNAL;
+
+gpointer
+mono_image_set_alloc0 (MonoImageSet *set, guint size) MONO_INTERNAL;
+
+char*
+mono_image_set_strdup (MonoImageSet *set, const char *s) MONO_INTERNAL;
+
+#define mono_image_set_new0(image,type,size) ((type *) mono_image_set_alloc0 (image, sizeof (type)* (size)))
+
 MonoType*
 mono_metadata_get_shared_type (MonoType *type) MONO_INTERNAL;
 
@@ -695,5 +723,7 @@ MonoException *mono_get_exception_field_access_msg (const char *msg) MONO_INTERN
 
 MonoException *mono_get_exception_method_access_msg (const char *msg) MONO_INTERNAL;
 
+MonoMethod* method_from_method_def_or_ref (MonoImage *m, guint32 tok, MonoGenericContext *context) MONO_INTERNAL;
+
 #endif /* __MONO_METADATA_INTERNALS_H__ */
 
diff --git a/mono/metadata/metadata-verify.c b/mono/metadata/metadata-verify.c
index 157ad76..a6787f9 100644
--- a/mono/metadata/metadata-verify.c
+++ b/mono/metadata/metadata-verify.c
@@ -300,6 +300,16 @@ dword_align (const char *ptr)
 #endif
 }
 
+static void
+add_from_mono_error (VerifyContext *ctx, MonoError *error)
+{
+	if (mono_error_ok (error))
+		return;
+
+	ADD_ERROR (ctx, g_strdup (mono_error_get_message (error)));
+	mono_error_cleanup (error);
+}
+
 static guint32
 pe_signature_offset (VerifyContext *ctx)
 {
@@ -928,22 +938,31 @@ get_metadata_stream (VerifyContext *ctx, MonoStreamHeader *header)
 }
 
 static gboolean
-is_valid_string_full (VerifyContext *ctx, guint32 offset, gboolean allow_empty)
+is_valid_string_full_with_image (MonoImage *image, guint32 offset, gboolean allow_empty)
 {
-	OffsetAndSize strings = get_metadata_stream (ctx, &ctx->image->heap_strings);
+	guint32 heap_offset = (char*)image->heap_strings.data - image->raw_data;
+	guint32 heap_size = image->heap_strings.size;
+
 	glong length;
-	const char *data = ctx->data + strings.offset;
+	const char *data = image->raw_data + heap_offset;
 
-	if (offset >= strings.size)
+	if (offset >= heap_size)
 		return FALSE;
-	if (data + offset < data) //FIXME, use a generalized and smart unsigned add with overflow check and fix the whole thing  
+	if (CHECK_ADDP_OVERFLOW_UN (data, offset))
 		return FALSE;
 
-	if (!mono_utf8_validate_and_len_with_bounds (data + offset, strings.size - offset, &length, NULL))
+	if (!mono_utf8_validate_and_len_with_bounds (data + offset, heap_size - offset, &length, NULL))
 		return FALSE;
 	return allow_empty || length > 0;
 }
 
+
+static gboolean
+is_valid_string_full (VerifyContext *ctx, guint32 offset, gboolean allow_empty)
+{
+	return is_valid_string_full_with_image (ctx->image, offset, allow_empty);
+}
+
 static gboolean
 is_valid_string (VerifyContext *ctx, guint32 offset)
 {
@@ -994,7 +1013,7 @@ make_coded_token (int kind, guint32 table, guint32 table_idx)
 }
 
 static gboolean
-is_valid_coded_index (VerifyContext *ctx, int token_kind, guint32 coded_token)
+is_valid_coded_index_with_image (MonoImage *image, int token_kind, guint32 coded_token)
 {
 	guint32 bits = coded_index_desc [token_kind++];
 	guint32 table_count = coded_index_desc [token_kind++];
@@ -1009,7 +1028,13 @@ is_valid_coded_index (VerifyContext *ctx, int token_kind, guint32 coded_token)
 
 	if (table == INVALID_TABLE)
 		return FALSE;
-	return token <= ctx->image->tables [table].rows;
+	return token <= image->tables [table].rows;
+}
+
+static gboolean
+is_valid_coded_index (VerifyContext *ctx, int token_kind, guint32 coded_token)
+{
+	return is_valid_coded_index_with_image (ctx->image, token_kind, coded_token);
 }
 
 typedef struct {
@@ -1205,7 +1230,7 @@ parse_custom_mods (VerifyContext *ctx, const char **_ptr, const char *end)
 		if (!safe_read_cint (token, ptr, end))
 			FAIL (ctx, g_strdup ("CustomMod: Not enough room for the token"));
 	
-		if (!is_valid_coded_index (ctx, TYPEDEF_OR_REF_DESC, token))
+		if (!is_valid_coded_index (ctx, TYPEDEF_OR_REF_DESC, token) || !get_coded_index_token (TYPEDEF_OR_REF_DESC, token))
 			FAIL (ctx, g_strdup_printf ("CustomMod: invalid TypeDefOrRef token %x", token));
 	}
 
@@ -1262,7 +1287,7 @@ parse_generic_inst (VerifyContext *ctx, const char **_ptr, const char *end)
 	if (!safe_read_cint (token, ptr, end))
 		FAIL (ctx, g_strdup ("GenericInst: Not enough room for type token"));
 
-	if (!is_valid_coded_index (ctx, TYPEDEF_OR_REF_DESC, token))
+	if (!is_valid_coded_index (ctx, TYPEDEF_OR_REF_DESC, token) || !get_coded_index_token (TYPEDEF_OR_REF_DESC, token))
 		FAIL (ctx, g_strdup_printf ("GenericInst: invalid TypeDefOrRef token %x", token));
 
 	if (ctx->token) {
@@ -1278,6 +1303,9 @@ parse_generic_inst (VerifyContext *ctx, const char **_ptr, const char *end)
 		FAIL (ctx, g_strdup ("GenericInst: Zero arguments generic instance"));
 
 	for (i = 0; i < count; ++i) {
+		if (!parse_custom_mods (ctx, &ptr, end))
+			FAIL (ctx, g_strdup ("Type: Failed to parse pointer custom attr"));
+
 		if (!parse_type (ctx, &ptr, end))
 			FAIL (ctx, g_strdup_printf ("GenericInst: invalid generic argument %d", i + 1));
 	}
@@ -1321,12 +1349,15 @@ parse_type (VerifyContext *ctx, const char **_ptr, const char *end)
 		if (!safe_read_cint (token, ptr, end))
 			FAIL (ctx, g_strdup ("Type: Not enough room for the type token"));
 	
-		if (!is_valid_coded_index (ctx, TYPEDEF_OR_REF_DESC, token))
+		if (!is_valid_coded_index (ctx, TYPEDEF_OR_REF_DESC, token) || !get_coded_index_token (TYPEDEF_OR_REF_DESC, token))
 			FAIL (ctx, g_strdup_printf ("Type: invalid TypeDefOrRef token %x", token));
+
+		if (!get_coded_index_token (TYPEDEF_OR_REF_DESC, token))
+			FAIL (ctx, g_strdup_printf ("Type: zero TypeDefOrRef token %x", token));
 		if (ctx->token) {
 			if (mono_metadata_token_index (ctx->token) == get_coded_index_token (TYPEDEF_OR_REF_DESC, token) &&
 				mono_metadata_token_table (ctx->token) == get_coded_index_table (TYPEDEF_OR_REF_DESC, token))
-				FAIL (ctx, g_strdup_printf ("Type: Recurside type specification (%x). A type signature can't reference itself", ctx->token));
+				FAIL (ctx, g_strdup_printf ("Type: Recursive type specification (%x). A type signature can't reference itself", ctx->token));
 		}
 		break;
 
@@ -1408,8 +1439,11 @@ parse_param (VerifyContext *ctx, const char **_ptr, const char *end)
 	}
 
 	//it's a byref, update the cursor ptr
-	if (type == MONO_TYPE_BYREF)
+	if (type == MONO_TYPE_BYREF) {
 		*_ptr = ptr;
+		if (!parse_custom_mods (ctx, _ptr, end))
+			return FALSE;
+	}
 
 	return parse_type (ctx, _ptr, end);
 }
@@ -1498,6 +1532,8 @@ parse_property_signature (VerifyContext *ctx, const char **_ptr, const char *end
 		FAIL (ctx, g_strdup ("PropertySig: Could not parse property type"));
 
 	for (i = 0; i < param_count; ++i) {
+		if (!parse_custom_mods (ctx, &ptr, end))
+			FAIL (ctx, g_strdup ("Type: Failed to parse pointer custom attr"));
 		if (!parse_type (ctx, &ptr, end))
 			FAIL (ctx, g_strdup_printf ("PropertySig: Error parsing arg %d", i));
 	}
@@ -1617,6 +1653,20 @@ is_valid_method_signature (VerifyContext *ctx, guint32 offset)
 }
 
 static gboolean
+is_valid_memberref_method_signature (VerifyContext *ctx, guint32 offset)
+{
+	guint32 size = 0;
+	const char *ptr = NULL, *end;
+
+	if (!decode_signature_header (ctx, offset, &size, &ptr))
+		FAIL (ctx, g_strdup ("MemberRefSig: Could not decode signature header"));
+	end = ptr + size;
+
+	return parse_method_signature (ctx, &ptr, end, TRUE, FALSE);
+}
+
+
+static gboolean
 is_valid_method_or_field_signature (VerifyContext *ctx, guint32 offset)
 {
 	guint32 size = 0;
@@ -1828,6 +1878,8 @@ handle_enum:
 				klass = get_enum_by_encoded_name (ctx, &ptr, end);
 				if (!klass)
 					return FALSE;
+			} else if (etype == 0x50 || etype == MONO_TYPE_CLASS) {
+				klass = mono_defaults.systemtype_class;
 			} else if ((etype >= MONO_TYPE_BOOLEAN && etype <= MONO_TYPE_STRING) || etype == 0x51) {
 				simple_type.type = etype == 0x51 ? MONO_TYPE_OBJECT : etype;
 				klass = mono_class_from_mono_type (&simple_type);
@@ -1955,6 +2007,8 @@ is_valid_cattr_content (VerifyContext *ctx, MonoMethod *ctor, const char *ptr, g
 				klass = get_enum_by_encoded_name (ctx, &ptr, end);
 				if (!klass)
 					return FALSE;
+			} else if (etype == 0x50 || etype == MONO_TYPE_CLASS) {
+				klass = mono_defaults.systemtype_class;
 			} else if ((etype >= MONO_TYPE_BOOLEAN && etype <= MONO_TYPE_STRING) || etype == 0x51) {
 				simple_type.type = etype == 0x51 ? MONO_TYPE_OBJECT : etype;
 				klass = mono_class_from_mono_type (&simple_type);
@@ -2087,6 +2141,8 @@ is_valid_methodspec_blob (VerifyContext *ctx, guint32 offset)
 		FAIL (ctx, g_strdup ("MethodSpec: Zero generic argument count"));
 
 	for (i = 0; i < count; ++i) {
+		if (!parse_custom_mods (ctx, &ptr, end))
+			return FALSE;
 		if (!parse_type (ctx, &ptr, end))
 			FAIL (ctx, g_strdup_printf ("MethodSpec: Could not parse parameter %d", i + 1));
 	}
@@ -2182,13 +2238,15 @@ is_valid_constant (VerifyContext *ctx, guint32 type, guint32 offset)
 #define SECTION_HEADER_INVALID_FLAGS 0x3E
 
 static gboolean
-is_valid_method_header (VerifyContext *ctx, guint32 rva)
+is_valid_method_header (VerifyContext *ctx, guint32 rva, guint32 *locals_token)
 {
 	unsigned local_vars_tok, code_size, offset = mono_cli_rva_image_map (ctx->image, rva);
 	unsigned header = 0;
 	unsigned fat_header = 0, size = 0, max_stack;
 	const char *ptr = NULL, *end;
 
+	*locals_token = 0;
+
 	if (offset == INVALID_ADDRESS)
 		FAIL (ctx, g_strdup ("MethodHeader: Invalid RVA"));
 
@@ -2231,6 +2289,9 @@ is_valid_method_header (VerifyContext *ctx, guint32 rva)
 			FAIL (ctx, g_strdup_printf ("MethodHeader: Invalid local vars signature table 0x%x", ((local_vars_tok >> 24) & 0xFF)));
 		if ((local_vars_tok & 0xFFFFFF) > ctx->image->tables [MONO_TABLE_STANDALONESIG].rows)	
 			FAIL (ctx, g_strdup_printf ("MethodHeader: Invalid local vars signature points to invalid row 0x%x", local_vars_tok & 0xFFFFFF));
+		if (!(local_vars_tok & 0xFFFFFF))
+			FAIL (ctx, g_strdup_printf ("MethodHeader: Invalid local vars signature with zero index"));
+		*locals_token = local_vars_tok & 0xFFFFFF;
 	}
 
 	if (fat_header & FAT_HEADER_INVALID_FLAGS)
@@ -2325,22 +2386,12 @@ static void
 verify_typeref_table (VerifyContext *ctx)
 {
 	MonoTableInfo *table = &ctx->image->tables [MONO_TABLE_TYPEREF];
-	guint32 data [MONO_TYPEREF_SIZE];
-	int i;
+	MonoError error;
+	guint32 i;
 
 	for (i = 0; i < table->rows; ++i) {
-		mono_metadata_decode_row (table, i, data, MONO_TYPEREF_SIZE);
-		if (!is_valid_coded_index (ctx, RES_SCOPE_DESC, data [MONO_TYPEREF_SCOPE]))
-			ADD_ERROR (ctx, g_strdup_printf ("Invalid typeref row %d coded index 0x%08x", i, data [MONO_TYPEREF_SCOPE]));
-		
-		if (!get_coded_index_token (RES_SCOPE_DESC, data [MONO_TYPEREF_SCOPE]))
-			ADD_ERROR (ctx, g_strdup_printf ("The metadata verifier doesn't support null ResolutionScope tokens for typeref row %d", i));
-
-		if (!data [MONO_TYPEREF_NAME] || !is_valid_non_empty_string (ctx, data [MONO_TYPEREF_NAME]))
-			ADD_ERROR (ctx, g_strdup_printf ("Invalid typeref row %d name token 0x%08x", i, data [MONO_TYPEREF_NAME]));
-
-		if (data [MONO_TYPEREF_NAMESPACE] && !is_valid_non_empty_string (ctx, data [MONO_TYPEREF_NAMESPACE]))
-			ADD_ERROR (ctx, g_strdup_printf ("Invalid typeref row %d namespace token 0x%08x", i, data [MONO_TYPEREF_NAMESPACE]));
+		mono_verifier_verify_typeref_row (ctx->image, i, &error);
+		add_from_mono_error (ctx, &error);
 	}
 }
 
@@ -2383,6 +2434,9 @@ verify_typedef_table (VerifyContext *ctx)
 		if (data [MONO_TYPEDEF_EXTENDS] && !is_valid_coded_index (ctx, TYPEDEF_OR_REF_DESC, data [MONO_TYPEDEF_EXTENDS]))
 			ADD_ERROR (ctx, g_strdup_printf ("Invalid typedef row %d extend field coded index 0x%08x", i, data [MONO_TYPEDEF_EXTENDS]));
 
+		if (data [MONO_TYPEDEF_EXTENDS] && !get_coded_index_token (TYPEDEF_OR_REF_DESC, data [MONO_TYPEDEF_EXTENDS]))
+			ADD_ERROR (ctx, g_strdup_printf ("Invalid typedef row %d zero coded extend field coded index 0x%08x", i, data [MONO_TYPEDEF_EXTENDS]));
+
 		visibility = data [MONO_TYPEDEF_FLAGS] & TYPE_ATTRIBUTE_VISIBILITY_MASK;
 		if ((visibility >= TYPE_ATTRIBUTE_NESTED_PUBLIC && visibility <= TYPE_ATTRIBUTE_NESTED_FAM_OR_ASSEM) &&
 			search_sorted_table (ctx, MONO_TABLE_NESTEDCLASS, MONO_NESTED_CLASS_NESTED, i + 1) == -1)
@@ -2673,7 +2727,7 @@ static void
 verify_method_table_full (VerifyContext *ctx)
 {
 	MonoTableInfo *table = &ctx->image->tables [MONO_TABLE_METHOD];
-	guint32 data [MONO_METHOD_SIZE], rva;
+	guint32 data [MONO_METHOD_SIZE], rva, locals_token;
 	int i;
 
 	for (i = 0; i < table->rows; ++i) {
@@ -2683,7 +2737,7 @@ verify_method_table_full (VerifyContext *ctx)
 		if (!data [MONO_METHOD_SIGNATURE] || !is_valid_method_signature (ctx, data [MONO_METHOD_SIGNATURE]))
 			ADD_ERROR (ctx, g_strdup_printf ("Invalid method row %d invalid signature token 0x%08x", i, data [MONO_METHOD_SIGNATURE]));
 
-		if (rva && !is_valid_method_header (ctx, rva))
+		if (rva && !is_valid_method_header (ctx, rva, &locals_token))
 			ADD_ERROR (ctx, g_strdup_printf ("Invalid method row %d RVA points to an invalid method header", i));
 	}
 }
@@ -2772,7 +2826,7 @@ verify_interfaceimpl_table (VerifyContext *ctx)
 	for (i = 0; i < table->rows; ++i) {
 		mono_metadata_decode_row (table, i, data, MONO_INTERFACEIMPL_SIZE);
 		if (data [MONO_INTERFACEIMPL_CLASS] && data [MONO_INTERFACEIMPL_CLASS] > ctx->image->tables [MONO_TABLE_TYPEDEF].rows)
-			ADD_ERROR (ctx, g_strdup_printf ("Invalid InterfaceImpl row %d Class field 0x%08x", i, data [MONO_TABLE_TYPEDEF]));
+			ADD_ERROR (ctx, g_strdup_printf ("Invalid InterfaceImpl row %d Class field 0x%08x", i, data [MONO_INTERFACEIMPL_CLASS]));
 
 		if (!is_valid_coded_index (ctx, TYPEDEF_OR_REF_DESC, data [MONO_INTERFACEIMPL_INTERFACE]))
 			ADD_ERROR (ctx, g_strdup_printf ("Invalid InterfaceImpl row %d Inteface field coded index 0x%08x", i, data [MONO_INTERFACEIMPL_INTERFACE]));
@@ -2860,8 +2914,8 @@ verify_cattr_table (VerifyContext *ctx)
 		if (!is_valid_coded_index (ctx, HAS_CATTR_DESC, data [MONO_CUSTOM_ATTR_PARENT]))
 			ADD_ERROR (ctx, g_strdup_printf ("Invalid CustomAttribute row %d Parent field 0x%08x", i, data [MONO_CUSTOM_ATTR_PARENT]));
 
-		if (!is_valid_coded_index (ctx, CATTR_TYPE_DESC, data [MONO_CUSTOM_ATTR_TYPE]))
-			ADD_ERROR (ctx, g_strdup_printf ("Invalid CustomAttribute row %d Parent field 0x%08x", i, data [MONO_CUSTOM_ATTR_PARENT]));
+		if (!is_valid_coded_index (ctx, CATTR_TYPE_DESC, data [MONO_CUSTOM_ATTR_TYPE]) || !get_coded_index_token (CATTR_TYPE_DESC, data [MONO_CUSTOM_ATTR_TYPE]))
+			ADD_ERROR (ctx, g_strdup_printf ("Invalid CustomAttribute row %d Type field 0x%08x", i, data [MONO_CUSTOM_ATTR_TYPE]));
 
 		if (data [MONO_CUSTOM_ATTR_VALUE] && !is_valid_blob_object (ctx, data [MONO_CUSTOM_ATTR_VALUE], 0))
 			ADD_ERROR (ctx, g_strdup_printf ("Invalid CustomAttribute row %d invalid value blob 0x%x", i, data [MONO_CUSTOM_ATTR_VALUE]));
@@ -3227,7 +3281,7 @@ verify_moduleref_table (VerifyContext *ctx)
 		mono_metadata_decode_row (table, i, data, MONO_MODULEREF_SIZE);
 
 		if (!is_valid_non_empty_string (ctx, data[MONO_MODULEREF_NAME]))
-			ADD_ERROR (ctx, g_strdup_printf ("Invalid MethodImpl row %d Class field %08x", i, data [MONO_TABLE_TYPEDEF]));
+			ADD_ERROR (ctx, g_strdup_printf ("Invalid ModuleRef row %d name field %08x", i, data [MONO_MODULEREF_NAME]));
 	}
 }
 
@@ -3292,7 +3346,7 @@ verify_implmap_table (VerifyContext *ctx)
 		if (!is_valid_non_empty_string (ctx, data [MONO_IMPLMAP_NAME]))
 			ADD_ERROR (ctx, g_strdup_printf ("Invalid ImplMap row %d ImportName Token %x", i, data [MONO_IMPLMAP_NAME]));
 
-		if (!data [MONO_IMPLMAP_SCOPE] || data [MONO_IMPLMAP_SCOPE] > ctx->image->tables [MONO_TABLE_MODULEREF].rows + 1)
+		if (!data [MONO_IMPLMAP_SCOPE] || data [MONO_IMPLMAP_SCOPE] > ctx->image->tables [MONO_TABLE_MODULEREF].rows)
 			ADD_ERROR (ctx, g_strdup_printf ("Invalid ImplMap row %d Invalid ImportScope token %x", i, data [MONO_IMPLMAP_SCOPE]));
 	}
 }
@@ -3315,7 +3369,7 @@ verify_fieldrva_table (VerifyContext *ctx)
 	}
 }
 
-#define INVALID_ASSEMBLY_FLAGS_BITS ~((1 << 0) | (1 << 4) | (1 << 8) | (1 << 14) | (1 << 15))
+#define INVALID_ASSEMBLY_FLAGS_BITS ~((1 << 0) | (1 << 4) | (1 << 5) | (1 << 6) | (1 << 7) | (1 << 8) | (1 << 14) | (1 << 15))
 static void
 verify_assembly_table (VerifyContext *ctx)
 {
@@ -3576,7 +3630,7 @@ verify_generic_param_constraint_table (VerifyContext *ctx)
 		mono_metadata_decode_row (table, i, data, MONO_GENPARCONSTRAINT_SIZE);
 
 		if (!data [MONO_GENPARCONSTRAINT_GENERICPAR] || data [MONO_GENPARCONSTRAINT_GENERICPAR] > ctx->image->tables [MONO_TABLE_GENERICPARAM].rows)
-			ADD_ERROR (ctx, g_strdup_printf ("GenericParamConstraint table row %d has invalid Owner token %08x", i, data [MONO_TABLE_GENERICPARAM]));
+			ADD_ERROR (ctx, g_strdup_printf ("GenericParamConstraint table row %d has invalid Owner token %08x", i, data [MONO_GENPARCONSTRAINT_GENERICPAR]));
 
 		if (!is_valid_coded_index (ctx, TYPEDEF_OR_REF_DESC, data [MONO_GENPARCONSTRAINT_CONSTRAINT]))
 			ADD_ERROR (ctx, g_strdup_printf ("GenericParamConstraint table row %d has invalid Constraint token %08x", i, data [MONO_GENPARCONSTRAINT_CONSTRAINT]));
@@ -3685,6 +3739,7 @@ verify_tables_data_global_constraints (VerifyContext *ctx)
 static void
 verify_tables_data_global_constraints_full (VerifyContext *ctx)
 {
+	verify_typeref_table (ctx);
 	verify_typeref_table_global_constraints (ctx);
 }
 
@@ -3715,8 +3770,9 @@ verify_tables_data (VerifyContext *ctx)
 
 	verify_module_table (ctx);
 	CHECK_ERROR ();
+	/*Obfuscators love to place broken stuff in the typeref table
 	verify_typeref_table (ctx);
-	CHECK_ERROR ();
+	CHECK_ERROR ();*/
 	verify_typedef_table (ctx);
 	CHECK_ERROR ();
 	verify_field_table (ctx);
@@ -3958,6 +4014,7 @@ gboolean
 mono_verifier_verify_method_header (MonoImage *image, guint32 offset, GSList **error_list)
 {
 	VerifyContext ctx;
+	guint32 locals_token;
 
 	if (!mono_verifier_is_enabled_for_image (image))
 		return TRUE;
@@ -3965,7 +4022,12 @@ mono_verifier_verify_method_header (MonoImage *image, guint32 offset, GSList **e
 	init_verify_context (&ctx, image, error_list != NULL);
 	ctx.stage = STAGE_TABLES;
 
-	is_valid_method_header (&ctx, offset);
+	is_valid_method_header (&ctx, offset, &locals_token);
+	if (locals_token) {
+		guint32 sig_offset = mono_metadata_decode_row_col (&image->tables [MONO_TABLE_STANDALONESIG], locals_token - 1, MONO_STAND_ALONE_SIGNATURE);
+		is_valid_standalonesig_blob (&ctx, sig_offset);
+	}
+
 	return cleanup_context (&ctx, error_list);
 }
 
@@ -3988,7 +4050,7 @@ mono_verifier_verify_method_signature (MonoImage *image, guint32 offset, MonoErr
 }
 
 gboolean
-mono_verifier_verify_memberref_signature (MonoImage *image, guint32 offset, GSList **error_list)
+mono_verifier_verify_memberref_method_signature (MonoImage *image, guint32 offset, GSList **error_list)
 {
 	VerifyContext ctx;
 
@@ -3998,7 +4060,22 @@ mono_verifier_verify_memberref_signature (MonoImage *image, guint32 offset, GSLi
 	init_verify_context (&ctx, image, error_list != NULL);
 	ctx.stage = STAGE_TABLES;
 
-	is_valid_method_or_field_signature (&ctx, offset);
+	is_valid_memberref_method_signature (&ctx, offset);
+	return cleanup_context (&ctx, error_list);
+}
+
+gboolean
+mono_verifier_verify_memberref_field_signature (MonoImage *image, guint32 offset, GSList **error_list)
+{
+	VerifyContext ctx;
+
+	if (!mono_verifier_is_enabled_for_image (image))
+		return TRUE;
+
+	init_verify_context (&ctx, image, error_list != NULL);
+	ctx.stage = STAGE_TABLES;
+
+	is_valid_field_signature (&ctx, offset);
 	return cleanup_context (&ctx, error_list);
 }
 
@@ -4145,6 +4222,104 @@ mono_verifier_is_sig_compatible (MonoImage *image, MonoMethod *method, MonoMetho
 	return TRUE;
 }
 
+gboolean
+mono_verifier_verify_typeref_row (MonoImage *image, guint32 row, MonoError *error)
+{
+	MonoTableInfo *table = &image->tables [MONO_TABLE_TYPEREF];
+	guint32 data [MONO_TYPEREF_SIZE];
+
+	mono_error_init (error);
+
+	if (!mono_verifier_is_enabled_for_image (image))
+		return TRUE;
+
+	if (row >= table->rows) {
+		mono_error_set_bad_image (error, image, "Invalid typeref row %d - table has %d rows", row, table->rows);
+		return FALSE;
+	}
+
+	mono_metadata_decode_row (table, row, data, MONO_TYPEREF_SIZE);
+	if (!is_valid_coded_index_with_image (image, RES_SCOPE_DESC, data [MONO_TYPEREF_SCOPE])) {
+		mono_error_set_bad_image (error, image, "Invalid typeref row %d coded index 0x%08x", row, data [MONO_TYPEREF_SCOPE]);
+		return FALSE;
+	}
+
+	if (!get_coded_index_token (RES_SCOPE_DESC, data [MONO_TYPEREF_SCOPE])) {
+		mono_error_set_bad_image (error, image, "The metadata verifier doesn't support null ResolutionScope tokens for typeref row %d", row);
+		return FALSE;
+	}
+
+	if (!data [MONO_TYPEREF_NAME] || !is_valid_string_full_with_image (image, data [MONO_TYPEREF_NAME], FALSE)) {
+		mono_error_set_bad_image (error, image, "Invalid typeref row %d name token 0x%08x", row, data [MONO_TYPEREF_NAME]);
+		return FALSE;
+	}
+
+	if (data [MONO_TYPEREF_NAMESPACE] && !is_valid_string_full_with_image (image, data [MONO_TYPEREF_NAMESPACE], FALSE)) {
+		mono_error_set_bad_image (error, image, "Invalid typeref row %d namespace token 0x%08x", row, data [MONO_TYPEREF_NAMESPACE]);
+		return FALSE;
+	}
+
+	return TRUE;
+}
+
+/*Perform additional verification including metadata ones*/
+gboolean
+mono_verifier_verify_methodimpl_row (MonoImage *image, guint32 row, MonoError *error)
+{
+	MonoMethod *declaration, *body;
+	MonoMethodSignature *body_sig, *decl_sig;
+	MonoTableInfo *table = &image->tables [MONO_TABLE_METHODIMPL];
+	guint32 data [MONO_METHODIMPL_SIZE];
+
+	mono_error_init (error);
+
+	if (!mono_verifier_is_enabled_for_image (image))
+		return TRUE;
+
+	if (row >= table->rows) {
+		mono_error_set_bad_image (error, image, "Invalid methodimpl row %d - table has %d rows", row, table->rows);
+		return FALSE;
+	}
+
+	mono_metadata_decode_row (table, row, data, MONO_METHODIMPL_SIZE);
+
+	body = method_from_method_def_or_ref (image, data [MONO_METHODIMPL_BODY], NULL);
+	if (mono_loader_get_last_error ()) {
+		mono_loader_clear_error ();
+		mono_error_set_bad_image (error, image, "Invalid methodimpl body for row %x", row);
+		return FALSE;
+	}
+
+	declaration = method_from_method_def_or_ref (image, data [MONO_METHODIMPL_DECLARATION], NULL);
+	if (mono_loader_get_last_error ()) {
+		mono_loader_clear_error ();
+		mono_error_set_bad_image (error, image, "Invalid methodimpl declaration for row %x", row);
+		return FALSE;
+	}
+
+	/* FIXME
+	mono_class_setup_supertypes (class);
+	if (!mono_class_has_parent (class, body->klass)) {
+		mono_error_set_bad_image (error, image, "Invalid methodimpl body doesn't belong to parent for row %x", row);
+		return FALSE;
+	}*/
+
+	if (!(body_sig = mono_method_signature_checked (body, error))) {
+		return FALSE;
+	}
+
+	if (!(decl_sig = mono_method_signature_checked (declaration, error))) {
+		return FALSE;
+	}
+
+	if (!mono_verifier_is_signature_compatible (decl_sig, body_sig)) {
+		mono_error_set_bad_image (error, image, "Invalid methodimpl body signature not compatible with declaration row %x", row);
+		return FALSE;
+	}
+
+	return TRUE;
+}
+
 #else
 gboolean
 mono_verifier_verify_table_data (MonoImage *image, GSList **error_list)
@@ -4190,12 +4365,6 @@ mono_verifier_verify_method_signature (MonoImage *image, guint32 offset, MonoErr
 }
 
 gboolean
-mono_verifier_verify_memberref_signature (MonoImage *image, guint32 offset, GSList **error_list)
-{
-	return TRUE;
-}
-
-gboolean
 mono_verifier_verify_standalone_signature (MonoImage *image, guint32 offset, GSList **error_list)
 {
 	return TRUE;
@@ -4238,4 +4407,30 @@ mono_verifier_is_sig_compatible (MonoImage *image, MonoMethod *method, MonoMetho
 }
 
 
+gboolean
+mono_verifier_verify_typeref_row (MonoImage *image, guint32 row, MonoError *error)
+{
+	mono_error_init (error);
+	return TRUE;
+}
+
+gboolean
+mono_verifier_verify_methodimpl_row (MonoImage *image, guint32 row, MonoError *error)
+{
+	mono_error_init (error);
+	return TRUE;
+}
+
+gboolean
+mono_verifier_verify_memberref_method_signature (MonoImage *image, guint32 offset, GSList **error_list)
+{
+	return TRUE;
+}
+
+gboolean
+mono_verifier_verify_memberref_field_signature (MonoImage *image, guint32 offset, GSList **error_list)
+{
+	return TRUE;
+}
+
 #endif /* DISABLE_VERIFIER */
diff --git a/mono/metadata/metadata.c b/mono/metadata/metadata.c
index e2ed9c7..3d872b2 100644
--- a/mono/metadata/metadata.c
+++ b/mono/metadata/metadata.c
@@ -27,7 +27,7 @@
 #include "verify-internals.h"
 #include "class.h"
 #include "marshal.h"
-#include "gc-internal.h"
+#include "debug-helpers.h"
 #include <mono/utils/mono-error-internals.h>
  
 /* Auxiliary structure used for caching inflated signatures */
@@ -44,9 +44,7 @@ static gboolean mono_metadata_class_equal (MonoClass *c1, MonoClass *c2, gboolea
 static gboolean mono_metadata_fnptr_equal (MonoMethodSignature *s1, MonoMethodSignature *s2, gboolean signature_only);
 static gboolean _mono_metadata_generic_class_equal (const MonoGenericClass *g1, const MonoGenericClass *g2,
 						    gboolean signature_only);
-static GSList* free_generic_inst_dependents (MonoGenericInst *ginst);
 static void free_generic_inst (MonoGenericInst *ginst);
-static GSList* free_generic_class_dependents (MonoGenericClass *ginst);
 static void free_generic_class (MonoGenericClass *ginst);
 static void free_inflated_method (MonoMethodInflated *method);
 static void free_inflated_signature (MonoInflatedMethodSignature *sig);
@@ -963,6 +961,7 @@ mono_metadata_decode_row (const MonoTableInfo *t, int idx, guint32 *res, int res
 	const char *data;
 
 	g_assert (idx < t->rows);
+	g_assert (idx >= 0);
 	data = t->base + idx * t->row_size;
 	
 	g_assert (res_size == count);
@@ -2278,6 +2277,60 @@ delete_image_set (MonoImageSet *set)
 	g_free (set);
 }
 
+static void
+mono_image_set_lock (MonoImageSet *set)
+{
+	EnterCriticalSection (&set->lock);
+}
+
+static void
+mono_image_set_unlock (MonoImageSet *set)
+{
+	LeaveCriticalSection (&set->lock);
+}
+
+gpointer
+mono_image_set_alloc (MonoImageSet *set, guint size)
+{
+	gpointer res;
+
+	mono_image_set_lock (set);
+	if (!set->mempool)
+		set->mempool = mono_mempool_new_size (1024);
+	res = mono_mempool_alloc (set->mempool, size);
+	mono_image_set_unlock (set);
+
+	return res;
+}
+
+gpointer
+mono_image_set_alloc0 (MonoImageSet *set, guint size)
+{
+	gpointer res;
+
+	mono_image_set_lock (set);
+	if (!set->mempool)
+		set->mempool = mono_mempool_new_size (1024);
+	res = mono_mempool_alloc0 (set->mempool, size);
+	mono_image_set_unlock (set);
+
+	return res;
+}
+
+char*
+mono_image_set_strdup (MonoImageSet *set, const char *s)
+{
+	char *res;
+
+	mono_image_set_lock (set);
+	if (!set->mempool)
+		set->mempool = mono_mempool_new_size (1024);
+	res = mono_mempool_strdup (set->mempool, s);
+	mono_image_set_unlock (set);
+
+	return res;
+}
+
 /* 
  * Structure used by the collect_..._images functions to store the image list.
  */
@@ -2561,7 +2614,10 @@ mono_metadata_clean_for_image (MonoImage *image)
 
 	//check_image_sets (image);
 
-	/* The data structures could reference each other so we delete them in two phases */
+	/*
+	 * The data structures could reference each other so we delete them in two phases.
+	 * This is required because of the hashing functions in gclass/ginst_cache.
+	 */
 	ginst_data.image = gclass_data.image = image;
 	ginst_data.list = gclass_data.list = NULL;
 	mono_loader_lock ();
@@ -2579,9 +2635,9 @@ mono_metadata_clean_for_image (MonoImage *image)
 
 	/* Delete the removed items */
 	for (l = ginst_data.list; l; l = l->next)
-		free_list = g_slist_concat (free_generic_inst_dependents (l->data), free_list);
+		free_generic_inst (l->data);
 	for (l = gclass_data.list; l; l = l->next)
-		free_list = g_slist_concat (free_generic_class_dependents (l->data), free_list);
+		free_generic_class (l->data);
 	g_slist_free (ginst_data.list);
 	g_slist_free (gclass_data.list);
 	/* delete_image_set () modifies the lists so make a copy */
@@ -2625,86 +2681,21 @@ free_inflated_method (MonoMethodInflated *imethod)
 }
 
 static void
-free_list_with_data (GSList *l)
-{
-	while (l) {
-		g_free (l->data);
-		l = g_slist_delete_link (l, l);
-	}
-}
-
-static GSList*
-free_generic_inst_dependents (MonoGenericInst *ginst)
+free_generic_inst (MonoGenericInst *ginst)
 {
 	int i;
 
+	/* The ginst itself is allocated from the image set mempool */
 	for (i = 0; i < ginst->type_argc; ++i)
 		mono_metadata_free_type (ginst->type_argv [i]);
-	return g_slist_prepend (NULL, ginst);
-}
-
-static void
-free_generic_inst (MonoGenericInst *ginst)
-{
-	free_list_with_data (free_generic_inst_dependents (ginst));
-}
-
-static GSList*
-free_generic_class_dependents (MonoGenericClass *gclass)
-{
-	GSList *l = NULL;
-	int i;
-
-	/* FIXME: The dynamic case */
-	if (gclass->cached_class && !gclass->cached_class->image->dynamic && !mono_generic_class_is_generic_type_definition (gclass)) {
-		MonoClass *class = gclass->cached_class;
-
-		/* Allocated in mono_class_init () */
-		g_free (class->methods);
-		if (class->ext) {
-			g_free (class->ext->properties);
-			g_free (class->ext->field_def_values);
-		}
-		/* Allocated in mono_class_setup_fields () */
-		g_free (class->fields);
-		/* Allocated in mono_class_setup_vtable_general () */
-		g_free (class->vtable);
-		/* Allocated in mono_generic_class_get_class () */
-		g_free (class->interfaces);
-		/* Allocated in setup_interface_offsets () */
-		g_free (class->interfaces_packed);
-		g_free (class->interface_offsets_packed);
-		g_free (class->interface_bitmap);
-		/* Allocated in mono_class_setup_supertypes () */
-		g_free (class->supertypes);
-		l = g_slist_prepend (l, class);
-	} else if (gclass->is_dynamic) {
-		MonoDynamicGenericClass *dgclass = (MonoDynamicGenericClass *)gclass;
-
-		for (i = 0; i < dgclass->count_fields; ++i) {
-			MonoClassField *field = dgclass->fields + i;
-			mono_metadata_free_type (field->type);
-			g_free ((char*)field->name);
-#if HAVE_SGEN_GC
-			MONO_GC_UNREGISTER_ROOT (dgclass->field_objects [i]);
-#endif
-		}
-
-		g_free (dgclass->methods);
-		g_free (dgclass->ctors);
-		g_free (dgclass->fields);
-		g_free (dgclass->field_objects);
-		g_free (dgclass->field_generic_types);
-		if (!mono_generic_class_is_generic_type_definition (gclass))
-			l = g_slist_prepend (l, gclass->cached_class);
-	}
-	return g_slist_prepend (l, gclass);
 }
 
 static void
 free_generic_class (MonoGenericClass *gclass)
 {
-	free_list_with_data (free_generic_class_dependents (gclass));
+	/* The gclass itself is allocated from the image set mempool */
+	if (gclass->is_dynamic)
+		mono_reflection_free_dynamic_generic_class (gclass);
 }
 
 static void
@@ -2824,7 +2815,7 @@ mono_metadata_get_generic_inst (int type_argc, MonoType **type_argv)
 
 	ginst = g_hash_table_lookup (set->ginst_cache, ginst);
 	if (!ginst) {
-		ginst = g_malloc (size);
+		ginst = mono_image_set_alloc0 (set, size);
 #ifndef MONO_SMALL_CONFIG
 		ginst->id = ++next_generic_inst_id;
 #endif
@@ -2894,17 +2885,18 @@ mono_metadata_lookup_generic_class (MonoClass *container_class, MonoGenericInst
 	}
 
 	if (is_dynamic) {
-		MonoDynamicGenericClass *dgclass = g_new0 (MonoDynamicGenericClass, 1);
+		MonoDynamicGenericClass *dgclass = mono_image_set_new0 (set, MonoDynamicGenericClass, 1);
 		gclass = &dgclass->generic_class;
 		gclass->is_dynamic = 1;
 	} else {
-		gclass = g_new0 (MonoGenericClass, 1);
+		gclass = mono_image_set_new0 (set, MonoGenericClass, 1);
 	}
 
 	gclass->is_tb_open = is_tb_open;
 	gclass->container_class = container_class;
 	gclass->context.class_inst = inst;
 	gclass->context.method_inst = NULL;
+	gclass->owner = set;
 	if (inst == container_class->generic_container->context.class_inst && !is_tb_open)
 		gclass->cached_class = container_class;
 
@@ -3154,9 +3146,17 @@ do_mono_metadata_parse_type (MonoType *type, MonoImage *m, MonoGenericContainer
 	case MONO_TYPE_VALUETYPE:
 	case MONO_TYPE_CLASS: {
 		guint32 token;
+		MonoClass *class;
 		token = mono_metadata_parse_typedef_or_ref (m, ptr, &ptr);
-		type->data.klass = mono_class_get (m, token);
-		if (!type->data.klass)
+		class = mono_class_get (m, token);
+		type->data.klass = class;
+		if (!class)
+			return FALSE;
+		/* byval_arg.type can be zero if we're decoding a type that references a class been loading.
+		 * See mcs/test/gtest-440. and #650936.
+		 * FIXME This better be moved to the metadata verifier as it can catch more cases.
+		 */
+		if (class->byval_arg.type && class->byval_arg.type != type->type)
 			return FALSE;
 		break;
 	}
@@ -3486,7 +3486,7 @@ mono_metadata_parse_mh_full (MonoImage *m, MonoGenericContainer *container, cons
 
 	if (local_var_sig_tok) {
 		int idx = (local_var_sig_tok & 0xffffff)-1;
-		if (idx >= t->rows)
+		if (idx >= t->rows || idx < 0)
 			return NULL;
 		mono_metadata_decode_row (t, idx, cols, 1);
 
@@ -5215,7 +5215,6 @@ mono_type_create_from_typespec (MonoImage *image, guint32 type_spec)
 	const char *ptr;
 	guint32 len;
 	MonoType *type, *type2;
-	MonoType stack_type;
 
 	mono_loader_lock ();
 
@@ -5237,15 +5236,8 @@ mono_type_create_from_typespec (MonoImage *image, guint32 type_spec)
 
 	len = mono_metadata_decode_value (ptr, &ptr);
 
-	type = &stack_type;
-	memset (type, 0, MONO_SIZEOF_TYPE);
-
-	if (*ptr == MONO_TYPE_BYREF) {
-		type->byref = 1;
-		ptr++;
-	}
-
-	if (!do_mono_metadata_parse_type (type, image, NULL, FALSE, ptr, &ptr)) {
+	type = mono_metadata_parse_type_internal (image, NULL, MONO_PARSE_TYPE, 0, TRUE, ptr, &ptr);
+	if (!type) {
 		mono_loader_unlock ();
 		return NULL;
 	}
@@ -5257,9 +5249,9 @@ mono_type_create_from_typespec (MonoImage *image, guint32 type_spec)
 		return type2;
 	}
 
-	type2 = mono_image_alloc (image, MONO_SIZEOF_TYPE);
-	memcpy (type2, type, MONO_SIZEOF_TYPE);
+	type2 = mono_metadata_type_dup (image, type);
 	g_hash_table_insert (image->typespec_cache, GUINT_TO_POINTER (type_spec), type2);
+	mono_metadata_free_type (type);
 
 	mono_loader_unlock ();
 
@@ -5419,7 +5411,17 @@ handle_enum:
 		}
 		*conv = MONO_MARSHAL_CONV_BOOL_I4;
 		return MONO_NATIVE_BOOLEAN;
-	case MONO_TYPE_CHAR: return MONO_NATIVE_U2;
+	case MONO_TYPE_CHAR:
+		if (mspec) {
+			switch (mspec->native) {
+			case MONO_NATIVE_U2:
+			case MONO_NATIVE_U1:
+				return mspec->native;
+			default:
+				g_error ("cant marshal char to native type %02x", mspec->native);
+			}
+		}
+		return unicode ? MONO_NATIVE_U2 : MONO_NATIVE_U1;
 	case MONO_TYPE_I1: return MONO_NATIVE_I1;
 	case MONO_TYPE_U1: return MONO_NATIVE_U1;
 	case MONO_TYPE_I2: return MONO_NATIVE_I2;
@@ -5581,7 +5583,7 @@ mono_metadata_get_marshal_info (MonoImage *meta, guint32 idx, gboolean is_field)
 	return mono_metadata_blob_heap (meta, mono_metadata_decode_row_col (tdef, loc.result, MONO_FIELD_MARSHAL_NATIVE_TYPE));
 }
 
-static MonoMethod*
+MonoMethod*
 method_from_method_def_or_ref (MonoImage *m, guint32 tok, MonoGenericContext *context)
 {
 	guint32 idx = tok >> MONO_METHODDEFORREF_BITS;
@@ -5608,6 +5610,7 @@ gboolean
 mono_class_get_overrides_full (MonoImage *image, guint32 type_token, MonoMethod ***overrides, gint32 *num_overrides,
 			       MonoGenericContext *generic_context)
 {
+	MonoError error;
 	locator_t loc;
 	MonoTableInfo *tdef  = &image->tables [MONO_TABLE_METHODIMPL];
 	guint32 start, end;
@@ -5652,6 +5655,12 @@ mono_class_get_overrides_full (MonoImage *image, guint32 type_token, MonoMethod
 	for (i = 0; i < num; ++i) {
 		MonoMethod *method;
 
+		if (!mono_verifier_verify_methodimpl_row (image, start + i, &error)) {
+			mono_error_cleanup (&error);
+			ok = FALSE;
+			break;
+		}
+
 		mono_metadata_decode_row (tdef, start + i, cols, MONO_METHODIMPL_SIZE);
 		method = method_from_method_def_or_ref (
 			image, cols [MONO_METHODIMPL_DECLARATION], generic_context);
@@ -5718,7 +5727,7 @@ get_constraints (MonoImage *image, int owner, MonoClass ***constraints, MonoGene
 	}
 	if (!found)
 		return TRUE;
-	res = g_new0 (MonoClass*, found + 1);
+	res = mono_image_alloc0 (image, sizeof (MonoClass*) * (found + 1));
 	for (i = 0, tmp = cons; i < found; ++i, tmp = tmp->next) {
 		res [i] = tmp->data;
 	}
@@ -5778,6 +5787,9 @@ mono_metadata_has_generic_params (MonoImage *image, guint32 token)
 	return mono_metadata_get_generic_param_row (image, token, &owner);
 }
 
+/*
+ * Memory is allocated from IMAGE's mempool.
+ */
 gboolean
 mono_metadata_load_generic_param_constraints_full (MonoImage *image, guint32 token,
 					      MonoGenericContainer *container)
@@ -5803,6 +5815,7 @@ mono_metadata_load_generic_param_constraints_full (MonoImage *image, guint32 tok
  * Load the generic parameter constraints for the newly created generic type or method
  * represented by @token and @container.  The @container is the new container which has
  * been returned by a call to mono_metadata_load_generic_params() with this @token.
+ * Memory is allocated from IMAGE's mempool.
  */
 void
 mono_metadata_load_generic_param_constraints (MonoImage *image, guint32 token,
diff --git a/mono/metadata/monitor.c b/mono/metadata/monitor.c
index f4512a7..7a409e2 100644
--- a/mono/metadata/monitor.c
+++ b/mono/metadata/monitor.c
@@ -125,12 +125,26 @@ mono_monitor_init (void)
 void
 mono_monitor_cleanup (void)
 {
-	MonitorArray *marray, *next = NULL;
+	MonoThreadsSync *mon;
+	/* MonitorArray *marray, *next = NULL; */
 
 	/*DeleteCriticalSection (&monitor_mutex);*/
 
-	/* FIXME: This seems to cause crashes with SGEN
+	/* The monitors on the freelist don't have weak links - mark them */
+	for (mon = monitor_freelist; mon; mon = mon->data)
+		mon->wait_list = (gpointer)-1;
+
+	/* FIXME: This still crashes with sgen (async_read.exe) */
+	/*
 	for (marray = monitor_allocated; marray; marray = next) {
+		int i;
+
+		for (i = 0; i < marray->num_monitors; ++i) {
+			mon = &marray->monitors [i];
+			if (mon->wait_list != (gpointer)-1)
+				mono_gc_weak_link_remove (&mon->data);
+		}
+
 		next = marray->next;
 		g_free (marray);
 	}
@@ -254,6 +268,7 @@ mon_new (gsize id)
 							new->wait_list = g_slist_remove (new->wait_list, new->wait_list->data);
 						}
 					}
+					mono_gc_weak_link_remove (&new->data);
 					new->data = monitor_freelist;
 					monitor_freelist = new;
 				}
@@ -1143,6 +1158,20 @@ ves_icall_System_Threading_Monitor_Monitor_try_enter (MonoObject *obj, guint32 m
 	return res == 1;
 }
 
+void
+ves_icall_System_Threading_Monitor_Monitor_try_enter_with_atomic_var (MonoObject *obj, guint32 ms, char *lockTaken)
+{
+	gint32 res;
+	do {
+		res = mono_monitor_try_enter_internal (obj, ms, TRUE);
+		/*This means we got interrupted during the wait and didn't got the monitor.*/
+		if (res == -1)
+			mono_thread_interruption_checkpoint ();
+	} while (res == -1);
+	/*It's safe to do it from here since interruption would happen only on the wrapper.*/
+	*lockTaken = res == 1;
+}
+
 gboolean 
 ves_icall_System_Threading_Monitor_Monitor_test_owner (MonoObject *obj)
 {
diff --git a/mono/metadata/monitor.h b/mono/metadata/monitor.h
index 374e331..71ba885 100644
--- a/mono/metadata/monitor.h
+++ b/mono/metadata/monitor.h
@@ -37,6 +37,7 @@ extern gboolean ves_icall_System_Threading_Monitor_Monitor_test_synchronised(Mon
 extern void ves_icall_System_Threading_Monitor_Monitor_pulse(MonoObject *obj) MONO_INTERNAL;
 extern void ves_icall_System_Threading_Monitor_Monitor_pulse_all(MonoObject *obj) MONO_INTERNAL;
 extern gboolean ves_icall_System_Threading_Monitor_Monitor_wait(MonoObject *obj, guint32 ms) MONO_INTERNAL;
+extern void ves_icall_System_Threading_Monitor_Monitor_try_enter_with_atomic_var (MonoObject *obj, guint32 ms, char *lockTaken) MONO_INTERNAL;
 
 G_END_DECLS
 
diff --git a/mono/metadata/mono-debug-debugger.c b/mono/metadata/mono-debug-debugger.c
index 6755f63..929c3fb 100644
--- a/mono/metadata/mono-debug-debugger.c
+++ b/mono/metadata/mono-debug-debugger.c
@@ -81,7 +81,7 @@ mono_debugger_unlock (void)
 void
 mono_debugger_initialize (gboolean use_debugger)
 {
-	MONO_GC_REGISTER_ROOT (last_exception);
+	MONO_GC_REGISTER_ROOT_SINGLE (last_exception);
 	
 	g_assert (!mono_debugger_use_debugger);
 
diff --git a/mono/metadata/mono-debug.c b/mono/metadata/mono-debug.c
index ac575a2..bd468f9 100644
--- a/mono/metadata/mono-debug.c
+++ b/mono/metadata/mono-debug.c
@@ -17,6 +17,7 @@
 #include <mono/metadata/mono-debug.h>
 #include <mono/metadata/mono-debug-debugger.h>
 #include <mono/metadata/mono-endian.h>
+#include <mono/metadata/gc-internal.h>
 #include <string.h>
 
 #define DATA_TABLE_CHUNK_SIZE		16384
@@ -161,9 +162,9 @@ free_header_data (gpointer key, gpointer value, gpointer user_data)
 
 	if (header->wrapper_data) {
 		g_free ((gpointer)header->wrapper_data->method_name);
-		g_slist_free (header->address_list);
 		g_free (header->wrapper_data);
 	}
+	g_slist_free (header->address_list);
 }
 
 static void
@@ -230,6 +231,12 @@ mono_debug_init (MonoDebugFormat format)
 	mono_debug_initialized = TRUE;
 	mono_debug_format = format;
 
+	/*
+	 * This must be called before mono_debugger_initialize(), because the
+	 * latter registers GC roots.
+	 */
+	mono_gc_base_init ();
+
 	mono_debugger_initialize (_mono_debug_using_mono_debugger);
 
 	mono_debugger_lock ();
diff --git a/mono/metadata/mono-gc.h b/mono/metadata/mono-gc.h
index 750b654..f2ff92b 100644
--- a/mono/metadata/mono-gc.h
+++ b/mono/metadata/mono-gc.h
@@ -9,6 +9,8 @@
 
 MONO_BEGIN_DECLS
 
+typedef int (*MonoGCReferences) (MonoObject *obj, MonoClass *klass, uintptr_t size, uintptr_t num, MonoObject **refs, uintptr_t *offsets, void *data);
+
 void   mono_gc_collect         (int generation);
 int    mono_gc_max_generation  (void);
 int    mono_gc_get_generation  (MonoObject *object);
@@ -16,6 +18,8 @@ int    mono_gc_collection_count (int generation);
 int64_t mono_gc_get_used_size   (void);
 int64_t mono_gc_get_heap_size   (void);
 int    mono_gc_invoke_finalizers (void);
+/* heap walking is only valid in the pre-stop-world event callback */
+int    mono_gc_walk_heap        (int flags, MonoGCReferences callback, void *data);
 
 MONO_END_DECLS
 
diff --git a/mono/metadata/mono-ptr-array.h b/mono/metadata/mono-ptr-array.h
index ecc0e42..94b1f62 100644
--- a/mono/metadata/mono-ptr-array.h
+++ b/mono/metadata/mono-ptr-array.h
@@ -17,6 +17,7 @@
 
 /* This is an implementation of a growable pointer array that avoids doing memory allocations for small sizes.
  * It works by allocating an initial small array on stack and only going to gc tracked memory if needed.
+ * The array elements are assumed to be object references.
  */
 typedef struct {
 	void **data;
@@ -29,7 +30,7 @@ typedef struct {
 #define mono_ptr_array_init(ARRAY, INITIAL_SIZE) do {\
 	(ARRAY).size = 0; \
 	(ARRAY).capacity = MAX (INITIAL_SIZE, MONO_PTR_ARRAY_MAX_ON_STACK); \
-	(ARRAY).data = INITIAL_SIZE > MONO_PTR_ARRAY_MAX_ON_STACK ? mono_gc_alloc_fixed (sizeof (void*) * INITIAL_SIZE, NULL) : g_newa (void*, MONO_PTR_ARRAY_MAX_ON_STACK); \
+	(ARRAY).data = INITIAL_SIZE > MONO_PTR_ARRAY_MAX_ON_STACK ? mono_gc_alloc_fixed (sizeof (void*) * INITIAL_SIZE, mono_gc_make_root_descr_all_refs (INITIAL_SIZE)) : g_newa (void*, MONO_PTR_ARRAY_MAX_ON_STACK); \
 } while (0)
 
 #define mono_ptr_array_destroy(ARRAY) do {\
@@ -39,7 +40,7 @@ typedef struct {
 
 #define mono_ptr_array_append(ARRAY, VALUE) do { \
 	if ((ARRAY).size >= (ARRAY).capacity) {\
-		void *__tmp = mono_gc_alloc_fixed (sizeof (void*) * (ARRAY).capacity * 2, NULL); \
+	void *__tmp = mono_gc_alloc_fixed (sizeof (void*) * (ARRAY).capacity * 2, mono_gc_make_root_descr_all_refs ((ARRAY).capacity * 2)); \
 		memcpy (__tmp, (ARRAY).data, (ARRAY).capacity * sizeof (void*)); \
 		if ((ARRAY).capacity > MONO_PTR_ARRAY_MAX_ON_STACK)	\
 			mono_gc_free_fixed ((ARRAY).data);	\
diff --git a/mono/metadata/mono-wsq.c b/mono/metadata/mono-wsq.c
index c1f20bc..3c36dce 100644
--- a/mono/metadata/mono-wsq.c
+++ b/mono/metadata/mono-wsq.c
@@ -53,7 +53,7 @@ mono_wsq_create ()
 
 	wsq = g_new0 (MonoWSQ, 1);
 	wsq->mask = INITIAL_LENGTH - 1;
-	MONO_GC_REGISTER_ROOT (wsq->queue);
+	MONO_GC_REGISTER_ROOT_SINGLE (wsq->queue);
 	root = mono_get_root_domain ();
 	wsq->queue = mono_array_new_cached (root, mono_defaults.object_class, INITIAL_LENGTH);
 	MONO_SEM_INIT (&wsq->lock, 1);
@@ -191,7 +191,7 @@ mono_wsq_try_steal (MonoWSQ *wsq, void **ptr, guint32 ms_timeout)
 	if (TlsGetValue (wsq_tlskey) == wsq)
 		return;
 
-	if (MONO_SEM_TIMEDWAIT (&wsq->lock, ms_timeout)) {
+	if (mono_sem_timedwait (&wsq->lock, ms_timeout, FALSE) == 0) {
 		int head;
 
 		head = wsq->head;
diff --git a/mono/metadata/null-gc.c b/mono/metadata/null-gc.c
index b7140a2..7f37eda 100644
--- a/mono/metadata/null-gc.c
+++ b/mono/metadata/null-gc.c
@@ -80,6 +80,12 @@ mono_gc_register_thread (void *baseptr)
 	return TRUE;
 }
 
+int
+mono_gc_walk_heap (int flags, MonoGCReferences callback, void *data)
+{
+	return 1;
+}
+
 gboolean
 mono_object_is_alive (MonoObject* o)
 {
@@ -145,6 +151,12 @@ mono_gc_make_descr_from_bitmap (gsize *bitmap, int numbits)
 }
 
 void*
+mono_gc_make_root_descr_all_refs (int numbits)
+{
+	return NULL;
+}
+
+void*
 mono_gc_alloc_fixed (size_t size, void *descr)
 {
 	return g_malloc0 (size);
@@ -303,6 +315,19 @@ mono_gc_wbarrier_value_copy_bitmap (gpointer _dest, gpointer _src, int size, uns
 	g_assert_not_reached ();
 }
 
+guint8*
+mono_gc_get_card_table (int *shift_bits, gpointer *card_mask)
+{
+	g_assert_not_reached ();
+	return NULL;
+}
+
+void*
+mono_gc_get_nursery (int *shift_bits, size_t *size)
+{
+	return NULL;
+}
+
 #ifndef HOST_WIN32
 
 int
diff --git a/mono/metadata/object-internals.h b/mono/metadata/object-internals.h
index 2fa7af2..7928048 100644
--- a/mono/metadata/object-internals.h
+++ b/mono/metadata/object-internals.h
@@ -113,9 +113,11 @@
 #ifdef __GNUC__
 
 /* namespace and name should be a constant */
+/* image must be mscorlib since other assemblies can be unloaded */
 #define mono_class_from_name_cached(image,namespace,name) ({ \
 			static MonoClass *tmp_klass; \
 			if (!tmp_klass) { \
+				g_assert (image == mono_defaults.corlib); \
 				tmp_klass = mono_class_from_name ((image), (namespace), (name)); \
 				g_assert (tmp_klass); \
 			}; \
@@ -259,6 +261,11 @@ typedef struct {
 } MonoTypeLoadException;
 
 typedef struct {
+	MonoException base;
+	MonoObject *wrapped_exception;
+} MonoRuntimeWrappedException;
+
+typedef struct {
 	MonoObject   object;
 	MonoObject  *async_state;
 	MonoObject  *handle;
@@ -396,11 +403,11 @@ struct _MonoInternalThread {
 	MonoThread *root_domain_thread;
 	gpointer interrupt_on_stop;
 	gsize    flags;
+	gpointer android_tid;
 	/* 
 	 * These fields are used to avoid having to increment corlib versions
 	 * when a new field is added to the unmanaged MonoThread structure.
 	 */
-	gpointer unused4;
 	gpointer unused5;
 	gpointer unused6;
 };
@@ -641,6 +648,9 @@ mono_type_initialization_init (void) MONO_INTERNAL;
 void
 mono_type_initialization_cleanup (void) MONO_INTERNAL;
 
+int
+mono_thread_kill           (MonoInternalThread *thread, int signal) MONO_INTERNAL;
+
 guint32
 mono_thread_get_tls_key    (void) MONO_INTERNAL;
 
@@ -1384,6 +1394,9 @@ MonoType*
 mono_reflection_type_get_handle (MonoReflectionType *ref) MONO_INTERNAL;
 
 void
+mono_reflection_free_dynamic_generic_class (MonoGenericClass *gclass) MONO_INTERNAL;
+
+void
 mono_image_build_metadata (MonoReflectionModuleBuilder *module) MONO_INTERNAL;
 
 int
@@ -1520,6 +1533,12 @@ mono_class_set_ref_info (MonoClass *klass, gpointer obj) MONO_INTERNAL;
 void
 mono_class_free_ref_info (MonoClass *klass) MONO_INTERNAL;
 
+MonoObject *
+mono_object_new_pinned (MonoDomain *domain, MonoClass *klass) MONO_INTERNAL;
+
+void
+mono_field_static_get_value_for_thread (MonoInternalThread *thread, MonoVTable *vt, MonoClassField *field, void *value) MONO_INTERNAL;
+
 #endif /* __MONO_OBJECT_INTERNALS_H__ */
 
 
diff --git a/mono/metadata/object.c b/mono/metadata/object.c
index 9acb0a3..565285f 100644
--- a/mono/metadata/object.c
+++ b/mono/metadata/object.c
@@ -1709,8 +1709,12 @@ mono_method_add_generic_virtual_invocation (MonoDomain *domain, MonoVTable *vtab
 			g_ptr_array_free (sorted, TRUE);
 		}
 
+#ifndef __native_client__
+		/* We don't re-use any thunks as there is a lot of overhead */
+		/* to deleting and re-using code in Native Client.          */
 		if (old_thunk != vtable_trampoline && old_thunk != imt_trampoline)
 			invalidate_generic_virtual_thunk (domain, old_thunk);
+#endif
 	}
 
 	mono_domain_unlock (domain);
@@ -1844,6 +1848,9 @@ mono_class_create_runtime_vtable (MonoDomain *domain, MonoClass *class, gboolean
 	if (!class->vtable_size)
 		mono_class_setup_vtable (class);
 
+	if (class->generic_class && !class->vtable)
+		mono_class_check_vtable_constraints (class, NULL);
+
 	if (class->exception_type) {
 		mono_domain_unlock (domain);
 		mono_loader_unlock ();
@@ -2074,21 +2081,11 @@ mono_class_create_runtime_vtable (MonoDomain *domain, MonoClass *class, gboolean
 
 	/*FIXME check for OOM*/
 	vt->type = mono_type_get_object (domain, &class->byval_arg);
-#if HAVE_SGEN_GC
-	if (mono_object_get_class (vt->type) != mono_defaults.monotype_class) {
-		static void *type_desc = NULL;
-
-		if (!type_desc) {
-			gsize bmap = 1;
-			type_desc = mono_gc_make_descr_from_bitmap (&bmap, 1);
-		}
-
+	if (mono_object_get_class (vt->type) != mono_defaults.monotype_class)
 		/* This is unregistered in
 		   unregister_vtable_reflection_type() in
 		   domain.c. */
-		mono_gc_register_root ((char*)&vt->type, sizeof (gpointer), type_desc);
-	}
-#endif
+		MONO_GC_REGISTER_ROOT_IF_MOVING(vt->type);
 	if (class->contextbound)
 		vt->remote = 1;
 	else
@@ -2297,6 +2294,25 @@ mono_class_field_is_special_static (MonoClassField *field)
 }
 
 /**
+ * mono_class_field_get_special_static_type:
+ * @field: The MonoClassField describing the field.
+ *
+ * Returns: SPECIAL_STATIC_THREAD if the field is thread static, SPECIAL_STATIC_CONTEXT if it is context static,
+ * SPECIAL_STATIC_NONE otherwise.
+ */
+guint32
+mono_class_field_get_special_static_type (MonoClassField *field)
+{
+	if (!(field->type->attrs & FIELD_ATTRIBUTE_STATIC))
+		return SPECIAL_STATIC_NONE;
+	if (mono_field_is_deleted (field))
+		return SPECIAL_STATIC_NONE;
+	if (!(field->type->attrs & FIELD_ATTRIBUTE_LITERAL))
+		return field_is_special_static (field->parent, field);
+	return SPECIAL_STATIC_NONE;
+}
+
+/**
  * mono_class_has_special_static_fields:
  * 
  *   Returns whenever @klass has any thread/context static fields.
@@ -2911,7 +2927,11 @@ mono_field_static_set_value (MonoVTable *vt, MonoClassField *field, void *value)
 
 	if (field->offset == -1) {
 		/* Special static */
-		gpointer addr = g_hash_table_lookup (vt->domain->special_static_fields, field);
+		gpointer addr;
+
+		mono_domain_lock (vt->domain);
+		addr = g_hash_table_lookup (vt->domain->special_static_fields, field);
+		mono_domain_unlock (vt->domain);
 		dest = mono_get_special_static_data (GPOINTER_TO_UINT (addr));
 	} else {
 		dest = (char*)vt->data + field->offset;
@@ -2934,7 +2954,11 @@ mono_field_get_addr (MonoObject *obj, MonoVTable *vt, MonoClassField *field)
 	if (field->type->attrs & FIELD_ATTRIBUTE_STATIC) {
 		if (field->offset == -1) {
 			/* Special static */
-			gpointer addr = g_hash_table_lookup (vt->domain->special_static_fields, field);
+			gpointer addr;
+
+			mono_domain_lock (vt->domain);
+			addr = g_hash_table_lookup (vt->domain->special_static_fields, field);
+			mono_domain_unlock (vt->domain);
 			src = mono_get_special_static_data (GPOINTER_TO_UINT (addr));
 		} else {
 			src = (guint8*)vt->data + field->offset;
@@ -2996,6 +3020,7 @@ mono_field_get_value_object (MonoDomain *domain, MonoClassField *field, MonoObje
 	gboolean is_static = FALSE;
 	gboolean is_ref = FALSE;
 	gboolean is_literal = FALSE;
+	gboolean is_ptr = FALSE;
 	MonoError error;
 	MonoType *type = mono_field_get_type_checked (field, &error);
 
@@ -3030,6 +3055,9 @@ mono_field_get_value_object (MonoDomain *domain, MonoClassField *field, MonoObje
 	case MONO_TYPE_GENERICINST:
 		is_ref = !mono_type_generic_inst_is_valuetype (type);
 		break;
+	case MONO_TYPE_PTR:
+		is_ptr = TRUE;
+		break;
 	default:
 		g_error ("type 0x%x not handled in "
 			 "mono_field_get_value_object", type->type);
@@ -3069,6 +3097,34 @@ mono_field_get_value_object (MonoDomain *domain, MonoClassField *field, MonoObje
 		return o;
 	}
 
+	if (is_ptr) {
+		static MonoMethod *m;
+		gpointer args [2];
+		gpointer *ptr;
+		gpointer v;
+
+		if (!m) {
+			MonoClass *ptr_klass = mono_class_from_name_cached (mono_defaults.corlib, "System.Reflection", "Pointer");
+			m = mono_class_get_method_from_name_flags (ptr_klass, "Box", 2, METHOD_ATTRIBUTE_STATIC);
+			g_assert (m);
+		}
+
+		v = &ptr;
+		if (is_literal) {
+			get_default_field_value (domain, field, v);
+		} else if (is_static) {
+			mono_field_static_get_value (vtable, field, v);
+		} else {
+			mono_field_get_value (obj, field, v);
+		}
+
+		/* MONO_TYPE_PTR is passed by value to runtime_invoke () */
+		args [0] = *ptr;
+		args [1] = mono_type_get_object (mono_domain_get (), type);
+
+		return mono_runtime_invoke (m, NULL, args, NULL);
+	}
+
 	/* boxed value type */
 	klass = mono_class_from_mono_type (type);
 
@@ -3144,6 +3200,28 @@ get_default_field_value (MonoDomain* domain, MonoClassField *field, void *value)
 	mono_get_constant_value_from_blob (domain, def_type, data, value);
 }
 
+void
+mono_field_static_get_value_for_thread (MonoInternalThread *thread, MonoVTable *vt, MonoClassField *field, void *value)
+{
+	void *src;
+
+	g_return_if_fail (field->type->attrs & FIELD_ATTRIBUTE_STATIC);
+	
+	if (field->type->attrs & FIELD_ATTRIBUTE_LITERAL) {
+		get_default_field_value (vt->domain, field, value);
+		return;
+	}
+
+	if (field->offset == -1) {
+		/* Special static */
+		gpointer addr = g_hash_table_lookup (vt->domain->special_static_fields, field);
+		src = mono_get_special_static_data_for_thread (thread, GPOINTER_TO_UINT (addr));
+	} else {
+		src = (char*)vt->data + field->offset;
+	}
+	set_value (field->type, value, src, TRUE);
+}
+
 /**
  * mono_field_static_get_value:
  * @vt: vtable to the object
@@ -3163,23 +3241,7 @@ get_default_field_value (MonoDomain* domain, MonoClassField *field, void *value)
 void
 mono_field_static_get_value (MonoVTable *vt, MonoClassField *field, void *value)
 {
-	void *src;
-
-	g_return_if_fail (field->type->attrs & FIELD_ATTRIBUTE_STATIC);
-	
-	if (field->type->attrs & FIELD_ATTRIBUTE_LITERAL) {
-		get_default_field_value (vt->domain, field, value);
-		return;
-	}
-
-	if (field->offset == -1) {
-		/* Special static */
-		gpointer addr = g_hash_table_lookup (vt->domain->special_static_fields, field);
-		src = mono_get_special_static_data (GPOINTER_TO_UINT (addr));
-	} else {
-		src = (char*)vt->data + field->offset;
-	}
-	set_value (field->type, value, src, TRUE);
+	return mono_field_static_get_value_for_thread (mono_thread_internal_current (), vt, field, value);
 }
 
 /**
@@ -3387,6 +3449,7 @@ mono_runtime_run_main (MonoMethod *method, int argc, char* argv[],
 	MonoArray *args = NULL;
 	MonoDomain *domain = mono_domain_get ();
 	gchar *utf8_fullpath;
+	MonoMethodSignature *sig;
 
 	g_assert (method != NULL);
 	
@@ -3441,7 +3504,14 @@ mono_runtime_run_main (MonoMethod *method, int argc, char* argv[],
 	}
 	argc--;
 	argv++;
-	if (mono_method_signature (method)->param_count) {
+
+	sig = mono_method_signature (method);
+	if (!sig) {
+		g_print ("Unable to load Main method.\n");
+		exit (-1);
+	}
+
+	if (sig->param_count) {
 		args = (MonoArray*)mono_array_new (domain, mono_defaults.string_class, argc);
 		for (i = 0; i < argc; ++i) {
 			/* The encodings should all work, given that
@@ -4157,6 +4227,29 @@ mono_object_new (MonoDomain *domain, MonoClass *klass)
 }
 
 /**
+ * mono_object_new_pinned:
+ *
+ *   Same as mono_object_new, but the returned object will be pinned.
+ * For SGEN, these objects will only be freed at appdomain unload.
+ */
+MonoObject *
+mono_object_new_pinned (MonoDomain *domain, MonoClass *klass)
+{
+	MonoVTable *vtable;
+
+	MONO_ARCH_SAVE_REGS;
+	vtable = mono_class_vtable (domain, klass);
+	if (!vtable)
+		return NULL;
+
+#ifdef HAVE_SGEN_GC
+	return mono_gc_alloc_pinned_obj (vtable, mono_class_instance_size (klass));
+#else
+	return mono_object_new_specific (vtable);
+#endif
+}
+
+/**
  * mono_object_new_specific:
  * @vtable: the vtable of the object that we want to create
  *
@@ -5107,8 +5200,10 @@ mono_string_get_pinned (MonoString *str)
 	MonoString *news;
 	size = sizeof (MonoString) + 2 * (mono_string_length (str) + 1);
 	news = mono_gc_alloc_pinned_obj (((MonoObject*)str)->vtable, size);
-	memcpy (mono_string_chars (news), mono_string_chars (str), mono_string_length (str) * 2);
-	news->length = mono_string_length (str);
+	if (news) {
+		memcpy (mono_string_chars (news), mono_string_chars (str), mono_string_length (str) * 2);
+		news->length = mono_string_length (str);
+	}
 	return news;
 }
 
@@ -5132,7 +5227,8 @@ mono_string_is_interned_lookup (MonoString *str, int insert)
 	}
 	if (insert) {
 		str = mono_string_get_pinned (str);
-		mono_g_hash_table_insert (ldstr_table, str, str);
+		if (str)
+			mono_g_hash_table_insert (ldstr_table, str, str);
 		ldstr_unlock ();
 		return str;
 	} else {
@@ -5241,7 +5337,8 @@ mono_ldstr_metadata_sig (MonoDomain *domain, const char* sig)
 	}
 
 	o = mono_string_get_pinned (o);
-	mono_g_hash_table_insert (domain->ldstr_table, o, o);
+	if (o)
+		mono_g_hash_table_insert (domain->ldstr_table, o, o);
 	ldstr_unlock ();
 
 	return o;
@@ -5767,14 +5864,18 @@ mono_print_unhandled_exception (MonoObject *exc)
 	gboolean free_message = FALSE;
 	MonoError error;
 
-	str = mono_object_to_string (exc, NULL);
-	if (str) {
-		message = mono_string_to_utf8_checked (str, &error);
-		if (!mono_error_ok (&error)) {
-			mono_error_cleanup (&error);
-			message = (char *) "";
-		} else {
-			free_message = TRUE;
+	if (exc == (MonoObject*)mono_object_domain (exc)->out_of_memory_ex) {
+		message = g_strdup ("OutOfMemoryException");
+	} else {
+		str = mono_object_to_string (exc, NULL);
+		if (str) {
+			message = mono_string_to_utf8_checked (str, &error);
+			if (!mono_error_ok (&error)) {
+				mono_error_cleanup (&error);
+				message = (char *) "";
+			} else {
+				free_message = TRUE;
+			}
 		}
 	}
 
diff --git a/mono/metadata/pedump.c b/mono/metadata/pedump.c
index 5822bde..d6c159d 100644
--- a/mono/metadata/pedump.c
+++ b/mono/metadata/pedump.c
@@ -39,6 +39,10 @@ gboolean verify_metadata = FALSE;
 gboolean verify_code = FALSE;
 gboolean verify_partial_md = FALSE;
 
+static MonoAssembly *pedump_preload (MonoAssemblyName *aname, gchar **assemblies_path, gpointer user_data);
+static void pedump_assembly_load_hook (MonoAssembly *assembly, gpointer user_data);
+static MonoAssembly *pedump_assembly_search_hook (MonoAssemblyName *aname, gpointer user_data);
+
 /* unused
 static void
 hex_dump (const char *buffer, int base, int count)
@@ -445,15 +449,27 @@ verify_image_file (const char *fname)
 
 	mono_image_load_names (image);
 
-	if (!verify_partial_md && !mono_verifier_verify_full_table_data (image, &errors))
-		goto invalid_image;
-
 	/*fake an assembly for class loading to work*/
 	assembly = g_new0 (MonoAssembly, 1);
 	assembly->in_gac = FALSE;
 	assembly->image = image;
 	image->assembly = assembly;
 
+	/*Finish initializing the runtime*/
+	mono_install_assembly_load_hook (pedump_assembly_load_hook, NULL);
+	mono_install_assembly_search_hook (pedump_assembly_search_hook, NULL);
+
+	mono_init_version ("pedump", image->version);
+
+	mono_install_assembly_preload_hook (pedump_preload, GUINT_TO_POINTER (FALSE));
+
+	mono_marshal_init ();
+
+
+	if (!verify_partial_md && !mono_verifier_verify_full_table_data (image, &errors))
+		goto invalid_image;
+
+
 	table = &image->tables [MONO_TABLE_TYPEDEF];
 	for (i = 1; i <= table->rows; ++i) {
 		guint32 token = i | MONO_TOKEN_TYPE_DEF;
@@ -675,14 +691,6 @@ main (int argc, char *argv [])
 	}
 
 	if (verify_pe || run_new_metadata_verifier) {
-		mono_install_assembly_load_hook (pedump_assembly_load_hook, NULL);
-		mono_install_assembly_search_hook (pedump_assembly_search_hook, NULL);
-
-		mono_init_version ("pedump", "v2.0.50727");
-
-		mono_install_assembly_preload_hook (pedump_preload, GUINT_TO_POINTER (FALSE));
-
-		mono_marshal_init ();
 		run_new_metadata_verifier = 1;
 	}
 	
diff --git a/mono/metadata/process.c b/mono/metadata/process.c
index 01a29bc..f970878 100644
--- a/mono/metadata/process.c
+++ b/mono/metadata/process.c
@@ -65,7 +65,7 @@ void ves_icall_System_Diagnostics_Process_Process_free_internal (MonoObject *thi
 	g_message ("%s: Closing process %p, handle %p", __func__, this, process);
 #endif
 
-#if TARGET_WIN32
+#if defined(TARGET_WIN32) || defined(HOST_WIN32)
 	CloseHandle (process);
 #else
 	CloseProcess (process);
@@ -891,25 +891,38 @@ MonoArray *ves_icall_System_Diagnostics_Process_GetProcesses_internal (void)
 	MonoArray *procs;
 	gboolean ret;
 	DWORD needed;
-	guint32 count, i;
-	DWORD pids[1024];
+	guint32 count;
+	guint32 *pids;
 
 	MONO_ARCH_SAVE_REGS;
 
-	ret=EnumProcesses (pids, sizeof(pids), &needed);
-	if(ret==FALSE) {
-		/* FIXME: throw an exception */
-		return(NULL);
-	}
-	
-	count=needed/sizeof(DWORD);
-	procs=mono_array_new (mono_domain_get (), mono_get_int32_class (),
-			      count);
-	for(i=0; i<count; i++) {
-		mono_array_set (procs, guint32, i, pids[i]);
-	}
+	count = 512;
+	do {
+		pids = g_new0 (guint32, count);
+		ret = EnumProcesses (pids, count * sizeof (guint32), &needed);
+		if (ret == FALSE) {
+			MonoException *exc;
+
+			g_free (pids);
+			pids = NULL;
+			exc = mono_get_exception_not_supported ("This system does not support EnumProcesses");
+			mono_raise_exception (exc);
+			g_assert_not_reached ();
+		}
+		if (needed < (count * sizeof (guint32)))
+			break;
+		g_free (pids);
+		pids = NULL;
+		count = (count * 3) / 2;
+	} while (TRUE);
+
+	count = needed / sizeof (guint32);
+	procs = mono_array_new (mono_domain_get (), mono_get_int32_class (), count);
+	memcpy (mono_array_addr (procs, guint32, 0), pids, needed);
+	g_free (pids);
+	pids = NULL;
 	
-	return(procs);
+	return procs;
 }
 
 MonoBoolean ves_icall_System_Diagnostics_Process_GetWorkingSet_internal (HANDLE process, guint32 *min, guint32 *max)
diff --git a/mono/metadata/profiler-private.h b/mono/metadata/profiler-private.h
index ff98938..18ec96b 100644
--- a/mono/metadata/profiler-private.h
+++ b/mono/metadata/profiler-private.h
@@ -42,6 +42,7 @@ int  mono_profiler_stat_get_call_chain_depth (void) MONO_INTERNAL;
 MonoProfilerCallChainStrategy  mono_profiler_stat_get_call_chain_strategy (void) MONO_INTERNAL;
 void mono_profiler_thread_start    (gsize tid) MONO_INTERNAL;
 void mono_profiler_thread_end      (gsize tid) MONO_INTERNAL;
+void mono_profiler_thread_name     (gsize tid, const char *name) MONO_INTERNAL;
 
 void mono_profiler_exception_thrown         (MonoObject *exception) MONO_INTERNAL;
 void mono_profiler_exception_method_leave   (MonoMethod *method) MONO_INTERNAL;
@@ -67,6 +68,8 @@ void                     mono_profiler_coverage_free  (MonoMethod *method) MONO_
 void mono_profiler_gc_event       (MonoGCEvent e, int generation) MONO_INTERNAL;
 void mono_profiler_gc_heap_resize (gint64 new_size) MONO_INTERNAL;
 void mono_profiler_gc_moves       (void **objects, int num) MONO_INTERNAL;
+void mono_profiler_gc_handle      (int op, int type, uintptr_t handle, MonoObject *obj) MONO_INTERNAL;
+void mono_profiler_gc_roots       (int num, void **objects, int *root_types, uintptr_t *extra_info) MONO_INTERNAL;
 
 void mono_profiler_code_chunk_new (gpointer chunk, int size) MONO_INTERNAL;
 void mono_profiler_code_chunk_destroy (gpointer chunk) MONO_INTERNAL;
diff --git a/mono/metadata/profiler.c b/mono/metadata/profiler.c
index faf0794..1cd73ee 100644
--- a/mono/metadata/profiler.c
+++ b/mono/metadata/profiler.c
@@ -80,6 +80,7 @@ struct _ProfilerDesc {
 
 	MonoProfileThreadFunc   thread_start;
 	MonoProfileThreadFunc   thread_end;
+	MonoProfileThreadNameFunc   thread_name;
 
 	MonoProfileCoverageFilterFunc coverage_filter_cb;
 
@@ -88,6 +89,8 @@ struct _ProfilerDesc {
 	MonoProfileGCFunc        gc_event;
 	MonoProfileGCResizeFunc  gc_heap_resize;
 	MonoProfileGCMoveFunc    gc_moves;
+	MonoProfileGCHandleFunc  gc_handle;
+	MonoProfileGCRootFunc    gc_roots;
 
 	MonoProfileFunc          runtime_initialized_event;
 
@@ -237,6 +240,14 @@ mono_profiler_install_thread (MonoProfileThreadFunc start, MonoProfileThreadFunc
 }
 
 void 
+mono_profiler_install_thread_name (MonoProfileThreadNameFunc thread_name_cb)
+{
+	if (!prof_list)
+		return;
+	prof_list->thread_name = thread_name_cb;
+}
+
+void 
 mono_profiler_install_transition (MonoProfileMethodResult callback)
 {
 	if (!prof_list)
@@ -540,6 +551,16 @@ mono_profiler_thread_end (gsize tid)
 	}
 }
 
+void
+mono_profiler_thread_name (gsize tid, const char *name)
+{
+	ProfilerDesc *prof;
+	for (prof = prof_list; prof; prof = prof->next) {
+		if ((prof->events & MONO_PROFILE_THREADS) && prof->thread_name)
+			prof->thread_name (prof->profiler, tid, name);
+	}
+}
+
 void 
 mono_profiler_assembly_event  (MonoAssembly *assembly, int code)
 {
@@ -740,6 +761,26 @@ mono_profiler_gc_moves (void **objects, int num)
 }
 
 void
+mono_profiler_gc_handle (int op, int type, uintptr_t handle, MonoObject *obj)
+{
+	ProfilerDesc *prof;
+	for (prof = prof_list; prof; prof = prof->next) {
+		if ((prof->events & MONO_PROFILE_GC_ROOTS) && prof->gc_handle)
+			prof->gc_handle (prof->profiler, op, type, handle, obj);
+	}
+}
+
+void
+mono_profiler_gc_roots (int num, void **objects, int *root_types, uintptr_t *extra_info)
+{
+	ProfilerDesc *prof;
+	for (prof = prof_list; prof; prof = prof->next) {
+		if ((prof->events & MONO_PROFILE_GC_ROOTS) && prof->gc_roots)
+			prof->gc_roots (prof->profiler, num, objects, root_types, extra_info);
+	}
+}
+
+void
 mono_profiler_install_gc (MonoProfileGCFunc callback, MonoProfileGCResizeFunc heap_resize_callback)
 {
 	mono_gc_enable_events ();
@@ -771,6 +812,31 @@ mono_profiler_install_gc_moves (MonoProfileGCMoveFunc callback)
 	prof_list->gc_moves = callback;
 }
 
+/**
+ * mono_profiler_install_gc_roots:
+ * @handle_callback: callback function
+ * @roots_callback: callback function
+ *
+ * Install the @handle_callback function that the GC will call when GC
+ * handles are created or destroyed.
+ * The callback receives an operation, which is either #MONO_PROFILER_GC_HANDLE_CREATED
+ * or #MONO_PROFILER_GC_HANDLE_DESTROYED, the handle type, the handle value and the
+ * object pointer, if present.
+ * Install the @roots_callback function that the GC will call when tracing
+ * the roots for a collection.
+ * The callback receives the number of elements and three arrays: an array
+ * of objects, an array of root types and flags and an array of extra info.
+ * The size of each array is given by the first argument.
+ */
+void
+mono_profiler_install_gc_roots (MonoProfileGCHandleFunc handle_callback, MonoProfileGCRootFunc roots_callback)
+{
+	if (!prof_list)
+		return;
+	prof_list->gc_handle = handle_callback;
+	prof_list->gc_roots = roots_callback;
+}
+
 void
 mono_profiler_install_runtime_initialized (MonoProfileFunc runtime_initialized_callback)
 {
@@ -960,937 +1026,6 @@ mono_profiler_coverage_get (MonoProfiler *prof, MonoMethod *method, MonoProfileC
 	mono_metadata_free_mh (header);
 }
 
-#ifndef DISABLE_PROFILER
-/*
- * Small profiler extracted from mint: we should move it in a loadable module
- * and improve it to do graphs and more accurate timestamping with rdtsc.
- */
-
-static FILE* poutput = NULL;
-
-#define USE_X86TSC 0
-#define USE_WIN32COUNTER 0
-#if USE_X86TSC
-
-typedef struct {
-	unsigned int lows, highs, lowe, highe;
-} MonoRdtscTimer;
-
-#define rdtsc(low,high) \
-        __asm__ __volatile__("rdtsc" : "=a" (low), "=d" (high))
-
-static int freq;
-
-static double
-rdtsc_elapsed (MonoRdtscTimer *t)
-{
-	unsigned long long diff;
-	unsigned int highe = t->highe;
-	if (t->lowe < t->lows)
-		highe--;
-	diff = (((unsigned long long) highe - t->highs) << 32) + (t->lowe - t->lows);
-	return ((double)diff / freq) / 1000000; /* have to return the result in seconds */
-}
-
-static int 
-have_rdtsc (void) {
-	char buf[256];
-	int have_freq = 0;
-	int have_flag = 0;
-	float val;
-	FILE *cpuinfo;
-
-	if (!(cpuinfo = fopen ("/proc/cpuinfo", "r")))
-		return 0;
-	while (fgets (buf, sizeof(buf), cpuinfo)) {
-		if (sscanf (buf, "cpu MHz : %f", &val) == 1) {
-			/*printf ("got mh: %f\n", val);*/
-			have_freq = val;
-		}
-		if (strncmp (buf, "flags", 5) == 0) {
-			if (strstr (buf, "tsc")) {
-				have_flag = 1;
-				/*printf ("have tsc\n");*/
-			}
-		}
-	}
-	fclose (cpuinfo);
-	return have_flag? have_freq: 0;
-}
-
-#define MONO_TIMER_STARTUP 	\
-	if (!(freq = have_rdtsc ())) g_error ("Compiled with TSC support, but none found");
-#define MONO_TIMER_TYPE  MonoRdtscTimer
-#define MONO_TIMER_INIT(t)
-#define MONO_TIMER_DESTROY(t)
-#define MONO_TIMER_START(t) rdtsc ((t).lows, (t).highs);
-#define MONO_TIMER_STOP(t) rdtsc ((t).lowe, (t).highe);
-#define MONO_TIMER_ELAPSED(t) rdtsc_elapsed (&(t))
-
-#elif USE_WIN32COUNTER
-#include <windows.h>
-
-typedef struct {
-	LARGE_INTEGER start, stop;
-} MonoWin32Timer;
-
-static int freq;
-
-static double
-win32_elapsed (MonoWin32Timer *t)
-{
-	LONGLONG diff = t->stop.QuadPart - t->start.QuadPart;
-	return ((double)diff / freq) / 1000000; /* have to return the result in seconds */
-}
-
-static int 
-have_win32counter (void) {
-	LARGE_INTEGER f;
-
-	if (!QueryPerformanceFrequency (&f))
-		return 0;
-	return f.LowPart;
-}
-
-#define MONO_TIMER_STARTUP 	\
-	if (!(freq = have_win32counter ())) g_error ("Compiled with Win32 counter support, but none found");
-#define MONO_TIMER_TYPE  MonoWin32Timer
-#define MONO_TIMER_INIT(t)
-#define MONO_TIMER_DESTROY(t)
-#define MONO_TIMER_START(t) QueryPerformanceCounter (&(t).start)
-#define MONO_TIMER_STOP(t) QueryPerformanceCounter (&(t).stop)
-#define MONO_TIMER_ELAPSED(t) win32_elapsed (&(t))
-
-#else
-
-typedef struct {
-	GTimeVal start, stop;
-} MonoGLibTimer;
-
-static double
-timeval_elapsed (MonoGLibTimer *t)
-{
-	if (t->start.tv_usec > t->stop.tv_usec) {
-		t->stop.tv_usec += G_USEC_PER_SEC;
-		t->stop.tv_sec--;
-	}
-	return (t->stop.tv_sec - t->start.tv_sec) 
-		+ ((double)(t->stop.tv_usec - t->start.tv_usec))/ G_USEC_PER_SEC;
-}
-
-#define MONO_TIMER_STARTUP
-#define MONO_TIMER_TYPE MonoGLibTimer
-#define MONO_TIMER_INIT(t)
-#define MONO_TIMER_DESTROY(t)
-#define MONO_TIMER_START(t) g_get_current_time (&(t).start)
-#define MONO_TIMER_STOP(t) g_get_current_time (&(t).stop)
-#define MONO_TIMER_ELAPSED(t) timeval_elapsed (&(t))
-#endif
-
-typedef struct _AllocInfo AllocInfo;
-typedef struct _CallerInfo CallerInfo;
-typedef struct _LastCallerInfo LastCallerInfo;
-
-struct _MonoProfiler {
-	GHashTable *methods;
-	MonoMemPool *mempool;
-	GSList *domains;
-	/* info about JIT time */
-	MONO_TIMER_TYPE jit_timer;
-	double      jit_time;
-	double      max_jit_time;
-	MonoMethod *max_jit_method;
-	int         methods_jitted;
-	
-	GSList     *per_thread;
-	
-	/* chain of callers for the current thread */
-	LastCallerInfo *callers;
-	/* LastCallerInfo nodes for faster allocation */
-	LastCallerInfo *cstorage;
-};
-
-typedef struct {
-	MonoMethod *method;
-	guint64 count;
-	double total;
-	AllocInfo *alloc_info;
-	CallerInfo *caller_info;
-} MethodProfile;
-
-typedef struct _MethodCallProfile MethodCallProfile;
-
-struct _MethodCallProfile {
-	MethodCallProfile *next;
-	MONO_TIMER_TYPE timer;
-	MonoMethod *method;
-};
-
-struct _AllocInfo {
-	AllocInfo *next;
-	MonoClass *klass;
-	guint64 count;
-	guint64 mem;
-};
-
-struct _CallerInfo {
-	CallerInfo *next;
-	MonoMethod *caller;
-	guint count;
-};
-
-struct _LastCallerInfo {
-	LastCallerInfo *next;
-	MonoMethod *method;
-	MONO_TIMER_TYPE timer;
-};
-
-static MonoProfiler*
-create_profiler (void)
-{
-	MonoProfiler *prof = g_new0 (MonoProfiler, 1);
-
-	prof->methods = g_hash_table_new (mono_aligned_addr_hash, NULL);
-	MONO_TIMER_INIT (prof->jit_timer);
-	prof->mempool = mono_mempool_new ();
-	return prof;
-}
-#if 1
-
-#ifdef HAVE_KW_THREAD
-	static __thread MonoProfiler * tls_profiler;
-#	define GET_PROFILER() tls_profiler
-#	define SET_PROFILER(x) tls_profiler = (x)
-#	define ALLOC_PROFILER() /* nop */
-#else
-	static guint32 profiler_thread_id = -1;
-#	define GET_PROFILER() ((MonoProfiler *)TlsGetValue (profiler_thread_id))
-#	define SET_PROFILER(x) TlsSetValue (profiler_thread_id, x);
-#	define ALLOC_PROFILER() profiler_thread_id = TlsAlloc ()
-#endif
-
-#define GET_THREAD_PROF(prof) do {                                                           \
-		MonoProfiler *_tprofiler = GET_PROFILER ();                                  \
-		if (!_tprofiler) {	                                                     \
-			_tprofiler = create_profiler ();                                     \
-			prof->per_thread = g_slist_prepend (prof->per_thread, _tprofiler);   \
-			SET_PROFILER (_tprofiler);                                           \
-		}	                                                                     \
-		prof = _tprofiler;	                                                     \
-	} while (0)
-#else
-/* thread unsafe but faster variant */
-#define GET_THREAD_PROF(prof)
-#endif
-
-static gint
-compare_profile (MethodProfile *profa, MethodProfile *profb)
-{
-	return (gint)((profb->total - profa->total)*1000);
-}
-
-static void
-build_profile (MonoMethod *m, MethodProfile *prof, GList **funcs)
-{
-	prof->method = m;
-	*funcs = g_list_insert_sorted (*funcs, prof, (GCompareFunc)compare_profile);
-}
-
-static char*
-method_get_name (MonoMethod* method)
-{
-	char *sig, *res;
-	
-	sig = mono_signature_get_desc (mono_method_signature (method), FALSE);
-	res = g_strdup_printf ("%s%s%s::%s(%s)", method->klass->name_space,
-			method->klass->name_space ? "." : "", method->klass->name,
-		method->name, sig);
-	g_free (sig);
-	return res;
-}
-
-static void output_callers (MethodProfile *p);
-
-/* This isn't defined on older glib versions and on some platforms */
-#ifndef G_GUINT64_FORMAT
-#define G_GUINT64_FORMAT "ul"
-#endif
-#ifndef G_GINT64_FORMAT
-#define G_GINT64_FORMAT "lld"
-#endif
-
-static void
-output_profile (GList *funcs)
-{
-	GList *tmp;
-	MethodProfile *p;
-	char *m;
-	guint64 total_calls = 0;
-
-	if (funcs)
-		fprintf (poutput, "Time(ms) Count   P/call(ms) Method name\n");
-	for (tmp = funcs; tmp; tmp = tmp->next) {
-		p = tmp->data;
-		total_calls += p->count;
-		if (!(gint)(p->total*1000))
-			continue;
-		m = method_get_name (p->method);
-		fprintf (poutput, "########################\n");
-		fprintf (poutput, "% 8.3f ", (double) (p->total * 1000));
-		fprintf (poutput, "%7" G_GUINT64_FORMAT " ", (guint64)p->count);
-		fprintf (poutput, "% 8.3f ", (double) (p->total * 1000)/(double)p->count);
-		fprintf (poutput, "  %s\n", m);
-
-		g_free (m);
-		/* callers */
-		output_callers (p);
-	}
-	fprintf (poutput, "Total number of calls: %" G_GINT64_FORMAT "\n", (gint64)total_calls);
-}
-
-typedef struct {
-	MethodProfile *mp;
-	guint64 count;
-} NewobjProfile;
-
-static gint
-compare_newobj_profile (NewobjProfile *profa, NewobjProfile *profb)
-{
-	if (profb->count == profa->count)
-		return 0;
-	else
-		return profb->count > profa->count ? 1 : -1;
-}
-
-static void
-build_newobj_profile (MonoClass *class, MethodProfile *mprof, GList **funcs)
-{
-	NewobjProfile *prof = g_new (NewobjProfile, 1);
-	AllocInfo *tmp;
-	guint64 count = 0;
-	
-	prof->mp = mprof;
-	/* we use the total amount of memory to sort */
-	for (tmp = mprof->alloc_info; tmp; tmp = tmp->next)
-		count += tmp->mem;
-	prof->count = count;
-	*funcs = g_list_insert_sorted (*funcs, prof, (GCompareFunc)compare_newobj_profile);
-}
-
-static int
-compare_caller (CallerInfo *a, CallerInfo *b)
-{
-	return b->count - a->count;
-}
-
-static int
-compare_alloc (AllocInfo *a, AllocInfo *b)
-{
-	return b->mem - a->mem;
-}
-
-static GSList*
-sort_alloc_list (AllocInfo *ai)
-{
-	GSList *l = NULL;
-	AllocInfo *tmp;
-	for (tmp = ai; tmp; tmp = tmp->next) {
-		l = g_slist_insert_sorted (l, tmp, (GCompareFunc)compare_alloc);
-	}
-	return l;
-}
-
-static GSList*
-sort_caller_list (CallerInfo *ai)
-{
-	GSList *l = NULL;
-	CallerInfo *tmp;
-	for (tmp = ai; tmp; tmp = tmp->next) {
-		l = g_slist_insert_sorted (l, tmp, (GCompareFunc)compare_caller);
-	}
-	return l;
-}
-
-static void
-output_callers (MethodProfile *p) {
-	guint total_callers, percent;
-	GSList *sorted, *tmps;
-	CallerInfo *cinfo;
-	char *m;
-	
-	fprintf (poutput, "  Callers (with count) that contribute at least for 1%%:\n");
-	total_callers = 0;
-	for (cinfo = p->caller_info; cinfo; cinfo = cinfo->next) {
-		total_callers += cinfo->count;
-	}
-	sorted = sort_caller_list (p->caller_info);
-	for (tmps = sorted; tmps; tmps = tmps->next) {
-		cinfo = tmps->data;
-		percent = (cinfo->count * 100)/total_callers;
-		if (percent < 1)
-			continue;
-		m = method_get_name (cinfo->caller);
-		fprintf (poutput, "    %8d % 3d %% %s\n", cinfo->count, percent, m);
-		g_free (m);
-	}
-}
-
-static int moved_objects = 0;
-static void
-simple_gc_move (MonoProfiler *prof, void **objects, int num)
-{
-	moved_objects += num / 2;
-}
-
-static void
-output_newobj_profile (GList *proflist)
-{
-	GList *tmp;
-	NewobjProfile *p;
-	MethodProfile *mp;
-	AllocInfo *ainfo;
-	MonoClass *klass;
-	const char* isarray;
-	char buf [256];
-	char *m;
-	guint64 total = 0;
-	GSList *sorted, *tmps;
-
-	fprintf (poutput, "\nAllocation profiler\n");
-
-	if (proflist)
-		fprintf (poutput, "%-9s %s\n", "Total mem", "Method");
-	for (tmp = proflist; tmp; tmp = tmp->next) {
-		p = tmp->data;
-		total += p->count;
-		if (p->count < 50000)
-			continue;
-		mp = p->mp;
-		m = method_get_name (mp->method);
-		fprintf (poutput, "########################\n%8" G_GUINT64_FORMAT " KB %s\n", (p->count / 1024), m);
-		g_free (m);
-		sorted = sort_alloc_list (mp->alloc_info);
-		for (tmps = sorted; tmps; tmps = tmps->next) {
-			ainfo = tmps->data;
-			if (ainfo->mem < 50000)
-				continue;
-			klass = ainfo->klass;
-			if (klass->rank) {
-				isarray = "[]";
-				klass = klass->element_class;
-			} else {
-				isarray = "";
-			}
-			g_snprintf (buf, sizeof (buf), "%s%s%s%s",
-				klass->name_space, klass->name_space ? "." : "", klass->name, isarray);
-			fprintf (poutput, "    %8" G_GUINT64_FORMAT " KB %8" G_GUINT64_FORMAT " %-48s\n", (ainfo->mem / 1024), ainfo->count, buf);
-		}
-		/* callers */
-		output_callers (mp);
-	}
-	fprintf (poutput, "Total memory allocated: %" G_GUINT64_FORMAT " KB\n", total / 1024);
-	fprintf (poutput, "Objects copied: %d\n", moved_objects);
-}
-
-static void
-merge_methods (MonoMethod *method, MethodProfile *profile, MonoProfiler *prof)
-{
-	MethodProfile *mprof;
-	AllocInfo *talloc_info, *alloc_info;
-	CallerInfo *tcaller_info, *caller_info;
-
-	mprof = g_hash_table_lookup (prof->methods, method);
-	if (!mprof) {
-		/* the master thread didn't see this method, just transfer the info as is */
-		g_hash_table_insert (prof->methods, method, profile);
-		return;
-	}
-	/* merge the info from profile into mprof */
-	mprof->count += profile->count;
-	mprof->total += profile->total;
-	/* merge alloc info */
-	for (talloc_info = profile->alloc_info; talloc_info; talloc_info = talloc_info->next) {
-		for (alloc_info = mprof->alloc_info; alloc_info; alloc_info = alloc_info->next) {
-			if (alloc_info->klass == talloc_info->klass) {
-				/* mprof already has a record for the klass, merge */
-				alloc_info->count += talloc_info->count;
-				alloc_info->mem += talloc_info->mem;
-				break;
-			}
-		}
-		if (!alloc_info) {
-			/* mprof didn't have the info, just copy it over */
-			alloc_info = mono_mempool_alloc0 (prof->mempool, sizeof (AllocInfo));
-			*alloc_info = *talloc_info;
-			alloc_info->next = mprof->alloc_info;
-			mprof->alloc_info = alloc_info->next;
-		}
-	}
-	/* merge callers info */
-	for (tcaller_info = profile->caller_info; tcaller_info; tcaller_info = tcaller_info->next) {
-		for (caller_info = mprof->caller_info; caller_info; caller_info = caller_info->next) {
-			if (caller_info->caller == tcaller_info->caller) {
-				/* mprof already has a record for the caller method, merge */
-				caller_info->count += tcaller_info->count;
-				break;
-			}
-		}
-		if (!caller_info) {
-			/* mprof didn't have the info, just copy it over */
-			caller_info = mono_mempool_alloc0 (prof->mempool, sizeof (CallerInfo));
-			*caller_info = *tcaller_info;
-			caller_info->next = mprof->caller_info;
-			mprof->caller_info = caller_info;
-		}
-	}
-}
-
-static void
-merge_thread_data (MonoProfiler *master, MonoProfiler *tprof)
-{
-	master->jit_time += tprof->jit_time;
-	master->methods_jitted += tprof->methods_jitted;
-	if (master->max_jit_time < tprof->max_jit_time) {
-		master->max_jit_time = tprof->max_jit_time;
-		master->max_jit_method = tprof->max_jit_method;
-	}
-
-	g_hash_table_foreach (tprof->methods, (GHFunc)merge_methods, master);
-}
-
-static void
-simple_method_enter (MonoProfiler *prof, MonoMethod *method)
-{
-	MethodProfile *profile_info;
-	LastCallerInfo *callinfo;
-	GET_THREAD_PROF (prof);
-	/*g_print ("enter %p %s::%s in %d (%p)\n", method, method->klass->name, method->name, GetCurrentThreadId (), prof);*/
-	if (!(profile_info = g_hash_table_lookup (prof->methods, method))) {
-		profile_info = mono_mempool_alloc0 (prof->mempool, sizeof (MethodProfile));
-		MONO_TIMER_INIT (profile_info->u.timer);
-		g_hash_table_insert (prof->methods, method, profile_info);
-	}
-	profile_info->count++;
-	if (prof->callers) {
-		CallerInfo *cinfo;
-		MonoMethod *caller = prof->callers->method;
-		for (cinfo = profile_info->caller_info; cinfo; cinfo = cinfo->next) {
-			if (cinfo->caller == caller)
-				break;
-		}
-		if (!cinfo) {
-			cinfo = mono_mempool_alloc0 (prof->mempool, sizeof (CallerInfo));
-			cinfo->caller = caller;
-			cinfo->next = profile_info->caller_info;
-			profile_info->caller_info = cinfo;
-		}
-		cinfo->count++;
-	}
-	if (!(callinfo = prof->cstorage)) {
-		callinfo = mono_mempool_alloc (prof->mempool, sizeof (LastCallerInfo));
-		MONO_TIMER_INIT (callinfo->timer);
-	} else {
-		prof->cstorage = prof->cstorage->next;
-	}
-	callinfo->method = method;
-	callinfo->next = prof->callers;
-	prof->callers = callinfo;
-	MONO_TIMER_START (callinfo->timer);
-}
-
-static void
-simple_method_leave (MonoProfiler *prof, MonoMethod *method)
-{
-	MethodProfile *profile_info;
-	LastCallerInfo *callinfo, *newcallinfo = NULL;
-	
-	GET_THREAD_PROF (prof);
-	/*g_print ("leave %p %s::%s in %d (%p)\n", method, method->klass->name, method->name, GetCurrentThreadId (), prof);*/
-	callinfo = prof->callers;
-	/* should really not happen, but we don't catch exceptions events, yet ... */
-	while (callinfo) {
-		MONO_TIMER_STOP (callinfo->timer);
-		profile_info = g_hash_table_lookup (prof->methods, callinfo->method);
-		if (profile_info)
-			profile_info->total += MONO_TIMER_ELAPSED (callinfo->timer);
-		newcallinfo = callinfo->next;
-		callinfo->next = prof->cstorage;
-		prof->cstorage = callinfo;
-		if (callinfo->method == method)
-			break;
-		callinfo = newcallinfo;
-	}
-	prof->callers = newcallinfo;
-}
-
-static void
-simple_allocation (MonoProfiler *prof, MonoObject *obj, MonoClass *klass)
-{
-	MethodProfile *profile_info;
-	AllocInfo *tmp;
-
-	GET_THREAD_PROF (prof);
-	if (prof->callers) {
-		MonoMethod *caller = prof->callers->method;
-
-		/* Otherwise all allocations are attributed to icall_wrapper_mono_object_new */
-		if (caller->wrapper_type == MONO_WRAPPER_MANAGED_TO_NATIVE && prof->callers->next)
-			caller = prof->callers->next->method;
-
-		if (!(profile_info = g_hash_table_lookup (prof->methods, caller)))
-			g_assert_not_reached ();
-	} else {
-		return; /* fine for now */
-	}
-
-	for (tmp = profile_info->alloc_info; tmp; tmp = tmp->next) {
-		if (tmp->klass == klass)
-			break;
-	}
-	if (!tmp) {
-		tmp = mono_mempool_alloc0 (prof->mempool, sizeof (AllocInfo));
-		tmp->klass = klass;
-		tmp->next = profile_info->alloc_info;
-		profile_info->alloc_info = tmp;
-	}
-	tmp->count++;
-	tmp->mem += mono_object_get_size (obj);
-}
-
-static void
-simple_method_jit (MonoProfiler *prof, MonoMethod *method)
-{
-	GET_THREAD_PROF (prof);
-	prof->methods_jitted++;
-	MONO_TIMER_START (prof->jit_timer);
-}
-
-static void
-simple_method_end_jit (MonoProfiler *prof, MonoMethod *method, int result)
-{
-	double jtime;
-	GET_THREAD_PROF (prof);
-	MONO_TIMER_STOP (prof->jit_timer);
-	jtime = MONO_TIMER_ELAPSED (prof->jit_timer);
-	prof->jit_time += jtime;
-	if (jtime > prof->max_jit_time) {
-		prof->max_jit_time = jtime;
-		prof->max_jit_method = method;
-	}
-}
-
-/* about 10 minutes of samples */
-#define MAX_PROF_SAMPLES (1000*60*10)
-static int prof_counts = 0;
-static int prof_ucounts = 0;
-static gpointer* prof_addresses = NULL;
-static GHashTable *prof_table = NULL;
-
-static void
-simple_stat_hit (MonoProfiler *prof, guchar *ip, void *context)
-{
-	int pos;
-
-	if (prof_counts >= MAX_PROF_SAMPLES)
-		return;
-	pos = InterlockedIncrement (&prof_counts);
-	prof_addresses [pos - 1] = ip;
-}
-
-static int
-compare_methods_prof (gconstpointer a, gconstpointer b)
-{
-	int ca = GPOINTER_TO_UINT (g_hash_table_lookup (prof_table, a));
-	int cb = GPOINTER_TO_UINT (g_hash_table_lookup (prof_table, b));
-	return cb-ca;
-}
-
-static void
-prof_foreach (char *method, gpointer c, gpointer data)
-{
-	GList **list = data;
-	*list = g_list_insert_sorted (*list, method, compare_methods_prof);
-}
-
-typedef struct Addr2LineData Addr2LineData;
-
-struct Addr2LineData {
-	Addr2LineData *next;
-	FILE *pipein;
-	FILE *pipeout;
-	char *binary;
-	int child_pid;
-};
-
-static Addr2LineData *addr2line_pipes = NULL;
-
-static char*
-try_addr2line (const char* binary, gpointer ip)
-{
-	char buf [1024];
-	char *res;
-	Addr2LineData *addr2line;
-
-	for (addr2line = addr2line_pipes; addr2line; addr2line = addr2line->next) {
-		if (strcmp (binary, addr2line->binary) == 0)
-			break;
-	}
-	if (!addr2line) {
-		const char *addr_argv[] = {"addr2line", "-f", "-e", binary, NULL};
-		int child_pid;
-		int ch_in, ch_out;
-#ifdef __linux__
-		char monobin [1024];
-		/* non-linux platforms will need different code here */
-		if (strcmp (binary, "mono") == 0) {
-			int count = readlink ("/proc/self/exe", monobin, sizeof (monobin));
-			if (count >= 0 && count < sizeof (monobin)) {
-				monobin [count] = 0;
-				addr_argv [3] = monobin;
-			}
-		}
-#endif
-		if (!g_spawn_async_with_pipes (NULL, (char**)addr_argv, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL,
-				&child_pid, &ch_in, &ch_out, NULL, NULL)) {
-			return g_strdup (binary);
-		}
-		addr2line = g_new0 (Addr2LineData, 1);
-		addr2line->child_pid = child_pid;
-		addr2line->binary = g_strdup (binary);
-		addr2line->pipein = fdopen (ch_in, "w");
-		addr2line->pipeout = fdopen (ch_out, "r");
-		addr2line->next = addr2line_pipes;
-		addr2line_pipes = addr2line;
-	}
-	fprintf (addr2line->pipein, "%p\n", ip);
-	fflush (addr2line->pipein);
-	/* we first get the func name and then file:lineno in a second line */
-	if (fgets (buf, sizeof (buf), addr2line->pipeout) && buf [0] != '?') {
-		char *end = strchr (buf, '\n');
-		if (end)
-			*end = 0;
-		res = g_strdup_printf ("%s(%s", binary, buf);
-		/* discard the filename/line info */
-		fgets (buf, sizeof (buf), addr2line->pipeout);
-	} else {
-		res = g_strdup (binary);
-	}
-	return res;
-}
-
-static void
-stat_prof_report (MonoProfiler *prof)
-{
-	MonoJitInfo *ji;
-	int count = prof_counts;
-	int i, c;
-	char *mn;
-	gpointer ip;
-	GList *tmp, *sorted = NULL;
-	GSList *l;
-	int pcount = ++ prof_counts;
-
-	prof_counts = MAX_PROF_SAMPLES;
-	for (i = 0; i < count; ++i) {
-		ip = prof_addresses [i];
-		ji = mono_jit_info_table_find (mono_domain_get (), ip);
-
-		if (!ji) {
-			for (l = prof->domains; l && !ji; l = l->next)
-				ji = mono_jit_info_table_find (l->data, ip);
-		}
-
-		if (ji) {
-			mn = mono_method_full_name (ji->method, TRUE);
-		} else {
-#ifdef HAVE_BACKTRACE_SYMBOLS
-			char **names;
-			char *send;
-			int no_func;
-			prof_ucounts++;
-			names = backtrace_symbols (&ip, 1);
-			send = strchr (names [0], '+');
-			if (send) {
-				*send = 0;
-				no_func = 0;
-			} else {
-				no_func = 1;
-			}
-			send = strchr (names [0], '[');
-			if (send)
-				*send = 0;
-			if (no_func && names [0][0]) {
-				char *endp = strchr (names [0], 0);
-				while (--endp >= names [0] && g_ascii_isspace (*endp))
-					*endp = 0;
-				mn = try_addr2line (names [0], ip);
-			} else {
-				mn = g_strdup (names [0]);
-			}
-			free (names);
-#else
-			prof_ucounts++;
-			mn = g_strdup_printf ("unmanaged [%p]", ip);
-#endif
-		}
-		c = GPOINTER_TO_UINT (g_hash_table_lookup (prof_table, mn));
-		c++;
-		g_hash_table_insert (prof_table, mn, GUINT_TO_POINTER (c));
-		if (c > 1)
-			g_free (mn);
-	}
-	fprintf (poutput, "prof counts: total/unmanaged: %d/%d\n", pcount, prof_ucounts);
-	g_hash_table_foreach (prof_table, (GHFunc)prof_foreach, &sorted);
-	for (tmp = sorted; tmp; tmp = tmp->next) {
-		double perc;
-		c = GPOINTER_TO_UINT (g_hash_table_lookup (prof_table, tmp->data));
-		perc = c*100.0/count;
-		fprintf (poutput, "%7d\t%5.2f %% %s\n", c, perc, (char*)tmp->data);
-	}
-	g_list_free (sorted);
-}
-
-static void
-simple_appdomain_load (MonoProfiler *prof, MonoDomain *domain, int result)
-{
-	prof->domains = g_slist_prepend (prof->domains, domain);
-}
-
-static void
-simple_appdomain_unload (MonoProfiler *prof, MonoDomain *domain)
-{
-	/* FIXME: we should actually record partial data for each domain, 
-	 * but at this point it's must easier using the new logging profiler.
-	 */
-	mono_profiler_shutdown ();
-}
-
-static gint32 simple_shutdown_done = FALSE;
-
-static void
-simple_shutdown (MonoProfiler *prof)
-{
-	GList *profile = NULL;
-	MonoProfiler *tprof;
-	GSList *tmp;
-	char *str;
-	gint32 see_shutdown_done;
-
-#ifndef HOST_WIN32
-	mono_thread_attach(mono_get_root_domain());
-#endif
-
-	// Make sure we execute simple_shutdown only once
-	see_shutdown_done = InterlockedExchange(& simple_shutdown_done, TRUE);
-	if (see_shutdown_done)
-		return;
-
-	if (mono_profiler_events & MONO_PROFILE_STATISTICAL) {
-		stat_prof_report (prof);
-	}
-
-	// Stop all incoming events
-	mono_profiler_set_events (0);
-	
-	for (tmp = prof->per_thread; tmp; tmp = tmp->next) {
-		tprof = tmp->data;
-		merge_thread_data (prof, tprof);
-	}
-
-	fprintf (poutput, "Total time spent compiling %d methods (sec): %.4g\n", prof->methods_jitted, prof->jit_time);
-	if (prof->max_jit_method) {
-		str = method_get_name (prof->max_jit_method);
-		fprintf (poutput, "Slowest method to compile (sec): %.4g: %s\n", prof->max_jit_time, str);
-		g_free (str);
-	}
-	g_hash_table_foreach (prof->methods, (GHFunc)build_profile, &profile);
-	output_profile (profile);
-	g_list_free (profile);
-	profile = NULL;
-		
-	g_hash_table_foreach (prof->methods, (GHFunc)build_newobj_profile, &profile);
-	output_newobj_profile (profile);
-	g_list_free (profile);
-
-	g_free (prof_addresses);
-	prof_addresses = NULL;
-	g_hash_table_destroy (prof_table);
-}
-
-static void
-mono_profiler_install_simple (const char *desc)
-{
-	MonoProfiler *prof;
-	gchar **args, **ptr;
-	MonoProfileFlags flags = 0;
-
-	MONO_TIMER_STARTUP;
-	poutput = stdout;
-
-	if (!desc)
-		desc = "alloc,time,jit";
-
-	if (desc) {
-		/* Parse options */
-		if (strstr (desc, ":"))
-			desc = strstr (desc, ":") + 1;
-		else
-			desc = "alloc,time,jit";
-		args = g_strsplit (desc, ",", -1);
-
-		for (ptr = args; ptr && *ptr; ptr++) {
-			const char *arg = *ptr;
-
-			// Alwais listen to appdomaon events to shutdown at the first unload
-			flags |= MONO_PROFILE_APPDOMAIN_EVENTS;
-			if (!strcmp (arg, "time"))
-				flags |= MONO_PROFILE_ENTER_LEAVE | MONO_PROFILE_EXCEPTIONS;
-			else if (!strcmp (arg, "alloc"))
-				flags |= MONO_PROFILE_ALLOCATIONS;
-			else if (!strcmp (arg, "stat"))
-				flags |= MONO_PROFILE_STATISTICAL;
-			else if (!strcmp (arg, "jit"))
-				flags |= MONO_PROFILE_JIT_COMPILATION;
-			else if (strncmp (arg, "file=", 5) == 0) {
-				poutput = fopen (arg + 5, "wb");
-				if (!poutput) {
-					poutput = stdout;
-					fprintf (stderr, "profiler : cannot open profile output file '%s'.\n", arg + 5);
-				}
-			} else {
-				fprintf (stderr, "profiler : Unknown argument '%s'.\n", arg);
-				return;
-			}
-		}
-	}
-	if (flags & MONO_PROFILE_ALLOCATIONS)
-		flags |= MONO_PROFILE_GC_MOVES;
-	if (flags & MONO_PROFILE_ALLOCATIONS)
-		flags |= MONO_PROFILE_ENTER_LEAVE | MONO_PROFILE_EXCEPTIONS;
-	if (!flags)
-		flags = MONO_PROFILE_ENTER_LEAVE | MONO_PROFILE_ALLOCATIONS | MONO_PROFILE_JIT_COMPILATION | MONO_PROFILE_EXCEPTIONS;
-
-	prof = create_profiler ();
-	ALLOC_PROFILER ();
-	SET_PROFILER (prof);
-
-	/* statistical profiler data */
-	prof_addresses = g_new0 (gpointer, MAX_PROF_SAMPLES);
-	prof_table = g_hash_table_new (g_str_hash, g_str_equal);
-
-	mono_profiler_install (prof, simple_shutdown);
-	mono_profiler_install_enter_leave (simple_method_enter, simple_method_leave);
-	mono_profiler_install_exception (NULL, simple_method_leave, NULL);
-	mono_profiler_install_jit_compile (simple_method_jit, simple_method_end_jit);
-	mono_profiler_install_allocation (simple_allocation);
-	mono_profiler_install_appdomain (NULL, simple_appdomain_load, simple_appdomain_unload, NULL);
-	mono_profiler_install_statistical (simple_stat_hit);
-	mono_profiler_install_gc_moves (simple_gc_move);
-	mono_profiler_set_events (flags);
-}
-
-#endif /* DISABLE_PROFILER */
-
 typedef void (*ProfilerInitializer) (const char*);
 #define INITIALIZER_NAME "mono_profiler_startup"
 
@@ -1907,18 +1042,37 @@ typedef void (*ProfilerInitializer) (const char*);
 void 
 mono_profiler_load (const char *desc)
 {
+	char *cdesc = NULL;
 	mono_gc_base_init ();
 
-#ifndef DISABLE_PROFILER
-	if (!desc || (strcmp ("default", desc) == 0) || (strncmp (desc, "default:", 8) == 0)) {
-		mono_profiler_install_simple (desc);
-		return;
+	if (!desc || (strcmp ("default", desc) == 0)) {
+		desc = "log:report";
 	}
-#else
-	if (!desc) {
-		desc = "default";
+	/* we keep command-line compat with the old version here */
+	if (strncmp (desc, "default:", 8) == 0) {
+		gchar **args, **ptr;
+		GString *str = g_string_new ("log:report");
+		args = g_strsplit (desc + 8, ",", -1);
+		for (ptr = args; ptr && *ptr; ptr++) {
+			const char *arg = *ptr;
+
+			if (!strcmp (arg, "time"))
+				g_string_append (str, ",calls");
+			else if (!strcmp (arg, "alloc"))
+				g_string_append (str, ",alloc");
+			else if (!strcmp (arg, "stat"))
+				g_string_append (str, ",sample");
+			else if (!strcmp (arg, "jit"))
+				continue; /* accept and do nothing */
+			else if (strncmp (arg, "file=", 5) == 0) {
+				g_string_append_printf (str, ",output=%s", arg + 5);
+			} else {
+				fprintf (stderr, "profiler : Unknown argument '%s'.\n", arg);
+				return;
+			}
+		}
+		desc = cdesc = g_string_free (str, FALSE);
 	}
-#endif
 	{
 		MonoDl *pmodule = NULL;
 		const char* col = strchr (desc, ':');
@@ -1960,5 +1114,6 @@ mono_profiler_load (const char *desc)
 		g_free (mname);
 		g_free (path);
 	}
+	g_free (cdesc);
 }
 
diff --git a/mono/metadata/profiler.h b/mono/metadata/profiler.h
index 3408b88..09299a7 100644
--- a/mono/metadata/profiler.h
+++ b/mono/metadata/profiler.h
@@ -29,7 +29,8 @@ typedef enum {
 	MONO_PROFILE_METHOD_EVENTS    = 1 << 16,
 	MONO_PROFILE_MONITOR_EVENTS   = 1 << 17,
 	MONO_PROFILE_IOMAP_EVENTS     = 1 << 18, /* this should likely be removed, too */
-	MONO_PROFILE_GC_MOVES         = 1 << 19
+	MONO_PROFILE_GC_MOVES         = 1 << 19,
+	MONO_PROFILE_GC_ROOTS         = 1 << 20
 } MonoProfileFlags;
 
 typedef enum {
@@ -83,6 +84,24 @@ typedef enum {
 	MONO_PROFILER_CALL_CHAIN_INVALID = 4
 } MonoProfilerCallChainStrategy;
 
+typedef enum {
+	MONO_PROFILER_GC_HANDLE_CREATED,
+	MONO_PROFILER_GC_HANDLE_DESTROYED
+} MonoProfileGCHandleEvent;
+
+typedef enum {
+	MONO_PROFILE_GC_ROOT_PINNING  = 1 << 8,
+	MONO_PROFILE_GC_ROOT_WEAKREF  = 2 << 8,
+	MONO_PROFILE_GC_ROOT_INTERIOR = 4 << 8,
+	/* the above are flags, the type is in the low 2 bytes */
+	MONO_PROFILE_GC_ROOT_STACK = 0,
+	MONO_PROFILE_GC_ROOT_FINALIZER = 1,
+	MONO_PROFILE_GC_ROOT_HANDLE = 2,
+	MONO_PROFILE_GC_ROOT_OTHER = 3,
+	MONO_PROFILE_GC_ROOT_MISC = 4, /* could be stack, handle, etc. */
+	MONO_PROFILE_GC_ROOT_TYPEMASK = 0xff
+} MonoProfileGCRootType;
+
 /*
  * Functions that the runtime will call on the profiler.
  */
@@ -109,12 +128,15 @@ typedef void (*MonoProfileAssemblyResult) (MonoProfiler *prof, MonoAssembly *ass
 typedef void (*MonoProfileMethodInline)   (MonoProfiler *prof, MonoMethod   *parent, MonoMethod *child, int *ok);
 
 typedef void (*MonoProfileThreadFunc)     (MonoProfiler *prof, uintptr_t tid);
+typedef void (*MonoProfileThreadNameFunc) (MonoProfiler *prof, uintptr_t tid, const char *name);
 typedef void (*MonoProfileAllocFunc)      (MonoProfiler *prof, MonoObject *obj, MonoClass *klass);
 typedef void (*MonoProfileStatFunc)       (MonoProfiler *prof, mono_byte *ip, void *context);
 typedef void (*MonoProfileStatCallChainFunc) (MonoProfiler *prof, int call_chain_depth, mono_byte **ip, void *context);
 typedef void (*MonoProfileGCFunc)         (MonoProfiler *prof, MonoGCEvent event, int generation);
 typedef void (*MonoProfileGCMoveFunc)     (MonoProfiler *prof, void **objects, int num);
 typedef void (*MonoProfileGCResizeFunc)   (MonoProfiler *prof, int64_t new_size);
+typedef void (*MonoProfileGCHandleFunc)   (MonoProfiler *prof, int op, int type, uintptr_t handle, MonoObject *obj);
+typedef void (*MonoProfileGCRootFunc)     (MonoProfiler *prof, int num_roots, void **objects, int *root_types, uintptr_t *extra_info);
 
 typedef void (*MonoProfileIomapFunc) (MonoProfiler *prof, const char *report, const char *pathname, const char *new_pathname);
 
@@ -149,6 +171,7 @@ void mono_profiler_install_method_free (MonoProfileMethodFunc callback);
 void mono_profiler_install_method_invoke (MonoProfileMethodFunc start, MonoProfileMethodFunc end);
 void mono_profiler_install_enter_leave (MonoProfileMethodFunc enter, MonoProfileMethodFunc fleave);
 void mono_profiler_install_thread      (MonoProfileThreadFunc start, MonoProfileThreadFunc end);
+void mono_profiler_install_thread_name (MonoProfileThreadNameFunc thread_name_cb);
 void mono_profiler_install_transition  (MonoProfileMethodResult callback);
 void mono_profiler_install_allocation  (MonoProfileAllocFunc callback);
 void mono_profiler_install_monitor     (MonoProfileMonitorFunc callback);
@@ -159,6 +182,7 @@ void mono_profiler_install_coverage_filter (MonoProfileCoverageFilterFunc callba
 void mono_profiler_coverage_get  (MonoProfiler *prof, MonoMethod *method, MonoProfileCoverageFunc func);
 void mono_profiler_install_gc    (MonoProfileGCFunc callback, MonoProfileGCResizeFunc heap_resize_callback);
 void mono_profiler_install_gc_moves    (MonoProfileGCMoveFunc callback);
+void mono_profiler_install_gc_roots    (MonoProfileGCHandleFunc handle_callback, MonoProfileGCRootFunc roots_callback);
 void mono_profiler_install_runtime_initialized (MonoProfileFunc runtime_initialized_callback);
 
 void mono_profiler_install_code_chunk_new (MonoProfilerCodeChunkNew callback);
diff --git a/mono/metadata/reflection.c b/mono/metadata/reflection.c
index 7a4e700..29a05d3 100644
--- a/mono/metadata/reflection.c
+++ b/mono/metadata/reflection.c
@@ -43,20 +43,6 @@
 #include <mono/utils/mono-string.h>
 #include <mono/utils/mono-error-internals.h>
 
-
-#if HAVE_SGEN_GC
-static void* reflection_info_desc = NULL;
-#define MOVING_GC_REGISTER(addr) do {	\
-		if (!reflection_info_desc) {	\
-			gsize bmap = 1;		\
-			reflection_info_desc = mono_gc_make_descr_from_bitmap (&bmap, 1);	\
-		}	\
-		mono_gc_register_root ((char*)(addr), sizeof (gpointer), reflection_info_desc); \
-	} while (0)
-#else
-#define MOVING_GC_REGISTER(addr)
-#endif
-
 static gboolean is_usertype (MonoReflectionType *ref);
 static MonoReflectionType *mono_reflection_type_resolve_user_types (MonoReflectionType *type);
 
@@ -159,7 +145,7 @@ const unsigned char table_sizes [MONO_TABLE_NUM] = {
 
 #ifndef DISABLE_REFLECTION_EMIT
 static guint32 mono_image_get_methodref_token (MonoDynamicImage *assembly, MonoMethod *method, gboolean create_typespec);
-static guint32 mono_image_get_methodbuilder_token (MonoDynamicImage *assembly, MonoReflectionMethodBuilder *mb, gboolean create_methodspec);
+static guint32 mono_image_get_methodbuilder_token (MonoDynamicImage *assembly, MonoReflectionMethodBuilder *mb, gboolean create_open_instance);
 static guint32 mono_image_get_ctorbuilder_token (MonoDynamicImage *assembly, MonoReflectionCtorBuilder *cb);
 static guint32 mono_image_get_sighelper_token (MonoDynamicImage *assembly, MonoReflectionSigHelper *helper);
 static void    ensure_runtime_vtable (MonoClass *klass);
@@ -203,6 +189,9 @@ static guint32 mono_image_get_methodspec_token (MonoDynamicImage *assembly, Mono
 static guint32 mono_image_get_inflated_method_token (MonoDynamicImage *assembly, MonoMethod *m);
 static MonoMethod * inflate_method (MonoReflectionType *type, MonoObject *obj);
 
+static guint32 create_typespec (MonoDynamicImage *assembly, MonoType *type);
+static void init_type_builder_generics (MonoObject *type);
+
 #define RESOLVE_TYPE(type) do { type = (void*)mono_reflection_type_resolve_user_types ((MonoReflectionType*)type); } while (0)
 #define RESOLVE_ARRAY_TYPE_ELEMENT(array, index) do {	\
 	MonoReflectionType *__type = mono_array_get (array, MonoReflectionType*, index);	\
@@ -1173,7 +1162,9 @@ lookup_custom_attr (MonoImage *image, gpointer member)
 	if (!res)
 		return NULL;
 
-	return g_memdup (res, MONO_SIZEOF_CUSTOM_ATTR_INFO + sizeof (MonoCustomAttrEntry) * res->num_attrs);
+	res = g_memdup (res, MONO_SIZEOF_CUSTOM_ATTR_INFO + sizeof (MonoCustomAttrEntry) * res->num_attrs);
+	res->cached = 0;
+	return res;
 }
 
 static gboolean
@@ -1713,13 +1704,31 @@ field_encode_signature (MonoDynamicImage *assembly, MonoReflectionFieldBuilder *
 {
 	SigBuffer buf;
 	guint32 idx;
+	guint32 typespec = 0;
+	MonoType *type;
+	MonoClass *class;
+
+	init_type_builder_generics (fb->type);
+
+	type = mono_reflection_type_get_handle ((MonoReflectionType*)fb->type);
+	class = mono_class_from_mono_type (type);
 
 	sigbuffer_init (&buf, 32);
 	
 	sigbuffer_add_value (&buf, 0x06);
 	encode_custom_modifiers (assembly, fb->modreq, fb->modopt, &buf);
 	/* encode custom attributes before the type */
-	encode_reflection_type (assembly, (MonoReflectionType*)fb->type, &buf);
+
+	if (class->generic_container)
+		typespec = create_typespec (assembly, type);
+
+	if (typespec) {
+		MonoGenericClass *gclass;
+		gclass = mono_metadata_lookup_generic_class (class, class->generic_container->context.class_inst, TRUE);
+		encode_generic_class (assembly, gclass, &buf);
+	} else {
+		encode_type (assembly, type, &buf);
+	}
 	idx = sigbuffer_add_to_blob_cached (assembly, &buf);
 	sigbuffer_free (&buf);
 	return idx;
@@ -2183,7 +2192,7 @@ mono_image_get_generic_param_info (MonoReflectionGenericParam *gparam, guint32 o
 	entry = g_new0 (GenericParamTableEntry, 1);
 	entry->owner = owner;
 	/* FIXME: track where gen_params should be freed and remove the GC root as well */
-	MOVING_GC_REGISTER (&entry->gparam);
+	MONO_GC_REGISTER_ROOT_IF_MOVING (entry->gparam);
 	entry->gparam = gparam;
 	
 	g_ptr_array_add (assembly->gen_params, entry);
@@ -2849,6 +2858,8 @@ mono_reflection_method_on_tb_inst_get_handle (MonoReflectionMethodOnTypeBuilderI
 	MonoMethod *method, *inflated;
 	int count, i;
 
+	init_type_builder_generics ((MonoObject*)m->inst);
+
 	method = inflate_method (m->inst, (MonoObject*)m->mb);
 
 	klass = method->klass;
@@ -3150,12 +3161,25 @@ add_custom_modifiers (MonoDynamicImage *assembly, MonoType *type, MonoArray *mod
 	return t;
 }
 
+static void
+init_type_builder_generics (MonoObject *type)
+{
+	MonoReflectionTypeBuilder *tb;
+
+	if (!is_sre_type_builder(mono_object_class (type)))
+		return;
+	tb = (MonoReflectionTypeBuilder *)type;
+
+	if (tb && tb->generic_container)
+		mono_reflection_create_generic_class (tb);
+}
+
 static guint32
 mono_image_get_generic_field_token (MonoDynamicImage *assembly, MonoReflectionFieldBuilder *fb)
 {
 	MonoDynamicTable *table;
 	MonoClass *klass;
-	MonoType *custom = NULL;
+	MonoType *custom = NULL, *type;
 	guint32 *values;
 	guint32 token, pclass, parent, sig;
 	gchar *name;
@@ -3167,15 +3191,17 @@ mono_image_get_generic_field_token (MonoDynamicImage *assembly, MonoReflectionFi
 	klass = mono_class_from_mono_type (mono_reflection_type_get_handle (fb->typeb));
 	name = mono_string_to_utf8 (fb->name);
 
+	/*FIXME this is one more layer of ugliness due how types are created.*/
+	init_type_builder_generics (fb->type);
+
 	/* fb->type does not include the custom modifiers */
 	/* FIXME: We should do this in one place when a fieldbuilder is created */
-	if (fb->modreq || fb->modopt) {
-		custom = add_custom_modifiers (assembly, mono_reflection_type_get_handle ((MonoReflectionType*)fb->type), fb->modreq, fb->modopt);
-		sig = fieldref_encode_signature (assembly, NULL, custom);
-		g_free (custom);
-	} else {
-		sig = fieldref_encode_signature (assembly, NULL, mono_reflection_type_get_handle ((MonoReflectionType*)fb->type));
-	}
+	type = mono_reflection_type_get_handle ((MonoReflectionType*)fb->type);
+	if (fb->modreq || fb->modopt)
+		type = custom = add_custom_modifiers (assembly, type, fb->modreq, fb->modopt);
+
+	sig = fieldref_encode_signature (assembly, NULL, type);
+	g_free (custom);
 
 	parent = create_generic_typespec (assembly, (MonoReflectionTypeBuilder *) fb->typeb);
 	g_assert ((parent & MONO_TYPEDEFORREF_MASK) == MONO_TYPEDEFORREF_TYPESPEC);
@@ -4865,7 +4891,7 @@ mono_image_create_method_token (MonoDynamicImage *assembly, MonoObject *obj, Mon
  */
 guint32
 mono_image_create_token (MonoDynamicImage *assembly, MonoObject *obj, 
-						 gboolean create_methodspec, gboolean register_token)
+						 gboolean create_open_instance, gboolean register_token)
 {
 	MonoClass *klass;
 	guint32 token = 0;
@@ -4884,7 +4910,7 @@ mono_image_create_token (MonoDynamicImage *assembly, MonoObject *obj,
 		if (tb->module->dynamic_image == assembly && !tb->generic_params && !mb->generic_params)
 			token = mb->table_idx | MONO_TOKEN_METHOD_DEF;
 		else
-			token = mono_image_get_methodbuilder_token (assembly, mb, create_methodspec);
+			token = mono_image_get_methodbuilder_token (assembly, mb, create_open_instance);
 		/*g_print ("got token 0x%08x for %s\n", token, mono_string_to_utf8 (mb->name));*/
 	} else if (strcmp (klass->name, "ConstructorBuilder") == 0) {
 		MonoReflectionCtorBuilder *mb = (MonoReflectionCtorBuilder *)obj;
@@ -4909,15 +4935,20 @@ mono_image_create_token (MonoDynamicImage *assembly, MonoObject *obj,
 		}
 	} else if (strcmp (klass->name, "TypeBuilder") == 0) {
 		MonoReflectionTypeBuilder *tb = (MonoReflectionTypeBuilder *)obj;
-		token = tb->table_idx | MONO_TOKEN_TYPE_DEF;
+		if (create_open_instance && tb->generic_params) {
+			MonoType *type;
+			init_type_builder_generics (obj);
+			type = mono_reflection_type_get_handle ((MonoReflectionType *)obj);
+			token = mono_image_typedef_or_ref_full (assembly, type, TRUE);
+			token = mono_metadata_token_from_dor (token);
+		} else {
+			token = tb->table_idx | MONO_TOKEN_TYPE_DEF;
+		}
 	} else if (strcmp (klass->name, "MonoType") == 0) {
 		MonoType *type = mono_reflection_type_get_handle ((MonoReflectionType *)obj);
 		MonoClass *mc = mono_class_from_mono_type (type);
-		if (!mono_class_init (mc))
-			mono_raise_exception (mono_class_get_exception_for_failure (mc));
-
 		token = mono_metadata_token_from_dor (
-			mono_image_typedef_or_ref_full (assembly, type, mc->generic_container == NULL));
+			mono_image_typedef_or_ref_full (assembly, type, mc->generic_container == NULL || create_open_instance));
 	} else if (strcmp (klass->name, "GenericTypeParameterBuilder") == 0) {
 		MonoType *type = mono_reflection_type_get_handle ((MonoReflectionType *)obj);
 		token = mono_metadata_token_from_dor (
@@ -4932,7 +4963,7 @@ mono_image_create_token (MonoDynamicImage *assembly, MonoObject *obj,
 		   strcmp (klass->name, "MonoGenericCMethod") == 0) {
 		MonoReflectionMethod *m = (MonoReflectionMethod *)obj;
 		if (m->method->is_inflated) {
-			if (create_methodspec)
+			if (create_open_instance)
 				token = mono_image_get_methodspec_token (assembly, m->method);
 			else
 				token = mono_image_get_inflated_method_token (assembly, m->method);
@@ -4955,7 +4986,7 @@ mono_image_create_token (MonoDynamicImage *assembly, MonoObject *obj,
 				token = MONO_TOKEN_METHOD_DEF | method_table_idx;
 			}
 		} else {
-			token = mono_image_get_methodref_token (assembly, m->method, create_methodspec);
+			token = mono_image_get_methodref_token (assembly, m->method, create_open_instance);
 		}
 		/*g_print ("got token 0x%08x for %s\n", token, m->method->name);*/
 	} else if (strcmp (klass->name, "MonoField") == 0) {
@@ -4983,10 +5014,10 @@ mono_image_create_token (MonoDynamicImage *assembly, MonoObject *obj,
 		token = mono_image_get_field_on_inst_token (assembly, f);
 	} else if (strcmp (klass->name, "ConstructorOnTypeBuilderInst") == 0) {
 		MonoReflectionCtorOnTypeBuilderInst *c = (MonoReflectionCtorOnTypeBuilderInst*)obj;
-		token = mono_image_get_ctor_on_inst_token (assembly, c, create_methodspec);
+		token = mono_image_get_ctor_on_inst_token (assembly, c, create_open_instance);
 	} else if (strcmp (klass->name, "MethodOnTypeBuilderInst") == 0) {
 		MonoReflectionMethodOnTypeBuilderInst *m = (MonoReflectionMethodOnTypeBuilderInst*)obj;
-		token = mono_image_get_method_on_inst_token (assembly, m, create_methodspec);
+		token = mono_image_get_method_on_inst_token (assembly, m, create_open_instance);
 	} else if (is_sre_array (klass) || is_sre_byref (klass) || is_sre_pointer (klass)) {
 		MonoReflectionType *type = (MonoReflectionType *)obj;
 		token = mono_metadata_token_from_dor (
@@ -5148,11 +5179,6 @@ mono_dynamic_image_free (MonoDynamicImage *image)
 	if (di->gen_params) {
 		for (i = 0; i < di->gen_params->len; i++) {
 			GenericParamTableEntry *entry = g_ptr_array_index (di->gen_params, i);
-			if (entry->gparam->type.type) {
-				MonoGenericParam *param = entry->gparam->type.type->data.generic_param;
-				g_free ((char*)mono_generic_param_info (param)->name);
-				g_free (param);
-			}
 			mono_gc_deregister_root ((char*) &entry->gparam);
 			g_free (entry);
 		}
@@ -6279,104 +6305,6 @@ mono_module_file_get_object (MonoDomain *domain, MonoImage *image, int table_ind
 }
 
 static gboolean
-mymono_metadata_type_equal (MonoType *t1, MonoType *t2)
-{
-	if ((t1->type != t2->type) ||
-	    (t1->byref != t2->byref))
-		return FALSE;
-
-	switch (t1->type) {
-	case MONO_TYPE_VOID:
-	case MONO_TYPE_BOOLEAN:
-	case MONO_TYPE_CHAR:
-	case MONO_TYPE_I1:
-	case MONO_TYPE_U1:
-	case MONO_TYPE_I2:
-	case MONO_TYPE_U2:
-	case MONO_TYPE_I4:
-	case MONO_TYPE_U4:
-	case MONO_TYPE_I8:
-	case MONO_TYPE_U8:
-	case MONO_TYPE_R4:
-	case MONO_TYPE_R8:
-	case MONO_TYPE_STRING:
-	case MONO_TYPE_I:
-	case MONO_TYPE_U:
-	case MONO_TYPE_OBJECT:
-	case MONO_TYPE_TYPEDBYREF:
-		return TRUE;
-	case MONO_TYPE_VALUETYPE:
-	case MONO_TYPE_CLASS:
-	case MONO_TYPE_SZARRAY:
-		return t1->data.klass == t2->data.klass;
-	case MONO_TYPE_PTR:
-		return mymono_metadata_type_equal (t1->data.type, t2->data.type);
-	case MONO_TYPE_ARRAY:
-		if (t1->data.array->rank != t2->data.array->rank)
-			return FALSE;
-		return t1->data.array->eklass == t2->data.array->eklass;
-	case MONO_TYPE_GENERICINST: {
-		int i;
-		MonoGenericInst *i1 = t1->data.generic_class->context.class_inst;
-		MonoGenericInst *i2 = t2->data.generic_class->context.class_inst;
-		if (i1->type_argc != i2->type_argc)
-			return FALSE;
-		if (!mono_metadata_type_equal (&t1->data.generic_class->container_class->byval_arg,
-					       &t2->data.generic_class->container_class->byval_arg))
-			return FALSE;
-		/* FIXME: we should probably just compare the instance pointers directly.  */
-		for (i = 0; i < i1->type_argc; ++i) {
-			if (!mono_metadata_type_equal (i1->type_argv [i], i2->type_argv [i]))
-				return FALSE;
-		}
-		return TRUE;
-	}
-	case MONO_TYPE_VAR:
-	case MONO_TYPE_MVAR:
-		return t1->data.generic_param == t2->data.generic_param;
-	default:
-		g_error ("implement type compare for %0x!", t1->type);
-		return FALSE;
-	}
-
-	return FALSE;
-}
-
-static guint
-mymono_metadata_type_hash (MonoType *t1)
-{
-	guint hash;
-
-	hash = t1->type;
-
-	hash |= t1->byref << 6; /* do not collide with t1->type values */
-	switch (t1->type) {
-	case MONO_TYPE_VALUETYPE:
-	case MONO_TYPE_CLASS:
-	case MONO_TYPE_SZARRAY:
-		/* check if the distribution is good enough */
-		return ((hash << 5) - hash) ^ mono_aligned_addr_hash (t1->data.klass);
-	case MONO_TYPE_PTR:
-		return ((hash << 5) - hash) ^ mymono_metadata_type_hash (t1->data.type);
-	case MONO_TYPE_GENERICINST: {
-		int i;
-		MonoGenericInst *inst = t1->data.generic_class->context.class_inst;
-		hash += g_str_hash (t1->data.generic_class->container_class->name);
-		hash *= 13;
-		for (i = 0; i < inst->type_argc; ++i) {
-			hash += mymono_metadata_type_hash (inst->type_argv [i]);
-			hash *= 13;
-		}
-		return hash;
-	}
-	case MONO_TYPE_VAR:
-	case MONO_TYPE_MVAR:
-		return ((hash << 5) - hash) ^ GPOINTER_TO_UINT (t1->data.generic_param);
-	}
-	return hash;
-}
-
-static gboolean
 verify_safe_for_managed_space (MonoType *type)
 {
 	switch (type->type) {
@@ -6489,8 +6417,8 @@ mono_type_get_object (MonoDomain *domain, MonoType *type)
 	mono_loader_lock (); /*FIXME mono_class_init and mono_class_vtable acquire it*/
 	mono_domain_lock (domain);
 	if (!domain->type_hash)
-		domain->type_hash = mono_g_hash_table_new_type ((GHashFunc)mymono_metadata_type_hash, 
-				(GCompareFunc)mymono_metadata_type_equal, MONO_HASH_VALUE_GC);
+		domain->type_hash = mono_g_hash_table_new_type ((GHashFunc)mono_metadata_type_hash, 
+				(GCompareFunc)mono_metadata_type_equal, MONO_HASH_VALUE_GC);
 	if ((res = mono_g_hash_table_lookup (domain->type_hash, type))) {
 		mono_domain_unlock (domain);
 		mono_loader_unlock ();
@@ -6551,11 +6479,8 @@ mono_type_get_object (MonoDomain *domain, MonoType *type)
 			return mono_class_get_ref_info (klass);
 		}
 	}
-#ifdef HAVE_SGEN_GC
-	res = (MonoReflectionType *)mono_gc_alloc_pinned_obj (mono_class_vtable (domain, mono_defaults.monotype_class), mono_class_instance_size (mono_defaults.monotype_class));
-#else
-	res = (MonoReflectionType *)mono_object_new (domain, mono_defaults.monotype_class);
-#endif
+	/* This is stored in vtables/JITted code so it has to be pinned */
+	res = (MonoReflectionType *)mono_object_new_pinned (domain, mono_defaults.monotype_class);
 	res->type = type;
 	mono_g_hash_table_insert (domain->type_hash, type, res);
 
@@ -6796,6 +6721,7 @@ mono_param_get_objects_internal (MonoDomain *domain, MonoMethod *method, MonoCla
 {
 	static MonoClass *System_Reflection_ParameterInfo;
 	static MonoClass *System_Reflection_ParameterInfo_array;
+	MonoError error;
 	MonoArray *res = NULL;
 	MonoReflectionMethod *member = NULL;
 	MonoReflectionParameter *param = NULL;
@@ -6820,8 +6746,12 @@ mono_param_get_objects_internal (MonoDomain *domain, MonoMethod *method, MonoCla
 		mono_memory_barrier ();
 		System_Reflection_ParameterInfo_array = klass;
 	}
-	
-	if (!mono_method_signature (method)->param_count)
+
+	sig = mono_method_signature_checked (method, &error);
+	if (!mono_error_ok (&error))
+		mono_error_raise_exception (&error);
+
+	if (!sig->param_count)
 		return mono_array_new_specific (mono_class_vtable (domain, System_Reflection_ParameterInfo_array), 0);
 
 	/* Note: the cache is based on the address of the signature into the method
@@ -6829,7 +6759,6 @@ mono_param_get_objects_internal (MonoDomain *domain, MonoMethod *method, MonoCla
 	 */
 	CHECK_OBJECT (MonoArray*, &(method->signature), refclass);
 
-	sig = mono_method_signature (method);
 	member = mono_method_get_object (domain, method, refclass);
 	names = g_new (char *, sig->param_count);
 	mono_method_get_param_names (method, (const char **) names);
@@ -7138,23 +7067,35 @@ static int
 assembly_name_to_aname (MonoAssemblyName *assembly, char *p) {
 	int found_sep;
 	char *s;
+	gboolean quoted = FALSE;
 
 	memset (assembly, 0, sizeof (MonoAssemblyName));
-	assembly->name = p;
 	assembly->culture = "";
 	memset (assembly->public_key_token, 0, MONO_PUBLIC_KEY_TOKEN_LENGTH);
 
-	while (*p && (isalnum (*p) || *p == '.' || *p == '-' || *p == '_' || *p == '$' || *p == '@'))
+	if (*p == '"') {
+		quoted = TRUE;
+		p++;
+	}
+	assembly->name = p;
+	while (*p && (isalnum (*p) || *p == '.' || *p == '-' || *p == '_' || *p == '$' || *p == '@' || g_ascii_isspace (*p)))
+		p++;
+	if (quoted) {
+		if (*p != '"')
+			return 1;
+		*p = 0;
 		p++;
-	found_sep = 0;
-	while (g_ascii_isspace (*p) || *p == ',') {
-		*p++ = 0;
-		found_sep = 1;
-		continue;
-	}
-	/* failed */
-	if (!found_sep)
+	}
+	if (*p != ',')
 		return 1;
+	*p = 0;
+	/* Remove trailing whitespace */
+	s = p - 1;
+	while (*s && g_ascii_isspace (*s))
+		*s-- = 0;
+	p ++;
+	while (g_ascii_isspace (*p))
+		p++;
 	while (*p) {
 		if (*p == 'V' && g_ascii_strncasecmp (p, "Version=", 8) == 0) {
 			p += 8;
@@ -7733,8 +7674,7 @@ mono_reflection_get_token (MonoObject *obj)
 	} else if (strcmp (klass->name, "FieldBuilder") == 0) {
 		MonoReflectionFieldBuilder *fb = (MonoReflectionFieldBuilder *)obj;
 
-		/* Call mono_image_create_token so the object gets added to the tokens hash table */
-		token = mono_image_create_token (((MonoReflectionTypeBuilder*)fb->typeb)->module->dynamic_image, obj, FALSE, TRUE);
+		token = fb->table_idx | MONO_TOKEN_FIELD_DEF;
 	} else if (strcmp (klass->name, "TypeBuilder") == 0) {
 		MonoReflectionTypeBuilder *tb = (MonoReflectionTypeBuilder *)obj;
 		token = tb->table_idx | MONO_TOKEN_TYPE_DEF;
@@ -8145,7 +8085,7 @@ find_event_index (MonoClass *klass, MonoEvent *event) {
 }
 
 static MonoObject*
-create_custom_attr (MonoImage *image, MonoMethod *method, const guchar *data, guint32 len)
+create_custom_attr (MonoImage *image, MonoMethod *method, const guchar *data, guint32 len, MonoError *error)
 {
 	const char *p = (const char*)data;
 	const char *named;
@@ -8155,10 +8095,14 @@ create_custom_attr (MonoImage *image, MonoMethod *method, const guchar *data, gu
 	void **params;
 	MonoMethodSignature *sig;
 
+	mono_error_init (error);
+
 	mono_class_init (method->klass);
 
-	if (!mono_verifier_verify_cattr_content (image, method, data, len, NULL))
+	if (!mono_verifier_verify_cattr_content (image, method, data, len, NULL)) {
+		mono_error_set_generic_error (error, "System.Reflection", "CustomAttributeFormatException", "Binary format of the specified custom attribute was invalid.");
 		return NULL;
+	}
 
 	if (len == 0) {
 		attr = mono_object_new (mono_domain_get (), method->klass);
@@ -8441,43 +8385,32 @@ create_custom_attr_data (MonoImage *image, MonoCustomAttrEntry *cattr)
 	return attr;
 }
 
-MonoArray*
-mono_custom_attrs_construct (MonoCustomAttrInfo *cinfo)
-{
-	MonoArray *result;
-	MonoObject *attr;
-	int i;
-
-	result = mono_array_new_cached (mono_domain_get (), mono_defaults.attribute_class, cinfo->num_attrs);
-	for (i = 0; i < cinfo->num_attrs; ++i) {
-		if (!cinfo->attrs [i].ctor)
-			/* The cattr type is not finished yet */
-			/* We should include the type name but cinfo doesn't contain it */
-			mono_raise_exception (mono_get_exception_type_load (NULL, NULL));
-		attr = create_custom_attr (cinfo->image, cinfo->attrs [i].ctor, cinfo->attrs [i].data, cinfo->attrs [i].data_size);
-		mono_array_setref (result, i, attr);
-	}
-	return result;
-}
-
 static MonoArray*
-mono_custom_attrs_construct_by_type (MonoCustomAttrInfo *cinfo, MonoClass *attr_klass)
+mono_custom_attrs_construct_by_type (MonoCustomAttrInfo *cinfo, MonoClass *attr_klass, MonoError *error)
 {
 	MonoArray *result;
 	MonoObject *attr;
 	int i, n;
 
+	mono_error_init (error);
+
 	n = 0;
 	for (i = 0; i < cinfo->num_attrs; ++i) {
-		if (mono_class_is_assignable_from (attr_klass, cinfo->attrs [i].ctor->klass))
+		if (!attr_klass || mono_class_is_assignable_from (attr_klass, cinfo->attrs [i].ctor->klass))
 			n ++;
 	}
 
 	result = mono_array_new_cached (mono_domain_get (), mono_defaults.attribute_class, n);
 	n = 0;
 	for (i = 0; i < cinfo->num_attrs; ++i) {
-		if (mono_class_is_assignable_from (attr_klass, cinfo->attrs [i].ctor->klass)) {
-			attr = create_custom_attr (cinfo->image, cinfo->attrs [i].ctor, cinfo->attrs [i].data, cinfo->attrs [i].data_size);
+		if (!cinfo->attrs [i].ctor)
+			/* The cattr type is not finished yet */
+			/* We should include the type name but cinfo doesn't contain it */
+			mono_raise_exception (mono_get_exception_type_load (NULL, NULL));
+		if (!attr_klass || mono_class_is_assignable_from (attr_klass, cinfo->attrs [i].ctor->klass)) {
+			attr = create_custom_attr (cinfo->image, cinfo->attrs [i].ctor, cinfo->attrs [i].data, cinfo->attrs [i].data_size, error);
+			if (!mono_error_ok (error))
+				return result;
 			mono_array_setref (result, n, attr);
 			n ++;
 		}
@@ -8485,6 +8418,14 @@ mono_custom_attrs_construct_by_type (MonoCustomAttrInfo *cinfo, MonoClass *attr_
 	return result;
 }
 
+MonoArray*
+mono_custom_attrs_construct (MonoCustomAttrInfo *cinfo)
+{
+	MonoError error;
+
+	return mono_custom_attrs_construct_by_type (cinfo, NULL, &error);
+}
+
 static MonoArray*
 mono_custom_attrs_data_construct (MonoCustomAttrInfo *cinfo)
 {
@@ -8915,17 +8856,16 @@ mono_reflection_get_custom_attrs_info (MonoObject *obj)
  * occurs.
  */
 MonoArray*
-mono_reflection_get_custom_attrs_by_type (MonoObject *obj, MonoClass *attr_klass)
+mono_reflection_get_custom_attrs_by_type (MonoObject *obj, MonoClass *attr_klass, MonoError *error)
 {
 	MonoArray *result;
 	MonoCustomAttrInfo *cinfo;
 
+	mono_error_init (error);
+
 	cinfo = mono_reflection_get_custom_attrs_info (obj);
 	if (cinfo) {
-		if (attr_klass)
-			result = mono_custom_attrs_construct_by_type (cinfo, attr_klass);
-		else
-			result = mono_custom_attrs_construct (cinfo);
+		result = mono_custom_attrs_construct_by_type (cinfo, attr_klass, error);
 		if (!cinfo->cached)
 			mono_custom_attrs_free (cinfo);
 	} else {
@@ -8948,7 +8888,9 @@ mono_reflection_get_custom_attrs_by_type (MonoObject *obj, MonoClass *attr_klass
 MonoArray*
 mono_reflection_get_custom_attrs (MonoObject *obj)
 {
-	return mono_reflection_get_custom_attrs_by_type (obj, NULL);
+	MonoError error;
+
+	return mono_reflection_get_custom_attrs_by_type (obj, NULL, &error);
 }
 
 /*
@@ -9168,8 +9110,8 @@ mono_reflection_register_with_runtime (MonoReflectionType *type)
 		mono_class_setup_supertypes (class);
 	} else {
 		if (!domain->type_hash)
-			domain->type_hash = mono_g_hash_table_new_type ((GHashFunc)mymono_metadata_type_hash, 
-					(GCompareFunc)mymono_metadata_type_equal, MONO_HASH_VALUE_GC);
+			domain->type_hash = mono_g_hash_table_new_type ((GHashFunc)mono_metadata_type_hash, 
+					(GCompareFunc)mono_metadata_type_equal, MONO_HASH_VALUE_GC);
 		mono_g_hash_table_insert (domain->type_hash, res, type);
 	}
 	mono_domain_unlock (domain);
@@ -9285,6 +9227,11 @@ is_sre_generic_instance (MonoClass *class)
 	return FALSE;
 }
 
+static void
+init_type_builder_generics (MonoObject *type)
+{
+}
+
 #endif /* !DISABLE_REFLECTION_EMIT */
 
 
@@ -9835,7 +9782,7 @@ mono_reflection_setup_internal_class (MonoReflectionTypeBuilder *tb)
 			(!strcmp (klass->name, "Enum") && !strcmp (klass->name_space, "System"))) {
 		klass->instance_size = sizeof (MonoObject);
 		klass->size_inited = 1;
-		mono_class_setup_vtable_general (klass, NULL, 0);
+		mono_class_setup_vtable_general (klass, NULL, 0, NULL);
 	}
 
 	mono_class_setup_mono_type (klass);
@@ -9969,7 +9916,7 @@ mono_reflection_create_internal_class (MonoReflectionTypeBuilder *tb)
 		 * to create objects of the enum type (for use in SetConstant).
 		 */
 		/* FIXME: Does this mean enums can't have method overrides ? */
-		mono_class_setup_vtable_general (klass, NULL, 0);
+		mono_class_setup_vtable_general (klass, NULL, 0, NULL);
 	}
 	mono_loader_unlock ();
 }
@@ -10382,10 +10329,12 @@ fieldbuilder_to_mono_class_field (MonoClass *klass, MonoReflectionFieldBuilder*
 {
 	MonoClassField *field;
 	MonoType *custom;
+	MonoError error;
 
 	field = g_new0 (MonoClassField, 1);
 
-	field->name = mono_string_to_utf8 (fb->name);
+	field->name = mono_string_to_utf8_image (klass->image, fb->name, &error);
+	g_assert (mono_error_ok (&error));
 	if (fb->attrs || fb->modreq || fb->modopt) {
 		field->type = mono_metadata_type_dup (NULL, mono_reflection_type_get_handle ((MonoReflectionType*)fb->type));
 		field->type->attrs = fb->attrs;
@@ -10393,7 +10342,8 @@ fieldbuilder_to_mono_class_field (MonoClass *klass, MonoReflectionFieldBuilder*
 		g_assert (klass->image->dynamic);
 		custom = add_custom_modifiers ((MonoDynamicImage*)klass->image, field->type, fb->modreq, fb->modopt);
 		g_free (field->type);
-		field->type = custom;
+		field->type = mono_metadata_type_dup (klass->image, custom);
+		g_free (custom);
 	} else {
 		field->type = mono_reflection_type_get_handle ((MonoReflectionType*)fb->type);
 	}
@@ -10539,6 +10489,9 @@ mono_reflection_bind_generic_method_parameters (MonoReflectionMethod *rmethod, M
 		mono_g_hash_table_insert (image->generic_def_objects, imethod, rmethod);
 		mono_loader_unlock ();
 	}
+
+	if (!mono_verifier_is_method_valid_generic_instantiation (inflated))
+		mono_raise_exception (mono_get_exception_argument ("typeArguments", "Invalid generic arguments"));
 	
 	return mono_method_get_object (mono_object_domain (rmethod), inflated, NULL);
 }
@@ -10656,11 +10609,11 @@ mono_reflection_generic_class_initialize (MonoReflectionGenericClass *type, Mono
 	dgclass->count_ctors = ctors ? mono_array_length (ctors) : 0;
 	dgclass->count_fields = fields ? mono_array_length (fields) : 0;
 
-	dgclass->methods = g_new0 (MonoMethod *, dgclass->count_methods);
-	dgclass->ctors = g_new0 (MonoMethod *, dgclass->count_ctors);
-	dgclass->fields = g_new0 (MonoClassField, dgclass->count_fields);
-	dgclass->field_objects = g_new0 (MonoObject*, dgclass->count_fields);
-	dgclass->field_generic_types = g_new0 (MonoType*, dgclass->count_fields);
+	dgclass->methods = mono_image_set_new0 (gclass->owner, MonoMethod *, dgclass->count_methods);
+	dgclass->ctors = mono_image_set_new0 (gclass->owner, MonoMethod *, dgclass->count_ctors);
+	dgclass->fields = mono_image_set_new0 (gclass->owner, MonoClassField, dgclass->count_fields);
+	dgclass->field_objects = mono_image_set_new0 (gclass->owner, MonoObject*, dgclass->count_fields);
+	dgclass->field_generic_types = mono_image_set_new0 (gclass->owner, MonoType*, dgclass->count_fields);
 
 	for (i = 0; i < dgclass->count_methods; i++) {
 		MonoObject *obj = mono_array_get (methods, gpointer, i);
@@ -10692,19 +10645,36 @@ mono_reflection_generic_class_initialize (MonoReflectionGenericClass *type, Mono
 		dgclass->fields [i].type = mono_class_inflate_generic_type (
 			field->type, mono_generic_class_get_context ((MonoGenericClass *) dgclass));
 		dgclass->field_generic_types [i] = field->type;
-		MOVING_GC_REGISTER (&dgclass->field_objects [i]);
+		MONO_GC_REGISTER_ROOT_IF_MOVING (dgclass->field_objects [i]);
 		dgclass->field_objects [i] = obj;
 
 		if (inflated_field) {
 			g_free (inflated_field);
 		} else {
-			dgclass->fields [i].name = g_strdup (dgclass->fields [i].name);
+			dgclass->fields [i].name = mono_image_set_strdup (gclass->owner, dgclass->fields [i].name);
 		}
 	}
 
 	dgclass->initialized = TRUE;
 }
 
+void
+mono_reflection_free_dynamic_generic_class (MonoGenericClass *gclass)
+{
+	MonoDynamicGenericClass *dgclass;
+	int i;
+
+	g_assert (gclass->is_dynamic);
+
+	dgclass = (MonoDynamicGenericClass *)gclass;
+
+	for (i = 0; i < dgclass->count_fields; ++i) {
+		MonoClassField *field = dgclass->fields + i;
+		mono_metadata_free_type (field->type);
+		MONO_GC_UNREGISTER_ROOT_IF_MOVING (dgclass->field_objects [i]);
+	}
+}
+
 static void
 fix_partial_generic_class (MonoClass *klass)
 {
@@ -10830,8 +10800,12 @@ ensure_runtime_vtable (MonoClass *klass)
 	}
 
 	if (klass->flags & TYPE_ATTRIBUTE_INTERFACE) {
-		for (i = 0; i < klass->method.count; ++i)
-			klass->methods [i]->slot = i;
+		int slot_num = 0;
+		for (i = 0; i < klass->method.count; ++i) {
+			MonoMethod *im = klass->methods [i];
+			if (!(im->flags & METHOD_ATTRIBUTE_STATIC))
+				im->slot = slot_num++;
+		}
 		
 		klass->interfaces_packed = NULL; /*make setup_interface_offsets happy*/
 		mono_class_setup_interface_offsets (klass);
@@ -11360,10 +11334,17 @@ mono_reflection_initialize_generic_parameter (MonoReflectionGenericParam *gparam
 	MonoGenericParamFull *param;
 	MonoImage *image;
 	MonoClass *pklass;
+	MonoError error;
 
 	MONO_ARCH_SAVE_REGS;
 
-	param = g_new0 (MonoGenericParamFull, 1);
+	image = &gparam->tbuilder->module->dynamic_image->image;
+
+	param = mono_image_new0 (image, MonoGenericParamFull, 1);
+
+	param->info.name = mono_string_to_utf8_image (image, gparam->name, &error);
+	g_assert (mono_error_ok (&error));
+	param->param.num = gparam->index;
 
 	if (gparam->mbuilder) {
 		if (!gparam->mbuilder->generic_container) {
@@ -11387,10 +11368,6 @@ mono_reflection_initialize_generic_parameter (MonoReflectionGenericParam *gparam
 		param->param.owner = gparam->tbuilder->generic_container;
 	}
 
-	param->info.name = mono_string_to_utf8 (gparam->name);
-	param->param.num = gparam->index;
-
-	image = &gparam->tbuilder->module->dynamic_image->image;
 	pklass = mono_class_from_generic_parameter ((MonoGenericParam *) param, image, gparam->mbuilder != NULL);
 
 	gparam->type.type = &pklass->byval_arg;
@@ -12000,7 +11977,7 @@ mono_image_create_method_token (MonoDynamicImage *assembly, MonoObject *obj, Mon
 
 guint32
 mono_image_create_token (MonoDynamicImage *assembly, MonoObject *obj, 
-						 gboolean create_methodspec, gboolean register_token)
+						 gboolean create_open_instance, gboolean register_token)
 {
 	g_assert_not_reached ();
 	return 0;
@@ -12079,6 +12056,12 @@ mono_reflection_type_get_handle (MonoReflectionType* ref)
 	return ref->type;
 }
 
+void
+mono_reflection_free_dynamic_generic_class (MonoGenericClass *gclass)
+{
+	g_assert_not_reached ();
+}
+
 #endif /* DISABLE_REFLECTION_EMIT */
 
 /* SECURITY_ACTION_* are defined in mono/metadata/tabledefs.h */
diff --git a/mono/metadata/reflection.h b/mono/metadata/reflection.h
index a889a3c..9023387 100644
--- a/mono/metadata/reflection.h
+++ b/mono/metadata/reflection.h
@@ -61,7 +61,7 @@ MonoReflectionMethodBody* mono_method_body_get_object (MonoDomain *domain, MonoM
 
 MonoObject *mono_get_dbnull_object (MonoDomain *domain);
 
-MonoArray*  mono_reflection_get_custom_attrs_by_type (MonoObject *obj, MonoClass *attr_klass);
+MonoArray*  mono_reflection_get_custom_attrs_by_type (MonoObject *obj, MonoClass *attr_klass, MonoError *error);
 MonoArray*  mono_reflection_get_custom_attrs (MonoObject *obj);
 MonoArray*  mono_reflection_get_custom_attrs_data (MonoObject *obj);
 MonoArray*  mono_reflection_get_custom_attrs_blob (MonoReflectionAssembly *assembly, MonoObject *ctor, MonoArray *ctorArgs, MonoArray *properties, MonoArray *porpValues, MonoArray *fields, MonoArray* fieldValues);
diff --git a/mono/metadata/runtime.h b/mono/metadata/runtime.h
index 1fa3472..95dac47 100644
--- a/mono/metadata/runtime.h
+++ b/mono/metadata/runtime.h
@@ -4,7 +4,7 @@
  * Author:
  *	Jonathan Pryor
  *
- * (C) 2010 Ximian, Inc.
+ * (C) 2010 Novell, Inc.
  */
 
 #ifndef _MONO_METADATA_RUNTIME_H_
diff --git a/mono/metadata/security-core-clr.c b/mono/metadata/security-core-clr.c
index 77d9ebc..0e83749 100644
--- a/mono/metadata/security-core-clr.c
+++ b/mono/metadata/security-core-clr.c
@@ -111,6 +111,9 @@ get_default_ctor (MonoClass *klass)
 		MonoMethodSignature *sig;
 		MonoMethod *method = klass->methods [i];
 
+		if (!method)
+			continue;
+
 		if ((method->flags & METHOD_ATTRIBUTE_SPECIAL_NAME) == 0)
 			continue;
 		if ((method->name[0] != '.') || strcmp (".ctor", method->name))
@@ -404,7 +407,17 @@ check_field_access (MonoMethod *caller, MonoClassField *field)
 {
 	/* if get_reflection_caller returns NULL then we assume the caller has NO privilege */
 	if (caller) {
-		MonoClass *klass = (mono_field_get_flags (field) & FIELD_ATTRIBUTE_STATIC) ? NULL : mono_field_get_parent (field);
+		MonoError error;
+		MonoClass *klass;
+
+		/* this check can occur before the field's type is resolved (and that can fail) */
+		mono_field_get_type_checked (field, &error);
+		if (!mono_error_ok (&error)) {
+			mono_error_cleanup (&error);
+			return FALSE;
+		}
+
+		klass = (mono_field_get_flags (field) & FIELD_ATTRIBUTE_STATIC) ? NULL : mono_field_get_parent (field);
 		return mono_method_can_access_field_full (caller, field, klass);
 	}
 	return FALSE;
diff --git a/mono/metadata/sgen-cardtable.c b/mono/metadata/sgen-cardtable.c
index 1b1b292..139ac65 100644
--- a/mono/metadata/sgen-cardtable.c
+++ b/mono/metadata/sgen-cardtable.c
@@ -31,49 +31,33 @@
 
 #ifdef SGEN_HAVE_CARDTABLE
 
+//#define CARDTABLE_STATS
+
 #include <unistd.h>
 #include <sys/mman.h>
 #include <sys/types.h>
 
-#define CARD_COUNT_BITS (32 - 9)
-#define CARD_COUNT_IN_BYTES (1 << CARD_COUNT_BITS)
-#define CARD_MASK ((1 << CARD_COUNT_BITS) - 1)
-
-static guint8 *cardtable;
+guint8 *sgen_cardtable;
 
+/*WARNING: This function returns the number of cards regardless of overflow in case of overlapping cards.*/
 static mword
 cards_in_range (mword address, mword size)
 {
-	mword end = address + size;
+	mword end = address + MAX (1, size) - 1;
 	return (end >> CARD_BITS) - (address >> CARD_BITS) + 1;
 }
 
 #ifdef SGEN_HAVE_OVERLAPPING_CARDS
 
+guint8 *sgen_shadow_cardtable;
 
-guint8*
-sgen_card_table_get_card_address (mword address)
-{
-	return cardtable + ((address >> CARD_BITS) & CARD_MASK);
-}
-
-static guint8 *shadow_cardtable;
+#define SGEN_SHADOW_CARDTABLE_END (sgen_shadow_cardtable + CARD_COUNT_IN_BYTES)
+#define SGEN_CARDTABLE_END (sgen_cardtable + CARD_COUNT_IN_BYTES)
 
-static guint8*
-sgen_card_table_get_shadow_card_address (mword address)
-{
-	return shadow_cardtable + ((address >> CARD_BITS) & CARD_MASK);
-}
-
-gboolean
-sgen_card_table_card_begin_scanning (mword address)
-{
-	return *sgen_card_table_get_shadow_card_address (address) != 0;
-}
-
-gboolean
+static gboolean
 sgen_card_table_region_begin_scanning (mword start, mword end)
 {
+	/*XXX this can be improved to work on words and have a single loop induction var */
 	while (start <= end) {
 		if (sgen_card_table_card_begin_scanning (start))
 			return TRUE;
@@ -84,28 +68,14 @@ sgen_card_table_region_begin_scanning (mword start, mword end)
 
 #else
 
-guint8*
-sgen_card_table_get_card_address (mword address)
-{
-	return cardtable + (address >> CARD_BITS);
-}
-
-gboolean
-sgen_card_table_card_begin_scanning (mword address)
-{
-	guint8 *card = sgen_card_table_get_card_address (address);
-	gboolean res = *card;
-	*card = 0;
-	return res;
-}
-
-gboolean
+static gboolean
 sgen_card_table_region_begin_scanning (mword start, mword size)
 {
 	gboolean res = FALSE;
 	guint8 *card = sgen_card_table_get_card_address (start);
 	guint8 *end = card + cards_in_range (start, size);
 
+	/*XXX this can be improved to work on words and have a branchless body */
 	while (card != end) {
 		if (*card++) {
 			res = TRUE;
@@ -120,6 +90,28 @@ sgen_card_table_region_begin_scanning (mword start, mword size)
 
 #endif
 
+/*FIXME this assumes that major blocks are multiple of 4K which is pretty reasonable */
+gboolean
+sgen_card_table_get_card_data (guint8 *data_dest, mword address, mword cards)
+{
+	mword *start = (mword*)sgen_card_table_get_card_scan_address (address);
+	mword *dest = (mword*)data_dest;
+	mword *end = (mword*)(data_dest + cards);
+	mword mask = 0;
+
+	for (; dest < end; ++dest, ++start) {
+		mword v = *start;
+		*dest = v;
+		mask |= v;
+
+#ifndef SGEN_HAVE_OVERLAPPING_CARDS
+		*start = 0;
+#endif
+	}
+
+	return mask;
+}
+
 static gboolean
 sgen_card_table_address_is_marked (mword address)
 {
@@ -148,38 +140,76 @@ sgen_card_table_mark_range (mword address, mword size)
 	} while (address < end);
 }
 
+static gboolean
+sgen_card_table_is_range_marked (guint8 *cards, mword address, mword size)
+{
+	guint8 *end = cards + cards_in_range (address, size);
+
+	/*This is safe since this function is only called by code that only passes continuous card blocks*/
+	while (cards != end) {
+		if (*cards++)
+			return TRUE;
+	}
+	return FALSE;
+
+}
+
 static void
 card_table_init (void)
 {
-	cardtable = mono_sgen_alloc_os_memory (CARD_COUNT_IN_BYTES, TRUE);
+	sgen_cardtable = mono_sgen_alloc_os_memory (CARD_COUNT_IN_BYTES, TRUE);
 
 #ifdef SGEN_HAVE_OVERLAPPING_CARDS
-	shadow_cardtable = mono_sgen_alloc_os_memory (CARD_COUNT_IN_BYTES, TRUE);
+	sgen_shadow_cardtable = mono_sgen_alloc_os_memory (CARD_COUNT_IN_BYTES, TRUE);
 #endif
 }
 
+#ifdef SGEN_HAVE_OVERLAPPING_CARDS
 
-void los_scan_card_table (GrayQueue *queue);
-void los_iterate_live_block_ranges (sgen_cardtable_block_callback callback);
+static void
+move_cards_to_shadow_table (mword start, mword size)
+{
+	guint8 *from = sgen_card_table_get_card_address (start);
+	guint8 *to = sgen_card_table_get_shadow_card_address (start);
+	size_t bytes = cards_in_range (start, size);
+
+	if (to + bytes > SGEN_SHADOW_CARDTABLE_END) {
+		size_t first_chunk = SGEN_SHADOW_CARDTABLE_END - to;
+		size_t second_chunk = MIN (CARD_COUNT_IN_BYTES, bytes) - first_chunk;
 
+		memcpy (to, from, first_chunk);
+		memcpy (sgen_shadow_cardtable, sgen_cardtable, second_chunk);
+	} else {
+		memcpy (to, from, bytes);
+	}
+}
 
 static void
 clear_cards (mword start, mword size)
 {
-	memset (sgen_card_table_get_card_address (start), 0, size >> CARD_BITS);
+	guint8 *addr = sgen_card_table_get_card_address (start);
+	size_t bytes = cards_in_range (start, size);
+
+	if (addr + bytes > SGEN_CARDTABLE_END) {
+		size_t first_chunk = SGEN_CARDTABLE_END - addr;
+
+		memset (addr, 0, first_chunk);
+		memset (sgen_cardtable, 0, bytes - first_chunk);
+	} else {
+		memset (addr, 0, bytes);
+	}
 }
 
-#ifdef SGEN_HAVE_OVERLAPPING_CARDS
+
+#else
 
 static void
-move_cards_to_shadow_table (mword start, mword size)
+clear_cards (mword start, mword size)
 {
-	guint8 *from = sgen_card_table_get_card_address (start);
-	guint8 *to = sgen_card_table_get_shadow_card_address (start);
-	size_t bytes = cards_in_range (start, size);
-	memcpy (to, from, bytes);
+	memset (sgen_card_table_get_card_address (start), 0, cards_in_range (start, size));
 }
 
+
 #endif
 
 static void
@@ -188,7 +218,7 @@ card_table_clear (void)
 	/*XXX we could do this in 2 ways. using mincore or iterating over all sections/los objects */
 	if (use_cardtable) {
 		major_collector.iterate_live_block_ranges (clear_cards);
-		los_iterate_live_block_ranges (clear_cards);
+		mono_sgen_los_iterate_live_block_ranges (clear_cards);
 	}
 }
 static void
@@ -196,15 +226,16 @@ scan_from_card_tables (void *start_nursery, void *end_nursery, GrayQueue *queue)
 {
 	if (use_cardtable) {
 #ifdef SGEN_HAVE_OVERLAPPING_CARDS
+	/*FIXME we should have a bit on each block/los object telling if the object have marked cards.*/
 	/*First we copy*/
 	major_collector.iterate_live_block_ranges (move_cards_to_shadow_table);
-	los_iterate_live_block_ranges (move_cards_to_shadow_table);
+	mono_sgen_los_iterate_live_block_ranges (move_cards_to_shadow_table);
 
 	/*Then we clear*/
 	card_table_clear ();
 #endif
 		major_collector.scan_card_table (queue);
-		los_scan_card_table (queue);
+		mono_sgen_los_scan_card_table (queue);
 	}
 }
 
@@ -214,7 +245,7 @@ mono_gc_get_card_table (int *shift_bits, gpointer *mask)
 	if (!use_cardtable)
 		return NULL;
 
-	g_assert (cardtable);
+	g_assert (sgen_cardtable);
 	*shift_bits = CARD_BITS;
 #ifdef SGEN_HAVE_OVERLAPPING_CARDS
 	*mask = (gpointer)CARD_MASK;
@@ -222,16 +253,17 @@ mono_gc_get_card_table (int *shift_bits, gpointer *mask)
 	*mask = NULL;
 #endif
 
-	return cardtable;
+	return sgen_cardtable;
 }
 
+#if 0
 static void
 collect_faulted_cards (void)
 {
 #define CARD_PAGES (CARD_COUNT_IN_BYTES / 4096)
 	int i, count = 0;
 	unsigned char faulted [CARD_PAGES] = { 0 };
-	mincore (cardtable, CARD_COUNT_IN_BYTES, faulted);
+	mincore (sgen_cardtable, CARD_COUNT_IN_BYTES, faulted);
 
 	for (i = 0; i < CARD_PAGES; ++i) {
 		if (faulted [i])
@@ -240,6 +272,155 @@ collect_faulted_cards (void)
 
 	printf ("TOTAL card pages %d faulted %d\n", CARD_PAGES, count);
 }
+#endif
+
+void
+sgen_cardtable_scan_object (char *obj, mword obj_size, guint8 *cards, SgenGrayQueue *queue)
+{
+	MonoVTable *vt = (MonoVTable*)LOAD_VTABLE (obj);
+	MonoClass *klass = vt->klass;
+
+	if (!SGEN_VTABLE_HAS_REFERENCES (vt))
+		return;
+
+	if (vt->rank) {
+		guint8 *card_data, *card_base;
+		guint8 *card_data_end;
+		char *obj_start = sgen_card_table_align_pointer (obj);
+		char *obj_end = obj + obj_size;
+		size_t card_count;
+		int extra_idx = 0;
+
+		MonoArray *arr = (MonoArray*)obj;
+		mword desc = (mword)klass->element_class->gc_descr;
+		int elem_size = mono_array_element_size (klass);
+
+#ifdef SGEN_HAVE_OVERLAPPING_CARDS
+		guint8 *overflow_scan_end = NULL;
+#endif
+
+		if (cards)
+			card_data = cards;
+		else
+			card_data = sgen_card_table_get_card_scan_address ((mword)obj);
+
+		card_base = card_data;
+		card_count = cards_in_range ((mword)obj, obj_size);
+		card_data_end = card_data + card_count;
+
+
+#ifdef SGEN_HAVE_OVERLAPPING_CARDS
+		/*Check for overflow and if so, setup to scan in two steps*/
+		if (!cards && card_data_end >= SGEN_SHADOW_CARDTABLE_END) {
+			overflow_scan_end = sgen_shadow_cardtable + (card_data_end - SGEN_SHADOW_CARDTABLE_END);
+			card_data_end = SGEN_SHADOW_CARDTABLE_END;
+		}
+
+LOOP_HEAD:
+#endif
+		/*FIXME use card skipping code*/
+		for (; card_data < card_data_end; ++card_data) {
+			int index;
+			int idx = (card_data - card_base) + extra_idx;
+			char *start = (char*)(obj_start + idx * CARD_SIZE_IN_BYTES);
+			char *card_end = start + CARD_SIZE_IN_BYTES;
+			char *elem;
+
+			if (!*card_data)
+				continue;
+
+			if (!cards)
+				sgen_card_table_prepare_card_for_scanning (card_data);
+
+			card_end = MIN (card_end, obj_end);
+
+			if (start <= (char*)arr->vector)
+				index = 0;
+			else
+				index = ARRAY_OBJ_INDEX (start, obj, elem_size);
+
+			elem = (char*)mono_array_addr_with_size ((MonoArray*)obj, elem_size, index);
+			if (klass->element_class->valuetype) {
+				for (; elem < card_end; elem += elem_size)
+					major_collector.minor_scan_vtype (elem, desc, nursery_start, nursery_next, queue);
+			} else {
+				for (; elem < card_end; elem += SIZEOF_VOID_P) {
+					gpointer new, old = *(gpointer*)elem;
+					/*XXX it might be faster to do a nursery check here instead as it avoid a call*/
+					if (old) {
+						major_collector.copy_object ((void**)elem, queue);
+						new = *(gpointer*)elem;
+						if (G_UNLIKELY (ptr_in_nursery (new)))
+							mono_sgen_add_to_global_remset (elem);
+					}
+				}
+			}
+		}
+
+#ifdef SGEN_HAVE_OVERLAPPING_CARDS
+		if (overflow_scan_end) {
+			extra_idx = card_data - card_base;
+			card_base = card_data = sgen_shadow_cardtable;
+			card_data_end = overflow_scan_end;
+			overflow_scan_end = NULL;
+			goto LOOP_HEAD;
+		}
+#endif
+
+	} else {
+		if (cards) {
+			if (sgen_card_table_is_range_marked (cards, (mword)obj, obj_size))
+				major_collector.minor_scan_object (obj, queue);
+		} else if (sgen_card_table_region_begin_scanning ((mword)obj, obj_size)) {
+			major_collector.minor_scan_object (obj, queue);
+		}
+	}
+}
+
+#ifdef CARDTABLE_STATS
+
+static int total_cards, marked_cards, remarked_cards;
+
+static void
+count_marked_cards (mword start, mword size)
+{
+	mword end = start + size;
+	while (start <= end) {
+		++total_cards;
+		if (sgen_card_table_address_is_marked (start))
+			++marked_cards;
+		start += CARD_SIZE_IN_BYTES;
+	}
+}
+
+static void
+count_remarked_cards (mword start, mword size)
+{
+	mword end = start + size;
+	while (start <= end) {
+		if (sgen_card_table_address_is_marked (start))
+			++remarked_cards;
+		start += CARD_SIZE_IN_BYTES;
+	}
+}
+
+#endif
+
+static void
+card_tables_collect_stats (gboolean begin)
+{
+#ifdef CARDTABLE_STATS
+	if (begin) {
+		total_cards = marked_cards = remarked_cards = 0;
+		major_collector.iterate_live_block_ranges (count_marked_cards);
+		los_iterate_live_block_ranges (count_marked_cards);
+	} else {
+		major_collector.iterate_live_block_ranges (count_marked_cards);
+		los_iterate_live_block_ranges (count_remarked_cards);
+		printf ("cards total %d marked %d remarked %d\n", total_cards, marked_cards, remarked_cards);
+	}
+#endif
+}
 
 #else
 
@@ -259,6 +440,7 @@ sgen_card_table_mark_range (mword address, mword size)
 #define scan_from_card_tables(start,end,queue)
 #define card_table_clear()
 #define card_table_init()
+#define card_tables_collect_stats(begin)
 
 guint8*
 mono_gc_get_card_table (int *shift_bits, gpointer *mask)
diff --git a/mono/metadata/sgen-cardtable.h b/mono/metadata/sgen-cardtable.h
new file mode 100644
index 0000000..c1a8747
--- /dev/null
+++ b/mono/metadata/sgen-cardtable.h
@@ -0,0 +1,118 @@
+/*
+ * Copyright 2001-2003 Ximian, Inc
+ * Copyright 2003-2010 Novell, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+#ifndef __MONO_SGEN_CARD_TABLE_INLINES_H__
+#define __MONO_SGEN_CARD_TABLE_INLINES_H__
+
+#define SGEN_HAVE_CARDTABLE	1
+
+#ifdef SGEN_HAVE_CARDTABLE
+
+void sgen_card_table_reset_region (mword start, mword end) MONO_INTERNAL;
+void* sgen_card_table_align_pointer (void *ptr) MONO_INTERNAL;
+void sgen_card_table_mark_address (mword address) MONO_INTERNAL;
+void sgen_card_table_mark_range (mword address, mword size) MONO_INTERNAL;
+void sgen_cardtable_scan_object (char *obj, mword obj_size, guint8 *cards, SgenGrayQueue *queue) MONO_INTERNAL;
+gboolean sgen_card_table_get_card_data (guint8 *dest, mword address, mword cards) MONO_INTERNAL;
+
+/*How many bytes a single card covers*/
+#define CARD_BITS 9
+
+/* How many bits of the address space is covered by the card table.
+ * If this value is smaller than the number of address bits, card aliasing is required.
+ */
+#define CARD_TABLE_BITS 32
+
+#define CARD_SIZE_IN_BYTES (1 << CARD_BITS)
+#define CARD_COUNT_BITS (CARD_TABLE_BITS - CARD_BITS)
+#define CARD_COUNT_IN_BYTES (1 << CARD_COUNT_BITS)
+#define CARD_MASK ((1 << CARD_COUNT_BITS) - 1)
+
+#if SIZEOF_VOID_P * 8 > CARD_TABLE_BITS
+#define SGEN_HAVE_OVERLAPPING_CARDS	1
+#endif
+
+extern guint8 *sgen_cardtable MONO_INTERNAL;
+
+
+#ifdef SGEN_HAVE_OVERLAPPING_CARDS
+
+static inline guint8*
+sgen_card_table_get_card_address (mword address)
+{
+	return sgen_cardtable + ((address >> CARD_BITS) & CARD_MASK);
+}
+
+extern guint8 *sgen_shadow_cardtable MONO_INTERNAL;
+
+static inline  guint8*
+sgen_card_table_get_shadow_card_address (mword address)
+{
+	return sgen_shadow_cardtable + ((address >> CARD_BITS) & CARD_MASK);
+}
+
+static inline gboolean
+sgen_card_table_card_begin_scanning (mword address)
+{
+	return *sgen_card_table_get_shadow_card_address (address) != 0;
+}
+
+static inline void
+sgen_card_table_prepare_card_for_scanning (guint8 *card)
+{
+}
+
+#define sgen_card_table_get_card_scan_address sgen_card_table_get_shadow_card_address
+
+#else
+
+static inline guint8*
+sgen_card_table_get_card_address (mword address)
+{
+	return sgen_cardtable + (address >> CARD_BITS);
+}
+
+static inline gboolean
+sgen_card_table_card_begin_scanning (mword address)
+{
+	guint8 *card = sgen_card_table_get_card_address (address);
+	gboolean res = *card;
+	*card = 0;
+	return res;
+}
+
+static inline void
+sgen_card_table_prepare_card_for_scanning (guint8 *card)
+{
+	*card = 0;
+}
+
+#define sgen_card_table_get_card_scan_address sgen_card_table_get_card_address
+
+#endif
+
+#endif
+
+
+
+#endif
diff --git a/mono/metadata/sgen-gc.c b/mono/metadata/sgen-gc.c
index 4be93fc..d5c3f3c 100644
--- a/mono/metadata/sgen-gc.c
+++ b/mono/metadata/sgen-gc.c
@@ -199,6 +199,8 @@
 #include "metadata/object-internals.h"
 #include "metadata/threads.h"
 #include "metadata/sgen-gc.h"
+#include "metadata/sgen-cardtable.h"
+#include "metadata/sgen-protocol.h"
 #include "metadata/sgen-archdep.h"
 #include "metadata/mono-gc.h"
 #include "metadata/method-builder.h"
@@ -240,8 +242,8 @@ enum {
  */
 
 static int gc_initialized = 0;
-/* If set, do a minor collection before every allocation */
-static gboolean collect_before_allocs = FALSE;
+/* If set, do a minor collection before every X allocation */
+static guint32 collect_before_allocs = 0;
 /* If set, do a heap consistency check before each minor collection */
 static gboolean consistency_check_at_minor_collection = FALSE;
 /* If set, check that there are no references to the domain left at domain unload */
@@ -249,7 +251,7 @@ static gboolean xdomain_checks = FALSE;
 /* If not null, dump the heap after each collection into this file */
 static FILE *heap_dump_file = NULL;
 /* If set, mark stacks conservatively, even if precise marking is possible */
-static gboolean conservative_stack_mark = TRUE;
+gboolean conservative_stack_mark = FALSE;
 /* If set, do a plausibility check on the scan_starts before and after
    each collection */
 static gboolean do_scan_starts_check = FALSE;
@@ -296,9 +298,12 @@ static int stat_wbarrier_value_copy = 0;
 static int stat_wbarrier_object_copy = 0;
 #endif
 
+static long long stat_pinned_objects = 0;
+
 static long long time_minor_pre_collection_fragment_clear = 0;
 static long long time_minor_pinning = 0;
 static long long time_minor_scan_remsets = 0;
+static long long time_minor_scan_card_table = 0;
 static long long time_minor_scan_pinned = 0;
 static long long time_minor_scan_registered_roots = 0;
 static long long time_minor_scan_thread_data = 0;
@@ -321,8 +326,8 @@ static long long time_major_fragment_creation = 0;
 
 #define DEBUG(level,a) do {if (G_UNLIKELY ((level) <= SGEN_MAX_DEBUG_LEVEL && (level) <= gc_debug_level)) a;} while (0)
 
-static int gc_debug_level = 0;
-static FILE* gc_debug_file;
+int gc_debug_level = 0;
+FILE* gc_debug_file;
 
 /*
 void
@@ -339,10 +344,10 @@ mono_gc_flush_info (void)
  */
 #define USER_CONFIG 1
 
-#define TV_DECLARE(name) gint64 name
-#define TV_GETTIME(tv) tv = mono_100ns_ticks ()
-#define TV_ELAPSED(start,end) (int)((end-start) / 10)
-#define TV_ELAPSED_MS(start,end) ((TV_ELAPSED((start),(end)) + 500) / 1000)
+#define TV_DECLARE SGEN_TV_DECLARE
+#define TV_GETTIME SGEN_TV_GETTIME
+#define TV_ELAPSED SGEN_TV_ELAPSED
+#define TV_ELAPSED_MS SGEN_TV_ELAPSED_MS
 
 #define ALIGN_TO(val,align) ((((guint64)val) + ((align) - 1)) & ~((align) - 1))
 
@@ -453,6 +458,12 @@ safe_name (void* obj)
 
 #define safe_object_get_size	mono_sgen_safe_object_get_size
 
+const char*
+mono_sgen_safe_name (void* obj)
+{
+	return safe_name (obj);
+}
+
 /*
  * ######################################################################
  * ########  Global data.
@@ -512,10 +523,14 @@ static mword highest_heap_address = 0;
 
 static LOCK_DECLARE (interruption_mutex);
 static LOCK_DECLARE (global_remset_mutex);
+static LOCK_DECLARE (pin_queue_mutex);
 
 #define LOCK_GLOBAL_REMSET pthread_mutex_lock (&global_remset_mutex)
 #define UNLOCK_GLOBAL_REMSET pthread_mutex_unlock (&global_remset_mutex)
 
+#define LOCK_PIN_QUEUE pthread_mutex_lock (&pin_queue_mutex)
+#define UNLOCK_PIN_QUEUE pthread_mutex_unlock (&pin_queue_mutex)
+
 typedef struct _FinalizeEntry FinalizeEntry;
 struct _FinalizeEntry {
 	FinalizeEntry *next;
@@ -554,12 +569,6 @@ typedef struct {
        void *value;
 } Ephemeron;
 
-enum {
-	GENERATION_NURSERY,
-	GENERATION_OLD,
-	GENERATION_MAX
-};
-
 int current_collection_generation = -1;
 
 /*
@@ -607,6 +616,33 @@ static int roots_hash_size [ROOT_TYPE_NUM] = { 0, 0, 0 };
 static mword roots_size = 0; /* amount of memory in the root set */
 static int num_roots_entries [ROOT_TYPE_NUM] = { 0, 0, 0 };
 
+#define GC_ROOT_NUM 32
+typedef struct {
+	int count;
+	void *objects [GC_ROOT_NUM];
+	int root_types [GC_ROOT_NUM];
+	uintptr_t extra_info [GC_ROOT_NUM];
+} GCRootReport;
+
+static void
+notify_gc_roots (GCRootReport *report)
+{
+	if (!report->count)
+		return;
+	mono_profiler_gc_roots (report->count, report->objects, report->root_types, report->extra_info);
+	report->count = 0;
+}
+
+static void
+add_profile_gc_root (GCRootReport *report, void *object, int rtype, uintptr_t extra_info)
+{
+	if (report->count == GC_ROOT_NUM)
+		notify_gc_roots (report);
+	report->objects [report->count] = object;
+	report->root_types [report->count] = rtype;
+	report->extra_info [report->count++] = (uintptr_t)((MonoVTable*)LOAD_VTABLE (object))->klass;
+}
+
 /* 
  * The current allocation cursors
  * We allocate objects in the nursery.
@@ -706,13 +742,61 @@ static MonoGCCallbacks gc_callbacks;
 static void *moved_objects [MOVED_OBJECTS_NUM];
 static int moved_objects_idx = 0;
 
+/* Vtable of the objects used to fill out nursery fragments before a collection */
+static MonoVTable *array_fill_vtable;
+
 /*
  * ######################################################################
- * ########  Macros and function declarations.
+ * ########  Heap size accounting
  * ######################################################################
  */
+/*heap limits*/
+static mword max_heap_size = ((mword)0)- ((mword)1);
+static mword allocated_heap;
+
+/*Object was pinned during the current collection*/
+static mword objects_pinned;
+
+void
+mono_sgen_release_space (mword size, int space)
+{
+	allocated_heap -= size;
+}
+
+static size_t
+available_free_space (void)
+{
+	return max_heap_size - MIN (allocated_heap, max_heap_size);
+}
+
+gboolean
+mono_sgen_try_alloc_space (mword size, int space)
+{
+	if (available_free_space () < size)
+		return FALSE;
 
-#define ADDR_IN_HEAP_BOUNDARIES(addr) ((p) >= lowest_heap_address && (p) < highest_heap_address)
+	allocated_heap += size;
+	return TRUE;
+}
+
+static void
+init_heap_size_limits (glong max_heap)
+{
+	if (max_heap == 0)
+		return;
+
+	if (max_heap < nursery_size * 4) {
+		fprintf (stderr, "max-heap-size must be at least 4 times larger than nursery size.\n");
+		exit (1);
+	}
+	max_heap_size = max_heap - nursery_size;
+}
+
+/*
+ * ######################################################################
+ * ########  Macros and function declarations.
+ * ######################################################################
+ */
 
 inline static void*
 align_pointer (void *ptr)
@@ -729,12 +813,14 @@ typedef void (*CopyOrMarkObjectFunc) (void**, GrayQueue*);
 typedef char* (*ScanObjectFunc) (char*, GrayQueue*);
 
 /* forward declarations */
-static int stop_world (void);
-static int restart_world (void);
+static int stop_world (int generation);
+static int restart_world (int generation);
 static void scan_thread_data (void *start_nursery, void *end_nursery, gboolean precise);
 static void scan_from_remsets (void *start_nursery, void *end_nursery, GrayQueue *queue);
 static void scan_from_registered_roots (CopyOrMarkObjectFunc copy_func, char *addr_start, char *addr_end, int root_type, GrayQueue *queue);
 static void scan_finalizer_entries (CopyOrMarkObjectFunc copy_func, FinalizeEntry *list, GrayQueue *queue);
+static void report_finalizer_roots (void);
+static void report_registered_roots (void);
 static void find_pinning_ref_from_thread (char *obj, size_t size);
 static void update_current_thread_stack (void *start);
 static void finalize_in_range (CopyOrMarkObjectFunc copy_func, char *start, char *end, int generation, GrayQueue *queue);
@@ -752,7 +838,7 @@ static void clear_tlabs (void);
 static void sort_addresses (void **array, int size);
 static void drain_gray_stack (GrayQueue *queue);
 static void finish_gray_stack (char *start_addr, char *end_addr, int generation, GrayQueue *queue);
-static gboolean need_major_collection (void);
+static gboolean need_major_collection (mword space_needed);
 static void major_collection (const char *reason);
 
 static void mono_gc_register_disappearing_link (MonoObject *obj, void **link, gboolean track);
@@ -776,12 +862,10 @@ static void null_ephemerons_for_domain (MonoDomain *domain);
 
 SgenMajorCollector major_collector;
 
-#include "sgen-protocol.c"
 #include "sgen-pinning.c"
 #include "sgen-pinning-stats.c"
 #include "sgen-gray.c"
 #include "sgen-workers.c"
-#include "sgen-los.c"
 #include "sgen-cardtable.c"
 
 /* Root bitmap descriptors are simpler: the lower three bits describe the type
@@ -1110,22 +1194,36 @@ scan_object_for_xdomain_refs (char *start, mword size, void *data)
 static void
 scan_object_for_specific_ref (char *start, MonoObject *key)
 {
+	char *forwarded;
+
+	if ((forwarded = SGEN_OBJECT_IS_FORWARDED (start)))
+		start = forwarded;
+
 	#include "sgen-scan-object.h"
 }
 
 void
-mono_sgen_scan_area_with_callback (char *start, char *end, IterateObjectCallbackFunc callback, void *data)
+mono_sgen_scan_area_with_callback (char *start, char *end, IterateObjectCallbackFunc callback, void *data, gboolean allow_flags)
 {
 	while (start < end) {
 		size_t size;
+		char *obj;
+
 		if (!*(void**)start) {
 			start += sizeof (void*); /* should be ALLOC_ALIGN, really */
 			continue;
 		}
 
-		size = ALIGN_UP (safe_object_get_size ((MonoObject*) start));
+		if (allow_flags) {
+			if (!(obj = SGEN_OBJECT_IS_FORWARDED (start)))
+				obj = start;
+		} else {
+			obj = start;
+		}
+
+		size = ALIGN_UP (safe_object_get_size ((MonoObject*)obj));
 
-		callback (start, size, data);
+		callback (obj, size, data);
 
 		start += size;
 	}
@@ -1214,17 +1312,15 @@ scan_roots_for_specific_ref (MonoObject *key, int root_type)
 void
 mono_gc_scan_for_specific_ref (MonoObject *key)
 {
-	LOSObject *bigobj;
 	RootRecord *root;
 	int i;
 
 	mono_sgen_scan_area_with_callback (nursery_section->data, nursery_section->end_data,
-			(IterateObjectCallbackFunc)scan_object_for_specific_ref_callback, key);
+			(IterateObjectCallbackFunc)scan_object_for_specific_ref_callback, key, TRUE);
 
 	major_collector.iterate_objects (TRUE, TRUE, (IterateObjectCallbackFunc)scan_object_for_specific_ref_callback, key);
 
-	for (bigobj = los_object_list; bigobj; bigobj = bigobj->next)
-		scan_object_for_specific_ref (bigobj->data, key);
+	mono_sgen_los_iterate_objects ((IterateObjectCallbackFunc)scan_object_for_specific_ref_callback, key);
 
 	scan_roots_for_specific_ref (key, ROOT_TYPE_NORMAL);
 	scan_roots_for_specific_ref (key, ROOT_TYPE_WBARRIER);
@@ -1241,15 +1337,25 @@ mono_gc_scan_for_specific_ref (MonoObject *key)
 	}
 }
 
+static void
+clear_current_nursery_fragment (char *next)
+{
+	if (nursery_clear_policy == CLEAR_AT_TLAB_CREATION) {
+		g_assert (next <= nursery_frag_real_end);
+		DEBUG (4, fprintf (gc_debug_file, "Clear nursery frag %p-%p\n", next, nursery_frag_real_end));
+		memset (next, 0, nursery_frag_real_end - next);
+	}
+}
+
 /* Clear all remaining nursery fragments */
 static void
 clear_nursery_fragments (char *next)
 {
 	Fragment *frag;
 	if (nursery_clear_policy == CLEAR_AT_TLAB_CREATION) {
-		g_assert (next <= nursery_frag_real_end);
-		memset (next, 0, nursery_frag_real_end - next);
+		clear_current_nursery_fragment (next);
 		for (frag = nursery_fragments; frag; frag = frag->next) {
+			DEBUG (4, fprintf (gc_debug_file, "Clear nursery frag %p-%p\n", frag->fragment_start, frag->fragment_end));
 			memset (frag->fragment_start, 0, frag->fragment_end - frag->fragment_start);
 		}
 	}
@@ -1360,7 +1466,7 @@ check_for_xdomain_refs (void)
 	LOSObject *bigobj;
 
 	mono_sgen_scan_area_with_callback (nursery_section->data, nursery_section->end_data,
-			(IterateObjectCallbackFunc)scan_object_for_xdomain_refs, NULL);
+			(IterateObjectCallbackFunc)scan_object_for_xdomain_refs, NULL, FALSE);
 
 	major_collector.iterate_objects (TRUE, TRUE, (IterateObjectCallbackFunc)scan_object_for_xdomain_refs, NULL);
 
@@ -1438,7 +1544,7 @@ mono_gc_clear_domain (MonoDomain * domain)
 	}
 
 	mono_sgen_scan_area_with_callback (nursery_section->data, nursery_section->end_data,
-			(IterateObjectCallbackFunc)clear_domain_process_minor_object_callback, domain);
+			(IterateObjectCallbackFunc)clear_domain_process_minor_object_callback, domain, FALSE);
 
 	/*Ephemerons and dislinks must be processed before LOS since they might end up pointing
 	to memory returned to the OS.*/
@@ -1469,7 +1575,7 @@ mono_gc_clear_domain (MonoDomain * domain)
 			bigobj = bigobj->next;
 			DEBUG (4, fprintf (gc_debug_file, "Freeing large object %p\n",
 					bigobj->data));
-			free_large_object (to_free);
+			mono_sgen_los_free_object (to_free);
 			continue;
 		}
 		prev = bigobj;
@@ -1636,6 +1742,31 @@ pin_objects_from_addresses (GCMemSection *section, void **start, void **end, voi
 	void *addr;
 	int idx;
 	void **definitely_pinned = start;
+	Fragment *frag;
+
+	/*
+	 * The code below starts the search from an entry in scan_starts, which might point into a nursery
+	 * fragment containing random data. Clearing the nursery fragments takes a lot of time, and searching
+	 * though them too, so lay arrays at each location inside a fragment where a search can start:
+	 * - scan_locations[i]
+	 * - start_nursery
+	 * - the start of each fragment (the last_obj + last_obj case)
+	 * The third encompasses the first two, since scan_locations [i] can't point inside a nursery fragment.
+	 */
+	for (frag = nursery_fragments; frag; frag = frag->next) {
+		MonoArray *o;
+
+		g_assert (frag->fragment_end - frag->fragment_start >= sizeof (MonoArray));
+		o = (MonoArray*)frag->fragment_start;
+		memset (o, 0, sizeof (MonoArray));
+		g_assert (array_fill_vtable);
+		o->obj.vtable = array_fill_vtable;
+		/* Mark this as not a real object */
+		o->obj.synchronisation = GINT_TO_POINTER (-1);
+		o->max_length = (frag->fragment_end - frag->fragment_start) - sizeof (MonoArray);
+		g_assert (frag->fragment_start + safe_object_get_size ((MonoObject*)o) == frag->fragment_end);
+	}
+
 	while (start < end) {
 		addr = *start;
 		/* the range check should be reduntant */
@@ -1664,24 +1795,38 @@ pin_objects_from_addresses (GCMemSection *section, void **start, void **end, voi
 			/* now addr should be in an object a short distance from search_start
 			 * Note that search_start must point to zeroed mem or point to an object.
 			 */
+
 			do {
 				if (!*(void**)search_start) {
+					/* Consistency check */
+					/*
+					for (frag = nursery_fragments; frag; frag = frag->next) {
+						if (search_start >= frag->fragment_start && search_start < frag->fragment_end)
+							g_assert_not_reached ();
+					}
+					*/
+
 					search_start = (void*)ALIGN_UP ((mword)search_start + sizeof (gpointer));
 					continue;
 				}
 				last_obj = search_start;
 				last_obj_size = ALIGN_UP (safe_object_get_size ((MonoObject*)search_start));
-				DEBUG (8, fprintf (gc_debug_file, "Pinned try match %p (%s), size %zd\n", last_obj, safe_name (last_obj), last_obj_size));
-				if (addr >= search_start && (char*)addr < (char*)last_obj + last_obj_size) {
-					DEBUG (4, fprintf (gc_debug_file, "Pinned object %p, vtable %p (%s), count %d\n", search_start, *(void**)search_start, safe_name (search_start), count));
-					binary_protocol_pin (search_start, (gpointer)LOAD_VTABLE (search_start), safe_object_get_size (search_start));
-					pin_object (search_start);
-					GRAY_OBJECT_ENQUEUE (queue, search_start);
-					if (heap_dump_file)
-						mono_sgen_pin_stats_register_object (search_start, last_obj_size);
-					definitely_pinned [count] = search_start;
-					count++;
-					break;
+
+				if (((MonoObject*)last_obj)->synchronisation == GINT_TO_POINTER (-1)) {
+					/* Marks the beginning of a nursery fragment, skip */
+				} else {
+					DEBUG (8, fprintf (gc_debug_file, "Pinned try match %p (%s), size %zd\n", last_obj, safe_name (last_obj), last_obj_size));
+					if (addr >= search_start && (char*)addr < (char*)last_obj + last_obj_size) {
+						DEBUG (4, fprintf (gc_debug_file, "Pinned object %p, vtable %p (%s), count %d\n", search_start, *(void**)search_start, safe_name (search_start), count));
+						binary_protocol_pin (search_start, (gpointer)LOAD_VTABLE (search_start), safe_object_get_size (search_start));
+						pin_object (search_start);
+						GRAY_OBJECT_ENQUEUE (queue, search_start);
+						if (heap_dump_file)
+							mono_sgen_pin_stats_register_object (search_start, last_obj_size);
+						definitely_pinned [count] = search_start;
+						count++;
+						break;
+					}
 				}
 				/* skip to the next object */
 				search_start = (void*)((char*)search_start + last_obj_size);
@@ -1694,6 +1839,14 @@ pin_objects_from_addresses (GCMemSection *section, void **start, void **end, voi
 		start++;
 	}
 	//printf ("effective pinned: %d (at the end: %d)\n", count, (char*)end_nursery - (char*)last);
+	if (mono_profiler_get_events () & MONO_PROFILE_GC_ROOTS) {
+		GCRootReport report;
+		report.count = 0;
+		for (idx = 0; idx < count; ++idx)
+			add_profile_gc_root (&report, definitely_pinned [idx], MONO_PROFILE_GC_ROOT_PINNING, 0);
+		notify_gc_roots (&report);
+	}
+	stat_pinned_objects += count;
 	return count;
 }
 
@@ -1712,6 +1865,24 @@ mono_sgen_pin_objects_in_section (GCMemSection *section, GrayQueue *queue)
 	}
 }
 
+
+void
+mono_sgen_pin_object (void *object, GrayQueue *queue)
+{
+	if (major_collector.is_parallel) {
+		LOCK_PIN_QUEUE;
+		/*object arrives pinned*/
+		pin_stage_ptr (object);
+		++objects_pinned ;
+		UNLOCK_PIN_QUEUE;
+	} else {
+		SGEN_PIN_OBJECT (object);
+		pin_stage_ptr (object);
+		++objects_pinned;
+	}
+	GRAY_OBJECT_ENQUEUE (queue, object);
+}
+
 /* Sort the addresses in array in increasing order.
  * Done using a by-the book heap sort. Which has decent and stable performance, is pretty cache efficient.
  */
@@ -1836,7 +2007,7 @@ conservatively_pin_objects_from (void **start, void **end, void *start_nursery,
 				pin_stage_ptr ((void*)addr);
 			if (heap_dump_file)
 				pin_stats_register_address ((char*)addr, pin_type);
-			DEBUG (6, if (count) fprintf (gc_debug_file, "Pinning address %p\n", (void*)addr));
+			DEBUG (6, if (count) fprintf (gc_debug_file, "Pinning address %p from %p\n", (void*)addr, start));
 			count++;
 		}
 		start++;
@@ -1970,6 +2141,13 @@ precisely_scan_objects_from (CopyOrMarkObjectFunc copy_func, void** start_root,
 	}
 }
 
+static void
+reset_heap_boundaries (void)
+{
+	lowest_heap_address = ~(mword)0;
+	highest_heap_address = 0;
+}
+
 void
 mono_sgen_update_heap_boundaries (mword low, mword high)
 {
@@ -2091,6 +2269,106 @@ mono_gc_get_nursery (int *shift_bits, size_t *size)
 }
 
 static void
+report_finalizer_roots_list (FinalizeEntry *list)
+{
+	GCRootReport report;
+	FinalizeEntry *fin;
+
+	report.count = 0;
+	for (fin = list; fin; fin = fin->next) {
+		if (!fin->object)
+			continue;
+		add_profile_gc_root (&report, fin->object, MONO_PROFILE_GC_ROOT_FINALIZER, 0);
+	}
+	notify_gc_roots (&report);
+}
+
+static void
+report_finalizer_roots (void)
+{
+	report_finalizer_roots_list (fin_ready_list);
+	report_finalizer_roots_list (critical_fin_list);
+}
+
+static GCRootReport *root_report;
+
+static void
+single_arg_report_root (void **obj)
+{
+	if (*obj)
+		add_profile_gc_root (root_report, *obj, MONO_PROFILE_GC_ROOT_OTHER, 0);
+}
+
+static void
+precisely_report_roots_from (GCRootReport *report, void** start_root, void** end_root, mword desc)
+{
+	switch (desc & ROOT_DESC_TYPE_MASK) {
+	case ROOT_DESC_BITMAP:
+		desc >>= ROOT_DESC_TYPE_SHIFT;
+		while (desc) {
+			if ((desc & 1) && *start_root) {
+				add_profile_gc_root (report, *start_root, MONO_PROFILE_GC_ROOT_OTHER, 0);
+			}
+			desc >>= 1;
+			start_root++;
+		}
+		return;
+	case ROOT_DESC_COMPLEX: {
+		gsize *bitmap_data = complex_descriptors + (desc >> ROOT_DESC_TYPE_SHIFT);
+		int bwords = (*bitmap_data) - 1;
+		void **start_run = start_root;
+		bitmap_data++;
+		while (bwords-- > 0) {
+			gsize bmap = *bitmap_data++;
+			void **objptr = start_run;
+			while (bmap) {
+				if ((bmap & 1) && *objptr) {
+					add_profile_gc_root (report, *objptr, MONO_PROFILE_GC_ROOT_OTHER, 0);
+				}
+				bmap >>= 1;
+				++objptr;
+			}
+			start_run += GC_BITS_PER_WORD;
+		}
+		break;
+	}
+	case ROOT_DESC_USER: {
+		MonoGCRootMarkFunc marker = user_descriptors [desc >> ROOT_DESC_TYPE_SHIFT];
+		root_report = report;
+		marker (start_root, single_arg_report_root);
+		break;
+	}
+	case ROOT_DESC_RUN_LEN:
+		g_assert_not_reached ();
+	default:
+		g_assert_not_reached ();
+	}
+}
+
+static void
+report_registered_roots_by_type (int root_type)
+{
+	GCRootReport report;
+	int i;
+	RootRecord *root;
+	report.count = 0;
+	for (i = 0; i < roots_hash_size [root_type]; ++i) {
+		for (root = roots_hash [root_type][i]; root; root = root->next) {
+			DEBUG (6, fprintf (gc_debug_file, "Precise root scan %p-%p (desc: %p)\n", root->start_root, root->end_root, (void*)root->root_desc));
+			precisely_report_roots_from (&report, (void**)root->start_root, (void**)root->end_root, root->root_desc);
+		}
+	}
+	notify_gc_roots (&report);
+}
+
+static void
+report_registered_roots (void)
+{
+	report_registered_roots_by_type (ROOT_TYPE_NORMAL);
+	report_registered_roots_by_type (ROOT_TYPE_WBARRIER);
+}
+
+static void
 scan_finalizer_entries (CopyOrMarkObjectFunc copy_func, FinalizeEntry *list, GrayQueue *queue)
 {
 	FinalizeEntry *fin;
@@ -2115,11 +2393,12 @@ add_nursery_frag (size_t frag_size, char* frag_start, char* frag_end)
 	Fragment *fragment;
 	DEBUG (4, fprintf (gc_debug_file, "Found empty fragment: %p-%p, size: %zd\n", frag_start, frag_end, frag_size));
 	binary_protocol_empty (frag_start, frag_size);
-	/* memsetting just the first chunk start is bound to provide better cache locality */
-	if (nursery_clear_policy == CLEAR_AT_GC)
-		memset (frag_start, 0, frag_size);
 	/* Not worth dealing with smaller fragments: need to tune */
 	if (frag_size >= FRAGMENT_MIN_SIZE) {
+		/* memsetting just the first chunk start is bound to provide better cache locality */
+		if (nursery_clear_policy == CLEAR_AT_GC)
+			memset (frag_start, 0, frag_size);
+
 		fragment = alloc_fragment ();
 		fragment->fragment_start = frag_start;
 		fragment->fragment_limit = frag_start;
@@ -2486,6 +2765,7 @@ init_stats (void)
 	mono_counters_register ("Minor fragment clear", MONO_COUNTER_GC | MONO_COUNTER_LONG, &time_minor_pre_collection_fragment_clear);
 	mono_counters_register ("Minor pinning", MONO_COUNTER_GC | MONO_COUNTER_LONG, &time_minor_pinning);
 	mono_counters_register ("Minor scan remsets", MONO_COUNTER_GC | MONO_COUNTER_LONG, &time_minor_scan_remsets);
+	mono_counters_register ("Minor scan cardtables", MONO_COUNTER_GC | MONO_COUNTER_LONG, &time_minor_scan_card_table);
 	mono_counters_register ("Minor scan pinned", MONO_COUNTER_GC | MONO_COUNTER_LONG, &time_minor_scan_pinned);
 	mono_counters_register ("Minor scan registered roots", MONO_COUNTER_GC | MONO_COUNTER_LONG, &time_minor_scan_registered_roots);
 	mono_counters_register ("Minor scan thread data", MONO_COUNTER_GC | MONO_COUNTER_LONG, &time_minor_scan_thread_data);
@@ -2506,6 +2786,7 @@ init_stats (void)
 	mono_counters_register ("Major sweep", MONO_COUNTER_GC | MONO_COUNTER_LONG, &time_major_sweep);
 	mono_counters_register ("Major fragment creation", MONO_COUNTER_GC | MONO_COUNTER_LONG, &time_major_fragment_creation);
 
+	mono_counters_register ("Number of pinned objects", MONO_COUNTER_GC | MONO_COUNTER_LONG, &stat_pinned_objects);
 
 #ifdef HEAVY_STATISTICS
 	mono_counters_register ("WBarrier set field", MONO_COUNTER_GC | MONO_COUNTER_INT, &stat_wbarrier_set_field);
@@ -2552,11 +2833,81 @@ init_stats (void)
 	inited = TRUE;
 }
 
+static gboolean need_calculate_minor_collection_allowance;
+
+static int last_collection_old_num_major_sections;
+static mword last_collection_los_memory_usage = 0;
+static mword last_collection_old_los_memory_usage;
+static mword last_collection_los_memory_alloced;
+
+static void
+reset_minor_collection_allowance (void)
+{
+	need_calculate_minor_collection_allowance = TRUE;
+}
+
+static void
+try_calculate_minor_collection_allowance (gboolean overwrite)
+{
+	int num_major_sections, num_major_sections_saved, save_target, allowance_target;
+	mword los_memory_saved;
+
+	if (overwrite)
+		g_assert (need_calculate_minor_collection_allowance);
+
+	if (!need_calculate_minor_collection_allowance)
+		return;
+
+	if (!*major_collector.have_swept) {
+		if (overwrite)
+			minor_collection_allowance = MIN_MINOR_COLLECTION_ALLOWANCE;
+		return;
+	}
+
+	num_major_sections = major_collector.get_num_major_sections ();
+
+	num_major_sections_saved = MAX (last_collection_old_num_major_sections - num_major_sections, 0);
+	los_memory_saved = MAX (last_collection_old_los_memory_usage - last_collection_los_memory_usage, 1);
+
+	save_target = ((num_major_sections * major_collector.section_size) + los_memory_saved) / 2;
+
+	/*
+	 * We aim to allow the allocation of as many sections as is
+	 * necessary to reclaim save_target sections in the next
+	 * collection.  We assume the collection pattern won't change.
+	 * In the last cycle, we had num_major_sections_saved for
+	 * minor_collection_sections_alloced.  Assuming things won't
+	 * change, this must be the same ratio as save_target for
+	 * allowance_target, i.e.
+	 *
+	 *    num_major_sections_saved            save_target
+	 * --------------------------------- == ----------------
+	 * minor_collection_sections_alloced    allowance_target
+	 *
+	 * hence:
+	 */
+	allowance_target = (mword)((double)save_target * (double)(minor_collection_sections_alloced * major_collector.section_size + last_collection_los_memory_alloced) / (double)(num_major_sections_saved * major_collector.section_size + los_memory_saved));
+
+	minor_collection_allowance = MAX (MIN (allowance_target, num_major_sections * major_collector.section_size + los_memory_usage), MIN_MINOR_COLLECTION_ALLOWANCE);
+
+	if (major_collector.have_computed_minor_collection_allowance)
+		major_collector.have_computed_minor_collection_allowance ();
+
+	need_calculate_minor_collection_allowance = FALSE;
+}
+
 static gboolean
-need_major_collection (void)
+need_major_collection (mword space_needed)
 {
-	mword los_alloced = los_memory_usage - MIN (last_los_memory_usage, los_memory_usage);
-	return minor_collection_sections_alloced * major_collector.section_size + los_alloced > minor_collection_allowance;
+	mword los_alloced = los_memory_usage - MIN (last_collection_los_memory_usage, los_memory_usage);
+	return (space_needed > available_free_space ()) ||
+		minor_collection_sections_alloced * major_collector.section_size + los_alloced > minor_collection_allowance;
+}
+
+gboolean
+mono_sgen_need_major_collection (mword space_needed)
+{
+	return need_major_collection (space_needed);
 }
 
 /*
@@ -2566,6 +2917,7 @@ need_major_collection (void)
 static gboolean
 collect_nursery (size_t requested_size)
 {
+	gboolean needs_major;
 	size_t max_garbage_amount;
 	char *orig_nursery_next;
 	TV_DECLARE (all_atv);
@@ -2573,12 +2925,15 @@ collect_nursery (size_t requested_size)
 	TV_DECLARE (atv);
 	TV_DECLARE (btv);
 
+	mono_perfcounters->gc_collections0++;
+
 	current_collection_generation = GENERATION_NURSERY;
 
 	binary_protocol_collection (GENERATION_NURSERY);
 	check_scan_starts ();
 
 	degraded_mode = 0;
+	objects_pinned = 0;
 	orig_nursery_next = nursery_next;
 	nursery_next = MAX (nursery_next, nursery_last_pinned_end);
 	/* FIXME: optimize later to use the higher address where an object can be present */
@@ -2590,10 +2945,10 @@ collect_nursery (size_t requested_size)
 
 	/* world must be stopped already */
 	TV_GETTIME (all_atv);
-	TV_GETTIME (atv);
+	atv = all_atv;
 
-	/* Pinning depends on this */
-	clear_nursery_fragments (orig_nursery_next);
+	/* Pinning no longer depends on clearing all nursery fragments */
+	clear_current_nursery_fragment (orig_nursery_next);
 
 	TV_GETTIME (btv);
 	time_minor_pre_collection_fragment_clear += TV_ELAPSED_MS (atv, btv);
@@ -2605,6 +2960,8 @@ collect_nursery (size_t requested_size)
 
 	major_collector.start_nursery_collection ();
 
+	try_calculate_minor_collection_allowance (FALSE);
+
 	gray_object_queue_init (&gray_queue, mono_sgen_get_unmanaged_allocator ());
 
 	num_minor_gcs++;
@@ -2614,6 +2971,7 @@ collect_nursery (size_t requested_size)
 
 	/* pin from pinned handles */
 	init_pinning ();
+	mono_profiler_gc_event (MONO_GC_EVENT_MARK_START, 0);
 	pin_from_roots (nursery_start, nursery_next);
 	/* identify pinned objects */
 	optimize_pin_queue (0);
@@ -2640,12 +2998,19 @@ collect_nursery (size_t requested_size)
 	DEBUG (2, fprintf (gc_debug_file, "Old generation scan: %d usecs\n", TV_ELAPSED (atv, btv)));
 
 	if (use_cardtable) {
+		atv = btv;
+		card_tables_collect_stats (TRUE);
 		scan_from_card_tables (nursery_start, nursery_next, &gray_queue);
-		//collect_faulted_cards ();
+		TV_GETTIME (btv);
+		time_minor_scan_card_table += TV_ELAPSED_MS (atv, btv);
 	}
 
 	drain_gray_stack (&gray_queue);
 
+	if (mono_profiler_get_events () & MONO_PROFILE_GC_ROOTS)
+		report_registered_roots ();
+	if (mono_profiler_get_events () & MONO_PROFILE_GC_ROOTS)
+		report_finalizer_roots ();
 	TV_GETTIME (atv);
 	time_minor_scan_pinned += TV_ELAPSED_MS (btv, atv);
 	/* registered roots, this includes static fields */
@@ -2662,12 +3027,22 @@ collect_nursery (size_t requested_size)
 	finish_gray_stack (nursery_start, nursery_next, GENERATION_NURSERY, &gray_queue);
 	TV_GETTIME (atv);
 	time_minor_finish_gray_stack += TV_ELAPSED_MS (btv, atv);
+	mono_profiler_gc_event (MONO_GC_EVENT_MARK_END, 0);
+
+	if (objects_pinned) {
+		evacuate_pin_staging_area ();
+		optimize_pin_queue (0);
+		nursery_section->pin_queue_start = pin_queue;
+		nursery_section->pin_queue_num_entries = next_pin_slot;
+	}
 
 	/* walk the pin_queue, build up the fragment list of free memory, unmark
 	 * pinned objects as we go, memzero() the empty fragments so they are ready for the
 	 * next allocations.
 	 */
+	mono_profiler_gc_event (MONO_GC_EVENT_RECLAIM_START, 0);
 	build_nursery_fragments (pin_queue, next_pin_slot);
+	mono_profiler_gc_event (MONO_GC_EVENT_RECLAIM_END, 0);
 	TV_GETTIME (btv);
 	time_minor_fragment_creation += TV_ELAPSED_MS (atv, btv);
 	DEBUG (2, fprintf (gc_debug_file, "Fragment creation: %d usecs, %lu bytes available\n", TV_ELAPSED (atv, btv), (unsigned long)fragment_total));
@@ -2694,13 +3069,19 @@ collect_nursery (size_t requested_size)
 
 	g_assert (gray_object_queue_is_empty (&gray_queue));
 
+	if (use_cardtable)
+		card_tables_collect_stats (FALSE);
+
 	check_scan_starts ();
 
 	binary_protocol_flush_buffers (FALSE);
 
+	/*objects are late pinned because of lack of memory, so a major is a good call*/
+	needs_major = need_major_collection (0) || objects_pinned;
 	current_collection_generation = -1;
+	objects_pinned = 0;
 
-	return need_major_collection ();
+	return needs_major;
 }
 
 static void
@@ -2716,16 +3097,19 @@ major_do_collection (const char *reason)
 	 */
 	char *heap_start = NULL;
 	char *heap_end = (char*)-1;
-	int old_num_major_sections = major_collector.get_num_major_sections ();
-	int num_major_sections, num_major_sections_saved, save_target, allowance_target;
-	mword los_memory_saved, los_memory_alloced, old_los_memory_usage;
+	int old_next_pin_slot;
+
+	mono_perfcounters->gc_collections1++;
+
+	last_collection_old_num_major_sections = major_collector.get_num_major_sections ();
 
 	/*
 	 * A domain could have been freed, resulting in
-	 * los_memory_usage being less than last_los_memory_usage.
+	 * los_memory_usage being less than last_collection_los_memory_usage.
 	 */
-	los_memory_alloced = los_memory_usage - MIN (last_los_memory_usage, los_memory_usage);
-	old_los_memory_usage = los_memory_usage;
+	last_collection_los_memory_alloced = los_memory_usage - MIN (last_collection_los_memory_usage, los_memory_usage);
+	last_collection_old_los_memory_usage = los_memory_usage;
+	objects_pinned = 0;
 
 	//count_ref_nonref_objs ();
 	//consistency_check ();
@@ -2743,7 +3127,7 @@ major_do_collection (const char *reason)
 
 	/* world must be stopped already */
 	TV_GETTIME (all_atv);
-	TV_GETTIME (atv);
+	atv = all_atv;
 
 	/* Pinning depends on this */
 	clear_nursery_fragments (nursery_next);
@@ -2751,13 +3135,20 @@ major_do_collection (const char *reason)
 	TV_GETTIME (btv);
 	time_major_pre_collection_fragment_clear += TV_ELAPSED_MS (atv, btv);
 
-	if (xdomain_checks)
-		check_for_xdomain_refs ();
-
 	nursery_section->next_data = nursery_real_end;
 	/* we should also coalesce scanning from sections close to each other
 	 * and deal with pointers outside of the sections later.
 	 */
+
+	if (major_collector.start_major_collection)
+		major_collector.start_major_collection ();
+
+	*major_collector.have_swept = FALSE;
+	reset_minor_collection_allowance ();
+
+	if (xdomain_checks)
+		check_for_xdomain_refs ();
+
 	/* The remsets are not useful for a major collection */
 	clear_remsets ();
 	global_remset_cache_clear ();
@@ -2802,6 +3193,7 @@ major_do_collection (const char *reason)
 	/* second pass for the sections */
 	mono_sgen_pin_objects_in_section (nursery_section, WORKERS_DISTRIBUTE_GRAY_QUEUE);
 	major_collector.pin_objects (WORKERS_DISTRIBUTE_GRAY_QUEUE);
+	old_next_pin_slot = next_pin_slot;
 
 	TV_GETTIME (btv);
 	time_major_pinning += TV_ELAPSED_MS (atv, btv);
@@ -2812,6 +3204,8 @@ major_do_collection (const char *reason)
 
 	workers_start_all_workers (1);
 
+	if (mono_profiler_get_events () & MONO_PROFILE_GC_ROOTS)
+		report_registered_roots ();
 	TV_GETTIME (atv);
 	time_major_scan_pinned += TV_ELAPSED_MS (btv, atv);
 
@@ -2831,6 +3225,8 @@ major_do_collection (const char *reason)
 	TV_GETTIME (btv);
 	time_major_scan_alloc_pinned += TV_ELAPSED_MS (atv, btv);
 
+	if (mono_profiler_get_events () & MONO_PROFILE_GC_ROOTS)
+		report_finalizer_roots ();
 	/* scan the list of objects ready for finalization */
 	scan_finalizer_entries (major_collector.copy_or_mark_object, fin_ready_list, WORKERS_DISTRIBUTE_GRAY_QUEUE);
 	scan_finalizer_entries (major_collector.copy_or_mark_object, critical_fin_list, WORKERS_DISTRIBUTE_GRAY_QUEUE);
@@ -2858,11 +3254,24 @@ major_do_collection (const char *reason)
 	TV_GETTIME (atv);
 	time_major_finish_gray_stack += TV_ELAPSED_MS (btv, atv);
 
+	if (objects_pinned) {
+		/*This is slow, but we just OOM'd*/
+		mono_sgen_pin_queue_clear_discarded_entries (nursery_section, old_next_pin_slot);
+		evacuate_pin_staging_area ();
+		optimize_pin_queue (0);
+		mono_sgen_find_section_pin_queue_start_end (nursery_section);
+		objects_pinned = 0;
+	}
+
+	reset_heap_boundaries ();
+	mono_sgen_update_heap_boundaries ((mword)nursery_start, (mword)nursery_real_end);
+
 	/* sweep the big objects list */
 	prevbo = NULL;
 	for (bigobj = los_object_list; bigobj;) {
 		if (object_is_pinned (bigobj->data)) {
 			unpin_object (bigobj->data);
+			mono_sgen_update_heap_boundaries ((mword)bigobj->data, (mword)bigobj->data + bigobj->size);
 		} else {
 			LOSObject *to_free;
 			/* not referenced anywhere, so we can free it */
@@ -2872,7 +3281,7 @@ major_do_collection (const char *reason)
 				los_object_list = bigobj->next;
 			to_free = bigobj;
 			bigobj = bigobj->next;
-			free_large_object (to_free);
+			mono_sgen_los_free_object (to_free);
 			continue;
 		}
 		prevbo = bigobj;
@@ -2882,7 +3291,7 @@ major_do_collection (const char *reason)
 	TV_GETTIME (btv);
 	time_major_free_bigobjs += TV_ELAPSED_MS (atv, btv);
 
-	los_sweep ();
+	mono_sgen_los_sweep ();
 
 	TV_GETTIME (atv);
 	time_major_los_sweep += TV_ELAPSED_MS (btv, atv);
@@ -2917,33 +3326,10 @@ major_do_collection (const char *reason)
 
 	g_assert (gray_object_queue_is_empty (&gray_queue));
 
-	num_major_sections = major_collector.get_num_major_sections ();
-
-	num_major_sections_saved = MAX (old_num_major_sections - num_major_sections, 0);
-	los_memory_saved = MAX (old_los_memory_usage - los_memory_usage, 1);
-
-	save_target = ((num_major_sections * major_collector.section_size) + los_memory_saved) / 2;
-	/*
-	 * We aim to allow the allocation of as many sections as is
-	 * necessary to reclaim save_target sections in the next
-	 * collection.  We assume the collection pattern won't change.
-	 * In the last cycle, we had num_major_sections_saved for
-	 * minor_collection_sections_alloced.  Assuming things won't
-	 * change, this must be the same ratio as save_target for
-	 * allowance_target, i.e.
-	 *
-	 *    num_major_sections_saved            save_target
-	 * --------------------------------- == ----------------
-	 * minor_collection_sections_alloced    allowance_target
-	 *
-	 * hence:
-	 */
-	allowance_target = (mword)((double)save_target * (double)(minor_collection_sections_alloced * major_collector.section_size + los_memory_alloced) / (double)(num_major_sections_saved * major_collector.section_size + los_memory_saved));
-
-	minor_collection_allowance = MAX (MIN (allowance_target, num_major_sections * major_collector.section_size + los_memory_usage), MIN_MINOR_COLLECTION_ALLOWANCE);
+	try_calculate_minor_collection_allowance (TRUE);
 
 	minor_collection_sections_alloced = 0;
-	last_los_memory_usage = los_memory_usage;
+	last_collection_los_memory_usage = los_memory_usage;
 
 	major_collector.finish_major_collection ();
 
@@ -2967,6 +3353,16 @@ major_collection (const char *reason)
 	current_collection_generation = -1;
 }
 
+void
+sgen_collect_major_no_lock (const char *reason)
+{
+	 mono_profiler_gc_event (MONO_GC_EVENT_START, 1);
+	 stop_world (1);
+	 major_collection (reason);
+	 restart_world (1);
+	 mono_profiler_gc_event (MONO_GC_EVENT_END, 1);
+}
+
 /*
  * When deciding if it's better to collect or to expand, keep track
  * of how much garbage was reclaimed with the last collection: if it's too
@@ -2980,11 +3376,16 @@ minor_collect_or_expand_inner (size_t size)
 
 	g_assert (nursery_section);
 	if (do_minor_collection) {
-		stop_world ();
-		if (collect_nursery (size))
+		mono_profiler_gc_event (MONO_GC_EVENT_START, 0);
+		stop_world (0);
+		if (collect_nursery (size)) {
+			mono_profiler_gc_event (MONO_GC_EVENT_START, 1);
 			major_collection ("minor overflow");
+			/* keep events symmetric */
+			mono_profiler_gc_event (MONO_GC_EVENT_END, 1);
+		}
 		DEBUG (2, fprintf (gc_debug_file, "Heap size: %lu, LOS size: %lu\n", (unsigned long)total_alloc, (unsigned long)los_memory_usage));
-		restart_world ();
+		restart_world (0);
 		/* this also sets the proper pointers for the next allocation */
 		if (!search_fragment_for_size (size)) {
 			int i;
@@ -2995,6 +3396,7 @@ minor_collect_or_expand_inner (size_t size)
 			}
 			degraded_mode = 1;
 		}
+		mono_profiler_gc_event (MONO_GC_EVENT_END, 0);
 	}
 	//report_internal_mem_usage ();
 }
@@ -3091,9 +3493,10 @@ search_fragment_for_size (size_t size)
 	Fragment *frag, *prev;
 	DEBUG (4, fprintf (gc_debug_file, "Searching nursery fragment %p, size: %zd\n", nursery_frag_real_end, size));
 
-	if (nursery_frag_real_end > nursery_next && nursery_clear_policy == CLEAR_AT_TLAB_CREATION)
+	if (nursery_frag_real_end > nursery_next && nursery_clear_policy == CLEAR_AT_TLAB_CREATION) {
 		/* Clear the remaining space, pinning depends on this */
 		memset (nursery_next, 0, nursery_frag_real_end - nursery_next);
+	}
 
 	prev = NULL;
 	for (frag = nursery_fragments; frag; frag = frag->next) {
@@ -3116,9 +3519,10 @@ search_fragment_for_size_range (size_t desired_size, size_t minimum_size)
 	Fragment *frag, *prev, *min_prev;
 	DEBUG (4, fprintf (gc_debug_file, "Searching nursery fragment %p, desired size: %zd minimum size %zd\n", nursery_frag_real_end, desired_size, minimum_size));
 
-	if (nursery_frag_real_end > nursery_next && nursery_clear_policy == CLEAR_AT_TLAB_CREATION)
+	if (nursery_frag_real_end > nursery_next && nursery_clear_policy == CLEAR_AT_TLAB_CREATION) {
 		/* Clear the remaining space, pinning depends on this */
 		memset (nursery_next, 0, nursery_frag_real_end - nursery_next);
+	}
 
 	min_prev = GINT_TO_POINTER (-1);
 	prev = NULL;
@@ -3156,13 +3560,14 @@ search_fragment_for_size_range (size_t desired_size, size_t minimum_size)
 static void*
 alloc_degraded (MonoVTable *vtable, size_t size)
 {
-	if (need_major_collection ()) {
-		stop_world ();
+	if (need_major_collection (0)) {
+		mono_profiler_gc_event (MONO_GC_EVENT_START, 1);
+		stop_world (1);
 		major_collection ("degraded overflow");
-		restart_world ();
+		restart_world (1);
+		mono_profiler_gc_event (MONO_GC_EVENT_END, 1);
 	}
 
-	degraded_mode += size;
 	return major_collector.alloc_degraded (vtable, size);
 }
 
@@ -3193,11 +3598,16 @@ mono_gc_alloc_obj_nolock (MonoVTable *vtable, size_t size)
 	g_assert (vtable->gc_descr);
 
 	if (G_UNLIKELY (collect_before_allocs)) {
-		if (nursery_section) {
-			stop_world ();
+		static int alloc_count;
+
+		InterlockedIncrement (&alloc_count);
+		if (((alloc_count % collect_before_allocs) == 0) && nursery_section) {
+			mono_profiler_gc_event (MONO_GC_EVENT_START, 0);
+			stop_world (0);
 			collect_nursery (0);
-			restart_world ();
-			if (!degraded_mode && !search_fragment_for_size (size)) {
+			restart_world (0);
+			mono_profiler_gc_event (MONO_GC_EVENT_END, 0);
+			if (!degraded_mode && !search_fragment_for_size (size) && size <= MAX_SMALL_OBJ_SIZE) {
 				// FIXME:
 				g_assert_not_reached ();
 			}
@@ -3216,7 +3626,7 @@ mono_gc_alloc_obj_nolock (MonoVTable *vtable, size_t size)
 	 */
 
 	if (size > MAX_SMALL_OBJ_SIZE) {
-		p = alloc_large_inner (vtable, size);
+		p = mono_sgen_los_alloc_large_inner (vtable, size);
 	} else {
 		/* tlab_next and tlab_temp_end are TLS vars so accessing them might be expensive */
 
@@ -3294,8 +3704,9 @@ mono_gc_alloc_obj_nolock (MonoVTable *vtable, size_t size)
 					g_assert (0);
 				}
 
-				if (nursery_clear_policy == CLEAR_AT_TLAB_CREATION)
+				if (nursery_clear_policy == CLEAR_AT_TLAB_CREATION) {
 					memset (p, 0, size);
+				}
 			} else {
 				int alloc_size = tlab_size;
 				int available_in_nursery = nursery_frag_real_end - nursery_next;
@@ -3326,8 +3737,9 @@ mono_gc_alloc_obj_nolock (MonoVTable *vtable, size_t size)
 				TLAB_REAL_END = TLAB_START + alloc_size;
 				TLAB_TEMP_END = TLAB_START + MIN (SCAN_START_SIZE, alloc_size);
 
-				if (nursery_clear_policy == CLEAR_AT_TLAB_CREATION)
+				if (nursery_clear_policy == CLEAR_AT_TLAB_CREATION) {
 					memset (TLAB_START, 0, alloc_size);
+				}
 
 				/* Allocate from the TLAB */
 				p = (void*)TLAB_NEXT;
@@ -3347,9 +3759,11 @@ mono_gc_alloc_obj_nolock (MonoVTable *vtable, size_t size)
 		}
 	}
 
-	DEBUG (6, fprintf (gc_debug_file, "Allocated object %p, vtable: %p (%s), size: %zd\n", p, vtable, vtable->klass->name, size));
-	binary_protocol_alloc (p, vtable, size);
-	*p = vtable;
+	if (G_LIKELY (p)) {
+		DEBUG (6, fprintf (gc_debug_file, "Allocated object %p, vtable: %p (%s), size: %zd\n", p, vtable, vtable->klass->name, size));
+		binary_protocol_alloc (p, vtable, size);
+		*p = vtable;
+	}
 
 	return p;
 }
@@ -3413,6 +3827,8 @@ mono_gc_alloc_obj (MonoVTable *vtable, size_t size)
 	LOCK_GC;
 	res = mono_gc_alloc_obj_nolock (vtable, size);
 	UNLOCK_GC;
+	if (G_UNLIKELY (!res))
+		return mono_gc_out_of_memory (size);
 	return res;
 }
 
@@ -3435,6 +3851,11 @@ mono_gc_alloc_vector (MonoVTable *vtable, size_t size, uintptr_t max_length)
 	LOCK_GC;
 
 	arr = mono_gc_alloc_obj_nolock (vtable, size);
+	if (G_UNLIKELY (!arr)) {
+		UNLOCK_GC;
+		return mono_gc_out_of_memory (size);
+	}
+
 	arr->max_length = max_length;
 
 	UNLOCK_GC;
@@ -3451,6 +3872,11 @@ mono_gc_alloc_array (MonoVTable *vtable, size_t size, uintptr_t max_length, uint
 	LOCK_GC;
 
 	arr = mono_gc_alloc_obj_nolock (vtable, size);
+	if (G_UNLIKELY (!arr)) {
+		UNLOCK_GC;
+		return mono_gc_out_of_memory (size);
+	}
+
 	arr->max_length = max_length;
 
 	bounds = (MonoArrayBounds*)((char*)arr + size - bounds_size);
@@ -3480,6 +3906,11 @@ mono_gc_alloc_string (MonoVTable *vtable, size_t size, gint32 len)
 	LOCK_GC;
 
 	str = mono_gc_alloc_obj_nolock (vtable, size);
+	if (G_UNLIKELY (!str)) {
+		UNLOCK_GC;
+		return mono_gc_out_of_memory (size);
+	}
+
 	str->length = len;
 
 	UNLOCK_GC;
@@ -3494,24 +3925,38 @@ mono_gc_alloc_string (MonoVTable *vtable, size_t size, gint32 len)
 void*
 mono_gc_alloc_pinned_obj (MonoVTable *vtable, size_t size)
 {
-	/* FIXME: handle OOM */
 	void **p;
 	size = ALIGN_UP (size);
 	LOCK_GC;
+
 	if (size > MAX_SMALL_OBJ_SIZE) {
 		/* large objects are always pinned anyway */
-		p = alloc_large_inner (vtable, size);
+		p = mono_sgen_los_alloc_large_inner (vtable, size);
 	} else {
 		DEBUG (9, g_assert (vtable->klass->inited));
-		p = major_collector.alloc_small_pinned_obj (size, vtable->klass->has_references);
+		p = major_collector.alloc_small_pinned_obj (size, SGEN_VTABLE_HAS_REFERENCES (vtable));
+	}
+	if (G_LIKELY (p)) {
+		DEBUG (6, fprintf (gc_debug_file, "Allocated pinned object %p, vtable: %p (%s), size: %zd\n", p, vtable, vtable->klass->name, size));
+		binary_protocol_alloc_pinned (p, vtable, size);
+		*p = vtable;
 	}
-	DEBUG (6, fprintf (gc_debug_file, "Allocated pinned object %p, vtable: %p (%s), size: %zd\n", p, vtable, vtable->klass->name, size));
-	binary_protocol_alloc_pinned (p, vtable, size);
-	*p = vtable;
 	UNLOCK_GC;
 	return p;
 }
 
+void*
+mono_gc_alloc_mature (MonoVTable *vtable)
+{
+	void **res;
+	size_t size = ALIGN_UP (vtable->klass->instance_size);
+	LOCK_GC;
+	res = alloc_degraded (vtable, size);
+	*res = vtable;
+	UNLOCK_GC;
+	return res;
+}
+
 /*
  * ######################################################################
  * ########  Finalization support
@@ -4656,10 +5101,11 @@ static unsigned long max_pause_usec = 0;
 
 /* LOCKING: assumes the GC lock is held */
 static int
-stop_world (void)
+stop_world (int generation)
 {
 	int count;
 
+	mono_profiler_gc_event (MONO_GC_EVENT_PRE_STOP_WORLD, generation);
 	acquire_gc_locks ();
 
 	update_current_thread_stack (&count);
@@ -4671,12 +5117,13 @@ stop_world (void)
 	count -= restart_threads_until_none_in_managed_allocator ();
 	g_assert (count >= 0);
 	DEBUG (3, fprintf (gc_debug_file, "world stopped %d thread(s)\n", count));
+	mono_profiler_gc_event (MONO_GC_EVENT_POST_STOP_WORLD, generation);
 	return count;
 }
 
 /* LOCKING: assumes the GC lock is held */
 static int
-restart_world (void)
+restart_world (int generation)
 {
 	int count, i;
 	SgenThreadInfo *info;
@@ -4690,6 +5137,7 @@ restart_world (void)
 			moved_objects_idx = 0;
 		}
 	}
+	mono_profiler_gc_event (MONO_GC_EVENT_PRE_START_WORLD, generation);
 	for (i = 0; i < THREAD_HASH_SIZE; ++i) {
 		for (info = thread_table [i]; info; info = info->next) {
 			info->stack_start = NULL;
@@ -4704,11 +5152,18 @@ restart_world (void)
 	usec = TV_ELAPSED (stop_world_time, end_sw);
 	max_pause_usec = MAX (usec, max_pause_usec);
 	DEBUG (2, fprintf (gc_debug_file, "restarted %d thread(s) (pause time: %d usec, max: %d)\n", count, (int)usec, (int)max_pause_usec));
+	mono_profiler_gc_event (MONO_GC_EVENT_POST_START_WORLD, generation);
 	return count;
 }
 
 #endif /* USE_SIGNAL_BASED_START_STOP_WORLD */
 
+int
+mono_sgen_get_current_collection_generation (void)
+{
+	return current_collection_generation;
+}
+
 void
 mono_gc_set_gc_callbacks (MonoGCCallbacks *callbacks)
 {
@@ -4733,7 +5188,6 @@ mono_gc_conservatively_scan_area (void *start, void *end)
 void*
 mono_gc_scan_object (void *obj)
 {
-	g_assert_not_reached ();
 	if (current_collection_generation == GENERATION_NURSERY)
 		major_collector.copy_object (&obj, &gray_queue);
 	else
@@ -4775,7 +5229,7 @@ scan_thread_data (void *start_nursery, void *end_nursery, gboolean precise)
 static void
 find_pinning_ref_from_thread (char *obj, size_t size)
 {
-	int i;
+	int i, j;
 	SgenThreadInfo *info;
 	char *endobj = obj + size;
 
@@ -4791,7 +5245,12 @@ find_pinning_ref_from_thread (char *obj, size_t size)
 				start++;
 			}
 
-			/* FIXME: check info->stopped_regs */
+			for (j = 0; j < ARCH_NUM_REGS; ++j) {
+				mword w = (mword)info->stopped_regs [j];
+
+				if (w >= (mword)obj && w < (mword)obj + size)
+					DEBUG (0, fprintf (gc_debug_file, "Object %p referenced in saved reg %d of thread %p (id %p)\n", obj, j, info, (gpointer)info->id));
+			}
 		}
 	}
 }
@@ -5284,6 +5743,12 @@ unregister_current_thread (void)
 	} else {
 		prev->next = p->next;
 	}
+
+	if (gc_callbacks.thread_detach_func) {
+		gc_callbacks.thread_detach_func (p->runtime_data);
+		p->runtime_data = NULL;
+	}
+
 	if (p->remset) {
 		if (freed_thread_remsets) {
 			for (rset = p->remset; rset->next; rset = rset->next)
@@ -5317,12 +5782,43 @@ mono_gc_register_thread (void *baseptr)
 	LOCK_GC;
 	init_stats ();
 	info = mono_sgen_thread_info_lookup (ARCH_GET_THREAD ());
-	if (info == NULL)
+	if (info == NULL) {
 		info = gc_register_current_thread (baseptr);
+	} else {
+		/* The main thread might get registered before callbacks are set */
+		if (gc_callbacks.thread_attach_func && !info->runtime_data)
+			info->runtime_data = gc_callbacks.thread_attach_func ();
+	}
 	UNLOCK_GC;
+
+	/* Need a better place to initialize this */
+	if (!array_fill_vtable && mono_get_root_domain ()) {
+		array_fill_vtable = mono_class_vtable (mono_get_root_domain (), mono_array_class_get (mono_defaults.byte_class, 1));
+	}
+
 	return info != NULL;
 }
 
+/*
+ * mono_gc_set_stack_end:
+ *
+ *   Set the end of the current threads stack to STACK_END. The stack space between 
+ * STACK_END and the real end of the threads stack will not be scanned during collections.
+ */
+void
+mono_gc_set_stack_end (void *stack_end)
+{
+	SgenThreadInfo *info;
+
+	LOCK_GC;
+	info = mono_sgen_thread_info_lookup (ARCH_GET_THREAD ());
+	if (info) {
+		g_assert (stack_end < info->stack_end);
+		info->stack_end = stack_end;
+	}
+	UNLOCK_GC;
+}
+
 #if USE_PTHREAD_INTERCEPT
 
 typedef struct {
@@ -5403,6 +5899,15 @@ mono_gc_pthread_detach (pthread_t thread)
  * ######################################################################
  */
 
+/*
+ * This causes the compile to extend the liveness of 'v' till the call to dummy_use
+ */
+static void
+dummy_use (gpointer v) {
+	__asm__ volatile ("" : "=r"(v) : "r"(v));
+}
+
+
 static RememberedSet*
 alloc_remset (int size, gpointer id) {
 	RememberedSet* res = mono_sgen_alloc_internal_dynamic (sizeof (RememberedSet) + (size * sizeof (gpointer)), INTERNAL_MEM_REMSET);
@@ -5422,18 +5927,22 @@ alloc_remset (int size, gpointer id) {
 void
 mono_gc_wbarrier_set_field (MonoObject *obj, gpointer field_ptr, MonoObject* value)
 {
-	RememberedSet *rs;
-	TLAB_ACCESS_INIT;
 	HEAVY_STAT (++stat_wbarrier_set_field);
 	if (ptr_in_nursery (field_ptr)) {
 		*(void**)field_ptr = value;
 		return;
 	}
 	DEBUG (8, fprintf (gc_debug_file, "Adding remset at %p\n", field_ptr));
-	LOCK_GC;
 	if (use_cardtable) {
-		sgen_card_table_mark_address ((mword)field_ptr);
+		*(void**)field_ptr = value;
+		if (ptr_in_nursery (value))
+			sgen_card_table_mark_address ((mword)field_ptr);
+		dummy_use (value);
 	} else {
+		RememberedSet *rs;
+		TLAB_ACCESS_INIT;
+
+		LOCK_GC;
 		rs = REMEMBERED_SET;
 		if (rs->store_next < rs->end_set) {
 			*(rs->store_next++) = (mword)field_ptr;
@@ -5448,26 +5957,30 @@ mono_gc_wbarrier_set_field (MonoObject *obj, gpointer field_ptr, MonoObject* val
 		mono_sgen_thread_info_lookup (ARCH_GET_THREAD ())->remset = rs;
 #endif
 		*(rs->store_next++) = (mword)field_ptr;
+		*(void**)field_ptr = value;
+		UNLOCK_GC;
 	}
-	*(void**)field_ptr = value;
-	UNLOCK_GC;
 }
 
 void
 mono_gc_wbarrier_set_arrayref (MonoArray *arr, gpointer slot_ptr, MonoObject* value)
 {
-	RememberedSet *rs;
-	TLAB_ACCESS_INIT;
 	HEAVY_STAT (++stat_wbarrier_set_arrayref);
 	if (ptr_in_nursery (slot_ptr)) {
 		*(void**)slot_ptr = value;
 		return;
 	}
 	DEBUG (8, fprintf (gc_debug_file, "Adding remset at %p\n", slot_ptr));
-	LOCK_GC;
 	if (use_cardtable) {
-		sgen_card_table_mark_address ((mword)slot_ptr);
+		*(void**)slot_ptr = value;
+		if (ptr_in_nursery (value))
+			sgen_card_table_mark_address ((mword)slot_ptr);
+		dummy_use (value);
 	} else {
+		RememberedSet *rs;
+		TLAB_ACCESS_INIT;
+
+		LOCK_GC;
 		rs = REMEMBERED_SET;
 		if (rs->store_next < rs->end_set) {
 			*(rs->store_next++) = (mword)slot_ptr;
@@ -5482,26 +5995,54 @@ mono_gc_wbarrier_set_arrayref (MonoArray *arr, gpointer slot_ptr, MonoObject* va
 		mono_sgen_thread_info_lookup (ARCH_GET_THREAD ())->remset = rs;
 #endif
 		*(rs->store_next++) = (mword)slot_ptr;
+		*(void**)slot_ptr = value;
+		UNLOCK_GC;
 	}
-	*(void**)slot_ptr = value;
-	UNLOCK_GC;
 }
 
 void
 mono_gc_wbarrier_arrayref_copy (gpointer dest_ptr, gpointer src_ptr, int count)
 {
-	RememberedSet *rs;
-	TLAB_ACCESS_INIT;
 	HEAVY_STAT (++stat_wbarrier_arrayref_copy);
-	LOCK_GC;
-	memmove (dest_ptr, src_ptr, count * sizeof (gpointer));
-	if (ptr_in_nursery (dest_ptr)) {
-		UNLOCK_GC;
+	/*This check can be done without taking a lock since dest_ptr array is pinned*/
+	if (ptr_in_nursery (dest_ptr) || count <= 0) {
+		memmove (dest_ptr, src_ptr, count * sizeof (gpointer));
 		return;
 	}
+
 	if (use_cardtable) {
-		sgen_card_table_mark_range ((mword)dest_ptr, count * sizeof (gpointer));
+		gpointer *dest = dest_ptr;
+		gpointer *src = src_ptr;
+
+		/*overlapping that required backward copying*/
+		if (src < dest && (src + count) > dest) {
+			gpointer *start = dest;
+			dest += count - 1;
+			src += count - 1;
+
+			for (; dest >= start; --src, --dest) {
+				gpointer value = *src;
+				*dest = value;
+				if (ptr_in_nursery (value))
+					sgen_card_table_mark_address ((mword)dest);
+				dummy_use (value);
+			}
+		} else {
+			gpointer *end = dest + count;
+			for (; dest < end; ++src, ++dest) {
+				gpointer value = *src;
+				*dest = value;
+				if (ptr_in_nursery (value))
+					sgen_card_table_mark_address ((mword)dest);
+				dummy_use (value);
+			}
+		}
 	} else {
+		RememberedSet *rs;
+		TLAB_ACCESS_INIT;
+		LOCK_GC;
+		memmove (dest_ptr, src_ptr, count * sizeof (gpointer));
+
 		rs = REMEMBERED_SET;
 		DEBUG (8, fprintf (gc_debug_file, "Adding remset at %p, %d\n", dest_ptr, count));
 		if (rs->store_next + 1 < rs->end_set) {
@@ -5518,15 +6059,18 @@ mono_gc_wbarrier_arrayref_copy (gpointer dest_ptr, gpointer src_ptr, int count)
 #endif
 		*(rs->store_next++) = (mword)dest_ptr | REMSET_RANGE;
 		*(rs->store_next++) = count;
+
+		UNLOCK_GC;
 	}
-	UNLOCK_GC;
 }
 
 static char *found_obj;
 
 static void
-find_object_for_ptr_callback (char *obj, size_t size, char *ptr)
+find_object_for_ptr_callback (char *obj, size_t size, void *user_data)
 {
+	char *ptr = user_data;
+
 	if (ptr >= obj && ptr < obj + size) {
 		g_assert (!found_obj);
 		found_obj = obj;
@@ -5538,27 +6082,25 @@ char* find_object_for_ptr (char *ptr);
 char*
 find_object_for_ptr (char *ptr)
 {
-	LOSObject *bigobj;
-
 	if (ptr >= nursery_section->data && ptr < nursery_section->end_data) {
 		found_obj = NULL;
 		mono_sgen_scan_area_with_callback (nursery_section->data, nursery_section->end_data,
-				(IterateObjectCallbackFunc)find_object_for_ptr_callback, ptr);
+				find_object_for_ptr_callback, ptr, TRUE);
 		if (found_obj)
 			return found_obj;
 	}
 
-	for (bigobj = los_object_list; bigobj; bigobj = bigobj->next) {
-		if (ptr >= bigobj->data && ptr < bigobj->data + bigobj->size)
-			return bigobj->data;
-	}
+	found_obj = NULL;
+	mono_sgen_los_iterate_objects (find_object_for_ptr_callback, ptr);
+	if (found_obj)
+		return found_obj;
 
 	/*
 	 * Very inefficient, but this is debugging code, supposed to
 	 * be called from gdb, so we don't care.
 	 */
 	found_obj = NULL;
-	major_collector.iterate_objects (TRUE, TRUE, (IterateObjectCallbackFunc)find_object_for_ptr_callback, ptr);
+	major_collector.iterate_objects (TRUE, TRUE, find_object_for_ptr_callback, ptr);
 	return found_obj;
 }
 
@@ -5650,6 +6192,7 @@ mono_gc_wbarrier_generic_store (gpointer ptr, MonoObject* value)
 	*(void**)ptr = value;
 	if (ptr_in_nursery (value))
 		mono_gc_wbarrier_generic_nostore (ptr);
+	dummy_use (value);
 }
 
 void mono_gc_wbarrier_value_copy_bitmap (gpointer _dest, gpointer _src, int size, unsigned bitmap)
@@ -5684,7 +6227,7 @@ mono_gc_wbarrier_value_copy (gpointer dest, gpointer src, int count, MonoClass *
 		sgen_card_table_mark_range ((mword)dest, size);
 	} else {
 		rs = REMEMBERED_SET;
-		if (ptr_in_nursery (dest) || ptr_on_stack (dest) || !klass->has_references) {
+		if (ptr_in_nursery (dest) || ptr_on_stack (dest) || !SGEN_CLASS_HAS_REFERENCES (klass)) {
 			UNLOCK_GC;
 			return;
 		}
@@ -5773,11 +6316,18 @@ describe_ptr (char *ptr)
 	MonoVTable *vtable;
 	mword desc;
 	int type;
+	char *start;
 
 	if (ptr_in_nursery (ptr)) {
 		printf ("Pointer inside nursery.\n");
 	} else {
-		if (major_collector.ptr_is_in_non_pinned_space (ptr)) {
+		if (mono_sgen_ptr_is_in_los (ptr, &start)) {
+			if (ptr == start)
+				printf ("Pointer is the start of object %p in LOS space.\n", start);
+			else
+				printf ("Pointer is at offset 0x%x of object %p in LOS space.\n", (int)(ptr - start), start);
+			ptr = start;
+		} else if (major_collector.ptr_is_in_non_pinned_space (ptr)) {
 			printf ("Pointer inside oldspace.\n");
 		} else if (major_collector.obj_is_from_pinned_alloc (ptr)) {
 			printf ("Pointer is inside a pinned chunk.\n");
@@ -5975,8 +6525,6 @@ check_consistency_callback (char *start, size_t size, void *dummy)
 static void
 check_consistency (void)
 {
-	LOSObject *bigobj;
-
 	// Need to add more checks
 
 	missing_remsets = FALSE;
@@ -5986,8 +6534,7 @@ check_consistency (void)
 	// Check that oldspace->newspace pointers are registered with the collector
 	major_collector.iterate_objects (TRUE, TRUE, (IterateObjectCallbackFunc)check_consistency_callback, NULL);
 
-	for (bigobj = los_object_list; bigobj; bigobj = bigobj->next)
-		check_consistency_callback (bigobj->data, bigobj->size, NULL);
+	mono_sgen_los_iterate_objects ((IterateObjectCallbackFunc)check_consistency_callback, NULL);
 
 	DEBUG (1, fprintf (gc_debug_file, "Heap consistency check done.\n"));
 
@@ -6014,12 +6561,8 @@ check_major_refs_callback (char *start, size_t size, void *dummy)
 static void
 check_major_refs (void)
 {
-	LOSObject *bigobj;
-
 	major_collector.iterate_objects (TRUE, TRUE, (IterateObjectCallbackFunc)check_major_refs_callback, NULL);
-
-	for (bigobj = los_object_list; bigobj; bigobj = bigobj->next)
-		check_major_refs_callback (bigobj->data, bigobj->size, NULL);
+	mono_sgen_los_iterate_objects ((IterateObjectCallbackFunc)check_major_refs_callback, NULL);
 }
 
 /* Check that the reference is valid */
@@ -6051,17 +6594,99 @@ check_object (char *start)
  * ######################################################################
  */
 
+#define REFS_SIZE 128
+typedef struct {
+	void *data;
+	MonoGCReferences callback;
+	int flags;
+	int count;
+	int called;
+	MonoObject *refs [REFS_SIZE];
+	uintptr_t offsets [REFS_SIZE];
+} HeapWalkInfo;
+
+#undef HANDLE_PTR
+#define HANDLE_PTR(ptr,obj)	do {	\
+		if (*(ptr)) {	\
+			if (hwi->count == REFS_SIZE) {	\
+				hwi->callback ((MonoObject*)start, mono_object_class (start), hwi->called? 0: size, hwi->count, hwi->refs, hwi->offsets, hwi->data);	\
+				hwi->count = 0;	\
+				hwi->called = 1;	\
+			}	\
+			hwi->offsets [hwi->count] = (char*)(ptr)-(char*)start;	\
+			hwi->refs [hwi->count++] = *(ptr);	\
+		}	\
+	} while (0)
+
+static void
+collect_references (HeapWalkInfo *hwi, char *start, size_t size)
+{
+#include "sgen-scan-object.h"
+}
+
+static void
+walk_references (char *start, size_t size, void *data)
+{
+	HeapWalkInfo *hwi = data;
+	hwi->called = 0;
+	hwi->count = 0;
+	collect_references (hwi, start, size);
+	if (hwi->count || !hwi->called)
+		hwi->callback ((MonoObject*)start, mono_object_class (start), hwi->called? 0: size, hwi->count, hwi->refs, hwi->offsets, hwi->data);
+}
+
+/**
+ * mono_gc_walk_heap:
+ * @flags: flags for future use
+ * @callback: a function pointer called for each object in the heap
+ * @data: a user data pointer that is passed to callback
+ *
+ * This function can be used to iterate over all the live objects in the heap:
+ * for each object, @callback is invoked, providing info about the object's
+ * location in memory, its class, its size and the objects it references.
+ * For each referenced object it's offset from the object address is
+ * reported in the offsets array.
+ * The object references may be buffered, so the callback may be invoked
+ * multiple times for the same object: in all but the first call, the size
+ * argument will be zero.
+ * Note that this function can be only called in the #MONO_GC_EVENT_PRE_START_WORLD
+ * profiler event handler.
+ *
+ * Returns: a non-zero value if the GC doesn't support heap walking
+ */
+int
+mono_gc_walk_heap (int flags, MonoGCReferences callback, void *data)
+{
+	HeapWalkInfo hwi;
+
+	hwi.flags = flags;
+	hwi.callback = callback;
+	hwi.data = data;
+
+	clear_nursery_fragments (nursery_next);
+	mono_sgen_scan_area_with_callback (nursery_section->data, nursery_section->end_data, walk_references, &hwi, FALSE);
+
+	major_collector.iterate_objects (TRUE, TRUE, walk_references, &hwi);
+	mono_sgen_los_iterate_objects (walk_references, &hwi);
+
+	return 0;
+}
+
 void
 mono_gc_collect (int generation)
 {
 	LOCK_GC;
-	stop_world ();
+	if (generation > 1)
+		generation = 1;
+	mono_profiler_gc_event (MONO_GC_EVENT_START, generation);
+	stop_world (generation);
 	if (generation == 0) {
 		collect_nursery (0);
 	} else {
 		major_collection ("user request");
 	}
-	restart_world ();
+	restart_world (generation);
+	mono_profiler_gc_event (MONO_GC_EVENT_END, generation);
 	UNLOCK_GC;
 }
 
@@ -6188,7 +6813,9 @@ mono_gc_ephemeron_array_add (MonoObject *obj)
 void*
 mono_gc_make_descr_from_bitmap (gsize *bitmap, int numbits)
 {
-	if (numbits < ((sizeof (*bitmap) * 8) - ROOT_DESC_TYPE_SHIFT)) {
+	if (numbits == 0) {
+		return (void*)MAKE_ROOT_DESC (ROOT_DESC_BITMAP, 0);
+	} else if (numbits < ((sizeof (*bitmap) * 8) - ROOT_DESC_TYPE_SHIFT)) {
 		return (void*)MAKE_ROOT_DESC (ROOT_DESC_BITMAP, bitmap [0]);
 	} else {
 		mword complex = alloc_complex_descriptor (bitmap, numbits);
@@ -6196,6 +6823,30 @@ mono_gc_make_descr_from_bitmap (gsize *bitmap, int numbits)
 	}
 }
 
+ static void *all_ref_root_descrs [32];
+
+void*
+mono_gc_make_root_descr_all_refs (int numbits)
+{
+	gsize *gc_bitmap;
+	void *descr;
+
+	if (numbits < 32 && all_ref_root_descrs [numbits])
+		return all_ref_root_descrs [numbits];
+
+	gc_bitmap = g_malloc0 (ALIGN_TO (numbits, 8) + 1);
+	memset (gc_bitmap, 0xff, numbits / 8);
+	if (numbits % 8)
+		gc_bitmap [numbits / 8] = (1 << (numbits % 8)) - 1;
+	descr = mono_gc_make_descr_from_bitmap (gc_bitmap, numbits);
+	g_free (gc_bitmap);
+
+	if (numbits < 32)
+		all_ref_root_descrs [numbits] = descr;
+
+	return descr;
+}
+
 void*
 mono_gc_make_root_descr_user (MonoGCRootMarkFunc marker)
 {
@@ -6249,49 +6900,6 @@ mono_gc_is_gc_thread (void)
 	return result;
 }
 
-/* Tries to extract a number from the passed string, taking in to account m, k
- * and g suffixes */
-gboolean
-mono_sgen_parse_environment_string_extract_number (const char *str, glong *out)
-{
-	char *endptr;
-	int len = strlen (str), shift = 0;
-	glong val;
-	gboolean is_suffix = FALSE;
-	char suffix;
-
-	switch (str [len - 1]) {
-		case 'g':
-		case 'G':
-			shift += 10;
-		case 'm':
-		case 'M':
-			shift += 10;
-		case 'k':
-		case 'K':
-			shift += 10;
-			is_suffix = TRUE;
-			suffix = str [len - 1];
-			break;
-	}
-
-	errno = 0;
-	val = strtol (str, &endptr, 10);
-
-	if ((errno == ERANGE && (val == LONG_MAX || val == LONG_MIN))
-			|| (errno != 0 && val == 0) || (endptr == str))
-		return FALSE;
-
-	if (is_suffix) {
-		if (*(endptr + 1)) /* Invalid string. */
-			return FALSE;
-		val <<= shift;
-	}
-
-	*out = val;
-	return TRUE;
-}
-
 void
 mono_gc_base_init (void)
 {
@@ -6299,7 +6907,16 @@ mono_gc_base_init (void)
 	char **opts, **ptr;
 	char *major_collector_opt = NULL;
 	struct sigaction sinfo;
+	glong max_heap = 0;
+
+#ifdef PLATFORM_ANDROID
+	g_assert_not_reached ();
+#endif
 
+	/* the gc_initialized guard seems to imply this method is
+	   idempotent, but LOCK_INIT(gc_mutex) might not be.  It's
+	   defined in sgen-gc.h as nothing, so there's no danger at
+	   present. */
 	LOCK_INIT (gc_mutex);
 	LOCK_GC;
 	if (gc_initialized) {
@@ -6307,10 +6924,11 @@ mono_gc_base_init (void)
 		return;
 	}
 	pagesize = mono_pagesize ();
-	gc_debug_file = stderr;
+	gc_debug_file = stdout;
 
 	LOCK_INIT (interruption_mutex);
 	LOCK_INIT (global_remset_mutex);
+	LOCK_INIT (pin_queue_mutex);
 
 	if ((env = getenv ("MONO_GC_PARAMS"))) {
 		opts = g_strsplit (env, ",", -1);
@@ -6361,6 +6979,9 @@ mono_gc_base_init (void)
 	use_cardtable = FALSE;
 #endif
 
+	/* Keep this the default for now */
+	conservative_stack_mark = TRUE;
+
 	if (opts) {
 		for (ptr = opts; *ptr; ++ptr) {
 			char *opt = *ptr;
@@ -6381,11 +7002,36 @@ mono_gc_base_init (void)
 				}
 				continue;
 			}
+			if (g_str_has_prefix (opt, "max-heap-size=")) {
+				opt = strchr (opt, '=') + 1;
+				if (*opt && mono_gc_parse_environment_string_extract_number (opt, &max_heap)) {
+					if ((max_heap & (mono_pagesize () - 1))) {
+						fprintf (stderr, "max-heap-size size must be a multiple of %d.\n", mono_pagesize ());
+						exit (1);
+					}
+				} else {
+					fprintf (stderr, "max-heap-size must be an integer.\n");
+					exit (1);
+				}
+				continue;
+			}
+			if (g_str_has_prefix (opt, "stack-mark=")) {
+				opt = strchr (opt, '=') + 1;
+				if (!strcmp (opt, "precise")) {
+					conservative_stack_mark = FALSE;
+				} else if (!strcmp (opt, "conservative")) {
+					conservative_stack_mark = TRUE;
+				} else {
+					fprintf (stderr, "Invalid value '%s' for stack-mark= option, possible values are: 'precise', 'conservative'.\n", opt);
+					exit (1);
+				}
+				continue;
+			}
 #ifdef USER_CONFIG
 			if (g_str_has_prefix (opt, "nursery-size=")) {
 				long val;
 				opt = strchr (opt, '=') + 1;
-				if (*opt && mono_sgen_parse_environment_string_extract_number (opt, &val)) {
+				if (*opt && mono_gc_parse_environment_string_extract_number (opt, &val)) {
 					default_nursery_size = val;
 #ifdef SGEN_ALIGN_NURSERY
 					if ((val & (val - 1))) {
@@ -6406,9 +7052,11 @@ mono_gc_base_init (void)
 #endif
 			if (!(major_collector.handle_gc_param && major_collector.handle_gc_param (opt))) {
 				fprintf (stderr, "MONO_GC_PARAMS must be a comma-delimited list of one or more of the following:\n");
+				fprintf (stderr, "  max-heap-size=N (where N is an integer, possibly with a k, m or a g suffix)\n");
 				fprintf (stderr, "  nursery-size=N (where N is an integer, possibly with a k, m or a g suffix)\n");
 				fprintf (stderr, "  major=COLLECTOR (where COLLECTOR is `marksweep', `marksweep-par' or `copying')\n");
 				fprintf (stderr, "  wbarrier=WBARRIER (where WBARRIER is `remset' or `cardtable')\n");
+				fprintf (stderr, "  stack-mark=MARK-METHOD (where MARK-METHOD is 'precise' or 'conservative')\n");
 				if (major_collector.print_gc_param_usage)
 					major_collector.print_gc_param_usage ();
 				exit (1);
@@ -6422,6 +7070,7 @@ mono_gc_base_init (void)
 
 	nursery_size = DEFAULT_NURSERY_SIZE;
 	minor_collection_allowance = MIN_MINOR_COLLECTION_ALLOWANCE;
+	init_heap_size_limits (max_heap);
 
 	alloc_nursery ();
 
@@ -6442,7 +7091,10 @@ mono_gc_base_init (void)
 					g_free (rf);
 				}
 			} else if (!strcmp (opt, "collect-before-allocs")) {
-				collect_before_allocs = TRUE;
+				collect_before_allocs = 1;
+			} else if (g_str_has_prefix (opt, "collect-before-allocs=")) {
+				char *arg = strchr (opt, '=') + 1;
+				collect_before_allocs = atoi (arg);
 			} else if (!strcmp (opt, "check-at-minor-collections")) {
 				consistency_check_at_minor_collection = TRUE;
 				nursery_clear_policy = CLEAR_AT_GC;
@@ -6450,8 +7102,8 @@ mono_gc_base_init (void)
 				xdomain_checks = TRUE;
 			} else if (!strcmp (opt, "clear-at-gc")) {
 				nursery_clear_policy = CLEAR_AT_GC;
-			} else if (!strcmp (opt, "conservative-stack-mark")) {
-				conservative_stack_mark = TRUE;
+			} else if (!strcmp (opt, "clear-nursery-at-gc")) {
+				nursery_clear_policy = CLEAR_AT_GC;
 			} else if (!strcmp (opt, "check-scan-starts")) {
 				do_scan_starts_check = TRUE;
 			} else if (g_str_has_prefix (opt, "heap-dump=")) {
@@ -6468,7 +7120,7 @@ mono_gc_base_init (void)
 			} else {
 				fprintf (stderr, "Invalid format for the MONO_GC_DEBUG env variable: '%s'\n", env);
 				fprintf (stderr, "The format is: MONO_GC_DEBUG=[l[:filename]|<option>]+ where l is a debug level 0-9.\n");
-				fprintf (stderr, "Valid options are: collect-before-allocs, check-at-minor-collections, xdomain-checks, clear-at-gc.\n");
+				fprintf (stderr, "Valid options are: collect-before-allocs[=<n>], check-at-minor-collections, xdomain-checks, clear-at-gc.\n");
 				exit (1);
 			}
 		}
@@ -6793,6 +7445,10 @@ is_ip_in_managed_allocator (MonoDomain *domain, gpointer ip)
 	MonoMethod *method;
 	int i;
 
+	if (!mono_thread_internal_current ())
+		/* Happens during thread attach */
+		return FALSE;
+
 	if (!ip || !domain)
 		return FALSE;
 	ji = mono_jit_info_table_find (domain, ip);
@@ -7143,4 +7799,10 @@ mono_sgen_debug_printf (int level, const char *format, ...)
 	va_end (ap);
 }
 
+FILE*
+mono_sgen_get_logfile (void)
+{
+	return gc_debug_file;
+}
+
 #endif /* HAVE_SGEN_GC */
diff --git a/mono/metadata/sgen-gc.h b/mono/metadata/sgen-gc.h
index 4b45267..af37843 100644
--- a/mono/metadata/sgen-gc.h
+++ b/mono/metadata/sgen-gc.h
@@ -26,6 +26,9 @@
 
 /* pthread impl */
 #include "config.h"
+
+#ifdef HAVE_SGEN_GC
+
 #include <glib.h>
 #include <pthread.h>
 #include <signal.h>
@@ -49,14 +52,6 @@
 
 //#define SGEN_BINARY_PROTOCOL
 
-#if SIZEOF_VOID_P == 4
-#define SGEN_HAVE_CARDTABLE	1
-#endif
-
-#if SIZEOF_VOID_P == 8
-#define SGEN_HAVE_OVERLAPPING_CARDS	1
-#endif
-
 #define SGEN_MAX_DEBUG_LEVEL 2
 
 #define THREAD_HASH_SIZE 11
@@ -73,6 +68,11 @@ typedef guint32 mword;
 typedef guint64 mword;
 #endif
 
+#define SGEN_TV_DECLARE(name) gint64 name
+#define SGEN_TV_GETTIME(tv) tv = mono_100ns_ticks ()
+#define SGEN_TV_ELAPSED(start,end) (int)((end-start) / 10)
+#define SGEN_TV_ELAPSED_MS(start,end) ((SGEN_TV_ELAPSED((start),(end)) + 500) / 1000)
+
 /* for use with write barriers */
 typedef struct _RememberedSet RememberedSet;
 struct _RememberedSet {
@@ -182,7 +182,7 @@ struct _GCMemSection {
 
 typedef struct _SgenPinnedChunk SgenPinnedChunk;
 
-#if defined(__APPLE__) || defined(__OpenBSD__)
+#if defined(__APPLE__) || defined(__OpenBSD__) || defined(__FreeBSD__)
 const static int suspend_signal_num = SIGXFSZ;
 #else
 const static int suspend_signal_num = SIGPWR;
@@ -193,6 +193,8 @@ const static int restart_signal_num = SIGXCPU;
  * Recursion is not allowed for the thread lock.
  */
 #define LOCK_DECLARE(name) pthread_mutex_t name = PTHREAD_MUTEX_INITIALIZER
+/* if changing LOCK_INIT to something that isn't idempotent, look at
+   its use in mono_gc_base_init in sgen-gc.c */
 #define LOCK_INIT(name)
 #define LOCK_GC pthread_mutex_lock (&gc_mutex)
 #define UNLOCK_GC pthread_mutex_unlock (&gc_mutex)
@@ -223,6 +225,15 @@ extern long long stat_objects_copied_major;
 #define HEAVY_STAT(x)
 #endif
 
+#define DEBUG(level,a) do {if (G_UNLIKELY ((level) <= SGEN_MAX_DEBUG_LEVEL && (level) <= gc_debug_level)) a;} while (0)
+
+extern int gc_debug_level;
+extern FILE* gc_debug_file;
+
+extern int current_collection_generation;
+
+extern gboolean conservative_stack_mark;
+
 #define SGEN_ALLOC_ALIGN		8
 #define SGEN_ALLOC_ALIGN_BITS	3
 
@@ -341,6 +352,7 @@ enum {
 };
 
 #define SGEN_VTABLE_HAS_REFERENCES(vt)	(((MonoVTable*)(vt))->gc_descr != (void*)DESC_TYPE_RUN_LENGTH)
+#define SGEN_CLASS_HAS_REFERENCES(c)	((c)->gc_descr != (void*)DESC_TYPE_RUN_LENGTH)
 
 /* helper macros to scan and traverse objects, macros because we resue them in many functions */
 #define OBJ_RUN_LEN_SIZE(size,desc,obj) do { \
@@ -576,7 +588,7 @@ void mono_sgen_update_heap_boundaries (mword low, mword high) MONO_INTERNAL;
 void mono_sgen_register_major_sections_alloced (int num_sections) MONO_INTERNAL;
 mword mono_sgen_get_minor_collection_allowance (void) MONO_INTERNAL;
 
-void mono_sgen_scan_area_with_callback (char *start, char *end, IterateObjectCallbackFunc callback, void *data) MONO_INTERNAL;
+void mono_sgen_scan_area_with_callback (char *start, char *end, IterateObjectCallbackFunc callback, void *data, gboolean allow_flags) MONO_INTERNAL;
 void mono_sgen_check_section_scan_starts (GCMemSection *section) MONO_INTERNAL;
 
 /* Keep in sync with mono_sgen_dump_internal_mem_usage() in dump_heap()! */
@@ -612,6 +624,12 @@ struct _SgenInternalAllocator {
 	long small_internal_mem_bytes [INTERNAL_MEM_MAX];
 };
 
+enum {
+	GENERATION_NURSERY,
+	GENERATION_OLD,
+	GENERATION_MAX
+};
+
 void mono_sgen_init_internal_allocator (void) MONO_INTERNAL;
 
 SgenInternalAllocator* mono_sgen_get_unmanaged_allocator (void) MONO_INTERNAL;
@@ -648,6 +666,8 @@ gboolean mono_sgen_parse_environment_string_extract_number (const char *str, glo
 void mono_sgen_internal_scan_objects (SgenInternalAllocator *alc, IterateObjectCallbackFunc callback, void *callback_data) MONO_INTERNAL;
 void mono_sgen_internal_scan_pinned_objects (SgenInternalAllocator *alc, IterateObjectCallbackFunc callback, void *callback_data) MONO_INTERNAL;
 
+void mono_sgen_internal_update_heap_boundaries (SgenInternalAllocator *alc) MONO_INTERNAL;
+
 void** mono_sgen_find_optimized_pin_queue_area (void *start, void *end, int *num) MONO_INTERNAL;
 void mono_sgen_find_section_pin_queue_start_end (GCMemSection *section) MONO_INTERNAL;
 void mono_sgen_pin_objects_in_section (GCMemSection *section, SgenGrayQueue *queue) MONO_INTERNAL;
@@ -656,20 +676,9 @@ void mono_sgen_pin_stats_register_object (char *obj, size_t size);
 
 void mono_sgen_add_to_global_remset (gpointer ptr) MONO_INTERNAL;
 
-#ifdef SGEN_HAVE_CARDTABLE
-void sgen_card_table_reset_region (mword start, mword end) MONO_INTERNAL;
-guint8* sgen_card_table_get_card_address (mword address) MONO_INTERNAL;
-void* sgen_card_table_align_pointer (void *ptr) MONO_INTERNAL;
-void sgen_card_table_mark_address (mword address) MONO_INTERNAL;
-void sgen_card_table_mark_range (mword address, mword size) MONO_INTERNAL;
-gboolean sgen_card_table_card_begin_scanning (mword address) MONO_INTERNAL;
-gboolean sgen_card_table_region_begin_scanning (mword start, mword size) MONO_INTERNAL;
-typedef void (*sgen_cardtable_block_callback) (mword start, mword size);
-
-#define CARD_BITS 9
-#define CARD_SIZE_IN_BYTES (1 << CARD_BITS)
-#endif
+int mono_sgen_get_current_collection_generation (void) MONO_INTERNAL;
 
+typedef void (*sgen_cardtable_block_callback) (mword start, mword size);
 
 typedef struct _SgenMajorCollector SgenMajorCollector;
 struct _SgenMajorCollector {
@@ -677,6 +686,12 @@ struct _SgenMajorCollector {
 	gboolean is_parallel;
 	gboolean supports_cardtable;
 
+	/*
+	 * This is set to TRUE if the sweep for the last major
+	 * collection has been completed.
+	 */
+	gboolean *have_swept;
+
 	void* (*alloc_heap) (mword nursery_size, mword nursery_align, int nursery_bits);
 	gboolean (*is_object_live) (char *obj);
 	void* (*alloc_small_pinned_obj) (size_t size, gboolean has_references);
@@ -693,7 +708,7 @@ struct _SgenMajorCollector {
 	void (*find_pin_queue_start_ends) (SgenGrayQueue *queue);
 	void (*pin_objects) (SgenGrayQueue *queue);
 	void (*scan_card_table) (SgenGrayQueue *queue);
-	void (*iterate_live_block_ranges) (sgen_cardtable_block_callback);
+	void (*iterate_live_block_ranges) (sgen_cardtable_block_callback callback);
 	void (*init_to_space) (void);
 	void (*sweep) (void);
 	void (*check_scan_starts) (void);
@@ -701,13 +716,16 @@ struct _SgenMajorCollector {
 	gint64 (*get_used_size) (void);
 	void (*start_nursery_collection) (void);
 	void (*finish_nursery_collection) (void);
+	void (*start_major_collection) (void);
 	void (*finish_major_collection) (void);
+	void (*have_computed_minor_collection_allowance) (void);
 	gboolean (*ptr_is_in_non_pinned_space) (char *ptr);
 	gboolean (*obj_is_from_pinned_alloc) (char *obj);
 	void (*report_pinned_memory_usage) (void);
 	int (*get_num_major_sections) (void);
 	gboolean (*handle_gc_param) (const char *opt);
 	void (*print_gc_param_usage) (void);
+	gboolean (*is_worker_thread) (pthread_t thread);
 };
 
 void mono_sgen_marksweep_init (SgenMajorCollector *collector) MONO_INTERNAL;
@@ -748,4 +766,45 @@ mono_sgen_par_object_get_size (MonoVTable *vtable, MonoObject* o)
 
 #define mono_sgen_safe_object_get_size(o)		mono_sgen_par_object_get_size ((MonoVTable*)SGEN_LOAD_VTABLE ((o)), (o))
 
+const char* mono_sgen_safe_name (void* obj) MONO_INTERNAL;
+
+enum {
+	SPACE_MAJOR,
+	SPACE_LOS
+};
+
+gboolean mono_sgen_try_alloc_space (mword size, int space) MONO_INTERNAL;
+void mono_sgen_release_space (mword size, int space) MONO_INTERNAL;
+void mono_sgen_pin_object (void *object, SgenGrayQueue *queue) MONO_INTERNAL;
+void sgen_collect_major_no_lock (const char *reason) MONO_INTERNAL;
+gboolean mono_sgen_need_major_collection (mword space_needed) MONO_INTERNAL;
+
+/* LOS */
+
+typedef struct _LOSObject LOSObject;
+struct _LOSObject {
+	LOSObject *next;
+	mword size; /* this is the object size */
+	guint16 huge_object;
+	int dummy; /* to have a sizeof (LOSObject) a multiple of ALLOC_ALIGN  and data starting at same alignment */
+	char data [MONO_ZERO_LEN_ARRAY];
+};
+
+#define ARRAY_OBJ_INDEX(ptr,array,elem_size) (((char*)(ptr) - ((char*)(array) + G_STRUCT_OFFSET (MonoArray, vector))) / (elem_size))
+
+extern LOSObject *los_object_list;
+extern mword los_memory_usage;
+extern mword last_los_memory_usage;
+
+void mono_sgen_los_free_object (LOSObject *obj) MONO_INTERNAL;
+void* mono_sgen_los_alloc_large_inner (MonoVTable *vtable, size_t size) MONO_INTERNAL;
+void mono_sgen_los_sweep (void) MONO_INTERNAL;
+gboolean mono_sgen_ptr_is_in_los (char *ptr, char **start) MONO_INTERNAL;
+void mono_sgen_los_iterate_objects (IterateObjectCallbackFunc cb, void *user_data) MONO_INTERNAL;
+void mono_sgen_los_iterate_live_block_ranges (sgen_cardtable_block_callback callback) MONO_INTERNAL;
+void mono_sgen_los_scan_card_table (SgenGrayQueue *queue) MONO_INTERNAL;
+FILE *mono_sgen_get_logfile (void) MONO_INTERNAL;
+
+#endif /* HAVE_SGEN_GC */
+
 #endif /* __MONO_SGENGC_H__ */
diff --git a/mono/metadata/sgen-internal.c b/mono/metadata/sgen-internal.c
index 624a9d0..e42cce4 100644
--- a/mono/metadata/sgen-internal.c
+++ b/mono/metadata/sgen-internal.c
@@ -556,6 +556,16 @@ mono_sgen_internal_scan_objects (SgenInternalAllocator *alc, IterateObjectCallba
 	}
 }
 
+void
+mono_sgen_internal_update_heap_boundaries (SgenInternalAllocator *alc)
+{
+	SgenPinnedChunk *chunk;
+	for (chunk = alc->chunk_list; chunk; chunk = chunk->block.next) {
+		char *end_chunk = (char*)chunk + chunk->num_pages * FREELIST_PAGESIZE;
+		mono_sgen_update_heap_boundaries ((mword)chunk, (mword)end_chunk);
+	}
+}
+
 /*
  * the array of pointers from @start to @end contains conservative
  * pointers to objects inside @chunk: mark each referenced object
diff --git a/mono/metadata/sgen-los.c b/mono/metadata/sgen-los.c
index cd811a0..8d72007 100644
--- a/mono/metadata/sgen-los.c
+++ b/mono/metadata/sgen-los.c
@@ -45,6 +45,13 @@
  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
 
+#ifdef HAVE_SGEN_GC
+
+#include "metadata/sgen-gc.h"
+#include "metadata/sgen-protocol.h"
+#include "metadata/sgen-cardtable.h"
+#include "utils/mono-mmap.h"
+
 #define LOS_SECTION_SIZE	(1024 * 1024)
 
 /*
@@ -64,15 +71,6 @@
 
 #define LOS_NUM_FAST_SIZES		32
 
-typedef struct _LOSObject LOSObject;
-struct _LOSObject {
-	LOSObject *next;
-	mword size; /* this is the object size */
-	guint16 huge_object;
-	int dummy; /* to have a sizeof (LOSObject) a multiple of ALLOC_ALIGN  and data starting at same alignment */
-	char data [MONO_ZERO_LEN_ARRAY];
-};
-
 typedef struct _LOSFreeChunks LOSFreeChunks;
 struct _LOSFreeChunks {
 	LOSFreeChunks *next_size;
@@ -86,11 +84,11 @@ struct _LOSSection {
 	unsigned char *free_chunk_map;
 };
 
+LOSObject *los_object_list = NULL;
+mword los_memory_usage = 0;
+
 static LOSSection *los_sections = NULL;
-static LOSObject *los_object_list = NULL;
 static LOSFreeChunks *los_fast_free_lists [LOS_NUM_FAST_SIZES]; /* 0 is for larger sizes */
-static mword los_memory_usage = 0;
-static mword last_los_memory_usage = 0;
 static mword los_num_objects = 0;
 static int los_num_sections = 0;
 static mword next_los_collection = 2*1024*1024; /* 2 MB, need to tune */
@@ -241,6 +239,9 @@ get_los_section_memory (size_t size)
 	if (free_chunks)
 		return (LOSObject*)free_chunks;
 
+	if (!mono_sgen_try_alloc_space (LOS_SECTION_SIZE, SPACE_LOS))
+		return NULL;
+
 	section = mono_sgen_alloc_os_memory_aligned (LOS_SECTION_SIZE, LOS_SECTION_SIZE, TRUE);
 
 	free_chunks = (LOSFreeChunks*)((char*)section + LOS_CHUNK_SIZE);
@@ -295,8 +296,10 @@ free_los_section_memory (LOSObject *obj, size_t size)
 	add_free_chunk ((LOSFreeChunks*)obj, size);
 }
 
-static void
-free_large_object (LOSObject *obj)
+static int pagesize;
+
+void
+mono_sgen_los_free_object (LOSObject *obj)
 {
 #ifndef LOS_DUMMY
 	size_t size = obj->size;
@@ -310,10 +313,13 @@ free_large_object (LOSObject *obj)
 	free (obj);
 #else
 	if (size > LOS_SECTION_OBJECT_LIMIT) {
+		if (!pagesize)
+			pagesize = mono_pagesize ();
 		size += sizeof (LOSObject);
 		size += pagesize - 1;
 		size &= ~(pagesize - 1);
 		mono_sgen_free_os_memory (obj, size);
+		mono_sgen_release_space (size, SPACE_LOS);
 	} else {
 		free_los_section_memory (obj, size + sizeof (LOSObject));
 #ifdef LOS_CONSISTENCY_CHECKS
@@ -330,13 +336,13 @@ free_large_object (LOSObject *obj)
  * They don't move, so there is no need to pin them during collection
  * and we avoid the memcpy overhead.
  */
-static void* __attribute__((noinline))
-alloc_large_inner (MonoVTable *vtable, size_t size)
+void*
+mono_sgen_los_alloc_large_inner (MonoVTable *vtable, size_t size)
 {
-	LOSObject *obj;
+	LOSObject *obj = NULL;
 	void **vtslot;
 
-	g_assert (size > MAX_SMALL_OBJ_SIZE);
+	g_assert (size > SGEN_MAX_SMALL_OBJ_SIZE);
 
 #ifdef LOS_DUMMY
 	if (!los_segment)
@@ -347,11 +353,9 @@ alloc_large_inner (MonoVTable *vtable, size_t size)
 	los_segment_index += size + sizeof (LOSObject);
 	g_assert (los_segment_index <= LOS_SEGMENT_SIZE);
 #else
-	if (need_major_collection ()) {
+	if (mono_sgen_need_major_collection (size)) {
 		DEBUG (4, fprintf (gc_debug_file, "Should trigger major collection: req size %zd (los already: %lu, limit: %lu)\n", size, (unsigned long)los_memory_usage, (unsigned long)next_los_collection));
-		stop_world ();
-		major_collection ("LOS overflow");
-		restart_world ();
+		sgen_collect_major_no_lock ("LOS overflow");
 	}
 
 #ifdef USE_MALLOC
@@ -360,20 +364,25 @@ alloc_large_inner (MonoVTable *vtable, size_t size)
 #else
 	if (size > LOS_SECTION_OBJECT_LIMIT) {
 		size_t alloc_size = size;
+		if (!pagesize)
+			pagesize = mono_pagesize ();
 		alloc_size += sizeof (LOSObject);
 		alloc_size += pagesize - 1;
 		alloc_size &= ~(pagesize - 1);
-		/* FIXME: handle OOM */
-		obj = mono_sgen_alloc_os_memory (alloc_size, TRUE);
-		obj->huge_object = TRUE;
+		if (mono_sgen_try_alloc_space (alloc_size, SPACE_LOS)) {
+			obj = mono_sgen_alloc_os_memory (alloc_size, TRUE);
+			obj->huge_object = TRUE;
+		}
 	} else {
 		obj = get_los_section_memory (size + sizeof (LOSObject));
-		memset (obj, 0, size + sizeof (LOSObject));
+		if (obj)
+			memset (obj, 0, size + sizeof (LOSObject));
 	}
 #endif
 #endif
-
-	g_assert (!((mword)obj->data & (ALLOC_ALIGN - 1)));
+	if (!obj)
+		return NULL;
+	g_assert (!((mword)obj->data & (SGEN_ALLOC_ALIGN - 1)));
 	obj->size = size;
 	vtslot = (void**)obj->data;
 	*vtslot = vtable;
@@ -392,8 +401,8 @@ alloc_large_inner (MonoVTable *vtable, size_t size)
 	return obj->data;
 }
 
-static void
-los_sweep (void)
+void
+mono_sgen_los_sweep (void)
 {
 	LOSSection *section, *prev;
 	int i;
@@ -412,6 +421,7 @@ los_sweep (void)
 			else
 				los_sections = next;
 			mono_sgen_free_os_memory (section, LOS_SECTION_SIZE);
+			mono_sgen_release_space (LOS_SECTION_SIZE, SPACE_LOS);
 			section = next;
 			--los_num_sections;
 			continue;
@@ -451,82 +461,53 @@ los_sweep (void)
 	g_assert (los_num_sections == num_sections);
 }
 
-#ifdef SGEN_HAVE_CARDTABLE
-
-static void
-los_iterate_live_block_ranges (sgen_cardtable_block_callback callback)
+gboolean
+mono_sgen_ptr_is_in_los (char *ptr, char **start)
 {
 	LOSObject *obj;
+
+	*start = NULL;
 	for (obj = los_object_list; obj; obj = obj->next) {
-		MonoVTable *vt = (MonoVTable*)LOAD_VTABLE (obj->data);
-		if (vt->klass->has_references)
-			callback ((mword)obj->data, (mword)obj->size);
+		char *end = obj->data + obj->size;
+
+		if (ptr >= obj->data && ptr < end) {
+			*start = obj->data;
+			return TRUE;
+		}
 	}
+	return FALSE;
 }
 
-#define ARRAY_OBJ_INDEX(ptr,array,elem_size) (((char*)(ptr) - ((char*)(array) + G_STRUCT_OFFSET (MonoArray, vector))) / (elem_size))
-
-static void __attribute__((noinline))
-los_scan_card_table (GrayQueue *queue)
+void
+mono_sgen_los_iterate_objects (IterateObjectCallbackFunc cb, void *user_data)
 {
 	LOSObject *obj;
 
+	for (obj = los_object_list; obj; obj = obj->next)
+		cb (obj->data, obj->size, user_data);
+}
+
+void
+mono_sgen_los_iterate_live_block_ranges (sgen_cardtable_block_callback callback)
+{
+	LOSObject *obj;
 	for (obj = los_object_list; obj; obj = obj->next) {
-		MonoVTable *vt = (MonoVTable*)LOAD_VTABLE (obj->data);
-		MonoClass *klass = vt->klass;
+		MonoVTable *vt = (MonoVTable*)SGEN_LOAD_VTABLE (obj->data);
+		if (SGEN_VTABLE_HAS_REFERENCES (vt))
+			callback ((mword)obj->data, (mword)obj->size);
+	}
+}
 
-		if (!klass->has_references)
-			continue;
+#ifdef SGEN_HAVE_CARDTABLE
+void
+mono_sgen_los_scan_card_table (SgenGrayQueue *queue)
+{
+	LOSObject *obj;
 
-		if (vt->rank) {
-			MonoArray *arr = obj->data;
-			mword desc = (mword)klass->element_class->gc_descr;
-			char *start = sgen_card_table_align_pointer (obj->data);
-			char *end = obj->data + obj->size;
-			int size = mono_array_element_size (klass);
-
-			g_assert (desc);
-
-			for (; start <= end; start += CARD_SIZE_IN_BYTES) {
-				char *elem, *card_end;
-				uintptr_t index;
-
-				if (!sgen_card_table_card_begin_scanning ((mword)start))
-					continue;
-
-				card_end = start + CARD_SIZE_IN_BYTES;
-				if (end < card_end)
-					card_end = end;
-
-				if (start <= arr->vector)
-					index = 0;
-				else
-					index = ARRAY_OBJ_INDEX (start, obj->data, size);
-
-				elem = (char*)mono_array_addr_with_size ((MonoArray*)obj->data, size, index);
-				if (klass->element_class->valuetype) {
-					while (elem < card_end) {
-						major_collector.minor_scan_vtype (elem, desc, nursery_start, nursery_next, queue);
-						elem += size;
-					}
-				} else {
-					while (elem < card_end) {
-						gpointer new, old = *(gpointer*)elem;
-						if (old) {
-							major_collector.copy_object ((void**)elem, queue);
-							new = *(gpointer*)elem;
-							if (G_UNLIKELY (ptr_in_nursery (new)))
-								mono_sgen_add_to_global_remset (elem);
-						}
-						elem += size;
-					}
-				}
-			}
-		} else {
-			if (sgen_card_table_region_begin_scanning ((mword)obj->data, (mword)obj->size))
-				major_collector.minor_scan_object (obj->data, queue);
-		}
+	for (obj = los_object_list; obj; obj = obj->next) {
+		sgen_cardtable_scan_object (obj->data, obj->size, NULL, queue);
 	}
 }
-
 #endif
+
+#endif /* HAVE_SGEN_GC */
diff --git a/mono/metadata/sgen-major-copy-object.h b/mono/metadata/sgen-major-copy-object.h
index a23b2dd..a8a6195 100644
--- a/mono/metadata/sgen-major-copy-object.h
+++ b/mono/metadata/sgen-major-copy-object.h
@@ -77,7 +77,7 @@ par_copy_object_no_checks (char *destination, MonoVTable *vt, void *obj, mword o
 		mono_sgen_register_moved_object (obj, destination);
 	obj = destination;
 	if (queue) {
-		DEBUG (9, fprintf (gc_debug_file, "Enqueuing gray object %p (%s)\n", obj, safe_name (obj)));
+		DEBUG (9, fprintf (gc_debug_file, "Enqueuing gray object %p (%s)\n", obj, mono_sgen_safe_name (obj)));
 		GRAY_OBJECT_ENQUEUE (queue, obj);
 	}
 }
@@ -90,6 +90,11 @@ copy_object_no_checks (void *obj, SgenGrayQueue *queue)
 	mword objsize = SGEN_ALIGN_UP (mono_sgen_par_object_get_size (vt, (MonoObject*)obj));
 	char *destination = major_alloc_object (objsize, has_references);
 
+	if (G_UNLIKELY (!destination)) {
+		mono_sgen_pin_object (obj, queue);
+		return obj;
+	}
+
 	par_copy_object_no_checks (destination, vt, obj, objsize, has_references ? queue : NULL);
 
 	/* set the forwarding pointer */
@@ -142,14 +147,14 @@ copy_object (void **obj_slot, SgenGrayQueue *queue)
 	 */
 
 	if ((forwarded = SGEN_OBJECT_IS_FORWARDED (obj))) {
-		DEBUG (9, g_assert (((MonoVTable*)LOAD_VTABLE(obj))->gc_descr));
+		DEBUG (9, g_assert (((MonoVTable*)SGEN_LOAD_VTABLE(obj))->gc_descr));
 		DEBUG (9, fprintf (gc_debug_file, " (already forwarded to %p)\n", forwarded));
 		HEAVY_STAT (++stat_nursery_copy_object_failed_forwarded);
 		*obj_slot = forwarded;
 		return;
 	}
 	if (SGEN_OBJECT_IS_PINNED (obj)) {
-		DEBUG (9, g_assert (((MonoVTable*)LOAD_VTABLE(obj))->gc_descr));
+		DEBUG (9, g_assert (((MonoVTable*)SGEN_LOAD_VTABLE(obj))->gc_descr));
 		DEBUG (9, fprintf (gc_debug_file, " (pinned, no change)\n"));
 		HEAVY_STAT (++stat_nursery_copy_object_failed_pinned);
 		return;
diff --git a/mono/metadata/sgen-major-copying.c b/mono/metadata/sgen-major-copying.c
index 426b760..3b08297 100644
--- a/mono/metadata/sgen-major-copying.c
+++ b/mono/metadata/sgen-major-copying.c
@@ -53,8 +53,7 @@
 
 #include "metadata/sgen-gc.h"
 #include "metadata/sgen-protocol.h"
-
-#define DEBUG(l,x)
+#include "metadata/mono-gc.h"
 
 #define MAJOR_SECTION_SIZE		SGEN_PINNED_CHUNK_SIZE
 #define BLOCK_FOR_OBJECT(o)		SGEN_PINNED_CHUNK_FOR_PTR ((o))
@@ -68,6 +67,8 @@ static GCMemSection *section_list = NULL;
 
 static SgenInternalAllocator pinned_allocator;
 
+static gboolean have_swept;
+
 /*
  * used when moving the objects
  */
@@ -130,7 +131,7 @@ alloc_major_section (void)
 	section->size = MAJOR_SECTION_SIZE - SGEN_SIZEOF_GC_MEM_SECTION;
 	section->end_data = section->data + section->size;
 	mono_sgen_update_heap_boundaries ((mword)section->data, (mword)section->end_data);
-	DEBUG (3, fprintf (gc_debug_file, "New major heap section: (%p-%p), total: %zd\n", section->data, section->end_data, total_alloc));
+	DEBUG (3, fprintf (gc_debug_file, "New major heap section: (%p-%p), total: %zd\n", section->data, section->end_data, mono_gc_get_heap_size ()));
 	scan_starts = (section->size + SGEN_SCAN_START_SIZE - 1) / SGEN_SCAN_START_SIZE;
 	section->scan_starts = mono_sgen_alloc_internal_dynamic (sizeof (char*) * scan_starts, INTERNAL_MEM_SCAN_STARTS);
 	section->num_scan_start = scan_starts;
@@ -353,7 +354,7 @@ major_copy_or_mark_object (void **obj_slot, SgenGrayQueue *queue)
 	if (G_UNLIKELY (objsize > SGEN_MAX_SMALL_OBJ_SIZE || obj_is_from_pinned_alloc (obj))) {
 		if (SGEN_OBJECT_IS_PINNED (obj))
 			return;
-		DEBUG (9, fprintf (gc_debug_file, " (marked LOS/Pinned %p (%s), size: %zd)\n", obj, safe_name (obj), objsize));
+		DEBUG (9, fprintf (gc_debug_file, " (marked LOS/Pinned %p (%s), size: %zd)\n", obj, mono_sgen_safe_name (obj), objsize));
 		binary_protocol_pin (obj, (gpointer)SGEN_LOAD_VTABLE (obj), mono_sgen_safe_object_get_size ((MonoObject*)obj));
 		SGEN_PIN_OBJECT (obj);
 		GRAY_OBJECT_ENQUEUE (queue, obj);
@@ -427,9 +428,9 @@ sweep_pinned_objects_callback (char *ptr, size_t size, void *data)
 {
 	if (SGEN_OBJECT_IS_PINNED (ptr)) {
 		SGEN_UNPIN_OBJECT (ptr);
-		DEBUG (6, fprintf (gc_debug_file, "Unmarked pinned object %p (%s)\n", ptr, safe_name (ptr)));
+		DEBUG (6, fprintf (gc_debug_file, "Unmarked pinned object %p (%s)\n", ptr, mono_sgen_safe_name (ptr)));
 	} else {
-		DEBUG (6, fprintf (gc_debug_file, "Freeing unmarked pinned object %p (%s)\n", ptr, safe_name (ptr)));
+		DEBUG (6, fprintf (gc_debug_file, "Freeing unmarked pinned object %p (%s)\n", ptr, mono_sgen_safe_name (ptr)));
 		free_pinned_object (ptr, size);
 	}
 }
@@ -446,7 +447,7 @@ major_iterate_objects (gboolean non_pinned, gboolean pinned, IterateObjectCallba
 	if (non_pinned) {
 		GCMemSection *section;
 		for (section = section_list; section; section = section->block.next)
-			mono_sgen_scan_area_with_callback (section->data, section->end_data, callback, data);
+			mono_sgen_scan_area_with_callback (section->data, section->end_data, callback, data, FALSE);
 	}
 	if (pinned)
 		mono_sgen_internal_scan_objects (&pinned_allocator, callback, data);
@@ -466,7 +467,7 @@ pin_pinned_object_callback (void *addr, size_t slot_size, SgenGrayQueue *queue)
 		mono_sgen_pin_stats_register_object ((char*) addr, mono_sgen_safe_object_get_size ((MonoObject*) addr));
 	SGEN_PIN_OBJECT (addr);
 	GRAY_OBJECT_ENQUEUE (queue, addr);
-	DEBUG (6, fprintf (gc_debug_file, "Marked pinned object %p (%s) from roots\n", addr, safe_name (addr)));
+	DEBUG (6, fprintf (gc_debug_file, "Marked pinned object %p (%s) from roots\n", addr, mono_sgen_safe_name (addr)));
 }
 
 static void
@@ -505,15 +506,19 @@ major_sweep (void)
 	/* unpin objects from the pinned chunks and free the unmarked ones */
 	sweep_pinned_objects ();
 
+	mono_sgen_internal_update_heap_boundaries (&pinned_allocator);
+
 	/* free the unused sections */
 	prev_section = NULL;
 	for (section = section_list; section;) {
+		GCMemSection *this_section = section;
+
 		/* to_space doesn't need handling here */
 		if (section->is_to_space) {
 			section->is_to_space = FALSE;
 			prev_section = section;
 			section = section->block.next;
-			continue;
+			goto update;
 		}
 		/* no pinning object, so the section is free */
 		if (!section->pin_queue_num_entries) {
@@ -533,7 +538,12 @@ major_sweep (void)
 		}
 		prev_section = section;
 		section = section->block.next;
+
+	update:
+		mono_sgen_update_heap_boundaries ((mword)this_section->data, (mword)this_section->data + this_section->size);
 	}
+
+	have_swept = TRUE;
 }
 
 static void
@@ -643,6 +653,8 @@ mono_sgen_copying_init (SgenMajorCollector *collector)
 	collector->supports_cardtable = FALSE;
 	collector->is_parallel = FALSE;
 
+	collector->have_swept = &have_swept;
+
 	collector->alloc_heap = major_alloc_heap;
 	collector->is_object_live = major_is_object_live;
 	collector->alloc_small_pinned_obj = major_alloc_small_pinned_obj;
diff --git a/mono/metadata/sgen-marksweep.c b/mono/metadata/sgen-marksweep.c
index 64452c0..ecf0edd 100644
--- a/mono/metadata/sgen-marksweep.c
+++ b/mono/metadata/sgen-marksweep.c
@@ -29,15 +29,18 @@
 #ifdef HAVE_SGEN_GC
 
 #include <math.h>
+#include <errno.h>
 
 #include "utils/mono-counters.h"
+#include "utils/mono-semaphore.h"
+#include "utils/mono-time.h"
 #include "metadata/object-internals.h"
 #include "metadata/profiler-private.h"
 
 #include "metadata/sgen-gc.h"
 #include "metadata/sgen-protocol.h"
-
-#define DEBUG(l,x)
+#include "metadata/sgen-cardtable.h"
+#include "metadata/gc-internal.h"
 
 #define MS_BLOCK_SIZE	(16*1024)
 #define MS_BLOCK_SIZE_SHIFT	14
@@ -76,18 +79,21 @@
 typedef struct _MSBlockInfo MSBlockInfo;
 struct _MSBlockInfo {
 	int obj_size;
-	gboolean pinned;
-	gboolean has_references;
+	int obj_size_index;
+	int pin_queue_num_entries;
+	unsigned int pinned : 1;
+	unsigned int has_references : 1;
+	unsigned int has_pinned : 1;	/* means cannot evacuate */
+	unsigned int is_to_space : 1;
 #ifdef FIXED_HEAP
-	gboolean used;
-#else
-	MSBlockInfo *next;
+	unsigned int used : 1;
+	unsigned int zeroed : 1;
 #endif
+	MSBlockInfo *next;
 	char *block;
 	void **free_list;
 	MSBlockInfo *next_free;
 	void **pin_queue_start;
-	int pin_queue_num_entries;
 	mword mark_words [MS_NUM_MARK_WORDS];
 };
 
@@ -180,30 +186,28 @@ static int nursery_bits;
 static char *nursery_start;
 static char *nursery_end;
 
+static gboolean *evacuate_block_obj_sizes;
+static float evacuation_threshold = 0.666;
+
+static gboolean concurrent_sweep = FALSE;
+static gboolean have_swept;
+
 #define ptr_in_nursery(p)	(SGEN_PTR_IN_NURSERY ((p), nursery_bits, nursery_start, nursery_end))
 
+/* all allocated blocks in the system */
+static MSBlockInfo *all_blocks;
+
 #ifdef FIXED_HEAP
 /* non-allocated block free-list */
 static MSBlockInfo *empty_blocks = NULL;
 #else
 /* non-allocated block free-list */
 static void *empty_blocks = NULL;
-/* all allocated blocks in the system */
-static MSBlockInfo *all_blocks;
 static int num_empty_blocks = 0;
 #endif
 
-#ifdef FIXED_HEAP
-#define FOREACH_BLOCK(bl)	{					\
-		int __block_i;						\
-		for (__block_i = 0; __block_i < ms_heap_num_blocks; ++__block_i) { \
-			(bl) = &block_infos [__block_i];		\
-			if (!(bl)->used) continue;
-#define END_FOREACH_BLOCK	}}
-#else
 #define FOREACH_BLOCK(bl)	for ((bl) = all_blocks; (bl); (bl) = (bl)->next) {
 #define END_FOREACH_BLOCK	}
-#endif
 
 static int num_major_sections = 0;
 /* one free block list for each block object size */
@@ -211,6 +215,58 @@ static MSBlockInfo **free_block_lists [MS_BLOCK_TYPE_MAX];
 
 static long long stat_major_blocks_alloced = 0;
 static long long stat_major_blocks_freed = 0;
+static long long stat_major_objects_evacuated = 0;
+static long long stat_time_wait_for_sweep = 0;
+
+static gboolean ms_sweep_in_progress = FALSE;
+static pthread_t ms_sweep_thread;
+static MonoSemType ms_sweep_cmd_semaphore;
+static MonoSemType ms_sweep_done_semaphore;
+
+static void
+ms_signal_sweep_command (void)
+{
+	if (!concurrent_sweep)
+		return;
+
+	g_assert (!ms_sweep_in_progress);
+	ms_sweep_in_progress = TRUE;
+	MONO_SEM_POST (&ms_sweep_cmd_semaphore);
+}
+
+static void
+ms_signal_sweep_done (void)
+{
+	if (!concurrent_sweep)
+		return;
+
+	MONO_SEM_POST (&ms_sweep_done_semaphore);
+}
+
+static void
+ms_wait_for_sweep_done (void)
+{
+	SGEN_TV_DECLARE (atv);
+	SGEN_TV_DECLARE (btv);
+	int result;
+
+	if (!concurrent_sweep)
+		return;
+
+	if (!ms_sweep_in_progress)
+		return;
+
+	SGEN_TV_GETTIME (atv);
+	while ((result = MONO_SEM_WAIT (&ms_sweep_done_semaphore)) != 0) {
+		if (errno != EINTR)
+			g_error ("MONO_SEM_WAIT");
+	}
+	SGEN_TV_GETTIME (btv);
+	stat_time_wait_for_sweep += SGEN_TV_ELAPSED_MS (atv, btv);
+
+	g_assert (ms_sweep_in_progress);
+	ms_sweep_in_progress = FALSE;
+}
 
 static int
 ms_find_block_obj_size_index (int size)
@@ -258,6 +314,7 @@ major_alloc_heap (mword nursery_size, mword nursery_align, int the_nursery_bits)
 			block_infos [i].next_free = &block_infos [i + 1];
 		else
 			block_infos [i].next_free = NULL;
+		block_infos [i].zeroed = TRUE;
 	}
 
 	empty_blocks = &block_infos [0];
@@ -280,6 +337,12 @@ major_alloc_heap (mword nursery_size, mword nursery_align, int the_nursery_bits)
 }
 #endif
 
+static void
+update_heap_boundaries_for_block (MSBlockInfo *block)
+{
+	mono_sgen_update_heap_boundaries ((mword)block->block, (mword)block->block + MS_BLOCK_SIZE);
+}
+
 #ifdef FIXED_HEAP
 static MSBlockInfo*
 ms_get_empty_block (void)
@@ -293,7 +356,8 @@ ms_get_empty_block (void)
 
 	block->used = TRUE;
 
-	mono_sgen_update_heap_boundaries ((mword)block->block, (mword)block->block + MS_BLOCK_SIZE);
+	if (!block->zeroed)
+		memset (block->block, 0, MS_BLOCK_SIZE);
 
 	return block;
 }
@@ -304,6 +368,8 @@ ms_free_block (MSBlockInfo *block)
 	block->next_free = empty_blocks;
 	empty_blocks = block;
 	block->used = FALSE;
+	block->zeroed = FALSE;
+	mono_sgen_release_space (MS_BLOCK_SIZE, SPACE_MAJOR);
 }
 #else
 static void*
@@ -350,8 +416,6 @@ ms_get_empty_block (void)
 
 	g_assert (!((mword)block & (MS_BLOCK_SIZE - 1)));
 
-	mono_sgen_update_heap_boundaries ((mword)block, (mword)block + MS_BLOCK_SIZE);
-
 	return block;
 }
 
@@ -360,6 +424,7 @@ ms_free_block (void *block)
 {
 	void *empty;
 
+	mono_sgen_release_space (MS_BLOCK_SIZE, SPACE_MAJOR);
 	memset (block, 0, MS_BLOCK_SIZE);
 
 	do {
@@ -391,14 +456,13 @@ check_block_free_list (MSBlockInfo *block, int size, gboolean pinned)
 		/* the block must not be in the empty_blocks list */
 		for (b = empty_blocks; b; b = b->next_free)
 			g_assert (b != block);
-#else
+#endif
 		/* the block must be in the all_blocks list */
 		for (b = all_blocks; b; b = b->next) {
 			if (b == block)
 				break;
 		}
 		g_assert (b == block);
-#endif
 	}
 }
 
@@ -461,26 +525,36 @@ consistency_check (void)
 }
 #endif
 
-static void
+static gboolean
 ms_alloc_block (int size_index, gboolean pinned, gboolean has_references)
 {
 	int size = block_obj_sizes [size_index];
 	int count = MS_BLOCK_FREE / size;
-#ifdef FIXED_HEAP
-	MSBlockInfo *info = ms_get_empty_block ();
-#else
-	MSBlockInfo *info = mono_sgen_alloc_internal (INTERNAL_MEM_MS_BLOCK_INFO);
+	MSBlockInfo *info;
+#ifndef FIXED_HEAP
 	MSBlockHeader *header;
 #endif
 	MSBlockInfo **free_blocks = FREE_BLOCKS (pinned, has_references);
 	char *obj_start;
 	int i;
 
+	if (!mono_sgen_try_alloc_space (MS_BLOCK_SIZE, SPACE_MAJOR))
+		return FALSE;
+
+#ifdef FIXED_HEAP
+	info = ms_get_empty_block ();
+#else
+	info = mono_sgen_alloc_internal (INTERNAL_MEM_MS_BLOCK_INFO);
+#endif
+
 	DEBUG (9, g_assert (count >= 2));
 
 	info->obj_size = size;
+	info->obj_size_index = size_index;
 	info->pinned = pinned;
 	info->has_references = has_references;
+	info->has_pinned = pinned;
+	info->is_to_space = (mono_sgen_get_current_collection_generation () == GENERATION_OLD);
 #ifndef FIXED_HEAP
 	info->block = ms_get_empty_block ();
 
@@ -488,6 +562,8 @@ ms_alloc_block (int size_index, gboolean pinned, gboolean has_references)
 	header->info = info;
 #endif
 
+	update_heap_boundaries_for_block (info);
+
 	/* build free list */
 	obj_start = info->block + MS_BLOCK_SKIP;
 	info->free_list = (void**)obj_start;
@@ -503,12 +579,11 @@ ms_alloc_block (int size_index, gboolean pinned, gboolean has_references)
 	info->next_free = free_blocks [size_index];
 	free_blocks [size_index] = info;
 
-#ifndef FIXED_HEAP
 	info->next = all_blocks;
 	all_blocks = info;
-#endif
 
 	++num_major_sections;
+	return TRUE;
 }
 
 static gboolean
@@ -530,8 +605,14 @@ alloc_obj (int size, gboolean pinned, gboolean has_references)
 
 	LOCK_MS_BLOCK_LIST;
 
-	if (!free_blocks [size_index])
-		ms_alloc_block (size_index, pinned, has_references);
+	g_assert (!ms_sweep_in_progress);
+
+	if (!free_blocks [size_index]) {
+		if (G_UNLIKELY (!ms_alloc_block (size_index, pinned, has_references))) {
+			UNLOCK_MS_BLOCK_LIST;
+			return NULL;
+		}
+	}
 
 	block = free_blocks [size_index];
 	DEBUG (9, g_assert (block));
@@ -600,7 +681,19 @@ major_free_non_pinned_object (char *obj, size_t size)
 static void*
 major_alloc_small_pinned_obj (size_t size, gboolean has_references)
 {
-	return alloc_obj (size, TRUE, has_references);
+	void *res;
+
+	ms_wait_for_sweep_done ();
+
+	res = alloc_obj (size, TRUE, has_references);
+	 /*If we failed to alloc memory, we better try releasing memory
+	  *as pinned alloc is requested by the runtime.
+	  */
+	 if (!res) {
+		 sgen_collect_major_no_lock ("pinned alloc failure");
+		 res = alloc_obj (size, TRUE, has_references);
+	 }
+	 return res;
 }
 
 static void
@@ -616,13 +709,20 @@ static void*
 major_alloc_degraded (MonoVTable *vtable, size_t size)
 {
 	void *obj;
-	int old_num_sections = num_major_sections;
-	obj = alloc_obj (size, FALSE, vtable->klass->has_references);
-	*(MonoVTable**)obj = vtable;
-	HEAVY_STAT (++stat_objects_alloced_degraded);
-	HEAVY_STAT (stat_bytes_alloced_degraded += size);
-	g_assert (num_major_sections >= old_num_sections);
-	mono_sgen_register_major_sections_alloced (num_major_sections - old_num_sections);
+	int old_num_sections;
+
+	ms_wait_for_sweep_done ();
+
+	old_num_sections = num_major_sections;
+
+	obj = alloc_obj (size, FALSE, SGEN_VTABLE_HAS_REFERENCES (vtable));
+	if (G_LIKELY (obj)) {
+		*(MonoVTable**)obj = vtable;
+		HEAVY_STAT (++stat_objects_alloced_degraded);
+		HEAVY_STAT (stat_bytes_alloced_degraded += size);
+		g_assert (num_major_sections >= old_num_sections);
+		mono_sgen_register_major_sections_alloced (num_major_sections - old_num_sections);
+	}
 	return obj;
 }
 
@@ -667,7 +767,13 @@ major_is_object_live (char *obj)
 static gboolean
 major_ptr_is_in_non_pinned_space (char *ptr)
 {
-	g_assert_not_reached ();
+	MSBlockInfo *block;
+
+	FOREACH_BLOCK (block) {
+		if (ptr >= (char*)block && ptr <= (char*)block + MS_BLOCK_SIZE)
+			return TRUE;
+	} END_FOREACH_BLOCK;
+	return FALSE;
 }
 
 static void
@@ -675,6 +781,8 @@ major_iterate_objects (gboolean non_pinned, gboolean pinned, IterateObjectCallba
 {
 	MSBlockInfo *block;
 
+	ms_wait_for_sweep_done ();
+
 	FOREACH_BLOCK (block) {
 		int count = MS_BLOCK_FREE / block->obj_size;
 		int i;
@@ -701,6 +809,30 @@ static void
 major_dump_heap (FILE *heap_dump_file)
 {
 	MSBlockInfo *block;
+	int *slots_available = alloca (sizeof (int) * num_block_obj_sizes);
+	int *slots_used = alloca (sizeof (int) * num_block_obj_sizes);
+	int i;
+
+	for (i = 0; i < num_block_obj_sizes; ++i)
+		slots_available [i] = slots_used [i] = 0;
+
+	FOREACH_BLOCK (block) {
+		int index = ms_find_block_obj_size_index (block->obj_size);
+		int count = MS_BLOCK_FREE / block->obj_size;
+
+		slots_available [index] += count;
+		for (i = 0; i < count; ++i) {
+			if (MS_OBJ_ALLOCED (MS_BLOCK_OBJ (block, i), block))
+				++slots_used [index];
+		}
+	} END_FOREACH_BLOCK;
+
+	fprintf (heap_dump_file, "<occupancies>\n");
+	for (i = 0; i < num_block_obj_sizes; ++i) {
+		fprintf (heap_dump_file, "<occupancy size=\"%d\" available=\"%d\" used=\"%d\" />\n",
+				block_obj_sizes [i], slots_available [i], slots_used [i]);
+	}
+	fprintf (heap_dump_file, "</occupancies>\n");
 
 	FOREACH_BLOCK (block) {
 		int count = MS_BLOCK_FREE / block->obj_size;
@@ -778,25 +910,53 @@ major_copy_or_mark_object (void **ptr, SgenGrayQueue *queue)
 	DEBUG (9, g_assert (obj));
 	DEBUG (9, g_assert (current_collection_generation == GENERATION_OLD));
 
+	if (vtable_word & SGEN_FORWARDED_BIT) {
+		*ptr = (void*)vt;
+		return;
+	}
+
 	if (ptr_in_nursery (obj)) {
 		int word, bit;
 		gboolean has_references;
 		void *destination;
 
-		if (vtable_word & SGEN_FORWARDED_BIT) {
-			*ptr = (void*)vt;
-			return;
-		}
-
 		if (vtable_word & SGEN_PINNED_BIT)
 			return;
 
 		HEAVY_STAT (++stat_objects_copied_major);
 
+	do_copy_object:
 		objsize = SGEN_ALIGN_UP (mono_sgen_par_object_get_size (vt, (MonoObject*)obj));
 		has_references = SGEN_VTABLE_HAS_REFERENCES (vt);
 
 		destination = major_alloc_object (objsize, has_references);
+		if (G_UNLIKELY (!destination)) {
+			if (!ptr_in_nursery (obj)) {
+				int size_index;
+				block = MS_BLOCK_FOR_OBJ (obj);
+				size_index = block->obj_size_index;
+				evacuate_block_obj_sizes [size_index] = FALSE;
+			}
+
+			do {
+				if (SGEN_CAS_PTR (obj, (void*)((mword)vt | SGEN_PINNED_BIT), vt) == vt) {
+					mono_sgen_pin_object (obj, queue);
+					break;
+				}
+
+				vtable_word = *(mword*)obj;
+				/*someone else forwarded it, update the pointer and bail out*/
+				if (vtable_word & SGEN_FORWARDED_BIT) {
+					*ptr = (void*)(vtable_word & ~SGEN_VTABLE_BITS_MASK);
+					break;
+				}
+
+				/*someone pinned it, nothing to do.*/
+				if (vtable_word & SGEN_PINNED_BIT)
+					break;
+			} while (TRUE);
+			return;
+		}
 
 		if (SGEN_CAS_PTR (obj, (void*)((mword)destination | SGEN_FORWARDED_BIT), vt) == vt) {
 			gboolean was_marked;
@@ -838,8 +998,19 @@ major_copy_or_mark_object (void **ptr, SgenGrayQueue *queue)
 		if (objsize <= SGEN_MAX_SMALL_OBJ_SIZE)
 #endif
 		{
+			int size_index;
+
 			block = MS_BLOCK_FOR_OBJ (obj);
-			MS_PAR_MARK_OBJECT_AND_ENQUEUE (obj, block, queue);
+			size_index = block->obj_size_index;
+
+			if (!block->has_pinned && evacuate_block_obj_sizes [size_index]) {
+				if (block->is_to_space)
+					return;
+				HEAVY_STAT (++stat_major_objects_evacuated);
+				goto do_copy_object;
+			} else {
+				MS_PAR_MARK_OBJECT_AND_ENQUEUE (obj, block, queue);
+			}
 		} else {
 			if (vtable_word & SGEN_PINNED_BIT)
 				return;
@@ -858,7 +1029,6 @@ static void
 major_copy_or_mark_object (void **ptr, SgenGrayQueue *queue)
 {
 	void *obj = *ptr;
-	mword objsize;
 	MSBlockInfo *block;
 
 	HEAVY_STAT (++stat_copy_object_called_major);
@@ -868,7 +1038,7 @@ major_copy_or_mark_object (void **ptr, SgenGrayQueue *queue)
 
 	if (ptr_in_nursery (obj)) {
 		int word, bit;
-		char *forwarded;
+		char *forwarded, *old_obj;
 
 		if ((forwarded = SGEN_OBJECT_IS_FORWARDED (obj))) {
 			*ptr = forwarded;
@@ -879,7 +1049,20 @@ major_copy_or_mark_object (void **ptr, SgenGrayQueue *queue)
 
 		HEAVY_STAT (++stat_objects_copied_major);
 
+	do_copy_object:
+		old_obj = obj;
 		obj = copy_object_no_checks (obj, queue);
+		if (G_UNLIKELY (old_obj == obj)) {
+			/*If we fail to evacuate an object we just stop doing it for a given block size as all other will surely fail too.*/
+			if (!ptr_in_nursery (obj)) {
+				int size_index;
+				block = MS_BLOCK_FOR_OBJ (obj);
+				size_index = block->obj_size_index;
+				evacuate_block_obj_sizes [size_index] = FALSE;
+				MS_MARK_OBJECT_AND_ENQUEUE (obj, block, queue);
+			}
+			return;
+		}
 		*ptr = obj;
 
 		/*
@@ -893,6 +1076,16 @@ major_copy_or_mark_object (void **ptr, SgenGrayQueue *queue)
 		DEBUG (9, g_assert (!MS_MARK_BIT (block, word, bit)));
 		MS_SET_MARK_BIT (block, word, bit);
 	} else {
+		char *forwarded;
+#ifndef FIXED_HEAP
+		mword objsize;
+#endif
+
+		if ((forwarded = SGEN_OBJECT_IS_FORWARDED (obj))) {
+			*ptr = forwarded;
+			return;
+		}
+
 #ifdef FIXED_HEAP
 		if (MS_PTR_IN_SMALL_MAJOR_HEAP (obj))
 #else
@@ -901,8 +1094,19 @@ major_copy_or_mark_object (void **ptr, SgenGrayQueue *queue)
 		if (objsize <= SGEN_MAX_SMALL_OBJ_SIZE)
 #endif
 		{
+			int size_index;
+
 			block = MS_BLOCK_FOR_OBJ (obj);
-			MS_MARK_OBJECT_AND_ENQUEUE (obj, block, queue);
+			size_index = block->obj_size_index;
+
+			if (!block->has_pinned && evacuate_block_obj_sizes [size_index]) {
+				if (block->is_to_space)
+					return;
+				HEAVY_STAT (++stat_major_objects_evacuated);
+				goto do_copy_object;
+			} else {
+				MS_MARK_OBJECT_AND_ENQUEUE (obj, block, queue);
+			}
 		} else {
 			if (SGEN_OBJECT_IS_PINNED (obj))
 				return;
@@ -922,11 +1126,15 @@ mark_pinned_objects_in_block (MSBlockInfo *block, SgenGrayQueue *queue)
 {
 	int i;
 	int last_index = -1;
-	int count = MS_BLOCK_FREE / block->obj_size;
+
+	if (!block->pin_queue_num_entries)
+		return;
+
+	block->has_pinned = TRUE;
 
 	for (i = 0; i < block->pin_queue_num_entries; ++i) {
 		int index = MS_BLOCK_OBJ_INDEX (block->pin_queue_start [i], block);
-		DEBUG (9, g_assert (index >= 0 && index < count));
+		DEBUG (9, g_assert (index >= 0 && index < MS_BLOCK_FREE / block->obj_size));
 		if (index == last_index)
 			continue;
 		MS_MARK_OBJECT_AND_ENQUEUE_CHECKED (MS_BLOCK_OBJ (block, index), block, queue);
@@ -935,14 +1143,18 @@ mark_pinned_objects_in_block (MSBlockInfo *block, SgenGrayQueue *queue)
 }
 
 static void
-major_sweep (void)
+ms_sweep (void)
 {
 	int i;
-#ifdef FIXED_HEAP
-	int j;
-#else
 	MSBlockInfo **iter;
-#endif
+
+	/* statistics for evacuation */
+	int *slots_available = alloca (sizeof (int) * num_block_obj_sizes);
+	int *slots_used = alloca (sizeof (int) * num_block_obj_sizes);
+	int *num_blocks = alloca (sizeof (int) * num_block_obj_sizes);
+
+	for (i = 0; i < num_block_obj_sizes; ++i)
+		slots_available [i] = slots_used [i] = num_blocks [i] = 0;
 
 	/* clear all the free lists */
 	for (i = 0; i < MS_BLOCK_TYPE_MAX; ++i) {
@@ -953,22 +1165,21 @@ major_sweep (void)
 	}
 
 	/* traverse all blocks, free and zero unmarked objects */
-#ifdef FIXED_HEAP
-	for (j = 0; j < ms_heap_num_blocks; ++j) {
-		MSBlockInfo *block = &block_infos [j];
-#else
 	iter = &all_blocks;
 	while (*iter) {
 		MSBlockInfo *block = *iter;
-#endif
 		int count;
 		gboolean have_live = FALSE;
+		gboolean has_pinned;
 		int obj_index;
+		int obj_size_index;
 
-#ifdef FIXED_HEAP
-		if (!block->used)
-			continue;
-#endif
+		obj_size_index = block->obj_size_index;
+
+		has_pinned = block->has_pinned;
+		block->has_pinned = block->pinned;
+
+		block->is_to_space = FALSE;
 
 		count = MS_BLOCK_FREE / block->obj_size;
 		block->free_list = NULL;
@@ -981,6 +1192,8 @@ major_sweep (void)
 			if (MS_MARK_BIT (block, word, bit)) {
 				DEBUG (9, g_assert (MS_OBJ_ALLOCED (obj, block)));
 				have_live = TRUE;
+				if (!has_pinned)
+					++slots_used [obj_size_index];
 			} else {
 				/* an unmarked object */
 				if (MS_OBJ_ALLOCED (obj, block)) {
@@ -1001,9 +1214,12 @@ major_sweep (void)
 		 */
 
 		if (have_live) {
-#ifndef FIXED_HEAP
+			if (!has_pinned) {
+				++num_blocks [obj_size_index];
+				slots_available [obj_size_index] += count;
+			}
+
 			iter = &block->next;
-#endif
 
 			/*
 			 * If there are free slots in the block, add
@@ -1015,23 +1231,75 @@ major_sweep (void)
 				block->next_free = free_blocks [index];
 				free_blocks [index] = block;
 			}
+
+			update_heap_boundaries_for_block (block);
 		} else {
 			/*
 			 * Blocks without live objects are removed from the
 			 * block list and freed.
 			 */
+			*iter = block->next;
+
 #ifdef FIXED_HEAP
 			ms_free_block (block);
 #else
-			*iter = block->next;
-
 			ms_free_block (block->block);
+
 			mono_sgen_free_internal (block, INTERNAL_MEM_MS_BLOCK_INFO);
 #endif
 
 			--num_major_sections;
 		}
 	}
+
+	for (i = 0; i < num_block_obj_sizes; ++i) {
+		float usage = (float)slots_used [i] / (float)slots_available [i];
+		if (num_blocks [i] > 5 && usage < evacuation_threshold) {
+			evacuate_block_obj_sizes [i] = TRUE;
+			/*
+			g_print ("slot size %d - %d of %d used\n",
+					block_obj_sizes [i], slots_used [i], slots_available [i]);
+			*/
+		} else {
+			evacuate_block_obj_sizes [i] = FALSE;
+		}
+	}
+
+	have_swept = TRUE;
+}
+
+static void*
+ms_sweep_thread_func (void *dummy)
+{
+	g_assert (concurrent_sweep);
+
+	for (;;) {
+		int result;
+
+		while ((result = MONO_SEM_WAIT (&ms_sweep_cmd_semaphore)) != 0) {
+			if (errno != EINTR)
+				g_error ("MONO_SEM_WAIT");
+		}
+
+		ms_sweep ();
+
+		ms_signal_sweep_done ();
+	}
+
+	return NULL;
+}
+
+static void
+major_sweep (void)
+{
+	if (concurrent_sweep) {
+		if (!ms_sweep_thread)
+			pthread_create (&ms_sweep_thread, NULL, ms_sweep_thread_func, NULL);
+
+		ms_signal_sweep_command ();
+	} else {
+		ms_sweep ();
+	}
 }
 
 static int count_pinned_ref;
@@ -1112,6 +1380,8 @@ static int old_num_major_sections;
 static void
 major_start_nursery_collection (void)
 {
+	ms_wait_for_sweep_done ();
+
 #ifdef MARKSWEEP_CONSISTENCY_CHECK
 	consistency_check ();
 #endif
@@ -1129,11 +1399,37 @@ major_finish_nursery_collection (void)
 }
 
 static void
+major_start_major_collection (void)
+{
+	int i;
+
+	ms_wait_for_sweep_done ();
+
+	/* clear the free lists */
+	for (i = 0; i < num_block_obj_sizes; ++i) {
+		if (!evacuate_block_obj_sizes [i])
+			continue;
+
+		free_block_lists [0][i] = NULL;
+		free_block_lists [MS_BLOCK_FLAG_REFS][i] = NULL;
+	}
+}
+
+static void
 major_finish_major_collection (void)
 {
+}
+
+static void
+major_have_computer_minor_collection_allowance (void)
+{
 #ifndef FIXED_HEAP
 	int section_reserve = mono_sgen_get_minor_collection_allowance () / MS_BLOCK_SIZE;
 
+	g_assert (have_swept);
+	ms_wait_for_sweep_done ();
+	g_assert (!ms_sweep_in_progress);
+
 	/*
 	 * FIXME: We don't free blocks on 32 bit platforms because it
 	 * can lead to address space fragmentation, since we're
@@ -1212,18 +1508,35 @@ get_num_major_sections (void)
 	return num_major_sections;
 }
 
-#ifdef FIXED_HEAP
 static gboolean
 major_handle_gc_param (const char *opt)
 {
+#ifdef FIXED_HEAP
 	if (g_str_has_prefix (opt, "major-heap-size=")) {
 		const char *arg = strchr (opt, '=') + 1;
 		glong size;
-		if (!mono_sgen_parse_environment_string_extract_number (arg, &size))
+		if (!mono_gc_parse_environment_string_extract_number (arg, &size))
 			return FALSE;
 		ms_heap_num_blocks = (size + MS_BLOCK_SIZE - 1) / MS_BLOCK_SIZE;
 		g_assert (ms_heap_num_blocks > 0);
 		return TRUE;
+	} else
+#endif
+	if (g_str_has_prefix (opt, "evacuation-threshold=")) {
+		const char *arg = strchr (opt, '=') + 1;
+		int percentage = atoi (arg);
+		if (percentage < 0 || percentage > 100) {
+			fprintf (stderr, "evacuation-threshold must be an integer in the range 0-100.\n");
+			exit (1);
+		}
+		evacuation_threshold = (float)percentage / 100.0;
+		return TRUE;
+	} else if (!strcmp (opt, "concurrent-sweep")) {
+		concurrent_sweep = TRUE;
+		return TRUE;
+	} else if (!strcmp (opt, "no-concurrent-sweep")) {
+		concurrent_sweep = FALSE;
+		return TRUE;
 	}
 
 	return FALSE;
@@ -1232,9 +1545,15 @@ major_handle_gc_param (const char *opt)
 static void
 major_print_gc_param_usage (void)
 {
-	fprintf (stderr, "  major-heap-size=N (where N is an integer, possibly with a k, m or a g suffix)\n");
-}
+	fprintf (stderr,
+			""
+#ifdef FIXED_HEAP
+			"  major-heap-size=N (where N is an integer, possibly with a k, m or a g suffix)\n"
 #endif
+			"  evacuation-threshold=P (where P is a percentage, an integer in 0-100)\n"
+			"  (no-)concurrent-sweep\n"
+			);
+}
 
 #ifdef SGEN_HAVE_CARDTABLE
 static void
@@ -1248,43 +1567,148 @@ major_iterate_live_block_ranges (sgen_cardtable_block_callback callback)
 	} END_FOREACH_BLOCK;
 }
 
+#define CARD_WORDS_PER_BLOCK (CARDS_PER_BLOCK / SIZEOF_VOID_P)
+/*
+ * MS blocks are 16K aligned.
+ * Cardtables are 4K aligned, at least.
+ * This means that the cardtable of a given block is 32 bytes aligned.
+ */
+static guint8*
+initial_skip_card (guint8 *card_data)
+{
+	mword *cards = (mword*)card_data;
+	mword card;
+	int i;
+	for (i = 0; i < CARD_WORDS_PER_BLOCK; ++i) {
+		card = cards [i];
+		if (card)
+			break;
+	}
+
+	if (i == CARD_WORDS_PER_BLOCK)
+		return card_data + CARDS_PER_BLOCK;
+
+#if defined(__i386__) && defined(__GNUC__)
+	return card_data + i * 4 +  (__builtin_ffs (card) - 1) / 8;
+#elif defined(__x86_64__) && defined(__GNUC__)
+	return card_data + i * 8 +  (__builtin_ffsll (card) - 1) / 8;
+#else
+	for (i = i * SIZEOF_VOID_P; i < CARDS_PER_BLOCK; ++i) {
+		if (card_data [i])
+			return &card_data [i];
+	}
+	return card_data;
+#endif
+}
+
+
+static G_GNUC_UNUSED guint8*
+skip_card (guint8 *card_data, guint8 *card_data_end)
+{
+	while (card_data < card_data_end && !*card_data)
+		++card_data;
+	return card_data;
+}
+
+#define MS_BLOCK_OBJ_INDEX_FAST(o,b,os)	(((char*)(o) - ((b) + MS_BLOCK_SKIP)) / (os))
+#define MS_BLOCK_OBJ_FAST(b,os,i)			((b) + MS_BLOCK_SKIP + (os) * (i))
+#define MS_OBJ_ALLOCED_FAST(o,b)		(*(void**)(o) && (*(char**)(o) < (b) || *(char**)(o) >= (b) + MS_BLOCK_SIZE))
+
 static void
 major_scan_card_table (SgenGrayQueue *queue)
 {
 	MSBlockInfo *block;
 
 	FOREACH_BLOCK (block) {
-		int i;
-		int block_obj_size = block->obj_size;
-		char *start = block->block;
+		int block_obj_size;
+		char *block_start;
 
 		if (!block->has_references)
 			continue;
 
-		for (i = 0; i < CARDS_PER_BLOCK; ++i, start += CARD_SIZE_IN_BYTES) {
-			int index;
-			char *obj, *end;
+		block_obj_size = block->obj_size;
+		block_start = block->block;
+
+		if (block_obj_size >= CARD_SIZE_IN_BYTES) {
+			guint8 *cards;
+#ifndef SGEN_HAVE_OVERLAPPING_CARDS
+			guint8 cards_data [CARDS_PER_BLOCK];
+#endif
+			char *obj, *end, *base;
 
-			if (!sgen_card_table_card_begin_scanning ((mword)start))
+			/*We can avoid the extra copy since the remark cardtable was cleaned before */
+#ifdef SGEN_HAVE_OVERLAPPING_CARDS
+			cards = sgen_card_table_get_card_scan_address ((mword)block_start);
+#else
+			cards = cards_data;
+			if (!sgen_card_table_get_card_data (cards_data, (mword)block_start, CARDS_PER_BLOCK))
 				continue;
+#endif
 
-			end = start + CARD_SIZE_IN_BYTES;
-			if (i == 0)
-				index = 0;
-			else
-				index = MS_BLOCK_OBJ_INDEX (start, block);
+			obj = (char*)MS_BLOCK_OBJ_FAST (block_start, block_obj_size, 0);
+			end = block_start + MS_BLOCK_SIZE;
+			base = sgen_card_table_align_pointer (obj);
 
-			obj = (char*)MS_BLOCK_OBJ (block, index);
 			while (obj < end) {
-				if (MS_OBJ_ALLOCED (obj, block))
-					minor_scan_object (obj, queue);
+				if (MS_OBJ_ALLOCED_FAST (obj, block_start)) {
+					int card_offset = (obj - base) >> CARD_BITS;
+					sgen_cardtable_scan_object (obj, block_obj_size, cards + card_offset, queue);
+				}
 				obj += block_obj_size;
 			}
+		} else {
+			guint8 *card_data, *card_base;
+			guint8 *card_data_end;
+
+			/*
+			 * This is safe in face of card aliasing for the following reason:
+			 *
+			 * Major blocks are 16k aligned, or 32 cards aligned.
+			 * Cards aliasing happens in powers of two, so as long as major blocks are aligned to their
+			 * sizes, they won't overflow the cardtable overlap modulus.
+			 */
+			card_data = card_base = sgen_card_table_get_card_scan_address ((mword)block_start);
+			card_data_end = card_data + CARDS_PER_BLOCK;
+
+			for (card_data = initial_skip_card (card_data); card_data < card_data_end; ++card_data) { //card_data = skip_card (card_data + 1, card_data_end)) {
+				int index;
+				int idx = card_data - card_base;
+				char *start = (char*)(block_start + idx * CARD_SIZE_IN_BYTES);
+				char *end = start + CARD_SIZE_IN_BYTES;
+				char *obj;
+
+				if (!*card_data)
+					continue;
+				sgen_card_table_prepare_card_for_scanning (card_data);
+
+				if (idx == 0)
+					index = 0;
+				else
+					index = MS_BLOCK_OBJ_INDEX_FAST (start, block_start, block_obj_size);
+
+				obj = (char*)MS_BLOCK_OBJ_FAST (block_start, block_obj_size, index);
+				while (obj < end) {
+					if (MS_OBJ_ALLOCED_FAST (obj, block_start))
+						minor_scan_object (obj, queue);
+					obj += block_obj_size;
+				}
+			}
 		}
 	} END_FOREACH_BLOCK;
 }
 #endif
 
+static gboolean
+major_is_worker_thread (pthread_t thread)
+{
+	if (concurrent_sweep)
+		return thread == ms_sweep_thread;
+	else
+		return FALSE;
+}
+
+#undef pthread_create
+
 void
 #ifdef SGEN_PARALLEL_MARK
 #ifdef FIXED_HEAP
@@ -1311,6 +1735,10 @@ mono_sgen_marksweep_init
 	block_obj_sizes = mono_sgen_alloc_internal_dynamic (sizeof (int) * num_block_obj_sizes, INTERNAL_MEM_MS_TABLES);
 	ms_calculate_block_obj_sizes (MS_BLOCK_OBJ_SIZE_FACTOR, block_obj_sizes);
 
+	evacuate_block_obj_sizes = mono_sgen_alloc_internal_dynamic (sizeof (gboolean) * num_block_obj_sizes, INTERNAL_MEM_MS_TABLES);
+	for (i = 0; i < num_block_obj_sizes; ++i)
+		evacuate_block_obj_sizes [i] = FALSE;
+
 	/*
 	{
 		int i;
@@ -1332,6 +1760,15 @@ mono_sgen_marksweep_init
 
 	mono_counters_register ("# major blocks allocated", MONO_COUNTER_GC | MONO_COUNTER_LONG, &stat_major_blocks_alloced);
 	mono_counters_register ("# major blocks freed", MONO_COUNTER_GC | MONO_COUNTER_LONG, &stat_major_blocks_freed);
+	mono_counters_register ("# major objects evacuated", MONO_COUNTER_GC | MONO_COUNTER_LONG, &stat_major_objects_evacuated);
+	mono_counters_register ("Wait for sweep time", MONO_COUNTER_GC | MONO_COUNTER_LONG, &stat_time_wait_for_sweep);
+
+	/*
+	 * FIXME: These are superfluous if concurrent sweep is
+	 * disabled.  We might want to create them lazily.
+	 */
+	MONO_SEM_INIT (&ms_sweep_cmd_semaphore, 0);
+	MONO_SEM_INIT (&ms_sweep_done_semaphore, 0);
 
 	collector->section_size = MAJOR_SECTION_SIZE;
 #ifdef SGEN_PARALLEL_MARK
@@ -1339,7 +1776,9 @@ mono_sgen_marksweep_init
 #else
 	collector->is_parallel = FALSE;
 #endif
-	collector->supports_cardtable = !collector->is_parallel;
+	collector->supports_cardtable = TRUE;
+
+	collector->have_swept = &have_swept;
 
 	collector->alloc_heap = major_alloc_heap;
 	collector->is_object_live = major_is_object_live;
@@ -1354,7 +1793,7 @@ mono_sgen_marksweep_init
 	collector->pin_objects = major_pin_objects;
 #ifdef SGEN_HAVE_CARDTABLE
 	collector->scan_card_table = major_scan_card_table;
-	collector->iterate_live_block_ranges = major_iterate_live_block_ranges;
+	collector->iterate_live_block_ranges = (void*)(void*) major_iterate_live_block_ranges;
 #endif
 	collector->init_to_space = major_init_to_space;
 	collector->sweep = major_sweep;
@@ -1363,21 +1802,24 @@ mono_sgen_marksweep_init
 	collector->get_used_size = major_get_used_size;
 	collector->start_nursery_collection = major_start_nursery_collection;
 	collector->finish_nursery_collection = major_finish_nursery_collection;
+	collector->start_major_collection = major_start_major_collection;
 	collector->finish_major_collection = major_finish_major_collection;
+	collector->have_computed_minor_collection_allowance = major_have_computer_minor_collection_allowance;
 	collector->ptr_is_in_non_pinned_space = major_ptr_is_in_non_pinned_space;
 	collector->obj_is_from_pinned_alloc = obj_is_from_pinned_alloc;
 	collector->report_pinned_memory_usage = major_report_pinned_memory_usage;
 	collector->get_num_major_sections = get_num_major_sections;
-#ifdef FIXED_HEAP
 	collector->handle_gc_param = major_handle_gc_param;
 	collector->print_gc_param_usage = major_print_gc_param_usage;
-#else
-	collector->handle_gc_param = NULL;
-	collector->print_gc_param_usage = NULL;
-#endif
+	collector->is_worker_thread = major_is_worker_thread;
 
 	FILL_COLLECTOR_COPY_OBJECT (collector);
 	FILL_COLLECTOR_SCAN_OBJECT (collector);
+
+#ifdef SGEN_HAVE_CARDTABLE
+	/*cardtable requires major pages to be 8 cards aligned*/
+	g_assert ((MS_BLOCK_SIZE % (8 * CARD_SIZE_IN_BYTES)) == 0);
+#endif
 }
 
 #endif
diff --git a/mono/metadata/sgen-pinning.c b/mono/metadata/sgen-pinning.c
index a90cf3d..bd28cdf 100644
--- a/mono/metadata/sgen-pinning.c
+++ b/mono/metadata/sgen-pinning.c
@@ -125,3 +125,18 @@ mono_sgen_find_section_pin_queue_start_end (GCMemSection *section)
 	section->pin_queue_start = mono_sgen_find_optimized_pin_queue_area (section->data, section->end_data, &section->pin_queue_num_entries);
 	DEBUG (6, fprintf (gc_debug_file, "Found %d pinning addresses in section %p\n", section->pin_queue_num_entries, section));
 }
+
+static void
+mono_sgen_pin_queue_clear_discarded_entries (GCMemSection *section, int max_pin_slot)
+{
+	void **start = section->pin_queue_start + section->pin_queue_num_entries;
+	void **end = pin_queue + max_pin_slot;
+	void *addr;
+
+	for (; start < end; ++start) {
+		addr = *start;
+		if ((char*)addr < section->data || (char*)addr > section->end_data)
+			break;
+		*start = NULL;
+	}
+}
diff --git a/mono/metadata/sgen-protocol.c b/mono/metadata/sgen-protocol.c
index f82486d..44ff0de 100644
--- a/mono/metadata/sgen-protocol.c
+++ b/mono/metadata/sgen-protocol.c
@@ -68,6 +68,8 @@ binary_protocol_flush_buffers (gboolean force)
 
 	binary_protocol_flush_buffers_rec (binary_protocol_buffers);
 	binary_protocol_buffers = NULL;
+
+	fflush (binary_protocol_file);
 }
 
 static BinaryProtocolBuffer*
@@ -118,6 +120,9 @@ protocol_entry (unsigned char type, gpointer data, int size)
 	if (InterlockedCompareExchange (&buffer->index, index + 1 + size, index) != index)
 		goto retry_same_buffer;
 
+	/* FIXME: if we're interrupted at this point, we have a buffer
+	   entry that contains random data. */
+
 	buffer->buffer [index++] = type;
 	memcpy (buffer->buffer + index, data, size);
 	index += size;
diff --git a/mono/metadata/sgen-scan-object.h b/mono/metadata/sgen-scan-object.h
index b10f5d6..d5a637e 100644
--- a/mono/metadata/sgen-scan-object.h
+++ b/mono/metadata/sgen-scan-object.h
@@ -46,7 +46,6 @@
 
 {
 	GCVTable *vt;
-	size_t skip_size;
 	mword desc;
 
 	vt = (GCVTable*)SGEN_LOAD_VTABLE (start);
@@ -56,68 +55,55 @@
 	desc = vt->desc;
 	switch (desc & 0x7) {
 	case DESC_TYPE_RUN_LENGTH:
-		OBJ_RUN_LEN_SIZE (skip_size, desc, start);
 #define SCAN OBJ_RUN_LEN_FOREACH_PTR (desc, start)
 #ifndef SCAN_OBJECT_NOSCAN
 		SCAN;
 #endif
 		SCAN_OBJECT_ACTION;
 #undef SCAN
-		start += skip_size;
 		break;
 	case DESC_TYPE_ARRAY:
 	case DESC_TYPE_VECTOR:
-		skip_size = SGEN_ALIGN_UP (mono_sgen_safe_object_get_size ((MonoObject*)start));
 #define SCAN OBJ_VECTOR_FOREACH_PTR (vt, start)
 #ifndef SCAN_OBJECT_NOSCAN
 		SCAN;
 #endif
 		SCAN_OBJECT_ACTION;
 #undef SCAN
-		start += skip_size;
 		break;
 	case DESC_TYPE_SMALL_BITMAP:
-		OBJ_BITMAP_SIZE (skip_size, desc, start);
-		g_assert (skip_size);
 #define SCAN OBJ_BITMAP_FOREACH_PTR (desc, start)
 #ifndef SCAN_OBJECT_NOSCAN
 		SCAN;
 #endif
 		SCAN_OBJECT_ACTION;
 #undef SCAN
-		start += skip_size;
 		break;
 	case DESC_TYPE_LARGE_BITMAP:
-		skip_size = SGEN_ALIGN_UP (mono_sgen_safe_object_get_size ((MonoObject*)start));
 #define SCAN OBJ_LARGE_BITMAP_FOREACH_PTR (vt,start)
 #ifndef SCAN_OBJECT_NOSCAN
 		SCAN;
 #endif
 		SCAN_OBJECT_ACTION;
 #undef SCAN
-		start += skip_size;
 		break;
 	case DESC_TYPE_COMPLEX:
 		/* this is a complex object */
-		skip_size = SGEN_ALIGN_UP (mono_sgen_safe_object_get_size ((MonoObject*)start));
 #define SCAN OBJ_COMPLEX_FOREACH_PTR (vt, start)
 #ifndef SCAN_OBJECT_NOSCAN
 		SCAN;
 #endif
 		SCAN_OBJECT_ACTION;
 #undef SCAN
-		start += skip_size;
 		break;
 	case DESC_TYPE_COMPLEX_ARR:
 		/* this is an array of complex structs */
-		skip_size = SGEN_ALIGN_UP (mono_sgen_safe_object_get_size ((MonoObject*)start));
 #define SCAN OBJ_COMPLEX_ARR_FOREACH_PTR (vt, start)
 #ifndef SCAN_OBJECT_NOSCAN
 		SCAN;
 #endif
 		SCAN_OBJECT_ACTION;
 #undef SCAN
-		start += skip_size;
 		break;
 	default:
 		g_assert_not_reached ();
diff --git a/mono/metadata/sgen-workers.c b/mono/metadata/sgen-workers.c
index bdc6242..8475a58 100644
--- a/mono/metadata/sgen-workers.c
+++ b/mono/metadata/sgen-workers.c
@@ -313,6 +313,9 @@ mono_sgen_is_worker_thread (pthread_t thread)
 {
 	int i;
 
+	if (major_collector.is_worker_thread && major_collector.is_worker_thread (thread))
+		return TRUE;
+
 	if (!major_collector.is_parallel)
 		return FALSE;
 
diff --git a/mono/metadata/socket-io.c b/mono/metadata/socket-io.c
index d38bb8b..1a62826 100644
--- a/mono/metadata/socket-io.c
+++ b/mono/metadata/socket-io.c
@@ -71,7 +71,7 @@
 
 #include "mono/io-layer/socket-wrappers.h"
 
-#ifdef HOST_WIN32
+#if defined(HOST_WIN32)
 /* This is a kludge to make this file build under cygwin:
  * w32api/ws2tcpip.h has definitions for some AF_INET6 values and
  * prototypes for some but not all required functions (notably
@@ -553,6 +553,7 @@ static gint32 convert_sockopt_level_and_name(MonoSocketOptionLevel mono_level,
 
 		switch(mono_name) {
 		case SocketOptionName_IpTimeToLive:
+		case SocketOptionName_HopLimit:
 			*system_name = IPV6_UNICAST_HOPS;
 			break;
 		case SocketOptionName_MulticastInterface:
@@ -1020,52 +1021,88 @@ static MonoObject *create_object_from_sockaddr(struct sockaddr *saddr,
 	}
 }
 
-extern MonoObject *ves_icall_System_Net_Sockets_Socket_LocalEndPoint_internal(SOCKET sock, gint32 *error)
+static int
+get_sockaddr_size (int family)
+{
+	int size;
+
+	size = 0;
+	if (family == AF_INET) {
+		size = sizeof (struct sockaddr_in);
+#ifdef AF_INET6
+	} else if (family == AF_INET6) {
+		size = sizeof (struct sockaddr_in6);
+#endif
+#ifdef HAVE_SYS_UN_H
+	} else if (family == AF_UNIX) {
+		size = sizeof (struct sockaddr_un);
+#endif
+	}
+	return size;
+}
+
+extern MonoObject *ves_icall_System_Net_Sockets_Socket_LocalEndPoint_internal(SOCKET sock, gint32 af, gint32 *error)
 {
-	gchar sa[32];	/* sockaddr in not big enough for sockaddr_in6 */
+	gchar *sa;
 	socklen_t salen;
 	int ret;
+	MonoObject *result;
 	
 	MONO_ARCH_SAVE_REGS;
 
 	*error = 0;
 	
-	salen=sizeof(sa);
+	salen = get_sockaddr_size (convert_family (af));
+	if (salen == 0) {
+		*error = WSAEAFNOSUPPORT;
+		return NULL;
+	}
+	sa = g_malloc0 (salen);
 	ret = _wapi_getsockname (sock, (struct sockaddr *)sa, &salen);
 	
 	if(ret==SOCKET_ERROR) {
 		*error = WSAGetLastError ();
+		g_free (sa);
 		return(NULL);
 	}
 	
 	LOGDEBUG (g_message("%s: bound to %s port %d", __func__, inet_ntoa(((struct sockaddr_in *)&sa)->sin_addr), ntohs(((struct sockaddr_in *)&sa)->sin_port)));
 
-	return(create_object_from_sockaddr((struct sockaddr *)sa, salen,
-					   error));
+	result = create_object_from_sockaddr((struct sockaddr *)sa, salen, error);
+	g_free (sa);
+	return result;
 }
 
-extern MonoObject *ves_icall_System_Net_Sockets_Socket_RemoteEndPoint_internal(SOCKET sock, gint32 *error)
+extern MonoObject *ves_icall_System_Net_Sockets_Socket_RemoteEndPoint_internal(SOCKET sock, gint32 af, gint32 *error)
 {
-	gchar sa[32];	/* sockaddr in not big enough for sockaddr_in6 */
+	gchar *sa;
 	socklen_t salen;
 	int ret;
+	MonoObject *result;
 	
 	MONO_ARCH_SAVE_REGS;
 
 	*error = 0;
 	
-	salen=sizeof(sa);
+	salen = get_sockaddr_size (convert_family (af));
+	if (salen == 0) {
+		*error = WSAEAFNOSUPPORT;
+		return NULL;
+	}
+	sa = g_malloc0 (salen);
+	/* Note: linux returns just 2 for AF_UNIX. Always. */
 	ret = _wapi_getpeername (sock, (struct sockaddr *)sa, &salen);
-	
 	if(ret==SOCKET_ERROR) {
 		*error = WSAGetLastError ();
+		g_free (sa);
 		return(NULL);
 	}
 	
 	LOGDEBUG (g_message("%s: connected to %s port %d", __func__, inet_ntoa(((struct sockaddr_in *)&sa)->sin_addr), ntohs(((struct sockaddr_in *)&sa)->sin_port)));
 
-	return(create_object_from_sockaddr((struct sockaddr *)sa, salen,
-					   error));
+	result = create_object_from_sockaddr((struct sockaddr *)sa, salen, error);
+	g_free (sa);
+	return result;
 }
 
 static struct sockaddr *create_sockaddr_from_object(MonoObject *saddr_obj,
@@ -2813,7 +2850,7 @@ MonoBoolean ves_icall_System_Net_Dns_GetHostByName_internal(MonoString *host, Mo
 	memset(&hints, 0, sizeof(hints));
 	hints.ai_family = get_family_hint ();
 	hints.ai_socktype = SOCK_STREAM;
-	hints.ai_flags = AI_CANONNAME | AI_ADDRCONFIG;
+	hints.ai_flags = AI_CANONNAME;
 
 	if (*hostname && getaddrinfo(hostname, NULL, &hints, &info) == -1) {
 		return(FALSE);
diff --git a/mono/metadata/socket-io.h b/mono/metadata/socket-io.h
index 3408c16..0e0e16e 100644
--- a/mono/metadata/socket-io.h
+++ b/mono/metadata/socket-io.h
@@ -131,6 +131,7 @@ typedef enum {
 	SocketOptionName_Expedited=2,
 	SocketOptionName_NoChecksum=1,
 	SocketOptionName_ChecksumCoverage=20,
+	SocketOptionName_HopLimit=21,
 
 	/* This is Mono-specific, keep it in sync with
 	 * Mono.Posix/PeerCred.cs
@@ -179,6 +180,7 @@ typedef struct _MonoSocketAsyncResult {
 	gint error;
 	gint operation;
 	MonoAsyncResult *ares;
+	gint32 end_called;
 } MonoSocketAsyncResult;
 
 typedef struct
@@ -196,8 +198,8 @@ extern gint32 ves_icall_System_Net_Sockets_Socket_Available_internal(SOCKET sock
 extern void ves_icall_System_Net_Sockets_Socket_Blocking_internal(SOCKET sock, gboolean block, gint32 *error) MONO_INTERNAL;
 extern gpointer ves_icall_System_Net_Sockets_Socket_Accept_internal(SOCKET sock, gint32 *error, gboolean blocking) MONO_INTERNAL;
 extern void ves_icall_System_Net_Sockets_Socket_Listen_internal(SOCKET sock, guint32 backlog, gint32 *error) MONO_INTERNAL;
-extern MonoObject *ves_icall_System_Net_Sockets_Socket_LocalEndPoint_internal(SOCKET sock, gint32 *error) MONO_INTERNAL;
-extern MonoObject *ves_icall_System_Net_Sockets_Socket_RemoteEndPoint_internal(SOCKET sock, gint32 *error) MONO_INTERNAL;
+extern MonoObject *ves_icall_System_Net_Sockets_Socket_LocalEndPoint_internal(SOCKET sock, gint32 af, gint32 *error) MONO_INTERNAL;
+extern MonoObject *ves_icall_System_Net_Sockets_Socket_RemoteEndPoint_internal(SOCKET sock, gint32 af, gint32 *error) MONO_INTERNAL;
 extern void ves_icall_System_Net_Sockets_Socket_Bind_internal(SOCKET sock, MonoObject *sockaddr, gint32 *error) MONO_INTERNAL;
 extern void ves_icall_System_Net_Sockets_Socket_Connect_internal(SOCKET sock, MonoObject *sockaddr, gint32 *error) MONO_INTERNAL;
 extern gint32 ves_icall_System_Net_Sockets_Socket_Receive_internal(SOCKET sock, MonoArray *buffer, gint32 offset, gint32 count, gint32 flags, gint32 *error) MONO_INTERNAL;
diff --git a/mono/metadata/string-icalls.c b/mono/metadata/string-icalls.c
index 6dd333f..8fef67e 100644
--- a/mono/metadata/string-icalls.c
+++ b/mono/metadata/string-icalls.c
@@ -216,9 +216,13 @@ ves_icall_System_String_InternalAllocateStr (gint32 length)
 MonoString  *
 ves_icall_System_String_InternalIntern (MonoString *str)
 {
+	MonoString *res;
 	MONO_ARCH_SAVE_REGS;
 
-	return mono_string_intern(str);
+	res = mono_string_intern(str);
+	if (!res)
+		mono_raise_exception (mono_domain_get ()->out_of_memory_ex);
+	return res;
 }
 
 MonoString * 
diff --git a/mono/metadata/threadpool.c b/mono/metadata/threadpool.c
index d5d9758..105ecf3 100644
--- a/mono/metadata/threadpool.c
+++ b/mono/metadata/threadpool.c
@@ -19,6 +19,7 @@
 #endif
 
 #include <mono/metadata/domain-internals.h>
+#include <mono/metadata/profiler-private.h>
 #include <mono/metadata/tabledefs.h>
 #include <mono/metadata/threads.h>
 #include <mono/metadata/threads-types.h>
@@ -204,9 +205,129 @@ enum {
 	AIO_OP_RECV_JUST_CALLBACK,
 	AIO_OP_SEND_JUST_CALLBACK,
 	AIO_OP_READPIPE,
+	AIO_OP_CONSOLE2,
+	AIO_OP_DISCONNECT,
+	AIO_OP_ACCEPTRECEIVE,
+	AIO_OP_RECEIVE_BUFFERS,
+	AIO_OP_SEND_BUFFERS,
 	AIO_OP_LAST
 };
 
+/*
+ * Functions to check whenever a class is given system class. We need to cache things in MonoDomain since some of the
+ * assemblies can be unloaded.
+ */
+
+static gboolean
+is_system_type (MonoDomain *domain, MonoClass *klass)
+{
+	if (domain->system_image == NULL)
+		domain->system_image = mono_image_loaded ("System");
+
+	return klass->image == domain->system_image;
+}
+
+static gboolean
+is_corlib_type (MonoDomain *domain, MonoClass *klass)
+{
+	return klass->image == mono_defaults.corlib;
+}
+
+/*
+ * Note that we call it is_socket_type() where 'socket' refers to the image
+ * that contains the System.Net.Sockets.Socket type.
+ * For moonlight there is a System.Net.Sockets.Socket class in both System.dll and System.Net.dll.
+*/
+static gboolean
+is_socket_type (MonoDomain *domain, MonoClass *klass)
+{
+	static const char *version = NULL;
+	static gboolean moonlight;
+
+	if (is_system_type (domain, klass))
+		return TRUE;
+
+	/* If moonlight, check if the type is in System.Net.dll too */
+	if (version == NULL) {
+		version = mono_get_runtime_info ()->framework_version;
+		moonlight = !strcmp (version, "2.1");
+	}
+
+	if (!moonlight)
+		return FALSE;
+
+	if (domain->system_net_dll == NULL)
+		domain->system_net_dll = mono_image_loaded ("System.Net");
+	
+	return klass->image == domain->system_net_dll;
+}
+
+#define check_type_cached(domain, ASSEMBLY, _class, _namespace, _name, loc) do { \
+	if (*loc) \
+		return *loc == _class; \
+	if (is_##ASSEMBLY##_type (domain, _class) && !strcmp (_name, _class->name) && !strcmp (_namespace, _class->name_space)) { \
+		*loc = _class; \
+		return TRUE; \
+	} \
+	return FALSE; \
+} while (0) \
+
+#define check_corlib_type_cached(domain, _class, _namespace, _name, loc) check_type_cached (domain, corlib, _class, _namespace, _name, loc)
+
+#define check_socket_type_cached(domain, _class, _namespace, _name, loc) check_type_cached (domain, socket, _class, _namespace, _name, loc)
+
+#define check_system_type_cached(domain, _class, _namespace, _name, loc) check_type_cached (domain, system, _class, _namespace, _name, loc)
+
+static gboolean
+is_corlib_asyncresult (MonoDomain *domain, MonoClass *klass)
+{
+	check_corlib_type_cached (domain, klass, "System.Runtime.Remoting.Messaging", "AsyncResult", &domain->corlib_asyncresult_class);
+}
+
+static gboolean
+is_socket (MonoDomain *domain, MonoClass *klass)
+{
+	check_socket_type_cached (domain, klass, "System.Net.Sockets", "Socket", &domain->socket_class);
+}
+
+static gboolean
+is_socketasyncresult (MonoDomain *domain, MonoClass *klass)
+{
+	return (klass->nested_in &&
+			is_socket (domain, klass->nested_in) &&
+			!strcmp (klass->name, "SocketAsyncResult"));
+}
+
+static gboolean
+is_socketasynccall (MonoDomain *domain, MonoClass *klass)
+{
+	return (klass->nested_in &&
+			is_socket (domain, klass->nested_in) &&
+			!strcmp (klass->name, "SocketAsyncCall"));
+}
+
+static gboolean
+is_appdomainunloaded_exception (MonoDomain *domain, MonoClass *klass)
+{
+	check_corlib_type_cached (domain, klass, "System", "AppDomainUnloadedException", &domain->ad_unloaded_ex_class);
+}
+
+static gboolean
+is_sd_process (MonoDomain *domain, MonoClass *klass)
+{
+	check_system_type_cached (domain, klass, "System.Diagnostics", "Process", &domain->process_class);
+}
+
+static gboolean
+is_sdp_asyncreadhandler (MonoDomain *domain, MonoClass *klass)
+{
+
+	return (klass->nested_in &&
+			is_sd_process (domain, klass->nested_in) &&
+		!strcmp (klass->name, "AsyncReadHandler"));
+}
+
+
 #ifdef DISABLE_SOCKETS
 
 #define socket_io_cleanup(x)
@@ -270,11 +391,15 @@ get_event_from_state (MonoSocketAsyncResult *state)
 	case AIO_OP_RECV_JUST_CALLBACK:
 	case AIO_OP_RECEIVEFROM:
 	case AIO_OP_READPIPE:
+	case AIO_OP_ACCEPTRECEIVE:
+	case AIO_OP_RECEIVE_BUFFERS:
 		return MONO_POLLIN;
 	case AIO_OP_SEND:
 	case AIO_OP_SEND_JUST_CALLBACK:
 	case AIO_OP_SENDTO:
 	case AIO_OP_CONNECT:
+	case AIO_OP_SEND_BUFFERS:
+	case AIO_OP_DISCONNECT:
 		return MONO_POLLOUT;
 	default: /* Should never happen */
 		g_message ("get_event_from_state: unknown value in switch!!!");
@@ -933,39 +1058,25 @@ static gboolean
 socket_io_filter (MonoObject *target, MonoObject *state)
 {
 	gint op;
-	MonoSocketAsyncResult *sock_res = (MonoSocketAsyncResult *) state;
+	MonoSocketAsyncResult *sock_res;
 	MonoClass *klass;
+	MonoDomain *domain;
 
 	if (target == NULL || state == NULL)
 		return FALSE;
 
-	if (socket_async_call_klass == NULL) {
-		klass = target->vtable->klass;
-		/* Check if it's SocketAsyncCall in System.Net.Sockets
-		 * FIXME: check the assembly is signed correctly for extra care
-		 */
-		if (klass->name [0] == 'S' && strcmp (klass->name, "SocketAsyncCall") == 0 
-				&& strcmp (mono_image_get_name (klass->image), "System") == 0
-				&& klass->nested_in && strcmp (klass->nested_in->name, "Socket") == 0)
-			socket_async_call_klass = klass;
-	}
+	domain = target->vtable->domain;
+	klass = target->vtable->klass;
+	if (socket_async_call_klass == NULL && is_socketasynccall (domain, klass))
+		socket_async_call_klass = klass;
 
-	if (process_async_call_klass == NULL) {
-		klass = target->vtable->klass;
-		/* Check if it's AsyncReadHandler in System.Diagnostics.Process
-		 * FIXME: check the assembly is signed correctly for extra care
-		 */
-		if (klass->name [0] == 'A' && strcmp (klass->name, "AsyncReadHandler") == 0 
-				&& strcmp (mono_image_get_name (klass->image), "System") == 0
-				&& klass->nested_in && strcmp (klass->nested_in->name, "Process") == 0)
-			process_async_call_klass = klass;
-	}
-	/* return both when socket_async_call_klass has not been seen yet and when
-	 * the object is not an instance of the class.
-	 */
-	if (target->vtable->klass != socket_async_call_klass && target->vtable->klass != process_async_call_klass)
+	if (process_async_call_klass == NULL && is_sdp_asyncreadhandler (domain, klass))
+		process_async_call_klass = klass;
+
+	if (klass != socket_async_call_klass && klass != process_async_call_klass)
 		return FALSE;
 
+	sock_res = (MonoSocketAsyncResult *) state;
 	op = sock_res->operation;
 	if (op < AIO_OP_FIRST || op >= AIO_OP_LAST)
 		return FALSE;
@@ -1142,6 +1253,7 @@ monitor_thread (gpointer data)
 
 	tp = data;
 	thread = mono_thread_internal_current ();
+	ves_icall_System_Threading_Thread_SetName_internal (thread, mono_string_new (mono_domain_get (), "Threapool monitor"));
 	while (1) {
 		ms = 500;
 		do {
@@ -1200,14 +1312,14 @@ mono_thread_pool_init ()
 		}
 	}
 
-	MONO_GC_REGISTER_ROOT (async_tp.first);
-	MONO_GC_REGISTER_ROOT (async_tp.last);
-	MONO_GC_REGISTER_ROOT (async_tp.unused);
-	MONO_GC_REGISTER_ROOT (async_io_tp.first);
-	MONO_GC_REGISTER_ROOT (async_io_tp.unused);
-	MONO_GC_REGISTER_ROOT (async_io_tp.last);
+	MONO_GC_REGISTER_ROOT_SINGLE (async_tp.first);
+	MONO_GC_REGISTER_ROOT_SINGLE (async_tp.last);
+	MONO_GC_REGISTER_ROOT_SINGLE (async_tp.unused);
+	MONO_GC_REGISTER_ROOT_SINGLE (async_io_tp.first);
+	MONO_GC_REGISTER_ROOT_SINGLE (async_io_tp.unused);
+	MONO_GC_REGISTER_ROOT_SINGLE (async_io_tp.last);
 
-	MONO_GC_REGISTER_ROOT (socket_io_data.sock_to_state);
+	MONO_GC_REGISTER_ROOT_FIXED (socket_io_data.sock_to_state);
 	InitializeCriticalSection (&socket_io_data.io_lock);
 	if (g_getenv ("MONO_THREADS_PER_CPU") != NULL) {
 		threads_per_cpu = atoi (g_getenv ("MONO_THREADS_PER_CPU"));
@@ -1245,6 +1357,28 @@ mono_thread_pool_init ()
 #endif
 }
 
+static MonoAsyncResult *
+create_simple_asyncresult (MonoObject *target, MonoObject *state)
+{
+	MonoDomain *domain = mono_domain_get ();
+	MonoAsyncResult *ares;
+
+	/* Don't call mono_async_result_new() to avoid capturing the context */
+	ares = (MonoAsyncResult *) mono_object_new (domain, mono_defaults.asyncresult_class);
+	MONO_OBJECT_SETREF (ares, async_delegate, target);
+	MONO_OBJECT_SETREF (ares, async_state, state);
+	return ares;
+}
+
+void
+icall_append_io_job (MonoObject *target, MonoSocketAsyncResult *state)
+{
+	MonoAsyncResult *ares;
+
+	ares = create_simple_asyncresult (target, (MonoObject *) state);
+	socket_io_add (ares, state);
+}
+
 MonoAsyncResult *
 mono_thread_pool_add (MonoObject *target, MonoMethodMessage *msg, MonoDelegate *async_callback,
 		      MonoObject *state)
@@ -1650,9 +1784,15 @@ remove_wsq (MonoWSQ *wsq)
 	}
 	g_ptr_array_remove_fast (wsqs, wsq);
 	data = NULL;
-	while (mono_wsq_local_pop (&data)) {
-		threadpool_jobs_dec (data);
-		data = NULL;
+	/*
+	 * Only clean this up when shutting down, any other case will error out
+	 * if we're removing a queue that still has work items.
+	 */
+	if (mono_runtime_is_shutting_down ()) {
+		while (mono_wsq_local_pop (&data)) {
+			threadpool_jobs_dec (data);
+			data = NULL;
+		}
 	}
 	mono_wsq_destroy (wsq);
 	LeaveCriticalSection (&wsqs_lock);
@@ -1800,22 +1940,33 @@ async_invoke_thread (gpointer data)
 		wsq = add_wsq ();
 
 	thread = mono_thread_internal_current ();
+
+	mono_profiler_thread_start (thread->tid);
+	ves_icall_System_Threading_Thread_SetName_internal (thread, mono_string_new (mono_domain_get (), "Threapool worker"));
+
 	if (tp_start_func)
 		tp_start_func (tp_hooks_user_data);
+
 	data = NULL;
 	for (;;) {
 		MonoAsyncResult *ar;
+		MonoClass *klass;
 		gboolean is_io_task;
+		gboolean is_socket;
 		int n_naps = 0;
 
 		is_io_task = FALSE;
 		ar = (MonoAsyncResult *) data;
 		if (ar) {
 			InterlockedIncrement (&tp->busy_threads);
+			domain = ((MonoObject *)ar)->vtable->domain;
 #ifndef DISABLE_SOCKETS
-			is_io_task = (strcmp (((MonoObject *) data)->vtable->klass->name, "AsyncResult"));
+			klass = ((MonoObject *) data)->vtable->klass;
+			is_io_task = !is_corlib_asyncresult (domain, klass);
+			is_socket = FALSE;
 			if (is_io_task) {
 				MonoSocketAsyncResult *state = (MonoSocketAsyncResult *) data;
+				is_socket = is_socketasyncresult (domain, klass);
 				ar = state->ares;
 				switch (state->operation) {
 				case AIO_OP_RECEIVE:
@@ -1829,7 +1980,6 @@ async_invoke_thread (gpointer data)
 #endif
 			/* worker threads invokes methods in different domains,
 			 * so we need to set the right domain here */
-			domain = ((MonoObject *)ar)->vtable->domain;
 			g_assert (domain);
 
 			if (mono_domain_is_unloading (domain) || mono_runtime_is_shutting_down ()) {
@@ -1863,16 +2013,23 @@ async_invoke_thread (gpointer data)
 						MonoClass *klass;
 
 						klass = exc->vtable->klass;
-						unloaded = (klass->image == mono_defaults.corlib);
-						if (unloaded) {
-							unloaded = (!strcmp ("System", klass->name_space) &&
-								!strcmp ("AppDomainUnloadedException", klass->name));
-						}
-
+						unloaded = is_appdomainunloaded_exception (exc->vtable->domain, klass);
 						if (!unloaded && klass != mono_defaults.threadabortexception_class) {
 							mono_unhandled_exception (exc);
 							exit (255);
 						}
+						if (klass == mono_defaults.threadabortexception_class)
+							mono_thread_internal_reset_abort (thread);
+					}
+					if (is_socket && tp->is_io) {
+						MonoSocketAsyncResult *state = (MonoSocketAsyncResult *) data;
+
+						if (state->completed && state->callback) {
+							MonoAsyncResult *cb_ares;
+							cb_ares = create_simple_asyncresult ((MonoObject *) state->callback,
+												(MonoObject *) state);
+							icall_append_job ((MonoObject *) cb_ares);
+						}
 					}
 					mono_domain_set (mono_get_root_domain (), TRUE);
 				}
@@ -1918,7 +2075,7 @@ async_invoke_thread (gpointer data)
 			n_naps++;
 		}
 
-		if (!data && tp->is_io && !mono_runtime_is_shutting_down ()) {
+		if (!data && !tp->is_io && !mono_runtime_is_shutting_down ()) {
 			mono_wsq_local_pop (&data);
 			if (data && must_die) {
 				InterlockedCompareExchange (&tp->destroy_thread, 1, 0);
@@ -1940,6 +2097,9 @@ async_invoke_thread (gpointer data)
 					if (!tp->is_io) {
 						remove_wsq (wsq);
 					}
+
+					mono_profiler_thread_end (thread->tid);
+
 					if (tp_finish_func)
 						tp_finish_func (tp_hooks_user_data);
 					return;
diff --git a/mono/metadata/threadpool.h b/mono/metadata/threadpool.h
index 003ba6a..c860b7e 100644
--- a/mono/metadata/threadpool.h
+++ b/mono/metadata/threadpool.h
@@ -3,11 +3,13 @@
 
 #include <mono/metadata/object-internals.h>
 #include <mono/metadata/reflection.h>
+#include <mono/metadata/socket-io.h>
 
 /* No managed code here */
 void mono_thread_pool_init (void) MONO_INTERNAL;
 
 void icall_append_job (MonoObject *ar) MONO_INTERNAL;
+void icall_append_io_job (MonoObject *target, MonoSocketAsyncResult *state) MONO_INTERNAL;
 MonoAsyncResult *
 mono_thread_pool_add     (MonoObject *target, MonoMethodMessage *msg, 
 			  MonoDelegate *async_callback, MonoObject *state) MONO_INTERNAL;
diff --git a/mono/metadata/threads-types.h b/mono/metadata/threads-types.h
index d983e64..7ca33bc 100644
--- a/mono/metadata/threads-types.h
+++ b/mono/metadata/threads-types.h
@@ -52,12 +52,16 @@ typedef LPTHREAD_START_ROUTINE WapiThreadStart;
 
 typedef struct _MonoInternalThread MonoInternalThread;
 
+typedef void (*MonoThreadCleanupFunc) (MonoInternalThread* thread);
+
 gpointer mono_create_thread (WapiSecurityAttributes *security,
 							 guint32 stacksize, WapiThreadStart start,
 							 gpointer param, guint32 create, gsize *tid) MONO_INTERNAL;
 
 MonoInternalThread* mono_thread_create_internal (MonoDomain *domain, gpointer func, gpointer arg, gboolean threadpool_thread) MONO_INTERNAL;
 
+void mono_threads_install_cleanup (MonoThreadCleanupFunc func) MONO_INTERNAL;
+
 void ves_icall_System_Threading_Thread_ConstructInternalThread (MonoThread *this) MONO_INTERNAL;
 HANDLE ves_icall_System_Threading_Thread_Thread_internal(MonoThread *this_obj, MonoObject *start) MONO_INTERNAL;
 void ves_icall_System_Threading_InternalThread_Thread_free_internal(MonoInternalThread *this_obj, HANDLE thread) MONO_INTERNAL;
@@ -226,6 +230,7 @@ gint32* mono_thread_interruption_request_flag (void) MONO_INTERNAL;
 
 uint32_t mono_alloc_special_static_data (uint32_t static_type, uint32_t size, uint32_t align, uintptr_t *bitmap, int max_set) MONO_INTERNAL;
 void*    mono_get_special_static_data   (uint32_t offset) MONO_INTERNAL;
+gpointer mono_get_special_static_data_for_thread (MonoInternalThread *thread, guint32 offset) MONO_INTERNAL;
 
 MonoException* mono_thread_resume_interruption (void) MONO_INTERNAL;
 
diff --git a/mono/metadata/threads.c b/mono/metadata/threads.c
index 11b18a0..67081d6 100644
--- a/mono/metadata/threads.c
+++ b/mono/metadata/threads.c
@@ -45,6 +45,12 @@
 
 #include <mono/metadata/gc-internal.h>
 
+#ifdef PLATFORM_ANDROID
+#include <errno.h>
+
+extern int tkill (pid_t tid, int signal);
+#endif
+
 /*#define THREAD_DEBUG(a) do { a; } while (0)*/
 #define THREAD_DEBUG(a)
 /*#define THREAD_WAIT_DEBUG(a) do { a; } while (0)*/
@@ -256,7 +262,7 @@ static gboolean handle_store(MonoThread *thread)
 	}
 
 	if(threads==NULL) {
-		MONO_GC_REGISTER_ROOT (threads);
+		MONO_GC_REGISTER_ROOT_FIXED (threads);
 		threads=mono_g_hash_table_new_type (NULL, NULL, MONO_HASH_VALUE_GC);
 	}
 
@@ -331,6 +337,11 @@ small_id_alloc (MonoInternalThread *thread)
 
 	if (!small_id_table) {
 		small_id_table_size = 2;
+		/* 
+		 * Enabling this causes problems, because SGEN doesn't track/update the TLS slot holding
+		 * the current thread.
+		 */
+		//small_id_table = mono_gc_alloc_fixed (small_id_table_size * sizeof (MonoInternalThread*), mono_gc_make_root_descr_all_refs (small_id_table_size));
 		small_id_table = mono_gc_alloc_fixed (small_id_table_size * sizeof (MonoInternalThread*), NULL);
 	}
 	for (i = small_id_next; i < small_id_table_size; ++i) {
@@ -353,6 +364,7 @@ small_id_alloc (MonoInternalThread *thread)
 		if (new_size >= (1 << 16))
 			g_assert_not_reached ();
 		id = small_id_table_size;
+		//new_table = mono_gc_alloc_fixed (new_size * sizeof (MonoInternalThread*), mono_gc_make_root_descr_all_refs (new_size));
 		new_table = mono_gc_alloc_fixed (new_size * sizeof (MonoInternalThread*), NULL);
 		memcpy (new_table, small_id_table, small_id_table_size * sizeof (void*));
 		mono_gc_free_fixed (small_id_table);
@@ -557,8 +569,12 @@ static void thread_cleanup (MonoInternalThread *thread)
 	}
 
 	/* if the thread is not in the hash it has been removed already */
-	if (!handle_remove (thread))
+	if (!handle_remove (thread)) {
+		/* This needs to be called even if handle_remove () fails */
+		if (mono_thread_cleanup_fn)
+			mono_thread_cleanup_fn (thread);
 		return;
+	}
 	mono_release_type_locks (thread);
 
 	EnterCriticalSection (thread->synch_cs);
@@ -578,19 +594,12 @@ static void thread_cleanup (MonoInternalThread *thread)
 	mono_free_static_data (thread->static_data, TRUE);
 	thread->static_data = NULL;
 
-	/*
-	 * FIXME: The check for shutting_down here is a kludge and
-	 * should be removed.  The reason we need it here is because
-	 * mono_thread_manage() does not wait for finalizer threads,
-	 * so we might still be at this point in a finalizer thread
-	 * after the main thread has cleared the root domain, so
-	 * thread could have been zeroed out.
-	 */
-	if (mono_thread_cleanup_fn && !shutting_down)
-		mono_thread_cleanup_fn (thread->root_domain_thread);
+	if (mono_thread_cleanup_fn)
+		mono_thread_cleanup_fn (thread);
 
 	small_id_free (thread->small_id);
 	thread->small_id = -2;
+
 }
 
 static gpointer
@@ -635,10 +644,24 @@ set_current_thread_for_domain (MonoDomain *domain, MonoInternalThread *thread, M
 	*current_thread_ptr = current;
 }
 
+static MonoInternalThread*
+create_internal_thread_object (void)
+{
+	MonoVTable *vt = mono_class_vtable (mono_get_root_domain (), mono_defaults.internal_thread_class);
+	return (MonoInternalThread*)mono_gc_alloc_mature (vt);
+}
+
+static MonoThread*
+create_thread_object (MonoDomain *domain)
+{
+	MonoVTable *vt = mono_class_vtable (domain, mono_defaults.thread_class);
+	return (MonoThread*)mono_gc_alloc_mature (vt);
+}
+
 static MonoThread*
 new_thread_with_internal (MonoDomain *domain, MonoInternalThread *internal)
 {
-	MonoThread *thread = (MonoThread*) mono_object_new (domain, mono_defaults.thread_class);
+	MonoThread *thread = create_thread_object (domain);
 	MONO_OBJECT_SETREF (thread, internal_thread, internal);
 	return thread;
 }
@@ -655,15 +678,19 @@ init_root_domain_thread (MonoInternalThread *thread, MonoThread *candidate)
 	MONO_OBJECT_SETREF (thread, root_domain_thread, candidate);
 }
 
-static guint32 WINAPI start_wrapper(void *data)
+static guint32 WINAPI start_wrapper_internal(void *data)
 {
 	struct StartInfo *start_info=(struct StartInfo *)data;
 	guint32 (*start_func)(void *);
 	void *start_arg;
 	gsize tid;
-	MonoThread *thread=start_info->obj;
-	MonoInternalThread *internal = thread->internal_thread;
+	/* 
+	 * We don't create a local to hold start_info->obj, so hopefully it won't get pinned during a
+	 * GC stack walk.
+	 */
+	MonoInternalThread *internal = start_info->obj->internal_thread;
 	MonoObject *start_delegate = start_info->delegate;
+	MonoDomain *domain = start_info->obj->obj.vtable->domain;
 
 	THREAD_DEBUG (g_message ("%s: (%"G_GSIZE_FORMAT") Start wrapper", __func__, GetCurrentThreadId ()));
 
@@ -680,9 +707,9 @@ static guint32 WINAPI start_wrapper(void *data)
 	mono_monitor_init_tls ();
 
 	/* Every thread references the appdomain which created it */
-	mono_thread_push_appdomain_ref (thread->obj.vtable->domain);
+	mono_thread_push_appdomain_ref (domain);
 	
-	if (!mono_domain_set (thread->obj.vtable->domain, FALSE)) {
+	if (!mono_domain_set (domain, FALSE)) {
 		/* No point in raising an appdomain_unloaded exception here */
 		/* FIXME: Cleanup here */
 		mono_thread_pop_appdomain_ref ();
@@ -695,7 +722,7 @@ static guint32 WINAPI start_wrapper(void *data)
 	/* We have to do this here because mono_thread_new_init()
 	   requires that root_domain_thread is set up. */
 	thread_adjust_static_data (internal);
-	init_root_domain_thread (internal, thread);
+	init_root_domain_thread (internal, start_info->obj);
 
 	/* This MUST be called before any managed code can be
 	 * executed, as it calls the callback function that (for the
@@ -723,18 +750,18 @@ static guint32 WINAPI start_wrapper(void *data)
 	}
 
 	mono_threads_lock ();
-	mono_g_hash_table_remove (thread_start_args, thread);
+	mono_g_hash_table_remove (thread_start_args, start_info->obj);
 	mono_threads_unlock ();
 
+	mono_thread_set_execution_context (start_info->obj->ec_to_set);
+	start_info->obj->ec_to_set = NULL;
+
 	g_free (start_info);
 #ifdef DEBUG
 	g_message ("%s: start_wrapper for %"G_GSIZE_FORMAT, __func__,
 		   thread->tid);
 #endif
 
-	mono_thread_set_execution_context (thread->ec_to_set);
-	thread->ec_to_set = NULL;
-
 	/* 
 	 * Call this after calling start_notify, since the profiler callback might want
 	 * to lock the thread, and the lock is held by thread_start () which waits for
@@ -783,6 +810,18 @@ static guint32 WINAPI start_wrapper(void *data)
 	return(0);
 }
 
+static guint32 WINAPI start_wrapper(void *data)
+{
+#ifdef HAVE_SGEN_GC
+	volatile int dummy;
+
+	/* Avoid scanning the frames above this frame during a GC */
+	mono_gc_set_stack_end ((void*)&dummy);
+#endif
+
+	return start_wrapper_internal (data);
+}
+
 void mono_thread_new_init (intptr_t tid, gpointer stack_start, gpointer func)
 {
 	if (mono_thread_start_cb) {
@@ -837,7 +876,7 @@ static void
 register_thread_start_argument (MonoThread *thread, struct StartInfo *start_info)
 {
 	if (thread_start_args == NULL) {
-		MONO_GC_REGISTER_ROOT (thread_start_args);
+		MONO_GC_REGISTER_ROOT_FIXED (thread_start_args);
 		thread_start_args = mono_g_hash_table_new (NULL, NULL);
 	}
 	mono_g_hash_table_insert (thread_start_args, thread, start_info->start_arg);
@@ -851,10 +890,8 @@ MonoInternalThread* mono_thread_create_internal (MonoDomain *domain, gpointer fu
 	struct StartInfo *start_info;
 	gsize tid;
 
-	thread=(MonoThread *)mono_object_new (domain,
-					      mono_defaults.thread_class);
-	internal = (MonoInternalThread*)mono_object_new (mono_get_root_domain (),
-			mono_defaults.internal_thread_class);
+	thread = create_thread_object (domain);
+	internal = create_internal_thread_object ();
 	MONO_OBJECT_SETREF (thread, internal_thread, internal);
 
 	start_info=g_new0 (struct StartInfo, 1);
@@ -869,7 +906,7 @@ MonoInternalThread* mono_thread_create_internal (MonoDomain *domain, gpointer fu
 		return NULL;
 	}
 	if (threads_starting_up == NULL) {
-		MONO_GC_REGISTER_ROOT (threads_starting_up);
+		MONO_GC_REGISTER_ROOT_FIXED (threads_starting_up);
 		threads_starting_up = mono_g_hash_table_new_type (NULL, NULL, MONO_HASH_KEY_VALUE_GC);
 	}
 
@@ -969,7 +1006,10 @@ mono_thread_get_stack_bounds (guint8 **staddr, size_t *stsize)
 		g_assert ((current > *staddr) && (current < *staddr + *stsize));
 #  endif
 
-	pthread_attr_destroy (&attr); 
+	pthread_attr_destroy (&attr);
+#else
+	*staddr = NULL;
+	*stsize = (size_t)-1;
 #endif
 
 	/* When running under emacs, sometimes staddr is not aligned to a page size */
@@ -995,7 +1035,7 @@ mono_thread_attach (MonoDomain *domain)
 		g_error ("Thread %"G_GSIZE_FORMAT" calling into managed code is not registered with the GC. On UNIX, this can be fixed by #include-ing <gc.h> before <pthread.h> in the file containing the thread creation code.", GetCurrentThreadId ());
 	}
 
-	thread = (MonoInternalThread *)mono_object_new (domain, mono_defaults.internal_thread_class);
+	thread = create_internal_thread_object ();
 
 	thread_handle = GetCurrentThread ();
 	g_assert (thread_handle);
@@ -1011,6 +1051,9 @@ mono_thread_attach (MonoDomain *domain)
 
 	thread->handle=thread_handle;
 	thread->tid=tid;
+#ifdef PLATFORM_ANDROID
+	thread->android_tid = (gpointer) gettid ();
+#endif
 	thread->apartment_state=ThreadApartmentState_Unknown;
 	small_id_alloc (thread);
 	thread->stack_ptr = &tid;
@@ -1098,7 +1141,8 @@ mono_thread_exit ()
 void
 ves_icall_System_Threading_Thread_ConstructInternalThread (MonoThread *this)
 {
-	MonoInternalThread *internal = (MonoInternalThread*)mono_object_new (mono_get_root_domain (), mono_defaults.internal_thread_class);
+	MonoInternalThread *internal = create_internal_thread_object ();
+
 	internal->state = ThreadState_Unstarted;
 	internal->apartment_state = ThreadApartmentState_Unknown;
 
@@ -1157,7 +1201,7 @@ HANDLE ves_icall_System_Threading_Thread_Thread_internal(MonoThread *this,
 		mono_threads_lock ();
 		register_thread_start_argument (this, start_info);
 		if (threads_starting_up == NULL) {
-			MONO_GC_REGISTER_ROOT (threads_starting_up);
+			MONO_GC_REGISTER_ROOT_FIXED (threads_starting_up);
 			threads_starting_up = mono_g_hash_table_new_type (NULL, NULL, MONO_HASH_KEY_VALUE_GC);
 		}
 		mono_g_hash_table_insert (threads_starting_up, this, this);
@@ -1359,24 +1403,11 @@ ves_icall_System_Threading_Thread_SetName_internal (MonoInternalThread *this_obj
 		this_obj->name = NULL;
 	
 	LeaveCriticalSection (this_obj->synch_cs);
-}
-
-static MonoObject*
-lookup_cached_culture (MonoInternalThread *this, MonoDomain *domain, int start_idx)
-{
-	MonoObject *res;
-	int i;
-
-	if (this->cached_culture_info) {
-		domain = mono_domain_get ();
-		for (i = start_idx; i < start_idx + NUM_CACHED_CULTURES; ++i) {
-			res = mono_array_get (this->cached_culture_info, MonoObject*, i);
-			if (res && res->vtable->domain == domain)
-				return res;
-		}
+	if (this_obj->name) {
+		char *tname = mono_string_to_utf8 (name);
+		mono_profiler_thread_name (this_obj->tid, tname);
+		mono_free (tname);
 	}
-
-	return NULL;
 }
 
 /* If the array is already in the requested domain, we just return it,
@@ -1409,73 +1440,6 @@ ves_icall_System_Threading_Thread_ByteArrayToCurrentDomain (MonoArray *arr)
 	return byte_array_to_domain (arr, mono_domain_get ());
 }
 
-MonoObject*
-ves_icall_System_Threading_Thread_GetCachedCurrentCulture (MonoInternalThread *this)
-{
-	return lookup_cached_culture (this, mono_domain_get (), CULTURES_START_IDX);
-}
-
-static void
-cache_culture (MonoInternalThread *this, MonoObject *culture, int start_idx)
-{
-	int i;
-	MonoDomain *domain = mono_domain_get ();
-	MonoObject *obj;
-	int free_slot = -1;
-	int same_domain_slot = -1;
-
-	ensure_synch_cs_set (this);
-	
-	EnterCriticalSection (this->synch_cs);
-	
-	if (!this->cached_culture_info)
-		MONO_OBJECT_SETREF (this, cached_culture_info, mono_array_new_cached (mono_get_root_domain (), mono_defaults.object_class, NUM_CACHED_CULTURES * 2));
-
-	for (i = start_idx; i < start_idx + NUM_CACHED_CULTURES; ++i) {
-		obj = mono_array_get (this->cached_culture_info, MonoObject*, i);
-		/* Free entry */
-		if (!obj) {
-			free_slot = i;
-			/* we continue, because there may be a slot used with the same domain */
-			continue;
-		}
-		/* Replace */
-		if (obj->vtable->domain == domain) {
-			same_domain_slot = i;
-			break;
-		}
-	}
-	if (same_domain_slot >= 0)
-		mono_array_setref (this->cached_culture_info, same_domain_slot, culture);
-	else if (free_slot >= 0)
-		mono_array_setref (this->cached_culture_info, free_slot, culture);
-	/* we may want to replace an existing entry here, even when no suitable slot is found */
-
-	LeaveCriticalSection (this->synch_cs);
-}
-
-void
-ves_icall_System_Threading_Thread_SetCachedCurrentCulture (MonoThread *this, MonoObject *culture)
-{
-	MonoDomain *domain = mono_object_get_domain (&this->obj);
-	g_assert (domain == mono_domain_get ());
-	cache_culture (this->internal_thread, culture, CULTURES_START_IDX);
-}
-
-MonoObject*
-ves_icall_System_Threading_Thread_GetCachedCurrentUICulture (MonoInternalThread *this)
-{
-	return lookup_cached_culture (this, mono_domain_get (), UICULTURES_START_IDX);
-}
-
-void
-ves_icall_System_Threading_Thread_SetCachedCurrentUICulture (MonoThread *this, MonoObject *culture)
-{
-	MonoDomain *domain = mono_object_get_domain (&this->obj);
-	g_assert (domain == mono_domain_get ());
-	cache_culture (this->internal_thread, culture, UICULTURES_START_IDX);
-}
-
 MonoThread *
 mono_thread_current (void)
 {
@@ -1602,6 +1566,7 @@ gint32 ves_icall_System_Threading_WaitHandle_WaitAny_internal(MonoArray *mono_ha
 	guint32 i;
 	MonoObject *waitHandle;
 	MonoInternalThread *thread = mono_thread_internal_current ();
+	guint32 start;
 
 	/* Do this WaitSleepJoin check before creating objects */
 	mono_thread_current_check_pending_interrupt ();
@@ -1619,8 +1584,21 @@ gint32 ves_icall_System_Threading_WaitHandle_WaitAny_internal(MonoArray *mono_ha
 	}
 
 	mono_thread_set_state (thread, ThreadState_WaitSleepJoin);
-	
-	ret=WaitForMultipleObjectsEx(numhandles, handles, FALSE, ms, TRUE);
+
+	start = (ms == -1) ? 0 : mono_msec_ticks ();
+	do {
+		ret = WaitForMultipleObjectsEx (numhandles, handles, FALSE, ms, TRUE);
+		if (ret != WAIT_IO_COMPLETION)
+			break;
+		if (ms != -1) {
+			guint32 diff;
+
+			diff = mono_msec_ticks () - start;
+			ms -= diff;
+			if (ms <= 0)
+				break;
+		}
+	} while (ms == -1 || ms > 0);
 
 	mono_thread_clr_state (thread, ThreadState_WaitSleepJoin);
 	
@@ -2283,11 +2261,7 @@ static void signal_thread_state_change (MonoInternalThread *thread)
 	QueueUserAPC ((PAPCFUNC)interruption_request_apc, thread->handle, NULL);
 #else
 	/* fixme: store the state somewhere */
-#ifdef PTHREAD_POINTER_ID
-	pthread_kill ((gpointer)(gsize)(thread->tid), mono_thread_get_abort_signal ());
-#else
-	pthread_kill (thread->tid, mono_thread_get_abort_signal ());
-#endif
+	mono_thread_kill (thread, mono_thread_get_abort_signal ());
 
 	/* 
 	 * This will cause waits to be broken.
@@ -2637,7 +2611,7 @@ ves_icall_System_Threading_Thread_VolatileWriteObject (void *ptr, void *value)
 void mono_thread_init (MonoThreadStartCB start_cb,
 		       MonoThreadAttachCB attach_cb)
 {
-	MONO_GC_REGISTER_ROOT (small_id_table);
+	MONO_GC_REGISTER_ROOT_FIXED (small_id_table);
 	InitializeCriticalSection(&threads_mutex);
 	InitializeCriticalSection(&interlocked_mutex);
 	InitializeCriticalSection(&contexts_mutex);
@@ -3751,7 +3725,7 @@ mono_alloc_special_static_data (guint32 static_type, guint32 size, guint32 align
 }
 
 gpointer
-mono_get_special_static_data (guint32 offset)
+mono_get_special_static_data_for_thread (MonoInternalThread *thread, guint32 offset)
 {
 	/* The high bit means either thread (0) or static (1) data. */
 
@@ -3762,7 +3736,7 @@ mono_get_special_static_data (guint32 offset)
 	idx = (offset >> 24) - 1;
 
 	if (static_type == 0) {
-		return get_thread_static_data (mono_thread_internal_current (), offset);
+		return get_thread_static_data (thread, offset);
 	} else {
 		/* Allocate static data block under demand, since we don't have a list
 		// of contexts
@@ -3777,6 +3751,12 @@ mono_get_special_static_data (guint32 offset)
 	}
 }
 
+gpointer
+mono_get_special_static_data (guint32 offset)
+{
+	return mono_get_special_static_data_for_thread (mono_thread_internal_current (), offset);
+}
+
 typedef struct {
 	guint32 offset;
 	guint32 size;
@@ -4317,3 +4297,35 @@ mono_runtime_has_tls_get (void)
 {
 	return has_tls_get;
 }
+
+int
+mono_thread_kill (MonoInternalThread *thread, int signal)
+{
+#ifdef HOST_WIN32
+	/* Win32 uses QueueUserAPC and callers of this are guarded */
+	g_assert_not_reached ();
+#else
+#  ifdef PTHREAD_POINTER_ID
+	return pthread_kill ((gpointer)(gsize)(thread->tid), mono_thread_get_abort_signal ());
+#  else
+#    ifdef PLATFORM_ANDROID
+	if (thread->android_tid != 0) {
+		int  ret;
+		int  old_errno = errno;
+
+		ret = tkill ((pid_t) thread->android_tid, signal);
+		if (ret < 0) {
+			ret = errno;
+			errno = old_errno;
+		}
+
+		return ret;
+	}
+	else
+		return pthread_kill (thread->tid, mono_thread_get_abort_signal ());
+#    else
+	return pthread_kill (thread->tid, mono_thread_get_abort_signal ());
+#    endif
+#  endif
+#endif
+}
diff --git a/mono/metadata/threads.h b/mono/metadata/threads.h
index cd084ae..67001be 100644
--- a/mono/metadata/threads.h
+++ b/mono/metadata/threads.h
@@ -17,8 +17,6 @@
 
 MONO_BEGIN_DECLS
 
-typedef void (*MonoThreadCleanupFunc) (MonoThread* thread);
-
 /* This callback should return TRUE if the runtime must wait for the thread, FALSE otherwise */
 typedef mono_bool (*MonoThreadManageCallback) (MonoThread* thread);
 
@@ -41,7 +39,6 @@ extern MonoThread *mono_thread_attach (MonoDomain *domain);
 extern void mono_thread_detach (MonoThread *thread);
 extern void mono_thread_exit (void);
 
-void     mono_threads_install_cleanup   (MonoThreadCleanupFunc func);
 void     mono_thread_set_manage_callback (MonoThread *thread, MonoThreadManageCallback func);
 
 extern void mono_threads_set_default_stacksize (uint32_t stacksize);
diff --git a/mono/metadata/verify-internals.h b/mono/metadata/verify-internals.h
index 413ceca..afacaef 100644
--- a/mono/metadata/verify-internals.h
+++ b/mono/metadata/verify-internals.h
@@ -21,6 +21,8 @@ gboolean mono_verifier_is_enabled_for_class (MonoClass *klass) MONO_INTERNAL;
 
 gboolean mono_verifier_is_method_full_trust (MonoMethod *method) MONO_INTERNAL;
 gboolean mono_verifier_is_class_full_trust (MonoClass *klass) MONO_INTERNAL;
+gboolean mono_verifier_class_is_valid_generic_instantiation (MonoClass *class) MONO_INTERNAL;
+gboolean mono_verifier_is_method_valid_generic_instantiation (MonoMethod *method) MONO_INTERNAL;
 
 gboolean mono_verifier_verify_class (MonoClass *klass) MONO_INTERNAL;
 
@@ -35,7 +37,6 @@ gboolean mono_verifier_verify_full_table_data (MonoImage *image, GSList **error_
 gboolean mono_verifier_verify_field_signature (MonoImage *image, guint32 offset, GSList **error_list) MONO_INTERNAL;
 gboolean mono_verifier_verify_method_header (MonoImage *image, guint32 offset, GSList **error_list) MONO_INTERNAL;
 gboolean mono_verifier_verify_method_signature (MonoImage *image, guint32 offset, MonoError *error) MONO_INTERNAL;
-gboolean mono_verifier_verify_memberref_signature (MonoImage *image, guint32 offset, GSList **error_list) MONO_INTERNAL;
 gboolean mono_verifier_verify_standalone_signature (MonoImage *image, guint32 offset, GSList **error_list) MONO_INTERNAL;
 gboolean mono_verifier_verify_typespec_signature (MonoImage *image, guint32 offset, guint32 token, GSList **error_list) MONO_INTERNAL;
 gboolean mono_verifier_verify_methodspec_signature (MonoImage *image, guint32 offset, GSList **error_list) MONO_INTERNAL;
@@ -43,7 +44,12 @@ gboolean mono_verifier_verify_string_signature (MonoImage *image, guint32 offset
 gboolean mono_verifier_verify_cattr_blob (MonoImage *image, guint32 offset, GSList **error_list) MONO_INTERNAL;
 gboolean mono_verifier_verify_cattr_content (MonoImage *image, MonoMethod *ctor, const guchar *data, guint32 size, GSList **error_list) MONO_INTERNAL;
 gboolean mono_verifier_is_sig_compatible (MonoImage *image, MonoMethod *method, MonoMethodSignature *signature) MONO_INTERNAL;
+gboolean mono_verifier_verify_memberref_method_signature (MonoImage *image, guint32 offset, GSList **error_list) MONO_INTERNAL;
+gboolean mono_verifier_verify_memberref_field_signature (MonoImage *image, guint32 offset, GSList **error_list) MONO_INTERNAL;
 
+gboolean mono_verifier_verify_typeref_row (MonoImage *image, guint32 row, MonoError *error) MONO_INTERNAL;
+gboolean mono_verifier_verify_methodimpl_row (MonoImage *image, guint32 row, MonoError *error) MONO_INTERNAL;
+gboolean mono_verifier_is_signature_compatible (MonoMethodSignature *target, MonoMethodSignature *candidate) MONO_INTERNAL;
 G_END_DECLS
 
 #endif  /* __MONO_METADATA_VERIFY_INTERNAL_H__ */
diff --git a/mono/metadata/verify.c b/mono/metadata/verify.c
index 173cc3d..79c1ce4 100644
--- a/mono/metadata/verify.c
+++ b/mono/metadata/verify.c
@@ -30,7 +30,6 @@
 #include <signal.h>
 #include <ctype.h>
 
-
 static MiniVerifierMode verifier_mode = MONO_VERIFIER_MODE_OFF;
 static gboolean verify_all = FALSE;
 
@@ -232,6 +231,12 @@ mono_class_is_valid_generic_instantiation (VerifyContext *ctx, MonoClass *klass)
 
 static gboolean
 mono_method_is_valid_generic_instantiation (VerifyContext *ctx, MonoMethod *method);
+
+static MonoGenericParam*
+verifier_get_generic_param_from_type (VerifyContext *ctx, MonoType *type);
+
+static gboolean
+verifier_class_is_assignable_from (MonoClass *target, MonoClass *candidate);
 //////////////////////////////////////////////////////////////////
 
 
@@ -364,7 +369,7 @@ token_bounds_check (MonoImage *image, guint32 token)
 {
 	if (image->dynamic)
 		return mono_reflection_is_valid_dynamic_token ((MonoDynamicImage*)image, token);
-	return image->tables [mono_metadata_token_table (token)].rows >= mono_metadata_token_index (token);
+	return image->tables [mono_metadata_token_table (token)].rows >= mono_metadata_token_index (token) && mono_metadata_token_index (token) > 0;
 }
 
 static MonoType *
@@ -478,7 +483,7 @@ mono_class_has_default_constructor (MonoClass *klass)
  * this function checks for VAR and MVAR types that are invalid under the current verifier,
  */
 static gboolean
-mono_type_is_valid_type_in_context (MonoType *type, MonoGenericContext *context)
+mono_type_is_valid_type_in_context_full (MonoType *type, MonoGenericContext *context, gboolean check_gtd)
 {
 	int i;
 	MonoGenericInst *inst;
@@ -493,23 +498,47 @@ mono_type_is_valid_type_in_context (MonoType *type, MonoGenericContext *context)
 			return FALSE;
 		break;
 	case MONO_TYPE_SZARRAY:
-		return mono_type_is_valid_type_in_context (&type->data.klass->byval_arg, context);
+		return mono_type_is_valid_type_in_context_full (&type->data.klass->byval_arg, context, check_gtd);
 	case MONO_TYPE_ARRAY:
-		return mono_type_is_valid_type_in_context (&type->data.array->eklass->byval_arg, context);
+		return mono_type_is_valid_type_in_context_full (&type->data.array->eklass->byval_arg, context, check_gtd);
 	case MONO_TYPE_PTR:
-		return mono_type_is_valid_type_in_context (type->data.type, context);
+		return mono_type_is_valid_type_in_context_full (type->data.type, context, check_gtd);
 	case MONO_TYPE_GENERICINST:
 		inst = type->data.generic_class->context.class_inst;
 		if (!inst->is_open)
 			break;
 		for (i = 0; i < inst->type_argc; ++i)
-			if (!mono_type_is_valid_type_in_context (inst->type_argv [i], context))
+			if (!mono_type_is_valid_type_in_context_full (inst->type_argv [i], context, check_gtd))
 				return FALSE;
 		break;
+	case MONO_TYPE_CLASS:
+	case MONO_TYPE_VALUETYPE: {
+		MonoClass *klass = type->data.klass;
+		/*
+		 * It's possible to encode generic'sh types in such a way that they disguise themselves as class or valuetype.
+		 * Fixing the type decoding is really tricky since under some cases this behavior is needed, for example, to
+		 * have a 'class' type pointing to a 'genericinst' class.
+		 *
+		 * For the runtime these non canonical (weird) encodings work fine, they worst they can cause is some
+		 * reflection oddities which are harmless  - to security at least.
+		 */
+		if (klass->byval_arg.type != type->type)
+			return mono_type_is_valid_type_in_context_full (&klass->byval_arg, context, check_gtd);
+
+		if (check_gtd && klass->generic_container)
+			return FALSE;
+		break;
+	}
 	}
 	return TRUE;
 }
 
+static gboolean
+mono_type_is_valid_type_in_context (MonoType *type, MonoGenericContext *context)
+{
+	return mono_type_is_valid_type_in_context_full (type, context, FALSE);
+}
+
 /*This function returns NULL if the type is not instantiatable*/
 static MonoType*
 verifier_inflate_type (VerifyContext *ctx, MonoType *type, MonoGenericContext *context)
@@ -525,7 +554,9 @@ verifier_inflate_type (VerifyContext *ctx, MonoType *type, MonoGenericContext *c
 	return result;
 }
 
-
+/*A side note here. We don't need to check if arguments are broken since this
+is only need to be done by the runtime before realizing the type.
+*/
 static gboolean
 is_valid_generic_instantiation (MonoGenericContainer *gc, MonoGenericContext *context, MonoGenericInst *ginst)
 {
@@ -539,15 +570,28 @@ is_valid_generic_instantiation (MonoGenericContainer *gc, MonoGenericContext *co
 		MonoGenericParamInfo *param_info = mono_generic_container_get_param_info (gc, i);
 		MonoClass *paramClass;
 		MonoClass **constraints;
+		MonoType *param_type = ginst->type_argv [i];
 
-		if (!param_info->constraints && !(param_info->flags & GENERIC_PARAMETER_ATTRIBUTE_SPECIAL_CONSTRAINTS_MASK))
+		/*it's not our job to validate type variables*/
+		if (mono_type_is_generic_argument (param_type))
 			continue;
-		if (mono_type_is_generic_argument (ginst->type_argv [i]))
-			continue; //it's not our job to validate type variables
 
-		paramClass = mono_class_from_mono_type (ginst->type_argv [i]);
+		paramClass = mono_class_from_mono_type (param_type);
+
 
-		if (paramClass->exception_type != MONO_EXCEPTION_NONE)
+		/* A GTD can't be a generic argument.
+		 *
+		 * Due to how types are encoded we must check for the case of a genericinst MonoType and GTD MonoClass.
+		 * This happens in cases such as: class Foo<T>  { void X() { new Bar<T> (); } }
+		 *
+		 * Open instantiations can have GTDs as this happens when one type is instantiated with others params
+		 * and the former has an expansion into the later. For example:
+		 * class B<K> {}
+		 * class A<T>: B<K> {}
+		 * The type A <K> has a parent B<K>, that is inflated into the GTD B<>.
+		 * Since A<K> is open, thus not instantiatable, this is valid.
+		 */
+		if (paramClass->generic_container && param_type->type != MONO_TYPE_GENERICINST && !ginst->is_open)
 			return FALSE;
 
 		/*it's not safe to call mono_class_init from here*/
@@ -556,6 +600,9 @@ is_valid_generic_instantiation (MonoGenericContainer *gc, MonoGenericContext *co
 				return FALSE;
 		}
 
+		if (!param_info->constraints && !(param_info->flags & GENERIC_PARAMETER_ATTRIBUTE_SPECIAL_CONSTRAINTS_MASK))
+			continue;
+
 		if ((param_info->flags & GENERIC_PARAMETER_ATTRIBUTE_VALUE_TYPE_CONSTRAINT) && (!paramClass->valuetype || mono_class_is_nullable (paramClass)))
 			return FALSE;
 
@@ -580,6 +627,7 @@ is_valid_generic_instantiation (MonoGenericContainer *gc, MonoGenericContext *co
 			ctr = mono_class_from_mono_type (inflated);
 			mono_metadata_free_type (inflated);
 
+			/*FIXME maybe we need the same this as verifier_class_is_assignable_from*/
 			if (!mono_class_is_assignable_from_slow (ctr, paramClass))
 				return FALSE;
 		}
@@ -631,8 +679,25 @@ mono_generic_param_is_constraint_compatible (VerifyContext *ctx, MonoGenericPara
 				cc = mono_class_from_mono_type (inflated);
 				mono_metadata_free_type (inflated);
 
-				if (mono_class_is_assignable_from (tc, cc))
+				if (verifier_class_is_assignable_from (tc, cc))
 					break;
+
+				/*
+				 * This happens when we have the following:
+				 *
+				 * Bar<K> where K : IFace
+				 * Foo<T, U> where T : U where U : IFace
+				 * 	...
+				 * 	Bar<T> <- T here satisfy K constraint transitively through to U's constraint
+				 *
+				 */
+				if (mono_type_is_generic_argument (&cc->byval_arg)) {
+					MonoGenericParam *other_candidate = verifier_get_generic_param_from_type (ctx, &cc->byval_arg);
+
+					if (mono_generic_param_is_constraint_compatible (ctx, target, other_candidate, cc, context)) {
+						break;
+					}
+				}
 			}
 			if (!*candidate_class)
 				return FALSE;
@@ -662,7 +727,7 @@ verifier_get_generic_param_from_type (VerifyContext *ctx, MonoType *type)
 		gc = mono_method_get_generic_container (gmd);
 	}
 	if (!gc)
-		return FALSE;
+		return NULL;
 	return mono_generic_container_get_param (gc, num);
 }
 
@@ -840,12 +905,18 @@ verifier_load_field (VerifyContext *ctx, int token, MonoClass **out_klass, const
 	MonoClassField *field;
 	MonoClass *klass = NULL;
 
-	if (!IS_FIELD_DEF_OR_REF (token) || !token_bounds_check (ctx->image, token)) {
-		ADD_VERIFY_ERROR2 (ctx, g_strdup_printf ("Invalid field token 0x%08x for %s at 0x%04x", token, opcode, ctx->ip_offset), MONO_EXCEPTION_BAD_IMAGE);
-		return NULL;
+	if (ctx->method->wrapper_type != MONO_WRAPPER_NONE) {
+		field = mono_method_get_wrapper_data (ctx->method, (guint32)token);
+		klass = field ? field->parent : NULL;
+	} else {
+		if (!IS_FIELD_DEF_OR_REF (token) || !token_bounds_check (ctx->image, token)) {
+			ADD_VERIFY_ERROR2 (ctx, g_strdup_printf ("Invalid field token 0x%08x for %s at 0x%04x", token, opcode, ctx->ip_offset), MONO_EXCEPTION_BAD_IMAGE);
+			return NULL;
+		}
+
+		field = mono_field_from_token (ctx->image, token, &klass, ctx->generic_context);
 	}
 
-	field = mono_field_from_token (ctx->image, token, &klass, ctx->generic_context);
 	if (!field || !field->parent || !klass || mono_loader_get_last_error ()) {
 		ADD_VERIFY_ERROR2 (ctx, g_strdup_printf ("Cannot load field from token 0x%08x for %s at 0x%04x", token, opcode, ctx->ip_offset), MONO_EXCEPTION_BAD_IMAGE);
 		mono_loader_clear_error ();
@@ -855,6 +926,13 @@ verifier_load_field (VerifyContext *ctx, int token, MonoClass **out_klass, const
 	if (!mono_type_is_valid_in_context (ctx, &klass->byval_arg))
 		return NULL;
 
+	if (mono_field_get_flags (field) & FIELD_ATTRIBUTE_LITERAL) {
+		char *type_name = mono_type_get_full_name (field->parent);
+		ADD_VERIFY_ERROR (ctx, g_strdup_printf ("Cannot reference literal field %s::%s at 0x%04x", type_name, field->name, ctx->ip_offset));
+		g_free (type_name);
+		return NULL;
+	}
+
 	*out_klass = klass;
 	return field;
 }
@@ -862,13 +940,17 @@ verifier_load_field (VerifyContext *ctx, int token, MonoClass **out_klass, const
 static MonoMethod*
 verifier_load_method (VerifyContext *ctx, int token, const char *opcode) {
 	MonoMethod* method;
-	
-	if (!IS_METHOD_DEF_OR_REF_OR_SPEC (token) || !token_bounds_check (ctx->image, token)) {
-		ADD_VERIFY_ERROR2 (ctx, g_strdup_printf ("Invalid method token 0x%08x for %s at 0x%04x", token, opcode, ctx->ip_offset), MONO_EXCEPTION_BAD_IMAGE);
-		return NULL;
-	}
 
-	method = mono_get_method_full (ctx->image, token, NULL, ctx->generic_context);
+	if (ctx->method->wrapper_type != MONO_WRAPPER_NONE) {
+		method = mono_method_get_wrapper_data (ctx->method, (guint32)token);
+	} else {
+		if (!IS_METHOD_DEF_OR_REF_OR_SPEC (token) || !token_bounds_check (ctx->image, token)) {
+			ADD_VERIFY_ERROR2 (ctx, g_strdup_printf ("Invalid method token 0x%08x for %s at 0x%04x", token, opcode, ctx->ip_offset), MONO_EXCEPTION_BAD_IMAGE);
+			return NULL;
+		}
+
+		method = mono_get_method_full (ctx->image, token, NULL, ctx->generic_context);
+	}
 
 	if (!method || mono_loader_get_last_error ()) {
 		ADD_VERIFY_ERROR2 (ctx, g_strdup_printf ("Cannot load method from token 0x%08x for %s at 0x%04x", token, opcode, ctx->ip_offset), MONO_EXCEPTION_BAD_IMAGE);
@@ -886,13 +968,17 @@ static MonoType*
 verifier_load_type (VerifyContext *ctx, int token, const char *opcode) {
 	MonoType* type;
 	
-	if (!IS_TYPE_DEF_OR_REF_OR_SPEC (token) || !token_bounds_check (ctx->image, token)) {
-		ADD_VERIFY_ERROR2 (ctx, g_strdup_printf ("Invalid type token 0x%08x at 0x%04x", token, ctx->ip_offset), MONO_EXCEPTION_BAD_IMAGE);
-		return NULL;
+	if (ctx->method->wrapper_type != MONO_WRAPPER_NONE) {
+		MonoClass *class = mono_method_get_wrapper_data (ctx->method, (guint32)token);
+		type = class ? &class->byval_arg : NULL;
+	} else {
+		if (!IS_TYPE_DEF_OR_REF_OR_SPEC (token) || !token_bounds_check (ctx->image, token)) {
+			ADD_VERIFY_ERROR2 (ctx, g_strdup_printf ("Invalid type token 0x%08x at 0x%04x", token, ctx->ip_offset), MONO_EXCEPTION_BAD_IMAGE);
+			return NULL;
+		}
+		type = mono_type_get_full (ctx->image, token, ctx->generic_context);
 	}
 
-	type = mono_type_get_full (ctx->image, token, ctx->generic_context);
-
 	if (!type || mono_loader_get_last_error ()) {
 		ADD_VERIFY_ERROR2 (ctx, g_strdup_printf ("Cannot load type from token 0x%08x for %s at 0x%04x", token, opcode, ctx->ip_offset), MONO_EXCEPTION_BAD_IMAGE);
 		mono_loader_clear_error ();
@@ -1765,7 +1851,7 @@ is_array_type_compatible (MonoType *target, MonoType *candidate)
 	if (left->rank != right->rank)
 		return FALSE;
 
-	return mono_class_is_assignable_from (left->eklass, right->eklass);
+	return verifier_class_is_assignable_from (left->eklass, right->eklass);
 }
 
 static int
@@ -1948,6 +2034,34 @@ init_stack_with_value_at_exception_boundary (VerifyContext *ctx, ILCodeDesc *cod
 		code->stack->stype |= BOXED_MASK;
 }
 
+static gboolean
+verifier_class_is_assignable_from (MonoClass *target, MonoClass *candidate)
+{
+	static MonoClass* generic_icollection_class = NULL;
+	static MonoClass* generic_ienumerable_class = NULL;
+	MonoClass *iface_gtd;
+
+	if (mono_class_is_assignable_from (target, candidate))
+		return TRUE;
+
+	if (!MONO_CLASS_IS_INTERFACE (target) || !target->generic_class || candidate->rank != 1)
+		return FALSE;
+
+	if (generic_icollection_class == NULL) {
+		generic_icollection_class = mono_class_from_name (mono_defaults.corlib,
+			"System.Collections.Generic", "ICollection`1");
+		generic_ienumerable_class = mono_class_from_name (mono_defaults.corlib,
+			"System.Collections.Generic", "IEnumerable`1");
+	}
+	iface_gtd = target->generic_class->container_class;
+	if (iface_gtd != mono_defaults.generic_ilist_class && iface_gtd != generic_icollection_class && iface_gtd != generic_ienumerable_class)
+		return FALSE;
+
+	target = mono_class_from_mono_type (target->generic_class->context.class_inst->type_argv [0]);
+	candidate = candidate->element_class;
+	return mono_class_is_assignable_from (target, candidate);
+}
+
 /*Verify if type 'candidate' can be stored in type 'target'.
  * 
  * If strict, check for the underlying type and not the verification stack types
@@ -2055,8 +2169,7 @@ handle_enum:
 				return FALSE;
 			return target_klass == candidate_klass;
 		}
-		
-		return mono_class_is_assignable_from (target_klass, candidate_klass);
+		return verifier_class_is_assignable_from (target_klass, candidate_klass);
 	}
 
 	case MONO_TYPE_STRING:
@@ -2076,7 +2189,7 @@ handle_enum:
 		/* If candidate is an enum it should return true for System.Enum and supertypes.
 		 * That's why here we use the original type and not the underlying type.
 		 */ 
-		return mono_class_is_assignable_from (target->data.klass, mono_class_from_mono_type (original_candidate));
+		return verifier_class_is_assignable_from (target->data.klass, mono_class_from_mono_type (original_candidate));
 
 	case MONO_TYPE_OBJECT:
 		return MONO_TYPE_IS_REFERENCE (candidate);
@@ -2090,7 +2203,7 @@ handle_enum:
 		left = mono_class_from_mono_type (target);
 		right = mono_class_from_mono_type (candidate);
 
-		return mono_class_is_assignable_from (left, right);
+		return verifier_class_is_assignable_from (left, right);
 	}
 
 	case MONO_TYPE_ARRAY:
@@ -2233,7 +2346,7 @@ is_compatible_boxed_valuetype (VerifyContext *ctx, MonoType *type, MonoType *can
 	if (!strict)
 		return TRUE;
 
-	return MONO_TYPE_IS_REFERENCE (type) && mono_class_is_assignable_from (mono_class_from_mono_type (type), mono_class_from_mono_type (candidate));
+	return MONO_TYPE_IS_REFERENCE (type) && verifier_class_is_assignable_from (mono_class_from_mono_type (type), mono_class_from_mono_type (candidate));
 }
 
 static int
@@ -2291,6 +2404,8 @@ mono_delegate_type_equal (MonoType *target, MonoType *candidate)
 		return candidate->type == target->type;
 
 	case MONO_TYPE_PTR:
+		if (candidate->type != MONO_TYPE_PTR)
+			return FALSE;
 		return mono_delegate_type_equal (target->data.type, candidate->data.type);
 
 	case MONO_TYPE_FNPTR:
@@ -2304,18 +2419,18 @@ mono_delegate_type_equal (MonoType *target, MonoType *candidate)
 		target_klass = mono_class_from_mono_type (target);
 		candidate_klass = mono_class_from_mono_type (candidate);
 		/*FIXME handle nullables and enum*/
-		return mono_class_is_assignable_from (target_klass, candidate_klass);
+		return verifier_class_is_assignable_from (target_klass, candidate_klass);
 	}
 	case MONO_TYPE_OBJECT:
 		return MONO_TYPE_IS_REFERENCE (candidate);
 
 	case MONO_TYPE_CLASS:
-		return mono_class_is_assignable_from(target->data.klass, mono_class_from_mono_type (candidate));
+		return verifier_class_is_assignable_from(target->data.klass, mono_class_from_mono_type (candidate));
 
 	case MONO_TYPE_SZARRAY:
 		if (candidate->type != MONO_TYPE_SZARRAY)
 			return FALSE;
-		return mono_class_is_assignable_from (mono_class_from_mono_type (target)->element_class, mono_class_from_mono_type (candidate)->element_class);
+		return verifier_class_is_assignable_from (mono_class_from_mono_type (target)->element_class, mono_class_from_mono_type (candidate)->element_class);
 
 	case MONO_TYPE_ARRAY:
 		if (candidate->type != MONO_TYPE_ARRAY)
@@ -2394,6 +2509,12 @@ mono_delegate_signature_equal (MonoMethodSignature *delegate_sig, MonoMethodSign
 	return TRUE;
 }
 
+gboolean
+mono_verifier_is_signature_compatible (MonoMethodSignature *target, MonoMethodSignature *candidate)
+{
+	return mono_delegate_signature_equal (target, candidate, FALSE);
+}
+
 /* 
  * verify_ldftn_delegate:
  * 
@@ -2990,6 +3111,9 @@ do_invoke_method (VerifyContext *ctx, int method_token, gboolean virtual)
 	}
 
 	if (sig->ret->type != MONO_TYPE_VOID) {
+		if (!mono_type_is_valid_in_context (ctx, sig->ret))
+			return;
+
 		if (check_overflow (ctx)) {
 			value = stack_push (ctx);
 			set_stack_value (ctx, value, sig->ret, FALSE);
@@ -3323,25 +3447,33 @@ do_load_token (VerifyContext *ctx, int token)
 	if (!check_overflow (ctx))
 		return;
 
-	switch (token & 0xff000000) {
-	case MONO_TOKEN_TYPE_DEF:
-	case MONO_TOKEN_TYPE_REF:
-	case MONO_TOKEN_TYPE_SPEC:
-	case MONO_TOKEN_FIELD_DEF:
-	case MONO_TOKEN_METHOD_DEF:
-	case MONO_TOKEN_METHOD_SPEC:
-	case MONO_TOKEN_MEMBER_REF:
-		if (!token_bounds_check (ctx->image, token)) {
-			ADD_VERIFY_ERROR (ctx, g_strdup_printf ("Table index out of range 0x%x for token %x for ldtoken at 0x%04x", mono_metadata_token_index (token), token, ctx->ip_offset));
+	if (ctx->method->wrapper_type != MONO_WRAPPER_NONE) {
+		handle = mono_method_get_wrapper_data (ctx->method, token);
+		handle_class = mono_method_get_wrapper_data (ctx->method, token + 1);
+		if (handle_class == mono_defaults.typehandle_class)
+			handle = &((MonoClass*)handle)->byval_arg;
+	} else {
+		switch (token & 0xff000000) {
+		case MONO_TOKEN_TYPE_DEF:
+		case MONO_TOKEN_TYPE_REF:
+		case MONO_TOKEN_TYPE_SPEC:
+		case MONO_TOKEN_FIELD_DEF:
+		case MONO_TOKEN_METHOD_DEF:
+		case MONO_TOKEN_METHOD_SPEC:
+		case MONO_TOKEN_MEMBER_REF:
+			if (!token_bounds_check (ctx->image, token)) {
+				ADD_VERIFY_ERROR (ctx, g_strdup_printf ("Table index out of range 0x%x for token %x for ldtoken at 0x%04x", mono_metadata_token_index (token), token, ctx->ip_offset));
+				return;
+			}
+			break;
+		default:
+			ADD_VERIFY_ERROR (ctx, g_strdup_printf ("Invalid table 0x%x for token 0x%x for ldtoken at 0x%04x", mono_metadata_token_table (token), token, ctx->ip_offset));
 			return;
 		}
-		break;
-	default:
-		ADD_VERIFY_ERROR (ctx, g_strdup_printf ("Invalid table 0x%x for token 0x%x for ldtoken at 0x%04x", mono_metadata_token_table (token), token, ctx->ip_offset));
-		return;
+
+		handle = mono_ldtoken (ctx->image, token, &handle_class, ctx->generic_context);
 	}
 
-	handle = mono_ldtoken (ctx->image, token, &handle_class, ctx->generic_context);
 	if (!handle) {
 		ADD_VERIFY_ERROR (ctx, g_strdup_printf ("Invalid token 0x%x for ldtoken at 0x%04x", token, ctx->ip_offset));
 		return;
@@ -3511,7 +3643,7 @@ do_newobj (VerifyContext *ctx, int token)
 	if (method->klass->flags & (TYPE_ATTRIBUTE_ABSTRACT | TYPE_ATTRIBUTE_INTERFACE))
 		CODE_NOT_VERIFIABLE (ctx, g_strdup_printf ("Trying to instantiate an abstract or interface type at 0x%04x", ctx->ip_offset));
 
-	if (!mono_method_can_access_method_full (ctx->method, method, NULL)) {
+	if (!IS_SKIP_VISIBILITY (ctx) && !mono_method_can_access_method_full (ctx->method, method, NULL)) {
 		char *from = mono_method_full_name (ctx->method, TRUE);
 		char *to = mono_method_full_name (method, TRUE);
 		CODE_NOT_VERIFIABLE2 (ctx, g_strdup_printf ("Constructor %s not visible from %s at 0x%04x", to, from, ctx->ip_offset), MONO_EXCEPTION_METHOD_ACCESS);
@@ -3526,6 +3658,11 @@ do_newobj (VerifyContext *ctx, int token)
 		return;
 	}
 
+	if (!sig->hasthis) {
+		ADD_VERIFY_ERROR (ctx, g_strdup_printf ("Invalid constructor signature missing hasthis at 0x%04x", ctx->ip_offset));
+		return;
+	}
+
 	if (!check_underflow (ctx, sig->param_count))
 		return;
 
@@ -3572,7 +3709,7 @@ do_cast (VerifyContext *ctx, int token, const char *opcode) {
 	if (!check_underflow (ctx, 1))
 		return;
 
-	if (!(type = verifier_load_type (ctx, token, opcode)))
+	if (!(type = get_boxable_mono_type (ctx, token, opcode)))
 		return;
 
 	if (type->byref) {
@@ -3971,6 +4108,7 @@ do_leave (VerifyContext *ctx, int delta)
 	if (!is_correct_leave (ctx->header, ctx->ip_offset, target))
 		CODE_NOT_VERIFIABLE (ctx, g_strdup_printf ("Leave not allowed in finally block at 0x%04x", ctx->ip_offset));
 	ctx->eval.size = 0;
+	ctx->target = target;
 }
 
 /* 
@@ -4045,13 +4183,21 @@ do_load_function_ptr (VerifyContext *ctx, guint32 token, gboolean virtual)
 	if (!virtual && !check_overflow (ctx))
 		return;
 
-	if (!IS_METHOD_DEF_OR_REF_OR_SPEC (token) || !token_bounds_check (ctx->image, token)) {
-		ADD_VERIFY_ERROR2 (ctx, g_strdup_printf ("Invalid token %x for ldftn  at 0x%04x", token, ctx->ip_offset), MONO_EXCEPTION_BAD_IMAGE);
-		return;
-	}
+	if (ctx->method->wrapper_type != MONO_WRAPPER_NONE) {
+		method = mono_method_get_wrapper_data (ctx->method, (guint32)token);
+		if (!method) {
+			ADD_VERIFY_ERROR2 (ctx, g_strdup_printf ("Invalid token %x for ldftn  at 0x%04x", token, ctx->ip_offset), MONO_EXCEPTION_BAD_IMAGE);
+			return;
+		}
+	} else {
+		if (!IS_METHOD_DEF_OR_REF_OR_SPEC (token) || !token_bounds_check (ctx->image, token)) {
+			ADD_VERIFY_ERROR2 (ctx, g_strdup_printf ("Invalid token %x for ldftn  at 0x%04x", token, ctx->ip_offset), MONO_EXCEPTION_BAD_IMAGE);
+			return;
+		}
 
-	if (!(method = verifier_load_method (ctx, token, virtual ? "ldvirtfrn" : "ldftn")))
-		return;
+		if (!(method = verifier_load_method (ctx, token, virtual ? "ldvirtfrn" : "ldftn")))
+			return;
+	}
 
 	if (mono_method_is_constructor (method))
 		CODE_NOT_VERIFIABLE (ctx, g_strdup_printf ("Cannot use ldftn with a constructor at 0x%04x", ctx->ip_offset));
@@ -4069,7 +4215,7 @@ do_load_function_ptr (VerifyContext *ctx, guint32 token, gboolean virtual)
 			CODE_NOT_VERIFIABLE (ctx, g_strdup_printf ("Unexpected object for ldvirtftn at 0x%04x", ctx->ip_offset));
 	}
 	
-	if (!mono_method_can_access_method_full (ctx->method, method, NULL))
+	if (!IS_SKIP_VISIBILITY (ctx) && !mono_method_can_access_method_full (ctx->method, method, NULL))
 		CODE_NOT_VERIFIABLE2 (ctx, g_strdup_printf ("Loaded method is not visible for ldftn/ldvirtftn at 0x%04x", ctx->ip_offset), MONO_EXCEPTION_METHOD_ACCESS);
 
 	top = stack_push_val(ctx, TYPE_PTR, mono_type_create_fnptr_from_mono_method (ctx, method));
@@ -4080,11 +4226,6 @@ static void
 do_sizeof (VerifyContext *ctx, int token)
 {
 	MonoType *type;
-
-	if (!IS_TYPE_DEF_OR_REF_OR_SPEC (token) || !token_bounds_check (ctx->image, token)) {
-		ADD_VERIFY_ERROR2 (ctx, g_strdup_printf ("Invalid type token %x at 0x%04x", token, ctx->ip_offset), MONO_EXCEPTION_BAD_IMAGE);
-		return;
-	}
 	
 	if (!(type = verifier_load_type (ctx, token, "sizeof")))
 		return;
@@ -4130,16 +4271,18 @@ static void
 do_ldstr (VerifyContext *ctx, guint32 token)
 {
 	GSList *error = NULL;
-	if (mono_metadata_token_code (token) != MONO_TOKEN_STRING) {
-		ADD_VERIFY_ERROR2 (ctx, g_strdup_printf ("Invalid string token %x at 0x%04x", token, ctx->ip_offset), MONO_EXCEPTION_BAD_IMAGE);
-		return;
-	}
+	if (ctx->method->wrapper_type == MONO_WRAPPER_NONE && !ctx->image->dynamic) {
+		if (mono_metadata_token_code (token) != MONO_TOKEN_STRING) {
+			ADD_VERIFY_ERROR2 (ctx, g_strdup_printf ("Invalid string token %x at 0x%04x", token, ctx->ip_offset), MONO_EXCEPTION_BAD_IMAGE);
+			return;
+		}
 
-	if (!ctx->image->dynamic && !mono_verifier_verify_string_signature (ctx->image, mono_metadata_token_index (token), &error)) {
-		if (error)
-			ctx->list = g_slist_concat (ctx->list, error);
-		ADD_VERIFY_ERROR2 (ctx, g_strdup_printf ("Invalid string index %x at 0x%04x", token, ctx->ip_offset), MONO_EXCEPTION_BAD_IMAGE);
-		return;
+		if (!mono_verifier_verify_string_signature (ctx->image, mono_metadata_token_index (token), &error)) {
+			if (error)
+				ctx->list = g_slist_concat (ctx->list, error);
+			ADD_VERIFY_ERROR2 (ctx, g_strdup_printf ("Invalid string index %x at 0x%04x", token, ctx->ip_offset), MONO_EXCEPTION_BAD_IMAGE);
+			return;
+		}
 	}
 
 	if (check_overflow (ctx))
@@ -4498,6 +4641,12 @@ mono_method_verify (MonoMethod *method, int level)
 		finish_collect_stats ();
 		return ctx.list;
 	}
+	if (!method->is_generic && !method->klass->is_generic && ctx.signature->has_type_parameters) {
+		ADD_VERIFY_ERROR (&ctx, g_strdup_printf ("Method and signature don't match in terms of genericity"));
+		finish_collect_stats ();
+		return ctx.list;
+	}
+
 	ctx.header = mono_method_get_header (method);
 	if (!ctx.header) {
 		ADD_VERIFY_ERROR (&ctx, g_strdup_printf ("Could not decode method header"));
@@ -4663,10 +4812,11 @@ mono_method_verify (MonoMethod *method, int level)
 	g_assert (bb);
 
 	while (ip < end && ctx.valid) {
+		int op_size;
 		ip_offset = ip - code_start;
 		{
 			const unsigned char *ip_copy = ip;
-			int size, op;
+			int op;
 
 			if (ip_offset > bb->end) {
 				ADD_VERIFY_ERROR (&ctx, g_strdup_printf ("Branch or EH block at [0x%04x] targets middle instruction at 0x%04x", bb->end, ip_offset));
@@ -4676,29 +4826,22 @@ mono_method_verify (MonoMethod *method, int level)
 			if (ip_offset == bb->end)
 				bb = bb->next;
 	
-			size = mono_opcode_value_and_size (&ip_copy, end, &op);
-			if (size == -1) {
+			op_size = mono_opcode_value_and_size (&ip_copy, end, &op);
+			if (op_size == -1) {
 				ADD_VERIFY_ERROR (&ctx, g_strdup_printf ("Invalid instruction %x at 0x%04x", *ip, ip_offset));
 				goto cleanup;
 			}
 
-			if (ADD_IS_GREATER_OR_OVF (ip_offset, size, bb->end)) {
+			if (ADD_IS_GREATER_OR_OVF (ip_offset, op_size, bb->end)) {
 				ADD_VERIFY_ERROR (&ctx, g_strdup_printf ("Branch or EH block targets middle of instruction at 0x%04x", ip_offset));
 				goto cleanup;
 			}
 
 			/*Last Instruction*/
-			if (ip_offset + size == bb->end && mono_opcode_is_prefix (op)) {
+			if (ip_offset + op_size == bb->end && mono_opcode_is_prefix (op)) {
 				ADD_VERIFY_ERROR (&ctx, g_strdup_printf ("Branch or EH block targets between prefix '%s' and instruction at 0x%04x", mono_opcode_name (op), ip_offset));
 				goto cleanup;
 			}
-
-			if (bb->dead) {
-				/*FIXME remove this once we move all bad branch checking code to use BB only*/
-				ctx.code [ip_offset].flags |= IL_CODE_FLAG_SEEN;
-				ip += size;
-				continue;
-			}
 		}
 
 		ctx.ip_offset = ip_offset = ip - code_start;
@@ -4740,6 +4883,14 @@ mono_method_verify (MonoMethod *method, int level)
 			}
 		}
 
+		/*This must be done after fallthru detection otherwise it won't happen.*/
+		if (bb->dead) {
+			/*FIXME remove this once we move all bad branch checking code to use BB only*/
+			ctx.code [ip_offset].flags |= IL_CODE_FLAG_SEEN;
+			ip += op_size;
+			continue;
+		}
+
 		if (!ctx.valid)
 			break;
 
@@ -5371,6 +5522,7 @@ mono_method_verify (MonoMethod *method, int level)
 			do_leave (&ctx, read32 (ip + 1) + 5);
 			ip += 5;
 			start = 1;
+			need_merge = 1;
 			break;
 
 		case CEE_LEAVE_S:
@@ -5378,6 +5530,7 @@ mono_method_verify (MonoMethod *method, int level)
 			do_leave (&ctx, (signed char)ip [1] + 2);
 			ip += 2;
 			start = 1;
+			need_merge = 1;
 			break;
 
 		case CEE_PREFIX1:
@@ -5654,7 +5807,7 @@ mono_verify_corlib ()
 gboolean
 mono_verifier_is_enabled_for_method (MonoMethod *method)
 {
-	return mono_verifier_is_enabled_for_class (method->klass) && method->wrapper_type == MONO_WRAPPER_NONE;
+	return mono_verifier_is_enabled_for_class (method->klass) && (method->wrapper_type == MONO_WRAPPER_NONE || method->wrapper_type == MONO_WRAPPER_DYNAMIC_METHOD);
 }
 
 /*
@@ -5673,10 +5826,14 @@ mono_verifier_is_enabled_for_image (MonoImage *image)
 	return verify_all || verifier_mode > MONO_VERIFIER_MODE_OFF;
 }
 
+/*
+ * Dynamic methods are not considered full trust since if the user is trusted and need to
+ * generate unsafe code, make the method skip verification - this is a known good way to do it.
+ */
 gboolean
 mono_verifier_is_method_full_trust (MonoMethod *method)
 {
-	return mono_verifier_is_class_full_trust (method->klass);
+	return mono_verifier_is_class_full_trust (method->klass) && !method->dynamic;
 }
 
 /*
@@ -5905,6 +6062,8 @@ verify_generic_parameters (MonoClass *class)
 
 			if (mono_type_is_generic_argument (constraint_type) && !recursive_mark_constraint_args (used_args, gc, constraint_type))
 				goto fail;
+			if (ctr->generic_class && !mono_class_is_valid_generic_instantiation (NULL, ctr))
+				goto fail;
 		}
 	}
 	mono_bitset_free (used_args);
@@ -5933,8 +6092,12 @@ mono_verifier_verify_class (MonoClass *class)
 		!MONO_CLASS_IS_INTERFACE (class) &&
 		(!class->image->dynamic && class->type_token != 0x2000001)) /*<Module> is the first type in the assembly*/
 		return FALSE;
-	if (class->parent && MONO_CLASS_IS_INTERFACE (class->parent))
-		return FALSE;
+	if (class->parent) {
+		if (MONO_CLASS_IS_INTERFACE (class->parent))
+			return FALSE;
+		if (!class->generic_class && class->parent->generic_container)
+			return FALSE;
+	}
 	if (class->generic_container && (class->flags & TYPE_ATTRIBUTE_LAYOUT_MASK) == TYPE_ATTRIBUTE_EXPLICIT_LAYOUT)
 		return FALSE;
 	if (class->generic_container && !verify_generic_parameters (class))
@@ -5951,6 +6114,21 @@ mono_verifier_verify_class (MonoClass *class)
 		return FALSE;
 	return TRUE;
 }
+
+gboolean
+mono_verifier_class_is_valid_generic_instantiation (MonoClass *class)
+{
+	return mono_class_is_valid_generic_instantiation (NULL, class);
+}
+
+gboolean
+mono_verifier_is_method_valid_generic_instantiation (MonoMethod *method)
+{
+	if (!method->is_inflated)
+		return TRUE;
+	return mono_method_is_valid_generic_instantiation (NULL, method);
+}
+
 #else
 
 gboolean
@@ -6016,4 +6194,18 @@ mono_free_verify_list (GSList *list)
 	/* will always be null if verifier is disabled */
 }
 
+gboolean
+mono_verifier_class_is_valid_generic_instantiation (MonoClass *class)
+{
+	return TRUE;
+}
+
+gboolean
+mono_verifier_is_method_valid_generic_instantiation (MonoMethod *method)
+{
+	return TRUE;
+}
+
+
+
 #endif
diff --git a/mono/mini/ChangeLog b/mono/mini/ChangeLog
index 6f38780..fa5148b 100644
--- a/mono/mini/ChangeLog
+++ b/mono/mini/ChangeLog
@@ -1,13 +1,1430 @@
+2011-01-18  Zoltan Varga  <vargaz at gmail.com>
+
+	Make the stacks of aot image non-executable.
+
+2011-01-17  Zoltan Varga  <vargaz at gmail.com>
+
+	OP_LCOMPARE_IM has type 'L', not 'I'. Fixes #664630.
+
+	This is the same as 6c02c15153, but only for ia64, to avoid
+	destabilizing the branch.
+
+2011-01-17  Zoltan Varga  <vargaz at gmail.com>
+
+	Avoid another case of infinite recursion in AOT.
+
+2011-01-14  Zoltan Varga  <vargaz at gmail.com>
+
+	Make OP_CHECK_THIS do a byte load on arm, since the source
+	argument might point to a vtype if a vtype method is inlined.
+
+2011-01-11  Geoff Norton  <grompf at sublimeintervention.com>
+
+	Fix win32 build
+
+2011-01-13  Zoltan Varga  <vargaz at gmail.com>
+
+	Add null check to stelem_ref_check () jit icall. Fixes #664297.
+
+2011-01-11  Geoff Norton  <grompf at sublimeintervention.com>
+
+	Fix AOT on OSX/x86
+
+2011-01-11  Geoff Norton  <grompf at sublimeintervention.com>
+
+	Fixed loadedllvm on OSX
+
+	The default build of libmono-llvm.dylib includes libmono and all
+	its dependencies, but our statically compiled mono binary does as
+	well. OSX can actually load both into its process space, and get
+	confused as to which symbol it should call, leading to
+	non-deterministic crashes. We'll remove all the mono dependencies,
+	and use -undefined suppress to mitigate this on OSX.
+
+2011-01-10  Zoltan Varga  <vargaz at gmail.com>
+
+	Implement all SIMD intrinsics in LLVM used by basic-simd.exe.
+
+2011-01-10  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix the loadable llvm build.
+
+2011-01-09  Martin Baulig  <martin at novell.com>
+
+	Fix short trampoline branch.
+
+2011-01-10  Zoltan Varga  <vargaz at gmail.com>
+
+	Add another bunch of SIMD intrinsics to the LLVM backend.
+
+2011-01-10  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* mini-exceptions.c (mono_walk_stack): Change the do_il_offset
+	parameter into unwind_options which is an enum that allows
+	multiple options to be passed.
+
+	* mini-exceptions.c (mono_jit_walk_stack_from_ctx): Ditto.
+
+	* mini.h: Introduce MonoUnwindOptions which allow stack unwinding
+	callers to specify that they don't want precise method lookup
+	(IOW, no need to deal with gsharing) which allow those functions
+	to be signal safe.
+
+	* mini-exceptions.c (mono_install_handler_block_guard): Ask
+	mono_walk_stack to perform signal safe unwinding.
+
+	Fixes #662741
+
+2011-01-10  Zoltan Varga  <vargaz at gmail.com>
+
+	Mark mono_print_method_from_ip () with __attribute__((used)) to
+	prevent the linker from optimizing it away in embedding setups.
+
+2011-01-10  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Implement mono.simd new conversion ops on amd64
+
+2011-01-10  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Implement a few conversion operations.
+
+	Add conversion operations between 4f, 2d and 4i. Implemented only
+	on x86 for now.
+
+2011-01-09  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Fix 64bits Shuffle/3 when simd intrinsics are disabled
+
+2011-01-08  Zoltan Varga  <vargaz at gmail.com>
+
+	Pass -relocation-model=static to llc in static mode.
+
+2011-01-08  Zoltan Varga  <vargaz at gmail.com>
+
+	Apply .no_dead_strip to all symbols. Unify __APPLE__/__MACH__
+	defines.
+
+2011-01-08  Zoltan Varga  <vargaz at gmail.com>
+
+	Emit .no_dead_strip directives for all LLVM methods on OSX.
+
+2011-01-08  Zoltan Varga  <vargaz at gmail.com>
+
+	Emit .no_dead_strip directives for all LLVM methods on OSX.
+
+2011-01-08  Zoltan Varga  <vargaz at gmail.com>
+
+	Avoid an assert if System.Diagnostics.DebuggableAttribute is
+	linked away.
+
+2011-01-08  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix the arm dyncall code after the this passing changes.
+
+2011-01-08  Zoltan Varga  <vargaz at gmail.com>
+
+	Disallow loading of non-llvm compiled aot modules into llvm
+	runtimes on arm.
+
+2011-01-08  Zoltan Varga  <vargaz at gmail.com>
+
+	Tidy up AOT trace messages a bit more.
+
+2011-01-08  Zoltan Varga  <vargaz at gmail.com>
+
+	Generate an icall wrapper for CompareExchange<object> into the
+	mscorlib image.
+
+2011-01-08  Zoltan Varga  <vargaz at gmail.com>
+
+	Make an AOT trace message shorter.
+
+2011-01-08  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix the previous fix.
+
+2011-01-08  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix the apple aot problem.
+
+2011-01-08  Zoltan Varga  <vargaz at gmail.com>
+
+	Include the assembly name in AOT symbol names in static mode to
+	avoid duplicate symbol errors.
+
+2011-01-08  Zoltan Varga  <vargaz at gmail.com>
+
+	Change how double/long alignment is saved in the AOT image on arm
+	to support cross-compilation.
+
+2011-01-08  Zoltan Varga  <vargaz at gmail.com>
+
+	Various changes to make thumb work under osx.
+
+2011-01-08  Zoltan Varga  <vargaz at gmail.com>
+
+	Emit thumb unbox trampolines for thumb functions.
+
+2011-01-08  Zoltan Varga  <vargaz at gmail.com>
+
+	Use 'globals' instead of '.Lglobals' to name an aot symbol.
+
+2011-01-07  Zoltan Varga  <vargaz at gmail.com>
+
+	Add 'no-write-symbols' aot option.
+
+2011-01-07  Zoltan Varga  <vargaz at gmail.com>
+
+	Add an 'llvm-path' aot option.
+
+2011-01-07  Zoltan Varga  <vargaz at gmail.com>
+
+	Avoid 0b notation, older gcc's can't handle it.
+
+2011-01-07  Zoltan Varga  <vargaz at gmail.com>
+
+	Use emit_zero_bytes () instead of .skip directive.
+
+2011-01-07  Zoltan Varga  <vargaz at gmail.com>
+
+	Make 'mono_aot_assembly_name' a local symbol as well.
+
+2011-01-07  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix the DISABLE_JIT build.
+
+2011-01-07  Zoltan Varga  <vargaz at gmail.com>
+
+	Reorganize the static AOT support a bit more: the
+	'mono_aot_.._info' symbol will now point the MonoAotFileInfo
+	structure itself, not to a table of globals.
+
+2011-01-07  Zoltan Varga  <vargaz at gmail.com>
+
+	Add sanity check to AOT for long/double alignment.
+
+2011-01-07  Zoltan Varga  <vargaz at gmail.com>
+
+	Disallow the 'soft-debug' aot option when compiling using LLVM.
+
+2011-01-07  Zoltan Varga  <vargaz at gmail.com>
+
+	Use symbolic constants and sizeof(mgreg_t) instead of
+	4/sizeof(gpointer)/sizeof(gulong) in the arm backend.
+
+2011-01-07  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	AMD64 version of the new mono.simd ops
+
+2011-01-06  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	remove stupid debug spew
+
+2011-01-06  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* mini-ops.h: Add OP_SHUPD.
+
+	* cpu-x86.md: * mini-x86.h: Implement x86 support.
+
+	* simd-intrinsics.c: Handle shuffle on 64bit types.
+
+2011-01-06  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* cpu-x86.md: Add shufps.
+
+	* mini-ops.h: Add OP_SHUFPS.
+
+	* mini-x86.c (mono_arch_output_basic_block): Emit OP_SHUFPS.
+
+	* simd-intrinsics.c (simd_intrinsic_emit_shuffle): Handle 3 args
+	variant.
+
+2011-01-06  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Add test for call clobbering of XMM regs
+
+2011-01-06  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* mini-codegen.c (free_up_hreg): Use the bank argument instead of
+	a hardcoded one.
+
+2011-01-06  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix x86 build.
+
+2011-01-06  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix warnings introduced by the NACL merge.
+
+2011-01-06  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix an uninitialized memory error in the aot compiler.
+
+2011-01-05  Mark Probst  <mark.probst at gmail.com>
+
+	Don't assert in mono_get_lmf() if there is no LMF.
+
+	This function is called from mini-gc.c when a collection is
+	triggered, which can happen before any managed call is executed by
+	the thread. At least the allocation of the thread object happens
+	in unmanaged code.
+
+2011-01-04  Elijah Taylor  <elijahtaylor at google.com>
+
+	Replace SIZEOF_REGISTER with sizeof(mgreg_t) for consistency with
+	sizeof(gpointer)
+
+2011-01-04  Elijah Taylor  <elijahtaylor at google.com>
+
+	more ilp32 defines
+
+2011-01-04  Elijah Taylor  <elijahtaylor at google.com>
+
+	change first batch of __native_client_codegen__ && TARGET_AMD64 to
+	__mono_ilp32__ where appropriate
+
+2011-01-04  Elijah Taylor  <elijahtaylor at google.com>
+
+	fix IMT_REG assignments that got switched for non-nacl builds,
+	provide no-op versions of nacl routines to avoid #ifdef's all over
+
+2011-01-05  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Fix win32 build
+
+2011-01-04  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* mini.h: Introduce a new MonoContext variable to be used by the
+	interrupt protection code.
+
+	* mini-exceptions.c: Use new field.
+
+	* mini-trampolines.c: Ditto.
+
+	This fixes finally_guard.exe on OSX.
+
+2011-01-04  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* tramp-x86.c (mono_arch_create_handler_block_trampoline): Make
+	sure we call the target with a properly aligned frame.
+
+2011-01-04  Zoltan Varga  <vargaz at gmail.com>
+
+	Eliminate the first PLT entry, it is no longer used.
+
+2011-01-04  Zoltan Varga  <vargaz at gmail.com>
+
+	Emit separate thumb2 plt entries called by LLVM code.
+
+2011-01-04  Zoltan Varga  <vargaz at gmail.com>
+
+	Avoid thumb->arm trampolines when calling between llvm methods.
+
+2011-01-04  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* mini-x86.h: Define MONO_ARCH_MONITOR_ENTER_ADJUSTMENT to cover
+	the whole stack adjustment add that comes after call.
+
+	* mini.c (create_jit_info): Use an ARCH define for how big the try
+	block adjustment needs to be as x86 is more spacy than amd64.
+
+2011-01-04  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix ia64 build.
+
+2011-01-03  Zoltan Varga  <vargaz at gmail.com>
+
+	Add more comments for the fields of MonoAotFileInfo.
+
+2011-01-03  Zoltan Varga  <vargaz at gmail.com>
+
+	Don't make the 'thumb_end' symbol global.
+
+2011-01-03  Zoltan Varga  <vargaz at gmail.com>
+
+	Reorganize the AOT file format once more, get rid of most globals,
+	store them as pointers inside MonoAotFileInfo instead.
+
+2011-01-03  Zoltan Varga  <vargaz at gmail.com>
+
+	Avoid mixing llvm aot code and non-llvm code on arm. Clean up the
+	printing of AOT messages.
+
+2011-01-03  Zoltan Varga  <vargaz at gmail.com>
+
+	Implement support for llvm+thumb2+aot on arm.
+
+2011-01-03  Zoltan Varga  <vargaz at gmail.com>
+
+	Add thumb2 support for ARM EH code.
+
+2011-01-03  Zoltan Varga  <vargaz at gmail.com>
+
+	Implement support for NULL pointers in the bin_writer_emit_pointer
+	().
+
+2011-01-03  Zoltan Varga  <vargaz at gmail.com>
+
+	Avoid computing GC maps if precise stack marking is disabled.
+
+2011-01-03  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix an assert which can be hit for types unloadable types.
+
+2011-01-03  Zoltan Varga  <vargaz at gmail.com>
+
+	Add 'save_locations' to mono_arch_find_jit_info () signature on
+	all platforms.
+
+2011-01-03  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix a warning.
+
+2011-01-03  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix some merge problems.
+
+2010-11-13  Zoltan Varga  <vargaz at gmail.com>
+
+	Don't set 'last' after emitting the OP_GC_SPILL_SLOT_LIVENESS_DEF
+	() opcode.
+
+2010-11-12  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix a merge problem.
+
+2010-11-10  Zoltan Varga  <vargaz at gmail.com>
+
+	Properly copy the contexts for FRAME_TYPE_MANAGED_TO_NATIVE.
+
+2010-11-10  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix some merge problems.
+
+2010-10-13  Zoltan Varga  <vargaz at gmail.com>
+
+	Implement AOT support.
+
+2010-10-08  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix formatting.
+
+2010-10-08  Zoltan Varga  <vargaz at gmail.com>
+
+	Implement x86 support.
+
+2010-10-06  Zoltan Varga  <vargaz at gmail.com>
+
+	Remove unused DEBUG_GC_MAP macros.
+
+2010-10-05  Zoltan Varga  <vargaz at gmail.com>
+
+	Share the log file between sgen and the stack marking code.
+
+2010-10-05  Zoltan Varga  <vargaz at gmail.com>
+
+	Don't crash in one place if logging is turned on. Add some FIXMEs.
+
+2010-10-04  Zoltan Varga  <vargaz at gmail.com>
+
+	Use sizeof (mgreg_t) in a few more places.
+
+2010-10-04  Zoltan Varga  <vargaz at gmail.com>
+
+	Print frame info during the precise pass as well.
+
+2010-10-02  Zoltan Varga  <vargaz at gmail.com>
+
+	Add a MONO_GCMAP_DEBUG env variable. Redirect debug messages to a
+	logfile. Fix tracking of registers through managed-to-native
+	transitions.
+
+2010-10-01  Zoltan Varga  <vargaz at gmail.com>
+
+	Allocate a few more vregs as REF/MP.
+
+2010-09-29  Zoltan Varga  <vargaz at gmail.com>
+
+	Improve logging even more. Fix a crash which happened when
+	tls->nframes was not initialized in a code path.
+
+2010-09-29  Zoltan Varga  <vargaz at gmail.com>
+
+	Improve logging, really set vtype slots without liveness info to
+	PIN.
+
+2010-09-28  Zoltan Varga  <vargaz at gmail.com>
+
+	Don't treat arguments in registers live for the whole method.
+
+2010-09-28  Zoltan Varga  <vargaz at gmail.com>
+
+	Make gshared variables GC tracked.
+
+2010-09-27  Zoltan Varga  <vargaz at gmail.com>
+
+	Add stats for the size of the scanned native stacks.
+
+2010-09-27  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix the computation of frame start so some areas are not scanned
+	twice.
+
+2010-09-27  Zoltan Varga  <vargaz at gmail.com>
+
+	Log if the frame stack is full.
+
+2010-09-27  Zoltan Varga  <vargaz at gmail.com>
+
+	Move the handling of finally clauses into a separate function.
+	Treat the frame pointer as a precise reg.
+
+2010-09-27  Zoltan Varga  <vargaz at gmail.com>
+
+	Make a log statement depend on cfg->verbose_level.
+
+2010-09-27  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix the handling of methods with finally clauses so it is correct
+	and reasonable efficient: only callsites inside finally blocks are
+	treated conservatively.
+
+2010-09-27  Zoltan Varga  <vargaz at gmail.com>
+
+	Mark the dreg of OP_NEWARR as a ref.
+
+2010-09-26  Zoltan Varga  <vargaz at gmail.com>
+
+	Improve logging. Treat the result of an LDIND.REF as a ref. Treat
+	methods with finally clauses very conservatively again.
+
+2010-09-25  Zoltan Varga  <vargaz at gmail.com>
+
+	Rename a few fields.
+
+2010-09-25  Zoltan Varga  <vargaz at gmail.com>
+
+	Make GC maps for methods with finally clauses more precise.
+
+2010-09-25  Zoltan Varga  <vargaz at gmail.com>
+
+	Optimize the frames with finally clauses a bit so at least the
+	non-ref slots are scanned precisely.
+
+2010-09-25  Zoltan Varga  <vargaz at gmail.com>
+
+	Allow wrapper frames to be precisely tracked.
+
+2010-09-25  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix regressions introduced by the last few changes. Mark
+	THROW/RETHROW as call sites.
+
+2010-09-24  Zoltan Varga  <vargaz at gmail.com>
+
+	Treat the frame reg as precisely tracked.
+
+2010-09-24  Zoltan Varga  <vargaz at gmail.com>
+
+	Encode regmasks compactly.
+
+2010-09-24  Zoltan Varga  <vargaz at gmail.com>
+
+	Registers are now NOREF by default outside their live range.
+
+2010-09-24  Zoltan Varga  <vargaz at gmail.com>
+
+	Remove a debug printf.
+
+2010-09-24  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix a warning.
+
+2010-09-24  Zoltan Varga  <vargaz at gmail.com>
+
+	Disable heavy logging.
+
+2010-09-24  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix logging and add more logging to the liveness pass.
+
+2010-09-23  Zoltan Varga  <vargaz at gmail.com>
+
+	Create GC maps for methods with nono-finally clauses.
+
+2010-09-22  Zoltan Varga  <vargaz at gmail.com>
+
+	Add comments about reducing the size of the GC maps.
+
+2010-09-22  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix some FIXMEs.
+
+2010-09-22  Zoltan Varga  <vargaz at gmail.com>
+
+	Add a free callback to sgen, use it to free our TLS data.
+
+2010-09-22  Zoltan Varga  <vargaz at gmail.com>
+
+	Optimize the size of TlsData.
+
+2010-09-22  Zoltan Varga  <vargaz at gmail.com>
+
+	Optimize GC map memory usage a bit more, add more memory usage
+	stats.
+
+2010-09-22  Zoltan Varga  <vargaz at gmail.com>
+
+	Update some comments.
+
+2010-09-22  Zoltan Varga  <vargaz at gmail.com>
+
+	Rename StackSlotType to GCSlotType.
+
+2010-09-22  Zoltan Varga  <vargaz at gmail.com>
+
+	Refactor mini_gc_create_gc_map () into smaller functions.
+
+2010-09-22  Zoltan Varga  <vargaz at gmail.com>
+
+	Implement precise scanning of param area slots. Fix lots of bugs.
+
+2010-09-21  Zoltan Varga  <vargaz at gmail.com>
+
+	Don't treat the saved ebp slot as pinned. Fix support for noref
+	structs smaller than a pointer. Don't treat 'this' in gshared
+	methods as pinned. Fix the handling of volatile variables.
+
+2010-09-21  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix order of entries in GCEncodedMap.
+
+2010-09-21  Zoltan Varga  <vargaz at gmail.com>
+
+	Update comments.
+
+2010-09-21  Zoltan Varga  <vargaz at gmail.com>
+
+	Split the marking function into two functions, save information
+	during the conservative pass to avoid doing a stack walk during
+	the precise pass.
+
+2010-09-20  Zoltan Varga  <vargaz at gmail.com>
+
+	Omit empty columns from the register bitmaps.
+
+2010-09-20  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix a typo.
+
+2010-09-20  Zoltan Varga  <vargaz at gmail.com>
+
+	Embed the callsite table after the gc map.
+
+2010-09-19  Zoltan Varga  <vargaz at gmail.com>
+
+	Implement compression of the fixed fields in the GCMap struct.
+
+2010-09-19  Zoltan Varga  <vargaz at gmail.com>
+
+	Compute the GC bitmap offsets instead of storing them inside the
+	GCMap structure, to reduce its size.
+
+2010-09-18  Zoltan Varga  <vargaz at gmail.com>
+
+	First pass at reducing the memory usage of GC Maps. Remove
+	constants fields, embed the bitmap array after the structure, use
+	offsets into the bitmap array instead of pointers, encode the
+	callsites table using i8/i16 if possible.
+
+2010-09-18  Zoltan Varga  <vargaz at gmail.com>
+
+	Rewrite everything. Instead of computing liveness intervals,
+	compute the set of live variables at each call site, and use this
+	to create gc bitmaps which are only precise at call sites.
+
+2010-09-17  Zoltan Varga  <vargaz at gmail.com>
+
+	Trim starting and ending NOREF columns from the GC bitmaps.
+
+2010-09-17  Zoltan Varga  <vargaz at gmail.com>
+
+	Merge process_locals () and process_arguments ().
+
+2010-09-17  Zoltan Varga  <vargaz at gmail.com>
+
+	Don't treat 'this' as byref. Don't treat ref regs as pinned.
+
+2010-09-17  Zoltan Varga  <vargaz at gmail.com>
+
+	Add a new regbank for spill slots holding managed pointers. Treat
+	those as PIN. Make LDELEMA return an MP.
+
+2010-09-16  Zoltan Varga  <vargaz at gmail.com>
+
+	Generate liveness info for non-ref variables allocated to
+	registers.
+
+2010-09-16  Zoltan Varga  <vargaz at gmail.com>
+
+	Update comments.
+
+2010-09-16  Zoltan Varga  <vargaz at gmail.com>
+
+	Implement precise scanning of registers by scanning the stack
+	slots where they are saved.
+
+2010-09-16  Zoltan Varga  <vargaz at gmail.com>
+
+	Mark some LMF fields as NOREF.
+
+2010-09-15  Zoltan Varga  <vargaz at gmail.com>
+
+	Mark non-ref spill slots as NOREF. Mark copies of ref vregs as ref
+	during SSA construction. Treat 'this' as a ref.
+
+2010-09-15  Zoltan Varga  <vargaz at gmail.com>
+
+	Add support for GC tracking of some spill slots.
+
+2010-09-14  Zoltan Varga  <vargaz at gmail.com>
+
+	Mark stack slots allocated to dead locals as noref.
+
+2010-09-14  Zoltan Varga  <vargaz at gmail.com>
+
+	Rename locals_start/end to frame_start/end.
+
+2010-09-14  Zoltan Varga  <vargaz at gmail.com>
+
+	Add more logging code.
+
+2010-09-14  Zoltan Varga  <vargaz at gmail.com>
+
+	Add infrastructure for marking the whole frame, not just the
+	locals. Mark arguments plus a few stack slots initialized in the
+	prolog precisely.
+
+2010-09-14  Zoltan Varga  <vargaz at gmail.com>
+
+	Use mono_find_jit_info_ext ().
+
+2010-09-13  Zoltan Varga  <vargaz at gmail.com>
+
+	Align 'nslots' properly.
+
+2010-09-13  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix an uninitialized memory bug.
+
+2010-09-13  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix the computation of the stack space statistics.
+
+2010-09-13  Zoltan Varga  <vargaz at gmail.com>
+
+	Mark only the ref slots of a vtype with uncertain liveness as
+	pinned.
+
+2010-09-13  Zoltan Varga  <vargaz at gmail.com>
+
+	Use two bitmaps instead of the 'slots' array, this makes it
+	possible for a slot to start out as 'pin' and later change to
+	'ref' after it was defined.
+
+2010-09-11  Zoltan Varga  <vargaz at gmail.com>
+
+	Compute approximate liveness intervals for vtypes and volatile
+	variables.
+
+2010-09-09  Zoltan Varga  <vargaz at gmail.com>
+
+	Add infrastructure for marking vregs as holding a GC refs. Use
+	this to avoid pinning variables of type I. Add more GC map stats.
+
+2010-09-09  Zoltan Varga  <vargaz at gmail.com>
+
+	Add a test for JIT temporaries.
+
+2010-09-09  Zoltan Varga  <vargaz at gmail.com>
+
+	Disable GC maps for methods with causes for now.
+
+2010-09-09  Zoltan Varga  <vargaz at gmail.com>
+
+	Add a [NotWorking] test for liveness + finally clauses.
+
+2010-09-08  Zoltan Varga  <vargaz at gmail.com>
+
+	Don't treat U/PTR as a managed ref.
+
+2010-09-08  Zoltan Varga  <vargaz at gmail.com>
+
+	Add further comments/fixmes.
+
+2010-09-08  Zoltan Varga  <vargaz at gmail.com>
+
+	Really fix the computation of statistics.
+
+2010-09-08  Zoltan Varga  <vargaz at gmail.com>
+
+	Update 'Problems' section.
+
+2010-09-08  Zoltan Varga  <vargaz at gmail.com>
+
+	Compute the stack scanning stats correctly, handle threads without
+	a saved context.
+
+2010-09-08  Zoltan Varga  <vargaz at gmail.com>
+
+	Update comments.
+
+2010-09-08  Zoltan Varga  <vargaz at gmail.com>
+
+	Store the liveness information in a two dimensional bitmap in the
+	GC map. Fix a few problems in the liveness calculation. Turn on
+	precise stack scanning by default.
+
+2010-09-07  Zoltan Varga  <vargaz at gmail.com>
+
+	Add a MONO_INST_GC_TRACK inst flag to mark variables needing GC
+	tracking, use it in various places to avoid inserting and
+	processing GC_LIVENESS instructions.
+
+2010-09-07  Zoltan Varga  <vargaz at gmail.com>
+
+	Add a modified liveness analysis pass to compute precise liveness
+	intervals for variables which need GC tracking.
+
+2010-09-06  Zoltan Varga  <vargaz at gmail.com>
+
+	Ongoing work.
+
+2010-12-26  Zoltan Varga  <vargaz at gmail.com>
+
+	Use a more compact encoding for references to
+	icall/ptr-to-struct/struct-to-ptr wrappers, this saves about 50k
+	from the full-aot mscorlib image size.
+
+2010-12-26  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix the fullaotcheck target.
+
+2010-12-21  Elijah Taylor  <elijahtaylor at google.com>
+
+	fix comment
+
+2010-12-20  Elijah Taylor  <elijahtaylor at google.com>
+
+	Merge selective files from fsa branch
+
+2010-12-21  Andreia Gaita  <shana at jitted.com>
+
+	Moonlight build fixes and cleanup
+
+2010-12-21  Zoltan Varga  <vargaz at gmail.com>
+
+	Pass -verbose-asm=false to llc, since verbose assembly slows it
+	down greatly.
+
+2010-12-20  Elijah Taylor  <elijahtaylor at google.com>
+
+	Changes to get NaCl builds working minimally
+
+2010-12-19  Zoltan Varga  <vargaz at gmail.com>
+
+	Add support for accessing ThreadStatic fields in sdb. Fixes
+	#645217.
+
+2010-12-18  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix a buffer overflow in the aot compiler.
+
+2010-12-18  Zoltan Varga  <vargaz at gmail.com>
+
+	Name the llvm methods using the debug symbol by default, instead
+	of using the cryptic m_<token> name.
+
+2010-12-18  Zoltan Varga  <vargaz at gmail.com>
+
+	Support passing vtypes on llvm/arm.
+
+2010-12-17  Zoltan Varga  <vargaz at gmail.com>
+
+	Support methods returning vtypes by addr on arm/LLVM.
+
+2010-12-17  Zoltan Varga  <vargaz at gmail.com>
+
+	Add support for OP_SETFRET to the llvm backend.
+
+2010-12-17  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix OP_LCONV_TO_OVF_I4 under LLVM. Don't use the Mono LLVM calling
+	convention for pinvoke calls.
+
+2010-12-17  Zoltan Varga  <vargaz at gmail.com>
+
+	Allow decomposition of some complex 64 bit opcodes on 32 bit
+	platforms when running with llvm.
+
+2010-12-17  Andreia Gaita  <shana at jitted.com>
+
+	Add --with-moon-gc to select the gc to use with moon (boehm/sgen)
+
+2010-12-17  Zoltan Varga  <vargaz at gmail.com>
+
+	Send back an error instead of asserting when a breakpoint cannot
+	be set at an il offset because it has no seq point. Fixes #620099.
+
+2010-12-17  Zoltan Varga  <vargaz at gmail.com>
+
+	Reserve r7 on arm/darwin even if iphone_abi is disabled.
+
+2010-12-16  Elijah Taylor  <elijahtaylor at google.com>
+
+	Merged in rest of Native Client changes, untested
+
+2010-12-16  Zoltan Varga  <vargaz at gmail.com>
+
+	Don't put llvm type infos into the text segment, it is no longer
+	needed.
+
+2010-12-16  Zoltan Varga  <vargaz at gmail.com>
+
+	Null out trace_ips after freeing it to avoid crashes.
+
+2010-12-16  Martin Baulig  <martin at novell.com>
+
+	Add documentation for my new exception filter code.
+
+2010-12-16  Martin Baulig  <martin at novell.com>
+
+	* mini-exceptions.c (mono_handle_exception_internal_first_pass):
+	Store the exception object in bp + ei->exvar_offset before
+	invoking an exception filter. Use
+	mono_debugger_agent_exception_filter().
+
+	* debugger-agent.c: Add mono_debugger_agent_exception_filter();
+	stores the original context in `tls->filter_ctx' while invoking
+	the filter.
+
+2010-12-16  Zoltan Varga  <vargaz at gmail.com>
+
+	Modify the Mono EH Frame decoding so it handles the LSDA+type_info
+	embedded into the FDE.
+
+2010-12-14  Zoltan Varga  <vargaz at gmail.com>
+
+	Add llvm_label_prefix to a few symbols.
+
+2010-12-14  Zoltan Varga  <vargaz at gmail.com>
+
+	Put llvm type infos into the .text section.
+
+2010-12-14  Zoltan Varga  <vargaz at gmail.com>
+
+	Add support for an additional TType encoding.
+
+2010-12-14  Zoltan Varga  <vargaz at gmail.com>
+
+	Don't prepend llvm_label_prefix to plt symbol names.
+
+2010-12-13  Zoltan Varga  <vargaz at gmail.com>
+
+	Emit a seq_point after OP_START_HANDLER, not before.
+
+2010-12-13  Zoltan Varga  <vargaz at gmail.com>
+
+	Avoid passing a name to mono_register_jit_icall () which is later
+	freed.
+
+2010-12-13  Zoltan Varga  <vargaz at gmail.com>
+
+	Implement support for the .mono_eh_frame created by llc on LLVM
+	mono branch.
+
+2010-12-13  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix full-aot+llvm support on arm.
+
+2010-12-13  Zoltan Varga  <vargaz at gmail.com>
+
+	Avoid registering sequence points in the per-domain hash when AOT
+	compiling.
+
+2010-12-13  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix ARM build.
+
+2010-12-13  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix full-aot+llvm support on amd64.
+
+2010-12-13  Zoltan Varga  <vargaz at gmail.com>
+
+	Add targets to run aot/full-aot tests with LLVM.
+
+2010-12-13  Zoltan Varga  <vargaz at gmail.com>
+
+	Add a patch each time a plt entry is requested in the llvm
+	backend, so wrappers can be generated in full aot.
+
+2010-12-13  Zoltan Varga  <vargaz at gmail.com>
+
+	Add a Make variable to run the aot tests using --llvm.
+
+2010-12-12  Zoltan Varga  <vargaz at gmail.com>
+
+	Don't make the mtriple argument mandatory, clean up processing of
+	llc arguments.
+
+2010-12-11  Zoltan Varga  <vargaz at gmail.com>
+
+	Add an 'mtriple' aot option to set the target triple used by the
+	AOT compiler in LLVM mode.
+
+2010-12-11  Zoltan Varga  <vargaz at gmail.com>
+
+	Add a mono_arch_set_target () function to set the target triple
+	which should be targeted by the JIT in AOT mode on ARM.
+
+2010-12-10  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix handling of gshared methods declared in generic superclasses
+	of nongeneric classes in stack traces. Fixes #658645.
+
+2010-12-10  Zoltan Varga  <vargaz at gmail.com>
+
+	Use the mono calling convention for all LLVM methods, not just
+	ones with rgctx/imt arguments.
+
+2010-12-09  Zoltan Varga  <vargaz at gmail.com>
+
+	Unify the rgctx/non-rgctx call emission functions in the JIT.
+
+2010-12-08  Geoff Norton  <grompf at sublimeintervention.com>
+
+	Avoid leaking our unwind ops when not populating the trampoline
+	info
+
+2010-12-08  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* mini.c: A monomac leak detector depends on -v not leaking
+	memory, so lets fix some of those.
+
+2010-12-08  Zoltan Varga  <vargaz at gmail.com>
+
+	Get rid of the 'is_pinvoke' argument to get_call_info (), use
+	sig->pinvoke instead.
+
+2010-12-07  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix some small memory leaks.
+
+2010-12-05  Zoltan Varga  <vargaz at gmail.com>
+
+	Call mini_parse_debug_options () earlier.
+
+2010-12-05  Zoltan Varga  <vargaz at gmail.com>
+
+	Add more logging to the soft debugger code.
+
+2010-12-05  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix a debug log message in the soft debugger.
+
+2010-12-04  Zoltan Varga  <vargaz at gmail.com>
+
+	Remove a dead variable.
+
+2010-12-04  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix ia64 build.
+
+2010-12-03  Zoltan Varga  <vargaz at gmail.com>
+
+	Remove unused lmf->ebp field on ia64.
+
+2010-12-03  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix another AOT crash if a signature cannot be loaded.
+
+2010-12-03  Zoltan Varga  <vargaz at gmail.com>
+
+	Parse custom modifiers in mono_type_create_from_typespec ().
+
+2010-12-03  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix a crash in the AOT compiler if a method cannot be loaded.
+
+2010-12-02  Zoltan Varga  <vargaz at gmail.com>
+
+	Make the debugger agent at least compile on the ps3.
+
+2010-12-02  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix a typo.
+
+2010-12-02  Zoltan Varga  <vargaz at gmail.com>
+
+	Allow breakpoints set using --break in wrappers.
+
+2010-12-02  Zoltan Varga  <vargaz at gmail.com>
+
+	Move the identical MonoLMFExt declarations to mini.h.
+
+2010-12-02  Zoltan Varga  <vargaz at gmail.com>
+
+	Split the exception handling code into test_only and !test_only
+	passes, ending up with two simpler/shorter functions.
+
+2010-12-01  Zoltan Varga  <vargaz at gmail.com>
+
+	Save the original throw context into TLS so stack walks done from
+	profiler functions work during exception handling.
+
+2010-12-01  Zoltan Varga  <vargaz at gmail.com>
+
+	Add an asm (""); to the body of __jit_debug_register_code () to
+	prevent gcc from eliminating calls to it.
+
+2010-12-01  Zoltan Varga  <vargaz at gmail.com>
+
+	Export mono_xdebug_flush ().
+
+2010-12-01  Zoltan Varga  <vargaz at gmail.com>
+
+	Emit write barriers for multi-dim Array.Set (). Fixes #656128.
+
+2010-11-30  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* mini-trampolines.c (mono_delegate_trampoline): A ldftn is only
+	to be promoted to a ldvirtftn if the target method belongs to an
+	abstract class. This fixes mcs/test/test-283.
+
+2010-11-27  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* mini.c (mini_method_compile): Add a BR to all basic blocks that
+	fallthru blocks that are out of line.
+
+	* branch-opts.c (mono_optimize_branches): Don't eliminate a BR to
+	the next block if is out of line.
+
+	Fixes #318677
+
+2010-11-27  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix an aot crash if field->type is not initialized.
+
+2010-11-27  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* mini-trampolines.c (mono_delegate_trampoline): Handle the case
+	of a delegate created with ldftn on which the method token points
+	to an abstract method. This case behaves in the same way as
+	ldvirtftn.
+
+	Fixes #317488
+
+2010-11-27  Zoltan Varga  <vargaz at gmail.com>
+
+	Update the help message for --verify-all.
+
+2010-11-26  Zoltan Varga  <vargaz at gmail.com>
+
+	Define MONO_ARCH_INIT_TOP_LMF_ENTRY for all architectures.
+
+2010-11-26  Zoltan Varga  <vargaz at gmail.com>
+
+	Remove unused lmf->ebp field on arm.
+
+2010-11-26  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* method-to-ir.c (mono_method_to_ir): Check if TOS is store
+	compatible with the return type of the current method.
+
+	Fixes #655497
+
+2010-11-26  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* mini.c (mini_assembly_can_skip_verification): Dynamic methods
+	have a different wrapper kind than regular methods.
+
+	FIxes #655497 under sandbox.
+
+2010-11-26  Zoltan Varga  <vargaz at gmail.com>
+
+	Avoid parsing of /proc entries on ppc when cross-compiling.
+
+2010-11-26  Zoltan Varga  <vargaz at gmail.com>
+
+	Avoid emitting uninitialized memory into the AOT image.
+
+2010-11-26  Zoltan Varga  <vargaz at gmail.com>
+
+	Make Int32.MinValue/-1 throw OverflowException on ppc too.
+
+2010-11-26  Zoltan Varga  <vargaz at gmail.com>
+
+	Update a http link.
+
+2010-11-26  Zoltan Varga  <vargaz at gmail.com>
+
+	Commit the iphone abi support changes for ARM.
+
+2010-11-26  Zoltan Varga  <vargaz at gmail.com>
+
+	Simplify the arm prolog/epilog generation by not saving the sp to
+	the stack, its not needed.
+
+2010-11-26  Zoltan Varga  <vargaz at gmail.com>
+
+	Implement frame pointer elimination for arm.
+
+2010-11-25  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix stack alignment when resuming from a signal handler in the
+	soft debugger. Fixes #647464.
+
+2010-11-25  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix another place.
+
+2010-11-25  Zoltan Varga  <vargaz at gmail.com>
+
+	Throw an OverflowException on Int32.MinValue/-1 when using the JIT
+	icall too.
+
+2010-11-24  Andreia Gaita  <shana at jitted.com>
+
+	[Moon] Speed up the moonlight build by stripping it down to the
+	bare basics
+
+2010-11-24  Zoltan Varga  <vargaz at gmail.com>
+
+	Make some changes to the stack overflow handling code so it works
+	to some degree even if the kernel doesn't give us the fault
+	address.
+
+2010-11-24  Zoltan Varga  <vargaz at gmail.com>
+
+	Disable a test which exposes mcs bug #646744.
+
+2010-11-23  Zoltan Varga  <vargaz at gmail.com>
+
+	Disable a PS3 test, fix up the argument processing in the Test
+	Driver.
+
+2010-11-21  Zoltan Varga  <vargaz at gmail.com>
+
+	Free the JIT tls data for the main thread.
+
+2010-11-21  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix some small memory leaks.
+
+2010-11-21  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix a warning.
+
+2010-11-20  Zoltan Varga  <vargaz at gmail.com>
+
+	Increase maximum size of ppc prolog. Fixes #654460.
+
+2010-11-19  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix the previous arm EH change.
+
+2010-11-19  Zoltan Varga  <vargaz at gmail.com>
+
+	Load dependent assemblies of an aot image from the assembly's
+	basedir. Fixes #654850.
+
+2010-11-19  Zoltan Varga  <vargaz at gmail.com>
+
+	Set the thumb bit in the CPSR when resuming from a signal handler
+	to a thumb function on arm.
+
+2010-11-19  Zoltan Varga  <vargaz at gmail.com>
+
+	Improve tail call support on x86 too.
+
+2010-11-18  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix an assert in single stepping if an IL offset doesn't
+	correspond to a seq point. Fixes #654694.
+
+2010-11-18  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix infinite recursion in the CompareExchange aot code.
+
+2010-11-18  Paolo Molaro  <lupus at oddwiz.org>
+
+	Provide better coverage of jitted methods to the profiler.
+
+	Sometimes we use wrapper methods or other tricks under the hood,
+	but we provided to the profiler some inconsistent information, for
+	example the MonoMethod pointer in enter/leave events could be
+	different from the one used in reporting jit compilation. This
+	patch introduces a concept of aliased methods: more than one
+	MonoMethod pointer could correspond to the same jit info and as
+	such, more end_jit notifications can happen for the same compiled
+	code. This also means, in turn, that you can get a end_jit
+	notification for MonoMethod pointers that weren't reported in a
+	start_jit event. This partially reverts the change in
+	2e0067422b9cb, which doesn't have an associated bug report anyway
+	(this change instead fixes the issue with unresolved methods in
+	the log profiler).
+
+2010-11-18  Zoltan Varga  <vargaz at gmail.com>
+
+	Pop the arguments to the throw trampoline from the stack on x86.
+	Fixes #654322.
+
+2010-11-16  Zoltan Varga  <vargaz at gmail.com>
+
+	Bump the max size of the arm prolog to prevent overflows.
+
+2010-11-16  Zoltan Varga  <vargaz at gmail.com>
+
+	Remove a debug printf.
+
+2010-11-16  Zoltan Varga  <vargaz at gmail.com>
+
+	Fail LLVM compilation when using sgen + OP_STOREV_MEMBASE with
+	structs with reference fields. Fixes #653842.
+
+2010-11-16  Zoltan Varga  <vargaz at gmail.com>
+
+	Special case Interlocked.CompareExchange<T> in the aot runtime.
+
+2010-11-16  Zoltan Varga  <vargaz at gmail.com>
+
+	Improve tail call support on amd64 to support more methods, not
+	just ones whose signature is equal to their caller.
+
+2010-11-15  Zoltan Varga  <vargaz at gmail.com>
+
+	Remove an unneccesary assert which is hit when a double is passed
+	in split reg-stack in soft-float mode on non-EABI arm.
+
+2010-11-14  Zoltan Varga  <vargaz at gmail.com>
+
+	Remove the unused and incomplete CMake build scripts for now.
+
+2010-11-13  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix the DISABLE_JIT build.
+
+2010-11-13  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix the previous change.
+
+2010-11-13  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix build breakage on platforms without execvp.
+
+2010-11-12  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix a ppc cross compile problem.
+
+2010-11-11  Zoltan Varga  <vargaz at gmail.com>
+
+	Remove one more compile-time dependency on sgen.
+
+2010-11-11  Zoltan Varga  <vargaz at gmail.com>
+
+	Define mono_gc_get_card_table () for boehm/null gc too, to reduce
+	the number of sgen dependencies in mini/.
+
+2010-11-05  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Handle OOM with string interning.
+
 2010-11-10  Zoltan Varga  <vargaz at gmail.com>
 
 	When single stepping from a exception throw site, single step to
 	the catch site. Fixes #652590.
 
+2010-11-10  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix the --enable-shared=no build.
+
+2010-11-10  Zoltan Varga  <vargaz at gmail.com>
+
+	Add an AOT flag for aot images compiled with soft-debugging
+	support, and avoid loading aot images without this flag when
+	running with the soft debugger.
+
+2010-11-09  Geoff Norton  <grompf at sublimeintervention.com>
+
+	[OSX] Prevent an invalid write to mono_lmf_addr
+
+	mono_set_lmf () calls *(mono_get_lmf_addr ()) = lmf, but
+	mono_get_lmf_addr could potentially point to the address we just
+	g_free'd. Ensure that we clear the settings, before freeing the
+	memory.
+
+2010-11-09  Zoltan Varga  <vargaz at gmail.com>
+
+	Add a workaround for a failed assert in the amd64 EH code which
+	happens when running under the soft debugger.
+
+2010-11-09  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix a warning.
+
 2010-11-08  Zoltan Varga  <vargaz at gmail.com>
 
 	Fix a typo in process_breakpoint_inner which doesn't break our
 	tests for some reason.
 
+2010-11-08  Zoltan Varga  <vargaz at gmail.com>
+
+	Transition ves_icall_get_frame_info () to use find_jit_info_ext
+	(), remove the managed->native wrapper hacks.
+
+2010-11-08  Paolo Molaro  <lupus at oddwiz.org>
+
+	* mini-exceptions.c: sometimes an allocation happens at thread
+	startup where the data structures are not yet setup to allow stack
+	walking. If we request a stack trace there, we'd crash. To
+	reproduce the crash without this change, just run xsp with the log
+	profiler with the nocalls option.
+
+2010-11-08  Zoltan Varga  <vargaz at gmail.com>
+
+	Make frames of type FRAME_TYPE_MANAGED_TO_NATIVE act as a marker,
+	i.e. the caller should ignore them and unwind once more to get the
+	last managed frame and its associated context.
+
+2010-11-08  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix llvm build with LLVM 2.8.
+
+2010-11-06  Zoltan Varga  <vargaz at gmail.com>
+
+	Remove the s390 hacks from the EH code by decreasing the ip stored
+	into ctx->ip by 1, as it is done on all other platforms.
+
+2010-11-06  Zoltan Varga  <vargaz at gmail.com>
+
+	Add another assert to the amd64 EH code.
+
+2010-11-06  Zoltan Varga  <vargaz at gmail.com>
+
+	Add a few exceptions to the EH code to determine whenever they
+	hold on all platforms in all cases.
+
+2010-11-06  Zoltan Varga  <vargaz at gmail.com>
+
+	Reorganize mono_handle_exception_internal (): * Use
+	mono_find_jit_info_ext () * Avoid putting the main body of code
+	inside two if's.
+
+2010-11-06  Zoltan Varga  <vargaz at gmail.com>
+
+	Rework an if () inside an #ifdef since it confuses emacs.
+
 2010-11-05  Zoltan Varga  <vargaz at gmail.com>
 
 	Enlarge try-finally blocks preceeded by a Monitor.Enter () call to
@@ -16,6 +1433,18 @@
 
 2010-11-05  Zoltan Varga  <vargaz at gmail.com>
 
+	Get rid of gregs_from_ucontext (), use the normal UCONTEXT_REG_...
+	macros instead.
+
+2010-11-05  Zoltan Varga  <vargaz at gmail.com>
+
+	Unify stack walking functions: * Rename
+	mono_jit_walk_stack_from_ctx_in_thread to mono_walk_stack. * Make
+	the old stack walker use this one. * Remove the old
+	mono_walk_stack functions.
+
+2010-11-05  Zoltan Varga  <vargaz at gmail.com>
+
 	Fix a bug introduced by the previous change to
 	mono_jit_walk_stack_from_ctx_in_thread ().
 
@@ -32,10 +1461,28 @@
 
 	Fix gshared support in the soft debugger. Fixes #651251.
 
-2010-11-02  Marek Habersack  <grendel at twistedcode.net>
+2010-11-04  Geoff Norton  <grompf at sublimeintervention.com>
 
-	[runtime] mono_cfg_set_exception is not present in 2.8. Fixes the
-	build.
+	[RUNTIME] Ensure that we initialize the cpu for every thread [Bug
+	#650439]
+
+	It appears that on OSX the FPU settings on x86/amd64 are not
+	inherited to child threads of a process, leading to differences in
+	precision between the main thread and the sub thread. We now call
+	mono_arch_cpu_init on every thread on every platform
+
+2010-11-01  Zoltan Varga  <vargaz at gmail.com>
+
+	Include JIT time in --stats output.
+
+2010-11-01  Zoltan Varga  <vargaz at gmail.com>
+
+	Avoid adding generic classes during non-full AOT, since it leads
+	to a huge code blowup.
+
+2010-11-01  Zoltan Varga  <vargaz at gmail.com>
+
+	Don't save xdebug info during AOT compilation.
 
 2010-11-01  Zoltan Varga  <vargaz at gmail.com>
 
@@ -45,18 +1492,54 @@
 
 	Avoid asserts if a forced inline fails. Fix typos. Fixes #650407.
 
+2010-10-31  Zoltan Varga  <vargaz at gmail.com>
+
+	Disable inlining if the assembly has a DebuggableAttribute with
+	the IsJITOptimizerDisabled flag set. Fixes #604486.
+
 2010-10-30  Brian Luczkiewicz  <brian at sooloos.com>
 
 	Enable --aot (but not --aot=full) on osx/x86
 
 2010-10-31  Zoltan Varga  <vargaz at gmail.com>
 
+	Fix the amd64 dyn call code after the this passing changes.
+
+2010-10-31  Zoltan Varga  <vargaz at gmail.com>
+
+	Return information from decode_method_ref () in a MethodRef
+	structure instead of a bunch of arguments.
+
+2010-10-31  Zoltan Varga  <vargaz at gmail.com>
+
 	Fix the generation of GenericEqualityComparer () instances in AOT.
 
+2010-10-31  Zoltan Varga  <vargaz at gmail.com>
+
+	Rework decoding of method references in the AOT runtime. * Improve
+	the hashing of methods to include generic arguments * Get rid of
+	can_method_ref_match_method (), use a 'target' argument to
+	decode_method_ref () instead. * Bump corlib file format version.
+
 2010-10-30  Geoff Norton  <grompf at sublimeintervention.com>
 
 	Fix the build
 
+2010-10-30  Koushik Dutta  <koushd at gmail.com>
+
+	Fix Android build. MINI_THREAD_VAR_OFFSET needs to be defined as
+	MONO_THREAD_VAR_OFFSET (which returns -1).
+
+2010-10-30  Zoltan Varga  <vargaz at gmail.com>
+
+	Int32.MinValue/-1 should throw OverflowException, not
+	ArithmeticException. Our tests didn't catch this because the
+	former is a subclass of the latter. Fixes #649889.
+
+2010-10-30  Zoltan Varga  <vargaz at gmail.com>
+
+	Update the LLVM backend to latest LLVM SVN.
+
 2010-10-28  Geoff Norton  <grompf at sublimeintervention.com>
 
 	[OSX] Fix debug=casts on OSX (Bug: 639172)
@@ -74,6 +1557,10 @@
 
 	Fix some counters under 32bits.
 
+2010-10-26  Zoltan Varga  <vargaz at gmail.com>
+
+	Mark tls_get with clob:c on arm.
+
 2010-10-25  Zoltan Varga  <vargaz at gmail.com>
 
 	Disable catchpoints when the DISABLE_BREAKPOINTS flag is used
@@ -99,10 +1586,77 @@
 	Avoid trying to read the gc name in the AOT runtime from older AOT
 	images. Fixes #647918.
 
+2010-10-19  Zoltan Varga  <vargaz at gmail.com>
+
+	* mini/exceptions-x86.c: Turn off exception callback filtering on
+	WoW64. This allows managed exceptions to actually work when using
+	32bit mono on 64bit Windows.
+
+	License: MIT/X11
+
 2010-10-19  Tak  <levi at unity3d.com>
 
 	[Fix] Ensure that exceptions are propagated when embedding
 
+2010-10-17  Zoltan Varga  <vargaz at gmail.com>
+
+	Enable a more specialized version of the MONO_INST_FAULT removal
+	optimization which is safe in the face of llvm optimizations.
+	Flush stdout before dumping llvm methods since LLVM's outs ()
+	seems to use a different fd/stream.
+
+2010-10-17  Zoltan Varga  <vargaz at gmail.com>
+
+	Implement passing of this as the first argument for ia64
+	correctly.
+
+2010-10-16  Zoltan Varga  <vargaz at gmail.com>
+
+	Really fix the ia64 build.
+
+2010-10-16  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix a warning.
+
+2010-10-15  Zoltan Varga  <vargaz at gmail.com>
+
+	Enable MONO_ARCH_HAVE_TLS_GET on arm platforms that support it.
+
+2010-10-15  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix LLVM backend build with latest LLVM SVN.
+
+2010-10-15  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix ia64 build.
+
+2010-10-15  Zoltan Varga  <vargaz at gmail.com>
+
+	Rename find_jit_info_no_ext to simply find_jit_info ().
+
+2010-10-14  Zoltan Varga  <vargaz at gmail.com>
+
+	Get rid of the old mono_arch_find_jit_info functions + defines as
+	all platforms support the new API now.
+
+2010-10-14  Zoltan Varga  <vargaz at gmail.com>
+
+	Transition s390/mips/ia64 to use mono_arch_find_jit_info_ext.
+
+2010-10-14  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* mini-amd64.c (mono_arch_install_handler_block_guard): Implement
+	this is the same fashion as of x86.
+
+	* tramp-amd64.c (mono_arch_create_handler_block_trampoline): Same
+	as x86 just taking call conv into account.
+
+	* mini-amd64.h: Enable guard support.
+
+2010-10-14  Zoltan Varga  <vargaz at gmail.com>
+
+	Transition sparc to use mono_arch_find_jit_info_ext.
+
 2010-10-14  Zoltan Varga  <vargaz at gmail.com>
 
 	Fix crashes in the AOT compiler when the loaded LLVM module is
@@ -112,10 +1666,133 @@
 
 	Update the IMT thunk creation code on sparc to support net 4.0.
 
+2010-10-14  Geoff Norton  <grompf at sublimeintervention.com>
+
+	[android] pthread_kill cannot be used safely on android
+
+	Android's fork() function does not properly update the
+	pthread_internal_t->threadid variable to point to the tid of the
+	fork()'d thread, and instead still points to the pid of zygote. As
+	a result we need to track the android tid's manually since
+	gettid() is sane, and use an alternate to pthread_kill on android
+	Additionally, disable sgen support on android until the same work
+	has been done there
+
+	r: kumpera, vargaz
+
+2010-10-12  Zoltan Varga  <vargaz at gmail.com>
+
+	Move the helper signatures along with their init function to
+	method-to-ir.c.
+
+2010-10-11  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* mini-exceptions.c (mono_find_jit_info): Treat dynamic method
+	wrappers as managed methods.
+
+2010-10-11  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Remove warnings
+
+2010-10-11  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix full-aot support for the stelemref wrappers.
+
+2010-10-08  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* method-to-ir.c (mono_method_to_ir): Emit a virtual call to the
+	new faster stelemref wrapper.
+
+	This schema uses 4 wrappers instead of one and puts it into the
+	vtable of vectors of reference types.
+
+	This change improves a synthetic benchmark of an equal mix of
+	stores as compiling corlib by 25%.
+
+	It improves pystones by 3-4%.
+
 2010-10-08  Zoltan Varga  <vargaz at gmail.com>
 
 	Fix the sparc build.
 
+2010-10-07  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* method-to-ir.c: Call those functions instead of their icall
+	versions. This speeds up non gshared cases by up to 3x and gshared
+	by up to 2x.
+
+	Those wrappers are not inlined since the register allocator
+	doesn't handle well so the minor speedup is not worth be
+	significant bloat introduced.
+
+2010-10-07  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* method-to-ir.c (handle_castclass): Emit gsharing code for cast
+	with caching.
+
+	* method-to-ir.c (handle_isinst):
+
+	* mini-generic-sharing.c: Implement MONO_RGCTX_INFO_CAST_CACHE
+	slot type. It's a 2 word domain allocated memory block with the
+	cache on the first word and the vtable on the second.
+
+	This design does a single rgctx fetch instead of two. It's a bit
+	faster and can potentialy save some slots.
+
+2010-10-07  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* jit-icalls.h: Export new icalls.
+
+	* mini.c (mini_init): Register new icalls.
+
+	* method-to-ir.c: Call into cache aware version of type test ops
+	for types with variant generic arguments.
+
+	This patch replaces direct calls to mono_object_castclass
+	mono_object_isisnt to functions that check a cache first. The
+	cache is per managed code callsite so the hit ratio is very high.
+
+2010-10-07  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* method-to-ir.c: Casts to generic types with variant argument can
+	use the regular fast path if all variant arguments are valuetypes.
+
+2010-10-07  Zoltan Varga  <vargaz at gmail.com>
+
+	Add --debug=casts support for ArrayTypeMismatchException's.
+
+2010-10-07  Zoltan Varga  <vargaz at gmail.com>
+
+	Centralize the setting of cfg->exception_type and the branching to
+	load_error to ease debugging.
+
+2010-10-07  Zoltan Varga  <vargaz at gmail.com>
+
+	Remove the MonoGenericContext/MonoMethod arguments from the
+	get_this_arg () and get_unbox_trampoline () family of functions,
+	they are no longer needed after the this parameter passing
+	changes.
+
+2010-10-06  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix a warning.
+
+2010-10-05  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Implement asm monitor/enter exit for amd64-sgen.
+
+2010-10-03  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Implement x86 support for monitor enter/exit fastpaths under sgen
+
+2010-09-30  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* method-to-ir.c (handle_delegate_ctor): Emit write barriers under
+	sgen.
+
+	* method-to-ir.c (mono_method_to_ir): Enable delegate .ctor
+	optimization under sgen.
+
 2010-10-01  Zoltan Varga  <vargaz at gmail.com>
 
 	Check the debugger_thread_exited condition in a loop to guard
@@ -125,6 +1802,127 @@
 
 	Fix code buffer reallocation check for OP_SWITCH on arm.
 
+2010-09-29  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Fix arm and ppc builds
+
+2010-09-29  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Handle error creating xdb.il
+
+	If creating the xdb.il file fails, disable the mono support for
+	debugging in gdb. Managed symbol names won't be displayed in stack
+	traces.
+
+	Fixes bug #642625.
+
+2010-09-27  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Add comment on the reason of a non obvious check.
+
+2010-09-27  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* method-to-ir.c (mono_method_to_ir): Check for null on delegate
+	construction so closed-on-null is not allowed when using the
+	delegate .ctor.
+
+	If the delegate been constructed is open-on-target then the null
+	check must not be applied as the IL pattern is:
+
+	ldnull ldftn void Bla::Foo(int) newobj Bar (object, native int) //
+	delegate void Bar(Bla,int)
+
+2010-09-27  Zoltan Varga  <vargaz at gmail.com>
+
+	Mov the jit map generation code from tramp-x86.c to
+	mini-trampolines.c, add amd64 support.
+
+2010-09-27  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Record all trampolines to the jitmap.
+
+2010-09-25  Zoltan Varga  <vargaz at gmail.com>
+
+	Enable support for wrapping non Exception subclasses in
+	RuntimeWrappedException objects, implement support for
+	RuntimeCompatibilityAttribute.
+
+2010-09-24  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix AOT support for OP_GC_CARD_TABLE on amd64.
+
+2010-09-24  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* cpu-amd64.md: Add card_table_wbarrier.
+
+	* mini-amd64.c (mono_arch_output_basic_block): Emit the new OP.
+
+	* mini-amd64.c (mono_arch_emit_exceptions): Handle another kind of
+	patch-info - GC_CARD_TABLE_ADDR. This is required because we can
+	neither have 64bits immediates with amd64 or 2 scratch regiters
+	with current regalloc.
+
+	* mini-amd64.h: Define MONO_ARCH_HAVE_CARD_TABLE_WBARRIER.
+
+2010-09-24  Zoltan Varga  <vargaz at gmail.com>
+
+	Add a few variants of the MONO_GC_REGISTER_ROOT () to make most
+	roots precisely tracked and to avoid registering locations
+	pointing to memory allocated by mono_gc_alloc_fixed () as roots
+	under SGEN.
+
+2010-09-24  Zoltan Varga  <vargaz at gmail.com>
+
+	Disable the wrapped exception code for now, it break some of our
+	tests.
+
+2010-09-23  Zoltan Varga  <vargaz at gmail.com>
+
+	Wrap thrown objects which do not derive from Exception into a
+	RuntimeWrappedException. Fixes #640687.
+
+2010-09-21  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* mini.c (mini_method_compile): Break on verification failure.
+
+2010-09-16  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* cpu-x86.md: Increase the max size of OP_CARDTABLE.
+
+	* mini-x86.c (mono_arch_output_basic_block): If a mask is
+	returned, emit code for it.
+
+2010-09-19  Zoltan Varga  <vargaz at gmail.com>
+
+	Add store_mem_imm to the x86 machine description. Fixes #640377.
+
+2010-09-18  Zoltan Varga  <vargaz at gmail.com>
+
+	Move the setting of mono_lmf, mono_lmf_addr and mono_jit_tls into
+	separate functions to reduce the number of #ifdefs.
+
+2010-09-18  Zoltan Varga  <vargaz at gmail.com>
+
+	Make MonoThreadCleanupFunc take an InternalThread instead of a
+	Thread. Move its definition to threads-types.h since it is not
+	public API. Use this to remove the workaround in thread_cleanup ()
+	so the JIT info for threads is properly cleaned up at shutdown.
+
+2010-09-16  Rolf Bjarne Kvinge  <RKvinge at novell.com>
+
+	Only build one version of libmonoruntimemoon.la (the convenience
+	lib)
+
+2010-09-16  Rolf Bjarne Kvinge  <RKvinge at novell.com>
+
+	Add a configure option to disable building the shared libmono
+	library
+
+2010-09-14  Chris Toshok  <toshok at gmail.com>
+
+	built a separate libmonoruntime for moonlight, so we can do
+	-DMOONLIGHT just in the moonlight lib instead of globally.
+
 2010-09-13  Geoff Norton  <gnorton at novell.com>
 
 	The tid is passed around internally as a unsigned value.
@@ -132,6 +1930,11 @@
 	We were having a crash on OSX due to thread->tid not equalling the
 	passed tid due to a signedness issue.
 
+2010-09-13  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix a problem in mono_arch_get_argument_info () introduced by the
+	last change.
+
 2010-09-10  Geoff Norton  <gnorton at novell.com>
 
 	Forward port this change for MonoVS
@@ -140,6 +1943,49 @@
 
 	fix typo
 
+2010-09-10  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix x86 trace support after the callconv changes.
+
+2010-09-09  Chris Toshok  <toshok at gmail.com>
+
+	move the call to mono_gc_base_init into mono_debug_init
+
+	mono_debug_init is a public embedding interface and calls into
+	mono_debugger_initialize, which registers a GC root. driver.c
+	calls mono_gc_base_init before calling mono_debug_init for this
+	reason, but that's not an option for embedding (as
+	mono_gc_base_init is internal.)
+
+	since mono_gc_base_init is idempotent, just add a call to
+	mono_debug_init (and remove the driver.c call). Document (in
+	sgen-gc and sgen-gc.h) the fact that although mono_gc_base_init is
+	idempotent, changing LOCK_INIT to something non-idempotent will
+	break this.
+
+2010-09-01  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* method-to-ir.c (inline_method): We verify the inlined method
+	before variables are created for locals since this can assert.
+	Some check on locals are only done by the IL verifier so it's not
+	enough to just check if the header decoded fine.
+
+	* mini.c (mini_method_verify): Add parameter telling if we should
+	fail the compile or not.
+
+	* mini.c (mono_compile_is_broken): Pass the method explicitly as
+	it now can be diferent than cfg->method.
+
+	* mini.h: Export mono_compile_is_broken instead of
+	mini_method_verify.
+
+	Fixes #560200
+
+2010-09-02  Zoltan Varga  <vargaz at gmail.com>
+
+	Add some comments about the current state of the precise stack
+	scanning code.
+
 2010-09-01  Geoff Norton  <gnorton at novell.com>
 
 	Fix build of mono-basic on ppc64
diff --git a/mono/mini/Makefile.am b/mono/mini/Makefile.am
index 5bf3fe4..e95043a 100644
--- a/mono/mini/Makefile.am
+++ b/mono/mini/Makefile.am
@@ -24,6 +24,14 @@ sgen_libs = \
 	$(monodir)/mono/utils/libmonoutils.la \
 	$(GLIB_LIBS)
 
+if MOONLIGHT
+moon_libs = \
+	$(monodir)/mono/metadata/libmonoruntimemoon.la	\
+	$(monodir)/mono/io-layer/libwapi.la	\
+	$(monodir)/mono/utils/libmonoutils.la \
+	$(GLIB_LIBS)
+endif
+
 static_libs=	\
 	$(monodir)/mono/metadata/libmonoruntime-static.la	\
 	$(monodir)/mono/io-layer/libwapi.la	\
@@ -95,17 +103,30 @@ endif
 
 noinst_PROGRAMS = genmdesc
 
-lib_LTLIBRARIES = libmono-2.0.la $(sgen_libraries)
+if SHARED_MONO
+shared_libraries = libmono-2.0.la $(sgen_libraries)
+endif
+
+lib_LTLIBRARIES = $(shared_libraries)
 noinst_LTLIBRARIES = libmono-static.la $(sgen_static_libraries)
 
 if MOONLIGHT
 noinst_LTLIBRARIES += libmono-moon.la
+moon-do-build: $(BUILT_SOURCES) mono libmono-moon.la
+moon-do-clean: maintainer-clean-generic
+	-test -z "mono$(EXEEXT)" || rm -f mono$(EXEEXT)
+	-test -z "libmono-moon.la" || rm -f libmono-moon.la
 endif
 
 if LOADED_LLVM
 lib_LTLIBRARIES += libmono-llvm.la
 libmono_llvm_la_SOURCES = mini-llvm.c mini-llvm-cpp.cpp
-libmono_llvm_la_LIBADD = $(top_builddir)/mono/mini/libmono-$(API_VER).la $(LLVM_LIBS) $(LLVM_LDFLAGS) $(libs)
+libmono_llvm_la_LIBADD = $(LLVM_LIBS) $(LLVM_LDFLAGS)
+if PLATFORM_DARWIN
+libmono_llvm_la_LDFLAGS=-undefined suppress
+else
+libmono_llvm_la_LIBADD += $(top_builddir)/mono/mini/libmono-$(API_VER).la $(libs)
+endif
 endif
 
 endif
@@ -369,7 +390,6 @@ test_sources = 			\
 	basic-simd.cs
 
 regtests=basic.exe basic-float.exe basic-long.exe basic-calls.exe objects.exe arrays.exe basic-math.exe exceptions.exe iltests.exe devirtualization.exe generics.exe basic-simd.exe
-fsatests=basic.exe basic-float.exe basic-long.exe basic-calls.exe objects.exe arrays.exe basic-math.exe exceptions.exe devirtualization.exe basic-simd.exe
 
 if X86
 if MONO_DEBUGGER_SUPPORTED
@@ -482,28 +502,36 @@ monobin_platform_ldflags=-framework CoreFoundation
 endif
 
 libmono_2_0_la_SOURCES = $(common_sources) $(llvm_sources) $(arch_sources) $(os_sources)
-libmono_2_0_la_CFLAGS = $(AM_CFLAGS) $(BOEHM_DEFINES) $(LIBGC_CFLAGS)
+libmono_2_0_la_CFLAGS = $(mono_CFLAGS)
+libmono_2_0_la_LIBADD = $(libs) $(LIBMONO_DTRACE_OBJECT)
 
 libmonosgen_2_0_la_SOURCES = $(libmono_2_0_la_SOURCES)
-libmonosgen_2_0_la_CFLAGS = $(AM_CFLAGS) $(SGEN_DEFINES)
+libmonosgen_2_0_la_CFLAGS = $(mono_sgen_CFLAGS)
+libmonosgen_2_0_la_LIBADD = $(sgen_libs) $(LIBMONO_DTRACE_OBJECT)
 
 if MOONLIGHT
 libmono_moon_la_SOURCES = $(libmono_2_0_la_SOURCES)
-libmono_moon_la_CFLAGS = $(AM_CFLAGS) $(BOEHM_DEFINES) $(LIBGC_CFLAGS)
+if MOONLIGHT_BOEHM
+libmono_moon_la_CFLAGS = $(mono_CFLAGS) $(MOONLIGHT_DEFINES)
+libmono_moon_la_LIBADD = $(moon_libs) $(libgc_libs) $(LIBMONO_DTRACE_OBJECT)
+else
+libmono_moon_la_CFLAGS = $(mono_sgen_CFLAGS) $(MOONLIGHT_DEFINES)
+libmono_moon_la_LIBADD = $(moon_libs) $(LIBMONO_DTRACE_OBJECT)
+endif
 endif
 
 libmono_static_la_SOURCES = $(libmono_2_0_la_SOURCES)
-libmono_static_la_CFLAGS = $(AM_CFLAGS) $(BOEHM_DEFINES) $(LIBGC_CFLAGS)
+libmono_static_la_CFLAGS = $(mono_CFLAGS)
 libmono_static_la_LDFLAGS = -static
 libmono_static_la_LIBADD = $(static_libs) $(MONO_DTRACE_OBJECT)
 
 libmonosgen_static_la_SOURCES = $(libmono_2_0_la_SOURCES)
-libmonosgen_static_la_CFLAGS = $(AM_CFLAGS) $(SGEN_DEFINES)
+libmonosgen_static_la_CFLAGS = $(mono_sgen_CFLAGS)
 libmonosgen_static_la_LDFLAGS = -static
 libmonosgen_static_la_LIBADD = $(sgenstatic_libs) $(MONO_DTRACE_OBJECT)
 
 nodist_libmono_static_la_SOURCES = $(nodist_libmono_la_SOURCES)
-nodist_libmono_static_la_CFLAGS = $(AM_CFLAGS) $(BOEHM_DEFINES) $(LIBGC_CFLAGS)
+nodist_libmono_static_la_CFLAGS = $(mono_CFLAGS)
 
 BURGSRC= $(common_BURGSRC) $(arch_BURGSRC)
 
@@ -511,19 +539,12 @@ libmonoincludedir = $(includedir)/mono-$(API_VER)/mono/jit
 
 libmonoinclude_HEADERS = jit.h
 
-libmono_2_0_la_LIBADD = \
-	$(libs) $(LIBMONO_DTRACE_OBJECT)
-
-libmonosgen_2_0_la_LIBADD = \
-	$(sgen_libs) $(LIBMONO_DTRACE_OBJECT)
-
-if MOONLIGHT
-libmono_moon_la_LIBADD = $(libmono_2_0_la_LIBADD)
-endif
-
 basic-simd.exe: basic-simd.cs
 	$(MCS) -out:$@ $< -r:TestDriver.dll -r:Mono.Simd.dll
 
+nacl.exe: nacl.cs
+	$(MCS) -out:$@ $< -r:TestDriver.dll -r:Mono.Simd.dll
+
 generics.exe: generics.cs TestDriver.dll generics-variant-types.dll
 	$(MCS) -out:$@ $< -r:TestDriver.dll -r:generics-variant-types.dll
 
@@ -605,34 +626,28 @@ checktests: $(regtests)
 rcheck: mono $(regtests)
 	$(RUNTIME) --regression $(regtests)
 
+LLVM_AOT_RUNTIME_OPTS=$(if $(LLVM),--llvm,)
+
 aotcheck: mono $(regtests)
 	rm -f *.exe.so
-	$(RUNTIME) --aot $(regtests) || exit 1
+	$(RUNTIME) $(LLVM_AOT_RUNTIME_OPTS) --aot $(regtests) || exit 1
 	for i in $(regtests); do $(RUNTIME_AOTCHECK) --regression $$i || exit 1; done
 	rm -f *.exe.so
 
+llvmaotcheck:
+	$(MAKE) aotcheck LLVM=1
+
 # This currently only works on amd64/arm
 fullaotcheck: mono $(regtests)
 	rm -rf fullaot-tmp
 	mkdir fullaot-tmp
 	cp $(CLASS)/mscorlib.dll $(CLASS)/System.Core.dll $(CLASS)/System.dll $(CLASS)/Mono.Posix.dll $(CLASS)/System.Configuration.dll $(CLASS)/System.Security.dll $(CLASS)/System.Xml.dll $(CLASS)/Mono.Security.dll $(CLASS)/Mono.Simd.dll $(regtests) generics-variant-types.dll TestDriver.dll fullaot-tmp/
 	cp $(regtests) fullaot-tmp/
-	MONO_PATH=fullaot-tmp $(top_builddir)/runtime/mono-wrapper --aot=full fullaot-tmp/* || exit 1
+	MONO_PATH=fullaot-tmp $(top_builddir)/runtime/mono-wrapper $(LLVM_AOT_RUNTIME_OPTS) --aot=full fullaot-tmp/* || exit 1
 	for i in $(regtests); do echo $$i; MONO_PATH=fullaot-tmp $(top_builddir)/runtime/mono-wrapper --full-aot fullaot-tmp/$$i --exclude '!FULLAOT' || exit 1; done
 
-fsacheck: mono $(fsatests) fsacheck.c generics.exe
-	rm -rf fsa-tmp
-	mkdir fsa-tmp
-	cp $(CLASS)/mscorlib.dll $(CLASS)/System.Core.dll $(CLASS)/System.dll $(CLASS)/Mono.Posix.dll $(CLASS)/System.Configuration.dll $(CLASS)/System.Security.dll $(CLASS)/System.Xml.dll $(CLASS)/Mono.Security.dll $(CLASS)/Mono.Simd.dll \
-	$(fsatests) generics-variant-types.dll TestDriver.dll fsa-tmp/
-	cp $(fsatests) fsa-tmp/
-	MONO_PATH=fsa-tmp $(top_builddir)/runtime/mono-wrapper --aot=full,static fsa-tmp/*.dll || exit 1
-	MONO_PATH=fsa-tmp $(top_builddir)/runtime/mono-wrapper --aot=full,static fsa-tmp/*.exe || exit 1
-	$(CC) -o $@.out -g -static $(VPATH)/fsacheck.c fsa-tmp/*.o \
-	-lmono-2.0 -lpthread -lm -ldl -lrt \
-	-DTARGET_X86 -L.libs -I${prefix}/include/mono-2.0 \
-	-I${prefix} -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
-	for i in $(fsatests); do echo $$i; MONO_PATH=fsa-tmp ./$@.out $$i || exit 1; done
+llvmfullaotcheck:
+	$(MAKE) fullaotcheck LLVM=1
 
 bench: mono test.exe
 	time env $(RUNTIME) --ncompile $(count) --compile Test:$(mtest) test.exe
diff --git a/mono/mini/Makefile.in b/mono/mini/Makefile.in
index 26a8e82..d4a08b0 100644
--- a/mono/mini/Makefile.in
+++ b/mono/mini/Makefile.in
@@ -42,6 +42,7 @@ target_triplet = @target@
 @JIT_SUPPORTED_TRUE at noinst_PROGRAMS = genmdesc$(EXEEXT)
 @JIT_SUPPORTED_TRUE@@MOONLIGHT_TRUE at am__append_1 = libmono-moon.la
 @JIT_SUPPORTED_TRUE@@LOADED_LLVM_TRUE at am__append_2 = libmono-llvm.la
+ at JIT_SUPPORTED_TRUE@@LOADED_LLVM_TRUE@@PLATFORM_DARWIN_FALSE at am__append_3 = $(top_builddir)/mono/mini/libmono-$(API_VER).la $(libs)
 subdir = mono/mini
 DIST_COMMON = README $(libmonoinclude_HEADERS) $(srcdir)/Makefile.am \
 	$(srcdir)/Makefile.in ChangeLog TODO
@@ -187,20 +188,35 @@ libmono_2_0_la_OBJECTS = $(am_libmono_2_0_la_OBJECTS)
 libmono_2_0_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
 	$(CXXFLAGS) $(libmono_2_0_la_LDFLAGS) $(LDFLAGS) -o $@
- at JIT_SUPPORTED_TRUE@am_libmono_2_0_la_rpath = -rpath $(libdir)
- at JIT_SUPPORTED_TRUE@@LOADED_LLVM_TRUE at libmono_llvm_la_DEPENDENCIES = $(top_builddir)/mono/mini/libmono-$(API_VER).la \
+ at JIT_SUPPORTED_TRUE@@SHARED_MONO_TRUE at am_libmono_2_0_la_rpath =  \
+ at JIT_SUPPORTED_TRUE@@SHARED_MONO_TRUE@	-rpath $(libdir)
+ at JIT_SUPPORTED_TRUE@@LOADED_LLVM_TRUE@@PLATFORM_DARWIN_FALSE at am__DEPENDENCIES_5 = $(top_builddir)/mono/mini/libmono-$(API_VER).la \
+ at JIT_SUPPORTED_TRUE@@LOADED_LLVM_TRUE@@PLATFORM_DARWIN_FALSE@	$(am__DEPENDENCIES_3)
+ at JIT_SUPPORTED_TRUE@@LOADED_LLVM_TRUE at libmono_llvm_la_DEPENDENCIES =  \
 @JIT_SUPPORTED_TRUE@@LOADED_LLVM_TRUE@	$(am__DEPENDENCIES_1) \
 @JIT_SUPPORTED_TRUE@@LOADED_LLVM_TRUE@	$(am__DEPENDENCIES_1) \
- at JIT_SUPPORTED_TRUE@@LOADED_LLVM_TRUE@	$(am__DEPENDENCIES_3)
+ at JIT_SUPPORTED_TRUE@@LOADED_LLVM_TRUE@	$(am__DEPENDENCIES_5)
 am__libmono_llvm_la_SOURCES_DIST = mini-llvm.c mini-llvm-cpp.cpp
 @JIT_SUPPORTED_TRUE@@LOADED_LLVM_TRUE at am_libmono_llvm_la_OBJECTS =  \
 @JIT_SUPPORTED_TRUE@@LOADED_LLVM_TRUE@	mini-llvm.lo \
 @JIT_SUPPORTED_TRUE@@LOADED_LLVM_TRUE@	mini-llvm-cpp.lo
 libmono_llvm_la_OBJECTS = $(am_libmono_llvm_la_OBJECTS)
+libmono_llvm_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+	$(CXXFLAGS) $(libmono_llvm_la_LDFLAGS) $(LDFLAGS) -o $@
 @JIT_SUPPORTED_TRUE@@LOADED_LLVM_TRUE at am_libmono_llvm_la_rpath =  \
 @JIT_SUPPORTED_TRUE@@LOADED_LLVM_TRUE@	-rpath $(libdir)
-am__DEPENDENCIES_5 = $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_4)
- at MOONLIGHT_TRUE@libmono_moon_la_DEPENDENCIES = $(am__DEPENDENCIES_5)
+ at MOONLIGHT_TRUE@am__DEPENDENCIES_6 = $(monodir)/mono/metadata/libmonoruntimemoon.la \
+ at MOONLIGHT_TRUE@	$(monodir)/mono/io-layer/libwapi.la \
+ at MOONLIGHT_TRUE@	$(monodir)/mono/utils/libmonoutils.la \
+ at MOONLIGHT_TRUE@	$(am__DEPENDENCIES_1)
+ at MOONLIGHT_BOEHM_FALSE@@MOONLIGHT_TRUE at libmono_moon_la_DEPENDENCIES =  \
+ at MOONLIGHT_BOEHM_FALSE@@MOONLIGHT_TRUE@	$(am__DEPENDENCIES_6) \
+ at MOONLIGHT_BOEHM_FALSE@@MOONLIGHT_TRUE@	$(am__DEPENDENCIES_4)
+ at MOONLIGHT_BOEHM_TRUE@@MOONLIGHT_TRUE at libmono_moon_la_DEPENDENCIES =  \
+ at MOONLIGHT_BOEHM_TRUE@@MOONLIGHT_TRUE@	$(am__DEPENDENCIES_6) \
+ at MOONLIGHT_BOEHM_TRUE@@MOONLIGHT_TRUE@	$(am__DEPENDENCIES_2) \
+ at MOONLIGHT_BOEHM_TRUE@@MOONLIGHT_TRUE@	$(am__DEPENDENCIES_4)
 am__libmono_moon_la_SOURCES_DIST = mini.c ir-emit.h method-to-ir.c \
 	decompose.c mini.h version.h optflags-def.h jit-icalls.h \
 	jit-icalls.c trace.c trace.h patch-info.h mini-ops.h \
@@ -311,17 +327,17 @@ am__objects_38 = $(am__objects_20) $(am__objects_21) $(am__objects_33) \
 @MOONLIGHT_TRUE at am_libmono_moon_la_OBJECTS = $(am__objects_38)
 libmono_moon_la_OBJECTS = $(am_libmono_moon_la_OBJECTS)
 @JIT_SUPPORTED_TRUE@@MOONLIGHT_TRUE at am_libmono_moon_la_rpath =
- at INCLUDED_LIBGC_FALSE@am__DEPENDENCIES_6 = $(am__DEPENDENCIES_1)
- at INCLUDED_LIBGC_TRUE@am__DEPENDENCIES_6 =  \
+ at INCLUDED_LIBGC_FALSE@am__DEPENDENCIES_7 = $(am__DEPENDENCIES_1)
+ at INCLUDED_LIBGC_TRUE@am__DEPENDENCIES_7 =  \
 @INCLUDED_LIBGC_TRUE@	$(monodir)/libgc/libmonogc-static.la
-am__DEPENDENCIES_7 =  \
+am__DEPENDENCIES_8 =  \
 	$(monodir)/mono/metadata/libmonoruntime-static.la \
 	$(monodir)/mono/io-layer/libwapi.la \
 	$(monodir)/mono/utils/libmonoutils.la $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_6)
- at DTRACE_G_REQUIRED_TRUE@@STATIC_MONO_TRUE at am__DEPENDENCIES_8 = mono-dtrace.$(OBJEXT)
-libmono_static_la_DEPENDENCIES = $(am__DEPENDENCIES_7) \
-	$(am__DEPENDENCIES_8)
+	$(am__DEPENDENCIES_7)
+ at DTRACE_G_REQUIRED_TRUE@@STATIC_MONO_TRUE at am__DEPENDENCIES_9 = mono-dtrace.$(OBJEXT)
+libmono_static_la_DEPENDENCIES = $(am__DEPENDENCIES_8) \
+	$(am__DEPENDENCIES_9)
 am__libmono_static_la_SOURCES_DIST = mini.c ir-emit.h method-to-ir.c \
 	decompose.c mini.h version.h optflags-def.h jit-icalls.h \
 	jit-icalls.c trace.c trace.h patch-info.h mini-ops.h \
@@ -446,10 +462,10 @@ libmono_static_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
 	$(CXXFLAGS) $(libmono_static_la_LDFLAGS) $(LDFLAGS) -o $@
 @JIT_SUPPORTED_TRUE at am_libmono_static_la_rpath =
-am__DEPENDENCIES_9 = $(monodir)/mono/metadata/libmonoruntimesgen.la \
+am__DEPENDENCIES_10 = $(monodir)/mono/metadata/libmonoruntimesgen.la \
 	$(monodir)/mono/io-layer/libwapi.la \
 	$(monodir)/mono/utils/libmonoutils.la $(am__DEPENDENCIES_1)
-libmonosgen_2_0_la_DEPENDENCIES = $(am__DEPENDENCIES_9) \
+libmonosgen_2_0_la_DEPENDENCIES = $(am__DEPENDENCIES_10) \
 	$(am__DEPENDENCIES_4)
 am__libmonosgen_2_0_la_SOURCES_DIST = mini.c ir-emit.h method-to-ir.c \
 	decompose.c mini.h version.h optflags-def.h jit-icalls.h \
@@ -572,14 +588,14 @@ am__objects_76 = $(am__objects_58) $(am__objects_59) $(am__objects_71) \
 	$(am__objects_75)
 am_libmonosgen_2_0_la_OBJECTS = $(am__objects_76)
 libmonosgen_2_0_la_OBJECTS = $(am_libmonosgen_2_0_la_OBJECTS)
- at JIT_SUPPORTED_TRUE@@SUPPORT_SGEN_TRUE at am_libmonosgen_2_0_la_rpath =  \
- at JIT_SUPPORTED_TRUE@@SUPPORT_SGEN_TRUE@	-rpath $(libdir)
-am__DEPENDENCIES_10 =  \
+ at JIT_SUPPORTED_TRUE@@SHARED_MONO_TRUE@@SUPPORT_SGEN_TRUE at am_libmonosgen_2_0_la_rpath = -rpath \
+ at JIT_SUPPORTED_TRUE@@SHARED_MONO_TRUE@@SUPPORT_SGEN_TRUE@	$(libdir)
+am__DEPENDENCIES_11 =  \
 	$(monodir)/mono/metadata/libmonoruntimesgen-static.la \
 	$(monodir)/mono/io-layer/libwapi.la \
 	$(monodir)/mono/utils/libmonoutils.la $(am__DEPENDENCIES_1)
-libmonosgen_static_la_DEPENDENCIES = $(am__DEPENDENCIES_10) \
-	$(am__DEPENDENCIES_8)
+libmonosgen_static_la_DEPENDENCIES = $(am__DEPENDENCIES_11) \
+	$(am__DEPENDENCIES_9)
 am__libmonosgen_static_la_SOURCES_DIST = mini.c ir-emit.h \
 	method-to-ir.c decompose.c mini.h version.h optflags-def.h \
 	jit-icalls.h jit-icalls.c trace.c trace.h patch-info.h \
@@ -727,10 +743,10 @@ genmdesc_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
 	$(LDFLAGS) -o $@
 am_mono_OBJECTS = mono-main.$(OBJEXT)
 mono_OBJECTS = $(am_mono_OBJECTS)
- at LOADED_LLVM_FALSE@am__DEPENDENCIES_11 = $(am__DEPENDENCIES_1) \
+ at LOADED_LLVM_FALSE@am__DEPENDENCIES_12 = $(am__DEPENDENCIES_1) \
 @LOADED_LLVM_FALSE@	$(am__DEPENDENCIES_1)
 mono_DEPENDENCIES = $(MONO_LIB) $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_11) $(am__DEPENDENCIES_8)
+	$(am__DEPENDENCIES_12) $(am__DEPENDENCIES_9)
 mono_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
 	--mode=link $(CCLD) $(mono_CFLAGS) $(CFLAGS) $(mono_LDFLAGS) \
 	$(LDFLAGS) -o $@
@@ -738,7 +754,7 @@ am__objects_96 = mono_sgen-main.$(OBJEXT)
 am_mono_sgen_OBJECTS = $(am__objects_96)
 mono_sgen_OBJECTS = $(am_mono_sgen_OBJECTS)
 mono_sgen_DEPENDENCIES = $(MONO_SGEN_LIB) $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_11) $(am__DEPENDENCIES_8)
+	$(am__DEPENDENCIES_12) $(am__DEPENDENCIES_9)
 mono_sgen_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(mono_sgen_CFLAGS) \
 	$(CFLAGS) $(mono_sgen_LDFLAGS) $(LDFLAGS) -o $@
@@ -746,9 +762,9 @@ am__monow_SOURCES_DIST = main.c
 am__objects_97 = main.$(OBJEXT)
 @HOST_WIN32_TRUE at am_monow_OBJECTS = $(am__objects_97)
 monow_OBJECTS = $(am_monow_OBJECTS)
-am__DEPENDENCIES_12 = $(MONO_LIB) $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_11) $(am__DEPENDENCIES_8)
- at HOST_WIN32_TRUE@monow_DEPENDENCIES = $(am__DEPENDENCIES_12)
+am__DEPENDENCIES_13 = $(MONO_LIB) $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_12) $(am__DEPENDENCIES_9)
+ at HOST_WIN32_TRUE@monow_DEPENDENCIES = $(am__DEPENDENCIES_13)
 monow_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
 	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(monow_LDFLAGS) \
 	$(LDFLAGS) -o $@
@@ -872,6 +888,7 @@ MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
 MONO_DL_NEED_USCORE = @MONO_DL_NEED_USCORE@
 MONO_NACL_ALIGN_MASK_OFF = @MONO_NACL_ALIGN_MASK_OFF@
+MOONLIGHT_DEFINES = @MOONLIGHT_DEFINES@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
@@ -1002,6 +1019,12 @@ sgen_libs = \
 	$(monodir)/mono/utils/libmonoutils.la \
 	$(GLIB_LIBS)
 
+ at MOONLIGHT_TRUE@moon_libs = \
+ at MOONLIGHT_TRUE@	$(monodir)/mono/metadata/libmonoruntimemoon.la	\
+ at MOONLIGHT_TRUE@	$(monodir)/mono/io-layer/libwapi.la	\
+ at MOONLIGHT_TRUE@	$(monodir)/mono/utils/libmonoutils.la \
+ at MOONLIGHT_TRUE@	$(GLIB_LIBS)
+
 static_libs = \
 	$(monodir)/mono/metadata/libmonoruntime-static.la	\
 	$(monodir)/mono/io-layer/libwapi.la	\
@@ -1043,12 +1066,17 @@ genmdesc_CFLAGS = $(AM_CFLAGS)
 @JIT_SUPPORTED_TRUE@@SUPPORT_SGEN_TRUE at sgen_binaries = mono-sgen
 @JIT_SUPPORTED_TRUE@@SUPPORT_SGEN_TRUE at sgen_libraries = libmonosgen-2.0.la
 @JIT_SUPPORTED_TRUE@@SUPPORT_SGEN_TRUE at sgen_static_libraries = libmonosgen-static.la
- at JIT_SUPPORTED_TRUE@lib_LTLIBRARIES = libmono-2.0.la $(sgen_libraries) \
+ at JIT_SUPPORTED_TRUE@@SHARED_MONO_TRUE at shared_libraries = libmono-2.0.la $(sgen_libraries)
+ at JIT_SUPPORTED_TRUE@lib_LTLIBRARIES = $(shared_libraries) \
 @JIT_SUPPORTED_TRUE@	$(am__append_2)
 @JIT_SUPPORTED_TRUE at noinst_LTLIBRARIES = libmono-static.la \
 @JIT_SUPPORTED_TRUE@	$(sgen_static_libraries) $(am__append_1)
 @JIT_SUPPORTED_TRUE@@LOADED_LLVM_TRUE at libmono_llvm_la_SOURCES = mini-llvm.c mini-llvm-cpp.cpp
- at JIT_SUPPORTED_TRUE@@LOADED_LLVM_TRUE at libmono_llvm_la_LIBADD = $(top_builddir)/mono/mini/libmono-$(API_VER).la $(LLVM_LIBS) $(LLVM_LDFLAGS) $(libs)
+ at JIT_SUPPORTED_TRUE@@LOADED_LLVM_TRUE at libmono_llvm_la_LIBADD =  \
+ at JIT_SUPPORTED_TRUE@@LOADED_LLVM_TRUE@	$(LLVM_LIBS) \
+ at JIT_SUPPORTED_TRUE@@LOADED_LLVM_TRUE@	$(LLVM_LDFLAGS) \
+ at JIT_SUPPORTED_TRUE@@LOADED_LLVM_TRUE@	$(am__append_3)
+ at JIT_SUPPORTED_TRUE@@LOADED_LLVM_TRUE@@PLATFORM_DARWIN_TRUE at libmono_llvm_la_LDFLAGS = -undefined suppress
 mono_SOURCES = \
 	main.c
 
@@ -1265,7 +1293,6 @@ test_sources = \
 	basic-simd.cs
 
 regtests = basic.exe basic-float.exe basic-long.exe basic-calls.exe objects.exe arrays.exe basic-math.exe exceptions.exe iltests.exe devirtualization.exe generics.exe basic-simd.exe
-fsatests = basic.exe basic-float.exe basic-long.exe basic-calls.exe objects.exe arrays.exe basic-math.exe exceptions.exe devirtualization.exe basic-simd.exe
 @MONO_DEBUGGER_SUPPORTED_FALSE@@X86_TRUE at mdb_x86 = 
 @MONO_DEBUGGER_SUPPORTED_TRUE@@PLATFORM_DARWIN_FALSE@@X86_TRUE at mdb_x86 = mdb-debug-info32.s
 @MONO_DEBUGGER_SUPPORTED_TRUE@@PLATFORM_DARWIN_TRUE@@X86_TRUE at mdb_x86 = mdb-debug-info32-darwin.s
@@ -1322,31 +1349,29 @@ fsatests = basic.exe basic-float.exe basic-long.exe basic-calls.exe objects.exe
 @PLATFORM_DARWIN_TRUE at monobin_platform_ldflags = -framework CoreFoundation
 @PLATFORM_SIGPOSIX_TRUE at monobin_platform_ldflags = 
 libmono_2_0_la_SOURCES = $(common_sources) $(llvm_sources) $(arch_sources) $(os_sources)
-libmono_2_0_la_CFLAGS = $(AM_CFLAGS) $(BOEHM_DEFINES) $(LIBGC_CFLAGS)
+libmono_2_0_la_CFLAGS = $(mono_CFLAGS)
+libmono_2_0_la_LIBADD = $(libs) $(LIBMONO_DTRACE_OBJECT)
 libmonosgen_2_0_la_SOURCES = $(libmono_2_0_la_SOURCES)
-libmonosgen_2_0_la_CFLAGS = $(AM_CFLAGS) $(SGEN_DEFINES)
+libmonosgen_2_0_la_CFLAGS = $(mono_sgen_CFLAGS)
+libmonosgen_2_0_la_LIBADD = $(sgen_libs) $(LIBMONO_DTRACE_OBJECT)
 @MOONLIGHT_TRUE at libmono_moon_la_SOURCES = $(libmono_2_0_la_SOURCES)
- at MOONLIGHT_TRUE@libmono_moon_la_CFLAGS = $(AM_CFLAGS) $(BOEHM_DEFINES) $(LIBGC_CFLAGS)
+ at MOONLIGHT_BOEHM_FALSE@@MOONLIGHT_TRUE at libmono_moon_la_CFLAGS = $(mono_sgen_CFLAGS) $(MOONLIGHT_DEFINES)
+ at MOONLIGHT_BOEHM_TRUE@@MOONLIGHT_TRUE at libmono_moon_la_CFLAGS = $(mono_CFLAGS) $(MOONLIGHT_DEFINES)
+ at MOONLIGHT_BOEHM_FALSE@@MOONLIGHT_TRUE at libmono_moon_la_LIBADD = $(moon_libs) $(LIBMONO_DTRACE_OBJECT)
+ at MOONLIGHT_BOEHM_TRUE@@MOONLIGHT_TRUE at libmono_moon_la_LIBADD = $(moon_libs) $(libgc_libs) $(LIBMONO_DTRACE_OBJECT)
 libmono_static_la_SOURCES = $(libmono_2_0_la_SOURCES)
-libmono_static_la_CFLAGS = $(AM_CFLAGS) $(BOEHM_DEFINES) $(LIBGC_CFLAGS)
+libmono_static_la_CFLAGS = $(mono_CFLAGS)
 libmono_static_la_LDFLAGS = -static
 libmono_static_la_LIBADD = $(static_libs) $(MONO_DTRACE_OBJECT)
 libmonosgen_static_la_SOURCES = $(libmono_2_0_la_SOURCES)
-libmonosgen_static_la_CFLAGS = $(AM_CFLAGS) $(SGEN_DEFINES)
+libmonosgen_static_la_CFLAGS = $(mono_sgen_CFLAGS)
 libmonosgen_static_la_LDFLAGS = -static
 libmonosgen_static_la_LIBADD = $(sgenstatic_libs) $(MONO_DTRACE_OBJECT)
 nodist_libmono_static_la_SOURCES = $(nodist_libmono_la_SOURCES)
-nodist_libmono_static_la_CFLAGS = $(AM_CFLAGS) $(BOEHM_DEFINES) $(LIBGC_CFLAGS)
+nodist_libmono_static_la_CFLAGS = $(mono_CFLAGS)
 BURGSRC = $(common_BURGSRC) $(arch_BURGSRC)
 libmonoincludedir = $(includedir)/mono-$(API_VER)/mono/jit
 libmonoinclude_HEADERS = jit.h
-libmono_2_0_la_LIBADD = \
-	$(libs) $(LIBMONO_DTRACE_OBJECT)
-
-libmonosgen_2_0_la_LIBADD = \
-	$(sgen_libs) $(LIBMONO_DTRACE_OBJECT)
-
- at MOONLIGHT_TRUE@libmono_moon_la_LIBADD = $(libmono_2_0_la_LIBADD)
 @NACL_CODEGEN_FALSE at GENMDESC_OPTS = 
 @NACL_CODEGEN_TRUE at GENMDESC_OPTS = --nacl
 @CROSS_COMPILING_FALSE at GENMDESC_PRG = ./genmdesc $(GENMDESC_OPTS)
@@ -1356,6 +1381,7 @@ libmonosgen_2_0_la_LIBADD = \
 # $(arch_define) is the preprocessor symbol that enables all the opcodes
 # for the specific platform in mini-ops.h
 @CROSS_COMPILING_TRUE at GENMDESC_PRG = perl $(srcdir)/genmdesc.pl $(arch_define) $(srcdir) $(GENMDESC_OPTS)
+LLVM_AOT_RUNTIME_OPTS = $(if $(LLVM),--llvm,)
 pkgconfigdir = $(libdir)/pkgconfig
 @JIT_SUPPORTED_FALSE at BUILT_SOURCES = version.h
 @JIT_SUPPORTED_TRUE at BUILT_SOURCES = version.h $(arch_built)
@@ -1451,7 +1477,7 @@ clean-noinstLTLIBRARIES:
 libmono-2.0.la: $(libmono_2_0_la_OBJECTS) $(libmono_2_0_la_DEPENDENCIES) 
 	$(libmono_2_0_la_LINK) $(am_libmono_2_0_la_rpath) $(libmono_2_0_la_OBJECTS) $(libmono_2_0_la_LIBADD) $(LIBS)
 libmono-llvm.la: $(libmono_llvm_la_OBJECTS) $(libmono_llvm_la_DEPENDENCIES) 
-	$(CXXLINK) $(am_libmono_llvm_la_rpath) $(libmono_llvm_la_OBJECTS) $(libmono_llvm_la_LIBADD) $(LIBS)
+	$(libmono_llvm_la_LINK) $(am_libmono_llvm_la_rpath) $(libmono_llvm_la_OBJECTS) $(libmono_llvm_la_LIBADD) $(LIBS)
 libmono-moon.la: $(libmono_moon_la_OBJECTS) $(libmono_moon_la_DEPENDENCIES) 
 	$(CXXLINK) $(am_libmono_moon_la_rpath) $(libmono_moon_la_OBJECTS) $(libmono_moon_la_LIBADD) $(LIBS)
 libmono-static.la: $(libmono_static_la_OBJECTS) $(libmono_static_la_DEPENDENCIES) 
@@ -4820,6 +4846,10 @@ uninstall-am: uninstall-binPROGRAMS uninstall-libLTLIBRARIES \
 
 
 @HOST_WIN32_TRUE at export HOST_CC
+ at JIT_SUPPORTED_TRUE@@MOONLIGHT_TRUE at moon-do-build: $(BUILT_SOURCES) mono libmono-moon.la
+ at JIT_SUPPORTED_TRUE@@MOONLIGHT_TRUE at moon-do-clean: maintainer-clean-generic
+ at JIT_SUPPORTED_TRUE@@MOONLIGHT_TRUE@	-test -z "mono$(EXEEXT)" || rm -f mono$(EXEEXT)
+ at JIT_SUPPORTED_TRUE@@MOONLIGHT_TRUE@	-test -z "libmono-moon.la" || rm -f libmono-moon.la
 
 # We build this after libmono was built so it contains the date when the final
 # link was done
@@ -4840,6 +4870,9 @@ mono_sgen-main.$(OBJEXT): buildver.h
 basic-simd.exe: basic-simd.cs
 	$(MCS) -out:$@ $< -r:TestDriver.dll -r:Mono.Simd.dll
 
+nacl.exe: nacl.cs
+	$(MCS) -out:$@ $< -r:TestDriver.dll -r:Mono.Simd.dll
+
 generics.exe: generics.cs TestDriver.dll generics-variant-types.dll
 	$(MCS) -out:$@ $< -r:TestDriver.dll -r:generics-variant-types.dll
 
@@ -4907,32 +4940,24 @@ rcheck: mono $(regtests)
 
 aotcheck: mono $(regtests)
 	rm -f *.exe.so
-	$(RUNTIME) --aot $(regtests) || exit 1
+	$(RUNTIME) $(LLVM_AOT_RUNTIME_OPTS) --aot $(regtests) || exit 1
 	for i in $(regtests); do $(RUNTIME_AOTCHECK) --regression $$i || exit 1; done
 	rm -f *.exe.so
 
+llvmaotcheck:
+	$(MAKE) aotcheck LLVM=1
+
 # This currently only works on amd64/arm
 fullaotcheck: mono $(regtests)
 	rm -rf fullaot-tmp
 	mkdir fullaot-tmp
 	cp $(CLASS)/mscorlib.dll $(CLASS)/System.Core.dll $(CLASS)/System.dll $(CLASS)/Mono.Posix.dll $(CLASS)/System.Configuration.dll $(CLASS)/System.Security.dll $(CLASS)/System.Xml.dll $(CLASS)/Mono.Security.dll $(CLASS)/Mono.Simd.dll $(regtests) generics-variant-types.dll TestDriver.dll fullaot-tmp/
 	cp $(regtests) fullaot-tmp/
-	MONO_PATH=fullaot-tmp $(top_builddir)/runtime/mono-wrapper --aot=full fullaot-tmp/* || exit 1
+	MONO_PATH=fullaot-tmp $(top_builddir)/runtime/mono-wrapper $(LLVM_AOT_RUNTIME_OPTS) --aot=full fullaot-tmp/* || exit 1
 	for i in $(regtests); do echo $$i; MONO_PATH=fullaot-tmp $(top_builddir)/runtime/mono-wrapper --full-aot fullaot-tmp/$$i --exclude '!FULLAOT' || exit 1; done
 
-fsacheck: mono $(fsatests) fsacheck.c generics.exe
-	rm -rf fsa-tmp
-	mkdir fsa-tmp
-	cp $(CLASS)/mscorlib.dll $(CLASS)/System.Core.dll $(CLASS)/System.dll $(CLASS)/Mono.Posix.dll $(CLASS)/System.Configuration.dll $(CLASS)/System.Security.dll $(CLASS)/System.Xml.dll $(CLASS)/Mono.Security.dll $(CLASS)/Mono.Simd.dll \
-	$(fsatests) generics-variant-types.dll TestDriver.dll fsa-tmp/
-	cp $(fsatests) fsa-tmp/
-	MONO_PATH=fsa-tmp $(top_builddir)/runtime/mono-wrapper --aot=full,static fsa-tmp/*.dll || exit 1
-	MONO_PATH=fsa-tmp $(top_builddir)/runtime/mono-wrapper --aot=full,static fsa-tmp/*.exe || exit 1
-	$(CC) -o $@.out -g -static $(VPATH)/fsacheck.c fsa-tmp/*.o \
-	-lmono-2.0 -lpthread -lm -ldl -lrt \
-	-DTARGET_X86 -L.libs -I${prefix}/include/mono-2.0 \
-	-I${prefix} -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
-	for i in $(fsatests); do echo $$i; MONO_PATH=fsa-tmp ./$@.out $$i || exit 1; done
+llvmfullaotcheck:
+	$(MAKE) fullaotcheck LLVM=1
 
 bench: mono test.exe
 	time env $(RUNTIME) --ncompile $(count) --compile Test:$(mtest) test.exe
diff --git a/mono/mini/TestDriver.cs b/mono/mini/TestDriver.cs
index 7edb0ea..bdcbcfd 100644
--- a/mono/mini/TestDriver.cs
+++ b/mono/mini/TestDriver.cs
@@ -29,9 +29,9 @@ public class TestDriver {
 		iterations = 1;
 
 		var exclude = new Dictionary<string, string> ();
-		List<string> new_args = new List<string> ();
+		List<string> run_only = new List<string> ();
 		if (args != null && args.Length > 0) {
-			for (j = 0; j < args.Length; j++) {
+			for (j = 0; j < args.Length;) {
 				if (args [j] == "--time") {
 					do_timings = true;
 					j ++;
@@ -43,8 +43,12 @@ public class TestDriver {
 				} else if (args [j] == "--exclude") {
 					exclude [args [j + 1]] = args [j + 1];
 					j += 2;
+				} else if (args [j] == "--run-only") {
+					run_only.Add (args [j + 1]);
+					j += 2;
 				} else {
-					new_args.Add (args [j]);
+					Console.WriteLine ("Unknown argument: " + args [j]);
+					return 1;
 				}
 			}
 		}
@@ -55,10 +59,10 @@ public class TestDriver {
 				name = methods [i].Name;
 				if (!name.StartsWith ("test_", StringComparison.Ordinal))
 					continue;
-				if (new_args.Count > 0) {
+				if (run_only.Count > 0) {
 					bool found = false;
-					for (j = 0; j < new_args.Count; j++) {
-						if (name.EndsWith (new_args [j])) {
+					for (j = 0; j < run_only.Count; j++) {
+						if (name.EndsWith (run_only [j])) {
 							found = true;
 							break;
 						}
diff --git a/mono/mini/abcremoval.c b/mono/mini/abcremoval.c
index f412cb8..5e97cba 100644
--- a/mono/mini/abcremoval.c
+++ b/mono/mini/abcremoval.c
@@ -316,6 +316,7 @@ get_relation_from_ins (MonoVariableRelationsEvaluationArea *area, MonoInst *ins,
 		value->type = MONO_VARIABLE_SUMMARIZED_VALUE;
 		value->value.variable.variable = ins->sreg1;
 		value->value.variable.delta = 0;
+		area->defs [ins->dreg] = ins;
 		break;
 
 		/* FIXME: Add more opcodes */
@@ -1128,12 +1129,9 @@ process_block (MonoCompile *cfg, MonoBasicBlock *bb, MonoVariableRelationsEvalua
 			add_non_null (area, cfg, ins->sreg1, &check_relations);
 
 		/* 
-		 * This doesn't work because LLVM can move the non-faulting loads before the faulting
-		 * ones (test_0_llvm_moving_faulting_loads ()).
-		 * FIXME: This also doesn't work because abcrem equates an array with its length,
+		 * FIXME: abcrem equates an array with its length,
 		 * so a = new int [100] implies a != null, but a = new int [0] doesn't.
 		 */
-#if 0
 		/*
 		 * Eliminate MONO_INST_FAULT flags if possible.
 		 */
@@ -1151,6 +1149,18 @@ process_block (MonoCompile *cfg, MonoBasicBlock *bb, MonoVariableRelationsEvalua
 			else
 				reg = ins->sreg1;
 
+			/*
+			 * This doesn't work because LLVM can move the non-faulting loads before the faulting
+			 * ones (test_0_llvm_moving_faulting_loads ()).
+			 * So only do it if we know the load cannot be moved before the instruction which ensures it is not
+			 * null (i.e. the def of its sreg).
+			 */
+			if (area->defs [reg] && area->defs [reg]->opcode == OP_NEWARR) {
+				if (REPORT_ABC_REMOVAL)
+					printf ("ARRAY-ACCESS: removed MONO_INST_FAULT flag.\n");
+				ins->flags &= ~MONO_INST_FAULT;
+			}
+			/*
 			if (eval_non_null (area, reg)) {
 				if (REPORT_ABC_REMOVAL)
 					printf ("ARRAY-ACCESS: removed MONO_INST_FAULT flag.\n");
@@ -1158,8 +1168,8 @@ process_block (MonoCompile *cfg, MonoBasicBlock *bb, MonoVariableRelationsEvalua
 			} else {
 				add_non_null (area, cfg, reg, &check_relations);
 			}
+			*/
 		}
-#endif
 	}	
 	
 	if (TRACE_ABC_REMOVAL) {
@@ -1253,12 +1263,14 @@ mono_perform_abc_removal (MonoCompile *cfg)
 		mono_mempool_alloc (cfg->mempool, sizeof (MonoRelationsEvaluationContext) * (cfg->next_vreg));
 	area.variable_value_kind = (MonoIntegerValueKind *)
 		mono_mempool_alloc (cfg->mempool, sizeof (MonoIntegerValueKind) * (cfg->next_vreg));
+	area.defs = mono_mempool_alloc (cfg->mempool, sizeof (MonoInst*) * cfg->next_vreg);
 	for (i = 0; i < cfg->next_vreg; i++) {
 		area.variable_value_kind [i] = MONO_UNKNOWN_INTEGER_VALUE;
 		area.relations [i].relation = MONO_EQ_RELATION;
 		area.relations [i].relation_is_static_definition = TRUE;
 		MAKE_VALUE_ANY (area.relations [i].related_value);
 		area.relations [i].next = NULL;
+		area.defs [i] = NULL;
 	}
 
 	for (bb = cfg->bb_entry; bb; bb = bb->next_bb) {
diff --git a/mono/mini/abcremoval.h b/mono/mini/abcremoval.h
index 7a4a874..c9896af 100644
--- a/mono/mini/abcremoval.h
+++ b/mono/mini/abcremoval.h
@@ -303,12 +303,14 @@ typedef struct MonoRelationsEvaluationContext {
  * contexts: an array of evaluation contexts (one for each method variable)
  * variable_value_kind: an array of MonoIntegerValueKind, one for each local
  *                      variable (or argument)
+ * defs: maps vregs to the instruction which defines it.
  */
 typedef struct MonoVariableRelationsEvaluationArea {
 	MonoCompile *cfg;
 	MonoSummarizedValueRelation *relations;
 	MonoRelationsEvaluationContext *contexts;
 	MonoIntegerValueKind *variable_value_kind;
+	MonoInst **defs;
 } MonoVariableRelationsEvaluationArea;
 
 /**
diff --git a/mono/mini/aot-compiler.c b/mono/mini/aot-compiler.c
index 7a8e3b5..0525e85 100644
--- a/mono/mini/aot-compiler.c
+++ b/mono/mini/aot-compiler.c
@@ -80,7 +80,7 @@
 
 #ifdef TARGET_WIN32
 #define SHARED_EXT ".dll"
-#elif defined(__ppc__) && defined(__MACH__)
+#elif defined(__ppc__) && defined(__APPLE__)
 #define SHARED_EXT ".dylib"
 #elif defined(__APPLE__) && defined(TARGET_X86) && !defined(__native_client_codegen__)
 #define SHARED_EXT ".dylib"
@@ -113,6 +113,8 @@ typedef struct MonoAotOptions {
 	gboolean stats;
 	char *tool_prefix;
 	gboolean autoreg;
+	char *mtriple;
+	char *llvm_path;
 } MonoAotOptions;
 
 typedef struct MonoAotStats {
@@ -181,12 +183,16 @@ typedef struct MonoAotCompile {
 	MonoAotFileFlags flags;
 	MonoDynamicStream blob;
 	MonoClass **typespec_classes;
+	GString *llc_args;
+	GString *as_args;
+	gboolean thumb_mixed, need_no_dead_strip, need_pt_gnu_stack;
 } MonoAotCompile;
 
 typedef struct {
 	int plt_offset;
-	char *symbol;
+	char *symbol, *llvm_symbol, *debug_sym;
 	MonoJumpInfo *ji;
+	gboolean jit_used, llvm_used;
 } MonoPltEntry;
 
 #define mono_acfg_lock(acfg) EnterCriticalSection (&((acfg)->mutex))
@@ -368,7 +374,6 @@ static void
 emit_string_symbol (MonoAotCompile *acfg, const char *name, const char *value)
 {
 	img_writer_emit_section_change (acfg->w, RODATA_SECT, 1);
-	emit_global (acfg, name, FALSE);
 	img_writer_emit_label (acfg->w, name);
 	img_writer_emit_string (acfg->w, value);
 }
@@ -471,7 +476,7 @@ encode_sleb128 (gint32 value, guint8 *buf, guint8 **endbuf)
 #else
 #define AOT_FUNC_ALIGNMENT 16
 #endif
-#if defined(TARGET_X86) && defined(__native_client_codegen__)
+#if (defined(TARGET_X86) || defined(TARGET_AMD64)) && defined(__native_client_codegen__)
 #undef AOT_FUNC_ALIGNMENT
 #define AOT_FUNC_ALIGNMENT 32
 #endif
@@ -484,23 +489,48 @@ encode_sleb128 (gint32 value, guint8 *buf, guint8 **endbuf)
 #define PPC_LDX_OP "lwzx"
 #endif
 
-//#define TARGET_ARM
+static void
+arch_init (MonoAotCompile *acfg)
+{
+	acfg->llc_args = g_string_new ("");
+	acfg->as_args = g_string_new ("");
+
+	/*
+	 * The prefix LLVM likes to put in front of symbol names on darwin.
+	 * The mach-os specs require this for globals, but LLVM puts them in front of all
+	 * symbols. We need to handle this, since we need to refer to LLVM generated
+	 * symbols.
+	 */
+	acfg->llvm_label_prefix = "";
 
 #ifdef TARGET_ARM
-#define LLVM_LABEL_PREFIX "_"
+	if (acfg->aot_opts.mtriple && strstr (acfg->aot_opts.mtriple, "darwin")) {
+		g_string_append (acfg->llc_args, "-mattr=+v6");
+	} else {
+#ifdef ARM_FPU_VFP
+		g_string_append (acfg->llc_args, " -mattr=+vfp2,+d16");
+		g_string_append (acfg->as_args, " -mfpu=vfp3");
 #else
-#define LLVM_LABEL_PREFIX ""
+		g_string_append (acfg->llc_args, " -soft-float");
 #endif
+	}
+	if (acfg->aot_opts.mtriple && strstr (acfg->aot_opts.mtriple, "thumb"))
+		acfg->thumb_mixed = TRUE;
 
-#ifdef TARGET_ARM
-/* iphone */
-#define LLC_TARGET_ARGS "-march=arm -mattr=+v6 -mtriple=arm-apple-darwin"
-/* ELF */
-//#define LLC_TARGET_ARGS "-march=arm -mtriple=arm-linux-gnueabi -soft-float"
-#else
-#define LLC_TARGET_ARGS ""
+	if (acfg->aot_opts.mtriple)
+		mono_arch_set_target (acfg->aot_opts.mtriple);
+#endif
+
+#ifdef __APPLE__
+	acfg->llvm_label_prefix = "_";
+	acfg->need_no_dead_strip = TRUE;
 #endif
 
+#if defined(__linux__)
+	acfg->need_pt_gnu_stack = TRUE;
+#endif
+}
+
 /*
  * arch_emit_direct_call:
  *
@@ -668,8 +698,14 @@ arch_emit_plt_entry (MonoAotCompile *acfg, int index)
 {
 #if defined(TARGET_X86)
 		guint32 offset = (acfg->plt_got_offset_base + index) * sizeof (gpointer);
-
-#ifdef __native_client_codegen__
+#if defined(__default_codegen__)
+		/* jmp *<offset>(%ebx) */
+		emit_byte (acfg, 0xff);
+		emit_byte (acfg, 0xa3);
+		emit_int32 (acfg, offset);
+		/* Used by mono_aot_get_plt_info_offset */
+		emit_int32 (acfg, acfg->plt_got_info_offsets [index]);
+#elif defined(__native_client_codegen__)
 		const guint8 kSizeOfNaClJmp = 11;
 		guint8 bytes[kSizeOfNaClJmp];
 		guint8 *pbytes = &bytes[0];
@@ -681,15 +717,9 @@ arch_emit_plt_entry (MonoAotCompile *acfg, int index)
 		emit_byte (acfg, 0x68);  /* hide data in a push */
 		emit_int32 (acfg, acfg->plt_got_info_offsets [index]);
 		emit_alignment (acfg, AOT_FUNC_ALIGNMENT);
-#else
-		/* jmp *<offset>(%ebx) */
-		emit_byte (acfg, 0xff);
-		emit_byte (acfg, 0xa3);
-		emit_int32 (acfg, offset);
-		/* Used by mono_aot_get_plt_info_offset */
-		emit_int32 (acfg, acfg->plt_got_info_offsets [index]);
-#endif  /* __native_client_codegen__ */
+#endif /*__native_client_codegen__*/
 #elif defined(TARGET_AMD64)
+#if defined(__default_codegen__)
 		/*
 		 * We can't emit jumps because they are 32 bits only so they can't be patched.
 		 * So we make indirect calls through GOT entries which are patched by the AOT 
@@ -701,39 +731,38 @@ arch_emit_plt_entry (MonoAotCompile *acfg, int index)
 		emit_symbol_diff (acfg, acfg->got_symbol, ".", ((acfg->plt_got_offset_base + index) * sizeof (gpointer)) -4);
 		/* Used by mono_aot_get_plt_info_offset */
 		emit_int32 (acfg, acfg->plt_got_info_offsets [index]);
+#elif defined(__native_client_codegen__)
+		guint8 buf [256];
+		guint8 *buf_aligned = ALIGN_TO(buf, kNaClAlignment);
+		guint8 *code = buf_aligned;
+
+		/* mov <OFFSET>(%rip), %r11d */
+		emit_byte (acfg, '\x45');
+		emit_byte (acfg, '\x8b');
+		emit_byte (acfg, '\x1d');
+		emit_symbol_diff (acfg, acfg->got_symbol, ".", ((acfg->plt_got_offset_base + index) * sizeof (gpointer)) -4);
+
+		amd64_jump_reg (code, AMD64_R11);
+		/* This should be constant for the plt patch */
+		g_assert ((size_t)(code-buf_aligned) == 10);
+		emit_bytes (acfg, buf_aligned, code - buf_aligned);
+
+		/* Hide data in a push imm32 so it passes validation */
+		emit_byte (acfg, 0x68);  /* push */
+		emit_int32 (acfg, acfg->plt_got_info_offsets [index]);
+		emit_alignment (acfg, AOT_FUNC_ALIGNMENT);
+#endif /*__native_client_codegen__*/
 #elif defined(TARGET_ARM)
 		guint8 buf [256];
 		guint8 *code;
 
-		/* FIXME:
-		 * - optimize OP_AOTCONST implementation
-		 * - optimize the PLT entries
-		 * - optimize SWITCH AOT implementation
-		 */
 		code = buf;
-		if (acfg->use_bin_writer && FALSE) {
-			/* FIXME: mono_arch_patch_plt_entry () needs to decode this */
-			/* We only emit 1 relocation since we implement it ourselves anyway */
-			img_writer_emit_reloc (acfg->w, R_ARM_ALU_PC_G0_NC, acfg->got_symbol, ((acfg->plt_got_offset_base + index) * sizeof (gpointer)) - 8);
-			/* FIXME: A 2 instruction encoding is sufficient in most cases */
-			ARM_ADD_REG_IMM (code, ARMREG_IP, ARMREG_PC, 0, 0);
-			ARM_ADD_REG_IMM (code, ARMREG_IP, ARMREG_IP, 0, 0);
-			ARM_LDR_IMM (code, ARMREG_PC, ARMREG_IP, 0);
-			emit_bytes (acfg, buf, code - buf);
-			/* Used by mono_aot_get_plt_info_offset */
-			emit_int32 (acfg, acfg->plt_got_info_offsets [index]);
-		} else {
-			ARM_LDR_IMM (code, ARMREG_IP, ARMREG_PC, 0);
-			ARM_LDR_REG_REG (code, ARMREG_PC, ARMREG_PC, ARMREG_IP);
-			emit_bytes (acfg, buf, code - buf);
-			emit_symbol_diff (acfg, acfg->got_symbol, ".", ((acfg->plt_got_offset_base + index) * sizeof (gpointer)) - 4);
-			/* Used by mono_aot_get_plt_info_offset */
-			emit_int32 (acfg, acfg->plt_got_info_offsets [index]);
-		}
-		/* 
-		 * The plt_got_info_offset is computed automatically by 
-		 * mono_aot_get_plt_info_offset (), so no need to save it here.
-		 */
+		ARM_LDR_IMM (code, ARMREG_IP, ARMREG_PC, 0);
+		ARM_LDR_REG_REG (code, ARMREG_PC, ARMREG_PC, ARMREG_IP);
+		emit_bytes (acfg, buf, code - buf);
+		emit_symbol_diff (acfg, acfg->got_symbol, ".", ((acfg->plt_got_offset_base + index) * sizeof (gpointer)) - 4);
+		/* Used by mono_aot_get_plt_info_offset */
+		emit_int32 (acfg, acfg->plt_got_info_offsets [index]);
 #elif defined(TARGET_POWERPC)
 		guint32 offset = (acfg->plt_got_offset_base + index) * sizeof (gpointer);
 
@@ -756,6 +785,33 @@ arch_emit_plt_entry (MonoAotCompile *acfg, int index)
 #endif
 }
 
+static void
+arch_emit_llvm_plt_entry (MonoAotCompile *acfg, int index)
+{
+#if defined(TARGET_ARM)
+#if 0
+	/* LLVM calls the PLT entries using bl, so emit a stub */
+	/* FIXME: Too much overhead on every call */
+	fprintf (acfg->fp, ".thumb_func\n");
+	fprintf (acfg->fp, "bx pc\n");
+	fprintf (acfg->fp, "nop\n");
+	fprintf (acfg->fp, ".arm\n");
+#endif
+	/* LLVM calls the PLT entries using bl, so these have to be thumb2 */
+	/* The caller already transitioned to thumb */
+	/* The code below should be 12 bytes long */
+	fprintf (acfg->fp, "ldr ip, [pc, #8]\n");
+	/* thumb can't encode ld pc, [pc, ip] */
+	fprintf (acfg->fp, "add ip, pc, ip\n");
+	fprintf (acfg->fp, "ldr ip, [ip, #0]\n");
+	fprintf (acfg->fp, "bx ip\n");
+	emit_symbol_diff (acfg, acfg->got_symbol, ".", ((acfg->plt_got_offset_base + index) * sizeof (gpointer)) + 4);
+	emit_int32 (acfg, acfg->plt_got_info_offsets [index]);
+#else
+	g_assert_not_reached ();
+#endif
+}
+
 /*
  * arch_emit_specific_trampoline:
  *
@@ -779,6 +835,7 @@ arch_emit_specific_trampoline (MonoAotCompile *acfg, int offset, int *tramp_size
 	 * - all the trampolines should be of the same length.
 	 */
 #if defined(TARGET_AMD64)
+#if defined(__default_codegen__)
 	/* This should be exactly 16 bytes long */
 	*tramp_size = 16;
 	/* call *<offset>(%rip) */
@@ -787,8 +844,61 @@ arch_emit_specific_trampoline (MonoAotCompile *acfg, int offset, int *tramp_size
 	emit_byte (acfg, '\x15');
 	emit_symbol_diff (acfg, acfg->got_symbol, ".", (offset * sizeof (gpointer)) - 4);
 	/* This should be relative to the start of the trampoline */
-	emit_symbol_diff (acfg, acfg->got_symbol, ".", (offset * sizeof (gpointer)) - 4 + 19);
+	emit_symbol_diff (acfg, acfg->got_symbol, ".", ((offset+1) * sizeof (gpointer)) + 7);
 	emit_zero_bytes (acfg, 5);
+#elif defined(__native_client_codegen__)
+	guint8 buf [256];
+	guint8 *buf_aligned = ALIGN_TO(buf, kNaClAlignment);
+	guint8 *code = buf_aligned;
+	guint8 *call_start;
+	size_t call_len;
+	int got_offset;
+
+	/* Emit this call in 'code' so we can find out how long it is. */
+	amd64_call_reg (code, AMD64_R11);
+	call_start = mono_arch_nacl_skip_nops (buf_aligned);
+	call_len = code - call_start;
+
+	/* The tramp_size is twice the NaCl alignment because it starts with */ 
+	/* a call which needs to be aligned to the end of the boundary.      */
+	*tramp_size = kNaClAlignment*2;
+	{
+		/* Emit nops to align call site below which is 7 bytes plus */
+		/* the length of the call sequence emitted above.           */
+		/* Note: this requires the specific trampoline starts on a  */
+		/* kNaclAlignedment aligned address, which it does because  */
+		/* it's its own function that is aligned.                   */
+		guint8 nop_buf[256];
+		guint8 *nopbuf_aligned = ALIGN_TO (nop_buf, kNaClAlignment);
+		guint8 *nopbuf_end = mono_arch_nacl_pad (nopbuf_aligned, kNaClAlignment - 7 - (call_len));
+		emit_bytes (acfg, nopbuf_aligned, nopbuf_end - nopbuf_aligned);
+	}
+	/* The trampoline is stored at the offset'th pointer, the -4 is  */
+	/* present because RIP relative addressing starts at the end of  */
+	/* the current instruction, while the label "." is relative to   */
+	/* the beginning of the current asm location, which in this case */
+	/* is not the mov instruction, but the offset itself, due to the */
+	/* way the bytes and ints are emitted here.                      */
+	got_offset = (offset * sizeof(gpointer)) - 4;
+
+	/* mov <OFFSET>(%rip), %r11d */
+	emit_byte (acfg, '\x45');
+	emit_byte (acfg, '\x8b');
+	emit_byte (acfg, '\x1d');
+	emit_symbol_diff (acfg, acfg->got_symbol, ".", got_offset);
+
+	/* naclcall %r11 */
+	emit_bytes (acfg, call_start, call_len);
+
+	/* The arg is stored at the offset+1 pointer, relative to beginning */
+	/* of trampoline: 7 for mov, plus the call length, and 1 for push.  */
+	got_offset = ((offset + 1) * sizeof(gpointer)) + 7 + call_len + 1;
+
+	/* We can't emit this data directly, hide in a "push imm32" */
+	emit_byte (acfg, '\x68'); /* push */
+	emit_symbol_diff (acfg, acfg->got_symbol, ".", got_offset);
+	emit_alignment (acfg, kNaClAlignment);
+#endif /*__native_client_codegen__*/
 #elif defined(TARGET_ARM)
 	guint8 buf [128];
 	guint8 *code;
@@ -898,14 +1008,14 @@ arch_emit_specific_trampoline (MonoAotCompile *acfg, int offset, int *tramp_size
  * CALL_TARGET is the symbol pointing to the native code of METHOD.
  */
 static void
-arch_emit_unbox_trampoline (MonoAotCompile *acfg, MonoMethod *method, MonoGenericSharingContext *gsctx, const char *call_target)
+arch_emit_unbox_trampoline (MonoAotCompile *acfg, MonoCompile *cfg, MonoMethod *method, const char *call_target)
 {
 #if defined(TARGET_AMD64)
 	guint8 buf [32];
 	guint8 *code;
 	int this_reg;
 
-	this_reg = mono_arch_get_this_arg_reg (mono_method_signature (method), gsctx, NULL);
+	this_reg = mono_arch_get_this_arg_reg (NULL);
 	code = buf;
 	amd64_alu_reg_imm (code, X86_ADD, this_reg, sizeof (MonoObject));
 
@@ -931,6 +1041,13 @@ arch_emit_unbox_trampoline (MonoAotCompile *acfg, MonoMethod *method, MonoGeneri
 	guint8 buf [128];
 	guint8 *code;
 
+	if (acfg->thumb_mixed && cfg->compile_llvm) {
+		fprintf (acfg->fp, "add r0, r0, #%d\n", sizeof (MonoObject));
+		fprintf (acfg->fp, "b %s\n", call_target);
+		fprintf (acfg->fp, ".arm\n");
+		return;
+	}
+
 	code = buf;
 
 	ARM_ADD_REG_IMM8 (code, ARMREG_R0, ARMREG_R0, sizeof (MonoObject));
@@ -947,7 +1064,10 @@ arch_emit_unbox_trampoline (MonoAotCompile *acfg, MonoMethod *method, MonoGeneri
 		img_writer_emit_reloc (acfg->w, R_ARM_JUMP24, call_target, -8);
 		emit_bytes (acfg, buf, 4);
 	} else {
-		fprintf (acfg->fp, "\n\tb %s\n", call_target);
+		if (acfg->thumb_mixed && cfg->compile_llvm)
+			fprintf (acfg->fp, "\n\tbx %s\n", call_target);
+		else
+			fprintf (acfg->fp, "\n\tb %s\n", call_target);
 	}
 #elif defined(TARGET_POWERPC)
 	int this_pos = 3;
@@ -975,6 +1095,7 @@ static void
 arch_emit_static_rgctx_trampoline (MonoAotCompile *acfg, int offset, int *tramp_size)
 {
 #if defined(TARGET_AMD64)
+#if defined(__default_codegen__)
 	/* This should be exactly 13 bytes long */
 	*tramp_size = 13;
 
@@ -988,6 +1109,31 @@ arch_emit_static_rgctx_trampoline (MonoAotCompile *acfg, int offset, int *tramp_
 	emit_byte (acfg, '\xff');
 	emit_byte (acfg, '\x25');
 	emit_symbol_diff (acfg, acfg->got_symbol, ".", ((offset + 1) * sizeof (gpointer)) - 4);
+#elif defined(__native_client_codegen__)
+	guint8 buf [128];
+	guint8 *buf_aligned = ALIGN_TO(buf, kNaClAlignment);
+	guint8 *code = buf_aligned;
+
+	/* mov <OFFSET>(%rip), %r10d */
+	emit_byte (acfg, '\x45');
+	emit_byte (acfg, '\x8b');
+	emit_byte (acfg, '\x15');
+	emit_symbol_diff (acfg, acfg->got_symbol, ".", (offset * sizeof (gpointer)) - 4);
+
+	/* mov <OFFSET>(%rip), %r11d */
+	emit_byte (acfg, '\x45');
+	emit_byte (acfg, '\x8b');
+	emit_byte (acfg, '\x1d');
+	emit_symbol_diff (acfg, acfg->got_symbol, ".", ((offset + 1) * sizeof (gpointer)) - 4);
+
+	/* nacljmp *%r11 */
+	amd64_jump_reg (code, AMD64_R11);
+	emit_bytes (acfg, buf_aligned, code - buf_aligned);
+
+	emit_alignment (acfg, kNaClAlignment);
+	*tramp_size = kNaClAlignment;
+#endif /*__native_client_codegen__*/
+
 #elif defined(TARGET_ARM)
 	guint8 buf [128];
 	guint8 *code;
@@ -1097,50 +1243,74 @@ arch_emit_imt_thunk (MonoAotCompile *acfg, int offset, int *tramp_size)
 {
 #if defined(TARGET_AMD64)
 	guint8 *buf, *code;
+#if defined(__native_client_codegen__)
+	guint8 *buf_alloc;
+#endif
 	guint8 *labels [3];
+	guint8 mov_buf[3];
+	guint8 *mov_buf_ptr = mov_buf;
 
+	const int kSizeOfMove = 7;
+#if defined(__default_codegen__)
 	code = buf = g_malloc (256);
+#elif defined(__native_client_codegen__)
+	buf_alloc = g_malloc (256 + kNaClAlignment + kSizeOfMove);
+	buf = ((guint)buf_alloc + kNaClAlignment) & ~kNaClAlignmentMask;
+	/* The RIP relative move below is emitted first */
+	buf += kSizeOfMove;
+	code = buf;
+#endif
 
 	/* FIXME: Optimize this, i.e. use binary search etc. */
 	/* Maybe move the body into a separate function (slower, but much smaller) */
 
-	/* R11 is a free register */
+	/* MONO_ARCH_IMT_SCRATCH_REG is a free register */
 
 	labels [0] = code;
-	amd64_alu_membase_imm (code, X86_CMP, AMD64_R11, 0, 0);
+	amd64_alu_membase_imm (code, X86_CMP, MONO_ARCH_IMT_SCRATCH_REG, 0, 0);
 	labels [1] = code;
-	amd64_branch8 (code, X86_CC_Z, FALSE, 0);
+	amd64_branch8 (code, X86_CC_Z, 0, FALSE);
 
 	/* Check key */
-	amd64_alu_membase_reg (code, X86_CMP, AMD64_R11, 0, MONO_ARCH_IMT_REG);
+	amd64_alu_membase_reg_size (code, X86_CMP, MONO_ARCH_IMT_SCRATCH_REG, 0, MONO_ARCH_IMT_REG, sizeof (gpointer));
 	labels [2] = code;
-	amd64_branch8 (code, X86_CC_Z, FALSE, 0);
+	amd64_branch8 (code, X86_CC_Z, 0, FALSE);
 
 	/* Loop footer */
-	amd64_alu_reg_imm (code, X86_ADD, AMD64_R11, 2 * sizeof (gpointer));
+	amd64_alu_reg_imm (code, X86_ADD, MONO_ARCH_IMT_SCRATCH_REG, 2 * sizeof (gpointer));
 	amd64_jump_code (code, labels [0]);
 
 	/* Match */
 	mono_amd64_patch (labels [2], code);
-	amd64_mov_reg_membase (code, AMD64_R11, AMD64_R11, sizeof (gpointer), 8);
-	amd64_jump_membase (code, AMD64_R11, 0);
+	amd64_mov_reg_membase (code, MONO_ARCH_IMT_SCRATCH_REG, MONO_ARCH_IMT_SCRATCH_REG, sizeof (gpointer), sizeof (gpointer));
+	amd64_jump_membase (code, MONO_ARCH_IMT_SCRATCH_REG, 0);
 
 	/* No match */
 	/* FIXME: */
 	mono_amd64_patch (labels [1], code);
 	x86_breakpoint (code);
 
-	amd64_mov_reg_membase (code, AMD64_R11, AMD64_RIP, 12345678, 8);
-
-	/* mov <OFFSET>(%rip), %r11 */
-	emit_byte (acfg, '\x4d');
-	emit_byte (acfg, '\x8b');
-	emit_byte (acfg, '\x1d');
+	/* mov <OFFSET>(%rip), MONO_ARCH_IMT_SCRATCH_REG */
+	amd64_emit_rex (mov_buf_ptr, sizeof(gpointer), MONO_ARCH_IMT_SCRATCH_REG, 0, AMD64_RIP);
+	*(mov_buf_ptr)++ = (unsigned char)0x8b; /* mov opcode */
+	x86_address_byte (mov_buf_ptr, 0, MONO_ARCH_IMT_SCRATCH_REG & 0x7, 5);
+	emit_bytes (acfg, mov_buf, mov_buf_ptr - mov_buf);
 	emit_symbol_diff (acfg, acfg->got_symbol, ".", (offset * sizeof (gpointer)) - 4);
 
 	emit_bytes (acfg, buf, code - buf);
 	
-	*tramp_size = code - buf + 7;
+	*tramp_size = code - buf + kSizeOfMove;
+#if defined(__native_client_codegen__)
+	/* The tramp will be padded to the next kNaClAlignment bundle. */
+	*tramp_size = ALIGN_TO ((*tramp_size), kNaClAlignment);
+#endif
+
+#if defined(__default_codegen__)
+	g_free (buf);
+#elif defined(__native_client_codegen__)
+	g_free (buf_alloc); 
+#endif
+
 #elif defined(TARGET_X86)
 	guint8 *buf, *code;
 #ifdef __native_client_codegen__
@@ -1148,11 +1318,11 @@ arch_emit_imt_thunk (MonoAotCompile *acfg, int offset, int *tramp_size)
 #endif
 	guint8 *labels [3];
 
-#ifdef __native_client_codegen__
+#if defined(__default_codegen__)
+	code = buf = g_malloc (256);
+#elif defined(__native_client_codegen__)
 	buf_alloc = g_malloc (256 + kNaClAlignment);
 	code = buf = ((guint)buf_alloc + kNaClAlignment) & ~kNaClAlignmentMask;
-#else
-	code = buf = g_malloc (256);
 #endif
 
 	/* Allocate a temporary stack slot */
@@ -1205,6 +1375,13 @@ arch_emit_imt_thunk (MonoAotCompile *acfg, int offset, int *tramp_size)
 	emit_bytes (acfg, buf, code - buf);
 	
 	*tramp_size = code - buf;
+
+#if defined(__default_codegen__)
+	g_free (buf);
+#elif defined(__native_client_codegen__)
+	g_free (buf_alloc); 
+#endif
+
 #elif defined(TARGET_ARM)
 	guint8 buf [128];
 	guint8 *code, *code2, *labels [16];
@@ -1438,6 +1615,7 @@ stream_init (MonoDynamicStream *sh)
 	sh->data = g_malloc (4096);
 
 	/* So offsets are > 0 */
+	sh->data [0] = 0;
 	sh->index ++;
 }
 
@@ -1484,6 +1662,24 @@ add_to_blob (MonoAotCompile *acfg, const guint8 *data, guint32 data_len)
 	return add_stream_data (&acfg->blob, (char*)data, data_len);
 }
 
+static guint32
+add_to_blob_aligned (MonoAotCompile *acfg, const guint8 *data, guint32 data_len, guint32 align)
+{
+	char buf [4] = {0};
+	guint32 count;
+
+	if (acfg->blob.alloc_size == 0)
+		stream_init (&acfg->blob);
+
+	count = acfg->blob.index % align;
+
+	/* we assume the stream data will be aligned */
+	if (count)
+		add_stream_data (&acfg->blob, buf, 4 - count);
+
+	return add_stream_data (&acfg->blob, (char*)data, data_len);
+}
+
 /*
  * emit_offset_table:
  *
@@ -1795,15 +1991,27 @@ encode_method_ref (MonoAotCompile *acfg, MonoMethod *method, guint8 *buf, guint8
 		}
 		case MONO_WRAPPER_WRITE_BARRIER:
 			break;
-		case MONO_WRAPPER_STELEMREF:
+		case MONO_WRAPPER_STELEMREF: {
+			MonoClass *klass = mono_marshal_get_wrapper_info (method);
+
+			/* Make sure this is the 'normal' stelemref wrapper, not the virtual one */
+			g_assert (!klass);
 			break;
+		}
 		case MONO_WRAPPER_UNKNOWN:
-			if (strcmp (method->name, "FastMonitorEnter") == 0)
+			if (strcmp (method->name, "FastMonitorEnter") == 0) {
 				encode_value (MONO_AOT_WRAPPER_MONO_ENTER, p, &p);
-			else if (strcmp (method->name, "FastMonitorExit") == 0)
+			} else if (strcmp (method->name, "FastMonitorExit") == 0) {
 				encode_value (MONO_AOT_WRAPPER_MONO_EXIT, p, &p);
-			else
+			} else if (strcmp (method->name, "PtrToStructure") == 0) {
+				encode_value (MONO_AOT_WRAPPER_PTR_TO_STRUCTURE, p, &p);
+				encode_klass_ref (acfg, method->klass, p, &p);
+			} else if (strcmp (method->name, "StructureToPtr") == 0) {
+				encode_value (MONO_AOT_WRAPPER_STRUCTURE_TO_PTR, p, &p);
+				encode_klass_ref (acfg, method->klass, p, &p);
+			} else {
 				g_assert_not_reached ();
+			}
 			break;
 		case MONO_WRAPPER_SYNCHRONIZED:
 		case MONO_WRAPPER_MANAGED_TO_NATIVE:
@@ -1982,14 +2190,14 @@ is_plt_patch (MonoJumpInfo *patch_info)
 static char*
 get_plt_symbol (MonoAotCompile *acfg, int plt_offset, MonoJumpInfo *patch_info)
 {
-#ifdef __MACH__
+#ifdef __APPLE__
 	/* 
 	 * The Apple linker reorganizes object files, so it doesn't like branches to local
 	 * labels, since those have no relocations.
 	 */
 	return g_strdup_printf ("%sp_%d", acfg->llvm_label_prefix, plt_offset);
 #else
-	return g_strdup_printf ("%s%sp_%d", acfg->llvm_label_prefix, acfg->temp_prefix, plt_offset);
+	return g_strdup_printf ("%sp_%d", acfg->temp_prefix, plt_offset);
 #endif
 }
 
@@ -2029,6 +2237,7 @@ get_plt_entry (MonoAotCompile *acfg, MonoJumpInfo *patch_info)
 		res->plt_offset = acfg->plt_offset;
 		res->ji = new_ji;
 		res->symbol = get_plt_symbol (acfg, res->plt_offset, patch_info);
+		res->llvm_symbol = g_strdup_printf ("%s_llvm", res->symbol);
 
 		g_hash_table_insert (acfg->patch_to_plt_entry, new_ji, res);
 
@@ -2252,6 +2461,8 @@ add_wrappers (MonoAotCompile *acfg)
 
 		/* Skip methods which can not be handled by get_runtime_invoke () */
 		sig = mono_method_signature (method);
+		if (!sig)
+			continue;
 		if ((sig->ret->type == MONO_TYPE_PTR) ||
 			(sig->ret->type == MONO_TYPE_TYPEDBYREF))
 			skip = TRUE;
@@ -2388,6 +2599,17 @@ add_wrappers (MonoAotCompile *acfg)
 		if (method)
 			add_method (acfg, method);
 #endif
+
+		/* Stelemref wrappers */
+		/* There is only a constant number of these, iterating over all types should handle them all */
+		for (i = 0; i < acfg->image->tables [MONO_TABLE_TYPEDEF].rows; ++i) {
+			MonoClass *klass;
+		
+			token = MONO_TOKEN_TYPE_DEF | (i + 1);
+			klass = mono_class_get (acfg->image, token);
+			if (klass)
+				add_method (acfg, mono_marshal_get_virtual_stelemref (mono_array_class_get (klass, 1)));
+		}
 	}
 
 	/* 
@@ -2576,8 +2798,12 @@ method_has_type_vars (MonoMethod *method)
 static void add_generic_class_with_depth (MonoAotCompile *acfg, MonoClass *klass, int depth);
 
 static void
-add_generic_class (MonoAotCompile *acfg, MonoClass *klass)
+add_generic_class (MonoAotCompile *acfg, MonoClass *klass, gboolean force)
 {
+	/* This might lead to a huge code blowup so only do it if neccesary */
+	if (!acfg->aot_opts.full_aot && !force)
+		return;
+
 	add_generic_class_with_depth (acfg, klass, 0);
 }
 
@@ -2592,6 +2818,9 @@ add_generic_class_with_depth (MonoAotCompile *acfg, MonoClass *klass, int depth)
 	MonoMethod *method;
 	gpointer iter;
 
+	if (depth > 8)
+		return;
+
 	mono_class_init (klass);
 
 	if (klass->generic_class && klass->generic_class->context.class_inst->is_open)
@@ -2617,7 +2846,7 @@ add_generic_class_with_depth (MonoAotCompile *acfg, MonoClass *klass, int depth)
 		 * FIXME: Instances which are referenced by these methods are not added,
 		 * for example Array.Resize<int> for List<int>.Add ().
 		 */
-		add_extra_method_with_depth (acfg, method, depth);
+		add_extra_method_with_depth (acfg, method, depth + 1);
 	}
 
 	if (klass->delegate) {
@@ -2655,7 +2884,7 @@ add_generic_class_with_depth (MonoAotCompile *acfg, MonoClass *klass, int depth)
 			}
 			g_assert (nclass);
 			nclass = mono_class_inflate_generic_class (nclass, mono_generic_class_get_context (klass->generic_class));
-			add_generic_class (acfg, nclass);
+			add_generic_class (acfg, nclass, FALSE);
 		}
 
 		iter = NULL;
@@ -2686,7 +2915,7 @@ add_generic_class_with_depth (MonoAotCompile *acfg, MonoClass *klass, int depth)
 		if (mono_class_is_assignable_from (mono_class_inflate_generic_class (icomparable, &ctx), tclass)) {
 			gcomparer = mono_class_from_name (mono_defaults.corlib, "System.Collections.Generic", "GenericComparer`1");
 			g_assert (gcomparer);
-			add_generic_class (acfg, mono_class_inflate_generic_class (gcomparer, &ctx));
+			add_generic_class (acfg, mono_class_inflate_generic_class (gcomparer, &ctx), FALSE);
 		}
 	}
 
@@ -2707,13 +2936,13 @@ add_generic_class_with_depth (MonoAotCompile *acfg, MonoClass *klass, int depth)
 		if (mono_class_is_assignable_from (mono_class_inflate_generic_class (iface, &ctx), tclass)) {
 			gcomparer = mono_class_from_name (mono_defaults.corlib, "System.Collections.Generic", "GenericEqualityComparer`1");
 			g_assert (gcomparer);
-			add_generic_class (acfg, mono_class_inflate_generic_class (gcomparer, &ctx));
+			add_generic_class (acfg, mono_class_inflate_generic_class (gcomparer, &ctx), FALSE);
 		}
 	}
 }
 
 static void
-add_instances_of (MonoAotCompile *acfg, MonoClass *klass, MonoType **insts, int ninsts)
+add_instances_of (MonoAotCompile *acfg, MonoClass *klass, MonoType **insts, int ninsts, gboolean force)
 {
 	int i;
 	MonoGenericContext ctx;
@@ -2724,7 +2953,7 @@ add_instances_of (MonoAotCompile *acfg, MonoClass *klass, MonoType **insts, int
 	for (i = 0; i < ninsts; ++i) {
 		args [0] = insts [i];
 		ctx.class_inst = mono_metadata_get_generic_inst (1, args);
-		add_generic_class (acfg, mono_class_inflate_generic_class (klass, &ctx));
+		add_generic_class (acfg, mono_class_inflate_generic_class (klass, &ctx), force);
 	}
 }
 
@@ -2747,6 +2976,9 @@ add_generic_instances (MonoAotCompile *acfg)
 		token = MONO_TOKEN_METHOD_SPEC | (i + 1);
 		method = mono_get_method (acfg->image, token, NULL);
 
+		if (!method)
+			continue;
+
 		if (method->klass->image != acfg->image)
 			continue;
 
@@ -2851,21 +3083,23 @@ add_generic_instances (MonoAotCompile *acfg)
 		if (!klass || klass->rank)
 			continue;
 
-		add_generic_class (acfg, klass);
+		add_generic_class (acfg, klass, FALSE);
 	}
 
 	/* Add types of args/locals */
 	for (i = 0; i < acfg->methods->len; ++i) {
-		int j;
+		int j, depth;
 
 		method = g_ptr_array_index (acfg->methods, i);
 
+		depth = GPOINTER_TO_UINT (g_hash_table_lookup (acfg->method_depth, method));
+
 		sig = mono_method_signature (method);
 
 		if (sig) {
 			for (j = 0; j < sig->param_count; ++j)
 				if (sig->params [j]->type == MONO_TYPE_GENERICINST)
-					add_generic_class (acfg, mono_class_from_mono_type (sig->params [j]));
+					add_generic_class_with_depth (acfg, mono_class_from_mono_type (sig->params [j]), depth + 1);
 		}
 
 		header = mono_method_get_header (method);
@@ -2873,7 +3107,7 @@ add_generic_instances (MonoAotCompile *acfg)
 		if (header) {
 			for (j = 0; j < header->num_locals; ++j)
 				if (header->locals [j]->type == MONO_TYPE_GENERICINST)
-					add_generic_class (acfg, mono_class_from_mono_type (header->locals [j]));
+					add_generic_class_with_depth (acfg, mono_class_from_mono_type (header->locals [j]), depth + 1);
 		}
 	}
 
@@ -2898,22 +3132,22 @@ add_generic_instances (MonoAotCompile *acfg)
 		/* Add GenericComparer<T> instances for primitive types for Enum.ToString () */
 		klass = mono_class_from_name (acfg->image, "System.Collections.Generic", "GenericComparer`1");
 		if (klass)
-			add_instances_of (acfg, klass, insts, ninsts);
+			add_instances_of (acfg, klass, insts, ninsts, TRUE);
 		klass = mono_class_from_name (acfg->image, "System.Collections.Generic", "GenericEqualityComparer`1");
 		if (klass)
-			add_instances_of (acfg, klass, insts, ninsts);
+			add_instances_of (acfg, klass, insts, ninsts, TRUE);
 
 		/* Add instances of the array generic interfaces for primitive types */
 		/* This will add instances of the InternalArray_ helper methods in Array too */
 		klass = mono_class_from_name (acfg->image, "System.Collections.Generic", "ICollection`1");
 		if (klass)
-			add_instances_of (acfg, klass, insts, ninsts);
+			add_instances_of (acfg, klass, insts, ninsts, TRUE);
 		klass = mono_class_from_name (acfg->image, "System.Collections.Generic", "IList`1");
 		if (klass)
-			add_instances_of (acfg, klass, insts, ninsts);
+			add_instances_of (acfg, klass, insts, ninsts, TRUE);
 		klass = mono_class_from_name (acfg->image, "System.Collections.Generic", "IEnumerable`1");
 		if (klass)
-			add_instances_of (acfg, klass, insts, ninsts);
+			add_instances_of (acfg, klass, insts, ninsts, TRUE);
 
 		/* 
 		 * Add a managed-to-native wrapper of Array.GetGenericValueImpl<object>, which is
@@ -2934,6 +3168,24 @@ add_generic_instances (MonoAotCompile *acfg)
 				add_extra_method (acfg, mono_marshal_get_native_wrapper (mono_class_inflate_generic_method (get_method, &ctx), TRUE, TRUE));
 			}
 		}
+
+		/* Same for CompareExchange<T> */
+		{
+			MonoGenericContext ctx;
+			MonoType *args [16];
+			MonoMethod *cas_method;
+			MonoClass *interlocked_klass = mono_class_from_name (mono_defaults.corlib, "System.Threading", "Interlocked");
+			gpointer iter = NULL;
+
+			while ((cas_method = mono_class_get_methods (interlocked_klass, &iter))) {
+				if (!strcmp (cas_method->name, "CompareExchange") && cas_method->is_generic) {
+					memset (&ctx, 0, sizeof (ctx));
+					args [0] = &mono_defaults.object_class->byval_arg;
+					ctx.method_inst = mono_metadata_get_generic_inst (1, args);
+					add_extra_method (acfg, mono_marshal_get_native_wrapper (mono_class_inflate_generic_method (cas_method, &ctx), TRUE, TRUE));
+				}
+			}
+		}
 	}
 }
 
@@ -2982,7 +3234,7 @@ emit_and_reloc_code (MonoAotCompile *acfg, MonoMethod *method, guint8 *code, gui
 	MonoMethodHeader *header;
 	gboolean skip, direct_call;
 	guint32 got_slot;
-	char direct_call_target [128];
+	char direct_call_target [1024];
 
 	if (method) {
 		header = mono_method_get_header (method);
@@ -3034,6 +3286,7 @@ emit_and_reloc_code (MonoAotCompile *acfg, MonoMethod *method, guint8 *code, gui
 						MonoCompile *callee_cfg = g_hash_table_lookup (acfg->method_to_cfg, patch_info->data.method);
 						//printf ("DIRECT: %s %s\n", method ? mono_method_full_name (method, TRUE) : "", mono_method_full_name (callee_cfg->method, TRUE));
 						direct_call = TRUE;
+						g_assert (strlen (callee_cfg->asm_symbol) < 1000);
 						sprintf (direct_call_target, "%s", callee_cfg->asm_symbol);
 						patch_info->type = MONO_PATCH_INFO_NONE;
 						acfg->stats.direct_calls ++;
@@ -3051,6 +3304,7 @@ emit_and_reloc_code (MonoAotCompile *acfg, MonoMethod *method, guint8 *code, gui
 		
 						/* Nullify the patch */
 						patch_info->type = MONO_PATCH_INFO_NONE;
+						plt_entry->jit_used = TRUE;
 					}
 				}
 
@@ -3113,7 +3367,7 @@ get_debug_sym (MonoMethod *method, const char *prefix, GHashTable *cache)
 {
 	char *name1, *name2, *cached;
 	int i, j, len, count;
-		
+
 	name1 = mono_method_full_name (method, TRUE);
 	len = strlen (name1);
 	name2 = malloc (strlen (prefix) + len + 16);
@@ -3181,6 +3435,8 @@ emit_method_code (MonoAotCompile *acfg, MonoCompile *cfg)
 		debug_sym = get_debug_sym (method, "", acfg->method_label_hash);
 
 		sprintf (symbol, "%sme_%x", acfg->temp_prefix, method_index);
+		if (acfg->need_no_dead_strip)
+			fprintf (acfg->fp, "	.no_dead_strip %s\n", debug_sym);
 		emit_local_symbol (acfg, debug_sym, symbol, TRUE);
 		emit_label (acfg, debug_sym);
 	}
@@ -3514,14 +3770,14 @@ emit_exception_debug_info (MonoAotCompile *acfg, MonoCompile *cfg)
 
 	seq_points = cfg->seq_point_info;
 
-	buf_size = header->num_clauses * 256 + debug_info_size + 1024 + (seq_points ? (seq_points->len * 64) : 0);
+	buf_size = header->num_clauses * 256 + debug_info_size + 1024 + (seq_points ? (seq_points->len * 64) : 0) + cfg->gc_map_size;
 	p = buf = g_malloc (buf_size);
 
 #ifdef MONO_ARCH_HAVE_XP_UNWIND
 	use_unwind_ops = cfg->unwind_ops != NULL;
 #endif
 
-	flags = (jinfo->has_generic_jit_info ? 1 : 0) | (use_unwind_ops ? 2 : 0) | (header->num_clauses ? 4 : 0) | (seq_points ? 8 : 0) | (cfg->compile_llvm ? 16 : 0) | (jinfo->has_try_block_holes ? 32 : 0);
+	flags = (jinfo->has_generic_jit_info ? 1 : 0) | (use_unwind_ops ? 2 : 0) | (header->num_clauses ? 4 : 0) | (seq_points ? 8 : 0) | (cfg->compile_llvm ? 16 : 0) | (jinfo->has_try_block_holes ? 32 : 0) | (cfg->gc_map ? 64 : 0);
 
 	encode_value (flags, p, &p);
 
@@ -3655,7 +3911,6 @@ emit_exception_debug_info (MonoAotCompile *acfg, MonoCompile *cfg)
 		}
 	}
 		
-
 	g_assert (debug_info_size < buf_size);
 
 	encode_value (debug_info_size, p, &p);
@@ -3665,12 +3920,23 @@ emit_exception_debug_info (MonoAotCompile *acfg, MonoCompile *cfg)
 		g_free (debug_info);
 	}
 
+	/* GC Map */
+	if (cfg->gc_map) {
+		encode_value (cfg->gc_map_size, p, &p);
+		/* The GC map requires 4 bytes of alignment */
+		while ((gsize)p % 4)
+			p ++;
+		memcpy (p, cfg->gc_map, cfg->gc_map_size);
+		p += cfg->gc_map_size;
+	}
+
 	acfg->stats.ex_info_size += p - buf;
 
 	g_assert (p - buf < buf_size);
 
 	/* Emit info */
-	cfg->ex_info_offset = add_to_blob (acfg, buf, p - buf);
+	/* The GC Map requires 4 byte alignment */
+	cfg->ex_info_offset = add_to_blob_aligned (acfg, buf, p - buf, cfg->gc_map ? 4 : 1);
 	g_free (buf);
 }
 
@@ -3760,14 +4026,49 @@ emit_klass_info (MonoAotCompile *acfg, guint32 token)
 	return res;
 }
 
+static char*
+get_plt_entry_debug_sym (MonoAotCompile *acfg, MonoJumpInfo *ji, GHashTable *cache)
+{
+	char *debug_sym = NULL;
+
+	switch (ji->type) {
+	case MONO_PATCH_INFO_METHOD:
+		debug_sym = get_debug_sym (ji->data.method, "plt_", cache);
+		break;
+	case MONO_PATCH_INFO_INTERNAL_METHOD:
+		debug_sym = g_strdup_printf ("plt__jit_icall_%s", ji->data.name);
+		break;
+	case MONO_PATCH_INFO_CLASS_INIT:
+		debug_sym = g_strdup_printf ("plt__class_init_%s", mono_type_get_name (&ji->data.klass->byval_arg));
+		sanitize_symbol (debug_sym);
+		break;
+	case MONO_PATCH_INFO_RGCTX_FETCH:
+		debug_sym = g_strdup_printf ("plt__rgctx_fetch_%d", acfg->label_generator ++);
+		break;
+	case MONO_PATCH_INFO_ICALL_ADDR: {
+		char *s = get_debug_sym (ji->data.method, "", cache);
+		
+		debug_sym = g_strdup_printf ("plt__icall_native_%s", s);
+		g_free (s);
+		break;
+	}
+	case MONO_PATCH_INFO_JIT_ICALL_ADDR:
+		debug_sym = g_strdup_printf ("plt__jit_icall_native_%s", ji->data.name);
+		break;
+	case MONO_PATCH_INFO_GENERIC_CLASS_INIT:
+		debug_sym = g_strdup_printf ("plt__generic_class_init");
+		break;
+	default:
+		break;
+	}
+
+	return debug_sym;
+}
+
 /*
  * Calls made from AOTed code are routed through a table of jumps similar to the
- * ELF PLT (Program Linkage Table). The differences are the following:
- * - the ELF PLT entries make an indirect jump though the GOT so they expect the
- *   GOT pointer to be in EBX. We want to avoid this, so our table contains direct
- *   jumps. This means the jumps need to be patched when the address of the callee is
- *   known. Initially the PLT entries jump to code which transfers control to the
- *   AOT runtime through the first PLT entry.
+ * ELF PLT (Program Linkage Table). Initially the PLT entries jump to code which transfers
+ * control to the AOT runtime through a trampoline.
  */
 static void
 emit_plt (MonoAotCompile *acfg)
@@ -3782,28 +4083,23 @@ emit_plt (MonoAotCompile *acfg)
 	sprintf (symbol, "plt");
 
 	emit_section_change (acfg, ".text", 0);
-	emit_global (acfg, symbol, TRUE);
-	emit_alignment (acfg, 16);
+	emit_alignment (acfg, NACL_SIZE(16, kNaClAlignment));
 	emit_label (acfg, symbol);
 	emit_label (acfg, acfg->plt_symbol);
 
 	for (i = 0; i < acfg->plt_offset; ++i) {
-		char label [128];
 		char *debug_sym = NULL;
 		MonoPltEntry *plt_entry = NULL;
 		MonoJumpInfo *ji;
 
-		if (i == 0) {
+		if (i == 0)
 			/* 
-			 * The first plt entry is used to transfer code to the AOT loader. 
+			 * The first plt entry is unused.
 			 */
-			arch_emit_plt_entry (acfg, i);
 			continue;
-		}
 
 		plt_entry = g_hash_table_lookup (acfg->plt_offset_to_entry, GUINT_TO_POINTER (i));
 		ji = plt_entry->ji;
-		sprintf (label, "%s", plt_entry->symbol);
 
 		if (acfg->llvm) {
 			/*
@@ -3815,63 +4111,103 @@ emit_plt (MonoAotCompile *acfg)
 			 */
 			if (ji && is_direct_callable (acfg, NULL, ji) && !acfg->use_bin_writer) {
 				MonoCompile *callee_cfg = g_hash_table_lookup (acfg->method_to_cfg, ji->data.method);
-				fprintf (acfg->fp, "\n.set %s, %s\n", label, callee_cfg->asm_symbol);
+
+				if (acfg->thumb_mixed && !callee_cfg->compile_llvm) {
+					/* LLVM calls the PLT entries using bl, so emit a stub */
+					fprintf (acfg->fp, "\n.thumb_func\n");
+					emit_label (acfg, plt_entry->llvm_symbol);
+					fprintf (acfg->fp, "bx pc\n");
+					fprintf (acfg->fp, "nop\n");
+					fprintf (acfg->fp, ".arm\n");
+					fprintf (acfg->fp, "b %s\n", callee_cfg->asm_symbol);
+				} else {
+					fprintf (acfg->fp, "\n.set %s, %s\n", plt_entry->llvm_symbol, callee_cfg->asm_symbol);
+				}
 				continue;
 			}
 		}
 
-		emit_label (acfg, label);
+		if (acfg->aot_opts.write_symbols)
+			plt_entry->debug_sym = get_plt_entry_debug_sym (acfg, ji, cache);
+		debug_sym = plt_entry->debug_sym;
 
-		if (acfg->aot_opts.write_symbols) {
-			switch (ji->type) {
-			case MONO_PATCH_INFO_METHOD:
-				debug_sym = get_debug_sym (ji->data.method, "plt_", cache);
-				break;
-			case MONO_PATCH_INFO_INTERNAL_METHOD:
-				debug_sym = g_strdup_printf ("plt__jit_icall_%s", ji->data.name);
-				break;
-			case MONO_PATCH_INFO_CLASS_INIT:
-				debug_sym = g_strdup_printf ("plt__class_init_%s", mono_type_get_name (&ji->data.klass->byval_arg));
-				sanitize_symbol (debug_sym);
-				break;
-			case MONO_PATCH_INFO_RGCTX_FETCH:
-				debug_sym = g_strdup_printf ("plt__rgctx_fetch_%d", acfg->label_generator ++);
-				break;
-			case MONO_PATCH_INFO_ICALL_ADDR: {
-				char *s = get_debug_sym (ji->data.method, "", cache);
-					
-				debug_sym = g_strdup_printf ("plt__icall_native_%s", s);
-				g_free (s);
-				break;
-			}
-			case MONO_PATCH_INFO_JIT_ICALL_ADDR:
-				debug_sym = g_strdup_printf ("plt__jit_icall_native_%s", ji->data.name);
-				break;
-			case MONO_PATCH_INFO_GENERIC_CLASS_INIT:
-				debug_sym = g_strdup_printf ("plt__generic_class_init");
-				break;
-			default:
-				break;
+		if (acfg->thumb_mixed && !plt_entry->jit_used)
+			/* Emit only a thumb version */
+			continue;
+
+		if (!acfg->thumb_mixed)
+			emit_label (acfg, plt_entry->llvm_symbol);
+
+		if (debug_sym) {
+			if (acfg->need_no_dead_strip)
+				fprintf (acfg->fp, "	.no_dead_strip %s\n", debug_sym);
+			emit_local_symbol (acfg, debug_sym, NULL, TRUE);
+			emit_label (acfg, debug_sym);
+		}
+
+		emit_label (acfg, plt_entry->symbol);
+
+		arch_emit_plt_entry (acfg, i);
+
+		if (debug_sym)
+			emit_symbol_size (acfg, debug_sym, ".");
+	}
+
+	if (acfg->thumb_mixed) {
+		/* Make sure the ARM symbols don't alias the thumb ones */
+		emit_zero_bytes (acfg, 16);
+
+		/* 
+		 * Emit a separate set of PLT entries using thumb2 which is called by LLVM generated
+		 * code.
+		 */
+		for (i = 0; i < acfg->plt_offset; ++i) {
+			char *debug_sym = NULL;
+			MonoPltEntry *plt_entry = NULL;
+			MonoJumpInfo *ji;
+
+			if (i == 0)
+				continue;
+
+			plt_entry = g_hash_table_lookup (acfg->plt_offset_to_entry, GUINT_TO_POINTER (i));
+			ji = plt_entry->ji;
+
+			if (ji && is_direct_callable (acfg, NULL, ji) && !acfg->use_bin_writer)
+				continue;
+
+			/* Skip plt entries not actually called by LLVM code */
+			if (!plt_entry->llvm_used)
+				continue;
+
+			if (acfg->aot_opts.write_symbols) {
+				if (plt_entry->debug_sym)
+					debug_sym = g_strdup_printf ("%s_thumb", plt_entry->debug_sym);
 			}
 
 			if (debug_sym) {
+#if defined(__APPLE__)
+				fprintf (acfg->fp, "	.thumb_func %s\n", debug_sym);
+				fprintf (acfg->fp, "	.no_dead_strip %s\n", debug_sym);
+#endif
 				emit_local_symbol (acfg, debug_sym, NULL, TRUE);
 				emit_label (acfg, debug_sym);
 			}
-		}
+			fprintf (acfg->fp, "\n.thumb_func\n");
 
-		arch_emit_plt_entry (acfg, i);
+			emit_label (acfg, plt_entry->llvm_symbol);
 
-		if (debug_sym) {
-			emit_symbol_size (acfg, debug_sym, ".");
-			g_free (debug_sym);
+			arch_emit_llvm_plt_entry (acfg, i);
+
+			if (debug_sym) {
+				emit_symbol_size (acfg, debug_sym, ".");
+				g_free (debug_sym);
+			}
 		}
 	}
 
 	emit_symbol_size (acfg, acfg->plt_symbol, ".");
 
 	sprintf (symbol, "plt_end");
-	emit_global (acfg, symbol, TRUE);
 	emit_label (acfg, symbol);
 
 	g_hash_table_destroy (cache);
@@ -4106,7 +4442,6 @@ emit_trampolines (MonoAotCompile *acfg)
 				g_assert_not_reached ();
 			}
 
-			emit_global (acfg, symbol, TRUE);
 			emit_alignment (acfg, AOT_FUNC_ALIGNMENT);
 			emit_label (acfg, symbol);
 
@@ -4174,6 +4509,8 @@ mono_aot_parse_options (const char *aot_options, MonoAotOptions *opts)
 			opts->save_temps = TRUE;
 		} else if (str_begins_with (arg, "write-symbols")) {
 			opts->write_symbols = TRUE;
+		} else if (str_begins_with (arg, "no-write-symbols")) {
+			opts->write_symbols = FALSE;
 		} else if (str_begins_with (arg, "metadata-only")) {
 			opts->metadata_only = TRUE;
 		} else if (str_begins_with (arg, "bind-to-runtime-version")) {
@@ -4207,6 +4544,10 @@ mono_aot_parse_options (const char *aot_options, MonoAotOptions *opts)
 			opts->print_skipped_methods = TRUE;
 		} else if (str_begins_with (arg, "stats")) {
 			opts->stats = TRUE;
+		} else if (str_begins_with (arg, "mtriple=")) {
+			opts->mtriple = g_strdup (arg + strlen ("mtriple="));
+		} else if (str_begins_with (arg, "llvm-path=")) {
+			opts->llvm_path = g_strdup (arg + strlen ("llvm-path="));
 		} else {
 			fprintf (stderr, "AOT : Unknown argument '%s'.\n", arg);
 			exit (1);
@@ -4313,9 +4654,6 @@ can_encode_patch (MonoAotCompile *acfg, MonoJumpInfo *patch_info)
 	return TRUE;
 }
 
-static void
-add_generic_class (MonoAotCompile *acfg, MonoClass *klass);
-
 /*
  * compile_method:
  *
@@ -4709,15 +5047,11 @@ mono_aot_get_got_offset (MonoJumpInfo *ji)
 char*
 mono_aot_get_method_name (MonoCompile *cfg)
 {
-	guint32 method_index = get_method_index (llvm_acfg, cfg->orig_method);
-
-	return g_strdup_printf ("m_%x", method_index);
-}
-
-char*
-mono_aot_get_method_debug_name (MonoCompile *cfg)
-{
-	return get_debug_sym (cfg->orig_method, "", llvm_acfg->method_label_hash);
+	if (llvm_acfg->aot_opts.static_link)
+		/* Include the assembly name too to avoid duplicate symbol errors */
+		return g_strdup_printf ("%s_%s", llvm_acfg->image->assembly->aname.name, get_debug_sym (cfg->orig_method, "", llvm_acfg->method_label_hash));
+	else
+		return get_debug_sym (cfg->orig_method, "", llvm_acfg->method_label_hash);
 }
 
 char*
@@ -4733,8 +5067,13 @@ mono_aot_get_plt_symbol (MonoJumpInfoType type, gconstpointer data)
 		return NULL;
 
 	plt_entry = get_plt_entry (llvm_acfg, ji);
+	plt_entry->llvm_used = TRUE;
 
-	return g_strdup_printf (plt_entry->symbol);
+#if defined(__APPLE__)
+	return g_strdup_printf (plt_entry->llvm_symbol + strlen (llvm_acfg->llvm_label_prefix));
+#else
+	return g_strdup_printf (plt_entry->llvm_symbol);
+#endif
 }
 
 MonoJumpInfo*
@@ -4763,7 +5102,6 @@ emit_llvm_file (MonoAotCompile *acfg)
 	char *command, *opts;
 	int i;
 	MonoJumpInfo *patch_info;
-	const char *llc_extra_args;
 
 	/*
 	 * When using LLVM, we let llvm emit the got since the LLVM IL needs to refer
@@ -4818,7 +5156,7 @@ emit_llvm_file (MonoAotCompile *acfg)
 	opts = g_strdup ("-instcombine -simplifycfg");
 	opts = g_strdup ("-simplifycfg -domtree -domfrontier -scalarrepl -instcombine -simplifycfg -basiccg -prune-eh -inline -functionattrs -domtree -domfrontier -scalarrepl -simplify-libcalls -instcombine -simplifycfg -instcombine -simplifycfg -reassociate -domtree -loops -loopsimplify -domfrontier -loopsimplify -lcssa -loop-rotate -licm -lcssa -loop-unswitch -instcombine -scalar-evolution -loopsimplify -lcssa -iv-users -indvars -loop-deletion -loopsimplify -lcssa -loop-unroll -instcombine -memdep -gvn -memdep -memcpyopt -sccp -instcombine -domtree -memdep -dse -adce -gvn -simplifycfg -preverify -domtree -verify");
 #if 1
-	command = g_strdup_printf ("opt -f %s -o temp.opt.bc temp.bc", opts);
+	command = g_strdup_printf ("%sopt -f %s -o temp.opt.bc temp.bc", acfg->aot_opts.llvm_path, opts);
 	printf ("Executing opt: %s\n", command);
 	if (system (command) != 0) {
 		exit (1);
@@ -4826,13 +5164,22 @@ emit_llvm_file (MonoAotCompile *acfg)
 #endif
 	g_free (opts);
 
-#if !LLVM_CHECK_VERSION(2, 8)
-	/* LLVM 2.8 removed the -f flag ??? */
-	llc_extra_args = "-f";
-#else
-	llc_extra_args = "";
-#endif
-	command = g_strdup_printf ("llc %s %s -relocation-model=pic -unwind-tables -o %s temp.opt.bc", LLC_TARGET_ARGS, llc_extra_args, acfg->tmpfname);
+	if (!acfg->llc_args)
+		acfg->llc_args = g_string_new ("");
+
+	/* Verbose asm slows down llc greatly */
+	g_string_append (acfg->llc_args, " -asm-verbose=false");
+
+	if (acfg->aot_opts.mtriple)
+		g_string_append_printf (acfg->llc_args, " -mtriple=%s", acfg->aot_opts.mtriple);
+
+	if (llvm_acfg->aot_opts.static_link)
+		g_string_append_printf (acfg->llc_args, " -relocation-model=static");
+	else
+		g_string_append_printf (acfg->llc_args, " -relocation-model=pic");
+	unlink (acfg->tmpfname);
+
+	command = g_strdup_printf ("%sllc %s -unwind-tables -disable-gnu-eh-frame -enable-mono-eh-frame -o %s temp.opt.bc", acfg->aot_opts.llvm_path, acfg->llc_args->str, acfg->tmpfname);
 
 	printf ("Executing llc: %s\n", command);
 
@@ -4865,7 +5212,6 @@ emit_code (MonoAotCompile *acfg)
 	 */
 	sprintf (symbol, "methods");
 	emit_section_change (acfg, ".text", 0);
-	emit_global (acfg, symbol, TRUE);
 	emit_alignment (acfg, 8);
 	if (acfg->llvm) {
 		for (i = 0; i < acfg->nmethods; ++i) {
@@ -4885,7 +5231,17 @@ emit_code (MonoAotCompile *acfg)
 	 * Emit some padding so the local symbol for the first method doesn't have the
 	 * same address as 'methods'.
 	 */
+#if defined(__default_codegen__)
 	emit_zero_bytes (acfg, 16);
+#elif defined(__native_client_codegen__)
+	{
+		const int kPaddingSize = 16;
+		guint8 pad_buffer[kPaddingSize];
+		mono_arch_nacl_pad (pad_buffer, kPaddingSize);
+		emit_bytes (acfg, pad_buffer, kPaddingSize);
+	}
+#endif
+	
 
 	for (l = acfg->method_order; l != NULL; l = l->next) {
 		MonoCompile *cfg;
@@ -4916,11 +5272,15 @@ emit_code (MonoAotCompile *acfg)
 			emit_alignment (acfg, AOT_FUNC_ALIGNMENT);
 #endif
 			emit_global (acfg, symbol, TRUE);
+
+			if (acfg->thumb_mixed && cfg->compile_llvm)
+				fprintf (acfg->fp, "\n.thumb_func\n");
+
 			emit_label (acfg, symbol);
 
 			sprintf (call_target, "%s", cfg->asm_symbol);
 
-			arch_emit_unbox_trampoline (acfg, cfg->orig_method, cfg->generic_sharing_context, call_target);
+			arch_emit_unbox_trampoline (acfg, cfg, cfg->orig_method, call_target);
 		}
 
 		if (cfg->compile_llvm)
@@ -4931,13 +5291,26 @@ emit_code (MonoAotCompile *acfg)
 
 	sprintf (symbol, "methods_end");
 	emit_section_change (acfg, ".text", 0);
-	emit_global (acfg, symbol, FALSE);
 	emit_alignment (acfg, 8);
 	emit_label (acfg, symbol);
 
+	/* 
+	 * Add .no_dead_strip directives for all LLVM methods to prevent the OSX linker
+	 * from optimizing them away, since it doesn't see that code_offsets references them.
+	 * JITted methods don't need this since they are referenced using assembler local
+	 * symbols.
+	 * FIXME: This is why write-symbols doesn't work on OSX ?
+	 */
+	if (acfg->llvm && acfg->need_no_dead_strip) {
+		fprintf (acfg->fp, "\n");
+		for (i = 0; i < acfg->nmethods; ++i) {
+			if (acfg->cfgs [i] && acfg->cfgs [i]->compile_llvm)
+				fprintf (acfg->fp, ".no_dead_strip %s\n", acfg->cfgs [i]->asm_symbol);
+		}
+	}
+
 	sprintf (symbol, "code_offsets");
 	emit_section_change (acfg, RODATA_SECT, 1);
-	emit_global (acfg, symbol, FALSE);
 	emit_alignment (acfg, 8);
 	emit_label (acfg, symbol);
 
@@ -4977,7 +5350,6 @@ emit_info (MonoAotCompile *acfg)
 
 	sprintf (symbol, "method_info_offsets");
 	emit_section_change (acfg, RODATA_SECT, 1);
-	emit_global (acfg, symbol, FALSE);
 	emit_alignment (acfg, 8);
 	emit_label (acfg, symbol);
 
@@ -5039,17 +5411,21 @@ mono_aot_method_hash (MonoMethod *method)
 {
 	MonoMethodSignature *sig;
 	MonoClass *klass;
-	int i;
+	int i, hindex;
 	int hashes_count;
 	guint32 *hashes_start, *hashes;
 	guint32 a, b, c;
+	MonoGenericInst *ginst = NULL;
 
 	/* Similar to the hash in mono_method_get_imt_slot () */
 
 	sig = mono_method_signature (method);
 
-	hashes_count = sig->param_count + 5;
-	hashes_start = malloc (hashes_count * sizeof (guint32));
+	if (method->is_inflated)
+		ginst = ((MonoMethodInflated*)method)->context.method_inst;
+
+	hashes_count = sig->param_count + 5 + (ginst ? ginst->type_argc : 0);
+	hashes_start = g_malloc0 (hashes_count * sizeof (guint32));
 	hashes = hashes_start;
 
 	/* Some wrappers are assigned to random classes */
@@ -5075,10 +5451,16 @@ mono_aot_method_hash (MonoMethod *method)
 		hashes [2] = mono_metadata_str_hash (method->name);
 	hashes [3] = method->wrapper_type;
 	hashes [4] = mono_aot_type_hash (sig->ret);
+	hindex = 5;
 	for (i = 0; i < sig->param_count; i++) {
-		hashes [5 + i] = mono_aot_type_hash (sig->params [i]);
+		hashes [hindex ++] = mono_aot_type_hash (sig->params [i]);
 	}
-	
+	if (ginst) {
+		for (i = 0; i < ginst->type_argc; ++i)
+			hashes [hindex ++] = mono_aot_type_hash (ginst->type_argv [i]);
+	}		
+	g_assert (hindex == hashes_count);
+
 	/* Setup internal state */
 	a = b = c = 0xdeadbeef + (((guint32)hashes_count)<<2);
 
@@ -5230,25 +5612,39 @@ emit_extra_methods (MonoAotCompile *acfg)
 
 		name = NULL;
 		if (method->wrapper_type) {
+			gboolean encode_ref = FALSE;
+
 			/* 
 			 * We encode some wrappers using their name, since encoding them
-			 * directly would be difficult. This also avoids creating the wrapper
-			 * methods at runtime, since they are not needed anyway.
+			 * directly would be difficult. This works because at runtime, we only need to
+			 * check whenever a method ref matches an existing MonoMethod. The downside is
+			 * that the method names are large, so we use the binary encoding if possible.
 			 */
 			switch (method->wrapper_type) {
 			case MONO_WRAPPER_REMOTING_INVOKE_WITH_CHECK:
 			case MONO_WRAPPER_SYNCHRONIZED:
-				/* encode_method_ref () can handle these */
+				encode_ref = TRUE;
 				break;
+			case MONO_WRAPPER_MANAGED_TO_NATIVE:
+				/* Skip JIT icall wrappers */
+				if (!strstr (method->name, "__icall_wrapper"))
+					encode_ref = TRUE;
+				break;
+			case MONO_WRAPPER_UNKNOWN:
+				if (!strcmp (method->name, "PtrToStructure") || !strcmp (method->name, "StructureToPtr"))
+					encode_ref = TRUE;
+ 				break;
 			case MONO_WRAPPER_RUNTIME_INVOKE:
 				if (mono_marshal_method_from_wrapper (method) != method && !strstr (method->name, "virtual"))
 					/* Direct wrapper, encode normally */
-					break;
-				/* Fall through */
+					encode_ref = TRUE;
+				break;
 			default:
-				name = mono_aot_wrapper_name (method);
 				break;
 			}
+
+			if (!encode_ref)
+				name = mono_aot_wrapper_name (method);
 		}
 
 		if (name) {
@@ -5317,7 +5713,6 @@ emit_extra_methods (MonoAotCompile *acfg)
 	/* Emit the table */
 	sprintf (symbol, "extra_method_table");
 	emit_section_change (acfg, RODATA_SECT, 0);
-	emit_global (acfg, symbol, FALSE);
 	emit_alignment (acfg, 8);
 	emit_label (acfg, symbol);
 
@@ -5346,7 +5741,6 @@ emit_extra_methods (MonoAotCompile *acfg)
 	 */
 	sprintf (symbol, "extra_method_info_offsets");
 	emit_section_change (acfg, RODATA_SECT, 0);
-	emit_global (acfg, symbol, FALSE);
 	emit_alignment (acfg, 8);
 	emit_label (acfg, symbol);
 
@@ -5378,7 +5772,6 @@ emit_exception_info (MonoAotCompile *acfg)
 
 	sprintf (symbol, "ex_info_offsets");
 	emit_section_change (acfg, RODATA_SECT, 1);
-	emit_global (acfg, symbol, FALSE);
 	emit_alignment (acfg, 8);
 	emit_label (acfg, symbol);
 
@@ -5402,7 +5795,6 @@ emit_unwind_info (MonoAotCompile *acfg)
 	emit_section_change (acfg, RODATA_SECT, 1);
 	emit_alignment (acfg, 8);
 	emit_label (acfg, symbol);
-	emit_global (acfg, symbol, FALSE);
 
 	for (i = 0; i < acfg->unwind_ops->len; ++i) {
 		guint32 index = GPOINTER_TO_UINT (g_ptr_array_index (acfg->unwind_ops, i));
@@ -5435,7 +5827,6 @@ emit_class_info (MonoAotCompile *acfg)
 
 	sprintf (symbol, "class_info_offsets");
 	emit_section_change (acfg, RODATA_SECT, 1);
-	emit_global (acfg, symbol, FALSE);
 	emit_alignment (acfg, 8);
 	emit_label (acfg, symbol);
 
@@ -5496,7 +5887,6 @@ emit_class_name_table (MonoAotCompile *acfg)
 	/* Emit the table */
 	sprintf (symbol, "class_name_table");
 	emit_section_change (acfg, RODATA_SECT, 0);
-	emit_global (acfg, symbol, FALSE);
 	emit_alignment (acfg, 8);
 	emit_label (acfg, symbol);
 
@@ -5531,9 +5921,8 @@ emit_image_table (MonoAotCompile *acfg)
 	 * So we emit it at once, and reference its elements by an index.
 	 */
 
-	sprintf (symbol, "mono_image_table");
+	sprintf (symbol, "image_table");
 	emit_section_change (acfg, RODATA_SECT, 1);
-	emit_global (acfg, symbol, FALSE);
 	emit_alignment (acfg, 8);
 	emit_label (acfg, symbol);
 
@@ -5616,7 +6005,6 @@ emit_got_info (MonoAotCompile *acfg)
 	/* Emit got_info_offsets table */
 	sprintf (symbol, "got_info_offsets");
 	emit_section_change (acfg, RODATA_SECT, 1);
-	emit_global (acfg, symbol, FALSE);
 	emit_alignment (acfg, 8);
 	emit_label (acfg, symbol);
 
@@ -5642,13 +6030,6 @@ emit_got (MonoAotCompile *acfg)
 		sprintf (symbol, "got_end");
 		emit_label (acfg, symbol);
 	}
-
-	sprintf (symbol, "mono_aot_got_addr");
-	emit_section_change (acfg, ".data", 0);
-	emit_global (acfg, symbol, FALSE);
-	emit_alignment (acfg, 8);
-	emit_label (acfg, symbol);
-	emit_pointer (acfg, acfg->got_symbol);
 }
 
 typedef struct GlobalsTableEntry {
@@ -5657,7 +6038,7 @@ typedef struct GlobalsTableEntry {
 } GlobalsTableEntry;
 
 static void
-emit_globals_table (MonoAotCompile *acfg)
+emit_globals (MonoAotCompile *acfg)
 {
 	int i, table_size;
 	guint32 hash;
@@ -5665,6 +6046,13 @@ emit_globals_table (MonoAotCompile *acfg)
 	char symbol [256];
 	GlobalsTableEntry *entry, *new_entry;
 
+	if (!acfg->aot_opts.static_link)
+		return;
+
+	/* 
+	 * When static linking, we emit a table containing our globals.
+	 */
+
 	/*
 	 * Construct a chained hash table for mapping global names to their index in
 	 * the globals table.
@@ -5731,7 +6119,7 @@ emit_globals_table (MonoAotCompile *acfg)
 	}
 
 	/* Emit the globals table */
-	sprintf (symbol, ".Lglobals");
+	sprintf (symbol, "globals");
 	emit_section_change (acfg, ".data", 0);
 	/* This is not a global, since it is accessed by the init function */
 	emit_alignment (acfg, 8);
@@ -5755,60 +6143,6 @@ emit_globals_table (MonoAotCompile *acfg)
 }
 
 static void
-emit_globals (MonoAotCompile *acfg)
-{
-	char *build_info;
-
-	emit_string_symbol (acfg, "mono_assembly_guid" , acfg->image->guid);
-
-	emit_string_symbol (acfg, "mono_aot_version", MONO_AOT_FILE_VERSION);
-
-	if (acfg->aot_opts.bind_to_runtime_version) {
-		build_info = mono_get_runtime_build_info ();
-		emit_string_symbol (acfg, "mono_runtime_version", build_info);
-		g_free (build_info);
-	} else {
-		emit_string_symbol (acfg, "mono_runtime_version", "");
-	}
-
-	/* 
-	 * When static linking, we emit a global which will point to the symbol table.
-	 */
-	if (acfg->aot_opts.static_link) {
-		char symbol [256];
-		char *p;
-
-		/* Emit a string holding the assembly name */
-		emit_string_symbol (acfg, "mono_aot_assembly_name", acfg->image->assembly->aname.name);
-
-		emit_globals_table (acfg);
-
-		/* 
-		 * Emit a global symbol which can be passed by an embedding app to
-		 * mono_aot_register_module ().
-		 */
-#if defined(__MACH__) && !defined(__native_client_codegen__)
-		sprintf (symbol, "_mono_aot_module_%s_info", acfg->image->assembly->aname.name);
-#else
-		sprintf (symbol, "mono_aot_module_%s_info", acfg->image->assembly->aname.name);
-#endif
-
-		/* Get rid of characters which cannot occur in symbols */
-		p = symbol;
-		for (p = symbol; *p; ++p) {
-			if (!(isalnum (*p) || *p == '_'))
-				*p = '_';
-		}
-		acfg->static_linking_symbol = g_strdup (symbol);
-		emit_global_inner (acfg, symbol, FALSE);
-		emit_alignment (acfg, 8);
-		emit_label (acfg, symbol);
-		sprintf (symbol, "%sglobals", acfg->temp_prefix);
-		emit_pointer (acfg, symbol);
-	}
-}
-
-static void
 emit_autoreg (MonoAotCompile *acfg)
 {
 	char *symbol;
@@ -5834,7 +6168,6 @@ emit_mem_end (MonoAotCompile *acfg)
 
 	sprintf (symbol, "mem_end");
 	emit_section_change (acfg, ".text", 1);
-	emit_global (acfg, symbol, FALSE);
 	emit_alignment (acfg, 8);
 	emit_label (acfg, symbol);
 }
@@ -5845,10 +6178,24 @@ emit_mem_end (MonoAotCompile *acfg)
 static void
 emit_file_info (MonoAotCompile *acfg)
 {
-	char symbol [128];
+	char symbol [256];
 	int i;
 	int gc_name_offset;
 	const char *gc_name;
+	char *build_info;
+
+	emit_string_symbol (acfg, "assembly_guid" , acfg->image->guid);
+
+	if (acfg->aot_opts.bind_to_runtime_version) {
+		build_info = mono_get_runtime_build_info ();
+		emit_string_symbol (acfg, "runtime_version", build_info);
+		g_free (build_info);
+	} else {
+		emit_string_symbol (acfg, "runtime_version", "");
+	}
+
+	/* Emit a string holding the assembly name */
+	emit_string_symbol (acfg, "assembly_name", acfg->image->assembly->aname.name);
 
 	/*
 	 * The managed allocators are GC specific, so can't use an AOT image created by one GC
@@ -5861,9 +6208,67 @@ emit_file_info (MonoAotCompile *acfg)
 	emit_section_change (acfg, ".data", 0);
 	emit_alignment (acfg, 8);
 	emit_label (acfg, symbol);
-	emit_global (acfg, symbol, FALSE);
+	if (!acfg->aot_opts.static_link)
+		emit_global (acfg, symbol, FALSE);
 
 	/* The data emitted here must match MonoAotFileInfo. */
+
+	emit_int32 (acfg, MONO_AOT_FILE_VERSION);
+	emit_int32 (acfg, 0);
+
+	/* 
+	 * We emit pointers to our data structures instead of emitting global symbols which
+	 * point to them, to reduce the number of globals, and because using globals leads to
+	 * various problems (i.e. arm/thumb).
+	 */
+	emit_pointer (acfg, acfg->got_symbol);
+	emit_pointer (acfg, "methods");
+	if (acfg->llvm) {
+		/*
+		 * Emit a reference to the mono_eh_frame table created by our modified LLVM compiler.
+		 */
+		emit_pointer (acfg, "mono_eh_frame");
+	} else {
+		emit_pointer (acfg, NULL);
+	}
+	emit_pointer (acfg, "blob");
+	emit_pointer (acfg, "class_name_table");
+	emit_pointer (acfg, "class_info_offsets");
+	emit_pointer (acfg, "method_info_offsets");
+	emit_pointer (acfg, "ex_info_offsets");
+	emit_pointer (acfg, "code_offsets");
+	emit_pointer (acfg, "extra_method_info_offsets");
+	emit_pointer (acfg, "extra_method_table");
+	emit_pointer (acfg, "got_info_offsets");
+	emit_pointer (acfg, "methods_end");
+	emit_pointer (acfg, "unwind_info");
+	emit_pointer (acfg, "mem_end");
+	emit_pointer (acfg, "image_table");
+	emit_pointer (acfg, "plt");
+	emit_pointer (acfg, "plt_end");
+	emit_pointer (acfg, "assembly_guid");
+	emit_pointer (acfg, "runtime_version");
+	if (acfg->num_trampoline_got_entries) {
+		emit_pointer (acfg, "specific_trampolines");
+		emit_pointer (acfg, "static_rgctx_trampolines");
+		emit_pointer (acfg, "imt_thunks");
+	} else {
+		emit_pointer (acfg, NULL);
+		emit_pointer (acfg, NULL);
+		emit_pointer (acfg, NULL);
+	}
+	if (acfg->thumb_mixed) {
+		emit_pointer (acfg, "thumb_end");
+	} else {
+		emit_pointer (acfg, NULL);
+	}
+	if (acfg->aot_opts.static_link) {
+		emit_pointer (acfg, "globals");
+	} else {
+		emit_pointer (acfg, NULL);
+	}
+	emit_pointer (acfg, "assembly_name");
+
 	emit_int32 (acfg, acfg->plt_got_offset_base);
 	emit_int32 (acfg, (int)(acfg->got_offset * sizeof (gpointer)));
 	emit_int32 (acfg, acfg->plt_offset);
@@ -5878,6 +6283,52 @@ emit_file_info (MonoAotCompile *acfg)
 		emit_int32 (acfg, acfg->trampoline_got_offset_base [i]);
 	for (i = 0; i < MONO_AOT_TRAMP_NUM; ++i)
 		emit_int32 (acfg, acfg->trampoline_size [i]);
+
+#if defined (TARGET_ARM) && defined (__APPLE__)
+       {
+               MonoType t;
+               int align = 0;
+
+               t.type = MONO_TYPE_R8;
+               mono_type_size (&t, &align);
+
+               emit_int32 (acfg, align);
+
+               t.type = MONO_TYPE_I8;
+               mono_type_size (&t, &align);
+
+               emit_int32 (acfg, align);
+       }
+#else
+	emit_int32 (acfg, __alignof__ (double));
+	emit_int32 (acfg, __alignof__ (gint64));
+#endif
+
+	if (acfg->aot_opts.static_link) {
+		char *p;
+
+		/* 
+		 * Emit a global symbol which can be passed by an embedding app to
+		 * mono_aot_register_module (). The symbol points to a pointer to the the file info
+		 * structure.
+		 */
+#if defined(__APPLE__) && !defined(__native_client_codegen__)
+		sprintf (symbol, "_mono_aot_module_%s_info", acfg->image->assembly->aname.name);
+#else
+		sprintf (symbol, "mono_aot_module_%s_info", acfg->image->assembly->aname.name);
+#endif
+
+		/* Get rid of characters which cannot occur in symbols */
+		p = symbol;
+		for (p = symbol; *p; ++p) {
+			if (!(isalnum (*p) || *p == '_'))
+				*p = '_';
+		}
+		acfg->static_linking_symbol = g_strdup (symbol);
+		emit_global_inner (acfg, symbol, FALSE);
+		emit_label (acfg, symbol);
+		emit_pointer (acfg, "mono_aot_file_info");
+	}
 }
 
 static void
@@ -5887,7 +6338,6 @@ emit_blob (MonoAotCompile *acfg)
 
 	sprintf (symbol, "blob");
 	emit_section_change (acfg, RODATA_SECT, 1);
-	emit_global (acfg, symbol, FALSE);
 	emit_alignment (acfg, 8);
 	emit_label (acfg, symbol);
 
@@ -6056,7 +6506,11 @@ compile_asm (MonoAotCompile *acfg)
 #endif
 
 #ifdef __native_client_codegen__
+#if defined(TARGET_AMD64)
+#define AS_NAME "nacl64-as"
+#else
 #define AS_NAME "nacl-as"
+#endif
 #else
 #define AS_NAME "as"
 #endif
@@ -6065,11 +6519,7 @@ compile_asm (MonoAotCompile *acfg)
 #define LD_OPTIONS ""
 #endif
 
-#ifdef ENABLE_LLVM
-#define EH_LD_OPTIONS "--eh-frame-hdr"
-#else
 #define EH_LD_OPTIONS ""
-#endif
 
 	if (acfg->aot_opts.asm_only) {
 		printf ("Output file: '%s'.\n", acfg->tmpfname);
@@ -6086,7 +6536,7 @@ compile_asm (MonoAotCompile *acfg)
 	} else {
 		objfile = g_strdup_printf ("%s.o", acfg->tmpfname);
 	}
-	command = g_strdup_printf ("%s%s %s %s -o %s", tool_prefix, AS_NAME, AS_OPTIONS, acfg->tmpfname, objfile);
+	command = g_strdup_printf ("%s%s %s %s -o %s %s", tool_prefix, AS_NAME, AS_OPTIONS, acfg->as_args ? acfg->as_args->str : "", objfile, acfg->tmpfname);
 	printf ("Executing the native assembler: %s\n", command);
 	if (system (command) != 0) {
 		g_free (command);
@@ -6112,7 +6562,7 @@ compile_asm (MonoAotCompile *acfg)
 
 #if defined(sparc)
 	command = g_strdup_printf ("ld -shared -G -o %s %s.o", tmp_outfile_name, acfg->tmpfname);
-#elif defined(__ppc__) && defined(__MACH__)
+#elif defined(__ppc__) && defined(__APPLE__)
 	command = g_strdup_printf ("gcc -dynamiclib -o %s %s.o", tmp_outfile_name, acfg->tmpfname);
 #elif defined(HOST_WIN32)
 	command = g_strdup_printf ("gcc -shared --dll -mno-cygwin -o %s %s.o", tmp_outfile_name, acfg->tmpfname);
@@ -6137,7 +6587,7 @@ compile_asm (MonoAotCompile *acfg)
 	system (com);
 	g_free (com);*/
 
-#if defined(TARGET_ARM) && !defined(__MACH__)
+#if defined(TARGET_ARM) && !defined(__APPLE__)
 	/* 
 	 * gas generates 'mapping symbols' each time code and data is mixed, which 
 	 * happens a lot in emit_and_reloc_code (), so we need to get rid of them.
@@ -6256,6 +6706,7 @@ mono_compile_assembly (MonoAssembly *ass, guint32 opts, const char *aot_options)
 	acfg->aot_opts.ntrampolines = 1024;
 	acfg->aot_opts.nrgctx_trampolines = 1024;
 	acfg->aot_opts.nimt_trampolines = 128;
+	acfg->aot_opts.llvm_path = g_strdup ("");
 
 	mono_aot_parse_options (aot_options, &acfg->aot_opts);
 
@@ -6284,12 +6735,18 @@ mono_compile_assembly (MonoAssembly *ass, guint32 opts, const char *aot_options)
 			fprintf (stderr, "The soft-debug AOT option requires the --debug option.\n");
 			return 1;
 		}
+		acfg->flags |= MONO_AOT_FILE_FLAG_DEBUG;
 	}
 
 	if (mono_use_llvm) {
 		acfg->llvm = TRUE;
 		acfg->aot_opts.asm_writer = TRUE;
 		acfg->flags |= MONO_AOT_FILE_FLAG_WITH_LLVM;
+
+		if (acfg->aot_opts.soft_debug) {
+			fprintf (stderr, "The 'soft-debug' option is not supported when compiling with LLVM.\n");
+			exit (1);
+		}
 	}
 
 	if (acfg->aot_opts.full_aot)
@@ -6303,8 +6760,12 @@ mono_compile_assembly (MonoAssembly *ass, guint32 opts, const char *aot_options)
 #endif
 	acfg->num_trampolines [MONO_AOT_TRAMP_IMT_THUNK] = acfg->aot_opts.full_aot ? acfg->aot_opts.nimt_trampolines : 0;
 
+	acfg->temp_prefix = img_writer_get_temp_label_prefix (NULL);
+
+	arch_init (acfg);
+
 	acfg->got_symbol_base = g_strdup_printf ("mono_aot_%s_got", acfg->image->assembly->aname.name);
-	acfg->plt_symbol = g_strdup_printf ("mono_aot_%s_plt", acfg->image->assembly->aname.name);
+	acfg->plt_symbol = g_strdup_printf ("%smono_aot_%s_plt", acfg->llvm_label_prefix, acfg->image->assembly->aname.name);
 
 	/* Get rid of characters which cannot occur in symbols */
 	for (p = acfg->got_symbol_base; *p; ++p) {
@@ -6316,18 +6777,6 @@ mono_compile_assembly (MonoAssembly *ass, guint32 opts, const char *aot_options)
 			*p = '_';
 	}
 
-	acfg->temp_prefix = img_writer_get_temp_label_prefix (NULL);
-
-	/*
-	 * The prefix LLVM likes to put in front of symbol names on darwin.
-	 * The mach-os specs require this for globals, but LLVM puts them in front of all
-	 * symbols. We need to handle this, since we need to refer to LLVM generated
-	 * symbols.
-	 */
-	acfg->llvm_label_prefix = "";
-	if (acfg->llvm)
-		acfg->llvm_label_prefix = LLVM_LABEL_PREFIX;
-
 	acfg->method_index = 1;
 
 	collect_methods (acfg);
@@ -6443,7 +6892,10 @@ mono_compile_assembly (MonoAssembly *ass, guint32 opts, const char *aot_options)
 			MonoCompile *cfg = acfg->cfgs [i];
 			int method_index = get_method_index (acfg, cfg->orig_method);
 
-			cfg->asm_symbol = g_strdup_printf ("%s%sm_%x", acfg->temp_prefix, LLVM_LABEL_PREFIX, method_index);
+			if (COMPILE_LLVM (cfg))
+				cfg->asm_symbol = g_strdup_printf ("%s%s", acfg->llvm_label_prefix, cfg->llvm_method_name);
+			else
+				cfg->asm_symbol = g_strdup_printf ("%s%sm_%x", acfg->temp_prefix, acfg->llvm_label_prefix, method_index);
 		}
 	}
 
@@ -6455,6 +6907,20 @@ mono_compile_assembly (MonoAssembly *ass, guint32 opts, const char *aot_options)
 	if (acfg->dwarf)
 		mono_dwarf_writer_emit_base_info (acfg->dwarf, mono_unwind_get_cie_program ());
 
+	if (acfg->thumb_mixed) {
+		char symbol [256];
+		/*
+		 * This global symbol marks the end of THUMB code, and the beginning of ARM
+		 * code generated by our JIT.
+		 */
+		sprintf (symbol, "thumb_end");
+		emit_section_change (acfg, ".text", 0);
+		emit_label (acfg, symbol);
+		emit_zero_bytes (acfg, 16);
+
+		fprintf (acfg->fp, ".arm\n");
+	}
+
 	emit_code (acfg);
 
 	emit_info (acfg);
@@ -6494,6 +6960,13 @@ mono_compile_assembly (MonoAssembly *ass, guint32 opts, const char *aot_options)
 
 	emit_mem_end (acfg);
 
+	if (acfg->need_pt_gnu_stack) {
+		/* This is required so the .so doesn't have an executable stack */
+		/* The bin writer already emits this */
+		if (!acfg->use_bin_writer)
+			fprintf (acfg->fp, "\n.section	.note.GNU-stack,\"\", at progbits\n");
+	}
+
 	TV_GETTIME (btv);
 
 	acfg->stats.gen_time = TV_ELAPSED (atv, btv);
diff --git a/mono/mini/aot-runtime.c b/mono/mini/aot-runtime.c
index d27d44c..fc05641 100644
--- a/mono/mini/aot-runtime.c
+++ b/mono/mini/aot-runtime.c
@@ -51,6 +51,7 @@
 #include <mono/metadata/gc-internal.h>
 #include <mono/metadata/monitor.h>
 #include <mono/metadata/threads-types.h>
+#include <mono/metadata/mono-endian.h>
 #include <mono/utils/mono-logger-internal.h>
 #include <mono/utils/mono-mmap.h>
 #include "mono/utils/mono-compiler.h"
@@ -112,9 +113,10 @@ typedef struct MonoAotModule {
 	guint32 *extra_method_table;
 	guint32 *extra_method_info_offsets;
 	guint8 *unwind_info;
+	guint8 *thumb_end;
 
-	/* Points to the GNU .eh_frame_hdr section, if it exists */
-	guint8 *eh_frame_hdr;
+	/* Points to the mono EH data created by LLVM */
+	guint8 *mono_eh_frame;
 
 	/* Points to the trampolines */
 	guint8 *trampolines [MONO_AOT_TRAMP_NUM];
@@ -195,7 +197,7 @@ load_image (MonoAotModule *amodule, int index, gboolean set_error)
 	if (amodule->out_of_date)
 		return NULL;
 
-	assembly = mono_assembly_load (&amodule->image_names [index], NULL, &status);
+	assembly = mono_assembly_load (&amodule->image_names [index], amodule->assembly->basedir, &status);
 	if (!assembly) {
 		mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_AOT, "AOT module %s is unusable because dependency %s is not found.\n", amodule->aot_name, amodule->image_names [index].name);
 		amodule->out_of_date = TRUE;
@@ -466,77 +468,53 @@ decode_field_info (MonoAotModule *module, guint8 *buf, guint8 **endbuf)
 	return mono_class_get_field (klass, token);
 }
 
-/*
- * can_method_ref_match_method:
- *
- *   Determine if calling decode_resolve_method_ref on P could return the same method as 
- * METHOD. This is an optimization to avoid calling decode_resolve_method_ref () which
- * would create MonoMethods which are not needed etc.
- */
-static gboolean
-can_method_ref_match_method (MonoAotModule *module, guint8 *buf, MonoMethod *method)
-{
-	guint8 *p = buf;
-	guint32 image_index, value;
-
-	/* Keep this in sync with decode_method_ref () */
-	value = decode_value (p, &p);
-	image_index = value >> 24;
-
-	if (image_index == MONO_AOT_METHODREF_WRAPPER) {
-		guint32 wrapper_type;
-
-		if (!method->wrapper_type)
-			return FALSE;
-
-		wrapper_type = decode_value (p, &p);
-
-		if (method->wrapper_type != wrapper_type)
-			return FALSE;
-	} else if (image_index == MONO_AOT_METHODREF_WRAPPER_NAME) {
-		return FALSE;
-	} else if (image_index < MONO_AOT_METHODREF_MIN || image_index == MONO_AOT_METHODREF_METHODSPEC || image_index == MONO_AOT_METHODREF_GINST) {
-		if (method->wrapper_type)
-			return FALSE;
-	}
-
-	return TRUE;
-}
+/* Stores information returned by decode_method_ref () */
+typedef struct {
+	MonoImage *image;
+	guint32 token;
+	MonoMethod *method;
+	gboolean no_aot_trampoline;
+} MethodRef;
 
 /*
- * decode_method_ref:
+ * decode_method_ref_with_target:
  *
- *   Decode a method reference, and return its image and token. This avoids loading
- * metadata for the method if the caller does not need it. If the method has no token,
- * then it is loaded from metadata and METHOD is set to the method instance.
+ *   Decode a method reference, storing the image/token into a MethodRef structure.
+ * This avoids loading metadata for the method if the caller does not need it. If the method has
+ * no token, then it is loaded from metadata and ref->method is set to the method instance.
+ * If TARGET is non-NULL, abort decoding if it can be determined that the decoded method couldn't resolve to TARGET, and return FALSE.
  */
-static MonoImage*
-decode_method_ref (MonoAotModule *module, guint32 *token, MonoMethod **method, gboolean *no_aot_trampoline, guint8 *buf, guint8 **endbuf)
+static gboolean
+decode_method_ref_with_target (MonoAotModule *module, MethodRef *ref, MonoMethod *target, guint8 *buf, guint8 **endbuf)
 {
 	guint32 image_index, value;
 	MonoImage *image = NULL;
 	guint8 *p = buf;
 
-	if (method)
-		*method = NULL;
-	if (no_aot_trampoline)
-		*no_aot_trampoline = FALSE;
+	memset (ref, 0, sizeof (MethodRef));
 
 	value = decode_value (p, &p);
 	image_index = value >> 24;
 
 	if (image_index == MONO_AOT_METHODREF_NO_AOT_TRAMPOLINE) {
-		if (no_aot_trampoline)
-			*no_aot_trampoline = TRUE;
+		ref->no_aot_trampoline = TRUE;
 		value = decode_value (p, &p);
 		image_index = value >> 24;
 	}
 
+	if (image_index < MONO_AOT_METHODREF_MIN || image_index == MONO_AOT_METHODREF_METHODSPEC || image_index == MONO_AOT_METHODREF_GINST) {
+		if (target && target->wrapper_type)
+			return FALSE;
+	}
+
 	if (image_index == MONO_AOT_METHODREF_WRAPPER) {
 		guint32 wrapper_type;
 
 		wrapper_type = decode_value (p, &p);
 
+		if (target && target->wrapper_type != wrapper_type)
+			return FALSE;
+
 		/* Doesn't matter */
 		image = mono_defaults.corlib;
 
@@ -545,16 +523,16 @@ decode_method_ref (MonoAotModule *module, guint32 *token, MonoMethod **method, g
 			MonoMethod *m = decode_resolve_method_ref (module, p, &p);
 
 			if (!m)
-				return NULL;
+				return FALSE;
 			mono_class_init (m->klass);
-			*method = mono_marshal_get_remoting_invoke_with_check (m);
+			ref->method = mono_marshal_get_remoting_invoke_with_check (m);
 			break;
 		}
 		case MONO_WRAPPER_PROXY_ISINST: {
 			MonoClass *klass = decode_klass_ref (module, p, &p);
 			if (!klass)
-				return NULL;
-			*method = mono_marshal_get_proxy_cancast (klass);
+				return FALSE;
+			ref->method = mono_marshal_get_proxy_cancast (klass);
 			break;
 		}
 		case MONO_WRAPPER_LDFLD:
@@ -563,43 +541,43 @@ decode_method_ref (MonoAotModule *module, guint32 *token, MonoMethod **method, g
 		case MONO_WRAPPER_ISINST: {
 			MonoClass *klass = decode_klass_ref (module, p, &p);
 			if (!klass)
-				return NULL;
+				return FALSE;
 			if (wrapper_type == MONO_WRAPPER_LDFLD)
-				*method = mono_marshal_get_ldfld_wrapper (&klass->byval_arg);
+				ref->method = mono_marshal_get_ldfld_wrapper (&klass->byval_arg);
 			else if (wrapper_type == MONO_WRAPPER_LDFLDA)
-				*method = mono_marshal_get_ldflda_wrapper (&klass->byval_arg);
+				ref->method = mono_marshal_get_ldflda_wrapper (&klass->byval_arg);
 			else if (wrapper_type == MONO_WRAPPER_STFLD)
-				*method = mono_marshal_get_stfld_wrapper (&klass->byval_arg);
+				ref->method = mono_marshal_get_stfld_wrapper (&klass->byval_arg);
 			else if (wrapper_type == MONO_WRAPPER_ISINST)
-				*method = mono_marshal_get_isinst (klass);
+				ref->method = mono_marshal_get_isinst (klass);
 			else
 				g_assert_not_reached ();
 			break;
 		}
 		case MONO_WRAPPER_LDFLD_REMOTE:
-			*method = mono_marshal_get_ldfld_remote_wrapper (NULL);
+			ref->method = mono_marshal_get_ldfld_remote_wrapper (NULL);
 			break;
 		case MONO_WRAPPER_STFLD_REMOTE:
-			*method = mono_marshal_get_stfld_remote_wrapper (NULL);
+			ref->method = mono_marshal_get_stfld_remote_wrapper (NULL);
 			break;
 		case MONO_WRAPPER_ALLOC: {
 			int atype = decode_value (p, &p);
 
-			*method = mono_gc_get_managed_allocator_by_type (atype);
+			ref->method = mono_gc_get_managed_allocator_by_type (atype);
 			break;
 		}
 		case MONO_WRAPPER_WRITE_BARRIER:
-			*method = mono_gc_get_write_barrier ();
+			ref->method = mono_gc_get_write_barrier ();
 			break;
 		case MONO_WRAPPER_STELEMREF:
-			*method = mono_marshal_get_stelemref ();
+			ref->method = mono_marshal_get_stelemref ();
 			break;
 		case MONO_WRAPPER_SYNCHRONIZED: {
 			MonoMethod *m = decode_resolve_method_ref (module, p, &p);
 
 			if (!m)
-				return NULL;
-			*method = mono_marshal_get_synchronized_wrapper (m);
+				return FALSE;
+			ref->method = mono_marshal_get_synchronized_wrapper (m);
 			break;
 		}
 		case MONO_WRAPPER_UNKNOWN: {
@@ -607,16 +585,37 @@ decode_method_ref (MonoAotModule *module, guint32 *token, MonoMethod **method, g
 			MonoMethod *orig_method;
 			int subtype = decode_value (p, &p);
 
-			if (subtype == MONO_AOT_WRAPPER_MONO_ENTER)
-				desc = mono_method_desc_new ("Monitor:Enter", FALSE);
-			else if (subtype == MONO_AOT_WRAPPER_MONO_EXIT)
-				desc = mono_method_desc_new ("Monitor:Exit", FALSE);
-			else
-				g_assert_not_reached ();
-			orig_method = mono_method_desc_search_in_class (desc, mono_defaults.monitor_class);
-			g_assert (orig_method);
-			mono_method_desc_free (desc);
-			*method = mono_monitor_get_fast_path (orig_method);
+			if (subtype == MONO_AOT_WRAPPER_PTR_TO_STRUCTURE || subtype == MONO_AOT_WRAPPER_STRUCTURE_TO_PTR) {
+				MonoClass *klass = decode_klass_ref (module, p, &p);
+				
+				if (!klass)
+					return FALSE;
+
+				g_assert (target);
+				if (klass != target->klass)
+					return FALSE;
+
+				if (subtype == MONO_AOT_WRAPPER_PTR_TO_STRUCTURE) {
+					if (strcmp (target->name, "PtrToStructure"))
+						return FALSE;
+					ref->method = mono_marshal_get_ptr_to_struct (klass);
+				} else {
+					if (strcmp (target->name, "StructureToPtr"))
+						return FALSE;
+					ref->method = mono_marshal_get_struct_to_ptr (klass);
+				}
+			} else {
+				if (subtype == MONO_AOT_WRAPPER_MONO_ENTER)
+					desc = mono_method_desc_new ("Monitor:Enter", FALSE);
+				else if (subtype == MONO_AOT_WRAPPER_MONO_EXIT)
+					desc = mono_method_desc_new ("Monitor:Exit", FALSE);
+				else
+					g_assert_not_reached ();
+				orig_method = mono_method_desc_search_in_class (desc, mono_defaults.monitor_class);
+				g_assert (orig_method);
+				mono_method_desc_free (desc);
+				ref->method = mono_monitor_get_fast_path (orig_method);
+			}
 			break;
 		}
 		case MONO_WRAPPER_RUNTIME_INVOKE: {
@@ -624,8 +623,8 @@ decode_method_ref (MonoAotModule *module, guint32 *token, MonoMethod **method, g
 			MonoMethod *m = decode_resolve_method_ref (module, p, &p);
 
 			if (!m)
-				return NULL;
-			*method = mono_marshal_get_runtime_invoke (m, FALSE);
+				return FALSE;
+			ref->method = mono_marshal_get_runtime_invoke (m, FALSE);
 			break;
 		}
 		case MONO_WRAPPER_MANAGED_TO_MANAGED: {
@@ -635,25 +634,41 @@ decode_method_ref (MonoAotModule *module, guint32 *token, MonoMethod **method, g
 				int rank = decode_value (p, &p);
 				int elem_size = decode_value (p, &p);
 
-				*method = mono_marshal_get_array_address (rank, elem_size);
+				ref->method = mono_marshal_get_array_address (rank, elem_size);
 			} else {
 				g_assert_not_reached ();
 			}
 			break;
 		}
+		case MONO_WRAPPER_MANAGED_TO_NATIVE: {
+			MonoMethod *m = decode_resolve_method_ref (module, p, &p);
+
+			if (!m)
+				return FALSE;
+
+			/* This should only happen when looking for an extra method */
+			g_assert (target);
+			if (mono_marshal_method_from_wrapper (target) == m)
+				ref->method = target;
+			else
+				return FALSE;
+			break;
+		}
 		default:
 			g_assert_not_reached ();
 		}
 	} else if (image_index == MONO_AOT_METHODREF_WRAPPER_NAME) {
+		if (target)
+			return FALSE;
 		/* Can't decode these */
 		g_assert_not_reached ();
 	} else if (image_index == MONO_AOT_METHODREF_METHODSPEC) {
 		image_index = decode_value (p, &p);
-		*token = decode_value (p, &p);
+		ref->token = decode_value (p, &p);
 
 		image = load_image (module, image_index, TRUE);
 		if (!image)
-			return NULL;
+			return FALSE;
 	} else if (image_index == MONO_AOT_METHODREF_GINST) {
 		MonoClass *klass;
 		MonoGenericContext ctx;
@@ -664,18 +679,21 @@ decode_method_ref (MonoAotModule *module, guint32 *token, MonoMethod **method, g
 		 */
 		klass = decode_klass_ref (module, p, &p);
 		if (!klass)
-			return NULL;
+			return FALSE;
+
+		if (target && target->klass != klass)
+			return FALSE;
 
 		image_index = decode_value (p, &p);
-		*token = decode_value (p, &p);
+		ref->token = decode_value (p, &p);
 
 		image = load_image (module, image_index, TRUE);
 		if (!image)
-			return NULL;
+			return FALSE;
 
-		*method = mono_get_method_full (image, *token, NULL, NULL);
-		if (!(*method))
-			return NULL;
+		ref->method = mono_get_method_full (image, ref->token, NULL, NULL);
+		if (!ref->method)
+			return FALSE;
 
 		memset (&ctx, 0, sizeof (ctx));
 
@@ -683,75 +701,89 @@ decode_method_ref (MonoAotModule *module, guint32 *token, MonoMethod **method, g
 			ctx.class_inst = klass->generic_class->context.class_inst;
 			ctx.method_inst = NULL;
  
-			*method = mono_class_inflate_generic_method_full (*method, klass, &ctx);
+			ref->method = mono_class_inflate_generic_method_full (ref->method, klass, &ctx);
 		}			
 
 		memset (&ctx, 0, sizeof (ctx));
 
 		if (!decode_generic_context (module, &ctx, p, &p))
-			return NULL;
+			return FALSE;
 
-		*method = mono_class_inflate_generic_method_full (*method, klass, &ctx);
+		ref->method = mono_class_inflate_generic_method_full (ref->method, klass, &ctx);
 	} else if (image_index == MONO_AOT_METHODREF_ARRAY) {
 		MonoClass *klass;
 		int method_type;
 
 		klass = decode_klass_ref (module, p, &p);
 		if (!klass)
-			return NULL;
+			return FALSE;
 		method_type = decode_value (p, &p);
-		*token = 0;
 		switch (method_type) {
 		case 0:
-			*method = mono_class_get_method_from_name (klass, ".ctor", klass->rank);
+			ref->method = mono_class_get_method_from_name (klass, ".ctor", klass->rank);
 			break;
 		case 1:
-			*method = mono_class_get_method_from_name (klass, ".ctor", klass->rank * 2);
+			ref->method = mono_class_get_method_from_name (klass, ".ctor", klass->rank * 2);
 			break;
 		case 2:
-			*method = mono_class_get_method_from_name (klass, "Get", -1);
+			ref->method = mono_class_get_method_from_name (klass, "Get", -1);
 			break;
 		case 3:
-			*method = mono_class_get_method_from_name (klass, "Address", -1);
+			ref->method = mono_class_get_method_from_name (klass, "Address", -1);
 			break;
 		case 4:
-			*method = mono_class_get_method_from_name (klass, "Set", -1);
+			ref->method = mono_class_get_method_from_name (klass, "Set", -1);
 			break;
 		default:
 			g_assert_not_reached ();
 		}
 	} else {
 		g_assert (image_index < MONO_AOT_METHODREF_MIN);
-		*token = MONO_TOKEN_METHOD_DEF | (value & 0xffffff);
+		ref->token = MONO_TOKEN_METHOD_DEF | (value & 0xffffff);
 
 		image = load_image (module, image_index, TRUE);
 		if (!image)
-			return NULL;
+			return FALSE;
 	}
 
 	*endbuf = p;
 
-	return image;
+	ref->image = image;
+
+	return TRUE;
+}
+
+static gboolean
+decode_method_ref (MonoAotModule *module, MethodRef *ref, guint8 *buf, guint8 **endbuf)
+{
+	return decode_method_ref_with_target (module, ref, NULL, buf, endbuf);
 }
 
 /*
- * decode_resolve_method_ref:
+ * decode_resolve_method_ref_with_target:
  *
  *   Similar to decode_method_ref, but resolve and return the method itself.
  */
 static MonoMethod*
-decode_resolve_method_ref (MonoAotModule *module, guint8 *buf, guint8 **endbuf)
+decode_resolve_method_ref_with_target (MonoAotModule *module, MonoMethod *target, guint8 *buf, guint8 **endbuf)
 {
-	MonoMethod *method;
-	guint32 token;
-	MonoImage *image = decode_method_ref (module, &token, &method, NULL, buf, endbuf);
+	MethodRef ref;
+	gboolean res;
 
-	if (method)
-		return method;
-	if (!image)
+	res = decode_method_ref_with_target (module, &ref, target, buf, endbuf);
+	if (!res)
 		return NULL;
-	method = mono_get_method (image, token, NULL);
-	return method;
+	if (ref.method)
+		return ref.method;
+	if (!ref.image)
+		return NULL;
+	return mono_get_method (ref.image, ref.token, NULL);
+}
+
+static MonoMethod*
+decode_resolve_method_ref (MonoAotModule *module, guint8 *buf, guint8 **endbuf)
+{
+	return decode_resolve_method_ref_with_target (module, NULL, buf, endbuf);
 }
 
 static void
@@ -932,24 +964,68 @@ find_symbol (MonoDl *module, gpointer *globals, const char *name, gpointer *valu
 	}
 }
 
-#if defined(HAVE_DL_ITERATE_PHDR) && defined(PT_GNU_EH_FRAME)
-static int
-dl_callback (struct dl_phdr_info *info, size_t size, void *data)
+static gboolean
+check_usable (MonoAssembly *assembly, MonoAotFileInfo *info, char **out_msg)
 {
-	int j;
-	MonoAotModule *amodule = data;
+	char *build_info;
+	char *msg = NULL;
+	gboolean usable = TRUE;
+	gboolean full_aot;
+	guint8 *blob;
+
+	if (strcmp (assembly->image->guid, info->assembly_guid)) {
+		msg = g_strdup_printf ("doesn't match assembly");
+		usable = FALSE;
+	}
+
+	build_info = mono_get_runtime_build_info ();
+	if (strlen (info->runtime_version) > 0 && strcmp (info->runtime_version, build_info)) {
+		msg = g_strdup_printf ("compiled against runtime version '%s' while this runtime has version '%s'", info->runtime_version, build_info);
+		usable = FALSE;
+	}
+	g_free (build_info);
+
+	full_aot = info->flags & MONO_AOT_FILE_FLAG_FULL_AOT;
+
+	if (mono_aot_only && !full_aot) {
+		msg = g_strdup_printf ("not compiled with --aot=full");
+		usable = FALSE;
+	}
+	if (!mono_aot_only && full_aot) {
+		msg = g_strdup_printf ("compiled with --aot=full");
+		usable = FALSE;
+	}
+#ifdef TARGET_ARM
+	/* mono_arch_find_imt_method () requires this */
+	if ((info->flags & MONO_AOT_FILE_FLAG_WITH_LLVM) && !mono_use_llvm) {
+		msg = g_strdup_printf ("compiled against LLVM");
+		usable = FALSE;
+	}
+	if (!(info->flags & MONO_AOT_FILE_FLAG_WITH_LLVM) && mono_use_llvm) {
+		msg = g_strdup_printf ("not compiled against LLVM");
+		usable = FALSE;
+	}
+#endif
+	if (mini_get_debug_options ()->mdb_optimizations && !(info->flags & MONO_AOT_FILE_FLAG_DEBUG) && !full_aot) {
+		msg = g_strdup_printf ("not compiled for debugging");
+		usable = FALSE;
+	}
+
+	blob = info->blob;
 
-	if (!strcmp (amodule->aot_name, info->dlpi_name)) {
-		for (j = 0; j < info->dlpi_phnum; j++) {
-			if (info->dlpi_phdr [j].p_type == PT_GNU_EH_FRAME)
-				amodule->eh_frame_hdr = (guint8*)(info->dlpi_addr + info->dlpi_phdr [j].p_vaddr);
+	if (info->gc_name_index != -1) {
+		char *gc_name = (char*)&blob [info->gc_name_index];
+		const char *current_gc_name = mono_gc_get_gc_name ();
+
+		if (strcmp (current_gc_name, gc_name) != 0) {
+			msg = g_strdup_printf ("compiled against GC %s, while the current runtime uses GC %s.\n", gc_name, current_gc_name);
+			usable = FALSE;
 		}
-		return 1;
-	} else {
-		return 0;
 	}
+
+	*out_msg = msg;
+	return usable;
 }
-#endif
 
 static void
 load_aot_module (MonoAssembly *assembly, gpointer user_data)
@@ -958,16 +1034,13 @@ load_aot_module (MonoAssembly *assembly, gpointer user_data)
 	MonoAotModule *amodule;
 	MonoDl *sofile;
 	gboolean usable = TRUE;
-	char *saved_guid = NULL;
-	char *aot_version = NULL;
-	char *runtime_version, *build_info;
-	char *opt_flags = NULL;
-	gpointer *globals;
-	gboolean full_aot = FALSE;
-	MonoAotFileInfo *file_info = NULL;
-	int i;
-	gpointer *got_addr;
+	char *version_symbol = NULL;
+	char *msg = NULL;
+	gpointer *globals = NULL;
+	MonoAotFileInfo *info = NULL;
+	int i, version;
 	guint8 *blob;
+	gboolean do_load_image = TRUE;
 
 	if (mono_compile_aot)
 		return;
@@ -987,16 +1060,17 @@ load_aot_module (MonoAssembly *assembly, gpointer user_data)
 
 	mono_aot_lock ();
 	if (static_aot_modules)
-		globals = g_hash_table_lookup (static_aot_modules, assembly->aname.name);
+		info = g_hash_table_lookup (static_aot_modules, assembly->aname.name);
 	else
-		globals = NULL;
+		info = NULL;
 	mono_aot_unlock ();
 
-	if (globals) {
+	if (info) {
 		/* Statically linked AOT module */
 		sofile = NULL;
 		aot_name = g_strdup_printf ("%s", assembly->aname.name);
 		mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_AOT, "Found statically linked AOT module '%s'.\n", aot_name);
+		globals = info->globals;
 	} else {
 		if (use_aot_cache)
 			sofile = load_aot_module_from_cache (assembly, &aot_name);
@@ -1022,70 +1096,34 @@ load_aot_module (MonoAssembly *assembly, gpointer user_data)
 		return;
 	}
 
-	find_symbol (sofile, globals, "mono_assembly_guid", (gpointer *) &saved_guid);
-	find_symbol (sofile, globals, "mono_aot_version", (gpointer *) &aot_version);
-	find_symbol (sofile, globals, "mono_aot_opt_flags", (gpointer *)&opt_flags);
-	find_symbol (sofile, globals, "mono_runtime_version", (gpointer *)&runtime_version);
-	find_symbol (sofile, globals, "mono_aot_got_addr", (gpointer *)&got_addr);
-
-	if (!aot_version || strcmp (aot_version, MONO_AOT_FILE_VERSION)) {
-		mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_AOT, "AOT module %s has wrong file format version (expected %s got %s)\n", aot_name, MONO_AOT_FILE_VERSION, aot_version);
-		usable = FALSE;
-	}
-	else {
-		if (!saved_guid || strcmp (assembly->image->guid, saved_guid)) {
-			mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_AOT, "AOT module %s is out of date.\n", aot_name);
-			usable = FALSE;
-		}
-	}
-
-	build_info = mono_get_runtime_build_info ();
-	if (!runtime_version || ((strlen (runtime_version) > 0 && strcmp (runtime_version, build_info)))) {
-		mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_AOT, "AOT module %s is compiled against runtime version '%s' while this runtime has version '%s'.\n", aot_name, runtime_version, build_info);
-		usable = FALSE;
+	if (!info) {
+		find_symbol (sofile, globals, "mono_aot_version", (gpointer *) &version_symbol);
+		find_symbol (sofile, globals, "mono_aot_file_info", (gpointer*)&info);
 	}
-	g_free (build_info);
-
-	find_symbol (sofile, globals, "mono_aot_file_info", (gpointer*)&file_info);
-	g_assert (file_info);
-
-	full_aot = ((MonoAotFileInfo*)file_info)->flags & MONO_AOT_FILE_FLAG_FULL_AOT;
 
-	if (mono_aot_only && !full_aot) {
-		fprintf (stderr, "Can't use AOT image '%s' in aot-only mode because it is not compiled with --aot=full.\n", aot_name);
-		exit (1);
-	}
-	if (!mono_aot_only && full_aot) {
-		mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_AOT, "AOT module %s is compiled with --aot=full.\n", aot_name);
-		usable = FALSE;
+	if (version_symbol) {
+		/* Old file format */
+		version = atoi (version_symbol);
+	} else {
+		g_assert (info);
+		version = info->version;
 	}
 
-	/* This is no longer needed, LLVM and non-LLVM runtimes should be compatible.
-	if ((((MonoAotFileInfo*)file_info)->flags & MONO_AOT_FILE_FLAG_WITH_LLVM) && !mono_use_llvm) {
-		mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_AOT, "AOT module %s is compiled with LLVM.\n", aot_name);
+	if (version != MONO_AOT_FILE_VERSION) {
+		msg = g_strdup_printf ("wrong file format version (expected %d got %d)", MONO_AOT_FILE_VERSION, version);
 		usable = FALSE;
-	}
-	*/
-
-	find_symbol (sofile, globals, "blob", (gpointer*)&blob);
-
-	if (usable && ((MonoAotFileInfo*)file_info)->gc_name_index != -1) {
-		char *gc_name = (char*)&blob [((MonoAotFileInfo*)file_info)->gc_name_index];
-		const char *current_gc_name = mono_gc_get_gc_name ();
-
-		if (strcmp (current_gc_name, gc_name) != 0) {
-			mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_AOT, "AOT module %s is compiled against GC %s, while the current runtime uses GC %s.\n", aot_name, gc_name, current_gc_name);
-			usable = FALSE;
-		}
+	} else {
+		usable = check_usable (assembly, info, &msg);
 	}
 
 	if (!usable) {
 		if (mono_aot_only) {
-			fprintf (stderr, "Failed to load AOT module '%s' while running in aot-only mode.\n", aot_name);
+			fprintf (stderr, "Failed to load AOT module '%s' while running in aot-only mode: %s.\n", aot_name, msg);
 			exit (1);
 		} else {
-			mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_AOT, "AOT module %s is unusable.\n", aot_name);
+			mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_AOT, "AOT module %s is unusable: %s.\n", aot_name, msg);
 		}
+		g_free (msg);
 		g_free (aot_name);
 		if (sofile)
 			mono_dl_close (sofile);
@@ -1093,13 +1131,19 @@ load_aot_module (MonoAssembly *assembly, gpointer user_data)
 		return;
 	}
 
+	/* Sanity check */
+	g_assert (info->double_align == __alignof__ (double));
+	g_assert (info->long_align == __alignof__ (gint64));
+
+	blob = info->blob;
+
 	amodule = g_new0 (MonoAotModule, 1);
 	amodule->aot_name = aot_name;
 	amodule->assembly = assembly;
 
-	memcpy (&amodule->info, file_info, sizeof (*file_info));
+	memcpy (&amodule->info, info, sizeof (*info));
 
-	amodule->got = *got_addr;
+	amodule->got = amodule->info.got;
 	amodule->got [0] = assembly->image;
 	amodule->globals = globals;
 	amodule->sofile = sofile;
@@ -1111,7 +1155,7 @@ load_aot_module (MonoAssembly *assembly, gpointer user_data)
 		guint32 table_len, i;
 		char *table = NULL;
 
-		find_symbol (sofile, globals, "mono_image_table", (gpointer *)&table);
+		table = info->image_table;
 		g_assert (table);
 
 		table_len = *(guint32*)table;
@@ -1147,27 +1191,30 @@ load_aot_module (MonoAssembly *assembly, gpointer user_data)
 		}
 	}
 
-	/* Read method and method_info tables */
-	find_symbol (sofile, globals, "code_offsets", (gpointer*)&amodule->code_offsets);
-	find_symbol (sofile, globals, "methods", (gpointer*)&amodule->code);
-	find_symbol (sofile, globals, "methods_end", (gpointer*)&amodule->code_end);
-	find_symbol (sofile, globals, "method_info_offsets", (gpointer*)&amodule->method_info_offsets);
-	find_symbol (sofile, globals, "ex_info_offsets", (gpointer*)&amodule->ex_info_offsets);
-	find_symbol (sofile, globals, "class_info_offsets", (gpointer*)&amodule->class_info_offsets);
-	find_symbol (sofile, globals, "class_name_table", (gpointer *)&amodule->class_name_table);
-	find_symbol (sofile, globals, "extra_method_table", (gpointer *)&amodule->extra_method_table);
-	find_symbol (sofile, globals, "extra_method_info_offsets", (gpointer *)&amodule->extra_method_info_offsets);
-	find_symbol (sofile, globals, "got_info_offsets", (gpointer*)&amodule->got_info_offsets);
-	find_symbol (sofile, globals, "specific_trampolines", (gpointer*)&(amodule->trampolines [MONO_AOT_TRAMP_SPECIFIC]));
-	find_symbol (sofile, globals, "static_rgctx_trampolines", (gpointer*)&(amodule->trampolines [MONO_AOT_TRAMP_STATIC_RGCTX]));
-	find_symbol (sofile, globals, "imt_thunks", (gpointer*)&(amodule->trampolines [MONO_AOT_TRAMP_IMT_THUNK]));
-	find_symbol (sofile, globals, "unwind_info", (gpointer)&amodule->unwind_info);
-	find_symbol (sofile, globals, "mem_end", (gpointer*)&amodule->mem_end);
-
+	amodule->code_offsets = info->code_offsets;
+	amodule->code = info->methods;
+#ifdef TARGET_ARM
+	/* Mask out thumb interop bit */
+	amodule->code = (void*)((mgreg_t)amodule->code & ~1);
+#endif
+	amodule->code_end = info->methods_end;
+	amodule->method_info_offsets = info->method_info_offsets;
+	amodule->ex_info_offsets = info->ex_info_offsets;
+	amodule->class_info_offsets = info->class_info_offsets;
+	amodule->class_name_table = info->class_name_table;
+	amodule->extra_method_table = info->extra_method_table;
+	amodule->extra_method_info_offsets = info->extra_method_info_offsets;
+	amodule->got_info_offsets = info->got_info_offsets;
+	amodule->unwind_info = info->unwind_info;
+	amodule->mem_end = info->mem_end;
 	amodule->mem_begin = amodule->code;
-
-	find_symbol (sofile, globals, "plt", (gpointer*)&amodule->plt);
-	find_symbol (sofile, globals, "plt_end", (gpointer*)&amodule->plt_end);
+	amodule->plt = info->plt;
+	amodule->plt_end = info->plt_end;
+	amodule->mono_eh_frame = info->mono_eh_frame;
+	amodule->trampolines [MONO_AOT_TRAMP_SPECIFIC] = info->specific_trampolines;
+	amodule->trampolines [MONO_AOT_TRAMP_STATIC_RGCTX] = info->static_rgctx_trampolines;
+	amodule->trampolines [MONO_AOT_TRAMP_IMT_THUNK] = info->imt_thunks;
+	amodule->thumb_end = info->thumb_end;
 
 	if (make_unreadable) {
 #ifndef TARGET_WIN32
@@ -1199,11 +1246,6 @@ load_aot_module (MonoAssembly *assembly, gpointer user_data)
 	mono_jit_info_add_aot_module (assembly->image, amodule->code, amodule->code_end);
 
 	assembly->image->aot_module = amodule;
- 
-#if defined(HAVE_DL_ITERATE_PHDR) && defined(PT_GNU_EH_FRAME)
-	/* Lookup the address of the .eh_frame_hdr () section if available */
-	dl_iterate_phdr (dl_callback, amodule);
-#endif	
 
 	if (mono_aot_only) {
 		if (mono_defaults.corlib) {
@@ -1216,8 +1258,7 @@ load_aot_module (MonoAssembly *assembly, gpointer user_data)
 		}
 	}
 
-#ifdef HAVE_SGEN_GC
-	{
+	if (mono_gc_is_moving ()) {
 		MonoJumpInfo ji;
 
 		memset (&ji, 0, sizeof (ji));
@@ -1225,7 +1266,6 @@ load_aot_module (MonoAssembly *assembly, gpointer user_data)
 
 		amodule->got [2] = mono_resolve_patch_target (NULL, mono_get_root_domain (), NULL, &ji, FALSE);
 	}
-#endif
 
 	/*
 	 * Since we store methoddef and classdef tokens when referring to methods/classes in
@@ -1234,8 +1274,20 @@ load_aot_module (MonoAssembly *assembly, gpointer user_data)
 	 * non-lazily, since we can't handle out-of-date errors later.
 	 * The cached class info also depends on the exact assemblies.
 	 */
-	for (i = 0; i < amodule->image_table_len; ++i)
-		load_image (amodule, i, FALSE);
+#if defined(__native_client__)
+	/* TODO: Don't 'load_image' on mscorlib due to a */
+	/* recursive loading problem.  This should be    */
+	/* removed if mscorlib is loaded from disk.      */
+	if (strncmp(assembly->aname.name, "mscorlib", 8)) {
+		do_load_image = TRUE;
+	} else {
+		do_load_image = FALSE;
+	}
+#endif
+	if (do_load_image) {
+		for (i = 0; i < amodule->image_table_len; ++i)
+			load_image (amodule, i, FALSE);
+	}
 
 	if (amodule->out_of_date) {
 		mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_AOT, "AOT Module %s is unusable because a dependency is out-of-date.\n", assembly->image->name);
@@ -1272,13 +1324,14 @@ mono_aot_register_module (gpointer *aot_info)
 {
 	gpointer *globals;
 	char *aname;
+	MonoAotFileInfo *info = (gpointer)aot_info;
 
-	globals = aot_info;
+	g_assert (info->version == MONO_AOT_FILE_VERSION);
+
+	globals = info->globals;
 	g_assert (globals);
 
-	/* Determine the assembly name */
-	find_symbol (NULL, globals, "mono_aot_assembly_name", (gpointer*)&aname);
-	g_assert (aname);
+	aname = info->assembly_name;
 
 	/* This could be called before startup */
 	if (aot_modules)
@@ -1287,7 +1340,7 @@ mono_aot_register_module (gpointer *aot_info)
 	if (!static_aot_modules)
 		static_aot_modules = g_hash_table_new (g_str_hash, g_str_equal);
 
-	g_hash_table_insert (static_aot_modules, aname, globals);
+	g_hash_table_insert (static_aot_modules, aname, info);
 
 	if (aot_modules)
 		mono_aot_unlock ();
@@ -1320,6 +1373,8 @@ static gboolean
 decode_cached_class_info (MonoAotModule *module, MonoCachedClassInfo *info, guint8 *buf, guint8 **endbuf)
 {
 	guint32 flags;
+	MethodRef ref;
+	gboolean res;
 
 	info->vtable_size = decode_value (buf, &buf);
 	if (info->vtable_size == -1)
@@ -1337,14 +1392,17 @@ decode_cached_class_info (MonoAotModule *module, MonoCachedClassInfo *info, guin
 	info->is_generic_container = (flags >> 8) & 0x1;
 
 	if (info->has_cctor) {
-		MonoImage *cctor_image = decode_method_ref (module, &info->cctor_token, NULL, NULL, buf, &buf);
-		if (!cctor_image)
+		res = decode_method_ref (module, &ref, buf, &buf);
+		if (!res)
 			return FALSE;
+		info->cctor_token = ref.token;
 	}
 	if (info->has_finalize) {
-		info->finalize_image = decode_method_ref (module, &info->finalize_token, NULL, NULL, buf, &buf);
-		if (!info->finalize_image)
+		res = decode_method_ref (module, &ref, buf, &buf);
+		if (!res)
 			return FALSE;
+		info->finalize_image = ref.image;
+		info->finalize_token = ref.token;
 	}
 
 	info->instance_size = decode_value (buf, &buf);
@@ -1366,9 +1424,8 @@ mono_aot_get_method_from_vt_slot (MonoDomain *domain, MonoVTable *vtable, int sl
 	guint8 *info, *p;
 	MonoCachedClassInfo class_info;
 	gboolean err;
-	guint32 token;
-	MonoImage *image;
-	gboolean no_aot_trampoline;
+	MethodRef ref;
+	gboolean res;
 
 	if (MONO_CLASS_IS_INTERFACE (klass) || klass->rank || !amodule)
 		return NULL;
@@ -1381,18 +1438,18 @@ mono_aot_get_method_from_vt_slot (MonoDomain *domain, MonoVTable *vtable, int sl
 		return NULL;
 
 	for (i = 0; i < slot; ++i)
-		decode_method_ref (amodule, &token, NULL, NULL, p, &p);
+		decode_method_ref (amodule, &ref, p, &p);
 
-	image = decode_method_ref (amodule, &token, NULL, &no_aot_trampoline, p, &p);
-	if (!image)
+	res = decode_method_ref (amodule, &ref, p, &p);
+	if (!res)
 		return NULL;
-	if (no_aot_trampoline)
+	if (ref.no_aot_trampoline)
 		return NULL;
 
-	if (mono_metadata_token_index (token) == 0)
+	if (mono_metadata_token_index (ref.token) == 0)
 		return NULL;
 
-	return mono_aot_get_method_from_token (domain, image, token);
+	return mono_aot_get_method_from_token (domain, ref.image, ref.token);
 }
 
 gboolean
@@ -1522,75 +1579,52 @@ mono_aot_get_class_from_name (MonoImage *image, const char *name_space, const ch
 	return TRUE;
 }
 
-#define DW_EH_PE_omit	0xff
-#define DW_EH_PE_uleb128 0x01
-#define DW_EH_PE_udata2	0x02
-#define DW_EH_PE_udata4	0x03
-#define DW_EH_PE_udata8	0x04
-#define DW_EH_PE_sleb128 0x09
-#define DW_EH_PE_sdata2	0x0A
-#define DW_EH_PE_sdata4	0x0B
-#define DW_EH_PE_sdata8	0x0C
-
-#define DW_EH_PE_absptr	0x00
-#define DW_EH_PE_pcrel	0x10
-#define DW_EH_PE_datarel 0x30
-#define DW_EH_PE_omit	0xff
-
-typedef struct
-{
-	guint8 version;
-	guint8 eh_frame_ptr_enc;
-	guint8 fde_count_enc;
-	guint8 table_enc;
-	guint8 rest;
-} eh_frame_hdr;
-
 /*
- * decode_eh_frame:
+ * decode_mono_eh_frame:
  *
- *   Decode the exception handling information in the .eh_frame section of the AOT
- * file belong to CODE, and construct a MonoJitInfo structure from it.
+ *   Decode the EH information emitted by our modified LLVM compiler and construct a
+ * MonoJitInfo structure from it.
  * LOCKING: Acquires the domain lock.
  */
-static G_GNUC_UNUSED MonoJitInfo*
-decode_eh_frame (MonoAotModule *amodule, MonoDomain *domain, 
-				 MonoMethod *method, guint8 *code, 
-				 MonoJitExceptionInfo *clauses, int num_clauses,
-				 int extra_size, GSList **nesting,
-				 int *this_reg, int *this_offset)
-{
-	eh_frame_hdr *hdr;
+static MonoJitInfo*
+decode_llvm_mono_eh_frame (MonoAotModule *amodule, MonoDomain *domain, 
+						   MonoMethod *method, guint8 *code, 
+						   MonoJitExceptionInfo *clauses, int num_clauses,
+						   int extra_size, GSList **nesting,
+						   int *this_reg, int *this_offset)
+{
 	guint8 *p;
-	guint8 *eh_frame, *unwind_info;
-	guint32 eh_frame_ptr;
-	int fde_count;
+	guint8 *fde, *cie, *code_start, *code_end;
+	int version, fde_count;
 	gint32 *table;
-	int i, j, pos, left, right, offset, offset1, offset2;
-	guint32 unw_len, code_len;
+	int i, j, pos, left, right, offset, offset1, offset2, code_len;
 	MonoJitExceptionInfo *ei;
-	guint32 ei_len, nested_len, nindex;
+	guint32 fde_len, ei_len, nested_len, nindex;
 	gpointer *type_info;
 	MonoJitInfo *jinfo;
+	MonoLLVMFDEInfo info;
 
-	g_assert (amodule->eh_frame_hdr);
+	g_assert (amodule->mono_eh_frame);
 
-	// http://refspecs.freestandards.org/LSB_1.3.0/gLSB/gLSB/ehframehdr.html
-	hdr = (eh_frame_hdr*)amodule->eh_frame_hdr;
-	g_assert (hdr->version == 1);
-	g_assert (hdr->eh_frame_ptr_enc == (DW_EH_PE_pcrel | DW_EH_PE_sdata4));
-	g_assert (hdr->fde_count_enc == DW_EH_PE_udata4);
-	g_assert (hdr->table_enc == (DW_EH_PE_datarel | DW_EH_PE_sdata4));
+	p = amodule->mono_eh_frame;
+
+	/* p points to data emitted by LLVM in DwarfException::EmitMonoEHFrame () */
+
+	/* Header */
+	version = *p;
+	g_assert (version == 1);
+	p ++;
+	p = ALIGN_PTR_TO (p, 4);
 
-	p = &(hdr->rest);
-	eh_frame_ptr = *(guint32*)p;
-	p += 4;
 	fde_count = *(guint32*)p;
 	p += 4;
 	table = (gint32*)p;
 
+	/* There is +1 entry in the table */
+	cie = p + ((fde_count + 1) * 8);
+
 	/* Binary search in the table to find the entry for code */
-	offset = code - amodule->eh_frame_hdr;
+	offset = code - amodule->mono_eh_frame;
 
 	left = 0;
 	right = fde_count;
@@ -1612,25 +1646,36 @@ decode_eh_frame (MonoAotModule *amodule, MonoDomain *domain,
 			break;
 	}
 
-	g_assert (code >= amodule->eh_frame_hdr + table [(pos * 2)]);
-	if (pos + 1 < fde_count)
-		g_assert (code < amodule->eh_frame_hdr + table [(pos * 2) + 2]);
+	code_start = amodule->mono_eh_frame + table [(pos * 2)];
+	/* This won't overflow because there is +1 entry in the table */
+	code_end = amodule->mono_eh_frame + table [(pos * 2) + 2];
+	code_len = code_end - code_start;
+
+	g_assert (code >= code_start && code < code_end);
 
-	eh_frame = amodule->eh_frame_hdr + table [(pos * 2) + 1];
+	fde = amodule->mono_eh_frame + table [(pos * 2) + 1];	
+	/* This won't overflow because there is +1 entry in the table */
+	fde_len = table [(pos * 2) + 2 + 1] - table [(pos * 2) + 1];
 
-	unwind_info = mono_unwind_decode_fde (eh_frame, &unw_len, &code_len, &ei, &ei_len, &type_info, this_reg, this_offset);
+	mono_unwind_decode_llvm_mono_fde (fde, fde_len, cie, code_start, &info);
+	ei = info.ex_info;
+	ei_len = info.ex_info_len;
+	type_info = info.type_info;
+	*this_reg = info.this_reg;
+	*this_offset = info.this_offset;
 
 	/* Count number of nested clauses */
 	nested_len = 0;
 	for (i = 0; i < ei_len; ++i) {
-		gint32 cindex1 = *(gint32*)type_info [i];
+		/* This might be unaligned */
+		gint32 cindex1 = read32 (type_info [i]);
 		GSList *l;
 
 		for (l = nesting [cindex1]; l; l = l->next) {
 			gint32 nesting_cindex = GPOINTER_TO_INT (l->data);
 
 			for (j = 0; j < ei_len; ++j) {
-				gint32 cindex2 = *(gint32*)type_info [j];
+				gint32 cindex2 = read32 (type_info [j]);
 
 				if (cindex2 == nesting_cindex)
 					nested_len ++;
@@ -1646,7 +1691,7 @@ decode_eh_frame (MonoAotModule *amodule, MonoDomain *domain,
 		mono_domain_alloc0 (domain, MONO_SIZEOF_JIT_INFO + (sizeof (MonoJitExceptionInfo) * (ei_len + nested_len)) + extra_size);
 
 	jinfo->code_size = code_len;
-	jinfo->used_regs = mono_cache_unwind_info (unwind_info, unw_len);
+	jinfo->used_regs = mono_cache_unwind_info (info.unw_info, info.unw_info_len);
 	jinfo->method = method;
 	jinfo->code_start = code;
 	jinfo->domain_neutral = 0;
@@ -1660,7 +1705,7 @@ decode_eh_frame (MonoAotModule *amodule, MonoDomain *domain,
 		 * compiler, we have to combine that with the information produced by LLVM
 		 */
 		/* The type_info entries contain IL clause indexes */
-		int clause_index = *(gint32*)type_info [i];
+		int clause_index = read32 (type_info [i]);
 		MonoJitExceptionInfo *jei = &jinfo->clauses [i];
 		MonoJitExceptionInfo *orig_jei = &clauses [clause_index];
 
@@ -1671,19 +1716,23 @@ decode_eh_frame (MonoAotModule *amodule, MonoDomain *domain,
 		jei->try_start = ei [i].try_start;
 		jei->try_end = ei [i].try_end;
 		jei->handler_start = ei [i].handler_start;
+
+		/* Make sure we transition to thumb when a handler starts */
+		if (amodule->thumb_end && (guint8*)jei->handler_start < amodule->thumb_end)
+			jei->handler_start = (void*)((mgreg_t)jei->handler_start + 1);
 	}
 
 	/* See exception_cb () in mini-llvm.c as to why this is needed */
 	nindex = ei_len;
 	for (i = 0; i < ei_len; ++i) {
-		gint32 cindex1 = *(gint32*)type_info [i];
+		gint32 cindex1 = read32 (type_info [i]);
 		GSList *l;
 
 		for (l = nesting [cindex1]; l; l = l->next) {
 			gint32 nesting_cindex = GPOINTER_TO_INT (l->data);
 
 			for (j = 0; j < ei_len; ++j) {
-				gint32 cindex2 = *(gint32*)type_info [j];
+				gint32 cindex2 = read32 (type_info [j]);
 
 				if (cindex2 == nesting_cindex) {
 					/* 
@@ -1715,9 +1764,9 @@ decode_exception_debug_info (MonoAotModule *amodule, MonoDomain *domain,
 	MonoJitInfo *jinfo;
 	guint used_int_regs, flags;
 	gboolean has_generic_jit_info, has_dwarf_unwind_info, has_clauses, has_seq_points, has_try_block_holes;
-	gboolean from_llvm;
+	gboolean from_llvm, has_gc_map;
 	guint8 *p;
-	int generic_info_size, try_holes_info_size, num_holes, this_reg, this_offset;
+	int generic_info_size, try_holes_info_size, num_holes, this_reg = 0, this_offset = 0;
 
 	/* Load the method info from the AOT file */
 
@@ -1729,6 +1778,7 @@ decode_exception_debug_info (MonoAotModule *amodule, MonoDomain *domain,
 	has_seq_points = (flags & 8) != 0;
 	from_llvm = (flags & 16) != 0;
 	has_try_block_holes = (flags & 32) != 0;
+	has_gc_map = (flags & 64) != 0;
 
 	if (has_dwarf_unwind_info) {
 		guint32 offset;
@@ -1784,7 +1834,7 @@ decode_exception_debug_info (MonoAotModule *amodule, MonoDomain *domain,
 			}
 		}
 
- 		jinfo = decode_eh_frame (amodule, domain, method, code, clauses, num_clauses, generic_info_size + try_holes_info_size, nesting, &this_reg, &this_offset);
+ 		jinfo = decode_llvm_mono_eh_frame (amodule, domain, method, code, clauses, num_clauses, generic_info_size + try_holes_info_size, nesting, &this_reg, &this_offset);
 		jinfo->from_llvm = 1;
 
 		g_free (clauses);
@@ -1898,6 +1948,16 @@ decode_exception_debug_info (MonoAotModule *amodule, MonoDomain *domain,
 	/* Load debug info */
 	buf_len = decode_value (p, &p);
 	mono_debug_add_aot_method (domain, method, code, p, buf_len);
+	p += buf_len;
+
+	if (has_gc_map) {
+		int map_size = decode_value (p, &p);
+		/* The GC map requires 4 bytes of alignment */
+		while ((guint64)(gsize)p % 4)
+			p ++;		
+		jinfo->gc_info = p;
+		p += map_size;
+	}
 
 	if (amodule != jinfo->method->klass->image->aot_module) {
 		mono_aot_lock ();
@@ -1906,7 +1966,7 @@ decode_exception_debug_info (MonoAotModule *amodule, MonoDomain *domain,
 		g_hash_table_insert (ji_to_amodule, jinfo, amodule);
 		mono_aot_unlock ();		
 	}
-	
+
 	return jinfo;
 }
 
@@ -2026,7 +2086,6 @@ mono_aot_find_jit_info (MonoDomain *domain, MonoImage *image, gpointer addr)
 
 	/* Compute a sorted table mapping code offsets to method indexes. */
 	if (!amodule->sorted_code_offsets) {
-
 		code_offsets = g_new0 (gint32, nmethods * 2);
 		offsets_len = 0;
 		for (i = 0; i < nmethods; ++i) {
@@ -2162,23 +2221,22 @@ decode_patch (MonoAotModule *aot_module, MonoMemPool *mp, MonoJumpInfo *ji, guin
 	case MONO_PATCH_INFO_METHOD_JUMP:
 	case MONO_PATCH_INFO_ICALL_ADDR:
 	case MONO_PATCH_INFO_METHOD_RGCTX: {
-		guint32 token;
-		MonoMethod *method;
-		gboolean no_aot_trampoline;
+		MethodRef ref;
+		gboolean res;
 
-		image = decode_method_ref (aot_module, &token, &method, &no_aot_trampoline, p, &p);
-		if (!image)
+		res = decode_method_ref (aot_module, &ref, p, &p);
+		if (!res)
 			goto cleanup;
 
-		if (!method && !mono_aot_only && !no_aot_trampoline && (ji->type == MONO_PATCH_INFO_METHOD) && (mono_metadata_token_table (token) == MONO_TABLE_METHOD)) {
-			ji->data.target = mono_create_ftnptr (mono_domain_get (), mono_create_jit_trampoline_from_token (image, token));
+		if (!ref.method && !mono_aot_only && !ref.no_aot_trampoline && (ji->type == MONO_PATCH_INFO_METHOD) && (mono_metadata_token_table (ref.token) == MONO_TABLE_METHOD)) {
+			ji->data.target = mono_create_ftnptr (mono_domain_get (), mono_create_jit_trampoline_from_token (ref.image, ref.token));
 			ji->type = MONO_PATCH_INFO_ABS;
 		}
 		else {
-			if (method)
-				ji->data.method = method;
+			if (ref.method)
+				ji->data.method = ref.method;
 			else
-				ji->data.method = mono_get_method (image, token, NULL);
+				ji->data.method = mono_get_method (ref.image, ref.token, NULL);
 			g_assert (ji->data.method);
 			mono_class_init (ji->data.method->klass);
 		}
@@ -2448,6 +2506,12 @@ load_method (MonoDomain *domain, MonoAotModule *amodule, MonoImage *image, MonoM
 
 	info = &amodule->blob [mono_aot_get_offset (amodule->method_info_offsets, method_index)];
 
+	if (amodule->thumb_end && code < amodule->thumb_end) {
+		/* Convert this into a thumb address */
+		g_assert ((amodule->code_offsets [method_index] & 0x1) == 0);
+		code = &amodule->code [amodule->code_offsets [method_index] + 1];
+	}
+
 	mono_aot_lock ();
 	if (!amodule->methods_loaded)
 		amodule->methods_loaded = g_new0 (guint32, amodule->info.nmethods + 1);
@@ -2541,7 +2605,7 @@ load_method (MonoDomain *domain, MonoAotModule *amodule, MonoImage *image, MonoM
 		if (!jinfo)
 			jinfo = mono_aot_find_jit_info (domain, amodule->assembly->image, code);
 
-		mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_AOT, "AOT FOUND AOT compiled code for %s %p - %p %p\n", full_name, code, code + jinfo->code_size, info);
+		mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_AOT, "AOT FOUND method %s [%p - %p %p]\n", full_name, code, code + jinfo->code_size, info);
 		g_free (full_name);
 	}
 
@@ -2627,15 +2691,16 @@ find_extra_method_in_amodule (MonoAotModule *amodule, MonoMethod *method, const
 				index = value;
 				break;
 			}
-		} else if (can_method_ref_match_method (amodule, p, method)) {
+		} else {
+			guint8 *orig_p = p;
+
 			mono_aot_lock ();
 			if (!amodule->method_ref_to_method)
 				amodule->method_ref_to_method = g_hash_table_new (NULL, NULL);
 			m = g_hash_table_lookup (amodule->method_ref_to_method, p);
 			mono_aot_unlock ();
 			if (!m) {
-				guint8 *orig_p = p;
-				m = decode_resolve_method_ref (amodule, p, &p);
+				m = decode_resolve_method_ref_with_target (amodule, method, p, &p);
 				if (m) {
 					mono_aot_lock ();
 					g_hash_table_insert (amodule->method_ref_to_method, orig_p, m);
@@ -2660,11 +2725,10 @@ find_extra_method_in_amodule (MonoAotModule *amodule, MonoMethod *method, const
 			}
 
 			/* Methods decoded needlessly */
-			/*
-			if (m)
-				printf ("%d %s %s\n", n_extra_decodes, mono_method_full_name (method, TRUE), mono_method_full_name (m, TRUE));
-			*/
-			n_extra_decodes ++;
+			if (m) {
+				//printf ("%d %s %s %p\n", n_extra_decodes, mono_method_full_name (method, TRUE), mono_method_full_name (m, TRUE), orig_p);
+				n_extra_decodes ++;
+			}
 		}
 
 		if (next != 0)
@@ -2845,6 +2909,38 @@ mono_aot_get_method (MonoDomain *domain, MonoMethod *method)
 				return code;
 		}
 
+		/* Same for CompareExchange<T> */
+		if (method_index == 0xffffff && method->wrapper_type == MONO_WRAPPER_MANAGED_TO_NATIVE && method->klass->image == mono_defaults.corlib && !strcmp (method->klass->name_space, "System.Threading") && !strcmp (method->klass->name, "Interlocked") && !strcmp (method->name, "CompareExchange")) {
+			MonoMethod *m;
+			MonoGenericContext ctx;
+			MonoType *args [16];
+			gpointer iter = NULL;
+
+			while ((m = mono_class_get_methods (method->klass, &iter))) {
+				if (mono_method_signature (m)->generic_param_count && !strcmp (m->name, "CompareExchange"))
+					break;
+			}
+			g_assert (m);
+
+			memset (&ctx, 0, sizeof (ctx));
+			args [0] = &mono_defaults.object_class->byval_arg;
+			ctx.method_inst = mono_metadata_get_generic_inst (1, args);
+
+			m = mono_marshal_get_native_wrapper (mono_class_inflate_generic_method (m, &ctx), TRUE, TRUE);
+
+			/* Avoid recursion */
+			if (method == m)
+				return NULL;
+
+			/* 
+			 * Get the code for the <object> instantiation which should be emitted into
+			 * the mscorlib aot image by the AOT compiler.
+			 */
+			code = mono_aot_get_method (domain, m);
+			if (code)
+				return code;
+		}
+
 		if (method_index == 0xffffff && method->is_inflated && mono_method_is_generic_sharable_impl_full (method, FALSE, TRUE)) {
 			/* Partial sharing */
 			method_index = find_extra_method (mini_get_shared_method (method), &amodule);
@@ -3096,23 +3192,28 @@ init_plt (MonoAotModule *amodule)
 guint8*
 mono_aot_get_plt_entry (guint8 *code)
 {
-	MonoAotModule *aot_module = find_aot_module (code);
+	MonoAotModule *amodule = find_aot_module (code);
+	guint8 *target = NULL;
 
-	if (!aot_module)
+	if (!amodule)
 		return NULL;
 
-#ifdef MONO_ARCH_AOT_SUPPORTED
-	{
-		guint8 *target = mono_arch_get_call_target (code);
-
-		if ((target >= (guint8*)(aot_module->plt)) && (target < (guint8*)(aot_module->plt_end)))
-			return target;
+#ifdef TARGET_ARM
+	if (amodule->thumb_end && code < amodule->thumb_end) {
+		return mono_arm_get_thumb_plt_entry (code);
 	}
+#endif
+
+#ifdef MONO_ARCH_AOT_SUPPORTED
+	target = mono_arch_get_call_target (code);
 #else
 	g_assert_not_reached ();
 #endif
 
-	return NULL;
+	if ((target >= (guint8*)(amodule->plt)) && (target < (guint8*)(amodule->plt_end)))
+		return target;
+	else
+		return NULL;
 }
 
 /*
diff --git a/mono/mini/arrays.cs b/mono/mini/arrays.cs
index 65606e0..b1f9117 100644
--- a/mono/mini/arrays.cs
+++ b/mono/mini/arrays.cs
@@ -434,6 +434,14 @@ class Tests {
 		if (sum != 1800)
 			return 12;
 
+		/* Null check */
+		object[,] a13 = null;
+		try {
+			a13 [0, 0] = new Object ();
+			return 13;
+		} catch (NullReferenceException) {
+		}
+
 		return 0;
 	}
 
diff --git a/mono/mini/basic-simd.cs b/mono/mini/basic-simd.cs
index 9784983..cc8150a 100644
--- a/mono/mini/basic-simd.cs
+++ b/mono/mini/basic-simd.cs
@@ -3136,6 +3136,156 @@ public class SimdTests {
 		return 0;
 	}
 
+	static void CallMethodThatClobbersRegs () {
+		Vector4f a = new Vector4f (9,9,9,9);
+		Vector4f b = new Vector4f (9,9,9,9);
+		a = a + b;
+	}
+
+	public static int test_0_call_spills_regs_correctly () {
+		Vector4f a = new Vector4f (1,2,3,4);
+		Vector4f b = new Vector4f (5,6,7,8);
+
+		CallMethodThatClobbersRegs ();
+
+		bool b0 = a.X == 1f;
+		bool b1 = b.X == 5f;
+		if (!b0 || !b1)
+			return 1;
+		return 0;
+	}
+
+	public static int test_0_shuffle_with_two_args_pd () {
+		Vector2d a = new Vector2d (1,2);
+		Vector2d b = new Vector2d (5,6);
+
+		Vector2d c = a.Shuffle (b, 0x2);
+		if (c.X != 1)
+			return 1;
+		if (c.Y != 6)
+			return 2;
+		return 0;
+	}
+
+	public static int test_0_shuffle_with_two_args_ps () {
+		Vector4f a = new Vector4f (1, 2, 3, 4);
+		Vector4f b = new Vector4f (5, 6, 7, 8);
+
+		Vector4f c = a.Shuffle (b, ShuffleSel.ExpandY);
+		if (c.X != 2)
+			return 1;
+		if (c.Y != 2)
+			return 2;
+		if (c.Z != 6)
+			return 3;
+		if (c.W != 6)
+			return 4;
+		return 0;
+	}
+
+	public static int test_0_i_to_d () {
+		var a = new Vector4i (1, 2, 3, 4);
+		var b = a.ConvertToDouble ();
+		if (b.X != 1)
+			return 1;
+		if (b.Y != 2)
+			return 2;
+		return 0;
+	}
+
+	public static int test_0_i_to_f () {
+		var a = new Vector4i (1, 2, 3, 4);
+		var b = a.ConvertToFloat ();
+		if (b.X != 1)
+			return 1;
+		if (b.Y != 2)
+			return 2;
+		if (b.Z != 3)
+			return 3;
+		if (b.W != 4)
+			return 4;
+		return 0;
+	}
+
+	public static int test_0_d_to_i () {
+		var a = new Vector2d (1.4, 2.6);
+		var b = a.ConvertToInt ();
+		if (b.X != 1)
+			return 1;
+		if (b.Y != 3)
+			return 2;
+		if (b.Z != 0)
+			return 3;
+		if (b.W != 0)
+			return 4;
+		return 0;
+	}
+
+	public static int test_0_d_to_f () {
+		var a = new Vector2d (1, 2);
+		var b = a.ConvertToFloat ();
+		if (b.X != 1)
+			return 1;
+		if (b.Y != 2)
+			return 2;
+		if (b.Z != 0)
+			return 3;
+		if (b.W != 0)
+			return 4;
+		return 0;
+	}
+
+	public static int test_0_f_to_i () {
+		var a = new Vector4f (1.1f, 2.2f, 3.5f, 4.6f);
+		var b = a.ConvertToInt ();
+		if (b.X != 1)
+			return 1;
+		if (b.Y != 2)
+			return 2;
+		if (b.Z != 4)
+			return 3;
+		if (b.W != 5)
+			return 4;
+		return 0;
+	}
+
+	public static int test_0_f_to_d () {
+		var a = new Vector4f (1,2,3,4);
+		var b = a.ConvertToDouble ();
+		if (b.X != 1)
+			return 1;
+		if (b.Y != 2)
+			return 2;
+		return 0;
+	}
+
+	public static int test_0_d_to_i_trunc () {
+		var a = new Vector2d (1.4, 2.6);
+		var b = a.ConvertToIntTruncated ();
+		if (b.X != 1)
+			return 1;
+		if (b.Y != 2)
+			return 2;
+		if (b.Z != 0)
+			return 3;
+		if (b.W != 0)
+			return 4;
+		return 0;
+	}
+
+	public static int test_0_f_to_i_trunc () {
+		var a = new Vector4f (1.1f, 2.2f, 3.5f, 4.6f);
+		var b = a.ConvertToIntTruncated ();
+		if (b.X != 1)
+			return 1;
+		if (b.Y != 2)
+			return 2;
+		if (b.Z != 3)
+			return 3;
+		if (b.W != 4)
+			return 4;
+		return 0;
+	}
 	public static int Main (String[] args) {
 		return TestDriver.RunTests (typeof (SimdTests), args);
 	}
diff --git a/mono/mini/branch-opts.c b/mono/mini/branch-opts.c
index b6b22f2..141b90a 100644
--- a/mono/mini/branch-opts.c
+++ b/mono/mini/branch-opts.c
@@ -815,6 +815,15 @@ replace_in_block (MonoBasicBlock *bb, MonoBasicBlock *orig, MonoBasicBlock *repl
 static void
 replace_out_block_in_code (MonoBasicBlock *bb, MonoBasicBlock *orig, MonoBasicBlock *repl) {
 	MonoInst *ins;
+
+#if defined(__native_client_codegen__)
+	/* Need to maintain this flag for the new block because */
+	/* we can't jump indirectly to a non-aligned block.     */
+	if (orig->flags & BB_INDIRECT_JUMP_TARGET)
+	{
+		repl->flags |= BB_INDIRECT_JUMP_TARGET;
+	}
+#endif
 	
 	for (ins = bb->code; ins != NULL; ins = ins->next) {
 		switch (ins->opcode) {
@@ -1280,7 +1289,7 @@ mono_optimize_branches (MonoCompile *cfg)
 					/* the block are in sequence anyway ... */
 
 					/* branches to the following block can be removed */
-					if (bb->last_ins && bb->last_ins->opcode == OP_BR) {
+					if (bb->last_ins && bb->last_ins->opcode == OP_BR && !bbn->out_of_line) {
 						bb->last_ins->opcode = OP_NOP;
 						changed = TRUE;
 						if (cfg->verbose_level > 2)
diff --git a/mono/mini/cpu-amd64.md b/mono/mini/cpu-amd64.md
index 6a027ca..161da6a 100644
--- a/mono/mini/cpu-amd64.md
+++ b/mono/mini/cpu-amd64.md
@@ -53,6 +53,13 @@
 #
 # See the code in mini-x86.c for more details on how the specifiers are used.
 #
+#
+# Native Client Note: NaCl call sequences do not really reach > 32 bytes but 
+# the maximum length can be high, so if we get unlucky and wind up trying to 
+# emit a call sequence such that we are one or two bytes too long, we need to
+# pad out almost an entire 32 bytes.
+#
+
 break: len:2
 jmp: len:120
 tailcall: len:120 clob:c
@@ -60,8 +67,8 @@ br: len:6
 label: len:0
 seq_point: len:25
 
-long_add: dest:i src1:i src2:i len:3 clob:1
-long_sub: dest:i src1:i src2:i len:3 clob:1
+long_add: dest:i src1:i src2:i len:3 clob:1 nacl:6
+long_sub: dest:i src1:i src2:i len:3 clob:1 nacl:6
 long_mul: dest:i src1:i src2:i len:4 clob:1
 long_div: dest:a src1:a src2:i len:16 clob:d
 long_div_un: dest:a src1:a src2:i len:16 clob:d
@@ -96,11 +103,11 @@ long_min_un: dest:i src1:i src2:i len:16 clob:1
 long_max: dest:i src1:i src2:i len:16 clob:1
 long_max_un: dest:i src1:i src2:i len:16 clob:1
 
-throw: src1:i len:18
-rethrow: src1:i len:18
+throw: src1:i len:18 nacl:50
+rethrow: src1:i len:18 nacl:50
 start_handler: len:16
-endfinally: len:9
-endfilter: src1:a len:9
+endfinally: len:9 nacl:22
+endfilter: src1:a len:9 nacl:19
 ckfinite: dest:f src1:f len:43
 ceq: dest:c len:8
 cgt: dest:c len:8
@@ -115,11 +122,11 @@ compare_imm: src1:i len:13
 icompare_imm: src1:i len:8
 fcompare: src1:f src2:f clob:a len:13
 oparglist: src1:b len:11
-checkthis: src1:b len:5
-call: dest:a clob:c len:32
-voidcall: clob:c len:32
-voidcall_reg: src1:i clob:c len:32
-voidcall_membase: src1:b clob:c len:32
+checkthis: src1:b len:5 nacl:8
+call: dest:a clob:c len:32 nacl:64
+voidcall: clob:c len:32 nacl:64
+voidcall_reg: src1:i clob:c len:32 nacl:64
+voidcall_membase: src1:b clob:c len:32 nacl:64
 fcall: dest:f len:64 clob:c
 fcall_reg: dest:f src1:i len:64 clob:c
 fcall_membase: dest:f src1:b len:64 clob:c
@@ -129,39 +136,39 @@ lcall_membase: dest:a src1:b len:64 clob:c
 vcall: len:64 clob:c
 vcall_reg: src1:i len:64 clob:c
 vcall_membase: src1:b len:64 clob:c
-call_reg: dest:a src1:i len:32 clob:c
-call_membase: dest:a src1:b len:32 clob:c
+call_reg: dest:a src1:i len:32 clob:c nacl:64
+call_membase: dest:a src1:b len:32 clob:c nacl:64
 iconst: dest:i len:10
 i8const: dest:i len:10
 r4const: dest:f len:14
 r8const: dest:f len:9
 store_membase_imm: dest:b len:15
-store_membase_reg: dest:b src1:i len:9
-storei8_membase_reg: dest:b src1:i len:9
-storei1_membase_imm: dest:b len:11
-storei1_membase_reg: dest:b src1:c len:9
-storei2_membase_imm: dest:b len:13
-storei2_membase_reg: dest:b src1:i len:9
-storei4_membase_imm: dest:b len:13
-storei4_membase_reg: dest:b src1:i len:9
+store_membase_reg: dest:b src1:i len:9 nacl:11
+storei8_membase_reg: dest:b src1:i len:9 nacl:11
+storei1_membase_imm: dest:b len:11 nacl:15
+storei1_membase_reg: dest:b src1:c len:9 nacl:11
+storei2_membase_imm: dest:b len:13 nacl:15
+storei2_membase_reg: dest:b src1:i len:9 nacl:11
+storei4_membase_imm: dest:b len:13 nacl:15
+storei4_membase_reg: dest:b src1:i len:9 nacl:11
 storei8_membase_imm: dest:b len:18
 storer4_membase_reg: dest:b src1:f len:15
 storer8_membase_reg: dest:b src1:f len:10
-load_membase: dest:i src1:b len:8
-loadi1_membase: dest:c src1:b len:9
-loadu1_membase: dest:c src1:b len:9
-loadi2_membase: dest:i src1:b len:9
-loadu2_membase: dest:i src1:b len:9
-loadi4_membase: dest:i src1:b len:9
-loadu4_membase: dest:i src1:b len:9
-loadi8_membase: dest:i src1:b len:18
+load_membase: dest:i src1:b len:8 nacl:12
+loadi1_membase: dest:c src1:b len:9 nacl:12
+loadu1_membase: dest:c src1:b len:9 nacl:12
+loadi2_membase: dest:i src1:b len:9 nacl:12
+loadu2_membase: dest:i src1:b len:9 nacl:12
+loadi4_membase: dest:i src1:b len:9 nacl:12
+loadu4_membase: dest:i src1:b len:9 nacl:12
+loadi8_membase: dest:i src1:b len:18 nacl:14
 loadr4_membase: dest:f src1:b len:16
 loadr8_membase: dest:f src1:b len:16
 loadu4_mem: dest:i len:10
 amd64_loadi8_memindex: dest:i src1:i src2:i len:10
 move: dest:i src1:i len:3
-add_imm: dest:i src1:i len:8 clob:1
-sub_imm: dest:i src1:i len:8 clob:1
+add_imm: dest:i src1:i len:8 clob:1 nacl:11
+sub_imm: dest:i src1:i len:8 clob:1 nacl:11
 mul_imm: dest:i src1:i len:11
 and_imm: dest:i src1:i len:8 clob:1
 or_imm: dest:i src1:i len:8 clob:1
@@ -246,8 +253,9 @@ float_clt_membase: dest:i src1:f src2:b len:35
 float_clt_un_membase: dest:i src1:f src2:b len:42
 float_conv_to_u: dest:i src1:f len:46
 fmove: dest:f src1:f len:8
-call_handler: len:14 clob:c
+call_handler: len:14 clob:c nacl:52
 aot_const: dest:i len:10
+nacl_gc_safe_point: clob:c
 x86_test_null: src1:i len:5
 x86_compare_membase_reg: src1:b src2:i len:9
 x86_compare_membase_imm: src1:b len:13
@@ -263,7 +271,7 @@ x86_push_imm: len:6
 x86_push_membase: src1:b len:8
 x86_push_obj: src1:b len:40
 x86_lea: dest:i src1:i src2:i len:8
-x86_lea_membase: dest:i src1:i len:11
+x86_lea_membase: dest:i src1:i len:11 nacl:14
 x86_xchg: src1:i src2:i clob:x len:2
 x86_fpop: src1:f len:3
 x86_seteq_membase: src1:b len:9
@@ -298,7 +306,7 @@ subcc: dest:i src1:i src2:i len:3 clob:1
 adc_imm: dest:i src1:i len:8 clob:1
 sbb: dest:i src1:i src2:i len:3 clob:1
 sbb_imm: dest:i src1:i len:8 clob:1
-br_reg: src1:i len:3
+br_reg: src1:i len:3 nacl:8
 sin: dest:f src1:f len:32
 cos: dest:f src1:f len:32
 abs: dest:f src1:f clob:1 len:32
@@ -310,8 +318,8 @@ sext_i2: dest:i src1:i len:4
 sext_i4: dest:i src1:i len:8
 
 # 32 bit opcodes
-int_add: dest:i src1:i src2:i clob:1 len:4
-int_sub: dest:i src1:i src2:i clob:1 len:4
+int_add: dest:i src1:i src2:i clob:1 len:4 nacl:7
+int_sub: dest:i src1:i src2:i clob:1 len:4 nacl:7
 int_mul: dest:i src1:i src2:i clob:1 len:4
 int_mul_ovf: dest:i src1:i src2:i clob:1 len:32
 int_mul_ovf_un: dest:i src1:i src2:i clob:1 len:32
@@ -331,8 +339,8 @@ int_sbb: dest:i src1:i src2:i clob:1 len:4
 int_sbb_imm: dest:i src1:i clob:1 len:8
 int_addcc: dest:i src1:i src2:i clob:1 len:16
 int_subcc: dest:i src1:i src2:i clob:1 len:16
-int_add_imm: dest:i src1:i clob:1 len:8
-int_sub_imm: dest:i src1:i clob:1 len:8
+int_add_imm: dest:i src1:i clob:1 len:8 nacl:10
+int_sub_imm: dest:i src1:i clob:1 len:8 nacl:10
 int_mul_imm: dest:i src1:i clob:1 len:32
 int_div_imm: dest:a src1:i clob:d len:32
 int_div_un_imm: dest:a src1:i clob:d len:32
@@ -369,6 +377,8 @@ int_bge_un: len:8
 int_ble: len:8
 int_ble_un: len:8
 
+card_table_wbarrier: src1:a src2:i clob:d len:42
+
 relaxed_nop: len:2
 hard_nop: len:1
 
@@ -436,8 +446,8 @@ cmov_lgt_un: dest:i src1:i src2:i len:16 clob:1
 cmov_lle_un: dest:i src1:i src2:i len:16 clob:1
 cmov_llt_un: dest:i src1:i src2:i len:16 clob:1
 
-long_add_imm: dest:i src1:i clob:1 len:12
-long_sub_imm: dest:i src1:i clob:1 len:12
+long_add_imm: dest:i src1:i clob:1 len:12 nacl:15
+long_sub_imm: dest:i src1:i clob:1 len:12 nacl:15
 long_and_imm: dest:i src1:i clob:1 len:12
 long_or_imm: dest:i src1:i clob:1 len:12
 long_xor_imm: dest:i src1:i clob:1 len:12
@@ -484,7 +494,7 @@ vcall2: len:64 clob:c
 vcall2_reg: src1:i len:64 clob:c
 vcall2_membase: src1:b len:64 clob:c
 
-dyn_call: src1:i src2:i len:64 clob:c
+dyn_call: src1:i src2:i len:64 clob:c nacl:128
 
 localloc_imm: dest:i len:84
 
@@ -544,6 +554,8 @@ rcpps: dest:x src1:x len:5
 pshufflew_high: dest:x src1:x len:6
 pshufflew_low: dest:x src1:x len:6
 pshuffled: dest:x src1:x len:6
+shufps: dest:x src1:x src2:x len:5 clob:1
+shufpd: dest:x src1:x src2:x len:6 clob:1
 
 extract_mask: dest:i src1:x len:6
 
@@ -651,6 +663,15 @@ pshrq_reg: dest:x src1:x src2:x len:5 clob:1
 pshlq: dest:x src1:x len:6 clob:1
 pshlq_reg: dest:x src1:x src2:x len:5 clob:1
 
+cvtdq2pd: dest:x src1:x len:5 clob:1
+cvtdq2ps: dest:x src1:x len:4 clob:1
+cvtpd2dq: dest:x src1:x len:5 clob:1
+cvtpd2ps: dest:x src1:x len:5 clob:1
+cvtps2dq: dest:x src1:x len:5 clob:1
+cvtps2pd: dest:x src1:x len:4 clob:1
+cvttpd2dq: dest:x src1:x len:5 clob:1
+cvttps2dq: dest:x src1:x len:5 clob:1
+
 xmove: dest:x src1:x len:5
 xzero: dest:x len:5
 
@@ -698,3 +719,8 @@ expand_r8: dest:x src1:f len:13
 
 liverange_start: len:0
 liverange_end: len:0
+gc_liveness_def: len:0
+gc_liveness_use: len:0
+gc_spill_slot_liveness_def: len:0
+gc_param_slot_liveness_def: len:0
+
diff --git a/mono/mini/cpu-arm.md b/mono/mini/cpu-arm.md
index 0607ea0..2acc8f0 100644
--- a/mono/mini/cpu-arm.md
+++ b/mono/mini/cpu-arm.md
@@ -202,7 +202,7 @@ sbb_imm: dest:i src1:i len:12
 br_reg: src1:i len:8
 bigmul: len:8 dest:l src1:i src2:i
 bigmul_un: len:8 dest:l src1:i src2:i
-tls_get: len:8 dest:i
+tls_get: len:8 dest:i clob:c
 
 # 32 bit opcodes
 int_add: dest:i src1:i src2:i len:4
diff --git a/mono/mini/cpu-x86.md b/mono/mini/cpu-x86.md
index 381fd0d..cf580d5 100644
--- a/mono/mini/cpu-x86.md
+++ b/mono/mini/cpu-x86.md
@@ -65,6 +65,7 @@
 break: len:1
 jmp: len:32 clob:c
 call: dest:a clob:c len:17
+tailcall: len:120 clob:c
 br: len:5
 seq_point: len:16
 
@@ -161,6 +162,7 @@ storei8_membase_imm: dest:b
 storei8_membase_reg: dest:b src1:i 
 storer4_membase_reg: dest:b src1:f len:7
 storer8_membase_reg: dest:b src1:f len:7
+store_mem_imm: len:12
 load_membase: dest:i src1:b len:7
 loadi1_membase: dest:y src1:b len:7
 loadu1_membase: dest:y src1:b len:7
@@ -245,6 +247,7 @@ call_handler: len:11 clob:c
 aot_const: dest:i len:5
 load_gotaddr: dest:i len:64
 got_entry: dest:i src1:b len:7
+nacl_gc_safe_point: clob:c
 x86_test_null: src1:i len:2
 x86_compare_membase_reg: src1:b src2:i len:7
 x86_compare_membase_imm: src1:b len:11
@@ -303,7 +306,7 @@ atomic_exchange_i4: src1:b src2:i dest:a len:24
 atomic_cas_i4: src1:b src2:i src3:a dest:a len:24
 memory_barrier: len:16
 
-card_table_wbarrier: src1:a src2:i clob:d len:28
+card_table_wbarrier: src1:a src2:i clob:d len:34
 
 relaxed_nop: len:2
 hard_nop: len:1
@@ -452,6 +455,8 @@ rcpps: dest:x src1:x len:4
 pshufflew_high: dest:x src1:x len:5
 pshufflew_low: dest:x src1:x len:5
 pshuffled: dest:x src1:x len:5
+shufps: dest:x src1:x src2:x len:4 clob:1
+shufpd: dest:x src1:x src2:x len:5 clob:1
 
 extract_mask: dest:i src1:x len:4
 
@@ -559,6 +564,15 @@ pshrq_reg: dest:x src1:x src2:x len:4 clob:1
 pshlq: dest:x src1:x len:5 clob:1
 pshlq_reg: dest:x src1:x src2:x len:4 clob:1
 
+cvtdq2pd: dest:x src1:x len:4 clob:1
+cvtdq2ps: dest:x src1:x len:3 clob:1
+cvtpd2dq: dest:x src1:x len:4 clob:1
+cvtpd2ps: dest:x src1:x len:4 clob:1
+cvtps2dq: dest:x src1:x len:4 clob:1
+cvtps2pd: dest:x src1:x len:3 clob:1
+cvttpd2dq: dest:x src1:x len:4 clob:1
+cvttps2dq: dest:x src1:x len:4 clob:1
+
 xmove: dest:x src1:x len:4
 xzero: dest:x len:4
 
@@ -603,3 +617,7 @@ expand_r8: dest:x src1:f len:13
 
 liverange_start: len:0
 liverange_end: len:0
+gc_liveness_def: len:0
+gc_liveness_use: len:0
+gc_spill_slot_liveness_def: len:0
+gc_param_slot_liveness_def: len:0
diff --git a/mono/mini/debug-mini.c b/mono/mini/debug-mini.c
index 29131f9..c36d618 100644
--- a/mono/mini/debug-mini.c
+++ b/mono/mini/debug-mini.c
@@ -320,8 +320,21 @@ mono_debug_close_method (MonoCompile *cfg)
 	mono_debugger_check_breakpoints (method, debug_info);
 
 	mono_debug_free_method_jit_info (jit);
-	g_array_free (info->line_numbers, TRUE);
-	g_free (info);
+	mono_debug_free_method (cfg);
+}
+
+void
+mono_debug_free_method (MonoCompile *cfg)
+{
+	MiniDebugMethodInfo *info;
+
+	info = (MiniDebugMethodInfo *) cfg->debug_info;
+	if (info) {
+		if (info->line_numbers)
+			g_array_free (info->line_numbers, TRUE);
+		g_free (info);
+		cfg->debug_info = NULL;	
+	}
 }
 
 void
@@ -759,8 +772,11 @@ mono_debugger_method_has_breakpoint (MonoMethod *method)
 {
 	int i;
 
-	if (!breakpoints || ((method->wrapper_type != MONO_WRAPPER_NONE) &&
-						 (method->wrapper_type != MONO_WRAPPER_DYNAMIC_METHOD)))
+	if (!breakpoints)
+		return 0;
+
+	if ((method->wrapper_type != MONO_WRAPPER_NONE) &&
+		(method->wrapper_type != MONO_WRAPPER_DYNAMIC_METHOD))
 		return 0;
 
 	for (i = 0; i < breakpoints->len; i++) {
diff --git a/mono/mini/debugger-agent.c b/mono/mini/debugger-agent.c
index ef9c7c9..f9d4aa2 100644
--- a/mono/mini/debugger-agent.c
+++ b/mono/mini/debugger-agent.c
@@ -72,6 +72,7 @@ int WSAAPI getnameinfo(const struct sockaddr*,socklen_t,char*,DWORD,
 #include <mono/metadata/socket-io.h>
 #include <mono/metadata/assembly.h>
 #include <mono/utils/mono-semaphore.h>
+#include <mono/utils/mono-error-internals.h>
 #include "debugger-agent.h"
 #include "mini.h"
 
@@ -84,6 +85,7 @@ int WSAAPI getnameinfo(const struct sockaddr*,socklen_t,char*,DWORD,
 #endif
 
 #ifndef DISABLE_DEBUGGER_AGENT
+
 #include <mono/io-layer/mono-mutex.h>
 
 /* Definitions to make backporting to 2.6 easier */
@@ -109,7 +111,7 @@ typedef struct {
 typedef struct
 {
 	int id;
-	guint32 il_offset;
+	guint32 il_offset, native_offset;
 	MonoDomain *domain;
 	MonoMethod *method;
 	/*
@@ -213,6 +215,10 @@ typedef struct {
 
 	gboolean has_async_ctx;
 
+	gboolean has_filter_ctx;
+	MonoContext filter_ctx;
+	MonoLMF *filter_lmf;
+
 	/*
 	 * The lmf where the stack walk can be started for running threads.
 	 */
@@ -297,7 +303,8 @@ typedef enum {
 	ERR_INVALID_ARGUMENT = 102,
 	ERR_UNLOADED = 103,
 	ERR_NO_INVOCATION = 104,
-	ERR_ABSENT_INFORMATION = 105
+	ERR_ABSENT_INFORMATION = 105,
+	ERR_NO_SEQ_POINT_AT_IL_OFFSET = 106
 } ErrorCode;
 
 typedef enum {
@@ -420,6 +427,7 @@ typedef enum {
 	CMD_TYPE_GET_FIELD_CATTRS = 11,
 	CMD_TYPE_GET_PROPERTY_CATTRS = 12,
 	CMD_TYPE_GET_SOURCE_FILES_2 = 13,
+	CMD_TYPE_GET_VALUES_2 = 14
 } CmdType;
 
 typedef enum {
@@ -797,13 +805,13 @@ mono_debugger_agent_init (void)
 	debugger_tls_id = TlsAlloc ();
 
 	thread_to_tls = mono_g_hash_table_new_type (NULL, NULL, MONO_HASH_KEY_GC);
-	MONO_GC_REGISTER_ROOT (thread_to_tls);
+	MONO_GC_REGISTER_ROOT_FIXED (thread_to_tls);
 
 	tid_to_thread = mono_g_hash_table_new_type (NULL, NULL, MONO_HASH_VALUE_GC);
-	MONO_GC_REGISTER_ROOT (tid_to_thread);
+	MONO_GC_REGISTER_ROOT_FIXED (tid_to_thread);
 
 	tid_to_thread_obj = mono_g_hash_table_new_type (NULL, NULL, MONO_HASH_VALUE_GC);
-	MONO_GC_REGISTER_ROOT (tid_to_thread_obj);
+	MONO_GC_REGISTER_ROOT_FIXED (tid_to_thread_obj);
 
 	loaded_classes = g_hash_table_new (mono_aligned_addr_hash, NULL);
 	pending_assembly_loads = g_ptr_array_new ();
@@ -965,6 +973,11 @@ recv_length (int fd, void *buf, int len, int flags)
 	} while ((res > 0 && total < len) || (res == -1 && errno == EINTR));
 	return total;
 }
+
+#ifndef TARGET_PS3
+#define HAVE_GETADDRINFO 1
+#endif
+
 /*
  * transport_connect:
  *
@@ -973,8 +986,12 @@ recv_length (int fd, void *buf, int len, int flags)
 static void
 transport_connect (const char *host, int port)
 {
+#ifdef HAVE_GETADDRINFO
 	struct addrinfo hints;
 	struct addrinfo *result, *rp;
+#else
+	struct hostent *result;
+#endif
 	int sfd, s, res;
 	char port_string [128];
 	char handshake_msg [128];
@@ -988,7 +1005,7 @@ transport_connect (const char *host, int port)
 		mono_network_init ();
 
 		/* Obtain address(es) matching host/port */
-
+#ifdef HAVE_GETADDRINFO
 		memset (&hints, 0, sizeof (struct addrinfo));
 		hints.ai_family = AF_UNSPEC;    /* Allow IPv4 or IPv6 */
 		hints.ai_socktype = SOCK_STREAM; /* Datagram socket */
@@ -997,12 +1014,20 @@ transport_connect (const char *host, int port)
 
 		s = getaddrinfo (host, port_string, &hints, &result);
 		if (s != 0) {
-			fprintf (stderr, "debugger-agent: Unable to connect to %s:%d: %s\n", host, port, gai_strerror (s));
+			fprintf (stderr, "debugger-agent: Unable to resolve %s:%d: %s\n", host, port, gai_strerror (s));
 			exit (1);
 		}
+#else
+		/* The PS3 doesn't even have _r or hstrerror () */
+		result = gethostbyname (host);
+		if (!result) {
+			fprintf (stderr, "debugger-agent: Unable to resolve %s:%d: %d\n", host, port, h_errno);
+		}
+#endif
 	}
 
 	if (agent_config.server) {
+#ifdef HAVE_GETADDRINFO
 		/* Wait for a connection */
 		if (!host) {
 			struct sockaddr_in addr;
@@ -1055,8 +1080,10 @@ transport_connect (const char *host, int port)
 			 * http://msdn.microsoft.com/en-us/library/ms737931(VS.85).aspx
 			 * only works with MSVC.
 			 */
+#ifdef HAVE_GETADDRINFO
 			freeaddrinfo (result);
 #endif
+#endif
 		}
 
 		DEBUG (1, fprintf (log_file, "Listening on %s:%d (timeout=%d ms)...\n", host, port, agent_config.timeout));
@@ -1083,8 +1110,12 @@ transport_connect (const char *host, int port)
 		}
 
 		DEBUG (1, fprintf (log_file, "Accepted connection from client, socket fd=%d.\n", conn_fd));
+#else
+		NOT_IMPLEMENTED;
+#endif /* HAVE_GETADDRINFO */
 	} else {
 		/* Connect to the specified address */
+#ifdef HAVE_GETADDRINFO
 		/* FIXME: Respect the timeout */
 		for (rp = result; rp != NULL; rp = rp->ai_next) {
 			sfd = socket (rp->ai_family, rp->ai_socktype,
@@ -1098,17 +1129,27 @@ transport_connect (const char *host, int port)
 			close (sfd);
 		}
 
+		if (rp == 0) {
+			fprintf (stderr, "debugger-agent: Unable to connect to %s:%d\n", host, port);
+			exit (1);
+		}
+#else
+			sfd = socket (result->h_addrtype, SOCK_STREAM, 0);
+			if (sfd == -1)
+				g_assert_not_reached ();
+			res = connect (sfd, (void*)result->h_addr_list [0], result->h_length);
+			if (res == -1)
+				g_assert_not_reached ();
+#endif
+
 		conn_fd = sfd;
 
 #ifndef HOST_WIN32
 		/* See the comment above */
+#ifdef HAVE_GETADDRINFO
 		freeaddrinfo (result);
 #endif
-
-		if (rp == 0) {
-			fprintf (stderr, "debugger-agent: Unable to connect to %s:%d\n", host, port);
-			exit (1);
-		}
+#endif
 	}
 	
 	/* Write handshake message */
@@ -1971,7 +2012,7 @@ mono_debugger_agent_thread_interrupt (void *sigctx, MonoJitInfo *ji)
 			data.last_frame_set = FALSE;
 			if (sigctx) {
 				mono_arch_sigctx_to_monoctx (sigctx, &ctx);
-				mono_jit_walk_stack_from_ctx_in_thread (get_last_frame, mono_domain_get (), &ctx, FALSE, tls->thread, mono_get_lmf (), &data);
+				mono_walk_stack (get_last_frame, mono_domain_get (), &ctx, MONO_UNWIND_DEFAULT, tls->thread, mono_get_lmf (), &data);
 			}
 			if (data.last_frame_set) {
 				memcpy (&tls->async_last_frame, &data.last_frame, sizeof (StackFrameInfo));
@@ -2054,7 +2095,7 @@ notify_thread (gpointer key, gpointer value, gpointer user_data)
 #ifdef HOST_WIN32
 	QueueUserAPC (notify_thread_apc, thread->handle, NULL);
 #else
-	pthread_kill ((pthread_t) tid, mono_thread_get_abort_signal ());
+	mono_thread_kill (thread, mono_thread_get_abort_signal ());
 #endif
 }
 
@@ -2413,6 +2454,32 @@ find_next_seq_point_for_native_offset (MonoDomain *domain, MonoMethod *method, g
 }
 
 /*
+ * find_prev_seq_point_for_native_offset:
+ *
+ *   Find the first sequence point before NATIVE_OFFSET.
+ */
+static SeqPoint*
+find_prev_seq_point_for_native_offset (MonoDomain *domain, MonoMethod *method, gint32 native_offset, MonoSeqPointInfo **info)
+{
+	MonoSeqPointInfo *seq_points;
+	int i;
+
+	mono_domain_lock (domain);
+	seq_points = g_hash_table_lookup (domain_jit_info (domain)->seq_points, method);
+	mono_domain_unlock (domain);
+	g_assert (seq_points);
+
+	*info = seq_points;
+
+	for (i = seq_points->len - 1; i >= 0; --i) {
+		if (seq_points->seq_points [i].native_offset <= native_offset)
+			return &seq_points->seq_points [i];
+	}
+
+	return NULL;
+}
+
+/*
  * find_seq_point:
  *
  *   Find the sequence point corresponding to the IL offset IL_OFFSET, which
@@ -2508,7 +2575,7 @@ process_frame (StackFrameInfo *info, MonoContext *ctx, gpointer user_data)
 		info->il_offset = mono_debug_il_offset_from_address (method, info->domain, info->native_offset);
 	}
 
-	DEBUG (1, fprintf (log_file, "\tFrame: %s %d %d %d\n", mono_method_full_name (method, TRUE), info->native_offset, info->il_offset, info->managed));
+	DEBUG (1, fprintf (log_file, "\tFrame: %s:%x(%x) %d\n", mono_method_full_name (method, TRUE), info->il_offset, info->native_offset, info->managed));
 
 	if (!info->managed && method->wrapper_type != MONO_WRAPPER_DYNAMIC_METHOD) {
 		/*
@@ -2524,6 +2591,7 @@ process_frame (StackFrameInfo *info, MonoContext *ctx, gpointer user_data)
 	frame->method = method;
 	frame->actual_method = actual_method;
 	frame->il_offset = info->il_offset;
+	frame->native_offset = info->native_offset;
 	if (ctx) {
 		frame->ctx = *ctx;
 		frame->has_ctx = TRUE;
@@ -2535,6 +2603,25 @@ process_frame (StackFrameInfo *info, MonoContext *ctx, gpointer user_data)
 	return FALSE;
 }
 
+static gboolean
+process_filter_frame (StackFrameInfo *info, MonoContext *ctx, gpointer user_data)
+{
+	ComputeFramesUserData *ud = user_data;
+
+	/*
+	 * 'tls->filter_ctx' is the location of the throw site.
+	 *
+	 * mono_walk_stack() will never actually hit the throw site, but unwind
+	 * directly from the filter to the call site; we abort stack unwinding here
+	 * once this happens and resume from the throw site.
+	 */
+
+	if (MONO_CONTEXT_GET_SP (ctx) >= MONO_CONTEXT_GET_SP (&ud->tls->filter_ctx))
+		return TRUE;
+
+	return process_frame (info, ctx, user_data);
+}
+
 static void
 compute_frame_info (MonoInternalThread *thread, DebuggerTlsData *tls)
 {
@@ -2557,9 +2644,21 @@ compute_frame_info (MonoInternalThread *thread, DebuggerTlsData *tls)
 	} if (!tls->really_suspended && tls->has_async_ctx) {
 		/* Have to use the state saved by the signal handler */
 		process_frame (&tls->async_last_frame, NULL, &user_data);
-		mono_jit_walk_stack_from_ctx_in_thread (process_frame, tls->domain, &tls->async_ctx, FALSE, thread, tls->async_lmf, &user_data);
+		mono_walk_stack (process_frame, tls->domain, &tls->async_ctx, MONO_UNWIND_DEFAULT, thread, tls->async_lmf, &user_data);
+	} else if (tls->has_filter_ctx) {
+		/*
+		 * We are inside an exception filter.
+		 *
+		 * First we add all the frames from inside the filter; 'tls->ctx' has the current context.
+		 */
+		if (tls->has_context)
+			mono_walk_stack (process_filter_frame, tls->domain, &tls->ctx, MONO_UNWIND_DEFAULT, thread, tls->lmf, &user_data);
+		/*
+		 * After that, we resume unwinding from the location where the exception has been thrown.
+		 */
+		mono_walk_stack (process_frame, tls->domain, &tls->filter_ctx, MONO_UNWIND_DEFAULT, thread, tls->filter_lmf, &user_data);
 	} else if (tls->has_context) {
-		mono_jit_walk_stack_from_ctx_in_thread (process_frame, tls->domain, &tls->ctx, FALSE, thread, tls->lmf, &user_data);
+		mono_walk_stack (process_frame, tls->domain, &tls->ctx, MONO_UNWIND_DEFAULT, thread, tls->lmf, &user_data);
 	} else {
 		// FIXME:
 		tls->frame_count = 0;
@@ -2922,7 +3021,7 @@ thread_startup (MonoProfiler *prof, uintptr_t tid)
 	// FIXME: Free this somewhere
 	tls = g_new0 (DebuggerTlsData, 1);
 	tls->resume_event = CreateEvent (NULL, FALSE, FALSE, NULL);
-	MONO_GC_REGISTER_ROOT (tls->thread);
+	MONO_GC_REGISTER_ROOT_SINGLE (tls->thread);
 	tls->thread = thread;
 	TlsSetValue (debugger_tls_id, tls);
 
@@ -3195,12 +3294,15 @@ breakpoints_init (void)
  * JI.
  */
 static void
-insert_breakpoint (MonoSeqPointInfo *seq_points, MonoDomain *domain, MonoJitInfo *ji, MonoBreakpoint *bp)
+insert_breakpoint (MonoSeqPointInfo *seq_points, MonoDomain *domain, MonoJitInfo *ji, MonoBreakpoint *bp, MonoError *error)
 {
 	int i, count;
 	gint32 il_offset = -1, native_offset;
 	BreakpointInstance *inst;
 
+	if (error)
+		mono_error_init (error);
+
 	native_offset = 0;
 	for (i = 0; i < seq_points->len; ++i) {
 		il_offset = seq_points->seq_points [i].il_offset;
@@ -3211,8 +3313,15 @@ insert_breakpoint (MonoSeqPointInfo *seq_points, MonoDomain *domain, MonoJitInfo
 	}
 
 	if (i == seq_points->len) {
-		/* Have to handle this somehow */
-		g_error ("Unable to insert breakpoint at %s:%d, seq_points=%d\n", mono_method_full_name (ji->method, TRUE), bp->il_offset, seq_points->len);
+		char *s = g_strdup_printf ("Unable to insert breakpoint at %s:%d, seq_points=%d\n", mono_method_full_name (ji->method, TRUE), bp->il_offset, seq_points->len);
+		if (error) {
+			mono_error_set_error (error, MONO_ERROR_GENERIC, "%s", s);
+			g_free (s);
+			return;
+		} else {
+			g_error ("%s", s);
+			g_free (s);
+		}
 	}
 
 	inst = g_new0 (BreakpointInstance, 1);
@@ -3311,7 +3420,7 @@ add_pending_breakpoints (MonoMethod *method, MonoJitInfo *ji)
 				continue;
 			g_assert (seq_points);
 
-			insert_breakpoint (seq_points, domain, ji, bp);
+			insert_breakpoint (seq_points, domain, ji, bp, NULL);
 		}
 	}
 
@@ -3319,11 +3428,14 @@ add_pending_breakpoints (MonoMethod *method, MonoJitInfo *ji)
 }
 
 static void
-set_bp_in_method (MonoDomain *domain, MonoMethod *method, MonoSeqPointInfo *seq_points, MonoBreakpoint *bp)
+set_bp_in_method (MonoDomain *domain, MonoMethod *method, MonoSeqPointInfo *seq_points, MonoBreakpoint *bp, MonoError *error)
 {
 	gpointer code;
 	MonoJitInfo *ji;
 
+	if (error)
+		mono_error_init (error);
+
 	code = mono_jit_find_compiled_method_with_jit_info (domain, method, &ji);
 	if (!code) {
 		/* Might be AOTed code */
@@ -3334,42 +3446,11 @@ set_bp_in_method (MonoDomain *domain, MonoMethod *method, MonoSeqPointInfo *seq_
 	}
 	g_assert (code);
 
-	insert_breakpoint (seq_points, domain, ji, bp);
-}
-
-typedef struct
-{
-	MonoBreakpoint *bp;
-	MonoDomain *domain;
-} SetBpUserData;
-
-static void
-set_bp_in_method_cb (gpointer key, gpointer value, gpointer user_data)
-{
-	MonoMethod *method = key;
-	MonoSeqPointInfo *seq_points = value;
-	SetBpUserData *ud = user_data;
-	MonoBreakpoint *bp = ud->bp;
-	MonoDomain *domain = ud->domain;
-
-	if (bp_matches_method (bp, method))
-		set_bp_in_method (domain, method, seq_points, bp);
+	insert_breakpoint (seq_points, domain, ji, bp, error);
 }
 
 static void
-set_bp_in_domain (gpointer key, gpointer value, gpointer user_data)
-{
-	MonoDomain *domain = key;
-	MonoBreakpoint *bp = user_data;
-	SetBpUserData ud;
-
-	ud.bp = bp;
-	ud.domain = domain;
-
-	mono_domain_lock (domain);
-	g_hash_table_foreach (domain_jit_info (domain)->seq_points, set_bp_in_method_cb, &ud);
-	mono_domain_unlock (domain);
-}
+clear_breakpoint (MonoBreakpoint *bp);
 
 /*
  * set_breakpoint:
@@ -3378,11 +3459,20 @@ set_bp_in_domain (gpointer key, gpointer value, gpointer user_data)
  * METHOD can be NULL, in which case a breakpoint is placed in all methods.
  * METHOD can also be a generic method definition, in which case a breakpoint
  * is placed in all instances of the method.
+ * If ERROR is non-NULL, then it is set and NULL is returnd if some breakpoints couldn't be
+ * inserted.
  */
 static MonoBreakpoint*
-set_breakpoint (MonoMethod *method, long il_offset, EventRequest *req)
+set_breakpoint (MonoMethod *method, long il_offset, EventRequest *req, MonoError *error)
 {
 	MonoBreakpoint *bp;
+	GHashTableIter iter, iter2;
+	MonoDomain *domain;
+	MonoMethod *m;
+	MonoSeqPointInfo *seq_points;
+
+	if (error)
+		mono_error_init (error);
 
 	// FIXME:
 	// - suspend/resume the vm to prevent code patching problems
@@ -3400,7 +3490,18 @@ set_breakpoint (MonoMethod *method, long il_offset, EventRequest *req)
 
 	mono_loader_lock ();
 
-	g_hash_table_foreach (domains, set_bp_in_domain, bp);
+	g_hash_table_iter_init (&iter, domains);
+	while (g_hash_table_iter_next (&iter, (void**)&domain, NULL)) {
+		mono_domain_lock (domain);
+
+		g_hash_table_iter_init (&iter2, domain_jit_info (domain)->seq_points);
+		while (g_hash_table_iter_next (&iter2, (void**)&m, (void**)&seq_points)) {
+			if (bp_matches_method (bp, m))
+				set_bp_in_method (domain, m, seq_points, bp, error);
+		}
+
+		mono_domain_unlock (domain);
+	}
 
 	mono_loader_unlock ();
 
@@ -3408,6 +3509,11 @@ set_breakpoint (MonoMethod *method, long il_offset, EventRequest *req)
 	g_ptr_array_add (breakpoints, bp);
 	mono_loader_unlock ();
 
+	if (error && !mono_error_ok (error)) {
+		clear_breakpoint (bp);
+		return NULL;
+	}
+
 	return bp;
 }
 
@@ -3698,7 +3804,11 @@ resume_from_signal_handler (void *sigctx, void *func)
 
 	mono_arch_sigctx_to_monoctx (sigctx, &ctx);
 	memcpy (&tls->handler_ctx, &ctx, sizeof (MonoContext));
+#ifdef MONO_ARCH_HAVE_SETUP_RESUME_FROM_SIGNAL_HANDLER_CTX
+	mono_arch_setup_resume_sighandler_ctx (&ctx, func);
+#else
 	MONO_CONTEXT_SET_IP (&ctx, func);
+#endif
 	mono_arch_monoctx_to_sigctx (&ctx, sigctx);
 
 #ifdef PPC_USES_FUNCTION_DESCRIPTOR
@@ -3718,6 +3828,22 @@ mono_debugger_agent_breakpoint_hit (void *sigctx)
 	resume_from_signal_handler (sigctx, process_breakpoint);
 }
 
+static const char*
+ss_depth_to_string (StepDepth depth)
+{
+	switch (depth) {
+	case STEP_DEPTH_OVER:
+		return "over";
+	case STEP_DEPTH_OUT:
+		return "out";
+	case STEP_DEPTH_INTO:
+		return "into";
+	default:
+		g_assert_not_reached ();
+		return NULL;
+	}
+}
+
 static void
 process_single_step_inner (DebuggerTlsData *tls, MonoContext *ctx)
 {
@@ -3748,25 +3874,9 @@ process_single_step_inner (DebuggerTlsData *tls, MonoContext *ctx)
 		return;
 
 	if (log_level > 0) {
-		const char *depth = NULL;
-
 		ji = mini_jit_info_table_find (mono_domain_get (), (char*)ip, &domain);
 
-		switch (ss_req->depth) {
-		case STEP_DEPTH_OVER:
-			depth = "over";
-			break;
-		case STEP_DEPTH_OUT:
-			depth = "out";
-			break;
-		case STEP_DEPTH_INTO:
-			depth = "into";
-			break;
-		default:
-			g_assert_not_reached ();
-		}
-			
-		DEBUG (1, fprintf (log_file, "[%p] Single step event (depth=%s) at %s (%p), sp %p, last sp %p\n", (gpointer)GetCurrentThreadId (), ss_req->depth == STEP_DEPTH_OVER ? "over" : "out", mono_method_full_name (ji->method, TRUE), MONO_CONTEXT_GET_IP (ctx), MONO_CONTEXT_GET_SP (ctx), ss_req->last_sp));
+		DEBUG (1, fprintf (log_file, "[%p] Single step event (depth=%s) at %s (%p), sp %p, last sp %p\n", (gpointer)GetCurrentThreadId (), ss_depth_to_string (ss_req->depth), mono_method_full_name (ji->method, TRUE), MONO_CONTEXT_GET_IP (ctx), MONO_CONTEXT_GET_SP (ctx), ss_req->last_sp));
 	}
 
 	/*
@@ -3998,7 +4108,6 @@ ss_stop (SingleStepReq *ss_req)
 static void
 ss_start (SingleStepReq *ss_req, MonoMethod *method, SeqPoint *sp, MonoSeqPointInfo *info, MonoContext *ctx, DebuggerTlsData *tls, gboolean step_to_catch)
 {
-	gboolean use_bp = FALSE;
 	int i, frame_index;
 	SeqPoint *next_sp;
 	MonoBreakpoint *bp;
@@ -4010,7 +4119,7 @@ ss_start (SingleStepReq *ss_req, MonoMethod *method, SeqPoint *sp, MonoSeqPointI
 	 * Implement single stepping using breakpoints if possible.
 	 */
 	if (step_to_catch) {
-		bp = set_breakpoint (method, sp->il_offset, ss_req->req);
+		bp = set_breakpoint (method, sp->il_offset, ss_req->req, NULL);
 		ss_req->bps = g_slist_append (ss_req->bps, bp);
 	} else if (ss_req->depth == STEP_DEPTH_OVER) {
 		frame_index = 1;
@@ -4032,17 +4141,17 @@ ss_start (SingleStepReq *ss_req, MonoMethod *method, SeqPoint *sp, MonoSeqPointI
 		}
 
 		if (sp && sp->next_len > 0) {
-			use_bp = TRUE;
 			for (i = 0; i < sp->next_len; ++i) {
 				next_sp = &info->seq_points [sp->next [i]];
 
-				bp = set_breakpoint (method, next_sp->il_offset, ss_req->req);
+				bp = set_breakpoint (method, next_sp->il_offset, ss_req->req, NULL);
 				ss_req->bps = g_slist_append (ss_req->bps, bp);
 			}
 		}
 	}
 
 	if (!ss_req->bps) {
+		DEBUG (1, printf ("[dbg] Turning on global single stepping.\n"));
 		ss_req->global = TRUE;
 		start_single_stepping ();
 	} else {
@@ -4057,7 +4166,7 @@ static ErrorCode
 ss_create (MonoInternalThread *thread, StepSize size, StepDepth depth, EventRequest *req)
 {
 	DebuggerTlsData *tls;
-	MonoSeqPointInfo *info;
+	MonoSeqPointInfo *info = NULL;
 	SeqPoint *sp = NULL;
 	MonoMethod *method = NULL;
 	MonoDebugMethodInfo *minfo;
@@ -4074,6 +4183,8 @@ ss_create (MonoInternalThread *thread, StepSize size, StepDepth depth, EventRequ
 		return ERR_NOT_IMPLEMENTED;
 	}
 
+	DEBUG (1, printf ("[dbg] Starting single step of thread %p (depth=%s).\n", thread, ss_depth_to_string (depth)));
+
 	ss_req = g_new0 (SingleStepReq, 1);
 	ss_req->req = req;
 	ss_req->thread = thread;
@@ -4099,7 +4210,7 @@ ss_create (MonoInternalThread *thread, StepSize size, StepDepth depth, EventRequ
 		 */
 
 		/* Find the the jit info for the catch context */
-		res = mono_find_jit_info_ext (mono_domain_get (), thread->jit_data, NULL, &tls->catch_ctx, &new_ctx, NULL, &lmf, &frame);
+		res = mono_find_jit_info_ext (mono_domain_get (), thread->jit_data, NULL, &tls->catch_ctx, &new_ctx, NULL, &lmf, NULL, &frame);
 		g_assert (res);
 		g_assert (frame.type == FRAME_TYPE_MANAGED);
 
@@ -4150,7 +4261,7 @@ ss_create (MonoInternalThread *thread, StepSize size, StepDepth depth, EventRequ
 
 		if (!method && frame->il_offset != -1) {
 			/* FIXME: Sort the table and use a binary search */
-			sp = find_seq_point (frame->domain, frame->method, frame->il_offset, &info);
+			sp = find_prev_seq_point_for_native_offset (frame->domain, frame->method, frame->native_offset, &info);
 			g_assert (sp);
 			method = frame->method;
 		}
@@ -4261,6 +4372,64 @@ mono_debugger_agent_handle_exception (MonoException *exc, MonoContext *throw_ctx
 		tls->has_catch_ctx = FALSE;
 }
 
+void
+mono_debugger_agent_begin_exception_filter (MonoException *exc, MonoContext *ctx, MonoContext *orig_ctx)
+{
+	DebuggerTlsData *tls;
+
+	if (!inited)
+		return;
+
+	tls = TlsGetValue (debugger_tls_id);
+	if (!tls)
+		return;
+
+	/*
+	 * We're about to invoke an exception filter during the first pass of exception handling.
+	 *
+	 * 'ctx' is the context that'll get passed to the filter ('call_filter (ctx, ei->data.filter)'),
+	 * 'orig_ctx' is the context where the exception has been thrown.
+	 *
+	 *
+	 * See mcs/class/Mono.Debugger.Soft/Tests/dtest-excfilter.il for an example.
+	 *
+	 * If we're stopped in Filter(), normal stack unwinding would first unwind to
+	 * the call site (line 37) and then continue to Main(), but it would never
+	 * include the throw site (line 32).
+	 *
+	 * Since exception filters are invoked during the first pass of exception handling,
+	 * the stack frames of the throw site are still intact, so we should include them
+	 * in a stack trace.
+	 *
+	 * We do this here by saving the context of the throw site in 'tls->filter_ctx'.
+	 *
+	 * Exception filters are used by MonoDroid, where we want to stop inside a call filter,
+	 * but report the location of the 'throw' to the user.
+	 *
+	 */
+
+	memcpy (&tls->filter_ctx, orig_ctx, sizeof (MonoContext));
+	tls->has_filter_ctx = TRUE;
+
+	tls->filter_lmf = mono_get_lmf ();
+	tls->domain = mono_domain_get ();
+}
+
+void
+mono_debugger_agent_end_exception_filter (MonoException *exc, MonoContext *ctx, MonoContext *orig_ctx)
+{
+	DebuggerTlsData *tls;
+
+	if (!inited)
+		return;
+
+	tls = TlsGetValue (debugger_tls_id);
+	if (!tls)
+		return;
+
+	tls->has_filter_ctx = FALSE;
+}
+
 /*
  * buffer_add_value_full:
  *
@@ -4750,7 +4919,7 @@ do_invoke_method (DebuggerTlsData *tls, Buffer *buf, InvokeData *invoke)
 	MonoObject *this, *res, *exc;
 	MonoDomain *domain;
 	guint8 *this_buf;
-#ifdef MONO_ARCH_HAVE_FIND_JIT_INFO_EXT
+#ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED
 	MonoLMFExt ext;
 #endif
 
@@ -4845,7 +5014,7 @@ do_invoke_method (DebuggerTlsData *tls, Buffer *buf, InvokeData *invoke)
 	 * Add an LMF frame to link the stack frames on the invoke method with our caller.
 	 */
 	/* FIXME: Move this to arch specific code */
-#ifdef MONO_ARCH_HAVE_FIND_JIT_INFO_EXT
+#ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED
 	if (invoke->has_ctx) {
 		MonoLMF **lmf_addr;
 
@@ -4867,7 +5036,6 @@ do_invoke_method (DebuggerTlsData *tls, Buffer *buf, InvokeData *invoke)
 		ext.lmf.previous_lmf = *(lmf_addr);
 		/* Mark that this is a MonoLMFExt */
 		ext.lmf.previous_lmf = (gpointer)(((gssize)ext.lmf.previous_lmf) | 2);
-		ext.lmf.ebp = (gssize)&ext;
 #elif defined(TARGET_POWERPC)
 		ext.lmf.previous_lmf = *(lmf_addr);
 		/* Mark that this is a MonoLMFExt */
@@ -4911,7 +5079,7 @@ do_invoke_method (DebuggerTlsData *tls, Buffer *buf, InvokeData *invoke)
 
 	tls->disable_breakpoints = FALSE;
 
-#ifdef MONO_ARCH_HAVE_FIND_JIT_INFO_EXT
+#ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED
 	if (invoke->has_ctx)
 		mono_set_lmf ((gpointer)(((gssize)ext.lmf.previous_lmf) & ~3));
 #endif
@@ -5269,6 +5437,7 @@ static ErrorCode
 event_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 {
 	int err;
+	MonoError error;
 
 	switch (command) {
 	case CMD_EVENT_REQUEST_SET: {
@@ -5351,7 +5520,13 @@ event_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 		if (req->event_kind == EVENT_KIND_BREAKPOINT) {
 			g_assert (method);
 
-			req->info = set_breakpoint (method, location, req);
+			req->info = set_breakpoint (method, location, req, &error);
+			if (!mono_error_ok (&error)) {
+				g_free (req);
+				DEBUG(1, fprintf (log_file, "[dbg] Failed to set breakpoint: %s\n", mono_error_get_message (&error)));
+				mono_error_cleanup (&error);
+				return ERR_NO_SEQ_POINT_AT_IL_OFFSET;
+			}
 		} else if (req->event_kind == EVENT_KIND_STEP) {
 			g_assert (step_thread_id);
 
@@ -5367,9 +5542,9 @@ event_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 				return err;
 			}
 		} else if (req->event_kind == EVENT_KIND_METHOD_ENTRY) {
-			req->info = set_breakpoint (NULL, METHOD_ENTRY_IL_OFFSET, req);
+			req->info = set_breakpoint (NULL, METHOD_ENTRY_IL_OFFSET, req, NULL);
 		} else if (req->event_kind == EVENT_KIND_METHOD_EXIT) {
-			req->info = set_breakpoint (NULL, METHOD_EXIT_IL_OFFSET, req);
+			req->info = set_breakpoint (NULL, METHOD_EXIT_IL_OFFSET, req, NULL);
 		} else if (req->event_kind == EVENT_KIND_EXCEPTION) {
 		} else {
 			if (req->nmodifiers) {
@@ -5869,13 +6044,28 @@ type_commands_internal (int command, MonoClass *klass, MonoDomain *domain, guint
 		buffer_add_cattrs (buf, domain, klass->image, attr_klass, cinfo);
 		break;
 	}
-	case CMD_TYPE_GET_VALUES: {
+	case CMD_TYPE_GET_VALUES:
+	case CMD_TYPE_GET_VALUES_2: {
 		guint8 *val;
 		MonoClassField *f;
 		MonoVTable *vtable;
 		MonoClass *k;
 		int len, i;
 		gboolean found;
+		MonoThread *thread_obj;
+		MonoInternalThread *thread = NULL;
+		guint32 special_static_type;
+
+		if (command == CMD_TYPE_GET_VALUES_2) {
+			int objid = decode_objid (p, &p, end);
+			int err;
+
+			err = get_object (objid, (MonoObject**)&thread_obj);
+			if (err)
+				return err;
+
+			thread = THREAD_TO_INTERNAL (thread_obj);
+		}
 
 		len = decode_int (p, &p, end);
 		for (i = 0; i < len; ++i) {
@@ -5885,8 +6075,11 @@ type_commands_internal (int command, MonoClass *klass, MonoDomain *domain, guint
 
 			if (!(f->type->attrs & FIELD_ATTRIBUTE_STATIC))
 				return ERR_INVALID_FIELDID;
-			if (mono_class_field_is_special_static (f))
-				return ERR_INVALID_FIELDID;
+			special_static_type = mono_class_field_get_special_static_type (f);
+			if (special_static_type != SPECIAL_STATIC_NONE) {
+				if (!(thread && special_static_type == SPECIAL_STATIC_THREAD))
+					return ERR_INVALID_FIELDID;
+			}
 
 			/* Check that the field belongs to the object */
 			found = FALSE;
@@ -5901,7 +6094,7 @@ type_commands_internal (int command, MonoClass *klass, MonoDomain *domain, guint
 
 			vtable = mono_class_vtable (domain, f->parent);
 			val = g_malloc (mono_class_instance_size (mono_class_from_mono_type (f->type)));
-			mono_field_static_get_value (vtable, f, val);
+			mono_field_static_get_value_for_thread (thread ? thread : mono_thread_internal_current (), vtable, f, val);
 			buffer_add_value (buf, f->type, val, domain);
 			g_free (val);
 		}
@@ -6756,6 +6949,41 @@ command_set_to_string (CommandSet command_set)
 	}
 }
 
+static const char*
+cmd_to_string (CommandSet set, int command)
+{
+	switch (set) {
+	case CMD_SET_VM: {
+		switch (command) {
+		case CMD_VM_VERSION:
+			return "VERSION";
+		case CMD_VM_ALL_THREADS:
+			return "ALL_THREADS";
+		case CMD_VM_SUSPEND:
+			return "SUSPEND";
+		case CMD_VM_RESUME:
+			return "RESUME";
+		case CMD_VM_EXIT:
+			return "EXIT";
+		case CMD_VM_DISPOSE:
+			return "DISPOSE";
+		case CMD_VM_INVOKE_METHOD:
+			return "INVOKE_METHOD";
+		case CMD_VM_SET_PROTOCOL_VERSION:
+			return "SET_PROTOCOL_VERSION";
+		case CMD_VM_ABORT_INVOKE:
+			return "ABORT_INVOKE";
+		default:
+			break;
+		}
+		break;
+	}
+	default:
+		break;
+	}
+	return NULL;
+}
+
 /*
  * debugger_thread:
  *
@@ -6800,7 +7028,18 @@ debugger_thread (void *arg)
 
 		g_assert (flags == 0);
 
-		DEBUG (1, fprintf (log_file, "[dbg] Received command %s(%d), id=%d.\n", command_set_to_string (command_set), command, id));
+		if (log_level) {
+			const char *cmd_str;
+			char cmd_num [256];
+
+			cmd_str = cmd_to_string (command_set, command);
+			if (!cmd_str) {
+				sprintf (cmd_num, "%d", command);
+				cmd_str = cmd_num;
+			}
+			
+			DEBUG (1, fprintf (log_file, "[dbg] Received command %s(%s), id=%d.\n", command_set_to_string (command_set), cmd_str, id));
+		}
 
 		data = g_malloc (len - HEADER_LENGTH);
 		if (len - HEADER_LENGTH > 0)
@@ -6890,7 +7129,7 @@ debugger_thread (void *arg)
 void
 mono_debugger_agent_parse_options (char *options)
 {
-	g_error ("This runtime is configure with the debugger agent disabled.");
+	g_error ("This runtime is configured with the debugger agent disabled.");
 }
 
 void
@@ -6924,5 +7163,16 @@ mono_debugger_agent_handle_exception (MonoException *ext, MonoContext *throw_ctx
 									  MonoContext *catch_ctx)
 {
 }
+
+void
+mono_debugger_agent_begin_exception_filter (MonoException *exc, MonoContext *ctx, MonoContext *orig_ctx)
+{
+}
+
+void
+mono_debugger_agent_end_exception_filter (MonoException *exc, MonoContext *ctx, MonoContext *orig_ctx)
+{
+}
+
 #endif
 
diff --git a/mono/mini/debugger-agent.h b/mono/mini/debugger-agent.h
index 4d7bf8c..0954927 100644
--- a/mono/mini/debugger-agent.h
+++ b/mono/mini/debugger-agent.h
@@ -27,4 +27,10 @@ gboolean mono_debugger_agent_thread_interrupt (void *sigctx, MonoJitInfo *ji) MO
 void
 mono_debugger_agent_handle_exception (MonoException *ext, MonoContext *throw_ctx, MonoContext *catch_ctx) MONO_INTERNAL;
 
+void
+mono_debugger_agent_begin_exception_filter (MonoException *exc, MonoContext *ctx, MonoContext *orig_ctx) MONO_INTERNAL;
+
+void
+mono_debugger_agent_end_exception_filter (MonoException *exc, MonoContext *ctx, MonoContext *orig_ctx) MONO_INTERNAL;
+
 #endif
diff --git a/mono/mini/decompose.c b/mono/mini/decompose.c
index 89d17c3..7885bf9 100644
--- a/mono/mini/decompose.c
+++ b/mono/mini/decompose.c
@@ -20,165 +20,15 @@ MonoInst* mono_emit_native_call (MonoCompile *cfg, gconstpointer func, MonoMetho
 void mini_emit_stobj (MonoCompile *cfg, MonoInst *dest, MonoInst *src, MonoClass *klass, gboolean native);
 void mini_emit_initobj (MonoCompile *cfg, MonoInst *dest, const guchar *ip, MonoClass *klass);
 
-/*
- * mono_decompose_opcode:
- *
- *   Decompose complex opcodes into ones closer to opcodes supported by
- * the given architecture.
- * Returns a MonoInst which represents the result of the decomposition, and can
- * be pushed on the IL stack. This is needed because the original instruction is
- * nullified.
- * Sets the cfg exception if an opcode is not supported.
- */
-MonoInst*
-mono_decompose_opcode (MonoCompile *cfg, MonoInst *ins)
+/* Decompose complex long opcodes on 64 bit machines or when using LLVM */
+static gboolean
+decompose_long_opcode (MonoCompile *cfg, MonoInst *ins, MonoInst **repl_ins)
 {
 	MonoInst *repl = NULL;
-	int type = ins->type;
-	int dreg = ins->dreg;
-
-	/* FIXME: Instead of = NOP, don't emit the original ins at all */
 
-#ifdef MONO_ARCH_HAVE_DECOMPOSE_OPTS
-	mono_arch_decompose_opts (cfg, ins);
-#endif
+	*repl_ins = NULL;
 
-	/*
-	 * The code below assumes that we are called immediately after emitting 
-	 * ins. This means we can emit code using the normal code generation
-	 * macros.
-	 */
 	switch (ins->opcode) {
-	/* this doesn't make sense on ppc and other architectures */
-#if !defined(MONO_ARCH_NO_IOV_CHECK)
-	case OP_IADD_OVF:
-		if (COMPILE_LLVM (cfg))
-			break;
-		ins->opcode = OP_IADDCC;
-		MONO_EMIT_NEW_COND_EXC (cfg, IOV, "OverflowException");
-		break;
-	case OP_IADD_OVF_UN:
-		if (COMPILE_LLVM (cfg))
-			break;
-		ins->opcode = OP_IADDCC;
-		MONO_EMIT_NEW_COND_EXC (cfg, IC, "OverflowException");
-		break;
-	case OP_ISUB_OVF:
-		if (COMPILE_LLVM (cfg))
-			break;
-		ins->opcode = OP_ISUBCC;
-		MONO_EMIT_NEW_COND_EXC (cfg, IOV, "OverflowException");
-		break;
-	case OP_ISUB_OVF_UN:
-		if (COMPILE_LLVM (cfg))
-			break;
-		ins->opcode = OP_ISUBCC;
-		MONO_EMIT_NEW_COND_EXC (cfg, IC, "OverflowException");
-		break;
-#endif
-	case OP_ICONV_TO_OVF_I1:
-		MONO_EMIT_NEW_ICOMPARE_IMM (cfg, ins->sreg1, 127);
-		MONO_EMIT_NEW_COND_EXC (cfg, IGT, "OverflowException");
-		MONO_EMIT_NEW_ICOMPARE_IMM (cfg, ins->sreg1, -128);
-		MONO_EMIT_NEW_COND_EXC (cfg, ILT, "OverflowException");
-		MONO_EMIT_NEW_UNALU (cfg, OP_ICONV_TO_I1, ins->dreg, ins->sreg1);
-		NULLIFY_INS (ins);
-		break;
-	case OP_ICONV_TO_OVF_I1_UN:
-		/* probe values between 0 to 127 */
-		MONO_EMIT_NEW_ICOMPARE_IMM (cfg, ins->sreg1, 127);
-		MONO_EMIT_NEW_COND_EXC (cfg, IGT_UN, "OverflowException");
-		MONO_EMIT_NEW_UNALU (cfg, OP_ICONV_TO_I1, ins->dreg, ins->sreg1);
-		NULLIFY_INS (ins);
-		break;
-	case OP_ICONV_TO_OVF_U1:
-	case OP_ICONV_TO_OVF_U1_UN:
-		/* probe value to be within 0 to 255 */
-		MONO_EMIT_NEW_COMPARE_IMM (cfg, ins->sreg1, 255);
-		MONO_EMIT_NEW_COND_EXC (cfg, IGT_UN, "OverflowException");
-		MONO_EMIT_NEW_BIALU_IMM (cfg, OP_IAND_IMM, ins->dreg, ins->sreg1, 0xff);
-		NULLIFY_INS (ins);
-		break;
-	case OP_ICONV_TO_OVF_I2:
-		/* Probe value to be within -32768 and 32767 */
-		MONO_EMIT_NEW_ICOMPARE_IMM (cfg, ins->sreg1, 32767);
-		MONO_EMIT_NEW_COND_EXC (cfg, IGT, "OverflowException");
-		MONO_EMIT_NEW_ICOMPARE_IMM (cfg, ins->sreg1, -32768);
-		MONO_EMIT_NEW_COND_EXC (cfg, ILT, "OverflowException");
-		MONO_EMIT_NEW_UNALU (cfg, OP_ICONV_TO_I2, ins->dreg, ins->sreg1);
-		NULLIFY_INS (ins);
-		break;
-	case OP_ICONV_TO_OVF_I2_UN:
-		/* Convert uint value into short, value within 0 and 32767 */
-		MONO_EMIT_NEW_ICOMPARE_IMM (cfg, ins->sreg1, 32767);
-		MONO_EMIT_NEW_COND_EXC (cfg, IGT_UN, "OverflowException");
-		MONO_EMIT_NEW_UNALU (cfg, OP_ICONV_TO_I2, ins->dreg, ins->sreg1);
-		NULLIFY_INS (ins);
-		break;
-	case OP_ICONV_TO_OVF_U2:
-	case OP_ICONV_TO_OVF_U2_UN:
-		/* Probe value to be within 0 and 65535 */
-		MONO_EMIT_NEW_ICOMPARE_IMM (cfg, ins->sreg1, 0xffff);
-		MONO_EMIT_NEW_COND_EXC (cfg, IGT_UN, "OverflowException");
-		MONO_EMIT_NEW_BIALU_IMM (cfg, OP_IAND_IMM, ins->dreg, ins->sreg1, 0xffff);
-		NULLIFY_INS (ins);
-		break;
-	case OP_ICONV_TO_OVF_U4:
-	case OP_ICONV_TO_OVF_I4_UN:
-#if SIZEOF_REGISTER == 4
-	case OP_ICONV_TO_OVF_U:
-	case OP_ICONV_TO_OVF_I_UN:
-#endif
-		MONO_EMIT_NEW_ICOMPARE_IMM (cfg, ins->sreg1, 0);
-		MONO_EMIT_NEW_COND_EXC (cfg, ILT, "OverflowException");
-		MONO_EMIT_NEW_UNALU (cfg, OP_MOVE, ins->dreg, ins->sreg1);
-		NULLIFY_INS (ins);
-		break;
-	case OP_ICONV_TO_I4:
-	case OP_ICONV_TO_U4:
-	case OP_ICONV_TO_OVF_I4:
-	case OP_ICONV_TO_OVF_U4_UN:
-#if SIZEOF_REGISTER == 4
-	case OP_ICONV_TO_OVF_I:
-	case OP_ICONV_TO_OVF_U_UN:
-#endif
-		ins->opcode = OP_MOVE;
-		break;
-	case OP_ICONV_TO_I:
-#if SIZEOF_REGISTER == 8
-		ins->opcode = OP_SEXT_I4;
-#else
-		ins->opcode = OP_MOVE;
-#endif
-		break;
-	case OP_ICONV_TO_U:
-#if SIZEOF_REGISTER == 8
-		ins->opcode = OP_ZEXT_I4;
-#else
-		ins->opcode = OP_MOVE;
-#endif
-		break;
-
-	case OP_FCONV_TO_R8:
-		ins->opcode = OP_FMOVE;
-		break;
-
-	case OP_FCONV_TO_OVF_I1_UN:
-	case OP_FCONV_TO_OVF_I2_UN:
-	case OP_FCONV_TO_OVF_I4_UN:
-	case OP_FCONV_TO_OVF_I8_UN:
-	case OP_FCONV_TO_OVF_U1_UN:
-	case OP_FCONV_TO_OVF_U2_UN:
-	case OP_FCONV_TO_OVF_U4_UN:
-	case OP_FCONV_TO_OVF_U8_UN:
-	case OP_FCONV_TO_OVF_I_UN:
-	case OP_FCONV_TO_OVF_U_UN:
-		cfg->exception_type = MONO_EXCEPTION_INVALID_PROGRAM;
-		cfg->exception_message = g_strdup_printf ("float conv.ovf.un opcodes not supported.");
-		break;
-
-		/* Long opcodes on 64 bit machines */
-#if SIZEOF_REGISTER == 8
 	case OP_LCONV_TO_I4:
 		MONO_EMIT_NEW_BIALU_IMM (cfg, OP_LSHR_IMM, ins->dreg, ins->sreg1, 0);
 		NULLIFY_INS (ins);
@@ -237,7 +87,7 @@ mono_decompose_opcode (MonoCompile *cfg, MonoInst *ins)
 		break;
 	case OP_ICONV_TO_OVF_U8:
 	case OP_ICONV_TO_OVF_U:
-		MONO_EMIT_NEW_COMPARE_IMM (cfg,ins->sreg1, 0);
+		MONO_EMIT_NEW_LCOMPARE_IMM (cfg,ins->sreg1, 0);
 		MONO_EMIT_NEW_COND_EXC (cfg, LT, "OverflowException");
 		MONO_EMIT_NEW_UNALU (cfg, OP_ZEXT_I4, ins->dreg, ins->sreg1);
 		NULLIFY_INS (ins);
@@ -252,88 +102,93 @@ mono_decompose_opcode (MonoCompile *cfg, MonoInst *ins)
 		NULLIFY_INS (ins);
 		break;
 	case OP_LCONV_TO_OVF_I1:
-		MONO_EMIT_NEW_COMPARE_IMM (cfg, ins->sreg1, 127);
+		MONO_EMIT_NEW_LCOMPARE_IMM (cfg, ins->sreg1, 127);
 		MONO_EMIT_NEW_COND_EXC (cfg, GT, "OverflowException");
-		MONO_EMIT_NEW_COMPARE_IMM (cfg, ins->sreg1, -128);
+		MONO_EMIT_NEW_LCOMPARE_IMM (cfg, ins->sreg1, -128);
 		MONO_EMIT_NEW_COND_EXC (cfg, LT, "OverflowException");
 		MONO_EMIT_NEW_UNALU (cfg, OP_LCONV_TO_I1, ins->dreg, ins->sreg1);
 		NULLIFY_INS (ins);
 		break;
 	case OP_LCONV_TO_OVF_I1_UN:
-		MONO_EMIT_NEW_COMPARE_IMM (cfg, ins->sreg1, 127);
+		MONO_EMIT_NEW_LCOMPARE_IMM (cfg, ins->sreg1, 127);
 		MONO_EMIT_NEW_COND_EXC (cfg, GT_UN, "OverflowException");
 		MONO_EMIT_NEW_UNALU (cfg, OP_LCONV_TO_I1, ins->dreg, ins->sreg1);
 		NULLIFY_INS (ins);
 		break;
 	case OP_LCONV_TO_OVF_U1:
 		/* probe value to be within 0 to 255 */
-		MONO_EMIT_NEW_COMPARE_IMM (cfg, ins->sreg1, 255);
+		MONO_EMIT_NEW_LCOMPARE_IMM (cfg, ins->sreg1, 255);
 		MONO_EMIT_NEW_COND_EXC (cfg, GT_UN, "OverflowException");
 		MONO_EMIT_NEW_BIALU_IMM (cfg, OP_AND_IMM, ins->dreg, ins->sreg1, 0xff);
 		NULLIFY_INS (ins);
 		break;
 	case OP_LCONV_TO_OVF_U1_UN:
 		/* probe value to be within 0 to 255 */
-		MONO_EMIT_NEW_COMPARE_IMM (cfg, ins->sreg1, 255);
+		MONO_EMIT_NEW_LCOMPARE_IMM (cfg, ins->sreg1, 255);
 		MONO_EMIT_NEW_COND_EXC (cfg, GT_UN, "OverflowException");
 		MONO_EMIT_NEW_BIALU_IMM (cfg, OP_AND_IMM, ins->dreg, ins->sreg1, 0xff);
 		NULLIFY_INS (ins);
 		break;
 	case OP_LCONV_TO_OVF_I2:
 		/* Probe value to be within -32768 and 32767 */
-		MONO_EMIT_NEW_COMPARE_IMM (cfg, ins->sreg1, 32767);
+		MONO_EMIT_NEW_LCOMPARE_IMM (cfg, ins->sreg1, 32767);
 		MONO_EMIT_NEW_COND_EXC (cfg, GT, "OverflowException");
-		MONO_EMIT_NEW_COMPARE_IMM (cfg, ins->sreg1, -32768);
+		MONO_EMIT_NEW_LCOMPARE_IMM (cfg, ins->sreg1, -32768);
 		MONO_EMIT_NEW_COND_EXC (cfg, LT, "OverflowException");
 		MONO_EMIT_NEW_UNALU (cfg, OP_LCONV_TO_I2, ins->dreg, ins->sreg1);
 		NULLIFY_INS (ins);
 		break;
 	case OP_LCONV_TO_OVF_I2_UN:
 		/* Probe value to be within 0 and 32767 */
-		MONO_EMIT_NEW_COMPARE_IMM (cfg, ins->sreg1, 32767);
+		MONO_EMIT_NEW_LCOMPARE_IMM (cfg, ins->sreg1, 32767);
 		MONO_EMIT_NEW_COND_EXC (cfg, GT_UN, "OverflowException");
 		MONO_EMIT_NEW_UNALU (cfg, OP_LCONV_TO_I2, ins->dreg, ins->sreg1);
 		NULLIFY_INS (ins);
 		break;
 	case OP_LCONV_TO_OVF_U2:
 		/* Probe value to be within 0 and 65535 */
-		MONO_EMIT_NEW_COMPARE_IMM (cfg, ins->sreg1, 0xffff);
+		MONO_EMIT_NEW_LCOMPARE_IMM (cfg, ins->sreg1, 0xffff);
 		MONO_EMIT_NEW_COND_EXC (cfg, GT_UN, "OverflowException");
 		MONO_EMIT_NEW_BIALU_IMM (cfg, OP_AND_IMM, ins->dreg, ins->sreg1, 0xffff);
 		NULLIFY_INS (ins);
 		break;
 	case OP_LCONV_TO_OVF_U2_UN:
 		/* Probe value to be within 0 and 65535 */
-		MONO_EMIT_NEW_COMPARE_IMM (cfg, ins->sreg1, 0xffff);
+		MONO_EMIT_NEW_LCOMPARE_IMM (cfg, ins->sreg1, 0xffff);
 		MONO_EMIT_NEW_COND_EXC (cfg, GT_UN, "OverflowException");
 		MONO_EMIT_NEW_BIALU_IMM (cfg, OP_AND_IMM, ins->dreg, ins->sreg1, 0xffff);
 		NULLIFY_INS (ins);
 		break;
 	case OP_LCONV_TO_OVF_I4:
-		MONO_EMIT_NEW_COMPARE_IMM (cfg, ins->sreg1, 0x7fffffff);
+		MONO_EMIT_NEW_LCOMPARE_IMM (cfg, ins->sreg1, 0x7fffffff);
 		MONO_EMIT_NEW_COND_EXC (cfg, GT, "OverflowException");
 		/* The int cast is needed for the VS compiler.  See Compiler Warning (level 2) C4146. */
-		MONO_EMIT_NEW_COMPARE_IMM (cfg, ins->sreg1, ((int)-2147483648));
+#if SIZEOF_REGISTER == 8
+		MONO_EMIT_NEW_LCOMPARE_IMM (cfg, ins->sreg1, ((int)-2147483648));
+#else
+		g_assert (COMPILE_LLVM (cfg));
+		MONO_EMIT_NEW_LCOMPARE_IMM (cfg, ins->sreg1, -2147483648LL);
+#endif
 		MONO_EMIT_NEW_COND_EXC (cfg, LT, "OverflowException");
 		MONO_EMIT_NEW_UNALU (cfg, OP_MOVE, ins->dreg, ins->sreg1);
 		NULLIFY_INS (ins);
 		break;
 	case OP_LCONV_TO_OVF_I4_UN:
-		MONO_EMIT_NEW_COMPARE_IMM (cfg, ins->sreg1, 0x7fffffff);
+		MONO_EMIT_NEW_LCOMPARE_IMM (cfg, ins->sreg1, 0x7fffffff);
 		MONO_EMIT_NEW_COND_EXC (cfg, GT_UN, "OverflowException");
 		MONO_EMIT_NEW_UNALU (cfg, OP_MOVE, ins->dreg, ins->sreg1);
 		NULLIFY_INS (ins);
 		break;
 	case OP_LCONV_TO_OVF_U4:
-		MONO_EMIT_NEW_COMPARE_IMM (cfg, ins->sreg1, 0xffffffffUL);
+		MONO_EMIT_NEW_LCOMPARE_IMM (cfg, ins->sreg1, 0xffffffffUL);
 		MONO_EMIT_NEW_COND_EXC (cfg, GT, "OverflowException");
-		MONO_EMIT_NEW_BIALU_IMM (cfg, OP_COMPARE_IMM, -1, ins->sreg1, 0);
+		MONO_EMIT_NEW_LCOMPARE_IMM (cfg, ins->sreg1, 0);
 		MONO_EMIT_NEW_COND_EXC (cfg, LT, "OverflowException");
 		MONO_EMIT_NEW_UNALU (cfg, OP_MOVE, ins->dreg, ins->sreg1);
 		NULLIFY_INS (ins);
 		break;
 	case OP_LCONV_TO_OVF_U4_UN:
-		MONO_EMIT_NEW_COMPARE_IMM (cfg, ins->sreg1, 0xffffffff);
+		MONO_EMIT_NEW_LCOMPARE_IMM (cfg, ins->sreg1, 0xffffffff);
 		MONO_EMIT_NEW_COND_EXC (cfg, GT_UN, "OverflowException");
 		MONO_EMIT_NEW_UNALU (cfg, OP_MOVE, ins->dreg, ins->sreg1);
 		NULLIFY_INS (ins);
@@ -346,23 +201,194 @@ mono_decompose_opcode (MonoCompile *cfg, MonoInst *ins)
 		break;
 	case OP_LCONV_TO_OVF_I_UN:
 	case OP_LCONV_TO_OVF_I8_UN:
-		MONO_EMIT_NEW_BIALU_IMM (cfg, OP_COMPARE_IMM, -1, ins->sreg1, 0);
+		MONO_EMIT_NEW_LCOMPARE_IMM (cfg, ins->sreg1, 0);
 		MONO_EMIT_NEW_COND_EXC (cfg, LT, "OverflowException");
 		MONO_EMIT_NEW_UNALU (cfg, OP_MOVE, ins->dreg, ins->sreg1);
 		NULLIFY_INS (ins);
 		break;
 	case OP_LCONV_TO_OVF_U8:
 	case OP_LCONV_TO_OVF_U:
-		MONO_EMIT_NEW_BIALU_IMM (cfg, OP_COMPARE_IMM, -1, ins->sreg1, 0);
+		MONO_EMIT_NEW_LCOMPARE_IMM (cfg, ins->sreg1, 0);
 		MONO_EMIT_NEW_COND_EXC (cfg, LT, "OverflowException");
 		MONO_EMIT_NEW_UNALU (cfg, OP_MOVE, ins->dreg, ins->sreg1);
 		NULLIFY_INS (ins);
 		break;
+	default:
+		return FALSE;
+	}
+
+	*repl_ins = repl;
+	return TRUE;
+}
+
+/*
+ * mono_decompose_opcode:
+ *
+ *   Decompose complex opcodes into ones closer to opcodes supported by
+ * the given architecture.
+ * Returns a MonoInst which represents the result of the decomposition, and can
+ * be pushed on the IL stack. This is needed because the original instruction is
+ * nullified.
+ * Sets the cfg exception if an opcode is not supported.
+ */
+MonoInst*
+mono_decompose_opcode (MonoCompile *cfg, MonoInst *ins)
+{
+	MonoInst *repl = NULL;
+	int type = ins->type;
+	int dreg = ins->dreg;
+
+	/* FIXME: Instead of = NOP, don't emit the original ins at all */
+
+#ifdef MONO_ARCH_HAVE_DECOMPOSE_OPTS
+	mono_arch_decompose_opts (cfg, ins);
+#endif
+
+	/*
+	 * The code below assumes that we are called immediately after emitting 
+	 * ins. This means we can emit code using the normal code generation
+	 * macros.
+	 */
+	switch (ins->opcode) {
+	/* this doesn't make sense on ppc and other architectures */
+#if !defined(MONO_ARCH_NO_IOV_CHECK)
+	case OP_IADD_OVF:
+		if (COMPILE_LLVM (cfg))
+			break;
+		ins->opcode = OP_IADDCC;
+		MONO_EMIT_NEW_COND_EXC (cfg, IOV, "OverflowException");
+		break;
+	case OP_IADD_OVF_UN:
+		if (COMPILE_LLVM (cfg))
+			break;
+		ins->opcode = OP_IADDCC;
+		MONO_EMIT_NEW_COND_EXC (cfg, IC, "OverflowException");
+		break;
+	case OP_ISUB_OVF:
+		if (COMPILE_LLVM (cfg))
+			break;
+		ins->opcode = OP_ISUBCC;
+		MONO_EMIT_NEW_COND_EXC (cfg, IOV, "OverflowException");
+		break;
+	case OP_ISUB_OVF_UN:
+		if (COMPILE_LLVM (cfg))
+			break;
+		ins->opcode = OP_ISUBCC;
+		MONO_EMIT_NEW_COND_EXC (cfg, IC, "OverflowException");
+		break;
+#endif
+	case OP_ICONV_TO_OVF_I1:
+		MONO_EMIT_NEW_ICOMPARE_IMM (cfg, ins->sreg1, 127);
+		MONO_EMIT_NEW_COND_EXC (cfg, IGT, "OverflowException");
+		MONO_EMIT_NEW_ICOMPARE_IMM (cfg, ins->sreg1, -128);
+		MONO_EMIT_NEW_COND_EXC (cfg, ILT, "OverflowException");
+		MONO_EMIT_NEW_UNALU (cfg, OP_ICONV_TO_I1, ins->dreg, ins->sreg1);
+		NULLIFY_INS (ins);
+		break;
+	case OP_ICONV_TO_OVF_I1_UN:
+		/* probe values between 0 to 127 */
+		MONO_EMIT_NEW_ICOMPARE_IMM (cfg, ins->sreg1, 127);
+		MONO_EMIT_NEW_COND_EXC (cfg, IGT_UN, "OverflowException");
+		MONO_EMIT_NEW_UNALU (cfg, OP_ICONV_TO_I1, ins->dreg, ins->sreg1);
+		NULLIFY_INS (ins);
+		break;
+	case OP_ICONV_TO_OVF_U1:
+	case OP_ICONV_TO_OVF_U1_UN:
+		/* probe value to be within 0 to 255 */
+		MONO_EMIT_NEW_COMPARE_IMM (cfg, ins->sreg1, 255);
+		MONO_EMIT_NEW_COND_EXC (cfg, IGT_UN, "OverflowException");
+		MONO_EMIT_NEW_BIALU_IMM (cfg, OP_IAND_IMM, ins->dreg, ins->sreg1, 0xff);
+		NULLIFY_INS (ins);
+		break;
+	case OP_ICONV_TO_OVF_I2:
+		/* Probe value to be within -32768 and 32767 */
+		MONO_EMIT_NEW_ICOMPARE_IMM (cfg, ins->sreg1, 32767);
+		MONO_EMIT_NEW_COND_EXC (cfg, IGT, "OverflowException");
+		MONO_EMIT_NEW_ICOMPARE_IMM (cfg, ins->sreg1, -32768);
+		MONO_EMIT_NEW_COND_EXC (cfg, ILT, "OverflowException");
+		MONO_EMIT_NEW_UNALU (cfg, OP_ICONV_TO_I2, ins->dreg, ins->sreg1);
+		NULLIFY_INS (ins);
+		break;
+	case OP_ICONV_TO_OVF_I2_UN:
+		/* Convert uint value into short, value within 0 and 32767 */
+		MONO_EMIT_NEW_ICOMPARE_IMM (cfg, ins->sreg1, 32767);
+		MONO_EMIT_NEW_COND_EXC (cfg, IGT_UN, "OverflowException");
+		MONO_EMIT_NEW_UNALU (cfg, OP_ICONV_TO_I2, ins->dreg, ins->sreg1);
+		NULLIFY_INS (ins);
+		break;
+	case OP_ICONV_TO_OVF_U2:
+	case OP_ICONV_TO_OVF_U2_UN:
+		/* Probe value to be within 0 and 65535 */
+		MONO_EMIT_NEW_ICOMPARE_IMM (cfg, ins->sreg1, 0xffff);
+		MONO_EMIT_NEW_COND_EXC (cfg, IGT_UN, "OverflowException");
+		MONO_EMIT_NEW_BIALU_IMM (cfg, OP_IAND_IMM, ins->dreg, ins->sreg1, 0xffff);
+		NULLIFY_INS (ins);
+		break;
+	case OP_ICONV_TO_OVF_U4:
+	case OP_ICONV_TO_OVF_I4_UN:
+#if SIZEOF_REGISTER == 4
+	case OP_ICONV_TO_OVF_U:
+	case OP_ICONV_TO_OVF_I_UN:
+#endif
+		MONO_EMIT_NEW_ICOMPARE_IMM (cfg, ins->sreg1, 0);
+		MONO_EMIT_NEW_COND_EXC (cfg, ILT, "OverflowException");
+		MONO_EMIT_NEW_UNALU (cfg, OP_MOVE, ins->dreg, ins->sreg1);
+		NULLIFY_INS (ins);
+		break;
+	case OP_ICONV_TO_I4:
+	case OP_ICONV_TO_U4:
+	case OP_ICONV_TO_OVF_I4:
+	case OP_ICONV_TO_OVF_U4_UN:
+#if SIZEOF_REGISTER == 4
+	case OP_ICONV_TO_OVF_I:
+	case OP_ICONV_TO_OVF_U_UN:
 #endif
+		ins->opcode = OP_MOVE;
+		break;
+	case OP_ICONV_TO_I:
+#if SIZEOF_REGISTER == 8
+		ins->opcode = OP_SEXT_I4;
+#else
+		ins->opcode = OP_MOVE;
+#endif
+		break;
+	case OP_ICONV_TO_U:
+#if SIZEOF_REGISTER == 8
+		ins->opcode = OP_ZEXT_I4;
+#else
+		ins->opcode = OP_MOVE;
+#endif
+		break;
+
+	case OP_FCONV_TO_R8:
+		ins->opcode = OP_FMOVE;
+		break;
+
+	case OP_FCONV_TO_OVF_I1_UN:
+	case OP_FCONV_TO_OVF_I2_UN:
+	case OP_FCONV_TO_OVF_I4_UN:
+	case OP_FCONV_TO_OVF_I8_UN:
+	case OP_FCONV_TO_OVF_U1_UN:
+	case OP_FCONV_TO_OVF_U2_UN:
+	case OP_FCONV_TO_OVF_U4_UN:
+	case OP_FCONV_TO_OVF_U8_UN:
+	case OP_FCONV_TO_OVF_I_UN:
+	case OP_FCONV_TO_OVF_U_UN:
+		cfg->exception_type = MONO_EXCEPTION_INVALID_PROGRAM;
+		cfg->exception_message = g_strdup_printf ("float conv.ovf.un opcodes not supported.");
+		break;
 
 	default: {
 		MonoJitICallInfo *info;
 
+#if SIZEOF_REGISTER == 8
+		if (decompose_long_opcode (cfg, ins, &repl))
+			break;
+#else
+		if (COMPILE_LLVM (cfg) && decompose_long_opcode (cfg, ins, &repl))
+			break;
+#endif
+
 		info = mono_find_jit_opcode_emulation (ins->opcode);
 		if (info) {
 			MonoInst **args;
@@ -1079,6 +1105,18 @@ mono_decompose_vtype_opts (MonoCompile *cfg)
 
 					EMIT_NEW_VARLOADA_VREG (cfg, dest, ins->dreg, &ins->klass->byval_arg);
 					mini_emit_initobj (cfg, dest, NULL, ins->klass);
+					
+					if (cfg->compute_gc_maps) {
+						MonoInst *tmp;
+
+						/* 
+						 * Tell the GC map code that the vtype is considered live after
+						 * the initialization.
+						 */
+						MONO_INST_NEW (cfg, tmp, OP_GC_LIVENESS_DEF);
+						tmp->inst_c1 = ins->dreg;
+						MONO_ADD_INS (cfg->cbb, tmp);
+					}
 					break;
 				case OP_STOREV_MEMBASE: {
 					src_var = get_vreg_to_inst (cfg, ins->sreg1);
diff --git a/mono/mini/dominators.c b/mono/mini/dominators.c
index 5024e06..6dbfa3e 100644
--- a/mono/mini/dominators.c
+++ b/mono/mini/dominators.c
@@ -384,6 +384,9 @@ mono_compute_natural_loops (MonoCompile *cfg)
 			/* The loop body start is the first bblock in the order they will be emitted */
 			MonoBasicBlock *h = cfg->bblocks [i];
 			MonoBasicBlock *body_start = h;
+#if defined(__native_client_codegen__)
+			MonoInst *inst;
+#endif
 			GList *l;
 
 			for (l = h->loop_blocks; l; l = l->next) {
@@ -394,6 +397,12 @@ mono_compute_natural_loops (MonoCompile *cfg)
 				}
 			}
 
+#if defined(__native_client_codegen__)
+			/* Instrument the loop (GC back branch safe point) */
+			MONO_INST_NEW (cfg, inst, OP_NACL_GC_SAFE_POINT);
+			inst->dreg = mono_alloc_dreg (cfg, STACK_I4);
+			mono_bblock_insert_before_ins (body_start, NULL, inst);
+#endif
 			body_start->loop_body_start = 1;
 		}
 	}
diff --git a/mono/mini/driver.c b/mono/mini/driver.c
index fa38cb7..b6592dd 100644
--- a/mono/mini/driver.c
+++ b/mono/mini/driver.c
@@ -115,7 +115,10 @@ opt_funcs [sizeof (int) * 8] = {
 };
 
 #ifdef __native_client_codegen__
-extern guint8 nacl_align_byte;
+extern gint8 nacl_align_byte;
+#endif
+#ifdef __native_client__
+extern char *nacl_mono_path;
 #endif
 
 #define DEFAULT_OPTIMIZATIONS (	\
@@ -313,6 +316,7 @@ opt_sets [] = {
        MONO_OPT_BRANCH | MONO_OPT_PEEPHOLE | MONO_OPT_LINEARS | MONO_OPT_CFOLD,
        MONO_OPT_BRANCH | MONO_OPT_PEEPHOLE | MONO_OPT_LINEARS | MONO_OPT_COPYPROP | MONO_OPT_CONSPROP | MONO_OPT_DEADCE,
        MONO_OPT_BRANCH | MONO_OPT_PEEPHOLE | MONO_OPT_LINEARS | MONO_OPT_COPYPROP | MONO_OPT_CONSPROP | MONO_OPT_DEADCE | MONO_OPT_LOOP | MONO_OPT_INLINE | MONO_OPT_INTRINS,
+       MONO_OPT_BRANCH | MONO_OPT_PEEPHOLE | MONO_OPT_LINEARS | MONO_OPT_COPYPROP | MONO_OPT_CONSPROP | MONO_OPT_DEADCE | MONO_OPT_LOOP | MONO_OPT_INLINE | MONO_OPT_INTRINS | MONO_OPT_TAILC,
        MONO_OPT_BRANCH | MONO_OPT_PEEPHOLE | MONO_OPT_LINEARS | MONO_OPT_COPYPROP | MONO_OPT_CONSPROP | MONO_OPT_DEADCE | MONO_OPT_LOOP | MONO_OPT_INLINE | MONO_OPT_INTRINS | MONO_OPT_SSA,
        MONO_OPT_BRANCH | MONO_OPT_PEEPHOLE | MONO_OPT_LINEARS | MONO_OPT_COPYPROP | MONO_OPT_CONSPROP | MONO_OPT_DEADCE | MONO_OPT_LOOP | MONO_OPT_INLINE | MONO_OPT_INTRINS | MONO_OPT_EXCEPTION,
        MONO_OPT_BRANCH | MONO_OPT_PEEPHOLE | MONO_OPT_LINEARS | MONO_OPT_COPYPROP | MONO_OPT_CONSPROP | MONO_OPT_DEADCE | MONO_OPT_LOOP | MONO_OPT_INLINE | MONO_OPT_INTRINS | MONO_OPT_EXCEPTION | MONO_OPT_CMOV,
@@ -1085,7 +1089,7 @@ mini_usage_jitdeveloper (void)
 		 "    --stats                Print statistics about the JIT operations\n"
 		 "    --wapi=hps|semdel|seminfo IO-layer maintenance\n"
 		 "    --inject-async-exc METHOD OFFSET Inject an asynchronous exception at METHOD\n"
-		 "    --verify-all           Run the verifier on all methods\n"
+		 "    --verify-all           Run the verifier on all assemblies and methods\n"
 		 "    --full-aot             Avoid JITting any code\n"
 		 "    --agent=ASSEMBLY[:ARG] Loads the specific agent assembly and executes its Main method with the given argument before loading the main assembly.\n"
 		 "    --no-x86-stack-align   Don't align stack on x86\n"
@@ -1244,8 +1248,10 @@ BOOL APIENTRY DllMain (HMODULE module_handle, DWORD reason, LPVOID reserved)
 		mono_install_runtime_load (mini_init);
 		break;
 	case DLL_PROCESS_DETACH:
+#ifdef ENABLE_COREE
 		if (coree_module_handle)
 			FreeLibrary (coree_module_handle);
+#endif
 		break;
 	}
 	return TRUE;
@@ -1437,7 +1443,11 @@ mono_main (int argc, char* argv[])
 				GString *path = g_string_new (argv [0]);
 				g_string_append (path, "-sgen");
 				argv [0] = path->str;
+#ifdef HAVE_EXECVP
 				execvp (path->str, argv);
+#else
+				fprintf (stderr, "Error: --gc=<NAME> option not supported on this platform.\n");
+#endif
 			}
 		} else if (strcmp (argv [i], "--gc=boehm") == 0) {
 			if (!strcmp (mono_gc_get_gc_name (), "sgen")) {
@@ -1449,7 +1459,11 @@ mono_main (int argc, char* argv[])
 				}
 				*p = 0;
 				argv [0] = p;
+#ifdef HAVE_EXECVP
 				execvp (p, argv);
+#else
+				fprintf (stderr, "Error: --gc=<NAME> option not supported on this platform.\n");
+#endif
 			}
 		} else if (strcmp (argv [i], "--config") == 0) {
 			if (i +1 >= argc){
@@ -1635,7 +1649,11 @@ mono_main (int argc, char* argv[])
 			mono_use_llvm = FALSE;
 #ifdef __native_client_codegen__
 		} else if (strcmp (argv [i], "--nacl-align-mask-off") == 0){
-			nacl_align_byte = 0xff;	
+			nacl_align_byte = -1; /* 0xff */
+#endif
+#ifdef __native_client__
+		} else if (strcmp (argv [i], "--nacl-mono-path") == 0){
+			nacl_mono_path = g_strdup(argv[++i]);
 #endif
 		} else {
 			fprintf (stderr, "Unknown command line option: '%s'\n", argv [i]);
@@ -1646,7 +1664,7 @@ mono_main (int argc, char* argv[])
 #ifdef __native_client_codegen__
 	if (getenv ("MONO_NACL_ALIGN_MASK_OFF"))
 	{
-		nacl_align_byte = 0xff;
+		nacl_align_byte = -1; /* 0xff */
 	}
 #endif
 
@@ -1698,12 +1716,6 @@ mono_main (int argc, char* argv[])
 	}
 #endif
 
-	/*
-	 * This must be called before mono_debug_init(), because the
-	 * latter registers GC roots.
-	 */
-	mono_gc_base_init ();
-
 	if (action == DO_DEBUGGER) {
 		enable_debugging = TRUE;
 
diff --git a/mono/mini/exceptions-alpha.c b/mono/mini/exceptions-alpha.c
index 598cc25..24ceaa5 100644
--- a/mono/mini/exceptions-alpha.c
+++ b/mono/mini/exceptions-alpha.c
@@ -782,6 +782,7 @@ mono_arch_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls,
                          MonoJitInfo *res, MonoJitInfo *prev_ji,
 						 MonoContext *ctx,
                          MonoContext *new_ctx, MonoLMF **lmf,
+						 mgreg_t **save_locations,
                          gboolean *managed)
 {
   MonoJitInfo *ji;
diff --git a/mono/mini/exceptions-amd64.c b/mono/mini/exceptions-amd64.c
index e41985a..cc883af 100644
--- a/mono/mini/exceptions-amd64.c
+++ b/mono/mini/exceptions-amd64.c
@@ -179,7 +179,9 @@ mono_arch_get_restore_context (MonoTrampInfo **info, gboolean aot)
 	amd64_mov_reg_membase (code, AMD64_R12, AMD64_R11,  G_STRUCT_OFFSET (MonoContext, r12), 8);
 	amd64_mov_reg_membase (code, AMD64_R13, AMD64_R11,  G_STRUCT_OFFSET (MonoContext, r13), 8);
 	amd64_mov_reg_membase (code, AMD64_R14, AMD64_R11,  G_STRUCT_OFFSET (MonoContext, r14), 8);
+#if !defined(__native_client_codegen__)
 	amd64_mov_reg_membase (code, AMD64_R15, AMD64_R11,  G_STRUCT_OFFSET (MonoContext, r15), 8);
+#endif
 
 	if (mono_running_on_valgrind ()) {
 		/* Prevent 'Address 0x... is just below the stack ptr.' errors */
@@ -195,6 +197,8 @@ mono_arch_get_restore_context (MonoTrampInfo **info, gboolean aot)
 	/* jump to the saved IP */
 	amd64_jump_reg (code, AMD64_R11);
 
+	nacl_global_codeman_validate(&start, 256, &code);
+
 	mono_arch_flush_icache (start, code - start);
 
 	if (info)
@@ -219,8 +223,9 @@ mono_arch_get_call_filter (MonoTrampInfo **info, gboolean aot)
 	guint32 pos;
 	MonoJumpInfo *ji = NULL;
 	GSList *unwind_ops = NULL;
+	const guint kMaxCodeSize = NACL_SIZE (128, 256);
 
-	start = code = mono_global_codeman_reserve (128);
+	start = code = mono_global_codeman_reserve (kMaxCodeSize);
 
 	/* call_filter (MonoContext *ctx, unsigned long eip) */
 	code = start;
@@ -252,7 +257,9 @@ mono_arch_get_call_filter (MonoTrampInfo **info, gboolean aot)
 	amd64_mov_reg_membase (code, AMD64_R12, AMD64_ARG_REG1, G_STRUCT_OFFSET (MonoContext, r12), 8);
 	amd64_mov_reg_membase (code, AMD64_R13, AMD64_ARG_REG1, G_STRUCT_OFFSET (MonoContext, r13), 8);
 	amd64_mov_reg_membase (code, AMD64_R14, AMD64_ARG_REG1, G_STRUCT_OFFSET (MonoContext, r14), 8);
+#if !defined(__native_client_codegen__)
 	amd64_mov_reg_membase (code, AMD64_R15, AMD64_ARG_REG1, G_STRUCT_OFFSET (MonoContext, r15), 8);
+#endif
 #ifdef TARGET_WIN32
 	amd64_mov_reg_membase (code, AMD64_RDI, AMD64_ARG_REG1,  G_STRUCT_OFFSET (MonoContext, rdi), 8);
 	amd64_mov_reg_membase (code, AMD64_RSI, AMD64_ARG_REG1,  G_STRUCT_OFFSET (MonoContext, rsi), 8);
@@ -275,7 +282,9 @@ mono_arch_get_call_filter (MonoTrampInfo **info, gboolean aot)
 	amd64_leave (code);
 	amd64_ret (code);
 
-	g_assert ((code - start) < 128);
+	g_assert ((code - start) < kMaxCodeSize);
+
+	nacl_global_codeman_validate(&start, kMaxCodeSize, &code);
 
 	mono_arch_flush_icache (start, code - start);
 
@@ -405,10 +414,10 @@ get_throw_trampoline (MonoTrampInfo **info, gboolean rethrow, gboolean corlib, g
 	guint8 *code;
 	MonoJumpInfo *ji = NULL;
 	GSList *unwind_ops = NULL;
-	int i, buf_size, stack_size, arg_offsets [16], regs_offset;
+	int i, stack_size, arg_offsets [16], regs_offset;
+	const guint kMaxCodeSize = NACL_SIZE (256, 512);
 
-	buf_size = 256;
-	start = code = mono_global_codeman_reserve (buf_size);
+	start = code = mono_global_codeman_reserve (kMaxCodeSize);
 
 	/* The stack is unaligned on entry */
 	stack_size = 192 + 8;
@@ -429,37 +438,37 @@ get_throw_trampoline (MonoTrampInfo **info, gboolean rethrow, gboolean corlib, g
 	 */
 
 	arg_offsets [0] = 0;
-	arg_offsets [1] = sizeof (gpointer);
-	arg_offsets [2] = sizeof (gpointer) * 2;
-	arg_offsets [3] = sizeof (gpointer) * 3;
-	regs_offset = sizeof (gpointer) * 4;
+	arg_offsets [1] = sizeof(mgreg_t);
+	arg_offsets [2] = sizeof(mgreg_t) * 2;
+	arg_offsets [3] = sizeof(mgreg_t) * 3;
+	regs_offset = sizeof(mgreg_t) * 4;
 
 	/* Save registers */
 	for (i = 0; i < AMD64_NREG; ++i)
 		if (i != AMD64_RSP)
-			amd64_mov_membase_reg (code, AMD64_RSP, regs_offset + (i * sizeof (gpointer)), i, 8);
+			amd64_mov_membase_reg (code, AMD64_RSP, regs_offset + (i * sizeof(mgreg_t)), i, sizeof(mgreg_t));
 	/* Save RSP */
-	amd64_lea_membase (code, AMD64_RAX, AMD64_RSP, stack_size + sizeof (gpointer));
-	amd64_mov_membase_reg (code, AMD64_RSP, regs_offset + (AMD64_RSP * sizeof (gpointer)), X86_EAX, 8);
+	amd64_lea_membase (code, AMD64_RAX, AMD64_RSP, stack_size + sizeof(mgreg_t));
+	amd64_mov_membase_reg (code, AMD64_RSP, regs_offset + (AMD64_RSP * sizeof(mgreg_t)), X86_EAX, sizeof(mgreg_t));
 	/* Set arg1 == regs */
 	amd64_lea_membase (code, AMD64_RAX, AMD64_RSP, regs_offset);
-	amd64_mov_membase_reg (code, AMD64_RSP, arg_offsets [0], AMD64_RAX, 8);
+	amd64_mov_membase_reg (code, AMD64_RSP, arg_offsets [0], AMD64_RAX, sizeof(mgreg_t));
 	/* Set arg2 == eip */
 	if (llvm_abs)
 		amd64_alu_reg_reg (code, X86_XOR, AMD64_RAX, AMD64_RAX);
 	else
-		amd64_mov_reg_membase (code, AMD64_RAX, AMD64_RSP, stack_size, 8);
-	amd64_mov_membase_reg (code, AMD64_RSP, arg_offsets [1], AMD64_RAX, 8);
+		amd64_mov_reg_membase (code, AMD64_RAX, AMD64_RSP, stack_size, sizeof(mgreg_t));
+	amd64_mov_membase_reg (code, AMD64_RSP, arg_offsets [1], AMD64_RAX, sizeof(mgreg_t));
 	/* Set arg3 == exc/ex_token_index */
 	if (resume_unwind)
-		amd64_mov_membase_imm (code, AMD64_RSP, arg_offsets [2], 0, 8);
+		amd64_mov_membase_imm (code, AMD64_RSP, arg_offsets [2], 0, sizeof(mgreg_t));
 	else
-		amd64_mov_membase_reg (code, AMD64_RSP, arg_offsets [2], AMD64_ARG_REG1, 8);
+		amd64_mov_membase_reg (code, AMD64_RSP, arg_offsets [2], AMD64_ARG_REG1, sizeof(mgreg_t));
 	/* Set arg4 == rethrow/pc offset */
 	if (resume_unwind) {
-		amd64_mov_membase_imm (code, AMD64_RSP, arg_offsets [3], 0, 8);
+		amd64_mov_membase_imm (code, AMD64_RSP, arg_offsets [3], 0, sizeof(mgreg_t));
 	} else if (corlib) {
-		amd64_mov_membase_reg (code, AMD64_RSP, arg_offsets [3], AMD64_ARG_REG2, 8);
+		amd64_mov_membase_reg (code, AMD64_RSP, arg_offsets [3], AMD64_ARG_REG2, sizeof(mgreg_t));
 		if (llvm_abs)
 			/* 
 			 * The caller is LLVM code which passes the absolute address not a pc offset,
@@ -468,11 +477,11 @@ get_throw_trampoline (MonoTrampInfo **info, gboolean rethrow, gboolean corlib, g
 			 */
 			amd64_neg_membase (code, AMD64_RSP, arg_offsets [3]);
 	} else {
-		amd64_mov_membase_imm (code, AMD64_RSP, arg_offsets [3], rethrow, 8);
+		amd64_mov_membase_imm (code, AMD64_RSP, arg_offsets [3], rethrow, sizeof(mgreg_t));
 	}
 
 	if (aot) {
-		ji = mono_patch_info_list_prepend (ji, code - start, MONO_PATCH_INFO_JIT_ICALL_ADDR, corlib ? (llvm_abs ? "mono_amd64_throw_corlib_exception_abs" : "mono_amd64_throw_corlib_exception") : "mono_amd64_throw_exception");
+		ji = mono_patch_info_list_prepend (ji, code - start, MONO_PATCH_INFO_JIT_ICALL_ADDR, corlib ? "mono_amd64_throw_corlib_exception" : "mono_amd64_throw_exception");
 		amd64_mov_reg_membase (code, AMD64_R11, AMD64_RIP, 0, 8);
 	} else {
 		amd64_mov_reg_imm (code, AMD64_R11, resume_unwind ? (mono_amd64_resume_unwind) : (corlib ? (gpointer)mono_amd64_throw_corlib_exception : (gpointer)mono_amd64_throw_exception));
@@ -482,7 +491,9 @@ get_throw_trampoline (MonoTrampInfo **info, gboolean rethrow, gboolean corlib, g
 
 	mono_arch_flush_icache (start, code - start);
 
-	g_assert ((code - start) < buf_size);
+	g_assert ((code - start) < kMaxCodeSize);
+
+	nacl_global_codeman_validate(&start, kMaxCodeSize, &code);
 
 	if (info)
 		*info = mono_tramp_info_create (g_strdup (tramp_name), start, code - start, ji, unwind_ops);
@@ -527,19 +538,18 @@ mono_arch_get_throw_corlib_exception (MonoTrampInfo **info, gboolean aot)
 }
 
 /*
- * mono_arch_find_jit_info_ext:
+ * mono_arch_find_jit_info:
  *
  * This function is used to gather information from @ctx, and store it in @frame_info.
  * It unwinds one stack frame, and stores the resulting context into @new_ctx. @lmf
  * is modified if needed.
  * Returns TRUE on success, FALSE otherwise.
- * This function is a version of mono_arch_find_jit_info () where all the results are
- * returned in a StackFrameInfo structure.
  */
 gboolean
-mono_arch_find_jit_info_ext (MonoDomain *domain, MonoJitTlsData *jit_tls, 
+mono_arch_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls, 
 							 MonoJitInfo *ji, MonoContext *ctx, 
-							 MonoContext *new_ctx, MonoLMF **lmf, 
+							 MonoContext *new_ctx, MonoLMF **lmf,
+							 mgreg_t **save_locations,
 							 StackFrameInfo *frame)
 {
 	gpointer ip = MONO_CONTEXT_GET_IP (ctx);
@@ -551,7 +561,7 @@ mono_arch_find_jit_info_ext (MonoDomain *domain, MonoJitTlsData *jit_tls,
 	*new_ctx = *ctx;
 
 	if (ji != NULL) {
-		gssize regs [MONO_MAX_IREGS + 1];
+		mgreg_t regs [MONO_MAX_IREGS + 1];
 		guint8 *cfa;
 		guint32 unwind_info_len;
 		guint8 *unwind_info;
@@ -565,6 +575,9 @@ mono_arch_find_jit_info_ext (MonoDomain *domain, MonoJitTlsData *jit_tls,
 			unwind_info = mono_aot_get_unwind_info (ji, &unwind_info_len);
 		else
 			unwind_info = mono_get_cached_unwind_info (ji->used_regs, &unwind_info_len);
+
+		frame->unwind_info = unwind_info;
+		frame->unwind_info_len = unwind_info_len;
  
 		regs [AMD64_RAX] = new_ctx->rax;
 		regs [AMD64_RBX] = new_ctx->rbx;
@@ -582,7 +595,8 @@ mono_arch_find_jit_info_ext (MonoDomain *domain, MonoJitTlsData *jit_tls,
 
 		mono_unwind_frame (unwind_info, unwind_info_len, ji->code_start, 
 						   (guint8*)ji->code_start + ji->code_size,
-						   ip, regs, MONO_MAX_IREGS + 1, &cfa);
+						   ip, regs, MONO_MAX_IREGS + 1, 
+						   save_locations, MONO_MAX_IREGS, &cfa);
 
 		new_ctx->rax = regs [AMD64_RAX];
 		new_ctx->rbx = regs [AMD64_RBX];
@@ -599,7 +613,7 @@ mono_arch_find_jit_info_ext (MonoDomain *domain, MonoJitTlsData *jit_tls,
 		new_ctx->r15 = regs [AMD64_R15];
  
 		/* The CFA becomes the new SP value */
-		new_ctx->rsp = (gssize)cfa;
+		new_ctx->rsp = (mgreg_t)cfa;
 
 		/* Adjust IP */
 		new_ctx->rip --;
@@ -652,14 +666,18 @@ mono_arch_find_jit_info_ext (MonoDomain *domain, MonoJitTlsData *jit_tls,
 			 * The rsp field is set just before the call which transitioned to native 
 			 * code. Obtain the rip from the stack.
 			 */
-			rip = *(guint64*)((*lmf)->rsp - sizeof (gpointer));
+			rip = *(guint64*)((*lmf)->rsp - sizeof(mgreg_t));
 		}
 
 		ji = mini_jit_info_table_find (domain, (gpointer)rip, NULL);
-		if (!ji) {
-			// FIXME: This can happen with multiple appdomains (bug #444383)
+		/*
+		 * FIXME: ji == NULL can happen when a managed-to-native wrapper is interrupted
+		 * in the soft debugger suspend code, since (*lmf)->rsp no longer points to the
+		 * return address.
+		 */
+		//g_assert (ji);
+		if (!ji)
 			return FALSE;
-		}
 
 		/* Adjust IP */
 		rip --;
@@ -766,16 +784,13 @@ mono_arch_handle_exception (void *sigctx, gpointer obj, gboolean test_only)
 #endif
 }
 
-#if defined(MONO_ARCH_USE_SIGACTION) && defined(UCONTEXT_GREGS)
-static inline guint64*
-gregs_from_ucontext (ucontext_t *ctx)
-{
-	return (guint64 *) UCONTEXT_GREGS (ctx);
-}
-#endif
 void
 mono_arch_sigctx_to_monoctx (void *sigctx, MonoContext *mctx)
 {
+#if defined(__native_client_codegen__) || defined(__native_client__)
+	printf("WARNING: mono_arch_sigctx_to_monoctx() called!\n");
+#endif
+
 #if defined(MONO_ARCH_USE_SIGACTION)
 	ucontext_t *ctx = (ucontext_t*)sigctx;
 
@@ -814,6 +829,10 @@ mono_arch_sigctx_to_monoctx (void *sigctx, MonoContext *mctx)
 void
 mono_arch_monoctx_to_sigctx (MonoContext *mctx, void *sigctx)
 {
+#if defined(__native_client__) || defined(__native_client_codegen__)
+  printf("WARNING: mono_arch_monoctx_to_sigctx() called!\n");
+#endif
+
 #if defined(MONO_ARCH_USE_SIGACTION)
 	ucontext_t *ctx = (ucontext_t*)sigctx;
 
@@ -915,8 +934,7 @@ mono_arch_handle_altstack_exception (void *sigctx, gpointer fault_addr, gboolean
 #if defined(MONO_ARCH_USE_SIGACTION) && defined(UCONTEXT_GREGS)
 	MonoException *exc = NULL;
 	ucontext_t *ctx = (ucontext_t*)sigctx;
-	guint64 *gregs = gregs_from_ucontext (ctx);
-	MonoJitInfo *ji = mini_jit_info_table_find (mono_domain_get (), (gpointer)gregs [REG_RIP], NULL);
+	MonoJitInfo *ji = mini_jit_info_table_find (mono_domain_get (), (gpointer)UCONTEXT_REG_RIP (sigctx), NULL);
 	gpointer *sp;
 	int frame_size;
 
@@ -936,18 +954,18 @@ mono_arch_handle_altstack_exception (void *sigctx, gpointer fault_addr, gboolean
 	frame_size = sizeof (ucontext_t) + sizeof (gpointer) * 4 + 128;
 	frame_size += 15;
 	frame_size &= ~15;
-	sp = (gpointer)(gregs [REG_RSP] & ~15);
+	sp = (gpointer)(UCONTEXT_REG_RSP (sigctx) & ~15);
 	sp = (gpointer)((char*)sp - frame_size);
 	/* the arguments must be aligned */
-	sp [-1] = (gpointer)gregs [REG_RIP];
+	sp [-1] = (gpointer)UCONTEXT_REG_RIP (sigctx);
 	/* may need to adjust pointers in the new struct copy, depending on the OS */
 	memcpy (sp + 4, ctx, sizeof (ucontext_t));
 	/* at the return form the signal handler execution starts in altstack_handle_and_restore() */
-	gregs [REG_RIP] = (unsigned long)altstack_handle_and_restore;
-	gregs [REG_RSP] = (unsigned long)(sp - 1);
-	gregs [REG_RDI] = (unsigned long)(sp + 4);
-	gregs [REG_RSI] = (guint64)exc;
-	gregs [REG_RDX] = stack_ovf;
+	UCONTEXT_REG_RIP (sigctx) = (unsigned long)altstack_handle_and_restore;
+	UCONTEXT_REG_RSP (sigctx) = (unsigned long)(sp - 1);
+	UCONTEXT_REG_RDI (sigctx) = (unsigned long)(sp + 4);
+	UCONTEXT_REG_RSI (sigctx) = (guint64)exc;
+	UCONTEXT_REG_RDX (sigctx) = stack_ovf;
 #endif
 }
 
@@ -972,8 +990,9 @@ mono_arch_get_throw_pending_exception (MonoTrampInfo **info, gboolean aot)
 	gpointer throw_trampoline;
 	MonoJumpInfo *ji = NULL;
 	GSList *unwind_ops = NULL;
+	const guint kMaxCodeSize = NACL_SIZE (128, 256);
 
-	start = code = mono_global_codeman_reserve (128);
+	start = code = mono_global_codeman_reserve (kMaxCodeSize);
 
 	/* We are in the frame of a managed method after a call */
 	/* 
@@ -1066,7 +1085,9 @@ mono_arch_get_throw_pending_exception (MonoTrampInfo **info, gboolean aot)
 	/* Return to original code */
 	amd64_jump_reg (code, AMD64_R11);
 
-	g_assert ((code - start) < 128);
+	g_assert ((code - start) < kMaxCodeSize);
+
+	nacl_global_codeman_validate(&start, kMaxCodeSize, &code);
 
 	if (info)
 		*info = mono_tramp_info_create (g_strdup_printf ("throw_pending_exception"), start, code - start, ji, unwind_ops);
@@ -1107,26 +1128,55 @@ mono_arch_notify_pending_exc (void)
 	*(gpointer*)(lmf->rsp - 8) = throw_pending_exception;
 }
 
+GSList*
+mono_amd64_get_exception_trampolines (gboolean aot)
+{
+	MonoTrampInfo *info;
+	GSList *tramps = NULL;
+
+	mono_arch_get_throw_pending_exception (&info, aot);
+	tramps = g_slist_prepend (tramps, info);
+
+	/* LLVM needs different throw trampolines */
+	get_throw_trampoline (&info, FALSE, TRUE, FALSE, FALSE, "llvm_throw_corlib_exception_trampoline", aot);
+	tramps = g_slist_prepend (tramps, info);
+
+	get_throw_trampoline (&info, FALSE, TRUE, TRUE, FALSE, "llvm_throw_corlib_exception_abs_trampoline", aot);
+	tramps = g_slist_prepend (tramps, info);
+
+	get_throw_trampoline (&info, FALSE, TRUE, TRUE, TRUE, "llvm_resume_unwind_trampoline", FALSE);
+	tramps = g_slist_prepend (tramps, info);
+
+	return tramps;
+}
+
 void
 mono_arch_exceptions_init (void)
 {
-	guint8 *tramp;
+	GSList *tramps, *l;
+	gpointer tramp;
 
 	if (mono_aot_only) {
 		throw_pending_exception = mono_aot_get_trampoline ("throw_pending_exception");
+		tramp = mono_aot_get_trampoline ("llvm_throw_corlib_exception_trampoline");
+		mono_register_jit_icall (tramp, "llvm_throw_corlib_exception_trampoline", NULL, TRUE);
+		tramp = mono_aot_get_trampoline ("llvm_throw_corlib_exception_abs_trampoline");
+		mono_register_jit_icall (tramp, "llvm_throw_corlib_exception_abs_trampoline", NULL, TRUE);
+		tramp = mono_aot_get_trampoline ("llvm_resume_unwind_trampoline");
+		mono_register_jit_icall (tramp, "llvm_resume_unwind_trampoline", NULL, TRUE);
 	} else {
 		/* Call this to avoid initialization races */
 		throw_pending_exception = mono_arch_get_throw_pending_exception (NULL, FALSE);
 
-		/* LLVM needs different throw trampolines */
-		tramp = get_throw_trampoline (NULL, FALSE, TRUE, FALSE, FALSE, "llvm_throw_corlib_exception_trampoline", FALSE);
-		mono_register_jit_icall (tramp, "llvm_throw_corlib_exception_trampoline", NULL, TRUE);
+		tramps = mono_amd64_get_exception_trampolines (FALSE);
+		for (l = tramps; l; l = l->next) {
+			MonoTrampInfo *info = l->data;
 
-		tramp = get_throw_trampoline (NULL, FALSE, TRUE, TRUE, FALSE, "llvm_throw_corlib_exception_abs_trampoline", FALSE);
-		mono_register_jit_icall (tramp, "llvm_throw_corlib_exception_abs_trampoline", NULL, TRUE);
-
-		tramp = get_throw_trampoline (NULL, FALSE, TRUE, TRUE, TRUE, "llvm_resume_unwind_trampoline", FALSE);
-		mono_register_jit_icall (tramp, "llvm_resume_unwind_trampoline", NULL, TRUE);
+			mono_register_jit_icall (info->code, g_strdup (info->name), NULL, TRUE);
+			mono_save_trampoline_xdebug_info (info);
+			mono_tramp_info_free (info);
+		}
+		g_slist_free (tramps);
 	}
 }
 
@@ -1379,10 +1429,12 @@ mono_tasklets_arch_restore (void)
 	static guint8* saved = NULL;
 	guint8 *code, *start;
 	int cont_reg = AMD64_R9; /* register usable on both call conventions */
+	const guint kMaxCodeSize = NACL_SIZE (64, 128);
+	
 
 	if (saved)
 		return (MonoContinuationRestore)saved;
-	code = start = mono_global_codeman_reserve (64);
+	code = start = mono_global_codeman_reserve (kMaxCodeSize);
 	/* the signature is: restore (MonoContinuation *cont, int state, MonoLMF **lmf_addr) */
 	/* cont is in AMD64_ARG_REG1 ($rcx or $rdi)
 	 * state is in AMD64_ARG_REG2 ($rdx or $rsi)
@@ -1408,7 +1460,9 @@ mono_tasklets_arch_restore (void)
 	amd64_mov_reg_membase (code, AMD64_R12, AMD64_RCX, G_STRUCT_OFFSET (MonoLMF, r12), 8);
 	amd64_mov_reg_membase (code, AMD64_R13, AMD64_RCX, G_STRUCT_OFFSET (MonoLMF, r13), 8);
 	amd64_mov_reg_membase (code, AMD64_R14, AMD64_RCX, G_STRUCT_OFFSET (MonoLMF, r14), 8);
+#if !defined(__native_client_codegen__)
 	amd64_mov_reg_membase (code, AMD64_R15, AMD64_RCX, G_STRUCT_OFFSET (MonoLMF, r15), 8);
+#endif
 #ifdef TARGET_WIN32
 	amd64_mov_reg_membase (code, AMD64_RDI, AMD64_RCX, G_STRUCT_OFFSET (MonoLMF, rdi), 8);
 	amd64_mov_reg_membase (code, AMD64_RSI, AMD64_RCX, G_STRUCT_OFFSET (MonoLMF, rsi), 8);
@@ -1421,9 +1475,28 @@ mono_tasklets_arch_restore (void)
 
 	/* state is already in rax */
 	amd64_jump_membase (code, cont_reg, G_STRUCT_OFFSET (MonoContinuation, return_ip));
-	g_assert ((code - start) <= 64);
+	g_assert ((code - start) <= kMaxCodeSize);
+
+	nacl_global_codeman_validate(&start, kMaxCodeSize, &code);
+
 	saved = start;
 	return (MonoContinuationRestore)saved;
 }
 #endif
 
+/*
+ * mono_arch_setup_resume_sighandler_ctx:
+ *
+ *   Setup CTX so execution continues at FUNC.
+ */
+void
+mono_arch_setup_resume_sighandler_ctx (MonoContext *ctx, gpointer func)
+{
+	/* 
+	 * When resuming from a signal handler, the stack should be misaligned, just like right after
+	 * a call.
+	 */
+	if ((((guint64)MONO_CONTEXT_GET_SP (ctx)) % 16) == 0)
+		MONO_CONTEXT_SET_SP (ctx, (guint64)MONO_CONTEXT_GET_SP (ctx) - 8);
+	MONO_CONTEXT_SET_IP (ctx, func);
+}
diff --git a/mono/mini/exceptions-arm.c b/mono/mini/exceptions-arm.c
index 603cb56..b2d67c7 100644
--- a/mono/mini/exceptions-arm.c
+++ b/mono/mini/exceptions-arm.c
@@ -12,9 +12,13 @@
 #include <glib.h>
 #include <signal.h>
 #include <string.h>
+
+#ifndef MONO_CROSS_COMPILE
 #ifdef HAVE_ASM_SIGCONTEXT_H
 #include <asm/sigcontext.h>
 #endif  /* def HAVE_ASM_SIGCONTEXT_H */
+#endif
+
 #ifdef HAVE_UCONTEXT_H
 #include <ucontext.h>
 #endif  /* def HAVE_UCONTEXT_H */
@@ -57,10 +61,10 @@ mono_arch_get_restore_context (MonoTrampInfo **info, gboolean aot)
 
 	/* move eip to PC */
 	ARM_LDR_IMM (code, ARMREG_IP, ctx_reg, G_STRUCT_OFFSET (MonoContext, eip));
-	ARM_STR_IMM (code, ARMREG_IP, ctx_reg, G_STRUCT_OFFSET (MonoContext, regs) + (ARMREG_PC * 4));
+	ARM_STR_IMM (code, ARMREG_IP, ctx_reg, G_STRUCT_OFFSET (MonoContext, regs) + (ARMREG_PC * sizeof (mgreg_t)));
 	/* move sp to SP */
 	ARM_LDR_IMM (code, ARMREG_IP, ctx_reg, G_STRUCT_OFFSET (MonoContext, esp));
-	ARM_STR_IMM (code, ARMREG_IP, ctx_reg, G_STRUCT_OFFSET (MonoContext, regs) + (ARMREG_SP * 4));
+	ARM_STR_IMM (code, ARMREG_IP, ctx_reg, G_STRUCT_OFFSET (MonoContext, regs) + (ARMREG_SP * sizeof (mgreg_t)));
 
 	/* restore everything */
 	ARM_ADD_REG_IMM8 (code, ARMREG_IP, ctx_reg, G_STRUCT_OFFSET(MonoContext, regs));
@@ -105,7 +109,7 @@ mono_arch_get_call_filter (MonoTrampInfo **info, gboolean aot)
 	/* restore all the regs from ctx (in r0), but not sp, the stack pointer */
 	ctx_reg = ARMREG_R0;
 	ARM_LDR_IMM (code, ARMREG_IP, ctx_reg, G_STRUCT_OFFSET (MonoContext, eip));
-	ARM_ADD_REG_IMM8 (code, ARMREG_LR, ctx_reg, G_STRUCT_OFFSET(MonoContext, regs) + (4 * 4));
+	ARM_ADD_REG_IMM8 (code, ARMREG_LR, ctx_reg, G_STRUCT_OFFSET(MonoContext, regs) + (MONO_ARM_FIRST_SAVED_REG * sizeof (mgreg_t)));
 	ARM_LDM (code, ARMREG_LR, MONO_ARM_REGSAVE_MASK);
 	/* call handler at eip (r1) and set the first arg with the exception (r2) */
 	ARM_MOV_REG_REG (code, ARMREG_R0, ARMREG_R2);
@@ -143,7 +147,7 @@ mono_arm_throw_exception (MonoObject *exc, unsigned long eip, unsigned long esp,
 	MONO_CONTEXT_SET_BP (&ctx, int_regs [ARMREG_FP - 4]);
 	MONO_CONTEXT_SET_SP (&ctx, esp);
 	MONO_CONTEXT_SET_IP (&ctx, eip);
-	memcpy (((guint8*)&ctx.regs) + (4 * 4), int_regs, sizeof (gulong) * 8);
+	memcpy (((guint8*)&ctx.regs) + (ARMREG_R4 * sizeof (mgreg_t)), int_regs, 8 * sizeof (mgreg_t));
 	/* memcpy (&ctx.fregs, fp_regs, sizeof (double) * MONO_SAVED_FREGS); */
 
 	if (mono_object_isinst (exc, mono_defaults.exception_class)) {
@@ -159,10 +163,13 @@ mono_arm_throw_exception (MonoObject *exc, unsigned long eip, unsigned long esp,
 void
 mono_arm_throw_exception_by_token (guint32 type_token, unsigned long eip, unsigned long esp, gulong *int_regs, gdouble *fp_regs)
 {
+	/* Clear thumb bit */
+	eip &= ~1;
+
 	mono_arm_throw_exception ((MonoObject*)mono_exception_from_token (mono_defaults.corlib, type_token), eip, esp, int_regs, fp_regs);
 }
 
-static void
+void
 mono_arm_resume_unwind (guint32 dummy1, unsigned long eip, unsigned long esp, gulong *int_regs, gdouble *fp_regs)
 {
 	MonoContext ctx;
@@ -174,7 +181,7 @@ mono_arm_resume_unwind (guint32 dummy1, unsigned long eip, unsigned long esp, gu
 	MONO_CONTEXT_SET_BP (&ctx, int_regs [ARMREG_FP - 4]);
 	MONO_CONTEXT_SET_SP (&ctx, esp);
 	MONO_CONTEXT_SET_IP (&ctx, eip);
-	memcpy (((guint8*)&ctx.regs) + (4 * 4), int_regs, sizeof (gulong) * 8);
+	memcpy (((guint8*)&ctx.regs) + (ARMREG_R4 * sizeof (mgreg_t)), int_regs, 8 * sizeof (mgreg_t));
 
 	mono_resume_unwind (&ctx);
 }
@@ -204,12 +211,12 @@ get_throw_trampoline (int size, gboolean corlib, gboolean rethrow, gboolean llvm
 	ARM_MOV_REG_REG (code, ARMREG_IP, ARMREG_SP);
 	ARM_PUSH (code, MONO_ARM_REGSAVE_MASK);
 
-	mono_add_unwind_op_def_cfa (unwind_ops, code, start, ARMREG_SP, 10 * 4);
-	mono_add_unwind_op_offset (unwind_ops, code, start, ARMREG_LR, -4);
+	mono_add_unwind_op_def_cfa (unwind_ops, code, start, ARMREG_SP, MONO_ARM_NUM_SAVED_REGS * sizeof (mgreg_t));
+	mono_add_unwind_op_offset (unwind_ops, code, start, ARMREG_LR, - sizeof (mgreg_t));
 
 	/* call throw_exception (exc, ip, sp, int_regs, fp_regs) */
 	/* caller sp */
-	ARM_ADD_REG_IMM8 (code, ARMREG_R2, ARMREG_SP, 10 * 4); /* 10 saved regs */
+	ARM_ADD_REG_IMM8 (code, ARMREG_R2, ARMREG_SP, MONO_ARM_NUM_SAVED_REGS * sizeof (mgreg_t));
 	/* exc is already in place in r0 */
 	if (corlib) {
 		/* The caller ip is already in R1 */
@@ -228,7 +235,16 @@ get_throw_trampoline (int size, gboolean corlib, gboolean rethrow, gboolean llvm
 	ARM_ORR_REG_IMM8 (code, ARMREG_R1, ARMREG_R1, rethrow);
 
 	if (aot) {
-		ji = mono_patch_info_list_prepend (ji, code - start, MONO_PATCH_INFO_JIT_ICALL_ADDR, corlib ? "mono_arm_throw_exception_by_token" : "mono_arm_throw_exception");
+		const char *icall_name;
+
+		if (resume_unwind)
+			icall_name = "mono_arm_resume_unwind";
+		else if (corlib)
+			icall_name = "mono_arm_throw_exception_by_token";
+		else
+			icall_name = "mono_arm_throw_exception";
+
+		ji = mono_patch_info_list_prepend (ji, code - start, MONO_PATCH_INFO_JIT_ICALL_ADDR, icall_name);
 		ARM_LDR_IMM (code, ARMREG_IP, ARMREG_PC, 0);
 		ARM_B (code, 0);
 		*(gpointer*)(gpointer)code = NULL;
@@ -299,34 +315,61 @@ mono_arch_get_throw_corlib_exception (MonoTrampInfo **info, gboolean aot)
 	return get_throw_trampoline (168, TRUE, FALSE, FALSE, FALSE, "throw_corlib_exception", info, aot);
 }	
 
+GSList*
+mono_arm_get_exception_trampolines (gboolean aot)
+{
+	MonoTrampInfo *info;
+	GSList *tramps = NULL;
+
+	/* LLVM uses the normal trampolines, but with a different name */
+	get_throw_trampoline (168, TRUE, FALSE, FALSE, FALSE, "llvm_throw_corlib_exception_trampoline", &info, aot);
+	tramps = g_slist_prepend (tramps, info);
+	
+	get_throw_trampoline (168, TRUE, FALSE, TRUE, FALSE, "llvm_throw_corlib_exception_abs_trampoline", &info, aot);
+	tramps = g_slist_prepend (tramps, info);
+
+	get_throw_trampoline (168, FALSE, FALSE, FALSE, TRUE, "llvm_resume_unwind_trampoline", &info, aot);
+	tramps = g_slist_prepend (tramps, info);
+
+	return tramps;
+}
+
 void
 mono_arch_exceptions_init (void)
 {
 	guint8 *tramp;
-
+	GSList *tramps, *l;
+	
 	if (mono_aot_only) {
-	} else {
-		/* LLVM uses the normal trampolines, but with a different name */
-		tramp = get_throw_trampoline (168, TRUE, FALSE, FALSE, FALSE, "llvm_throw_corlib_exception_trampoline", NULL, FALSE);
+		tramp = mono_aot_get_trampoline ("llvm_throw_corlib_exception_trampoline");
 		mono_register_jit_icall (tramp, "llvm_throw_corlib_exception_trampoline", NULL, TRUE);
-
-		tramp = get_throw_trampoline (168, TRUE, FALSE, TRUE, FALSE, "llvm_throw_corlib_exception_abs_trampoline", NULL, FALSE);
+		tramp = mono_aot_get_trampoline ("llvm_throw_corlib_exception_abs_trampoline");
 		mono_register_jit_icall (tramp, "llvm_throw_corlib_exception_abs_trampoline", NULL, TRUE);
-
-		tramp = get_throw_trampoline (168, FALSE, FALSE, FALSE, TRUE, "llvm_resume_unwind_trampoline", NULL, FALSE);
+		tramp = mono_aot_get_trampoline ("llvm_resume_unwind_trampoline");
 		mono_register_jit_icall (tramp, "llvm_resume_unwind_trampoline", NULL, TRUE);
+	} else {
+		tramps = mono_arm_get_exception_trampolines (FALSE);
+		for (l = tramps; l; l = l->next) {
+			MonoTrampInfo *info = l->data;
+
+			mono_register_jit_icall (info->code, g_strdup (info->name), NULL, TRUE);
+			mono_save_trampoline_xdebug_info (info);
+			mono_tramp_info_free (info);
+		}
+		g_slist_free (tramps);
 	}
 }
 
 /* 
- * mono_arch_find_jit_info_ext:
+ * mono_arch_find_jit_info:
  *
  * See exceptions-amd64.c for docs;
  */
 gboolean
-mono_arch_find_jit_info_ext (MonoDomain *domain, MonoJitTlsData *jit_tls, 
+mono_arch_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls, 
 							 MonoJitInfo *ji, MonoContext *ctx, 
-							 MonoContext *new_ctx, MonoLMF **lmf, 
+							 MonoContext *new_ctx, MonoLMF **lmf,
+							 mgreg_t **save_locations,
 							 StackFrameInfo *frame)
 {
 	gpointer ip = MONO_CONTEXT_GET_IP (ctx);
@@ -360,7 +403,8 @@ mono_arch_find_jit_info_ext (MonoDomain *domain, MonoJitTlsData *jit_tls,
 
 		mono_unwind_frame (unwind_info, unwind_info_len, ji->code_start, 
 						   (guint8*)ji->code_start + ji->code_size,
-						   ip, regs, MONO_MAX_IREGS, &cfa);
+						   ip, regs, MONO_MAX_IREGS,
+						   save_locations, MONO_MAX_IREGS, &cfa);
 
 		for (i = 0; i < 16; ++i)
 			new_ctx->regs [i] = regs [i];
@@ -372,6 +416,9 @@ mono_arch_find_jit_info_ext (MonoDomain *domain, MonoJitTlsData *jit_tls,
 			*lmf = (gpointer)(((gsize)(*lmf)->previous_lmf) & ~3);
 		}
 
+		/* Clear thumb bit */
+		new_ctx->eip &= ~1;
+
 		/* we substract 1, so that the IP points into the call instruction */
 		new_ctx->eip--;
 
@@ -412,12 +459,15 @@ mono_arch_find_jit_info_ext (MonoDomain *domain, MonoJitTlsData *jit_tls,
 		 * ARM_PUSH (code, 0x5ff0);
 		 * So it stores the register state as it existed at the caller.
 		 */
-		memcpy (&new_ctx->regs [0], &(*lmf)->iregs [0], sizeof (gulong) * 13);
+		memcpy (&new_ctx->regs [0], &(*lmf)->iregs [0], sizeof (mgreg_t) * 13);
 		/* SP is skipped */
 		new_ctx->regs [ARMREG_LR] = (*lmf)->iregs [ARMREG_LR - 1];
 		new_ctx->esp = (*lmf)->iregs [ARMREG_IP];
 		new_ctx->eip = new_ctx->regs [ARMREG_LR];
 
+		/* Clear thumb bit */
+		new_ctx->eip &= ~1;
+
 		/* we substract 1, so that the IP points into the call instruction */
 		new_ctx->eip--;
 
@@ -432,21 +482,25 @@ mono_arch_find_jit_info_ext (MonoDomain *domain, MonoJitTlsData *jit_tls,
 void
 mono_arch_sigctx_to_monoctx (void *sigctx, MonoContext *mctx)
 {
-#if BROKEN_LINUX
+#ifdef MONO_CROSS_COMPILE
+	g_assert_not_reached ();
+#elif BROKEN_LINUX
 	g_assert_not_reached ();
 #else
 	arm_ucontext *my_uc = sigctx;
 
 	mctx->eip = UCONTEXT_REG_PC (my_uc);
 	mctx->esp = UCONTEXT_REG_SP (my_uc);
-	memcpy (&mctx->regs, &UCONTEXT_REG_R0 (my_uc), sizeof (gulong) * 16);
+	memcpy (&mctx->regs, &UCONTEXT_REG_R0 (my_uc), sizeof (mgreg_t) * 16);
 #endif
 }
 
 void
 mono_arch_monoctx_to_sigctx (MonoContext *mctx, void *ctx)
 {
-#if BROKEN_LINUX
+#ifdef MONO_CROSS_COMPILE
+	g_assert_not_reached ();
+#elif BROKEN_LINUX
 	g_assert_not_reached ();
 #else
 	arm_ucontext *my_uc = ctx;
@@ -454,7 +508,7 @@ mono_arch_monoctx_to_sigctx (MonoContext *mctx, void *ctx)
 	UCONTEXT_REG_PC (my_uc) = mctx->eip;
 	UCONTEXT_REG_SP (my_uc) = mctx->regs [ARMREG_FP];
 	/* The upper registers are not guaranteed to be valid */
-	memcpy (&UCONTEXT_REG_R0 (my_uc), &mctx->regs, sizeof (gulong) * 12);
+	memcpy (&UCONTEXT_REG_R0 (my_uc), &mctx->regs, sizeof (mgreg_t) * 12);
 #endif
 }
 
@@ -509,6 +563,14 @@ mono_arch_handle_exception (void *ctx, gpointer obj, gboolean test_only)
 	UCONTEXT_REG_SP (sigctx) = sp;
 
 	UCONTEXT_REG_PC (sigctx) = (gsize)handle_signal_exception;
+#ifdef UCONTEXT_REG_CPSR
+	if ((gsize)UCONTEXT_REG_PC (sigctx) & 1)
+		/* Transition to thumb */
+		UCONTEXT_REG_CPSR (sigctx) |= (1 << 5);
+	else
+		/* Transition to ARM */
+		UCONTEXT_REG_CPSR (sigctx) &= ~(1 << 5);
+#endif
 
 	return TRUE;
 #else
@@ -529,7 +591,9 @@ mono_arch_handle_exception (void *ctx, gpointer obj, gboolean test_only)
 gpointer
 mono_arch_ip_from_context (void *sigctx)
 {
-#if BROKEN_LINUX
+#ifdef MONO_CROSS_COMPILE
+	g_assert_not_reached ();
+#elif BROKEN_LINUX
 	g_assert_not_reached ();
 #else
 	arm_ucontext *my_uc = sigctx;
diff --git a/mono/mini/exceptions-ia64.c b/mono/mini/exceptions-ia64.c
index 7348933..ee5a0fb 100644
--- a/mono/mini/exceptions-ia64.c
+++ b/mono/mini/exceptions-ia64.c
@@ -487,68 +487,69 @@ mono_arch_get_throw_corlib_exception (MonoTrampInfo **info, gboolean aot)
 	return res;
 }
 
-/* mono_arch_find_jit_info:
+/*
+ * mono_arch_find_jit_info:
  *
- * This function is used to gather information from @ctx. It return the 
- * MonoJitInfo of the corresponding function, unwinds one stack frame and
- * stores the resulting context into @new_ctx. It also stores a string 
- * describing the stack location into @trace (if not NULL), and modifies
- * the @lmf if necessary. @native_offset return the IP offset from the 
- * start of the function or -1 if that info is not available.
+ * This function is used to gather information from @ctx, and store it in @frame_info.
+ * It unwinds one stack frame, and stores the resulting context into @new_ctx. @lmf
+ * is modified if needed.
+ * Returns TRUE on success, FALSE otherwise.
  */
-MonoJitInfo *
-mono_arch_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls, MonoJitInfo *res, MonoJitInfo *prev_ji, MonoContext *ctx, 
-			 MonoContext *new_ctx, MonoLMF **lmf, gboolean *managed)
+gboolean
+mono_arch_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls, 
+							 MonoJitInfo *ji, MonoContext *ctx, 
+							 MonoContext *new_ctx, MonoLMF **lmf,
+							 mgreg_t **save_locations,
+							 StackFrameInfo *frame)
 {
-	MonoJitInfo *ji;
 	int err;
 	unw_word_t ip;
 
+	memset (frame, 0, sizeof (StackFrameInfo));
+	frame->ji = ji;
+	frame->managed = FALSE;
+
 	*new_ctx = *ctx;
 	new_ctx->precise_ip = FALSE;
 
-	while (TRUE) {
-		err = unw_get_reg (&new_ctx->cursor, UNW_IA64_IP, &ip);
-		g_assert (err == 0);
+	if (!ji) {
+		while (TRUE) {
+			err = unw_get_reg (&new_ctx->cursor, UNW_IA64_IP, &ip);
+			g_assert (err == 0);
 
-		/* Avoid costly table lookup during stack overflow */
-		if (prev_ji && ((guint8*)ip > (guint8*)prev_ji->code_start && ((guint8*)ip < ((guint8*)prev_ji->code_start) + prev_ji->code_size)))
-			ji = prev_ji;
-		else
 			ji = mini_jit_info_table_find (domain, (gpointer)ip, NULL);
 
-		if (managed)
-			*managed = FALSE;
-
-		/*
-		{
-			char name[256];
-			unw_word_t off;
-
-			unw_get_proc_name (&new_ctx->cursor, name, 256, &off);
-			printf ("F: %s\n", name);
-		}
-		*/
-
-		if (ji != NULL) {
-			if (managed)
-				if (!ji->method->wrapper_type)
-					*managed = TRUE;
-
-			break;
+			/*
+			  {
+			  char name[256];
+			  unw_word_t off;
+
+			  unw_get_proc_name (&new_ctx->cursor, name, 256, &off);
+			  printf ("F: %s\n", name);
+			  }
+			*/
+
+			if (ji)
+				break;
+
+			/* This is an unmanaged frame, so just unwind through it */
+			/* FIXME: This returns -3 for the __clone2 frame in libc */
+			err = unw_step (&new_ctx->cursor);
+			if (err < 0)
+				break;
+
+			if (err == 0)
+				break;
 		}
-
-		/* This is an unmanaged frame, so just unwind through it */
-		/* FIXME: This returns -3 for the __clone2 frame in libc */
-		err = unw_step (&new_ctx->cursor);
-		if (err < 0)
-			break;
-
-		if (err == 0)
-			break;
 	}
 
 	if (ji) {
+		frame->type = FRAME_TYPE_MANAGED;
+		frame->ji = ji;
+
+		if (!ji->method->wrapper_type || ji->method->wrapper_type == MONO_WRAPPER_DYNAMIC_METHOD)
+			frame->managed = TRUE;
+
 		//print_ctx (new_ctx);
 
 		err = unw_step (&new_ctx->cursor);
@@ -556,10 +557,10 @@ mono_arch_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls, MonoJitInf
 
 		//print_ctx (new_ctx);
 
-		return ji;
+		return TRUE;
 	}
 	else
-		return (gpointer)(gssize)-1;
+		return FALSE;
 }
 
 /**
diff --git a/mono/mini/exceptions-mips.c b/mono/mini/exceptions-mips.c
index e2af85b..3d35a2c 100644
--- a/mono/mini/exceptions-mips.c
+++ b/mono/mini/exceptions-mips.c
@@ -417,42 +417,41 @@ glist_to_array (GList *list, MonoClass *eclass)
 	return res;
 }
 
-/* mono_arch_find_jit_info:
+/*
+ * mono_arch_find_jit_info:
  *
- * This function is used to gather information from @ctx. It returns the 
- * MonoJitInfo of the corresponding function, unwinds one stack frame and
- * stores the resulting context into @new_ctx. It also stores a string 
- * describing the stack location into @trace (if not NULL), and modifies
- * the @lmf if necessary. @native_offset return the IP offset from the 
- * start of the function or -1 if that info is not available.
+ * This function is used to gather information from @ctx, and store it in @frame_info.
+ * It unwinds one stack frame, and stores the resulting context into @new_ctx. @lmf
+ * is modified if needed.
+ * Returns TRUE on success, FALSE otherwise.
  */
-MonoJitInfo *
-mono_arch_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls,
-			 MonoJitInfo *res, MonoJitInfo *prev_ji,
-			 MonoContext *ctx, MonoContext *new_ctx,
-			 MonoLMF **lmf, gboolean *managed)
+gboolean
+mono_arch_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls, 
+							 MonoJitInfo *ji, MonoContext *ctx, 
+							 MonoContext *new_ctx, MonoLMF **lmf, 
+							 mgreg_t **save_locations,
+							 StackFrameInfo *frame)
 {
-	MonoJitInfo *ji;
 	gpointer ip = MONO_CONTEXT_GET_IP (ctx);
 	gpointer fp = MONO_CONTEXT_GET_BP (ctx);
 	guint32 sp;
 
-	/* Avoid costly table lookup during stack overflow */
-	if (prev_ji && (ip > prev_ji->code_start && ((guint8*)ip < ((guint8*)prev_ji->code_start) + prev_ji->code_size)))
-		ji = prev_ji;
-	else
-		ji = mini_jit_info_table_find (domain, ip, NULL);
+	memset (frame, 0, sizeof (StackFrameInfo));
+	frame->ji = ji;
+	frame->managed = FALSE;
 
-	if (managed)
-		*managed = FALSE;
-
-	memcpy (new_ctx, ctx, sizeof (MonoContext));
+	*new_ctx = *ctx;
 
 	if (ji != NULL) {
 		int i;
 		gint32 address;
 		int offset = 0;
 
+		frame->type = FRAME_TYPE_MANAGED;
+
+		if (!ji->method->wrapper_type || ji->method->wrapper_type == MONO_WRAPPER_DYNAMIC_METHOD)
+			frame->managed = TRUE;
+
 		if (*lmf && (MONO_CONTEXT_GET_BP (ctx) >= (gpointer)(*lmf)->ebp)) {
 			/* remove any unused lmf */
 			*lmf = (*lmf)->previous_lmf;
@@ -460,10 +459,6 @@ mono_arch_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls,
 
 		address = (char *)ip - (char *)ji->code_start;
 
-		if (managed)
-			if (!ji->method->wrapper_type)
-				*managed = TRUE;
-
 		/* My stack frame */
 		fp = MONO_CONTEXT_GET_BP (ctx);
 
@@ -476,7 +471,7 @@ mono_arch_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls,
 #ifdef DEBUG_EXCEPTIONS
 			g_print ("mono_arch_find_jit_info: bad stack sp=%p\n", (void *) sp);
 #endif
-			return (gpointer)-1;
+			return FALSE;
 		}
 
 		if (ji->method->save_lmf && 0) {
@@ -518,21 +513,25 @@ mono_arch_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls,
 
 		/* Sanity check -- we should have made progress here */
 		g_assert (new_ctx->sc_pc != ctx->sc_pc);
-		return ji;
+		return TRUE;
 	} else if (*lmf) {
 		if (!(*lmf)->method) {
 #ifdef DEBUG_EXCEPTIONS
 			g_print ("mono_arch_find_jit_info: bad lmf @ %p\n", (void *) *lmf);
 #endif
-			return (gpointer)-1;
+			return FALSE;
 		}
 		g_assert (((*lmf)->magic == MIPS_LMF_MAGIC1) || ((*lmf)->magic == MIPS_LMF_MAGIC2));
 
-		if ((ji = mini_jit_info_table_find (domain, (gpointer)(*lmf)->eip, NULL))) {
-		} else {
-			memset (res, 0, MONO_SIZEOF_JIT_INFO);
-			res->method = (*lmf)->method;
+		ji = mini_jit_info_table_find (domain, (gpointer)(*lmf)->eip, NULL);
+		if (!ji) {
+			// FIXME: This can happen with multiple appdomains (bug #444383)
+			return FALSE;
 		}
+
+		frame->ji = ji;
+		frame->type = FRAME_TYPE_MANAGED_TO_NATIVE;
+
 		memcpy (&new_ctx->sc_regs, (*lmf)->iregs, sizeof (gulong) * MONO_SAVED_GREGS);
 		memcpy (&new_ctx->sc_fpregs, (*lmf)->fregs, sizeof (float) * MONO_SAVED_FREGS);
 		MONO_CONTEXT_SET_IP (new_ctx, (*lmf)->eip);
@@ -540,10 +539,10 @@ mono_arch_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls,
 		g_assert (new_ctx->sc_pc != ctx->sc_pc);
 		*lmf = (*lmf)->previous_lmf;
 
-		return ji ? ji : res;
+		return TRUE;
 	}
 
-	return NULL;
+	return FALSE;
 }
 
 void
diff --git a/mono/mini/exceptions-ppc.c b/mono/mini/exceptions-ppc.c
index 9b9bd93..943a7a5 100644
--- a/mono/mini/exceptions-ppc.c
+++ b/mono/mini/exceptions-ppc.c
@@ -504,14 +504,15 @@ mono_arch_get_throw_corlib_exception (MonoTrampInfo **info, gboolean aot)
 }
 
 /*
- * mono_arch_find_jit_info_ext:
+ * mono_arch_find_jit_info:
  *
  * See exceptions-amd64.c for docs.
  */
 gboolean
-mono_arch_find_jit_info_ext (MonoDomain *domain, MonoJitTlsData *jit_tls, 
+mono_arch_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls, 
 							 MonoJitInfo *ji, MonoContext *ctx, 
-							 MonoContext *new_ctx, MonoLMF **lmf, 
+							 MonoContext *new_ctx, MonoLMF **lmf,
+							 mgreg_t **save_locations,
 							 StackFrameInfo *frame)
 {
 	gpointer ip = MONO_CONTEXT_GET_IP (ctx);
@@ -560,7 +561,8 @@ mono_arch_find_jit_info_ext (MonoDomain *domain, MonoJitTlsData *jit_tls,
 
 			mono_unwind_frame (unwind_info, unwind_info_len, ji->code_start, 
 							   (guint8*)ji->code_start + ji->code_size,
-							   ip, regs, ppc_lr + 1, &cfa);
+							   ip, regs, ppc_lr + 1,
+							   save_locations, MONO_MAX_IREGS, &cfa);
 
 			/* we substract 4, so that the IP points into the call instruction */
 			MONO_CONTEXT_SET_IP (new_ctx, regs [ppc_lr] - 4);
@@ -771,6 +773,7 @@ handle_signal_exception (gpointer obj, gboolean test_only)
 static void
 setup_ucontext_return (void *uc, gpointer func)
 {
+#if !defined(MONO_CROSS_COMPILE)
 	UCONTEXT_REG_LNK(uc) = UCONTEXT_REG_NIP(uc);
 #ifdef PPC_USES_FUNCTION_DESCRIPTOR
 	{
@@ -782,6 +785,7 @@ setup_ucontext_return (void *uc, gpointer func)
 #else
 	UCONTEXT_REG_NIP(uc) = (unsigned long)func;
 #endif
+#endif
 }
 
 gboolean
diff --git a/mono/mini/exceptions-s390.c b/mono/mini/exceptions-s390.c
index 663c0e9..6184626 100644
--- a/mono/mini/exceptions-s390.c
+++ b/mono/mini/exceptions-s390.c
@@ -433,41 +433,33 @@ mono_arch_get_throw_exception_by_name (void)
 /*                                                                  */
 /* Name		- mono_arch_find_jit_info                           */
 /*                                                                  */
-/* Function	- This function is used to gather informatoin from  */
-/*                @ctx. It returns the MonoJitInfo of the corres-   */
-/*                ponding function, unwinds one stack frame and     */
-/*                stores the resulting context into @new_ctx. It    */
-/*                also stores a string describing the stack location*/
-/*                into @trace (if not NULL), and modifies the @lmf  */
-/*                if necessary. @native_offset returns the IP off-  */
-/*                set from the start of the function or -1 if that  */
-/*                informatoin is not available.                     */
+/* Function	- See exceptions-amd64.c for docs.                      */
 /*                                                                  */
 /*------------------------------------------------------------------*/
 
-MonoJitInfo *
+gboolean
 mono_arch_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls, 
-			 MonoJitInfo *res, MonoJitInfo *prev_ji, MonoContext *ctx, 
-			 MonoContext *new_ctx, MonoLMF **lmf, gboolean *managed)
+							 MonoJitInfo *ji, MonoContext *ctx, 
+							 MonoContext *new_ctx, MonoLMF **lmf,
+							 mgreg_t **save_locations,
+							 StackFrameInfo *frame)
 {
-	MonoJitInfo *ji;
 	gpointer ip = MONO_CONTEXT_GET_IP (ctx);
 	MonoS390StackFrame *sframe;
 
-	if (prev_ji && 
-	    (ip >= prev_ji->code_start && 
-	    ((guint8 *) ip <= ((guint8 *) prev_ji->code_start) + prev_ji->code_size)))
-		ji = prev_ji;
-	else
-		ji = mini_jit_info_table_find (domain, ip, NULL);
+	memset (frame, 0, sizeof (StackFrameInfo));
+	frame->ji = ji;
+	frame->managed = FALSE;
 
-	if (managed)
-		*managed = FALSE;
+	*new_ctx = *ctx;
 
 	if (ji != NULL) {
 		gint32 address;
 
-		*new_ctx = *ctx;
+		frame->type = FRAME_TYPE_MANAGED;
+
+		if (!ji->method->wrapper_type || ji->method->wrapper_type == MONO_WRAPPER_DYNAMIC_METHOD)
+			frame->managed = TRUE;
 
 		if (*lmf && (MONO_CONTEXT_GET_SP (ctx) >= (gpointer)(*lmf)->ebp)) {
 			/* remove any unused lmf */
@@ -476,40 +468,36 @@ mono_arch_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls,
 
 		address = (char *)ip - (char *)ji->code_start;
 
-		if (managed)
-			if (!ji->method->wrapper_type)
-				*managed = TRUE;
-
 		sframe = (MonoS390StackFrame *) MONO_CONTEXT_GET_SP (ctx);
 		MONO_CONTEXT_SET_BP (new_ctx, sframe->prev);
 		sframe = (MonoS390StackFrame *) sframe->prev;
-		MONO_CONTEXT_SET_IP (new_ctx, sframe->return_address);
+		MONO_CONTEXT_SET_IP (new_ctx, (guint8*)sframe->return_address - 2);
 		memcpy (&new_ctx->uc_mcontext.gregs[6], sframe->regs, (8*sizeof(gint32)));
-		return ji;
+		return TRUE;
 	} else if (*lmf) {
-		
-		*new_ctx = *ctx;
-
 		if (!(*lmf)->method)
-			return (gpointer)-1;
+			return FALSE;
 
-		if ((ji = mini_jit_info_table_find (domain, (gpointer)(*lmf)->eip, NULL))) {
-		} else {
-			memset (res, 0, MONO_SIZEOF_JIT_INFO);
-			res->method = (*lmf)->method;
+		ji = mini_jit_info_table_find (domain, (gpointer)(*lmf)->eip, NULL);
+		if (!ji) {
+			// FIXME: This can happen with multiple appdomains (bug #444383)
+			return FALSE;
 		}
 
+		frame->ji = ji;
+		frame->type = FRAME_TYPE_MANAGED_TO_NATIVE;
+
 		memcpy(new_ctx->uc_mcontext.gregs, (*lmf)->gregs, sizeof((*lmf)->gregs));
 		memcpy(new_ctx->uc_mcontext.fpregs.fprs, (*lmf)->fregs, sizeof((*lmf)->fregs));
 
 		MONO_CONTEXT_SET_BP (new_ctx, (*lmf)->ebp);
-		MONO_CONTEXT_SET_IP (new_ctx, (*lmf)->eip);
+		MONO_CONTEXT_SET_IP (new_ctx, (*lmf)->eip - 2);
 		*lmf = (*lmf)->previous_lmf;
 
-		return ji ? ji : res;
+		return TRUE;
 	}
 
-	return NULL;
+	return FALSE;
 }
 
 /*========================= End of Function ========================*/
diff --git a/mono/mini/exceptions-s390x.c b/mono/mini/exceptions-s390x.c
index 9e67323..23e3aa5 100644
--- a/mono/mini/exceptions-s390x.c
+++ b/mono/mini/exceptions-s390x.c
@@ -428,41 +428,33 @@ mono_arch_get_throw_corlib_exception (MonoTrampInfo **info, gboolean aot)
 /*                                                                  */
 /* Name		- mono_arch_find_jit_info                           */
 /*                                                                  */
-/* Function	- This function is used to gather information from  */
-/*                @ctx. It returns the MonoJitInfo of the corres-   */
-/*                ponding function, unwinds one stack frame and     */
-/*                stores the resulting context into @new_ctx. It    */
-/*                also stores a string describing the stack location*/
-/*                into @trace (if not NULL), and modifies the @lmf  */
-/*                if necessary. @native_offset returns the IP off-  */
-/*                set from the start of the function or -1 if that  */
-/*                information is not available.                     */
+/* Function	- See exceptions-amd64.c for docs.                      */
 /*                                                                  */
 /*------------------------------------------------------------------*/
 
-MonoJitInfo *
+gboolean
 mono_arch_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls, 
-			 MonoJitInfo *res, MonoJitInfo *prev_ji, MonoContext *ctx, 
-			 MonoContext *new_ctx, MonoLMF **lmf, gboolean *managed)
+							 MonoJitInfo *ji, MonoContext *ctx, 
+							 MonoContext *new_ctx, MonoLMF **lmf,
+							 mgreg_t **save_locations,
+							 StackFrameInfo *frame)
 {
-	MonoJitInfo *ji;
 	gpointer ip = (gpointer) MONO_CONTEXT_GET_IP (ctx);
 	MonoS390StackFrame *sframe;
 
-	if (prev_ji && 
-	    (ip >= prev_ji->code_start && 
-	    ((guint8 *) ip <= ((guint8 *) prev_ji->code_start) + prev_ji->code_size)))
-		ji = prev_ji;
-	else
-		ji = mini_jit_info_table_find (domain, ip, NULL);
+	memset (frame, 0, sizeof (StackFrameInfo));
+	frame->ji = ji;
+	frame->managed = FALSE;
 
-	if (managed)
-		*managed = FALSE;
+	*new_ctx = *ctx;
 
 	if (ji != NULL) {
 		gint64 address;
 
-		*new_ctx = *ctx;
+		frame->type = FRAME_TYPE_MANAGED;
+
+		if (!ji->method->wrapper_type || ji->method->wrapper_type == MONO_WRAPPER_DYNAMIC_METHOD)
+			frame->managed = TRUE;
 
 		if (*lmf && (MONO_CONTEXT_GET_SP (ctx) >= (gpointer)(*lmf)->ebp)) {
 			/* remove any unused lmf */
@@ -471,41 +463,37 @@ mono_arch_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls,
 
 		address = (char *)ip - (char *)ji->code_start;
 
-		if (managed)
-			if (!ji->method->wrapper_type)
-				*managed = TRUE;
-
 		sframe = (MonoS390StackFrame *) MONO_CONTEXT_GET_SP (ctx);
 		MONO_CONTEXT_SET_BP (new_ctx, sframe->prev);
 		sframe = (MonoS390StackFrame *) sframe->prev;
-		MONO_CONTEXT_SET_IP (new_ctx, sframe->return_address);
+		MONO_CONTEXT_SET_IP (new_ctx, (guint8*)sframe->return_address - 2);
 		memcpy (&new_ctx->uc_mcontext.gregs[6], sframe->regs, (8*sizeof(gint64)));
-		return ji;
+		return TRUE;
 
 	} else if (*lmf) {
-		
-		*new_ctx = *ctx;
-
 		if (!(*lmf)->method)
-			return (gpointer)-1;
+			return FALSE;
 
-		if ((ji = mini_jit_info_table_find (domain, (gpointer)(*lmf)->eip, NULL))) {
-		} else {
-			memset (res, 0, MONO_SIZEOF_JIT_INFO);
-			res->method = (*lmf)->method;
+		ji = mini_jit_info_table_find (domain, (gpointer)(*lmf)->eip, NULL);
+		if (!ji) {
+			// FIXME: This can happen with multiple appdomains (bug #444383)
+			return FALSE;
 		}
 
+		frame->ji = ji;
+		frame->type = FRAME_TYPE_MANAGED_TO_NATIVE;
+
 		memcpy(new_ctx->uc_mcontext.gregs, (*lmf)->gregs, sizeof((*lmf)->gregs));
 		memcpy(new_ctx->uc_mcontext.fpregs.fprs, (*lmf)->fregs, sizeof((*lmf)->fregs));
 
 		MONO_CONTEXT_SET_BP (new_ctx, (*lmf)->ebp);
-		MONO_CONTEXT_SET_IP (new_ctx, (*lmf)->eip);
+		MONO_CONTEXT_SET_IP (new_ctx, (*lmf)->eip - 2);
 		*lmf = (*lmf)->previous_lmf;
 
-		return ji ? ji : res;
+		return TRUE;
 	}
 
-	return NULL;
+	return FALSE;
 }
 
 /*========================= End of Function ========================*/
diff --git a/mono/mini/exceptions-sparc.c b/mono/mini/exceptions-sparc.c
index a84bc1f..0c47d9d 100644
--- a/mono/mini/exceptions-sparc.c
+++ b/mono/mini/exceptions-sparc.c
@@ -333,29 +333,23 @@ mono_arch_get_throw_corlib_exception (MonoTrampInfo **info, gboolean aot)
  * the @lmf if necessary. @native_offset return the IP offset from the 
  * start of the function or -1 if that info is not available.
  */
-MonoJitInfo *
-mono_arch_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls, MonoJitInfo *res, MonoJitInfo *prev_ji, MonoContext *ctx, 
-			 MonoContext *new_ctx, MonoLMF **lmf, gboolean *managed)
+gboolean
+mono_arch_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls, 
+							 MonoJitInfo *ji, MonoContext *ctx, 
+							 MonoContext *new_ctx, MonoLMF **lmf,
+							 mgreg_t **save_locations,
+							 StackFrameInfo *frame)
 {
-	MonoJitInfo *ji;
-	gpointer ip = MONO_CONTEXT_GET_IP (ctx);
 	gpointer *window;
 
-	/* Avoid costly table lookup during stack overflow */
-	if (prev_ji && (ip > prev_ji->code_start && ((guint8*)ip < ((guint8*)prev_ji->code_start) + prev_ji->code_size)))
-		ji = prev_ji;
-	else
-		ji = mini_jit_info_table_find (domain, ip, NULL);
+	memset (frame, 0, sizeof (StackFrameInfo));
+	frame->ji = ji;
+	frame->managed = FALSE;
 
-	if (managed)
-		*managed = FALSE;
+	*new_ctx = *ctx;
 
 	if (ji != NULL) {
-		*new_ctx = *ctx;
-
-		if (managed)
-			if (!ji->method->wrapper_type)
-				*managed = TRUE;
+		frame->type = FRAME_TYPE_MANAGED;
 
 		if (*lmf && (MONO_CONTEXT_GET_BP (ctx) >= (gpointer)(*lmf)->ebp)) {
 			/* remove any unused lmf */
@@ -368,22 +362,21 @@ mono_arch_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls, MonoJitInf
 		new_ctx->sp = (gpointer*)(window [sparc_i6 - 16]);
 		new_ctx->fp = (gpointer*)(MONO_SPARC_WINDOW_ADDR (new_ctx->sp) [sparc_i6 - 16]);
 
-		return ji;
+		return TRUE;
 	}
 	else {
 		if (!(*lmf))
-			return NULL;
-
-		*new_ctx = *ctx;
+			return FALSE;
 
 		if (!(*lmf)->method)
-			return (gpointer)-1;
+			return FALSE;
 
-		if ((ji = mini_jit_info_table_find (domain, (gpointer)(*lmf)->ip, NULL))) {
-		} else {
-			memset (res, 0, MONO_SIZEOF_JIT_INFO);
-			res->method = (*lmf)->method;
-		}
+		ji = mini_jit_info_table_find (domain, (gpointer)(*lmf)->ip, NULL);
+		if (!ji)
+			return FALSE;
+
+		frame->ji = ji;
+		frame->type = FRAME_TYPE_MANAGED_TO_NATIVE;
 
 		new_ctx->ip = (*lmf)->ip;
 		new_ctx->sp = (*lmf)->sp;
@@ -391,7 +384,7 @@ mono_arch_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls, MonoJitInf
 
 		*lmf = (*lmf)->previous_lmf;
 
-		return ji ? ji : res;
+		return TRUE;
 	}
 }
 
diff --git a/mono/mini/exceptions-x86.c b/mono/mini/exceptions-x86.c
index 6d0db6d..d3f0981 100644
--- a/mono/mini/exceptions-x86.c
+++ b/mono/mini/exceptions-x86.c
@@ -41,6 +41,10 @@ static MonoW32ExceptionHandler segv_handler;
 
 static LPTOP_LEVEL_EXCEPTION_FILTER old_handler;
 
+#ifndef PROCESS_CALLBACK_FILTER_ENABLED
+#	define PROCESS_CALLBACK_FILTER_ENABLED 1
+#endif
+
 #define W32_SEH_HANDLE_EX(_ex) \
 	if (_ex##_handler) _ex##_handler(0, er, sctx)
 
@@ -138,7 +142,7 @@ win32_handle_stack_overflow (EXCEPTION_POINTERS* ep, struct sigcontext *sctx)
 	do {
 		MonoContext new_ctx;
 
-		mono_arch_find_jit_info_ext (domain, jit_tls, &rji, &ctx, &new_ctx, &lmf, &frame);
+		mono_arch_find_jit_info (domain, jit_tls, &rji, &ctx, &new_ctx, &lmf, NULL, &frame);
 		if (!frame.ji) {
 			g_warning ("Exception inside function without unwind info");
 			g_assert_not_reached ();
@@ -304,8 +308,17 @@ mono_arch_get_restore_context (MonoTrampInfo **info, gboolean aot)
 	/* jump to the saved IP */
 	x86_ret (code);
 
+	nacl_global_codeman_validate(&start, 128, &code);
+
 	if (info)
 		*info = mono_tramp_info_create (g_strdup_printf ("restore_context"), start, code - start, ji, unwind_ops);
+	else {
+		GSList *l;
+
+		for (l = unwind_ops; l; l = l->next)
+			g_free (l->data);
+		g_slist_free (unwind_ops);
+	}
 
 	return start;
 }
@@ -324,11 +337,7 @@ mono_arch_get_call_filter (MonoTrampInfo **info, gboolean aot)
 	guint8 *code;
 	MonoJumpInfo *ji = NULL;
 	GSList *unwind_ops = NULL;
-#ifdef __native_client_codegen__
-	guint kMaxCodeSize = 128;
-#else
-	guint kMaxCodeSize = 64;
-#endif  /* __native_client_codegen__ */
+	guint kMaxCodeSize = NACL_SIZE (64, 128);
 
 	/* call_filter (MonoContext *ctx, unsigned long eip) */
 	start = code = mono_global_codeman_reserve (kMaxCodeSize);
@@ -376,8 +385,17 @@ mono_arch_get_call_filter (MonoTrampInfo **info, gboolean aot)
 	x86_leave (code);
 	x86_ret (code);
 
+	nacl_global_codeman_validate(&start, kMaxCodeSize, &code);
+
 	if (info)
 		*info = mono_tramp_info_create (g_strdup_printf ("call_filter"), start, code - start, ji, unwind_ops);
+	else {
+		GSList *l;
+
+		for (l = unwind_ops; l; l = l->next)
+			g_free (l->data);
+		g_slist_free (unwind_ops);
+	}
 
 	g_assert ((code - start) < kMaxCodeSize);
 	return start;
@@ -497,11 +515,8 @@ get_throw_trampoline (const char *name, gboolean rethrow, gboolean llvm, gboolea
 	int i, stack_size, stack_offset, arg_offsets [5], regs_offset;
 	MonoJumpInfo *ji = NULL;
 	GSList *unwind_ops = NULL;
-#ifdef __native_client_codegen__
-	guint kMaxCodeSize = 256;
-#else
-	guint kMaxCodeSize = 128;
-#endif
+	guint kMaxCodeSize = NACL_SIZE (128, 256);
+
 	start = code = mono_global_codeman_reserve (kMaxCodeSize);
 
 	stack_size = 128;
@@ -551,11 +566,14 @@ get_throw_trampoline (const char *name, gboolean rethrow, gboolean llvm, gboolea
 			/* We don't generate stack alignment code on osx to save space */
 #endif
 		} else {
-			/* One argument */
+			/* One argument + stack alignment */
 			stack_offset = stack_size + 4 + 4;
 #ifdef __APPLE__
 			/* Pop the alignment added by OP_THROW too */
 			stack_offset += MONO_ARCH_FRAME_ALIGNMENT - 4;
+#else
+			if (mono_do_x86_stack_align)
+				stack_offset += MONO_ARCH_FRAME_ALIGNMENT - 4;
 #endif
 		}
 	}
@@ -608,10 +626,19 @@ get_throw_trampoline (const char *name, gboolean rethrow, gboolean llvm, gboolea
 	}
 	x86_breakpoint (code);
 
+	nacl_global_codeman_validate(&start, kMaxCodeSize, &code);
+
 	g_assert ((code - start) < kMaxCodeSize);
 
 	if (info)
 		*info = mono_tramp_info_create (g_strdup (name), start, code - start, ji, unwind_ops);
+	else {
+		GSList *l;
+
+		for (l = unwind_ops; l; l = l->next)
+			g_free (l->data);
+		g_slist_free (unwind_ops);
+	}
 
 	return start;
 }
@@ -661,6 +688,27 @@ mono_arch_exceptions_init (void)
 {
 	guint8 *tramp;
 
+/* 
+ * If we're running WoW64, we need to set the usermode exception policy 
+ * for SEHs to behave. This requires hotfix http://support.microsoft.com/kb/976038
+ * or (eventually) Windows 7 SP1.
+ */
+#ifdef HOST_WIN32
+	DWORD flags;
+	FARPROC getter;
+	FARPROC setter;
+	HMODULE kernel32 = LoadLibraryW (L"kernel32.dll");
+
+	if (kernel32) {
+		getter = GetProcAddress (kernel32, "GetProcessUserModeExceptionPolicy");
+		setter = GetProcAddress (kernel32, "SetProcessUserModeExceptionPolicy");
+		if (getter && setter) {
+			if (getter (&flags))
+				setter (flags & ~PROCESS_CALLBACK_FILTER_ENABLED);
+		}
+	}
+#endif
+
 	if (mono_aot_only) {
 		signal_exception_trampoline = mono_aot_get_trampoline ("x86_signal_exception_trampoline");
 		return;
@@ -686,14 +734,15 @@ mono_arch_exceptions_init (void)
 }
 
 /*
- * mono_arch_find_jit_info_ext:
+ * mono_arch_find_jit_info:
  *
  * See exceptions-amd64.c for docs.
  */
 gboolean
-mono_arch_find_jit_info_ext (MonoDomain *domain, MonoJitTlsData *jit_tls, 
+mono_arch_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls, 
 							 MonoJitInfo *ji, MonoContext *ctx, 
-							 MonoContext *new_ctx, MonoLMF **lmf, 
+							 MonoContext *new_ctx, MonoLMF **lmf,
+							 mgreg_t **save_locations,
 							 StackFrameInfo *frame)
 {
 	gpointer ip = MONO_CONTEXT_GET_IP (ctx);
@@ -732,7 +781,8 @@ mono_arch_find_jit_info_ext (MonoDomain *domain, MonoJitTlsData *jit_tls,
 
 		mono_unwind_frame (unwind_info, unwind_info_len, ji->code_start, 
 						   (guint8*)ji->code_start + ji->code_size,
-						   ip, regs, MONO_MAX_IREGS + 1, &cfa);
+						   ip, regs, MONO_MAX_IREGS + 1,
+						   save_locations, MONO_MAX_IREGS, &cfa);
 
 		new_ctx->eax = regs [X86_EAX];
 		new_ctx->ebx = regs [X86_EBX];
@@ -795,6 +845,7 @@ mono_arch_find_jit_info_ext (MonoDomain *domain, MonoJitTlsData *jit_tls,
 			if (!((guint32)((*lmf)->previous_lmf) & 1))
 				/* Top LMF entry */
 				return FALSE;
+			g_assert_not_reached ();
 			/* Trampoline lmf frame */
 			frame->method = (*lmf)->method;
 		}
@@ -1009,6 +1060,13 @@ mono_x86_get_signal_exception_trampoline (MonoTrampInfo **info, gboolean aot)
 
 	if (info)
 		*info = mono_tramp_info_create (g_strdup ("x86_signal_exception_trampoline"), start, code - start, ji, unwind_ops);
+	else {
+		GSList *l;
+
+		for (l = unwind_ops; l; l = l->next)
+			g_free (l->data);
+		g_slist_free (unwind_ops);
+	}
 
 	return start;
 }
diff --git a/mono/mini/exceptions.cs b/mono/mini/exceptions.cs
index 4f782c9..6affc7d 100644
--- a/mono/mini/exceptions.cs
+++ b/mono/mini/exceptions.cs
@@ -1486,7 +1486,7 @@ class Tests {
 			val = d / q;
 		} catch (DivideByZeroException) {
 			/* wrong exception */
-		} catch (ArithmeticException) {
+		} catch (OverflowException) {
 			failed = false;
 		}
 		if (failed)
@@ -1499,7 +1499,7 @@ class Tests {
 			val = d % q;
 		} catch (DivideByZeroException) {
 			/* wrong exception */
-		} catch (ArithmeticException) {
+		} catch (OverflowException) {
 			failed = false;
 		}
 		if (failed)
@@ -2240,6 +2240,8 @@ class Tests {
 
 		public static void rethrow2 () {
 			rethrow1 ();
+			/* This disables tailcall opts */
+			Console.WriteLine ();
 		}
 	}
 
@@ -2355,6 +2357,25 @@ class Tests {
 		return (addr [0].ToInt64 () - addr [100].ToInt64 () < 100) ? 0 : 1;
 	}
 
+	static unsafe void get_sp (int i) {
+		addr [i] = new IntPtr (&i);
+	}
+
+	/* Test that the arguments to the throw trampoline are correctly popped off the stack */
+	public static int test_0_throw_unwind () {
+		addr = new IntPtr [1000];
+		S s = new S ();
+		for (int j = 0; j < 1000; j++) {
+			try {
+				get_sp (j);
+				throw new Exception ();
+			}
+			catch (Exception) {
+			}
+		}
+		return (addr [0].ToInt64 () - addr [100].ToInt64 () < 100) ? 0 : 1;
+	}
+
 	public static int test_0_regress_73242 () {
 		int [] arr = new int [10];
 		for (int i = 0; i < 10; ++i)
diff --git a/mono/mini/genmdesc.pl b/mono/mini/genmdesc.pl
index 7d66e31..8c13a61 100644
--- a/mono/mini/genmdesc.pl
+++ b/mono/mini/genmdesc.pl
@@ -79,7 +79,7 @@ sub load_opcodes
 	if ($arch =~ "__i386__") {
 		$arch_define = "TARGET_X86";
 	}
-	if ($arch =~ " __x86_64__") {
+	if ($arch =~ "__x86_64__") {
 		$arch_define = "TARGET_AMD64";
 	}
 	if ($arch =~ "__arm__") {
diff --git a/mono/mini/helpers.c b/mono/mini/helpers.c
index 1afce38..13952b4 100644
--- a/mono/mini/helpers.c
+++ b/mono/mini/helpers.c
@@ -129,6 +129,7 @@ mono_disassemble_code (MonoCompile *cfg, guint8 *code, int size, char *id)
 	char *as_file;
 	char *o_file;
 	char *cmd;
+	int unused;
 
 #ifdef HOST_WIN32
 	as_file = g_strdup_printf ("%s/test.s", tmp);    
@@ -227,7 +228,7 @@ mono_disassemble_code (MonoCompile *cfg, guint8 *code, int size, char *id)
 #endif
 
 	cmd = g_strdup_printf (ARCH_PREFIX AS_CMD " %s -o %s", as_file, o_file);
-	system (cmd); 
+	unused = system (cmd); 
 	g_free (cmd);
 	if (!objdump_args)
 		objdump_args = "";
@@ -240,12 +241,12 @@ mono_disassemble_code (MonoCompile *cfg, guint8 *code, int size, char *id)
 	 * everything as data.
 	 */
 	cmd = g_strdup_printf (ARCH_PREFIX "strip -x %s", o_file);
-	system (cmd);
+	unused = system (cmd);
 	g_free (cmd);
 #endif
 	
 	cmd = g_strdup_printf (ARCH_PREFIX DIS_CMD " %s %s", objdump_args, o_file);
-	system (cmd);
+	unused = system (cmd);
 	g_free (cmd);
 	
 #ifndef HOST_WIN32
diff --git a/mono/mini/iltests.il.in b/mono/mini/iltests.il.in
index 6d63e41..4b415de 100644
--- a/mono/mini/iltests.il.in
+++ b/mono/mini/iltests.il.in
@@ -1,4 +1,8 @@
-.assembly iltests {}
+.assembly iltests {
+  .custom instance void class [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::'.ctor'() =  (
+		01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78   // ....T..WrapNonEx
+		63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01       ) // ceptionThrows.
+}
 .assembly extern TestDriver {}
 .assembly extern mscorlib {}
 
@@ -2582,4 +2586,25 @@ END:
 			  ldc.i4.0
 			  ret
     }
+
+	.method public static default int32 test_0_wrap_non_exception_throws () cil managed
+	{
+	  .try {
+	  	    newobj instance void class [mscorlib]System.Object::'.ctor'()
+			throw
+		  leave IL_0
+	  } catch class [mscorlib]System.Runtime.CompilerServices.RuntimeWrappedException {
+		  leave IL_0
+		}
+		IL_0:
+		ldc.i4.0
+		ret
+    }
+
+	.method public static default int32 test_0_typespec_modopt () cil managed {
+		ldtoken class Tests modopt (Tests)
+		pop
+		ldc.i4.0
+		ret
+	}
 }
diff --git a/mono/mini/image-writer.c b/mono/mini/image-writer.c
index 4a3cf02..986fe5d 100644
--- a/mono/mini/image-writer.c
+++ b/mono/mini/image-writer.c
@@ -381,9 +381,11 @@ bin_writer_emit_pointer_unaligned (MonoImageWriter *acfg, const char *target)
 {
 	BinReloc *reloc;
 
-	if (!target)
-		// FIXME:
-		g_assert_not_reached ();
+	if (!target) {
+		acfg->cur_section->cur_offset += sizeof (gpointer);
+		return;
+	}
+
 	reloc = g_new0 (BinReloc, 1);
 	reloc->val1 = g_strdup (target);
 	reloc->section = acfg->cur_section;
@@ -1068,7 +1070,7 @@ bin_writer_emit_writeout (MonoImageWriter *acfg)
 {
 	FILE *file;
 	ElfHeader header;
-	ElfProgHeader progh [3];
+	ElfProgHeader progh [4];
 	ElfSectHeader secth [SECT_NUM];
 #ifdef USE_ELF_RELA
 	ElfRelocA *relocs;
@@ -1334,7 +1336,7 @@ bin_writer_emit_writeout (MonoImageWriter *acfg)
 	header.e_phoff = sizeof (header);
 	header.e_ehsize = sizeof (header);
 	header.e_phentsize = sizeof (ElfProgHeader);
-	header.e_phnum = 3;
+	header.e_phnum = 4;
 	header.e_entry = secth [SECT_TEXT].sh_addr;
 	header.e_shstrndx = SECT_SHSTRTAB;
 	header.e_shentsize = sizeof (ElfSectHeader);
@@ -1405,6 +1407,13 @@ bin_writer_emit_writeout (MonoImageWriter *acfg)
 	progh [2].p_align = SIZEOF_VOID_P;
 	progh [2].p_flags = 6;
 
+	progh [3].p_type = PT_GNU_STACK;
+	progh [3].p_offset = secth [SECT_DYNAMIC].sh_offset;
+	progh [3].p_vaddr = progh [3].p_paddr = secth [SECT_DYNAMIC].sh_addr;
+	progh [3].p_filesz = progh [3].p_memsz = secth [SECT_DYNAMIC].sh_size;
+	progh [3].p_align = SIZEOF_VOID_P;
+	progh [3].p_flags = 6;
+
 	/* Compute the addresses of the bin sections, so relocation can be done */
 	for (i = 0; i < SECT_NUM; ++i) {
 		if (sections [i]) {
@@ -1777,6 +1786,17 @@ asm_writer_emit_symbol_diff (MonoImageWriter *acfg, const char *end, const char*
 #else
 	start = get_label (start);
 	end = get_label (end);
+
+	if (offset == 0 && strcmp (start, ".") != 0) {
+		char symbol [128];
+		sprintf (symbol, ".LDIFF_SYM%d", acfg->label_gen);
+		acfg->label_gen ++;
+		fprintf (acfg->fp, "\n%s=%s - %s", symbol, end, start);
+		fprintf (acfg->fp, "\n\t%s ", AS_INT32_DIRECTIVE);
+		fprintf (acfg->fp, "%s", symbol);
+		return;
+	}
+
 	if ((acfg->col_count++ % 8) == 0)
 		fprintf (acfg->fp, "\n\t%s ", AS_INT32_DIRECTIVE);
 	else
diff --git a/mono/mini/ir-emit.h b/mono/mini/ir-emit.h
old mode 100755
new mode 100644
index 6505c2a..c4912cb
--- a/mono/mini/ir-emit.h
+++ b/mono/mini/ir-emit.h
@@ -54,14 +54,42 @@ alloc_freg (MonoCompile *cfg)
 }
 
 static inline guint32
+alloc_ireg_ref (MonoCompile *cfg)
+{
+	int vreg = alloc_ireg (cfg);
+
+#ifdef HAVE_SGEN_GC
+	if (cfg->compute_gc_maps)
+		mono_mark_vreg_as_ref (cfg, vreg);
+#endif
+
+	return vreg;
+}
+
+static inline guint32
+alloc_ireg_mp (MonoCompile *cfg)
+{
+	int vreg = alloc_ireg (cfg);
+
+#ifdef HAVE_SGEN_GC
+	if (cfg->compute_gc_maps)
+		mono_mark_vreg_as_mp (cfg, vreg);
+#endif
+
+	return vreg;
+}
+
+static inline guint32
 alloc_dreg (MonoCompile *cfg, MonoStackType stack_type)
 {
 	switch (stack_type) {
 	case STACK_I4:
 	case STACK_PTR:
+		return alloc_ireg (cfg);
 	case STACK_MP:
+		return alloc_ireg_mp (cfg);
 	case STACK_OBJ:
-		return alloc_ireg (cfg);
+		return alloc_ireg_ref (cfg);
 	case STACK_R8:
 		return alloc_freg (cfg);
 	case STACK_I8:
@@ -365,6 +393,12 @@ alloc_dreg (MonoCompile *cfg, MonoStackType stack_type)
 	(dest)->flags = ss_loc ? MONO_INST_SINGLE_STEP_LOC : 0; \
 	} while (0)
 
+#define NEW_GC_PARAM_SLOT_LIVENESS_DEF(cfg,dest,offset,type) do { \
+	MONO_INST_NEW ((cfg), (dest), OP_GC_PARAM_SLOT_LIVENESS_DEF); \
+	(dest)->inst_offset = (offset); \
+	(dest)->inst_vtype = (type); \
+	} while (0)
+
 /*
  * Variants which do an emit as well.
  */
@@ -487,6 +521,7 @@ alloc_dreg (MonoCompile *cfg, MonoStackType stack_type)
 
 #define EMIT_NEW_STORE_MEMBASE_TYPE(cfg,dest,ltype,base,offset,sr) do { NEW_STORE_MEMBASE_TYPE ((cfg), (dest), (ltype), (base), (offset), (sr)); MONO_ADD_INS ((cfg)->cbb, (dest)); } while (0)
 
+#define EMIT_NEW_GC_PARAM_SLOT_LIVENESS_DEF(cfg,dest,offset,type) do { NEW_GC_PARAM_SLOT_LIVENESS_DEF ((cfg), (dest), (offset), (type)); MONO_ADD_INS ((cfg)->cbb, (dest)); } while (0)
 /*
  * Variants which do not take an dest argument, but take a dreg argument.
  */
@@ -588,6 +623,21 @@ alloc_dreg (MonoCompile *cfg, MonoStackType stack_type)
 	    MONO_ADD_INS ((cfg)->cbb, inst); \
 	} while (0)
 
+/* This is used on 32 bit machines too when running with LLVM */
+#define	MONO_EMIT_NEW_LCOMPARE_IMM(cfg,sr1,imm) do { \
+        MonoInst *inst; \
+        MONO_INST_NEW ((cfg), (inst), (OP_LCOMPARE_IMM)); \
+        inst->sreg1 = sr1;									\
+        if (SIZEOF_REGISTER == 4 && COMPILE_LLVM (cfg))  { 	\
+			guint64 _l = (imm);								\
+			inst->inst_imm = _l & 0xffffffff;				\
+			inst->inst_offset = _l >> 32;						\
+		} else { \
+			inst->inst_imm = (imm);		 \
+		}								 \
+	    MONO_ADD_INS ((cfg)->cbb, inst); \
+	} while (0)
+
 #define MONO_EMIT_NEW_LOAD_MEMBASE_OP(cfg,op,dr,base,offset) do { \
         MonoInst *inst; \
         MONO_INST_NEW ((cfg), (inst), (op)); \
diff --git a/mono/mini/jit-icalls.c b/mono/mini/jit-icalls.c
index 81c0451..578cc35 100644
--- a/mono/mini/jit-icalls.c
+++ b/mono/mini/jit-icalls.c
@@ -74,6 +74,8 @@ mono_helper_stelem_ref_check (MonoArray *array, MonoObject *val)
 {
 	MONO_ARCH_SAVE_REGS;
 
+	if (!array)
+		mono_raise_exception (mono_get_exception_null_reference ());
 	if (val && !mono_object_isinst (val, array->obj.vtable->klass->element_class))
 		mono_raise_exception (mono_get_exception_array_type_mismatch ());
 }
@@ -241,7 +243,7 @@ mono_idiv (gint32 a, gint32 b)
 	if (!b)
 		mono_raise_exception (mono_get_exception_divide_by_zero ());
 	else if (b == -1 && a == (0x80000000))
-		mono_raise_exception (mono_get_exception_arithmetic ());
+		mono_raise_exception (mono_get_exception_overflow ());
 #endif
 	return a / b;
 }
@@ -267,7 +269,7 @@ mono_irem (gint32 a, gint32 b)
 	if (!b)
 		mono_raise_exception (mono_get_exception_divide_by_zero ());
 	else if (b == -1 && a == (0x80000000))
-		mono_raise_exception (mono_get_exception_arithmetic ());
+		mono_raise_exception (mono_get_exception_overflow ());
 #endif
 
 	return a % b;
@@ -926,6 +928,16 @@ mono_lconv_to_r8_un (guint64 a)
 }
 #endif
 
+#if defined(__native_client_codegen__) || defined(__native_client__)
+/* When we cross-compile to Native Client we can't directly embed calls */
+/* to the math library on the host. This will use the fmod on the target*/
+double
+mono_fmod(double a, double b)
+{
+	return fmod(a, b);
+}
+#endif
+
 gpointer
 mono_helper_compile_generic_method (MonoObject *obj, MonoMethod *method, gpointer *this_arg)
 {
@@ -1033,6 +1045,67 @@ mono_object_castclass (MonoObject *obj, MonoClass *klass)
 	return NULL;
 }
 
+MonoObject*
+mono_object_castclass_with_cache (MonoObject *obj, MonoClass *klass, gpointer *cache)
+{
+	MonoJitTlsData *jit_tls = NULL;
+	gpointer cached_vtable, obj_vtable;
+
+	if (mini_get_debug_options ()->better_cast_details) {
+		jit_tls = TlsGetValue (mono_jit_tls_id);
+		jit_tls->class_cast_from = NULL;
+	}
+
+	if (!obj)
+		return NULL;
+
+	cached_vtable = *cache;
+	obj_vtable = obj->vtable;
+
+	if (cached_vtable == obj_vtable)
+		return obj;
+
+	if (mono_object_isinst (obj, klass)) {
+		*cache = obj_vtable;
+		return obj;
+	}
+
+	if (mini_get_debug_options ()->better_cast_details) {
+		jit_tls->class_cast_from = obj->vtable->klass;
+		jit_tls->class_cast_to = klass;
+	}
+
+	mono_raise_exception (mono_exception_from_name (mono_defaults.corlib,
+					"System", "InvalidCastException"));
+
+	return NULL;
+}
+
+MonoObject*
+mono_object_isinst_with_cache (MonoObject *obj, MonoClass *klass, gpointer *cache)
+{
+	size_t cached_vtable, obj_vtable;
+
+	if (!obj)
+		return NULL;
+
+	cached_vtable = (size_t)*cache;
+	obj_vtable = (size_t)obj->vtable;
+
+	if ((cached_vtable & ~0x1) == obj_vtable) {
+		return (cached_vtable & 0x1) ? NULL : obj;
+	}
+
+	if (mono_object_isinst (obj, klass)) {
+		*cache = (gpointer)obj_vtable;
+		return obj;
+	} else {
+		/*negative cache*/
+		*cache = (gpointer)(obj_vtable | 0x1);
+		return NULL;
+	}
+}
+
 gpointer
 mono_get_native_calli_wrapper (MonoImage *image, MonoMethodSignature *sig, gpointer func)
 {
diff --git a/mono/mini/jit-icalls.h b/mono/mini/jit-icalls.h
index 194a5d9..16679d3 100644
--- a/mono/mini/jit-icalls.h
+++ b/mono/mini/jit-icalls.h
@@ -85,6 +85,10 @@ double mono_conv_to_r8_un (guint32 a) MONO_INTERNAL;
 
 double mono_lconv_to_r8_un (guint64 a) MONO_INTERNAL;
 
+#if defined(__native_client_codegen__) || defined(__native_client__)
+double mono_fmod(double a, double b) MONO_INTERNAL;
+#endif
+
 gpointer mono_helper_compile_generic_method (MonoObject *obj, MonoMethod *method, gpointer *this_arg) MONO_INTERNAL;
 
 MonoString *mono_helper_ldstr (MonoImage *image, guint32 idx) MONO_INTERNAL;
@@ -163,5 +167,11 @@ MonoObject* mono_object_castclass (MonoObject *obj, MonoClass *klass) MONO_INTER
 
 gpointer mono_get_native_calli_wrapper (MonoImage *image, MonoMethodSignature *sig, gpointer func) MONO_INTERNAL;
 
+MonoObject*
+mono_object_isinst_with_cache (MonoObject *obj, MonoClass *klass, gpointer *cache);
+
+MonoObject*
+mono_object_castclass_with_cache (MonoObject *obj, MonoClass *klass, gpointer *cache);
+
 #endif /* __MONO_JIT_ICALLS_H__ */
 
diff --git a/mono/mini/liveness.c b/mono/mini/liveness.c
index 49c02e9..00cb50c 100644
--- a/mono/mini/liveness.c
+++ b/mono/mini/liveness.c
@@ -725,14 +725,15 @@ mono_linterval_split (MonoCompile *cfg, MonoLiveInterval *interval, MonoLiveInte
 	}
 }
 
-#ifdef ENABLE_LIVENESS2
-
-#if 0
-#define LIVENESS_DEBUG(a) do { a; } while (0)
+#if 1
+#define LIVENESS_DEBUG(a) do { if (cfg->verbose_level > 1) do { a; } while (0); } while (0)
+#define ENABLE_LIVENESS_DEBUG 1
 #else
 #define LIVENESS_DEBUG(a)
 #endif
 
+#ifdef ENABLE_LIVENESS2
+
 static inline void
 update_liveness2 (MonoCompile *cfg, MonoInst *ins, gboolean set_volatile, int inst_num, gint32 *last_use)
 {
@@ -927,3 +928,169 @@ mono_analyze_liveness2 (MonoCompile *cfg)
 }
 
 #endif
+
+#ifdef HAVE_SGEN_GC
+
+#define ALIGN_TO(val,align) ((((guint64)val) + ((align) - 1)) & ~((align) - 1))
+
+static inline void
+update_liveness_gc (MonoCompile *cfg, MonoBasicBlock *bb, MonoInst *ins, gint32 *last_use, MonoMethodVar **vreg_to_varinfo, GSList **callsites)
+{
+	if (ins->opcode == OP_GC_LIVENESS_DEF || ins->opcode == OP_GC_LIVENESS_USE) {
+		int vreg = ins->inst_c1;
+		MonoMethodVar *vi = vreg_to_varinfo [vreg];
+		int idx = vi->idx;
+		int pc_offset = ins->backend.pc_offset;
+
+		LIVENESS_DEBUG (printf ("\t%x: ", pc_offset); mono_print_ins (ins));
+
+		if (ins->opcode == OP_GC_LIVENESS_DEF) {
+			if (last_use [idx] > 0) {
+				LIVENESS_DEBUG (printf ("\tadd range to R%d: [%x, %x)\n", vreg, pc_offset, last_use [idx]));
+				last_use [idx] = 0;
+			}
+		} else {
+			if (last_use [idx] == 0) {
+				LIVENESS_DEBUG (printf ("\tlast use of R%d set to %x\n", vreg, pc_offset));
+				last_use [idx] = pc_offset;
+			}
+		}
+	} else if (ins->opcode == OP_GC_PARAM_SLOT_LIVENESS_DEF) {
+		GCCallSite *last;
+
+		/* Add it to the last callsite */
+		g_assert (*callsites);
+		last = (*callsites)->data;
+		last->param_slots = g_slist_prepend_mempool (cfg->mempool, last->param_slots, ins);
+	} else if (ins->flags & MONO_INST_GC_CALLSITE) {
+		GCCallSite *callsite = mono_mempool_alloc0 (cfg->mempool, sizeof (GCCallSite));
+		int i;
+
+		LIVENESS_DEBUG (printf ("\t%x: ", ins->backend.pc_offset); mono_print_ins (ins));
+		LIVENESS_DEBUG (printf ("\t\tlive: "));
+
+		callsite->bb = bb;
+		callsite->liveness = mono_mempool_alloc0 (cfg->mempool, ALIGN_TO (cfg->num_varinfo, 8) / 8);
+		callsite->pc_offset = ins->backend.pc_offset;
+		for (i = 0; i < cfg->num_varinfo; ++i) {
+			if (last_use [i] != 0) {
+				LIVENESS_DEBUG (printf ("R%d", MONO_VARINFO (cfg, i)->vreg));
+				callsite->liveness [i / 8] |= (1 << (i % 8));
+			}
+		}
+		LIVENESS_DEBUG (printf ("\n"));
+		*callsites = g_slist_prepend_mempool (cfg->mempool, *callsites, callsite);
+	}
+}
+
+static inline int
+get_vreg_from_var (MonoCompile *cfg, MonoInst *var)
+{
+	if (var->opcode == OP_REGVAR)
+		/* dreg contains a hreg, but inst_c0 still contains the var index */
+		return MONO_VARINFO (cfg, var->inst_c0)->vreg;
+	else
+		/* dreg still contains the vreg */
+		return var->dreg;
+}
+
+/*
+ * mono_analyze_liveness_gc:
+ *
+ *   Compute liveness bitmaps for each call site.
+ * This function is a modified version of mono_analyze_liveness2 ().
+ */
+void
+mono_analyze_liveness_gc (MonoCompile *cfg)
+{
+	int idx, i, j, nins, rem, max, max_vars, block_from, block_to, pos, reverse_len;
+	gint32 *last_use;
+	MonoInst **reverse;
+	MonoMethodVar **vreg_to_varinfo = NULL;
+	MonoBasicBlock *bb;
+	GSList *callsites;
+
+	LIVENESS_DEBUG (printf ("\n------------ GC LIVENESS: ----------\n"));
+
+	max_vars = cfg->num_varinfo;
+	last_use = g_new0 (gint32, max_vars);
+
+	/*
+	 * var->inst_c0 no longer contains the variable index, so compute a mapping now.
+	 */
+	vreg_to_varinfo = g_new0 (MonoMethodVar*, cfg->next_vreg);
+	for (idx = 0; idx < max_vars; ++idx) {
+		MonoMethodVar *vi = MONO_VARINFO (cfg, idx);
+
+		vreg_to_varinfo [vi->vreg] = vi;
+	}
+
+	reverse_len = 1024;
+	reverse = mono_mempool_alloc (cfg->mempool, sizeof (MonoInst*) * reverse_len);
+
+	for (bb = cfg->bb_entry; bb; bb = bb->next_bb) {
+		MonoInst *ins;
+
+		block_from = bb->real_native_offset;
+		block_to = bb->native_offset + bb->native_length;
+
+		LIVENESS_DEBUG (printf ("GC LIVENESS BB%d:\n", bb->block_num));
+
+		if (!bb->code)
+			continue;
+
+		memset (last_use, 0, max_vars * sizeof (gint32));
+		
+		/* For variables in bb->live_out, set last_use to block_to */
+
+		rem = max_vars % BITS_PER_CHUNK;
+		max = ((max_vars + (BITS_PER_CHUNK -1)) / BITS_PER_CHUNK);
+		for (j = 0; j < max; ++j) {
+			gsize bits_out;
+			int k;
+
+			if (!bb->live_out_set)
+				/* The variables used in this bblock are volatile anyway */
+				continue;
+
+			bits_out = mono_bitset_get_fast (bb->live_out_set, j);
+			k = (j * BITS_PER_CHUNK);	
+			while (bits_out) {
+				if ((bits_out & 1) && cfg->varinfo [k]->flags & MONO_INST_GC_TRACK) {
+					int vreg = get_vreg_from_var (cfg, cfg->varinfo [k]);
+					LIVENESS_DEBUG (printf ("Var R%d live at exit, last_use set to %x.\n", vreg, block_to));
+					last_use [k] = block_to;
+				}
+				bits_out >>= 1;
+				k ++;
+			}
+		}
+
+		for (nins = 0, pos = block_from, ins = bb->code; ins; ins = ins->next, ++nins, ++pos) {
+			if (nins >= reverse_len) {
+				int new_reverse_len = reverse_len * 2;
+				MonoInst **new_reverse = mono_mempool_alloc (cfg->mempool, sizeof (MonoInst*) * new_reverse_len);
+				memcpy (new_reverse, reverse, sizeof (MonoInst*) * reverse_len);
+				reverse = new_reverse;
+				reverse_len = new_reverse_len;
+			}
+
+			reverse [nins] = ins;
+		}
+
+		/* Process instructions backwards */
+		callsites = NULL;
+		for (i = nins - 1; i >= 0; --i) {
+			MonoInst *ins = (MonoInst*)reverse [i];
+
+			update_liveness_gc (cfg, bb, ins, last_use, vreg_to_varinfo, &callsites);
+		}
+		/* The callsites should already be sorted by pc offset because we added them backwards */
+		bb->gc_callsites = callsites;
+	}
+
+	g_free (last_use);
+	g_free (vreg_to_varinfo);
+}
+
+#endif
diff --git a/mono/mini/method-to-ir.c b/mono/mini/method-to-ir.c
index 3a123a4..2957868 100644
--- a/mono/mini/method-to-ir.c
+++ b/mono/mini/method-to-ir.c
@@ -30,6 +30,7 @@
 #include <mono/utils/memcheck.h>
 
 #include <mono/metadata/assembly.h>
+#include <mono/metadata/attrdefs.h>
 #include <mono/metadata/loader.h>
 #include <mono/metadata/tabledefs.h>
 #include <mono/metadata/class.h>
@@ -74,7 +75,7 @@
 #define METHOD_ACCESS_FAILURE do {	\
 		char *method_fname = mono_method_full_name (method, TRUE);	\
 		char *cil_method_fname = mono_method_full_name (cil_method, TRUE);	\
-		cfg->exception_type = MONO_EXCEPTION_METHOD_ACCESS;	\
+		mono_cfg_set_exception (cfg, MONO_EXCEPTION_METHOD_ACCESS);		\
 		cfg->exception_message = g_strdup_printf ("Method `%s' is inaccessible from method `%s'\n", cil_method_fname, method_fname);	\
 		g_free (method_fname);	\
 		g_free (cil_method_fname);	\
@@ -83,7 +84,7 @@
 #define FIELD_ACCESS_FAILURE do {	\
 		char *method_fname = mono_method_full_name (method, TRUE);	\
 		char *field_fname = mono_field_full_name (field);	\
-		cfg->exception_type = MONO_EXCEPTION_FIELD_ACCESS;	\
+		mono_cfg_set_exception (cfg, MONO_EXCEPTION_FIELD_ACCESS);		\
 		cfg->exception_message = g_strdup_printf ("Field `%s' is inaccessible from method `%s'\n", field_fname, method_fname);	\
 		g_free (method_fname);	\
 		g_free (field_fname);	\
@@ -93,11 +94,14 @@
 		if (cfg->generic_sharing_context) {	\
             if (cfg->verbose_level > 2) \
 			    printf ("sharing failed for method %s.%s.%s/%d opcode %s line %d\n", method->klass->name_space, method->klass->name, method->name, method->signature->param_count, mono_opcode_name ((opcode)), __LINE__); \
-			cfg->exception_type = MONO_EXCEPTION_GENERIC_SHARING_FAILED;	\
+			mono_cfg_set_exception (cfg, MONO_EXCEPTION_GENERIC_SHARING_FAILED); \
 			goto exception_exit;	\
 		}			\
 	} while (0)
-
+#define OUT_OF_MEMORY_FAILURE do {	\
+		mono_cfg_set_exception (cfg, MONO_EXCEPTION_OUT_OF_MEMORY);		\
+		goto exception_exit;	\
+	} while (0)
 /* Determine whenever 'ins' represents a load of the 'this' argument */
 #define MONO_CHECK_THIS(ins) (mono_method_signature (cfg->method)->hasthis && ((ins)->opcode == OP_MOVE) && ((ins)->sreg1 == cfg->args [0]->dreg))
 
@@ -111,14 +115,14 @@ MonoInst* mono_emit_native_call (MonoCompile *cfg, gconstpointer func, MonoMetho
 void mini_emit_stobj (MonoCompile *cfg, MonoInst *dest, MonoInst *src, MonoClass *klass, gboolean native);
 void mini_emit_initobj (MonoCompile *cfg, MonoInst *dest, const guchar *ip, MonoClass *klass);
 
-/* helper methods signature */
-extern MonoMethodSignature *helper_sig_class_init_trampoline;
-extern MonoMethodSignature *helper_sig_domain_get;
-extern MonoMethodSignature *helper_sig_generic_class_init_trampoline;
-extern MonoMethodSignature *helper_sig_generic_class_init_trampoline_llvm;
-extern MonoMethodSignature *helper_sig_rgctx_lazy_fetch_trampoline;
-extern MonoMethodSignature *helper_sig_monitor_enter_exit_trampoline;
-extern MonoMethodSignature *helper_sig_monitor_enter_exit_trampoline_llvm;
+/* helper methods signatures */
+static MonoMethodSignature *helper_sig_class_init_trampoline = NULL;
+static MonoMethodSignature *helper_sig_domain_get = NULL;
+static MonoMethodSignature *helper_sig_generic_class_init_trampoline = NULL;
+static MonoMethodSignature *helper_sig_generic_class_init_trampoline_llvm = NULL;
+static MonoMethodSignature *helper_sig_rgctx_lazy_fetch_trampoline = NULL;
+static MonoMethodSignature *helper_sig_monitor_enter_exit_trampoline = NULL;
+static MonoMethodSignature *helper_sig_monitor_enter_exit_trampoline_llvm = NULL;
 
 /*
  * Instruction metadata
@@ -199,6 +203,44 @@ mono_alloc_dreg (MonoCompile *cfg, MonoStackType stack_type)
 	return alloc_dreg (cfg, stack_type);
 }
 
+/*
+ * mono_alloc_ireg_ref:
+ *
+ *   Allocate an IREG, and mark it as holding a GC ref.
+ */
+guint32
+mono_alloc_ireg_ref (MonoCompile *cfg)
+{
+	return alloc_ireg_ref (cfg);
+}
+
+/*
+ * mono_alloc_ireg_mp:
+ *
+ *   Allocate an IREG, and mark it as holding a managed pointer.
+ */
+guint32
+mono_alloc_ireg_mp (MonoCompile *cfg)
+{
+	return alloc_ireg_mp (cfg);
+}
+
+/*
+ * mono_alloc_ireg_copy:
+ *
+ *   Allocate an IREG with the same GC type as VREG.
+ */
+guint32
+mono_alloc_ireg_copy (MonoCompile *cfg, guint32 vreg)
+{
+	if (vreg_is_ref (cfg, vreg))
+		return alloc_ireg_ref (cfg);
+	else if (vreg_is_mp (cfg, vreg))
+		return alloc_ireg_mp (cfg);
+	else
+		return alloc_ireg (cfg);
+}
+
 guint
 mono_type_to_regmove (MonoCompile *cfg, MonoType *type)
 {
@@ -280,6 +322,18 @@ mono_print_bb (MonoBasicBlock *bb, const char *msg)
 		mono_print_ins_index (-1, tree);
 }
 
+void
+mono_create_helper_signatures (void)
+{
+	helper_sig_domain_get = mono_create_icall_signature ("ptr");
+	helper_sig_class_init_trampoline = mono_create_icall_signature ("void");
+	helper_sig_generic_class_init_trampoline = mono_create_icall_signature ("void");
+	helper_sig_generic_class_init_trampoline_llvm = mono_create_icall_signature ("void ptr");
+	helper_sig_rgctx_lazy_fetch_trampoline = mono_create_icall_signature ("ptr ptr");
+	helper_sig_monitor_enter_exit_trampoline = mono_create_icall_signature ("void");
+	helper_sig_monitor_enter_exit_trampoline_llvm = mono_create_icall_signature ("void object");
+}
+
 /* 
  * Can't put this at the beginning, since other files reference stuff from this
  * file.
@@ -288,6 +342,8 @@ mono_print_bb (MonoBasicBlock *bb, const char *msg)
 
 #define UNVERIFIED do { if (mini_get_debug_options ()->break_on_unverified) G_BREAKPOINT (); else goto unverified; } while (0)
 
+#define LOAD_ERROR do { if (mini_get_debug_options ()->break_on_unverified) G_BREAKPOINT (); else goto load_error; } while (0)
+
 #define GET_BBLOCK(cfg,tblock,ip) do {	\
 		(tblock) = cfg->cil_offset_to_bb [(ip) - cfg->cil_start]; \
 		if (!(tblock)) {	\
@@ -301,7 +357,7 @@ mono_print_bb (MonoBasicBlock *bb, const char *msg)
 #if defined(TARGET_X86) || defined(TARGET_AMD64)
 #define EMIT_NEW_X86_LEA(cfg,dest,sr1,sr2,shift,imm) do { \
 		MONO_INST_NEW (cfg, dest, OP_X86_LEA); \
-		(dest)->dreg = alloc_preg ((cfg)); \
+		(dest)->dreg = alloc_ireg_mp ((cfg)); \
 		(dest)->sreg1 = (sr1); \
 		(dest)->sreg2 = (sr2); \
 		(dest)->inst_imm = (imm); \
@@ -776,7 +832,7 @@ type_from_op (MonoInst *ins, MonoInst *src1, MonoInst *src2) {
 	case OP_LCOMPARE:
 	case OP_ICOMPARE:
 		ins->type = bin_comp_table [src1->type] [src2->type] ? STACK_I4: STACK_INV;
-		if ((src1->type == STACK_I8) || ((SIZEOF_REGISTER == 8) && ((src1->type == STACK_PTR) || (src1->type == STACK_OBJ) || (src1->type == STACK_MP))))
+		if ((src1->type == STACK_I8) || ((SIZEOF_VOID_P == 8) && ((src1->type == STACK_PTR) || (src1->type == STACK_OBJ) || (src1->type == STACK_MP))))
 			ins->opcode = OP_LCOMPARE;
 		else if (src1->type == STACK_R8)
 			ins->opcode = OP_FCOMPARE;
@@ -785,7 +841,7 @@ type_from_op (MonoInst *ins, MonoInst *src1, MonoInst *src2) {
 		break;
 	case OP_ICOMPARE_IMM:
 		ins->type = bin_comp_table [src1->type] [src1->type] ? STACK_I4 : STACK_INV;
-		if ((src1->type == STACK_I8) || ((SIZEOF_REGISTER == 8) && ((src1->type == STACK_PTR) || (src1->type == STACK_OBJ) || (src1->type == STACK_MP))))
+		if ((src1->type == STACK_I8) || ((SIZEOF_VOID_P == 8) && ((src1->type == STACK_PTR) || (src1->type == STACK_OBJ) || (src1->type == STACK_MP))))
 			ins->opcode = OP_LCOMPARE_IMM;		
 		break;
 	case CEE_BEQ:
@@ -873,7 +929,7 @@ type_from_op (MonoInst *ins, MonoInst *src1, MonoInst *src2) {
 			break;
 		case STACK_PTR:
 		case STACK_MP:
-#if SIZEOF_REGISTER == 8
+#if SIZEOF_VOID_P == 8
 			ins->opcode = OP_LCONV_TO_U;
 #else
 			ins->opcode = OP_MOVE;
@@ -2149,7 +2205,7 @@ mono_patch_info_new (MonoMemPool *mp, int ip, MonoJumpInfoType type, gconstpoint
 
 inline static MonoCallInst *
 mono_emit_call_args (MonoCompile *cfg, MonoMethodSignature *sig, 
-					 MonoInst **args, int calli, int virtual, int tail)
+					 MonoInst **args, int calli, int virtual, int tail, int rgctx)
 {
 	MonoCallInst *call;
 #ifdef MONO_ARCH_SOFT_FLOAT
@@ -2163,6 +2219,7 @@ mono_emit_call_args (MonoCompile *cfg, MonoMethodSignature *sig,
 
 	call->args = args;
 	call->signature = sig;
+	call->rgctx_reg = rgctx;
 
 	type_to_eval_stack_type ((cfg), sig->ret, &call->inst);
 
@@ -2244,18 +2301,6 @@ mono_emit_call_args (MonoCompile *cfg, MonoMethodSignature *sig,
 	return call;
 }
 
-inline static MonoInst*
-mono_emit_calli (MonoCompile *cfg, MonoMethodSignature *sig, MonoInst **args, MonoInst *addr)
-{
-	MonoCallInst *call = mono_emit_call_args (cfg, sig, args, TRUE, FALSE, FALSE);
-
-	call->inst.sreg1 = addr->dreg;
-
-	MONO_ADD_INS (cfg->cbb, (MonoInst*)call);
-
-	return (MonoInst*)call;
-}
-
 static void
 set_rgctx_arg (MonoCompile *cfg, MonoCallInst *call, int rgctx_reg, MonoInst *rgctx_arg)
 {
@@ -2272,7 +2317,7 @@ set_rgctx_arg (MonoCompile *cfg, MonoCallInst *call, int rgctx_reg, MonoInst *rg
 }	
 
 inline static MonoInst*
-mono_emit_rgctx_calli (MonoCompile *cfg, MonoMethodSignature *sig, MonoInst **args, MonoInst *addr, MonoInst *rgctx_arg)
+mono_emit_calli (MonoCompile *cfg, MonoMethodSignature *sig, MonoInst **args, MonoInst *addr, MonoInst *rgctx_arg)
 {
 	MonoCallInst *call;
 	int rgctx_reg = -1;
@@ -2281,9 +2326,19 @@ mono_emit_rgctx_calli (MonoCompile *cfg, MonoMethodSignature *sig, MonoInst **ar
 		rgctx_reg = mono_alloc_preg (cfg);
 		MONO_EMIT_NEW_UNALU (cfg, OP_MOVE, rgctx_reg, rgctx_arg->dreg);
 	}
-	call = (MonoCallInst*)mono_emit_calli (cfg, sig, args, addr);
+
+	if (rgctx_arg)
+		printf ("MOO!\n");
+
+	call = mono_emit_call_args (cfg, sig, args, TRUE, FALSE, FALSE, rgctx_arg ? TRUE : FALSE);
+
+	call->inst.sreg1 = addr->dreg;
+
+	MONO_ADD_INS (cfg->cbb, (MonoInst*)call);
+
 	if (rgctx_arg)
 		set_rgctx_arg (cfg, call, rgctx_reg, rgctx_arg);
+
 	return (MonoInst*)call;
 }
 
@@ -2294,13 +2349,19 @@ emit_get_rgctx_klass (MonoCompile *cfg, int context_used, MonoClass *klass, int
 
 static MonoInst*
 mono_emit_method_call_full (MonoCompile *cfg, MonoMethod *method, MonoMethodSignature *sig,
-							MonoInst **args, MonoInst *this, MonoInst *imt_arg)
+							MonoInst **args, MonoInst *this, MonoInst *imt_arg, MonoInst *rgctx_arg)
 {
 	gboolean might_be_remote;
 	gboolean virtual = this != NULL;
 	gboolean enable_for_aot = TRUE;
 	int context_used;
 	MonoCallInst *call;
+	int rgctx_reg = 0;
+
+	if (rgctx_arg) {
+		rgctx_reg = mono_alloc_preg (cfg);
+		MONO_EMIT_NEW_UNALU (cfg, OP_MOVE, rgctx_reg, rgctx_arg->dreg);
+	}
 
 	if (method->string_ctor) {
 		/* Create the real signature */
@@ -2323,10 +2384,10 @@ mono_emit_method_call_full (MonoCompile *cfg, MonoMethod *method, MonoMethodSign
 
 		addr = emit_get_rgctx_method (cfg, context_used, method, MONO_RGCTX_INFO_REMOTING_INVOKE_WITH_CHECK);
 
-		return mono_emit_calli (cfg, sig, args, addr);
+		return mono_emit_calli (cfg, sig, args, addr, NULL);
 	}
 
-	call = mono_emit_call_args (cfg, sig, args, FALSE, virtual, FALSE);
+	call = mono_emit_call_args (cfg, sig, args, FALSE, virtual, FALSE, rgctx_arg ? TRUE : FALSE);
 
 	if (might_be_remote)
 		call->method = mono_marshal_get_remoting_invoke_with_check (method);
@@ -2432,34 +2493,16 @@ mono_emit_method_call_full (MonoCompile *cfg, MonoMethod *method, MonoMethodSign
 
 	MONO_ADD_INS (cfg->cbb, (MonoInst*)call);
 
-	return (MonoInst*)call;
-}
-
-static MonoInst*
-mono_emit_rgctx_method_call_full (MonoCompile *cfg, MonoMethod *method, MonoMethodSignature *sig,
-		MonoInst **args, MonoInst *this, MonoInst *imt_arg, MonoInst *vtable_arg)
-{
-	int rgctx_reg = 0;
-	MonoInst *ins;
-	MonoCallInst *call;
-
-	if (vtable_arg) {
-		rgctx_reg = mono_alloc_preg (cfg);
-		MONO_EMIT_NEW_UNALU (cfg, OP_MOVE, rgctx_reg, vtable_arg->dreg);
-	}
-	ins = mono_emit_method_call_full (cfg, method, sig, args, this, imt_arg);
-
-	call = (MonoCallInst*)ins;
-	if (vtable_arg)
-		set_rgctx_arg (cfg, call, rgctx_reg, vtable_arg);
+	if (rgctx_arg)
+		set_rgctx_arg (cfg, call, rgctx_reg, rgctx_arg);
 
-	return ins;
+	return (MonoInst*)call;
 }
 
 MonoInst*
 mono_emit_method_call (MonoCompile *cfg, MonoMethod *method, MonoInst **args, MonoInst *this)
 {
-	return mono_emit_method_call_full (cfg, method, mono_method_signature (method), args, this, NULL);
+	return mono_emit_method_call_full (cfg, method, mono_method_signature (method), args, this, NULL, NULL);
 }
 
 MonoInst*
@@ -2470,7 +2513,7 @@ mono_emit_native_call (MonoCompile *cfg, gconstpointer func, MonoMethodSignature
 
 	g_assert (sig);
 
-	call = mono_emit_call_args (cfg, sig, args, FALSE, FALSE, FALSE);
+	call = mono_emit_call_args (cfg, sig, args, FALSE, FALSE, FALSE, FALSE);
 	call->fptr = func;
 
 	MONO_ADD_INS (cfg->cbb, (MonoInst*)call);
@@ -2593,19 +2636,26 @@ create_write_barrier_bitmap (MonoClass *klass, unsigned *wb_bitmap, int offset)
 static void
 emit_write_barrier (MonoCompile *cfg, MonoInst *ptr, MonoInst *value, int value_reg)
 {
-#ifdef HAVE_SGEN_GC
 	int card_table_shift_bits;
 	gpointer card_table_mask;
-	guint8 *card_table = mono_gc_get_card_table (&card_table_shift_bits, &card_table_mask);
+	guint8 *card_table;
 	MonoInst *dummy_use;
-
-#ifdef MONO_ARCH_HAVE_CARD_TABLE_WBARRIER
 	int nursery_shift_bits;
 	size_t nursery_size;
+	gboolean has_card_table_wb = FALSE;
+
+	if (!cfg->gen_write_barriers)
+		return;
+
+	card_table = mono_gc_get_card_table (&card_table_shift_bits, &card_table_mask);
 
 	mono_gc_get_nursery (&nursery_shift_bits, &nursery_size);
 
-	if (!cfg->compile_aot && card_table && nursery_shift_bits > 0) {
+#ifdef MONO_ARCH_HAVE_CARD_TABLE_WBARRIER
+	has_card_table_wb = TRUE;
+#endif
+
+	if (has_card_table_wb && !cfg->compile_aot && card_table && nursery_shift_bits > 0) {
 		MonoInst *wbarrier;
 
 		MONO_INST_NEW (cfg, wbarrier, OP_CARD_TABLE_WBARRIER);
@@ -2615,9 +2665,7 @@ emit_write_barrier (MonoCompile *cfg, MonoInst *ptr, MonoInst *value, int value_
 		else
 			wbarrier->sreg2 = value_reg;
 		MONO_ADD_INS (cfg->cbb, wbarrier);
-	} else
-#endif
-	if (card_table) {
+	} else if (card_table) {
 		int offset_reg = alloc_preg (cfg);
 		int card_reg  = alloc_preg (cfg);
 		MonoInst *ins;
@@ -2652,7 +2700,6 @@ emit_write_barrier (MonoCompile *cfg, MonoInst *ptr, MonoInst *value, int value_
 		dummy_use->sreg1 = value_reg;
 		MONO_ADD_INS (cfg->cbb, dummy_use);
 	}
-#endif
 }
 
 static gboolean
@@ -2886,10 +2933,9 @@ emit_get_rgctx (MonoCompile *cfg, MonoMethod *method, int context_used)
 		return vtable_var;
 	} else {
 		MonoInst *ins;
-		int vtable_reg, res_reg;
+		int vtable_reg;
 	
 		vtable_reg = alloc_preg (cfg);
-		res_reg = alloc_preg (cfg);
 		EMIT_NEW_LOAD_MEMBASE (cfg, ins, OP_LOAD_MEMBASE, vtable_reg, this->dreg, G_STRUCT_OFFSET (MonoObject, vtable));
 		return ins;
 	}
@@ -3002,6 +3048,43 @@ emit_generic_class_init (MonoCompile *cfg, MonoClass *klass)
 #endif
 }
 
+static void
+save_cast_details (MonoCompile *cfg, MonoClass *klass, int obj_reg)
+{
+	if (mini_get_debug_options ()->better_cast_details) {
+		int to_klass_reg = alloc_preg (cfg);
+		int vtable_reg = alloc_preg (cfg);
+		int klass_reg = alloc_preg (cfg);
+		MonoInst *tls_get = mono_get_jit_tls_intrinsic (cfg);
+
+		if (!tls_get) {
+			fprintf (stderr, "error: --debug=casts not supported on this platform.\n.");
+			exit (1);
+		}
+
+		MONO_ADD_INS (cfg->cbb, tls_get);
+		MONO_EMIT_NEW_LOAD_MEMBASE (cfg, vtable_reg, obj_reg, G_STRUCT_OFFSET (MonoObject, vtable));
+		MONO_EMIT_NEW_LOAD_MEMBASE (cfg, klass_reg, vtable_reg, G_STRUCT_OFFSET (MonoVTable, klass));
+
+		MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STORE_MEMBASE_REG, tls_get->dreg, G_STRUCT_OFFSET (MonoJitTlsData, class_cast_from), klass_reg);
+		MONO_EMIT_NEW_PCONST (cfg, to_klass_reg, klass);
+		MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STORE_MEMBASE_REG, tls_get->dreg, G_STRUCT_OFFSET (MonoJitTlsData, class_cast_to), to_klass_reg);
+	}
+}
+
+static void
+reset_cast_details (MonoCompile *cfg)
+{
+	/* Reset the variables holding the cast details */
+	if (mini_get_debug_options ()->better_cast_details) {
+		MonoInst *tls_get = mono_get_jit_tls_intrinsic (cfg);
+
+		MONO_ADD_INS (cfg->cbb, tls_get);
+		/* It is enough to reset the from field */
+		MONO_EMIT_NEW_STORE_MEMBASE_IMM (cfg, OP_STORE_MEMBASE_IMM, tls_get->dreg, G_STRUCT_OFFSET (MonoJitTlsData, class_cast_from), 0);
+	}
+}
+
 /*
  * On return the caller must check @array_class for load errors
  */
@@ -3014,8 +3097,10 @@ mini_emit_check_array_type (MonoCompile *cfg, MonoInst *obj, MonoClass *array_cl
 	if (cfg->generic_sharing_context)
 		context_used = mono_class_check_context_used (array_class);
 
+	save_cast_details (cfg, array_class, obj->dreg);
+
 	MONO_EMIT_NEW_LOAD_MEMBASE_FAULT (cfg, vtable_reg, obj->dreg, G_STRUCT_OFFSET (MonoObject, vtable));
-				       
+
 	if (cfg->opt & MONO_OPT_SHARED) {
 		int class_reg = alloc_preg (cfg);
 		MONO_EMIT_NEW_LOAD_MEMBASE (cfg, class_reg, vtable_reg, G_STRUCT_OFFSET (MonoVTable, klass));
@@ -3050,43 +3135,8 @@ mini_emit_check_array_type (MonoCompile *cfg, MonoInst *obj, MonoClass *array_cl
 	}
 	
 	MONO_EMIT_NEW_COND_EXC (cfg, NE_UN, "ArrayTypeMismatchException");
-}
 
-static void
-save_cast_details (MonoCompile *cfg, MonoClass *klass, int obj_reg)
-{
-	if (mini_get_debug_options ()->better_cast_details) {
-		int to_klass_reg = alloc_preg (cfg);
-		int vtable_reg = alloc_preg (cfg);
-		int klass_reg = alloc_preg (cfg);
-		MonoInst *tls_get = mono_get_jit_tls_intrinsic (cfg);
-
-		if (!tls_get) {
-			fprintf (stderr, "error: --debug=casts not supported on this platform.\n.");
-			exit (1);
-		}
-
-		MONO_ADD_INS (cfg->cbb, tls_get);
-		MONO_EMIT_NEW_LOAD_MEMBASE (cfg, vtable_reg, obj_reg, G_STRUCT_OFFSET (MonoObject, vtable));
-		MONO_EMIT_NEW_LOAD_MEMBASE (cfg, klass_reg, vtable_reg, G_STRUCT_OFFSET (MonoVTable, klass));
-
-		MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STORE_MEMBASE_REG, tls_get->dreg, G_STRUCT_OFFSET (MonoJitTlsData, class_cast_from), klass_reg);
-		MONO_EMIT_NEW_PCONST (cfg, to_klass_reg, klass);
-		MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STORE_MEMBASE_REG, tls_get->dreg, G_STRUCT_OFFSET (MonoJitTlsData, class_cast_to), to_klass_reg);
-	}
-}
-
-static void
-reset_cast_details (MonoCompile *cfg)
-{
-	/* Reset the variables holding the cast details */
-	if (mini_get_debug_options ()->better_cast_details) {
-		MonoInst *tls_get = mono_get_jit_tls_intrinsic (cfg);
-
-		MONO_ADD_INS (cfg->cbb, tls_get);
-		/* It is enough to reset the from field */
-		MONO_EMIT_NEW_STORE_MEMBASE_IMM (cfg, OP_STORE_MEMBASE_IMM, tls_get->dreg, G_STRUCT_OFFSET (MonoJitTlsData, class_cast_from), 0);
-	}
+	reset_cast_details (cfg);
 }
 
 /**
@@ -3109,7 +3159,7 @@ handle_unbox_nullable (MonoCompile* cfg, MonoInst* val, MonoClass* klass, int co
 
 		rgctx = emit_get_rgctx (cfg, method, context_used);
 
-		return mono_emit_rgctx_calli (cfg, mono_method_signature (method), &val, addr, rgctx);
+		return mono_emit_calli (cfg, mono_method_signature (method), &val, addr, rgctx);
 	} else {
 		return mono_emit_method_call (cfg, method, &val, NULL);
 	}
@@ -3156,7 +3206,7 @@ handle_unbox (MonoCompile *cfg, MonoClass *klass, MonoInst **sp, int context_use
 		reset_cast_details (cfg);
 	}
 
-	NEW_BIALU_IMM (cfg, add, OP_ADD_IMM, alloc_dreg (cfg, STACK_PTR), obj_reg, sizeof (MonoObject));
+	NEW_BIALU_IMM (cfg, add, OP_ADD_IMM, alloc_dreg (cfg, STACK_MP), obj_reg, sizeof (MonoObject));
 	MONO_ADD_INS (cfg->cbb, add);
 	add->type = STACK_MP;
 	add->klass = klass;
@@ -3220,7 +3270,7 @@ handle_alloc (MonoCompile *cfg, MonoClass *klass, gboolean for_box, int context_
 		gboolean pass_lw;
 
 		if (!vtable) {
-			cfg->exception_type = MONO_EXCEPTION_TYPE_LOAD;
+			mono_cfg_set_exception (cfg, MONO_EXCEPTION_TYPE_LOAD);
 			cfg->exception_ptr = klass;
 			return NULL;
 		}
@@ -3266,7 +3316,7 @@ handle_box (MonoCompile *cfg, MonoInst *val, MonoClass *klass, int context_used)
 													MONO_RGCTX_INFO_GENERIC_METHOD_CODE);
 			MonoInst *rgctx = emit_get_rgctx (cfg, cfg->current_method, context_used);
 
-			return mono_emit_rgctx_calli (cfg, mono_method_signature (method), &val, addr, rgctx);
+			return mono_emit_calli (cfg, mono_method_signature (method), &val, addr, rgctx);
 		} else {
 			return mono_emit_method_call (cfg, method, &val, NULL);
 		}
@@ -3281,8 +3331,40 @@ handle_box (MonoCompile *cfg, MonoInst *val, MonoClass *klass, int context_used)
 	return alloc;
 }
 
+
+static gboolean
+mini_class_has_reference_variant_generic_argument (MonoClass *klass, int context_used)
+{
+	int i;
+	MonoGenericContainer *container;
+	MonoGenericInst *ginst;
+
+	if (klass->generic_class) {
+		container = klass->generic_class->container_class->generic_container;
+		ginst = klass->generic_class->context.class_inst;
+	} else if (klass->generic_container && context_used) {
+		container = klass->generic_container;
+		ginst = container->context.class_inst;
+	} else {
+		return FALSE;
+	}
+
+	for (i = 0; i < container->type_argc; ++i) {
+		MonoType *type;
+		if (!(mono_generic_container_get_param_info (container, i)->flags & (MONO_GEN_PARAM_VARIANT|MONO_GEN_PARAM_COVARIANT)))
+			continue;
+		type = ginst->type_argv [i];
+		if (MONO_TYPE_IS_REFERENCE (type))
+			return TRUE;
+
+		if (context_used && (type->type == MONO_TYPE_VAR || type->type == MONO_TYPE_MVAR))
+			return TRUE;
+	}
+	return FALSE;
+}
+
 // FIXME: This doesn't work yet (class libs tests fail?)
-#define is_complex_isinst(klass) (TRUE || (klass->flags & TYPE_ATTRIBUTE_INTERFACE) || klass->rank || mono_class_is_nullable (klass) || klass->marshalbyref || (klass->flags & TYPE_ATTRIBUTE_SEALED) || mono_class_has_variant_generic_params (klass) || klass->byval_arg.type == MONO_TYPE_VAR || klass->byval_arg.type == MONO_TYPE_MVAR)
+#define is_complex_isinst(klass) (TRUE || (klass->flags & TYPE_ATTRIBUTE_INTERFACE) || klass->rank || mono_class_is_nullable (klass) || klass->marshalbyref || (klass->flags & TYPE_ATTRIBUTE_SEALED) || klass->byval_arg.type == MONO_TYPE_VAR || klass->byval_arg.type == MONO_TYPE_MVAR)
 
 /*
  * Returns NULL and set the cfg exception on error.
@@ -3296,10 +3378,27 @@ handle_castclass (MonoCompile *cfg, MonoClass *klass, MonoInst *src, int context
 	MonoInst *klass_inst = NULL;
 
 	if (context_used) {
-		MonoInst *args [2];
+		MonoInst *args [3];
+
+		if(mini_class_has_reference_variant_generic_argument (klass, context_used)) {
+			MonoMethod *mono_castclass = mono_marshal_get_castclass_with_cache ();
+			MonoInst *cache_ins;
+
+			cache_ins = emit_get_rgctx_klass (cfg, context_used, klass, MONO_RGCTX_INFO_CAST_CACHE);
 
-		klass_inst = emit_get_rgctx_klass (cfg, context_used,
-										   klass, MONO_RGCTX_INFO_KLASS);
+			/* obj */
+			args [0] = src;
+
+			/* klass - it's the second element of the cache entry*/
+			EMIT_NEW_LOAD_MEMBASE (cfg, args [1], OP_LOAD_MEMBASE, alloc_preg (cfg), cache_ins->dreg, sizeof (gpointer));
+
+			/* cache */
+			args [2] = cache_ins;
+
+			return mono_emit_method_call (cfg, mono_castclass, args, NULL);
+		}
+
+		klass_inst = emit_get_rgctx_klass (cfg, context_used, klass, MONO_RGCTX_INFO_KLASS);
 
 		if (is_complex_isinst (klass)) {
 			/* Complex case, handle by an icall */
@@ -3336,7 +3435,7 @@ handle_castclass (MonoCompile *cfg, MonoClass *klass, MonoInst *src, int context
 			if (0) { /*FIXME what exactly is broken? This change refers to r39380 from 2005 and mention some remoting fixes were due.*/
 				MonoVTable *vt = mono_class_vtable (cfg->domain, klass);
 				if (!vt) {
-					cfg->exception_type = MONO_EXCEPTION_TYPE_LOAD;
+					mono_cfg_set_exception (cfg, MONO_EXCEPTION_TYPE_LOAD);
 					cfg->exception_ptr = klass;
 					return NULL;
 				}
@@ -3369,15 +3468,33 @@ handle_isinst (MonoCompile *cfg, MonoClass *klass, MonoInst *src, int context_us
 	MonoBasicBlock *is_null_bb, *false_bb, *end_bb;
 	int obj_reg = src->dreg;
 	int vtable_reg = alloc_preg (cfg);
-	int res_reg = alloc_preg (cfg);
+	int res_reg = alloc_ireg_ref (cfg);
 	MonoInst *klass_inst = NULL;
 
 	if (context_used) {
+		MonoInst *args [3];
+
+		if(mini_class_has_reference_variant_generic_argument (klass, context_used)) {
+			MonoMethod *mono_isinst = mono_marshal_get_isinst_with_cache ();
+			MonoInst *cache_ins;
+
+			cache_ins = emit_get_rgctx_klass (cfg, context_used, klass, MONO_RGCTX_INFO_CAST_CACHE);
+
+			/* obj */
+			args [0] = src;
+
+			/* klass - it's the second element of the cache entry*/
+			EMIT_NEW_LOAD_MEMBASE (cfg, args [1], OP_LOAD_MEMBASE, alloc_preg (cfg), cache_ins->dreg, sizeof (gpointer));
+
+			/* cache */
+			args [2] = cache_ins;
+
+			return mono_emit_method_call (cfg, mono_isinst, args, NULL);
+		}
+
 		klass_inst = emit_get_rgctx_klass (cfg, context_used, klass, MONO_RGCTX_INFO_KLASS);
 
 		if (is_complex_isinst (klass)) {
-			MonoInst *args [2];
-
 			/* Complex case, handle by an icall */
 
 			/* obj */
@@ -3462,7 +3579,7 @@ handle_isinst (MonoCompile *cfg, MonoClass *klass, MonoInst *src, int context_us
 				if (0) {/*FIXME what exactly is broken? This change refers to r39380 from 2005 and mention some remoting fixes were due.*/
 					MonoVTable *vt = mono_class_vtable (cfg->domain, klass);
 					if (!vt) {
-						cfg->exception_type = MONO_EXCEPTION_TYPE_LOAD;
+						mono_cfg_set_exception (cfg, MONO_EXCEPTION_TYPE_LOAD);
 						cfg->exception_ptr = klass;
 						return NULL;
 					}
@@ -3670,6 +3787,8 @@ handle_ccastclass (MonoCompile *cfg, MonoClass *klass, MonoInst *src)
 static G_GNUC_UNUSED MonoInst*
 handle_delegate_ctor (MonoCompile *cfg, MonoClass *klass, MonoInst *target, MonoMethod *method, int context_used)
 {
+	MonoInst *ptr;
+	int dreg;
 	gpointer *trampoline;
 	MonoInst *obj, *method_ins, *tramp_ins;
 	MonoDomain *domain;
@@ -3683,13 +3802,23 @@ handle_delegate_ctor (MonoCompile *cfg, MonoClass *klass, MonoInst *target, Mono
 
 	/* Set target field */
 	/* Optimize away setting of NULL target */
-	if (!(target->opcode == OP_PCONST && target->inst_p0 == 0))
+	if (!(target->opcode == OP_PCONST && target->inst_p0 == 0)) {
 		MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STORE_MEMBASE_REG, obj->dreg, G_STRUCT_OFFSET (MonoDelegate, target), target->dreg);
+		if (cfg->gen_write_barriers) {
+			dreg = alloc_preg (cfg);
+			EMIT_NEW_BIALU_IMM (cfg, ptr, OP_PADD_IMM, dreg, obj->dreg, G_STRUCT_OFFSET (MonoDelegate, target));
+			emit_write_barrier (cfg, ptr, target, 0);
+		}
+	}
 
 	/* Set method field */
 	method_ins = emit_get_rgctx_method (cfg, context_used, method, MONO_RGCTX_INFO_METHOD);
 	MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STORE_MEMBASE_REG, obj->dreg, G_STRUCT_OFFSET (MonoDelegate, method), method_ins->dreg);
-
+	if (cfg->gen_write_barriers) {
+		dreg = alloc_preg (cfg);
+		EMIT_NEW_BIALU_IMM (cfg, ptr, OP_PADD_IMM, dreg, obj->dreg, G_STRUCT_OFFSET (MonoDelegate, method));
+		emit_write_barrier (cfg, ptr, method_ins, 0);
+	}
 	/* 
 	 * To avoid looking up the compiled code belonging to the target method
 	 * in mono_delegate_trampoline (), we allocate a per-domain memory slot to
@@ -3952,18 +4081,20 @@ mini_emit_ldelema_1_ins (MonoCompile *cfg, MonoClass *klass, MonoInst *arr, Mono
 		static const int fast_log2 [] = { 1, 0, 1, -1, 2, -1, -1, -1, 3 };
 
 		EMIT_NEW_X86_LEA (cfg, ins, array_reg, index2_reg, fast_log2 [size], G_STRUCT_OFFSET (MonoArray, vector));
-		ins->type = STACK_PTR;
+		ins->klass = mono_class_get_element_class (klass);
+		ins->type = STACK_MP;
 
 		return ins;
 	}
 #endif		
 
-	add_reg = alloc_preg (cfg);
+	add_reg = alloc_ireg_mp (cfg);
 
 	MONO_EMIT_NEW_BIALU_IMM (cfg, OP_MUL_IMM, mult_reg, index2_reg, size);
 	MONO_EMIT_NEW_BIALU (cfg, OP_PADD, add_reg, array_reg, mult_reg);
 	NEW_BIALU_IMM (cfg, ins, OP_PADD_IMM, add_reg, add_reg, G_STRUCT_OFFSET (MonoArray, vector));
-	ins->type = STACK_PTR;
+	ins->klass = mono_class_get_element_class (klass);
+	ins->type = STACK_MP;
 	MONO_ADD_INS (cfg->cbb, ins);
 
 	return ins;
@@ -3974,7 +4105,7 @@ static MonoInst*
 mini_emit_ldelema_2_ins (MonoCompile *cfg, MonoClass *klass, MonoInst *arr, MonoInst *index_ins1, MonoInst *index_ins2)
 {
 	int bounds_reg = alloc_preg (cfg);
-	int add_reg = alloc_preg (cfg);
+	int add_reg = alloc_ireg_mp (cfg);
 	int mult_reg = alloc_preg (cfg);
 	int mult2_reg = alloc_preg (cfg);
 	int low1_reg = alloc_preg (cfg);
@@ -4200,7 +4331,7 @@ mini_emit_inst_for_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSign
 	} else if (cmethod->klass == mono_defaults.object_class) {
 
 		if (strcmp (cmethod->name, "GetType") == 0) {
-			int dreg = alloc_preg (cfg);
+			int dreg = alloc_ireg_ref (cfg);
 			int vt_reg = alloc_preg (cfg);
 			MONO_EMIT_NEW_LOAD_MEMBASE_FAULT (cfg, vt_reg, args [0]->dreg, G_STRUCT_OFFSET (MonoObject, vtable));
 			EMIT_NEW_LOAD_MEMBASE (cfg, ins, OP_LOAD_MEMBASE, dreg, vt_reg, G_STRUCT_OFFSET (MonoVTable, type));
@@ -4235,7 +4366,7 @@ mini_emit_inst_for_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSign
 		 */
 		if ((strcmp (cmethod->name, "GetLength") == 0 || strcmp (cmethod->name, "GetLowerBound") == 0) && args [1]->opcode == OP_ICONST && args [1]->inst_c0 == 0) {
 			int dreg = alloc_ireg (cfg);
-			int bounds_reg = alloc_ireg (cfg);
+			int bounds_reg = alloc_ireg_mp (cfg);
 			MonoBasicBlock *end_bb, *szarray_bb;
 			gboolean get_length = strcmp (cmethod->name, "GetLength") == 0;
 
@@ -4312,10 +4443,7 @@ mini_emit_inst_for_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSign
 		}
 	} else if (cmethod->klass == mono_defaults.monitor_class) {
 #if defined(MONO_ARCH_MONITOR_OBJECT_REG)
-		/* The trampolines don't work under SGEN */
-		gboolean is_moving_gc = mono_gc_is_moving ();
-
-		if (strcmp (cmethod->name, "Enter") == 0 && fsig->param_count == 1 && !is_moving_gc) {
+		if (strcmp (cmethod->name, "Enter") == 0 && fsig->param_count == 1) {
 			MonoCallInst *call;
 
 			if (COMPILE_LLVM (cfg)) {
@@ -4332,7 +4460,7 @@ mini_emit_inst_for_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSign
 			}
 
 			return (MonoInst*)call;
-		} else if (strcmp (cmethod->name, "Exit") == 0 && !is_moving_gc) {
+		} else if (strcmp (cmethod->name, "Exit") == 0) {
 			MonoCallInst *call;
 
 			if (COMPILE_LLVM (cfg)) {
@@ -4469,7 +4597,7 @@ mini_emit_inst_for_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSign
 				return NULL;
 
 			MONO_INST_NEW (cfg, ins, opcode);
-			ins->dreg = mono_alloc_ireg (cfg);
+			ins->dreg = is_ref ? mono_alloc_ireg_ref (cfg) : mono_alloc_ireg (cfg);
 			ins->inst_basereg = args [0]->dreg;
 			ins->inst_offset = 0;
 			ins->sreg2 = args [1]->dreg;
@@ -4507,7 +4635,7 @@ mini_emit_inst_for_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSign
 				size = 8;
 			if (size == 4) {
 				MONO_INST_NEW (cfg, ins, OP_ATOMIC_CAS_I4);
-				ins->dreg = alloc_ireg (cfg);
+				ins->dreg = is_ref ? alloc_ireg_ref (cfg) : alloc_ireg (cfg);
 				ins->sreg1 = args [0]->dreg;
 				ins->sreg2 = args [1]->dreg;
 				ins->sreg3 = args [2]->dreg;
@@ -4515,7 +4643,7 @@ mini_emit_inst_for_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSign
 				MONO_ADD_INS (cfg->cbb, ins);
 			} else if (size == 8) {
 				MONO_INST_NEW (cfg, ins, OP_ATOMIC_CAS_I8);
-				ins->dreg = alloc_ireg (cfg);
+				ins->dreg = is_ref ? alloc_ireg_ref (cfg) : alloc_ireg (cfg);
 				ins->sreg1 = args [0]->dreg;
 				ins->sreg2 = args [1]->dreg;
 				ins->sreg3 = args [2]->dreg;
@@ -4736,12 +4864,18 @@ inline_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSignature *fsig,
 		if (cheader)
 			mono_metadata_free_mh (cheader);
 		if (inline_always && error)
-			cfg->exception_type = error->exception_type;
+			mono_cfg_set_exception (cfg, error->exception_type);
 
 		mono_loader_clear_error ();
 		return 0;
 	}
 
+	/*Must verify before creating locals as it can cause the JIT to assert.*/
+	if (mono_compile_is_broken (cfg, cmethod, FALSE)) {
+		mono_metadata_free_mh (cheader);
+		return 0;
+	}
+
 	/* allocate space to store the return value */
 	if (!MONO_TYPE_IS_VOID (fsig->ret)) {
 		rvar = mono_compile_create_var (cfg, fsig->ret, OP_LOCAL);
@@ -4913,7 +5047,7 @@ inline_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSignature *fsig,
 #define CHECK_LOCAL(num) if ((unsigned)(num) >= (unsigned)header->num_locals) UNVERIFIED
 #define CHECK_OPSIZE(size) if (ip + size > end) UNVERIFIED
 #define CHECK_UNVERIFIABLE(cfg) if (cfg->unverifiable) UNVERIFIED
-#define CHECK_TYPELOAD(klass) if (!(klass) || (klass)->exception_type) {cfg->exception_ptr = klass; goto load_error;}
+#define CHECK_TYPELOAD(klass) if (!(klass) || (klass)->exception_type) {cfg->exception_ptr = klass; LOAD_ERROR;}
 
 /* offset from br.s -> br like opcodes */
 #define BIG_BRANCH_OFFSET 13
@@ -5084,7 +5218,7 @@ gboolean check_linkdemand (MonoCompile *cfg, MonoMethod *caller, MonoMethod *cal
 		mono_emit_method_call (cfg, secman->linkdemandsecurityexception, args, NULL);
 	} else if (cfg->exception_type == MONO_EXCEPTION_NONE) {
 		 /* don't hide previous results */
-		cfg->exception_type = MONO_EXCEPTION_SECURITY_LINKDEMAND;
+		mono_cfg_set_exception (cfg, MONO_EXCEPTION_SECURITY_LINKDEMAND);
 		cfg->exception_data = result;
 		return TRUE;
 	}
@@ -5248,7 +5382,7 @@ set_exception_type_from_invalid_il (MonoCompile *cfg, MonoMethod *method, unsign
 		method_code = g_strdup ("method body is empty.");
 	else
 		method_code = mono_disasm_code_one (NULL, method, ip, NULL);
- 	cfg->exception_type = MONO_EXCEPTION_INVALID_PROGRAM;
+ 	mono_cfg_set_exception (cfg, MONO_EXCEPTION_INVALID_PROGRAM);
  	cfg->exception_message = g_strdup_printf ("Invalid IL code in %s: %s\n", method_fname, method_code);
  	g_free (method_fname);
  	g_free (method_code);
@@ -5258,8 +5392,8 @@ set_exception_type_from_invalid_il (MonoCompile *cfg, MonoMethod *method, unsign
 static void
 set_exception_object (MonoCompile *cfg, MonoException *exception)
 {
-	cfg->exception_type = MONO_EXCEPTION_OBJECT_SUPPLIED;
-	MONO_GC_REGISTER_ROOT (cfg->exception_ptr);
+	mono_cfg_set_exception (cfg, MONO_EXCEPTION_OBJECT_SUPPLIED);
+	MONO_GC_REGISTER_ROOT_SINGLE (cfg->exception_ptr);
 	cfg->exception_ptr = exception;
 }
 
@@ -5347,6 +5481,113 @@ is_exception_class (MonoClass *class)
 }
 
 /*
+ * is_jit_optimizer_disabled:
+ *
+ *   Determine whenever M's assembly has a DebuggableAttribute with the
+ * IsJITOptimizerDisabled flag set.
+ */
+static gboolean
+is_jit_optimizer_disabled (MonoMethod *m)
+{
+	MonoAssembly *ass = m->klass->image->assembly;
+	MonoCustomAttrInfo* attrs;
+	static MonoClass *klass;
+	int i;
+	gboolean val = FALSE;
+
+	g_assert (ass);
+	if (ass->jit_optimizer_disabled_inited)
+		return ass->jit_optimizer_disabled;
+
+	if (!klass)
+		klass = mono_class_from_name (mono_defaults.corlib, "System.Diagnostics", "DebuggableAttribute");
+	if (!klass) {
+		/* Linked away */
+		ass->jit_optimizer_disabled = FALSE;
+		mono_memory_barrier ();
+		ass->jit_optimizer_disabled_inited = TRUE;
+		return FALSE;
+	}
+
+	attrs = mono_custom_attrs_from_assembly (ass);
+	if (attrs) {
+		for (i = 0; i < attrs->num_attrs; ++i) {
+			MonoCustomAttrEntry *attr = &attrs->attrs [i];
+			const gchar *p;
+			int len;
+			MonoMethodSignature *sig;
+
+			if (!attr->ctor || attr->ctor->klass != klass)
+				continue;
+			/* Decode the attribute. See reflection.c */
+			len = attr->data_size;
+			p = (const char*)attr->data;
+			g_assert (read16 (p) == 0x0001);
+			p += 2;
+
+			// FIXME: Support named parameters
+			sig = mono_method_signature (attr->ctor);
+			if (sig->param_count != 2 || sig->params [0]->type != MONO_TYPE_BOOLEAN || sig->params [1]->type != MONO_TYPE_BOOLEAN)
+				continue;
+			/* Two boolean arguments */
+			p ++;
+			val = *p;
+		}
+		mono_custom_attrs_free (attrs);
+	}
+
+	ass->jit_optimizer_disabled = val;
+	mono_memory_barrier ();
+	ass->jit_optimizer_disabled_inited = TRUE;
+
+	return val;
+}
+
+static gboolean
+is_supported_tail_call (MonoCompile *cfg, MonoMethod *method, MonoMethod *cmethod, MonoMethodSignature *fsig)
+{
+	gboolean supported_tail_call;
+	int i;
+
+#ifdef MONO_ARCH_USE_OP_TAIL_CALL
+	supported_tail_call = MONO_ARCH_USE_OP_TAIL_CALL (mono_method_signature (method), mono_method_signature (cmethod));
+#else
+	supported_tail_call = mono_metadata_signature_equal (mono_method_signature (method), mono_method_signature (cmethod)) && !MONO_TYPE_ISSTRUCT (mono_method_signature (cmethod)->ret);
+#endif
+
+	for (i = 0; i < fsig->param_count; ++i) {
+		if (fsig->params [i]->byref || fsig->params [i]->type == MONO_TYPE_PTR || fsig->params [i]->type == MONO_TYPE_FNPTR)
+			/* These can point to the current method's stack */
+			supported_tail_call = FALSE;
+	}
+	if (fsig->hasthis && cmethod->klass->valuetype)
+		/* this might point to the current method's stack */
+		supported_tail_call = FALSE;
+	if (cmethod->flags & METHOD_ATTRIBUTE_PINVOKE_IMPL)
+		supported_tail_call = FALSE;
+	if (cfg->method->save_lmf)
+		supported_tail_call = FALSE;
+	if (cmethod->wrapper_type && cmethod->wrapper_type != MONO_WRAPPER_DYNAMIC_METHOD)
+		supported_tail_call = FALSE;
+
+	/* Debugging support */
+#if 0
+	if (supported_tail_call) {
+		static int count = 0;
+		count ++;
+		if (getenv ("COUNT")) {
+			if (count == atoi (getenv ("COUNT")))
+				printf ("LAST: %s\n", mono_method_full_name (cmethod, TRUE));
+			if (count > atoi (getenv ("COUNT")))
+				supported_tail_call = FALSE;
+		}
+	}
+#endif
+
+	return supported_tail_call;
+}
+
+/*
  * mono_method_to_ir:
  *
  *   Translate the .net IL into linear IR.
@@ -5384,6 +5625,9 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 	gboolean dont_verify, dont_verify_stloc, readonly = FALSE;
 	int context_used;
 	gboolean init_locals, seq_points, skip_dead_blocks;
+	gboolean disable_inline;
+
+	disable_inline = is_jit_optimizer_disabled (method);
 
 	/* serialization and xdomain stuff may need access to private fields and methods */
 	dont_verify = method->klass->image->assembly->corlib_internal? TRUE: FALSE;
@@ -5399,6 +5643,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 	dont_verify_stloc = method->wrapper_type == MONO_WRAPPER_MANAGED_TO_NATIVE;
 	dont_verify_stloc |= method->wrapper_type == MONO_WRAPPER_UNKNOWN;
 	dont_verify_stloc |= method->wrapper_type == MONO_WRAPPER_NATIVE_TO_MANAGED;
+	dont_verify_stloc |= method->wrapper_type == MONO_WRAPPER_STELEMREF;
 
 	image = method->klass->image;
 	header = mono_method_get_header (method);
@@ -5406,9 +5651,9 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 		MonoLoaderError *error;
 
 		if ((error = mono_loader_get_last_error ())) {
-			cfg->exception_type = error->exception_type;
+			mono_cfg_set_exception (cfg, error->exception_type);
 		} else {
-			cfg->exception_type = MONO_EXCEPTION_INVALID_PROGRAM;
+			mono_cfg_set_exception (cfg, MONO_EXCEPTION_INVALID_PROGRAM);
 			cfg->exception_message = g_strdup_printf ("Missing or incorrect header for method %s", cfg->method->name);
 		}
 		goto exception_exit;
@@ -5442,9 +5687,6 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 		dont_verify_stloc = TRUE;
 	}
 
-	if (!dont_verify && mini_method_verify (cfg, method_definition))
-		goto exception_exit;
-
 	if (mono_debug_using_mono_debugger ())
 		cfg->keep_cil_nops = TRUE;
 
@@ -5496,6 +5738,11 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 		cfg->bb_entry = start_bblock;
 		start_bblock->cil_code = NULL;
 		start_bblock->cil_length = 0;
+#if defined(__native_client_codegen__)
+		MONO_INST_NEW (cfg, ins, OP_NACL_GC_SAFE_POINT);
+		ins->dreg = alloc_dreg (cfg, STACK_I4);
+		MONO_ADD_INS (start_bblock, ins);
+#endif
 
 		/* EXIT BLOCK */
 		NEW_BBLOCK (cfg, end_bblock);
@@ -5531,12 +5778,13 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 			if (clause->flags == MONO_EXCEPTION_CLAUSE_FINALLY ||
 			    clause->flags == MONO_EXCEPTION_CLAUSE_FILTER ||
 			    clause->flags == MONO_EXCEPTION_CLAUSE_FAULT) {
+				MONO_INST_NEW (cfg, ins, OP_START_HANDLER);
+				MONO_ADD_INS (tblock, ins);
+
 				if (seq_points) {
 					NEW_SEQ_POINT (cfg, ins, clause->handler_offset, TRUE);
 					MONO_ADD_INS (tblock, ins);
 				}
-				MONO_INST_NEW (cfg, ins, OP_START_HANDLER);
-				MONO_ADD_INS (tblock, ins);
 
 				/* todo: is a fault block unsafe to optimize? */
 				if (clause->flags == MONO_EXCEPTION_CLAUSE_FAULT)
@@ -6194,7 +6442,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 			cmethod = mini_get_method (cfg, method, token, NULL, generic_context);
 
 			if (!cmethod || mono_loader_get_last_error ())
-				goto load_error;
+				LOAD_ERROR;
  
 			if (cfg->generic_sharing_context && mono_method_check_context_used (cmethod))
 				GENERIC_SHARING_FAILURE (CEE_JMP);
@@ -6308,7 +6556,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 				}
 
 				if (!cmethod || mono_loader_get_last_error ())
-					goto load_error;
+					LOAD_ERROR;
 				if (!dont_verify && !cfg->skip_visibility) {
 					MonoMethod *target_method = cil_method;
 					if (method->is_inflated) {
@@ -6341,7 +6589,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 
 				if (!cmethod->klass->inited)
 					if (!mono_class_init (cmethod->klass))
-						goto load_error;
+						LOAD_ERROR;
 
 				if (cmethod->iflags & METHOD_IMPL_ATTRIBUTE_INTERNAL_CALL &&
 				    mini_class_is_system_array (cmethod->klass)) {
@@ -6351,7 +6599,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 					fsig = mono_method_signature (cmethod);
 
 					if (!fsig)
-						goto load_error;
+						LOAD_ERROR;
 
 					if (fsig->pinvoke) {
 						MonoMethod *wrapper = mono_marshal_get_native_wrapper (cmethod,
@@ -6405,7 +6653,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 					sp [0] = handle_box (cfg, ins, constrained_call, mono_class_check_context_used (constrained_call));
 					CHECK_CFG_EXCEPTION;
 				} else if (!constrained_call->valuetype) {
-					int dreg = alloc_preg (cfg);
+					int dreg = alloc_ireg_ref (cfg);
 
 					/*
 					 * The type parameter is instantiated as a reference
@@ -6559,7 +6807,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 						g_assert (cmethod->is_inflated);
 					imt_arg = emit_get_rgctx_method (cfg, context_used,
 													 cmethod, MONO_RGCTX_INFO_METHOD);
-					ins = mono_emit_method_call_full (cfg, cmethod, fsig, sp, sp [0], imt_arg);
+					ins = mono_emit_method_call_full (cfg, cmethod, fsig, sp, sp [0], imt_arg, NULL);
 				} else
 #endif
 				{
@@ -6579,7 +6827,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 
 					EMIT_NEW_TEMPLOAD (cfg, sp [0], this_arg_temp->inst_c0);
 
-					ins = (MonoInst*)mono_emit_calli (cfg, fsig, sp, addr);
+					ins = (MonoInst*)mono_emit_calli (cfg, fsig, sp, addr, NULL);
 				}
 
 				if (!MONO_TYPE_IS_VOID (fsig->ret))
@@ -6592,56 +6840,6 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 				break;
 			}
 
-#ifdef MONO_ARCH_USE_OP_TAIL_CALL
-			supported_tail_call = cmethod && MONO_ARCH_USE_OP_TAIL_CALL (mono_method_signature (method), mono_method_signature (cmethod));
-#else
-			supported_tail_call = cmethod && mono_metadata_signature_equal (mono_method_signature (method), mono_method_signature (cmethod)) && !MONO_TYPE_ISSTRUCT (mono_method_signature (cmethod)->ret);
-#endif
-
-			/* Tail prefix */
-			/* FIXME: runtime generic context pointer for jumps? */
-			/* FIXME: handle this for generic sharing eventually */
-			if ((ins_flag & MONO_INST_TAILCALL) && !cfg->generic_sharing_context && !vtable_arg && cmethod && (*ip == CEE_CALL) && supported_tail_call) {
-				MonoCallInst *call;
-
-				/* Prevent inlining of methods with tail calls (the call stack would be altered) */
-				INLINE_FAILURE;
-
-#ifdef MONO_ARCH_USE_OP_TAIL_CALL
-				/* Handle tail calls similarly to calls */
-				call = mono_emit_call_args (cfg, mono_method_signature (cmethod), sp, FALSE, FALSE, TRUE);
-#else
-				MONO_INST_NEW_CALL (cfg, call, OP_JMP);
-				call->tail_call = TRUE;
-				call->method = cmethod;
-				call->signature = mono_method_signature (cmethod);
-
-				/*
-				 * We implement tail calls by storing the actual arguments into the 
-				 * argument variables, then emitting a CEE_JMP.
-				 */
-				for (i = 0; i < n; ++i) {
-					/* Prevent argument from being register allocated */
-					arg_array [i]->flags |= MONO_INST_VOLATILE;
-					EMIT_NEW_ARGSTORE (cfg, ins, i, sp [i]);
-				}
-#endif
-
-				ins = (MonoInst*)call;
-				ins->inst_p0 = cmethod;
-				ins->inst_p1 = arg_array [0];
-				MONO_ADD_INS (bblock, ins);
-				link_bblock (cfg, bblock, end_bblock);			
-				start_new_bblock = 1;
-
-				CHECK_CFG_EXCEPTION;
-
-				/* skip CEE_RET as well */
-				ip += 6;
-				ins_flag = 0;
-				break;
-			}
-
 			/*
 			 * Implement a workaround for the inherent races involved in locking:
 			 * Monitor.Enter ()
@@ -6688,7 +6886,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 			/* Inlining */
 			if ((cfg->opt & MONO_OPT_INLINE) && cmethod &&
 				(!virtual || !(cmethod->flags & METHOD_ATTRIBUTE_VIRTUAL) || MONO_METHOD_IS_FINAL (cmethod)) &&
-			    mono_method_check_inlining (cfg, cmethod) &&
+			    !disable_inline && mono_method_check_inlining (cfg, cmethod) &&
 				 !g_list_find (dont_inline, cmethod)) {
 				int costs;
 				gboolean always = FALSE;
@@ -6794,12 +6992,9 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 
 				if (vtable_arg) {
 					MonoCallInst *call;
-					int rgctx_reg = mono_alloc_preg (cfg);
 
-					MONO_EMIT_NEW_UNALU (cfg, OP_MOVE, rgctx_reg, vtable_arg->dreg);
-					ins = (MonoInst*)mono_emit_calli (cfg, fsig, sp, addr);
+					ins = (MonoInst*)mono_emit_calli (cfg, fsig, sp, addr, vtable_arg);
 					call = (MonoCallInst*)ins;
-					set_rgctx_arg (cfg, call, rgctx_reg, vtable_arg);
 				} else {
 					if (addr->opcode == OP_AOTCONST && addr->inst_c1 == MONO_PATCH_INFO_ICALL_ADDR) {
 						/* 
@@ -6812,7 +7007,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 						ins = (MonoInst*)mono_emit_abs_call (cfg, MONO_PATCH_INFO_ICALL_ADDR, addr->inst_right->inst_left, fsig, sp);
 						NULLIFY_INS (addr);
 					} else {
-						ins = (MonoInst*)mono_emit_calli (cfg, fsig, sp, addr);
+						ins = (MonoInst*)mono_emit_calli (cfg, fsig, sp, addr, NULL);
 					}
 				}
 				if (!MONO_TYPE_IS_VOID (fsig->ret))
@@ -6830,17 +7025,21 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 				MonoInst *addr;
 
 				if (strcmp (cmethod->name, "Set") == 0) { /* array Set */ 
-					if (sp [fsig->param_count]->type == STACK_OBJ) {
+					MonoInst *val = sp [fsig->param_count];
+
+					if (val->type == STACK_OBJ) {
 						MonoInst *iargs [2];
 
 						iargs [0] = sp [0];
-						iargs [1] = sp [fsig->param_count];
+						iargs [1] = val;
 						
 						mono_emit_jit_icall (cfg, mono_helper_stelem_ref_check, iargs);
 					}
 					
 					addr = mini_emit_ldelema_ins (cfg, cmethod, sp, ip, TRUE);
-					EMIT_NEW_STORE_MEMBASE_TYPE (cfg, ins, fsig->params [fsig->param_count - 1], addr->dreg, 0, sp [fsig->param_count]->dreg);
+					EMIT_NEW_STORE_MEMBASE_TYPE (cfg, ins, fsig->params [fsig->param_count - 1], addr->dreg, 0, val->dreg);
+					if (cfg->gen_write_barriers && val->type == STACK_OBJ && !(val->opcode == OP_PCONST && val->inst_c0 == 0))
+						emit_write_barrier (cfg, addr, val, 0);
 				} else if (strcmp (cmethod->name, "Get") == 0) { /* array Get */
 					addr = mini_emit_ldelema_ins (cfg, cmethod, sp, ip, FALSE);
 
@@ -6878,16 +7077,72 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 				break;
 			}
 
+			/* Tail prefix / tail call optimization */
+
+			/* FIXME: Enabling TAILC breaks some inlining/stack trace/etc tests */
+			/* FIXME: runtime generic context pointer for jumps? */
+			/* FIXME: handle this for generic sharing eventually */
+			supported_tail_call = cmethod && 
+				((((ins_flag & MONO_INST_TAILCALL) && (*ip == CEE_CALL))
+				  ))//|| ((cfg->opt & MONO_OPT_TAILC) && *ip == CEE_CALL && ip [5] == CEE_RET))
+				&& !vtable_arg && !cfg->generic_sharing_context && is_supported_tail_call (cfg, method, cmethod, fsig);
+
+			if (supported_tail_call) {
+				MonoCallInst *call;
+
+				/* Prevent inlining of methods with tail calls (the call stack would be altered) */
+				INLINE_FAILURE;
+
+				//printf ("HIT: %s -> %s\n", mono_method_full_name (cfg->method, TRUE), mono_method_full_name (cmethod, TRUE));
+
+#ifdef MONO_ARCH_USE_OP_TAIL_CALL
+				/* Handle tail calls similarly to calls */
+				call = mono_emit_call_args (cfg, mono_method_signature (cmethod), sp, FALSE, FALSE, TRUE, FALSE);
+#else
+				MONO_INST_NEW_CALL (cfg, call, OP_JMP);
+				call->tail_call = TRUE;
+				call->method = cmethod;
+				call->signature = mono_method_signature (cmethod);
+
+				/*
+				 * We implement tail calls by storing the actual arguments into the 
+				 * argument variables, then emitting a CEE_JMP.
+				 */
+				for (i = 0; i < n; ++i) {
+					/* Prevent argument from being register allocated */
+					arg_array [i]->flags |= MONO_INST_VOLATILE;
+					EMIT_NEW_ARGSTORE (cfg, ins, i, sp [i]);
+				}
+#endif
+
+				ins = (MonoInst*)call;
+				ins->inst_p0 = cmethod;
+				ins->inst_p1 = arg_array [0];
+				MONO_ADD_INS (bblock, ins);
+				link_bblock (cfg, bblock, end_bblock);			
+				start_new_bblock = 1;
+
+				CHECK_CFG_EXCEPTION;
+
+				ip += 5;
+				ins_flag = 0;
+
+				// FIXME: Eliminate unreachable epilogs
+
+				/*
+				 * OP_TAILCALL has no return value, so skip the CEE_RET if it is
+				 * only reachable from this call.
+				 */
+				GET_BBLOCK (cfg, tblock, ip);
+				if (tblock == bblock || tblock->in_count == 0)
+					ip += 1;
+				break;
+			}
+
 			/* Common call */
 			INLINE_FAILURE;
-			if (vtable_arg) {
-				ins = mono_emit_rgctx_method_call_full (cfg, cmethod, fsig, sp, virtual ? sp [0] : NULL,
-					NULL, vtable_arg);
-			} else if (imt_arg) {
-				ins = (MonoInst*)mono_emit_method_call_full (cfg, cmethod, fsig, sp, virtual ? sp [0] : NULL, imt_arg);
-			} else {
-				ins = (MonoInst*)mono_emit_method_call_full (cfg, cmethod, fsig, sp, virtual ? sp [0] : NULL, NULL);
-			}
+			ins = mono_emit_method_call_full (cfg, cmethod, fsig, sp, virtual ? sp [0] : NULL,
+											  imt_arg, vtable_arg);
 
 			if (!MONO_TYPE_IS_VOID (fsig->ret))
 				*sp++ = mono_emit_widen_call_res (cfg, ins, fsig);
@@ -6934,6 +7189,10 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 					g_assert (!return_var);
 					CHECK_STACK (1);
 					--sp;
+
+					if ((method->wrapper_type == MONO_WRAPPER_DYNAMIC_METHOD || method->wrapper_type == MONO_WRAPPER_NONE) && target_type_is_incompatible (cfg, ret_type, *sp))
+						UNVERIFIED;
+
 					if (mini_type_to_stind (cfg, ret_type) == CEE_STOBJ) {
 						MonoInst *ret_addr;
 
@@ -7250,6 +7509,9 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 			case CEE_LDIND_I8:
 				dreg = alloc_lreg (cfg);
 				break;
+			case CEE_LDIND_REF:
+				dreg = alloc_ireg_ref (cfg);
+				break;
 			default:
 				dreg = alloc_preg (cfg);
 			}
@@ -7472,7 +7734,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 			sp -= 2;
 			if (generic_class_is_reference_type (cfg, klass)) {
 				MonoInst *store, *load;
-				int dreg = alloc_preg (cfg);
+				int dreg = alloc_ireg_ref (cfg);
 
 				NEW_LOAD_MEMBASE (cfg, load, OP_LOAD_MEMBASE, dreg, sp [1]->dreg, 0);
 				load->flags |= ins_flag;
@@ -7605,6 +7867,9 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 						NEW_PCONST (cfg, ins, NULL);
 						ins->type = STACK_OBJ;
 						ins->inst_p0 = mono_ldstr (cfg->domain, image, mono_metadata_token_index (n));
+						if (!ins->inst_p0)
+							OUT_OF_MEMORY_FAILURE;
+
 						*sp = ins;
 						MONO_ADD_INS (bblock, ins);
 					}
@@ -7625,15 +7890,15 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 			token = read32 (ip + 1);
 			cmethod = mini_get_method (cfg, method, token, NULL, generic_context);
 			if (!cmethod || mono_loader_get_last_error ())
-				goto load_error;
+				LOAD_ERROR;
 			fsig = mono_method_get_signature (cmethod, image, token);
 			if (!fsig)
-				goto load_error;
+				LOAD_ERROR;
 
 			mono_save_token_info (cfg, image, token, cmethod);
 
 			if (!mono_class_init (cmethod->klass))
-				goto load_error;
+				LOAD_ERROR;
 
 			if (cfg->generic_sharing_context)
 				context_used = mono_method_check_context_used (cmethod);
@@ -7747,7 +8012,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 				/* we simply pass a null pointer */
 				EMIT_NEW_PCONST (cfg, *sp, NULL); 
 				/* now call the string ctor */
-				alloc = mono_emit_method_call_full (cfg, cmethod, fsig, sp, NULL, NULL);
+				alloc = mono_emit_method_call_full (cfg, cmethod, fsig, sp, NULL, NULL, NULL);
 			} else {
 				MonoInst* callvirt_this_arg = NULL;
 				
@@ -7805,12 +8070,8 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 					}
 
 					CHECK_CFG_EXCEPTION;
-				} else
-
-
-
-				if ((cfg->opt & MONO_OPT_INLINE) && cmethod && !context_used && !vtable_arg &&
-				    mono_method_check_inlining (cfg, cmethod) &&
+				} else if ((cfg->opt & MONO_OPT_INLINE) && cmethod && !context_used && !vtable_arg &&
+				    !disable_inline && mono_method_check_inlining (cfg, cmethod) &&
 				    !mono_class_is_subclass_of (cmethod->klass, mono_defaults.exception_class, FALSE) &&
 				    !g_list_find (dont_inline, cmethod)) {
 					int costs;
@@ -7822,7 +8083,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 						inline_costs += costs - 5;
 					} else {
 						INLINE_FAILURE;
-						mono_emit_method_call_full (cfg, cmethod, fsig, sp, callvirt_this_arg, NULL);
+						mono_emit_method_call_full (cfg, cmethod, fsig, sp, callvirt_this_arg, NULL, NULL);
 					}
 				} else if (context_used &&
 						(!mono_method_is_generic_sharable_impl (cmethod, TRUE) ||
@@ -7832,11 +8093,11 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 					cmethod_addr = emit_get_rgctx_method (cfg, context_used,
 						cmethod, MONO_RGCTX_INFO_GENERIC_METHOD_CODE);
 
-					mono_emit_rgctx_calli (cfg, fsig, sp, cmethod_addr, vtable_arg);
+					mono_emit_calli (cfg, fsig, sp, cmethod_addr, vtable_arg);
 				} else {
 					INLINE_FAILURE;
-					ins = mono_emit_rgctx_method_call_full (cfg, cmethod, fsig, sp,
-															callvirt_this_arg, NULL, vtable_arg);
+					ins = mono_emit_method_call_full (cfg, cmethod, fsig, sp,
+													  callvirt_this_arg, NULL, vtable_arg);
 				}
 			}
 
@@ -7866,8 +8127,9 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 			if (cfg->generic_sharing_context)
 				context_used = mono_class_check_context_used (klass);
 
-			if (!context_used && mono_class_has_variant_generic_params (klass)) {
-				MonoInst *args [2];
+			if (!context_used && mini_class_has_reference_variant_generic_argument (klass, context_used)) {
+				MonoMethod *mono_castclass = mono_marshal_get_castclass_with_cache ();
+				MonoInst *args [3];
 
 				/* obj */
 				args [0] = *sp;
@@ -7875,8 +8137,12 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 				/* klass */
 				EMIT_NEW_CLASSCONST (cfg, args [1], klass);
 
-				ins = mono_emit_jit_icall (cfg, mono_object_castclass, args);
-				*sp ++ = ins;
+				/* inline cache*/
+				/*FIXME AOT support*/
+				EMIT_NEW_PCONST (cfg, args [2], mono_domain_alloc0 (cfg->domain, sizeof (gpointer)));
+
+				/*The wrapper doesn't inline well so the bloat of inlining doesn't pay off.*/
+				*sp++ = mono_emit_method_call (cfg, mono_castclass, args, NULL);
 				ip += 5;
 				inline_costs += 2;
 			} else if (!context_used && (klass->marshalbyref || klass->flags & TYPE_ATTRIBUTE_INTERFACE)) {
@@ -7921,8 +8187,9 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 			if (cfg->generic_sharing_context)
 				context_used = mono_class_check_context_used (klass);
 
-			if (!context_used && mono_class_has_variant_generic_params (klass)) {
-				MonoInst *args [2];
+			if (!context_used && mini_class_has_reference_variant_generic_argument (klass, context_used)) {
+				MonoMethod *mono_isinst = mono_marshal_get_isinst_with_cache ();
+				MonoInst *args [3];
 
 				/* obj */
 				args [0] = *sp;
@@ -7930,8 +8197,11 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 				/* klass */
 				EMIT_NEW_CLASSCONST (cfg, args [1], klass);
 
-				*sp = mono_emit_jit_icall (cfg, mono_object_isinst, args);
-				sp++;
+				/* inline cache*/
+				/*FIXME AOT support*/
+				EMIT_NEW_PCONST (cfg, args [2], mono_domain_alloc0 (cfg->domain, sizeof (gpointer)));
+
+				*sp++ = mono_emit_method_call (cfg, mono_isinst, args, NULL);
 				ip += 5;
 				inline_costs += 2;
 			} else if (!context_used && (klass->marshalbyref || klass->flags & TYPE_ATTRIBUTE_INTERFACE)) {
@@ -7979,7 +8249,25 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 
 			if (generic_class_is_reference_type (cfg, klass)) {
 				/* CASTCLASS FIXME kill this huge slice of duplicated code*/
-				if (!context_used && (klass->marshalbyref || klass->flags & TYPE_ATTRIBUTE_INTERFACE)) {
+				if (!context_used && mini_class_has_reference_variant_generic_argument (klass, context_used)) {
+					MonoMethod *mono_castclass = mono_marshal_get_castclass_with_cache ();
+					MonoInst *args [3];
+
+					/* obj */
+					args [0] = *sp;
+
+					/* klass */
+					EMIT_NEW_CLASSCONST (cfg, args [1], klass);
+
+					/* inline cache*/
+					/*FIXME AOT support*/
+					EMIT_NEW_PCONST (cfg, args [2], mono_domain_alloc0 (cfg->domain, sizeof (gpointer)));
+
+					/*The wrapper doesn't inline well so the bloat of inlining doesn't pay off.*/
+					*sp++ = mono_emit_method_call (cfg, mono_castclass, args, NULL);
+					ip += 5;
+					inline_costs += 2;
+				} else if (!context_used && (klass->marshalbyref || klass->flags & TYPE_ATTRIBUTE_INTERFACE)) {
 					MonoMethod *mono_castclass;
 					MonoInst *iargs [1];
 					int costs;
@@ -8191,7 +8479,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 				field = mono_field_from_token (image, token, &klass, generic_context);
 			}
 			if (!field)
-				goto load_error;
+				LOAD_ERROR;
 			if (!dont_verify && !cfg->skip_visibility && !mono_method_can_access_field (method, field))
 				FIELD_ACCESS_FAILURE;
 			mono_class_init (klass);
@@ -8244,7 +8532,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 					MonoInst *ptr;
 					int dreg;
 
-					dreg = alloc_preg (cfg);
+					dreg = alloc_ireg_mp (cfg);
 					EMIT_NEW_BIALU_IMM (cfg, ptr, OP_PADD_IMM, dreg, sp [0]->dreg, foffset);
 					emit_write_barrier (cfg, ptr, sp [1], -1);
 				}
@@ -8302,7 +8590,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 						MONO_EMIT_NEW_COND_EXC (cfg, EQ, "NullReferenceException");
 					}
 
-					dreg = alloc_preg (cfg);
+					dreg = alloc_ireg_mp (cfg);
 
 					EMIT_NEW_BIALU_IMM (cfg, ins, OP_PADD_IMM, dreg, sp [0]->dreg, foffset);
 					ins->klass = mono_class_from_mono_type (field->type);
@@ -8330,6 +8618,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 			MonoClassField *field;
 			gpointer addr = NULL;
 			gboolean is_special_static;
+			MonoType *ftype;
 
 			CHECK_OPSIZE (5);
 			token = read32 (ip + 1);
@@ -8341,7 +8630,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 			else
 				field = mono_field_from_token (image, token, &klass, generic_context);
 			if (!field)
-				goto load_error;
+				LOAD_ERROR;
 			mono_class_init (klass);
 			if (!dont_verify && !cfg->skip_visibility && !mono_method_can_access_field (method, field))
 				FIELD_ACCESS_FAILURE;
@@ -8363,7 +8652,9 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 			if (cfg->generic_sharing_context)
 				context_used = mono_class_check_context_used (klass);
 
-			g_assert (!(field->type->attrs & FIELD_ATTRIBUTE_LITERAL));
+			ftype = mono_field_get_type (field);
+
+			g_assert (!(ftype->attrs & FIELD_ATTRIBUTE_LITERAL));
 
 			/* The special_static_fields field is init'd in mono_class_vtable, so it needs
 			 * to be called here.
@@ -8514,7 +8805,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 			/* Generate IR to do the actual load/store operation */
 
 			if (*ip == CEE_LDSFLDA) {
-				ins->klass = mono_class_from_mono_type (field->type);
+				ins->klass = mono_class_from_mono_type (ftype);
 				ins->type = STACK_PTR;
 				*sp++ = ins;
 			} else if (*ip == CEE_STSFLD) {
@@ -8522,7 +8813,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 				CHECK_STACK (1);
 				sp--;
 
-				EMIT_NEW_STORE_MEMBASE_TYPE (cfg, store, field->type, ins->dreg, 0, sp [0]->dreg);
+				EMIT_NEW_STORE_MEMBASE_TYPE (cfg, store, ftype, ins->dreg, 0, sp [0]->dreg);
 				store->flags |= ins_flag;
 			} else {
 				gboolean is_const = FALSE;
@@ -8533,11 +8824,11 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 					CHECK_TYPELOAD (klass);
 				}
 				if (!context_used && !((cfg->opt & MONO_OPT_SHARED) || cfg->compile_aot) && 
-				    vtable->initialized && (field->type->attrs & FIELD_ATTRIBUTE_INIT_ONLY)) {
+				    vtable->initialized && (ftype->attrs & FIELD_ATTRIBUTE_INIT_ONLY)) {
 					gpointer addr = (char*)vtable->data + field->offset;
-					int ro_type = field->type->type;
-					if (ro_type == MONO_TYPE_VALUETYPE && field->type->data.klass->enumtype) {
-						ro_type = mono_class_enum_basetype (field->type->data.klass)->type;
+					int ro_type = ftype->type;
+					if (ro_type == MONO_TYPE_VALUETYPE && ftype->data.klass->enumtype) {
+						ro_type = mono_class_enum_basetype (ftype->data.klass)->type;
 					}
 					/* printf ("RO-FIELD %s.%s:%s\n", klass->name_space, klass->name, mono_field_get_name (field));*/
 					is_const = TRUE;
@@ -8714,7 +9005,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 					CHECK_TYPELOAD (array_type);
 
 					MONO_INST_NEW (cfg, ins, OP_NEWARR);
-					ins->dreg = alloc_preg (cfg);
+					ins->dreg = alloc_ireg_ref (cfg);
 					ins->sreg1 = sp [0]->dreg;
 					ins->inst_newa_class = klass;
 					ins->type = STACK_OBJ;
@@ -8742,7 +9033,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 			if ((cfg->opt & MONO_OPT_INTRINS) && ip + 6 < end && ip_in_bb (cfg, bblock, ip + 6) && (len_ins->opcode == OP_ICONST) && (data_ptr = initialize_array_data (method, cfg->compile_aot, ip, klass, len_ins->inst_c0, &data_size, &field_token))) {
 				MonoMethod *memcpy_method = get_memcpy_method ();
 				MonoInst *iargs [3];
-				int add_reg = alloc_preg (cfg);
+				int add_reg = alloc_ireg_mp (cfg);
 
 				EMIT_NEW_BIALU_IMM (cfg, iargs [0], OP_PADD_IMM, add_reg, ins->dreg, G_STRUCT_OFFSET (MonoArray, vector));
 				if (cfg->compile_aot) {
@@ -8763,7 +9054,6 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 			if (sp [0]->type != STACK_OBJ)
 				UNVERIFIED;
 
-			dreg = alloc_preg (cfg);
 			MONO_INST_NEW (cfg, ins, OP_LDLEN);
 			ins->dreg = alloc_preg (cfg);
 			ins->sreg1 = sp [0]->dreg;
@@ -8884,9 +9174,14 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 			/* storing a NULL doesn't need any of the complex checks in stelemref */
 			if (generic_class_is_reference_type (cfg, klass) &&
 				!(sp [2]->opcode == OP_PCONST && sp [2]->inst_p0 == NULL)) {
-				MonoMethod* helper = mono_marshal_get_stelemref ();
+				MonoClass *obj_array = mono_array_class_get_cached (mono_defaults.object_class, 1);
+				MonoMethod *helper = mono_marshal_get_virtual_stelemref (obj_array);
 				MonoInst *iargs [3];
 
+				if (!helper->slot)
+					mono_class_setup_vtable (obj_array);
+				g_assert (helper->slot);
+
 				if (sp [0]->type != STACK_OBJ)
 					UNVERIFIED;
 				if (sp [2]->type != STACK_OBJ)
@@ -8895,8 +9190,8 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 				iargs [2] = sp [2];
 				iargs [1] = sp [1];
 				iargs [0] = sp [0];
-				
-				mono_emit_method_call (cfg, helper, iargs, NULL);
+
+				mono_emit_method_call (cfg, helper, iargs, sp [0]);
 			} else {
 				if (sp [1]->opcode == OP_ICONST) {
 					int array_reg = sp [0]->dreg;
@@ -9041,7 +9336,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 				handle = mono_ldtoken (image, n, &handle_class, generic_context);
 			}
 			if (!handle)
-				goto load_error;
+				LOAD_ERROR;
 			mono_class_init (handle_class);
 			if (cfg->generic_sharing_context) {
 				if (mono_metadata_token_table (n) == MONO_TABLE_TYPEDEF ||
@@ -9419,7 +9714,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 				CHECK_STACK (1);
 				--sp;
 				MONO_INST_NEW (cfg, ins, OP_MOVE);
-				ins->dreg = alloc_preg (cfg);
+				ins->dreg = alloc_ireg_mp (cfg);
 				ins->sreg1 = sp [0]->dreg;
 				ins->type = STACK_MP;
 				MONO_ADD_INS (cfg->cbb, ins);
@@ -9620,7 +9915,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 				cmp->sreg2 = sp [1]->dreg;
 				type_from_op (cmp, sp [0], sp [1]);
 				CHECK_TYPE (cmp);
-				if ((sp [0]->type == STACK_I8) || ((SIZEOF_REGISTER == 8) && ((sp [0]->type == STACK_PTR) || (sp [0]->type == STACK_OBJ) || (sp [0]->type == STACK_MP))))
+				if ((sp [0]->type == STACK_I8) || ((SIZEOF_VOID_P == 8) && ((sp [0]->type == STACK_PTR) || (sp [0]->type == STACK_OBJ) || (sp [0]->type == STACK_MP))))
 					cmp->opcode = OP_LCOMPARE;
 				else if (sp [0]->type == STACK_R8)
 					cmp->opcode = OP_FCOMPARE;
@@ -9655,7 +9950,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 				n = read32 (ip + 2);
 				cmethod = mini_get_method (cfg, method, n, NULL, generic_context);
 				if (!cmethod || mono_loader_get_last_error ())
-					goto load_error;
+					LOAD_ERROR;
 				mono_class_init (cmethod->klass);
 
 				mono_save_token_info (cfg, image, n, cmethod);
@@ -9683,25 +9978,33 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 				if ((sp > stack_start) && (ip + 6 + 5 < end) && ip_in_bb (cfg, bblock, ip + 6) && (ip [6] == CEE_NEWOBJ)) {
 					MonoMethod *ctor_method = mini_get_method (cfg, method, read32 (ip + 7), NULL, generic_context);
 					if (ctor_method && (ctor_method->klass->parent == mono_defaults.multicastdelegate_class)) {
+						MonoInst *target_ins;
 						MonoMethod *invoke;
 						int invoke_context_used = 0;
 
 						invoke = mono_get_delegate_invoke (ctor_method->klass);
 						if (!invoke || !mono_method_signature (invoke))
-							goto load_error;
+							LOAD_ERROR;
 
 						if (cfg->generic_sharing_context)
 							invoke_context_used = mono_method_check_context_used (invoke);
 
+						target_ins = sp [-1];
+
+						if (!(cmethod->flags & METHOD_ATTRIBUTE_STATIC)) {
+							/*LAME IMPL: We must not add a null check for virtual invoke delegates.*/
+							if (mono_method_signature (invoke)->param_count == mono_method_signature (cmethod)->param_count) {
+								MONO_EMIT_NEW_BIALU_IMM (cfg, OP_COMPARE_IMM, -1, target_ins->dreg, 0);
+								MONO_EMIT_NEW_COND_EXC (cfg, EQ, "ArgumentException");
+							}
+						}
+
 #if defined(MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE)
 						/* FIXME: SGEN support */
-						if (!cfg->gen_write_barriers && invoke_context_used == 0) {
-							MonoInst *target_ins;
-
+						if (invoke_context_used == 0) {
 							ip += 6;
 							if (cfg->verbose_level > 3)
 								g_print ("converting (in B%d: stack: %d) %s", bblock->block_num, (int)(sp - stack_start), mono_disasm_code_one (NULL, method, ip, NULL));
-							target_ins = sp [-1];
 							sp --;
 							*sp = handle_delegate_ctor (cfg, ctor_method->klass, target_ins, cmethod, context_used);
 							CHECK_CFG_EXCEPTION;
@@ -9729,7 +10032,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 				n = read32 (ip + 2);
 				cmethod = mini_get_method (cfg, method, n, NULL, generic_context);
 				if (!cmethod || mono_loader_get_last_error ())
-					goto load_error;
+					LOAD_ERROR;
 				mono_class_init (cmethod->klass);
  
 				if (cfg->generic_sharing_context)
@@ -10163,7 +10466,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 
 		/* Method is too large */
 		mname = mono_method_full_name (method, TRUE);
-		cfg->exception_type = MONO_EXCEPTION_INVALID_PROGRAM;
+		mono_cfg_set_exception (cfg, MONO_EXCEPTION_INVALID_PROGRAM);
 		cfg->exception_message = g_strdup_printf ("Method %s is too complex.", mname);
 		g_free (mname);
 		cfg->headers_to_free = g_slist_prepend_mempool (cfg->mempool, cfg->headers_to_free, header);
@@ -10186,7 +10489,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 	goto cleanup;
 
  load_error:
-	cfg->exception_type = MONO_EXCEPTION_TYPE_LOAD;
+	mono_cfg_set_exception (cfg, MONO_EXCEPTION_TYPE_LOAD);
 	goto cleanup;
 
  unverified:
@@ -10545,7 +10848,11 @@ op_to_op_src1_membase (int load_opcode, int opcode)
 
 	switch (opcode) {
 	case OP_X86_PUSH:
+#ifdef __mono_ilp32__
+		if (load_opcode == OP_LOADI8_MEMBASE)
+#else
 		if ((load_opcode == OP_LOAD_MEMBASE) || (load_opcode == OP_LOADI8_MEMBASE))
+#endif
 			return OP_X86_PUSH_MEMBASE;
 		break;
 		/* FIXME: This only works for 32 bit immediates
@@ -10560,7 +10867,13 @@ op_to_op_src1_membase (int load_opcode, int opcode)
 		break;
 	case OP_COMPARE:
 	case OP_LCOMPARE:
+#ifdef __mono_ilp32__
+		if (load_opcode == OP_LOAD_MEMBASE)
+			return OP_AMD64_ICOMPARE_MEMBASE_REG;
+		if (load_opcode == OP_LOADI8_MEMBASE)
+#else
 		if ((load_opcode == OP_LOAD_MEMBASE) || (load_opcode == OP_LOADI8_MEMBASE))
+#endif
 			return OP_AMD64_COMPARE_MEMBASE_REG;
 		break;
 	case OP_ICOMPARE:
@@ -10598,7 +10911,11 @@ op_to_op_src2_membase (int load_opcode, int opcode)
 #endif
 
 #ifdef TARGET_AMD64
+#ifdef __mono_ilp32__
+	if ((load_opcode == OP_LOADI4_MEMBASE) || (load_opcode == OP_LOADU4_MEMBASE) || (load_opcode == OP_LOAD_MEMBASE) ) {
+#else
 	if ((load_opcode == OP_LOADI4_MEMBASE) || (load_opcode == OP_LOADU4_MEMBASE)) {
+#endif
 		switch (opcode) {
 		case OP_ICOMPARE:
 			return OP_AMD64_ICOMPARE_REG_MEMBASE;
@@ -10613,7 +10930,11 @@ op_to_op_src2_membase (int load_opcode, int opcode)
 		case OP_IXOR:
 			return OP_X86_XOR_REG_MEMBASE;
 		}
+#ifdef __mono_ilp32__
+	} else if (load_opcode == OP_LOADI8_MEMBASE) {
+#else
 	} else if ((load_opcode == OP_LOADI8_MEMBASE) || (load_opcode == OP_LOAD_MEMBASE)) {
+#endif
 		switch (opcode) {
 		case OP_COMPARE:
 		case OP_LCOMPARE:
@@ -10763,7 +11084,10 @@ mono_handle_global_vregs (MonoCompile *cfg)
 
 						switch (regtype) {
 						case 'i':
-							mono_compile_create_var_for_vreg (cfg, &mono_defaults.int_class->byval_arg, OP_LOCAL, vreg);
+							if (vreg_is_ref (cfg, vreg))
+								mono_compile_create_var_for_vreg (cfg, &mono_defaults.object_class->byval_arg, OP_LOCAL, vreg);
+							else
+								mono_compile_create_var_for_vreg (cfg, &mono_defaults.int_class->byval_arg, OP_LOCAL, vreg);
 							break;
 						case 'l':
 							mono_compile_create_var_for_vreg (cfg, &mono_defaults.int64_class->byval_arg, OP_LOCAL, vreg);
@@ -10960,6 +11284,16 @@ mono_spill_global_vars (MonoCompile *cfg, gboolean *need_local_opts)
 	}
 #endif
 
+	if (cfg->compute_gc_maps) {
+		/* registers need liveness info even for !non refs */
+		for (i = 0; i < cfg->num_varinfo; i++) {
+			MonoInst *ins = cfg->varinfo [i];
+
+			if (ins->opcode == OP_REGVAR)
+				ins->flags |= MONO_INST_GC_TRACK;
+		}
+	}
+		
 	/* FIXME: widening and truncation */
 
 	/*
@@ -11201,6 +11535,14 @@ mono_spill_global_vars (MonoCompile *cfg, gboolean *need_local_opts)
 					live_range_start [dreg] = def_ins;
 					live_range_start_bb [dreg] = bb;
 				}
+
+				if (cfg->compute_gc_maps && def_ins && (var->flags & MONO_INST_GC_TRACK)) {
+					MonoInst *tmp;
+
+					MONO_INST_NEW (cfg, tmp, OP_GC_LIVENESS_DEF);
+					tmp->inst_c1 = dreg;
+					mono_bblock_insert_after_ins (bb, def_ins, tmp);
+				}
 			}
 
 			/************/
@@ -11223,6 +11565,16 @@ mono_spill_global_vars (MonoCompile *cfg, gboolean *need_local_opts)
 						//mono_inst_set_src_registers (ins, sregs);
 						live_range_end [sreg] = use_ins;
 						live_range_end_bb [sreg] = bb;
+
+						if (cfg->compute_gc_maps && var->dreg < orig_next_vreg && (var->flags & MONO_INST_GC_TRACK)) {
+							MonoInst *tmp;
+
+							MONO_INST_NEW (cfg, tmp, OP_GC_LIVENESS_USE);
+							/* var->dreg is a hreg */
+							tmp->inst_c1 = sreg;
+							mono_bblock_insert_after_ins (bb, ins, tmp);
+						}
+
 						continue;
 					}
 
@@ -11303,6 +11655,14 @@ mono_spill_global_vars (MonoCompile *cfg, gboolean *need_local_opts)
 						live_range_end [var->dreg] = use_ins;
 						live_range_end_bb [var->dreg] = bb;
 					}
+
+					if (cfg->compute_gc_maps && var->dreg < orig_next_vreg && (var->flags & MONO_INST_GC_TRACK)) {
+						MonoInst *tmp;
+
+						MONO_INST_NEW (cfg, tmp, OP_GC_LIVENESS_USE);
+						tmp->inst_c1 = var->dreg;
+						mono_bblock_insert_after_ins (bb, ins, tmp);
+					}
 				}
 			}
 			mono_inst_set_src_registers (ins, sregs);
diff --git a/mono/mini/mini-amd64.c b/mono/mini/mini-amd64.c
index 7bbcc34..10f9f0f 100644
--- a/mono/mini/mini-amd64.c
+++ b/mono/mini/mini-amd64.c
@@ -23,6 +23,7 @@
 #include <mono/metadata/threads.h>
 #include <mono/metadata/profiler-private.h>
 #include <mono/metadata/mono-debug.h>
+#include <mono/metadata/gc-internal.h>
 #include <mono/utils/mono-math.h>
 #include <mono/utils/mono-mmap.h>
 
@@ -31,6 +32,7 @@
 #include "mini-amd64.h"
 #include "cpu-amd64.h"
 #include "debugger-agent.h"
+#include "mini-gc.h"
 
 static gint lmf_tls_offset = -1;
 static gint lmf_addr_tls_offset = -1;
@@ -203,11 +205,278 @@ amd64_is_near_call (guint8 *code)
 	return code [0] == 0xe8;
 }
 
+#ifdef __native_client_codegen__
+
+/* Keep track of instruction "depth", that is, the level of sub-instruction */
+/* for any given instruction.  For instance, amd64_call_reg resolves to     */
+/* amd64_call_reg_internal, which uses amd64_alu_* macros, etc.             */
+/* We only want to force bundle alignment for the top level instruction,    */
+/* so NaCl pseudo-instructions can be implemented with sub instructions.    */
+static guint32 nacl_instruction_depth;
+
+static guint32 nacl_rex_tag;
+static guint32 nacl_legacy_prefix_tag;
+
+void
+amd64_nacl_clear_legacy_prefix_tag ()
+{
+	TlsSetValue (nacl_legacy_prefix_tag, NULL);
+}
+
+void
+amd64_nacl_tag_legacy_prefix (guint8* code)
+{
+	if (TlsGetValue (nacl_legacy_prefix_tag) == NULL)
+		TlsSetValue (nacl_legacy_prefix_tag, code);
+}
+
+void
+amd64_nacl_tag_rex (guint8* code)
+{
+	TlsSetValue (nacl_rex_tag, code);
+}
+
+guint8*
+amd64_nacl_get_legacy_prefix_tag ()
+{
+	return (guint8*)TlsGetValue (nacl_legacy_prefix_tag);
+}
+
+guint8*
+amd64_nacl_get_rex_tag ()
+{
+	return (guint8*)TlsGetValue (nacl_rex_tag);
+}
+
+/* Increment the instruction "depth" described above */
+void
+amd64_nacl_instruction_pre ()
+{
+	intptr_t depth = (intptr_t) TlsGetValue (nacl_instruction_depth);
+	depth++;
+	TlsSetValue (nacl_instruction_depth, (gpointer)depth);
+}
+
+/* amd64_nacl_instruction_post: Decrement instruction "depth", force bundle */
+/* alignment if depth == 0 (top level instruction)                          */
+/* IN: start, end    pointers to instruction beginning and end              */
+/* OUT: start, end   pointers to beginning and end after possible alignment */
+/* GLOBALS: nacl_instruction_depth     defined above                        */
+void
+amd64_nacl_instruction_post (guint8 **start, guint8 **end)
+{
+	intptr_t depth = (intptr_t) TlsGetValue(nacl_instruction_depth);
+	depth--;
+	TlsSetValue (nacl_instruction_depth, (void*)depth);
+
+	g_assert ( depth >= 0 );
+	if (depth == 0) {
+  		uintptr_t space_in_block;
+		uintptr_t instlen;
+		guint8 *prefix = amd64_nacl_get_legacy_prefix_tag ();
+		/* if legacy prefix is present, and if it was emitted before */
+		/* the start of the instruction sequence, adjust the start   */
+		if (prefix != NULL && prefix < *start) {
+			g_assert (*start - prefix <= 3);/* only 3 are allowed */
+			*start = prefix;
+		}
+		space_in_block = kNaClAlignment - ((uintptr_t)(*start) & kNaClAlignmentMask);
+		instlen = (uintptr_t)(*end - *start);
+		/* Only check for instructions which are less than        */
+		/* kNaClAlignment. The only instructions that should ever */
+		/* be that long are call sequences, which are already     */
+		/* padded out to align the return to the next bundle.     */
+		if (instlen > space_in_block && instlen < kNaClAlignment) {
+			const size_t MAX_NACL_INST_LENGTH = kNaClAlignment;
+  			guint8 copy_of_instruction[MAX_NACL_INST_LENGTH];
+  			const size_t length = (size_t)((*end)-(*start));
+  			g_assert (length < MAX_NACL_INST_LENGTH);
+			
+  			memcpy (copy_of_instruction, *start, length);
+			*start = mono_arch_nacl_pad (*start, space_in_block);
+			memcpy (*start, copy_of_instruction, length);
+			*end = *start + length;
+		}
+		amd64_nacl_clear_legacy_prefix_tag ();
+		amd64_nacl_tag_rex (NULL);
+	}
+}
+
+/* amd64_nacl_membase_handler: ensure all access to memory of the form      */
+/*   OFFSET(%rXX) is sandboxed.  For allowable base registers %rip, %rbp,   */
+/*   %rsp, and %r15, emit the membase as usual.  For all other registers,   */
+/*   make sure the upper 32-bits are cleared, and use that register in the  */
+/*   index field of a new address of this form: OFFSET(%r15,%eXX,1)         */
+/* IN:      code                                                            */
+/*             pointer to current instruction stream (in the                */
+/*             middle of an instruction, after opcode is emitted)           */
+/*          basereg/offset/dreg                                             */
+/*             operands of normal membase address                           */
+/* OUT:     code                                                            */
+/*             pointer to the end of the membase/memindex emit              */
+/* GLOBALS: nacl_rex_tag                                                    */
+/*             position in instruction stream that rex prefix was emitted   */
+/*          nacl_legacy_prefix_tag                                          */
+/*             (possibly NULL) position in instruction of legacy x86 prefix */
+void
+amd64_nacl_membase_handler (guint8** code, gint8 basereg, gint32 offset, gint8 dreg)
+{
+	gint8 true_basereg = basereg;
+
+	/* Cache these values, they might change  */
+ 	/* as new instructions are emitted below. */
+	guint8* rex_tag = amd64_nacl_get_rex_tag ();
+	guint8* legacy_prefix_tag = amd64_nacl_get_legacy_prefix_tag ();
+
+	/* 'basereg' is given masked to 0x7 at this point, so check */
+	/* the rex prefix to see if this is an extended register.   */
+	if ((rex_tag != NULL) && IS_REX(*rex_tag) && (*rex_tag & AMD64_REX_B)) {
+		true_basereg |= 0x8;
+	}
+
+#define X86_LEA_OPCODE (0x8D)
+
+	if (!amd64_is_valid_nacl_base (true_basereg) && (*(*code-1) != X86_LEA_OPCODE)) {
+		guint8* old_instruction_start;
+		
+		/* This will hold the 'mov %eXX, %eXX' that clears the upper */
+		/* 32-bits of the old base register (new index register)     */
+		guint8 buf[32];
+		guint8* buf_ptr = buf;
+		size_t insert_len;
+
+		g_assert (rex_tag != NULL);
+
+		if (IS_REX(*rex_tag)) {
+			/* The old rex.B should be the new rex.X */
+			if (*rex_tag & AMD64_REX_B) {
+				*rex_tag |= AMD64_REX_X;
+			}
+			/* Since our new base is %r15 set rex.B */
+			*rex_tag |= AMD64_REX_B;
+		} else {
+			/* Shift the instruction by one byte  */
+			/* so we can insert a rex prefix      */
+			memmove (rex_tag + 1, rex_tag, (size_t)(*code - rex_tag));
+			*code += 1;
+			/* New rex prefix only needs rex.B for %r15 base */
+			*rex_tag = AMD64_REX(AMD64_REX_B);
+		}
+
+		if (legacy_prefix_tag) {
+			old_instruction_start = legacy_prefix_tag;
+		} else {
+			old_instruction_start = rex_tag;
+		}
+		
+		/* Clears the upper 32-bits of the previous base register */
+		amd64_mov_reg_reg_size (buf_ptr, true_basereg, true_basereg, 4);
+		insert_len = buf_ptr - buf;
+		
+		/* Move the old instruction forward to make */
+		/* room for 'mov' stored in 'buf_ptr'       */
+		memmove (old_instruction_start + insert_len, old_instruction_start, (size_t)(*code - old_instruction_start));
+		*code += insert_len;
+		memcpy (old_instruction_start, buf, insert_len);
+
+		/* Sandboxed replacement for the normal membase_emit */
+		x86_memindex_emit (*code, dreg, AMD64_R15, offset, basereg, 0);
+		
+	} else {
+		/* Normal default behavior, emit membase memory location */
+		x86_membase_emit_body (*code, dreg, basereg, offset);
+	}
+}
+
+
+static inline unsigned char*
+amd64_skip_nops (unsigned char* code)
+{
+	guint8 in_nop;
+	do {
+		in_nop = 0;
+		if (   code[0] == 0x90) {
+			in_nop = 1;
+			code += 1;
+		}
+		if (   code[0] == 0x66 && code[1] == 0x90) {
+			in_nop = 1;
+			code += 2;
+		}
+		if (code[0] == 0x0f && code[1] == 0x1f
+		 && code[2] == 0x00) {
+			in_nop = 1;
+			code += 3;
+		}
+		if (code[0] == 0x0f && code[1] == 0x1f
+		 && code[2] == 0x40 && code[3] == 0x00) {
+			in_nop = 1;
+			code += 4;
+		}
+		if (code[0] == 0x0f && code[1] == 0x1f
+		 && code[2] == 0x44 && code[3] == 0x00
+		 && code[4] == 0x00) {
+			in_nop = 1;
+			code += 5;
+		}
+		if (code[0] == 0x66 && code[1] == 0x0f
+		 && code[2] == 0x1f && code[3] == 0x44
+		 && code[4] == 0x00 && code[5] == 0x00) {
+			in_nop = 1;
+			code += 6;
+		}
+		if (code[0] == 0x0f && code[1] == 0x1f
+		 && code[2] == 0x80 && code[3] == 0x00
+		 && code[4] == 0x00 && code[5] == 0x00
+		 && code[6] == 0x00) {
+			in_nop = 1;
+			code += 7;
+		}
+		if (code[0] == 0x0f && code[1] == 0x1f
+		 && code[2] == 0x84 && code[3] == 0x00
+		 && code[4] == 0x00 && code[5] == 0x00
+		 && code[6] == 0x00 && code[7] == 0x00) {
+			in_nop = 1;
+			code += 8;
+		}
+	} while ( in_nop );
+	return code;
+}
+
+guint8*
+mono_arch_nacl_skip_nops (guint8* code)
+{
+  return amd64_skip_nops(code);
+}
+
+#endif /*__native_client_codegen__*/
+
 static inline void 
 amd64_patch (unsigned char* code, gpointer target)
 {
 	guint8 rex = 0;
 
+#ifdef __native_client_codegen__
+	code = amd64_skip_nops (code);
+#endif
+#if defined(__native_client_codegen__) && defined(__native_client__)
+	if (nacl_is_code_address (code)) {
+		/* For tail calls, code is patched after being installed */
+		/* but not through the normal "patch callsite" method.   */
+		unsigned char buf[kNaClAlignment];
+		unsigned char *aligned_code = (uintptr_t)code & ~kNaClAlignmentMask;
+		int ret;
+		memcpy (buf, aligned_code, kNaClAlignment);
+		/* Patch a temp buffer of bundle size, */
+		/* then install to actual location.    */
+		amd64_patch (buf + ((uintptr_t)code - (uintptr_t)aligned_code), target);
+		ret = nacl_dyncode_modify (aligned_code, buf, kNaClAlignment);
+		g_assert (ret == 0);
+		return;
+	}
+	target = nacl_modify_patch_target (target);
+#endif
+
 	/* Skip REX */
 	if ((code [0] >= 0x40) && (code [0] <= 0x4f)) {
 		rex = code [0];
@@ -260,6 +529,7 @@ typedef struct {
 	/* Only if storage == ArgValuetypeInReg */
 	ArgStorage pair_storage [2];
 	gint8 pair_regs [2];
+	int nregs;
 } ArgInfo;
 
 typedef struct {
@@ -299,7 +569,9 @@ add_general (guint32 *gr, guint32 *stack_size, ArgInfo *ainfo)
 
     if (*gr >= PARAM_REGS) {
 		ainfo->storage = ArgOnStack;
-		(*stack_size) += sizeof (gpointer);
+		/* Since the same stack slot size is used for all arg */
+		/*  types, it needs to be big enough to hold them all */
+		(*stack_size) += sizeof(mgreg_t);
     }
     else {
 		ainfo->storage = ArgInIReg;
@@ -321,7 +593,9 @@ add_float (guint32 *gr, guint32 *stack_size, ArgInfo *ainfo, gboolean is_double)
 
     if (*gr >= FLOAT_PARAM_REGS) {
 		ainfo->storage = ArgOnStack;
-		(*stack_size) += sizeof (gpointer);
+		/* Since the same stack slot size is used for both float */
+		/*  types, it needs to be big enough to hold them both */
+		(*stack_size) += sizeof(mgreg_t);
     }
     else {
 		/* A double register */
@@ -416,6 +690,32 @@ merge_argument_class_from_type (MonoType *type, ArgumentClass class1)
 
 	return class1;
 }
+#ifdef __native_client_codegen__
+const guint kNaClAlignment = kNaClAlignmentAMD64;
+const guint kNaClAlignmentMask = kNaClAlignmentMaskAMD64;
+
+/* Default alignment for Native Client is 32-byte. */
+gint8 nacl_align_byte = -32; /* signed version of 0xe0 */
+
+/* mono_arch_nacl_pad: Add pad bytes of alignment instructions at code,  */
+/* Check that alignment doesn't cross an alignment boundary.             */
+guint8*
+mono_arch_nacl_pad(guint8 *code, int pad)
+{
+	const int kMaxPadding = 8; /* see amd64-codegen.h:amd64_padding_size() */
+
+	if (pad == 0) return code;
+	/* assertion: alignment cannot cross a block boundary */
+	g_assert (((uintptr_t)code & (~kNaClAlignmentMask)) ==
+	         (((uintptr_t)code + pad - 1) & (~kNaClAlignmentMask)));
+	while (pad >= kMaxPadding) {
+		amd64_padding (code, kMaxPadding);
+		pad -= kMaxPadding;
+	}
+	if (pad != 0) amd64_padding (code, pad);
+	return code;
+}
+#endif
 
 static void
 add_valuetype (MonoGenericSharingContext *gsctx, MonoMethodSignature *sig, ArgInfo *ainfo, MonoType *type,
@@ -423,6 +723,9 @@ add_valuetype (MonoGenericSharingContext *gsctx, MonoMethodSignature *sig, ArgIn
 			   guint32 *gr, guint32 *fr, guint32 *stack_size)
 {
 	guint32 size, quad, nquads, i;
+	/* Keep track of the size used in each quad so we can */
+	/* use the right size when copying args/return vars.  */
+	guint32 quadsize [2] = {8, 8};
 	ArgumentClass args [2];
 	MonoMarshalType *info = NULL;
 	MonoClass *klass;
@@ -451,6 +754,25 @@ add_valuetype (MonoGenericSharingContext *gsctx, MonoMethodSignature *sig, ArgIn
 	}
 #endif
 
+	/* If this struct can't be split up naturally into 8-byte */
+	/* chunks (registers), pass it on the stack.              */
+	if (sig->pinvoke && !pass_on_stack) {
+		guint32 align;
+		guint32 field_size;
+
+		info = mono_marshal_load_type_info (klass);
+		g_assert(info);
+		for (i = 0; i < info->num_fields; ++i) {
+			field_size = mono_marshal_type_size (info->fields [i].field->type, 
+							   info->fields [i].mspec, 
+							   &align, TRUE, klass->unicode);
+			if ((info->fields [i].offset < 8) && (info->fields [i].offset + field_size) > 8) {
+				pass_on_stack = TRUE;
+				break;
+			}
+		}
+	}
+
 	if (pass_on_stack) {
 		/* Allways pass in memory */
 		ainfo->offset = *stack_size;
@@ -550,6 +872,10 @@ add_valuetype (MonoGenericSharingContext *gsctx, MonoMethodSignature *sig, ArgIn
 				if ((quad == 1) && (info->fields [i].offset < 8))
 					continue;
 
+				/* How far into this quad this data extends.*/
+				/* (8 is size of quad) */
+				quadsize [quad] = info->fields [i].offset + size - (quad * 8);
+
 				class1 = merge_argument_class_from_type (info->fields [i].field->type, class1);
 			}
 			g_assert (class1 != ARG_CLASS_NO_CLASS);
@@ -568,6 +894,7 @@ add_valuetype (MonoGenericSharingContext *gsctx, MonoMethodSignature *sig, ArgIn
 
 		ainfo->storage = ArgValuetypeInReg;
 		ainfo->pair_storage [0] = ainfo->pair_storage [1] = ArgNone;
+		ainfo->nregs = nquads;
 		for (quad = 0; quad < nquads; ++quad) {
 			switch (args [quad]) {
 			case ARG_CLASS_INTEGER:
@@ -586,7 +913,9 @@ add_valuetype (MonoGenericSharingContext *gsctx, MonoMethodSignature *sig, ArgIn
 				if (*fr >= FLOAT_PARAM_REGS)
 					args [quad] = ARG_CLASS_MEMORY;
 				else {
-					ainfo->pair_storage [quad] = ArgInDoubleSSEReg;
+					if (quadsize[quad] <= 4)
+						ainfo->pair_storage [quad] = ArgInFloatSSEReg;
+					else ainfo->pair_storage [quad] = ArgInDoubleSSEReg;
 					ainfo->pair_regs [quad] = *fr;
 					(*fr) ++;
 				}
@@ -607,7 +936,7 @@ add_valuetype (MonoGenericSharingContext *gsctx, MonoMethodSignature *sig, ArgIn
 			if (sig->pinvoke)
 				*stack_size += ALIGN_TO (info->native_size, 8);
 			else
-				*stack_size += nquads * sizeof (gpointer);
+				*stack_size += nquads * sizeof(mgreg_t);
 			ainfo->storage = ArgOnStack;
 		}
 	}
@@ -621,13 +950,14 @@ add_valuetype (MonoGenericSharingContext *gsctx, MonoMethodSignature *sig, ArgIn
  * Draft Version 0.23" document for more information.
  */
 static CallInfo*
-get_call_info (MonoGenericSharingContext *gsctx, MonoMemPool *mp, MonoMethodSignature *sig, gboolean is_pinvoke)
+get_call_info (MonoGenericSharingContext *gsctx, MonoMemPool *mp, MonoMethodSignature *sig)
 {
 	guint32 i, gr, fr, pstart;
 	MonoType *ret_type;
 	int n = sig->hasthis + sig->param_count;
 	guint32 stack_size = 0;
 	CallInfo *cinfo;
+	gboolean is_pinvoke = sig->pinvoke;
 
 	if (mp)
 		cinfo = mono_mempool_alloc0 (mp, sizeof (CallInfo) + (sizeof (ArgInfo) * n));
@@ -835,11 +1165,13 @@ get_call_info (MonoGenericSharingContext *gsctx, MonoMemPool *mp, MonoMethodSign
 	stack_size += 0x20;
 #endif
 
+#ifndef MONO_AMD64_NO_PUSHES
 	if (stack_size & 0x8) {
 		/* The AMD64 ABI requires each stack frame to be 16 byte aligned */
 		cinfo->need_stack_align = TRUE;
 		stack_size += 8;
 	}
+#endif
 
 	cinfo->stack_usage = stack_size;
 	cinfo->reg_usage = gr;
@@ -862,7 +1194,7 @@ int
 mono_arch_get_argument_info (MonoMethodSignature *csig, int param_count, MonoJitArgumentInfo *arg_info)
 {
 	int k;
-	CallInfo *cinfo = get_call_info (NULL, NULL, csig, FALSE);
+	CallInfo *cinfo = get_call_info (NULL, NULL, csig);
 	guint32 args_size = cinfo->stack_usage;
 
 	/* The arguments are saved to a stack area in mono_arch_instrument_prolog */
@@ -881,9 +1213,31 @@ mono_arch_get_argument_info (MonoMethodSignature *csig, int param_count, MonoJit
 	return args_size;
 }
 
+gboolean
+mono_amd64_tail_call_supported (MonoMethodSignature *caller_sig, MonoMethodSignature *callee_sig)
+{
+	CallInfo *c1, *c2;
+	gboolean res;
+
+	c1 = get_call_info (NULL, NULL, caller_sig);
+	c2 = get_call_info (NULL, NULL, callee_sig);
+	res = c1->stack_usage >= c2->stack_usage;
+	if (callee_sig->ret && MONO_TYPE_ISSTRUCT (callee_sig->ret) && c2->ret.storage != ArgValuetypeInReg)
+		/* An address on the callee's stack is passed as the first argument */
+		res = FALSE;
+
+	g_free (c1);
+	g_free (c2);
+
+	return res;
+}
+
 static int 
 cpuid (int id, int* p_eax, int* p_ebx, int* p_ecx, int* p_edx)
 {
+#if defined(MONO_CROSS_COMPILE)
+	return 0;
+#else
 #ifndef _MSC_VER
 	__asm__ __volatile__ ("cpuid"
 		: "=a" (*p_eax), "=b" (*p_ebx), "=c" (*p_ecx), "=d" (*p_edx)
@@ -897,6 +1251,7 @@ cpuid (int id, int* p_eax, int* p_ebx, int* p_ecx, int* p_edx)
 	*p_edx = info[3];
 #endif
 	return 1;
+#endif
 }
 
 /*
@@ -930,6 +1285,12 @@ mono_arch_init (void)
 	int flags;
 
 	InitializeCriticalSection (&mini_arch_mutex);
+#if defined(__native_client_codegen__)
+	nacl_instruction_depth = TlsAlloc ();
+	TlsSetValue (nacl_instruction_depth, (gpointer)0);
+	nacl_rex_tag = TlsAlloc ();
+	nacl_legacy_prefix_tag = TlsAlloc ();
+#endif
 
 #ifdef MONO_ARCH_NOMAP32BIT
 	flags = MONO_MMAP_READ;
@@ -962,6 +1323,11 @@ void
 mono_arch_cleanup (void)
 {
 	DeleteCriticalSection (&mini_arch_mutex);
+#if defined(__native_client_codegen__)
+	TlsFree (nacl_instruction_depth);
+	TlsFree (nacl_rex_tag);
+	TlsFree (nacl_legacy_prefix_tag);
+#endif
 }
 
 /*
@@ -1084,7 +1450,7 @@ mono_arch_compute_omit_fp (MonoCompile *cfg)
 	sig = mono_method_signature (cfg->method);
 
 	if (!cfg->arch.cinfo)
-		cfg->arch.cinfo = get_call_info (cfg->generic_sharing_context, cfg->mempool, sig, FALSE);
+		cfg->arch.cinfo = get_call_info (cfg->generic_sharing_context, cfg->mempool, sig);
 	cinfo = cfg->arch.cinfo;
 
 	/*
@@ -1093,6 +1459,13 @@ mono_arch_compute_omit_fp (MonoCompile *cfg)
 	cfg->arch.omit_fp = TRUE;
 	cfg->arch.omit_fp_computed = TRUE;
 
+#ifdef __native_client_codegen__
+	/* NaCl modules may not change the value of RBP, so it cannot be */
+	/* used as a normal register, but it can be used as a frame pointer*/
+	cfg->disable_omit_fp = TRUE;
+	cfg->arch.omit_fp = FALSE;
+#endif
+
 	if (cfg->disable_omit_fp)
 		cfg->arch.omit_fp = FALSE;
 
@@ -1149,7 +1522,9 @@ mono_arch_get_global_int_regs (MonoCompile *cfg)
 		regs = g_list_prepend (regs, (gpointer)AMD64_R12);
 		regs = g_list_prepend (regs, (gpointer)AMD64_R13);
 		regs = g_list_prepend (regs, (gpointer)AMD64_R14);
+#ifndef __native_client_codegen__
 		regs = g_list_prepend (regs, (gpointer)AMD64_R15);
+#endif
  
 		regs = g_list_prepend (regs, (gpointer)AMD64_R10);
 		regs = g_list_prepend (regs, (gpointer)AMD64_R9);
@@ -1168,7 +1543,9 @@ mono_arch_get_global_int_regs (MonoCompile *cfg)
 		regs = g_list_prepend (regs, (gpointer)AMD64_R12);
 		regs = g_list_prepend (regs, (gpointer)AMD64_R13);
 		regs = g_list_prepend (regs, (gpointer)AMD64_R14);
+#ifndef __native_client_codegen__
 		regs = g_list_prepend (regs, (gpointer)AMD64_R15);
+#endif
 #ifdef HOST_WIN32
 		regs = g_list_prepend (regs, (gpointer)AMD64_RDI);
 		regs = g_list_prepend (regs, (gpointer)AMD64_RSI);
@@ -1204,7 +1581,9 @@ mono_arch_get_iregs_clobbered_by_call (MonoCallInst *call)
 		regs = g_list_prepend (regs, (gpointer)AMD64_R12);
 		regs = g_list_prepend (regs, (gpointer)AMD64_R13);
 		regs = g_list_prepend (regs, (gpointer)AMD64_R14);
+#ifndef __native_client_codegen__
 		regs = g_list_prepend (regs, (gpointer)AMD64_R15);
+#endif
 
 		regs = g_list_prepend (regs, (gpointer)AMD64_R10);
 		regs = g_list_prepend (regs, (gpointer)AMD64_R9);
@@ -1405,7 +1784,7 @@ mono_arch_allocate_vars (MonoCompile *cfg)
 		/* Reserve space for caller saved registers */
 		for (i = 0; i < AMD64_NREG; ++i)
 			if (AMD64_IS_CALLEE_SAVED_REG (i) && (cfg->used_int_regs & (1 << i))) {
-				offset += sizeof (gpointer);
+				offset += sizeof(mgreg_t);
 			}
 	}
 
@@ -1534,12 +1913,12 @@ mono_arch_allocate_vars (MonoCompile *cfg)
 					ins->opcode = OP_REGOFFSET;
 					ins->inst_basereg = cfg->frame_reg;
 					/* These arguments are saved to the stack in the prolog */
-					offset = ALIGN_TO (offset, sizeof (gpointer));
+					offset = ALIGN_TO (offset, sizeof(mgreg_t));
 					if (cfg->arch.omit_fp) {
 						ins->inst_offset = offset;
-						offset += (ainfo->storage == ArgValuetypeInReg) ? 2 * sizeof (gpointer) : sizeof (gpointer);
+						offset += (ainfo->storage == ArgValuetypeInReg) ? ainfo->nregs * sizeof (mgreg_t) : sizeof (mgreg_t);
 					} else {
-						offset += (ainfo->storage == ArgValuetypeInReg) ? 2 * sizeof (gpointer) : sizeof (gpointer);
+						offset += (ainfo->storage == ArgValuetypeInReg) ? ainfo->nregs * sizeof (mgreg_t) : sizeof (mgreg_t);
 						ins->inst_offset = - offset;
 					}
 					break;
@@ -1611,14 +1990,14 @@ mono_arch_allocate_vars (MonoCompile *cfg)
 				ins->opcode = OP_REGOFFSET;
 				ins->inst_basereg = cfg->frame_reg;
 				/* These arguments are saved to the stack in the prolog */
-				offset = ALIGN_TO (offset, sizeof (gpointer));
+				offset = ALIGN_TO (offset, sizeof(mgreg_t));
 				if (cfg->arch.omit_fp) {
 					ins->inst_offset = offset;
-					offset += (ainfo->storage == ArgValuetypeInReg) ? 2 * sizeof (gpointer) : sizeof (gpointer);
+					offset += (ainfo->storage == ArgValuetypeInReg) ? ainfo->nregs * sizeof (mgreg_t) : sizeof (mgreg_t);
 					// Arguments are yet supported by the stack map creation code
 					//cfg->locals_max_stack_offset = MAX (cfg->locals_max_stack_offset, offset);
 				} else {
-					offset += (ainfo->storage == ArgValuetypeInReg) ? 2 * sizeof (gpointer) : sizeof (gpointer);
+					offset += (ainfo->storage == ArgValuetypeInReg) ? ainfo->nregs * sizeof (mgreg_t) : sizeof (mgreg_t);
 					ins->inst_offset = - offset;
 					//cfg->locals_min_stack_offset = MIN (cfg->locals_min_stack_offset, offset);
 				}
@@ -1638,7 +2017,7 @@ mono_arch_create_vars (MonoCompile *cfg)
 	sig = mono_method_signature (cfg->method);
 
 	if (!cfg->arch.cinfo)
-		cfg->arch.cinfo = get_call_info (cfg->generic_sharing_context, cfg->mempool, sig, FALSE);
+		cfg->arch.cinfo = get_call_info (cfg->generic_sharing_context, cfg->mempool, sig);
 	cinfo = cfg->arch.cinfo;
 
 	if (cinfo->ret.storage == ArgValuetypeInReg)
@@ -1682,7 +2061,7 @@ add_outarg_reg (MonoCompile *cfg, MonoCallInst *call, ArgStorage storage, int re
 	switch (storage) {
 	case ArgInIReg:
 		MONO_INST_NEW (cfg, ins, OP_MOVE);
-		ins->dreg = mono_alloc_ireg (cfg);
+		ins->dreg = mono_alloc_ireg_copy (cfg, tree->dreg);
 		ins->sreg1 = tree->dreg;
 		MONO_ADD_INS (cfg->cbb, ins);
 		mono_call_inst_add_outarg_reg (cfg, call, ins->dreg, reg, FALSE);
@@ -1714,7 +2093,11 @@ arg_storage_to_load_membase (ArgStorage storage)
 {
 	switch (storage) {
 	case ArgInIReg:
+#if defined(__mono_ilp32__)
+		return OP_LOADI8_MEMBASE;
+#else
 		return OP_LOAD_MEMBASE;
+#endif
 	case ArgInDoubleSSEReg:
 		return OP_LOADR8_MEMBASE;
 	case ArgInFloatSSEReg:
@@ -1747,7 +2130,7 @@ emit_sig_cookie (MonoCompile *cfg, MonoCallInst *call, CallInfo *cinfo)
 	 * passed on the stack after the signature. So compensate by 
 	 * passing a different signature.
 	 */
-	tmp_sig = mono_metadata_signature_dup (call->signature);
+	tmp_sig = mono_metadata_signature_dup_full (cfg->method->klass->image, call->signature);
 	tmp_sig->param_count -= call->signature->sentinelpos;
 	tmp_sig->sentinelpos = 0;
 	memcpy (tmp_sig->params, call->signature->params + call->signature->sentinelpos, tmp_sig->param_count * sizeof (MonoType*));
@@ -1793,7 +2176,7 @@ mono_arch_get_llvm_call_info (MonoCompile *cfg, MonoMethodSignature *sig)
 
 	n = sig->param_count + sig->hasthis;
 
-	cinfo = get_call_info (cfg->generic_sharing_context, cfg->mempool, sig, sig->pinvoke);
+	cinfo = get_call_info (cfg->generic_sharing_context, cfg->mempool, sig);
 
 	linfo = mono_mempool_alloc0 (cfg->mempool, sizeof (LLVMCallInfo) + (sizeof (LLVMArgInfo) * n));
 
@@ -1888,7 +2271,7 @@ mono_arch_emit_call (MonoCompile *cfg, MonoCallInst *call)
 	sig = call->signature;
 	n = sig->param_count + sig->hasthis;
 
-	cinfo = get_call_info (cfg->generic_sharing_context, cfg->mempool, sig, sig->pinvoke);
+	cinfo = get_call_info (cfg->generic_sharing_context, cfg->mempool, sig);
 
 	if (COMPILE_LLVM (cfg)) {
 		/* We shouldn't be called in the llvm case */
@@ -1928,6 +2311,11 @@ mono_arch_emit_call (MonoCompile *cfg, MonoCallInst *call)
 				} else {
 					MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STORE_MEMBASE_REG, AMD64_RSP, ainfo->offset, in->dreg);
 				}
+				if (cfg->compute_gc_maps) {
+					MonoInst *def;
+
+					EMIT_NEW_GC_PARAM_SLOT_LIVENESS_DEF (cfg, def, ainfo->offset, t);
+				}
 			}
 		}
 	}
@@ -2118,7 +2506,7 @@ mono_arch_emit_outarg_vt (MonoCompile *cfg, MonoInst *ins, MonoInst *src)
 
 			MONO_INST_NEW (cfg, load, arg_storage_to_load_membase (ainfo->pair_storage [part]));
 			load->inst_basereg = src->dreg;
-			load->inst_offset = part * sizeof (gpointer);
+			load->inst_offset = part * sizeof(mgreg_t);
 
 			switch (ainfo->pair_storage [part]) {
 			case ArgInIReg:
@@ -2195,6 +2583,11 @@ mono_arch_emit_outarg_vt (MonoCompile *cfg, MonoInst *ins, MonoInst *src)
 				MONO_ADD_INS (cfg->cbb, arg);
 			}
 		}
+
+		if (cfg->compute_gc_maps) {
+			MonoInst *def;
+			EMIT_NEW_GC_PARAM_SLOT_LIVENESS_DEF (cfg, def, ainfo->offset, &ins->klass->byval_arg);
+		}
 	}
 }
 
@@ -2301,7 +2694,7 @@ mono_arch_dyn_call_prepare (MonoMethodSignature *sig)
 	ArchDynCallInfo *info;
 	CallInfo *cinfo;
 
-	cinfo = get_call_info (NULL, NULL, sig, FALSE);
+	cinfo = get_call_info (NULL, NULL, sig);
 
 	if (!dyn_call_supported (sig, cinfo)) {
 		g_free (cinfo);
@@ -2330,6 +2723,15 @@ mono_arch_dyn_call_free (MonoDynCallInfo *info)
 	g_free (ainfo);
 }
 
+#if !defined(__native_client__)
+#define PTR_TO_GREG(ptr) (mgreg_t)(ptr)
+#define GREG_TO_PTR(greg) (gpointer)(greg)
+#else
+/* Correctly handle casts to/from 32-bit pointers without compiler warnings */
+#define PTR_TO_GREG(ptr) (mgreg_t)(uintptr_t)(ptr)
+#define GREG_TO_PTR(greg) (gpointer)(guint32)(greg)
+#endif
+
 /*
  * mono_arch_get_start_dyn_call:
  *
@@ -2349,7 +2751,7 @@ mono_arch_start_dyn_call (MonoDynCallInfo *info, gpointer **args, guint8 *ret, g
 {
 	ArchDynCallInfo *dinfo = (ArchDynCallInfo*)info;
 	DynCallArgs *p = (DynCallArgs*)buf;
-	int arg_index, greg, i;
+	int arg_index, greg, i, pindex;
 	MonoMethodSignature *sig = dinfo->sig;
 
 	g_assert (buf_len >= sizeof (DynCallArgs));
@@ -2359,20 +2761,23 @@ mono_arch_start_dyn_call (MonoDynCallInfo *info, gpointer **args, guint8 *ret, g
 
 	arg_index = 0;
 	greg = 0;
+	pindex = 0;
 
-	if (dinfo->cinfo->vtype_retaddr)
-		p->regs [greg ++] = (mgreg_t)ret;
-
-	if (sig->hasthis) {
-		p->regs [greg ++] = (mgreg_t)*(args [arg_index ++]);
+	if (sig->hasthis || dinfo->cinfo->vret_arg_index == 1) {
+		p->regs [greg ++] = PTR_TO_GREG(*(args [arg_index ++]));
+		if (!sig->hasthis)
+			pindex = 1;
 	}
 
-	for (i = 0; i < sig->param_count; i++) {
+	if (dinfo->cinfo->vtype_retaddr)
+		p->regs [greg ++] = PTR_TO_GREG(ret);
+
+	for (i = pindex; i < sig->param_count; i++) {
 		MonoType *t = mono_type_get_underlying_type (sig->params [i]);
 		gpointer *arg = args [arg_index ++];
 
 		if (t->byref) {
-			p->regs [greg ++] = (mgreg_t)*(arg);
+			p->regs [greg ++] = PTR_TO_GREG(*(arg));
 			continue;
 		}
 
@@ -2385,11 +2790,20 @@ mono_arch_start_dyn_call (MonoDynCallInfo *info, gpointer **args, guint8 *ret, g
 		case MONO_TYPE_PTR:
 		case MONO_TYPE_I:
 		case MONO_TYPE_U:
+#if !defined(__mono_ilp32__)
+		case MONO_TYPE_I8:
+		case MONO_TYPE_U8:
+#endif
+			g_assert (dinfo->cinfo->args [i + sig->hasthis].reg == param_regs [greg]);
+			p->regs [greg ++] = PTR_TO_GREG(*(arg));
+			break;
+#if defined(__mono_ilp32__)
 		case MONO_TYPE_I8:
 		case MONO_TYPE_U8:
 			g_assert (dinfo->cinfo->args [i + sig->hasthis].reg == param_regs [greg]);
-			p->regs [greg ++] = (mgreg_t)*(arg);
+			p->regs [greg ++] = *(guint64*)(arg);
 			break;
+#endif
 		case MONO_TYPE_BOOLEAN:
 		case MONO_TYPE_U1:
 			p->regs [greg ++] = *(guint8*)(arg);
@@ -2412,7 +2826,7 @@ mono_arch_start_dyn_call (MonoDynCallInfo *info, gpointer **args, guint8 *ret, g
 			break;
 		case MONO_TYPE_GENERICINST:
 		    if (MONO_TYPE_IS_REFERENCE (t)) {
-				p->regs [greg ++] = (mgreg_t)*(arg);
+				p->regs [greg ++] = PTR_TO_GREG(*(arg));
 				break;
 			} else {
 				/* Fall through */
@@ -2468,7 +2882,7 @@ mono_arch_finish_dyn_call (MonoDynCallInfo *info, guint8 *buf)
 	case MONO_TYPE_I:
 	case MONO_TYPE_U:
 	case MONO_TYPE_PTR:
-		*(gpointer*)ret = (gpointer)res;
+		*(gpointer*)ret = GREG_TO_PTR(res);
 		break;
 	case MONO_TYPE_I1:
 		*(gint8*)ret = res;
@@ -2498,7 +2912,7 @@ mono_arch_finish_dyn_call (MonoDynCallInfo *info, guint8 *buf)
 		break;
 	case MONO_TYPE_GENERICINST:
 		if (MONO_TYPE_IS_REFERENCE (sig->ret)) {
-			*(gpointer*)ret = (gpointer)res;
+			*(gpointer*)ret = GREG_TO_PTR(res);
 			break;
 		} else {
 			/* Fall through */
@@ -2651,8 +3065,10 @@ emit_call_body (MonoCompile *cfg, guint8 *code, guint32 patch_type, gconstpointe
 			 * not span cache lines. This is required for code patching to work on SMP
 			 * systems.
 			 */
-			if (!no_patch && ((guint32)(code + 1 - cfg->native_code) % 4) != 0)
-				amd64_padding (code, 4 - ((guint32)(code + 1 - cfg->native_code) % 4));
+			if (!no_patch && ((guint32)(code + 1 - cfg->native_code) % 4) != 0) {
+				guint32 pad_size = 4 - ((guint32)(code + 1 - cfg->native_code) % 4);
+				amd64_padding (code, pad_size);
+			}
 			mono_add_patch_info (cfg, code - cfg->native_code, patch_type, data);
 			amd64_call_code (code, 0);
 		}
@@ -2838,7 +3254,7 @@ mono_arch_peephole_pass_2 (MonoCompile *cfg, MonoBasicBlock *bb)
 					if (((ins2->opcode == OP_STORE_MEMBASE_IMM) || (ins2->opcode == OP_STOREI4_MEMBASE_IMM) || (ins2->opcode == OP_STOREI8_MEMBASE_IMM) || (ins2->opcode == OP_STORE_MEMBASE_IMM)) && (ins2->inst_imm == 0)) {
 						ins2->opcode = store_membase_imm_to_store_membase_reg (ins2->opcode);
 						ins2->sreg1 = ins->dreg;
-					} else if ((ins2->opcode == OP_STOREI1_MEMBASE_IMM) || (ins2->opcode == OP_STOREI2_MEMBASE_IMM) || (ins2->opcode == OP_STOREI4_MEMBASE_REG) || (ins2->opcode == OP_STOREI8_MEMBASE_REG) || (ins2->opcode == OP_STORE_MEMBASE_REG) || (ins2->opcode == OP_LIVERANGE_START)) {
+					} else if ((ins2->opcode == OP_STOREI1_MEMBASE_IMM) || (ins2->opcode == OP_STOREI2_MEMBASE_IMM) || (ins2->opcode == OP_STOREI4_MEMBASE_REG) || (ins2->opcode == OP_STOREI8_MEMBASE_REG) || (ins2->opcode == OP_STORE_MEMBASE_REG) || (ins2->opcode == OP_LIVERANGE_START) || (ins2->opcode == OP_GC_LIVENESS_DEF) || (ins2->opcode == OP_GC_LIVENESS_USE)) {
 						/* Continue */
 					} else if (((ins2->opcode == OP_ICONST) || (ins2->opcode == OP_I8CONST)) && (ins2->dreg == ins->dreg) && (ins2->inst_c0 == 0)) {
 						NULLIFY_INS (ins2);
@@ -2909,8 +3325,13 @@ mono_arch_lowering_pass (MonoCompile *cfg, MonoBasicBlock *bb)
 				ins->sreg2 = temp->dreg;
 			}
 			break;
+#ifndef __mono_ilp32__
 		case OP_LOAD_MEMBASE:
+#endif
 		case OP_LOADI8_MEMBASE:
+#ifndef __native_client_codegen__
+		/*  Don't generate memindex opcodes (to simplify */
+		/*  read sandboxing) */
 			if (!amd64_is_imm32 (ins->inst_offset)) {
 				NEW_INS (cfg, ins, temp, OP_I8CONST);
 				temp->inst_c0 = ins->inst_offset;
@@ -2918,8 +3339,11 @@ mono_arch_lowering_pass (MonoCompile *cfg, MonoBasicBlock *bb)
 				ins->opcode = OP_AMD64_LOADI8_MEMINDEX;
 				ins->inst_indexreg = temp->dreg;
 			}
+#endif
 			break;
+#ifndef __mono_ilp32__
 		case OP_STORE_MEMBASE_IMM:
+#endif
 		case OP_STOREI8_MEMBASE_IMM:
 			if (!amd64_is_imm32 (ins->inst_imm)) {
 				NEW_INS (cfg, ins, temp, OP_I8CONST);
@@ -3071,8 +3495,20 @@ mono_emit_stack_alloc (MonoCompile *cfg, guchar *code, MonoInst* tree)
 		if (cfg->param_area && cfg->arch.no_pushes)
 			amd64_alu_reg_imm (code, X86_ADD, AMD64_RDI, cfg->param_area);
 		amd64_cld (code);
+#if defined(__default_codegen__)
+		amd64_prefix (code, X86_REP_PREFIX);
+		amd64_stosl (code);
+#elif defined(__native_client_codegen__)
+		/* NaCl stos pseudo-instruction */
+		amd64_codegen_pre(code);
+		/* First, clear the upper 32 bits of RDI (mov %edi, %edi)  */
+		amd64_mov_reg_reg (code, AMD64_RDI, AMD64_RDI, 4);
+		/* Add %r15 to %rdi using lea, condition flags unaffected. */
+		amd64_lea_memindex_size (code, AMD64_RDI, AMD64_R15, 0, AMD64_RDI, 0, 8);
 		amd64_prefix (code, X86_REP_PREFIX);
 		amd64_stosl (code);
+		amd64_codegen_post(code);
+#endif /* __native_client_codegen__ */
 		
 		if (tree->dreg != AMD64_RDI && sreg != AMD64_RDI)
 			amd64_pop_reg (code, AMD64_RDI);
@@ -3118,18 +3554,18 @@ emit_move_return_value (MonoCompile *cfg, MonoInst *ins, guint8 *code)
 	case OP_VCALL2:
 	case OP_VCALL2_REG:
 	case OP_VCALL2_MEMBASE:
-		cinfo = get_call_info (cfg->generic_sharing_context, cfg->mempool, ((MonoCallInst*)ins)->signature, FALSE);
+		cinfo = get_call_info (cfg->generic_sharing_context, cfg->mempool, ((MonoCallInst*)ins)->signature);
 		if (cinfo->ret.storage == ArgValuetypeInReg) {
 			MonoInst *loc = cfg->arch.vret_addr_loc;
 
 			/* Load the destination address */
 			g_assert (loc->opcode == OP_REGOFFSET);
-			amd64_mov_reg_membase (code, AMD64_RCX, loc->inst_basereg, loc->inst_offset, 8);
+			amd64_mov_reg_membase (code, AMD64_RCX, loc->inst_basereg, loc->inst_offset, sizeof(gpointer));
 
 			for (quad = 0; quad < 2; quad ++) {
 				switch (cinfo->ret.pair_storage [quad]) {
 				case ArgInIReg:
-					amd64_mov_membase_reg (code, AMD64_RCX, (quad * 8), cinfo->ret.pair_regs [quad], 8);
+					amd64_mov_membase_reg (code, AMD64_RCX, (quad * sizeof(mgreg_t)), cinfo->ret.pair_regs [quad], sizeof(mgreg_t));
 					break;
 				case ArgInFloatSSEReg:
 					amd64_movss_membase_reg (code, AMD64_RCX, (quad * 8), cinfo->ret.pair_regs [quad]);
@@ -3205,6 +3641,15 @@ amd64_pop_reg (code, AMD64_RAX);
 
 #ifndef DISABLE_JIT
 
+#if defined(__native_client__) || defined(__native_client_codegen__)
+void mono_nacl_gc()
+{
+#ifdef __native_client_gc__
+	__nacl_suspend_thread_if_needed();
+#endif
+}
+#endif
+
 void
 mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
 {
@@ -3238,6 +3683,21 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
 		}
 	}
 
+#if defined(__native_client_codegen__)
+	/* For Native Client, all indirect call/jump targets must be */
+	/* 32-byte aligned.  Exception handler blocks are jumped to  */
+	/* indirectly as well.                                       */
+	gboolean bb_needs_alignment = (bb->flags & BB_INDIRECT_JUMP_TARGET) ||
+				      (bb->flags & BB_EXCEPTION_HANDLER);
+
+	if ( bb_needs_alignment && ((cfg->code_len & kNaClAlignmentMask) != 0)) {
+		int pad = kNaClAlignment - (cfg->code_len & kNaClAlignmentMask);
+		if (pad != kNaClAlignment) code = mono_arch_nacl_pad(code, pad);
+		cfg->code_len += pad;
+		bb->native_offset = cfg->code_len;
+	}
+#endif  /*__native_client_codegen__*/
+
 	if (cfg->verbose_level > 2)
 		g_print ("Basic block %d starting at offset 0x%x\n", bb->block_num, bb->native_offset);
 
@@ -3263,9 +3723,11 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
 
 		max_len = ((guint8 *)ins_get_spec (ins->opcode))[MONO_INST_LEN];
 
-		if (G_UNLIKELY (offset > (cfg->code_size - max_len - 16))) {
+#define EXTRA_CODE_SPACE (NACL_SIZE (16, 16 + kNaClAlignment))
+
+		if (G_UNLIKELY (offset > (cfg->code_size - max_len - EXTRA_CODE_SPACE))) {
 			cfg->code_size *= 2;
-			cfg->native_code = g_realloc (cfg->native_code, cfg->code_size);
+			cfg->native_code = mono_realloc_native_code(cfg);
 			code = cfg->native_code + offset;
 			mono_jit_stats.code_reallocs++;
 		}
@@ -3298,7 +3760,11 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
 		case OP_STOREI2_MEMBASE_REG:
 			amd64_mov_membase_reg (code, ins->inst_destbasereg, ins->inst_offset, ins->sreg1, 2);
 			break;
+		/* In AMD64 NaCl, pointers are 4 bytes, */
+		/*  so STORE_* != STOREI8_*. Likewise below. */
 		case OP_STORE_MEMBASE_REG:
+			amd64_mov_membase_reg (code, ins->inst_destbasereg, ins->inst_offset, ins->sreg1, sizeof(gpointer));
+			break;
 		case OP_STOREI8_MEMBASE_REG:
 			amd64_mov_membase_reg (code, ins->inst_destbasereg, ins->inst_offset, ins->sreg1, 8);
 			break;
@@ -3306,15 +3772,32 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
 			amd64_mov_membase_reg (code, ins->inst_destbasereg, ins->inst_offset, ins->sreg1, 4);
 			break;
 		case OP_STORE_MEMBASE_IMM:
+#ifndef __native_client_codegen__
+			/* In NaCl, this could be a PCONST type, which could */
+			/* mean a pointer type was copied directly into the  */
+			/* lower 32-bits of inst_imm, so for InvalidPtr==-1  */
+			/* the value would be 0x00000000FFFFFFFF which is    */
+			/* not proper for an imm32 unless you cast it.       */
+			g_assert (amd64_is_imm32 (ins->inst_imm));
+#endif
+			amd64_mov_membase_imm (code, ins->inst_destbasereg, ins->inst_offset, (gint32)ins->inst_imm, sizeof(gpointer));
+			break;
 		case OP_STOREI8_MEMBASE_IMM:
 			g_assert (amd64_is_imm32 (ins->inst_imm));
 			amd64_mov_membase_imm (code, ins->inst_destbasereg, ins->inst_offset, ins->inst_imm, 8);
 			break;
 		case OP_LOAD_MEM:
+#ifdef __mono_ilp32__
+			/* In ILP32, pointers are 4 bytes, so separate these */
+			/* cases, use literal 8 below where we really want 8 */
+			amd64_mov_reg_imm (code, ins->dreg, ins->inst_imm);
+			amd64_mov_reg_membase (code, ins->dreg, ins->dreg, 0, sizeof(gpointer));
+			break;
+#endif
 		case OP_LOADI8_MEM:
 			// FIXME: Decompose this earlier
 			if (amd64_is_imm32 (ins->inst_imm))
-				amd64_mov_reg_mem (code, ins->dreg, ins->inst_imm, sizeof (gpointer));
+				amd64_mov_reg_mem (code, ins->dreg, ins->inst_imm, 8);
 			else {
 				amd64_mov_reg_imm (code, ins->dreg, ins->inst_imm);
 				amd64_mov_reg_membase (code, ins->dreg, ins->dreg, 0, 8);
@@ -3338,13 +3821,20 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
 			amd64_widen_membase (code, ins->dreg, ins->dreg, 0, FALSE, FALSE);
 			break;
 		case OP_LOADU2_MEM:
+			/* For NaCl, pointers are 4 bytes, so separate these */
+			/* cases, use literal 8 below where we really want 8 */
 			amd64_mov_reg_imm (code, ins->dreg, ins->inst_imm);
 			amd64_widen_membase (code, ins->dreg, ins->dreg, 0, FALSE, TRUE);
 			break;
 		case OP_LOAD_MEMBASE:
+			g_assert (amd64_is_imm32 (ins->inst_offset));
+			amd64_mov_reg_membase (code, ins->dreg, ins->inst_basereg, ins->inst_offset, sizeof(gpointer));
+			break;
 		case OP_LOADI8_MEMBASE:
+			/* Use literal 8 instead of sizeof pointer or */
+			/* register, we really want 8 for this opcode */
 			g_assert (amd64_is_imm32 (ins->inst_offset));
-			amd64_mov_reg_membase (code, ins->dreg, ins->inst_basereg, ins->inst_offset, sizeof (gpointer));
+			amd64_mov_reg_membase (code, ins->dreg, ins->inst_basereg, ins->inst_offset, 8);
 			break;
 		case OP_LOADI4_MEMBASE:
 			amd64_movsxd_reg_membase (code, ins->dreg, ins->inst_basereg, ins->inst_offset);
@@ -4032,14 +4522,14 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
 			break;
 		case OP_AOTCONST:
 			mono_add_patch_info (cfg, offset, (MonoJumpInfoType)ins->inst_i1, ins->inst_p0);
-			amd64_mov_reg_membase (code, ins->dreg, AMD64_RIP, 0, 8);
+			amd64_mov_reg_membase (code, ins->dreg, AMD64_RIP, 0, sizeof(gpointer));
 			break;
 		case OP_JUMP_TABLE:
 			mono_add_patch_info (cfg, offset, (MonoJumpInfoType)ins->inst_i1, ins->inst_p0);
 			amd64_mov_reg_imm_size (code, ins->dreg, 0, 8);
 			break;
 		case OP_MOVE:
-			amd64_mov_reg_reg (code, ins->dreg, ins->sreg1, sizeof (gpointer));
+			amd64_mov_reg_reg (code, ins->dreg, ins->sreg1, sizeof(mgreg_t));
 			break;
 		case OP_AMD64_SET_XMMREG_R4: {
 			amd64_sse_cvtsd2ss_reg_reg (code, ins->dreg, ins->sreg1);
@@ -4051,10 +4541,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
 			break;
 		}
 		case OP_TAILCALL: {
-			/*
-			 * Note: this 'frame destruction' logic is useful for tail calls, too.
-			 * Keep in sync with the code in emit_epilog.
-			 */
+			MonoCallInst *call = (MonoCallInst*)ins;
 			int pos = 0, i;
 
 			/* FIXME: no tracing support... */
@@ -4072,20 +4559,32 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
 						save_offset += 8;
 					}
 				amd64_alu_reg_imm (code, X86_ADD, AMD64_RSP, cfg->arch.stack_alloc_size);
+
+				// FIXME:
+				if (call->stack_usage)
+					NOT_IMPLEMENTED;
 			}
 			else {
 				for (i = 0; i < AMD64_NREG; ++i)
 					if (AMD64_IS_CALLEE_SAVED_REG (i) && (cfg->used_int_regs & (1 << i)))
-						pos -= sizeof (gpointer);
-			
-				if (pos)
-					amd64_lea_membase (code, AMD64_RSP, AMD64_RBP, pos);
+						pos -= sizeof(mgreg_t);
 
-				/* Pop registers in reverse order */
-				for (i = AMD64_NREG - 1; i > 0; --i)
+				/* Restore callee-saved registers */
+				for (i = AMD64_NREG - 1; i > 0; --i) {
 					if (AMD64_IS_CALLEE_SAVED_REG (i) && (cfg->used_int_regs & (1 << i))) {
-						amd64_pop_reg (code, i);
+						amd64_mov_reg_membase (code, i, AMD64_RBP, pos, sizeof(mgreg_t));
+						pos += sizeof(mgreg_t);
 					}
+				}
+
+				/* Copy arguments on the stack to our argument area */
+				for (i = 0; i < call->stack_usage; i += sizeof(mgreg_t)) {
+					amd64_mov_reg_membase (code, AMD64_RAX, AMD64_RSP, i, sizeof(mgreg_t));
+					amd64_mov_membase_reg (code, AMD64_RBP, 16 + i, AMD64_RAX, sizeof(mgreg_t));
+				}
+			
+				if (pos)
+					amd64_lea_membase (code, AMD64_RSP, AMD64_RBP, pos);
 
 				amd64_leave (code);
 			}
@@ -4097,6 +4596,8 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
 			else
 				amd64_set_reg_template (code, AMD64_R11);
 			amd64_jump_reg (code, AMD64_R11);
+			ins->flags |= MONO_INST_GC_CALLSITE;
+			ins->backend.pc_offset = code - cfg->native_code;
 			break;
 		}
 		case OP_CHECK_THIS:
@@ -4105,7 +4606,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
 			break;
 		case OP_ARGLIST: {
 			amd64_lea_membase (code, AMD64_R11, cfg->frame_reg, cfg->sig_cookie);
-			amd64_mov_membase_reg (code, ins->sreg1, 0, AMD64_R11, 8);
+			amd64_mov_membase_reg (code, ins->sreg1, 0, AMD64_R11, sizeof(gpointer));
 			break;
 		}
 		case OP_CALL:
@@ -4141,6 +4642,8 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
 				code = emit_call (cfg, code, MONO_PATCH_INFO_METHOD, call->method, FALSE);
 			else
 				code = emit_call (cfg, code, MONO_PATCH_INFO_ABS, call->fptr, FALSE);
+			ins->flags |= MONO_INST_GC_CALLSITE;
+			ins->backend.pc_offset = code - cfg->native_code;
 			if (call->stack_usage && !CALLCONV_IS_STDCALL (call->signature->call_convention) && !cfg->arch.no_pushes)
 				amd64_alu_reg_imm (code, X86_ADD, AMD64_RSP, call->stack_usage);
 			code = emit_move_return_value (cfg, ins, code);
@@ -4189,6 +4692,8 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
 			}
 
 			amd64_call_reg (code, ins->sreg1);
+			ins->flags |= MONO_INST_GC_CALLSITE;
+			ins->backend.pc_offset = code - cfg->native_code;
 			if (call->stack_usage && !CALLCONV_IS_STDCALL (call->signature->call_convention) && !cfg->arch.no_pushes)
 				amd64_alu_reg_imm (code, X86_ADD, AMD64_RSP, call->stack_usage);
 			code = emit_move_return_value (cfg, ins, code);
@@ -4202,6 +4707,8 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
 			call = (MonoCallInst*)ins;
 
 			amd64_call_membase (code, ins->sreg1, ins->inst_offset);
+			ins->flags |= MONO_INST_GC_CALLSITE;
+			ins->backend.pc_offset = code - cfg->native_code;
 			if (call->stack_usage && !CALLCONV_IS_STDCALL (call->signature->call_convention) && !cfg->arch.no_pushes)
 				amd64_alu_reg_imm (code, X86_ADD, AMD64_RSP, call->stack_usage);
 			code = emit_move_return_value (cfg, ins, code);
@@ -4222,11 +4729,14 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
 
 			/* Set argument registers */
 			for (i = 0; i < PARAM_REGS; ++i)
-				amd64_mov_reg_membase (code, param_regs [i], AMD64_R11, i * sizeof (gpointer), 8);
+				amd64_mov_reg_membase (code, param_regs [i], AMD64_R11, i * sizeof(mgreg_t), sizeof(mgreg_t));
 			
 			/* Make the call */
 			amd64_call_reg (code, AMD64_R10);
 
+			ins->flags |= MONO_INST_GC_CALLSITE;
+			ins->backend.pc_offset = code - cfg->native_code;
+
 			/* Save result */
 			amd64_mov_reg_membase (code, AMD64_R11, var->inst_basereg, var->inst_offset, 8);
 			amd64_mov_membase_reg (code, AMD64_R11, G_STRUCT_OFFSET (DynCallArgs, res), AMD64_RAX, 8);
@@ -4322,12 +4832,16 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
 			amd64_mov_reg_reg (code, AMD64_ARG_REG1, ins->sreg1, 8);
 			code = emit_call (cfg, code, MONO_PATCH_INFO_INTERNAL_METHOD, 
 					     (gpointer)"mono_arch_throw_exception", FALSE);
+			ins->flags |= MONO_INST_GC_CALLSITE;
+			ins->backend.pc_offset = code - cfg->native_code;
 			break;
 		}
 		case OP_RETHROW: {
 			amd64_mov_reg_reg (code, AMD64_ARG_REG1, ins->sreg1, 8);
 			code = emit_call (cfg, code, MONO_PATCH_INFO_INTERNAL_METHOD, 
 					     (gpointer)"mono_arch_rethrow_exception", FALSE);
+			ins->flags |= MONO_INST_GC_CALLSITE;
+			ins->backend.pc_offset = code - cfg->native_code;
 			break;
 		}
 		case OP_CALL_HANDLER: 
@@ -4340,8 +4854,11 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
 			amd64_alu_reg_imm (code, X86_ADD, AMD64_RSP, 8);
 			break;
 		case OP_START_HANDLER: {
+			/* Even though we're saving RSP, use sizeof */
+			/* gpointer because spvar is of type IntPtr */
+			/* see: mono_create_spvar_for_region */
 			MonoInst *spvar = mono_find_spvar_for_region (cfg, bb->region);
-			amd64_mov_membase_reg (code, spvar->inst_basereg, spvar->inst_offset, AMD64_RSP, 8);
+			amd64_mov_membase_reg (code, spvar->inst_basereg, spvar->inst_offset, AMD64_RSP, sizeof(gpointer));
 
 			if ((MONO_BBLOCK_IS_IN_REGION (bb, MONO_REGION_FINALLY) ||
 				 MONO_BBLOCK_IS_IN_REGION (bb, MONO_REGION_FINALLY)) &&
@@ -4352,13 +4869,13 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
 		}
 		case OP_ENDFINALLY: {
 			MonoInst *spvar = mono_find_spvar_for_region (cfg, bb->region);
-			amd64_mov_reg_membase (code, AMD64_RSP, spvar->inst_basereg, spvar->inst_offset, 8);
+			amd64_mov_reg_membase (code, AMD64_RSP, spvar->inst_basereg, spvar->inst_offset, sizeof(gpointer));
 			amd64_ret (code);
 			break;
 		}
 		case OP_ENDFILTER: {
 			MonoInst *spvar = mono_find_spvar_for_region (cfg, bb->region);
-			amd64_mov_reg_membase (code, AMD64_RSP, spvar->inst_basereg, spvar->inst_offset, 8);
+			amd64_mov_reg_membase (code, AMD64_RSP, spvar->inst_basereg, spvar->inst_offset, sizeof(gpointer));
 			/* The local allocator will put the result into RAX */
 			amd64_ret (code);
 			break;
@@ -4973,6 +5490,62 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
 				amd64_mov_reg_reg (code, ins->dreg, AMD64_RAX, size);
 			break;
 		}
+		case OP_CARD_TABLE_WBARRIER: {
+			int ptr = ins->sreg1;
+			int value = ins->sreg2;
+			guchar *br;
+			int nursery_shift, card_table_shift;
+			gpointer card_table_mask;
+			size_t nursery_size;
+
+			gpointer card_table = mono_gc_get_card_table (&card_table_shift, &card_table_mask);
+			guint64 nursery_start = (guint64)mono_gc_get_nursery (&nursery_shift, &nursery_size);
+
+			/*If either point to the stack we can simply avoid the WB. This happens due to
+			 * optimizations revealing a stack store that was not visible when op_cardtable was emited.
+			 */
+			if (ins->sreg1 == AMD64_RSP || ins->sreg2 == AMD64_RSP)
+				continue;
+
+			/*
+			 * We need one register we can clobber, we choose EDX and make sreg1
+			 * fixed EAX to work around limitations in the local register allocator.
+			 * sreg2 might get allocated to EDX, but that is not a problem since
+			 * we use it before clobbering EDX.
+			 */
+			g_assert (ins->sreg1 == AMD64_RAX);
+
+			/*
+			 * This is the code we produce:
+			 *
+			 *   edx = value
+			 *   edx >>= nursery_shift
+			 *   cmp edx, (nursery_start >> nursery_shift)
+			 *   jne done
+			 *   edx = ptr
+			 *   edx >>= card_table_shift
+			 *   edx += cardtable
+			 *   [edx] = 1
+			 * done:
+			 */
+
+			if (value != AMD64_RDX)
+				amd64_mov_reg_reg (code, AMD64_RDX, value, 8);
+			amd64_shift_reg_imm (code, X86_SHR, AMD64_RDX, nursery_shift);
+			amd64_alu_reg_imm (code, X86_CMP, AMD64_RDX, nursery_start >> nursery_shift);
+			br = code; x86_branch8 (code, X86_CC_NE, -1, FALSE);
+			amd64_mov_reg_reg (code, AMD64_RDX, ptr, 8);
+			amd64_shift_reg_imm (code, X86_SHR, AMD64_RDX, card_table_shift);
+			if (card_table_mask)
+				amd64_alu_reg_imm (code, X86_AND, AMD64_RDX, (guint32)(guint64)card_table_mask);
+
+			mono_add_patch_info (cfg, code - cfg->native_code, MONO_PATCH_INFO_GC_CARD_TABLE_ADDR, card_table);
+			amd64_alu_reg_membase (code, X86_ADD, AMD64_RDX, AMD64_RIP, 0);
+
+			amd64_mov_membase_imm (code, AMD64_RDX, 0, 1, 1);
+			x86_patch (br, code);
+			break;
+		}
 #ifdef MONO_ARCH_SIMD_INTRINSICS
 		/* TODO: Some of these IR opcodes are marked as no clobber when they indeed do. */
 		case OP_ADDPS:
@@ -5046,6 +5619,14 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
 			g_assert (ins->inst_c0 >= 0 && ins->inst_c0 <= 0xFF);
 			amd64_sse_pshufd_reg_reg_imm (code, ins->dreg, ins->sreg1, ins->inst_c0);
 			break;
+		case OP_SHUFPS:
+			g_assert (ins->inst_c0 >= 0 && ins->inst_c0 <= 0xFF);
+			amd64_sse_shufps_reg_reg_imm (code, ins->sreg1, ins->sreg2, ins->inst_c0);
+			break;
+		case OP_SHUFPD:
+			g_assert (ins->inst_c0 >= 0 && ins->inst_c0 <= 0x3);
+			amd64_sse_shufpd_reg_reg_imm (code, ins->sreg1, ins->sreg2, ins->inst_c0);
+			break;
 
 		case OP_ADDPD:
 			amd64_sse_addpd_reg_reg (code, ins->sreg1, ins->sreg2);
@@ -5371,6 +5952,30 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
 		case OP_PSHLQ_REG:
 			amd64_sse_psllq_reg_reg (code, ins->dreg, ins->sreg2);
 			break;	
+		case OP_CVTDQ2PD:
+			amd64_sse_cvtdq2pd_reg_reg (code, ins->dreg, ins->sreg1);
+			break;
+		case OP_CVTDQ2PS:
+			amd64_sse_cvtdq2ps_reg_reg (code, ins->dreg, ins->sreg1);
+			break;
+		case OP_CVTPD2DQ:
+			amd64_sse_cvtpd2dq_reg_reg (code, ins->dreg, ins->sreg1);
+			break;
+		case OP_CVTPD2PS:
+			amd64_sse_cvtpd2ps_reg_reg (code, ins->dreg, ins->sreg1);
+			break;
+		case OP_CVTPS2DQ:
+			amd64_sse_cvtps2dq_reg_reg (code, ins->dreg, ins->sreg1);
+			break;
+		case OP_CVTPS2PD:
+			amd64_sse_cvtps2pd_reg_reg (code, ins->dreg, ins->sreg1);
+			break;
+		case OP_CVTTPD2DQ:
+			amd64_sse_cvttpd2dq_reg_reg (code, ins->dreg, ins->sreg1);
+			break;
+		case OP_CVTTPS2DQ:
+			amd64_sse_cvttps2dq_reg_reg (code, ins->dreg, ins->sreg1);
+			break;
 
 		case OP_ICONV_TO_X:
 			amd64_movd_xreg_reg_size (code, ins->dreg, ins->sreg1, 4);
@@ -5558,15 +6163,32 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
 			MONO_VARINFO (cfg, ins->inst_c0)->live_range_end = code - cfg->native_code;
 			break;
 		}
+		case OP_NACL_GC_SAFE_POINT: {
+#if defined(__native_client_codegen__)
+			code = emit_call (cfg, code, MONO_PATCH_INFO_ABS, (gpointer)mono_nacl_gc, TRUE);
+#endif
+			break;
+		}
+		case OP_GC_LIVENESS_DEF:
+		case OP_GC_LIVENESS_USE:
+		case OP_GC_PARAM_SLOT_LIVENESS_DEF:
+			ins->backend.pc_offset = code - cfg->native_code;
+			break;
+		case OP_GC_SPILL_SLOT_LIVENESS_DEF:
+			ins->backend.pc_offset = code - cfg->native_code;
+			bb->spill_slot_defs = g_slist_prepend_mempool (cfg->mempool, bb->spill_slot_defs, ins);
+			break;
 		default:
 			g_warning ("unknown opcode %s in %s()\n", mono_inst_name (ins->opcode), __FUNCTION__);
 			g_assert_not_reached ();
 		}
 
 		if ((code - cfg->native_code - offset) > max_len) {
+#if !defined(__native_client_codegen__)
 			g_warning ("wrong maximal instruction length of instruction %s (expected %d, got %ld)",
 				   mono_inst_name (ins->opcode), max_len, code - cfg->native_code - offset);
 			g_assert_not_reached ();
+#endif
 		}
 	       
 		last_ins = ins;
@@ -5696,10 +6318,27 @@ mono_arch_emit_prolog (MonoCompile *cfg)
 	gint32 lmf_offset = cfg->arch.lmf_offset;
 	gboolean args_clobbered = FALSE;
 	gboolean trace = FALSE;
+#ifdef __native_client_codegen__
+	guint alignment_check;
+#endif
 
 	cfg->code_size =  MAX (cfg->header->code_size * 4, 10240);
 
+#if defined(__default_codegen__)
 	code = cfg->native_code = g_malloc (cfg->code_size);
+#elif defined(__native_client_codegen__)
+	/* native_code_alloc is not 32-byte aligned, native_code is. */
+	cfg->native_code_alloc = g_malloc (cfg->code_size + kNaClAlignment);
+
+	/* Align native_code to next nearest kNaclAlignment byte. */
+	cfg->native_code = (uintptr_t)cfg->native_code_alloc + kNaClAlignment;
+	cfg->native_code = (uintptr_t)cfg->native_code & ~kNaClAlignmentMask;
+
+	code = cfg->native_code;
+
+	alignment_check = (guint)cfg->native_code & kNaClAlignmentMask;
+	g_assert (alignment_check == 0);
+#endif
 
 	if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
 		trace = TRUE;
@@ -5731,6 +6370,7 @@ mono_arch_emit_prolog (MonoCompile *cfg)
 	// IP saved at CFA - 8
 	mono_emit_unwind_op_offset (cfg, code, AMD64_RIP, -cfa_offset);
 	async_exc_point (code);
+	mini_gc_set_slot_type_from_cfa (cfg, -cfa_offset, SLOT_NOREF);
 
 	if (!cfg->arch.omit_fp) {
 		amd64_push_reg (code, AMD64_RBP);
@@ -5741,8 +6381,10 @@ mono_arch_emit_prolog (MonoCompile *cfg)
 #ifdef HOST_WIN32
 		mono_arch_unwindinfo_add_push_nonvol (&cfg->arch.unwindinfo, cfg->native_code, code, AMD64_RBP);
 #endif
+		/* These are handled automatically by the stack marking code */
+		mini_gc_set_slot_type_from_cfa (cfg, -cfa_offset, SLOT_NOREF);
 		
-		amd64_mov_reg_reg (code, AMD64_RBP, AMD64_RSP, sizeof (gpointer));
+		amd64_mov_reg_reg (code, AMD64_RBP, AMD64_RSP, sizeof(mgreg_t));
 		mono_emit_unwind_op_def_cfa_reg (cfg, code, AMD64_RBP);
 		async_exc_point (code);
 #ifdef HOST_WIN32
@@ -5757,10 +6399,13 @@ mono_arch_emit_prolog (MonoCompile *cfg)
 		for (i = 0; i < AMD64_NREG; ++i)
 			if (AMD64_IS_CALLEE_SAVED_REG (i) && (cfg->used_int_regs & (1 << i))) {
 				amd64_push_reg (code, i);
-				pos += sizeof (gpointer);
+				pos += 8; /* AMD64 push inst is always 8 bytes, no way to change it */
 				offset += 8;
 				mono_emit_unwind_op_offset (cfg, code, i, - offset);
 				async_exc_point (code);
+
+				/* These are handled automatically by the stack marking code */
+				mini_gc_set_slot_type_from_cfa (cfg, - offset, SLOT_NOREF);
 			}
 	}
 
@@ -5770,21 +6415,28 @@ mono_arch_emit_prolog (MonoCompile *cfg)
 		if (cfg->arch.omit_fp)
 			// FIXME:
 			g_assert_not_reached ();
-		cfg->stack_offset += ALIGN_TO (cfg->param_area, sizeof (gpointer));
+		cfg->stack_offset += ALIGN_TO (cfg->param_area, sizeof(mgreg_t));
 	}
 
 	if (cfg->arch.omit_fp) {
 		/* 
-		 * On enter, the stack is misaligned by the the pushing of the return
+		 * On enter, the stack is misaligned by the pushing of the return
 		 * address. It is either made aligned by the pushing of %rbp, or by
 		 * this.
 		 */
 		alloc_size = ALIGN_TO (cfg->stack_offset, 8);
-		if ((alloc_size % 16) == 0)
+		if ((alloc_size % 16) == 0) {
 			alloc_size += 8;
+			/* Mark the padding slot as NOREF */
+			mini_gc_set_slot_type_from_cfa (cfg, -cfa_offset - sizeof (mgreg_t), SLOT_NOREF);
+		}
 	} else {
 		alloc_size = ALIGN_TO (cfg->stack_offset, MONO_ARCH_FRAME_ALIGNMENT);
-
+		if (cfg->stack_offset != alloc_size) {
+			/* Mark the padding slot as NOREF */
+			mini_gc_set_slot_type_from_fp (cfg, -alloc_size + cfg->param_area, SLOT_NOREF);
+		}
+		cfg->arch.sp_fp_offset = alloc_size;
 		alloc_size -= pos;
 	}
 
@@ -5801,7 +6453,7 @@ mono_arch_emit_prolog (MonoCompile *cfg)
 		if (G_UNLIKELY (required_code_size >= (cfg->code_size - offset))) {
 			while (required_code_size >= (cfg->code_size - offset))
 				cfg->code_size *= 2;
-			cfg->native_code = g_realloc (cfg->native_code, cfg->code_size);
+			cfg->native_code = mono_realloc_native_code (cfg);
 			code = cfg->native_code + offset;
 			mono_jit_stats.code_reallocs++;
 		}
@@ -5867,8 +6519,20 @@ mono_arch_emit_prolog (MonoCompile *cfg)
 		amd64_mov_reg_reg (code, AMD64_RDI, AMD64_RSP, 8);
 
 		amd64_cld (code);
+#if defined(__default_codegen__)
 		amd64_prefix (code, X86_REP_PREFIX);
 		amd64_stosl (code);
+#elif defined(__native_client_codegen__)
+		/* NaCl stos pseudo-instruction */
+		amd64_codegen_pre (code);
+		/* First, clear the upper 32 bits of RDI (mov %edi, %edi)  */
+		amd64_mov_reg_reg (code, AMD64_RDI, AMD64_RDI, 4);
+		/* Add %r15 to %rdi using lea, condition flags unaffected. */
+		amd64_lea_memindex_size (code, AMD64_RDI, AMD64_R15, 0, AMD64_RDI, 0, 8);
+		amd64_prefix (code, X86_REP_PREFIX);
+		amd64_stosl (code);
+		amd64_codegen_post (code);
+#endif /* __native_client_codegen__ */
 
 		amd64_mov_reg_membase (code, AMD64_RDI, AMD64_RSP, -8, 8);
 		amd64_mov_reg_membase (code, AMD64_RCX, AMD64_RSP, -16, 8);
@@ -5896,7 +6560,9 @@ mono_arch_emit_prolog (MonoCompile *cfg)
 			case AMD64_R12: offset = G_STRUCT_OFFSET (MonoLMF, r12); break;
 			case AMD64_R13: offset = G_STRUCT_OFFSET (MonoLMF, r13); break;
 			case AMD64_R14: offset = G_STRUCT_OFFSET (MonoLMF, r14); break;
+#ifndef __native_client_codegen__
 			case AMD64_R15: offset = G_STRUCT_OFFSET (MonoLMF, r15); break;
+#endif
 #ifdef HOST_WIN32
 			case AMD64_RDI: offset = G_STRUCT_OFFSET (MonoLMF, rdi); break;
 			case AMD64_RSI: offset = G_STRUCT_OFFSET (MonoLMF, rsi); break;
@@ -5912,6 +6578,26 @@ mono_arch_emit_prolog (MonoCompile *cfg)
 					mono_emit_unwind_op_offset (cfg, code, i, - (cfa_offset - (lmf_offset + offset)));
 			}
 		}
+
+		/* These can't contain refs */
+		mini_gc_set_slot_type_from_fp (cfg, lmf_offset + G_STRUCT_OFFSET (MonoLMF, previous_lmf), SLOT_NOREF);
+		mini_gc_set_slot_type_from_fp (cfg, lmf_offset + G_STRUCT_OFFSET (MonoLMF, lmf_addr), SLOT_NOREF);
+		mini_gc_set_slot_type_from_fp (cfg, lmf_offset + G_STRUCT_OFFSET (MonoLMF, method), SLOT_NOREF);
+		mini_gc_set_slot_type_from_fp (cfg, lmf_offset + G_STRUCT_OFFSET (MonoLMF, rip), SLOT_NOREF);
+		mini_gc_set_slot_type_from_fp (cfg, lmf_offset + G_STRUCT_OFFSET (MonoLMF, rsp), SLOT_NOREF);
+
+		/* These are handled automatically by the stack marking code */
+		mini_gc_set_slot_type_from_fp (cfg, lmf_offset + G_STRUCT_OFFSET (MonoLMF, rbx), SLOT_NOREF);
+		mini_gc_set_slot_type_from_fp (cfg, lmf_offset + G_STRUCT_OFFSET (MonoLMF, rbp), SLOT_NOREF);
+		mini_gc_set_slot_type_from_fp (cfg, lmf_offset + G_STRUCT_OFFSET (MonoLMF, r12), SLOT_NOREF);
+		mini_gc_set_slot_type_from_fp (cfg, lmf_offset + G_STRUCT_OFFSET (MonoLMF, r13), SLOT_NOREF);
+		mini_gc_set_slot_type_from_fp (cfg, lmf_offset + G_STRUCT_OFFSET (MonoLMF, r14), SLOT_NOREF);
+		mini_gc_set_slot_type_from_fp (cfg, lmf_offset + G_STRUCT_OFFSET (MonoLMF, r15), SLOT_NOREF);
+#ifdef HOST_WIN32
+		mini_gc_set_slot_type_from_fp (cfg, lmf_offset + G_STRUCT_OFFSET (MonoLMF, rdi), SLOT_NOREF);
+		mini_gc_set_slot_type_from_fp (cfg, lmf_offset + G_STRUCT_OFFSET (MonoLMF, rsi), SLOT_NOREF);
+#endif
+
 	}
 
 	/* Save callee saved registers */
@@ -5925,6 +6611,10 @@ mono_arch_emit_prolog (MonoCompile *cfg)
 			if (AMD64_IS_CALLEE_SAVED_REG (i) && (cfg->used_int_regs & (1 << i))) {
 				amd64_mov_membase_reg (code, AMD64_RSP, save_area_offset, i, 8);
 				mono_emit_unwind_op_offset (cfg, code, i, - (cfa_offset - save_area_offset));
+
+				/* These are handled automatically by the stack marking code */
+				mini_gc_set_slot_type_from_cfa (cfg, - (cfa_offset - save_area_offset), SLOT_NOREF);
+
 				save_area_offset += 8;
 				async_exc_point (code);
 			}
@@ -5935,7 +6625,7 @@ mono_arch_emit_prolog (MonoCompile *cfg)
 		g_assert (cfg->rgctx_var->opcode == OP_REGOFFSET &&
 				(cfg->rgctx_var->inst_basereg == AMD64_RBP || cfg->rgctx_var->inst_basereg == AMD64_RSP));
 
-		amd64_mov_membase_reg (code, cfg->rgctx_var->inst_basereg, cfg->rgctx_var->inst_offset, MONO_ARCH_RGCTX_REG, 8);
+		amd64_mov_membase_reg (code, cfg->rgctx_var->inst_basereg, cfg->rgctx_var->inst_offset, MONO_ARCH_RGCTX_REG, sizeof(gpointer));
 	}
 
 	/* compute max_length in order to use short forward jumps */
@@ -5950,8 +6640,22 @@ mono_arch_emit_prolog (MonoCompile *cfg)
 			/* max alignment for loops */
 			if ((cfg->opt & MONO_OPT_LOOP) && bb_is_loop_start (bb))
 				max_length += LOOP_ALIGNMENT;
+#ifdef __native_client_codegen__
+			/* max alignment for native client */
+			max_length += kNaClAlignment;
+#endif
 
 			MONO_BB_FOR_EACH_INS (bb, ins) {
+#ifdef __native_client_codegen__
+				{
+					int space_in_block = kNaClAlignment -
+						((max_length + cfg->code_len) & kNaClAlignmentMask);
+					int max_len = ((guint8 *)ins_get_spec (ins->opcode))[MONO_INST_LEN];
+					if (space_in_block < max_len && max_len < kNaClAlignment) {
+						max_length += space_in_block;
+					}
+				}
+#endif  /*__native_client_codegen__*/
 				max_length += ((guint8 *)ins_get_spec (ins->opcode))[MONO_INST_LEN];
 			}
 
@@ -6003,13 +6707,13 @@ mono_arch_emit_prolog (MonoCompile *cfg)
 				for (quad = 0; quad < 2; quad ++) {
 					switch (ainfo->pair_storage [quad]) {
 					case ArgInIReg:
-						amd64_mov_membase_reg (code, ins->inst_basereg, ins->inst_offset + (quad * sizeof (gpointer)), ainfo->pair_regs [quad], sizeof (gpointer));
+						amd64_mov_membase_reg (code, ins->inst_basereg, ins->inst_offset + (quad * sizeof(mgreg_t)), ainfo->pair_regs [quad], sizeof(mgreg_t));
 						break;
 					case ArgInFloatSSEReg:
-						amd64_movss_membase_reg (code, ins->inst_basereg, ins->inst_offset + (quad * sizeof (gpointer)), ainfo->pair_regs [quad]);
+						amd64_movss_membase_reg (code, ins->inst_basereg, ins->inst_offset + (quad * sizeof(mgreg_t)), ainfo->pair_regs [quad]);
 						break;
 					case ArgInDoubleSSEReg:
-						amd64_movsd_membase_reg (code, ins->inst_basereg, ins->inst_offset + (quad * sizeof (gpointer)), ainfo->pair_regs [quad]);
+						amd64_movsd_membase_reg (code, ins->inst_basereg, ins->inst_offset + (quad * sizeof(mgreg_t)), ainfo->pair_regs [quad]);
 						break;
 					case ArgNone:
 						break;
@@ -6055,13 +6759,13 @@ mono_arch_emit_prolog (MonoCompile *cfg)
 				for (quad = 0; quad < 2; quad ++) {
 					switch (ainfo->pair_storage [quad]) {
 					case ArgInIReg:
-						amd64_mov_membase_reg (code, ins->inst_basereg, ins->inst_offset + (quad * sizeof (gpointer)), ainfo->pair_regs [quad], sizeof (gpointer));
+						amd64_mov_membase_reg (code, ins->inst_basereg, ins->inst_offset + (quad * sizeof(mgreg_t)), ainfo->pair_regs [quad], sizeof(mgreg_t));
 						break;
 					case ArgInFloatSSEReg:
-						amd64_movss_membase_reg (code, ins->inst_basereg, ins->inst_offset + (quad * sizeof (gpointer)), ainfo->pair_regs [quad]);
+						amd64_movss_membase_reg (code, ins->inst_basereg, ins->inst_offset + (quad * sizeof(mgreg_t)), ainfo->pair_regs [quad]);
 						break;
 					case ArgInDoubleSSEReg:
-						amd64_movsd_membase_reg (code, ins->inst_basereg, ins->inst_offset + (quad * sizeof (gpointer)), ainfo->pair_regs [quad]);
+						amd64_movsd_membase_reg (code, ins->inst_basereg, ins->inst_offset + (quad * sizeof(mgreg_t)), ainfo->pair_regs [quad]);
 						break;
 					case ArgNone:
 						break;
@@ -6189,13 +6893,13 @@ mono_arch_emit_prolog (MonoCompile *cfg)
 			}
 
 			/* Save lmf_addr */
-			amd64_mov_membase_reg (code, cfg->frame_reg, lmf_offset + G_STRUCT_OFFSET (MonoLMF, lmf_addr), AMD64_RAX, 8);
+			amd64_mov_membase_reg (code, cfg->frame_reg, lmf_offset + G_STRUCT_OFFSET (MonoLMF, lmf_addr), AMD64_RAX, sizeof(gpointer));
 			/* Save previous_lmf */
-			amd64_mov_reg_membase (code, AMD64_R11, AMD64_RAX, 0, 8);
-			amd64_mov_membase_reg (code, cfg->frame_reg, lmf_offset + G_STRUCT_OFFSET (MonoLMF, previous_lmf), AMD64_R11, 8);
+			amd64_mov_reg_membase (code, AMD64_R11, AMD64_RAX, 0, sizeof(gpointer));
+			amd64_mov_membase_reg (code, cfg->frame_reg, lmf_offset + G_STRUCT_OFFSET (MonoLMF, previous_lmf), AMD64_R11, sizeof(gpointer));
 			/* Set new lmf */
 			amd64_lea_membase (code, AMD64_R11, cfg->frame_reg, lmf_offset);
-			amd64_mov_membase_reg (code, AMD64_RAX, 0, AMD64_R11, 8);
+			amd64_mov_membase_reg (code, AMD64_RAX, 0, AMD64_R11, sizeof(gpointer));
 		}
 	}
 
@@ -6306,7 +7010,7 @@ mono_arch_emit_epilog (MonoCompile *cfg)
 
 	while (cfg->code_len + max_epilog_size > (cfg->code_size - 16)) {
 		cfg->code_size *= 2;
-		cfg->native_code = g_realloc (cfg->native_code, cfg->code_size);
+		cfg->native_code = mono_realloc_native_code (cfg);
 		mono_jit_stats.code_reallocs++;
 	}
 
@@ -6342,14 +7046,14 @@ mono_arch_emit_epilog (MonoCompile *cfg)
 			 * through the mono_lmf_addr TLS variable.
 			 */
 			/* reg = previous_lmf */
-			amd64_mov_reg_membase (code, AMD64_R11, cfg->frame_reg, lmf_offset + G_STRUCT_OFFSET (MonoLMF, previous_lmf), 8);
+			amd64_mov_reg_membase (code, AMD64_R11, cfg->frame_reg, lmf_offset + G_STRUCT_OFFSET (MonoLMF, previous_lmf), sizeof(gpointer));
 			x86_prefix (code, X86_FS_PREFIX);
 			amd64_mov_mem_reg (code, lmf_tls_offset, AMD64_R11, 8);
 		} else {
 			/* Restore previous lmf */
-			amd64_mov_reg_membase (code, AMD64_RCX, cfg->frame_reg, lmf_offset + G_STRUCT_OFFSET (MonoLMF, previous_lmf), 8);
-			amd64_mov_reg_membase (code, AMD64_R11, cfg->frame_reg, lmf_offset + G_STRUCT_OFFSET (MonoLMF, lmf_addr), 8);
-			amd64_mov_membase_reg (code, AMD64_R11, 0, AMD64_RCX, 8);
+			amd64_mov_reg_membase (code, AMD64_RCX, cfg->frame_reg, lmf_offset + G_STRUCT_OFFSET (MonoLMF, previous_lmf), sizeof(gpointer));
+			amd64_mov_reg_membase (code, AMD64_R11, cfg->frame_reg, lmf_offset + G_STRUCT_OFFSET (MonoLMF, lmf_addr), sizeof(gpointer));
+			amd64_mov_membase_reg (code, AMD64_R11, 0, AMD64_RCX, sizeof(gpointer));
 		}
 
 		/* Restore caller saved regs */
@@ -6369,7 +7073,11 @@ mono_arch_emit_epilog (MonoCompile *cfg)
 			amd64_mov_reg_membase (code, AMD64_R14, cfg->frame_reg, lmf_offset + G_STRUCT_OFFSET (MonoLMF, r14), 8);
 		}
 		if (cfg->used_int_regs & (1 << AMD64_R15)) {
+#if defined(__default_codegen__)
 			amd64_mov_reg_membase (code, AMD64_R15, cfg->frame_reg, lmf_offset + G_STRUCT_OFFSET (MonoLMF, r15), 8);
+#elif defined(__native_client_codegen__)
+			g_assert_not_reached();
+#endif
 		}
 #ifdef HOST_WIN32
 		if (cfg->used_int_regs & (1 << AMD64_RDI)) {
@@ -6393,10 +7101,10 @@ mono_arch_emit_epilog (MonoCompile *cfg)
 		else {
 			for (i = 0; i < AMD64_NREG; ++i)
 				if (AMD64_IS_CALLEE_SAVED_REG (i) && (cfg->used_int_regs & (1 << i)))
-					pos -= sizeof (gpointer);
+					pos -= sizeof(mgreg_t);
 
 			if (pos) {
-				if (pos == - sizeof (gpointer)) {
+				if (pos == - sizeof(mgreg_t)) {
 					/* Only one register, so avoid lea */
 					for (i = AMD64_NREG - 1; i > 0; --i)
 						if (AMD64_IS_CALLEE_SAVED_REG (i) && (cfg->used_int_regs & (1 << i))) {
@@ -6425,13 +7133,13 @@ mono_arch_emit_epilog (MonoCompile *cfg)
 		for (quad = 0; quad < 2; quad ++) {
 			switch (ainfo->pair_storage [quad]) {
 			case ArgInIReg:
-				amd64_mov_reg_membase (code, ainfo->pair_regs [quad], inst->inst_basereg, inst->inst_offset + (quad * sizeof (gpointer)), sizeof (gpointer));
+				amd64_mov_reg_membase (code, ainfo->pair_regs [quad], inst->inst_basereg, inst->inst_offset + (quad * sizeof(mgreg_t)), sizeof(mgreg_t));
 				break;
 			case ArgInFloatSSEReg:
-				amd64_movss_reg_membase (code, ainfo->pair_regs [quad], inst->inst_basereg, inst->inst_offset + (quad * sizeof (gpointer)));
+				amd64_movss_reg_membase (code, ainfo->pair_regs [quad], inst->inst_basereg, inst->inst_offset + (quad * sizeof(mgreg_t)));
 				break;
 			case ArgInDoubleSSEReg:
-				amd64_movsd_reg_membase (code, ainfo->pair_regs [quad], inst->inst_basereg, inst->inst_offset + (quad * sizeof (gpointer)));
+				amd64_movsd_reg_membase (code, ainfo->pair_regs [quad], inst->inst_basereg, inst->inst_offset + (quad * sizeof(mgreg_t)));
 				break;
 			case ArgNone:
 				break;
@@ -6473,11 +7181,20 @@ mono_arch_emit_exceptions (MonoCompile *cfg)
 			code_size += 8 + 15; /* sizeof (double) + alignment */
 		if (patch_info->type == MONO_PATCH_INFO_R4)
 			code_size += 4 + 15; /* sizeof (float) + alignment */
+		if (patch_info->type == MONO_PATCH_INFO_GC_CARD_TABLE_ADDR)
+			code_size += 8 + 7; /*sizeof (void*) + alignment */
 	}
 
+#ifdef __native_client_codegen__
+	/* Give us extra room on Native Client.  This could be   */
+	/* more carefully calculated, but bundle alignment makes */
+	/* it much trickier, so *2 like other places is good.    */
+	code_size *= 2;
+#endif
+
 	while (cfg->code_len + code_size > (cfg->code_size - 16)) {
 		cfg->code_size *= 2;
-		cfg->native_code = g_realloc (cfg->native_code, cfg->code_size);
+		cfg->native_code = mono_realloc_native_code (cfg);
 		mono_jit_stats.code_reallocs++;
 	}
 
@@ -6538,35 +7255,105 @@ mono_arch_emit_exceptions (MonoCompile *cfg)
 			/* do nothing */
 			break;
 		}
+		g_assert(code < cfg->native_code + cfg->code_size);
 	}
 
 	/* Handle relocations with RIP relative addressing */
 	for (patch_info = cfg->patch_info; patch_info; patch_info = patch_info->next) {
 		gboolean remove = FALSE;
+		guint8 *orig_code = code;
 
 		switch (patch_info->type) {
 		case MONO_PATCH_INFO_R8:
 		case MONO_PATCH_INFO_R4: {
-			guint8 *pos;
+			guint8 *pos, *patch_pos;
+			guint32 target_pos;
 
 			/* The SSE opcodes require a 16 byte alignment */
+#if defined(__default_codegen__)
 			code = (guint8*)ALIGN_TO (code, 16);
+#elif defined(__native_client_codegen__)
+			{
+				/* Pad this out with HLT instructions  */
+				/* or we can get garbage bytes emitted */
+				/* which will fail validation          */
+				guint8 *aligned_code;
+				/* extra align to make room for  */
+				/* mov/push below 		       */
+				int extra_align = patch_info->type == MONO_PATCH_INFO_R8 ? 2 : 1;
+				aligned_code = (guint8*)ALIGN_TO (code + extra_align, 16);
+				/* The technique of hiding data in an  */
+				/* instruction has a problem here: we  */
+				/* need the data aligned to a 16-byte  */
+				/* boundary but the instruction cannot */
+				/* cross the bundle boundary. so only  */
+				/* odd multiples of 16 can be used     */
+				if ((intptr_t)aligned_code % kNaClAlignment == 0) {
+					aligned_code += 16;
+				}
+				while (code < aligned_code) {
+					*(code++) = 0xf4; /* hlt */
+				}
+			}	
+#endif
 
 			pos = cfg->native_code + patch_info->ip.i;
-
-			if (IS_REX (pos [1]))
-				*(guint32*)(pos + 5) = (guint8*)code - pos - 9;
-			else
-				*(guint32*)(pos + 4) = (guint8*)code - pos - 8;
+			if (IS_REX (pos [1])) {
+				patch_pos = pos + 5;
+				target_pos = code - pos - 9;
+			}
+			else {
+				patch_pos = pos + 4;
+				target_pos = code - pos - 8;
+			}
 
 			if (patch_info->type == MONO_PATCH_INFO_R8) {
+#ifdef __native_client_codegen__
+				/* Hide 64-bit data in a         */
+				/* "mov imm64, r11" instruction. */
+				/* write it before the start of  */
+				/* the data*/
+				*(code-2) = 0x49; /* prefix      */
+				*(code-1) = 0xbb; /* mov X, %r11 */
+#endif
 				*(double*)code = *(double*)patch_info->data.target;
 				code += sizeof (double);
 			} else {
+#ifdef __native_client_codegen__
+				/* Hide 32-bit data in a        */
+				/* "push imm32" instruction.    */
+				*(code-1) = 0x68; /* push */
+#endif
 				*(float*)code = *(float*)patch_info->data.target;
 				code += sizeof (float);
 			}
 
+			*(guint32*)(patch_pos) = target_pos;
+
+			remove = TRUE;
+			break;
+		}
+		case MONO_PATCH_INFO_GC_CARD_TABLE_ADDR: {
+			guint8 *pos;
+
+			if (cfg->compile_aot)
+				continue;
+
+			/*loading is faster against aligned addresses.*/
+			code = (guint8*)ALIGN_TO (code, 8);
+			memset (orig_code, 0, code - orig_code);
+
+			pos = cfg->native_code + patch_info->ip.i;
+
+			/*alu_op [rex] modr/m imm32 - 7 or 8 bytes */
+			if (IS_REX (pos [1]))
+				*(guint32*)(pos + 4) = (guint8*)code - pos - 8;
+			else
+				*(guint32*)(pos + 3) = (guint8*)code - pos - 7;
+
+			*(gpointer*)code = (gpointer)patch_info->data.target;
+			code += sizeof (gpointer);
+
 			remove = TRUE;
 			break;
 		}
@@ -6585,6 +7372,7 @@ mono_arch_emit_exceptions (MonoCompile *cfg)
 				tmp->next = patch_info->next;
 			}
 		}
+		g_assert (code < cfg->native_code + cfg->code_size);
 	}
 
 	cfg->code_len = code - cfg->native_code;
@@ -6610,7 +7398,7 @@ mono_arch_instrument_prolog (MonoCompile *cfg, void *func, void *p, gboolean ena
 		/* Allocate a new area on the stack and save arguments there */
 		sig = mono_method_signature (cfg->method);
 
-		cinfo = get_call_info (cfg->generic_sharing_context, cfg->mempool, sig, FALSE);
+		cinfo = get_call_info (cfg->generic_sharing_context, cfg->mempool, sig);
 
 		n = sig->param_count + sig->hasthis;
 
@@ -6902,16 +7690,56 @@ mono_breakpoint_clean_code (guint8 *method_start, guint8 *code, int offset, guin
 	return can_write;
 }
 
+#if defined(__native_client_codegen__)
+/* For membase calls, we want the base register. for Native Client,  */
+/* all indirect calls have the following sequence with the given sizes: */
+/* mov %eXX,%eXX				[2-3]	*/
+/* mov disp(%r15,%rXX,scale),%r11d		[4-8]	*/
+/* and $0xffffffffffffffe0,%r11d		[4]	*/
+/* add %r15,%r11				[3]	*/
+/* callq *%r11					[3]	*/
+
+
+/* Determine if code points to a NaCl call-through-register sequence, */
+/* (i.e., the last 3 instructions listed above) */
 int
-mono_arch_get_this_arg_reg (MonoMethodSignature *sig, MonoGenericSharingContext *gsctx, guint8 *code)
+is_nacl_call_reg_sequence(guint8* code)
+{
+	const char *sequence = "\x41\x83\xe3\xe0" /* and */
+			       "\x4d\x03\xdf"     /* add */
+			       "\x41\xff\xd3";   /* call */
+	return memcmp(code, sequence, 10) == 0;
+}
+
+/* Determine if code points to the first opcode of the mov membase component */
+/* of an indirect call sequence (i.e. the first 2 instructions listed above) */
+/* (there could be a REX prefix before the opcode but it is ignored) */
+static int
+is_nacl_indirect_call_membase_sequence(guint8* code)
+{
+	       /* Check for mov opcode, reg-reg addressing mode (mod = 3), */
+	return code[0] == 0x8b && amd64_modrm_mod(code[1]) == 3 &&
+	       /* and that src reg = dest reg */
+	       amd64_modrm_reg(code[1]) == amd64_modrm_rm(code[1]) &&
+	       /* Check that next inst is mov, uses SIB byte (rm = 4), */
+	       IS_REX(code[2]) &&
+	       code[3] == 0x8b && amd64_modrm_rm(code[4]) == 4 &&
+	       /* and has dst of r11 and base of r15 */
+	       (amd64_modrm_reg(code[4]) + amd64_rex_r(code[2])) == AMD64_R11 &&
+	       (amd64_sib_base(code[5]) + amd64_rex_b(code[2])) == AMD64_R15;
+}
+#endif /* __native_client_codegen__ */
+
+int
+mono_arch_get_this_arg_reg (guint8 *code)
 {
 	return AMD64_ARG_REG1;
 }
 
 gpointer
-mono_arch_get_this_arg_from_call (MonoGenericSharingContext *gsctx, MonoMethodSignature *sig, mgreg_t *regs, guint8 *code)
+mono_arch_get_this_arg_from_call (mgreg_t *regs, guint8 *code)
 {
-	return (gpointer)regs [mono_arch_get_this_arg_reg (sig, gsctx, code)];
+	return (gpointer)regs [mono_arch_get_this_arg_reg (code)];
 }
 
 #define MAX_ARCH_DELEGATE_PARAMS 10
@@ -6955,11 +7783,25 @@ get_delegate_invoke_impl (gboolean has_target, guint32 param_count, guint32 *cod
 		g_assert ((code - start) < 64);
 	}
 
+	nacl_global_codeman_validate(&start, 64, &code);
+
 	mono_debug_add_delegate_trampoline (start, code - start);
 
 	if (code_len)
 		*code_len = code - start;
 
+
+	if (mono_jit_map_is_enabled ()) {
+		char *buff;
+		if (has_target)
+			buff = (char*)"delegate_invoke_has_target";
+		else
+			buff = g_strdup_printf ("delegate_invoke_no_target_%d", param_count);
+		mono_emit_jit_tramp (start, code - start, buff);
+		if (!has_target)
+			g_free (buff);
+	}
+
 	return start;
 }
 
@@ -7087,6 +7929,7 @@ mono_arch_free_jit_tls_data (MonoJitTlsData *tls)
 
 #ifdef MONO_ARCH_HAVE_IMT
 
+#if defined(__default_codegen__)
 #define CMP_SIZE (6 + 1)
 #define CMP_REG_REG_SIZE (4 + 1)
 #define BR_SMALL_SIZE 2
@@ -7094,6 +7937,20 @@ mono_arch_free_jit_tls_data (MonoJitTlsData *tls)
 #define MOV_REG_IMM_SIZE 10
 #define MOV_REG_IMM_32BIT_SIZE 6
 #define JUMP_REG_SIZE (2 + 1)
+#elif defined(__native_client_codegen__)
+/* NaCl N-byte instructions can be padded up to N-1 bytes */
+#define CMP_SIZE ((6 + 1) * 2 - 1)
+#define CMP_REG_REG_SIZE ((4 + 1) * 2 - 1)
+#define BR_SMALL_SIZE (2 * 2 - 1)
+#define BR_LARGE_SIZE (6 * 2 - 1)
+#define MOV_REG_IMM_SIZE (10 * 2 - 1)
+#define MOV_REG_IMM_32BIT_SIZE (6 * 2 - 1)
+/* Jump reg for NaCl adds a mask (+4) and add (+3) */
+#define JUMP_REG_SIZE ((2 + 1 + 4 + 3) * 2 - 1)
+/* Jump membase's size is large and unpredictable    */
+/* in native client, just pad it out a whole bundle. */
+#define JUMP_MEMBASE_SIZE (kNaClAlignment)
+#endif
 
 static int
 imt_branch_distance (MonoIMTCheckItem **imt_entries, int start, int target)
@@ -7133,6 +7990,9 @@ mono_arch_build_imt_thunk (MonoVTable *vtable, MonoDomain *domain, MonoIMTCheckI
 						item->chunk_size += MOV_REG_IMM_32BIT_SIZE;
 					else
 						item->chunk_size += MOV_REG_IMM_SIZE;
+#ifdef __native_client_codegen__
+					item->chunk_size += JUMP_MEMBASE_SIZE;
+#endif
 				}
 				item->chunk_size += BR_SMALL_SIZE + JUMP_REG_SIZE;
 			} else {
@@ -7148,6 +8008,9 @@ mono_arch_build_imt_thunk (MonoVTable *vtable, MonoDomain *domain, MonoIMTCheckI
 					/* with assert below:
 					 * item->chunk_size += CMP_SIZE + BR_SMALL_SIZE + 1;
 					 */
+#ifdef __native_client_codegen__
+					item->chunk_size += JUMP_MEMBASE_SIZE;
+#endif
 				}
 			}
 		} else {
@@ -7160,10 +8023,16 @@ mono_arch_build_imt_thunk (MonoVTable *vtable, MonoDomain *domain, MonoIMTCheckI
 		}
 		size += item->chunk_size;
 	}
+#if defined(__native_client__) && defined(__native_client_codegen__)
+	/* In Native Client, we don't re-use thunks, allocate from the */
+	/* normal code manager paths. */
+	code = mono_domain_code_reserve (domain, size);
+#else
 	if (fail_tramp)
 		code = mono_method_alloc_generic_virtual_thunk (domain, size);
 	else
 		code = mono_domain_code_reserve (domain, size);
+#endif
 	start = code;
 	for (i = 0; i < count; ++i) {
 		MonoIMTCheckItem *item = imt_entries [i];
@@ -7176,24 +8045,24 @@ mono_arch_build_imt_thunk (MonoVTable *vtable, MonoDomain *domain, MonoIMTCheckI
 					if (amd64_is_imm32 (item->key))
 						amd64_alu_reg_imm (code, X86_CMP, MONO_ARCH_IMT_REG, (guint32)(gssize)item->key);
 					else {
-						amd64_mov_reg_imm (code, AMD64_R11, item->key);
-						amd64_alu_reg_reg (code, X86_CMP, MONO_ARCH_IMT_REG, AMD64_R11);
+						amd64_mov_reg_imm (code, MONO_ARCH_IMT_SCRATCH_REG, item->key);
+						amd64_alu_reg_reg (code, X86_CMP, MONO_ARCH_IMT_REG, MONO_ARCH_IMT_SCRATCH_REG);
 					}
 				}
 				item->jmp_code = code;
 				amd64_branch8 (code, X86_CC_NE, 0, FALSE);
 				if (item->has_target_code) {
-					amd64_mov_reg_imm (code, AMD64_R11, item->value.target_code);
-					amd64_jump_reg (code, AMD64_R11);
+					amd64_mov_reg_imm (code, MONO_ARCH_IMT_SCRATCH_REG, item->value.target_code);
+					amd64_jump_reg (code, MONO_ARCH_IMT_SCRATCH_REG);
 				} else {
-					amd64_mov_reg_imm (code, AMD64_R11, & (vtable->vtable [item->value.vtable_slot]));
-					amd64_jump_membase (code, AMD64_R11, 0);
+					amd64_mov_reg_imm (code, MONO_ARCH_IMT_SCRATCH_REG, & (vtable->vtable [item->value.vtable_slot]));
+					amd64_jump_membase (code, MONO_ARCH_IMT_SCRATCH_REG, 0);
 				}
 
 				if (fail_case) {
 					amd64_patch (item->jmp_code, code);
-					amd64_mov_reg_imm (code, AMD64_R11, fail_tramp);
-					amd64_jump_reg (code, AMD64_R11);
+					amd64_mov_reg_imm (code, MONO_ARCH_IMT_SCRATCH_REG, fail_tramp);
+					amd64_jump_reg (code, MONO_ARCH_IMT_SCRATCH_REG);
 					item->jmp_code = NULL;
 				}
 			} else {
@@ -7202,27 +8071,33 @@ mono_arch_build_imt_thunk (MonoVTable *vtable, MonoDomain *domain, MonoIMTCheckI
 				if (amd64_is_imm32 (item->key))
 					amd64_alu_reg_imm (code, X86_CMP, MONO_ARCH_IMT_REG, (guint32)(gssize)item->key);
 				else {
-					amd64_mov_reg_imm (code, AMD64_R11, item->key);
-					amd64_alu_reg_reg (code, X86_CMP, MONO_ARCH_IMT_REG, AMD64_R11);
+					amd64_mov_reg_imm (code, MONO_ARCH_IMT_SCRATCH_REG, item->key);
+					amd64_alu_reg_reg (code, X86_CMP, MONO_ARCH_IMT_REG, MONO_ARCH_IMT_SCRATCH_REG);
 				}
 				item->jmp_code = code;
 				amd64_branch8 (code, X86_CC_NE, 0, FALSE);
-				amd64_mov_reg_imm (code, AMD64_R11, & (vtable->vtable [item->value.vtable_slot]));
-				amd64_jump_membase (code, AMD64_R11, 0);
+				/* See the comment below about R10 */
+				amd64_mov_reg_imm (code, MONO_ARCH_IMT_SCRATCH_REG, & (vtable->vtable [item->value.vtable_slot]));
+				amd64_jump_membase (code, MONO_ARCH_IMT_SCRATCH_REG, 0);
 				amd64_patch (item->jmp_code, code);
 				amd64_breakpoint (code);
 				item->jmp_code = NULL;
 #else
-				amd64_mov_reg_imm (code, AMD64_R11, & (vtable->vtable [item->value.vtable_slot]));
-				amd64_jump_membase (code, AMD64_R11, 0);
+				/* We're using R10 (MONO_ARCH_IMT_SCRATCH_REG) here because R11 (MONO_ARCH_IMT_REG)
+				   needs to be preserved.  R10 needs
+				   to be preserved for calls which
+				   require a runtime generic context,
+				   but interface calls don't. */
+				amd64_mov_reg_imm (code, MONO_ARCH_IMT_SCRATCH_REG, & (vtable->vtable [item->value.vtable_slot]));
+				amd64_jump_membase (code, MONO_ARCH_IMT_SCRATCH_REG, 0);
 #endif
 			}
 		} else {
 			if (amd64_is_imm32 (item->key))
 				amd64_alu_reg_imm (code, X86_CMP, MONO_ARCH_IMT_REG, (guint32)(gssize)item->key);
 			else {
-				amd64_mov_reg_imm (code, AMD64_R11, item->key);
-				amd64_alu_reg_reg (code, X86_CMP, MONO_ARCH_IMT_REG, AMD64_R11);
+				amd64_mov_reg_imm (code, MONO_ARCH_IMT_SCRATCH_REG, item->key);
+				amd64_alu_reg_reg (code, X86_CMP, MONO_ARCH_IMT_REG, MONO_ARCH_IMT_SCRATCH_REG);
 			}
 			item->jmp_code = code;
 			if (x86_is_imm8 (imt_branch_distance (imt_entries, i, item->check_target_idx)))
@@ -7246,6 +8121,8 @@ mono_arch_build_imt_thunk (MonoVTable *vtable, MonoDomain *domain, MonoIMTCheckI
 		mono_stats.imt_thunks_size += code - start;
 	g_assert (code - start <= size);
 
+	nacl_domain_code_validate(domain, &start, size, &code);
+
 	return start;
 }
 
@@ -7387,6 +8264,59 @@ mono_arch_context_get_int_reg (MonoContext *ctx, int reg)
 	}
 }
 
+/*MONO_ARCH_HAVE_HANDLER_BLOCK_GUARD*/
+gpointer
+mono_arch_install_handler_block_guard (MonoJitInfo *ji, MonoJitExceptionInfo *clause, MonoContext *ctx, gpointer new_value)
+{
+	int offset;
+	gpointer *sp, old_value;
+	char *bp;
+	const unsigned char *handler;
+
+	/*Decode the first instruction to figure out where did we store the spvar*/
+	/*Our jit MUST generate the following:
+	 mov    %rsp, ?(%rbp)
+
+	 Which is encoded as: REX.W 0x89 mod_rm
+	 mod_rm (rsp, rbp, imm) which can be: (imm will never be zero)
+		mod (reg + imm8):  01 reg(rsp): 100 rm(rbp): 101 -> 01100101 (0x65)
+		mod (reg + imm32): 10 reg(rsp): 100 rm(rbp): 101 -> 10100101 (0xA5)
+
+	FIXME can we generate frameless methods on this case?
+
+	*/
+	handler = clause->handler_start;
+
+	/*REX.W*/
+	if (*handler != 0x48)
+		return NULL;
+	++handler;
+
+	/*mov r, r/m */
+	if (*handler != 0x89)
+		return NULL;
+	++handler;
+
+	if (*handler == 0x65)
+		offset = *(signed char*)(handler + 1);
+	else if (*handler == 0xA5)
+		offset = *(int*)(handler + 1);
+	else
+		return NULL;
+
+	/*Load the spvar*/
+	bp = MONO_CONTEXT_GET_BP (ctx);
+	sp = *(gpointer*)(bp + offset);
+
+	old_value = *sp;
+	if (old_value < ji->code_start || (char*)old_value > ((char*)ji->code_start + ji->code_size))
+		return old_value;
+
+	*sp = new_value;
+
+	return old_value;
+}
+
 /*
  * mono_arch_emit_load_aotconst:
  *
@@ -7412,14 +8342,7 @@ mono_arch_emit_load_aotconst (guint8 *start, guint8 *code, MonoJumpInfo **ji, in
 GSList *
 mono_arch_get_trampolines (gboolean aot)
 {
-	MonoTrampInfo *info;
-	GSList *tramps = NULL;
-
-	mono_arch_get_throw_pending_exception (&info, aot);
-
-	tramps = g_slist_append (tramps, info);
-
-	return tramps;
+	return mono_amd64_get_exception_trampolines (aot);
 }
 
 /* Soft Debug support */
diff --git a/mono/mini/mini-amd64.h b/mono/mini/mini-amd64.h
index becdaaa..effe00b 100644
--- a/mono/mini/mini-amd64.h
+++ b/mono/mini/mini-amd64.h
@@ -5,6 +5,18 @@
 #include <mono/utils/mono-sigcontext.h>
 #include <glib.h>
 
+#ifdef __native_client_codegen__
+#define kNaClAlignmentAMD64 32
+#define kNaClAlignmentMaskAMD64 (kNaClAlignmentAMD64 - 1)
+
+/* TODO: use kamd64NaClLengthOfCallImm    */
+/* temporarily using kNaClAlignmentAMD64 so padding in */
+/* image-writer.c doesn't happen                       */
+#define kNaClLengthOfCallImm kNaClAlignmentAMD64
+
+int is_nacl_call_reg_sequence(guint8* code);
+#endif
+
 #ifdef HOST_WIN32
 #include <windows.h>
 /* use SIG* defines if possible */
@@ -146,7 +158,13 @@ struct MonoLMF {
 	gpointer    lmf_addr;
 	/* This is only set in trampoline LMF frames */
 	MonoMethod *method;
+#if defined(__default_codegen__) || defined(HOST_WIN32)
 	guint64     rip;
+#elif defined(__native_client_codegen__)
+	/* On 64-bit compilers, default alignment is 8 for this field, */
+	/* this allows the structure to match for 32-bit compilers.    */
+	guint64     rip __attribute__ ((aligned(8)));
+#endif
 	guint64     rbx;
 	guint64     rbp;
 	guint64     rsp;
@@ -165,6 +183,7 @@ typedef struct MonoCompileArch {
 	gint32 localloc_offset;
 	gint32 reg_save_area_offset;
 	gint32 stack_alloc_size;
+	gint32 sp_fp_offset;
 	gboolean omit_fp, omit_fp_computed, no_pushes;
 	gpointer cinfo;
 	gint32 async_point_count;
@@ -232,21 +251,12 @@ typedef struct {
 #endif
 
 /*
- * This structure is an extension of MonoLMF and contains extra information.
- */
-typedef struct {
-	struct MonoLMF lmf;
-	gboolean debugger_invoke;
-	MonoContext ctx; /* if debugger_invoke is TRUE */
-} MonoLMFExt;
-
-/*
  * some icalls like mono_array_new_va needs to be called using a different 
  * calling convention.
  */
 #define MONO_ARCH_VARARG_ICALLS 1
 
-#ifndef HOST_WIN32
+#if !defined( HOST_WIN32 ) && !defined(__native_client__) && !defined(__native_client_codegen__)
 
 #define MONO_ARCH_USE_SIGACTION 1
 
@@ -256,7 +266,7 @@ typedef struct {
 
 #endif
 
-#endif /* HOST_WIN32 */
+#endif /* !HOST_WIN32 && !__native_client__ */
 
 #if defined (__APPLE__)
 
@@ -343,6 +353,7 @@ typedef struct {
 #define MONO_ARCH_HAVE_IMT 1
 #define MONO_ARCH_HAVE_TLS_GET 1
 #define MONO_ARCH_IMT_REG AMD64_R10
+#define MONO_ARCH_IMT_SCRATCH_REG AMD64_R11
 #define MONO_ARCH_VTABLE_REG MONO_AMD64_ARG_REG1
 /*
  * We use r10 for the imt/rgctx register rather than r11 because r11 is
@@ -365,12 +376,11 @@ typedef struct {
 #define MONO_ARCH_HAVE_GET_TRAMPOLINES 1
 
 #define MONO_ARCH_AOT_SUPPORTED 1
-#ifndef HOST_WIN32
+#if !defined( HOST_WIN32 ) && !defined( __native_client__ )
 #define MONO_ARCH_SOFT_DEBUG_SUPPORTED 1
 #else
 #define DISABLE_DEBUGGER_AGENT 1
 #endif
-#define MONO_ARCH_HAVE_FIND_JIT_INFO_EXT 1
 
 #if !defined(HOST_WIN32) || defined(__sun)
 #define MONO_ARCH_ENABLE_MONITOR_IL_FASTPATH 1
@@ -389,8 +399,15 @@ typedef struct {
 #define MONO_ARCH_HAVE_LLVM_IMT_TRAMPOLINE 1
 #define MONO_ARCH_LLVM_SUPPORTED 1
 #define MONO_ARCH_THIS_AS_FIRST_ARG 1
+#define MONO_ARCH_HAVE_HANDLER_BLOCK_GUARD 1
+#define MONO_ARCH_HAVE_CARD_TABLE_WBARRIER 1
+#define MONO_ARCH_HAVE_SETUP_RESUME_FROM_SIGNAL_HANDLER_CTX 1
+#define MONO_ARCH_GC_MAPS_SUPPORTED 1
+
+gboolean
+mono_amd64_tail_call_supported (MonoMethodSignature *caller_sig, MonoMethodSignature *callee_sig) MONO_INTERNAL;
 
-#define MONO_ARCH_USE_OP_TAIL_CALL(caller_sig, callee_sig) mono_metadata_signature_equal ((caller_sig), (callee_sig))
+#define MONO_ARCH_USE_OP_TAIL_CALL(caller_sig, callee_sig) mono_amd64_tail_call_supported (caller_sig, callee_sig)
 
 /* Used for optimization, not complete */
 #define MONO_ARCH_IS_OP_MEMBASE(opcode) ((opcode) == OP_X86_PUSH_MEMBASE)
@@ -426,6 +443,9 @@ mono_amd64_get_original_ip (void) MONO_INTERNAL;
 guint8*
 mono_amd64_emit_tls_get (guint8* code, int dreg, int tls_offset) MONO_INTERNAL;
 
+GSList*
+mono_amd64_get_exception_trampolines (gboolean aot) MONO_INTERNAL;
+
 typedef struct {
 	guint8 *address;
 	guint8 saved_byte;
diff --git a/mono/mini/mini-arm.c b/mono/mini/mini-arm.c
index ff64012..824db1b 100644
--- a/mono/mini/mini-arm.c
+++ b/mono/mini/mini-arm.c
@@ -39,6 +39,24 @@ static CRITICAL_SECTION mini_arch_mutex;
 static int v5_supported = 0;
 static int v7_supported = 0;
 static int thumb_supported = 0;
+/*
+ * Whenever to use the ARM EABI
+ */
+static int eabi_supported = 0;
+
+/*
+ * Whenever we are on arm/darwin aka the iphone.
+ */
+static int darwin = 0;
+/* 
+ * Whenever to use the iphone ABI extensions:
+ * http://developer.apple.com/library/ios/documentation/Xcode/Conceptual/iPhoneOSABIReference/index.html
+ * Basically, r7 is used as a frame pointer and it should point to the saved r7 + lr.
+ * This is required for debugging/profiling tools to work, but it has some overhead so it should
+ * only be turned on in debug builds.
+ */
+static int iphone_abi = 0;
+static int i8_align;
 
 /*
  * The code generated for sequence points reads from this location, which is
@@ -105,6 +123,8 @@ int mono_exc_esp_offset = 0;
 	}																	\
 	} while (0)
 
+static void mono_arch_compute_omit_fp (MonoCompile *cfg);
+
 const char*
 mono_arch_regname (int reg)
 {
@@ -430,7 +450,7 @@ mono_arch_get_delegate_invoke_impl (MonoMethodSignature *sig, gboolean has_targe
 }
 
 gpointer
-mono_arch_get_this_arg_from_call (MonoGenericSharingContext *gsctx, MonoMethodSignature *sig, mgreg_t *regs, guint8 *code)
+mono_arch_get_this_arg_from_call (mgreg_t *regs, guint8 *code)
 {
 	return (gpointer)regs [ARMREG_R0];
 }
@@ -441,6 +461,14 @@ mono_arch_get_this_arg_from_call (MonoGenericSharingContext *gsctx, MonoMethodSi
 void
 mono_arch_cpu_init (void)
 {
+#if defined(__ARM_EABI__)
+	eabi_supported = TRUE;
+#endif
+#if defined(__APPLE__) && defined(MONO_CROSS_COMPILE)
+		i8_align = 4;
+#else
+		i8_align = __alignof__ (gint64);
+#endif
 }
 
 /*
@@ -457,6 +485,7 @@ mono_arch_init (void)
 
 	mono_aot_register_jit_icall ("mono_arm_throw_exception", mono_arm_throw_exception);
 	mono_aot_register_jit_icall ("mono_arm_throw_exception_by_token", mono_arm_throw_exception_by_token);
+	mono_aot_register_jit_icall ("mono_arm_resume_unwind", mono_arm_resume_unwind);
 }
 
 /*
@@ -485,6 +514,8 @@ mono_arch_cpu_optimizazions (guint32 *exclude_mask)
 #if __APPLE__
 	thumb_supported = TRUE;
 	v5_supported = TRUE;
+	darwin = TRUE;
+	iphone_abi = TRUE;
 #else
 	char buf [512];
 	char *line;
@@ -586,6 +617,8 @@ mono_arch_get_global_int_regs (MonoCompile *cfg)
 {
 	GList *regs = NULL;
 
+	mono_arch_compute_omit_fp (cfg);
+
 	/* 
 	 * FIXME: Interface calls might go through a static rgctx trampoline which
 	 * sets V5, but it doesn't save it, so we need to save it ourselves, and
@@ -594,10 +627,16 @@ mono_arch_get_global_int_regs (MonoCompile *cfg)
 	if (cfg->flags & MONO_CFG_HAS_CALLS)
 		cfg->uses_rgctx_reg = TRUE;
 
+	if (cfg->arch.omit_fp)
+		regs = g_list_prepend (regs, GUINT_TO_POINTER (ARMREG_FP));
 	regs = g_list_prepend (regs, GUINT_TO_POINTER (ARMREG_V1));
 	regs = g_list_prepend (regs, GUINT_TO_POINTER (ARMREG_V2));
 	regs = g_list_prepend (regs, GUINT_TO_POINTER (ARMREG_V3));
-	regs = g_list_prepend (regs, GUINT_TO_POINTER (ARMREG_V4));
+	if (darwin)
+		/* V4=R7 is used as a frame pointer, but V7=R10 is preserved */
+		regs = g_list_prepend (regs, GUINT_TO_POINTER (ARMREG_V7));
+	else
+		regs = g_list_prepend (regs, GUINT_TO_POINTER (ARMREG_V4));
 	if (!(cfg->compile_aot || cfg->uses_rgctx_reg || COMPILE_LLVM (cfg)))
 		/* V5 is reserved for passing the vtable/rgctx/IMT method */
 		regs = g_list_prepend (regs, GUINT_TO_POINTER (ARMREG_V5));
@@ -710,17 +749,12 @@ add_general (guint *gr, guint *stack_size, ArgInfo *ainfo, gboolean simple)
 			ainfo->reg = *gr;
 		}
 	} else {
-#if defined(__APPLE__) && defined(MONO_CROSS_COMPILE)
-		int i8_align = 4;
-#else
-		int i8_align = __alignof__ (gint64);
-#endif
+		gboolean split;
 
-#if __ARM_EABI__
-		gboolean split = i8_align == 4;
-#else
-		gboolean split = TRUE;
-#endif
+		if (eabi_supported)
+			split = i8_align == 4;
+		else
+			split = TRUE;
 		
 		if (*gr == ARMREG_R3 && split) {
 			/* first word in r3 and the second on the stack */
@@ -729,22 +763,22 @@ add_general (guint *gr, guint *stack_size, ArgInfo *ainfo, gboolean simple)
 			ainfo->storage = RegTypeBaseGen;
 			*stack_size += 4;
 		} else if (*gr >= ARMREG_R3) {
-#ifdef __ARM_EABI__
-			/* darwin aligns longs to 4 byte only */
-			if (i8_align == 8) {
-				*stack_size += 7;
-				*stack_size &= ~7;
+			if (eabi_supported) {
+				/* darwin aligns longs to 4 byte only */
+				if (i8_align == 8) {
+					*stack_size += 7;
+					*stack_size &= ~7;
+				}
 			}
-#endif
 			ainfo->offset = *stack_size;
 			ainfo->reg = ARMREG_SP; /* in the caller */
 			ainfo->storage = RegTypeBase;
 			*stack_size += 8;
 		} else {
-#ifdef __ARM_EABI__
-			if (i8_align == 8 && ((*gr) & 1))
-				(*gr) ++;
-#endif
+			if (eabi_supported) {
+				if (i8_align == 8 && ((*gr) & 1))
+					(*gr) ++;
+			}
 			ainfo->storage = RegTypeIRegPair;
 			ainfo->reg = *gr;
 		}
@@ -754,13 +788,14 @@ add_general (guint *gr, guint *stack_size, ArgInfo *ainfo, gboolean simple)
 }
 
 static CallInfo*
-get_call_info (MonoGenericSharingContext *gsctx, MonoMemPool *mp, MonoMethodSignature *sig, gboolean is_pinvoke)
+get_call_info (MonoGenericSharingContext *gsctx, MonoMemPool *mp, MonoMethodSignature *sig)
 {
 	guint i, gr, pstart;
 	int n = sig->hasthis + sig->param_count;
 	MonoType *simpletype;
 	guint32 stack_size = 0;
 	CallInfo *cinfo;
+	gboolean is_pinvoke = sig->pinvoke;
 
 	if (mp)
 		cinfo = mono_mempool_alloc0 (mp, sizeof (CallInfo) + (sizeof (ArgInfo) * n));
@@ -897,10 +932,10 @@ get_call_info (MonoGenericSharingContext *gsctx, MonoMemPool *mp, MonoMethodSign
 			nwords = (align_size + sizeof (gpointer) -1 ) / sizeof (gpointer);
 			cinfo->args [n].storage = RegTypeStructByVal;
 			/* FIXME: align stack_size if needed */
-#ifdef __ARM_EABI__
-			if (align >= 8 && (gr & 1))
-				gr ++;
-#endif
+			if (eabi_supported) {
+				if (align >= 8 && (gr & 1))
+					gr ++;
+			}
 			if (gr > ARMREG_R3) {
 				cinfo->args [n].size = 0;
 				cinfo->args [n].vtsize = nwords;
@@ -1005,6 +1040,111 @@ get_call_info (MonoGenericSharingContext *gsctx, MonoMemPool *mp, MonoMethodSign
 
 #ifndef DISABLE_JIT
 
+G_GNUC_UNUSED static void
+break_count (void)
+{
+}
+
+G_GNUC_UNUSED static gboolean
+debug_count (void)
+{
+	static int count = 0;
+	count ++;
+
+	if (!getenv ("COUNT"))
+		return TRUE;
+
+	if (count == atoi (getenv ("COUNT"))) {
+		break_count ();
+	}
+
+	if (count > atoi (getenv ("COUNT"))) {
+		return FALSE;
+	}
+
+	return TRUE;
+}
+
+static gboolean
+debug_omit_fp (void)
+{
+#if 0
+	return debug_count ();
+#else
+	return TRUE;
+#endif
+}
+
+/**
+ * mono_arch_compute_omit_fp:
+ *
+ *   Determine whenever the frame pointer can be eliminated.
+ */
+static void
+mono_arch_compute_omit_fp (MonoCompile *cfg)
+{
+	MonoMethodSignature *sig;
+	MonoMethodHeader *header;
+	int i, locals_size;
+	CallInfo *cinfo;
+
+	if (cfg->arch.omit_fp_computed)
+		return;
+
+	header = cfg->header;
+
+	sig = mono_method_signature (cfg->method);
+
+	if (!cfg->arch.cinfo)
+		cfg->arch.cinfo = get_call_info (cfg->generic_sharing_context, cfg->mempool, sig);
+	cinfo = cfg->arch.cinfo;
+
+	/*
+	 * FIXME: Remove some of the restrictions.
+	 */
+	cfg->arch.omit_fp = TRUE;
+	cfg->arch.omit_fp_computed = TRUE;
+
+	if (cfg->disable_omit_fp)
+		cfg->arch.omit_fp = FALSE;
+	if (!debug_omit_fp ())
+		cfg->arch.omit_fp = FALSE;
+	/*
+	if (cfg->method->save_lmf)
+		cfg->arch.omit_fp = FALSE;
+	*/
+	if (cfg->flags & MONO_CFG_HAS_ALLOCA)
+		cfg->arch.omit_fp = FALSE;
+	if (header->num_clauses)
+		cfg->arch.omit_fp = FALSE;
+	if (cfg->param_area)
+		cfg->arch.omit_fp = FALSE;
+	if (!sig->pinvoke && (sig->call_convention == MONO_CALL_VARARG))
+		cfg->arch.omit_fp = FALSE;
+	if ((mono_jit_trace_calls != NULL && mono_trace_eval (cfg->method)) ||
+		(cfg->prof_options & MONO_PROFILE_ENTER_LEAVE))
+		cfg->arch.omit_fp = FALSE;
+	for (i = 0; i < sig->param_count + sig->hasthis; ++i) {
+		ArgInfo *ainfo = &cinfo->args [i];
+
+		if (ainfo->storage == RegTypeBase || ainfo->storage == RegTypeBaseGen || ainfo->storage == RegTypeStructByVal) {
+			/* 
+			 * The stack offset can only be determined when the frame
+			 * size is known.
+			 */
+			cfg->arch.omit_fp = FALSE;
+		}
+	}
+
+	locals_size = 0;
+	for (i = cfg->locals_start; i < cfg->num_varinfo; i++) {
+		MonoInst *ins = cfg->varinfo [i];
+		int ialign;
+
+		locals_size += mono_type_size (ins->inst_vtype, &ialign);
+	}
+}
+
 /*
  * Set var information according to the calling convention. arm version.
  * The locals var stuff should most likely be split in another method.
@@ -1016,17 +1156,22 @@ mono_arch_allocate_vars (MonoCompile *cfg)
 	MonoMethodHeader *header;
 	MonoInst *ins;
 	int i, offset, size, align, curinst;
-	int frame_reg = ARMREG_FP;
 	CallInfo *cinfo;
 	guint32 ualign;
 
 	sig = mono_method_signature (cfg->method);
 
 	if (!cfg->arch.cinfo)
-		cfg->arch.cinfo = get_call_info (cfg->generic_sharing_context, cfg->mempool, sig, sig->pinvoke);
+		cfg->arch.cinfo = get_call_info (cfg->generic_sharing_context, cfg->mempool, sig);
 	cinfo = cfg->arch.cinfo;
 
-	/* FIXME: this will change when we use FP as gcc does */
+	mono_arch_compute_omit_fp (cfg);
+
+	if (cfg->arch.omit_fp)
+		cfg->frame_reg = ARMREG_SP;
+	else
+		cfg->frame_reg = ARMREG_FP;
+
 	cfg->flags |= MONO_CFG_HAS_SPILLUP;
 
 	/* allow room for the vararg method args: void* and long/double */
@@ -1035,21 +1180,8 @@ mono_arch_allocate_vars (MonoCompile *cfg)
 
 	header = cfg->header;
 
-	/* 
-	 * We use the frame register also for any method that has
-	 * exception clauses. This way, when the handlers are called,
-	 * the code will reference local variables using the frame reg instead of
-	 * the stack pointer: if we had to restore the stack pointer, we'd
-	 * corrupt the method frames that are already on the stack (since
-	 * filters get called before stack unwinding happens) when the filter
-	 * code would call any method (this also applies to finally etc.).
-	 */ 
-	if ((cfg->flags & MONO_CFG_HAS_ALLOCA) || header->num_clauses)
-		frame_reg = ARMREG_FP;
-	cfg->frame_reg = frame_reg;
-	if (frame_reg != ARMREG_SP) {
-		cfg->used_int_regs |= 1 << frame_reg;
-	}
+	if (cfg->frame_reg != ARMREG_SP)
+		cfg->used_int_regs |= 1 << cfg->frame_reg;
 
 	if (cfg->compile_aot || cfg->uses_rgctx_reg || COMPILE_LLVM (cfg))
 		/* V5 is reserved for passing the vtable/rgctx/IMT method */
@@ -1102,7 +1234,7 @@ mono_arch_allocate_vars (MonoCompile *cfg)
 			offset &= ~(sizeof(gpointer) - 1);
 			ins->inst_offset = offset;
 			ins->opcode = OP_REGOFFSET;
-			ins->inst_basereg = frame_reg;
+			ins->inst_basereg = cfg->frame_reg;
 			if (G_UNLIKELY (cfg->verbose_level > 1)) {
 				printf ("vret_addr =");
 				mono_print_ins (cfg->vret_addr);
@@ -1122,7 +1254,7 @@ mono_arch_allocate_vars (MonoCompile *cfg)
 		offset += align - 1;
 		offset &= ~(align - 1);
 		ins->opcode = OP_REGOFFSET;
-		ins->inst_basereg = frame_reg;
+		ins->inst_basereg = cfg->frame_reg;
 		ins->inst_offset = offset;
 		offset += size;
 
@@ -1132,7 +1264,7 @@ mono_arch_allocate_vars (MonoCompile *cfg)
 		offset += align - 1;
 		offset &= ~(align - 1);
 		ins->opcode = OP_REGOFFSET;
-		ins->inst_basereg = frame_reg;
+		ins->inst_basereg = cfg->frame_reg;
 		ins->inst_offset = offset;
 		offset += size;
 	}
@@ -1161,7 +1293,7 @@ mono_arch_allocate_vars (MonoCompile *cfg)
 		offset &= ~(align - 1);
 		ins->opcode = OP_REGOFFSET;
 		ins->inst_offset = offset;
-		ins->inst_basereg = frame_reg;
+		ins->inst_basereg = cfg->frame_reg;
 		offset += size;
 		//g_print ("allocating local %d to %d\n", i, inst->inst_offset);
 	}
@@ -1171,7 +1303,7 @@ mono_arch_allocate_vars (MonoCompile *cfg)
 		ins = cfg->args [curinst];
 		if (ins->opcode != OP_REGVAR) {
 			ins->opcode = OP_REGOFFSET;
-			ins->inst_basereg = frame_reg;
+			ins->inst_basereg = cfg->frame_reg;
 			offset += sizeof (gpointer) - 1;
 			offset &= ~(sizeof (gpointer) - 1);
 			ins->inst_offset = offset;
@@ -1196,7 +1328,7 @@ mono_arch_allocate_vars (MonoCompile *cfg)
 
 		if (ins->opcode != OP_REGVAR) {
 			ins->opcode = OP_REGOFFSET;
-			ins->inst_basereg = frame_reg;
+			ins->inst_basereg = cfg->frame_reg;
 			size = mini_type_stack_size_full (NULL, sig->params [i], &ualign, sig->pinvoke);
 			align = ualign;
 			/* FIXME: if a structure is misaligned, our memcpy doesn't work,
@@ -1232,7 +1364,7 @@ mono_arch_create_vars (MonoCompile *cfg)
 	sig = mono_method_signature (cfg->method);
 
 	if (!cfg->arch.cinfo)
-		cfg->arch.cinfo = get_call_info (cfg->generic_sharing_context, cfg->mempool, sig, sig->pinvoke);
+		cfg->arch.cinfo = get_call_info (cfg->generic_sharing_context, cfg->mempool, sig);
 	cinfo = cfg->arch.cinfo;
 
 	if (cinfo->ret.storage == RegTypeStructByVal)
@@ -1302,7 +1434,7 @@ mono_arch_get_llvm_call_info (MonoCompile *cfg, MonoMethodSignature *sig)
 
 	n = sig->param_count + sig->hasthis;
 
-	cinfo = get_call_info (cfg->generic_sharing_context, cfg->mempool, sig, sig->pinvoke);
+	cinfo = get_call_info (cfg->generic_sharing_context, cfg->mempool, sig);
 
 	linfo = mono_mempool_alloc0 (cfg->mempool, sizeof (LLVMCallInfo) + (sizeof (LLVMArgInfo) * n));
 
@@ -1312,7 +1444,11 @@ mono_arch_get_llvm_call_info (MonoCompile *cfg, MonoMethodSignature *sig)
 	 * - we only pass/receive them in registers in some cases, and only 
 	 *   in 1 or 2 integer registers.
 	 */
-	if (cinfo->ret.storage != RegTypeGeneral && cinfo->ret.storage != RegTypeNone && cinfo->ret.storage != RegTypeFP && cinfo->ret.storage != RegTypeIRegPair) {
+	if (cinfo->vtype_retaddr) {
+		/* Vtype returned using a hidden argument */
+		linfo->ret.storage = LLVMArgVtypeRetAddr;
+		linfo->vret_arg_index = cinfo->vret_arg_index;
+	} else if (cinfo->ret.storage != RegTypeGeneral && cinfo->ret.storage != RegTypeNone && cinfo->ret.storage != RegTypeFP && cinfo->ret.storage != RegTypeIRegPair) {
 		cfg->exception_message = g_strdup ("unknown ret conv");
 		cfg->disable_llvm = TRUE;
 		return linfo;
@@ -1329,6 +1465,20 @@ mono_arch_get_llvm_call_info (MonoCompile *cfg, MonoMethodSignature *sig)
 		case RegTypeBase:
 			linfo->args [i].storage = LLVMArgInIReg;
 			break;
+		case RegTypeStructByVal:
+			// FIXME: Passing entirely on the stack or split reg/stack
+			if (ainfo->vtsize == 0 && ainfo->size <= 2) {
+				linfo->args [i].storage = LLVMArgVtypeInReg;
+				linfo->args [i].pair_storage [0] = LLVMArgInIReg;
+				if (ainfo->size == 2)
+					linfo->args [i].pair_storage [1] = LLVMArgInIReg;
+				else
+					linfo->args [i].pair_storage [1] = LLVMArgNone;
+			} else {
+				cfg->exception_message = g_strdup_printf ("vtype-by-val on stack");
+				cfg->disable_llvm = TRUE;
+			}
+			break;
 		default:
 			cfg->exception_message = g_strdup_printf ("ainfo->storage (%d)", ainfo->storage);
 			cfg->disable_llvm = TRUE;
@@ -1351,7 +1501,7 @@ mono_arch_emit_call (MonoCompile *cfg, MonoCallInst *call)
 	sig = call->signature;
 	n = sig->param_count + sig->hasthis;
 	
-	cinfo = get_call_info (cfg->generic_sharing_context, NULL, sig, sig->pinvoke);
+	cinfo = get_call_info (cfg->generic_sharing_context, NULL, sig);
 
 	for (i = 0; i < n; ++i) {
 		ArgInfo *ainfo = cinfo->args + i;
@@ -1485,9 +1635,7 @@ mono_arch_emit_call (MonoCompile *cfg, MonoCallInst *call)
 			} else if (!t->byref && (t->type == MONO_TYPE_R8)) {
 				int creg;
 
-#ifdef MONO_ARCH_SOFT_FLOAT
-				g_assert_not_reached ();
-#endif
+				/* This should work for soft-float as well */
 
 				MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STORER8_MEMBASE_REG, ARMREG_SP, (cfg->param_area - 8), in->dreg);
 				creg = mono_alloc_ireg (cfg);
@@ -1725,7 +1873,7 @@ mono_arch_dyn_call_prepare (MonoMethodSignature *sig)
 	ArchDynCallInfo *info;
 	CallInfo *cinfo;
 
-	cinfo = get_call_info (NULL, NULL, sig, FALSE);
+	cinfo = get_call_info (NULL, NULL, sig);
 
 	if (!dyn_call_supported (cinfo, sig)) {
 		g_free (cinfo);
@@ -1754,7 +1902,7 @@ mono_arch_start_dyn_call (MonoDynCallInfo *info, gpointer **args, guint8 *ret, g
 {
 	ArchDynCallInfo *dinfo = (ArchDynCallInfo*)info;
 	DynCallArgs *p = (DynCallArgs*)buf;
-	int arg_index, greg, i, j;
+	int arg_index, greg, i, j, pindex;
 	MonoMethodSignature *sig = dinfo->sig;
 
 	g_assert (buf_len >= sizeof (DynCallArgs));
@@ -1764,14 +1912,18 @@ mono_arch_start_dyn_call (MonoDynCallInfo *info, gpointer **args, guint8 *ret, g
 
 	arg_index = 0;
 	greg = 0;
+	pindex = 0;
+
+	if (sig->hasthis || dinfo->cinfo->vret_arg_index == 1) {
+		p->regs [greg ++] = (mgreg_t)*(args [arg_index ++]);
+		if (!sig->hasthis)
+			pindex = 1;
+	}
 
 	if (dinfo->cinfo->vtype_retaddr)
 		p->regs [greg ++] = (mgreg_t)ret;
 
-	if (sig->hasthis)
-		p->regs [greg ++] = (mgreg_t)*(args [arg_index ++]);
-
-	for (i = 0; i < sig->param_count; i++) {
+	for (i = pindex; i < sig->param_count; i++) {
 		MonoType *t = mono_type_get_underlying_type (sig->params [i]);
 		gpointer *arg = args [arg_index ++];
 		ArgInfo *ainfo = &dinfo->cinfo->args [i + sig->hasthis];
@@ -2932,7 +3084,7 @@ emit_load_volatile_arguments (MonoCompile *cfg, guint8 *code)
 
 	pos = 0;
 
-	cinfo = get_call_info (cfg->generic_sharing_context, NULL, sig, sig->pinvoke);
+	cinfo = get_call_info (cfg->generic_sharing_context, NULL, sig);
 
 	if (MONO_TYPE_ISSTRUCT (sig->ret)) {
 		ArgInfo *ainfo = &cinfo->ret;
@@ -3565,7 +3717,13 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
 			code = emit_load_volatile_arguments (cfg, code);
 
 			code = emit_big_add (code, ARMREG_SP, cfg->frame_reg, cfg->stack_usage);
-			ARM_POP_NWB (code, cfg->used_int_regs | ((1 << ARMREG_SP)) | ((1 << ARMREG_LR)));
+			if (iphone_abi) {
+				if (cfg->used_int_regs)
+					ARM_POP (code, cfg->used_int_regs);
+				ARM_POP (code, (1 << ARMREG_R7) | (1 << ARMREG_LR));
+			} else {
+				ARM_POP (code, cfg->used_int_regs | (1 << ARMREG_LR));
+			}
 			mono_add_patch_info (cfg, (guint8*) code - cfg->native_code, MONO_PATCH_INFO_METHOD_JUMP, ins->inst_p0);
 			if (cfg->compile_aot) {
 				ARM_LDR_IMM (code, ARMREG_IP, ARMREG_PC, 0);
@@ -3579,7 +3737,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
 			break;
 		case OP_CHECK_THIS:
 			/* ensure ins->sreg1 is not NULL */
-			ARM_LDR_IMM (code, ARMREG_LR, ins->sreg1, 0);
+			ARM_LDRB_IMM (code, ARMREG_LR, ins->sreg1, 0);
 			break;
 		case OP_ARGLIST: {
 			g_assert (cfg->sig_cookie < 128);
@@ -3661,7 +3819,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
 				ARM_STR_REG_REG (code, ARMREG_LR, ARMREG_SP, ins->dreg);
 				arm_patch (branch_to_cond, code);
 				/* decrement by 4 and set flags */
-				ARM_SUBS_REG_IMM8 (code, ins->dreg, ins->dreg, 4);
+				ARM_SUBS_REG_IMM8 (code, ins->dreg, ins->dreg, sizeof (mgreg_t));
 				ARM_B_COND (code, ARMCOND_GE, 0);
 				arm_patch (code - 4, start_loop);
 			}
@@ -3686,13 +3844,13 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
 			/* Set stack slots using R0 as scratch reg */
 			/* MONO_ARCH_DYN_CALL_PARAM_AREA gives the size of stack space available */
 			for (i = 0; i < DYN_CALL_STACK_ARGS; ++i) {
-				ARM_LDR_IMM (code, ARMREG_R0, ARMREG_LR, (PARAM_REGS + i) * sizeof (gpointer));
-				ARM_STR_IMM (code, ARMREG_R0, ARMREG_SP, i * sizeof (gpointer));
+				ARM_LDR_IMM (code, ARMREG_R0, ARMREG_LR, (PARAM_REGS + i) * sizeof (mgreg_t));
+				ARM_STR_IMM (code, ARMREG_R0, ARMREG_SP, i * sizeof (mgreg_t));
 			}
 
 			/* Set argument registers */
 			for (i = 0; i < PARAM_REGS; ++i)
-				ARM_LDR_IMM (code, i, ARMREG_LR, i * sizeof (gpointer));
+				ARM_LDR_IMM (code, i, ARMREG_LR, i * sizeof (mgreg_t));
 
 			/* Make the call */
 			ARM_MOV_REG_REG (code, ARMREG_LR, ARMREG_PC);
@@ -4437,20 +4595,41 @@ mono_arch_emit_prolog (MonoCompile *cfg)
 		tracing = 1;
 
 	sig = mono_method_signature (method);
-	cfg->code_size = 256 + sig->param_count * 20;
+	cfg->code_size = 256 + sig->param_count * 64;
 	code = cfg->native_code = g_malloc (cfg->code_size);
 
 	mono_emit_unwind_op_def_cfa (cfg, code, ARMREG_SP, 0);
 
-	ARM_MOV_REG_REG (code, ARMREG_IP, ARMREG_SP);
-
 	alloc_size = cfg->stack_offset;
 	pos = 0;
+	prev_sp_offset = 0;
 
 	if (!method->save_lmf) {
-		/* We save SP by storing it into IP and saving IP */
-		ARM_PUSH (code, (cfg->used_int_regs | (1 << ARMREG_IP) | (1 << ARMREG_LR)));
-		prev_sp_offset = 8; /* ip and lr */
+		if (iphone_abi) {
+			/* 
+			 * The iphone uses R7 as the frame pointer, and it points at the saved
+			 * r7+lr:
+			 *         <lr>
+			 * r7 ->   <r7>
+			 *         <rest of frame>
+			 * We can't use r7 as a frame pointer since it points into the middle of
+			 * the frame, so we keep using our own frame pointer.
+			 * FIXME: Optimize this.
+			 */
+			g_assert (darwin);
+			ARM_PUSH (code, (1 << ARMREG_R7) | (1 << ARMREG_LR));
+			ARM_MOV_REG_REG (code, ARMREG_R7, ARMREG_SP);
+			prev_sp_offset += 8; /* r7 and lr */
+			mono_emit_unwind_op_def_cfa_offset (cfg, code, prev_sp_offset);
+			mono_emit_unwind_op_offset (cfg, code, ARMREG_R7, (- prev_sp_offset) + 0);
+
+			/* No need to push LR again */
+			if (cfg->used_int_regs)
+				ARM_PUSH (code, cfg->used_int_regs);
+		} else {
+			ARM_PUSH (code, cfg->used_int_regs | (1 << ARMREG_LR));
+			prev_sp_offset += 4;
+		}
 		for (i = 0; i < 16; ++i) {
 			if (cfg->used_int_regs & (1 << i))
 				prev_sp_offset += 4;
@@ -4458,14 +4637,20 @@ mono_arch_emit_prolog (MonoCompile *cfg)
 		mono_emit_unwind_op_def_cfa_offset (cfg, code, prev_sp_offset);
 		reg_offset = 0;
 		for (i = 0; i < 16; ++i) {
-			if ((cfg->used_int_regs & (1 << i)) || (i == ARMREG_IP) || (i == ARMREG_LR)) {
+			if ((cfg->used_int_regs & (1 << i))) {
 				mono_emit_unwind_op_offset (cfg, code, i, (- prev_sp_offset) + reg_offset);
 				reg_offset += 4;
 			}
 		}
+		if (iphone_abi) {
+			mono_emit_unwind_op_offset (cfg, code, ARMREG_LR, -4);
+		} else {
+			mono_emit_unwind_op_offset (cfg, code, ARMREG_LR, -4);
+		}
 	} else {
+		ARM_MOV_REG_REG (code, ARMREG_IP, ARMREG_SP);
 		ARM_PUSH (code, 0x5ff0);
-		prev_sp_offset = 4 * 10; /* all but r0-r3, sp and pc */
+		prev_sp_offset += 4 * 10; /* all but r0-r3, sp and pc */
 		mono_emit_unwind_op_def_cfa_offset (cfg, code, prev_sp_offset);
 		reg_offset = 0;
 		for (i = 0; i < 16; ++i) {
@@ -4537,7 +4722,7 @@ mono_arch_emit_prolog (MonoCompile *cfg)
 	/* load arguments allocated to register from the stack */
 	pos = 0;
 
-	cinfo = get_call_info (cfg->generic_sharing_context, NULL, sig, sig->pinvoke);
+	cinfo = get_call_info (cfg->generic_sharing_context, NULL, sig);
 
 	if (MONO_TYPE_ISSTRUCT (sig->ret) && cinfo->ret.storage != RegTypeStructByVal) {
 		ArgInfo *ainfo = &cinfo->ret;
@@ -4861,9 +5046,9 @@ mono_arch_emit_epilog (MonoCompile *cfg)
 	}
 
 	if (method->save_lmf) {
-		int lmf_offset;
+		int lmf_offset, reg, sp_adj, regmask;
 		/* all but r0-r3, sp and pc */
-		pos += sizeof (MonoLMF) - (4 * 10);
+		pos += sizeof (MonoLMF) - (MONO_ARM_NUM_SAVED_REGS * sizeof (mgreg_t));
 		lmf_offset = pos;
 		/* r2 contains the pointer to the current LMF */
 		code = emit_big_add (code, ARMREG_R2, cfg->frame_reg, cfg->stack_usage - lmf_offset);
@@ -4873,22 +5058,37 @@ mono_arch_emit_epilog (MonoCompile *cfg)
 		ARM_LDR_IMM (code, ARMREG_LR, ARMREG_R2, G_STRUCT_OFFSET (MonoLMF, lmf_addr));
 		/* *(lmf_addr) = previous_lmf */
 		ARM_STR_IMM (code, ARMREG_IP, ARMREG_LR, G_STRUCT_OFFSET (MonoLMF, previous_lmf));
-		/* FIXME: speedup: there is no actual need to restore the registers if
-		 * we didn't actually change them (idea from Zoltan).
-		 */
-		/* restore iregs */
+		/* This points to r4 inside MonoLMF->iregs */
+		sp_adj = (sizeof (MonoLMF) - MONO_ARM_NUM_SAVED_REGS * sizeof (mgreg_t));
+		reg = ARMREG_R4;
+		regmask = 0x9ff0; /* restore lr to pc */
+		/* Skip caller saved registers not used by the method */
+		while (!(cfg->used_int_regs & (1 << reg)) && reg < ARMREG_FP) {
+			regmask &= ~(1 << reg);
+			sp_adj += 4;
+			reg ++;
+		}
 		/* point sp at the registers to restore: 10 is 14 -4, because we skip r0-r3 */
-		ARM_ADD_REG_IMM8 (code, ARMREG_SP, ARMREG_R2, (sizeof (MonoLMF) - 10 * sizeof (gulong)));
-		ARM_POP_NWB (code, 0xaff0); /* restore ip to sp and lr to pc */
+		ARM_ADD_REG_IMM8 (code, ARMREG_SP, ARMREG_R2, sp_adj);
+		/* restore iregs */
+		ARM_POP (code, regmask); 
 	} else {
 		if ((i = mono_arm_is_rotated_imm8 (cfg->stack_usage, &rot_amount)) >= 0) {
 			ARM_ADD_REG_IMM (code, ARMREG_SP, cfg->frame_reg, i, rot_amount);
 		} else {
 			code = mono_arm_emit_load_imm (code, ARMREG_IP, cfg->stack_usage);
-			ARM_ADD_REG_REG (code, ARMREG_SP, ARMREG_SP, ARMREG_IP);
+			ARM_ADD_REG_REG (code, ARMREG_SP, cfg->frame_reg, ARMREG_IP);
+		}
+
+		if (iphone_abi) {
+			/* Restore saved gregs */
+			if (cfg->used_int_regs)
+				ARM_POP (code, cfg->used_int_regs);
+			/* Restore saved r7, restore LR to PC */
+			ARM_POP (code, (1 << ARMREG_R7) | (1 << ARMREG_PC));
+		} else {
+			ARM_POP (code, cfg->used_int_regs | (1 << ARMREG_PC));
 		}
-		/* FIXME: add v4 thumb interworking support */
-		ARM_POP_NWB (code, cfg->used_int_regs | ((1 << ARMREG_SP) | (1 << ARMREG_PC)));
 	}
 
 	cfg->code_len = code - cfg->native_code;
@@ -4915,6 +5115,8 @@ exception_id_by_name (const char *name)
 		return MONO_EXC_NULL_REF;
 	if (strcmp (name, "ArrayTypeMismatchException") == 0)
 		return MONO_EXC_ARRAY_TYPE_MISMATCH;
+	if (strcmp (name, "ArgumentException") == 0)
+		return MONO_EXC_ARGUMENT;
 	g_error ("Unknown intrinsic exception %s\n", name);
 	return -1;
 }
@@ -5376,6 +5578,18 @@ mono_arch_context_get_int_reg (MonoContext *ctx, int reg)
 }
 
 /*
+ * mono_arch_get_trampolines:
+ *
+ *   Return a list of MonoTrampInfo structures describing arch specific trampolines
+ * for AOT.
+ */
+GSList *
+mono_arch_get_trampolines (gboolean aot)
+{
+	return mono_arm_get_exception_trampolines (aot);
+}
+
+/*
  * mono_arch_set_breakpoint:
  *
  *   Set a breakpoint at the native code corresponding to JI at NATIVE_OFFSET.
@@ -5589,3 +5803,26 @@ mono_arch_get_seq_point_info (MonoDomain *domain, guint8 *code)
 
 	return info;
 }
+
+/*
+ * mono_arch_set_target:
+ *
+ *   Set the target architecture the JIT backend should generate code for, in the form
+ * of a GNU target triplet. Only used in AOT mode.
+ */
+void
+mono_arch_set_target (char *mtriple)
+{
+	/* The GNU target triple format is not very well documented */
+	if (strstr (mtriple, "armv7"))
+		v7_supported = TRUE;
+	if (strstr (mtriple, "darwin")) {
+		v5_supported = TRUE;
+		thumb_supported = TRUE;
+		darwin = TRUE;
+		iphone_abi = TRUE;
+	}
+	if (strstr (mtriple, "gnueabi"))
+		eabi_supported = TRUE;
+}
+
diff --git a/mono/mini/mini-arm.h b/mono/mini/mini-arm.h
index eb27011..5758710 100644
--- a/mono/mini/mini-arm.h
+++ b/mono/mini/mini-arm.h
@@ -43,11 +43,13 @@
 #define MONO_MAX_IREGS 16
 #define MONO_MAX_FREGS 16
 
-#define MONO_SAVED_GREGS 10 /* r4-411, ip, lr */
+#define MONO_SAVED_GREGS 10 /* r4-r11, ip, lr */
 #define MONO_SAVED_FREGS 8
 
 /* r4-r11, ip, lr: registers saved in the LMF  */
 #define MONO_ARM_REGSAVE_MASK 0x5ff0
+#define MONO_ARM_FIRST_SAVED_REG ARMREG_R4
+#define MONO_ARM_NUM_SAVED_REGS 10
 
 /* Parameters used by the register allocator */
 
@@ -102,8 +104,6 @@ struct MonoLMF {
 	/* This is only set in trampoline LMF frames */
 	MonoMethod *method;
 	gulong     esp;
-	/* Unused */
-	gulong     ebp;
 	gulong     eip;
 	/* all but sp and pc: matches the PUSH instruction layout in the trampolines
 	 * 0-4 should be considered undefined (execpt in the magic tramp)
@@ -127,6 +127,7 @@ typedef struct {
 
 typedef struct MonoCompileArch {
 	gpointer seq_point_info_var, ss_trigger_page_var;
+	gboolean omit_fp, omit_fp_computed;
 	gpointer cinfo;
 } MonoCompileArch;
 
@@ -167,8 +168,13 @@ typedef struct MonoCompileArch {
 #define MONO_ARCH_DYN_CALL_PARAM_AREA 24
 
 #define MONO_ARCH_SOFT_DEBUG_SUPPORTED 1
-#define MONO_ARCH_HAVE_FIND_JIT_INFO_EXT 1
 #define MONO_ARCH_HAVE_EXCEPTIONS_INIT 1
+#define MONO_ARCH_HAVE_GET_TRAMPOLINES 1
+
+/* Matches the HAVE_AEABI_READ_TP define in mini-arm.c */
+#if defined(__ARM_EABI__) && defined(__linux__) && !defined(PLATFORM_ANDROID)
+#define MONO_ARCH_HAVE_TLS_GET 1
+#endif
 
 /* ARM doesn't have too many registers, so we have to use a callee saved one */
 #define MONO_ARCH_RGCTX_REG ARMREG_V5
@@ -192,14 +198,7 @@ typedef struct MonoCompileArch {
 		MONO_CONTEXT_SET_IP ((ctx), (func));	\
 	} while (0)
 
-/*
- * This structure is an extension of MonoLMF and contains extra information.
- */
-typedef struct {
-	struct MonoLMF lmf;
-	gboolean debugger_invoke;
-	MonoContext ctx; /* if debugger_invoke is TRUE */
-} MonoLMFExt;
+#define MONO_ARCH_INIT_TOP_LMF_ENTRY(lmf)
 
 void
 mono_arm_throw_exception (MonoObject *exc, unsigned long eip, unsigned long esp, gulong *int_regs, gdouble *fp_regs);
@@ -207,8 +206,17 @@ mono_arm_throw_exception (MonoObject *exc, unsigned long eip, unsigned long esp,
 void
 mono_arm_throw_exception_by_token (guint32 type_token, unsigned long eip, unsigned long esp, gulong *int_regs, gdouble *fp_regs);
 
+void
+mono_arm_resume_unwind (guint32 dummy1, unsigned long eip, unsigned long esp, gulong *int_regs, gdouble *fp_regs);
+
 gboolean
 mono_arm_thumb_supported (void);
 
+GSList*
+mono_arm_get_exception_trampolines (gboolean aot) MONO_INTERNAL;
+
+guint8*
+mono_arm_get_thumb_plt_entry (guint8 *code) MONO_INTERNAL;
+
 #endif /* __MONO_MINI_ARM_H__ */
 
diff --git a/mono/mini/mini-codegen.c b/mono/mini/mini-codegen.c
index 63374fa..e9886d8 100644
--- a/mono/mini/mini-codegen.c
+++ b/mono/mini/mini-codegen.c
@@ -70,24 +70,32 @@ static inline int translate_bank (MonoRegState *rs, int bank, int hreg) {
 static const int regbank_size [] = {
 	MONO_MAX_IREGS,
 	MONO_MAX_FREGS,
+	MONO_MAX_IREGS,
+	MONO_MAX_IREGS,
 	MONO_MAX_XREGS
 };
 
 static const int regbank_load_ops [] = { 
 	OP_LOADR_MEMBASE,
 	OP_LOADR8_MEMBASE,
+	OP_LOADR_MEMBASE,
+	OP_LOADR_MEMBASE,
 	OP_LOADX_MEMBASE
 };
 
 static const int regbank_store_ops [] = { 
 	OP_STORER_MEMBASE_REG,
 	OP_STORER8_MEMBASE_REG,
+	OP_STORER_MEMBASE_REG,
+	OP_STORER_MEMBASE_REG,
 	OP_STOREX_MEMBASE
 };
 
 static const int regbank_move_ops [] = { 
 	OP_MOVE,
 	OP_FMOVE,
+	OP_MOVE,
+	OP_MOVE,
 	OP_XMOVE
 };
 
@@ -96,18 +104,24 @@ static const int regbank_move_ops [] = {
 static const regmask_t regbank_callee_saved_regs [] = {
 	MONO_ARCH_CALLEE_SAVED_REGS,
 	MONO_ARCH_CALLEE_SAVED_FREGS,
+	MONO_ARCH_CALLEE_SAVED_REGS,
+	MONO_ARCH_CALLEE_SAVED_REGS,
 	MONO_ARCH_CALLEE_SAVED_XREGS,
 };
 
 static const regmask_t regbank_callee_regs [] = {
 	MONO_ARCH_CALLEE_REGS,
 	MONO_ARCH_CALLEE_FREGS,
+	MONO_ARCH_CALLEE_REGS,
+	MONO_ARCH_CALLEE_REGS,
 	MONO_ARCH_CALLEE_XREGS,
 };
 
 static const int regbank_spill_var_size[] = {
 	sizeof (mgreg_t),
 	sizeof (double),
+	sizeof (mgreg_t),
+	sizeof (mgreg_t),
 	16 /*FIXME make this a constant. Maybe MONO_ARCH_SIMD_VECTOR_SIZE? */
 };
 
@@ -134,12 +148,12 @@ mono_regstate_assign (MonoRegState *rs)
 	memset (rs->isymbolic, 0, MONO_MAX_IREGS * sizeof (rs->isymbolic [0]));
 	memset (rs->fsymbolic, 0, MONO_MAX_FREGS * sizeof (rs->fsymbolic [0]));
 
-	rs->symbolic [0] = rs->isymbolic;
-	rs->symbolic [1] = rs->fsymbolic;
+	rs->symbolic [MONO_REG_INT] = rs->isymbolic;
+	rs->symbolic [MONO_REG_DOUBLE] = rs->fsymbolic;
 
 #ifdef MONO_ARCH_NEED_SIMD_BANK
 	memset (rs->xsymbolic, 0, MONO_MAX_XREGS * sizeof (rs->xsymbolic [0]));
-	rs->symbolic [2] = rs->xsymbolic;
+	rs->symbolic [MONO_REG_SIMD] = rs->xsymbolic;
 #endif
 }
 
@@ -226,10 +240,12 @@ mono_regname_full (int reg, int bank)
 {
 	if (G_UNLIKELY (bank)) {
 #if MONO_ARCH_NEED_SIMD_BANK
-		if (bank == 2)
+		if (bank == MONO_REG_SIMD)
 			return mono_arch_xregname (reg);
 #endif
-		g_assert (bank == 1);
+		if (bank == MONO_REG_INT_REF || bank == MONO_REG_INT_MP)
+			return mono_arch_regname (reg);
+		g_assert (bank == MONO_REG_DOUBLE);
 		return mono_arch_fregname (reg);
 	} else {
 		return mono_arch_regname (reg);
@@ -266,7 +282,7 @@ resize_spill_info (MonoCompile *cfg, int bank)
 
 	g_assert (bank < MONO_NUM_REGBANKS);
 
-	new_info = mono_mempool_alloc (cfg->mempool, sizeof (MonoSpillInfo) * new_len);
+	new_info = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoSpillInfo) * new_len);
 	if (orig_info)
 		memcpy (new_info, orig_info, sizeof (MonoSpillInfo) * orig_len);
 	for (i = orig_len; i < new_len; ++i)
@@ -605,6 +621,8 @@ mono_print_ins_index (int i, MonoInst *ins)
 		break;
 	case OP_LIVERANGE_START:
 	case OP_LIVERANGE_END:
+	case OP_GC_LIVENESS_DEF:
+	case OP_GC_LIVENESS_USE:
 		printf (" R%d", (int)ins->inst_c1);
 		break;
 	default:
@@ -669,6 +687,17 @@ insert_after_ins (MonoBasicBlock *bb, MonoInst *ins, MonoInst **last, MonoInst*
 	*last = to_insert;
 }
 
+static inline int
+get_vreg_bank (MonoCompile *cfg, int reg, int bank)
+{
+	if (vreg_is_ref (cfg, reg))
+		return MONO_REG_INT_REF;
+	else if (vreg_is_mp (cfg, reg))
+		return MONO_REG_INT_MP;
+	else
+		return bank;
+}
+
 /*
  * Force the spilling of the variable in the symbolic register 'reg', and free 
  * the hreg it was assigned to.
@@ -700,7 +729,7 @@ spill_vreg (MonoCompile *cfg, MonoBasicBlock *bb, MonoInst **last, MonoInst *ins
 	MONO_INST_NEW (cfg, load, regbank_load_ops [bank]);
 	load->dreg = sel;
 	load->inst_basereg = cfg->frame_reg;
-	load->inst_offset = mono_spillvar_offset (cfg, spill, bank);
+	load->inst_offset = mono_spillvar_offset (cfg, spill, get_vreg_bank (cfg, reg, bank));
 	insert_after_ins (bb, ins, last, load);
 	DEBUG (printf ("SPILLED LOAD (%d at 0x%08lx(%%ebp)) R%d (freed %s)\n", spill, (long)load->inst_offset, i, mono_regname_full (sel, bank)));
 	if (G_UNLIKELY (bank))
@@ -791,7 +820,7 @@ get_register_spilling (MonoCompile *cfg, MonoBasicBlock *bb, MonoInst **last, Mo
 	MONO_INST_NEW (cfg, load, regbank_load_ops [bank]);
 	load->dreg = sel;
 	load->inst_basereg = cfg->frame_reg;
-	load->inst_offset = mono_spillvar_offset (cfg, spill, bank);
+	load->inst_offset = mono_spillvar_offset (cfg, spill, get_vreg_bank (cfg, i, bank));
 	insert_after_ins (bb, ins, last, load);
 	DEBUG (printf ("\tSPILLED LOAD (%d at 0x%08lx(%%ebp)) R%d (freed %s)\n", spill, (long)load->inst_offset, i, mono_regname_full (sel, bank)));
 	if (G_UNLIKELY (bank))
@@ -812,7 +841,7 @@ static void
 free_up_hreg (MonoCompile *cfg, MonoBasicBlock *bb, MonoInst **last, MonoInst *ins, int hreg, int bank)
 {
 	if (G_UNLIKELY (bank)) {
-		if (!(cfg->rs->free_mask [1] & (regmask (hreg)))) {
+		if (!(cfg->rs->free_mask [bank] & (regmask (hreg)))) {
 			bank = translate_bank (cfg->rs, bank, hreg);
 			DEBUG (printf ("\tforced spill of R%d\n", cfg->rs->symbolic [bank] [hreg]));
 			spill_vreg (cfg, bb, last, ins, cfg->rs->symbolic [bank] [hreg], bank);
@@ -844,10 +873,24 @@ create_copy_ins (MonoCompile *cfg, MonoBasicBlock *bb, MonoInst **last, int dest
 	return copy;
 }
 
-static MonoInst*
-create_spilled_store (MonoCompile *cfg, MonoBasicBlock *bb, int spill, int reg, int prev_reg, MonoInst **last, MonoInst *ins, int bank)
+static inline const char*
+regbank_to_string (int bank)
 {
-	MonoInst *store;
+	if (bank == MONO_REG_INT_REF)
+		return "REF ";
+	else if (bank == MONO_REG_INT_MP)
+		return "MP ";
+	else
+		return "";
+}
+
+static void
+create_spilled_store (MonoCompile *cfg, MonoBasicBlock *bb, int spill, int reg, int prev_reg, MonoInst **last, MonoInst *ins, MonoInst *insert_before, int bank)
+{
+	MonoInst *store, *def;
+	
+	bank = get_vreg_bank (cfg, prev_reg, bank);
+
 	MONO_INST_NEW (cfg, store, regbank_store_ops [bank]);
 	store->sreg1 = reg;
 	store->inst_destbasereg = cfg->frame_reg;
@@ -855,9 +898,20 @@ create_spilled_store (MonoCompile *cfg, MonoBasicBlock *bb, int spill, int reg,
 	if (ins) {
 		mono_bblock_insert_after_ins (bb, ins, store);
 		*last = store;
+	} else if (insert_before) {
+		insert_before_ins (bb, insert_before, store);
+	} else {
+		g_assert_not_reached ();
+	}
+	DEBUG (printf ("\t%sSPILLED STORE (%d at 0x%08lx(%%ebp)) R%d (from %s)\n", regbank_to_string (bank), spill, (long)store->inst_offset, prev_reg, mono_regname_full (reg, bank)));
+
+	if (((bank == MONO_REG_INT_REF) || (bank == MONO_REG_INT_MP)) && cfg->compute_gc_maps) {
+		g_assert (prev_reg != -1);
+		MONO_INST_NEW (cfg, def, OP_GC_SPILL_SLOT_LIVENESS_DEF);
+		def->inst_c0 = spill;
+		def->inst_c1 = bank;
+		mono_bblock_insert_after_ins (bb, store, def);
 	}
-	DEBUG (printf ("\tSPILLED STORE (%d at 0x%08lx(%%ebp)) R%d (from %s)\n", spill, (long)store->inst_offset, prev_reg, mono_regname_full (reg, bank)));
-	return store;
 }
 
 /* flags used in reginfo->flags */
@@ -988,7 +1042,7 @@ mono_local_regalloc (MonoCompile *cfg, MonoBasicBlock *bb)
 	int fpstack [8];
 	int sp = 0;
 #endif
-	int num_sregs;
+	int num_sregs = 0;
 	int sregs [MONO_MAX_SRC_REGS];
 
 	if (!bb->code)
@@ -1085,7 +1139,7 @@ mono_local_regalloc (MonoCompile *cfg, MonoBasicBlock *bb)
 		local_copy_prop (cfg, ins);*/
 
 	i = 1;
-	DEBUG (printf ("\nLOCAL REGALLOC: BASIC BLOCK %d:\n", bb->block_num));
+	DEBUG (printf ("\nLOCAL REGALLOC BLOCK %d:\n", bb->block_num));
 	/* forward pass on the instructions to collect register liveness info */
 	MONO_BB_FOR_EACH_INS (bb, ins) {
 		spec = ins_get_spec (ins->opcode);
@@ -1421,13 +1475,11 @@ mono_local_regalloc (MonoCompile *cfg, MonoBasicBlock *bb)
 
 				if (need_assign) {
 					if (rs->vassign [sreg] < -1) {
-						MonoInst *store;
 						int spill;
 
 						/* Need to emit a spill store */
 						spill = - rs->vassign [sreg] - 1;
-						store = create_spilled_store (cfg, bb, spill, dest_sreg, sreg, tmp, NULL, bank);
-						insert_before_ins (bb, ins, store);
+						create_spilled_store (cfg, bb, spill, dest_sreg, sreg, tmp, NULL, ins, bank);
 					}
 					/* force-set sreg2 */
 					assign_reg (cfg, rs, sregs [j], dest_sreg, 0);
@@ -1517,7 +1569,7 @@ mono_local_regalloc (MonoCompile *cfg, MonoBasicBlock *bb)
 				val = alloc_reg (cfg, bb, tmp, ins, dreg_mask, ins->dreg, &reginfo [ins->dreg], bank);
 				assign_reg (cfg, rs, ins->dreg, val, bank);
 				if (spill)
-					create_spilled_store (cfg, bb, spill, val, prev_dreg, tmp, ins, bank);
+					create_spilled_store (cfg, bb, spill, val, prev_dreg, tmp, ins, NULL, bank);
 			}
 
 			DEBUG (printf ("\tassigned dreg %s to dest R%d\n", mono_regname_full (val, bank), ins->dreg));
@@ -1547,7 +1599,7 @@ mono_local_regalloc (MonoCompile *cfg, MonoBasicBlock *bb)
 				if (val < 0)
 					val = get_register_spilling (cfg, bb, tmp, ins, mask, reg2, bank);
 				if (spill)
-					create_spilled_store (cfg, bb, spill, val, reg2, tmp, ins, bank);
+					create_spilled_store (cfg, bb, spill, val, reg2, tmp, ins, NULL, bank);
 			}
 			else {
 				if (! (mask & (regmask (val)))) {
@@ -1848,12 +1900,11 @@ mono_local_regalloc (MonoCompile *cfg, MonoBasicBlock *bb)
 				DEBUG (printf ("\tassigned sreg1 %s to R%d\n", mono_regname_full (val, bank), sregs [0]));
 
 				if (spill) {
-					MonoInst *store = create_spilled_store (cfg, bb, spill, val, prev_sregs [0], tmp, NULL, bank);
 					/*
 					 * Need to insert before the instruction since it can
 					 * overwrite sreg1.
 					 */
-					insert_before_ins (bb, ins, store);
+					create_spilled_store (cfg, bb, spill, val, prev_sregs [0], tmp, NULL, ins, bank);
 				}
 			}
 			else if ((dest_sregs [0] != -1) && (dest_sregs [0] != val)) {
@@ -2015,12 +2066,11 @@ mono_local_regalloc (MonoCompile *cfg, MonoBasicBlock *bb)
 					assign_reg (cfg, rs, sregs [j], val, bank);
 					DEBUG (printf ("\tassigned sreg%d %s to R%d\n", j + 1, mono_regname_full (val, bank), sregs [j]));
 					if (spill) {
-						MonoInst *store = create_spilled_store (cfg, bb, spill, val, prev_sregs [j], tmp, NULL, bank);
 						/*
 						 * Need to insert before the instruction since it can
 						 * overwrite sreg2.
 						 */
-						insert_before_ins (bb, ins, store);
+						create_spilled_store (cfg, bb, spill, val, sregs [j], tmp, NULL, ins, bank);
 					}
 				}
 				sregs [j] = val;
@@ -2378,7 +2428,9 @@ mono_opcode_to_type (int opcode, int cmp_opcode)
 		switch (cmp_opcode) {
 		case OP_ICOMPARE:
 		case OP_ICOMPARE_IMM:
+#if !defined(__ia64__)
 		case OP_LCOMPARE_IMM:
+#endif
 			return CMP_TYPE_I;
 		default:
 			return CMP_TYPE_L;
@@ -2464,6 +2516,8 @@ mono_peephole_ins (MonoBasicBlock *bb, MonoInst *ins)
 		 * OP_STORE_MEMBASE_REG reg1, offset(basereg)
 		 * OP_MOVE reg1, reg2
 		 */
+		if (last_ins && last_ins->opcode == OP_GC_LIVENESS_DEF)
+			last_ins = last_ins->prev;
 		if (last_ins &&
 			(((ins->opcode == OP_LOADI4_MEMBASE) && (last_ins->opcode == OP_STOREI4_MEMBASE_REG)) ||
 			 ((ins->opcode == OP_LOAD_MEMBASE) && (last_ins->opcode == OP_STORE_MEMBASE_REG))) &&
diff --git a/mono/mini/mini-exceptions.c b/mono/mini/mini-exceptions.c
index fd16f3a..565b2a1 100644
--- a/mono/mini/mini-exceptions.c
+++ b/mono/mini/mini-exceptions.c
@@ -43,6 +43,7 @@
 #include <mono/metadata/gc-internal.h>
 #include <mono/metadata/mono-debug.h>
 #include <mono/metadata/profiler.h>
+#include <mono/metadata/mono-endian.h>
 #include <mono/utils/mono-mmap.h>
 
 #include "mini.h"
@@ -63,7 +64,6 @@ static gpointer restore_stack_protection_tramp = NULL;
 
 static void try_more_restore (void);
 static void restore_stack_protection (void);
-static void mono_walk_stack_full (MonoDomain *domain, MonoJitTlsData *jit_tls, MonoContext *start_ctx, MonoStackFrameWalk func, gboolean use_new_ctx, gpointer user_data);
 
 void
 mono_exceptions_init (void)
@@ -170,7 +170,6 @@ is_address_protected (MonoJitInfo *ji, MonoJitExceptionInfo *ei, gpointer ip)
 	guint32 offset;
 	guint16 clause;
 
-	/*FIXME check if under s390 it should be ei->try_start >= ip*/
 	if (ei->try_start > ip || ip >= ei->try_end)
 		return FALSE;
 
@@ -190,16 +189,13 @@ is_address_protected (MonoJitInfo *ji, MonoJitExceptionInfo *ei, gpointer ip)
 	return TRUE;
 }
 
-#ifdef MONO_ARCH_HAVE_FIND_JIT_INFO_EXT
-
 /*
- * find_jit_info_no_ext:
+ * find_jit_info:
  *
- * If the target has the find_jit_info_ext version of this function, define the old
- * version here which translates between the old and new APIs.
+ * Translate between the mono_arch_find_jit_info function and the old API.
  */
 static MonoJitInfo *
-find_jit_info_no_ext (MonoDomain *domain, MonoJitTlsData *jit_tls, MonoJitInfo *res, MonoJitInfo *prev_ji, MonoContext *ctx, 
+find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls, MonoJitInfo *res, MonoJitInfo *prev_ji, MonoContext *ctx, 
 			   MonoContext *new_ctx, MonoLMF **lmf, gboolean *managed)
 {
 	StackFrameInfo frame;
@@ -216,7 +212,7 @@ find_jit_info_no_ext (MonoDomain *domain, MonoJitTlsData *jit_tls, MonoJitInfo *
 	if (managed)
 		*managed = FALSE;
 
-	err = mono_arch_find_jit_info_ext (domain, jit_tls, ji, ctx, new_ctx, lmf, &frame);
+	err = mono_arch_find_jit_info (domain, jit_tls, ji, ctx, new_ctx, lmf, NULL, &frame);
 	if (!err)
 		return (gpointer)-1;
 
@@ -225,7 +221,7 @@ find_jit_info_no_ext (MonoDomain *domain, MonoJitTlsData *jit_tls, MonoJitInfo *
 	case FRAME_TYPE_MANAGED:
 		if (managed)
 			*managed = TRUE;
-		return ji;
+		return frame.ji;
 	case FRAME_TYPE_MANAGED_TO_NATIVE:
 		if (frame.ji)
 			return frame.ji;
@@ -241,7 +237,7 @@ find_jit_info_no_ext (MonoDomain *domain, MonoJitTlsData *jit_tls, MonoJitInfo *
 		 * The normal exception handling code can't handle this frame, so just
 		 * skip it.
 		 */
-		ji = find_jit_info_no_ext (domain, jit_tls, res, NULL, new_ctx, &tmp_ctx, lmf, managed);
+		ji = find_jit_info (domain, jit_tls, res, NULL, new_ctx, &tmp_ctx, lmf, managed);
 		memcpy (new_ctx, &tmp_ctx, sizeof (MonoContext));
 		return ji;
 	}
@@ -251,8 +247,6 @@ find_jit_info_no_ext (MonoDomain *domain, MonoJitTlsData *jit_tls, MonoJitInfo *
 	}
 }
 
-#endif
-
 /* mono_find_jit_info:
  *
  * This function is used to gather information from @ctx. It return the 
@@ -280,11 +274,7 @@ mono_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls, MonoJitInfo *re
 	if (managed)
 		*managed = FALSE;
 
-#ifdef MONO_ARCH_HAVE_FIND_JIT_INFO_EXT
-	ji = find_jit_info_no_ext (domain, jit_tls, res, prev_ji, ctx, new_ctx, lmf, &managed2);
-#else
-	ji = mono_arch_find_jit_info (domain, jit_tls, res, prev_ji, ctx, new_ctx, lmf, &managed2);
-#endif
+	ji = find_jit_info (domain, jit_tls, res, prev_ji, ctx, new_ctx, lmf, &managed2);
 
 	if (ji == (gpointer)-1)
 		return ji;
@@ -309,7 +299,7 @@ mono_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls, MonoJitInfo *re
 			*native_offset = offset;
 
 		if (managed)
-			if (!ji->method->wrapper_type)
+			if (!ji->method->wrapper_type || ji->method->wrapper_type == MONO_WRAPPER_DYNAMIC_METHOD)
 				*managed = TRUE;
 
 		if (trace)
@@ -325,18 +315,25 @@ mono_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls, MonoJitInfo *re
 	return ji;
 }
 
-#ifdef MONO_ARCH_HAVE_FIND_JIT_INFO_EXT
-
 /*
  * mono_find_jit_info_ext:
  *
  *   A version of mono_find_jit_info which returns all data in the StackFrameInfo
  * structure.
+ * A note about frames of type FRAME_TYPE_MANAGED_TO_NATIVE:
+ * - These frames are used to mark managed-to-native transitions, so CTX will refer to native
+ * code, and new_ctx will refer to the last managed frame. The caller should unwind once more
+ * to obtain the last managed frame.
+ * If SAVE_LOCATIONS is not NULL, it should point to an array of size MONO_MAX_IREGS.
+ * On return, it will be filled with the locations where callee saved registers are saved
+ * by the current frame. This is returned outside of StackFrameInfo because it can be
+ * quite large on some platforms.
  */
 gboolean
 mono_find_jit_info_ext (MonoDomain *domain, MonoJitTlsData *jit_tls, 
 						MonoJitInfo *prev_ji, MonoContext *ctx,
 						MonoContext *new_ctx, char **trace, MonoLMF **lmf,
+						mgreg_t **save_locations,
 						StackFrameInfo *frame)
 {
 	gboolean err;
@@ -356,15 +353,30 @@ mono_find_jit_info_ext (MonoDomain *domain, MonoJitTlsData *jit_tls,
 	if (!target_domain)
 		target_domain = domain;
 
-	err = mono_arch_find_jit_info_ext (target_domain, jit_tls, ji, ctx, new_ctx, lmf, frame);
+	if (save_locations)
+		memset (save_locations, 0, MONO_MAX_IREGS * sizeof (mgreg_t*));
+
+	err = mono_arch_find_jit_info (target_domain, jit_tls, ji, ctx, new_ctx, lmf, save_locations, frame);
 	if (!err)
 		return FALSE;
 
+	if (frame->type == FRAME_TYPE_MANAGED_TO_NATIVE) {
+		/*
+		 * This type of frame is just a marker, the caller should unwind once more to get the
+		 * last managed frame.
+		 */
+		frame->ji = NULL;
+		frame->method = NULL;
+	}
+
 	frame->native_offset = -1;
 	frame->domain = target_domain;
 
 	ji = frame->ji;
 
+	if (frame->type == FRAME_TYPE_MANAGED)
+		frame->method = ji->method;
+
 	if (ji && (frame->managed || ji->method->wrapper_type)) {
 		const char *real_ip, *start;
 
@@ -393,8 +405,6 @@ mono_find_jit_info_ext (MonoDomain *domain, MonoJitTlsData *jit_tls,
 	return TRUE;
 }
 
-#endif /* MONO_ARCH_HAVE_FIND_JIT_INFO_EXT */
-
 static gpointer
 get_generic_info_from_stack_frame (MonoJitInfo *ji, MonoContext *ctx)
 {
@@ -454,7 +464,7 @@ get_generic_context_from_stack_frame (MonoJitInfo *ji, gpointer generic_info)
 		method_container_class = ji->method->klass;
 
 	/* class might refer to a subclass of ji->method's class */
-	while (class->generic_class && class->generic_class->container_class != method_container_class) {
+	while (!(class == ji->method->klass || (class->generic_class && class->generic_class->container_class == method_container_class))) {
 		class = class->parent;
 		g_assert (class);
 	}
@@ -606,127 +616,95 @@ ves_icall_get_trace (MonoException *exc, gint32 skip, MonoBoolean need_file_info
 	return res;
 }
 
-/**
- * mono_walk_stack:
- * @domain: starting appdomain
- * @jit_tls: JIT data for the thread
- * @start_ctx: starting state of the stack frame
- * @func: callback to call for each stack frame
- * @user_data: data passed to the callback
- *
- * This function walks the stack of a thread, starting from the state
- * represented by jit_tls and start_ctx. For each frame the callback
- * function is called with the relevant info. The walk ends when no more
- * managed stack frames are found or when the callback returns a TRUE value.
- * Note that the function can be used to walk the stack of a thread 
- * different from the current.
- */
-void
-mono_walk_stack (MonoDomain *domain, MonoJitTlsData *jit_tls, MonoContext *start_ctx, MonoStackFrameWalk func, gpointer user_data)
-{
-	mono_walk_stack_full (domain, jit_tls, start_ctx, func, TRUE, user_data);
-}
+typedef struct {
+	MonoStackWalk func;
+	gpointer user_data;
+} StackWalkUserData;
 
-static void
-mono_walk_stack_full (MonoDomain *domain, MonoJitTlsData *jit_tls, MonoContext *start_ctx, MonoStackFrameWalk func, gboolean use_new_ctx, gpointer user_data)
+static gboolean
+stack_walk_adapter (StackFrameInfo *frame, MonoContext *ctx, gpointer data)
 {
-	MonoLMF *lmf = mono_get_lmf ();
-	MonoJitInfo *ji, rji;
-	gint native_offset;
-	gboolean managed;
-	MonoContext ctx, new_ctx;
+	StackWalkUserData *d = data;
 
-	ctx = *start_ctx;
-
-	while (MONO_CONTEXT_GET_SP (&ctx) < jit_tls->end_of_stack) {
-		/* 
-		 * FIXME: mono_find_jit_info () will need to be able to return a different
-		 * MonoDomain when apddomain transitions are found on the stack.
-		 */
-		ji = mono_find_jit_info (domain, jit_tls, &rji, NULL, &ctx, &new_ctx, NULL, &lmf, &native_offset, &managed);
-		if (!ji || ji == (gpointer)-1)
-			return;
-
-		if (func (domain, use_new_ctx ? &new_ctx : &ctx, ji, user_data))
-			return;
-
-		ctx = new_ctx;
+	switch (frame->type) {
+	case FRAME_TYPE_DEBUGGER_INVOKE:
+	case FRAME_TYPE_MANAGED_TO_NATIVE:
+		return FALSE;
+	case FRAME_TYPE_MANAGED:
+		g_assert (frame->ji);
+		return d->func (frame->ji->method, frame->native_offset, frame->il_offset, frame->managed, d->user_data);
+		break;
+	default:
+		g_assert_not_reached ();
+		return FALSE;
 	}
 }
 
 void
-mono_jit_walk_stack_from_ctx (MonoStackWalk func, MonoContext *start_ctx, gboolean do_il_offset, gpointer user_data)
+mono_jit_walk_stack_from_ctx (MonoStackWalk func, MonoContext *start_ctx, MonoUnwindOptions unwind_options, gpointer user_data)
 {
-	MonoDomain *domain = mono_domain_get ();
-	MonoJitTlsData *jit_tls = TlsGetValue (mono_jit_tls_id);
-	MonoLMF *lmf = mono_get_lmf ();
-	MonoJitInfo *ji, rji;
-	gint native_offset, il_offset;
-	gboolean managed;
-	MonoContext ctx, new_ctx;
-
-	MONO_ARCH_CONTEXT_DEF
-
-	mono_arch_flush_register_windows ();
-
-	if (start_ctx) {
-		memcpy (&ctx, start_ctx, sizeof (MonoContext));
-	} else {
-#ifdef MONO_INIT_CONTEXT_FROM_CURRENT
-	MONO_INIT_CONTEXT_FROM_CURRENT (&ctx);
-#else
-    MONO_INIT_CONTEXT_FROM_FUNC (&ctx, mono_jit_walk_stack_from_ctx);
-#endif
-	}
-
-	while (MONO_CONTEXT_GET_SP (&ctx) < jit_tls->end_of_stack) {
-		ji = mono_find_jit_info (domain, jit_tls, &rji, NULL, &ctx, &new_ctx, NULL, &lmf, &native_offset, &managed);
-		g_assert (ji);
-
-		if (ji == (gpointer)-1)
-			return;
+	StackWalkUserData d;
 
-		if (do_il_offset) {
-			MonoDebugSourceLocation *source;
-
-			source = mono_debug_lookup_source_location (ji->method, native_offset, domain);
-			il_offset = source ? source->il_offset : -1;
-			mono_debug_free_source_location (source);
-		} else
-			il_offset = -1;
+	d.func = func;
+	d.user_data = user_data;
 
-		if (func (ji->method, native_offset, il_offset, managed, user_data))
-			return;
-		
-		ctx = new_ctx;
-	}
+	mono_walk_stack (stack_walk_adapter, mono_domain_get (), start_ctx, unwind_options, mono_thread_internal_current (), mono_get_lmf (), &d);
 }
 
 void
 mono_jit_walk_stack (MonoStackWalk func, gboolean do_il_offset, gpointer user_data)
 {
-	mono_jit_walk_stack_from_ctx (func, NULL, do_il_offset, user_data);
+	MonoJitTlsData *jit_tls = TlsGetValue (mono_jit_tls_id);
+	MonoUnwindOptions unwind_options = do_il_offset ? MONO_UNWIND_LOOKUP_ALL : MONO_UNWIND_DEFAULT;
+	if (jit_tls && jit_tls->orig_ex_ctx_set)
+		mono_jit_walk_stack_from_ctx (func, &jit_tls->orig_ex_ctx, unwind_options, user_data);
+	else
+		mono_jit_walk_stack_from_ctx (func, NULL, unwind_options, user_data);
 }
 
+/**
+ * mono_walk_stack:
+ * @func: callback to call for each stack frame
+ * @domain: starting appdomain, can be NULL to use the current domain
+ * @unwind_options: what extra information the unwinder should gather
+ * @start_ctx: starting state of the stack walk, can be NULL.
+ * @thread: the thread whose stack to walk, can be NULL to use the current thread
+ * @lmf: the LMF of @thread, can be NULL to use the LMF of the current thread
+ * @user_data: data passed to the callback
+ *
+ * This function walks the stack of a thread, starting from the state
+ * represented by start_ctx. For each frame the callback
+ * function is called with the relevant info. The walk ends when no more
+ * managed stack frames are found or when the callback returns a TRUE value.
+ */
 void
-mono_jit_walk_stack_from_ctx_in_thread (MonoJitStackWalk func, MonoDomain *domain, MonoContext *start_ctx, gboolean do_il_offset, MonoInternalThread *thread, MonoLMF *lmf, gpointer user_data)
+mono_walk_stack (MonoJitStackWalk func, MonoDomain *domain, MonoContext *start_ctx, MonoUnwindOptions unwind_options, MonoInternalThread *thread, MonoLMF *lmf, gpointer user_data)
 {
-	MonoJitTlsData *jit_tls = thread->jit_data;
+	MonoJitTlsData *jit_tls;
 	gint il_offset;
 	MonoContext ctx, new_ctx;
 	StackFrameInfo frame;
-#ifndef MONO_ARCH_HAVE_FIND_JIT_INFO_EXT
-	gint native_offset;
-	gboolean managed;
-	MonoJitInfo *ji, rji;
-#else
 	gboolean res;
-#endif
 	
 	MONO_ARCH_CONTEXT_DEF
 
 	mono_arch_flush_register_windows ();
 
+	if (!thread) {
+		thread = mono_thread_internal_current ();
+		lmf = mono_get_lmf ();
+	}
+
+	/* A NULL thread->jit_data can happen in a small window during thread startup: the thread
+	 * allocation happens, we do a stack walk (for example with
+	 * --profile=log:nocalls and xsp) but the jit is not fully setup for the thread
+	 *  yet. Of course there are no stack frames, so just returning is ok.
+	 *  A NULL thread can happen during domain unload with the same test.
+	 */
+	if (!thread || !thread->jit_data)
+		return;
+	jit_tls = thread->jit_data;
+
 	if (start_ctx) {
 		memcpy (&ctx, start_ctx, sizeof (MonoContext));
 	} else {
@@ -740,23 +718,11 @@ mono_jit_walk_stack_from_ctx_in_thread (MonoJitStackWalk func, MonoDomain *domai
 
 	while (MONO_CONTEXT_GET_SP (&ctx) < jit_tls->end_of_stack) {
 		frame.lmf = lmf;
-#ifdef MONO_ARCH_HAVE_FIND_JIT_INFO_EXT
-		res = mono_find_jit_info_ext (domain, jit_tls, NULL, &ctx, &new_ctx, NULL, &lmf, &frame);
+		res = mono_find_jit_info_ext (domain, jit_tls, NULL, &ctx, &new_ctx, NULL, &lmf, NULL, &frame);
 		if (!res)
 			return;
-#else
-		ji = mono_find_jit_info (domain, jit_tls, &rji, NULL, &ctx, &new_ctx, NULL, &lmf, &native_offset, &managed);
-		g_assert (ji);
-		frame.type = FRAME_TYPE_MANAGED;
-		frame.ji = ji;
-		frame.managed = managed;
-		frame.native_offset = native_offset;
-
-		if (ji == (gpointer)-1)
-			return;
-#endif
 
-		if (do_il_offset && frame.ji) {
+		if ((unwind_options & MONO_UNWIND_LOOKUP_IL_OFFSET) && frame.ji) {
 			MonoDebugSourceLocation *source;
 
 			source = mono_debug_lookup_source_location (frame.ji->method, frame.native_offset, domain);
@@ -767,14 +733,7 @@ mono_jit_walk_stack_from_ctx_in_thread (MonoJitStackWalk func, MonoDomain *domai
 
 		frame.il_offset = il_offset;
 
-		if (frame.ji) {
-			if (frame.ji->has_generic_jit_info && frame.type == FRAME_TYPE_MANAGED_TO_NATIVE) {
-				/*
-				 * FIXME: These frames show up twice, and ctx could refer to native code.
-				 */
-				ctx = new_ctx;
-				continue;
-			}
+		if ((unwind_options & MONO_UNWIND_LOOKUP_ACTUAL_METHOD) && frame.ji) {
 			frame.actual_method = get_method_from_stack_frame (frame.ji, get_generic_info_from_stack_frame (frame.ji, &ctx));
 		} else {
 			frame.actual_method = frame.method;
@@ -787,7 +746,6 @@ mono_jit_walk_stack_from_ctx_in_thread (MonoJitStackWalk func, MonoDomain *domai
 	}
 }
 
-
 MonoBoolean
 ves_icall_get_frame_info (gint32 skip, MonoBoolean need_file_info, 
 			  MonoReflectionMethod **method, 
@@ -797,10 +755,12 @@ ves_icall_get_frame_info (gint32 skip, MonoBoolean need_file_info,
 	MonoDomain *domain = mono_domain_get ();
 	MonoJitTlsData *jit_tls = TlsGetValue (mono_jit_tls_id);
 	MonoLMF *lmf = mono_get_lmf ();
-	MonoJitInfo *ji, rji;
-	MonoContext ctx, new_ctx, ji_ctx;
+	MonoJitInfo *ji = NULL;
+	MonoContext ctx, new_ctx;
 	MonoDebugSourceLocation *location;
-	MonoMethod *last_method = NULL, *actual_method;
+	MonoMethod *actual_method;
+	StackFrameInfo frame;
+	gboolean res;
 
 	MONO_ARCH_CONTEXT_DEF;
 
@@ -812,19 +772,18 @@ ves_icall_get_frame_info (gint32 skip, MonoBoolean need_file_info,
 	MONO_INIT_CONTEXT_FROM_FUNC (&ctx, ves_icall_get_frame_info);
 #endif
 
+	new_ctx = ctx;
 	do {
-		ji_ctx = ctx;
-		ji = mono_find_jit_info (domain, jit_tls, &rji, NULL, &ctx, &new_ctx, NULL, &lmf, (int*) native_offset, NULL);
 		ctx = new_ctx;
+		res = mono_find_jit_info_ext (domain, jit_tls, NULL, &ctx, &new_ctx, NULL, &lmf, NULL, &frame);
+		if (!res)
+			return FALSE;
 
-		if (ji && ji != (gpointer)-1 &&
-				MONO_CONTEXT_GET_IP (&ctx) >= ji->code_start &&
-				(guint8*)MONO_CONTEXT_GET_IP (&ctx) < (guint8*)ji->code_start + ji->code_size) {
-			ji_ctx = ctx;
-		}
+		if (frame.type == FRAME_TYPE_MANAGED_TO_NATIVE || frame.type == FRAME_TYPE_DEBUGGER_INVOKE)
+			continue;
 
-		if (!ji || ji == (gpointer)-1 || MONO_CONTEXT_GET_SP (&ctx) >= jit_tls->end_of_stack)
-			return FALSE;
+		ji = frame.ji;
+		*native_offset = frame.native_offset;
 
 		/* skip all wrappers ??*/
 		if (ji->method->wrapper_type == MONO_WRAPPER_RUNTIME_INVOKE ||
@@ -835,22 +794,10 @@ ves_icall_get_frame_info (gint32 skip, MonoBoolean need_file_info,
 			ji->method->wrapper_type == MONO_WRAPPER_NATIVE_TO_MANAGED)
 			continue;
 
-		if (ji->method->wrapper_type == MONO_WRAPPER_MANAGED_TO_NATIVE && ji->method == last_method) {
-			/*
-			 * FIXME: Native-to-managed wrappers sometimes show up twice.
-			 * Probably the whole mono_find_jit_info () stuff needs to be fixed so this 
-			 * isn't needed.
-			 */
-			continue;
-		}
-
-		last_method = ji->method;
-
 		skip--;
-
 	} while (skip >= 0);
 
-	actual_method = get_method_from_stack_frame (ji, get_generic_info_from_stack_frame (ji, &ji_ctx));
+	actual_method = get_method_from_stack_frame (ji, get_generic_info_from_stack_frame (ji, &ctx));
 
 	mono_gc_wbarrier_generic_store (method, (MonoObject*) mono_method_get_object (domain, actual_method, NULL));
 
@@ -882,9 +829,13 @@ typedef struct {
 } MonoFrameSecurityInfo;
 
 static gboolean
-callback_get_first_frame_security_info (MonoDomain *domain, MonoContext *ctx, MonoJitInfo *ji, gpointer data)
+callback_get_first_frame_security_info (StackFrameInfo *frame, MonoContext *ctx, gpointer data)
 {
 	MonoFrameSecurityInfo *si = (MonoFrameSecurityInfo*) data;
+	MonoJitInfo *ji = frame->ji;
+
+	if (!ji)
+		return FALSE;
 
 	/* FIXME: skip all wrappers ?? probably not - case by case testing is required */
 	if (ji->method->wrapper_type == MONO_WRAPPER_RUNTIME_INVOKE ||
@@ -900,7 +851,7 @@ callback_get_first_frame_security_info (MonoDomain *domain, MonoContext *ctx, Mo
 		return FALSE;
 	}
 
-	si->frame = mono_declsec_create_frame (domain, ji);
+	si->frame = mono_declsec_create_frame (frame->domain, ji);
 
 	/* Stop - we only want the first frame (e.g. LinkDemand and InheritanceDemand) */
 	return TRUE;
@@ -919,25 +870,12 @@ MonoSecurityFrame*
 ves_icall_System_Security_SecurityFrame_GetSecurityFrame (gint32 skip)
 {
 	MonoDomain *domain = mono_domain_get ();
-	MonoJitTlsData *jit_tls = TlsGetValue (mono_jit_tls_id);
 	MonoFrameSecurityInfo si;
-	MonoContext ctx;
-
-	MONO_ARCH_CONTEXT_DEF
-
-#ifdef MONO_INIT_CONTEXT_FROM_CURRENT
-	MONO_INIT_CONTEXT_FROM_CURRENT (&ctx);
-#else
-	MONO_INIT_CONTEXT_FROM_FUNC (&ctx, ves_icall_System_Security_SecurityFrame_GetSecurityFrame);
-#endif
-
-#if	defined(__ia64__) || defined(__s390__) || defined(__s390x__)
-	skip--;
-#endif
 
 	si.skips = skip;
 	si.frame = NULL;
-	mono_walk_stack (domain, jit_tls, &ctx, callback_get_first_frame_security_info, (gpointer)&si);
+
+	mono_walk_stack (callback_get_first_frame_security_info, domain, NULL, MONO_UNWIND_DEFAULT, NULL, NULL, &si);
 
 	return (si.skips == 0) ? si.frame : NULL;
 }
@@ -966,9 +904,13 @@ grow_array (MonoSecurityStack *stack)
 }
 
 static gboolean
-callback_get_stack_frames_security_info (MonoDomain *domain, MonoContext *ctx, MonoJitInfo *ji, gpointer data)
+callback_get_stack_frames_security_info (StackFrameInfo *frame, MonoContext *ctx, gpointer data)
 {
 	MonoSecurityStack *ss = (MonoSecurityStack*) data;
+	MonoJitInfo *ji = frame->ji;
+
+	if (!ji)
+		return FALSE;
 
 	/* FIXME: skip all wrappers ?? probably not - case by case testing is required */
 	if (ji->method->wrapper_type == MONO_WRAPPER_RUNTIME_INVOKE ||
@@ -987,7 +929,7 @@ callback_get_stack_frames_security_info (MonoDomain *domain, MonoContext *ctx, M
 	if (ss->count == ss->maximum)
 		grow_array (ss);
 
-	mono_array_setref (ss->stack, ss->count++, mono_declsec_create_frame (domain, ji));
+	mono_array_setref (ss->stack, ss->count++, mono_declsec_create_frame (frame->domain, ji));
 
 	/* continue down the stack */
 	return FALSE;
@@ -1025,17 +967,7 @@ MonoArray*
 ves_icall_System_Security_SecurityFrame_GetSecurityStack (gint32 skip)
 {
 	MonoDomain *domain = mono_domain_get ();
-	MonoJitTlsData *jit_tls = TlsGetValue (mono_jit_tls_id);
 	MonoSecurityStack ss;
-	MonoContext ctx;
-
-	MONO_ARCH_CONTEXT_DEF
-
-#ifdef MONO_INIT_CONTEXT_FROM_CURRENT
-	MONO_INIT_CONTEXT_FROM_CURRENT (&ctx);
-#else
-	MONO_INIT_CONTEXT_FROM_FUNC (&ctx, ves_icall_System_Security_SecurityFrame_GetSecurityStack);
-#endif
 
 #if	defined(__ia64__) || defined(__s390__) || defined(__s390x__)
 	skip--;
@@ -1045,7 +977,7 @@ ves_icall_System_Security_SecurityFrame_GetSecurityStack (gint32 skip)
 	ss.count = 0;
 	ss.maximum = MONO_CAS_INITIAL_STACK_SIZE;
 	ss.stack = mono_array_new (domain, mono_defaults.runtimesecurityframe_class, ss.maximum);
-	mono_walk_stack (domain, jit_tls, &ctx, callback_get_stack_frames_security_info, (gpointer)&ss);
+	mono_walk_stack (callback_get_stack_frames_security_info, domain, NULL, MONO_UNWIND_DEFAULT, NULL, NULL, &ss);
 	/* g_warning ("STACK RESULT: %d out of %d", ss.count, ss.maximum); */
 	return ss.stack;
 }
@@ -1126,33 +1058,308 @@ mini_jit_info_table_find (MonoDomain *domain, char *addr, MonoDomain **out_domai
 	return NULL;
 }
 
+/*
+ * wrap_non_exception_throws:
+ *
+ *   Determine whenever M's assembly has a RuntimeCompatibilityAttribute with the
+ * WrapNonExceptionThrows flag set.
+ */
+static gboolean
+wrap_non_exception_throws (MonoMethod *m)
+{
+	MonoAssembly *ass = m->klass->image->assembly;
+	MonoCustomAttrInfo* attrs;
+	static MonoClass *klass;
+	int i;
+	gboolean val = FALSE;
+
+	g_assert (ass);
+	if (ass->wrap_non_exception_throws_inited)
+		return ass->wrap_non_exception_throws;
+
+	klass = mono_class_from_name_cached (mono_defaults.corlib, "System.Runtime.CompilerServices", "RuntimeCompatibilityAttribute");
+
+	attrs = mono_custom_attrs_from_assembly (ass);
+	if (attrs) {
+		for (i = 0; i < attrs->num_attrs; ++i) {
+			MonoCustomAttrEntry *attr = &attrs->attrs [i];
+			const gchar *p;
+			int len, num_named, named_type, data_type, name_len;
+			char *name;
+
+			if (!attr->ctor || attr->ctor->klass != klass)
+				continue;
+			/* Decode the RuntimeCompatibilityAttribute. See reflection.c */
+			len = attr->data_size;
+			p = (const char*)attr->data;
+			g_assert (read16 (p) == 0x0001);
+			p += 2;
+			num_named = read16 (p);
+			if (num_named != 1)
+				continue;
+			p += 2;
+			named_type = *p;
+			p ++;
+			data_type = *p;
+			p ++;
+			/* Property */
+			if (named_type != 0x54)
+				continue;
+			name_len = mono_metadata_decode_blob_size (p, &p);
+			name = g_malloc (name_len + 1);
+			memcpy (name, p, name_len);
+			name [name_len] = 0;
+			p += name_len;
+			g_assert (!strcmp (name, "WrapNonExceptionThrows"));
+			g_free (name);
+			/* The value is a BOOLEAN */
+			val = *p;
+		}
+		mono_custom_attrs_free (attrs);
+	}
+
+	ass->wrap_non_exception_throws = val;
+	mono_memory_barrier ();
+	ass->wrap_non_exception_throws_inited = TRUE;
+
+	return val;
+}
+
+#ifndef MONO_ARCH_STACK_GROWS_UP
+#define DOES_STACK_GROWS_UP 1
+#else
+#define DOES_STACK_GROWS_UP 0
+#endif
+
+/*
+ * mono_handle_exception_internal_first_pass:
+ *
+ *   The first pass of exception handling. Unwind the stack until a catch clause which can catch
+ * OBJ is found. Run the index of the filter clause which caught the exception into
+ * OUT_FILTER_IDX. Return TRUE if the exception is caught, FALSE otherwise.
+ */
+static gboolean
+mono_handle_exception_internal_first_pass (MonoContext *ctx, gpointer obj, gpointer original_ip, gint32 *out_filter_idx, MonoJitInfo **out_ji, MonoObject *non_exception)
+{
+	MonoDomain *domain = mono_domain_get ();
+	MonoJitInfo *ji;
+	static int (*call_filter) (MonoContext *, gpointer) = NULL;
+	MonoJitTlsData *jit_tls = TlsGetValue (mono_jit_tls_id);
+	MonoLMF *lmf = mono_get_lmf ();
+	MonoArray *initial_trace_ips = NULL;
+	GList *trace_ips = NULL;
+	MonoException *mono_ex;
+	gboolean stack_overflow = FALSE;
+	MonoContext initial_ctx;
+	int frame_count = 0;
+	gboolean has_dynamic_methods = FALSE;
+	gint32 filter_idx;
+	int i;
+	MonoObject *ex_obj;
+
+	g_assert (ctx != NULL);
+
+	if (obj == domain->stack_overflow_ex)
+		stack_overflow = TRUE;
+
+	mono_ex = (MonoException*)obj;
+	initial_trace_ips = mono_ex->trace_ips;
+
+	if (mono_object_isinst (obj, mono_defaults.exception_class)) {
+		mono_ex = (MonoException*)obj;
+		initial_trace_ips = mono_ex->trace_ips;
+	} else {
+		mono_ex = NULL;
+	}
+
+	if (!call_filter)
+		call_filter = mono_get_call_filter ();
+
+	g_assert (jit_tls->end_of_stack);
+	g_assert (jit_tls->abort_func);
+
+	if (out_filter_idx)
+		*out_filter_idx = -1;
+	if (out_ji)
+		*out_ji = NULL;
+	filter_idx = 0;
+	initial_ctx = *ctx;
+
+	while (1) {
+		MonoContext new_ctx;
+		guint32 free_stack;
+		int clause_index_start = 0;
+		gboolean unwind_res = TRUE;
+		
+		StackFrameInfo frame;
+
+		unwind_res = mono_find_jit_info_ext (domain, jit_tls, NULL, ctx, &new_ctx, NULL, &lmf, NULL, &frame);
+		if (unwind_res) {
+			if (frame.type == FRAME_TYPE_DEBUGGER_INVOKE || frame.type == FRAME_TYPE_MANAGED_TO_NATIVE) {
+				*ctx = new_ctx;
+				continue;
+			}
+			g_assert (frame.type == FRAME_TYPE_MANAGED);
+			ji = frame.ji;
+		}
+
+		if (!unwind_res) {
+			if (mono_ex && !initial_trace_ips) {
+				trace_ips = g_list_reverse (trace_ips);
+				MONO_OBJECT_SETREF (mono_ex, trace_ips, glist_to_array (trace_ips, mono_defaults.int_class));
+				if (has_dynamic_methods)
+					/* These methods could go away anytime, so compute the stack trace now */
+					MONO_OBJECT_SETREF (mono_ex, stack_trace, ves_icall_System_Exception_get_trace (mono_ex));
+			}
+			g_list_free (trace_ips);
+			return FALSE;
+		}
+
+		frame_count ++;
+		//printf ("M: %s %d.\n", mono_method_full_name (ji->method, TRUE), frame_count);
+
+		if (mini_get_debug_options ()->reverse_pinvoke_exceptions && ji->method->wrapper_type == MONO_WRAPPER_NATIVE_TO_MANAGED) {
+			g_error ("A native frame was found while unwinding the stack after an exception.\n"
+					 "The native frame called the managed method:\n%s\n",
+					 mono_method_full_name (ji->method, TRUE));
+		}
+
+		if (ji->method->wrapper_type != MONO_WRAPPER_RUNTIME_INVOKE && mono_ex) {
+			/* 
+			 * Avoid overwriting the stack trace if the exception is
+			 * rethrown. Also avoid giant stack traces during a stack
+			 * overflow.
+			 */
+			if (!initial_trace_ips && (frame_count < 1000)) {
+				trace_ips = g_list_prepend (trace_ips, MONO_CONTEXT_GET_IP (ctx));
+				trace_ips = g_list_prepend (trace_ips,
+											get_generic_info_from_stack_frame (ji, ctx));
+			}
+		}
+
+		if (ji->method->dynamic)
+			has_dynamic_methods = TRUE;
+
+		if (stack_overflow) {
+			if (DOES_STACK_GROWS_UP)
+				free_stack = (guint8*)(MONO_CONTEXT_GET_SP (ctx)) - (guint8*)(MONO_CONTEXT_GET_SP (&initial_ctx));
+			else
+				free_stack = (guint8*)(MONO_CONTEXT_GET_SP (&initial_ctx)) - (guint8*)(MONO_CONTEXT_GET_SP (ctx));
+		} else {
+			free_stack = 0xffffff;
+		}
+				
+		for (i = clause_index_start; i < ji->num_clauses; i++) {
+			MonoJitExceptionInfo *ei = &ji->clauses [i];
+			gboolean filtered = FALSE;
+
+			/* 
+			 * During stack overflow, wait till the unwinding frees some stack
+			 * space before running handlers/finalizers.
+			 */
+			if (free_stack <= (64 * 1024))
+				continue;
+
+			if (is_address_protected (ji, ei, MONO_CONTEXT_GET_IP (ctx))) {
+				/* catch block */
+				MonoClass *catch_class = get_exception_catch_class (ei, ji, ctx);
+
+				/*
+				 * Have to unwrap RuntimeWrappedExceptions if the
+				 * method's assembly doesn't have a RuntimeCompatibilityAttribute.
+				 */
+				if (non_exception && !wrap_non_exception_throws (ji->method))
+					ex_obj = non_exception;
+				else
+					ex_obj = obj;
+
+				if (ei->flags == MONO_EXCEPTION_CLAUSE_FILTER) {
+					mono_perfcounters->exceptions_filters++;
+					mono_debugger_call_exception_handler (ei->data.filter, MONO_CONTEXT_GET_SP (ctx), ex_obj);
+					if (mono_ex && !initial_trace_ips) {
+						trace_ips = g_list_reverse (trace_ips);
+						MONO_OBJECT_SETREF (mono_ex, trace_ips, glist_to_array (trace_ips, mono_defaults.int_class));
+
+						if (has_dynamic_methods)
+							/* These methods could go away anytime, so compute the stack trace now */
+							MONO_OBJECT_SETREF (mono_ex, stack_trace, ves_icall_System_Exception_get_trace (mono_ex));
+					}
+					g_list_free (trace_ips);
+					trace_ips = NULL;
+
+					if (ji->from_llvm) {
+#ifdef MONO_CONTEXT_SET_LLVM_EXC_REG
+						MONO_CONTEXT_SET_LLVM_EXC_REG (ctx, ex_obj);
+#else
+						g_assert_not_reached ();
+#endif
+					} else {
+						/* store the exception object in bp + ei->exvar_offset */
+						*((gpointer *)(gpointer)((char *)MONO_CONTEXT_GET_BP (ctx) + ei->exvar_offset)) = ex_obj;
+					}
+
+					mono_debugger_agent_begin_exception_filter (mono_ex, ctx, &initial_ctx);
+					filtered = call_filter (ctx, ei->data.filter);
+					mono_debugger_agent_end_exception_filter (mono_ex, ctx, &initial_ctx);
+					if (filtered && out_filter_idx)
+						*out_filter_idx = filter_idx;
+					if (out_ji)
+						*out_ji = ji;
+					filter_idx ++;
+
+					if (filtered) {
+						/* mono_debugger_agent_handle_exception () needs this */
+						MONO_CONTEXT_SET_IP (ctx, ei->handler_start);
+						return TRUE;
+					}
+				}
+
+				if (ei->flags == MONO_EXCEPTION_CLAUSE_NONE && mono_object_isinst (ex_obj, catch_class)) {
+					if (mono_ex && !initial_trace_ips) {
+						trace_ips = g_list_reverse (trace_ips);
+						MONO_OBJECT_SETREF (mono_ex, trace_ips, glist_to_array (trace_ips, mono_defaults.int_class));
+						if (has_dynamic_methods)
+							/* These methods could go away anytime, so compute the stack trace now */
+							MONO_OBJECT_SETREF (mono_ex, stack_trace, ves_icall_System_Exception_get_trace (mono_ex));
+					}
+					g_list_free (trace_ips);
+
+					/* mono_debugger_agent_handle_exception () needs this */
+					MONO_CONTEXT_SET_IP (ctx, ei->handler_start);
+					return TRUE;
+				}
+			}
+		}
+
+		*ctx = new_ctx;
+	}
+
+	g_assert_not_reached ();
+}
+
 /**
  * mono_handle_exception_internal:
  * @ctx: saved processor state
  * @obj: the exception object
- * @test_only: only test if the exception is caught, but dont call handlers
- * @out_filter_idx: out parameter. if test_only is true, set to the index of 
- * the first filter clause which caught the exception.
  * @resume: whenever to resume unwinding based on the state in MonoJitTlsData.
  */
 static gboolean
-mono_handle_exception_internal (MonoContext *ctx, gpointer obj, gpointer original_ip, gboolean test_only, gboolean resume, gint32 *out_filter_idx, MonoJitInfo **out_ji)
+mono_handle_exception_internal (MonoContext *ctx, gpointer obj, gpointer original_ip, gboolean resume, MonoJitInfo **out_ji)
 {
 	MonoDomain *domain = mono_domain_get ();
-	MonoJitInfo *ji, rji;
+	MonoJitInfo *ji;
 	static int (*call_filter) (MonoContext *, gpointer) = NULL;
 	static void (*restore_context) (void *);
 	MonoJitTlsData *jit_tls = TlsGetValue (mono_jit_tls_id);
 	MonoLMF *lmf = mono_get_lmf ();
-	MonoArray *initial_trace_ips = NULL;
-	GList *trace_ips = NULL;
 	MonoException *mono_ex;
 	gboolean stack_overflow = FALSE;
 	MonoContext initial_ctx;
 	int frame_count = 0;
-	gboolean has_dynamic_methods = FALSE;
 	gint32 filter_idx, first_filter_idx;
-
+	int i;
+	MonoObject *ex_obj;
+	MonoObject *non_exception = NULL;
 
 	g_assert (ctx != NULL);
 	if (!obj) {
@@ -1175,21 +1382,38 @@ mono_handle_exception_internal (MonoContext *ctx, gpointer obj, gpointer origina
 		obj = mono_get_exception_null_reference ();
 	}
 
+	if (!mono_object_isinst (obj, mono_defaults.exception_class)) {
+		non_exception = obj;
+		obj = mono_get_exception_runtime_wrapped (obj);
+	}
+
+	mono_ex = (MonoException*)obj;
+
 	if (mono_object_isinst (obj, mono_defaults.exception_class)) {
 		mono_ex = (MonoException*)obj;
-		initial_trace_ips = mono_ex->trace_ips;
 	} else {
 		mono_ex = NULL;
 	}
 
-	if (mono_ex && jit_tls->class_cast_from && !strcmp (mono_ex->object.vtable->klass->name, "InvalidCastException")) {
-		char *from_name = mono_type_get_full_name (jit_tls->class_cast_from);
-		char *to_name = mono_type_get_full_name (jit_tls->class_cast_to);
-		char *msg = g_strdup_printf ("Unable to cast object of type '%s' to type '%s'.", from_name, to_name);
-		mono_ex->message = mono_string_new (domain, msg);
-		g_free (from_name);
-		g_free (to_name);
-		g_free (msg);
+	if (mono_ex && jit_tls->class_cast_from) {
+		if (!strcmp (mono_ex->object.vtable->klass->name, "InvalidCastException")) {
+			char *from_name = mono_type_get_full_name (jit_tls->class_cast_from);
+			char *to_name = mono_type_get_full_name (jit_tls->class_cast_to);
+			char *msg = g_strdup_printf ("Unable to cast object of type '%s' to type '%s'.", from_name, to_name);
+			mono_ex->message = mono_string_new (domain, msg);
+			g_free (from_name);
+			g_free (to_name);
+			g_free (msg);
+		}
+		if (!strcmp (mono_ex->object.vtable->klass->name, "ArrayTypeMismatchException")) {
+			char *from_name = mono_type_get_full_name (jit_tls->class_cast_from);
+			char *to_name = mono_type_get_full_name (jit_tls->class_cast_to);
+			char *msg = g_strdup_printf ("Source array of type '%s' cannot be cast to destination array type '%s'.", from_name, to_name);
+			mono_ex->message = mono_string_new (domain, msg);
+			g_free (from_name);
+			g_free (to_name);
+			g_free (msg);
+		}
 	}
 
 	if (!call_filter)
@@ -1201,7 +1425,15 @@ mono_handle_exception_internal (MonoContext *ctx, gpointer obj, gpointer origina
 	g_assert (jit_tls->end_of_stack);
 	g_assert (jit_tls->abort_func);
 
-	if (!test_only && !resume) {
+	/*
+	 * We set orig_ex_ctx_set to TRUE/FALSE around profiler calls to make sure it doesn't
+	 * end up being TRUE on any code path.
+	 */
+	memcpy (&jit_tls->orig_ex_ctx, ctx, sizeof (MonoContext));
+
+	if (!resume) {
+		gboolean res;
+
 		MonoContext ctx_cp = *ctx;
 		if (mono_trace_is_enabled ()) {
 			MonoMethod *system_exception_get_message = mono_class_get_method_from_name (mono_defaults.exception_class, "get_Message", 0);
@@ -1227,8 +1459,13 @@ mono_handle_exception_internal (MonoContext *ctx, gpointer obj, gpointer origina
 			if (mono_ex && mono_trace_eval_exception (mono_object_class (mono_ex)))
 				mono_print_thread_dump_from_ctx (ctx);
 		}
+		jit_tls->orig_ex_ctx_set = TRUE;
 		mono_profiler_exception_thrown (obj);
-		if (!mono_handle_exception_internal (&ctx_cp, obj, original_ip, TRUE, FALSE, &first_filter_idx, out_ji)) {
+		jit_tls->orig_ex_ctx_set = FALSE;
+
+		res = mono_handle_exception_internal_first_pass (&ctx_cp, obj, original_ip, &first_filter_idx, out_ji, non_exception);
+
+		if (!res) {
 			if (mono_break_on_exc)
 				G_BREAKPOINT ();
 			mono_debugger_agent_handle_exception (obj, ctx, NULL);
@@ -1240,19 +1477,17 @@ mono_handle_exception_internal (MonoContext *ctx, gpointer obj, gpointer origina
 		}
 	}
 
-	if (out_filter_idx)
-		*out_filter_idx = -1;
 	if (out_ji)
 		*out_ji = NULL;
 	filter_idx = 0;
 	initial_ctx = *ctx;
-	memset (&rji, 0, sizeof (rji));
 
 	while (1) {
 		MonoContext new_ctx;
 		guint32 free_stack;
 		int clause_index_start = 0;
-
+		gboolean unwind_res = TRUE;
+		
 		if (resume) {
 			resume = FALSE;
 			ji = jit_tls->resume_state.ji;
@@ -1262,246 +1497,186 @@ mono_handle_exception_internal (MonoContext *ctx, gpointer obj, gpointer origina
 			first_filter_idx = jit_tls->resume_state.first_filter_idx;
 			filter_idx = jit_tls->resume_state.filter_idx;
 		} else {
-			ji = mono_find_jit_info (domain, jit_tls, &rji, &rji, ctx, &new_ctx, 
-									 NULL, &lmf, NULL, NULL);
-			if (!ji) {
-				g_warning ("Exception inside function without unwind info");
-				g_assert_not_reached ();
-			}
-		}
+			StackFrameInfo frame;
 
-		if (ji != (gpointer)-1 && !(ji->code_start <= MONO_CONTEXT_GET_IP (ctx) && (((guint8*)ji->code_start + ji->code_size >= (guint8*)MONO_CONTEXT_GET_IP (ctx))))) {
-			/*
-			 * The exception was raised in native code and we got back to managed code 
-			 * using the LMF.
-			 */
-			*ctx = new_ctx;
-			continue;
+			unwind_res = mono_find_jit_info_ext (domain, jit_tls, NULL, ctx, &new_ctx, NULL, &lmf, NULL, &frame);
+			if (unwind_res) {
+				if (frame.type == FRAME_TYPE_DEBUGGER_INVOKE || frame.type == FRAME_TYPE_MANAGED_TO_NATIVE) {
+					*ctx = new_ctx;
+					continue;
+				}
+				g_assert (frame.type == FRAME_TYPE_MANAGED);
+				ji = frame.ji;
+			}
 		}
 
-		if (ji != (gpointer)-1) {
-			frame_count ++;
-			//printf ("M: %s %d %d.\n", mono_method_full_name (ji->method, TRUE), frame_count, test_only);
+		if (!unwind_res) {
+			*(mono_get_lmf_addr ()) = lmf;
 
-			if (mini_get_debug_options ()->reverse_pinvoke_exceptions && ji->method->wrapper_type == MONO_WRAPPER_NATIVE_TO_MANAGED) {
-				g_error ("A native frame was found while unwinding the stack after an exception.\n"
-				"The native frame called the managed method:\n%s\n",
-				mono_method_full_name (ji->method, TRUE));
-			}
-
-			if (test_only && ji->method->wrapper_type != MONO_WRAPPER_RUNTIME_INVOKE && mono_ex) {
-				/* 
-				 * Avoid overwriting the stack trace if the exception is
-				 * rethrown. Also avoid giant stack traces during a stack
-				 * overflow.
-				 */
-				if (!initial_trace_ips && (frame_count < 1000)) {
-					trace_ips = g_list_prepend (trace_ips, MONO_CONTEXT_GET_IP (ctx));
-					trace_ips = g_list_prepend (trace_ips,
-						get_generic_info_from_stack_frame (ji, ctx));
-				}
-			}
+			jit_tls->abort_func (obj);
+			g_assert_not_reached ();
+		}
 
-			if (ji->method->dynamic)
-				has_dynamic_methods = TRUE;
+		frame_count ++;
+		//printf ("M: %s %d.\n", mono_method_full_name (ji->method, TRUE), frame_count);
 
-			if (stack_overflow)
-#ifndef MONO_ARCH_STACK_GROWS_UP
+		if (stack_overflow) {
+			if (DOES_STACK_GROWS_UP)
 				free_stack = (guint8*)(MONO_CONTEXT_GET_SP (ctx)) - (guint8*)(MONO_CONTEXT_GET_SP (&initial_ctx));
-#else
-				free_stack = (guint8*)(MONO_CONTEXT_GET_SP (&initial_ctx)) - (guint8*)(MONO_CONTEXT_GET_SP (ctx));
-#endif
 			else
-				free_stack = 0xffffff;
+				free_stack = (guint8*)(MONO_CONTEXT_GET_SP (&initial_ctx)) - (guint8*)(MONO_CONTEXT_GET_SP (ctx));
+		} else {
+			free_stack = 0xffffff;
+		}
+				
+		for (i = clause_index_start; i < ji->num_clauses; i++) {
+			MonoJitExceptionInfo *ei = &ji->clauses [i];
+			gboolean filtered = FALSE;
 
 			/* 
 			 * During stack overflow, wait till the unwinding frees some stack
 			 * space before running handlers/finalizers.
 			 */
-			if ((free_stack > (64 * 1024)) && ji->num_clauses) {
-				int i;
-				
-				for (i = clause_index_start; i < ji->num_clauses; i++) {
-					MonoJitExceptionInfo *ei = &ji->clauses [i];
-					gboolean filtered = FALSE;
+			if (free_stack <= (64 * 1024))
+				continue;
 
-#if defined(__s390__)
-					/* 
-					 * This is required in cases where a try block starts immediately after
-					 * a call which causes an exception. Testcase: tests/exception8.cs.
-					 * FIXME: Clean this up.
-					 */
-					if (ei->try_start < MONO_CONTEXT_GET_IP (ctx) && MONO_CONTEXT_GET_IP (ctx) <= ei->try_end) {
-#else
-					if (is_address_protected (ji, ei, MONO_CONTEXT_GET_IP (ctx))) {
-#endif
-						/* catch block */
-						MonoClass *catch_class = get_exception_catch_class (ei, ji, ctx);
+			if (is_address_protected (ji, ei, MONO_CONTEXT_GET_IP (ctx))) {
+				/* catch block */
+				MonoClass *catch_class = get_exception_catch_class (ei, ji, ctx);
+
+				/*
+				 * Have to unwrap RuntimeWrappedExceptions if the
+				 * method's assembly doesn't have a RuntimeCompatibilityAttribute.
+				 */
+				if (non_exception && !wrap_non_exception_throws (ji->method))
+					ex_obj = non_exception;
+				else
+					ex_obj = obj;
 
-						if ((ei->flags == MONO_EXCEPTION_CLAUSE_NONE) || (ei->flags == MONO_EXCEPTION_CLAUSE_FILTER)) {
-							if (ji->from_llvm) {
+				if (((ei->flags == MONO_EXCEPTION_CLAUSE_NONE) || (ei->flags == MONO_EXCEPTION_CLAUSE_FILTER))) {
+					if (ji->from_llvm) {
 #ifdef MONO_CONTEXT_SET_LLVM_EXC_REG
-								MONO_CONTEXT_SET_LLVM_EXC_REG (ctx, obj);
+						MONO_CONTEXT_SET_LLVM_EXC_REG (ctx, ex_obj);
 #else
-								g_assert_not_reached ();
+						g_assert_not_reached ();
 #endif
-							} else {
-								/* store the exception object in bp + ei->exvar_offset */
-								*((gpointer *)(gpointer)((char *)MONO_CONTEXT_GET_BP (ctx) + ei->exvar_offset)) = obj;
-							}
-						}
+					} else {
+						/* store the exception object in bp + ei->exvar_offset */
+						*((gpointer *)(gpointer)((char *)MONO_CONTEXT_GET_BP (ctx) + ei->exvar_offset)) = ex_obj;
+					}
+				}
 
-						if (ei->flags == MONO_EXCEPTION_CLAUSE_FILTER) {
-							if (test_only) {
-								mono_perfcounters->exceptions_filters++;
-								mono_debugger_call_exception_handler (ei->data.filter, MONO_CONTEXT_GET_SP (ctx), obj);
-								filtered = call_filter (ctx, ei->data.filter);
-								if (filtered && out_filter_idx)
-									*out_filter_idx = filter_idx;
-								if (out_ji)
-									*out_ji = ji;
-							}
-							else {
-								/* 
-								 * Filter clauses should only be run in the 
-								 * first pass of exception handling.
-								 */
-								filtered = (filter_idx == first_filter_idx);
-							}
-							filter_idx ++;
-						}
+				if (ei->flags == MONO_EXCEPTION_CLAUSE_FILTER) {
+					/* 
+					 * Filter clauses should only be run in the 
+					 * first pass of exception handling.
+					 */
+					filtered = (filter_idx == first_filter_idx);
+					filter_idx ++;
+				}
 
-						if ((ei->flags == MONO_EXCEPTION_CLAUSE_NONE && 
-						     mono_object_isinst (obj, catch_class)) || filtered) {
-							if (test_only) {
-								if (mono_ex && !initial_trace_ips) {
-									trace_ips = g_list_reverse (trace_ips);
-									MONO_OBJECT_SETREF (mono_ex, trace_ips, glist_to_array (trace_ips, mono_defaults.int_class));
-									if (has_dynamic_methods)
-										/* These methods could go away anytime, so compute the stack trace now */
-										MONO_OBJECT_SETREF (mono_ex, stack_trace, ves_icall_System_Exception_get_trace (mono_ex));
-								}
-								g_list_free (trace_ips);
-
-								/* mono_debugger_agent_handle_exception () needs this */
-								MONO_CONTEXT_SET_IP (ctx, ei->handler_start);
-								return TRUE;
-							}
-							/*
-							 * This guards against the situation that we abort a thread that is executing a finally clause
-							 * that was called by the EH machinery. It won't have a guard trampoline installed, so we must
-							 * check for this situation here and resume interruption if we are below the guarded block.
+				if ((ei->flags == MONO_EXCEPTION_CLAUSE_NONE && 
+					 mono_object_isinst (ex_obj, catch_class)) || filtered) {
+					/*
+					 * This guards against the situation that we abort a thread that is executing a finally clause
+					 * that was called by the EH machinery. It won't have a guard trampoline installed, so we must
+					 * check for this situation here and resume interruption if we are below the guarded block.
+					 */
+					if (G_UNLIKELY (jit_tls->handler_block_return_address)) {
+						gboolean is_outside = FALSE;
+						gpointer prot_bp = MONO_CONTEXT_GET_BP (&jit_tls->handler_block_context);
+						gpointer catch_bp = MONO_CONTEXT_GET_BP (ctx);
+						//FIXME make this stack direction aware
+						if (catch_bp > prot_bp) {
+							is_outside = TRUE;
+						} else if (catch_bp == prot_bp) {
+							/* Can be either try { try { } catch {} } finally {} or try { try { } finally {} } catch {}
+							 * So we check if the catch handler_start is protected by the guarded handler protected region
+							 *
+							 * Assumptions:
+							 *	If there is an outstanding guarded_block return address, it means the current thread must be aborted.
+							 *	This is the only way to reach out the guarded block as other cases are handled by the trampoline.
+							 *	There aren't any further finally/fault handler blocks down the stack over this exception.
+							 *   This must be ensured by the code that installs the guard trampoline.
 							 */
-							if (G_UNLIKELY (jit_tls->handler_block_return_address)) {
-								gboolean is_outside = FALSE;
-								gpointer prot_bp = MONO_CONTEXT_GET_BP (&jit_tls->ex_ctx);
-								gpointer catch_bp = MONO_CONTEXT_GET_BP (ctx);
-								//FIXME make this stack direction aware
-								if (catch_bp > prot_bp) {
-									is_outside = TRUE;
-								} else if (catch_bp == prot_bp) {
-									/* Can be either try { try { } catch {} } finally {} or try { try { } finally {} } catch {}
-									 * So we check if the catch handler_start is protected by the guarded handler protected region
-									 *
-									 * Assumptions:
-									 *	If there is an outstanding guarded_block return address, it means the current thread must be aborted.
-									 *	This is the only way to reach out the guarded block as other cases are handled by the trampoline.
-									 *	There aren't any further finally/fault handler blocks down the stack over this exception.
-									 *   This must be ensured by the code that installs the guard trampoline.
-									 */
-									g_assert (ji == mini_jit_info_table_find (domain, MONO_CONTEXT_GET_IP (&jit_tls->ex_ctx), NULL));
-
-									if (!is_address_protected (ji, jit_tls->handler_block, ei->handler_start)) {
-										is_outside = TRUE;
-									}
-								}
-								if (is_outside) {
-									jit_tls->handler_block_return_address = NULL;
-									jit_tls->handler_block = NULL;
-									mono_thread_resume_interruption (); /*We ignore the exception here, it will be raised later*/
-								}
-							}
+							g_assert (ji == mini_jit_info_table_find (domain, MONO_CONTEXT_GET_IP (&jit_tls->handler_block_context), NULL));
 
-							if (mono_trace_is_enabled () && mono_trace_eval (ji->method))
-								g_print ("EXCEPTION: catch found at clause %d of %s\n", i, mono_method_full_name (ji->method, TRUE));
-							mono_profiler_exception_clause_handler (ji->method, ei->flags, i);
-							mono_debugger_call_exception_handler (ei->handler_start, MONO_CONTEXT_GET_SP (ctx), obj);
-							MONO_CONTEXT_SET_IP (ctx, ei->handler_start);
-							*(mono_get_lmf_addr ()) = lmf;
-							mono_perfcounters->exceptions_depth += frame_count;
-							if (obj == domain->stack_overflow_ex)
-								jit_tls->handling_stack_ovf = FALSE;
-
-							return 0;
-						}
-						if (!test_only && is_address_protected (ji, ei, MONO_CONTEXT_GET_IP (ctx)) &&
-						    (ei->flags == MONO_EXCEPTION_CLAUSE_FAULT)) {
-							if (mono_trace_is_enabled () && mono_trace_eval (ji->method))
-								g_print ("EXCEPTION: fault clause %d of %s\n", i, mono_method_full_name (ji->method, TRUE));
-							mono_profiler_exception_clause_handler (ji->method, ei->flags, i);
-							mono_debugger_call_exception_handler (ei->handler_start, MONO_CONTEXT_GET_SP (ctx), obj);
-							call_filter (ctx, ei->handler_start);
-						}
-						if (!test_only && is_address_protected (ji, ei, MONO_CONTEXT_GET_IP (ctx)) &&
-						    (ei->flags == MONO_EXCEPTION_CLAUSE_FINALLY)) {
-							if (mono_trace_is_enabled () && mono_trace_eval (ji->method))
-								g_print ("EXCEPTION: finally clause %d of %s\n", i, mono_method_full_name (ji->method, TRUE));
-							mono_profiler_exception_clause_handler (ji->method, ei->flags, i);
-							mono_debugger_call_exception_handler (ei->handler_start, MONO_CONTEXT_GET_SP (ctx), obj);
-							mono_perfcounters->exceptions_finallys++;
-							*(mono_get_lmf_addr ()) = lmf;
-							if (ji->from_llvm) {
-								/* 
-								 * LLVM compiled finally handlers follow the design
-								 * of the c++ ehabi, i.e. they call a resume function
-								 * at the end instead of returning to the caller.
-								 * So save the exception handling state,
-								 * mono_resume_unwind () will call us again to continue
-								 * the unwinding.
-								 */
-								jit_tls->resume_state.ex_obj = obj;
-								jit_tls->resume_state.ji = ji;
-								jit_tls->resume_state.clause_index = i + 1;
-								jit_tls->resume_state.ctx = *ctx;
-								jit_tls->resume_state.new_ctx = new_ctx;
-								jit_tls->resume_state.lmf = lmf;
-								jit_tls->resume_state.first_filter_idx = first_filter_idx;
-								jit_tls->resume_state.filter_idx = filter_idx;
-								MONO_CONTEXT_SET_IP (ctx, ei->handler_start);
-								return 0;
-							} else {
-								call_filter (ctx, ei->handler_start);
+							if (!is_address_protected (ji, jit_tls->handler_block, ei->handler_start)) {
+								is_outside = TRUE;
 							}
 						}
-						
+						if (is_outside) {
+							jit_tls->handler_block_return_address = NULL;
+							jit_tls->handler_block = NULL;
+							mono_thread_resume_interruption (); /*We ignore the exception here, it will be raised later*/
+						}
+					}
+
+					if (mono_trace_is_enabled () && mono_trace_eval (ji->method))
+						g_print ("EXCEPTION: catch found at clause %d of %s\n", i, mono_method_full_name (ji->method, TRUE));
+					jit_tls->orig_ex_ctx_set = TRUE;
+					mono_profiler_exception_clause_handler (ji->method, ei->flags, i);
+					jit_tls->orig_ex_ctx_set = FALSE;
+					mono_debugger_call_exception_handler (ei->handler_start, MONO_CONTEXT_GET_SP (ctx), ex_obj);
+					MONO_CONTEXT_SET_IP (ctx, ei->handler_start);
+					*(mono_get_lmf_addr ()) = lmf;
+					mono_perfcounters->exceptions_depth += frame_count;
+					if (obj == domain->stack_overflow_ex)
+						jit_tls->handling_stack_ovf = FALSE;
+
+					return 0;
+				}
+				if (is_address_protected (ji, ei, MONO_CONTEXT_GET_IP (ctx)) &&
+					(ei->flags == MONO_EXCEPTION_CLAUSE_FAULT)) {
+					if (mono_trace_is_enabled () && mono_trace_eval (ji->method))
+						g_print ("EXCEPTION: fault clause %d of %s\n", i, mono_method_full_name (ji->method, TRUE));
+					jit_tls->orig_ex_ctx_set = TRUE;
+					mono_profiler_exception_clause_handler (ji->method, ei->flags, i);
+					jit_tls->orig_ex_ctx_set = FALSE;
+					mono_debugger_call_exception_handler (ei->handler_start, MONO_CONTEXT_GET_SP (ctx), ex_obj);
+					call_filter (ctx, ei->handler_start);
+				}
+				if (is_address_protected (ji, ei, MONO_CONTEXT_GET_IP (ctx)) &&
+					(ei->flags == MONO_EXCEPTION_CLAUSE_FINALLY)) {
+					if (mono_trace_is_enabled () && mono_trace_eval (ji->method))
+						g_print ("EXCEPTION: finally clause %d of %s\n", i, mono_method_full_name (ji->method, TRUE));
+					jit_tls->orig_ex_ctx_set = TRUE;
+					mono_profiler_exception_clause_handler (ji->method, ei->flags, i);
+					jit_tls->orig_ex_ctx_set = FALSE;
+					mono_debugger_call_exception_handler (ei->handler_start, MONO_CONTEXT_GET_SP (ctx), ex_obj);
+					mono_perfcounters->exceptions_finallys++;
+					*(mono_get_lmf_addr ()) = lmf;
+					if (ji->from_llvm) {
+						/* 
+						 * LLVM compiled finally handlers follow the design
+						 * of the c++ ehabi, i.e. they call a resume function
+						 * at the end instead of returning to the caller.
+						 * So save the exception handling state,
+						 * mono_resume_unwind () will call us again to continue
+						 * the unwinding.
+						 */
+						jit_tls->resume_state.ex_obj = obj;
+						jit_tls->resume_state.ji = ji;
+						jit_tls->resume_state.clause_index = i + 1;
+						jit_tls->resume_state.ctx = *ctx;
+						jit_tls->resume_state.new_ctx = new_ctx;
+						jit_tls->resume_state.lmf = lmf;
+						jit_tls->resume_state.first_filter_idx = first_filter_idx;
+						jit_tls->resume_state.filter_idx = filter_idx;
+						MONO_CONTEXT_SET_IP (ctx, ei->handler_start);
+						return 0;
+					} else {
+						call_filter (ctx, ei->handler_start);
 					}
 				}
 			}
-			if (!test_only)
-				mono_profiler_exception_method_leave (ji->method);
 		}
 
-		*ctx = new_ctx;
-
-		if (ji == (gpointer)-1) {
+		jit_tls->orig_ex_ctx_set = TRUE;
+		mono_profiler_exception_method_leave (ji->method);
+		jit_tls->orig_ex_ctx_set = FALSE;
 
-			if (!test_only) {
-				*(mono_get_lmf_addr ()) = lmf;
-
-				jit_tls->abort_func (obj);
-				g_assert_not_reached ();
-			} else {
-				if (mono_ex && !initial_trace_ips) {
-					trace_ips = g_list_reverse (trace_ips);
-					MONO_OBJECT_SETREF (mono_ex, trace_ips, glist_to_array (trace_ips, mono_defaults.int_class));
-					if (has_dynamic_methods)
-						/* These methods could go away anytime, so compute the stack trace now */
-						MONO_OBJECT_SETREF (mono_ex, stack_trace, ves_icall_System_Exception_get_trace (mono_ex));
-				}
-				g_list_free (trace_ips);
-				return FALSE;
-			}
-		}
+		*ctx = new_ctx;
 	}
 
 	g_assert_not_reached ();
@@ -1548,7 +1723,7 @@ mono_debugger_handle_exception (MonoContext *ctx, MonoObject *obj)
 		 * The debugger wants us to stop only if this exception is user-unhandled.
 		 */
 
-		ret = mono_handle_exception_internal (&ctx_cp, obj, MONO_CONTEXT_GET_IP (ctx), TRUE, FALSE, NULL, &ji);
+		ret = mono_handle_exception_internal_first_pass (&ctx_cp, obj, MONO_CONTEXT_GET_IP (ctx), NULL, &ji, NULL);
 		if (ret && (ji != NULL) && (ji->method->wrapper_type == MONO_WRAPPER_RUNTIME_INVOKE)) {
 			/*
 			 * The exception is handled in a runtime-invoke wrapper, that means that it's unhandled
@@ -1626,7 +1801,8 @@ mono_handle_exception (MonoContext *ctx, gpointer obj, gpointer original_ip, gbo
 	if (!test_only)
 		mono_perfcounters->exceptions_thrown++;
 
-	return mono_handle_exception_internal (ctx, obj, original_ip, test_only, FALSE, NULL, NULL);
+	g_assert (!test_only);
+	return mono_handle_exception_internal (ctx, obj, original_ip, FALSE, NULL);
 }
 
 #ifdef MONO_ARCH_SIGSEGV_ON_ALTSTACK
@@ -1652,6 +1828,7 @@ mono_setup_altstack (MonoJitTlsData *tls)
 	g_assert (staddr);
 
 	tls->end_of_stack = staddr + stsize;
+	tls->stack_size = stsize;
 
 	/*g_print ("thread %p, stack_base: %p, stack_size: %d\n", (gpointer)pthread_self (), staddr, stsize);*/
 
@@ -1667,14 +1844,6 @@ mono_setup_altstack (MonoJitTlsData *tls)
 		tls->stack_ovf_valloced = TRUE;
 	}
 
-	/*
-	 * threads created by nptl does not seem to have a guard page, and
-	 * since the main thread is not created by us, we can't even set one.
-	 * Increasing stsize fools the SIGSEGV signal handler into thinking this
-	 * is a stack overflow exception.
-	 */
-	tls->stack_size = stsize + mono_pagesize ();
-
 	/* Setup an alternate signal stack */
 	tls->signal_stack = mono_valloc (0, MONO_ARCH_SIGNAL_STACK_SIZE, MONO_MMAP_READ|MONO_MMAP_WRITE|MONO_MMAP_PRIVATE|MONO_MMAP_ANON);
 	tls->signal_stack_size = MONO_ARCH_SIGNAL_STACK_SIZE;
@@ -2024,7 +2193,7 @@ mono_print_thread_dump_internal (void *sigctx, MonoContext *start_ctx)
 	else
 		mono_arch_sigctx_to_monoctx (sigctx, &ctx);
 
-	mono_jit_walk_stack_from_ctx (print_stack_frame_to_string, &ctx, TRUE, text);
+	mono_jit_walk_stack_from_ctx (print_stack_frame_to_string, &ctx, MONO_UNWIND_LOOKUP_ALL, text);
 #else
 	printf ("\t<Stack traces in thread dumps not supported on this platform>\n");
 #endif
@@ -2069,7 +2238,7 @@ mono_resume_unwind (MonoContext *ctx)
 	MONO_CONTEXT_SET_SP (ctx, MONO_CONTEXT_GET_SP (&jit_tls->resume_state.ctx));
 	new_ctx = *ctx;
 
-	mono_handle_exception_internal (&new_ctx, jit_tls->resume_state.ex_obj, NULL, FALSE, TRUE, NULL, NULL);
+	mono_handle_exception_internal (&new_ctx, jit_tls->resume_state.ex_obj, NULL, TRUE, NULL);
 
 	if (!restore_context)
 		restore_context = mono_get_restore_context ();
@@ -2086,11 +2255,15 @@ typedef struct {
 } FindHandlerBlockData;
 
 static gboolean
-find_last_handler_block (MonoDomain *domain, MonoContext *ctx, MonoJitInfo *ji, gpointer data)
+find_last_handler_block (StackFrameInfo *frame, MonoContext *ctx, gpointer data)
 {
 	int i;
 	gpointer ip;
 	FindHandlerBlockData *pdata = data;
+	MonoJitInfo *ji = frame->ji;
+
+	if (!ji)
+		return FALSE;
 
 	if (ji->method->wrapper_type)
 		return FALSE;
@@ -2159,12 +2332,12 @@ mono_install_handler_block_guard (MonoInternalThread *thread, MonoContext *ctx)
 	if (!jit_tls || jit_tls->handler_block_return_address)
 		return FALSE;
 
-	mono_walk_stack_full (domain, jit_tls, ctx, find_last_handler_block, FALSE, &data);
+	mono_walk_stack (find_last_handler_block, domain, ctx, MONO_UNWIND_SIGNAL_SAFE, NULL, NULL, &data);
 
 	if (!data.ji)
 		return FALSE;
 
-	memcpy (&jit_tls->ex_ctx, &data.ctx, sizeof (MonoContext));
+	memcpy (&jit_tls->handler_block_context, &data.ctx, sizeof (MonoContext));
 
 	resume_ip = install_handler_block_guard (data.ji, &data.ctx);
 	if (resume_ip == NULL)
diff --git a/mono/mini/mini-gc.c b/mono/mini/mini-gc.c
index 2b04688..ced5aef 100644
--- a/mono/mini/mini-gc.c
+++ b/mono/mini/mini-gc.c
@@ -11,32 +11,101 @@
 #include "mini-gc.h"
 #include <mono/metadata/gc-internal.h>
 
-/*
- * The code above does not work yet, and probably needs to be thrown out if we move
- * to GC safe points.
- */
-
-#if 0
-//#ifdef HAVE_SGEN_GC
+//#if 0
+#if defined(HAVE_SGEN_GC) && defined(MONO_ARCH_GC_MAPS_SUPPORTED)
 
+#include <mono/metadata/sgen-gc.h>
 #include <mono/metadata/gc-internal.h>
 #include <mono/utils/mono-counters.h>
 
-#define ALIGN_TO(val,align) ((((guint64)val) + ((align) - 1)) & ~((align) - 1))
+/* Contains state needed by the GC Map construction code */
+typedef struct {
+	/*
+	 * This contains information about stack slots initialized in the prolog, encoded using
+	 * (slot_index << 16) | slot_type. The slot_index is relative to the CFA, i.e. 0
+	 * means cfa+0, 1 means cfa-4/8, etc.
+	 */
+	GSList *stack_slots_from_cfa;
+	/* Same for stack slots relative to the frame pointer */
+	GSList *stack_slots_from_fp;
 
-#if 1
-#define DEBUG(s) do { s; } while (0)
+	/* Number of slots in the map */
+	int nslots;
+	/* The number of registers in the map */
+	int nregs;
+	/* Min and Max offsets of the stack frame relative to fp */
+	int min_offset, max_offset;
+	/* Same for the locals area */
+	int locals_min_offset, locals_max_offset;
+
+	/* The call sites where this frame can be stopped during GC */
+	GCCallSite **callsites;
+	/* The number of call sites */
+	int ncallsites;
+
+	/*
+	 * The width of the stack bitmaps in bytes. This is not equal to the bitmap width at
+     * runtime, since it includes columns which are 0.
+	 */
+	int stack_bitmap_width;
+	/* 
+	 * A bitmap whose width equals nslots, and whose height equals ncallsites.
+	 * The bitmap contains a 1 if the corresponding stack slot has type SLOT_REF at the
+	 * given callsite.
+	 */
+	guint8 *stack_ref_bitmap;
+	/* Same for SLOT_PIN */
+	guint8 *stack_pin_bitmap;
+
+	/*
+	 * Similar bitmaps for registers. These have width MONO_MAX_IREGS in bits.
+	 */
+	int reg_bitmap_width;
+	guint8 *reg_ref_bitmap;
+	guint8 *reg_pin_bitmap;
+} MonoCompileGC;
+
+#define ALIGN_TO(val,align) ((((mgreg_t)val) + ((align) - 1)) & ~((align) - 1))
+
+#undef DEBUG
+
+#if 0
+/* We don't support debug levels, its all-or-nothing */
+#define DEBUG(s) do { s; fflush (logfile); } while (0)
+#define DEBUG_ENABLED 1
 #else
 #define DEBUG(s)
 #endif
 
-#if 1
-#define DEBUG_GC_MAP(s) do { s; fflush (stdout); } while (0)
+#ifdef DEBUG_ENABLED
+//#if 1
+#define DEBUG_PRECISE(s) do { s; } while (0)
+#define DEBUG_PRECISE_ENABLED
 #else
-#define DEBUG_GC_MAP(s)
+#define DEBUG_PRECISE(s)
 #endif
 
-#define GC_BITS_PER_WORD (sizeof (gsize) * 8)
+/*
+ * Contains information collected during the conservative stack marking pass,
+ * used during the precise pass. This helps to avoid doing a stack walk twice, which
+ * is expensive.
+ */
+typedef struct {
+	guint8 *bitmap;
+	int nslots;
+    int frame_start_offset;
+	int nreg_locations;
+	/* Relative to stack_start */
+	int reg_locations [MONO_MAX_IREGS];
+#ifdef DEBUG_PRECISE_ENABLED
+	MonoJitInfo *ji;
+	gpointer fp;
+	int regs [MONO_MAX_IREGS];
+#endif
+} FrameInfo;
+
+/* Max number of frames stored in the TLS data */
+#define MAX_FRAMES 50
 
 /*
  * Per-thread data kept by this module. This is stored in the GC and passed to us as
@@ -48,45 +117,429 @@ typedef struct {
 	MonoContext ctx;
 	gboolean has_context;
 	MonoJitTlsData *jit_tls;
+	/* For debugging */
+	mgreg_t tid;
+	gpointer ref_to_track;
+	/* Number of frames collected during the !precise pass */
+	int nframes;
+	FrameInfo frames [MAX_FRAMES];
 } TlsData;
 
-typedef enum {
-	/* Stack slot doesn't contain a reference */
-	SLOT_NOREF = 0,
-	/* Stack slot contains a reference */
-	SLOT_REF = 1,
-	/* No info, slot needs to be scanned conservatively */
-	SLOT_PIN = 2
-} StackSlotType;
+/* These are constant so don't store them in the GC Maps */
+/* Number of registers stored in gc maps */
+#define NREGS MONO_MAX_IREGS
 
 /* 
+ * The GC Map itself.
  * Contains information needed to mark a stack frame.
- * FIXME: Optimize the memory usage.
+ * This is a transient structure, created from a compressed representation on-demand.
  */
 typedef struct {
-	/* The frame pointer register */
-	int frame_reg;
-	/* The offset of the local variable area in the stack frame relative to the frame pointer */
-	int locals_offset;
-	/* The size of the locals area. Can't use nslots as it includes padding */
-	int locals_size;
-	/* The number of stack slots */
+	/*
+	 * The offsets of the GC tracked area inside the stack frame relative to the frame pointer.
+	 * This includes memory which is NOREF thus doesn't need GC maps.
+	 */
+	int start_offset;
+	int end_offset;
+	/*
+	 * The offset relative to frame_offset where the the memory described by the GC maps
+	 * begins.
+	 */
+	int map_offset;
+	/* The number of stack slots in the map */
 	int nslots;
+	/* The frame pointer register */
+	guint8 frame_reg;
+	/* The size of each callsite table entry */
+	guint8 callsite_entry_size;
+	guint has_pin_slots : 1;
+	guint has_ref_slots : 1;
+	guint has_ref_regs : 1;
+	guint has_pin_regs : 1;
+
+	/* The offsets below are into an external bitmaps array */
+
 	/* 
-	 * The gc map itself.
+	 * A bitmap whose width is equal to bitmap_width, and whose height is equal to ncallsites.
+	 * The bitmap contains a 1 if the corresponding stack slot has type SLOT_REF at the
+	 * given callsite.
+	 */
+	guint32 stack_ref_bitmap_offset;
+	/*
+	 * Same for SLOT_PIN. It is possible that the same bit is set in both bitmaps at
+     * different callsites, if the slot starts out as PIN, and later changes to REF.
+	 */
+	guint32 stack_pin_bitmap_offset;
+
+	/*
+	 * Corresponding bitmaps for registers
+	 * These have width equal to the number of bits set in reg_ref_mask/reg_pin_mask.
+	 * FIXME: Merge these with the normal bitmaps, i.e. reserve the first x slots for them ?
+	 */
+	guint32 reg_pin_bitmap_offset;
+	guint32 reg_ref_bitmap_offset;
+
+	guint32 used_int_regs, reg_ref_mask, reg_pin_mask;
+
+	/* The number of bits set in the two masks above */
+	guint8 nref_regs, npin_regs;
+
+	/*
+	 * A bit array marking slots which contain refs.
+	 * This is used only for debugging.
 	 */
-	StackSlotType *slots;
-	/* A pair of low pc offset-high pc offset for each SLOT_REF value in gc_refs */
-	guint32 live_ranges [MONO_ZERO_LEN_ARRAY];
+	//guint8 *ref_slots;
+
+	/* Callsite offsets */
+	/* These can take up a lot of space, so encode them compactly */
+	union {
+		guint8 *offsets8;
+		guint16 *offsets16;
+		guint32 *offsets32;
+	} callsites;
+	int ncallsites;
 } GCMap;
 
-/* Statistics */
-static guint32 gc_maps_size;
+/*
+ * A compressed version of GCMap. This is what gets stored in MonoJitInfo.
+ */
+typedef struct {
+	//guint8 *ref_slots;
+	//guint8 encoded_size;
+
+	/*
+	 * The arrays below are embedded after the struct.
+	 * Their address needs to be computed.
+	 */
+
+	/* The fixed fields of the GCMap encoded using LEB128 */
+	guint8 encoded [MONO_ZERO_LEN_ARRAY];
+
+	/* An array of ncallsites entries, each entry is callsite_entry_size bytes long */
+	guint8 callsites [MONO_ZERO_LEN_ARRAY];
+
+	/* The GC bitmaps */
+	guint8 bitmaps [MONO_ZERO_LEN_ARRAY];
+} GCEncodedMap;
+
+static int precise_frame_count [2], precise_frame_limit = -1;
+static gboolean precise_frame_limit_inited;
+
+/* Stats */
+typedef struct {
+	int scanned_stacks;
+	int scanned;
+	int scanned_precisely;
+	int scanned_conservatively;
+	int scanned_registers;
+	int scanned_native;
+	int scanned_other;
+	
+	int all_slots;
+	int noref_slots;
+	int ref_slots;
+	int pin_slots;
+
+	int gc_maps_size;
+	int gc_callsites_size;
+	int gc_callsites8_size;
+	int gc_callsites16_size;
+	int gc_callsites32_size;
+	int gc_bitmaps_size;
+	int gc_map_struct_size;
+	int tlsdata_size;
+} JITGCStats;
+
+static JITGCStats stats;
+
+static FILE *logfile;
+
+// FIXME: Move these to a shared place
+
+static inline void
+encode_uleb128 (guint32 value, guint8 *buf, guint8 **endbuf)
+{
+	guint8 *p = buf;
+
+	do {
+		guint8 b = value & 0x7f;
+		value >>= 7;
+		if (value != 0) /* more bytes to come */
+			b |= 0x80;
+		*p ++ = b;
+	} while (value);
+
+	*endbuf = p;
+}
+
+static G_GNUC_UNUSED void
+encode_sleb128 (gint32 value, guint8 *buf, guint8 **endbuf)
+{
+	gboolean more = 1;
+	gboolean negative = (value < 0);
+	guint32 size = 32;
+	guint8 byte;
+	guint8 *p = buf;
+
+	while (more) {
+		byte = value & 0x7f;
+		value >>= 7;
+		/* the following is unnecessary if the
+		 * implementation of >>= uses an arithmetic rather
+		 * than logical shift for a signed left operand
+		 */
+		if (negative)
+			/* sign extend */
+			value |= - (1 <<(size - 7));
+		/* sign bit of byte is second high order bit (0x40) */
+		if ((value == 0 && !(byte & 0x40)) ||
+			(value == -1 && (byte & 0x40)))
+			more = 0;
+		else
+			byte |= 0x80;
+		*p ++= byte;
+	}
+
+	*endbuf = p;
+}
+
+static inline guint32
+decode_uleb128 (guint8 *buf, guint8 **endbuf)
+{
+	guint8 *p = buf;
+	guint32 res = 0;
+	int shift = 0;
+
+	while (TRUE) {
+		guint8 b = *p;
+		p ++;
+
+		res = res | (((int)(b & 0x7f)) << shift);
+		if (!(b & 0x80))
+			break;
+		shift += 7;
+	}
+
+	*endbuf = p;
+
+	return res;
+}
+
+static inline gint32
+decode_sleb128 (guint8 *buf, guint8 **endbuf)
+{
+	guint8 *p = buf;
+	gint32 res = 0;
+	int shift = 0;
+
+	while (TRUE) {
+		guint8 b = *p;
+		p ++;
+
+		res = res | (((int)(b & 0x7f)) << shift);
+		shift += 7;
+		if (!(b & 0x80)) {
+			if (shift < 32 && (b & 0x40))
+				res |= - (1 << shift);
+			break;
+		}
+	}
+
+	*endbuf = p;
+
+	return res;
+}
+
+static int
+encode_frame_reg (int frame_reg)
+{
+#ifdef TARGET_AMD64
+	if (frame_reg == AMD64_RSP)
+		return 0;
+	else if (frame_reg == AMD64_RBP)
+		return 1;
+#elif defined(TARGET_X86)
+	if (frame_reg == X86_EBP)
+		return 0;
+	else if (frame_reg == X86_ESP)
+		return 1;
+#else
+	NOT_IMPLEMENTED;
+#endif
+	g_assert_not_reached ();
+	return -1;
+}
+
+static int
+decode_frame_reg (int encoded)
+{
+#ifdef TARGET_AMD64
+	if (encoded == 0)
+		return AMD64_RSP;
+	else if (encoded == 1)
+		return AMD64_RBP;
+#elif defined(TARGET_X86)
+	if (encoded == 0)
+		return X86_EBP;
+	else if (encoded == 1)
+		return X86_ESP;
+#else
+	NOT_IMPLEMENTED;
+#endif
+	g_assert_not_reached ();
+	return -1;
+}
+
+#ifdef TARGET_AMD64
+#ifdef HOST_WIN32
+static int callee_saved_regs [] = { AMD64_RBP, AMD64_RBX, AMD64_R12, AMD64_R13, AMD64_R14, AMD64_R15, AMD64_RDI, AMD64_RSI };
+#else
+static int callee_saved_regs [] = { AMD64_RBP, AMD64_RBX, AMD64_R12, AMD64_R13, AMD64_R14, AMD64_R15 };
+#endif
+#elif defined(TARGET_X86)
+static int callee_saved_regs [] = { X86_EBX, X86_ESI, X86_EDI };
+#endif
+
+static guint32
+encode_regmask (guint32 regmask)
+{
+	int i;
+	guint32 res;
+
+	res = 0;
+	for (i = 0; i < sizeof (callee_saved_regs) / sizeof (int); ++i) {
+		if (regmask & (1 << callee_saved_regs [i])) {
+			res |= (1 << i);
+			regmask -= (1 << callee_saved_regs [i]);
+		}
+	}
+	g_assert (regmask == 0);
+	return res;
+}
+
+static guint32
+decode_regmask (guint32 regmask)
+{
+	int i;
+	guint32 res;
+
+	res = 0;
+	for (i = 0; i < sizeof (callee_saved_regs) / sizeof (int); ++i)
+		if (regmask & (1 << i))
+			res |= (1 << callee_saved_regs [i]);
+	return res;
+}
+
+/*
+ * encode_gc_map:
+ *
+ *   Encode the fixed fields of MAP into a buffer pointed to by BUF.
+ */
+static void
+encode_gc_map (GCMap *map, guint8 *buf, guint8 **endbuf)
+{
+	guint32 flags, freg;
+
+	encode_sleb128 (map->start_offset / sizeof (mgreg_t), buf, &buf);
+	encode_sleb128 (map->end_offset / sizeof (mgreg_t), buf, &buf);
+	encode_sleb128 (map->map_offset / sizeof (mgreg_t), buf, &buf);
+	encode_uleb128 (map->nslots, buf, &buf);
+	g_assert (map->callsite_entry_size <= 4);
+	freg = encode_frame_reg (map->frame_reg);
+	g_assert (freg < 2);
+	flags = (map->has_ref_slots ? 1 : 0) | (map->has_pin_slots ? 2 : 0) | (map->has_ref_regs ? 4 : 0) | (map->has_pin_regs ? 8 : 0) | ((map->callsite_entry_size - 1) << 4) | (freg << 6);
+	encode_uleb128 (flags, buf, &buf);
+	encode_uleb128 (encode_regmask (map->used_int_regs), buf, &buf);
+	if (map->has_ref_regs)
+		encode_uleb128 (encode_regmask (map->reg_ref_mask), buf, &buf);
+	if (map->has_pin_regs)
+		encode_uleb128 (encode_regmask (map->reg_pin_mask), buf, &buf);
+	encode_uleb128 (map->ncallsites, buf, &buf);
+
+	*endbuf = buf;
+}	
+
+/*
+ * decode_gc_map:
+ *
+ *   Decode the encoded GC map representation in BUF and store the result into MAP.
+ */
+static void
+decode_gc_map (guint8 *buf, GCMap *map, guint8 **endbuf)
+{
+	guint32 flags;
+	int stack_bitmap_size, reg_ref_bitmap_size, reg_pin_bitmap_size, offset, freg;
+	int i, n;
+
+	map->start_offset = decode_sleb128 (buf, &buf) * sizeof (mgreg_t);
+	map->end_offset = decode_sleb128 (buf, &buf) * sizeof (mgreg_t);
+	map->map_offset = decode_sleb128 (buf, &buf) * sizeof (mgreg_t);
+	map->nslots = decode_uleb128 (buf, &buf);
+	flags = decode_uleb128 (buf, &buf);
+	map->has_ref_slots = (flags & 1) ? 1 : 0;
+	map->has_pin_slots = (flags & 2) ? 1 : 0;
+	map->has_ref_regs = (flags & 4) ? 1 : 0;
+	map->has_pin_regs = (flags & 8) ? 1 : 0;
+	map->callsite_entry_size = ((flags >> 4) & 0x3) + 1;
+	freg = flags >> 6;
+	map->frame_reg = decode_frame_reg (freg);
+	map->used_int_regs = decode_regmask (decode_uleb128 (buf, &buf));
+	if (map->has_ref_regs) {
+		map->reg_ref_mask = decode_regmask (decode_uleb128 (buf, &buf));
+		n = 0;
+		for (i = 0; i < NREGS; ++i)
+			if (map->reg_ref_mask & (1 << i))
+				n ++;
+		map->nref_regs = n;
+	}
+	if (map->has_pin_regs) {
+		map->reg_pin_mask = decode_regmask (decode_uleb128 (buf, &buf));
+		n = 0;
+		for (i = 0; i < NREGS; ++i)
+			if (map->reg_pin_mask & (1 << i))
+				n ++;
+		map->npin_regs = n;
+	}
+	map->ncallsites = decode_uleb128 (buf, &buf);
+
+	stack_bitmap_size = (ALIGN_TO (map->nslots, 8) / 8) * map->ncallsites;
+	reg_ref_bitmap_size = (ALIGN_TO (map->nref_regs, 8) / 8) * map->ncallsites;
+	reg_pin_bitmap_size = (ALIGN_TO (map->npin_regs, 8) / 8) * map->ncallsites;
+	offset = 0;
+	map->stack_ref_bitmap_offset = offset;
+	if (map->has_ref_slots)
+		offset += stack_bitmap_size;
+	map->stack_pin_bitmap_offset = offset;
+	if (map->has_pin_slots)
+		offset += stack_bitmap_size;
+	map->reg_ref_bitmap_offset = offset;
+	if (map->has_ref_regs)
+		offset += reg_ref_bitmap_size;
+	map->reg_pin_bitmap_offset = offset;
+	if (map->has_pin_regs)
+		offset += reg_pin_bitmap_size;
+
+	*endbuf = buf;
+}
 
 static gpointer
 thread_attach_func (void)
 {
-	return g_new0 (TlsData, 1);
+	TlsData *tls;
+
+	tls = g_new0 (TlsData, 1);
+	tls->tid = GetCurrentThreadId ();
+	stats.tlsdata_size += sizeof (TlsData);
+
+	return tls;
+}
+
+static void
+thread_detach_func (gpointer user_data)
+{
+	TlsData *tls = user_data;
+
+	g_free (tls);
 }
 
 static void
@@ -94,6 +547,10 @@ thread_suspend_func (gpointer user_data, void *sigctx)
 {
 	TlsData *tls = user_data;
 
+	if (!tls)
+		/* Happens during startup */
+		return;
+
 	tls->lmf = mono_get_lmf ();
 	if (sigctx) {
 		mono_arch_sigctx_to_monoctx (sigctx, &tls->ctx);
@@ -104,221 +561,555 @@ thread_suspend_func (gpointer user_data, void *sigctx)
 	tls->jit_tls = TlsGetValue (mono_jit_tls_id);
 }
 
-static int precise_frame_count [2], precise_frame_limit = -1;
-static gboolean precise_frame_limit_inited;
-
 #define DEAD_REF ((gpointer)(gssize)0x2a2a2a2a2a2a2a2aULL)
 
+static inline void
+set_bit (guint8 *bitmap, int width, int y, int x)
+{
+	bitmap [(width * y) + (x / 8)] |= (1 << (x % 8));
+}
+
+static inline void
+clear_bit (guint8 *bitmap, int width, int y, int x)
+{
+	bitmap [(width * y) + (x / 8)] &= ~(1 << (x % 8));
+}
+
+static inline int
+get_bit (guint8 *bitmap, int width, int y, int x)
+{
+	return bitmap [(width * y) + (x / 8)] & (1 << (x % 8));
+}
+
+static const char*
+slot_type_to_string (GCSlotType type)
+{
+	switch (type) {
+	case SLOT_REF:
+		return "ref";
+	case SLOT_NOREF:
+		return "noref";
+	case SLOT_PIN:
+		return "pin";
+	default:
+		g_assert_not_reached ();
+		return NULL;
+	}
+}
+
+static inline mgreg_t
+get_frame_pointer (MonoContext *ctx, int frame_reg)
+{
+#if defined(TARGET_AMD64)
+		if (frame_reg == AMD64_RSP)
+			return ctx->rsp;
+		else if (frame_reg == AMD64_RBP)
+			return ctx->rbp;
+#elif defined(TARGET_X86)
+		if (frame_reg == X86_ESP)
+			return ctx->esp;
+		else if (frame_reg == X86_EBP)
+			return ctx->ebp;
+#endif
+		g_assert_not_reached ();
+		return 0;
+}
+
+/*
+ * conservatively_pass:
+ *
+ *   Mark a thread stack conservatively and collect information needed by the precise pass.
+ */
 static void
-thread_mark_func (gpointer user_data, guint8 *stack_start, guint8 *stack_end, gboolean precise)
+conservative_pass (TlsData *tls, guint8 *stack_start, guint8 *stack_end)
 {
-	TlsData *tls = user_data;
-	MonoJitInfo *ji, res;
+	MonoJitInfo *ji;
 	MonoContext ctx, new_ctx;
-	MonoLMF *lmf = tls->lmf;
+	MonoLMF *lmf;
 	guint8 *stack_limit;
-	gboolean last = TRUE, managed;
+	gboolean last = TRUE;
 	GCMap *map;
-	guint8* fp, *locals_start, *locals_end;
-	int i, pc_offset;
-	int scanned = 0, scanned_precisely, scanned_conservatively;
+	GCMap map_tmp;
+	GCEncodedMap *emap;
+	guint8* fp, *p, *real_frame_start, *frame_start, *frame_end;
+	int i, pc_offset, cindex, bitmap_width;
+	int scanned = 0, scanned_precisely, scanned_conservatively, scanned_registers;
+	gboolean res;
+	StackFrameInfo frame;
+	mgreg_t *reg_locations [MONO_MAX_IREGS];
+	mgreg_t *new_reg_locations [MONO_MAX_IREGS];
+	guint8 *bitmaps;
+	FrameInfo *fi;
+	guint32 precise_regmask;
+
+	if (tls) {
+		tls->nframes = 0;
+		tls->ref_to_track = NULL;
+	}
 
-	if (mono_thread_internal_current () == NULL) {
-		if (!precise)
-			mono_gc_conservatively_scan_area (stack_start, stack_end);			
+	/* tls == NULL can happen during startup */
+	if (mono_thread_internal_current () == NULL || !tls) {
+		mono_gc_conservatively_scan_area (stack_start, stack_end);
+		stats.scanned_stacks += stack_end - stack_start;
 		return;
 	}
 
+	lmf = tls->lmf;
+	frame.domain = NULL;
+
 	/* Number of bytes scanned based on GC map data */
 	scanned = 0;
 	/* Number of bytes scanned precisely based on GC map data */
 	scanned_precisely = 0;
 	/* Number of bytes scanned conservatively based on GC map data */
 	scanned_conservatively = 0;
-
-	/* FIXME: sgen-gc.c calls this multiple times for each major collection from pin_from_roots */
-
-	/* FIXME: Use real gc descriptors instead of bitmaps */
+	/* Number of bytes scanned conservatively in register save areas */
+	scanned_registers = 0;
 
 	/* This is one past the last address which we have scanned */
 	stack_limit = stack_start;
 
-	DEBUG (printf ("*** %s stack marking %p-%p ***\n", precise ? "Precise" : "Conservative", stack_start, stack_end));
-
-	if (!tls->has_context) {
+	if (!tls->has_context)
 		memset (&new_ctx, 0, sizeof (ctx));
+	else
+		memcpy (&new_ctx, &tls->ctx, sizeof (MonoContext));
+
+	memset (reg_locations, 0, sizeof (reg_locations));
+	memset (new_reg_locations, 0, sizeof (new_reg_locations));
+
+	while (TRUE) {
+		memcpy (&ctx, &new_ctx, sizeof (ctx));
+
+		for (i = 0; i < MONO_MAX_IREGS; ++i) {
+			if (new_reg_locations [i]) {
+				/*
+				 * If the current frame saves the register, it means it might modify its
+				 * value, thus the old location might not contain the same value, so
+				 * we have to mark it conservatively.
+				 */
+				if (reg_locations [i]) {
+					DEBUG (fprintf (logfile, "\tscan saved reg %s location %p.\n", mono_arch_regname (i), reg_locations [i]));
+					mono_gc_conservatively_scan_area (reg_locations [i], reg_locations [i] + sizeof (mgreg_t));
+					scanned_registers += sizeof (mgreg_t);
+				}
 
-		while (TRUE) {
-			memcpy (&ctx, &new_ctx, sizeof (ctx));
+				reg_locations [i] = new_reg_locations [i];
 
-			g_assert ((guint64)stack_limit % sizeof (gpointer) == 0);
+				DEBUG (fprintf (logfile, "\treg %s is now at location %p.\n", mono_arch_regname (i), reg_locations [i]));
+			}
+		}
 
-			// FIXME: This doesn't work with appdomain transitions
-			ji = mono_find_jit_info (mono_domain_get (), tls->jit_tls, &res, NULL,
-									 &ctx, &new_ctx, NULL, &lmf, NULL, &managed);
-			if (ji == (gpointer)-1)
-				break;
+		g_assert ((mgreg_t)stack_limit % sizeof (mgreg_t) == 0);
 
-			/* The last frame can be in any state so mark conservatively */
-			if (last) {
-				last = FALSE;
-				continue;
+		res = mono_find_jit_info_ext (frame.domain ? frame.domain : mono_domain_get (), tls->jit_tls, NULL, &ctx, &new_ctx, NULL, &lmf, new_reg_locations, &frame);
+		if (!res)
+			break;
+
+		ji = frame.ji;
+
+		if (frame.type == FRAME_TYPE_MANAGED_TO_NATIVE) {
+			/*
+			 * These frames are problematic for several reasons:
+			 * - they are unwound through an LMF, and we have no precise register tracking for those.
+			 * - the LMF might not contain a precise ip, so we can't compute the call site.
+			 * - the LMF only unwinds to the wrapper frame, so we get these methods twice.
+			 */
+			DEBUG (fprintf (logfile, "Mark(0): <Managed-to-native transition>\n"));
+			for (i = 0; i < MONO_MAX_IREGS; ++i) {
+				if (reg_locations [i]) {
+					DEBUG (fprintf (logfile, "\tscan saved reg %s location %p.\n", mono_arch_regname (i), reg_locations [i]));
+					mono_gc_conservatively_scan_area (reg_locations [i], reg_locations [i] + sizeof (mgreg_t));
+					scanned_registers += sizeof (mgreg_t);
+				}
+				reg_locations [i] = NULL;
+				new_reg_locations [i] = NULL;
 			}
+			ctx = new_ctx;
+			continue;
+		}
 
-			/* These frames are returned by mono_find_jit_info () two times */
-			if (!managed)
-				continue;
+		/* The last frame can be in any state so mark conservatively */
+		if (last) {
+			if (ji) {
+				DEBUG (char *fname = mono_method_full_name (ji->method, TRUE); fprintf (logfile, "Mark(0): %s+0x%x (%p)\n", fname, pc_offset, (gpointer)MONO_CONTEXT_GET_IP (&ctx)); g_free (fname));
+			}
+			DEBUG (fprintf (logfile, "\t <Last frame>\n"));
+			last = FALSE;
+			continue;
+		}
 
-			/* Scan the frame of this method */
+		pc_offset = (guint8*)MONO_CONTEXT_GET_IP (&ctx) - (guint8*)ji->code_start;
 
-			/*
-			 * A frame contains the following:
-			 * - saved registers
-			 * - saved args
-			 * - locals
-			 * - spill area
-			 * - localloc-ed memory
-			 * Currently, only the locals are scanned precisely.
+		/* These frames are very problematic */
+		if (ji->method->wrapper_type == MONO_WRAPPER_MANAGED_TO_NATIVE) {
+			DEBUG (char *fname = mono_method_full_name (ji->method, TRUE); fprintf (logfile, "Mark(0): %s+0x%x (%p)\n", fname, pc_offset, (gpointer)MONO_CONTEXT_GET_IP (&ctx)); g_free (fname));
+			DEBUG (fprintf (logfile, "\tSkip.\n"));
+			continue;
+		}
+
+		/* All the other frames are at a call site */
+
+		if (tls->nframes == MAX_FRAMES) {
+			/* 
+			 * Can't save information since the array is full. So scan the rest of the
+			 * stack conservatively.
 			 */
+			DEBUG (fprintf (logfile, "Mark (0): Frame stack full.\n"));
+			break;
+		}
+
+		/* Scan the frame of this method */
+
+		/*
+		 * A frame contains the following:
+		 * - saved registers
+		 * - saved args
+		 * - locals
+		 * - spill area
+		 * - localloc-ed memory
+		 */
+		g_assert (pc_offset >= 0);
+
+		emap = ji->gc_info;
+
+		if (!emap) {
+			DEBUG (char *fname = mono_method_full_name (ji->method, TRUE); fprintf (logfile, "Mark(0): %s+0x%x (%p)\n", fname, pc_offset, (gpointer)MONO_CONTEXT_GET_IP (&ctx)); g_free (fname));
+			DEBUG (fprintf (logfile, "\tNo GC Map.\n"));
+			continue;
+		}
 
-			map = ji->gc_info;
+		/* The embedded callsite table requires this */
+		g_assert (((mgreg_t)emap % 4) == 0);
 
-			if (!map) {
-				DEBUG (char *fname = mono_method_full_name (ji->method, TRUE); printf ("Mark(%d): No GC map for %s\n", precise, fname); g_free (fname));
+		/*
+		 * Debugging aid to control the number of frames scanned precisely
+		 */
+		if (!precise_frame_limit_inited) {
+			if (getenv ("MONO_PRECISE_COUNT"))
+				precise_frame_limit = atoi (getenv ("MONO_PRECISE_COUNT"));
+			precise_frame_limit_inited = TRUE;
+		}
+				
+		if (precise_frame_limit != -1) {
+			if (precise_frame_count [FALSE] == precise_frame_limit)
+				printf ("LAST PRECISE FRAME: %s\n", mono_method_full_name (ji->method, TRUE));
+			if (precise_frame_count [FALSE] > precise_frame_limit)
 				continue;
-			}
+		}
+		precise_frame_count [FALSE] ++;
+
+		/* Decode the encoded GC map */
+		map = &map_tmp;
+		memset (map, 0, sizeof (GCMap));
+		decode_gc_map (&emap->encoded [0], map, &p);
+		p = (guint8*)ALIGN_TO (p, map->callsite_entry_size);
+		map->callsites.offsets8 = p;
+		p += map->callsite_entry_size * map->ncallsites;
+		bitmaps = p;
+
+		fp = (guint8*)get_frame_pointer (&ctx, map->frame_reg);
+
+		real_frame_start = fp + map->start_offset;
+		frame_start = fp + map->start_offset + map->map_offset;
+		frame_end = fp + map->end_offset;
+
+		DEBUG (char *fname = mono_method_full_name (ji->method, TRUE); fprintf (logfile, "Mark(0): %s+0x%x (%p) limit=%p fp=%p frame=%p-%p (%d)\n", fname, pc_offset, (gpointer)MONO_CONTEXT_GET_IP (&ctx), stack_limit, fp, frame_start, frame_end, (int)(frame_end - frame_start)); g_free (fname));
+
+		/* Find the callsite index */
+		if (map->callsite_entry_size == 1) {
+			for (i = 0; i < map->ncallsites; ++i)
+				/* ip points inside the call instruction */
+				if (map->callsites.offsets8 [i] == pc_offset + 1)
+					break;
+		} else if (map->callsite_entry_size == 2) {
+			// FIXME: Use a binary search
+			for (i = 0; i < map->ncallsites; ++i)
+				/* ip points inside the call instruction */
+				if (map->callsites.offsets16 [i] == pc_offset + 1)
+					break;
+		} else {
+			// FIXME: Use a binary search
+			for (i = 0; i < map->ncallsites; ++i)
+				/* ip points inside the call instruction */
+				if (map->callsites.offsets32 [i] == pc_offset + 1)
+					break;
+		}
+		if (i == map->ncallsites) {
+			printf ("Unable to find ip offset 0x%x in callsite list of %s.\n", pc_offset + 1, mono_method_full_name (ji->method, TRUE));
+			g_assert_not_reached ();
+		}
+		cindex = i;
 
-			/*
-			 * Debugging aid to control the number of frames scanned precisely
-			 */
-			if (!precise_frame_limit_inited) {
-				if (getenv ("MONO_PRECISE_COUNT"))
-					precise_frame_limit = atoi (getenv ("MONO_PRECISE_COUNT"));
-				precise_frame_limit_inited = TRUE;
+		g_assert (real_frame_start >= stack_limit);
+
+		if (real_frame_start > stack_limit) {
+			/* This scans the previously skipped frames as well */
+			DEBUG (fprintf (logfile, "\tscan area %p-%p (%d).\n", stack_limit, real_frame_start, (int)(real_frame_start - stack_limit)));
+			mono_gc_conservatively_scan_area (stack_limit, real_frame_start);
+			stats.scanned_other += real_frame_start - stack_limit;
+		}
+
+		/* Mark stack slots */
+		if (map->has_pin_slots) {
+			int bitmap_width = ALIGN_TO (map->nslots, 8) / 8;
+			guint8 *pin_bitmap = &bitmaps [map->stack_pin_bitmap_offset + (bitmap_width * cindex)];
+			guint8 *p;
+			gboolean pinned;
+
+			p = frame_start;
+			for (i = 0; i < map->nslots; ++i) {
+				pinned = pin_bitmap [i / 8] & (1 << (i % 8));
+				if (pinned) {
+					DEBUG (fprintf (logfile, "\tscan slot %s0x%x(fp)=%p.\n", (guint8*)p > (guint8*)fp ? "" : "-", ABS ((int)((gssize)p - (gssize)fp)), p));
+					mono_gc_conservatively_scan_area (p, p + sizeof (mgreg_t));
+					scanned_conservatively += sizeof (mgreg_t);
+				} else {
+					scanned_precisely += sizeof (mgreg_t);
+				}
+				p += sizeof (mgreg_t);
 			}
+		} else {
+			scanned_precisely += (map->nslots * sizeof (mgreg_t));
+		}
+
+		/* The area outside of start-end is NOREF */
+		scanned_precisely += (map->end_offset - map->start_offset) - (map->nslots * sizeof (mgreg_t));
+
+		/* Mark registers */
+		precise_regmask = map->used_int_regs | (1 << map->frame_reg);
+		if (map->has_pin_regs) {
+			int bitmap_width = ALIGN_TO (map->npin_regs, 8) / 8;
+			guint8 *pin_bitmap = &bitmaps [map->reg_pin_bitmap_offset + (bitmap_width * cindex)];
+			int bindex = 0;
+			for (i = 0; i < NREGS; ++i) {
+				if (!(map->used_int_regs & (1 << i)))
+					continue;
 				
-			if (precise_frame_limit != -1) {
-				if (precise_frame_count [precise] == precise_frame_limit)
-					printf ("LAST PRECISE FRAME: %s\n", mono_method_full_name (ji->method, TRUE));
-				if (precise_frame_count [precise] > precise_frame_limit)
+				if (!(map->reg_pin_mask & (1 << i)))
 					continue;
+
+				if (pin_bitmap [bindex / 8] & (1 << (bindex % 8))) {
+					DEBUG (fprintf (logfile, "\treg %s saved at 0x%p is pinning.\n", mono_arch_regname (i), reg_locations [i]));
+					precise_regmask &= ~(1 << i);
+				}
+				bindex ++;
 			}
-			precise_frame_count [precise] ++;
+		}
 
-#ifdef __x86_64__
-			if (map->frame_reg == AMD64_RSP)
-				fp = (guint8*)ctx.rsp;
-			else if (map->frame_reg == AMD64_RBP)
-				fp = (guint8*)ctx.rbp;
-			else
-				g_assert_not_reached ();
-#else
-			fp = NULL;
-			g_assert_not_reached ();
-#endif
+		scanned += map->end_offset - map->start_offset;
+
+		g_assert (scanned == scanned_precisely + scanned_conservatively);
+
+		stack_limit = frame_end;
+
+		/* Save information for the precise pass */
+		fi = &tls->frames [tls->nframes];
+		fi->nslots = map->nslots;
+		bitmap_width = ALIGN_TO (map->nslots, 8) / 8;
+		if (map->has_ref_slots)
+			fi->bitmap = &bitmaps [map->stack_ref_bitmap_offset + (bitmap_width * cindex)];
+		else
+			fi->bitmap = NULL;
+		fi->frame_start_offset = frame_start - stack_start;
+		fi->nreg_locations = 0;
+		DEBUG_PRECISE (fi->ji = ji);
+		DEBUG_PRECISE (fi->fp = fp);
+
+		if (map->has_ref_regs) {
+			int bitmap_width = ALIGN_TO (map->nref_regs, 8) / 8;
+			guint8 *ref_bitmap = &bitmaps [map->reg_ref_bitmap_offset + (bitmap_width * cindex)];
+			int bindex = 0;
+			for (i = 0; i < NREGS; ++i) {
+				if (!(map->reg_ref_mask & (1 << i)))
+					continue;
 
-			locals_start = fp + map->locals_offset;
-			locals_end = locals_start + map->locals_size;
+				if (reg_locations [i] && (ref_bitmap [bindex / 8] & (1 << (bindex % 8)))) {
+					DEBUG_PRECISE (fi->regs [fi->nreg_locations] = i);
+					DEBUG (fprintf (logfile, "\treg %s saved at 0x%p is ref.\n", mono_arch_regname (i), reg_locations [i]));
+					fi->reg_locations [fi->nreg_locations] = (guint8*)reg_locations [i] - stack_start;
+					fi->nreg_locations ++;
+				}
+				bindex ++;
+			}
+		}
 
-			pc_offset = (guint8*)MONO_CONTEXT_GET_IP (&ctx) - (guint8*)ji->code_start;
-			g_assert (pc_offset >= 0);
+		/*
+		 * Clear locations of precisely stacked registers.
+		 */
+		if (precise_regmask) {
+			for (i = 0; i < NREGS; ++i) {
+				if (precise_regmask & (1 << i)) {
+					/*
+					 * The method uses this register, and we have precise info for it.
+					 * This means the location will be scanned precisely.
+					 * Tell the code at the beginning of the loop that this location is
+					 * processed.
+					 */
+					if (reg_locations [i])
+						DEBUG (fprintf (logfile, "\treg %s at location %p (==%p) is precise.\n", mono_arch_regname (i), reg_locations [i], (gpointer)*reg_locations [i]));
+					reg_locations [i] = NULL;
+				}
+			}
+		}
 
-			DEBUG (char *fname = mono_method_full_name (ji->method, TRUE); printf ("Mark(%d): %s+0x%x (%p) limit=%p fp=%p locals=%p-%p (%d)\n", precise, fname, pc_offset, (gpointer)MONO_CONTEXT_GET_IP (&ctx), stack_limit, fp, locals_start, locals_end, (int)(locals_end - locals_start)); g_free (fname));
+		tls->nframes ++;
+	}
 
-			/* 
-			 * FIXME: Add a function to mark using a bitmap, to avoid doing a 
-			 * call for each object.
-			 */
+	/* Scan the remaining register save locations */
+	for (i = 0; i < MONO_MAX_IREGS; ++i) {
+		if (reg_locations [i]) {
+			DEBUG (fprintf (logfile, "\tscan saved reg location %p.\n", reg_locations [i]));
+			mono_gc_conservatively_scan_area (reg_locations [i], reg_locations [i] + sizeof (mgreg_t));
+			scanned_registers += sizeof (mgreg_t);
+		}
+		if (new_reg_locations [i]) {
+			DEBUG (fprintf (logfile, "\tscan saved reg location %p.\n", new_reg_locations [i]));
+			mono_gc_conservatively_scan_area (new_reg_locations [i], new_reg_locations [i] + sizeof (mgreg_t));
+			scanned_registers += sizeof (mgreg_t);
+		}
+	}
 
-			scanned += locals_end - locals_start;
+	if (stack_limit < stack_end) {
+		DEBUG (fprintf (logfile, "\tscan remaining stack %p-%p (%d).\n", stack_limit, stack_end, (int)(stack_end - stack_limit)));
+		mono_gc_conservatively_scan_area (stack_limit, stack_end);
+		stats.scanned_native += stack_end - stack_limit;
+	}
 
-			/* Pinning needs to be done first, then the precise scan later */
+	DEBUG (fprintf (logfile, "Marked %d bytes, p=%d,c=%d out of %d.\n", scanned, scanned_precisely, scanned_conservatively, (int)(stack_end - stack_start)));
 
-			if (!precise) {
-				g_assert (locals_start >= stack_limit);
+	stats.scanned_stacks += stack_end - stack_start;
+	stats.scanned += scanned;
+	stats.scanned_precisely += scanned_precisely;
+	stats.scanned_conservatively += scanned_conservatively;
+	stats.scanned_registers += scanned_registers;
 
-				if (locals_start > stack_limit) {
-					/* This scans the previously skipped frames as well */
-					DEBUG (printf ("\tscan area %p-%p.\n", stack_limit, locals_start));
-					mono_gc_conservatively_scan_area (stack_limit, locals_start);
-				}
+	//mono_gc_conservatively_scan_area (stack_start, stack_end);
+}
 
-				if (map->slots) {
-					guint8 *p;
+/*
+ * precise_pass:
+ *
+ *   Mark a thread stack precisely based on information saved during the conservative
+ * pass.
+ */
+static void
+precise_pass (TlsData *tls, guint8 *stack_start, guint8 *stack_end)
+{
+	int findex, i;
+	FrameInfo *fi;
+	guint8 *frame_start;
 
-					p = locals_start;
-					for (i = 0; i < map->nslots; ++i) {
-						if (map->slots [i] == SLOT_PIN) {
-							DEBUG (printf ("\tscan slot %s0x%x(fp)=%p.\n", (guint8*)p > (guint8*)fp ? "" : "-", ABS ((int)((gssize)p - (gssize)fp)), p));
-							mono_gc_conservatively_scan_area (p, p + sizeof (gpointer));
-							scanned_conservatively += sizeof (gpointer);
-						}
-						p += sizeof (gpointer);
-					}
-				}
+	if (!tls)
+		return;
 
-				stack_limit = locals_end;
-			} else {
-				if (map->slots) {
-					int loffset = 0;
-
-					for (i = 0; i < map->nslots; ++i) {
-						if (map->slots [i] == SLOT_REF) {
-							MonoObject **ptr = (MonoObject**)(locals_start + (i * sizeof (gpointer)));
-							MonoObject *obj = *ptr;
-
-							if (pc_offset >= map->live_ranges [loffset] && pc_offset < map->live_ranges [loffset + 1] && obj != DEAD_REF) {
-								if (obj) {
-									DEBUG (printf ("\tref %s0x%x(fp)=%p: %p ->", (guint8*)ptr >= (guint8*)fp ? "" : "-", ABS ((int)((gssize)ptr - (gssize)fp)), ptr, obj));
-									*ptr = mono_gc_scan_object (obj);
-									DEBUG (printf (" %p.\n", *ptr));
-								} else {
-									DEBUG (printf ("\tref %s0x%x(fp)=%p: %p.\n", (guint8*)ptr >= (guint8*)fp ? "" : "-", ABS ((int)((gssize)ptr - (gssize)fp)), ptr, obj));
-								}
-							} else {
-								DEBUG (printf ("\tref %s0x%x(fp)=%p: dead (%p)\n", (guint8*)ptr >= (guint8*)fp ? "" : "-", ABS ((int)((gssize)ptr - (gssize)fp)), ptr, obj));
-								/*
-								 * This serves two purposes:
-								 * - fail fast if the live range is incorrect, and
-								 * the JITted code tries to access this object
-								 * - it avoids problems when a dead slot becomes live
-								 * again due to a backward branch 
-								 * (see test_0_liveness_6).
-								 */
-								*ptr = DEAD_REF;
-							}
+	for (findex = 0; findex < tls->nframes; findex ++) {
+		/* Load information saved by the !precise pass */
+		fi = &tls->frames [findex];
+		frame_start = stack_start + fi->frame_start_offset;
 
-							loffset += 2;
-							scanned_precisely += sizeof (gpointer);
-						} else if (map->slots [i] == SLOT_NOREF) {
-							scanned_precisely += sizeof (gpointer);
-						}
+		DEBUG (char *fname = mono_method_full_name (fi->ji->method, TRUE); fprintf (logfile, "Mark(1): %s\n", fname); g_free (fname));
+
+		/* 
+		 * FIXME: Add a function to mark using a bitmap, to avoid doing a 
+		 * call for each object.
+		 */
+
+		/* Mark stack slots */
+		if (fi->bitmap) {
+			guint8 *ref_bitmap = fi->bitmap;
+			gboolean live;
+
+			for (i = 0; i < fi->nslots; ++i) {
+				MonoObject **ptr = (MonoObject**)(frame_start + (i * sizeof (mgreg_t)));
+
+				live = ref_bitmap [i / 8] & (1 << (i % 8));
+
+				if (live) {
+					MonoObject *obj = *ptr;
+					if (obj) {
+						DEBUG (fprintf (logfile, "\tref %s0x%x(fp)=%p: %p ->", (guint8*)ptr >= (guint8*)fi->fp ? "" : "-", ABS ((int)((gssize)ptr - (gssize)fi->fp)), ptr, obj));
+						*ptr = mono_gc_scan_object (obj);
+						DEBUG (fprintf (logfile, " %p.\n", *ptr));
+					} else {
+						DEBUG (fprintf (logfile, "\tref %s0x%x(fp)=%p: %p.\n", (guint8*)ptr >= (guint8*)fi->fp ? "" : "-", ABS ((int)((gssize)ptr - (gssize)fi->fp)), ptr, obj));
 					}
+				} else {
+#if 0
+					/*
+					 * This is disabled because the pointer takes up a lot of space.
+					 * Stack slots might be shared between ref and non-ref variables ?
+					 */
+					if (map->ref_slots [i / 8] & (1 << (i % 8))) {
+						DEBUG (fprintf (logfile, "\tref %s0x%x(fp)=%p: dead (%p)\n", (guint8*)ptr >= (guint8*)fi->fp ? "" : "-", ABS ((int)((gssize)ptr - (gssize)fi->fp)), ptr, *ptr));
+						/*
+						 * Fail fast if the live range is incorrect, and
+						 * the JITted code tries to access this object
+						 */
+						*ptr = DEAD_REF;
+					}
+#endif
 				}
 			}
 		}
 
-		if (stack_limit < stack_end && !precise) {
-			DEBUG (printf ("\tscan area %p-%p.\n", stack_limit, stack_end));
-			mono_gc_conservatively_scan_area (stack_limit, stack_end);
-		}
-	} else {
-		// FIXME:
-		if (!precise) {
-			DEBUG (printf ("\tno context, scan area %p-%p.\n", stack_start, stack_end));
-			mono_gc_conservatively_scan_area (stack_start, stack_end);
-		}
+		/* Mark registers */
+
+		/*
+		 * Registers are different from stack slots, they have no address where they
+		 * are stored. Instead, some frame below this frame in the stack saves them
+		 * in its prolog to the stack. We can mark this location precisely.
+		 */
+		for (i = 0; i < fi->nreg_locations; ++i) {
+			/*
+			 * reg_locations [i] contains the address of the stack slot where
+			 * a reg was last saved, so mark that slot.
+			 */
+			MonoObject **ptr = (MonoObject**)((guint8*)stack_start + fi->reg_locations [i]);
+			MonoObject *obj = *ptr;
+
+			if (obj) {
+				DEBUG (fprintf (logfile, "\treg %s saved at %p: %p ->", mono_arch_regname (fi->regs [i]), ptr, obj));
+				*ptr = mono_gc_scan_object (obj);
+				DEBUG (fprintf (logfile, " %p.\n", *ptr));
+			} else {
+				DEBUG (fprintf (logfile, "\treg %s saved at %p: %p\n", mono_arch_regname (fi->regs [i]), ptr, obj));
+			}
+		}	
 	}
 
-	DEBUG (printf ("Marked %d bytes, p=%d,c=%d out of %d.\n", scanned, scanned_precisely, scanned_conservatively, (int)(stack_end - stack_start)));
+	/*
+	 * Debugging aid to check for missed refs.
+	 */
+	if (tls->ref_to_track) {
+		mgreg_t *p;
 
-	//mono_gc_conservatively_scan_area (stack_start, stack_end);
+		for (p = (mgreg_t*)stack_start; p < (mgreg_t*)stack_end; ++p)
+			if (*p == (mgreg_t)tls->ref_to_track)
+				printf ("REF AT %p.\n", p);
+	}
 }
 
-#define set_slot(slots, nslots, pos, val) do {	\
-		g_assert ((pos) < (nslots));		   \
-		(slots) [(pos)] = (val);			   \
-	} while (0)
+/*
+ * thread_mark_func:
+ *
+ *   This is called by the GC twice to mark a thread stack. PRECISE is FALSE at the first
+ * call, and TRUE at the second. USER_DATA points to a TlsData
+ * structure filled up by thread_suspend_func. 
+ */
+static void
+thread_mark_func (gpointer user_data, guint8 *stack_start, guint8 *stack_end, gboolean precise)
+{
+	TlsData *tls = user_data;
+
+	DEBUG (fprintf (logfile, "****************************************\n"));
+	DEBUG (fprintf (logfile, "*** %s stack marking for thread %p (%p-%p) ***\n", precise ? "Precise" : "Conservative", tls ? GUINT_TO_POINTER (tls->tid) : NULL, stack_start, stack_end));
+	DEBUG (fprintf (logfile, "****************************************\n"));
+
+	if (!precise)
+		conservative_pass (tls, stack_start, stack_end);
+	else
+		precise_pass (tls, stack_start, stack_end);
+}
 
 static void
 mini_gc_init_gc_map (MonoCompile *cfg)
@@ -326,138 +1117,438 @@ mini_gc_init_gc_map (MonoCompile *cfg)
 	if (COMPILE_LLVM (cfg))
 		return;
 
-	/* See mini_gc_create_gc_map () for comments as to why these are needed */
+	if (!cfg->compile_aot && conservative_stack_mark)
+		return;
 
-	/* Extend the live ranges using the liveness information */
-	cfg->compute_precise_live_ranges = TRUE;
-	/* Is this still needed ? */
-	cfg->disable_reuse_ref_stack_slots = TRUE;
-	/* 
-	 * Initialize all variables holding refs to null in the initlocals bblock, not just
-	 *  variables representing IL locals.
-	 */
-	cfg->init_ref_vars = TRUE;
-	/* Prevent these initializations from being optimized away */
-	cfg->disable_initlocals_opt_refs = TRUE;
+#if 1
+	/* Debugging support */
+	{
+		static int precise_count;
+
+		precise_count ++;
+		if (getenv ("MONO_GCMAP_COUNT")) {
+			if (precise_count == atoi (getenv ("MONO_GCMAP_COUNT")))
+				printf ("LAST: %s\n", mono_method_full_name (cfg->method, TRUE));
+			if (precise_count > atoi (getenv ("MONO_GCMAP_COUNT")))
+				return;
+		}
+	}
+#endif
+
+	cfg->compute_gc_maps = TRUE;
+
+	cfg->gc_info = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoCompileGC));
 }
 
+/*
+ * mini_gc_set_slot_type_from_fp:
+ *
+ *   Set the GC slot type of the stack slot identified by SLOT_OFFSET, which should be
+ * relative to the frame pointer. By default, all stack slots are type PIN, so there is no
+ * need to call this function for those slots.
+ */
 void
-mini_gc_create_gc_map (MonoCompile *cfg)
+mini_gc_set_slot_type_from_fp (MonoCompile *cfg, int slot_offset, GCSlotType type)
 {
-	GCMap *map;
-	int i, nslots, alloc_size, loffset, min_offset, max_offset;
-	StackSlotType *slots = NULL;
-	gboolean norefs = FALSE;
-	guint32 *live_range_start, *live_range_end;
+	MonoCompileGC *gcfg = (MonoCompileGC*)cfg->gc_info;
 
-	/*
-	 * Since we currently don't use GC safe points, we need to create GC maps which
-	 * are precise at every instruction within a method. We use the live ranges
-	 * calculated by the JIT in mono_spill_global_vars () for this. Unfortunately by 
-	 * default these are not precise enought for several reasons:
-	 * - the current calculation of MonoMethodVar->live_range_start/end is incorrect,
-	 * it doesn't take into account loops etc. It needs to use the results of the
-	 * liveness analysis pass.
-	 * - the current liveness analysis pass is too conservative, ie. the live_in/out
-	 * sets computed by it are sometimes include too many variables, for example because
-	 * of the bogus links between bblocks. This means the live_in/out sets cannot be
-	 * used to reliably compute precise live ranges.
-	 * - stack slots are shared, which means the live ranges of stack slots have holes
-	 * in them.
-	 * - the live ranges of variables used in out-of-line bblocks also have holes in
-	 * them.
-	 * - the live ranges of variables used for handling stack args also have holes in
-	 * them:
-	 *   if (A)
-     *     x = <ref>
-	 *   else
-	 *     x = <ref>
-	 *   <use x>
-	 * Here x is not live between the first and the second assignment.
-	 *
-	 * To work around these problems, we set a few cfg flags in mini_init_gc_maps ()
-	 * which guarantee that the live range of stack slots have no holes, i.e. they hold
-	 * a valid value (or null) during their entire live range.
-	 * FIXME: This doesn't completely work yet, see test_0_liveness_6 (), where
-	 * a variable becomes dead, then alive again.
-	 */
-	//NOT_IMPLEMENTED;
+	if (!cfg->compute_gc_maps)
+		return;
 
-	if (!(cfg->comp_done & MONO_COMP_LIVENESS))
-		/* Without liveness info, the live ranges are not precise enough */
+	g_assert (slot_offset % sizeof (mgreg_t) == 0);
+
+	gcfg->stack_slots_from_fp = g_slist_prepend_mempool (cfg->mempool, gcfg->stack_slots_from_fp, GINT_TO_POINTER (((slot_offset) << 16) | type));
+}
+
+/*
+ * mini_gc_set_slot_type_from_cfa:
+ *
+ *   Set the GC slot type of the stack slot identified by SLOT_OFFSET, which should be
+ * relative to the DWARF CFA value. This should be called from mono_arch_emit_prolog ().
+ * If type is STACK_REF, the slot is assumed to be live from the end of the prolog until
+ * the end of the method. By default, all stack slots are type PIN, so there is no need to
+ * call this function for those slots.
+ */
+void
+mini_gc_set_slot_type_from_cfa (MonoCompile *cfg, int slot_offset, GCSlotType type)
+{
+	MonoCompileGC *gcfg = (MonoCompileGC*)cfg->gc_info;
+	int slot = - (slot_offset / sizeof (mgreg_t));
+
+	if (!cfg->compute_gc_maps)
 		return;
 
-#ifdef TARGET_AMD64
-	min_offset = ALIGN_TO (cfg->locals_min_stack_offset, sizeof (gpointer));
-	max_offset = cfg->locals_max_stack_offset;
-#else
-	/* min/max stack offset needs to be computed in mono_arch_allocate_vars () */
-	NOT_IMPLEMENTED;
-#endif
+	g_assert (slot_offset <= 0);
+	g_assert (slot_offset % sizeof (mgreg_t) == 0);
 
-	for (i = cfg->locals_start; i < cfg->num_varinfo; i++) {
-		MonoInst *ins = cfg->varinfo [i];
-		MonoType *t = ins->inst_vtype;
+	gcfg->stack_slots_from_cfa = g_slist_prepend_mempool (cfg->mempool, gcfg->stack_slots_from_cfa, GUINT_TO_POINTER (((slot) << 16) | type));
+}
 
-		if ((MONO_TYPE_ISSTRUCT (t) && ins->klass->has_references))
-			break;
-		if (MONO_TYPE_ISSTRUCT (t))
-			break;
-		if (t->byref || t->type == MONO_TYPE_PTR)
-			break;
-		if (ins && ins->opcode == OP_REGOFFSET && MONO_TYPE_IS_REFERENCE (ins->inst_vtype))
-			break;
+static inline int
+fp_offset_to_slot (MonoCompile *cfg, int offset)
+{
+	MonoCompileGC *gcfg = cfg->gc_info;
+
+	return (offset - gcfg->min_offset) / sizeof (mgreg_t);
+}
+
+static inline int
+slot_to_fp_offset (MonoCompile *cfg, int slot)
+{
+	MonoCompileGC *gcfg = cfg->gc_info;
+
+	return (slot * sizeof (mgreg_t)) + gcfg->min_offset;
+}
+
+static inline void
+set_slot (MonoCompileGC *gcfg, int slot, int callsite_index, GCSlotType type)
+{
+	g_assert (slot >= 0 && slot < gcfg->nslots);
+
+	if (type == SLOT_PIN) {
+		clear_bit (gcfg->stack_ref_bitmap, gcfg->stack_bitmap_width, callsite_index, slot);
+		set_bit (gcfg->stack_pin_bitmap, gcfg->stack_bitmap_width, callsite_index, slot);
+	} else if (type == SLOT_REF) {
+		set_bit (gcfg->stack_ref_bitmap, gcfg->stack_bitmap_width, callsite_index, slot);
+		clear_bit (gcfg->stack_pin_bitmap, gcfg->stack_bitmap_width, callsite_index, slot);
+	} else if (type == SLOT_NOREF) {
+		clear_bit (gcfg->stack_ref_bitmap, gcfg->stack_bitmap_width, callsite_index, slot);
+		clear_bit (gcfg->stack_pin_bitmap, gcfg->stack_bitmap_width, callsite_index, slot);
 	}
+}
 
-	if (i == cfg->num_varinfo)
-		norefs = TRUE;
+static inline void
+set_slot_everywhere (MonoCompileGC *gcfg, int slot, GCSlotType type)
+{
+	int cindex;
 
-	if (cfg->verbose_level > 1)
-		printf ("GC Map for %s: 0x%x-0x%x\n", mono_method_full_name (cfg->method, TRUE), min_offset, max_offset);
+	for (cindex = 0; cindex < gcfg->ncallsites; ++cindex)
+		set_slot (gcfg, slot, cindex, type);
+}
 
-	nslots = (max_offset - min_offset) / sizeof (gpointer);
-	if (!norefs) {
-		alloc_size = nslots * sizeof (StackSlotType);
-		slots = mono_domain_alloc0 (cfg->domain, alloc_size);
-		for (i = 0; i < nslots; ++i)
-			slots [i] = SLOT_NOREF;
-		gc_maps_size += alloc_size;
+static inline void
+set_slot_in_range (MonoCompileGC *gcfg, int slot, int from, int to, GCSlotType type)
+{
+	int cindex;
+
+	for (cindex = 0; cindex < gcfg->ncallsites; ++cindex) {
+		int callsite_offset = gcfg->callsites [cindex]->pc_offset;
+		if (callsite_offset >= from && callsite_offset < to)
+			set_slot (gcfg, slot, cindex, type);
 	}
-	live_range_start = g_new (guint32, nslots);
-	live_range_end = g_new (guint32, nslots);
-	loffset = 0;
+}
 
-	for (i = 0; i < nslots; ++i) {
-		live_range_start [i] = (guint32)-1;
-		live_range_end [i] = 0;
+static inline void
+set_reg_slot (MonoCompileGC *gcfg, int slot, int callsite_index, GCSlotType type)
+{
+	g_assert (slot >= 0 && slot < gcfg->nregs);
+
+	if (type == SLOT_PIN) {
+		clear_bit (gcfg->reg_ref_bitmap, gcfg->reg_bitmap_width, callsite_index, slot);
+		set_bit (gcfg->reg_pin_bitmap, gcfg->reg_bitmap_width, callsite_index, slot);
+	} else if (type == SLOT_REF) {
+		set_bit (gcfg->reg_ref_bitmap, gcfg->reg_bitmap_width, callsite_index, slot);
+		clear_bit (gcfg->reg_pin_bitmap, gcfg->reg_bitmap_width, callsite_index, slot);
+	} else if (type == SLOT_NOREF) {
+		clear_bit (gcfg->reg_ref_bitmap, gcfg->reg_bitmap_width, callsite_index, slot);
+		clear_bit (gcfg->reg_pin_bitmap, gcfg->reg_bitmap_width, callsite_index, slot);
+	}
+}
+
+static inline void
+set_reg_slot_everywhere (MonoCompileGC *gcfg, int slot, GCSlotType type)
+{
+	int cindex;
+
+	for (cindex = 0; cindex < gcfg->ncallsites; ++cindex)
+		set_reg_slot (gcfg, slot, cindex, type);
+}
+
+static inline void
+set_reg_slot_in_range (MonoCompileGC *gcfg, int slot, int from, int to, GCSlotType type)
+{
+	int cindex;
+
+	for (cindex = 0; cindex < gcfg->ncallsites; ++cindex) {
+		int callsite_offset = gcfg->callsites [cindex]->pc_offset;
+		if (callsite_offset >= from && callsite_offset < to)
+			set_reg_slot (gcfg, slot, cindex, type);
+	}
+}
+
+static void
+process_spill_slots (MonoCompile *cfg)
+{
+	MonoCompileGC *gcfg = cfg->gc_info;
+	MonoBasicBlock *bb;
+	GSList *l;
+	int i;
+
+	/* Mark all ref/pin spill slots as NOREF by default outside of their live range */
+	for (bb = cfg->bb_entry; bb; bb = bb->next_bb) {
+		for (l = bb->spill_slot_defs; l; l = l->next) {
+			MonoInst *def = l->data;
+			int spill_slot = def->inst_c0;
+			int bank = def->inst_c1;
+			int offset = cfg->spill_info [bank][spill_slot].offset;
+			int slot = fp_offset_to_slot (cfg, offset);
+
+			if (bank == MONO_REG_INT_MP || bank == MONO_REG_INT_REF)
+				set_slot_everywhere (gcfg, slot, SLOT_NOREF);
+		}
+	}
+
+	for (bb = cfg->bb_entry; bb; bb = bb->next_bb) {
+		for (l = bb->spill_slot_defs; l; l = l->next) {
+			MonoInst *def = l->data;
+			int spill_slot = def->inst_c0;
+			int bank = def->inst_c1;
+			int offset = cfg->spill_info [bank][spill_slot].offset;
+			int slot = fp_offset_to_slot (cfg, offset);
+			GCSlotType type;
+
+			if (bank == MONO_REG_INT_MP)
+				type = SLOT_PIN;
+			else
+				type = SLOT_REF;
+
+			/*
+			 * Extend the live interval for the GC tracked spill slots
+			 * defined in this bblock.
+			 * FIXME: This is not needed.
+			 */
+			set_slot_in_range (gcfg, slot, def->backend.pc_offset, bb->native_offset + bb->native_length, type);
+
+			if (cfg->verbose_level > 1)
+				printf ("\t%s spill slot at %s0x%x(fp) (slot = %d)\n", slot_type_to_string (type), offset >= 0 ? "" : "-", ABS (offset), slot);
+		}
+	}
+
+	/* Set fp spill slots to NOREF */
+	for (i = 0; i < cfg->spill_info_len [MONO_REG_DOUBLE]; ++i) {
+		int offset = cfg->spill_info [MONO_REG_DOUBLE][i].offset;
+		int slot;
+
+		if (offset == -1)
+			continue;
+
+		slot = fp_offset_to_slot (cfg, offset);
+
+		set_slot_everywhere (gcfg, slot, SLOT_NOREF);
+		/* FIXME: 32 bit */
+		if (cfg->verbose_level > 1)
+			printf ("\tfp spill slot at %s0x%x(fp) (slot = %d)\n", offset >= 0 ? "" : "-", ABS (offset), slot);
+	}
+
+	/* Set int spill slots to NOREF */
+	for (i = 0; i < cfg->spill_info_len [MONO_REG_INT]; ++i) {
+		int offset = cfg->spill_info [MONO_REG_INT][i].offset;
+		int slot;
+
+		if (offset == -1)
+			continue;
+
+		slot = fp_offset_to_slot (cfg, offset);
+
+		set_slot_everywhere (gcfg, slot, SLOT_NOREF);
+		if (cfg->verbose_level > 1)
+			printf ("\tint spill slot at %s0x%x(fp) (slot = %d)\n", offset >= 0 ? "" : "-", ABS (offset), slot);
+	}
+}
+
+/*
+ * process_other_slots:
+ *
+ *   Process stack slots registered using mini_gc_set_slot_type_... ().
+ */
+static void
+process_other_slots (MonoCompile *cfg)
+{
+	MonoCompileGC *gcfg = cfg->gc_info;
+	GSList *l;
+
+	/* Relative to the CFA */
+	for (l = gcfg->stack_slots_from_cfa; l; l = l->next) {
+		guint data = GPOINTER_TO_UINT (l->data);
+		int cfa_slot = data >> 16;
+		GCSlotType type = data & 0xff;
+		int slot;
+		
+		/*
+		 * Map the cfa relative slot to an fp relative slot.
+		 * slot_addr == cfa - <cfa_slot>*4/8
+		 * fp + cfa_offset == cfa
+		 * -> slot_addr == fp + (cfa_offset - <cfa_slot>*4/8)
+		 */
+		slot = (cfg->cfa_offset / sizeof (mgreg_t)) - cfa_slot - (gcfg->min_offset / sizeof (mgreg_t));
+
+		set_slot_everywhere (gcfg, slot, type);
+
+		if (cfg->verbose_level > 1) {
+			int fp_offset = slot_to_fp_offset (cfg, slot);
+			if (type == SLOT_NOREF)
+				printf ("\tnoref slot at %s0x%x(fp) (slot = %d) (cfa - 0x%x)\n", fp_offset >= 0 ? "" : "-", ABS (fp_offset), slot, (int)(cfa_slot * sizeof (mgreg_t)));
+		}
+	}
+
+	/* Relative to the FP */
+	for (l = gcfg->stack_slots_from_fp; l; l = l->next) {
+		gint data = GPOINTER_TO_INT (l->data);
+		int offset = data >> 16;
+		GCSlotType type = data & 0xff;
+		int slot;
+		
+		slot = fp_offset_to_slot (cfg, offset);
+
+		set_slot_everywhere (gcfg, slot, type);
+
+		/* Liveness for these slots is handled by process_spill_slots () */
+
+		if (cfg->verbose_level > 1) {
+			if (type == SLOT_REF)
+				printf ("\tref slot at fp+0x%x (slot = %d)\n", offset, slot);
+		}
+	}
+}
+
+static void
+process_variables (MonoCompile *cfg)
+{
+	MonoCompileGC *gcfg = cfg->gc_info;
+	MonoMethodSignature *sig = mono_method_signature (cfg->method);
+	int i, locals_min_slot, locals_max_slot, cindex;
+	MonoBasicBlock *bb;
+	MonoInst *tmp;
+	int *pc_offsets;
+	int locals_min_offset = gcfg->locals_min_offset;
+	int locals_max_offset = gcfg->locals_max_offset;
+
+	/* Slots for locals are NOREF by default */
+	locals_min_slot = (locals_min_offset - gcfg->min_offset) / sizeof (mgreg_t);
+	locals_max_slot = (locals_max_offset - gcfg->min_offset) / sizeof (mgreg_t);
+	for (i = locals_min_slot; i < locals_max_slot; ++i) {
+		set_slot_everywhere (gcfg, i, SLOT_NOREF);
 	}
 
-	for (i = cfg->locals_start; i < cfg->num_varinfo; i++) {
+	/*
+	 * Compute the offset where variables are initialized in the first bblock, if any.
+	 */
+	pc_offsets = g_new0 (int, cfg->next_vreg);
+
+	bb = cfg->bb_entry->next_bb;
+	MONO_BB_FOR_EACH_INS (bb, tmp) {
+		if (tmp->opcode == OP_GC_LIVENESS_DEF) {
+			int vreg = tmp->inst_c1;
+			if (pc_offsets [vreg] == 0) {
+				g_assert (tmp->backend.pc_offset > 0);
+				pc_offsets [vreg] = tmp->backend.pc_offset;
+			}
+		}
+	}
+
+	/*
+	 * Stack slots holding arguments are initialized in the prolog.
+	 * This means we can treat them alive for the whole method.
+	 */
+	for (i = 0; i < cfg->num_varinfo; i++) {
 		MonoInst *ins = cfg->varinfo [i];
 		MonoType *t = ins->inst_vtype;
 		MonoMethodVar *vmv;
 		guint32 pos;
+		gboolean byref, is_this = FALSE;
+		gboolean is_arg = i < cfg->locals_start;
 
-		if (norefs)
+		if (ins == cfg->ret)
 			continue;
 
 		vmv = MONO_VARINFO (cfg, i);
 
+		/* For some reason, 'this' is byref */
+		if (sig->hasthis && ins == cfg->args [0] && !cfg->method->klass->valuetype) {
+			t = &cfg->method->klass->byval_arg;
+			is_this = TRUE;
+		}
+
+		byref = t->byref;
+
+		if (ins->opcode == OP_REGVAR) {
+			int hreg;
+			GCSlotType slot_type;
+
+			t = mini_type_get_underlying_type (NULL, t);
+
+			hreg = ins->dreg;
+			g_assert (hreg < MONO_MAX_IREGS);
+
+			if (byref)
+				slot_type = SLOT_PIN;
+			else
+				slot_type = MONO_TYPE_IS_REFERENCE (t) ? SLOT_REF : SLOT_NOREF;
+
+			if (slot_type == SLOT_PIN) {
+				/* These have no live interval, be conservative */
+				set_reg_slot_everywhere (gcfg, hreg, slot_type);
+			} else {
+				/*
+				 * Unlike variables allocated to the stack, we generate liveness info
+				 * for noref vars in registers in mono_spill_global_vars (), because
+				 * knowing that a register doesn't contain a ref allows us to mark its save
+				 * locations precisely.
+				 */
+				for (cindex = 0; cindex < gcfg->ncallsites; ++cindex)
+					if (gcfg->callsites [cindex]->liveness [i / 8] & (1 << (i % 8)))
+						set_reg_slot (gcfg, hreg, cindex, slot_type);
+			}
+
+			if (cfg->verbose_level > 1) {
+				printf ("\t%s %sreg %s(R%d)\n", slot_type_to_string (slot_type), is_arg ? "arg " : "", mono_arch_regname (hreg), vmv->vreg);
+			}
+
+			continue;
+		}
+
 		if (ins->opcode != OP_REGOFFSET)
 			continue;
 
-		if (ins->inst_offset % sizeof (gpointer) != 0)
+		if (ins->inst_offset % sizeof (mgreg_t) != 0)
+			continue;
+
+		if (is_arg && ins->inst_offset >= gcfg->max_offset)
+			/* In parent frame */
 			continue;
 
-		pos = (ins->inst_offset - min_offset) / sizeof (gpointer);
+		pos = fp_offset_to_slot (cfg, ins->inst_offset);
 
-		if ((MONO_TYPE_ISSTRUCT (t) && !ins->klass->has_references))
+		if (is_arg && ins->flags & MONO_INST_IS_DEAD) {
+			/* These do not get stored in the prolog */
+			set_slot_everywhere (gcfg, pos, SLOT_NOREF);
+
+			if (cfg->verbose_level > 1) {
+				printf ("\tdead arg at fp%s0x%x (slot = %d): %s\n", ins->inst_offset < 0 ? "-" : "+", (ins->inst_offset < 0) ? -(int)ins->inst_offset : (int)ins->inst_offset, pos, mono_type_full_name (ins->inst_vtype));
+			}
 			continue;
+		}
 
-		if ((MONO_TYPE_ISSTRUCT (t) && ins->klass->has_references)) {
-			int numbits, j;
-			gsize *bitmap;
-			gboolean pin;
+		if (MONO_TYPE_ISSTRUCT (t)) {
+			int numbits = 0, j;
+			gsize *bitmap = NULL;
+			gboolean pin = FALSE;
+			int size;
+			int size_in_slots;
+			
+			if (ins->backend.is_pinvoke)
+				size = mono_class_native_size (ins->klass, NULL);
+			else
+				size = mono_class_value_size (ins->klass, NULL);
+			size_in_slots = ALIGN_TO (size, sizeof (mgreg_t)) / sizeof (mgreg_t);
+
+			if (!ins->klass->has_references) {
+				if (is_arg) {
+					for (j = 0; j < size_in_slots; ++j)
+						set_slot_everywhere (gcfg, pos + j, SLOT_NOREF);
+				}
+				continue;
+			}
 
 			if (ins->klass->generic_container || mono_class_is_open_constructed_type (t)) {
 				/* FIXME: Generic sharing */
@@ -466,116 +1557,744 @@ mini_gc_create_gc_map (MonoCompile *cfg)
 				mono_class_compute_gc_descriptor (ins->klass);
 
 				bitmap = mono_gc_get_bitmap_for_descr (ins->klass->gc_descr, &numbits);
-
-				if (bitmap) {
-					for (j = 0; j < numbits; ++j) {
-						if (bitmap [j / GC_BITS_PER_WORD] & ((gsize)1 << (j % GC_BITS_PER_WORD))) {
-							/* The descriptor is for the boxed object */
-							set_slot (slots, nslots, (pos + j - (sizeof (MonoObject) / sizeof (gpointer))), SLOT_REF);
-						}
-					}
-					g_free (bitmap);
-
-					if (cfg->verbose_level > 1)
-						printf ("\tvtype at fp+0x%x: %s -> 0x%x\n", (int)ins->inst_offset, mono_type_full_name (ins->inst_vtype), (int)ins->inst_offset);
-
-					// FIXME: These have no live range
+				if (!bitmap)
 					pin = TRUE;
-				} else {
-					// FIXME:
+
+				/*
+				 * Most vtypes are marked volatile because of the LDADDR instructions,
+				 * and they have no liveness information since they are decomposed
+				 * before the liveness pass. We emit OP_GC_LIVENESS_DEF instructions for
+				 * them during VZERO decomposition.
+				 */
+				if (!pc_offsets [vmv->vreg])
 					pin = TRUE;
-				}
 			}
 
 			if (ins->backend.is_pinvoke)
 				pin = TRUE;
 
-			if (pin) {
-				int size;
+			if (cfg->verbose_level > 1)
+				printf ("\tvtype R%d at fp+0x%x-0x%x: %s\n", vmv->vreg, (int)ins->inst_offset, (int)(ins->inst_offset + (size / sizeof (mgreg_t))), mono_type_full_name (ins->inst_vtype));
+
+			if (bitmap) {
+				for (cindex = 0; cindex < gcfg->ncallsites; ++cindex) {
+					if (gcfg->callsites [cindex]->pc_offset > pc_offsets [vmv->vreg]) {
+						for (j = 0; j < numbits; ++j) {
+							if (bitmap [j / GC_BITS_PER_WORD] & ((gsize)1 << (j % GC_BITS_PER_WORD))) {
+								/* The descriptor is for the boxed object */
+								set_slot (gcfg, (pos + j - (sizeof (MonoObject) / sizeof (mgreg_t))), cindex, pin ? SLOT_PIN : SLOT_REF);
+							}
+						}
+					}
+				}
 
-				if (ins->backend.is_pinvoke)
-					size = mono_class_native_size (ins->klass, NULL);
-				else
-					size = mono_class_value_size (ins->klass, NULL);
-				for (j = 0; j < size / sizeof (gpointer); ++j)
-					set_slot (slots, nslots, pos + j, SLOT_PIN);
+				if (cfg->verbose_level > 1) {
+					for (j = 0; j < numbits; ++j) {
+						if (bitmap [j / GC_BITS_PER_WORD] & ((gsize)1 << (j % GC_BITS_PER_WORD)))
+							printf ("\t\t%s slot at 0x%x(fp) (slot = %d)\n", pin ? "pin" : "ref", (int)(ins->inst_offset + (j * sizeof (mgreg_t))), (int)(pos + j - (sizeof (MonoObject) / sizeof (mgreg_t))));
+					}
+				}
+			} else {
+				if (cfg->verbose_level > 1)
+					printf ("\t\tpinned\n");
+				for (j = 0; j < size_in_slots; ++j) {
+					set_slot_everywhere (gcfg, pos + j, SLOT_PIN);
+				}
 			}
+
+			g_free (bitmap);
+
 			continue;
 		}
 
-		if (ins->inst_offset < min_offset || ins->inst_offset >= max_offset)
+		if (!is_arg && (ins->inst_offset < gcfg->min_offset || ins->inst_offset >= gcfg->max_offset))
 			/* Vret addr etc. */
 			continue;
 
-		if (t->byref || t->type == MONO_TYPE_PTR || t->type == MONO_TYPE_I || t->type == MONO_TYPE_U) {
-			set_slot (slots, nslots, pos, SLOT_PIN);
+		if (t->byref) {
+			if (is_arg) {
+				set_slot_everywhere (gcfg, pos, SLOT_PIN);
+			} else {
+				for (cindex = 0; cindex < gcfg->ncallsites; ++cindex)
+					if (gcfg->callsites [cindex]->liveness [i / 8] & (1 << (i % 8)))
+						set_slot (gcfg, pos, cindex, SLOT_PIN);
+			}
+			if (cfg->verbose_level > 1)
+				printf ("\tbyref at %s0x%x(fp) (R%d, slot = %d): %s\n", ins->inst_offset < 0 ? "-" : "", (ins->inst_offset < 0) ? -(int)ins->inst_offset : (int)ins->inst_offset, vmv->vreg, pos, mono_type_full_name (ins->inst_vtype));
+			continue;
+		}
+
+		/*
+		 * This is currently disabled, but could be enabled to debug crashes.
+		 */
+#if 0
+		if (t->type == MONO_TYPE_I) {
+			/*
+			 * Variables created in mono_handle_global_vregs have type I, but they
+			 * could hold GC refs since the vregs they were created from might not been
+			 * marked as holding a GC ref. So be conservative.
+			 */
+			set_slot_everywhere (gcfg, pos, SLOT_PIN);
 			continue;
 		}
+#endif
 
-		if (MONO_TYPE_IS_REFERENCE (ins->inst_vtype)) {
-			if (vmv && !vmv->live_range_start) {
-				set_slot (slots, nslots, pos, SLOT_PIN);
-				continue;
+		t = mini_type_get_underlying_type (NULL, t);
+
+		if (!MONO_TYPE_IS_REFERENCE (t)) {
+			set_slot_everywhere (gcfg, pos, SLOT_NOREF);
+			if (cfg->verbose_level > 1)
+				printf ("\tnoref at %s0x%x(fp) (R%d, slot = %d): %s\n", ins->inst_offset < 0 ? "-" : "", (ins->inst_offset < 0) ? -(int)ins->inst_offset : (int)ins->inst_offset, vmv->vreg, pos, mono_type_full_name (ins->inst_vtype));
+			continue;
+		}
+
+		/* 'this' is marked INDIRECT for gshared methods */
+		if (ins->flags & (MONO_INST_VOLATILE | MONO_INST_INDIRECT) && !is_this) {
+			/*
+			 * For volatile variables, treat them alive from the point they are
+			 * initialized in the first bblock until the end of the method.
+			 */
+			if (is_arg) {
+				set_slot_everywhere (gcfg, pos, SLOT_REF);
+			} else if (pc_offsets [vmv->vreg]) {
+				set_slot_in_range (gcfg, pos, 0, pc_offsets [vmv->vreg], SLOT_PIN);
+				set_slot_in_range (gcfg, pos, pc_offsets [vmv->vreg], cfg->code_size, SLOT_REF);
+			} else {
+				set_slot_everywhere (gcfg, pos, SLOT_PIN);
 			}
+			if (cfg->verbose_level > 1)
+				printf ("\tvolatile ref at %s0x%x(fp) (R%d, slot = %d): %s\n", ins->inst_offset < 0 ? "-" : "", (ins->inst_offset < 0) ? -(int)ins->inst_offset : (int)ins->inst_offset, vmv->vreg, pos, mono_type_full_name (ins->inst_vtype));
+			continue;
+		}
 
-			if (ins->flags & (MONO_INST_VOLATILE | MONO_INST_INDIRECT)) {
-				set_slot (slots, nslots, pos, SLOT_PIN);
-				continue;
+		if (is_arg) {
+			/* Live for the whole method */
+			set_slot_everywhere (gcfg, pos, SLOT_REF);
+		} else {
+			for (cindex = 0; cindex < gcfg->ncallsites; ++cindex)
+				if (gcfg->callsites [cindex]->liveness [i / 8] & (1 << (i % 8)))
+					set_slot (gcfg, pos, cindex, SLOT_REF);
+		}
+
+		if (cfg->verbose_level > 1) {
+			printf ("\tref at %s0x%x(fp) (R%d, slot = %d): %s\n", ins->inst_offset < 0 ? "-" : "", (ins->inst_offset < 0) ? -(int)ins->inst_offset : (int)ins->inst_offset, vmv->vreg, pos, mono_type_full_name (ins->inst_vtype));
+		}
+	}
+
+	g_free (pc_offsets);
+}
+
+static int
+sp_offset_to_fp_offset (MonoCompile *cfg, int sp_offset)
+{
+	/* 
+	 * Convert a sp relative offset to a slot index. This is
+	 * platform specific.
+	 */
+#ifdef TARGET_AMD64
+	/* fp = sp + offset */
+	g_assert (cfg->frame_reg == AMD64_RBP);
+	return (- cfg->arch.sp_fp_offset + sp_offset);
+#else
+	NOT_IMPLEMENTED;
+	return -1;
+#endif
+}
+
+static GCSlotType
+type_to_gc_slot_type (MonoType *t)
+{
+	if (t->byref)
+		return SLOT_PIN;
+	t = mini_type_get_underlying_type (NULL, t);
+	if (MONO_TYPE_IS_REFERENCE (t))
+		return SLOT_REF;
+	else {
+		if (MONO_TYPE_ISSTRUCT (t)) {
+			MonoClass *klass = mono_class_from_mono_type (t);
+			if (!klass->has_references) {
+				return SLOT_NOREF;
+			} else {
+				// FIXME:
+				return SLOT_PIN;
 			}
+		}
+		return SLOT_NOREF;
+	}
+}
+
+static void
+process_param_area_slots (MonoCompile *cfg)
+{
+	MonoCompileGC *gcfg = cfg->gc_info;
+	int i;
+	gboolean *is_param;
+
+	/*
+	 * These slots are used for passing parameters during calls. They are sp relative, not
+	 * fp relative, so they are harder to handle.
+	 */
+	if (cfg->flags & MONO_CFG_HAS_ALLOCA)
+		/* The distance between fp and sp is not constant */
+		return;
 
-			set_slot (slots, nslots, pos, SLOT_REF);
+	is_param = mono_mempool_alloc0 (cfg->mempool, gcfg->nslots * sizeof (gboolean));
 
-			/* Stack slots holding refs shouldn't be shared */
-			g_assert (!live_range_end [pos]);
-			live_range_start [pos] = vmv->live_range_start;
-			live_range_end [pos] = vmv->live_range_end;
+	for (i = 0; i < gcfg->ncallsites; ++i) {
+		GCCallSite *callsite = gcfg->callsites [i];
+		GSList *l;
 
+		for (l = callsite->param_slots; l; l = l->next) {
+			MonoInst *def = l->data;
+			int sp_offset = def->inst_offset;
+			int fp_offset = sp_offset_to_fp_offset (cfg, sp_offset);
+			int slot = fp_offset_to_slot (cfg, fp_offset);
+
+			g_assert (slot >= 0 && slot < gcfg->nslots);
+			is_param [slot] = TRUE;
+		}
+	}
+
+	/* All param area slots are noref by default */
+	for (i = 0; i < gcfg->nslots; ++i) {
+		if (is_param [i])
+			set_slot_everywhere (gcfg, i, SLOT_NOREF);
+	}
+
+	for (i = 0; i < gcfg->ncallsites; ++i) {
+		GCCallSite *callsite = gcfg->callsites [i];
+		GSList *l;
+
+		for (l = callsite->param_slots; l; l = l->next) {
+			MonoInst *def = l->data;
+			MonoType *t = def->inst_vtype;
+			int sp_offset = def->inst_offset;
+			int fp_offset = sp_offset_to_fp_offset (cfg, sp_offset);
+			int slot = fp_offset_to_slot (cfg, fp_offset);
+			GCSlotType type = type_to_gc_slot_type (t);
+
+			/* The slot is live between the def instruction and the call */
+			set_slot_in_range (gcfg, slot, def->backend.pc_offset, callsite->pc_offset + 1, type);
 			if (cfg->verbose_level > 1)
-				printf ("\tref at %s0x%x(fp) (slot=%d): %s [0x%x - 0x%x]\n", ins->inst_offset < 0 ? "-" : "", (ins->inst_offset < 0) ? -(int)ins->inst_offset : (int)ins->inst_offset, pos, mono_type_full_name (ins->inst_vtype), vmv->live_range_start, vmv->live_range_end);
+				printf ("\t%s param area slot at %s0x%x(fp)=0x%x(sp) (slot = %d) [0x%x-0x%x]\n", slot_type_to_string (type), fp_offset >= 0 ? "+" : "-", ABS (fp_offset), sp_offset, slot, def->backend.pc_offset, callsite->pc_offset + 1);
+		}
+	}
+}
+
+static void
+process_finally_clauses (MonoCompile *cfg)
+{
+	MonoCompileGC *gcfg = cfg->gc_info;
+	GCCallSite **callsites;
+	int ncallsites;
+	gboolean has_finally;
+	int i, j, nslots, nregs;
+
+	ncallsites = gcfg->ncallsites;
+	nslots = gcfg->nslots;
+	nregs = gcfg->nregs;
+	callsites = gcfg->callsites;
+
+	/*
+	 * The calls to the finally clauses don't show up in the cfg. See
+	 * test_0_liveness_8 ().
+	 * Variables accessed inside the finally clause are already marked VOLATILE by
+	 * mono_liveness_handle_exception_clauses (). Variables not accessed inside the finally clause have
+	 * correct liveness outside the finally clause. So mark them PIN inside the finally clauses.
+	 */
+	has_finally = FALSE;
+	for (i = 0; i < cfg->header->num_clauses; ++i) {
+		MonoExceptionClause *clause = &cfg->header->clauses [i];
+
+		if (clause->flags == MONO_EXCEPTION_CLAUSE_FINALLY) {
+			has_finally = TRUE;
+		}
+	}
+	if (has_finally) {
+		if (cfg->verbose_level > 1)
+			printf ("\tMethod has finally clauses, pessimizing live ranges.\n");
+		for (j = 0; j < ncallsites; ++j) {
+			MonoBasicBlock *bb = callsites [j]->bb;
+			MonoExceptionClause *clause;
+			gboolean is_in_finally = FALSE;
+
+			for (i = 0; i < cfg->header->num_clauses; ++i) {
+				clause = &cfg->header->clauses [i];
+			   
+				if (MONO_OFFSET_IN_HANDLER (clause, bb->real_offset)) {
+					if (clause->flags == MONO_EXCEPTION_CLAUSE_FINALLY) {
+						is_in_finally = TRUE;
+						break;
+					}
+				}
+			}
+
+			if (is_in_finally) {
+				for (i = 0; i < nslots; ++i)
+					set_slot (gcfg, i, j, SLOT_PIN);
+				for (i = 0; i < nregs; ++i)
+					set_reg_slot (gcfg, i, j, SLOT_PIN);
+			}
+		}
+	}
+}
+
+static void
+compute_frame_size (MonoCompile *cfg)
+{
+	int i, locals_min_offset, locals_max_offset, cfa_min_offset, cfa_max_offset;
+	int min_offset, max_offset;
+	MonoCompileGC *gcfg = cfg->gc_info;
+	MonoMethodSignature *sig = mono_method_signature (cfg->method);
+	GSList *l;
+
+	/* Compute min/max offsets from the fp */
+
+	/* Locals */
+#if defined(TARGET_AMD64) || defined(TARGET_X86)
+	locals_min_offset = ALIGN_TO (cfg->locals_min_stack_offset, sizeof (mgreg_t));
+	locals_max_offset = cfg->locals_max_stack_offset;
+#else
+	/* min/max stack offset needs to be computed in mono_arch_allocate_vars () */
+	NOT_IMPLEMENTED;
+#endif
+
+	locals_min_offset = ALIGN_TO (locals_min_offset, sizeof (mgreg_t));
+	locals_max_offset = ALIGN_TO (locals_max_offset, sizeof (mgreg_t));
+
+	min_offset = locals_min_offset;
+	max_offset = locals_max_offset;
+
+	/* Arguments */
+	for (i = 0; i < sig->param_count + sig->hasthis; ++i) {
+		MonoInst *ins = cfg->args [i];
+
+		if (ins->opcode == OP_REGOFFSET)
+			min_offset = MIN (min_offset, ins->inst_offset);
+	}
+
+	/* Cfa slots */
+	g_assert (cfg->frame_reg == cfg->cfa_reg);
+	g_assert (cfg->cfa_offset > 0);
+	cfa_min_offset = 0;
+	cfa_max_offset = cfg->cfa_offset;
+
+	min_offset = MIN (min_offset, cfa_min_offset);
+	max_offset = MAX (max_offset, cfa_max_offset);
+
+	/* Fp relative slots */
+	for (l = gcfg->stack_slots_from_fp; l; l = l->next) {
+		gint data = GPOINTER_TO_INT (l->data);
+		int offset = data >> 16;
+
+		min_offset = MIN (min_offset, offset);
+	}
+
+	/* Spill slots */
+	if (!(cfg->flags & MONO_CFG_HAS_SPILLUP)) {
+		int stack_offset = ALIGN_TO (cfg->stack_offset, sizeof (mgreg_t));
+		min_offset = MIN (min_offset, (-stack_offset));
+	}
+
+	/* Param area slots */
+#ifdef TARGET_AMD64
+	min_offset = MIN (min_offset, -cfg->arch.sp_fp_offset);
+#endif
+
+	gcfg->min_offset = min_offset;
+	gcfg->max_offset = max_offset;
+	gcfg->locals_min_offset = locals_min_offset;
+	gcfg->locals_max_offset = locals_max_offset;
+}
+
+static void
+init_gcfg (MonoCompile *cfg)
+{
+	int i, nregs, nslots;
+	MonoCompileGC *gcfg = cfg->gc_info;
+	GCCallSite **callsites;
+	int ncallsites;
+	MonoBasicBlock *bb;
+	GSList *l;
+
+	/*
+	 * Collect callsites
+	 */
+	ncallsites = 0;
+	for (bb = cfg->bb_entry; bb; bb = bb->next_bb) {
+		ncallsites += g_slist_length (bb->gc_callsites);
+	}
+	callsites = mono_mempool_alloc0 (cfg->mempool, ncallsites * sizeof (GCCallSite*));
+	i = 0;
+	for (bb = cfg->bb_entry; bb; bb = bb->next_bb) {
+		for (l = bb->gc_callsites; l; l = l->next)
+			callsites [i++] = l->data;
+	}
+
+	/* The callsites should already be ordered by pc offset */
+	for (i = 1; i < ncallsites; ++i)
+		g_assert (callsites [i - 1]->pc_offset < callsites [i]->pc_offset);
+
+	/*
+	 * The stack frame looks like this:
+	 *
+	 * <fp + max_offset> == cfa ->  <end of previous frame>
+	 *                              <other stack slots>
+	 *                              <locals>
+	 *                              <other stack slots>
+	 * fp + min_offset          ->
+	 * ...
+	 * fp                       ->
+	 */
+
+	if (cfg->verbose_level > 1)
+		printf ("GC Map for %s: 0x%x-0x%x\n", mono_method_full_name (cfg->method, TRUE), gcfg->min_offset, gcfg->max_offset);
+
+	nslots = (gcfg->max_offset - gcfg->min_offset) / sizeof (mgreg_t);
+	nregs = NREGS;
+
+	gcfg->nslots = nslots;
+	gcfg->nregs = nregs;
+	gcfg->callsites = callsites;
+	gcfg->ncallsites = ncallsites;
+	gcfg->stack_bitmap_width = ALIGN_TO (nslots, 8) / 8;
+	gcfg->reg_bitmap_width = ALIGN_TO (nregs, 8) / 8;
+	gcfg->stack_ref_bitmap = mono_mempool_alloc0 (cfg->mempool, gcfg->stack_bitmap_width * ncallsites);
+	gcfg->stack_pin_bitmap = mono_mempool_alloc0 (cfg->mempool, gcfg->stack_bitmap_width * ncallsites);
+	gcfg->reg_ref_bitmap = mono_mempool_alloc0 (cfg->mempool, gcfg->reg_bitmap_width * ncallsites);
+	gcfg->reg_pin_bitmap = mono_mempool_alloc0 (cfg->mempool, gcfg->reg_bitmap_width * ncallsites);
+
+	/* All slots start out as PIN */
+	memset (gcfg->stack_pin_bitmap, 0xff, gcfg->stack_bitmap_width * ncallsites);
+	for (i = 0; i < nregs; ++i) {
+		/*
+		 * By default, registers are NOREF.
+		 * It is possible for a callee to save them before being defined in this method,
+		 * but the saved value is dead too, so it doesn't need to be marked.
+		 */
+		if ((cfg->used_int_regs & (1 << i)))
+			set_reg_slot_everywhere (gcfg, i, SLOT_NOREF);
+	}
+}
+
+static void
+create_map (MonoCompile *cfg)
+{
+	GCMap *map;
+	int i, j, nregs, nslots, nref_regs, npin_regs, alloc_size, bitmaps_size, bitmaps_offset;
+	int ntypes [16];
+	int stack_bitmap_width, stack_bitmap_size, reg_ref_bitmap_width, reg_ref_bitmap_size;
+	int reg_pin_bitmap_width, reg_pin_bitmap_size, bindex;
+	int start, end;
+	gboolean has_ref_slots, has_pin_slots, has_ref_regs, has_pin_regs;
+	MonoCompileGC *gcfg = cfg->gc_info;
+	GCCallSite **callsites;
+	int ncallsites;
+	guint8 *bitmap, *bitmaps;
+	guint32 reg_ref_mask, reg_pin_mask;
+
+	ncallsites = gcfg->ncallsites;
+	nslots = gcfg->nslots;
+	nregs = gcfg->nregs;
+	callsites = gcfg->callsites;
+
+	/* 
+	 * Compute the real size of the bitmap i.e. ignore NOREF columns at the beginning and at
+	 * the end. Also, compute whenever the map needs ref/pin bitmaps, and collect stats.
+	 */
+	has_ref_slots = FALSE;
+	has_pin_slots = FALSE;
+	start = -1;
+	end = -1;
+	memset (ntypes, 0, sizeof (ntypes));
+	for (i = 0; i < nslots; ++i) {
+		gboolean has_ref = FALSE;
+		gboolean has_pin = FALSE;
+
+		for (j = 0; j < ncallsites; ++j) {
+			if (get_bit (gcfg->stack_pin_bitmap, gcfg->stack_bitmap_width, j, i))
+				has_pin = TRUE;
+			if (get_bit (gcfg->stack_ref_bitmap, gcfg->stack_bitmap_width, j, i))
+				has_ref = TRUE;
 		}
+
+		if (has_ref)
+			has_ref_slots = TRUE;
+		if (has_pin)
+			has_pin_slots = TRUE;
+
+		if (has_ref)
+			ntypes [SLOT_REF] ++;
+		else if (has_pin)
+			ntypes [SLOT_PIN] ++;
+		else
+			ntypes [SLOT_NOREF] ++;
+
+		if (has_ref || has_pin) {
+			if (start == -1)
+				start = i;
+			end = i + 1;
+		}
+	}
+	if (start == -1) {
+		start = end = nslots;
+	} else {
+		g_assert (start != -1);
+		g_assert (start < end);
 	}
 
-	alloc_size = sizeof (GCMap) + (norefs ? 0 : (nslots - MONO_ZERO_LEN_ARRAY) * sizeof (guint32) * 2);
-	map = mono_domain_alloc0 (cfg->domain, alloc_size);
-	gc_maps_size += alloc_size;
+	has_ref_regs = FALSE;
+	has_pin_regs = FALSE;
+	reg_ref_mask = 0;
+	reg_pin_mask = 0;
+	nref_regs = 0;
+	npin_regs = 0;
+	for (i = 0; i < nregs; ++i) {
+		gboolean has_ref = FALSE;
+		gboolean has_pin = FALSE;
+
+		if (!(cfg->used_int_regs & (1 << i)))
+			continue;
+
+		for (j = 0; j < ncallsites; ++j) {
+			if (get_bit (gcfg->reg_ref_bitmap, gcfg->reg_bitmap_width, j, i)) {
+				has_ref = TRUE;
+				break;
+			}
+		}
+		for (j = 0; j < ncallsites; ++j) {
+			if (get_bit (gcfg->reg_pin_bitmap, gcfg->reg_bitmap_width, j, i)) {
+				has_pin = TRUE;
+				break;
+			}
+		}
+
+		if (has_ref) {
+			reg_ref_mask |= (1 << i);
+			has_ref_regs = TRUE;
+			nref_regs ++;
+		}
+		if (has_pin) {
+			reg_pin_mask |= (1 << i);
+			has_pin_regs = TRUE;
+			npin_regs ++;
+		}
+	}
+
+	if (cfg->verbose_level > 1)
+		printf ("Slots: %d Start: %d End: %d Refs: %d NoRefs: %d Pin: %d Callsites: %d\n", nslots, start, end, ntypes [SLOT_REF], ntypes [SLOT_NOREF], ntypes [SLOT_PIN], ncallsites);
+
+	/* Create the GC Map */
+
+	stack_bitmap_width = ALIGN_TO (end - start, 8) / 8;
+	stack_bitmap_size = stack_bitmap_width * ncallsites;
+	reg_ref_bitmap_width = ALIGN_TO (nref_regs, 8) / 8;
+	reg_ref_bitmap_size = reg_ref_bitmap_width * ncallsites;
+	reg_pin_bitmap_width = ALIGN_TO (npin_regs, 8) / 8;
+	reg_pin_bitmap_size = reg_pin_bitmap_width * ncallsites;
+	bitmaps_size = (has_ref_slots ? stack_bitmap_size : 0) + (has_pin_slots ? stack_bitmap_size : 0) + (has_ref_regs ? reg_ref_bitmap_size : 0) + (has_pin_regs ? reg_pin_bitmap_size : 0);
+	
+	map = mono_mempool_alloc0 (cfg->mempool, sizeof (GCMap));
 
 	map->frame_reg = cfg->frame_reg;
-	map->locals_offset = min_offset;
-	map->locals_size = ALIGN_TO (max_offset - min_offset, sizeof (gpointer));
-	map->nslots = nslots;
-	map->slots = slots;
-	loffset = 0;
-	if (!norefs) {
+	map->start_offset = gcfg->min_offset;
+	map->end_offset = gcfg->min_offset + (nslots * sizeof (mgreg_t));
+	map->map_offset = start * sizeof (mgreg_t);
+	map->nslots = end - start;
+	map->has_ref_slots = has_ref_slots;
+	map->has_pin_slots = has_pin_slots;
+	map->has_ref_regs = has_ref_regs;
+	map->has_pin_regs = has_pin_regs;
+	g_assert (nregs < 32);
+	map->used_int_regs = cfg->used_int_regs;
+	map->reg_ref_mask = reg_ref_mask;
+	map->reg_pin_mask = reg_pin_mask;
+	map->nref_regs = nref_regs;
+	map->npin_regs = npin_regs;
+
+	bitmaps = mono_mempool_alloc0 (cfg->mempool, bitmaps_size);
+
+	bitmaps_offset = 0;
+	if (has_ref_slots) {
+		map->stack_ref_bitmap_offset = bitmaps_offset;
+		bitmaps_offset += stack_bitmap_size;
+
+		bitmap = &bitmaps [map->stack_ref_bitmap_offset];
 		for (i = 0; i < nslots; ++i) {
-			if (map->slots [i] == SLOT_REF) {
-				map->live_ranges [loffset ++] = live_range_start [i];
-				map->live_ranges [loffset ++] = live_range_end [i];
+			for (j = 0; j < ncallsites; ++j) {
+				if (get_bit (gcfg->stack_ref_bitmap, gcfg->stack_bitmap_width, j, i))
+					set_bit (bitmap, stack_bitmap_width, j, i - start);
 			}
 		}
 	}
+	if (has_pin_slots) {
+		map->stack_pin_bitmap_offset = bitmaps_offset;
+		bitmaps_offset += stack_bitmap_size;
 
-#if 1
-	{
-		static int precise_count;
-
-		if (map->slots) {
-			precise_count ++;
-			if (getenv ("MONO_GCMAP_COUNT")) {
-				if (precise_count == atoi (getenv ("MONO_GCMAP_COUNT")))
-					printf ("LAST: %s\n", mono_method_full_name (cfg->method, TRUE));
-				if (precise_count > atoi (getenv ("MONO_GCMAP_COUNT"))) {
-					for (i = 0; i < nslots; ++i)
-						map->slots [i] = SLOT_PIN;
+		bitmap = &bitmaps [map->stack_pin_bitmap_offset];
+		for (i = 0; i < nslots; ++i) {
+			for (j = 0; j < ncallsites; ++j) {
+				if (get_bit (gcfg->stack_pin_bitmap, gcfg->stack_bitmap_width, j, i))
+					set_bit (bitmap, stack_bitmap_width, j, i - start);
+			}
+		}
+	}
+	if (has_ref_regs) {
+		map->reg_ref_bitmap_offset = bitmaps_offset;
+		bitmaps_offset += reg_ref_bitmap_size;
+
+		bitmap = &bitmaps [map->reg_ref_bitmap_offset];
+		bindex = 0;
+		for (i = 0; i < nregs; ++i) {
+			if (reg_ref_mask & (1 << i)) {
+				for (j = 0; j < ncallsites; ++j) {
+					if (get_bit (gcfg->reg_ref_bitmap, gcfg->reg_bitmap_width, j, i))
+						set_bit (bitmap, reg_ref_bitmap_width, j, bindex);
 				}
+				bindex ++;
 			}
 		}
 	}
-#endif
+	if (has_pin_regs) {
+		map->reg_pin_bitmap_offset = bitmaps_offset;
+		bitmaps_offset += reg_pin_bitmap_size;
+
+		bitmap = &bitmaps [map->reg_pin_bitmap_offset];
+		bindex = 0;
+		for (i = 0; i < nregs; ++i) {
+			if (reg_pin_mask & (1 << i)) {
+				for (j = 0; j < ncallsites; ++j) {
+					if (get_bit (gcfg->reg_pin_bitmap, gcfg->reg_bitmap_width, j, i))
+						set_bit (bitmap, reg_pin_bitmap_width, j, bindex);
+				}
+				bindex ++;
+			}
+		}
+	}
+
+	/* Call sites */
+	map->ncallsites = ncallsites;
+	if (cfg->code_len < 256)
+		map->callsite_entry_size = 1;
+	else if (cfg->code_len < 65536)
+		map->callsite_entry_size = 2;
+	else
+		map->callsite_entry_size = 4;
+
+	/* Encode the GC Map */
+	{
+		guint8 buf [256];
+		guint8 *endbuf;
+		GCEncodedMap *emap;
+		int encoded_size;
+		guint8 *p;
+
+		encode_gc_map (map, buf, &endbuf);
+		g_assert (endbuf - buf < 256);
+
+		encoded_size = endbuf - buf;
+		alloc_size = sizeof (GCEncodedMap) + ALIGN_TO (encoded_size, map->callsite_entry_size) + (map->callsite_entry_size * map->ncallsites) + bitmaps_size;
+
+		emap = mono_domain_alloc0 (cfg->domain, alloc_size);
+		//emap->ref_slots = map->ref_slots;
+
+		/* Encoded fixed fields */
+		p = &emap->encoded [0];
+		//emap->encoded_size = encoded_size;
+		memcpy (p, buf, encoded_size);
+		p += encoded_size;
+
+		/* Callsite table */
+		p = (guint8*)ALIGN_TO ((mgreg_t)p, map->callsite_entry_size);
+		if (map->callsite_entry_size == 1) {
+			guint8 *offsets = p;
+			for (i = 0; i < ncallsites; ++i)
+				offsets [i] = callsites [i]->pc_offset;
+			stats.gc_callsites8_size += ncallsites * sizeof (guint8);
+		} else if (map->callsite_entry_size == 2) {
+			guint16 *offsets = (guint16*)p;
+			for (i = 0; i < ncallsites; ++i)
+				offsets [i] = callsites [i]->pc_offset;
+			stats.gc_callsites16_size += ncallsites * sizeof (guint16);
+		} else {
+			guint32 *offsets = (guint32*)p;
+			for (i = 0; i < ncallsites; ++i)
+				offsets [i] = callsites [i]->pc_offset;
+			stats.gc_callsites32_size += ncallsites * sizeof (guint32);
+		}
+		p += ncallsites * map->callsite_entry_size;
+
+		/* Bitmaps */
+		memcpy (p, bitmaps, bitmaps_size);
+		p += bitmaps_size;
+
+		g_assert ((guint8*)p - (guint8*)emap <= alloc_size);
+
+		stats.gc_maps_size += alloc_size;
+		stats.gc_callsites_size += ncallsites * map->callsite_entry_size;
+		stats.gc_bitmaps_size += bitmaps_size;
+		stats.gc_map_struct_size += sizeof (GCEncodedMap) + encoded_size;
+
+		cfg->jit_info->gc_info = emap;
+
+		cfg->gc_map = (guint8*)emap;
+		cfg->gc_map_size = alloc_size;
+	}
+
+	stats.all_slots += nslots;
+	stats.ref_slots += ntypes [SLOT_REF];
+	stats.noref_slots += ntypes [SLOT_NOREF];
+	stats.pin_slots += ntypes [SLOT_PIN];
+}
+
+void
+mini_gc_create_gc_map (MonoCompile *cfg)
+{
+	if (!cfg->compute_gc_maps)
+		return;
+
+	/*
+	 * During marking, all frames except the top frame are at a call site, and we mark the
+	 * top frame conservatively. This means that we only need to compute and record
+	 * GC maps for call sites.
+	 */
+
+	if (!(cfg->comp_done & MONO_COMP_LIVENESS))
+		/* Without liveness info, the live ranges are not precise enough */
+		return;
+
+	mono_analyze_liveness_gc (cfg);
+
+	compute_frame_size (cfg);
+
+	init_gcfg (cfg);
+
+	process_spill_slots (cfg);
+	process_other_slots (cfg);
+	process_param_area_slots (cfg);
+	process_variables (cfg);
+	process_finally_clauses (cfg);
+
+	create_map (cfg);
+}
 
-	cfg->jit_info->gc_info = map;
+static void
+parse_debug_options (void)
+{
+	char **opts, **ptr;
+	char *env;
+
+	env = getenv ("MONO_GCMAP_DEBUG");
+	if (!env)
+		return;
 
-	g_free (live_range_start);
-	g_free (live_range_end);
+	opts = g_strsplit (env, ",", -1);
+	for (ptr = opts; ptr && *ptr; ptr ++) {
+		/* No options yet */
+		fprintf (stderr, "Invalid format for the MONO_GCMAP_DEBUG env variable: '%s'\n", env);
+		exit (1);
+	}
+	g_strfreev (opts);
 }
 
 void
@@ -585,13 +2304,57 @@ mini_gc_init (void)
 
 	memset (&cb, 0, sizeof (cb));
 	cb.thread_attach_func = thread_attach_func;
+	cb.thread_detach_func = thread_detach_func;
 	cb.thread_suspend_func = thread_suspend_func;
 	/* Comment this out to disable precise stack marking */
 	cb.thread_mark_func = thread_mark_func;
 	mono_gc_set_gc_callbacks (&cb);
 
+	logfile = mono_sgen_get_logfile ();
+
+	parse_debug_options ();
+
 	mono_counters_register ("GC Maps size",
-							MONO_COUNTER_GC | MONO_COUNTER_INT, &gc_maps_size);
+							MONO_COUNTER_GC | MONO_COUNTER_INT, &stats.gc_maps_size);
+	mono_counters_register ("GC Call Sites size",
+							MONO_COUNTER_GC | MONO_COUNTER_INT, &stats.gc_callsites_size);
+	mono_counters_register ("GC Bitmaps size",
+							MONO_COUNTER_GC | MONO_COUNTER_INT, &stats.gc_bitmaps_size);
+	mono_counters_register ("GC Map struct size",
+							MONO_COUNTER_GC | MONO_COUNTER_INT, &stats.gc_map_struct_size);
+	mono_counters_register ("GC Call Sites encoded using 8 bits",
+							MONO_COUNTER_GC | MONO_COUNTER_INT, &stats.gc_callsites8_size);
+	mono_counters_register ("GC Call Sites encoded using 16 bits",
+							MONO_COUNTER_GC | MONO_COUNTER_INT, &stats.gc_callsites16_size);
+	mono_counters_register ("GC Call Sites encoded using 32 bits",
+							MONO_COUNTER_GC | MONO_COUNTER_INT, &stats.gc_callsites32_size);
+
+	mono_counters_register ("GC Map slots (all)",
+							MONO_COUNTER_GC | MONO_COUNTER_INT, &stats.all_slots);
+	mono_counters_register ("GC Map slots (ref)",
+							MONO_COUNTER_GC | MONO_COUNTER_INT, &stats.ref_slots);
+	mono_counters_register ("GC Map slots (noref)",
+							MONO_COUNTER_GC | MONO_COUNTER_INT, &stats.noref_slots);
+	mono_counters_register ("GC Map slots (pin)",
+							MONO_COUNTER_GC | MONO_COUNTER_INT, &stats.pin_slots);
+
+	mono_counters_register ("GC TLS Data size",
+							MONO_COUNTER_GC | MONO_COUNTER_INT, &stats.tlsdata_size);
+
+	mono_counters_register ("Stack space scanned (all)",
+							MONO_COUNTER_GC | MONO_COUNTER_INT, &stats.scanned_stacks);
+	mono_counters_register ("Stack space scanned (native)",
+							MONO_COUNTER_GC | MONO_COUNTER_INT, &stats.scanned_native);
+	mono_counters_register ("Stack space scanned (other)",
+							MONO_COUNTER_GC | MONO_COUNTER_INT, &stats.scanned_other);
+	mono_counters_register ("Stack space scanned (using GC Maps)",
+							MONO_COUNTER_GC | MONO_COUNTER_INT, &stats.scanned);
+	mono_counters_register ("Stack space scanned (precise)",
+							MONO_COUNTER_GC | MONO_COUNTER_INT, &stats.scanned_precisely);
+	mono_counters_register ("Stack space scanned (pin)",
+							MONO_COUNTER_GC | MONO_COUNTER_INT, &stats.scanned_conservatively);
+	mono_counters_register ("Stack space scanned (pin registers)",
+							MONO_COUNTER_GC | MONO_COUNTER_INT, &stats.scanned_registers);
 }
 
 #else
@@ -611,6 +2374,16 @@ mini_gc_create_gc_map (MonoCompile *cfg)
 {
 }
 
+void
+mini_gc_set_slot_type_from_fp (MonoCompile *cfg, int slot_offset, GCSlotType type)
+{
+}
+
+void
+mini_gc_set_slot_type_from_cfa (MonoCompile *cfg, int slot_offset, GCSlotType type)
+{
+}
+
 #endif
 
 /*
@@ -628,3 +2401,28 @@ mini_gc_init_cfg (MonoCompile *cfg)
 
 	mini_gc_init_gc_map (cfg);
 }
+
+/*
+ * Problems with the current code:
+ * - the stack walk is slow
+ * - vtypes/refs used in EH regions are treated conservatively
+ * - if the code is finished, less pinning will be done, causing problems because
+ *   we promote all surviving objects to old-gen.
+ * - the unwind code can't handle a method stopped inside a finally region, it thinks the caller is
+ *   another method, but in reality it is either the exception handling code or the CALL_HANDLER opcode.
+ *   This manifests in "Unable to find ip offset x in callsite list" assertions.
+ * - the unwind code also can't handle frames which are in the epilog, since the unwind info is not
+ *   precise there.
+ */
+
+/*
+ * Ideas for creating smaller GC maps:
+ * - remove empty columns from the bitmaps. This requires adding a mask bit array for
+ *   each bitmap.
+ * - merge reg and stack slot bitmaps, so the unused bits at the end of the reg bitmap are
+ *   not wasted.
+ * - if the bitmap width is not a multiple of 8, the remaining bits are wasted.
+ * - group ref and non-ref stack slots together in mono_allocate_stack_slots ().
+ * - add an index for the callsite table so that each entry can be encoded as a 1 byte difference
+ *   from an index entry.
+ */
diff --git a/mono/mini/mini-gc.h b/mono/mini/mini-gc.h
index 90d247f..4e63550 100644
--- a/mono/mini/mini-gc.h
+++ b/mono/mini/mini-gc.h
@@ -3,10 +3,29 @@
 
 #include "mini.h"
 
+/*
+ * The GC type of a stack slot or register.
+ * This can change through the method as follows:
+ * - a SLOT_REF can become SLOT_NOREF and vice-versa when it becomes live/dead.
+ * - a SLOT_PIN can become SLOT_REF after it has been definitely assigned.
+ */
+typedef enum {
+	/* Stack slot doesn't contain a reference */
+	SLOT_NOREF = 0,
+	/* Stack slot contains a reference */
+	SLOT_REF = 1,
+	/* No info or managed pointer, slot needs to be scanned conservatively */
+	SLOT_PIN = 2
+} GCSlotType;
+
 void mini_gc_init (void) MONO_INTERNAL;
 
 void mini_gc_init_cfg (MonoCompile *cfg) MONO_INTERNAL;
 
 void mini_gc_create_gc_map (MonoCompile *cfg) MONO_INTERNAL;
 
+void mini_gc_set_slot_type_from_fp (MonoCompile *cfg, int slot_offset, GCSlotType type) MONO_INTERNAL;
+
+void mini_gc_set_slot_type_from_cfa (MonoCompile *cfg, int slot_offset, GCSlotType type) MONO_INTERNAL;
+
 #endif
diff --git a/mono/mini/mini-generic-sharing.c b/mono/mini/mini-generic-sharing.c
index 28a472b..0180540 100644
--- a/mono/mini/mini-generic-sharing.c
+++ b/mono/mini/mini-generic-sharing.c
@@ -360,6 +360,17 @@ alloc_oti (MonoImage *image)
 #define MONO_RGCTX_SLOT_USED_MARKER	((gpointer)&mono_defaults.object_class->byval_arg)
 
 /*
+ * Return true if this info type has the notion of identify.
+ *
+ * Some info types expect that each insert results in a new slot been assigned.
+ */
+static int
+other_info_has_identity (int info_type)
+{
+	return info_type != MONO_RGCTX_INFO_CAST_CACHE;
+}
+
+/*
  * LOCKING: loader lock
  */
 static void
@@ -494,7 +505,8 @@ inflate_other_data (gpointer data, int info_type, MonoGenericContext *context, M
 	case MONO_RGCTX_INFO_KLASS:
 	case MONO_RGCTX_INFO_VTABLE:
 	case MONO_RGCTX_INFO_TYPE:
-	case MONO_RGCTX_INFO_REFLECTION_TYPE: {
+	case MONO_RGCTX_INFO_REFLECTION_TYPE:
+	case MONO_RGCTX_INFO_CAST_CACHE: {
 		gpointer result = mono_class_inflate_generic_type_with_mempool (temporary ? NULL : class->image,
 			data, context, &error);
 		g_assert (mono_error_ok (&error)); /*FIXME proper error handling*/
@@ -571,6 +583,7 @@ free_inflated_info (int info_type, gpointer info)
 	case MONO_RGCTX_INFO_VTABLE:
 	case MONO_RGCTX_INFO_TYPE:
 	case MONO_RGCTX_INFO_REFLECTION_TYPE:
+	case MONO_RGCTX_INFO_CAST_CACHE:
 		mono_metadata_free_type (info);
 		break;
 	default:
@@ -844,6 +857,12 @@ class_type_info (MonoDomain *domain, MonoClass *class, int info_type)
 			mono_raise_exception (mono_class_get_exception_for_failure (class));
 		return vtable;
 	}
+	case MONO_RGCTX_INFO_CAST_CACHE: {
+		/*First slot is the cache itself, the second the vtable.*/
+		gpointer **cache_data = mono_domain_alloc0 (domain, sizeof (gpointer) * 2);
+		cache_data [1] = (gpointer)class;
+		return cache_data;
+	}
 	default:
 		g_assert_not_reached ();
 	}
@@ -865,6 +884,7 @@ instantiate_other_info (MonoDomain *domain, MonoRuntimeGenericContextOtherInfoTe
 	case MONO_RGCTX_INFO_STATIC_DATA:
 	case MONO_RGCTX_INFO_KLASS:
 	case MONO_RGCTX_INFO_VTABLE:
+	case MONO_RGCTX_INFO_CAST_CACHE:
 		temporary = TRUE;
 		break;
 	default:
@@ -876,7 +896,8 @@ instantiate_other_info (MonoDomain *domain, MonoRuntimeGenericContextOtherInfoTe
 	switch (oti->info_type) {
 	case MONO_RGCTX_INFO_STATIC_DATA:
 	case MONO_RGCTX_INFO_KLASS:
-	case MONO_RGCTX_INFO_VTABLE: {
+	case MONO_RGCTX_INFO_VTABLE:
+	case MONO_RGCTX_INFO_CAST_CACHE: {
 		MonoClass *arg_class = mono_class_from_mono_type (data);
 
 		free_inflated_info (oti->info_type, data);
@@ -1023,6 +1044,7 @@ other_info_equal (gpointer data1, gpointer data2, int info_type)
 	case MONO_RGCTX_INFO_VTABLE:
 	case MONO_RGCTX_INFO_TYPE:
 	case MONO_RGCTX_INFO_REFLECTION_TYPE:
+	case MONO_RGCTX_INFO_CAST_CACHE:
 		return mono_class_from_mono_type (data1) == mono_class_from_mono_type (data2);
 	case MONO_RGCTX_INFO_METHOD:
 	case MONO_RGCTX_INFO_GENERIC_METHOD_CODE:
@@ -1053,22 +1075,24 @@ lookup_or_register_other_info (MonoClass *class, int type_argc, gpointer data, i
 
 	mono_loader_lock ();
 
-	oti_list = get_other_info_templates (rgctx_template, type_argc);
+	if (other_info_has_identity (info_type)) {
+		oti_list = get_other_info_templates (rgctx_template, type_argc);
 
-	for (oti = oti_list, i = 0; oti; oti = oti->next, ++i) {
-		gpointer inflated_data;
+		for (oti = oti_list, i = 0; oti; oti = oti->next, ++i) {
+			gpointer inflated_data;
 
-		if (oti->info_type != info_type || !oti->data)
-			continue;
+			if (oti->info_type != info_type || !oti->data)
+				continue;
 
-		inflated_data = inflate_other_info (oti, generic_context, class, TRUE);
+			inflated_data = inflate_other_info (oti, generic_context, class, TRUE);
 
-		if (other_info_equal (data, inflated_data, info_type)) {
+			if (other_info_equal (data, inflated_data, info_type)) {
+				free_inflated_info (info_type, inflated_data);
+				mono_loader_unlock ();
+				return i;
+			}
 			free_inflated_info (info_type, inflated_data);
-			mono_loader_unlock ();
-			return i;
 		}
-		free_inflated_info (info_type, inflated_data);
 	}
 
 	/* We haven't found the info */
diff --git a/mono/mini/mini-ia64.c b/mono/mini/mini-ia64.c
index 8c9f725..c9395dc 100644
--- a/mono/mini/mini-ia64.c
+++ b/mono/mini/mini-ia64.c
@@ -188,6 +188,9 @@ typedef struct {
 	guint32 reg_usage;
 	guint32 freg_usage;
 	gboolean need_stack_align;
+	gboolean vtype_retaddr;
+	/* The index of the vret arg in the argument list */
+	int vret_arg_index;
 	ArgInfo ret;
 	ArgInfo sig_cookie;
 	ArgInfo args [1];
@@ -350,7 +353,7 @@ add_valuetype (MonoGenericSharingContext *gsctx, MonoMethodSignature *sig, ArgIn
 static CallInfo*
 get_call_info (MonoCompile *cfg, MonoMemPool *mp, MonoMethodSignature *sig, gboolean is_pinvoke)
 {
-	guint32 i, gr, fr;
+	guint32 i, gr, fr, pstart;
 	MonoType *ret_type;
 	int n = sig->hasthis + sig->param_count;
 	guint32 stack_size = 0;
@@ -416,11 +419,10 @@ get_call_info (MonoCompile *cfg, MonoMemPool *mp, MonoMethodSignature *sig, gboo
 				cinfo->ret.storage = ArgInIReg;
 			} else {
 				add_valuetype (gsctx, sig, &cinfo->ret, sig->ret, TRUE, &tmp_gr, &tmp_fr, &tmp_stacksize);
-				if (cinfo->ret.storage == ArgOnStack)
+				if (cinfo->ret.storage == ArgOnStack) {
 					/* The caller passes the address where the value is stored */
-					add_general (&gr, &stack_size, &cinfo->ret);
-				if (cinfo->ret.storage == ArgInIReg)
-					cinfo->ret.storage = ArgValuetypeAddrInIReg;
+					cinfo->vtype_retaddr = TRUE;
+				}
 			}
 			break;
 		}
@@ -432,15 +434,36 @@ get_call_info (MonoCompile *cfg, MonoMemPool *mp, MonoMethodSignature *sig, gboo
 		}
 	}
 
+	pstart = 0;
 	/*
-	 * IA64 has MONO_ARCH_THIS_AS_FIRST_ARG defined, but we don't need to really pass
-	 * this as first, because this is stored in a non-stacked register by the calling
-	 * sequence.
+	 * To simplify get_this_arg_reg () and LLVM integration, emit the vret arg after
+	 * the first argument, allowing 'this' to be always passed in the first arg reg.
+	 * Also do this if the first argument is a reference type, since virtual calls
+	 * are sometimes made using calli without sig->hasthis set, like in the delegate
+	 * invoke wrappers.
 	 */
-
-	/* this */
-	if (sig->hasthis)
-		add_general (&gr, &stack_size, cinfo->args + 0);
+	if (cinfo->vtype_retaddr && !is_pinvoke && (sig->hasthis || (sig->param_count > 0 && MONO_TYPE_IS_REFERENCE (mini_type_get_underlying_type (gsctx, sig->params [0]))))) {
+		if (sig->hasthis) {
+			add_general (&gr, &stack_size, cinfo->args + 0);
+		} else {
+			add_general (&gr, &stack_size, &cinfo->args [sig->hasthis + 0]);
+			pstart = 1;
+		}
+		add_general (&gr, &stack_size, &cinfo->ret);
+		if (cinfo->ret.storage == ArgInIReg)
+			cinfo->ret.storage = ArgValuetypeAddrInIReg;
+		cinfo->vret_arg_index = 1;
+	} else {
+		/* this */
+		if (sig->hasthis)
+			add_general (&gr, &stack_size, cinfo->args + 0);
+
+		if (cinfo->vtype_retaddr) {
+			add_general (&gr, &stack_size, &cinfo->ret);
+			if (cinfo->ret.storage == ArgInIReg)
+				cinfo->ret.storage = ArgValuetypeAddrInIReg;
+		}
+	}
 
 	if (!sig->pinvoke && (sig->call_convention == MONO_CALL_VARARG) && (n == 0)) {
 		gr = PARAM_REGS;
@@ -450,7 +473,7 @@ get_call_info (MonoCompile *cfg, MonoMemPool *mp, MonoMethodSignature *sig, gboo
 		add_general (&gr, &stack_size, &cinfo->sig_cookie);
 	}
 
-	for (i = 0; i < sig->param_count; ++i) {
+	for (i = pstart; i < sig->param_count; ++i) {
 		ArgInfo *ainfo = &cinfo->args [sig->hasthis + i];
 		MonoType *ptype;
 
@@ -2726,13 +2749,11 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
 			int out_reg;
 
 			/* 
-			 * mono_arch_find_this_arg () needs to find the this argument in a global 
+			 * mono_arch_get_this_arg_from_call () needs to find the this argument in a global 
 			 * register.
 			 */
 			cinfo = get_call_info (cfg, cfg->mempool, call->signature, FALSE);
 			out_reg = cfg->arch.reg_out0;
-			if (cinfo->ret.storage == ArgValuetypeAddrInIReg)
-				out_reg ++;
 			ia64_mov (code, IA64_R10, out_reg);
 
 			/* Indirect call */
@@ -2778,8 +2799,6 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
 			 */
 			cinfo = get_call_info (cfg, cfg->mempool, call->signature, FALSE);
 			out_reg = cfg->arch.reg_out0;
-			if (cinfo->ret.storage == ArgValuetypeAddrInIReg)
-				out_reg ++;
 			ia64_mov (code, IA64_R10, out_reg);
 
 			ia64_ld8 (code, GP_SCRATCH_REG, IA64_R8);
@@ -4630,7 +4649,7 @@ mono_arch_emit_imt_argument (MonoCompile *cfg, MonoCallInst *call, MonoInst *imt
 #endif
 
 gpointer
-mono_arch_get_this_arg_from_call (MonoGenericSharingContext *gsctx, MonoMethodSignature *sig, mgreg_t *regs, guint8 *code)
+mono_arch_get_this_arg_from_call (mgreg_t *regs, guint8 *code)
 {
 	return (gpointer)regs [IA64_R10];
 }
diff --git a/mono/mini/mini-ia64.h b/mono/mini/mini-ia64.h
index a13fd21..f2c1cda 100644
--- a/mono/mini/mini-ia64.h
+++ b/mono/mini/mini-ia64.h
@@ -46,7 +46,6 @@
 #define MONO_ARCH_SIGNAL_STACK_SIZE SIGSTKSZ
 
 struct MonoLMF {
-	guint64    ebp;
 };
 
 typedef struct MonoContext {
@@ -137,7 +136,6 @@ mono_ia64_context_get_fp (MonoContext *ctx)
 }
 
 #define MONO_CONTEXT_SET_IP(ctx,eip) do { int err = unw_set_reg (&(ctx)->cursor, UNW_IA64_IP, (unw_word_t)(eip)); g_assert (err == 0); } while (0)
-#define MONO_CONTEXT_SET_BP(ctx,ebp) do { } while (0)
 #define MONO_CONTEXT_SET_SP(ctx,esp) do { int err = unw_set_reg (&(ctx)->cursor, UNW_IA64_SP, (unw_word_t)(esp)); g_assert (err == 0); } while (0)
 
 #define MONO_CONTEXT_GET_IP(ctx) ((gpointer)(mono_ia64_context_get_ip ((ctx))))
@@ -159,6 +157,8 @@ mono_ia64_context_get_fp (MonoContext *ctx)
 /* This is ia64 only */
 #define MONO_CONTEXT_SET_FUNC(ctx, func) MONO_CONTEXT_SET_IP ((ctx), ((gpointer*)(func))[0])
 
+#define MONO_ARCH_INIT_TOP_LMF_ENTRY(lmf)
+
 #define MONO_ARCH_CONTEXT_DEF unw_context_t unw_ctx;
 
 #define MONO_ARCH_USE_SIGACTION 1
diff --git a/mono/mini/mini-llvm-cpp.cpp b/mono/mini/mini-llvm-cpp.cpp
index 536ea92..9843a52 100644
--- a/mono/mini/mini-llvm-cpp.cpp
+++ b/mono/mini/mini-llvm-cpp.cpp
@@ -46,6 +46,10 @@
 
 #include "mini-llvm-cpp.h"
 
+#define LLVM_CHECK_VERSION(major,minor) \
+	((LLVM_MAJOR_VERSION > (major)) ||									\
+	 ((LLVM_MAJOR_VERSION == (major)) && (LLVM_MINOR_VERSION >= (minor))))
+
 extern "C" void LLVMInitializeX86TargetInfo();
 
 using namespace llvm;
@@ -260,6 +264,7 @@ void
 mono_llvm_dump_value (LLVMValueRef value)
 {
 	/* Same as LLVMDumpValue (), but print to stdout */
+	fflush (stdout);
 	outs () << (*unwrap<Value> (value));
 }
 
@@ -298,6 +303,18 @@ mono_llvm_build_store (LLVMBuilderRef builder, LLVMValueRef Val, LLVMValueRef Po
 	return wrap(unwrap(builder)->CreateStore(unwrap(Val), unwrap(PointerVal), is_volatile));
 }
 
+LLVMValueRef 
+mono_llvm_build_aligned_store (LLVMBuilderRef builder, LLVMValueRef Val, LLVMValueRef PointerVal,
+							   gboolean is_volatile, int alignment)
+{
+	StoreInst *ins;
+
+	ins = unwrap(builder)->CreateStore(unwrap(Val), unwrap(PointerVal), is_volatile);
+	ins->setAlignment (alignment);
+
+	return wrap (ins);
+}
+
 void
 mono_llvm_replace_uses_of (LLVMValueRef var, LLVMValueRef v)
 {
@@ -376,7 +393,6 @@ force_pass_linking (void)
       (void) llvm::createLoopUnrollPass();
       (void) llvm::createLoopUnswitchPass();
       (void) llvm::createLoopRotatePass();
-      (void) llvm::createLoopIndexSplitPass();
       (void) llvm::createLowerInvokePass();
 	  /*
       (void) llvm::createLowerSetJmpPass();
@@ -473,6 +489,19 @@ mono_llvm_create_ee (LLVMModuleProviderRef MP, AllocCodeMemoryCb *alloc_cb, Func
 
   fpm->add(new TargetData(*EE->getTargetData()));
 
+#if LLVM_CHECK_VERSION(2, 9)
+  PassRegistry &Registry = *PassRegistry::getPassRegistry();
+  initializeCore(Registry);
+  initializeScalarOpts(Registry);
+  //initializeIPO(Registry);
+  initializeAnalysis(Registry);
+  initializeIPA(Registry);
+  initializeTransformUtils(Registry);
+  initializeInstCombine(Registry);
+  //initializeInstrumentation(Registry);
+  initializeTarget(Registry);
+#endif
+
   llvm::cl::ParseEnvironmentOptions("mono", "MONO_LLVM", "", false);
 
   if (PassList.size() > 0) {
diff --git a/mono/mini/mini-llvm-cpp.h b/mono/mini/mini-llvm-cpp.h
index 8bb8111..e683227 100644
--- a/mono/mini/mini-llvm-cpp.h
+++ b/mono/mini/mini-llvm-cpp.h
@@ -50,6 +50,10 @@ LLVMValueRef
 mono_llvm_build_store (LLVMBuilderRef builder, LLVMValueRef Val, LLVMValueRef PointerVal,
 					   gboolean is_volatile);
 
+LLVMValueRef 
+mono_llvm_build_aligned_store (LLVMBuilderRef builder, LLVMValueRef Val, LLVMValueRef PointerVal,
+							   gboolean is_volatile, int alignment);
+
 void
 mono_llvm_replace_uses_of (LLVMValueRef var, LLVMValueRef v);
 
diff --git a/mono/mini/mini-llvm.c b/mono/mini/mini-llvm.c
index 5040275..fdc46df 100644
--- a/mono/mini/mini-llvm.c
+++ b/mono/mini/mini-llvm.c
@@ -256,6 +256,29 @@ simd_class_to_llvm_type (EmitContext *ctx, MonoClass *klass)
 	}
 }
 
+/* Return the 128 bit SIMD type corresponding to the mono type TYPE */
+static inline G_GNUC_UNUSED LLVMTypeRef
+type_to_simd_type (int type)
+{
+	switch (type) {
+	case MONO_TYPE_I1:
+		return LLVMVectorType (LLVMInt8Type (), 16);
+	case MONO_TYPE_I2:
+		return LLVMVectorType (LLVMInt16Type (), 8);
+	case MONO_TYPE_I4:
+		return LLVMVectorType (LLVMInt32Type (), 4);
+	case MONO_TYPE_I8:
+		return LLVMVectorType (LLVMInt64Type (), 2);
+	case MONO_TYPE_R8:
+		return LLVMVectorType (LLVMDoubleType (), 2);
+	case MONO_TYPE_R4:
+		return LLVMVectorType (LLVMFloatType (), 4);
+	default:
+		g_assert_not_reached ();
+		return NULL;
+	}
+}
+
 /*
  * type_to_llvm_type:
  *
@@ -617,7 +640,7 @@ simd_op_to_intrins (int opcode)
 	case OP_MINPD:
 		return "llvm.x86.sse2.min.pd";
 	case OP_MINPS:
-		return "llvm.x86.sse2.min.ps";
+		return "llvm.x86.sse.min.ps";
 	case OP_PMIND_UN:
 		return "llvm.x86.sse41.pminud";
 	case OP_PMINW_UN:
@@ -629,13 +652,79 @@ simd_op_to_intrins (int opcode)
 	case OP_MAXPD:
 		return "llvm.x86.sse2.max.pd";
 	case OP_MAXPS:
-		return "llvm.x86.sse2.max.ps";
+		return "llvm.x86.sse.max.ps";
+	case OP_HADDPD:
+		return "llvm.x86.sse3.hadd.pd";
+	case OP_HADDPS:
+		return "llvm.x86.sse3.hadd.ps";
+	case OP_HSUBPD:
+		return "llvm.x86.sse3.hsub.pd";
+	case OP_HSUBPS:
+		return "llvm.x86.sse3.hsub.ps";
 	case OP_PMAXD_UN:
 		return "llvm.x86.sse41.pmaxud";
 	case OP_PMAXW_UN:
 		return "llvm.x86.sse41.pmaxuw";
 	case OP_PMAXB_UN:
 		return "llvm.x86.sse2.pmaxu.b";
+	case OP_ADDSUBPS:
+		return "llvm.x86.sse3.addsub.ps";
+	case OP_ADDSUBPD:
+		return "llvm.x86.sse3.addsub.pd";
+	case OP_EXTRACT_MASK:
+		return "llvm.x86.sse2.pmovmskb.128";
+	case OP_PSHRW:
+	case OP_PSHRW_REG:
+		return "llvm.x86.sse2.psrli.w";
+	case OP_PSHRD:
+	case OP_PSHRD_REG:
+		return "llvm.x86.sse2.psrli.d";
+	case OP_PSHRQ:
+	case OP_PSHRQ_REG:
+		return "llvm.x86.sse2.psrli.q";
+	case OP_PSHLW:
+	case OP_PSHLW_REG:
+		return "llvm.x86.sse2.pslli.w";
+	case OP_PSHLD:
+	case OP_PSHLD_REG:
+		return "llvm.x86.sse2.pslli.d";
+	case OP_PSHLQ:
+	case OP_PSHLQ_REG:
+		return "llvm.x86.sse2.pslli.q";
+	case OP_PSARW:
+	case OP_PSARW_REG:
+		return "llvm.x86.sse2.psrai.w";
+	case OP_PSARD:
+	case OP_PSARD_REG:
+		return "llvm.x86.sse2.psrai.d";
+	case OP_PADDB_SAT:
+		return "llvm.x86.sse2.padds.b";
+	case OP_PADDW_SAT:
+		return "llvm.x86.sse2.padds.w";
+	case OP_PSUBB_SAT:
+		return "llvm.x86.sse2.psubs.b";
+	case OP_PSUBW_SAT:
+		return "llvm.x86.sse2.psubs.w";
+	case OP_PADDB_SAT_UN:
+		return "llvm.x86.sse2.paddus.b";
+	case OP_PADDW_SAT_UN:
+		return "llvm.x86.sse2.paddus.w";
+	case OP_PSUBB_SAT_UN:
+		return "llvm.x86.sse2.psubus.b";
+	case OP_PSUBW_SAT_UN:
+		return "llvm.x86.sse2.psubus.w";
+	case OP_PAVGB_UN:
+		return "llvm.x86.sse2.pavg.b";
+	case OP_PAVGW_UN:
+		return "llvm.x86.sse2.pavg.w";
+	case OP_SQRTPS:
+		return "llvm.x86.sse.sqrt.ps";
+	case OP_SQRTPD:
+		return "llvm.x86.sse2.sqrt.pd";
+	case OP_RSQRTPS:
+		return "llvm.x86.sse.rsqrt.ps";
+	case OP_RCPPS:
+		return "llvm.x86.sse.rcp.ps";
 	case OP_PCMPEQB:
 		return "llvm.x86.sse2.pcmpeq.b";
 	case OP_PCMPEQW:
@@ -646,6 +735,38 @@ simd_op_to_intrins (int opcode)
 		return "llvm.x86.sse41.pcmpeqq";
 	case OP_PCMPGTB:
 		return "llvm.x86.sse2.pcmpgt.b";
+	case OP_CVTDQ2PD:
+		return "llvm.x86.sse2.cvtdq2pd";
+	case OP_CVTDQ2PS:
+		return "llvm.x86.sse2.cvtdq2ps";
+	case OP_CVTPD2DQ:
+		return "llvm.x86.sse2.cvtpd2dq";
+	case OP_CVTPS2DQ:
+		return "llvm.x86.sse2.cvtps2dq";
+	case OP_CVTPD2PS:
+		return "llvm.x86.sse2.cvtpd2ps";
+	case OP_CVTPS2PD:
+		return "llvm.x86.sse2.cvtps2pd";
+	case OP_CVTTPD2DQ:
+		return "llvm.x86.sse2.cvttpd2dq";
+	case OP_CVTTPS2DQ:
+		return "llvm.x86.sse2.cvttps2dq";
+	case OP_COMPPS:
+		return "llvm.x86.sse.cmp.ps";
+	case OP_COMPPD:
+		return "llvm.x86.sse2.cmp.pd";
+	case OP_PACKW:
+		return "llvm.x86.sse2.packsswb.128";
+	case OP_PACKD:
+		return "llvm.x86.sse2.packssdw.128";
+	case OP_PACKW_UN:
+		return "llvm.x86.sse2.packuswb.128";
+	case OP_PACKD_UN:
+		return "llvm.x86.sse41.packusdw";
+	case OP_PMULW_HIGH:
+		return "llvm.x86.sse2.pmulh.w";
+	case OP_PMULW_HIGH_UN:
+		return "llvm.x86.sse2.pmulhu.w";
 #endif
 	default:
 		g_assert_not_reached ();
@@ -660,23 +781,46 @@ simd_op_to_llvm_type (int opcode)
 	switch (opcode) {
 	case OP_EXTRACT_R8:
 	case OP_EXPAND_R8:
-		return LLVMVectorType (LLVMDoubleType (), 2);
+		return type_to_simd_type (MONO_TYPE_R8);
 	case OP_EXTRACT_I8:
 	case OP_EXPAND_I8:
-		return LLVMVectorType (LLVMInt64Type (), 2);
+		return type_to_simd_type (MONO_TYPE_I8);
 	case OP_EXTRACT_I4:
 	case OP_EXPAND_I4:
-		return LLVMVectorType (LLVMInt32Type (), 4);
+		return type_to_simd_type (MONO_TYPE_I4);
 	case OP_EXTRACT_I2:
 	case OP_EXTRACT_U2:
+	case OP_EXTRACTX_U2:
 	case OP_EXPAND_I2:
-		return LLVMVectorType (LLVMInt16Type (), 8);
+		return type_to_simd_type (MONO_TYPE_I2);
 	case OP_EXTRACT_I1:
 	case OP_EXTRACT_U1:
 	case OP_EXPAND_I1:
-		return LLVMVectorType (LLVMInt8Type (), 16);
+		return type_to_simd_type (MONO_TYPE_I1);
 	case OP_EXPAND_R4:
-		return LLVMVectorType (LLVMFloatType (), 4);
+		return type_to_simd_type (MONO_TYPE_R4);
+	case OP_CVTDQ2PD:
+	case OP_CVTDQ2PS:
+		return type_to_simd_type (MONO_TYPE_I4);
+	case OP_CVTPD2DQ:
+	case OP_CVTPD2PS:
+	case OP_CVTTPD2DQ:
+		return type_to_simd_type (MONO_TYPE_R8);
+	case OP_CVTPS2DQ:
+	case OP_CVTPS2PD:
+	case OP_CVTTPS2DQ:
+		return type_to_simd_type (MONO_TYPE_R4);
+	case OP_EXTRACT_MASK:
+		return type_to_simd_type (MONO_TYPE_I1);
+	case OP_SQRTPS:
+	case OP_RSQRTPS:
+	case OP_RCPPS:
+	case OP_DUPPS_LOW:
+	case OP_DUPPS_HIGH:
+		return type_to_simd_type (MONO_TYPE_R4);
+	case OP_SQRTPD:
+	case OP_DUPPD:
+		return type_to_simd_type (MONO_TYPE_R8);
 	default:
 		g_assert_not_reached ();
 		return NULL;
@@ -797,6 +941,9 @@ convert_full (EmitContext *ctx, LLVMValueRef v, LLVMTypeRef dtype, gboolean is_u
 			return LLVMBuildBitCast (ctx->builder, LLVMBuildZExt (ctx->builder, v, LLVMInt64Type (), ""), dtype, "");
 #endif
 
+		if (LLVMGetTypeKind (stype) == LLVMVectorTypeKind && LLVMGetTypeKind (dtype) == LLVMVectorTypeKind)
+			return LLVMBuildBitCast (ctx->builder, v, dtype, "");
+
 		LLVMDumpValue (v);
 		LLVMDumpValue (LLVMConstNull (dtype));
 		g_assert_not_reached ();
@@ -1083,6 +1230,10 @@ get_plt_entry (EmitContext *ctx, LLVMTypeRef llvm_sig, MonoJumpInfoType type, gc
 	if (!callee_name)
 		return NULL;
 
+	if (ctx->cfg->compile_aot)
+		/* Add a patch so referenced wrappers can be compiled in full aot mode */
+		mono_add_patch_info (ctx->cfg, 0, type, data);
+
 	// FIXME: Locking
 	callee = g_hash_table_lookup (ctx->lmodule->plt_entries, callee_name);
 	if (!callee) {
@@ -1937,7 +2088,7 @@ process_call (EmitContext *ctx, MonoBasicBlock *bb, LLVMBuilderRef *builder_ref,
 #endif
 	/* The two can't be used together, so use only one LLVM calling conv to pass them */
 	g_assert (!(call->rgctx_arg_reg && call->imt_arg_reg));
-	if (call->rgctx_arg_reg || call->imt_arg_reg)
+	if (!sig->pinvoke)
 		LLVMSetInstructionCallConv (lcall, LLVMMono1CallConv);
 
 	if (call->rgctx_arg_reg)
@@ -2301,6 +2452,15 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
 				cmp = LLVMBuildFCmp (builder, fpcond_to_llvm_cond [rel], convert (ctx, lhs, LLVMDoubleType ()), convert (ctx, rhs, LLVMDoubleType ()), "");
 			else if (ins->opcode == OP_COMPARE_IMM)
 				cmp = LLVMBuildICmp (builder, cond_to_llvm_cond [rel], convert (ctx, lhs, IntPtrType ()), LLVMConstInt (IntPtrType (), ins->inst_imm, FALSE), "");
+			else if (ins->opcode == OP_LCOMPARE_IMM) {
+				if (SIZEOF_REGISTER == 4 && COMPILE_LLVM (cfg))  {
+					/* The immediate is encoded in two fields */
+					guint64 l = ((guint64)(guint32)ins->inst_offset << 32) | ((guint32)ins->inst_imm);
+					cmp = LLVMBuildICmp (builder, cond_to_llvm_cond [rel], convert (ctx, lhs, LLVMInt64Type ()), LLVMConstInt (LLVMInt64Type (), l, FALSE), "");
+				} else {
+					cmp = LLVMBuildICmp (builder, cond_to_llvm_cond [rel], convert (ctx, lhs, LLVMInt64Type ()), LLVMConstInt (LLVMInt64Type (), ins->inst_imm, FALSE), "");
+				}
+			}
 			else if (ins->opcode == OP_COMPARE)
 				cmp = LLVMBuildICmp (builder, cond_to_llvm_cond [rel], convert (ctx, lhs, IntPtrType ()), convert (ctx, rhs, IntPtrType ()), "");
 			else
@@ -2400,6 +2560,7 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
 		case OP_MOVE:
 		case OP_LMOVE:
 		case OP_XMOVE:
+		case OP_SETFRET:
 			g_assert (lhs);
 			values [ins->dreg] = lhs;
 			break;
@@ -3245,6 +3406,11 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
 
 			switch (ins->opcode) {
 			case OP_STOREV_MEMBASE:
+				if (cfg->gen_write_barriers && klass->has_references && ins->inst_destbasereg != cfg->frame_reg) {
+					/* FIXME: Emit write barriers like in mini_emit_stobj () */
+					LLVM_FAILURE (ctx, "storev_membase + write barriers");
+					break;
+				}
 				if (!addresses [ins->sreg1]) {
 					/* SIMD */
 					g_assert (values [ins->sreg1]);
@@ -3273,6 +3439,7 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
 			default:
 				g_assert_not_reached ();
 			}
+			CHECK_FAILURE (ctx);
 
 			if (done)
 				break;
@@ -3312,6 +3479,14 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
 			values [ins->dreg] = mono_llvm_build_aligned_load (builder, src, "", FALSE, 1);
 			break;
 		}
+		case OP_STOREX_MEMBASE: {
+			LLVMTypeRef t = LLVMTypeOf (values [ins->sreg1]);
+			LLVMValueRef dest;
+
+			dest = convert (ctx, LLVMBuildAdd (builder, convert (ctx, values [ins->inst_destbasereg], IntPtrType ()), LLVMConstInt (IntPtrType (), ins->inst_offset, FALSE), ""), LLVMPointerType (t, 0));
+			mono_llvm_build_aligned_store (builder, values [ins->sreg1], dest, FALSE, 1);
+			break;
+		}
 		case OP_PADDB:
 		case OP_PADDW:
 		case OP_PADDD:
@@ -3349,6 +3524,10 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
 		case OP_PXOR:
 			values [ins->dreg] = LLVMBuildXor (builder, lhs, rhs, "");
 			break;
+		case OP_PMULW:
+		case OP_PMULD:
+			values [ins->dreg] = LLVMBuildMul (builder, lhs, rhs, "");
+			break;
 		case OP_ANDPS:
 		case OP_ANDNPS:
 		case OP_ORPS:
@@ -3408,6 +3587,8 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
 		case OP_MINPS:
 		case OP_MAXPD:
 		case OP_MAXPS:
+		case OP_ADDSUBPD:
+		case OP_ADDSUBPS:
 		case OP_PMIND_UN:
 		case OP_PMINW_UN:
 		case OP_PMINB_UN:
@@ -3415,11 +3596,31 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
 		case OP_PMAXD_UN:
 		case OP_PMAXW_UN:
 		case OP_PMAXB_UN:
+		case OP_HADDPD:
+		case OP_HADDPS:
+		case OP_HSUBPD:
+		case OP_HSUBPS:
+		case OP_PADDB_SAT:
+		case OP_PADDW_SAT:
+		case OP_PSUBB_SAT:
+		case OP_PSUBW_SAT:
+		case OP_PADDB_SAT_UN:
+		case OP_PADDW_SAT_UN:
+		case OP_PSUBB_SAT_UN:
+		case OP_PSUBW_SAT_UN:
+		case OP_PAVGB_UN:
+		case OP_PAVGW_UN:
 		case OP_PCMPEQB:
 		case OP_PCMPEQW:
 		case OP_PCMPEQD:
 		case OP_PCMPEQQ:
-		case OP_PCMPGTB: {
+		case OP_PCMPGTB:
+		case OP_PACKW:
+		case OP_PACKD:
+		case OP_PACKW_UN:
+		case OP_PACKD_UN:
+		case OP_PMULW_HIGH:
+		case OP_PMULW_HIGH_UN: {
 			LLVMValueRef args [2];
 
 			args [0] = lhs;
@@ -3433,6 +3634,7 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
 		case OP_EXTRACT_I4:
 		case OP_EXTRACT_I2:
 		case OP_EXTRACT_U2:
+		case OP_EXTRACTX_U2:
 		case OP_EXTRACT_I1:
 		case OP_EXTRACT_U1: {
 			LLVMTypeRef t;
@@ -3448,6 +3650,7 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
 			case OP_EXTRACT_I1:
 				break;
 			case OP_EXTRACT_U2:
+			case OP_EXTRACTX_U2:
 			case OP_EXTRACT_U1:
 				zext = TRUE;
 				break;
@@ -3481,7 +3684,289 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
 			values [ins->dreg] = LLVMBuildShuffleVector (builder, values [ins->dreg], LLVMGetUndef (t), LLVMConstVector (mask, LLVMGetVectorSize (t)), "");
 			break;
 		}
-#endif
+
+		case OP_INSERT_I1:
+			values [ins->dreg] = LLVMBuildInsertElement (builder, values [ins->sreg1], convert (ctx, values [ins->sreg2], LLVMInt8Type ()), LLVMConstInt (LLVMInt32Type (), ins->inst_c0, FALSE), dname);
+			break;
+		case OP_INSERT_I2:
+			values [ins->dreg] = LLVMBuildInsertElement (builder, values [ins->sreg1], convert (ctx, values [ins->sreg2], LLVMInt16Type ()), LLVMConstInt (LLVMInt32Type (), ins->inst_c0, FALSE), dname);
+			break;
+		case OP_INSERT_I4:
+			values [ins->dreg] = LLVMBuildInsertElement (builder, values [ins->sreg1], convert (ctx, values [ins->sreg2], LLVMInt32Type ()), LLVMConstInt (LLVMInt32Type (), ins->inst_c0, FALSE), dname);
+			break;
+		case OP_INSERT_I8:
+			values [ins->dreg] = LLVMBuildInsertElement (builder, values [ins->sreg1], convert (ctx, values [ins->sreg2], LLVMInt64Type ()), LLVMConstInt (LLVMInt32Type (), ins->inst_c0, FALSE), dname);
+			break;
+		case OP_INSERT_R4:
+			values [ins->dreg] = LLVMBuildInsertElement (builder, values [ins->sreg1], convert (ctx, values [ins->sreg2], LLVMFloatType ()), LLVMConstInt (LLVMInt32Type (), ins->inst_c0, FALSE), dname);
+			break;
+		case OP_INSERT_R8:
+			values [ins->dreg] = LLVMBuildInsertElement (builder, values [ins->sreg1], convert (ctx, values [ins->sreg2], LLVMDoubleType ()), LLVMConstInt (LLVMInt32Type (), ins->inst_c0, FALSE), dname);
+			break;
+
+		case OP_CVTDQ2PD:
+		case OP_CVTDQ2PS:
+		case OP_CVTPD2DQ:
+		case OP_CVTPS2DQ:
+		case OP_CVTPD2PS:
+		case OP_CVTPS2PD:
+		case OP_CVTTPD2DQ:
+		case OP_CVTTPS2DQ:
+		case OP_EXTRACT_MASK:
+		case OP_SQRTPS:
+		case OP_SQRTPD:
+		case OP_RSQRTPS:
+		case OP_RCPPS: {
+			LLVMValueRef v;
+
+			v = convert (ctx, values [ins->sreg1], simd_op_to_llvm_type (ins->opcode));
+
+			values [ins->dreg] = LLVMBuildCall (builder, LLVMGetNamedFunction (module, simd_op_to_intrins (ins->opcode)), &v, 1, dname);
+			break;
+		}
+
+		case OP_ICONV_TO_R8_RAW:
+			/* Same as OP_ICONV_TO_R8 */
+			values [ins->dreg] = convert (ctx, LLVMBuildBitCast (builder, lhs, LLVMFloatType (), ""), LLVMDoubleType ());
+			break;
+
+		case OP_COMPPS:
+		case OP_COMPPD: {
+			LLVMValueRef args [3];
+
+			args [0] = lhs;
+			args [1] = rhs;
+			args [2] = LLVMConstInt (LLVMInt8Type (), ins->inst_c0, FALSE);
+
+			values [ins->dreg] = LLVMBuildCall (builder, LLVMGetNamedFunction (module, simd_op_to_intrins (ins->opcode)), args, 3, dname);
+			break;
+		}
+
+		case OP_ICONV_TO_X:
+			/* This is only used for implementing shifts by non-immediate */
+			values [ins->dreg] = lhs;
+			break;
+
+		case OP_PSHRW:
+		case OP_PSHRD:
+		case OP_PSHRQ:
+		case OP_PSARW:
+		case OP_PSARD:
+		case OP_PSHLW:
+		case OP_PSHLD:
+		case OP_PSHLQ: {
+			LLVMValueRef args [3];
+
+			args [0] = lhs;
+			args [1] = LLVMConstInt (LLVMInt32Type (), ins->inst_imm, FALSE);
+
+			values [ins->dreg] = LLVMBuildCall (builder, LLVMGetNamedFunction (module, simd_op_to_intrins (ins->opcode)), args, 2, dname);
+			break;
+		}
+
+		case OP_PSHRW_REG:
+		case OP_PSHRD_REG:
+		case OP_PSHRQ_REG:
+		case OP_PSARW_REG:
+		case OP_PSARD_REG:
+		case OP_PSHLW_REG:
+		case OP_PSHLD_REG:
+		case OP_PSHLQ_REG: {
+			LLVMValueRef args [3];
+
+			args [0] = lhs;
+			args [1] = values [ins->sreg2];
+
+			values [ins->dreg] = LLVMBuildCall (builder, LLVMGetNamedFunction (module, simd_op_to_intrins (ins->opcode)), args, 2, dname);
+			break;
+		}
+
+		case OP_SHUFPS:
+		case OP_SHUFPD:
+		case OP_PSHUFLED:
+		case OP_PSHUFLEW_LOW:
+		case OP_PSHUFLEW_HIGH: {
+			int mask [16];
+			LLVMValueRef v1 = NULL, v2 = NULL, mask_values [4];
+			int i, mask_size = 0;
+			int imask = ins->inst_c0;
+	
+			/* Convert the x86 shuffle mask to LLVM's */
+			switch (ins->opcode) {
+			case OP_SHUFPS:
+				mask_size = 4;
+				mask [0] = ((imask >> 0) & 3);
+				mask [1] = ((imask >> 2) & 3);
+				mask [2] = ((imask >> 4) & 3) + 4;
+				mask [3] = ((imask >> 6) & 3) + 4;
+				v1 = values [ins->sreg1];
+				v2 = values [ins->sreg2];
+				break;
+			case OP_SHUFPD:
+				mask_size = 2;
+				mask [0] = ((imask >> 0) & 1);
+				mask [1] = ((imask >> 1) & 1) + 2;
+				v1 = values [ins->sreg1];
+				v2 = values [ins->sreg2];
+				break;
+			case OP_PSHUFLEW_LOW:
+				mask_size = 8;
+				mask [0] = ((imask >> 0) & 3);
+				mask [1] = ((imask >> 2) & 3);
+				mask [2] = ((imask >> 4) & 3);
+				mask [3] = ((imask >> 6) & 3);
+				mask [4] = 4 + 0;
+				mask [5] = 4 + 1;
+				mask [6] = 4 + 2;
+				mask [7] = 4 + 3;
+				v1 = values [ins->sreg1];
+				v2 = LLVMGetUndef (LLVMTypeOf (v1));
+				break;
+			case OP_PSHUFLEW_HIGH:
+				mask_size = 8;
+				mask [0] = 0;
+				mask [1] = 1;
+				mask [2] = 2;
+				mask [3] = 3;
+				mask [4] = 4 + ((imask >> 0) & 3);
+				mask [5] = 4 + ((imask >> 2) & 3);
+				mask [6] = 4 + ((imask >> 4) & 3);
+				mask [7] = 4 + ((imask >> 6) & 3);
+				v1 = values [ins->sreg1];
+				v2 = LLVMGetUndef (LLVMTypeOf (v1));
+				break;
+			case OP_PSHUFLED:
+				mask_size = 4;
+				mask [0] = ((imask >> 0) & 3);
+				mask [1] = ((imask >> 2) & 3);
+				mask [2] = ((imask >> 4) & 3);
+				mask [3] = ((imask >> 6) & 3);
+				v1 = values [ins->sreg1];
+				v2 = LLVMGetUndef (LLVMTypeOf (v1));
+				break;
+			default:
+				g_assert_not_reached ();
+			}
+			for (i = 0; i < mask_size; ++i)
+				mask_values [i] = LLVMConstInt (LLVMInt32Type (), mask [i], FALSE);
+
+			values [ins->dreg] =
+				LLVMBuildShuffleVector (builder, v1, v2,
+										LLVMConstVector (mask_values, mask_size), dname);
+			break;
+		}
+
+		case OP_UNPACK_LOWB:
+		case OP_UNPACK_LOWW:
+		case OP_UNPACK_LOWD:
+		case OP_UNPACK_LOWQ:
+		case OP_UNPACK_LOWPS:
+		case OP_UNPACK_LOWPD:
+		case OP_UNPACK_HIGHB:
+		case OP_UNPACK_HIGHW:
+		case OP_UNPACK_HIGHD:
+		case OP_UNPACK_HIGHQ:
+		case OP_UNPACK_HIGHPS:
+		case OP_UNPACK_HIGHPD: {
+			int mask [16];
+			LLVMValueRef mask_values [16];
+			int i, mask_size = 0;
+			gboolean low = FALSE;
+
+			switch (ins->opcode) {
+			case OP_UNPACK_LOWB:
+				mask_size = 16;
+				low = TRUE;
+				break;
+			case OP_UNPACK_LOWW:
+				mask_size = 8;
+				low = TRUE;
+				break;
+			case OP_UNPACK_LOWD:
+			case OP_UNPACK_LOWPS:
+				mask_size = 4;
+				low = TRUE;
+				break;
+			case OP_UNPACK_LOWQ:
+			case OP_UNPACK_LOWPD:
+				mask_size = 2;
+				low = TRUE;
+				break;
+			case OP_UNPACK_HIGHB:
+				mask_size = 16;
+				break;
+			case OP_UNPACK_HIGHW:
+				mask_size = 8;
+				break;
+			case OP_UNPACK_HIGHD:
+			case OP_UNPACK_HIGHPS:
+				mask_size = 4;
+				break;
+			case OP_UNPACK_HIGHQ:
+			case OP_UNPACK_HIGHPD:
+				mask_size = 2;
+				break;
+			default:
+				g_assert_not_reached ();
+			}
+
+			if (low) {
+				for (i = 0; i < (mask_size / 2); ++i) {
+					mask [(i * 2)] = i;
+					mask [(i * 2) + 1] = mask_size + i;
+				}
+			} else {
+				for (i = 0; i < (mask_size / 2); ++i) {
+					mask [(i * 2)] = (mask_size / 2) + i;
+					mask [(i * 2) + 1] = mask_size + (mask_size / 2) + i;
+				}
+			}
+
+			for (i = 0; i < mask_size; ++i)
+				mask_values [i] = LLVMConstInt (LLVMInt32Type (), mask [i], FALSE);
+			
+			values [ins->dreg] =
+				LLVMBuildShuffleVector (builder, values [ins->sreg1], values [ins->sreg2],
+										LLVMConstVector (mask_values, mask_size), dname);
+			break;
+		}
+
+		case OP_DUPPD: {
+			LLVMTypeRef t = simd_op_to_llvm_type (ins->opcode);
+			LLVMValueRef v, val;
+
+			v = LLVMBuildExtractElement (builder, lhs, LLVMConstInt (LLVMInt32Type (), 0, FALSE), "");
+			val = LLVMConstNull (t);
+			val = LLVMBuildInsertElement (builder, val, v, LLVMConstInt (LLVMInt32Type (), 0, FALSE), "");
+			val = LLVMBuildInsertElement (builder, val, v, LLVMConstInt (LLVMInt32Type (), 1, FALSE), dname);
+
+			values [ins->dreg] = val;
+			break;
+		}
+		case OP_DUPPS_LOW:
+		case OP_DUPPS_HIGH: {
+			LLVMTypeRef t = simd_op_to_llvm_type (ins->opcode);
+			LLVMValueRef v1, v2, val;
+			
+
+			if (ins->opcode == OP_DUPPS_LOW) {
+				v1 = LLVMBuildExtractElement (builder, lhs, LLVMConstInt (LLVMInt32Type (), 0, FALSE), "");
+				v2 = LLVMBuildExtractElement (builder, lhs, LLVMConstInt (LLVMInt32Type (), 2, FALSE), "");
+			} else {
+				v1 = LLVMBuildExtractElement (builder, lhs, LLVMConstInt (LLVMInt32Type (), 1, FALSE), "");
+				v2 = LLVMBuildExtractElement (builder, lhs, LLVMConstInt (LLVMInt32Type (), 3, FALSE), "");
+			}
+			val = LLVMConstNull (t);
+			val = LLVMBuildInsertElement (builder, val, v1, LLVMConstInt (LLVMInt32Type (), 0, FALSE), "");
+			val = LLVMBuildInsertElement (builder, val, v1, LLVMConstInt (LLVMInt32Type (), 1, FALSE), "");
+			val = LLVMBuildInsertElement (builder, val, v2, LLVMConstInt (LLVMInt32Type (), 2, FALSE), "");
+			val = LLVMBuildInsertElement (builder, val, v2, LLVMConstInt (LLVMInt32Type (), 3, FALSE), "");
+			
+			values [ins->dreg] = val;
+			break;
+		}
+
+#endif /* SIMD */
 
 		case OP_DUMMY_USE:
 			break;
@@ -3718,8 +4203,8 @@ mono_llvm_emit_method (MonoCompile *cfg)
 	MonoMethodSignature *sig;
 	MonoBasicBlock *bb;
 	LLVMTypeRef method_type;
-	LLVMValueRef method = NULL, debug_alias = NULL;
-	char *method_name, *debug_name = NULL;
+	LLVMValueRef method = NULL;
+	char *method_name;
 	LLVMValueRef *values;
 	int i, max_block_num, bb_index;
 	gboolean last = FALSE;
@@ -3772,12 +4257,11 @@ mono_llvm_emit_method (MonoCompile *cfg)
 	if (cfg->compile_aot) {
 		ctx->lmodule = &aot_module;
 		method_name = mono_aot_get_method_name (cfg);
-		debug_name = mono_aot_get_method_debug_name (cfg);
+		cfg->llvm_method_name = g_strdup (method_name);
 	} else {
 		init_jit_module ();
 		ctx->lmodule = &jit_module;
 		method_name = mono_method_full_name (cfg->method, TRUE);
-		debug_name = NULL;
 	}
 	
 	module = ctx->module = ctx->lmodule->module;
@@ -3825,11 +4309,17 @@ mono_llvm_emit_method (MonoCompile *cfg)
 	ctx->lmethod = method;
 
 #ifdef LLVM_MONO_BRANCH
-	if (linfo->rgctx_arg)
-		LLVMSetFunctionCallConv (method, LLVMMono1CallConv);
+	LLVMSetFunctionCallConv (method, LLVMMono1CallConv);
 #endif
 	LLVMSetLinkage (method, LLVMPrivateLinkage);
 
+	if (cfg->compile_aot) {
+		LLVMSetLinkage (method, LLVMInternalLinkage);
+		LLVMSetVisibility (method, LLVMHiddenVisibility);
+	} else {
+		LLVMSetLinkage (method, LLVMPrivateLinkage);
+	}
+
 	if (cfg->method->save_lmf)
 		LLVM_FAILURE (ctx, "lmf");
 
@@ -4053,14 +4543,6 @@ mono_llvm_emit_method (MonoCompile *cfg)
 
 	if (cfg->compile_aot) {
 		/* Don't generate native code, keep the LLVM IR */
-
-		/* Can't delete the method if it has an alias, so only add it if successful */
-		if (debug_name) {
-			debug_alias = LLVMAddAlias (module, LLVMTypeOf (method), method, debug_name);
-			LLVMSetLinkage (debug_alias, LLVMInternalLinkage);
-			LLVMSetVisibility (debug_alias, LLVMHiddenVisibility);
-		}
-
 		if (cfg->compile_aot && cfg->verbose_level)
 			printf ("%s emitted as %s\n", mono_method_full_name (cfg->method, TRUE), method_name);
 
@@ -4108,7 +4590,6 @@ mono_llvm_emit_method (MonoCompile *cfg)
 	g_free (ctx->pindexes);
 	g_free (ctx->is_dead);
 	g_free (ctx->unreachable);
-	g_free (debug_name);
 	g_ptr_array_free (phi_values, TRUE);
 	g_free (ctx->bblocks);
 	g_hash_table_destroy (ctx->region_to_handler);
@@ -4302,6 +4783,23 @@ exception_cb (void *data)
 	g_free (type_info);
 }
 
+static inline void
+AddFunc (LLVMModuleRef module, const char *name, LLVMTypeRef ret_type, LLVMTypeRef *param_types, int nparams)
+{
+	LLVMAddFunction (module, name, LLVMFunctionType (ret_type, param_types, nparams, FALSE));
+}
+
+static inline void
+AddFunc2 (LLVMModuleRef module, const char *name, LLVMTypeRef ret_type, LLVMTypeRef param_type1, LLVMTypeRef param_type2)
+{
+	LLVMTypeRef param_types [4];
+
+	param_types [0] = param_type1;
+	param_types [1] = param_type2;
+
+	AddFunc (module, name, ret_type, param_types, 2);
+}
+
 static void
 add_intrinsics (LLVMModuleRef module)
 {
@@ -4420,47 +4918,155 @@ add_intrinsics (LLVMModuleRef module)
 
 	/* SSE intrinsics */
 	{
-		LLVMTypeRef vector_type, arg_types [2];
-
-		vector_type = LLVMVectorType (LLVMInt32Type (), 4);
-		arg_types [0] = vector_type;
-		arg_types [1] = vector_type;
-		LLVMAddFunction (module, "llvm.x86.sse41.pminud", LLVMFunctionType (vector_type, arg_types, 2, FALSE));
-		LLVMAddFunction (module, "llvm.x86.sse41.pmaxud", LLVMFunctionType (vector_type, arg_types, 2, FALSE));
-		LLVMAddFunction (module, "llvm.x86.sse2.pcmpeq.d", LLVMFunctionType (vector_type, arg_types, 2, FALSE));
-
-		vector_type = LLVMVectorType (LLVMInt16Type (), 8);
-		arg_types [0] = vector_type;
-		arg_types [1] = vector_type;
-		LLVMAddFunction (module, "llvm.x86.sse41.pminuw", LLVMFunctionType (vector_type, arg_types, 2, FALSE));
-		LLVMAddFunction (module, "llvm.x86.sse2.pmins.w", LLVMFunctionType (vector_type, arg_types, 2, FALSE));
-		LLVMAddFunction (module, "llvm.x86.sse41.pmaxuw", LLVMFunctionType (vector_type, arg_types, 2, FALSE));
-		LLVMAddFunction (module, "llvm.x86.sse2.pcmpeq.w", LLVMFunctionType (vector_type, arg_types, 2, FALSE));
-
-		vector_type = LLVMVectorType (LLVMInt8Type (), 16);
-		arg_types [0] = vector_type;
-		arg_types [1] = vector_type;
-		LLVMAddFunction (module, "llvm.x86.sse2.pminu.b", LLVMFunctionType (vector_type, arg_types, 2, FALSE));
-		LLVMAddFunction (module, "llvm.x86.sse2.pmaxu.b", LLVMFunctionType (vector_type, arg_types, 2, FALSE));
-		LLVMAddFunction (module, "llvm.x86.sse2.pcmpeq.b", LLVMFunctionType (vector_type, arg_types, 2, FALSE));
-		LLVMAddFunction (module, "llvm.x86.sse2.pcmpgt.b", LLVMFunctionType (vector_type, arg_types, 2, FALSE));
-
-		vector_type = LLVMVectorType (LLVMInt64Type (), 2);
-		arg_types [0] = vector_type;
-		arg_types [1] = vector_type;
-		LLVMAddFunction (module, "llvm.x86.sse41.pcmpeqq", LLVMFunctionType (vector_type, arg_types, 2, FALSE));
-
-		vector_type = LLVMVectorType (LLVMDoubleType (), 2);
-		arg_types [0] = vector_type;
-		arg_types [1] = vector_type;
-		LLVMAddFunction (module, "llvm.x86.sse2.min.pd", LLVMFunctionType (vector_type, arg_types, 2, FALSE));
-		LLVMAddFunction (module, "llvm.x86.sse2.max.pd", LLVMFunctionType (vector_type, arg_types, 2, FALSE));
-
-		vector_type = LLVMVectorType (LLVMFloatType (), 4);
-		arg_types [0] = vector_type;
-		arg_types [1] = vector_type;
-		LLVMAddFunction (module, "llvm.x86.sse2.min.ps", LLVMFunctionType (vector_type, arg_types, 2, FALSE));
-		LLVMAddFunction (module, "llvm.x86.sse2.max.ps", LLVMFunctionType (vector_type, arg_types, 2, FALSE));
+		LLVMTypeRef ret_type, arg_types [2];
+
+		/* Binary ops */
+		ret_type = type_to_simd_type (MONO_TYPE_I4);
+		arg_types [0] = ret_type;
+		arg_types [1] = ret_type;
+		AddFunc (module, "llvm.x86.sse41.pminud", ret_type, arg_types, 2);
+		AddFunc (module, "llvm.x86.sse41.pmaxud", ret_type, arg_types, 2);
+		AddFunc (module, "llvm.x86.sse2.pcmpeq.d", ret_type, arg_types, 2);
+
+		ret_type = type_to_simd_type (MONO_TYPE_I2);
+		arg_types [0] = ret_type;
+		arg_types [1] = ret_type;
+		AddFunc (module, "llvm.x86.sse41.pminuw", ret_type, arg_types, 2);
+		AddFunc (module, "llvm.x86.sse2.pmins.w", ret_type, arg_types, 2);
+		AddFunc (module, "llvm.x86.sse41.pmaxuw", ret_type, arg_types, 2);
+		AddFunc (module, "llvm.x86.sse2.pcmpeq.w", ret_type, arg_types, 2);
+		AddFunc (module, "llvm.x86.sse2.padds.w", ret_type, arg_types, 2);
+		AddFunc (module, "llvm.x86.sse2.psubs.w", ret_type, arg_types, 2);
+		AddFunc (module, "llvm.x86.sse2.paddus.w", ret_type, arg_types, 2);
+		AddFunc (module, "llvm.x86.sse2.psubus.w", ret_type, arg_types, 2);
+		AddFunc (module, "llvm.x86.sse2.pavg.w", ret_type, arg_types, 2);
+		AddFunc (module, "llvm.x86.sse2.pmulh.w", ret_type, arg_types, 2);
+		AddFunc (module, "llvm.x86.sse2.pmulhu.w", ret_type, arg_types, 2);
+
+		ret_type = type_to_simd_type (MONO_TYPE_I1);
+		arg_types [0] = ret_type;
+		arg_types [1] = ret_type;
+		AddFunc (module, "llvm.x86.sse2.pminu.b", ret_type, arg_types, 2);
+		AddFunc (module, "llvm.x86.sse2.pmaxu.b", ret_type, arg_types, 2);
+		AddFunc (module, "llvm.x86.sse2.pcmpeq.b", ret_type, arg_types, 2);
+		AddFunc (module, "llvm.x86.sse2.pcmpgt.b", ret_type, arg_types, 2);
+		AddFunc (module, "llvm.x86.sse2.padds.b", ret_type, arg_types, 2);
+		AddFunc (module, "llvm.x86.sse2.psubs.b", ret_type, arg_types, 2);
+		AddFunc (module, "llvm.x86.sse2.paddus.b", ret_type, arg_types, 2);
+		AddFunc (module, "llvm.x86.sse2.psubus.b", ret_type, arg_types, 2);
+		AddFunc (module, "llvm.x86.sse2.pavg.b", ret_type, arg_types, 2);
+
+		ret_type = type_to_simd_type (MONO_TYPE_I8);
+		arg_types [0] = ret_type;
+		arg_types [1] = ret_type;
+		AddFunc (module, "llvm.x86.sse41.pcmpeqq", ret_type, arg_types, 2);
+
+		ret_type = type_to_simd_type (MONO_TYPE_R8);
+		arg_types [0] = ret_type;
+		arg_types [1] = ret_type;
+		AddFunc (module, "llvm.x86.sse2.min.pd", ret_type, arg_types, 2);
+		AddFunc (module, "llvm.x86.sse2.max.pd", ret_type, arg_types, 2);
+		AddFunc (module, "llvm.x86.sse3.hadd.pd", ret_type, arg_types, 2);
+		AddFunc (module, "llvm.x86.sse3.hsub.pd", ret_type, arg_types, 2);
+		AddFunc (module, "llvm.x86.sse3.addsub.pd", ret_type, arg_types, 2);
+
+		ret_type = type_to_simd_type (MONO_TYPE_R4);
+		arg_types [0] = ret_type;
+		arg_types [1] = ret_type;
+		AddFunc (module, "llvm.x86.sse.min.ps", ret_type, arg_types, 2);
+		AddFunc (module, "llvm.x86.sse.max.ps", ret_type, arg_types, 2);
+		AddFunc (module, "llvm.x86.sse3.hadd.ps", ret_type, arg_types, 2);
+		AddFunc (module, "llvm.x86.sse3.hsub.ps", ret_type, arg_types, 2);
+		AddFunc (module, "llvm.x86.sse3.addsub.ps", ret_type, arg_types, 2);
+
+		/* pack */
+		ret_type = type_to_simd_type (MONO_TYPE_I1);
+		arg_types [0] = type_to_simd_type (MONO_TYPE_I2);
+		arg_types [1] = type_to_simd_type (MONO_TYPE_I2);
+		AddFunc (module, "llvm.x86.sse2.packsswb.128", ret_type, arg_types, 2);
+		AddFunc (module, "llvm.x86.sse2.packuswb.128", ret_type, arg_types, 2);
+		ret_type = type_to_simd_type (MONO_TYPE_I2);
+		arg_types [0] = type_to_simd_type (MONO_TYPE_I4);
+		arg_types [1] = type_to_simd_type (MONO_TYPE_I4);
+		AddFunc (module, "llvm.x86.sse2.packssdw.128", ret_type, arg_types, 2);
+		AddFunc (module, "llvm.x86.sse41.packusdw", ret_type, arg_types, 2);
+
+		/* cmp pd/ps */
+		ret_type = type_to_simd_type (MONO_TYPE_R8);
+		arg_types [0] = ret_type;
+		arg_types [1] = ret_type;
+		arg_types [2] = LLVMInt8Type ();
+		AddFunc (module, "llvm.x86.sse2.cmp.pd", ret_type, arg_types, 3);
+		ret_type = type_to_simd_type (MONO_TYPE_R4);
+		arg_types [0] = ret_type;
+		arg_types [1] = ret_type;
+		arg_types [2] = LLVMInt8Type ();
+		AddFunc (module, "llvm.x86.sse.cmp.ps", ret_type, arg_types, 3);
+
+		/* Conversion ops */
+		ret_type = type_to_simd_type (MONO_TYPE_R8);
+		arg_types [0] = type_to_simd_type (MONO_TYPE_I4);
+		AddFunc (module, "llvm.x86.sse2.cvtdq2pd", ret_type, arg_types, 1);
+		ret_type = type_to_simd_type (MONO_TYPE_R4);
+		arg_types [0] = type_to_simd_type (MONO_TYPE_I4);
+		AddFunc (module, "llvm.x86.sse2.cvtdq2ps", ret_type, arg_types, 1);
+		ret_type = type_to_simd_type (MONO_TYPE_I4);
+		arg_types [0] = type_to_simd_type (MONO_TYPE_R8);
+		AddFunc (module, "llvm.x86.sse2.cvtpd2dq", ret_type, arg_types, 1);
+		ret_type = type_to_simd_type (MONO_TYPE_I4);
+		arg_types [0] = type_to_simd_type (MONO_TYPE_R4);
+		AddFunc (module, "llvm.x86.sse2.cvtps2dq", ret_type, arg_types, 1);
+		ret_type = type_to_simd_type (MONO_TYPE_R4);
+		arg_types [0] = type_to_simd_type (MONO_TYPE_R8);
+		AddFunc (module, "llvm.x86.sse2.cvtpd2ps", ret_type, arg_types, 1);
+		ret_type = type_to_simd_type (MONO_TYPE_R8);
+		arg_types [0] = type_to_simd_type (MONO_TYPE_R4);
+		AddFunc (module, "llvm.x86.sse2.cvtps2pd", ret_type, arg_types, 1);
+
+		ret_type = type_to_simd_type (MONO_TYPE_I4);
+		arg_types [0] = type_to_simd_type (MONO_TYPE_R8);
+		AddFunc (module, "llvm.x86.sse2.cvttpd2dq", ret_type, arg_types, 1);
+		ret_type = type_to_simd_type (MONO_TYPE_I4);
+		arg_types [0] = type_to_simd_type (MONO_TYPE_R4);
+		AddFunc (module, "llvm.x86.sse2.cvttps2dq", ret_type, arg_types, 1);
+
+		/* Unary ops */
+		ret_type = type_to_simd_type (MONO_TYPE_R8);
+		arg_types [0] = ret_type;
+		AddFunc (module, "llvm.x86.sse2.sqrt.pd", ret_type, arg_types, 1);
+		ret_type = type_to_simd_type (MONO_TYPE_R4);
+		arg_types [0] = ret_type;
+		AddFunc (module, "llvm.x86.sse.sqrt.ps", ret_type, arg_types, 1);
+		ret_type = type_to_simd_type (MONO_TYPE_R4);
+		arg_types [0] = ret_type;
+		AddFunc (module, "llvm.x86.sse.rsqrt.ps", ret_type, arg_types, 1);
+		ret_type = type_to_simd_type (MONO_TYPE_R4);
+		arg_types [0] = ret_type;
+		AddFunc (module, "llvm.x86.sse.rcp.ps", ret_type, arg_types, 1);
+
+		/* shifts */
+		ret_type = type_to_simd_type (MONO_TYPE_I2);
+		arg_types [0] = ret_type;
+		arg_types [1] = LLVMInt32Type ();
+		AddFunc (module, "llvm.x86.sse2.psrli.w", ret_type, arg_types, 2);
+		AddFunc (module, "llvm.x86.sse2.psrai.w", ret_type, arg_types, 2);
+		AddFunc (module, "llvm.x86.sse2.pslli.w", ret_type, arg_types, 2);
+		ret_type = type_to_simd_type (MONO_TYPE_I4);
+		arg_types [0] = ret_type;
+		arg_types [1] = LLVMInt32Type ();
+		AddFunc (module, "llvm.x86.sse2.psrli.d", ret_type, arg_types, 2);
+		AddFunc (module, "llvm.x86.sse2.psrai.d", ret_type, arg_types, 2);
+		AddFunc (module, "llvm.x86.sse2.pslli.d", ret_type, arg_types, 2);
+		ret_type = type_to_simd_type (MONO_TYPE_I8);
+		arg_types [0] = ret_type;
+		arg_types [1] = LLVMInt32Type ();
+		AddFunc (module, "llvm.x86.sse2.psrli.q", ret_type, arg_types, 2);
+		AddFunc (module, "llvm.x86.sse2.pslli.q", ret_type, arg_types, 2);
+
+		/* pmovmskb */
+		ret_type = LLVMInt32Type ();
+		arg_types [0] = type_to_simd_type (MONO_TYPE_I1);
+		AddFunc (module, "llvm.x86.sse2.pmovmskb.128", ret_type, arg_types, 1);
 	}
 
 	/* Load/Store intrinsics */
diff --git a/mono/mini/mini-mips.c b/mono/mini/mini-mips.c
index 9b70958..a13b575 100644
--- a/mono/mini/mini-mips.c
+++ b/mono/mini/mini-mips.c
@@ -517,12 +517,9 @@ mono_arch_get_argument_info (MonoMethodSignature *csig, int param_count, MonoJit
 
 
 gpointer
-mono_arch_get_this_arg_from_call (MonoGenericSharingContext *gsctx, MonoMethodSignature *sig, mgreg_t *regs, guint8 *code)
+mono_arch_get_this_arg_from_call (mgreg_t *regs, guint8 *code)
 {
-	/* FIXME: handle returning a struct */
 	g_assert(regs);
-	if (sig && MONO_TYPE_ISSTRUCT (sig->ret))
-		return (gpointer)regs [mips_a1];
 	return (gpointer)regs [mips_a0];
 }
 
@@ -5267,6 +5264,8 @@ exception_id_by_name (const char *name)
 		return MONO_EXC_NULL_REF;
 	if (strcmp (name, "ArrayTypeMismatchException") == 0)
 		return MONO_EXC_ARRAY_TYPE_MISMATCH;
+	if (strcmp (name, "ArgumentException") == 0)
+		return MONO_EXC_ARGUMENT;
 	g_error ("Unknown intrinsic exception %s\n", name);
 	return 0;
 }
diff --git a/mono/mini/mini-mips.h b/mono/mini/mini-mips.h
index a2e79b7..ce8600e 100644
--- a/mono/mini/mini-mips.h
+++ b/mono/mini/mini-mips.h
@@ -361,6 +361,8 @@ typedef struct {
 		MONO_CONTEXT_SET_SP ((ctx), MONO_CONTEXT_GET_BP (ctx));	\
 	} while (0)
 
+#define MONO_ARCH_INIT_TOP_LMF_ENTRY(lmf) do { (lmf)->ebp = -1; } while (0)
+
 /* re-attaches with gdb - sometimes causes executable to hang */
 #undef HAVE_BACKTRACE_SYMBOLS
 
diff --git a/mono/mini/mini-ops.h b/mono/mini/mini-ops.h
index 0a54135..27b83e7 100644
--- a/mono/mini/mini-ops.h
+++ b/mono/mini/mini-ops.h
@@ -627,6 +627,8 @@ MINI_OP(OP_RCPPS, "rcpps", XREG, XREG, NONE)
 MINI_OP(OP_PSHUFLEW_HIGH, "pshufflew_high", XREG, XREG, NONE)
 MINI_OP(OP_PSHUFLEW_LOW, "pshufflew_low", XREG, XREG, NONE)
 MINI_OP(OP_PSHUFLED, "pshuffled", XREG, XREG, NONE)
+MINI_OP(OP_SHUFPS, "shufps", XREG, XREG, XREG)
+MINI_OP(OP_SHUFPD, "shufpd", XREG, XREG, XREG)
 
 MINI_OP(OP_ADDPD, "addpd", XREG, XREG, XREG)
 MINI_OP(OP_DIVPD, "divpd", XREG, XREG, XREG)
@@ -767,6 +769,13 @@ MINI_OP(OP_EXTRACT_U1, "extract_u1", IREG, XREG, NONE)
 MINI_OP(OP_EXTRACT_R8, "extract_r8", FREG, XREG, NONE)
 MINI_OP(OP_EXTRACT_I8, "extract_i8", LREG, XREG, NONE)
 
+/* Used by LLVM */
+MINI_OP(OP_INSERT_I1, "insert_i1", XREG, XREG, IREG)
+MINI_OP(OP_INSERT_I4, "insert_i4", XREG, XREG, IREG)
+MINI_OP(OP_INSERT_I8, "insert_i8", XREG, XREG, LREG)
+MINI_OP(OP_INSERT_R4, "insert_r4", XREG, XREG, FREG)
+MINI_OP(OP_INSERT_R8, "insert_r8", XREG, XREG, FREG)
+
 MINI_OP(OP_INSERT_I2, "insert_i2", XREG, XREG, IREG)
 
 MINI_OP(OP_EXTRACTX_U2, "extractx_u2", IREG, XREG, NONE)
@@ -794,6 +803,15 @@ MINI_OP(OP_EXPAND_R8, "expand_r8", XREG, FREG, NONE)
 
 MINI_OP(OP_PREFETCH_MEMBASE, "prefetch_membase", NONE, IREG, NONE)
 
+MINI_OP(OP_CVTDQ2PD, "cvtdq2pd", XREG, XREG, NONE)
+MINI_OP(OP_CVTDQ2PS, "cvtdq2ps", XREG, XREG, NONE)
+MINI_OP(OP_CVTPD2DQ, "cvtpd2dq", XREG, XREG, NONE)
+MINI_OP(OP_CVTPD2PS, "cvtpd2ps", XREG, XREG, NONE)
+MINI_OP(OP_CVTPS2DQ, "cvtps2dq", XREG, XREG, NONE)
+MINI_OP(OP_CVTPS2PD, "cvtps2pd", XREG, XREG, NONE)
+MINI_OP(OP_CVTTPD2DQ, "cvttpd2dq", XREG, XREG, NONE)
+MINI_OP(OP_CVTTPS2DQ, "cvttps2dq", XREG, XREG, NONE)
+
 #endif
 
 MINI_OP(OP_XMOVE,   "xmove", XREG, XREG, NONE)
@@ -870,7 +888,34 @@ MINI_OP(OP_LIVERANGE_START, "liverange_start", NONE, NONE, NONE)
  */
 MINI_OP(OP_LIVERANGE_END, "liverange_end", NONE, NONE, NONE)
 
+/* GC support */
+/*
+ * mono_arch_output_basic_block () will set the backend.pc_offset field to the current pc
+ * offset.
+ */
+MINI_OP(OP_GC_LIVENESS_DEF, "gc_liveness_def", NONE, NONE, NONE)
+MINI_OP(OP_GC_LIVENESS_USE, "gc_liveness_use", NONE, NONE, NONE)
+
+/*
+ * This marks the location inside a basic block where a GC tracked spill slot has been
+ * defined. The spill slot is assumed to be alive until the end of the bblock.
+ */
+MINI_OP(OP_GC_SPILL_SLOT_LIVENESS_DEF, "gc_spill_slot_liveness_def", NONE, NONE, NONE)
+
+/*
+ * This marks the location inside a basic block where a GC tracked param area slot has
+ * been defined. The slot is assumed to be alive until the next call.
+ */
+MINI_OP(OP_GC_PARAM_SLOT_LIVENESS_DEF, "gc_param_slot_liveness_def", NONE, NONE, NONE)
+
 /* Arch specific opcodes */
+/* #if defined(__native_client_codegen__) || defined(__native_client__) */
+/* We have to define these in terms of the TARGET defines, not NaCl defines */
+/* because genmdesc.pl doesn't have multiple defines per platform.          */
+#if defined(TARGET_AMD64) || defined(TARGET_X86)
+MINI_OP(OP_NACL_GC_SAFE_POINT,     "nacl_gc_safe_point", IREG, NONE, NONE)
+#endif
+
 #if defined(TARGET_X86) || defined(TARGET_AMD64)
 MINI_OP(OP_X86_TEST_NULL,          "x86_test_null", NONE, IREG, NONE)
 MINI_OP(OP_X86_COMPARE_MEMBASE_REG,"x86_compare_membase_reg", NONE, IREG, IREG)
diff --git a/mono/mini/mini-ppc.c b/mono/mini/mini-ppc.c
old mode 100755
new mode 100644
index 3a2faa2..c5b8b8c
--- a/mono/mini/mini-ppc.c
+++ b/mono/mini/mini-ppc.c
@@ -508,7 +508,7 @@ mono_arch_get_delegate_invoke_impl (MonoMethodSignature *sig, gboolean has_targe
 }
 
 gpointer
-mono_arch_get_this_arg_from_call (MonoGenericSharingContext *gsctx, MonoMethodSignature *sig, mgreg_t *regs, guint8 *code)
+mono_arch_get_this_arg_from_call (mgreg_t *regs, guint8 *code)
 {
 	mgreg_t *r = (mgreg_t*)regs;
 
@@ -564,7 +564,16 @@ linux_find_auxv (int *count)
 void
 mono_arch_cpu_init (void)
 {
-#ifdef __APPLE__
+}
+
+/*
+ * Initialize architecture specific code.
+ */
+void
+mono_arch_init (void)
+{
+#if defined(MONO_CROSS_COMPILE)
+#elif defined(__APPLE__)
 	int mib [3];
 	size_t len;
 	mib [0] = CTL_HW;
@@ -618,7 +627,6 @@ mono_arch_cpu_init (void)
 #elif defined(G_COMPILER_CODEWARRIOR)
 	cachelinesize = 32;
 	cachelineinc = 32;
-#elif defined(MONO_CROSS_COMPILE)
 #else
 //#error Need a way to get cache line size
 #endif
@@ -629,14 +637,6 @@ mono_arch_cpu_init (void)
 
 	if (mono_cpu_count () > 1)
 		cpu_hw_caps |= PPC_SMP_CAPABLE;
-}
-
-/*
- * Initialize architecture specific code.
- */
-void
-mono_arch_init (void)
-{
 	InitializeCriticalSection (&mini_arch_mutex);
 
 	ss_trigger_page = mono_valloc (NULL, mono_pagesize (), MONO_MMAP_READ|MONO_MMAP_32BIT);
@@ -3721,7 +3721,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
 				ppc_sldi (code, ppc_r0, ppc_r0, 32);
 #endif
 			ppc_compare (code, 0, ins->sreg1, ppc_r0);
-			EMIT_COND_SYSTEM_EXCEPTION_FLAGS (PPC_BR_TRUE, PPC_BR_EQ, "ArithmeticException");
+			EMIT_COND_SYSTEM_EXCEPTION_FLAGS (PPC_BR_TRUE, PPC_BR_EQ, "OverflowException");
 			ppc_patch (divisor_is_m1, code);
 			 /* XER format: SO, OV, CA, reserved [21 bits], count [8 bits]
 			 */
@@ -4847,7 +4847,7 @@ mono_arch_emit_prolog (MonoCompile *cfg)
 		tracing = 1;
 
 	sig = mono_method_signature (method);
-	cfg->code_size = MONO_PPC_32_64_CASE (260, 384) + sig->param_count * 20;
+	cfg->code_size = 512 + sig->param_count * 32;
 	code = cfg->native_code = g_malloc (cfg->code_size);
 
 	cfa_offset = 0;
@@ -5445,6 +5445,8 @@ exception_id_by_name (const char *name)
 		return MONO_EXC_NULL_REF;
 	if (strcmp (name, "ArrayTypeMismatchException") == 0)
 		return MONO_EXC_ARRAY_TYPE_MISMATCH;
+	if (strcmp (name, "ArgumentException") == 0)
+		return MONO_EXC_ARGUMENT;
 	g_error ("Unknown intrinsic exception %s\n", name);
 	return 0;
 }
diff --git a/mono/mini/mini-ppc.h b/mono/mini/mini-ppc.h
index 5542e51..87a5657 100644
--- a/mono/mini/mini-ppc.h
+++ b/mono/mini/mini-ppc.h
@@ -55,15 +55,6 @@ typedef struct {
 	double fregs [MONO_SAVED_FREGS];
 } MonoContext;
 
-/*
- * This structure is an extension of MonoLMF and contains extra information.
- */
-typedef struct {
-	struct MonoLMF lmf;
-	gboolean debugger_invoke;
-	MonoContext ctx; /* if debugger_invoke is TRUE */
-} MonoLMFExt;
-
 typedef struct MonoCompileArch {
 	int fp_conv_var_offset;
 } MonoCompileArch;
@@ -206,7 +197,6 @@ typedef struct MonoCompileArch {
 #define MONO_ARCH_HAVE_STATIC_RGCTX_TRAMPOLINE 1
 #define MONO_ARCH_HAVE_FULL_AOT_TRAMPOLINES 1
 #define MONO_ARCH_HAVE_XP_UNWIND 1
-#define MONO_ARCH_HAVE_FIND_JIT_INFO_EXT 1
 
 #define MONO_ARCH_GSHARED_SUPPORTED 1
 
@@ -285,6 +275,8 @@ typedef struct {
 #endif
 #endif
 
+#define MONO_ARCH_INIT_TOP_LMF_ENTRY(lmf) do { (lmf)->ebp = -1; } while (0)
+
 typedef struct {
 	gint8 reg;
 	gint8 size;
diff --git a/mono/mini/mini-s390.h b/mono/mini/mini-s390.h
index ace0aff..d44c475 100644
--- a/mono/mini/mini-s390.h
+++ b/mono/mini/mini-s390.h
@@ -155,6 +155,8 @@ typedef struct
 		MONO_CONTEXT_SET_IP ((ctx), sframe->return_address);	\
 	} while (0)
 
+#define MONO_ARCH_INIT_TOP_LMF_ENTRY(lmf) do { (lmf)->ebp = -1; } while (0)
+
 /*------------------------------------------------------------------*/
 /*                                                                  */
 /* Name		- context_get_ip                                    */
diff --git a/mono/mini/mini-s390x.c b/mono/mini/mini-s390x.c
index cd0f37f..607ff53 100644
--- a/mono/mini/mini-s390x.c
+++ b/mono/mini/mini-s390x.c
@@ -5645,11 +5645,10 @@ mono_arch_context_get_int_reg (MonoContext *ctx, int reg)
 /*------------------------------------------------------------------*/
 
 gpointer
-mono_arch_get_this_arg_from_call (MonoGenericSharingContext *gsctx, MonoMethodSignature *sig, mgreg_t *regs, guint8 *code)
+mono_arch_get_this_arg_from_call (mgreg_t *regs, guint8 *code)
 {
 	MonoLMF *lmf = (MonoLMF *) ((gchar *) regs - sizeof(MonoLMF));
 
-	/* FIXME: handle returning a struct */
 	return (gpointer) lmf->gregs [s390_r2];
 }
 
@@ -5979,20 +5978,3 @@ mono_arch_find_imt_method (mgreg_t *regs, guint8 *code)
 }
 
 /*========================= End of Function ========================*/
-
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name		- mono_arch_find_this_argument.                     */
-/*                                                                  */
-/* Function	- 						    */
-/*		                               			    */
-/*------------------------------------------------------------------*/
-
-MonoObject *
-mono_arch_find_this_argument (mgreg_t *regs, MonoMethod *method, 
-			      MonoGenericSharingContext *gsctx)
-{
-        return mono_arch_get_this_arg_from_call (gsctx, mono_method_signature (method), regs, NULL);
-}  
-
-/*========================= End of Function ========================*/
diff --git a/mono/mini/mini-s390x.h b/mono/mini/mini-s390x.h
index 116f542..e489a3a 100644
--- a/mono/mini/mini-s390x.h
+++ b/mono/mini/mini-s390x.h
@@ -212,6 +212,8 @@ typedef struct
 		MONO_CONTEXT_SET_IP ((ctx), sframe->return_address);	\
 	} while (0)
 
+#define MONO_ARCH_INIT_TOP_LMF_ENTRY(lmf) do { (lmf)->ebp = -1; } while (0)
+
 /*------------------------------------------------------------------*/
 /*                                                                  */
 /* Name		- s390_patch_rel                                    */
diff --git a/mono/mini/mini-sparc.c b/mono/mini/mini-sparc.c
index e3c17ef..531ef05 100644
--- a/mono/mini/mini-sparc.c
+++ b/mono/mini/mini-sparc.c
@@ -2381,7 +2381,7 @@ mono_arch_find_imt_method (mgreg_t *regs, guint8 *code)
 }
 
 gpointer
-mono_arch_get_this_arg_from_call (MonoGenericSharingContext *gsctx, MonoMethodSignature *sig, mgreg_t *regs, guint8 *code)
+mono_arch_get_this_arg_from_call (mgreg_t *regs, guint8 *code)
 {
 	mono_sparc_flushw ();
 
diff --git a/mono/mini/mini-sparc.h b/mono/mini/mini-sparc.h
index 8a42f3e..eb596ba 100644
--- a/mono/mini/mini-sparc.h
+++ b/mono/mini/mini-sparc.h
@@ -100,6 +100,8 @@ typedef struct MonoCompileArch {
 		MONO_CONTEXT_SET_SP ((ctx), __builtin_frame_address (0));	\
 	} while (0)
 
+#define MONO_ARCH_INIT_TOP_LMF_ENTRY(lmf) do { (lmf)->ebp = -1; } while (0)
+
 #define MONO_ARCH_USE_SIGACTION 1
 
 #ifdef HAVE_WORKING_SIGALTSTACK
diff --git a/mono/mini/mini-trampolines.c b/mono/mini/mini-trampolines.c
index 41b06d2..147073b 100644
--- a/mono/mini/mini-trampolines.c
+++ b/mono/mini/mini-trampolines.c
@@ -28,7 +28,7 @@ static guint32 trampoline_calls, jit_trampolines, unbox_trampolines, static_rgct
 static CRITICAL_SECTION trampolines_mutex;
 
 static gpointer
-get_unbox_trampoline (MonoGenericSharingContext *gsctx, MonoMethod *m, gpointer addr, gboolean need_rgctx_tramp)
+get_unbox_trampoline (MonoMethod *m, gpointer addr, gboolean need_rgctx_tramp)
 {
 	if (mono_aot_only) {
 		if (need_rgctx_tramp)
@@ -41,7 +41,7 @@ get_unbox_trampoline (MonoGenericSharingContext *gsctx, MonoMethod *m, gpointer
 			return mono_aot_get_unbox_trampoline (m);
 	} else {
 		unbox_trampolines ++;
-		return mono_arch_get_unbox_trampoline (gsctx, m, addr);
+		return mono_arch_get_unbox_trampoline (m, addr);
 	}
 }
 
@@ -158,7 +158,7 @@ mono_create_static_rgctx_trampoline (MonoMethod *m, gpointer addr)
 static gpointer*
 mono_convert_imt_slot_to_vtable_slot (gpointer* slot, mgreg_t *regs, guint8 *code, MonoMethod *method, MonoMethod **impl_method, gboolean *need_rgctx_tramp, gboolean *variance_used, gpointer *aot_addr)
 {
-	MonoObject *this_argument = mono_arch_get_this_arg_from_call (NULL, mono_method_signature (method), regs, code);
+	MonoObject *this_argument = mono_arch_get_this_arg_from_call (regs, code);
 	MonoVTable *vt = this_argument->vtable;
 	int displacement = slot - ((gpointer*)vt);
 
@@ -301,7 +301,7 @@ common_call_trampoline (mgreg_t *regs, guint8 *code, MonoMethod *m, guint8* tram
 		vtable_slot = orig_vtable_slot;
 		g_assert (vtable_slot);
 
-		this_arg = mono_arch_get_this_arg_from_call (NULL, mono_method_signature (m), regs, code);
+		this_arg = mono_arch_get_this_arg_from_call (regs, code);
 
 		if (this_arg->vtable->klass == mono_defaults.transparent_proxy_class) {
 			/* Use the slow path for now */
@@ -399,7 +399,7 @@ common_call_trampoline (mgreg_t *regs, guint8 *code, MonoMethod *m, guint8* tram
 #endif
 		} else {
 #ifdef MONO_ARCH_HAVE_IMT
-			MonoObject *this_argument = mono_arch_get_this_arg_from_call (NULL, mono_method_signature (m), regs, code);
+			MonoObject *this_argument = mono_arch_get_this_arg_from_call (regs, code);
 
 			vt = this_argument->vtable;
 			vtable_slot = orig_vtable_slot;
@@ -489,7 +489,7 @@ common_call_trampoline (mgreg_t *regs, guint8 *code, MonoMethod *m, guint8* tram
 		g_assert (vtable_slot);
 
 		if (vt->klass->valuetype) /*FIXME is this required variant iface?*/
-			addr = get_unbox_trampoline (mono_get_generic_context_from_code (code), m, addr, need_rgctx_tramp);
+			addr = get_unbox_trampoline (m, addr, need_rgctx_tramp);
 
 		mono_method_add_generic_virtual_invocation (mono_domain_get (), 
 													vt, vtable_slot,
@@ -530,7 +530,7 @@ common_call_trampoline (mgreg_t *regs, guint8 *code, MonoMethod *m, guint8* tram
 
 	if (vtable_slot) {
 		if (m->klass->valuetype)
-			addr = get_unbox_trampoline (mono_get_generic_context_from_code (code), m, addr, need_rgctx_tramp);
+			addr = get_unbox_trampoline (m, addr, need_rgctx_tramp);
 
 		if (vtable_slot_to_patch && (mono_aot_is_got_entry (code, (guint8*)vtable_slot_to_patch) || mono_domain_owns_vtable_slot (mono_domain_get (), vtable_slot_to_patch))) {
 			g_assert (*vtable_slot_to_patch);
@@ -611,7 +611,7 @@ mono_vcall_trampoline (mgreg_t *regs, guint8 *code, int slot, guint8 *tramp)
 	/*
 	 * Obtain the vtable from the 'this' arg.
 	 */
-	this = mono_arch_get_this_arg_from_call (NULL, NULL, regs, code);
+	this = mono_arch_get_this_arg_from_call (regs, code);
 	g_assert (this);
 
 	vt = this->vtable;
@@ -858,6 +858,7 @@ mono_delegate_trampoline (mgreg_t *regs, guint8 *code, gpointer *tramp_data, gui
 	MonoMethod *method = NULL;
 	gboolean multicast, callvirt = FALSE;
 	gboolean need_rgctx_tramp = FALSE;
+	gboolean enable_caching = TRUE;
 	MonoMethod *invoke = tramp_data [0];
 	guint8 *impl_this = tramp_data [1];
 	guint8 *impl_nothis = tramp_data [2];
@@ -867,12 +868,7 @@ mono_delegate_trampoline (mgreg_t *regs, guint8 *code, gpointer *tramp_data, gui
 	trampoline_calls ++;
 
 	/* Obtain the delegate object according to the calling convention */
-
-	/* 
-	 * Avoid calling mono_get_generic_context_from_code () now since it is expensive, 
-	 * get_this_arg_from_call will call it if needed.
-	 */
-	delegate = mono_arch_get_this_arg_from_call (NULL, mono_method_signature (invoke), regs, code);
+	delegate = mono_arch_get_this_arg_from_call (regs, code);
 
 	if (delegate->method) {
 		method = delegate->method;
@@ -913,6 +909,10 @@ mono_delegate_trampoline (mgreg_t *regs, guint8 *code, gpointer *tramp_data, gui
 			mono_error_raise_exception (&err);
 
 		callvirt = !delegate->target && sig->hasthis;
+		if (delegate->target && method->flags & METHOD_ATTRIBUTE_VIRTUAL && method->klass->flags & TYPE_ATTRIBUTE_ABSTRACT) {
+			method = mono_object_get_virtual_method (delegate->target, method);
+			enable_caching = FALSE;
+		}
 	}
 
 	if (method && method->iflags & METHOD_IMPL_ATTRIBUTE_SYNCHRONIZED)
@@ -927,13 +927,13 @@ mono_delegate_trampoline (mgreg_t *regs, guint8 *code, gpointer *tramp_data, gui
 	 */
 	if (method && !callvirt) {
 		/* Avoid the overhead of looking up an already compiled method if possible */
-		if (delegate->method_code && *delegate->method_code) {
+		if (enable_caching && delegate->method_code && *delegate->method_code) {
 			delegate->method_ptr = *delegate->method_code;
 		} else {
 			delegate->method_ptr = mono_compile_method (method);
 			if (need_rgctx_tramp)
 				delegate->method_ptr = mono_create_static_rgctx_trampoline (method, delegate->method_ptr);
-			if (delegate->method_code)
+			if (enable_caching && delegate->method_code)
 				*delegate->method_code = delegate->method_ptr;
 			mono_debugger_trampoline_compiled (NULL, method, delegate->method_ptr);
 		}
@@ -976,7 +976,7 @@ mono_handler_block_guard_trampoline (mgreg_t *regs, guint8 *code, gpointer *tram
 	MonoJitTlsData *jit_tls = TlsGetValue (mono_jit_tls_id);
 	gpointer resume_ip = jit_tls->handler_block_return_address;
 
-	memcpy (&ctx, &jit_tls->ex_ctx, sizeof (MonoContext));
+	memcpy (&ctx, &jit_tls->handler_block_context, sizeof (MonoContext));
 	MONO_CONTEXT_SET_IP (&ctx, jit_tls->handler_block_return_address);
 
 	jit_tls->handler_block_return_address = NULL;
@@ -1079,6 +1079,8 @@ create_trampoline_code (MonoTrampolineType tramp_type)
 	code = mono_arch_create_generic_trampoline (tramp_type, &info, FALSE);
 	if (info) {
 		mono_save_trampoline_xdebug_info (info);
+		if (mono_jit_map_is_enabled ())
+			mono_emit_jit_tramp (info->code, info->code_size, info->name);
 		mono_tramp_info_free (info);
 	}
 
@@ -1205,6 +1207,8 @@ mono_create_generic_class_init_trampoline (void)
 
 			if (info) {
 				mono_save_trampoline_xdebug_info (info);
+				if (mono_jit_map_is_enabled ())
+					mono_emit_jit_tramp (info->code, info->code_size, info->name);
 				mono_tramp_info_free (info);
 			}
 		}
@@ -1383,6 +1387,8 @@ mono_create_rgctx_lazy_fetch_trampoline (guint32 offset)
 	tramp = mono_arch_create_rgctx_lazy_fetch_trampoline (offset, &info, FALSE);
 	if (info) {
 		mono_save_trampoline_xdebug_info (info);
+		if (mono_jit_map_is_enabled ())
+			mono_emit_jit_tramp (info->code, info->code_size, info->name);
 		mono_tramp_info_free (info);
 	}
 	ptr = mono_create_ftnptr (mono_get_root_domain (), tramp);
@@ -1426,6 +1432,8 @@ mono_create_monitor_enter_trampoline (void)
 		code = mono_arch_create_monitor_enter_trampoline (&info, FALSE);
 		if (info) {
 			mono_save_trampoline_xdebug_info (info);
+			if (mono_jit_map_is_enabled ())
+				mono_emit_jit_tramp (info->code, info->code_size, info->name);
 			mono_tramp_info_free (info);
 		}
 	}
@@ -1458,6 +1466,8 @@ mono_create_monitor_exit_trampoline (void)
 		code = mono_arch_create_monitor_exit_trampoline (&info, FALSE);
 		if (info) {
 			mono_save_trampoline_xdebug_info (info);
+			if (mono_jit_map_is_enabled ())
+				mono_emit_jit_tramp (info->code, info->code_size, info->name);
 			mono_tramp_info_free (info);
 		}
 	}
diff --git a/mono/mini/mini-unwind.h b/mono/mini/mini-unwind.h
index cbc2a96..18cd299 100644
--- a/mono/mini/mini-unwind.h
+++ b/mono/mini/mini-unwind.h
@@ -69,11 +69,11 @@ typedef struct {
  */
 
 /* Set cfa to reg+offset */
-#define mono_emit_unwind_op_def_cfa(cfg,ip,reg,offset) mono_emit_unwind_op (cfg, (ip) - (cfg)->native_code, DW_CFA_def_cfa, (reg), (offset))
+#define mono_emit_unwind_op_def_cfa(cfg,ip,reg,offset) do { mono_emit_unwind_op (cfg, (ip) - (cfg)->native_code, DW_CFA_def_cfa, (reg), (offset)); (cfg)->cfa_reg = (reg); (cfg)->cfa_offset = (offset); } while (0)
 /* Set cfa to reg+existing offset */
-#define mono_emit_unwind_op_def_cfa_reg(cfg,ip,reg) mono_emit_unwind_op (cfg, (ip) - (cfg)->native_code, DW_CFA_def_cfa_register, (reg), (0))
+#define mono_emit_unwind_op_def_cfa_reg(cfg,ip,reg) do { mono_emit_unwind_op (cfg, (ip) - (cfg)->native_code, DW_CFA_def_cfa_register, (reg), (0)); (cfg)->cfa_reg = (reg); } while (0)
 /* Set cfa to existing reg+offset */
-#define mono_emit_unwind_op_def_cfa_offset(cfg,ip,offset) mono_emit_unwind_op (cfg, (ip) - (cfg)->native_code, DW_CFA_def_cfa_offset, (0), (offset))
+#define mono_emit_unwind_op_def_cfa_offset(cfg,ip,offset) do { mono_emit_unwind_op (cfg, (ip) - (cfg)->native_code, DW_CFA_def_cfa_offset, (0), (offset)); (cfg)->cfa_offset = (offset); } while (0)
 /* Reg is the same as it was on enter to the function */
 #define mono_emit_unwind_op_same_value(cfg,ip,reg) mono_emit_unwind_op (cfg, (ip) - (cfg)->native_code, DW_CFA_same_value, (reg), 0)
 /* Reg is saved at cfa+offset */
@@ -103,8 +103,9 @@ mono_unwind_ops_encode (GSList *unwind_ops, guint32 *out_len) MONO_INTERNAL;
 
 void
 mono_unwind_frame (guint8 *unwind_info, guint32 unwind_info_len, 
-				   guint8 *start_ip, guint8 *end_ip, guint8 *ip, mgreg_t *regs, 
-				   int nregs, guint8 **out_cfa) MONO_INTERNAL;
+				   guint8 *start_ip, guint8 *end_ip, guint8 *ip, mgreg_t *regs, int nregs,
+				   mgreg_t **save_locations, int save_locations_len,
+				   guint8 **out_cfa) MONO_INTERNAL;
 
 void mono_unwind_init (void) MONO_INTERNAL;
 
@@ -116,6 +117,21 @@ guint8* mono_get_cached_unwind_info (guint32 index, guint32 *unwind_info_len) MO
 
 guint8* mono_unwind_decode_fde (guint8 *fde, guint32 *out_len, guint32 *code_len, MonoJitExceptionInfo **ex_info, guint32 *ex_info_len, gpointer **type_info, int *this_reg, int *this_offset) MONO_LLVM_INTERNAL;
 
+/* Data retrieved from an LLVM Mono FDE entry */
+typedef struct {
+	/* Malloc'ed */
+	guint8 *unw_info;
+	guint32 unw_info_len;
+	MonoJitExceptionInfo *ex_info;
+	guint32 ex_info_len;
+	gpointer *type_info;
+	int this_reg;
+	int this_offset;
+} MonoLLVMFDEInfo;
+
+void
+mono_unwind_decode_llvm_mono_fde (guint8 *fde, int fde_len, guint8 *cie, guint8 *code, MonoLLVMFDEInfo *res) MONO_INTERNAL;
+
 GSList* mono_unwind_get_cie_program (void) MONO_INTERNAL;
 
 #endif
diff --git a/mono/mini/mini-x86.c b/mono/mini/mini-x86.c
index 5cba2a9..0ac10c1 100644
--- a/mono/mini/mini-x86.c
+++ b/mono/mini/mini-x86.c
@@ -63,39 +63,18 @@ static CRITICAL_SECTION mini_arch_mutex;
 #define CALLCONV_IS_STDCALL(sig) (((sig)->call_convention) == MONO_CALL_STDCALL)
 #endif
 
+#define X86_IS_CALLEE_SAVED_REG(reg) (((reg) == X86_EBX) || ((reg) == X86_EDI) || ((reg) == X86_ESI))
+
 MonoBreakpointInfo
 mono_breakpoint_info [MONO_BREAKPOINT_ARRAY_SIZE];
 
-static gpointer
-mono_realloc_native_code (MonoCompile *cfg)
-{
-#ifdef __native_client_codegen__
-	guint old_padding;
-	gpointer native_code;
-	guint alignment_check;
-
-	/* Save the old alignment offset so we can re-align after the realloc. */
-	old_padding = (guint)(cfg->native_code - cfg->native_code_alloc);
-
-	cfg->native_code_alloc = g_realloc (cfg->native_code_alloc, 
-										cfg->code_size + kNaClAlignment);
-
-	/* Align native_code to next nearest kNaClAlignment byte. */
-	native_code = (guint)cfg->native_code_alloc + kNaClAlignment;
-	native_code = (guint)native_code & ~kNaClAlignmentMask;
-
-	/* Shift the data to be 32-byte aligned again. */
-	memmove (native_code, cfg->native_code_alloc + old_padding, cfg->code_size);
-
-	alignment_check = (guint)native_code & kNaClAlignmentMask;
-	g_assert (alignment_check == 0);
-	return native_code;
-#else
-	return g_realloc (cfg->native_code, cfg->code_size);
-#endif
-}
 
 #ifdef __native_client_codegen__
+const guint kNaClAlignment = kNaClAlignmentX86;
+const guint kNaClAlignmentMask = kNaClAlignmentMaskX86;
+
+/* Default alignment for Native Client is 32-byte. */
+gint8 nacl_align_byte = -32; /* signed version of 0xe0 */
 
 /* mono_arch_nacl_pad: Add pad bytes of alignment instructions at code,       */
 /* Check that alignment doesn't cross an alignment boundary.        */
@@ -364,12 +343,13 @@ add_valuetype (MonoGenericSharingContext *gsctx, MonoMethodSignature *sig, ArgIn
  * For x86 win32, see ???.
  */
 static CallInfo*
-get_call_info_internal (MonoGenericSharingContext *gsctx, CallInfo *cinfo, MonoMethodSignature *sig, gboolean is_pinvoke)
+get_call_info_internal (MonoGenericSharingContext *gsctx, CallInfo *cinfo, MonoMethodSignature *sig)
 {
 	guint32 i, gr, fr, pstart;
 	MonoType *ret_type;
 	int n = sig->hasthis + sig->param_count;
 	guint32 stack_size = 0;
+	gboolean is_pinvoke = sig->pinvoke;
 
 	gr = 0;
 	fr = 0;
@@ -570,7 +550,7 @@ get_call_info_internal (MonoGenericSharingContext *gsctx, CallInfo *cinfo, MonoM
 }
 
 static CallInfo*
-get_call_info (MonoGenericSharingContext *gsctx, MonoMemPool *mp, MonoMethodSignature *sig, gboolean is_pinvoke)
+get_call_info (MonoGenericSharingContext *gsctx, MonoMemPool *mp, MonoMethodSignature *sig)
 {
 	int n = sig->hasthis + sig->param_count;
 	CallInfo *cinfo;
@@ -580,7 +560,7 @@ get_call_info (MonoGenericSharingContext *gsctx, MonoMemPool *mp, MonoMethodSign
 	else
 		cinfo = g_malloc0 (sizeof (CallInfo) + (sizeof (ArgInfo) * n));
 
-	return get_call_info_internal (gsctx, cinfo, sig, is_pinvoke);
+	return get_call_info_internal (gsctx, cinfo, sig);
 }
 
 /*
@@ -594,7 +574,7 @@ get_call_info (MonoGenericSharingContext *gsctx, MonoMemPool *mp, MonoMethodSign
  *
  * Returns the size of the argument area on the stack.
  * This should be signal safe, since it is called from
- * mono_arch_find_jit_info_ext ().
+ * mono_arch_find_jit_info ().
  * FIXME: The metadata calls might not be signal safe.
  */
 int
@@ -611,16 +591,22 @@ mono_arch_get_argument_info (MonoMethodSignature *csig, int param_count, MonoJit
 	cinfo = (CallInfo*)g_newa (guint8*, len);
 	memset (cinfo, 0, len);
 
-	cinfo = get_call_info_internal (NULL, cinfo, csig, FALSE);
+	cinfo = get_call_info_internal (NULL, cinfo, csig);
 
 	arg_info [0].offset = offset;
 
+	if (cinfo->vtype_retaddr && cinfo->vret_arg_index == 0) {
+		args_size += sizeof (gpointer);
+		offset += 4;
+	}
+
 	if (csig->hasthis) {
 		args_size += sizeof (gpointer);
 		offset += 4;
 	}
 
-	if (MONO_TYPE_ISSTRUCT (csig->ret) && (cinfo->ret.storage == ArgOnStack)) {
+	if (cinfo->vtype_retaddr && cinfo->vret_arg_index == 1 && csig->hasthis) {
+		/* Emitted after this */
 		args_size += sizeof (gpointer);
 		offset += 4;
 	}
@@ -641,6 +627,12 @@ mono_arch_get_argument_info (MonoMethodSignature *csig, int param_count, MonoJit
 		offset += pad;
 		arg_info [k + 1].offset = offset;
 		offset += size;
+
+		if (k == 0 && cinfo->vtype_retaddr && cinfo->vret_arg_index == 1 && !csig->hasthis) {
+			/* Emitted after the first arg */
+			args_size += sizeof (gpointer);
+			offset += 4;
+		}
 	}
 
 	if (mono_do_x86_stack_align && !CALLCONV_IS_STDCALL (csig))
@@ -653,6 +645,25 @@ mono_arch_get_argument_info (MonoMethodSignature *csig, int param_count, MonoJit
 	return args_size;
 }
 
+gboolean
+mono_x86_tail_call_supported (MonoMethodSignature *caller_sig, MonoMethodSignature *callee_sig)
+{
+	CallInfo *c1, *c2;
+	gboolean res;
+
+	c1 = get_call_info (NULL, NULL, caller_sig);
+	c2 = get_call_info (NULL, NULL, callee_sig);
+	res = c1->stack_usage >= c2->stack_usage;
+	if (callee_sig->ret && MONO_TYPE_ISSTRUCT (callee_sig->ret) && c2->ret.storage != ArgValuetypeInReg)
+		/* An address on the callee's stack is passed as the first argument */
+		res = FALSE;
+
+	g_free (c1);
+	g_free (c2);
+
+	return res;
+}
+
 static const guchar cpuid_impl [] = {
 	0x55,                   	/* push   %ebp */
 	0x89, 0xe5,                	/* mov    %esp,%ebp */
@@ -1082,7 +1093,7 @@ mono_arch_allocate_vars (MonoCompile *cfg)
 	header = cfg->header;
 	sig = mono_method_signature (cfg->method);
 
-	cinfo = get_call_info (cfg->generic_sharing_context, cfg->mempool, sig, FALSE);
+	cinfo = get_call_info (cfg->generic_sharing_context, cfg->mempool, sig);
 
 	cfg->frame_reg = X86_EBP;
 	offset = 0;
@@ -1130,6 +1141,8 @@ mono_arch_allocate_vars (MonoCompile *cfg)
 		offset += (locals_stack_align - 1);
 		offset &= ~(locals_stack_align - 1);
 	}
+	cfg->locals_min_stack_offset = - (offset + locals_stack_size);
+	cfg->locals_max_stack_offset = - offset;
 	/*
 	 * EBP is at alignment 8 % MONO_ARCH_FRAME_ALIGNMENT, so if we
 	 * have locals larger than 8 bytes we need to make sure that
@@ -1214,7 +1227,7 @@ mono_arch_create_vars (MonoCompile *cfg)
 
 	sig = mono_method_signature (cfg->method);
 
-	cinfo = get_call_info (cfg->generic_sharing_context, cfg->mempool, sig, FALSE);
+	cinfo = get_call_info (cfg->generic_sharing_context, cfg->mempool, sig);
 
 	if (cinfo->ret.storage == ArgValuetypeInReg)
 		cfg->ret_var_is_local = TRUE;
@@ -1284,7 +1297,7 @@ mono_arch_get_llvm_call_info (MonoCompile *cfg, MonoMethodSignature *sig)
 
 	n = sig->param_count + sig->hasthis;
 
-	cinfo = get_call_info (cfg->generic_sharing_context, cfg->mempool, sig, sig->pinvoke);
+	cinfo = get_call_info (cfg->generic_sharing_context, cfg->mempool, sig);
 
 	linfo = mono_mempool_alloc0 (cfg->mempool, sizeof (LLVMCallInfo) + (sizeof (LLVMArgInfo) * n));
 
@@ -1395,7 +1408,7 @@ mono_arch_emit_call (MonoCompile *cfg, MonoCallInst *call)
 	sig = call->signature;
 	n = sig->param_count + sig->hasthis;
 
-	cinfo = get_call_info (cfg->generic_sharing_context, cfg->mempool, sig, FALSE);
+	cinfo = get_call_info (cfg->generic_sharing_context, cfg->mempool, sig);
 
 	if (!sig->pinvoke && (sig->call_convention == MONO_CALL_VARARG))
 		sentinelpos = sig->sentinelpos + (sig->hasthis ? 1 : 0);
@@ -2243,7 +2256,7 @@ emit_load_volatile_arguments (MonoCompile *cfg, guint8 *code)
 
 	sig = mono_method_signature (method);
 
-	cinfo = get_call_info (cfg->generic_sharing_context, cfg->mempool, sig, FALSE);
+	cinfo = get_call_info (cfg->generic_sharing_context, cfg->mempool, sig);
 	
 	/* This is the opposite of the code in emit_prolog */
 
@@ -2297,6 +2310,16 @@ x86_pop_reg (code, X86_EAX);
 
 #ifndef DISABLE_JIT
 
+#if defined(__native_client__) || defined(__native_client_codegen__)
+void
+mono_nacl_gc()
+{
+#ifdef __native_client_gc__
+	__nacl_suspend_thread_if_needed();
+#endif
+}
+#endif
+
 void
 mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
 {
@@ -2989,6 +3012,52 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
 			cfg->disable_aot = TRUE;
 			break;
 		}
+		case OP_TAILCALL: {
+			MonoCallInst *call = (MonoCallInst*)ins;
+			int pos = 0, i;
+
+			/* FIXME: no tracing support... */
+			if (cfg->prof_options & MONO_PROFILE_ENTER_LEAVE)
+				code = mono_arch_instrument_epilog (cfg, mono_profiler_method_leave, code, FALSE);
+			/* reset offset to make max_len work */
+			offset = code - cfg->native_code;
+
+			g_assert (!cfg->method->save_lmf);
+
+			//code = emit_load_volatile_arguments (cfg, code);
+
+			/* restore callee saved registers */
+			for (i = 0; i < X86_NREG; ++i)
+				if (X86_IS_CALLEE_SAVED_REG (i) && cfg->used_int_regs & (1 << i))
+					pos -= 4;
+			if (cfg->used_int_regs & (1 << X86_ESI)) {
+				x86_mov_reg_membase (code, X86_ESI, X86_EBP, pos, 4);
+				pos += 4;
+			}
+			if (cfg->used_int_regs & (1 << X86_EDI)) {
+				x86_mov_reg_membase (code, X86_EDI, X86_EBP, pos, 4);
+				pos += 4;
+			}
+			if (cfg->used_int_regs & (1 << X86_EBX)) {
+				x86_mov_reg_membase (code, X86_EBX, X86_EBP, pos, 4);
+				pos += 4;
+			}
+
+			/* Copy arguments on the stack to our argument area */
+			for (i = 0; i < call->stack_usage; i += 4) {
+				x86_mov_reg_membase (code, X86_EAX, X86_ESP, i, 4);
+				x86_mov_membase_reg (code, X86_EBP, 8 + i, X86_EAX, 4);
+			}
+	
+			/* restore ESP/EBP */
+			x86_leave (code);
+			offset = code - cfg->native_code;
+			mono_add_patch_info (cfg, offset, MONO_PATCH_INFO_METHOD_JUMP, ins->inst_p0);
+			x86_jump32 (code, 0);
+
+			cfg->disable_aot = TRUE;
+			break;
+		}
 		case OP_CHECK_THIS:
 			/* ensure ins->sreg1 is not NULL
 			 * note that cmp DWORD PTR [eax], eax is one byte shorter than
@@ -3015,6 +3084,8 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
 				code = emit_call (cfg, code, MONO_PATCH_INFO_METHOD, call->method);
 			else
 				code = emit_call (cfg, code, MONO_PATCH_INFO_ABS, call->fptr);
+			ins->flags |= MONO_INST_GC_CALLSITE;
+			ins->backend.pc_offset = code - cfg->native_code;
 			if (call->stack_usage && !CALLCONV_IS_STDCALL (call->signature)) {
 				/* a pop is one byte, while an add reg, imm is 3. So if there are 4 or 8
 				 * bytes to pop, we want to use pops. GCC does this (note it won't happen
@@ -3047,6 +3118,8 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
 		case OP_CALL_REG:
 			call = (MonoCallInst*)ins;
 			x86_call_reg (code, ins->sreg1);
+			ins->flags |= MONO_INST_GC_CALLSITE;
+			ins->backend.pc_offset = code - cfg->native_code;
 			if (call->stack_usage && !CALLCONV_IS_STDCALL (call->signature)) {
 				if (call->stack_usage == 4)
 					x86_pop_reg (code, X86_ECX);
@@ -3064,6 +3137,8 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
 			call = (MonoCallInst*)ins;
 
 			x86_call_membase (code, ins->sreg1, ins->inst_offset);
+			ins->flags |= MONO_INST_GC_CALLSITE;
+			ins->backend.pc_offset = code - cfg->native_code;
 			if (call->stack_usage && !CALLCONV_IS_STDCALL (call->signature)) {
 				if (call->stack_usage == 4)
 					x86_pop_reg (code, X86_ECX);
@@ -3137,6 +3212,8 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
 			x86_push_reg (code, ins->sreg1);
 			code = emit_call (cfg, code, MONO_PATCH_INFO_INTERNAL_METHOD, 
 							  (gpointer)"mono_arch_throw_exception");
+			ins->flags |= MONO_INST_GC_CALLSITE;
+			ins->backend.pc_offset = code - cfg->native_code;
 			break;
 		}
 		case OP_RETHROW: {
@@ -3144,6 +3221,8 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
 			x86_push_reg (code, ins->sreg1);
 			code = emit_call (cfg, code, MONO_PATCH_INFO_INTERNAL_METHOD, 
 							  (gpointer)"mono_arch_rethrow_exception");
+			ins->flags |= MONO_INST_GC_CALLSITE;
+			ins->backend.pc_offset = code - cfg->native_code;
 			break;
 		}
 		case OP_CALL_HANDLER:
@@ -4005,7 +4084,6 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
 			x86_cmpxchg_membase_reg (code, ins->sreg1, ins->inst_offset, ins->sreg2);
 			break;
 		}
-#ifdef HAVE_SGEN_GC
 		case OP_CARD_TABLE_WBARRIER: {
 			int ptr = ins->sreg1;
 			int value = ins->sreg2;
@@ -4044,11 +4122,12 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
 			br = code; x86_branch8 (code, X86_CC_NE, -1, FALSE);
 			x86_mov_reg_reg (code, X86_EDX, ptr, 4);
 			x86_shift_reg_imm (code, X86_SHR, X86_EDX, card_table_shift);
+			if (card_table_mask)
+				x86_alu_reg_imm (code, X86_AND, X86_EDX, (int)card_table_mask);
 			x86_mov_membase_imm (code, X86_EDX, card_table, 1, 1);
 			x86_patch (br, code);
 			break;
 		}
-#endif
 #ifdef MONO_ARCH_SIMD_INTRINSICS
 		case OP_ADDPS:
 			x86_sse_alu_ps_reg_reg (code, X86_SSE_ADD, ins->sreg1, ins->sreg2);
@@ -4121,6 +4200,14 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
 			g_assert (ins->inst_c0 >= 0 && ins->inst_c0 <= 0xFF);
 			x86_sse_shift_reg_imm (code, X86_SSE_PSHUFD, ins->dreg, ins->sreg1, ins->inst_c0);
 			break;
+		case OP_SHUFPS:
+			g_assert (ins->inst_c0 >= 0 && ins->inst_c0 <= 0xFF);
+			x86_sse_alu_reg_reg_imm8 (code, X86_SSE_SHUFP, ins->sreg1, ins->sreg2, ins->inst_c0);
+			break; 
+		case OP_SHUFPD:
+			g_assert (ins->inst_c0 >= 0 && ins->inst_c0 <= 0x3);
+			x86_sse_alu_pd_reg_reg_imm8 (code, X86_SSE_SHUFP, ins->sreg1, ins->sreg2, ins->inst_c0);
+			break; 
 
 		case OP_ADDPD:
 			x86_sse_alu_pd_reg_reg (code, X86_SSE_ADD, ins->sreg1, ins->sreg2);
@@ -4589,6 +4676,32 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
 			x86_movsd_reg_membase (code, ins->dreg, ins->backend.spill_var->inst_basereg, ins->backend.spill_var->inst_offset);
 			x86_sse_shift_reg_imm (code, X86_SSE_PSHUFD, ins->dreg, ins->dreg, 0x44);
 			break;
+
+		case OP_CVTDQ2PD:
+			x86_sse_alu_ss_reg_reg (code, X86_SSE_CVTDQ2PD, ins->dreg, ins->sreg1);
+			break;
+		case OP_CVTDQ2PS:
+			x86_sse_alu_ps_reg_reg (code, X86_SSE_CVTDQ2PS, ins->dreg, ins->sreg1);
+			break;
+		case OP_CVTPD2DQ:
+			x86_sse_alu_sd_reg_reg (code, X86_SSE_CVTPD2DQ, ins->dreg, ins->sreg1);
+			break;
+		case OP_CVTPD2PS:
+			x86_sse_alu_pd_reg_reg (code, X86_SSE_CVTPD2PS, ins->dreg, ins->sreg1);
+			break;
+		case OP_CVTPS2DQ:
+			x86_sse_alu_pd_reg_reg (code, X86_SSE_CVTPS2DQ, ins->dreg, ins->sreg1);
+			break;
+		case OP_CVTPS2PD:
+			x86_sse_alu_ps_reg_reg (code, X86_SSE_CVTPS2PD, ins->dreg, ins->sreg1);
+			break;
+		case OP_CVTTPD2DQ:
+			x86_sse_alu_pd_reg_reg (code, X86_SSE_CVTTPD2DQ, ins->dreg, ins->sreg1);
+			break;
+		case OP_CVTTPS2DQ:
+			x86_sse_alu_ss_reg_reg (code, X86_SSE_CVTTPS2DQ, ins->dreg, ins->sreg1);
+			break;
+
 #endif
 		case OP_LIVERANGE_START: {
 			if (cfg->verbose_level > 1)
@@ -4602,6 +4715,21 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
 			MONO_VARINFO (cfg, ins->inst_c0)->live_range_end = code - cfg->native_code;
 			break;
 		}
+		case OP_NACL_GC_SAFE_POINT: {
+#if defined(__native_client_codegen__)
+			code = emit_call (cfg, code, MONO_PATCH_INFO_ABS, (gpointer)mono_nacl_gc);
+#endif
+			break;
+		}
+		case OP_GC_LIVENESS_DEF:
+		case OP_GC_LIVENESS_USE:
+		case OP_GC_PARAM_SLOT_LIVENESS_DEF:
+			ins->backend.pc_offset = code - cfg->native_code;
+			break;
+		case OP_GC_SPILL_SLOT_LIVENESS_DEF:
+			ins->backend.pc_offset = code - cfg->native_code;
+			bb->spill_slot_defs = g_slist_prepend_mempool (cfg->mempool, bb->spill_slot_defs, ins);
+			break;
 		default:
 			g_warning ("unknown opcode %s\n", mono_inst_name (ins->opcode));
 			g_assert_not_reached ();
@@ -4672,13 +4800,46 @@ mono_arch_patch_code (MonoMethod *method, MonoDomain *domain, guint8 *code, Mono
 		case MONO_PATCH_INFO_GENERIC_CLASS_INIT:
 		case MONO_PATCH_INFO_MONITOR_ENTER:
 		case MONO_PATCH_INFO_MONITOR_EXIT:
+#if defined(__native_client_codegen__) && defined(__native_client__)
+			if (nacl_is_code_address (code)) {
+				/* For tail calls, code is patched after being installed */
+				/* but not through the normal "patch callsite" method.   */
+				unsigned char buf[kNaClAlignment];
+				unsigned char *aligned_code = (uintptr_t)code & ~kNaClAlignmentMask;
+				unsigned char *_target = target;
+				int ret;
+				/* All patch targets modified in x86_patch */
+				/* are IP relative.                        */
+				_target = _target + (uintptr_t)buf - (uintptr_t)aligned_code;
+				memcpy (buf, aligned_code, kNaClAlignment);
+				/* Patch a temp buffer of bundle size, */
+				/* then install to actual location.    */
+				x86_patch (buf + ((uintptr_t)code - (uintptr_t)aligned_code), _target);
+				ret = nacl_dyncode_modify (aligned_code, buf, kNaClAlignment);
+				g_assert (ret == 0);
+			}
+			else {
+				x86_patch (ip, target);
+			}
+#else
 			x86_patch (ip, target);
+#endif
 			break;
 		case MONO_PATCH_INFO_NONE:
 			break;
+		case MONO_PATCH_INFO_R4:
+		case MONO_PATCH_INFO_R8: {
+			guint32 offset = mono_arch_get_patch_offset (ip);
+			*((gconstpointer *)(ip + offset)) = target;
+			break;
+		}
 		default: {
 			guint32 offset = mono_arch_get_patch_offset (ip);
+#if !defined(__native_client__)
 			*((gconstpointer *)(ip + offset)) = target;
+#else
+			*((gconstpointer *)(ip + offset)) = nacl_modify_patch_target (target);
+#endif
 			break;
 		}
 		}
@@ -4704,7 +4865,9 @@ mono_arch_emit_prolog (MonoCompile *cfg)
 	if (cfg->prof_options & MONO_PROFILE_ENTER_LEAVE)
 		cfg->code_size += 512;
 
-#ifdef __native_client_codegen__
+#if defined(__default_codegen__)
+	code = cfg->native_code = g_malloc (cfg->code_size);
+#elif defined(__native_client_codegen__)
 	/* native_code_alloc is not 32-byte aligned, native_code is. */
 	cfg->native_code_alloc = g_malloc (cfg->code_size + kNaClAlignment);
 
@@ -4716,8 +4879,6 @@ mono_arch_emit_prolog (MonoCompile *cfg)
 
 	alignment_check = (guint)cfg->native_code & kNaClAlignmentMask;
   	g_assert(alignment_check == 0);
-#else
-	code = cfg->native_code = g_malloc (cfg->code_size);
 #endif
 
 	/* Offset between RSP and the CFA */
@@ -4739,6 +4900,8 @@ mono_arch_emit_prolog (MonoCompile *cfg)
 		mono_emit_unwind_op_offset (cfg, code, X86_EBP, - cfa_offset);
 		x86_mov_reg_reg (code, X86_EBP, X86_ESP, 4);
 		mono_emit_unwind_op_def_cfa_reg (cfg, code, X86_EBP);
+	} else {
+		cfg->frame_reg = X86_ESP;
 	}
 
 	alloc_size = cfg->stack_offset;
@@ -5130,7 +5293,7 @@ mono_arch_emit_epilog (MonoCompile *cfg)
 	}
 
 	/* Load returned vtypes into registers if needed */
-	cinfo = get_call_info (cfg->generic_sharing_context, cfg->mempool, sig, FALSE);
+	cinfo = get_call_info (cfg->generic_sharing_context, cfg->mempool, sig);
 	if (cinfo->ret.storage == ArgValuetypeInReg) {
 		for (quad = 0; quad < 2; quad ++) {
 			switch (cinfo->ret.pair_storage [quad]) {
@@ -5236,11 +5399,11 @@ mono_arch_emit_exceptions (MonoCompile *cfg)
 				guint32 size;
 
 				/* Compute size of code following the push <OFFSET> */
-#ifdef __native_client_codegen__
+#if defined(__default_codegen__)
+				size = 5 + 5;
+#elif defined(__native_client_codegen__)
 				code = mono_nacl_align (code);
 				size = kNaClAlignment;
-#else
-				size = 5 + 5;
 #endif
 				/*This is aligned to 16 bytes by the callee. This way we save a few bytes here.*/
 
@@ -5356,16 +5519,15 @@ mono_arch_free_jit_tls_data (MonoJitTlsData *tls)
 //[1 + 5] x86_jump_mem(inst,mem)
 
 #define CMP_SIZE 6
-#ifdef __native_client_codegen__
-/* These constants should be coming from cpu-x86.md            */
+#if defined(__default_codegen__)
+#define BR_SMALL_SIZE 2
+#define BR_LARGE_SIZE 5
+#elif defined(__native_client_codegen__)
 /* I suspect the size calculation below is actually incorrect. */
-/* TODO: fix the calculation that uses these sizes.            */
+/* TODO: fix the calculation that uses these sizes.  */
 #define BR_SMALL_SIZE 16
 #define BR_LARGE_SIZE 12
-#else
-#define BR_SMALL_SIZE 2
-#define BR_LARGE_SIZE 5
-#endif  /* __native_client_codegen__ */
+#endif  /*__native_client_codegen__*/
 #define JUMP_IMM_SIZE 6
 #define ENABLE_WRONG_METHOD_CHECK 0
 #define DEBUG_IMT 0
@@ -5390,9 +5552,6 @@ mono_arch_build_imt_thunk (MonoVTable *vtable, MonoDomain *domain, MonoIMTCheckI
 	int size = 0;
 	guint8 *code, *start;
 
-#ifdef __native_client_codegen__
-	/* g_print("mono_arch_build_imt_thunk needs to be aligned.\n"); */
-#endif
 	for (i = 0; i < count; ++i) {
 		MonoIMTCheckItem *item = imt_entries [i];
 		if (item->is_equals) {
@@ -5416,10 +5575,16 @@ mono_arch_build_imt_thunk (MonoVTable *vtable, MonoDomain *domain, MonoIMTCheckI
 		}
 		size += item->chunk_size;
 	}
+#if defined(__native_client__) && defined(__native_client_codegen__)
+	/* In Native Client, we don't re-use thunks, allocate from the */
+	/* normal code manager paths. */
+	code = mono_domain_code_reserve (domain, size);
+#else
 	if (fail_tramp)
 		code = mono_method_alloc_generic_virtual_thunk (domain, size);
 	else
 		code = mono_domain_code_reserve (domain, size);
+#endif
 	start = code;
 	for (i = 0; i < count; ++i) {
 		MonoIMTCheckItem *item = imt_entries [i];
@@ -5494,6 +5659,17 @@ mono_arch_build_imt_thunk (MonoVTable *vtable, MonoDomain *domain, MonoIMTCheckI
 		g_free (buff);
 	}
 #endif
+	if (mono_jit_map_is_enabled ()) {
+		char *buff;
+		if (vtable)
+			buff = g_strdup_printf ("imt_%s_%s_entries_%d", vtable->klass->name_space, vtable->klass->name, count);
+		else
+			buff = g_strdup_printf ("imt_thunk_entries_%d", count);
+		mono_emit_jit_tramp (start, code - start, buff);
+		g_free (buff);
+	}
+
+	nacl_domain_code_validate (domain, &start, size, &code);
 
 	return start;
 }
@@ -5697,8 +5873,7 @@ mono_x86_get_this_arg_offset (MonoGenericSharingContext *gsctx, MonoMethodSignat
 }
 
 gpointer
-mono_arch_get_this_arg_from_call (MonoGenericSharingContext *gsctx, MonoMethodSignature *sig,
-		mgreg_t *regs, guint8 *code)
+mono_arch_get_this_arg_from_call (mgreg_t *regs, guint8 *code)
 {
 	guint32 esp = regs [X86_ESP];
 	CallInfo *cinfo = NULL;
@@ -5726,6 +5901,7 @@ static gpointer
 get_delegate_invoke_impl (gboolean has_target, guint32 param_count, guint32 *code_len)
 {
 	guint8 *code, *start;
+	int code_reserve = 64;
 
 	/*
 	 * The stack contains:
@@ -5734,7 +5910,7 @@ get_delegate_invoke_impl (gboolean has_target, guint32 param_count, guint32 *cod
 	 */
 
 	if (has_target) {
-		start = code = mono_global_codeman_reserve (64);
+		start = code = mono_global_codeman_reserve (code_reserve);
 
 		/* Replace the this argument with the target */
 		x86_mov_reg_membase (code, X86_EAX, X86_ESP, 4, 4);
@@ -5742,15 +5918,15 @@ get_delegate_invoke_impl (gboolean has_target, guint32 param_count, guint32 *cod
 		x86_mov_membase_reg (code, X86_ESP, 4, X86_ECX, 4);
 		x86_jump_membase (code, X86_EAX, G_STRUCT_OFFSET (MonoDelegate, method_ptr));
 
-		g_assert ((code - start) < 64);
+		g_assert ((code - start) < code_reserve);
 	} else {
 		int i = 0;
 		/* 8 for mov_reg and jump, plus 8 for each parameter */
 #ifdef __native_client_codegen__
 		/* TODO: calculate this size correctly */
-		int code_reserve = 13 + (param_count * 8) + 2 * kNaClAlignment;
+		code_reserve = 13 + (param_count * 8) + 2 * kNaClAlignment;
 #else
-		int code_reserve = 8 + (param_count * 8);
+		code_reserve = 8 + (param_count * 8);
 #endif  /* __native_client_codegen__ */
 		/*
 		 * The stack contains:
@@ -5784,11 +5960,23 @@ get_delegate_invoke_impl (gboolean has_target, guint32 param_count, guint32 *cod
 		g_assert ((code - start) < code_reserve);
 	}
 
+	nacl_global_codeman_validate(&start, code_reserve, &code);
 	mono_debug_add_delegate_trampoline (start, code - start);
 
 	if (code_len)
 		*code_len = code - start;
 
+	if (mono_jit_map_is_enabled ()) {
+		char *buff;
+		if (has_target)
+			buff = (char*)"delegate_invoke_has_target";
+		else
+			buff = g_strdup_printf ("delegate_invoke_no_target_%d", param_count);
+		mono_emit_jit_tramp (start, code - start, buff);
+		if (!has_target)
+			g_free (buff);
+	}
+
 	return start;
 }
 
diff --git a/mono/mini/mini-x86.h b/mono/mini/mini-x86.h
index d2e2fab..3cc5b44 100644
--- a/mono/mini/mini-x86.h
+++ b/mono/mini/mini-x86.h
@@ -3,6 +3,14 @@
 
 #include <mono/arch/x86/x86-codegen.h>
 #include <mono/utils/mono-sigcontext.h>
+
+#ifdef __native_client_codegen__
+#define kNaClAlignmentX86 32
+#define kNaClAlignmentMaskX86 (kNaClAlignmentX86 - 1)
+
+#define kNaClLengthOfCallImm kx86NaClLengthOfCallImm
+#endif
+
 #ifdef HOST_WIN32
 #include <windows.h>
 /* use SIG* defines if possible */
@@ -59,12 +67,6 @@ struct sigcontext {
 #undef MONO_ARCH_USE_SIGACTION
 #endif
 
-#if defined(__native_client_codegen__) || defined(__native_client__)
-#define NACL_SIZE(a, b) (b)
-#else
-#define NACL_SIZE(a, b) (a)
-#endif
-
 #ifndef HOST_WIN32
 
 #ifdef HAVE_WORKING_SIGALTSTACK
@@ -146,6 +148,11 @@ struct sigcontext {
 /*This is the max size of the locals area of a given frame. I think 1MB is a safe default for now*/
 #define MONO_ARCH_MAX_FRAME_SIZE 0x100000
 
+/*This is how much a try block must be extended when is is preceeded by a Monitor.Enter() call.
+It's 4 bytes as this is how many bytes + 1 that 'add 0x10, %esp' takes. It is used to pop the arguments from
+the monitor.enter call and must be already protected.*/
+#define MONO_ARCH_MONITOR_ENTER_ADJUSTMENT 4
+
 struct MonoLMF {
 	/* 
 	 * If the lowest bit is set to 1, then this is a trampoline LMF frame.
@@ -248,14 +255,7 @@ typedef struct {
 
 #endif
 
-/*
- * This structure is an extension of MonoLMF and contains extra information.
- */
-typedef struct {
-	struct MonoLMF lmf;
-	gboolean debugger_invoke;
-	MonoContext ctx; /* if debugger_invoke is TRUE */
-} MonoLMFExt;
+#define MONO_ARCH_INIT_TOP_LMF_ENTRY(lmf) do { (lmf)->ebp = -1; } while (0)
 
 /* Enables OP_LSHL, OP_LSHL_IMM, OP_LSHR, OP_LSHR_IMM, OP_LSHR_UN, OP_LSHR_UN_IMM */
 #define MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS
@@ -314,11 +314,16 @@ typedef struct {
 #define MONO_ARCH_SOFT_DEBUG_SUPPORTED 1
 #endif
 
-#define MONO_ARCH_HAVE_FIND_JIT_INFO_EXT 1
 #define MONO_ARCH_HAVE_EXCEPTIONS_INIT 1
 #define MONO_ARCH_HAVE_HANDLER_BLOCK_GUARD 1
 
 #define MONO_ARCH_HAVE_CARD_TABLE_WBARRIER 1
+#define MONO_ARCH_GC_MAPS_SUPPORTED 1
+
+gboolean
+mono_x86_tail_call_supported (MonoMethodSignature *caller_sig, MonoMethodSignature *callee_sig) MONO_INTERNAL;
+
+#define MONO_ARCH_USE_OP_TAIL_CALL(caller_sig, callee_sig) mono_x86_tail_call_supported (caller_sig, callee_sig)
 
 /* Used for optimization, not complete */
 #define MONO_ARCH_IS_OP_MEMBASE(opcode) ((opcode) == OP_X86_PUSH_MEMBASE)
diff --git a/mono/mini/mini.c b/mono/mini/mini.c
index 4042684..2cbbabe 100644
--- a/mono/mini/mini.c
+++ b/mono/mini/mini.c
@@ -89,20 +89,6 @@
 
 static gpointer mono_jit_compile_method_with_opt (MonoMethod *method, guint32 opt, MonoException **ex);
 
-/* helper methods signature */
-/* FIXME: Make these static again */
-MonoMethodSignature *helper_sig_class_init_trampoline = NULL;
-MonoMethodSignature *helper_sig_domain_get = NULL;
-MonoMethodSignature *helper_sig_generic_class_init_trampoline = NULL;
-MonoMethodSignature *helper_sig_generic_class_init_trampoline_llvm = NULL;
-MonoMethodSignature *helper_sig_rgctx_lazy_fetch_trampoline = NULL;
-MonoMethodSignature *helper_sig_monitor_enter_exit_trampoline = NULL;
-MonoMethodSignature *helper_sig_monitor_enter_exit_trampoline_llvm = NULL;
-
-#ifdef __native_client_codegen__
-/* Default alignment for Native Client is 32-byte. */
-guint8 nacl_align_byte = 0xe0;
-#endif
 
 static guint32 default_opt = 0;
 static gboolean default_opt_set = FALSE;
@@ -113,6 +99,10 @@ guint32 mono_jit_tls_id = -1;
 MINI_FAST_TLS_DECLARE(mono_jit_tls);
 #endif
 
+#ifndef MONO_ARCH_MONITOR_ENTER_ADJUSTMENT
+#define MONO_ARCH_MONITOR_ENTER_ADJUSTMENT 1
+#endif
+
 MonoTraceSpec *mono_jit_trace_calls = NULL;
 gboolean mono_break_on_exc = FALSE;
 gboolean mono_compile_aot = FALSE;
@@ -170,6 +160,38 @@ gboolean disable_vtypes_in_regs = FALSE;
 
 gboolean mono_dont_free_global_codeman;
 
+gpointer
+mono_realloc_native_code (MonoCompile *cfg)
+{
+#if defined(__default_codegen__)
+	return g_realloc (cfg->native_code, cfg->code_size);
+#elif defined(__native_client_codegen__)
+	guint old_padding;
+	gpointer native_code;
+	guint alignment_check;
+
+	/* Save the old alignment offset so we can re-align after the realloc. */
+	old_padding = (guint)(cfg->native_code - cfg->native_code_alloc);
+
+	cfg->native_code_alloc = g_realloc ( cfg->native_code_alloc,
+										 cfg->code_size + kNaClAlignment );
+
+	/* Align native_code to next nearest kNaClAlignment byte. */
+	native_code = (guint)cfg->native_code_alloc + kNaClAlignment;
+	native_code = (guint)native_code & ~kNaClAlignmentMask;
+
+	/* Shift the data to be 32-byte aligned again. */
+	memmove (native_code, cfg->native_code_alloc + old_padding, cfg->code_size);
+
+	alignment_check = (guint)native_code & kNaClAlignmentMask;
+	g_assert (alignment_check == 0);
+	return native_code;
+#else
+	g_assert_not_reached ();
+	return cfg->native_code;
+#endif
+}
+
 #ifdef __native_client_codegen__
 
 /* Prevent instructions from straddling a 32-byte alignment boundary.   */
@@ -346,6 +368,10 @@ mono_pmip (void *ip)
  * output.  Unlike mono_pmip which returns a string, this routine
  * prints the value on the standard output. 
  */
+#ifdef __GNUC__
+/* Prevent the linker from optimizing this away in embedding setups to help debugging */
+ __attribute__((used))
+#endif
 void
 mono_print_method_from_ip (void *ip)
 {
@@ -436,6 +462,67 @@ void *mono_global_codeman_reserve (int size)
 	}
 }
 
+#if defined(__native_client_codegen__) && defined(__native_client__)
+/* Given the temporary buffer (allocated by mono_global_codeman_reserve) into
+ * which we are generating code, return a pointer to the destination in the
+ * dynamic code segment into which the code will be copied when
+ * mono_global_codeman_commit is called.
+ * LOCKING: Acquires the jit lock.
+ */
+void*
+nacl_global_codeman_get_dest (void *data)
+{
+	void *dest;
+	mono_jit_lock ();
+	dest = nacl_code_manager_get_code_dest (global_codeman, data);
+	mono_jit_unlock ();
+	return dest;
+}
+
+void
+mono_global_codeman_commit (void *data, int size, int newsize)
+{
+	mono_jit_lock ();
+	mono_code_manager_commit (global_codeman, data, size, newsize);
+	mono_jit_unlock ();
+}
+
+/* 
+ * Convenience function which calls mono_global_codeman_commit to validate and
+ * copy the code. The caller sets *buf_base and *buf_size to the start and size
+ * of the buffer (allocated by mono_global_codeman_reserve), and *code_end to
+ * the byte after the last instruction byte. On return, *buf_base will point to
+ * the start of the copied in the code segment, and *code_end will point after
+ * the end of the copied code.
+ */
+void
+nacl_global_codeman_validate (guint8 **buf_base, int buf_size, guint8 **code_end)
+{
+	guint8 *tmp = nacl_global_codeman_get_dest (*buf_base);
+	mono_global_codeman_commit (*buf_base, buf_size, *code_end - *buf_base);
+	*code_end = tmp + (*code_end - *buf_base);
+	*buf_base = tmp;
+}
+#else
+/* no-op versions of Native Client functions */
+void*
+nacl_global_codeman_get_dest (void *data)
+{
+	return data;
+}
+
+void
+mono_global_codeman_commit (void *data, int size, int newsize)
+{
+}
+
+void
+nacl_global_codeman_validate (guint8 **buf_base, int buf_size, guint8 **code_end)
+{
+}
+
+#endif /* __native_client__ */
+
 /**
  * mono_create_unwind_op:
  *
@@ -1049,6 +1136,18 @@ mono_compile_create_var_for_vreg (MonoCompile *cfg, MonoType *type, int opcode,
 	inst->backend.is_pinvoke = 0;
 	inst->dreg = vreg;
 
+	if (cfg->compute_gc_maps) {
+		if (type->byref) {
+			mono_mark_vreg_as_mp (cfg, vreg);
+		} else {
+			MonoType *t = mini_type_get_underlying_type (NULL, type);
+			if ((MONO_TYPE_ISSTRUCT (t) && inst->klass->has_references) || MONO_TYPE_IS_REFERENCE (t)) {
+				inst->flags |= MONO_INST_GC_TRACK;
+				mono_mark_vreg_as_ref (cfg, vreg);
+			}
+		}
+	}
+	
 	cfg->varinfo [num] = inst;
 
 	MONO_INIT_VARINFO (&cfg->vars [num], num);
@@ -1153,6 +1252,38 @@ mono_compile_make_var_load (MonoCompile *cfg, MonoInst *dest, gssize var_index)
 
 #endif
 
+void
+mono_mark_vreg_as_ref (MonoCompile *cfg, int vreg)
+{
+	if (vreg >= cfg->vreg_is_ref_len) {
+		gboolean *tmp = cfg->vreg_is_ref;
+		int size = cfg->vreg_is_ref_len;
+
+		while (vreg >= cfg->vreg_is_ref_len)
+			cfg->vreg_is_ref_len = cfg->vreg_is_ref_len ? cfg->vreg_is_ref_len * 2 : 32;
+		cfg->vreg_is_ref = mono_mempool_alloc0 (cfg->mempool, sizeof (gboolean) * cfg->vreg_is_ref_len);
+		if (size)
+			memcpy (cfg->vreg_is_ref, tmp, size * sizeof (gboolean));
+	}
+	cfg->vreg_is_ref [vreg] = TRUE;
+}	
+
+void
+mono_mark_vreg_as_mp (MonoCompile *cfg, int vreg)
+{
+	if (vreg >= cfg->vreg_is_mp_len) {
+		gboolean *tmp = cfg->vreg_is_mp;
+		int size = cfg->vreg_is_mp_len;
+
+		while (vreg >= cfg->vreg_is_mp_len)
+			cfg->vreg_is_mp_len = cfg->vreg_is_mp_len ? cfg->vreg_is_mp_len * 2 : 32;
+		cfg->vreg_is_mp = mono_mempool_alloc0 (cfg->mempool, sizeof (gboolean) * cfg->vreg_is_mp_len);
+		if (size)
+			memcpy (cfg->vreg_is_mp, tmp, size * sizeof (gboolean));
+	}
+	cfg->vreg_is_mp [vreg] = TRUE;
+}	
+
 static MonoType*
 type_from_stack_type (MonoInst *ins) {
 	switch (ins->type) {
@@ -1350,7 +1481,7 @@ gboolean
 mini_assembly_can_skip_verification (MonoDomain *domain, MonoMethod *method)
 {
 	MonoAssembly *assembly = method->klass->image->assembly;
-	if (method->wrapper_type != MONO_WRAPPER_NONE)
+	if (method->wrapper_type != MONO_WRAPPER_NONE && method->wrapper_type != MONO_WRAPPER_DYNAMIC_METHOD)
 		return FALSE;
 	if (assembly->in_gac || assembly->image == mono_defaults.corlib)
 		return FALSE;
@@ -1366,8 +1497,8 @@ mini_assembly_can_skip_verification (MonoDomain *domain, MonoMethod *method)
  * 
  * Returns true if the method is invalid. 
  */
-gboolean
-mini_method_verify (MonoCompile *cfg, MonoMethod *method)
+static gboolean
+mini_method_verify (MonoCompile *cfg, MonoMethod *method, gboolean fail_compile)
 {
 	GSList *tmp, *res;
 	gboolean is_fulltrust;
@@ -1384,7 +1515,10 @@ mini_method_verify (MonoCompile *cfg, MonoMethod *method)
 	res = mono_method_verify_with_current_settings (method, cfg->skip_visibility);
 
 	if ((error = mono_loader_get_last_error ())) {
-		cfg->exception_type = error->exception_type;
+		if (fail_compile)
+			cfg->exception_type = error->exception_type;
+		else
+			mono_loader_clear_error ();
 		if (res)
 			mono_free_verify_list (res);
 		return TRUE;
@@ -1394,19 +1528,23 @@ mini_method_verify (MonoCompile *cfg, MonoMethod *method)
 		for (tmp = res; tmp; tmp = tmp->next) {
 			MonoVerifyInfoExtended *info = (MonoVerifyInfoExtended *)tmp->data;
 			if (info->info.status == MONO_VERIFY_ERROR) {
+				if (fail_compile) {
 				char *method_name = mono_method_full_name (method, TRUE);
-				cfg->exception_type = info->exception_type;
-				cfg->exception_message = g_strdup_printf ("Error verifying %s: %s", method_name, info->info.message);
+					cfg->exception_type = info->exception_type;
+					cfg->exception_message = g_strdup_printf ("Error verifying %s: %s", method_name, info->info.message);
+					g_free (method_name);
+				}
 				mono_free_verify_list (res);
-				g_free (method_name);
 				return TRUE;
 			}
 			if (info->info.status == MONO_VERIFY_NOT_VERIFIABLE && (!is_fulltrust || info->exception_type == MONO_EXCEPTION_METHOD_ACCESS || info->exception_type == MONO_EXCEPTION_FIELD_ACCESS)) {
-				char *method_name = mono_method_full_name (method, TRUE);
-				cfg->exception_type = info->exception_type;
-				cfg->exception_message = g_strdup_printf ("Error verifying %s: %s", method_name, info->info.message);
+				if (fail_compile) {
+					char *method_name = mono_method_full_name (method, TRUE);
+					cfg->exception_type = info->exception_type;
+					cfg->exception_message = g_strdup_printf ("Error verifying %s: %s", method_name, info->info.message);
+					g_free (method_name);
+				}
 				mono_free_verify_list (res);
-				g_free (method_name);
 				return TRUE;
 			}
 		}
@@ -1416,11 +1554,10 @@ mini_method_verify (MonoCompile *cfg, MonoMethod *method)
 	return FALSE;
 }
 
-/*Returns true is something went wrong*/
-static gboolean
-mono_compile_is_broken (MonoCompile *cfg)
+/*Returns true if something went wrong*/
+gboolean
+mono_compile_is_broken (MonoCompile *cfg, MonoMethod *method, gboolean fail_compile)
 {
-	MonoMethod *method = cfg->method;
 	MonoMethod *method_definition = method;
 	gboolean dont_verify = mini_assembly_can_skip_verification (cfg->domain, method);
 	dont_verify |= method->klass->image->assembly->corlib_internal;
@@ -1430,19 +1567,7 @@ mono_compile_is_broken (MonoCompile *cfg)
 		method_definition = imethod->declaring;
 	}
 
-	return !dont_verify && mini_method_verify (cfg, method_definition);
-}
-
-static void
-create_helper_signature (void)
-{
-	helper_sig_domain_get = mono_create_icall_signature ("ptr");
-	helper_sig_class_init_trampoline = mono_create_icall_signature ("void");
-	helper_sig_generic_class_init_trampoline = mono_create_icall_signature ("void");
-	helper_sig_generic_class_init_trampoline_llvm = mono_create_icall_signature ("void ptr");
-	helper_sig_rgctx_lazy_fetch_trampoline = mono_create_icall_signature ("ptr ptr");
-	helper_sig_monitor_enter_exit_trampoline = mono_create_icall_signature ("void");
-	helper_sig_monitor_enter_exit_trampoline_llvm = mono_create_icall_signature ("void object");
+	return !dont_verify && mini_method_verify (cfg, method_definition, fail_compile);
 }
 
 static gconstpointer
@@ -1652,7 +1777,7 @@ mono_allocate_stack_slots_full2 (MonoCompile *cfg, gboolean backward, guint32 *s
 		case MONO_TYPE_PTR:
 		case MONO_TYPE_I:
 		case MONO_TYPE_U:
-#if SIZEOF_REGISTER == 4
+#if SIZEOF_VOID_P == 4
 		case MONO_TYPE_I4:
 #else
 		case MONO_TYPE_I8:
@@ -1886,7 +2011,7 @@ mono_allocate_stack_slots_full (MonoCompile *cfg, gboolean backward, guint32 *st
 
 	vars = mono_varlist_sort (cfg, vars, 0);
 	offset = 0;
-	*stack_align = sizeof (gpointer);
+	*stack_align = sizeof(mgreg_t);
 	for (l = vars; l; l = l->next) {
 		vmv = l->data;
 		inst = cfg->varinfo [vmv->idx];
@@ -1941,7 +2066,7 @@ mono_allocate_stack_slots_full (MonoCompile *cfg, gboolean backward, guint32 *st
 			case MONO_TYPE_PTR:
 			case MONO_TYPE_I:
 			case MONO_TYPE_U:
-#if SIZEOF_REGISTER == 4
+#if SIZEOF_VOID_P == 4
 			case MONO_TYPE_I4:
 #else
 			case MONO_TYPE_I8:
@@ -2155,7 +2280,11 @@ print_dfn (MonoCompile *cfg) {
 	MonoBasicBlock *bb;
 	MonoInst *c;
 
-	g_print ("IR code for method %s\n", mono_method_full_name (cfg->method, TRUE));
+	{
+		char *method_name = mono_method_full_name (cfg->method, TRUE);
+		g_print ("IR code for method %s\n", method_name);
+		g_free (method_name);
+	}
 
 	for (i = 0; i < cfg->num_bblocks; ++i) {
 		bb = cfg->bblocks [i];
@@ -2241,6 +2370,8 @@ mono_bblock_insert_before_ins (MonoBasicBlock *bb, MonoInst *ins, MonoInst *ins_
 {
 	if (ins == NULL) {
 		ins = bb->code;
+		if (ins)
+			ins->prev = ins_to_insert;
 		bb->code = ins_to_insert;
 		ins_to_insert->next = ins;
 		if (bb->last_ins == NULL)
@@ -2316,6 +2447,8 @@ mono_destroy_compile (MonoCompile *cfg)
 		g_hash_table_destroy (cfg->abs_patches);
 	mono_mempool_destroy (cfg->mempool);
 
+	mono_debug_free_method (cfg);
+
 	g_free (cfg->varinfo);
 	g_free (cfg->vars);
 	g_free (cfg->exception_message);
@@ -2381,8 +2514,11 @@ mono_get_lmf (void)
 
 	if ((jit_tls = TlsGetValue (mono_jit_tls_id)))
 		return jit_tls->lmf;
-
-	g_assert_not_reached ();
+	/*
+	 * We do not assert here because this function can be called from
+	 * mini-gc.c on a thread that has not executed any managed code, yet
+	 * (the thread object allocation can trigger a collection).
+	 */
 	return NULL;
 #endif
 }
@@ -2426,6 +2562,24 @@ mono_set_lmf (MonoLMF *lmf)
 	(*mono_get_lmf_addr ()) = lmf;
 }
 
+static void
+mono_set_jit_tls (MonoJitTlsData *jit_tls)
+{
+	TlsSetValue (mono_jit_tls_id, jit_tls);
+
+#ifdef MINI_HAVE_FAST_TLS
+	MINI_FAST_TLS_SET (mono_jit_tls, jit_tls);
+#endif
+}
+
+static void
+mono_set_lmf_addr (gpointer lmf_addr)
+{
+#ifdef MINI_HAVE_FAST_TLS
+	MINI_FAST_TLS_SET (mono_lmf_addr, lmf_addr);
+#endif
+}
+
 /* Called by native->managed wrappers */
 void
 mono_jit_thread_attach (MonoDomain *domain)
@@ -2483,32 +2637,22 @@ setup_jit_tls_data (gpointer stack_start, gpointer abort_func)
 
 	jit_tls = g_new0 (MonoJitTlsData, 1);
 
-	TlsSetValue (mono_jit_tls_id, jit_tls);
-
-#ifdef MINI_HAVE_FAST_TLS
-	MINI_FAST_TLS_SET (mono_jit_tls, jit_tls);
-#endif
-
 	jit_tls->abort_func = abort_func;
 	jit_tls->end_of_stack = stack_start;
 
+	mono_set_jit_tls (jit_tls);
+
 	lmf = g_new0 (MonoLMF, 1);
-#ifdef MONO_ARCH_INIT_TOP_LMF_ENTRY
 	MONO_ARCH_INIT_TOP_LMF_ENTRY (lmf);
-#else
-	lmf->ebp = -1;
-#endif
 
 	jit_tls->first_lmf = lmf;
 
 #if defined(MINI_HAVE_FAST_TLS) && defined(MONO_ARCH_ENABLE_MONO_LMF_VAR)
 	/* jit_tls->lmf is unused */
 	MINI_FAST_TLS_SET (mono_lmf, lmf);
-	MINI_FAST_TLS_SET (mono_lmf_addr, &mono_lmf);
+	mono_set_lmf_addr (&mono_lmf);
 #else
-#if defined(MINI_HAVE_FAST_TLS)
-	MINI_FAST_TLS_SET (mono_lmf_addr, &jit_tls->lmf);
-#endif
+	mono_set_lmf_addr (&jit_tls->lmf);
 
 	jit_tls->lmf = lmf;
 #endif
@@ -2520,6 +2664,16 @@ setup_jit_tls_data (gpointer stack_start, gpointer abort_func)
 }
 
 static void
+free_jit_tls_data (MonoJitTlsData *jit_tls)
+{
+	mono_arch_free_jit_tls_data (jit_tls);
+	mono_free_altstack (jit_tls);
+
+	g_free (jit_tls->first_lmf);
+	g_free (jit_tls);
+}
+
+static void
 mono_thread_start_cb (intptr_t tid, gpointer stack_start, gpointer func)
 {
 	MonoInternalThread *thread;
@@ -2528,6 +2682,8 @@ mono_thread_start_cb (intptr_t tid, gpointer stack_start, gpointer func)
 	mono_debugger_thread_created (tid, thread->root_domain_thread, jit_tls, func);
 	if (thread)
 		thread->jit_data = jit_tls;
+
+	mono_arch_cpu_init ();
 }
 
 void (*mono_thread_attach_aborted_cb ) (MonoObject *obj) = NULL;
@@ -2552,22 +2708,17 @@ mono_thread_attach_cb (intptr_t tid, gpointer stack_start)
 		thread->jit_data = jit_tls;
 	if (mono_profiler_get_events () & MONO_PROFILE_STATISTICAL)
 		mono_runtime_setup_stat_profiler ();
+
+	mono_arch_cpu_init ();
 }
 
 static void
-mini_thread_cleanup (MonoThread *thread)
+mini_thread_cleanup (MonoInternalThread *thread)
 {
-	MonoInternalThread *internal = thread->internal_thread;
-	MonoJitTlsData *jit_tls = internal->jit_data;
+	MonoJitTlsData *jit_tls = thread->jit_data;
 
 	if (jit_tls) {
 		mono_debugger_thread_cleanup (jit_tls);
-		mono_arch_free_jit_tls_data (jit_tls);
-
-		mono_free_altstack (jit_tls);
-		g_free (jit_tls->first_lmf);
-		g_free (jit_tls);
-		internal->jit_data = NULL;
 
 		/* We can't clean up tls information if we are on another thread, it will clean up the wrong stuff
 		 * It would be nice to issue a warning when this happens outside of the shutdown sequence. but it's
@@ -2575,17 +2726,15 @@ mini_thread_cleanup (MonoThread *thread)
 		 *
 		 * The current offender is mono_thread_manage which cleanup threads from the outside.
 		 */
-		if (internal == mono_thread_internal_current ()) {
-			TlsSetValue (mono_jit_tls_id, NULL);
-
-#ifdef MINI_HAVE_FAST_TLS
-			MINI_FAST_TLS_SET (mono_jit_tls, NULL);
-			MINI_FAST_TLS_SET (mono_lmf_addr, NULL);
-#if defined(MONO_ARCH_ENABLE_MONO_LMF_VAR)
-			MINI_FAST_TLS_SET (mono_lmf, NULL);
-#endif
-#endif		
+		if (thread == mono_thread_internal_current ()) {
+			mono_set_lmf (NULL);
+			mono_set_jit_tls (NULL);
+			mono_set_lmf_addr (NULL);
 		}
+
+		free_jit_tls_data (jit_tls);
+
+		thread->jit_data = NULL;
 	}
 }
 
@@ -2805,7 +2954,13 @@ mono_resolve_patch_target (MonoMethod *method, MonoDomain *domain, guint8 *code,
 		target = patch_info->data.inst->inst_c0 + code;
 		break;
 	case MONO_PATCH_INFO_IP:
+#if defined(__native_client__) && defined(__native_client_codegen__)
+		/* Need to transform to the destination address, it's */
+		/* emitted as an immediate in the code. */
+		target = nacl_inverse_modify_patch_target(ip);
+#else
 		target = ip;
+#endif
 		break;
 	case MONO_PATCH_INFO_METHOD_REL:
 		target = code + patch_info->data.offset;
@@ -2821,6 +2976,13 @@ mono_resolve_patch_target (MonoMethod *method, MonoDomain *domain, guint8 *code,
 	}
 	case MONO_PATCH_INFO_METHOD_JUMP:
 		target = mono_create_jump_trampoline (domain, patch_info->data.method, FALSE);
+#if defined(__native_client__) && defined(__native_client_codegen__)
+#if defined(TARGET_AMD64)
+		/* This target is an absolute address, not relative to the */
+		/* current code being emitted on AMD64. */
+		target = nacl_inverse_modify_patch_target(target);
+#endif
+#endif
 		break;
 	case MONO_PATCH_INFO_METHOD:
 		if (patch_info->data.method == method) {
@@ -2834,6 +2996,11 @@ mono_resolve_patch_target (MonoMethod *method, MonoDomain *domain, guint8 *code,
 		gpointer *jump_table;
 		int i;
 
+#if defined(__native_client__) && defined(__native_client_codegen__)
+		/* This memory will leak, but we don't care if we're */
+		/* not deleting JIT'd methods anyway                 */
+		jump_table = g_malloc0 (sizeof(gpointer) * patch_info->data.table->table_size);
+#else
 		if (method && method->dynamic) {
 			jump_table = mono_code_manager_reserve (mono_dynamic_code_hash_lookup (domain, method)->code_mp, sizeof (gpointer) * patch_info->data.table->table_size);
 		} else {
@@ -2843,10 +3010,27 @@ mono_resolve_patch_target (MonoMethod *method, MonoDomain *domain, guint8 *code,
 				jump_table = mono_domain_code_reserve (domain, sizeof (gpointer) * patch_info->data.table->table_size);
 			}
 		}
+#endif
 
-		for (i = 0; i < patch_info->data.table->table_size; i++)
+		for (i = 0; i < patch_info->data.table->table_size; i++) {
+#if defined(__native_client__) && defined(__native_client_codegen__)
+			/* 'code' is relative to the current code blob, we */
+			/* need to do this transform on it to make the     */
+			/* pointers in this table absolute                 */
+			jump_table [i] = nacl_inverse_modify_patch_target (code) + GPOINTER_TO_INT (patch_info->data.table->table [i]);
+#else
 			jump_table [i] = code + GPOINTER_TO_INT (patch_info->data.table->table [i]);
+#endif
+		}
+
+#if defined(__native_client__) && defined(__native_client_codegen__)
+		/* jump_table is in the data section, we need to transform */
+		/* it here so when it gets modified in amd64_patch it will */
+		/* then point back to the absolute data address            */
+		target = nacl_inverse_modify_patch_target (jump_table);
+#else
 		target = jump_table;
+#endif
 		break;
 	}
 	case MONO_PATCH_INFO_METHODCONST:
@@ -3039,7 +3223,6 @@ mono_resolve_patch_target (MonoMethod *method, MonoDomain *domain, guint8 *code,
 		g_assert_not_reached ();
 #endif
 		break;
-#ifdef HAVE_SGEN_GC
 	case MONO_PATCH_INFO_GC_CARD_TABLE_ADDR: {
 		int card_table_shift_bits;
 		gpointer card_table_mask;
@@ -3047,7 +3230,6 @@ mono_resolve_patch_target (MonoMethod *method, MonoDomain *domain, guint8 *code,
 		target = mono_gc_get_card_table (&card_table_shift_bits, &card_table_mask);
 		break;
 	}
-#endif
 	default:
 		g_assert_not_reached ();
 	}
@@ -3194,11 +3376,18 @@ mono_postprocess_patches (MonoCompile *cfg)
 		}
 		case MONO_PATCH_INFO_SWITCH: {
 			gpointer *table;
+#if defined(__native_client__) && defined(__native_client_codegen__)
+			/* This memory will leak.  */
+			/* TODO: can we free this when  */
+			/* making the final jump table? */
+			table = g_malloc0 (sizeof(gpointer) * patch_info->data.table->table_size);
+#else
 			if (cfg->method->dynamic) {
 				table = mono_code_manager_reserve (cfg->dynamic_info->code_mp, sizeof (gpointer) * patch_info->data.table->table_size);
 			} else {
 				table = mono_domain_code_reserve (cfg->domain, sizeof (gpointer) * patch_info->data.table->table_size);
 			}
+#endif
 
 			for (i = 0; i < patch_info->data.table->table_size; i++) {
 				/* Might be NULL if the switch is eliminated */
@@ -3216,6 +3405,12 @@ mono_postprocess_patches (MonoCompile *cfg)
 			GSList *list;
 			MonoDomain *domain = cfg->domain;
 			unsigned char *ip = cfg->native_code + patch_info->ip.i;
+#if defined(__native_client__) && defined(__native_client_codegen__)
+			/* When this jump target gets evaluated, the method */
+			/* will be installed in the dynamic code section,   */
+			/* not at the location of cfg->native_code.         */
+			ip = nacl_inverse_modify_patch_target (cfg->native_code) + patch_info->ip.i;
+#endif
 
 			mono_domain_lock (domain);
 			if (!domain_jit_info (domain)->jump_target_hash)
@@ -3336,9 +3531,13 @@ mono_save_seq_point_info (MonoCompile *cfg)
 	cfg->seq_point_info = info;
 
 	// FIXME: dynamic methods
-	mono_domain_lock (domain);
-	g_hash_table_insert (domain_jit_info (domain)->seq_points, cfg->method_to_register, info);
-	mono_domain_unlock (domain);
+	if (!cfg->compile_aot) {
+		mono_domain_lock (domain);
+		// FIXME: How can the lookup succeed ?
+		if (!g_hash_table_lookup (domain_jit_info (domain)->seq_points, cfg->method_to_register))
+			g_hash_table_insert (domain_jit_info (domain)->seq_points, cfg->method_to_register, info);
+		mono_domain_unlock (domain);
+	}
 
 	g_ptr_array_free (cfg->seq_points, TRUE);
 	cfg->seq_points = NULL;
@@ -3351,6 +3550,15 @@ mono_codegen (MonoCompile *cfg)
 	int max_epilog_size;
 	guint8 *code;
 
+#if defined(__native_client_codegen__) && defined(__native_client__)
+	void *code_dest;
+
+	/* This keeps patch targets from being transformed during
+	 * ordinary method compilation, for local branches and jumps.
+	 */
+	nacl_allow_target_modification (FALSE);
+#endif
+
 	for (bb = cfg->bb_entry; bb; bb = bb->next_bb) {
 		cfg->spill_count = 0;
 		/* we reuse dfn here */
@@ -3384,6 +3592,7 @@ mono_codegen (MonoCompile *cfg)
 	/* emit code all basic blocks */
 	for (bb = cfg->bb_entry; bb; bb = bb->next_bb) {
 		bb->native_offset = cfg->code_len;
+		bb->real_native_offset = cfg->code_len;
 		//if ((bb == cfg->bb_entry) || !(bb->region == -1 && !bb->dfn))
 			mono_arch_output_basic_block (cfg, bb);
 		bb->native_length = cfg->code_len - bb->native_offset;
@@ -3402,6 +3611,9 @@ mono_codegen (MonoCompile *cfg)
 		}
 	}
 
+#ifdef __native_client_codegen__
+	mono_nacl_fix_patches (cfg->native_code, cfg->patch_info);
+#endif
 	mono_arch_emit_exceptions (cfg);
 
 	max_epilog_size = 0;
@@ -3432,9 +3644,14 @@ mono_codegen (MonoCompile *cfg)
 #endif
 		code = mono_domain_code_reserve (cfg->domain, cfg->code_size + unwindlen);
 	}
+#if defined(__native_client_codegen__) && defined(__native_client__)
+	nacl_allow_target_modification (TRUE);
+#endif
 
 	memcpy (code, cfg->native_code, cfg->code_len);
-#ifdef __native_client_codegen__
+#if defined(__default_codegen__)
+	g_free (cfg->native_code);
+#elif defined(__native_client_codegen__)
 	if (cfg->native_code_alloc) {
 		g_free (cfg->native_code_alloc);
 		cfg->native_code_alloc = 0;
@@ -3442,9 +3659,7 @@ mono_codegen (MonoCompile *cfg)
 	else if (cfg->native_code) {
 		g_free (cfg->native_code);
 	}
-#else
-	g_free (cfg->native_code);
-#endif
+#endif /* __native_client_codegen__ */
 	cfg->native_code = code;
 	code = cfg->native_code + cfg->code_len;
   
@@ -3482,8 +3697,18 @@ if (valgrind_register){
 #ifdef MONO_ARCH_HAVE_SAVE_UNWIND_INFO
 	mono_arch_save_unwind_info (cfg);
 #endif
-	
-#ifdef __native_client_codegen__
+
+#if defined(__native_client_codegen__) && defined(__native_client__)
+	if (!cfg->compile_aot) {
+		if (cfg->method->dynamic) {
+			code_dest = nacl_code_manager_get_code_dest(cfg->dynamic_info->code_mp, cfg->native_code);
+		} else {
+			code_dest = nacl_domain_get_code_dest(cfg->domain, cfg->native_code);
+		}
+	}
+#endif
+
+#if defined(__native_client_codegen__)
 	mono_nacl_fix_patches (cfg->native_code, cfg->patch_info);
 #endif
 
@@ -3494,6 +3719,9 @@ if (valgrind_register){
 	} else {
 		mono_domain_code_commit (cfg->domain, cfg->native_code, cfg->code_size, cfg->code_len);
 	}
+#if defined(__native_client_codegen__) && defined(__native_client__)
+	cfg->native_code = code_dest;
+#endif
 	mono_profiler_code_buffer_new (cfg->native_code, cfg->code_len, MONO_PROFILER_CODE_BUFFER_METHOD, cfg->method);
 	
 	mono_arch_flush_icache (cfg->native_code, cfg->code_len);
@@ -3517,6 +3745,20 @@ compute_reachable (MonoBasicBlock *bb)
 	}
 }
 
+static void
+mono_handle_out_of_line_bblock (MonoCompile *cfg)
+{
+	MonoBasicBlock *bb;
+	for (bb = cfg->bb_entry; bb; bb = bb->next_bb) {
+		if (bb->next_bb && bb->next_bb->out_of_line && bb->last_ins && !MONO_IS_BRANCH_OP (bb->last_ins)) {
+			MonoInst *ins;
+			MONO_INST_NEW (cfg, ins, OP_BR);
+			MONO_ADD_INS (bb, ins);
+			ins->inst_target_bb = bb->next_bb;
+		}
+	}
+}
+
 static MonoJitInfo*
 create_jit_info (MonoCompile *cfg, MonoMethod *method_to_compile)
 {
@@ -3695,9 +3937,8 @@ create_jit_info (MonoCompile *cfg, MonoMethod *method_to_compile)
 				/*
 				 * Extend the try block backwards to include parts of the previous call
 				 * instruction.
-				 * FIXME: This is arch specific.
 				 */
-				ei->try_start = (guint8*)ei->try_start - 1;
+				ei->try_start = (guint8*)ei->try_start - MONO_ARCH_MONITOR_ENTER_ADJUSTMENT;
 			}
 			tblock = cfg->cil_offset_to_bb [ec->try_offset + ec->try_len];
 			g_assert (tblock);
@@ -3878,7 +4119,7 @@ mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, gbool
 		mono_profiler_method_jit (method);
 	if (MONO_PROBE_METHOD_COMPILE_BEGIN_ENABLED ())
 		MONO_PROBE_METHOD_COMPILE_BEGIN (method);
- 
+
 	if (compile_aot)
 		/* 
 		 * We might get passed the original generic method definition or
@@ -4073,12 +4314,14 @@ mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, gbool
 	cfg->intvars = mono_mempool_alloc0 (cfg->mempool, sizeof (guint16) * STACK_MAX * header->max_stack);
 
 	if (cfg->verbose_level > 0) {
+		char *method_name;
 		if (COMPILE_LLVM (cfg))
-			g_print ("converting llvm method %s\n", mono_method_full_name (method, TRUE));
+			g_print ("converting llvm method %s\n", method_name = mono_method_full_name (method, TRUE));
 		else if (cfg->generic_sharing_context)
-			g_print ("converting shared method %s\n", mono_method_full_name (method_to_compile, TRUE));
+			g_print ("converting shared method %s\n", method_name = mono_method_full_name (method_to_compile, TRUE));
 		else
-			g_print ("converting method %s\n", mono_method_full_name (method, TRUE));
+			g_print ("converting method %s\n", method_name = mono_method_full_name (method, TRUE));
+		g_free (method_name);
 	}
 
 	if (cfg->opt & (MONO_OPT_ABCREM | MONO_OPT_SSAPRE))
@@ -4147,8 +4390,11 @@ mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, gbool
 	//cfg->enable_extended_bblocks = TRUE;
 
 	/*We must verify the method before doing any IR generation as mono_compile_create_vars can assert.*/
-	if (mono_compile_is_broken (cfg))
+	if (mono_compile_is_broken (cfg, cfg->method, TRUE)) {
+		if (mini_get_debug_options ()->break_on_unverified)
+			G_BREAKPOINT ();
 		return cfg;
+	}
 
 	/*
 	 * create MonoInst* which represents arguments and local variables
@@ -4222,6 +4468,8 @@ mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, gbool
 	 */
 	mono_liveness_handle_exception_clauses (cfg);
 
+	mono_handle_out_of_line_bblock (cfg);
+
 	/*g_print ("numblocks = %d\n", cfg->num_bblocks);*/
 
 	if (!COMPILE_LLVM (cfg))
@@ -4588,12 +4836,6 @@ mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, gbool
 	else
 		InterlockedIncrement (&mono_jit_stats.methods_without_llvm);
 
-	if (cfg->verbose_level >= 2) {
-		char *id =  mono_method_full_name (cfg->method, FALSE);
-		mono_disassemble_code (cfg, cfg->native_code, cfg->code_len, id + 3);
-		g_free (id);
-	}
-
 	cfg->jit_info = create_jit_info (cfg, method_to_compile);
 
 #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS
@@ -4604,12 +4846,19 @@ mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, gbool
 	}
 #endif
 
-	mono_save_xdebug_info (cfg);
+	if (!cfg->compile_aot)
+		mono_save_xdebug_info (cfg);
 
 	mini_gc_create_gc_map (cfg);
  
 	mono_save_seq_point_info (cfg);
 
+	if (cfg->verbose_level >= 2) {
+		char *id =  mono_method_full_name (cfg->method, FALSE);
+		mono_disassemble_code (cfg, cfg->native_code, cfg->code_len, id + 3);
+		g_free (id);
+	}
+
 	if (!cfg->compile_aot) {
 		mono_domain_lock (cfg->domain);
 		mono_jit_info_table_add (cfg->domain, cfg->jit_info);
@@ -4739,6 +4988,13 @@ mono_emit_jit_map (MonoJitInfo *jinfo)
 		g_free (name);
 	}
 }
+
+gboolean
+mono_jit_map_is_enabled (void)
+{
+	return perf_map_file != NULL;
+}
+
 #endif
 
 static gpointer
@@ -4750,6 +5006,8 @@ mono_jit_compile_method_inner (MonoMethod *method, MonoDomain *target_domain, in
 	MonoVTable *vtable;
 	MonoException *ex = NULL;
 	guint32 prof_options;
+	GTimer *jit_timer;
+	MonoMethod *prof_method;
 
 #ifdef MONO_USE_AOT_COMPILER
 	if (opt & MONO_OPT_AOT) {
@@ -4785,7 +5043,13 @@ mono_jit_compile_method_inner (MonoMethod *method, MonoDomain *target_domain, in
 				mono_lookup_pinvoke_call (method, NULL, NULL);
 		}
 		nm = mono_marshal_get_native_wrapper (method, check_for_pending_exc, FALSE);
-		return mono_get_addr_from_ftnptr (mono_compile_method (nm));
+		code = mono_get_addr_from_ftnptr (mono_compile_method (nm));
+		jinfo = mono_jit_info_table_find (target_domain, code);
+		if (!jinfo)
+			jinfo = mono_jit_info_table_find (mono_domain_get (), code);
+		if (jinfo)
+			mono_profiler_method_end_jit (method, jinfo, MONO_PROFILE_OK);
+		return code;
 
 		//if (mono_debug_format != MONO_DEBUG_FORMAT_NONE) 
 		//mono_debug_add_wrapper (method, nm);
@@ -4844,7 +5108,14 @@ mono_jit_compile_method_inner (MonoMethod *method, MonoDomain *target_domain, in
 		return NULL;
 	}
 
+	jit_timer = g_timer_new ();
+
 	cfg = mini_method_compile (method, opt, target_domain, TRUE, FALSE, 0);
+	prof_method = cfg->method;
+
+	g_timer_stop (jit_timer);
+	mono_jit_stats.jit_time += g_timer_elapsed (jit_timer, NULL);
+	g_timer_destroy (jit_timer);
 
 	switch (cfg->exception_type) {
 	case MONO_EXCEPTION_NONE:
@@ -4911,6 +5182,9 @@ mono_jit_compile_method_inner (MonoMethod *method, MonoDomain *target_domain, in
 		ex = exp;
 		break;
 	}
+	case MONO_EXCEPTION_OUT_OF_MEMORY:
+		ex = mono_domain_get ()->out_of_memory_ex;
+		break;
 	default:
 		g_assert_not_reached ();
 	}
@@ -4996,8 +5270,10 @@ mono_jit_compile_method_inner (MonoMethod *method, MonoDomain *target_domain, in
 				/* The profiler doesn't know about wrappers, so pass the original icall method */
 				mono_profiler_method_end_jit (mono_marshal_method_from_wrapper (method), jinfo, MONO_PROFILE_OK);
 			}
-		} else {
-			mono_profiler_method_end_jit (method, jinfo, MONO_PROFILE_OK);
+		}
+		mono_profiler_method_end_jit (method, jinfo, MONO_PROFILE_OK);
+		if (prof_method != method) {
+			mono_profiler_method_end_jit (prof_method, jinfo, MONO_PROFILE_OK);
 		}
 	}
 
@@ -5437,7 +5713,11 @@ SIG_HANDLER_SIGNATURE (mono_sigfpe_signal_handler)
 
 #if defined(MONO_ARCH_HAVE_IS_INT_OVERFLOW)
 	if (mono_arch_is_int_overflow (ctx, info))
-		exc = mono_get_exception_arithmetic ();
+		/*
+		 * The spec says this throws ArithmeticException, but MS throws the derived
+		 * OverflowException.
+		 */
+		exc = mono_get_exception_overflow ();
 	else
 		exc = mono_get_exception_divide_by_zero ();
 #else
@@ -5474,6 +5754,7 @@ SIG_HANDLER_SIGNATURE (mono_sigsegv_signal_handler)
 {
 	MonoJitInfo *ji;
 	MonoJitTlsData *jit_tls = TlsGetValue (mono_jit_tls_id);
+	gpointer fault_addr = NULL;
 
 	GET_CONTEXT;
 
@@ -5488,6 +5769,7 @@ SIG_HANDLER_SIGNATURE (mono_sigsegv_signal_handler)
 #endif
 
 #if !defined(HOST_WIN32) && defined(HAVE_SIG_INFO)
+	fault_addr = info->si_addr;
 	if (mono_aot_is_pagefault (info->si_addr)) {
 		mono_aot_handle_pagefault (info->si_addr);
 		return;
@@ -5507,11 +5789,23 @@ SIG_HANDLER_SIGNATURE (mono_sigsegv_signal_handler)
 	if (mono_handle_soft_stack_ovf (jit_tls, ji, ctx, (guint8*)info->si_addr))
 		return;
 
+#ifdef MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX
+	/* info->si_addr seems to be NULL on some kernels when handling stack overflows */
+	fault_addr = info->si_addr;
+	if (fault_addr == NULL) {
+		MonoContext mctx;
+
+		mono_arch_sigctx_to_monoctx (ctx, &mctx);
+
+		fault_addr = MONO_CONTEXT_GET_SP (&mctx);
+	}
+#endif
+
 	/* The hard-guard page has been hit: there is not much we can do anymore
 	 * Print a hopefully clear message and abort.
 	 */
 	if (jit_tls->stack_size && 
-			ABS ((guint8*)info->si_addr - ((guint8*)jit_tls->end_of_stack - jit_tls->stack_size)) < 32768) {
+		ABS ((guint8*)fault_addr - ((guint8*)jit_tls->end_of_stack - jit_tls->stack_size)) < 8192 * sizeof (gpointer)) {
 		const char *method;
 		/* we don't do much now, but we can warn the user with a useful message */
 		fprintf (stderr, "Stack overflow: IP: %p, fault addr: %p\n", mono_arch_ip_from_context (ctx), (gpointer)info->si_addr);
@@ -5724,6 +6018,7 @@ register_jit_stats (void)
 	mono_counters_register ("Methods from AOT", MONO_COUNTER_JIT | MONO_COUNTER_WORD, &mono_jit_stats.methods_aot);
 	mono_counters_register ("Methods JITted using LLVM", MONO_COUNTER_JIT | MONO_COUNTER_INT, &mono_jit_stats.methods_with_llvm);	
 	mono_counters_register ("Methods JITted using mono JIT", MONO_COUNTER_JIT | MONO_COUNTER_INT, &mono_jit_stats.methods_without_llvm);
+	mono_counters_register ("Total time spent JITting (sec)", MONO_COUNTER_JIT | MONO_COUNTER_DOUBLE, &mono_jit_stats.jit_time);
 }
 
 static void runtime_invoke_info_free (gpointer value);
@@ -5865,6 +6160,9 @@ mini_init (const char *filename, const char *runtime_version)
 #endif
 
 	mono_install_callbacks (&callbacks);
+
+	if (getenv ("MONO_DEBUG") != NULL)
+		mini_parse_debug_options ();
 	
 	mono_arch_cpu_init ();
 
@@ -5874,9 +6172,6 @@ mini_init (const char *filename, const char *runtime_version)
 
 	mini_gc_init ();
 
-	if (getenv ("MONO_DEBUG") != NULL)
-		mini_parse_debug_options ();
-
 	if (getenv ("MONO_XDEBUG")) {
 		char *xdebug_opts = getenv ("MONO_XDEBUG");
 		mono_xdebug_init (xdebug_opts);
@@ -5981,6 +6276,9 @@ mini_init (const char *filename, const char *runtime_version)
 
 	mono_icall_init ();
 
+	/* This should come after mono_init () too */
+	mini_gc_init ();
+
 	mono_add_internal_call ("System.Diagnostics.StackFrame::get_frame_info", 
 				ves_icall_get_frame_info);
 	mono_add_internal_call ("System.Diagnostics.StackTrace::get_trace", 
@@ -5994,8 +6292,7 @@ mini_init (const char *filename, const char *runtime_version)
 	mono_add_internal_call ("Mono.Runtime::mono_runtime_install_handlers", 
 				mono_runtime_install_handlers);
 
-
-	create_helper_signature ();
+	mono_create_helper_signatures ();
 
 	register_jit_stats ();
 
@@ -6023,6 +6320,9 @@ mini_init (const char *filename, const char *runtime_version)
 	register_icall (mono_load_remote_field_new, "mono_load_remote_field_new", "object object ptr ptr", FALSE);
 	register_icall (mono_store_remote_field_new, "mono_store_remote_field_new", "void object ptr ptr object", FALSE);
 
+#if defined(__native_client__) || defined(__native_client_codegen__)
+	register_icall (mono_nacl_gc, "mono_nacl_gc", "void", TRUE);
+#endif
 	/* 
 	 * NOTE, NOTE, NOTE, NOTE:
 	 * when adding emulation for some opcodes, remember to also add a dummy
@@ -6093,7 +6393,11 @@ mini_init (const char *filename, const char *runtime_version)
 	mono_register_opcode_emulation (OP_LCONV_TO_R_UN, "__emul_lconv_to_r8_un", "double long", mono_lconv_to_r8_un, FALSE);
 #endif
 #ifdef MONO_ARCH_EMULATE_FREM
+#if defined(__default_codegen__)
 	mono_register_opcode_emulation (OP_FREM, "__emul_frem", "double double double", fmod, FALSE);
+#elif defined(__native_client_codegen__)
+	mono_register_opcode_emulation (OP_FREM, "__emul_frem", "double double double", mono_fmod, FALSE);
+#endif
 #endif
 
 #ifdef MONO_ARCH_SOFT_FLOAT
@@ -6182,6 +6486,9 @@ mini_init (const char *filename, const char *runtime_version)
 
 	register_icall (mono_gc_wbarrier_value_copy_bitmap, "mono_gc_wbarrier_value_copy_bitmap", "void ptr ptr int int", FALSE);
 
+	register_icall (mono_object_castclass_with_cache, "mono_object_castclass_with_cache", "object object ptr ptr", FALSE);
+	register_icall (mono_object_isinst_with_cache, "mono_object_isinst_with_cache", "object object ptr ptr", FALSE);
+
 #endif
 
 	mono_generic_sharing_init ();
@@ -6324,6 +6631,8 @@ mini_cleanup (MonoDomain *domain)
 	mono_runtime_cleanup (domain);
 #endif
 
+	free_jit_tls_data (TlsGetValue (mono_jit_tls_id));
+
 	mono_icall_cleanup ();
 
 	mono_runtime_cleanup_handlers ();
@@ -6472,4 +6781,10 @@ mono_cfg_add_try_hole (MonoCompile *cfg, MonoExceptionClause *clause, guint8 *st
 	cfg->try_block_holes = g_slist_append_mempool (cfg->mempool, cfg->try_block_holes, hole);
 }
 
+void
+mono_cfg_set_exception (MonoCompile *cfg, int type)
+{
+	cfg->exception_type = type;
+}
+
 #endif
diff --git a/mono/mini/mini.h b/mono/mini/mini.h
index c9e9d5c..f0f9709 100644
--- a/mono/mini/mini.h
+++ b/mono/mini/mini.h
@@ -48,6 +48,11 @@ typedef gint64 mgreg_t;
 #define G_MININT32 (-G_MAXINT32 - 1)
 #endif
 
+#ifndef __GNUC__
+/*#define __alignof__(a) sizeof(a)*/
+#define __alignof__(type) G_STRUCT_OFFSET(struct { char c; type x; }, x)
+#endif
+
 #if DISABLE_LOGGING
 #define MINI_DEBUG(level,limit,code)
 #else
@@ -111,7 +116,7 @@ typedef gint64 mgreg_t;
 #endif
 
 /* Version number of the AOT file format */
-#define MONO_AOT_FILE_VERSION "69"
+#define MONO_AOT_FILE_VERSION 75
 
 //TODO: This is x86/amd64 specific.
 #define mono_simd_shuffle_mask(a,b,c,d) ((a) | ((b) << 2) | ((c) << 4) | ((d) << 6))
@@ -142,25 +147,88 @@ typedef enum {
 
 typedef enum {
 	MONO_AOT_FILE_FLAG_WITH_LLVM = 1,
-	MONO_AOT_FILE_FLAG_FULL_AOT = 2
+	MONO_AOT_FILE_FLAG_FULL_AOT = 2,
+	MONO_AOT_FILE_FLAG_DEBUG = 4
 } MonoAotFileFlags;
 
 /* This structure is stored in the AOT file */
 typedef struct MonoAotFileInfo
 {
+	/* The version number of the AOT file format, should match MONO_AOT_FILE_VERSION */
+	guint32 version;
+	/* For alignment */
+	guint32 dummy;
+
+	/* All the pointers should be at the start to avoid alignment problems */
+
+	/* Mono's Global Offset Table */
+	gpointer got;
+	/* Compiled code for methods */
+	gpointer methods;
+	/* Mono EH Frame created by llc when using LLVM */
+	gpointer mono_eh_frame;
+	/* Data blob */
+	gpointer blob;
+	gpointer class_name_table;
+	gpointer class_info_offsets;
+	gpointer method_info_offsets;
+	gpointer ex_info_offsets;
+	gpointer code_offsets;
+	gpointer extra_method_info_offsets;
+	gpointer extra_method_table;
+	gpointer got_info_offsets;
+	gpointer methods_end;
+	gpointer unwind_info;
+	gpointer mem_end;
+	gpointer image_table;
+	/* Start of Mono's Program Linkage Table */
+	gpointer plt;
+	/* End of Mono's Program Linkage Table */
+	gpointer plt_end;
+	/* The GUID of the assembly which the AOT image was generated from */
+	gpointer assembly_guid;
+	/*
+	 * The runtime version string for AOT images generated using 'bind-to-runtime-version',
+	 * NULL otherwise.
+	 */
+	gpointer runtime_version;
+	/* Blocks of various kinds of trampolines */
+	gpointer specific_trampolines;
+	gpointer static_rgctx_trampolines;
+	gpointer imt_thunks;
+	/*
+	 * The end of LLVM generated thumb code, or NULL.
+	 */
+	gpointer thumb_end;
+	/* In static mode, points to a table of global symbols for trampolines etc */
+	gpointer globals;
+	/* Points to a string containing the assembly name*/
+	gpointer assembly_name;
+
+	/* The index of the first GOT slot used by the PLT */
 	guint32 plt_got_offset_base;
+	/* Number of entries in the GOT */
 	guint32 got_size;
+	/* Number of entries in the PLT */
 	guint32 plt_size;
+	/* Number of methods */
 	guint32 nmethods;
+	/* A union of MonoAotFileFlags */
 	guint32 flags;
 	/* Optimization flags used to compile the module */
 	guint32 opts;
 	/* Index of the blob entry holding the GC used by this module */
 	gint32 gc_name_index;
 
+	/* Number of trampolines */
 	guint32 num_trampolines [MONO_AOT_TRAMP_NUM];
+	/* The indexes of the first GOT slots used by the trampolines */
 	guint32 trampoline_got_offset_base [MONO_AOT_TRAMP_NUM];
+	/* The size of one trampoline */
 	guint32 trampoline_size [MONO_AOT_TRAMP_NUM];
+
+	/* These are used for sanity checking object layout problems when cross-compiling */
+	guint32 double_align, long_align;
 } MonoAotFileInfo;
 
 /* Per-domain information maintained by the JIT */
@@ -220,14 +288,11 @@ typedef enum {
 typedef struct {
 	StackFrameType type;
 	/* 
-	 * For FRAME_TYPE_MANAGED.
-	 * For FRAME_TYPE_MANAGED_TO_NATIVE, the ji for the method which transitioned to
-	 * native code, if there is one, else NULL.
+	 * For FRAME_TYPE_MANAGED, otherwise NULL.
 	 */
 	MonoJitInfo *ji;
 	/*
-	 * For FRAME_TYPE_MANAGED_TO_NATIVE, it is either the method which transitioned 
-	 * to native code, or the method which was JITted.
+	 * Same as ji->method.
 	 */
 	MonoMethod *method;
 	/*
@@ -240,6 +305,8 @@ typedef struct {
 	int native_offset;
 	int il_offset;
 	gpointer lmf;
+	guint32 unwind_info_len;
+	guint8 *unwind_info;
 } StackFrameInfo;
 
 typedef struct {
@@ -447,6 +514,26 @@ struct MonoSpillInfo {
 };
 
 /*
+ * Information about a call site for the GC map creation code
+ */
+typedef struct {
+	/* The next offset after the call instruction */
+	int pc_offset;
+	/* The basic block containing the call site */
+	MonoBasicBlock *bb;
+	/* 
+	 * The set of variables live at the call site.
+	 * Has length cfg->num_varinfo in bits.
+	 */
+	guint8 *liveness;
+	/*
+	 * List of OP_GC_PARAM_SLOT_LIVENESS_DEF instructions defining the param slots
+	 * used by this call.
+	 */
+	GSList *param_slots;
+} GCCallSite;
+
+/*
  * The IR-level extended basic block.  
  *
  * A basic block can have multiple exits just fine, as long as the point of
@@ -489,7 +576,10 @@ struct MonoBasicBlock {
 
 	/* The offset of the generated code, used for fixups */
 	int native_offset;
+	/* The length of the generated code, doesn't include alignment padding */
 	int native_length;
+	/* The real native offset, which includes alignment padding too */
+	int real_native_offset;
 	int max_offset;
 	int max_length;
 
@@ -553,6 +643,11 @@ struct MonoBasicBlock {
 	GSList *seq_points;
 	MonoInst *last_seq_point;
 
+	GSList *spill_slot_defs;
+
+	/* List of call sites in this bblock sorted by pc_offset */
+	GSList *gc_callsites;
+
 	/*
 	 * The region encodes whether the basic block is inside
 	 * a finally, catch, filter or none of these.
@@ -672,6 +767,7 @@ struct MonoInst {
 		gboolean record_cast_details; /* For CEE_CASTCLASS */
 		MonoInst *spill_var; /* for OP_ICONV_TO_R8_RAW and OP_FCONV_TO_R8_X */
 		guint16 source_opcode; /*OP_XCONV_R8_TO_I4 needs to know which op was used to do proper widening*/
+		int pc_offset; /* OP_GC_LIVERANGE_START/END */
 	} backend;
 	
 	MonoClass *klass;
@@ -739,7 +835,14 @@ enum {
 	/* On loads, the source address can be null */
 	MONO_INST_FAULT = 32,
 	/* On loads, the source address points to a constant value */
-	MONO_INST_CONSTANT_LOAD = 64
+	MONO_INST_CONSTANT_LOAD = 64,
+	/* On variables, the variable needs GC tracking */
+	MONO_INST_GC_TRACK = 128,
+	/*
+	 * Set on instructions during code emission which make calls, i.e. OP_CALL, OP_THROW.
+	 * backend.pc_offset will be set to the pc offset at the end of the native call instructions.
+	 */
+	MONO_INST_GC_CALLSITE = 128
 };
 
 #define inst_c0 data.op[0].const_val
@@ -878,12 +981,34 @@ typedef struct {
 	/* Stores state needed by handler block with a guard */
 	MonoContext     ex_ctx;
 	ResumeState resume_state;
-	/* handle block return address */
+
+	/*Variabled use to implement handler blocks (finally/catch/etc) guards during interruption*/
+	/* handler block return address */
 	gpointer handler_block_return_address;
-	/* handler block been guarded */
+
+	/* handler block been guarded. It's safe to store this even for dynamic methods since there
+	is an activation on stack making sure it will remain alive.*/
 	MonoJitExceptionInfo *handler_block;
+
+	/* context to be used by the guard trampoline when resuming interruption.*/
+	MonoContext handler_block_context;
+	/* 
+	 * Stores the state at the exception throw site to be used by mono_stack_walk ()
+	 * when it is called from profiler functions during exception handling.
+	 */
+	MonoContext orig_ex_ctx;
+	gboolean orig_ex_ctx_set;
 } MonoJitTlsData;
 
+/*
+ * This structure is an extension of MonoLMF and contains extra information.
+ */
+typedef struct {
+	struct MonoLMF lmf;
+	gboolean debugger_invoke;
+	MonoContext ctx; /* if debugger_invoke is TRUE */
+} MonoLMFExt;
+
 typedef enum {
 #define PATCH_INFO(a,b) MONO_PATCH_INFO_ ## a,
 #include "patch-info.h"
@@ -1006,6 +1131,14 @@ enum {
 
 #define vreg_is_volatile(cfg, vreg) (G_UNLIKELY (get_vreg_to_inst ((cfg), (vreg)) && (get_vreg_to_inst ((cfg), (vreg))->flags & (MONO_INST_VOLATILE|MONO_INST_INDIRECT))))
 
+#ifdef HAVE_SGEN_GC
+#define vreg_is_ref(cfg, vreg) ((vreg) < (cfg)->vreg_is_ref_len ? (cfg)->vreg_is_ref [(vreg)] : 0)
+#define vreg_is_mp(cfg, vreg) ((vreg) < (cfg)->vreg_is_mp_len ? (cfg)->vreg_is_mp [(vreg)] : 0)
+#else
+#define vreg_is_ref(cfg, vreg) FALSE
+#define vreg_is_mp(cfg, vreg) FALSE
+#endif
+
 /*
  * Control Flow Graph and compilation unit information
  */
@@ -1034,7 +1167,6 @@ typedef struct {
 	gint             stack_offset;
 	gint             max_ireg;
 	gint             cil_offset_to_bb_len;
-	gint             locals_min_stack_offset, locals_max_stack_offset;
 	MonoRegState    *rs;
 	MonoSpillInfo   *spill_info [16]; /* machine register spills */
 	gint             spill_count;
@@ -1141,6 +1273,7 @@ typedef struct {
 	guint            keep_cil_nops : 1;
 	guint            gen_seq_points : 1;
 	guint            explicit_null_checks : 1;
+	guint            compute_gc_maps : 1;
 	gpointer         debug_info;
 	guint32          lmf_offset;
     guint16          *intvars;
@@ -1168,6 +1301,20 @@ typedef struct {
 	/* Size of above array */
 	guint32 vreg_to_inst_len;
 
+	/* Marks vregs which hold a GC ref */
+	/* FIXME: Use a bitmap */
+	gboolean *vreg_is_ref;
+
+	/* Size of above array */
+	guint32 vreg_is_ref_len;
+
+	/* Marks vregs which hold a managed pointer */
+	/* FIXME: Use a bitmap */
+	gboolean *vreg_is_mp;
+
+	/* Size of above array */
+	guint32 vreg_is_mp_len;
+
 	/* 
 	 * The original method to compile, differs from 'method' when doing generic
 	 * sharing.
@@ -1216,12 +1363,31 @@ typedef struct {
 	guint32 got_offset, ex_info_offset, method_info_offset;
 	/* Symbol used to refer to this method in generated assembly */
 	char *asm_symbol;
+	char *llvm_method_name;
 
 	MonoJitExceptionInfo *llvm_ex_info;
 	guint32 llvm_ex_info_len;
 	int llvm_this_reg, llvm_this_offset;
 
 	GSList *try_block_holes;
+
+	/* GC Maps */
+   
+	/* The offsets of the locals area relative to the frame pointer */
+	gint locals_min_stack_offset, locals_max_stack_offset;
+
+	/* The final CFA rule at the end of the prolog */
+	int cfa_reg, cfa_offset;
+
+	/* Points to a MonoCompileGC */
+	gpointer gc_info;
+
+	/*
+	 * The encoded GC map along with its size. This contains binary data so it can be saved in an AOT
+	 * image etc, but it requires a 4 byte alignment.
+	 */
+	guint8 *gc_map;
+	guint32 gc_map_size;
 } MonoCompile;
 
 typedef enum {
@@ -1264,6 +1430,7 @@ typedef struct {
 	int methods_without_llvm;
 	char *max_ratio_method;
 	char *biggest_method;
+	double jit_time;
 	gboolean enabled;
 } MonoJitStats;
 
@@ -1335,7 +1502,7 @@ enum {
 #endif
 
 /* Opcodes to load/store regsize quantities */
-#ifdef __mono_ilp32__
+#if defined (__mono_ilp32__)
 #define OP_LOADR_MEMBASE OP_LOADI8_MEMBASE
 #define OP_STORER_MEMBASE_REG OP_STOREI8_MEMBASE_REG
 #else
@@ -1459,6 +1626,7 @@ enum {
 	MONO_EXC_INVALID_CAST,
 	MONO_EXC_NULL_REF,
 	MONO_EXC_ARRAY_TYPE_MISMATCH,
+	MONO_EXC_ARGUMENT,
 	MONO_EXC_INTRINS_NUM
 };
 
@@ -1533,6 +1701,11 @@ guint32   mono_alloc_ireg                   (MonoCompile *cfg) MONO_LLVM_INTERNA
 guint32   mono_alloc_freg                   (MonoCompile *cfg) MONO_LLVM_INTERNAL;
 guint32   mono_alloc_preg                   (MonoCompile *cfg) MONO_LLVM_INTERNAL;
 guint32   mono_alloc_dreg                   (MonoCompile *cfg, MonoStackType stack_type) MONO_INTERNAL;
+guint32   mono_alloc_ireg_ref               (MonoCompile *cfg) MONO_LLVM_INTERNAL;
+guint32   mono_alloc_ireg_mp                (MonoCompile *cfg) MONO_LLVM_INTERNAL;
+guint32   mono_alloc_ireg_copy              (MonoCompile *cfg, guint32 vreg) MONO_LLVM_INTERNAL;
+void      mono_mark_vreg_as_ref             (MonoCompile *cfg, int vreg) MONO_INTERNAL;
+void      mono_mark_vreg_as_mp              (MonoCompile *cfg, int vreg) MONO_INTERNAL;
 
 void      mono_link_bblock                  (MonoCompile *cfg, MonoBasicBlock *from, MonoBasicBlock* to) MONO_INTERNAL;
 void      mono_unlink_bblock                (MonoCompile *cfg, MonoBasicBlock *from, MonoBasicBlock* to) MONO_INTERNAL;
@@ -1559,7 +1732,7 @@ guint     mono_type_to_store_membase        (MonoCompile *cfg, MonoType *type) M
 guint     mini_type_to_stind                (MonoCompile* cfg, MonoType *type) MONO_INTERNAL;
 guint32   mono_reverse_branch_op            (guint32 opcode) MONO_INTERNAL;
 void      mono_disassemble_code             (MonoCompile *cfg, guint8 *code, int size, char *id) MONO_INTERNAL;
-void      mono_add_patch_info               (MonoCompile *cfg, int ip, MonoJumpInfoType type, gconstpointer target) MONO_INTERNAL;
+void      mono_add_patch_info               (MonoCompile *cfg, int ip, MonoJumpInfoType type, gconstpointer target) MONO_LLVM_INTERNAL;
 void      mono_remove_patch_info            (MonoCompile *cfg, int ip) MONO_INTERNAL;
 MonoJumpInfo* mono_patch_info_dup_mp        (MonoMemPool *mp, MonoJumpInfo *patch_info) MONO_INTERNAL;
 guint     mono_patch_info_hash (gconstpointer data) MONO_INTERNAL;
@@ -1583,6 +1756,7 @@ MonoInst* mono_get_thread_intrinsic         (MonoCompile* cfg) MONO_INTERNAL;
 GList    *mono_varlist_insert_sorted        (MonoCompile *cfg, GList *list, MonoMethodVar *mv, int sort_type) MONO_INTERNAL;
 GList    *mono_varlist_sort                 (MonoCompile *cfg, GList *list, int sort_type) MONO_INTERNAL;
 void      mono_analyze_liveness             (MonoCompile *cfg) MONO_INTERNAL;
+void      mono_analyze_liveness_gc          (MonoCompile *cfg) MONO_INTERNAL;
 void      mono_linear_scan                  (MonoCompile *cfg, GList *vars, GList *regs, regmask_t *used_mask) MONO_INTERNAL;
 void      mono_global_regalloc              (MonoCompile *cfg) MONO_INTERNAL;
 void      mono_create_jump_table            (MonoCompile *cfg, MonoInst *label, MonoBasicBlock **bbs, int num_blocks) MONO_INTERNAL;
@@ -1593,12 +1767,12 @@ MonoJitICallInfo *mono_find_jit_opcode_emulation (int opcode) MONO_INTERNAL;
 void	  mono_print_ins_index (int i, MonoInst *ins) MONO_INTERNAL;
 void	  mono_print_ins (MonoInst *ins) MONO_INTERNAL;
 gboolean  mini_assembly_can_skip_verification (MonoDomain *domain, MonoMethod *method) MONO_INTERNAL;
-gboolean  mini_method_verify (MonoCompile *cfg, MonoMethod *method) MONO_INTERNAL;
+gboolean mono_compile_is_broken (MonoCompile *cfg, MonoMethod *method, gboolean fail_compile) MONO_INTERNAL;
 MonoInst *mono_get_got_var (MonoCompile *cfg) MONO_INTERNAL;
 void      mono_add_seq_point (MonoCompile *cfg, MonoBasicBlock *bb, MonoInst *ins, int native_offset) MONO_INTERNAL;
 MonoInst* mono_emit_jit_icall (MonoCompile *cfg, gconstpointer func, MonoInst **args) MONO_INTERNAL;
 MonoInst* mono_emit_method_call (MonoCompile *cfg, MonoMethod *method, MonoInst **args, MonoInst *this) MONO_INTERNAL;
-
+void      mono_create_helper_signatures (void) MONO_INTERNAL;
 
 gboolean  mini_class_is_system_array (MonoClass *klass) MONO_INTERNAL;
 MonoMethodSignature *mono_get_element_address_signature (int arity) MONO_INTERNAL;
@@ -1614,6 +1788,7 @@ void      mono_linterval_split              (MonoCompile *cfg, MonoLiveInterval
 void      mono_liveness_handle_exception_clauses (MonoCompile *cfg) MONO_INTERNAL;
 
 /* Native Client functions */
+gpointer mono_realloc_native_code(MonoCompile *cfg);
 #ifdef __native_client_codegen__
 void mono_nacl_align_inst(guint8 **pcode, int instlen);
 void mono_nacl_align_call(guint8 **start, guint8 **pcode);
@@ -1624,6 +1799,18 @@ void mono_nacl_fix_patches(const guint8 *code, MonoJumpInfo *ji);
 guint8 *mono_arch_nacl_pad(guint8 *code, int pad);
 guint8 *mono_arch_nacl_skip_nops(guint8 *code);
 
+extern const guint kNaClAlignment;
+extern const guint kNaClAlignmentMask;
+#endif
+
+#if defined(__native_client__) || defined(__native_client_codegen__)
+void mono_nacl_gc();
+#endif
+
+#if defined(__native_client_codegen__) || defined(__native_client__)
+#define NACL_SIZE(a, b) (b)
+#else
+#define NACL_SIZE(a, b) (a)
 #endif
 
 /* AOT */
@@ -1654,7 +1841,6 @@ MonoMethod* mono_aot_get_array_helper_from_wrapper (MonoMethod *method) MONO_INT
 guint32  mono_aot_get_got_offset            (MonoJumpInfo *ji) MONO_LLVM_INTERNAL;
 char*    mono_aot_get_method_name           (MonoCompile *cfg) MONO_LLVM_INTERNAL;
 char*    mono_aot_get_plt_symbol            (MonoJumpInfoType type, gconstpointer data) MONO_LLVM_INTERNAL;
-char*    mono_aot_get_method_debug_name     (MonoCompile *cfg) MONO_LLVM_INTERNAL;
 MonoJumpInfo* mono_aot_patch_info_dup       (MonoJumpInfo* ji) MONO_LLVM_INTERNAL;
 void     mono_aot_set_make_unreadable       (gboolean unreadable) MONO_INTERNAL;
 gboolean mono_aot_is_pagefault              (void *ptr) MONO_INTERNAL;
@@ -1670,7 +1856,7 @@ void     mono_xdebug_init                   (char *xdebug_opts) MONO_INTERNAL;
 void     mono_save_xdebug_info              (MonoCompile *cfg) MONO_INTERNAL;
 void     mono_save_trampoline_xdebug_info   (MonoTrampInfo *info) MONO_INTERNAL;
 /* This is an exported function */
-void     mono_xdebug_flush                  (void) MONO_INTERNAL;
+void     mono_xdebug_flush                  (void);
 
 /* LLVM backend */
 void     mono_llvm_init                     (void) MONO_LLVM_INTERNAL;
@@ -1733,6 +1919,9 @@ char*             mono_get_rgctx_fetch_trampoline_name (int slot) MONO_INTERNAL;
 
 gboolean          mono_running_on_valgrind (void) MONO_INTERNAL;
 void*             mono_global_codeman_reserve (int size) MONO_INTERNAL;
+void*             nacl_global_codeman_get_dest(void *data) MONO_INTERNAL;
+void              mono_global_codeman_commit(void *data, int size, int newsize) MONO_INTERNAL;
+void              nacl_global_codeman_validate(guint8 **buf_base, int buf_size, guint8 **code_end) MONO_INTERNAL;
 const char       *mono_regname_full (int reg, int bank) MONO_INTERNAL;
 gint32*           mono_allocate_stack_slots_full (MonoCompile *cfg, gboolean backward, guint32 *stack_size, guint32 *stack_align) MONO_INTERNAL;
 gint32*           mono_allocate_stack_slots (MonoCompile *cfg, guint32 *stack_size, guint32 *stack_align) MONO_INTERNAL;
@@ -1827,6 +2016,7 @@ LLVMCallInfo* mono_arch_get_llvm_call_info      (MonoCompile *cfg, MonoMethodSig
 guint8*   mono_arch_emit_load_got_addr          (guint8 *start, guint8 *code, MonoCompile *cfg, MonoJumpInfo **ji) MONO_INTERNAL;
 guint8*   mono_arch_emit_load_aotconst          (guint8 *start, guint8 *code, MonoJumpInfo **ji, int tramp_type, gconstpointer target) MONO_INTERNAL;
 GSList*   mono_arch_get_cie_program             (void) MONO_INTERNAL;
+void      mono_arch_set_target                  (char *mtriple) MONO_INTERNAL;
 
 /* Soft Debug support */
 #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED
@@ -1841,21 +2031,15 @@ guint8*   mono_arch_get_ip_for_breakpoint       (MonoJitInfo *ji, MonoContext *c
 void     mono_arch_skip_breakpoint              (MonoContext *ctx) MONO_INTERNAL;
 void     mono_arch_skip_single_step             (MonoContext *ctx) MONO_INTERNAL;
 gpointer mono_arch_get_seq_point_info           (MonoDomain *domain, guint8 *code) MONO_INTERNAL;
+void     mono_arch_setup_resume_sighandler_ctx  (MonoContext *ctx, gpointer func) MONO_INTERNAL;
 #endif
 
-MonoJitInfo *mono_arch_find_jit_info            (MonoDomain *domain, 
-						 MonoJitTlsData *jit_tls, 
-						 MonoJitInfo *res, 
-						 MonoJitInfo *prev_ji, 
-						 MonoContext *ctx, 
-						 MonoContext *new_ctx, 
-						 MonoLMF **lmf, 
-						 gboolean *managed) MONO_INTERNAL;
 gboolean
-mono_arch_find_jit_info_ext (MonoDomain *domain, MonoJitTlsData *jit_tls, 
-							 MonoJitInfo *ji, MonoContext *ctx, 
-							 MonoContext *new_ctx, MonoLMF **lmf, 
-							 StackFrameInfo *frame_info) MONO_INTERNAL;
+mono_arch_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls, 
+						 MonoJitInfo *ji, MonoContext *ctx, 
+						 MonoContext *new_ctx, MonoLMF **lmf,
+						 mgreg_t **save_locations,
+						 StackFrameInfo *frame_info) MONO_INTERNAL;
 gpointer  mono_arch_get_throw_exception_by_name (void) MONO_INTERNAL;
 gpointer mono_arch_get_call_filter              (MonoTrampInfo **info, gboolean aot) MONO_INTERNAL;
 gpointer mono_arch_get_restore_context          (MonoTrampInfo **info, gboolean aot) MONO_INTERNAL;
@@ -1880,15 +2064,15 @@ gpointer*mono_arch_get_delegate_method_ptr_addr (guint8* code, mgreg_t *regs) MO
 void     mono_arch_create_vars                  (MonoCompile *cfg) MONO_INTERNAL;
 void     mono_arch_save_unwind_info             (MonoCompile *cfg) MONO_INTERNAL;
 void     mono_arch_register_lowlevel_calls      (void) MONO_INTERNAL;
-gpointer mono_arch_get_unbox_trampoline         (MonoGenericSharingContext *gsctx, MonoMethod *m, gpointer addr) MONO_INTERNAL;
+gpointer mono_arch_get_unbox_trampoline         (MonoMethod *m, gpointer addr) MONO_INTERNAL;
 gpointer mono_arch_get_static_rgctx_trampoline  (MonoMethod *m, MonoMethodRuntimeGenericContext *mrgctx, gpointer addr) MONO_INTERNAL;
 gpointer  mono_arch_get_llvm_imt_trampoline     (MonoDomain *domain, MonoMethod *method, int vt_offset) MONO_INTERNAL;
 void     mono_arch_patch_callsite               (guint8 *method_start, guint8 *code, guint8 *addr) MONO_INTERNAL;
 void     mono_arch_patch_plt_entry              (guint8 *code, gpointer *got, mgreg_t *regs, guint8 *addr) MONO_INTERNAL;
 void     mono_arch_nullify_class_init_trampoline(guint8 *code, mgreg_t *regs) MONO_INTERNAL;
 void     mono_arch_nullify_plt_entry            (guint8 *code, mgreg_t *regs) MONO_INTERNAL;
-int      mono_arch_get_this_arg_reg             (MonoMethodSignature *sig, MonoGenericSharingContext *gsctx, guint8 *code) MONO_INTERNAL;
-gpointer mono_arch_get_this_arg_from_call       (MonoGenericSharingContext *gsctx, MonoMethodSignature *sig, mgreg_t *regs, guint8 *code) MONO_INTERNAL;
+int      mono_arch_get_this_arg_reg             (guint8 *code) MONO_INTERNAL;
+gpointer mono_arch_get_this_arg_from_call       (mgreg_t *regs, guint8 *code) MONO_INTERNAL;
 gpointer mono_arch_get_delegate_invoke_impl     (MonoMethodSignature *sig, gboolean has_target) MONO_INTERNAL;
 gpointer mono_arch_create_specific_trampoline   (gpointer arg1, MonoTrampolineType tramp_type, MonoDomain *domain, guint32 *code_len) MONO_INTERNAL;
 void        mono_arch_emit_imt_argument         (MonoCompile *cfg, MonoCallInst *call, MonoInst *imt_arg) MONO_INTERNAL;
@@ -1908,7 +2092,15 @@ gboolean mono_install_handler_block_guard (MonoInternalThread *thread, MonoConte
 
 /* Exception handling */
 
-/* Same as MonoStackWalk, but pass the context/frame type as well */
+typedef enum {
+	MONO_UNWIND_NONE = 0x0,
+	MONO_UNWIND_LOOKUP_IL_OFFSET = 0x1,
+	MONO_UNWIND_LOOKUP_ACTUAL_METHOD = 0x2,
+	MONO_UNWIND_DEFAULT = MONO_UNWIND_LOOKUP_ACTUAL_METHOD,
+	MONO_UNWIND_SIGNAL_SAFE = MONO_UNWIND_NONE,
+	MONO_UNWIND_LOOKUP_ALL = MONO_UNWIND_LOOKUP_IL_OFFSET | MONO_UNWIND_LOOKUP_ACTUAL_METHOD,
+} MonoUnwindOptions;
+
 typedef gboolean (*MonoJitStackWalk)            (StackFrameInfo *frame, MonoContext *ctx, gpointer data);
 
 void     mono_exceptions_init                   (void) MONO_INTERNAL;
@@ -1918,8 +2110,8 @@ void     mono_handle_native_sigsegv             (int signal, void *sigctx) MONO_
 void     mono_print_thread_dump                 (void *sigctx);
 void     mono_print_thread_dump_from_ctx        (MonoContext *ctx);
 void     mono_jit_walk_stack                    (MonoStackWalk func, gboolean do_il_offset, gpointer user_data) MONO_INTERNAL;
-void     mono_jit_walk_stack_from_ctx           (MonoStackWalk func, MonoContext *ctx, gboolean do_il_offset, gpointer user_data) MONO_INTERNAL;
-void     mono_jit_walk_stack_from_ctx_in_thread (MonoJitStackWalk func, MonoDomain *domain, MonoContext *start_ctx, gboolean do_il_offset, MonoInternalThread *thread, MonoLMF *lmf, gpointer user_data) MONO_INTERNAL;
+void     mono_jit_walk_stack_from_ctx           (MonoStackWalk func, MonoContext *ctx, MonoUnwindOptions unwind_options, gpointer user_data) MONO_INTERNAL;
+void     mono_walk_stack                        (MonoJitStackWalk func, MonoDomain *domain, MonoContext *start_ctx, MonoUnwindOptions unwind_options, MonoInternalThread *thread, MonoLMF *lmf, gpointer user_data) MONO_INTERNAL;
 void     mono_setup_altstack                    (MonoJitTlsData *tls) MONO_INTERNAL;
 void     mono_free_altstack                     (MonoJitTlsData *tls) MONO_INTERNAL;
 gpointer mono_altstack_restore_prot             (mgreg_t *regs, guint8 *code, gpointer *tramp_data, guint8* tramp) MONO_INTERNAL;
@@ -1932,6 +2124,7 @@ gboolean
 mono_find_jit_info_ext (MonoDomain *domain, MonoJitTlsData *jit_tls, 
 						MonoJitInfo *prev_ji, MonoContext *ctx,
 						MonoContext *new_ctx, char **trace, MonoLMF **lmf,
+						mgreg_t **save_locations,
 						StackFrameInfo *frame) MONO_INTERNAL;
 
 gpointer mono_get_throw_exception               (void) MONO_INTERNAL;
@@ -1941,10 +2134,6 @@ gpointer mono_get_restore_context               (void) MONO_INTERNAL;
 gpointer mono_get_throw_exception_by_name       (void) MONO_INTERNAL;
 gpointer mono_get_throw_corlib_exception        (void) MONO_INTERNAL;
 
-/* the new function to do stack walks */
-typedef gboolean (*MonoStackFrameWalk)          (MonoDomain *domain, MonoContext *ctx, MonoJitInfo *ji, gpointer data);
-void      mono_walk_stack                       (MonoDomain *domain, MonoJitTlsData *jit_tls, MonoContext *start_ctx, MonoStackFrameWalk func, gpointer user_data);
-
 MonoArray *ves_icall_get_trace                  (MonoException *exc, gint32 skip, MonoBoolean need_file_info) MONO_INTERNAL;
 MonoBoolean ves_icall_get_frame_info            (gint32 skip, MonoBoolean need_file_info, 
 						 MonoReflectionMethod **method, 
@@ -1973,6 +2162,7 @@ void      mono_debug_init_method                (MonoCompile *cfg, MonoBasicBloc
 						 guint32 breakpoint_id) MONO_INTERNAL;
 void      mono_debug_open_method                (MonoCompile *cfg) MONO_INTERNAL;
 void      mono_debug_close_method               (MonoCompile *cfg) MONO_INTERNAL;
+void      mono_debug_free_method                (MonoCompile *cfg) MONO_INTERNAL;
 void      mono_debug_open_block                 (MonoCompile *cfg, MonoBasicBlock *bb, guint32 address) MONO_INTERNAL;
 void      mono_debug_record_line_number         (MonoCompile *cfg, MonoInst *ins, guint32 address) MONO_INTERNAL;
 void      mono_debug_serialize_debug_info       (MonoCompile *cfg, guint8 **out_buf, guint32 *buf_len) MONO_INTERNAL;
@@ -2104,6 +2294,8 @@ guint mono_type_to_regmove (MonoCompile *cfg, MonoType *type) MONO_INTERNAL;
 
 void mono_cfg_add_try_hole (MonoCompile *cfg, MonoExceptionClause *clause, guint8 *start, MonoBasicBlock *bb) MONO_INTERNAL;
 
+void mono_cfg_set_exception (MonoCompile *cfg, int type) MONO_INTERNAL;
+
 /* wapihandles.c */
 int mini_wapi_hps (int argc, char **argv) MONO_INTERNAL;
 
@@ -2167,10 +2359,12 @@ void        mono_simd_intrinsics_init (void) MONO_INTERNAL;
 void mono_enable_jit_map (void) MONO_INTERNAL;
 void mono_emit_jit_map   (MonoJitInfo *jinfo) MONO_INTERNAL;
 void mono_emit_jit_tramp (void *start, int size, const char *desc) MONO_INTERNAL;
+gboolean mono_jit_map_is_enabled (void) MONO_INTERNAL;
 #else
 #define mono_enable_jit_map()
 #define mono_emit_jit_map(ji)
 #define mono_emit_jit_tramp(s,z,d)
+#define mono_jit_map_is_enabled() (0)
 #endif
 
 /*
@@ -2235,6 +2429,8 @@ enum {
 	MONO_AOT_WRAPPER_MONO_ENTER,
 	MONO_AOT_WRAPPER_MONO_EXIT,
 	MONO_AOT_WRAPPER_ELEMENT_ADDR,
+	MONO_AOT_WRAPPER_PTR_TO_STRUCTURE,
+	MONO_AOT_WRAPPER_STRUCTURE_TO_PTR,
 	MONO_AOT_WRAPPER_LAST
 };
 
diff --git a/mono/mini/objects.cs b/mono/mini/objects.cs
index 6f43b65..1454af7 100644
--- a/mono/mini/objects.cs
+++ b/mono/mini/objects.cs
@@ -1393,6 +1393,8 @@ ncells ) {
 		return array [1].val;
 	}
 
+	/* mcs can't compile this (#646744) */
+#if FALSE
 	static void InitMe (out Gamma noMercyWithTheStack) {
 		noMercyWithTheStack = new Gamma ();
 	}
@@ -1433,6 +1435,7 @@ ncells ) {
 			return 1;
 		return 0;
 	}
+#endif
 
 	struct VTypePhi {
 		public int i;
diff --git a/mono/mini/regalloc.h b/mono/mini/regalloc.h
index 898b1e0..f043ddd 100644
--- a/mono/mini/regalloc.h
+++ b/mono/mini/regalloc.h
@@ -4,14 +4,18 @@ typedef size_t regmask_t;
 enum {
 	MONO_REG_INT,
 	MONO_REG_DOUBLE,
+	/* This is used only for allocating spill slots with GC tracking */
+	MONO_REG_INT_REF,
+	/* Ditto for managed pointers */
+	MONO_REG_INT_MP,
 	MONO_REG_SIMD
 };
 
  
 #ifdef MONO_ARCH_NEED_SIMD_BANK
-#define MONO_NUM_REGBANKS 3
+#define MONO_NUM_REGBANKS 5
 #else
-#define MONO_NUM_REGBANKS 2
+#define MONO_NUM_REGBANKS 4
 #endif
 
 typedef struct {
diff --git a/mono/mini/simd-intrinsics.c b/mono/mini/simd-intrinsics.c
index aaf6a19..d77d23d 100644
--- a/mono/mini/simd-intrinsics.c
+++ b/mono/mini/simd-intrinsics.c
@@ -138,6 +138,9 @@ static const SimdIntrinsc vector4f_intrinsics[] = {
 	{ SN_CompareNotLessThan, OP_COMPPS, SIMD_VERSION_SSE1, SIMD_EMIT_BINARY, SIMD_COMP_NLT },
 	{ SN_CompareOrdered, OP_COMPPS, SIMD_VERSION_SSE1, SIMD_EMIT_BINARY, SIMD_COMP_ORD },
 	{ SN_CompareUnordered, OP_COMPPS, SIMD_VERSION_SSE1, SIMD_EMIT_BINARY, SIMD_COMP_UNORD },
+	{ SN_ConvertToDouble, OP_CVTPS2PD, SIMD_VERSION_SSE2, SIMD_EMIT_UNARY },
+	{ SN_ConvertToInt, OP_CVTPS2DQ, SIMD_VERSION_SSE2, SIMD_EMIT_UNARY },
+	{ SN_ConvertToIntTruncated, OP_CVTTPS2DQ, SIMD_VERSION_SSE2, SIMD_EMIT_UNARY },
 	{ SN_DuplicateHigh, OP_DUPPS_HIGH, SIMD_VERSION_SSE3, SIMD_EMIT_UNARY },
 	{ SN_DuplicateLow, OP_DUPPS_LOW, SIMD_VERSION_SSE3, SIMD_EMIT_UNARY },
 	{ SN_HorizontalAdd, OP_HADDPS, SIMD_VERSION_SSE3, SIMD_EMIT_BINARY },
@@ -189,6 +192,9 @@ static const SimdIntrinsc vector2d_intrinsics[] = {
 	{ SN_CompareNotLessThan, OP_COMPPD, SIMD_VERSION_SSE1, SIMD_EMIT_BINARY, SIMD_COMP_NLT },
 	{ SN_CompareOrdered, OP_COMPPD, SIMD_VERSION_SSE1, SIMD_EMIT_BINARY, SIMD_COMP_ORD },
 	{ SN_CompareUnordered, OP_COMPPD, SIMD_VERSION_SSE1, SIMD_EMIT_BINARY, SIMD_COMP_UNORD },
+	{ SN_ConvertToFloat, OP_CVTPD2PS, SIMD_VERSION_SSE2, SIMD_EMIT_UNARY },
+	{ SN_ConvertToInt, OP_CVTPD2DQ, SIMD_VERSION_SSE2, SIMD_EMIT_UNARY },
+	{ SN_ConvertToIntTruncated, OP_CVTTPD2DQ, SIMD_VERSION_SSE2, SIMD_EMIT_UNARY },
 	{ SN_Duplicate, OP_DUPPD, SIMD_VERSION_SSE3, SIMD_EMIT_UNARY },
 	{ SN_HorizontalAdd, OP_HADDPD, SIMD_VERSION_SSE3, SIMD_EMIT_BINARY },
 	{ SN_HorizontalSub, OP_HSUBPD, SIMD_VERSION_SSE3, SIMD_EMIT_BINARY },	
@@ -201,6 +207,7 @@ static const SimdIntrinsc vector2d_intrinsics[] = {
 	{ SN_PrefetchTemporal1stLevelCache, 0, SIMD_VERSION_SSE1, SIMD_EMIT_PREFETCH, SIMD_PREFETCH_MODE_1 },
 	{ SN_PrefetchTemporal2ndLevelCache, 0, SIMD_VERSION_SSE1, SIMD_EMIT_PREFETCH, SIMD_PREFETCH_MODE_2 },
 	{ SN_PrefetchNonTemporal, 0, SIMD_VERSION_SSE1, SIMD_EMIT_PREFETCH, SIMD_PREFETCH_MODE_NTA },
+	{ SN_Shuffle, OP_SHUFPD, SIMD_VERSION_SSE1, SIMD_EMIT_SHUFFLE },
 	{ SN_Sqrt, OP_SQRTPD, SIMD_VERSION_SSE1, SIMD_EMIT_UNARY },
 	{ SN_StoreAligned, OP_STOREX_ALIGNED_MEMBASE_REG, SIMD_VERSION_SSE1, SIMD_EMIT_STORE },
 	{ SN_get_X, 0, SIMD_VERSION_SSE1, SIMD_EMIT_GETTER_QWORD },
@@ -225,6 +232,7 @@ static const SimdIntrinsc vector2ul_intrinsics[] = {
 	{ SN_PrefetchTemporal1stLevelCache, 0, SIMD_VERSION_SSE1, SIMD_EMIT_PREFETCH, SIMD_PREFETCH_MODE_1 },
 	{ SN_PrefetchTemporal2ndLevelCache, 0, SIMD_VERSION_SSE1, SIMD_EMIT_PREFETCH, SIMD_PREFETCH_MODE_2 },
 	{ SN_PrefetchNonTemporal, 0, SIMD_VERSION_SSE1, SIMD_EMIT_PREFETCH, SIMD_PREFETCH_MODE_NTA },
+	{ SN_Shuffle, OP_SHUFPD, SIMD_VERSION_SSE1, SIMD_EMIT_SHUFFLE },
 	{ SN_StoreAligned, OP_STOREX_ALIGNED_MEMBASE_REG, SIMD_VERSION_SSE1, SIMD_EMIT_STORE },
 	{ SN_UnpackHigh, OP_UNPACK_HIGHQ, SIMD_VERSION_SSE1, SIMD_EMIT_BINARY },
 	{ SN_UnpackLow, OP_UNPACK_LOWQ, SIMD_VERSION_SSE1, SIMD_EMIT_BINARY },
@@ -253,6 +261,7 @@ static const SimdIntrinsc vector2l_intrinsics[] = {
 	{ SN_PrefetchTemporal1stLevelCache, 0, SIMD_VERSION_SSE1, SIMD_EMIT_PREFETCH, SIMD_PREFETCH_MODE_1 },
 	{ SN_PrefetchTemporal2ndLevelCache, 0, SIMD_VERSION_SSE1, SIMD_EMIT_PREFETCH, SIMD_PREFETCH_MODE_2 },
 	{ SN_PrefetchNonTemporal, 0, SIMD_VERSION_SSE1, SIMD_EMIT_PREFETCH, SIMD_PREFETCH_MODE_NTA },
+	{ SN_Shuffle, OP_SHUFPD, SIMD_VERSION_SSE1, SIMD_EMIT_SHUFFLE },
 	{ SN_StoreAligned, OP_STOREX_ALIGNED_MEMBASE_REG, SIMD_VERSION_SSE1, SIMD_EMIT_STORE },
 	{ SN_UnpackHigh, OP_UNPACK_HIGHQ, SIMD_VERSION_SSE1, SIMD_EMIT_BINARY },
 	{ SN_UnpackLow, OP_UNPACK_LOWQ, SIMD_VERSION_SSE1, SIMD_EMIT_BINARY },
@@ -312,6 +321,8 @@ static const SimdIntrinsc vector4i_intrinsics[] = {
 	{ SN_ctor, OP_EXPAND_I4, SIMD_VERSION_SSE1, SIMD_EMIT_CTOR },
 	{ SN_CompareEqual, OP_PCMPEQD, SIMD_VERSION_SSE1, SIMD_EMIT_BINARY },
 	{ SN_CompareGreaterThan, OP_PCMPGTD, SIMD_VERSION_SSE1, SIMD_EMIT_BINARY },
+	{ SN_ConvertToDouble, OP_CVTDQ2PD, SIMD_VERSION_SSE2, SIMD_EMIT_UNARY },
+	{ SN_ConvertToFloat, OP_CVTDQ2PS, SIMD_VERSION_SSE2, SIMD_EMIT_UNARY },
 	{ SN_LoadAligned, 0, SIMD_VERSION_SSE1, SIMD_EMIT_LOAD_ALIGNED },
 	{ SN_LogicalRightShift, OP_PSHRD, SIMD_VERSION_SSE1, SIMD_EMIT_SHIFT },
 	{ SN_Max, OP_PMAXD, SIMD_VERSION_SSE41, SIMD_EMIT_BINARY },
@@ -996,6 +1007,30 @@ mono_type_elements_shift_bits (MonoType *type)
 	g_assert_not_reached ();
 }
 
+static G_GNUC_UNUSED int
+mono_type_to_insert_op (MonoType *type)
+{
+	switch (type->type) {
+	case MONO_TYPE_I1:
+	case MONO_TYPE_U1:
+		return OP_INSERT_I1;
+	case MONO_TYPE_I2:
+	case MONO_TYPE_U2:
+		return OP_INSERT_I2;
+	case MONO_TYPE_I4:
+	case MONO_TYPE_U4:
+		return OP_INSERT_I4;
+	case MONO_TYPE_I8:
+	case MONO_TYPE_U8:
+		return OP_INSERT_I8;
+	case MONO_TYPE_R4:
+		return OP_INSERT_R4;
+	case MONO_TYPE_R8:
+		return OP_INSERT_R8;
+	}
+	g_assert_not_reached ();
+}
+
 static int
 mono_type_to_slow_insert_op (MonoType *type)
 {
@@ -1031,7 +1066,14 @@ simd_intrinsic_emit_setter (const SimdIntrinsc *intrinsic, MonoCompile *cfg, Mon
 
 	size = mono_type_size (sig->params [0], &align); 
 
-	if (size == 2 || size == 4 || size == 8) {
+	if (COMPILE_LLVM (cfg)) {
+		MONO_INST_NEW (cfg, ins, mono_type_to_insert_op (sig->params [0]));
+		ins->klass = cmethod->klass;
+		ins->dreg = ins->sreg1 = dreg = load_simd_vreg (cfg, cmethod, args [0], &indirect);
+		ins->sreg2 = args [1]->dreg;
+		ins->inst_c0 = intrinsic->opcode;
+		MONO_ADD_INS (cfg->cbb, ins);
+	} else if (size == 2 || size == 4 || size == 8) {
 		MONO_INST_NEW (cfg, ins, mono_type_to_slow_insert_op (sig->params [0]));
 		ins->klass = cmethod->klass;
 		/*This is a partial load so we encode the dependency on the previous value by setting dreg and sreg1 to the same value.*/
@@ -1314,24 +1356,32 @@ static MonoInst*
 simd_intrinsic_emit_shuffle (const SimdIntrinsc *intrinsic, MonoCompile *cfg, MonoMethod *cmethod, MonoInst **args)
 {
 	MonoInst *ins;
-	int vreg;
+	int vreg, vreg2 = -1;
+	int param_count = mono_method_signature (cmethod)->param_count;
 
-	/*TODO Exposing shuffle is not a good thing as it's non obvious. We should come up with better abstractions*/
-
-	if (args [1]->opcode != OP_ICONST) {
+	if (args [param_count - 1]->opcode != OP_ICONST) {
 		/*TODO Shuffle with non literals is not yet supported */
 		return NULL;
 	}
+
 	vreg = get_simd_vreg (cfg, cmethod, args [0]);
-	NULLIFY_INS (args [1]);
+	if (param_count == 3)
+		vreg2 = get_simd_vreg (cfg, cmethod, args [1]);
+
+	NULLIFY_INS (args [param_count - 1]);
+
 
 	MONO_INST_NEW (cfg, ins, intrinsic->opcode);
 	ins->klass = cmethod->klass;
 	ins->sreg1 = vreg;
-	ins->inst_c0 = args [1]->inst_c0;
+	ins->sreg2 = vreg2;
+	ins->inst_c0 = args [param_count - 1]->inst_c0;
 	ins->type = STACK_VTYPE;
 	ins->dreg = alloc_ireg (cfg);
 	MONO_ADD_INS (cfg->cbb, ins);
+
+	if (param_count == 3 && ins->opcode == OP_PSHUFLED)
+		ins->opcode = OP_SHUFPS;
 	return ins;
 }
 
diff --git a/mono/mini/simd-methods.h b/mono/mini/simd-methods.h
index 500a9ca..803d8da 100644
--- a/mono/mini/simd-methods.h
+++ b/mono/mini/simd-methods.h
@@ -11,6 +11,10 @@ SIMD_METHOD("CompareNotLessEqual", SN_CompareNotLessEqual)
 SIMD_METHOD("CompareNotLessThan", SN_CompareNotLessThan)
 SIMD_METHOD("CompareOrdered", SN_CompareOrdered)
 SIMD_METHOD("CompareUnordered", SN_CompareUnordered)
+SIMD_METHOD("ConvertToDouble", SN_ConvertToDouble)
+SIMD_METHOD("ConvertToFloat", SN_ConvertToFloat)
+SIMD_METHOD("ConvertToInt", SN_ConvertToInt)
+SIMD_METHOD("ConvertToIntTruncated", SN_ConvertToIntTruncated)
 SIMD_METHOD(".ctor", SN_ctor)
 SIMD_METHOD("Duplicate", SN_Duplicate)
 SIMD_METHOD("DuplicateHigh", SN_DuplicateHigh)
diff --git a/mono/mini/ssa.c b/mono/mini/ssa.c
index c4685b8..96a90ca 100644
--- a/mono/mini/ssa.c
+++ b/mono/mini/ssa.c
@@ -268,7 +268,7 @@ mono_ssa_rename_vars (MonoCompile *cfg, int max_vars, MonoBasicBlock *bb, gboole
 			}
 			else if (G_UNLIKELY (!var && lvreg_defined [ins->dreg] && (ins->dreg >= MONO_MAX_IREGS))) {
 				/* Perform renaming for local vregs */
-				lvreg_stack [ins->dreg] = mono_alloc_preg (cfg);
+				lvreg_stack [ins->dreg] = vreg_is_ref (cfg, ins->dreg) ? mono_alloc_ireg_ref (cfg) : mono_alloc_preg (cfg);
 				ins->dreg = lvreg_stack [ins->dreg];
 			}
 			else
diff --git a/mono/mini/tramp-amd64.c b/mono/mini/tramp-amd64.c
index 214eff5..f576af9 100644
--- a/mono/mini/tramp-amd64.c
+++ b/mono/mini/tramp-amd64.c
@@ -16,6 +16,8 @@
 #include <mono/metadata/tabledefs.h>
 #include <mono/metadata/mono-debug-debugger.h>
 #include <mono/metadata/monitor.h>
+#include <mono/metadata/monitor.h>
+#include <mono/metadata/gc-internal.h>
 #include <mono/arch/amd64/amd64-codegen.h>
 
 #include <mono/utils/memcheck.h>
@@ -23,13 +25,17 @@
 #include "mini.h"
 #include "mini-amd64.h"
 
+#if defined(__native_client_codegen__) && defined(__native_client__)
+#include <malloc.h>
+#include <sys/nacl_syscalls.h>
+#endif
+
 #define IS_REX(inst) (((inst) >= 0x40) && ((inst) <= 0x4f))
 
 static guint8* nullified_class_init_trampoline;
 
 /*
  * mono_arch_get_unbox_trampoline:
- * @gsctx: the generic sharing context
  * @m: method pointer
  * @addr: pointer to native code for @m
  *
@@ -38,14 +44,14 @@ static guint8* nullified_class_init_trampoline;
  * unboxing before calling the method
  */
 gpointer
-mono_arch_get_unbox_trampoline (MonoGenericSharingContext *gsctx, MonoMethod *m, gpointer addr)
+mono_arch_get_unbox_trampoline (MonoMethod *m, gpointer addr)
 {
 	guint8 *code, *start;
 	int this_reg;
 
 	MonoDomain *domain = mono_domain_get ();
 
-	this_reg = mono_arch_get_this_arg_reg (mono_method_signature (m), gsctx, NULL);
+	this_reg = mono_arch_get_this_arg_reg (NULL);
 
 	start = code = mono_domain_code_reserve (domain, 20);
 
@@ -55,6 +61,8 @@ mono_arch_get_unbox_trampoline (MonoGenericSharingContext *gsctx, MonoMethod *m,
 	amd64_jump_reg (code, AMD64_RAX);
 	g_assert ((code - start) < 20);
 
+	nacl_domain_code_validate (domain, &start, 20, &code);
+
 	mono_arch_flush_icache (start, code - start);
 
 	return start;
@@ -89,6 +97,7 @@ mono_arch_get_static_rgctx_trampoline (MonoMethod *m, MonoMethodRuntimeGenericCo
 	amd64_jump_code (code, addr);
 	g_assert ((code - start) < buf_len);
 
+	nacl_domain_code_validate (domain, &start, buf_len, &code);
 	mono_arch_flush_icache (start, code - start);
 
 	return start;
@@ -105,7 +114,7 @@ mono_arch_get_llvm_imt_trampoline (MonoDomain *domain, MonoMethod *m, int vt_off
 
 	start = code = mono_domain_code_reserve (domain, buf_len);
 
-	this_reg = mono_arch_get_this_arg_reg (mono_method_signature (m), NULL, NULL);
+	this_reg = mono_arch_get_this_arg_reg (NULL);
 
 	/* Set imt arg */
 	amd64_mov_reg_imm (code, MONO_ARCH_IMT_REG, m);
@@ -116,6 +125,8 @@ mono_arch_get_llvm_imt_trampoline (MonoDomain *domain, MonoMethod *m, int vt_off
 
 	g_assert ((code - start) < buf_len);
 
+	nacl_domain_code_validate (domain, &start, buf_len, &code);
+
 	mono_arch_flush_icache (start, code - start);
 
 	return start;
@@ -130,12 +141,14 @@ mono_arch_get_llvm_imt_trampoline (MonoDomain *domain, MonoMethod *m, int vt_off
 void
 mono_arch_patch_callsite (guint8 *method_start, guint8 *orig_code, guint8 *addr)
 {
+#if defined(__default_codegen__)
 	guint8 *code;
 	guint8 buf [16];
 	gboolean can_write = mono_breakpoint_clean_code (method_start, orig_code, 14, buf, sizeof (buf));
 
 	code = buf + 14;
 
+	/* mov 64-bit imm into r11 (followed by call reg?)  or direct call*/
 	if (((code [-13] == 0x49) && (code [-12] == 0xbb)) || (code [-5] == 0xe8)) {
 		if (code [-5] != 0xe8) {
 			if (can_write) {
@@ -183,6 +196,38 @@ mono_arch_patch_callsite (guint8 *method_start, guint8 *orig_code, guint8 *addr)
 			VALGRIND_DISCARD_TRANSLATIONS (orig_code - 5, sizeof (gpointer));
 		}
 	}
+#elif defined(__native_client__)
+	/* These are essentially the same 2 cases as above, modified for NaCl*/
+
+	/* Target must be bundle-aligned */
+	g_assert (((guint32)addr & kNaClAlignmentMask) == 0);
+	/* Return target must be bundle-aligned */
+	g_assert (((guint32)orig_code & kNaClAlignmentMask) == 0);
+
+	if (orig_code[-5] == 0xe8) {
+		/* Direct call */
+		int ret;
+		gint32 offset = (gint32)addr - (gint32)orig_code;
+		guint8 buf[sizeof(gint32)];
+		*((gint32*)(buf)) = offset;
+		ret = nacl_dyncode_modify (orig_code - sizeof(gint32), buf, sizeof(gint32));
+		g_assert (ret == 0);
+	}
+
+	else if (is_nacl_call_reg_sequence (orig_code - 10) && orig_code[-16] == 0x41 && orig_code[-15] == 0xbb) {
+		int ret;
+		guint8 buf[sizeof(gint32)];
+		*((gint32 *)(buf)) = addr;
+		/* orig_code[-14] is the start of the immediate. */
+		ret = nacl_dyncode_modify (orig_code - 14, buf, sizeof(gint32));
+		g_assert (ret == 0);
+	}
+	else {
+		g_assert_not_reached ();
+	}
+
+	return;
+#endif
 }
 
 void
@@ -191,6 +236,7 @@ mono_arch_patch_plt_entry (guint8 *code, gpointer *got, mgreg_t *regs, guint8 *a
 	gint32 disp;
 	gpointer *plt_jump_table_entry;
 
+#if defined(__default_codegen__)
 	/* A PLT entry: jmp *<DISP>(%rip) */
 	g_assert (code [0] == 0xff);
 	g_assert (code [1] == 0x25);
@@ -198,6 +244,24 @@ mono_arch_patch_plt_entry (guint8 *code, gpointer *got, mgreg_t *regs, guint8 *a
 	disp = *(gint32*)(code + 2);
 
 	plt_jump_table_entry = (gpointer*)(code + 6 + disp);
+#elif defined(__native_client_codegen__)
+	/* A PLT entry:            */
+	/* mov <DISP>(%rip), %r11d */
+	/* nacljmp *%r11           */
+
+	/* Verify the 'mov' */
+	g_assert (code [0] == 0x45);
+	g_assert (code [1] == 0x8b);
+	g_assert (code [2] == 0x1d);
+
+	disp = *(gint32*)(code + 3);
+
+	/* 7 = 3 (mov opcode) + 4 (disp) */
+	/* This needs to resolve to the target of the RIP-relative offset */
+	plt_jump_table_entry = (gpointer*)(code + 7 + disp);
+
+#endif /* __native_client_codegen__ */
+
 
 	InterlockedExchangePointer (plt_jump_table_entry, addr);
 }
@@ -320,22 +384,25 @@ guchar*
 mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInfo **info, gboolean aot)
 {
 	guint8 *buf, *code, *tramp, *br [2], *r11_save_code, *after_r11_save_code;
-	int i, lmf_offset, offset, res_offset, arg_offset, rax_offset, tramp_offset;
-	int buf_len, saved_regs_offset;
+	int i, lmf_offset, offset, res_offset, arg_offset, rax_offset, tramp_offset, saved_regs_offset;
 	int saved_fpregs_offset, rbp_offset, framesize, orig_rsp_to_rbp_offset, cfa_offset;
 	gboolean has_caller;
 	GSList *unwind_ops = NULL;
 	MonoJumpInfo *ji = NULL;
+	const guint kMaxCodeSize = NACL_SIZE (548, 548*2);
+
+#if defined(__native_client_codegen__)
+	const guint kNaClTrampOffset = 17;
+#endif
 
 	if (tramp_type == MONO_TRAMPOLINE_JUMP)
 		has_caller = FALSE;
 	else
 		has_caller = TRUE;
 
-	buf_len = 548;
-	code = buf = mono_global_codeman_reserve (buf_len);
+	code = buf = mono_global_codeman_reserve (kMaxCodeSize);
 
-	framesize = 538 + sizeof (MonoLMF);
+	framesize = kMaxCodeSize + sizeof (MonoLMF);
 	framesize = (framesize + (MONO_ARCH_FRAME_ALIGNMENT - 1)) & ~ (MONO_ARCH_FRAME_ALIGNMENT - 1);
 
 	orig_rsp_to_rbp_offset = 0;
@@ -352,72 +419,76 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf
 
 	/* Pop the return address off the stack */
 	amd64_pop_reg (code, AMD64_R11);
-	orig_rsp_to_rbp_offset += 8;
+	orig_rsp_to_rbp_offset += sizeof(mgreg_t);
 
-	cfa_offset -= 8;
+	cfa_offset -= sizeof(mgreg_t);
 	mono_add_unwind_op_def_cfa_offset (unwind_ops, code, buf, cfa_offset);
 
 	/* 
 	 * Allocate a new stack frame
 	 */
 	amd64_push_reg (code, AMD64_RBP);
-	cfa_offset += 8;
+	cfa_offset += sizeof(mgreg_t);
 	mono_add_unwind_op_def_cfa_offset (unwind_ops, code, buf, cfa_offset);
 	mono_add_unwind_op_offset (unwind_ops, code, buf, AMD64_RBP, - cfa_offset);
 
-	orig_rsp_to_rbp_offset -= 8;
-	amd64_mov_reg_reg (code, AMD64_RBP, AMD64_RSP, 8);
+	orig_rsp_to_rbp_offset -= sizeof(mgreg_t);
+	amd64_mov_reg_reg (code, AMD64_RBP, AMD64_RSP, sizeof(mgreg_t));
 	mono_add_unwind_op_def_cfa_reg (unwind_ops, code, buf, AMD64_RBP);
 	amd64_alu_reg_imm (code, X86_SUB, AMD64_RSP, framesize);
 
 	offset = 0;
 	rbp_offset = - offset;
 
-	offset += 8;
+	offset += sizeof(mgreg_t);
 	rax_offset = - offset;
 
-	offset += 8;
+	offset += sizeof(mgreg_t);
 	tramp_offset = - offset;
 
-	offset += 8;
+	offset += sizeof(gpointer);
 	arg_offset = - offset;
 
 	/* Compute the trampoline address from the return address */
 	if (aot) {
+#if defined(__default_codegen__)
 		/* 7 = length of call *<offset>(rip) */
 		amd64_alu_reg_imm (code, X86_SUB, AMD64_R11, 7);
+#elif defined(__native_client_codegen__)
+		amd64_alu_reg_imm (code, X86_SUB, AMD64_R11, kNaClTrampOffset);
+#endif
 	} else {
 		/* 5 = length of amd64_call_membase () */
 		amd64_alu_reg_imm (code, X86_SUB, AMD64_R11, 5);
 	}
-	amd64_mov_membase_reg (code, AMD64_RBP, tramp_offset, AMD64_R11, 8);
+	amd64_mov_membase_reg (code, AMD64_RBP, tramp_offset, AMD64_R11, sizeof(gpointer));
 
-	offset += 8;
+	offset += sizeof(mgreg_t);
 	res_offset = - offset;
 
 	/* Save all registers */
 
-	offset += AMD64_NREG * 8;
+	offset += AMD64_NREG * sizeof(mgreg_t);
 	saved_regs_offset = - offset;
 	for (i = 0; i < AMD64_NREG; ++i) {
 		if (i == AMD64_RBP) {
 			/* RAX is already saved */
-			amd64_mov_reg_membase (code, AMD64_RAX, AMD64_RBP, rbp_offset, 8);
-			amd64_mov_membase_reg (code, AMD64_RBP, saved_regs_offset + (i * 8), AMD64_RAX, 8);
+			amd64_mov_reg_membase (code, AMD64_RAX, AMD64_RBP, rbp_offset, sizeof(mgreg_t));
+			amd64_mov_membase_reg (code, AMD64_RBP, saved_regs_offset + (i * sizeof(mgreg_t)), AMD64_RAX, sizeof(mgreg_t));
 		} else if (i != AMD64_R11) {
-			amd64_mov_membase_reg (code, AMD64_RBP, saved_regs_offset + (i * 8), i, 8);
+			amd64_mov_membase_reg (code, AMD64_RBP, saved_regs_offset + (i * sizeof(mgreg_t)), i, sizeof(mgreg_t));
 		} else {
 			/* We have to save R11 right at the start of
 			   the trampoline code because it's used as a
 			   scratch register */
-			amd64_mov_membase_reg (r11_save_code, AMD64_RSP, saved_regs_offset + orig_rsp_to_rbp_offset + (i * 8), i, 8);
+			amd64_mov_membase_reg (r11_save_code, AMD64_RSP, saved_regs_offset + orig_rsp_to_rbp_offset + (i * sizeof(mgreg_t)), i, sizeof(mgreg_t));
 			g_assert (r11_save_code == after_r11_save_code);
 		}
 	}
-	offset += 8 * 8;
+	offset += 8 * sizeof(mgreg_t);
 	saved_fpregs_offset = - offset;
 	for (i = 0; i < 8; ++i)
-		amd64_movsd_membase_reg (code, AMD64_RBP, saved_fpregs_offset + (i * 8), i);
+		amd64_movsd_membase_reg (code, AMD64_RBP, saved_fpregs_offset + (i * sizeof(mgreg_t)), i);
 
 	if (tramp_type != MONO_TRAMPOLINE_GENERIC_CLASS_INIT &&
 			tramp_type != MONO_TRAMPOLINE_MONITOR_ENTER &&
@@ -425,14 +496,21 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf
 		/* Obtain the trampoline argument which is encoded in the instruction stream */
 		if (aot) {
 			/* Load the GOT offset */
-			amd64_mov_reg_membase (code, AMD64_R11, AMD64_RBP, tramp_offset, 8);
+			amd64_mov_reg_membase (code, AMD64_R11, AMD64_RBP, tramp_offset, sizeof(gpointer));
+#if defined(__default_codegen__)
 			amd64_mov_reg_membase (code, AMD64_RAX, AMD64_R11, 7, 4);
+#elif defined(__native_client_codegen__)
+			/* The arg is hidden in a "push imm32" instruction, */
+			/* add one to skip the opcode.                      */
+			amd64_mov_reg_membase (code, AMD64_RAX, AMD64_R11, kNaClTrampOffset+1, 4);
+#endif
 			/* Compute the address of the GOT slot */
-			amd64_alu_reg_reg_size (code, X86_ADD, AMD64_R11, AMD64_RAX, 8);
+			amd64_alu_reg_reg_size (code, X86_ADD, AMD64_R11, AMD64_RAX, sizeof(gpointer));
 			/* Load the value */
-			amd64_mov_reg_membase (code, AMD64_R11, AMD64_R11, 0, 8);
+			amd64_mov_reg_membase (code, AMD64_R11, AMD64_R11, 0, sizeof(gpointer));
 		} else {			
-			amd64_mov_reg_membase (code, AMD64_R11, AMD64_RBP, tramp_offset, 8);
+			amd64_mov_reg_membase (code, AMD64_R11, AMD64_RBP, tramp_offset, sizeof(gpointer));
+#if defined(__default_codegen__)
 			amd64_mov_reg_membase (code, AMD64_RAX, AMD64_R11, 5, 1);
 			amd64_widen_reg (code, AMD64_RAX, AMD64_RAX, TRUE, FALSE);
 			amd64_alu_reg_imm_size (code, X86_CMP, AMD64_RAX, 4, 1);
@@ -446,11 +524,15 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf
 			mono_amd64_patch (br [0], code);
 			amd64_mov_reg_membase (code, AMD64_R11, AMD64_R11, 6, 8);
 			mono_amd64_patch (br [1], code);
+#elif defined(__native_client_codegen__)
+			/* All args are 32-bit pointers in NaCl */
+			amd64_mov_reg_membase (code, AMD64_R11, AMD64_R11, 6, 4);
+#endif
 		}
-		amd64_mov_membase_reg (code, AMD64_RBP, arg_offset, AMD64_R11, 8);
+		amd64_mov_membase_reg (code, AMD64_RBP, arg_offset, AMD64_R11, sizeof(gpointer));
 	} else {
-		amd64_mov_reg_membase (code, AMD64_R11, AMD64_RBP, saved_regs_offset + (MONO_AMD64_ARG_REG1 * 8), 8);
-		amd64_mov_membase_reg (code, AMD64_RBP, arg_offset, AMD64_R11, 8);
+		amd64_mov_reg_membase (code, AMD64_R11, AMD64_RBP, saved_regs_offset + (MONO_AMD64_ARG_REG1 * sizeof(mgreg_t)), sizeof(mgreg_t));
+		amd64_mov_membase_reg (code, AMD64_RBP, arg_offset, AMD64_R11, sizeof(gpointer));
 	}
 
 	/* Save LMF begin */
@@ -460,34 +542,34 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf
 
 	/* Save ip */
 	if (has_caller)
-		amd64_mov_reg_membase (code, AMD64_R11, AMD64_RBP, 8, 8);
+		amd64_mov_reg_membase (code, AMD64_R11, AMD64_RBP, 8, sizeof(gpointer));
 	else
 		amd64_mov_reg_imm (code, AMD64_R11, 0);
-	amd64_mov_membase_reg (code, AMD64_RBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, rip), AMD64_R11, 8);
+	amd64_mov_membase_reg (code, AMD64_RBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, rip), AMD64_R11, sizeof(mgreg_t));
 	/* Save fp */
-	amd64_mov_reg_membase (code, AMD64_R11, AMD64_RSP, framesize, 8);
-	amd64_mov_membase_reg (code, AMD64_RBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, rbp), AMD64_R11, 8);
+	amd64_mov_reg_membase (code, AMD64_R11, AMD64_RSP, framesize, sizeof(mgreg_t));
+	amd64_mov_membase_reg (code, AMD64_RBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, rbp), AMD64_R11, sizeof(mgreg_t));
 	/* Save sp */
-	amd64_mov_reg_reg (code, AMD64_R11, AMD64_RSP, 8);
+	amd64_mov_reg_reg (code, AMD64_R11, AMD64_RSP, sizeof(mgreg_t));
 	amd64_alu_reg_imm (code, X86_ADD, AMD64_R11, framesize + 16);
-	amd64_mov_membase_reg (code, AMD64_RBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, rsp), AMD64_R11, 8);
+	amd64_mov_membase_reg (code, AMD64_RBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, rsp), AMD64_R11, sizeof(mgreg_t));
 	/* Save method */
 	if (tramp_type == MONO_TRAMPOLINE_JIT || tramp_type == MONO_TRAMPOLINE_JUMP) {
-		amd64_mov_reg_membase (code, AMD64_R11, AMD64_RBP, arg_offset, 8);
-		amd64_mov_membase_reg (code, AMD64_RBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, method), AMD64_R11, 8);
+		amd64_mov_reg_membase (code, AMD64_R11, AMD64_RBP, arg_offset, sizeof(gpointer));
+		amd64_mov_membase_reg (code, AMD64_RBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, method), AMD64_R11, sizeof(gpointer));
 	} else {
-		amd64_mov_membase_imm (code, AMD64_RBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, method), 0, 8);
+		amd64_mov_membase_imm (code, AMD64_RBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, method), 0, sizeof(gpointer));
 	}
 	/* Save callee saved regs */
 #ifdef TARGET_WIN32
-	amd64_mov_membase_reg (code, AMD64_RBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, rdi), AMD64_RDI, 8);
-	amd64_mov_membase_reg (code, AMD64_RBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, rsi), AMD64_RSI, 8);
+	amd64_mov_membase_reg (code, AMD64_RBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, rdi), AMD64_RDI, sizeof(mgreg_t));
+	amd64_mov_membase_reg (code, AMD64_RBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, rsi), AMD64_RSI, sizeof(mgreg_t));
 #endif
-	amd64_mov_membase_reg (code, AMD64_RBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, rbx), AMD64_RBX, 8);
-	amd64_mov_membase_reg (code, AMD64_RBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, r12), AMD64_R12, 8);
-	amd64_mov_membase_reg (code, AMD64_RBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, r13), AMD64_R13, 8);
-	amd64_mov_membase_reg (code, AMD64_RBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, r14), AMD64_R14, 8);
-	amd64_mov_membase_reg (code, AMD64_RBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, r15), AMD64_R15, 8);
+	amd64_mov_membase_reg (code, AMD64_RBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, rbx), AMD64_RBX, sizeof(mgreg_t));
+	amd64_mov_membase_reg (code, AMD64_RBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, r12), AMD64_R12, sizeof(mgreg_t));
+	amd64_mov_membase_reg (code, AMD64_RBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, r13), AMD64_R13, sizeof(mgreg_t));
+	amd64_mov_membase_reg (code, AMD64_RBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, r14), AMD64_R14, sizeof(mgreg_t));
+	amd64_mov_membase_reg (code, AMD64_RBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, r15), AMD64_R15, sizeof(mgreg_t));
 
 	if (aot) {
 		code = mono_arch_emit_load_aotconst (buf, code, &ji, MONO_PATCH_INFO_JIT_ICALL_ADDR, "mono_get_lmf_addr");
@@ -497,15 +579,15 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf
 	amd64_call_reg (code, AMD64_R11);
 
 	/* Save lmf_addr */
-	amd64_mov_membase_reg (code, AMD64_RBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, lmf_addr), AMD64_RAX, 8);
+	amd64_mov_membase_reg (code, AMD64_RBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, lmf_addr), AMD64_RAX, sizeof(gpointer));
 	/* Save previous_lmf */
 	/* Set the lowest bit to 1 to signal that this LMF has the ip field set */
-	amd64_mov_reg_membase (code, AMD64_R11, AMD64_RAX, 0, 8);
-	amd64_alu_reg_imm_size (code, X86_ADD, AMD64_R11, 1, 8);
-	amd64_mov_membase_reg (code, AMD64_RBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, previous_lmf), AMD64_R11, 8);
+	amd64_mov_reg_membase (code, AMD64_R11, AMD64_RAX, 0, sizeof(gpointer));
+	amd64_alu_reg_imm_size (code, X86_ADD, AMD64_R11, 1, sizeof(gpointer));
+	amd64_mov_membase_reg (code, AMD64_RBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, previous_lmf), AMD64_R11, sizeof(gpointer));
 	/* Set new lmf */
 	amd64_lea_membase (code, AMD64_R11, AMD64_RBP, lmf_offset);
-	amd64_mov_membase_reg (code, AMD64_RAX, 0, AMD64_R11, 8);
+	amd64_mov_membase_reg (code, AMD64_RAX, 0, AMD64_R11, sizeof(gpointer));
 
 	/* Save LMF end */
 
@@ -514,15 +596,15 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf
 
 	/* Arg2 is the address of the calling code */
 	if (has_caller)
-		amd64_mov_reg_membase (code, AMD64_ARG_REG2, AMD64_RBP, 8, 8);
+		amd64_mov_reg_membase (code, AMD64_ARG_REG2, AMD64_RBP, 8, sizeof(gpointer));
 	else
 		amd64_mov_reg_imm (code, AMD64_ARG_REG2, 0);
 
 	/* Arg3 is the method/vtable ptr */
-	amd64_mov_reg_membase (code, AMD64_ARG_REG3, AMD64_RBP, arg_offset, 8);
+	amd64_mov_reg_membase (code, AMD64_ARG_REG3, AMD64_RBP, arg_offset, sizeof(gpointer));
 
 	/* Arg4 is the trampoline address */
-	amd64_mov_reg_membase (code, AMD64_ARG_REG4, AMD64_RBP, tramp_offset, 8);
+	amd64_mov_reg_membase (code, AMD64_ARG_REG4, AMD64_RBP, tramp_offset, sizeof(gpointer));
 
 	if (aot) {
 		char *icall_name = g_strdup_printf ("trampoline_func_%d", tramp_type);
@@ -538,7 +620,7 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf
 	/* 
 	 * Have to call the _force_ variant, since there could be a protected wrapper on the top of the stack.
 	 */
-	amd64_mov_membase_reg (code, AMD64_RBP, res_offset, AMD64_RAX, 8);
+	amd64_mov_membase_reg (code, AMD64_RBP, res_offset, AMD64_RAX, sizeof(mgreg_t));
 	if (aot) {
 		code = mono_arch_emit_load_aotconst (buf, code, &ji, MONO_PATCH_INFO_JIT_ICALL_ADDR, "mono_thread_force_interruption_checkpoint");
 	} else {
@@ -546,43 +628,45 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf
 	}
 	amd64_call_reg (code, AMD64_R11);
 
-	amd64_mov_reg_membase (code, AMD64_RAX, AMD64_RBP, res_offset, 8);	
+	amd64_mov_reg_membase (code, AMD64_RAX, AMD64_RBP, res_offset, sizeof(mgreg_t));	
 
 	/* Restore LMF */
 
-	amd64_mov_reg_membase (code, AMD64_RCX, AMD64_RBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, previous_lmf), 8);
-	amd64_alu_reg_imm_size (code, X86_SUB, AMD64_RCX, 1, 8);
-	amd64_mov_reg_membase (code, AMD64_R11, AMD64_RBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, lmf_addr), 8);
-	amd64_mov_membase_reg (code, AMD64_R11, 0, AMD64_RCX, 8);
+	amd64_mov_reg_membase (code, AMD64_RCX, AMD64_RBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, previous_lmf), sizeof(gpointer));
+	amd64_alu_reg_imm_size (code, X86_SUB, AMD64_RCX, 1, sizeof(gpointer));
+	amd64_mov_reg_membase (code, AMD64_R11, AMD64_RBP, lmf_offset + G_STRUCT_OFFSET (MonoLMF, lmf_addr), sizeof(gpointer));
+	amd64_mov_membase_reg (code, AMD64_R11, 0, AMD64_RCX, sizeof(gpointer));
 
 	/* 
 	 * Save rax to the stack, after the leave instruction, this will become part of
 	 * the red zone.
 	 */
-	amd64_mov_membase_reg (code, AMD64_RBP, rax_offset, AMD64_RAX, 8);
+	amd64_mov_membase_reg (code, AMD64_RBP, rax_offset, AMD64_RAX, sizeof(mgreg_t));
 
 	/* Restore argument registers, r10 (imt method/rgxtx)
 	   and rax (needed for direct calls to C vararg functions). */
 	for (i = 0; i < AMD64_NREG; ++i)
 		if (AMD64_IS_ARGUMENT_REG (i) || i == AMD64_R10 || i == AMD64_RAX)
-			amd64_mov_reg_membase (code, i, AMD64_RBP, saved_regs_offset + (i * 8), 8);
+			amd64_mov_reg_membase (code, i, AMD64_RBP, saved_regs_offset + (i * sizeof(mgreg_t)), sizeof(mgreg_t));
 
 	for (i = 0; i < 8; ++i)
-		amd64_movsd_reg_membase (code, i, AMD64_RBP, saved_fpregs_offset + (i * 8));
+		amd64_movsd_reg_membase (code, i, AMD64_RBP, saved_fpregs_offset + (i * sizeof(mgreg_t)));
 
 	/* Restore stack */
 	amd64_leave (code);
 
 	if (MONO_TRAMPOLINE_TYPE_MUST_RETURN (tramp_type)) {
 		/* Load result */
-		amd64_mov_reg_membase (code, AMD64_RAX, AMD64_RSP, rax_offset - 0x8, 8);
+		amd64_mov_reg_membase (code, AMD64_RAX, AMD64_RSP, rax_offset - sizeof(mgreg_t), sizeof(mgreg_t));
 		amd64_ret (code);
 	} else {
 		/* call the compiled method using the saved rax */
-		amd64_jump_membase (code, AMD64_RSP, rax_offset - 0x8);
+		amd64_jump_membase (code, AMD64_RSP, rax_offset - sizeof(mgreg_t));
 	}
 
-	g_assert ((code - buf) <= buf_len);
+	g_assert ((code - buf) <= kMaxCodeSize);
+
+	nacl_global_codeman_validate (&buf, kMaxCodeSize, &code);
 
 	mono_arch_flush_icache (buf, code - buf);
 
@@ -605,11 +689,16 @@ mono_arch_get_nullified_class_init_trampoline (MonoTrampInfo **info)
 	code = buf = mono_global_codeman_reserve (16);
 	amd64_ret (code);
 
+	nacl_global_codeman_validate(&buf, 16, &code);
+
 	mono_arch_flush_icache (buf, code - buf);
 
 	if (info)
 		*info = mono_tramp_info_create (g_strdup_printf ("nullified_class_init_trampoline"), buf, code - buf, NULL, NULL);
 
+	if (mono_jit_map_is_enabled ())
+		mono_emit_jit_tramp (buf, code - buf, "nullified_class_init_trampoline");
+
 	return buf;
 }
 
@@ -621,15 +710,25 @@ mono_arch_create_specific_trampoline (gpointer arg1, MonoTrampolineType tramp_ty
 
 	tramp = mono_get_trampoline_code (tramp_type);
 
+#if defined(__default_codegen__)
 	if ((((guint64)arg1) >> 32) == 0)
 		size = 5 + 1 + 4;
 	else
 		size = 5 + 1 + 8;
 
 	code = buf = mono_domain_code_reserve_align (domain, size, 1);
+#elif defined(__native_client_codegen__)
+	size = 5 + 1 + 4;
+	/* Aligning the call site below could */
+	/* add up to kNaClAlignment-1 bytes   */
+	size += (kNaClAlignment-1);
+	buf = mono_domain_code_reserve_align (domain, size, kNaClAlignment);
+	code = buf;
+#endif
 
 	amd64_call_code (code, tramp);
 	/* The trampoline code will obtain the argument from the instruction stream */
+#if defined(__default_codegen__)
 	if ((((guint64)arg1) >> 32) == 0) {
 		*code = 0x4;
 		*(guint32*)(code + 1) = (gint64)arg1;
@@ -639,12 +738,20 @@ mono_arch_create_specific_trampoline (gpointer arg1, MonoTrampolineType tramp_ty
 		*(guint64*)(code + 1) = (gint64)arg1;
 		code += 9;
 	}
+#elif defined(__native_client_codegen__)
+	/* For NaCl, all tramp args are 32-bit because they're pointers */
+	*code = 0x68; /* push imm32 */
+	*(guint32*)(code + 1) = (gint32)arg1;
+	code += 5;
+#endif
 
 	g_assert ((code - buf) <= size);
 
 	if (code_len)
 		*code_len = size;
 
+	nacl_domain_code_validate(domain, &buf, size, &code);
+
 	mono_arch_flush_icache (buf, size);
 
 	return buf;
@@ -675,7 +782,7 @@ mono_arch_create_rgctx_lazy_fetch_trampoline (guint32 slot, MonoTrampInfo **info
 		index -= size - 1;
 	}
 
-	tramp_size = 64 + 8 * depth;
+	tramp_size = NACL_SIZE (64 + 8 * depth, 128 + 8 * depth);
 
 	code = buf = mono_global_codeman_reserve (tramp_size);
 
@@ -688,7 +795,7 @@ mono_arch_create_rgctx_lazy_fetch_trampoline (guint32 slot, MonoTrampInfo **info
 		amd64_mov_reg_reg (code, AMD64_RAX, AMD64_ARG_REG1, 8);
 	} else {
 		/* load rgctx ptr from vtable */
-		amd64_mov_reg_membase (code, AMD64_RAX, AMD64_ARG_REG1, G_STRUCT_OFFSET (MonoVTable, runtime_generic_context), 8);
+		amd64_mov_reg_membase (code, AMD64_RAX, AMD64_ARG_REG1, G_STRUCT_OFFSET (MonoVTable, runtime_generic_context), sizeof(gpointer));
 		/* is the rgctx ptr null? */
 		amd64_test_reg_reg (code, AMD64_RAX, AMD64_RAX);
 		/* if yes, jump to actual trampoline */
@@ -699,9 +806,9 @@ mono_arch_create_rgctx_lazy_fetch_trampoline (guint32 slot, MonoTrampInfo **info
 	for (i = 0; i < depth; ++i) {
 		/* load ptr to next array */
 		if (mrgctx && i == 0)
-			amd64_mov_reg_membase (code, AMD64_RAX, AMD64_RAX, MONO_SIZEOF_METHOD_RUNTIME_GENERIC_CONTEXT, 8);
+			amd64_mov_reg_membase (code, AMD64_RAX, AMD64_RAX, MONO_SIZEOF_METHOD_RUNTIME_GENERIC_CONTEXT, sizeof(gpointer));
 		else
-			amd64_mov_reg_membase (code, AMD64_RAX, AMD64_RAX, 0, 8);
+			amd64_mov_reg_membase (code, AMD64_RAX, AMD64_RAX, 0, sizeof(gpointer));
 		/* is the ptr null? */
 		amd64_test_reg_reg (code, AMD64_RAX, AMD64_RAX);
 		/* if yes, jump to actual trampoline */
@@ -710,7 +817,7 @@ mono_arch_create_rgctx_lazy_fetch_trampoline (guint32 slot, MonoTrampInfo **info
 	}
 
 	/* fetch slot */
-	amd64_mov_reg_membase (code, AMD64_RAX, AMD64_RAX, sizeof (gpointer) * (index + 1), 8);
+	amd64_mov_reg_membase (code, AMD64_RAX, AMD64_RAX, sizeof (gpointer) * (index + 1), sizeof(gpointer));
 	/* is the slot null? */
 	amd64_test_reg_reg (code, AMD64_RAX, AMD64_RAX);
 	/* if yes, jump to actual trampoline */
@@ -720,12 +827,12 @@ mono_arch_create_rgctx_lazy_fetch_trampoline (guint32 slot, MonoTrampInfo **info
 	amd64_ret (code);
 
 	for (i = mrgctx ? 1 : 0; i <= depth + 1; ++i)
-		x86_patch (rgctx_null_jumps [i], code);
+		mono_amd64_patch (rgctx_null_jumps [i], code);
 
 	g_free (rgctx_null_jumps);
 
 	/* move the rgctx pointer to the VTABLE register */
-	amd64_mov_reg_reg (code, MONO_ARCH_VTABLE_REG, AMD64_ARG_REG1, 8);
+	amd64_mov_reg_reg (code, MONO_ARCH_VTABLE_REG, AMD64_ARG_REG1, sizeof(gpointer));
 
 	if (aot) {
 		code = mono_arch_emit_load_aotconst (buf, code, &ji, MONO_PATCH_INFO_JIT_ICALL_ADDR, g_strdup_printf ("specific_trampoline_lazy_fetch_%u", slot));
@@ -737,6 +844,7 @@ mono_arch_create_rgctx_lazy_fetch_trampoline (guint32 slot, MonoTrampInfo **info
 		amd64_jump_code (code, tramp);
 	}
 
+	nacl_global_codeman_validate (&buf, tramp_size, &code);
 	mono_arch_flush_icache (buf, code - buf);
 
 	g_assert (code - buf <= tramp_size);
@@ -784,6 +892,8 @@ mono_arch_create_generic_class_init_trampoline (MonoTrampInfo **info, gboolean a
 		amd64_jump_code (code, tramp);
 	}
 
+	nacl_global_codeman_validate (&buf, tramp_size, &code);
+
 	mono_arch_flush_icache (buf, code - buf);
 
 	g_assert (code - buf <= tramp_size);
@@ -801,7 +911,7 @@ mono_arch_create_monitor_enter_trampoline (MonoTrampInfo **info, gboolean aot)
 {
 	guint8 *tramp;
 	guint8 *code, *buf;
-	guint8 *jump_obj_null, *jump_sync_null, *jump_cmpxchg_failed, *jump_other_owner, *jump_tid;
+	guint8 *jump_obj_null, *jump_sync_null, *jump_cmpxchg_failed, *jump_other_owner, *jump_tid, *jump_sync_thin_hash = NULL;
 	int tramp_size;
 	int owner_offset, nest_offset, dummy;
 	MonoJumpInfo *ji = NULL;
@@ -831,6 +941,18 @@ mono_arch_create_monitor_enter_trampoline (MonoTrampInfo **info, gboolean aot)
 
 		/* load obj->synchronization to RCX */
 		amd64_mov_reg_membase (code, AMD64_RCX, AMD64_RDI, G_STRUCT_OFFSET (MonoObject, synchronisation), 8);
+
+		if (mono_gc_is_moving ()) {
+			/*if bit zero is set it's a thin hash*/
+			/*FIXME use testb encoding*/
+			amd64_test_reg_imm (code, AMD64_RCX, 0x01);
+			jump_sync_thin_hash = code;
+			amd64_branch8 (code, X86_CC_NE, -1, 1);
+
+			/*clear bits used by the gc*/
+			amd64_alu_reg_imm (code, X86_AND, AMD64_RCX, ~0x3);
+		}
+
 		/* is synchronization null? */
 		amd64_test_reg_reg (code, AMD64_RCX, AMD64_RCX);
 		/* if yes, jump to actual trampoline */
@@ -873,6 +995,8 @@ mono_arch_create_monitor_enter_trampoline (MonoTrampInfo **info, gboolean aot)
 		amd64_ret (code);
 
 		x86_patch (jump_obj_null, code);
+		if (jump_sync_thin_hash)
+			x86_patch (jump_sync_thin_hash, code);
 		x86_patch (jump_sync_null, code);
 		x86_patch (jump_cmpxchg_failed, code);
 		x86_patch (jump_other_owner, code);
@@ -893,6 +1017,8 @@ mono_arch_create_monitor_enter_trampoline (MonoTrampInfo **info, gboolean aot)
 		amd64_jump_code (code, tramp);
 	}
 
+	nacl_global_codeman_validate (&buf, tramp_size, &code);
+
 	mono_arch_flush_icache (code, code - buf);
 	g_assert (code - buf <= tramp_size);
 
@@ -907,7 +1033,7 @@ mono_arch_create_monitor_exit_trampoline (MonoTrampInfo **info, gboolean aot)
 {
 	guint8 *tramp;
 	guint8 *code, *buf;
-	guint8 *jump_obj_null, *jump_have_waiters, *jump_sync_null, *jump_not_owned;
+	guint8 *jump_obj_null, *jump_have_waiters, *jump_sync_null, *jump_not_owned, *jump_sync_thin_hash = NULL;
 	guint8 *jump_next;
 	int tramp_size;
 	int owner_offset, nest_offset, entry_count_offset;
@@ -924,7 +1050,7 @@ mono_arch_create_monitor_exit_trampoline (MonoTrampInfo **info, gboolean aot)
 	nest_offset = MONO_THREADS_SYNC_MEMBER_OFFSET (nest_offset);
 	entry_count_offset = MONO_THREADS_SYNC_MEMBER_OFFSET (entry_count_offset);
 
-	tramp_size = 94;
+	tramp_size = 112;
 
 	code = buf = mono_global_codeman_reserve (tramp_size);
 
@@ -940,6 +1066,18 @@ mono_arch_create_monitor_exit_trampoline (MonoTrampInfo **info, gboolean aot)
 
 		/* load obj->synchronization to RCX */
 		amd64_mov_reg_membase (code, AMD64_RCX, AMD64_RDI, G_STRUCT_OFFSET (MonoObject, synchronisation), 8);
+
+		if (mono_gc_is_moving ()) {
+			/*if bit zero is set it's a thin hash*/
+			/*FIXME use testb encoding*/
+			amd64_test_reg_imm (code, AMD64_RCX, 0x01);
+			jump_sync_thin_hash = code;
+			amd64_branch8 (code, X86_CC_NE, -1, 1);
+
+			/*clear bits used by the gc*/
+			amd64_alu_reg_imm (code, X86_AND, AMD64_RCX, ~0x3);
+		}
+
 		/* is synchronization null? */
 		amd64_test_reg_reg (code, AMD64_RCX, AMD64_RCX);
 		/* if yes, jump to actual trampoline */
@@ -997,6 +1135,8 @@ mono_arch_create_monitor_exit_trampoline (MonoTrampInfo **info, gboolean aot)
 		amd64_jump_code (code, tramp);
 	}
 
+	nacl_global_codeman_validate (&buf, tramp_size, &code);
+
 	mono_arch_flush_icache (code, code - buf);
 	g_assert (code - buf <= tramp_size);
 
@@ -1020,6 +1160,48 @@ mono_arch_invalidate_method (MonoJitInfo *ji, void *func, gpointer func_arg)
 	amd64_call_reg (code, AMD64_R11);
 }
 
+
+static void
+handler_block_trampoline_helper (gpointer *ptr)
+{
+	MonoJitTlsData *jit_tls = TlsGetValue (mono_jit_tls_id);
+	*ptr = jit_tls->handler_block_return_address;
+}
+
+gpointer
+mono_arch_create_handler_block_trampoline (void)
+{
+	guint8 *tramp = mono_get_trampoline_code (MONO_TRAMPOLINE_HANDLER_BLOCK_GUARD);
+	guint8 *code, *buf;
+	int tramp_size = 64;
+	code = buf = mono_global_codeman_reserve (tramp_size);
+
+	/*
+	This trampoline restore the call chain of the handler block then jumps into the code that deals with it.
+	*/
+
+	if (mono_get_jit_tls_offset () != -1) {
+		code = mono_amd64_emit_tls_get (code, AMD64_RDI, mono_get_jit_tls_offset ());
+		/*simulate a call*/
+		amd64_mov_reg_membase (code, AMD64_RDI, AMD64_RDI, G_STRUCT_OFFSET (MonoJitTlsData, handler_block_return_address), 8);
+		amd64_jump_code (code, tramp);
+	} else {
+		/*Slow path uses a c helper*/
+		amd64_mov_reg_reg (code, AMD64_RDI, AMD64_RSP, 8);
+		amd64_mov_reg_imm (code, AMD64_RAX, tramp);
+		amd64_push_reg (code, AMD64_RAX);
+		amd64_jump_code (code, handler_block_trampoline_helper);
+	}
+
+	mono_arch_flush_icache (buf, code - buf);
+	g_assert (code - buf <= tramp_size);
+
+	if (mono_jit_map_is_enabled ())
+		mono_emit_jit_tramp (buf, code - buf, "handler_block_trampoline");
+
+	return buf;
+}
+
 /*
  * mono_arch_get_call_target:
  *
@@ -1046,5 +1228,11 @@ mono_arch_get_call_target (guint8 *code)
 guint32
 mono_arch_get_plt_info_offset (guint8 *plt_entry, mgreg_t *regs, guint8 *code)
 {
+#if defined(__native_client__) || defined(__native_client_codegen__)
+	/* 18 = 3 (mov opcode) + 4 (disp) + 10 (nacljmp) + 1 (push opcode) */
+	/* See aot-compiler.c arch_emit_plt_entry for details.             */
+	return *(guint32*)(plt_entry + 18);
+#else
 	return *(guint32*)(plt_entry + 6);
+#endif
 }
diff --git a/mono/mini/tramp-arm.c b/mono/mini/tramp-arm.c
index 38a0811..20b2ec8 100644
--- a/mono/mini/tramp-arm.c
+++ b/mono/mini/tramp-arm.c
@@ -59,6 +59,16 @@ mono_arch_patch_plt_entry (guint8 *code, gpointer *got, mgreg_t *regs, guint8 *a
 		guint32 offset = ((guint32*)code)[2];
 		
 		jump_entry = code + offset + 12;
+	} else if (*(guint16*)(code - 4) == 0xf8df) {
+		/* 
+		 * Thumb PLT entry, begins with ldr.w ip, [pc, #8], code points to entry + 4, see
+		 * mono_arm_get_thumb_plt_entry ().
+		 */
+		guint32 offset;
+
+		code -= 4;
+		offset = *(guint32*)(code + 12);
+		jump_entry = code + offset + 8;
 	} else {
 		g_assert_not_reached ();
 	}
@@ -147,13 +157,13 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf
 	 * regs on the stack (all but PC and SP). The original LR value has been
 	 * saved as sp + LR_OFFSET by the push in the specific trampoline
 	 */
-#define LR_OFFSET (sizeof (gpointer) * 13)
+#define LR_OFFSET (sizeof (mgreg_t) * 13)
 
 	// FIXME: Finish the unwind info, the current info allows us to unwind
 	// when the trampoline is not in the epilog
 
 	// CFA = SP + (num registers pushed) * 4
-	cfa_offset = 14 * sizeof (gpointer);
+	cfa_offset = 14 * sizeof (mgreg_t);
 	mono_add_unwind_op_def_cfa (unwind_ops, code, buf, ARMREG_SP, cfa_offset);
 	// PC saved at sp+LR_OFFSET
 	mono_add_unwind_op_offset (unwind_ops, code, buf, ARMREG_LR, -4);
@@ -198,8 +208,8 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf
 	 * The pointer to the struct is put in r1.
 	 * the iregs array is already allocated on the stack by push.
 	 */
-	ARM_SUB_REG_IMM8 (code, ARMREG_SP, ARMREG_SP, sizeof (MonoLMF) - sizeof (guint) * 14);
-	cfa_offset += sizeof (MonoLMF) - sizeof (guint) * 14;
+	ARM_SUB_REG_IMM8 (code, ARMREG_SP, ARMREG_SP, sizeof (MonoLMF) - sizeof (mgreg_t) * 14);
+	cfa_offset += sizeof (MonoLMF) - sizeof (mgreg_t) * 14;
 	mono_add_unwind_op_def_cfa_offset (unwind_ops, code, buf, cfa_offset);
 	ARM_ADD_REG_IMM8 (code, ARMREG_R1, ARMREG_SP, STACK - sizeof (MonoLMF));
 	/* r0 is the result from mono_get_lmf_addr () */
@@ -218,7 +228,7 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf
 	}
 	/* Save sp into lmf->iregs, the eh code expects it to be at IP */
 	ARM_ADD_REG_IMM8 (code, ARMREG_R2, ARMREG_SP, cfa_offset);
-	ARM_STR_IMM (code, ARMREG_R2, ARMREG_R1, G_STRUCT_OFFSET (MonoLMF, iregs) + (ARMREG_IP * 4));
+	ARM_STR_IMM (code, ARMREG_R2, ARMREG_R1, G_STRUCT_OFFSET (MonoLMF, iregs) + (ARMREG_IP * sizeof (mgreg_t)));
 	ARM_STR_IMM (code, ARMREG_SP, ARMREG_R1, G_STRUCT_OFFSET (MonoLMF, esp));
 	/* save the IP (caller ip) */
 	if (tramp_type == MONO_TRAMPOLINE_JUMP) {
@@ -267,7 +277,7 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf
 	 * clobbered). This way we can just restore all the regs in one inst
 	 * and branch to IP.
 	 */
-	ARM_STR_IMM (code, ARMREG_R0, ARMREG_V1, (ARMREG_R12 * 4));
+	ARM_STR_IMM (code, ARMREG_R0, ARMREG_V1, (ARMREG_R12 * sizeof (mgreg_t)));
 
 	/* Check for thread interruption */
 	/* This is not perf critical code so no need to check the interrupt flag */
@@ -310,12 +320,12 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf
 	/* Restore the registers and jump to the code:
 	 * Note that IP has been conveniently set to the method addr.
 	 */
-	ARM_ADD_REG_IMM8 (code, ARMREG_SP, ARMREG_SP, sizeof (MonoLMF) - sizeof (guint) * 14);
+	ARM_ADD_REG_IMM8 (code, ARMREG_SP, ARMREG_SP, sizeof (MonoLMF) - sizeof (mgreg_t) * 14);
 	ARM_POP_NWB (code, 0x5fff);
 	if (tramp_type == MONO_TRAMPOLINE_RGCTX_LAZY_FETCH)
 		ARM_MOV_REG_REG (code, ARMREG_R0, ARMREG_IP);
 	/* do we need to set sp? */
-	ARM_ADD_REG_IMM8 (code, ARMREG_SP, ARMREG_SP, (14 * 4));
+	ARM_ADD_REG_IMM8 (code, ARMREG_SP, ARMREG_SP, (14 * sizeof (mgreg_t)));
 	if ((tramp_type == MONO_TRAMPOLINE_CLASS_INIT) || (tramp_type == MONO_TRAMPOLINE_GENERIC_CLASS_INIT) || (tramp_type == MONO_TRAMPOLINE_RGCTX_LAZY_FETCH))
 		code = emit_bx (code, ARMREG_LR);
 	else
@@ -379,7 +389,7 @@ mono_arch_create_specific_trampoline (gpointer arg1, MonoTrampolineType tramp_ty
 
 	mono_domain_lock (domain);
 	code = buf = mono_domain_code_reserve_align (domain, size, 4);
-	if ((short_branch = branch_for_target_reachable (code + 8, tramp))) {
+	if ((short_branch = branch_for_target_reachable (code + 4, tramp))) {
 		size = 12;
 		mono_domain_code_commit (domain, code, SPEC_TRAMP_SIZE, size);
 	}
@@ -428,7 +438,6 @@ mono_arch_create_specific_trampoline (gpointer arg1, MonoTrampolineType tramp_ty
 
 /*
  * mono_arch_get_unbox_trampoline:
- * @gsctx: the generic sharing context
  * @m: method pointer
  * @addr: pointer to native code for @m
  *
@@ -437,7 +446,7 @@ mono_arch_create_specific_trampoline (gpointer arg1, MonoTrampolineType tramp_ty
  * unboxing before calling the method
  */
 gpointer
-mono_arch_get_unbox_trampoline (MonoGenericSharingContext *gsctx, MonoMethod *m, gpointer addr)
+mono_arch_get_unbox_trampoline (MonoMethod *m, gpointer addr)
 {
 	guint8 *code, *start;
 	MonoDomain *domain = mono_domain_get ();
@@ -496,7 +505,6 @@ mono_arch_create_rgctx_lazy_fetch_trampoline (guint32 slot, MonoTrampInfo **info
 	gboolean mrgctx;
 	MonoJumpInfo *ji = NULL;
 	GSList *unwind_ops = NULL;
-	char *name;
 
 	mrgctx = MONO_RGCTX_SLOT_IS_MRGCTX (slot);
 	index = MONO_RGCTX_SLOT_INDEX (slot);
@@ -682,7 +690,7 @@ mono_arch_create_specific_trampoline (gpointer arg1, MonoTrampolineType tramp_ty
 }
 
 gpointer
-mono_arch_get_unbox_trampoline (MonoGenericSharingContext *gsctx, MonoMethod *m, gpointer addr)
+mono_arch_get_unbox_trampoline (MonoMethod *m, gpointer addr)
 {
 	g_assert_not_reached ();
 	return NULL;
@@ -733,3 +741,52 @@ mono_arch_get_plt_info_offset (guint8 *plt_entry, mgreg_t *regs, guint8 *code)
 	/* The offset is stored as the 4th word of the plt entry */
 	return ((guint32*)plt_entry) [3];
 }
+
+/*
+ * Return the address of the PLT entry called by the thumb code CODE.
+ */
+guint8*
+mono_arm_get_thumb_plt_entry (guint8 *code)
+{
+	int s, j1, j2, imm10, imm11, i1, i2, imm32;
+	guint8 *bl, *base;
+	guint16 t1, t2;
+	guint8 *target;
+
+	/* code should be right after a BL */
+	code = (guint8*)((mgreg_t)code & ~1);
+	base = (guint8*)((mgreg_t)code & ~3);
+	bl = code - 4;
+	t1 = ((guint16*)bl) [0];
+	t2 = ((guint16*)bl) [1];
+
+	g_assert ((t1 >> 11) == 0x1e);
+
+	s = (t1 >> 10) & 0x1;
+	imm10 = (t1 >> 0) & 0x3ff;
+	j1 = (t2 >> 13) & 0x1;
+	j2 = (t2 >> 11) & 0x1;
+	imm11 = t2 & 0x7ff;
+
+	i1 = (s ^ j1) ? 0 : 1;
+	i2 = (s ^ j2) ? 0 : 1;
+
+	imm32 = (imm11 << 1) | (imm10 << 12) | (i2 << 22) | (i1 << 23);
+	// FIXME:
+	g_assert (s == 0);
+
+	target = code + imm32;
+
+	/* target now points to the thumb plt entry */
+	/* ldr.w r12, [pc, #8] */
+	g_assert (((guint16*)target) [0] == 0xf8df);
+	g_assert (((guint16*)target) [1] == 0xc008);
+
+	/* 
+	 * The PLT info offset is at offset 16, but mono_arch_get_plt_entry_offset () returns
+	 * the 3rd word, so compensate by returning a different value.
+	 */
+	target += 4;
+
+	return target;
+}
diff --git a/mono/mini/tramp-ia64.c b/mono/mini/tramp-ia64.c
index 6a2dc90..c95d26f 100644
--- a/mono/mini/tramp-ia64.c
+++ b/mono/mini/tramp-ia64.c
@@ -24,7 +24,6 @@
 
 /*
  * mono_arch_get_unbox_trampoline:
- * @gsctx: the generic sharing context
  * @m: method pointer
  * @addr: pointer to native code for @m
  *
@@ -33,7 +32,7 @@
  * unboxing before calling the method
  */
 gpointer
-mono_arch_get_unbox_trampoline (MonoGenericSharingContext *gsctx, MonoMethod *m, gpointer addr)
+mono_arch_get_unbox_trampoline (MonoMethod *m, gpointer addr)
 {
 	guint8 *buf;
 	gpointer func_addr, func_gp;
@@ -44,9 +43,6 @@ mono_arch_get_unbox_trampoline (MonoGenericSharingContext *gsctx, MonoMethod *m,
 
 	/* FIXME: Optimize this */
 
-	if (MONO_TYPE_ISSTRUCT (mono_method_signature (m)->ret))
-		this_reg = 1;
-
 	func_addr = ((gpointer*)addr) [0];
 	func_gp = ((gpointer*)addr) [1];
 
diff --git a/mono/mini/tramp-mips.c b/mono/mini/tramp-mips.c
index 21557ee..f124a4b 100644
--- a/mono/mini/tramp-mips.c
+++ b/mono/mini/tramp-mips.c
@@ -28,7 +28,6 @@ static guint8* nullified_class_init_trampoline;
 
 /*
  * get_unbox_trampoline:
- * @gsctx: the generic sharing context
  * @m: method pointer
  * @addr: pointer to native code for @m
  *
@@ -37,7 +36,7 @@ static guint8* nullified_class_init_trampoline;
  * unboxing before calling the method
  */
 gpointer
-mono_arch_get_unbox_trampoline (MonoGenericSharingContext *gsctx, MonoMethod *m, gpointer addr)
+mono_arch_get_unbox_trampoline (MonoMethod *m, gpointer addr)
 {
 	guint8 *code, *start;
 	int this_pos = mips_a0;
diff --git a/mono/mini/tramp-ppc.c b/mono/mini/tramp-ppc.c
index 8021952..2972348 100644
--- a/mono/mini/tramp-ppc.c
+++ b/mono/mini/tramp-ppc.c
@@ -63,7 +63,6 @@ branch_for_target_reachable (guint8 *branch, guint8 *target)
 
 /*
  * get_unbox_trampoline:
- * @gsctx: the generic sharing context
  * @m: method pointer
  * @addr: pointer to native code for @m
  *
@@ -72,7 +71,7 @@ branch_for_target_reachable (guint8 *branch, guint8 *target)
  * unboxing before calling the method
  */
 gpointer
-mono_arch_get_unbox_trampoline (MonoGenericSharingContext *gsctx, MonoMethod *m, gpointer addr)
+mono_arch_get_unbox_trampoline (MonoMethod *m, gpointer addr)
 {
 	guint8 *code, *start;
 	int this_pos = 3;
diff --git a/mono/mini/tramp-s390.c b/mono/mini/tramp-s390.c
index 3f7eb40..284e419 100644
--- a/mono/mini/tramp-s390.c
+++ b/mono/mini/tramp-s390.c
@@ -82,14 +82,13 @@
 /*                When value type methods are called through the    */
 /*		  vtable we need to unbox the 'this' argument.	    */
 /*		                               		 	    */
-/* Parameters   - gsctx  - Generic sharing context		    */
-/*                method - Methd pointer			    */
+/* Parameters   - method - Methd pointer			    */
 /*		  addr   - Pointer to native code for method	    */
 /*		                               		 	    */
 /*------------------------------------------------------------------*/
 
 gpointer
-mono_arch_get_unbox_trampoline (MonoGenericSharingContext *gsctx, MonoMethod *method, gpointer addr)
+mono_arch_get_unbox_trampoline (MonoMethod *method, gpointer addr)
 {
 	guint8 *code, *start;
 	int this_pos = s390_r2;
diff --git a/mono/mini/tramp-s390x.c b/mono/mini/tramp-s390x.c
index 945ffa3..bc9ba8c 100644
--- a/mono/mini/tramp-s390x.c
+++ b/mono/mini/tramp-s390x.c
@@ -82,14 +82,13 @@
 /*                When value type methods are called through the    */
 /*		  vtable we need to unbox the 'this' argument.	    */
 /*		                               		 	    */
-/* Parameters   - gsctx  - Generic sharing context		    */
-/*                method - Methd pointer			    */
+/* Parameters   - method - Methd pointer			    */
 /*		  addr   - Pointer to native code for method	    */
 /*		                               		 	    */
 /*------------------------------------------------------------------*/
 
 gpointer
-mono_arch_get_unbox_trampoline (MonoGenericSharingContext *gsctx, MonoMethod *method, gpointer addr)
+mono_arch_get_unbox_trampoline (MonoMethod *method, gpointer addr)
 {
 	guint8 *code, *start;
 	int this_pos = s390_r2;
diff --git a/mono/mini/tramp-sparc.c b/mono/mini/tramp-sparc.c
index 6fbee01..a1f5afd 100644
--- a/mono/mini/tramp-sparc.c
+++ b/mono/mini/tramp-sparc.c
@@ -21,7 +21,6 @@
 
 /*
  * mono_arch_get_unbox_trampoline:
- * @gsctx: the generic sharing context
  * @m: method pointer
  * @addr: pointer to native code for @m
  *
@@ -30,14 +29,11 @@
  * unboxing before calling the method
  */
 gpointer
-mono_arch_get_unbox_trampoline (MonoGenericSharingContext *gsctx, MonoMethod *m, gpointer addr)
+mono_arch_get_unbox_trampoline (MonoMethod *m, gpointer addr)
 {
 	guint8 *code, *start;
-	int this_pos = 4, reg;
+	int reg;
 
-	if (MONO_TYPE_ISSTRUCT (mono_method_signature (m)->ret))
-		this_pos = 8;
-	    
 	start = code = mono_global_codeman_reserve (36);
 
 	/* This executes in the context of the caller, hence o0 */
diff --git a/mono/mini/tramp-x86.c b/mono/mini/tramp-x86.c
index 1a15c3d..7da21c2 100644
--- a/mono/mini/tramp-x86.c
+++ b/mono/mini/tramp-x86.c
@@ -17,6 +17,7 @@
 #include <mono/metadata/mono-debug.h>
 #include <mono/metadata/mono-debug-debugger.h>
 #include <mono/metadata/monitor.h>
+#include <mono/metadata/gc-internal.h>
 #include <mono/arch/x86/x86-codegen.h>
 
 #include <mono/utils/memcheck.h>
@@ -28,7 +29,6 @@ static guint8* nullified_class_init_trampoline;
 
 /*
  * mono_arch_get_unbox_trampoline:
- * @gsctx: the generic sharing context
  * @m: method pointer
  * @addr: pointer to native code for @m
  *
@@ -37,7 +37,7 @@ static guint8* nullified_class_init_trampoline;
  * unboxing before calling the method
  */
 gpointer
-mono_arch_get_unbox_trampoline (MonoGenericSharingContext *gsctx, MonoMethod *m, gpointer addr)
+mono_arch_get_unbox_trampoline (MonoMethod *m, gpointer addr)
 {
 	guint8 *code, *start;
 	int this_pos = 4;
@@ -49,6 +49,8 @@ mono_arch_get_unbox_trampoline (MonoGenericSharingContext *gsctx, MonoMethod *m,
 	x86_jump_code (code, addr);
 	g_assert ((code - start) < 16);
 
+	nacl_domain_code_validate (domain, &start, 16, &code);
+
 	return start;
 }
 
@@ -68,6 +70,7 @@ mono_arch_get_static_rgctx_trampoline (MonoMethod *m, MonoMethodRuntimeGenericCo
 	x86_jump_code (code, addr);
 	g_assert ((code - start) <= buf_len);
 
+	nacl_domain_code_validate (domain, &start, buf_len, &code);
 	mono_arch_flush_icache (start, code - start);
 
 	return start;
@@ -96,6 +99,8 @@ mono_arch_get_llvm_imt_trampoline (MonoDomain *domain, MonoMethod *m, int vt_off
 
 	g_assert ((code - start) < buf_len);
 
+	nacl_domain_code_validate (domain, &start, buf_len, &code);
+
 	mono_arch_flush_icache (start, code - start);
 
 	return start;
@@ -104,6 +109,7 @@ mono_arch_get_llvm_imt_trampoline (MonoDomain *domain, MonoMethod *m, int vt_off
 void
 mono_arch_patch_callsite (guint8 *method_start, guint8 *orig_code, guint8 *addr)
 {
+#if defined(__default_codegen__)
 	guint8 *code;
 	guint8 buf [8];
 	gboolean can_write = mono_breakpoint_clean_code (method_start, orig_code, 8, buf, sizeof (buf));
@@ -135,6 +141,23 @@ mono_arch_patch_callsite (guint8 *method_start, guint8 *orig_code, guint8 *addr)
 				code [4], code [5], code [6]);
 		g_assert_not_reached ();
 	}
+#elif defined(__native_client__)
+	/* Target must be bundle-aligned */
+	g_assert (((guint32)addr & kNaClAlignmentMask) == 0);
+
+	/* 0xe8 = call <DISP>, 0xe9 = jump <DISP> */
+	if ((orig_code [-5] == 0xe8) || orig_code [-6] == 0xe9) {
+		int ret;
+		gint32 offset = (gint32)addr - (gint32)orig_code;
+		guint8 buf[sizeof(gint32)];
+		*((gint32*)(buf)) = offset;
+		ret = nacl_dyncode_modify (orig_code - sizeof(gint32), buf, sizeof(gint32));
+		g_assert (ret == 0);
+	} else {
+		printf ("Invalid trampoline sequence %p: %02x %02x %02x %02x %02x\n", orig_code, orig_code [-5], orig_code [-4], orig_code [-3], orig_code [-2], orig_code[-1]);
+		g_assert_not_reached ();
+	}
+#endif
 }
 
 void
@@ -154,7 +177,7 @@ mono_arch_patch_plt_entry (guint8 *code, gpointer *got, mgreg_t *regs, guint8 *a
 	g_assert (code [1] == 0x8b);
 
 	offset = *(guint32*)(code + 2);
-#else
+#elif defined(__default_codegen__)
 	/* A PLT entry: jmp *<DISP>(%ebx) */
 	g_assert (code [0] == 0xff);
 	g_assert (code [1] == 0xa3);
@@ -222,6 +245,7 @@ mono_arch_nullify_class_init_trampoline (guint8 *code, mgreg_t *regs)
 
 	code -= 5;
 	if (code [0] == 0xe8) {
+#if defined(__default_codegen__)
 		if (!mono_running_on_valgrind ()) {
 			guint32 ops;
 			/*
@@ -248,6 +272,9 @@ mono_arch_nullify_class_init_trampoline (guint8 *code, mgreg_t *regs)
 			/* Tell valgrind to recompile the patched code */
 			//VALGRIND_DISCARD_TRANSLATIONS (code, 8);
 		}
+#elif defined(__native_client_codegen__)
+		mono_arch_patch_callsite (code, code + 5, nullified_class_init_trampoline);
+#endif
 	} else if (code [0] == 0x90 || code [0] == 0xeb) {
 		/* Already changed by another thread */
 		;
@@ -499,6 +526,7 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf
 
 	x86_ret (code);
 
+	nacl_global_codeman_validate (&buf, 256, &code);
 	g_assert ((code - buf) <= 256);
 
 	if (info)
@@ -516,15 +544,21 @@ gpointer
 mono_arch_get_nullified_class_init_trampoline (MonoTrampInfo **info)
 {
 	guint8 *code, *buf;
+	int tramp_size = NACL_SIZE (16, kNaClAlignment);		
 
-	code = buf = mono_global_codeman_reserve (16);
+	code = buf = mono_global_codeman_reserve (tramp_size);
 	x86_ret (code);
 
+	nacl_global_codeman_validate (&buf, tramp_size, &code);
+
 	mono_arch_flush_icache (buf, code - buf);
 
 	if (info)
 		*info = mono_tramp_info_create (g_strdup_printf ("nullified_class_init_trampoline"), buf, code - buf, NULL, NULL);
 
+	if (mono_jit_map_is_enabled ())
+		mono_emit_jit_tramp (buf, code - buf, "nullified_class_init_trampoline");
+
 	return buf;
 }
 
@@ -543,6 +577,8 @@ mono_arch_create_specific_trampoline (gpointer arg1, MonoTrampolineType tramp_ty
 	x86_jump_code (buf, tramp);
 	g_assert ((buf - code) <= TRAMPOLINE_SIZE);
 
+	nacl_domain_code_validate (domain, &code, NACL_SIZE (4, kNaClAlignment), &buf);
+
 	mono_arch_flush_icache (code, buf - code);
 
 	if (code_len)
@@ -578,13 +614,12 @@ mono_arch_create_rgctx_lazy_fetch_trampoline (guint32 slot, MonoTrampInfo **info
 		index -= size - 1;
 	}
 
-#ifdef __native_client_codegen__
-	/* TODO: align for Native Client */
-	tramp_size = (aot ? 64 : 36) + 2 * kNaClAlignment +
-		6 * (depth + kNaClAlignment);
-#else
+#if defined(__default_codegen__)
 	tramp_size = (aot ? 64 : 36) + 6 * depth;
-#endif  /* __native_client_codegen__ */
+#elif defined(__native_client_codegen__)
+	tramp_size = (aot ? 64 : 36) + 2 * kNaClAlignment +
+	  6 * (depth + kNaClAlignment);
+#endif
 
 	code = buf = mono_global_codeman_reserve (tramp_size);
 
@@ -642,6 +677,7 @@ mono_arch_create_rgctx_lazy_fetch_trampoline (guint32 slot, MonoTrampInfo **info
 		x86_jump_code (code, tramp);
 	}
 
+	nacl_global_codeman_validate (&buf, tramp_size, &code);
 	mono_arch_flush_icache (buf, code - buf);
 
 	g_assert (code - buf <= tramp_size);
@@ -700,6 +736,9 @@ mono_arch_create_generic_class_init_trampoline (MonoTrampInfo **info, gboolean a
 #ifdef __native_client_codegen__
 	g_assert (code - buf <= kNaClAlignment);
 #endif
+
+	nacl_global_codeman_validate (&buf, tramp_size, &code);
+
 	if (info)
 		*info = mono_tramp_info_create (g_strdup_printf ("generic_class_init_trampoline"), buf, code - buf, ji, unwind_ops);
 
@@ -730,7 +769,7 @@ mono_arch_create_monitor_enter_trampoline (MonoTrampInfo **info, gboolean aot)
 {
 	guint8 *tramp = mono_get_trampoline_code (MONO_TRAMPOLINE_MONITOR_ENTER);
 	guint8 *code, *buf;
-	guint8 *jump_obj_null, *jump_sync_null, *jump_other_owner, *jump_cmpxchg_failed, *jump_tid;
+	guint8 *jump_obj_null, *jump_sync_null, *jump_other_owner, *jump_cmpxchg_failed, *jump_tid, *jump_sync_thin_hash = NULL;
 	int tramp_size;
 	int owner_offset, nest_offset, dummy;
 	MonoJumpInfo *ji = NULL;
@@ -758,8 +797,21 @@ mono_arch_create_monitor_enter_trampoline (MonoTrampInfo **info, gboolean aot)
 
 		/* load obj->synchronization to ECX */
 		x86_mov_reg_membase (code, X86_ECX, X86_EAX, G_STRUCT_OFFSET (MonoObject, synchronisation), 4);
+
+		if (mono_gc_is_moving ()) {
+			/*if bit zero is set it's a thin hash*/
+			/*FIXME use testb encoding*/
+			x86_test_reg_imm (code, X86_ECX, 0x01);
+			jump_sync_thin_hash = code;
+			x86_branch8 (code, X86_CC_NE, -1, 1);
+
+			/*clear bits used by the gc*/
+			x86_alu_reg_imm (code, X86_AND, X86_ECX, ~0x3);
+		}
+
 		/* is synchronization null? */
 		x86_test_reg_reg (code, X86_ECX, X86_ECX);
+
 		/* if yes, jump to actual trampoline */
 		jump_sync_null = code;
 		x86_branch8 (code, X86_CC_Z, -1, 1);
@@ -804,6 +856,8 @@ mono_arch_create_monitor_enter_trampoline (MonoTrampInfo **info, gboolean aot)
 
 		/* push obj */
 		x86_patch (jump_obj_null, code);
+		if (jump_sync_thin_hash)
+			x86_patch (jump_sync_thin_hash, code);
 		x86_patch (jump_sync_null, code);
 		x86_patch (jump_other_owner, code);
 		x86_push_reg (code, X86_EAX);
@@ -832,6 +886,8 @@ mono_arch_create_monitor_enter_trampoline (MonoTrampInfo **info, gboolean aot)
 	mono_arch_flush_icache (buf, code - buf);
 	g_assert (code - buf <= tramp_size);
 
+	nacl_global_codeman_validate (&buf, tramp_size, &code);
+
 	if (info)
 		*info = mono_tramp_info_create (g_strdup_printf ("monitor_enter_trampoline"), buf, code - buf, ji, unwind_ops);
 
@@ -843,7 +899,7 @@ mono_arch_create_monitor_exit_trampoline (MonoTrampInfo **info, gboolean aot)
 {
 	guint8 *tramp = mono_get_trampoline_code (MONO_TRAMPOLINE_MONITOR_EXIT);
 	guint8 *code, *buf;
-	guint8 *jump_obj_null, *jump_have_waiters, *jump_sync_null, *jump_not_owned;
+	guint8 *jump_obj_null, *jump_have_waiters, *jump_sync_null, *jump_not_owned, *jump_sync_thin_hash = NULL;
 	guint8 *jump_next;
 	int tramp_size;
 	int owner_offset, nest_offset, entry_count_offset;
@@ -860,7 +916,7 @@ mono_arch_create_monitor_exit_trampoline (MonoTrampInfo **info, gboolean aot)
 	nest_offset = MONO_THREADS_SYNC_MEMBER_OFFSET (nest_offset);
 	entry_count_offset = MONO_THREADS_SYNC_MEMBER_OFFSET (entry_count_offset);
 
-	tramp_size = NACL_SIZE (64, 128);
+	tramp_size = NACL_SIZE (96, 128);
 
 	code = buf = mono_global_codeman_reserve (tramp_size);
 
@@ -874,6 +930,18 @@ mono_arch_create_monitor_exit_trampoline (MonoTrampInfo **info, gboolean aot)
 
 		/* load obj->synchronization to ECX */
 		x86_mov_reg_membase (code, X86_ECX, X86_EAX, G_STRUCT_OFFSET (MonoObject, synchronisation), 4);
+
+		if (mono_gc_is_moving ()) {
+			/*if bit zero is set it's a thin hash*/
+			/*FIXME use testb encoding*/
+			x86_test_reg_imm (code, X86_ECX, 0x01);
+			jump_sync_thin_hash = code;
+			x86_branch8 (code, X86_CC_NE, -1, 1);
+
+			/*clear bits used by the gc*/
+			x86_alu_reg_imm (code, X86_AND, X86_ECX, ~0x3);
+		}
+
 		/* is synchronization null? */
 		x86_test_reg_reg (code, X86_ECX, X86_ECX);
 		/* if yes, jump to actual trampoline */
@@ -914,6 +982,8 @@ mono_arch_create_monitor_exit_trampoline (MonoTrampInfo **info, gboolean aot)
 
 		/* push obj and jump to the actual trampoline */
 		x86_patch (jump_obj_null, code);
+		if (jump_sync_thin_hash)
+			x86_patch (jump_sync_thin_hash, code);
 		x86_patch (jump_have_waiters, code);
 		x86_patch (jump_not_owned, code);
 		x86_patch (jump_sync_null, code);
@@ -928,6 +998,8 @@ mono_arch_create_monitor_exit_trampoline (MonoTrampInfo **info, gboolean aot)
 		x86_jump_code (code, tramp);
 	}
 
+	nacl_global_codeman_validate (&buf, tramp_size, &code);
+
 	mono_arch_flush_icache (buf, code - buf);
 	g_assert (code - buf <= tramp_size);
 
@@ -988,18 +1060,26 @@ mono_arch_create_handler_block_trampoline (void)
 		code = mono_x86_emit_tls_get (code, X86_EAX, mono_get_jit_tls_offset ());
 		x86_mov_reg_membase (code, X86_EAX, X86_EAX, G_STRUCT_OFFSET (MonoJitTlsData, handler_block_return_address), 4);
 		/*simulate a call*/
+		/*Fix stack alignment*/
+		x86_alu_reg_imm (code, X86_SUB, X86_ESP, 0x8);
 		x86_push_reg (code, X86_EAX);
 		x86_jump_code (code, tramp);
 	} else {
 		/*Slow path uses a c helper*/
+		x86_alu_reg_imm (code, X86_SUB, X86_ESP, 0x8);
 		x86_push_reg (code, X86_ESP);
 		x86_push_imm (code, tramp);
 		x86_jump_code (code, handler_block_trampoline_helper);
 	}
 
+	nacl_global_codeman_validate (&buf, tramp_size, &code);
+
 	mono_arch_flush_icache (buf, code - buf);
 	g_assert (code - buf <= tramp_size);
 
+	if (mono_jit_map_is_enabled ())
+		mono_emit_jit_tramp (buf, code - buf, "handler_block_trampoline");
+
 	return buf;
 }
 
diff --git a/mono/mini/unwind.c b/mono/mini/unwind.c
index b564c51..754081f 100644
--- a/mono/mini/unwind.c
+++ b/mono/mini/unwind.c
@@ -319,12 +319,16 @@ print_dwarf_state (int cfa_reg, int cfa_offset, int ip, int nregs, Loc *location
  * Given the state of the current frame as stored in REGS, execute the unwind 
  * operations in unwind_info until the location counter reaches POS. The result is 
  * stored back into REGS. OUT_CFA will receive the value of the CFA.
+ * If SAVE_LOCATIONS is non-NULL, it should point to an array of size SAVE_LOCATIONS_LEN.
+ * On return, the nth entry will point to the address of the stack slot where register
+ * N was saved, or NULL, if it was not saved by this frame.
  * This function is signal safe.
  */
 void
 mono_unwind_frame (guint8 *unwind_info, guint32 unwind_info_len, 
-				   guint8 *start_ip, guint8 *end_ip, guint8 *ip, mgreg_t *regs, 
-				   int nregs, guint8 **out_cfa)
+				   guint8 *start_ip, guint8 *end_ip, guint8 *ip, mgreg_t *regs, int nregs,
+				   mgreg_t **save_locations, int save_locations_len,
+				   guint8 **out_cfa)
 {
 	Loc locations [NUM_REGS];
 	int i, pos, reg, cfa_reg, cfa_offset;
@@ -386,12 +390,17 @@ mono_unwind_frame (guint8 *unwind_info, guint32 unwind_info_len,
 		}
 	}
 
+	if (save_locations)
+		memset (save_locations, 0, save_locations_len * sizeof (mgreg_t*));
+
 	cfa_val = (guint8*)regs [mono_dwarf_reg_to_hw_reg (cfa_reg)] + cfa_offset;
 	for (i = 0; i < NUM_REGS; ++i) {
 		if (locations [i].loc_type == LOC_OFFSET) {
 			int hreg = mono_dwarf_reg_to_hw_reg (i);
 			g_assert (hreg < nregs);
 			regs [hreg] = *(mgreg_t*)(cfa_val + locations [i].offset);
+			if (save_locations && hreg < save_locations_len)
+				save_locations [hreg] = (mgreg_t*)(cfa_val + locations [i].offset);
 		}
 	}
 
@@ -770,6 +779,14 @@ decode_lsda (guint8 *lsda, guint8 *code, MonoJitExceptionInfo **ex_info, guint32
 				gint32 offset = *(gint32*)ttype_entry;
 				guint8 *stub = ttype_entry + offset;
 				tinfo = *(gpointer*)stub;
+			} else if (ttype_encoding == (DW_EH_PE_pcrel | DW_EH_PE_sdata4)) {
+				guint8 *ttype_entry = (ttype - (type_offset * 4));
+				gint32 offset = *(gint32*)ttype_entry;
+				tinfo = ttype_entry + offset;
+			} else if (ttype_encoding == DW_EH_PE_udata4) {
+				/* Embedded directly */
+				guint8 *ttype_entry = (ttype - (type_offset * 4));
+				tinfo = ttype_entry;
 			} else {
 				g_assert_not_reached ();
 			}
@@ -924,7 +941,6 @@ mono_unwind_decode_fde (guint8 *fde, guint32 *out_len, guint32 *code_len, MonoJi
 		}
 	}
 
-
 	/* Make sure the FDE uses the same constants as we do */
 	g_assert (code_align == 1);
 	g_assert (data_align == DWARF_DATA_ALIGN);
@@ -961,6 +977,85 @@ mono_unwind_decode_fde (guint8 *fde, guint32 *out_len, guint32 *code_len, MonoJi
 }
 
 /*
+ * mono_unwind_decode_mono_fde:
+ *
+ *   Decode an FDE entry in the LLVM emitted mono EH frame.
+ * info->ex_info is set to a malloc-ed array of MonoJitExceptionInfo structures,
+ * only try_start, try_end and handler_start is set.
+ * info->type_info is set to a malloc-ed array containing the ttype table from the
+ * LSDA.
+ */
+void
+mono_unwind_decode_llvm_mono_fde (guint8 *fde, int fde_len, guint8 *cie, guint8 *code, MonoLLVMFDEInfo *res)
+{
+	guint8 *p, *fde_aug, *cie_cfi, *fde_cfi, *buf;
+	int has_aug, aug_len, cie_cfi_len, fde_cfi_len;
+	gint32 code_align, data_align, return_reg, pers_encoding;
+
+	memset (res, 0, sizeof (*res));
+	res->this_reg = -1;
+	res->this_offset = -1;
+
+	/* fde points to data emitted by LLVM in DwarfException::EmitMonoEHFrame () */
+	p = fde;
+	has_aug = *p;
+	p ++;
+	if (has_aug) {
+		aug_len = read32 (p);
+		p += 4;
+	} else {
+		aug_len = 0;
+	}
+	fde_aug = p;
+	p += aug_len;
+	fde_cfi = p;
+
+	if (has_aug) {
+		guint8 *lsda;
+
+		/* The LSDA is embedded directly into the FDE */
+		lsda = fde_aug;
+
+		decode_lsda (lsda, code, &res->ex_info, &res->ex_info_len, &res->type_info, &res->this_reg, &res->this_offset);
+	}
+
+	/* Decode CIE */
+	p = cie;
+	code_align = decode_uleb128 (p, &p);
+	data_align = decode_sleb128 (p, &p);
+	return_reg = decode_uleb128 (p, &p);
+	pers_encoding = *p;
+	p ++;
+	if (pers_encoding != DW_EH_PE_omit)
+		read_encoded_val (pers_encoding, p, &p);
+
+	cie_cfi = p;
+
+	/* Make sure the FDE uses the same constants as we do */
+	g_assert (code_align == 1);
+	g_assert (data_align == DWARF_DATA_ALIGN);
+	g_assert (return_reg == DWARF_PC_REG);
+
+	/* Compute size of CIE unwind info it is DW_CFA_nop terminated */
+	p = cie_cfi;
+	while (TRUE) {
+		if (*p == DW_CFA_nop)
+			break;
+		else
+			decode_cie_op (p, &p);
+	}
+	cie_cfi_len = p - cie_cfi;
+	fde_cfi_len = (fde + fde_len - fde_cfi);
+
+	buf = g_malloc0 (cie_cfi_len + fde_cfi_len);
+	memcpy (buf, cie_cfi, cie_cfi_len);
+	memcpy (buf + cie_cfi_len, fde_cfi, fde_cfi_len);
+
+	res->unw_info_len = cie_cfi_len + fde_cfi_len;
+	res->unw_info = buf;
+}
+
+/*
  * mono_unwind_get_cie_program:
  *
  *   Get the unwind bytecode for the DWARF CIE.
diff --git a/mono/mini/xdebug.c b/mono/mini/xdebug.c
index 175dc86..136c214 100644
--- a/mono/mini/xdebug.c
+++ b/mono/mini/xdebug.c
@@ -106,15 +106,23 @@ struct jit_descriptor
 void MONO_NOINLINE __jit_debug_register_code(void);
 
 #if !defined(MONO_LLVM_LOADED) && defined(ENABLE_LLVM) && ((LLVM_MAJOR_VERSION == 2 && LLVM_MINOR_VERSION >= 7) || LLVM_MAJOR_VERSION > 2)
+
 /* LLVM already defines these */
 extern struct jit_descriptor __jit_debug_descriptor;
+
 #else
 
 /* Make sure to specify the version statically, because the
    debugger may check the version before we can set it.  */
 struct jit_descriptor __jit_debug_descriptor = { 1, 0, 0, 0 };
 
-void MONO_NOINLINE __jit_debug_register_code(void) { };
+/* gcc seems to inline/eliminate calls to noinline functions, thus the asm () */
+void MONO_NOINLINE __jit_debug_register_code(void) {
+#if defined(__GNUC__)
+	asm ("");
+#endif
+}
+
 #endif
 
 static MonoImageWriter *xdebug_w;
@@ -142,6 +150,11 @@ mono_xdebug_init (char *options)
 
 	/* This file will contain the IL code for methods which don't have debug info */
 	il_file = fopen ("xdb.il", "w");
+	if (il_file == NULL) {
+		use_gdb_interface = FALSE;
+		g_warning ("** Unable to create xdb.il. Managed symbol names won't be available.");
+		return;
+	}
 
 	if (use_gdb_interface)
 		return;
diff --git a/mono/monograph/Makefile.in b/mono/monograph/Makefile.in
index bbecaf0..623d60a 100644
--- a/mono/monograph/Makefile.in
+++ b/mono/monograph/Makefile.in
@@ -154,6 +154,7 @@ MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
 MONO_DL_NEED_USCORE = @MONO_DL_NEED_USCORE@
 MONO_NACL_ALIGN_MASK_OFF = @MONO_NACL_ALIGN_MASK_OFF@
+MOONLIGHT_DEFINES = @MOONLIGHT_DEFINES@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
diff --git a/mono/profiler/ChangeLog b/mono/profiler/ChangeLog
index 9b7b472..b43d50d 100644
--- a/mono/profiler/ChangeLog
+++ b/mono/profiler/ChangeLog
@@ -1,7 +1,278 @@
+2011-01-03  Zoltan Varga  <vargaz at gmail.com>
+
+	.gitignore.
+
+2010-12-17  Paolo Molaro  <lupus at oddwiz.org>
+
+	Log profiler: fix statistical mode on linux amd64.
+
+2010-12-16  Marek Habersack  <grendel at twistedcode.net>
+
+	Fix the build
+
+2010-12-15  Bojan Rajkovic  <bojan at airpoweranalytics.com>
+
+	Correct LDFLAGS on the Darwin platform so the profiler will build.
+
+2010-12-04  Zoltan Varga  <vargaz at gmail.com>
+
+	Set MONO_PATH while running the profiler tests.
+
+2010-12-04  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix make check in profiler/.
+
+2010-12-03  Zoltan Varga  <vargaz at gmail.com>
+
+	Revert a warning fix as it breaks the windows build.
+
+2010-12-02  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix warnings.
+
+2010-12-02  Zoltan Varga  <vargaz at gmail.com>
+
+	Disale logging profiler.
+
+2010-12-01  Paolo Molaro  <lupus at oddwiz.org>
+
+	Log profiler: fixed allocation and call frames end detection in
+	test runner.
+
+2010-12-01  Paolo Molaro  <lupus at oddwiz.org>
+
+	Fixed env path setting.
+
+2010-12-01  Paolo Molaro  <lupus at oddwiz.org>
+
+	Log profiler: added test suite.
+
+2010-11-30  Paolo Molaro  <lupus at oddwiz.org>
+
+	Log profiler: BSD/win32 portability fixes.
+
+2010-11-29  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix amd64 build.
+
+2010-11-29  Paolo Molaro  <lupus at oddwiz.org>
+
+	Make dist fixed in profiler.
+
+2010-11-29  Paolo Molaro  <lupus at oddwiz.org>
+
+	M linux performance counters. Added missing file for
+
+2010-11-29  Paolo Molaro  <lupus at oddwiz.org>
+
+	Log profiler: portability checks.
+
+2010-11-29  Paolo Molaro  <lupus at oddwiz.org>
+
+	* log-profiler.txt: updated the documentation. * decode.c: added
+	jit report and sample report. * proflog.h, proflog.c: implemented
+	statistical sampling mode, using either the mono built-in signal
+	based sampling and the Linux perforamnce counters perf subsystem.
+	Unmanaged symbols are currently available for ELF systems
+	implementing dl_iterate_phdr() or systems implementing dladdr().
+
+2010-11-21  Zoltan Varga  <vargaz at gmail.com>
+
+	Link the iomap profiler against eglib. Fixes #627889.
+
+2010-11-17  Paolo Molaro  <lupus at oddwiz.org>
+
+	Log profiler: be more specific about unknown methods and classes.
+
+2010-11-17  Paolo Molaro  <lupus at oddwiz.org>
+
+	Log profiler: implemented command server and ondemand heapshot.
+
+2010-11-17  Paolo Molaro  <lupus at oddwiz.org>
+
+	Log profiler: track GC time per thread so it's properly
+	calculated.
+
+2010-11-16  Paolo Molaro  <lupus at oddwiz.org>
+
+	Log profiler: collect root information during GC.
+
+2010-11-16  joncham  <joncham at gmail.com>
+
+	Fix #ifdef to fix windows build.
+
+2010-11-16  KISHIMOTO Makoto  <ksmakoto at dd.iij4u.or.jp>
+
+	Fix profiler build on freebsd.
+
+2010-11-12  Paolo Molaro  <lupus at oddwiz.org>
+
+	Log profiler: removed the hsmode option, use heapshot=MODE
+	instead.
+
+2010-11-12  Paolo Molaro  <lupus at oddwiz.org>
+
+	Log profiler: updated to the new heap walk API.
+
+	The GC now provides also offset information for each referenced
+	object in the heap walk API: this info is saved in the profile
+	data now. Updated the data version for the file format change.
+
+2010-11-12  Paolo Molaro  <lupus at oddwiz.org>
+
+	* proflog.c: if the output option is used together with report,
+	the report is saved to the named file instead of being printed to
+	stdout. * decode.c: zlib seems to get confused with a
+	non-compressed strem coming from stdin: disable it in that case...
+	Also deal with reading 0 bytes from a buffer.
+
+2010-11-12  Paolo Molaro  <lupus at oddwiz.org>
+
+	* utils.h, utils.c: added getpid() wrapper. * decode.c: display
+	the program pid if available. * proflog.c: added substitutions for
+	the output name, change the default behaviour to not overwrite a
+	file and allow '-' at the start of the file name to force
+	overwrite.
+
+2010-11-12  Paolo Molaro  <lupus at oddwiz.org>
+
+	* proflog.c: we now unlink the output file before creating it to
+	prevent possible corruption from multiple processes writing to the
+	file. Added also extra checks for async events (which shouldn't
+	happen). * decode.c: fix file offset when using zlib.
+
+2010-11-11  Paolo Molaro  <lupus at oddwiz.org>
+
+	Added a proper define for the external zlib and check for
+	sched_getcpu().
+
+2010-11-11  Paolo Molaro  <lupus at oddwiz.org>
+
+	Log profiler: implemented the reverse reference feature in the
+	heapshot report.
+
+2010-11-10  Paolo Molaro  <lupus at oddwiz.org>
+
+	* proflog.c: fixed heapshot timeout mode (setting the last time it
+	was performed). * decode.c: sort heap shot list according to the
+	time sequence.
+
+2010-11-10  Paolo Molaro  <lupus at oddwiz.org>
+
+	Log profiler: track thread names with the new profiler API.
+
+2010-11-09  Paolo Molaro  <lupus at oddwiz.org>
+
+	* proflog.c, proflog.h: added support for tracking GC handle
+	creation and destruction. Updated profiler version. * decode.c:
+	added support for GC handles in the GC report, including
+	backtraces.
+
+2010-11-09  Paolo Molaro  <lupus at oddwiz.org>
+
+	Log profiler: osx/win32 portability fixes.
+
+2010-11-08  Paolo Molaro  <lupus at oddwiz.org>
+
+	Log profiler: disable zlib support on windows.
+
+	Someone on windows needs to look at this: it defines HAVE_ZLIB but
+	doesn't actually have it (missing zlib.h or not linking to -lz).
+
+2010-11-08  Zoltan Varga  <vargaz at gmail.com>
+
+	Revert "Avoid building the log profiler on windows, it has no
+	libz."
+
+	This reverts commit 3d81ea258fb94930af86c1fd089c712ca8c1d096.
+
+2010-11-08  Zoltan Varga  <vargaz at gmail.com>
+
+	Avoid building the log profiler on windows, it has no libz.
+
+2010-11-08  Paolo Molaro  <lupus at oddwiz.org>
+
+	* decode.c: the --track option can now take more than one object
+	address to track. Added the --find option to automatically track
+	objects of a given size and/or type name. When backtrace and
+	heapshot information is present, we can now, for example, find
+	when and where all the byte[] arrays bigger than a certain size
+	have been created and which other heap objects reference them.
+
+2010-11-08  Paolo Molaro  <lupus at oddwiz.org>
+
+	Log profiler: more timer compatibility fixes.
+
+2010-11-08  Paolo Molaro  <lupus at oddwiz.org>
+
+	Log profiler: track and display contended monitor wait times.
+
+2010-11-08  Paolo Molaro  <lupus at oddwiz.org>
+
+	Log profiler: fill and display a few more data fields in the
+	header.
+
+2010-11-08  Paolo Molaro  <lupus at oddwiz.org>
+
+	More log profiler doc clarifications.
+
+2010-11-08  Paolo Molaro  <lupus at oddwiz.org>
+
+	Fixed make dist for log profiler.
+
+2010-11-08  Paolo Molaro  <lupus at oddwiz.org>
+
+	Emit object heap sizes for allocations and heap-shot in the log
+	profiler.
+
+2010-11-08  Paolo Molaro  <lupus at oddwiz.org>
+
+	More log profiler portability and warning fixes.
+
+2010-11-08  Paolo Molaro  <lupus at oddwiz.org>
+
+	Integrated the log profiler in the build, warning and portability
+	fixes.
+
+2010-11-07  Paolo Molaro  <lupus at oddwiz.org>
+
+	Log profiler: added copyright header and comments.
+
+2010-11-07  Paolo Molaro  <lupus at oddwiz.org>
+
+	Ported log profiler to windows (untested) and OSX time factor fix.
+
+2010-11-07  Paolo Molaro  <lupus at oddwiz.org>
+
+	Documented the current version for the log profiler data format.
+
+2010-11-06  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix encode/decode_sleb128 () on 64 bit systems.
+
+2010-11-05  Geoff Norton  <grompf at sublimeintervention.com>
+
+	Implement the new logging profiler on OSX
+
+2010-11-05  Paolo Molaro  <lupus at oddwiz.org>
+
+	First cut of the new log profiler and report generator.
+
+	This is the first preview version of the new log profiler. It is
+	not included in the build yet because it needs some portability
+	cleanups, see the top of proflog.c for compilation instructions.
+	It currently works on Linux x86 (64 bit support may work but it is
+	untested). The documentation is included in the log-profiler.txt
+	file.
+
 2010-10-21  Zoltan Varga  <vargaz at gmail.com>
 
 	Fix building the logging profiler.
 
+2010-09-14  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix warnings caused by the profiler api changes.
+
 
 Tue Mar 16 11:20:14 CET 2010 Paolo Molaro <lupus at ximian.com>
 
diff --git a/mono/profiler/Makefile.am b/mono/profiler/Makefile.am
index eca313b..0eaecca 100644
--- a/mono/profiler/Makefile.am
+++ b/mono/profiler/Makefile.am
@@ -1,3 +1,8 @@
+if HAVE_ZLIB
+Z_LIBS= -lz
+else
+Z_LIBS=
+endif
 
 INCLUDES = \
 	-fexceptions -DMONO_USE_EXC_TABLES	\
@@ -6,10 +11,10 @@ INCLUDES = \
 
 if !DISABLE_PROFILER
 if JIT_SUPPORTED
-if PLATFORM_LINUX
-lib_LTLIBRARIES = libmono-profiler-cov.la libmono-profiler-aot.la libmono-profiler-logging.la libmono-profiler-iomap.la
-else
-lib_LTLIBRARIES = libmono-profiler-cov.la libmono-profiler-aot.la libmono-profiler-iomap.la
+bin_PROGRAMS = mprof-report
+lib_LTLIBRARIES = libmono-profiler-cov.la libmono-profiler-aot.la libmono-profiler-iomap.la libmono-profiler-log.la
+if PLATFORM_DARWIN
+libmono_profiler_log_la_LDFLAGS = -Wl,-undefined -Wl,suppress -Wl,-flat_namespace
 endif
 endif
 endif
@@ -22,7 +27,34 @@ libmono_profiler_cov_la_SOURCES = mono-cov.c
 libmono_profiler_cov_la_LIBADD = $(top_builddir)/mono/mini/libmono-$(API_VER).la
 libmono_profiler_aot_la_SOURCES = mono-profiler-aot.c
 libmono_profiler_aot_la_LIBADD = $(top_builddir)/mono/mini/libmono-$(API_VER).la
-libmono_profiler_logging_la_SOURCES = mono-profiler-logging.c
-libmono_profiler_logging_la_LIBADD = $(top_builddir)/mono/mini/libmono-$(API_VER).la $(GLIB_LIBS)
+#libmono_profiler_logging_la_SOURCES = mono-profiler-logging.c
+#libmono_profiler_logging_la_LIBADD = $(top_builddir)/mono/mini/libmono-$(API_VER).la $(GLIB_LIBS)
 libmono_profiler_iomap_la_SOURCES = mono-profiler-iomap.c
-libmono_profiler_iomap_la_LIBADD = $(top_builddir)/mono/mini/libmono-$(API_VER).la
+libmono_profiler_iomap_la_LIBADD = $(top_builddir)/mono/mini/libmono-$(API_VER).la $(GLIB_LIBS)
+libmono_profiler_log_la_SOURCES = proflog.c
+libmono_profiler_log_la_LIBADD = $(top_builddir)/mono/mini/libmono-$(API_VER).la $(Z_LIBS)
+
+mprof_report_SOURCES = decode.c
+mprof_report_LDADD = $(Z_LIBS)
+
+PLOG_TESTS_SRC=test-alloc.cs test-busy.cs test-monitor.cs test-excleave.cs \
+	test-heapshot.cs test-traces.cs
+PLOG_TESTS=$(PLOG_TESTS_SRC:.cs=.exe)
+
+with_mono_path = MONO_PATH=$(mcs_topdir)/class/lib/net_2_0
+
+RUNTIME = $(with_mono_path) $(top_builddir)/runtime/mono-wrapper
+MCS = $(RUNTIME) $(mcs_topdir)/class/lib/net_2_0/gmcs.exe -unsafe -nowarn:0162 -nowarn:0168 -nowarn:0219 -debug
+
+%.exe: %.cs
+	$(MCS) -out:$@ $<
+
+testlog: $(PLOG_TESTS)
+	$(with_mono_path) perl $(srcdir)/ptestrunner.pl $(top_builddir)
+
+check-local: testlog
+
+EXTRA_DIST=utils.c utils.h proflog.h log-profiler.txt perf_event.h \
+	$(PLOG_TESTS_SRC) ptestrunner.pl
+
+
diff --git a/mono/profiler/Makefile.in b/mono/profiler/Makefile.in
index 9297559..d89179d 100644
--- a/mono/profiler/Makefile.in
+++ b/mono/profiler/Makefile.in
@@ -14,6 +14,7 @@
 
 @SET_MAKE@
 
+
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -33,6 +34,7 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
+ at DISABLE_PROFILER_FALSE@@JIT_SUPPORTED_TRUE at bin_PROGRAMS = mprof-report$(EXEEXT)
 subdir = mono/profiler
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ChangeLog
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -53,7 +55,7 @@ am__vpath_adj = case $$p in \
     *) f=$$p;; \
   esac;
 am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-am__installdirs = "$(DESTDIR)$(libdir)"
+am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)"
 libLTLIBRARIES_INSTALL = $(INSTALL)
 LTLIBRARIES = $(lib_LTLIBRARIES)
 libmono_profiler_aot_la_DEPENDENCIES =  \
@@ -61,37 +63,40 @@ libmono_profiler_aot_la_DEPENDENCIES =  \
 am_libmono_profiler_aot_la_OBJECTS = mono-profiler-aot.lo
 libmono_profiler_aot_la_OBJECTS =  \
 	$(am_libmono_profiler_aot_la_OBJECTS)
- at DISABLE_PROFILER_FALSE@@JIT_SUPPORTED_TRUE@@PLATFORM_LINUX_FALSE at am_libmono_profiler_aot_la_rpath = -rpath \
- at DISABLE_PROFILER_FALSE@@JIT_SUPPORTED_TRUE@@PLATFORM_LINUX_FALSE@	$(libdir)
- at DISABLE_PROFILER_FALSE@@JIT_SUPPORTED_TRUE@@PLATFORM_LINUX_TRUE at am_libmono_profiler_aot_la_rpath = -rpath \
- at DISABLE_PROFILER_FALSE@@JIT_SUPPORTED_TRUE@@PLATFORM_LINUX_TRUE@	$(libdir)
+ at DISABLE_PROFILER_FALSE@@JIT_SUPPORTED_TRUE at am_libmono_profiler_aot_la_rpath =  \
+ at DISABLE_PROFILER_FALSE@@JIT_SUPPORTED_TRUE@	-rpath $(libdir)
 libmono_profiler_cov_la_DEPENDENCIES =  \
 	$(top_builddir)/mono/mini/libmono-$(API_VER).la
 am_libmono_profiler_cov_la_OBJECTS = mono-cov.lo
 libmono_profiler_cov_la_OBJECTS =  \
 	$(am_libmono_profiler_cov_la_OBJECTS)
- at DISABLE_PROFILER_FALSE@@JIT_SUPPORTED_TRUE@@PLATFORM_LINUX_FALSE at am_libmono_profiler_cov_la_rpath = -rpath \
- at DISABLE_PROFILER_FALSE@@JIT_SUPPORTED_TRUE@@PLATFORM_LINUX_FALSE@	$(libdir)
- at DISABLE_PROFILER_FALSE@@JIT_SUPPORTED_TRUE@@PLATFORM_LINUX_TRUE at am_libmono_profiler_cov_la_rpath = -rpath \
- at DISABLE_PROFILER_FALSE@@JIT_SUPPORTED_TRUE@@PLATFORM_LINUX_TRUE@	$(libdir)
+ at DISABLE_PROFILER_FALSE@@JIT_SUPPORTED_TRUE at am_libmono_profiler_cov_la_rpath =  \
+ at DISABLE_PROFILER_FALSE@@JIT_SUPPORTED_TRUE@	-rpath $(libdir)
+am__DEPENDENCIES_1 =
 libmono_profiler_iomap_la_DEPENDENCIES =  \
-	$(top_builddir)/mono/mini/libmono-$(API_VER).la
+	$(top_builddir)/mono/mini/libmono-$(API_VER).la \
+	$(am__DEPENDENCIES_1)
 am_libmono_profiler_iomap_la_OBJECTS = mono-profiler-iomap.lo
 libmono_profiler_iomap_la_OBJECTS =  \
 	$(am_libmono_profiler_iomap_la_OBJECTS)
- at DISABLE_PROFILER_FALSE@@JIT_SUPPORTED_TRUE@@PLATFORM_LINUX_FALSE at am_libmono_profiler_iomap_la_rpath = -rpath \
- at DISABLE_PROFILER_FALSE@@JIT_SUPPORTED_TRUE@@PLATFORM_LINUX_FALSE@	$(libdir)
- at DISABLE_PROFILER_FALSE@@JIT_SUPPORTED_TRUE@@PLATFORM_LINUX_TRUE at am_libmono_profiler_iomap_la_rpath = -rpath \
- at DISABLE_PROFILER_FALSE@@JIT_SUPPORTED_TRUE@@PLATFORM_LINUX_TRUE@	$(libdir)
-am__DEPENDENCIES_1 =
-libmono_profiler_logging_la_DEPENDENCIES =  \
+ at DISABLE_PROFILER_FALSE@@JIT_SUPPORTED_TRUE at am_libmono_profiler_iomap_la_rpath =  \
+ at DISABLE_PROFILER_FALSE@@JIT_SUPPORTED_TRUE@	-rpath $(libdir)
+libmono_profiler_log_la_DEPENDENCIES =  \
 	$(top_builddir)/mono/mini/libmono-$(API_VER).la \
 	$(am__DEPENDENCIES_1)
-am_libmono_profiler_logging_la_OBJECTS = mono-profiler-logging.lo
-libmono_profiler_logging_la_OBJECTS =  \
-	$(am_libmono_profiler_logging_la_OBJECTS)
- at DISABLE_PROFILER_FALSE@@JIT_SUPPORTED_TRUE@@PLATFORM_LINUX_TRUE at am_libmono_profiler_logging_la_rpath = -rpath \
- at DISABLE_PROFILER_FALSE@@JIT_SUPPORTED_TRUE@@PLATFORM_LINUX_TRUE@	$(libdir)
+am_libmono_profiler_log_la_OBJECTS = proflog.lo
+libmono_profiler_log_la_OBJECTS =  \
+	$(am_libmono_profiler_log_la_OBJECTS)
+libmono_profiler_log_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(libmono_profiler_log_la_LDFLAGS) $(LDFLAGS) -o $@
+ at DISABLE_PROFILER_FALSE@@JIT_SUPPORTED_TRUE at am_libmono_profiler_log_la_rpath =  \
+ at DISABLE_PROFILER_FALSE@@JIT_SUPPORTED_TRUE@	-rpath $(libdir)
+binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+PROGRAMS = $(bin_PROGRAMS)
+am_mprof_report_OBJECTS = decode.$(OBJEXT)
+mprof_report_OBJECTS = $(am_mprof_report_OBJECTS)
+mprof_report_DEPENDENCIES = $(am__DEPENDENCIES_1)
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/depcomp
 am__depfiles_maybe = depfiles
@@ -104,11 +109,11 @@ LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
 SOURCES = $(libmono_profiler_aot_la_SOURCES) \
 	$(libmono_profiler_cov_la_SOURCES) \
 	$(libmono_profiler_iomap_la_SOURCES) \
-	$(libmono_profiler_logging_la_SOURCES)
+	$(libmono_profiler_log_la_SOURCES) $(mprof_report_SOURCES)
 DIST_SOURCES = $(libmono_profiler_aot_la_SOURCES) \
 	$(libmono_profiler_cov_la_SOURCES) \
 	$(libmono_profiler_iomap_la_SOURCES) \
-	$(libmono_profiler_logging_la_SOURCES)
+	$(libmono_profiler_log_la_SOURCES) $(mprof_report_SOURCES)
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -196,6 +201,7 @@ MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
 MONO_DL_NEED_USCORE = @MONO_DL_NEED_USCORE@
 MONO_NACL_ALIGN_MASK_OFF = @MONO_NACL_ALIGN_MASK_OFF@
+MOONLIGHT_DEFINES = @MOONLIGHT_DEFINES@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
@@ -304,23 +310,39 @@ target_vendor = @target_vendor@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
+ at HAVE_ZLIB_FALSE@Z_LIBS = 
+ at HAVE_ZLIB_TRUE@Z_LIBS = -lz
 INCLUDES = \
 	-fexceptions -DMONO_USE_EXC_TABLES	\
 	-I$(top_srcdir) 	\
 	$(GLIB_CFLAGS)
 
- at DISABLE_PROFILER_FALSE@@JIT_SUPPORTED_TRUE@@PLATFORM_LINUX_FALSE at lib_LTLIBRARIES = libmono-profiler-cov.la libmono-profiler-aot.la libmono-profiler-iomap.la
- at DISABLE_PROFILER_FALSE@@JIT_SUPPORTED_TRUE@@PLATFORM_LINUX_TRUE at lib_LTLIBRARIES = libmono-profiler-cov.la libmono-profiler-aot.la libmono-profiler-logging.la libmono-profiler-iomap.la
+ at DISABLE_PROFILER_FALSE@@JIT_SUPPORTED_TRUE at lib_LTLIBRARIES = libmono-profiler-cov.la libmono-profiler-aot.la libmono-profiler-iomap.la libmono-profiler-log.la
+ at DISABLE_PROFILER_FALSE@@JIT_SUPPORTED_TRUE@@PLATFORM_DARWIN_TRUE at libmono_profiler_log_la_LDFLAGS = -Wl,-undefined -Wl,suppress -Wl,-flat_namespace
 
 # Do something that uses OPROFILE_CFLAGS and OPROFILE_LIBS
 libmono_profiler_cov_la_SOURCES = mono-cov.c
 libmono_profiler_cov_la_LIBADD = $(top_builddir)/mono/mini/libmono-$(API_VER).la
 libmono_profiler_aot_la_SOURCES = mono-profiler-aot.c
 libmono_profiler_aot_la_LIBADD = $(top_builddir)/mono/mini/libmono-$(API_VER).la
-libmono_profiler_logging_la_SOURCES = mono-profiler-logging.c
-libmono_profiler_logging_la_LIBADD = $(top_builddir)/mono/mini/libmono-$(API_VER).la $(GLIB_LIBS)
+#libmono_profiler_logging_la_SOURCES = mono-profiler-logging.c
+#libmono_profiler_logging_la_LIBADD = $(top_builddir)/mono/mini/libmono-$(API_VER).la $(GLIB_LIBS)
 libmono_profiler_iomap_la_SOURCES = mono-profiler-iomap.c
-libmono_profiler_iomap_la_LIBADD = $(top_builddir)/mono/mini/libmono-$(API_VER).la
+libmono_profiler_iomap_la_LIBADD = $(top_builddir)/mono/mini/libmono-$(API_VER).la $(GLIB_LIBS)
+libmono_profiler_log_la_SOURCES = proflog.c
+libmono_profiler_log_la_LIBADD = $(top_builddir)/mono/mini/libmono-$(API_VER).la $(Z_LIBS)
+mprof_report_SOURCES = decode.c
+mprof_report_LDADD = $(Z_LIBS)
+PLOG_TESTS_SRC = test-alloc.cs test-busy.cs test-monitor.cs test-excleave.cs \
+	test-heapshot.cs test-traces.cs
+
+PLOG_TESTS = $(PLOG_TESTS_SRC:.cs=.exe)
+with_mono_path = MONO_PATH=$(mcs_topdir)/class/lib/net_2_0
+RUNTIME = $(with_mono_path) $(top_builddir)/runtime/mono-wrapper
+MCS = $(RUNTIME) $(mcs_topdir)/class/lib/net_2_0/gmcs.exe -unsafe -nowarn:0162 -nowarn:0168 -nowarn:0219 -debug
+EXTRA_DIST = utils.c utils.h proflog.h log-profiler.txt perf_event.h \
+	$(PLOG_TESTS_SRC) ptestrunner.pl
+
 all: all-am
 
 .SUFFIXES:
@@ -387,8 +409,39 @@ libmono-profiler-cov.la: $(libmono_profiler_cov_la_OBJECTS) $(libmono_profiler_c
 	$(LINK) $(am_libmono_profiler_cov_la_rpath) $(libmono_profiler_cov_la_OBJECTS) $(libmono_profiler_cov_la_LIBADD) $(LIBS)
 libmono-profiler-iomap.la: $(libmono_profiler_iomap_la_OBJECTS) $(libmono_profiler_iomap_la_DEPENDENCIES) 
 	$(LINK) $(am_libmono_profiler_iomap_la_rpath) $(libmono_profiler_iomap_la_OBJECTS) $(libmono_profiler_iomap_la_LIBADD) $(LIBS)
-libmono-profiler-logging.la: $(libmono_profiler_logging_la_OBJECTS) $(libmono_profiler_logging_la_DEPENDENCIES) 
-	$(LINK) $(am_libmono_profiler_logging_la_rpath) $(libmono_profiler_logging_la_OBJECTS) $(libmono_profiler_logging_la_LIBADD) $(LIBS)
+libmono-profiler-log.la: $(libmono_profiler_log_la_OBJECTS) $(libmono_profiler_log_la_DEPENDENCIES) 
+	$(libmono_profiler_log_la_LINK) $(am_libmono_profiler_log_la_rpath) $(libmono_profiler_log_la_OBJECTS) $(libmono_profiler_log_la_LIBADD) $(LIBS)
+install-binPROGRAMS: $(bin_PROGRAMS)
+	@$(NORMAL_INSTALL)
+	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
+	@list='$(bin_PROGRAMS)'; for p in $$list; do \
+	  p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+	  if test -f $$p \
+	     || test -f $$p1 \
+	  ; then \
+	    f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
+	   echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
+	   $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
+	  else :; fi; \
+	done
+
+uninstall-binPROGRAMS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(bin_PROGRAMS)'; for p in $$list; do \
+	  f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+	  echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
+	  rm -f "$(DESTDIR)$(bindir)/$$f"; \
+	done
+
+clean-binPROGRAMS:
+	@list='$(bin_PROGRAMS)'; for p in $$list; do \
+	  f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+	  echo " rm -f $$p $$f"; \
+	  rm -f $$p $$f ; \
+	done
+mprof-report$(EXEEXT): $(mprof_report_OBJECTS) $(mprof_report_DEPENDENCIES) 
+	@rm -f mprof-report$(EXEEXT)
+	$(LINK) $(mprof_report_OBJECTS) $(mprof_report_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -396,10 +449,11 @@ mostlyclean-compile:
 distclean-compile:
 	-rm -f *.tab.c
 
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/decode.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/mono-cov.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/mono-profiler-aot.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/mono-profiler-iomap.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/mono-profiler-logging.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/proflog.Plo at am__quote@
 
 .c.o:
 @am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@@ -502,10 +556,13 @@ distdir: $(DISTFILES)
 	  fi; \
 	done
 check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) check-local
 check: check-am
-all-am: Makefile $(LTLIBRARIES)
+all-am: Makefile $(LTLIBRARIES) $(PROGRAMS)
+install-binPROGRAMS: install-libLTLIBRARIES
+
 installdirs:
-	for dir in "$(DESTDIR)$(libdir)"; do \
+	for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)"; do \
 	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
 	done
 install: install-am
@@ -534,8 +591,8 @@ maintainer-clean-generic:
 	@echo "it deletes files that may require special tools to rebuild."
 clean: clean-am
 
-clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
-	mostlyclean-am
+clean-am: clean-binPROGRAMS clean-generic clean-libLTLIBRARIES \
+	clean-libtool mostlyclean-am
 
 distclean: distclean-am
 	-rm -rf ./$(DEPDIR)
@@ -557,7 +614,7 @@ install-data-am:
 
 install-dvi: install-dvi-am
 
-install-exec-am: install-libLTLIBRARIES
+install-exec-am: install-binPROGRAMS install-libLTLIBRARIES
 
 install-html: install-html-am
 
@@ -589,15 +646,16 @@ ps: ps-am
 
 ps-am:
 
-uninstall-am: uninstall-libLTLIBRARIES
+uninstall-am: uninstall-binPROGRAMS uninstall-libLTLIBRARIES
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-	clean-libLTLIBRARIES clean-libtool ctags distclean \
-	distclean-compile distclean-generic distclean-libtool \
-	distclean-tags distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am install-dvi \
+.PHONY: CTAGS GTAGS all all-am check check-am check-local clean \
+	clean-binPROGRAMS clean-generic clean-libLTLIBRARIES \
+	clean-libtool ctags distclean distclean-compile \
+	distclean-generic distclean-libtool distclean-tags distdir dvi \
+	dvi-am html html-am info info-am install install-am \
+	install-binPROGRAMS install-data install-data-am install-dvi \
 	install-dvi-am install-exec install-exec-am install-html \
 	install-html-am install-info install-info-am \
 	install-libLTLIBRARIES install-man install-pdf install-pdf-am \
@@ -605,8 +663,17 @@ uninstall-am: uninstall-libLTLIBRARIES
 	installcheck-am installdirs maintainer-clean \
 	maintainer-clean-generic mostlyclean mostlyclean-compile \
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags uninstall uninstall-am uninstall-libLTLIBRARIES
+	tags uninstall uninstall-am uninstall-binPROGRAMS \
+	uninstall-libLTLIBRARIES
+
+
+%.exe: %.cs
+	$(MCS) -out:$@ $<
+
+testlog: $(PLOG_TESTS)
+	$(with_mono_path) perl $(srcdir)/ptestrunner.pl $(top_builddir)
 
+check-local: testlog
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/mono/profiler/decode.c b/mono/profiler/decode.c
new file mode 100644
index 0000000..d045cee
--- /dev/null
+++ b/mono/profiler/decode.c
@@ -0,0 +1,2702 @@
+/*
+ * decode.c: mprof-report program source: decode and analyze the log profiler data
+ *
+ * Author:
+ *   Paolo Molaro (lupus at ximian.com)
+ *
+ * Copyright 2010 Novell, Inc (http://www.novell.com)
+ */
+#include <config.h>
+#include "utils.c"
+#include "proflog.h"
+#include <string.h>
+#include <assert.h>
+#include <stdio.h>
+#if !defined(__APPLE__) && !defined(__FreeBSD__)
+#include <malloc.h>
+#endif
+#include <unistd.h>
+#include <stdlib.h>
+#if defined (HAVE_SYS_ZLIB)
+#include <zlib.h>
+#endif
+#include <mono/metadata/profiler.h>
+#include <mono/metadata/object.h>
+#include <mono/metadata/debug-helpers.h>
+
+#define HASH_SIZE 9371
+#define SMALL_HASH_SIZE 31
+
+static int debug = 0;
+static int collect_traces = 0;
+static int show_traces = 0;
+static int trace_max = 6;
+static int verbose = 0;
+static uintptr_t *tracked_objects = 0;
+static int num_tracked_objects = 0;
+static uintptr_t thread_filter = 0;
+static uint64_t find_size = 0;
+static const char* find_name = NULL;
+static uint64_t time_from = 0;
+static uint64_t time_to = 0xffffffffffffffffULL;
+static uint64_t startup_time = 0;
+static FILE* outfile = NULL;
+
+static int32_t
+read_int16 (unsigned char *p)
+{
+	int32_t value = *p++;
+	value |= (*p++) << 8;
+	return value;
+}
+
+static int32_t
+read_int32 (unsigned char *p)
+{
+	int32_t value = *p++;
+	value |= (*p++) << 8;
+	value |= (*p++) << 16;
+	value |= (uint32_t)(*p++) << 24;
+	return value;
+}
+
+static int64_t
+read_int64 (unsigned char *p)
+{
+	uint64_t value = *p++;
+	value |= (*p++) << 8;
+	value |= (*p++) << 16;
+	value |= (uint64_t)(*p++) << 24;
+	value |= (uint64_t)(*p++) << 32;
+	value |= (uint64_t)(*p++) << 40;
+	value |= (uint64_t)(*p++) << 48;
+	value |= (uint64_t)(*p++) << 54;
+	return value;
+}
+
+static char*
+pstrdup (const char *s)
+{
+	int len = strlen (s) + 1;
+	char *p = malloc (len);
+	memcpy (p, s, len);
+	return p;
+}
+
+static int num_images;
+typedef struct _ImageDesc ImageDesc;
+struct _ImageDesc {
+	ImageDesc *next;
+	intptr_t image;
+	char *filename;
+};
+
+static ImageDesc* image_hash [SMALL_HASH_SIZE] = {0};
+
+static void
+add_image (intptr_t image, char *name)
+{
+	int slot = ((image >> 2) & 0xffff) % SMALL_HASH_SIZE;
+	ImageDesc *cd = malloc (sizeof (ImageDesc));
+	cd->image = image;
+	cd->filename = pstrdup (name);
+	cd->next = image_hash [slot];
+	image_hash [slot] = cd;
+	num_images++;
+}
+
+typedef struct _BackTrace BackTrace;
+typedef struct {
+	uint64_t count;
+	BackTrace *bt;
+} CallContext;
+
+typedef struct {
+	int count;
+	int size;
+	CallContext *traces;
+} TraceDesc;
+
+typedef struct _ClassDesc ClassDesc;
+struct _ClassDesc {
+	ClassDesc *next;
+	intptr_t klass;
+	char *name;
+	intptr_t allocs;
+	uint64_t alloc_size;
+	TraceDesc traces;
+};
+
+static ClassDesc* class_hash [HASH_SIZE] = {0};
+static int num_classes = 0;
+
+static ClassDesc*
+add_class (intptr_t klass, const char *name)
+{
+	int slot = ((klass >> 2) & 0xffff) % HASH_SIZE;
+	ClassDesc *cd;
+	cd = class_hash [slot];
+	while (cd && cd->klass != klass)
+		cd = cd->next;
+	/* we resolved an unknown class (unless we had the code unloaded) */
+	if (cd) {
+		/*printf ("resolved unknown: %s\n", name);*/
+		free (cd->name);
+		cd->name = pstrdup (name);
+		return cd;
+	}
+	cd = calloc (sizeof (ClassDesc), 1);
+	cd->klass = klass;
+	cd->name = pstrdup (name);
+	cd->next = class_hash [slot];
+	cd->allocs = 0;
+	cd->alloc_size = 0;
+	cd->traces.count = 0;
+	cd->traces.size = 0;
+	cd->traces.traces = NULL;
+	class_hash [slot] = cd;
+	num_classes++;
+	return cd;
+}
+
+static ClassDesc *
+lookup_class (intptr_t klass)
+{
+	int slot = ((klass >> 2) & 0xffff) % HASH_SIZE;
+	ClassDesc *cd = class_hash [slot];
+	while (cd && cd->klass != klass)
+		cd = cd->next;
+	if (!cd) {
+		char buf [128];
+		snprintf (buf, sizeof (buf), "unresolved class %p", (void*)klass);
+		return add_class (klass, buf);
+	}
+	return cd;
+}
+
+typedef struct _MethodDesc MethodDesc;
+struct _MethodDesc {
+	MethodDesc *next;
+	intptr_t method;
+	char *name;
+	intptr_t code;
+	int len;
+	int recurse_count;
+	int sample_hits;
+	uint64_t calls;
+	uint64_t total_time;
+	uint64_t callee_time;
+	uint64_t self_time;
+	TraceDesc traces;
+};
+
+static MethodDesc* method_hash [HASH_SIZE] = {0};
+static int num_methods = 0;
+
+static MethodDesc*
+add_method (intptr_t method, const char *name, intptr_t code, int len)
+{
+	int slot = ((method >> 2) & 0xffff) % HASH_SIZE;
+	MethodDesc *cd;
+	cd = method_hash [slot];
+	while (cd && cd->method != method)
+		cd = cd->next;
+	/* we resolved an unknown method (unless we had the code unloaded) */
+	if (cd) {
+		cd->code = code;
+		cd->len = len;
+		/*printf ("resolved unknown: %s\n", name);*/
+		free (cd->name);
+		cd->name = pstrdup (name);
+		return cd;
+	}
+	cd = calloc (sizeof (MethodDesc), 1);
+	cd->method = method;
+	cd->name = pstrdup (name);
+	cd->code = code;
+	cd->len = len;
+	cd->calls = 0;
+	cd->total_time = 0;
+	cd->traces.count = 0;
+	cd->traces.size = 0;
+	cd->traces.traces = NULL;
+	cd->next = method_hash [slot];
+	method_hash [slot] = cd;
+	num_methods++;
+	return cd;
+}
+
+static MethodDesc *
+lookup_method (intptr_t method)
+{
+	int slot = ((method >> 2) & 0xffff) % HASH_SIZE;
+	MethodDesc *cd = method_hash [slot];
+	while (cd && cd->method != method)
+		cd = cd->next;
+	if (!cd) {
+		char buf [128];
+		snprintf (buf, sizeof (buf), "unknown method %p", (void*)method);
+		return add_method (method, buf, 0, 0);
+	}
+	return cd;
+}
+
+static int num_stat_samples = 0;
+static int size_stat_samples = 0;
+uintptr_t *stat_samples = NULL;
+int *stat_sample_desc = NULL;
+
+static void
+add_stat_sample (int type, uintptr_t ip) {
+	if (num_stat_samples == size_stat_samples) {
+		size_stat_samples *= 2;
+		if (!size_stat_samples)
+		size_stat_samples = 32;
+		stat_samples = realloc (stat_samples, size_stat_samples * sizeof (uintptr_t));
+		stat_sample_desc = realloc (stat_sample_desc, size_stat_samples * sizeof (int));
+	}
+	stat_samples [num_stat_samples] = ip;
+	stat_sample_desc [num_stat_samples++] = type;
+}
+
+static MethodDesc*
+lookup_method_by_ip (uintptr_t ip)
+{
+	int i;
+	MethodDesc* m;
+	/* dumb */
+	for (i = 0; i < HASH_SIZE; ++i) {
+		m = method_hash [i];
+		while (m) {
+			//printf ("checking %p against %p-%p\n", (void*)ip, (void*)(m->code), (void*)(m->code + m->len));
+			if (ip >= (uintptr_t)m->code && ip < (uintptr_t)m->code + m->len) {
+				return m;
+			}
+			m = m->next;
+		}
+	}
+	return NULL;
+}
+
+static int
+compare_method_samples (const void *a, const void *b)
+{
+	MethodDesc *const*A = a;
+	MethodDesc *const*B = b;
+	if ((*A)->sample_hits == (*B)->sample_hits)
+		return 0;
+	if ((*B)->sample_hits < (*A)->sample_hits)
+		return -1;
+	return 1;
+}
+
+typedef struct _UnmanagedSymbol UnmanagedSymbol;
+struct _UnmanagedSymbol {
+	UnmanagedSymbol *parent;
+	char *name;
+	int is_binary;
+	uintptr_t addr;
+	uintptr_t size;
+	uintptr_t sample_hits;
+};
+
+static UnmanagedSymbol **usymbols = NULL;
+static int usymbols_size = 0;
+static int usymbols_num = 0;
+
+static int
+compare_usymbol_addr (const void *a, const void *b)
+{
+	UnmanagedSymbol *const*A = a;
+	UnmanagedSymbol *const*B = b;
+	if ((*B)->addr == (*A)->addr)
+		return 0;
+	if ((*B)->addr > (*A)->addr)
+		return -1;
+	return 1;
+}
+
+static int
+compare_usymbol_samples (const void *a, const void *b)
+{
+	UnmanagedSymbol *const*A = a;
+	UnmanagedSymbol *const*B = b;
+	if ((*B)->sample_hits == (*A)->sample_hits)
+		return 0;
+	if ((*B)->sample_hits < (*A)->sample_hits)
+		return -1;
+	return 1;
+}
+
+static void
+add_unmanaged_symbol (uintptr_t addr, char *name, uintptr_t size)
+{
+	UnmanagedSymbol *sym;
+	if (usymbols_num == usymbols_size) {
+		int new_size = usymbols_size * 2;
+		if (!new_size)
+			new_size = 16;
+		usymbols = realloc (usymbols, sizeof (void*) * new_size);
+		usymbols_size = new_size;
+	}
+	sym = calloc (sizeof (UnmanagedSymbol), 1);
+	sym->addr = addr;
+	sym->name = name;
+	sym->size = size;
+	usymbols [usymbols_num++] = sym;
+}
+
+/* only valid after the symbols are sorted */
+static UnmanagedSymbol*
+lookup_unmanaged_symbol (uintptr_t addr)
+{
+	int r = usymbols_num - 1;
+	int l = 0;
+	UnmanagedSymbol *sym;
+	int last_best = -1;
+	while (r >= l) {
+		int m = (l + r) / 2;
+		sym = usymbols [m];
+		if (addr == sym->addr)
+			return sym;
+		if (addr < sym->addr) {
+			r = m - 1;
+		} else if (addr > sym->addr) {
+			l = m + 1;
+			last_best = m;
+		}
+	}
+	if (last_best >= 0 && (addr - usymbols [last_best]->addr) < 4096)
+		return usymbols [last_best];
+	return NULL;
+}
+
+/* we use the same structure for binaries */
+static UnmanagedSymbol **ubinaries = NULL;
+static int ubinaries_size = 0;
+static int ubinaries_num = 0;
+
+static void
+add_unmanaged_binary (uintptr_t addr, char *name, uintptr_t size)
+{
+	UnmanagedSymbol *sym;
+	if (ubinaries_num == ubinaries_size) {
+		int new_size = ubinaries_size * 2;
+		if (!new_size)
+			new_size = 16;
+		ubinaries = realloc (ubinaries, sizeof (void*) * new_size);
+		ubinaries_size = new_size;
+	}
+	sym = calloc (sizeof (UnmanagedSymbol), 1);
+	sym->addr = addr;
+	sym->name = name;
+	sym->size = size;
+	sym->is_binary = 1;
+	ubinaries [ubinaries_num++] = sym;
+}
+
+static UnmanagedSymbol*
+lookup_unmanaged_binary (uintptr_t addr)
+{
+	int i;
+	for (i = 0; i < ubinaries_num; ++i) {
+		UnmanagedSymbol *ubin = ubinaries [i];
+		if (addr >= ubin->addr && addr < ubin->addr + ubin->size) {
+			return ubin;
+		}
+	}
+	return NULL;
+}
+
+static const char*
+sample_type_name (int type)
+{
+	switch (type) {
+	case SAMPLE_CYCLES: return "cycles";
+	case SAMPLE_INSTRUCTIONS: return "instructions retired";
+	case SAMPLE_CACHE_MISSES: return "cache misses";
+	case SAMPLE_CACHE_REFS: return "cache references";
+	case SAMPLE_BRANCHES: return "executed branches";
+	case SAMPLE_BRANCH_MISSES: return "unpredicted branches";
+	}
+	return "unknown";
+}
+
+static void
+set_usym_parent (UnmanagedSymbol** cachedus, int count)
+{
+	int i;
+	for (i = 0; i < count; ++i) {
+		UnmanagedSymbol *ubin = lookup_unmanaged_binary (cachedus [i]->addr);
+		if (ubin == cachedus [i])
+			continue;
+		cachedus [i]->parent = ubin;
+	}
+}
+
+static void
+print_usym (UnmanagedSymbol* um)
+{
+	if (um->parent)
+		fprintf (outfile, "\t%6d %6.2f %-36s in %s\n", um->sample_hits, um->sample_hits*100.0/num_stat_samples, um->name, um->parent->name);
+	else
+		fprintf (outfile, "\t%6d %6.2f %s\n", um->sample_hits, um->sample_hits*100.0/num_stat_samples, um->name);
+}
+
+static int
+sym_percent (uintptr_t sample_hits)
+{
+	double pc;
+	if (verbose)
+		return 1;
+	pc = sample_hits*100.0/num_stat_samples;
+	return pc >= 0.1;
+}
+
+static void
+dump_samples (void)
+{
+	int i, u;
+	int count = 0, msize = 0;
+	int unmanaged_hits = 0;
+	int unresolved_hits = 0;
+	MethodDesc** cachedm = NULL;
+	int ucount = 0, usize = 0;
+	UnmanagedSymbol** cachedus = NULL;
+	if (!num_stat_samples)
+		return;
+	qsort (usymbols, usymbols_num, sizeof (UnmanagedSymbol*), compare_usymbol_addr);
+	for (i = 0; i < num_stat_samples; ++i) {
+		MethodDesc *m = lookup_method_by_ip (stat_samples [i]);
+		if (m) {
+			if (!m->sample_hits) {
+				if (count == msize) {
+					msize *= 2;
+					if (!msize)
+						msize = 4;
+					cachedm = realloc (cachedm, sizeof (void*) * msize);
+				}
+				cachedm [count++] = m;
+			}
+			m->sample_hits++;
+		} else {
+			UnmanagedSymbol *usym = lookup_unmanaged_symbol (stat_samples [i]);
+			if (!usym) {
+				unresolved_hits++;
+				//printf ("unmanaged hit at %p\n", (void*)stat_samples [i]);
+				usym = lookup_unmanaged_binary (stat_samples [i]);
+			}
+			if (usym) {
+				if (!usym->sample_hits) {
+					if (ucount == usize) {
+						usize *= 2;
+						if (!usize)
+							usize = 4;
+						cachedus = realloc (cachedus, sizeof (void*) * usize);
+					}
+					cachedus [ucount++] = usym;
+				}
+				usym->sample_hits++;
+			}
+			unmanaged_hits++;
+		}
+	}
+	qsort (cachedm, count, sizeof (MethodDesc*), compare_method_samples);
+	qsort (cachedus, ucount, sizeof (UnmanagedSymbol*), compare_usymbol_samples);
+	set_usym_parent (cachedus, ucount);
+	fprintf (outfile, "\nStatistical samples summary\n");
+	fprintf (outfile, "\tSample type: %s\n", sample_type_name (stat_sample_desc [0]));
+	fprintf (outfile, "\tUnmanaged hits:  %6d (%4.1f%%)\n", unmanaged_hits, (100.0*unmanaged_hits)/num_stat_samples);
+	fprintf (outfile, "\tManaged hits:    %6d (%4.1f%%)\n", num_stat_samples - unmanaged_hits, (100.0*(num_stat_samples-unmanaged_hits))/num_stat_samples);
+	fprintf (outfile, "\tUnresolved hits: %6d (%4.1f%%)\n", unresolved_hits, (100.0*unresolved_hits)/num_stat_samples);
+	fprintf (outfile, "\t%6s %6s %s\n", "Hits", "%", "Method name");
+	i = 0;
+	u = 0;
+	while (i < count || u < ucount) {
+		if (i < count) {
+			MethodDesc *m = cachedm [i];
+			if (u < ucount) {
+				UnmanagedSymbol *um = cachedus [u];
+				if (um->sample_hits > m->sample_hits) {
+					if (!sym_percent (um->sample_hits))
+						break;
+					print_usym (um);
+					u++;
+					continue;
+				}
+			}
+			if (!sym_percent (m->sample_hits))
+				break;
+			fprintf (outfile, "\t%6d %6.2f %s\n", m->sample_hits, m->sample_hits*100.0/num_stat_samples, m->name);
+			i++;
+			continue;
+		}
+		if (u < ucount) {
+			UnmanagedSymbol *um = cachedus [u];
+			if (!sym_percent (um->sample_hits))
+				break;
+			print_usym (um);
+			u++;
+			continue;
+		}
+	}
+}
+
+typedef struct _HeapClassDesc HeapClassDesc;
+typedef struct {
+	HeapClassDesc *klass;
+	uint64_t count;
+} HeapClassRevRef;
+
+struct _HeapClassDesc {
+	ClassDesc *klass;
+	int64_t count;
+	int64_t total_size;
+	HeapClassRevRef *rev_hash;
+	int rev_hash_size;
+	int rev_count;
+	uintptr_t pinned_references;
+	uintptr_t root_references;
+};
+
+static int
+add_rev_class_hashed (HeapClassRevRef *rev_hash, uintptr_t size, HeapClassDesc *hklass, uint64_t value)
+{
+	uintptr_t i;
+	uintptr_t start_pos;
+	start_pos = (hklass->klass->klass >> 2) % size;
+	assert (start_pos < size);
+	i = start_pos;
+	do {
+		if (rev_hash [i].klass == hklass) {
+			rev_hash [i].count += value;
+			return 0;
+		} else if (!rev_hash [i].klass) {
+			rev_hash [i].klass = hklass;
+			rev_hash [i].count += value;
+			start_pos = 0;
+			for (i = 0; i < size; ++i)
+				if (rev_hash [i].klass && rev_hash [i].klass->klass == hklass->klass)
+					start_pos ++;
+			assert (start_pos == 1);
+			return 1;
+		}
+		/* wrap around */
+		if (++i == size)
+			i = 0;
+	} while (i != start_pos);
+	/* should not happen */
+	printf ("failed revref store\n");
+	return 0;
+}
+
+static void
+add_heap_class_rev (HeapClassDesc *from, HeapClassDesc *to)
+{
+	uintptr_t i;
+	if (to->rev_count * 2 >= to->rev_hash_size) {
+		HeapClassRevRef *n;
+		uintptr_t old_size = to->rev_hash_size;
+		to->rev_hash_size *= 2;
+		if (to->rev_hash_size == 0)
+			to->rev_hash_size = 4;
+		n = calloc (sizeof (HeapClassRevRef) * to->rev_hash_size, 1);
+		for (i = 0; i < old_size; ++i) {
+			if (to->rev_hash [i].klass)
+				add_rev_class_hashed (n, to->rev_hash_size, to->rev_hash [i].klass, to->rev_hash [i].count);
+		}
+		if (to->rev_hash)
+			free (to->rev_hash);
+		to->rev_hash = n;
+	}
+	to->rev_count += add_rev_class_hashed (to->rev_hash, to->rev_hash_size, from, 1);
+}
+
+typedef struct {
+	uintptr_t objaddr;
+	HeapClassDesc *hklass;
+	uintptr_t num_refs;
+	uintptr_t refs [0];
+} HeapObjectDesc;
+
+typedef struct _HeapShot HeapShot;
+struct _HeapShot {
+	HeapShot *next;
+	uint64_t timestamp;
+	int class_count;
+	int hash_size;
+	HeapClassDesc **class_hash;
+	HeapClassDesc **sorted;
+	HeapObjectDesc **objects_hash;
+	uintptr_t objects_count;
+	uintptr_t objects_hash_size;
+	uintptr_t num_roots;
+	uintptr_t *roots;
+	uintptr_t *roots_extra;
+	int *roots_types;
+};
+
+static HeapShot *heap_shots = NULL;
+static int num_heap_shots = 0;
+
+static HeapShot*
+new_heap_shot (uint64_t timestamp)
+{
+	HeapShot *hs = calloc (sizeof (HeapShot), 1);
+	hs->hash_size = 4;
+	hs->class_hash = calloc (sizeof (void*), hs->hash_size);
+	hs->timestamp = timestamp;
+	num_heap_shots++;
+	hs->next = heap_shots;
+	heap_shots = hs;
+	return hs;
+}
+
+static HeapClassDesc*
+heap_class_lookup (HeapShot *hs, ClassDesc *klass)
+{
+	int i;
+	unsigned int start_pos;
+	start_pos = ((uintptr_t)klass->klass >> 2) % hs->hash_size;
+	i = start_pos;
+	do {
+		HeapClassDesc* cd = hs->class_hash [i];
+		if (!cd)
+			return NULL;
+		if (cd->klass == klass)
+			return cd;
+		/* wrap around */
+		if (++i == hs->hash_size)
+			i = 0;
+	} while (i != start_pos);
+	return NULL;
+}
+
+static int
+add_heap_hashed (HeapClassDesc **hash, HeapClassDesc **retv, uintptr_t hsize, ClassDesc *klass, uint64_t size, uint64_t count)
+{
+	uintptr_t i;
+	uintptr_t start_pos;
+	start_pos = ((uintptr_t)klass->klass >> 2) % hsize;
+	i = start_pos;
+	do {
+		if (hash [i] && hash [i]->klass == klass) {
+			hash [i]->total_size += size;
+			hash [i]->count += count;
+			*retv = hash [i];
+			return 0;
+		} else if (!hash [i]) {
+			if (*retv) {
+				hash [i] = *retv;
+				return 1;
+			}
+			hash [i] = calloc (sizeof (HeapClassDesc), 1);
+			hash [i]->klass = klass;
+			hash [i]->total_size += size;
+			hash [i]->count += count;
+			*retv = hash [i];
+			return 1;
+		}
+		/* wrap around */
+		if (++i == hsize)
+			i = 0;
+	} while (i != start_pos);
+	/* should not happen */
+	printf ("failed heap class store\n");
+	return 0;
+}
+
+static HeapClassDesc*
+add_heap_shot_class (HeapShot *hs, ClassDesc *klass, uint64_t size)
+{
+	HeapClassDesc *res;
+	int i;
+	if (hs->class_count * 2 >= hs->hash_size) {
+		HeapClassDesc **n;
+		int old_size = hs->hash_size;
+		hs->hash_size *= 2;
+		if (hs->hash_size == 0)
+			hs->hash_size = 4;
+		n = calloc (sizeof (void*) * hs->hash_size, 1);
+		for (i = 0; i < old_size; ++i) {
+			res = hs->class_hash [i];
+			if (hs->class_hash [i])
+				add_heap_hashed (n, &res, hs->hash_size, hs->class_hash [i]->klass, hs->class_hash [i]->total_size, hs->class_hash [i]->count);
+		}
+		if (hs->class_hash)
+			free (hs->class_hash);
+		hs->class_hash = n;
+	}
+	res = NULL;
+	hs->class_count += add_heap_hashed (hs->class_hash, &res, hs->hash_size, klass, size, 1);
+	//if (res->count == 1)
+	//	printf ("added heap class: %s\n", res->klass->name);
+	return res;
+}
+
+static HeapObjectDesc*
+alloc_heap_obj (uintptr_t objaddr, HeapClassDesc *hklass, uintptr_t num_refs)
+{
+	HeapObjectDesc* ho = calloc (sizeof (HeapObjectDesc) + num_refs * sizeof (uintptr_t), 1);
+	ho->objaddr = objaddr;
+	ho->hklass = hklass;
+	ho->num_refs = num_refs;
+	return ho;
+}
+
+static uintptr_t
+heap_shot_find_obj_slot (HeapShot *hs, uintptr_t objaddr)
+{
+	uintptr_t i;
+	uintptr_t start_pos;
+	HeapObjectDesc **hash = hs->objects_hash;
+	start_pos = ((uintptr_t)objaddr >> 3) % hs->objects_hash_size;
+	i = start_pos;
+	do {
+		if (hash [i] && hash [i]->objaddr == objaddr) {
+			return i;
+		} else if (!hash [i]) {
+			break; /* fail */
+		}
+		/* wrap around */
+		if (++i == hs->objects_hash_size)
+			i = 0;
+	} while (i != start_pos);
+	/* should not happen */
+	//printf ("failed heap obj slot\n");
+	return -1;
+}
+
+static HeapObjectDesc*
+heap_shot_obj_add_refs (HeapShot *hs, uintptr_t objaddr, uintptr_t num, uintptr_t *ref_offset)
+{
+	HeapObjectDesc **hash = hs->objects_hash;
+	uintptr_t i = heap_shot_find_obj_slot (hs, objaddr);
+	if (i >= 0) {
+		HeapObjectDesc* ho = alloc_heap_obj (objaddr, hash [i]->hklass, hash [i]->num_refs + num);
+		*ref_offset = hash [i]->num_refs;
+		memcpy (ho->refs, hash [i]->refs, hash [i]->num_refs * sizeof (uintptr_t));
+		free (hash [i]);
+		hash [i] = ho;
+		return ho;
+	}
+	/* should not happen */
+	printf ("failed heap obj update\n");
+	return NULL;
+	
+}
+
+static uintptr_t
+add_heap_hashed_obj (HeapObjectDesc **hash, uintptr_t hsize, HeapObjectDesc *obj)
+{
+	uintptr_t i;
+	uintptr_t start_pos;
+	start_pos = ((uintptr_t)obj->objaddr >> 3) % hsize;
+	i = start_pos;
+	do {
+		if (hash [i] && hash [i]->objaddr == obj->objaddr) {
+			printf ("duplicate object!\n");
+			return 0;
+		} else if (!hash [i]) {
+			hash [i] = obj;
+			return 1;
+		}
+		/* wrap around */
+		if (++i == hsize)
+			i = 0;
+	} while (i != start_pos);
+	/* should not happen */
+	printf ("failed heap obj store\n");
+	return 0;
+}
+
+static void
+add_heap_shot_obj (HeapShot *hs, HeapObjectDesc *obj)
+{
+	uintptr_t i;
+	if (hs->objects_count * 2 >= hs->objects_hash_size) {
+		HeapObjectDesc **n;
+		uintptr_t old_size = hs->objects_hash_size;
+		hs->objects_hash_size *= 2;
+		if (hs->objects_hash_size == 0)
+			hs->objects_hash_size = 4;
+		n = calloc (sizeof (void*) * hs->objects_hash_size, 1);
+		for (i = 0; i < old_size; ++i) {
+			if (hs->objects_hash [i])
+				add_heap_hashed_obj (n, hs->objects_hash_size, hs->objects_hash [i]);
+		}
+		if (hs->objects_hash)
+			free (hs->objects_hash);
+		hs->objects_hash = n;
+	}
+	hs->objects_count += add_heap_hashed_obj (hs->objects_hash, hs->objects_hash_size, obj);
+}
+
+static void
+heap_shot_resolve_reverse_refs (HeapShot *hs)
+{
+	uintptr_t i;
+	for (i = 0; i < hs->objects_hash_size; ++i) {
+		uintptr_t r;
+		HeapObjectDesc *ho = hs->objects_hash [i];
+		if (!ho)
+			continue;
+		for (r = 0; r < ho->num_refs; ++r) {
+			uintptr_t oi = heap_shot_find_obj_slot (hs, ho->refs [r]);
+			add_heap_class_rev (ho->hklass, hs->objects_hash [oi]->hklass);
+		}
+	}
+}
+
+#define MARK_GRAY 1
+#define MARK_BLACK 2
+
+static void
+heap_shot_mark_objects (HeapShot *hs)
+{
+	uintptr_t i, oi, r;
+	unsigned char *marks;
+	HeapObjectDesc *obj, *ref;
+	int marked_some;
+	uintptr_t num_marked = 0, num_unmarked;
+	for (i = 0; i < hs->num_roots; ++i) {
+		HeapClassDesc *cd;
+		oi = heap_shot_find_obj_slot (hs, hs->roots [i]);
+		if (oi == -1) {
+			continue;
+		}
+		obj = hs->objects_hash [oi];
+		cd = obj->hklass;
+		if (hs->roots_types [i] & MONO_PROFILE_GC_ROOT_PINNING)
+			cd->pinned_references++;
+		cd->root_references++;
+	}
+	if (!debug)
+		return;
+	/* consistency checks: it seems not all the objects are walked in the heap in some cases */
+	marks = calloc (hs->objects_hash_size, 1);
+	if (!marks)
+		return;
+	for (i = 0; i < hs->num_roots; ++i) {
+		oi = heap_shot_find_obj_slot (hs, hs->roots [i]);
+		if (oi == -1) {
+			fprintf (outfile, "root type 0x%x for obj %p (%s) not found in heap\n", hs->roots_types [i], (void*)hs->roots [i], lookup_class (hs->roots_extra [i])->name);
+			continue;
+		}
+		obj = hs->objects_hash [oi];
+		if (!marks [oi]) {
+			marks [oi] = obj->num_refs? MARK_GRAY: MARK_BLACK;
+			num_marked++;
+		}
+	}
+	marked_some = 1;
+	while (marked_some) {
+		marked_some = 0;
+		for (i = 0; i < hs->objects_hash_size; ++i) {
+			if (marks [i] != MARK_GRAY)
+				continue;
+			marks [i] = MARK_BLACK;
+			obj = hs->objects_hash [i];
+			for (r = 0; r < obj->num_refs; ++r) {
+				oi = heap_shot_find_obj_slot (hs, obj->refs [r]);
+				if (oi == -1) {
+					fprintf (outfile, "referenced obj %p not found in heap\n", (void*)obj->refs [r]);
+					continue;
+				}
+				ref = hs->objects_hash [oi];
+				if (!marks [oi]) {
+					marks [oi] = ref->num_refs? MARK_GRAY: MARK_BLACK;
+				}
+			}
+			marked_some++;
+		}
+	}
+
+	num_unmarked = 0;
+	for (i = 0; i < hs->objects_hash_size; ++i) {
+		if (hs->objects_hash [i] && !marks [i]) {
+			num_unmarked++;
+			fprintf (outfile, "object %p (%s) unmarked\n", (void*)hs->objects_hash [i], hs->objects_hash [i]->hklass->klass->name);
+		}
+	}
+	fprintf (outfile, "Total unmarked: %d/%d\n", num_unmarked, hs->objects_count);
+	free (marks);
+}
+
+static void
+heap_shot_free_objects (HeapShot *hs)
+{
+	uintptr_t i;
+	for (i = 0; i < hs->objects_hash_size; ++i) {
+		HeapObjectDesc *ho = hs->objects_hash [i];
+		if (ho)
+			free (ho);
+	}
+	if (hs->objects_hash)
+		free (hs->objects_hash);
+	hs->objects_hash = NULL;
+	hs->objects_hash_size = 0;
+	hs->objects_count = 0;
+}
+
+
+struct _BackTrace {
+	BackTrace *next;
+	unsigned int hash;
+	int count;
+	int id;
+	MethodDesc *methods [1];
+};
+
+static BackTrace *backtrace_hash [HASH_SIZE];
+static BackTrace **backtraces = NULL;
+static int num_backtraces = 0;
+static int next_backtrace = 0;
+
+static int
+hash_backtrace (int count, MethodDesc **methods)
+{
+	int hash = count;
+	int i;
+	for (i = 0; i < count; ++i) {
+		hash = (hash << 5) - hash + methods [i]->method;
+	}
+	return hash;
+}
+
+static int
+compare_backtrace (BackTrace *bt, int count, MethodDesc **methods)
+{
+	int i;
+	if (bt->count != count)
+		return 0;
+	for (i = 0; i < count; ++i)
+		if (methods [i] != bt->methods [i])
+			return 0;
+	return 1;
+}
+
+static BackTrace*
+add_backtrace (int count, MethodDesc **methods)
+{
+	int hash = hash_backtrace (count, methods);
+	int slot = (hash & 0xffff) % HASH_SIZE;
+	BackTrace *bt = backtrace_hash [slot];
+	while (bt) {
+		if (bt->hash == hash && compare_backtrace (bt, count, methods))
+			return bt;
+		bt = bt->next;
+	}
+	bt = malloc (sizeof (BackTrace) + ((count - 1) * sizeof (void*)));
+	bt->next = backtrace_hash [slot];
+	backtrace_hash [slot] = bt;
+	if (next_backtrace == num_backtraces) {
+		num_backtraces *= 2;
+		if (!num_backtraces)
+			num_backtraces = 16;
+		backtraces = realloc (backtraces, sizeof (void*) * num_backtraces);
+	}
+	bt->id = next_backtrace++;
+	backtraces [bt->id] = bt;
+	bt->count = count;
+	bt->hash = hash;
+	for (slot = 0; slot < count; ++slot)
+		bt->methods [slot] = methods [slot];
+
+	return bt;
+}
+
+typedef struct _MonitorDesc MonitorDesc;
+typedef struct _ThreadContext ThreadContext;
+
+typedef struct {
+	FILE *file;
+#if defined (HAVE_SYS_ZLIB)
+	gzFile *gzfile;
+#endif
+	unsigned char *buf;
+	int size;
+	int data_version;
+	int version_major;
+	int version_minor;
+	int timer_overhead;
+	int pid;
+	int port;
+	uint64_t startup_time;
+	ThreadContext *threads;
+	ThreadContext *current;
+} ProfContext;
+
+struct _ThreadContext {
+	ThreadContext *next;
+	intptr_t thread_id;
+	char *name;
+	/* emulated stack */
+	MethodDesc **stack;
+	uint64_t *time_stack;
+	uint64_t *callee_time_stack;
+	uint64_t last_time;
+	uint64_t contention_start;
+	MonitorDesc *monitor;
+	int stack_size;
+	int stack_id;
+	HeapShot *current_heap_shot;
+	uintptr_t num_roots;
+	uintptr_t size_roots;
+	uintptr_t *roots;
+	uintptr_t *roots_extra;
+	int *roots_types;
+	uint64_t gc_start_times [3];
+};
+
+static void
+ensure_buffer (ProfContext *ctx, int size)
+{
+	if (ctx->size < size) {
+		ctx->buf = realloc (ctx->buf, size);
+		ctx->size = size;
+	}
+}
+
+static int
+load_data (ProfContext *ctx, int size)
+{
+	ensure_buffer (ctx, size);
+#if defined (HAVE_SYS_ZLIB)
+	if (ctx->gzfile) {
+		int r = gzread (ctx->gzfile, ctx->buf, size);
+		if (r == 0)
+			return size == 0? 1: 0;
+		return r == size;
+	} else 
+#endif
+	{
+		int r = fread (ctx->buf, size, 1, ctx->file);
+		if (r == 0)
+			return size == 0? 1: 0;
+		return r;
+	}
+}
+
+static ThreadContext*
+get_thread (ProfContext *ctx, intptr_t thread_id)
+{
+	ThreadContext *thread;
+	if (ctx->current && ctx->current->thread_id == thread_id)
+		return ctx->current;
+	thread = ctx->threads;
+	while (thread) {
+		if (thread->thread_id == thread_id) {
+			return thread;
+		}
+		thread = thread->next;
+	}
+	thread = calloc (sizeof (ThreadContext), 1);
+	thread->next = ctx->threads;
+	ctx->threads = thread;
+	thread->thread_id = thread_id;
+	thread->last_time = 0;
+	thread->stack_id = 0;
+	thread->stack_size = 32;
+	thread->stack = malloc (thread->stack_size * sizeof (void*));
+	thread->time_stack = malloc (thread->stack_size * sizeof (uint64_t));
+	thread->callee_time_stack = malloc (thread->stack_size * sizeof (uint64_t));
+	return thread;
+}
+
+static ThreadContext*
+load_thread (ProfContext *ctx, intptr_t thread_id)
+{
+	ThreadContext *thread = get_thread (ctx, thread_id);
+	ctx->current = thread;
+	return thread;
+}
+
+static void
+ensure_thread_stack (ThreadContext *thread)
+{
+	if (thread->stack_id == thread->stack_size) {
+		thread->stack_size *= 2;
+		thread->stack = realloc (thread->stack, thread->stack_size * sizeof (void*));
+		thread->time_stack = realloc (thread->time_stack, thread->stack_size * sizeof (uint64_t));
+		thread->callee_time_stack = realloc (thread->callee_time_stack, thread->stack_size * sizeof (uint64_t));
+	}
+}
+
+static int
+add_trace_hashed (CallContext *traces, int size, BackTrace *bt, uint64_t value)
+{
+	int i;
+	unsigned int start_pos;
+	start_pos = bt->hash % size;
+	i = start_pos;
+	do {
+		if (traces [i].bt == bt) {
+			traces [i].count += value;
+			return 0;
+		} else if (!traces [i].bt) {
+			traces [i].bt = bt;
+			traces [i].count += value;
+			return 1;
+		}
+		/* wrap around */
+		if (++i == size)
+			i = 0;
+	} while (i != start_pos);
+	/* should not happen */
+	printf ("failed trace store\n");
+	return 0;
+}
+
+static void
+add_trace_bt (BackTrace *bt, TraceDesc *trace, uint64_t value)
+{
+	int i;
+	if (!collect_traces)
+		return;
+	if (trace->count * 2 >= trace->size) {
+		CallContext *n;
+		int old_size = trace->size;
+		trace->size *= 2;
+		if (trace->size == 0)
+			trace->size = 4;
+		n = calloc (sizeof (CallContext) * trace->size, 1);
+		for (i = 0; i < old_size; ++i) {
+			if (trace->traces [i].bt)
+				add_trace_hashed (n, trace->size, trace->traces [i].bt, trace->traces [i].count);
+		}
+		if (trace->traces)
+			free (trace->traces);
+		trace->traces = n;
+	}
+	trace->count += add_trace_hashed (trace->traces, trace->size, bt, value);
+}
+
+static BackTrace*
+add_trace_thread (ThreadContext *thread, TraceDesc *trace, uint64_t value)
+{
+	BackTrace *bt;
+	int count = thread->stack_id;
+	if (!collect_traces)
+		return NULL;
+	if (count > trace_max)
+		count = trace_max;
+	bt = add_backtrace (count, thread->stack + thread->stack_id - count);
+	add_trace_bt (bt, trace, value);
+	return bt;
+}
+
+static BackTrace*
+add_trace_methods (MethodDesc **methods, int count, TraceDesc *trace, uint64_t value)
+{
+	BackTrace *bt;
+	if (!collect_traces)
+		return NULL;
+	if (count > trace_max)
+		count = trace_max;
+	bt = add_backtrace (count, methods);
+	add_trace_bt (bt, trace, value);
+	return bt;
+}
+
+static void
+thread_add_root (ThreadContext *ctx, uintptr_t obj, int root_type, uintptr_t extra_info)
+{
+	if (ctx->num_roots == ctx->size_roots) {
+		int new_size = ctx->size_roots * 2;
+		if (!new_size)
+			new_size = 4;
+		ctx->roots = realloc (ctx->roots, new_size * sizeof (uintptr_t));
+		ctx->roots_extra = realloc (ctx->roots_extra, new_size * sizeof (uintptr_t));
+		ctx->roots_types = realloc (ctx->roots_types, new_size * sizeof (int));
+		ctx->size_roots = new_size;
+	}
+	ctx->roots_types [ctx->num_roots] = root_type;
+	ctx->roots_extra [ctx->num_roots] = extra_info;
+	ctx->roots [ctx->num_roots++] = obj;
+}
+
+static int
+compare_callc (const void *a, const void *b)
+{
+	const CallContext *A = a;
+	const CallContext *B = b;
+	if (B->count == A->count)
+		return 0;
+	if (B->count < A->count)
+		return -1;
+	return 1;
+}
+
+static void
+sort_context_array (TraceDesc* traces)
+{
+	int i, j;
+	for (i = 0, j = 0; i < traces->size; ++i) {
+		if (traces->traces [i].bt) {
+			traces->traces [j].bt = traces->traces [i].bt;
+			traces->traces [j].count = traces->traces [i].count;
+			j++;
+		}
+	}
+	qsort (traces->traces, traces->count, sizeof (CallContext), compare_callc);
+}
+
+static void
+push_method (ThreadContext *thread, MethodDesc *method, uint64_t timestamp)
+{
+	ensure_thread_stack (thread);
+	thread->time_stack [thread->stack_id] = timestamp;
+	thread->callee_time_stack [thread->stack_id] = 0;
+	thread->stack [thread->stack_id++] = method;
+	method->recurse_count++;
+}
+
+static void
+pop_method (ThreadContext *thread, MethodDesc *method, uint64_t timestamp)
+{
+	method->recurse_count--;
+	if (thread->stack_id > 0 && thread->stack [thread->stack_id - 1] == method) {
+		uint64_t tdiff;
+		thread->stack_id--;
+		method->calls++;
+		if (timestamp < thread->time_stack [thread->stack_id])
+			fprintf (outfile, "time went backwards for %s\n", method->name);
+		tdiff = timestamp - thread->time_stack [thread->stack_id];
+		if (thread->callee_time_stack [thread->stack_id] > tdiff)
+			fprintf (outfile, "callee time bigger for %s\n", method->name);
+		method->self_time += tdiff - thread->callee_time_stack [thread->stack_id];
+		method->callee_time += thread->callee_time_stack [thread->stack_id];
+		if (thread->stack_id)
+			thread->callee_time_stack [thread->stack_id - 1] += tdiff;
+		//fprintf (outfile, "method %s took %d\n", method->name, (int)(tdiff/1000));
+	} else {
+		fprintf (outfile, "unmatched leave at stack pos: %d for method %s\n", thread->stack_id, method->name);
+	}
+}
+
+typedef struct {
+	uint64_t total_time;
+	uint64_t max_time;
+	int count;
+} GCDesc;
+static GCDesc gc_info [3];
+static uint64_t max_heap_size;
+static uint64_t gc_object_moves;
+static int gc_resizes;
+typedef struct {
+	uint64_t created;
+	uint64_t destroyed;
+	uint64_t max_live;
+	TraceDesc traces;
+} HandleInfo;
+static HandleInfo handle_info [4];
+
+static const char*
+gc_event_name (int ev)
+{
+	switch (ev) {
+	case MONO_GC_EVENT_START: return "start";
+	case MONO_GC_EVENT_MARK_START: return "mark start";
+	case MONO_GC_EVENT_MARK_END: return "mark end";
+	case MONO_GC_EVENT_RECLAIM_START: return "reclaim start";
+	case MONO_GC_EVENT_RECLAIM_END: return "reclaim end";
+	case MONO_GC_EVENT_END: return "end";
+	case MONO_GC_EVENT_PRE_STOP_WORLD: return "pre stop";
+	case MONO_GC_EVENT_POST_STOP_WORLD: return "post stop";
+	case MONO_GC_EVENT_PRE_START_WORLD: return "pre start";
+	case MONO_GC_EVENT_POST_START_WORLD: return "post start";
+	default:
+		return "unknown";
+	}
+}
+
+static uint64_t clause_summary [MONO_EXCEPTION_CLAUSE_FAULT + 1];
+static uint64_t throw_count = 0;
+static TraceDesc exc_traces;
+
+static const char*
+clause_name (int type)
+{
+	switch (type) {
+	case MONO_EXCEPTION_CLAUSE_NONE: return "catch";
+	case MONO_EXCEPTION_CLAUSE_FILTER: return "filter";
+	case MONO_EXCEPTION_CLAUSE_FINALLY: return "finally";
+	case MONO_EXCEPTION_CLAUSE_FAULT: return "fault";
+	default: return "invalid";
+	}
+}
+
+static uint64_t monitor_contention;
+static uint64_t monitor_failed;
+static uint64_t monitor_acquired;
+
+struct _MonitorDesc {
+	MonitorDesc *next;
+	uintptr_t objid;
+	uintptr_t contentions;
+	uint64_t wait_time;
+	uint64_t max_wait_time;
+	TraceDesc traces;
+};
+
+static MonitorDesc* monitor_hash [SMALL_HASH_SIZE] = {0};
+static int num_monitors = 0;
+
+static MonitorDesc*
+lookup_monitor (uintptr_t objid)
+{
+	int slot = ((objid >> 3) & 0xffff) % SMALL_HASH_SIZE;
+	MonitorDesc *cd = monitor_hash [slot];
+	while (cd && cd->objid != objid)
+		cd = cd->next;
+	if (!cd) {
+		cd = calloc (sizeof (MonitorDesc), 1);
+		cd->objid = objid;
+		cd->next = monitor_hash [slot];
+		monitor_hash [slot] = cd;
+		num_monitors++;
+	}
+	return cd;
+}
+
+static const char*
+monitor_ev_name (int ev)
+{
+	switch (ev) {
+	case MONO_PROFILER_MONITOR_CONTENTION: return "contended";
+	case MONO_PROFILER_MONITOR_DONE: return "acquired";
+	case MONO_PROFILER_MONITOR_FAIL: return "not taken";
+	default: return "invalid";
+	}
+}
+
+static const char*
+get_handle_name (int htype)
+{
+	switch (htype) {
+	case 0: return "weak";
+	case 1: return "weaktrack";
+	case 2: return "normal";
+	case 3: return "pinned";
+	default: return "unknown";
+	}
+}
+
+static const char*
+get_root_name (int rtype)
+{
+	switch (rtype & MONO_PROFILE_GC_ROOT_TYPEMASK) {
+	case MONO_PROFILE_GC_ROOT_STACK: return "stack";
+	case MONO_PROFILE_GC_ROOT_FINALIZER: return "finalizer";
+	case MONO_PROFILE_GC_ROOT_HANDLE: return "handle";
+	case MONO_PROFILE_GC_ROOT_OTHER: return "other";
+	case MONO_PROFILE_GC_ROOT_MISC: return "misc";
+	default: return "unknown";
+	}
+}
+
+static MethodDesc**
+decode_bt (MethodDesc** sframes, int *size, unsigned char *p, unsigned char **endp, intptr_t ptr_base)
+{
+	MethodDesc **frames;
+	int i;
+	int flags = decode_uleb128 (p, &p);
+	int count = decode_uleb128 (p, &p);
+	if (flags != 0)
+		return NULL;
+	if (count > *size)
+		frames = malloc (count * sizeof (void*));
+	else
+		frames = sframes;
+	for (i = 0; i < count; ++i) {
+		intptr_t ptrdiff = decode_sleb128 (p, &p);
+		frames [i] = lookup_method (ptr_base + ptrdiff);
+	}
+	*size = count;
+	*endp = p;
+	return frames;
+}
+
+static void
+tracked_creation (uintptr_t obj, ClassDesc *cd, uint64_t size, BackTrace *bt, uint64_t timestamp)
+{
+	int i;
+	for (i = 0; i < num_tracked_objects; ++i) {
+		if (tracked_objects [i] != obj)
+			continue;
+		fprintf (outfile, "Object %p created (%s, %llu bytes) at %.3f secs.\n", (void*)obj, cd->name, size, (timestamp - startup_time)/1000000000.0);
+		if (bt && bt->count) {
+			int k;
+			for (k = 0; k < bt->count; ++k)
+				fprintf (outfile, "\t%s\n", bt->methods [k]->name);
+		}
+	}
+}
+
+static void
+track_handle (uintptr_t obj, int htype, uint32_t handle)
+{
+	int i;
+	for (i = 0; i < num_tracked_objects; ++i) {
+		if (tracked_objects [i] == obj)
+			fprintf (outfile, "Object %p referenced from handle %u\n", (void*)obj, handle);
+	}
+}
+
+static void
+track_move (uintptr_t src, uintptr_t dst)
+{
+	int i;
+	for (i = 0; i < num_tracked_objects; ++i) {
+		if (tracked_objects [i] == src)
+			fprintf (outfile, "Object %p moved to %p\n", (void*)src, (void*)dst);
+		else if (tracked_objects [i] == dst)
+			fprintf (outfile, "Object %p moved from %p\n", (void*)dst, (void*)src);
+	}
+}
+
+static void
+track_obj_reference (uintptr_t obj, uintptr_t parent, ClassDesc *cd)
+{
+	int i;
+	for (i = 0; i < num_tracked_objects; ++i) {
+		if (tracked_objects [i] == obj) 
+			fprintf (outfile, "Object %p referenced from %p (%s).\n", (void*)obj, (void*)parent, cd->name);
+	}
+}
+
+static void
+found_object (uintptr_t obj)
+{
+	num_tracked_objects ++;
+	tracked_objects = realloc (tracked_objects, num_tracked_objects * sizeof (tracked_objects [0]));
+	tracked_objects [num_tracked_objects - 1] = obj;
+}
+
+#define OBJ_ADDR(diff) ((obj_base + diff) << 3)
+#define LOG_TIME(base,diff) /*fprintf("outfile, time %llu + %llu near offset %d\n", base, diff, p - ctx->buf)*/
+
+static int
+decode_buffer (ProfContext *ctx)
+{
+	unsigned char *p;
+	unsigned char *end;
+	intptr_t thread_id;
+	intptr_t ptr_base;
+	intptr_t obj_base;
+	intptr_t method_base;
+	uint64_t time_base;
+	uint64_t file_offset;
+	int len, i;
+	ThreadContext *thread;
+
+#ifdef HAVE_SYS_ZLIB
+	if (ctx->gzfile)
+		file_offset = gztell (ctx->gzfile);
+	else
+#endif
+		file_offset = ftell (ctx->file);
+	if (!load_data (ctx, 48))
+		return 0;
+	p = ctx->buf;
+	if (read_int32 (p) != BUF_ID) {
+		fprintf (outfile, "Incorrect buffer id: 0x%x\n", read_int32 (p));
+		for (i = 0; i < 48; ++i) {
+			fprintf (outfile, "0x%x%s", p [i], i % 8?" ":"\n");
+		}
+		return 0;
+	}
+	len = read_int32 (p + 4);
+	time_base = read_int64 (p + 8);
+	ptr_base = read_int64 (p + 16);
+	obj_base = read_int64 (p + 24);
+	thread_id = read_int64 (p + 32);
+	method_base = read_int64 (p + 40);
+	if (debug)
+		fprintf (outfile, "buf: thread:%x, len: %d, time: %llu, file offset: %llu\n", thread_id, len, time_base, file_offset);
+	thread = load_thread (ctx, thread_id);
+	if (!load_data (ctx, len))
+		return 0;
+	if (!startup_time) {
+		startup_time = time_base;
+		if (time_from) {
+			time_from += startup_time;
+			time_to += startup_time;
+		}
+		if (!thread->name)
+			thread->name = pstrdup ("Main");
+	}
+	for (i = 0; i < thread->stack_id; ++i)
+		thread->stack [i]->recurse_count++;
+	p = ctx->buf;
+	end = p + len;
+	while (p < end) {
+		switch (*p & 0xf) {
+		case TYPE_GC: {
+			int subtype = *p & 0xf0;
+			uint64_t tdiff = decode_uleb128 (p + 1, &p);
+			LOG_TIME (time_base, tdiff);
+			time_base += tdiff;
+			if (subtype == TYPE_GC_RESIZE) {
+				uint64_t new_size = decode_uleb128 (p, &p);
+				if (debug)
+					fprintf (outfile, "gc heap resized to %llu\n", new_size);
+				gc_resizes++;
+				if (new_size > max_heap_size)
+					max_heap_size = new_size;
+			} else if (subtype == TYPE_GC_EVENT) {
+				uint64_t ev = decode_uleb128 (p, &p);
+				int gen = decode_uleb128 (p, &p);
+				if (debug)
+					fprintf (outfile, "gc event for gen%d: %s at %llu (thread: 0x%x)\n", gen, gc_event_name (ev), time_base, thread->thread_id);
+				if (gen > 2) {
+					fprintf (outfile, "incorrect gc gen: %d\n", gen);
+					break;
+				}
+				if (ev == MONO_GC_EVENT_START) {
+					thread->gc_start_times [gen] = time_base;
+					gc_info [gen].count++;
+				} else if (ev == MONO_GC_EVENT_END) {
+					tdiff = time_base - thread->gc_start_times [gen];
+					gc_info [gen].total_time += tdiff;
+					if (tdiff > gc_info [gen].max_time)
+						gc_info [gen].max_time = tdiff;
+				}
+			} else if (subtype == TYPE_GC_MOVE) {
+				int j, num = decode_uleb128 (p, &p);
+				gc_object_moves += num / 2;
+				for (j = 0; j < num; j += 2) {
+					intptr_t obj1diff = decode_sleb128 (p, &p);
+					intptr_t obj2diff = decode_sleb128 (p, &p);
+					if (num_tracked_objects)
+						track_move (OBJ_ADDR (obj1diff), OBJ_ADDR (obj2diff));
+					if (debug) {
+						fprintf (outfile, "moved obj %p to %p\n", (void*)OBJ_ADDR (obj1diff), (void*)OBJ_ADDR (obj2diff));
+					}
+				}
+			} else if (subtype == TYPE_GC_HANDLE_CREATED) {
+				int htype = decode_uleb128 (p, &p);
+				uint32_t handle = decode_uleb128 (p, &p);
+				intptr_t objdiff = decode_sleb128 (p, &p);
+				if (htype > 3)
+					return 0;
+				handle_info [htype].created++;
+				add_trace_thread (thread, &handle_info [htype].traces, 1);
+				/* FIXME: we don't take into account timing here */
+				if (handle_info [htype].created > handle_info [htype].max_live)
+					handle_info [htype].max_live = handle_info [htype].created;
+				if (num_tracked_objects)
+					track_handle (OBJ_ADDR (objdiff), htype, handle);
+				if (debug)
+					fprintf (outfile, "handle (%s) %u created for object %p\n", get_handle_name (htype), handle, (void*)OBJ_ADDR (objdiff));
+			} else if (subtype == TYPE_GC_HANDLE_DESTROYED) {
+				int htype = decode_uleb128 (p, &p);
+				uint32_t handle = decode_uleb128 (p, &p);
+				if (htype > 3)
+					return 0;
+				handle_info [htype].created--;
+				if (debug)
+					fprintf (outfile, "handle (%s) %u destroyed\n", get_handle_name (htype), handle);
+			}
+			break;
+		}
+		case TYPE_METADATA: {
+			int error = *p & TYPE_LOAD_ERR;
+			uint64_t tdiff = decode_uleb128 (p + 1, &p);
+			int mtype = *p++;
+			intptr_t ptrdiff = decode_sleb128 (p, &p);
+			LOG_TIME (time_base, tdiff);
+			time_base += tdiff;
+			if (mtype == TYPE_CLASS) {
+				intptr_t imptrdiff = decode_sleb128 (p, &p);
+				uint64_t flags = decode_uleb128 (p, &p);
+				if (flags) {
+					fprintf (outfile, "non-zero flags in class\n");
+					return 0;
+				}
+				if (debug)
+					fprintf (outfile, "loaded class %p (%s in %p) at %llu\n", (void*)(ptr_base + ptrdiff), p, (void*)(ptr_base + imptrdiff), time_base);
+				if (!error)
+					add_class (ptr_base + ptrdiff, (char*)p);
+				while (*p) p++;
+				p++;
+			} else if (mtype == TYPE_IMAGE) {
+				uint64_t flags = decode_uleb128 (p, &p);
+				if (flags) {
+					fprintf (outfile, "non-zero flags in image\n");
+					return 0;
+				}
+				if (debug)
+					fprintf (outfile, "loaded image %p (%s) at %llu\n", (void*)(ptr_base + ptrdiff), p, time_base);
+				if (!error)
+					add_image (ptr_base + ptrdiff, (char*)p);
+				while (*p) p++;
+				p++;
+			} else if (mtype == TYPE_THREAD) {
+				ThreadContext *nt;
+				uint64_t flags = decode_uleb128 (p, &p);
+				if (flags) {
+					fprintf (outfile, "non-zero flags in thread\n");
+					return 0;
+				}
+				nt = get_thread (ctx, ptr_base * ptrdiff);
+				nt->name = pstrdup ((char*)p);
+				if (debug)
+					fprintf (outfile, "thread %p named: %s\n", (void*)(ptr_base + ptrdiff), p);
+				while (*p) p++;
+				p++;
+			}
+			break;
+		}
+		case TYPE_ALLOC: {
+			int has_bt = *p & TYPE_ALLOC_BT;
+			uint64_t tdiff = decode_uleb128 (p + 1, &p);
+			intptr_t ptrdiff = decode_sleb128 (p, &p);
+			intptr_t objdiff = decode_sleb128 (p, &p);
+			uint64_t len;
+			int num_bt = 0;
+			MethodDesc* sframes [8];
+			MethodDesc** frames = sframes;
+			ClassDesc *cd = lookup_class (ptr_base + ptrdiff);
+			len = decode_uleb128 (p, &p);
+			LOG_TIME (time_base, tdiff);
+			time_base += tdiff;
+			if (debug)
+				fprintf (outfile, "alloced object %p, size %llu (%s) at %llu\n", (void*)OBJ_ADDR (objdiff), len, lookup_class (ptr_base + ptrdiff)->name, time_base);
+			if (has_bt) {
+				num_bt = 8;
+				frames = decode_bt (sframes, &num_bt, p, &p, ptr_base);
+				if (!frames) {
+					fprintf (outfile, "Cannot load backtrace\n");
+					return 0;
+				}
+			}
+			if ((thread_filter && thread_filter == thread->thread_id) || (time_base >= time_from && time_base < time_to)) {
+				BackTrace *bt;
+				cd->allocs++;
+				cd->alloc_size += len;
+				if (has_bt)
+					bt = add_trace_methods (frames, num_bt, &cd->traces, len);
+				else
+					bt = add_trace_thread (thread, &cd->traces, len);
+				if (find_size && len >= find_size) {
+					if (!find_name || strstr (cd->name, find_name))
+						found_object (OBJ_ADDR (objdiff));
+				} else if (!find_size && find_name && strstr (cd->name, find_name)) {
+					found_object (OBJ_ADDR (objdiff));
+				}
+				if (num_tracked_objects)
+					tracked_creation (OBJ_ADDR (objdiff), cd, len, bt, time_base);
+			}
+			if (frames != sframes)
+				free (frames);
+			break;
+		}
+		case TYPE_METHOD: {
+			int subtype = *p & 0xf0;
+			uint64_t tdiff = decode_uleb128 (p + 1, &p);
+			int64_t ptrdiff = decode_sleb128 (p, &p);
+			LOG_TIME (time_base, tdiff);
+			time_base += tdiff;
+			method_base += ptrdiff;
+			if (subtype == TYPE_JIT) {
+				intptr_t codediff = decode_sleb128 (p, &p);
+				int codelen = decode_uleb128 (p, &p);
+				if (debug)
+					fprintf (outfile, "jitted method %p (%s), size: %d, code: %p\n", (void*)(method_base), p, codelen, (void*)(ptr_base + codediff));
+				add_method (method_base, (char*)p, ptr_base + codediff, codelen);
+				while (*p) p++;
+				p++;
+			} else {
+				MethodDesc *method;
+				if ((thread_filter && thread_filter != thread->thread_id))
+					break;
+				method = lookup_method (method_base);
+				if (subtype == TYPE_ENTER) {
+					add_trace_thread (thread, &method->traces, 1);
+					push_method (thread, method, time_base);
+				} else {
+					pop_method (thread, method, time_base);
+				}
+				if (debug)
+					fprintf (outfile, "%s method %s\n", subtype == TYPE_ENTER? "enter": subtype == TYPE_EXC_LEAVE? "exleave": "leave", method->name);
+			}
+			break;
+		}
+		case TYPE_HEAP: {
+			int subtype = *p & 0xf0;
+			if (subtype == TYPE_HEAP_OBJECT) {
+				HeapObjectDesc *ho;
+				int i;
+				intptr_t objdiff = decode_sleb128 (p + 1, &p);
+				intptr_t ptrdiff = decode_sleb128 (p, &p);
+				uint64_t size = decode_uleb128 (p, &p);
+				uintptr_t num = decode_uleb128 (p, &p);
+				uintptr_t ref_offset;
+				uintptr_t last_obj_offset = 0;
+				ClassDesc *cd = lookup_class (ptr_base + ptrdiff);
+				if (size) {
+					HeapClassDesc *hcd = add_heap_shot_class (thread->current_heap_shot, cd, size);
+					if (collect_traces) {
+						ho = alloc_heap_obj (OBJ_ADDR (objdiff), hcd, num);
+						add_heap_shot_obj (thread->current_heap_shot, ho);
+						ref_offset = 0;
+					}
+				} else {
+					if (collect_traces)
+						ho = heap_shot_obj_add_refs (thread->current_heap_shot, OBJ_ADDR (objdiff), num, &ref_offset);
+				}
+				for (i = 0; i < num; ++i) {
+					/* FIXME: use object distance to measure how good
+					 * the GC is at keeping related objects close
+					 */
+					uintptr_t offset = ctx->data_version > 1? last_obj_offset + decode_uleb128 (p, &p): -1;
+					intptr_t obj1diff = decode_sleb128 (p, &p);
+					last_obj_offset = offset;
+					if (collect_traces)
+						ho->refs [ref_offset + i] = OBJ_ADDR (obj1diff);
+					if (num_tracked_objects)
+						track_obj_reference (OBJ_ADDR (obj1diff), OBJ_ADDR (objdiff), cd);
+				}
+				if (debug && size)
+					fprintf (outfile, "traced object %p, size %llu (%s), refs: %d\n", (void*)OBJ_ADDR (objdiff), size, cd->name, num);
+			} else if (subtype == TYPE_HEAP_ROOT) {
+				uintptr_t num = decode_uleb128 (p + 1, &p);
+				uintptr_t gc_num = decode_uleb128 (p, &p);
+				int i;
+				for (i = 0; i < num; ++i) {
+					intptr_t objdiff = decode_sleb128 (p, &p);
+					int root_type = decode_uleb128 (p, &p);
+					/* we just discard the extra info for now */
+					uintptr_t extra_info = decode_uleb128 (p, &p);
+					if (debug)
+						fprintf (outfile, "object %p is a %s root\n", (void*)OBJ_ADDR (objdiff), get_root_name (root_type));
+					if (collect_traces)
+						thread_add_root (thread, OBJ_ADDR (objdiff), root_type, extra_info);
+				}
+			} else if (subtype == TYPE_HEAP_END) {
+				uint64_t tdiff = decode_uleb128 (p + 1, &p);
+				LOG_TIME (time_base, tdiff);
+				time_base += tdiff;
+				if (debug)
+					fprintf (outfile, "heap shot end\n");
+				if (collect_traces) {
+					HeapShot *hs = thread->current_heap_shot;
+					if (hs && thread->num_roots) {
+						/* transfer the root ownershipt to the heapshot */
+						hs->num_roots = thread->num_roots;
+						hs->roots = thread->roots;
+						hs->roots_extra = thread->roots_extra;
+						hs->roots_types = thread->roots_types;
+					} else {
+						free (thread->roots);
+						free (thread->roots_extra);
+						free (thread->roots_types);
+					}
+					thread->num_roots = 0;
+					thread->size_roots = 0;
+					thread->roots = NULL;
+					thread->roots_extra = NULL;
+					thread->roots_types = NULL;
+					heap_shot_resolve_reverse_refs (hs);
+					heap_shot_mark_objects (hs);
+					heap_shot_free_objects (hs);
+				}
+				thread->current_heap_shot = NULL;
+			} else if (subtype == TYPE_HEAP_START) {
+				uint64_t tdiff = decode_uleb128 (p + 1, &p);
+				LOG_TIME (time_base, tdiff);
+				time_base += tdiff;
+				if (debug)
+					fprintf (outfile, "heap shot start\n");
+				thread->current_heap_shot = new_heap_shot (time_base);
+			}
+			break;
+		}
+		case TYPE_MONITOR: {
+			int event = (*p >> 4) & 0x3;
+			int has_bt = *p & TYPE_MONITOR_BT;
+			uint64_t tdiff = decode_uleb128 (p + 1, &p);
+			intptr_t objdiff = decode_sleb128 (p, &p);
+			MethodDesc* sframes [8];
+			MethodDesc** frames = sframes;
+			int record;
+			int num_bt = 0;
+			LOG_TIME (time_base, tdiff);
+			time_base += tdiff;
+			record = (!thread_filter || thread_filter == thread->thread_id);
+			if (event == MONO_PROFILER_MONITOR_CONTENTION) {
+				MonitorDesc *mdesc = lookup_monitor (OBJ_ADDR (objdiff));
+				if (record) {
+					monitor_contention++;
+					mdesc->contentions++;
+					thread->monitor = mdesc;
+					thread->contention_start = time_base;
+				}
+				if (has_bt) {
+					num_bt = 8;
+					frames = decode_bt (sframes, &num_bt, p, &p, ptr_base);
+					if (!frames) {
+						fprintf (outfile, "Cannot load backtrace\n");
+						return 0;
+					}
+					if (record)
+						add_trace_methods (frames, num_bt, &mdesc->traces, 1);
+				} else {
+					if (record)
+						add_trace_thread (thread, &mdesc->traces, 1);
+				}
+			} else if (event == MONO_PROFILER_MONITOR_FAIL) {
+				if (record) {
+					monitor_failed++;
+					if (thread->monitor && thread->contention_start) {
+						uint64_t wait_time = time_base - thread->contention_start;
+						if (wait_time > thread->monitor->max_wait_time)
+							thread->monitor->max_wait_time = wait_time;
+						thread->monitor->wait_time += wait_time;
+						thread->monitor = NULL;
+						thread->contention_start = 0;
+					}
+				}
+			} else if (event == MONO_PROFILER_MONITOR_DONE) {
+				if (record) {
+					monitor_acquired++;
+					if (thread->monitor && thread->contention_start) {
+						uint64_t wait_time = time_base - thread->contention_start;
+						if (wait_time > thread->monitor->max_wait_time)
+							thread->monitor->max_wait_time = wait_time;
+						thread->monitor->wait_time += wait_time;
+						thread->monitor = NULL;
+						thread->contention_start = 0;
+					}
+				}
+			}
+			if (debug)
+				fprintf (outfile, "monitor %s for object %p\n", monitor_ev_name (event), (void*)OBJ_ADDR (objdiff));
+			if (frames != sframes)
+				free (frames);
+			break;
+		}
+		case TYPE_EXCEPTION: {
+			int subtype = *p & 0x70;
+			int has_bt = *p & TYPE_EXCEPTION_BT;
+			uint64_t tdiff = decode_uleb128 (p + 1, &p);
+			MethodDesc* sframes [8];
+			MethodDesc** frames = sframes;
+			int record;
+			LOG_TIME (time_base, tdiff);
+			time_base += tdiff;
+			record = (!thread_filter || thread_filter == thread->thread_id);
+			if (subtype == TYPE_CLAUSE) {
+				int clause_type = decode_uleb128 (p, &p);
+				int clause_num = decode_uleb128 (p, &p);
+				int64_t ptrdiff = decode_sleb128 (p, &p);
+				method_base += ptrdiff;
+				if (record)
+					clause_summary [clause_type]++;
+				if (debug)
+					fprintf (outfile, "clause %s (%d) in method %s\n", clause_name (clause_type), clause_num, lookup_method (method_base)->name);
+			} else {
+				intptr_t objdiff = decode_sleb128 (p, &p);
+				if (record)
+					throw_count++;
+				if (has_bt) {
+					has_bt = 8;
+					frames = decode_bt (sframes, &has_bt, p, &p, ptr_base);
+					if (!frames) {
+						fprintf (outfile, "Cannot load backtrace\n");
+						return 0;
+					}
+					if (record)
+						add_trace_methods (frames, has_bt, &exc_traces, 1);
+				} else {
+					if (record)
+						add_trace_thread (thread, &exc_traces, 1);
+				}
+				if (frames != sframes)
+					free (frames);
+				if (debug)
+					fprintf (outfile, "throw %p\n", (void*)OBJ_ADDR (objdiff));
+			}
+			break;
+		}
+		case TYPE_SAMPLE: {
+			int subtype = *p & 0xf0;
+			if (subtype == TYPE_SAMPLE_HIT) {
+				int i;
+				int sample_type = decode_uleb128 (p + 1, &p);
+				uint64_t tstamp = decode_uleb128 (p, &p);
+				int count = decode_uleb128 (p, &p);
+				for (i = 0; i < count; ++i) {
+					uintptr_t ip = ptr_base + decode_sleb128 (p, &p);
+					add_stat_sample (sample_type, ip);
+					if (debug)
+						fprintf (outfile, "sample hit, type: %d at %p\n", sample_type, (void*)ip);
+				}
+			} else if (subtype == TYPE_SAMPLE_USYM) {
+				/* un unmanaged symbol description */
+				uintptr_t addr = ptr_base + decode_sleb128 (p + 1, &p);
+				uintptr_t size = decode_uleb128 (p, &p);
+				char *name;
+				name = pstrdup ((char*)p);
+				add_unmanaged_symbol (addr, name, size);
+				if (debug)
+					fprintf (outfile, "unmanaged symbol %s at %p\n", name, (void*)addr);
+				while (*p) p++;
+				p++;
+			} else if (subtype == TYPE_SAMPLE_UBIN) {
+				/* un unmanaged binary loaded in memory */
+				uint64_t tdiff = decode_uleb128 (p + 1, &p);
+				uintptr_t addr = decode_sleb128 (p, &p);
+				uint64_t offset = decode_uleb128 (p, &p);
+				uintptr_t size = decode_uleb128 (p, &p);
+				char *name;
+				LOG_TIME (time_base, tdiff);
+				time_base += tdiff;
+				name = pstrdup ((char*)p);
+				add_unmanaged_binary (addr, name, size);
+				if (debug)
+					fprintf (outfile, "unmanaged binary %s at %p\n", name, (void*)addr);
+				while (*p) p++;
+				p++;
+			} else {
+				return 0;
+			}
+			break;
+		}
+		default:
+			fprintf (outfile, "unhandled profiler event: 0x%x at file offset: %llu + %d (len: %d\n)\n", *p, file_offset, p - ctx->buf, len);
+			exit (1);
+		}
+	}
+	thread->last_time = time_base;
+	for (i = 0; i < thread->stack_id; ++i)
+		thread->stack [i]->recurse_count = 0;
+	return 1;
+}
+
+static ProfContext*
+load_file (char *name)
+{
+	unsigned char *p;
+	ProfContext *ctx = calloc (sizeof (ProfContext), 1);
+	if (strcmp (name, "-") == 0)
+		ctx->file = stdin;
+	else
+		ctx->file = fopen (name, "rb");
+	if (!ctx->file) {
+		printf ("Cannot open file: %s\n", name);
+		exit (1);
+	}
+#if defined (HAVE_SYS_ZLIB)
+	if (ctx->file != stdin)
+		ctx->gzfile = gzdopen (fileno (ctx->file), "rb");
+#endif
+	if (!load_data (ctx, 32))
+		return NULL;
+	p = ctx->buf;
+	if (read_int32 (p) != LOG_HEADER_ID || p [6] > LOG_DATA_VERSION)
+		return NULL;
+	ctx->version_major = p [4];
+	ctx->version_minor = p [5];
+	ctx->data_version = p [6];
+	/* reading 64 bit files on 32 bit systems not supported yet */
+	if (p [7] > sizeof (void*))
+		return NULL;
+	if (read_int32 (p + 20)) /* flags must be 0 */
+		return NULL;
+	ctx->startup_time = read_int64 (p + 8);
+	ctx->timer_overhead = read_int32 (p + 16);
+	ctx->pid = read_int32 (p + 24);
+	ctx->port = read_int16 (p + 28);
+	return ctx;
+}
+
+enum {
+	ALLOC_SORT_BYTES,
+	ALLOC_SORT_COUNT
+};
+static int alloc_sort_mode = ALLOC_SORT_BYTES;
+
+static int
+compare_class (const void *a, const void *b)
+{
+	ClassDesc *const*A = a;
+	ClassDesc *const*B = b;
+	uint64_t vala, valb;
+	if (alloc_sort_mode == ALLOC_SORT_BYTES) {
+		vala = (*A)->alloc_size;
+		valb = (*B)->alloc_size;
+	} else {
+		vala = (*A)->allocs;
+		valb = (*B)->allocs;
+	}
+	if (valb == vala)
+		return 0;
+	if (valb < vala)
+		return -1;
+	return 1;
+}
+
+static void
+dump_header (ProfContext *ctx)
+{
+	time_t st = ctx->startup_time / 1000;
+	char *t = ctime (&st);
+	fprintf (outfile, "\nMono log profiler data\n");
+	fprintf (outfile, "\tProfiler version: %d.%d\n", ctx->version_major, ctx->version_minor);
+	fprintf (outfile, "\tData version: %d\n", ctx->data_version);
+	fprintf (outfile, "\tMean timer overhead: %d nanoseconds\n", ctx->timer_overhead);
+	fprintf (outfile, "\tProgram startup: %s", t);
+	if (ctx->pid)
+		fprintf (outfile, "\tProgram ID: %d\n", ctx->pid);
+	if (ctx->port)
+		fprintf (outfile, "\tServer listening on: %d\n", ctx->port);
+}
+
+static void
+dump_traces (TraceDesc *traces, const char *desc)
+{
+	int j;
+	if (!show_traces)
+		return;
+	if (!traces->count)
+		return;
+	sort_context_array (traces);
+	for (j = 0; j < traces->count; ++j) {
+		int k;
+		BackTrace *bt;
+		bt = traces->traces [j].bt;
+		if (!bt->count)
+			continue;
+		fprintf (outfile, "\t%llu %s from:\n", traces->traces [j].count, desc);
+		for (k = 0; k < bt->count; ++k)
+			fprintf (outfile, "\t\t%s\n", bt->methods [k]->name);
+	}
+}
+
+static void
+dump_threads (ProfContext *ctx)
+{
+	ThreadContext *thread;
+	fprintf (outfile, "\nThread summary\n");
+	for (thread = ctx->threads; thread; thread = thread->next) {
+		fprintf (outfile, "\tThread: %p, name: \"%s\"\n", (void*)thread->thread_id, thread->name? thread->name: "");
+	}
+}
+
+static void
+dump_exceptions (void)
+{
+	int i;
+	fprintf (outfile, "\nException summary\n");
+	fprintf (outfile, "\tThrows: %llu\n", throw_count);
+	dump_traces (&exc_traces, "throws");
+	for (i = 0; i <= MONO_EXCEPTION_CLAUSE_FAULT; ++i) {
+		if (!clause_summary [i])
+			continue;
+		fprintf (outfile, "\tExecuted %s clauses: %llu\n", clause_name (i), clause_summary [i]);
+	}
+}
+
+static int
+compare_monitor (const void *a, const void *b)
+{
+	MonitorDesc *const*A = a;
+	MonitorDesc *const*B = b;
+	if ((*B)->wait_time == (*A)->wait_time)
+		return 0;
+	if ((*B)->wait_time < (*A)->wait_time)
+		return -1;
+	return 1;
+}
+
+static void
+dump_monitors (void)
+{
+	MonitorDesc **monitors;
+	int i, j;
+	if (!num_monitors)
+		return;
+	monitors = malloc (sizeof (void*) * num_monitors);
+	for (i = 0, j = 0; i < SMALL_HASH_SIZE; ++i) {
+		MonitorDesc *mdesc = monitor_hash [i];
+		while (mdesc) {
+			monitors [j++] = mdesc;
+			mdesc = mdesc->next;
+		}
+	}
+	qsort (monitors, num_monitors, sizeof (void*), compare_monitor);
+	fprintf (outfile, "\nMonitor lock summary\n");
+	for (i = 0; i < num_monitors; ++i) {
+		MonitorDesc *mdesc = monitors [i];
+		fprintf (outfile, "\tLock object %p: %d contentions\n", (void*)mdesc->objid, (int)mdesc->contentions);
+		fprintf (outfile, "\t\t%.6f secs total wait time, %.6f max, %.6f average\n",
+			mdesc->wait_time/1000000000.0, mdesc->max_wait_time/1000000000.0, mdesc->wait_time/1000000000.0/mdesc->contentions);
+		dump_traces (&mdesc->traces, "contentions");
+	}
+	fprintf (outfile, "\tLock contentions: %llu\n", monitor_contention);
+	fprintf (outfile, "\tLock acquired: %llu\n", monitor_acquired);
+	fprintf (outfile, "\tLock failures: %llu\n", monitor_failed);
+}
+
+static void
+dump_gcs (void)
+{
+	int i;
+	fprintf (outfile, "\nGC summary\n");
+	fprintf (outfile, "\tGC resizes: %d\n", gc_resizes);
+	fprintf (outfile, "\tMax heap size: %llu\n", max_heap_size);
+	fprintf (outfile, "\tObject moves: %llu\n", gc_object_moves);
+	for (i = 0; i < 3; ++i) {
+		if (!gc_info [i].count)
+			continue;
+		fprintf (outfile, "\tGen%d collections: %d, max time: %lluus, total time: %lluus, average: %lluus\n",
+			i, gc_info [i].count, gc_info [i].max_time / 1000, gc_info [i].total_time / 1000,
+			gc_info [i].total_time / gc_info [i].count / 1000);
+	}
+	for (i = 0; i < 3; ++i) {
+		if (!handle_info [i].max_live)
+			continue;
+		fprintf (outfile, "\tGC handles %s: created: %llu, destroyed: %llu, max: %llu\n",
+			get_handle_name (i), handle_info [i].created, handle_info [i].destroyed, handle_info [i].max_live);
+		dump_traces (&handle_info [i].traces, "created");
+	}
+}
+
+static void
+dump_jit (void)
+{
+	int i;
+	int code_size = 0;
+	int compiled_methods = 0;
+	MethodDesc* m;
+	fprintf (outfile, "\nJIT summary\n");
+	for (i = 0; i < HASH_SIZE; ++i) {
+		m = method_hash [i];
+		for (m = method_hash [i]; m; m = m->next) {
+			if (!m->code)
+				continue;
+			compiled_methods++;
+			code_size += m->len;
+		}
+	}
+	fprintf (outfile, "\tCompiled methods: %d\n", compiled_methods);
+	fprintf (outfile, "\tGenerated code size: %d\n", code_size);
+}
+
+static void
+dump_allocations (void)
+{
+	int i, c;
+	intptr_t allocs = 0;
+	uint64_t size = 0;
+	int header_done = 0;
+	ClassDesc **classes = malloc (num_classes * sizeof (void*));
+	ClassDesc *cd;
+	c = 0;
+	for (i = 0; i < HASH_SIZE; ++i) {
+		cd = class_hash [i];
+		while (cd) {
+			classes [c++] = cd;
+			cd = cd->next;
+		}
+	}
+	qsort (classes, num_classes, sizeof (void*), compare_class);
+	for (i = 0; i < num_classes; ++i) {
+		cd = classes [i];
+		if (!cd->allocs)
+			continue;
+		allocs += cd->allocs;
+		size += cd->alloc_size;
+		if (!header_done++) {
+			fprintf (outfile, "\nAllocation summary\n");
+			fprintf (outfile, "%10s %10s %8s Type name\n", "Bytes", "Count", "Average");
+		}
+		fprintf (outfile, "%10llu %10d %8llu %s\n", cd->alloc_size, cd->allocs, cd->alloc_size / cd->allocs, cd->name);
+		dump_traces (&cd->traces, "bytes");
+	}
+	if (allocs)
+		fprintf (outfile, "Total memory allocated: %llu bytes in %d objects\n", size, allocs);
+}
+
+enum {
+	METHOD_SORT_TOTAL,
+	METHOD_SORT_SELF,
+	METHOD_SORT_CALLS
+};
+
+static int method_sort_mode = METHOD_SORT_TOTAL;
+
+static int
+compare_method (const void *a, const void *b)
+{
+	MethodDesc *const*A = a;
+	MethodDesc *const*B = b;
+	uint64_t vala, valb;
+	if (method_sort_mode == METHOD_SORT_SELF) {
+		vala = (*A)->self_time;
+		valb = (*B)->self_time;
+	} else if (method_sort_mode == METHOD_SORT_CALLS) {
+		vala = (*A)->calls;
+		valb = (*B)->calls;
+	} else {
+		vala = (*A)->total_time;
+		valb = (*B)->total_time;
+	}
+	if (vala == valb)
+		return 0;
+	if (valb < vala)
+		return -1;
+	return 1;
+}
+
+static void
+dump_metadata (void)
+{
+	fprintf (outfile, "\nMetadata summary\n");
+	fprintf (outfile, "\tLoaded images: %d\n", num_images);
+	if (verbose) {
+		ImageDesc *image;
+		int i;
+		for (i = 0; i < SMALL_HASH_SIZE; ++i) {
+			image = image_hash [i];
+			while (image) {
+				fprintf (outfile, "\t\t%s\n", image->filename);
+				image = image->next;
+			}
+		}
+	}
+
+}
+
+static void
+dump_methods (void)
+{
+	int i, c;
+	uint64_t calls = 0;
+	int header_done = 0;
+	MethodDesc **methods = malloc (num_methods * sizeof (void*));
+	MethodDesc *cd;
+	c = 0;
+	for (i = 0; i < HASH_SIZE; ++i) {
+		cd = method_hash [i];
+		while (cd) {
+			cd->total_time = cd->self_time + cd->callee_time;
+			methods [c++] = cd;
+			cd = cd->next;
+		}
+	}
+	qsort (methods, num_methods, sizeof (void*), compare_method);
+	for (i = 0; i < num_methods; ++i) {
+		uint64_t msecs;
+		uint64_t smsecs;
+		cd = methods [i];
+		if (!cd->calls)
+			continue;
+		calls += cd->calls;
+		msecs = cd->total_time / 1000000;
+		smsecs = (cd->total_time - cd->callee_time) / 1000000;
+		if (!msecs && !verbose)
+			continue;
+		if (!header_done++) {
+			fprintf (outfile, "\nMethod call summary\n");
+			fprintf (outfile, "%8s %8s %10s Method name\n", "Total(ms)", "Self(ms)", "Calls");
+		}
+		fprintf (outfile, "%8llu %8llu %10llu %s\n", msecs, smsecs, cd->calls, cd->name);
+		dump_traces (&cd->traces, "calls");
+	}
+	if (calls)
+		fprintf (outfile, "Total calls: %llu\n", calls);
+}
+
+static int
+compare_heap_class (const void *a, const void *b)
+{
+	HeapClassDesc *const*A = a;
+	HeapClassDesc *const*B = b;
+	uint64_t vala, valb;
+	if (alloc_sort_mode == ALLOC_SORT_BYTES) {
+		vala = (*A)->total_size;
+		valb = (*B)->total_size;
+	} else {
+		vala = (*A)->count;
+		valb = (*B)->count;
+	}
+	if (valb == vala)
+		return 0;
+	if (valb < vala)
+		return -1;
+	return 1;
+}
+
+static int
+compare_rev_class (const void *a, const void *b)
+{
+	const HeapClassRevRef *A = a;
+	const HeapClassRevRef *B = b;
+	if (B->count == A->count)
+		return 0;
+	if (B->count < A->count)
+		return -1;
+	return 1;
+}
+
+static void
+dump_rev_claases (HeapClassRevRef *revs, int count)
+{
+	int j;
+	if (!show_traces)
+		return;
+	if (!count)
+		return;
+	for (j = 0; j < count; ++j) {
+		HeapClassDesc *cd = revs [j].klass;
+		fprintf (outfile, "\t\t%llu references from: %s\n", revs [j].count, cd->klass->name);
+	}
+}
+
+static void
+heap_shot_summary (HeapShot *hs, int hs_num, HeapShot *last_hs)
+{
+	uint64_t size = 0;
+	uint64_t count = 0;
+	int ccount = 0;
+	int i;
+	HeapClassDesc *cd;
+	HeapClassDesc **sorted;
+	sorted = malloc (sizeof (void*) * hs->class_count);
+	for (i = 0; i < hs->hash_size; ++i) {
+		cd = hs->class_hash [i];
+		if (!cd)
+			continue;
+		count += cd->count;
+		size += cd->total_size;
+		sorted [ccount++] = cd;
+	}
+	hs->sorted = sorted;
+	qsort (sorted, ccount, sizeof (void*), compare_heap_class);
+	fprintf (outfile, "\n\tHeap shot %d at %.3f secs: size: %llu, object count: %llu, class count: %d, roots: %d\n",
+		hs_num, (hs->timestamp - startup_time)/1000000000.0, size, count, ccount, hs->num_roots);
+	if (!verbose && ccount > 30)
+		ccount = 30;
+	fprintf (outfile, "\t%10s %10s %8s Class name\n", "Bytes", "Count", "Average");
+	for (i = 0; i < ccount; ++i) {
+		HeapClassRevRef *rev_sorted;
+		int j, k;
+		HeapClassDesc *ocd = NULL;
+		cd = sorted [i];
+		if (last_hs)
+			ocd = heap_class_lookup (last_hs, cd->klass);
+		fprintf (outfile, "\t%10llu %10llu %8llu %s", cd->total_size, cd->count, cd->total_size / cd->count, cd->klass->name);
+		if (ocd) {
+			int64_t bdiff = cd->total_size - ocd->total_size;
+			int64_t cdiff = cd->count - ocd->count;
+			fprintf (outfile, " (bytes: %+lld, count: %+lld)\n", bdiff, cdiff);
+		} else {
+			fprintf (outfile, "\n");
+		}
+		if (!collect_traces)
+			continue;
+		rev_sorted = malloc (cd->rev_count * sizeof (HeapClassRevRef));
+		k = 0;
+		for (j = 0; j < cd->rev_hash_size; ++j) {
+			if (cd->rev_hash [j].klass)
+				rev_sorted [k++] = cd->rev_hash [j];
+		}
+		assert (cd->rev_count == k);
+		qsort (rev_sorted, cd->rev_count, sizeof (HeapClassRevRef), compare_rev_class);
+		if (cd->root_references)
+			fprintf (outfile, "\t\t%d root references (%d pinning)\n", cd->root_references, cd->pinned_references);
+		dump_rev_claases (rev_sorted, cd->rev_count);
+		free (rev_sorted);
+	}
+	free (sorted);
+}
+
+static int
+compare_heap_shots (const void *a, const void *b)
+{
+	HeapShot *const*A = a;
+	HeapShot *const*B = b;
+	if ((*B)->timestamp == (*A)->timestamp)
+		return 0;
+	if ((*B)->timestamp > (*A)->timestamp)
+		return -1;
+	return 1;
+}
+
+static void
+dump_heap_shots (void)
+{
+	HeapShot **hs_sorted;
+	HeapShot *hs;
+	HeapShot *last_hs = NULL;
+	int i;
+	if (!heap_shots)
+		return;
+	hs_sorted = malloc (num_heap_shots * sizeof (void*));
+	fprintf (outfile, "\nHeap shot summary\n");
+	i = 0;
+	for (hs = heap_shots; hs; hs = hs->next)
+		hs_sorted [i++] = hs;
+	qsort (hs_sorted, num_heap_shots, sizeof (void*), compare_heap_shots);
+	for (i = 0; i < num_heap_shots; ++i) {
+		hs = hs_sorted [i];
+		heap_shot_summary (hs, i, last_hs);
+		last_hs = hs;
+	}
+}
+
+static void
+flush_context (ProfContext *ctx)
+{
+	ThreadContext *thread;
+	/* FIXME: sometimes there are leftovers: indagate */
+	for (thread = ctx->threads; thread; thread = thread->next) {
+		while (thread->stack_id) {
+			if (debug)
+				fprintf (outfile, "thread %p has %d items on stack\n", (void*)thread->thread_id, thread->stack_id);
+			pop_method (thread, thread->stack [thread->stack_id - 1], thread->last_time);
+		}
+	}
+}
+
+static const char *reports = "header,jit,gc,sample,alloc,call,metadata,exception,monitor,thread,heapshot";
+
+static const char*
+match_option (const char *p, const char *opt)
+{
+	int len = strlen (opt);
+	if (strncmp (p, opt, len) == 0) {
+		if (p [len] == ',')
+			len++;
+		return p + len;
+	}
+	return p;
+}
+
+static int
+print_reports (ProfContext *ctx, const char *reps, int parse_only)
+{
+	const char *opt;
+	const char *p;
+	for (p = reps; *p; p = opt) {
+		if ((opt = match_option (p, "header")) != p) {
+			if (!parse_only)
+				dump_header (ctx);
+			continue;
+		}
+		if ((opt = match_option (p, "thread")) != p) {
+			if (!parse_only)
+				dump_threads (ctx);
+			continue;
+		}
+		if ((opt = match_option (p, "gc")) != p) {
+			if (!parse_only)
+				dump_gcs ();
+			continue;
+		}
+		if ((opt = match_option (p, "jit")) != p) {
+			if (!parse_only)
+				dump_jit ();
+			continue;
+		}
+		if ((opt = match_option (p, "alloc")) != p) {
+			if (!parse_only)
+				dump_allocations ();
+			continue;
+		}
+		if ((opt = match_option (p, "call")) != p) {
+			if (!parse_only)
+				dump_methods ();
+			continue;
+		}
+		if ((opt = match_option (p, "metadata")) != p) {
+			if (!parse_only)
+				dump_metadata ();
+			continue;
+		}
+		if ((opt = match_option (p, "exception")) != p) {
+			if (!parse_only)
+				dump_exceptions ();
+			continue;
+		}
+		if ((opt = match_option (p, "monitor")) != p) {
+			if (!parse_only)
+				dump_monitors ();
+			continue;
+		}
+		if ((opt = match_option (p, "heapshot")) != p) {
+			if (!parse_only)
+				dump_heap_shots ();
+			continue;
+		}
+		if ((opt = match_option (p, "sample")) != p) {
+			if (!parse_only)
+				dump_samples ();
+			continue;
+		}
+		return 0;
+	}
+	return 1;
+}
+
+static int
+add_find_spec (const char *p)
+{
+	if (p [0] == 'S' && p [1] == ':') {
+		char *vale;
+		find_size = strtoul (p + 2, &vale, 10);
+		return 1;
+	} else if (p [0] == 'T' && p [1] == ':') {
+		find_name = p + 2;
+		return 1;
+	}
+	return 0;
+}
+
+static void
+usage (void)
+{
+	printf ("Mono log profiler report version %d.%d\n", LOG_VERSION_MAJOR, LOG_VERSION_MINOR);
+	printf ("Usage: mprof-report [OPTIONS] FILENAME\n");
+	printf ("FILENAME can be '-' to read from standard input.\n");
+	printf ("Options:\n");
+	printf ("\t--help               display this help\n");
+	printf ("\t--out=FILE           write to FILE instead of stdout\n");
+	printf ("\t--traces             collect and show backtraces\n"); 
+	printf ("\t--maxframes=NUM      limit backtraces to NUM entries\n");
+	printf ("\t--reports=R1[,R2...] print the specified reports. Defaults are:\n");
+	printf ("\t                     %s\n", reports);
+	printf ("\t--method-sort=MODE   sort methods according to MODE: total, self, calls\n");
+	printf ("\t--alloc-sort=MODE    sort allocations according to MODE: bytes, count\n");
+	printf ("\t--track=OB1[,OB2...] track what happens to objects OBJ1, O2 etc.\n");
+	printf ("\t--find=FINDSPEC      find and track objects matching FINFSPEC, where FINDSPEC is:\n");
+	printf ("\t                     S:minimum_size or T:partial_name\n");
+	printf ("\t--thread=THREADID    consider just the data for thread THREADID\n");
+	printf ("\t--time=FROM-TO       consider data FROM seconds from startup up to TO seconds\n");
+	printf ("\t--verbose            increase verbosity level\n");
+	printf ("\t--debug              display decoding debug info for mprof-report devs\n");
+}
+
+int
+main (int argc, char *argv[])
+{
+	ProfContext *ctx;
+	int i;
+	outfile = stdout;
+	for (i = 1; i < argc; ++i) {
+		if (strcmp ("--debug", argv [i]) == 0) {
+			debug++;
+		} else if (strcmp ("--help", argv [i]) == 0) {
+			usage ();
+			return 0;
+		} else if (strncmp ("--alloc-sort=", argv [i], 13) == 0) {
+			const char *val = argv [i] + 13;
+			if (strcmp (val, "bytes") == 0) {
+				alloc_sort_mode = ALLOC_SORT_BYTES;
+			} else if (strcmp (val, "count") == 0) {
+				alloc_sort_mode = ALLOC_SORT_COUNT;
+			} else {
+				usage ();
+				return 1;
+			}
+		} else if (strncmp ("--method-sort=", argv [i], 14) == 0) {
+			const char *val = argv [i] + 14;
+			if (strcmp (val, "total") == 0) {
+				method_sort_mode = METHOD_SORT_TOTAL;
+			} else if (strcmp (val, "self") == 0) {
+				method_sort_mode = METHOD_SORT_SELF;
+			} else if (strcmp (val, "calls") == 0) {
+				method_sort_mode = METHOD_SORT_CALLS;
+			} else {
+				usage ();
+				return 1;
+			}
+		} else if (strncmp ("--reports=", argv [i], 10) == 0) {
+			const char *val = argv [i] + 10;
+			if (!print_reports (NULL, val, 1)) {
+				usage ();
+				return 1;
+			}
+			reports = val;
+		} else if (strncmp ("--out=", argv [i], 6) == 0) {
+			const char *val = argv [i] + 6;
+			outfile = fopen (val, "w");
+			if (!outfile) {
+				printf ("Cannot open output file: %s\n", val);
+				return 1;
+			}
+		} else if (strncmp ("--maxframes=", argv [i], 12) == 0) {
+			const char *val = argv [i] + 12;
+			char *vale;
+			trace_max = strtoul (val, &vale, 10);
+		} else if (strncmp ("--find=", argv [i], 7) == 0) {
+			const char *val = argv [i] + 7;
+			if (!add_find_spec (val)) {
+				usage ();
+				return 1;
+			}
+		} else if (strncmp ("--track=", argv [i], 8) == 0) {
+			const char *val = argv [i] + 8;
+			char *vale;
+			while (*val) {
+				uintptr_t tracked_obj;
+				if (*val == ',') {
+					val++;
+					continue;
+				}
+				tracked_obj = strtoul (val, &vale, 0);
+				found_object (tracked_obj);
+				val = vale;
+			}
+		} else if (strncmp ("--thread=", argv [i], 9) == 0) {
+			const char *val = argv [i] + 9;
+			char *vale;
+			thread_filter = strtoul (val, &vale, 0);
+		} else if (strncmp ("--time=", argv [i], 7) == 0) {
+			char *val = pstrdup (argv [i] + 7);
+			double from_secs, to_secs;
+			char *top = strchr (val, '-');
+			if (!top) {
+				usage ();
+				return 1;
+			}
+			*top++ = 0;
+			from_secs = atof (val);
+			to_secs = atof (top);
+			free (val);
+			if (from_secs > to_secs) {
+				usage ();
+				return 1;
+			}
+			time_from = from_secs * 1000000000;
+			time_to = to_secs * 1000000000;
+		} else if (strcmp ("--verbose", argv [i]) == 0) {
+			verbose++;
+		} else if (strcmp ("--traces", argv [i]) == 0) {
+			show_traces = 1;
+			collect_traces = 1;
+		} else {
+			break;
+		}
+	}
+	if (i >= argc) {
+		usage ();
+		return 2;
+	}
+	ctx = load_file (argv [i]);
+	if (!ctx) {
+		printf ("Not a log profiler data file (or unsupported version).\n");
+		return 1;
+	}
+	while (decode_buffer (ctx));
+	flush_context (ctx);
+	if (num_tracked_objects)
+		return 0;
+	print_reports (ctx, reports, 0);
+	return 0;
+}
+
diff --git a/mono/profiler/log-profiler.txt b/mono/profiler/log-profiler.txt
new file mode 100644
index 0000000..3ef5dcb
--- /dev/null
+++ b/mono/profiler/log-profiler.txt
@@ -0,0 +1,409 @@
+# The Mono log profiler
+
+The Mono *log* profiler can be used to collect a lot of information about
+a program running in the Mono runtime. This data can be used (both while the process
+is running and later) to do analyses of the program behaviour, determine
+resource usage, performance issues or even look for particular execution patterns.
+
+This is accomplished by logging the events provided by the Mono runtime through the
+profiling interface and periodically writing them to a file which can be later
+inspected with the command line *mprof-report* program or with a GUI (not developed yet).
+
+The events collected include (among others):
+
+* method enter and leave
+* object allocation
+* garbage collection
+* JIT compilation
+* metadata loading
+* lock contention
+* exceptions
+
+In addition, the profiler can periodically collect info about all the objects
+present in the heap at the end of a garbage collection (this is called heap shot
+and currently implemented only for the sgen garbage collector).
+Another available profiler mode is the *sampling* or *statistical* mode:
+periodically the program is sampled and the information about what the program was
+busy with is saved. This allows to get information about the program behaviour
+without degrading its performance too much (usually less than 10%).
+
+## Basic profiler usage
+
+The simpler way to use the profiler is the following:
+
+`mono --profile=log program.exe`
+
+At the end of the execution the file *output.mlpd* will be found in the current
+directory. A summary report of the data can be printed by running:
+
+`mprof-report output.mlpd`
+
+With this invocation a huge amount of data is collected about the program execution
+and collecting and saving this data can significantly slow down program execution.
+If saving the profiling data is not needed, a report can be generated directly with:
+
+`mono --profile=log:report program.exe`
+
+If the information about allocations is not of interest, it can be excluded:
+
+`mono --profile=log:noalloc program.exe`
+
+On the other hand, if method call timing is not important, while allocations are,
+the needed info can be gathered with:
+
+`mono --profile=log:nocalls program.exe`
+
+You will still be able to inspect information about the sequence of calls that lead
+to each allocation because at each object allocation a stack trace is collected if
+full enter/leave information is not available.
+
+To periodically collect heap shots (and exclude method and allocation events) use the
+following options (making sure you run with the sgen garbage collector):
+
+`mono --gc=sgen --profile=log:heapshot program.exe`
+
+To perform a sampling profiler run, use the *sample* option:
+
+`mono --profile=log:sample program.exe`
+
+## Profiler option documentation
+
+By default the *log* profiler will gather all the events provided by the Mono runtime
+and write them to a file named *output.mlpd*. When no option is specified, it
+is equivalent to using:
+
+`--profile=log:calls,alloc,output=output.mlpd,maxframes=8,calldepth=100`
+
+The following options can be used to modify this default behaviour. Each option
+is separated from the next by a `,` character, with no spaces and all the options
+are included after the *log:* profile module specifier.
+
+* *help*: display concise help info about each available option
+
+* *[no]alloc*: *noalloc* disables collecting object allocation info, *alloc* enables
+it if it was disabled by another option like *heapshot*.
+
+* *[no]calls*: *nocalls* disables collecting method enter and leave events. When this
+option is used at each object allocation and at some other events (like lock contentions
+and exception throws) a stack trace is collected by default. See the *maxframes* option to
+control this behaviour. *calls* enables method enter/leave events if they were disabled
+by another option like *heapshot*.
+
+* *heapshot[=MODE]*: collect heap shot data at each major collection. The frequency of the
+heap shots can be changed with the *MODE* parameter. When this option is used
+allocation events and method enter/leave events are not recorded by default: if they
+are needed, they need to be enabled explicitly.
+The optional parameter *MODE* can modify the default heap shot frequency.
+heapshot can be used multiple times with different modes: in that case a heap shot is
+taken if either of the conditions are met.
+MODE can be one of:
+	* *NUM*ms: perform a heap shot if at least *NUM* milliseconds passed since
+	the last one.
+	* *NUM*gc: perform a heap shot every *NUM* major garbage collections
+	* *ondemand*: perform a heap shot when such a command is sent to the
+	control port
+
+* *sample[=TYPE[/FREQ]]*: collect statistical samples of the program behaviour. The
+default is to collect a 1000 times per second the instruction pointer. This is
+equivalent to the value "cycles/1000" for *TYPE*. On some systems, like with recent
+Linux kernels, it is possible to cause the sampling to happen for other events
+provided by the performance counters of the cpu. In this case, *TYPE* can be one of:
+	* *cycles*: processor cycles
+	* *instr*: executed instructions
+	* *cacherefs*: cache references
+	* *cachemiss*: cache misses
+	* *branches*: executed branches
+	* *branchmiss*: mispredicted branches
+
+* *time=TIMER*: use the TIMER timestamp mode. TIMER can have the following values:
+	* *fast*: a usually faster but possibly more inaccurate timer
+
+* *maxframes=NUM*: when a stack trace needs to be performed, collect *NUM* frames
+at the most. The default is 8.
+
+* *calldepth=NUM*: ignore method enter/leave events when the call chain depth is
+bigger than NUM.
+
+* *zip*: automatically compress the output data in gzip format.
+
+* *output=OUTSPEC*: instead of writing the profiling data to the output.mlpd file,
+substitute *%p* in *OUTSPEC* with the current process id and *%t* with the current
+date and time, then do according to *OUTSPEC*:
+	* if *OUTSPEC* begins with a *|* character, execute the rest as a program
+	and feed the data to its standard input
+	* if *OUTSPEC* begins with a *-* character, use the rest of OUTSPEC as
+	the filename, but force overwrite any existing file by that name
+	* otherwise write the data the the named file: note that is a file by that
+	name already exists, a warning is issued and profiling is disabled.
+
+* *report*: the profiling data is sent to mprof-report, which will print a summary
+report. This is equivalent to the option: `output=mprof-report -`. If the *output*
+option is specified as well, the report will be written to the output file instead of
+the console.
+
+* *port=PORT*: specify the tcp/ip port to use for the listening command server.
+Currently not available for windows.
+This server is started for example when heapshot=ondemand is used: it will read
+commands line by line. The following commands are available:
+	* *heapshot*: perform a heapshot as soon as possible
+
+## Analyzing the profile data
+
+Currently there is a command line program (*mprof-report*) to analyze the
+data produced by the profiler. This is ran automatically when the *report*
+profiler option is used.
+Simply run:
+
+`mprof-report output.mlpd`
+
+to see a summary report of the data included in the file.
+
+### Trace information for events
+
+Often it is important for some events, like allocations, lock contention
+and exception throws to know where they happened. Or we may want to see
+what sequence of calls leads to a particular method invocation. To see this
+info invoke mprof-report as follows:
+
+`mprof-report --traces output.mlpd`
+
+The maximum number of methods in each stack trace can be specified with the 
+*--maxframes=NUM* option:
+
+`mprof-report --traces --maxframes=4 output.mlpd`
+
+The stack trace info will be available if method enter/leave events have been
+recorded or if stack trace collection wasn't explicitly disabled with the
+*maxframes=0* profiler option. Note that the profiler will collect up to 8
+frames by default at specific events when the *nocalls* option is used, so
+in that case, if more stack frames are required in mprof-report, a bigger
+value for maxframes when profiling must be used, too.
+
+The *--traces* option also controls the reverse reference feature in the heapshot
+report: for each class it reports how many references to objects of that class
+come from other classes.
+
+### Sort order for methods and allocations
+
+When a list of methods is printed the default sort order is based on the total time
+spent in the method. This time is wall clock time (that is, it includes the time
+spent, for example, in a sleep call, even if actual cpu time would be basically 0).
+Also, if the method has been ran on different threads, the time will be a sum
+of the time used in each thread.
+
+To change the sort order, use the option:
+
+`--method-sort=MODE`
+
+where *MODE* can be:
+
+* *self*: amount of time spent in the method itself and not in its callees
+* *calls*: the number of method invocations
+* *total*: the total time spent in the method.
+
+Object allocation lists are sorted by default depending on the total amount
+of bytes used by each type.
+
+To change the sort order of object allocations, use the option:
+
+`--alloc-sort=MODE`
+
+where *MODE* can be:
+
+* *count*: the number of allocated objects of the given type
+* *bytes*: the total number of bytes used by objects of the given type
+
+### Selecting what data to report
+
+The profiler by default collects data about many runtime subsystems and mprof-report
+prints a summary of all the subsystems that are found in the data file. It is possible
+to tell mprof-report to only show information about some of them with the following
+option:
+
+`--reports=R1[,R2...]`
+
+where the report names R1, R2 etc. can be:
+
+* *header*: information about program startup and profiler version
+* *jit*: JIT compiler information
+* *sample*: statistical sampling information
+* *gc*: garbage collection information
+* *alloc*: object allocation information
+* *call*: method profiling information
+* *metadata*: metadata events like image loads
+* *exception*: exception throw and handling information
+* *monitor*: lock contention information
+* *thread*: thread information
+* *heapshot*: live heap usage at heap shots
+
+It is possible to limit some of the data displayed to a timeframe of the
+program execution with the option:
+
+`--time=FROM-TO`
+
+where *FROM* and *TO* are seconds since application startup (they can be
+floating point numbers).
+
+Another interesting option is to consider only events happening on a particular
+thread with the following option:
+
+`--thread=THREADID`
+
+where *THREADID* is one of the numbers listed in the thread summary report
+(or a thread name when present).
+
+By default long lists of methods or other information like object allocations
+are limited to the most important data. To increase the amount of information
+printed you can use the option:
+
+`--verbose`
+
+### Track individual objects
+
+Instead of printing the usual reports from the profiler data, it is possible
+to track some interesting information about some specific object addresses.
+The objects are selected based on their address with the *--track* option as follows:
+
+`--track=0xaddr1[,0xaddr2,...]`
+
+The reported info (if available in the data file), will be class name, size,
+creation time, stack trace of creation (with the *--traces* option), etc.
+If heapshot data is available it will be possible to also track what other objects
+reference one of the listed addresses.
+
+The object addresses can be gathered either from the profiler report in some
+cases (like in the monitor lock report), from the live application or they can
+be selected with the *--find=FINDSPEC* option. FINDSPEC can be one of the
+following:
+
+* *S:SIZE*: where the object is selected if it's size is at least *SIZE* 
+* *T:NAME*: where the object is selected if *NAME* partially matches its class name
+
+This option can be specified multiple times with one of the different kinds
+of FINDSPEC. For example, the following:
+
+`--find=S:10000 --find=T:Byte[]`
+
+will find all the byte arrays that are at least 10000 bytes in size.
+
+Note that with a moving garbage collector the object address can change, so
+you may need to track the changed address manually. It can also happen that
+multiple objects are allocated at the same address, so the output from this
+option can become large.
+
+### Saving a profiler report
+
+By default mprof-report will print the summary data to the console.
+To print it to a file, instead, use the option:
+
+`--out=FILENAME`
+
+## Dealing with profiler slowness
+
+If the profiler needs to collect lots of data, the execution of the program will
+slow down significantly, usually 10 to 20 times slower. There are several
+ways to reduce the impact of the profiler on the program execution.
+
+### Use the statistical sampling mode
+
+Statistical sampling allows executing a program under the profiler with minimal
+performance overhead (usually less than 10%). This mode allows checking where
+the program is spending most of it's execution time without significantly
+perturbing its behaviour.
+
+### Collect less data
+
+Collecting method enter/leave events can be very expensive, especially in programs
+that perform many millions of tiny calls. The profiler option *nocalls* can be
+used to avoid collecting this data or it can be limited to only a few call levels
+with the *calldepth* option.
+
+Object allocation information is expensive as well, though much less than
+method enter/leave events. If it's not needed, it can be skipped with the
+*noalloc* profiler option. Note that when method enter/leave events are
+discarded, by default stack traces are collected at each allocation and this
+can be expensive as well. The impact of stack trace information can be reduced
+by setting a low value with the *maxframes* option or by eliminating them
+completely, by setting it to 0.
+
+The other major source of data is the heapshot profiler option: especially
+if the managed heap is big, since every object needs to be inspected. The *MODE*
+parameter of the *heapshot* option can be used to reduce the frequency of the heap
+shots.
+
+### Reduce the timestamp overhead
+
+On many operating systems or architectures what actually slows down profiling
+is the function provided by the system to get timestamp information.
+The *time=fast* profiler option can be usually used to speed up this operation,
+but, depending on the system, time accounting may have some level of approximation
+(though statistically the data should be still fairly valuable).
+
+## Dealing with the size of the data files
+
+When collecting a lot of information about a profiled program, huge data
+files can be generated. There are a few ways to minimize the amount of data,
+for example by not collecting some of the more space-consuming information
+or by compressing the information on the fly or by just generating a summary
+report.
+
+### Reducing the amount of data
+
+Method enter/leave events can be excluded completely with the *nocalls* option
+or they can be limited to just a few levels of calls with the *calldepth* option.
+For example, the option:
+
+`calldepth=10`
+
+will ignore the method events when there are more than 10 managed stack frames.
+This is very useful for programs that have deep recursion or for programs that
+perform many millions of tiny calls deep enough in the call stack. The optimal
+number for the calldepth option depends on the program and it needs to be balanced
+between providing enough profiling information and allowing fast execution speed.
+
+Note that by default, if method events are not recorded at all, the profiler will
+collect stack trace information at events like allocations. To avoid gathering this
+data, use the *maxframes=0* profiler option.
+
+Allocation events can be eliminated with the *noalloc* option.
+
+Heap shot data can also be huge: by default it is collected at each major collection.
+To reduce the frequency, you can specify a heapshot mode: for example to collect
+every 5 collections (including major and minor):
+
+`heapshot=5gc`
+
+or when at least 5 seconds passed since the last heap shot:
+
+`heapshot=5000ms`
+
+### Compressing the data
+
+To reduce the amout of disk space used by the data, the data can be compressed
+either after it has been generated with the gzip command:
+
+`gzip -9 output.mlpd`
+
+or it can be compressed automatically by using the *zip* profiler option. Note
+that in this case there could be a significant slowdown of the profiled program.
+
+The mprof-report program will tranparently deal with either compressed or
+uncompressed data files.
+
+### Generating only a summary report
+
+Often it's enough to look at the profiler summary report to diagnose an issue and in this
+case it's possible to avoid saving the profiler data file to disk. This can be
+accomplished with the *report* profiler option, which will basically send the data
+to the mprof-report program for display.
+
+To have more control of what summary information is reported (or to use a completely
+different program to decode the profiler data), the *output* profiler option can be
+used, with `|` as the first character: the rest of the output name will be
+executed as a program with the data fed in on the standard input.
+
+For example, to print only the Monitor summary with stack trace information, you
+could use it like this:
+
+`output=|mprof-report --reports=monitor --traces -`
+
diff --git a/mono/profiler/mono-profiler-logging.c b/mono/profiler/mono-profiler-logging.c
deleted file mode 100644
index 9ed3cb8..0000000
--- a/mono/profiler/mono-profiler-logging.c
+++ /dev/null
@@ -1,5882 +0,0 @@
-/*
- * mono-profiler-logging.c: Logging profiler for Mono.
- *
- * Author:
- *   Massimiliano Mantione (massi at ximian.com)
- *
- * Copyright 2008-2009 Novell, Inc (http://www.novell.com)
- */
-#include <config.h>
-#include <mono/metadata/profiler.h>
-#include <mono/metadata/class.h>
-#include <mono/metadata/metadata-internals.h>
-#include <mono/metadata/class-internals.h>
-#include <mono/metadata/assembly.h>
-#include <mono/metadata/loader.h>
-#include <mono/metadata/threads.h>
-#include <mono/metadata/debug-helpers.h>
-#include <mono/metadata/mono-gc.h>
-#include <mono/io-layer/atomic.h>
-#include <string.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <ctype.h>
-#include <glib.h>
-
-#include <dlfcn.h>
-
-#include <sys/types.h> 
-#include <sys/socket.h>
-#include <netinet/in.h>
-
-#define HAS_OPROFILE 0
-
-#if (HAS_OPROFILE)
-#include <libopagent.h>
-#endif
-
-// Needed for heap analysis
-extern gboolean mono_object_is_alive (MonoObject* obj);
-
-typedef enum {
-	MONO_PROFILER_FILE_BLOCK_KIND_INTRO = 1,
-	MONO_PROFILER_FILE_BLOCK_KIND_END = 2,
-	MONO_PROFILER_FILE_BLOCK_KIND_MAPPING = 3,
-	MONO_PROFILER_FILE_BLOCK_KIND_LOADED = 4,
-	MONO_PROFILER_FILE_BLOCK_KIND_UNLOADED = 5,
-	MONO_PROFILER_FILE_BLOCK_KIND_EVENTS = 6,
-	MONO_PROFILER_FILE_BLOCK_KIND_STATISTICAL = 7,
-	MONO_PROFILER_FILE_BLOCK_KIND_HEAP_DATA = 8,
-	MONO_PROFILER_FILE_BLOCK_KIND_HEAP_SUMMARY = 9,
-	MONO_PROFILER_FILE_BLOCK_KIND_DIRECTIVES = 10
-} MonoProfilerFileBlockKind;
-
-typedef enum {
-	MONO_PROFILER_DIRECTIVE_END = 0,
-	MONO_PROFILER_DIRECTIVE_ALLOCATIONS_CARRY_CALLER = 1,
-	MONO_PROFILER_DIRECTIVE_ALLOCATIONS_HAVE_STACK = 2,
-	MONO_PROFILER_DIRECTIVE_ALLOCATIONS_CARRY_ID = 3,
-	MONO_PROFILER_DIRECTIVE_LOADED_ELEMENTS_CARRY_ID = 4,
-	MONO_PROFILER_DIRECTIVE_CLASSES_CARRY_ASSEMBLY_ID = 5,
-	MONO_PROFILER_DIRECTIVE_METHODS_CARRY_WRAPPER_FLAG = 6,
-	MONO_PROFILER_DIRECTIVE_LAST
-} MonoProfilerDirectives;
-
-
-#define MONO_PROFILER_LOADED_EVENT_MODULE     1
-#define MONO_PROFILER_LOADED_EVENT_ASSEMBLY   2
-#define MONO_PROFILER_LOADED_EVENT_APPDOMAIN  4
-#define MONO_PROFILER_LOADED_EVENT_SUCCESS    8
-#define MONO_PROFILER_LOADED_EVENT_FAILURE   16
-
-typedef enum {
-	MONO_PROFILER_EVENT_DATA_TYPE_OTHER = 0,
-	MONO_PROFILER_EVENT_DATA_TYPE_METHOD = 1,
-	MONO_PROFILER_EVENT_DATA_TYPE_CLASS = 2
-} MonoProfilerEventDataType;
-
-typedef struct _ProfilerEventData {
-	union {
-		gpointer address;
-		gsize number;
-	} data;
-	unsigned int data_type:2;
-	unsigned int code:4;
-	unsigned int kind:1;
-	unsigned int value:25;
-} ProfilerEventData;
-
-#define EVENT_VALUE_BITS (25)
-#define MAX_EVENT_VALUE ((1<<EVENT_VALUE_BITS)-1)
-
-typedef enum {
-	MONO_PROFILER_EVENT_METHOD_JIT = 0,
-	MONO_PROFILER_EVENT_METHOD_FREED = 1,
-	MONO_PROFILER_EVENT_METHOD_CALL = 2,
-	MONO_PROFILER_EVENT_METHOD_ALLOCATION_CALLER = 3,
-	MONO_PROFILER_EVENT_METHOD_ALLOCATION_JIT_TIME_CALLER = 4
-} MonoProfilerMethodEvents;
-typedef enum {
-	MONO_PROFILER_EVENT_CLASS_LOAD = 0,
-	MONO_PROFILER_EVENT_CLASS_UNLOAD = 1,
-	MONO_PROFILER_EVENT_CLASS_EXCEPTION = 2,
-	MONO_PROFILER_EVENT_CLASS_MONITOR = 3,
-	MONO_PROFILER_EVENT_CLASS_ALLOCATION = 4
-} MonoProfilerClassEvents;
-typedef enum {
-	MONO_PROFILER_EVENT_RESULT_SUCCESS = 0,
-	MONO_PROFILER_EVENT_RESULT_FAILURE = 4
-} MonoProfilerEventResult;
-#define MONO_PROFILER_EVENT_RESULT_MASK MONO_PROFILER_EVENT_RESULT_FAILURE
-typedef enum {
-	MONO_PROFILER_EVENT_THREAD = 1,
-	MONO_PROFILER_EVENT_GC_COLLECTION = 2,
-	MONO_PROFILER_EVENT_GC_MARK = 3,
-	MONO_PROFILER_EVENT_GC_SWEEP = 4,
-	MONO_PROFILER_EVENT_GC_RESIZE = 5,
-	MONO_PROFILER_EVENT_GC_STOP_WORLD = 6,
-	MONO_PROFILER_EVENT_GC_START_WORLD = 7,
-	MONO_PROFILER_EVENT_JIT_TIME_ALLOCATION = 8,
-	MONO_PROFILER_EVENT_STACK_SECTION = 9,
-	MONO_PROFILER_EVENT_ALLOCATION_OBJECT_ID = 10,
-	MONO_PROFILER_EVENT_OBJECT_MONITOR = 11
-} MonoProfilerEvents;
-typedef enum {
-	MONO_PROFILER_EVENT_KIND_START = 0,
-	MONO_PROFILER_EVENT_KIND_END = 1
-} MonoProfilerEventKind;
-
-#define MONO_PROFILER_GET_CURRENT_TIME(t) {\
-	struct timeval current_time;\
-	gettimeofday (&current_time, NULL);\
-	(t) = (((guint64)current_time.tv_sec) * 1000000) + current_time.tv_usec;\
-} while (0)
-
-static gboolean use_fast_timer = FALSE;
-
-#if (defined(__i386__) || defined(__x86_64__)) && ! defined(HOST_WIN32)
-
-#if defined(__i386__)
-static const guchar cpuid_impl [] = {
-	0x55,                   	/* push   %ebp */
-	0x89, 0xe5,                	/* mov    %esp,%ebp */
-	0x53,                   	/* push   %ebx */
-	0x8b, 0x45, 0x08,             	/* mov    0x8(%ebp),%eax */
-	0x0f, 0xa2,                	/* cpuid   */
-	0x50,                   	/* push   %eax */
-	0x8b, 0x45, 0x10,             	/* mov    0x10(%ebp),%eax */
-	0x89, 0x18,                	/* mov    %ebx,(%eax) */
-	0x8b, 0x45, 0x14,             	/* mov    0x14(%ebp),%eax */
-	0x89, 0x08,                	/* mov    %ecx,(%eax) */
-	0x8b, 0x45, 0x18,             	/* mov    0x18(%ebp),%eax */
-	0x89, 0x10,                	/* mov    %edx,(%eax) */
-	0x58,                   	/* pop    %eax */
-	0x8b, 0x55, 0x0c,             	/* mov    0xc(%ebp),%edx */
-	0x89, 0x02,                	/* mov    %eax,(%edx) */
-	0x5b,                   	/* pop    %ebx */
-	0xc9,                   	/* leave   */
-	0xc3,                   	/* ret     */
-};
-
-typedef void (*CpuidFunc) (int id, int* p_eax, int* p_ebx, int* p_ecx, int* p_edx);
-
-static int 
-cpuid (int id, int* p_eax, int* p_ebx, int* p_ecx, int* p_edx) {
-	int have_cpuid = 0;
-#ifndef _MSC_VER
-	__asm__  __volatile__ (
-		"pushfl\n"
-		"popl %%eax\n"
-		"movl %%eax, %%edx\n"
-		"xorl $0x200000, %%eax\n"
-		"pushl %%eax\n"
-		"popfl\n"
-		"pushfl\n"
-		"popl %%eax\n"
-		"xorl %%edx, %%eax\n"
-		"andl $0x200000, %%eax\n"
-		"movl %%eax, %0"
-		: "=r" (have_cpuid)
-		:
-		: "%eax", "%edx"
-	);
-#else
-	__asm {
-		pushfd
-		pop eax
-		mov edx, eax
-		xor eax, 0x200000
-		push eax
-		popfd
-		pushfd
-		pop eax
-		xor eax, edx
-		and eax, 0x200000
-		mov have_cpuid, eax
-	}
-#endif
-	if (have_cpuid) {
-		CpuidFunc func = (CpuidFunc) cpuid_impl;
-		func (id, p_eax, p_ebx, p_ecx, p_edx);
-		/*
-		 * We use this approach because of issues with gcc and pic code, see:
-		 * http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=7329
-		__asm__ __volatile__ ("cpuid"
-			: "=a" (*p_eax), "=b" (*p_ebx), "=c" (*p_ecx), "=d" (*p_edx)
-			: "a" (id));
-		*/
-		return 1;
-	}
-	return 0;
-}
-
-static void detect_fast_timer (void) {
-	int p_eax, p_ebx, p_ecx, p_edx;
-	
-	if (cpuid (0x1, &p_eax, &p_ebx, &p_ecx, &p_edx)) {
-		if (p_edx & 0x10) {
-			use_fast_timer = TRUE;
-		} else {
-			use_fast_timer = FALSE;
-		}
-	} else {
-		use_fast_timer = FALSE;
-	}
-}
-#endif
-
-#if defined(__x86_64__)
-static void detect_fast_timer (void) {
-	guint32 op = 0x1;
-	guint32 eax,ebx,ecx,edx;
-	__asm__ __volatile__ ("cpuid" : "=a"(eax), "=b"(ebx), "=c"(ecx), "=d"(edx) : "a"(op));
-	if (edx & 0x10) {
-		use_fast_timer = TRUE;
-	} else {
-		use_fast_timer = FALSE;
-	}
-}
-#endif
-
-static __inline__ guint64 rdtsc(void) {
-	guint32 hi, lo;
-	__asm__ __volatile__ ("rdtsc" : "=a"(lo), "=d"(hi));
-	return ((guint64) lo) | (((guint64) hi) << 32);
-}
-#define MONO_PROFILER_GET_CURRENT_COUNTER(c) {\
-	if (use_fast_timer) {\
-		(c) = rdtsc ();\
-	} else {\
-		MONO_PROFILER_GET_CURRENT_TIME ((c));\
-	}\
-} while (0)
-#else
-static void detect_fast_timer (void) {
-	use_fast_timer = FALSE;
-}
-#define MONO_PROFILER_GET_CURRENT_COUNTER(c) MONO_PROFILER_GET_CURRENT_TIME ((c))
-#endif
-
-
-#define CLASS_LAYOUT_PACKED_BITMAP_SIZE 64
-#define CLASS_LAYOUT_NOT_INITIALIZED (0xFFFF)
-typedef enum {
-	HEAP_CODE_NONE = 0,
-	HEAP_CODE_OBJECT = 1,
-	HEAP_CODE_FREE_OBJECT_CLASS = 2,
-	HEAP_CODE_MASK = 3
-} HeapProfilerJobValueCode;
-typedef struct _MonoProfilerClassData {
-	union {
-		guint64 compact;
-		guint8 *extended;
-	} bitmap;
-	struct {
-		guint16 slots;
-		guint16 references;
-	} layout;
-} MonoProfilerClassData;
-
-typedef struct _MonoProfilerMethodData {
-	gpointer code_start;
-	guint32 code_size;
-} MonoProfilerMethodData;
-
-typedef struct _ClassIdMappingElement {
-	char *name;
-	guint32 id;
-	MonoClass *klass;
-	struct _ClassIdMappingElement *next_unwritten;
-	MonoProfilerClassData data;
-} ClassIdMappingElement;
-
-typedef struct _MethodIdMappingElement {
-	char *name;
-	guint32 id;
-	MonoMethod *method;
-	struct _MethodIdMappingElement *next_unwritten;
-	MonoProfilerMethodData data;
-} MethodIdMappingElement;
-
-typedef struct _ClassIdMapping {
-	GHashTable *table;
-	ClassIdMappingElement *unwritten;
-	guint32 next_id;
-} ClassIdMapping;
-
-typedef struct _MethodIdMapping {
-	GHashTable *table;
-	MethodIdMappingElement *unwritten;
-	guint32 next_id;
-} MethodIdMapping;
-
-typedef struct _LoadedElement {
-	char *name;
-	guint64 load_start_counter;
-	guint64 load_end_counter;
-	guint64 unload_start_counter;
-	guint64 unload_end_counter;
-	guint32 id;
-	guint8 loaded;
-	guint8 load_written;
-	guint8 unloaded;
-	guint8 unload_written;
-} LoadedElement;
-struct _ProfilerCodeBufferArray;
-typedef struct _ProfilerCodeBuffer {
-	gpointer start;
-	gpointer end;
-	struct {
-		union {
-			MonoMethod *method;
-			MonoClass *klass;
-			void *data;
-			struct _ProfilerCodeBufferArray *sub_buffers;
-		} data;
-		guint16 value;
-		guint16 type;
-	} info;
-} ProfilerCodeBuffer;
-
-#define PROFILER_CODE_BUFFER_ARRAY_SIZE 64
-typedef struct _ProfilerCodeBufferArray {
-	int level;
-	int number_of_buffers;
-	ProfilerCodeBuffer buffers [PROFILER_CODE_BUFFER_ARRAY_SIZE];
-} ProfilerCodeBufferArray;
-
-typedef struct _ProfilerCodeChunk {
-	gpointer start;
-	gpointer end;
-	gboolean destroyed;
-	ProfilerCodeBufferArray *buffers;
-} ProfilerCodeChunk;
-
-typedef struct _ProfilerCodeChunks {
-	int capacity;
-	int number_of_chunks;;
-	ProfilerCodeChunk *chunks;
-} ProfilerCodeChunks;
-
-
-#define PROFILER_HEAP_SHOT_OBJECT_BUFFER_SIZE 1024
-#define PROFILER_HEAP_SHOT_HEAP_BUFFER_SIZE 4096
-#define PROFILER_HEAP_SHOT_WRITE_BUFFER_SIZE 4096
-
-typedef struct _ProfilerHeapShotObjectBuffer {
-	struct _ProfilerHeapShotObjectBuffer *next;
-	MonoObject **next_free_slot;
-	MonoObject **end;
-	MonoObject **first_unprocessed_slot;
-	MonoObject *buffer [PROFILER_HEAP_SHOT_OBJECT_BUFFER_SIZE];
-} ProfilerHeapShotObjectBuffer;
-
-typedef struct _ProfilerHeapShotHeapBuffer {
-	struct _ProfilerHeapShotHeapBuffer *next;
-	struct _ProfilerHeapShotHeapBuffer *previous;
-	MonoObject **start_slot;
-	MonoObject **end_slot;
-	MonoObject *buffer [PROFILER_HEAP_SHOT_HEAP_BUFFER_SIZE];
-} ProfilerHeapShotHeapBuffer;
-
-typedef struct _ProfilerHeapShotHeapBuffers {
-	ProfilerHeapShotHeapBuffer *buffers;
-	ProfilerHeapShotHeapBuffer *last;
-	ProfilerHeapShotHeapBuffer *current;
-	MonoObject **first_free_slot;
-} ProfilerHeapShotHeapBuffers;
-
-
-typedef struct _ProfilerHeapShotWriteBuffer {
-	struct _ProfilerHeapShotWriteBuffer *next;
-	gpointer buffer [PROFILER_HEAP_SHOT_WRITE_BUFFER_SIZE];
-} ProfilerHeapShotWriteBuffer;
-
-typedef struct _ProfilerHeapShotClassSummary {
-	struct {
-		guint32 instances;
-		guint32 bytes;
-	} reachable;
-	struct {
-		guint32 instances;
-		guint32 bytes;
-	} unreachable;
-} ProfilerHeapShotClassSummary;
-
-typedef struct _ProfilerHeapShotCollectionSummary {
-	ProfilerHeapShotClassSummary *per_class_data;
-	guint32 capacity;
-} ProfilerHeapShotCollectionSummary;
-
-typedef struct _ProfilerHeapShotWriteJob {
-	struct _ProfilerHeapShotWriteJob *next;
-	struct _ProfilerHeapShotWriteJob *next_unwritten;
-	gpointer *start;
-	gpointer *cursor;
-	gpointer *end;
-	ProfilerHeapShotWriteBuffer *buffers;
-	ProfilerHeapShotWriteBuffer **last_next;
-	guint32 full_buffers;
-	gboolean heap_shot_was_requested;
-	guint64 start_counter;
-	guint64 start_time;
-	guint64 end_counter;
-	guint64 end_time;
-	guint32 collection;
-	ProfilerHeapShotCollectionSummary summary;
-	gboolean dump_heap_data;
-} ProfilerHeapShotWriteJob;
-
-typedef struct _ProfilerThreadStack {
-	guint32 capacity;
-	guint32 top;
-	guint32 last_saved_top;
-	guint32 last_written_frame;
-	MonoMethod **stack;
-	guint8 *method_is_jitted;
-	guint32 *written_frames;
-} ProfilerThreadStack;
-
-typedef struct _ProfilerPerThreadData {
-	ProfilerEventData *events;
-	ProfilerEventData *next_free_event;
-	ProfilerEventData *next_unreserved_event;
-	ProfilerEventData *end_event;
-	ProfilerEventData *first_unwritten_event;
-	ProfilerEventData *first_unmapped_event;
-	guint64 start_event_counter;
-	guint64 last_event_counter;
-	gsize thread_id;
-	ProfilerHeapShotObjectBuffer *heap_shot_object_buffers;
-	ProfilerThreadStack stack;
-	struct _ProfilerPerThreadData* next;
-} ProfilerPerThreadData;
-
-typedef struct _ProfilerStatisticalHit {
-	gpointer *address;
-	MonoDomain *domain;
-} ProfilerStatisticalHit;
-
-typedef struct _ProfilerStatisticalData {
-	ProfilerStatisticalHit *hits;
-	unsigned int next_free_index;
-	unsigned int end_index;
-	unsigned int first_unwritten_index;
-} ProfilerStatisticalData;
-
-typedef struct _ProfilerUnmanagedSymbol {
-	guint32 offset;
-	guint32 size;
-	guint32 id;
-	guint32 index;
-} ProfilerUnmanagedSymbol;
-
-struct _ProfilerExecutableFile;
-struct _ProfilerExecutableFileSectionRegion;
-
-typedef struct _ProfilerExecutableMemoryRegionData {
-	gpointer start;
-	gpointer end;
-	guint32 file_offset;
-	char *file_name;
-	guint32 id;
-	gboolean is_new;
-	
-	struct _ProfilerExecutableFile *file;
-	struct _ProfilerExecutableFileSectionRegion *file_region_reference;
-	guint32 symbols_count;
-	guint32 symbols_capacity;
-	ProfilerUnmanagedSymbol *symbols;
-} ProfilerExecutableMemoryRegionData;
-
-typedef struct _ProfilerExecutableMemoryRegions {
-	ProfilerExecutableMemoryRegionData **regions;
-	guint32 regions_capacity;
-	guint32 regions_count;
-	guint32 next_id;
-	guint32 next_unmanaged_function_id;
-} ProfilerExecutableMemoryRegions;
-
-/* Start of ELF definitions */
-#define EI_NIDENT 16
-typedef guint16 ElfHalf;
-typedef guint32 ElfWord;
-typedef gsize ElfAddr;
-typedef gsize ElfOff;
-
-typedef struct {
-	unsigned char e_ident[EI_NIDENT];
-	ElfHalf e_type;
-	ElfHalf e_machine;
-	ElfWord e_version;
-	ElfAddr e_entry;
-	ElfOff  e_phoff;
-	ElfOff  e_shoff; // Section header table
-	ElfWord e_flags;
-	ElfHalf e_ehsize; // Header size
-	ElfHalf e_phentsize;
-	ElfHalf e_phnum;
-	ElfHalf e_shentsize; // Section header entry size
-	ElfHalf e_shnum; // Section header entries number
-	ElfHalf e_shstrndx; // String table index
-} ElfHeader;
-
-#if (SIZEOF_VOID_P == 4)
-typedef struct {
-	ElfWord sh_name;
-	ElfWord sh_type;
-	ElfWord sh_flags;
-	ElfAddr sh_addr; // Address in memory
-	ElfOff  sh_offset; // Offset in file
-	ElfWord sh_size;
-	ElfWord sh_link;
-	ElfWord sh_info;
-	ElfWord sh_addralign;
-	ElfWord sh_entsize;
-} ElfSection;
-typedef struct {
-	ElfWord       st_name;
-	ElfAddr       st_value;
-	ElfWord       st_size;
-	unsigned char st_info; // Use ELF32_ST_TYPE to get symbol type
-	unsigned char st_other;
-	ElfHalf       st_shndx; // Or one of SHN_ABS, SHN_COMMON or SHN_UNDEF.
-} ElfSymbol;
-#elif (SIZEOF_VOID_P == 8)
-typedef struct {
-	ElfWord sh_name;
-	ElfWord sh_type;
-	ElfOff sh_flags;
-	ElfAddr sh_addr; // Address in memory
-	ElfOff  sh_offset; // Offset in file
-	ElfOff sh_size;
-	ElfWord sh_link;
-	ElfWord sh_info;
-	ElfOff sh_addralign;
-	ElfOff sh_entsize;
-} ElfSection;
-typedef struct {
-	ElfWord       st_name;
-	unsigned char st_info; // Use ELF_ST_TYPE to get symbol type
-	unsigned char st_other;
-	ElfHalf       st_shndx; // Or one of SHN_ABS, SHN_COMMON or SHN_UNDEF.
-	ElfAddr       st_value;
-	ElfAddr       st_size;
-} ElfSymbol;
-#else
-#error Bad size of void pointer
-#endif
-
-
-#define ELF_ST_BIND(i)   ((i)>>4)
-#define ELF_ST_TYPE(i)   ((i)&0xf)
-
-
-typedef enum {
-	EI_MAG0 = 0,
-	EI_MAG1 = 1,
-	EI_MAG2 = 2,
-	EI_MAG3 = 3,
-	EI_CLASS = 4,
-	EI_DATA = 5
-} ElfIdentFields;
-
-typedef enum {
-	ELF_FILE_TYPE_NONE = 0,
-	ELF_FILE_TYPE_REL = 1,
-	ELF_FILE_TYPE_EXEC = 2,
-	ELF_FILE_TYPE_DYN = 3,
-	ELF_FILE_TYPE_CORE = 4
-} ElfFileType;
-
-typedef enum {
-	ELF_CLASS_NONE = 0,
-	ELF_CLASS_32 = 1,
-	ELF_CLASS_64 = 2
-} ElfIdentClass;
-
-typedef enum {
-	ELF_DATA_NONE = 0,
-	ELF_DATA_LSB = 1,
-	ELF_DATA_MSB = 2
-} ElfIdentData;
-
-typedef enum {
-	ELF_SHT_NULL = 0,
-	ELF_SHT_PROGBITS = 1,
-	ELF_SHT_SYMTAB = 2,
-	ELF_SHT_STRTAB = 3,
-	ELF_SHT_RELA = 4,
-	ELF_SHT_HASH = 5,
-	ELF_SHT_DYNAMIC = 6,
-	ELF_SHT_NOTE = 7,
-	ELF_SHT_NOBITS = 8,
-	ELF_SHT_REL = 9,
-	ELF_SHT_SHLIB = 10,
-	ELF_SHT_DYNSYM = 11
-} ElfSectionType;
-
-typedef enum {
-	ELF_STT_NOTYPE = 0,
-	ELF_STT_OBJECT = 1,
-	ELF_STT_FUNC = 2,
-	ELF_STT_SECTION = 3,
-	ELF_STT_FILE = 4
-} ElfSymbolType;
-
-typedef enum {
-	ELF_SHF_WRITE = 1,
-	ELF_SHF_ALLOC = 2,
-	ELF_SHF_EXECINSTR = 4,
-} ElfSectionFlags;
-
-#define ELF_SHN_UNDEF       0
-#define ELF_SHN_LORESERVE   0xff00
-#define ELF_SHN_LOPROC      0xff00
-#define ELF_SHN_HIPROC      0xff1f
-#define ELF_SHN_ABS         0xfff1
-#define ELF_SHN_COMMON      0xfff2
-#define ELF_SHN_HIRESERVE   0xffff
-/* End of ELF definitions */
-
-typedef struct _ProfilerExecutableFileSectionRegion {
-	ProfilerExecutableMemoryRegionData *region;
-	guint8 *section_address;
-	gsize section_offset;
-} ProfilerExecutableFileSectionRegion;
-
-typedef struct _ProfilerExecutableFile {
-	guint32 reference_count;
-	
-	/* Used for mmap and munmap */
-	int fd;
-	guint8 *data;
-	size_t length;
-	
-	/* File data */
-	ElfHeader *header;
-	guint8 *symbols_start;
-	guint32 symbols_count;
-	guint32 symbol_size;
-	const char *symbols_string_table;
-	const char *main_string_table;
-	
-	ProfilerExecutableFileSectionRegion *section_regions;
-	
-	struct _ProfilerExecutableFile *next_new_file;
-} ProfilerExecutableFile;
-
-typedef struct _ProfilerExecutableFiles {
-	GHashTable *table;
-	ProfilerExecutableFile *new_files;
-} ProfilerExecutableFiles;
-
-
-#define CLEANUP_WRITER_THREAD() do {profiler->writer_thread_terminated = TRUE;} while (0)
-#define CHECK_WRITER_THREAD() (! profiler->writer_thread_terminated)
-
-#ifndef HOST_WIN32
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <pthread.h>
-#include <semaphore.h>
-
-#include <sys/mman.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <errno.h>
-
-#define MUTEX_TYPE pthread_mutex_t
-#define INITIALIZE_PROFILER_MUTEX() pthread_mutex_init (&(profiler->mutex), NULL)
-#define DELETE_PROFILER_MUTEX() pthread_mutex_destroy (&(profiler->mutex))
-#define LOCK_PROFILER() do {/*LOG_WRITER_THREAD ("LOCK_PROFILER");*/ pthread_mutex_lock (&(profiler->mutex));} while (0)
-#define UNLOCK_PROFILER() do {/*LOG_WRITER_THREAD ("UNLOCK_PROFILER");*/ pthread_mutex_unlock (&(profiler->mutex));} while (0)
-
-#define THREAD_TYPE pthread_t
-#define CREATE_WRITER_THREAD(f) pthread_create (&(profiler->data_writer_thread), NULL, ((void*(*)(void*))f), NULL)
-#define CREATE_USER_THREAD(f) pthread_create (&(profiler->user_thread), NULL, ((void*(*)(void*))f), NULL)
-#define EXIT_THREAD() pthread_exit (NULL);
-#define WAIT_WRITER_THREAD() do {\
-	if (CHECK_WRITER_THREAD ()) {\
-		pthread_join (profiler->data_writer_thread, NULL);\
-	}\
-} while (0)
-#define CURRENT_THREAD_ID() (gsize) pthread_self ()
-
-#ifndef HAVE_KW_THREAD
-static pthread_key_t pthread_profiler_key;
-static pthread_once_t profiler_pthread_once = PTHREAD_ONCE_INIT;
-static void
-make_pthread_profiler_key (void) {
-    (void) pthread_key_create (&pthread_profiler_key, NULL);
-}
-#define LOOKUP_PROFILER_THREAD_DATA() ((ProfilerPerThreadData*) pthread_getspecific (pthread_profiler_key))
-#define SET_PROFILER_THREAD_DATA(x) (void) pthread_setspecific (pthread_profiler_key, (x))
-#define ALLOCATE_PROFILER_THREAD_DATA() (void) pthread_once (&profiler_pthread_once, make_pthread_profiler_key)
-#define FREE_PROFILER_THREAD_DATA() (void) pthread_key_delete (pthread_profiler_key)
-#endif
-
-#define EVENT_TYPE sem_t
-#define WRITER_EVENT_INIT() do {\
-	sem_init (&(profiler->enable_data_writer_event), 0, 0);\
-	sem_init (&(profiler->wake_data_writer_event), 0, 0);\
-	sem_init (&(profiler->done_data_writer_event), 0, 0);\
-} while (0)
-#define WRITER_EVENT_DESTROY() do {\
-	sem_destroy (&(profiler->enable_data_writer_event));\
-	sem_destroy (&(profiler->wake_data_writer_event));\
-	sem_destroy (&(profiler->done_data_writer_event));\
-} while (0)
-#define WRITER_EVENT_WAIT() (void) sem_wait (&(profiler->wake_data_writer_event))
-#define WRITER_EVENT_RAISE() (void) sem_post (&(profiler->wake_data_writer_event))
-#define WRITER_EVENT_ENABLE_WAIT() (void) sem_wait (&(profiler->enable_data_writer_event))
-#define WRITER_EVENT_ENABLE_RAISE() (void) sem_post (&(profiler->enable_data_writer_event))
-#define WRITER_EVENT_DONE_WAIT() do {\
-	if (CHECK_WRITER_THREAD ()) {\
-		(void) sem_wait (&(profiler->done_data_writer_event));\
-	}\
-} while (0)
-#define WRITER_EVENT_DONE_RAISE() (void) sem_post (&(profiler->done_data_writer_event))
-
-#if 0
-#define FILE_HANDLE_TYPE FILE*
-#define OPEN_FILE() profiler->file = fopen (profiler->file_name, "wb");
-#define WRITE_BUFFER(b,s) fwrite ((b), 1, (s), profiler->file)
-#define FLUSH_FILE() fflush (profiler->file)
-#define CLOSE_FILE() fclose (profiler->file)
-#else
-#define FILE_HANDLE_TYPE int
-#define OPEN_FILE() profiler->file = open (profiler->file_name, O_WRONLY|O_CREAT|O_TRUNC, 0664);
-#define WRITE_BUFFER(b,s) write (profiler->file, (b), (s))
-#define FLUSH_FILE() fsync (profiler->file)
-#define CLOSE_FILE() close (profiler->file)
-#endif
-
-#else
-
-#include <windows.h>
-
-#define MUTEX_TYPE CRITICAL_SECTION
-#define INITIALIZE_PROFILER_MUTEX() InitializeCriticalSection (&(profiler->mutex))
-#define DELETE_PROFILER_MUTEX() DeleteCriticalSection (&(profiler->mutex))
-#define LOCK_PROFILER() EnterCriticalSection (&(profiler->mutex))
-#define UNLOCK_PROFILER() LeaveCriticalSection (&(profiler->mutex))
-
-#define THREAD_TYPE HANDLE
-#define CREATE_WRITER_THREAD(f) CreateThread (NULL, (1*1024*1024), (f), NULL, 0, NULL);
-#define EXIT_THREAD() ExitThread (0);
-#define WAIT_WRITER_THREAD() do {\
-	if (CHECK_WRITER_THREAD ()) {\
-		 WaitForSingleObject (profiler->data_writer_thread, INFINITE);\
-	}\
-} while (0)
-#define CURRENT_THREAD_ID() (gsize) GetCurrentThreadId ()
-
-#ifndef HAVE_KW_THREAD
-static guint32 profiler_thread_id = -1;
-#define LOOKUP_PROFILER_THREAD_DATA() ((ProfilerPerThreadData*)TlsGetValue (profiler_thread_id))
-#define SET_PROFILER_THREAD_DATA(x) TlsSetValue (profiler_thread_id, (x));
-#define ALLOCATE_PROFILER_THREAD_DATA() profiler_thread_id = TlsAlloc ()
-#define FREE_PROFILER_THREAD_DATA() TlsFree (profiler_thread_id)
-#endif
-
-#define EVENT_TYPE HANDLE
-#define WRITER_EVENT_INIT() (void) do {\
-	profiler->enable_data_writer_event = CreateEvent (NULL, FALSE, FALSE, NULL);\
-	profiler->wake_data_writer_event = CreateEvent (NULL, FALSE, FALSE, NULL);\
-	profiler->done_data_writer_event = CreateEvent (NULL, FALSE, FALSE, NULL);\
-} while (0)
-#define WRITER_EVENT_DESTROY() CloseHandle (profiler->statistical_data_writer_event)
-#define WRITER_EVENT_INIT() (void) do {\
-	CloseHandle (profiler->enable_data_writer_event);\
-	CloseHandle (profiler->wake_data_writer_event);\
-	CloseHandle (profiler->done_data_writer_event);\
-} while (0)
-#define WRITER_EVENT_WAIT() WaitForSingleObject (profiler->wake_data_writer_event, INFINITE)
-#define WRITER_EVENT_RAISE() SetEvent (profiler->wake_data_writer_event)
-#define WRITER_EVENT_ENABLE_WAIT() WaitForSingleObject (profiler->enable_data_writer_event, INFINITE)
-#define WRITER_EVENT_ENABLE_RAISE() SetEvent (profiler->enable_data_writer_event)
-#define WRITER_EVENT_DONE_WAIT() do {\
-	if (CHECK_WRITER_THREAD ()) {\
-		WaitForSingleObject (profiler->done_data_writer_event, INFINITE);\
-	}\
-} while (0)
-#define WRITER_EVENT_DONE_RAISE() SetEvent (profiler->done_data_writer_event)
-
-#define FILE_HANDLE_TYPE FILE*
-#define OPEN_FILE() profiler->file = fopen (profiler->file_name, "wb");
-#define WRITE_BUFFER(b,s) fwrite ((b), 1, (s), profiler->file)
-#define FLUSH_FILE() fflush (profiler->file)
-#define CLOSE_FILE() fclose (profiler->file);
-
-#endif
-
-#ifdef HAVE_KW_THREAD
-static __thread ProfilerPerThreadData * tls_profiler_per_thread_data;
-#define LOOKUP_PROFILER_THREAD_DATA() ((ProfilerPerThreadData*) tls_profiler_per_thread_data)
-#define SET_PROFILER_THREAD_DATA(x) tls_profiler_per_thread_data = (x)
-#define ALLOCATE_PROFILER_THREAD_DATA() /* nop */
-#define FREE_PROFILER_THREAD_DATA() /* nop */
-#endif
-
-#define GET_PROFILER_THREAD_DATA(data) do {\
-	ProfilerPerThreadData *_result = LOOKUP_PROFILER_THREAD_DATA ();\
-	if (!_result) {\
-		_result = profiler_per_thread_data_new (profiler->per_thread_buffer_size);\
-		LOCK_PROFILER ();\
-		_result->next = profiler->per_thread_data;\
-		profiler->per_thread_data = _result;\
-		UNLOCK_PROFILER ();\
-		SET_PROFILER_THREAD_DATA (_result);\
-	}\
-	(data) = _result;\
-} while (0)
-
-#define PROFILER_FILE_WRITE_BUFFER_SIZE (profiler->write_buffer_size)
-typedef struct _ProfilerFileWriteBuffer {
-	struct _ProfilerFileWriteBuffer *next;
-	guint8 buffer [MONO_ZERO_LEN_ARRAY];
-} ProfilerFileWriteBuffer;
-
-#define CHECK_PROFILER_ENABLED() do {\
-	if (! profiler->profiler_enabled)\
-		return;\
-} while (0)
-struct _MonoProfiler {
-	MUTEX_TYPE mutex;
-	
-	MonoProfileFlags flags;
-	gboolean profiler_enabled;
-	char *file_name;
-	char *file_name_suffix;
-	FILE_HANDLE_TYPE file;
-	
-	guint64 start_time;
-	guint64 start_counter;
-	guint64 end_time;
-	guint64 end_counter;
-	
-	guint64 last_header_counter;
-	
-	MethodIdMapping *methods;
-	ClassIdMapping *classes;
-	
-	guint32 loaded_element_next_free_id;
-	GHashTable *loaded_assemblies;
-	GHashTable *loaded_modules;
-	GHashTable *loaded_appdomains;
-	
-	guint32 per_thread_buffer_size;
-	guint32 statistical_buffer_size;
-	ProfilerPerThreadData* per_thread_data;
-	ProfilerStatisticalData *statistical_data;
-	ProfilerStatisticalData *statistical_data_ready;
-	ProfilerStatisticalData *statistical_data_second_buffer;
-	int statistical_call_chain_depth;
-	MonoProfilerCallChainStrategy statistical_call_chain_strategy;
-	
-	ProfilerCodeChunks code_chunks;
-	
-	THREAD_TYPE data_writer_thread;
-	THREAD_TYPE user_thread;
-	EVENT_TYPE enable_data_writer_event;
-	EVENT_TYPE wake_data_writer_event;
-	EVENT_TYPE done_data_writer_event;
-	gboolean terminate_writer_thread;
-	gboolean writer_thread_terminated;
-	
-	ProfilerFileWriteBuffer *write_buffers;
-	ProfilerFileWriteBuffer *current_write_buffer;
-	int write_buffer_size;
-	int current_write_position;
-	int full_write_buffers;
-	
-	ProfilerHeapShotWriteJob *heap_shot_write_jobs;
-	ProfilerHeapShotHeapBuffers heap;
-	
-	int command_port;
-	
-	int dump_next_heap_snapshots;
-	gboolean heap_shot_was_requested;
-	guint32 garbage_collection_counter;
-	
-	ProfilerExecutableMemoryRegions *executable_regions;
-	ProfilerExecutableFiles executable_files;
-	
-	struct {
-#if (HAS_OPROFILE)
-		gboolean oprofile;
-#endif
-		gboolean jit_time;
-		gboolean unreachable_objects;
-		gboolean collection_summary;
-		gboolean report_gc_events;
-		gboolean heap_shot;
-		gboolean track_stack;
-		gboolean track_calls;
-		gboolean save_allocation_caller;
-		gboolean save_allocation_stack;
-		gboolean allocations_carry_id;
-	} action_flags;
-};
-static MonoProfiler *profiler;
-
-static void
-enable_profiler (void) {
-	profiler->profiler_enabled = TRUE;
-}
-
-static void flush_everything (void);
-
-static void
-disable_profiler (void) {
-	profiler->profiler_enabled = FALSE;
-	flush_everything ();
-}
-
-static void
-request_heap_snapshot (void) {
-	profiler->heap_shot_was_requested = TRUE;
-	mono_gc_collect (mono_gc_max_generation ());
-}
-
-#define DEBUG_LOAD_EVENTS 0
-#define DEBUG_MAPPING_EVENTS 0
-#define DEBUG_LOGGING_PROFILER 0
-#define DEBUG_HEAP_PROFILER 0
-#define DEBUG_CLASS_BITMAPS 0
-#define DEBUG_STATISTICAL_PROFILER 0
-#define DEBUG_WRITER_THREAD 0
-#define DEBUG_USER_THREAD 0
-#define DEBUG_FILE_WRITES 0
-#if (DEBUG_LOGGING_PROFILER || DEBUG_STATISTICAL_PROFILER || DEBUG_HEAP_PROFILER || DEBUG_WRITER_THREAD || DEBUG_FILE_WRITES)
-#define LOG_WRITER_THREAD(m) printf ("WRITER-THREAD-LOG %s\n", m)
-#else
-#define LOG_WRITER_THREAD(m)
-#endif
-#if (DEBUG_LOGGING_PROFILER || DEBUG_STATISTICAL_PROFILER || DEBUG_HEAP_PROFILER || DEBUG_USER_THREAD || DEBUG_FILE_WRITES)
-#define LOG_USER_THREAD(m) printf ("USER-THREAD-LOG %s\n", m)
-#else
-#define LOG_USER_THREAD(m)
-#endif
-
-#if DEBUG_LOGGING_PROFILER
-static int event_counter = 0;
-#define EVENT_MARK() printf ("[EVENT:%d]", ++ event_counter)
-#endif
-
-static void
-thread_stack_initialize_empty (ProfilerThreadStack *stack) {
-	stack->capacity = 0;
-	stack->top = 0;
-	stack->last_saved_top = 0;
-	stack->last_written_frame = 0;
-	stack->stack = NULL;
-	stack->method_is_jitted = NULL;
-	stack->written_frames = NULL;
-}
-
-static void
-thread_stack_free (ProfilerThreadStack *stack) {
-	stack->capacity = 0;
-	stack->top = 0;
-	stack->last_saved_top = 0;
-	stack->last_written_frame = 0;
-	if (stack->stack != NULL) {
-		g_free (stack->stack);
-		stack->stack = NULL;
-	}
-	if (stack->method_is_jitted != NULL) {
-		g_free (stack->method_is_jitted);
-		stack->method_is_jitted = NULL;
-	}
-	if (stack->written_frames != NULL) {
-		g_free (stack->written_frames);
-		stack->written_frames = NULL;
-	}
-}
-
-static void
-thread_stack_initialize (ProfilerThreadStack *stack, guint32 capacity) {
-	stack->capacity = capacity;
-	stack->top = 0;
-	stack->last_saved_top = 0;
-	stack->last_written_frame = 0;
-	stack->stack = g_new0 (MonoMethod*, capacity);
-	stack->method_is_jitted = g_new0 (guint8, capacity);
-	stack->written_frames = g_new0 (guint32, capacity);
-}
-
-static void
-thread_stack_push_jitted (ProfilerThreadStack *stack, MonoMethod* method, gboolean method_is_jitted) {
-	if (stack->top >= stack->capacity) {
-		MonoMethod **old_stack = stack->stack;
-		guint8 *old_method_is_jitted = stack->method_is_jitted;
-		guint32 *old_written_frames = stack->written_frames;
-		guint32 top = stack->top;
-		guint32 last_saved_top = stack->last_saved_top;
-		guint32 last_written_frame = stack->last_written_frame;
-		thread_stack_initialize (stack, stack->capacity * 2);
-		memcpy (stack->stack, old_stack, top * sizeof (MonoMethod*));
-		memcpy (stack->method_is_jitted, old_method_is_jitted, top * sizeof (guint8));
-		memcpy (stack->written_frames, old_written_frames, top * sizeof (guint32));
-		g_free (old_stack);
-		g_free (old_method_is_jitted);
-		g_free (old_written_frames);
-		stack->top = top;
-		stack->last_saved_top = last_saved_top;
-		stack->last_written_frame = last_written_frame;
-	}
-	stack->stack [stack->top] = method;
-	stack->method_is_jitted [stack->top] = method_is_jitted;
-	stack->top ++;
-}
-
-static inline void
-thread_stack_push (ProfilerThreadStack *stack, MonoMethod* method) {
-	thread_stack_push_jitted (stack, method, FALSE);
-}
-
-static MonoMethod*
-thread_stack_pop (ProfilerThreadStack *stack) {
-	if (stack->top > 0) {
-		stack->top --;
-		if (stack->last_saved_top > stack->top) {
-			stack->last_saved_top = stack->top;
-		}
-		return stack->stack [stack->top];
-	} else {
-		return NULL;
-	}
-}
-
-static MonoMethod*
-thread_stack_top (ProfilerThreadStack *stack) {
-	if (stack->top > 0) {
-		return stack->stack [stack->top - 1];
-	} else {
-		return NULL;
-	}
-}
-
-static gboolean
-thread_stack_top_is_jitted (ProfilerThreadStack *stack) {
-	if (stack->top > 0) {
-		return stack->method_is_jitted [stack->top - 1];
-	} else {
-		return FALSE;
-	}
-}
-
-static MonoMethod*
-thread_stack_index_from_top (ProfilerThreadStack *stack, int index) {
-	if (stack->top > index) {
-		return stack->stack [stack->top - (index + 1)];
-	} else {
-		return NULL;
-	}
-}
-
-static gboolean
-thread_stack_index_from_top_is_jitted (ProfilerThreadStack *stack, int index) {
-	if (stack->top > index) {
-		return stack->method_is_jitted [stack->top - (index + 1)];
-	} else {
-		return FALSE;
-	}
-}
-
-static inline void
-thread_stack_push_safely (ProfilerThreadStack *stack, MonoMethod* method) {
-	if (stack->stack != NULL) {
-		thread_stack_push (stack, method);
-	}
-}
-
-static inline void
-thread_stack_push_jitted_safely (ProfilerThreadStack *stack, MonoMethod* method, gboolean method_is_jitted) {
-	if (stack->stack != NULL) {
-		thread_stack_push_jitted (stack, method, method_is_jitted);
-	}
-}
-
-static inline int
-thread_stack_count_unsaved_frames (ProfilerThreadStack *stack) {
-	int result = stack->top - stack->last_saved_top;
-	return (result > 0) ? result : 0;
-}
-
-static inline int
-thread_stack_get_last_written_frame (ProfilerThreadStack *stack) {
-	return stack->last_written_frame;
-}
-
-static inline void
-thread_stack_set_last_written_frame (ProfilerThreadStack *stack, int last_written_frame) {
-	stack->last_written_frame = last_written_frame;
-}
-
-static inline guint32
-thread_stack_written_frame_at_index (ProfilerThreadStack *stack, int index) {
-	return stack->written_frames [index];
-}
-
-static inline void
-thread_stack_write_frame_at_index (ProfilerThreadStack *stack, int index, guint32 method_id_and_is_jitted) {
-	stack->written_frames [index] = method_id_and_is_jitted;
-}
-
-static ClassIdMappingElement*
-class_id_mapping_element_get (MonoClass *klass) {
-	return g_hash_table_lookup (profiler->classes->table, (gconstpointer) klass);
-}
-
-static MethodIdMappingElement*
-method_id_mapping_element_get (MonoMethod *method) {
-	return g_hash_table_lookup (profiler->methods->table, (gconstpointer) method);
-}
-
-#define BITS_TO_BYTES(v) do {\
-	(v) += 7;\
-	(v) &= ~7;\
-	(v) >>= 3;\
-} while (0)
-
-static ClassIdMappingElement*
-class_id_mapping_element_new (MonoClass *klass) {
-	ClassIdMappingElement *result = g_new (ClassIdMappingElement, 1);
-	
-	result->name = mono_type_full_name (mono_class_get_type (klass));
-	result->klass = klass;
-	result->next_unwritten = profiler->classes->unwritten;
-	profiler->classes->unwritten = result;
-	result->id = profiler->classes->next_id;
-	profiler->classes->next_id ++;
-	
-	result->data.bitmap.compact = 0;
-	result->data.layout.slots = CLASS_LAYOUT_NOT_INITIALIZED;
-	result->data.layout.references = CLASS_LAYOUT_NOT_INITIALIZED;
-	
-	g_hash_table_insert (profiler->classes->table, klass, result);
-	
-#if (DEBUG_MAPPING_EVENTS)
-	printf ("Created new CLASS mapping element \"%s\" (%p)[%d]\n", result->name, klass, result->id);
-#endif
-	return result;
-}
-
-static void
-class_id_mapping_element_build_layout_bitmap (MonoClass *klass, ClassIdMappingElement *klass_id) {
-	MonoClass *parent_class = mono_class_get_parent (klass);
-	int number_of_reference_fields = 0;
-	int max_offset_of_reference_fields = 0;
-	ClassIdMappingElement *parent_id;
-	gpointer iter;
-	MonoClassField *field;
-	
-#if (DEBUG_CLASS_BITMAPS)
-	printf ("class_id_mapping_element_build_layout_bitmap: building layout for class %s.%s: ", mono_class_get_namespace (klass), mono_class_get_name (klass));
-#endif
-	
-	if (parent_class != NULL) {
-		parent_id = class_id_mapping_element_get (parent_class);
-		g_assert (parent_id != NULL);
-		
-		if (parent_id->data.layout.slots == CLASS_LAYOUT_NOT_INITIALIZED) {
-#if (DEBUG_CLASS_BITMAPS)
-			printf ("[recursively building bitmap for father class]\n");
-#endif
-			class_id_mapping_element_build_layout_bitmap (parent_class, parent_id);
-		}
-	} else {
-		parent_id = NULL;
-	}
-	
-	iter = NULL;
-	while ((field = mono_class_get_fields (klass, &iter)) != NULL) {
-		MonoType* field_type = mono_field_get_type (field);
-		// For now, skip static fields
-		if (mono_field_get_flags (field) & 0x0010 /*FIELD_ATTRIBUTE_STATIC*/)
-			continue;
-		
-		if (MONO_TYPE_IS_REFERENCE (field_type)) {
-			int field_offset = mono_field_get_offset (field) - sizeof (MonoObject);
-			if (field_offset > max_offset_of_reference_fields) {
-				max_offset_of_reference_fields = field_offset;
-			}
-			number_of_reference_fields ++;
-		} else {
-			MonoClass *field_class = mono_class_from_mono_type (field_type);
-			if (field_class && mono_class_is_valuetype (field_class)) {
-				ClassIdMappingElement *field_id = class_id_mapping_element_get (field_class);
-				g_assert (field_id != NULL);
-				
-				if (field_id->data.layout.slots == CLASS_LAYOUT_NOT_INITIALIZED) {
-					if (field_id != klass_id) {
-#if (DEBUG_CLASS_BITMAPS)
-						printf ("[recursively building bitmap for field %s]\n", mono_field_get_name (field));
-#endif
-						class_id_mapping_element_build_layout_bitmap (field_class, field_id);
-					} else {
-#if (DEBUG_CLASS_BITMAPS)
-						printf ("[breaking recursive bitmap build for field %s]", mono_field_get_name (field));
-						
-#endif
-						klass_id->data.bitmap.compact = 0;
-						klass_id->data.layout.slots = 0;
-						klass_id->data.layout.references = 0;
-					}
-				}
-				
-				if (field_id->data.layout.references > 0) {
-					int field_offset = mono_field_get_offset (field) - sizeof (MonoObject);
-					int max_offset_reference_in_field = (field_id->data.layout.slots - 1) * sizeof (gpointer);
-					
-					if ((field_offset + max_offset_reference_in_field) > max_offset_of_reference_fields) {
-						max_offset_of_reference_fields = field_offset + max_offset_reference_in_field;
-					}
-					
-					number_of_reference_fields += field_id->data.layout.references;
-				}
-			}
-		}
-	}
-	
-#if (DEBUG_CLASS_BITMAPS)
-	printf ("[allocating bitmap for class %s.%s (references %d, max offset %d, slots %d)]", mono_class_get_namespace (klass), mono_class_get_name (klass), number_of_reference_fields, max_offset_of_reference_fields, (int)(max_offset_of_reference_fields / sizeof (gpointer)) + 1);
-#endif
-	if ((number_of_reference_fields == 0) && ((parent_id == NULL) || (parent_id->data.layout.references == 0))) {
-#if (DEBUG_CLASS_BITMAPS)
-		printf ("[no references at all]");
-#endif
-		klass_id->data.bitmap.compact = 0;
-		klass_id->data.layout.slots = 0;
-		klass_id->data.layout.references = 0;
-	} else {
-		if ((parent_id != NULL) && (parent_id->data.layout.references > 0)) {
-#if (DEBUG_CLASS_BITMAPS)
-			printf ("[parent %s.%s has %d references in %d slots]", mono_class_get_namespace (parent_class), mono_class_get_name (parent_class), parent_id->data.layout.references, parent_id->data.layout.slots);
-#endif
-			klass_id->data.layout.slots = parent_id->data.layout.slots;
-			klass_id->data.layout.references = parent_id->data.layout.references;
-		} else {
-#if (DEBUG_CLASS_BITMAPS)
-			printf ("[no references from parent]");
-#endif
-			klass_id->data.layout.slots = 0;
-			klass_id->data.layout.references = 0;
-		}
-		
-		if (number_of_reference_fields > 0) {
-			klass_id->data.layout.slots += ((max_offset_of_reference_fields / sizeof (gpointer)) + 1);
-			klass_id->data.layout.references += number_of_reference_fields;
-#if (DEBUG_CLASS_BITMAPS)
-			printf ("[adding data, going to %d references in %d slots]", klass_id->data.layout.references, klass_id->data.layout.slots);
-#endif
-		}
-		
-		if (klass_id->data.layout.slots <= CLASS_LAYOUT_PACKED_BITMAP_SIZE) {
-#if (DEBUG_CLASS_BITMAPS)
-				printf ("[zeroing bitmap]");
-#endif
-				klass_id->data.bitmap.compact = 0;
-			if ((parent_id != NULL) && (parent_id->data.layout.references > 0)) {
-#if (DEBUG_CLASS_BITMAPS)
-				printf ("[copying compact father bitmap]");
-#endif
-				klass_id->data.bitmap.compact = parent_id->data.bitmap.compact;
-			}
-		} else {
-			int size_of_bitmap = klass_id->data.layout.slots;
-			BITS_TO_BYTES (size_of_bitmap);
-#if (DEBUG_CLASS_BITMAPS)
-			printf ("[allocating %d bytes for bitmap]", size_of_bitmap);
-#endif
-			klass_id->data.bitmap.extended = g_malloc0 (size_of_bitmap);
-			if ((parent_id != NULL) && (parent_id->data.layout.references > 0)) {
-				int size_of_father_bitmap = parent_id->data.layout.slots;
-				if (size_of_father_bitmap <= CLASS_LAYOUT_PACKED_BITMAP_SIZE) {
-					int father_slot;
-#if (DEBUG_CLASS_BITMAPS)
-					printf ("[copying %d bits from father bitmap]", size_of_father_bitmap);
-#endif
-					for (father_slot = 0; father_slot < size_of_father_bitmap; father_slot ++) {
-						if (parent_id->data.bitmap.compact & (((guint64)1) << father_slot)) {
-							klass_id->data.bitmap.extended [father_slot >> 3] |= (1 << (father_slot & 7));
-						}
-					}
-				} else {
-					BITS_TO_BYTES (size_of_father_bitmap);
-#if (DEBUG_CLASS_BITMAPS)
-					printf ("[copying %d bytes from father bitmap]", size_of_father_bitmap);
-#endif
-					memcpy (klass_id->data.bitmap.extended, parent_id->data.bitmap.extended, size_of_father_bitmap);
-				}
-			}
-		}
-	}
-	
-#if (DEBUG_CLASS_BITMAPS)
-	printf ("[starting filling iteration]\n");
-#endif
-	iter = NULL;
-	while ((field = mono_class_get_fields (klass, &iter)) != NULL) {
-		MonoType* field_type = mono_field_get_type (field);
-		// For now, skip static fields
-		if (mono_field_get_flags (field) & 0x0010 /*FIELD_ATTRIBUTE_STATIC*/)
-			continue;
-		
-#if (DEBUG_CLASS_BITMAPS)
-		printf ("[Working on field %s]", mono_field_get_name (field));
-#endif
-		if (MONO_TYPE_IS_REFERENCE (field_type)) {
-			int field_offset = mono_field_get_offset (field) - sizeof (MonoObject);
-			int field_slot;
-			g_assert ((field_offset % sizeof (gpointer)) == 0);
-			field_slot = field_offset / sizeof (gpointer);
-			if (klass_id->data.layout.slots <= CLASS_LAYOUT_PACKED_BITMAP_SIZE) {
-				klass_id->data.bitmap.compact |= (((guint64)1) << field_slot);
-			} else {
-				klass_id->data.bitmap.extended [field_slot >> 3] |= (1 << (field_slot & 7));
-			}
-#if (DEBUG_CLASS_BITMAPS)
-			printf ("[reference at offset %d, slot %d]", field_offset, field_slot);
-#endif
-		} else {
-			MonoClass *field_class = mono_class_from_mono_type (field_type);
-			if (field_class && mono_class_is_valuetype (field_class)) {
-				ClassIdMappingElement *field_id = class_id_mapping_element_get (field_class);
-				int field_offset;
-				int field_slot;
-				
-				g_assert (field_id != NULL);
-				field_offset = mono_field_get_offset (field) - sizeof (MonoObject);
-				g_assert ((field_id->data.layout.references == 0) || ((field_offset % sizeof (gpointer)) == 0));
-				field_slot = field_offset / sizeof (gpointer);
-#if (DEBUG_CLASS_BITMAPS)
-				printf ("[value type at offset %d, slot %d, with %d references in %d slots]", field_offset, field_slot, field_id->data.layout.references, field_id->data.layout.slots);
-#endif
-				
-				if (field_id->data.layout.references > 0) {
-					int sub_field_slot;
-					if (field_id->data.layout.slots <= CLASS_LAYOUT_PACKED_BITMAP_SIZE) {
-						for (sub_field_slot = 0; sub_field_slot < field_id->data.layout.slots; sub_field_slot ++) {
-							if (field_id->data.bitmap.compact & (((guint64)1) << sub_field_slot)) {
-								int actual_slot = field_slot + sub_field_slot;
-								if (klass_id->data.layout.slots <= CLASS_LAYOUT_PACKED_BITMAP_SIZE) {
-									klass_id->data.bitmap.compact |= (((guint64)1) << actual_slot);
-								} else {
-									klass_id->data.bitmap.extended [actual_slot >> 3] |= (1 << (actual_slot & 7));
-								}
-							}
-						}
-					} else {
-						for (sub_field_slot = 0; sub_field_slot < field_id->data.layout.slots; sub_field_slot ++) {
-							if (field_id->data.bitmap.extended [sub_field_slot >> 3] & (1 << (sub_field_slot & 7))) {
-								int actual_slot = field_slot + sub_field_slot;
-								if (klass_id->data.layout.slots <= CLASS_LAYOUT_PACKED_BITMAP_SIZE) {
-									klass_id->data.bitmap.compact |= (((guint64)1) << actual_slot);
-								} else {
-									klass_id->data.bitmap.extended [actual_slot >> 3] |= (1 << (actual_slot & 7));
-								}
-							}
-						}
-					}
-				}
-			}
-		}
-	}
-#if (DEBUG_CLASS_BITMAPS)
-	do {
-		int slot;
-		printf ("\nLayot of class \"%s.%s\": references %d, slots %d, bitmap {", mono_class_get_namespace (klass), mono_class_get_name (klass), klass_id->data.layout.references, klass_id->data.layout.slots);
-		for (slot = 0; slot < klass_id->data.layout.slots; slot ++) {
-			if (klass_id->data.layout.slots <= CLASS_LAYOUT_PACKED_BITMAP_SIZE) {
-				if (klass_id->data.bitmap.compact & (((guint64)1) << slot)) {
-					printf (" 1");
-				} else {
-					printf (" 0");
-				}
-			} else {
-				if (klass_id->data.bitmap.extended [slot >> 3] & (1 << (slot & 7))) {
-					printf (" 1");
-				} else {
-					printf (" 0");
-				}
-;			}
-			
-		}
-		printf (" }\n");
-		
-	} while (0);
-#endif
-}
-
-static MethodIdMappingElement*
-method_id_mapping_element_new (MonoMethod *method) {
-	MethodIdMappingElement *result = g_new (MethodIdMappingElement, 1);
-	char *signature = mono_signature_get_desc (mono_method_signature (method), TRUE);
-	
-	result->name = g_strdup_printf ("%s (%s)", mono_method_get_name (method), signature);
-	g_free (signature);
-	result->method = method;
-	result->next_unwritten = profiler->methods->unwritten;
-	profiler->methods->unwritten = result;
-	result->id = profiler->methods->next_id;
-	profiler->methods->next_id ++;
-	g_hash_table_insert (profiler->methods->table, method, result);
-	
-	result->data.code_start = NULL;
-	result->data.code_size = 0;
-	
-#if (DEBUG_MAPPING_EVENTS)
-	printf ("Created new METHOD mapping element \"%s\" (%p)[%d]\n", result->name, method, result->id);
-#endif
-	return result;
-}
-
-
-static void
-method_id_mapping_element_destroy (gpointer element) {
-	MethodIdMappingElement *e = (MethodIdMappingElement*) element;
-	if (e->name)
-		g_free (e->name);
-	g_free (element);
-}
-
-static void
-class_id_mapping_element_destroy (gpointer element) {
-	ClassIdMappingElement *e = (ClassIdMappingElement*) element;
-	if (e->name)
-		g_free (e->name);
-	if ((e->data.layout.slots != CLASS_LAYOUT_NOT_INITIALIZED) && (e->data.layout.slots > CLASS_LAYOUT_PACKED_BITMAP_SIZE))
-		g_free (e->data.bitmap.extended);
-	g_free (element);
-}
-
-static MethodIdMapping*
-method_id_mapping_new (void) {
-	MethodIdMapping *result = g_new (MethodIdMapping, 1);
-	//result->table = g_hash_table_new_full (mono_aligned_addr_hash, NULL, NULL, method_id_mapping_element_destroy);
-	result->table = g_hash_table_new_full (g_direct_hash, NULL, NULL, method_id_mapping_element_destroy);
-	result->unwritten = NULL;
-	result->next_id = 1;
-	return result;
-}
-
-static ClassIdMapping*
-class_id_mapping_new (void) {
-	ClassIdMapping *result = g_new (ClassIdMapping, 1);
-	//result->table = g_hash_table_new_full (mono_aligned_addr_hash, NULL, NULL, class_id_mapping_element_destroy);
-	result->table = g_hash_table_new_full (g_direct_hash, NULL, NULL, class_id_mapping_element_destroy);
-	result->unwritten = NULL;
-	result->next_id = 1;
-	return result;
-}
-
-static void
-method_id_mapping_destroy (MethodIdMapping *map) {
-	g_hash_table_destroy (map->table);
-	g_free (map);
-}
-
-static void
-class_id_mapping_destroy (ClassIdMapping *map) {
-	g_hash_table_destroy (map->table);
-	g_free (map);
-}
-
-#if (DEBUG_LOAD_EVENTS)
-static void
-print_load_event (const char *event_name, GHashTable *table, gpointer item, LoadedElement *element);
-#endif
-
-static LoadedElement*
-loaded_element_load_start (GHashTable *table, gpointer item) {
-	LoadedElement *element = g_new0 (LoadedElement, 1);
-	element->id = profiler->loaded_element_next_free_id;
-	profiler->loaded_element_next_free_id ++;
-#if (DEBUG_LOAD_EVENTS)
-	print_load_event ("LOAD START", table, item, element);
-#endif
-	MONO_PROFILER_GET_CURRENT_COUNTER (element->load_start_counter);
-	g_hash_table_insert (table, item, element);
-	return element;
-}
-
-static LoadedElement*
-loaded_element_load_end (GHashTable *table, gpointer item, char *name) {
-	LoadedElement *element = g_hash_table_lookup (table, item);
-#if (DEBUG_LOAD_EVENTS)
-	print_load_event ("LOAD END", table, item, element);
-#endif
-	g_assert (element != NULL);
-	MONO_PROFILER_GET_CURRENT_COUNTER (element->load_end_counter);
-	element->name = name;
-	element->loaded = TRUE;
-	return element;
-}
-
-static LoadedElement*
-loaded_element_unload_start (GHashTable *table, gpointer item) {
-	LoadedElement *element = g_hash_table_lookup (table, item);
-#if (DEBUG_LOAD_EVENTS)
-	print_load_event ("UNLOAD START", table, item, element);
-#endif
-	g_assert (element != NULL);
-	MONO_PROFILER_GET_CURRENT_COUNTER (element->unload_start_counter);
-	return element;
-}
-
-static LoadedElement*
-loaded_element_unload_end (GHashTable *table, gpointer item) {
-	LoadedElement *element = g_hash_table_lookup (table, item);
-#if (DEBUG_LOAD_EVENTS)
-	print_load_event ("UNLOAD END", table, item, element);
-#endif
-	g_assert (element != NULL);
-	MONO_PROFILER_GET_CURRENT_COUNTER (element->unload_end_counter);
-	element->unloaded = TRUE;
-	return element;
-}
-
-static LoadedElement*
-loaded_element_find (GHashTable *table, gpointer item) {
-	LoadedElement *element = g_hash_table_lookup (table, item);
-	return element;
-}
-
-static guint32
-loaded_element_get_id (GHashTable *table, gpointer item) {
-	LoadedElement *element = loaded_element_find (table, item);
-	if (element != NULL) {
-		return element->id;
-	} else {
-		return 0;
-	}
-}
-
-static void
-loaded_element_destroy (gpointer element) {
-	if (((LoadedElement*)element)->name)
-		g_free (((LoadedElement*)element)->name);
-	g_free (element);
-}
-
-#if (DEBUG_LOAD_EVENTS)
-static void
-print_load_event (const char *event_name, GHashTable *table, gpointer item, LoadedElement *element) {
-	const char* item_name;
-	char* item_info;
-	
-	if (table == profiler->loaded_assemblies) {
-		//item_info = g_strdup_printf("ASSEMBLY %p (dynamic %d)", item, mono_image_is_dynamic (mono_assembly_get_image((MonoAssembly*)item)));
-		item_info = g_strdup_printf("ASSEMBLY %p", item);
-	} else if (table == profiler->loaded_modules) {
-		//item_info = g_strdup_printf("MODULE %p (dynamic %d)", item, mono_image_is_dynamic ((MonoImage*)item));
-		item_info = g_strdup_printf("MODULE %p", item);
-	} else if (table == profiler->loaded_appdomains) {
-		item_info = g_strdup_printf("APPDOMAIN %p (id %d)", item, mono_domain_get_id ((MonoDomain*)item));
-	} else {
-		item_info = NULL;
-		g_assert_not_reached ();
-	}
-	
-	if (element != NULL) {
-		item_name = element->name;
-	} else {
-		item_name = "<NULL>";
-	}
-	
-	printf ("%s EVENT for %s (%s [id %d])\n", event_name, item_info, item_name, element->id);
-	g_free (item_info);
-}
-#endif
-
-static void
-profiler_heap_shot_object_buffers_destroy (ProfilerHeapShotObjectBuffer *buffer) {
-	while (buffer != NULL) {
-		ProfilerHeapShotObjectBuffer *next = buffer->next;
-#if DEBUG_HEAP_PROFILER
-		printf ("profiler_heap_shot_object_buffers_destroy: destroyed buffer %p (%p-%p)\n", buffer, & (buffer->buffer [0]), buffer->end);
-#endif
-		g_free (buffer);
-		buffer = next;
-	}
-}
-
-static ProfilerHeapShotObjectBuffer*
-profiler_heap_shot_object_buffer_new (ProfilerPerThreadData *data) {
-	ProfilerHeapShotObjectBuffer *buffer;
-	ProfilerHeapShotObjectBuffer *result = g_new (ProfilerHeapShotObjectBuffer, 1);
-	result->next_free_slot = & (result->buffer [0]);
-	result->end = & (result->buffer [PROFILER_HEAP_SHOT_OBJECT_BUFFER_SIZE]);
-	result->first_unprocessed_slot = & (result->buffer [0]);
-	result->next = data->heap_shot_object_buffers;
-	data->heap_shot_object_buffers = result;
-#if DEBUG_HEAP_PROFILER
-	printf ("profiler_heap_shot_object_buffer_new: created buffer %p (%p-%p)\n", result, result->next_free_slot, result->end);
-#endif
-	for (buffer = result; buffer != NULL; buffer = buffer->next) {
-		ProfilerHeapShotObjectBuffer *last = buffer->next;
-		if ((last != NULL) && (last->first_unprocessed_slot == last->end)) {
-			buffer->next = NULL;
-			profiler_heap_shot_object_buffers_destroy (last);
-		}
-	}
-	
-	return result;
-}
-
-static ProfilerHeapShotWriteJob*
-profiler_heap_shot_write_job_new (gboolean heap_shot_was_requested, gboolean dump_heap_data, guint32 collection) {
-	ProfilerHeapShotWriteJob *job = g_new (ProfilerHeapShotWriteJob, 1);
-	job->next = NULL;
-	job->next_unwritten = NULL;
-	
-	if (profiler->action_flags.unreachable_objects || dump_heap_data) {
-		job->buffers = g_new (ProfilerHeapShotWriteBuffer, 1);
-		job->buffers->next = NULL;
-		job->last_next = & (job->buffers->next);
-		job->start = & (job->buffers->buffer [0]);
-		job->cursor = job->start;
-		job->end = & (job->buffers->buffer [PROFILER_HEAP_SHOT_WRITE_BUFFER_SIZE]);
-	} else {
-		job->buffers = NULL;
-		job->last_next = NULL;
-		job->start = NULL;
-		job->cursor = NULL;
-		job->end = NULL;
-	}
-	job->full_buffers = 0;
-	
-	if (profiler->action_flags.collection_summary) {
-		job->summary.capacity = profiler->classes->next_id;
-		job->summary.per_class_data = g_new0 (ProfilerHeapShotClassSummary, job->summary.capacity);
-	} else {
-		job->summary.capacity = 0;
-		job->summary.per_class_data = NULL;
-	}
-
-	job->heap_shot_was_requested = heap_shot_was_requested;
-	job->collection = collection;
-	job->dump_heap_data = dump_heap_data;
-#if DEBUG_HEAP_PROFILER
-	printf ("profiler_heap_shot_write_job_new: created job %p with buffer %p(%p-%p) (collection %d, dump %d)\n", job, job->buffers, job->start, job->end, collection, dump_heap_data);
-#endif
-	return job;
-}
-
-static gboolean
-profiler_heap_shot_write_job_has_data (ProfilerHeapShotWriteJob *job) {
-	return ((job->buffers != NULL) || (job->summary.capacity > 0));
-}
-
-static void
-profiler_heap_shot_write_job_add_buffer (ProfilerHeapShotWriteJob *job, gpointer value) {
-	ProfilerHeapShotWriteBuffer *buffer = g_new (ProfilerHeapShotWriteBuffer, 1);
-	buffer->next = NULL;
-	*(job->last_next) = buffer;
-	job->last_next = & (buffer->next);
-	job->full_buffers ++;
-	buffer->buffer [0] = value;
-	job->start = & (buffer->buffer [0]);
-	job->cursor = & (buffer->buffer [1]);
-	job->end = & (buffer->buffer [PROFILER_HEAP_SHOT_WRITE_BUFFER_SIZE]);
-#if DEBUG_HEAP_PROFILER
-	printf ("profiler_heap_shot_write_job_add_buffer: in job %p, added buffer %p(%p-%p) with value %p at address %p (cursor now %p)\n", job, buffer, job->start, job->end, value, &(buffer->buffer [0]), job->cursor);
-	do {
-		ProfilerHeapShotWriteBuffer *current_buffer;
-		for (current_buffer = job->buffers; current_buffer != NULL; current_buffer = current_buffer->next) {
-			printf ("profiler_heap_shot_write_job_add_buffer: now job %p has buffer %p\n", job, current_buffer);
-		}
-	} while (0);
-#endif
-}
-
-static void
-profiler_heap_shot_write_job_free_buffers (ProfilerHeapShotWriteJob *job) {
-	ProfilerHeapShotWriteBuffer *buffer = job->buffers;
-	
-	while (buffer != NULL) {
-		ProfilerHeapShotWriteBuffer *next = buffer->next;
-#if DEBUG_HEAP_PROFILER
-		printf ("profiler_heap_shot_write_job_free_buffers: in job %p, freeing buffer %p\n", job, buffer);
-#endif
-		g_free (buffer);
-		buffer = next;
-	}
-	
-	job->buffers = NULL;
-	
-	if (job->summary.per_class_data != NULL) {
-		g_free (job->summary.per_class_data);
-		job->summary.per_class_data = NULL;
-	}
-	job->summary.capacity = 0;
-}
-
-static void
-profiler_heap_shot_write_block (ProfilerHeapShotWriteJob *job);
-
-static void
-profiler_process_heap_shot_write_jobs (void) {
-	gboolean done = FALSE;
-	
-	while (!done) {
-		ProfilerHeapShotWriteJob *current_job = profiler->heap_shot_write_jobs;
-		ProfilerHeapShotWriteJob *previous_job = NULL;
-		ProfilerHeapShotWriteJob *next_job;
-		
-		done = TRUE;
-		while (current_job != NULL) {
-			next_job = current_job->next_unwritten;
-			
-			if (next_job != NULL) {
-				if (profiler_heap_shot_write_job_has_data (current_job)) {
-					done = FALSE;
-				}
-				if (! profiler_heap_shot_write_job_has_data (next_job)) {
-					current_job->next_unwritten = NULL;
-					next_job = NULL;
-				}
-			} else {
-				if (profiler_heap_shot_write_job_has_data (current_job)) {
-					LOG_WRITER_THREAD ("profiler_process_heap_shot_write_jobs: writing...");
-					profiler_heap_shot_write_block (current_job);
-					LOG_WRITER_THREAD ("profiler_process_heap_shot_write_jobs: done");
-					if (previous_job != NULL) {
-						previous_job->next_unwritten = NULL;
-					}
-				}
-			}
-			
-			previous_job = current_job;
-			current_job = next_job;
-		}
-	}
-}
-
-static void
-profiler_free_heap_shot_write_jobs (void) {
-	ProfilerHeapShotWriteJob *current_job = profiler->heap_shot_write_jobs;
-	ProfilerHeapShotWriteJob *next_job;
-	
-	if (current_job != NULL) {
-		while (current_job->next_unwritten != NULL) {
-#if DEBUG_HEAP_PROFILER
-			printf ("profiler_free_heap_shot_write_jobs: job %p must not be freed\n", current_job);
-#endif
-			current_job = current_job->next_unwritten;
-		}
-		
-		next_job = current_job->next;
-		current_job->next = NULL;
-		current_job = next_job;
-		
-		while (current_job != NULL) {
-#if DEBUG_HEAP_PROFILER
-			printf ("profiler_free_heap_shot_write_jobs: job %p will be freed\n", current_job);
-#endif
-			next_job = current_job->next;
-			profiler_heap_shot_write_job_free_buffers (current_job);
-			g_free (current_job);
-			current_job = next_job;
-		}
-	}
-}
-
-static void
-profiler_destroy_heap_shot_write_jobs (void) {
-	ProfilerHeapShotWriteJob *current_job = profiler->heap_shot_write_jobs;
-	ProfilerHeapShotWriteJob *next_job;
-	
-	while (current_job != NULL) {
-		next_job = current_job->next;
-		profiler_heap_shot_write_job_free_buffers (current_job);
-		g_free (current_job);
-		current_job = next_job;
-	}
-}
-
-static void
-profiler_add_heap_shot_write_job (ProfilerHeapShotWriteJob *job) {
-	job->next = profiler->heap_shot_write_jobs;
-	job->next_unwritten = job->next;
-	profiler->heap_shot_write_jobs = job;
-#if DEBUG_HEAP_PROFILER
-	printf ("profiler_add_heap_shot_write_job: added job %p\n", job);
-#endif
-}
-
-#if DEBUG_HEAP_PROFILER
-#define STORE_ALLOCATED_OBJECT_MESSAGE1(d,o) printf ("STORE_ALLOCATED_OBJECT[TID %ld]: storing object %p at address %p\n", (d)->thread_id, (o), (d)->heap_shot_object_buffers->next_free_slot)
-#define STORE_ALLOCATED_OBJECT_MESSAGE2(d,o) printf ("STORE_ALLOCATED_OBJECT[TID %ld]: storing object %p at address %p in new buffer %p\n", (d)->thread_id, (o), buffer->next_free_slot, buffer)
-#else
-#define STORE_ALLOCATED_OBJECT_MESSAGE1(d,o)
-#define STORE_ALLOCATED_OBJECT_MESSAGE2(d,o)
-#endif
-#define STORE_ALLOCATED_OBJECT(d,o) do {\
-	if ((d)->heap_shot_object_buffers->next_free_slot < (d)->heap_shot_object_buffers->end) {\
-		STORE_ALLOCATED_OBJECT_MESSAGE1 ((d), (o));\
-		*((d)->heap_shot_object_buffers->next_free_slot) = (o);\
-		(d)->heap_shot_object_buffers->next_free_slot ++;\
-	} else {\
-		ProfilerHeapShotObjectBuffer *buffer = profiler_heap_shot_object_buffer_new (d);\
-		STORE_ALLOCATED_OBJECT_MESSAGE2 ((d), (o));\
-		*((buffer)->next_free_slot) = (o);\
-		(buffer)->next_free_slot ++;\
-	}\
-} while (0)
-
-static ProfilerPerThreadData*
-profiler_per_thread_data_new (guint32 buffer_size)
-{
-	ProfilerPerThreadData *data = g_new (ProfilerPerThreadData, 1);
-
-	data->events = g_new0 (ProfilerEventData, buffer_size);
-	data->next_free_event = data->events;
-	data->next_unreserved_event = data->events;
-	data->end_event = data->events + (buffer_size - 1);
-	data->first_unwritten_event = data->events;
-	data->first_unmapped_event = data->events;
-	MONO_PROFILER_GET_CURRENT_COUNTER (data->start_event_counter);
-	data->last_event_counter = data->start_event_counter;
-	data->thread_id = CURRENT_THREAD_ID ();
-	data->heap_shot_object_buffers = NULL;
-	if ((profiler->action_flags.unreachable_objects == TRUE) ||
-			(profiler->action_flags.heap_shot == TRUE) ||
-			(profiler->action_flags.collection_summary == TRUE)) {
-		profiler_heap_shot_object_buffer_new (data);
-	}
-	if (profiler->action_flags.track_stack) {
-		thread_stack_initialize (&(data->stack), 64);
-	} else {
-		thread_stack_initialize_empty (&(data->stack));
-	}
-	return data;
-}
-
-static void
-profiler_per_thread_data_destroy (ProfilerPerThreadData *data) {
-	g_free (data->events);
-	profiler_heap_shot_object_buffers_destroy (data->heap_shot_object_buffers);
-	thread_stack_free (&(data->stack));
-	g_free (data);
-}
-
-static ProfilerStatisticalData*
-profiler_statistical_data_new (MonoProfiler *profiler) {
-	int buffer_size = profiler->statistical_buffer_size * (profiler->statistical_call_chain_depth + 1);
-	ProfilerStatisticalData *data = g_new (ProfilerStatisticalData, 1);
-
-	data->hits = g_new0 (ProfilerStatisticalHit, buffer_size);
-	data->next_free_index = 0;
-	data->end_index = profiler->statistical_buffer_size;
-	data->first_unwritten_index = 0;
-	
-	return data;
-}
-
-static void
-profiler_statistical_data_destroy (ProfilerStatisticalData *data) {
-	g_free (data->hits);
-	g_free (data);
-}
-
-static ProfilerCodeBufferArray*
-profiler_code_buffer_array_new (ProfilerCodeBufferArray *child) {
-	ProfilerCodeBufferArray *result = g_new0 (ProfilerCodeBufferArray, 1);
-	if (child == NULL) {
-		result->level = 0;
-	} else {
-		result->level = child->level + 1;
-		result->number_of_buffers = 1;
-		result->buffers [0].info.data.sub_buffers = child;
-		result->buffers [0].start = child->buffers [0].start;
-		result->buffers [0].end = child->buffers [child->number_of_buffers - 1].end;
-	}
-	return result;
-}
-
-static void
-profiler_code_buffer_array_destroy (ProfilerCodeBufferArray *buffers) {
-	if (buffers->level > 0) {
-		int i;
-		for (i = 0; i < buffers->number_of_buffers; i++) {
-			ProfilerCodeBufferArray *sub_buffers = buffers->buffers [i].info.data.sub_buffers;
-			profiler_code_buffer_array_destroy (sub_buffers);
-		}
-	}
-	g_free (buffers);
-}
-
-static gboolean
-profiler_code_buffer_array_is_full (ProfilerCodeBufferArray *buffers) {
-	while (buffers->level > 0) {
-		ProfilerCodeBufferArray *next;
-		if (buffers->number_of_buffers < PROFILER_CODE_BUFFER_ARRAY_SIZE) {
-			return FALSE;
-		}
-		next = buffers->buffers [PROFILER_CODE_BUFFER_ARRAY_SIZE - 1].info.data.sub_buffers;
-		if (next->level < (buffers->level - 1)) {
-			return FALSE;
-		}
-		buffers = next;
-	}
-	return (buffers->number_of_buffers == PROFILER_CODE_BUFFER_ARRAY_SIZE);
-}
-
-static ProfilerCodeBufferArray*
-profiler_code_buffer_add (ProfilerCodeBufferArray *buffers, gpointer *buffer, int size, MonoProfilerCodeBufferType type, void *data) {
-	if (buffers == NULL) {
-		buffers = profiler_code_buffer_array_new (NULL);
-	}
-	
-	if (profiler_code_buffer_array_is_full (buffers)) {
-		ProfilerCodeBufferArray *new_slot = profiler_code_buffer_add (NULL, buffer, size, type, data);
-		buffers = profiler_code_buffer_array_new (buffers);
-		buffers->buffers [buffers->number_of_buffers].info.data.sub_buffers = new_slot;
-		buffers->buffers [buffers->number_of_buffers].start = new_slot->buffers [0].start;
-		buffers->buffers [buffers->number_of_buffers].end = new_slot->buffers [new_slot->number_of_buffers - 1].end;
-		buffers->number_of_buffers ++;
-	} else if (buffers->level > 0) {
-		ProfilerCodeBufferArray *new_slot = profiler_code_buffer_add (buffers->buffers [buffers->number_of_buffers - 1].info.data.sub_buffers, buffer, size, type, data);
-		buffers->buffers [buffers->number_of_buffers - 1].info.data.sub_buffers = new_slot;
-		buffers->buffers [buffers->number_of_buffers - 1].start = new_slot->buffers [0].start;
-		buffers->buffers [buffers->number_of_buffers - 1].end = new_slot->buffers [new_slot->number_of_buffers - 1].end;
-	} else {
-		buffers->buffers [buffers->number_of_buffers].start = buffer;
-		buffers->buffers [buffers->number_of_buffers].end = (((guint8*) buffer) + size);
-		buffers->buffers [buffers->number_of_buffers].info.type = type;
-		switch (type) {
-		case MONO_PROFILER_CODE_BUFFER_UNKNOWN:
-			buffers->buffers [buffers->number_of_buffers].info.data.data = NULL;
-			break;
-		case MONO_PROFILER_CODE_BUFFER_METHOD:
-			buffers->buffers [buffers->number_of_buffers].info.data.method = data;
-			break;
-		default:
-			buffers->buffers [buffers->number_of_buffers].info.type = MONO_PROFILER_CODE_BUFFER_UNKNOWN;
-			buffers->buffers [buffers->number_of_buffers].info.data.data = NULL;
-		}
-		buffers->number_of_buffers ++;
-	}
-	return buffers;
-}
-
-static ProfilerCodeBuffer*
-profiler_code_buffer_find (ProfilerCodeBufferArray *buffers, gpointer *address) {
-	if (buffers != NULL) {
-		ProfilerCodeBuffer *result = NULL;
-		do {
-			int low = 0;
-			int high = buffers->number_of_buffers - 1;
-			
-			while (high != low) {
-				int middle = low + ((high - low) >> 1);
-				
-				if ((guint8*) address < (guint8*) buffers->buffers [low].start) {
-					return NULL;
-				}
-				if ((guint8*) address >= (guint8*) buffers->buffers [high].end) {
-					return NULL;
-				}
-				
-				if ((guint8*) address < (guint8*) buffers->buffers [middle].start) {
-					high = middle - 1;
-					if (high < low) {
-						high = low;
-					}
-				} else if ((guint8*) address >= (guint8*) buffers->buffers [middle].end) {
-					low = middle + 1;
-					if (low > high) {
-						low = high;
-					}
-				} else {
-					high = middle;
-					low = middle;
-				}
-			}
-			
-			if (((guint8*) address >= (guint8*) buffers->buffers [low].start) && ((guint8*) address < (guint8*) buffers->buffers [low].end)) {
-				if (buffers->level == 0) {
-					result = & (buffers->buffers [low]);
-				} else {
-					buffers = buffers->buffers [low].info.data.sub_buffers;
-				}
-			} else {
-				return NULL;
-			}
-		} while (result == NULL);
-		return result;
-	} else {
-		return NULL;
-	}
-}
-
-static void
-profiler_code_chunk_initialize (ProfilerCodeChunk *chunk, gpointer memory, gsize size) {
-	chunk->buffers = profiler_code_buffer_array_new (NULL);
-	chunk->destroyed = FALSE;
-	chunk->start = memory;
-	chunk->end = ((guint8*)memory) + size;
-}
-
-static void
-profiler_code_chunk_cleanup (ProfilerCodeChunk *chunk) {
-	if (chunk->buffers != NULL) {
-		profiler_code_buffer_array_destroy (chunk->buffers);
-		chunk->buffers = NULL;
-	}
-	chunk->start = NULL;
-	chunk->end = NULL;
-}
-
-static void
-profiler_code_chunks_initialize (ProfilerCodeChunks *chunks) {
-	chunks->capacity = 32;
-	chunks->chunks = g_new0 (ProfilerCodeChunk, 32);
-	chunks->number_of_chunks = 0;
-}
-
-static void
-profiler_code_chunks_cleanup (ProfilerCodeChunks *chunks) {
-	int i;
-	for (i = 0; i < chunks->number_of_chunks; i++) {
-		profiler_code_chunk_cleanup (& (chunks->chunks [i]));
-	}
-	chunks->capacity = 0;
-	chunks->number_of_chunks = 0;
-	g_free (chunks->chunks);
-	chunks->chunks = NULL;
-}
-
-static int
-compare_code_chunks (const void* c1, const void* c2) {
-	ProfilerCodeChunk *chunk1 = (ProfilerCodeChunk*) c1;
-	ProfilerCodeChunk *chunk2 = (ProfilerCodeChunk*) c2;
-	return ((guint8*) chunk1->end < (guint8*) chunk2->start) ? -1 : (((guint8*) chunk1->start >= (guint8*) chunk2->end) ? 1 : 0);
-}
-
-static int
-compare_address_and_code_chunk (const void* a, const void* c) {
-	gpointer address = (gpointer) a;
-	ProfilerCodeChunk *chunk = (ProfilerCodeChunk*) c;
-	return ((guint8*) address < (guint8*) chunk->start) ? -1 : (((guint8*) address >= (guint8*) chunk->end) ? 1 : 0);
-}
-
-static void
-profiler_code_chunks_sort (ProfilerCodeChunks *chunks) {
-	qsort (chunks->chunks, chunks->number_of_chunks, sizeof (ProfilerCodeChunk), compare_code_chunks);
-}
-
-static ProfilerCodeChunk*
-profiler_code_chunk_find (ProfilerCodeChunks *chunks, gpointer address) {
-	return bsearch (address, chunks->chunks, chunks->number_of_chunks, sizeof (ProfilerCodeChunk), compare_address_and_code_chunk);
-}
-
-static ProfilerCodeChunk*
-profiler_code_chunk_new (ProfilerCodeChunks *chunks, gpointer memory, gsize size) {
-	ProfilerCodeChunk *result;
-	
-	if (chunks->number_of_chunks == chunks->capacity) {
-		ProfilerCodeChunk *new_chunks = g_new0 (ProfilerCodeChunk, chunks->capacity * 2);
-		memcpy (new_chunks, chunks->chunks, chunks->capacity * sizeof (ProfilerCodeChunk));
-		chunks->capacity *= 2;
-		g_free (chunks->chunks);
-		chunks->chunks = new_chunks;
-	}
-	
-	result = & (chunks->chunks [chunks->number_of_chunks]);
-	chunks->number_of_chunks ++;
-	profiler_code_chunk_initialize (result, memory, size);
-	profiler_code_chunks_sort (chunks);
-	return result;
-}
-
-static int
-profiler_code_chunk_to_index (ProfilerCodeChunks *chunks, ProfilerCodeChunk *chunk) {
-	return (int) (chunk - chunks->chunks);
-}
-
-static void
-profiler_code_chunk_remove (ProfilerCodeChunks *chunks, ProfilerCodeChunk *chunk) {
-	int index = profiler_code_chunk_to_index (chunks, chunk);
-	
-	profiler_code_chunk_cleanup (chunk);
-	if ((index >= 0) && (index < chunks->number_of_chunks)) {
-		memmove (chunk, chunk + 1, (chunks->number_of_chunks - index) * sizeof (ProfilerCodeChunk));
-	}
-}
-
-/* This assumes the profiler lock is held */
-static ProfilerCodeBuffer*
-profiler_code_buffer_from_address (MonoProfiler *prof, gpointer address) {
-	ProfilerCodeChunks *chunks = & (prof->code_chunks);
-	
-	ProfilerCodeChunk *chunk = profiler_code_chunk_find (chunks, address);
-	if (chunk != NULL) {
-		return profiler_code_buffer_find (chunk->buffers, address);
-	} else {
-		return NULL;
-	}
-}
-
-static void
-profiler_code_chunk_new_callback (MonoProfiler *prof, gpointer address, int size) {
-	ProfilerCodeChunks *chunks = & (prof->code_chunks);
-	
-	if (prof->code_chunks.chunks != NULL) {
-		LOCK_PROFILER ();
-		profiler_code_chunk_new (chunks, address, size);
-		UNLOCK_PROFILER ();
-	}
-}
-
-static void
-profiler_code_chunk_destroy_callback  (MonoProfiler *prof, gpointer address) {
-	ProfilerCodeChunks *chunks = & (prof->code_chunks);
-	ProfilerCodeChunk *chunk;
-	
-	if (prof->code_chunks.chunks != NULL) {
-		LOCK_PROFILER ();
-		chunk = profiler_code_chunk_find (chunks, address);
-		if (chunk != NULL) {
-			profiler_code_chunk_remove (chunks, chunk);
-		}
-		UNLOCK_PROFILER ();
-	}
-}
-
-static void
-profiler_code_buffer_new_callback  (MonoProfiler *prof, gpointer address, int size, MonoProfilerCodeBufferType type, void *data) {
-	ProfilerCodeChunks *chunks = & (prof->code_chunks);
-	ProfilerCodeChunk *chunk;
-	
-	if (prof->code_chunks.chunks != NULL) {
-		LOCK_PROFILER ();
-		chunk = profiler_code_chunk_find (chunks, address);
-		if (chunk != NULL) {
-			chunk->buffers = profiler_code_buffer_add (chunk->buffers, address, size, type, data);
-		}
-		UNLOCK_PROFILER ();
-	}
-}
-
-static void
-profiler_add_write_buffer (void) {
-	if (profiler->current_write_buffer->next == NULL) {
-		profiler->current_write_buffer->next = g_malloc (sizeof (ProfilerFileWriteBuffer) + PROFILER_FILE_WRITE_BUFFER_SIZE);
-		profiler->current_write_buffer->next->next = NULL;
-		
-		//printf ("Added next buffer %p, to buffer %p\n", profiler->current_write_buffer->next, profiler->current_write_buffer);
-		
-	}
-	profiler->current_write_buffer = profiler->current_write_buffer->next;
-	profiler->current_write_position = 0;
-	profiler->full_write_buffers ++;
-}
-
-static void
-profiler_free_write_buffers (void) {
-	ProfilerFileWriteBuffer *current_buffer = profiler->write_buffers;
-	while (current_buffer != NULL) {
-		ProfilerFileWriteBuffer *next_buffer = current_buffer->next;
-		
-		//printf ("Freeing write buffer %p, next is %p\n", current_buffer, next_buffer);
-		
-		g_free (current_buffer);
-		current_buffer = next_buffer;
-	}
-}
-
-#define WRITE_BYTE(b) do {\
-	if (profiler->current_write_position >= PROFILER_FILE_WRITE_BUFFER_SIZE) {\
-		profiler_add_write_buffer ();\
-	}\
-	profiler->current_write_buffer->buffer [profiler->current_write_position] = (b);\
-	profiler->current_write_position ++;\
-} while (0)
-
-#if (DEBUG_FILE_WRITES)
-static int bytes_written = 0;
-#endif
-
-static void
-write_current_block (guint16 code) {
-	guint32 size = (profiler->full_write_buffers * PROFILER_FILE_WRITE_BUFFER_SIZE) + profiler->current_write_position;
-	ProfilerFileWriteBuffer *current_buffer = profiler->write_buffers;
-	guint64 current_counter;
-	guint32 counter_delta;
-	guint8 header [10];
-	
-	MONO_PROFILER_GET_CURRENT_COUNTER (current_counter);
-	if (profiler->last_header_counter != 0) {
-		counter_delta = current_counter - profiler->last_header_counter;
-	} else {
-		counter_delta = 0;
-	}
-	profiler->last_header_counter = current_counter;
-	
-	header [0] = code & 0xff;
-	header [1] = (code >> 8) & 0xff;
-	header [2] = size & 0xff;
-	header [3] = (size >> 8) & 0xff;
-	header [4] = (size >> 16) & 0xff;
-	header [5] = (size >> 24) & 0xff;
-	header [6] = counter_delta & 0xff;
-	header [7] = (counter_delta >> 8) & 0xff;
-	header [8] = (counter_delta >> 16) & 0xff;
-	header [9] = (counter_delta >> 24) & 0xff;
-	
-#if (DEBUG_FILE_WRITES)
-	printf ("write_current_block: writing header (code %d) at offset %d\n", code, bytes_written);
-	bytes_written += 10;
-#endif
-	WRITE_BUFFER (& (header [0]), 10);
-	
-	while ((current_buffer != NULL) && (profiler->full_write_buffers > 0)) {
-#if (DEBUG_FILE_WRITES)
-		printf ("write_current_block: writing buffer (size %d)\n", PROFILER_FILE_WRITE_BUFFER_SIZE);
-		bytes_written += PROFILER_FILE_WRITE_BUFFER_SIZE;
-#endif
-		WRITE_BUFFER (& (current_buffer->buffer [0]), PROFILER_FILE_WRITE_BUFFER_SIZE);
-		profiler->full_write_buffers --;
-		current_buffer = current_buffer->next;
-	}
-	if (profiler->current_write_position > 0) {
-#if (DEBUG_FILE_WRITES)
-		printf ("write_current_block: writing last buffer (size %d)\n", profiler->current_write_position);
-		bytes_written += profiler->current_write_position;
-#endif
-		WRITE_BUFFER (& (current_buffer->buffer [0]), profiler->current_write_position);
-	}
-	FLUSH_FILE ();
-#if (DEBUG_FILE_WRITES)
-	printf ("write_current_block: buffers flushed (file size %d)\n", bytes_written);
-#endif
-	
-	profiler->current_write_buffer = profiler->write_buffers;
-	profiler->current_write_position = 0;
-	profiler->full_write_buffers = 0;
-}
-
-
-#define SEVEN_BITS_MASK (0x7f)
-#define EIGHT_BIT_MASK (0x80)
-
-static void
-write_uint32 (guint32 value) {
-	while (value > SEVEN_BITS_MASK) {
-		WRITE_BYTE (value & SEVEN_BITS_MASK);
-		value >>= 7;
-	}
-	WRITE_BYTE (value | EIGHT_BIT_MASK);
-}
-static void
-write_uint64 (guint64 value) {
-	while (value > SEVEN_BITS_MASK) {
-		WRITE_BYTE (value & SEVEN_BITS_MASK);
-		value >>= 7;
-	}
-	WRITE_BYTE (value | EIGHT_BIT_MASK);
-}
-static void
-write_string (const char *string) {
-	while (*string != 0) {
-		WRITE_BYTE (*string);
-		string ++;
-	}
-	WRITE_BYTE (0);
-}
-
-static void write_clock_data (void);
-static void
-write_directives_block (gboolean start) {
-	write_clock_data ();
-	
-	if (start) {
-		if (profiler->action_flags.save_allocation_caller) {
-			write_uint32 (MONO_PROFILER_DIRECTIVE_ALLOCATIONS_CARRY_CALLER);
-		}
-		if (profiler->action_flags.save_allocation_stack || profiler->action_flags.track_calls) {
-			write_uint32 (MONO_PROFILER_DIRECTIVE_ALLOCATIONS_HAVE_STACK);
-		}
-		if (profiler->action_flags.allocations_carry_id) {
-			write_uint32 (MONO_PROFILER_DIRECTIVE_ALLOCATIONS_CARRY_ID);
-		}
-		write_uint32 (MONO_PROFILER_DIRECTIVE_LOADED_ELEMENTS_CARRY_ID);
-		write_uint32 (MONO_PROFILER_DIRECTIVE_CLASSES_CARRY_ASSEMBLY_ID);
-		write_uint32 (MONO_PROFILER_DIRECTIVE_METHODS_CARRY_WRAPPER_FLAG);
-	}
-	write_uint32 (MONO_PROFILER_DIRECTIVE_END);
-	
-	write_clock_data ();
-	write_current_block (MONO_PROFILER_FILE_BLOCK_KIND_DIRECTIVES);
-}
-
-#if DEBUG_HEAP_PROFILER
-#define WRITE_HEAP_SHOT_JOB_VALUE_MESSAGE(v,c) printf ("WRITE_HEAP_SHOT_JOB_VALUE: writing value %p at cursor %p\n", (v), (c))
-#else
-#define WRITE_HEAP_SHOT_JOB_VALUE_MESSAGE(v,c)
-#endif
-#define WRITE_HEAP_SHOT_JOB_VALUE(j,v) do {\
-	if ((j)->cursor < (j)->end) {\
-		WRITE_HEAP_SHOT_JOB_VALUE_MESSAGE ((v), ((j)->cursor));\
-		*((j)->cursor) = (v);\
-		(j)->cursor ++;\
-	} else {\
-		profiler_heap_shot_write_job_add_buffer (j, v);\
-	}\
-} while (0)
-
-
-#undef GUINT_TO_POINTER
-#undef GPOINTER_TO_UINT
-#if (SIZEOF_VOID_P == 4)
-#define GUINT_TO_POINTER(u) ((void*)(guint32)(u))
-#define GPOINTER_TO_UINT(p) ((guint32)(void*)(p))
-#elif (SIZEOF_VOID_P == 8)
-#define GUINT_TO_POINTER(u) ((void*)(guint64)(u))
-#define GPOINTER_TO_UINT(p) ((guint64)(void*)(p))
-#else
-#error Bad size of void pointer
-#endif
-
-#define WRITE_HEAP_SHOT_JOB_VALUE_WITH_CODE(j,v,c) WRITE_HEAP_SHOT_JOB_VALUE (j, GUINT_TO_POINTER (GPOINTER_TO_UINT (v)|(c)))
-
-#if DEBUG_HEAP_PROFILER
-#define UPDATE_JOB_BUFFER_CURSOR_MESSAGE() printf ("profiler_heap_shot_write_block[UPDATE_JOB_BUFFER_CURSOR]: in job %p, moving to buffer %p and cursor %p\n", job, buffer, cursor)
-#else
-#define UPDATE_JOB_BUFFER_CURSOR_MESSAGE()
-#endif
-#define UPDATE_JOB_BUFFER_CURSOR() do {\
-	cursor++;\
-	if (cursor >= end) {\
-		buffer = buffer->next;\
-		if (buffer != NULL) {\
-			cursor = & (buffer->buffer [0]);\
-			if (buffer->next != NULL) {\
-				end = & (buffer->buffer [PROFILER_HEAP_SHOT_WRITE_BUFFER_SIZE]);\
-			} else {\
-				end = job->cursor;\
-			}\
-		} else {\
-			cursor = NULL;\
-		}\
-	}\
-	UPDATE_JOB_BUFFER_CURSOR_MESSAGE ();\
-} while (0)
-
-static void
-profiler_heap_shot_write_data_block (ProfilerHeapShotWriteJob *job) {
-	ProfilerHeapShotWriteBuffer *buffer;
-	gpointer* cursor;
-	gpointer* end;
-	guint64 start_counter;
-	guint64 start_time;
-	guint64 end_counter;
-	guint64 end_time;
-	
-	write_uint64 (job->start_counter);
-	write_uint64 (job->start_time);
-	write_uint64 (job->end_counter);
-	write_uint64 (job->end_time);
-	write_uint32 (job->collection);
-	MONO_PROFILER_GET_CURRENT_COUNTER (start_counter);
-	MONO_PROFILER_GET_CURRENT_TIME (start_time);
-	write_uint64 (start_counter);
-	write_uint64 (start_time);
-#if DEBUG_HEAP_PROFILER
-	printf ("profiler_heap_shot_write_data_block: start writing job %p (start %p, end %p)...\n", job, & (job->buffers->buffer [0]), job->cursor);
-#endif
-	buffer = job->buffers;
-	cursor = & (buffer->buffer [0]);
-	if (buffer->next != NULL) {
-		end = & (buffer->buffer [PROFILER_HEAP_SHOT_WRITE_BUFFER_SIZE]);
-	} else {
-		end = job->cursor;
-	}
-	if (cursor >= end) {
-		cursor = NULL;
-	}
-#if DEBUG_HEAP_PROFILER
-	printf ("profiler_heap_shot_write_data_block: in job %p, starting at buffer %p and cursor %p\n", job, buffer, cursor);
-#endif
-	while (cursor != NULL) {
-		gpointer value = *cursor;
-		HeapProfilerJobValueCode code = GPOINTER_TO_UINT (value) & HEAP_CODE_MASK;
-#if DEBUG_HEAP_PROFILER
-		printf ("profiler_heap_shot_write_data_block: got value %p and code %d\n", value, code);
-#endif
-		
-		UPDATE_JOB_BUFFER_CURSOR ();
-		if (code == HEAP_CODE_FREE_OBJECT_CLASS) {
-			MonoClass *klass = GUINT_TO_POINTER (GPOINTER_TO_UINT (value) & (~ (guint64) HEAP_CODE_MASK));
-			//MonoClass *klass = GUINT_TO_POINTER (GPOINTER_TO_UINT (value) % 4);
-			ClassIdMappingElement *class_id;
-			guint32 size;
-			
-			class_id = class_id_mapping_element_get (klass);
-			if (class_id == NULL) {
-				printf ("profiler_heap_shot_write_data_block: unknown class %p", klass);
-			}
-			g_assert (class_id != NULL);
-			write_uint32 ((class_id->id << 2) | HEAP_CODE_FREE_OBJECT_CLASS);
-			
-			size = GPOINTER_TO_UINT (*cursor);
-			UPDATE_JOB_BUFFER_CURSOR ();
-			write_uint32 (size);
-#if DEBUG_HEAP_PROFILER
-			printf ("profiler_heap_shot_write_data_block: wrote unreachable object of class %p (id %d, size %d)\n", klass, class_id->id, size);
-#endif
-		} else if (code == HEAP_CODE_OBJECT) {
-			MonoObject *object = GUINT_TO_POINTER (GPOINTER_TO_UINT (value) & (~ (guint64) HEAP_CODE_MASK));
-			MonoClass *klass = mono_object_get_class (object);
-			ClassIdMappingElement *class_id = class_id_mapping_element_get (klass);
-			guint32 size = mono_object_get_size (object);
-			guint32 references = GPOINTER_TO_UINT (*cursor);
-			UPDATE_JOB_BUFFER_CURSOR ();
-			
-			if (class_id == NULL) {
-				printf ("profiler_heap_shot_write_data_block: unknown class %p", klass);
-			}
-			g_assert (class_id != NULL);
-			
-			write_uint64 (GPOINTER_TO_UINT (value));
-			write_uint32 (class_id->id);
-			write_uint32 (size);
-			write_uint32 (references);
-#if DEBUG_HEAP_PROFILER
-			printf ("profiler_heap_shot_write_data_block: writing object %p (references %d)\n", value, references);
-#endif
-			
-			while (references > 0) {
-				gpointer reference = *cursor;
-				write_uint64 (GPOINTER_TO_UINT (reference));
-				UPDATE_JOB_BUFFER_CURSOR ();
-				references --;
-#if DEBUG_HEAP_PROFILER
-				printf ("profiler_heap_shot_write_data_block:   inside object %p, wrote reference %p)\n", value, reference);
-#endif
-			}
-		} else {
-#if DEBUG_HEAP_PROFILER
-			printf ("profiler_heap_shot_write_data_block: unknown code %d in value %p\n", code, value);
-#endif
-			g_assert_not_reached ();
-		}
-	}
-	write_uint32 (0);
-	
-	MONO_PROFILER_GET_CURRENT_COUNTER (end_counter);
-	MONO_PROFILER_GET_CURRENT_TIME (end_time);
-	write_uint64 (end_counter);
-	write_uint64 (end_time);
-	
-	write_current_block (MONO_PROFILER_FILE_BLOCK_KIND_HEAP_DATA);
-#if DEBUG_HEAP_PROFILER
-	printf ("profiler_heap_shot_write_data_block: writing job %p done.\n", job);
-#endif
-}
-static void
-profiler_heap_shot_write_summary_block (ProfilerHeapShotWriteJob *job) {
-	guint64 start_counter;
-	guint64 start_time;
-	guint64 end_counter;
-	guint64 end_time;
-	int id;
-	
-#if DEBUG_HEAP_PROFILER
-	printf ("profiler_heap_shot_write_summary_block: start writing job %p...\n", job);
-#endif
-	MONO_PROFILER_GET_CURRENT_COUNTER (start_counter);
-	MONO_PROFILER_GET_CURRENT_TIME (start_time);
-	write_uint64 (start_counter);
-	write_uint64 (start_time);
-	
-	write_uint32 (job->collection);
-	
-	for (id = 0; id < job->summary.capacity; id ++) {
-		if ((job->summary.per_class_data [id].reachable.instances > 0) || (job->summary.per_class_data [id].unreachable.instances > 0)) {
-			write_uint32 (id);
-			write_uint32 (job->summary.per_class_data [id].reachable.instances);
-			write_uint32 (job->summary.per_class_data [id].reachable.bytes);
-			write_uint32 (job->summary.per_class_data [id].unreachable.instances);
-			write_uint32 (job->summary.per_class_data [id].unreachable.bytes);
-		}
-	}
-	write_uint32 (0);
-	
-	MONO_PROFILER_GET_CURRENT_COUNTER (end_counter);
-	MONO_PROFILER_GET_CURRENT_TIME (end_time);
-	write_uint64 (end_counter);
-	write_uint64 (end_time);
-	
-	write_current_block (MONO_PROFILER_FILE_BLOCK_KIND_HEAP_SUMMARY);
-#if DEBUG_HEAP_PROFILER
-	printf ("profiler_heap_shot_write_summary_block: writing job %p done.\n", job);
-#endif
-}
-
-static void
-profiler_heap_shot_write_block (ProfilerHeapShotWriteJob *job) {
-#if DEBUG_HEAP_PROFILER
-	printf ("profiler_heap_shot_write_block: working on job %p...\n", job);
-#endif
-	
-	if (profiler->action_flags.collection_summary == TRUE) {
-		profiler_heap_shot_write_summary_block (job);
-	}
-	
-	if ((profiler->action_flags.unreachable_objects == TRUE) || (profiler->action_flags.heap_shot == TRUE)) {
-		profiler_heap_shot_write_data_block (job);
-	}
-	
-	profiler_heap_shot_write_job_free_buffers (job);
-#if DEBUG_HEAP_PROFILER
-	printf ("profiler_heap_shot_write_block: work on job %p done.\n", job);
-#endif
-}
-
-static void
-write_element_load_block (LoadedElement *element, guint8 kind, gsize thread_id, gpointer item) {
-	WRITE_BYTE (kind);
-	write_uint64 (element->load_start_counter);
-	write_uint64 (element->load_end_counter);
-	write_uint64 (thread_id);
-	write_uint32 (element->id);
-	write_string (element->name);
-	if (kind & MONO_PROFILER_LOADED_EVENT_ASSEMBLY) {
-		MonoImage *image = mono_assembly_get_image ((MonoAssembly*) item);
-		MonoAssemblyName aname;
-		if (mono_assembly_fill_assembly_name (image, &aname)) {
-			write_string (aname.name);
-			write_uint32 (aname.major);
-			write_uint32 (aname.minor);
-			write_uint32 (aname.build);
-			write_uint32 (aname.revision);
-			write_string (aname.culture && *aname.culture? aname.culture: "neutral");
-			write_string (aname.public_key_token [0] ? (char *)aname.public_key_token : "null");
-			/* Retargetable flag */
-			write_uint32 ((aname.flags & 0x00000100) ? 1 : 0);
-		} else {
-			write_string ("UNKNOWN");
-			write_uint32 (0);
-			write_uint32 (0);
-			write_uint32 (0);
-			write_uint32 (0);
-			write_string ("neutral");
-			write_string ("null");
-			write_uint32 (0);
-		}
-	}
-	write_current_block (MONO_PROFILER_FILE_BLOCK_KIND_LOADED);
-	element->load_written = TRUE;
-}
-
-static void
-write_element_unload_block (LoadedElement *element, guint8 kind, gsize thread_id) {
-	WRITE_BYTE (kind);
-	write_uint64 (element->unload_start_counter);
-	write_uint64 (element->unload_end_counter);
-	write_uint64 (thread_id);
-	write_uint32 (element->id);
-	write_string (element->name);
-	write_current_block (MONO_PROFILER_FILE_BLOCK_KIND_UNLOADED);
-	element->unload_written = TRUE;
-}
-
-static void
-write_clock_data (void) {
-	guint64 counter;
-	guint64 time;
-	
-	MONO_PROFILER_GET_CURRENT_COUNTER (counter);
-	MONO_PROFILER_GET_CURRENT_TIME (time);
-	
-	write_uint64 (counter);
-	write_uint64 (time);
-}
-
-static void
-write_mapping_block (gsize thread_id) {
-	ClassIdMappingElement *current_class;
-	MethodIdMappingElement *current_method;
-	
-	if ((profiler->classes->unwritten == NULL) && (profiler->methods->unwritten == NULL))
-		return;
-	
-#if (DEBUG_MAPPING_EVENTS || DEBUG_FILE_WRITES)
-	printf ("[write_mapping_block][TID %ld] START\n", thread_id);
-#endif
-	
-	write_clock_data ();
-	write_uint64 (thread_id);
-	
-	for (current_class = profiler->classes->unwritten; current_class != NULL; current_class = current_class->next_unwritten) {
-		MonoImage *image = mono_class_get_image (current_class->klass);
-		MonoAssembly *assembly = mono_image_get_assembly (image);
-		guint32 assembly_id = loaded_element_get_id (profiler->loaded_assemblies, assembly);
-		write_uint32 (current_class->id);
-		write_uint32 (assembly_id);
-		write_string (current_class->name);
-#if (DEBUG_MAPPING_EVENTS)
-		printf ("mapping CLASS (%d => %s)\n", current_class->id, current_class->name);
-#endif
-		g_free (current_class->name);
-		current_class->name = NULL;
-	}
-	write_uint32 (0);
-	profiler->classes->unwritten = NULL;
-	
-	for (current_method = profiler->methods->unwritten; current_method != NULL; current_method = current_method->next_unwritten) {
-		MonoMethod *method = current_method->method;
-		MonoClass *klass = mono_method_get_class (method);
-		ClassIdMappingElement *class_element = class_id_mapping_element_get (klass);
-		g_assert (class_element != NULL);
-		write_uint32 (current_method->id);
-		write_uint32 (class_element->id);
-		if (method->wrapper_type != 0) {
-			write_uint32 (1);
-		} else {
-			write_uint32 (0);
-		}
-		write_string (current_method->name);
-#if (DEBUG_MAPPING_EVENTS)
-		printf ("mapping METHOD ([%d]%d => %s)\n", class_element?class_element->id:1, current_method->id, current_method->name);
-#endif
-		g_free (current_method->name);
-		current_method->name = NULL;
-	}
-	write_uint32 (0);
-	profiler->methods->unwritten = NULL;
-	
-	write_clock_data ();
-	write_current_block (MONO_PROFILER_FILE_BLOCK_KIND_MAPPING);
-	
-#if (DEBUG_MAPPING_EVENTS || DEBUG_FILE_WRITES)
-	printf ("[write_mapping_block][TID %ld] END\n", thread_id);
-#endif
-}
-
-typedef enum {
-	MONO_PROFILER_PACKED_EVENT_CODE_METHOD_ENTER = 1,
-	MONO_PROFILER_PACKED_EVENT_CODE_METHOD_EXIT_IMPLICIT = 2,
-	MONO_PROFILER_PACKED_EVENT_CODE_METHOD_EXIT_EXPLICIT = 3,
-	MONO_PROFILER_PACKED_EVENT_CODE_CLASS_ALLOCATION = 4,
-	MONO_PROFILER_PACKED_EVENT_CODE_METHOD_EVENT = 5,
-	MONO_PROFILER_PACKED_EVENT_CODE_CLASS_EVENT = 6,
-	MONO_PROFILER_PACKED_EVENT_CODE_OTHER_EVENT = 7
-} MonoProfilerPackedEventCode;
-#define MONO_PROFILER_PACKED_EVENT_CODE_BITS 3
-#define MONO_PROFILER_PACKED_EVENT_DATA_BITS (8-MONO_PROFILER_PACKED_EVENT_CODE_BITS)
-#define MONO_PROFILER_PACKED_EVENT_DATA_MASK ((1<<MONO_PROFILER_PACKED_EVENT_DATA_BITS)-1)
-
-#define MONO_PROFILER_EVENT_MAKE_PACKED_CODE(result,data,base) do {\
-	result = ((base)|((data & MONO_PROFILER_PACKED_EVENT_DATA_MASK) << MONO_PROFILER_PACKED_EVENT_CODE_BITS));\
-	data >>= MONO_PROFILER_PACKED_EVENT_DATA_BITS;\
-} while (0)
-#define MONO_PROFILER_EVENT_MAKE_FULL_CODE(result,code,kind,base) do {\
-	result = ((base)|((((kind)<<4) | (code)) << MONO_PROFILER_PACKED_EVENT_CODE_BITS));\
-} while (0)
-
-static void
-rewrite_last_written_stack (ProfilerThreadStack *stack) {
-	guint8 event_code;
-	int i = thread_stack_get_last_written_frame (stack);
-	
-	MONO_PROFILER_EVENT_MAKE_FULL_CODE (event_code, MONO_PROFILER_EVENT_STACK_SECTION, 0, MONO_PROFILER_PACKED_EVENT_CODE_OTHER_EVENT);
-	WRITE_BYTE (event_code);
-	write_uint32 (0);
-	write_uint32 (i);
-	
-	while (i > 0) {
-		i--;
-		write_uint32 (thread_stack_written_frame_at_index (stack, i));
-	}
-}
-
-
-static ProfilerEventData*
-write_stack_section_event (ProfilerEventData *events, ProfilerPerThreadData *data) {
-	int last_saved_frame = events->data.number;
-	int saved_frames = events->value;
-	guint8 event_code;
-	int i;
-	
-	MONO_PROFILER_EVENT_MAKE_FULL_CODE (event_code, MONO_PROFILER_EVENT_STACK_SECTION, 0, MONO_PROFILER_PACKED_EVENT_CODE_OTHER_EVENT);
-	WRITE_BYTE (event_code);
-	write_uint32 (last_saved_frame);
-	write_uint32 (saved_frames);
-	thread_stack_set_last_written_frame (&(data->stack), last_saved_frame + saved_frames);
-	events++;
-	
-	for (i = 0; i < saved_frames; i++) {
-		guint8 code = events->code;
-		guint32 jit_flag;
-		MethodIdMappingElement *method;
-		guint32 frame_value;
-		
-		if (code == MONO_PROFILER_EVENT_METHOD_ALLOCATION_CALLER) {
-			jit_flag = 0;
-		} else if (code == MONO_PROFILER_EVENT_METHOD_ALLOCATION_JIT_TIME_CALLER) {
-			jit_flag = 1;
-		} else {
-			g_assert_not_reached ();
-			jit_flag = 0;
-		}
-		
-		method = method_id_mapping_element_get (events->data.address);
-		g_assert (method != NULL);
-		frame_value = (method->id << 1) | jit_flag;
-		write_uint32 (frame_value);
-		thread_stack_write_frame_at_index (&(data->stack), last_saved_frame + saved_frames - (1 + i), frame_value);
-		events ++;
-	}
-	
-	return events;
-}
-
-static ProfilerEventData*
-write_event (ProfilerEventData *event, ProfilerPerThreadData *data) {
-	ProfilerEventData *next = event + 1;
-	gboolean write_event_value = TRUE;
-	guint8 event_code;
-	guint64 event_data;
-	guint64 event_value;
-	gboolean write_event_value_extension_1 = FALSE;
-	guint64 event_value_extension_1 = 0;
-	gboolean write_event_value_extension_2 = FALSE;
-	guint64 event_value_extension_2 = 0;
-
-	event_value = event->value;
-	if (event_value == MAX_EVENT_VALUE) {
-		event_value = *((guint64*)next);
-		next ++;
-	}
-	
-	if (event->data_type == MONO_PROFILER_EVENT_DATA_TYPE_METHOD) {
-		MethodIdMappingElement *element = method_id_mapping_element_get (event->data.address);
-		g_assert (element != NULL);
-		event_data = element->id;
-		
-		if (event->code == MONO_PROFILER_EVENT_METHOD_CALL) {
-			if (event->kind == MONO_PROFILER_EVENT_KIND_START) {
-				MONO_PROFILER_EVENT_MAKE_PACKED_CODE (event_code, event_data, MONO_PROFILER_PACKED_EVENT_CODE_METHOD_ENTER);
-			} else {
-				MONO_PROFILER_EVENT_MAKE_PACKED_CODE (event_code, event_data, MONO_PROFILER_PACKED_EVENT_CODE_METHOD_EXIT_EXPLICIT);
-			}
-		} else {
-			MONO_PROFILER_EVENT_MAKE_FULL_CODE (event_code, event->code, event->kind, MONO_PROFILER_PACKED_EVENT_CODE_METHOD_EVENT); 
-		}
-	} else if (event->data_type == MONO_PROFILER_EVENT_DATA_TYPE_CLASS) {
-		ClassIdMappingElement *element = class_id_mapping_element_get (event->data.address);
-		g_assert (element != NULL);
-		event_data = element->id;
-		
-		if (event->code == MONO_PROFILER_EVENT_CLASS_ALLOCATION) {
-			if ((! profiler->action_flags.save_allocation_caller) || (! (next->code == MONO_PROFILER_EVENT_METHOD_ALLOCATION_JIT_TIME_CALLER))) {
-				MONO_PROFILER_EVENT_MAKE_PACKED_CODE (event_code, event_data, MONO_PROFILER_PACKED_EVENT_CODE_CLASS_ALLOCATION);
-			} else {
-				MONO_PROFILER_EVENT_MAKE_FULL_CODE (event_code, MONO_PROFILER_EVENT_JIT_TIME_ALLOCATION, event->kind, MONO_PROFILER_PACKED_EVENT_CODE_OTHER_EVENT);
-			}
-			
-			if (profiler->action_flags.save_allocation_caller) {
-				MonoMethod *caller_method = next->data.address;
-				
-				if ((next->code != MONO_PROFILER_EVENT_METHOD_ALLOCATION_CALLER) && (next->code != MONO_PROFILER_EVENT_METHOD_ALLOCATION_JIT_TIME_CALLER)) {
-					g_assert_not_reached ();
-				}
-				
-				if (caller_method != NULL) {
-					MethodIdMappingElement *caller = method_id_mapping_element_get (caller_method);
-					g_assert (caller != NULL);
-					event_value_extension_1 = caller->id;
-				}
-
-				write_event_value_extension_1 = TRUE;
-				next ++;
-			}
-			
-			if (profiler->action_flags.allocations_carry_id) {
-				event_value_extension_2  = GPOINTER_TO_UINT (next->data.address);
-				
-				if (next->code != MONO_PROFILER_EVENT_ALLOCATION_OBJECT_ID) {
-					g_assert_not_reached ();
-				}
-				
-				write_event_value_extension_2 = TRUE;
-				next ++;
-			}
-		} else if (event->code == MONO_PROFILER_EVENT_CLASS_MONITOR) {
-			g_assert (next->code == MONO_PROFILER_EVENT_OBJECT_MONITOR);
-			
-			MONO_PROFILER_EVENT_MAKE_FULL_CODE (event_code, event->code, event->kind, MONO_PROFILER_PACKED_EVENT_CODE_CLASS_EVENT);
-			event_value_extension_1 = next->value;
-			write_event_value_extension_1 = TRUE;
-			event_value_extension_2  = GPOINTER_TO_UINT (next->data.address);
-			write_event_value_extension_2 = TRUE;
-			next ++;
-		} else {
-			MONO_PROFILER_EVENT_MAKE_FULL_CODE (event_code, event->code, event->kind, MONO_PROFILER_PACKED_EVENT_CODE_CLASS_EVENT);
-		}
-	} else {
-		if (event->code == MONO_PROFILER_EVENT_STACK_SECTION) {
-			return write_stack_section_event (event, data);
-		} else {
-			event_data = event->data.number;
-			MONO_PROFILER_EVENT_MAKE_FULL_CODE (event_code, event->code, event->kind, MONO_PROFILER_PACKED_EVENT_CODE_OTHER_EVENT);
-		}
-	}
-	
-	/* Skip writing JIT events if the user did not ask for them */
-	if ((event->code == MONO_PROFILER_EVENT_METHOD_JIT) && ! profiler->action_flags.jit_time) {
-		return next;
-	}
-	
-#if (DEBUG_LOGGING_PROFILER)
-	EVENT_MARK ();
-	printf ("writing EVENT[%p] data_type:%d, kind:%d, code:%d (%d:%ld:%ld)\n", event,
-			event->data_type, event->kind, event->code,
-			event_code, event_data, event_value);
-#endif
-	
-	WRITE_BYTE (event_code);
-	write_uint64 (event_data);
-	if (write_event_value) {
-		write_uint64 (event_value);
-		if (write_event_value_extension_1) {
-			write_uint64 (event_value_extension_1);
-		}
-		if (write_event_value_extension_2) {
-			write_uint64 (event_value_extension_2);
-		}
-	}
-	
-	return next;
-}
-
-static void
-write_thread_data_block (ProfilerPerThreadData *data) {
-	ProfilerEventData *start = data->first_unwritten_event;
-	ProfilerEventData *end = data->first_unmapped_event;
-	
-	if (start == end)
-		return;
-#if (DEBUG_FILE_WRITES)
-	printf ("write_thread_data_block: preparing buffer for thread %ld\n", (guint64) data->thread_id);
-#endif
-	write_clock_data ();
-	write_uint64 (data->thread_id);
-	
-	write_uint64 (data->start_event_counter);
-	
-	/* If we are tracking the stack, make sure that stack sections */
-	/* can be fully reconstructed even reading only one block */
-	if (profiler->action_flags.track_stack) {
-		rewrite_last_written_stack (&(data->stack));
-	}
-	
-	while (start < end) {
-		start = write_event (start, data);
-	}
-	WRITE_BYTE (0);
-	data->first_unwritten_event = end;
-	
-	write_clock_data ();
-	write_current_block (MONO_PROFILER_FILE_BLOCK_KIND_EVENTS);
-#if (DEBUG_FILE_WRITES)
-	printf ("write_thread_data_block: buffer for thread %ld written\n", (guint64) data->thread_id);
-#endif
-}
-
-static ProfilerExecutableMemoryRegionData*
-profiler_executable_memory_region_new (gpointer *start, gpointer *end, guint32 file_offset, char *file_name, guint32 id) {
-	ProfilerExecutableMemoryRegionData *result = g_new (ProfilerExecutableMemoryRegionData, 1);
-	result->start = start;
-	result->end = end;
-	result->file_offset = file_offset;
-	result->file_name = g_strdup (file_name);
-	result->id = id;
-	result->is_new = TRUE;
-	
-	result->file = NULL;
-	result->file_region_reference = NULL;
-	result->symbols_capacity = id;
-	result->symbols_count = id;
-	result->symbols = NULL;
-	
-	return result;
-}
-
-static void
-executable_file_close (ProfilerExecutableMemoryRegionData *region);
-
-static void
-profiler_executable_memory_region_destroy (ProfilerExecutableMemoryRegionData *data) {
-	if (data->file != NULL) {
-		executable_file_close (data);
-		data->file = NULL;
-	}
-	if (data->symbols != NULL) {
-		g_free (data->symbols);
-		data->symbols = NULL;
-	}
-	if (data->file_name != NULL) {
-		g_free (data->file_name);
-		data->file_name = NULL;
-	}
-	g_free (data);
-}
-
-static ProfilerExecutableMemoryRegions*
-profiler_executable_memory_regions_new (int next_id, int next_unmanaged_function_id) {
-	ProfilerExecutableMemoryRegions *result = g_new (ProfilerExecutableMemoryRegions, 1);
-	result->regions = g_new0 (ProfilerExecutableMemoryRegionData*, 32);
-	result->regions_capacity = 32;
-	result->regions_count = 0;
-	result->next_id = next_id;
-	result->next_unmanaged_function_id = next_unmanaged_function_id;
-	return result;
-}
-
-static void
-profiler_executable_memory_regions_destroy (ProfilerExecutableMemoryRegions *regions) {
-	int i;
-	
-	for (i = 0; i < regions->regions_count; i++) {
-		profiler_executable_memory_region_destroy (regions->regions [i]);
-	}
-	g_free (regions->regions);
-	g_free (regions);
-}
-
-static ProfilerExecutableMemoryRegionData*
-find_address_region (ProfilerExecutableMemoryRegions *regions, gpointer address) {
-	int low_index = 0;
-	int high_index = regions->regions_count;
-	int middle_index = 0;
-	ProfilerExecutableMemoryRegionData *middle_region = regions->regions [0];
-	
-	if ((regions->regions_count == 0) || (regions->regions [low_index]->start > address) || (regions->regions [high_index - 1]->end < address)) {
-		return NULL;
-	}
-	
-	//printf ("find_address_region: Looking for address %p in %d regions (from %p to %p)\n", address, regions->regions_count, regions->regions [low_index]->start, regions->regions [high_index - 1]->end);
-	
-	while (low_index != high_index) {
-		middle_index = low_index + ((high_index - low_index) / 2);
-		middle_region = regions->regions [middle_index];
-		
-		//printf ("find_address_region: Looking for address %p, considering index %d[%p-%p] (%d-%d)\n", address, middle_index, middle_region->start, middle_region->end, low_index, high_index);
-		
-		if (middle_region->start > address) {
-			if (middle_index > 0) {
-				high_index = middle_index;
-			} else {
-				return NULL;
-			}
-		} else if (middle_region->end < address) {
-			if (middle_index < regions->regions_count - 1) {
-				low_index = middle_index + 1;
-			} else {
-				return NULL;
-			}
-		} else {
-			return middle_region;
-		}
-	}
-	
-	if ((middle_region == NULL) || (middle_region->start > address) || (middle_region->end < address)) {
-		return NULL;
-	} else {
-		return middle_region;
-	}
-}
-
-static void
-append_region (ProfilerExecutableMemoryRegions *regions, gpointer *start, gpointer *end, guint32 file_offset, char *file_name) {
-	if (regions->regions_count >= regions->regions_capacity) {
-		ProfilerExecutableMemoryRegionData **new_regions = g_new0 (ProfilerExecutableMemoryRegionData*, regions->regions_capacity * 2);
-		memcpy (new_regions, regions->regions, regions->regions_capacity * sizeof (ProfilerExecutableMemoryRegionData*));
-		g_free (regions->regions);
-		regions->regions = new_regions;
-		regions->regions_capacity = regions->regions_capacity * 2;
-	}
-	regions->regions [regions->regions_count] = profiler_executable_memory_region_new (start, end, file_offset, file_name, regions->next_id);
-	regions->regions_count ++;
-	regions->next_id ++;
-}
-
-static gboolean
-regions_are_equivalent (ProfilerExecutableMemoryRegionData *region1, ProfilerExecutableMemoryRegionData *region2) {
-	if ((region1->start == region2->start) &&
-			(region1->end == region2->end) &&
-			(region1->file_offset == region2->file_offset) &&
-			! strcmp (region1->file_name, region2->file_name)) {
-		return TRUE;
-	} else {
-		return FALSE;
-	}
-}
-
-static int
-compare_regions (const void *a1, const void *a2) {
-	ProfilerExecutableMemoryRegionData *r1 = * (ProfilerExecutableMemoryRegionData**) a1;
-	ProfilerExecutableMemoryRegionData *r2 = * (ProfilerExecutableMemoryRegionData**) a2;
-	return (r1->start < r2->start)? -1 : ((r1->start > r2->start)? 1 : 0);
-}
-
-static void
-restore_old_regions (ProfilerExecutableMemoryRegions *old_regions, ProfilerExecutableMemoryRegions *new_regions) {
-	int old_i;
-	int new_i;
-	
-	for (new_i = 0; new_i < new_regions->regions_count; new_i++) {
-		ProfilerExecutableMemoryRegionData *new_region = new_regions->regions [new_i];
-		for (old_i = 0; old_i < old_regions->regions_count; old_i++) {
-			ProfilerExecutableMemoryRegionData *old_region = old_regions->regions [old_i];
-			if ( regions_are_equivalent (old_region, new_region)) {
-				new_regions->regions [new_i] = old_region;
-				old_regions->regions [old_i] = new_region;
-				
-				// FIXME (sanity check)
-				g_assert (new_region->is_new && ! old_region->is_new);
-			}
-		}
-	}
-}
-
-static void
-sort_regions (ProfilerExecutableMemoryRegions *regions) {
-	if (regions->regions_count > 1) {
-		int i;
-		
-		qsort (regions->regions, regions->regions_count, sizeof (ProfilerExecutableMemoryRegionData *), compare_regions);
-		
-		i = 1;
-		while (i < regions->regions_count) {
-			ProfilerExecutableMemoryRegionData *current_region = regions->regions [i];
-			ProfilerExecutableMemoryRegionData *previous_region = regions->regions [i - 1];
-			
-			if (regions_are_equivalent (previous_region, current_region)) {
-				int j;
-				
-				if (! current_region->is_new) {
-					profiler_executable_memory_region_destroy (previous_region);
-					regions->regions [i - 1] = current_region;
-				} else {
-					profiler_executable_memory_region_destroy (current_region);
-				}
-				
-				for (j = i + 1; j < regions->regions_count; j++) {
-					regions->regions [j - 1] = regions->regions [j];
-				}
-				
-				regions->regions_count --;
-			} else {
-				i++;
-			}
-		}
-	}
-}
-
-static void
-fix_region_references (ProfilerExecutableMemoryRegions *regions) {
-	int i;
-	for (i = 0; i < regions->regions_count; i++) {
-		ProfilerExecutableMemoryRegionData *region = regions->regions [i];
-		if (region->file_region_reference != NULL) {
-			region->file_region_reference->region = region;
-		}
-	}
-}
-
-static void
-executable_file_add_region_reference (ProfilerExecutableFile *file, ProfilerExecutableMemoryRegionData *region) {
-	guint8 *section_headers = file->data + file->header->e_shoff;
-	int section_index;
-	
-	for (section_index = 1; section_index < file->header->e_shnum; section_index ++) {
-		ElfSection *section_header = (ElfSection*) (section_headers + (file->header->e_shentsize * section_index));
-		
-		if ((section_header->sh_addr != 0) && (section_header->sh_flags & ELF_SHF_EXECINSTR) &&
-				(region->file_offset <= section_header->sh_offset) && (region->file_offset + (((guint8*)region->end)-((guint8*)region->start)) >= (section_header->sh_offset + section_header->sh_size))) {
-			ProfilerExecutableFileSectionRegion *section_region = & (file->section_regions [section_index]);
-			section_region->region = region;
-			section_region->section_address = (gpointer) section_header->sh_addr;
-			section_region->section_offset = section_header->sh_offset;
-			region->file_region_reference = section_region;
-		}
-	}
-}
-
-static gboolean check_elf_header (ElfHeader* header) {
-	guint16 test = 0x0102;
-	
-	if ((header->e_ident [EI_MAG0] != 0x7f) || (header->e_ident [EI_MAG1] != 'E') ||
-			(header->e_ident [EI_MAG2] != 'L') || (header->e_ident [EI_MAG3] != 'F')) {
-		return FALSE;
-	}
-
-	if (sizeof (gsize) == 4) {
-		if (header->e_ident [EI_CLASS] != ELF_CLASS_32) {
-			g_warning ("Class is not ELF_CLASS_32 with gsize size %d", (int) sizeof (gsize));
-			return FALSE;
-		}
-	} else if (sizeof (gsize) == 8) {
-		if (header->e_ident [EI_CLASS] != ELF_CLASS_64) {
-			g_warning ("Class is not ELF_CLASS_64 with gsize size %d", (int) sizeof (gsize));
-			return FALSE;
-		}
-	} else {
-		g_warning ("Absurd gsize size %d", (int) sizeof (gsize));
-		return FALSE;
-	}
-
-	if ((*(guint8*)(&test)) == 0x01) {
-		if (header->e_ident [EI_DATA] != ELF_DATA_MSB) {
-			g_warning ("Data is not ELF_DATA_MSB with first test byte 0x01");
-			return FALSE;
-		}
-	} else if ((*(guint8*)(&test)) == 0x02) {
-		if (header->e_ident [EI_DATA] != ELF_DATA_LSB) {
-			g_warning ("Data is not ELF_DATA_LSB with first test byte 0x02");
-			return FALSE;
-		}
-	} else {
-		g_warning ("Absurd test byte value");
-		return FALSE;
-	}
-	
-	return TRUE;
-}
-
-static gboolean check_elf_file (int fd) {
-	void *header = malloc (sizeof (ElfHeader));
-	ssize_t read_result = read (fd, header, sizeof (ElfHeader));
-	gboolean result;
-	
-	if (read_result != sizeof (ElfHeader)) {
-		result = FALSE;
-	} else {
-		result = check_elf_header ((ElfHeader*) header);
-	}
-	
-	free (header);
-	return result;
-}
-
-static ProfilerExecutableFile*
-executable_file_open (ProfilerExecutableMemoryRegionData *region) {
-	ProfilerExecutableFiles *files = & (profiler->executable_files);
-	ProfilerExecutableFile *file = region->file;
-	
-	if (file == NULL) {
-		file = (ProfilerExecutableFile*) g_hash_table_lookup (files->table, region->file_name);
-		
-		if (file == NULL) {
-			struct stat stat_buffer;
-			int symtab_index = 0;
-			int strtab_index = 0;
-			int dynsym_index = 0;
-			int dynstr_index = 0;
-			ElfHeader *header;
-			guint8 *section_headers;
-			int section_index;
-			int strings_index;
-			
-			file = g_new0 (ProfilerExecutableFile, 1);
-			region->file = file;
-			g_hash_table_insert (files->table, region->file_name, file);
-			file->reference_count ++;
-			file->next_new_file = files->new_files;
-			files->new_files = file;
-			
-			file->fd = open (region->file_name, O_RDONLY);
-			if (file->fd == -1) {
-				//g_warning ("Cannot open file '%s': '%s'", region->file_name, strerror (errno));
-				return file;
-			} else {
-				if (fstat (file->fd, &stat_buffer) != 0) {
-					//g_warning ("Cannot stat file '%s': '%s'", region->file_name, strerror (errno));
-					return file;
-				} else if (! check_elf_file (file->fd)) {
-					return file;
-				} else {
-					size_t region_length = ((guint8*)region->end) - ((guint8*)region->start);
-					file->length = stat_buffer.st_size;
-					
-					if (file->length == region_length) {
-						file->data = region->start;
-						close (file->fd);
-						file->fd = -1;
-					} else {
-						file->data = mmap (NULL, file->length, PROT_READ, MAP_PRIVATE, file->fd, 0);
-						
-						if (file->data == MAP_FAILED) {
-							close (file->fd);
-							//g_warning ("Cannot map file '%s': '%s'", region->file_name, strerror (errno));
-							file->data = NULL;
-							return file;
-						}
-					}
-				}
-			}
-			
-			/* OK, this is a usable elf file, and we mmapped it... */
-			header = (ElfHeader*) file->data;
-			file->header = header;
-			section_headers = file->data + file->header->e_shoff;
-			file->main_string_table = ((const char*) file->data) + (((ElfSection*) (section_headers + (header->e_shentsize * header->e_shstrndx)))->sh_offset);
-			
-			for (section_index = 0; section_index < header->e_shnum; section_index ++) {
-				ElfSection *section_header = (ElfSection*) (section_headers + (header->e_shentsize * section_index));
-				
-				if (section_header->sh_type == ELF_SHT_SYMTAB) {
-					symtab_index = section_index;
-				} else if (section_header->sh_type == ELF_SHT_DYNSYM) {
-					dynsym_index = section_index;
-				} else if (section_header->sh_type == ELF_SHT_STRTAB) {
-					if (! strcmp (file->main_string_table + section_header->sh_name, ".strtab")) {
-						strtab_index = section_index;
-					} else if (! strcmp (file->main_string_table + section_header->sh_name, ".dynstr")) {
-						dynstr_index = section_index;
-					}
-				}
-			}
-			
-			if ((symtab_index != 0) && (strtab_index != 0)) {
-				section_index = symtab_index;
-				strings_index = strtab_index;
-			} else if ((dynsym_index != 0) && (dynstr_index != 0)) {
-				section_index = dynsym_index;
-				strings_index = dynstr_index;
-			} else {
-				section_index = 0;
-				strings_index = 0;
-			}
-			
-			if (section_index != 0) {
-				ElfSection *section_header = (ElfSection*) (section_headers + (header->e_shentsize * section_index));
-				file->symbol_size = section_header->sh_entsize;
-				file->symbols_count = (guint32) (section_header->sh_size / section_header->sh_entsize);
-				file->symbols_start = file->data + section_header->sh_offset;
-				file->symbols_string_table = ((const char*) file->data) + (((ElfSection*) (section_headers + (header->e_shentsize * strings_index)))->sh_offset);
-			}
-			
-			file->section_regions = g_new0 (ProfilerExecutableFileSectionRegion, file->header->e_shnum);
-		} else {
-			region->file = file;
-			file->reference_count ++;
-		}
-	}
-	
-	if (file->header != NULL) {
-		executable_file_add_region_reference (file, region);
-	}
-	
-	return file;
-}
-
-static void
-executable_file_free (ProfilerExecutableFile* file) {
-	if (file->fd != -1) {
-		if (close (file->fd) != 0) {
-			g_warning ("Cannot close file: '%s'", strerror (errno));
-		}
-		if (file->data != NULL) {
-			if (munmap (file->data, file->length) != 0) {
-				g_warning ("Cannot unmap file: '%s'", strerror (errno));
-			}
-		}
-	}
-	if (file->section_regions != NULL) {
-		g_free (file->section_regions);
-		file->section_regions = NULL;
-	}
-	g_free (file);
-}
-
-static void
-executable_file_close (ProfilerExecutableMemoryRegionData *region) {
-	region->file->reference_count --;
-	
-	if ((region->file_region_reference != NULL) && (region->file_region_reference->region == region)) {
-		region->file_region_reference->region = NULL;
-		region->file_region_reference->section_address = 0;
-		region->file_region_reference->section_offset = 0;
-	}
-	
-	if (region->file->reference_count <= 0) {
-		ProfilerExecutableFiles *files = & (profiler->executable_files);
-		g_hash_table_remove (files->table, region->file_name);
-		executable_file_free (region->file);
-		region->file = NULL;
-	}
-}
-
-static void
-executable_file_count_symbols (ProfilerExecutableFile *file) {
-	int symbol_index;
-	
-	for (symbol_index = 0; symbol_index < file->symbols_count; symbol_index ++) {
-		ElfSymbol *symbol = (ElfSymbol*) (file->symbols_start + (symbol_index * file->symbol_size));
-		
-		if ((ELF_ST_TYPE (symbol->st_info) == ELF_STT_FUNC) &&
-				(symbol->st_shndx > 0) &&
-				(symbol->st_shndx < file->header->e_shnum)) {
-			int symbol_section_index = symbol->st_shndx;
-			ProfilerExecutableMemoryRegionData *region = file->section_regions [symbol_section_index].region;
-			if ((region != NULL) && (region->symbols == NULL)) {
-				region->symbols_count ++;
-			}
-		}
-	}
-}
-
-static void
-executable_memory_regions_prepare_symbol_tables (ProfilerExecutableMemoryRegions *regions) {
-	int i;
-	for (i = 0; i < regions->regions_count; i++) {
-		ProfilerExecutableMemoryRegionData *region = regions->regions [i];
-		if ((region->symbols_count > 0) && (region->symbols == NULL)) {
-			region->symbols = g_new (ProfilerUnmanagedSymbol, region->symbols_count);
-			region->symbols_capacity = region->symbols_count;
-			region->symbols_count = 0;
-		}
-	}
-}
-
-static const char*
-executable_region_symbol_get_name (ProfilerExecutableMemoryRegionData *region, ProfilerUnmanagedSymbol *symbol) {
-	ElfSymbol *elf_symbol = (ElfSymbol*) (region->file->symbols_start + (symbol->index * region->file->symbol_size));
-	return region->file->symbols_string_table + elf_symbol->st_name;
-}
-
-static void
-executable_file_build_symbol_tables (ProfilerExecutableFile *file) {
-	int symbol_index;
-	
-	for (symbol_index = 0; symbol_index < file->symbols_count; symbol_index ++) {
-		ElfSymbol *symbol = (ElfSymbol*) (file->symbols_start + (symbol_index * file->symbol_size));
-		
-		if ((ELF_ST_TYPE (symbol->st_info) == ELF_STT_FUNC) &&
-				(symbol->st_shndx > 0) &&
-				(symbol->st_shndx < file->header->e_shnum)) {
-			int symbol_section_index = symbol->st_shndx;
-			ProfilerExecutableFileSectionRegion *section_region = & (file->section_regions [symbol_section_index]);
-			ProfilerExecutableMemoryRegionData *region = section_region->region;
-			
-			if (region != NULL) {
-				ProfilerUnmanagedSymbol *new_symbol = & (region->symbols [region->symbols_count]);
-				region->symbols_count ++;
-				
-				new_symbol->id = 0;
-				new_symbol->index = symbol_index;
-				new_symbol->size = symbol->st_size;
-				new_symbol->offset = (((guint8*) symbol->st_value) - section_region->section_address) - (region->file_offset - section_region->section_offset);
-			}
-		}
-	}
-}
-
-static int
-compare_region_symbols (const void *p1, const void *p2) {
-	const ProfilerUnmanagedSymbol *s1 = p1;
-	const ProfilerUnmanagedSymbol *s2 = p2;
-	return (s1->offset < s2->offset)? -1 : ((s1->offset > s2->offset)? 1 : 0);
-}
-
-static void
-executable_memory_regions_sort_symbol_tables (ProfilerExecutableMemoryRegions *regions) {
-	int i;
-	for (i = 0; i < regions->regions_count; i++) {
-		ProfilerExecutableMemoryRegionData *region = regions->regions [i];
-		if ((region->is_new) && (region->symbols != NULL)) {
-			qsort (region->symbols, region->symbols_count, sizeof (ProfilerUnmanagedSymbol), compare_region_symbols);
-		}
-	}
-}
-
-static void
-build_symbol_tables (ProfilerExecutableMemoryRegions *regions, ProfilerExecutableFiles *files) {
-	int i;
-	ProfilerExecutableFile *file;
-	
-	for (i = 0; i < regions->regions_count; i++) {
-		ProfilerExecutableMemoryRegionData *region = regions->regions [i];
-		if ((region->is_new) && (region->file == NULL)) {
-			executable_file_open (region);
-		}
-	}
-	
-	for (file = files->new_files; file != NULL; file = file->next_new_file) {
-		executable_file_count_symbols (file);
-	}
-	
-	executable_memory_regions_prepare_symbol_tables (regions);
-	
-	for (file = files->new_files; file != NULL; file = file->next_new_file) {
-		executable_file_build_symbol_tables (file);
-	}
-	
-	executable_memory_regions_sort_symbol_tables (regions);
-	
-	file = files->new_files;
-	while (file != NULL) {
-		ProfilerExecutableFile *next_file = file->next_new_file;
-		file->next_new_file = NULL;
-		file = next_file;
-	}
-	files->new_files = NULL;
-}
-
-static ProfilerUnmanagedSymbol*
-executable_memory_region_find_symbol (ProfilerExecutableMemoryRegionData *region, guint32 offset) {
-	if (region->symbols_count > 0) {
-		ProfilerUnmanagedSymbol *low = region->symbols;
-		ProfilerUnmanagedSymbol *high = region->symbols + (region->symbols_count - 1);
-		int step = region->symbols_count >> 1;
-		ProfilerUnmanagedSymbol *current = region->symbols + step;
-		
-		do {
-			step = (high - low) >> 1;
-			
-			if (offset < current->offset) {
-				high = current;
-				current = high - step;
-			} else if (offset >= current->offset) {
-				if (offset >= (current->offset + current->size)) {
-					low = current;
-					current = low + step;
-				} else {
-					return current;
-				}
-			}
-		} while (step > 0);
-		
-		if ((offset >= current->offset) && (offset < (current->offset + current->size))) {
-			return current;
-		} else {
-			return NULL;
-		}
-	} else {
-		return NULL;
-	}
-}
-
-//FIXME: make also Win32 and BSD variants
-#define MAPS_BUFFER_SIZE 4096
-#define MAPS_FILENAME_SIZE 2048
-
-static gboolean
-update_regions_buffer (int fd, char *buffer) {
-	ssize_t result = read (fd, buffer, MAPS_BUFFER_SIZE);
-	
-	if (result == MAPS_BUFFER_SIZE) {
-		return TRUE;
-	} else if (result >= 0) {
-		*(buffer + result) = 0;
-		return FALSE;
-	} else {
-		*buffer = 0;
-		return FALSE;
-	}
-}
-
-#define GOTO_NEXT_CHAR(c,b,fd) do {\
-	(c)++;\
-	if (((c) - (b) >= MAPS_BUFFER_SIZE) || ((*(c) == 0) && ((c) != (b)))) {\
-		update_regions_buffer ((fd), (b));\
-		(c) = (b);\
-	}\
-} while (0);
-
-static int hex_digit_value (char c) {
-	if ((c >= '0') && (c <= '9')) {
-		return c - '0';
-	} else if ((c >= 'a') && (c <= 'f')) {
-		return c - 'a' + 10;
-	} else if ((c >= 'A') && (c <= 'F')) {
-		return c - 'A' + 10;
-	} else {
-		return 0;
-	}
-}
-
-/*
- * Start address
- * -
- * End address
- * (space)
- * Permissions
- * Offset
- * (space)
- * Device
- * (space)
- * Inode
- * (space)
- * File
- * \n
- */
-typedef enum {
-	MAP_LINE_PARSER_STATE_INVALID,
-	MAP_LINE_PARSER_STATE_START_ADDRESS,
-	MAP_LINE_PARSER_STATE_END_ADDRESS,
-	MAP_LINE_PARSER_STATE_PERMISSIONS,
-	MAP_LINE_PARSER_STATE_OFFSET,
-	MAP_LINE_PARSER_STATE_DEVICE,
-	MAP_LINE_PARSER_STATE_INODE,
-	MAP_LINE_PARSER_STATE_BLANK_BEFORE_FILENAME,
-	MAP_LINE_PARSER_STATE_FILENAME,
-	MAP_LINE_PARSER_STATE_DONE
-} MapLineParserState;
-
-const char *map_line_parser_state [] = {
-	"INVALID",
-	"START_ADDRESS",
-	"END_ADDRESS",
-	"PERMISSIONS",
-	"OFFSET",
-	"DEVICE",
-	"INODE",
-	"BLANK_BEFORE_FILENAME",
-	"FILENAME",
-	"DONE"
-};
-
-static char*
-parse_map_line (ProfilerExecutableMemoryRegions *regions, int fd, char *buffer, char *filename, char *current) {
-	MapLineParserState state = MAP_LINE_PARSER_STATE_START_ADDRESS;
-	gsize start_address = 0;
-	gsize end_address = 0;
-	guint32 offset = 0;
-	int filename_index = 0;
-	gboolean is_executable = FALSE;
-	gboolean done = FALSE;
-	
-	char c = *current;
-	
-	while (1) {
-		switch (state) {
-		case MAP_LINE_PARSER_STATE_START_ADDRESS:
-			if (isxdigit (c)) {
-				start_address <<= 4;
-				start_address |= hex_digit_value (c);
-			} else if (c == '-') {
-				state = MAP_LINE_PARSER_STATE_END_ADDRESS;
-			} else {
-				state = MAP_LINE_PARSER_STATE_INVALID;
-			}
-			break;
-		case MAP_LINE_PARSER_STATE_END_ADDRESS:
-			if (isxdigit (c)) {
-				end_address <<= 4;
-				end_address |= hex_digit_value (c);
-			} else if (isblank (c)) {
-				state = MAP_LINE_PARSER_STATE_PERMISSIONS;
-			} else {
-				state = MAP_LINE_PARSER_STATE_INVALID;
-			}
-			break;
-		case MAP_LINE_PARSER_STATE_PERMISSIONS:
-			if (c == 'x') {
-				is_executable = TRUE;
-			} else if (isblank (c)) {
-				state = MAP_LINE_PARSER_STATE_OFFSET;
-			} else if ((c != '-') && ! isalpha (c)) {
-				state = MAP_LINE_PARSER_STATE_INVALID;
-			}
-			break;
-		case MAP_LINE_PARSER_STATE_OFFSET:
-			if (isxdigit (c)) {
-				offset <<= 4;
-				offset |= hex_digit_value (c);
-			} else if (isblank (c)) {
-				state = MAP_LINE_PARSER_STATE_DEVICE;
-			} else {
-				state = MAP_LINE_PARSER_STATE_INVALID;
-			}
-			break;
-		case MAP_LINE_PARSER_STATE_DEVICE:
-			if (isblank (c)) {
-				state = MAP_LINE_PARSER_STATE_INODE;
-			} else if ((c != ':') && ! isxdigit (c)) {
-				state = MAP_LINE_PARSER_STATE_INVALID;
-			}
-			break;
-		case MAP_LINE_PARSER_STATE_INODE:
-			if (isblank (c)) {
-				state = MAP_LINE_PARSER_STATE_BLANK_BEFORE_FILENAME;
-			} else if (! isdigit (c)) {
-				state = MAP_LINE_PARSER_STATE_INVALID;
-			}
-			break;
-		case MAP_LINE_PARSER_STATE_BLANK_BEFORE_FILENAME:
-			if ((c == '/') || (c == '[')) {
-				state = MAP_LINE_PARSER_STATE_FILENAME;
-				filename [filename_index] = *current;
-				filename_index ++;
-			} else if (! isblank (c)) {
-				state = MAP_LINE_PARSER_STATE_INVALID;
-			}
-			break;
-		case MAP_LINE_PARSER_STATE_FILENAME:
-			if (filename_index < MAPS_FILENAME_SIZE) {
-				if (c == '\n') {
-					state = MAP_LINE_PARSER_STATE_DONE;
-					done = TRUE;
-					filename [filename_index] = 0;
-				} else {
-					filename [filename_index] = *current;
-					filename_index ++;
-				}
-			} else {
-				filename [filename_index] = 0;
-				g_warning ("ELF filename too long: \"%s\"...\n", filename);
-			}
-			break;
-		case MAP_LINE_PARSER_STATE_DONE:
-			if (done && is_executable) {
-				filename [filename_index] = 0;
-				append_region (regions, (gpointer) start_address, (gpointer) end_address, offset, filename);
-			}
-			return current;
-		case MAP_LINE_PARSER_STATE_INVALID:
-			if (c == '\n') {
-				state = MAP_LINE_PARSER_STATE_DONE;
-			}
-			break;
-		}
-		
-		if (c == 0) {
-			return NULL;
-		} else if (c == '\n') {
-			state = MAP_LINE_PARSER_STATE_DONE;
-		}
-		
-		GOTO_NEXT_CHAR(current, buffer, fd);
-		c = *current;
-	}
-}
-
-static gboolean
-scan_process_regions (ProfilerExecutableMemoryRegions *regions) {
-	char *buffer;
-	char *filename;
-	char *current;
-	int fd;
-	
-	fd = open ("/proc/self/maps", O_RDONLY);
-	if (fd == -1) {
-		return FALSE;
-	}
-	
-	buffer = malloc (MAPS_BUFFER_SIZE);
-	filename = malloc (MAPS_FILENAME_SIZE);
-	update_regions_buffer (fd, buffer);
-	current = buffer;
-	while (current != NULL) {
-		current = parse_map_line (regions, fd, buffer, filename, current);
-	}
-	
-	free (buffer);
-	free (filename);
-	
-	close (fd);
-	return TRUE;
-}
-//End of Linux code
-
-typedef enum {
-	MONO_PROFILER_STATISTICAL_CODE_END = 0,
-	MONO_PROFILER_STATISTICAL_CODE_METHOD = 1,
-	MONO_PROFILER_STATISTICAL_CODE_UNMANAGED_FUNCTION_ID = 2,
-	MONO_PROFILER_STATISTICAL_CODE_UNMANAGED_FUNCTION_NEW_ID = 3,
-	MONO_PROFILER_STATISTICAL_CODE_UNMANAGED_FUNCTION_OFFSET_IN_REGION = 4,
-	MONO_PROFILER_STATISTICAL_CODE_CALL_CHAIN = 5,
-	MONO_PROFILER_STATISTICAL_CODE_REGIONS = 7
-} MonoProfilerStatisticalCode;
-
-static void
-refresh_memory_regions (void) {
-	ProfilerExecutableMemoryRegions *old_regions = profiler->executable_regions;
-	ProfilerExecutableMemoryRegions *new_regions = profiler_executable_memory_regions_new (old_regions->next_id, old_regions->next_unmanaged_function_id);
-	int i;
-	
-	LOG_WRITER_THREAD ("Refreshing memory regions...");
-	scan_process_regions (new_regions);
-	sort_regions (new_regions);
-	restore_old_regions (old_regions, new_regions);
-	fix_region_references (new_regions);
-	LOG_WRITER_THREAD ("Refreshed memory regions.");
-	
-	LOG_WRITER_THREAD ("Building symbol tables...");
-	build_symbol_tables (new_regions, & (profiler->executable_files));
-#if 0
-	printf ("Symbol tables done!\n");
-	printf ("Region summary...\n");
-	for (i = 0; i < new_regions->regions_count; i++) {
-		ProfilerExecutableMemoryRegionData *region = new_regions->regions [i];
-		printf ("Region %d[%d][NEW:%d] (%p-%p) at %d in file %s\n", i, region->id, region->is_new,
-				region->start, region->end, region->file_offset, region->file_name);
-	}
-	printf ("New symbol tables dump...\n");
-	for (i = 0; i < new_regions->regions_count; i++) {
-		ProfilerExecutableMemoryRegionData *region = new_regions->regions [i];
-		
-		if (region->is_new) {
-			int symbol_index;
-			
-			printf ("Region %d[%d][NEW:%d] (%p-%p) at %d in file %s\n", i, region->id, region->is_new,
-					region->start, region->end, region->file_offset, region->file_name);
-			for (symbol_index = 0; symbol_index < region->symbols_count; symbol_index ++) {
-				ProfilerUnmanagedSymbol *symbol = & (region->symbols [symbol_index]);
-				printf ("  [%d] Symbol %s (offset %d, size %d)\n", symbol_index,
-						executable_region_symbol_get_name (region, symbol),
-						symbol->offset, symbol->size);
-			}
-		}
-	}
-#endif
-	LOG_WRITER_THREAD ("Built symbol tables.");
-	
-	// This marks the region "sub-block"
-	write_uint32 (MONO_PROFILER_STATISTICAL_CODE_REGIONS);
-	
-	// First write the "removed" regions 
-	for (i = 0; i < old_regions->regions_count; i++) {
-		ProfilerExecutableMemoryRegionData *region = old_regions->regions [i];
-		if (! region->is_new) {
-#if DEBUG_STATISTICAL_PROFILER
-			printf ("[refresh_memory_regions] Invalidated region %d\n", region->id);
-#endif
-			write_uint32 (region->id);
-		}
-	}
-	write_uint32 (0);
-	
-	// Then write the new ones
-	for (i = 0; i < new_regions->regions_count; i++) {
-		ProfilerExecutableMemoryRegionData *region = new_regions->regions [i];
-		if (region->is_new) {
-			region->is_new = FALSE;
-			
-#if DEBUG_STATISTICAL_PROFILER
-			printf ("[refresh_memory_regions] Wrote region %d (%p-%p[%d] '%s')\n", region->id, region->start, region->end, region->file_offset, region->file_name);
-#endif
-			write_uint32 (region->id);
-			write_uint64 (GPOINTER_TO_UINT (region->start));
-			write_uint32 (GPOINTER_TO_UINT (region->end) - GPOINTER_TO_UINT (region->start));
-			write_uint32 (region->file_offset);
-			write_string (region->file_name);
-		}
-	}
-	write_uint32 (0);
-	
-	// Finally, free the old ones, and replace them
-	profiler_executable_memory_regions_destroy (old_regions);
-	profiler->executable_regions = new_regions;
-}
-
-static gboolean
-write_statistical_hit (gpointer address, gboolean regions_refreshed) {
-	ProfilerCodeBuffer *code_buffer = profiler_code_buffer_from_address (profiler, address);
-	
-	if ((code_buffer != NULL) && (code_buffer->info.type == MONO_PROFILER_CODE_BUFFER_METHOD)) {
-		MonoMethod *method = code_buffer->info.data.method;
-		MethodIdMappingElement *element = method_id_mapping_element_get (method);
-		
-		if (element != NULL) {
-#if DEBUG_STATISTICAL_PROFILER
-			printf ("[write_statistical_hit] Wrote method %d\n", element->id);
-#endif
-			write_uint32 ((element->id << 3) | MONO_PROFILER_STATISTICAL_CODE_METHOD);
-		} else {
-#if DEBUG_STATISTICAL_PROFILER
-			printf ("[write_statistical_hit] Wrote unknown method %p\n", method);
-#endif
-			write_uint32 (MONO_PROFILER_STATISTICAL_CODE_METHOD);
-		}
-	} else {
-		ProfilerExecutableMemoryRegionData *region = find_address_region (profiler->executable_regions, address);
-		
-		if (region == NULL && ! regions_refreshed) {
-#if DEBUG_STATISTICAL_PROFILER
-			printf ("[write_statistical_hit] Cannot find region for address %p, refreshing...\n", address);
-#endif
-			refresh_memory_regions ();
-			regions_refreshed = TRUE;
-			region = find_address_region (profiler->executable_regions, address);
-		}
-		
-		if (region != NULL) {
-			guint32 offset = ((guint8*)address) - ((guint8*)region->start);
-			ProfilerUnmanagedSymbol *symbol = executable_memory_region_find_symbol (region, offset);
-			
-			if (symbol != NULL) {
-				if (symbol->id > 0) {
-#if DEBUG_STATISTICAL_PROFILER
-					printf ("[write_statistical_hit] Wrote unmanaged symbol %d\n", symbol->id);
-#endif
-					write_uint32 ((symbol->id << 3) | MONO_PROFILER_STATISTICAL_CODE_UNMANAGED_FUNCTION_ID);
-				} else {
-					ProfilerExecutableMemoryRegions *regions = profiler->executable_regions;
-					const char *symbol_name = executable_region_symbol_get_name (region, symbol);
-					symbol->id = regions->next_unmanaged_function_id;
-					regions->next_unmanaged_function_id ++;
-#if DEBUG_STATISTICAL_PROFILER
-					printf ("[write_statistical_hit] Wrote new unmanaged symbol in region %d[%d]\n", region->id, offset);
-#endif
-					write_uint32 ((region->id << 3) | MONO_PROFILER_STATISTICAL_CODE_UNMANAGED_FUNCTION_NEW_ID);
-					write_uint32 (symbol->id);
-					write_string (symbol_name);
-				}
-			} else {
-#if DEBUG_STATISTICAL_PROFILER
-				printf ("[write_statistical_hit] Wrote unknown unmanaged hit in region %d[%d] (address %p)\n", region->id, offset, address);
-#endif
-				write_uint32 ((region->id << 3) | MONO_PROFILER_STATISTICAL_CODE_UNMANAGED_FUNCTION_OFFSET_IN_REGION);
-				write_uint32 (offset);
-			}
-		} else {
-#if DEBUG_STATISTICAL_PROFILER
-			printf ("[write_statistical_hit] Wrote unknown unmanaged hit %p\n", address);
-#endif
-			write_uint32 (MONO_PROFILER_STATISTICAL_CODE_UNMANAGED_FUNCTION_OFFSET_IN_REGION);
-			write_uint64 (GPOINTER_TO_UINT (address));
-		}
-	}
-	
-	return regions_refreshed;
-}
-
-static void
-flush_all_mappings (void);
-
-static void
-write_statistical_data_block (ProfilerStatisticalData *data) {
-	int start_index = data->first_unwritten_index;
-	int end_index = data->next_free_index;
-	gboolean regions_refreshed = FALSE;
-	int call_chain_depth = profiler->statistical_call_chain_depth;
-	int index;
-	
-	if (end_index > data->end_index)
-		end_index = data->end_index;
-	
-	if (start_index == end_index)
-		return;
-	
-	data->first_unwritten_index = end_index;
-	
-	write_clock_data ();
-	
-#if DEBUG_STATISTICAL_PROFILER
-	printf ("[write_statistical_data_block] Starting loop at index %d\n", start_index);
-#endif
-	
-	for (index = start_index; index < end_index; index ++) {
-		int base_index = index * (call_chain_depth + 1);
-		ProfilerStatisticalHit hit = data->hits [base_index];
-		int callers_count;
-		
-		regions_refreshed = write_statistical_hit (hit.address, regions_refreshed);
-		base_index ++;
-		
-		for (callers_count = 0; callers_count < call_chain_depth; callers_count ++) {
-			hit = data->hits [base_index + callers_count];
-			if (hit.address == NULL) {
-				break;
-			}
-		}
-		
-		if (callers_count > 0) {
-			write_uint32 ((callers_count << 3) | MONO_PROFILER_STATISTICAL_CODE_CALL_CHAIN);
-			
-			for (callers_count = 0; callers_count < call_chain_depth; callers_count ++) {
-				hit = data->hits [base_index + callers_count];
-				if (hit.address != NULL) {
-					regions_refreshed = write_statistical_hit (hit.address, regions_refreshed);
-				} else {
-					break;
-				}
-			}
-		}
-	}
-	write_uint32 (MONO_PROFILER_STATISTICAL_CODE_END);
-	
-#if DEBUG_STATISTICAL_PROFILER
-	printf ("[write_statistical_data_block] Ending loop at index %d\n", end_index);
-#endif
-	write_clock_data ();
-	
-	write_current_block (MONO_PROFILER_FILE_BLOCK_KIND_STATISTICAL);
-}
-
-static void
-write_intro_block (void) {
-	write_uint32 (1);
-	write_string ("mono");
-	write_uint32 (profiler->flags);
-	write_uint64 (profiler->start_counter);
-	write_uint64 (profiler->start_time);
-	write_current_block (MONO_PROFILER_FILE_BLOCK_KIND_INTRO);
-}
-
-static void
-write_end_block (void) {
-	write_uint32 (1);
-	write_uint64 (profiler->end_counter);
-	write_uint64 (profiler->end_time);
-	write_current_block (MONO_PROFILER_FILE_BLOCK_KIND_END);
-}
-
-static void
-update_mapping (ProfilerPerThreadData *data) {
-	ProfilerEventData *start = data->first_unmapped_event;
-	ProfilerEventData *end = data->next_free_event;
-	data->first_unmapped_event = end;
-	
-#if (DEBUG_LOGGING_PROFILER)
-	printf ("[update_mapping][TID %ld] START\n", data->thread_id);
-#endif
-	while (start < end) {
-#if DEBUG_LOGGING_PROFILER
-		printf ("Examining event %p[TID %ld] looking for a new mapping...\n", start, data->thread_id);
-#endif
-		if (start->data_type == MONO_PROFILER_EVENT_DATA_TYPE_CLASS) {
-			ClassIdMappingElement *element = class_id_mapping_element_get (start->data.address);
-			if (element == NULL) {
-				MonoClass *klass = start->data.address;
-				class_id_mapping_element_new (klass);
-			}
-		} else if (start->data_type == MONO_PROFILER_EVENT_DATA_TYPE_METHOD) {
-			MethodIdMappingElement *element = method_id_mapping_element_get (start->data.address);
-			if (element == NULL) {
-				MonoMethod *method = start->data.address;
-				if (method != NULL) {
-					method_id_mapping_element_new (method);
-				}
-			}
-		}
-		
-		if (start->value == MAX_EVENT_VALUE) {
-			start ++;
-		}
-		start ++;
-	}
-#if (DEBUG_LOGGING_PROFILER)
-	printf ("[update_mapping][TID %ld] END\n", data->thread_id);
-#endif
-}
-
-static void
-flush_all_mappings (void) {
-	ProfilerPerThreadData *data;
-	
-	for (data = profiler->per_thread_data; data != NULL; data = data->next) {
-		update_mapping (data);
-	}
-	for (data = profiler->per_thread_data; data != NULL; data = data->next) {
-		write_mapping_block (data->thread_id);
-	}
-}
-
-static void
-flush_full_event_data_buffer (ProfilerPerThreadData *data) {
-	LOCK_PROFILER ();
-	
-	// We flush all mappings because some id definitions could come
-	// from other threads
-	flush_all_mappings ();
-	g_assert (data->first_unmapped_event >= data->next_free_event);
-	
-	write_thread_data_block (data);
-	
-	data->next_free_event = data->events;
-	data->next_unreserved_event = data->events;
-	data->first_unwritten_event = data->events;
-	data->first_unmapped_event = data->events;
-	MONO_PROFILER_GET_CURRENT_COUNTER (data->start_event_counter);
-	data->last_event_counter = data->start_event_counter;
-	
-	UNLOCK_PROFILER ();
-}
-
-/* The ">=" operator is intentional, to leave one spare slot for "extended values" */
-#define RESERVE_EVENTS(d,e,count) do {\
-	if ((d)->next_unreserved_event >= ((d)->end_event - (count))) {\
-		flush_full_event_data_buffer (d);\
-	}\
-	(e) = (d)->next_unreserved_event;\
-	(d)->next_unreserved_event += (count);\
-} while (0)
-#define GET_NEXT_FREE_EVENT(d,e) RESERVE_EVENTS ((d),(e),1)
-#define COMMIT_RESERVED_EVENTS(d) do {\
-	data->next_free_event = data->next_unreserved_event;\
-} while (0)
-
-static void
-flush_everything (void) {
-	ProfilerPerThreadData *data;
-	
-	flush_all_mappings ();
-	for (data = profiler->per_thread_data; data != NULL; data = data->next) {
-		write_thread_data_block (data);
-	}
-	write_statistical_data_block (profiler->statistical_data);
-}
-
-#define RESULT_TO_LOAD_CODE(r) (((r)==MONO_PROFILE_OK)?MONO_PROFILER_LOADED_EVENT_SUCCESS:MONO_PROFILER_LOADED_EVENT_FAILURE)
-static void
-appdomain_start_load (MonoProfiler *profiler, MonoDomain *domain) {
-	LOCK_PROFILER ();
-	loaded_element_load_start (profiler->loaded_appdomains, domain);
-	UNLOCK_PROFILER ();
-}
-
-static void
-appdomain_end_load (MonoProfiler *profiler, MonoDomain *domain, int result) {
-	char *name;
-	LoadedElement *element;
-	
-	name = g_strdup_printf ("%d", mono_domain_get_id (domain));
-	LOCK_PROFILER ();
-	element = loaded_element_load_end (profiler->loaded_appdomains, domain, name);
-	write_element_load_block (element, MONO_PROFILER_LOADED_EVENT_APPDOMAIN | RESULT_TO_LOAD_CODE (result), CURRENT_THREAD_ID (), domain);
-	UNLOCK_PROFILER ();
-}
-
-static void
-appdomain_start_unload (MonoProfiler *profiler, MonoDomain *domain) {
-	LOCK_PROFILER ();
-	loaded_element_unload_start (profiler->loaded_appdomains, domain);
-	flush_everything ();
-	UNLOCK_PROFILER ();
-}
-
-static void
-appdomain_end_unload (MonoProfiler *profiler, MonoDomain *domain) {
-	LoadedElement *element;
-	
-	LOCK_PROFILER ();
-	element = loaded_element_unload_end (profiler->loaded_appdomains, domain);
-	write_element_unload_block (element, MONO_PROFILER_LOADED_EVENT_APPDOMAIN, CURRENT_THREAD_ID ());
-	UNLOCK_PROFILER ();
-}
-
-static void
-module_start_load (MonoProfiler *profiler, MonoImage *module) {
-	LOCK_PROFILER ();
-	loaded_element_load_start (profiler->loaded_modules, module);
-	UNLOCK_PROFILER ();
-}
-
-static void
-module_end_load (MonoProfiler *profiler, MonoImage *module, int result) {
-	char *name;
-	MonoAssemblyName aname;
-	LoadedElement *element;
-	
-	if (mono_assembly_fill_assembly_name (module, &aname)) {
-		name = mono_stringify_assembly_name (&aname);
-	} else {
-		name = g_strdup_printf ("Dynamic module \"%p\"", module);
-	}
-	LOCK_PROFILER ();
-	element = loaded_element_load_end (profiler->loaded_modules, module, name);
-	write_element_load_block (element, MONO_PROFILER_LOADED_EVENT_MODULE | RESULT_TO_LOAD_CODE (result), CURRENT_THREAD_ID (), module);
-	UNLOCK_PROFILER ();
-}
-
-static void
-module_start_unload (MonoProfiler *profiler, MonoImage *module) {
-	LOCK_PROFILER ();
-	loaded_element_unload_start (profiler->loaded_modules, module);
-	flush_everything ();
-	UNLOCK_PROFILER ();
-}
-
-static void
-module_end_unload (MonoProfiler *profiler, MonoImage *module) {
-	LoadedElement *element;
-	
-	LOCK_PROFILER ();
-	element = loaded_element_unload_end (profiler->loaded_modules, module);
-	write_element_unload_block (element, MONO_PROFILER_LOADED_EVENT_MODULE, CURRENT_THREAD_ID ());
-	UNLOCK_PROFILER ();
-}
-
-static void
-assembly_start_load (MonoProfiler *profiler, MonoAssembly *assembly) {
-	LOCK_PROFILER ();
-	loaded_element_load_start (profiler->loaded_assemblies, assembly);
-	UNLOCK_PROFILER ();
-}
-
-static void
-assembly_end_load (MonoProfiler *profiler, MonoAssembly *assembly, int result) {
-	char *name;
-	MonoAssemblyName aname;
-	LoadedElement *element;
-	
-	if (mono_assembly_fill_assembly_name (mono_assembly_get_image (assembly), &aname)) {
-		name = mono_stringify_assembly_name (&aname);
-	} else {
-		name = g_strdup_printf ("Dynamic assembly \"%p\"", assembly);
-	}
-	LOCK_PROFILER ();
-	element = loaded_element_load_end (profiler->loaded_assemblies, assembly, name);
-	write_element_load_block (element, MONO_PROFILER_LOADED_EVENT_ASSEMBLY | RESULT_TO_LOAD_CODE (result), CURRENT_THREAD_ID (), assembly);
-	UNLOCK_PROFILER ();
-}
-
-static void
-assembly_start_unload (MonoProfiler *profiler, MonoAssembly *assembly) {
-	LOCK_PROFILER ();
-	loaded_element_unload_start (profiler->loaded_assemblies, assembly);
-	flush_everything ();
-	UNLOCK_PROFILER ();
-}
-static void
-assembly_end_unload (MonoProfiler *profiler, MonoAssembly *assembly) {
-	LoadedElement *element;
-	
-	LOCK_PROFILER ();
-	element = loaded_element_unload_end (profiler->loaded_assemblies, assembly);
-	write_element_unload_block (element, MONO_PROFILER_LOADED_EVENT_ASSEMBLY, CURRENT_THREAD_ID ());
-	UNLOCK_PROFILER ();
-}
-
-#if (DEBUG_LOGGING_PROFILER)		
-static const char*
-class_event_code_to_string (MonoProfilerClassEvents code) {
-	switch (code) {
-	case MONO_PROFILER_EVENT_CLASS_LOAD: return "LOAD";
-	case MONO_PROFILER_EVENT_CLASS_UNLOAD: return "UNLOAD";
-	case MONO_PROFILER_EVENT_CLASS_ALLOCATION: return "ALLOCATION";
-	case MONO_PROFILER_EVENT_CLASS_EXCEPTION: return "EXCEPTION";
-	default: g_assert_not_reached (); return "";
-	}
-}
-static const char*
-method_event_code_to_string (MonoProfilerMethodEvents code) {
-	switch (code) {
-	case MONO_PROFILER_EVENT_METHOD_CALL: return "CALL";
-	case MONO_PROFILER_EVENT_METHOD_JIT: return "JIT";
-	case MONO_PROFILER_EVENT_METHOD_FREED: return "FREED";
-	case MONO_PROFILER_EVENT_METHOD_ALLOCATION_CALLER: return "ALLOCATION_CALLER";
-	case MONO_PROFILER_EVENT_METHOD_ALLOCATION_JIT_TIME_CALLER: return "ALLOCATION_JIT_TIME_CALLER";
-	case MONO_PROFILER_EVENT_ALLOCATION_OBJECT_ID: return "ALLOCATION_OBJECT_ID";
-	default: g_assert_not_reached (); return "";
-	}
-}
-static const char*
-number_event_code_to_string (MonoProfilerEvents code) {
-	switch (code) {
-	case MONO_PROFILER_EVENT_THREAD: return "THREAD";
-	case MONO_PROFILER_EVENT_GC_COLLECTION: return "GC_COLLECTION";
-	case MONO_PROFILER_EVENT_GC_MARK: return "GC_MARK";
-	case MONO_PROFILER_EVENT_GC_SWEEP: return "GC_SWEEP";
-	case MONO_PROFILER_EVENT_GC_RESIZE: return "GC_RESIZE";
-	case MONO_PROFILER_EVENT_GC_STOP_WORLD: return "GC_STOP_WORLD";
-	case MONO_PROFILER_EVENT_GC_START_WORLD: return "GC_START_WORLD";
-	case MONO_PROFILER_EVENT_JIT_TIME_ALLOCATION: return "JIT_TIME_ALLOCATION";
-	case MONO_PROFILER_EVENT_STACK_SECTION: return "STACK_SECTION";
-	case MONO_PROFILER_EVENT_ALLOCATION_OBJECT_ID: return "ALLOCATION_OBJECT_ID";
-	default: g_assert_not_reached (); return "";
-	}
-}
-static const char*
-event_result_to_string (MonoProfilerEventResult code) {
-	switch (code) {
-	case MONO_PROFILER_EVENT_RESULT_SUCCESS: return "SUCCESS";
-	case MONO_PROFILER_EVENT_RESULT_FAILURE: return "FAILURE";
-	default: g_assert_not_reached (); return "";
-	}
-}
-static const char*
-event_kind_to_string (MonoProfilerEventKind code) {
-	switch (code) {
-	case MONO_PROFILER_EVENT_KIND_START: return "START";
-	case MONO_PROFILER_EVENT_KIND_END: return "END";
-	default: g_assert_not_reached (); return "";
-	}
-}
-static void
-print_event_data (ProfilerPerThreadData *data, ProfilerEventData *event, guint64 value) {
-	if (event->data_type == MONO_PROFILER_EVENT_DATA_TYPE_CLASS) {
-		printf ("STORE EVENT [TID %ld][EVENT %ld] CLASS[%p] %s:%s:%s[%d-%d-%d] %ld (%s.%s)\n",
-				data->thread_id,
-				event - data->events,
-				event->data.address,
-				class_event_code_to_string (event->code & ~MONO_PROFILER_EVENT_RESULT_MASK),
-				event_result_to_string (event->code & MONO_PROFILER_EVENT_RESULT_MASK),
-				event_kind_to_string (event->kind),
-				event->data_type,
-				event->kind,
-				event->code,
-				value,
-				mono_class_get_namespace ((MonoClass*) event->data.address),
-				mono_class_get_name ((MonoClass*) event->data.address));
-	} else if (event->data_type == MONO_PROFILER_EVENT_DATA_TYPE_METHOD) {
-		printf ("STORE EVENT [TID %ld][EVENT %ld]  METHOD[%p] %s:%s:%s[%d-%d-%d] %ld (%s.%s:%s (?))\n",
-				data->thread_id,
-				event - data->events,
-				event->data.address,
-				method_event_code_to_string (event->code & ~MONO_PROFILER_EVENT_RESULT_MASK),
-				event_result_to_string (event->code & MONO_PROFILER_EVENT_RESULT_MASK),
-				event_kind_to_string (event->kind),
-				event->data_type,
-				event->kind,
-				event->code,
-				value,
-				(event->data.address != NULL) ? mono_class_get_namespace (mono_method_get_class ((MonoMethod*) event->data.address)) : "<NULL>",
-				(event->data.address != NULL) ? mono_class_get_name (mono_method_get_class ((MonoMethod*) event->data.address)) : "<NULL>",
-				(event->data.address != NULL) ? mono_method_get_name ((MonoMethod*) event->data.address) : "<NULL>");
-	} else {
-		printf ("STORE EVENT [TID %ld][EVENT %ld]  NUMBER[%ld] %s:%s[%d-%d-%d] %ld\n",
-				data->thread_id,
-				event - data->events,
-				(guint64) event->data.number,
-				number_event_code_to_string (event->code),
-				event_kind_to_string (event->kind),
-				event->data_type,
-				event->kind,
-				event->code,
-				value);
-	}
-}
-#define LOG_EVENT(data,ev,val) print_event_data ((data),(ev),(val))
-#else
-#define LOG_EVENT(data,ev,val)
-#endif
-
-#define RESULT_TO_EVENT_CODE(r) (((r)==MONO_PROFILE_OK)?MONO_PROFILER_EVENT_RESULT_SUCCESS:MONO_PROFILER_EVENT_RESULT_FAILURE)
-
-#define STORE_EVENT_ITEM_COUNTER(event,p,i,dt,c,k) do {\
-	guint64 counter;\
-	guint64 delta;\
-	MONO_PROFILER_GET_CURRENT_COUNTER (counter);\
-	(event)->data.address = (i);\
-	(event)->data_type = (dt);\
-	(event)->code = (c);\
-	(event)->kind = (k);\
-	delta = counter - data->last_event_counter;\
-	if (delta < MAX_EVENT_VALUE) {\
-		(event)->value = delta;\
-	} else {\
-		ProfilerEventData *extension = data->next_unreserved_event;\
-		data->next_unreserved_event ++;\
-		(event)->value = MAX_EVENT_VALUE;\
-		*(guint64*)extension = delta;\
-	}\
-	data->last_event_counter = counter;\
-	LOG_EVENT (data, (event), delta);\
-} while (0);
-#define STORE_EVENT_ITEM_VALUE(event,p,i,dt,c,k,v) do {\
-	(event)->data.address = (i);\
-	(event)->data_type = (dt);\
-	(event)->code = (c);\
-	(event)->kind = (k);\
-	if ((v) < MAX_EVENT_VALUE) {\
-		(event)->value = (v);\
-	} else {\
-		ProfilerEventData *extension = data->next_unreserved_event;\
-		data->next_unreserved_event ++;\
-		(event)->value = MAX_EVENT_VALUE;\
-		*(guint64*)extension = (v);\
-	}\
-	LOG_EVENT (data, (event), (v));\
-}while (0);
-#define STORE_EVENT_NUMBER_COUNTER(event,p,n,dt,c,k) do {\
-	guint64 counter;\
-	guint64 delta;\
-	MONO_PROFILER_GET_CURRENT_COUNTER (counter);\
-	(event)->data.number = (n);\
-	(event)->data_type = (dt);\
-	(event)->code = (c);\
-	(event)->kind = (k);\
-	delta = counter - data->last_event_counter;\
-	if (delta < MAX_EVENT_VALUE) {\
-		(event)->value = delta;\
-	} else {\
-		ProfilerEventData *extension = data->next_unreserved_event;\
-		data->next_unreserved_event ++;\
-		(event)->value = MAX_EVENT_VALUE;\
-		*(guint64*)extension = delta;\
-	}\
-	data->last_event_counter = counter;\
-	LOG_EVENT (data, (event), delta);\
-}while (0);
-#define STORE_EVENT_NUMBER_VALUE(event,p,n,dt,c,k,v) do {\
-	(event)->data.number = (n);\
-	(event)->data_type = (dt);\
-	(event)->code = (c);\
-	(event)->kind = (k);\
-	if ((v) < MAX_EVENT_VALUE) {\
-		(event)->value = (v);\
-	} else {\
-		ProfilerEventData *extension = data->next_unreserved_event;\
-		data->next_unreserved_event ++;\
-		(event)->value = MAX_EVENT_VALUE;\
-		*(guint64*)extension = (v);\
-	}\
-	LOG_EVENT (data, (event), (v));\
-}while (0);
-#define INCREMENT_EVENT(event) do {\
-	if ((event)->value != MAX_EVENT_VALUE) {\
-		(event) ++;\
-	} else {\
-		(event) += 2;\
-	}\
-}while (0);
-
-static void
-class_start_load (MonoProfiler *profiler, MonoClass *klass) {
-	ProfilerPerThreadData *data;
-	ProfilerEventData *event;
-	GET_PROFILER_THREAD_DATA (data);
-	GET_NEXT_FREE_EVENT (data, event);
-	STORE_EVENT_ITEM_COUNTER (event, profiler, klass, MONO_PROFILER_EVENT_DATA_TYPE_CLASS, MONO_PROFILER_EVENT_CLASS_LOAD, MONO_PROFILER_EVENT_KIND_START);
-	COMMIT_RESERVED_EVENTS (data);
-}
-static void
-class_end_load (MonoProfiler *profiler, MonoClass *klass, int result) {
-	ProfilerPerThreadData *data;
-	ProfilerEventData *event;
-	GET_PROFILER_THREAD_DATA (data);
-	GET_NEXT_FREE_EVENT (data, event);
-	STORE_EVENT_ITEM_COUNTER (event, profiler, klass, MONO_PROFILER_EVENT_DATA_TYPE_CLASS, MONO_PROFILER_EVENT_CLASS_LOAD | RESULT_TO_EVENT_CODE (result), MONO_PROFILER_EVENT_KIND_END);
-	COMMIT_RESERVED_EVENTS (data);
-}
-static void
-class_start_unload (MonoProfiler *profiler, MonoClass *klass) {
-	ProfilerPerThreadData *data;
-	ProfilerEventData *event;
-	GET_PROFILER_THREAD_DATA (data);
-	GET_NEXT_FREE_EVENT (data, event);
-	STORE_EVENT_ITEM_COUNTER (event, profiler, klass, MONO_PROFILER_EVENT_DATA_TYPE_CLASS, MONO_PROFILER_EVENT_CLASS_UNLOAD, MONO_PROFILER_EVENT_KIND_START);
-	COMMIT_RESERVED_EVENTS (data);
-}
-static void
-class_end_unload (MonoProfiler *profiler, MonoClass *klass) {
-	ProfilerPerThreadData *data;
-	ProfilerEventData *event;
-	GET_PROFILER_THREAD_DATA (data);
-	GET_NEXT_FREE_EVENT (data, event);
-	STORE_EVENT_ITEM_COUNTER (event, profiler, klass, MONO_PROFILER_EVENT_DATA_TYPE_CLASS, MONO_PROFILER_EVENT_CLASS_UNLOAD, MONO_PROFILER_EVENT_KIND_END);
-	COMMIT_RESERVED_EVENTS (data);
-}
-
-static void
-method_start_jit (MonoProfiler *profiler, MonoMethod *method) {
-	ProfilerPerThreadData *data;
-	ProfilerEventData *event;
-	GET_PROFILER_THREAD_DATA (data);
-	GET_NEXT_FREE_EVENT (data, event);
-	thread_stack_push_jitted_safely (&(data->stack), method, TRUE);
-	STORE_EVENT_ITEM_COUNTER (event, profiler, method, MONO_PROFILER_EVENT_DATA_TYPE_METHOD, MONO_PROFILER_EVENT_METHOD_JIT, MONO_PROFILER_EVENT_KIND_START);
-	COMMIT_RESERVED_EVENTS (data);
-}
-static void
-method_end_jit (MonoProfiler *profiler, MonoMethod *method, int result) {
-	ProfilerPerThreadData *data;
-	ProfilerEventData *event;
-	GET_PROFILER_THREAD_DATA (data);
-	GET_NEXT_FREE_EVENT (data, event);
-	STORE_EVENT_ITEM_COUNTER (event, profiler, method, MONO_PROFILER_EVENT_DATA_TYPE_METHOD, MONO_PROFILER_EVENT_METHOD_JIT | RESULT_TO_EVENT_CODE (result), MONO_PROFILER_EVENT_KIND_END);
-	thread_stack_pop (&(data->stack));
-	COMMIT_RESERVED_EVENTS (data);
-}
-
-#if (HAS_OPROFILE)
-static void
-method_jit_result (MonoProfiler *prof, MonoMethod *method, MonoJitInfo* jinfo, int result) {
-	if (profiler->action_flags.oprofile && (result == MONO_PROFILE_OK)) {
-		MonoClass *klass = mono_method_get_class (method);
-		char *signature = mono_signature_get_desc (mono_method_signature (method), TRUE);
-		char *name = g_strdup_printf ("%s.%s:%s (%s)", mono_class_get_namespace (klass), mono_class_get_name (klass), mono_method_get_name (method), signature);
-		gpointer code_start = mono_jit_info_get_code_start (jinfo);
-		int code_size = mono_jit_info_get_code_size (jinfo);
-		
-		if (op_write_native_code (name, code_start, code_size)) {
-			g_warning ("Problem calling op_write_native_code\n");
-		}
-		
-		g_free (signature);
-		g_free (name);
-	}
-}
-#endif
-
-
-static void
-method_enter (MonoProfiler *profiler, MonoMethod *method) {
-	ProfilerPerThreadData *data;
-	
-	CHECK_PROFILER_ENABLED ();
-	GET_PROFILER_THREAD_DATA (data);
-	if (profiler->action_flags.track_calls) {
-		ProfilerEventData *event;
-		GET_NEXT_FREE_EVENT (data, event);
-		STORE_EVENT_ITEM_COUNTER (event, profiler, method, MONO_PROFILER_EVENT_DATA_TYPE_METHOD, MONO_PROFILER_EVENT_METHOD_CALL, MONO_PROFILER_EVENT_KIND_START);
-		COMMIT_RESERVED_EVENTS (data);
-	}
-	if (profiler->action_flags.track_stack) {
-		thread_stack_push_safely (&(data->stack), method);
-	}
-}
-static void
-method_leave (MonoProfiler *profiler, MonoMethod *method) {
-	ProfilerPerThreadData *data;
-	
-	CHECK_PROFILER_ENABLED ();
-	GET_PROFILER_THREAD_DATA (data);
-	if (profiler->action_flags.track_calls) {
-		ProfilerEventData *event;
-		GET_NEXT_FREE_EVENT (data, event);
-		STORE_EVENT_ITEM_COUNTER (event, profiler, method, MONO_PROFILER_EVENT_DATA_TYPE_METHOD, MONO_PROFILER_EVENT_METHOD_CALL, MONO_PROFILER_EVENT_KIND_END);
-		COMMIT_RESERVED_EVENTS (data);
-	}
-	if (profiler->action_flags.track_stack) {
-		thread_stack_pop (&(data->stack));
-	}
-}
-
-static void
-method_free (MonoProfiler *profiler, MonoMethod *method) {
-	ProfilerPerThreadData *data;
-	ProfilerEventData *event;
-	GET_PROFILER_THREAD_DATA (data);
-	GET_NEXT_FREE_EVENT (data, event);
-	STORE_EVENT_ITEM_COUNTER (event, profiler, method, MONO_PROFILER_EVENT_DATA_TYPE_METHOD, MONO_PROFILER_EVENT_METHOD_FREED, 0);
-	COMMIT_RESERVED_EVENTS (data);
-}
-
-static void
-thread_start (MonoProfiler *profiler, intptr_t tid) {
-	ProfilerPerThreadData *data;
-	ProfilerEventData *event;
-	GET_PROFILER_THREAD_DATA (data);
-	GET_NEXT_FREE_EVENT (data, event);
-	STORE_EVENT_NUMBER_COUNTER (event, profiler, tid, MONO_PROFILER_EVENT_DATA_TYPE_OTHER, MONO_PROFILER_EVENT_THREAD, MONO_PROFILER_EVENT_KIND_START);
-	COMMIT_RESERVED_EVENTS (data);
-}
-static void
-thread_end (MonoProfiler *profiler, intptr_t tid) {
-	ProfilerPerThreadData *data;
-	ProfilerEventData *event;
-	GET_PROFILER_THREAD_DATA (data);
-	GET_NEXT_FREE_EVENT (data, event);
-	STORE_EVENT_NUMBER_COUNTER (event, profiler, tid, MONO_PROFILER_EVENT_DATA_TYPE_OTHER, MONO_PROFILER_EVENT_THREAD, MONO_PROFILER_EVENT_KIND_END);
-	COMMIT_RESERVED_EVENTS (data);
-}
-
-static ProfilerEventData*
-save_stack_delta (MonoProfiler *profiler, ProfilerPerThreadData *data, ProfilerEventData *events, int unsaved_frames) {
-	int i;
-	
-	/* In this loop it is safe to simply increment "events" because MAX_EVENT_VALUE cannot be reached. */
-	STORE_EVENT_NUMBER_VALUE (events, profiler, data->stack.last_saved_top, MONO_PROFILER_EVENT_DATA_TYPE_OTHER, MONO_PROFILER_EVENT_STACK_SECTION, 0, unsaved_frames);
-	events++;
-	for (i = 0; i < unsaved_frames; i++) {
-		if (! thread_stack_index_from_top_is_jitted (&(data->stack), i)) {
-			STORE_EVENT_ITEM_VALUE (events, profiler, thread_stack_index_from_top (&(data->stack), i), MONO_PROFILER_EVENT_DATA_TYPE_METHOD, MONO_PROFILER_EVENT_METHOD_ALLOCATION_CALLER, 0, 0);
-		} else {
-			STORE_EVENT_ITEM_VALUE (events, profiler, thread_stack_index_from_top (&(data->stack), i), MONO_PROFILER_EVENT_DATA_TYPE_METHOD, MONO_PROFILER_EVENT_METHOD_ALLOCATION_JIT_TIME_CALLER, 0, 0);
-		}
-		events ++;
-	}
-	
-	data->stack.last_saved_top = data->stack.top;
-	
-	return events;
-}
-
-static void
-object_allocated (MonoProfiler *profiler, MonoObject *obj, MonoClass *klass) {
-	ProfilerPerThreadData *data;
-	ProfilerEventData *events;
-	int unsaved_frames;
-	int event_slot_count;
-	
-	GET_PROFILER_THREAD_DATA (data);
-	event_slot_count = 1;
-	if (profiler->action_flags.save_allocation_caller) {
-		event_slot_count ++;
-	}
-	if (profiler->action_flags.allocations_carry_id) {
-		event_slot_count ++;
-	}
-	if (profiler->action_flags.save_allocation_stack) {
-		unsaved_frames = thread_stack_count_unsaved_frames (&(data->stack));
-		event_slot_count += (unsaved_frames + 1);
-	} else {
-		unsaved_frames = 0;
-	}
-	RESERVE_EVENTS (data, events, event_slot_count);
-	
-	if (profiler->action_flags.save_allocation_stack) {
-		events = save_stack_delta (profiler, data, events, unsaved_frames);
-	}
-	
-	STORE_EVENT_ITEM_VALUE (events, profiler, klass, MONO_PROFILER_EVENT_DATA_TYPE_CLASS, MONO_PROFILER_EVENT_CLASS_ALLOCATION, 0, (guint64) mono_object_get_size (obj));
-	if (profiler->action_flags.unreachable_objects || profiler->action_flags.heap_shot || profiler->action_flags.collection_summary) {
-		STORE_ALLOCATED_OBJECT (data, obj);
-	}
-	
-	if (profiler->action_flags.save_allocation_caller) {
-		MonoMethod *caller = thread_stack_top (&(data->stack));
-		gboolean caller_is_jitted = thread_stack_top_is_jitted (&(data->stack));
-		int index = 1;
-		/* In this loop it is safe to simply increment "events" because MAX_EVENT_VALUE cannot be reached. */
-		events ++;
-		
-		while ((caller != NULL) && (caller->wrapper_type == MONO_WRAPPER_MANAGED_TO_NATIVE)) {
-			caller = thread_stack_index_from_top (&(data->stack), index);
-			caller_is_jitted = thread_stack_index_from_top_is_jitted (&(data->stack), index);
-			index ++;
-		}
-		if (! caller_is_jitted) {
-			STORE_EVENT_ITEM_VALUE (events, profiler, caller, MONO_PROFILER_EVENT_DATA_TYPE_METHOD, MONO_PROFILER_EVENT_METHOD_ALLOCATION_CALLER, 0, 0);
-		} else {
-			STORE_EVENT_ITEM_VALUE (events, profiler, caller, MONO_PROFILER_EVENT_DATA_TYPE_METHOD, MONO_PROFILER_EVENT_METHOD_ALLOCATION_JIT_TIME_CALLER, 0, 0);
-		}
-	}
-	if (profiler->action_flags.allocations_carry_id) {
-		events ++;
-		STORE_EVENT_ITEM_VALUE (events, profiler, obj, MONO_PROFILER_EVENT_DATA_TYPE_OTHER, MONO_PROFILER_EVENT_ALLOCATION_OBJECT_ID, 0, 0);
-	}
-	
-	COMMIT_RESERVED_EVENTS (data);
-}
-
-static void
-monitor_event (MonoProfiler *profiler, MonoObject *obj, MonoProfilerMonitorEvent event) {
-	ProfilerPerThreadData *data;
-	ProfilerEventData *events;
-	MonoClass *klass;
-	int unsaved_frames;
-	int event_slot_count;
-	
-	CHECK_PROFILER_ENABLED ();
-	
-	GET_PROFILER_THREAD_DATA (data);
-	klass = mono_object_get_class (obj);
-	
-	unsaved_frames = thread_stack_count_unsaved_frames (&(data->stack));
-	if (unsaved_frames > 0) {
-		event_slot_count = unsaved_frames + 3;
-	} else {
-		event_slot_count = 2;
-	}
-	
-	RESERVE_EVENTS (data, events, event_slot_count);
-	if (unsaved_frames > 0) {
-		events = save_stack_delta (profiler, data, events, unsaved_frames);
-	}
-	STORE_EVENT_ITEM_COUNTER (events, profiler, klass, MONO_PROFILER_EVENT_DATA_TYPE_CLASS, MONO_PROFILER_EVENT_CLASS_MONITOR, MONO_PROFILER_EVENT_KIND_START);
-	INCREMENT_EVENT (events);
-	STORE_EVENT_ITEM_VALUE (events, profiler, obj, MONO_PROFILER_EVENT_DATA_TYPE_OTHER, MONO_PROFILER_EVENT_OBJECT_MONITOR, 0, event);
-	COMMIT_RESERVED_EVENTS (data);
-}
-
-static void
-statistical_call_chain (MonoProfiler *profiler, int call_chain_depth, guchar **ips, void *context) {
-	MonoDomain *domain = mono_domain_get ();
-	ProfilerStatisticalData *data;
-	unsigned int index;
-	
-	CHECK_PROFILER_ENABLED ();
-	do {
-		data = profiler->statistical_data;
-		index = InterlockedIncrement ((int*) &data->next_free_index);
-		
-		if (index <= data->end_index) {
-			unsigned int base_index = (index - 1) * (profiler->statistical_call_chain_depth + 1);
-			unsigned int call_chain_index = 0;
-			
-			//printf ("[statistical_call_chain] (%d)\n", call_chain_depth);
-			while (call_chain_index < call_chain_depth) {
-				ProfilerStatisticalHit *hit = & (data->hits [base_index + call_chain_index]);
-				//printf ("[statistical_call_chain] [%d] = %p\n", base_index + call_chain_index, ips [call_chain_index]);
-				hit->address = (gpointer) ips [call_chain_index];
-				hit->domain = domain;
-				call_chain_index ++;
-			}
-			while (call_chain_index <= profiler->statistical_call_chain_depth) {
-				ProfilerStatisticalHit *hit = & (data->hits [base_index + call_chain_index]);
-				//printf ("[statistical_call_chain] [%d] = NULL\n", base_index + call_chain_index);
-				hit->address = NULL;
-				hit->domain = NULL;
-				call_chain_index ++;
-			}
-		} else {
-			/* Check if we are the one that must swap the buffers */
-			if (index == data->end_index + 1) {
-				ProfilerStatisticalData *new_data;
-
-				/* In the *impossible* case that the writer thread has not finished yet, */
-				/* loop waiting for it and meanwhile lose all statistical events... */
-				do {
-					/* First, wait that it consumed the ready buffer */
-					while (profiler->statistical_data_ready != NULL);
-					/* Then, wait that it produced the free buffer */
-					new_data = profiler->statistical_data_second_buffer;
-				} while (new_data == NULL);
-
-				profiler->statistical_data_ready = data;
-				profiler->statistical_data = new_data;
-				profiler->statistical_data_second_buffer = NULL;
-				WRITER_EVENT_RAISE ();
-				/* Otherwise exit from the handler and drop the event... */
-			} else {
-				break;
-			}
-			
-			/* Loop again, hoping to acquire a free slot this time (otherwise the event will be dropped) */
-			data = NULL;
-		}
-	} while (data == NULL);
-}
-
-static void
-statistical_hit (MonoProfiler *profiler, guchar *ip, void *context) {
-	MonoDomain *domain = mono_domain_get ();
-	ProfilerStatisticalData *data;
-	unsigned int index;
-	
-	CHECK_PROFILER_ENABLED ();
-	do {
-		data = profiler->statistical_data;
-		index = InterlockedIncrement ((int*) &data->next_free_index);
-		
-		if (index <= data->end_index) {
-			ProfilerStatisticalHit *hit = & (data->hits [index - 1]);
-			hit->address = (gpointer) ip;
-			hit->domain = domain;
-		} else {
-			/* Check if we are the one that must swap the buffers */
-			if (index == data->end_index + 1) {
-				ProfilerStatisticalData *new_data;
-
-				/* In the *impossible* case that the writer thread has not finished yet, */
-				/* loop waiting for it and meanwhile lose all statistical events... */
-				do {
-					/* First, wait that it consumed the ready buffer */
-					while (profiler->statistical_data_ready != NULL);
-					/* Then, wait that it produced the free buffer */
-					new_data = profiler->statistical_data_second_buffer;
-				} while (new_data == NULL);
-				
-				profiler->statistical_data_ready = data;
-				profiler->statistical_data = new_data;
-				profiler->statistical_data_second_buffer = NULL;
-				WRITER_EVENT_RAISE ();
-			}
-			
-			/* Loop again, hoping to acquire a free slot this time */
-			data = NULL;
-		}
-	} while (data == NULL);
-}
-
-static MonoProfilerEvents
-gc_event_code_from_profiler_event (MonoGCEvent event) {
-	switch (event) {
-	case MONO_GC_EVENT_START:
-	case MONO_GC_EVENT_END:
-		return MONO_PROFILER_EVENT_GC_COLLECTION;
-	case MONO_GC_EVENT_MARK_START:
-	case MONO_GC_EVENT_MARK_END:
-		return MONO_PROFILER_EVENT_GC_MARK;
-	case MONO_GC_EVENT_RECLAIM_START:
-	case MONO_GC_EVENT_RECLAIM_END:
-		return MONO_PROFILER_EVENT_GC_SWEEP;
-	case MONO_GC_EVENT_PRE_STOP_WORLD:
-	case MONO_GC_EVENT_POST_STOP_WORLD:
-		return MONO_PROFILER_EVENT_GC_STOP_WORLD;
-	case MONO_GC_EVENT_PRE_START_WORLD:
-	case MONO_GC_EVENT_POST_START_WORLD:
-		return MONO_PROFILER_EVENT_GC_START_WORLD;
-	default:
-		g_assert_not_reached ();
-		return 0;
-	}
-}
-
-static MonoProfilerEventKind
-gc_event_kind_from_profiler_event (MonoGCEvent event) {
-	switch (event) {
-	case MONO_GC_EVENT_START:
-	case MONO_GC_EVENT_MARK_START:
-	case MONO_GC_EVENT_RECLAIM_START:
-	case MONO_GC_EVENT_PRE_STOP_WORLD:
-	case MONO_GC_EVENT_PRE_START_WORLD:
-		return MONO_PROFILER_EVENT_KIND_START;
-	case MONO_GC_EVENT_END:
-	case MONO_GC_EVENT_MARK_END:
-	case MONO_GC_EVENT_RECLAIM_END:
-	case MONO_GC_EVENT_POST_START_WORLD:
-	case MONO_GC_EVENT_POST_STOP_WORLD:
-		return MONO_PROFILER_EVENT_KIND_END;
-	default:
-		g_assert_not_reached ();
-		return 0;
-	}
-}
-
-static gboolean
-dump_current_heap_snapshot (void) {
-	gboolean result;
-	
-	if (profiler->heap_shot_was_requested) {
-		result = TRUE;
-	} else {
-		if (profiler->dump_next_heap_snapshots > 0) {
-			profiler->dump_next_heap_snapshots--;
-			result = TRUE;
-		} else if (profiler->dump_next_heap_snapshots < 0) {
-			result = TRUE;
-		} else {
-			result = FALSE;
-		}
-	}
-	
-	return result;
-}
-
-static void
-profiler_heap_buffers_setup (ProfilerHeapShotHeapBuffers *heap) {
-	heap->buffers = g_new (ProfilerHeapShotHeapBuffer, 1);
-	heap->buffers->previous = NULL;
-	heap->buffers->next = NULL;
-	heap->buffers->start_slot = &(heap->buffers->buffer [0]);
-	heap->buffers->end_slot = &(heap->buffers->buffer [PROFILER_HEAP_SHOT_HEAP_BUFFER_SIZE]);
-	heap->last = heap->buffers;
-	heap->current = heap->buffers;
-	heap->first_free_slot = & (heap->buffers->buffer [0]);
-}
-static void
-profiler_heap_buffers_clear (ProfilerHeapShotHeapBuffers *heap) {
-	heap->buffers = NULL;
-	heap->last = NULL;
-	heap->current = NULL;
-	heap->first_free_slot = NULL;
-}
-static void
-profiler_heap_buffers_free (ProfilerHeapShotHeapBuffers *heap) {
-	ProfilerHeapShotHeapBuffer *current = heap->buffers;
-	while (current != NULL) {
-		ProfilerHeapShotHeapBuffer *next = current->next;
-		g_free (current);
-		current = next;
-	}
-	profiler_heap_buffers_clear (heap);
-}
-
-static int
-report_object_references (gpointer *start, ClassIdMappingElement *layout, ProfilerHeapShotWriteJob *job) {
-	int reported_references = 0;
-	int slot;
-	
-	for (slot = 0; slot < layout->data.layout.slots; slot ++) {
-		gboolean slot_has_reference;
-		if (layout->data.layout.slots <= CLASS_LAYOUT_PACKED_BITMAP_SIZE) {
-			if (layout->data.bitmap.compact & (((guint64)1) << slot)) {
-				slot_has_reference = TRUE;
-			} else {
-				slot_has_reference = FALSE;
-			}
-		} else {
-			if (layout->data.bitmap.extended [slot >> 3] & (1 << (slot & 7))) {
-				slot_has_reference = TRUE;
-			} else {
-				slot_has_reference = FALSE;
-			}
-		}
-		
-		if (slot_has_reference) {
-			gpointer field = start [slot];
-			
-			if ((field != NULL) && mono_object_is_alive (field)) {
-				reported_references ++;
-				WRITE_HEAP_SHOT_JOB_VALUE (job, field);
-			}
-		}
-	}
-	
-	return reported_references;
-}
-
-static void
-profiler_heap_report_object_reachable (ProfilerHeapShotWriteJob *job, MonoObject *obj) {
-	if (job != NULL) {
-		MonoClass *klass = mono_object_get_class (obj);
-		ClassIdMappingElement *class_id = class_id_mapping_element_get (klass);
-		if (class_id == NULL) {
-			printf ("profiler_heap_report_object_reachable: class %p (%s.%s) has no id\n", klass, mono_class_get_namespace (klass), mono_class_get_name (klass));
-		}
-		g_assert (class_id != NULL);
-		
-		if (job->summary.capacity > 0) {
-			guint32 id = class_id->id;
-			g_assert (id < job->summary.capacity);
-			
-			job->summary.per_class_data [id].reachable.instances ++;
-			job->summary.per_class_data [id].reachable.bytes += mono_object_get_size (obj);
-		}
-		if (profiler->action_flags.heap_shot && job->dump_heap_data) {
-			int reference_counter = 0;
-			gpointer *reference_counter_location;
-			
-			WRITE_HEAP_SHOT_JOB_VALUE_WITH_CODE (job, obj, HEAP_CODE_OBJECT);
-#if DEBUG_HEAP_PROFILER
-			printf ("profiler_heap_report_object_reachable: reported object %p at cursor %p\n", obj, (job->cursor - 1));
-#endif
-			WRITE_HEAP_SHOT_JOB_VALUE (job, NULL);
-			reference_counter_location = job->cursor - 1;
-			
-			if (mono_class_get_rank (klass)) {
-				MonoArray *array = (MonoArray *) obj;
-				MonoClass *element_class = mono_class_get_element_class (klass);
-				ClassIdMappingElement *element_id = class_id_mapping_element_get (element_class);
-				
-				g_assert (element_id != NULL);
-				if (element_id->data.layout.slots == CLASS_LAYOUT_NOT_INITIALIZED) {
-					class_id_mapping_element_build_layout_bitmap (element_class, element_id);
-				}
-				if (! mono_class_is_valuetype (element_class)) {
-					int length = mono_array_length (array);
-					int i;
-					for (i = 0; i < length; i++) {
-						MonoObject *array_element = mono_array_get (array, MonoObject*, i);
-						if ((array_element != NULL) && mono_object_is_alive (array_element)) {
-							reference_counter ++;
-							WRITE_HEAP_SHOT_JOB_VALUE (job, array_element);
-						}
-					}
-				} else if (element_id->data.layout.references > 0) {
-					int length = mono_array_length (array);
-					int array_element_size = mono_array_element_size (klass);
-					int i;
-					for (i = 0; i < length; i++) {
-						gpointer array_element_address = mono_array_addr_with_size (array, array_element_size, i);
-						reference_counter += report_object_references (array_element_address, element_id, job);
-					}
-				}
-			} else {
-				if (class_id->data.layout.slots == CLASS_LAYOUT_NOT_INITIALIZED) {
-					class_id_mapping_element_build_layout_bitmap (klass, class_id);
-				}
-				if (class_id->data.layout.references > 0) {
-					reference_counter += report_object_references ((gpointer)(((char*)obj) + sizeof (MonoObject)), class_id, job);
-				}
-			}
-			
-			*reference_counter_location = GINT_TO_POINTER (reference_counter);
-#if DEBUG_HEAP_PROFILER
-			printf ("profiler_heap_report_object_reachable: updated reference_counter_location %p with value %d\n", reference_counter_location, reference_counter);
-#endif
-		}
-	}
-}
-static void
-profiler_heap_report_object_unreachable (ProfilerHeapShotWriteJob *job, MonoObject *obj) {
-	if (job != NULL) {
-		MonoClass *klass = mono_object_get_class (obj);
-		guint32 size = mono_object_get_size (obj);
-		
-		if (job->summary.capacity > 0) {
-			ClassIdMappingElement *class_id = class_id_mapping_element_get (klass);
-			guint32 id;
-			
-			if (class_id == NULL) {
-				printf ("profiler_heap_report_object_reachable: class %p (%s.%s) has no id\n", klass, mono_class_get_namespace (klass), mono_class_get_name (klass));
-			}
-			g_assert (class_id != NULL);
-			id = class_id->id;
-			g_assert (id < job->summary.capacity);
-			
-			job->summary.per_class_data [id].unreachable.instances ++;
-			job->summary.per_class_data [id].unreachable.bytes += size;
-		}
-		if (profiler->action_flags.unreachable_objects && job->dump_heap_data) {
-#if DEBUG_HEAP_PROFILER
-			printf ("profiler_heap_report_object_unreachable: at job %p writing klass %p\n", job, klass);
-#endif
-			WRITE_HEAP_SHOT_JOB_VALUE_WITH_CODE (job, klass, HEAP_CODE_FREE_OBJECT_CLASS);
-	
-#if DEBUG_HEAP_PROFILER
-			printf ("profiler_heap_report_object_unreachable: at job %p writing size %p\n", job, GUINT_TO_POINTER (size));
-#endif
-			WRITE_HEAP_SHOT_JOB_VALUE (job, GUINT_TO_POINTER (size));
-		}
-	}
-}
-
-static void
-profiler_heap_add_object (ProfilerHeapShotHeapBuffers *heap, ProfilerHeapShotWriteJob *job, MonoObject *obj) {
-	if (heap->first_free_slot >= heap->current->end_slot) {
-		if (heap->current->next != NULL) {
-			heap->current = heap->current->next;
-		} else {
-			ProfilerHeapShotHeapBuffer *buffer = g_new (ProfilerHeapShotHeapBuffer, 1);
-			buffer->previous = heap->last;
-			buffer->next = NULL;
-			buffer->start_slot = &(buffer->buffer [0]);
-			buffer->end_slot = &(buffer->buffer [PROFILER_HEAP_SHOT_HEAP_BUFFER_SIZE]);
-			heap->current = buffer;
-			heap->last->next = buffer;
-			heap->last = buffer;
-		}
-		heap->first_free_slot = &(heap->current->buffer [0]);
-	}
-	
-	*(heap->first_free_slot) = obj;
-	heap->first_free_slot ++;
-	profiler_heap_report_object_reachable (job, obj);
-}
-
-static MonoObject*
-profiler_heap_pop_object_from_end (ProfilerHeapShotHeapBuffers *heap, ProfilerHeapShotWriteJob *job, MonoObject** current_slot) {
-	while (heap->first_free_slot != current_slot) {
-		MonoObject* obj;
-		
-		if (heap->first_free_slot > heap->current->start_slot) {
-			heap->first_free_slot --;
-		} else {
-			heap->current = heap->current->previous;
-			g_assert (heap->current != NULL);
-			heap->first_free_slot = heap->current->end_slot - 1;
-		}
-		
-		obj = *(heap->first_free_slot);
-		
-		if (mono_object_is_alive (obj)) {
-			profiler_heap_report_object_reachable (job, obj);
-			return obj;
-		} else {
-			profiler_heap_report_object_unreachable (job, obj);
-		}
-	}
-	return NULL;
-}
-
-static void
-profiler_heap_scan (ProfilerHeapShotHeapBuffers *heap, ProfilerHeapShotWriteJob *job) {
-	ProfilerHeapShotHeapBuffer *current_buffer = heap->buffers;
-	MonoObject** current_slot = current_buffer->start_slot;
-	
-	while (current_slot != heap->first_free_slot) {
-		MonoObject *obj = *current_slot;
-		if (mono_object_is_alive (obj)) {
-			profiler_heap_report_object_reachable (job, obj);
-		} else {
-			profiler_heap_report_object_unreachable (job, obj);
-			*current_slot = profiler_heap_pop_object_from_end (heap, job, current_slot);
-		}
-		
-		if (*current_slot != NULL) {
-			current_slot ++;
-			
-			if (current_slot == current_buffer->end_slot) {
-				current_buffer = current_buffer->next;
-				g_assert (current_buffer != NULL);
-				current_slot = current_buffer->start_slot;
-			}
-		}
-	}
-}
-
-static inline gboolean
-heap_shot_write_job_should_be_created (gboolean dump_heap_data) {
-	return dump_heap_data || profiler->action_flags.unreachable_objects || profiler->action_flags.collection_summary;
-}
-
-static void
-process_gc_event (MonoProfiler *profiler, gboolean do_heap_profiling, MonoGCEvent ev) {
-	static gboolean dump_heap_data;
-	
-	switch (ev) {
-	case MONO_GC_EVENT_PRE_STOP_WORLD:
-		// Get the lock, so we are sure nobody is flushing events during the collection,
-		// and we can update all mappings (building the class descriptors).
-		// This is necessary also during lock profiling (even if do_heap_profiling is FALSE).
-		LOCK_PROFILER ();
-		break;
-	case MONO_GC_EVENT_POST_STOP_WORLD:
-		if (do_heap_profiling) {
-			dump_heap_data = dump_current_heap_snapshot ();
-			if (heap_shot_write_job_should_be_created (dump_heap_data)) {
-				ProfilerPerThreadData *data;
-				// Update all mappings, so that we have built all the class descriptors.
-				flush_all_mappings ();
-				// Also write all event buffers, so that allocations are recorded.
-				for (data = profiler->per_thread_data; data != NULL; data = data->next) {
-					write_thread_data_block (data);
-				}
-			}
-		} else {
-			dump_heap_data = FALSE;
-		}
-		// Release lock...
-		UNLOCK_PROFILER ();
-		break;
-	case MONO_GC_EVENT_MARK_END: {
-		if (do_heap_profiling) {
-			ProfilerHeapShotWriteJob *job;
-			ProfilerPerThreadData *data;
-			
-			if (heap_shot_write_job_should_be_created (dump_heap_data)) {
-				job = profiler_heap_shot_write_job_new (profiler->heap_shot_was_requested, dump_heap_data, profiler->garbage_collection_counter);
-				profiler->heap_shot_was_requested = FALSE;
-				MONO_PROFILER_GET_CURRENT_COUNTER (job->start_counter);
-				MONO_PROFILER_GET_CURRENT_TIME (job->start_time);
-			} else {
-				job = NULL;
-			}
-			
-			profiler_heap_scan (&(profiler->heap), job);
-			
-			for (data = profiler->per_thread_data; data != NULL; data = data->next) {
-				ProfilerHeapShotObjectBuffer *buffer;
-				for (buffer = data->heap_shot_object_buffers; buffer != NULL; buffer = buffer->next) {
-					MonoObject **cursor;
-					for (cursor = buffer->first_unprocessed_slot; cursor < buffer->next_free_slot; cursor ++) {
-						MonoObject *obj = *cursor;
-#if DEBUG_HEAP_PROFILER
-						printf ("gc_event: in object buffer %p(%p-%p) cursor at %p has object %p ", buffer, &(buffer->buffer [0]), buffer->end, cursor, obj);
-#endif
-						if (mono_object_is_alive (obj)) {
-#if DEBUG_HEAP_PROFILER
-							printf ("(object is alive, adding to heap)\n");
-#endif
-							profiler_heap_add_object (&(profiler->heap), job, obj);
-						} else {
-#if DEBUG_HEAP_PROFILER
-							printf ("(object is unreachable, reporting in job)\n");
-#endif
-							profiler_heap_report_object_unreachable (job, obj);
-						}
-					}
-					buffer->first_unprocessed_slot = cursor;
-				}
-			}
-			
-			if (job != NULL) {
-				MONO_PROFILER_GET_CURRENT_COUNTER (job->end_counter);
-				MONO_PROFILER_GET_CURRENT_TIME (job->end_time);
-				
-				profiler_add_heap_shot_write_job (job);
-				profiler_free_heap_shot_write_jobs ();
-				WRITER_EVENT_RAISE ();
-			}
-		}
-		break;
-	}
-	default:
-		break;
-	}
-}
-
-static void
-gc_event (MonoProfiler *profiler, MonoGCEvent ev, int generation) {
-	ProfilerPerThreadData *data;
-	ProfilerEventData *event;
-	gboolean do_heap_profiling = profiler->action_flags.unreachable_objects || profiler->action_flags.heap_shot || profiler->action_flags.collection_summary;
-	guint32 event_value;
-	
-	if (ev == MONO_GC_EVENT_START) {
-		profiler->garbage_collection_counter ++;
-	}
-	
-	event_value = (profiler->garbage_collection_counter << 8) | generation;
-	
-	if (ev == MONO_GC_EVENT_POST_STOP_WORLD) {
-		process_gc_event (profiler, do_heap_profiling, ev);
-	}
-	
-	/* Check if the gc event should be recorded. */
-	if (profiler->action_flags.report_gc_events || do_heap_profiling) {
-		GET_PROFILER_THREAD_DATA (data);
-		GET_NEXT_FREE_EVENT (data, event);
-		STORE_EVENT_NUMBER_COUNTER (event, profiler, event_value, MONO_PROFILER_EVENT_DATA_TYPE_OTHER, gc_event_code_from_profiler_event (ev), gc_event_kind_from_profiler_event (ev));
-		COMMIT_RESERVED_EVENTS (data);
-	}
-	
-	if (ev != MONO_GC_EVENT_POST_STOP_WORLD) {
-		process_gc_event (profiler, do_heap_profiling, ev);
-	}
-}
-
-static void
-gc_resize (MonoProfiler *profiler, gint64 new_size) {
-	ProfilerPerThreadData *data;
-	ProfilerEventData *event;
-	GET_PROFILER_THREAD_DATA (data);
-	GET_NEXT_FREE_EVENT (data, event);
-	profiler->garbage_collection_counter ++;
-	STORE_EVENT_NUMBER_VALUE (event, profiler, new_size, MONO_PROFILER_EVENT_DATA_TYPE_OTHER, MONO_PROFILER_EVENT_GC_RESIZE, 0, profiler->garbage_collection_counter);
-	COMMIT_RESERVED_EVENTS (data);
-}
-
-static void
-runtime_initialized (MonoProfiler *profiler) {
-	LOG_WRITER_THREAD ("runtime_initialized: initializing internal calls.\n");
-	mono_add_internal_call ("Mono.Profiler.RuntimeControls::EnableProfiler", enable_profiler);
-	mono_add_internal_call ("Mono.Profiler.RuntimeControls::DisableProfiler", disable_profiler);
-	mono_add_internal_call ("Mono.Profiler.RuntimeControls::TakeHeapSnapshot", request_heap_snapshot);
-	LOG_WRITER_THREAD ("runtime_initialized: initialized internal calls.\n");
-}
-
-
-#define MAX_COMMAND_LENGTH (1024)
-static int server_socket;
-static int command_socket;
-
-static void
-write_user_response (const char *response) {
-	LOG_USER_THREAD ("write_user_response: writing response:");
-	LOG_USER_THREAD (response);
-	send (command_socket, response, strlen (response), 0);
-}
-
-static void
-execute_user_command (char *command) {
-	char *line_feed;
-	
-	LOG_USER_THREAD ("execute_user_command: executing command:");
-	LOG_USER_THREAD (command);
-	
-	/* Ignore leading and trailing '\r' */
-	line_feed = strchr (command, '\r');
-	if (line_feed == command) {
-		command ++;
-		line_feed = strchr (command, '\r');
-	}
-	if ((line_feed != NULL) && (* (line_feed + 1) == 0)) {
-		*line_feed = 0;
-	}
-	
-	if (strcmp (command, "enable") == 0) {
-		LOG_USER_THREAD ("execute_user_command: enabling profiler");
-		enable_profiler ();
-		write_user_response ("DONE\n");
-	} else if (strcmp (command, "disable") == 0) {
-		LOG_USER_THREAD ("execute_user_command: disabling profiler");
-		disable_profiler ();
-		write_user_response ("DONE\n");
-	} else if (strcmp (command, "heap-snapshot") == 0) {
-		LOG_USER_THREAD ("execute_user_command: taking heap snapshot");
-		profiler->heap_shot_was_requested = TRUE;
-		WRITER_EVENT_RAISE ();
-		write_user_response ("DONE\n");
-	} else if (strstr (command, "heap-snapshot-counter") == 0) {
-		char *equals; 
-		LOG_USER_THREAD ("execute_user_command: changing heap counter");
-		equals = strstr (command, "=");
-		if (equals != NULL) {
-			equals ++;
-			if (strcmp (equals, "all") == 0) {
-				LOG_USER_THREAD ("execute_user_command: heap counter is \"all\"");
-				profiler->garbage_collection_counter = -1;
-			} else if (strcmp (equals, "none") == 0) {
-				LOG_USER_THREAD ("execute_user_command: heap counter is \"none\"");
-				profiler->garbage_collection_counter = 0;
-			} else {
-				profiler->garbage_collection_counter = atoi (equals);
-			}
-			write_user_response ("DONE\n");
-		} else {
-			write_user_response ("ERROR\n");
-		}
-		profiler->heap_shot_was_requested = TRUE;
-	} else {
-		LOG_USER_THREAD ("execute_user_command: command not recognized");
-		write_user_response ("ERROR\n");
-	}
-}
-
-static gboolean
-process_user_commands (void) {
-	char *command_buffer = malloc (MAX_COMMAND_LENGTH);
-	int command_buffer_current_index = 0;
-	gboolean loop = TRUE;
-	gboolean result = TRUE;
-	
-	while (loop) {
-		int unprocessed_characters;
-		
-		LOG_USER_THREAD ("process_user_commands: reading from socket...");
-		unprocessed_characters = recv (command_socket, command_buffer + command_buffer_current_index, MAX_COMMAND_LENGTH - command_buffer_current_index, 0);
-		
-		if (unprocessed_characters > 0) {
-			char *command_end = NULL;
-			
-			LOG_USER_THREAD ("process_user_commands: received characters.");
-			
-			do {
-				if (command_end != NULL) {
-					*command_end = 0;
-					execute_user_command (command_buffer);
-					unprocessed_characters -= (((command_end - command_buffer) - command_buffer_current_index) + 1);
-					
-					if (unprocessed_characters > 0) {
-						memmove (command_buffer, command_end + 1, unprocessed_characters);
-					}
-					command_buffer_current_index = 0;
-				}
-				
-				command_end = memchr (command_buffer, '\n', command_buffer_current_index + unprocessed_characters);
-			} while (command_end != NULL);
-			
-			command_buffer_current_index += unprocessed_characters;
-			
-		} else if (unprocessed_characters == 0) {
-			LOG_USER_THREAD ("process_user_commands: received no character.");
-			result = TRUE;
-			loop = FALSE;
-		} else {
-			LOG_USER_THREAD ("process_user_commands: received error.");
-			result = FALSE;
-			loop = FALSE;
-		}
-	}
-	
-	free (command_buffer);
-	return result;
-}
-
-static guint32
-user_thread (gpointer nothing) {
-	struct sockaddr_in server_address;
-	
-	server_socket = -1;
-	command_socket = -1;
-	
-	LOG_USER_THREAD ("user_thread: starting up...");
-	
-	server_socket = socket (AF_INET, SOCK_STREAM, 0);
-	if (server_socket < 0) {
-		LOG_USER_THREAD ("user_thread: error creating socket.");
-		return 0;
-	}
-	memset (& server_address, 0, sizeof (server_address));
-	
-	server_address.sin_family = AF_INET;
-	server_address.sin_addr.s_addr = INADDR_ANY;
-	if ((profiler->command_port < 1023) || (profiler->command_port > 65535)) {
-		LOG_USER_THREAD ("user_thread: invalid port number.");
-		return 0;
-	}
-	server_address.sin_port = htons (profiler->command_port);
-	
-	if (bind (server_socket, (struct sockaddr *) &server_address, sizeof(server_address)) < 0) {
-		LOG_USER_THREAD ("user_thread: error binding socket.");
-		close (server_socket);
-		return 0;
-	}
-	
-	LOG_USER_THREAD ("user_thread: listening...\n");
-	listen (server_socket, 1);
-	command_socket = accept (server_socket, NULL, NULL);
-	if (command_socket < 0) {
-		LOG_USER_THREAD ("user_thread: error accepting socket.");
-		close (server_socket);
-		return 0;
-	}
-	
-	LOG_USER_THREAD ("user_thread: processing user commands...");
-	process_user_commands ();
-	
-	LOG_USER_THREAD ("user_thread: exiting cleanly.");
-	close (server_socket);
-	close (command_socket);
-	return 0;
-}
-
-
-/* called at the end of the program */
-static void
-profiler_shutdown (MonoProfiler *prof)
-{
-	ProfilerPerThreadData* current_thread_data;
-	ProfilerPerThreadData* next_thread_data;
-	
-	LOG_WRITER_THREAD ("profiler_shutdown: zeroing relevant flags");
-	mono_profiler_set_events (0);
-	/* During shutdown searching for MonoJitInfo is not possible... */
-	if (profiler->statistical_call_chain_strategy == MONO_PROFILER_CALL_CHAIN_MANAGED) {
-		mono_profiler_install_statistical_call_chain (NULL, 0, MONO_PROFILER_CALL_CHAIN_NONE);
-	}
-	//profiler->flags = 0;
-	//profiler->action_flags.unreachable_objects = FALSE;
-	//profiler->action_flags.heap_shot = FALSE;
-	
-	LOG_WRITER_THREAD ("profiler_shutdown: asking stats thread to exit");
-	profiler->terminate_writer_thread = TRUE;
-	WRITER_EVENT_RAISE ();
-	LOG_WRITER_THREAD ("profiler_shutdown: waiting for stats thread to exit");
-	WAIT_WRITER_THREAD ();
-	LOG_WRITER_THREAD ("profiler_shutdown: stats thread should be dead now");
-	WRITER_EVENT_DESTROY ();
-	
-	LOCK_PROFILER ();
-	flush_everything ();
-	MONO_PROFILER_GET_CURRENT_TIME (profiler->end_time);
-	MONO_PROFILER_GET_CURRENT_COUNTER (profiler->end_counter);
-	write_end_block ();
-	FLUSH_FILE ();
-	CLOSE_FILE();
-	mono_profiler_install_code_chunk_new (NULL);
-	mono_profiler_install_code_chunk_destroy (NULL);
-	mono_profiler_install_code_buffer_new (NULL);
-	profiler_code_chunks_cleanup (& (profiler->code_chunks));
-	UNLOCK_PROFILER ();
-	
-	g_free (profiler->file_name);
-	if (profiler->file_name_suffix != NULL) {
-		g_free (profiler->file_name_suffix);
-	}
-	
-	method_id_mapping_destroy (profiler->methods);
-	class_id_mapping_destroy (profiler->classes);
-	g_hash_table_destroy (profiler->loaded_assemblies);
-	g_hash_table_destroy (profiler->loaded_modules);
-	g_hash_table_destroy (profiler->loaded_appdomains);
-	
-	FREE_PROFILER_THREAD_DATA ();
-	
-	for (current_thread_data = profiler->per_thread_data; current_thread_data != NULL; current_thread_data = next_thread_data) {
-		next_thread_data = current_thread_data->next;
-		profiler_per_thread_data_destroy (current_thread_data);
-	}
-	if (profiler->statistical_data != NULL) {
-		profiler_statistical_data_destroy (profiler->statistical_data);
-	}
-	if (profiler->statistical_data_ready != NULL) {
-		profiler_statistical_data_destroy (profiler->statistical_data_ready);
-	}
-	if (profiler->statistical_data_second_buffer != NULL) {
-		profiler_statistical_data_destroy (profiler->statistical_data_second_buffer);
-	}
-	if (profiler->executable_regions != NULL) {
-		profiler_executable_memory_regions_destroy (profiler->executable_regions);
-	}
-	
-	profiler_heap_buffers_free (&(profiler->heap));
-	
-	profiler_free_write_buffers ();
-	profiler_destroy_heap_shot_write_jobs ();
-	
-	DELETE_PROFILER_MUTEX ();
-	
-#if (HAS_OPROFILE)
-	if (profiler->action_flags.oprofile) {
-		op_close_agent ();
-	}
-#endif
-	
-	g_free (profiler);
-	profiler = NULL;
-}
-
-#define FAIL_ARGUMENT_CHECK(message) do {\
-	failure_message = (message);\
-	goto failure_handling;\
-} while (0)
-#define FAIL_PARSING_VALUED_ARGUMENT FAIL_ARGUMENT_CHECK("cannot parse valued argument %s")
-#define FAIL_PARSING_FLAG_ARGUMENT FAIL_ARGUMENT_CHECK("cannot parse flag argument %s")
-#define CHECK_CONDITION(condition,message) do {\
-	gboolean result = (condition);\
-	if (result) {\
-		FAIL_ARGUMENT_CHECK (message);\
-	}\
-} while (0)
-#define FAIL_IF_HAS_MINUS CHECK_CONDITION(has_minus,"minus ('-') modifier not allowed for argument %s")
-#define TRUE_IF_NOT_MINUS ((!has_minus)?TRUE:FALSE)
-
-#define DEFAULT_ARGUMENTS "s"
-static void
-setup_user_options (const char *arguments) {
-	gchar **arguments_array, **current_argument;
-	detect_fast_timer ();
-	
-	profiler->file_name = NULL;
-	profiler->file_name_suffix = NULL;
-	profiler->per_thread_buffer_size = 10000;
-	profiler->statistical_buffer_size = 10000;
-	profiler->statistical_call_chain_depth = 0;
-	profiler->statistical_call_chain_strategy = MONO_PROFILER_CALL_CHAIN_NATIVE;
-	profiler->write_buffer_size = 1024;
-	profiler->dump_next_heap_snapshots = 0;
-	profiler->heap_shot_was_requested = FALSE;
-	profiler->flags = MONO_PROFILE_APPDOMAIN_EVENTS|
-			MONO_PROFILE_ASSEMBLY_EVENTS|
-			MONO_PROFILE_MODULE_EVENTS|
-			MONO_PROFILE_CLASS_EVENTS|
-			MONO_PROFILE_METHOD_EVENTS|
-			MONO_PROFILE_JIT_COMPILATION;
-	profiler->profiler_enabled = TRUE;
-	
-	if (arguments == NULL) {
-		arguments = DEFAULT_ARGUMENTS;
-	} else if (strstr (arguments, ":")) {
-		arguments = strstr (arguments, ":") + 1;
-		if (arguments [0] == 0) {
-			arguments = DEFAULT_ARGUMENTS;
-		}
-	}
-	
-	arguments_array = g_strsplit (arguments, ",", -1);
-	
-	for (current_argument = arguments_array; ((current_argument != NULL) && (current_argument [0] != 0)); current_argument ++) {
-		char *argument = *current_argument;
-		char *equals = strstr (argument, "=");
-		const char *failure_message = NULL;
-		gboolean has_plus;
-		gboolean has_minus;
-		
-		if (*argument == '+') {
-			has_plus = TRUE;
-			has_minus = FALSE;
-			argument ++;
-		} else if (*argument == '-') {
-			has_plus = FALSE;
-			has_minus = TRUE;
-			argument ++;
-		} else {
-			has_plus = FALSE;
-			has_minus = FALSE;
-		}
-		
-		if (equals != NULL) {
-			int equals_position = equals - argument;
-			
-			if (! (strncmp (argument, "per-thread-buffer-size", equals_position) && strncmp (argument, "tbs", equals_position))) {
-				int value = atoi (equals + 1);
-				FAIL_IF_HAS_MINUS;
-				if (value > 0) {
-					profiler->per_thread_buffer_size = value;
-				}
-			} else if (! (strncmp (argument, "statistical", equals_position) && strncmp (argument, "stat", equals_position) && strncmp (argument, "s", equals_position))) {
-				int value = atoi (equals + 1);
-				FAIL_IF_HAS_MINUS;
-				if (value > 0) {
-					if (value > MONO_PROFILER_MAX_STAT_CALL_CHAIN_DEPTH) {
-						value = MONO_PROFILER_MAX_STAT_CALL_CHAIN_DEPTH;
-					}
-					profiler->statistical_call_chain_depth = value;
-					profiler->flags |= MONO_PROFILE_STATISTICAL;
-				}
-			} else if (! (strncmp (argument, "call-chain-strategy", equals_position) && strncmp (argument, "ccs", equals_position))) {
-				char *parameter = equals + 1;
-				FAIL_IF_HAS_MINUS;
-				if (! strcmp (parameter, "native")) {
-					profiler->statistical_call_chain_strategy = MONO_PROFILER_CALL_CHAIN_NATIVE;
-				} else if (! strcmp (parameter, "glibc")) {
-					profiler->statistical_call_chain_strategy = MONO_PROFILER_CALL_CHAIN_GLIBC;
-				} else if (! strcmp (parameter, "managed")) {
-					profiler->statistical_call_chain_strategy = MONO_PROFILER_CALL_CHAIN_MANAGED;
-				} else {
-					failure_message = "invalid call chain strategy in argument %s";
-					goto failure_handling;
-				}
-			} else if (! (strncmp (argument, "statistical-thread-buffer-size", equals_position) && strncmp (argument, "sbs", equals_position))) {
-				int value = atoi (equals + 1);
-				FAIL_IF_HAS_MINUS;
-				if (value > 0) {
-					profiler->statistical_buffer_size = value;
-				}
-			} else if (! (strncmp (argument, "write-buffer-size", equals_position) && strncmp (argument, "wbs", equals_position))) {
-				int value = atoi (equals + 1);
-				FAIL_IF_HAS_MINUS;
-				if (value > 0) {
-					profiler->write_buffer_size = value;
-				}
-			} else if (! (strncmp (argument, "output", equals_position) && strncmp (argument, "out", equals_position) && strncmp (argument, "o", equals_position) && strncmp (argument, "O", equals_position))) {
-				FAIL_IF_HAS_MINUS;
-				if (strlen (equals + 1) > 0) {
-					profiler->file_name = g_strdup (equals + 1);
-				}
-			} else if (! (strncmp (argument, "output-suffix", equals_position) && strncmp (argument, "suffix", equals_position) && strncmp (argument, "os", equals_position) && strncmp (argument, "OS", equals_position))) {
-				FAIL_IF_HAS_MINUS;
-				if (strlen (equals + 1) > 0) {
-					profiler->file_name_suffix = g_strdup (equals + 1);
-				}
-			} else if (! (strncmp (argument, "heap-shot", equals_position) && strncmp (argument, "heap", equals_position) && strncmp (argument, "h", equals_position))) {
-				char *parameter = equals + 1;
-				if (! strcmp (parameter, "all")) {
-					profiler->dump_next_heap_snapshots = -1;
-				} else {
-					profiler->dump_next_heap_snapshots = atoi (parameter);
-				}
-				FAIL_IF_HAS_MINUS;
-				if (! has_plus) {
-					profiler->action_flags.save_allocation_caller = TRUE;
-					profiler->action_flags.save_allocation_stack = TRUE;
-					profiler->action_flags.allocations_carry_id = TRUE_IF_NOT_MINUS;
-				}
-				profiler->action_flags.heap_shot = TRUE_IF_NOT_MINUS;
-			} else if (! (strncmp (argument, "gc-dumps", equals_position) && strncmp (argument, "gc-d", equals_position) && strncmp (argument, "gcd", equals_position))) {
-				FAIL_IF_HAS_MINUS;
-				if (strlen (equals + 1) > 0) {
-					profiler->dump_next_heap_snapshots = atoi (equals + 1);
-				}
-			} else if (! (strncmp (argument, "command-port", equals_position) && strncmp (argument, "cp", equals_position))) {
-				FAIL_IF_HAS_MINUS;
-				if (strlen (equals + 1) > 0) {
-					profiler->command_port = atoi (equals + 1);
-				}
-			} else {
-				FAIL_PARSING_VALUED_ARGUMENT;
-			}
-		} else {
-			if (! (strcmp (argument, "jit") && strcmp (argument, "j"))) {
-				profiler->action_flags.jit_time = TRUE_IF_NOT_MINUS;
-			} else if (! (strcmp (argument, "allocations") && strcmp (argument, "alloc") && strcmp (argument, "a"))) {
-				FAIL_IF_HAS_MINUS;
-				if (! has_plus) {
-					profiler->action_flags.save_allocation_caller = TRUE;
-					profiler->action_flags.save_allocation_stack = TRUE;
-				}
-				if (! has_minus) {
-					profiler->flags |= MONO_PROFILE_ALLOCATIONS;
-				} else {
-					profiler->flags &= ~MONO_PROFILE_ALLOCATIONS;
-				}
-			} else if (! (strcmp (argument, "monitor") && strcmp (argument, "locks") && strcmp (argument, "lock"))) {
-				FAIL_IF_HAS_MINUS;
-				profiler->action_flags.track_stack = TRUE;
-				profiler->flags |= MONO_PROFILE_MONITOR_EVENTS;
-				profiler->flags |= MONO_PROFILE_GC;
-			} else if (! (strcmp (argument, "gc") && strcmp (argument, "g"))) {
-				FAIL_IF_HAS_MINUS;
-				profiler->action_flags.report_gc_events = TRUE;
-				profiler->flags |= MONO_PROFILE_GC;
-			} else if (! (strcmp (argument, "allocations-summary") && strcmp (argument, "as"))) {
-				profiler->action_flags.collection_summary = TRUE_IF_NOT_MINUS;
-			} else if (! (strcmp (argument, "heap-shot") && strcmp (argument, "heap") && strcmp (argument, "h"))) {
-				FAIL_IF_HAS_MINUS;
-				if (! has_plus) {
-					profiler->action_flags.save_allocation_caller = TRUE;
-					profiler->action_flags.save_allocation_stack = TRUE;
-					profiler->action_flags.allocations_carry_id = TRUE_IF_NOT_MINUS;
-				}
-				profiler->action_flags.heap_shot = TRUE_IF_NOT_MINUS;
-			} else if (! (strcmp (argument, "unreachable") && strcmp (argument, "free") && strcmp (argument, "f"))) {
-				profiler->action_flags.unreachable_objects = TRUE_IF_NOT_MINUS;
-			} else if (! (strcmp (argument, "threads") && strcmp (argument, "t"))) {
-				if (! has_minus) {
-					profiler->flags |= MONO_PROFILE_THREADS;
-				} else {
-					profiler->flags &= ~MONO_PROFILE_THREADS;
-				}
-			} else if (! (strcmp (argument, "enter-leave") && strcmp (argument, "calls") && strcmp (argument, "c"))) {
-				profiler->action_flags.track_calls = TRUE_IF_NOT_MINUS;
-			} else if (! (strcmp (argument, "statistical") && strcmp (argument, "stat") && strcmp (argument, "s"))) {
-				if (! has_minus) {
-					profiler->flags |= MONO_PROFILE_STATISTICAL;
-				} else {
-					profiler->flags &= ~MONO_PROFILE_STATISTICAL;
-				}
-			} else if (! (strcmp (argument, "save-allocation-caller") && strcmp (argument, "sac"))) {
-				profiler->action_flags.save_allocation_caller = TRUE_IF_NOT_MINUS;
-			} else if (! (strcmp (argument, "save-allocation-stack") && strcmp (argument, "sas"))) {
-				profiler->action_flags.save_allocation_stack = TRUE_IF_NOT_MINUS;
-			} else if (! (strcmp (argument, "allocations-carry-id") && strcmp (argument, "aci"))) {
-				profiler->action_flags.allocations_carry_id = TRUE_IF_NOT_MINUS;
-			} else if (! (strcmp (argument, "start-enabled") && strcmp (argument, "se"))) {
-				profiler->profiler_enabled = TRUE_IF_NOT_MINUS;
-			} else if (! (strcmp (argument, "start-disabled") && strcmp (argument, "sd"))) {
-				profiler->profiler_enabled = ! TRUE_IF_NOT_MINUS;
-			} else if (! (strcmp (argument, "force-accurate-timer") && strcmp (argument, "fac"))) {
-				use_fast_timer = TRUE_IF_NOT_MINUS;
-#if (HAS_OPROFILE)
-			} else if (! (strcmp (argument, "oprofile") && strcmp (argument, "oprof"))) {
-				profiler->flags |= MONO_PROFILE_JIT_COMPILATION;
-				profiler->action_flags.oprofile = TRUE;
-				if (op_open_agent ()) {
-					FAIL_ARGUMENT_CHECK ("problem calling op_open_agent");
-				}
-#endif
-			} else if (strcmp (argument, "logging")) {
-				FAIL_PARSING_FLAG_ARGUMENT;
-			}
-		}
-		
-failure_handling:
-		if (failure_message != NULL) {
-			g_warning (failure_message, argument);
-			failure_message = NULL;
-		}
-	}
-	
-	g_free (arguments_array);
-	
-	/* Ensure that the profiler flags needed to support required action flags are active */
-	if (profiler->action_flags.jit_time) {
-		profiler->flags |= MONO_PROFILE_JIT_COMPILATION;
-	}
-	if (profiler->action_flags.save_allocation_caller || profiler->action_flags.save_allocation_stack || profiler->action_flags.allocations_carry_id) {
-		profiler->flags |= MONO_PROFILE_ALLOCATIONS;
-	}
-	if (profiler->action_flags.collection_summary || profiler->action_flags.heap_shot || profiler->action_flags.unreachable_objects) {
-		profiler->flags |= MONO_PROFILE_ALLOCATIONS;
-		profiler->action_flags.report_gc_events = TRUE;
-	}
-	if (profiler->action_flags.track_calls) {
-		profiler->flags |= MONO_PROFILE_ENTER_LEAVE;
-		profiler->action_flags.jit_time = TRUE;
-	}
-	if (profiler->action_flags.save_allocation_caller || profiler->action_flags.save_allocation_stack) {
-		profiler->action_flags.track_stack = TRUE;
-		profiler->flags |= MONO_PROFILE_ENTER_LEAVE;
-	}
-	if (profiler->action_flags.track_stack) {
-		profiler->flags |= MONO_PROFILE_ENTER_LEAVE;
-	}
-	
-	/* Tracking call stacks is useless if we already emit all enter-exit events... */
-	if (profiler->action_flags.track_calls) {
-		profiler->action_flags.track_stack = FALSE;
-		profiler->action_flags.save_allocation_caller = FALSE;
-		profiler->action_flags.save_allocation_stack = FALSE;
-	}
-	
-	/* Without JIT events the stat profiler will not find method IDs... */
-	if (profiler->flags | MONO_PROFILE_STATISTICAL) {
-		profiler->flags |= MONO_PROFILE_JIT_COMPILATION;
-	}
-	/* Profiling allocations without knowing which gc we are doing is not nice... */
-	if (profiler->flags | MONO_PROFILE_ALLOCATIONS) {
-		profiler->flags |= MONO_PROFILE_GC;
-		profiler->action_flags.report_gc_events = TRUE;
-	}
-
-	
-	if (profiler->file_name == NULL) {
-		char *program_name = g_get_prgname ();
-		
-		if (program_name != NULL) {
-			char *name_buffer = g_strdup (program_name);
-			char *name_start = name_buffer;
-			char *cursor;
-			
-			/* Jump over the last '/' */
-			cursor = strrchr (name_buffer, '/');
-			if (cursor == NULL) {
-				cursor = name_buffer;
-			} else {
-				cursor ++;
-			}
-			name_start = cursor;
-			
-			/* Then jump over the last '\\' */
-			cursor = strrchr (name_start, '\\');
-			if (cursor == NULL) {
-				cursor = name_start;
-			} else {
-				cursor ++;
-			}
-			name_start = cursor;
-			
-			/* Finally, find the last '.' */
-			cursor = strrchr (name_start, '.');
-			if (cursor != NULL) {
-				*cursor = 0;
-			}
-			
-			if (profiler->file_name_suffix == NULL) {
-				profiler->file_name = g_strdup_printf ("%s.mprof", name_start);
-			} else {
-				profiler->file_name = g_strdup_printf ("%s-%s.mprof", name_start, profiler->file_name_suffix);
-			}
-			g_free (name_buffer);
-		} else {
-			profiler->file_name = g_strdup_printf ("%s.mprof", "profiler-log");
-		}
-	}
-}
-
-static guint32
-data_writer_thread (gpointer nothing) {
-	for (;;) {
-		ProfilerStatisticalData *statistical_data;
-		gboolean done;
-		
-		LOG_WRITER_THREAD ("data_writer_thread: going to sleep");
-		WRITER_EVENT_WAIT ();
-		LOG_WRITER_THREAD ("data_writer_thread: just woke up");
-		
-		if (profiler->heap_shot_was_requested) {
-			MonoDomain * root_domain = mono_get_root_domain ();
-			
-			if (root_domain != NULL) {
-				MonoThread *this_thread;
-				LOG_WRITER_THREAD ("data_writer_thread: attaching thread");
-				this_thread = mono_thread_attach (root_domain);
-			LOG_WRITER_THREAD ("data_writer_thread: starting requested collection");
-			mono_gc_collect (mono_gc_max_generation ());
-			LOG_WRITER_THREAD ("data_writer_thread: requested collection done");
-				LOG_WRITER_THREAD ("data_writer_thread: detaching thread");
-				mono_thread_detach (this_thread);
-				this_thread = NULL;
-				LOG_WRITER_THREAD ("data_writer_thread: collection sequence completed");
-			} else {
-				LOG_WRITER_THREAD ("data_writer_thread: cannot get root domain, collection sequence skipped");
-			}
-			
-		}
-		
-		statistical_data = profiler->statistical_data_ready;
-		done = (statistical_data == NULL) && (profiler->heap_shot_write_jobs == NULL);
-		
-		if (!done) {
-			LOG_WRITER_THREAD ("data_writer_thread: acquiring lock and writing data");
-			LOCK_PROFILER ();
-			
-			// This makes sure that all method ids are in place
-			LOG_WRITER_THREAD ("data_writer_thread: writing mapping...");
-			flush_all_mappings ();
-			LOG_WRITER_THREAD ("data_writer_thread: wrote mapping");
-			
-			if (statistical_data != NULL) {
-				LOG_WRITER_THREAD ("data_writer_thread: writing statistical data...");
-				profiler->statistical_data_ready = NULL;
-				write_statistical_data_block (statistical_data);
-				statistical_data->next_free_index = 0;
-				statistical_data->first_unwritten_index = 0;
-				profiler->statistical_data_second_buffer = statistical_data;
-				LOG_WRITER_THREAD ("data_writer_thread: wrote statistical data");
-			}
-			
-			profiler_process_heap_shot_write_jobs ();
-			
-			UNLOCK_PROFILER ();
-			LOG_WRITER_THREAD ("data_writer_thread: wrote data and released lock");
-		} else {
-			LOG_WRITER_THREAD ("data_writer_thread: acquiring lock and flushing buffers");
-			LOCK_PROFILER ();
-			LOG_WRITER_THREAD ("data_writer_thread: lock acquired, flushing buffers");
-			flush_everything ();
-			UNLOCK_PROFILER ();
-			LOG_WRITER_THREAD ("data_writer_thread: flushed buffers and released lock");
-		}
-		
-		if (profiler->terminate_writer_thread) {
-		LOG_WRITER_THREAD ("data_writer_thread: exiting thread");
-			CLEANUP_WRITER_THREAD ();
-			EXIT_THREAD ();
-		}
-	}
-	return 0;
-}
-
-void
-mono_profiler_startup (const char *desc);
-
-/* the entry point (mono_profiler_load?) */
-void
-mono_profiler_startup (const char *desc)
-{
-	profiler = g_new0 (MonoProfiler, 1);
-	
-	setup_user_options ((desc != NULL) ? desc : DEFAULT_ARGUMENTS);
-	
-	INITIALIZE_PROFILER_MUTEX ();
-	MONO_PROFILER_GET_CURRENT_TIME (profiler->start_time);
-	MONO_PROFILER_GET_CURRENT_COUNTER (profiler->start_counter);
-	profiler->last_header_counter = 0;
-	
-	profiler->methods = method_id_mapping_new ();
-	profiler->classes = class_id_mapping_new ();
-	profiler->loaded_element_next_free_id = 1;
-	profiler->loaded_assemblies = g_hash_table_new_full (g_direct_hash, NULL, NULL, loaded_element_destroy);
-	profiler->loaded_modules = g_hash_table_new_full (g_direct_hash, NULL, NULL, loaded_element_destroy);
-	profiler->loaded_appdomains = g_hash_table_new_full (g_direct_hash, NULL, NULL, loaded_element_destroy);
-	
-	profiler->statistical_data = profiler_statistical_data_new (profiler);
-	profiler->statistical_data_second_buffer = profiler_statistical_data_new (profiler);
-	
-	profiler->write_buffers = g_malloc (sizeof (ProfilerFileWriteBuffer) + PROFILER_FILE_WRITE_BUFFER_SIZE);
-	profiler->write_buffers->next = NULL;
-	profiler->current_write_buffer = profiler->write_buffers;
-	profiler->current_write_position = 0;
-	profiler->full_write_buffers = 0;
-	profiler_code_chunks_initialize (& (profiler->code_chunks));
-	
-	profiler->executable_regions = profiler_executable_memory_regions_new (1, 1);
-	
-	profiler->executable_files.table = g_hash_table_new (g_str_hash, g_str_equal); 
-	profiler->executable_files.new_files = NULL; 
-	
-	profiler->heap_shot_write_jobs = NULL;
-	if (profiler->action_flags.unreachable_objects || profiler->action_flags.heap_shot || profiler->action_flags.collection_summary) {
-		profiler_heap_buffers_setup (&(profiler->heap));
-	} else {
-		profiler_heap_buffers_clear (&(profiler->heap));
-	}
-	profiler->garbage_collection_counter = 0;
-	
-	WRITER_EVENT_INIT ();
-	LOG_WRITER_THREAD ("mono_profiler_startup: creating writer thread");
-	CREATE_WRITER_THREAD (data_writer_thread);
-	LOG_WRITER_THREAD ("mono_profiler_startup: created writer thread");
-	if ((profiler->command_port >= 1024) && (profiler->command_port <= 65535)) {
-		LOG_USER_THREAD ("mono_profiler_startup: creating user thread");
-		CREATE_USER_THREAD (user_thread);
-		LOG_USER_THREAD ("mono_profiler_startup: created user thread");
-	} else {
-		LOG_USER_THREAD ("mono_profiler_startup: skipping user thread creation");
-	}
-
-	ALLOCATE_PROFILER_THREAD_DATA ();
-	
-	OPEN_FILE ();
-	
-	write_intro_block ();
-	write_directives_block (TRUE);
-	
-	mono_profiler_install (profiler, profiler_shutdown);
-	
-	mono_profiler_install_appdomain (appdomain_start_load, appdomain_end_load,
-			appdomain_start_unload, appdomain_end_unload);
-	mono_profiler_install_assembly (assembly_start_load, assembly_end_load,
-			assembly_start_unload, assembly_end_unload);
-	mono_profiler_install_module (module_start_load, module_end_load,
-			module_start_unload, module_end_unload);
-	mono_profiler_install_class (class_start_load, class_end_load,
-			class_start_unload, class_end_unload);
-	mono_profiler_install_jit_compile (method_start_jit, method_end_jit);
-	mono_profiler_install_enter_leave (method_enter, method_leave);
-	mono_profiler_install_method_free (method_free);
-	mono_profiler_install_thread (thread_start, thread_end);
-	mono_profiler_install_allocation (object_allocated);
-	mono_profiler_install_monitor (monitor_event);
-	mono_profiler_install_statistical (statistical_hit);
-	mono_profiler_install_statistical_call_chain (statistical_call_chain, profiler->statistical_call_chain_depth, profiler->statistical_call_chain_strategy);
-	mono_profiler_install_gc (gc_event, gc_resize);
-	mono_profiler_install_runtime_initialized (runtime_initialized);
-#if (HAS_OPROFILE)
-	mono_profiler_install_jit_end (method_jit_result);
-#endif
-	if (profiler->flags | MONO_PROFILE_STATISTICAL) {
-		mono_profiler_install_code_chunk_new (profiler_code_chunk_new_callback);
-		mono_profiler_install_code_chunk_destroy (profiler_code_chunk_destroy_callback);
-		mono_profiler_install_code_buffer_new (profiler_code_buffer_new_callback);
-	}
-	
-	mono_profiler_set_events (profiler->flags);
-}
-
diff --git a/mono/profiler/perf_event.h b/mono/profiler/perf_event.h
new file mode 100644
index 0000000..057bf22
--- /dev/null
+++ b/mono/profiler/perf_event.h
@@ -0,0 +1,1145 @@
+/*
+ * Performance events:
+ *
+ *    Copyright (C) 2008-2009, Thomas Gleixner <tglx at linutronix.de>
+ *    Copyright (C) 2008-2009, Red Hat, Inc., Ingo Molnar
+ *    Copyright (C) 2008-2009, Red Hat, Inc., Peter Zijlstra
+ *
+ * Data type definitions, declarations, prototypes.
+ *
+ *    Started by: Thomas Gleixner and Ingo Molnar
+ *
+ * For licencing details see kernel-base/COPYING
+ */
+#ifndef _LINUX_PERF_EVENT_H
+#define _LINUX_PERF_EVENT_H
+
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#include <asm/byteorder.h>
+
+/*
+ * User-space ABI bits:
+ */
+
+/*
+ * attr.type
+ */
+enum perf_type_id {
+	PERF_TYPE_HARDWARE			= 0,
+	PERF_TYPE_SOFTWARE			= 1,
+	PERF_TYPE_TRACEPOINT			= 2,
+	PERF_TYPE_HW_CACHE			= 3,
+	PERF_TYPE_RAW				= 4,
+	PERF_TYPE_BREAKPOINT			= 5,
+
+	PERF_TYPE_MAX,				/* non-ABI */
+};
+
+/*
+ * Generalized performance event event_id types, used by the
+ * attr.event_id parameter of the sys_perf_event_open()
+ * syscall:
+ */
+enum perf_hw_id {
+	/*
+	 * Common hardware events, generalized by the kernel:
+	 */
+	PERF_COUNT_HW_CPU_CYCLES		= 0,
+	PERF_COUNT_HW_INSTRUCTIONS		= 1,
+	PERF_COUNT_HW_CACHE_REFERENCES		= 2,
+	PERF_COUNT_HW_CACHE_MISSES		= 3,
+	PERF_COUNT_HW_BRANCH_INSTRUCTIONS	= 4,
+	PERF_COUNT_HW_BRANCH_MISSES		= 5,
+	PERF_COUNT_HW_BUS_CYCLES		= 6,
+
+	PERF_COUNT_HW_MAX,			/* non-ABI */
+};
+
+/*
+ * Generalized hardware cache events:
+ *
+ *       { L1-D, L1-I, LLC, ITLB, DTLB, BPU } x
+ *       { read, write, prefetch } x
+ *       { accesses, misses }
+ */
+enum perf_hw_cache_id {
+	PERF_COUNT_HW_CACHE_L1D			= 0,
+	PERF_COUNT_HW_CACHE_L1I			= 1,
+	PERF_COUNT_HW_CACHE_LL			= 2,
+	PERF_COUNT_HW_CACHE_DTLB		= 3,
+	PERF_COUNT_HW_CACHE_ITLB		= 4,
+	PERF_COUNT_HW_CACHE_BPU			= 5,
+
+	PERF_COUNT_HW_CACHE_MAX,		/* non-ABI */
+};
+
+enum perf_hw_cache_op_id {
+	PERF_COUNT_HW_CACHE_OP_READ		= 0,
+	PERF_COUNT_HW_CACHE_OP_WRITE		= 1,
+	PERF_COUNT_HW_CACHE_OP_PREFETCH		= 2,
+
+	PERF_COUNT_HW_CACHE_OP_MAX,		/* non-ABI */
+};
+
+enum perf_hw_cache_op_result_id {
+	PERF_COUNT_HW_CACHE_RESULT_ACCESS	= 0,
+	PERF_COUNT_HW_CACHE_RESULT_MISS		= 1,
+
+	PERF_COUNT_HW_CACHE_RESULT_MAX,		/* non-ABI */
+};
+
+/*
+ * Special "software" events provided by the kernel, even if the hardware
+ * does not support performance events. These events measure various
+ * physical and sw events of the kernel (and allow the profiling of them as
+ * well):
+ */
+enum perf_sw_ids {
+	PERF_COUNT_SW_CPU_CLOCK			= 0,
+	PERF_COUNT_SW_TASK_CLOCK		= 1,
+	PERF_COUNT_SW_PAGE_FAULTS		= 2,
+	PERF_COUNT_SW_CONTEXT_SWITCHES		= 3,
+	PERF_COUNT_SW_CPU_MIGRATIONS		= 4,
+	PERF_COUNT_SW_PAGE_FAULTS_MIN		= 5,
+	PERF_COUNT_SW_PAGE_FAULTS_MAJ		= 6,
+	PERF_COUNT_SW_ALIGNMENT_FAULTS		= 7,
+	PERF_COUNT_SW_EMULATION_FAULTS		= 8,
+
+	PERF_COUNT_SW_MAX,			/* non-ABI */
+};
+
+/*
+ * Bits that can be set in attr.sample_type to request information
+ * in the overflow packets.
+ */
+enum perf_event_sample_format {
+	PERF_SAMPLE_IP				= 1U << 0,
+	PERF_SAMPLE_TID				= 1U << 1,
+	PERF_SAMPLE_TIME			= 1U << 2,
+	PERF_SAMPLE_ADDR			= 1U << 3,
+	PERF_SAMPLE_READ			= 1U << 4,
+	PERF_SAMPLE_CALLCHAIN			= 1U << 5,
+	PERF_SAMPLE_ID				= 1U << 6,
+	PERF_SAMPLE_CPU				= 1U << 7,
+	PERF_SAMPLE_PERIOD			= 1U << 8,
+	PERF_SAMPLE_STREAM_ID			= 1U << 9,
+	PERF_SAMPLE_RAW				= 1U << 10,
+
+	PERF_SAMPLE_MAX = 1U << 11,		/* non-ABI */
+};
+
+/*
+ * The format of the data returned by read() on a perf event fd,
+ * as specified by attr.read_format:
+ *
+ * struct read_format {
+ *	{ u64		value;
+ *	  { u64		time_enabled; } && PERF_FORMAT_ENABLED
+ *	  { u64		time_running; } && PERF_FORMAT_RUNNING
+ *	  { u64		id;           } && PERF_FORMAT_ID
+ *	} && !PERF_FORMAT_GROUP
+ *
+ *	{ u64		nr;
+ *	  { u64		time_enabled; } && PERF_FORMAT_ENABLED
+ *	  { u64		time_running; } && PERF_FORMAT_RUNNING
+ *	  { u64		value;
+ *	    { u64	id;           } && PERF_FORMAT_ID
+ *	  }		cntr[nr];
+ *	} && PERF_FORMAT_GROUP
+ * };
+ */
+enum perf_event_read_format {
+	PERF_FORMAT_TOTAL_TIME_ENABLED		= 1U << 0,
+	PERF_FORMAT_TOTAL_TIME_RUNNING		= 1U << 1,
+	PERF_FORMAT_ID				= 1U << 2,
+	PERF_FORMAT_GROUP			= 1U << 3,
+
+	PERF_FORMAT_MAX = 1U << 4,		/* non-ABI */
+};
+
+#define PERF_ATTR_SIZE_VER0	64	/* sizeof first published struct */
+
+/*
+ * Hardware event_id to monitor via a performance monitoring event:
+ */
+struct perf_event_attr {
+
+	/*
+	 * Major type: hardware/software/tracepoint/etc.
+	 */
+	__u32			type;
+
+	/*
+	 * Size of the attr structure, for fwd/bwd compat.
+	 */
+	__u32			size;
+
+	/*
+	 * Type specific configuration information.
+	 */
+	__u64			config;
+
+	union {
+		__u64		sample_period;
+		__u64		sample_freq;
+	};
+
+	__u64			sample_type;
+	__u64			read_format;
+
+	__u64			disabled       :  1, /* off by default        */
+				inherit	       :  1, /* children inherit it   */
+				pinned	       :  1, /* must always be on PMU */
+				exclusive      :  1, /* only group on PMU     */
+				exclude_user   :  1, /* don't count user      */
+				exclude_kernel :  1, /* ditto kernel          */
+				exclude_hv     :  1, /* ditto hypervisor      */
+				exclude_idle   :  1, /* don't count when idle */
+				mmap           :  1, /* include mmap data     */
+				comm	       :  1, /* include comm data     */
+				freq           :  1, /* use freq, not period  */
+				inherit_stat   :  1, /* per task counts       */
+				enable_on_exec :  1, /* next exec enables     */
+				task           :  1, /* trace fork/exit       */
+				watermark      :  1, /* wakeup_watermark      */
+				/*
+				 * precise_ip:
+				 *
+				 *  0 - SAMPLE_IP can have arbitrary skid
+				 *  1 - SAMPLE_IP must have constant skid
+				 *  2 - SAMPLE_IP requested to have 0 skid
+				 *  3 - SAMPLE_IP must have 0 skid
+				 *
+				 *  See also PERF_RECORD_MISC_EXACT_IP
+				 */
+				precise_ip     :  2, /* skid constraint       */
+				mmap_data      :  1, /* non-exec mmap data    */
+
+				__reserved_1   : 46;
+
+	union {
+		__u32		wakeup_events;	  /* wakeup every n events */
+		__u32		wakeup_watermark; /* bytes before wakeup   */
+	};
+
+	__u32			bp_type;
+	__u64			bp_addr;
+	__u64			bp_len;
+};
+
+/*
+ * Ioctls that can be done on a perf event fd:
+ */
+#define PERF_EVENT_IOC_ENABLE		_IO ('$', 0)
+#define PERF_EVENT_IOC_DISABLE		_IO ('$', 1)
+#define PERF_EVENT_IOC_REFRESH		_IO ('$', 2)
+#define PERF_EVENT_IOC_RESET		_IO ('$', 3)
+#define PERF_EVENT_IOC_PERIOD		_IOW('$', 4, __u64)
+#define PERF_EVENT_IOC_SET_OUTPUT	_IO ('$', 5)
+#define PERF_EVENT_IOC_SET_FILTER	_IOW('$', 6, char *)
+
+enum perf_event_ioc_flags {
+	PERF_IOC_FLAG_GROUP		= 1U << 0,
+};
+
+/*
+ * Structure of the page that can be mapped via mmap
+ */
+struct perf_event_mmap_page {
+	__u32	version;		/* version number of this structure */
+	__u32	compat_version;		/* lowest version this is compat with */
+
+	/*
+	 * Bits needed to read the hw events in user-space.
+	 *
+	 *   u32 seq;
+	 *   s64 count;
+	 *
+	 *   do {
+	 *     seq = pc->lock;
+	 *
+	 *     barrier()
+	 *     if (pc->index) {
+	 *       count = pmc_read(pc->index - 1);
+	 *       count += pc->offset;
+	 *     } else
+	 *       goto regular_read;
+	 *
+	 *     barrier();
+	 *   } while (pc->lock != seq);
+	 *
+	 * NOTE: for obvious reason this only works on self-monitoring
+	 *       processes.
+	 */
+	__u32	lock;			/* seqlock for synchronization */
+	__u32	index;			/* hardware event identifier */
+	__s64	offset;			/* add to hardware event value */
+	__u64	time_enabled;		/* time event active */
+	__u64	time_running;		/* time event on cpu */
+
+		/*
+		 * Hole for extension of the self monitor capabilities
+		 */
+
+	__u64	__reserved[123];	/* align to 1k */
+
+	/*
+	 * Control data for the mmap() data buffer.
+	 *
+	 * User-space reading the @data_head value should issue an rmb(), on
+	 * SMP capable platforms, after reading this value -- see
+	 * perf_event_wakeup().
+	 *
+	 * When the mapping is PROT_WRITE the @data_tail value should be
+	 * written by userspace to reflect the last read data. In this case
+	 * the kernel will not over-write unread data.
+	 */
+	__u64   data_head;		/* head in the data section */
+	__u64	data_tail;		/* user-space written tail */
+};
+
+#define PERF_RECORD_MISC_CPUMODE_MASK		(7 << 0)
+#define PERF_RECORD_MISC_CPUMODE_UNKNOWN	(0 << 0)
+#define PERF_RECORD_MISC_KERNEL			(1 << 0)
+#define PERF_RECORD_MISC_USER			(2 << 0)
+#define PERF_RECORD_MISC_HYPERVISOR		(3 << 0)
+#define PERF_RECORD_MISC_GUEST_KERNEL		(4 << 0)
+#define PERF_RECORD_MISC_GUEST_USER		(5 << 0)
+
+/*
+ * Indicates that the content of PERF_SAMPLE_IP points to
+ * the actual instruction that triggered the event. See also
+ * perf_event_attr::precise_ip.
+ */
+#define PERF_RECORD_MISC_EXACT_IP		(1 << 14)
+/*
+ * Reserve the last bit to indicate some extended misc field
+ */
+#define PERF_RECORD_MISC_EXT_RESERVED		(1 << 15)
+
+struct perf_event_header {
+	__u32	type;
+	__u16	misc;
+	__u16	size;
+};
+
+enum perf_event_type {
+
+	/*
+	 * The MMAP events record the PROT_EXEC mappings so that we can
+	 * correlate userspace IPs to code. They have the following structure:
+	 *
+	 * struct {
+	 *	struct perf_event_header	header;
+	 *
+	 *	u32				pid, tid;
+	 *	u64				addr;
+	 *	u64				len;
+	 *	u64				pgoff;
+	 *	char				filename[];
+	 * };
+	 */
+	PERF_RECORD_MMAP			= 1,
+
+	/*
+	 * struct {
+	 *	struct perf_event_header	header;
+	 *	u64				id;
+	 *	u64				lost;
+	 * };
+	 */
+	PERF_RECORD_LOST			= 2,
+
+	/*
+	 * struct {
+	 *	struct perf_event_header	header;
+	 *
+	 *	u32				pid, tid;
+	 *	char				comm[];
+	 * };
+	 */
+	PERF_RECORD_COMM			= 3,
+
+	/*
+	 * struct {
+	 *	struct perf_event_header	header;
+	 *	u32				pid, ppid;
+	 *	u32				tid, ptid;
+	 *	u64				time;
+	 * };
+	 */
+	PERF_RECORD_EXIT			= 4,
+
+	/*
+	 * struct {
+	 *	struct perf_event_header	header;
+	 *	u64				time;
+	 *	u64				id;
+	 *	u64				stream_id;
+	 * };
+	 */
+	PERF_RECORD_THROTTLE			= 5,
+	PERF_RECORD_UNTHROTTLE			= 6,
+
+	/*
+	 * struct {
+	 *	struct perf_event_header	header;
+	 *	u32				pid, ppid;
+	 *	u32				tid, ptid;
+	 *	u64				time;
+	 * };
+	 */
+	PERF_RECORD_FORK			= 7,
+
+	/*
+	 * struct {
+	 *	struct perf_event_header	header;
+	 *	u32				pid, tid;
+	 *
+	 *	struct read_format		values;
+	 * };
+	 */
+	PERF_RECORD_READ			= 8,
+
+	/*
+	 * struct {
+	 *	struct perf_event_header	header;
+	 *
+	 *	{ u64			ip;	  } && PERF_SAMPLE_IP
+	 *	{ u32			pid, tid; } && PERF_SAMPLE_TID
+	 *	{ u64			time;     } && PERF_SAMPLE_TIME
+	 *	{ u64			addr;     } && PERF_SAMPLE_ADDR
+	 *	{ u64			id;	  } && PERF_SAMPLE_ID
+	 *	{ u64			stream_id;} && PERF_SAMPLE_STREAM_ID
+	 *	{ u32			cpu, res; } && PERF_SAMPLE_CPU
+	 *	{ u64			period;   } && PERF_SAMPLE_PERIOD
+	 *
+	 *	{ struct read_format	values;	  } && PERF_SAMPLE_READ
+	 *
+	 *	{ u64			nr,
+	 *	  u64			ips[nr];  } && PERF_SAMPLE_CALLCHAIN
+	 *
+	 *	#
+	 *	# The RAW record below is opaque data wrt the ABI
+	 *	#
+	 *	# That is, the ABI doesn't make any promises wrt to
+	 *	# the stability of its content, it may vary depending
+	 *	# on event, hardware, kernel version and phase of
+	 *	# the moon.
+	 *	#
+	 *	# In other words, PERF_SAMPLE_RAW contents are not an ABI.
+	 *	#
+	 *
+	 *	{ u32			size;
+	 *	  char                  data[size];}&& PERF_SAMPLE_RAW
+	 * };
+	 */
+	PERF_RECORD_SAMPLE			= 9,
+
+	PERF_RECORD_MAX,			/* non-ABI */
+};
+
+enum perf_callchain_context {
+	PERF_CONTEXT_HV			= (__u64)-32,
+	PERF_CONTEXT_KERNEL		= (__u64)-128,
+	PERF_CONTEXT_USER		= (__u64)-512,
+
+	PERF_CONTEXT_GUEST		= (__u64)-2048,
+	PERF_CONTEXT_GUEST_KERNEL	= (__u64)-2176,
+	PERF_CONTEXT_GUEST_USER		= (__u64)-2560,
+
+	PERF_CONTEXT_MAX		= (__u64)-4095,
+};
+
+#define PERF_FLAG_FD_NO_GROUP	(1U << 0)
+#define PERF_FLAG_FD_OUTPUT	(1U << 1)
+
+#ifdef __KERNEL__
+/*
+ * Kernel-internal data types and definitions:
+ */
+
+#ifdef CONFIG_PERF_EVENTS
+# include <asm/perf_event.h>
+# include <asm/local64.h>
+#endif
+
+struct perf_guest_info_callbacks {
+	int (*is_in_guest) (void);
+	int (*is_user_mode) (void);
+	unsigned long (*get_guest_ip) (void);
+};
+
+#ifdef CONFIG_HAVE_HW_BREAKPOINT
+#include <asm/hw_breakpoint.h>
+#endif
+
+#include <linux/list.h>
+#include <linux/mutex.h>
+#include <linux/rculist.h>
+#include <linux/rcupdate.h>
+#include <linux/spinlock.h>
+#include <linux/hrtimer.h>
+#include <linux/fs.h>
+#include <linux/pid_namespace.h>
+#include <linux/workqueue.h>
+#include <linux/ftrace.h>
+#include <linux/cpu.h>
+#include <linux/irq_work.h>
+#include <linux/jump_label_ref.h>
+#include <asm/atomic.h>
+#include <asm/local.h>
+
+#define PERF_MAX_STACK_DEPTH		255
+
+struct perf_callchain_entry {
+	__u64				nr;
+	__u64				ip[PERF_MAX_STACK_DEPTH];
+};
+
+struct perf_raw_record {
+	u32				size;
+	void				*data;
+};
+
+struct perf_branch_entry {
+	__u64				from;
+	__u64				to;
+	__u64				flags;
+};
+
+struct perf_branch_stack {
+	__u64				nr;
+	struct perf_branch_entry	entries[0];
+};
+
+struct task_struct;
+
+/**
+ * struct hw_perf_event - performance event hardware details:
+ */
+struct hw_perf_event {
+#ifdef CONFIG_PERF_EVENTS
+	union {
+		struct { /* hardware */
+			u64		config;
+			u64		last_tag;
+			unsigned long	config_base;
+			unsigned long	event_base;
+			int		idx;
+			int		last_cpu;
+		};
+		struct { /* software */
+			struct hrtimer	hrtimer;
+		};
+#ifdef CONFIG_HAVE_HW_BREAKPOINT
+		struct { /* breakpoint */
+			struct arch_hw_breakpoint	info;
+			struct list_head		bp_list;
+			/*
+			 * Crufty hack to avoid the chicken and egg
+			 * problem hw_breakpoint has with context
+			 * creation and event initalization.
+			 */
+			struct task_struct		*bp_target;
+		};
+#endif
+	};
+	int				state;
+	local64_t			prev_count;
+	u64				sample_period;
+	u64				last_period;
+	local64_t			period_left;
+	u64				interrupts;
+
+	u64				freq_time_stamp;
+	u64				freq_count_stamp;
+#endif
+};
+
+/*
+ * hw_perf_event::state flags
+ */
+#define PERF_HES_STOPPED	0x01 /* the counter is stopped */
+#define PERF_HES_UPTODATE	0x02 /* event->count up-to-date */
+#define PERF_HES_ARCH		0x04
+
+struct perf_event;
+
+/*
+ * Common implementation detail of pmu::{start,commit,cancel}_txn
+ */
+#define PERF_EVENT_TXN 0x1
+
+/**
+ * struct pmu - generic performance monitoring unit
+ */
+struct pmu {
+	struct list_head		entry;
+
+	int * __percpu			pmu_disable_count;
+	struct perf_cpu_context * __percpu pmu_cpu_context;
+	int				task_ctx_nr;
+
+	/*
+	 * Fully disable/enable this PMU, can be used to protect from the PMI
+	 * as well as for lazy/batch writing of the MSRs.
+	 */
+	void (*pmu_enable)		(struct pmu *pmu); /* optional */
+	void (*pmu_disable)		(struct pmu *pmu); /* optional */
+
+	/*
+	 * Try and initialize the event for this PMU.
+	 * Should return -ENOENT when the @event doesn't match this PMU.
+	 */
+	int (*event_init)		(struct perf_event *event);
+
+#define PERF_EF_START	0x01		/* start the counter when adding    */
+#define PERF_EF_RELOAD	0x02		/* reload the counter when starting */
+#define PERF_EF_UPDATE	0x04		/* update the counter when stopping */
+
+	/*
+	 * Adds/Removes a counter to/from the PMU, can be done inside
+	 * a transaction, see the ->*_txn() methods.
+	 */
+	int  (*add)			(struct perf_event *event, int flags);
+	void (*del)			(struct perf_event *event, int flags);
+
+	/*
+	 * Starts/Stops a counter present on the PMU. The PMI handler
+	 * should stop the counter when perf_event_overflow() returns
+	 * !0. ->start() will be used to continue.
+	 */
+	void (*start)			(struct perf_event *event, int flags);
+	void (*stop)			(struct perf_event *event, int flags);
+
+	/*
+	 * Updates the counter value of the event.
+	 */
+	void (*read)			(struct perf_event *event);
+
+	/*
+	 * Group events scheduling is treated as a transaction, add
+	 * group events as a whole and perform one schedulability test.
+	 * If the test fails, roll back the whole group
+	 *
+	 * Start the transaction, after this ->add() doesn't need to
+	 * do schedulability tests.
+	 */
+	void (*start_txn)	(struct pmu *pmu); /* optional */
+	/*
+	 * If ->start_txn() disabled the ->add() schedulability test
+	 * then ->commit_txn() is required to perform one. On success
+	 * the transaction is closed. On error the transaction is kept
+	 * open until ->cancel_txn() is called.
+	 */
+	int  (*commit_txn)	(struct pmu *pmu); /* optional */
+	/*
+	 * Will cancel the transaction, assumes ->del() is called
+	 * for each successfull ->add() during the transaction.
+	 */
+	void (*cancel_txn)	(struct pmu *pmu); /* optional */
+};
+
+/**
+ * enum perf_event_active_state - the states of a event
+ */
+enum perf_event_active_state {
+	PERF_EVENT_STATE_ERROR		= -2,
+	PERF_EVENT_STATE_OFF		= -1,
+	PERF_EVENT_STATE_INACTIVE	=  0,
+	PERF_EVENT_STATE_ACTIVE		=  1,
+};
+
+struct file;
+
+#define PERF_BUFFER_WRITABLE		0x01
+
+struct perf_buffer {
+	atomic_t			refcount;
+	struct rcu_head			rcu_head;
+#ifdef CONFIG_PERF_USE_VMALLOC
+	struct work_struct		work;
+	int				page_order;	/* allocation order  */
+#endif
+	int				nr_pages;	/* nr of data pages  */
+	int				writable;	/* are we writable   */
+
+	atomic_t			poll;		/* POLL_ for wakeups */
+
+	local_t				head;		/* write position    */
+	local_t				nest;		/* nested writers    */
+	local_t				events;		/* event limit       */
+	local_t				wakeup;		/* wakeup stamp      */
+	local_t				lost;		/* nr records lost   */
+
+	long				watermark;	/* wakeup watermark  */
+
+	struct perf_event_mmap_page	*user_page;
+	void				*data_pages[0];
+};
+
+struct perf_sample_data;
+
+typedef void (*perf_overflow_handler_t)(struct perf_event *, int,
+					struct perf_sample_data *,
+					struct pt_regs *regs);
+
+enum perf_group_flag {
+	PERF_GROUP_SOFTWARE = 0x1,
+};
+
+#define SWEVENT_HLIST_BITS	8
+#define SWEVENT_HLIST_SIZE	(1 << SWEVENT_HLIST_BITS)
+
+struct swevent_hlist {
+	struct hlist_head	heads[SWEVENT_HLIST_SIZE];
+	struct rcu_head		rcu_head;
+};
+
+#define PERF_ATTACH_CONTEXT	0x01
+#define PERF_ATTACH_GROUP	0x02
+#define PERF_ATTACH_TASK	0x04
+
+/**
+ * struct perf_event - performance event kernel representation:
+ */
+struct perf_event {
+#ifdef CONFIG_PERF_EVENTS
+	struct list_head		group_entry;
+	struct list_head		event_entry;
+	struct list_head		sibling_list;
+	struct hlist_node		hlist_entry;
+	int				nr_siblings;
+	int				group_flags;
+	struct perf_event		*group_leader;
+	struct pmu			*pmu;
+
+	enum perf_event_active_state	state;
+	unsigned int			attach_state;
+	local64_t			count;
+	atomic64_t			child_count;
+
+	/*
+	 * These are the total time in nanoseconds that the event
+	 * has been enabled (i.e. eligible to run, and the task has
+	 * been scheduled in, if this is a per-task event)
+	 * and running (scheduled onto the CPU), respectively.
+	 *
+	 * They are computed from tstamp_enabled, tstamp_running and
+	 * tstamp_stopped when the event is in INACTIVE or ACTIVE state.
+	 */
+	u64				total_time_enabled;
+	u64				total_time_running;
+
+	/*
+	 * These are timestamps used for computing total_time_enabled
+	 * and total_time_running when the event is in INACTIVE or
+	 * ACTIVE state, measured in nanoseconds from an arbitrary point
+	 * in time.
+	 * tstamp_enabled: the notional time when the event was enabled
+	 * tstamp_running: the notional time when the event was scheduled on
+	 * tstamp_stopped: in INACTIVE state, the notional time when the
+	 *	event was scheduled off.
+	 */
+	u64				tstamp_enabled;
+	u64				tstamp_running;
+	u64				tstamp_stopped;
+
+	struct perf_event_attr		attr;
+	struct hw_perf_event		hw;
+
+	struct perf_event_context	*ctx;
+	struct file			*filp;
+
+	/*
+	 * These accumulate total time (in nanoseconds) that children
+	 * events have been enabled and running, respectively.
+	 */
+	atomic64_t			child_total_time_enabled;
+	atomic64_t			child_total_time_running;
+
+	/*
+	 * Protect attach/detach and child_list:
+	 */
+	struct mutex			child_mutex;
+	struct list_head		child_list;
+	struct perf_event		*parent;
+
+	int				oncpu;
+	int				cpu;
+
+	struct list_head		owner_entry;
+	struct task_struct		*owner;
+
+	/* mmap bits */
+	struct mutex			mmap_mutex;
+	atomic_t			mmap_count;
+	int				mmap_locked;
+	struct user_struct		*mmap_user;
+	struct perf_buffer		*buffer;
+
+	/* poll related */
+	wait_queue_head_t		waitq;
+	struct fasync_struct		*fasync;
+
+	/* delayed work for NMIs and such */
+	int				pending_wakeup;
+	int				pending_kill;
+	int				pending_disable;
+	struct irq_work			pending;
+
+	atomic_t			event_limit;
+
+	void (*destroy)(struct perf_event *);
+	struct rcu_head			rcu_head;
+
+	struct pid_namespace		*ns;
+	u64				id;
+
+	perf_overflow_handler_t		overflow_handler;
+
+#ifdef CONFIG_EVENT_TRACING
+	struct ftrace_event_call	*tp_event;
+	struct event_filter		*filter;
+#endif
+
+#endif /* CONFIG_PERF_EVENTS */
+};
+
+enum perf_event_context_type {
+	task_context,
+	cpu_context,
+};
+
+/**
+ * struct perf_event_context - event context structure
+ *
+ * Used as a container for task events and CPU events as well:
+ */
+struct perf_event_context {
+	enum perf_event_context_type	type;
+	struct pmu			*pmu;
+	/*
+	 * Protect the states of the events in the list,
+	 * nr_active, and the list:
+	 */
+	raw_spinlock_t			lock;
+	/*
+	 * Protect the list of events.  Locking either mutex or lock
+	 * is sufficient to ensure the list doesn't change; to change
+	 * the list you need to lock both the mutex and the spinlock.
+	 */
+	struct mutex			mutex;
+
+	struct list_head		pinned_groups;
+	struct list_head		flexible_groups;
+	struct list_head		event_list;
+	int				nr_events;
+	int				nr_active;
+	int				is_active;
+	int				nr_stat;
+	atomic_t			refcount;
+	struct task_struct		*task;
+
+	/*
+	 * Context clock, runs when context enabled.
+	 */
+	u64				time;
+	u64				timestamp;
+
+	/*
+	 * These fields let us detect when two contexts have both
+	 * been cloned (inherited) from a common ancestor.
+	 */
+	struct perf_event_context	*parent_ctx;
+	u64				parent_gen;
+	u64				generation;
+	int				pin_count;
+	struct rcu_head			rcu_head;
+};
+
+/*
+ * Number of contexts where an event can trigger:
+ * 	task, softirq, hardirq, nmi.
+ */
+#define PERF_NR_CONTEXTS	4
+
+/**
+ * struct perf_event_cpu_context - per cpu event context structure
+ */
+struct perf_cpu_context {
+	struct perf_event_context	ctx;
+	struct perf_event_context	*task_ctx;
+	int				active_oncpu;
+	int				exclusive;
+	struct list_head		rotation_list;
+	int				jiffies_interval;
+};
+
+struct perf_output_handle {
+	struct perf_event		*event;
+	struct perf_buffer		*buffer;
+	unsigned long			wakeup;
+	unsigned long			size;
+	void				*addr;
+	int				page;
+	int				nmi;
+	int				sample;
+};
+
+#ifdef CONFIG_PERF_EVENTS
+
+extern int perf_pmu_register(struct pmu *pmu);
+extern void perf_pmu_unregister(struct pmu *pmu);
+
+extern int perf_num_counters(void);
+extern const char *perf_pmu_name(void);
+extern void __perf_event_task_sched_in(struct task_struct *task);
+extern void __perf_event_task_sched_out(struct task_struct *task, struct task_struct *next);
+
+extern atomic_t perf_task_events;
+
+static inline void perf_event_task_sched_in(struct task_struct *task)
+{
+	COND_STMT(&perf_task_events, __perf_event_task_sched_in(task));
+}
+
+static inline
+void perf_event_task_sched_out(struct task_struct *task, struct task_struct *next)
+{
+	COND_STMT(&perf_task_events, __perf_event_task_sched_out(task, next));
+}
+
+extern int perf_event_init_task(struct task_struct *child);
+extern void perf_event_exit_task(struct task_struct *child);
+extern void perf_event_free_task(struct task_struct *task);
+extern void perf_event_delayed_put(struct task_struct *task);
+extern void perf_event_print_debug(void);
+extern void perf_pmu_disable(struct pmu *pmu);
+extern void perf_pmu_enable(struct pmu *pmu);
+extern int perf_event_task_disable(void);
+extern int perf_event_task_enable(void);
+extern void perf_event_update_userpage(struct perf_event *event);
+extern int perf_event_release_kernel(struct perf_event *event);
+extern struct perf_event *
+perf_event_create_kernel_counter(struct perf_event_attr *attr,
+				int cpu,
+				struct task_struct *task,
+				perf_overflow_handler_t callback);
+extern u64 perf_event_read_value(struct perf_event *event,
+				 u64 *enabled, u64 *running);
+
+struct perf_sample_data {
+	u64				type;
+
+	u64				ip;
+	struct {
+		u32	pid;
+		u32	tid;
+	}				tid_entry;
+	u64				time;
+	u64				addr;
+	u64				id;
+	u64				stream_id;
+	struct {
+		u32	cpu;
+		u32	reserved;
+	}				cpu_entry;
+	u64				period;
+	struct perf_callchain_entry	*callchain;
+	struct perf_raw_record		*raw;
+};
+
+static inline
+void perf_sample_data_init(struct perf_sample_data *data, u64 addr)
+{
+	data->addr = addr;
+	data->raw  = NULL;
+}
+
+extern void perf_output_sample(struct perf_output_handle *handle,
+			       struct perf_event_header *header,
+			       struct perf_sample_data *data,
+			       struct perf_event *event);
+extern void perf_prepare_sample(struct perf_event_header *header,
+				struct perf_sample_data *data,
+				struct perf_event *event,
+				struct pt_regs *regs);
+
+extern int perf_event_overflow(struct perf_event *event, int nmi,
+				 struct perf_sample_data *data,
+				 struct pt_regs *regs);
+
+/*
+ * Return 1 for a software event, 0 for a hardware event
+ */
+static inline int is_software_event(struct perf_event *event)
+{
+	return event->pmu->task_ctx_nr == perf_sw_context;
+}
+
+extern atomic_t perf_swevent_enabled[PERF_COUNT_SW_MAX];
+
+extern void __perf_sw_event(u32, u64, int, struct pt_regs *, u64);
+
+#ifndef perf_arch_fetch_caller_regs
+static inline void
+perf_arch_fetch_caller_regs(struct pt_regs *regs, unsigned long ip) { }
+#endif
+
+/*
+ * Take a snapshot of the regs. Skip ip and frame pointer to
+ * the nth caller. We only need a few of the regs:
+ * - ip for PERF_SAMPLE_IP
+ * - cs for user_mode() tests
+ * - bp for callchains
+ * - eflags, for future purposes, just in case
+ */
+static inline void perf_fetch_caller_regs(struct pt_regs *regs)
+{
+	memset(regs, 0, sizeof(*regs));
+
+	perf_arch_fetch_caller_regs(regs, CALLER_ADDR0);
+}
+
+static __always_inline void
+perf_sw_event(u32 event_id, u64 nr, int nmi, struct pt_regs *regs, u64 addr)
+{
+	struct pt_regs hot_regs;
+
+	JUMP_LABEL(&perf_swevent_enabled[event_id], have_event);
+	return;
+
+have_event:
+	if (!regs) {
+		perf_fetch_caller_regs(&hot_regs);
+		regs = &hot_regs;
+	}
+	__perf_sw_event(event_id, nr, nmi, regs, addr);
+}
+
+extern void perf_event_mmap(struct vm_area_struct *vma);
+extern struct perf_guest_info_callbacks *perf_guest_cbs;
+extern int perf_register_guest_info_callbacks(struct perf_guest_info_callbacks *callbacks);
+extern int perf_unregister_guest_info_callbacks(struct perf_guest_info_callbacks *callbacks);
+
+extern void perf_event_comm(struct task_struct *tsk);
+extern void perf_event_fork(struct task_struct *tsk);
+
+/* Callchains */
+DECLARE_PER_CPU(struct perf_callchain_entry, perf_callchain_entry);
+
+extern void perf_callchain_user(struct perf_callchain_entry *entry,
+				struct pt_regs *regs);
+extern void perf_callchain_kernel(struct perf_callchain_entry *entry,
+				  struct pt_regs *regs);
+
+
+static inline void
+perf_callchain_store(struct perf_callchain_entry *entry, u64 ip)
+{
+	if (entry->nr < PERF_MAX_STACK_DEPTH)
+		entry->ip[entry->nr++] = ip;
+}
+
+extern int sysctl_perf_event_paranoid;
+extern int sysctl_perf_event_mlock;
+extern int sysctl_perf_event_sample_rate;
+
+static inline bool perf_paranoid_tracepoint_raw(void)
+{
+	return sysctl_perf_event_paranoid > -1;
+}
+
+static inline bool perf_paranoid_cpu(void)
+{
+	return sysctl_perf_event_paranoid > 0;
+}
+
+static inline bool perf_paranoid_kernel(void)
+{
+	return sysctl_perf_event_paranoid > 1;
+}
+
+extern void perf_event_init(void);
+extern void perf_tp_event(u64 addr, u64 count, void *record,
+			  int entry_size, struct pt_regs *regs,
+			  struct hlist_head *head, int rctx);
+extern void perf_bp_event(struct perf_event *event, void *data);
+
+#ifndef perf_misc_flags
+#define perf_misc_flags(regs)	(user_mode(regs) ? PERF_RECORD_MISC_USER : \
+				 PERF_RECORD_MISC_KERNEL)
+#define perf_instruction_pointer(regs)	instruction_pointer(regs)
+#endif
+
+extern int perf_output_begin(struct perf_output_handle *handle,
+			     struct perf_event *event, unsigned int size,
+			     int nmi, int sample);
+extern void perf_output_end(struct perf_output_handle *handle);
+extern void perf_output_copy(struct perf_output_handle *handle,
+			     const void *buf, unsigned int len);
+extern int perf_swevent_get_recursion_context(void);
+extern void perf_swevent_put_recursion_context(int rctx);
+extern void perf_event_enable(struct perf_event *event);
+extern void perf_event_disable(struct perf_event *event);
+extern void perf_event_task_tick(void);
+#else
+static inline void
+perf_event_task_sched_in(struct task_struct *task)			{ }
+static inline void
+perf_event_task_sched_out(struct task_struct *task,
+			    struct task_struct *next)			{ }
+static inline int perf_event_init_task(struct task_struct *child)	{ return 0; }
+static inline void perf_event_exit_task(struct task_struct *child)	{ }
+static inline void perf_event_free_task(struct task_struct *task)	{ }
+static inline void perf_event_delayed_put(struct task_struct *task)	{ }
+static inline void perf_event_print_debug(void)				{ }
+static inline int perf_event_task_disable(void)				{ return -EINVAL; }
+static inline int perf_event_task_enable(void)				{ return -EINVAL; }
+
+static inline void
+perf_sw_event(u32 event_id, u64 nr, int nmi,
+		     struct pt_regs *regs, u64 addr)			{ }
+static inline void
+perf_bp_event(struct perf_event *event, void *data)			{ }
+
+static inline int perf_register_guest_info_callbacks
+(struct perf_guest_info_callbacks *callbacks) { return 0; }
+static inline int perf_unregister_guest_info_callbacks
+(struct perf_guest_info_callbacks *callbacks) { return 0; }
+
+static inline void perf_event_mmap(struct vm_area_struct *vma)		{ }
+static inline void perf_event_comm(struct task_struct *tsk)		{ }
+static inline void perf_event_fork(struct task_struct *tsk)		{ }
+static inline void perf_event_init(void)				{ }
+static inline int  perf_swevent_get_recursion_context(void)		{ return -1; }
+static inline void perf_swevent_put_recursion_context(int rctx)		{ }
+static inline void perf_event_enable(struct perf_event *event)		{ }
+static inline void perf_event_disable(struct perf_event *event)		{ }
+static inline void perf_event_task_tick(void)				{ }
+#endif
+
+#define perf_output_put(handle, x) \
+	perf_output_copy((handle), &(x), sizeof(x))
+
+/*
+ * This has to have a higher priority than migration_notifier in sched.c.
+ */
+#define perf_cpu_notifier(fn)					\
+do {								\
+	static struct notifier_block fn##_nb __cpuinitdata =	\
+		{ .notifier_call = fn, .priority = CPU_PRI_PERF }; \
+	fn(&fn##_nb, (unsigned long)CPU_UP_PREPARE,		\
+		(void *)(unsigned long)smp_processor_id());	\
+	fn(&fn##_nb, (unsigned long)CPU_STARTING,		\
+		(void *)(unsigned long)smp_processor_id());	\
+	fn(&fn##_nb, (unsigned long)CPU_ONLINE,			\
+		(void *)(unsigned long)smp_processor_id());	\
+	register_cpu_notifier(&fn##_nb);			\
+} while (0)
+
+#endif /* __KERNEL__ */
+#endif /* _LINUX_PERF_EVENT_H */
diff --git a/mono/profiler/proflog.c b/mono/profiler/proflog.c
new file mode 100644
index 0000000..cb8d916
--- /dev/null
+++ b/mono/profiler/proflog.c
@@ -0,0 +1,2359 @@
+/*
+ * proflog.c: mono log profiler
+ *
+ * Author:
+ *   Paolo Molaro (lupus at ximian.com)
+ *
+ * Copyright 2010 Novell, Inc (http://www.novell.com)
+ */
+
+#include <config.h>
+#include <mono/metadata/profiler.h>
+#include <mono/metadata/threads.h>
+#include <mono/metadata/mono-gc.h>
+#include <mono/metadata/debug-helpers.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#include <fcntl.h>
+#include <errno.h>
+#if defined(HOST_WIN32) || defined(DISABLE_SOCKETS)
+#define DISABLE_HELPER_THREAD 1
+#endif
+
+#ifndef _GNU_SOURCE
+#define _GNU_SOURCE
+#endif
+#ifdef HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+#ifdef HAVE_EXECINFO_H
+#include <execinfo.h>
+#endif
+#ifdef HAVE_LINK_H
+#include <link.h>
+#endif
+
+#ifndef DISABLE_HELPER_THREAD
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <sys/select.h>
+#endif
+
+#ifdef HOST_WIN32
+#include <windows.h>
+#else
+#include <pthread.h>
+#endif
+
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+
+#include "utils.c"
+#include "proflog.h"
+
+#if defined (HAVE_SYS_ZLIB)
+#include <zlib.h>
+#endif
+
+/* the architecture needs a memory fence */
+#if defined(__linux__) && (defined(__i386__) || defined(__x86_64__))
+#include "perf_event.h"
+#define USE_PERF_EVENTS 1
+static int read_perf_mmap (MonoProfiler* prof);
+#endif
+
+#define BUFFER_SIZE (4096 * 16)
+static int nocalls = 0;
+static int notraces = 0;
+static int use_zip = 0;
+static int do_report = 0;
+static int do_heap_shot = 0;
+static int max_call_depth = 100;
+static int runtime_inited = 0;
+static int command_port = 0;
+static int heapshot_requested = 0;
+static int sample_type = 0;
+static int sample_freq = 0;
+static int do_mono_sample = 0;
+static int in_shutdown = 0;
+static int do_debug = 0;
+
+/* For linux compile with:
+ * gcc -fPIC -shared -o libmono-profiler-log.so proflog.c utils.c -Wall -g -lz `pkg-config --cflags --libs mono-2`
+ * gcc -o mprof-report decode.c utils.c -Wall -g -lz -lrt -lpthread `pkg-config --cflags mono-2`
+ *
+ * For osx compile with:
+ * gcc -m32 -Dmono_free=free shared -o libmono-profiler-log.dylib proflog.c utils.c -Wall -g -lz `pkg-config --cflags mono-2` -undefined suppress -flat_namespace
+ * gcc -m32 -o mprof-report decode.c utils.c -Wall -g -lz -lrt -lpthread `pkg-config --cflags mono-2`
+ *
+ * Install with:
+ * sudo cp mprof-report /usr/local/bin
+ * sudo cp libmono-profiler-log.so /usr/local/lib
+ * sudo ldconfig
+ */
+
+typedef struct _LogBuffer LogBuffer;
+
+/*
+ * file format:
+ * [header] [buffer]*
+ *
+ * The file is composed by a header followed by 0 or more buffers.
+ * Each buffer contains events that happened on a thread: for a given thread
+ * buffers that appear later in the file are guaranteed to contain events
+ * that happened later in time. Buffers from separate threads could be interleaved,
+ * though.
+ * Buffers are not required to be aligned.
+ *
+ * header format:
+ * [id: 4 bytes] constant value: LOG_HEADER_ID
+ * [major: 1 byte] [minor: 1 byte] major and minor version of the log profiler
+ * [format: 1 byte] version of the data format for the rest of the file
+ * [ptrsize: 1 byte] size in bytes of a pointer in the profiled program
+ * [startup time: 8 bytes] time in milliseconds since the unix epoch when the program started
+ * [timer overhead: 4 bytes] approximate overhead in nanoseconds of the timer
+ * [flags: 4 bytes] file format flags, should be 0 for now
+ * [pid: 4 bytes] pid of the profiled process
+ * [port: 2 bytes] tcp port for server if != 0
+ * [sysid: 2 bytes] operating system and architecture identifier
+ *
+ * The multiple byte integers are in little-endian format.
+ *
+ * buffer format:
+ * [buffer header] [event]*
+ * Buffers have a fixed-size header followed by 0 or more bytes of event data.
+ * Timing information and other values in the event data are usually stored
+ * as uleb128 or sleb128 integers. To save space, as noted for each item below,
+ * some data is represented as a difference between the actual value and
+ * either the last value of the same type (like for timing information) or
+ * as the difference from a value stored in a buffer header.
+ *
+ * For timing information the data is stored as uleb128, since timing
+ * increases in a monotonic way in each thread: the value is the number of
+ * nanoseconds to add to the last seen timing data in a buffer. The first value
+ * in a buffer will be calculated from the time_base field in the buffer head.
+ *
+ * Object or heap sizes are stored as uleb128.
+ * Pointer differences are stored as sleb128, instead.
+ *
+ * If an unexpected value is found, the rest of the buffer should be ignored,
+ * as generally the later values need the former to be interpreted correctly.
+ *
+ * buffer header format:
+ * [bufid: 4 bytes] constant value: BUF_ID
+ * [len: 4 bytes] size of the data following the buffer header
+ * [time_base: 8 bytes] time base in nanoseconds since an unspecified epoch
+ * [ptr_base: 8 bytes] base value for pointers
+ * [obj_base: 8 bytes] base value for object addresses
+ * [thread id: 8 bytes] system-specific thread ID (pthread_t for example)
+ * [method_base: 8 bytes] base value for MonoMethod pointers
+ *
+ * event format:
+ * [extended info: upper 4 bits] [type: lower 4 bits] [data]*
+ * The data that follows depends on type and the extended info.
+ * Type is one of the enum values in proflog.h: TYPE_ALLOC, TYPE_GC,
+ * TYPE_METADATA, TYPE_METHOD, TYPE_EXCEPTION, TYPE_MONITOR, TYPE_HEAP.
+ * The extended info bits are interpreted based on type, see
+ * each individual event description below.
+ * strings are represented as a 0-terminated utf8 sequence.
+ *
+ * backtrace format:
+ * [flags: uleb128] must be 0
+ * [num: uleb128] number of frames following
+ * [frame: sleb128]* num MonoMethod pointers as differences from ptr_base
+ *
+ * type alloc format:
+ * type: TYPE_ALLOC
+ * exinfo: flags: TYPE_ALLOC_BT
+ * [time diff: uleb128] nanoseconds since last timing
+ * [ptr: sleb128] class as a byte difference from ptr_base
+ * [obj: sleb128] object address as a byte difference from obj_base
+ * [size: uleb128] size of the object in the heap
+ * If the TYPE_ALLOC_BT flag is set, a backtrace follows.
+ *
+ * type GC format:
+ * type: TYPE_GC
+ * exinfo: one of TYPE_GC_EVENT, TYPE_GC_RESIZE, TYPE_GC_MOVE, TYPE_GC_HANDLE_CREATED,
+ * TYPE_GC_HANDLE_DESTROYED
+ * [time diff: uleb128] nanoseconds since last timing
+ * if exinfo == TYPE_GC_RESIZE
+ *	[heap_size: uleb128] new heap size
+ * if exinfo == TYPE_GC_EVENT
+ *	[event type: uleb128] GC event (MONO_GC_EVENT_* from profiler.h)
+ *	[generation: uleb128] GC generation event refers to
+ * if exinfo == TYPE_GC_MOVE
+ *	[num_objects: uleb128] number of object moves that follow
+ *	[objaddr: sleb128]+ num_objects object pointer differences from obj_base
+ *	num is always an even number: the even items are the old
+ *	addresses, the odd numbers are the respective new object addresses
+ * if exinfo == TYPE_GC_HANDLE_CREATED
+ *	[handle_type: uleb128] GC handle type (System.Runtime.InteropServices.GCHandleType)
+ *	upper bits reserved as flags
+ *	[handle: uleb128] GC handle value
+ *	[objaddr: sleb128] object pointer differences from obj_base
+ * if exinfo == TYPE_GC_HANDLE_DESTROYED
+ *	[handle_type: uleb128] GC handle type (System.Runtime.InteropServices.GCHandleType)
+ *	upper bits reserved as flags
+ *	[handle: uleb128] GC handle value
+ *
+ * type metadata format:
+ * type: TYPE_METADATA
+ * exinfo: flags: TYPE_LOAD_ERR
+ * [time diff: uleb128] nanoseconds since last timing
+ * [mtype: byte] metadata type, one of: TYPE_CLASS, TYPE_IMAGE, TYPE_ASSEMBLY, TYPE_DOMAIN,
+ * TYPE_THREAD
+ * [pointer: sleb128] pointer of the metadata type depending on mtype
+ * if mtype == TYPE_CLASS
+ *	[image: sleb128] MonoImage* as a pointer difference from ptr_base
+ * 	[flags: uleb128] must be 0
+ * 	[name: string] full class name
+ * if mtype == TYPE_IMAGE
+ * 	[flags: uleb128] must be 0
+ * 	[name: string] image file name
+ * if mtype == TYPE_THREAD
+ * 	[flags: uleb128] must be 0
+ * 	[name: string] thread name
+ *
+ * type method format:
+ * type: TYPE_METHOD
+ * exinfo: one of: TYPE_LEAVE, TYPE_ENTER, TYPE_EXC_LEAVE, TYPE_JIT
+ * [time diff: uleb128] nanoseconds since last timing
+ * [method: sleb128] MonoMethod* as a pointer difference from the last such
+ * pointer or the buffer method_base
+ * if exinfo == TYPE_JIT
+ *	[code address: sleb128] pointer to the native code as a diff from ptr_base
+ *	[code size: uleb128] size of the generated code
+ *	[name: string] full method name
+ *
+ * type exception format:
+ * type: TYPE_EXCEPTION
+ * exinfo: TYPE_EXCEPTION_BT flag and one of: TYPE_THROW, TYPE_CLAUSE
+ * [time diff: uleb128] nanoseconds since last timing
+ * if exinfo.low3bits == TYPE_CLAUSE
+ * 	[clause type: uleb128] finally/catch/fault/filter
+ * 	[clause num: uleb128] the clause number in the method header
+ * 	[method: sleb128] MonoMethod* as a pointer difference from the last such
+ * 	pointer or the buffer method_base
+ * if exinfo.low3bits == TYPE_THROW
+ * 	[object: sleb128] the object that was thrown as a difference from obj_base
+ *	If the TYPE_EXCEPTION_BT flag is set, a backtrace follows.
+ *
+ * type monitor format:
+ * type: TYPE_MONITOR
+ * exinfo: TYPE_MONITOR_BT flag and one of: MONO_PROFILER_MONITOR_(CONTENTION|FAIL|DONE)
+ * [time diff: uleb128] nanoseconds since last timing
+ * [object: sleb128] the lock object as a difference from obj_base
+ * if exinfo.low3bits == MONO_PROFILER_MONITOR_CONTENTION
+ *	If the TYPE_MONITOR_BT flag is set, a backtrace follows.
+ *
+ * type heap format
+ * type: TYPE_HEAP
+ * exinfo: one of TYPE_HEAP_START, TYPE_HEAP_END, TYPE_HEAP_OBJECT, TYPE_HEAP_ROOT
+ * if exinfo == TYPE_HEAP_START
+ * 	[time diff: uleb128] nanoseconds since last timing
+ * if exinfo == TYPE_HEAP_END
+ * 	[time diff: uleb128] nanoseconds since last timing
+ * if exinfo == TYPE_HEAP_OBJECT
+ * 	[object: sleb128] the object as a difference from obj_base
+ * 	[class: sleb128] the object MonoClass* as a difference from ptr_base
+ * 	[size: uleb128] size of the object on the heap
+ * 	[num_refs: uleb128] number of object references
+ * 	if (format version > 1) each referenced objref is preceded by a
+ *	uleb128 encoded offset: the first offset is from the object address
+ *	and each next offset is relative to the previous one
+ * 	[objrefs: sleb128]+ object referenced as a difference from obj_base
+ * 	The same object can appear multiple times, but only the first time
+ * 	with size != 0: in the other cases this data will only be used to
+ * 	provide additional referenced objects.
+ * if exinfo == TYPE_HEAP_ROOT
+ * 	[num_roots: uleb128] number of root references
+ * 	[num_gc: uleb128] number of major gcs
+ * 	[object: sleb128] the object as a difference from obj_base
+ * 	[root_type: uleb128] the root_type: MonoProfileGCRootType (profiler.h)
+ * 	[extra_info: uleb128] the extra_info value
+ * 	object, root_type_extra_info are repeated num_roots times
+ *
+ * type sample format
+ * type: TYPE_SAMPLE
+ * exinfo: one of TYPE_SAMPLE_HIT, TYPE_SAMPLE_USYM, TYPE_SAMPLE_UBIN
+ * if exinfo == TYPE_SAMPLE_HIT
+ * 	[sample_type: uleb128] type of sample (SAMPLE_*)
+ * 	[timestamp: uleb128] nanoseconds since startup (note: different from other timestamps!)
+ * 	[count: uleb128] number of following instruction addresses
+ * 	[ip: sleb128]* instruction pointer as difference from ptr_base
+ * if exinfo == TYPE_SAMPLE_USYM
+ * 	[address: sleb128] symbol address as a difference from ptr_base
+ * 	[size: uleb128] symbol size (may be 0 if unknown)
+ * 	[name: string] symbol name
+ * if exinfo == TYPE_SAMPLE_UBIN
+ * 	[time diff: uleb128] nanoseconds since last timing
+ * 	[address: sleb128] address where binary has been loaded
+ * 	[offset: uleb128] file offset of mapping (the same file can be mapped multiple times)
+ * 	[size: uleb128] memory size
+ * 	[name: string] binary name
+ *
+ */
+struct _LogBuffer {
+	LogBuffer *next;
+	uint64_t time_base;
+	uint64_t last_time;
+	uintptr_t ptr_base;
+	uintptr_t method_base;
+	uintptr_t last_method;
+	uintptr_t obj_base;
+	uintptr_t thread_id;
+	unsigned char* data_end;
+	unsigned char* data;
+	int locked;
+	int size;
+	int call_depth;
+	unsigned char buf [1];
+};
+
+#define ENTER_LOG(lb,str) if ((lb)->locked) {write(2, str, strlen(str)); write(2, "\n", 1);return;} else {(lb)->locked++;}
+#define EXIT_LOG(lb) (lb)->locked--;
+
+typedef struct _StatBuffer StatBuffer;
+struct _StatBuffer {
+	StatBuffer *next;
+	uintptr_t size;
+	uintptr_t *data_end;
+	uintptr_t *data;
+	uintptr_t buf [1];
+};
+
+typedef struct _BinaryObject BinaryObject;
+
+struct _BinaryObject {
+	BinaryObject *next;
+	void *addr;
+	char *name;
+};
+
+struct _MonoProfiler {
+	LogBuffer *buffers;
+	StatBuffer *stat_buffers;
+	FILE* file;
+#if defined (HAVE_SYS_ZLIB)
+	gzFile *gzfile;
+#endif
+	uint64_t startup_time;
+	int pipe_output;
+	int last_gc_gen_started;
+	int command_port;
+	int server_socket;
+	int pipes [2];
+#ifndef HOST_WIN32
+	pthread_t helper_thread;
+#endif
+	BinaryObject *binary_objects;
+};
+
+#ifdef HOST_WIN32
+#define TLS_SET(x,y) TlsSetValue(x, y)
+#define TLS_GET(x) ((LogBuffer *) TlsGetValue(x))
+#define TLS_INIT(x) x = TlsAlloc ()
+static int tlsbuffer;
+#elif HAVE_KW_THREAD
+#define TLS_SET(x,y) x = y
+#define TLS_GET(x) x
+#define TLS_INIT(x)
+static __thread LogBuffer* tlsbuffer = NULL;
+#else
+#define TLS_SET(x,y) pthread_setspecific(x, y)
+#define TLS_GET(x) ((LogBuffer *) pthread_getspecific(x))
+#define TLS_INIT(x) pthread_key_create(&x, NULL)
+static pthread_key_t tlsbuffer;
+#endif
+
+static char*
+pstrdup (const char *s)
+{
+	int len = strlen (s) + 1;
+	char *p = malloc (len);
+	memcpy (p, s, len);
+	return p;
+}
+
+static StatBuffer*
+create_stat_buffer (void)
+{
+	StatBuffer* buf = alloc_buffer (BUFFER_SIZE);
+	buf->size = BUFFER_SIZE;
+	buf->data_end = (uintptr_t*)((unsigned char*)buf + buf->size);
+	buf->data = buf->buf;
+	return buf;
+}
+
+static LogBuffer*
+create_buffer (void)
+{
+	LogBuffer* buf = alloc_buffer (BUFFER_SIZE);
+	buf->size = BUFFER_SIZE;
+	buf->time_base = current_time ();
+	buf->last_time = buf->time_base;
+	buf->data_end = (unsigned char*)buf + buf->size;
+	buf->data = buf->buf;
+	return buf;
+}
+
+static void
+init_thread (void)
+{
+	LogBuffer *logbuffer;
+	if (TLS_GET (tlsbuffer))
+		return;
+	logbuffer = create_buffer ();
+	TLS_SET (tlsbuffer, logbuffer);
+	logbuffer->thread_id = thread_id ();
+	//printf ("thread %p at time %llu\n", (void*)logbuffer->thread_id, logbuffer->time_base);
+}
+
+static LogBuffer*
+ensure_logbuf (int bytes)
+{
+	LogBuffer *old = TLS_GET (tlsbuffer);
+	if (old && old->data + bytes + 100 < old->data_end)
+		return old;
+	TLS_SET (tlsbuffer, NULL);
+	init_thread ();
+	TLS_GET (tlsbuffer)->next = old;
+	if (old)
+		TLS_GET (tlsbuffer)->call_depth = old->call_depth;
+	//printf ("new logbuffer\n");
+	return TLS_GET (tlsbuffer);
+}
+
+static void
+emit_byte (LogBuffer *logbuffer, int value)
+{
+	logbuffer->data [0] = value;
+	logbuffer->data++;
+	assert (logbuffer->data <= logbuffer->data_end);
+}
+
+static void
+emit_value (LogBuffer *logbuffer, int value)
+{
+	encode_uleb128 (value, logbuffer->data, &logbuffer->data);
+	assert (logbuffer->data <= logbuffer->data_end);
+}
+
+static void
+emit_time (LogBuffer *logbuffer, uint64_t value)
+{
+	uint64_t tdiff = value - logbuffer->last_time;
+	unsigned char *p;
+	if (value < logbuffer->last_time)
+		printf ("time went backwards\n");
+	//if (tdiff > 1000000)
+	//	printf ("large time offset: %llu\n", tdiff);
+	p = logbuffer->data;
+	encode_uleb128 (tdiff, logbuffer->data, &logbuffer->data);
+	/*if (tdiff != decode_uleb128 (p, &p))
+		printf ("incorrect encoding: %llu\n", tdiff);*/
+	logbuffer->last_time = value;
+	assert (logbuffer->data <= logbuffer->data_end);
+}
+
+static void
+emit_svalue (LogBuffer *logbuffer, int64_t value)
+{
+	encode_sleb128 (value, logbuffer->data, &logbuffer->data);
+	assert (logbuffer->data <= logbuffer->data_end);
+}
+
+static void
+emit_uvalue (LogBuffer *logbuffer, uint64_t value)
+{
+	encode_uleb128 (value, logbuffer->data, &logbuffer->data);
+	assert (logbuffer->data <= logbuffer->data_end);
+}
+
+static void
+emit_ptr (LogBuffer *logbuffer, void *ptr)
+{
+	if (!logbuffer->ptr_base)
+		logbuffer->ptr_base = (uintptr_t)ptr;
+	emit_svalue (logbuffer, (intptr_t)ptr - logbuffer->ptr_base);
+	assert (logbuffer->data <= logbuffer->data_end);
+}
+
+static void
+emit_method (LogBuffer *logbuffer, void *method)
+{
+	if (!logbuffer->method_base) {
+		logbuffer->method_base = (intptr_t)method;
+		logbuffer->last_method = (intptr_t)method;
+	}
+	encode_sleb128 ((intptr_t)((char*)method - (char*)logbuffer->last_method), logbuffer->data, &logbuffer->data);
+	logbuffer->last_method = (intptr_t)method;
+	assert (logbuffer->data <= logbuffer->data_end);
+}
+
+static void
+emit_obj (LogBuffer *logbuffer, void *ptr)
+{
+	if (!logbuffer->obj_base)
+		logbuffer->obj_base = (uintptr_t)ptr >> 3;
+	emit_svalue (logbuffer, ((uintptr_t)ptr >> 3) - logbuffer->obj_base);
+	assert (logbuffer->data <= logbuffer->data_end);
+}
+
+static char*
+write_int16 (char *buf, int32_t value)
+{
+	int i;
+	for (i = 0; i < 2; ++i) {
+		buf [i] = value;
+		value >>= 8;
+	}
+	return buf + 2;
+}
+
+static char*
+write_int32 (char *buf, int32_t value)
+{
+	int i;
+	for (i = 0; i < 4; ++i) {
+		buf [i] = value;
+		value >>= 8;
+	}
+	return buf + 4;
+}
+
+static char*
+write_int64 (char *buf, int64_t value)
+{
+	int i;
+	for (i = 0; i < 8; ++i) {
+		buf [i] = value;
+		value >>= 8;
+	}
+	return buf + 8;
+}
+
+static void
+dump_header (MonoProfiler *profiler)
+{
+	char hbuf [128];
+	char *p = hbuf;
+	p = write_int32 (p, LOG_HEADER_ID);
+	*p++ = LOG_VERSION_MAJOR;
+	*p++ = LOG_VERSION_MINOR;
+	*p++ = LOG_DATA_VERSION;
+	*p++ = sizeof (void*);
+	p = write_int64 (p, ((uint64_t)time (NULL)) * 1000); /* startup time */
+	p = write_int32 (p, get_timer_overhead ()); /* timer overhead */
+	p = write_int32 (p, 0); /* flags */
+	p = write_int32 (p, process_id ()); /* pid */
+	p = write_int16 (p, profiler->command_port); /* port */
+	p = write_int16 (p, 0); /* opsystem */
+#if defined (HAVE_SYS_ZLIB)
+	if (profiler->gzfile) {
+		gzwrite (profiler->gzfile, hbuf, p - hbuf);
+	} else {
+		fwrite (hbuf, p - hbuf, 1, profiler->file);
+	}
+#else
+	fwrite (hbuf, p - hbuf, 1, profiler->file);
+#endif
+}
+
+static void
+dump_buffer (MonoProfiler *profiler, LogBuffer *buf)
+{
+	char hbuf [128];
+	char *p = hbuf;
+	if (buf->next)
+		dump_buffer (profiler, buf->next);
+	p = write_int32 (p, BUF_ID);
+	p = write_int32 (p, buf->data - buf->buf);
+	p = write_int64 (p, buf->time_base);
+	p = write_int64 (p, buf->ptr_base);
+	p = write_int64 (p, buf->obj_base);
+	p = write_int64 (p, buf->thread_id);
+	p = write_int64 (p, buf->method_base);
+#if defined (HAVE_SYS_ZLIB)
+	if (profiler->gzfile) {
+		gzwrite (profiler->gzfile, hbuf, p - hbuf);
+		gzwrite (profiler->gzfile, buf->buf, buf->data - buf->buf);
+	} else {
+#endif
+		fwrite (hbuf, p - hbuf, 1, profiler->file);
+		fwrite (buf->buf, buf->data - buf->buf, 1, profiler->file);
+#if defined (HAVE_SYS_ZLIB)
+	}
+#endif
+	free_buffer (buf, buf->size);
+}
+
+static void
+process_requests (MonoProfiler *profiler)
+{
+	if (heapshot_requested)
+		mono_gc_collect (mono_gc_max_generation ());
+}
+
+static void
+runtime_initialized (MonoProfiler *profiler)
+{
+	runtime_inited = 1;
+}
+
+/*
+ * Can be called only at safe callback locations.
+ */
+static void
+safe_dump (MonoProfiler *profiler, LogBuffer *logbuffer)
+{
+	int cd = logbuffer->call_depth;
+	take_lock ();
+	dump_buffer (profiler, TLS_GET (tlsbuffer));
+	release_lock ();
+	TLS_SET (tlsbuffer, NULL);
+	init_thread ();
+	TLS_GET (tlsbuffer)->call_depth = cd;
+}
+
+static int
+gc_reference (MonoObject *obj, MonoClass *klass, uintptr_t size, uintptr_t num, MonoObject **refs, uintptr_t *offsets, void *data)
+{
+	int i;
+	uintptr_t last_offset = 0;
+	//const char *name = mono_class_get_name (klass);
+	LogBuffer *logbuffer = ensure_logbuf (20 + num * 8);
+	emit_byte (logbuffer, TYPE_HEAP_OBJECT | TYPE_HEAP);
+	emit_obj (logbuffer, obj);
+	emit_ptr (logbuffer, klass);
+	/* account for object alignment in the heap */
+	size += 7;
+	size &= ~7;
+	emit_value (logbuffer, size);
+	emit_value (logbuffer, num);
+	for (i = 0; i < num; ++i) {
+		emit_value (logbuffer, offsets [i] - last_offset);
+		last_offset = offsets [i];
+		emit_obj (logbuffer, refs [i]);
+	}
+	//if (num)
+	//	printf ("obj: %p, klass: %s, refs: %d, size: %d\n", obj, name, (int)num, (int)size);
+	return 0;
+}
+
+static unsigned int hs_mode_ms = 0;
+static unsigned int hs_mode_gc = 0;
+static unsigned int hs_mode_ondemand = 0;
+static unsigned int gc_count = 0;
+static uint64_t last_hs_time = 0;
+
+static void
+heap_walk (MonoProfiler *profiler)
+{
+	int do_walk = 0;
+	uint64_t now;
+	LogBuffer *logbuffer;
+	if (!do_heap_shot)
+		return;
+	logbuffer = ensure_logbuf (10);
+	now = current_time ();
+	if (hs_mode_ms && (now - last_hs_time)/1000000 >= hs_mode_ms)
+		do_walk = 1;
+	else if (hs_mode_gc && (gc_count % hs_mode_gc) == 0)
+		do_walk = 1;
+	else if (hs_mode_ondemand && heapshot_requested)
+		do_walk = 1;
+	else if (!hs_mode_ms && !hs_mode_gc && profiler->last_gc_gen_started == mono_gc_max_generation ())
+		do_walk = 1;
+
+	if (!do_walk)
+		return;
+	heapshot_requested = 0;
+	emit_byte (logbuffer, TYPE_HEAP_START | TYPE_HEAP);
+	emit_time (logbuffer, now);
+	mono_gc_walk_heap (0, gc_reference, NULL);
+	logbuffer = ensure_logbuf (10);
+	now = current_time ();
+	emit_byte (logbuffer, TYPE_HEAP_END | TYPE_HEAP);
+	emit_time (logbuffer, now);
+	last_hs_time = now;
+}
+
+static void
+gc_event (MonoProfiler *profiler, MonoGCEvent ev, int generation) {
+	uint64_t now;
+	LogBuffer *logbuffer = ensure_logbuf (10);
+	now = current_time ();
+	ENTER_LOG (logbuffer, "gcevent");
+	emit_byte (logbuffer, TYPE_GC_EVENT | TYPE_GC);
+	emit_time (logbuffer, now);
+	emit_value (logbuffer, ev);
+	emit_value (logbuffer, generation);
+	/* to deal with nested gen1 after gen0 started */
+	if (ev == MONO_GC_EVENT_START) {
+		profiler->last_gc_gen_started = generation;
+		if (generation == mono_gc_max_generation ())
+			gc_count++;
+	}
+	if (ev == MONO_GC_EVENT_PRE_START_WORLD)
+		heap_walk (profiler);
+	EXIT_LOG (logbuffer);
+	if (ev == MONO_GC_EVENT_POST_START_WORLD)
+		safe_dump (profiler, logbuffer);
+	//printf ("gc event %d for generation %d\n", ev, generation);
+}
+
+static void
+gc_resize (MonoProfiler *profiler, int64_t new_size) {
+	uint64_t now;
+	LogBuffer *logbuffer = ensure_logbuf (10);
+	now = current_time ();
+	ENTER_LOG (logbuffer, "gcresize");
+	emit_byte (logbuffer, TYPE_GC_RESIZE | TYPE_GC);
+	emit_time (logbuffer, now);
+	emit_value (logbuffer, new_size);
+	//printf ("gc resized to %lld\n", new_size);
+	EXIT_LOG (logbuffer);
+}
+
+#define MAX_FRAMES 16
+typedef struct {
+	int count;
+	MonoMethod* methods [MAX_FRAMES];
+} FrameData;
+static int num_frames = MAX_FRAMES / 2;
+
+static mono_bool
+walk_stack (MonoMethod *method, int32_t native_offset, int32_t il_offset, mono_bool managed, void* data)
+{
+	FrameData *frame = data;
+	if (method && frame->count < num_frames) {
+		frame->methods [frame->count++] = method;
+		//printf ("In %d %s\n", frame->count, mono_method_get_name (method));
+	}
+	return frame->count == num_frames;
+}
+
+/*
+ * a note about stack walks: they can cause more profiler events to fire,
+ * so we need to make sure they don't happen after we started emitting an
+ * event, hence the collect_bt/emit_bt split.
+ */
+static void
+collect_bt (FrameData *data)
+{
+	data->count = 0;
+	mono_stack_walk_no_il (walk_stack, data);
+}
+
+static void
+emit_bt (LogBuffer *logbuffer, FrameData *data)
+{
+	/* FIXME: this is actually tons of data and we should
+	 * just output it the first time and use an id the next
+	 */
+	if (data->count > num_frames)
+		printf ("bad num frames: %d\n", data->count);
+	emit_value (logbuffer, 0); /* flags */
+	emit_value (logbuffer, data->count);
+	//if (*p != data.count) {
+	//	printf ("bad num frames enc at %d: %d -> %d\n", count, data.count, *p); printf ("frames end: %p->%p\n", p, logbuffer->data); exit(0);}
+	while (data->count) {
+		emit_ptr (logbuffer, data->methods [--data->count]);
+	}
+}
+
+static void
+gc_alloc (MonoProfiler *prof, MonoObject *obj, MonoClass *klass)
+{
+	uint64_t now;
+	uintptr_t len;
+	int do_bt = (nocalls && runtime_inited && !notraces)? TYPE_ALLOC_BT: 0;
+	FrameData data;
+	LogBuffer *logbuffer;
+	len = mono_object_get_size (obj);
+	/* account for object alignment in the heap */
+	len += 7;
+	len &= ~7;
+	if (do_bt)
+		collect_bt (&data);
+	logbuffer = ensure_logbuf (32 + MAX_FRAMES * 8);
+	now = current_time ();
+	ENTER_LOG (logbuffer, "gcalloc");
+	emit_byte (logbuffer, do_bt | TYPE_ALLOC);
+	emit_time (logbuffer, now);
+	emit_ptr (logbuffer, klass);
+	emit_obj (logbuffer, obj);
+	emit_value (logbuffer, len);
+	if (do_bt)
+		emit_bt (logbuffer, &data);
+	EXIT_LOG (logbuffer);
+	if (logbuffer->next)
+		safe_dump (prof, logbuffer);
+	process_requests (prof);
+	//printf ("gc alloc %s at %p\n", mono_class_get_name (klass), obj);
+}
+
+static void
+gc_moves (MonoProfiler *prof, void **objects, int num)
+{
+	int i;
+	uint64_t now;
+	LogBuffer *logbuffer = ensure_logbuf (10 + num * 8);
+	now = current_time ();
+	ENTER_LOG (logbuffer, "gcmove");
+	emit_byte (logbuffer, TYPE_GC_MOVE | TYPE_GC);
+	emit_time (logbuffer, now);
+	emit_value (logbuffer, num);
+	for (i = 0; i < num; ++i)
+		emit_obj (logbuffer, objects [i]);
+	//printf ("gc moved %d objects\n", num/2);
+	EXIT_LOG (logbuffer);
+}
+
+static void
+gc_roots (MonoProfiler *prof, int num, void **objects, int *root_types, uintptr_t *extra_info)
+{
+	int i;
+	LogBuffer *logbuffer = ensure_logbuf (5 + num * 18);
+	ENTER_LOG (logbuffer, "gcroots");
+	emit_byte (logbuffer, TYPE_HEAP_ROOT | TYPE_HEAP);
+	emit_value (logbuffer, num);
+	emit_value (logbuffer, mono_gc_collection_count (mono_gc_max_generation ()));
+	for (i = 0; i < num; ++i) {
+		emit_obj (logbuffer, objects [i]);
+		emit_value (logbuffer, root_types [i]);
+		emit_value (logbuffer, extra_info [i]);
+	}
+	EXIT_LOG (logbuffer);
+}
+
+static void
+gc_handle (MonoProfiler *prof, int op, int type, uintptr_t handle, MonoObject *obj)
+{
+	uint64_t now;
+	LogBuffer *logbuffer = ensure_logbuf (16);
+	now = current_time ();
+	ENTER_LOG (logbuffer, "gchandle");
+	if (op == MONO_PROFILER_GC_HANDLE_CREATED)
+		emit_byte (logbuffer, TYPE_GC_HANDLE_CREATED | TYPE_GC);
+	else if (op == MONO_PROFILER_GC_HANDLE_DESTROYED)
+		emit_byte (logbuffer, TYPE_GC_HANDLE_DESTROYED | TYPE_GC);
+	else
+		return;
+	emit_time (logbuffer, now);
+	emit_value (logbuffer, type);
+	emit_value (logbuffer, handle);
+	if (op == MONO_PROFILER_GC_HANDLE_CREATED)
+		emit_obj (logbuffer, obj);
+	EXIT_LOG (logbuffer);
+	process_requests (prof);
+}
+
+static char*
+push_nesting (char *p, MonoClass *klass)
+{
+	MonoClass *nesting;
+	const char *name;
+	const char *nspace;
+	nesting = mono_class_get_nesting_type (klass);
+	if (nesting) {
+		p = push_nesting (p, nesting);
+		*p++ = '/';
+		*p = 0;
+	}
+	name = mono_class_get_name (klass);
+	nspace = mono_class_get_namespace (klass);
+	if (*nspace) {
+		strcpy (p, nspace);
+		p += strlen (nspace);
+		*p++ = '.';
+		*p = 0;
+	}
+	strcpy (p, name);
+	p += strlen (name);
+	return p;
+}
+
+static char*
+type_name (MonoClass *klass)
+{
+	char buf [1024];
+	char *p;
+	push_nesting (buf, klass);
+	p = malloc (strlen (buf) + 1);
+	strcpy (p, buf);
+	return p;
+}
+
+static void
+image_loaded (MonoProfiler *prof, MonoImage *image, int result)
+{
+	uint64_t now;
+	const char *name;
+	int nlen;
+	LogBuffer *logbuffer;
+	if (result != MONO_PROFILE_OK)
+		return;
+	name = mono_image_get_filename (image);
+	nlen = strlen (name) + 1;
+	logbuffer = ensure_logbuf (16 + nlen);
+	now = current_time ();
+	ENTER_LOG (logbuffer, "image");
+	emit_byte (logbuffer, TYPE_END_LOAD | TYPE_METADATA);
+	emit_time (logbuffer, now);
+	emit_byte (logbuffer, TYPE_IMAGE);
+	emit_ptr (logbuffer, image);
+	emit_value (logbuffer, 0); /* flags */
+	memcpy (logbuffer->data, name, nlen);
+	logbuffer->data += nlen;
+	//printf ("loaded image %p (%s)\n", image, name);
+	EXIT_LOG (logbuffer);
+	if (logbuffer->next)
+		safe_dump (prof, logbuffer);
+	process_requests (prof);
+}
+
+static void
+class_loaded (MonoProfiler *prof, MonoClass *klass, int result)
+{
+	uint64_t now;
+	char *name;
+	int nlen;
+	MonoImage *image;
+	LogBuffer *logbuffer;
+	if (result != MONO_PROFILE_OK)
+		return;
+	if (runtime_inited)
+		name = mono_type_get_name (mono_class_get_type (klass));
+	else
+		name = type_name (klass);
+	nlen = strlen (name) + 1;
+	image = mono_class_get_image (klass);
+	logbuffer = ensure_logbuf (24 + nlen);
+	now = current_time ();
+	ENTER_LOG (logbuffer, "class");
+	emit_byte (logbuffer, TYPE_END_LOAD | TYPE_METADATA);
+	emit_time (logbuffer, now);
+	emit_byte (logbuffer, TYPE_CLASS);
+	emit_ptr (logbuffer, klass);
+	emit_ptr (logbuffer, image);
+	emit_value (logbuffer, 0); /* flags */
+	memcpy (logbuffer->data, name, nlen);
+	logbuffer->data += nlen;
+	//printf ("loaded class %p (%s)\n", klass, name);
+	if (runtime_inited)
+		mono_free (name);
+	else
+		free (name);
+	EXIT_LOG (logbuffer);
+	if (logbuffer->next)
+		safe_dump (prof, logbuffer);
+	process_requests (prof);
+}
+
+static void
+method_enter (MonoProfiler *prof, MonoMethod *method)
+{
+	uint64_t now;
+	LogBuffer *logbuffer = ensure_logbuf (16);
+	if (logbuffer->call_depth++ > max_call_depth)
+		return;
+	now = current_time ();
+	ENTER_LOG (logbuffer, "enter");
+	emit_byte (logbuffer, TYPE_ENTER | TYPE_METHOD);
+	emit_time (logbuffer, now);
+	emit_method (logbuffer, method);
+	EXIT_LOG (logbuffer);
+	process_requests (prof);
+}
+
+static void
+method_leave (MonoProfiler *prof, MonoMethod *method)
+{
+	uint64_t now;
+	LogBuffer *logbuffer = ensure_logbuf (16);
+	if (--logbuffer->call_depth > max_call_depth)
+		return;
+	now = current_time ();
+	ENTER_LOG (logbuffer, "leave");
+	emit_byte (logbuffer, TYPE_LEAVE | TYPE_METHOD);
+	emit_time (logbuffer, now);
+	emit_method (logbuffer, method);
+	EXIT_LOG (logbuffer);
+	if (logbuffer->next)
+		safe_dump (prof, logbuffer);
+	process_requests (prof);
+}
+
+static void
+method_exc_leave (MonoProfiler *prof, MonoMethod *method)
+{
+	uint64_t now;
+	LogBuffer *logbuffer;
+	if (nocalls)
+		return;
+	logbuffer = ensure_logbuf (16);
+	if (--logbuffer->call_depth > max_call_depth)
+		return;
+	now = current_time ();
+	ENTER_LOG (logbuffer, "eleave");
+	emit_byte (logbuffer, TYPE_EXC_LEAVE | TYPE_METHOD);
+	emit_time (logbuffer, now);
+	emit_method (logbuffer, method);
+	EXIT_LOG (logbuffer);
+	process_requests (prof);
+}
+
+static void
+method_jitted (MonoProfiler *prof, MonoMethod *method, MonoJitInfo* jinfo, int result)
+{
+	uint64_t now;
+	char *name;
+	int nlen;
+	LogBuffer *logbuffer;
+	if (result != MONO_PROFILE_OK)
+		return;
+	name = mono_method_full_name (method, 1);
+	nlen = strlen (name) + 1;
+	logbuffer = ensure_logbuf (32 + nlen);
+	now = current_time ();
+	ENTER_LOG (logbuffer, "jit");
+	emit_byte (logbuffer, TYPE_JIT | TYPE_METHOD);
+	emit_time (logbuffer, now);
+	emit_method (logbuffer, method);
+	emit_ptr (logbuffer, mono_jit_info_get_code_start (jinfo));
+	emit_value (logbuffer, mono_jit_info_get_code_size (jinfo));
+	memcpy (logbuffer->data, name, nlen);
+	logbuffer->data += nlen;
+	mono_free (name);
+	EXIT_LOG (logbuffer);
+	if (logbuffer->next)
+		safe_dump (prof, logbuffer);
+	process_requests (prof);
+}
+
+static void
+throw_exc (MonoProfiler *prof, MonoObject *object)
+{
+	int do_bt = (nocalls && runtime_inited && !notraces)? TYPE_EXCEPTION_BT: 0;
+	uint64_t now;
+	FrameData data;
+	LogBuffer *logbuffer;
+	if (do_bt)
+		collect_bt (&data);
+	logbuffer = ensure_logbuf (16 + MAX_FRAMES * 8);
+	now = current_time ();
+	ENTER_LOG (logbuffer, "throw");
+	emit_byte (logbuffer, do_bt | TYPE_EXCEPTION);
+	emit_time (logbuffer, now);
+	emit_obj (logbuffer, object);
+	if (do_bt)
+		emit_bt (logbuffer, &data);
+	EXIT_LOG (logbuffer);
+	process_requests (prof);
+}
+
+static void
+clause_exc (MonoProfiler *prof, MonoMethod *method, int clause_type, int clause_num)
+{
+	uint64_t now;
+	LogBuffer *logbuffer = ensure_logbuf (16);
+	now = current_time ();
+	ENTER_LOG (logbuffer, "clause");
+	emit_byte (logbuffer, TYPE_EXCEPTION | TYPE_CLAUSE);
+	emit_time (logbuffer, now);
+	emit_value (logbuffer, clause_type);
+	emit_value (logbuffer, clause_num);
+	emit_method (logbuffer, method);
+	EXIT_LOG (logbuffer);
+}
+
+static void
+monitor_event (MonoProfiler *profiler, MonoObject *object, MonoProfilerMonitorEvent event)
+{
+	int do_bt = (nocalls && runtime_inited && !notraces && event == MONO_PROFILER_MONITOR_CONTENTION)? TYPE_MONITOR_BT: 0;
+	uint64_t now;
+	FrameData data;
+	LogBuffer *logbuffer;
+	if (do_bt)
+		collect_bt (&data);
+	logbuffer = ensure_logbuf (16 + MAX_FRAMES * 8);
+	now = current_time ();
+	ENTER_LOG (logbuffer, "monitor");
+	emit_byte (logbuffer, (event << 4) | do_bt | TYPE_MONITOR);
+	emit_time (logbuffer, now);
+	emit_obj (logbuffer, object);
+	if (do_bt)
+		emit_bt (logbuffer, &data);
+	EXIT_LOG (logbuffer);
+	process_requests (profiler);
+}
+
+static void
+thread_start (MonoProfiler *prof, uintptr_t tid)
+{
+	//printf ("thread start %p\n", (void*)tid);
+	init_thread ();
+}
+
+static void
+thread_end (MonoProfiler *prof, uintptr_t tid)
+{
+	take_lock ();
+	if (TLS_GET (tlsbuffer))
+		dump_buffer (prof, TLS_GET (tlsbuffer));
+	release_lock ();
+	TLS_SET (tlsbuffer, NULL);
+}
+
+static void
+thread_name (MonoProfiler *prof, uintptr_t tid, const char *name)
+{
+	int len = strlen (name) + 1;
+	uint64_t now;
+	LogBuffer *logbuffer;
+	logbuffer = ensure_logbuf (10 + len);
+	now = current_time ();
+	ENTER_LOG (logbuffer, "tname");
+	emit_byte (logbuffer, TYPE_METADATA);
+	emit_time (logbuffer, now);
+	emit_byte (logbuffer, TYPE_THREAD);
+	emit_ptr (logbuffer, (void*)tid);
+	emit_value (logbuffer, 0); /* flags */
+	memcpy (logbuffer->data, name, len);
+	logbuffer->data += len;
+	EXIT_LOG (logbuffer);
+}
+
+#ifndef HOST_WIN32
+#include "mono/io-layer/atomic.h"
+#endif
+#define cmp_exchange InterlockedCompareExchangePointer
+/*#else
+static void*
+cmp_exchange (volatile void **dest, void *exch, void *comp)
+{
+	void *old;
+	__asm__ __volatile__ ("lock; "
+#ifdef __x86_64__
+		"cmpxchgq"
+#else
+		"cmpxchgl"
+#endif
+		" %2, %0"
+		: "=m" (*dest), "=a" (old)
+		: "r" (exch), "m" (*dest), "a" (comp));
+	return old;
+}
+#endif
+*/
+
+static void
+mono_sample_hit (MonoProfiler *profiler, unsigned char *ip, void *context)
+{
+	StatBuffer *sbuf;
+	uint64_t now;
+	uintptr_t *data, *new_data, *old_data;
+	if (in_shutdown)
+		return;
+	now = current_time ();
+	if (do_debug) {
+		int len;
+		char buf [256];
+		snprintf (buf, sizeof (buf), "hit at %p in thread %p at %llu\n", ip, (void*)thread_id (), (unsigned long long int)now);
+		len = strlen (buf);
+		write (2, buf, len);
+	}
+	sbuf = profiler->stat_buffers;
+	if (!sbuf)
+		return;
+	/* overflow */
+	if (sbuf->data + 400 >= sbuf->data_end) {
+		sbuf = create_stat_buffer ();
+		sbuf->next = profiler->stat_buffers;
+		profiler->stat_buffers = sbuf;
+		if (do_debug)
+			write (2, "overflow\n", 9);
+		/* notify the helper thread */
+		if (sbuf->next->next) {
+			char c = 0;
+			write (profiler->pipes [1], &c, 1);
+			if (do_debug)
+				write (2, "notify\n", 7);
+		}
+	}
+	do {
+		old_data = sbuf->data;
+		new_data = old_data + 4;
+		data = cmp_exchange ((volatile void**)&sbuf->data, new_data, old_data);
+	} while (data != old_data);
+	if (old_data >= sbuf->data_end)
+		return; /* lost event */
+	old_data [0] = 1 | (sample_type << 16);
+	old_data [1] = thread_id ();
+	old_data [2] = (now - profiler->startup_time) / 10000;
+	old_data [3] = (uintptr_t)ip;
+}
+
+static uintptr_t *code_pages = 0;
+static int num_code_pages = 0;
+static int size_code_pages = 0;
+#define CPAGE_SHIFT (9)
+#define CPAGE_SIZE (1 << CPAGE_SHIFT)
+#define CPAGE_MASK (~(CPAGE_SIZE - 1))
+#define CPAGE_ADDR(p) ((p) & CPAGE_MASK)
+
+static uintptr_t
+add_code_page (uintptr_t *hash, uintptr_t hsize, uintptr_t page)
+{
+	uintptr_t i;
+	uintptr_t start_pos;
+	start_pos = (page >> CPAGE_SHIFT) % hsize;
+	i = start_pos;
+	do {
+		if (hash [i] && CPAGE_ADDR (hash [i]) == CPAGE_ADDR (page)) {
+			return 0;
+		} else if (!hash [i]) {
+			hash [i] = page;
+			return 1;
+		}
+		/* wrap around */
+		if (++i == hsize)
+			i = 0;
+	} while (i != start_pos);
+	/* should not happen */
+	printf ("failed code page store\n");
+	return 0;
+}
+
+static void
+add_code_pointer (uintptr_t ip)
+{
+	uintptr_t i;
+	if (num_code_pages * 2 >= size_code_pages) {
+		uintptr_t *n;
+		uintptr_t old_size = size_code_pages;
+		size_code_pages *= 2;
+		if (size_code_pages == 0)
+			size_code_pages = 16;
+		n = calloc (sizeof (uintptr_t) * size_code_pages, 1);
+		for (i = 0; i < old_size; ++i) {
+			if (code_pages [i])
+				add_code_page (n, size_code_pages, code_pages [i]);
+		}
+		if (code_pages)
+			free (code_pages);
+		code_pages = n;
+	}
+	num_code_pages += add_code_page (code_pages, size_code_pages, ip & CPAGE_MASK);
+}
+
+static void
+dump_ubin (const char *filename, uintptr_t load_addr, uint64_t offset, uintptr_t size)
+{
+	uint64_t now;
+	LogBuffer *logbuffer;
+	int len;
+	len = strlen (filename) + 1;
+	now = current_time ();
+	logbuffer = ensure_logbuf (20 + len);
+	emit_byte (logbuffer, TYPE_SAMPLE | TYPE_SAMPLE_UBIN);
+	emit_time (logbuffer, now);
+	emit_svalue (logbuffer, load_addr);
+	emit_uvalue (logbuffer, offset);
+	emit_uvalue (logbuffer, size);
+	memcpy (logbuffer->data, filename, len);
+	logbuffer->data += len;
+}
+
+static void
+dump_usym (const char *name, uintptr_t value, uintptr_t size)
+{
+	LogBuffer *logbuffer;
+	int len;
+	len = strlen (name) + 1;
+	logbuffer = ensure_logbuf (20 + len);
+	emit_byte (logbuffer, TYPE_SAMPLE | TYPE_SAMPLE_USYM);
+	emit_ptr (logbuffer, (void*)value);
+	emit_value (logbuffer, size);
+	memcpy (logbuffer->data, name, len);
+	logbuffer->data += len;
+}
+
+#ifdef ELFMAG0
+
+#if SIZEOF_VOID_P == 4
+#define ELF_WSIZE 32
+#else
+#define ELF_WSIZE 64
+#endif
+#ifndef ElfW
+#define ElfW(type)      _ElfW (Elf, ELF_WSIZE, type)
+#define _ElfW(e,w,t)    _ElfW_1 (e, w, _##t)
+#define _ElfW_1(e,w,t)  e##w##t
+#endif
+
+static void
+dump_elf_symbols (ElfW(Sym) *symbols, int num_symbols, const char *strtab, void *load_addr)
+{
+	int i;
+	for (i = 0; i < num_symbols; ++i) {
+		const char* sym;
+		sym =  strtab + symbols [i].st_name;
+		if (!symbols [i].st_name || !symbols [i].st_size || (symbols [i].st_info & 0xf) != STT_FUNC)
+			continue;
+		//printf ("symbol %s at %d\n", sym, symbols [i].st_value);
+		dump_usym (sym, (uintptr_t)load_addr + symbols [i].st_value, symbols [i].st_size);
+	}
+}
+
+static int
+read_elf_symbols (MonoProfiler *prof, const char *filename, void *load_addr)
+{
+	int fd, i;
+	void *data;
+	struct stat statb;
+	uint64_t file_size;
+	ElfW(Ehdr) *header;
+	ElfW(Shdr) *sheader;
+	ElfW(Shdr) *shstrtabh;
+	ElfW(Shdr) *symtabh = NULL;
+	ElfW(Shdr) *strtabh = NULL;
+	ElfW(Sym) *symbols = NULL;
+	const char *strtab;
+	int num_symbols;
+
+	fd = open (filename, O_RDONLY);
+	if (fd < 0)
+		return 0;
+	if (fstat (fd, &statb) != 0) {
+		close (fd);
+		return 0;
+	}
+	file_size = statb.st_size;
+	data = mmap (NULL, file_size, PROT_READ, MAP_PRIVATE, fd, 0);
+	close (fd);
+	if (data == MAP_FAILED)
+		return 0;
+	header = data;
+	if (header->e_ident [EI_MAG0] != ELFMAG0 ||
+			header->e_ident [EI_MAG1] != ELFMAG1 ||
+			header->e_ident [EI_MAG2] != ELFMAG2 ||
+			header->e_ident [EI_MAG3] != ELFMAG3 ) {
+		munmap (data, file_size);
+		return 0;
+	}
+	sheader = (void*)((char*)data + header->e_shoff);
+	shstrtabh = (void*)((char*)sheader + (header->e_shentsize * header->e_shstrndx));
+	strtab = (const char*)data + shstrtabh->sh_offset;
+	for (i = 0; i < header->e_shnum; ++i) {
+		//printf ("section header: %d\n", sheader->sh_type);
+		if (sheader->sh_type == SHT_SYMTAB) {
+			symtabh = sheader;
+			strtabh = (void*)((char*)data + header->e_shoff + sheader->sh_link * header->e_shentsize);
+			/*printf ("symtab section header: %d, .strstr: %d\n", i, sheader->sh_link);*/
+			break;
+		}
+		sheader = (void*)((char*)sheader + header->e_shentsize);
+	}
+	if (!symtabh || !strtabh) {
+		munmap (data, file_size);
+		return 0;
+	}
+	strtab = (const char*)data + strtabh->sh_offset;
+	num_symbols = symtabh->sh_size / symtabh->sh_entsize;
+	symbols = (void*)((char*)data + symtabh->sh_offset);
+	dump_elf_symbols (symbols, num_symbols, strtab, load_addr);
+	munmap (data, file_size);
+	return 1;
+}
+#endif
+
+#if defined(HAVE_DL_ITERATE_PHDR) && defined(ELFMAG0)
+static int
+elf_dl_callback (struct dl_phdr_info *info, size_t size, void *data)
+{
+	MonoProfiler *prof = data;
+	char buf [256];
+	const char *filename;
+	BinaryObject *obj;
+	char *a = (void*)info->dlpi_addr;
+	int i, num_sym;
+	ElfW(Dyn) *dyn = NULL;
+	ElfW(Sym) *symtab = NULL;
+	ElfW(Word) *hash_table = NULL;
+	ElfW(Ehdr) *header = NULL;
+	const char* strtab = NULL;
+	for (obj = prof->binary_objects; obj; obj = obj->next) {
+		if (obj->addr == a)
+			return 0;
+	}
+	filename = info->dlpi_name;
+	if (!info->dlpi_addr && !filename [0]) {
+		int l = readlink ("/proc/self/exe", buf, sizeof (buf) - 1);
+		if (l > 0) {
+			buf [l] = 0;
+			filename = buf;
+		}
+	}
+	obj = calloc (sizeof (BinaryObject), 1);
+	obj->addr = (void*)info->dlpi_addr;
+	obj->name = pstrdup (filename);
+	obj->next = prof->binary_objects;
+	prof->binary_objects = obj;
+	//printf ("loaded file: %s at %p, segments: %d\n", filename, (void*)info->dlpi_addr, info->dlpi_phnum);
+	a = NULL;
+	for (i = 0; i < info->dlpi_phnum; ++i) {
+		//printf ("segment type %d file offset: %d, size: %d\n", info->dlpi_phdr[i].p_type, info->dlpi_phdr[i].p_offset, info->dlpi_phdr[i].p_memsz);
+		if (info->dlpi_phdr[i].p_type == PT_LOAD && !header) {
+			header = (ElfW(Ehdr)*)(info->dlpi_addr + info->dlpi_phdr[i].p_vaddr);
+			if (header->e_ident [EI_MAG0] != ELFMAG0 ||
+					header->e_ident [EI_MAG1] != ELFMAG1 ||
+					header->e_ident [EI_MAG2] != ELFMAG2 ||
+					header->e_ident [EI_MAG3] != ELFMAG3 ) {
+				header = NULL;
+			}
+			dump_ubin (filename, info->dlpi_addr + info->dlpi_phdr[i].p_vaddr, info->dlpi_phdr[i].p_offset, info->dlpi_phdr[i].p_memsz);
+		} else if (info->dlpi_phdr[i].p_type == PT_DYNAMIC) {
+			dyn = (ElfW(Dyn) *)(info->dlpi_addr + info->dlpi_phdr[i].p_vaddr);
+		}
+	}
+	if (read_elf_symbols (prof, filename, (void*)info->dlpi_addr))
+		return 0;
+	if (!info->dlpi_name || !info->dlpi_name[0])
+		return 0;
+	if (!dyn)
+		return 0;
+	for (i = 0; dyn [i].d_tag != DT_NULL; ++i) {
+		if (dyn [i].d_tag == DT_SYMTAB) {
+			if (symtab && do_debug)
+				printf ("multiple symtabs: %d\n", i);
+			symtab = (ElfW(Sym) *)(a + dyn [i].d_un.d_ptr);
+		} else if (dyn [i].d_tag == DT_HASH) {
+			hash_table = (ElfW(Word) *)(a + dyn [i].d_un.d_ptr);
+		} else if (dyn [i].d_tag == DT_STRTAB) {
+			strtab = (const char*)(a + dyn [i].d_un.d_ptr);
+		}
+	}
+	if (!hash_table)
+		return 0;
+	num_sym = hash_table [1];
+	dump_elf_symbols (symtab, num_sym, strtab, (void*)info->dlpi_addr);
+	return 0;
+}
+
+static int
+load_binaries (MonoProfiler *prof)
+{
+	dl_iterate_phdr (elf_dl_callback, prof);
+	return 1;
+}
+#else
+static int
+load_binaries (MonoProfiler *prof)
+{
+	return 0;
+}
+#endif
+
+static const char*
+symbol_for (uintptr_t code)
+{
+#ifdef HAVE_DLADDR
+	void *ip = (void*)code;
+	Dl_info di;
+	if (dladdr (ip, &di)) {
+		if (di.dli_sname)
+			return di.dli_sname;
+	} else {
+	/*	char **names;
+		names = backtrace_symbols (&ip, 1);
+		if (names) {
+			const char* p = names [0];
+			free (names);
+			return p;
+		}
+		*/
+	}
+#endif
+	return NULL;
+}
+
+static void
+dump_unmanaged_coderefs (MonoProfiler *prof)
+{
+	int i;
+	const char* last_symbol;
+	uintptr_t addr, page_end;
+
+	if (load_binaries (prof))
+		return;
+	for (i = 0; i < size_code_pages; ++i) {
+		const char* sym;
+		if (!code_pages [i] || code_pages [i] & 1)
+			continue;
+		last_symbol = NULL;
+		addr = CPAGE_ADDR (code_pages [i]);
+		page_end = addr + CPAGE_SIZE;
+		code_pages [i] |= 1;
+		/* we dump the symbols for the whole page */
+		for (; addr < page_end; addr += 16) {
+			sym = symbol_for (addr);
+			if (sym && sym == last_symbol)
+				continue;
+			last_symbol = sym;
+			if (!sym)
+				continue;
+			dump_usym (sym, addr, 0); /* let's not guess the size */
+			//printf ("found symbol at %p: %s\n", (void*)addr, sym);
+		}
+	}
+}
+
+static void
+dump_sample_hits (MonoProfiler *prof, StatBuffer *sbuf, int recurse)
+{
+	uintptr_t *sample;
+	LogBuffer *logbuffer;
+	if (!sbuf)
+		return;
+	if (recurse && sbuf->next) {
+		dump_sample_hits (prof, sbuf->next, 1);
+		free_buffer (sbuf->next, sbuf->next->size);
+		sbuf->next = NULL;
+	}
+	for (sample = sbuf->buf; sample < sbuf->data;) {
+		int i;
+		int count = sample [0] & 0xffff;
+		int type = sample [0] >> 16;
+		if (sample + count + 3 > sbuf->data)
+			break;
+		logbuffer = ensure_logbuf (20 + count * 8);
+		emit_byte (logbuffer, TYPE_SAMPLE | TYPE_SAMPLE_HIT);
+		emit_value (logbuffer, type);
+		emit_uvalue (logbuffer, (prof->startup_time + sample [2]) * 10000);
+		emit_value (logbuffer, count);
+		for (i = 0; i < count; ++i) {
+			emit_ptr (logbuffer, (void*)sample [i + 3]);
+			add_code_pointer (sample [i + 3]);
+		}
+		sample += count + 3;
+	}
+	dump_unmanaged_coderefs (prof);
+}
+
+#if USE_PERF_EVENTS
+#ifndef __NR_perf_event_open
+#define __NR_perf_event_open 241
+#endif
+
+static int perf_fd = -1;
+static void *mmap_base;
+static struct perf_event_mmap_page *page_desc = NULL;
+static int num_pages = 64;
+static unsigned int mmap_mask;
+static unsigned int prev_pos = 0;
+
+typedef struct {
+	struct perf_event_header h;
+	uint64_t ip;
+	uint32_t pid;
+	uint32_t tid;
+	uint64_t timestamp;
+	uint64_t period;
+	uint64_t nframes;
+} PSample;
+
+static int
+perf_event_syscall (struct perf_event_attr *attr, pid_t pid, int cpu, int group_fd, unsigned long flags)
+{
+	attr->size = PERF_ATTR_SIZE_VER0;
+	//printf ("perf attr size: %d\n", attr->size);
+#if defined(__x86_64__)
+	return syscall(/*__NR_perf_event_open*/ 298, attr, pid, cpu, group_fd, flags);
+#elif defined(__i386__)
+	return syscall(/*__NR_perf_event_open*/ 336, attr, pid, cpu, group_fd, flags);
+#else
+	return -1;
+#endif
+}
+
+static int
+setup_perf_map (void)
+{
+	mmap_mask = num_pages * getpagesize () - 1;
+	mmap_base = mmap (NULL, (num_pages + 1) * getpagesize (), PROT_READ|PROT_WRITE, MAP_SHARED, perf_fd, 0);
+	if (mmap_base == MAP_FAILED) {
+		if (do_debug)
+			printf ("failed mmap\n");
+		return 0;
+	}
+	page_desc = mmap_base;
+	if (do_debug)
+		printf ("mmap version: %d\n", page_desc->version);
+	return 1;
+}
+
+static void
+dump_perf_hits (MonoProfiler *prof, void *buf, int size)
+{
+	LogBuffer *logbuffer;
+	void *end = (char*)buf + size;
+	int samples = 0;
+	int pid = getpid ();
+
+	while (buf < end) {
+		PSample *s = buf;
+		if (s->h.size == 0)
+			break;
+		if (pid != s->pid) {
+			if (do_debug)
+				printf ("event for different pid: %d\n", s->pid);
+			buf = (char*)buf + s->h.size;
+			continue;
+		}
+		/*ip = (void*)s->ip;
+		printf ("sample: %d, size: %d, ip: %p (%s), timestamp: %llu, nframes: %llu\n",
+			s->h.type, s->h.size, ip, symbol_for (ip), s->timestamp, s->nframes);*/
+		logbuffer = ensure_logbuf (20 + s->nframes * 8);
+		emit_byte (logbuffer, TYPE_SAMPLE | TYPE_SAMPLE_HIT);
+		emit_value (logbuffer, sample_type);
+		emit_uvalue (logbuffer, s->timestamp - prof->startup_time);
+		emit_value (logbuffer, 1); /* count */
+		emit_ptr (logbuffer, (void*)(uintptr_t)s->ip);
+		add_code_pointer (s->ip);
+		buf = (char*)buf + s->h.size;
+		samples++;
+	}
+	if (do_debug)
+		printf ("dumped %d samples\n", samples);
+	dump_unmanaged_coderefs (prof);
+}
+
+/* read events from the ring buffer */
+static int
+read_perf_mmap (MonoProfiler* prof)
+{
+	unsigned char *buf;
+	unsigned char *data = (unsigned char*)mmap_base + getpagesize ();
+	unsigned int head = page_desc->data_head;
+	int diff, size;
+	unsigned int old;
+
+#if defined(__i386__)
+	asm volatile("lock; addl $0,0(%%esp)":::"memory");
+#elif defined (__x86_64__)
+	asm volatile("lfence":::"memory");
+#endif
+
+	old = prev_pos;
+	diff = head - old;
+	if (diff < 0) {
+		if (do_debug)
+			printf ("lost mmap events: old: %d, head: %d\n", old, head);
+		old = head;
+	}
+	size = head - old;
+	if ((old & mmap_mask) + size != (head & mmap_mask)) {
+		buf = data + (old & mmap_mask);
+		size = mmap_mask + 1 - (old & mmap_mask);
+		old += size;
+		/* size bytes at buf */
+		if (do_debug)
+			printf ("found1 bytes of events: %d\n", size);
+		dump_perf_hits (prof, buf, size);
+	}
+	buf = data + (old & mmap_mask);
+	size = head - old;
+	/* size bytes at buf */
+	if (do_debug)
+		printf ("found bytes of events: %d\n", size);
+	dump_perf_hits (prof, buf, size);
+	old += size;
+	prev_pos = old;
+	page_desc->data_tail = old;
+	return 0;
+}
+
+static int
+setup_perf_event (void)
+{
+	struct perf_event_attr attr;
+	memset (&attr, 0, sizeof (attr));
+	attr.type = PERF_TYPE_HARDWARE;
+	switch (sample_type) {
+	case SAMPLE_CYCLES: attr.config = PERF_COUNT_HW_CPU_CYCLES; break;
+	case SAMPLE_INSTRUCTIONS: attr.config = PERF_COUNT_HW_INSTRUCTIONS; break;
+	case SAMPLE_CACHE_MISSES: attr.config = PERF_COUNT_HW_CACHE_MISSES; break;
+	case SAMPLE_CACHE_REFS: attr.config = PERF_COUNT_HW_CACHE_REFERENCES; break;
+	case SAMPLE_BRANCHES: attr.config = PERF_COUNT_HW_BRANCH_INSTRUCTIONS; break;
+	case SAMPLE_BRANCH_MISSES: attr.config = PERF_COUNT_HW_BRANCH_MISSES; break;
+	default: attr.config = PERF_COUNT_HW_CPU_CYCLES; break;
+	}
+	attr.sample_type = PERF_SAMPLE_IP | PERF_SAMPLE_TID | PERF_SAMPLE_PERIOD | PERF_SAMPLE_TIME;
+//	attr.sample_type |= PERF_SAMPLE_CALLCHAIN;
+	attr.read_format = PERF_FORMAT_TOTAL_TIME_ENABLED | PERF_FORMAT_TOTAL_TIME_RUNNING | PERF_FORMAT_ID;
+	attr.inherit = 1;
+	attr.freq = 1;
+	attr.sample_freq = sample_freq;
+
+	perf_fd = perf_event_syscall (&attr, getpid (), -1, -1, 0);
+	if (do_debug)
+		printf ("perf fd: %d, freq: %d, event: %llu\n", perf_fd, sample_freq, attr.config);
+	if (perf_fd < 0) {
+		if (perf_fd == -EPERM) {
+			fprintf (stderr, "Perf syscall denied, do \"echo 1 > /proc/sys/kernel/perf_event_paranoid\" as root to enable.\n");
+		} else {
+			if (do_debug)
+				perror ("open perf event");
+		}
+		return 0;
+	}
+	if (!setup_perf_map ()) {
+		close (perf_fd);
+		perf_fd = -1;
+		return 0;
+	}
+	return 1;
+}
+
+#endif /* USE_PERF_EVENTS */
+
+static void
+log_shutdown (MonoProfiler *prof)
+{
+	in_shutdown = 1;
+#ifndef DISABLE_HELPER_THREAD
+	if (prof->command_port) {
+		char c = 1;
+		void *res;
+		write (prof->pipes [1], &c, 1);
+		pthread_join (prof->helper_thread, &res);
+	}
+#endif
+#if USE_PERF_EVENTS
+	if (page_desc)
+		read_perf_mmap (prof);
+#endif
+	dump_sample_hits (prof, prof->stat_buffers, 1);
+	take_lock ();
+	if (TLS_GET (tlsbuffer))
+		dump_buffer (prof, TLS_GET (tlsbuffer));
+	TLS_SET (tlsbuffer, NULL);
+	release_lock ();
+#if defined (HAVE_SYS_ZLIB)
+	if (prof->gzfile)
+		gzclose (prof->gzfile);
+#endif
+	if (prof->pipe_output)
+		pclose (prof->file);
+	else
+		fclose (prof->file);
+	free (prof);
+}
+
+static char*
+new_filename (const char* filename)
+{
+	time_t t = time (NULL);
+	int pid = process_id ();
+	char pid_buf [16];
+	char time_buf [16];
+	char *res, *d;
+	const char *p;
+	int count_dates = 0;
+	int count_pids = 0;
+	int s_date, s_pid;
+	struct tm *ts;
+	for (p = filename; *p; p++) {
+		if (*p != '%')
+			continue;
+		p++;
+		if (*p == 't')
+			count_dates++;
+		else if (*p == 'p')
+			count_pids++;
+		else if (*p == 0)
+			break;
+	}
+	if (!count_dates && !count_pids)
+		return pstrdup (filename);
+	snprintf (pid_buf, sizeof (pid_buf), "%d", pid);
+	ts = gmtime (&t);
+	snprintf (time_buf, sizeof (time_buf), "%d%02d%02d%02d%02d%02d",
+		1900 + ts->tm_year, 1 + ts->tm_mon, ts->tm_mday, ts->tm_hour, ts->tm_min, ts->tm_sec);
+	s_date = strlen (time_buf);
+	s_pid = strlen (pid_buf);
+	d = res = malloc (strlen (filename) + s_date * count_dates + s_pid * count_pids);
+	for (p = filename; *p; p++) {
+		if (*p != '%') {
+			*d++ = *p;
+			continue;
+		}
+		p++;
+		if (*p == 't') {
+			strcpy (d, time_buf);
+			d += s_date;
+			continue;
+		} else if (*p == 'p') {
+			strcpy (d, pid_buf);
+			d += s_pid;
+			continue;
+		} else if (*p == '%') {
+			*d++ = '%';
+			continue;
+		} else if (*p == 0)
+			break;
+		*d++ = '%';
+		*d++ = *p;
+	}
+	*d = 0;
+	return res;
+}
+
+#ifndef DISABLE_HELPER_THREAD
+static void*
+helper_thread (void* arg)
+{
+	MonoProfiler* prof = arg;
+	int command_socket;
+	int len;
+	char buf [64];
+	MonoThread *thread = NULL;
+
+	//fprintf (stderr, "Server listening\n");
+	command_socket = -1;
+	while (1) {
+		fd_set rfds;
+		struct timeval tv;
+		int max_fd = -1;
+		FD_ZERO (&rfds);
+		FD_SET (prof->server_socket, &rfds);
+		max_fd = prof->server_socket;
+		FD_SET (prof->pipes [0], &rfds);
+		if (max_fd < prof->pipes [0])
+			max_fd = prof->pipes [0];
+		if (command_socket >= 0) {
+			FD_SET (command_socket, &rfds);
+			if (max_fd < command_socket)
+				max_fd = command_socket;
+		}
+#if USE_PERF_EVENTS
+		if (perf_fd >= 0) {
+			FD_SET (perf_fd, &rfds);
+			if (max_fd < perf_fd)
+				max_fd = perf_fd;
+		}
+#endif
+		tv.tv_sec = 1;
+		tv.tv_usec = 0;
+		len = select (max_fd + 1, &rfds, NULL, NULL, &tv);
+		if (FD_ISSET (prof->pipes [0], &rfds)) {
+			char c;
+			int r = read (prof->pipes [0], &c, 1);
+			if (r == 1 && c == 0) {
+				StatBuffer *sbuf = prof->stat_buffers->next->next;
+				prof->stat_buffers->next->next = NULL;
+				if (do_debug)
+					fprintf (stderr, "stat buffer dump\n");
+				dump_sample_hits (prof, sbuf, 1);
+				free_buffer (sbuf, sbuf->size);
+				continue;
+			}
+			/* time to shut down */
+			if (thread)
+				mono_thread_detach (thread);
+			if (do_debug)
+				fprintf (stderr, "helper shutdown\n");
+#if USE_PERF_EVENTS
+			if (perf_fd >= 0)
+				read_perf_mmap (prof);
+#endif
+			safe_dump (prof, ensure_logbuf (0));
+			return NULL;
+		}
+#if USE_PERF_EVENTS
+		if (perf_fd >= 0 && FD_ISSET (perf_fd, &rfds)) {
+			read_perf_mmap (prof);
+			safe_dump (prof, ensure_logbuf (0));
+		}
+#endif
+		if (command_socket >= 0 && FD_ISSET (command_socket, &rfds)) {
+			len = read (command_socket, buf, sizeof (buf) - 1);
+			if (len < 0)
+				continue;
+			if (len == 0) {
+				close (command_socket);
+				command_socket = -1;
+				continue;
+			}
+			buf [len] = 0;
+			if (strcmp (buf, "heapshot\n") == 0) {
+				heapshot_requested = 1;
+				//fprintf (stderr, "perform heapshot\n");
+				if (runtime_inited && !thread) {
+					thread = mono_thread_attach (mono_get_root_domain ());
+					/*fprintf (stderr, "attached\n");*/
+				}
+				if (thread) {
+					process_requests (prof);
+					mono_thread_detach (thread);
+					thread = NULL;
+				}
+			}
+			continue;
+		}
+		if (!FD_ISSET (prof->server_socket, &rfds)) {
+			continue;
+		}
+		command_socket = accept (prof->server_socket, NULL, NULL);
+		if (command_socket < 0)
+			continue;
+		//fprintf (stderr, "Accepted connection\n");
+	}
+	return NULL;
+}
+
+static int
+start_helper_thread (MonoProfiler* prof)
+{
+	struct sockaddr_in server_address;
+	int r;
+	socklen_t slen;
+	if (pipe (prof->pipes) < 0) {
+		fprintf (stderr, "Cannot create pipe\n");
+		return 0;
+	}
+	prof->server_socket = socket (PF_INET, SOCK_STREAM, 0);
+	if (prof->server_socket < 0) {
+		fprintf (stderr, "Cannot create server socket\n");
+		return 0;
+	}
+	memset (&server_address, 0, sizeof (server_address));
+	server_address.sin_family = AF_INET;
+	server_address.sin_addr.s_addr = INADDR_ANY;
+	server_address.sin_port = htons (prof->command_port);
+	if (bind (prof->server_socket, (struct sockaddr *) &server_address, sizeof (server_address)) < 0) {
+		fprintf (stderr, "Cannot bind server socket, port: %d: %s\n", prof->command_port, strerror (errno));
+		close (prof->server_socket);
+		return 0;
+	}
+	if (listen (prof->server_socket, 1) < 0) {
+		fprintf (stderr, "Cannot listen server socket\n");
+		close (prof->server_socket);
+		return 0;
+	}
+	if (getsockname (prof->server_socket, (struct sockaddr *)&server_address, &slen) == 0) {
+		prof->command_port = ntohs (server_address.sin_port);
+		/*fprintf (stderr, "Assigned server port: %d\n", prof->command_port);*/
+	}
+
+	r = pthread_create (&prof->helper_thread, NULL, helper_thread, prof);
+	if (r) {
+		close (prof->server_socket);
+		return 0;
+	}
+	return 1;
+}
+#endif
+
+static MonoProfiler*
+create_profiler (const char *filename)
+{
+	MonoProfiler *prof;
+	char *nf;
+	int force_delete = 0;
+	int need_helper_thread = 0;
+	prof = calloc (1, sizeof (MonoProfiler));
+
+	prof->command_port = command_port;
+	if (filename && *filename == '-') {
+		force_delete = 1;
+		filename++;
+	}
+	if (!filename) {
+		if (do_report)
+			filename = "|mprof-report -";
+		else
+			filename = "output.mlpd";
+		nf = (char*)filename;
+	} else {
+		nf = new_filename (filename);
+		if (do_report) {
+			int s = strlen (nf) + 32;
+			char *p = malloc (s);
+			snprintf (p, s, "|mprof-report '--out=%s' -", nf);
+			free (nf);
+			nf = p;
+		}
+	}
+	if (*nf == '|') {
+		prof->file = popen (nf + 1, "w");
+		prof->pipe_output = 1;
+	} else {
+		FILE *f;
+		if (force_delete)
+			unlink (nf);
+		if ((f = fopen (nf, "r"))) {
+			fclose (f);
+			fprintf (stderr, "The Mono profiler won't overwrite existing filename: %s.\n", nf);
+			fprintf (stderr, "Profiling disabled: use a different name or -FILENAME to force overwrite.\n");
+			free (prof);
+			return NULL;
+		}
+		prof->file = fopen (nf, "wb");
+	}
+	if (!prof->file) {
+		fprintf (stderr, "Cannot create profiler output: %s\n", nf);
+		exit (1);
+	}
+#if defined (HAVE_SYS_ZLIB)
+	if (use_zip)
+		prof->gzfile = gzdopen (fileno (prof->file), "wb");
+#endif
+#if USE_PERF_EVENTS
+	if (sample_type && !do_mono_sample)
+		need_helper_thread = setup_perf_event ();
+	if (perf_fd < 0) {
+		/* FIXME: warn if different freq or sample type */
+		do_mono_sample = 1;
+	}
+#endif
+	if (do_mono_sample) {
+		prof->stat_buffers = create_stat_buffer ();
+		need_helper_thread = 1;
+	}
+#ifndef DISABLE_HELPER_THREAD
+	if (hs_mode_ondemand || need_helper_thread) {
+		if (!start_helper_thread (prof))
+			prof->command_port = 0;
+	}
+#else
+	if (hs_mode_ondemand)
+		fprintf (stderr, "Ondemand heapshot unavailable on this arch.\n");
+#endif
+	prof->startup_time = current_time ();
+	dump_header (prof);
+	return prof;
+}
+
+static void
+usage (int do_exit)
+{
+	printf ("Log profiler version %d.%d (format: %d)\n", LOG_VERSION_MAJOR, LOG_VERSION_MINOR, LOG_DATA_VERSION);
+	printf ("Usage: mono --profile=log[:OPTION1[,OPTION2...]] program.exe\n");
+	printf ("Options:\n");
+	printf ("\thelp             show this usage info\n");
+	printf ("\t[no]alloc        enable/disable recording allocation info\n");
+	printf ("\t[no]calls        enable/disable recording enter/leave method events\n");
+	printf ("\theapshot[=MODE]  record heap shot info (by default at each major collection)\n");
+	printf ("\t                 MODE: every XXms milliseconds, every YYgc collections, ondemand\n");
+	printf ("\tsample[=TYPE]    use statistical sampling mode (by default cycles/1000)\n");
+	printf ("\t                 TYPE: cycles,instr,cacherefs,cachemiss,branches,branchmiss\n");
+	printf ("\t                 TYPE can be followed by /FREQUENCY\n");
+	printf ("\ttime=fast        use a faster (but more inaccurate) timer\n");
+	printf ("\tmaxframes=NUM    collect up to NUM stack frames\n");
+	printf ("\tcalldepth=NUM    ignore method events for call chain depth bigger than NUM\n");
+	printf ("\toutput=FILENAME  write the data to file FILENAME (-FILENAME to overwrite)\n");
+	printf ("\toutput=|PROGRAM  write the data to the stdin of PROGRAM\n");
+	printf ("\t                 %%t is subtituted with date and time, %%p with the pid\n");
+	printf ("\treport           create a report instead of writing the raw data to a file\n");
+	printf ("\tzip              compress the output data\n");
+	printf ("\tport=PORTNUM     use PORTNUM for the listening command server\n");
+	if (do_exit)
+		exit (1);
+}
+
+static const char*
+match_option (const char* p, const char *opt, char **rval)
+{
+	int len = strlen (opt);
+	if (strncmp (p, opt, len) == 0) {
+		if (rval) {
+			if (p [len] == '=' && p [len + 1]) {
+				const char *opt = p + len + 1;
+				const char *end = strchr (opt, ',');
+				char *val;
+				int l;
+				if (end == NULL) {
+					l = strlen (opt);
+				} else {
+					l = end - opt;
+				}
+				val = malloc (l + 1);
+				memcpy (val, opt, l);
+				val [l] = 0;
+				*rval = val;
+				return opt + l;
+			}
+			if (p [len] == 0 || p [len] == ',') {
+				*rval = NULL;
+				return p + len + (p [len] == ',');
+			}
+			usage (1);
+		} else {
+			if (p [len] == 0)
+				return p + len;
+			if (p [len] == ',')
+				return p + len + 1;
+		}
+	}
+	return p;
+}
+
+typedef struct {
+	const char *name;
+	int sample_mode;
+} SampleMode;
+
+static const SampleMode sample_modes [] = {
+	{"cycles", SAMPLE_CYCLES},
+	{"instr", SAMPLE_INSTRUCTIONS},
+	{"cachemiss", SAMPLE_CACHE_MISSES},
+	{"cacherefs", SAMPLE_CACHE_REFS},
+	{"branches", SAMPLE_BRANCHES},
+	{"branchmiss", SAMPLE_BRANCH_MISSES},
+	{NULL, 0}
+};
+
+static void
+set_sample_mode (char* val, int allow_empty)
+{
+	char *end;
+	char *maybe_freq = NULL;
+	unsigned int count;
+	const SampleMode *smode = sample_modes;
+#ifndef USE_PERF_EVENTS
+	do_mono_sample = 1;
+#endif
+	if (allow_empty && !val) {
+		sample_type = SAMPLE_CYCLES;
+		sample_freq = 1000;
+		return;
+	}
+	if (strcmp (val, "mono") == 0) {
+		do_mono_sample = 1;
+		sample_type = SAMPLE_CYCLES;
+		free (val);
+		return;
+	}
+	for (smode = sample_modes; smode->name; smode++) {
+		int l = strlen (smode->name);
+		if (strncmp (val, smode->name, l) == 0) {
+			sample_type = smode->sample_mode;
+			maybe_freq = val + l;
+			break;
+		}
+	}
+	if (!smode->name)
+		usage (1);
+	if (*maybe_freq == '/') {
+		count = strtoul (maybe_freq + 1, &end, 10);
+		if (maybe_freq + 1 == end)
+			usage (1);
+		sample_freq = count;
+	} else if (*maybe_freq != 0) {
+		usage (1);
+	} else {
+		sample_freq = 1000;
+	}
+	free (val);
+}
+
+static void
+set_hsmode (char* val, int allow_empty)
+{
+	char *end;
+	unsigned int count;
+	if (allow_empty && !val)
+		return;
+	if (strcmp (val, "ondemand") == 0) {
+		hs_mode_ondemand = 1;
+		free (val);
+		return;
+	}
+	count = strtoul (val, &end, 10);
+	if (val == end)
+		usage (1);
+	if (strcmp (end, "ms") == 0)
+		hs_mode_ms = count;
+	else if (strcmp (end, "gc") == 0)
+		hs_mode_gc = count;
+	else
+		usage (1);
+	free (val);
+}
+
+/* 
+ * declaration to silence the compiler: this is the entry point that
+ * mono will load from the shared library and call.
+ */
+extern void
+mono_profiler_startup (const char *desc);
+
+void
+mono_profiler_startup (const char *desc)
+{
+	MonoProfiler *prof;
+	char *filename = NULL;
+	const char *p;
+	const char *opt;
+	int fast_time = 0;
+	int calls_enabled = 0;
+	int allocs_enabled = 0;
+	int events = MONO_PROFILE_GC|MONO_PROFILE_ALLOCATIONS|
+		MONO_PROFILE_GC_MOVES|MONO_PROFILE_CLASS_EVENTS|MONO_PROFILE_THREADS|
+		MONO_PROFILE_ENTER_LEAVE|MONO_PROFILE_JIT_COMPILATION|MONO_PROFILE_EXCEPTIONS|
+		MONO_PROFILE_MONITOR_EVENTS|MONO_PROFILE_MODULE_EVENTS|MONO_PROFILE_GC_ROOTS;
+
+	p = desc;
+	if (strncmp (p, "log", 3))
+		usage (1);
+	p += 3;
+	if (*p == ':')
+		p++;
+	for (; *p; p = opt) {
+		char *val;
+		if (*p == ',') {
+			opt = p + 1;
+			continue;
+		}
+		if ((opt = match_option (p, "help", NULL)) != p) {
+			usage (0);
+			continue;
+		}
+		if ((opt = match_option (p, "calls", NULL)) != p) {
+			calls_enabled = 1;
+			continue;
+		}
+		if ((opt = match_option (p, "nocalls", NULL)) != p) {
+			events &= ~MONO_PROFILE_ENTER_LEAVE;
+			nocalls = 1;
+			continue;
+		}
+		if ((opt = match_option (p, "alloc", NULL)) != p) {
+			allocs_enabled = 1;
+			continue;
+		}
+		if ((opt = match_option (p, "noalloc", NULL)) != p) {
+			events &= ~MONO_PROFILE_ALLOCATIONS;
+			continue;
+		}
+		if ((opt = match_option (p, "time", &val)) != p) {
+			if (strcmp (val, "fast") == 0)
+				fast_time = 1;
+			else if (strcmp (val, "null") == 0)
+				fast_time = 2;
+			else
+				usage (1);
+			free (val);
+			continue;
+		}
+		if ((opt = match_option (p, "report", NULL)) != p) {
+			do_report = 1;
+			continue;
+		}
+		if ((opt = match_option (p, "debug", NULL)) != p) {
+			do_debug = 1;
+			continue;
+		}
+		if ((opt = match_option (p, "heapshot", &val)) != p) {
+			events &= ~MONO_PROFILE_ALLOCATIONS;
+			events &= ~MONO_PROFILE_ENTER_LEAVE;
+			nocalls = 1;
+			do_heap_shot = 1;
+			set_hsmode (val, 1);
+			continue;
+		}
+		if ((opt = match_option (p, "sample", &val)) != p) {
+			events &= ~MONO_PROFILE_ALLOCATIONS;
+			events &= ~MONO_PROFILE_ENTER_LEAVE;
+			nocalls = 1;
+			set_sample_mode (val, 1);
+			continue;
+		}
+		if ((opt = match_option (p, "hsmode", &val)) != p) {
+			fprintf (stderr, "The hsmode profiler option is obsolete, use heapshot=MODE.\n");
+			set_hsmode (val, 0);
+			continue;
+		}
+		if ((opt = match_option (p, "zip", NULL)) != p) {
+			use_zip = 1;
+			continue;
+		}
+		if ((opt = match_option (p, "output", &val)) != p) {
+			filename = val;
+			continue;
+		}
+		if ((opt = match_option (p, "port", &val)) != p) {
+			char *end;
+			command_port = strtoul (val, &end, 10);
+			free (val);
+			continue;
+		}
+		if ((opt = match_option (p, "maxframes", &val)) != p) {
+			char *end;
+			num_frames = strtoul (val, &end, 10);
+			if (num_frames > MAX_FRAMES)
+				num_frames = MAX_FRAMES;
+			free (val);
+			notraces = num_frames == 0;
+			continue;
+		}
+		if ((opt = match_option (p, "calldepth", &val)) != p) {
+			char *end;
+			max_call_depth = strtoul (val, &end, 10);
+			free (val);
+			continue;
+		}
+		if (opt == p) {
+			usage (0);
+			exit (0);
+		}
+	}
+	if (calls_enabled) {
+		events |= MONO_PROFILE_ENTER_LEAVE;
+		nocalls = 0;
+	}
+	if (allocs_enabled)
+		events |= MONO_PROFILE_ALLOCATIONS;
+	utils_init (fast_time);
+
+	prof = create_profiler (filename);
+	if (!prof)
+		return;
+	init_thread ();
+
+	mono_profiler_install (prof, log_shutdown);
+	mono_profiler_install_gc (gc_event, gc_resize);
+	mono_profiler_install_allocation (gc_alloc);
+	mono_profiler_install_gc_moves (gc_moves);
+	mono_profiler_install_gc_roots (gc_handle, gc_roots);
+	mono_profiler_install_class (NULL, class_loaded, NULL, NULL);
+	mono_profiler_install_module (NULL, image_loaded, NULL, NULL);
+	mono_profiler_install_thread (thread_start, thread_end);
+	mono_profiler_install_thread_name (thread_name);
+	mono_profiler_install_enter_leave (method_enter, method_leave);
+	mono_profiler_install_jit_end (method_jitted);
+	mono_profiler_install_exception (throw_exc, method_exc_leave, clause_exc);
+	mono_profiler_install_monitor (monitor_event);
+	mono_profiler_install_runtime_initialized (runtime_initialized);
+
+	
+	if (do_mono_sample && sample_type == SAMPLE_CYCLES) {
+		events |= MONO_PROFILE_STATISTICAL;
+		mono_profiler_install_statistical (mono_sample_hit);
+	}
+
+	mono_profiler_set_events (events);
+
+	TLS_INIT (tlsbuffer);
+}
+
diff --git a/mono/profiler/proflog.h b/mono/profiler/proflog.h
new file mode 100644
index 0000000..650b889
--- /dev/null
+++ b/mono/profiler/proflog.h
@@ -0,0 +1,78 @@
+#ifndef __MONO_PROFLOG_H__
+#define __MONO_PROFLOG_H__
+
+#define BUF_ID 0x4D504C01
+#define LOG_HEADER_ID 0x4D505A01
+#define LOG_VERSION_MAJOR 0
+#define LOG_VERSION_MINOR 4
+#define LOG_DATA_VERSION 4
+/*
+ * Changes in data versions:
+ * version 2: added offsets in heap walk
+ * version 3: added GC roots
+ * version 4: added sample/statistical profiling
+ */
+
+enum {
+	TYPE_ALLOC,
+	TYPE_GC,
+	TYPE_METADATA,
+	TYPE_METHOD,
+	TYPE_EXCEPTION,
+	TYPE_MONITOR,
+	TYPE_HEAP,
+	TYPE_SAMPLE,
+	/* extended type for TYPE_HEAP */
+	TYPE_HEAP_START  = 0 << 4,
+	TYPE_HEAP_END    = 1 << 4,
+	TYPE_HEAP_OBJECT = 2 << 4,
+	TYPE_HEAP_ROOT   = 3 << 4,
+	/* extended type for TYPE_METADATA */
+	TYPE_START_LOAD   = 1 << 4,
+	TYPE_END_LOAD     = 2 << 4,
+	TYPE_START_UNLOAD = 3 << 4,
+	TYPE_END_UNLOAD   = 4 << 4,
+	TYPE_LOAD_ERR     = 1 << 7,
+	TYPE_CLASS     = 1,
+	TYPE_IMAGE     = 2,
+	TYPE_ASSEMBLY  = 3,
+	TYPE_DOMAIN    = 4,
+	TYPE_THREAD    = 5,
+	/* extended type for TYPE_GC */
+	TYPE_GC_EVENT  = 1 << 4,
+	TYPE_GC_RESIZE = 2 << 4,
+	TYPE_GC_MOVE   = 3 << 4,
+	TYPE_GC_HANDLE_CREATED   = 4 << 4,
+	TYPE_GC_HANDLE_DESTROYED = 5 << 4,
+	/* extended type for TYPE_METHOD */
+	TYPE_LEAVE     = 1 << 4,
+	TYPE_ENTER     = 2 << 4,
+	TYPE_EXC_LEAVE = 3 << 4,
+	TYPE_JIT       = 4 << 4,
+	/* extended type for TYPE_EXCEPTION */
+	TYPE_THROW        = 0 << 4,
+	TYPE_CLAUSE       = 1 << 4,
+	TYPE_EXCEPTION_BT = 1 << 7,
+	/* extended type for TYPE_ALLOC */
+	TYPE_ALLOC_BT  = 1 << 4,
+	/* extended type for TYPE_MONITOR */
+	TYPE_MONITOR_BT  = 1 << 7,
+	/* extended type for TYPE_SAMPLE */
+	TYPE_SAMPLE_HIT    = 0 << 4,
+	TYPE_SAMPLE_USYM   = 1 << 4,
+	TYPE_SAMPLE_UBIN   = 2 << 4,
+	TYPE_END
+};
+
+enum {
+	SAMPLE_CYCLES = 1,
+	SAMPLE_INSTRUCTIONS,
+	SAMPLE_CACHE_MISSES,
+	SAMPLE_CACHE_REFS,
+	SAMPLE_BRANCHES,
+	SAMPLE_BRANCH_MISSES,
+	SAMPLE_LAST
+};
+
+#endif /* __MONO_PROFLOG_H__ */
+
diff --git a/mono/profiler/ptestrunner.pl b/mono/profiler/ptestrunner.pl
new file mode 100755
index 0000000..36ae39e
--- /dev/null
+++ b/mono/profiler/ptestrunner.pl
@@ -0,0 +1,395 @@
+#!/usr/bin/perl -w
+
+use strict;
+
+# run the log profiler test suite
+
+my $builddir = shift || die "Usage: ptestrunner.pl mono_build_dir\n";
+my @errors = ();
+my $total_errors = 0;
+my $report;
+
+my $profbuilddir = $builddir . "/mono/profiler";
+my $minibuilddir = $builddir . "/mono/mini";
+
+# Setup the execution environment
+# for the profiler module
+append_path ("LD_LIBRARY_PATH", $profbuilddir . "/.libs");
+append_path ("DYLD_LIBRARY_PATH", $profbuilddir . "/.libs");
+# for mprof-report
+append_path ("PATH", $profbuilddir);
+
+# first a basic test
+$report = run_test ("test-alloc.exe");
+check_report_basics ($report);
+check_report_calls ($report, "T:Main (string[])" => 1);
+check_report_allocation ($report, "System.Object" => 1000000);
+report_errors ();
+# test additional named threads and method calls
+$report = run_test ("test-busy.exe");
+check_report_basics ($report);
+check_report_calls ($report, "T:Main (string[])" => 1);
+check_report_threads ($report, "BusyHelper");
+check_report_calls ($report, "T:test ()" => 10, "T:test3 ()" => 10, "T:test2 ()" => 1);
+report_errors ();
+# test with the sampling profiler
+$report = run_test ("test-busy.exe", "report,sample");
+check_report_basics ($report);
+check_report_threads ($report, "BusyHelper");
+# at least 40% of the samples should hit each of the two busy methods
+check_report_samples ($report, "T:test ()" => 40, "T:test3 ()" => 40);
+report_errors ();
+# test lock events
+$report = run_test ("test-monitor.exe");
+check_report_basics ($report);
+check_report_calls ($report, "T:Main (string[])" => 1);
+# we hope for at least some contention, this is not entirely reliable
+check_report_locks ($report, 1, 1);
+report_errors ();
+# test exceptions
+$report = run_test ("test-excleave.exe");
+check_report_basics ($report);
+check_report_calls ($report, "T:Main (string[])" => 1, "T:throw_ex ()" => 1000);
+check_report_exceptions ($report, 1000, 1000, 1000);
+report_errors ();
+# test heapshot
+$report = run_test_sgen ("test-heapshot.exe", "report,heapshot");
+if ($report ne "missing binary") {
+	check_report_basics ($report);
+	check_report_heapshot ($report, 0, {"T" => 5000});
+	check_report_heapshot ($report, 1, {"T" => 5023});
+	report_errors ();
+}
+# test heapshot traces
+$report = run_test_sgen ("test-heapshot.exe", "heapshot,output=-traces.mlpd", "--traces traces.mlpd");
+if ($report ne "missing binary") {
+	check_report_basics ($report);
+	check_report_heapshot ($report, 0, {"T" => 5000});
+	check_report_heapshot ($report, 1, {"T" => 5023});
+	check_heapshot_traces ($report, 0,
+		T => [4999, "T"]
+	);
+	check_heapshot_traces ($report, 1,
+		T => [5022, "T"]
+	);
+	report_errors ();
+}
+# test traces
+$report = run_test ("test-traces.exe", "output=-traces.mlpd", "--traces traces.mlpd");
+check_report_basics ($report);
+check_call_traces ($report,
+	"T:level3 (int)" => [2020, "T:Main (string[])"],
+	"T:level2 (int)" => [2020, "T:Main (string[])", "T:level3 (int)"],
+	"T:level1 (int)" => [2020, "T:Main (string[])", "T:level3 (int)", "T:level2 (int)"],
+	"T:level0 (int)" => [2020, "T:Main (string[])", "T:level3 (int)", "T:level2 (int)", "T:level1 (int)"]
+);
+check_exception_traces ($report,
+	[1010, "T:Main (string[])", "T:level3 (int)", "T:level2 (int)", "T:level1 (int)", "T:level0 (int)"]
+);
+check_alloc_traces ($report,
+	T => [1010, "T:Main (string[])", "T:level3 (int)", "T:level2 (int)", "T:level1 (int)", "T:level0 (int)"]
+);
+report_errors ();
+# test traces without enter/leave events
+$report = run_test ("test-traces.exe", "nocalls,output=-traces.mlpd", "--traces traces.mlpd");
+check_report_basics ($report);
+# this has been broken recently
+check_exception_traces ($report,
+	[1010, "T:Main (string[])", "T:level3 (int)", "T:level2 (int)", "T:level1 (int)", "T:level0 (int)"]
+);
+check_alloc_traces ($report,
+	T => [1010, "T:Main (string[])", "T:level3 (int)", "T:level2 (int)", "T:level1 (int)", "T:level0 (int)"]
+);
+report_errors ();
+
+exit ($total_errors? 1: 0);
+
+# utility functions
+sub append_path {
+	my $var = shift;
+	my $value = shift;
+	if (exists $ENV{$var}) {
+		$ENV{$var} = $value . ":" . $ENV{$var};
+	} else {
+		$ENV{$var} = $value;
+	}
+}
+
+sub run_test
+{
+	return run_test_bin ("$minibuilddir/mono", @_);
+}
+
+sub run_test_sgen
+{
+	return run_test_bin ("$minibuilddir/mono-sgen", @_);
+}
+
+sub run_test_bin
+{
+	my $bin = shift;
+	my $test_name = shift;
+	my $option = shift || "report";
+	my $roptions = shift;
+	#clear the errors
+	@errors = ();
+	$total_errors = 0;
+	print "Checking $test_name with $option ...";
+	unless (-x $bin) {
+		print "missing $bin, skipped.\n";
+		return "missing binary";
+	}
+	my $report = `$bin --profile=log:$option $test_name`;
+	print "\n";
+	if (defined $roptions) {
+		return `$profbuilddir/mprof-report $roptions`;
+	}
+	return $report;
+}
+
+sub report_errors
+{
+	foreach my $e (@errors) {
+		print "Error: $e\n";
+		$total_errors++;
+	}
+	print "Total errors: $total_errors\n" if $total_errors;
+	#print $report;
+}
+
+sub get_delim_data
+{
+	my $report = shift;
+	my $start = shift;
+	my $end = shift;
+	my $section = "";
+	my $insection = 0;
+	foreach (split (/\n/, $report)) {
+		if ($insection) {
+			#print "matching end $end vs $_\n";
+			last if /$end/;
+			$section .= $_;
+			$section .= "\n";
+		} else {
+			#print "matching $start vs $_\n";
+			$insection = 1 if (/$start/);
+		}
+	}
+	return $section;
+}
+
+sub get_section
+{
+	my $report = shift;
+	my $name = shift;
+	return get_delim_data ($report, "^\Q$name\E", "^\\w.*summary");
+}
+
+sub get_heap_shot
+{
+	my $section = shift;
+	my $num = shift;
+	return get_delim_data ($report, "Heap shot $num at", "^\$");
+}
+
+sub check_report_basics
+{
+	my $report = shift;
+	check_report_threads ($report, "Finalizer", "Main");
+	check_report_metadata ($report, 2);
+	check_report_jit ($report);
+}
+
+sub check_report_metadata
+{
+	my $report = shift;
+	my $num = shift;
+	my $section = get_section ($report, "Metadata");
+	push @errors, "Wrong loaded images $num." unless $section =~ /Loaded images:\s$num/s;
+}
+
+sub check_report_calls
+{
+	my $report = shift;
+	my %calls = @_;
+	my $section = get_section ($report, "Method");
+	foreach my $method (keys %calls) {
+		push @errors, "Wrong calls to $method." unless $section =~ /\d+\s+\d+\s+($calls{$method})\s+\Q$method\E/s;
+	}
+}
+
+sub check_call_traces
+{
+	my $report = shift;
+	my %calls = @_;
+	my $section = get_section ($report, "Method");
+	foreach my $method (keys %calls) {
+		my @desc = @{$calls{$method}};
+		my $num = shift @desc;
+		my $trace = get_delim_data ($section, "\\s+\\d+\\s+\\d+\\s+\\d+\\s+\Q$method\E", "^(\\s*\\d+\\s+\\d)|(^Total calls)");
+		if ($trace =~ s/^\s+(\d+)\s+calls from:$//m) {
+			my $num_calls = $1;
+			push @errors, "Wrong calls to $method." unless $num_calls == $num;
+			my @frames = map {s/^\s+(.*)\s*$/$1/; $_} split (/\n/, $trace);
+			while (@desc) {
+				my $dm = pop @desc;
+				my $fm = pop @frames;
+				push @errors, "Wrong frame $fm to $method." unless $dm eq $fm;
+			}
+		} else {
+			push @errors, "No num calls for $method.";
+		}
+	}
+}
+
+sub check_alloc_traces
+{
+	my $report = shift;
+	my %types = @_;
+	my $section = get_section ($report, "Allocation");
+	foreach my $type (keys %types) {
+		my @desc = @{$types{$type}};
+		my $num = shift @desc;
+		my $trace = get_delim_data ($section, "\\s+\\d+\\s+\\d+\\s+\\d+\\s+\Q$type\E", "^(\\s*\\d+\\s+\\d)|(^Total)");
+		if ($trace =~ s/^\s+(\d+)\s+bytes from:$//m) {
+			#my $num_calls = $1;
+			#push @errors, "Wrong calls to $method." unless $num_calls == $num;
+			my @frames = map {s/^\s+(.*)\s*$/$1/; $_} split (/\n/, $trace);
+			while (@desc) {
+				my $dm = pop @desc;
+				my $fm = pop @frames;
+				$fm = pop @frames if $fm =~ /wrapper/;
+				push @errors, "Wrong frame $fm for alloc of $type." unless $dm eq $fm;
+			}
+		} else {
+			push @errors, "No alloc frames for $type.";
+		}
+	}
+}
+
+sub check_heapshot_traces
+{
+	my $report = shift;
+	my $hshot = shift;
+	my %types = @_;
+	my $section = get_section ($report, "Heap");
+	$section = get_heap_shot ($section, $hshot);
+	foreach my $type (keys %types) {
+		my @desc = @{$types{$type}};
+		my $num = shift @desc;
+		my $rtype = shift @desc;
+		my $trace = get_delim_data ($section, "\\s+\\d+\\s+\\d+\\s+\\d+\\s+\Q$type\E", "^\\s*\\d+\\s+\\d");
+		if ($trace =~ s/^\s+(\d+)\s+references from:\s+\Q$rtype\E$//m) {
+			my $num_refs = $1;
+			push @errors, "Wrong num refs to $type from $rtype." unless $num_refs == $num;
+		} else {
+			push @errors, "No refs to $type from $rtype.";
+		}
+	}
+}
+
+sub check_exception_traces
+{
+	my $report = shift;
+	my @etraces = @_;
+	my $section = get_section ($report, "Exception");
+	foreach my $d (@etraces) {
+		my @desc = @{$d};
+		my $num = shift @desc;
+		my $trace = get_delim_data ($section, "^\\s+$num\\s+throws from:\$", "^\\s+(\\d+|Executed)");
+		if (length ($trace)) {
+			my @frames = map {s/^\s+(.*)\s*$/$1/; $_} split (/\n/, $trace);
+			while (@desc) {
+				my $dm = pop @desc;
+				my $fm = pop @frames;
+				push @errors, "Wrong frame '$fm' in exceptions (should be '$dm')." unless $dm eq $fm;
+			}
+		} else {
+			push @errors, "No exceptions or incorrect number.";
+		}
+	}
+}
+
+sub check_report_samples
+{
+	my $report = shift;
+	my %calls = @_;
+	my $section = get_section ($report, "Statistical");
+	foreach my $method (keys %calls) {
+		push @errors, "Wrong samples for $method." unless ($section =~ /\d+\s+(\d+\.\d+)\s+\Q$method\E/s && $1 >= $calls{$method});
+	}
+}
+
+sub check_report_allocation
+{
+	my $report = shift;
+	my %allocs = @_;
+	my $section = get_section ($report, "Allocation");
+	foreach my $type (keys %allocs) {
+		if ($section =~ /\d+\s+(\d+)\s+\d+\s+\Q$type\E$/m) {
+			push @errors, "Wrong allocs for type $type." unless $1 >= $allocs{$type};
+		} else {
+			push @errors, "No allocs for type $type.";
+		}
+	}
+}
+
+sub check_report_heapshot
+{
+	my $report = shift;
+	my $hshot = shift;
+	my $typemap = shift;
+	my %allocs = %{$typemap};
+	my $section = get_section ($report, "Heap");
+	$section = get_heap_shot ($section, $hshot);
+	foreach my $type (keys %allocs) {
+		if ($section =~ /\d+\s+(\d+)\s+\d+\s+\Q$type\E(\s+\(bytes.*\))?$/m) {
+			push @errors, "Wrong heapshot for type $type." unless $1 >= $allocs{$type};
+		} else {
+			push @errors, "No heapshot for type $type.";
+		}
+	}
+}
+
+sub check_report_jit
+{
+	my $report = shift;
+	my $min_methods = shift || 1;
+	my $min_code = shift || 16;
+	my $section = get_section ($report, "JIT");
+	push @errors, "Not enough compiled method." unless (($section =~ /Compiled methods:\s(\d+)/s) && ($1 >= $min_methods));
+	push @errors, "Not enough compiled code." unless (($section =~ /Generated code size:\s(\d+)/s) && ($1 >= $min_code));
+}
+
+sub check_report_locks
+{
+	my $report = shift;
+	my $contentions = shift;
+	my $acquired = shift;
+	my $section = get_section ($report, "Monitor");
+	push @errors, "Not enough contentions." unless (($section =~ /Lock contentions:\s(\d+)/s) && ($1 >= $contentions));
+	push @errors, "Not enough acquired locks." unless (($section =~ /Lock acquired:\s(\d+)/s) && ($1 >= $acquired));
+}
+
+sub check_report_exceptions
+{
+	my $report = shift;
+	my $throws = shift;
+	my $catches = shift;
+	my $finallies = shift;
+	my $section = get_section ($report, "Exception");
+	push @errors, "Not enough throws." unless (($section =~ /Throws:\s(\d+)/s) && ($1 >= $throws));
+	push @errors, "Not enough catches." unless (($section =~ /Executed catch clauses:\s(\d+)/s) && ($1 >= $catches));
+	push @errors, "Not enough finallies." unless (($section =~ /Executed finally clauses:\s(\d+)/s) && ($1 >= $finallies));
+}
+
+sub check_report_threads
+{
+	my $report = shift;
+	my @threads = @_;
+	my $section = get_section ($report, "Thread");
+	foreach my $tname (@threads) {
+		push @errors, "Missing thread $tname." unless $section =~ /Thread:.*name:\s"\Q$tname\E"/s;
+	}
+}
+
diff --git a/mono/profiler/test-alloc.cs b/mono/profiler/test-alloc.cs
new file mode 100644
index 0000000..3eb3509
--- /dev/null
+++ b/mono/profiler/test-alloc.cs
@@ -0,0 +1,14 @@
+using System;
+
+class T {
+
+	static int count = 1000000;
+	static void Main (string[] args) {
+		if (args.Length > 0)
+			count = int.Parse (args [0]);
+		for (int i = 0; i < count; ++i) {
+			object o = new object ();
+		}
+	}
+}
+
diff --git a/mono/profiler/test-busy.cs b/mono/profiler/test-busy.cs
new file mode 100644
index 0000000..76e1a5b
--- /dev/null
+++ b/mono/profiler/test-busy.cs
@@ -0,0 +1,45 @@
+using System.Threading;
+
+class T {
+
+	static int count = 10;
+	static void test2 () {
+		//Thread.Sleep (500);
+		//return;
+		int v = 0;
+		for (int i = 0; i < count; ++i) {
+			v += test3 ();
+		}
+	}
+
+	static int test3 () {
+		int v = 33;
+		for (int i = 0; i < 10000000; ++i) {
+			v += i * 1000;
+			v /=  (1 + i) * 2;
+		}
+		return v > 0? 0: 1;
+	}
+	static int test () {
+		int v = 33;
+		for (int i = 0; i < 10000000; ++i) {
+			v += i * 1000;
+			v /=  (1 + i) * 2;
+		}
+		return v > 0? 0: 1;
+	}
+	static int Main (string[] args) {
+		if (args.Length > 0)
+			count = int.Parse (args [0]);
+		Thread t = new Thread (test2);
+		t.Name = "BusyHelper";
+		t.Start ();
+		int v = 0;
+		for (int i = 0; i < count; ++i) {
+			v += test ();
+		}
+		t.Join ();
+		return v > 0? 0: 1;
+	}
+}
+
diff --git a/mono/profiler/test-excleave.cs b/mono/profiler/test-excleave.cs
new file mode 100644
index 0000000..b1d880d
--- /dev/null
+++ b/mono/profiler/test-excleave.cs
@@ -0,0 +1,24 @@
+using System;
+
+class T {
+
+	static int f = 0;
+	static int c = 0;
+	static void throw_ex () {
+		try {
+			throw new Exception ();
+		} finally {
+			f++;
+		}
+	}
+	static void Main (string[] args) {
+		for (int i = 0; i < 1000; ++i) {
+			try {
+				throw_ex ();
+			} catch {
+				c++;
+			}
+		}
+	}
+}
+
diff --git a/mono/profiler/test-heapshot.cs b/mono/profiler/test-heapshot.cs
new file mode 100644
index 0000000..f0d537f
--- /dev/null
+++ b/mono/profiler/test-heapshot.cs
@@ -0,0 +1,25 @@
+using System;
+
+class T {
+	T next;
+
+	static void Main (string[] args) {
+		int count = 5000;
+		T list = null;
+		for (int i = 0; i < count; ++i) {
+			T n = new T ();
+			n.next = list;
+			list = n;
+		}
+		// trigger a heapshot
+		GC.Collect ();
+		for (int i = 0; i < 23; ++i) {
+			T n = new T ();
+			n.next = list;
+			list = n;
+		}
+		// trigger another heapshot
+		GC.Collect ();
+	}
+}
+
diff --git a/mono/profiler/test-monitor.cs b/mono/profiler/test-monitor.cs
new file mode 100644
index 0000000..8e77b2f
--- /dev/null
+++ b/mono/profiler/test-monitor.cs
@@ -0,0 +1,24 @@
+using System;
+using System.Threading;
+
+class T {
+
+	static object mutex = new object ();
+	static int count = 1000000;
+
+	static void dolock ()
+	{
+		for (int i = 0; i < count; ++i) {
+			lock (mutex) {
+			}
+		}
+	}
+
+	static void Main (string[] args) {
+		Thread t = new Thread (dolock);
+		t.Start ();
+		dolock ();
+		t.Join ();
+	}
+}
+
diff --git a/mono/profiler/test-traces.cs b/mono/profiler/test-traces.cs
new file mode 100644
index 0000000..ee1d0e1
--- /dev/null
+++ b/mono/profiler/test-traces.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Runtime.CompilerServices;
+
+class T {
+
+	static object o = null;
+
+	[MethodImpl (MethodImplOptions.NoInlining)]
+	static void level3 (int op) {
+		level2 (op);
+	}
+
+	[MethodImpl (MethodImplOptions.NoInlining)]
+	static void level2 (int op) {
+		level1 (op);
+	}
+
+	[MethodImpl (MethodImplOptions.NoInlining)]
+	static void level1 (int op) {
+		level0 (op);
+	}
+
+	[MethodImpl (MethodImplOptions.NoInlining)]
+	static void level0 (int op) {
+		switch (op) {
+		case 0: o = new T (); break;
+		case 1: throw new Exception (); break;
+		}
+	}
+
+	static void Main (string[] args) {
+		int count = 1010;
+		for (int i = 0; i < count; ++i) {
+			level3 (0);
+		}
+		for (int i = 0; i < count; ++i) {
+			try {
+				level3 (1);
+			} catch {
+			}
+		}
+	}
+}
+
diff --git a/mono/profiler/utils.c b/mono/profiler/utils.c
new file mode 100644
index 0000000..8bf57a7
--- /dev/null
+++ b/mono/profiler/utils.c
@@ -0,0 +1,425 @@
+/*
+ * utils.c: log profiler and reporter utils
+ *
+ * We have here the minimal needed portability functions: we can't depend
+ * on the ones provided by the runtime, since they are internal and,
+ * especially mprof-report is an external program.
+ * Note also that we don't take a glib/eglib dependency here for mostly
+ * the same reason (but also because we need tight control in the profiler
+ * over memory allocation, which needs to work with the world stopped).
+ *
+ * Author:
+ *   Paolo Molaro (lupus at ximian.com)
+ *
+ * Copyright 2010 Novell, Inc (http://www.novell.com)
+ */
+#include "utils.h"
+#include <stdlib.h>
+#include <time.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#ifdef HOST_WIN32
+#include <windows.h>
+#else
+#include <pthread.h>
+#include <sched.h>
+#endif
+
+
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+#if HAVE_SYS_MMAN_H
+#include <sys/mman.h>
+#endif
+
+#if defined(__APPLE__)
+#include <mach/mach_time.h>  
+#include <stdio.h> 
+
+static mach_timebase_info_data_t timebase_info;
+#endif
+
+#ifndef MAP_ANONYMOUS
+#define MAP_ANONYMOUS MAP_ANON
+#endif
+
+#define TICKS_PER_SEC 1000000000LL
+
+#if (defined(TARGET_X86) || defined(TARGET_AMD64)) && defined(__linux__) && defined(HAVE_SCHED_GETCPU)
+#define HAVE_RDTSC 1
+#endif
+
+typedef struct {
+	unsigned int timer_count;
+	int last_cpu;
+	uint64_t last_rdtsc;
+	uint64_t last_time;
+} TlsData;
+
+#ifdef HOST_WIN32
+static int tls_data;
+#define DECL_TLS_DATA TlsData *tls; tls = (TlsData *) TlsGetValue (tls_data); if (tls == NULL) { tls = (TlsData *) calloc (sizeof (TlsData), 1); TlsSetValue (tls_data, tls); }
+#define TLS_INIT(x) x = TlsAlloc()
+#elif HAVE_KW_THREAD
+static __thread TlsData tls_data;
+#define DECL_TLS_DATA TlsData *tls = &tls_data
+#define TLS_INIT(x)
+#else
+static pthread_key_t tls_data;
+#define DECL_TLS_DATA TlsData *tls; tls = (TlsData *) pthread_getspecific (tls_data); if (tls == NULL) { tls = (TlsData *) calloc (sizeof (TlsData), 1); pthread_setspecific (tls_data, tls); }
+#define TLS_INIT(x) pthread_key_create(&x, NULL)
+#endif
+
+#ifdef HOST_WIN32
+static CRITICAL_SECTION log_lock;
+static LARGE_INTEGER pcounter_freq;
+#else
+static pthread_mutex_t log_lock = PTHREAD_MUTEX_INITIALIZER;
+#endif
+
+static int timer_overhead = 0;
+static uint64_t time_inc = 0;
+typedef uint64_t (*TimeFunc)(void);
+
+static TimeFunc time_func;
+
+static uint64_t
+clock_time (void)
+{
+#if defined(__APPLE__)
+	uint64_t time = mach_absolute_time ();
+	
+	time *= timebase_info.numer;
+	time /= timebase_info.denom;
+
+	return time;
+#elif defined(HOST_WIN32)
+	LARGE_INTEGER value;
+	QueryPerformanceCounter (&value);
+	return value.QuadPart * TICKS_PER_SEC / pcounter_freq.QuadPart;
+#elif defined(CLOCK_MONOTONIC)
+	struct timespec tspec;
+	clock_gettime (CLOCK_MONOTONIC, &tspec);
+	return ((uint64_t)tspec.tv_sec * TICKS_PER_SEC + tspec.tv_nsec);
+#else
+	struct timeval tv;
+	gettimeofday (&tv, NULL);
+	return ((uint64_t)tv.tv_sec * TICKS_PER_SEC + tv.tv_usec * 1000);
+#endif
+}
+
+/* must be power of two */
+#define TIME_ADJ 8
+
+static uint64_t
+fast_current_time (void)
+{
+	DECL_TLS_DATA;
+	if (tls->timer_count++ & (TIME_ADJ - 1)) {
+		tls->last_time += time_inc;
+		return tls->last_time;
+	}
+	tls->last_time = clock_time ();
+	return tls->last_time;
+}
+
+#if HAVE_RDTSC
+
+#define rdtsc(low,high) \
+	__asm__ __volatile__("rdtsc" : "=a" (low), "=d" (high))
+
+static uint64_t
+safe_rdtsc (int *cpu)
+{
+	unsigned int low, high;
+	int c1 = sched_getcpu ();
+	int c2;
+	rdtsc (low, high);
+	c2 = sched_getcpu ();
+	if (c1 != c2) {
+		*cpu = -1;
+		return 0;
+	}
+	*cpu = c1;
+	return (((uint64_t) high) << 32) + (uint64_t)low;
+}
+
+static double cpu_freq;
+
+static int 
+have_rdtsc (void) {
+	char buf[256];
+	int have_freq = 0;
+	int have_flag = 0;
+	float val;
+	FILE *cpuinfo;
+	int cpu = sched_getcpu ();
+
+	if (cpu < 0)
+		return 0;
+
+	if (!(cpuinfo = fopen ("/proc/cpuinfo", "r")))
+		return 0;
+	while (fgets (buf, sizeof(buf), cpuinfo)) {
+		if (sscanf (buf, "cpu MHz : %f", &val) == 1) {
+			/*printf ("got mh: %f\n", val);*/
+			have_freq = 1;
+			cpu_freq = val * 1000000;
+		}
+		if (strncmp (buf, "flags :", 5) == 0) {
+			if (strstr (buf, "constant_tsc")) {
+				have_flag = 1;
+				/*printf ("have tsc\n");*/
+			}
+		}
+	}
+	fclose (cpuinfo);
+	return have_flag? have_freq: 0;
+}
+
+static uint64_t
+rdtsc_current_time (void)
+{
+	DECL_TLS_DATA;
+	if (tls->timer_count++ & (TIME_ADJ*8 - 1)) {
+		int cpu;
+		uint64_t tsc = safe_rdtsc (&cpu);
+		if (cpu != -1 && cpu == tls->last_cpu) {
+			int64_t diff = tsc - tls->last_rdtsc;
+			uint64_t nsecs;
+			if (diff > 0) {
+				nsecs = (double)diff/cpu_freq;
+				//printf ("%llu cycles: %llu nsecs\n", diff, nsecs);
+				return tls->last_time + nsecs;
+			} else {
+				printf ("tsc went backwards\n");
+			}
+		} else {
+			//printf ("wrong cpu: %d\n", cpu);
+		}
+	}
+	tls->last_time = clock_time ();
+	tls->last_rdtsc = safe_rdtsc (&tls->last_cpu);
+	return tls->last_time;
+}
+#else
+#define have_rdtsc() 0
+#define rdtsc_current_time fast_current_time
+#endif
+
+static uint64_t
+null_time (void)
+{
+	static uint64_t timer = 0;
+	return timer++;
+}
+
+void
+utils_init (int fast_time)
+{
+	int i;
+	uint64_t time_start, time_end;
+	TLS_INIT (tls_data);
+#ifdef HOST_WIN32
+	InitializeCriticalSection (&log_lock);
+	QueryPerformanceFrequency (&pcounter_freq);
+#endif
+#if defined (__APPLE__)
+	mach_timebase_info (&timebase_info);
+#endif
+
+	if (fast_time > 1) {
+		time_func = null_time;
+	} else if (fast_time) {
+		uint64_t timea;
+		uint64_t timeb;
+		clock_time ();
+		timea = clock_time ();
+		timeb = clock_time ();
+		time_inc = (timeb - timea) / TIME_ADJ;
+		/*printf ("time inc: %llu, timea: %llu, timeb: %llu, diff: %llu\n", time_inc, timea, timeb, timec-timeb);*/
+		if (have_rdtsc ())
+			time_func = rdtsc_current_time;
+		else
+			time_func = fast_current_time;
+	} else {
+		time_func = clock_time;
+	}
+	time_start = time_func ();
+	for (i = 0; i < 256; ++i)
+		time_func ();
+	time_end = time_func ();
+	timer_overhead = (time_end - time_start) / 256;
+}
+
+int
+get_timer_overhead (void)
+{
+	return timer_overhead;
+}
+
+uint64_t
+current_time (void)
+{
+	return time_func ();
+}
+
+void*
+alloc_buffer (int size)
+{
+	void *ptr;
+#ifdef HOST_WIN32
+	ptr = VirtualAlloc (NULL, size, MEM_COMMIT, PAGE_READWRITE);
+	return ptr;
+#else
+	ptr = mmap (NULL, size, PROT_READ|PROT_WRITE, MAP_ANONYMOUS|MAP_PRIVATE, -1, 0);
+	if (ptr == (void*)-1)
+		return NULL;
+	return ptr;
+#endif
+}
+
+void
+free_buffer (void *buf, int size)
+{
+#ifdef HOST_WIN32
+	VirtualFree (buf, 0, MEM_RELEASE);
+#else
+	munmap (buf, size);
+#endif
+}
+
+void
+take_lock (void)
+{
+#ifdef HOST_WIN32
+	EnterCriticalSection (&log_lock);
+#else
+	pthread_mutex_lock (&log_lock);
+#endif
+}
+
+void
+release_lock (void)
+{
+#ifdef HOST_WIN32
+	LeaveCriticalSection (&log_lock);
+#else
+	pthread_mutex_unlock (&log_lock);
+#endif
+}
+
+void
+encode_uleb128 (uint64_t value, uint8_t *buf, uint8_t **endbuf)
+{
+	uint8_t *p = buf;
+
+	do {
+		uint8_t b = value & 0x7f;
+		value >>= 7;
+		if (value != 0) /* more bytes to come */
+			b |= 0x80;
+		*p ++ = b;
+	} while (value);
+
+	*endbuf = p;
+}
+
+void
+encode_sleb128 (intptr_t value, uint8_t *buf, uint8_t **endbuf)
+{
+	int more = 1;
+	int negative = (value < 0);
+	unsigned int size = sizeof (intptr_t) * 8;
+	uint8_t byte;
+	uint8_t *p = buf;
+
+	while (more) {
+		byte = value & 0x7f;
+		value >>= 7;
+		/* the following is unnecessary if the
+		 * implementation of >>= uses an arithmetic rather
+		 * than logical shift for a signed left operand
+		 */
+		if (negative)
+			/* sign extend */
+			value |= - ((intptr_t)1 <<(size - 7));
+		/* sign bit of byte is second high order bit (0x40) */
+		if ((value == 0 && !(byte & 0x40)) ||
+			(value == -1 && (byte & 0x40)))
+			more = 0;
+		else
+			byte |= 0x80;
+		*p ++= byte;
+	}
+
+	*endbuf = p;
+}
+
+uint64_t
+decode_uleb128 (uint8_t *buf, uint8_t **endbuf)
+{
+	uint64_t res = 0;
+	int shift = 0;
+
+	while (1) {
+		uint8_t b = *buf++;
+
+		res |= (((uint64_t)(b & 0x7f)) << shift);
+		if (!(b & 0x80))
+			break;
+		shift += 7;
+	}
+
+	*endbuf = buf;
+
+	return res;
+}
+
+intptr_t
+decode_sleb128 (uint8_t *buf, uint8_t **endbuf)
+{
+	uint8_t *p = buf;
+	intptr_t res = 0;
+	int shift = 0;
+
+	while (1) {
+		uint8_t b = *p;
+		p ++;
+
+		res = res | (((intptr_t)(b & 0x7f)) << shift);
+		shift += 7;
+		if (!(b & 0x80)) {
+			if (shift < sizeof (intptr_t) * 8 && (b & 0x40))
+				res |= - ((intptr_t)1 << shift);
+			break;
+		}
+	}
+
+	*endbuf = p;
+
+	return res;
+}
+
+uintptr_t
+thread_id (void)
+{
+#ifdef HOST_WIN32
+	return (uintptr_t)GetCurrentThreadId ();
+#else
+	return (uintptr_t)pthread_self ();
+#endif
+}
+
+uintptr_t
+process_id (void)
+{
+#ifdef HOST_WIN32
+	return 0; /* FIXME */
+#else
+	return (uintptr_t)getpid ();
+#endif
+}
+
diff --git a/mono/profiler/utils.h b/mono/profiler/utils.h
new file mode 100644
index 0000000..3af56d2
--- /dev/null
+++ b/mono/profiler/utils.h
@@ -0,0 +1,24 @@
+#ifndef __MONO_MPLOG_UTILS_H__
+#define __MONO_MPLOG_UTILS_H__
+
+#include "config.h"
+#include "mono/utils/mono-publib.h"
+
+void utils_init (int fast_time);
+int get_timer_overhead (void);
+uint64_t current_time (void);
+void* alloc_buffer (int size);
+void free_buffer (void *buf, int size);
+void take_lock (void);
+void release_lock (void);
+uintptr_t thread_id (void);
+uintptr_t process_id (void);
+
+void encode_uleb128 (uint64_t value, uint8_t *buf, uint8_t **endbuf);
+void encode_sleb128 (intptr_t value, uint8_t *buf, uint8_t **endbuf);
+uint64_t decode_uleb128 (uint8_t *buf, uint8_t **endbuf);
+intptr_t decode_sleb128 (uint8_t *buf, uint8_t **endbuf);
+
+
+#endif /* __MONO_MPLOG_UTILS_H__ */
+
diff --git a/mono/tests/ChangeLog b/mono/tests/ChangeLog
index dae7aa0..c43f64a 100644
--- a/mono/tests/ChangeLog
+++ b/mono/tests/ChangeLog
@@ -1,9 +1,117 @@
+2011-01-04  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Make test messages more usefull
+
+2010-12-14  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Add one more test for marshaling of char arrays
+
+2010-12-10  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix handling of gshared methods declared in generic superclasses
+	of nongeneric classes in stack traces. Fixes #658645.
+
+2010-12-08  Zoltan Varga  <vargaz at gmail.com>
+
+	Clean up the appdomain at the end of the remoting4 test.
+
+2010-12-04  Zoltan Varga  <vargaz at gmail.com>
+
+	Disable a test which breaks under AOT.
+
+2010-12-01  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Add regression test for #647267
+
+2010-11-27  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Enable test for #318677
+
+2010-11-27  Zoltan Varga  <vargaz at gmail.com>
+
+	Disable finally_guard.exe on amd64 until it is fixed.
+
+2010-11-26  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Fix those tests so they are verifiable.
+
+2010-11-12  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* gc-oom-handling.cs: Modify this test to test major fragmentation
+	too.
+
+	* gc-oom-handling2.cs: Add tests for some heavy reflection
+	allocators.
+
+2010-11-05  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Add test for string interning OOM.
+
+2010-11-05  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Add tests for OOM handling.
+
+2010-11-05  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Fix FieldInfo::GetFieldFromHandle signature.
+
 2010-11-05  Zoltan Varga  <vargaz at gmail.com>
 
 	Enlarge try-finally blocks preceeded by a Monitor.Enter () call to
 	include the call itself, to avoid races inherent in such code.
 	Fixes #651546.
 
+2010-10-24  Zoltan Varga  <vargaz at gmail.com>
+
+	Add tests for the eglib remapper.
+
+2010-10-14  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Add tests for protected finally blocks.
+
+2010-10-06  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Fix Marshal.SizeOf() for structs with explicit layout
+
+	Marshal.SizeOf is now returning the expected values for explicit
+	layout in 32 and 64 bits systems.
+
+	Fixes bug #641535.
+
+2010-10-07  Zoltan Varga  <vargaz at gmail.com>
+
+	Re-enable the tests.
+
+2010-10-06  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Disabled test until ?mcs is fixed.
+
+	This test failed to compile (internal error). Large changes
+	required in ?mcs before this can be compiled.
+
+2010-10-04  Zoltan Varga  <vargaz at gmail.com>
+
+	Execute some specialized tests using the normal test
+	infrastructure.
+
+2010-09-27  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	Add runtime test for delegates with null target.
+
+2010-09-25  Zoltan Varga  <vargaz at gmail.com>
+
+	Enable support for wrapping non Exception subclasses in
+	RuntimeWrappedException objects, implement support for
+	RuntimeCompatibilityAttribute.
+
+2010-09-15  Raja R Harinath  <harinath at hurrynot.org>
+
+	Fix a few CRLF issues
+
+2010-09-06  Rodrigo Kumpera  <kumpera at gmail.com>
+
+	* bug-348522.2.cs: gmcs now complains about a thinko here.
+
 2010-08-24  Rodrigo Kumpera  <kumpera at gmail.com>
 
 	Add regression test for 633291.
diff --git a/mono/tests/Makefile.am b/mono/tests/Makefile.am
index 4ddc71d..333b0d8 100644
--- a/mono/tests/Makefile.am
+++ b/mono/tests/Makefile.am
@@ -42,6 +42,8 @@ STRESS_TESTS_SRC=	\
 	process-stress.cs	\
 	assembly-load-stress.cs
 
+# Disabled until ?mcs is fixed
+#	bug-331958.cs
 BASE_TEST_CS_SRC=		\
 	array-init.cs		\
 	arraylist.cs		\
@@ -228,7 +230,6 @@ BASE_TEST_CS_SRC=		\
 	bug-78656.cs		\
 	bug-77127.cs		\
 	bug-323114.cs		\
-	bug-331958.cs		\
 	interlocked.cs		\
 	cross-domain.cs		\
 	appdomain-exit.cs	\
@@ -377,13 +378,19 @@ TEST_CS_SRC_DIST=	\
 	async-exc-compilation.cs \
 	filter-stack.cs
 
+TEST_CS_SRC_GEN = \
+	runtime-invoke.gen.cs \
+	imt_big_iface_test.cs
+
 if AMD64
-TEST_CS_SRC = $(BASE_TEST_CS_SRC) async-exc-compilation.cs
+TEST_CS_SRC = $(BASE_TEST_CS_SRC) $(TEST_CS_SRC_GEN) async-exc-compilation.cs finally_guard.cs
+# #651684
+PLATFORM_DISABLED_TESTS = finally_guard.exe
 else
 if X86
-TEST_CS_SRC = $(BASE_TEST_CS_SRC) async-exc-compilation.cs
+TEST_CS_SRC = $(BASE_TEST_CS_SRC) $(TEST_CS_SRC_GEN) async-exc-compilation.cs finally_guard.cs
 else
-TEST_CS_SRC = $(BASE_TEST_CS_SRC)
+TEST_CS_SRC = $(BASE_TEST_CS_SRC) $(TEST_CS_SRC_GEN)
 endif
 endif
 
@@ -492,9 +499,9 @@ TEST_IL_SRC=			\
 	bug-481403.il	\
 	interface-with-static-method.il	\
 	bug-515884.il	\
-	bug-633291.il
-
-#	bug-318677.il
+	bug-633291.il	\
+	delegate-with-null-target.il	\
+	bug-318677.il
 
 # pre-requisite test sources: files that are not test themselves
 # but that need to be compiled
@@ -534,6 +541,21 @@ test_platform:	test-iomap-regression
 endif
 endif
 
+if X86
+if HOST_WIN32
+else
+test_platform: test-eglib-remap
+endif
+endif
+
+#
+# Test that no symbols are missed in eglib-remap.h
+#
+OK_G_SYMBOLS='g_list\|g_slist\|g_concat_dir_and_file'
+test-eglib-remap:
+	@echo "Testing eglib remap..."
+	@if which nm > /dev/null; then if nm $(top_builddir)/mono/mini/mono | grep -v $(OK_G_SYMBOLS) | grep 't g_'; then exit 1; else exit 0; fi; fi
+
 #
 # Tests that the internals in mono/io-layer/messages.c are ok by triggering the 
 # code that checks that the table is properly sorted
@@ -550,7 +572,7 @@ endif
 
 # test_messages fails on the buildbots
 #test: assemblyresolve/test/asm.dll testjit test-type-load test-generic-sharing test_platform test_2_1 test_messages
-test: assemblyresolve/test/asm.dll testjit test-type-load test-generic-sharing test_platform test-runtime-invoke test-imt-big-iface test_2_1 test-process-exit
+test: assemblyresolve/test/asm.dll testjit test-generic-sharing test-type-load test_platform test_2_1 test-process-exit
 
 assemblyresolve/test/asm.dll:
 	$(MAKE) -C assemblyresolve prereq
@@ -672,18 +694,14 @@ test-type-load: TestDriver.dll
 
 # Generated tests for runtime invoke
 EXTRA_DIST += gen-runtime-invoke.cs
-test-runtime-invoke: TestDriver.dll gen-runtime-invoke.exe
-	@$(RUNTIME) gen-runtime-invoke.exe > runtime-invoke.gen.cs
-	@$(MCS) -out:runtime-invoke.gen.exe -r:TestDriver.dll runtime-invoke.gen.cs
-	@echo "Testing runtime-invoke.gen.exe..."
-	@$(RUNTIME) runtime-invoke.gen.exe > runtime-invoke.gen.exe.stdout 2> runtime-invoke.gen.exe.stderr
+runtime-invoke.gen.exe: TestDriver.dll gen-runtime-invoke.exe
+	$(RUNTIME) gen-runtime-invoke.exe > runtime-invoke.gen.cs
+	$(MCS) -out:runtime-invoke.gen.exe -r:TestDriver.dll runtime-invoke.gen.cs
 
 EXTRA_DIST += make-imt-test.cs
-test-imt-big-iface: TestDriver.dll make-imt-test.exe
-	@$(RUNTIME) make-imt-test.exe > imt_big_iface_test.cs
-	@$(MCS) -out:imt_big_iface_test.exe -r:TestDriver.dll imt_big_iface_test.cs
-	@echo "Testing imt_big_iface_test.exe..."
-	@$(RUNTIME) imt_big_iface_test.exe > imt_big_iface_test.exe.stdout 2> imt_big_iface_test.exe.stderr
+imt_big_iface_test.exe: TestDriver.dll make-imt-test.exe
+	$(RUNTIME) make-imt-test.exe > imt_big_iface_test.cs
+	$(MCS) -out:imt_big_iface_test.exe -r:TestDriver.dll imt_big_iface_test.cs
 
 EXTRA_DIST += test-inline-call-stack-library.cs test-inline-call-stack.cs
 test-inline-call-stack-library.dll: TestDriver.dll $(srcdir)/test-inline-call-stack-library.cs
@@ -872,6 +890,20 @@ test-process-exit:
 	@$(RUNTIME) bug-438454.exe > bug-438454.exe.stdout
 	@diff bug-438454.exe.stdout $(srcdir)/bug-438454.exe.stdout.expected
 
+OOM_TESTS =	\
+	gc-oom-handling.exe	\
+	gc-oom-handling2.exe
+
+
+test-oom: $(OOM_TESTS)
+	@for fn in $+ ; do	\
+		echo "Testing $$fn ...";	\
+		MONO_GC_PARAMS=max-heap-size=16m,major=marksweep-par MONO_ENV_OPTIONS="--gc=sgen" $(RUNTIME) $$fn > $$fn.stdout || exit 1;	\
+		MONO_GC_PARAMS=max-heap-size=16m MONO_ENV_OPTIONS="--gc=sgen"                     $(RUNTIME) $$fn > $$fn.stdout || exit 1;	\
+		MONO_GC_PARAMS=max-heap-size=16m                                                  $(RUNTIME) $$fn > $$fn.stdout || exit 1;	\
+	done
+
+
 noinst_LTLIBRARIES = libtest.la
 
 INCLUDES = $(GLIB_CFLAGS) $(GMODULE_CFLAGS)
diff --git a/mono/tests/Makefile.in b/mono/tests/Makefile.in
index 75f415c..f1c5342 100644
--- a/mono/tests/Makefile.in
+++ b/mono/tests/Makefile.in
@@ -165,6 +165,7 @@ MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
 MONO_DL_NEED_USCORE = @MONO_DL_NEED_USCORE@
 MONO_NACL_ALIGN_MASK_OFF = @MONO_NACL_ALIGN_MASK_OFF@
+MOONLIGHT_DEFINES = @MOONLIGHT_DEFINES@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
@@ -304,6 +305,9 @@ STRESS_TESTS_SRC = \
 	process-stress.cs	\
 	assembly-load-stress.cs
 
+
+# Disabled until ?mcs is fixed
+#	bug-331958.cs
 BASE_TEST_CS_SRC = \
 	array-init.cs		\
 	arraylist.cs		\
@@ -490,7 +494,6 @@ BASE_TEST_CS_SRC = \
 	bug-78656.cs		\
 	bug-77127.cs		\
 	bug-323114.cs		\
-	bug-331958.cs		\
 	interlocked.cs		\
 	cross-domain.cs		\
 	appdomain-exit.cs	\
@@ -639,13 +642,21 @@ TEST_CS_SRC_DIST = \
 	async-exc-compilation.cs \
 	filter-stack.cs
 
+TEST_CS_SRC_GEN = \
+	runtime-invoke.gen.cs \
+	imt_big_iface_test.cs
+
 @AMD64_FALSE@@X86_FALSE at TEST_CS_SRC = $(BASE_TEST_CS_SRC) \
- at AMD64_FALSE@@X86_FALSE@	$(am__append_1)
+ at AMD64_FALSE@@X86_FALSE@	$(TEST_CS_SRC_GEN) $(am__append_1)
 @AMD64_FALSE@@X86_TRUE at TEST_CS_SRC = $(BASE_TEST_CS_SRC) \
+ at AMD64_FALSE@@X86_TRUE@	$(TEST_CS_SRC_GEN) \
 @AMD64_FALSE@@X86_TRUE@	async-exc-compilation.cs \
- at AMD64_FALSE@@X86_TRUE@	$(am__append_1)
- at AMD64_TRUE@TEST_CS_SRC = $(BASE_TEST_CS_SRC) async-exc-compilation.cs \
+ at AMD64_FALSE@@X86_TRUE@	finally_guard.cs $(am__append_1)
+ at AMD64_TRUE@TEST_CS_SRC = $(BASE_TEST_CS_SRC) $(TEST_CS_SRC_GEN) \
+ at AMD64_TRUE@	async-exc-compilation.cs finally_guard.cs \
 @AMD64_TRUE@	$(am__append_1)
+# #651684
+ at AMD64_TRUE@PLATFORM_DISABLED_TESTS = finally_guard.exe
 @ARM_TRUE at PLATFORM_DISABLED_TESTS = filter-stack.exe
 @HOST_WIN32_TRUE@@X86_TRUE at PLATFORM_DISABLED_TESTS = async-exc-compilation.exe
 # bug #319249
@@ -735,10 +746,10 @@ TEST_IL_SRC = \
 	bug-481403.il	\
 	interface-with-static-method.il	\
 	bug-515884.il	\
-	bug-633291.il
-
+	bug-633291.il	\
+	delegate-with-null-target.il	\
+	bug-318677.il
 
-#	bug-318677.il
 
 # pre-requisite test sources: files that are not test themselves
 # but that need to be compiled
@@ -770,6 +781,11 @@ EXTRA_DIST = test-driver $(TEST_CS_SRC_DIST) $(TEST_IL_SRC) \
 	generic-delegate2.2.cs generic-delegate2-lib.2.il \
 	async-exceptions.cs modules.cs modules-m1.cs bug-438454.cs \
 	bug-438454.exe.stdout.expected
+
+#
+# Test that no symbols are missed in eglib-remap.h
+#
+OK_G_SYMBOLS = 'g_list\|g_slist\|g_concat_dir_and_file'
 GSHARED_TESTS = \
 		generics-sharing.2.exe shared-generic-methods.2.exe	\
 		shared-generic-synchronized.2.exe generic-initobj.2.exe		\
@@ -797,6 +813,10 @@ GSHARED_TESTS = \
 		bug-479763.2.exe generic-xdomain.2.exe				\
 		generic-type-load-exception.2.exe bug-616463.exe
 
+OOM_TESTS = \
+	gc-oom-handling.exe	\
+	gc-oom-handling2.exe
+
 noinst_LTLIBRARIES = libtest.la
 INCLUDES = $(GLIB_CFLAGS) $(GMODULE_CFLAGS)
 
@@ -1200,6 +1220,11 @@ aotcheck: testaot gshared-aot
 #test_platform:	testbundle test-iomap-regression
 @HOST_WIN32_FALSE@@POWERPC_FALSE at test_platform:	test-iomap-regression
 
+ at HOST_WIN32_FALSE@@X86_TRUE at test_platform: test-eglib-remap
+test-eglib-remap:
+	@echo "Testing eglib remap..."
+	@if which nm > /dev/null; then if nm $(top_builddir)/mono/mini/mono | grep -v $(OK_G_SYMBOLS) | grep 't g_'; then exit 1; else exit 0; fi; fi
+
 #
 # Tests that the internals in mono/io-layer/messages.c are ok by triggering the 
 # code that checks that the table is properly sorted
@@ -1213,7 +1238,7 @@ test_messages: w32message.exe
 
 # test_messages fails on the buildbots
 #test: assemblyresolve/test/asm.dll testjit test-type-load test-generic-sharing test_platform test_2_1 test_messages
-test: assemblyresolve/test/asm.dll testjit test-type-load test-generic-sharing test_platform test-runtime-invoke test-imt-big-iface test_2_1 test-process-exit
+test: assemblyresolve/test/asm.dll testjit test-generic-sharing test-type-load test_platform test_2_1 test-process-exit
 
 assemblyresolve/test/asm.dll:
 	$(MAKE) -C assemblyresolve prereq
@@ -1330,16 +1355,12 @@ test-type-load: TestDriver.dll
 	@$(MCS) -t:library -out:t.dll $(srcdir)/t-missing.cs
 	@echo "Testing load-exception.exe..."
 	@$(RUNTIME) load-exceptions.exe > load-exceptions.exe.stdout 2> load-exceptions.exe.stderr
-test-runtime-invoke: TestDriver.dll gen-runtime-invoke.exe
-	@$(RUNTIME) gen-runtime-invoke.exe > runtime-invoke.gen.cs
-	@$(MCS) -out:runtime-invoke.gen.exe -r:TestDriver.dll runtime-invoke.gen.cs
-	@echo "Testing runtime-invoke.gen.exe..."
-	@$(RUNTIME) runtime-invoke.gen.exe > runtime-invoke.gen.exe.stdout 2> runtime-invoke.gen.exe.stderr
-test-imt-big-iface: TestDriver.dll make-imt-test.exe
-	@$(RUNTIME) make-imt-test.exe > imt_big_iface_test.cs
-	@$(MCS) -out:imt_big_iface_test.exe -r:TestDriver.dll imt_big_iface_test.cs
-	@echo "Testing imt_big_iface_test.exe..."
-	@$(RUNTIME) imt_big_iface_test.exe > imt_big_iface_test.exe.stdout 2> imt_big_iface_test.exe.stderr
+runtime-invoke.gen.exe: TestDriver.dll gen-runtime-invoke.exe
+	$(RUNTIME) gen-runtime-invoke.exe > runtime-invoke.gen.cs
+	$(MCS) -out:runtime-invoke.gen.exe -r:TestDriver.dll runtime-invoke.gen.cs
+imt_big_iface_test.exe: TestDriver.dll make-imt-test.exe
+	$(RUNTIME) make-imt-test.exe > imt_big_iface_test.cs
+	$(MCS) -out:imt_big_iface_test.exe -r:TestDriver.dll imt_big_iface_test.cs
 test-inline-call-stack-library.dll: TestDriver.dll $(srcdir)/test-inline-call-stack-library.cs
 	$(MCS) -t:library -out:test-inline-call-stack-library.dll $(srcdir)/test-inline-call-stack-library.cs
 test-inline-call-stack.exe: TestDriver.dll test-inline-call-stack-library.dll $(srcdir)/test-inline-call-stack.cs
@@ -1460,6 +1481,14 @@ test-process-exit:
 	@echo "Testing bug-438454.exe..."
 	@$(RUNTIME) bug-438454.exe > bug-438454.exe.stdout
 	@diff bug-438454.exe.stdout $(srcdir)/bug-438454.exe.stdout.expected
+
+test-oom: $(OOM_TESTS)
+	@for fn in $+ ; do	\
+		echo "Testing $$fn ...";	\
+		MONO_GC_PARAMS=max-heap-size=16m,major=marksweep-par MONO_ENV_OPTIONS="--gc=sgen" $(RUNTIME) $$fn > $$fn.stdout || exit 1;	\
+		MONO_GC_PARAMS=max-heap-size=16m MONO_ENV_OPTIONS="--gc=sgen"                     $(RUNTIME) $$fn > $$fn.stdout || exit 1;	\
+		MONO_GC_PARAMS=max-heap-size=16m                                                  $(RUNTIME) $$fn > $$fn.stdout || exit 1;	\
+	done
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/mono/tests/assemblyresolve/Makefile.in b/mono/tests/assemblyresolve/Makefile.in
index 1ae3ecd..3b5ff6e 100644
--- a/mono/tests/assemblyresolve/Makefile.in
+++ b/mono/tests/assemblyresolve/Makefile.in
@@ -133,6 +133,7 @@ MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
 MONO_DL_NEED_USCORE = @MONO_DL_NEED_USCORE@
 MONO_NACL_ALIGN_MASK_OFF = @MONO_NACL_ALIGN_MASK_OFF@
+MOONLIGHT_DEFINES = @MOONLIGHT_DEFINES@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
diff --git a/mono/tests/bug-318677.il b/mono/tests/bug-318677.il
new file mode 100644
index 0000000..ce956cc
--- /dev/null
+++ b/mono/tests/bug-318677.il
@@ -0,0 +1,82 @@
+.assembly extern mscorlib
+{
+  .ver 1:0:5000:0
+  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
+}
+.assembly 'out'
+{
+  .hash algorithm 0x00008004
+  .ver  0:0:0:0
+}
+.module 'out' // GUID = {F21F5CF2-5B7A-4E45-9087-A8A456BB68C7}
+
+
+  .class private auto ansi abstract _N_AutoModule
+        extends [mscorlib]System.Object
+  {
+
+    .method private static  hidebysig 
+           default int32 Main ()  cil managed 
+    {
+	.entrypoint
+	// Code size 52 (0x34)
+	.maxstack 3
+	.locals init (
+		class [mscorlib]System.Exception	V_0,
+		int32	V_1)
+	.try { // 0
+	  IL_0000:  call void class _N_AutoModule::ThisMethodWillNotReturn()
+	  IL_0005:  ldstr "return 1"
+	  IL_000a:  call void class [mscorlib]System.Console::WriteLine(string)
+	  IL_000f:  ldc.i4.1 
+	  IL_0010:  stloc.1 
+	  IL_0011:  leave IL_0032
+
+	  IL_0016:  leave IL_0032
+
+	} // end .try 0
+	catch [mscorlib]System.Exception { // 0
+	  IL_001b:  stloc.0 
+	  IL_001c:  ldstr "return 0"
+	  IL_0021:  call void class [mscorlib]System.Console::WriteLine(string)
+	  IL_0026:  ldc.i4.0 
+	  IL_0027:  stloc.1 
+	  IL_0028:  leave IL_0032
+
+	  IL_002d:  leave IL_0032
+
+	} // end handler 0
+	IL_0032:  ldloc.1 
+	IL_0033:  ret 
+    } // end of method _N_AutoModule::Main
+
+    .method private static  hidebysig
+           default void ThisMethodWillNotReturn ()  cil managed
+    {
+        // Code size 44 (0x2c)
+        .maxstack 4
+        .locals init (
+                bool    V_0)
+        IL_0000:  ldc.i4.2
+        IL_0001:  ldc.i4.3
+        IL_0002:  bgt.s IL_000a
+
+        IL_0004:  ldc.i4.0
+        IL_0005:  br IL_000b
+
+        IL_000a:  ldc.i4.1
+        IL_000b:  stloc.0
+        IL_000c:  ldloc.0
+        IL_000d:  brfalse IL_0017
+
+        IL_0012:  br IL_0021
+
+        IL_0017:  ldstr "ble"
+        IL_001c:  call void class [mscorlib]System.Console::WriteLine(string)
+        IL_0021:  ldstr ""
+        IL_0026:  newobj instance void class
+[mscorlib]System.Exception::.ctor(string)
+        IL_002b:  throw
+    } // end of method _N_AutoModule::default void Main ()
+
+  } // end of class _N_AutoModule
diff --git a/mono/tests/bug-331958.cs b/mono/tests/bug-331958.cs
deleted file mode 100644
index 6e73105..0000000
--- a/mono/tests/bug-331958.cs
+++ /dev/null
@@ -1,34 +0,0 @@
-class Program
-{
-	static int Main ()
-	{
-		X18 x18 = new X18 ();
-		x18.x1 = new X17 ();
-		x18.x2 = new X17 ();
-		if (x18.GetType () != typeof (X18))
-			return 1;
-
-		return 0;
-	}
-}
-
-
-struct X0 { public byte b; }
-struct X1 { public X0 x1; public X0 x2; }
-struct X2 { public X1 x1; public X1 x2; }
-struct X3 { public X2 x1; public X2 x2; }
-struct X4 { public X3 x1; public X3 x2; }
-struct X5 { public X4 x1; public X4 x2; }
-struct X6 { public X5 x1; public X5 x2; }
-struct X7 { public X6 x1; public X6 x2; }
-struct X8 { public X7 x1; public X7 x2; }
-struct X9 { public X8 x1; public X8 x2; }
-struct X10 { public X9 x1; public X9 x2; }
-struct X11 { public X10 x1; public X10 x2; }
-struct X12 { public X11 x1; public X11 x2; }
-struct X13 { public X12 x1; public X12 x2; }
-struct X14 { public X13 x1; public X13 x2; }
-struct X15 { public X14 x1; public X14 x2; }
-struct X16 { public X15 x1; public X15 x2; }
-struct X17 { public X16 x1; public X16 x2; }
-struct X18 { public X17 x1; public X17 x2; }
diff --git a/mono/tests/bug-348522.2.cs b/mono/tests/bug-348522.2.cs
index a5d7aef..5d84502 100644
--- a/mono/tests/bug-348522.2.cs
+++ b/mono/tests/bug-348522.2.cs
@@ -124,7 +124,7 @@ class Driver
 
 class PassesStuffBinder : BaseBinder
 {
-	object stuff = stuff;
+	object stuff = null;
 
 	public PassesStuffBinder (object stuff)
 	{
diff --git a/mono/tests/cas/Makefile.in b/mono/tests/cas/Makefile.in
index 51dbd77..1834b37 100644
--- a/mono/tests/cas/Makefile.in
+++ b/mono/tests/cas/Makefile.in
@@ -145,6 +145,7 @@ MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
 MONO_DL_NEED_USCORE = @MONO_DL_NEED_USCORE@
 MONO_NACL_ALIGN_MASK_OFF = @MONO_NACL_ALIGN_MASK_OFF@
+MOONLIGHT_DEFINES = @MOONLIGHT_DEFINES@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
diff --git a/mono/tests/cas/assembly/Makefile.in b/mono/tests/cas/assembly/Makefile.in
index b04d87f..62834de 100644
--- a/mono/tests/cas/assembly/Makefile.in
+++ b/mono/tests/cas/assembly/Makefile.in
@@ -134,6 +134,7 @@ MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
 MONO_DL_NEED_USCORE = @MONO_DL_NEED_USCORE@
 MONO_NACL_ALIGN_MASK_OFF = @MONO_NACL_ALIGN_MASK_OFF@
+MOONLIGHT_DEFINES = @MOONLIGHT_DEFINES@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
diff --git a/mono/tests/cas/demand/Makefile.in b/mono/tests/cas/demand/Makefile.in
index bb45045..1b96631 100644
--- a/mono/tests/cas/demand/Makefile.in
+++ b/mono/tests/cas/demand/Makefile.in
@@ -134,6 +134,7 @@ MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
 MONO_DL_NEED_USCORE = @MONO_DL_NEED_USCORE@
 MONO_NACL_ALIGN_MASK_OFF = @MONO_NACL_ALIGN_MASK_OFF@
+MOONLIGHT_DEFINES = @MOONLIGHT_DEFINES@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
diff --git a/mono/tests/cas/inheritance/Makefile.in b/mono/tests/cas/inheritance/Makefile.in
index 67bfd18..5377446 100644
--- a/mono/tests/cas/inheritance/Makefile.in
+++ b/mono/tests/cas/inheritance/Makefile.in
@@ -134,6 +134,7 @@ MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
 MONO_DL_NEED_USCORE = @MONO_DL_NEED_USCORE@
 MONO_NACL_ALIGN_MASK_OFF = @MONO_NACL_ALIGN_MASK_OFF@
+MOONLIGHT_DEFINES = @MOONLIGHT_DEFINES@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
diff --git a/mono/tests/cas/linkdemand/Makefile.in b/mono/tests/cas/linkdemand/Makefile.in
index 789887d..0dbc655 100644
--- a/mono/tests/cas/linkdemand/Makefile.in
+++ b/mono/tests/cas/linkdemand/Makefile.in
@@ -134,6 +134,7 @@ MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
 MONO_DL_NEED_USCORE = @MONO_DL_NEED_USCORE@
 MONO_NACL_ALIGN_MASK_OFF = @MONO_NACL_ALIGN_MASK_OFF@
+MOONLIGHT_DEFINES = @MOONLIGHT_DEFINES@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
diff --git a/mono/tests/cas/threads/Makefile.in b/mono/tests/cas/threads/Makefile.in
index 52f1bdc..c016a3b 100644
--- a/mono/tests/cas/threads/Makefile.in
+++ b/mono/tests/cas/threads/Makefile.in
@@ -134,6 +134,7 @@ MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
 MONO_DL_NEED_USCORE = @MONO_DL_NEED_USCORE@
 MONO_NACL_ALIGN_MASK_OFF = @MONO_NACL_ALIGN_MASK_OFF@
+MOONLIGHT_DEFINES = @MOONLIGHT_DEFINES@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
diff --git a/mono/tests/delegate-with-null-target.il b/mono/tests/delegate-with-null-target.il
new file mode 100644
index 0000000..9d7fbe6
--- /dev/null
+++ b/mono/tests/delegate-with-null-target.il
@@ -0,0 +1,206 @@
+.assembly extern mscorlib
+{
+  .ver 2:0:0:0
+  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
+}
+.assembly 'null_dele'
+{
+  .custom instance void class [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::'.ctor'() =  (
+		01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78   // ....T..WrapNonEx
+		63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01       ) // ceptionThrows.
+
+  .hash algorithm 0x00008004
+  .ver  0:0:0:0
+}
+.module null_dele.exe // GUID = {2CEA1DD9-6D58-496F-B44B-D78A7BB13197}
+
+
+  .class public auto ansi sealed Foo
+  	extends [mscorlib]System.MulticastDelegate
+  {
+
+    // method line 1
+    .method public hidebysig specialname rtspecialname 
+           instance default void '.ctor' (object A_1, native int A_2)  runtime managed 
+    {
+        // Method begins at RVA 0x0
+          // Disassembly of native methods is not supported
+    } // end of method Foo::.ctor
+
+    // method line 2
+    .method public virtual hidebysig newslot 
+           instance default void Invoke ()  runtime managed 
+    {
+        // Method begins at RVA 0x0
+          // Disassembly of native methods is not supported
+    } // end of method Foo::Invoke
+
+    // method line 3
+    .method public virtual hidebysig newslot 
+           instance default class [mscorlib]System.IAsyncResult BeginInvoke (class [mscorlib]System.AsyncCallback callback, object 'object')  runtime managed 
+    {
+        // Method begins at RVA 0x0
+          // Disassembly of native methods is not supported
+    } // end of method Foo::BeginInvoke
+
+    // method line 4
+    .method public virtual hidebysig newslot 
+           instance default void EndInvoke (class [mscorlib]System.IAsyncResult A_1)  runtime managed 
+    {
+        // Method begins at RVA 0x0
+          // Disassembly of native methods is not supported
+    } // end of method Foo::EndInvoke
+
+  } // end of class Foo
+
+
+  .class public auto ansi sealed Foo2
+  	extends [mscorlib]System.MulticastDelegate
+  {
+
+    // method line 1
+    .method public hidebysig specialname rtspecialname 
+           instance default void '.ctor' (object A_1, native int A_2)  runtime managed 
+    {
+        // Method begins at RVA 0x0
+          // Disassembly of native methods is not supported
+    } // end of method Foo::.ctor
+
+    // method line 2
+    .method public virtual hidebysig newslot 
+           instance default void Invoke (Program P_0)  runtime managed 
+    {
+        // Method begins at RVA 0x0
+          // Disassembly of native methods is not supported
+    } // end of method Foo::Invoke
+
+    // method line 3
+    .method public virtual hidebysig newslot 
+           instance default class [mscorlib]System.IAsyncResult BeginInvoke (class [mscorlib]System.AsyncCallback callback, object 'object')  runtime managed 
+    {
+        // Method begins at RVA 0x0
+          // Disassembly of native methods is not supported
+    } // end of method Foo::BeginInvoke
+
+    // method line 4
+    .method public virtual hidebysig newslot 
+           instance default void EndInvoke (class [mscorlib]System.IAsyncResult A_1)  runtime managed 
+    {
+        // Method begins at RVA 0x0
+          // Disassembly of native methods is not supported
+    } // end of method Foo::EndInvoke
+
+  } // end of class Foo
+
+
+  .class private auto ansi beforefieldinit Program
+  	extends [mscorlib]System.Object
+  {
+
+    // method line 5
+    .method public hidebysig specialname rtspecialname 
+           instance default void '.ctor' ()  cil managed 
+    {
+        // Method begins at RVA 0x20ec
+	// Code size 7 (0x7)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  call instance void object::'.ctor'()
+	IL_0006:  ret 
+    } // end of method Program::.ctor
+
+    // method line 6
+    .method public hidebysig 
+           instance default void Test ()  cil managed 
+    {
+        // Method begins at RVA 0x20f4
+	// Code size 1 (0x1)
+	.maxstack 8
+	IL_0000:  ret 
+    } // end of method Program::Test
+
+    // method line 7
+    .method private static hidebysig 
+           default int32 Main ()  cil managed 
+    {
+        // Method begins at RVA 0x20f8
+		.entrypoint
+		// Code size 109 (0x6d)
+		.maxstack 3
+		.locals init (class Program	V_0)
+
+		ldnull 
+		stloc.0
+
+		.try {
+			ldloc.0 
+			ldftn instance void class Program::Test()
+			newobj instance void class Foo::'.ctor'(object, native int)
+			leave ERR_1
+		}
+		catch class [mscorlib]System.ArgumentException { // 2
+			pop 
+			leave NEXT_1
+		}
+
+NEXT_1:
+		newobj instance void class Program::'.ctor'()
+		stloc.0 
+		.try {
+			ldloc.0 
+			ldftn instance void class Program::Test()
+			newobj instance void class Foo::'.ctor'(object, native int)
+			leave NEXT_2
+		}
+		catch class [mscorlib]System.ArgumentException { // 2
+			pop 
+			leave ERR_2
+		}
+
+NEXT_2:
+
+		.try {
+			ldnull
+			ldftn instance void class Program::Test()
+			newobj instance void class Foo2::'.ctor'(object, native int)
+			leave NEXT_3
+		}
+		catch class [mscorlib]System.ArgumentException { // 2
+			pop 
+			leave ERR_3
+		}
+
+NEXT_3:
+		.try {
+			ldnull
+			ldftn instance void class Program::Test()
+			newobj instance void class Foo::'.ctor'(object, native int)
+			leave ERR_4
+		}
+		catch class [mscorlib]System.ArgumentException { // 2
+			pop 
+			leave OK
+		}
+
+OK:
+		ldc.i4.0
+		ret
+ERR_1:
+		ldc.i4.1
+		ret
+ERR_2:
+		ldc.i4.2
+		ret
+ERR_3:
+		ldc.i4.3
+		ret
+ERR_4:
+		ldc.i4.4
+		ret
+
+	}
+	
+
+
+}
+
diff --git a/mono/tests/generic-array-exc.2.il b/mono/tests/generic-array-exc.2.il
index 875c93e..b8856b1 100644
--- a/mono/tests/generic-array-exc.2.il
+++ b/mono/tests/generic-array-exc.2.il
@@ -5,10 +5,6 @@
 }
 .assembly 'generic-array-exc.2'
 {
-  .custom instance void class [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() =  (
-		01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78   // ....T..WrapNonEx
-		63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01       ) // ceptionThrows.
-
   .hash algorithm 0x00008004
   .ver  0:0:0:0
 }
diff --git a/mono/tests/generic-ldtoken-field.2.il b/mono/tests/generic-ldtoken-field.2.il
index df062f4..3ee75cc 100644
--- a/mono/tests/generic-ldtoken-field.2.il
+++ b/mono/tests/generic-ldtoken-field.2.il
@@ -54,9 +54,9 @@
     .method public hidebysig instance default int32 checkEqual () cil managed
     {
         ldtoken field int32 class Gen`1<!T>::myField
-	call [mscorlib]System.Reflection.FieldInfo [mscorlib]System.Reflection.FieldInfo::GetFieldFromHandle ([mscorlib]System.RuntimeFieldHandle)
+	call [mscorlib]System.Reflection.FieldInfo [mscorlib]System.Reflection.FieldInfo::GetFieldFromHandle (valuetype [mscorlib]System.RuntimeFieldHandle)
         ldtoken field int32 class Gen`1<class ClassA>::myField
-	call [mscorlib]System.Reflection.FieldInfo [mscorlib]System.Reflection.FieldInfo::GetFieldFromHandle ([mscorlib]System.RuntimeFieldHandle)
+	call [mscorlib]System.Reflection.FieldInfo [mscorlib]System.Reflection.FieldInfo::GetFieldFromHandle (valuetype [mscorlib]System.RuntimeFieldHandle)
 	ceq
 	ret
     }
diff --git a/mono/tests/generic-mkrefany.2.il b/mono/tests/generic-mkrefany.2.il
index 1d522b6..818fd92 100644
--- a/mono/tests/generic-mkrefany.2.il
+++ b/mono/tests/generic-mkrefany.2.il
@@ -70,8 +70,8 @@
 	IL_0001:  stloc.0 
 		  ldloca 0
 		  mkrefany	!0
-		  refanyval	ClassA
-		  ldobj		ClassA
+		  refanyval	!0
+		  ldobj		!0
 	IL_0003:  ret 
     } // end of method Gen`1::ident
 
@@ -88,8 +88,8 @@
 	IL_0001:  stloc.0 
 		  ldloca	0
 		  mkrefany	valuetype GenStruct`1<!0>
-		  refanyval	valuetype GenStruct`1<ClassA>
-		  ldobj		valuetype GenStruct`1<ClassA>
+		  refanyval	valuetype GenStruct`1<!0>
+		  ldobj		valuetype GenStruct`1<!0>
 	IL_0003:  ret 
     } // end of method Gen`1::structIdent
 
diff --git a/mono/tests/generic-refanyval.2.il b/mono/tests/generic-refanyval.2.il
index fffaeaa..23ed223 100644
--- a/mono/tests/generic-refanyval.2.il
+++ b/mono/tests/generic-refanyval.2.il
@@ -87,9 +87,9 @@
 	IL_0000:  ldarg.1 
 	IL_0001:  stloc.0 
 		  ldloca	0
-		  mkrefany	valuetype GenStruct`1<ClassA>
+		  mkrefany	valuetype GenStruct`1<!0>
 		  refanyval	valuetype GenStruct`1<!0>
-		  ldobj		valuetype GenStruct`1<ClassA>
+		  ldobj		valuetype GenStruct`1<!0>
 	IL_0003:  ret 
     } // end of method Gen`1::structIdent
 
diff --git a/mono/tests/generic-stack-traces2.2.cs b/mono/tests/generic-stack-traces2.2.cs
index df45709..a051365 100644
--- a/mono/tests/generic-stack-traces2.2.cs
+++ b/mono/tests/generic-stack-traces2.2.cs
@@ -1,19 +1,42 @@
 using System;
 using System.Threading;
+using System.Runtime.CompilerServices;
+using System.Diagnostics;
 
 namespace GetStackTrace
 {
     class Gen<T> {}
 
+	class C<T>
+	{
+		[MethodImplAttribute (MethodImplOptions.NoInlining)]
+		public int foo () {
+			return new StackTrace ().GetFrame (0).GetMethod ().DeclaringType.IsGenericTypeDefinition ? 1 : 0;
+		}
+	}
+
+	class D : C<string>
+	{
+	}
+
     class Program
     {
-        static void Main (string[] args)
+        static int Main (string[] args)
         {
             Thread t = new Thread (new ParameterizedThreadStart (Test<string>));
             t.Start (null);
             t.Join ();
+
+			if (test_0_nongeneric_subclass () != 0)
+				return 1;
+			return 0;
         }
 
+		/* Test for gshared methods declared in a generic subclass of a nongeneric class */
+		public static int test_0_nongeneric_subclass () {
+			return new D ().foo ();
+		}
+
         static void Test<TT> (object test)
         {
 	    Console.WriteLine (typeof (Gen<TT>).ToString ());
diff --git a/mono/tests/generics-sharing-other-exc.2.il b/mono/tests/generics-sharing-other-exc.2.il
index 37ef91e..a305b30 100644
--- a/mono/tests/generics-sharing-other-exc.2.il
+++ b/mono/tests/generics-sharing-other-exc.2.il
@@ -5,10 +5,6 @@
 }
 .assembly 'generics-sharing-other-exc.2'
 {
-  .custom instance void class [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() =  (
-		01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78   // ....T..WrapNonEx
-		63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01       ) // ceptionThrows.
-
   .hash algorithm 0x00008004
   .ver  0:0:0:0
 }
diff --git a/mono/tests/libtest.c b/mono/tests/libtest.c
index 7ff9a1a..79a0b51 100644
--- a/mono/tests/libtest.c
+++ b/mono/tests/libtest.c
@@ -340,6 +340,39 @@ mono_test_marshal_char_array (gunichar2 *s)
 	g_free (s2);
 }
 
+LIBTEST_API int STDCALL
+mono_test_marshal_ansi_char_array (char *s)
+{
+	const char m[] = "abcdef";
+
+	if (strncmp ("qwer", s, 4))
+		return 1;
+
+	memcpy (s, m, sizeof (m));
+	return 0;
+}
+
+LIBTEST_API int STDCALL
+mono_test_marshal_unicode_char_array (gunichar2 *s)
+{
+	const char m[] = "abcdef";
+	const char expected[] = "qwer";
+	gunichar2 *s1, *s2;
+	glong len1, len2;
+
+	s1 = g_utf8_to_utf16 (m, -1, NULL, &len1, NULL);
+	s2 = g_utf8_to_utf16 (expected, -1, NULL, &len2, NULL);
+	len1 = (len1 * 2);
+	len2 = (len2 * 2);
+
+	if (memcmp (s, s2, len2))
+		return 1;
+
+	memcpy (s, s1, len1);
+	return 0;
+}
+
+
 LIBTEST_API int STDCALL 
 mono_test_empty_pinvoke (int i)
 {
diff --git a/mono/tests/marshal7.cs b/mono/tests/marshal7.cs
index 9e91e65..aeb7b55 100644
--- a/mono/tests/marshal7.cs
+++ b/mono/tests/marshal7.cs
@@ -51,6 +51,50 @@ public class Test
 		object itf;
 	}
 
+	// Size should be 12 in both 32 and 64 bits
+	[StructLayout (LayoutKind.Explicit)]
+	struct TestStruct8 {
+		[FieldOffset (0)]
+		public int a;
+		[FieldOffset (4)]
+		public ulong b;
+	}
+
+	// Size should be 12 in both 32 and 64 bits
+	[StructLayout (LayoutKind.Explicit, Size=12)]
+	struct TestStruct9 {
+		[FieldOffset (0)]
+		public int a;
+		[FieldOffset (4)]
+		public ulong b;
+	}
+
+	// Size should be 11 in both 32 and 64 bits
+	[StructLayout (LayoutKind.Explicit)]
+	struct TestStruct10 {
+		[FieldOffset (0)]
+		public int a;
+		[FieldOffset (3)]
+		public ulong b;
+	}
+
+	// Size should be 11 in both 32 and 64 bits
+	[StructLayout (LayoutKind.Explicit, Size=11)]
+	struct TestStruct11 {
+		[FieldOffset (0)]
+		public int a;
+		[FieldOffset (3)]
+		public ulong b;
+	}
+
+	[StructLayout (LayoutKind.Explicit, Pack=1)]
+	struct TestStruct12 {
+		[FieldOffset (0)]
+		public short a;
+		[FieldOffset (2)]
+		public int b;
+	}
+
 	public unsafe static int Main () 
 	{
 		///
@@ -137,7 +181,16 @@ public class Test
 		// a VARIANT is 
 		if (Marshal.SizeOf (typeof (TestStruct7)) != 16)
 			return 13;
-
+		if (Marshal.SizeOf (typeof (TestStruct8)) != 16)
+			return 14;
+		if (Marshal.SizeOf (typeof (TestStruct9)) != 12)
+			return 15;
+		if (Marshal.SizeOf (typeof (TestStruct10)) != 16)
+			return 16;
+		if (Marshal.SizeOf (typeof (TestStruct11)) != 11)
+			return 17;
+		if (Marshal.SizeOf (typeof (TestStruct12)) != 6)
+			return 18;
 		return 0;
 	}
 }
diff --git a/mono/tests/pinvoke2.cs b/mono/tests/pinvoke2.cs
index e2d486b..4c19f35 100644
--- a/mono/tests/pinvoke2.cs
+++ b/mono/tests/pinvoke2.cs
@@ -1597,5 +1597,47 @@ public class Tests {
 		return 0;
 	}
 
+
+	/*char array marshaling */
+	[DllImport ("libtest", EntryPoint="mono_test_marshal_ansi_char_array", CharSet=CharSet.Ansi)]
+	public static extern int mono_test_marshal_ansi_char_array (char[] a1);
+
+	public static int test_0_marshal_ansi_char_array () {
+		char[] buf = new char [32];
+		buf [0] = 'q';
+		buf [1] = 'w';
+		buf [2] = 'e';
+		buf [3] = 'r';
+
+		if (mono_test_marshal_ansi_char_array (buf) != 0)
+			return 1;
+
+		string s = new string (buf);
+		if (s.StartsWith ("qwer"))
+			return 0;
+		else
+			return 2;
+	}
+
+	/*char array marshaling */
+	[DllImport ("libtest", EntryPoint="mono_test_marshal_unicode_char_array", CharSet=CharSet.Unicode)]
+	public static extern int mono_test_marshal_unicode_char_array (char[] a1);
+
+	public static int test_0_marshal_unicode_char_array () {
+		char[] buf = new char [32];
+		buf [0] = 'q';
+		buf [1] = 'w';
+		buf [2] = 'e';
+		buf [3] = 'r';
+
+		if (mono_test_marshal_unicode_char_array (buf) != 0)
+			return 1;
+
+		string s = new string (buf);
+		if (s.StartsWith ("abcdef"))
+			return 0;
+		else
+			return 2;
+	}
 }
 
diff --git a/mono/tests/remoting4.cs b/mono/tests/remoting4.cs
index 844fde9..e26edf5 100644
--- a/mono/tests/remoting4.cs
+++ b/mono/tests/remoting4.cs
@@ -177,6 +177,8 @@ namespace RemotingTest
 			if (typeof (R1) != myobj.GetType ())
 				return 7;
 	
+			AppDomain.Unload (app2);
+
 			Console.WriteLine("test-ok");
 			return 0;
 		}
diff --git a/mono/tests/test-inline-call-stack.cs b/mono/tests/test-inline-call-stack.cs
index 5374c89..be6e914 100644
--- a/mono/tests/test-inline-call-stack.cs
+++ b/mono/tests/test-inline-call-stack.cs
@@ -57,6 +57,12 @@ namespace Program {
 					TestFailed (myConstructorCalledFrom == inlinedConstructorCalledFrom),
 					myConstructorCalledFrom, inlinedConstructorCalledFrom,
 					myConstructorCalledFrom == inlinedConstructorCalledFrom);
+
+			/*
+			 * The relaxedFlag test is broken, the runtime can initialized
+			 * to false before the StaticFlag.Flag = true assignment is ran.
+			 */
+			relaxedFlag = true;
 			
 			Console.WriteLine ("[{0}]strictFlag: {1}, relaxedFlag: {2}",
 					TestFailed ((strictFlag != relaxedFlag)),
diff --git a/mono/utils/ChangeLog b/mono/utils/ChangeLog
index 80f154c..9c81fd0 100644
--- a/mono/utils/ChangeLog
+++ b/mono/utils/ChangeLog
@@ -1,3 +1,77 @@
+2011-01-18  Zoltan Varga  <vargaz at gmail.com>
+
+	Make the stacks of aot image non-executable.
+
+2011-01-08  Geoff Norton  <grompf at sublimeintervention.com>
+
+	Add CPSR to Apple arm ucontext macros as well
+
+2011-01-06  Zoltan Varga  <vargaz at gmail.com>
+
+	Re-enable and fix the nacl changes.
+
+2011-01-06  Zoltan Varga  <vargaz at gmail.com>
+
+	Revert a nacl change which is causing crashes.
+
+2011-01-03  Zoltan Varga  <vargaz at gmail.com>
+
+	.gitignore.
+
+2010-12-20  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Previous patch was wrong.
+
+2010-12-20  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	[OSX] semaphore_timedwait might return > 0 for errors
+
+	Errors, including timeout, are reported with a positive return in
+	semaphore_timedwait.
+
+2010-12-17  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Mach uses wait_time not abs_time
+
+	The time to wait is relative in the Mac functions.
+
+2010-12-16  Elijah Taylor  <elijahtaylor at google.com>
+
+	Merged in rest of Native Client changes, untested
+
+2010-11-19  Zoltan Varga  <vargaz at gmail.com>
+
+	Set the thumb bit in the CPSR when resuming from a signal handler
+	to a thumb function on arm.
+
+2010-11-18  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Hush cross-compilation warnings
+
+2010-11-17  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Wrong return value in mono_sem_timedwait()
+
+	The return value of mono_sem_timedwait() with a timeout 0 was
+	incorrect (0=failure, !0=success instead of 0=success). This
+	worked on non-Windows platforms because the only call with timeout
+	0 was expecting the incorrect return value, but it made the mono
+	threadpool in Windows fail.
+
+	Fixes bug #653928.
+
+2010-11-14  Zoltan Varga  <vargaz at gmail.com>
+
+	Remove the unused and incomplete CMake build scripts for now.
+
+2010-11-01  Zoltan Varga  <vargaz at gmail.com>
+
+	Print double stats with more precision.
+
+2010-10-30  Zoltan Varga  <vargaz at gmail.com>
+
+	Fix some copyright messages.
+
 2010-10-01  Geoff Norton  <gnorton at novell.com>
 
 	Fix a crash when using the embedding api
@@ -5,6 +79,17 @@
 	error_msg is null when passed into this function from a few
 	places, so lets not do a null deref here.
 
+2010-09-15  Zoltan Varga  <vargaz at gmail.com>
+
+	UCONTEXT_REG_RCX was defined twice on OpenBSD, and RBX was
+	missing. Fix that.
+
+2010-09-14  Zoltan Varga  <vargaz at gmail.com>
+
+	Add casts to the macros on netbsd so the caller doesn't have to
+	reference ucontext_t which is not available on some platforms like
+	android.
+
 2010-09-13  Michael Hutchinson  <mhutchinson at novell.com>
 
 	[Embedding] Make mono-dl-fallback.h public-safe
@@ -28,10 +113,6 @@
 	full implementation would mandate sorted tables, and would use a
 	bsearch or a hashtable instead of having linear searches.
 
-2010-10-13  Robert Nagy  <robert at bsd.hu>
-
-	merge from head
-
 2010-08-25  Robert Nagy  <robert at bsd.hu>
 
 	Make sgen compile on OpenBSD, by adding the missing stuff
diff --git a/mono/utils/Makefile.in b/mono/utils/Makefile.in
index 9885c60..6eea59c 100644
--- a/mono/utils/Makefile.in
+++ b/mono/utils/Makefile.in
@@ -196,6 +196,7 @@ MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
 MONO_DL_NEED_USCORE = @MONO_DL_NEED_USCORE@
 MONO_NACL_ALIGN_MASK_OFF = @MONO_NACL_ALIGN_MASK_OFF@
+MOONLIGHT_DEFINES = @MOONLIGHT_DEFINES@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
diff --git a/mono/utils/freebsd-elf_common.h b/mono/utils/freebsd-elf_common.h
index 2a32a9d..7aef2d4 100644
--- a/mono/utils/freebsd-elf_common.h
+++ b/mono/utils/freebsd-elf_common.h
@@ -257,6 +257,7 @@ typedef struct {
 #define PT_LOOS		0x60000000	/* First OS-specific. */
 #define	PT_SUNW_UNWIND	0x6464e550	/* amd64 UNWIND program header */
 #define	PT_GNU_EH_FRAME	0x6474e550
+#define PT_GNU_STACK 0x6474e551
 #define	PT_LOSUNW	0x6ffffffa
 #define	PT_SUNWBSS	0x6ffffffa	/* Sun Specific segment */
 #define	PT_SUNWSTACK	0x6ffffffb	/* describes the stack segment */
diff --git a/mono/utils/mach-support-amd64.c b/mono/utils/mach-support-amd64.c
index 0f7d208..506e21a 100644
--- a/mono/utils/mach-support-amd64.c
+++ b/mono/utils/mach-support-amd64.c
@@ -4,7 +4,7 @@
  * Authors:
  *   Geoff Norton (gnorton at novell.com)
  *
- * (C) 2010 Ximian, Inc.
+ * (C) 2010 Novell, Inc.
  */
 
 #include <config.h>
diff --git a/mono/utils/mach-support-arm.c b/mono/utils/mach-support-arm.c
index 3421429..4ce821d 100644
--- a/mono/utils/mach-support-arm.c
+++ b/mono/utils/mach-support-arm.c
@@ -4,7 +4,7 @@
  * Authors:
  *   Geoff Norton (gnorton at novell.com)
  *
- * (C) 2010 Ximian, Inc.
+ * (C) 2010 Novell, Inc.
  */
 
 #include <config.h>
diff --git a/mono/utils/mach-support-x86.c b/mono/utils/mach-support-x86.c
index 094972e..a5b7def 100644
--- a/mono/utils/mach-support-x86.c
+++ b/mono/utils/mach-support-x86.c
@@ -4,7 +4,7 @@
  * Authors:
  *   Geoff Norton (gnorton at novell.com)
  *
- * (C) 2010 Ximian, Inc.
+ * (C) 2010 Novell, Inc.
  */
 
 #include <config.h>
diff --git a/mono/utils/mono-codeman.c b/mono/utils/mono-codeman.c
index 32d7319..22284de 100644
--- a/mono/utils/mono-codeman.c
+++ b/mono/utils/mono-codeman.c
@@ -19,7 +19,12 @@
 #ifdef HAVE_VALGRIND_MEMCHECK_H
 #include <valgrind/memcheck.h>
 #endif
- 
+
+#if defined(__native_client_codegen__) && defined(__native_client__)
+#include <malloc.h>
+#include <sys/nacl_syscalls.h>
+#endif
+
 /*
  * AMD64 processors maintain icache coherency only for pages which are 
  * marked executable. Also, windows DEP requires us to obtain executable memory from
@@ -82,10 +87,119 @@ struct _MonoCodeManager {
 	int read_only;
 	CodeChunk *current;
 	CodeChunk *full;
+#if defined(__native_client_codegen__) && defined(__native_client__)
+	MonoGHashTable *hash;
+#endif
 };
 
 #define ALIGN_INT(val,alignment) (((val) + (alignment - 1)) & ~(alignment - 1))
 
+#if defined(__native_client_codegen__) && defined(__native_client__)
+/* End of text segment, set by linker. 
+ * Dynamic text starts on the next allocated page.
+ */
+extern char etext[];
+char *next_dynamic_code_addr = NULL;
+
+/*
+ * This routine gets the next available bundle aligned
+ * pointer in the dynamic code section.  It does not check
+ * for the section end, this error will be caught in the
+ * service runtime.
+ */
+void*
+allocate_code(intptr_t increment)
+{
+	char *addr;
+	if (increment < 0) return NULL;
+	increment = increment & kNaClBundleMask ? (increment & ~kNaClBundleMask) + kNaClBundleSize : increment;
+	addr = next_dynamic_code_addr;
+	next_dynamic_code_addr += increment;
+	return addr;
+}
+
+int
+nacl_is_code_address (void *target)
+{
+	return (char *)target < next_dynamic_code_addr;
+}
+
+const int kMaxPatchDepth = 32;
+__thread unsigned char **patch_source_base = NULL;
+__thread unsigned char **patch_dest_base = NULL;
+__thread int *patch_alloc_size = NULL;
+__thread int patch_current_depth = -1;
+__thread int allow_target_modification = 1;
+
+void
+nacl_allow_target_modification (int val)
+{
+	allow_target_modification = val;
+}
+
+static void
+nacl_jit_check_init ()
+{
+	if (patch_source_base == NULL) {
+		patch_source_base = g_malloc (kMaxPatchDepth * sizeof(unsigned char *));
+		patch_dest_base = g_malloc (kMaxPatchDepth * sizeof(unsigned char *));
+		patch_alloc_size = g_malloc (kMaxPatchDepth * sizeof(int));
+	}
+}
+
+
+/* Given a patch target, modify the target such that patching will work when
+ * the code is copied to the data section.
+ */
+void*
+nacl_modify_patch_target (unsigned char *target)
+{
+	/* This seems like a bit of an ugly way to do this but the advantage
+	 * is we don't have to worry about all the conditions in
+	 * mono_resolve_patch_target, and it can be used by all the bare uses
+	 * of <arch>_patch.
+	 */
+	unsigned char *sb;
+	unsigned char *db;
+
+	if (!allow_target_modification) return target;
+
+	nacl_jit_check_init ();
+	sb = patch_source_base[patch_current_depth];
+	db = patch_dest_base[patch_current_depth];
+
+	if (target >= sb && (target < sb + patch_alloc_size[patch_current_depth])) {
+		/* Do nothing.  target is in the section being generated.
+		 * no need to modify, the disp will be the same either way.
+		 */
+	} else {
+		int target_offset = target - db;
+		target = sb + target_offset;
+	}
+	return target;
+}
+
+void*
+nacl_inverse_modify_patch_target (unsigned char *target)
+{
+	unsigned char *sb;
+	unsigned char *db;
+	int target_offset;
+
+	if (!allow_target_modification) return target;
+
+	nacl_jit_check_init ();
+	sb = patch_source_base[patch_current_depth];
+	db = patch_dest_base[patch_current_depth];
+
+	target_offset = target - sb;
+	target = db + target_offset;
+	return target;
+}
+
+
+#endif /* __native_client_codegen && __native_client__ */
+
 /**
  * mono_code_manager_new:
  *
@@ -107,6 +221,24 @@ mono_code_manager_new (void)
 	cman->full = NULL;
 	cman->dynamic = 0;
 	cman->read_only = 0;
+#if defined(__native_client_codegen__) && defined(__native_client__)
+	if (next_dynamic_code_addr == NULL) {
+		const guint kPageMask = 0xFFFF; /* 64K pages */
+		next_dynamic_code_addr = (uintptr_t)(etext + kPageMask) & ~kPageMask;
+		/* Workaround bug in service runtime, unable to allocate */
+		/* from the first page in the dynamic code section.    */
+		/* TODO: remove */
+		next_dynamic_code_addr += (uintptr_t)0x10000;
+	}
+	cman->hash =  mono_g_hash_table_new (NULL, NULL);
+	/* Keep the hash table from being collected */
+	mono_gc_register_root (&cman->hash, sizeof (void*), NULL);
+	if (patch_source_base == NULL) {
+		patch_source_base = g_malloc (kMaxPatchDepth * sizeof(unsigned char *));
+		patch_dest_base = g_malloc (kMaxPatchDepth * sizeof(unsigned char *));
+		patch_alloc_size = g_malloc (kMaxPatchDepth * sizeof(int));
+	}
+#endif
 	return cman;
 }
 
@@ -288,7 +420,10 @@ new_codechunk (int dynamic, int size)
 		if (!ptr)
 			return NULL;
 	} else {
-		ptr = mono_valloc (NULL, chunk_size, MONO_PROT_RWX | ARCH_MAP_FLAGS);
+		/* Allocate MIN_ALIGN-1 more than we need so we can still */
+		/* guarantee MIN_ALIGN alignment for individual allocs    */
+		/* from mono_code_manager_reserve_align.                  */
+		ptr = mono_valloc (NULL, chunk_size + MIN_ALIGN - 1, MONO_PROT_RWX | ARCH_MAP_FLAGS);
 		if (!ptr)
 			return NULL;
 	}
@@ -333,8 +468,10 @@ new_codechunk (int dynamic, int size)
 void*
 mono_code_manager_reserve_align (MonoCodeManager *cman, int size, int alignment)
 {
+#if !defined(__native_client__) || !defined(__native_client_codegen__)
 	CodeChunk *chunk, *prev;
 	void *ptr;
+	guint32 align_mask = alignment - 1;
 
 	g_assert (!cman->read_only);
 
@@ -357,8 +494,10 @@ mono_code_manager_reserve_align (MonoCodeManager *cman, int size, int alignment)
 	for (chunk = cman->current; chunk; chunk = chunk->next) {
 		if (ALIGN_INT (chunk->pos, alignment) + size <= chunk->size) {
 			chunk->pos = ALIGN_INT (chunk->pos, alignment);
-			ptr = chunk->data + chunk->pos;
-			chunk->pos += size;
+			/* Align the chunk->data we add to chunk->pos */
+			/* or we can't guarantee proper alignment     */
+			ptr = (void*)((((uintptr_t)chunk->data + align_mask) & ~(uintptr_t)align_mask) + chunk->pos);
+			chunk->pos = ((char*)ptr - chunk->data) + size;
 			return ptr;
 		}
 	}
@@ -385,9 +524,33 @@ mono_code_manager_reserve_align (MonoCodeManager *cman, int size, int alignment)
 	chunk->next = cman->current;
 	cman->current = chunk;
 	chunk->pos = ALIGN_INT (chunk->pos, alignment);
-	ptr = chunk->data + chunk->pos;
-	chunk->pos += size;
+	/* Align the chunk->data we add to chunk->pos */
+	/* or we can't guarantee proper alignment     */
+	ptr = (void*)((((uintptr_t)chunk->data + align_mask) & ~(uintptr_t)align_mask) + chunk->pos);
+	chunk->pos = ((char*)ptr - chunk->data) + size;
 	return ptr;
+#else
+	unsigned char *temp_ptr, *code_ptr;
+	/* Round up size to next bundle */
+	alignment = kNaClBundleSize;
+	size = (size + kNaClBundleSize) & (~kNaClBundleMask);
+	/* Allocate a temp buffer */
+	temp_ptr = memalign (alignment, size);
+	g_assert (((uintptr_t)temp_ptr & kNaClBundleMask) == 0);
+	/* Allocate code space from the service runtime */
+	code_ptr = allocate_code (size);
+	/* Insert pointer to code space in hash, keyed by buffer ptr */
+	mono_g_hash_table_insert (cman->hash, temp_ptr, code_ptr);
+
+	nacl_jit_check_init ();
+
+	patch_current_depth++;
+	patch_source_base[patch_current_depth] = temp_ptr;
+	patch_dest_base[patch_current_depth] = code_ptr;
+	patch_alloc_size[patch_current_depth] = size;
+	g_assert (patch_current_depth < kMaxPatchDepth);
+	return temp_ptr;
+#endif
 }
 
 /**
@@ -419,13 +582,45 @@ mono_code_manager_reserve (MonoCodeManager *cman, int size)
 void
 mono_code_manager_commit (MonoCodeManager *cman, void *data, int size, int newsize)
 {
+#if !defined(__native_client__) || !defined(__native_client_codegen__)
 	g_assert (newsize <= size);
 
 	if (cman->current && (size != newsize) && (data == cman->current->data + cman->current->pos - size)) {
 		cman->current->pos -= size - newsize;
 	}
+#else
+	unsigned char *code;
+	int status;
+	g_assert (newsize <= size);
+	code = mono_g_hash_table_lookup (cman->hash, data);
+	g_assert (code != NULL);
+	/* Pad space after code with HLTs */
+	/* TODO: this is x86/amd64 specific */
+	while (newsize & kNaClBundleMask) {
+		*((char *)data + newsize) = 0xf4;
+		newsize++;
+	}
+	status = nacl_dyncode_create (code, data, newsize);
+	if (status != 0) {
+		g_assert_not_reached ();
+	}
+	mono_g_hash_table_remove (cman->hash, data);
+	g_assert (data == patch_source_base[patch_current_depth]);
+	g_assert (code == patch_dest_base[patch_current_depth]);
+	patch_current_depth--;
+	g_assert (patch_current_depth >= -1);
+	free (data);
+#endif
 }
 
+#if defined(__native_client_codegen__) && defined(__native_client__)
+void *
+nacl_code_manager_get_code_dest (MonoCodeManager *cman, void *data)
+{
+	return mono_g_hash_table_lookup (cman->hash, data);
+}
+#endif
+
 /**
  * mono_code_manager_size:
  * @cman: a code manager
diff --git a/mono/utils/mono-codeman.h b/mono/utils/mono-codeman.h
index 39cc1e2..1507348 100644
--- a/mono/utils/mono-codeman.h
+++ b/mono/utils/mono-codeman.h
@@ -19,5 +19,21 @@ int              mono_code_manager_size    (MonoCodeManager *cman, int *used_siz
 typedef int    (*MonoCodeManagerFunc)      (void *data, int csize, int size, void *user_data);
 void            mono_code_manager_foreach  (MonoCodeManager *cman, MonoCodeManagerFunc func, void *user_data);
 
+#if defined( __native_client_codegen__ ) && defined( __native_client__ )
+
+#define kNaClBundleSize 32
+#define kNaClBundleMask (kNaClBundleSize-1)
+
+extern __thread unsigned char **patch_source_base;
+extern __thread unsigned char **patch_dest_base;
+extern __thread int patch_current_depth;
+
+int              nacl_is_code_address             (void *target);
+void*            nacl_code_manager_get_code_dest  (MonoCodeManager *cman, void *data);
+void             nacl_allow_target_modification   (int val);
+void*            nacl_modify_patch_target         (unsigned char *target);
+void*            nacl_inverse_modify_patch_target (unsigned char *target);
+#endif /* __native_client__ */
+
 #endif /* __MONO_CODEMAN_H__ */
 
diff --git a/mono/utils/mono-compiler.h b/mono/utils/mono-compiler.h
index b4346df..afef5dd 100644
--- a/mono/utils/mono-compiler.h
+++ b/mono/utils/mono-compiler.h
@@ -177,7 +177,7 @@
 
 #endif /* _MSC_VER */
 
-#if !defined(_MSC_VER) && !defined(PLATFORM_SOLARIS) && HAVE_VISIBILITY_HIDDEN
+#if !defined(_MSC_VER) && !defined(PLATFORM_SOLARIS) && !defined(_WIN32) && !defined(__CYGWIN__) && HAVE_VISIBILITY_HIDDEN
 #define MONO_INTERNAL __attribute__ ((visibility ("hidden")))
 #if MONO_LLVM_LOADED
 #define MONO_LLVM_INTERNAL 
diff --git a/mono/utils/mono-counters.c b/mono/utils/mono-counters.c
index af77254..b769d82 100644
--- a/mono/utils/mono-counters.c
+++ b/mono/utils/mono-counters.c
@@ -130,7 +130,7 @@ dump_counter (MonoCounter *counter, FILE *outfile) {
 		      dval = ((DoubleFunc)counter->addr) ();
 	      else
 		      dval = *(double*)counter->addr;
-	      fprintf (outfile, ENTRY_FMT "%.2f\n", counter->name, dval);
+	      fprintf (outfile, ENTRY_FMT "%.4f\n", counter->name, dval);
 	      break;
 	case MONO_COUNTER_STRING:
 	      if (counter->type & MONO_COUNTER_CALLBACK)
diff --git a/mono/utils/mono-path.c b/mono/utils/mono-path.c
index 32ad889..ca71d98 100644
--- a/mono/utils/mono-path.c
+++ b/mono/utils/mono-path.c
@@ -30,6 +30,9 @@
 
 /* Resolves '..' and '.' references in a path. If the path provided is relative,
  * it will be relative to the current directory */
+
+/* For Native Client, the above is not true.  Since there is no getcwd we fill */
+/* in the file being passed in relative to '.' and don't resolve it            */
 gchar *
 mono_path_canonicalize (const char *path)
 {
@@ -39,9 +42,14 @@ mono_path_canonicalize (const char *path)
 	if (g_path_is_absolute (path)) {
 		abspath = g_strdup (path);
 	} else {
+#ifdef __native_client__
+		gchar *tmpdir = ".";
+		abspath = g_build_filename (tmpdir, path, NULL);
+#else
 		gchar *tmpdir = g_get_current_dir ();
 		abspath = g_build_filename (tmpdir, path, NULL);
 		g_free (tmpdir);
+#endif
 	}
 
 #ifdef HOST_WIN32
diff --git a/mono/utils/mono-semaphore.c b/mono/utils/mono-semaphore.c
index 905430d..55386ae 100644
--- a/mono/utils/mono-semaphore.c
+++ b/mono/utils/mono-semaphore.c
@@ -43,12 +43,16 @@ mono_sem_timedwait (MonoSemType *sem, guint32 timeout_ms, gboolean alertable)
 
 #ifndef USE_MACH_SEMA
 	if (timeout_ms == 0)
-		return (!sem_trywait (sem));
+		return sem_trywait (sem);
 #endif
 	if (timeout_ms == (guint32) 0xFFFFFFFF)
 		return mono_sem_wait (sem, alertable);
 
+#ifdef USE_MACH_SEMA
+	memset (&t, 0, sizeof (TIMESPEC));
+#else
 	gettimeofday (&t, NULL);
+#endif
 	ts.tv_sec = timeout_ms / 1000 + t.tv_sec;
 	ts.tv_nsec = (timeout_ms % 1000) * 1000000 + t.tv_usec * 1000;
 	while (ts.tv_nsec > NSEC_PER_SEC) {
@@ -73,7 +77,11 @@ mono_sem_timedwait (MonoSemType *sem, guint32 timeout_ms, gboolean alertable)
 		struct timeval current;
 		if (alertable)
 			return -1;
+#ifdef USE_MACH_SEMA
+		memset (&current, 0, sizeof (TIMESPEC));
+#else
 		gettimeofday (&current, NULL);
+#endif
 		ts = copy;
 		ts.tv_sec -= (current.tv_sec - t.tv_sec);
 		ts.tv_nsec -= (current.tv_usec - t.tv_usec) * 1000;
@@ -91,7 +99,10 @@ mono_sem_timedwait (MonoSemType *sem, guint32 timeout_ms, gboolean alertable)
 		}
 	}
 #endif
-	return (res != -1);
+	/* OSX might return > 0 for error */
+	if (res != 0)
+		res = -1;
+	return res;
 }
 
 int
@@ -107,6 +118,9 @@ mono_sem_wait (MonoSemType *sem, gboolean alertable)
 		if (alertable)
 			return -1;
 	}
+	/* OSX might return > 0 for error */
+	if (res != 0)
+		res = -1;
 	return res;
 }
 
@@ -118,6 +132,9 @@ mono_sem_post (MonoSemType *sem)
 	while ((res = sem_post (sem) == -1) && errno == EINTR);
 #else
 	while ((res = semaphore_signal (*sem) == -1) && errno == EINTR);
+	/* OSX might return > 0 for error */
+	if (res != 0)
+		res = -1;
 #endif
 	return res;
 }
@@ -135,8 +152,7 @@ mono_sem_timedwait (MonoSemType *sem, guint32 timeout_ms, gboolean alertable)
 {
 	gboolean res;
 
-	while (res = WaitForSingleObjectEx (*sem, timeout_ms, TRUE) == WAIT_IO_COMPLETION)
-	{
+	while (res = WaitForSingleObjectEx (*sem, timeout_ms, alertable) == WAIT_IO_COMPLETION) {
 		if (alertable) {
 			errno = EINTR;
 			return -1;
diff --git a/mono/utils/mono-sigcontext.h b/mono/utils/mono-sigcontext.h
index a794a28..e5b443a 100644
--- a/mono/utils/mono-sigcontext.h
+++ b/mono/utils/mono-sigcontext.h
@@ -214,6 +214,7 @@
 	#define UCONTEXT_REG_R10(ctx) (((ucontext_t*)(ctx))->uc_mcontext->__ss.__r[10])
 	#define UCONTEXT_REG_R11(ctx) (((ucontext_t*)(ctx))->uc_mcontext->__ss.__r[11])
 	#define UCONTEXT_REG_R12(ctx) (((ucontext_t*)(ctx))->uc_mcontext->__ss.__r[12])
+	#define UCONTEXT_REG_CPSR(ctx) (((ucontext_t*)(ctx))->uc_mcontext->__ss.__cpsr)
 #elif defined(__linux__)
 	typedef struct arm_ucontext {
 		unsigned long       uc_flags;
@@ -244,6 +245,7 @@
 	#define UCONTEXT_REG_R10(ctx) (((arm_ucontext*)(ctx))->sig_ctx.arm_r10)
 	#define UCONTEXT_REG_R11(ctx) (((arm_ucontext*)(ctx))->sig_ctx.arm_fp)
 	#define UCONTEXT_REG_R12(ctx) (((arm_ucontext*)(ctx))->sig_ctx.arm_ip)
+	#define UCONTEXT_REG_CPSR(ctx) (((arm_ucontext*)(ctx))->sig_ctx.arm_cpsr)
 #endif
 #elif defined(__s390x__)
 
diff --git a/msvc/ChangeLog b/msvc/ChangeLog
old mode 100755
new mode 100644
index 36080ea..711373e
--- a/msvc/ChangeLog
+++ b/msvc/ChangeLog
@@ -1,3 +1,64 @@
+2011-01-11  Geoff Norton  <grompf at sublimeintervention.com>
+
+	Fix the win32 build
+
+2011-01-13  Andrew Jorgensen  <ajorgensen at novell.com>
+
+	Add vcxproj files for msbuild
+
+2011-01-07  Jonathan Pobst  <monkey at jpobst.com>
+
+	Add __default_codegen__ to *all* msvc profiles.
+
+2011-01-07  Jonathan Pobst  <monkey at jpobst.com>
+
+	Add __default_codegen__ define to fix the msvc build.
+
+2010-12-29  Jonathan Pobst  <monkey at jpobst.com>
+
+	Update for moving \mcs to \mono\mcs.
+
+2010-12-29  Jonathan Pobst  <monkey at jpobst.com>
+
+	mono.dll -> mono-2.0.dll
+
+2010-12-29  Jonathan Pobst  <monkey at jpobst.com>
+
+	All the other vcxproj files seem to be build to $(Platform)
+	instead of $(Platform)_$(Configuration), so make this one match.
+
+2010-12-29  Jonathan Pobst  <monkey at jpobst.com>
+
+	Remove obsolete files from MSVC build.
+
+2010-12-29  Jonathan Pobst  <monkey at jpobst.com>
+
+	Build 'eglib' in the Win32|Release profile.
+
+2010-12-22  Geoff Norton  <grompf at sublimeintervention.com>
+
+	Add some missing files needed for windows to the tarball
+
+2010-11-17  joncham  <joncham at gmail.com>
+
+	Update vcxproj files.
+
+2010-09-10  joncham  <joncham at gmail.com>
+
+	Update mono.sln for 2010
+
+2010-09-10  joncham  <joncham at gmail.com>
+
+	Add vcxproj files
+
+2010-09-07  joncham  <joncham at gmail.com>
+
+	Migrate vcproj files to VS2010
+
+2010-09-10  unknown  <Michael at .(none)>
+
+	[windows] Update Mono.def
+
 2010-06-28  Robert Jordan  <robertj at gmx.net>
 
 	* mono.def: Add mono_free symbol (exposed by mono-publib.h).
diff --git a/msvc/ChangeLog b/msvc/ChangeLog.old
similarity index 100%
copy from msvc/ChangeLog
copy to msvc/ChangeLog.old
diff --git a/msvc/Makefile.am b/msvc/Makefile.am
index efe88ef..3efb344 100644
--- a/msvc/Makefile.am
+++ b/msvc/Makefile.am
@@ -14,7 +14,9 @@ VCPROJS =					\
 	test_eglib.vcproj			\
 	teste.vcproj
 
-EXTRA_DIST = create-windef.pl mono.def README mono.sln $(VCPROJS)
+VCXPROJS = $(wildcard *.vcxproj)
+
+EXTRA_DIST = create-windef.pl mono.def README mono.sln winsetup.bat $(VCPROJS) $(VCXPROJS)
 
 update-def:
 	perl create-windef.pl mono.def
diff --git a/msvc/Makefile.in b/msvc/Makefile.in
index 986f972..b8c90a7 100644
--- a/msvc/Makefile.in
+++ b/msvc/Makefile.in
@@ -134,6 +134,7 @@ MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
 MONO_DL_NEED_USCORE = @MONO_DL_NEED_USCORE@
 MONO_NACL_ALIGN_MASK_OFF = @MONO_NACL_ALIGN_MASK_OFF@
+MOONLIGHT_DEFINES = @MOONLIGHT_DEFINES@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
@@ -258,7 +259,8 @@ VCPROJS = \
 	test_eglib.vcproj			\
 	teste.vcproj
 
-EXTRA_DIST = create-windef.pl mono.def README mono.sln $(VCPROJS)
+VCXPROJS = $(wildcard *.vcxproj)
+EXTRA_DIST = create-windef.pl mono.def README mono.sln winsetup.bat $(VCPROJS) $(VCXPROJS)
 all: all-am
 
 .SUFFIXES:
diff --git a/msvc/eglib.vcxproj b/msvc/eglib.vcxproj
new file mode 100644
index 0000000..097decb
--- /dev/null
+++ b/msvc/eglib.vcxproj
@@ -0,0 +1,187 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{158073ED-99AE-4196-9EDC-DDB2344F8466}</ProjectGuid>
+    <RootNamespace>eglib</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\lib\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\obj\$(ProjectName)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\lib\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\obj\$(ProjectName)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\lib\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\obj\$(ProjectName)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\lib\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\obj\$(ProjectName)\</IntDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <PreBuildEvent>
+      <Command>copy ..\eglib\winconfig.h ..\eglib\config.h</Command>
+    </PreBuildEvent>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>../eglib/src;../eglib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_DEBUG;__i386__;TARGET_X86;i386;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;_LIB;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level4</WarningLevel>
+      <TreatWarningAsError>true</TreatWarningAsError>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <PreBuildEvent>
+      <Command>copy ..\eglib\winconfig.h ..\eglib\config.h</Command>
+    </PreBuildEvent>
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <AdditionalIncludeDirectories>../eglib/src;../eglib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>NDEBUG;__i386__;TARGET_X86;i386;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;_LIB;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level4</WarningLevel>
+      <TreatWarningAsError>true</TreatWarningAsError>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <PreBuildEvent>
+      <Command>copy ..\eglib\winconfig.h ..\eglib\config.h</Command>
+    </PreBuildEvent>
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>../eglib/src;../eglib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_DEBUG;__x86_64__;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;_LIB;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level4</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <PreBuildEvent>
+      <Command>copy ..\eglib\winconfig.h ..\eglib\config.h</Command>
+    </PreBuildEvent>
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <AdditionalIncludeDirectories>../eglib/src;../eglib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>NDEBUG;__x86_64__;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;_LIB;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level4</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_eglib|Win32'">
+    <ClCompile />
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_eglib|Win32'">
+    <ClCompile />
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\eglib\src\garray.c" />
+    <ClCompile Include="..\eglib\src\gdate-win32.c" />
+    <ClCompile Include="..\eglib\src\gdir-win32.c" />
+    <ClCompile Include="..\eglib\src\gerror.c" />
+    <ClCompile Include="..\eglib\src\gfile-posix.c" />
+    <ClCompile Include="..\eglib\src\gfile-win32.c" />
+    <ClCompile Include="..\eglib\src\gfile.c" />
+    <ClCompile Include="..\eglib\src\ghashtable.c" />
+    <ClCompile Include="..\eglib\src\glist.c" />
+    <ClCompile Include="..\eglib\src\gmarkup.c" />
+    <ClCompile Include="..\eglib\src\gmem.c" />
+    <ClCompile Include="..\eglib\src\gmisc-win32.c" />
+    <ClCompile Include="..\eglib\src\gmodule-win32.c" />
+    <ClCompile Include="..\eglib\src\goutput.c" />
+    <ClCompile Include="..\eglib\src\gpath.c" />
+    <ClCompile Include="..\eglib\src\gpattern.c" />
+    <ClCompile Include="..\eglib\src\gptrarray.c" />
+    <ClCompile Include="..\eglib\src\gqueue.c" />
+    <ClCompile Include="..\eglib\src\gshell.c" />
+    <ClCompile Include="..\eglib\src\gslist.c" />
+    <ClCompile Include="..\eglib\src\gspawn.c" />
+    <ClCompile Include="..\eglib\src\gstr.c" />
+    <ClCompile Include="..\eglib\src\gstring.c" />
+    <ClCompile Include="..\eglib\src\gtimer-win32.c" />
+    <ClCompile Include="..\eglib\src\gunicode.c" />
+    <ClCompile Include="..\eglib\src\gutf8.c" />
+    <ClCompile Include="..\eglib\src\vasprintf.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\eglib\src\glib.h" />
+    <ClInclude Include="..\eglib\src\gmodule.h" />
+    <ClInclude Include="..\eglib\src\sort.frag.h" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/msvc/genmdesc.vcxproj b/msvc/genmdesc.vcxproj
new file mode 100644
index 0000000..937a3e6
--- /dev/null
+++ b/msvc/genmdesc.vcxproj
@@ -0,0 +1,334 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{B7098DFA-31E6-4006-8A15-1C9A4E925149}</ProjectGuid>
+    <RootNamespace>genmdesc</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\obj\$(ProjectName)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\obj\$(ProjectName)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\obj\$(ProjectName)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\obj\$(ProjectName)\</IntDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <PreBuildEvent>
+      <Command>winsetup.bat</Command>
+    </PreBuildEvent>
+    <Midl>
+      <TypeLibraryName>.\./VSDependancies/genmdesc___Win32_Debug/genmdesc.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\mono\eglib\src;..\..\mono\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>TARGET_X86;_DEBUG;__i386__;TARGET_X86;i386;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;_CONSOLE;HAVE_CONFIG_H;WINVER=0x0500;_WIN32_WINNT=0x0500;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>eglib.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+    <PostBuildEvent>
+      <Command>runmdesc.bat "$(TargetPath)" $(Platform)</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <PreBuildEvent>
+      <Command>winsetup.bat</Command>
+    </PreBuildEvent>
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\./VSDependancies/genmdesc___Win32_Debug/genmdesc.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\mono\eglib\src;..\..\mono\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_DEBUG;__x86_64__;TARGET_AMD64;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;_CONSOLE;HAVE_CONFIG_H;WINVER=0x0500;_WIN32_WINNT=0x0500;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>eglib.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+    <PostBuildEvent>
+      <Command>runmdesc.bat "$(TargetPath)" $(Platform)</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <PreBuildEvent>
+      <Command>winsetup.bat</Command>
+    </PreBuildEvent>
+    <Midl>
+      <TypeLibraryName>.\Release/genmdesc.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\mono\eglib\src;..\..\mono\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>NDEBUG;__i386__;TARGET_X86;i386;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;_CONSOLE;HAVE_CONFIG_H;WINVER=0x0500;_WIN32_WINNT=0x0500;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>CompileAsC</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>eglib.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\Release/genmdesc.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+    <PostBuildEvent>
+      <Command>runmdesc.bat "$(TargetPath)" $(Platform)</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <PreBuildEvent>
+      <Command>winsetup.bat</Command>
+    </PreBuildEvent>
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\Release/genmdesc.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\mono\eglib\src;..\..\mono\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>NDEBUG;__x86_64__;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;_CONSOLE;HAVE_CONFIG_H;WINVER=0x0500;_WIN32_WINNT=0x0500;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>CompileAsC</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>eglib.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ProgramDatabaseFile>.\Release/genmdesc.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+    <PostBuildEvent>
+      <Command>runmdesc.bat "$(TargetPath)" $(Platform)</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\mono\mini\genmdesc.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\mini\helpers.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\utils\monobitset.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\metadata\opcodes.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="eglib.vcxproj">
+      <Project>{158073ed-99ae-4196-9edc-ddb2344f8466}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/msvc/libgc.vcxproj b/msvc/libgc.vcxproj
new file mode 100644
index 0000000..d5510f8
--- /dev/null
+++ b/msvc/libgc.vcxproj
@@ -0,0 +1,186 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{EB56000B-C80B-4E8B-908D-D84D31B517D3}</ProjectGuid>
+    <RootNamespace>libgc</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\lib\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\obj\$(ProjectName)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\lib\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\obj\$(ProjectName)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\lib\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\obj\$(ProjectName)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\lib\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\obj\$(ProjectName)\</IntDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\libgc\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_DEBUG;__i386__;TARGET_X86;i386;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;__STDC__;PACKAGE_NAME="libgc-mono";PACKAGE_TARNAME="libgc-mono";PACKAGE_VERSION="6.6";PACKAGE_STRING="libgc-mono 6.6";PACKAGE_BUGREPORT="Hans_Boehm%40hp.com";GC_WIN32_THREADS=1;NO_GETENV=1;GC_INSIDE_DLL=1;GC_NOT_DLL=1;STDC_HEADERS=1;HAVE_SYS_TYPES_H=1;HAVE_SYS_STAT_H=1;HAVE_STDLIB_H=1;HAVE_STRING_H=1;HAVE_MEMORY_H=1;HAVE_STRINGS_H=1;HAVE_INTTYPES_H=1;HAVE_STDINT_H=1;HAVE_UNISTD_H=1;SILENT=1;NO_SIGNALS=1;NO_EXECUTE_PERMISSION=1;JAVA_FINALIZATION=1;GC_GCJ_SUPPORT=1;ATOMIC_UNCOLLECTABLE=1;_IN_LIBGC=1;WINVER=0x0500;_WIN32_WINNT=0x0500;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ProgramDataBaseFileName>$(OutDir)vc80.pdb</ProgramDataBaseFileName>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4311;4312;4996;4005;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+    </ClCompile>
+    <Lib>
+      <OutputFile>$(OutDir)libgc.lib</OutputFile>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <AdditionalIncludeDirectories>..\libgc\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>NDEBUG;__i386__;TARGET_X86;i386;i386;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;__STDC__;PACKAGE_NAME="libgc-mono";PACKAGE_TARNAME="libgc-mono";PACKAGE_VERSION="6.6";PACKAGE_STRING="libgc-mono 6.6";PACKAGE_BUGREPORT="Hans_Boehm%40hp.com";GC_WIN32_THREADS=1;NO_GETENV=1;GC_INSIDE_DLL=1;GC_NOT_DLL=1;STDC_HEADERS=1;HAVE_SYS_TYPES_H=1;HAVE_SYS_STAT_H=1;HAVE_STDLIB_H=1;HAVE_STRING_H=1;HAVE_MEMORY_H=1;HAVE_STRINGS_H=1;HAVE_INTTYPES_H=1;HAVE_STDINT_H=1;HAVE_UNISTD_H=1;SILENT=1;NO_SIGNALS=1;NO_EXECUTE_PERMISSION=1;JAVA_FINALIZATION=1;GC_GCJ_SUPPORT=1;ATOMIC_UNCOLLECTABLE=1;_IN_LIBGC=1;WINVER=0x0500;_WIN32_WINNT=0x0500;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ProgramDataBaseFileName>$(OutDir)vc80.pdb</ProgramDataBaseFileName>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+    </ClCompile>
+    <Lib>
+      <OutputFile>$(OutDir)libgc.lib</OutputFile>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\libgc\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_DEBUG;__x86_64__;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;__STDC__;PACKAGE_NAME="libgc-mono";PACKAGE_TARNAME="libgc-mono";PACKAGE_VERSION="6.6";PACKAGE_STRING="libgc-mono 6.6";PACKAGE_BUGREPORT="Hans_Boehm%40hp.com";GC_WIN32_THREADS=1;NO_GETENV=1;GC_INSIDE_DLL=1;GC_NOT_DLL=1;STDC_HEADERS=1;HAVE_SYS_TYPES_H=1;HAVE_SYS_STAT_H=1;HAVE_STDLIB_H=1;HAVE_STRING_H=1;HAVE_MEMORY_H=1;HAVE_STRINGS_H=1;HAVE_INTTYPES_H=1;HAVE_STDINT_H=1;HAVE_UNISTD_H=1;SILENT=1;NO_SIGNALS=1;NO_EXECUTE_PERMISSION=1;JAVA_FINALIZATION=1;GC_GCJ_SUPPORT=1;ATOMIC_UNCOLLECTABLE=1;_IN_LIBGC=1;WINVER=0x0500;_WIN32_WINNT=0x0500;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ProgramDataBaseFileName>$(OutDir)vc80.pdb</ProgramDataBaseFileName>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4311;4312;4996;4005;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+    </ClCompile>
+    <Lib>
+      <OutputFile>$(OutDir)libgc.lib</OutputFile>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <AdditionalIncludeDirectories>..\libgc\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>NDEBUG;__x86_64__;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;__STDC__;PACKAGE_NAME="libgc-mono";PACKAGE_TARNAME="libgc-mono";PACKAGE_VERSION="6.6";PACKAGE_STRING="libgc-mono 6.6";PACKAGE_BUGREPORT="Hans_Boehm%40hp.com";GC_WIN32_THREADS=1;NO_GETENV=1;GC_INSIDE_DLL=1;GC_NOT_DLL=1;STDC_HEADERS=1;HAVE_SYS_TYPES_H=1;HAVE_SYS_STAT_H=1;HAVE_STDLIB_H=1;HAVE_STRING_H=1;HAVE_MEMORY_H=1;HAVE_STRINGS_H=1;HAVE_INTTYPES_H=1;HAVE_STDINT_H=1;HAVE_UNISTD_H=1;SILENT=1;NO_SIGNALS=1;NO_EXECUTE_PERMISSION=1;JAVA_FINALIZATION=1;GC_GCJ_SUPPORT=1;ATOMIC_UNCOLLECTABLE=1;_IN_LIBGC=1;WINVER=0x0500;_WIN32_WINNT=0x0500;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ProgramDataBaseFileName>$(OutDir)vc80.pdb</ProgramDataBaseFileName>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+    </ClCompile>
+    <Lib>
+      <OutputFile>$(OutDir)libgc.lib</OutputFile>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\libgc\allchblk.c" />
+    <ClCompile Include="..\libgc\alloc.c" />
+    <ClCompile Include="..\libgc\blacklst.c" />
+    <ClCompile Include="..\libgc\dbg_mlc.c" />
+    <ClCompile Include="..\libgc\dyn_load.c" />
+    <ClCompile Include="..\libgc\finalize.c" />
+    <ClCompile Include="..\libgc\gcj_mlc.c" />
+    <ClCompile Include="..\libgc\headers.c" />
+    <ClCompile Include="..\libgc\mach_dep.c" />
+    <ClCompile Include="..\libgc\malloc.c" />
+    <ClCompile Include="..\libgc\mallocx.c" />
+    <ClCompile Include="..\libgc\mark.c" />
+    <ClCompile Include="..\libgc\mark_rts.c" />
+    <ClCompile Include="..\libgc\misc.c" />
+    <ClCompile Include="..\libgc\new_hblk.c" />
+    <ClCompile Include="..\libgc\obj_map.c" />
+    <ClCompile Include="..\libgc\os_dep.c" />
+    <ClCompile Include="..\libgc\ptr_chck.c" />
+    <ClCompile Include="..\libgc\reclaim.c" />
+    <ClCompile Include="..\libgc\stubborn.c" />
+    <ClCompile Include="..\libgc\typd_mlc.c" />
+    <ClCompile Include="..\libgc\win32_threads.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\libgc\include\gc.h" />
+    <ClInclude Include="..\libgc\include\private\gc_hdrs.h" />
+    <ClInclude Include="..\libgc\include\private\gc_locks.h" />
+    <ClInclude Include="..\libgc\include\gc_mark.h" />
+    <ClInclude Include="..\libgc\include\private\gc_pmark.h" />
+    <ClInclude Include="..\libgc\include\private\gc_priv.h" />
+    <ClInclude Include="..\libgc\include\private\gcconfig.h" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/msvc/libmono.vcxproj b/msvc/libmono.vcxproj
new file mode 100644
index 0000000..36745e1
--- /dev/null
+++ b/msvc/libmono.vcxproj
@@ -0,0 +1,1857 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}</ProjectGuid>
+    <RootNamespace>libmono</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\obj\$(ProjectName)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\obj\$(ProjectName)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\obj\$(ProjectName)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\obj\$(ProjectName)\</IntDir>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">mono-2.0</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">mono-2.0</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">mono-2.0</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">mono-2.0</TargetName>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <PreBuildEvent>
+      <Command>echo #define FULL_VERSION "Visual Studio built mono" > ..\mono\mini\version.h</Command>
+    </PreBuildEvent>
+    <ClCompile>
+      <AdditionalOptions>/D /NODEFAULTLIB:LIBCD" " %(AdditionalOptions)</AdditionalOptions>
+      <Optimization>Disabled</Optimization>
+      <InlineFunctionExpansion>Default</InlineFunctionExpansion>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\mono\jit;..\mono\eglib\src;..\..\mono\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>TARGET_X86;_DEBUG;__i386__;TARGET_X86;i386;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;GC_NOT_DLL;HAVE_CONFIG_H;WINVER=0x0500;_WIN32_WINNT=0x0500;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;__default_codegen__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>
+      </PrecompiledHeaderOutputFile>
+      <BrowseInformation>true</BrowseInformation>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4996;4018;4244;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>version.lib;libgc.lib;eglib.lib;ws2_32.lib;Psapi.lib;winmm.lib;mswsock.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ModuleDefinitionFile>mono.def</ModuleDefinitionFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <ImportLibrary>$(Platform)\lib\$(TargetName).lib</ImportLibrary>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <PreBuildEvent>
+      <Command>echo #define FULL_VERSION "Visual Studio built mono" > ..\mono\mini\version.h</Command>
+    </PreBuildEvent>
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalOptions>/D /NODEFAULTLIB:LIBCD" " %(AdditionalOptions)</AdditionalOptions>
+      <Optimization>Disabled</Optimization>
+      <InlineFunctionExpansion>Default</InlineFunctionExpansion>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\mono\jit;..\mono\eglib\src;..\..\mono\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_DEBUG;__x86_64__;TARGET_AMD64;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;GC_NOT_DLL;HAVE_CONFIG_H;WINVER=0x0500;_WIN32_WINNT=0x0500;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;__default_codegen__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>
+      </PrecompiledHeaderOutputFile>
+      <BrowseInformation>true</BrowseInformation>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4996;4018;4244;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>version.lib;libgc.lib;eglib.lib;ws2_32.lib;Psapi.lib;winmm.lib;mswsock.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ModuleDefinitionFile>mono.def</ModuleDefinitionFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(TargetDir)libmono.pdb</ProgramDatabaseFile>
+      <ImportLibrary>$(Platform)\lib\$(TargetName).lib</ImportLibrary>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <PreBuildEvent>
+      <Command>echo #define FULL_VERSION "Visual Studio built mono" > ..\mono\mini\version.h</Command>
+    </PreBuildEvent>
+    <ClCompile>
+      <AdditionalOptions>/D /NODEFAULTLIB:LIBCD" " %(AdditionalOptions)</AdditionalOptions>
+      <Optimization>MinSpace</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\mono\jit;..\mono\eglib\src;..\..\mono\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>NDEBUG;__i386__;TARGET_X86;i386;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;GC_NOT_DLL;HAVE_CONFIG_H;WINVER=0x0500;_WIN32_WINNT=0x0500;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;__default_codegen__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\Release/libmono.pch</PrecompiledHeaderOutputFile>
+      <CompileAs>CompileAsC</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>version.lib;libgc.lib;eglib.lib;ws2_32.lib;Psapi.lib;winmm.lib;mswsock.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ModuleDefinitionFile>mono.def</ModuleDefinitionFile>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <ImportLibrary>$(Platform)\lib\$(TargetName).lib</ImportLibrary>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <PreBuildEvent>
+      <Command>echo #define FULL_VERSION "Visual Studio built mono" > ..\mono\mini\version.h</Command>
+    </PreBuildEvent>
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalOptions>/D /NODEFAULTLIB:LIBCD" " %(AdditionalOptions)</AdditionalOptions>
+      <Optimization>MinSpace</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\mono\jit;..\mono\eglib\src;..\..\mono\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>NDEBUG;__x86_64__;TARGET_AMD64;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;GC_NOT_DLL;HAVE_CONFIG_H;WINVER=0x0500;_WIN32_WINNT=0x0500;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;__default_codegen__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\Release/libmono.pch</PrecompiledHeaderOutputFile>
+      <CompileAs>CompileAsC</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>version.lib;libgc.lib;eglib.lib;ws2_32.lib;Psapi.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ModuleDefinitionFile>mono.def</ModuleDefinitionFile>
+      <ImportLibrary>$(Platform)\lib\$(TargetName).lib</ImportLibrary>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClInclude Include="..\config.h" />
+    <ClInclude Include="..\mono\io-layer\io-layer.h" />
+    <ClInclude Include="..\mono\metadata\profiler-default.h" />
+    <ClInclude Include="..\mono\utils\dlmalloc.h" />
+    <ClInclude Include="..\mono\utils\mono-codeman.h" />
+    <ClInclude Include="..\mono\utils\mono-compiler.h" />
+    <ClInclude Include="..\mono\utils\mono-counters.h" />
+    <ClInclude Include="..\mono\utils\mono-digest.h" />
+    <ClInclude Include="..\mono\utils\mono-dl.h" />
+    <ClInclude Include="..\mono\utils\mono-error-internals.h" />
+    <ClInclude Include="..\mono\utils\mono-error.h" />
+    <ClInclude Include="..\mono\metadata\mono-hash.h" />
+    <ClInclude Include="..\mono\utils\mono-internal-hash.h" />
+    <ClInclude Include="..\mono\utils\mono-io-portability.h" />
+    <ClInclude Include="..\mono\utils\mono-logger.h" />
+    <ClInclude Include="..\mono\utils\mono-math.h" />
+    <ClInclude Include="..\mono\utils\mono-membar.h" />
+    <ClInclude Include="..\mono\utils\mono-mmap.h" />
+    <ClInclude Include="..\mono\utils\mono-networkinterfaces.h" />
+    <ClInclude Include="..\mono\utils\mono-path.h" />
+    <ClInclude Include="..\mono\utils\mono-poll.h" />
+    <ClInclude Include="..\mono\utils\mono-proclib.h" />
+    <ClInclude Include="..\mono\utils\mono-property-hash.h" />
+    <ClInclude Include="..\mono\utils\mono-semaphore.h" />
+    <ClInclude Include="..\mono\utils\mono-stdlib.h" />
+    <ClInclude Include="..\mono\utils\mono-time.h" />
+    <ClInclude Include="..\mono\utils\mono-uri.h" />
+    <ClInclude Include="..\mono\utils\mono-value-hash.h" />
+    <ClInclude Include="..\mono\metadata\mono-wsq.h" />
+    <ClInclude Include="..\mono\utils\monobitset.h" />
+    <ClInclude Include="..\mono\metadata\runtime.h" />
+    <ClInclude Include="..\mono\utils\strenc.h" />
+    <ClInclude Include="..\mono\utils\strtod.h" />
+    <ClInclude Include="..\mono\metadata\appdomain.h" />
+    <ClInclude Include="..\mono\metadata\attach.h" />
+    <ClInclude Include="..\mono\metadata\char-conversions.h" />
+    <ClInclude Include="..\mono\metadata\cil-coff.h" />
+    <ClInclude Include="..\mono\metadata\class-internals.h" />
+    <ClInclude Include="..\mono\metadata\cominterop.h" />
+    <ClInclude Include="..\mono\metadata\console-io.h" />
+    <ClInclude Include="..\mono\metadata\coree.h" />
+    <ClInclude Include="..\mono\metadata\culture-info-tables.h" />
+    <ClInclude Include="..\mono\metadata\culture-info.h" />
+    <ClInclude Include="..\mono\metadata\debug-mono-symfile.h" />
+    <ClInclude Include="..\mono\metadata\decimal.h" />
+    <ClInclude Include="..\mono\metadata\domain-internals.h" />
+    <ClInclude Include="..\mono\metadata\environment.h" />
+    <ClInclude Include="..\mono\metadata\exception.h" />
+    <ClInclude Include="..\mono\metadata\file-io.h" />
+    <ClInclude Include="..\mono\metadata\filewatcher.h" />
+    <ClInclude Include="..\mono\metadata\gc-internal.h" />
+    <ClInclude Include="..\mono\metadata\locales.h" />
+    <ClInclude Include="..\mono\metadata\marshal.h" />
+    <ClInclude Include="..\mono\metadata\metadata-internals.h" />
+    <ClInclude Include="..\mono\metadata\method-builder.h" />
+    <ClInclude Include="..\mono\metadata\monitor.h" />
+    <ClInclude Include="..\mono\metadata\mono-basic-block.h" />
+    <ClInclude Include="..\mono\metadata\mono-debug-debugger.h" />
+    <ClInclude Include="..\mono\metadata\mono-debug.h" />
+    <ClInclude Include="..\mono\metadata\mono-mlist.h" />
+    <ClInclude Include="..\mono\metadata\mono-perfcounters.h" />
+    <ClInclude Include="..\mono\metadata\object-internals.h" />
+    <ClInclude Include="..\mono\metadata\process.h" />
+    <ClInclude Include="..\mono\metadata\profiler-private.h" />
+    <ClInclude Include="..\mono\metadata\rand.h" />
+    <ClInclude Include="..\mono\metadata\security-core-clr.h" />
+    <ClInclude Include="..\mono\metadata\security-manager.h" />
+    <ClInclude Include="..\mono\metadata\security.h" />
+    <ClInclude Include="..\mono\metadata\socket-io.h" />
+    <ClInclude Include="..\mono\metadata\string-icalls.h" />
+    <ClInclude Include="..\mono\metadata\sysmath.h" />
+    <ClInclude Include="..\mono\metadata\tabledefs.h" />
+    <ClInclude Include="..\mono\metadata\threadpool.h" />
+    <ClInclude Include="..\mono\metadata\threads-types.h" />
+    <ClInclude Include="..\mono\os\gc_wrapper.h" />
+    <ClInclude Include="..\mono\mini\abcremoval.h" />
+    <ClInclude Include="..\mono\mini\cpu-pentium.h" />
+    <ClInclude Include="..\mono\mini\debugger-agent.h" />
+    <ClInclude Include="..\mono\mini\declsec.h" />
+    <ClInclude Include="..\mono\mini\dwarfwriter.h" />
+    <ClInclude Include="..\mono\mini\image-writer.h" />
+    <ClInclude Include="..\mono\mini\ir-emit.h" />
+    <ClInclude Include="..\mono\mini\jit-icalls.h" />
+    <ClInclude Include="..\mono\mini\mini-arch.h" />
+    <ClInclude Include="..\mono\mini\mini-gc.h" />
+    <ClInclude Include="..\mono\mini\mini-ops.h" />
+    <ClInclude Include="..\mono\mini\mini.h" />
+    <ClInclude Include="..\mono\mini\regalloc.h" />
+    <ClInclude Include="..\mono\mini\ssapre.h" />
+    <ClInclude Include="..\mono\mini\trace.h" />
+    <CustomBuildStep Include="..\mono\mini\mini-x86.h">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+    </CustomBuildStep>
+    <CustomBuildStep Include="..\mono\mini\mini-amd64.h">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+    </CustomBuildStep>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\mono\utils\dlmalloc.c" />
+    <ClCompile Include="..\mono\utils\mono-codeman.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\utils\mono-counters.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\utils\mono-dl.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\utils\mono-error.c" />
+    <ClCompile Include="..\mono\utils\mono-filemap.c" />
+    <ClCompile Include="..\mono\metadata\mono-hash.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\utils\mono-internal-hash.c" />
+    <ClCompile Include="..\mono\utils\mono-io-portability.c" />
+    <ClCompile Include="..\mono\utils\mono-logger.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\utils\mono-math.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\utils\mono-md5.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\utils\mono-mmap.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\utils\mono-networkinterfaces.c" />
+    <ClCompile Include="..\mono\utils\mono-path.c" />
+    <ClCompile Include="..\mono\utils\mono-poll.c" />
+    <ClCompile Include="..\mono\utils\mono-proclib.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\utils\mono-property-hash.c" />
+    <ClCompile Include="..\mono\utils\mono-publib.c" />
+    <ClCompile Include="..\mono\utils\mono-semaphore.c" />
+    <ClCompile Include="..\mono\utils\mono-sha1.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\utils\mono-stdlib.c" />
+    <ClCompile Include="..\mono\utils\mono-time.c" />
+    <ClCompile Include="..\mono\utils\mono-uri.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\utils\mono-value-hash.c" />
+    <ClCompile Include="..\mono\metadata\mono-wsq.c" />
+    <ClCompile Include="..\mono\utils\monobitset.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\metadata\runtime.c" />
+    <ClCompile Include="..\mono\utils\strenc.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\utils\strtod.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\metadata\appdomain.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\metadata\assembly.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\metadata\attach.c" />
+    <ClCompile Include="..\mono\metadata\boehm-gc.c" />
+    <ClCompile Include="..\mono\metadata\class.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\metadata\cominterop.c" />
+    <ClCompile Include="..\mono\metadata\console-win32.c" />
+    <ClCompile Include="..\mono\metadata\coree.c" />
+    <ClCompile Include="..\mono\metadata\debug-helpers.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\metadata\debug-mono-symfile.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\metadata\decimal.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\metadata\domain.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\metadata\environment.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\metadata\exception.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\metadata\file-io.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\metadata\filewatcher.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\metadata\gc.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\metadata\icall.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\metadata\image.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\metadata\loader.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\metadata\locales.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\metadata\marshal.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\metadata\mempool.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\metadata\metadata-verify.c" />
+    <ClCompile Include="..\mono\metadata\metadata.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\metadata\method-builder.c" />
+    <ClCompile Include="..\mono\metadata\monitor.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\metadata\mono-basic-block.c" />
+    <ClCompile Include="..\mono\metadata\mono-config.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\metadata\mono-debug-debugger.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\metadata\mono-debug.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\metadata\mono-endian.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\metadata\mono-mlist.c" />
+    <ClCompile Include="..\mono\metadata\mono-perfcounters.c" />
+    <ClCompile Include="..\mono\metadata\object.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\metadata\opcodes.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\metadata\process.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\metadata\profiler.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\metadata\rand.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\metadata\reflection.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\metadata\security-core-clr.c" />
+    <ClCompile Include="..\mono\metadata\security-manager.c" />
+    <ClCompile Include="..\mono\metadata\security.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\metadata\socket-io.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\metadata\string-icalls.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\metadata\sysmath.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\metadata\threadpool.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\metadata\threads.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\metadata\verify.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\mini\abcremoval.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\mini\aot-compiler.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\mini\aot-runtime.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\mini\branch-opts.c" />
+    <ClCompile Include="..\mono\mini\cfold.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\mini\debug-mini.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\mini\debugger-agent.c" />
+    <ClCompile Include="..\mono\mini\declsec.c" />
+    <ClCompile Include="..\mono\mini\decompose.c" />
+    <ClCompile Include="..\mono\mini\dominators.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\mini\driver.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\mini\dwarfwriter.c" />
+    <ClCompile Include="..\mono\mini\graph.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\mini\helpers.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\mini\image-writer.c" />
+    <ClCompile Include="..\mono\mini\jit-icalls.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\mini\linear-scan.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\mini\liveness.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\mini\local-propagation.c" />
+    <ClCompile Include="..\mono\mini\method-to-ir.c" />
+    <ClCompile Include="..\mono\mini\mini-codegen.c" />
+    <ClCompile Include="..\mono\mini\mini-exceptions.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\mini\mini-gc.c" />
+    <ClCompile Include="..\mono\mini\mini-generic-sharing.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\mini\mini-trampolines.c" />
+    <ClCompile Include="..\mono\mini\mini-windows.c" />
+    <ClCompile Include="..\mono\mini\mini.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\mini\regalloc.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\mini\regalloc2.c" />
+    <ClCompile Include="..\mono\mini\simd-intrinsics.c" />
+    <ClCompile Include="..\mono\mini\ssa.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\mini\ssapre.c" />
+    <ClCompile Include="..\mono\mini\trace.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\mini\unwind.c" />
+    <ClCompile Include="..\mono\mini\wapihandles.c" />
+    <ClCompile Include="..\mono\mini\xdebug.c" />
+    <ClCompile Include="..\mono\mini\exceptions-x86.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\mini\mini-x86.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\mini\tramp-x86.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\mini\exceptions-amd64.c">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="..\mono\mini\mini-amd64.c">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="..\mono\mini\tramp-amd64.c">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="eglib.vcxproj">
+      <Project>{158073ed-99ae-4196-9edc-ddb2344f8466}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+    <ProjectReference Include="genmdesc.vcxproj">
+      <Project>{b7098dfa-31e6-4006-8a15-1c9a4e925149}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+    <ProjectReference Include="libgc.vcxproj">
+      <Project>{eb56000b-c80b-4e8b-908d-d84d31b517d3}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/msvc/libtest.vcxproj b/msvc/libtest.vcxproj
new file mode 100644
index 0000000..d6a0103
--- /dev/null
+++ b/msvc/libtest.vcxproj
@@ -0,0 +1,200 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}</ProjectGuid>
+    <RootNamespace>libtest</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\obj\$(ProjectName)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\obj\$(ProjectName)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\obj\$(ProjectName)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\obj\$(ProjectName)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\eglib\src;..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBTEST_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>eglib.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <ImportLibrary>$(Platform)\lib\$(TargetName).lib</ImportLibrary>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\eglib\src;..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBTEST_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>eglib.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <ImportLibrary>$(Platform)\lib\$(TargetName).lib</ImportLibrary>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <AdditionalIncludeDirectories>..\eglib\src;..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBTEST_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>eglib.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <ImportLibrary>$(Platform)\lib\$(TargetName).lib</ImportLibrary>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <AdditionalIncludeDirectories>..\eglib\src;..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBTEST_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>eglib.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <ImportLibrary>$(Platform)\lib\$(TargetName).lib</ImportLibrary>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\mono\tests\libtest.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="eglib.vcxproj">
+      <Project>{158073ed-99ae-4196-9edc-ddb2344f8466}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/msvc/mono.def b/msvc/mono.def
index cda193c..1cca2a5 100644
--- a/msvc/mono.def
+++ b/msvc/mono.def
@@ -1,7 +1,6 @@
 ; file generated by create-windef.pl
-LIBRARY mono.dll
+LIBRARY mono-2.0.dll
 EXPORTS
-MonoFixupCorEE
 mono_add_internal_call
 mono_aot_register_globals
 mono_aot_register_module
@@ -229,6 +228,8 @@ mono_declsec_get_inheritdemands_class
 mono_declsec_get_inheritdemands_method
 mono_declsec_get_linkdemands
 mono_declsec_get_method_action
+mono_dl_fallback_register
+mono_dl_fallback_unregister
 mono_digest_get_public_token
 mono_disasm_code
 mono_disasm_code_one
@@ -833,4 +834,4 @@ mono_walk_stack
 mono_win32_compat_CopyMemory
 mono_win32_compat_FillMemory
 mono_win32_compat_MoveMemory
-mono_win32_compat_ZeroMemory
\ No newline at end of file
+mono_win32_compat_ZeroMemory
diff --git a/msvc/mono.sln b/msvc/mono.sln
index cc2314a..9440540 100644
--- a/msvc/mono.sln
+++ b/msvc/mono.sln
@@ -1,6 +1,6 @@
 
-Microsoft Visual Studio Solution File, Format Version 10.00
-# Visual Studio 2008
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Embedded Samples", "Embedded Samples", "{5FE09AA5-C3C9-45EA-A323-36A11B653CEC}"
 EndProject
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tools", "Tools", "{EE2CC761-9652-44AC-9204-7EB31194CAA6}"
@@ -9,281 +9,172 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{
 EndProject
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{ECA11C76-E192-4F67-A8FA-28B637D9716F}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genmdesc", "genmdesc.vcproj", "{B7098DFA-31E6-4006-8A15-1C9A4E925149}"
-	ProjectSection(ProjectDependencies) = postProject
-		{158073ED-99AE-4196-9EDC-DDB2344F8466} = {158073ED-99AE-4196-9EDC-DDB2344F8466}
-	EndProjectSection
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genmdesc", "genmdesc.vcxproj", "{B7098DFA-31E6-4006-8A15-1C9A4E925149}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmono", "libmono.vcproj", "{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}"
-	ProjectSection(ProjectDependencies) = postProject
-		{B7098DFA-31E6-4006-8A15-1C9A4E925149} = {B7098DFA-31E6-4006-8A15-1C9A4E925149}
-		{EB56000B-C80B-4E8B-908D-D84D31B517D3} = {EB56000B-C80B-4E8B-908D-D84D31B517D3}
-		{158073ED-99AE-4196-9EDC-DDB2344F8466} = {158073ED-99AE-4196-9EDC-DDB2344F8466}
-	EndProjectSection
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmono", "libmono.vcxproj", "{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test-invoke", "test-invoke.vcproj", "{C5639B3F-288A-4A4B-A4A5-C0D85834221D}"
-	ProjectSection(ProjectDependencies) = postProject
-		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771} = {CB0D9E92-293C-439C-9AC7-C5F59B6E0771}
-	EndProjectSection
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test-invoke", "test-invoke.vcxproj", "{C5639B3F-288A-4A4B-A4A5-C0D85834221D}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "teste", "teste.vcproj", "{6FDE4E5E-57D0-432F-A987-6C226A7827E4}"
-	ProjectSection(ProjectDependencies) = postProject
-		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771} = {CB0D9E92-293C-439C-9AC7-C5F59B6E0771}
-	EndProjectSection
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "teste", "teste.vcxproj", "{6FDE4E5E-57D0-432F-A987-6C226A7827E4}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mono", "mono.vcproj", "{A0EDDCD9-940F-432C-A28F-7EF322437D79}"
-	ProjectSection(ProjectDependencies) = postProject
-		{158073ED-99AE-4196-9EDC-DDB2344F8466} = {158073ED-99AE-4196-9EDC-DDB2344F8466}
-		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771} = {CB0D9E92-293C-439C-9AC7-C5F59B6E0771}
-	EndProjectSection
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mono", "mono.vcxproj", "{A0EDDCD9-940F-432C-A28F-7EF322437D79}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libgc", "libgc.vcproj", "{EB56000B-C80B-4E8B-908D-D84D31B517D3}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libgc", "libgc.vcxproj", "{EB56000B-C80B-4E8B-908D-D84D31B517D3}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "monodis", "monodis.vcproj", "{37F50E5A-4818-46CF-81FE-4BB06DE5D42E}"
-	ProjectSection(ProjectDependencies) = postProject
-		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771} = {CB0D9E92-293C-439C-9AC7-C5F59B6E0771}
-	EndProjectSection
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "monodis", "monodis.vcxproj", "{37F50E5A-4818-46CF-81FE-4BB06DE5D42E}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pedump", "pedump.vcproj", "{84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}"
-	ProjectSection(ProjectDependencies) = postProject
-		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771} = {CB0D9E92-293C-439C-9AC7-C5F59B6E0771}
-	EndProjectSection
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pedump", "pedump.vcxproj", "{84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "monodiet", "monodiet.vcproj", "{8F90007F-8019-4191-8808-891E4762D958}"
-	ProjectSection(ProjectDependencies) = postProject
-		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771} = {CB0D9E92-293C-439C-9AC7-C5F59B6E0771}
-	EndProjectSection
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "monodiet", "monodiet.vcxproj", "{8F90007F-8019-4191-8808-891E4762D958}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "monograph", "monograph.vcproj", "{CA2A69D6-3B9D-45A5-8BF7-4E242E683122}"
-	ProjectSection(ProjectDependencies) = postProject
-		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771} = {CB0D9E92-293C-439C-9AC7-C5F59B6E0771}
-	EndProjectSection
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "monograph", "monograph.vcxproj", "{CA2A69D6-3B9D-45A5-8BF7-4E242E683122}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test-metadata", "test-metadata.vcproj", "{C2EB666E-9146-4B7A-85F6-25F9EA313770}"
-	ProjectSection(ProjectDependencies) = postProject
-		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771} = {CB0D9E92-293C-439C-9AC7-C5F59B6E0771}
-	EndProjectSection
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test-metadata", "test-metadata.vcxproj", "{C2EB666E-9146-4B7A-85F6-25F9EA313770}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "eglib", "eglib.vcproj", "{158073ED-99AE-4196-9EDC-DDB2344F8466}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "eglib", "eglib.vcxproj", "{158073ED-99AE-4196-9EDC-DDB2344F8466}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_eglib", "test_eglib.vcproj", "{80A0620A-3478-4E1A-AA7C-0D2387B892AB}"
-	ProjectSection(ProjectDependencies) = postProject
-		{158073ED-99AE-4196-9EDC-DDB2344F8466} = {158073ED-99AE-4196-9EDC-DDB2344F8466}
-	EndProjectSection
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_eglib", "test_eglib.vcxproj", "{80A0620A-3478-4E1A-AA7C-0D2387B892AB}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libtest", "libtest.vcproj", "{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}"
-	ProjectSection(ProjectDependencies) = postProject
-		{158073ED-99AE-4196-9EDC-DDB2344F8466} = {158073ED-99AE-4196-9EDC-DDB2344F8466}
-	EndProjectSection
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libtest", "libtest.vcxproj", "{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "monoposixhelper", "monoposixhelper.vcproj", "{33014734-0F46-4099-9A21-0C989E428681}"
-	ProjectSection(ProjectDependencies) = postProject
-		{B7098DFA-31E6-4006-8A15-1C9A4E925149} = {B7098DFA-31E6-4006-8A15-1C9A4E925149}
-	EndProjectSection
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "monoposixhelper", "monoposixhelper.vcxproj", "{33014734-0F46-4099-9A21-0C989E428681}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jay2008", "..\..\mcs\jay\jay2008.vcproj", "{5D485D32-3B9F-4287-AB24-C8DA5B89F537}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "profiler-logging", "profiler-logging.vcxproj", "{86663B87-4CD2-42B6-8D8E-C79DA1CCDEE6}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "profiler-logging", "profiler-logging.vcproj", "{86663B87-4CD2-42B6-8D8E-C79DA1CCDEE6}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "profiler-cov", "profiler-cov.vcxproj", "{83D4D926-2983-4770-BA92-EB9CB8828C95}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "profiler-cov", "profiler-cov.vcproj", "{83D4D926-2983-4770-BA92-EB9CB8828C95}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jay", "..\mcs\jay\jay.vcxproj", "{5D485D32-3B9F-4287-AB24-C8DA5B89F537}"
 EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug_eglib|Win32 = Debug_eglib|Win32
-		Debug_eglib|x64 = Debug_eglib|x64
 		Debug|Win32 = Debug|Win32
 		Debug|x64 = Debug|x64
-		Release_eglib|Win32 = Release_eglib|Win32
-		Release_eglib|x64 = Release_eglib|x64
 		Release|Win32 = Release|Win32
 		Release|x64 = Release|x64
 	EndGlobalSection
 	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{B7098DFA-31E6-4006-8A15-1C9A4E925149}.Debug_eglib|Win32.ActiveCfg = Debug_eglib|Win32
-		{B7098DFA-31E6-4006-8A15-1C9A4E925149}.Debug_eglib|Win32.Build.0 = Debug_eglib|Win32
-		{B7098DFA-31E6-4006-8A15-1C9A4E925149}.Debug_eglib|x64.ActiveCfg = Debug_eglib|x64
-		{B7098DFA-31E6-4006-8A15-1C9A4E925149}.Debug_eglib|x64.Build.0 = Debug_eglib|x64
 		{B7098DFA-31E6-4006-8A15-1C9A4E925149}.Debug|Win32.ActiveCfg = Debug|Win32
 		{B7098DFA-31E6-4006-8A15-1C9A4E925149}.Debug|Win32.Build.0 = Debug|Win32
-		{B7098DFA-31E6-4006-8A15-1C9A4E925149}.Debug|x64.ActiveCfg = Debug|Win32
-		{B7098DFA-31E6-4006-8A15-1C9A4E925149}.Release_eglib|Win32.ActiveCfg = Release_eglib|Win32
-		{B7098DFA-31E6-4006-8A15-1C9A4E925149}.Release_eglib|Win32.Build.0 = Release_eglib|Win32
-		{B7098DFA-31E6-4006-8A15-1C9A4E925149}.Release_eglib|x64.ActiveCfg = Release_eglib|Win32
+		{B7098DFA-31E6-4006-8A15-1C9A4E925149}.Debug|x64.ActiveCfg = Debug|x64
+		{B7098DFA-31E6-4006-8A15-1C9A4E925149}.Debug|x64.Build.0 = Debug|x64
 		{B7098DFA-31E6-4006-8A15-1C9A4E925149}.Release|Win32.ActiveCfg = Release|Win32
 		{B7098DFA-31E6-4006-8A15-1C9A4E925149}.Release|Win32.Build.0 = Release|Win32
-		{B7098DFA-31E6-4006-8A15-1C9A4E925149}.Release|x64.ActiveCfg = Release|Win32
-		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Debug_eglib|Win32.ActiveCfg = Debug_eglib|Win32
-		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Debug_eglib|Win32.Build.0 = Debug_eglib|Win32
-		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Debug_eglib|x64.ActiveCfg = Debug_eglib|x64
-		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Debug_eglib|x64.Build.0 = Debug_eglib|x64
+		{B7098DFA-31E6-4006-8A15-1C9A4E925149}.Release|x64.ActiveCfg = Release|x64
+		{B7098DFA-31E6-4006-8A15-1C9A4E925149}.Release|x64.Build.0 = Release|x64
 		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Debug|Win32.ActiveCfg = Debug|Win32
 		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Debug|Win32.Build.0 = Debug|Win32
-		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Debug|x64.ActiveCfg = Debug|Win32
-		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Release_eglib|Win32.ActiveCfg = Release_eglib|Win32
-		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Release_eglib|Win32.Build.0 = Release_eglib|Win32
-		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Release_eglib|x64.ActiveCfg = Release_eglib|Win32
+		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Debug|x64.ActiveCfg = Debug|x64
+		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Debug|x64.Build.0 = Debug|x64
 		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Release|Win32.ActiveCfg = Release|Win32
 		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Release|Win32.Build.0 = Release|Win32
-		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Release|x64.ActiveCfg = Release|Win32
-		{C5639B3F-288A-4A4B-A4A5-C0D85834221D}.Debug_eglib|Win32.ActiveCfg = Debug_eglib|Win32
-		{C5639B3F-288A-4A4B-A4A5-C0D85834221D}.Debug_eglib|x64.ActiveCfg = Debug_eglib|Win32
+		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Release|x64.ActiveCfg = Release|x64
+		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Release|x64.Build.0 = Release|x64
 		{C5639B3F-288A-4A4B-A4A5-C0D85834221D}.Debug|Win32.ActiveCfg = Debug|Win32
-		{C5639B3F-288A-4A4B-A4A5-C0D85834221D}.Debug|x64.ActiveCfg = Debug|Win32
-		{C5639B3F-288A-4A4B-A4A5-C0D85834221D}.Release_eglib|Win32.ActiveCfg = Release_eglib|Win32
-		{C5639B3F-288A-4A4B-A4A5-C0D85834221D}.Release_eglib|x64.ActiveCfg = Release_eglib|Win32
+		{C5639B3F-288A-4A4B-A4A5-C0D85834221D}.Debug|x64.ActiveCfg = Debug|x64
+		{C5639B3F-288A-4A4B-A4A5-C0D85834221D}.Debug|x64.Build.0 = Debug|x64
 		{C5639B3F-288A-4A4B-A4A5-C0D85834221D}.Release|Win32.ActiveCfg = Release|Win32
-		{C5639B3F-288A-4A4B-A4A5-C0D85834221D}.Release|x64.ActiveCfg = Release|Win32
-		{6FDE4E5E-57D0-432F-A987-6C226A7827E4}.Debug_eglib|Win32.ActiveCfg = Debug_eglib|Win32
-		{6FDE4E5E-57D0-432F-A987-6C226A7827E4}.Debug_eglib|x64.ActiveCfg = Debug_eglib|Win32
+		{C5639B3F-288A-4A4B-A4A5-C0D85834221D}.Release|x64.ActiveCfg = Release|x64
+		{C5639B3F-288A-4A4B-A4A5-C0D85834221D}.Release|x64.Build.0 = Release|x64
 		{6FDE4E5E-57D0-432F-A987-6C226A7827E4}.Debug|Win32.ActiveCfg = Debug|Win32
-		{6FDE4E5E-57D0-432F-A987-6C226A7827E4}.Debug|x64.ActiveCfg = Debug|Win32
-		{6FDE4E5E-57D0-432F-A987-6C226A7827E4}.Release_eglib|Win32.ActiveCfg = Release_eglib|Win32
-		{6FDE4E5E-57D0-432F-A987-6C226A7827E4}.Release_eglib|x64.ActiveCfg = Release_eglib|Win32
+		{6FDE4E5E-57D0-432F-A987-6C226A7827E4}.Debug|x64.ActiveCfg = Debug|x64
+		{6FDE4E5E-57D0-432F-A987-6C226A7827E4}.Debug|x64.Build.0 = Debug|x64
 		{6FDE4E5E-57D0-432F-A987-6C226A7827E4}.Release|Win32.ActiveCfg = Release|Win32
-		{6FDE4E5E-57D0-432F-A987-6C226A7827E4}.Release|x64.ActiveCfg = Release|Win32
-		{A0EDDCD9-940F-432C-A28F-7EF322437D79}.Debug_eglib|Win32.ActiveCfg = Debug_eglib|Win32
-		{A0EDDCD9-940F-432C-A28F-7EF322437D79}.Debug_eglib|Win32.Build.0 = Debug_eglib|Win32
-		{A0EDDCD9-940F-432C-A28F-7EF322437D79}.Debug_eglib|x64.ActiveCfg = Debug_eglib|x64
-		{A0EDDCD9-940F-432C-A28F-7EF322437D79}.Debug_eglib|x64.Build.0 = Debug_eglib|x64
+		{6FDE4E5E-57D0-432F-A987-6C226A7827E4}.Release|x64.ActiveCfg = Release|x64
+		{6FDE4E5E-57D0-432F-A987-6C226A7827E4}.Release|x64.Build.0 = Release|x64
 		{A0EDDCD9-940F-432C-A28F-7EF322437D79}.Debug|Win32.ActiveCfg = Debug|Win32
 		{A0EDDCD9-940F-432C-A28F-7EF322437D79}.Debug|Win32.Build.0 = Debug|Win32
-		{A0EDDCD9-940F-432C-A28F-7EF322437D79}.Debug|x64.ActiveCfg = Debug|Win32
-		{A0EDDCD9-940F-432C-A28F-7EF322437D79}.Release_eglib|Win32.ActiveCfg = Release_eglib|Win32
-		{A0EDDCD9-940F-432C-A28F-7EF322437D79}.Release_eglib|Win32.Build.0 = Release_eglib|Win32
-		{A0EDDCD9-940F-432C-A28F-7EF322437D79}.Release_eglib|x64.ActiveCfg = Release_eglib|Win32
+		{A0EDDCD9-940F-432C-A28F-7EF322437D79}.Debug|x64.ActiveCfg = Debug|x64
+		{A0EDDCD9-940F-432C-A28F-7EF322437D79}.Debug|x64.Build.0 = Debug|x64
 		{A0EDDCD9-940F-432C-A28F-7EF322437D79}.Release|Win32.ActiveCfg = Release|Win32
 		{A0EDDCD9-940F-432C-A28F-7EF322437D79}.Release|Win32.Build.0 = Release|Win32
-		{A0EDDCD9-940F-432C-A28F-7EF322437D79}.Release|x64.ActiveCfg = Release|Win32
-		{EB56000B-C80B-4E8B-908D-D84D31B517D3}.Debug_eglib|Win32.ActiveCfg = Debug_eglib|Win32
-		{EB56000B-C80B-4E8B-908D-D84D31B517D3}.Debug_eglib|Win32.Build.0 = Debug_eglib|Win32
-		{EB56000B-C80B-4E8B-908D-D84D31B517D3}.Debug_eglib|x64.ActiveCfg = Debug_eglib|x64
-		{EB56000B-C80B-4E8B-908D-D84D31B517D3}.Debug_eglib|x64.Build.0 = Debug_eglib|x64
+		{A0EDDCD9-940F-432C-A28F-7EF322437D79}.Release|x64.ActiveCfg = Release|x64
+		{A0EDDCD9-940F-432C-A28F-7EF322437D79}.Release|x64.Build.0 = Release|x64
 		{EB56000B-C80B-4E8B-908D-D84D31B517D3}.Debug|Win32.ActiveCfg = Debug|Win32
 		{EB56000B-C80B-4E8B-908D-D84D31B517D3}.Debug|Win32.Build.0 = Debug|Win32
-		{EB56000B-C80B-4E8B-908D-D84D31B517D3}.Debug|x64.ActiveCfg = Debug|Win32
-		{EB56000B-C80B-4E8B-908D-D84D31B517D3}.Release_eglib|Win32.ActiveCfg = Release_eglib|Win32
-		{EB56000B-C80B-4E8B-908D-D84D31B517D3}.Release_eglib|Win32.Build.0 = Release_eglib|Win32
-		{EB56000B-C80B-4E8B-908D-D84D31B517D3}.Release_eglib|x64.ActiveCfg = Release_eglib|Win32
+		{EB56000B-C80B-4E8B-908D-D84D31B517D3}.Debug|x64.ActiveCfg = Debug|x64
+		{EB56000B-C80B-4E8B-908D-D84D31B517D3}.Debug|x64.Build.0 = Debug|x64
 		{EB56000B-C80B-4E8B-908D-D84D31B517D3}.Release|Win32.ActiveCfg = Release|Win32
 		{EB56000B-C80B-4E8B-908D-D84D31B517D3}.Release|Win32.Build.0 = Release|Win32
-		{EB56000B-C80B-4E8B-908D-D84D31B517D3}.Release|x64.ActiveCfg = Release|Win32
-		{37F50E5A-4818-46CF-81FE-4BB06DE5D42E}.Debug_eglib|Win32.ActiveCfg = Debug_eglib|Win32
-		{37F50E5A-4818-46CF-81FE-4BB06DE5D42E}.Debug_eglib|x64.ActiveCfg = Debug_eglib|Win32
+		{EB56000B-C80B-4E8B-908D-D84D31B517D3}.Release|x64.ActiveCfg = Release|x64
+		{EB56000B-C80B-4E8B-908D-D84D31B517D3}.Release|x64.Build.0 = Release|x64
 		{37F50E5A-4818-46CF-81FE-4BB06DE5D42E}.Debug|Win32.ActiveCfg = Debug|Win32
-		{37F50E5A-4818-46CF-81FE-4BB06DE5D42E}.Debug|x64.ActiveCfg = Debug|Win32
-		{37F50E5A-4818-46CF-81FE-4BB06DE5D42E}.Release_eglib|Win32.ActiveCfg = Release_eglib|Win32
-		{37F50E5A-4818-46CF-81FE-4BB06DE5D42E}.Release_eglib|x64.ActiveCfg = Release_eglib|Win32
+		{37F50E5A-4818-46CF-81FE-4BB06DE5D42E}.Debug|x64.ActiveCfg = Debug|x64
+		{37F50E5A-4818-46CF-81FE-4BB06DE5D42E}.Debug|x64.Build.0 = Debug|x64
 		{37F50E5A-4818-46CF-81FE-4BB06DE5D42E}.Release|Win32.ActiveCfg = Release|Win32
-		{37F50E5A-4818-46CF-81FE-4BB06DE5D42E}.Release|x64.ActiveCfg = Release|Win32
-		{84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}.Debug_eglib|Win32.ActiveCfg = Debug_eglib|Win32
-		{84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}.Debug_eglib|x64.ActiveCfg = Debug_eglib|Win32
+		{37F50E5A-4818-46CF-81FE-4BB06DE5D42E}.Release|x64.ActiveCfg = Release|x64
+		{37F50E5A-4818-46CF-81FE-4BB06DE5D42E}.Release|x64.Build.0 = Release|x64
 		{84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}.Debug|Win32.ActiveCfg = Debug|Win32
-		{84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}.Debug|x64.ActiveCfg = Debug|Win32
-		{84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}.Release_eglib|Win32.ActiveCfg = Release_eglib|Win32
-		{84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}.Release_eglib|x64.ActiveCfg = Release_eglib|Win32
+		{84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}.Debug|x64.ActiveCfg = Debug|x64
+		{84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}.Debug|x64.Build.0 = Debug|x64
 		{84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}.Release|Win32.ActiveCfg = Release|Win32
-		{84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}.Release|x64.ActiveCfg = Release|Win32
-		{8F90007F-8019-4191-8808-891E4762D958}.Debug_eglib|Win32.ActiveCfg = Debug_eglib|Win32
-		{8F90007F-8019-4191-8808-891E4762D958}.Debug_eglib|x64.ActiveCfg = Debug_eglib|Win32
+		{84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}.Release|x64.ActiveCfg = Release|x64
+		{84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}.Release|x64.Build.0 = Release|x64
 		{8F90007F-8019-4191-8808-891E4762D958}.Debug|Win32.ActiveCfg = Debug|Win32
-		{8F90007F-8019-4191-8808-891E4762D958}.Debug|x64.ActiveCfg = Debug|Win32
-		{8F90007F-8019-4191-8808-891E4762D958}.Release_eglib|Win32.ActiveCfg = Release_eglib|Win32
-		{8F90007F-8019-4191-8808-891E4762D958}.Release_eglib|x64.ActiveCfg = Release_eglib|Win32
+		{8F90007F-8019-4191-8808-891E4762D958}.Debug|x64.ActiveCfg = Debug|x64
+		{8F90007F-8019-4191-8808-891E4762D958}.Debug|x64.Build.0 = Debug|x64
 		{8F90007F-8019-4191-8808-891E4762D958}.Release|Win32.ActiveCfg = Release|Win32
-		{8F90007F-8019-4191-8808-891E4762D958}.Release|x64.ActiveCfg = Release|Win32
-		{CA2A69D6-3B9D-45A5-8BF7-4E242E683122}.Debug_eglib|Win32.ActiveCfg = Debug_eglib|Win32
-		{CA2A69D6-3B9D-45A5-8BF7-4E242E683122}.Debug_eglib|x64.ActiveCfg = Debug_eglib|Win32
+		{8F90007F-8019-4191-8808-891E4762D958}.Release|x64.ActiveCfg = Release|x64
+		{8F90007F-8019-4191-8808-891E4762D958}.Release|x64.Build.0 = Release|x64
 		{CA2A69D6-3B9D-45A5-8BF7-4E242E683122}.Debug|Win32.ActiveCfg = Debug|Win32
-		{CA2A69D6-3B9D-45A5-8BF7-4E242E683122}.Debug|x64.ActiveCfg = Debug|Win32
-		{CA2A69D6-3B9D-45A5-8BF7-4E242E683122}.Release_eglib|Win32.ActiveCfg = Release_eglib|Win32
-		{CA2A69D6-3B9D-45A5-8BF7-4E242E683122}.Release_eglib|x64.ActiveCfg = Release_eglib|Win32
+		{CA2A69D6-3B9D-45A5-8BF7-4E242E683122}.Debug|x64.ActiveCfg = Debug|x64
+		{CA2A69D6-3B9D-45A5-8BF7-4E242E683122}.Debug|x64.Build.0 = Debug|x64
 		{CA2A69D6-3B9D-45A5-8BF7-4E242E683122}.Release|Win32.ActiveCfg = Release|Win32
-		{CA2A69D6-3B9D-45A5-8BF7-4E242E683122}.Release|x64.ActiveCfg = Release|Win32
-		{C2EB666E-9146-4B7A-85F6-25F9EA313770}.Debug_eglib|Win32.ActiveCfg = Debug_eglib|Win32
-		{C2EB666E-9146-4B7A-85F6-25F9EA313770}.Debug_eglib|x64.ActiveCfg = Debug_eglib|Win32
+		{CA2A69D6-3B9D-45A5-8BF7-4E242E683122}.Release|x64.ActiveCfg = Release|x64
+		{CA2A69D6-3B9D-45A5-8BF7-4E242E683122}.Release|x64.Build.0 = Release|x64
 		{C2EB666E-9146-4B7A-85F6-25F9EA313770}.Debug|Win32.ActiveCfg = Debug|Win32
-		{C2EB666E-9146-4B7A-85F6-25F9EA313770}.Debug|x64.ActiveCfg = Debug|Win32
-		{C2EB666E-9146-4B7A-85F6-25F9EA313770}.Release_eglib|Win32.ActiveCfg = Release_eglib|Win32
-		{C2EB666E-9146-4B7A-85F6-25F9EA313770}.Release_eglib|x64.ActiveCfg = Release_eglib|Win32
+		{C2EB666E-9146-4B7A-85F6-25F9EA313770}.Debug|x64.ActiveCfg = Debug|x64
+		{C2EB666E-9146-4B7A-85F6-25F9EA313770}.Debug|x64.Build.0 = Debug|x64
 		{C2EB666E-9146-4B7A-85F6-25F9EA313770}.Release|Win32.ActiveCfg = Release|Win32
-		{C2EB666E-9146-4B7A-85F6-25F9EA313770}.Release|x64.ActiveCfg = Release|Win32
-		{158073ED-99AE-4196-9EDC-DDB2344F8466}.Debug_eglib|Win32.ActiveCfg = Debug_eglib|Win32
-		{158073ED-99AE-4196-9EDC-DDB2344F8466}.Debug_eglib|Win32.Build.0 = Debug_eglib|Win32
-		{158073ED-99AE-4196-9EDC-DDB2344F8466}.Debug_eglib|x64.ActiveCfg = Debug_eglib|x64
-		{158073ED-99AE-4196-9EDC-DDB2344F8466}.Debug_eglib|x64.Build.0 = Debug_eglib|x64
+		{C2EB666E-9146-4B7A-85F6-25F9EA313770}.Release|x64.ActiveCfg = Release|x64
+		{C2EB666E-9146-4B7A-85F6-25F9EA313770}.Release|x64.Build.0 = Release|x64
 		{158073ED-99AE-4196-9EDC-DDB2344F8466}.Debug|Win32.ActiveCfg = Debug|Win32
-		{158073ED-99AE-4196-9EDC-DDB2344F8466}.Debug|x64.ActiveCfg = Debug|Win32
-		{158073ED-99AE-4196-9EDC-DDB2344F8466}.Release_eglib|Win32.ActiveCfg = Release_eglib|Win32
-		{158073ED-99AE-4196-9EDC-DDB2344F8466}.Release_eglib|Win32.Build.0 = Release_eglib|Win32
-		{158073ED-99AE-4196-9EDC-DDB2344F8466}.Release_eglib|x64.ActiveCfg = Release_eglib|Win32
+		{158073ED-99AE-4196-9EDC-DDB2344F8466}.Debug|Win32.Build.0 = Debug|Win32
+		{158073ED-99AE-4196-9EDC-DDB2344F8466}.Debug|x64.ActiveCfg = Debug|x64
+		{158073ED-99AE-4196-9EDC-DDB2344F8466}.Debug|x64.Build.0 = Debug|x64
 		{158073ED-99AE-4196-9EDC-DDB2344F8466}.Release|Win32.ActiveCfg = Release|Win32
-		{158073ED-99AE-4196-9EDC-DDB2344F8466}.Release|x64.ActiveCfg = Release|Win32
-		{80A0620A-3478-4E1A-AA7C-0D2387B892AB}.Debug_eglib|Win32.ActiveCfg = Debug_eglib|Win32
-		{80A0620A-3478-4E1A-AA7C-0D2387B892AB}.Debug_eglib|Win32.Build.0 = Debug_eglib|Win32
-		{80A0620A-3478-4E1A-AA7C-0D2387B892AB}.Debug_eglib|x64.ActiveCfg = Debug_eglib|x64
-		{80A0620A-3478-4E1A-AA7C-0D2387B892AB}.Debug_eglib|x64.Build.0 = Debug_eglib|x64
+		{158073ED-99AE-4196-9EDC-DDB2344F8466}.Release|Win32.Build.0 = Release|Win32
+		{158073ED-99AE-4196-9EDC-DDB2344F8466}.Release|x64.ActiveCfg = Release|x64
+		{158073ED-99AE-4196-9EDC-DDB2344F8466}.Release|x64.Build.0 = Release|x64
 		{80A0620A-3478-4E1A-AA7C-0D2387B892AB}.Debug|Win32.ActiveCfg = Debug|Win32
-		{80A0620A-3478-4E1A-AA7C-0D2387B892AB}.Debug|x64.ActiveCfg = Debug|Win32
-		{80A0620A-3478-4E1A-AA7C-0D2387B892AB}.Release_eglib|Win32.ActiveCfg = Release_eglib|Win32
-		{80A0620A-3478-4E1A-AA7C-0D2387B892AB}.Release_eglib|Win32.Build.0 = Release_eglib|Win32
-		{80A0620A-3478-4E1A-AA7C-0D2387B892AB}.Release_eglib|x64.ActiveCfg = Release_eglib|Win32
+		{80A0620A-3478-4E1A-AA7C-0D2387B892AB}.Debug|x64.ActiveCfg = Debug|x64
+		{80A0620A-3478-4E1A-AA7C-0D2387B892AB}.Debug|x64.Build.0 = Debug|x64
 		{80A0620A-3478-4E1A-AA7C-0D2387B892AB}.Release|Win32.ActiveCfg = Release|Win32
-		{80A0620A-3478-4E1A-AA7C-0D2387B892AB}.Release|x64.ActiveCfg = Release|Win32
-		{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Debug_eglib|Win32.ActiveCfg = Debug_eglib|Win32
-		{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Debug_eglib|Win32.Build.0 = Debug_eglib|Win32
-		{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Debug_eglib|x64.ActiveCfg = Debug_eglib|x64
-		{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Debug_eglib|x64.Build.0 = Debug_eglib|x64
+		{80A0620A-3478-4E1A-AA7C-0D2387B892AB}.Release|x64.ActiveCfg = Release|x64
+		{80A0620A-3478-4E1A-AA7C-0D2387B892AB}.Release|x64.Build.0 = Release|x64
 		{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Debug|Win32.ActiveCfg = Debug|Win32
 		{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Debug|Win32.Build.0 = Debug|Win32
-		{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Debug|x64.ActiveCfg = Debug|Win32
-		{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Release_eglib|Win32.ActiveCfg = Release_eglib|Win32
-		{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Release_eglib|Win32.Build.0 = Release_eglib|Win32
-		{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Release_eglib|x64.ActiveCfg = Release_eglib|Win32
+		{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Debug|x64.ActiveCfg = Debug|x64
+		{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Debug|x64.Build.0 = Debug|x64
 		{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Release|Win32.ActiveCfg = Release|Win32
 		{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Release|Win32.Build.0 = Release|Win32
-		{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Release|x64.ActiveCfg = Release|Win32
-		{33014734-0F46-4099-9A21-0C989E428681}.Debug_eglib|Win32.ActiveCfg = Debug_eglib|Win32
-		{33014734-0F46-4099-9A21-0C989E428681}.Debug_eglib|Win32.Build.0 = Debug_eglib|Win32
-		{33014734-0F46-4099-9A21-0C989E428681}.Debug_eglib|x64.ActiveCfg = Debug_eglib|x64
-		{33014734-0F46-4099-9A21-0C989E428681}.Debug_eglib|x64.Build.0 = Debug_eglib|x64
+		{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Release|x64.ActiveCfg = Release|x64
+		{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Release|x64.Build.0 = Release|x64
 		{33014734-0F46-4099-9A21-0C989E428681}.Debug|Win32.ActiveCfg = Debug|Win32
 		{33014734-0F46-4099-9A21-0C989E428681}.Debug|Win32.Build.0 = Debug|Win32
-		{33014734-0F46-4099-9A21-0C989E428681}.Debug|x64.ActiveCfg = Debug|Win32
-		{33014734-0F46-4099-9A21-0C989E428681}.Release_eglib|Win32.ActiveCfg = Release_eglib|Win32
-		{33014734-0F46-4099-9A21-0C989E428681}.Release_eglib|Win32.Build.0 = Release_eglib|Win32
-		{33014734-0F46-4099-9A21-0C989E428681}.Release_eglib|x64.ActiveCfg = Release_eglib|Win32
+		{33014734-0F46-4099-9A21-0C989E428681}.Debug|x64.ActiveCfg = Debug|x64
+		{33014734-0F46-4099-9A21-0C989E428681}.Debug|x64.Build.0 = Debug|x64
 		{33014734-0F46-4099-9A21-0C989E428681}.Release|Win32.ActiveCfg = Release|Win32
 		{33014734-0F46-4099-9A21-0C989E428681}.Release|Win32.Build.0 = Release|Win32
-		{33014734-0F46-4099-9A21-0C989E428681}.Release|x64.ActiveCfg = Release|Win32
-		{5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Debug_eglib|Win32.ActiveCfg = Debug|Win32
-		{5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Debug_eglib|Win32.Build.0 = Debug|Win32
-		{5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Debug_eglib|x64.ActiveCfg = Debug|Win32
-		{5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Debug_eglib|x64.Build.0 = Debug|Win32
-		{5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Debug|Win32.ActiveCfg = Debug|Win32
-		{5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Debug|Win32.Build.0 = Debug|Win32
-		{5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Debug|x64.ActiveCfg = Debug|Win32
-		{5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Release_eglib|Win32.ActiveCfg = Release|Win32
-		{5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Release_eglib|Win32.Build.0 = Release|Win32
-		{5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Release_eglib|x64.ActiveCfg = Release|Win32
-		{5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Release|Win32.ActiveCfg = Release|Win32
-		{5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Release|Win32.Build.0 = Release|Win32
-		{5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Release|x64.ActiveCfg = Release|Win32
-		{86663B87-4CD2-42B6-8D8E-C79DA1CCDEE6}.Debug_eglib|Win32.ActiveCfg = Debug_eglib|Win32
-		{86663B87-4CD2-42B6-8D8E-C79DA1CCDEE6}.Debug_eglib|x64.ActiveCfg = Debug|Win32
+		{33014734-0F46-4099-9A21-0C989E428681}.Release|x64.ActiveCfg = Release|x64
+		{33014734-0F46-4099-9A21-0C989E428681}.Release|x64.Build.0 = Release|x64
 		{86663B87-4CD2-42B6-8D8E-C79DA1CCDEE6}.Debug|Win32.ActiveCfg = Debug|Win32
 		{86663B87-4CD2-42B6-8D8E-C79DA1CCDEE6}.Debug|x64.ActiveCfg = Debug|Win32
-		{86663B87-4CD2-42B6-8D8E-C79DA1CCDEE6}.Release_eglib|Win32.ActiveCfg = Release|Win32
-		{86663B87-4CD2-42B6-8D8E-C79DA1CCDEE6}.Release_eglib|x64.ActiveCfg = Release|Win32
+		{86663B87-4CD2-42B6-8D8E-C79DA1CCDEE6}.Debug|x64.Build.0 = Debug|Win32
 		{86663B87-4CD2-42B6-8D8E-C79DA1CCDEE6}.Release|Win32.ActiveCfg = Release|Win32
 		{86663B87-4CD2-42B6-8D8E-C79DA1CCDEE6}.Release|x64.ActiveCfg = Release|Win32
-		{83D4D926-2983-4770-BA92-EB9CB8828C95}.Debug_eglib|Win32.ActiveCfg = Debug_eglib|Win32
-		{83D4D926-2983-4770-BA92-EB9CB8828C95}.Debug_eglib|x64.ActiveCfg = Debug|Win32
+		{86663B87-4CD2-42B6-8D8E-C79DA1CCDEE6}.Release|x64.Build.0 = Release|Win32
 		{83D4D926-2983-4770-BA92-EB9CB8828C95}.Debug|Win32.ActiveCfg = Debug|Win32
 		{83D4D926-2983-4770-BA92-EB9CB8828C95}.Debug|x64.ActiveCfg = Debug|Win32
-		{83D4D926-2983-4770-BA92-EB9CB8828C95}.Release_eglib|Win32.ActiveCfg = Release|Win32
-		{83D4D926-2983-4770-BA92-EB9CB8828C95}.Release_eglib|x64.ActiveCfg = Release|Win32
+		{83D4D926-2983-4770-BA92-EB9CB8828C95}.Debug|x64.Build.0 = Debug|Win32
 		{83D4D926-2983-4770-BA92-EB9CB8828C95}.Release|Win32.ActiveCfg = Release|Win32
 		{83D4D926-2983-4770-BA92-EB9CB8828C95}.Release|x64.ActiveCfg = Release|Win32
+		{83D4D926-2983-4770-BA92-EB9CB8828C95}.Release|x64.Build.0 = Release|Win32
+		{5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Debug|Win32.ActiveCfg = Debug|Win32
+		{5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Debug|Win32.Build.0 = Debug|Win32
+		{5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Debug|x64.ActiveCfg = Debug|Win32
+		{5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Release|Win32.ActiveCfg = Release|Win32
+		{5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Release|Win32.Build.0 = Release|Win32
+		{5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Release|x64.ActiveCfg = Release|Win32
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
diff --git a/msvc/mono.vcxproj b/msvc/mono.vcxproj
new file mode 100644
index 0000000..92e8888
--- /dev/null
+++ b/msvc/mono.vcxproj
@@ -0,0 +1,205 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{A0EDDCD9-940F-432C-A28F-7EF322437D79}</ProjectGuid>
+    <RootNamespace>mono</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\obj\$(ProjectName)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\obj\$(ProjectName)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\obj\$(ProjectName)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\obj\$(ProjectName)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\mono\jit;..\mono\eglib\src;..\..\mono\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_DEBUG;__i386__;TARGET_X86;i386;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;_CONSOLE;HAVE_CONFIG_H;WINVER=0x0500;_WIN32_WINNT=0x0500;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+    </ClCompile>
+    <ProjectReference />
+    <Link>
+      <AdditionalDependencies>mono-2.0.lib;version.lib;libgc.lib;eglib.lib;ws2_32.lib;Psapi.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\mono\jit;..\mono\eglib\src;..\..\mono\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_DEBUG;__x86_64__;TARGET_AMD64;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;_CONSOLE;HAVE_CONFIG_H;WINVER=0x0500;_WIN32_WINNT=0x0500;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>mono-2.0.lib;version.lib;libgc.lib;eglib.lib;ws2_32.lib;Psapi.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\mono\jit;..\mono\eglib\src;..\..\mono\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>NDEBUG;__i386__;TARGET_X86;i386;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;_CONSOLE;HAVE_CONFIG_H;WINVER=0x0500;_WIN32_WINNT=0x0500;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>mono-2.0.lib;version.lib;libgc.lib;eglib.lib;ws2_32.lib;Psapi.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\mono\jit;..\mono\eglib\src;..\..\mono\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>NDEBUG;__x86_64__;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;_CONSOLE;HAVE_CONFIG_H;WINVER=0x0500;_WIN32_WINNT=0x0500;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>mono-2.0.lib;version.lib;libgc.lib;eglib.lib;ws2_32.lib;Psapi.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\mono\mini\main.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="eglib.vcxproj">
+      <Project>{158073ed-99ae-4196-9edc-ddb2344f8466}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+    <ProjectReference Include="libmono.vcxproj">
+      <Project>{cb0d9e92-293c-439c-9ac7-c5f59b6e0771}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/msvc/monodiet.vcxproj b/msvc/monodiet.vcxproj
new file mode 100644
index 0000000..b7ec16d
--- /dev/null
+++ b/msvc/monodiet.vcxproj
@@ -0,0 +1,205 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{8F90007F-8019-4191-8808-891E4762D958}</ProjectGuid>
+    <RootNamespace>monodiet</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)_$(Configuration)/bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)_$(Configuration)/bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)_$(Configuration)/bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)_$(Configuration)/bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\;..\libgc\include;..\VSDependancies\include\glib-2.0\glib;..\VSDependancies\include;..\mono\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_DEBUG;WIN32;_WINDOWS;__WIN32__;HAVE_CONFIG_H;__i386__;TARGET_X86;HOST_WIN32;TARGET_WIN32;GC_NOT_DLL;GC_GCJ_SUPPORT;GC_WIN32_THREADS;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ObjectFileName>$(IntDir)monodiet/</ObjectFileName>
+      <ProgramDataBaseFileName>$(IntDir)monodiet/vc80.pdb</ProgramDataBaseFileName>
+      <XMLDocumentationFileName>$(IntDir)monodiet/</XMLDocumentationFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>glib-2.0.lib;gmodule-2.0.lib;ws2_32.lib;gthread-2.0.lib;gobject-2.0.lib;mono.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\;..\libgc\include;..\VSDependancies\include\glib-2.0\glib;..\VSDependancies\include;..\mono\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_WINDOWS;__WIN32__;HOST_WIN32;TARGET_WIN32;__i386__;TARGET_X86;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ObjectFileName>$(IntDir)monodiet/</ObjectFileName>
+      <ProgramDataBaseFileName>$(IntDir)monodiet/vc80.pdb</ProgramDataBaseFileName>
+      <XMLDocumentationFileName>$(IntDir)monodiet/</XMLDocumentationFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>glib-2.0.lib;gmodule-2.0.lib;ws2_32.lib;gthread-2.0.lib;gobject-2.0.lib;libmono.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\mono\metadata\monodiet.c" />
+    <ClCompile Include="..\mono\metadata\opcodes.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="libmono.vcxproj">
+      <Project>{cb0d9e92-293c-439c-9ac7-c5f59b6e0771}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/msvc/monodis.vcxproj b/msvc/monodis.vcxproj
new file mode 100644
index 0000000..02c88b3
--- /dev/null
+++ b/msvc/monodis.vcxproj
@@ -0,0 +1,215 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{37F50E5A-4818-46CF-81FE-4BB06DE5D42E}</ProjectGuid>
+    <RootNamespace>dis</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)_$(Configuration)/bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)_$(Configuration)/bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)_$(Configuration)/bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)_$(Configuration)/bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\;..\VSDependancies\include\glib-2.0;..\VSDependancies\include\glib-2.0\glib;..\VSDependancies\include;..\VSDependancies\lib\glib-2.0\include;..\mono\;..\mono\jit;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_WINDOWS;__WIN32__;HOST_WIN32;TARGET_WIN32;__i386__;TARGET_X86;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4996;4018;4244;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>glib-2.0.lib;gmodule-2.0.lib;ws2_32.lib;gthread-2.0.lib;gobject-2.0.lib;mono.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <AdditionalIncludeDirectories>..\;..\VSDependancies\include\glib-2.0;..\VSDependancies\include\glib-2.0\glib;..\VSDependancies\include;..\VSDependancies\lib\glib-2.0\include;..\mono\;..\mono\jit;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\;..\VSDependancies\include\glib-2.0;..\VSDependancies\include\glib-2.0\glib;..\VSDependancies\include;..\VSDependancies\lib\glib-2.0\include;..\mono\;..\mono\jit;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_WINDOWS;__WIN32__;HOST_WIN32;TARGET_WIN32;__i386__;TARGET_X86;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4996;4018;4244;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>glib-2.0.lib;gmodule-2.0.lib;ws2_32.lib;gthread-2.0.lib;gobject-2.0.lib;libmono.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <AdditionalIncludeDirectories>..\;..\VSDependancies\include\glib-2.0;..\VSDependancies\include\glib-2.0\glib;..\VSDependancies\include;..\VSDependancies\lib\glib-2.0\include;..\mono\;..\mono\jit;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\mono\dis\declsec.c" />
+    <ClCompile Include="..\mono\dis\dis-cil.c" />
+    <ClCompile Include="..\mono\dis\dump.c" />
+    <ClCompile Include="..\mono\dis\get.c" />
+    <ClCompile Include="..\mono\dis\main.c" />
+    <ClCompile Include="..\mono\metadata\opcodes.c" />
+    <ClCompile Include="..\mono\dis\util.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\mono\dis\declsec.h" />
+    <ClInclude Include="..\mono\dis\dis-cil.h" />
+    <ClInclude Include="..\mono\dis\dump.h" />
+    <ClInclude Include="..\mono\dis\get.h" />
+    <ClInclude Include="..\mono\dis\meta.h" />
+    <ClInclude Include="..\mono\dis\push-pop.h" />
+    <ClInclude Include="..\mono\dis\util.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="libmono.vcxproj">
+      <Project>{cb0d9e92-293c-439c-9ac7-c5f59b6e0771}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/msvc/monograph.vcxproj b/msvc/monograph.vcxproj
new file mode 100644
index 0000000..91caf87
--- /dev/null
+++ b/msvc/monograph.vcxproj
@@ -0,0 +1,201 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{CA2A69D6-3B9D-45A5-8BF7-4E242E683122}</ProjectGuid>
+    <RootNamespace>monograph</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)_$(Configuration)/bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)_$(Configuration)/bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)_$(Configuration)/bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)_$(Configuration)/bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\;..\VSDependancies\include\glib-2.0;..\VSDependancies\include\glib-2.0\glib;..\VSDependancies\include;..\VSDependancies\lib\glib-2.0\include;..\mono\;..\mono\jit;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_WINDOWS;__WIN32__;HOST_WIN32;TARGET_WIN32;__i386__;TARGET_X86;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>glib-2.0.lib;gmodule-2.0.lib;ws2_32.lib;gthread-2.0.lib;gobject-2.0.lib;mono.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <AdditionalIncludeDirectories>..\;..\VSDependancies\include\glib-2.0;..\VSDependancies\include\glib-2.0\glib;..\VSDependancies\include;..\VSDependancies\lib\glib-2.0\include;..\mono\;..\mono\jit;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\;..\VSDependancies\include\glib-2.0;..\VSDependancies\include\glib-2.0\glib;..\VSDependancies\include;..\VSDependancies\lib\glib-2.0\include;..\mono\;..\mono\jit;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_WINDOWS;__WIN32__;HOST_WIN32;TARGET_WIN32;__i386__;TARGET_X86;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>glib-2.0.lib;gmodule-2.0.lib;ws2_32.lib;gthread-2.0.lib;gobject-2.0.lib;libmono.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <AdditionalIncludeDirectories>..\;..\VSDependancies\include\glib-2.0;..\VSDependancies\include\glib-2.0\glib;..\VSDependancies\include;..\VSDependancies\lib\glib-2.0\include;..\mono\;..\mono\jit;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\mono\monograph\monograph.c" />
+    <ClCompile Include="..\mono\metadata\opcodes.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="libmono.vcxproj">
+      <Project>{cb0d9e92-293c-439c-9ac7-c5f59b6e0771}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/msvc/monoposixhelper.vcxproj b/msvc/monoposixhelper.vcxproj
new file mode 100644
index 0000000..e5bf109
--- /dev/null
+++ b/msvc/monoposixhelper.vcxproj
@@ -0,0 +1,227 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{33014734-0F46-4099-9A21-0C989E428681}</ProjectGuid>
+    <RootNamespace>monoposixhelper</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\obj/$(ProjectName)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)_$(Configuration)/bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\obj/$(ProjectName)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)_$(Configuration)/bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\mono\eglib\src;..\..\mono;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_DEBUG;__i386__;TARGET_X86;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;HAVE_CONFIG_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(TargetDir)..\lib\eglib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)MonoPosixHelper.dll</OutputFile>
+      <ModuleDefinitionFile>monoposixhelper.def</ModuleDefinitionFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <ImportLibrary>$(Platform)_$(Configuration)/lib/MonoPosixHelper.lib</ImportLibrary>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\mono\eglib\src;..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_DEBUG;__x86_64__;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;HAVE_CONFIG_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+    </ClCompile>
+    <Link>
+      <OutputFile>$(OutDir)MonoPosixHelper.dll</OutputFile>
+      <ModuleDefinitionFile>monoposixhelper.def</ModuleDefinitionFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <ImportLibrary>$(Platform)_$(Configuration)/lib/MonoPosixHelper.lib</ImportLibrary>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <AdditionalIncludeDirectories>..\..\mono\eglib\src;..\..\mono;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>NDEBUG;__i386__;TARGET_X86;i386;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;HAVE_CONFIG_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(TargetDir)..\lib\eglib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)MonoPosixHelper.dll</OutputFile>
+      <ModuleDefinitionFile>monoposixhelper.def</ModuleDefinitionFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <ImportLibrary>$(Platform)_$(Configuration)/lib/MonoPosixHelper.lib</ImportLibrary>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <AdditionalIncludeDirectories>..\..\mono\eglib\src;..\..\mono;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>NDEBUG;__x86_64__;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;HAVE_CONFIG_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+    </ClCompile>
+    <Link>
+      <OutputFile>$(OutDir)MonoPosixHelper.dll</OutputFile>
+      <ModuleDefinitionFile>monoposixhelper.def</ModuleDefinitionFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <ImportLibrary>$(Platform)_$(Configuration)/lib/MonoPosixHelper.lib</ImportLibrary>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\support\adler32.c" />
+    <ClCompile Include="..\support\compress.c" />
+    <ClCompile Include="..\support\crc32.c" />
+    <ClCompile Include="..\support\deflate.c" />
+    <ClCompile Include="..\support\errno.c" />
+    <ClCompile Include="..\support\infback.c" />
+    <ClCompile Include="..\support\inffast.c" />
+    <ClCompile Include="..\support\inflate.c" />
+    <ClCompile Include="..\support\inftrees.c" />
+    <ClCompile Include="..\support\map.c" />
+    <ClCompile Include="..\support\signal.c" />
+    <ClCompile Include="..\support\stdio.c" />
+    <ClCompile Include="..\support\stdlib.c" />
+    <ClCompile Include="..\support\string.c" />
+    <ClCompile Include="..\support\trees.c" />
+    <ClCompile Include="..\support\uncompr.c" />
+    <ClCompile Include="..\support\zlib-helper.c" />
+    <ClCompile Include="..\support\zutil.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\support\inffast.h" />
+    <ClInclude Include="..\support\crc32.h" />
+    <ClInclude Include="..\support\deflate.h" />
+    <ClInclude Include="..\support\inffixed.h" />
+    <ClInclude Include="..\support\inflate.h" />
+    <ClInclude Include="..\support\inftrees.h" />
+    <ClInclude Include="..\support\map.h" />
+    <ClInclude Include="..\support\mph.h" />
+    <ClInclude Include="..\support\trees.h" />
+    <ClInclude Include="..\support\zconf.h" />
+    <ClInclude Include="..\support\zutil.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="monoposixhelper.def" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="genmdesc.vcxproj">
+      <Project>{b7098dfa-31e6-4006-8a15-1c9a4e925149}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/msvc/pedump.vcxproj b/msvc/pedump.vcxproj
new file mode 100644
index 0000000..2c6e291
--- /dev/null
+++ b/msvc/pedump.vcxproj
@@ -0,0 +1,240 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}</ProjectGuid>
+    <RootNamespace>pedump</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)_$(Configuration)/bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)_$(Configuration)/bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)_$(Configuration)/bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)_$(Configuration)/bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\;..\libgc\include;..\VSDependancies\include\glib-2.0\glib;..\VSDependancies\include;..\mono\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_WINDOWS;__WIN32__;HOST_WIN32;TARGET_WIN32;__i386__;TARGET_X86;GC_NOT_DLL;GC_GCJ_SUPPORT;GC_WIN32_THREADS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ObjectFileName>$(IntDir)pedump/</ObjectFileName>
+      <ProgramDataBaseFileName>$(IntDir)pedump/vc80.pdb</ProgramDataBaseFileName>
+      <XMLDocumentationFileName>$(IntDir)pedump/</XMLDocumentationFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4018;4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>glib-2.0.lib;ws2_32.lib;gthread-2.0.lib;libgc.lib;mono.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>glib-2.0.lib;ws2_32.lib;gthread-2.0.lib;libmono.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\;..\libgc\include;..\VSDependancies\include\glib-2.0\glib;..\VSDependancies\include;..\mono\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_WINDOWS;__WIN32__;HOST_WIN32;TARGET_WIN32;__i386__;TARGET_X86;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ObjectFileName>$(IntDir)pedump/</ObjectFileName>
+      <ProgramDataBaseFileName>$(IntDir)pedump/vc80.pdb</ProgramDataBaseFileName>
+      <XMLDocumentationFileName>$(IntDir)pedump/</XMLDocumentationFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4018;4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>glib-2.0.lib;ws2_32.lib;gthread-2.0.lib;libmono.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>glib-2.0.lib;ws2_32.lib;gthread-2.0.lib;libmono.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\mono\utils\strtod.c" />
+    <ClCompile Include="..\mono\metadata\appdomain.c" />
+    <ClCompile Include="..\mono\metadata\assembly.c" />
+    <ClCompile Include="..\mono\metadata\boehm-gc.c" />
+    <ClCompile Include="..\mono\metadata\class.c" />
+    <ClCompile Include="..\mono\metadata\console-win32.c" />
+    <ClCompile Include="..\mono\metadata\decimal.c" />
+    <ClCompile Include="..\mono\metadata\domain.c" />
+    <ClCompile Include="..\mono\metadata\environment.c" />
+    <ClCompile Include="..\mono\metadata\file-io.c" />
+    <ClCompile Include="..\mono\metadata\filewatcher.c" />
+    <ClCompile Include="..\mono\metadata\gc.c" />
+    <ClCompile Include="..\mono\metadata\icall.c" />
+    <ClCompile Include="..\mono\metadata\image.c" />
+    <ClCompile Include="..\mono\metadata\loader.c" />
+    <ClCompile Include="..\mono\metadata\locales.c" />
+    <ClCompile Include="..\mono\metadata\marshal.c" />
+    <ClCompile Include="..\mono\metadata\metadata.c" />
+    <ClCompile Include="..\mono\metadata\monitor.c" />
+    <ClCompile Include="..\mono\metadata\mono-config.c" />
+    <ClCompile Include="..\mono\utils\mono-dl.c" />
+    <ClCompile Include="..\mono\metadata\object.c" />
+    <ClCompile Include="..\mono\metadata\pedump.c" />
+    <ClCompile Include="..\mono\metadata\process.c" />
+    <ClCompile Include="..\mono\metadata\profiler.c" />
+    <ClCompile Include="..\mono\metadata\rand.c" />
+    <ClCompile Include="..\mono\metadata\rawbuffer.c" />
+    <ClCompile Include="..\mono\metadata\reflection.c" />
+    <ClCompile Include="..\mono\metadata\security-manager.c" />
+    <ClCompile Include="..\mono\metadata\security.c" />
+    <ClCompile Include="..\mono\metadata\socket-io.c" />
+    <ClCompile Include="..\mono\metadata\string-icalls.c" />
+    <ClCompile Include="..\mono\metadata\sysmath.c" />
+    <ClCompile Include="..\mono\metadata\threadpool.c" />
+    <ClCompile Include="..\mono\metadata\threads.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="libmono.vcxproj">
+      <Project>{cb0d9e92-293c-439c-9ac7-c5f59b6e0771}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/msvc/profiler-cov.vcxproj b/msvc/profiler-cov.vcxproj
new file mode 100644
index 0000000..8bf8678
--- /dev/null
+++ b/msvc/profiler-cov.vcxproj
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug_eglib|Win32">
+      <Configuration>Debug_eglib</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{83D4D926-2983-4770-BA92-EB9CB8828C95}</ProjectGuid>
+    <RootNamespace>profilercov</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_eglib|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_eglib|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_eglib|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_eglib|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_eglib|Win32'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;PROFILERCOV_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;PROFILERCOV_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_eglib|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\mono\jit;..\mono\eglib\src;..\..\mono\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;PROFILERCOV_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>mono.lib;version.lib;libgc.lib;eglib.lib;ws2_32.lib;Psapi.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\mono\profiler\mono-cov.c" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/msvc/profiler-logging.vcxproj b/msvc/profiler-logging.vcxproj
new file mode 100644
index 0000000..cd0bed6
--- /dev/null
+++ b/msvc/profiler-logging.vcxproj
@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug_eglib|Win32">
+      <Configuration>Debug_eglib</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{86663B87-4CD2-42B6-8D8E-C79DA1CCDEE6}</ProjectGuid>
+    <RootNamespace>profilerlogging</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_eglib|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_eglib|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_eglib|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_eglib|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_eglib|Win32'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;PROFILERLOGGING_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;PROFILERLOGGING_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_eglib|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\mono\jit;..\mono\eglib\src;..\..\mono\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>TARGET_X86;_DEBUG;__i386__;TARGET_X86;i386;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;GC_NOT_DLL;HAVE_CONFIG_H;WINVER=0x0500;_WIN32_WINNT=0x0500;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <ShowIncludes>true</ShowIncludes>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>mono.lib;version.lib;libgc.lib;eglib.lib;ws2_32.lib;Psapi.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\mono\profiler\mono-profiler-logging.c" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/msvc/test-invoke.vcxproj b/msvc/test-invoke.vcxproj
new file mode 100644
index 0000000..475b32b
--- /dev/null
+++ b/msvc/test-invoke.vcxproj
@@ -0,0 +1,202 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{C5639B3F-288A-4A4B-A4A5-C0D85834221D}</ProjectGuid>
+    <RootNamespace>testinvoke</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)_$(Configuration)/bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)_$(Configuration)/bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)_$(Configuration)/bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)_$(Configuration)/bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\libgc\include;..\..\VSDependancies\include\glib-2.0;..\..\VSDependancies\include\glib-2.0\glib;..\..\VSDependancies\lib\glib-2.0\include;..\..\VSDependancies\include;..\..\;C:\cygwin\opt\mono\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ObjectFileName>$(IntDir)invoke/</ObjectFileName>
+      <ProgramDataBaseFileName>$(IntDir)invoke/vc80.pdb</ProgramDataBaseFileName>
+      <XMLDocumentationFileName>$(IntDir)invoke/</XMLDocumentationFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>glib-2.0.lib;gmodule-2.0.lib;ws2_32.lib;gthread-2.0.lib;gobject-2.0.lib;libmono.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\libgc\include;..\..\VSDependancies\include\glib-2.0;..\..\VSDependancies\include\glib-2.0\glib;..\..\VSDependancies\lib\glib-2.0\include;..\..\VSDependancies\include;..\..\;C:\cygwin\opt\mono\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ObjectFileName>$(IntDir)invoke/</ObjectFileName>
+      <ProgramDataBaseFileName>$(IntDir)invoke/vc80.pdb</ProgramDataBaseFileName>
+      <XMLDocumentationFileName>$(IntDir)invoke/</XMLDocumentationFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>glib-2.0.lib;gmodule-2.0.lib;ws2_32.lib;gthread-2.0.lib;gobject-2.0.lib;libmono.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\samples\embed\test-invoke.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="libmono.vcxproj">
+      <Project>{cb0d9e92-293c-439c-9ac7-c5f59b6e0771}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/msvc/test-metadata.vcxproj b/msvc/test-metadata.vcxproj
new file mode 100644
index 0000000..f28c1e3
--- /dev/null
+++ b/msvc/test-metadata.vcxproj
@@ -0,0 +1,202 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{C2EB666E-9146-4B7A-85F6-25F9EA313770}</ProjectGuid>
+    <RootNamespace>testmetadata</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)_$(Configuration)/bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)_$(Configuration)/bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)_$(Configuration)/bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)_$(Configuration)/bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..;..\..\VSDependancies\include\glib-2.0\glib;..\..\VSDependancies\include;C:\cygwin\opt\mono\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ObjectFileName>$(IntDir)metadata/</ObjectFileName>
+      <ProgramDataBaseFileName>$(IntDir)metadata/vc80.pdb</ProgramDataBaseFileName>
+      <XMLDocumentationFileName>$(IntDir)metadata/</XMLDocumentationFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>glib-2.0.lib;gmodule-2.0.lib;ws2_32.lib;gthread-2.0.lib;gobject-2.0.lib;libmono.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..;..\..\VSDependancies\include\glib-2.0\glib;..\..\VSDependancies\include;C:\cygwin\opt\mono\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ObjectFileName>$(IntDir)metadata/</ObjectFileName>
+      <ProgramDataBaseFileName>$(IntDir)metadata/vc80.pdb</ProgramDataBaseFileName>
+      <XMLDocumentationFileName>$(IntDir)metadata/</XMLDocumentationFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>glib-2.0.lib;gmodule-2.0.lib;ws2_32.lib;gthread-2.0.lib;gobject-2.0.lib;libmono.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\samples\embed\test-metadata.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="libmono.vcxproj">
+      <Project>{cb0d9e92-293c-439c-9ac7-c5f59b6e0771}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/msvc/test_eglib.vcxproj b/msvc/test_eglib.vcxproj
new file mode 100644
index 0000000..8695a92
--- /dev/null
+++ b/msvc/test_eglib.vcxproj
@@ -0,0 +1,221 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{80A0620A-3478-4E1A-AA7C-0D2387B892AB}</ProjectGuid>
+    <RootNamespace>test_eglib</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)_$(Configuration)/bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)_$(Configuration)/bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)_$(Configuration)/bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)_$(Configuration)/bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>../eglib/src;../eglib/test;../eglib;../msvc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_FORTIFY_SOURCE=2;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level4</WarningLevel>
+      <TreatWarningAsError>false</TreatWarningAsError>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>Ws2_32.lib;Psapi.lib;eglib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <OptimizeReferences>false</OptimizeReferences>
+      <EnableCOMDATFolding>false</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <AdditionalIncludeDirectories>../eglib/src;../eglib/test;../eglib;../msvc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_FORTIFY_SOURCE=2;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level4</WarningLevel>
+      <TreatWarningAsError>false</TreatWarningAsError>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>Ws2_32.lib;Psapi.lib;eglib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>../eglib/src;../eglib/test;../eglib;../msvc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_FORTIFY_SOURCE=2;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level4</WarningLevel>
+      <TreatWarningAsError>false</TreatWarningAsError>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>Ws2_32.lib;Psapi.lib;eglib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <OptimizeReferences>false</OptimizeReferences>
+      <EnableCOMDATFolding>false</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <AdditionalIncludeDirectories>../eglib/src;../eglib/test;../eglib;../msvc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_FORTIFY_SOURCE=2;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level4</WarningLevel>
+      <TreatWarningAsError>false</TreatWarningAsError>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>Ws2_32.lib;Psapi.lib;eglib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\eglib\test\array.c" />
+    <ClCompile Include="..\eglib\test\dir.c" />
+    <ClCompile Include="..\eglib\test\driver.c" />
+    <ClCompile Include="..\eglib\test\endian.c" />
+    <ClCompile Include="..\eglib\test\fake.c" />
+    <ClCompile Include="..\eglib\test\file.c" />
+    <ClCompile Include="getopt.c" />
+    <ClCompile Include="getopt_long.c" />
+    <ClCompile Include="..\eglib\test\hashtable.c" />
+    <ClCompile Include="..\eglib\test\list.c" />
+    <ClCompile Include="..\eglib\test\markup.c" />
+    <ClCompile Include="..\eglib\test\memory.c" />
+    <ClCompile Include="..\eglib\test\module.c" />
+    <ClCompile Include="..\eglib\test\path.c" />
+    <ClCompile Include="..\eglib\test\pattern.c" />
+    <ClCompile Include="..\eglib\test\ptrarray.c" />
+    <ClCompile Include="..\eglib\test\queue.c" />
+    <ClCompile Include="..\eglib\test\shell.c" />
+    <ClCompile Include="..\eglib\test\sizes.c" />
+    <ClCompile Include="..\eglib\test\slist.c" />
+    <ClCompile Include="..\eglib\test\spawn.c" />
+    <ClCompile Include="..\eglib\test\string-util.c" />
+    <ClCompile Include="..\eglib\test\string.c" />
+    <ClCompile Include="..\eglib\test\test.c" />
+    <ClCompile Include="..\eglib\test\timer.c" />
+    <ClCompile Include="..\eglib\test\unicode.c" />
+    <ClCompile Include="..\eglib\test\utf8.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="getopt.h" />
+    <ClInclude Include="getopt_long.h" />
+    <ClInclude Include="..\eglib\src\glib.h" />
+    <ClInclude Include="..\eglib\test\test.h" />
+    <ClInclude Include="..\eglib\test\tests.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="eglib.vcxproj">
+      <Project>{158073ed-99ae-4196-9edc-ddb2344f8466}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/msvc/teste.vcxproj b/msvc/teste.vcxproj
new file mode 100644
index 0000000..4125f75
--- /dev/null
+++ b/msvc/teste.vcxproj
@@ -0,0 +1,202 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{6FDE4E5E-57D0-432F-A987-6C226A7827E4}</ProjectGuid>
+    <RootNamespace>teste</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)_$(Configuration)/bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)_$(Configuration)/bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)_$(Configuration)/bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)_$(Configuration)/bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\libgc\include;..\..\VSDependancies\include\glib-2.0;..\..\VSDependancies\include\glib-2.0\glib;..\..\VSDependancies\lib\glib-2.0\include;..\..\VSDependancies\include;..\..\;C:\cygwin\opt\mono\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ObjectFileName>$(IntDir)e/</ObjectFileName>
+      <ProgramDataBaseFileName>$(IntDir)e/vc80.pdb</ProgramDataBaseFileName>
+      <XMLDocumentationFileName>$(IntDir)e/</XMLDocumentationFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>glib-2.0.lib;gmodule-2.0.lib;ws2_32.lib;gthread-2.0.lib;gobject-2.0.lib;libmono.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..\libgc\include;..\..\VSDependancies\include\glib-2.0;..\..\VSDependancies\include\glib-2.0\glib;..\..\VSDependancies\lib\glib-2.0\include;..\..\VSDependancies\include;..\..\;C:\cygwin\opt\mono\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ObjectFileName>$(IntDir)e/</ObjectFileName>
+      <ProgramDataBaseFileName>$(IntDir)e/vc80.pdb</ProgramDataBaseFileName>
+      <XMLDocumentationFileName>$(IntDir)e/</XMLDocumentationFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>glib-2.0.lib;gmodule-2.0.lib;ws2_32.lib;gthread-2.0.lib;gobject-2.0.lib;libmono.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\samples\embed\teste.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="libmono.vcxproj">
+      <Project>{cb0d9e92-293c-439c-9ac7-c5f59b6e0771}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/msvc/winsetup.bat b/msvc/winsetup.bat
new file mode 100755
index 0000000..33a72f6
--- /dev/null
+++ b/msvc/winsetup.bat
@@ -0,0 +1,13 @@
+ at echo off
+cd ..
+copy winconfig.h config.h
+goto end
+:error
+echo fatal error: the VSDepenancies directory was not found in the "mono" directory
+echo error: you must download and unzip that file
+exit /b 100
+goto end
+:ok
+echo OK
+:end
+exit /b 0
diff --git a/po/Makefile.in b/po/Makefile.in
index 60fa26b..b95d91c 100644
--- a/po/Makefile.in
+++ b/po/Makefile.in
@@ -145,6 +145,7 @@ MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
 MONO_DL_NEED_USCORE = @MONO_DL_NEED_USCORE@
 MONO_NACL_ALIGN_MASK_OFF = @MONO_NACL_ALIGN_MASK_OFF@
+MOONLIGHT_DEFINES = @MOONLIGHT_DEFINES@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
diff --git a/po/mcs/ChangeLog b/po/mcs/ChangeLog
index 24b8230..55f43fc 100644
--- a/po/mcs/ChangeLog
+++ b/po/mcs/ChangeLog
@@ -1,3 +1,15 @@
+2010-12-16  Marek Safar  <marek.safar at gmail.com>
+
+	Build po files from cs-parser.jay and not cs-parser.cs
+
+2010-12-16  Marek Safar  <marek.safar at gmail.com>
+
+	Updated mcs translations, added Brazilian Portuguese
+
+2010-11-29  Robert Nagy  <robert at openbsd.org>
+
+	Add support for the internal boehm-gc on OpenBSD
+
 2010-08-04  Andrew Jorgensen  <ajorgensen at novell.com>
 
 	* POTFILES.in: mcs lives under mono now, so the ../ gets dropped
diff --git a/po/mcs/LINGUAS b/po/mcs/LINGUAS
index dc8819e..5751de4 100644
--- a/po/mcs/LINGUAS
+++ b/po/mcs/LINGUAS
@@ -1,3 +1,4 @@
 es
 ja
 de
+pt_BR
\ No newline at end of file
diff --git a/po/mcs/POTFILES.in b/po/mcs/POTFILES.in
index bf6805b..87e67c3 100644
--- a/po/mcs/POTFILES.in
+++ b/po/mcs/POTFILES.in
@@ -1,11 +1,14 @@
 # List of source files which contain translatable strings.
 mcs/mcs/anonymous.cs
+mcs/mcs/argument.cs
 mcs/mcs/assign.cs
 mcs/mcs/attribute.cs
+mcs/mcs/cs-parser.jay
 mcs/mcs/cs-tokenizer.cs
 mcs/mcs/cfold.cs
 mcs/mcs/class.cs
 mcs/mcs/codegen.cs
+mcs/mcs/complete.cs
 mcs/mcs/const.cs
 mcs/mcs/constant.cs
 mcs/mcs/convert.cs
@@ -13,27 +16,34 @@ mcs/mcs/decl.cs
 mcs/mcs/delegate.cs
 mcs/mcs/doc.cs
 mcs/mcs/driver.cs
+mcs/mcs/dynamic.cs
 mcs/mcs/ecore.cs
 mcs/mcs/enum.cs
 mcs/mcs/eval.cs
 mcs/mcs/expression.cs
+mcs/mcs/field.cs
 mcs/mcs/flowanalysis.cs
 mcs/mcs/generic.cs
+mcs/mcs/import.cs
 mcs/mcs/iterators.cs
 mcs/mcs/lambda.cs
 mcs/mcs/linq.cs
 mcs/mcs/literal.cs
 mcs/mcs/location.cs
+mcs/mcs/membercache.cs
+mcs/mcs/method.cs
 mcs/mcs/modifiers.cs
 mcs/mcs/namespace.cs
 mcs/mcs/nullable.cs
 mcs/mcs/parameter.cs
 mcs/mcs/pending.cs
+mcs/mcs/property.cs
+mcs/mcs/reflection.cs
 mcs/mcs/report.cs
 mcs/mcs/rootcontext.cs
 mcs/mcs/roottypes.cs
 mcs/mcs/statement.cs
 mcs/mcs/support.cs
+mcs/mcs/typespec.cs
 mcs/mcs/typemanager.cs
 mcs/mcs/symbolwriter.cs
-
diff --git a/po/mcs/de.gmo b/po/mcs/de.gmo
index 7b9efc9..5bc93a1 100644
Binary files a/po/mcs/de.gmo and b/po/mcs/de.gmo differ
diff --git a/po/mcs/de.po b/po/mcs/de.po
index 9ae6fcf..156aac9 100644
--- a/po/mcs/de.po
+++ b/po/mcs/de.po
@@ -2,97 +2,121 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: http://www.mono-project.com/Bugs\n"
-"POT-Creation-Date: 2010-11-12 03:29-0700\n"
+"POT-Creation-Date: 2011-01-18 10:45-0700\n"
 "PO-Revision-Date: 2008-09-26 15:14+0100\n"
 "Last-Translator: Daniel Nauck <dna at mono-project.de>\n"
 "Language-Team: http://www.mono-project.de\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Language: \n"
 "X-Poedit-Language: German\n"
 "X-Poedit-Country: GERMANY\n"
 
-#: mcs/mcs/anonymous.cs:857
+#: mcs/mcs/anonymous.cs:880
 #, csharp-format
 msgid "Cannot convert `{0}' to an expression tree of non-delegate type `{1}'"
 msgstr ""
 
-#: mcs/mcs/anonymous.cs:862
+#: mcs/mcs/anonymous.cs:885
 #, csharp-format
 msgid "Cannot convert `{0}' to non-delegate type `{1}'"
 msgstr ""
 
-#: mcs/mcs/anonymous.cs:874
+#: mcs/mcs/anonymous.cs:897
 #, csharp-format
 msgid ""
 "Cannot convert `{0}' to delegate type `{1}' since there is a parameter "
 "mismatch"
 msgstr ""
 
-#: mcs/mcs/anonymous.cs:886 mcs/mcs/ecore.cs:4172
+#: mcs/mcs/anonymous.cs:909 mcs/mcs/ecore.cs:4524
 #, csharp-format
 msgid "Delegate `{0}' does not take `{1}' arguments"
 msgstr ""
 
-#: mcs/mcs/anonymous.cs:901
+#: mcs/mcs/anonymous.cs:924
 #, csharp-format
 msgid "Parameter `{0}' should not be declared with the `{1}' keyword"
 msgstr ""
 
-#: mcs/mcs/anonymous.cs:904
+#: mcs/mcs/anonymous.cs:927
 #, csharp-format
 msgid "Parameter `{0}' must be declared with the `{1}' keyword"
 msgstr ""
 
-#: mcs/mcs/anonymous.cs:925
+#: mcs/mcs/anonymous.cs:948
 #, csharp-format
 msgid "Parameter `{0}' is declared as type `{1}' but should be `{2}'"
 msgstr ""
 
-#: mcs/mcs/anonymous.cs:1080
+#: mcs/mcs/anonymous.cs:1103
 msgid "An anonymous method cannot be converted to an expression tree"
 msgstr ""
 
-#: mcs/mcs/anonymous.cs:1099
+#: mcs/mcs/anonymous.cs:1122
 #, csharp-format
 msgid ""
 "Cannot convert anonymous method block without a parameter list to delegate "
 "type `{0}' because it has one or more `out' parameters"
 msgstr ""
 
-#: mcs/mcs/anonymous.cs:1123
+#: mcs/mcs/anonymous.cs:1146
 msgid ""
 "Anonymous methods and lambda expressions cannot be used in the current "
 "context"
 msgstr ""
 
-#: mcs/mcs/anonymous.cs:1165
+#: mcs/mcs/anonymous.cs:1188
 #, csharp-format
 msgid ""
 "Local variable or parameter `{0}' cannot have their address taken and be "
 "used inside an anonymous method or lambda expression"
 msgstr ""
 
-#: mcs/mcs/anonymous.cs:1430
+#: mcs/mcs/anonymous.cs:1438
 msgid "An expression tree cannot contain an anonymous method expression"
 msgstr ""
 
-#: mcs/mcs/anonymous.cs:1657
+#: mcs/mcs/argument.cs:101
+msgid ""
+"An expression tree cannot contain an invocation which uses optional parameter"
+msgstr ""
+
+#: mcs/mcs/argument.cs:184
+msgid "An expression tree cannot contain named argument"
+msgstr ""
+
+#: mcs/mcs/argument.cs:303
 #, csharp-format
 msgid ""
-"`{0}': An anonymous type cannot have multiple properties with the same name"
+"The method group `{0}' cannot be used as an argument of dynamic operation. "
+"Consider using parentheses to invoke the method"
+msgstr ""
+
+#: mcs/mcs/argument.cs:307
+msgid ""
+"An anonymous method or lambda expression cannot be used as an argument of "
+"dynamic operation. Consider using a cast"
+msgstr ""
+
+#: mcs/mcs/argument.cs:310
+#, csharp-format
+msgid ""
+"An expression of type `{0}' cannot be used as an argument of dynamic "
+"operation"
 msgstr ""
 
-#: mcs/mcs/assign.cs:295
+#: mcs/mcs/assign.cs:299
 msgid "An expression tree cannot contain an assignment operator"
 msgstr ""
 
-#: mcs/mcs/assign.cs:571
+#: mcs/mcs/assign.cs:627
 #, csharp-format
 msgid "Cannot assign to `{0}' because it is a `{1}'"
 msgstr ""
 
-#: mcs/mcs/attribute.cs:168
+#: mcs/mcs/attribute.cs:196
 #, csharp-format
 msgid ""
 "`{0}' is not a valid named attribute argument. Named attribute arguments "
@@ -100,199 +124,689 @@ msgid ""
 "properties which are public and not static"
 msgstr ""
 
-#: mcs/mcs/attribute.cs:177
+#: mcs/mcs/attribute.cs:205
 #, csharp-format
 msgid ""
 "`{0}' is not a valid named attribute argument because it is not a valid "
 "attribute parameter type"
 msgstr ""
 
-#: mcs/mcs/attribute.cs:183
+#: mcs/mcs/attribute.cs:211
 msgid "An attribute argument cannot be dynamic expression"
 msgstr ""
 
-#: mcs/mcs/attribute.cs:188
+#: mcs/mcs/attribute.cs:216
 msgid "The Guid attribute must be specified with the ComImport attribute"
 msgstr ""
 
-#: mcs/mcs/attribute.cs:193
+#: mcs/mcs/attribute.cs:221
 #, csharp-format
 msgid "Do not use `{0}' directly. Use parameter modifier `this' instead"
 msgstr ""
 
-#: mcs/mcs/attribute.cs:198
+#: mcs/mcs/attribute.cs:226
 #, csharp-format
 msgid "Do not use `{0}' directly. Use `dynamic' keyword instead"
 msgstr ""
 
-#: mcs/mcs/attribute.cs:207
+#: mcs/mcs/attribute.cs:235
 #, csharp-format
 msgid "Error during emitting `{0}' attribute. The reason is `{1}'"
 msgstr ""
 
-#: mcs/mcs/attribute.cs:238
+#: mcs/mcs/attribute.cs:266
 #, csharp-format
 msgid "`{0}': is not an attribute class"
 msgstr ""
 
-#: mcs/mcs/attribute.cs:274
+#: mcs/mcs/attribute.cs:302
 #, csharp-format
 msgid ""
 "`{0}' is ambiguous between `{1}' and `{2}'. Use either `@{0}' or `{0}"
 "Attribute'"
 msgstr ""
 
-#: mcs/mcs/attribute.cs:380
+#: mcs/mcs/attribute.cs:385
 #, csharp-format
 msgid "Cannot apply attribute class `{0}' because it is abstract"
 msgstr ""
 
-#: mcs/mcs/attribute.cs:438
+#: mcs/mcs/attribute.cs:453
 #, csharp-format
 msgid "Duplicate named attribute `{0}' argument"
 msgstr ""
 
-#: mcs/mcs/attribute.cs:714
+#: mcs/mcs/attribute.cs:730
 #, csharp-format
 msgid ""
 "`{0}' is not a valid attribute location for this declaration. Valid "
 "attribute locations for this declaration are `{1}'"
 msgstr ""
 
-#: mcs/mcs/attribute.cs:1055
+#: mcs/mcs/attribute.cs:1004
 #, csharp-format
 msgid ""
 "The attribute `{0}' is not valid on this declaration type. It is valid on `"
 "{1}' declarations only"
 msgstr ""
 
-#: mcs/mcs/attribute.cs:1073
+#: mcs/mcs/attribute.cs:1022
 #, csharp-format
 msgid "The argument to the `{0}' attribute must be a valid identifier"
 msgstr ""
 
-#: mcs/mcs/attribute.cs:1086
+#: mcs/mcs/attribute.cs:1035
 #, csharp-format
 msgid "Invalid value for argument to `{0}' attribute"
 msgstr ""
 
-#: mcs/mcs/attribute.cs:1386
+#: mcs/mcs/attribute.cs:1341
 #, csharp-format
 msgid "The attribute `{0}' cannot be applied multiple times"
 msgstr ""
 
-#: mcs/mcs/attribute.cs:1571
+#: mcs/mcs/attribute.cs:1603
+#, csharp-format
+msgid "`{0}' is obsolete: `{1}'"
+msgstr "`{0}' ist veraltet: `{1}'"
+
+#: mcs/mcs/cs-parser.jay:474
+msgid "A namespace declaration cannot have modifiers or attributes"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:570
 msgid ""
-"Added modules must be marked with the CLSCompliant attribute to match the "
-"assembly"
+"Namespace elements cannot be explicitly declared as private, protected or "
+"protected internal"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:613
+msgid ""
+"Assembly and module attributes must precede all other elements except using "
+"clauses and extern alias declarations"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:752
+msgid "'<' unexpected: attributes cannot be generic"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:800
+msgid "Named attribute arguments must appear after the positional arguments"
 msgstr ""
 
-#: mcs/mcs/attribute.cs:1597
+#: mcs/mcs/cs-parser.jay:892
 #, csharp-format
-msgid "`{0}' is obsolete: `{1}'"
-msgstr "`{0}' ist veraltet: `{1}'"
+msgid ""
+"Unexpected symbol `{0}' in class, struct, or interface member declaration"
+msgstr ""
 
-#: mcs/mcs/cs-tokenizer.cs:772
+#: mcs/mcs/cs-parser.jay:992
+#, fuzzy, csharp-format
+msgid "The constant `{0}' cannot be marked static"
+msgstr "`{0}': Eine abstrakte Klasse darf nicht versiegelt oder statisch sein"
+
+#: mcs/mcs/cs-parser.jay:1047 mcs/mcs/cs-parser.jay:4792
+msgid "A const field requires a value to be provided"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1066
+msgid "Fields cannot have void type"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1116
+msgid ""
+"A fixed size buffer field must have the array size specifier after the field "
+"name"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1211
+#, fuzzy
+msgid "Value or constant expected"
+msgstr "Methodennamen erwartet"
+
+#: mcs/mcs/cs-parser.jay:1239 mcs/mcs/cs-parser.jay:1800
+#: mcs/mcs/cs-parser.jay:1848 mcs/mcs/cs-parser.jay:2433
+#: mcs/mcs/cs-parser.jay:2461
+#, fuzzy, csharp-format
+msgid "`{0}': interface members cannot have a definition"
+msgstr "`{0}': Instanzfeldinitialisierungen können nicht in Strukturen sein"
+
+#: mcs/mcs/cs-parser.jay:1276 mcs/mcs/cs-parser.jay:1316 mcs/mcs/decl.cs:1404
+msgid "Constraints are not allowed on non-generic declarations"
+msgstr "Einschränkungen sind nicht erlaubt für nicht generische Deklarationen"
+
+#: mcs/mcs/cs-parser.jay:1284
+#, csharp-format
+msgid ""
+"`{0}': Cannot specify constraints for overrides and explicit interface "
+"implementation methods"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1335
+msgid ""
+"A partial method cannot define access modifier or any of abstract, extern, "
+"new, override, sealed, or virtual modifiers"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1341
+msgid ""
+"A partial method must be declared within a partial class or partial struct"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1365
+#, csharp-format
+msgid "Member modifier `{0}' must precede the member type and name"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1411 mcs/mcs/cs-parser.jay:1418
+msgid ""
+"A params parameter must be the last parameter in a formal parameter list"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1427 mcs/mcs/cs-parser.jay:1433
+msgid ""
+"An __arglist parameter must be the last parameter in a formal parameter list"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1471
+msgid "The parameter modifier `this' can only be used on the first parameter"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1473
+msgid "Optional parameter cannot precede required parameters"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1500
+msgid "Array type specifier, [], must appear before parameter name"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1532 mcs/mcs/cs-parser.jay:1537
+#, csharp-format
+msgid "Cannot specify a default value for the `{0}' parameter"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1548
+msgid "Optional parameter is not valid in this context"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1578
+msgid "The parameter modifiers `this' and `ref' cannot be used altogether"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1581
+msgid "The parameter modifiers `this' and `out' cannot be used altogether"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1584
+msgid "A parameter cannot have specified more than one modifier"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1627
+msgid "Cannot specify a default value for a parameter array"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1643
+msgid "The `params' modifier is not allowed in current context"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1649
+msgid "The parameter modifiers `this' and `params' cannot be used altogether"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1651
+msgid "The params parameter cannot be declared as ref or out"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1664
+msgid "__arglist is not valid in this context"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1683
+#, fuzzy, csharp-format
+msgid "`{0}': property or indexer cannot have void type"
+msgstr "`{0}': Abstrakte Eigenschaften können keine privaten-Accessoren haben"
+
+#: mcs/mcs/cs-parser.jay:1724
+#, csharp-format
+msgid "`{0}': indexer return type cannot be `void'"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1727
+msgid "Indexers must have at least one parameter"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1760
+#, fuzzy, csharp-format
+msgid "`{0}': property or indexer must have at least one accessor"
+msgstr "`{0}': Abstrakte Eigenschaften können keine privaten-Accessoren haben"
+
+#: mcs/mcs/cs-parser.jay:1763
+msgid "Semicolon after method or accessor block is not valid"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1765
+#, fuzzy
+msgid "A get or set accessor expected"
+msgstr "Methodennamen erwartet"
+
+#: mcs/mcs/cs-parser.jay:1778 mcs/mcs/cs-parser.jay:1821
+msgid "Property accessor already defined"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1931 mcs/mcs/cs-parser.jay:1935
+msgid "Interfaces cannot contain fields or constants"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1943
+#, fuzzy
+msgid "Interfaces cannot contain operators"
+msgstr ""
+"`{0}': Statische Klassen können keine benutzerdefinierten Operatoren "
+"beinhalten"
+
+#: mcs/mcs/cs-parser.jay:1947
+#, fuzzy
+msgid "Interfaces cannot contain contructors"
+msgstr "`{0}': Statische Klassen können keinen Destruktor enthalten"
+
+#: mcs/mcs/cs-parser.jay:1951
+msgid ""
+"Interfaces cannot declare classes, structs, interfaces, delegates, or "
+"enumerations"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1992
+msgid "User-defined operators cannot return void"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2020
+msgid "Overloadable binary operator expected"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2022
+#, csharp-format
+msgid "Overloaded unary operator `{0}' takes one parameter"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2027
+#, csharp-format
+msgid "Overloaded binary operator `{0}' takes two parameters"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2030
+msgid "Overloadable unary operator expected"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2177
+msgid "Class, struct, or interface method must have a return type"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2181
+#, fuzzy, csharp-format
+msgid "`{0}': static constructor cannot have an access modifier"
+msgstr "`{0}': Abstrakte Eigenschaften können keine privaten-Accessoren haben"
+
+#: mcs/mcs/cs-parser.jay:2186
+#, fuzzy, csharp-format
+msgid ""
+"`{0}': static constructor cannot have an explicit `this' or `base' "
+"constructor call"
+msgstr "`{0}': Statische Klassen können keinen Destruktor enthalten"
+
+#: mcs/mcs/cs-parser.jay:2249
+msgid "Name of destructor must match name of class"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2251
+#, fuzzy
+msgid "Only class types can contain destructor"
+msgstr "`{0}': Statische Klassen können keinen Destruktor enthalten"
+
+#: mcs/mcs/cs-parser.jay:2276
+#, csharp-format
+msgid ""
+"`{0}': An explicit interface implementation of an event must use property "
+"syntax"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2308
+msgid "Event in interface cannot have add or remove accessors"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2377
+#, fuzzy, csharp-format
+msgid "`{0}': event in interface cannot have an initializer"
+msgstr "`{0}': Instanzfeldinitialisierungen können nicht in Strukturen sein"
+
+#: mcs/mcs/cs-parser.jay:2382
+#, fuzzy, csharp-format
+msgid "`{0}': abstract event cannot have an initializer"
+msgstr "`{0}': Instanzfeldinitialisierungen können nicht in Strukturen sein"
+
+#: mcs/mcs/cs-parser.jay:2397 mcs/mcs/cs-parser.jay:2402
+#, fuzzy, csharp-format
+msgid "`{0}': event property must have both add and remove accessors"
+msgstr "`{0}': Abstrakte Eigenschaften können keine privaten-Accessoren haben"
+
+#: mcs/mcs/cs-parser.jay:2407
+msgid "An add or remove accessor expected"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2416 mcs/mcs/cs-parser.jay:2444
+msgid "Modifiers cannot be placed on event accessor declarations"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2471
+msgid "An add or remove accessor must have a body"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2493
+#, fuzzy
+msgid "Enums cannot have type parameters"
+msgstr "`{0}' implementiert den Schnittstellenmember `{1}' nicht"
+
+#: mcs/mcs/cs-parser.jay:2824
+#, fuzzy
+msgid "Type parameter declaration must be an identifier not a type"
+msgstr "Der Parameter für den ++ oder -- Operator muss der enthaltene Typ sein"
+
+#: mcs/mcs/cs-parser.jay:2875
+msgid "Invalid parameter type `void'"
+msgstr "Ungültiger Parametertyp `void'"
+
+#: mcs/mcs/cs-parser.jay:2940
+#, fuzzy, csharp-format
+msgid "Invalid base type `{0}'"
+msgstr "Ungültiger Parametertyp `void'"
+
+#: mcs/mcs/cs-parser.jay:3189
+msgid "An element initializer cannot be empty"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:3227
+#, csharp-format
+msgid "Named argument `{0}' specified multiple times"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:3236 mcs/mcs/cs-parser.jay:3241
+msgid "An argument is missing"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:3410
+msgid "Array creation must have array size or array initializer"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:3423
+msgid "Invalid rank specifier, expecting `,' or `]'"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:3503
+msgid ""
+"Invalid anonymous type member declarator. Anonymous type members must be a "
+"member assignment, simple name or member access expression"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:4027
+msgid "All lambda parameters must be typed either explicitly or implicitly"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:4213
+#, csharp-format
+msgid "Duplicate `{0}' modifier"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:4217
+msgid "More than one protection modifier specified"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:4231
+msgid "Keyword `new' is not allowed on namespace elements"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:4343
+#, csharp-format
+msgid "A constraint clause has already been specified for type parameter `{0}'"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:4373
+#, fuzzy
+msgid "The `new()' constraint must be the last constraint specified"
+msgstr ""
+"Die `new()'-Einschränkung muss als letzte Einschränkung definiert werden"
+
+#: mcs/mcs/cs-parser.jay:4379
+msgid ""
+"The `class' or `struct' constraint must be the first constraint specified"
+msgstr ""
+"Die `class'- oder `struct'-Einschränkung muss als erste Einschränkung "
+"definiert werden"
+
+#: mcs/mcs/cs-parser.jay:4383
+msgid "The `new()' constraint cannot be used with the `struct' constraint"
+msgstr ""
+"Die `new()'-Einschränkung kann nicht mit der `struct'-Einschränkung genutzt "
+"werden"
+
+#: mcs/mcs/cs-parser.jay:4397
+#, fuzzy, csharp-format
+msgid "Invalid constraint type `{0}'"
+msgstr "Ungültiger Parametertyp `void'"
+
+#: mcs/mcs/cs-parser.jay:4579 mcs/mcs/cs-parser.jay:4584
+msgid "An embedded statement may not be a declaration or labeled statement"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:4751
+msgid ""
+"Syntax error, bad array declarator. To declare a managed array the rank "
+"specifier precedes the variable's identifier. To declare a fixed size buffer "
+"field, use the fixed keyword before the field type"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:4831
+msgid "A stackalloc expression requires [] after type"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:5113
+msgid "Type and identifier are both required in a foreach statement"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:5205 mcs/mcs/cs-parser.jay:5221
+#, fuzzy
+msgid "; expected"
+msgstr "Methodennamen erwartet"
+
+#: mcs/mcs/cs-parser.jay:5207
+msgid "Expression expected after yield return"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:5254
+msgid "Expected catch or finally"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:5273
+msgid "Try statement already has an empty catch block"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:5318
+msgid ""
+"A type that derives from `System.Exception', `object', or `string' expected"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:5426
+msgid ""
+"You must provide an initializer in a fixed or using statement declaration"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:6014
+msgid "Expecting `;'"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:6022
+#, csharp-format
+msgid "The parameter modifier `{0}' is not valid in this context"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:6028
+#, csharp-format
+msgid "Duplicate parameter modifier `{0}'"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:6034
+#, fuzzy
+msgid "Type expected"
+msgstr "Methodennamen erwartet"
+
+#: mcs/mcs/cs-parser.jay:6039
+msgid "Unsafe code requires the `unsafe' command line option to be specified"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:6049
+msgid "Named arguments must appear after the positional arguments"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:6140
+msgid "Syntax error, "
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:6194
+msgid "Parsing error"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:6200
+msgid "Internal compiler error during parsing"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:6211
+#, csharp-format
+msgid "{0}: `{1}' is a keyword"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:6338
+#, csharp-format
+msgid "Identifier expected, `{0}' is a keyword"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:6352
+#, csharp-format
+msgid "{1} `{0}'"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:6354
+#, csharp-format
+msgid "{2} `{0}', expecting {1}"
+msgstr ""
+
+#: mcs/mcs/cs-tokenizer.cs:760
 msgid ""
 "The `partial' modifier can be used only immediately before `class', "
 "`struct', `interface', or `void' keyword"
 msgstr ""
 
-#: mcs/mcs/cs-tokenizer.cs:1394 mcs/mcs/cs-tokenizer.cs:1461
+#: mcs/mcs/cs-tokenizer.cs:1395 mcs/mcs/cs-tokenizer.cs:1462
 msgid "Invalid number"
 msgstr "Ungültige Zahl"
 
-#: mcs/mcs/cs-tokenizer.cs:1646
+#: mcs/mcs/cs-tokenizer.cs:1647
 #, csharp-format
 msgid "Unrecognized escape sequence `\\{0}'"
 msgstr ""
 
-#: mcs/mcs/cs-tokenizer.cs:1665
+#: mcs/mcs/cs-tokenizer.cs:1666
 msgid "Unrecognized escape sequence"
 msgstr ""
 
-#: mcs/mcs/cs-tokenizer.cs:1886
+#: mcs/mcs/cs-tokenizer.cs:1887
 #, fuzzy
 msgid "Missing identifier to pre-processor directive"
 msgstr "Ungültige Präprozessor Direktive"
 
-#: mcs/mcs/cs-tokenizer.cs:1896 mcs/mcs/cs-tokenizer.cs:1900
+#: mcs/mcs/cs-tokenizer.cs:1897 mcs/mcs/cs-tokenizer.cs:1901
 #, csharp-format
 msgid "Identifier expected: {0}"
 msgstr ""
 
-#: mcs/mcs/cs-tokenizer.cs:2372
+#: mcs/mcs/cs-tokenizer.cs:2373
 #, fuzzy
 msgid "Integral constant is too large"
 msgstr "Numerische Konstante ist zu lang"
 
-#: mcs/mcs/cs-tokenizer.cs:2377
+#: mcs/mcs/cs-tokenizer.cs:2378
 msgid "Invalid preprocessor directive"
 msgstr "Ungültige Präprozessor Direktive"
 
-#: mcs/mcs/cs-tokenizer.cs:2384
+#: mcs/mcs/cs-tokenizer.cs:2385
 #, csharp-format
 msgid "Unexpected processor directive ({0})"
 msgstr "Unerwartete Prozessor Direktive ({0})"
 
-#: mcs/mcs/cs-tokenizer.cs:2390
+#: mcs/mcs/cs-tokenizer.cs:2391
 msgid ""
 "Cannot define or undefine preprocessor symbols after first token in file"
 msgstr ""
 
-#: mcs/mcs/cs-tokenizer.cs:2396
+#: mcs/mcs/cs-tokenizer.cs:2397
 msgid ""
 "Preprocessor directives must appear as the first non-whitespace character on "
 "a line"
 msgstr ""
 
-#: mcs/mcs/cs-tokenizer.cs:2401
+#: mcs/mcs/cs-tokenizer.cs:2402
 msgid "Single-line comment or end-of-line expected"
 msgstr ""
 
-#: mcs/mcs/cs-tokenizer.cs:2434 mcs/mcs/cs-tokenizer.cs:3431
+#: mcs/mcs/cs-tokenizer.cs:2435 mcs/mcs/cs-tokenizer.cs:3431
 msgid "Expected `#endif' directive"
 msgstr "`#endif' Direktive erwartet"
 
-#: mcs/mcs/cs-tokenizer.cs:2467 mcs/mcs/cs-tokenizer.cs:2488
-#: mcs/mcs/cs-tokenizer.cs:2519 mcs/mcs/cs-tokenizer.cs:3429
+#: mcs/mcs/cs-tokenizer.cs:2468 mcs/mcs/cs-tokenizer.cs:2489
+#: mcs/mcs/cs-tokenizer.cs:2520 mcs/mcs/cs-tokenizer.cs:3429
 msgid "#endregion directive expected"
 msgstr "`#endregion' Direktive erwartet"
 
-#: mcs/mcs/cs-tokenizer.cs:2566
+#: mcs/mcs/cs-tokenizer.cs:2567
 msgid "Wrong preprocessor directive"
 msgstr "Falsche Präprozessor Direktive"
 
-#: mcs/mcs/cs-tokenizer.cs:2578
+#: mcs/mcs/cs-tokenizer.cs:2579
 #, csharp-format
 msgid "#error: '{0}'"
 msgstr "#Fehler: '{0}'"
 
-#: mcs/mcs/cs-tokenizer.cs:2597
+#: mcs/mcs/cs-tokenizer.cs:2598
 msgid "The line number specified for #line directive is missing or invalid"
 msgstr ""
 
-#: mcs/mcs/cs-tokenizer.cs:2624 mcs/mcs/cs-tokenizer.cs:3242
+#: mcs/mcs/cs-tokenizer.cs:2625 mcs/mcs/cs-tokenizer.cs:3243
 msgid "Newline in constant"
 msgstr ""
 
-#: mcs/mcs/cs-tokenizer.cs:2635
+#: mcs/mcs/cs-tokenizer.cs:2636
 msgid "Unterminated string literal"
 msgstr "Nicht beendetes Zeichenfolgeliteral"
 
-#: mcs/mcs/cs-tokenizer.cs:2704
+#: mcs/mcs/cs-tokenizer.cs:2705
 msgid "Identifier too long (limit is 512 chars)"
 msgstr "Der Bezeichner ist zu lang. (Maximal 512 Zeichen)"
 
-#: mcs/mcs/cs-tokenizer.cs:3091
+#: mcs/mcs/cs-tokenizer.cs:3092
 msgid "End-of-file found, '*/' expected"
 msgstr "Dateiende gefunden. `*/' erwartet."
 
-#: mcs/mcs/cs-tokenizer.cs:3200
+#: mcs/mcs/cs-tokenizer.cs:3201
 msgid "Keyword, identifier, or string expected after verbatim specifier: @"
 msgstr ""
 
-#: mcs/mcs/cs-tokenizer.cs:3257
+#: mcs/mcs/cs-tokenizer.cs:3217
+#, fuzzy, csharp-format
+msgid "Unexpected character `{0}'"
+msgstr "`{0}' erwartet"
+
+#: mcs/mcs/cs-tokenizer.cs:3238
+msgid "Empty character literal"
+msgstr ""
+
+#: mcs/mcs/cs-tokenizer.cs:3258
 msgid "Too many characters in character literal"
 msgstr ""
 
@@ -300,867 +814,774 @@ msgstr ""
 msgid "The operation overflows at compile time in checked mode"
 msgstr ""
 
-#: mcs/mcs/cfold.cs:715 mcs/mcs/cfold.cs:795
+#: mcs/mcs/cfold.cs:764 mcs/mcs/cfold.cs:849
 msgid "Division by constant zero"
 msgstr ""
 
-#: mcs/mcs/class.cs:349
+#: mcs/mcs/class.cs:371
 #, csharp-format
 msgid ""
 "Partial declarations of `{0}' must be all classes, all structs or all "
 "interfaces"
 msgstr ""
 
-#: mcs/mcs/class.cs:358
+#: mcs/mcs/class.cs:380
 #, csharp-format
 msgid "Partial declarations of `{0}' have conflicting accessibility modifiers"
 msgstr ""
 
-#: mcs/mcs/class.cs:410
+#: mcs/mcs/class.cs:433
 #, csharp-format
 msgid ""
 "`{0}': explicit interface declaration can only be declared in a class or "
 "struct"
 msgstr ""
 
-#: mcs/mcs/class.cs:448
+#: mcs/mcs/class.cs:470 mcs/mcs/membercache.cs:1327
 #, csharp-format
 msgid ""
 "A member `{0}' is already defined. Rename this member or use different "
 "parameter types"
 msgstr ""
 
-#: mcs/mcs/class.cs:556
+#: mcs/mcs/class.cs:578
 msgid ""
 "Cannot specify the `DefaultMember' attribute on type containing an indexer"
 msgstr ""
 
-#: mcs/mcs/class.cs:562
+#: mcs/mcs/class.cs:584
 msgid "The RequiredAttribute attribute is not permitted on C# types"
 msgstr ""
 
-#: mcs/mcs/class.cs:839
+#: mcs/mcs/class.cs:855
 #, csharp-format
 msgid "Class `{0}' cannot derive from the dynamic type"
 msgstr ""
 
-#: mcs/mcs/class.cs:854
+#: mcs/mcs/class.cs:872
 #, csharp-format
 msgid "`{0}' is already listed in interface list"
 msgstr ""
 
-#: mcs/mcs/class.cs:862
+#: mcs/mcs/class.cs:880
 #, csharp-format
 msgid ""
 "Inconsistent accessibility: base interface `{0}' is less accessible than "
 "interface `{1}'"
 msgstr ""
 
-#: mcs/mcs/class.cs:868
+#: mcs/mcs/class.cs:886
 #, csharp-format
 msgid "Type `{0}' in interface list is not an interface"
 msgstr ""
 
-#: mcs/mcs/class.cs:870
+#: mcs/mcs/class.cs:888
 #, csharp-format
 msgid "`{0}': Classes cannot have multiple base classes (`{1}' and `{2}')"
 msgstr ""
 
-#: mcs/mcs/class.cs:873
+#: mcs/mcs/class.cs:891
 #, csharp-format
 msgid "`{0}': Base class `{1}' must be specified as first"
 msgstr ""
 
-#: mcs/mcs/class.cs:897
+#: mcs/mcs/class.cs:915
 #, csharp-format
 msgid "Partial declarations of `{0}' must not specify different base classes"
 msgstr ""
 
-#: mcs/mcs/class.cs:978
+#: mcs/mcs/class.cs:996
 #, csharp-format
 msgid ""
 "The operator `{0}' requires a matching operator `{1}' to also be defined"
 msgstr ""
 
-#: mcs/mcs/class.cs:1002
+#: mcs/mcs/class.cs:1021
 #, csharp-format
 msgid "`{0}' clashes with a predefined namespace"
 msgstr ""
 
-#: mcs/mcs/class.cs:1135
+#: mcs/mcs/class.cs:1150
 #, csharp-format
 msgid ""
 "Inherited interface `{0}' causes a cycle in the interface hierarchy of `{1}'"
 msgstr ""
 
-#: mcs/mcs/class.cs:1139
+#: mcs/mcs/class.cs:1156
 #, csharp-format
 msgid "Circular base class dependency involving `{0}' and `{1}'"
 msgstr ""
 
-#: mcs/mcs/class.cs:1166
+#: mcs/mcs/class.cs:1183
 #, csharp-format
 msgid ""
 "`{0}' cannot implement both `{1}' and `{2}' because they may unify for some "
 "type parameter substitutions"
 msgstr ""
 
-#: mcs/mcs/class.cs:1317
+#: mcs/mcs/class.cs:1329
 #, csharp-format
 msgid ""
 "Partial declarations of `{0}' must have the same type parameter names in the "
 "same order"
 msgstr ""
 
-#: mcs/mcs/class.cs:1324
+#: mcs/mcs/class.cs:1336
 #, csharp-format
 msgid ""
 "Partial declarations of `{0}' must have the same type parameter variance "
 "modifiers"
 msgstr ""
 
-#: mcs/mcs/class.cs:1349
+#: mcs/mcs/class.cs:1361
 #, csharp-format
 msgid ""
 "Partial declarations of `{0}' have inconsistent constraints for type "
 "parameter `{1}'"
 msgstr ""
 
-#: mcs/mcs/class.cs:1486
+#: mcs/mcs/class.cs:1500
 #, fuzzy, csharp-format
 msgid "`{0}': cannot implement a dynamic interface `{1}'"
 msgstr "`{0}' implementiert den Schnittstellenmember `{1}' nicht"
 
-#: mcs/mcs/class.cs:1601
+#: mcs/mcs/class.cs:1618
 msgid ""
 "Two indexers have different names; the IndexerName attribute must be used "
 "with the same name on every indexer within a type"
 msgstr ""
 
-#: mcs/mcs/class.cs:1928
+#: mcs/mcs/class.cs:1952
 #, csharp-format
 msgid "A static member `{0}' cannot be marked as override, virtual or abstract"
 msgstr ""
 
-#: mcs/mcs/class.cs:1935
+#: mcs/mcs/class.cs:1959
 #, csharp-format
 msgid "A member `{0}' marked as override cannot be marked as new or virtual"
 msgstr ""
 
-#: mcs/mcs/class.cs:1947
+#: mcs/mcs/class.cs:1971
 #, csharp-format
 msgid "`{0}' cannot be both extern and abstract"
 msgstr ""
 
-#: mcs/mcs/class.cs:1952
+#: mcs/mcs/class.cs:1976
 #, csharp-format
 msgid "`{0}' cannot be both abstract and sealed"
 msgstr "`{0}' Eine Klasse kann nicht gleichzeitig statisch und versiegelt sein"
 
-#: mcs/mcs/class.cs:1957
+#: mcs/mcs/class.cs:1981
 #, csharp-format
 msgid "The abstract method `{0}' cannot be marked virtual"
 msgstr ""
 
-#: mcs/mcs/class.cs:1963
+#: mcs/mcs/class.cs:1987
 #, csharp-format
 msgid "`{0}' is abstract but it is declared in the non-abstract class `{1}'"
 msgstr ""
 
-#: mcs/mcs/class.cs:1971
+#: mcs/mcs/class.cs:1995
 #, csharp-format
 msgid "`{0}': virtual or abstract members cannot be private"
 msgstr ""
 
-#: mcs/mcs/class.cs:1978
+#: mcs/mcs/class.cs:2002
 #, csharp-format
 msgid "`{0}' cannot be sealed because it is not an override"
 msgstr ""
 
-#: mcs/mcs/class.cs:2025
+#: mcs/mcs/class.cs:2049
 #, csharp-format
 msgid "`{0}': containing type does not implement interface `{1}'"
 msgstr ""
 
-#: mcs/mcs/class.cs:2125
+#: mcs/mcs/class.cs:2225
 #, csharp-format
 msgid "Type parameter `{0}' has same name as containing type, or method"
 msgstr ""
 
-#: mcs/mcs/class.cs:2133
+#: mcs/mcs/class.cs:2233
 #, csharp-format
 msgid "`{0}': member names cannot be the same as their enclosing type"
 msgstr ""
 
-#: mcs/mcs/class.cs:2294
+#: mcs/mcs/class.cs:2399
 msgid ""
 "The class System.Object cannot have a base class or implement an interface."
 msgstr ""
 
-#: mcs/mcs/class.cs:2302
+#: mcs/mcs/class.cs:2407
 #, csharp-format
 msgid "Attribute `{0}' is only valid on classes derived from System.Attribute"
 msgstr ""
 
-#: mcs/mcs/class.cs:2307
+#: mcs/mcs/class.cs:2412
 msgid ""
 "Attribute `System.Diagnostics.ConditionalAttribute' is only valid on methods "
 "or attribute classes"
 msgstr ""
 
-#: mcs/mcs/class.cs:2345
+#: mcs/mcs/class.cs:2450
 #, csharp-format
 msgid "`{0}': Static classes cannot contain user-defined operators"
 msgstr ""
 "`{0}': Statische Klassen können keine benutzerdefinierten Operatoren "
 "beinhalten"
 
-#: mcs/mcs/class.cs:2350
+#: mcs/mcs/class.cs:2455
 #, csharp-format
 msgid "`{0}': Static classes cannot contain destructor"
 msgstr "`{0}': Statische Klassen können keinen Destruktor enthalten"
 
-#: mcs/mcs/class.cs:2355
+#: mcs/mcs/class.cs:2460
 #, csharp-format
 msgid "`{0}': cannot declare indexers in a static class"
 msgstr ""
 
-#: mcs/mcs/class.cs:2363
+#: mcs/mcs/class.cs:2468
 #, csharp-format
 msgid "`{0}': Static classes cannot have instance constructors"
 msgstr ""
 
-#: mcs/mcs/class.cs:2369
+#: mcs/mcs/class.cs:2474
 #, csharp-format
 msgid "`{0}': Extension methods must be declared static"
 msgstr "`{0}': Erweiterungsmethoden müssen statisch sein"
 
-#: mcs/mcs/class.cs:2373
+#: mcs/mcs/class.cs:2478
 #, csharp-format
 msgid "`{0}': cannot declare instance members in a static class"
 msgstr ""
 
-#: mcs/mcs/class.cs:2382
+#: mcs/mcs/class.cs:2487
 #, csharp-format
 msgid "`{0}': an abstract class cannot be sealed or static"
 msgstr "`{0}': Eine abstrakte Klasse darf nicht versiegelt oder statisch sein"
 
-#: mcs/mcs/class.cs:2386
+#: mcs/mcs/class.cs:2491
 #, csharp-format
 msgid "`{0}': a class cannot be both static and sealed"
 msgstr ""
 
-#: mcs/mcs/class.cs:2420
+#: mcs/mcs/class.cs:2521
 #, fuzzy, csharp-format
 msgid "`{0}': Cannot derive from type parameter `{1}'"
 msgstr "`{0}' implementiert den Schnittstellenmember `{1}' nicht"
 
-#: mcs/mcs/class.cs:2424
+#: mcs/mcs/class.cs:2525
 #, csharp-format
 msgid ""
 "A generic type cannot derive from `{0}' because it is an attribute class"
 msgstr ""
 
-#: mcs/mcs/class.cs:2428
+#: mcs/mcs/class.cs:2529
 #, csharp-format
 msgid "`{0}': Cannot derive from static class `{1}'"
 msgstr ""
 
-#: mcs/mcs/class.cs:2432
+#: mcs/mcs/class.cs:2533
 #, csharp-format
 msgid "`{0}': cannot derive from sealed type `{1}'"
 msgstr ""
 
-#: mcs/mcs/class.cs:2435
+#: mcs/mcs/class.cs:2536
 #, csharp-format
 msgid ""
 "Static class `{0}' cannot derive from type `{1}'. Static classes must derive "
 "from object"
 msgstr ""
 
-#: mcs/mcs/class.cs:2442
+#: mcs/mcs/class.cs:2543
 #, csharp-format
 msgid "`{0}' cannot derive from special class `{1}'"
 msgstr ""
 
-#: mcs/mcs/class.cs:2450
+#: mcs/mcs/class.cs:2551
 #, csharp-format
 msgid ""
 "Inconsistent accessibility: base class `{0}' is less accessible than class `"
 "{1}'"
 msgstr ""
 
-#: mcs/mcs/class.cs:2458
+#: mcs/mcs/class.cs:2559
 #, csharp-format
 msgid "Static class `{0}' cannot implement interfaces"
 msgstr ""
 
-#: mcs/mcs/class.cs:2571 mcs/mcs/class.cs:2582
+#: mcs/mcs/class.cs:2678 mcs/mcs/class.cs:2689
 #, csharp-format
 msgid "Struct member `{0}' of type `{1}' causes a cycle in the struct layout"
 msgstr ""
 
-#: mcs/mcs/class.cs:2672
+#: mcs/mcs/class.cs:2779
 #, csharp-format
 msgid "`{0}': Structs cannot have instance field initializers"
 msgstr "`{0}': Instanzfeldinitialisierungen können nicht in Strukturen sein"
 
-#: mcs/mcs/class.cs:2853
+#: mcs/mcs/class.cs:2960
 #, csharp-format
 msgid "Do not override `{0}'. Use destructor syntax instead"
 msgstr ""
 
-#: mcs/mcs/class.cs:2856
+#: mcs/mcs/class.cs:2963
 #, csharp-format
 msgid "`{0}' is marked as an override but no suitable {1} found to override"
 msgstr ""
 
-#: mcs/mcs/class.cs:2862
+#: mcs/mcs/class.cs:2969
 #, csharp-format
 msgid "`{0}': cannot override because `{1}' is not an event"
 msgstr ""
 
-#: mcs/mcs/class.cs:2865
+#: mcs/mcs/class.cs:2972
 #, csharp-format
 msgid "`{0}': cannot override because `{1}' is not a property"
 msgstr ""
 
-#: mcs/mcs/class.cs:2868
+#: mcs/mcs/class.cs:2975
 #, csharp-format
 msgid "`{0}': cannot override because `{1}' is not a method"
 msgstr ""
 
-#: mcs/mcs/class.cs:2922
+#: mcs/mcs/class.cs:3031 mcs/mcs/field.cs:187
 #, csharp-format
 msgid "`{0}' hides inherited abstract member `{1}'"
 msgstr ""
 
-#: mcs/mcs/class.cs:2946
+#: mcs/mcs/class.cs:3055
 #, csharp-format
 msgid ""
 "`{0}': cannot override inherited member `{1}' because it is not marked "
 "virtual, abstract or override"
 msgstr ""
 
-#: mcs/mcs/class.cs:2954
+#: mcs/mcs/class.cs:3063
 #, csharp-format
 msgid "`{0}': cannot override inherited member `{1}' because it is sealed"
 msgstr ""
 
-#: mcs/mcs/class.cs:2963
+#: mcs/mcs/class.cs:3072
 #, csharp-format
 msgid "`{0}': type must be `{1}' to match overridden member `{2}'"
 msgstr ""
 
-#: mcs/mcs/class.cs:2966
+#: mcs/mcs/class.cs:3075
 #, csharp-format
 msgid "`{0}': return type must be `{1}' to match overridden member `{2}'"
 msgstr ""
 
-#: mcs/mcs/class.cs:3038
+#: mcs/mcs/class.cs:3143
 #, csharp-format
 msgid "A partial method `{0}' cannot explicitly implement an interface"
 msgstr ""
 
-#: mcs/mcs/class.cs:3046
+#: mcs/mcs/class.cs:3151
 #, csharp-format
 msgid "The type `{0}' in explicit interface declaration is not an interface"
 msgstr ""
 
-#: mcs/mcs/class.cs:3077
+#: mcs/mcs/class.cs:3182
 #, csharp-format
 msgid ""
 "Inconsistent accessibility: parameter type `{0}' is less accessible than "
 "indexer `{1}'"
 msgstr ""
 
-#: mcs/mcs/class.cs:3081
+#: mcs/mcs/class.cs:3186
 #, csharp-format
 msgid ""
 "Inconsistent accessibility: parameter type `{0}' is less accessible than "
 "operator `{1}'"
 msgstr ""
 
-#: mcs/mcs/class.cs:3085
+#: mcs/mcs/class.cs:3190
 #, csharp-format
 msgid ""
 "Inconsistent accessibility: parameter type `{0}' is less accessible than "
 "method `{1}'"
 msgstr ""
 
-#: mcs/mcs/class.cs:3099
+#: mcs/mcs/class.cs:3204
 #, csharp-format
 msgid ""
 "Constructor `{0}' is marked `external' but has no external implementation "
 "specified"
 msgstr ""
 
-#: mcs/mcs/class.cs:3102
+#: mcs/mcs/class.cs:3207
 #, csharp-format
 msgid ""
 "`{0}' is marked as an external but has no DllImport attribute. Consider "
 "adding a DllImport attribute to specify the external implementation"
 msgstr ""
 
-#: mcs/mcs/class.cs:3131
+#: mcs/mcs/class.cs:3243
 #, csharp-format
 msgid ""
 "`{0}': cannot change access modifiers when overriding `{1}' inherited member "
 "`{2}'"
 msgstr ""
 
-#: mcs/mcs/class.cs:3140
+#: mcs/mcs/class.cs:3252
 #, fuzzy, csharp-format
 msgid "`{0}': static types cannot be used as return types"
 msgstr ""
 "`{0}': Statische Klassen können keine benutzerdefinierten Operatoren "
 "beinhalten"
 
-#: mcs/mcs/class.cs:3265
+#: mcs/mcs/class.cs:3377
 #, csharp-format
 msgid "New virtual member `{0}' is declared in a sealed class `{1}'"
 msgstr ""
 
-#: mcs/mcs/class.cs:3280
+#: mcs/mcs/class.cs:3392
 msgid "Inconsistent accessibility: property type `"
 msgstr ""
 
-#: mcs/mcs/class.cs:3285
+#: mcs/mcs/class.cs:3397
 msgid "Inconsistent accessibility: indexer return type `"
 msgstr ""
 
-#: mcs/mcs/class.cs:3291 mcs/mcs/class.cs:3296 mcs/mcs/delegate.cs:154
+#: mcs/mcs/class.cs:3403 mcs/mcs/class.cs:3408 mcs/mcs/delegate.cs:159
 msgid "Inconsistent accessibility: return type `"
 msgstr ""
 
-#: mcs/mcs/class.cs:3301
+#: mcs/mcs/class.cs:3413
 msgid "Inconsistent accessibility: field type `"
 msgstr ""
 
-#: mcs/mcs/class.cs:3314
+#: mcs/mcs/class.cs:3426
 #, csharp-format
 msgid "Field or property cannot be of type `{0}'"
 msgstr ""
 
-#: mcs/mcs/codegen.cs:115
-msgid "Assembly generation failed -- Referenced assembly '"
-msgstr ""
-
-#: mcs/mcs/codegen.cs:133
-msgid "Could not access the key inside the container `"
-msgstr ""
-
-#: mcs/mcs/codegen.cs:141
-msgid "Could not use the specified key to strongname the assembly."
-msgstr ""
-
-#: mcs/mcs/codegen.cs:167
-msgid ""
-"Could not find the symbol writer assembly (Mono.CompilerServices."
-"SymbolWriter.dll)"
-msgstr ""
-
-#: mcs/mcs/codegen.cs:172
-#, csharp-format
-msgid "Unexpected debug information initialization error `{0}'"
-msgstr ""
-
-#: mcs/mcs/codegen.cs:212
-msgid "Couldn't delay-sign the assembly with the '"
-msgstr ""
-
-#: mcs/mcs/codegen.cs:217 mcs/mcs/codegen.cs:221
-msgid "Could not write to file `"
-msgstr ""
-
-#: mcs/mcs/codegen.cs:1104 mcs/mcs/codegen.cs:1119
-#, csharp-format
-msgid ""
-"Option `{0}' overrides attribute `{1}' given in a source file or added module"
-msgstr ""
-
-#: mcs/mcs/codegen.cs:1189
-msgid ""
-"Could not sign the assembly. ECMA key can only be used to delay-sign "
-"assemblies"
-msgstr ""
-
-#: mcs/mcs/codegen.cs:1209
-msgid "Error during assembly signing. "
-msgstr ""
-
-#: mcs/mcs/codegen.cs:1233
-msgid "Friend assembly reference `"
-msgstr ""
-
-#: mcs/mcs/codegen.cs:1358
-msgid "Invalid type specified as an argument for TypeForwardedTo attribute"
-msgstr ""
-
-#: mcs/mcs/codegen.cs:1366
-#, csharp-format
-msgid "A duplicate type forward of type `{0}'"
-msgstr ""
-
-#: mcs/mcs/codegen.cs:1375
-#, csharp-format
-msgid "Cannot forward type `{0}' because it is defined in this assembly"
-msgstr ""
-
-#: mcs/mcs/codegen.cs:1381
-#, csharp-format
-msgid "Cannot forward type `{0}' because it is a nested type"
-msgstr ""
-
-#: mcs/mcs/const.cs:120
+#: mcs/mcs/const.cs:103
 #, csharp-format
 msgid "Type parameter `{0}' cannot be declared const"
 msgstr ""
 
-#: mcs/mcs/const.cs:123
+#: mcs/mcs/const.cs:106
 #, csharp-format
 msgid "The type `{0}' cannot be declared const"
 msgstr ""
 
-#: mcs/mcs/const.cs:198
+#: mcs/mcs/const.cs:181
 #, csharp-format
 msgid ""
 "The evaluation of the constant value for `{0}' involves a circular definition"
 msgstr ""
 
-#: mcs/mcs/constant.cs:58 mcs/mcs/constant.cs:305
+#: mcs/mcs/constant.cs:68 mcs/mcs/constant.cs:319
 #, csharp-format
 msgid "Constant value `{0}' cannot be converted to a `{1}'"
 msgstr ""
 
-#: mcs/mcs/constant.cs:177
+#: mcs/mcs/constant.cs:187
 #, csharp-format
 msgid ""
 "Constant value `{0}' cannot be converted to a `{1}' (use `unchecked' syntax "
 "to override)"
 msgstr ""
 
-#: mcs/mcs/decl.cs:370
+#: mcs/mcs/convert.cs:1158
 #, csharp-format
-msgid "`{0}' cannot declare a body because it is marked extern"
+msgid ""
+"Ambiguous user defined operators `{0}' and `{1}' when converting from `{2}' "
+"to `{3}'"
 msgstr ""
 
 #: mcs/mcs/decl.cs:376
 #, csharp-format
+msgid "`{0}' cannot declare a body because it is marked extern"
+msgstr ""
+
+#: mcs/mcs/decl.cs:382
+#, csharp-format
 msgid "`{0}' cannot declare a body because it is marked abstract"
 msgstr ""
 
-#: mcs/mcs/decl.cs:389
+#: mcs/mcs/decl.cs:395
 #, csharp-format
 msgid ""
 "`{0}' must have a body because it is not marked abstract or extern. The "
 "property can be automatically implemented when you define both accessors"
 msgstr ""
 
-#: mcs/mcs/decl.cs:395
+#: mcs/mcs/decl.cs:401
 #, csharp-format
 msgid ""
 "`{0}' must have a body because it is not marked abstract, extern, or partial"
 msgstr ""
 
-#: mcs/mcs/decl.cs:410
+#: mcs/mcs/decl.cs:416
 #, csharp-format
 msgid "`{0}': Structs cannot contain protected members"
 msgstr ""
 
-#: mcs/mcs/decl.cs:416
+#: mcs/mcs/decl.cs:422
 #, csharp-format
 msgid "`{0}': Static classes cannot contain protected members"
 msgstr ""
 
-#: mcs/mcs/decl.cs:1260
+#: mcs/mcs/decl.cs:1295
 #, csharp-format
 msgid "The namespace `{0}' already contains a definition for `{1}'"
 msgstr ""
 
-#: mcs/mcs/decl.cs:1264
+#: mcs/mcs/decl.cs:1299
 #, csharp-format
 msgid "Duplicate type parameter `{0}'"
 msgstr ""
 
-#: mcs/mcs/decl.cs:1267
+#: mcs/mcs/decl.cs:1302
 #, csharp-format
 msgid "The type `{0}' already contains a definition for `{1}'"
 msgstr ""
 
-#: mcs/mcs/decl.cs:1317
+#: mcs/mcs/decl.cs:1352
 #, csharp-format
 msgid ""
 "Missing partial modifier on declaration of type `{0}'. Another partial "
 "declaration of this type exists"
 msgstr ""
 
-#: mcs/mcs/decl.cs:1485
-msgid "Constraints are not allowed on non-generic declarations"
-msgstr "Einschränkungen sind nicht erlaubt für nicht generische Deklarationen"
-
-#: mcs/mcs/decl.cs:1522
+#: mcs/mcs/decl.cs:1441
 msgid "Variant type parameters can only be used with interfaces and delegates"
 msgstr ""
 
-#: mcs/mcs/decl.cs:1534
+#: mcs/mcs/decl.cs:1453
 #, csharp-format
 msgid "`{0}': A constraint references nonexistent type parameter `{1}'"
 msgstr ""
 
-#: mcs/mcs/delegate.cs:136
+#: mcs/mcs/delegate.cs:141
 #, csharp-format
 msgid ""
 "Inconsistent accessibility: parameter type `{0}' is less accessible than "
 "delegate `{1}'"
 msgstr ""
 
-#: mcs/mcs/delegate.cs:463
+#: mcs/mcs/delegate.cs:487
 #, csharp-format
 msgid ""
 "Cannot create delegate from method `{0}' because it is a member of System."
 "Nullable<T> type"
 msgstr ""
 
-#: mcs/mcs/delegate.cs:475
+#: mcs/mcs/delegate.cs:499
 #, csharp-format
 msgid ""
 "Extension method `{0}' of value type `{1}' cannot be used to create delegates"
 msgstr ""
 
-#: mcs/mcs/delegate.cs:490
+#: mcs/mcs/delegate.cs:514
 #, csharp-format
 msgid "Cannot create delegate from partial method declaration `{0}'"
 msgstr ""
 
-#: mcs/mcs/delegate.cs:493
+#: mcs/mcs/delegate.cs:517
 #, csharp-format
 msgid ""
 "Cannot create delegate with `{0}' because it has a Conditional attribute"
 msgstr ""
 
-#: mcs/mcs/delegate.cs:536
+#: mcs/mcs/delegate.cs:560
 #, csharp-format
 msgid ""
 "A method or delegate `{0} {1}' parameters and return type must be same as "
 "delegate `{2} {3}' parameters and return type"
 msgstr ""
 
-#: mcs/mcs/delegate.cs:543
+#: mcs/mcs/delegate.cs:567
 #, csharp-format
 msgid ""
 "A method or delegate `{0}' parameters do not match delegate `{1}' parameters"
 msgstr ""
 
-#: mcs/mcs/delegate.cs:548
+#: mcs/mcs/delegate.cs:572
 #, csharp-format
 msgid ""
 "A method or delegate `{0} {1}' return type does not match delegate `{2} {3}' "
 "return type"
 msgstr ""
 
-#: mcs/mcs/delegate.cs:631
+#: mcs/mcs/delegate.cs:655
 msgid "Method name expected"
 msgstr "Methodennamen erwartet"
 
-#: mcs/mcs/doc.cs:910
+#: mcs/mcs/doc.cs:914
 #, csharp-format
 msgid "Error generating XML documentation file `{0}' (`{1}')"
 msgstr "Fehler beim erstellen der XML-Dokumentationsdatei `{0}' (`{1}')"
 
-#: mcs/mcs/driver.cs:164 mcs/mcs/driver.cs:716 mcs/mcs/driver.cs:719
+#: mcs/mcs/driver.cs:96 mcs/mcs/driver.cs:467 mcs/mcs/driver.cs:470
 msgid "Source file `"
 msgstr ""
 
-#: mcs/mcs/driver.cs:191
+#: mcs/mcs/driver.cs:123
 #, csharp-format
 msgid "Source file `{0}' could not be found"
 msgstr ""
 
-#: mcs/mcs/driver.cs:199
+#: mcs/mcs/driver.cs:129
 #, csharp-format
 msgid "Source file `{0}' is a binary file and not a text file"
 msgstr ""
 
-#: mcs/mcs/driver.cs:281
+#: mcs/mcs/driver.cs:216
 msgid ""
 "Invalid target type for -target. Valid options are `exe', `winexe', "
 "`library' or `module'"
 msgstr ""
 
-#: mcs/mcs/driver.cs:332
-#, csharp-format
-msgid "cannot find metadata file `{0}'"
-msgstr ""
-
-#: mcs/mcs/driver.cs:339
-#, csharp-format
-msgid "file `{0}' has invalid `{1}' metadata"
-msgstr ""
-
-#: mcs/mcs/driver.cs:359
-#, csharp-format
-msgid ""
-"Referenced file `{0}' is not an assembly. Consider using `-addmodule' option "
-"instead"
-msgstr ""
-
-#: mcs/mcs/driver.cs:612
+#: mcs/mcs/driver.cs:363
 msgid "Response file `"
 msgstr ""
 
-#: mcs/mcs/driver.cs:621
+#: mcs/mcs/driver.cs:372
 msgid "Unable to open response file: "
 msgstr ""
 
-#: mcs/mcs/driver.cs:671 mcs/mcs/driver.cs:681
+#: mcs/mcs/driver.cs:422 mcs/mcs/driver.cs:432
 msgid "No files to compile were specified"
 msgstr "Es wurden keine Dateien zum kompilieren angegeben"
 
-#: mcs/mcs/driver.cs:813
+#: mcs/mcs/driver.cs:504
 msgid "Warning level must be in the range 0-4"
 msgstr ""
 
-#: mcs/mcs/driver.cs:847
+#: mcs/mcs/driver.cs:538
 msgid "Compatibility: Use -main:CLASS instead of --main CLASS or -m CLASS"
 msgstr ""
 
-#: mcs/mcs/driver.cs:856
+#: mcs/mcs/driver.cs:547
 msgid "Compatibility: Use -unsafe instead of --unsafe"
 msgstr ""
 
-#: mcs/mcs/driver.cs:867
+#: mcs/mcs/driver.cs:558
 msgid "Compatibility: Use -d:SYMBOL instead of --define SYMBOL"
 msgstr ""
 
-#: mcs/mcs/driver.cs:881
+#: mcs/mcs/driver.cs:572
 msgid "Compatibility: Use -out:FILE instead of --output FILE or -o FILE"
 msgstr ""
 
-#: mcs/mcs/driver.cs:890
+#: mcs/mcs/driver.cs:581
 msgid "Compatibility: Use -checked instead of --checked"
 msgstr ""
 
-#: mcs/mcs/driver.cs:900
+#: mcs/mcs/driver.cs:591
 msgid "Compatibility: Use -linkres:VALUE instead of --linkres VALUE"
 msgstr ""
 
-#: mcs/mcs/driver.cs:903
+#: mcs/mcs/driver.cs:594
 msgid "Missing argument to --linkres"
 msgstr "Fehlendes Argument bei --linkres"
 
-#: mcs/mcs/driver.cs:914
+#: mcs/mcs/driver.cs:603
 msgid "Compatibility: Use -res:VALUE instead of --res VALUE"
 msgstr ""
 
-#: mcs/mcs/driver.cs:917
+#: mcs/mcs/driver.cs:606
 msgid "Missing argument to --resource"
 msgstr "Fehlendes Argument bei --resource"
 
-#: mcs/mcs/driver.cs:927
+#: mcs/mcs/driver.cs:614
 msgid "Compatibility: Use -target:KIND instead of --target KIND"
 msgstr ""
 
-#: mcs/mcs/driver.cs:959
+#: mcs/mcs/driver.cs:646
 msgid "Compatibility: Use -r:LIBRARY instead of -r library"
 msgstr ""
 
-#: mcs/mcs/driver.cs:978
+#: mcs/mcs/driver.cs:665
 msgid "Compatibility: Use -lib:ARG instead of --L arg"
 msgstr ""
 
-#: mcs/mcs/driver.cs:991
+#: mcs/mcs/driver.cs:678
 msgid "Compatibility: Use -nostdlib instead of --nostdlib"
 msgstr ""
 
-#: mcs/mcs/driver.cs:996
+#: mcs/mcs/driver.cs:683
 msgid "Compatibility: Use -nowarn instead of --nowarn"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1013
+#: mcs/mcs/driver.cs:700
 msgid "Compatibility: Use -warn:LEVEL instead of --wlevel LEVEL"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1017
+#: mcs/mcs/driver.cs:704
 msgid "--wlevel requires a value from 0 to 4"
 msgstr "--wlevel benötigt einen Wert zwischen 0 und 4"
 
-#: mcs/mcs/driver.cs:1026
+#: mcs/mcs/driver.cs:713
 msgid "--mcs-debug requires an argument"
 msgstr "--mcs-debug benötigt ein Argument"
 
-#: mcs/mcs/driver.cs:1033
+#: mcs/mcs/driver.cs:720
 msgid "Invalid argument to --mcs-debug"
 msgstr "Ungültiges Argument für --mcs-debug"
 
-#: mcs/mcs/driver.cs:1043
+#: mcs/mcs/driver.cs:730
 msgid "Compatibility: Use -recurse:PATTERN option instead --recurse PATTERN"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1045
+#: mcs/mcs/driver.cs:732
 msgid "--recurse requires an argument"
 msgstr "--recurse benötigt ein Argument"
 
-#: mcs/mcs/driver.cs:1057
+#: mcs/mcs/driver.cs:743
 msgid "Compatibility: Use -debug option instead of -g or --debug"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1062
+#: mcs/mcs/driver.cs:748
 msgid "Compatibility: Use -noconfig option instead of --noconfig"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1206
+#: mcs/mcs/driver.cs:912
 #, csharp-format
 msgid "Invalid conditional define symbol `{0}'"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1260
+#: mcs/mcs/driver.cs:963
 #, csharp-format
 msgid ""
 "Invalid resource visibility option `{0}'. Use either `public' or `private' "
 "instead"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1266
+#: mcs/mcs/driver.cs:969
 #, csharp-format
 msgid "Wrong number of arguments for option `{0}'"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1274
-msgid "-recurse requires an argument"
-msgstr "-recurse benötigt ein Argument"
-
-#: mcs/mcs/driver.cs:1283
-msgid "-reference requires an argument"
-msgstr "-reference benötigt ein Argument"
-
-#: mcs/mcs/driver.cs:1305 mcs/mcs/driver.cs:1317 mcs/mcs/driver.cs:1329
-#: mcs/mcs/driver.cs:1341 mcs/mcs/driver.cs:1494 mcs/mcs/driver.cs:1514
-#: mcs/mcs/driver.cs:1521
-msgid " requires an argument"
-msgstr "benötigt ein Argument"
+#: mcs/mcs/driver.cs:1007
+msgid "Cannot specify multiple aliases using single /reference option"
+msgstr ""
 
-#: mcs/mcs/driver.cs:1322 mcs/mcs/driver.cs:1334
+#: mcs/mcs/driver.cs:1035 mcs/mcs/driver.cs:1047
 msgid ""
 "Cannot specify the `win32res' and the `win32ico' compiler option at the same "
 "time"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1351
-msgid "/lib requires an argument"
-msgstr "/lib benötigt ein Argument"
-
-#: mcs/mcs/driver.cs:1428
-msgid "/nowarn requires an argument"
-msgstr "/nowarn benötigt ein Argument"
+#: mcs/mcs/driver.cs:1162
+#, csharp-format
+msgid "`{0}' is not a valid warning number"
+msgstr ""
 
-#: mcs/mcs/driver.cs:1469
+#: mcs/mcs/driver.cs:1192
 msgid ""
 "Invalid platform type for -platform. Valid options are `anycpu', `x86', "
 "`x64' or `itanium'"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1553
+#: mcs/mcs/driver.cs:1212
+msgid "Invalid sdk version name"
+msgstr ""
+
+#: mcs/mcs/driver.cs:1310
 #, fuzzy, csharp-format
 msgid ""
 "Invalid -langversion option `{0}'. It must be `ISO-1', `ISO-2', `3' or "
@@ -1169,185 +1590,168 @@ msgstr ""
 "Ungültige Option `{0}' für /langversion. Es muss entweder `ISO-1', `ISO-2' "
 "oder `Default' sein"
 
-#: mcs/mcs/driver.cs:1569
+#: mcs/mcs/driver.cs:1330
 #, csharp-format
 msgid "Code page `{0}' is invalid or not installed"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1581
+#: mcs/mcs/driver.cs:1345
 #, csharp-format
 msgid "Unrecognized command-line option: `{0}'"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1611
-msgid "Invalid reference alias '"
-msgstr "Ungültiger Referenz Alias '"
-
-#: mcs/mcs/driver.cs:1616
-msgid "Invalid extern alias for /reference. Alias '"
-msgstr "Ungültiger externer Alias für /reference. Alias '"
-
-#: mcs/mcs/driver.cs:1672
-msgid ""
-"If no source files are specified you must specify the output file with -out:"
-msgstr ""
-
-#: mcs/mcs/driver.cs:1802
+#: mcs/mcs/driver.cs:1350
 #, csharp-format
-msgid "Could not find `{0}' specified for Main method"
+msgid "Missing file specification for `{0}' option"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1807
-#, csharp-format
-msgid "`{0}' specified for Main method must be a valid class or struct"
-msgstr ""
+#: mcs/mcs/driver.cs:1355
+#, fuzzy, csharp-format
+msgid "Missing argument for `{0}' option"
+msgstr "Fehlendes Argument bei --linkres"
 
-#: mcs/mcs/driver.cs:1811
-#, csharp-format
-msgid "`{0}' does not have a suitable static Main method"
-msgstr ""
+#: mcs/mcs/driver.cs:1390
+#, fuzzy, csharp-format
+msgid "Invalid reference alias `{0}='. Missing filename"
+msgstr "Ungültiger Referenz Alias '"
 
-#: mcs/mcs/driver.cs:1816
-#, csharp-format
+#: mcs/mcs/driver.cs:1395
+#, fuzzy, csharp-format
 msgid ""
-"Program `{0}' does not contain a static `Main' method suitable for an entry "
-"point"
-msgstr ""
+"Invalid extern alias for -reference. Alias `{0}' is not a valid identifier"
+msgstr "Ungültiger externer Alias für /reference. Alias '"
 
-#: mcs/mcs/driver.cs:1823
-msgid "Cannot specify -main if building a module or library"
+#: mcs/mcs/driver.cs:1411
+#, csharp-format
+msgid "The resource identifier `{0}' has already been used in this assembly"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1828
-msgid "Cannot link resource file when building a module"
+#: mcs/mcs/driver.cs:1472
+msgid ""
+"If no source files are specified you must specify the output file with -out:"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1966
-#, csharp-format
-msgid "The resource identifier `{0}' has already been used in this assembly"
+#: mcs/mcs/dynamic.cs:272
+msgid "An expression tree cannot contain a dynamic operation"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1980
-#, csharp-format
-msgid "Error reading resource file `{0}'"
+#: mcs/mcs/dynamic.cs:302
+msgid ""
+"Dynamic operation cannot be compiled without `Microsoft.CSharp.dll' assembly "
+"reference"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:251
+#: mcs/mcs/ecore.cs:247
 #, csharp-format
 msgid "`{0}' is inaccessible due to its protection level"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:256
+#: mcs/mcs/ecore.cs:252
 #, csharp-format
 msgid "The expression being assigned to `{0}' must be constant"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:261
+#: mcs/mcs/ecore.cs:257
 #, csharp-format
 msgid ""
 "A constant `{0}' of reference type `{1}' can only be initialized with null"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:267
+#: mcs/mcs/ecore.cs:263
 msgid ""
 "Only assignment, call, increment, decrement, and new object expressions can "
 "be used as a statement"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:278
+#: mcs/mcs/ecore.cs:274
 msgid "Keyword `void' cannot be used in this context"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:312
+#: mcs/mcs/ecore.cs:308
 #, csharp-format
 msgid "Cannot convert type `{0}' to `{1}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:322
+#: mcs/mcs/ecore.cs:318
 #, csharp-format
 msgid ""
 "Cannot implicitly convert type `{0}' to `{1}'. An explicit conversion exists "
 "(are you missing a cast?)"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:328
+#: mcs/mcs/ecore.cs:324
 #, csharp-format
 msgid "Cannot implicitly convert type `{0}' to `{1}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:334
-#, csharp-format
-msgid "A local variable `{0}' cannot be used before it is declared"
-msgstr ""
-
-#: mcs/mcs/ecore.cs:374
+#: mcs/mcs/ecore.cs:365
 #, csharp-format
 msgid "`{0}' does not contain a definition for `{1}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:380
+#: mcs/mcs/ecore.cs:371
 msgid ""
 "The left-hand side of an assignment must be a variable, a property or an "
 "indexer"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:442 mcs/mcs/statement.cs:2849 mcs/mcs/statement.cs:2851
+#: mcs/mcs/ecore.cs:376
+msgid "The operation in question is undefined on void pointers"
+msgstr ""
+
+#: mcs/mcs/ecore.cs:438 mcs/mcs/statement.cs:2558 mcs/mcs/statement.cs:2560
 #, csharp-format
 msgid "Internal compiler error: {0}"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:482
+#: mcs/mcs/ecore.cs:478
 msgid "A ref or out argument must be an assignable variable"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:501
+#: mcs/mcs/ecore.cs:497
 msgid ""
 "An attribute argument must be a constant expression, typeof expression or "
 "array creation expression"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:572
+#: mcs/mcs/ecore.cs:568
 #, csharp-format
 msgid "The class `{0}' has no constructors defined"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:629
+#: mcs/mcs/ecore.cs:653
 #, csharp-format
 msgid "Ambiguity between `{0}' and `{1}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:656
+#: mcs/mcs/ecore.cs:680
 msgid "An expression tree cannot contain an unsafe pointer operation"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:777
+#: mcs/mcs/ecore.cs:801
 #, csharp-format
 msgid "Expression denotes a `{0}', where a `{1}' was expected"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:787
+#: mcs/mcs/ecore.cs:811
 msgid "Pointers and fixed size buffers may only be used in an unsafe context"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:822
+#: mcs/mcs/ecore.cs:846
 #, csharp-format
 msgid ""
 "Members of value type `{0}' cannot be assigned using a property `{1}' object "
 "initializer"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:825
+#: mcs/mcs/ecore.cs:849
 #, csharp-format
 msgid ""
 "Cannot modify a value type return value of `{0}'. Consider storing the value "
 "in a temporary variable"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:1491
-msgid "Cannot modify the result of an unboxing conversion"
-msgstr "Das Ergebnis einer Unboxing-Konvertierung kann nicht geändert werden"
-
-#: mcs/mcs/ecore.cs:2239
+#: mcs/mcs/ecore.cs:2275
 #, fuzzy, csharp-format
 msgid ""
 "Dynamic keyword requires `{0}' to be defined. Are you missing System.Core."
@@ -1356,84 +1760,105 @@ msgstr ""
 "Der Typ oder Namespacename `{0}' konnte nicht gefunden werden. Fehlt eine "
 "using-Direktive oder ein Assemblyverweis?"
 
-#: mcs/mcs/ecore.cs:2363
+#: mcs/mcs/ecore.cs:2349
+#, csharp-format
+msgid ""
+"A local variable `{0}' cannot be used before it is declared. Consider "
+"renaming the local variable when it hides the member `{1}'"
+msgstr ""
+
+#: mcs/mcs/ecore.cs:2364 mcs/mcs/ecore.cs:2408
+#, csharp-format
+msgid "`{0}' conflicts with a declaration in a child block"
+msgstr ""
+
+#: mcs/mcs/ecore.cs:2417
+#, csharp-format
+msgid "A local variable `{0}' cannot be used before it is declared"
+msgstr ""
+
+#: mcs/mcs/ecore.cs:2419
 #, csharp-format
 msgid "The name `{0}' does not exist in the current context"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:2620
+#: mcs/mcs/ecore.cs:2669
 #, csharp-format
 msgid ""
 "Cannot access protected member `{0}' via a qualifier of type `{1}'. The "
 "qualifier must be of type `{2}' or derived from it"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:2664
+#: mcs/mcs/ecore.cs:2718
 #, csharp-format
 msgid "Cannot call an abstract base member `{0}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:2703
+#: mcs/mcs/ecore.cs:2762
 #, csharp-format
 msgid ""
 "Static member `{0}' cannot be accessed with an instance reference, qualify "
 "it with a type name instead"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:2718
+#: mcs/mcs/ecore.cs:2777
 #, csharp-format
 msgid ""
 "A field initializer cannot reference the nonstatic field, method, or "
 "property `{0}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:2722
+#: mcs/mcs/ecore.cs:2781
 #, csharp-format
 msgid "An object reference is required to access non-static member `{0}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:2730
+#: mcs/mcs/ecore.cs:2789
 #, csharp-format
 msgid ""
 "Cannot access a nonstatic member of outer type `{0}' via nested type `{1}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:2868
+#: mcs/mcs/ecore.cs:2837
+msgid "Cannot modify the result of an unboxing conversion"
+msgstr "Das Ergebnis einer Unboxing-Konvertierung kann nicht geändert werden"
+
+#: mcs/mcs/ecore.cs:2958
 #, csharp-format
 msgid ""
 "Type `{0}' does not contain a member `{1}' and the best extension method "
 "overload `{2}' has some invalid arguments"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:2873
+#: mcs/mcs/ecore.cs:2963
 #, csharp-format
 msgid "Extension method instance type `{0}' cannot be converted to `{1}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:2989
+#: mcs/mcs/ecore.cs:3087
 msgid "An expression tree cannot contain an expression with method group"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:2995
+#: mcs/mcs/ecore.cs:3093
 msgid ""
 "Partial methods with only a defining declaration or removed conditional "
 "methods cannot be used in an expression tree"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:3025
+#: mcs/mcs/ecore.cs:3123
 #, csharp-format
 msgid ""
 "Cannot convert method group `{0}' to non-delegate type `{1}'. Consider using "
 "parentheses to invoke the method"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:3532
+#: mcs/mcs/ecore.cs:3719
 #, csharp-format
 msgid ""
 "The type `{0}' does not contain a constructor that takes `{1}' arguments"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:3986
+#: mcs/mcs/ecore.cs:4334
 #, csharp-format
 msgid ""
 "Type `{0}' does not contain a member `{1}' and the best extension method "
@@ -1441,491 +1866,474 @@ msgid ""
 "without the extension method syntax"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4007
+#: mcs/mcs/ecore.cs:4355
 #, csharp-format
 msgid ""
 "The call is ambiguous between the following methods or properties: `{0}' and "
 "`{1}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4062
+#: mcs/mcs/ecore.cs:4415
 #, csharp-format
 msgid ""
 "The best overloaded collection initalizer method `{0}' cannot have 'ref', or "
 "`out' modifier"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4066
+#: mcs/mcs/ecore.cs:4419
 #, csharp-format
 msgid ""
 "The best overloaded collection initalizer method `{0}' has some invalid "
 "arguments"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4069
+#: mcs/mcs/ecore.cs:4422
 #, csharp-format
 msgid "Delegate `{0}' has some invalid arguments"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4073
+#: mcs/mcs/ecore.cs:4426
 #, csharp-format
 msgid "The best overloaded method match for `{0}' has some invalid arguments"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4083
+#: mcs/mcs/ecore.cs:4436
 #, csharp-format
 msgid ""
 "Argument `#{0}' does not require `{1}' modifier. Consider removing `{1}' "
 "modifier"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4086
+#: mcs/mcs/ecore.cs:4439
 #, csharp-format
 msgid "Argument `#{0}' is missing `{1}' modifier"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4099
+#: mcs/mcs/ecore.cs:4452
 #, csharp-format
 msgid "Argument `#{0}' cannot convert `{1}' expression to type `{2}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4148
+#: mcs/mcs/ecore.cs:4500
 #, csharp-format
 msgid ""
 "The type arguments for method `{0}' cannot be inferred from the usage. Try "
 "specifying the type arguments explicitly"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4177
+#: mcs/mcs/ecore.cs:4529
 #, csharp-format
 msgid "No overload for method `{0}' takes `{1}' arguments"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4230
+#: mcs/mcs/ecore.cs:4582
 #, csharp-format
 msgid "The delegate `{0}' does not contain a parameter named `{1}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4235
+#: mcs/mcs/ecore.cs:4587
 #, csharp-format
 msgid ""
 "The best overloaded method match for `{0}' does not contain a parameter "
 "named `{1}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4245
+#: mcs/mcs/ecore.cs:4597
 #, csharp-format
 msgid ""
 "Named argument `{0}' cannot be used for a parameter which has positional "
 "argument specified"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4546
+#: mcs/mcs/ecore.cs:4910
 msgid ""
 "You cannot use fixed size buffers contained in unfixed expressions. Try "
 "using the fixed statement"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4551
+#: mcs/mcs/ecore.cs:4915
 #, csharp-format
 msgid "`{0}': Fixed size buffers can only be accessed through locals or fields"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4942
+#: mcs/mcs/ecore.cs:5310
 #, fuzzy, csharp-format
 msgid "Property or event `{0}' is not supported by the C# language"
 msgstr ""
 "Die Eigenschaft `{0}' wird von der C# Sprache nicht unterstützt. Rufen Sie "
 "die `{1}'-Accessormethode direkt auf."
 
-#: mcs/mcs/ecore.cs:5096
+#: mcs/mcs/ecore.cs:5471
 #, csharp-format
 msgid "A range variable `{0}' may not be passes as `ref' or `out' parameter"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:5144
+#: mcs/mcs/ecore.cs:5519
 #, csharp-format
 msgid ""
 "The property or indexer `{0}' cannot be used in this context because it "
 "lacks the `get' accessor"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:5151
+#: mcs/mcs/ecore.cs:5526
 #, csharp-format
 msgid ""
 "The property or indexer `{0}' cannot be used in this context because the get "
 "accessor is inaccessible"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:5171
-#, csharp-format
-msgid ""
-"A range variable `{0}' cannot be assigned to. Consider using `let' clause to "
-"store the value"
-msgstr ""
-
-#: mcs/mcs/ecore.cs:5174
+#: mcs/mcs/ecore.cs:5545
 #, csharp-format
 msgid "Property or indexer `{0}' cannot be assigned to (it is read-only)"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:5183
+#: mcs/mcs/ecore.cs:5553
 #, csharp-format
 msgid ""
 "The property or indexer `{0}' cannot be used in this context because the set "
 "accessor is inaccessible"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:5346
+#: mcs/mcs/ecore.cs:5714
 #, csharp-format
 msgid ""
 "The event `{0}' can only appear on the left hand side of `+=' or `-=' "
 "operator"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:5353
+#: mcs/mcs/ecore.cs:5718
 #, csharp-format
 msgid ""
 "The event `{0}' can only appear on the left hand side of += or -= when used "
 "outside of the type `{1}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:5485
+#: mcs/mcs/ecore.cs:5882
 #, csharp-format
 msgid ""
 "An implicitly typed local variable declaration cannot be initialized with `"
 "{0}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:5499
+#: mcs/mcs/ecore.cs:5896
 msgid ""
 "The contextual keyword `var' may only appear within a local variable "
 "declaration"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:5515
-msgid ""
-"An implicitly typed local variable declaration cannot include multiple "
-"declarators"
-msgstr ""
-
-#: mcs/mcs/ecore.cs:5522
-msgid ""
-"An implicitly typed local variable declarator must include an initializer"
-msgstr ""
-
-#: mcs/mcs/enum.cs:121
+#: mcs/mcs/enum.cs:125
 #, csharp-format
 msgid ""
 "The enumerator value `{0}' is outside the range of enumerator underlying "
 "type `{1}'"
 msgstr ""
 
-#: mcs/mcs/enum.cs:185
+#: mcs/mcs/enum.cs:189
 #, csharp-format
 msgid "An item in an enumeration cannot have an identifier `{0}'"
 msgstr ""
 
-#: mcs/mcs/enum.cs:196
+#: mcs/mcs/enum.cs:200
 msgid "Type byte, sbyte, short, ushort, int, uint, long or ulong expected"
 msgstr "Typ byte, sbyte, short, ushort, int, uint, long oder ulong erwartet"
 
-#: mcs/mcs/eval.cs:624
+#: mcs/mcs/eval.cs:626
 msgid "Detection Parsing Error"
 msgstr ""
 
-#: mcs/mcs/expression.cs:531
+#: mcs/mcs/expression.cs:542
 #, csharp-format
 msgid "The `{0}' operator cannot be applied to operand of type `{1}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:611
+#: mcs/mcs/expression.cs:622
 msgid "Cannot take the address of the given expression"
 msgstr ""
 
-#: mcs/mcs/expression.cs:645
+#: mcs/mcs/expression.cs:656
 msgid ""
 "You can only take the address of unfixed expression inside of a fixed "
 "statement initializer"
 msgstr ""
 
-#: mcs/mcs/expression.cs:734
+#: mcs/mcs/expression.cs:745
 #, csharp-format
 msgid "Operator `{0}' is ambiguous on an operand of type `{1}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:855
+#: mcs/mcs/expression.cs:868
 msgid "The * or -> operator must be applied to a pointer"
 msgstr ""
 
-#: mcs/mcs/expression.cs:860 mcs/mcs/expression.cs:3988
-msgid "The operation in question is undefined on void pointers"
-msgstr ""
-
-#: mcs/mcs/expression.cs:1106
+#: mcs/mcs/expression.cs:1070
 msgid ""
 "The operand of an increment or decrement operator must be a variable, "
 "property or indexer"
 msgstr ""
 
-#: mcs/mcs/expression.cs:1194
+#: mcs/mcs/expression.cs:1260
 #, csharp-format
 msgid "The `{0}' operator cannot be applied to an operand of a static type"
 msgstr ""
 
-#: mcs/mcs/expression.cs:1199
+#: mcs/mcs/expression.cs:1265
 #, csharp-format
 msgid "The `{0}' operator cannot be applied to an operand of pointer type"
 msgstr ""
 
-#: mcs/mcs/expression.cs:1205
+#: mcs/mcs/expression.cs:1271
 #, csharp-format
 msgid ""
 "The `{0}' operator cannot be applied to a lambda expression or anonymous "
 "method"
 msgstr ""
 
-#: mcs/mcs/expression.cs:1441
+#: mcs/mcs/expression.cs:1505
 #, csharp-format
 msgid ""
 "The `as' operator cannot be used with a non-reference type parameter `{0}'. "
 "Consider adding `class' or a reference type constraint"
 msgstr ""
 
-#: mcs/mcs/expression.cs:1445
+#: mcs/mcs/expression.cs:1509
 #, csharp-format
 msgid "The `as' operator cannot be used with a non-nullable value type `{0}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:1482
+#: mcs/mcs/expression.cs:1542
 #, csharp-format
 msgid "Cannot convert type `{0}' to `{1}' via a built-in conversion"
 msgstr ""
 
-#: mcs/mcs/expression.cs:1523
+#: mcs/mcs/expression.cs:1583
 #, csharp-format
 msgid "Cannot convert to static type `{0}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:1613
+#: mcs/mcs/expression.cs:1673
 msgid ""
 "The `default value' operator cannot be applied to an operand of a static type"
 msgstr ""
 
-#: mcs/mcs/expression.cs:2092
+#: mcs/mcs/expression.cs:2178
 #, csharp-format
 msgid "Operator `{0}' cannot be applied to operands of type `{1}' and `{2}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:2656
+#: mcs/mcs/expression.cs:2741
 msgid "To cast a negative value, you must enclose the value in parentheses"
 msgstr ""
 
-#: mcs/mcs/expression.cs:3202
+#: mcs/mcs/expression.cs:3394
 #, csharp-format
 msgid "Operator `{0}' is ambiguous on operands of type `{1}' and `{2}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:3924
+#: mcs/mcs/expression.cs:4146
 #, csharp-format
 msgid ""
 "A user-defined operator `{0}' must have parameters and return values of the "
 "same type in order to be applicable as a short circuit operator"
 msgstr ""
 
-#: mcs/mcs/expression.cs:3934
+#: mcs/mcs/expression.cs:4156
 #, csharp-format
 msgid ""
 "The type `{0}' must have operator `true' and operator `false' defined when `"
 "{1}' is used as a short circuit operator"
 msgstr ""
 
-#: mcs/mcs/expression.cs:4231
+#: mcs/mcs/expression.cs:4466
 #, csharp-format
 msgid ""
 "Type of conditional expression cannot be determined as `{0}' and `{1}' "
 "convert implicitly to each other"
 msgstr ""
 
-#: mcs/mcs/expression.cs:4242
+#: mcs/mcs/expression.cs:4476
 #, csharp-format
 msgid ""
 "Type of conditional expression cannot be determined because there is no "
 "implicit conversion between `{0}' and `{1}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:4703
+#: mcs/mcs/expression.cs:4928
 #, csharp-format
 msgid "Use of unassigned out parameter `{0}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:4743
+#: mcs/mcs/expression.cs:4958
 #, csharp-format
 msgid ""
 "Parameter `{0}' cannot be used inside `{1}' when using `ref' or `out' "
 "modifier"
 msgstr ""
 
-#: mcs/mcs/expression.cs:4957
+#: mcs/mcs/expression.cs:5159
+#, fuzzy, csharp-format
+msgid "Cannot invoke a non-delegate type `{0}'"
+msgstr "Kann Typ `{0}'<...> nicht finden"
+
+#: mcs/mcs/expression.cs:5170
 #, csharp-format
 msgid "The member `{0}' cannot be used as method or delegate"
 msgstr ""
 
-#: mcs/mcs/expression.cs:4980
+#: mcs/mcs/expression.cs:5190
 msgid ""
 "Do not directly call your base class Finalize method. It is called "
 "automatically from your destructor"
 msgstr ""
 
-#: mcs/mcs/expression.cs:4982
+#: mcs/mcs/expression.cs:5192
 msgid ""
 "Destructors and object.Finalize cannot be called directly. Consider calling "
 "IDisposable.Dispose if available"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5014
+#: mcs/mcs/expression.cs:5221
 #, csharp-format
 msgid ""
 "The base call to method `{0}' cannot be dynamically dispatched. Consider "
 "casting the dynamic arguments or eliminating the base access"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5086
+#: mcs/mcs/expression.cs:5298
 #, csharp-format
 msgid "`{0}': cannot explicitly call operator or accessor"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5379
+#: mcs/mcs/expression.cs:5625
 #, csharp-format
 msgid "Unsafe type `{0}' cannot be used in an object creation expression"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5398
+#: mcs/mcs/expression.cs:5648
 #, csharp-format
 msgid ""
 "Cannot create an instance of the variable type `{0}' because it does not "
 "have the new() constraint"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5404
+#: mcs/mcs/expression.cs:5654
 #, csharp-format
 msgid ""
 "`{0}': cannot provide arguments when creating an instance of a variable type"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5421
+#: mcs/mcs/expression.cs:5663
 #, csharp-format
 msgid "Cannot create an instance of the static class `{0}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5433
+#: mcs/mcs/expression.cs:5675
 #, csharp-format
 msgid "Cannot create an instance of the abstract class or interface `{0}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5779
+#: mcs/mcs/expression.cs:5971
+msgid ""
+"An implicitly typed local variable declarator cannot use an array initializer"
+msgstr ""
+
+#: mcs/mcs/expression.cs:6064
 msgid "Cannot create an array with a negative size"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5811 mcs/mcs/expression.cs:5819
-#: mcs/mcs/statement.cs:996 mcs/mcs/statement.cs:3068
+#: mcs/mcs/expression.cs:6096 mcs/mcs/expression.cs:6104
+#: mcs/mcs/statement.cs:1009 mcs/mcs/statement.cs:3055
 msgid "A constant value is expected"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5825
+#: mcs/mcs/expression.cs:6110
 #, csharp-format
 msgid "An array initializer of length `{0}' was expected"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5841
+#: mcs/mcs/expression.cs:6126
 msgid ""
 "Array initializers can only be used in a variable or field initializer. Try "
 "using a new expression instead"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5849
+#: mcs/mcs/expression.cs:6134
 msgid "A nested array initializer was expected"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5886
+#: mcs/mcs/expression.cs:6171
 msgid "An expression tree cannot contain a multidimensional array initializer"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5972
-msgid ""
-"An implicitly typed local variable declarator cannot use an array initializer"
-msgstr ""
-
-#: mcs/mcs/expression.cs:5993
+#: mcs/mcs/expression.cs:6273
 msgid ""
 "Can only use array initializer expressions to assign to array types. Try "
 "using a new expression instead"
 msgstr ""
 
-#: mcs/mcs/expression.cs:6394
+#: mcs/mcs/expression.cs:6709
 msgid ""
 "The type of an implicitly typed array cannot be inferred from the "
 "initializer. Try specifying array type explicitly"
 msgstr ""
 
-#: mcs/mcs/expression.cs:6522
+#: mcs/mcs/expression.cs:6846
+msgid ""
+"The `this' object cannot be used before all of its fields are assigned to"
+msgstr ""
+
+#: mcs/mcs/expression.cs:6853
 msgid ""
 "Keyword `this' is not valid in a static property, static method, or static "
 "field initializer"
 msgstr ""
 
-#: mcs/mcs/expression.cs:6525
+#: mcs/mcs/expression.cs:6856
 msgid ""
 "Anonymous methods inside structs cannot access instance members of `this'. "
 "Consider copying `this' to a local variable outside the anonymous method and "
 "using the local instead"
 msgstr ""
 
-#: mcs/mcs/expression.cs:6528
+#: mcs/mcs/expression.cs:6859
 msgid "Keyword `this' is not available in the current context"
 msgstr ""
 
-#: mcs/mcs/expression.cs:6592
-msgid ""
-"The `this' object cannot be used before all of its fields are assigned to"
-msgstr ""
-
-#: mcs/mcs/expression.cs:6622
+#: mcs/mcs/expression.cs:6946
 msgid "Cannot take the address of `this' because it is read-only"
 msgstr ""
 
-#: mcs/mcs/expression.cs:6624
+#: mcs/mcs/expression.cs:6948
 msgid "Cannot pass `this' as a ref or out argument because it is read-only"
 msgstr ""
 
-#: mcs/mcs/expression.cs:6626
+#: mcs/mcs/expression.cs:6950
 msgid "Cannot assign to `this' because it is read-only"
 msgstr ""
 
-#: mcs/mcs/expression.cs:6679
+#: mcs/mcs/expression.cs:7003
 msgid "The __arglist construct is valid only within a variable argument method"
 msgstr ""
 
-#: mcs/mcs/expression.cs:6729
+#: mcs/mcs/expression.cs:7053
 msgid "An expression tree cannot contain a method with variable arguments"
 msgstr ""
 
-#: mcs/mcs/expression.cs:6805
+#: mcs/mcs/expression.cs:7137
 msgid ""
 "System.Void cannot be used from C#. Use typeof (void) to get the void type "
 "object"
 msgstr ""
 
-#: mcs/mcs/expression.cs:6810
+#: mcs/mcs/expression.cs:7140
 msgid "The typeof operator cannot be used on the dynamic type"
 msgstr ""
 
-#: mcs/mcs/expression.cs:6879
+#: mcs/mcs/expression.cs:7191
 #, csharp-format
 msgid "`{0}': an attribute argument cannot use type parameters"
 msgstr ""
 
-#: mcs/mcs/expression.cs:7130
+#: mcs/mcs/expression.cs:7445
 #, csharp-format
 msgid ""
 "`{0}' does not have a predefined size, therefore sizeof can only be used in "
@@ -1933,12 +2341,12 @@ msgid ""
 "SizeOf)"
 msgstr ""
 
-#: mcs/mcs/expression.cs:7186
+#: mcs/mcs/expression.cs:7501
 #, csharp-format
 msgid "Alias `{0}' not found"
 msgstr "Alias `{0}' wurde nicht gefunden"
 
-#: mcs/mcs/expression.cs:7197
+#: mcs/mcs/expression.cs:7512
 #, csharp-format
 msgid ""
 "Alias `{0}' cannot be used with '::' since it denotes a type. Consider "
@@ -1947,32 +2355,32 @@ msgstr ""
 "Der Alias `{0}' kann nicht mit '::' verwendet werden, da der Alias auf einen "
 "Typ verweist. Verwenden Sie '.' stattdessen."
 
-#: mcs/mcs/expression.cs:7213
+#: mcs/mcs/expression.cs:7528
 #, csharp-format
 msgid ""
 "A namespace alias qualifier `{0}' did not resolve to a namespace or a type"
 msgstr ""
 
-#: mcs/mcs/expression.cs:7370
+#: mcs/mcs/expression.cs:7685
 msgid "Cannot perform member binding on `null' value"
 msgstr ""
 
-#: mcs/mcs/expression.cs:7437
+#: mcs/mcs/expression.cs:7752
 #, csharp-format
 msgid "`{0}': cannot reference a type through an expression; try `{1}' instead"
 msgstr ""
 
-#: mcs/mcs/expression.cs:7513
+#: mcs/mcs/expression.cs:7828
 #, csharp-format
 msgid "A nested type cannot be specified through a type parameter `{0}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:7560
+#: mcs/mcs/expression.cs:7887
 #, csharp-format
 msgid "The nested type `{0}' does not exist in the type `{1}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:7568
+#: mcs/mcs/expression.cs:7896
 #, csharp-format
 msgid ""
 "Type `{0}' does not contain a definition for `{1}' and no extension method `"
@@ -1980,222 +2388,289 @@ msgid ""
 "assembly reference?)"
 msgstr ""
 
-#: mcs/mcs/expression.cs:7748
+#: mcs/mcs/expression.cs:8076
 #, csharp-format
 msgid "Cannot apply indexing with [] to an expression of type `{0}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:7764
+#: mcs/mcs/expression.cs:8092
 msgid "A pointer must be indexed by only one value"
 msgstr ""
 
-#: mcs/mcs/expression.cs:7813
+#: mcs/mcs/expression.cs:8141
 msgid "An element access expression cannot use named argument"
 msgstr ""
 
-#: mcs/mcs/expression.cs:7869
+#: mcs/mcs/expression.cs:8197
 #, csharp-format
 msgid "Wrong number of indexes `{0}' inside [], expected `{1}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:8177
+#: mcs/mcs/expression.cs:8533
 msgid ""
 "The indexer base access cannot be dynamically dispatched. Consider casting "
 "the dynamic arguments or eliminating the base access"
 msgstr ""
 
-#: mcs/mcs/expression.cs:8249
+#: mcs/mcs/expression.cs:8614
 msgid "An expression tree may not contain a base access"
 msgstr ""
 
-#: mcs/mcs/expression.cs:8266
+#: mcs/mcs/expression.cs:8631
 msgid "Keyword `base' is not available in a static method"
 msgstr ""
 
-#: mcs/mcs/expression.cs:8268
+#: mcs/mcs/expression.cs:8633
 msgid "Keyword `base' is not available in the current context"
 msgstr ""
 
-#: mcs/mcs/expression.cs:8299
+#: mcs/mcs/expression.cs:8664
 msgid ""
 "A property, indexer or dynamic member access may not be passed as `ref' or "
 "`out' parameter"
 msgstr ""
 
-#: mcs/mcs/expression.cs:8572
+#: mcs/mcs/expression.cs:8941
 #, csharp-format
 msgid "Array elements cannot be of type `{0}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:8575
+#: mcs/mcs/expression.cs:8944
 #, csharp-format
 msgid "Array elements cannot be of static type `{0}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:8725
+#: mcs/mcs/expression.cs:9094
 msgid "Cannot use a negative size with stackalloc"
 msgstr ""
 
-#: mcs/mcs/expression.cs:8729
+#: mcs/mcs/expression.cs:9098
 msgid "Cannot use stackalloc in finally or catch"
 msgstr ""
 
-#: mcs/mcs/expression.cs:8834
+#: mcs/mcs/expression.cs:9203
 #, csharp-format
 msgid ""
 "Member `{0}' cannot be initialized. An object initializer may only be used "
 "for fields, or properties"
 msgstr ""
 
-#: mcs/mcs/expression.cs:8843
+#: mcs/mcs/expression.cs:9212
 #, csharp-format
 msgid ""
 "Static field or property `{0}' cannot be assigned in an object initializer"
 msgstr ""
 
-#: mcs/mcs/expression.cs:9016
+#: mcs/mcs/expression.cs:9387
 #, csharp-format
 msgid ""
 "A field or property `{0}' cannot be initialized with a collection object "
 "initializer because type `{1}' does not implement `{2}' interface"
 msgstr ""
 
-#: mcs/mcs/expression.cs:9027
+#: mcs/mcs/expression.cs:9398
 #, csharp-format
 msgid "Inconsistent `{0}' member declaration"
 msgstr ""
 
-#: mcs/mcs/expression.cs:9035
+#: mcs/mcs/expression.cs:9406
 #, csharp-format
 msgid ""
 "An object initializer includes more than one member `{0}' initialization"
 msgstr ""
 
-#: mcs/mcs/expression.cs:9053
+#: mcs/mcs/expression.cs:9424
 #, csharp-format
 msgid "Cannot initialize object of type `{0}' with a collection initializer"
 msgstr ""
 
-#: mcs/mcs/expression.cs:9296
+#: mcs/mcs/expression.cs:9661
 msgid "Anonymous types cannot be used in this expression"
 msgstr ""
 
-#: mcs/mcs/expression.cs:9384
+#: mcs/mcs/expression.cs:9749
 #, csharp-format
 msgid "An anonymous type property `{0}' cannot be initialized with `{1}'"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:310
+#: mcs/mcs/field.cs:70
+msgid ""
+"The modifier 'abstract' is not valid on fields. Try using a property instead"
+msgstr ""
+
+#: mcs/mcs/field.cs:121
+msgid ""
+"The FieldOffset attribute can only be placed on members of types marked with "
+"the StructLayout(LayoutKind.Explicit)"
+msgstr ""
+
+#: mcs/mcs/field.cs:126
+msgid "The FieldOffset attribute is not allowed on static or const fields"
+msgstr ""
+
+#: mcs/mcs/field.cs:132
+msgid ""
+"Do not use 'System.Runtime.CompilerServices.FixedBuffer' attribute. Use the "
+"'fixed' field modifier instead"
+msgstr ""
+
+#: mcs/mcs/field.cs:237
+#, csharp-format
+msgid ""
+"`{0}': Instance field types marked with StructLayout(LayoutKind.Explicit) "
+"must have a FieldOffset attribute"
+msgstr ""
+
+#: mcs/mcs/field.cs:246
+#, csharp-format
+msgid "`{0}': cannot declare variables of static types"
+msgstr ""
+
+#: mcs/mcs/field.cs:388
+#, csharp-format
+msgid ""
+"`{0}': Fixed size buffers type must be one of the following: bool, byte, "
+"short, int, long, char, sbyte, ushort, uint, ulong, float or double"
+msgstr ""
+
+#: mcs/mcs/field.cs:424
+#, csharp-format
+msgid "`{0}': Fixed size buffer fields may only be members of structs"
+msgstr ""
+
+#: mcs/mcs/field.cs:439
+#, csharp-format
+msgid "`{0}': Fixed size buffers must have a length greater than zero"
+msgstr ""
+
+#: mcs/mcs/field.cs:446
+#, csharp-format
+msgid ""
+"Fixed size buffer `{0}' of length `{1}' and type `{2}' exceeded 2^31 limit"
+msgstr ""
+
+#: mcs/mcs/field.cs:628
+#, csharp-format
+msgid "`{0}': A volatile field cannot be of the type `{1}'"
+msgstr ""
+
+#: mcs/mcs/field.cs:633
+#, fuzzy, csharp-format
+msgid "`{0}': A field cannot be both volatile and readonly"
+msgstr "`{0}' Eine Klasse kann nicht gleichzeitig statisch und versiegelt sein"
+
+#: mcs/mcs/flowanalysis.cs:307
 msgid "Control cannot fall through from one case label to another"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:537
+#: mcs/mcs/flowanalysis.cs:536
 #, csharp-format
 msgid ""
 "The label `{0}:' could not be found within the scope of the goto statement"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:665
+#: mcs/mcs/flowanalysis.cs:664
 msgid ""
 "A throw statement with no arguments is not allowed outside of a catch clause"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:676 mcs/mcs/flowanalysis.cs:682
+#: mcs/mcs/flowanalysis.cs:675 mcs/mcs/flowanalysis.cs:681
 msgid "No enclosing loop out of which to break or continue"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:710
+#: mcs/mcs/flowanalysis.cs:709
 msgid "Control cannot leave the body of an anonymous method"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:751
+#: mcs/mcs/flowanalysis.cs:750
 msgid "Cannot yield a value in the body of a try block with a catch clause"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:753
+#: mcs/mcs/flowanalysis.cs:752
 msgid "Cannot yield a value in the body of a catch clause"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:905
+#: mcs/mcs/flowanalysis.cs:904
 msgid ""
 "A throw statement with no arguments is not allowed inside of a finally "
 "clause nested inside of the innermost catch clause"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:917 mcs/mcs/iterators.cs:102
+#: mcs/mcs/flowanalysis.cs:916 mcs/mcs/iterators.cs:102
 msgid "Cannot yield in the body of a finally clause"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:928 mcs/mcs/flowanalysis.cs:944
-#: mcs/mcs/flowanalysis.cs:980 mcs/mcs/statement.cs:692
+#: mcs/mcs/flowanalysis.cs:927 mcs/mcs/flowanalysis.cs:943
+#: mcs/mcs/flowanalysis.cs:979 mcs/mcs/statement.cs:694
 msgid "Control cannot leave the body of a finally clause"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:1159
+#: mcs/mcs/flowanalysis.cs:1130
 #, csharp-format
 msgid ""
 "An automatically implemented property `{0}' must be fully assigned before "
-"control leaves the constructor. Consider calling default contructor"
+"control leaves the constructor. Consider calling the default struct "
+"contructor from a constructor initializer"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:1163
+#: mcs/mcs/flowanalysis.cs:1134
 #, csharp-format
 msgid ""
 "Field `{0}' must be fully assigned before control leaves the constructor"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:1418
+#: mcs/mcs/flowanalysis.cs:1376
 msgid "Use of unassigned local variable `"
 msgstr "Verwendung der nicht zugewiesenen lokalen Variable `"
 
-#: mcs/mcs/flowanalysis.cs:1488
+#: mcs/mcs/flowanalysis.cs:1446
 msgid "Use of possibly unassigned field `"
 msgstr "Verwendung eines möglicherweise nicht zugewiesenen Feldes `"
 
-#: mcs/mcs/generic.cs:95
+#: mcs/mcs/generic.cs:102 mcs/mcs/generic.cs:120
 #, csharp-format
 msgid "Type parameter `{0}' inherits conflicting constraints `{1}' and `{2}'"
 msgstr ""
 "Der Typparameter  `{0}' erbt die in Konflikt stehenden Einschränkungen  `"
 "{1}' und  `{2}'"
 
-#: mcs/mcs/generic.cs:152
+#: mcs/mcs/generic.cs:173
 #, csharp-format
 msgid "A constraint cannot be the dynamic type `{0}'"
 msgstr ""
 
-#: mcs/mcs/generic.cs:161
+#: mcs/mcs/generic.cs:182
 #, csharp-format
 msgid ""
 "Inconsistent accessibility: constraint type `{0}' is less accessible than `"
 "{1}'"
 msgstr ""
 
-#: mcs/mcs/generic.cs:168 mcs/mcs/generic.cs:182
+#: mcs/mcs/generic.cs:189 mcs/mcs/generic.cs:203
 #, csharp-format
 msgid "Duplicate constraint `{0}' for type parameter `{1}'"
 msgstr ""
 
-#: mcs/mcs/generic.cs:197
+#: mcs/mcs/generic.cs:218
 #, csharp-format
 msgid "Circular constraint dependency involving `{0}' and `{1}'"
 msgstr "Einschränkungsringabhängigkeit zwischen `{0}' und `{1}'"
 
-#: mcs/mcs/generic.cs:228
+#: mcs/mcs/generic.cs:249
 #, csharp-format
 msgid ""
 "Type parameter `{0}' has the `struct' constraint, so it cannot be used as a "
 "constraint for `{1}'"
 msgstr ""
 
-#: mcs/mcs/generic.cs:239
+#: mcs/mcs/generic.cs:260
 #, csharp-format
 msgid ""
 "The class type constraint `{0}' must be listed before any other constraints. "
 "Consider moving type constraint to the beginning of the constraint list"
 msgstr ""
 
-#: mcs/mcs/generic.cs:245
+#: mcs/mcs/generic.cs:266
 #, csharp-format
 msgid ""
 "`{0}': cannot specify both a constraint class and the `class' or `struct' "
@@ -2204,44 +2679,44 @@ msgstr ""
 "`{0}': Eine Einschränkung kann nicht gleichzeitig mit einer `class'- oder "
 "`struct'-Einschränkung angegeben werden"
 
-#: mcs/mcs/generic.cs:250
+#: mcs/mcs/generic.cs:271
 msgid "A constraint cannot be the dynamic type"
 msgstr ""
 
-#: mcs/mcs/generic.cs:256
+#: mcs/mcs/generic.cs:277
 #, csharp-format
 msgid ""
 "`{0}' is not a valid constraint. A constraint must be an interface, a non-"
 "sealed class or a type parameter"
 msgstr ""
 
-#: mcs/mcs/generic.cs:263
+#: mcs/mcs/generic.cs:284
 #, csharp-format
 msgid ""
 "`{0}' is not a valid constraint. Static classes cannot be used as constraints"
 msgstr ""
 
-#: mcs/mcs/generic.cs:269
+#: mcs/mcs/generic.cs:290
 #, csharp-format
 msgid "A constraint cannot be special class `{0}'"
 msgstr ""
 
-#: mcs/mcs/generic.cs:511
+#: mcs/mcs/generic.cs:538
 #, csharp-format
 msgid "The {2} type parameter `{0}' must be {3} valid on `{1}{4}'"
 msgstr ""
 
-#: mcs/mcs/generic.cs:1639
+#: mcs/mcs/generic.cs:1738
 #, csharp-format
 msgid "`{0}': static classes cannot be used as generic arguments"
 msgstr ""
 
-#: mcs/mcs/generic.cs:1646
+#: mcs/mcs/generic.cs:1745
 #, csharp-format
 msgid "The type `{0}' may not be used as a type argument"
 msgstr ""
 
-#: mcs/mcs/generic.cs:1885
+#: mcs/mcs/generic.cs:2000
 #, fuzzy, csharp-format
 msgid ""
 "The type `{0}' must be a reference type in order to use it as type parameter "
@@ -2250,7 +2725,7 @@ msgstr ""
 "Der Typ `{0}' muss ein Referenztyp sein, damit er als `{1}'-Parameter in "
 "generischen Typ oder in der generischen Methode `{2}' verwendet werden kann."
 
-#: mcs/mcs/generic.cs:1895
+#: mcs/mcs/generic.cs:2010
 #, fuzzy, csharp-format
 msgid ""
 "The type `{0}' must be a non-nullable value type in order to use it as type "
@@ -2259,7 +2734,7 @@ msgstr ""
 "Der Typ `{0}' darf keine NULL-Werte zulassen, wenn er als `{1}'-Parameter im "
 "generischen Typ oder in der generischen Methode `{2}' verwendet werden soll."
 
-#: mcs/mcs/generic.cs:1925
+#: mcs/mcs/generic.cs:2049
 #, fuzzy, csharp-format
 msgid ""
 "The type `{0}' cannot be used as type parameter `{1}' in the generic type or "
@@ -2268,14 +2743,14 @@ msgstr ""
 "Der Typ `{0}' muss ein Referenztyp sein, damit er als `{1}'-Parameter in "
 "generischen Typ oder in der generischen Methode `{2}' verwendet werden kann."
 
-#: mcs/mcs/generic.cs:1950
+#: mcs/mcs/generic.cs:2101
 #, csharp-format
 msgid ""
 "The type `{0}' must have a public parameterless constructor in order to use "
 "it as parameter `{1}' in the generic type or method `{2}'"
 msgstr ""
 
-#: mcs/mcs/generic.cs:1968
+#: mcs/mcs/generic.cs:2153
 #, fuzzy, csharp-format
 msgid ""
 "The type `{0}' cannot be used as type parameter `{1}' in the generic type or "
@@ -2284,7 +2759,7 @@ msgstr ""
 "Der Typ `{0}' muss ein Referenztyp sein, damit er als `{1}'-Parameter in "
 "generischen Typ oder in der generischen Methode `{2}' verwendet werden kann."
 
-#: mcs/mcs/generic.cs:1971
+#: mcs/mcs/generic.cs:2157
 #, fuzzy, csharp-format
 msgid ""
 "The type `{0}' cannot be used as type parameter `{1}' in the generic type or "
@@ -2294,7 +2769,7 @@ msgstr ""
 "Der Typ `{0}' muss ein Referenztyp sein, damit er als `{1}'-Parameter in "
 "generischen Typ oder in der generischen Methode `{2}' verwendet werden kann."
 
-#: mcs/mcs/generic.cs:1974
+#: mcs/mcs/generic.cs:2161
 #, fuzzy, csharp-format
 msgid ""
 "The type `{0}' cannot be used as type parameter `{1}' in the generic type or "
@@ -2303,34 +2778,41 @@ msgstr ""
 "Der Typ `{0}' muss ein Referenztyp sein, damit er als `{1}'-Parameter in "
 "generischen Typ oder in der generischen Methode `{2}' verwendet werden kann."
 
+#: mcs/mcs/import.cs:1711
+#, csharp-format
+msgid ""
+"The type `{0}' is defined in an assembly that is not referenced. Consider "
+"adding a reference to assembly `{1}'"
+msgstr ""
+
 #: mcs/mcs/iterators.cs:44
 msgid "The yield statement cannot be used inside anonymous method blocks"
 msgstr ""
 
-#: mcs/mcs/iterators.cs:869
+#: mcs/mcs/iterators.cs:856
 #, csharp-format
 msgid ""
 "The body of `{0}' cannot be an iterator block because `{1}' is not an "
 "iterator interface type"
 msgstr ""
 
-#: mcs/mcs/iterators.cs:882
+#: mcs/mcs/iterators.cs:869
 msgid "Iterators cannot have ref or out parameters"
 msgstr ""
 
-#: mcs/mcs/iterators.cs:888
+#: mcs/mcs/iterators.cs:875
 msgid "__arglist is not allowed in parameter list of iterators"
 msgstr ""
 
-#: mcs/mcs/iterators.cs:894
+#: mcs/mcs/iterators.cs:881
 msgid "Iterators cannot have unsafe parameters or yield types"
 msgstr ""
 
-#: mcs/mcs/iterators.cs:901 mcs/mcs/statement.cs:4220
+#: mcs/mcs/iterators.cs:888 mcs/mcs/statement.cs:4324
 msgid "Unsafe code may not appear in iterators"
 msgstr ""
 
-#: mcs/mcs/linq.cs:69
+#: mcs/mcs/linq.cs:68
 #, csharp-format
 msgid ""
 "An implementation of `{0}' query expression pattern could not be found. Are "
@@ -2338,27 +2820,27 @@ msgid ""
 "reference?"
 msgstr ""
 
-#: mcs/mcs/linq.cs:94
+#: mcs/mcs/linq.cs:93
 #, csharp-format
 msgid ""
 "Ambiguous implementation of the query pattern `{0}' for source type `{1}'"
 msgstr ""
 
-#: mcs/mcs/linq.cs:125
+#: mcs/mcs/linq.cs:124
 #, csharp-format
 msgid ""
 "An implementation of `{0}' query expression pattern for source type `{1}' "
 "could not be found"
 msgstr ""
 
-#: mcs/mcs/linq.cs:133
+#: mcs/mcs/linq.cs:132
 #, csharp-format
 msgid ""
 "An expression type is incorrect in a subsequent `from' clause in a query "
 "expression with source type `{0}'"
 msgstr ""
 
-#: mcs/mcs/linq.cs:137
+#: mcs/mcs/linq.cs:136
 #, csharp-format
 msgid ""
 "An expression type in `{0}' clause is incorrect. Type inference failed in "
@@ -2370,53 +2852,356 @@ msgstr ""
 msgid "A range variable `{0}' cannot be initialized with `{1}'"
 msgstr ""
 
-#: mcs/mcs/linq.cs:708
+#: mcs/mcs/linq.cs:750
 #, csharp-format
 msgid "A range variable `{0}' conflicts with a previous declaration of `{0}'"
 msgstr ""
 
-#: mcs/mcs/linq.cs:714
+#: mcs/mcs/linq.cs:757
 #, csharp-format
 msgid "A range variable `{0}' has already been declared in this scope"
 msgstr ""
 
-#: mcs/mcs/linq.cs:720
+#: mcs/mcs/linq.cs:764
 #, csharp-format
 msgid "A range variable `{0}' conflicts with a method type parameter"
 msgstr ""
 
-#: mcs/mcs/literal.cs:47
+#: mcs/mcs/linq.cs:796
+#, csharp-format
+msgid ""
+"A range variable `{0}' cannot be assigned to. Consider using `let' clause to "
+"store the value"
+msgstr ""
+
+#: mcs/mcs/literal.cs:49
 #, csharp-format
 msgid ""
 "Cannot convert null to the type parameter `{0}' because it could be a value "
 "type. Consider using `default ({0})' instead"
 msgstr ""
 
-#: mcs/mcs/literal.cs:53
+#: mcs/mcs/literal.cs:55
 #, csharp-format
 msgid "Cannot convert null to `{0}' because it is a value type"
 msgstr ""
 "NULL kann nicht in `{0}' konvertiert werden, da dies ein Werttyp ist, der "
 "nicht auf NULL festgelegt werden kann"
 
-#: mcs/mcs/literal.cs:202
+#: mcs/mcs/literal.cs:204
 #, csharp-format
 msgid ""
 "Literal of type double cannot be implicitly converted to type `{0}'. Add "
 "suffix `{1}' to create a literal of this type"
 msgstr ""
 
-#: mcs/mcs/modifiers.cs:260
+#: mcs/mcs/membercache.cs:1241
+msgid ""
+"A partial method declaration and partial method implementation cannot differ "
+"on use of `params' modifier"
+msgstr ""
+
+#: mcs/mcs/membercache.cs:1244
+msgid ""
+"A partial method declaration and partial method implementation must be both "
+"an extension method or neither"
+msgstr ""
+
+#: mcs/mcs/membercache.cs:1248
 #, csharp-format
-msgid "The modifier `{0}' is not valid for this item"
+msgid ""
+"Overloaded contructor `{0}' cannot differ on use of parameter modifiers only"
+msgstr ""
+
+#: mcs/mcs/membercache.cs:1252
+#, csharp-format
+msgid ""
+"Overloaded method `{0}' cannot differ on use of parameter modifiers only"
+msgstr ""
+
+#: mcs/mcs/membercache.cs:1284
+msgid ""
+"A partial method declaration and partial method implementation must be both "
+"`static' or neither"
+msgstr ""
+
+#: mcs/mcs/membercache.cs:1289
+msgid ""
+"A partial method declaration and partial method implementation must be both "
+"`unsafe' or neither"
+msgstr ""
+
+#: mcs/mcs/membercache.cs:1295
+#, csharp-format
+msgid "A partial method `{0}' declaration is already defined"
+msgstr ""
+
+#: mcs/mcs/membercache.cs:1299
+#, csharp-format
+msgid "A partial method `{0}' implementation is already defined"
+msgstr ""
+
+#: mcs/mcs/membercache.cs:1310 mcs/mcs/property.cs:81
+#, csharp-format
+msgid "A member `{0}' is already reserved"
+msgstr ""
+
+#: mcs/mcs/membercache.cs:1321
+#, csharp-format
+msgid "Duplicate user-defined conversion in type `{0}'"
+msgstr ""
+
+#: mcs/mcs/method.cs:495
+msgid ""
+"The DllImport attribute must be specified on a method marked `static' and "
+"`extern'"
+msgstr ""
+
+#: mcs/mcs/method.cs:583
+#, csharp-format
+msgid "`{0}': A partial method parameters cannot use `out' modifier"
+msgstr ""
+
+#: mcs/mcs/method.cs:642
+#, csharp-format
+msgid ""
+"Conditional not valid on `{0}' because it is a constructor, destructor, "
+"operator or explicit interface implementation"
+msgstr ""
+"Das Conditional-Attribut ist für `{0}' ungültig, weil dies ein Konstruktor, "
+"Destruktor, Operator oder eine explizite Schnittstellenimplementierung ist"
+
+#: mcs/mcs/method.cs:860
+#, csharp-format
+msgid "Program `{0}' has more than one entry point defined: `{1}'"
+msgstr ""
+
+#: mcs/mcs/method.cs:904
+#, csharp-format
+msgid "Conditional not valid on `{0}' because it is an override method"
+msgstr ""
+"Das Conditional-Attribut ist für `{0}' ungültig, da es eine überschriebene "
+"Funktion ist"
+
+#: mcs/mcs/method.cs:909
+#, csharp-format
+msgid "Conditional not valid on `{0}' because its return type is not void"
 msgstr ""
+"Das Conditional-Attribut ist für `{0}' ungültig, da der Rückgabetyp nicht "
+"leer ist"
 
-#: mcs/mcs/namespace.cs:57
+#: mcs/mcs/method.cs:914
+msgid "Conditional not valid on interface members"
+msgstr "Das Conditional-Attribut ist für Schnittstellenmember ungültig"
+
+#: mcs/mcs/method.cs:920
+#, fuzzy, csharp-format
+msgid "Conditional member `{0}' cannot implement interface member `{1}'"
+msgstr "`{0}' implementiert den Schnittstellenmember `{1}' nicht"
+
+#: mcs/mcs/method.cs:927
 #, csharp-format
-msgid "An assembly `{0}' is used without being referenced"
+msgid "Conditional method `{0}' cannot have an out parameter"
+msgstr ""
+
+#: mcs/mcs/method.cs:1050
+#, csharp-format
+msgid ""
+"The constraints for type parameter `{0}' of method `{1}' must match the "
+"constraints for type parameter `{2}' of interface method `{3}'. Consider "
+"using an explicit interface implementation instead"
+msgstr ""
+
+#: mcs/mcs/method.cs:1104
+#, fuzzy, csharp-format
+msgid "`{0}': Extension methods cannot be defined in a nested class"
 msgstr ""
+"`{0}': Erweiterungsmethoden müssen in einer nicht generischen statischen "
+"Klasse definiert werden"
+
+#: mcs/mcs/method.cs:1110
+#, csharp-format
+msgid ""
+"`{0}': Extension methods cannot be declared without a reference to System."
+"Core.dll assembly. Add the assembly reference or remove `this' modifer from "
+"the first parameter"
+msgstr ""
+
+#: mcs/mcs/method.cs:1119
+#, csharp-format
+msgid "`{0}': Extension methods must be defined in a non-generic static class"
+msgstr ""
+"`{0}': Erweiterungsmethoden müssen in einer nicht generischen statischen "
+"Klasse definiert werden"
+
+#: mcs/mcs/method.cs:1172
+#, csharp-format
+msgid ""
+"A partial method `{0}' implementation is missing a partial method declaration"
+msgstr ""
+
+#: mcs/mcs/method.cs:1219
+#, csharp-format
+msgid "Method or delegate cannot return type `{0}'"
+msgstr ""
+
+#: mcs/mcs/method.cs:1294
+msgid ""
+"The constructor call cannot be dynamically dispatched within constructor "
+"initializer"
+msgstr ""
+
+#: mcs/mcs/method.cs:1308
+#, fuzzy, csharp-format
+msgid "`{0}': Struct constructors cannot call base constructors"
+msgstr "`{0}': Statische Klassen können keinen Destruktor enthalten"
+
+#: mcs/mcs/method.cs:1327
+#, csharp-format
+msgid "Constructor `{0}' cannot call itself"
+msgstr ""
+
+#: mcs/mcs/method.cs:1446
+#, csharp-format
+msgid "`{0}': The static constructor must be parameterless"
+msgstr ""
+
+#: mcs/mcs/method.cs:1464
+msgid "Structs cannot contain explicit parameterless constructors"
+msgstr ""
+
+#: mcs/mcs/method.cs:1520
+#, csharp-format
+msgid ""
+"`{0}': A class with the ComImport attribute cannot have a user-defined "
+"constructor"
+msgstr ""
+
+#: mcs/mcs/method.cs:1763
+#, fuzzy, csharp-format
+msgid "`{0}' is an accessor not found in interface member `{1}{2}'"
+msgstr "`{0}' implementiert den Schnittstellenmember `{1}' nicht"
 
-#: mcs/mcs/namespace.cs:148
+#: mcs/mcs/method.cs:1769
+#, csharp-format
+msgid ""
+"`{0}.{1}' in explicit interface declaration is not a member of interface"
+msgstr ""
+
+#: mcs/mcs/method.cs:1776
+#, csharp-format
+msgid ""
+"`{0}' explicit method implementation cannot implement `{1}' because it is an "
+"accessor"
+msgstr ""
+
+#: mcs/mcs/method.cs:1786
+#, fuzzy, csharp-format
+msgid "Method `{0}' cannot implement interface accessor `{1}'"
+msgstr "`{0}' implementiert den Schnittstellenmember `{1}' nicht"
+
+#: mcs/mcs/method.cs:1792
+#, csharp-format
+msgid ""
+"Accessor `{0}' cannot implement interface member `{1}' for type `{2}'. Use "
+"an explicit interface implementation"
+msgstr ""
+
+#: mcs/mcs/method.cs:1798
+#, fuzzy, csharp-format
+msgid ""
+"Accessor `{0}' must be declared public to implement interface member `{1}'"
+msgstr "`{0}' implementiert den Schnittstellenmember `{1}' nicht"
+
+#: mcs/mcs/method.cs:1822
+#, csharp-format
+msgid ""
+"`{0}': the explicit interface implementation cannot introduce the params "
+"modifier"
+msgstr ""
+
+#: mcs/mcs/method.cs:2140
+#, csharp-format
+msgid ""
+"Attribute `{0}' is not valid on property or event accessors. It is valid on `"
+"{1}' declarations only"
+msgstr ""
+
+#: mcs/mcs/method.cs:2351
+#, csharp-format
+msgid "User-defined operator `{0}' must be declared static and public"
+msgstr ""
+
+#: mcs/mcs/method.cs:2390
+msgid ""
+"User-defined operator cannot take an object of the enclosing type and "
+"convert to an object of the enclosing type"
+msgstr ""
+
+#: mcs/mcs/method.cs:2401
+msgid "User-defined conversion must convert to or from the enclosing type"
+msgstr ""
+
+#: mcs/mcs/method.cs:2407
+#, csharp-format
+msgid ""
+"User-defined conversion `{0}' cannot convert to or from the dynamic type"
+msgstr ""
+
+#: mcs/mcs/method.cs:2414
+#, csharp-format
+msgid ""
+"User-defined conversion `{0}' cannot convert to or from an interface type"
+msgstr ""
+
+#: mcs/mcs/method.cs:2421
+#, csharp-format
+msgid "User-defined conversion `{0}' cannot convert to or from a base class"
+msgstr ""
+
+#: mcs/mcs/method.cs:2427
+#, csharp-format
+msgid "User-defined conversion `{0}' cannot convert to or from a derived class"
+msgstr ""
+
+#: mcs/mcs/method.cs:2434
+msgid ""
+"Overloaded shift operator must have the type of the first operand be the "
+"containing type, and the type of the second operand must be int"
+msgstr ""
+
+#: mcs/mcs/method.cs:2443
+msgid ""
+"The return type for ++ or -- operator must be the containing type or derived "
+"from the containing type"
+msgstr ""
+"Der Rückgabetyp für die Operatoren ++ und -- muss der enthaltene Typ sein "
+"oder vom enthaltenen Typ abgeleitet sein"
+
+#: mcs/mcs/method.cs:2448
+msgid "The parameter type for ++ or -- operator must be the containing type"
+msgstr "Der Parameter für den ++ oder -- Operator muss der enthaltene Typ sein"
+
+#: mcs/mcs/method.cs:2455
+#, fuzzy
+msgid "The parameter type of a unary operator must be the containing type"
+msgstr "Der Parameter für den ++ oder -- Operator muss der enthaltene Typ sein"
+
+#: mcs/mcs/method.cs:2463
+msgid "The return type of operator True or False must be bool"
+msgstr ""
+
+#: mcs/mcs/method.cs:2478
+#, fuzzy
+msgid "One of the parameters of a binary operator must be the containing type"
+msgstr "Der Parameter für den ++ oder -- Operator muss der enthaltene Typ sein"
+
+#: mcs/mcs/modifiers.cs:275
+#, csharp-format
+msgid "The modifier `{0}' is not valid for this item"
+msgstr ""
+
+#: mcs/mcs/namespace.cs:70
 #, csharp-format
 msgid ""
 "The type or namespace name `{0}' could not be found in the global namespace "
@@ -2425,7 +3210,7 @@ msgstr ""
 "Der Typ oder Namespacename `{0}' konnte im globalen Namesapce nicht gefunden "
 "werden. Fehlt ein Assemblyverweis?"
 
-#: mcs/mcs/namespace.cs:264
+#: mcs/mcs/namespace.cs:177
 #, csharp-format
 msgid ""
 "The type or namespace name `{0}' does not exist in the namespace `{1}'. Are "
@@ -2434,54 +3219,54 @@ msgstr ""
 "Der Typ oder Namespacename `{0}' existiert nicht im Namespace `{1}'. Fehlt "
 "ein Assemblyverweis?"
 
-#: mcs/mcs/namespace.cs:343
+#: mcs/mcs/namespace.cs:256
 #, csharp-format
 msgid "The imported type `{0}' is defined multiple times"
 msgstr ""
 
-#: mcs/mcs/namespace.cs:669
+#: mcs/mcs/namespace.cs:583
 #, csharp-format
 msgid ""
 "`{0}' is a type not a namespace. A using namespace directive can only be "
 "applied to namespaces"
 msgstr ""
 
-#: mcs/mcs/namespace.cs:696
+#: mcs/mcs/namespace.cs:610
 #, csharp-format
 msgid "The extern alias `{0}' was not specified in -reference option"
 msgstr ""
 "Der externe Alias `{0}' wurde nicht in der -reference-Option angegeben."
 
-#: mcs/mcs/namespace.cs:906 mcs/mcs/namespace.cs:928
+#: mcs/mcs/namespace.cs:820 mcs/mcs/namespace.cs:842
 msgid ""
 "A using clause must precede all other namespace elements except extern alias "
 "declarations"
 msgstr ""
 
-#: mcs/mcs/namespace.cs:952
+#: mcs/mcs/namespace.cs:866
 msgid "An extern alias declaration must precede all other elements"
 msgstr "Eine externe Aliasdeklaration muss allen anderen Elementen vorangehen"
 
-#: mcs/mcs/namespace.cs:970
+#: mcs/mcs/namespace.cs:884
 #, csharp-format
 msgid "The using alias `{0}' appeared previously in this namespace"
 msgstr ""
 
-#: mcs/mcs/namespace.cs:1091
+#: mcs/mcs/namespace.cs:1005
 #, csharp-format
 msgid "Namespace `{0}' contains a definition with same name as alias `{1}'"
 msgstr ""
 
-#: mcs/mcs/namespace.cs:1145
+#: mcs/mcs/namespace.cs:1059
 #, csharp-format
 msgid "`{0}' is an ambiguous reference between `{1}' and `{2}'"
 msgstr ""
 
-#: mcs/mcs/namespace.cs:1213
-msgid "You cannot redefine the global extern alias"
+#: mcs/mcs/namespace.cs:1127
+msgid "The global extern alias cannot be redefined"
 msgstr ""
 
-#: mcs/mcs/namespace.cs:1218
+#: mcs/mcs/namespace.cs:1132
 #, csharp-format
 msgid ""
 "The type or namespace name `{0}' could not be found. Are you missing a using "
@@ -2490,64 +3275,64 @@ msgstr ""
 "Der Typ oder Namespacename `{0}' konnte nicht gefunden werden. Fehlt eine "
 "using-Direktive oder ein Assemblyverweis?"
 
-#: mcs/mcs/nullable.cs:922
+#: mcs/mcs/nullable.cs:1036
 msgid ""
 "An expression tree cannot contain a coalescing operator with null left side"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:176
+#: mcs/mcs/parameter.cs:156
 msgid "The params parameter must be a single dimensional array"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:287
+#: mcs/mcs/parameter.cs:288
 msgid "An out parameter cannot have the `In' attribute"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:292
+#: mcs/mcs/parameter.cs:293
 msgid ""
 "Do not use `System.ParamArrayAttribute'. Use the `params' keyword instead"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:299
+#: mcs/mcs/parameter.cs:300
 msgid ""
 "Cannot specify only `Out' attribute on a ref parameter. Use both `In' and "
 "`Out' attributes or neither"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:309
+#: mcs/mcs/parameter.cs:310
 #, csharp-format
 msgid "Cannot specify `{0}' attribute on optional parameter `{1}'"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:319
+#: mcs/mcs/parameter.cs:320
 #, csharp-format
 msgid ""
 "Argument of type `{0}' is not applicable for the DefaultParameterValue "
 "attribute"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:322
+#: mcs/mcs/parameter.cs:323
 #, csharp-format
 msgid ""
 "The DefaultParameterValue attribute is not applicable on parameters of type `"
 "{0}'"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:333
+#: mcs/mcs/parameter.cs:334
 msgid "The type of the default value should match the type of the parameter"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:375
+#: mcs/mcs/parameter.cs:376
 #, csharp-format
 msgid "Method or delegate parameter cannot be of type `{0}'"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:385
+#: mcs/mcs/parameter.cs:386
 #, csharp-format
 msgid "`{0}': static types cannot be used as parameters"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:391
+#: mcs/mcs/parameter.cs:392
 #, csharp-format
 msgid "The extension method cannot be of type `{0}'"
 msgstr ""
@@ -2555,24 +3340,24 @@ msgstr ""
 #: mcs/mcs/parameter.cs:448
 #, csharp-format
 msgid ""
-"The expression being assigned to nullable optional parameter `{0}' must be "
-"default value"
+"The expression being assigned to optional parameter `{0}' must be a constant "
+"or default value"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:452
+#: mcs/mcs/parameter.cs:464
 #, csharp-format
 msgid ""
-"The expression being assigned to optional parameter `{0}' must be a constant "
-"or default value"
+"The expression being assigned to nullable optional parameter `{0}' must be "
+"default value"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:470
+#: mcs/mcs/parameter.cs:472
 #, csharp-format
 msgid ""
 "Optional parameter `{0}' of type `{1}' can only be initialized with `null'"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:481
+#: mcs/mcs/parameter.cs:482
 #, csharp-format
 msgid ""
 "Optional parameter expression of type `{0}' cannot be converted to parameter "
@@ -2583,31 +3368,26 @@ msgstr ""
 msgid "An expression tree parameter cannot use `ref' or `out' modifier"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:1120
+#: mcs/mcs/parameter.cs:1096
 #, csharp-format
 msgid "The parameter name `{0}' conflicts with a compiler generated name"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:1138
-#, csharp-format
-msgid "The parameter name `{0}' is a duplicate"
-msgstr ""
-
-#: mcs/mcs/pending.cs:433
+#: mcs/mcs/pending.cs:443
 #, csharp-format
 msgid ""
 "`{0}' does not implement interface member `{1}' and the best implementing "
 "candidate `{2}' is static"
 msgstr ""
 
-#: mcs/mcs/pending.cs:437
+#: mcs/mcs/pending.cs:447
 #, csharp-format
 msgid ""
 "`{0}' does not implement interface member `{1}' and the best implementing "
 "candidate `{2}' in not public"
 msgstr ""
 
-#: mcs/mcs/pending.cs:441
+#: mcs/mcs/pending.cs:451
 #, csharp-format
 msgid ""
 "`{0}' does not implement interface member `{1}' and the best implementing "
@@ -2615,86 +3395,165 @@ msgid ""
 "type `{4}'"
 msgstr ""
 
-#: mcs/mcs/pending.cs:446
+#: mcs/mcs/pending.cs:456
 #, csharp-format
 msgid "`{0}' does not implement interface member `{1}'"
 msgstr "`{0}' implementiert den Schnittstellenmember `{1}' nicht"
 
-#: mcs/mcs/pending.cs:451
+#: mcs/mcs/pending.cs:461
 #, csharp-format
 msgid "`{0}' does not implement inherited abstract member `{1}'"
 msgstr ""
 
-#: mcs/mcs/rootcontext.cs:240
+#: mcs/mcs/property.cs:352
 #, csharp-format
 msgid ""
-"The compilation may fail due to missing `{0}.SetCorlibTypeBuilders(...)' "
-"method"
+"`{0}': accessibility modifiers may not be used on accessors in an interface"
+msgstr ""
+
+#: mcs/mcs/property.cs:356
+#, csharp-format
+msgid "`{0}': abstract properties cannot have private accessors"
+msgstr "`{0}': Abstrakte Eigenschaften können keine privaten-Accessoren haben"
+
+#: mcs/mcs/property.cs:401
+#, csharp-format
+msgid ""
+"The accessibility modifier of the `{0}' accessor must be more restrictive "
+"than the modifier of the property or indexer `{1}'"
+msgstr ""
+
+#: mcs/mcs/property.cs:502
+#, csharp-format
+msgid "Explicit interface implementation `{0}' is missing accessor `{1}'"
+msgstr ""
+
+#: mcs/mcs/property.cs:521
+#, csharp-format
+msgid ""
+"`{0}': cannot override because `{1}' does not have an overridable get "
+"accessor"
+msgstr ""
+
+#: mcs/mcs/property.cs:538
+#, csharp-format
+msgid ""
+"`{0}': cannot override because `{1}' does not have an overridable set "
+"accessor"
 msgstr ""
 
-#: mcs/mcs/roottypes.cs:235
+#: mcs/mcs/property.cs:579
+#, csharp-format
 msgid ""
-"Value specified for the argument to 'System.Runtime.InteropServices."
-"DefaultCharSetAttribute' is not valid"
+"`{0}': Cannot specify accessibility modifiers for both accessors of the "
+"property or indexer"
 msgstr ""
 
-#: mcs/mcs/statement.cs:85
+#: mcs/mcs/property.cs:586
+#, csharp-format
+msgid ""
+"`{0}': accessibility modifiers on accessors may only be used if the property "
+"or indexer has both a get and a set accessor"
+msgstr ""
+
+#: mcs/mcs/property.cs:783
+#, csharp-format
+msgid ""
+"Automatically implemented property `{0}' cannot be used inside a type with "
+"an explicit StructLayout attribute"
+msgstr ""
+
+#: mcs/mcs/property.cs:1274
+#, csharp-format
+msgid "`{0}': event must be of a delegate type"
+msgstr ""
+
+#: mcs/mcs/property.cs:1482
+#, csharp-format
+msgid ""
+"The `{0}' attribute is valid only on an indexer that is not an explicit "
+"interface member declaration"
+msgstr ""
+
+#: mcs/mcs/property.cs:1516
+msgid "Cannot set the `IndexerName' attribute on an indexer marked override"
+msgstr ""
+
+#: mcs/mcs/reflection.cs:239
+msgid "Could not access the key inside the container `"
+msgstr ""
+
+#: mcs/mcs/roottypes.cs:434
+msgid ""
+"The compilation may fail due to missing `System.Reflection.Emit."
+"AssemblyBuilder.SetCorlibTypeBuilders(...)' method"
+msgstr ""
+
+#: mcs/mcs/roottypes.cs:529
+#, csharp-format
+msgid "Value specified for the argument to `{0}' is not valid"
+msgstr ""
+
+#: mcs/mcs/statement.cs:87
 msgid ""
 "A lambda expression with statement body cannot be converted to an expresion "
 "tree"
 msgstr ""
 
-#: mcs/mcs/statement.cs:738
+#: mcs/mcs/statement.cs:740
 #, csharp-format
 msgid ""
 "An object of a type convertible to `{0}' is required for the return statement"
 msgstr ""
 
-#: mcs/mcs/statement.cs:751
+#: mcs/mcs/statement.cs:753
 #, csharp-format
 msgid ""
 "`{0}': A return keyword must not be followed by any expression when method "
 "returns void"
 msgstr ""
 
-#: mcs/mcs/statement.cs:776
+#: mcs/mcs/statement.cs:778
 #, csharp-format
 msgid ""
 "Cannot convert `{0}' to delegate type `{1}' because some of the return types "
 "in the block are not implicitly convertible to the delegate return type"
 msgstr ""
 
-#: mcs/mcs/statement.cs:804
+#: mcs/mcs/statement.cs:806
 msgid ""
 "Cannot return a value from iterators. Use the yield return statement to "
 "return a value, or yield break to end the iteration"
 msgstr ""
 
-#: mcs/mcs/statement.cs:950 mcs/mcs/statement.cs:984
+#: mcs/mcs/statement.cs:963 mcs/mcs/statement.cs:997
 msgid "A goto case is only valid inside a switch statement"
 msgstr ""
 
-#: mcs/mcs/statement.cs:1063 mcs/mcs/statement.cs:4593
+#: mcs/mcs/statement.cs:1076 mcs/mcs/statement.cs:4726
 msgid "The type caught or thrown must be derived from System.Exception"
 msgstr ""
 
-#: mcs/mcs/statement.cs:1564
-#, csharp-format
-msgid ""
-"The label `{0}' shadows another label by the same name in a contained scope"
+#: mcs/mcs/statement.cs:1298
+msgid "A fixed statement cannot use an implicitly typed local variable"
 msgstr ""
 
-#: mcs/mcs/statement.cs:1589
-#, csharp-format
-msgid "The label `{0}' is a duplicate"
+#: mcs/mcs/statement.cs:1303
+msgid "An implicitly typed local variable cannot be a constant"
 msgstr ""
 
-#: mcs/mcs/statement.cs:1684
-#, csharp-format
-msgid "`{0}' conflicts with a declaration in a child block"
+#: mcs/mcs/statement.cs:1308
+msgid ""
+"An implicitly typed local variable declarator must include an initializer"
+msgstr ""
+
+#: mcs/mcs/statement.cs:1313
+msgid ""
+"An implicitly typed local variable declaration cannot include multiple "
+"declarators"
 msgstr ""
 
-#: mcs/mcs/statement.cs:1785
+#: mcs/mcs/statement.cs:1883
 #, csharp-format
 msgid ""
 "A local variable named `{0}' cannot be declared in this scope because it "
@@ -2702,96 +3561,111 @@ msgid ""
 "scope to denote something else"
 msgstr ""
 
-#: mcs/mcs/statement.cs:1794
+#: mcs/mcs/statement.cs:1894
+#, csharp-format
+msgid ""
+"`{0}': An anonymous type cannot have multiple properties with the same name"
+msgstr ""
+
+#: mcs/mcs/statement.cs:1897
+#, csharp-format
+msgid "The parameter name `{0}' is a duplicate"
+msgstr ""
+
+#: mcs/mcs/statement.cs:1904
 #, csharp-format
 msgid "A local variable named `{0}' is already defined in this scope"
 msgstr ""
 
-#: mcs/mcs/statement.cs:1799
+#: mcs/mcs/statement.cs:1910
 #, csharp-format
-msgid "The type parameter name `{0}' is the same as `{1}'"
+msgid ""
+"The type parameter name `{0}' is the same as local variable or parameter name"
 msgstr ""
 
-#: mcs/mcs/statement.cs:1944
-msgid "An implicitly typed local variable cannot be a constant"
+#: mcs/mcs/statement.cs:2482
+#, csharp-format
+msgid ""
+"The out parameter `{0}' must be assigned to before control leaves the "
+"current method"
 msgstr ""
 
-#: mcs/mcs/statement.cs:2860
+#: mcs/mcs/statement.cs:2573
 #, csharp-format
 msgid "`{0}': not all code paths return a value"
 msgstr ""
 
-#: mcs/mcs/statement.cs:2863
+#: mcs/mcs/statement.cs:2577
 #, csharp-format
 msgid "Not all code paths return a value in anonymous method of type `{0}'"
 msgstr ""
 
-#: mcs/mcs/statement.cs:2921
+#: mcs/mcs/statement.cs:2748
+#, csharp-format
+msgid "The label `{0}' is a duplicate"
+msgstr ""
+
+#: mcs/mcs/statement.cs:2757 mcs/mcs/statement.cs:2768
 #, csharp-format
 msgid ""
-"The out parameter `{0}' must be assigned to before control leaves the "
-"current method"
+"The label `{0}' shadows another label by the same name in a contained scope"
 msgstr ""
 
-#: mcs/mcs/statement.cs:3101
+#: mcs/mcs/statement.cs:3088
 #, csharp-format
 msgid "The label `case {0}:' already occurs in this switch statement"
 msgstr ""
 
-#: mcs/mcs/statement.cs:3632
+#: mcs/mcs/statement.cs:3629
 #, csharp-format
 msgid ""
 "A switch expression of type `{0}' cannot be converted to an integral type, "
 "bool, char, string, enum or nullable type"
 msgstr ""
 
-#: mcs/mcs/statement.cs:4095
+#: mcs/mcs/statement.cs:4114
 #, csharp-format
 msgid "`{0}' is not a reference type as required by the lock statement"
 msgstr ""
 
-#: mcs/mcs/statement.cs:4358
-msgid "A fixed statement cannot use an implicitly typed local variable"
-msgstr ""
-
-#: mcs/mcs/statement.cs:4368
+#: mcs/mcs/statement.cs:4455
 msgid "The type of locals declared in a fixed statement must be a pointer type"
 msgstr ""
 
-#: mcs/mcs/statement.cs:4392
+#: mcs/mcs/statement.cs:4471
 msgid ""
 "The right hand side of a fixed statement assignment may not be a cast "
 "expression"
 msgstr ""
 
-#: mcs/mcs/statement.cs:4470
+#: mcs/mcs/statement.cs:4542
 msgid ""
 "You cannot use the fixed statement to take the address of an already fixed "
 "expression"
 msgstr ""
 
-#: mcs/mcs/statement.cs:4733
+#: mcs/mcs/statement.cs:4856
 #, csharp-format
 msgid ""
 "A previous catch clause already catches all exceptions of this or a super "
 "type `{0}'"
 msgstr ""
 
-#: mcs/mcs/statement.cs:4937
+#: mcs/mcs/statement.cs:5029
 #, csharp-format
 msgid ""
 "`{0}': type used in a using statement must be implicitly convertible to "
 "`System.IDisposable'"
 msgstr ""
 
-#: mcs/mcs/statement.cs:5322
+#: mcs/mcs/statement.cs:5451
 #, csharp-format
 msgid ""
 "foreach statement requires that the return type `{0}' of `{1}' must have a "
 "suitable public MoveNext method and public Current property"
 msgstr ""
 
-#: mcs/mcs/statement.cs:5360
+#: mcs/mcs/statement.cs:5491
 #, csharp-format
 msgid ""
 "foreach statement cannot operate on variables of type `{0}' because it "
@@ -2799,99 +3673,46 @@ msgid ""
 "implementation"
 msgstr ""
 
-#: mcs/mcs/statement.cs:5379
+#: mcs/mcs/statement.cs:5516
 #, csharp-format
 msgid ""
 "foreach statement cannot operate on variables of type `{0}' because it does "
 "not contain a definition for `{1}' or is inaccessible"
 msgstr ""
 
-#: mcs/mcs/statement.cs:5576
+#: mcs/mcs/statement.cs:5722
 msgid "Use of null is not valid in this context"
 msgstr ""
 
-#: mcs/mcs/statement.cs:5586
+#: mcs/mcs/statement.cs:5732
 #, csharp-format
 msgid "Foreach statement cannot operate on a `{0}'"
 msgstr ""
 
-#: mcs/mcs/typemanager.cs:237
+#: mcs/mcs/typemanager.cs:396
 #, csharp-format
 msgid "The predefined type `{0}.{1}' is not defined or imported"
 msgstr ""
 
-#: mcs/mcs/typemanager.cs:243
+#: mcs/mcs/typemanager.cs:402
 #, csharp-format
 msgid "The predefined type `{0}.{1}' is not declared correctly"
 msgstr ""
 
-#: mcs/mcs/typemanager.cs:262
+#: mcs/mcs/typemanager.cs:581
 #, csharp-format
 msgid ""
 "The compiler required member `{0}.{1}{2}' could not be found or is "
 "inaccessible"
 msgstr ""
 
-#: mcs/mcs/typemanager.cs:721
-#, csharp-format
-msgid ""
-"Friend access was granted to `{0}', but the output assembly is named `{1}'. "
-"Try adding a reference to `{0}' or change the output assembly name to match "
-"it"
-msgstr ""
-
-#: mcs/mcs/typemanager.cs:823
+#: mcs/mcs/typemanager.cs:889
 #, csharp-format
 msgid ""
 "Cannot take the address of, get the size of, or declare a pointer to a "
 "managed type `{0}'"
 msgstr ""
 
-#~ msgid "Expected `{0}'"
-#~ msgstr "`{0}' erwartet"
-
-#~ msgid ""
-#~ "Conditional not valid on `{0}' because it is a constructor, destructor, "
-#~ "operator or explicit interface implementation"
-#~ msgstr ""
-#~ "Das Conditional-Attribut ist für `{0}' ungültig, weil dies ein "
-#~ "Konstruktor, Destruktor, Operator oder eine explizite "
-#~ "Schnittstellenimplementierung ist"
-
-#~ msgid "Conditional not valid on `{0}' because its return type is not void"
-#~ msgstr ""
-#~ "Das Conditional-Attribut ist für `{0}' ungültig, da der Rückgabetyp nicht "
-#~ "leer ist"
-
-#~ msgid "Conditional not valid on `{0}' because it is an override method"
-#~ msgstr ""
-#~ "Das Conditional-Attribut ist für `{0}' ungültig, da es eine "
-#~ "überschriebene Funktion ist"
-
-#~ msgid "Conditional not valid on interface members"
-#~ msgstr "Das Conditional-Attribut ist für Schnittstellenmember ungültig"
-
-#~ msgid ""
-#~ "`{0}': Extension methods must be defined in a non-generic static class"
-#~ msgstr ""
-#~ "`{0}': Erweiterungsmethoden müssen in einer nicht generischen statischen "
-#~ "Klasse definiert werden"
-
-#~ msgid "`{0}': abstract properties cannot have private accessors"
-#~ msgstr ""
-#~ "`{0}': Abstrakte Eigenschaften können keine privaten-Accessoren haben"
-
-#~ msgid ""
-#~ "The return type for ++ or -- operator must be the containing type or "
-#~ "derived from the containing type"
-#~ msgstr ""
-#~ "Der Rückgabetyp für die Operatoren ++ und -- muss der enthaltene Typ sein "
-#~ "oder vom enthaltenen Typ abgeleitet sein"
-
-#~ msgid "The parameter type for ++ or -- operator must be the containing type"
-#~ msgstr ""
-#~ "Der Parameter für den ++ oder -- Operator muss der enthaltene Typ sein"
-
 #~ msgid "Compilation aborted in file `{0}', {1}"
 #~ msgstr "Kompilierung abgebrochen in Datei `{0}', {1}"
 
@@ -2902,26 +3723,20 @@ msgstr ""
 #~ msgstr ""
 #~ "Fehler beim ausführen von pkg-config. Bitte prüfen Sie die Ausgabe oben."
 
-#~ msgid "The new() constraint must be the last constraint specified"
-#~ msgstr ""
-#~ "Die `new()'-Einschränkung muss als letzte Einschränkung definiert werden"
+#~ msgid "-recurse requires an argument"
+#~ msgstr "-recurse benötigt ein Argument"
 
-#~ msgid "The `new()' constraint cannot be used with the `struct' constraint"
-#~ msgstr ""
-#~ "Die `new()'-Einschränkung kann nicht mit der `struct'-Einschränkung "
-#~ "genutzt werden"
+#~ msgid "-reference requires an argument"
+#~ msgstr "-reference benötigt ein Argument"
 
-#~ msgid ""
-#~ "The `class' or `struct' constraint must be the first constraint specified"
-#~ msgstr ""
-#~ "Die `class'- oder `struct'-Einschränkung muss als erste Einschränkung "
-#~ "definiert werden"
+#~ msgid " requires an argument"
+#~ msgstr "benötigt ein Argument"
 
-#~ msgid "Cannot find type `{0}'<...>"
-#~ msgstr "Kann Typ `{0}'<...> nicht finden"
+#~ msgid "/lib requires an argument"
+#~ msgstr "/lib benötigt ein Argument"
 
-#~ msgid "Invalid parameter type `void'"
-#~ msgstr "Ungültiger Parametertyp `void'"
+#~ msgid "/nowarn requires an argument"
+#~ msgstr "/nowarn benötigt ein Argument"
 
 #~ msgid ""
 #~ "Feature `{0}' is not available in Mono mcs1 compiler. Consider using the "
diff --git a/po/mcs/es.gmo b/po/mcs/es.gmo
index 93ea06e..77abf9a 100644
Binary files a/po/mcs/es.gmo and b/po/mcs/es.gmo differ
diff --git a/po/mcs/es.po b/po/mcs/es.po
index 6b2998d..8159da1 100644
--- a/po/mcs/es.po
+++ b/po/mcs/es.po
@@ -6,68 +6,69 @@ msgid ""
 msgstr ""
 "Project-Id-Version: mono 2.1\n"
 "Report-Msgid-Bugs-To: http://www.mono-project.com/Bugs\n"
-"POT-Creation-Date: 2010-11-12 03:29-0700\n"
+"POT-Creation-Date: 2011-01-18 10:45-0700\n"
 "PO-Revision-Date: 2008-09-19 13:28-0400\n"
 "Last-Translator: Miguel de Icaza <miguel at novell.com>\n"
 "Language-Team: es <mono-list at lists.ximian.com>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Language: \n"
 
-#: mcs/mcs/anonymous.cs:857
+#: mcs/mcs/anonymous.cs:880
 #, csharp-format
 msgid "Cannot convert `{0}' to an expression tree of non-delegate type `{1}'"
 msgstr ""
 "No es posible convertir `{0}' a un árbol de expresiónáéíóú de tipo `{1}; ya "
 "que no es un tipo de delegado"
 
-#: mcs/mcs/anonymous.cs:862
+#: mcs/mcs/anonymous.cs:885
 #, csharp-format
 msgid "Cannot convert `{0}' to non-delegate type `{1}'"
 msgstr "No es posible convertir `{0}' a un un tipo que no es un delegado `{1}'"
 
-#: mcs/mcs/anonymous.cs:874
+#: mcs/mcs/anonymous.cs:897
 #, csharp-format
 msgid ""
 "Cannot convert `{0}' to delegate type `{1}' since there is a parameter "
 "mismatch"
 msgstr ""
 
-#: mcs/mcs/anonymous.cs:886 mcs/mcs/ecore.cs:4172
+#: mcs/mcs/anonymous.cs:909 mcs/mcs/ecore.cs:4524
 #, csharp-format
 msgid "Delegate `{0}' does not take `{1}' arguments"
 msgstr "El delegado `{0} no toma {1} argumentos"
 
-#: mcs/mcs/anonymous.cs:901
+#: mcs/mcs/anonymous.cs:924
 #, csharp-format
 msgid "Parameter `{0}' should not be declared with the `{1}' keyword"
 msgstr ""
 "El parámetro `{0}' no debe ser ser declarado con la palabra reservada `{1}'"
 
-#: mcs/mcs/anonymous.cs:904
+#: mcs/mcs/anonymous.cs:927
 #, csharp-format
 msgid "Parameter `{0}' must be declared with the `{1}' keyword"
 msgstr ""
 "El parámetro `{0}' debe de ser declarado con la palabra reservada `{1}'"
 
-#: mcs/mcs/anonymous.cs:925
+#: mcs/mcs/anonymous.cs:948
 #, csharp-format
 msgid "Parameter `{0}' is declared as type `{1}' but should be `{2}'"
 msgstr "El parámetro `{0}' está declarado con `{1}' pero debería de ser `{2}'"
 
-#: mcs/mcs/anonymous.cs:1080
+#: mcs/mcs/anonymous.cs:1103
 msgid "An anonymous method cannot be converted to an expression tree"
 msgstr ""
 "Los métodos anónimos no pueden ser convertidos a árboles de expresiones"
 
-#: mcs/mcs/anonymous.cs:1099
+#: mcs/mcs/anonymous.cs:1122
 #, csharp-format
 msgid ""
 "Cannot convert anonymous method block without a parameter list to delegate "
 "type `{0}' because it has one or more `out' parameters"
 msgstr ""
 
-#: mcs/mcs/anonymous.cs:1123
+#: mcs/mcs/anonymous.cs:1146
 msgid ""
 "Anonymous methods and lambda expressions cannot be used in the current "
 "context"
@@ -75,7 +76,7 @@ msgstr ""
 "Los métodos anónimos y las expresiones lambdas no pueden ser usados en este "
 "contexto"
 
-#: mcs/mcs/anonymous.cs:1165
+#: mcs/mcs/anonymous.cs:1188
 #, csharp-format
 msgid ""
 "Local variable or parameter `{0}' cannot have their address taken and be "
@@ -84,30 +85,56 @@ msgstr ""
 "No se le puede tomar la dirección a la variable local o el parámetro `{0}' y "
 "ser al mismo tiempo usada dentro de un método anónimo o una expresión lambda."
 
-#: mcs/mcs/anonymous.cs:1430
+#: mcs/mcs/anonymous.cs:1438
 msgid "An expression tree cannot contain an anonymous method expression"
 msgstr ""
 "Un árbol de expresiones no puede contener una expresión que sea una método "
 "anónimo"
 
-#: mcs/mcs/anonymous.cs:1657
+#: mcs/mcs/argument.cs:101
+#, fuzzy
+msgid ""
+"An expression tree cannot contain an invocation which uses optional parameter"
+msgstr "Un árbol de expresiones no puede contener un operador de asignación"
+
+#: mcs/mcs/argument.cs:184
+#, fuzzy
+msgid "An expression tree cannot contain named argument"
+msgstr "Un árbol de expresiones no puede contener un operador de asignación"
+
+#: mcs/mcs/argument.cs:303
 #, csharp-format
 msgid ""
-"`{0}': An anonymous type cannot have multiple properties with the same name"
+"The method group `{0}' cannot be used as an argument of dynamic operation. "
+"Consider using parentheses to invoke the method"
 msgstr ""
-"`{0}' An tipo anónimo no puede tener multiples propiedades con el mismo "
-"nombre"
 
-#: mcs/mcs/assign.cs:295
+#: mcs/mcs/argument.cs:307
+#, fuzzy
+msgid ""
+"An anonymous method or lambda expression cannot be used as an argument of "
+"dynamic operation. Consider using a cast"
+msgstr ""
+"Los métodos anónimos y las expresiones lambdas no pueden ser usados en este "
+"contexto"
+
+#: mcs/mcs/argument.cs:310
+#, fuzzy, csharp-format
+msgid ""
+"An expression of type `{0}' cannot be used as an argument of dynamic "
+"operation"
+msgstr "Un árbol de expresiones no puede contener un operador de asignación"
+
+#: mcs/mcs/assign.cs:299
 msgid "An expression tree cannot contain an assignment operator"
 msgstr "Un árbol de expresiones no puede contener un operador de asignación"
 
-#: mcs/mcs/assign.cs:571
+#: mcs/mcs/assign.cs:627
 #, csharp-format
 msgid "Cannot assign to `{0}' because it is a `{1}'"
 msgstr ""
 
-#: mcs/mcs/attribute.cs:168
+#: mcs/mcs/attribute.cs:196
 #, csharp-format
 msgid ""
 "`{0}' is not a valid named attribute argument. Named attribute arguments "
@@ -115,49 +142,49 @@ msgid ""
 "properties which are public and not static"
 msgstr ""
 
-#: mcs/mcs/attribute.cs:177
+#: mcs/mcs/attribute.cs:205
 #, csharp-format
 msgid ""
 "`{0}' is not a valid named attribute argument because it is not a valid "
 "attribute parameter type"
 msgstr ""
 
-#: mcs/mcs/attribute.cs:183
+#: mcs/mcs/attribute.cs:211
 #, fuzzy
 msgid "An attribute argument cannot be dynamic expression"
 msgstr ""
 "Los métodos anónimos no pueden ser convertidos a árboles de expresiones"
 
-#: mcs/mcs/attribute.cs:188
+#: mcs/mcs/attribute.cs:216
 msgid "The Guid attribute must be specified with the ComImport attribute"
 msgstr ""
 "El atributo Guid debe de ser especificado junto con el atributo ComImport"
 
-#: mcs/mcs/attribute.cs:193
+#: mcs/mcs/attribute.cs:221
 #, csharp-format
 msgid "Do not use `{0}' directly. Use parameter modifier `this' instead"
 msgstr ""
 "No use `{0}' directamente.   Use el modificador de parámetro `this' en su "
 "lugar"
 
-#: mcs/mcs/attribute.cs:198
+#: mcs/mcs/attribute.cs:226
 #, fuzzy, csharp-format
 msgid "Do not use `{0}' directly. Use `dynamic' keyword instead"
 msgstr ""
 "No use `{0}' directamente.   Use el modificador de parámetro `this' en su "
 "lugar"
 
-#: mcs/mcs/attribute.cs:207
+#: mcs/mcs/attribute.cs:235
 #, csharp-format
 msgid "Error during emitting `{0}' attribute. The reason is `{1}'"
 msgstr "Error al emitir el atributo `{0}'.   La razón es `{1}'"
 
-#: mcs/mcs/attribute.cs:238
+#: mcs/mcs/attribute.cs:266
 #, csharp-format
 msgid "`{0}': is not an attribute class"
 msgstr "`{0}' no es una clase atributo"
 
-#: mcs/mcs/attribute.cs:274
+#: mcs/mcs/attribute.cs:302
 #, fuzzy, csharp-format
 msgid ""
 "`{0}' is ambiguous between `{1}' and `{2}'. Use either `@{0}' or `{0}"
@@ -166,58 +193,547 @@ msgstr ""
 "`{0}' produce una amiguedad entre `{0}' y `{0}Attribute'.   Use `@{0}' o `{0}"
 "Attribute'"
 
-#: mcs/mcs/attribute.cs:380
+#: mcs/mcs/attribute.cs:385
 #, csharp-format
 msgid "Cannot apply attribute class `{0}' because it is abstract"
 msgstr "No es posible aplicar el atributo `{0}' ya que es abstracto"
 
-#: mcs/mcs/attribute.cs:438
+#: mcs/mcs/attribute.cs:453
 #, csharp-format
 msgid "Duplicate named attribute `{0}' argument"
 msgstr ""
 
-#: mcs/mcs/attribute.cs:714
+#: mcs/mcs/attribute.cs:730
 #, csharp-format
 msgid ""
 "`{0}' is not a valid attribute location for this declaration. Valid "
 "attribute locations for this declaration are `{1}'"
 msgstr ""
 
-#: mcs/mcs/attribute.cs:1055
+#: mcs/mcs/attribute.cs:1004
 #, csharp-format
 msgid ""
 "The attribute `{0}' is not valid on this declaration type. It is valid on `"
 "{1}' declarations only"
 msgstr ""
 
-#: mcs/mcs/attribute.cs:1073
+#: mcs/mcs/attribute.cs:1022
 #, csharp-format
 msgid "The argument to the `{0}' attribute must be a valid identifier"
 msgstr ""
 "El argumento pasado al atributo `{0}' debe de ser un identificador válido"
 
-#: mcs/mcs/attribute.cs:1086
+#: mcs/mcs/attribute.cs:1035
 #, fuzzy, csharp-format
 msgid "Invalid value for argument to `{0}' attribute"
 msgstr "Valor inválido pasado a `System.AttributeUsage'"
 
-#: mcs/mcs/attribute.cs:1386
+#: mcs/mcs/attribute.cs:1341
 #, csharp-format
 msgid "The attribute `{0}' cannot be applied multiple times"
 msgstr ""
 
-#: mcs/mcs/attribute.cs:1571
+#: mcs/mcs/attribute.cs:1603
+#, csharp-format
+msgid "`{0}' is obsolete: `{1}'"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:474
+msgid "A namespace declaration cannot have modifiers or attributes"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:570
 msgid ""
-"Added modules must be marked with the CLSCompliant attribute to match the "
-"assembly"
+"Namespace elements cannot be explicitly declared as private, protected or "
+"protected internal"
 msgstr ""
 
-#: mcs/mcs/attribute.cs:1597
+#: mcs/mcs/cs-parser.jay:613
+msgid ""
+"Assembly and module attributes must precede all other elements except using "
+"clauses and extern alias declarations"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:752
+msgid "'<' unexpected: attributes cannot be generic"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:800
+msgid "Named attribute arguments must appear after the positional arguments"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:892
 #, csharp-format
-msgid "`{0}' is obsolete: `{1}'"
+msgid ""
+"Unexpected symbol `{0}' in class, struct, or interface member declaration"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:992
+#, fuzzy, csharp-format
+msgid "The constant `{0}' cannot be marked static"
+msgstr "El método abstracto `{0} no puede ser marcado como virtual"
+
+#: mcs/mcs/cs-parser.jay:1047 mcs/mcs/cs-parser.jay:4792
+msgid "A const field requires a value to be provided"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1066
+msgid "Fields cannot have void type"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1116
+msgid ""
+"A fixed size buffer field must have the array size specifier after the field "
+"name"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1211
+msgid "Value or constant expected"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1239 mcs/mcs/cs-parser.jay:1800
+#: mcs/mcs/cs-parser.jay:1848 mcs/mcs/cs-parser.jay:2433
+#: mcs/mcs/cs-parser.jay:2461
+#, fuzzy, csharp-format
+msgid "`{0}': interface members cannot have a definition"
+msgstr "`{0}': los miembros virtuales o abstractos no pueden ser privados"
+
+#: mcs/mcs/cs-parser.jay:1276 mcs/mcs/cs-parser.jay:1316 mcs/mcs/decl.cs:1404
+msgid "Constraints are not allowed on non-generic declarations"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1284
+#, csharp-format
+msgid ""
+"`{0}': Cannot specify constraints for overrides and explicit interface "
+"implementation methods"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1335
+msgid ""
+"A partial method cannot define access modifier or any of abstract, extern, "
+"new, override, sealed, or virtual modifiers"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1341
+msgid ""
+"A partial method must be declared within a partial class or partial struct"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1365
+#, csharp-format
+msgid "Member modifier `{0}' must precede the member type and name"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1411 mcs/mcs/cs-parser.jay:1418
+msgid ""
+"A params parameter must be the last parameter in a formal parameter list"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1427 mcs/mcs/cs-parser.jay:1433
+msgid ""
+"An __arglist parameter must be the last parameter in a formal parameter list"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1471
+msgid "The parameter modifier `this' can only be used on the first parameter"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1473
+msgid "Optional parameter cannot precede required parameters"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1500
+msgid "Array type specifier, [], must appear before parameter name"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1532 mcs/mcs/cs-parser.jay:1537
+#, fuzzy, csharp-format
+msgid "Cannot specify a default value for the `{0}' parameter"
+msgstr ""
+"No puede especificar el atributo `DefaultMember' en un tipo que contiene un "
+"indexador"
+
+#: mcs/mcs/cs-parser.jay:1548
+msgid "Optional parameter is not valid in this context"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1578
+msgid "The parameter modifiers `this' and `ref' cannot be used altogether"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1581
+msgid "The parameter modifiers `this' and `out' cannot be used altogether"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1584
+msgid "A parameter cannot have specified more than one modifier"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1627
+#, fuzzy
+msgid "Cannot specify a default value for a parameter array"
+msgstr ""
+"No puede especificar el atributo `DefaultMember' en un tipo que contiene un "
+"indexador"
+
+#: mcs/mcs/cs-parser.jay:1643
+#, fuzzy
+msgid "The `params' modifier is not allowed in current context"
+msgstr ""
+"La palabra reservada `new' no está permitida en los elementos de un espacio "
+"de nombres"
+
+#: mcs/mcs/cs-parser.jay:1649
+msgid "The parameter modifiers `this' and `params' cannot be used altogether"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1651
+#, fuzzy
+msgid "The params parameter cannot be declared as ref or out"
+msgstr "El método abstracto `{0} no puede ser marcado como virtual"
+
+#: mcs/mcs/cs-parser.jay:1664
+msgid "__arglist is not valid in this context"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1683
+#, fuzzy, csharp-format
+msgid "`{0}': property or indexer cannot have void type"
+msgstr "`{0}': los miembros virtuales o abstractos no pueden ser privados"
+
+#: mcs/mcs/cs-parser.jay:1724
+#, csharp-format
+msgid "`{0}': indexer return type cannot be `void'"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1727
+msgid "Indexers must have at least one parameter"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1760
+#, fuzzy, csharp-format
+msgid "`{0}': property or indexer must have at least one accessor"
+msgstr "`{0}': los miembros virtuales o abstractos no pueden ser privados"
+
+#: mcs/mcs/cs-parser.jay:1763
+msgid "Semicolon after method or accessor block is not valid"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1765
+msgid "A get or set accessor expected"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1778 mcs/mcs/cs-parser.jay:1821
+msgid "Property accessor already defined"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1931 mcs/mcs/cs-parser.jay:1935
+msgid "Interfaces cannot contain fields or constants"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1943
+#, fuzzy
+msgid "Interfaces cannot contain operators"
+msgstr ""
+"`{0}': las clases estáticas no pueden contener operadores definidos por el "
+"usuario"
+
+#: mcs/mcs/cs-parser.jay:1947
+#, fuzzy
+msgid "Interfaces cannot contain contructors"
+msgstr "`{0}': las clases estáticas no pueden contener un destructor"
+
+#: mcs/mcs/cs-parser.jay:1951
+msgid ""
+"Interfaces cannot declare classes, structs, interfaces, delegates, or "
+"enumerations"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1992
+msgid "User-defined operators cannot return void"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2020
+msgid "Overloadable binary operator expected"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2022
+#, csharp-format
+msgid "Overloaded unary operator `{0}' takes one parameter"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2027
+#, csharp-format
+msgid "Overloaded binary operator `{0}' takes two parameters"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2030
+msgid "Overloadable unary operator expected"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2177
+msgid "Class, struct, or interface method must have a return type"
+msgstr "El método debe tener un tipo de retorno"
+
+#: mcs/mcs/cs-parser.jay:2181
+#, fuzzy, csharp-format
+msgid "`{0}': static constructor cannot have an access modifier"
+msgstr "`{0}': los miembros virtuales o abstractos no pueden ser privados"
+
+#: mcs/mcs/cs-parser.jay:2186
+#, fuzzy, csharp-format
+msgid ""
+"`{0}': static constructor cannot have an explicit `this' or `base' "
+"constructor call"
+msgstr ""
+"`{0}': las clases estáticas no pueden tener constructores de instancias"
+
+#: mcs/mcs/cs-parser.jay:2249
+msgid "Name of destructor must match name of class"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2251
+#, fuzzy
+msgid "Only class types can contain destructor"
+msgstr "`{0}': las clases estáticas no pueden contener un destructor"
+
+#: mcs/mcs/cs-parser.jay:2276
+#, fuzzy, csharp-format
+msgid ""
+"`{0}': An explicit interface implementation of an event must use property "
+"syntax"
+msgstr ""
+"`{0}': las declaraciones explícitas de interfaces solamente pueden ser "
+"declaradas en una clase o estructura"
+
+#: mcs/mcs/cs-parser.jay:2308
+msgid "Event in interface cannot have add or remove accessors"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2377
+#, fuzzy, csharp-format
+msgid "`{0}': event in interface cannot have an initializer"
+msgstr ""
+"`{0}': las estructuras no pueden tener inicializadores de campos en "
+"instancias"
+
+#: mcs/mcs/cs-parser.jay:2382
+#, fuzzy, csharp-format
+msgid "`{0}': abstract event cannot have an initializer"
+msgstr ""
+"`{0}': las estructuras no pueden tener inicializadores de campos en "
+"instancias"
+
+#: mcs/mcs/cs-parser.jay:2397 mcs/mcs/cs-parser.jay:2402
+#, fuzzy, csharp-format
+msgid "`{0}': event property must have both add and remove accessors"
+msgstr "`{0}': los miembros virtuales o abstractos no pueden ser privados"
+
+#: mcs/mcs/cs-parser.jay:2407
+msgid "An add or remove accessor expected"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2416 mcs/mcs/cs-parser.jay:2444
+msgid "Modifiers cannot be placed on event accessor declarations"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2471
+msgid "An add or remove accessor must have a body"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2493
+#, fuzzy
+msgid "Enums cannot have type parameters"
+msgstr "`{0}': no es posible derivar de una clase estática (`{1}')"
+
+#: mcs/mcs/cs-parser.jay:2824
+msgid "Type parameter declaration must be an identifier not a type"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2875
+msgid "Invalid parameter type `void'"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2940
+#, csharp-format
+msgid "Invalid base type `{0}'"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:3189
+msgid "An element initializer cannot be empty"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:3227
+#, csharp-format
+msgid "Named argument `{0}' specified multiple times"
 msgstr ""
 
-#: mcs/mcs/cs-tokenizer.cs:772
+#: mcs/mcs/cs-parser.jay:3236 mcs/mcs/cs-parser.jay:3241
+msgid "An argument is missing"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:3410
+msgid "Array creation must have array size or array initializer"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:3423
+msgid "Invalid rank specifier, expecting `,' or `]'"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:3503
+msgid ""
+"Invalid anonymous type member declarator. Anonymous type members must be a "
+"member assignment, simple name or member access expression"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:4027
+msgid "All lambda parameters must be typed either explicitly or implicitly"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:4213
+#, csharp-format
+msgid "Duplicate `{0}' modifier"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:4217
+msgid "More than one protection modifier specified"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:4231
+#, fuzzy
+msgid "Keyword `new' is not allowed on namespace elements"
+msgstr ""
+"La palabra reservada `new' no está permitida en los elementos de un espacio "
+"de nombres"
+
+#: mcs/mcs/cs-parser.jay:4343
+#, csharp-format
+msgid "A constraint clause has already been specified for type parameter `{0}'"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:4373
+msgid "The `new()' constraint must be the last constraint specified"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:4379
+msgid ""
+"The `class' or `struct' constraint must be the first constraint specified"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:4383
+msgid "The `new()' constraint cannot be used with the `struct' constraint"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:4397
+#, csharp-format
+msgid "Invalid constraint type `{0}'"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:4579 mcs/mcs/cs-parser.jay:4584
+msgid "An embedded statement may not be a declaration or labeled statement"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:4751
+msgid ""
+"Syntax error, bad array declarator. To declare a managed array the rank "
+"specifier precedes the variable's identifier. To declare a fixed size buffer "
+"field, use the fixed keyword before the field type"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:4831
+msgid "A stackalloc expression requires [] after type"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:5113
+msgid "Type and identifier are both required in a foreach statement"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:5205 mcs/mcs/cs-parser.jay:5221
+msgid "; expected"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:5207
+msgid "Expression expected after yield return"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:5254
+msgid "Expected catch or finally"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:5273
+msgid "Try statement already has an empty catch block"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:5318
+msgid ""
+"A type that derives from `System.Exception', `object', or `string' expected"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:5426
+msgid ""
+"You must provide an initializer in a fixed or using statement declaration"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:6014
+msgid "Expecting `;'"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:6022
+#, fuzzy, csharp-format
+msgid "The parameter modifier `{0}' is not valid in this context"
+msgstr "El tipo predefinido `{0}.{1}' no está definido o no ha sido importado"
+
+#: mcs/mcs/cs-parser.jay:6028
+#, csharp-format
+msgid "Duplicate parameter modifier `{0}'"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:6034
+msgid "Type expected"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:6039
+msgid "Unsafe code requires the `unsafe' command line option to be specified"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:6049
+msgid "Named arguments must appear after the positional arguments"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:6140
+msgid "Syntax error, "
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:6194
+msgid "Parsing error"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:6200
+msgid "Internal compiler error during parsing"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:6211
+#, csharp-format
+msgid "{0}: `{1}' is a keyword"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:6338
+#, fuzzy, csharp-format
+msgid "Identifier expected, `{0}' is a keyword"
+msgstr "Esperaba un identificador: {0}."
+
+#: mcs/mcs/cs-parser.jay:6352
+#, csharp-format
+msgid "{1} `{0}'"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:6354
+#, csharp-format
+msgid "{2} `{0}', expecting {1}"
+msgstr ""
+
+#: mcs/mcs/cs-tokenizer.cs:760
 msgid ""
 "The `partial' modifier can be used only immediately before `class', "
 "`struct', `interface', or `void' keyword"
@@ -225,51 +741,51 @@ msgstr ""
 "El modificador `partial' solamente puede ser utilizado antes de `class', "
 "`struct', `interface' o la palabra clave `void'"
 
-#: mcs/mcs/cs-tokenizer.cs:1394 mcs/mcs/cs-tokenizer.cs:1461
+#: mcs/mcs/cs-tokenizer.cs:1395 mcs/mcs/cs-tokenizer.cs:1462
 msgid "Invalid number"
 msgstr "Número inválido"
 
-#: mcs/mcs/cs-tokenizer.cs:1646
+#: mcs/mcs/cs-tokenizer.cs:1647
 #, csharp-format
 msgid "Unrecognized escape sequence `\\{0}'"
 msgstr "Secuencia de escape no reconocida: `\\\\{0}'"
 
-#: mcs/mcs/cs-tokenizer.cs:1665
+#: mcs/mcs/cs-tokenizer.cs:1666
 msgid "Unrecognized escape sequence"
 msgstr "Secuencia de escape no reconocida"
 
-#: mcs/mcs/cs-tokenizer.cs:1886
+#: mcs/mcs/cs-tokenizer.cs:1887
 #, fuzzy
 msgid "Missing identifier to pre-processor directive"
 msgstr "La directiva del pre-procesador requiere un identificador"
 
-#: mcs/mcs/cs-tokenizer.cs:1896 mcs/mcs/cs-tokenizer.cs:1900
+#: mcs/mcs/cs-tokenizer.cs:1897 mcs/mcs/cs-tokenizer.cs:1901
 #, csharp-format
 msgid "Identifier expected: {0}"
 msgstr "Esperaba un identificador: {0}."
 
-#: mcs/mcs/cs-tokenizer.cs:2372
+#: mcs/mcs/cs-tokenizer.cs:2373
 #, fuzzy
 msgid "Integral constant is too large"
 msgstr "La constante numérica es demasiado grande"
 
-#: mcs/mcs/cs-tokenizer.cs:2377
+#: mcs/mcs/cs-tokenizer.cs:2378
 msgid "Invalid preprocessor directive"
 msgstr "Directiva inválida para el pre-procesador."
 
-#: mcs/mcs/cs-tokenizer.cs:2384
+#: mcs/mcs/cs-tokenizer.cs:2385
 #, csharp-format
 msgid "Unexpected processor directive ({0})"
 msgstr "Directiva inválida para el pre-procesador ({0})."
 
-#: mcs/mcs/cs-tokenizer.cs:2390
+#: mcs/mcs/cs-tokenizer.cs:2391
 msgid ""
 "Cannot define or undefine preprocessor symbols after first token in file"
 msgstr ""
 "No es posible definir nuevos símbolos para el preprocesador o elimiar las "
 "definiciones existentes después del primer tóken del archivo"
 
-#: mcs/mcs/cs-tokenizer.cs:2396
+#: mcs/mcs/cs-tokenizer.cs:2397
 msgid ""
 "Preprocessor directives must appear as the first non-whitespace character on "
 "a line"
@@ -277,57 +793,66 @@ msgstr ""
 "Las directivas del pre-procesador deben aparecer como el primer carácter en "
 "la línea (que no sea un espacio en blanco)"
 
-#: mcs/mcs/cs-tokenizer.cs:2401
+#: mcs/mcs/cs-tokenizer.cs:2402
 msgid "Single-line comment or end-of-line expected"
 msgstr "Esperaba un comentario de una sola línea o el final de archivo"
 
-#: mcs/mcs/cs-tokenizer.cs:2434 mcs/mcs/cs-tokenizer.cs:3431
+#: mcs/mcs/cs-tokenizer.cs:2435 mcs/mcs/cs-tokenizer.cs:3431
 msgid "Expected `#endif' directive"
 msgstr "Esperaba la directiva `#endif'"
 
-#: mcs/mcs/cs-tokenizer.cs:2467 mcs/mcs/cs-tokenizer.cs:2488
-#: mcs/mcs/cs-tokenizer.cs:2519 mcs/mcs/cs-tokenizer.cs:3429
+#: mcs/mcs/cs-tokenizer.cs:2468 mcs/mcs/cs-tokenizer.cs:2489
+#: mcs/mcs/cs-tokenizer.cs:2520 mcs/mcs/cs-tokenizer.cs:3429
 msgid "#endregion directive expected"
 msgstr "Esperaba la directiva `#endregion'"
 
-#: mcs/mcs/cs-tokenizer.cs:2566
+#: mcs/mcs/cs-tokenizer.cs:2567
 msgid "Wrong preprocessor directive"
 msgstr "La directiva del pre-procesador es errónea"
 
-#: mcs/mcs/cs-tokenizer.cs:2578
+#: mcs/mcs/cs-tokenizer.cs:2579
 #, csharp-format
 msgid "#error: '{0}'"
 msgstr "#error: '{0}'"
 
-#: mcs/mcs/cs-tokenizer.cs:2597
+#: mcs/mcs/cs-tokenizer.cs:2598
 msgid "The line number specified for #line directive is missing or invalid"
 msgstr ""
 "Falta el número de linea especificado en la directiva #line o el número es "
 "inválido"
 
-#: mcs/mcs/cs-tokenizer.cs:2624 mcs/mcs/cs-tokenizer.cs:3242
+#: mcs/mcs/cs-tokenizer.cs:2625 mcs/mcs/cs-tokenizer.cs:3243
 msgid "Newline in constant"
 msgstr "Hay un carácter nueva-linea en la constante"
 
-#: mcs/mcs/cs-tokenizer.cs:2635
+#: mcs/mcs/cs-tokenizer.cs:2636
 msgid "Unterminated string literal"
 msgstr "La literal de texto no tiene fin"
 
-#: mcs/mcs/cs-tokenizer.cs:2704
+#: mcs/mcs/cs-tokenizer.cs:2705
 msgid "Identifier too long (limit is 512 chars)"
 msgstr "El identificador es demasiado grande (el límite son 512 caracteres)"
 
-#: mcs/mcs/cs-tokenizer.cs:3091
+#: mcs/mcs/cs-tokenizer.cs:3092
 msgid "End-of-file found, '*/' expected"
 msgstr "El archivo se terminó, y esperaba encontrar un `*/'"
 
-#: mcs/mcs/cs-tokenizer.cs:3200
+#: mcs/mcs/cs-tokenizer.cs:3201
 msgid "Keyword, identifier, or string expected after verbatim specifier: @"
 msgstr ""
 "Esperaba una palabra clave, un identificador o una cadena después del "
 "especificador '@' (al pie de la letra)"
 
-#: mcs/mcs/cs-tokenizer.cs:3257
+#: mcs/mcs/cs-tokenizer.cs:3217
+#, fuzzy, csharp-format
+msgid "Unexpected character `{0}'"
+msgstr "Esperaba `{0}'"
+
+#: mcs/mcs/cs-tokenizer.cs:3238
+msgid "Empty character literal"
+msgstr ""
+
+#: mcs/mcs/cs-tokenizer.cs:3258
 msgid "Too many characters in character literal"
 msgstr ""
 
@@ -337,11 +862,11 @@ msgstr ""
 "La operación produjo un sobreflujo durante la compilación en el modo "
 "verificado (-checked)"
 
-#: mcs/mcs/cfold.cs:715 mcs/mcs/cfold.cs:795
+#: mcs/mcs/cfold.cs:764 mcs/mcs/cfold.cs:849
 msgid "Division by constant zero"
 msgstr "División por cero (con una constante)"
 
-#: mcs/mcs/class.cs:349
+#: mcs/mcs/class.cs:371
 #, csharp-format
 msgid ""
 "Partial declarations of `{0}' must be all classes, all structs or all "
@@ -350,14 +875,14 @@ msgstr ""
 "Las declaraciones parciales de `{0}' deben o todas ser classes, o todas "
 "estructuras o todas interfaces"
 
-#: mcs/mcs/class.cs:358
+#: mcs/mcs/class.cs:380
 #, csharp-format
 msgid "Partial declarations of `{0}' have conflicting accessibility modifiers"
 msgstr ""
 "Las varias declaraciones parciales de `{0} tienen modificadores de "
 "accesibilidad en conflicto"
 
-#: mcs/mcs/class.cs:410
+#: mcs/mcs/class.cs:433
 #, csharp-format
 msgid ""
 "`{0}': explicit interface declaration can only be declared in a class or "
@@ -366,7 +891,7 @@ msgstr ""
 "`{0}': las declaraciones explícitas de interfaces solamente pueden ser "
 "declaradas en una clase o estructura"
 
-#: mcs/mcs/class.cs:448
+#: mcs/mcs/class.cs:470 mcs/mcs/membercache.cs:1327
 #, csharp-format
 msgid ""
 "A member `{0}' is already defined. Rename this member or use different "
@@ -375,28 +900,28 @@ msgstr ""
 "El miembro `{0} ya ha sido definido.   Renombre este miembro o use tipos de "
 "parámetro distintos"
 
-#: mcs/mcs/class.cs:556
+#: mcs/mcs/class.cs:578
 msgid ""
 "Cannot specify the `DefaultMember' attribute on type containing an indexer"
 msgstr ""
 "No puede especificar el atributo `DefaultMember' en un tipo que contiene un "
 "indexador"
 
-#: mcs/mcs/class.cs:562
+#: mcs/mcs/class.cs:584
 msgid "The RequiredAttribute attribute is not permitted on C# types"
 msgstr ""
 
-#: mcs/mcs/class.cs:839
+#: mcs/mcs/class.cs:855
 #, fuzzy, csharp-format
 msgid "Class `{0}' cannot derive from the dynamic type"
-msgstr "`{0}': no es posible derivar de una clase estática (`{1}')"
+msgstr "`{0}' no es posible derivad de la clase especial `{1}'"
 
-#: mcs/mcs/class.cs:854
+#: mcs/mcs/class.cs:872
 #, csharp-format
 msgid "`{0}' is already listed in interface list"
 msgstr "`{0}' ya está listado en la lista de interfaces"
 
-#: mcs/mcs/class.cs:862
+#: mcs/mcs/class.cs:880
 #, csharp-format
 msgid ""
 "Inconsistent accessibility: base interface `{0}' is less accessible than "
@@ -405,30 +930,30 @@ msgstr ""
 "Accesibilidad inconsistente: la interface base `{0}' es menos accessible que "
 "la interface `{1}'"
 
-#: mcs/mcs/class.cs:868
+#: mcs/mcs/class.cs:886
 #, csharp-format
 msgid "Type `{0}' in interface list is not an interface"
 msgstr "El tipo `{0} en la lista de interfaces no es una interface"
 
-#: mcs/mcs/class.cs:870
+#: mcs/mcs/class.cs:888
 #, csharp-format
 msgid "`{0}': Classes cannot have multiple base classes (`{1}' and `{2}')"
 msgstr ""
 "`{0}': las clases no pueden tener múltiples clases base (`{1}' y `{2}')"
 
-#: mcs/mcs/class.cs:873
+#: mcs/mcs/class.cs:891
 #, csharp-format
 msgid "`{0}': Base class `{1}' must be specified as first"
 msgstr "`{0}': la clase base `{1}' tiene que ser especificada primero"
 
-#: mcs/mcs/class.cs:897
+#: mcs/mcs/class.cs:915
 #, csharp-format
 msgid "Partial declarations of `{0}' must not specify different base classes"
 msgstr ""
 "Las declaraciones parciales de `{0}' no deben de especificar clases bases "
 "distintas"
 
-#: mcs/mcs/class.cs:978
+#: mcs/mcs/class.cs:996
 #, csharp-format
 msgid ""
 "The operator `{0}' requires a matching operator `{1}' to also be defined"
@@ -436,12 +961,12 @@ msgstr ""
 "El operador `{0}' require que el operador correspondiente `{1}' también sea "
 "definido"
 
-#: mcs/mcs/class.cs:1002
+#: mcs/mcs/class.cs:1021
 #, csharp-format
 msgid "`{0}' clashes with a predefined namespace"
 msgstr ""
 
-#: mcs/mcs/class.cs:1135
+#: mcs/mcs/class.cs:1150
 #, csharp-format
 msgid ""
 "Inherited interface `{0}' causes a cycle in the interface hierarchy of `{1}'"
@@ -449,12 +974,12 @@ msgstr ""
 "La interface heredada `{0}' produce un ciclo en la jerarquía de la interface "
 "`{1}'"
 
-#: mcs/mcs/class.cs:1139
+#: mcs/mcs/class.cs:1156
 #, csharp-format
 msgid "Circular base class dependency involving `{0}' and `{1}'"
 msgstr "Dependencia circular en la clase base involucrando `{0}' y `{1}'"
 
-#: mcs/mcs/class.cs:1166
+#: mcs/mcs/class.cs:1183
 #, csharp-format
 msgid ""
 "`{0}' cannot implement both `{1}' and `{2}' because they may unify for some "
@@ -463,7 +988,7 @@ msgstr ""
 "`{0}' no es posible implementar tanto `{1}' como `{2}' por que se pueden "
 "unificar en algunos casos"
 
-#: mcs/mcs/class.cs:1317
+#: mcs/mcs/class.cs:1329
 #, csharp-format
 msgid ""
 "Partial declarations of `{0}' must have the same type parameter names in the "
@@ -472,7 +997,7 @@ msgstr ""
 "Las declaraciones parciales de `{0} deben de tener los mismos nombres de "
 "parámetros en el mismo órden."
 
-#: mcs/mcs/class.cs:1324
+#: mcs/mcs/class.cs:1336
 #, fuzzy, csharp-format
 msgid ""
 "Partial declarations of `{0}' must have the same type parameter variance "
@@ -481,7 +1006,7 @@ msgstr ""
 "Las declaraciones parciales de `{0} deben de tener los mismos nombres de "
 "parámetros en el mismo órden."
 
-#: mcs/mcs/class.cs:1349
+#: mcs/mcs/class.cs:1361
 #, csharp-format
 msgid ""
 "Partial declarations of `{0}' have inconsistent constraints for type "
@@ -490,12 +1015,12 @@ msgstr ""
 "Las declaraciones parciales de `{0}' tienen limitaciones inconsistentes para "
 "el tipo parametrizado `{1}'"
 
-#: mcs/mcs/class.cs:1486
+#: mcs/mcs/class.cs:1500
 #, fuzzy, csharp-format
 msgid "`{0}': cannot implement a dynamic interface `{1}'"
 msgstr "`{0}': el tipo contenedor no implementa la interface `{1}'"
 
-#: mcs/mcs/class.cs:1601
+#: mcs/mcs/class.cs:1618
 msgid ""
 "Two indexers have different names; the IndexerName attribute must be used "
 "with the same name on every indexer within a type"
@@ -503,85 +1028,85 @@ msgstr ""
 "Hay dos indexadores con nombres distintos;   El atributo IndexerName debe "
 "ser usado con el mismo nombre en todos los indexadores dentro de un tipo"
 
-#: mcs/mcs/class.cs:1928
+#: mcs/mcs/class.cs:1952
 #, csharp-format
 msgid "A static member `{0}' cannot be marked as override, virtual or abstract"
 msgstr ""
 "El miembro estático `{0}' no puede ser marcado con override, virtual o "
 "abstract"
 
-#: mcs/mcs/class.cs:1935
+#: mcs/mcs/class.cs:1959
 #, csharp-format
 msgid "A member `{0}' marked as override cannot be marked as new or virtual"
 msgstr ""
 "El miembro `{0}' está usa `override' y no puede usar `new' o `virtual' "
 
-#: mcs/mcs/class.cs:1947
+#: mcs/mcs/class.cs:1971
 #, csharp-format
 msgid "`{0}' cannot be both extern and abstract"
 msgstr "`{0}' no puede ser tanto externo como abstracto"
 
-#: mcs/mcs/class.cs:1952
+#: mcs/mcs/class.cs:1976
 #, csharp-format
 msgid "`{0}' cannot be both abstract and sealed"
 msgstr "`{0}'' no puede ser tanto sellado como abstracto"
 
-#: mcs/mcs/class.cs:1957
+#: mcs/mcs/class.cs:1981
 #, csharp-format
 msgid "The abstract method `{0}' cannot be marked virtual"
 msgstr "El método abstracto `{0} no puede ser marcado como virtual"
 
-#: mcs/mcs/class.cs:1963
+#: mcs/mcs/class.cs:1987
 #, csharp-format
 msgid "`{0}' is abstract but it is declared in the non-abstract class `{1}'"
 msgstr ""
 "`{0}' es abstracto pero ha sido declarado dentro de una clase que no es "
 "abstracta (`{1}')"
 
-#: mcs/mcs/class.cs:1971
+#: mcs/mcs/class.cs:1995
 #, csharp-format
 msgid "`{0}': virtual or abstract members cannot be private"
 msgstr "`{0}': los miembros virtuales o abstractos no pueden ser privados"
 
-#: mcs/mcs/class.cs:1978
+#: mcs/mcs/class.cs:2002
 #, csharp-format
 msgid "`{0}' cannot be sealed because it is not an override"
 msgstr "`{0}' no puede sellarse por que no es una sobrecarga"
 
-#: mcs/mcs/class.cs:2025
+#: mcs/mcs/class.cs:2049
 #, csharp-format
 msgid "`{0}': containing type does not implement interface `{1}'"
 msgstr "`{0}': el tipo contenedor no implementa la interface `{1}'"
 
-#: mcs/mcs/class.cs:2125
+#: mcs/mcs/class.cs:2225
 #, csharp-format
 msgid "Type parameter `{0}' has same name as containing type, or method"
 msgstr ""
 "El tipo parametrizado `{0}' tiene el mimo nombre que el tipo contenedor, o "
 "el método"
 
-#: mcs/mcs/class.cs:2133
+#: mcs/mcs/class.cs:2233
 #, csharp-format
 msgid "`{0}': member names cannot be the same as their enclosing type"
 msgstr ""
 "`{0}': los nombres de los miembros no pueden ser el mismo que el del tipo "
 "contenedor"
 
-#: mcs/mcs/class.cs:2294
+#: mcs/mcs/class.cs:2399
 msgid ""
 "The class System.Object cannot have a base class or implement an interface."
 msgstr ""
 "La clase Syste.Object no puede tener una clase base o implementar una "
 "interface."
 
-#: mcs/mcs/class.cs:2302
+#: mcs/mcs/class.cs:2407
 #, csharp-format
 msgid "Attribute `{0}' is only valid on classes derived from System.Attribute"
 msgstr ""
 "El atributo `{0}' solamente es válido en las clases derivadas de System."
 "Attribute"
 
-#: mcs/mcs/class.cs:2307
+#: mcs/mcs/class.cs:2412
 msgid ""
 "Attribute `System.Diagnostics.ConditionalAttribute' is only valid on methods "
 "or attribute classes"
@@ -589,72 +1114,72 @@ msgstr ""
 "El atributo `System.Diagnostics.ConditionalAttribute' solamente es válido en "
 "métodos o en clases derivadas de System.Attribute"
 
-#: mcs/mcs/class.cs:2345
+#: mcs/mcs/class.cs:2450
 #, csharp-format
 msgid "`{0}': Static classes cannot contain user-defined operators"
 msgstr ""
 "`{0}': las clases estáticas no pueden contener operadores definidos por el "
 "usuario"
 
-#: mcs/mcs/class.cs:2350
+#: mcs/mcs/class.cs:2455
 #, csharp-format
 msgid "`{0}': Static classes cannot contain destructor"
 msgstr "`{0}': las clases estáticas no pueden contener un destructor"
 
-#: mcs/mcs/class.cs:2355
+#: mcs/mcs/class.cs:2460
 #, csharp-format
 msgid "`{0}': cannot declare indexers in a static class"
 msgstr "`{0}': no es posible declarar indexadores en una clase estática"
 
-#: mcs/mcs/class.cs:2363
+#: mcs/mcs/class.cs:2468
 #, csharp-format
 msgid "`{0}': Static classes cannot have instance constructors"
 msgstr ""
 "`{0}': las clases estáticas no pueden tener constructores de instancias"
 
-#: mcs/mcs/class.cs:2369
+#: mcs/mcs/class.cs:2474
 #, csharp-format
 msgid "`{0}': Extension methods must be declared static"
 msgstr "`{0}' Los métodos de extensión deben de ser estáticos"
 
-#: mcs/mcs/class.cs:2373
+#: mcs/mcs/class.cs:2478
 #, csharp-format
 msgid "`{0}': cannot declare instance members in a static class"
 msgstr ""
 "`{0}'L no es posible declarar miembros de instancia en una clase estática"
 
-#: mcs/mcs/class.cs:2382
+#: mcs/mcs/class.cs:2487
 #, csharp-format
 msgid "`{0}': an abstract class cannot be sealed or static"
 msgstr "`{0}': una clase abstracta no puede estar sellada o ser estática"
 
-#: mcs/mcs/class.cs:2386
+#: mcs/mcs/class.cs:2491
 #, csharp-format
 msgid "`{0}': a class cannot be both static and sealed"
 msgstr "`{0}': una clase no puede estar sellada y ser estática al mismo tiempo"
 
-#: mcs/mcs/class.cs:2420
+#: mcs/mcs/class.cs:2521
 #, fuzzy, csharp-format
 msgid "`{0}': Cannot derive from type parameter `{1}'"
 msgstr "`{0}': no es posible derivar de una clase estática (`{1}')"
 
-#: mcs/mcs/class.cs:2424
+#: mcs/mcs/class.cs:2525
 #, csharp-format
 msgid ""
 "A generic type cannot derive from `{0}' because it is an attribute class"
 msgstr "Los tipos genericos no pueden derivad de `{0} ya que es un atributo"
 
-#: mcs/mcs/class.cs:2428
+#: mcs/mcs/class.cs:2529
 #, csharp-format
 msgid "`{0}': Cannot derive from static class `{1}'"
 msgstr "`{0}': no es posible derivar de una clase estática (`{1}')"
 
-#: mcs/mcs/class.cs:2432
+#: mcs/mcs/class.cs:2533
 #, fuzzy, csharp-format
 msgid "`{0}': cannot derive from sealed type `{1}'"
 msgstr "`{0}': no es posible derivad de una clase sellada (`{1}')"
 
-#: mcs/mcs/class.cs:2435
+#: mcs/mcs/class.cs:2536
 #, csharp-format
 msgid ""
 "Static class `{0}' cannot derive from type `{1}'. Static classes must derive "
@@ -663,12 +1188,12 @@ msgstr ""
 "La clase estática `{0}' no puede derivarse del tipo `{1}'.   Las clases "
 "estáticas deben derivar de `System.Object'"
 
-#: mcs/mcs/class.cs:2442
+#: mcs/mcs/class.cs:2543
 #, csharp-format
 msgid "`{0}' cannot derive from special class `{1}'"
 msgstr "`{0}' no es posible derivad de la clase especial `{1}'"
 
-#: mcs/mcs/class.cs:2450
+#: mcs/mcs/class.cs:2551
 #, csharp-format
 msgid ""
 "Inconsistent accessibility: base class `{0}' is less accessible than class `"
@@ -677,58 +1202,58 @@ msgstr ""
 "Accesibilidad inconsistente: la clase base `{0}' es menos accessible que la "
 "clase `{1}'"
 
-#: mcs/mcs/class.cs:2458
+#: mcs/mcs/class.cs:2559
 #, csharp-format
 msgid "Static class `{0}' cannot implement interfaces"
 msgstr "Las clases estáticas no pueden implementar interfaces (`{0}')"
 
-#: mcs/mcs/class.cs:2571 mcs/mcs/class.cs:2582
+#: mcs/mcs/class.cs:2678 mcs/mcs/class.cs:2689
 #, csharp-format
 msgid "Struct member `{0}' of type `{1}' causes a cycle in the struct layout"
 msgstr ""
 
-#: mcs/mcs/class.cs:2672
+#: mcs/mcs/class.cs:2779
 #, csharp-format
 msgid "`{0}': Structs cannot have instance field initializers"
 msgstr ""
 "`{0}': las estructuras no pueden tener inicializadores de campos en "
 "instancias"
 
-#: mcs/mcs/class.cs:2853
+#: mcs/mcs/class.cs:2960
 #, fuzzy, csharp-format
 msgid "Do not override `{0}'. Use destructor syntax instead"
 msgstr ""
 "No use `{0}' directamente.   Use el modificador de parámetro `this' en su "
 "lugar"
 
-#: mcs/mcs/class.cs:2856
+#: mcs/mcs/class.cs:2963
 #, csharp-format
 msgid "`{0}' is marked as an override but no suitable {1} found to override"
 msgstr ""
 "`{0}' está marcado como una sobreescritura pero no es posible encontrar {1} "
 "para usar override"
 
-#: mcs/mcs/class.cs:2862
+#: mcs/mcs/class.cs:2969
 #, csharp-format
 msgid "`{0}': cannot override because `{1}' is not an event"
 msgstr "`{0}': no es posible sobreescribir ya que `{1}' no es un evento"
 
-#: mcs/mcs/class.cs:2865
+#: mcs/mcs/class.cs:2972
 #, csharp-format
 msgid "`{0}': cannot override because `{1}' is not a property"
 msgstr "`{0}': no es posible sobreescribir `{1}' ya que no es una propiedad"
 
-#: mcs/mcs/class.cs:2868
+#: mcs/mcs/class.cs:2975
 #, csharp-format
 msgid "`{0}': cannot override because `{1}' is not a method"
 msgstr "`{0}': no es posible sobreescribir `{1}' ya que no es un método"
 
-#: mcs/mcs/class.cs:2922
+#: mcs/mcs/class.cs:3031 mcs/mcs/field.cs:187
 #, csharp-format
 msgid "`{0}' hides inherited abstract member `{1}'"
 msgstr "`{0}' esconde el miembro abstracto heredado `{1}'"
 
-#: mcs/mcs/class.cs:2946
+#: mcs/mcs/class.cs:3055
 #, csharp-format
 msgid ""
 "`{0}': cannot override inherited member `{1}' because it is not marked "
@@ -737,38 +1262,38 @@ msgstr ""
 "`{0}': no es posible sobreescribir el miembro heredado `{1}' ya que este no "
 "está marcado con `virtual', `abstract' u `override'"
 
-#: mcs/mcs/class.cs:2954
+#: mcs/mcs/class.cs:3063
 #, csharp-format
 msgid "`{0}': cannot override inherited member `{1}' because it is sealed"
 msgstr ""
 "`{0}': no es posible sobreescribir el miembro heredado `{1}' ya que este "
 "está sellado"
 
-#: mcs/mcs/class.cs:2963
+#: mcs/mcs/class.cs:3072
 #, csharp-format
 msgid "`{0}': type must be `{1}' to match overridden member `{2}'"
 msgstr ""
 "`{0}': el tipo debe de ser `{1}' para que corresponda con el miembro "
 "sobreescrito `{2}'"
 
-#: mcs/mcs/class.cs:2966
+#: mcs/mcs/class.cs:3075
 #, csharp-format
 msgid "`{0}': return type must be `{1}' to match overridden member `{2}'"
 msgstr ""
 "`{0}': El tipo de regreso debe de ser `{1}' para qu ecorresponda con el "
 "miembro sobreescrito `{2}'"
 
-#: mcs/mcs/class.cs:3038
+#: mcs/mcs/class.cs:3143
 #, csharp-format
 msgid "A partial method `{0}' cannot explicitly implement an interface"
 msgstr ""
 
-#: mcs/mcs/class.cs:3046
+#: mcs/mcs/class.cs:3151
 #, fuzzy, csharp-format
 msgid "The type `{0}' in explicit interface declaration is not an interface"
 msgstr "El tipo `{0} en la lista de interfaces no es una interface"
 
-#: mcs/mcs/class.cs:3077
+#: mcs/mcs/class.cs:3182
 #, csharp-format
 msgid ""
 "Inconsistent accessibility: parameter type `{0}' is less accessible than "
@@ -777,7 +1302,7 @@ msgstr ""
 "Accesibilidad inconsistente: la interface base `{0}' es menos accessible que "
 "el indexador `{1}'"
 
-#: mcs/mcs/class.cs:3081
+#: mcs/mcs/class.cs:3186
 #, csharp-format
 msgid ""
 "Inconsistent accessibility: parameter type `{0}' is less accessible than "
@@ -786,233 +1311,166 @@ msgstr ""
 "Accesibilidad inconsistente: el tipo del parámetro `{0}' es menos accessible "
 "que el operador `{1}'"
 
-#: mcs/mcs/class.cs:3085
+#: mcs/mcs/class.cs:3190
 #, csharp-format
 msgid ""
 "Inconsistent accessibility: parameter type `{0}' is less accessible than "
 "method `{1}'"
 msgstr ""
 
-#: mcs/mcs/class.cs:3099
+#: mcs/mcs/class.cs:3204
 #, csharp-format
 msgid ""
 "Constructor `{0}' is marked `external' but has no external implementation "
 "specified"
 msgstr ""
 
-#: mcs/mcs/class.cs:3102
+#: mcs/mcs/class.cs:3207
 #, csharp-format
 msgid ""
 "`{0}' is marked as an external but has no DllImport attribute. Consider "
 "adding a DllImport attribute to specify the external implementation"
 msgstr ""
 
-#: mcs/mcs/class.cs:3131
+#: mcs/mcs/class.cs:3243
 #, csharp-format
 msgid ""
 "`{0}': cannot change access modifiers when overriding `{1}' inherited member "
 "`{2}'"
 msgstr ""
 
-#: mcs/mcs/class.cs:3140
+#: mcs/mcs/class.cs:3252
 #, fuzzy, csharp-format
 msgid "`{0}': static types cannot be used as return types"
 msgstr ""
 "`{0}': las clases estáticas no pueden tener constructores de instancias"
 
-#: mcs/mcs/class.cs:3265
+#: mcs/mcs/class.cs:3377
 #, csharp-format
 msgid "New virtual member `{0}' is declared in a sealed class `{1}'"
 msgstr ""
 
-#: mcs/mcs/class.cs:3280
+#: mcs/mcs/class.cs:3392
 msgid "Inconsistent accessibility: property type `"
 msgstr ""
 
-#: mcs/mcs/class.cs:3285
+#: mcs/mcs/class.cs:3397
 msgid "Inconsistent accessibility: indexer return type `"
 msgstr ""
 
-#: mcs/mcs/class.cs:3291 mcs/mcs/class.cs:3296 mcs/mcs/delegate.cs:154
+#: mcs/mcs/class.cs:3403 mcs/mcs/class.cs:3408 mcs/mcs/delegate.cs:159
 msgid "Inconsistent accessibility: return type `"
 msgstr ""
 
-#: mcs/mcs/class.cs:3301
+#: mcs/mcs/class.cs:3413
 msgid "Inconsistent accessibility: field type `"
 msgstr ""
 
-#: mcs/mcs/class.cs:3314
+#: mcs/mcs/class.cs:3426
 #, csharp-format
 msgid "Field or property cannot be of type `{0}'"
 msgstr ""
 
-#: mcs/mcs/codegen.cs:115
-msgid "Assembly generation failed -- Referenced assembly '"
-msgstr ""
-
-#: mcs/mcs/codegen.cs:133
-msgid "Could not access the key inside the container `"
-msgstr ""
-
-#: mcs/mcs/codegen.cs:141
-msgid "Could not use the specified key to strongname the assembly."
-msgstr ""
-
-#: mcs/mcs/codegen.cs:167
-msgid ""
-"Could not find the symbol writer assembly (Mono.CompilerServices."
-"SymbolWriter.dll)"
-msgstr ""
-
-#: mcs/mcs/codegen.cs:172
-#, csharp-format
-msgid "Unexpected debug information initialization error `{0}'"
-msgstr ""
-
-#: mcs/mcs/codegen.cs:212
-msgid "Couldn't delay-sign the assembly with the '"
-msgstr ""
-
-#: mcs/mcs/codegen.cs:217 mcs/mcs/codegen.cs:221
-msgid "Could not write to file `"
-msgstr ""
-
-#: mcs/mcs/codegen.cs:1104 mcs/mcs/codegen.cs:1119
-#, csharp-format
-msgid ""
-"Option `{0}' overrides attribute `{1}' given in a source file or added module"
-msgstr ""
-
-#: mcs/mcs/codegen.cs:1189
-msgid ""
-"Could not sign the assembly. ECMA key can only be used to delay-sign "
-"assemblies"
-msgstr ""
-
-#: mcs/mcs/codegen.cs:1209
-msgid "Error during assembly signing. "
-msgstr ""
-
-#: mcs/mcs/codegen.cs:1233
-msgid "Friend assembly reference `"
-msgstr ""
-
-#: mcs/mcs/codegen.cs:1358
-msgid "Invalid type specified as an argument for TypeForwardedTo attribute"
-msgstr ""
-
-#: mcs/mcs/codegen.cs:1366
-#, csharp-format
-msgid "A duplicate type forward of type `{0}'"
-msgstr ""
-
-#: mcs/mcs/codegen.cs:1375
-#, csharp-format
-msgid "Cannot forward type `{0}' because it is defined in this assembly"
-msgstr ""
-
-#: mcs/mcs/codegen.cs:1381
-#, csharp-format
-msgid "Cannot forward type `{0}' because it is a nested type"
-msgstr ""
-
-#: mcs/mcs/const.cs:120
+#: mcs/mcs/const.cs:103
 #, fuzzy, csharp-format
 msgid "Type parameter `{0}' cannot be declared const"
 msgstr "El método abstracto `{0} no puede ser marcado como virtual"
 
-#: mcs/mcs/const.cs:123
+#: mcs/mcs/const.cs:106
 #, csharp-format
 msgid "The type `{0}' cannot be declared const"
 msgstr ""
 
-#: mcs/mcs/const.cs:198
+#: mcs/mcs/const.cs:181
 #, csharp-format
 msgid ""
 "The evaluation of the constant value for `{0}' involves a circular definition"
 msgstr ""
 
-#: mcs/mcs/constant.cs:58 mcs/mcs/constant.cs:305
+#: mcs/mcs/constant.cs:68 mcs/mcs/constant.cs:319
 #, csharp-format
 msgid "Constant value `{0}' cannot be converted to a `{1}'"
 msgstr ""
 
-#: mcs/mcs/constant.cs:177
+#: mcs/mcs/constant.cs:187
 #, csharp-format
 msgid ""
 "Constant value `{0}' cannot be converted to a `{1}' (use `unchecked' syntax "
 "to override)"
 msgstr ""
 
-#: mcs/mcs/decl.cs:370
+#: mcs/mcs/convert.cs:1158
 #, csharp-format
-msgid "`{0}' cannot declare a body because it is marked extern"
+msgid ""
+"Ambiguous user defined operators `{0}' and `{1}' when converting from `{2}' "
+"to `{3}'"
 msgstr ""
 
 #: mcs/mcs/decl.cs:376
 #, csharp-format
+msgid "`{0}' cannot declare a body because it is marked extern"
+msgstr ""
+
+#: mcs/mcs/decl.cs:382
+#, csharp-format
 msgid "`{0}' cannot declare a body because it is marked abstract"
 msgstr ""
 
-#: mcs/mcs/decl.cs:389
+#: mcs/mcs/decl.cs:395
 #, csharp-format
 msgid ""
 "`{0}' must have a body because it is not marked abstract or extern. The "
 "property can be automatically implemented when you define both accessors"
 msgstr ""
 
-#: mcs/mcs/decl.cs:395
+#: mcs/mcs/decl.cs:401
 #, csharp-format
 msgid ""
 "`{0}' must have a body because it is not marked abstract, extern, or partial"
 msgstr ""
 
-#: mcs/mcs/decl.cs:410
+#: mcs/mcs/decl.cs:416
 #, csharp-format
 msgid "`{0}': Structs cannot contain protected members"
 msgstr ""
 
-#: mcs/mcs/decl.cs:416
+#: mcs/mcs/decl.cs:422
 #, csharp-format
 msgid "`{0}': Static classes cannot contain protected members"
 msgstr ""
 
-#: mcs/mcs/decl.cs:1260
+#: mcs/mcs/decl.cs:1295
 #, csharp-format
 msgid "The namespace `{0}' already contains a definition for `{1}'"
 msgstr ""
 
-#: mcs/mcs/decl.cs:1264
+#: mcs/mcs/decl.cs:1299
 #, csharp-format
 msgid "Duplicate type parameter `{0}'"
 msgstr ""
 
-#: mcs/mcs/decl.cs:1267
+#: mcs/mcs/decl.cs:1302
 #, csharp-format
 msgid "The type `{0}' already contains a definition for `{1}'"
 msgstr ""
 
-#: mcs/mcs/decl.cs:1317
+#: mcs/mcs/decl.cs:1352
 #, csharp-format
 msgid ""
 "Missing partial modifier on declaration of type `{0}'. Another partial "
 "declaration of this type exists"
 msgstr ""
 
-#: mcs/mcs/decl.cs:1485
-msgid "Constraints are not allowed on non-generic declarations"
-msgstr ""
-
-#: mcs/mcs/decl.cs:1522
+#: mcs/mcs/decl.cs:1441
 msgid "Variant type parameters can only be used with interfaces and delegates"
 msgstr ""
 
-#: mcs/mcs/decl.cs:1534
+#: mcs/mcs/decl.cs:1453
 #, csharp-format
 msgid "`{0}': A constraint references nonexistent type parameter `{1}'"
 msgstr ""
 
-#: mcs/mcs/delegate.cs:136
+#: mcs/mcs/delegate.cs:141
 #, csharp-format
 msgid ""
 "Inconsistent accessibility: parameter type `{0}' is less accessible than "
@@ -1021,521 +1479,500 @@ msgstr ""
 "Accesibilidad inconsistente: la interface base `{0}' es menos accessible que "
 "el delegado `{1}'"
 
-#: mcs/mcs/delegate.cs:463
+#: mcs/mcs/delegate.cs:487
 #, csharp-format
 msgid ""
 "Cannot create delegate from method `{0}' because it is a member of System."
 "Nullable<T> type"
 msgstr ""
 
-#: mcs/mcs/delegate.cs:475
+#: mcs/mcs/delegate.cs:499
 #, csharp-format
 msgid ""
 "Extension method `{0}' of value type `{1}' cannot be used to create delegates"
 msgstr ""
 
-#: mcs/mcs/delegate.cs:490
+#: mcs/mcs/delegate.cs:514
 #, csharp-format
 msgid "Cannot create delegate from partial method declaration `{0}'"
 msgstr ""
 
-#: mcs/mcs/delegate.cs:493
+#: mcs/mcs/delegate.cs:517
 #, csharp-format
 msgid ""
 "Cannot create delegate with `{0}' because it has a Conditional attribute"
 msgstr ""
 
-#: mcs/mcs/delegate.cs:536
+#: mcs/mcs/delegate.cs:560
 #, csharp-format
 msgid ""
 "A method or delegate `{0} {1}' parameters and return type must be same as "
 "delegate `{2} {3}' parameters and return type"
 msgstr ""
 
-#: mcs/mcs/delegate.cs:543
+#: mcs/mcs/delegate.cs:567
 #, csharp-format
 msgid ""
 "A method or delegate `{0}' parameters do not match delegate `{1}' parameters"
 msgstr ""
 
-#: mcs/mcs/delegate.cs:548
+#: mcs/mcs/delegate.cs:572
 #, csharp-format
 msgid ""
 "A method or delegate `{0} {1}' return type does not match delegate `{2} {3}' "
 "return type"
 msgstr ""
 
-#: mcs/mcs/delegate.cs:631
+#: mcs/mcs/delegate.cs:655
 msgid "Method name expected"
 msgstr ""
 
-#: mcs/mcs/doc.cs:910
+#: mcs/mcs/doc.cs:914
 #, csharp-format
 msgid "Error generating XML documentation file `{0}' (`{1}')"
 msgstr ""
 
-#: mcs/mcs/driver.cs:164 mcs/mcs/driver.cs:716 mcs/mcs/driver.cs:719
+#: mcs/mcs/driver.cs:96 mcs/mcs/driver.cs:467 mcs/mcs/driver.cs:470
 msgid "Source file `"
 msgstr ""
 
-#: mcs/mcs/driver.cs:191
+#: mcs/mcs/driver.cs:123
 #, csharp-format
 msgid "Source file `{0}' could not be found"
 msgstr ""
 
-#: mcs/mcs/driver.cs:199
+#: mcs/mcs/driver.cs:129
 #, csharp-format
 msgid "Source file `{0}' is a binary file and not a text file"
 msgstr ""
 
-#: mcs/mcs/driver.cs:281
+#: mcs/mcs/driver.cs:216
 msgid ""
 "Invalid target type for -target. Valid options are `exe', `winexe', "
 "`library' or `module'"
 msgstr ""
 
-#: mcs/mcs/driver.cs:332
-#, csharp-format
-msgid "cannot find metadata file `{0}'"
-msgstr ""
-
-#: mcs/mcs/driver.cs:339
-#, csharp-format
-msgid "file `{0}' has invalid `{1}' metadata"
-msgstr ""
-
-#: mcs/mcs/driver.cs:359
-#, csharp-format
-msgid ""
-"Referenced file `{0}' is not an assembly. Consider using `-addmodule' option "
-"instead"
-msgstr ""
-
-#: mcs/mcs/driver.cs:612
+#: mcs/mcs/driver.cs:363
 msgid "Response file `"
 msgstr ""
 
-#: mcs/mcs/driver.cs:621
+#: mcs/mcs/driver.cs:372
 msgid "Unable to open response file: "
 msgstr ""
 
-#: mcs/mcs/driver.cs:671 mcs/mcs/driver.cs:681
+#: mcs/mcs/driver.cs:422 mcs/mcs/driver.cs:432
 msgid "No files to compile were specified"
 msgstr ""
 
-#: mcs/mcs/driver.cs:813
+#: mcs/mcs/driver.cs:504
 msgid "Warning level must be in the range 0-4"
 msgstr ""
 
-#: mcs/mcs/driver.cs:847
+#: mcs/mcs/driver.cs:538
 msgid "Compatibility: Use -main:CLASS instead of --main CLASS or -m CLASS"
 msgstr ""
 
-#: mcs/mcs/driver.cs:856
+#: mcs/mcs/driver.cs:547
 msgid "Compatibility: Use -unsafe instead of --unsafe"
 msgstr ""
 
-#: mcs/mcs/driver.cs:867
+#: mcs/mcs/driver.cs:558
 msgid "Compatibility: Use -d:SYMBOL instead of --define SYMBOL"
 msgstr ""
 
-#: mcs/mcs/driver.cs:881
+#: mcs/mcs/driver.cs:572
 msgid "Compatibility: Use -out:FILE instead of --output FILE or -o FILE"
 msgstr ""
 
-#: mcs/mcs/driver.cs:890
+#: mcs/mcs/driver.cs:581
 msgid "Compatibility: Use -checked instead of --checked"
 msgstr ""
 
-#: mcs/mcs/driver.cs:900
+#: mcs/mcs/driver.cs:591
 msgid "Compatibility: Use -linkres:VALUE instead of --linkres VALUE"
 msgstr ""
 
-#: mcs/mcs/driver.cs:903
+#: mcs/mcs/driver.cs:594
 msgid "Missing argument to --linkres"
 msgstr ""
 
-#: mcs/mcs/driver.cs:914
+#: mcs/mcs/driver.cs:603
 msgid "Compatibility: Use -res:VALUE instead of --res VALUE"
 msgstr ""
 
-#: mcs/mcs/driver.cs:917
+#: mcs/mcs/driver.cs:606
 msgid "Missing argument to --resource"
 msgstr ""
 
-#: mcs/mcs/driver.cs:927
+#: mcs/mcs/driver.cs:614
 msgid "Compatibility: Use -target:KIND instead of --target KIND"
 msgstr ""
 
-#: mcs/mcs/driver.cs:959
+#: mcs/mcs/driver.cs:646
 msgid "Compatibility: Use -r:LIBRARY instead of -r library"
 msgstr ""
 
-#: mcs/mcs/driver.cs:978
+#: mcs/mcs/driver.cs:665
 msgid "Compatibility: Use -lib:ARG instead of --L arg"
 msgstr ""
 
-#: mcs/mcs/driver.cs:991
+#: mcs/mcs/driver.cs:678
 msgid "Compatibility: Use -nostdlib instead of --nostdlib"
 msgstr ""
 
-#: mcs/mcs/driver.cs:996
+#: mcs/mcs/driver.cs:683
 msgid "Compatibility: Use -nowarn instead of --nowarn"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1013
+#: mcs/mcs/driver.cs:700
 msgid "Compatibility: Use -warn:LEVEL instead of --wlevel LEVEL"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1017
+#: mcs/mcs/driver.cs:704
 msgid "--wlevel requires a value from 0 to 4"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1026
+#: mcs/mcs/driver.cs:713
 msgid "--mcs-debug requires an argument"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1033
+#: mcs/mcs/driver.cs:720
 msgid "Invalid argument to --mcs-debug"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1043
+#: mcs/mcs/driver.cs:730
 msgid "Compatibility: Use -recurse:PATTERN option instead --recurse PATTERN"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1045
+#: mcs/mcs/driver.cs:732
 msgid "--recurse requires an argument"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1057
+#: mcs/mcs/driver.cs:743
 msgid "Compatibility: Use -debug option instead of -g or --debug"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1062
+#: mcs/mcs/driver.cs:748
 msgid "Compatibility: Use -noconfig option instead of --noconfig"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1206
+#: mcs/mcs/driver.cs:912
 #, csharp-format
 msgid "Invalid conditional define symbol `{0}'"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1260
+#: mcs/mcs/driver.cs:963
 #, csharp-format
 msgid ""
 "Invalid resource visibility option `{0}'. Use either `public' or `private' "
 "instead"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1266
+#: mcs/mcs/driver.cs:969
 #, csharp-format
 msgid "Wrong number of arguments for option `{0}'"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1274
-msgid "-recurse requires an argument"
-msgstr ""
-
-#: mcs/mcs/driver.cs:1283
-msgid "-reference requires an argument"
-msgstr ""
-
-#: mcs/mcs/driver.cs:1305 mcs/mcs/driver.cs:1317 mcs/mcs/driver.cs:1329
-#: mcs/mcs/driver.cs:1341 mcs/mcs/driver.cs:1494 mcs/mcs/driver.cs:1514
-#: mcs/mcs/driver.cs:1521
-msgid " requires an argument"
+#: mcs/mcs/driver.cs:1007
+msgid "Cannot specify multiple aliases using single /reference option"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1322 mcs/mcs/driver.cs:1334
+#: mcs/mcs/driver.cs:1035 mcs/mcs/driver.cs:1047
 msgid ""
 "Cannot specify the `win32res' and the `win32ico' compiler option at the same "
 "time"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1351
-msgid "/lib requires an argument"
-msgstr ""
-
-#: mcs/mcs/driver.cs:1428
-msgid "/nowarn requires an argument"
+#: mcs/mcs/driver.cs:1162
+#, csharp-format
+msgid "`{0}' is not a valid warning number"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1469
+#: mcs/mcs/driver.cs:1192
 msgid ""
 "Invalid platform type for -platform. Valid options are `anycpu', `x86', "
 "`x64' or `itanium'"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1553
+#: mcs/mcs/driver.cs:1212
+msgid "Invalid sdk version name"
+msgstr ""
+
+#: mcs/mcs/driver.cs:1310
 #, csharp-format
 msgid ""
 "Invalid -langversion option `{0}'. It must be `ISO-1', `ISO-2', `3' or "
 "`Default'"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1569
+#: mcs/mcs/driver.cs:1330
 #, csharp-format
 msgid "Code page `{0}' is invalid or not installed"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1581
+#: mcs/mcs/driver.cs:1345
 #, csharp-format
 msgid "Unrecognized command-line option: `{0}'"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1611
-msgid "Invalid reference alias '"
-msgstr ""
-
-#: mcs/mcs/driver.cs:1616
-msgid "Invalid extern alias for /reference. Alias '"
-msgstr ""
-
-#: mcs/mcs/driver.cs:1672
-msgid ""
-"If no source files are specified you must specify the output file with -out:"
-msgstr ""
-
-#: mcs/mcs/driver.cs:1802
+#: mcs/mcs/driver.cs:1350
 #, csharp-format
-msgid "Could not find `{0}' specified for Main method"
+msgid "Missing file specification for `{0}' option"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1807
+#: mcs/mcs/driver.cs:1355
 #, csharp-format
-msgid "`{0}' specified for Main method must be a valid class or struct"
+msgid "Missing argument for `{0}' option"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1811
+#: mcs/mcs/driver.cs:1390
 #, csharp-format
-msgid "`{0}' does not have a suitable static Main method"
+msgid "Invalid reference alias `{0}='. Missing filename"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1816
+#: mcs/mcs/driver.cs:1395
 #, csharp-format
 msgid ""
-"Program `{0}' does not contain a static `Main' method suitable for an entry "
-"point"
+"Invalid extern alias for -reference. Alias `{0}' is not a valid identifier"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1823
-msgid "Cannot specify -main if building a module or library"
+#: mcs/mcs/driver.cs:1411
+#, csharp-format
+msgid "The resource identifier `{0}' has already been used in this assembly"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1828
-msgid "Cannot link resource file when building a module"
+#: mcs/mcs/driver.cs:1472
+msgid ""
+"If no source files are specified you must specify the output file with -out:"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1966
-#, csharp-format
-msgid "The resource identifier `{0}' has already been used in this assembly"
-msgstr ""
+#: mcs/mcs/dynamic.cs:272
+#, fuzzy
+msgid "An expression tree cannot contain a dynamic operation"
+msgstr "Un árbol de expresiones no puede contener un operador de asignación"
 
-#: mcs/mcs/driver.cs:1980
-#, csharp-format
-msgid "Error reading resource file `{0}'"
+#: mcs/mcs/dynamic.cs:302
+msgid ""
+"Dynamic operation cannot be compiled without `Microsoft.CSharp.dll' assembly "
+"reference"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:251
+#: mcs/mcs/ecore.cs:247
 #, csharp-format
 msgid "`{0}' is inaccessible due to its protection level"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:256
+#: mcs/mcs/ecore.cs:252
 #, csharp-format
 msgid "The expression being assigned to `{0}' must be constant"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:261
+#: mcs/mcs/ecore.cs:257
 #, csharp-format
 msgid ""
 "A constant `{0}' of reference type `{1}' can only be initialized with null"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:267
+#: mcs/mcs/ecore.cs:263
 msgid ""
 "Only assignment, call, increment, decrement, and new object expressions can "
 "be used as a statement"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:278
+#: mcs/mcs/ecore.cs:274
 msgid "Keyword `void' cannot be used in this context"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:312
+#: mcs/mcs/ecore.cs:308
 #, csharp-format
 msgid "Cannot convert type `{0}' to `{1}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:322
+#: mcs/mcs/ecore.cs:318
 #, csharp-format
 msgid ""
 "Cannot implicitly convert type `{0}' to `{1}'. An explicit conversion exists "
 "(are you missing a cast?)"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:328
+#: mcs/mcs/ecore.cs:324
 #, csharp-format
 msgid "Cannot implicitly convert type `{0}' to `{1}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:334
-#, csharp-format
-msgid "A local variable `{0}' cannot be used before it is declared"
-msgstr ""
-
-#: mcs/mcs/ecore.cs:374
+#: mcs/mcs/ecore.cs:365
 #, csharp-format
 msgid "`{0}' does not contain a definition for `{1}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:380
+#: mcs/mcs/ecore.cs:371
 msgid ""
 "The left-hand side of an assignment must be a variable, a property or an "
 "indexer"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:442 mcs/mcs/statement.cs:2849 mcs/mcs/statement.cs:2851
+#: mcs/mcs/ecore.cs:376
+msgid "The operation in question is undefined on void pointers"
+msgstr ""
+
+#: mcs/mcs/ecore.cs:438 mcs/mcs/statement.cs:2558 mcs/mcs/statement.cs:2560
 #, csharp-format
 msgid "Internal compiler error: {0}"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:482
+#: mcs/mcs/ecore.cs:478
 msgid "A ref or out argument must be an assignable variable"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:501
+#: mcs/mcs/ecore.cs:497
 msgid ""
 "An attribute argument must be a constant expression, typeof expression or "
 "array creation expression"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:572
+#: mcs/mcs/ecore.cs:568
 #, csharp-format
 msgid "The class `{0}' has no constructors defined"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:629
+#: mcs/mcs/ecore.cs:653
 #, csharp-format
 msgid "Ambiguity between `{0}' and `{1}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:656
+#: mcs/mcs/ecore.cs:680
 msgid "An expression tree cannot contain an unsafe pointer operation"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:777
+#: mcs/mcs/ecore.cs:801
 #, csharp-format
 msgid "Expression denotes a `{0}', where a `{1}' was expected"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:787
+#: mcs/mcs/ecore.cs:811
 msgid "Pointers and fixed size buffers may only be used in an unsafe context"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:822
+#: mcs/mcs/ecore.cs:846
 #, csharp-format
 msgid ""
 "Members of value type `{0}' cannot be assigned using a property `{1}' object "
 "initializer"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:825
+#: mcs/mcs/ecore.cs:849
 #, csharp-format
 msgid ""
 "Cannot modify a value type return value of `{0}'. Consider storing the value "
 "in a temporary variable"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:1491
-msgid "Cannot modify the result of an unboxing conversion"
-msgstr ""
-
-#: mcs/mcs/ecore.cs:2239
+#: mcs/mcs/ecore.cs:2275
 #, csharp-format
 msgid ""
 "Dynamic keyword requires `{0}' to be defined. Are you missing System.Core."
 "dll assembly reference?"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:2363
+#: mcs/mcs/ecore.cs:2349
+#, csharp-format
+msgid ""
+"A local variable `{0}' cannot be used before it is declared. Consider "
+"renaming the local variable when it hides the member `{1}'"
+msgstr ""
+
+#: mcs/mcs/ecore.cs:2364 mcs/mcs/ecore.cs:2408
+#, csharp-format
+msgid "`{0}' conflicts with a declaration in a child block"
+msgstr ""
+
+#: mcs/mcs/ecore.cs:2417
+#, csharp-format
+msgid "A local variable `{0}' cannot be used before it is declared"
+msgstr ""
+
+#: mcs/mcs/ecore.cs:2419
 #, csharp-format
 msgid "The name `{0}' does not exist in the current context"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:2620
+#: mcs/mcs/ecore.cs:2669
 #, csharp-format
 msgid ""
 "Cannot access protected member `{0}' via a qualifier of type `{1}'. The "
 "qualifier must be of type `{2}' or derived from it"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:2664
+#: mcs/mcs/ecore.cs:2718
 #, csharp-format
 msgid "Cannot call an abstract base member `{0}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:2703
+#: mcs/mcs/ecore.cs:2762
 #, csharp-format
 msgid ""
 "Static member `{0}' cannot be accessed with an instance reference, qualify "
 "it with a type name instead"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:2718
+#: mcs/mcs/ecore.cs:2777
 #, csharp-format
 msgid ""
 "A field initializer cannot reference the nonstatic field, method, or "
 "property `{0}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:2722
+#: mcs/mcs/ecore.cs:2781
 #, csharp-format
 msgid "An object reference is required to access non-static member `{0}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:2730
+#: mcs/mcs/ecore.cs:2789
 #, csharp-format
 msgid ""
 "Cannot access a nonstatic member of outer type `{0}' via nested type `{1}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:2868
+#: mcs/mcs/ecore.cs:2837
+msgid "Cannot modify the result of an unboxing conversion"
+msgstr ""
+
+#: mcs/mcs/ecore.cs:2958
 #, csharp-format
 msgid ""
 "Type `{0}' does not contain a member `{1}' and the best extension method "
 "overload `{2}' has some invalid arguments"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:2873
+#: mcs/mcs/ecore.cs:2963
 #, csharp-format
 msgid "Extension method instance type `{0}' cannot be converted to `{1}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:2989
+#: mcs/mcs/ecore.cs:3087
 msgid "An expression tree cannot contain an expression with method group"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:2995
+#: mcs/mcs/ecore.cs:3093
 msgid ""
 "Partial methods with only a defining declaration or removed conditional "
 "methods cannot be used in an expression tree"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:3025
+#: mcs/mcs/ecore.cs:3123
 #, csharp-format
 msgid ""
 "Cannot convert method group `{0}' to non-delegate type `{1}'. Consider using "
 "parentheses to invoke the method"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:3532
+#: mcs/mcs/ecore.cs:3719
 #, csharp-format
 msgid ""
 "The type `{0}' does not contain a constructor that takes `{1}' arguments"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:3986
+#: mcs/mcs/ecore.cs:4334
 #, csharp-format
 msgid ""
 "Type `{0}' does not contain a member `{1}' and the best extension method "
@@ -1543,489 +1980,472 @@ msgid ""
 "without the extension method syntax"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4007
+#: mcs/mcs/ecore.cs:4355
 #, csharp-format
 msgid ""
 "The call is ambiguous between the following methods or properties: `{0}' and "
 "`{1}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4062
+#: mcs/mcs/ecore.cs:4415
 #, csharp-format
 msgid ""
 "The best overloaded collection initalizer method `{0}' cannot have 'ref', or "
 "`out' modifier"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4066
+#: mcs/mcs/ecore.cs:4419
 #, csharp-format
 msgid ""
 "The best overloaded collection initalizer method `{0}' has some invalid "
 "arguments"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4069
+#: mcs/mcs/ecore.cs:4422
 #, csharp-format
 msgid "Delegate `{0}' has some invalid arguments"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4073
+#: mcs/mcs/ecore.cs:4426
 #, csharp-format
 msgid "The best overloaded method match for `{0}' has some invalid arguments"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4083
+#: mcs/mcs/ecore.cs:4436
 #, csharp-format
 msgid ""
 "Argument `#{0}' does not require `{1}' modifier. Consider removing `{1}' "
 "modifier"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4086
+#: mcs/mcs/ecore.cs:4439
 #, csharp-format
 msgid "Argument `#{0}' is missing `{1}' modifier"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4099
+#: mcs/mcs/ecore.cs:4452
 #, csharp-format
 msgid "Argument `#{0}' cannot convert `{1}' expression to type `{2}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4148
+#: mcs/mcs/ecore.cs:4500
 #, csharp-format
 msgid ""
 "The type arguments for method `{0}' cannot be inferred from the usage. Try "
 "specifying the type arguments explicitly"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4177
+#: mcs/mcs/ecore.cs:4529
 #, csharp-format
 msgid "No overload for method `{0}' takes `{1}' arguments"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4230
+#: mcs/mcs/ecore.cs:4582
 #, fuzzy, csharp-format
 msgid "The delegate `{0}' does not contain a parameter named `{1}'"
 msgstr "El delegado `{0} no toma {1} argumentos"
 
-#: mcs/mcs/ecore.cs:4235
+#: mcs/mcs/ecore.cs:4587
 #, csharp-format
 msgid ""
 "The best overloaded method match for `{0}' does not contain a parameter "
 "named `{1}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4245
+#: mcs/mcs/ecore.cs:4597
 #, csharp-format
 msgid ""
 "Named argument `{0}' cannot be used for a parameter which has positional "
 "argument specified"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4546
+#: mcs/mcs/ecore.cs:4910
 msgid ""
 "You cannot use fixed size buffers contained in unfixed expressions. Try "
 "using the fixed statement"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4551
+#: mcs/mcs/ecore.cs:4915
 #, csharp-format
 msgid "`{0}': Fixed size buffers can only be accessed through locals or fields"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4942
+#: mcs/mcs/ecore.cs:5310
 #, csharp-format
 msgid "Property or event `{0}' is not supported by the C# language"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:5096
+#: mcs/mcs/ecore.cs:5471
 #, csharp-format
 msgid "A range variable `{0}' may not be passes as `ref' or `out' parameter"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:5144
+#: mcs/mcs/ecore.cs:5519
 #, csharp-format
 msgid ""
 "The property or indexer `{0}' cannot be used in this context because it "
 "lacks the `get' accessor"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:5151
+#: mcs/mcs/ecore.cs:5526
 #, csharp-format
 msgid ""
 "The property or indexer `{0}' cannot be used in this context because the get "
 "accessor is inaccessible"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:5171
-#, csharp-format
-msgid ""
-"A range variable `{0}' cannot be assigned to. Consider using `let' clause to "
-"store the value"
-msgstr ""
-
-#: mcs/mcs/ecore.cs:5174
+#: mcs/mcs/ecore.cs:5545
 #, csharp-format
 msgid "Property or indexer `{0}' cannot be assigned to (it is read-only)"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:5183
+#: mcs/mcs/ecore.cs:5553
 #, csharp-format
 msgid ""
 "The property or indexer `{0}' cannot be used in this context because the set "
 "accessor is inaccessible"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:5346
+#: mcs/mcs/ecore.cs:5714
 #, csharp-format
 msgid ""
 "The event `{0}' can only appear on the left hand side of `+=' or `-=' "
 "operator"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:5353
+#: mcs/mcs/ecore.cs:5718
 #, csharp-format
 msgid ""
 "The event `{0}' can only appear on the left hand side of += or -= when used "
 "outside of the type `{1}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:5485
+#: mcs/mcs/ecore.cs:5882
 #, csharp-format
 msgid ""
 "An implicitly typed local variable declaration cannot be initialized with `"
 "{0}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:5499
+#: mcs/mcs/ecore.cs:5896
 msgid ""
 "The contextual keyword `var' may only appear within a local variable "
 "declaration"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:5515
-msgid ""
-"An implicitly typed local variable declaration cannot include multiple "
-"declarators"
-msgstr ""
-
-#: mcs/mcs/ecore.cs:5522
-msgid ""
-"An implicitly typed local variable declarator must include an initializer"
-msgstr ""
-
-#: mcs/mcs/enum.cs:121
+#: mcs/mcs/enum.cs:125
 #, csharp-format
 msgid ""
 "The enumerator value `{0}' is outside the range of enumerator underlying "
 "type `{1}'"
 msgstr ""
 
-#: mcs/mcs/enum.cs:185
+#: mcs/mcs/enum.cs:189
 #, csharp-format
 msgid "An item in an enumeration cannot have an identifier `{0}'"
 msgstr ""
 
-#: mcs/mcs/enum.cs:196
+#: mcs/mcs/enum.cs:200
 msgid "Type byte, sbyte, short, ushort, int, uint, long or ulong expected"
 msgstr ""
 
-#: mcs/mcs/eval.cs:624
+#: mcs/mcs/eval.cs:626
 msgid "Detection Parsing Error"
 msgstr ""
 
-#: mcs/mcs/expression.cs:531
+#: mcs/mcs/expression.cs:542
 #, csharp-format
 msgid "The `{0}' operator cannot be applied to operand of type `{1}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:611
+#: mcs/mcs/expression.cs:622
 msgid "Cannot take the address of the given expression"
 msgstr ""
 
-#: mcs/mcs/expression.cs:645
+#: mcs/mcs/expression.cs:656
 msgid ""
 "You can only take the address of unfixed expression inside of a fixed "
 "statement initializer"
 msgstr ""
 
-#: mcs/mcs/expression.cs:734
+#: mcs/mcs/expression.cs:745
 #, csharp-format
 msgid "Operator `{0}' is ambiguous on an operand of type `{1}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:855
+#: mcs/mcs/expression.cs:868
 msgid "The * or -> operator must be applied to a pointer"
 msgstr ""
 
-#: mcs/mcs/expression.cs:860 mcs/mcs/expression.cs:3988
-msgid "The operation in question is undefined on void pointers"
-msgstr ""
-
-#: mcs/mcs/expression.cs:1106
+#: mcs/mcs/expression.cs:1070
 msgid ""
 "The operand of an increment or decrement operator must be a variable, "
 "property or indexer"
 msgstr ""
 
-#: mcs/mcs/expression.cs:1194
+#: mcs/mcs/expression.cs:1260
 #, csharp-format
 msgid "The `{0}' operator cannot be applied to an operand of a static type"
 msgstr ""
 
-#: mcs/mcs/expression.cs:1199
+#: mcs/mcs/expression.cs:1265
 #, csharp-format
 msgid "The `{0}' operator cannot be applied to an operand of pointer type"
 msgstr ""
 
-#: mcs/mcs/expression.cs:1205
+#: mcs/mcs/expression.cs:1271
 #, csharp-format
 msgid ""
 "The `{0}' operator cannot be applied to a lambda expression or anonymous "
 "method"
 msgstr ""
 
-#: mcs/mcs/expression.cs:1441
+#: mcs/mcs/expression.cs:1505
 #, csharp-format
 msgid ""
 "The `as' operator cannot be used with a non-reference type parameter `{0}'. "
 "Consider adding `class' or a reference type constraint"
 msgstr ""
 
-#: mcs/mcs/expression.cs:1445
+#: mcs/mcs/expression.cs:1509
 #, csharp-format
 msgid "The `as' operator cannot be used with a non-nullable value type `{0}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:1482
+#: mcs/mcs/expression.cs:1542
 #, csharp-format
 msgid "Cannot convert type `{0}' to `{1}' via a built-in conversion"
 msgstr ""
 
-#: mcs/mcs/expression.cs:1523
+#: mcs/mcs/expression.cs:1583
 #, csharp-format
 msgid "Cannot convert to static type `{0}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:1613
+#: mcs/mcs/expression.cs:1673
 msgid ""
 "The `default value' operator cannot be applied to an operand of a static type"
 msgstr ""
 
-#: mcs/mcs/expression.cs:2092
+#: mcs/mcs/expression.cs:2178
 #, csharp-format
 msgid "Operator `{0}' cannot be applied to operands of type `{1}' and `{2}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:2656
+#: mcs/mcs/expression.cs:2741
 msgid "To cast a negative value, you must enclose the value in parentheses"
 msgstr ""
 
-#: mcs/mcs/expression.cs:3202
+#: mcs/mcs/expression.cs:3394
 #, csharp-format
 msgid "Operator `{0}' is ambiguous on operands of type `{1}' and `{2}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:3924
+#: mcs/mcs/expression.cs:4146
 #, csharp-format
 msgid ""
 "A user-defined operator `{0}' must have parameters and return values of the "
 "same type in order to be applicable as a short circuit operator"
 msgstr ""
 
-#: mcs/mcs/expression.cs:3934
+#: mcs/mcs/expression.cs:4156
 #, csharp-format
 msgid ""
 "The type `{0}' must have operator `true' and operator `false' defined when `"
 "{1}' is used as a short circuit operator"
 msgstr ""
 
-#: mcs/mcs/expression.cs:4231
+#: mcs/mcs/expression.cs:4466
 #, csharp-format
 msgid ""
 "Type of conditional expression cannot be determined as `{0}' and `{1}' "
 "convert implicitly to each other"
 msgstr ""
 
-#: mcs/mcs/expression.cs:4242
+#: mcs/mcs/expression.cs:4476
 #, csharp-format
 msgid ""
 "Type of conditional expression cannot be determined because there is no "
 "implicit conversion between `{0}' and `{1}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:4703
+#: mcs/mcs/expression.cs:4928
 #, csharp-format
 msgid "Use of unassigned out parameter `{0}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:4743
+#: mcs/mcs/expression.cs:4958
 #, csharp-format
 msgid ""
 "Parameter `{0}' cannot be used inside `{1}' when using `ref' or `out' "
 "modifier"
 msgstr ""
 
-#: mcs/mcs/expression.cs:4957
+#: mcs/mcs/expression.cs:5159
+#, fuzzy, csharp-format
+msgid "Cannot invoke a non-delegate type `{0}'"
+msgstr "No es posible convertir `{0}' a un un tipo que no es un delegado `{1}'"
+
+#: mcs/mcs/expression.cs:5170
 #, csharp-format
 msgid "The member `{0}' cannot be used as method or delegate"
 msgstr ""
 
-#: mcs/mcs/expression.cs:4980
+#: mcs/mcs/expression.cs:5190
 msgid ""
 "Do not directly call your base class Finalize method. It is called "
 "automatically from your destructor"
 msgstr ""
 
-#: mcs/mcs/expression.cs:4982
+#: mcs/mcs/expression.cs:5192
 msgid ""
 "Destructors and object.Finalize cannot be called directly. Consider calling "
 "IDisposable.Dispose if available"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5014
+#: mcs/mcs/expression.cs:5221
 #, csharp-format
 msgid ""
 "The base call to method `{0}' cannot be dynamically dispatched. Consider "
 "casting the dynamic arguments or eliminating the base access"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5086
+#: mcs/mcs/expression.cs:5298
 #, csharp-format
 msgid "`{0}': cannot explicitly call operator or accessor"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5379
+#: mcs/mcs/expression.cs:5625
 #, csharp-format
 msgid "Unsafe type `{0}' cannot be used in an object creation expression"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5398
+#: mcs/mcs/expression.cs:5648
 #, csharp-format
 msgid ""
 "Cannot create an instance of the variable type `{0}' because it does not "
 "have the new() constraint"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5404
+#: mcs/mcs/expression.cs:5654
 #, csharp-format
 msgid ""
 "`{0}': cannot provide arguments when creating an instance of a variable type"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5421
+#: mcs/mcs/expression.cs:5663
 #, csharp-format
 msgid "Cannot create an instance of the static class `{0}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5433
+#: mcs/mcs/expression.cs:5675
 #, csharp-format
 msgid "Cannot create an instance of the abstract class or interface `{0}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5779
+#: mcs/mcs/expression.cs:5971
+msgid ""
+"An implicitly typed local variable declarator cannot use an array initializer"
+msgstr ""
+
+#: mcs/mcs/expression.cs:6064
 msgid "Cannot create an array with a negative size"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5811 mcs/mcs/expression.cs:5819
-#: mcs/mcs/statement.cs:996 mcs/mcs/statement.cs:3068
+#: mcs/mcs/expression.cs:6096 mcs/mcs/expression.cs:6104
+#: mcs/mcs/statement.cs:1009 mcs/mcs/statement.cs:3055
 msgid "A constant value is expected"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5825
+#: mcs/mcs/expression.cs:6110
 #, csharp-format
 msgid "An array initializer of length `{0}' was expected"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5841
+#: mcs/mcs/expression.cs:6126
 msgid ""
 "Array initializers can only be used in a variable or field initializer. Try "
 "using a new expression instead"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5849
+#: mcs/mcs/expression.cs:6134
 msgid "A nested array initializer was expected"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5886
+#: mcs/mcs/expression.cs:6171
 msgid "An expression tree cannot contain a multidimensional array initializer"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5972
-msgid ""
-"An implicitly typed local variable declarator cannot use an array initializer"
-msgstr ""
-
-#: mcs/mcs/expression.cs:5993
+#: mcs/mcs/expression.cs:6273
 msgid ""
 "Can only use array initializer expressions to assign to array types. Try "
 "using a new expression instead"
 msgstr ""
 
-#: mcs/mcs/expression.cs:6394
+#: mcs/mcs/expression.cs:6709
 msgid ""
 "The type of an implicitly typed array cannot be inferred from the "
 "initializer. Try specifying array type explicitly"
 msgstr ""
 
-#: mcs/mcs/expression.cs:6522
+#: mcs/mcs/expression.cs:6846
+msgid ""
+"The `this' object cannot be used before all of its fields are assigned to"
+msgstr ""
+
+#: mcs/mcs/expression.cs:6853
 msgid ""
 "Keyword `this' is not valid in a static property, static method, or static "
 "field initializer"
 msgstr ""
 
-#: mcs/mcs/expression.cs:6525
+#: mcs/mcs/expression.cs:6856
 msgid ""
 "Anonymous methods inside structs cannot access instance members of `this'. "
 "Consider copying `this' to a local variable outside the anonymous method and "
 "using the local instead"
 msgstr ""
 
-#: mcs/mcs/expression.cs:6528
+#: mcs/mcs/expression.cs:6859
 msgid "Keyword `this' is not available in the current context"
 msgstr ""
 
-#: mcs/mcs/expression.cs:6592
-msgid ""
-"The `this' object cannot be used before all of its fields are assigned to"
-msgstr ""
-
-#: mcs/mcs/expression.cs:6622
+#: mcs/mcs/expression.cs:6946
 msgid "Cannot take the address of `this' because it is read-only"
 msgstr ""
 
-#: mcs/mcs/expression.cs:6624
+#: mcs/mcs/expression.cs:6948
 msgid "Cannot pass `this' as a ref or out argument because it is read-only"
 msgstr ""
 
-#: mcs/mcs/expression.cs:6626
+#: mcs/mcs/expression.cs:6950
 msgid "Cannot assign to `this' because it is read-only"
 msgstr ""
 
-#: mcs/mcs/expression.cs:6679
+#: mcs/mcs/expression.cs:7003
 msgid "The __arglist construct is valid only within a variable argument method"
 msgstr ""
 
-#: mcs/mcs/expression.cs:6729
+#: mcs/mcs/expression.cs:7053
 msgid "An expression tree cannot contain a method with variable arguments"
 msgstr ""
 
-#: mcs/mcs/expression.cs:6805
+#: mcs/mcs/expression.cs:7137
 msgid ""
 "System.Void cannot be used from C#. Use typeof (void) to get the void type "
 "object"
 msgstr ""
 
-#: mcs/mcs/expression.cs:6810
+#: mcs/mcs/expression.cs:7140
 msgid "The typeof operator cannot be used on the dynamic type"
 msgstr ""
 
-#: mcs/mcs/expression.cs:6879
+#: mcs/mcs/expression.cs:7191
 #, csharp-format
 msgid "`{0}': an attribute argument cannot use type parameters"
 msgstr ""
 
-#: mcs/mcs/expression.cs:7130
+#: mcs/mcs/expression.cs:7445
 #, csharp-format
 msgid ""
 "`{0}' does not have a predefined size, therefore sizeof can only be used in "
@@ -2033,44 +2453,44 @@ msgid ""
 "SizeOf)"
 msgstr ""
 
-#: mcs/mcs/expression.cs:7186
+#: mcs/mcs/expression.cs:7501
 #, csharp-format
 msgid "Alias `{0}' not found"
 msgstr ""
 
-#: mcs/mcs/expression.cs:7197
+#: mcs/mcs/expression.cs:7512
 #, csharp-format
 msgid ""
 "Alias `{0}' cannot be used with '::' since it denotes a type. Consider "
 "replacing '::' with '.'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:7213
+#: mcs/mcs/expression.cs:7528
 #, csharp-format
 msgid ""
 "A namespace alias qualifier `{0}' did not resolve to a namespace or a type"
 msgstr ""
 
-#: mcs/mcs/expression.cs:7370
+#: mcs/mcs/expression.cs:7685
 msgid "Cannot perform member binding on `null' value"
 msgstr ""
 
-#: mcs/mcs/expression.cs:7437
+#: mcs/mcs/expression.cs:7752
 #, csharp-format
 msgid "`{0}': cannot reference a type through an expression; try `{1}' instead"
 msgstr ""
 
-#: mcs/mcs/expression.cs:7513
+#: mcs/mcs/expression.cs:7828
 #, csharp-format
 msgid "A nested type cannot be specified through a type parameter `{0}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:7560
+#: mcs/mcs/expression.cs:7887
 #, csharp-format
 msgid "The nested type `{0}' does not exist in the type `{1}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:7568
+#: mcs/mcs/expression.cs:7896
 #, csharp-format
 msgid ""
 "Type `{0}' does not contain a definition for `{1}' and no extension method `"
@@ -2078,309 +2498,376 @@ msgid ""
 "assembly reference?)"
 msgstr ""
 
-#: mcs/mcs/expression.cs:7748
+#: mcs/mcs/expression.cs:8076
 #, csharp-format
 msgid "Cannot apply indexing with [] to an expression of type `{0}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:7764
+#: mcs/mcs/expression.cs:8092
 msgid "A pointer must be indexed by only one value"
 msgstr ""
 
-#: mcs/mcs/expression.cs:7813
+#: mcs/mcs/expression.cs:8141
 msgid "An element access expression cannot use named argument"
 msgstr ""
 
-#: mcs/mcs/expression.cs:7869
+#: mcs/mcs/expression.cs:8197
 #, csharp-format
 msgid "Wrong number of indexes `{0}' inside [], expected `{1}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:8177
+#: mcs/mcs/expression.cs:8533
 msgid ""
 "The indexer base access cannot be dynamically dispatched. Consider casting "
 "the dynamic arguments or eliminating the base access"
 msgstr ""
 
-#: mcs/mcs/expression.cs:8249
+#: mcs/mcs/expression.cs:8614
 msgid "An expression tree may not contain a base access"
 msgstr ""
 
-#: mcs/mcs/expression.cs:8266
+#: mcs/mcs/expression.cs:8631
 #, fuzzy
 msgid "Keyword `base' is not available in a static method"
 msgstr ""
 "La palabra reservada `new' no está permitida en los elementos de un espacio "
 "de nombres"
 
-#: mcs/mcs/expression.cs:8268
+#: mcs/mcs/expression.cs:8633
 #, fuzzy
 msgid "Keyword `base' is not available in the current context"
 msgstr ""
 "La palabra reservada `new' no está permitida en los elementos de un espacio "
 "de nombres"
 
-#: mcs/mcs/expression.cs:8299
+#: mcs/mcs/expression.cs:8664
 msgid ""
 "A property, indexer or dynamic member access may not be passed as `ref' or "
 "`out' parameter"
 msgstr ""
 
-#: mcs/mcs/expression.cs:8572
+#: mcs/mcs/expression.cs:8941
 #, csharp-format
 msgid "Array elements cannot be of type `{0}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:8575
+#: mcs/mcs/expression.cs:8944
 #, csharp-format
 msgid "Array elements cannot be of static type `{0}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:8725
+#: mcs/mcs/expression.cs:9094
 msgid "Cannot use a negative size with stackalloc"
 msgstr ""
 
-#: mcs/mcs/expression.cs:8729
+#: mcs/mcs/expression.cs:9098
 msgid "Cannot use stackalloc in finally or catch"
 msgstr ""
 
-#: mcs/mcs/expression.cs:8834
+#: mcs/mcs/expression.cs:9203
 #, csharp-format
 msgid ""
 "Member `{0}' cannot be initialized. An object initializer may only be used "
 "for fields, or properties"
 msgstr ""
 
-#: mcs/mcs/expression.cs:8843
+#: mcs/mcs/expression.cs:9212
 #, csharp-format
 msgid ""
 "Static field or property `{0}' cannot be assigned in an object initializer"
 msgstr ""
 
-#: mcs/mcs/expression.cs:9016
+#: mcs/mcs/expression.cs:9387
 #, csharp-format
 msgid ""
 "A field or property `{0}' cannot be initialized with a collection object "
 "initializer because type `{1}' does not implement `{2}' interface"
 msgstr ""
 
-#: mcs/mcs/expression.cs:9027
+#: mcs/mcs/expression.cs:9398
 #, csharp-format
 msgid "Inconsistent `{0}' member declaration"
 msgstr ""
 
-#: mcs/mcs/expression.cs:9035
+#: mcs/mcs/expression.cs:9406
 #, csharp-format
 msgid ""
 "An object initializer includes more than one member `{0}' initialization"
 msgstr ""
 
-#: mcs/mcs/expression.cs:9053
+#: mcs/mcs/expression.cs:9424
 #, csharp-format
 msgid "Cannot initialize object of type `{0}' with a collection initializer"
 msgstr ""
 
-#: mcs/mcs/expression.cs:9296
+#: mcs/mcs/expression.cs:9661
 #, fuzzy
 msgid "Anonymous types cannot be used in this expression"
 msgstr ""
 "Los métodos anónimos no pueden ser convertidos a árboles de expresiones"
 
-#: mcs/mcs/expression.cs:9384
+#: mcs/mcs/expression.cs:9749
 #, csharp-format
 msgid "An anonymous type property `{0}' cannot be initialized with `{1}'"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:310
+#: mcs/mcs/field.cs:70
+msgid ""
+"The modifier 'abstract' is not valid on fields. Try using a property instead"
+msgstr ""
+
+#: mcs/mcs/field.cs:121
+msgid ""
+"The FieldOffset attribute can only be placed on members of types marked with "
+"the StructLayout(LayoutKind.Explicit)"
+msgstr ""
+
+#: mcs/mcs/field.cs:126
+msgid "The FieldOffset attribute is not allowed on static or const fields"
+msgstr ""
+
+#: mcs/mcs/field.cs:132
+msgid ""
+"Do not use 'System.Runtime.CompilerServices.FixedBuffer' attribute. Use the "
+"'fixed' field modifier instead"
+msgstr ""
+
+#: mcs/mcs/field.cs:237
+#, csharp-format
+msgid ""
+"`{0}': Instance field types marked with StructLayout(LayoutKind.Explicit) "
+"must have a FieldOffset attribute"
+msgstr ""
+
+#: mcs/mcs/field.cs:246
+#, fuzzy, csharp-format
+msgid "`{0}': cannot declare variables of static types"
+msgstr "`{0}': no es posible declarar indexadores en una clase estática"
+
+#: mcs/mcs/field.cs:388
+#, csharp-format
+msgid ""
+"`{0}': Fixed size buffers type must be one of the following: bool, byte, "
+"short, int, long, char, sbyte, ushort, uint, ulong, float or double"
+msgstr ""
+
+#: mcs/mcs/field.cs:424
+#, csharp-format
+msgid "`{0}': Fixed size buffer fields may only be members of structs"
+msgstr ""
+
+#: mcs/mcs/field.cs:439
+#, csharp-format
+msgid "`{0}': Fixed size buffers must have a length greater than zero"
+msgstr ""
+
+#: mcs/mcs/field.cs:446
+#, csharp-format
+msgid ""
+"Fixed size buffer `{0}' of length `{1}' and type `{2}' exceeded 2^31 limit"
+msgstr ""
+
+#: mcs/mcs/field.cs:628
+#, fuzzy, csharp-format
+msgid "`{0}': A volatile field cannot be of the type `{1}'"
+msgstr "`{0}': no es posible derivad de una clase sellada (`{1}')"
+
+#: mcs/mcs/field.cs:633
+#, fuzzy, csharp-format
+msgid "`{0}': A field cannot be both volatile and readonly"
+msgstr "`{0}': una clase no puede estar sellada y ser estática al mismo tiempo"
+
+#: mcs/mcs/flowanalysis.cs:307
 msgid "Control cannot fall through from one case label to another"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:537
+#: mcs/mcs/flowanalysis.cs:536
 #, csharp-format
 msgid ""
 "The label `{0}:' could not be found within the scope of the goto statement"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:665
+#: mcs/mcs/flowanalysis.cs:664
 msgid ""
 "A throw statement with no arguments is not allowed outside of a catch clause"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:676 mcs/mcs/flowanalysis.cs:682
+#: mcs/mcs/flowanalysis.cs:675 mcs/mcs/flowanalysis.cs:681
 msgid "No enclosing loop out of which to break or continue"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:710
+#: mcs/mcs/flowanalysis.cs:709
 msgid "Control cannot leave the body of an anonymous method"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:751
+#: mcs/mcs/flowanalysis.cs:750
 msgid "Cannot yield a value in the body of a try block with a catch clause"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:753
+#: mcs/mcs/flowanalysis.cs:752
 msgid "Cannot yield a value in the body of a catch clause"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:905
+#: mcs/mcs/flowanalysis.cs:904
 msgid ""
 "A throw statement with no arguments is not allowed inside of a finally "
 "clause nested inside of the innermost catch clause"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:917 mcs/mcs/iterators.cs:102
+#: mcs/mcs/flowanalysis.cs:916 mcs/mcs/iterators.cs:102
 msgid "Cannot yield in the body of a finally clause"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:928 mcs/mcs/flowanalysis.cs:944
-#: mcs/mcs/flowanalysis.cs:980 mcs/mcs/statement.cs:692
+#: mcs/mcs/flowanalysis.cs:927 mcs/mcs/flowanalysis.cs:943
+#: mcs/mcs/flowanalysis.cs:979 mcs/mcs/statement.cs:694
 msgid "Control cannot leave the body of a finally clause"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:1159
+#: mcs/mcs/flowanalysis.cs:1130
 #, csharp-format
 msgid ""
 "An automatically implemented property `{0}' must be fully assigned before "
-"control leaves the constructor. Consider calling default contructor"
+"control leaves the constructor. Consider calling the default struct "
+"contructor from a constructor initializer"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:1163
+#: mcs/mcs/flowanalysis.cs:1134
 #, csharp-format
 msgid ""
 "Field `{0}' must be fully assigned before control leaves the constructor"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:1418
+#: mcs/mcs/flowanalysis.cs:1376
 msgid "Use of unassigned local variable `"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:1488
+#: mcs/mcs/flowanalysis.cs:1446
 msgid "Use of possibly unassigned field `"
 msgstr ""
 
-#: mcs/mcs/generic.cs:95
+#: mcs/mcs/generic.cs:102 mcs/mcs/generic.cs:120
 #, csharp-format
 msgid "Type parameter `{0}' inherits conflicting constraints `{1}' and `{2}'"
 msgstr ""
 
-#: mcs/mcs/generic.cs:152
+#: mcs/mcs/generic.cs:173
 #, csharp-format
 msgid "A constraint cannot be the dynamic type `{0}'"
 msgstr ""
 
-#: mcs/mcs/generic.cs:161
+#: mcs/mcs/generic.cs:182
 #, csharp-format
 msgid ""
 "Inconsistent accessibility: constraint type `{0}' is less accessible than `"
 "{1}'"
 msgstr ""
 
-#: mcs/mcs/generic.cs:168 mcs/mcs/generic.cs:182
+#: mcs/mcs/generic.cs:189 mcs/mcs/generic.cs:203
 #, fuzzy, csharp-format
 msgid "Duplicate constraint `{0}' for type parameter `{1}'"
 msgstr ""
 "Las declaraciones parciales de `{0}' tienen limitaciones inconsistentes para "
 "el tipo parametrizado `{1}'"
 
-#: mcs/mcs/generic.cs:197
+#: mcs/mcs/generic.cs:218
 #, csharp-format
 msgid "Circular constraint dependency involving `{0}' and `{1}'"
 msgstr ""
 
-#: mcs/mcs/generic.cs:228
+#: mcs/mcs/generic.cs:249
 #, csharp-format
 msgid ""
 "Type parameter `{0}' has the `struct' constraint, so it cannot be used as a "
 "constraint for `{1}'"
 msgstr ""
 
-#: mcs/mcs/generic.cs:239
+#: mcs/mcs/generic.cs:260
 #, csharp-format
 msgid ""
 "The class type constraint `{0}' must be listed before any other constraints. "
 "Consider moving type constraint to the beginning of the constraint list"
 msgstr ""
 
-#: mcs/mcs/generic.cs:245
+#: mcs/mcs/generic.cs:266
 #, csharp-format
 msgid ""
 "`{0}': cannot specify both a constraint class and the `class' or `struct' "
 "constraint"
 msgstr ""
 
-#: mcs/mcs/generic.cs:250
+#: mcs/mcs/generic.cs:271
 msgid "A constraint cannot be the dynamic type"
 msgstr ""
 
-#: mcs/mcs/generic.cs:256
+#: mcs/mcs/generic.cs:277
 #, csharp-format
 msgid ""
 "`{0}' is not a valid constraint. A constraint must be an interface, a non-"
 "sealed class or a type parameter"
 msgstr ""
 
-#: mcs/mcs/generic.cs:263
+#: mcs/mcs/generic.cs:284
 #, csharp-format
 msgid ""
 "`{0}' is not a valid constraint. Static classes cannot be used as constraints"
 msgstr ""
 
-#: mcs/mcs/generic.cs:269
+#: mcs/mcs/generic.cs:290
 #, csharp-format
 msgid "A constraint cannot be special class `{0}'"
 msgstr ""
 
-#: mcs/mcs/generic.cs:511
+#: mcs/mcs/generic.cs:538
 #, csharp-format
 msgid "The {2} type parameter `{0}' must be {3} valid on `{1}{4}'"
 msgstr ""
 
-#: mcs/mcs/generic.cs:1639
+#: mcs/mcs/generic.cs:1738
 #, csharp-format
 msgid "`{0}': static classes cannot be used as generic arguments"
 msgstr ""
 
-#: mcs/mcs/generic.cs:1646
+#: mcs/mcs/generic.cs:1745
 #, csharp-format
 msgid "The type `{0}' may not be used as a type argument"
 msgstr ""
 
-#: mcs/mcs/generic.cs:1885
+#: mcs/mcs/generic.cs:2000
 #, csharp-format
 msgid ""
 "The type `{0}' must be a reference type in order to use it as type parameter "
 "`{1}' in the generic type or method `{2}'"
 msgstr ""
 
-#: mcs/mcs/generic.cs:1895
+#: mcs/mcs/generic.cs:2010
 #, csharp-format
 msgid ""
 "The type `{0}' must be a non-nullable value type in order to use it as type "
 "parameter `{1}' in the generic type or method `{2}'"
 msgstr ""
 
-#: mcs/mcs/generic.cs:1925
+#: mcs/mcs/generic.cs:2049
 #, csharp-format
 msgid ""
 "The type `{0}' cannot be used as type parameter `{1}' in the generic type or "
 "method `{2}'. The nullable type `{0}' never satisfies interface constraint"
 msgstr ""
 
-#: mcs/mcs/generic.cs:1950
+#: mcs/mcs/generic.cs:2101
 #, csharp-format
 msgid ""
 "The type `{0}' must have a public parameterless constructor in order to use "
 "it as parameter `{1}' in the generic type or method `{2}'"
 msgstr ""
 
-#: mcs/mcs/generic.cs:1968
+#: mcs/mcs/generic.cs:2153
 #, csharp-format
 msgid ""
 "The type `{0}' cannot be used as type parameter `{1}' in the generic type or "
 "method `{2}'. There is no boxing conversion from `{0}' to `{3}'"
 msgstr ""
 
-#: mcs/mcs/generic.cs:1971
+#: mcs/mcs/generic.cs:2157
 #, csharp-format
 msgid ""
 "The type `{0}' cannot be used as type parameter `{1}' in the generic type or "
@@ -2388,41 +2875,48 @@ msgid ""
 "{3}'"
 msgstr ""
 
-#: mcs/mcs/generic.cs:1974
+#: mcs/mcs/generic.cs:2161
 #, csharp-format
 msgid ""
 "The type `{0}' cannot be used as type parameter `{1}' in the generic type or "
 "method `{2}'. There is no implicit reference conversion from `{0}' to `{3}'"
 msgstr ""
 
+#: mcs/mcs/import.cs:1711
+#, csharp-format
+msgid ""
+"The type `{0}' is defined in an assembly that is not referenced. Consider "
+"adding a reference to assembly `{1}'"
+msgstr ""
+
 #: mcs/mcs/iterators.cs:44
 msgid "The yield statement cannot be used inside anonymous method blocks"
 msgstr ""
 
-#: mcs/mcs/iterators.cs:869
+#: mcs/mcs/iterators.cs:856
 #, csharp-format
 msgid ""
 "The body of `{0}' cannot be an iterator block because `{1}' is not an "
 "iterator interface type"
 msgstr ""
 
-#: mcs/mcs/iterators.cs:882
+#: mcs/mcs/iterators.cs:869
 msgid "Iterators cannot have ref or out parameters"
 msgstr ""
 
-#: mcs/mcs/iterators.cs:888
+#: mcs/mcs/iterators.cs:875
 msgid "__arglist is not allowed in parameter list of iterators"
 msgstr ""
 
-#: mcs/mcs/iterators.cs:894
+#: mcs/mcs/iterators.cs:881
 msgid "Iterators cannot have unsafe parameters or yield types"
 msgstr ""
 
-#: mcs/mcs/iterators.cs:901 mcs/mcs/statement.cs:4220
+#: mcs/mcs/iterators.cs:888 mcs/mcs/statement.cs:4324
 msgid "Unsafe code may not appear in iterators"
 msgstr ""
 
-#: mcs/mcs/linq.cs:69
+#: mcs/mcs/linq.cs:68
 #, csharp-format
 msgid ""
 "An implementation of `{0}' query expression pattern could not be found. Are "
@@ -2430,27 +2924,27 @@ msgid ""
 "reference?"
 msgstr ""
 
-#: mcs/mcs/linq.cs:94
+#: mcs/mcs/linq.cs:93
 #, csharp-format
 msgid ""
 "Ambiguous implementation of the query pattern `{0}' for source type `{1}'"
 msgstr ""
 
-#: mcs/mcs/linq.cs:125
+#: mcs/mcs/linq.cs:124
 #, csharp-format
 msgid ""
 "An implementation of `{0}' query expression pattern for source type `{1}' "
 "could not be found"
 msgstr ""
 
-#: mcs/mcs/linq.cs:133
+#: mcs/mcs/linq.cs:132
 #, csharp-format
 msgid ""
 "An expression type is incorrect in a subsequent `from' clause in a query "
 "expression with source type `{0}'"
 msgstr ""
 
-#: mcs/mcs/linq.cs:137
+#: mcs/mcs/linq.cs:136
 #, csharp-format
 msgid ""
 "An expression type in `{0}' clause is incorrect. Type inference failed in "
@@ -2462,177 +2956,472 @@ msgstr ""
 msgid "A range variable `{0}' cannot be initialized with `{1}'"
 msgstr ""
 
-#: mcs/mcs/linq.cs:708
+#: mcs/mcs/linq.cs:750
 #, csharp-format
 msgid "A range variable `{0}' conflicts with a previous declaration of `{0}'"
 msgstr ""
 
-#: mcs/mcs/linq.cs:714
+#: mcs/mcs/linq.cs:757
 #, csharp-format
 msgid "A range variable `{0}' has already been declared in this scope"
 msgstr ""
 
-#: mcs/mcs/linq.cs:720
+#: mcs/mcs/linq.cs:764
 #, csharp-format
 msgid "A range variable `{0}' conflicts with a method type parameter"
 msgstr ""
 
-#: mcs/mcs/literal.cs:47
+#: mcs/mcs/linq.cs:796
+#, csharp-format
+msgid ""
+"A range variable `{0}' cannot be assigned to. Consider using `let' clause to "
+"store the value"
+msgstr ""
+
+#: mcs/mcs/literal.cs:49
 #, csharp-format
 msgid ""
 "Cannot convert null to the type parameter `{0}' because it could be a value "
 "type. Consider using `default ({0})' instead"
 msgstr ""
 
-#: mcs/mcs/literal.cs:53
+#: mcs/mcs/literal.cs:55
 #, csharp-format
 msgid "Cannot convert null to `{0}' because it is a value type"
 msgstr ""
 
-#: mcs/mcs/literal.cs:202
+#: mcs/mcs/literal.cs:204
 #, csharp-format
 msgid ""
 "Literal of type double cannot be implicitly converted to type `{0}'. Add "
 "suffix `{1}' to create a literal of this type"
 msgstr ""
 
-#: mcs/mcs/modifiers.cs:260
+#: mcs/mcs/membercache.cs:1241
+msgid ""
+"A partial method declaration and partial method implementation cannot differ "
+"on use of `params' modifier"
+msgstr ""
+
+#: mcs/mcs/membercache.cs:1244
+msgid ""
+"A partial method declaration and partial method implementation must be both "
+"an extension method or neither"
+msgstr ""
+
+#: mcs/mcs/membercache.cs:1248
+#, csharp-format
+msgid ""
+"Overloaded contructor `{0}' cannot differ on use of parameter modifiers only"
+msgstr ""
+
+#: mcs/mcs/membercache.cs:1252
+#, csharp-format
+msgid ""
+"Overloaded method `{0}' cannot differ on use of parameter modifiers only"
+msgstr ""
+
+#: mcs/mcs/membercache.cs:1284
+msgid ""
+"A partial method declaration and partial method implementation must be both "
+"`static' or neither"
+msgstr ""
+
+#: mcs/mcs/membercache.cs:1289
+msgid ""
+"A partial method declaration and partial method implementation must be both "
+"`unsafe' or neither"
+msgstr ""
+
+#: mcs/mcs/membercache.cs:1295
+#, csharp-format
+msgid "A partial method `{0}' declaration is already defined"
+msgstr ""
+
+#: mcs/mcs/membercache.cs:1299
+#, csharp-format
+msgid "A partial method `{0}' implementation is already defined"
+msgstr ""
+
+#: mcs/mcs/membercache.cs:1310 mcs/mcs/property.cs:81
+#, csharp-format
+msgid "A member `{0}' is already reserved"
+msgstr ""
+
+#: mcs/mcs/membercache.cs:1321
+#, csharp-format
+msgid "Duplicate user-defined conversion in type `{0}'"
+msgstr ""
+
+#: mcs/mcs/method.cs:495
+#, fuzzy
+msgid ""
+"The DllImport attribute must be specified on a method marked `static' and "
+"`extern'"
+msgstr ""
+"El atributo Guid debe de ser especificado junto con el atributo ComImport"
+
+#: mcs/mcs/method.cs:583
 #, fuzzy, csharp-format
-msgid "The modifier `{0}' is not valid for this item"
-msgstr "El tipo predefinido `{0}.{1}' no está definido o no ha sido importado"
+msgid "`{0}': A partial method parameters cannot use `out' modifier"
+msgstr "`{0}': los miembros virtuales o abstractos no pueden ser privados"
+
+#: mcs/mcs/method.cs:642
+#, csharp-format
+msgid ""
+"Conditional not valid on `{0}' because it is a constructor, destructor, "
+"operator or explicit interface implementation"
+msgstr ""
+
+#: mcs/mcs/method.cs:860
+#, csharp-format
+msgid "Program `{0}' has more than one entry point defined: `{1}'"
+msgstr ""
+
+#: mcs/mcs/method.cs:904
+#, fuzzy, csharp-format
+msgid "Conditional not valid on `{0}' because it is an override method"
+msgstr "No se puede derivar de `{0}' ya que es un tipo parametrizado"
+
+#: mcs/mcs/method.cs:909
+#, csharp-format
+msgid "Conditional not valid on `{0}' because its return type is not void"
+msgstr ""
+
+#: mcs/mcs/method.cs:914
+msgid "Conditional not valid on interface members"
+msgstr ""
+
+#: mcs/mcs/method.cs:920
+#, fuzzy, csharp-format
+msgid "Conditional member `{0}' cannot implement interface member `{1}'"
+msgstr "`{0}': el tipo contenedor no implementa la interface `{1}'"
+
+#: mcs/mcs/method.cs:927
+#, csharp-format
+msgid "Conditional method `{0}' cannot have an out parameter"
+msgstr ""
+
+#: mcs/mcs/method.cs:1050
+#, csharp-format
+msgid ""
+"The constraints for type parameter `{0}' of method `{1}' must match the "
+"constraints for type parameter `{2}' of interface method `{3}'. Consider "
+"using an explicit interface implementation instead"
+msgstr ""
+
+#: mcs/mcs/method.cs:1104
+#, fuzzy, csharp-format
+msgid "`{0}': Extension methods cannot be defined in a nested class"
+msgstr "`{0}' Los métodos de extensión deben de ser estáticos"
+
+#: mcs/mcs/method.cs:1110
+#, csharp-format
+msgid ""
+"`{0}': Extension methods cannot be declared without a reference to System."
+"Core.dll assembly. Add the assembly reference or remove `this' modifer from "
+"the first parameter"
+msgstr ""
+
+#: mcs/mcs/method.cs:1119
+#, fuzzy, csharp-format
+msgid "`{0}': Extension methods must be defined in a non-generic static class"
+msgstr "`{0}' Los métodos de extensión deben de ser estáticos"
+
+#: mcs/mcs/method.cs:1172
+#, csharp-format
+msgid ""
+"A partial method `{0}' implementation is missing a partial method declaration"
+msgstr ""
+
+#: mcs/mcs/method.cs:1219
+#, csharp-format
+msgid "Method or delegate cannot return type `{0}'"
+msgstr ""
+
+#: mcs/mcs/method.cs:1294
+msgid ""
+"The constructor call cannot be dynamically dispatched within constructor "
+"initializer"
+msgstr ""
+
+#: mcs/mcs/method.cs:1308
+#, fuzzy, csharp-format
+msgid "`{0}': Struct constructors cannot call base constructors"
+msgstr ""
+"`{0}': las clases estáticas no pueden tener constructores de instancias"
+
+#: mcs/mcs/method.cs:1327
+#, csharp-format
+msgid "Constructor `{0}' cannot call itself"
+msgstr ""
 
-#: mcs/mcs/namespace.cs:57
+#: mcs/mcs/method.cs:1446
 #, csharp-format
-msgid "An assembly `{0}' is used without being referenced"
+msgid "`{0}': The static constructor must be parameterless"
 msgstr ""
 
-#: mcs/mcs/namespace.cs:148
+#: mcs/mcs/method.cs:1464
+msgid "Structs cannot contain explicit parameterless constructors"
+msgstr ""
+
+#: mcs/mcs/method.cs:1520
+#, fuzzy, csharp-format
+msgid ""
+"`{0}': A class with the ComImport attribute cannot have a user-defined "
+"constructor"
+msgstr ""
+"`{0}': las clases estáticas no pueden tener constructores de instancias"
+
+#: mcs/mcs/method.cs:1763
+#, fuzzy, csharp-format
+msgid "`{0}' is an accessor not found in interface member `{1}{2}'"
+msgstr "`{0}' esconde el miembro abstracto heredado `{1}'"
+
+#: mcs/mcs/method.cs:1769
+#, fuzzy, csharp-format
+msgid ""
+"`{0}.{1}' in explicit interface declaration is not a member of interface"
+msgstr "El tipo `{0} en la lista de interfaces no es una interface"
+
+#: mcs/mcs/method.cs:1776
+#, csharp-format
+msgid ""
+"`{0}' explicit method implementation cannot implement `{1}' because it is an "
+"accessor"
+msgstr ""
+
+#: mcs/mcs/method.cs:1786
+#, fuzzy, csharp-format
+msgid "Method `{0}' cannot implement interface accessor `{1}'"
+msgstr "`{0}': el tipo contenedor no implementa la interface `{1}'"
+
+#: mcs/mcs/method.cs:1792
+#, csharp-format
+msgid ""
+"Accessor `{0}' cannot implement interface member `{1}' for type `{2}'. Use "
+"an explicit interface implementation"
+msgstr ""
+
+#: mcs/mcs/method.cs:1798
+#, fuzzy, csharp-format
+msgid ""
+"Accessor `{0}' must be declared public to implement interface member `{1}'"
+msgstr "`{0}': el tipo contenedor no implementa la interface `{1}'"
+
+#: mcs/mcs/method.cs:1822
+#, fuzzy, csharp-format
+msgid ""
+"`{0}': the explicit interface implementation cannot introduce the params "
+"modifier"
+msgstr ""
+"`{0}': las declaraciones explícitas de interfaces solamente pueden ser "
+"declaradas en una clase o estructura"
+
+#: mcs/mcs/method.cs:2140
+#, csharp-format
+msgid ""
+"Attribute `{0}' is not valid on property or event accessors. It is valid on `"
+"{1}' declarations only"
+msgstr ""
+
+#: mcs/mcs/method.cs:2351
+#, csharp-format
+msgid "User-defined operator `{0}' must be declared static and public"
+msgstr ""
+
+#: mcs/mcs/method.cs:2390
+msgid ""
+"User-defined operator cannot take an object of the enclosing type and "
+"convert to an object of the enclosing type"
+msgstr ""
+
+#: mcs/mcs/method.cs:2401
+msgid "User-defined conversion must convert to or from the enclosing type"
+msgstr ""
+
+#: mcs/mcs/method.cs:2407
+#, fuzzy, csharp-format
+msgid ""
+"User-defined conversion `{0}' cannot convert to or from the dynamic type"
+msgstr "`{0}' no es posible derivad de la clase especial `{1}'"
+
+#: mcs/mcs/method.cs:2414
+#, csharp-format
+msgid ""
+"User-defined conversion `{0}' cannot convert to or from an interface type"
+msgstr ""
+
+#: mcs/mcs/method.cs:2421
+#, csharp-format
+msgid "User-defined conversion `{0}' cannot convert to or from a base class"
+msgstr ""
+
+#: mcs/mcs/method.cs:2427
+#, csharp-format
+msgid "User-defined conversion `{0}' cannot convert to or from a derived class"
+msgstr ""
+
+#: mcs/mcs/method.cs:2434
+msgid ""
+"Overloaded shift operator must have the type of the first operand be the "
+"containing type, and the type of the second operand must be int"
+msgstr ""
+
+#: mcs/mcs/method.cs:2443
+msgid ""
+"The return type for ++ or -- operator must be the containing type or derived "
+"from the containing type"
+msgstr ""
+
+#: mcs/mcs/method.cs:2448
+msgid "The parameter type for ++ or -- operator must be the containing type"
+msgstr ""
+
+#: mcs/mcs/method.cs:2455
+msgid "The parameter type of a unary operator must be the containing type"
+msgstr ""
+
+#: mcs/mcs/method.cs:2463
+msgid "The return type of operator True or False must be bool"
+msgstr ""
+
+#: mcs/mcs/method.cs:2478
+msgid "One of the parameters of a binary operator must be the containing type"
+msgstr ""
+
+#: mcs/mcs/modifiers.cs:275
+#, fuzzy, csharp-format
+msgid "The modifier `{0}' is not valid for this item"
+msgstr "El tipo predefinido `{0}.{1}' no está definido o no ha sido importado"
+
+#: mcs/mcs/namespace.cs:70
 #, csharp-format
 msgid ""
 "The type or namespace name `{0}' could not be found in the global namespace "
 "(are you missing an assembly reference?)"
 msgstr ""
 
-#: mcs/mcs/namespace.cs:264
+#: mcs/mcs/namespace.cs:177
 #, csharp-format
 msgid ""
 "The type or namespace name `{0}' does not exist in the namespace `{1}'. Are "
 "you missing an assembly reference?"
 msgstr ""
 
-#: mcs/mcs/namespace.cs:343
+#: mcs/mcs/namespace.cs:256
 #, csharp-format
 msgid "The imported type `{0}' is defined multiple times"
 msgstr ""
 
-#: mcs/mcs/namespace.cs:669
+#: mcs/mcs/namespace.cs:583
 #, csharp-format
 msgid ""
 "`{0}' is a type not a namespace. A using namespace directive can only be "
 "applied to namespaces"
 msgstr ""
 
-#: mcs/mcs/namespace.cs:696
+#: mcs/mcs/namespace.cs:610
 #, csharp-format
 msgid "The extern alias `{0}' was not specified in -reference option"
 msgstr ""
 
-#: mcs/mcs/namespace.cs:906 mcs/mcs/namespace.cs:928
+#: mcs/mcs/namespace.cs:820 mcs/mcs/namespace.cs:842
 msgid ""
 "A using clause must precede all other namespace elements except extern alias "
 "declarations"
 msgstr ""
 
-#: mcs/mcs/namespace.cs:952
+#: mcs/mcs/namespace.cs:866
 msgid "An extern alias declaration must precede all other elements"
 msgstr ""
 
-#: mcs/mcs/namespace.cs:970
+#: mcs/mcs/namespace.cs:884
 #, csharp-format
 msgid "The using alias `{0}' appeared previously in this namespace"
 msgstr ""
 
-#: mcs/mcs/namespace.cs:1091
+#: mcs/mcs/namespace.cs:1005
 #, csharp-format
 msgid "Namespace `{0}' contains a definition with same name as alias `{1}'"
 msgstr ""
 
-#: mcs/mcs/namespace.cs:1145
+#: mcs/mcs/namespace.cs:1059
 #, csharp-format
 msgid "`{0}' is an ambiguous reference between `{1}' and `{2}'"
 msgstr ""
 
-#: mcs/mcs/namespace.cs:1213
-msgid "You cannot redefine the global extern alias"
+#: mcs/mcs/namespace.cs:1127
+msgid "The global extern alias cannot be redefined"
 msgstr ""
 
-#: mcs/mcs/namespace.cs:1218
+#: mcs/mcs/namespace.cs:1132
 #, csharp-format
 msgid ""
 "The type or namespace name `{0}' could not be found. Are you missing a using "
 "directive or an assembly reference?"
 msgstr ""
 
-#: mcs/mcs/nullable.cs:922
+#: mcs/mcs/nullable.cs:1036
 msgid ""
 "An expression tree cannot contain a coalescing operator with null left side"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:176
+#: mcs/mcs/parameter.cs:156
 msgid "The params parameter must be a single dimensional array"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:287
+#: mcs/mcs/parameter.cs:288
 msgid "An out parameter cannot have the `In' attribute"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:292
+#: mcs/mcs/parameter.cs:293
 msgid ""
 "Do not use `System.ParamArrayAttribute'. Use the `params' keyword instead"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:299
+#: mcs/mcs/parameter.cs:300
 msgid ""
 "Cannot specify only `Out' attribute on a ref parameter. Use both `In' and "
 "`Out' attributes or neither"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:309
+#: mcs/mcs/parameter.cs:310
 #, fuzzy, csharp-format
 msgid "Cannot specify `{0}' attribute on optional parameter `{1}'"
 msgstr ""
 "No puede especificar el atributo `DefaultMember' en un tipo que contiene un "
 "indexador"
 
-#: mcs/mcs/parameter.cs:319
+#: mcs/mcs/parameter.cs:320
 #, csharp-format
 msgid ""
 "Argument of type `{0}' is not applicable for the DefaultParameterValue "
 "attribute"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:322
+#: mcs/mcs/parameter.cs:323
 #, csharp-format
 msgid ""
 "The DefaultParameterValue attribute is not applicable on parameters of type `"
 "{0}'"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:333
+#: mcs/mcs/parameter.cs:334
 msgid "The type of the default value should match the type of the parameter"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:375
+#: mcs/mcs/parameter.cs:376
 #, csharp-format
 msgid "Method or delegate parameter cannot be of type `{0}'"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:385
+#: mcs/mcs/parameter.cs:386
 #, csharp-format
 msgid "`{0}': static types cannot be used as parameters"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:391
+#: mcs/mcs/parameter.cs:392
 #, csharp-format
 msgid "The extension method cannot be of type `{0}'"
 msgstr ""
@@ -2640,24 +3429,24 @@ msgstr ""
 #: mcs/mcs/parameter.cs:448
 #, csharp-format
 msgid ""
-"The expression being assigned to nullable optional parameter `{0}' must be "
-"default value"
+"The expression being assigned to optional parameter `{0}' must be a constant "
+"or default value"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:452
+#: mcs/mcs/parameter.cs:464
 #, csharp-format
 msgid ""
-"The expression being assigned to optional parameter `{0}' must be a constant "
-"or default value"
+"The expression being assigned to nullable optional parameter `{0}' must be "
+"default value"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:470
+#: mcs/mcs/parameter.cs:472
 #, csharp-format
 msgid ""
 "Optional parameter `{0}' of type `{1}' can only be initialized with `null'"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:481
+#: mcs/mcs/parameter.cs:482
 #, csharp-format
 msgid ""
 "Optional parameter expression of type `{0}' cannot be converted to parameter "
@@ -2668,31 +3457,26 @@ msgstr ""
 msgid "An expression tree parameter cannot use `ref' or `out' modifier"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:1120
+#: mcs/mcs/parameter.cs:1096
 #, csharp-format
 msgid "The parameter name `{0}' conflicts with a compiler generated name"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:1138
-#, csharp-format
-msgid "The parameter name `{0}' is a duplicate"
-msgstr ""
-
-#: mcs/mcs/pending.cs:433
+#: mcs/mcs/pending.cs:443
 #, csharp-format
 msgid ""
 "`{0}' does not implement interface member `{1}' and the best implementing "
 "candidate `{2}' is static"
 msgstr ""
 
-#: mcs/mcs/pending.cs:437
+#: mcs/mcs/pending.cs:447
 #, csharp-format
 msgid ""
 "`{0}' does not implement interface member `{1}' and the best implementing "
 "candidate `{2}' in not public"
 msgstr ""
 
-#: mcs/mcs/pending.cs:441
+#: mcs/mcs/pending.cs:451
 #, csharp-format
 msgid ""
 "`{0}' does not implement interface member `{1}' and the best implementing "
@@ -2700,88 +3484,171 @@ msgid ""
 "type `{4}'"
 msgstr ""
 
-#: mcs/mcs/pending.cs:446
+#: mcs/mcs/pending.cs:456
 #, csharp-format
 msgid "`{0}' does not implement interface member `{1}'"
 msgstr ""
 
-#: mcs/mcs/pending.cs:451
+#: mcs/mcs/pending.cs:461
 #, csharp-format
 msgid "`{0}' does not implement inherited abstract member `{1}'"
 msgstr ""
 
-#: mcs/mcs/rootcontext.cs:240
+#: mcs/mcs/property.cs:352
+#, csharp-format
+msgid ""
+"`{0}': accessibility modifiers may not be used on accessors in an interface"
+msgstr ""
+
+#: mcs/mcs/property.cs:356
+#, fuzzy, csharp-format
+msgid "`{0}': abstract properties cannot have private accessors"
+msgstr "`{0}': los miembros virtuales o abstractos no pueden ser privados"
+
+#: mcs/mcs/property.cs:401
+#, csharp-format
+msgid ""
+"The accessibility modifier of the `{0}' accessor must be more restrictive "
+"than the modifier of the property or indexer `{1}'"
+msgstr ""
+
+#: mcs/mcs/property.cs:502
+#, csharp-format
+msgid "Explicit interface implementation `{0}' is missing accessor `{1}'"
+msgstr ""
+
+#: mcs/mcs/property.cs:521
 #, fuzzy, csharp-format
 msgid ""
-"The compilation may fail due to missing `{0}.SetCorlibTypeBuilders(...)' "
-"method"
+"`{0}': cannot override because `{1}' does not have an overridable get "
+"accessor"
+msgstr "`{0}': no es posible sobreescribir ya que `{1}' no es un evento"
+
+#: mcs/mcs/property.cs:538
+#, fuzzy, csharp-format
+msgid ""
+"`{0}': cannot override because `{1}' does not have an overridable set "
+"accessor"
+msgstr "`{0}': no es posible sobreescribir ya que `{1}' no es un evento"
+
+#: mcs/mcs/property.cs:579
+#, csharp-format
+msgid ""
+"`{0}': Cannot specify accessibility modifiers for both accessors of the "
+"property or indexer"
+msgstr ""
+
+#: mcs/mcs/property.cs:586
+#, csharp-format
+msgid ""
+"`{0}': accessibility modifiers on accessors may only be used if the property "
+"or indexer has both a get and a set accessor"
+msgstr ""
+
+#: mcs/mcs/property.cs:783
+#, csharp-format
+msgid ""
+"Automatically implemented property `{0}' cannot be used inside a type with "
+"an explicit StructLayout attribute"
+msgstr ""
+
+#: mcs/mcs/property.cs:1274
+#, csharp-format
+msgid "`{0}': event must be of a delegate type"
+msgstr ""
+
+#: mcs/mcs/property.cs:1482
+#, csharp-format
+msgid ""
+"The `{0}' attribute is valid only on an indexer that is not an explicit "
+"interface member declaration"
+msgstr ""
+
+#: mcs/mcs/property.cs:1516
+#, fuzzy
+msgid "Cannot set the `IndexerName' attribute on an indexer marked override"
+msgstr ""
+"No puede especificar el atributo `DefaultMember' en un tipo que contiene un "
+"indexador"
+
+#: mcs/mcs/reflection.cs:239
+msgid "Could not access the key inside the container `"
+msgstr ""
+
+#: mcs/mcs/roottypes.cs:434
+#, fuzzy
+msgid ""
+"The compilation may fail due to missing `System.Reflection.Emit."
+"AssemblyBuilder.SetCorlibTypeBuilders(...)' method"
 msgstr ""
 "La compilación puede fallar ya que el método `{0}.SetCorlibTypeBuilders"
 "({1})' no existe"
 
-#: mcs/mcs/roottypes.cs:235
-msgid ""
-"Value specified for the argument to 'System.Runtime.InteropServices."
-"DefaultCharSetAttribute' is not valid"
+#: mcs/mcs/roottypes.cs:529
+#, csharp-format
+msgid "Value specified for the argument to `{0}' is not valid"
 msgstr ""
 
-#: mcs/mcs/statement.cs:85
+#: mcs/mcs/statement.cs:87
 msgid ""
 "A lambda expression with statement body cannot be converted to an expresion "
 "tree"
 msgstr ""
 
-#: mcs/mcs/statement.cs:738
+#: mcs/mcs/statement.cs:740
 #, csharp-format
 msgid ""
 "An object of a type convertible to `{0}' is required for the return statement"
 msgstr ""
 
-#: mcs/mcs/statement.cs:751
+#: mcs/mcs/statement.cs:753
 #, csharp-format
 msgid ""
 "`{0}': A return keyword must not be followed by any expression when method "
 "returns void"
 msgstr ""
 
-#: mcs/mcs/statement.cs:776
+#: mcs/mcs/statement.cs:778
 #, csharp-format
 msgid ""
 "Cannot convert `{0}' to delegate type `{1}' because some of the return types "
 "in the block are not implicitly convertible to the delegate return type"
 msgstr ""
 
-#: mcs/mcs/statement.cs:804
+#: mcs/mcs/statement.cs:806
 msgid ""
 "Cannot return a value from iterators. Use the yield return statement to "
 "return a value, or yield break to end the iteration"
 msgstr ""
 
-#: mcs/mcs/statement.cs:950 mcs/mcs/statement.cs:984
+#: mcs/mcs/statement.cs:963 mcs/mcs/statement.cs:997
 msgid "A goto case is only valid inside a switch statement"
 msgstr ""
 
-#: mcs/mcs/statement.cs:1063 mcs/mcs/statement.cs:4593
+#: mcs/mcs/statement.cs:1076 mcs/mcs/statement.cs:4726
 msgid "The type caught or thrown must be derived from System.Exception"
 msgstr ""
 
-#: mcs/mcs/statement.cs:1564
-#, csharp-format
-msgid ""
-"The label `{0}' shadows another label by the same name in a contained scope"
+#: mcs/mcs/statement.cs:1298
+msgid "A fixed statement cannot use an implicitly typed local variable"
 msgstr ""
 
-#: mcs/mcs/statement.cs:1589
-#, csharp-format
-msgid "The label `{0}' is a duplicate"
+#: mcs/mcs/statement.cs:1303
+msgid "An implicitly typed local variable cannot be a constant"
 msgstr ""
 
-#: mcs/mcs/statement.cs:1684
-#, csharp-format
-msgid "`{0}' conflicts with a declaration in a child block"
+#: mcs/mcs/statement.cs:1308
+msgid ""
+"An implicitly typed local variable declarator must include an initializer"
 msgstr ""
 
-#: mcs/mcs/statement.cs:1785
+#: mcs/mcs/statement.cs:1313
+msgid ""
+"An implicitly typed local variable declaration cannot include multiple "
+"declarators"
+msgstr ""
+
+#: mcs/mcs/statement.cs:1883
 #, csharp-format
 msgid ""
 "A local variable named `{0}' cannot be declared in this scope because it "
@@ -2789,96 +3656,115 @@ msgid ""
 "scope to denote something else"
 msgstr ""
 
-#: mcs/mcs/statement.cs:1794
+#: mcs/mcs/statement.cs:1894
 #, csharp-format
-msgid "A local variable named `{0}' is already defined in this scope"
+msgid ""
+"`{0}': An anonymous type cannot have multiple properties with the same name"
 msgstr ""
+"`{0}' An tipo anónimo no puede tener multiples propiedades con el mismo "
+"nombre"
 
-#: mcs/mcs/statement.cs:1799
+#: mcs/mcs/statement.cs:1897
 #, csharp-format
-msgid "The type parameter name `{0}' is the same as `{1}'"
+msgid "The parameter name `{0}' is a duplicate"
 msgstr ""
 
-#: mcs/mcs/statement.cs:1944
-msgid "An implicitly typed local variable cannot be a constant"
+#: mcs/mcs/statement.cs:1904
+#, csharp-format
+msgid "A local variable named `{0}' is already defined in this scope"
+msgstr ""
+
+#: mcs/mcs/statement.cs:1910
+#, fuzzy, csharp-format
+msgid ""
+"The type parameter name `{0}' is the same as local variable or parameter name"
 msgstr ""
+"El tipo parametrizado `{0}' tiene el mimo nombre que el tipo contenedor, o "
+"el método"
 
-#: mcs/mcs/statement.cs:2860
+#: mcs/mcs/statement.cs:2482
+#, csharp-format
+msgid ""
+"The out parameter `{0}' must be assigned to before control leaves the "
+"current method"
+msgstr ""
+
+#: mcs/mcs/statement.cs:2573
 #, csharp-format
 msgid "`{0}': not all code paths return a value"
 msgstr ""
 
-#: mcs/mcs/statement.cs:2863
+#: mcs/mcs/statement.cs:2577
 #, csharp-format
 msgid "Not all code paths return a value in anonymous method of type `{0}'"
 msgstr ""
 
-#: mcs/mcs/statement.cs:2921
+#: mcs/mcs/statement.cs:2748
+#, csharp-format
+msgid "The label `{0}' is a duplicate"
+msgstr ""
+
+#: mcs/mcs/statement.cs:2757 mcs/mcs/statement.cs:2768
 #, csharp-format
 msgid ""
-"The out parameter `{0}' must be assigned to before control leaves the "
-"current method"
+"The label `{0}' shadows another label by the same name in a contained scope"
 msgstr ""
 
-#: mcs/mcs/statement.cs:3101
+#: mcs/mcs/statement.cs:3088
 #, csharp-format
 msgid "The label `case {0}:' already occurs in this switch statement"
 msgstr ""
 
-#: mcs/mcs/statement.cs:3632
+#: mcs/mcs/statement.cs:3629
 #, csharp-format
 msgid ""
 "A switch expression of type `{0}' cannot be converted to an integral type, "
 "bool, char, string, enum or nullable type"
 msgstr ""
 
-#: mcs/mcs/statement.cs:4095
+#: mcs/mcs/statement.cs:4114
 #, csharp-format
 msgid "`{0}' is not a reference type as required by the lock statement"
 msgstr ""
 
-#: mcs/mcs/statement.cs:4358
-msgid "A fixed statement cannot use an implicitly typed local variable"
-msgstr ""
-
-#: mcs/mcs/statement.cs:4368
+#: mcs/mcs/statement.cs:4455
 msgid "The type of locals declared in a fixed statement must be a pointer type"
 msgstr ""
 
-#: mcs/mcs/statement.cs:4392
+#: mcs/mcs/statement.cs:4471
 msgid ""
 "The right hand side of a fixed statement assignment may not be a cast "
 "expression"
 msgstr ""
 
-#: mcs/mcs/statement.cs:4470
+#: mcs/mcs/statement.cs:4542
 msgid ""
 "You cannot use the fixed statement to take the address of an already fixed "
 "expression"
 msgstr ""
 
-#: mcs/mcs/statement.cs:4733
+#: mcs/mcs/statement.cs:4856
 #, csharp-format
 msgid ""
 "A previous catch clause already catches all exceptions of this or a super "
 "type `{0}'"
 msgstr ""
 
-#: mcs/mcs/statement.cs:4937
+#: mcs/mcs/statement.cs:5029
 #, csharp-format
 msgid ""
 "`{0}': type used in a using statement must be implicitly convertible to "
 "`System.IDisposable'"
 msgstr ""
 
-#: mcs/mcs/statement.cs:5322
+#: mcs/mcs/statement.cs:5451
 #, csharp-format
 msgid ""
 "foreach statement requires that the return type `{0}' of `{1}' must have a "
 "suitable public MoveNext method and public Current property"
 msgstr ""
 
-#: mcs/mcs/statement.cs:5360
+#: mcs/mcs/statement.cs:5491
 #, csharp-format
 msgid ""
 "foreach statement cannot operate on variables of type `{0}' because it "
@@ -2886,48 +3772,40 @@ msgid ""
 "implementation"
 msgstr ""
 
-#: mcs/mcs/statement.cs:5379
+#: mcs/mcs/statement.cs:5516
 #, csharp-format
 msgid ""
 "foreach statement cannot operate on variables of type `{0}' because it does "
 "not contain a definition for `{1}' or is inaccessible"
 msgstr ""
 
-#: mcs/mcs/statement.cs:5576
+#: mcs/mcs/statement.cs:5722
 msgid "Use of null is not valid in this context"
 msgstr ""
 
-#: mcs/mcs/statement.cs:5586
+#: mcs/mcs/statement.cs:5732
 #, csharp-format
 msgid "Foreach statement cannot operate on a `{0}'"
 msgstr "El mandato `foreach' no puede operar en un `{0}'"
 
-#: mcs/mcs/typemanager.cs:237
+#: mcs/mcs/typemanager.cs:396
 #, csharp-format
 msgid "The predefined type `{0}.{1}' is not defined or imported"
 msgstr "El tipo predefinido `{0}.{1}' no está definido o no ha sido importado"
 
-#: mcs/mcs/typemanager.cs:243
+#: mcs/mcs/typemanager.cs:402
 #, csharp-format
 msgid "The predefined type `{0}.{1}' is not declared correctly"
 msgstr "El tipo predefinido `{0}.{1}' fue incorrectamente declarado"
 
-#: mcs/mcs/typemanager.cs:262
+#: mcs/mcs/typemanager.cs:581
 #, csharp-format
 msgid ""
 "The compiler required member `{0}.{1}{2}' could not be found or is "
 "inaccessible"
 msgstr "El compilador no encuentra el miembro `{0}.{1}{2}' o no es accessible"
 
-#: mcs/mcs/typemanager.cs:721
-#, csharp-format
-msgid ""
-"Friend access was granted to `{0}', but the output assembly is named `{1}'. "
-"Try adding a reference to `{0}' or change the output assembly name to match "
-"it"
-msgstr ""
-
-#: mcs/mcs/typemanager.cs:823
+#: mcs/mcs/typemanager.cs:889
 #, csharp-format
 msgid ""
 "Cannot take the address of, get the size of, or declare a pointer to a "
@@ -2939,9 +3817,6 @@ msgstr ""
 #~ msgid "Can not use a type parameter in an attribute"
 #~ msgstr "No es posible usar un tipo parametrizado en un atributo"
 
-#~ msgid "Expected `{0}'"
-#~ msgstr "Esperaba `{0}'"
-
 #~ msgid ""
 #~ "`{0}': Any identifier with double underscores cannot be used when ISO "
 #~ "language version mode is specified"
@@ -2949,14 +3824,8 @@ msgstr ""
 #~ "`{0}': Ningún identificador con dos subrayados contíguos puede ser usado "
 #~ "cuando la versión del lenguage seleccionada es ISO"
 
-#~ msgid "Cannot derive from `{0}' because it is a type parameter"
-#~ msgstr "No se puede derivar de `{0}' ya que es un tipo parametrizado"
-
 #~ msgid ""
 #~ "Struct member `{0}.{1}' of type `{2}' causes a cycle in the struct layout"
 #~ msgstr ""
 #~ "El miembro `{0}.{1}' con tipo `{2}' produce un ciclo recursivo en la "
 #~ "estructura"
-
-#~ msgid "Class, struct, or interface method must have a return type"
-#~ msgstr "El método debe tener un tipo de retorno"
diff --git a/po/mcs/ja.gmo b/po/mcs/ja.gmo
index a53ef90..07261da 100644
Binary files a/po/mcs/ja.gmo and b/po/mcs/ja.gmo differ
diff --git a/po/mcs/ja.po b/po/mcs/ja.po
index 467f05b..62af1d5 100644
--- a/po/mcs/ja.po
+++ b/po/mcs/ja.po
@@ -2,58 +2,59 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: http://www.mono-project.com/Bugs\n"
-"POT-Creation-Date: 2010-11-12 03:29-0700\n"
+"POT-Creation-Date: 2011-01-18 10:45-0700\n"
 "PO-Revision-Date: \n"
 "Last-Translator: Atsushi Eno <atsushi at ximian.com>\n"
 "Language-Team: \n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Language: \n"
 "X-Poedit-Language: Japanese\n"
 
-#: mcs/mcs/anonymous.cs:857
+#: mcs/mcs/anonymous.cs:880
 #, csharp-format
 msgid "Cannot convert `{0}' to an expression tree of non-delegate type `{1}'"
 msgstr "`{0}' をデリゲートでない型 `{1}' の式ツリーに変換できません"
 
-#: mcs/mcs/anonymous.cs:862
+#: mcs/mcs/anonymous.cs:885
 #, csharp-format
 msgid "Cannot convert `{0}' to non-delegate type `{1}'"
 msgstr "`{0}' をデリゲートでない型 `{1}'に変換できません"
 
-#: mcs/mcs/anonymous.cs:874
+#: mcs/mcs/anonymous.cs:897
 #, csharp-format
 msgid ""
 "Cannot convert `{0}' to delegate type `{1}' since there is a parameter "
 "mismatch"
 msgstr "パラメータ不一致のため、`{0}' をデリゲート型 `{1}'に変換できません"
 
-#: mcs/mcs/anonymous.cs:886 mcs/mcs/ecore.cs:4172
+#: mcs/mcs/anonymous.cs:909 mcs/mcs/ecore.cs:4524
 #, csharp-format
 msgid "Delegate `{0}' does not take `{1}' arguments"
 msgstr "デリゲート `{0}' は `{1}' 個の引数をもちません"
 
-#: mcs/mcs/anonymous.cs:901
+#: mcs/mcs/anonymous.cs:924
 #, csharp-format
 msgid "Parameter `{0}' should not be declared with the `{1}' keyword"
 msgstr "パラメータ `{0}' は `{1}' キーワードで宣言されるべきではありません"
 
-#: mcs/mcs/anonymous.cs:904
+#: mcs/mcs/anonymous.cs:927
 #, csharp-format
 msgid "Parameter `{0}' must be declared with the `{1}' keyword"
 msgstr "パラメータ `{0}' は `{1}' キーワードで宣言されなければなりません"
 
-#: mcs/mcs/anonymous.cs:925
+#: mcs/mcs/anonymous.cs:948
 #, csharp-format
 msgid "Parameter `{0}' is declared as type `{1}' but should be `{2}'"
 msgstr ""
 "パラメータ `{0}' は型 `{1}' として宣言されていますが、 `{2}' であるはずです"
 
-#: mcs/mcs/anonymous.cs:1080
+#: mcs/mcs/anonymous.cs:1103
 msgid "An anonymous method cannot be converted to an expression tree"
 msgstr "匿名メソッドを式ツリーに変換することはできません"
 
-#: mcs/mcs/anonymous.cs:1099
+#: mcs/mcs/anonymous.cs:1122
 #, fuzzy, csharp-format
 msgid ""
 "Cannot convert anonymous method block without a parameter list to delegate "
@@ -62,13 +63,13 @@ msgstr ""
 "デリゲート型 `{0}' には引数に`out'パラメータがあるので、パラメータリスト無し"
 "では匿名メソッドのブロックから変換できません"
 
-#: mcs/mcs/anonymous.cs:1123
+#: mcs/mcs/anonymous.cs:1146
 msgid ""
 "Anonymous methods and lambda expressions cannot be used in the current "
 "context"
 msgstr "匿名メソッドとラムダ式は現在の文脈では使用できません"
 
-#: mcs/mcs/anonymous.cs:1165
+#: mcs/mcs/anonymous.cs:1188
 #, csharp-format
 msgid ""
 "Local variable or parameter `{0}' cannot have their address taken and be "
@@ -77,26 +78,52 @@ msgstr ""
 "ローカル変数またはパラメータである `{0}' は、そのアドレスを取得して匿名メソッ"
 "ドあるいはラムダ式の中で使用することができません"
 
-#: mcs/mcs/anonymous.cs:1430
+#: mcs/mcs/anonymous.cs:1438
 msgid "An expression tree cannot contain an anonymous method expression"
 msgstr "式ツリーに匿名メソッド式を含むことはできません"
 
-#: mcs/mcs/anonymous.cs:1657
+#: mcs/mcs/argument.cs:101
+#, fuzzy
+msgid ""
+"An expression tree cannot contain an invocation which uses optional parameter"
+msgstr "式ツリーは代入オペレータを含むことができません"
+
+#: mcs/mcs/argument.cs:184
+#, fuzzy
+msgid "An expression tree cannot contain named argument"
+msgstr "式ツリーは代入オペレータを含むことができません"
+
+#: mcs/mcs/argument.cs:303
 #, csharp-format
 msgid ""
-"`{0}': An anonymous type cannot have multiple properties with the same name"
-msgstr "`{0}': 匿名型は同一の名前で複数のプロパティをもつことができません"
+"The method group `{0}' cannot be used as an argument of dynamic operation. "
+"Consider using parentheses to invoke the method"
+msgstr ""
 
-#: mcs/mcs/assign.cs:295
+#: mcs/mcs/argument.cs:307
+#, fuzzy
+msgid ""
+"An anonymous method or lambda expression cannot be used as an argument of "
+"dynamic operation. Consider using a cast"
+msgstr "匿名メソッドとラムダ式は現在の文脈では使用できません"
+
+#: mcs/mcs/argument.cs:310
+#, fuzzy, csharp-format
+msgid ""
+"An expression of type `{0}' cannot be used as an argument of dynamic "
+"operation"
+msgstr "式ツリーは代入オペレータを含むことができません"
+
+#: mcs/mcs/assign.cs:299
 msgid "An expression tree cannot contain an assignment operator"
 msgstr "式ツリーは代入オペレータを含むことができません"
 
-#: mcs/mcs/assign.cs:571
+#: mcs/mcs/assign.cs:627
 #, csharp-format
 msgid "Cannot assign to `{0}' because it is a `{1}'"
 msgstr ""
 
-#: mcs/mcs/attribute.cs:168
+#: mcs/mcs/attribute.cs:196
 #, csharp-format
 msgid ""
 "`{0}' is not a valid named attribute argument. Named attribute arguments "
@@ -107,7 +134,7 @@ msgstr ""
 "み専用ではなくstaticでも定数でもないフィールドか、またはpublicでstaticではな"
 "い読み書き可能なプロパティでなければなりません"
 
-#: mcs/mcs/attribute.cs:177
+#: mcs/mcs/attribute.cs:205
 #, csharp-format
 msgid ""
 "`{0}' is not a valid named attribute argument because it is not a valid "
@@ -116,38 +143,38 @@ msgstr ""
 "`{0}' は、有効な属性パラメータ型ではないため、有効な名前付き属性の引数ではあ"
 "りません"
 
-#: mcs/mcs/attribute.cs:183
+#: mcs/mcs/attribute.cs:211
 #, fuzzy
 msgid "An attribute argument cannot be dynamic expression"
 msgstr "匿名メソッドを式ツリーに変換することはできません"
 
-#: mcs/mcs/attribute.cs:188
+#: mcs/mcs/attribute.cs:216
 msgid "The Guid attribute must be specified with the ComImport attribute"
 msgstr "Guid属性はComImport属性とともに指定されなければなりません"
 
-#: mcs/mcs/attribute.cs:193
+#: mcs/mcs/attribute.cs:221
 #, csharp-format
 msgid "Do not use `{0}' directly. Use parameter modifier `this' instead"
 msgstr ""
 "`{0}' を直接使用せず、代わりにパラメータ修飾子 `this' を使用してください"
 
-#: mcs/mcs/attribute.cs:198
+#: mcs/mcs/attribute.cs:226
 #, fuzzy, csharp-format
 msgid "Do not use `{0}' directly. Use `dynamic' keyword instead"
 msgstr ""
 "`{0}' を直接使用せず、代わりにパラメータ修飾子 `this' を使用してください"
 
-#: mcs/mcs/attribute.cs:207
+#: mcs/mcs/attribute.cs:235
 #, csharp-format
 msgid "Error during emitting `{0}' attribute. The reason is `{1}'"
 msgstr "`{0}' の属性の出力中にエラーが発生しました。理由: '{1}'"
 
-#: mcs/mcs/attribute.cs:238
+#: mcs/mcs/attribute.cs:266
 #, csharp-format
 msgid "`{0}': is not an attribute class"
 msgstr "`{0}' は属性クラスではありません"
 
-#: mcs/mcs/attribute.cs:274
+#: mcs/mcs/attribute.cs:302
 #, fuzzy, csharp-format
 msgid ""
 "`{0}' is ambiguous between `{1}' and `{2}'. Use either `@{0}' or `{0}"
@@ -156,17 +183,17 @@ msgstr ""
 "`{0} は `{0}' と `{0}Attribute' の間で曖昧です。`@{0}' または `{0}Attribute' "
 "を使用してください"
 
-#: mcs/mcs/attribute.cs:380
+#: mcs/mcs/attribute.cs:385
 #, csharp-format
 msgid "Cannot apply attribute class `{0}' because it is abstract"
 msgstr "属性クラス `{0}' はabstractなので適用できません"
 
-#: mcs/mcs/attribute.cs:438
+#: mcs/mcs/attribute.cs:453
 #, fuzzy, csharp-format
 msgid "Duplicate named attribute `{0}' argument"
 msgstr "属性の引数名 '{0}' が重複しています"
 
-#: mcs/mcs/attribute.cs:714
+#: mcs/mcs/attribute.cs:730
 #, csharp-format
 msgid ""
 "`{0}' is not a valid attribute location for this declaration. Valid "
@@ -175,42 +202,514 @@ msgstr ""
 "`{0}' の属性の位置はその宣言からは有効ではありません。宣言されている有効な属"
 "性の位置は `{1}' です"
 
-#: mcs/mcs/attribute.cs:1055
+#: mcs/mcs/attribute.cs:1004
 #, csharp-format
 msgid ""
 "The attribute `{0}' is not valid on this declaration type. It is valid on `"
 "{1}' declarations only"
 msgstr "属性 `{0}' はこの宣言型では無効です。 `{1}' の宣言でのみ有効です"
 
-#: mcs/mcs/attribute.cs:1073
+#: mcs/mcs/attribute.cs:1022
 #, csharp-format
 msgid "The argument to the `{0}' attribute must be a valid identifier"
 msgstr "`{0}' 属性への引数は有効な識別子である必要があります"
 
-#: mcs/mcs/attribute.cs:1086
+#: mcs/mcs/attribute.cs:1035
 #, fuzzy, csharp-format
 msgid "Invalid value for argument to `{0}' attribute"
 msgstr "`System.AttributeUsage' 属性への無効な引数値です"
 
-#: mcs/mcs/attribute.cs:1386
+#: mcs/mcs/attribute.cs:1341
 #, csharp-format
 msgid "The attribute `{0}' cannot be applied multiple times"
 msgstr "属性 `{0}' は複数回指定することができません"
 
-#: mcs/mcs/attribute.cs:1571
+#: mcs/mcs/attribute.cs:1603
+#, csharp-format
+msgid "`{0}' is obsolete: `{1}'"
+msgstr "`{0}'は廃止されています: `{1}'"
+
+#: mcs/mcs/cs-parser.jay:474
+msgid "A namespace declaration cannot have modifiers or attributes"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:570
 msgid ""
-"Added modules must be marked with the CLSCompliant attribute to match the "
-"assembly"
+"Namespace elements cannot be explicitly declared as private, protected or "
+"protected internal"
 msgstr ""
-"追加されるモジュールは、アセンブリに適合するCLSCompliant属性でマークされなけ"
-"ればなりません"
 
-#: mcs/mcs/attribute.cs:1597
+#: mcs/mcs/cs-parser.jay:613
+msgid ""
+"Assembly and module attributes must precede all other elements except using "
+"clauses and extern alias declarations"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:752
+msgid "'<' unexpected: attributes cannot be generic"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:800
+msgid "Named attribute arguments must appear after the positional arguments"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:892
 #, csharp-format
-msgid "`{0}' is obsolete: `{1}'"
-msgstr "`{0}'は廃止されています: `{1}'"
+msgid ""
+"Unexpected symbol `{0}' in class, struct, or interface member declaration"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:992
+#, fuzzy, csharp-format
+msgid "The constant `{0}' cannot be marked static"
+msgstr "abstractメソッド `{0}' はvirtualとすることはできません"
+
+#: mcs/mcs/cs-parser.jay:1047 mcs/mcs/cs-parser.jay:4792
+msgid "A const field requires a value to be provided"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1066
+msgid "Fields cannot have void type"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1116
+msgid ""
+"A fixed size buffer field must have the array size specifier after the field "
+"name"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1211
+msgid "Value or constant expected"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1239 mcs/mcs/cs-parser.jay:1800
+#: mcs/mcs/cs-parser.jay:1848 mcs/mcs/cs-parser.jay:2433
+#: mcs/mcs/cs-parser.jay:2461
+#, fuzzy, csharp-format
+msgid "`{0}': interface members cannot have a definition"
+msgstr "`{0}': virtualまたはabstractのメンバはprivateにはできません"
+
+#: mcs/mcs/cs-parser.jay:1276 mcs/mcs/cs-parser.jay:1316 mcs/mcs/decl.cs:1404
+msgid "Constraints are not allowed on non-generic declarations"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1284
+#, csharp-format
+msgid ""
+"`{0}': Cannot specify constraints for overrides and explicit interface "
+"implementation methods"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1335
+msgid ""
+"A partial method cannot define access modifier or any of abstract, extern, "
+"new, override, sealed, or virtual modifiers"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1341
+msgid ""
+"A partial method must be declared within a partial class or partial struct"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1365
+#, csharp-format
+msgid "Member modifier `{0}' must precede the member type and name"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1411 mcs/mcs/cs-parser.jay:1418
+msgid ""
+"A params parameter must be the last parameter in a formal parameter list"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1427 mcs/mcs/cs-parser.jay:1433
+msgid ""
+"An __arglist parameter must be the last parameter in a formal parameter list"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1471
+msgid "The parameter modifier `this' can only be used on the first parameter"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1473
+msgid "Optional parameter cannot precede required parameters"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1500
+msgid "Array type specifier, [], must appear before parameter name"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1532 mcs/mcs/cs-parser.jay:1537
+#, fuzzy, csharp-format
+msgid "Cannot specify a default value for the `{0}' parameter"
+msgstr "インデクサを含む型には`DefaultMember'属性を指定できません"
+
+#: mcs/mcs/cs-parser.jay:1548
+msgid "Optional parameter is not valid in this context"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1578
+msgid "The parameter modifiers `this' and `ref' cannot be used altogether"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1581
+msgid "The parameter modifiers `this' and `out' cannot be used altogether"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1584
+msgid "A parameter cannot have specified more than one modifier"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1627
+#, fuzzy
+msgid "Cannot specify a default value for a parameter array"
+msgstr "インデクサを含む型には`DefaultMember'属性を指定できません"
+
+#: mcs/mcs/cs-parser.jay:1643
+#, fuzzy
+msgid "The `params' modifier is not allowed in current context"
+msgstr "キーワード `new' は名前空間要素で認められていません"
+
+#: mcs/mcs/cs-parser.jay:1649
+msgid "The parameter modifiers `this' and `params' cannot be used altogether"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1651
+#, fuzzy
+msgid "The params parameter cannot be declared as ref or out"
+msgstr "abstractメソッド `{0}' はvirtualとすることはできません"
+
+#: mcs/mcs/cs-parser.jay:1664
+msgid "__arglist is not valid in this context"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1683
+#, fuzzy, csharp-format
+msgid "`{0}': property or indexer cannot have void type"
+msgstr "`{0}': virtualまたはabstractのメンバはprivateにはできません"
+
+#: mcs/mcs/cs-parser.jay:1724
+#, csharp-format
+msgid "`{0}': indexer return type cannot be `void'"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1727
+msgid "Indexers must have at least one parameter"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1760
+#, fuzzy, csharp-format
+msgid "`{0}': property or indexer must have at least one accessor"
+msgstr "`{0}': virtualまたはabstractのメンバはprivateにはできません"
+
+#: mcs/mcs/cs-parser.jay:1763
+msgid "Semicolon after method or accessor block is not valid"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1765
+msgid "A get or set accessor expected"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1778 mcs/mcs/cs-parser.jay:1821
+msgid "Property accessor already defined"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1931 mcs/mcs/cs-parser.jay:1935
+msgid "Interfaces cannot contain fields or constants"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1943
+#, fuzzy
+msgid "Interfaces cannot contain operators"
+msgstr "`{0}': staticクラスにはユーザー定義の演算子を含むことはできません"
+
+#: mcs/mcs/cs-parser.jay:1947
+#, fuzzy
+msgid "Interfaces cannot contain contructors"
+msgstr "`{0}': staticクラスではデストラクタを定義できません"
+
+#: mcs/mcs/cs-parser.jay:1951
+msgid ""
+"Interfaces cannot declare classes, structs, interfaces, delegates, or "
+"enumerations"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1992
+msgid "User-defined operators cannot return void"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2020
+msgid "Overloadable binary operator expected"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2022
+#, fuzzy, csharp-format
+msgid "Overloaded unary operator `{0}' takes one parameter"
+msgstr "Conditionalメソッド `{0}' ではoutパラメータを指定できません"
+
+#: mcs/mcs/cs-parser.jay:2027
+#, csharp-format
+msgid "Overloaded binary operator `{0}' takes two parameters"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2030
+msgid "Overloadable unary operator expected"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2177
+msgid "Class, struct, or interface method must have a return type"
+msgstr "クラス、構造体、インターフェースのメソッドには戻り値型が必要です"
+
+#: mcs/mcs/cs-parser.jay:2181
+#, fuzzy, csharp-format
+msgid "`{0}': static constructor cannot have an access modifier"
+msgstr "`{0}': virtualまたはabstractのメンバはprivateにはできません"
+
+#: mcs/mcs/cs-parser.jay:2186
+#, fuzzy, csharp-format
+msgid ""
+"`{0}': static constructor cannot have an explicit `this' or `base' "
+"constructor call"
+msgstr "`{0}': staticクラスではインスタンス コンストラクタを定義できません"
+
+#: mcs/mcs/cs-parser.jay:2249
+msgid "Name of destructor must match name of class"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2251
+#, fuzzy
+msgid "Only class types can contain destructor"
+msgstr "`{0}': staticクラスではデストラクタを定義できません"
+
+#: mcs/mcs/cs-parser.jay:2276
+#, fuzzy, csharp-format
+msgid ""
+"`{0}': An explicit interface implementation of an event must use property "
+"syntax"
+msgstr ""
+"明示的なインターフェースの宣言で記述された `{0}' は、インターフェースではあり"
+"ません"
+
+#: mcs/mcs/cs-parser.jay:2308
+msgid "Event in interface cannot have add or remove accessors"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2377
+#, fuzzy, csharp-format
+msgid "`{0}': event in interface cannot have an initializer"
+msgstr "`{0}': 構造体ではインスタンス フィールドを初期化できません"
+
+#: mcs/mcs/cs-parser.jay:2382
+#, fuzzy, csharp-format
+msgid "`{0}': abstract event cannot have an initializer"
+msgstr "`{0}': 構造体ではインスタンス フィールドを初期化できません"
+
+#: mcs/mcs/cs-parser.jay:2397 mcs/mcs/cs-parser.jay:2402
+#, fuzzy, csharp-format
+msgid "`{0}': event property must have both add and remove accessors"
+msgstr "`{0}': virtualまたはabstractのメンバはprivateにはできません"
+
+#: mcs/mcs/cs-parser.jay:2407
+msgid "An add or remove accessor expected"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2416 mcs/mcs/cs-parser.jay:2444
+msgid "Modifiers cannot be placed on event accessor declarations"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2471
+msgid "An add or remove accessor must have a body"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2493
+#, fuzzy
+msgid "Enums cannot have type parameters"
+msgstr "`{0}': staticクラス '{1}' から派生することはできません"
+
+#: mcs/mcs/cs-parser.jay:2824
+msgid "Type parameter declaration must be an identifier not a type"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2875
+msgid "Invalid parameter type `void'"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2940
+#, csharp-format
+msgid "Invalid base type `{0}'"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:3189
+msgid "An element initializer cannot be empty"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:3227
+#, fuzzy, csharp-format
+msgid "Named argument `{0}' specified multiple times"
+msgstr "属性 `{0}' は複数回指定することができません"
+
+#: mcs/mcs/cs-parser.jay:3236 mcs/mcs/cs-parser.jay:3241
+msgid "An argument is missing"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:3410
+msgid "Array creation must have array size or array initializer"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:3423
+msgid "Invalid rank specifier, expecting `,' or `]'"
+msgstr ""
 
-#: mcs/mcs/cs-tokenizer.cs:772
+#: mcs/mcs/cs-parser.jay:3503
+msgid ""
+"Invalid anonymous type member declarator. Anonymous type members must be a "
+"member assignment, simple name or member access expression"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:4027
+msgid "All lambda parameters must be typed either explicitly or implicitly"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:4213
+#, csharp-format
+msgid "Duplicate `{0}' modifier"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:4217
+msgid "More than one protection modifier specified"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:4231
+#, fuzzy
+msgid "Keyword `new' is not allowed on namespace elements"
+msgstr "キーワード `new' は名前空間要素で認められていません"
+
+#: mcs/mcs/cs-parser.jay:4343
+#, csharp-format
+msgid "A constraint clause has already been specified for type parameter `{0}'"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:4373
+msgid "The `new()' constraint must be the last constraint specified"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:4379
+msgid ""
+"The `class' or `struct' constraint must be the first constraint specified"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:4383
+msgid "The `new()' constraint cannot be used with the `struct' constraint"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:4397
+#, csharp-format
+msgid "Invalid constraint type `{0}'"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:4579 mcs/mcs/cs-parser.jay:4584
+msgid "An embedded statement may not be a declaration or labeled statement"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:4751
+msgid ""
+"Syntax error, bad array declarator. To declare a managed array the rank "
+"specifier precedes the variable's identifier. To declare a fixed size buffer "
+"field, use the fixed keyword before the field type"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:4831
+msgid "A stackalloc expression requires [] after type"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:5113
+msgid "Type and identifier are both required in a foreach statement"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:5205 mcs/mcs/cs-parser.jay:5221
+msgid "; expected"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:5207
+msgid "Expression expected after yield return"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:5254
+msgid "Expected catch or finally"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:5273
+msgid "Try statement already has an empty catch block"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:5318
+msgid ""
+"A type that derives from `System.Exception', `object', or `string' expected"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:5426
+msgid ""
+"You must provide an initializer in a fixed or using statement declaration"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:6014
+msgid "Expecting `;'"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:6022
+#, csharp-format
+msgid "The parameter modifier `{0}' is not valid in this context"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:6028
+#, fuzzy, csharp-format
+msgid "Duplicate parameter modifier `{0}'"
+msgstr "属性の引数名 '{0}' が重複しています"
+
+#: mcs/mcs/cs-parser.jay:6034
+msgid "Type expected"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:6039
+msgid "Unsafe code requires the `unsafe' command line option to be specified"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:6049
+msgid "Named arguments must appear after the positional arguments"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:6140
+msgid "Syntax error, "
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:6194
+msgid "Parsing error"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:6200
+msgid "Internal compiler error during parsing"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:6211
+#, csharp-format
+msgid "{0}: `{1}' is a keyword"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:6338
+#, fuzzy, csharp-format
+msgid "Identifier expected, `{0}' is a keyword"
+msgstr "識別子が必要です: {0}"
+
+#: mcs/mcs/cs-parser.jay:6352
+#, csharp-format
+msgid "{1} `{0}'"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:6354
+#, csharp-format
+msgid "{2} `{0}', expecting {1}"
+msgstr ""
+
+#: mcs/mcs/cs-tokenizer.cs:760
 msgid ""
 "The `partial' modifier can be used only immediately before `class', "
 "`struct', `interface', or `void' keyword"
@@ -218,51 +717,51 @@ msgstr ""
 "`partial' 修飾子は `class'、`struct'、`interface'、`void' キーワードの直前で"
 "のみ使用できます"
 
-#: mcs/mcs/cs-tokenizer.cs:1394 mcs/mcs/cs-tokenizer.cs:1461
+#: mcs/mcs/cs-tokenizer.cs:1395 mcs/mcs/cs-tokenizer.cs:1462
 msgid "Invalid number"
 msgstr "無効な数値です"
 
-#: mcs/mcs/cs-tokenizer.cs:1646
+#: mcs/mcs/cs-tokenizer.cs:1647
 #, csharp-format
 msgid "Unrecognized escape sequence `\\{0}'"
 msgstr "認識できないエスケープシーケンス `\\{0}' です"
 
-#: mcs/mcs/cs-tokenizer.cs:1665
+#: mcs/mcs/cs-tokenizer.cs:1666
 msgid "Unrecognized escape sequence"
 msgstr "認識できないエスケープシーケンスです"
 
-#: mcs/mcs/cs-tokenizer.cs:1886
+#: mcs/mcs/cs-tokenizer.cs:1887
 #, fuzzy
 msgid "Missing identifier to pre-processor directive"
 msgstr "プリプロセッサ指令の識別子がありません"
 
-#: mcs/mcs/cs-tokenizer.cs:1896 mcs/mcs/cs-tokenizer.cs:1900
+#: mcs/mcs/cs-tokenizer.cs:1897 mcs/mcs/cs-tokenizer.cs:1901
 #, csharp-format
 msgid "Identifier expected: {0}"
 msgstr "識別子が必要です: {0}"
 
-#: mcs/mcs/cs-tokenizer.cs:2372
+#: mcs/mcs/cs-tokenizer.cs:2373
 #, fuzzy
 msgid "Integral constant is too large"
 msgstr "数値定数が長すぎます"
 
-#: mcs/mcs/cs-tokenizer.cs:2377
+#: mcs/mcs/cs-tokenizer.cs:2378
 msgid "Invalid preprocessor directive"
 msgstr "無効なプリプロセッサ指令です"
 
-#: mcs/mcs/cs-tokenizer.cs:2384
+#: mcs/mcs/cs-tokenizer.cs:2385
 #, csharp-format
 msgid "Unexpected processor directive ({0})"
 msgstr "予期しないプリプロセッサ指令です({0})"
 
-#: mcs/mcs/cs-tokenizer.cs:2390
+#: mcs/mcs/cs-tokenizer.cs:2391
 msgid ""
 "Cannot define or undefine preprocessor symbols after first token in file"
 msgstr ""
 "ファイル中の最初のトークンの出現後は、プリプロセッサシンボルを定義または定義"
 "解除することはできません"
 
-#: mcs/mcs/cs-tokenizer.cs:2396
+#: mcs/mcs/cs-tokenizer.cs:2397
 msgid ""
 "Preprocessor directives must appear as the first non-whitespace character on "
 "a line"
@@ -270,53 +769,62 @@ msgstr ""
 "プリプロセッサ指令は、1行の中で、最初の空白でない文字として出現しなければなり"
 "ません"
 
-#: mcs/mcs/cs-tokenizer.cs:2401
+#: mcs/mcs/cs-tokenizer.cs:2402
 msgid "Single-line comment or end-of-line expected"
 msgstr "1行コメントまたは行末が必要です"
 
-#: mcs/mcs/cs-tokenizer.cs:2434 mcs/mcs/cs-tokenizer.cs:3431
+#: mcs/mcs/cs-tokenizer.cs:2435 mcs/mcs/cs-tokenizer.cs:3431
 msgid "Expected `#endif' directive"
 msgstr "`#endif' 指令が必要です"
 
-#: mcs/mcs/cs-tokenizer.cs:2467 mcs/mcs/cs-tokenizer.cs:2488
-#: mcs/mcs/cs-tokenizer.cs:2519 mcs/mcs/cs-tokenizer.cs:3429
+#: mcs/mcs/cs-tokenizer.cs:2468 mcs/mcs/cs-tokenizer.cs:2489
+#: mcs/mcs/cs-tokenizer.cs:2520 mcs/mcs/cs-tokenizer.cs:3429
 msgid "#endregion directive expected"
 msgstr "#endregion指令が必要です"
 
-#: mcs/mcs/cs-tokenizer.cs:2566
+#: mcs/mcs/cs-tokenizer.cs:2567
 msgid "Wrong preprocessor directive"
 msgstr "正しくないプリプロセッサ指令です"
 
-#: mcs/mcs/cs-tokenizer.cs:2578
+#: mcs/mcs/cs-tokenizer.cs:2579
 #, csharp-format
 msgid "#error: '{0}'"
 msgstr "#error: `{0}'"
 
-#: mcs/mcs/cs-tokenizer.cs:2597
+#: mcs/mcs/cs-tokenizer.cs:2598
 msgid "The line number specified for #line directive is missing or invalid"
 msgstr "#line指令で指定される行番号が無いか、または無効です"
 
-#: mcs/mcs/cs-tokenizer.cs:2624 mcs/mcs/cs-tokenizer.cs:3242
+#: mcs/mcs/cs-tokenizer.cs:2625 mcs/mcs/cs-tokenizer.cs:3243
 msgid "Newline in constant"
 msgstr "定数の中に改行文字が含まれています"
 
-#: mcs/mcs/cs-tokenizer.cs:2635
+#: mcs/mcs/cs-tokenizer.cs:2636
 msgid "Unterminated string literal"
 msgstr "文字列に終端がありません"
 
-#: mcs/mcs/cs-tokenizer.cs:2704
+#: mcs/mcs/cs-tokenizer.cs:2705
 msgid "Identifier too long (limit is 512 chars)"
 msgstr "識別子が長すぎます(最大512文字)"
 
-#: mcs/mcs/cs-tokenizer.cs:3091
+#: mcs/mcs/cs-tokenizer.cs:3092
 msgid "End-of-file found, '*/' expected"
 msgstr "ファイルの終端に到達しましたが、 '*/' が必要です"
 
-#: mcs/mcs/cs-tokenizer.cs:3200
+#: mcs/mcs/cs-tokenizer.cs:3201
 msgid "Keyword, identifier, or string expected after verbatim specifier: @"
 msgstr "厳密指定子@の直後には、キーワード、識別子または文字列が必要です"
 
-#: mcs/mcs/cs-tokenizer.cs:3257
+#: mcs/mcs/cs-tokenizer.cs:3217
+#, fuzzy, csharp-format
+msgid "Unexpected character `{0}'"
+msgstr "`{0}' が必要です"
+
+#: mcs/mcs/cs-tokenizer.cs:3238
+msgid "Empty character literal"
+msgstr ""
+
+#: mcs/mcs/cs-tokenizer.cs:3258
 msgid "Too many characters in character literal"
 msgstr ""
 
@@ -324,11 +832,11 @@ msgstr ""
 msgid "The operation overflows at compile time in checked mode"
 msgstr "チェックモードでコンパイル時オーバーフロー演算を発見しました"
 
-#: mcs/mcs/cfold.cs:715 mcs/mcs/cfold.cs:795
+#: mcs/mcs/cfold.cs:764 mcs/mcs/cfold.cs:849
 msgid "Division by constant zero"
 msgstr "定数0による除算があります"
 
-#: mcs/mcs/class.cs:349
+#: mcs/mcs/class.cs:371
 #, csharp-format
 msgid ""
 "Partial declarations of `{0}' must be all classes, all structs or all "
@@ -337,12 +845,12 @@ msgstr ""
 "部分的な `{0}' の宣言は全てが、クラス、構造体、インターフェースのいずれかであ"
 "ることが必要です"
 
-#: mcs/mcs/class.cs:358
+#: mcs/mcs/class.cs:380
 #, csharp-format
 msgid "Partial declarations of `{0}' have conflicting accessibility modifiers"
 msgstr "部分的な `{0}' の宣言に、矛盾するアクセス修飾子が含まれています"
 
-#: mcs/mcs/class.cs:410
+#: mcs/mcs/class.cs:433
 #, csharp-format
 msgid ""
 "`{0}': explicit interface declaration can only be declared in a class or "
@@ -350,7 +858,7 @@ msgid ""
 msgstr ""
 "`{0}': インターフェースの明示的な実装は、クラスまたは構造体でのみ宣言できます"
 
-#: mcs/mcs/class.cs:448
+#: mcs/mcs/class.cs:470 mcs/mcs/membercache.cs:1327
 #, csharp-format
 msgid ""
 "A member `{0}' is already defined. Rename this member or use different "
@@ -359,26 +867,26 @@ msgstr ""
 "メンバ `{0}' が既に定義されています。このメンバの名前を変更するか、別のパラ"
 "メータ型を使用してください"
 
-#: mcs/mcs/class.cs:556
+#: mcs/mcs/class.cs:578
 msgid ""
 "Cannot specify the `DefaultMember' attribute on type containing an indexer"
 msgstr "インデクサを含む型には`DefaultMember'属性を指定できません"
 
-#: mcs/mcs/class.cs:562
+#: mcs/mcs/class.cs:584
 msgid "The RequiredAttribute attribute is not permitted on C# types"
 msgstr ""
 
-#: mcs/mcs/class.cs:839
+#: mcs/mcs/class.cs:855
 #, fuzzy, csharp-format
 msgid "Class `{0}' cannot derive from the dynamic type"
-msgstr "`{0}': staticクラス '{1}' から派生することはできません"
+msgstr "`{0}' は特別なクラス `{1}' から派生することはできません"
 
-#: mcs/mcs/class.cs:854
+#: mcs/mcs/class.cs:872
 #, csharp-format
 msgid "`{0}' is already listed in interface list"
 msgstr "`{0}'は既にインターフェースのリストに含まれています"
 
-#: mcs/mcs/class.cs:862
+#: mcs/mcs/class.cs:880
 #, csharp-format
 msgid ""
 "Inconsistent accessibility: base interface `{0}' is less accessible than "
@@ -387,40 +895,40 @@ msgstr ""
 "一貫性の無いアクセス修飾子です: 基底インターフェース `{0}' はインターフェー"
 "ス `{1}' よりもアクセスが限定的です"
 
-#: mcs/mcs/class.cs:868
+#: mcs/mcs/class.cs:886
 #, csharp-format
 msgid "Type `{0}' in interface list is not an interface"
 msgstr ""
 "インターフェースリストに含まれる型 `{0}' はインターフェースではありません"
 
-#: mcs/mcs/class.cs:870
+#: mcs/mcs/class.cs:888
 #, csharp-format
 msgid "`{0}': Classes cannot have multiple base classes (`{1}' and `{2}')"
 msgstr ""
 "`{0}': クラスには複数の基底クラスを指定することはできません(`{1}' と `{2}')"
 
-#: mcs/mcs/class.cs:873
+#: mcs/mcs/class.cs:891
 #, csharp-format
 msgid "`{0}': Base class `{1}' must be specified as first"
 msgstr "`{0}': 基底クラス `{1}' が先に指定されなければなりません"
 
-#: mcs/mcs/class.cs:897
+#: mcs/mcs/class.cs:915
 #, csharp-format
 msgid "Partial declarations of `{0}' must not specify different base classes"
 msgstr "`{0}' の部分的な宣言の間で、別々の基底クラスを指定することはできません"
 
-#: mcs/mcs/class.cs:978
+#: mcs/mcs/class.cs:996
 #, csharp-format
 msgid ""
 "The operator `{0}' requires a matching operator `{1}' to also be defined"
 msgstr "演算子 `{0}' は対応する演算子 `{1}' の定義も必要とします"
 
-#: mcs/mcs/class.cs:1002
+#: mcs/mcs/class.cs:1021
 #, csharp-format
 msgid "`{0}' clashes with a predefined namespace"
 msgstr ""
 
-#: mcs/mcs/class.cs:1135
+#: mcs/mcs/class.cs:1150
 #, csharp-format
 msgid ""
 "Inherited interface `{0}' causes a cycle in the interface hierarchy of `{1}'"
@@ -428,12 +936,12 @@ msgstr ""
 "継承されたインターフェース `{0}' で、`{1}' のインターフェース階層構造の循環定"
 "義が生じています"
 
-#: mcs/mcs/class.cs:1139
+#: mcs/mcs/class.cs:1156
 #, csharp-format
 msgid "Circular base class dependency involving `{0}' and `{1}'"
 msgstr "`{0}' と `{1}' の間で基底クラスの循環依存が生じています"
 
-#: mcs/mcs/class.cs:1166
+#: mcs/mcs/class.cs:1183
 #, csharp-format
 msgid ""
 "`{0}' cannot implement both `{1}' and `{2}' because they may unify for some "
@@ -442,7 +950,7 @@ msgstr ""
 "`{0}' は `{1}' と `{2}' が型パラメータ置換後に重複する可能性があるため、これ"
 "らの両方を実装することはできません"
 
-#: mcs/mcs/class.cs:1317
+#: mcs/mcs/class.cs:1329
 #, csharp-format
 msgid ""
 "Partial declarations of `{0}' must have the same type parameter names in the "
@@ -451,7 +959,7 @@ msgstr ""
 "`{0}' の部分的な宣言では、同一の型パラメータ名を同一の順序で定義しなければな"
 "りません"
 
-#: mcs/mcs/class.cs:1324
+#: mcs/mcs/class.cs:1336
 #, fuzzy, csharp-format
 msgid ""
 "Partial declarations of `{0}' must have the same type parameter variance "
@@ -460,7 +968,7 @@ msgstr ""
 "`{0}' の部分的な宣言では、同一の型パラメータ名を同一の順序で定義しなければな"
 "りません"
 
-#: mcs/mcs/class.cs:1349
+#: mcs/mcs/class.cs:1361
 #, csharp-format
 msgid ""
 "Partial declarations of `{0}' have inconsistent constraints for type "
@@ -469,12 +977,12 @@ msgstr ""
 "`{0}' の部分的な宣言の間で、型パラメータ `{1}' について一貫性のない制約が含ま"
 "れています"
 
-#: mcs/mcs/class.cs:1486
+#: mcs/mcs/class.cs:1500
 #, fuzzy, csharp-format
 msgid "`{0}': cannot implement a dynamic interface `{1}'"
 msgstr "`{0}' を含む型はインターフェース `{1}' を実装しません"
 
-#: mcs/mcs/class.cs:1601
+#: mcs/mcs/class.cs:1618
 msgid ""
 "Two indexers have different names; the IndexerName attribute must be used "
 "with the same name on every indexer within a type"
@@ -482,79 +990,79 @@ msgstr ""
 "2つのインデクサ間で別々の名前が定義されています; 1つの型において、IndexerName"
 "属性は全てのインデクサにおいて同一の名前をもたなければなりません"
 
-#: mcs/mcs/class.cs:1928
+#: mcs/mcs/class.cs:1952
 #, csharp-format
 msgid "A static member `{0}' cannot be marked as override, virtual or abstract"
 msgstr ""
 "staticメンバ `{0}' はoverride, virtual, abstractとして宣言することはできませ"
 "ã‚“"
 
-#: mcs/mcs/class.cs:1935
+#: mcs/mcs/class.cs:1959
 #, csharp-format
 msgid "A member `{0}' marked as override cannot be marked as new or virtual"
 msgstr ""
 "overrideとして宣言されたメンバ `{0}' にはnewおよびvirtualを指定できません"
 
-#: mcs/mcs/class.cs:1947
+#: mcs/mcs/class.cs:1971
 #, csharp-format
 msgid "`{0}' cannot be both extern and abstract"
 msgstr "`{0}' はexternかつabstractとすることはできません"
 
-#: mcs/mcs/class.cs:1952
+#: mcs/mcs/class.cs:1976
 #, csharp-format
 msgid "`{0}' cannot be both abstract and sealed"
 msgstr "`{0}' はabstractかつsealedとすることはできません"
 
-#: mcs/mcs/class.cs:1957
+#: mcs/mcs/class.cs:1981
 #, csharp-format
 msgid "The abstract method `{0}' cannot be marked virtual"
 msgstr "abstractメソッド `{0}' はvirtualとすることはできません"
 
-#: mcs/mcs/class.cs:1963
+#: mcs/mcs/class.cs:1987
 #, csharp-format
 msgid "`{0}' is abstract but it is declared in the non-abstract class `{1}'"
 msgstr ""
 "`{0}' はabstractですが、abstractでないクラス `{1}' の中で宣言されています"
 
-#: mcs/mcs/class.cs:1971
+#: mcs/mcs/class.cs:1995
 #, csharp-format
 msgid "`{0}': virtual or abstract members cannot be private"
 msgstr "`{0}': virtualまたはabstractのメンバはprivateにはできません"
 
-#: mcs/mcs/class.cs:1978
+#: mcs/mcs/class.cs:2002
 #, csharp-format
 msgid "`{0}' cannot be sealed because it is not an override"
 msgstr "`{0}' はoverrideではないため、sealedとすることはできません"
 
-#: mcs/mcs/class.cs:2025
+#: mcs/mcs/class.cs:2049
 #, csharp-format
 msgid "`{0}': containing type does not implement interface `{1}'"
 msgstr "`{0}' を含む型はインターフェース `{1}' を実装しません"
 
-#: mcs/mcs/class.cs:2125
+#: mcs/mcs/class.cs:2225
 #, csharp-format
 msgid "Type parameter `{0}' has same name as containing type, or method"
 msgstr ""
 "型パラメータ `{0}' が、その宣言型あるいはメソッドと同じ名前になっています"
 
-#: mcs/mcs/class.cs:2133
+#: mcs/mcs/class.cs:2233
 #, csharp-format
 msgid "`{0}': member names cannot be the same as their enclosing type"
 msgstr "`{0}': メンバ名はその宣言型と同一にはできません"
 
-#: mcs/mcs/class.cs:2294
+#: mcs/mcs/class.cs:2399
 msgid ""
 "The class System.Object cannot have a base class or implement an interface."
 msgstr ""
 "クラス System.Object には基底クラスやインターフェースを指定することはできませ"
 "ã‚“"
 
-#: mcs/mcs/class.cs:2302
+#: mcs/mcs/class.cs:2407
 #, csharp-format
 msgid "Attribute `{0}' is only valid on classes derived from System.Attribute"
 msgstr "属性 `{0}' はSystem.Attribute から派生したクラスでのみ有効です"
 
-#: mcs/mcs/class.cs:2307
+#: mcs/mcs/class.cs:2412
 msgid ""
 "Attribute `System.Diagnostics.ConditionalAttribute' is only valid on methods "
 "or attribute classes"
@@ -562,69 +1070,69 @@ msgstr ""
 "属性 `System.Diagnostics.ConditionalAttribute' はメソッドまたは属性クラスでの"
 "み有効です"
 
-#: mcs/mcs/class.cs:2345
+#: mcs/mcs/class.cs:2450
 #, csharp-format
 msgid "`{0}': Static classes cannot contain user-defined operators"
 msgstr "`{0}': staticクラスにはユーザー定義の演算子を含むことはできません"
 
-#: mcs/mcs/class.cs:2350
+#: mcs/mcs/class.cs:2455
 #, csharp-format
 msgid "`{0}': Static classes cannot contain destructor"
 msgstr "`{0}': staticクラスではデストラクタを定義できません"
 
-#: mcs/mcs/class.cs:2355
+#: mcs/mcs/class.cs:2460
 #, csharp-format
 msgid "`{0}': cannot declare indexers in a static class"
 msgstr "`{0}': staticクラスではインデクサを宣言できません"
 
-#: mcs/mcs/class.cs:2363
+#: mcs/mcs/class.cs:2468
 #, csharp-format
 msgid "`{0}': Static classes cannot have instance constructors"
 msgstr "`{0}': staticクラスではインスタンス コンストラクタを定義できません"
 
-#: mcs/mcs/class.cs:2369
+#: mcs/mcs/class.cs:2474
 #, csharp-format
 msgid "`{0}': Extension methods must be declared static"
 msgstr "`{0}': 拡張メソッドはstaticで宣言されなければなりません"
 
-#: mcs/mcs/class.cs:2373
+#: mcs/mcs/class.cs:2478
 #, csharp-format
 msgid "`{0}': cannot declare instance members in a static class"
 msgstr "`{0}': インスタンス メンバをstaticクラスで宣言することはできません"
 
-#: mcs/mcs/class.cs:2382
+#: mcs/mcs/class.cs:2487
 #, csharp-format
 msgid "`{0}': an abstract class cannot be sealed or static"
 msgstr "`{0}': abstractクラスはsealedまたはstaticにはできません"
 
-#: mcs/mcs/class.cs:2386
+#: mcs/mcs/class.cs:2491
 #, csharp-format
 msgid "`{0}': a class cannot be both static and sealed"
 msgstr "`{0}': クラスはstaticかつsealedとすることはできません"
 
-#: mcs/mcs/class.cs:2420
+#: mcs/mcs/class.cs:2521
 #, fuzzy, csharp-format
 msgid "`{0}': Cannot derive from type parameter `{1}'"
 msgstr "`{0}': staticクラス '{1}' から派生することはできません"
 
-#: mcs/mcs/class.cs:2424
+#: mcs/mcs/class.cs:2525
 #, csharp-format
 msgid ""
 "A generic type cannot derive from `{0}' because it is an attribute class"
 msgstr ""
 "`{0}' は属性クラスなので、ここからジェネリック型を派生することはできません"
 
-#: mcs/mcs/class.cs:2428
+#: mcs/mcs/class.cs:2529
 #, csharp-format
 msgid "`{0}': Cannot derive from static class `{1}'"
 msgstr "`{0}': staticクラス '{1}' から派生することはできません"
 
-#: mcs/mcs/class.cs:2432
+#: mcs/mcs/class.cs:2533
 #, fuzzy, csharp-format
 msgid "`{0}': cannot derive from sealed type `{1}'"
 msgstr "`{0}': sealedクラス `{1}' から派生することはできません"
 
-#: mcs/mcs/class.cs:2435
+#: mcs/mcs/class.cs:2536
 #, csharp-format
 msgid ""
 "Static class `{0}' cannot derive from type `{1}'. Static classes must derive "
@@ -633,12 +1141,12 @@ msgstr ""
 "staticクラス `{0}' は型 `{1}' から派生できません。staticクラスはobjectから派"
 "生しなければなりません"
 
-#: mcs/mcs/class.cs:2442
+#: mcs/mcs/class.cs:2543
 #, csharp-format
 msgid "`{0}' cannot derive from special class `{1}'"
 msgstr "`{0}' は特別なクラス `{1}' から派生することはできません"
 
-#: mcs/mcs/class.cs:2450
+#: mcs/mcs/class.cs:2551
 #, csharp-format
 msgid ""
 "Inconsistent accessibility: base class `{0}' is less accessible than class `"
@@ -647,55 +1155,55 @@ msgstr ""
 "一貫性の無いアクセス修飾子: 基底クラス `{0}' はクラス `{1}' よりもアクセスが"
 "限定的です"
 
-#: mcs/mcs/class.cs:2458
+#: mcs/mcs/class.cs:2559
 #, csharp-format
 msgid "Static class `{0}' cannot implement interfaces"
 msgstr "staticクラス `{0}' はインターフェースを実装できません"
 
-#: mcs/mcs/class.cs:2571 mcs/mcs/class.cs:2582
+#: mcs/mcs/class.cs:2678 mcs/mcs/class.cs:2689
 #, csharp-format
 msgid "Struct member `{0}' of type `{1}' causes a cycle in the struct layout"
 msgstr ""
 
-#: mcs/mcs/class.cs:2672
+#: mcs/mcs/class.cs:2779
 #, csharp-format
 msgid "`{0}': Structs cannot have instance field initializers"
 msgstr "`{0}': 構造体ではインスタンス フィールドを初期化できません"
 
-#: mcs/mcs/class.cs:2853
+#: mcs/mcs/class.cs:2960
 #, fuzzy, csharp-format
 msgid "Do not override `{0}'. Use destructor syntax instead"
 msgstr ""
 "`{0}' を直接使用せず、代わりにパラメータ修飾子 `this' を使用してください"
 
-#: mcs/mcs/class.cs:2856
+#: mcs/mcs/class.cs:2963
 #, csharp-format
 msgid "`{0}' is marked as an override but no suitable {1} found to override"
 msgstr ""
 "`{0}' はoverrideとして宣言されていますが、オーバーライドすべき{1}が見つかりま"
 "せん"
 
-#: mcs/mcs/class.cs:2862
+#: mcs/mcs/class.cs:2969
 #, csharp-format
 msgid "`{0}': cannot override because `{1}' is not an event"
 msgstr "`{0}': `{1}' はイベントではないため、オーバーライドできません"
 
-#: mcs/mcs/class.cs:2865
+#: mcs/mcs/class.cs:2972
 #, csharp-format
 msgid "`{0}': cannot override because `{1}' is not a property"
 msgstr "`{0}': `{1}' はプロパティではないため、オーバーライドできません"
 
-#: mcs/mcs/class.cs:2868
+#: mcs/mcs/class.cs:2975
 #, csharp-format
 msgid "`{0}': cannot override because `{1}' is not a method"
 msgstr "`{0}': `{1}' はメソッドではないため、オーバーライドできません"
 
-#: mcs/mcs/class.cs:2922
+#: mcs/mcs/class.cs:3031 mcs/mcs/field.cs:187
 #, csharp-format
 msgid "`{0}' hides inherited abstract member `{1}'"
 msgstr "`{0}' は継承されるabstractメンバ `{1}' を隠蔽してしまいます"
 
-#: mcs/mcs/class.cs:2946
+#: mcs/mcs/class.cs:3055
 #, csharp-format
 msgid ""
 "`{0}': cannot override inherited member `{1}' because it is not marked "
@@ -704,40 +1212,40 @@ msgstr ""
 "`{0}': 継承しようとするメンバ `{1}' は、virtual, abstractあるいはoverrideとし"
 "て宣言されていないので、オーバーライドすることはできません"
 
-#: mcs/mcs/class.cs:2954
+#: mcs/mcs/class.cs:3063
 #, csharp-format
 msgid "`{0}': cannot override inherited member `{1}' because it is sealed"
 msgstr ""
 "`{0}': 継承しようとするメンバ `{1}' はsealedであるため、オーバーライドできま"
 "せん"
 
-#: mcs/mcs/class.cs:2963
+#: mcs/mcs/class.cs:3072
 #, csharp-format
 msgid "`{0}': type must be `{1}' to match overridden member `{2}'"
 msgstr ""
 "`{0}': オーバーライドされたメンバ `{2}' に適合するためには、型が `{1}' でなけ"
 "ればなりません"
 
-#: mcs/mcs/class.cs:2966
+#: mcs/mcs/class.cs:3075
 #, csharp-format
 msgid "`{0}': return type must be `{1}' to match overridden member `{2}'"
 msgstr ""
 "`{0}': オーバーライドされたメンバ `{2}' に適合するには、戻り値型は `{1}' でな"
 "ければなりません"
 
-#: mcs/mcs/class.cs:3038
+#: mcs/mcs/class.cs:3143
 #, csharp-format
 msgid "A partial method `{0}' cannot explicitly implement an interface"
 msgstr "部分メソッド `{0}' はインターフェースを明示的に実装できません"
 
-#: mcs/mcs/class.cs:3046
+#: mcs/mcs/class.cs:3151
 #, fuzzy, csharp-format
 msgid "The type `{0}' in explicit interface declaration is not an interface"
 msgstr ""
 "明示的なインターフェース実装で記述された `{0}' は、インターフェースではありま"
 "せん"
 
-#: mcs/mcs/class.cs:3077
+#: mcs/mcs/class.cs:3182
 #, csharp-format
 msgid ""
 "Inconsistent accessibility: parameter type `{0}' is less accessible than "
@@ -746,7 +1254,7 @@ msgstr ""
 "一貫性の無いアクセス制限: パラメータ型 `{0}' はインデクサ '{1}' よりもアクセ"
 "スが限られています"
 
-#: mcs/mcs/class.cs:3081
+#: mcs/mcs/class.cs:3186
 #, csharp-format
 msgid ""
 "Inconsistent accessibility: parameter type `{0}' is less accessible than "
@@ -755,7 +1263,7 @@ msgstr ""
 "一貫性の無いアクセス制限: パラメータ型 `{0}' は演算子 '{1}' よりもアクセスが"
 "限られています"
 
-#: mcs/mcs/class.cs:3085
+#: mcs/mcs/class.cs:3190
 #, csharp-format
 msgid ""
 "Inconsistent accessibility: parameter type `{0}' is less accessible than "
@@ -764,14 +1272,14 @@ msgstr ""
 "一貫性の無いアクセス制限: パラメータ型 `{0}' はメソッド '{1}' よりもアクセス"
 "が限られています"
 
-#: mcs/mcs/class.cs:3099
+#: mcs/mcs/class.cs:3204
 #, csharp-format
 msgid ""
 "Constructor `{0}' is marked `external' but has no external implementation "
 "specified"
 msgstr ""
 
-#: mcs/mcs/class.cs:3102
+#: mcs/mcs/class.cs:3207
 #, csharp-format
 msgid ""
 "`{0}' is marked as an external but has no DllImport attribute. Consider "
@@ -780,7 +1288,7 @@ msgstr ""
 "`{0}' はexternalとして宣言されていますが、DllImport属性をもちません。"
 "DllImport属性を追加して、外部実装を指定するようにしてください"
 
-#: mcs/mcs/class.cs:3131
+#: mcs/mcs/class.cs:3243
 #, csharp-format
 msgid ""
 "`{0}': cannot change access modifiers when overriding `{1}' inherited member "
@@ -789,727 +1297,637 @@ msgstr ""
 "`{0}': `{1}' の継承されたメンバー `{2}' をオーバーライドするとき、アクセス修"
 "飾子は変更できません"
 
-#: mcs/mcs/class.cs:3140
+#: mcs/mcs/class.cs:3252
 #, fuzzy, csharp-format
 msgid "`{0}': static types cannot be used as return types"
 msgstr "`{0}': staticクラスではインスタンス コンストラクタを定義できません"
 
-#: mcs/mcs/class.cs:3265
+#: mcs/mcs/class.cs:3377
 #, csharp-format
 msgid "New virtual member `{0}' is declared in a sealed class `{1}'"
 msgstr ""
 
-#: mcs/mcs/class.cs:3280
+#: mcs/mcs/class.cs:3392
 msgid "Inconsistent accessibility: property type `"
 msgstr ""
 
-#: mcs/mcs/class.cs:3285
+#: mcs/mcs/class.cs:3397
 msgid "Inconsistent accessibility: indexer return type `"
 msgstr ""
 
-#: mcs/mcs/class.cs:3291 mcs/mcs/class.cs:3296 mcs/mcs/delegate.cs:154
+#: mcs/mcs/class.cs:3403 mcs/mcs/class.cs:3408 mcs/mcs/delegate.cs:159
 msgid "Inconsistent accessibility: return type `"
 msgstr ""
 
-#: mcs/mcs/class.cs:3301
+#: mcs/mcs/class.cs:3413
 msgid "Inconsistent accessibility: field type `"
 msgstr ""
 
-#: mcs/mcs/class.cs:3314
+#: mcs/mcs/class.cs:3426
 #, csharp-format
 msgid "Field or property cannot be of type `{0}'"
 msgstr ""
 
-#: mcs/mcs/codegen.cs:115
-msgid "Assembly generation failed -- Referenced assembly '"
-msgstr ""
-
-#: mcs/mcs/codegen.cs:133
-msgid "Could not access the key inside the container `"
-msgstr ""
-
-#: mcs/mcs/codegen.cs:141
-msgid "Could not use the specified key to strongname the assembly."
-msgstr ""
-
-#: mcs/mcs/codegen.cs:167
-msgid ""
-"Could not find the symbol writer assembly (Mono.CompilerServices."
-"SymbolWriter.dll)"
-msgstr ""
-
-#: mcs/mcs/codegen.cs:172
-#, csharp-format
-msgid "Unexpected debug information initialization error `{0}'"
-msgstr ""
-
-#: mcs/mcs/codegen.cs:212
-msgid "Couldn't delay-sign the assembly with the '"
-msgstr ""
-
-#: mcs/mcs/codegen.cs:217 mcs/mcs/codegen.cs:221
-msgid "Could not write to file `"
-msgstr ""
-
-#: mcs/mcs/codegen.cs:1104 mcs/mcs/codegen.cs:1119
-#, csharp-format
-msgid ""
-"Option `{0}' overrides attribute `{1}' given in a source file or added module"
-msgstr ""
-
-#: mcs/mcs/codegen.cs:1189
-msgid ""
-"Could not sign the assembly. ECMA key can only be used to delay-sign "
-"assemblies"
-msgstr ""
-
-#: mcs/mcs/codegen.cs:1209
-msgid "Error during assembly signing. "
-msgstr ""
-
-#: mcs/mcs/codegen.cs:1233
-msgid "Friend assembly reference `"
-msgstr ""
-
-#: mcs/mcs/codegen.cs:1358
-msgid "Invalid type specified as an argument for TypeForwardedTo attribute"
-msgstr ""
-
-#: mcs/mcs/codegen.cs:1366
-#, csharp-format
-msgid "A duplicate type forward of type `{0}'"
-msgstr ""
-
-#: mcs/mcs/codegen.cs:1375
-#, csharp-format
-msgid "Cannot forward type `{0}' because it is defined in this assembly"
-msgstr ""
-
-#: mcs/mcs/codegen.cs:1381
-#, csharp-format
-msgid "Cannot forward type `{0}' because it is a nested type"
-msgstr ""
-
-#: mcs/mcs/const.cs:120
+#: mcs/mcs/const.cs:103
 #, fuzzy, csharp-format
 msgid "Type parameter `{0}' cannot be declared const"
 msgstr "abstractメソッド `{0}' はvirtualとすることはできません"
 
-#: mcs/mcs/const.cs:123
+#: mcs/mcs/const.cs:106
 #, csharp-format
 msgid "The type `{0}' cannot be declared const"
 msgstr ""
 
-#: mcs/mcs/const.cs:198
+#: mcs/mcs/const.cs:181
 #, csharp-format
 msgid ""
 "The evaluation of the constant value for `{0}' involves a circular definition"
 msgstr ""
 
-#: mcs/mcs/constant.cs:58 mcs/mcs/constant.cs:305
+#: mcs/mcs/constant.cs:68 mcs/mcs/constant.cs:319
 #, csharp-format
 msgid "Constant value `{0}' cannot be converted to a `{1}'"
 msgstr ""
 
-#: mcs/mcs/constant.cs:177
+#: mcs/mcs/constant.cs:187
 #, csharp-format
 msgid ""
 "Constant value `{0}' cannot be converted to a `{1}' (use `unchecked' syntax "
 "to override)"
 msgstr ""
 
-#: mcs/mcs/decl.cs:370
+#: mcs/mcs/convert.cs:1158
 #, csharp-format
-msgid "`{0}' cannot declare a body because it is marked extern"
+msgid ""
+"Ambiguous user defined operators `{0}' and `{1}' when converting from `{2}' "
+"to `{3}'"
 msgstr ""
 
 #: mcs/mcs/decl.cs:376
 #, csharp-format
+msgid "`{0}' cannot declare a body because it is marked extern"
+msgstr ""
+
+#: mcs/mcs/decl.cs:382
+#, csharp-format
 msgid "`{0}' cannot declare a body because it is marked abstract"
 msgstr ""
 
-#: mcs/mcs/decl.cs:389
+#: mcs/mcs/decl.cs:395
 #, csharp-format
 msgid ""
 "`{0}' must have a body because it is not marked abstract or extern. The "
 "property can be automatically implemented when you define both accessors"
 msgstr ""
 
-#: mcs/mcs/decl.cs:395
+#: mcs/mcs/decl.cs:401
 #, csharp-format
 msgid ""
 "`{0}' must have a body because it is not marked abstract, extern, or partial"
 msgstr ""
 
-#: mcs/mcs/decl.cs:410
+#: mcs/mcs/decl.cs:416
 #, csharp-format
 msgid "`{0}': Structs cannot contain protected members"
 msgstr ""
 
-#: mcs/mcs/decl.cs:416
+#: mcs/mcs/decl.cs:422
 #, csharp-format
 msgid "`{0}': Static classes cannot contain protected members"
 msgstr ""
 
-#: mcs/mcs/decl.cs:1260
+#: mcs/mcs/decl.cs:1295
 #, csharp-format
 msgid "The namespace `{0}' already contains a definition for `{1}'"
 msgstr ""
 
-#: mcs/mcs/decl.cs:1264
+#: mcs/mcs/decl.cs:1299
 #, csharp-format
 msgid "Duplicate type parameter `{0}'"
 msgstr ""
 
-#: mcs/mcs/decl.cs:1267
+#: mcs/mcs/decl.cs:1302
 #, csharp-format
 msgid "The type `{0}' already contains a definition for `{1}'"
 msgstr ""
 
-#: mcs/mcs/decl.cs:1317
+#: mcs/mcs/decl.cs:1352
 #, csharp-format
 msgid ""
 "Missing partial modifier on declaration of type `{0}'. Another partial "
 "declaration of this type exists"
 msgstr ""
 
-#: mcs/mcs/decl.cs:1485
-msgid "Constraints are not allowed on non-generic declarations"
-msgstr ""
-
-#: mcs/mcs/decl.cs:1522
+#: mcs/mcs/decl.cs:1441
 msgid "Variant type parameters can only be used with interfaces and delegates"
 msgstr ""
 
-#: mcs/mcs/decl.cs:1534
+#: mcs/mcs/decl.cs:1453
 #, csharp-format
 msgid "`{0}': A constraint references nonexistent type parameter `{1}'"
 msgstr ""
 
-#: mcs/mcs/delegate.cs:136
+#: mcs/mcs/delegate.cs:141
 #, csharp-format
 msgid ""
 "Inconsistent accessibility: parameter type `{0}' is less accessible than "
 "delegate `{1}'"
 msgstr ""
 
-#: mcs/mcs/delegate.cs:463
+#: mcs/mcs/delegate.cs:487
 #, csharp-format
 msgid ""
 "Cannot create delegate from method `{0}' because it is a member of System."
 "Nullable<T> type"
 msgstr ""
 
-#: mcs/mcs/delegate.cs:475
+#: mcs/mcs/delegate.cs:499
 #, csharp-format
 msgid ""
 "Extension method `{0}' of value type `{1}' cannot be used to create delegates"
 msgstr ""
 
-#: mcs/mcs/delegate.cs:490
+#: mcs/mcs/delegate.cs:514
 #, csharp-format
 msgid "Cannot create delegate from partial method declaration `{0}'"
 msgstr ""
 
-#: mcs/mcs/delegate.cs:493
+#: mcs/mcs/delegate.cs:517
 #, csharp-format
 msgid ""
 "Cannot create delegate with `{0}' because it has a Conditional attribute"
 msgstr ""
 
-#: mcs/mcs/delegate.cs:536
+#: mcs/mcs/delegate.cs:560
 #, csharp-format
 msgid ""
 "A method or delegate `{0} {1}' parameters and return type must be same as "
 "delegate `{2} {3}' parameters and return type"
 msgstr ""
 
-#: mcs/mcs/delegate.cs:543
+#: mcs/mcs/delegate.cs:567
 #, csharp-format
 msgid ""
 "A method or delegate `{0}' parameters do not match delegate `{1}' parameters"
 msgstr ""
 
-#: mcs/mcs/delegate.cs:548
+#: mcs/mcs/delegate.cs:572
 #, csharp-format
 msgid ""
 "A method or delegate `{0} {1}' return type does not match delegate `{2} {3}' "
 "return type"
 msgstr ""
 
-#: mcs/mcs/delegate.cs:631
+#: mcs/mcs/delegate.cs:655
 msgid "Method name expected"
 msgstr ""
 
-#: mcs/mcs/doc.cs:910
+#: mcs/mcs/doc.cs:914
 #, csharp-format
 msgid "Error generating XML documentation file `{0}' (`{1}')"
 msgstr ""
 
-#: mcs/mcs/driver.cs:164 mcs/mcs/driver.cs:716 mcs/mcs/driver.cs:719
+#: mcs/mcs/driver.cs:96 mcs/mcs/driver.cs:467 mcs/mcs/driver.cs:470
 msgid "Source file `"
 msgstr ""
 
-#: mcs/mcs/driver.cs:191
+#: mcs/mcs/driver.cs:123
 #, csharp-format
 msgid "Source file `{0}' could not be found"
 msgstr ""
 
-#: mcs/mcs/driver.cs:199
+#: mcs/mcs/driver.cs:129
 #, csharp-format
 msgid "Source file `{0}' is a binary file and not a text file"
 msgstr ""
 
-#: mcs/mcs/driver.cs:281
+#: mcs/mcs/driver.cs:216
 msgid ""
 "Invalid target type for -target. Valid options are `exe', `winexe', "
 "`library' or `module'"
 msgstr ""
 
-#: mcs/mcs/driver.cs:332
-#, csharp-format
-msgid "cannot find metadata file `{0}'"
-msgstr ""
-
-#: mcs/mcs/driver.cs:339
-#, csharp-format
-msgid "file `{0}' has invalid `{1}' metadata"
-msgstr ""
-
-#: mcs/mcs/driver.cs:359
-#, csharp-format
-msgid ""
-"Referenced file `{0}' is not an assembly. Consider using `-addmodule' option "
-"instead"
-msgstr ""
-"参照ファイル `{0}' はアセンブリではありません。代わりに`-addmodule' オプショ"
-"ンを使用してみてください"
-
-#: mcs/mcs/driver.cs:612
+#: mcs/mcs/driver.cs:363
 msgid "Response file `"
 msgstr "レスポンスファイル `"
 
-#: mcs/mcs/driver.cs:621
+#: mcs/mcs/driver.cs:372
 msgid "Unable to open response file: "
 msgstr "レスポンスファイルが開けません"
 
-#: mcs/mcs/driver.cs:671 mcs/mcs/driver.cs:681
+#: mcs/mcs/driver.cs:422 mcs/mcs/driver.cs:432
 msgid "No files to compile were specified"
 msgstr "コンパイルするファイルが指定されていません"
 
-#: mcs/mcs/driver.cs:813
+#: mcs/mcs/driver.cs:504
 msgid "Warning level must be in the range 0-4"
 msgstr ""
 
-#: mcs/mcs/driver.cs:847
+#: mcs/mcs/driver.cs:538
 msgid "Compatibility: Use -main:CLASS instead of --main CLASS or -m CLASS"
 msgstr ""
 
-#: mcs/mcs/driver.cs:856
+#: mcs/mcs/driver.cs:547
 msgid "Compatibility: Use -unsafe instead of --unsafe"
 msgstr ""
 
-#: mcs/mcs/driver.cs:867
+#: mcs/mcs/driver.cs:558
 msgid "Compatibility: Use -d:SYMBOL instead of --define SYMBOL"
 msgstr ""
 
-#: mcs/mcs/driver.cs:881
+#: mcs/mcs/driver.cs:572
 msgid "Compatibility: Use -out:FILE instead of --output FILE or -o FILE"
 msgstr ""
 
-#: mcs/mcs/driver.cs:890
+#: mcs/mcs/driver.cs:581
 msgid "Compatibility: Use -checked instead of --checked"
 msgstr ""
 
-#: mcs/mcs/driver.cs:900
+#: mcs/mcs/driver.cs:591
 msgid "Compatibility: Use -linkres:VALUE instead of --linkres VALUE"
 msgstr ""
 
-#: mcs/mcs/driver.cs:903
+#: mcs/mcs/driver.cs:594
 msgid "Missing argument to --linkres"
 msgstr ""
 
-#: mcs/mcs/driver.cs:914
+#: mcs/mcs/driver.cs:603
 msgid "Compatibility: Use -res:VALUE instead of --res VALUE"
 msgstr ""
 
-#: mcs/mcs/driver.cs:917
+#: mcs/mcs/driver.cs:606
 msgid "Missing argument to --resource"
 msgstr ""
 
-#: mcs/mcs/driver.cs:927
+#: mcs/mcs/driver.cs:614
 msgid "Compatibility: Use -target:KIND instead of --target KIND"
 msgstr ""
 
-#: mcs/mcs/driver.cs:959
+#: mcs/mcs/driver.cs:646
 msgid "Compatibility: Use -r:LIBRARY instead of -r library"
 msgstr ""
 
-#: mcs/mcs/driver.cs:978
+#: mcs/mcs/driver.cs:665
 msgid "Compatibility: Use -lib:ARG instead of --L arg"
 msgstr ""
 
-#: mcs/mcs/driver.cs:991
+#: mcs/mcs/driver.cs:678
 msgid "Compatibility: Use -nostdlib instead of --nostdlib"
 msgstr ""
 
-#: mcs/mcs/driver.cs:996
+#: mcs/mcs/driver.cs:683
 msgid "Compatibility: Use -nowarn instead of --nowarn"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1013
+#: mcs/mcs/driver.cs:700
 msgid "Compatibility: Use -warn:LEVEL instead of --wlevel LEVEL"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1017
+#: mcs/mcs/driver.cs:704
 msgid "--wlevel requires a value from 0 to 4"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1026
+#: mcs/mcs/driver.cs:713
 msgid "--mcs-debug requires an argument"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1033
+#: mcs/mcs/driver.cs:720
 msgid "Invalid argument to --mcs-debug"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1043
+#: mcs/mcs/driver.cs:730
 msgid "Compatibility: Use -recurse:PATTERN option instead --recurse PATTERN"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1045
+#: mcs/mcs/driver.cs:732
 msgid "--recurse requires an argument"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1057
+#: mcs/mcs/driver.cs:743
 msgid "Compatibility: Use -debug option instead of -g or --debug"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1062
+#: mcs/mcs/driver.cs:748
 msgid "Compatibility: Use -noconfig option instead of --noconfig"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1206
+#: mcs/mcs/driver.cs:912
 #, csharp-format
 msgid "Invalid conditional define symbol `{0}'"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1260
+#: mcs/mcs/driver.cs:963
 #, csharp-format
 msgid ""
 "Invalid resource visibility option `{0}'. Use either `public' or `private' "
 "instead"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1266
+#: mcs/mcs/driver.cs:969
 #, csharp-format
 msgid "Wrong number of arguments for option `{0}'"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1274
-msgid "-recurse requires an argument"
+#: mcs/mcs/driver.cs:1007
+msgid "Cannot specify multiple aliases using single /reference option"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1283
-msgid "-reference requires an argument"
-msgstr ""
-
-#: mcs/mcs/driver.cs:1305 mcs/mcs/driver.cs:1317 mcs/mcs/driver.cs:1329
-#: mcs/mcs/driver.cs:1341 mcs/mcs/driver.cs:1494 mcs/mcs/driver.cs:1514
-#: mcs/mcs/driver.cs:1521
-msgid " requires an argument"
-msgstr ""
-
-#: mcs/mcs/driver.cs:1322 mcs/mcs/driver.cs:1334
+#: mcs/mcs/driver.cs:1035 mcs/mcs/driver.cs:1047
 msgid ""
 "Cannot specify the `win32res' and the `win32ico' compiler option at the same "
 "time"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1351
-msgid "/lib requires an argument"
-msgstr ""
-
-#: mcs/mcs/driver.cs:1428
-msgid "/nowarn requires an argument"
+#: mcs/mcs/driver.cs:1162
+#, csharp-format
+msgid "`{0}' is not a valid warning number"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1469
+#: mcs/mcs/driver.cs:1192
 msgid ""
 "Invalid platform type for -platform. Valid options are `anycpu', `x86', "
 "`x64' or `itanium'"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1553
+#: mcs/mcs/driver.cs:1212
+msgid "Invalid sdk version name"
+msgstr ""
+
+#: mcs/mcs/driver.cs:1310
 #, csharp-format
 msgid ""
 "Invalid -langversion option `{0}'. It must be `ISO-1', `ISO-2', `3' or "
 "`Default'"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1569
+#: mcs/mcs/driver.cs:1330
 #, csharp-format
 msgid "Code page `{0}' is invalid or not installed"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1581
+#: mcs/mcs/driver.cs:1345
 #, csharp-format
 msgid "Unrecognized command-line option: `{0}'"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1611
-msgid "Invalid reference alias '"
-msgstr ""
-
-#: mcs/mcs/driver.cs:1616
-msgid "Invalid extern alias for /reference. Alias '"
-msgstr ""
-
-#: mcs/mcs/driver.cs:1672
-msgid ""
-"If no source files are specified you must specify the output file with -out:"
-msgstr ""
-
-#: mcs/mcs/driver.cs:1802
+#: mcs/mcs/driver.cs:1350
 #, csharp-format
-msgid "Could not find `{0}' specified for Main method"
+msgid "Missing file specification for `{0}' option"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1807
+#: mcs/mcs/driver.cs:1355
 #, csharp-format
-msgid "`{0}' specified for Main method must be a valid class or struct"
+msgid "Missing argument for `{0}' option"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1811
+#: mcs/mcs/driver.cs:1390
 #, csharp-format
-msgid "`{0}' does not have a suitable static Main method"
+msgid "Invalid reference alias `{0}='. Missing filename"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1816
+#: mcs/mcs/driver.cs:1395
 #, csharp-format
 msgid ""
-"Program `{0}' does not contain a static `Main' method suitable for an entry "
-"point"
+"Invalid extern alias for -reference. Alias `{0}' is not a valid identifier"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1823
-msgid "Cannot specify -main if building a module or library"
+#: mcs/mcs/driver.cs:1411
+#, csharp-format
+msgid "The resource identifier `{0}' has already been used in this assembly"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1828
-msgid "Cannot link resource file when building a module"
+#: mcs/mcs/driver.cs:1472
+msgid ""
+"If no source files are specified you must specify the output file with -out:"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1966
-#, csharp-format
-msgid "The resource identifier `{0}' has already been used in this assembly"
-msgstr ""
+#: mcs/mcs/dynamic.cs:272
+#, fuzzy
+msgid "An expression tree cannot contain a dynamic operation"
+msgstr "式ツリーは代入オペレータを含むことができません"
 
-#: mcs/mcs/driver.cs:1980
-#, csharp-format
-msgid "Error reading resource file `{0}'"
+#: mcs/mcs/dynamic.cs:302
+msgid ""
+"Dynamic operation cannot be compiled without `Microsoft.CSharp.dll' assembly "
+"reference"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:251
+#: mcs/mcs/ecore.cs:247
 #, csharp-format
 msgid "`{0}' is inaccessible due to its protection level"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:256
+#: mcs/mcs/ecore.cs:252
 #, csharp-format
 msgid "The expression being assigned to `{0}' must be constant"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:261
+#: mcs/mcs/ecore.cs:257
 #, csharp-format
 msgid ""
 "A constant `{0}' of reference type `{1}' can only be initialized with null"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:267
+#: mcs/mcs/ecore.cs:263
 msgid ""
 "Only assignment, call, increment, decrement, and new object expressions can "
 "be used as a statement"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:278
+#: mcs/mcs/ecore.cs:274
 msgid "Keyword `void' cannot be used in this context"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:312
+#: mcs/mcs/ecore.cs:308
 #, csharp-format
 msgid "Cannot convert type `{0}' to `{1}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:322
+#: mcs/mcs/ecore.cs:318
 #, csharp-format
 msgid ""
 "Cannot implicitly convert type `{0}' to `{1}'. An explicit conversion exists "
 "(are you missing a cast?)"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:328
+#: mcs/mcs/ecore.cs:324
 #, csharp-format
 msgid "Cannot implicitly convert type `{0}' to `{1}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:334
-#, csharp-format
-msgid "A local variable `{0}' cannot be used before it is declared"
-msgstr ""
-
-#: mcs/mcs/ecore.cs:374
+#: mcs/mcs/ecore.cs:365
 #, csharp-format
 msgid "`{0}' does not contain a definition for `{1}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:380
+#: mcs/mcs/ecore.cs:371
 msgid ""
 "The left-hand side of an assignment must be a variable, a property or an "
 "indexer"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:442 mcs/mcs/statement.cs:2849 mcs/mcs/statement.cs:2851
+#: mcs/mcs/ecore.cs:376
+msgid "The operation in question is undefined on void pointers"
+msgstr ""
+
+#: mcs/mcs/ecore.cs:438 mcs/mcs/statement.cs:2558 mcs/mcs/statement.cs:2560
 #, csharp-format
 msgid "Internal compiler error: {0}"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:482
+#: mcs/mcs/ecore.cs:478
 msgid "A ref or out argument must be an assignable variable"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:501
+#: mcs/mcs/ecore.cs:497
 msgid ""
 "An attribute argument must be a constant expression, typeof expression or "
 "array creation expression"
 msgstr "属性の引数は定数、typeof式または配列生成式でなければなりません"
 
-#: mcs/mcs/ecore.cs:572
+#: mcs/mcs/ecore.cs:568
 #, csharp-format
 msgid "The class `{0}' has no constructors defined"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:629
+#: mcs/mcs/ecore.cs:653
 #, csharp-format
 msgid "Ambiguity between `{0}' and `{1}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:656
+#: mcs/mcs/ecore.cs:680
 msgid "An expression tree cannot contain an unsafe pointer operation"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:777
+#: mcs/mcs/ecore.cs:801
 #, csharp-format
 msgid "Expression denotes a `{0}', where a `{1}' was expected"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:787
+#: mcs/mcs/ecore.cs:811
 msgid "Pointers and fixed size buffers may only be used in an unsafe context"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:822
+#: mcs/mcs/ecore.cs:846
 #, csharp-format
 msgid ""
 "Members of value type `{0}' cannot be assigned using a property `{1}' object "
 "initializer"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:825
+#: mcs/mcs/ecore.cs:849
 #, csharp-format
 msgid ""
 "Cannot modify a value type return value of `{0}'. Consider storing the value "
 "in a temporary variable"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:1491
-msgid "Cannot modify the result of an unboxing conversion"
-msgstr ""
-
-#: mcs/mcs/ecore.cs:2239
+#: mcs/mcs/ecore.cs:2275
 #, csharp-format
 msgid ""
 "Dynamic keyword requires `{0}' to be defined. Are you missing System.Core."
 "dll assembly reference?"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:2363
+#: mcs/mcs/ecore.cs:2349
+#, csharp-format
+msgid ""
+"A local variable `{0}' cannot be used before it is declared. Consider "
+"renaming the local variable when it hides the member `{1}'"
+msgstr ""
+
+#: mcs/mcs/ecore.cs:2364 mcs/mcs/ecore.cs:2408
+#, csharp-format
+msgid "`{0}' conflicts with a declaration in a child block"
+msgstr ""
+
+#: mcs/mcs/ecore.cs:2417
+#, csharp-format
+msgid "A local variable `{0}' cannot be used before it is declared"
+msgstr ""
+
+#: mcs/mcs/ecore.cs:2419
 #, csharp-format
 msgid "The name `{0}' does not exist in the current context"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:2620
+#: mcs/mcs/ecore.cs:2669
 #, csharp-format
 msgid ""
 "Cannot access protected member `{0}' via a qualifier of type `{1}'. The "
 "qualifier must be of type `{2}' or derived from it"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:2664
+#: mcs/mcs/ecore.cs:2718
 #, csharp-format
 msgid "Cannot call an abstract base member `{0}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:2703
+#: mcs/mcs/ecore.cs:2762
 #, csharp-format
 msgid ""
 "Static member `{0}' cannot be accessed with an instance reference, qualify "
 "it with a type name instead"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:2718
+#: mcs/mcs/ecore.cs:2777
 #, csharp-format
 msgid ""
 "A field initializer cannot reference the nonstatic field, method, or "
 "property `{0}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:2722
+#: mcs/mcs/ecore.cs:2781
 #, csharp-format
 msgid "An object reference is required to access non-static member `{0}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:2730
+#: mcs/mcs/ecore.cs:2789
 #, csharp-format
 msgid ""
 "Cannot access a nonstatic member of outer type `{0}' via nested type `{1}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:2868
+#: mcs/mcs/ecore.cs:2837
+msgid "Cannot modify the result of an unboxing conversion"
+msgstr ""
+
+#: mcs/mcs/ecore.cs:2958
 #, csharp-format
 msgid ""
 "Type `{0}' does not contain a member `{1}' and the best extension method "
 "overload `{2}' has some invalid arguments"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:2873
+#: mcs/mcs/ecore.cs:2963
 #, csharp-format
 msgid "Extension method instance type `{0}' cannot be converted to `{1}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:2989
+#: mcs/mcs/ecore.cs:3087
 msgid "An expression tree cannot contain an expression with method group"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:2995
+#: mcs/mcs/ecore.cs:3093
 msgid ""
 "Partial methods with only a defining declaration or removed conditional "
 "methods cannot be used in an expression tree"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:3025
+#: mcs/mcs/ecore.cs:3123
 #, csharp-format
 msgid ""
 "Cannot convert method group `{0}' to non-delegate type `{1}'. Consider using "
 "parentheses to invoke the method"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:3532
+#: mcs/mcs/ecore.cs:3719
 #, csharp-format
 msgid ""
 "The type `{0}' does not contain a constructor that takes `{1}' arguments"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:3986
+#: mcs/mcs/ecore.cs:4334
 #, csharp-format
 msgid ""
 "Type `{0}' does not contain a member `{1}' and the best extension method "
@@ -1517,489 +1935,472 @@ msgid ""
 "without the extension method syntax"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4007
+#: mcs/mcs/ecore.cs:4355
 #, csharp-format
 msgid ""
 "The call is ambiguous between the following methods or properties: `{0}' and "
 "`{1}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4062
+#: mcs/mcs/ecore.cs:4415
 #, csharp-format
 msgid ""
 "The best overloaded collection initalizer method `{0}' cannot have 'ref', or "
 "`out' modifier"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4066
+#: mcs/mcs/ecore.cs:4419
 #, csharp-format
 msgid ""
 "The best overloaded collection initalizer method `{0}' has some invalid "
 "arguments"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4069
+#: mcs/mcs/ecore.cs:4422
 #, csharp-format
 msgid "Delegate `{0}' has some invalid arguments"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4073
+#: mcs/mcs/ecore.cs:4426
 #, csharp-format
 msgid "The best overloaded method match for `{0}' has some invalid arguments"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4083
+#: mcs/mcs/ecore.cs:4436
 #, csharp-format
 msgid ""
 "Argument `#{0}' does not require `{1}' modifier. Consider removing `{1}' "
 "modifier"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4086
+#: mcs/mcs/ecore.cs:4439
 #, csharp-format
 msgid "Argument `#{0}' is missing `{1}' modifier"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4099
+#: mcs/mcs/ecore.cs:4452
 #, csharp-format
 msgid "Argument `#{0}' cannot convert `{1}' expression to type `{2}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4148
+#: mcs/mcs/ecore.cs:4500
 #, csharp-format
 msgid ""
 "The type arguments for method `{0}' cannot be inferred from the usage. Try "
 "specifying the type arguments explicitly"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4177
+#: mcs/mcs/ecore.cs:4529
 #, csharp-format
 msgid "No overload for method `{0}' takes `{1}' arguments"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4230
+#: mcs/mcs/ecore.cs:4582
 #, fuzzy, csharp-format
 msgid "The delegate `{0}' does not contain a parameter named `{1}'"
 msgstr "デリゲート `{0}' は `{1}' 個の引数をもちません"
 
-#: mcs/mcs/ecore.cs:4235
+#: mcs/mcs/ecore.cs:4587
 #, csharp-format
 msgid ""
 "The best overloaded method match for `{0}' does not contain a parameter "
 "named `{1}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4245
+#: mcs/mcs/ecore.cs:4597
 #, csharp-format
 msgid ""
 "Named argument `{0}' cannot be used for a parameter which has positional "
 "argument specified"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4546
+#: mcs/mcs/ecore.cs:4910
 msgid ""
 "You cannot use fixed size buffers contained in unfixed expressions. Try "
 "using the fixed statement"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4551
+#: mcs/mcs/ecore.cs:4915
 #, csharp-format
 msgid "`{0}': Fixed size buffers can only be accessed through locals or fields"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4942
+#: mcs/mcs/ecore.cs:5310
 #, csharp-format
 msgid "Property or event `{0}' is not supported by the C# language"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:5096
+#: mcs/mcs/ecore.cs:5471
 #, csharp-format
 msgid "A range variable `{0}' may not be passes as `ref' or `out' parameter"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:5144
+#: mcs/mcs/ecore.cs:5519
 #, csharp-format
 msgid ""
 "The property or indexer `{0}' cannot be used in this context because it "
 "lacks the `get' accessor"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:5151
+#: mcs/mcs/ecore.cs:5526
 #, csharp-format
 msgid ""
 "The property or indexer `{0}' cannot be used in this context because the get "
 "accessor is inaccessible"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:5171
-#, csharp-format
-msgid ""
-"A range variable `{0}' cannot be assigned to. Consider using `let' clause to "
-"store the value"
-msgstr ""
-
-#: mcs/mcs/ecore.cs:5174
+#: mcs/mcs/ecore.cs:5545
 #, csharp-format
 msgid "Property or indexer `{0}' cannot be assigned to (it is read-only)"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:5183
+#: mcs/mcs/ecore.cs:5553
 #, csharp-format
 msgid ""
 "The property or indexer `{0}' cannot be used in this context because the set "
 "accessor is inaccessible"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:5346
+#: mcs/mcs/ecore.cs:5714
 #, csharp-format
 msgid ""
 "The event `{0}' can only appear on the left hand side of `+=' or `-=' "
 "operator"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:5353
+#: mcs/mcs/ecore.cs:5718
 #, csharp-format
 msgid ""
 "The event `{0}' can only appear on the left hand side of += or -= when used "
 "outside of the type `{1}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:5485
+#: mcs/mcs/ecore.cs:5882
 #, csharp-format
 msgid ""
 "An implicitly typed local variable declaration cannot be initialized with `"
 "{0}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:5499
+#: mcs/mcs/ecore.cs:5896
 msgid ""
 "The contextual keyword `var' may only appear within a local variable "
 "declaration"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:5515
-msgid ""
-"An implicitly typed local variable declaration cannot include multiple "
-"declarators"
-msgstr ""
-
-#: mcs/mcs/ecore.cs:5522
-msgid ""
-"An implicitly typed local variable declarator must include an initializer"
-msgstr ""
-
-#: mcs/mcs/enum.cs:121
+#: mcs/mcs/enum.cs:125
 #, csharp-format
 msgid ""
 "The enumerator value `{0}' is outside the range of enumerator underlying "
 "type `{1}'"
 msgstr ""
 
-#: mcs/mcs/enum.cs:185
+#: mcs/mcs/enum.cs:189
 #, csharp-format
 msgid "An item in an enumeration cannot have an identifier `{0}'"
 msgstr ""
 
-#: mcs/mcs/enum.cs:196
+#: mcs/mcs/enum.cs:200
 msgid "Type byte, sbyte, short, ushort, int, uint, long or ulong expected"
 msgstr ""
 
-#: mcs/mcs/eval.cs:624
+#: mcs/mcs/eval.cs:626
 msgid "Detection Parsing Error"
 msgstr ""
 
-#: mcs/mcs/expression.cs:531
+#: mcs/mcs/expression.cs:542
 #, csharp-format
 msgid "The `{0}' operator cannot be applied to operand of type `{1}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:611
+#: mcs/mcs/expression.cs:622
 msgid "Cannot take the address of the given expression"
 msgstr ""
 
-#: mcs/mcs/expression.cs:645
+#: mcs/mcs/expression.cs:656
 msgid ""
 "You can only take the address of unfixed expression inside of a fixed "
 "statement initializer"
 msgstr ""
 
-#: mcs/mcs/expression.cs:734
+#: mcs/mcs/expression.cs:745
 #, csharp-format
 msgid "Operator `{0}' is ambiguous on an operand of type `{1}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:855
+#: mcs/mcs/expression.cs:868
 msgid "The * or -> operator must be applied to a pointer"
 msgstr ""
 
-#: mcs/mcs/expression.cs:860 mcs/mcs/expression.cs:3988
-msgid "The operation in question is undefined on void pointers"
-msgstr ""
-
-#: mcs/mcs/expression.cs:1106
+#: mcs/mcs/expression.cs:1070
 msgid ""
 "The operand of an increment or decrement operator must be a variable, "
 "property or indexer"
 msgstr ""
 
-#: mcs/mcs/expression.cs:1194
+#: mcs/mcs/expression.cs:1260
 #, csharp-format
 msgid "The `{0}' operator cannot be applied to an operand of a static type"
 msgstr ""
 
-#: mcs/mcs/expression.cs:1199
+#: mcs/mcs/expression.cs:1265
 #, csharp-format
 msgid "The `{0}' operator cannot be applied to an operand of pointer type"
 msgstr ""
 
-#: mcs/mcs/expression.cs:1205
+#: mcs/mcs/expression.cs:1271
 #, csharp-format
 msgid ""
 "The `{0}' operator cannot be applied to a lambda expression or anonymous "
 "method"
 msgstr ""
 
-#: mcs/mcs/expression.cs:1441
+#: mcs/mcs/expression.cs:1505
 #, csharp-format
 msgid ""
 "The `as' operator cannot be used with a non-reference type parameter `{0}'. "
 "Consider adding `class' or a reference type constraint"
 msgstr ""
 
-#: mcs/mcs/expression.cs:1445
+#: mcs/mcs/expression.cs:1509
 #, csharp-format
 msgid "The `as' operator cannot be used with a non-nullable value type `{0}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:1482
+#: mcs/mcs/expression.cs:1542
 #, csharp-format
 msgid "Cannot convert type `{0}' to `{1}' via a built-in conversion"
 msgstr ""
 
-#: mcs/mcs/expression.cs:1523
+#: mcs/mcs/expression.cs:1583
 #, csharp-format
 msgid "Cannot convert to static type `{0}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:1613
+#: mcs/mcs/expression.cs:1673
 msgid ""
 "The `default value' operator cannot be applied to an operand of a static type"
 msgstr ""
 
-#: mcs/mcs/expression.cs:2092
+#: mcs/mcs/expression.cs:2178
 #, csharp-format
 msgid "Operator `{0}' cannot be applied to operands of type `{1}' and `{2}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:2656
+#: mcs/mcs/expression.cs:2741
 msgid "To cast a negative value, you must enclose the value in parentheses"
 msgstr ""
 
-#: mcs/mcs/expression.cs:3202
+#: mcs/mcs/expression.cs:3394
 #, csharp-format
 msgid "Operator `{0}' is ambiguous on operands of type `{1}' and `{2}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:3924
+#: mcs/mcs/expression.cs:4146
 #, csharp-format
 msgid ""
 "A user-defined operator `{0}' must have parameters and return values of the "
 "same type in order to be applicable as a short circuit operator"
 msgstr ""
 
-#: mcs/mcs/expression.cs:3934
+#: mcs/mcs/expression.cs:4156
 #, csharp-format
 msgid ""
 "The type `{0}' must have operator `true' and operator `false' defined when `"
 "{1}' is used as a short circuit operator"
 msgstr ""
 
-#: mcs/mcs/expression.cs:4231
+#: mcs/mcs/expression.cs:4466
 #, csharp-format
 msgid ""
 "Type of conditional expression cannot be determined as `{0}' and `{1}' "
 "convert implicitly to each other"
 msgstr ""
 
-#: mcs/mcs/expression.cs:4242
+#: mcs/mcs/expression.cs:4476
 #, csharp-format
 msgid ""
 "Type of conditional expression cannot be determined because there is no "
 "implicit conversion between `{0}' and `{1}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:4703
+#: mcs/mcs/expression.cs:4928
 #, csharp-format
 msgid "Use of unassigned out parameter `{0}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:4743
+#: mcs/mcs/expression.cs:4958
 #, csharp-format
 msgid ""
 "Parameter `{0}' cannot be used inside `{1}' when using `ref' or `out' "
 "modifier"
 msgstr ""
 
-#: mcs/mcs/expression.cs:4957
+#: mcs/mcs/expression.cs:5159
+#, fuzzy, csharp-format
+msgid "Cannot invoke a non-delegate type `{0}'"
+msgstr "`{0}' をデリゲートでない型 `{1}'に変換できません"
+
+#: mcs/mcs/expression.cs:5170
 #, csharp-format
 msgid "The member `{0}' cannot be used as method or delegate"
 msgstr ""
 
-#: mcs/mcs/expression.cs:4980
+#: mcs/mcs/expression.cs:5190
 msgid ""
 "Do not directly call your base class Finalize method. It is called "
 "automatically from your destructor"
 msgstr ""
 
-#: mcs/mcs/expression.cs:4982
+#: mcs/mcs/expression.cs:5192
 msgid ""
 "Destructors and object.Finalize cannot be called directly. Consider calling "
 "IDisposable.Dispose if available"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5014
+#: mcs/mcs/expression.cs:5221
 #, csharp-format
 msgid ""
 "The base call to method `{0}' cannot be dynamically dispatched. Consider "
 "casting the dynamic arguments or eliminating the base access"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5086
+#: mcs/mcs/expression.cs:5298
 #, csharp-format
 msgid "`{0}': cannot explicitly call operator or accessor"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5379
+#: mcs/mcs/expression.cs:5625
 #, csharp-format
 msgid "Unsafe type `{0}' cannot be used in an object creation expression"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5398
+#: mcs/mcs/expression.cs:5648
 #, csharp-format
 msgid ""
 "Cannot create an instance of the variable type `{0}' because it does not "
 "have the new() constraint"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5404
+#: mcs/mcs/expression.cs:5654
 #, csharp-format
 msgid ""
 "`{0}': cannot provide arguments when creating an instance of a variable type"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5421
+#: mcs/mcs/expression.cs:5663
 #, csharp-format
 msgid "Cannot create an instance of the static class `{0}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5433
+#: mcs/mcs/expression.cs:5675
 #, csharp-format
 msgid "Cannot create an instance of the abstract class or interface `{0}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5779
+#: mcs/mcs/expression.cs:5971
+msgid ""
+"An implicitly typed local variable declarator cannot use an array initializer"
+msgstr ""
+
+#: mcs/mcs/expression.cs:6064
 msgid "Cannot create an array with a negative size"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5811 mcs/mcs/expression.cs:5819
-#: mcs/mcs/statement.cs:996 mcs/mcs/statement.cs:3068
+#: mcs/mcs/expression.cs:6096 mcs/mcs/expression.cs:6104
+#: mcs/mcs/statement.cs:1009 mcs/mcs/statement.cs:3055
 msgid "A constant value is expected"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5825
+#: mcs/mcs/expression.cs:6110
 #, csharp-format
 msgid "An array initializer of length `{0}' was expected"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5841
+#: mcs/mcs/expression.cs:6126
 msgid ""
 "Array initializers can only be used in a variable or field initializer. Try "
 "using a new expression instead"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5849
+#: mcs/mcs/expression.cs:6134
 msgid "A nested array initializer was expected"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5886
+#: mcs/mcs/expression.cs:6171
 msgid "An expression tree cannot contain a multidimensional array initializer"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5972
-msgid ""
-"An implicitly typed local variable declarator cannot use an array initializer"
-msgstr ""
-
-#: mcs/mcs/expression.cs:5993
+#: mcs/mcs/expression.cs:6273
 msgid ""
 "Can only use array initializer expressions to assign to array types. Try "
 "using a new expression instead"
 msgstr ""
 
-#: mcs/mcs/expression.cs:6394
+#: mcs/mcs/expression.cs:6709
 msgid ""
 "The type of an implicitly typed array cannot be inferred from the "
 "initializer. Try specifying array type explicitly"
 msgstr ""
 
-#: mcs/mcs/expression.cs:6522
+#: mcs/mcs/expression.cs:6846
+msgid ""
+"The `this' object cannot be used before all of its fields are assigned to"
+msgstr ""
+
+#: mcs/mcs/expression.cs:6853
 msgid ""
 "Keyword `this' is not valid in a static property, static method, or static "
 "field initializer"
 msgstr ""
 
-#: mcs/mcs/expression.cs:6525
+#: mcs/mcs/expression.cs:6856
 msgid ""
 "Anonymous methods inside structs cannot access instance members of `this'. "
 "Consider copying `this' to a local variable outside the anonymous method and "
 "using the local instead"
 msgstr ""
 
-#: mcs/mcs/expression.cs:6528
+#: mcs/mcs/expression.cs:6859
 msgid "Keyword `this' is not available in the current context"
 msgstr ""
 
-#: mcs/mcs/expression.cs:6592
-msgid ""
-"The `this' object cannot be used before all of its fields are assigned to"
-msgstr ""
-
-#: mcs/mcs/expression.cs:6622
+#: mcs/mcs/expression.cs:6946
 msgid "Cannot take the address of `this' because it is read-only"
 msgstr ""
 
-#: mcs/mcs/expression.cs:6624
+#: mcs/mcs/expression.cs:6948
 msgid "Cannot pass `this' as a ref or out argument because it is read-only"
 msgstr ""
 
-#: mcs/mcs/expression.cs:6626
+#: mcs/mcs/expression.cs:6950
 msgid "Cannot assign to `this' because it is read-only"
 msgstr ""
 
-#: mcs/mcs/expression.cs:6679
+#: mcs/mcs/expression.cs:7003
 msgid "The __arglist construct is valid only within a variable argument method"
 msgstr ""
 
-#: mcs/mcs/expression.cs:6729
+#: mcs/mcs/expression.cs:7053
 msgid "An expression tree cannot contain a method with variable arguments"
 msgstr ""
 
-#: mcs/mcs/expression.cs:6805
+#: mcs/mcs/expression.cs:7137
 msgid ""
 "System.Void cannot be used from C#. Use typeof (void) to get the void type "
 "object"
 msgstr ""
 
-#: mcs/mcs/expression.cs:6810
+#: mcs/mcs/expression.cs:7140
 msgid "The typeof operator cannot be used on the dynamic type"
 msgstr ""
 
-#: mcs/mcs/expression.cs:6879
+#: mcs/mcs/expression.cs:7191
 #, csharp-format
 msgid "`{0}': an attribute argument cannot use type parameters"
 msgstr ""
 
-#: mcs/mcs/expression.cs:7130
+#: mcs/mcs/expression.cs:7445
 #, csharp-format
 msgid ""
 "`{0}' does not have a predefined size, therefore sizeof can only be used in "
@@ -2007,44 +2408,44 @@ msgid ""
 "SizeOf)"
 msgstr ""
 
-#: mcs/mcs/expression.cs:7186
+#: mcs/mcs/expression.cs:7501
 #, csharp-format
 msgid "Alias `{0}' not found"
 msgstr ""
 
-#: mcs/mcs/expression.cs:7197
+#: mcs/mcs/expression.cs:7512
 #, csharp-format
 msgid ""
 "Alias `{0}' cannot be used with '::' since it denotes a type. Consider "
 "replacing '::' with '.'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:7213
+#: mcs/mcs/expression.cs:7528
 #, csharp-format
 msgid ""
 "A namespace alias qualifier `{0}' did not resolve to a namespace or a type"
 msgstr ""
 
-#: mcs/mcs/expression.cs:7370
+#: mcs/mcs/expression.cs:7685
 msgid "Cannot perform member binding on `null' value"
 msgstr ""
 
-#: mcs/mcs/expression.cs:7437
+#: mcs/mcs/expression.cs:7752
 #, csharp-format
 msgid "`{0}': cannot reference a type through an expression; try `{1}' instead"
 msgstr ""
 
-#: mcs/mcs/expression.cs:7513
+#: mcs/mcs/expression.cs:7828
 #, csharp-format
 msgid "A nested type cannot be specified through a type parameter `{0}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:7560
+#: mcs/mcs/expression.cs:7887
 #, csharp-format
 msgid "The nested type `{0}' does not exist in the type `{1}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:7568
+#: mcs/mcs/expression.cs:7896
 #, csharp-format
 msgid ""
 "Type `{0}' does not contain a definition for `{1}' and no extension method `"
@@ -2052,304 +2453,371 @@ msgid ""
 "assembly reference?)"
 msgstr ""
 
-#: mcs/mcs/expression.cs:7748
+#: mcs/mcs/expression.cs:8076
 #, csharp-format
 msgid "Cannot apply indexing with [] to an expression of type `{0}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:7764
+#: mcs/mcs/expression.cs:8092
 msgid "A pointer must be indexed by only one value"
 msgstr ""
 
-#: mcs/mcs/expression.cs:7813
+#: mcs/mcs/expression.cs:8141
 msgid "An element access expression cannot use named argument"
 msgstr ""
 
-#: mcs/mcs/expression.cs:7869
+#: mcs/mcs/expression.cs:8197
 #, csharp-format
 msgid "Wrong number of indexes `{0}' inside [], expected `{1}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:8177
+#: mcs/mcs/expression.cs:8533
 msgid ""
 "The indexer base access cannot be dynamically dispatched. Consider casting "
 "the dynamic arguments or eliminating the base access"
 msgstr ""
 
-#: mcs/mcs/expression.cs:8249
+#: mcs/mcs/expression.cs:8614
 msgid "An expression tree may not contain a base access"
 msgstr ""
 
-#: mcs/mcs/expression.cs:8266
+#: mcs/mcs/expression.cs:8631
 #, fuzzy
 msgid "Keyword `base' is not available in a static method"
 msgstr "キーワード `new' は名前空間要素で認められていません"
 
-#: mcs/mcs/expression.cs:8268
+#: mcs/mcs/expression.cs:8633
 #, fuzzy
 msgid "Keyword `base' is not available in the current context"
 msgstr "キーワード `new' は名前空間要素で認められていません"
 
-#: mcs/mcs/expression.cs:8299
+#: mcs/mcs/expression.cs:8664
 msgid ""
 "A property, indexer or dynamic member access may not be passed as `ref' or "
 "`out' parameter"
 msgstr ""
 
-#: mcs/mcs/expression.cs:8572
+#: mcs/mcs/expression.cs:8941
 #, csharp-format
 msgid "Array elements cannot be of type `{0}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:8575
+#: mcs/mcs/expression.cs:8944
 #, csharp-format
 msgid "Array elements cannot be of static type `{0}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:8725
+#: mcs/mcs/expression.cs:9094
 msgid "Cannot use a negative size with stackalloc"
 msgstr ""
 
-#: mcs/mcs/expression.cs:8729
+#: mcs/mcs/expression.cs:9098
 msgid "Cannot use stackalloc in finally or catch"
 msgstr ""
 
-#: mcs/mcs/expression.cs:8834
+#: mcs/mcs/expression.cs:9203
 #, csharp-format
 msgid ""
 "Member `{0}' cannot be initialized. An object initializer may only be used "
 "for fields, or properties"
 msgstr ""
 
-#: mcs/mcs/expression.cs:8843
+#: mcs/mcs/expression.cs:9212
 #, csharp-format
 msgid ""
 "Static field or property `{0}' cannot be assigned in an object initializer"
 msgstr ""
 
-#: mcs/mcs/expression.cs:9016
+#: mcs/mcs/expression.cs:9387
 #, csharp-format
 msgid ""
 "A field or property `{0}' cannot be initialized with a collection object "
 "initializer because type `{1}' does not implement `{2}' interface"
 msgstr ""
 
-#: mcs/mcs/expression.cs:9027
+#: mcs/mcs/expression.cs:9398
 #, csharp-format
 msgid "Inconsistent `{0}' member declaration"
 msgstr ""
 
-#: mcs/mcs/expression.cs:9035
+#: mcs/mcs/expression.cs:9406
 #, csharp-format
 msgid ""
 "An object initializer includes more than one member `{0}' initialization"
 msgstr ""
 
-#: mcs/mcs/expression.cs:9053
+#: mcs/mcs/expression.cs:9424
 #, csharp-format
 msgid "Cannot initialize object of type `{0}' with a collection initializer"
 msgstr ""
 
-#: mcs/mcs/expression.cs:9296
+#: mcs/mcs/expression.cs:9661
 #, fuzzy
 msgid "Anonymous types cannot be used in this expression"
 msgstr "匿名メソッドを式ツリーに変換することはできません"
 
-#: mcs/mcs/expression.cs:9384
+#: mcs/mcs/expression.cs:9749
 #, csharp-format
 msgid "An anonymous type property `{0}' cannot be initialized with `{1}'"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:310
+#: mcs/mcs/field.cs:70
+msgid ""
+"The modifier 'abstract' is not valid on fields. Try using a property instead"
+msgstr ""
+
+#: mcs/mcs/field.cs:121
+msgid ""
+"The FieldOffset attribute can only be placed on members of types marked with "
+"the StructLayout(LayoutKind.Explicit)"
+msgstr ""
+
+#: mcs/mcs/field.cs:126
+msgid "The FieldOffset attribute is not allowed on static or const fields"
+msgstr ""
+
+#: mcs/mcs/field.cs:132
+msgid ""
+"Do not use 'System.Runtime.CompilerServices.FixedBuffer' attribute. Use the "
+"'fixed' field modifier instead"
+msgstr ""
+
+#: mcs/mcs/field.cs:237
+#, csharp-format
+msgid ""
+"`{0}': Instance field types marked with StructLayout(LayoutKind.Explicit) "
+"must have a FieldOffset attribute"
+msgstr ""
+
+#: mcs/mcs/field.cs:246
+#, fuzzy, csharp-format
+msgid "`{0}': cannot declare variables of static types"
+msgstr "`{0}': staticクラスではインデクサを宣言できません"
+
+#: mcs/mcs/field.cs:388
+#, csharp-format
+msgid ""
+"`{0}': Fixed size buffers type must be one of the following: bool, byte, "
+"short, int, long, char, sbyte, ushort, uint, ulong, float or double"
+msgstr ""
+
+#: mcs/mcs/field.cs:424
+#, csharp-format
+msgid "`{0}': Fixed size buffer fields may only be members of structs"
+msgstr ""
+
+#: mcs/mcs/field.cs:439
+#, csharp-format
+msgid "`{0}': Fixed size buffers must have a length greater than zero"
+msgstr ""
+
+#: mcs/mcs/field.cs:446
+#, csharp-format
+msgid ""
+"Fixed size buffer `{0}' of length `{1}' and type `{2}' exceeded 2^31 limit"
+msgstr ""
+
+#: mcs/mcs/field.cs:628
+#, fuzzy, csharp-format
+msgid "`{0}': A volatile field cannot be of the type `{1}'"
+msgstr "`{0}': sealedクラス `{1}' から派生することはできません"
+
+#: mcs/mcs/field.cs:633
+#, fuzzy, csharp-format
+msgid "`{0}': A field cannot be both volatile and readonly"
+msgstr "`{0}': クラスはstaticかつsealedとすることはできません"
+
+#: mcs/mcs/flowanalysis.cs:307
 msgid "Control cannot fall through from one case label to another"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:537
+#: mcs/mcs/flowanalysis.cs:536
 #, csharp-format
 msgid ""
 "The label `{0}:' could not be found within the scope of the goto statement"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:665
+#: mcs/mcs/flowanalysis.cs:664
 msgid ""
 "A throw statement with no arguments is not allowed outside of a catch clause"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:676 mcs/mcs/flowanalysis.cs:682
+#: mcs/mcs/flowanalysis.cs:675 mcs/mcs/flowanalysis.cs:681
 msgid "No enclosing loop out of which to break or continue"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:710
+#: mcs/mcs/flowanalysis.cs:709
 msgid "Control cannot leave the body of an anonymous method"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:751
+#: mcs/mcs/flowanalysis.cs:750
 msgid "Cannot yield a value in the body of a try block with a catch clause"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:753
+#: mcs/mcs/flowanalysis.cs:752
 msgid "Cannot yield a value in the body of a catch clause"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:905
+#: mcs/mcs/flowanalysis.cs:904
 msgid ""
 "A throw statement with no arguments is not allowed inside of a finally "
 "clause nested inside of the innermost catch clause"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:917 mcs/mcs/iterators.cs:102
+#: mcs/mcs/flowanalysis.cs:916 mcs/mcs/iterators.cs:102
 msgid "Cannot yield in the body of a finally clause"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:928 mcs/mcs/flowanalysis.cs:944
-#: mcs/mcs/flowanalysis.cs:980 mcs/mcs/statement.cs:692
+#: mcs/mcs/flowanalysis.cs:927 mcs/mcs/flowanalysis.cs:943
+#: mcs/mcs/flowanalysis.cs:979 mcs/mcs/statement.cs:694
 msgid "Control cannot leave the body of a finally clause"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:1159
+#: mcs/mcs/flowanalysis.cs:1130
 #, csharp-format
 msgid ""
 "An automatically implemented property `{0}' must be fully assigned before "
-"control leaves the constructor. Consider calling default contructor"
+"control leaves the constructor. Consider calling the default struct "
+"contructor from a constructor initializer"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:1163
+#: mcs/mcs/flowanalysis.cs:1134
 #, csharp-format
 msgid ""
 "Field `{0}' must be fully assigned before control leaves the constructor"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:1418
+#: mcs/mcs/flowanalysis.cs:1376
 msgid "Use of unassigned local variable `"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:1488
+#: mcs/mcs/flowanalysis.cs:1446
 msgid "Use of possibly unassigned field `"
 msgstr ""
 
-#: mcs/mcs/generic.cs:95
+#: mcs/mcs/generic.cs:102 mcs/mcs/generic.cs:120
 #, csharp-format
 msgid "Type parameter `{0}' inherits conflicting constraints `{1}' and `{2}'"
 msgstr ""
 
-#: mcs/mcs/generic.cs:152
+#: mcs/mcs/generic.cs:173
 #, csharp-format
 msgid "A constraint cannot be the dynamic type `{0}'"
 msgstr ""
 
-#: mcs/mcs/generic.cs:161
+#: mcs/mcs/generic.cs:182
 #, csharp-format
 msgid ""
 "Inconsistent accessibility: constraint type `{0}' is less accessible than `"
 "{1}'"
 msgstr ""
 
-#: mcs/mcs/generic.cs:168 mcs/mcs/generic.cs:182
+#: mcs/mcs/generic.cs:189 mcs/mcs/generic.cs:203
 #, fuzzy, csharp-format
 msgid "Duplicate constraint `{0}' for type parameter `{1}'"
 msgstr ""
 "`{0}' の部分的な宣言の間で、型パラメータ `{1}' について一貫性のない制約が含ま"
 "れています"
 
-#: mcs/mcs/generic.cs:197
+#: mcs/mcs/generic.cs:218
 #, csharp-format
 msgid "Circular constraint dependency involving `{0}' and `{1}'"
 msgstr ""
 
-#: mcs/mcs/generic.cs:228
+#: mcs/mcs/generic.cs:249
 #, csharp-format
 msgid ""
 "Type parameter `{0}' has the `struct' constraint, so it cannot be used as a "
 "constraint for `{1}'"
 msgstr ""
 
-#: mcs/mcs/generic.cs:239
+#: mcs/mcs/generic.cs:260
 #, csharp-format
 msgid ""
 "The class type constraint `{0}' must be listed before any other constraints. "
 "Consider moving type constraint to the beginning of the constraint list"
 msgstr ""
 
-#: mcs/mcs/generic.cs:245
+#: mcs/mcs/generic.cs:266
 #, csharp-format
 msgid ""
 "`{0}': cannot specify both a constraint class and the `class' or `struct' "
 "constraint"
 msgstr ""
 
-#: mcs/mcs/generic.cs:250
+#: mcs/mcs/generic.cs:271
 msgid "A constraint cannot be the dynamic type"
 msgstr ""
 
-#: mcs/mcs/generic.cs:256
+#: mcs/mcs/generic.cs:277
 #, csharp-format
 msgid ""
 "`{0}' is not a valid constraint. A constraint must be an interface, a non-"
 "sealed class or a type parameter"
 msgstr ""
 
-#: mcs/mcs/generic.cs:263
+#: mcs/mcs/generic.cs:284
 #, csharp-format
 msgid ""
 "`{0}' is not a valid constraint. Static classes cannot be used as constraints"
 msgstr ""
 
-#: mcs/mcs/generic.cs:269
+#: mcs/mcs/generic.cs:290
 #, csharp-format
 msgid "A constraint cannot be special class `{0}'"
 msgstr ""
 
-#: mcs/mcs/generic.cs:511
+#: mcs/mcs/generic.cs:538
 #, csharp-format
 msgid "The {2} type parameter `{0}' must be {3} valid on `{1}{4}'"
 msgstr ""
 
-#: mcs/mcs/generic.cs:1639
+#: mcs/mcs/generic.cs:1738
 #, csharp-format
 msgid "`{0}': static classes cannot be used as generic arguments"
 msgstr ""
 
-#: mcs/mcs/generic.cs:1646
+#: mcs/mcs/generic.cs:1745
 #, csharp-format
 msgid "The type `{0}' may not be used as a type argument"
 msgstr ""
 
-#: mcs/mcs/generic.cs:1885
+#: mcs/mcs/generic.cs:2000
 #, csharp-format
 msgid ""
 "The type `{0}' must be a reference type in order to use it as type parameter "
 "`{1}' in the generic type or method `{2}'"
 msgstr ""
 
-#: mcs/mcs/generic.cs:1895
+#: mcs/mcs/generic.cs:2010
 #, csharp-format
 msgid ""
 "The type `{0}' must be a non-nullable value type in order to use it as type "
 "parameter `{1}' in the generic type or method `{2}'"
 msgstr ""
 
-#: mcs/mcs/generic.cs:1925
+#: mcs/mcs/generic.cs:2049
 #, csharp-format
 msgid ""
 "The type `{0}' cannot be used as type parameter `{1}' in the generic type or "
 "method `{2}'. The nullable type `{0}' never satisfies interface constraint"
 msgstr ""
 
-#: mcs/mcs/generic.cs:1950
+#: mcs/mcs/generic.cs:2101
 #, csharp-format
 msgid ""
 "The type `{0}' must have a public parameterless constructor in order to use "
 "it as parameter `{1}' in the generic type or method `{2}'"
 msgstr ""
 
-#: mcs/mcs/generic.cs:1968
+#: mcs/mcs/generic.cs:2153
 #, csharp-format
 msgid ""
 "The type `{0}' cannot be used as type parameter `{1}' in the generic type or "
 "method `{2}'. There is no boxing conversion from `{0}' to `{3}'"
 msgstr ""
 
-#: mcs/mcs/generic.cs:1971
+#: mcs/mcs/generic.cs:2157
 #, csharp-format
 msgid ""
 "The type `{0}' cannot be used as type parameter `{1}' in the generic type or "
@@ -2357,41 +2825,48 @@ msgid ""
 "{3}'"
 msgstr ""
 
-#: mcs/mcs/generic.cs:1974
+#: mcs/mcs/generic.cs:2161
 #, csharp-format
 msgid ""
 "The type `{0}' cannot be used as type parameter `{1}' in the generic type or "
 "method `{2}'. There is no implicit reference conversion from `{0}' to `{3}'"
 msgstr ""
 
+#: mcs/mcs/import.cs:1711
+#, csharp-format
+msgid ""
+"The type `{0}' is defined in an assembly that is not referenced. Consider "
+"adding a reference to assembly `{1}'"
+msgstr ""
+
 #: mcs/mcs/iterators.cs:44
 msgid "The yield statement cannot be used inside anonymous method blocks"
 msgstr ""
 
-#: mcs/mcs/iterators.cs:869
+#: mcs/mcs/iterators.cs:856
 #, csharp-format
 msgid ""
 "The body of `{0}' cannot be an iterator block because `{1}' is not an "
 "iterator interface type"
 msgstr ""
 
-#: mcs/mcs/iterators.cs:882
+#: mcs/mcs/iterators.cs:869
 msgid "Iterators cannot have ref or out parameters"
 msgstr ""
 
-#: mcs/mcs/iterators.cs:888
+#: mcs/mcs/iterators.cs:875
 msgid "__arglist is not allowed in parameter list of iterators"
 msgstr ""
 
-#: mcs/mcs/iterators.cs:894
+#: mcs/mcs/iterators.cs:881
 msgid "Iterators cannot have unsafe parameters or yield types"
 msgstr ""
 
-#: mcs/mcs/iterators.cs:901 mcs/mcs/statement.cs:4220
+#: mcs/mcs/iterators.cs:888 mcs/mcs/statement.cs:4324
 msgid "Unsafe code may not appear in iterators"
 msgstr ""
 
-#: mcs/mcs/linq.cs:69
+#: mcs/mcs/linq.cs:68
 #, csharp-format
 msgid ""
 "An implementation of `{0}' query expression pattern could not be found. Are "
@@ -2399,27 +2874,27 @@ msgid ""
 "reference?"
 msgstr ""
 
-#: mcs/mcs/linq.cs:94
+#: mcs/mcs/linq.cs:93
 #, csharp-format
 msgid ""
 "Ambiguous implementation of the query pattern `{0}' for source type `{1}'"
 msgstr ""
 
-#: mcs/mcs/linq.cs:125
+#: mcs/mcs/linq.cs:124
 #, csharp-format
 msgid ""
 "An implementation of `{0}' query expression pattern for source type `{1}' "
 "could not be found"
 msgstr ""
 
-#: mcs/mcs/linq.cs:133
+#: mcs/mcs/linq.cs:132
 #, csharp-format
 msgid ""
 "An expression type is incorrect in a subsequent `from' clause in a query "
 "expression with source type `{0}'"
 msgstr ""
 
-#: mcs/mcs/linq.cs:137
+#: mcs/mcs/linq.cs:136
 #, csharp-format
 msgid ""
 "An expression type in `{0}' clause is incorrect. Type inference failed in "
@@ -2431,175 +2906,478 @@ msgstr ""
 msgid "A range variable `{0}' cannot be initialized with `{1}'"
 msgstr ""
 
-#: mcs/mcs/linq.cs:708
+#: mcs/mcs/linq.cs:750
 #, csharp-format
 msgid "A range variable `{0}' conflicts with a previous declaration of `{0}'"
 msgstr ""
 
-#: mcs/mcs/linq.cs:714
+#: mcs/mcs/linq.cs:757
 #, csharp-format
 msgid "A range variable `{0}' has already been declared in this scope"
 msgstr ""
 
-#: mcs/mcs/linq.cs:720
+#: mcs/mcs/linq.cs:764
 #, csharp-format
 msgid "A range variable `{0}' conflicts with a method type parameter"
 msgstr ""
 
-#: mcs/mcs/literal.cs:47
+#: mcs/mcs/linq.cs:796
+#, csharp-format
+msgid ""
+"A range variable `{0}' cannot be assigned to. Consider using `let' clause to "
+"store the value"
+msgstr ""
+
+#: mcs/mcs/literal.cs:49
 #, csharp-format
 msgid ""
 "Cannot convert null to the type parameter `{0}' because it could be a value "
 "type. Consider using `default ({0})' instead"
 msgstr ""
 
-#: mcs/mcs/literal.cs:53
+#: mcs/mcs/literal.cs:55
 #, csharp-format
 msgid "Cannot convert null to `{0}' because it is a value type"
 msgstr ""
 
-#: mcs/mcs/literal.cs:202
+#: mcs/mcs/literal.cs:204
 #, csharp-format
 msgid ""
 "Literal of type double cannot be implicitly converted to type `{0}'. Add "
 "suffix `{1}' to create a literal of this type"
 msgstr ""
 
-#: mcs/mcs/modifiers.cs:260
+#: mcs/mcs/membercache.cs:1241
+msgid ""
+"A partial method declaration and partial method implementation cannot differ "
+"on use of `params' modifier"
+msgstr ""
+
+#: mcs/mcs/membercache.cs:1244
+msgid ""
+"A partial method declaration and partial method implementation must be both "
+"an extension method or neither"
+msgstr ""
+
+#: mcs/mcs/membercache.cs:1248
 #, csharp-format
-msgid "The modifier `{0}' is not valid for this item"
+msgid ""
+"Overloaded contructor `{0}' cannot differ on use of parameter modifiers only"
+msgstr ""
+
+#: mcs/mcs/membercache.cs:1252
+#, fuzzy, csharp-format
+msgid ""
+"Overloaded method `{0}' cannot differ on use of parameter modifiers only"
+msgstr "Conditionalメソッド `{0}' ではoutパラメータを指定できません"
+
+#: mcs/mcs/membercache.cs:1284
+msgid ""
+"A partial method declaration and partial method implementation must be both "
+"`static' or neither"
+msgstr ""
+
+#: mcs/mcs/membercache.cs:1289
+msgid ""
+"A partial method declaration and partial method implementation must be both "
+"`unsafe' or neither"
+msgstr ""
+
+#: mcs/mcs/membercache.cs:1295
+#, fuzzy, csharp-format
+msgid "A partial method `{0}' declaration is already defined"
+msgstr "部分メソッド `{0}' はインターフェースを明示的に実装できません"
+
+#: mcs/mcs/membercache.cs:1299
+#, fuzzy, csharp-format
+msgid "A partial method `{0}' implementation is already defined"
+msgstr "部分メソッド `{0}' はインターフェースを明示的に実装できません"
+
+#: mcs/mcs/membercache.cs:1310 mcs/mcs/property.cs:81
+#, csharp-format
+msgid "A member `{0}' is already reserved"
+msgstr ""
+
+#: mcs/mcs/membercache.cs:1321
+#, csharp-format
+msgid "Duplicate user-defined conversion in type `{0}'"
+msgstr ""
+
+#: mcs/mcs/method.cs:495
+msgid ""
+"The DllImport attribute must be specified on a method marked `static' and "
+"`extern'"
+msgstr ""
+"`static'かつ`extern'で宣言されたメソッドには、DllImport属性が指定されなければ"
+"なりません"
+
+#: mcs/mcs/method.cs:583
+#, csharp-format
+msgid "`{0}': A partial method parameters cannot use `out' modifier"
+msgstr "`{0}': 部分メソッドのパラメータで`out'修飾子は使用できません"
+
+#: mcs/mcs/method.cs:642
+#, csharp-format
+msgid ""
+"Conditional not valid on `{0}' because it is a constructor, destructor, "
+"operator or explicit interface implementation"
+msgstr ""
+"Conditionalは コンストラクタ、デストラクタ、演算子または明示的なインター"
+"フェースの実装である `{0}'  では無効です"
+
+#: mcs/mcs/method.cs:860
+#, csharp-format
+msgid "Program `{0}' has more than one entry point defined: `{1}'"
+msgstr "プログラム `{0}' には複数のエントリポイントが定義されています: `{1}'"
+
+#: mcs/mcs/method.cs:904
+#, csharp-format
+msgid "Conditional not valid on `{0}' because it is an override method"
+msgstr "Conditionalはオーバーライドメソッドである `{0}' では無効です"
+
+#: mcs/mcs/method.cs:909
+#, csharp-format
+msgid "Conditional not valid on `{0}' because its return type is not void"
+msgstr "Conditionalは戻り値型がvoidでない `{0}' では無効です"
+
+#: mcs/mcs/method.cs:914
+msgid "Conditional not valid on interface members"
+msgstr "Conditionalはインターフェースメンバでは無効です"
+
+#: mcs/mcs/method.cs:920
+#, csharp-format
+msgid "Conditional member `{0}' cannot implement interface member `{1}'"
+msgstr ""
+"Conditionalメンバ `{0}' はインターフェースメンバ `{1}' を実装できません"
+
+#: mcs/mcs/method.cs:927
+#, csharp-format
+msgid "Conditional method `{0}' cannot have an out parameter"
+msgstr "Conditionalメソッド `{0}' ではoutパラメータを指定できません"
+
+#: mcs/mcs/method.cs:1050
+#, csharp-format
+msgid ""
+"The constraints for type parameter `{0}' of method `{1}' must match the "
+"constraints for type parameter `{2}' of interface method `{3}'. Consider "
+"using an explicit interface implementation instead"
+msgstr ""
+
+#: mcs/mcs/method.cs:1104
+#, fuzzy, csharp-format
+msgid "`{0}': Extension methods cannot be defined in a nested class"
+msgstr "`{0}': 拡張メソッドはstaticで宣言されなければなりません"
+
+#: mcs/mcs/method.cs:1110
+#, csharp-format
+msgid ""
+"`{0}': Extension methods cannot be declared without a reference to System."
+"Core.dll assembly. Add the assembly reference or remove `this' modifer from "
+"the first parameter"
+msgstr ""
+"`{0}': 拡張メソッドはSystem.Core.dllアセンブリへの参照なしでは宣言できませ"
+"ん。アセンブリ参照を追加するか、または最初のパラメータから `this' 修飾子を取"
+"り除いてください。"
+
+#: mcs/mcs/method.cs:1119
+#, fuzzy, csharp-format
+msgid "`{0}': Extension methods must be defined in a non-generic static class"
+msgstr "`{0}': 拡張メソッドはstaticで宣言されなければなりません"
+
+#: mcs/mcs/method.cs:1172
+#, csharp-format
+msgid ""
+"A partial method `{0}' implementation is missing a partial method declaration"
+msgstr ""
+
+#: mcs/mcs/method.cs:1219
+#, csharp-format
+msgid "Method or delegate cannot return type `{0}'"
+msgstr ""
+
+#: mcs/mcs/method.cs:1294
+msgid ""
+"The constructor call cannot be dynamically dispatched within constructor "
+"initializer"
+msgstr ""
+
+#: mcs/mcs/method.cs:1308
+#, fuzzy, csharp-format
+msgid "`{0}': Struct constructors cannot call base constructors"
+msgstr "`{0}': staticクラスではインスタンス コンストラクタを定義できません"
+
+#: mcs/mcs/method.cs:1327
+#, csharp-format
+msgid "Constructor `{0}' cannot call itself"
+msgstr ""
+
+#: mcs/mcs/method.cs:1446
+#, csharp-format
+msgid "`{0}': The static constructor must be parameterless"
+msgstr ""
+
+#: mcs/mcs/method.cs:1464
+msgid "Structs cannot contain explicit parameterless constructors"
+msgstr ""
+
+#: mcs/mcs/method.cs:1520
+#, fuzzy, csharp-format
+msgid ""
+"`{0}': A class with the ComImport attribute cannot have a user-defined "
+"constructor"
+msgstr "`{0}': staticクラスではインスタンス コンストラクタを定義できません"
+
+#: mcs/mcs/method.cs:1763
+#, fuzzy, csharp-format
+msgid "`{0}' is an accessor not found in interface member `{1}{2}'"
+msgstr "`{0}' は継承されるabstractメンバ `{1}' を隠蔽してしまいます"
+
+#: mcs/mcs/method.cs:1769
+#, fuzzy, csharp-format
+msgid ""
+"`{0}.{1}' in explicit interface declaration is not a member of interface"
+msgstr ""
+"明示的なインターフェースの宣言で記述された `{0}' は、インターフェースではあり"
+"ません"
+
+#: mcs/mcs/method.cs:1776
+#, csharp-format
+msgid ""
+"`{0}' explicit method implementation cannot implement `{1}' because it is an "
+"accessor"
+msgstr ""
+
+#: mcs/mcs/method.cs:1786
+#, fuzzy, csharp-format
+msgid "Method `{0}' cannot implement interface accessor `{1}'"
+msgstr ""
+"Conditionalメンバ `{0}' はインターフェースメンバ `{1}' を実装できません"
+
+#: mcs/mcs/method.cs:1792
+#, csharp-format
+msgid ""
+"Accessor `{0}' cannot implement interface member `{1}' for type `{2}'. Use "
+"an explicit interface implementation"
+msgstr ""
+
+#: mcs/mcs/method.cs:1798
+#, fuzzy, csharp-format
+msgid ""
+"Accessor `{0}' must be declared public to implement interface member `{1}'"
+msgstr ""
+"Conditionalメンバ `{0}' はインターフェースメンバ `{1}' を実装できません"
+
+#: mcs/mcs/method.cs:1822
+#, fuzzy, csharp-format
+msgid ""
+"`{0}': the explicit interface implementation cannot introduce the params "
+"modifier"
+msgstr ""
+"明示的なインターフェースの宣言で記述された `{0}' は、インターフェースではあり"
+"ません"
+
+#: mcs/mcs/method.cs:2140
+#, fuzzy, csharp-format
+msgid ""
+"Attribute `{0}' is not valid on property or event accessors. It is valid on `"
+"{1}' declarations only"
+msgstr "属性 `{0}' はこの宣言型では無効です。 `{1}' の宣言でのみ有効です"
+
+#: mcs/mcs/method.cs:2351
+#, csharp-format
+msgid "User-defined operator `{0}' must be declared static and public"
+msgstr ""
+
+#: mcs/mcs/method.cs:2390
+msgid ""
+"User-defined operator cannot take an object of the enclosing type and "
+"convert to an object of the enclosing type"
+msgstr ""
+
+#: mcs/mcs/method.cs:2401
+msgid "User-defined conversion must convert to or from the enclosing type"
 msgstr ""
 
-#: mcs/mcs/namespace.cs:57
+#: mcs/mcs/method.cs:2407
+#, fuzzy, csharp-format
+msgid ""
+"User-defined conversion `{0}' cannot convert to or from the dynamic type"
+msgstr "`{0}' は特別なクラス `{1}' から派生することはできません"
+
+#: mcs/mcs/method.cs:2414
+#, csharp-format
+msgid ""
+"User-defined conversion `{0}' cannot convert to or from an interface type"
+msgstr ""
+
+#: mcs/mcs/method.cs:2421
 #, csharp-format
-msgid "An assembly `{0}' is used without being referenced"
+msgid "User-defined conversion `{0}' cannot convert to or from a base class"
 msgstr ""
 
-#: mcs/mcs/namespace.cs:148
+#: mcs/mcs/method.cs:2427
+#, csharp-format
+msgid "User-defined conversion `{0}' cannot convert to or from a derived class"
+msgstr ""
+
+#: mcs/mcs/method.cs:2434
+msgid ""
+"Overloaded shift operator must have the type of the first operand be the "
+"containing type, and the type of the second operand must be int"
+msgstr ""
+
+#: mcs/mcs/method.cs:2443
+msgid ""
+"The return type for ++ or -- operator must be the containing type or derived "
+"from the containing type"
+msgstr ""
+
+#: mcs/mcs/method.cs:2448
+msgid "The parameter type for ++ or -- operator must be the containing type"
+msgstr ""
+
+#: mcs/mcs/method.cs:2455
+msgid "The parameter type of a unary operator must be the containing type"
+msgstr ""
+
+#: mcs/mcs/method.cs:2463
+msgid "The return type of operator True or False must be bool"
+msgstr ""
+
+#: mcs/mcs/method.cs:2478
+msgid "One of the parameters of a binary operator must be the containing type"
+msgstr ""
+
+#: mcs/mcs/modifiers.cs:275
+#, csharp-format
+msgid "The modifier `{0}' is not valid for this item"
+msgstr ""
+
+#: mcs/mcs/namespace.cs:70
 #, csharp-format
 msgid ""
 "The type or namespace name `{0}' could not be found in the global namespace "
 "(are you missing an assembly reference?)"
 msgstr ""
 
-#: mcs/mcs/namespace.cs:264
+#: mcs/mcs/namespace.cs:177
 #, csharp-format
 msgid ""
 "The type or namespace name `{0}' does not exist in the namespace `{1}'. Are "
 "you missing an assembly reference?"
 msgstr ""
 
-#: mcs/mcs/namespace.cs:343
+#: mcs/mcs/namespace.cs:256
 #, csharp-format
 msgid "The imported type `{0}' is defined multiple times"
 msgstr ""
 
-#: mcs/mcs/namespace.cs:669
+#: mcs/mcs/namespace.cs:583
 #, csharp-format
 msgid ""
 "`{0}' is a type not a namespace. A using namespace directive can only be "
 "applied to namespaces"
 msgstr ""
 
-#: mcs/mcs/namespace.cs:696
+#: mcs/mcs/namespace.cs:610
 #, csharp-format
 msgid "The extern alias `{0}' was not specified in -reference option"
 msgstr ""
 
-#: mcs/mcs/namespace.cs:906 mcs/mcs/namespace.cs:928
+#: mcs/mcs/namespace.cs:820 mcs/mcs/namespace.cs:842
 msgid ""
 "A using clause must precede all other namespace elements except extern alias "
 "declarations"
 msgstr ""
 
-#: mcs/mcs/namespace.cs:952
+#: mcs/mcs/namespace.cs:866
 msgid "An extern alias declaration must precede all other elements"
 msgstr ""
 
-#: mcs/mcs/namespace.cs:970
+#: mcs/mcs/namespace.cs:884
 #, csharp-format
 msgid "The using alias `{0}' appeared previously in this namespace"
 msgstr ""
 
-#: mcs/mcs/namespace.cs:1091
+#: mcs/mcs/namespace.cs:1005
 #, csharp-format
 msgid "Namespace `{0}' contains a definition with same name as alias `{1}'"
 msgstr ""
 
-#: mcs/mcs/namespace.cs:1145
+#: mcs/mcs/namespace.cs:1059
 #, csharp-format
 msgid "`{0}' is an ambiguous reference between `{1}' and `{2}'"
 msgstr ""
 
-#: mcs/mcs/namespace.cs:1213
-msgid "You cannot redefine the global extern alias"
+#: mcs/mcs/namespace.cs:1127
+msgid "The global extern alias cannot be redefined"
 msgstr ""
 
-#: mcs/mcs/namespace.cs:1218
+#: mcs/mcs/namespace.cs:1132
 #, csharp-format
 msgid ""
 "The type or namespace name `{0}' could not be found. Are you missing a using "
 "directive or an assembly reference?"
 msgstr ""
 
-#: mcs/mcs/nullable.cs:922
+#: mcs/mcs/nullable.cs:1036
 msgid ""
 "An expression tree cannot contain a coalescing operator with null left side"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:176
+#: mcs/mcs/parameter.cs:156
 msgid "The params parameter must be a single dimensional array"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:287
+#: mcs/mcs/parameter.cs:288
 msgid "An out parameter cannot have the `In' attribute"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:292
+#: mcs/mcs/parameter.cs:293
 msgid ""
 "Do not use `System.ParamArrayAttribute'. Use the `params' keyword instead"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:299
+#: mcs/mcs/parameter.cs:300
 msgid ""
 "Cannot specify only `Out' attribute on a ref parameter. Use both `In' and "
 "`Out' attributes or neither"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:309
+#: mcs/mcs/parameter.cs:310
 #, fuzzy, csharp-format
 msgid "Cannot specify `{0}' attribute on optional parameter `{1}'"
 msgstr "インデクサを含む型には`DefaultMember'属性を指定できません"
 
-#: mcs/mcs/parameter.cs:319
+#: mcs/mcs/parameter.cs:320
 #, csharp-format
 msgid ""
 "Argument of type `{0}' is not applicable for the DefaultParameterValue "
 "attribute"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:322
+#: mcs/mcs/parameter.cs:323
 #, csharp-format
 msgid ""
 "The DefaultParameterValue attribute is not applicable on parameters of type `"
 "{0}'"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:333
+#: mcs/mcs/parameter.cs:334
 msgid "The type of the default value should match the type of the parameter"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:375
+#: mcs/mcs/parameter.cs:376
 #, csharp-format
 msgid "Method or delegate parameter cannot be of type `{0}'"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:385
+#: mcs/mcs/parameter.cs:386
 #, csharp-format
 msgid "`{0}': static types cannot be used as parameters"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:391
+#: mcs/mcs/parameter.cs:392
 #, fuzzy, csharp-format
 msgid "The extension method cannot be of type `{0}'"
 msgstr "`{0}': 拡張メソッドはネストしたクラスの中では定義できません"
@@ -2607,24 +3385,24 @@ msgstr "`{0}': 拡張メソッドはネストしたクラスの中では定義
 #: mcs/mcs/parameter.cs:448
 #, csharp-format
 msgid ""
-"The expression being assigned to nullable optional parameter `{0}' must be "
-"default value"
+"The expression being assigned to optional parameter `{0}' must be a constant "
+"or default value"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:452
+#: mcs/mcs/parameter.cs:464
 #, csharp-format
 msgid ""
-"The expression being assigned to optional parameter `{0}' must be a constant "
-"or default value"
+"The expression being assigned to nullable optional parameter `{0}' must be "
+"default value"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:470
+#: mcs/mcs/parameter.cs:472
 #, csharp-format
 msgid ""
 "Optional parameter `{0}' of type `{1}' can only be initialized with `null'"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:481
+#: mcs/mcs/parameter.cs:482
 #, csharp-format
 msgid ""
 "Optional parameter expression of type `{0}' cannot be converted to parameter "
@@ -2635,31 +3413,26 @@ msgstr ""
 msgid "An expression tree parameter cannot use `ref' or `out' modifier"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:1120
+#: mcs/mcs/parameter.cs:1096
 #, csharp-format
 msgid "The parameter name `{0}' conflicts with a compiler generated name"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:1138
-#, csharp-format
-msgid "The parameter name `{0}' is a duplicate"
-msgstr ""
-
-#: mcs/mcs/pending.cs:433
+#: mcs/mcs/pending.cs:443
 #, csharp-format
 msgid ""
 "`{0}' does not implement interface member `{1}' and the best implementing "
 "candidate `{2}' is static"
 msgstr ""
 
-#: mcs/mcs/pending.cs:437
+#: mcs/mcs/pending.cs:447
 #, csharp-format
 msgid ""
 "`{0}' does not implement interface member `{1}' and the best implementing "
 "candidate `{2}' in not public"
 msgstr ""
 
-#: mcs/mcs/pending.cs:441
+#: mcs/mcs/pending.cs:451
 #, csharp-format
 msgid ""
 "`{0}' does not implement interface member `{1}' and the best implementing "
@@ -2667,86 +3440,166 @@ msgid ""
 "type `{4}'"
 msgstr ""
 
-#: mcs/mcs/pending.cs:446
+#: mcs/mcs/pending.cs:456
 #, csharp-format
 msgid "`{0}' does not implement interface member `{1}'"
 msgstr ""
 
-#: mcs/mcs/pending.cs:451
+#: mcs/mcs/pending.cs:461
 #, csharp-format
 msgid "`{0}' does not implement inherited abstract member `{1}'"
 msgstr ""
 
-#: mcs/mcs/rootcontext.cs:240
+#: mcs/mcs/property.cs:352
 #, csharp-format
 msgid ""
-"The compilation may fail due to missing `{0}.SetCorlibTypeBuilders(...)' "
-"method"
+"`{0}': accessibility modifiers may not be used on accessors in an interface"
 msgstr ""
 
-#: mcs/mcs/roottypes.cs:235
+#: mcs/mcs/property.cs:356
+#, fuzzy, csharp-format
+msgid "`{0}': abstract properties cannot have private accessors"
+msgstr "`{0}': virtualまたはabstractのメンバはprivateにはできません"
+
+#: mcs/mcs/property.cs:401
+#, csharp-format
 msgid ""
-"Value specified for the argument to 'System.Runtime.InteropServices."
-"DefaultCharSetAttribute' is not valid"
+"The accessibility modifier of the `{0}' accessor must be more restrictive "
+"than the modifier of the property or indexer `{1}'"
+msgstr ""
+
+#: mcs/mcs/property.cs:502
+#, csharp-format
+msgid "Explicit interface implementation `{0}' is missing accessor `{1}'"
 msgstr ""
 
-#: mcs/mcs/statement.cs:85
+#: mcs/mcs/property.cs:521
+#, fuzzy, csharp-format
+msgid ""
+"`{0}': cannot override because `{1}' does not have an overridable get "
+"accessor"
+msgstr "`{0}': `{1}' はイベントではないため、オーバーライドできません"
+
+#: mcs/mcs/property.cs:538
+#, fuzzy, csharp-format
+msgid ""
+"`{0}': cannot override because `{1}' does not have an overridable set "
+"accessor"
+msgstr "`{0}': `{1}' はイベントではないため、オーバーライドできません"
+
+#: mcs/mcs/property.cs:579
+#, csharp-format
+msgid ""
+"`{0}': Cannot specify accessibility modifiers for both accessors of the "
+"property or indexer"
+msgstr ""
+
+#: mcs/mcs/property.cs:586
+#, csharp-format
+msgid ""
+"`{0}': accessibility modifiers on accessors may only be used if the property "
+"or indexer has both a get and a set accessor"
+msgstr ""
+
+#: mcs/mcs/property.cs:783
+#, csharp-format
+msgid ""
+"Automatically implemented property `{0}' cannot be used inside a type with "
+"an explicit StructLayout attribute"
+msgstr ""
+
+#: mcs/mcs/property.cs:1274
+#, csharp-format
+msgid "`{0}': event must be of a delegate type"
+msgstr ""
+
+#: mcs/mcs/property.cs:1482
+#, csharp-format
+msgid ""
+"The `{0}' attribute is valid only on an indexer that is not an explicit "
+"interface member declaration"
+msgstr ""
+
+#: mcs/mcs/property.cs:1516
+#, fuzzy
+msgid "Cannot set the `IndexerName' attribute on an indexer marked override"
+msgstr "インデクサを含む型には`DefaultMember'属性を指定できません"
+
+#: mcs/mcs/reflection.cs:239
+msgid "Could not access the key inside the container `"
+msgstr ""
+
+#: mcs/mcs/roottypes.cs:434
+msgid ""
+"The compilation may fail due to missing `System.Reflection.Emit."
+"AssemblyBuilder.SetCorlibTypeBuilders(...)' method"
+msgstr ""
+
+#: mcs/mcs/roottypes.cs:529
+#, csharp-format
+msgid "Value specified for the argument to `{0}' is not valid"
+msgstr ""
+
+#: mcs/mcs/statement.cs:87
 msgid ""
 "A lambda expression with statement body cannot be converted to an expresion "
 "tree"
 msgstr ""
 
-#: mcs/mcs/statement.cs:738
+#: mcs/mcs/statement.cs:740
 #, csharp-format
 msgid ""
 "An object of a type convertible to `{0}' is required for the return statement"
 msgstr ""
 
-#: mcs/mcs/statement.cs:751
+#: mcs/mcs/statement.cs:753
 #, csharp-format
 msgid ""
 "`{0}': A return keyword must not be followed by any expression when method "
 "returns void"
 msgstr ""
 
-#: mcs/mcs/statement.cs:776
+#: mcs/mcs/statement.cs:778
 #, csharp-format
 msgid ""
 "Cannot convert `{0}' to delegate type `{1}' because some of the return types "
 "in the block are not implicitly convertible to the delegate return type"
 msgstr ""
 
-#: mcs/mcs/statement.cs:804
+#: mcs/mcs/statement.cs:806
 msgid ""
 "Cannot return a value from iterators. Use the yield return statement to "
 "return a value, or yield break to end the iteration"
 msgstr ""
 
-#: mcs/mcs/statement.cs:950 mcs/mcs/statement.cs:984
+#: mcs/mcs/statement.cs:963 mcs/mcs/statement.cs:997
 msgid "A goto case is only valid inside a switch statement"
 msgstr ""
 
-#: mcs/mcs/statement.cs:1063 mcs/mcs/statement.cs:4593
+#: mcs/mcs/statement.cs:1076 mcs/mcs/statement.cs:4726
 msgid "The type caught or thrown must be derived from System.Exception"
 msgstr ""
 
-#: mcs/mcs/statement.cs:1564
-#, csharp-format
-msgid ""
-"The label `{0}' shadows another label by the same name in a contained scope"
+#: mcs/mcs/statement.cs:1298
+msgid "A fixed statement cannot use an implicitly typed local variable"
 msgstr ""
 
-#: mcs/mcs/statement.cs:1589
-#, csharp-format
-msgid "The label `{0}' is a duplicate"
+#: mcs/mcs/statement.cs:1303
+msgid "An implicitly typed local variable cannot be a constant"
 msgstr ""
 
-#: mcs/mcs/statement.cs:1684
-#, csharp-format
-msgid "`{0}' conflicts with a declaration in a child block"
+#: mcs/mcs/statement.cs:1308
+msgid ""
+"An implicitly typed local variable declarator must include an initializer"
+msgstr ""
+
+#: mcs/mcs/statement.cs:1313
+msgid ""
+"An implicitly typed local variable declaration cannot include multiple "
+"declarators"
 msgstr ""
 
-#: mcs/mcs/statement.cs:1785
+#: mcs/mcs/statement.cs:1883
 #, csharp-format
 msgid ""
 "A local variable named `{0}' cannot be declared in this scope because it "
@@ -2754,96 +3607,112 @@ msgid ""
 "scope to denote something else"
 msgstr ""
 
-#: mcs/mcs/statement.cs:1794
+#: mcs/mcs/statement.cs:1894
 #, csharp-format
-msgid "A local variable named `{0}' is already defined in this scope"
+msgid ""
+"`{0}': An anonymous type cannot have multiple properties with the same name"
+msgstr "`{0}': 匿名型は同一の名前で複数のプロパティをもつことができません"
+
+#: mcs/mcs/statement.cs:1897
+#, csharp-format
+msgid "The parameter name `{0}' is a duplicate"
 msgstr ""
 
-#: mcs/mcs/statement.cs:1799
+#: mcs/mcs/statement.cs:1904
 #, csharp-format
-msgid "The type parameter name `{0}' is the same as `{1}'"
+msgid "A local variable named `{0}' is already defined in this scope"
 msgstr ""
 
-#: mcs/mcs/statement.cs:1944
-msgid "An implicitly typed local variable cannot be a constant"
+#: mcs/mcs/statement.cs:1910
+#, fuzzy, csharp-format
+msgid ""
+"The type parameter name `{0}' is the same as local variable or parameter name"
 msgstr ""
+"型パラメータ `{0}' が、その宣言型あるいはメソッドと同じ名前になっています"
 
-#: mcs/mcs/statement.cs:2860
+#: mcs/mcs/statement.cs:2482
+#, csharp-format
+msgid ""
+"The out parameter `{0}' must be assigned to before control leaves the "
+"current method"
+msgstr ""
+
+#: mcs/mcs/statement.cs:2573
 #, csharp-format
 msgid "`{0}': not all code paths return a value"
 msgstr ""
 
-#: mcs/mcs/statement.cs:2863
+#: mcs/mcs/statement.cs:2577
 #, csharp-format
 msgid "Not all code paths return a value in anonymous method of type `{0}'"
 msgstr ""
 
-#: mcs/mcs/statement.cs:2921
+#: mcs/mcs/statement.cs:2748
+#, csharp-format
+msgid "The label `{0}' is a duplicate"
+msgstr ""
+
+#: mcs/mcs/statement.cs:2757 mcs/mcs/statement.cs:2768
 #, csharp-format
 msgid ""
-"The out parameter `{0}' must be assigned to before control leaves the "
-"current method"
+"The label `{0}' shadows another label by the same name in a contained scope"
 msgstr ""
 
-#: mcs/mcs/statement.cs:3101
+#: mcs/mcs/statement.cs:3088
 #, csharp-format
 msgid "The label `case {0}:' already occurs in this switch statement"
 msgstr ""
 
-#: mcs/mcs/statement.cs:3632
+#: mcs/mcs/statement.cs:3629
 #, csharp-format
 msgid ""
 "A switch expression of type `{0}' cannot be converted to an integral type, "
 "bool, char, string, enum or nullable type"
 msgstr ""
 
-#: mcs/mcs/statement.cs:4095
+#: mcs/mcs/statement.cs:4114
 #, csharp-format
 msgid "`{0}' is not a reference type as required by the lock statement"
 msgstr ""
 
-#: mcs/mcs/statement.cs:4358
-msgid "A fixed statement cannot use an implicitly typed local variable"
-msgstr ""
-
-#: mcs/mcs/statement.cs:4368
+#: mcs/mcs/statement.cs:4455
 msgid "The type of locals declared in a fixed statement must be a pointer type"
 msgstr ""
 
-#: mcs/mcs/statement.cs:4392
+#: mcs/mcs/statement.cs:4471
 msgid ""
 "The right hand side of a fixed statement assignment may not be a cast "
 "expression"
 msgstr ""
 
-#: mcs/mcs/statement.cs:4470
+#: mcs/mcs/statement.cs:4542
 msgid ""
 "You cannot use the fixed statement to take the address of an already fixed "
 "expression"
 msgstr ""
 
-#: mcs/mcs/statement.cs:4733
+#: mcs/mcs/statement.cs:4856
 #, csharp-format
 msgid ""
 "A previous catch clause already catches all exceptions of this or a super "
 "type `{0}'"
 msgstr ""
 
-#: mcs/mcs/statement.cs:4937
+#: mcs/mcs/statement.cs:5029
 #, csharp-format
 msgid ""
 "`{0}': type used in a using statement must be implicitly convertible to "
 "`System.IDisposable'"
 msgstr ""
 
-#: mcs/mcs/statement.cs:5322
+#: mcs/mcs/statement.cs:5451
 #, csharp-format
 msgid ""
 "foreach statement requires that the return type `{0}' of `{1}' must have a "
 "suitable public MoveNext method and public Current property"
 msgstr ""
 
-#: mcs/mcs/statement.cs:5360
+#: mcs/mcs/statement.cs:5491
 #, csharp-format
 msgid ""
 "foreach statement cannot operate on variables of type `{0}' because it "
@@ -2851,48 +3720,40 @@ msgid ""
 "implementation"
 msgstr ""
 
-#: mcs/mcs/statement.cs:5379
+#: mcs/mcs/statement.cs:5516
 #, csharp-format
 msgid ""
 "foreach statement cannot operate on variables of type `{0}' because it does "
 "not contain a definition for `{1}' or is inaccessible"
 msgstr ""
 
-#: mcs/mcs/statement.cs:5576
+#: mcs/mcs/statement.cs:5722
 msgid "Use of null is not valid in this context"
 msgstr ""
 
-#: mcs/mcs/statement.cs:5586
+#: mcs/mcs/statement.cs:5732
 #, csharp-format
 msgid "Foreach statement cannot operate on a `{0}'"
 msgstr ""
 
-#: mcs/mcs/typemanager.cs:237
+#: mcs/mcs/typemanager.cs:396
 #, csharp-format
 msgid "The predefined type `{0}.{1}' is not defined or imported"
 msgstr ""
 
-#: mcs/mcs/typemanager.cs:243
+#: mcs/mcs/typemanager.cs:402
 #, csharp-format
 msgid "The predefined type `{0}.{1}' is not declared correctly"
 msgstr ""
 
-#: mcs/mcs/typemanager.cs:262
+#: mcs/mcs/typemanager.cs:581
 #, csharp-format
 msgid ""
 "The compiler required member `{0}.{1}{2}' could not be found or is "
 "inaccessible"
 msgstr ""
 
-#: mcs/mcs/typemanager.cs:721
-#, csharp-format
-msgid ""
-"Friend access was granted to `{0}', but the output assembly is named `{1}'. "
-"Try adding a reference to `{0}' or change the output assembly name to match "
-"it"
-msgstr ""
-
-#: mcs/mcs/typemanager.cs:823
+#: mcs/mcs/typemanager.cs:889
 #, csharp-format
 msgid ""
 "Cannot take the address of, get the size of, or declare a pointer to a "
@@ -2902,8 +3763,12 @@ msgstr ""
 #~ msgid "Can not use a type parameter in an attribute"
 #~ msgstr "属性の中で型パラメータを使用することはできません"
 
-#~ msgid "Expected `{0}'"
-#~ msgstr "`{0}' が必要です"
+#~ msgid ""
+#~ "Added modules must be marked with the CLSCompliant attribute to match the "
+#~ "assembly"
+#~ msgstr ""
+#~ "追加されるモジュールは、アセンブリに適合するCLSCompliant属性でマークされな"
+#~ "ければなりません"
 
 #~ msgid ""
 #~ "`{0}': Any identifier with double underscores cannot be used when ISO "
@@ -2915,61 +3780,14 @@ msgstr ""
 #~ msgid "Cannot derive from `{0}' because it is a type parameter"
 #~ msgstr "`{0}' は型パラメータであるため、ここから派生することはできません"
 
-#~ msgid "'{0}' in explicit interface declaration is not an interface"
-#~ msgstr ""
-#~ "明示的なインターフェースの宣言で記述された `{0}' は、インターフェースでは"
-#~ "ありません"
-
-#~ msgid ""
-#~ "The DllImport attribute must be specified on a method marked `static' and "
-#~ "`extern'"
-#~ msgstr ""
-#~ "`static'かつ`extern'で宣言されたメソッドには、DllImport属性が指定されなけ"
-#~ "ればなりません"
-
-#~ msgid "`{0}': A partial method parameters cannot use `out' modifier"
-#~ msgstr "`{0}': 部分メソッドのパラメータで`out'修飾子は使用できません"
-
-#~ msgid ""
-#~ "Conditional not valid on `{0}' because it is a constructor, destructor, "
-#~ "operator or explicit interface implementation"
-#~ msgstr ""
-#~ "Conditionalは コンストラクタ、デストラクタ、演算子または明示的なインター"
-#~ "フェースの実装である `{0}'  では無効です"
-
 #~ msgid "Do not override object.Finalize. Instead, provide a destructor"
 #~ msgstr ""
 #~ "object.Finalizeをオーバーライドせず、代わりにデストラクタを提供してくださ"
 #~ "い"
 
-#~ msgid "Program `{0}' has more than one entry point defined: `{1}'"
-#~ msgstr ""
-#~ "プログラム `{0}' には複数のエントリポイントが定義されています: `{1}'"
-
-#~ msgid "Conditional not valid on `{0}' because its return type is not void"
-#~ msgstr "Conditionalは戻り値型がvoidでない `{0}' では無効です"
-
-#~ msgid "Conditional not valid on `{0}' because it is an override method"
-#~ msgstr "Conditionalはオーバーライドメソッドである `{0}' では無効です"
-
-#~ msgid "Conditional not valid on interface members"
-#~ msgstr "Conditionalはインターフェースメンバでは無効です"
-
-#~ msgid "Conditional member `{0}' cannot implement interface member `{1}'"
-#~ msgstr ""
-#~ "Conditionalメンバ `{0}' はインターフェースメンバ `{1}' を実装できません"
-
-#~ msgid "Conditional method `{0}' cannot have an out parameter"
-#~ msgstr "Conditionalメソッド `{0}' ではoutパラメータを指定できません"
-
 #~ msgid ""
-#~ "`{0}': Extension methods cannot be declared without a reference to System."
-#~ "Core.dll assembly. Add the assembly reference or remove `this' modifer "
-#~ "from the first parameter"
+#~ "Referenced file `{0}' is not an assembly. Consider using `-addmodule' "
+#~ "option instead"
 #~ msgstr ""
-#~ "`{0}': 拡張メソッドはSystem.Core.dllアセンブリへの参照なしでは宣言できませ"
-#~ "ん。アセンブリ参照を追加するか、または最初のパラメータから `this' 修飾子を"
-#~ "取り除いてください。"
-
-#~ msgid "Class, struct, or interface method must have a return type"
-#~ msgstr "クラス、構造体、インターフェースのメソッドには戻り値型が必要です"
+#~ "参照ファイル `{0}' はアセンブリではありません。代わりに`-addmodule' オプ"
+#~ "ションを使用してみてください"
diff --git a/po/mcs/mcs.pot b/po/mcs/mcs.pot
index 3d9e81e..a65f70d 100644
--- a/po/mcs/mcs.pot
+++ b/po/mcs/mcs.pot
@@ -6,9 +6,9 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: mono 2.8.1\n"
+"Project-Id-Version: mono 2.10\n"
 "Report-Msgid-Bugs-To: http://www.mono-project.com/Bugs\n"
-"POT-Creation-Date: 2010-11-12 03:29-0700\n"
+"POT-Creation-Date: 2011-01-18 10:45-0700\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
 "Language-Team: LANGUAGE <LL at li.org>\n"
@@ -16,87 +16,110 @@ msgstr ""
 "Content-Type: text/plain; charset=CHARSET\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: mcs/mcs/anonymous.cs:857
+#: mcs/mcs/anonymous.cs:880
 #, csharp-format
 msgid "Cannot convert `{0}' to an expression tree of non-delegate type `{1}'"
 msgstr ""
 
-#: mcs/mcs/anonymous.cs:862
+#: mcs/mcs/anonymous.cs:885
 #, csharp-format
 msgid "Cannot convert `{0}' to non-delegate type `{1}'"
 msgstr ""
 
-#: mcs/mcs/anonymous.cs:874
+#: mcs/mcs/anonymous.cs:897
 #, csharp-format
 msgid ""
 "Cannot convert `{0}' to delegate type `{1}' since there is a parameter "
 "mismatch"
 msgstr ""
 
-#: mcs/mcs/anonymous.cs:886 mcs/mcs/ecore.cs:4172
+#: mcs/mcs/anonymous.cs:909 mcs/mcs/ecore.cs:4524
 #, csharp-format
 msgid "Delegate `{0}' does not take `{1}' arguments"
 msgstr ""
 
-#: mcs/mcs/anonymous.cs:901
+#: mcs/mcs/anonymous.cs:924
 #, csharp-format
 msgid "Parameter `{0}' should not be declared with the `{1}' keyword"
 msgstr ""
 
-#: mcs/mcs/anonymous.cs:904
+#: mcs/mcs/anonymous.cs:927
 #, csharp-format
 msgid "Parameter `{0}' must be declared with the `{1}' keyword"
 msgstr ""
 
-#: mcs/mcs/anonymous.cs:925
+#: mcs/mcs/anonymous.cs:948
 #, csharp-format
 msgid "Parameter `{0}' is declared as type `{1}' but should be `{2}'"
 msgstr ""
 
-#: mcs/mcs/anonymous.cs:1080
+#: mcs/mcs/anonymous.cs:1103
 msgid "An anonymous method cannot be converted to an expression tree"
 msgstr ""
 
-#: mcs/mcs/anonymous.cs:1099
+#: mcs/mcs/anonymous.cs:1122
 #, csharp-format
 msgid ""
 "Cannot convert anonymous method block without a parameter list to delegate "
 "type `{0}' because it has one or more `out' parameters"
 msgstr ""
 
-#: mcs/mcs/anonymous.cs:1123
+#: mcs/mcs/anonymous.cs:1146
 msgid ""
 "Anonymous methods and lambda expressions cannot be used in the current "
 "context"
 msgstr ""
 
-#: mcs/mcs/anonymous.cs:1165
+#: mcs/mcs/anonymous.cs:1188
 #, csharp-format
 msgid ""
 "Local variable or parameter `{0}' cannot have their address taken and be "
 "used inside an anonymous method or lambda expression"
 msgstr ""
 
-#: mcs/mcs/anonymous.cs:1430
+#: mcs/mcs/anonymous.cs:1438
 msgid "An expression tree cannot contain an anonymous method expression"
 msgstr ""
 
-#: mcs/mcs/anonymous.cs:1657
+#: mcs/mcs/argument.cs:101
+msgid ""
+"An expression tree cannot contain an invocation which uses optional parameter"
+msgstr ""
+
+#: mcs/mcs/argument.cs:184
+msgid "An expression tree cannot contain named argument"
+msgstr ""
+
+#: mcs/mcs/argument.cs:303
 #, csharp-format
 msgid ""
-"`{0}': An anonymous type cannot have multiple properties with the same name"
+"The method group `{0}' cannot be used as an argument of dynamic operation. "
+"Consider using parentheses to invoke the method"
+msgstr ""
+
+#: mcs/mcs/argument.cs:307
+msgid ""
+"An anonymous method or lambda expression cannot be used as an argument of "
+"dynamic operation. Consider using a cast"
+msgstr ""
+
+#: mcs/mcs/argument.cs:310
+#, csharp-format
+msgid ""
+"An expression of type `{0}' cannot be used as an argument of dynamic "
+"operation"
 msgstr ""
 
-#: mcs/mcs/assign.cs:295
+#: mcs/mcs/assign.cs:299
 msgid "An expression tree cannot contain an assignment operator"
 msgstr ""
 
-#: mcs/mcs/assign.cs:571
+#: mcs/mcs/assign.cs:627
 #, csharp-format
 msgid "Cannot assign to `{0}' because it is a `{1}'"
 msgstr ""
 
-#: mcs/mcs/attribute.cs:168
+#: mcs/mcs/attribute.cs:196
 #, csharp-format
 msgid ""
 "`{0}' is not a valid named attribute argument. Named attribute arguments "
@@ -104,197 +127,670 @@ msgid ""
 "properties which are public and not static"
 msgstr ""
 
-#: mcs/mcs/attribute.cs:177
+#: mcs/mcs/attribute.cs:205
 #, csharp-format
 msgid ""
 "`{0}' is not a valid named attribute argument because it is not a valid "
 "attribute parameter type"
 msgstr ""
 
-#: mcs/mcs/attribute.cs:183
+#: mcs/mcs/attribute.cs:211
 msgid "An attribute argument cannot be dynamic expression"
 msgstr ""
 
-#: mcs/mcs/attribute.cs:188
+#: mcs/mcs/attribute.cs:216
 msgid "The Guid attribute must be specified with the ComImport attribute"
 msgstr ""
 
-#: mcs/mcs/attribute.cs:193
+#: mcs/mcs/attribute.cs:221
 #, csharp-format
 msgid "Do not use `{0}' directly. Use parameter modifier `this' instead"
 msgstr ""
 
-#: mcs/mcs/attribute.cs:198
+#: mcs/mcs/attribute.cs:226
 #, csharp-format
 msgid "Do not use `{0}' directly. Use `dynamic' keyword instead"
 msgstr ""
 
-#: mcs/mcs/attribute.cs:207
+#: mcs/mcs/attribute.cs:235
 #, csharp-format
 msgid "Error during emitting `{0}' attribute. The reason is `{1}'"
 msgstr ""
 
-#: mcs/mcs/attribute.cs:238
+#: mcs/mcs/attribute.cs:266
 #, csharp-format
 msgid "`{0}': is not an attribute class"
 msgstr ""
 
-#: mcs/mcs/attribute.cs:274
+#: mcs/mcs/attribute.cs:302
 #, csharp-format
 msgid ""
 "`{0}' is ambiguous between `{1}' and `{2}'. Use either `@{0}' or `{0}"
 "Attribute'"
 msgstr ""
 
-#: mcs/mcs/attribute.cs:380
+#: mcs/mcs/attribute.cs:385
 #, csharp-format
 msgid "Cannot apply attribute class `{0}' because it is abstract"
 msgstr ""
 
-#: mcs/mcs/attribute.cs:438
+#: mcs/mcs/attribute.cs:453
 #, csharp-format
 msgid "Duplicate named attribute `{0}' argument"
 msgstr ""
 
-#: mcs/mcs/attribute.cs:714
+#: mcs/mcs/attribute.cs:730
 #, csharp-format
 msgid ""
 "`{0}' is not a valid attribute location for this declaration. Valid "
 "attribute locations for this declaration are `{1}'"
 msgstr ""
 
-#: mcs/mcs/attribute.cs:1055
+#: mcs/mcs/attribute.cs:1004
 #, csharp-format
 msgid ""
 "The attribute `{0}' is not valid on this declaration type. It is valid on `"
 "{1}' declarations only"
 msgstr ""
 
-#: mcs/mcs/attribute.cs:1073
+#: mcs/mcs/attribute.cs:1022
 #, csharp-format
 msgid "The argument to the `{0}' attribute must be a valid identifier"
 msgstr ""
 
-#: mcs/mcs/attribute.cs:1086
+#: mcs/mcs/attribute.cs:1035
 #, csharp-format
 msgid "Invalid value for argument to `{0}' attribute"
 msgstr ""
 
-#: mcs/mcs/attribute.cs:1386
+#: mcs/mcs/attribute.cs:1341
 #, csharp-format
 msgid "The attribute `{0}' cannot be applied multiple times"
 msgstr ""
 
-#: mcs/mcs/attribute.cs:1571
+#: mcs/mcs/attribute.cs:1603
+#, csharp-format
+msgid "`{0}' is obsolete: `{1}'"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:474
+msgid "A namespace declaration cannot have modifiers or attributes"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:570
+msgid ""
+"Namespace elements cannot be explicitly declared as private, protected or "
+"protected internal"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:613
 msgid ""
-"Added modules must be marked with the CLSCompliant attribute to match the "
-"assembly"
+"Assembly and module attributes must precede all other elements except using "
+"clauses and extern alias declarations"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:752
+msgid "'<' unexpected: attributes cannot be generic"
 msgstr ""
 
-#: mcs/mcs/attribute.cs:1597
+#: mcs/mcs/cs-parser.jay:800
+msgid "Named attribute arguments must appear after the positional arguments"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:892
 #, csharp-format
-msgid "`{0}' is obsolete: `{1}'"
+msgid ""
+"Unexpected symbol `{0}' in class, struct, or interface member declaration"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:992
+#, csharp-format
+msgid "The constant `{0}' cannot be marked static"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1047 mcs/mcs/cs-parser.jay:4792
+msgid "A const field requires a value to be provided"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1066
+msgid "Fields cannot have void type"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1116
+msgid ""
+"A fixed size buffer field must have the array size specifier after the field "
+"name"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1211
+msgid "Value or constant expected"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1239 mcs/mcs/cs-parser.jay:1800
+#: mcs/mcs/cs-parser.jay:1848 mcs/mcs/cs-parser.jay:2433
+#: mcs/mcs/cs-parser.jay:2461
+#, csharp-format
+msgid "`{0}': interface members cannot have a definition"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1276 mcs/mcs/cs-parser.jay:1316 mcs/mcs/decl.cs:1404
+msgid "Constraints are not allowed on non-generic declarations"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1284
+#, csharp-format
+msgid ""
+"`{0}': Cannot specify constraints for overrides and explicit interface "
+"implementation methods"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1335
+msgid ""
+"A partial method cannot define access modifier or any of abstract, extern, "
+"new, override, sealed, or virtual modifiers"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1341
+msgid ""
+"A partial method must be declared within a partial class or partial struct"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1365
+#, csharp-format
+msgid "Member modifier `{0}' must precede the member type and name"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1411 mcs/mcs/cs-parser.jay:1418
+msgid ""
+"A params parameter must be the last parameter in a formal parameter list"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1427 mcs/mcs/cs-parser.jay:1433
+msgid ""
+"An __arglist parameter must be the last parameter in a formal parameter list"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1471
+msgid "The parameter modifier `this' can only be used on the first parameter"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1473
+msgid "Optional parameter cannot precede required parameters"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1500
+msgid "Array type specifier, [], must appear before parameter name"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1532 mcs/mcs/cs-parser.jay:1537
+#, csharp-format
+msgid "Cannot specify a default value for the `{0}' parameter"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1548
+msgid "Optional parameter is not valid in this context"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1578
+msgid "The parameter modifiers `this' and `ref' cannot be used altogether"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1581
+msgid "The parameter modifiers `this' and `out' cannot be used altogether"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1584
+msgid "A parameter cannot have specified more than one modifier"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1627
+msgid "Cannot specify a default value for a parameter array"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1643
+msgid "The `params' modifier is not allowed in current context"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1649
+msgid "The parameter modifiers `this' and `params' cannot be used altogether"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1651
+msgid "The params parameter cannot be declared as ref or out"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1664
+msgid "__arglist is not valid in this context"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1683
+#, csharp-format
+msgid "`{0}': property or indexer cannot have void type"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1724
+#, csharp-format
+msgid "`{0}': indexer return type cannot be `void'"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1727
+msgid "Indexers must have at least one parameter"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1760
+#, csharp-format
+msgid "`{0}': property or indexer must have at least one accessor"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1763
+msgid "Semicolon after method or accessor block is not valid"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1765
+msgid "A get or set accessor expected"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1778 mcs/mcs/cs-parser.jay:1821
+msgid "Property accessor already defined"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1931 mcs/mcs/cs-parser.jay:1935
+msgid "Interfaces cannot contain fields or constants"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1943
+msgid "Interfaces cannot contain operators"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1947
+msgid "Interfaces cannot contain contructors"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1951
+msgid ""
+"Interfaces cannot declare classes, structs, interfaces, delegates, or "
+"enumerations"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1992
+msgid "User-defined operators cannot return void"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2020
+msgid "Overloadable binary operator expected"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2022
+#, csharp-format
+msgid "Overloaded unary operator `{0}' takes one parameter"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2027
+#, csharp-format
+msgid "Overloaded binary operator `{0}' takes two parameters"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2030
+msgid "Overloadable unary operator expected"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2177
+msgid "Class, struct, or interface method must have a return type"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2181
+#, csharp-format
+msgid "`{0}': static constructor cannot have an access modifier"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2186
+#, csharp-format
+msgid ""
+"`{0}': static constructor cannot have an explicit `this' or `base' "
+"constructor call"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2249
+msgid "Name of destructor must match name of class"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2251
+msgid "Only class types can contain destructor"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2276
+#, csharp-format
+msgid ""
+"`{0}': An explicit interface implementation of an event must use property "
+"syntax"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2308
+msgid "Event in interface cannot have add or remove accessors"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2377
+#, csharp-format
+msgid "`{0}': event in interface cannot have an initializer"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2382
+#, csharp-format
+msgid "`{0}': abstract event cannot have an initializer"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2397 mcs/mcs/cs-parser.jay:2402
+#, csharp-format
+msgid "`{0}': event property must have both add and remove accessors"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2407
+msgid "An add or remove accessor expected"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2416 mcs/mcs/cs-parser.jay:2444
+msgid "Modifiers cannot be placed on event accessor declarations"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2471
+msgid "An add or remove accessor must have a body"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2493
+msgid "Enums cannot have type parameters"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2824
+msgid "Type parameter declaration must be an identifier not a type"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2875
+msgid "Invalid parameter type `void'"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2940
+#, csharp-format
+msgid "Invalid base type `{0}'"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:3189
+msgid "An element initializer cannot be empty"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:3227
+#, csharp-format
+msgid "Named argument `{0}' specified multiple times"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:3236 mcs/mcs/cs-parser.jay:3241
+msgid "An argument is missing"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:3410
+msgid "Array creation must have array size or array initializer"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:3423
+msgid "Invalid rank specifier, expecting `,' or `]'"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:3503
+msgid ""
+"Invalid anonymous type member declarator. Anonymous type members must be a "
+"member assignment, simple name or member access expression"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:4027
+msgid "All lambda parameters must be typed either explicitly or implicitly"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:4213
+#, csharp-format
+msgid "Duplicate `{0}' modifier"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:4217
+msgid "More than one protection modifier specified"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:4231
+msgid "Keyword `new' is not allowed on namespace elements"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:4343
+#, csharp-format
+msgid "A constraint clause has already been specified for type parameter `{0}'"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:4373
+msgid "The `new()' constraint must be the last constraint specified"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:4379
+msgid ""
+"The `class' or `struct' constraint must be the first constraint specified"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:4383
+msgid "The `new()' constraint cannot be used with the `struct' constraint"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:4397
+#, csharp-format
+msgid "Invalid constraint type `{0}'"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:4579 mcs/mcs/cs-parser.jay:4584
+msgid "An embedded statement may not be a declaration or labeled statement"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:4751
+msgid ""
+"Syntax error, bad array declarator. To declare a managed array the rank "
+"specifier precedes the variable's identifier. To declare a fixed size buffer "
+"field, use the fixed keyword before the field type"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:4831
+msgid "A stackalloc expression requires [] after type"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:5113
+msgid "Type and identifier are both required in a foreach statement"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:5205 mcs/mcs/cs-parser.jay:5221
+msgid "; expected"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:5207
+msgid "Expression expected after yield return"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:5254
+msgid "Expected catch or finally"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:5273
+msgid "Try statement already has an empty catch block"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:5318
+msgid ""
+"A type that derives from `System.Exception', `object', or `string' expected"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:5426
+msgid ""
+"You must provide an initializer in a fixed or using statement declaration"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:6014
+msgid "Expecting `;'"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:6022
+#, csharp-format
+msgid "The parameter modifier `{0}' is not valid in this context"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:6028
+#, csharp-format
+msgid "Duplicate parameter modifier `{0}'"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:6034
+msgid "Type expected"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:6039
+msgid "Unsafe code requires the `unsafe' command line option to be specified"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:6049
+msgid "Named arguments must appear after the positional arguments"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:6140
+msgid "Syntax error, "
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:6194
+msgid "Parsing error"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:6200
+msgid "Internal compiler error during parsing"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:6211
+#, csharp-format
+msgid "{0}: `{1}' is a keyword"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:6338
+#, csharp-format
+msgid "Identifier expected, `{0}' is a keyword"
 msgstr ""
 
-#: mcs/mcs/cs-tokenizer.cs:772
+#: mcs/mcs/cs-parser.jay:6352
+#, csharp-format
+msgid "{1} `{0}'"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:6354
+#, csharp-format
+msgid "{2} `{0}', expecting {1}"
+msgstr ""
+
+#: mcs/mcs/cs-tokenizer.cs:760
 msgid ""
 "The `partial' modifier can be used only immediately before `class', "
 "`struct', `interface', or `void' keyword"
 msgstr ""
 
-#: mcs/mcs/cs-tokenizer.cs:1394 mcs/mcs/cs-tokenizer.cs:1461
+#: mcs/mcs/cs-tokenizer.cs:1395 mcs/mcs/cs-tokenizer.cs:1462
 msgid "Invalid number"
 msgstr ""
 
-#: mcs/mcs/cs-tokenizer.cs:1646
+#: mcs/mcs/cs-tokenizer.cs:1647
 #, csharp-format
 msgid "Unrecognized escape sequence `\\{0}'"
 msgstr ""
 
-#: mcs/mcs/cs-tokenizer.cs:1665
+#: mcs/mcs/cs-tokenizer.cs:1666
 msgid "Unrecognized escape sequence"
 msgstr ""
 
-#: mcs/mcs/cs-tokenizer.cs:1886
+#: mcs/mcs/cs-tokenizer.cs:1887
 msgid "Missing identifier to pre-processor directive"
 msgstr ""
 
-#: mcs/mcs/cs-tokenizer.cs:1896 mcs/mcs/cs-tokenizer.cs:1900
+#: mcs/mcs/cs-tokenizer.cs:1897 mcs/mcs/cs-tokenizer.cs:1901
 #, csharp-format
 msgid "Identifier expected: {0}"
 msgstr ""
 
-#: mcs/mcs/cs-tokenizer.cs:2372
+#: mcs/mcs/cs-tokenizer.cs:2373
 msgid "Integral constant is too large"
 msgstr ""
 
-#: mcs/mcs/cs-tokenizer.cs:2377
+#: mcs/mcs/cs-tokenizer.cs:2378
 msgid "Invalid preprocessor directive"
 msgstr ""
 
-#: mcs/mcs/cs-tokenizer.cs:2384
+#: mcs/mcs/cs-tokenizer.cs:2385
 #, csharp-format
 msgid "Unexpected processor directive ({0})"
 msgstr ""
 
-#: mcs/mcs/cs-tokenizer.cs:2390
+#: mcs/mcs/cs-tokenizer.cs:2391
 msgid ""
 "Cannot define or undefine preprocessor symbols after first token in file"
 msgstr ""
 
-#: mcs/mcs/cs-tokenizer.cs:2396
+#: mcs/mcs/cs-tokenizer.cs:2397
 msgid ""
 "Preprocessor directives must appear as the first non-whitespace character on "
 "a line"
 msgstr ""
 
-#: mcs/mcs/cs-tokenizer.cs:2401
+#: mcs/mcs/cs-tokenizer.cs:2402
 msgid "Single-line comment or end-of-line expected"
 msgstr ""
 
-#: mcs/mcs/cs-tokenizer.cs:2434 mcs/mcs/cs-tokenizer.cs:3431
+#: mcs/mcs/cs-tokenizer.cs:2435 mcs/mcs/cs-tokenizer.cs:3431
 msgid "Expected `#endif' directive"
 msgstr ""
 
-#: mcs/mcs/cs-tokenizer.cs:2467 mcs/mcs/cs-tokenizer.cs:2488
-#: mcs/mcs/cs-tokenizer.cs:2519 mcs/mcs/cs-tokenizer.cs:3429
+#: mcs/mcs/cs-tokenizer.cs:2468 mcs/mcs/cs-tokenizer.cs:2489
+#: mcs/mcs/cs-tokenizer.cs:2520 mcs/mcs/cs-tokenizer.cs:3429
 msgid "#endregion directive expected"
 msgstr ""
 
-#: mcs/mcs/cs-tokenizer.cs:2566
+#: mcs/mcs/cs-tokenizer.cs:2567
 msgid "Wrong preprocessor directive"
 msgstr ""
 
-#: mcs/mcs/cs-tokenizer.cs:2578
+#: mcs/mcs/cs-tokenizer.cs:2579
 #, csharp-format
 msgid "#error: '{0}'"
 msgstr ""
 
-#: mcs/mcs/cs-tokenizer.cs:2597
+#: mcs/mcs/cs-tokenizer.cs:2598
 msgid "The line number specified for #line directive is missing or invalid"
 msgstr ""
 
-#: mcs/mcs/cs-tokenizer.cs:2624 mcs/mcs/cs-tokenizer.cs:3242
+#: mcs/mcs/cs-tokenizer.cs:2625 mcs/mcs/cs-tokenizer.cs:3243
 msgid "Newline in constant"
 msgstr ""
 
-#: mcs/mcs/cs-tokenizer.cs:2635
+#: mcs/mcs/cs-tokenizer.cs:2636
 msgid "Unterminated string literal"
 msgstr ""
 
-#: mcs/mcs/cs-tokenizer.cs:2704
+#: mcs/mcs/cs-tokenizer.cs:2705
 msgid "Identifier too long (limit is 512 chars)"
 msgstr ""
 
-#: mcs/mcs/cs-tokenizer.cs:3091
+#: mcs/mcs/cs-tokenizer.cs:3092
 msgid "End-of-file found, '*/' expected"
 msgstr ""
 
-#: mcs/mcs/cs-tokenizer.cs:3200
+#: mcs/mcs/cs-tokenizer.cs:3201
 msgid "Keyword, identifier, or string expected after verbatim specifier: @"
 msgstr ""
 
-#: mcs/mcs/cs-tokenizer.cs:3257
+#: mcs/mcs/cs-tokenizer.cs:3217
+#, csharp-format
+msgid "Unexpected character `{0}'"
+msgstr ""
+
+#: mcs/mcs/cs-tokenizer.cs:3238
+msgid "Empty character literal"
+msgstr ""
+
+#: mcs/mcs/cs-tokenizer.cs:3258
 msgid "Too many characters in character literal"
 msgstr ""
 
@@ -302,1132 +798,1043 @@ msgstr ""
 msgid "The operation overflows at compile time in checked mode"
 msgstr ""
 
-#: mcs/mcs/cfold.cs:715 mcs/mcs/cfold.cs:795
+#: mcs/mcs/cfold.cs:764 mcs/mcs/cfold.cs:849
 msgid "Division by constant zero"
 msgstr ""
 
-#: mcs/mcs/class.cs:349
+#: mcs/mcs/class.cs:371
 #, csharp-format
 msgid ""
 "Partial declarations of `{0}' must be all classes, all structs or all "
 "interfaces"
 msgstr ""
 
-#: mcs/mcs/class.cs:358
+#: mcs/mcs/class.cs:380
 #, csharp-format
 msgid "Partial declarations of `{0}' have conflicting accessibility modifiers"
 msgstr ""
 
-#: mcs/mcs/class.cs:410
+#: mcs/mcs/class.cs:433
 #, csharp-format
 msgid ""
 "`{0}': explicit interface declaration can only be declared in a class or "
 "struct"
 msgstr ""
 
-#: mcs/mcs/class.cs:448
+#: mcs/mcs/class.cs:470 mcs/mcs/membercache.cs:1327
 #, csharp-format
 msgid ""
 "A member `{0}' is already defined. Rename this member or use different "
 "parameter types"
 msgstr ""
 
-#: mcs/mcs/class.cs:556
+#: mcs/mcs/class.cs:578
 msgid ""
 "Cannot specify the `DefaultMember' attribute on type containing an indexer"
 msgstr ""
 
-#: mcs/mcs/class.cs:562
+#: mcs/mcs/class.cs:584
 msgid "The RequiredAttribute attribute is not permitted on C# types"
 msgstr ""
 
-#: mcs/mcs/class.cs:839
+#: mcs/mcs/class.cs:855
 #, csharp-format
 msgid "Class `{0}' cannot derive from the dynamic type"
 msgstr ""
 
-#: mcs/mcs/class.cs:854
+#: mcs/mcs/class.cs:872
 #, csharp-format
 msgid "`{0}' is already listed in interface list"
 msgstr ""
 
-#: mcs/mcs/class.cs:862
+#: mcs/mcs/class.cs:880
 #, csharp-format
 msgid ""
 "Inconsistent accessibility: base interface `{0}' is less accessible than "
 "interface `{1}'"
 msgstr ""
 
-#: mcs/mcs/class.cs:868
+#: mcs/mcs/class.cs:886
 #, csharp-format
 msgid "Type `{0}' in interface list is not an interface"
 msgstr ""
 
-#: mcs/mcs/class.cs:870
+#: mcs/mcs/class.cs:888
 #, csharp-format
 msgid "`{0}': Classes cannot have multiple base classes (`{1}' and `{2}')"
 msgstr ""
 
-#: mcs/mcs/class.cs:873
+#: mcs/mcs/class.cs:891
 #, csharp-format
 msgid "`{0}': Base class `{1}' must be specified as first"
 msgstr ""
 
-#: mcs/mcs/class.cs:897
+#: mcs/mcs/class.cs:915
 #, csharp-format
 msgid "Partial declarations of `{0}' must not specify different base classes"
 msgstr ""
 
-#: mcs/mcs/class.cs:978
+#: mcs/mcs/class.cs:996
 #, csharp-format
 msgid ""
 "The operator `{0}' requires a matching operator `{1}' to also be defined"
 msgstr ""
 
-#: mcs/mcs/class.cs:1002
+#: mcs/mcs/class.cs:1021
 #, csharp-format
 msgid "`{0}' clashes with a predefined namespace"
 msgstr ""
 
-#: mcs/mcs/class.cs:1135
+#: mcs/mcs/class.cs:1150
 #, csharp-format
 msgid ""
 "Inherited interface `{0}' causes a cycle in the interface hierarchy of `{1}'"
 msgstr ""
 
-#: mcs/mcs/class.cs:1139
+#: mcs/mcs/class.cs:1156
 #, csharp-format
 msgid "Circular base class dependency involving `{0}' and `{1}'"
 msgstr ""
 
-#: mcs/mcs/class.cs:1166
+#: mcs/mcs/class.cs:1183
 #, csharp-format
 msgid ""
 "`{0}' cannot implement both `{1}' and `{2}' because they may unify for some "
 "type parameter substitutions"
 msgstr ""
 
-#: mcs/mcs/class.cs:1317
+#: mcs/mcs/class.cs:1329
 #, csharp-format
 msgid ""
 "Partial declarations of `{0}' must have the same type parameter names in the "
 "same order"
 msgstr ""
 
-#: mcs/mcs/class.cs:1324
+#: mcs/mcs/class.cs:1336
 #, csharp-format
 msgid ""
 "Partial declarations of `{0}' must have the same type parameter variance "
 "modifiers"
 msgstr ""
 
-#: mcs/mcs/class.cs:1349
+#: mcs/mcs/class.cs:1361
 #, csharp-format
 msgid ""
 "Partial declarations of `{0}' have inconsistent constraints for type "
 "parameter `{1}'"
 msgstr ""
 
-#: mcs/mcs/class.cs:1486
+#: mcs/mcs/class.cs:1500
 #, csharp-format
 msgid "`{0}': cannot implement a dynamic interface `{1}'"
 msgstr ""
 
-#: mcs/mcs/class.cs:1601
+#: mcs/mcs/class.cs:1618
 msgid ""
 "Two indexers have different names; the IndexerName attribute must be used "
 "with the same name on every indexer within a type"
 msgstr ""
 
-#: mcs/mcs/class.cs:1928
+#: mcs/mcs/class.cs:1952
 #, csharp-format
 msgid "A static member `{0}' cannot be marked as override, virtual or abstract"
 msgstr ""
 
-#: mcs/mcs/class.cs:1935
+#: mcs/mcs/class.cs:1959
 #, csharp-format
 msgid "A member `{0}' marked as override cannot be marked as new or virtual"
 msgstr ""
 
-#: mcs/mcs/class.cs:1947
+#: mcs/mcs/class.cs:1971
 #, csharp-format
 msgid "`{0}' cannot be both extern and abstract"
 msgstr ""
 
-#: mcs/mcs/class.cs:1952
+#: mcs/mcs/class.cs:1976
 #, csharp-format
 msgid "`{0}' cannot be both abstract and sealed"
 msgstr ""
 
-#: mcs/mcs/class.cs:1957
+#: mcs/mcs/class.cs:1981
 #, csharp-format
 msgid "The abstract method `{0}' cannot be marked virtual"
 msgstr ""
 
-#: mcs/mcs/class.cs:1963
+#: mcs/mcs/class.cs:1987
 #, csharp-format
 msgid "`{0}' is abstract but it is declared in the non-abstract class `{1}'"
 msgstr ""
 
-#: mcs/mcs/class.cs:1971
+#: mcs/mcs/class.cs:1995
 #, csharp-format
 msgid "`{0}': virtual or abstract members cannot be private"
 msgstr ""
 
-#: mcs/mcs/class.cs:1978
+#: mcs/mcs/class.cs:2002
 #, csharp-format
 msgid "`{0}' cannot be sealed because it is not an override"
 msgstr ""
 
-#: mcs/mcs/class.cs:2025
+#: mcs/mcs/class.cs:2049
 #, csharp-format
 msgid "`{0}': containing type does not implement interface `{1}'"
 msgstr ""
 
-#: mcs/mcs/class.cs:2125
+#: mcs/mcs/class.cs:2225
 #, csharp-format
 msgid "Type parameter `{0}' has same name as containing type, or method"
 msgstr ""
 
-#: mcs/mcs/class.cs:2133
+#: mcs/mcs/class.cs:2233
 #, csharp-format
 msgid "`{0}': member names cannot be the same as their enclosing type"
 msgstr ""
 
-#: mcs/mcs/class.cs:2294
+#: mcs/mcs/class.cs:2399
 msgid ""
 "The class System.Object cannot have a base class or implement an interface."
 msgstr ""
 
-#: mcs/mcs/class.cs:2302
+#: mcs/mcs/class.cs:2407
 #, csharp-format
 msgid "Attribute `{0}' is only valid on classes derived from System.Attribute"
 msgstr ""
 
-#: mcs/mcs/class.cs:2307
+#: mcs/mcs/class.cs:2412
 msgid ""
 "Attribute `System.Diagnostics.ConditionalAttribute' is only valid on methods "
 "or attribute classes"
 msgstr ""
 
-#: mcs/mcs/class.cs:2345
+#: mcs/mcs/class.cs:2450
 #, csharp-format
 msgid "`{0}': Static classes cannot contain user-defined operators"
 msgstr ""
 
-#: mcs/mcs/class.cs:2350
+#: mcs/mcs/class.cs:2455
 #, csharp-format
 msgid "`{0}': Static classes cannot contain destructor"
 msgstr ""
 
-#: mcs/mcs/class.cs:2355
+#: mcs/mcs/class.cs:2460
 #, csharp-format
 msgid "`{0}': cannot declare indexers in a static class"
 msgstr ""
 
-#: mcs/mcs/class.cs:2363
+#: mcs/mcs/class.cs:2468
 #, csharp-format
 msgid "`{0}': Static classes cannot have instance constructors"
 msgstr ""
 
-#: mcs/mcs/class.cs:2369
+#: mcs/mcs/class.cs:2474
 #, csharp-format
 msgid "`{0}': Extension methods must be declared static"
 msgstr ""
 
-#: mcs/mcs/class.cs:2373
+#: mcs/mcs/class.cs:2478
 #, csharp-format
 msgid "`{0}': cannot declare instance members in a static class"
 msgstr ""
 
-#: mcs/mcs/class.cs:2382
+#: mcs/mcs/class.cs:2487
 #, csharp-format
 msgid "`{0}': an abstract class cannot be sealed or static"
 msgstr ""
 
-#: mcs/mcs/class.cs:2386
+#: mcs/mcs/class.cs:2491
 #, csharp-format
 msgid "`{0}': a class cannot be both static and sealed"
 msgstr ""
 
-#: mcs/mcs/class.cs:2420
+#: mcs/mcs/class.cs:2521
 #, csharp-format
 msgid "`{0}': Cannot derive from type parameter `{1}'"
 msgstr ""
 
-#: mcs/mcs/class.cs:2424
+#: mcs/mcs/class.cs:2525
 #, csharp-format
 msgid ""
 "A generic type cannot derive from `{0}' because it is an attribute class"
 msgstr ""
 
-#: mcs/mcs/class.cs:2428
+#: mcs/mcs/class.cs:2529
 #, csharp-format
 msgid "`{0}': Cannot derive from static class `{1}'"
 msgstr ""
 
-#: mcs/mcs/class.cs:2432
+#: mcs/mcs/class.cs:2533
 #, csharp-format
 msgid "`{0}': cannot derive from sealed type `{1}'"
 msgstr ""
 
-#: mcs/mcs/class.cs:2435
+#: mcs/mcs/class.cs:2536
 #, csharp-format
 msgid ""
 "Static class `{0}' cannot derive from type `{1}'. Static classes must derive "
 "from object"
 msgstr ""
 
-#: mcs/mcs/class.cs:2442
+#: mcs/mcs/class.cs:2543
 #, csharp-format
 msgid "`{0}' cannot derive from special class `{1}'"
 msgstr ""
 
-#: mcs/mcs/class.cs:2450
+#: mcs/mcs/class.cs:2551
 #, csharp-format
 msgid ""
 "Inconsistent accessibility: base class `{0}' is less accessible than class `"
 "{1}'"
 msgstr ""
 
-#: mcs/mcs/class.cs:2458
+#: mcs/mcs/class.cs:2559
 #, csharp-format
 msgid "Static class `{0}' cannot implement interfaces"
 msgstr ""
 
-#: mcs/mcs/class.cs:2571 mcs/mcs/class.cs:2582
+#: mcs/mcs/class.cs:2678 mcs/mcs/class.cs:2689
 #, csharp-format
 msgid "Struct member `{0}' of type `{1}' causes a cycle in the struct layout"
 msgstr ""
 
-#: mcs/mcs/class.cs:2672
+#: mcs/mcs/class.cs:2779
 #, csharp-format
 msgid "`{0}': Structs cannot have instance field initializers"
 msgstr ""
 
-#: mcs/mcs/class.cs:2853
+#: mcs/mcs/class.cs:2960
 #, csharp-format
 msgid "Do not override `{0}'. Use destructor syntax instead"
 msgstr ""
 
-#: mcs/mcs/class.cs:2856
+#: mcs/mcs/class.cs:2963
 #, csharp-format
 msgid "`{0}' is marked as an override but no suitable {1} found to override"
 msgstr ""
 
-#: mcs/mcs/class.cs:2862
+#: mcs/mcs/class.cs:2969
 #, csharp-format
 msgid "`{0}': cannot override because `{1}' is not an event"
 msgstr ""
 
-#: mcs/mcs/class.cs:2865
+#: mcs/mcs/class.cs:2972
 #, csharp-format
 msgid "`{0}': cannot override because `{1}' is not a property"
 msgstr ""
 
-#: mcs/mcs/class.cs:2868
+#: mcs/mcs/class.cs:2975
 #, csharp-format
 msgid "`{0}': cannot override because `{1}' is not a method"
 msgstr ""
 
-#: mcs/mcs/class.cs:2922
+#: mcs/mcs/class.cs:3031 mcs/mcs/field.cs:187
 #, csharp-format
 msgid "`{0}' hides inherited abstract member `{1}'"
 msgstr ""
 
-#: mcs/mcs/class.cs:2946
+#: mcs/mcs/class.cs:3055
 #, csharp-format
 msgid ""
 "`{0}': cannot override inherited member `{1}' because it is not marked "
 "virtual, abstract or override"
 msgstr ""
 
-#: mcs/mcs/class.cs:2954
+#: mcs/mcs/class.cs:3063
 #, csharp-format
 msgid "`{0}': cannot override inherited member `{1}' because it is sealed"
 msgstr ""
 
-#: mcs/mcs/class.cs:2963
+#: mcs/mcs/class.cs:3072
 #, csharp-format
 msgid "`{0}': type must be `{1}' to match overridden member `{2}'"
 msgstr ""
 
-#: mcs/mcs/class.cs:2966
+#: mcs/mcs/class.cs:3075
 #, csharp-format
 msgid "`{0}': return type must be `{1}' to match overridden member `{2}'"
 msgstr ""
 
-#: mcs/mcs/class.cs:3038
+#: mcs/mcs/class.cs:3143
 #, csharp-format
 msgid "A partial method `{0}' cannot explicitly implement an interface"
 msgstr ""
 
-#: mcs/mcs/class.cs:3046
+#: mcs/mcs/class.cs:3151
 #, csharp-format
 msgid "The type `{0}' in explicit interface declaration is not an interface"
 msgstr ""
 
-#: mcs/mcs/class.cs:3077
+#: mcs/mcs/class.cs:3182
 #, csharp-format
 msgid ""
 "Inconsistent accessibility: parameter type `{0}' is less accessible than "
 "indexer `{1}'"
 msgstr ""
 
-#: mcs/mcs/class.cs:3081
+#: mcs/mcs/class.cs:3186
 #, csharp-format
 msgid ""
 "Inconsistent accessibility: parameter type `{0}' is less accessible than "
 "operator `{1}'"
 msgstr ""
 
-#: mcs/mcs/class.cs:3085
+#: mcs/mcs/class.cs:3190
 #, csharp-format
 msgid ""
 "Inconsistent accessibility: parameter type `{0}' is less accessible than "
 "method `{1}'"
 msgstr ""
 
-#: mcs/mcs/class.cs:3099
+#: mcs/mcs/class.cs:3204
 #, csharp-format
 msgid ""
 "Constructor `{0}' is marked `external' but has no external implementation "
 "specified"
 msgstr ""
 
-#: mcs/mcs/class.cs:3102
+#: mcs/mcs/class.cs:3207
 #, csharp-format
 msgid ""
 "`{0}' is marked as an external but has no DllImport attribute. Consider "
 "adding a DllImport attribute to specify the external implementation"
 msgstr ""
 
-#: mcs/mcs/class.cs:3131
+#: mcs/mcs/class.cs:3243
 #, csharp-format
 msgid ""
 "`{0}': cannot change access modifiers when overriding `{1}' inherited member "
 "`{2}'"
 msgstr ""
 
-#: mcs/mcs/class.cs:3140
+#: mcs/mcs/class.cs:3252
 #, csharp-format
 msgid "`{0}': static types cannot be used as return types"
 msgstr ""
 
-#: mcs/mcs/class.cs:3265
+#: mcs/mcs/class.cs:3377
 #, csharp-format
 msgid "New virtual member `{0}' is declared in a sealed class `{1}'"
 msgstr ""
 
-#: mcs/mcs/class.cs:3280
+#: mcs/mcs/class.cs:3392
 msgid "Inconsistent accessibility: property type `"
 msgstr ""
 
-#: mcs/mcs/class.cs:3285
+#: mcs/mcs/class.cs:3397
 msgid "Inconsistent accessibility: indexer return type `"
 msgstr ""
 
-#: mcs/mcs/class.cs:3291 mcs/mcs/class.cs:3296 mcs/mcs/delegate.cs:154
+#: mcs/mcs/class.cs:3403 mcs/mcs/class.cs:3408 mcs/mcs/delegate.cs:159
 msgid "Inconsistent accessibility: return type `"
 msgstr ""
 
-#: mcs/mcs/class.cs:3301
+#: mcs/mcs/class.cs:3413
 msgid "Inconsistent accessibility: field type `"
 msgstr ""
 
-#: mcs/mcs/class.cs:3314
+#: mcs/mcs/class.cs:3426
 #, csharp-format
 msgid "Field or property cannot be of type `{0}'"
 msgstr ""
 
-#: mcs/mcs/codegen.cs:115
-msgid "Assembly generation failed -- Referenced assembly '"
-msgstr ""
-
-#: mcs/mcs/codegen.cs:133
-msgid "Could not access the key inside the container `"
-msgstr ""
-
-#: mcs/mcs/codegen.cs:141
-msgid "Could not use the specified key to strongname the assembly."
-msgstr ""
-
-#: mcs/mcs/codegen.cs:167
-msgid ""
-"Could not find the symbol writer assembly (Mono.CompilerServices."
-"SymbolWriter.dll)"
-msgstr ""
-
-#: mcs/mcs/codegen.cs:172
-#, csharp-format
-msgid "Unexpected debug information initialization error `{0}'"
-msgstr ""
-
-#: mcs/mcs/codegen.cs:212
-msgid "Couldn't delay-sign the assembly with the '"
-msgstr ""
-
-#: mcs/mcs/codegen.cs:217 mcs/mcs/codegen.cs:221
-msgid "Could not write to file `"
-msgstr ""
-
-#: mcs/mcs/codegen.cs:1104 mcs/mcs/codegen.cs:1119
-#, csharp-format
-msgid ""
-"Option `{0}' overrides attribute `{1}' given in a source file or added module"
-msgstr ""
-
-#: mcs/mcs/codegen.cs:1189
-msgid ""
-"Could not sign the assembly. ECMA key can only be used to delay-sign "
-"assemblies"
-msgstr ""
-
-#: mcs/mcs/codegen.cs:1209
-msgid "Error during assembly signing. "
-msgstr ""
-
-#: mcs/mcs/codegen.cs:1233
-msgid "Friend assembly reference `"
-msgstr ""
-
-#: mcs/mcs/codegen.cs:1358
-msgid "Invalid type specified as an argument for TypeForwardedTo attribute"
-msgstr ""
-
-#: mcs/mcs/codegen.cs:1366
-#, csharp-format
-msgid "A duplicate type forward of type `{0}'"
-msgstr ""
-
-#: mcs/mcs/codegen.cs:1375
-#, csharp-format
-msgid "Cannot forward type `{0}' because it is defined in this assembly"
-msgstr ""
-
-#: mcs/mcs/codegen.cs:1381
-#, csharp-format
-msgid "Cannot forward type `{0}' because it is a nested type"
-msgstr ""
-
-#: mcs/mcs/const.cs:120
+#: mcs/mcs/const.cs:103
 #, csharp-format
 msgid "Type parameter `{0}' cannot be declared const"
 msgstr ""
 
-#: mcs/mcs/const.cs:123
+#: mcs/mcs/const.cs:106
 #, csharp-format
 msgid "The type `{0}' cannot be declared const"
 msgstr ""
 
-#: mcs/mcs/const.cs:198
+#: mcs/mcs/const.cs:181
 #, csharp-format
 msgid ""
 "The evaluation of the constant value for `{0}' involves a circular definition"
 msgstr ""
 
-#: mcs/mcs/constant.cs:58 mcs/mcs/constant.cs:305
+#: mcs/mcs/constant.cs:68 mcs/mcs/constant.cs:319
 #, csharp-format
 msgid "Constant value `{0}' cannot be converted to a `{1}'"
 msgstr ""
 
-#: mcs/mcs/constant.cs:177
+#: mcs/mcs/constant.cs:187
 #, csharp-format
 msgid ""
 "Constant value `{0}' cannot be converted to a `{1}' (use `unchecked' syntax "
 "to override)"
 msgstr ""
 
-#: mcs/mcs/decl.cs:370
+#: mcs/mcs/convert.cs:1158
 #, csharp-format
-msgid "`{0}' cannot declare a body because it is marked extern"
+msgid ""
+"Ambiguous user defined operators `{0}' and `{1}' when converting from `{2}' "
+"to `{3}'"
 msgstr ""
 
 #: mcs/mcs/decl.cs:376
 #, csharp-format
+msgid "`{0}' cannot declare a body because it is marked extern"
+msgstr ""
+
+#: mcs/mcs/decl.cs:382
+#, csharp-format
 msgid "`{0}' cannot declare a body because it is marked abstract"
 msgstr ""
 
-#: mcs/mcs/decl.cs:389
+#: mcs/mcs/decl.cs:395
 #, csharp-format
 msgid ""
 "`{0}' must have a body because it is not marked abstract or extern. The "
 "property can be automatically implemented when you define both accessors"
 msgstr ""
 
-#: mcs/mcs/decl.cs:395
+#: mcs/mcs/decl.cs:401
 #, csharp-format
 msgid ""
 "`{0}' must have a body because it is not marked abstract, extern, or partial"
 msgstr ""
 
-#: mcs/mcs/decl.cs:410
+#: mcs/mcs/decl.cs:416
 #, csharp-format
 msgid "`{0}': Structs cannot contain protected members"
 msgstr ""
 
-#: mcs/mcs/decl.cs:416
+#: mcs/mcs/decl.cs:422
 #, csharp-format
 msgid "`{0}': Static classes cannot contain protected members"
 msgstr ""
 
-#: mcs/mcs/decl.cs:1260
+#: mcs/mcs/decl.cs:1295
 #, csharp-format
 msgid "The namespace `{0}' already contains a definition for `{1}'"
 msgstr ""
 
-#: mcs/mcs/decl.cs:1264
+#: mcs/mcs/decl.cs:1299
 #, csharp-format
 msgid "Duplicate type parameter `{0}'"
 msgstr ""
 
-#: mcs/mcs/decl.cs:1267
+#: mcs/mcs/decl.cs:1302
 #, csharp-format
 msgid "The type `{0}' already contains a definition for `{1}'"
 msgstr ""
 
-#: mcs/mcs/decl.cs:1317
+#: mcs/mcs/decl.cs:1352
 #, csharp-format
 msgid ""
 "Missing partial modifier on declaration of type `{0}'. Another partial "
 "declaration of this type exists"
 msgstr ""
 
-#: mcs/mcs/decl.cs:1485
-msgid "Constraints are not allowed on non-generic declarations"
-msgstr ""
-
-#: mcs/mcs/decl.cs:1522
+#: mcs/mcs/decl.cs:1441
 msgid "Variant type parameters can only be used with interfaces and delegates"
 msgstr ""
 
-#: mcs/mcs/decl.cs:1534
+#: mcs/mcs/decl.cs:1453
 #, csharp-format
 msgid "`{0}': A constraint references nonexistent type parameter `{1}'"
 msgstr ""
 
-#: mcs/mcs/delegate.cs:136
+#: mcs/mcs/delegate.cs:141
 #, csharp-format
 msgid ""
 "Inconsistent accessibility: parameter type `{0}' is less accessible than "
 "delegate `{1}'"
 msgstr ""
 
-#: mcs/mcs/delegate.cs:463
+#: mcs/mcs/delegate.cs:487
 #, csharp-format
 msgid ""
 "Cannot create delegate from method `{0}' because it is a member of System."
 "Nullable<T> type"
 msgstr ""
 
-#: mcs/mcs/delegate.cs:475
+#: mcs/mcs/delegate.cs:499
 #, csharp-format
 msgid ""
 "Extension method `{0}' of value type `{1}' cannot be used to create delegates"
 msgstr ""
 
-#: mcs/mcs/delegate.cs:490
+#: mcs/mcs/delegate.cs:514
 #, csharp-format
 msgid "Cannot create delegate from partial method declaration `{0}'"
 msgstr ""
 
-#: mcs/mcs/delegate.cs:493
+#: mcs/mcs/delegate.cs:517
 #, csharp-format
 msgid ""
 "Cannot create delegate with `{0}' because it has a Conditional attribute"
 msgstr ""
 
-#: mcs/mcs/delegate.cs:536
+#: mcs/mcs/delegate.cs:560
 #, csharp-format
 msgid ""
 "A method or delegate `{0} {1}' parameters and return type must be same as "
 "delegate `{2} {3}' parameters and return type"
 msgstr ""
 
-#: mcs/mcs/delegate.cs:543
+#: mcs/mcs/delegate.cs:567
 #, csharp-format
 msgid ""
 "A method or delegate `{0}' parameters do not match delegate `{1}' parameters"
 msgstr ""
 
-#: mcs/mcs/delegate.cs:548
+#: mcs/mcs/delegate.cs:572
 #, csharp-format
 msgid ""
 "A method or delegate `{0} {1}' return type does not match delegate `{2} {3}' "
 "return type"
 msgstr ""
 
-#: mcs/mcs/delegate.cs:631
+#: mcs/mcs/delegate.cs:655
 msgid "Method name expected"
 msgstr ""
 
-#: mcs/mcs/doc.cs:910
+#: mcs/mcs/doc.cs:914
 #, csharp-format
 msgid "Error generating XML documentation file `{0}' (`{1}')"
 msgstr ""
 
-#: mcs/mcs/driver.cs:164 mcs/mcs/driver.cs:716 mcs/mcs/driver.cs:719
+#: mcs/mcs/driver.cs:96 mcs/mcs/driver.cs:467 mcs/mcs/driver.cs:470
 msgid "Source file `"
 msgstr ""
 
-#: mcs/mcs/driver.cs:191
+#: mcs/mcs/driver.cs:123
 #, csharp-format
 msgid "Source file `{0}' could not be found"
 msgstr ""
 
-#: mcs/mcs/driver.cs:199
+#: mcs/mcs/driver.cs:129
 #, csharp-format
 msgid "Source file `{0}' is a binary file and not a text file"
 msgstr ""
 
-#: mcs/mcs/driver.cs:281
+#: mcs/mcs/driver.cs:216
 msgid ""
 "Invalid target type for -target. Valid options are `exe', `winexe', "
 "`library' or `module'"
 msgstr ""
 
-#: mcs/mcs/driver.cs:332
-#, csharp-format
-msgid "cannot find metadata file `{0}'"
-msgstr ""
-
-#: mcs/mcs/driver.cs:339
-#, csharp-format
-msgid "file `{0}' has invalid `{1}' metadata"
-msgstr ""
-
-#: mcs/mcs/driver.cs:359
-#, csharp-format
-msgid ""
-"Referenced file `{0}' is not an assembly. Consider using `-addmodule' option "
-"instead"
-msgstr ""
-
-#: mcs/mcs/driver.cs:612
+#: mcs/mcs/driver.cs:363
 msgid "Response file `"
 msgstr ""
 
-#: mcs/mcs/driver.cs:621
+#: mcs/mcs/driver.cs:372
 msgid "Unable to open response file: "
 msgstr ""
 
-#: mcs/mcs/driver.cs:671 mcs/mcs/driver.cs:681
+#: mcs/mcs/driver.cs:422 mcs/mcs/driver.cs:432
 msgid "No files to compile were specified"
 msgstr ""
 
-#: mcs/mcs/driver.cs:813
+#: mcs/mcs/driver.cs:504
 msgid "Warning level must be in the range 0-4"
 msgstr ""
 
-#: mcs/mcs/driver.cs:847
+#: mcs/mcs/driver.cs:538
 msgid "Compatibility: Use -main:CLASS instead of --main CLASS or -m CLASS"
 msgstr ""
 
-#: mcs/mcs/driver.cs:856
+#: mcs/mcs/driver.cs:547
 msgid "Compatibility: Use -unsafe instead of --unsafe"
 msgstr ""
 
-#: mcs/mcs/driver.cs:867
+#: mcs/mcs/driver.cs:558
 msgid "Compatibility: Use -d:SYMBOL instead of --define SYMBOL"
 msgstr ""
 
-#: mcs/mcs/driver.cs:881
+#: mcs/mcs/driver.cs:572
 msgid "Compatibility: Use -out:FILE instead of --output FILE or -o FILE"
 msgstr ""
 
-#: mcs/mcs/driver.cs:890
+#: mcs/mcs/driver.cs:581
 msgid "Compatibility: Use -checked instead of --checked"
 msgstr ""
 
-#: mcs/mcs/driver.cs:900
+#: mcs/mcs/driver.cs:591
 msgid "Compatibility: Use -linkres:VALUE instead of --linkres VALUE"
 msgstr ""
 
-#: mcs/mcs/driver.cs:903
+#: mcs/mcs/driver.cs:594
 msgid "Missing argument to --linkres"
 msgstr ""
 
-#: mcs/mcs/driver.cs:914
+#: mcs/mcs/driver.cs:603
 msgid "Compatibility: Use -res:VALUE instead of --res VALUE"
 msgstr ""
 
-#: mcs/mcs/driver.cs:917
+#: mcs/mcs/driver.cs:606
 msgid "Missing argument to --resource"
 msgstr ""
 
-#: mcs/mcs/driver.cs:927
+#: mcs/mcs/driver.cs:614
 msgid "Compatibility: Use -target:KIND instead of --target KIND"
 msgstr ""
 
-#: mcs/mcs/driver.cs:959
+#: mcs/mcs/driver.cs:646
 msgid "Compatibility: Use -r:LIBRARY instead of -r library"
 msgstr ""
 
-#: mcs/mcs/driver.cs:978
+#: mcs/mcs/driver.cs:665
 msgid "Compatibility: Use -lib:ARG instead of --L arg"
 msgstr ""
 
-#: mcs/mcs/driver.cs:991
+#: mcs/mcs/driver.cs:678
 msgid "Compatibility: Use -nostdlib instead of --nostdlib"
 msgstr ""
 
-#: mcs/mcs/driver.cs:996
+#: mcs/mcs/driver.cs:683
 msgid "Compatibility: Use -nowarn instead of --nowarn"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1013
+#: mcs/mcs/driver.cs:700
 msgid "Compatibility: Use -warn:LEVEL instead of --wlevel LEVEL"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1017
+#: mcs/mcs/driver.cs:704
 msgid "--wlevel requires a value from 0 to 4"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1026
+#: mcs/mcs/driver.cs:713
 msgid "--mcs-debug requires an argument"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1033
+#: mcs/mcs/driver.cs:720
 msgid "Invalid argument to --mcs-debug"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1043
+#: mcs/mcs/driver.cs:730
 msgid "Compatibility: Use -recurse:PATTERN option instead --recurse PATTERN"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1045
+#: mcs/mcs/driver.cs:732
 msgid "--recurse requires an argument"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1057
+#: mcs/mcs/driver.cs:743
 msgid "Compatibility: Use -debug option instead of -g or --debug"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1062
+#: mcs/mcs/driver.cs:748
 msgid "Compatibility: Use -noconfig option instead of --noconfig"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1206
+#: mcs/mcs/driver.cs:912
 #, csharp-format
 msgid "Invalid conditional define symbol `{0}'"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1260
+#: mcs/mcs/driver.cs:963
 #, csharp-format
 msgid ""
 "Invalid resource visibility option `{0}'. Use either `public' or `private' "
 "instead"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1266
+#: mcs/mcs/driver.cs:969
 #, csharp-format
 msgid "Wrong number of arguments for option `{0}'"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1274
-msgid "-recurse requires an argument"
-msgstr ""
-
-#: mcs/mcs/driver.cs:1283
-msgid "-reference requires an argument"
-msgstr ""
-
-#: mcs/mcs/driver.cs:1305 mcs/mcs/driver.cs:1317 mcs/mcs/driver.cs:1329
-#: mcs/mcs/driver.cs:1341 mcs/mcs/driver.cs:1494 mcs/mcs/driver.cs:1514
-#: mcs/mcs/driver.cs:1521
-msgid " requires an argument"
+#: mcs/mcs/driver.cs:1007
+msgid "Cannot specify multiple aliases using single /reference option"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1322 mcs/mcs/driver.cs:1334
+#: mcs/mcs/driver.cs:1035 mcs/mcs/driver.cs:1047
 msgid ""
 "Cannot specify the `win32res' and the `win32ico' compiler option at the same "
 "time"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1351
-msgid "/lib requires an argument"
-msgstr ""
-
-#: mcs/mcs/driver.cs:1428
-msgid "/nowarn requires an argument"
+#: mcs/mcs/driver.cs:1162
+#, csharp-format
+msgid "`{0}' is not a valid warning number"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1469
+#: mcs/mcs/driver.cs:1192
 msgid ""
 "Invalid platform type for -platform. Valid options are `anycpu', `x86', "
 "`x64' or `itanium'"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1553
+#: mcs/mcs/driver.cs:1212
+msgid "Invalid sdk version name"
+msgstr ""
+
+#: mcs/mcs/driver.cs:1310
 #, csharp-format
 msgid ""
 "Invalid -langversion option `{0}'. It must be `ISO-1', `ISO-2', `3' or "
 "`Default'"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1569
+#: mcs/mcs/driver.cs:1330
 #, csharp-format
 msgid "Code page `{0}' is invalid or not installed"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1581
+#: mcs/mcs/driver.cs:1345
 #, csharp-format
 msgid "Unrecognized command-line option: `{0}'"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1611
-msgid "Invalid reference alias '"
-msgstr ""
-
-#: mcs/mcs/driver.cs:1616
-msgid "Invalid extern alias for /reference. Alias '"
-msgstr ""
-
-#: mcs/mcs/driver.cs:1672
-msgid ""
-"If no source files are specified you must specify the output file with -out:"
-msgstr ""
-
-#: mcs/mcs/driver.cs:1802
+#: mcs/mcs/driver.cs:1350
 #, csharp-format
-msgid "Could not find `{0}' specified for Main method"
+msgid "Missing file specification for `{0}' option"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1807
+#: mcs/mcs/driver.cs:1355
 #, csharp-format
-msgid "`{0}' specified for Main method must be a valid class or struct"
+msgid "Missing argument for `{0}' option"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1811
+#: mcs/mcs/driver.cs:1390
 #, csharp-format
-msgid "`{0}' does not have a suitable static Main method"
+msgid "Invalid reference alias `{0}='. Missing filename"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1816
+#: mcs/mcs/driver.cs:1395
 #, csharp-format
 msgid ""
-"Program `{0}' does not contain a static `Main' method suitable for an entry "
-"point"
+"Invalid extern alias for -reference. Alias `{0}' is not a valid identifier"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1823
-msgid "Cannot specify -main if building a module or library"
+#: mcs/mcs/driver.cs:1411
+#, csharp-format
+msgid "The resource identifier `{0}' has already been used in this assembly"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1828
-msgid "Cannot link resource file when building a module"
+#: mcs/mcs/driver.cs:1472
+msgid ""
+"If no source files are specified you must specify the output file with -out:"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1966
-#, csharp-format
-msgid "The resource identifier `{0}' has already been used in this assembly"
+#: mcs/mcs/dynamic.cs:272
+msgid "An expression tree cannot contain a dynamic operation"
 msgstr ""
 
-#: mcs/mcs/driver.cs:1980
-#, csharp-format
-msgid "Error reading resource file `{0}'"
+#: mcs/mcs/dynamic.cs:302
+msgid ""
+"Dynamic operation cannot be compiled without `Microsoft.CSharp.dll' assembly "
+"reference"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:251
+#: mcs/mcs/ecore.cs:247
 #, csharp-format
 msgid "`{0}' is inaccessible due to its protection level"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:256
+#: mcs/mcs/ecore.cs:252
 #, csharp-format
 msgid "The expression being assigned to `{0}' must be constant"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:261
+#: mcs/mcs/ecore.cs:257
 #, csharp-format
 msgid ""
 "A constant `{0}' of reference type `{1}' can only be initialized with null"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:267
+#: mcs/mcs/ecore.cs:263
 msgid ""
 "Only assignment, call, increment, decrement, and new object expressions can "
 "be used as a statement"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:278
+#: mcs/mcs/ecore.cs:274
 msgid "Keyword `void' cannot be used in this context"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:312
+#: mcs/mcs/ecore.cs:308
 #, csharp-format
 msgid "Cannot convert type `{0}' to `{1}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:322
+#: mcs/mcs/ecore.cs:318
 #, csharp-format
 msgid ""
 "Cannot implicitly convert type `{0}' to `{1}'. An explicit conversion exists "
 "(are you missing a cast?)"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:328
+#: mcs/mcs/ecore.cs:324
 #, csharp-format
 msgid "Cannot implicitly convert type `{0}' to `{1}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:334
-#, csharp-format
-msgid "A local variable `{0}' cannot be used before it is declared"
-msgstr ""
-
-#: mcs/mcs/ecore.cs:374
+#: mcs/mcs/ecore.cs:365
 #, csharp-format
 msgid "`{0}' does not contain a definition for `{1}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:380
+#: mcs/mcs/ecore.cs:371
 msgid ""
 "The left-hand side of an assignment must be a variable, a property or an "
 "indexer"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:442 mcs/mcs/statement.cs:2849 mcs/mcs/statement.cs:2851
+#: mcs/mcs/ecore.cs:376
+msgid "The operation in question is undefined on void pointers"
+msgstr ""
+
+#: mcs/mcs/ecore.cs:438 mcs/mcs/statement.cs:2558 mcs/mcs/statement.cs:2560
 #, csharp-format
 msgid "Internal compiler error: {0}"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:482
+#: mcs/mcs/ecore.cs:478
 msgid "A ref or out argument must be an assignable variable"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:501
+#: mcs/mcs/ecore.cs:497
 msgid ""
 "An attribute argument must be a constant expression, typeof expression or "
 "array creation expression"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:572
+#: mcs/mcs/ecore.cs:568
 #, csharp-format
 msgid "The class `{0}' has no constructors defined"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:629
+#: mcs/mcs/ecore.cs:653
 #, csharp-format
 msgid "Ambiguity between `{0}' and `{1}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:656
+#: mcs/mcs/ecore.cs:680
 msgid "An expression tree cannot contain an unsafe pointer operation"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:777
+#: mcs/mcs/ecore.cs:801
 #, csharp-format
 msgid "Expression denotes a `{0}', where a `{1}' was expected"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:787
+#: mcs/mcs/ecore.cs:811
 msgid "Pointers and fixed size buffers may only be used in an unsafe context"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:822
+#: mcs/mcs/ecore.cs:846
 #, csharp-format
 msgid ""
 "Members of value type `{0}' cannot be assigned using a property `{1}' object "
 "initializer"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:825
+#: mcs/mcs/ecore.cs:849
 #, csharp-format
 msgid ""
 "Cannot modify a value type return value of `{0}'. Consider storing the value "
 "in a temporary variable"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:1491
-msgid "Cannot modify the result of an unboxing conversion"
-msgstr ""
-
-#: mcs/mcs/ecore.cs:2239
+#: mcs/mcs/ecore.cs:2275
 #, csharp-format
 msgid ""
 "Dynamic keyword requires `{0}' to be defined. Are you missing System.Core."
 "dll assembly reference?"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:2363
+#: mcs/mcs/ecore.cs:2349
+#, csharp-format
+msgid ""
+"A local variable `{0}' cannot be used before it is declared. Consider "
+"renaming the local variable when it hides the member `{1}'"
+msgstr ""
+
+#: mcs/mcs/ecore.cs:2364 mcs/mcs/ecore.cs:2408
+#, csharp-format
+msgid "`{0}' conflicts with a declaration in a child block"
+msgstr ""
+
+#: mcs/mcs/ecore.cs:2417
+#, csharp-format
+msgid "A local variable `{0}' cannot be used before it is declared"
+msgstr ""
+
+#: mcs/mcs/ecore.cs:2419
 #, csharp-format
 msgid "The name `{0}' does not exist in the current context"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:2620
+#: mcs/mcs/ecore.cs:2669
 #, csharp-format
 msgid ""
 "Cannot access protected member `{0}' via a qualifier of type `{1}'. The "
 "qualifier must be of type `{2}' or derived from it"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:2664
+#: mcs/mcs/ecore.cs:2718
 #, csharp-format
 msgid "Cannot call an abstract base member `{0}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:2703
+#: mcs/mcs/ecore.cs:2762
 #, csharp-format
 msgid ""
 "Static member `{0}' cannot be accessed with an instance reference, qualify "
 "it with a type name instead"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:2718
+#: mcs/mcs/ecore.cs:2777
 #, csharp-format
 msgid ""
 "A field initializer cannot reference the nonstatic field, method, or "
 "property `{0}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:2722
+#: mcs/mcs/ecore.cs:2781
 #, csharp-format
 msgid "An object reference is required to access non-static member `{0}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:2730
+#: mcs/mcs/ecore.cs:2789
 #, csharp-format
 msgid ""
 "Cannot access a nonstatic member of outer type `{0}' via nested type `{1}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:2868
+#: mcs/mcs/ecore.cs:2837
+msgid "Cannot modify the result of an unboxing conversion"
+msgstr ""
+
+#: mcs/mcs/ecore.cs:2958
 #, csharp-format
 msgid ""
 "Type `{0}' does not contain a member `{1}' and the best extension method "
 "overload `{2}' has some invalid arguments"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:2873
+#: mcs/mcs/ecore.cs:2963
 #, csharp-format
 msgid "Extension method instance type `{0}' cannot be converted to `{1}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:2989
+#: mcs/mcs/ecore.cs:3087
 msgid "An expression tree cannot contain an expression with method group"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:2995
+#: mcs/mcs/ecore.cs:3093
 msgid ""
 "Partial methods with only a defining declaration or removed conditional "
 "methods cannot be used in an expression tree"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:3025
+#: mcs/mcs/ecore.cs:3123
 #, csharp-format
 msgid ""
 "Cannot convert method group `{0}' to non-delegate type `{1}'. Consider using "
 "parentheses to invoke the method"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:3532
+#: mcs/mcs/ecore.cs:3719
 #, csharp-format
 msgid ""
 "The type `{0}' does not contain a constructor that takes `{1}' arguments"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:3986
+#: mcs/mcs/ecore.cs:4334
 #, csharp-format
 msgid ""
 "Type `{0}' does not contain a member `{1}' and the best extension method "
@@ -1435,489 +1842,472 @@ msgid ""
 "without the extension method syntax"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4007
+#: mcs/mcs/ecore.cs:4355
 #, csharp-format
 msgid ""
 "The call is ambiguous between the following methods or properties: `{0}' and "
 "`{1}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4062
+#: mcs/mcs/ecore.cs:4415
 #, csharp-format
 msgid ""
 "The best overloaded collection initalizer method `{0}' cannot have 'ref', or "
 "`out' modifier"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4066
+#: mcs/mcs/ecore.cs:4419
 #, csharp-format
 msgid ""
 "The best overloaded collection initalizer method `{0}' has some invalid "
 "arguments"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4069
+#: mcs/mcs/ecore.cs:4422
 #, csharp-format
 msgid "Delegate `{0}' has some invalid arguments"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4073
+#: mcs/mcs/ecore.cs:4426
 #, csharp-format
 msgid "The best overloaded method match for `{0}' has some invalid arguments"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4083
+#: mcs/mcs/ecore.cs:4436
 #, csharp-format
 msgid ""
 "Argument `#{0}' does not require `{1}' modifier. Consider removing `{1}' "
 "modifier"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4086
+#: mcs/mcs/ecore.cs:4439
 #, csharp-format
 msgid "Argument `#{0}' is missing `{1}' modifier"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4099
+#: mcs/mcs/ecore.cs:4452
 #, csharp-format
 msgid "Argument `#{0}' cannot convert `{1}' expression to type `{2}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4148
+#: mcs/mcs/ecore.cs:4500
 #, csharp-format
 msgid ""
 "The type arguments for method `{0}' cannot be inferred from the usage. Try "
 "specifying the type arguments explicitly"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4177
+#: mcs/mcs/ecore.cs:4529
 #, csharp-format
 msgid "No overload for method `{0}' takes `{1}' arguments"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4230
+#: mcs/mcs/ecore.cs:4582
 #, csharp-format
 msgid "The delegate `{0}' does not contain a parameter named `{1}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4235
+#: mcs/mcs/ecore.cs:4587
 #, csharp-format
 msgid ""
 "The best overloaded method match for `{0}' does not contain a parameter "
 "named `{1}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4245
+#: mcs/mcs/ecore.cs:4597
 #, csharp-format
 msgid ""
 "Named argument `{0}' cannot be used for a parameter which has positional "
 "argument specified"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4546
+#: mcs/mcs/ecore.cs:4910
 msgid ""
 "You cannot use fixed size buffers contained in unfixed expressions. Try "
 "using the fixed statement"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4551
+#: mcs/mcs/ecore.cs:4915
 #, csharp-format
 msgid "`{0}': Fixed size buffers can only be accessed through locals or fields"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:4942
+#: mcs/mcs/ecore.cs:5310
 #, csharp-format
 msgid "Property or event `{0}' is not supported by the C# language"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:5096
+#: mcs/mcs/ecore.cs:5471
 #, csharp-format
 msgid "A range variable `{0}' may not be passes as `ref' or `out' parameter"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:5144
+#: mcs/mcs/ecore.cs:5519
 #, csharp-format
 msgid ""
 "The property or indexer `{0}' cannot be used in this context because it "
 "lacks the `get' accessor"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:5151
+#: mcs/mcs/ecore.cs:5526
 #, csharp-format
 msgid ""
 "The property or indexer `{0}' cannot be used in this context because the get "
 "accessor is inaccessible"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:5171
-#, csharp-format
-msgid ""
-"A range variable `{0}' cannot be assigned to. Consider using `let' clause to "
-"store the value"
-msgstr ""
-
-#: mcs/mcs/ecore.cs:5174
+#: mcs/mcs/ecore.cs:5545
 #, csharp-format
 msgid "Property or indexer `{0}' cannot be assigned to (it is read-only)"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:5183
+#: mcs/mcs/ecore.cs:5553
 #, csharp-format
 msgid ""
 "The property or indexer `{0}' cannot be used in this context because the set "
 "accessor is inaccessible"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:5346
+#: mcs/mcs/ecore.cs:5714
 #, csharp-format
 msgid ""
 "The event `{0}' can only appear on the left hand side of `+=' or `-=' "
 "operator"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:5353
+#: mcs/mcs/ecore.cs:5718
 #, csharp-format
 msgid ""
 "The event `{0}' can only appear on the left hand side of += or -= when used "
 "outside of the type `{1}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:5485
+#: mcs/mcs/ecore.cs:5882
 #, csharp-format
 msgid ""
 "An implicitly typed local variable declaration cannot be initialized with `"
 "{0}'"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:5499
+#: mcs/mcs/ecore.cs:5896
 msgid ""
 "The contextual keyword `var' may only appear within a local variable "
 "declaration"
 msgstr ""
 
-#: mcs/mcs/ecore.cs:5515
-msgid ""
-"An implicitly typed local variable declaration cannot include multiple "
-"declarators"
-msgstr ""
-
-#: mcs/mcs/ecore.cs:5522
-msgid ""
-"An implicitly typed local variable declarator must include an initializer"
-msgstr ""
-
-#: mcs/mcs/enum.cs:121
+#: mcs/mcs/enum.cs:125
 #, csharp-format
 msgid ""
 "The enumerator value `{0}' is outside the range of enumerator underlying "
 "type `{1}'"
 msgstr ""
 
-#: mcs/mcs/enum.cs:185
+#: mcs/mcs/enum.cs:189
 #, csharp-format
 msgid "An item in an enumeration cannot have an identifier `{0}'"
 msgstr ""
 
-#: mcs/mcs/enum.cs:196
+#: mcs/mcs/enum.cs:200
 msgid "Type byte, sbyte, short, ushort, int, uint, long or ulong expected"
 msgstr ""
 
-#: mcs/mcs/eval.cs:624
+#: mcs/mcs/eval.cs:626
 msgid "Detection Parsing Error"
 msgstr ""
 
-#: mcs/mcs/expression.cs:531
+#: mcs/mcs/expression.cs:542
 #, csharp-format
 msgid "The `{0}' operator cannot be applied to operand of type `{1}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:611
+#: mcs/mcs/expression.cs:622
 msgid "Cannot take the address of the given expression"
 msgstr ""
 
-#: mcs/mcs/expression.cs:645
+#: mcs/mcs/expression.cs:656
 msgid ""
 "You can only take the address of unfixed expression inside of a fixed "
 "statement initializer"
 msgstr ""
 
-#: mcs/mcs/expression.cs:734
+#: mcs/mcs/expression.cs:745
 #, csharp-format
 msgid "Operator `{0}' is ambiguous on an operand of type `{1}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:855
+#: mcs/mcs/expression.cs:868
 msgid "The * or -> operator must be applied to a pointer"
 msgstr ""
 
-#: mcs/mcs/expression.cs:860 mcs/mcs/expression.cs:3988
-msgid "The operation in question is undefined on void pointers"
-msgstr ""
-
-#: mcs/mcs/expression.cs:1106
+#: mcs/mcs/expression.cs:1070
 msgid ""
 "The operand of an increment or decrement operator must be a variable, "
 "property or indexer"
 msgstr ""
 
-#: mcs/mcs/expression.cs:1194
+#: mcs/mcs/expression.cs:1260
 #, csharp-format
 msgid "The `{0}' operator cannot be applied to an operand of a static type"
 msgstr ""
 
-#: mcs/mcs/expression.cs:1199
+#: mcs/mcs/expression.cs:1265
 #, csharp-format
 msgid "The `{0}' operator cannot be applied to an operand of pointer type"
 msgstr ""
 
-#: mcs/mcs/expression.cs:1205
+#: mcs/mcs/expression.cs:1271
 #, csharp-format
 msgid ""
 "The `{0}' operator cannot be applied to a lambda expression or anonymous "
 "method"
 msgstr ""
 
-#: mcs/mcs/expression.cs:1441
+#: mcs/mcs/expression.cs:1505
 #, csharp-format
 msgid ""
 "The `as' operator cannot be used with a non-reference type parameter `{0}'. "
 "Consider adding `class' or a reference type constraint"
 msgstr ""
 
-#: mcs/mcs/expression.cs:1445
+#: mcs/mcs/expression.cs:1509
 #, csharp-format
 msgid "The `as' operator cannot be used with a non-nullable value type `{0}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:1482
+#: mcs/mcs/expression.cs:1542
 #, csharp-format
 msgid "Cannot convert type `{0}' to `{1}' via a built-in conversion"
 msgstr ""
 
-#: mcs/mcs/expression.cs:1523
+#: mcs/mcs/expression.cs:1583
 #, csharp-format
 msgid "Cannot convert to static type `{0}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:1613
+#: mcs/mcs/expression.cs:1673
 msgid ""
 "The `default value' operator cannot be applied to an operand of a static type"
 msgstr ""
 
-#: mcs/mcs/expression.cs:2092
+#: mcs/mcs/expression.cs:2178
 #, csharp-format
 msgid "Operator `{0}' cannot be applied to operands of type `{1}' and `{2}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:2656
+#: mcs/mcs/expression.cs:2741
 msgid "To cast a negative value, you must enclose the value in parentheses"
 msgstr ""
 
-#: mcs/mcs/expression.cs:3202
+#: mcs/mcs/expression.cs:3394
 #, csharp-format
 msgid "Operator `{0}' is ambiguous on operands of type `{1}' and `{2}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:3924
+#: mcs/mcs/expression.cs:4146
 #, csharp-format
 msgid ""
 "A user-defined operator `{0}' must have parameters and return values of the "
 "same type in order to be applicable as a short circuit operator"
 msgstr ""
 
-#: mcs/mcs/expression.cs:3934
+#: mcs/mcs/expression.cs:4156
 #, csharp-format
 msgid ""
 "The type `{0}' must have operator `true' and operator `false' defined when `"
 "{1}' is used as a short circuit operator"
 msgstr ""
 
-#: mcs/mcs/expression.cs:4231
+#: mcs/mcs/expression.cs:4466
 #, csharp-format
 msgid ""
 "Type of conditional expression cannot be determined as `{0}' and `{1}' "
 "convert implicitly to each other"
 msgstr ""
 
-#: mcs/mcs/expression.cs:4242
+#: mcs/mcs/expression.cs:4476
 #, csharp-format
 msgid ""
 "Type of conditional expression cannot be determined because there is no "
 "implicit conversion between `{0}' and `{1}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:4703
+#: mcs/mcs/expression.cs:4928
 #, csharp-format
 msgid "Use of unassigned out parameter `{0}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:4743
+#: mcs/mcs/expression.cs:4958
 #, csharp-format
 msgid ""
 "Parameter `{0}' cannot be used inside `{1}' when using `ref' or `out' "
 "modifier"
 msgstr ""
 
-#: mcs/mcs/expression.cs:4957
+#: mcs/mcs/expression.cs:5159
+#, csharp-format
+msgid "Cannot invoke a non-delegate type `{0}'"
+msgstr ""
+
+#: mcs/mcs/expression.cs:5170
 #, csharp-format
 msgid "The member `{0}' cannot be used as method or delegate"
 msgstr ""
 
-#: mcs/mcs/expression.cs:4980
+#: mcs/mcs/expression.cs:5190
 msgid ""
 "Do not directly call your base class Finalize method. It is called "
 "automatically from your destructor"
 msgstr ""
 
-#: mcs/mcs/expression.cs:4982
+#: mcs/mcs/expression.cs:5192
 msgid ""
 "Destructors and object.Finalize cannot be called directly. Consider calling "
 "IDisposable.Dispose if available"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5014
+#: mcs/mcs/expression.cs:5221
 #, csharp-format
 msgid ""
 "The base call to method `{0}' cannot be dynamically dispatched. Consider "
 "casting the dynamic arguments or eliminating the base access"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5086
+#: mcs/mcs/expression.cs:5298
 #, csharp-format
 msgid "`{0}': cannot explicitly call operator or accessor"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5379
+#: mcs/mcs/expression.cs:5625
 #, csharp-format
 msgid "Unsafe type `{0}' cannot be used in an object creation expression"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5398
+#: mcs/mcs/expression.cs:5648
 #, csharp-format
 msgid ""
 "Cannot create an instance of the variable type `{0}' because it does not "
 "have the new() constraint"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5404
+#: mcs/mcs/expression.cs:5654
 #, csharp-format
 msgid ""
 "`{0}': cannot provide arguments when creating an instance of a variable type"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5421
+#: mcs/mcs/expression.cs:5663
 #, csharp-format
 msgid "Cannot create an instance of the static class `{0}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5433
+#: mcs/mcs/expression.cs:5675
 #, csharp-format
 msgid "Cannot create an instance of the abstract class or interface `{0}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5779
+#: mcs/mcs/expression.cs:5971
+msgid ""
+"An implicitly typed local variable declarator cannot use an array initializer"
+msgstr ""
+
+#: mcs/mcs/expression.cs:6064
 msgid "Cannot create an array with a negative size"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5811 mcs/mcs/expression.cs:5819
-#: mcs/mcs/statement.cs:996 mcs/mcs/statement.cs:3068
+#: mcs/mcs/expression.cs:6096 mcs/mcs/expression.cs:6104
+#: mcs/mcs/statement.cs:1009 mcs/mcs/statement.cs:3055
 msgid "A constant value is expected"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5825
+#: mcs/mcs/expression.cs:6110
 #, csharp-format
 msgid "An array initializer of length `{0}' was expected"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5841
+#: mcs/mcs/expression.cs:6126
 msgid ""
 "Array initializers can only be used in a variable or field initializer. Try "
 "using a new expression instead"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5849
+#: mcs/mcs/expression.cs:6134
 msgid "A nested array initializer was expected"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5886
+#: mcs/mcs/expression.cs:6171
 msgid "An expression tree cannot contain a multidimensional array initializer"
 msgstr ""
 
-#: mcs/mcs/expression.cs:5972
-msgid ""
-"An implicitly typed local variable declarator cannot use an array initializer"
-msgstr ""
-
-#: mcs/mcs/expression.cs:5993
+#: mcs/mcs/expression.cs:6273
 msgid ""
 "Can only use array initializer expressions to assign to array types. Try "
 "using a new expression instead"
 msgstr ""
 
-#: mcs/mcs/expression.cs:6394
+#: mcs/mcs/expression.cs:6709
 msgid ""
 "The type of an implicitly typed array cannot be inferred from the "
 "initializer. Try specifying array type explicitly"
 msgstr ""
 
-#: mcs/mcs/expression.cs:6522
+#: mcs/mcs/expression.cs:6846
+msgid ""
+"The `this' object cannot be used before all of its fields are assigned to"
+msgstr ""
+
+#: mcs/mcs/expression.cs:6853
 msgid ""
 "Keyword `this' is not valid in a static property, static method, or static "
 "field initializer"
 msgstr ""
 
-#: mcs/mcs/expression.cs:6525
+#: mcs/mcs/expression.cs:6856
 msgid ""
 "Anonymous methods inside structs cannot access instance members of `this'. "
 "Consider copying `this' to a local variable outside the anonymous method and "
 "using the local instead"
 msgstr ""
 
-#: mcs/mcs/expression.cs:6528
+#: mcs/mcs/expression.cs:6859
 msgid "Keyword `this' is not available in the current context"
 msgstr ""
 
-#: mcs/mcs/expression.cs:6592
-msgid ""
-"The `this' object cannot be used before all of its fields are assigned to"
-msgstr ""
-
-#: mcs/mcs/expression.cs:6622
+#: mcs/mcs/expression.cs:6946
 msgid "Cannot take the address of `this' because it is read-only"
 msgstr ""
 
-#: mcs/mcs/expression.cs:6624
+#: mcs/mcs/expression.cs:6948
 msgid "Cannot pass `this' as a ref or out argument because it is read-only"
 msgstr ""
 
-#: mcs/mcs/expression.cs:6626
+#: mcs/mcs/expression.cs:6950
 msgid "Cannot assign to `this' because it is read-only"
 msgstr ""
 
-#: mcs/mcs/expression.cs:6679
+#: mcs/mcs/expression.cs:7003
 msgid "The __arglist construct is valid only within a variable argument method"
 msgstr ""
 
-#: mcs/mcs/expression.cs:6729
+#: mcs/mcs/expression.cs:7053
 msgid "An expression tree cannot contain a method with variable arguments"
 msgstr ""
 
-#: mcs/mcs/expression.cs:6805
+#: mcs/mcs/expression.cs:7137
 msgid ""
 "System.Void cannot be used from C#. Use typeof (void) to get the void type "
 "object"
 msgstr ""
 
-#: mcs/mcs/expression.cs:6810
+#: mcs/mcs/expression.cs:7140
 msgid "The typeof operator cannot be used on the dynamic type"
 msgstr ""
 
-#: mcs/mcs/expression.cs:6879
+#: mcs/mcs/expression.cs:7191
 #, csharp-format
 msgid "`{0}': an attribute argument cannot use type parameters"
 msgstr ""
 
-#: mcs/mcs/expression.cs:7130
+#: mcs/mcs/expression.cs:7445
 #, csharp-format
 msgid ""
 "`{0}' does not have a predefined size, therefore sizeof can only be used in "
@@ -1925,44 +2315,44 @@ msgid ""
 "SizeOf)"
 msgstr ""
 
-#: mcs/mcs/expression.cs:7186
+#: mcs/mcs/expression.cs:7501
 #, csharp-format
 msgid "Alias `{0}' not found"
 msgstr ""
 
-#: mcs/mcs/expression.cs:7197
+#: mcs/mcs/expression.cs:7512
 #, csharp-format
 msgid ""
 "Alias `{0}' cannot be used with '::' since it denotes a type. Consider "
 "replacing '::' with '.'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:7213
+#: mcs/mcs/expression.cs:7528
 #, csharp-format
 msgid ""
 "A namespace alias qualifier `{0}' did not resolve to a namespace or a type"
 msgstr ""
 
-#: mcs/mcs/expression.cs:7370
+#: mcs/mcs/expression.cs:7685
 msgid "Cannot perform member binding on `null' value"
 msgstr ""
 
-#: mcs/mcs/expression.cs:7437
+#: mcs/mcs/expression.cs:7752
 #, csharp-format
 msgid "`{0}': cannot reference a type through an expression; try `{1}' instead"
 msgstr ""
 
-#: mcs/mcs/expression.cs:7513
+#: mcs/mcs/expression.cs:7828
 #, csharp-format
 msgid "A nested type cannot be specified through a type parameter `{0}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:7560
+#: mcs/mcs/expression.cs:7887
 #, csharp-format
 msgid "The nested type `{0}' does not exist in the type `{1}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:7568
+#: mcs/mcs/expression.cs:7896
 #, csharp-format
 msgid ""
 "Type `{0}' does not contain a definition for `{1}' and no extension method `"
@@ -1970,299 +2360,366 @@ msgid ""
 "assembly reference?)"
 msgstr ""
 
-#: mcs/mcs/expression.cs:7748
+#: mcs/mcs/expression.cs:8076
 #, csharp-format
 msgid "Cannot apply indexing with [] to an expression of type `{0}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:7764
+#: mcs/mcs/expression.cs:8092
 msgid "A pointer must be indexed by only one value"
 msgstr ""
 
-#: mcs/mcs/expression.cs:7813
+#: mcs/mcs/expression.cs:8141
 msgid "An element access expression cannot use named argument"
 msgstr ""
 
-#: mcs/mcs/expression.cs:7869
+#: mcs/mcs/expression.cs:8197
 #, csharp-format
 msgid "Wrong number of indexes `{0}' inside [], expected `{1}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:8177
+#: mcs/mcs/expression.cs:8533
 msgid ""
 "The indexer base access cannot be dynamically dispatched. Consider casting "
 "the dynamic arguments or eliminating the base access"
 msgstr ""
 
-#: mcs/mcs/expression.cs:8249
+#: mcs/mcs/expression.cs:8614
 msgid "An expression tree may not contain a base access"
 msgstr ""
 
-#: mcs/mcs/expression.cs:8266
+#: mcs/mcs/expression.cs:8631
 msgid "Keyword `base' is not available in a static method"
 msgstr ""
 
-#: mcs/mcs/expression.cs:8268
+#: mcs/mcs/expression.cs:8633
 msgid "Keyword `base' is not available in the current context"
 msgstr ""
 
-#: mcs/mcs/expression.cs:8299
+#: mcs/mcs/expression.cs:8664
 msgid ""
 "A property, indexer or dynamic member access may not be passed as `ref' or "
 "`out' parameter"
 msgstr ""
 
-#: mcs/mcs/expression.cs:8572
+#: mcs/mcs/expression.cs:8941
 #, csharp-format
 msgid "Array elements cannot be of type `{0}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:8575
+#: mcs/mcs/expression.cs:8944
 #, csharp-format
 msgid "Array elements cannot be of static type `{0}'"
 msgstr ""
 
-#: mcs/mcs/expression.cs:8725
+#: mcs/mcs/expression.cs:9094
 msgid "Cannot use a negative size with stackalloc"
 msgstr ""
 
-#: mcs/mcs/expression.cs:8729
+#: mcs/mcs/expression.cs:9098
 msgid "Cannot use stackalloc in finally or catch"
 msgstr ""
 
-#: mcs/mcs/expression.cs:8834
+#: mcs/mcs/expression.cs:9203
 #, csharp-format
 msgid ""
 "Member `{0}' cannot be initialized. An object initializer may only be used "
 "for fields, or properties"
 msgstr ""
 
-#: mcs/mcs/expression.cs:8843
+#: mcs/mcs/expression.cs:9212
 #, csharp-format
 msgid ""
 "Static field or property `{0}' cannot be assigned in an object initializer"
 msgstr ""
 
-#: mcs/mcs/expression.cs:9016
+#: mcs/mcs/expression.cs:9387
 #, csharp-format
 msgid ""
 "A field or property `{0}' cannot be initialized with a collection object "
 "initializer because type `{1}' does not implement `{2}' interface"
 msgstr ""
 
-#: mcs/mcs/expression.cs:9027
+#: mcs/mcs/expression.cs:9398
 #, csharp-format
 msgid "Inconsistent `{0}' member declaration"
 msgstr ""
 
-#: mcs/mcs/expression.cs:9035
+#: mcs/mcs/expression.cs:9406
 #, csharp-format
 msgid ""
 "An object initializer includes more than one member `{0}' initialization"
 msgstr ""
 
-#: mcs/mcs/expression.cs:9053
+#: mcs/mcs/expression.cs:9424
 #, csharp-format
 msgid "Cannot initialize object of type `{0}' with a collection initializer"
 msgstr ""
 
-#: mcs/mcs/expression.cs:9296
+#: mcs/mcs/expression.cs:9661
 msgid "Anonymous types cannot be used in this expression"
 msgstr ""
 
-#: mcs/mcs/expression.cs:9384
+#: mcs/mcs/expression.cs:9749
 #, csharp-format
 msgid "An anonymous type property `{0}' cannot be initialized with `{1}'"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:310
+#: mcs/mcs/field.cs:70
+msgid ""
+"The modifier 'abstract' is not valid on fields. Try using a property instead"
+msgstr ""
+
+#: mcs/mcs/field.cs:121
+msgid ""
+"The FieldOffset attribute can only be placed on members of types marked with "
+"the StructLayout(LayoutKind.Explicit)"
+msgstr ""
+
+#: mcs/mcs/field.cs:126
+msgid "The FieldOffset attribute is not allowed on static or const fields"
+msgstr ""
+
+#: mcs/mcs/field.cs:132
+msgid ""
+"Do not use 'System.Runtime.CompilerServices.FixedBuffer' attribute. Use the "
+"'fixed' field modifier instead"
+msgstr ""
+
+#: mcs/mcs/field.cs:237
+#, csharp-format
+msgid ""
+"`{0}': Instance field types marked with StructLayout(LayoutKind.Explicit) "
+"must have a FieldOffset attribute"
+msgstr ""
+
+#: mcs/mcs/field.cs:246
+#, csharp-format
+msgid "`{0}': cannot declare variables of static types"
+msgstr ""
+
+#: mcs/mcs/field.cs:388
+#, csharp-format
+msgid ""
+"`{0}': Fixed size buffers type must be one of the following: bool, byte, "
+"short, int, long, char, sbyte, ushort, uint, ulong, float or double"
+msgstr ""
+
+#: mcs/mcs/field.cs:424
+#, csharp-format
+msgid "`{0}': Fixed size buffer fields may only be members of structs"
+msgstr ""
+
+#: mcs/mcs/field.cs:439
+#, csharp-format
+msgid "`{0}': Fixed size buffers must have a length greater than zero"
+msgstr ""
+
+#: mcs/mcs/field.cs:446
+#, csharp-format
+msgid ""
+"Fixed size buffer `{0}' of length `{1}' and type `{2}' exceeded 2^31 limit"
+msgstr ""
+
+#: mcs/mcs/field.cs:628
+#, csharp-format
+msgid "`{0}': A volatile field cannot be of the type `{1}'"
+msgstr ""
+
+#: mcs/mcs/field.cs:633
+#, csharp-format
+msgid "`{0}': A field cannot be both volatile and readonly"
+msgstr ""
+
+#: mcs/mcs/flowanalysis.cs:307
 msgid "Control cannot fall through from one case label to another"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:537
+#: mcs/mcs/flowanalysis.cs:536
 #, csharp-format
 msgid ""
 "The label `{0}:' could not be found within the scope of the goto statement"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:665
+#: mcs/mcs/flowanalysis.cs:664
 msgid ""
 "A throw statement with no arguments is not allowed outside of a catch clause"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:676 mcs/mcs/flowanalysis.cs:682
+#: mcs/mcs/flowanalysis.cs:675 mcs/mcs/flowanalysis.cs:681
 msgid "No enclosing loop out of which to break or continue"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:710
+#: mcs/mcs/flowanalysis.cs:709
 msgid "Control cannot leave the body of an anonymous method"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:751
+#: mcs/mcs/flowanalysis.cs:750
 msgid "Cannot yield a value in the body of a try block with a catch clause"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:753
+#: mcs/mcs/flowanalysis.cs:752
 msgid "Cannot yield a value in the body of a catch clause"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:905
+#: mcs/mcs/flowanalysis.cs:904
 msgid ""
 "A throw statement with no arguments is not allowed inside of a finally "
 "clause nested inside of the innermost catch clause"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:917 mcs/mcs/iterators.cs:102
+#: mcs/mcs/flowanalysis.cs:916 mcs/mcs/iterators.cs:102
 msgid "Cannot yield in the body of a finally clause"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:928 mcs/mcs/flowanalysis.cs:944
-#: mcs/mcs/flowanalysis.cs:980 mcs/mcs/statement.cs:692
+#: mcs/mcs/flowanalysis.cs:927 mcs/mcs/flowanalysis.cs:943
+#: mcs/mcs/flowanalysis.cs:979 mcs/mcs/statement.cs:694
 msgid "Control cannot leave the body of a finally clause"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:1159
+#: mcs/mcs/flowanalysis.cs:1130
 #, csharp-format
 msgid ""
 "An automatically implemented property `{0}' must be fully assigned before "
-"control leaves the constructor. Consider calling default contructor"
+"control leaves the constructor. Consider calling the default struct "
+"contructor from a constructor initializer"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:1163
+#: mcs/mcs/flowanalysis.cs:1134
 #, csharp-format
 msgid ""
 "Field `{0}' must be fully assigned before control leaves the constructor"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:1418
+#: mcs/mcs/flowanalysis.cs:1376
 msgid "Use of unassigned local variable `"
 msgstr ""
 
-#: mcs/mcs/flowanalysis.cs:1488
+#: mcs/mcs/flowanalysis.cs:1446
 msgid "Use of possibly unassigned field `"
 msgstr ""
 
-#: mcs/mcs/generic.cs:95
+#: mcs/mcs/generic.cs:102 mcs/mcs/generic.cs:120
 #, csharp-format
 msgid "Type parameter `{0}' inherits conflicting constraints `{1}' and `{2}'"
 msgstr ""
 
-#: mcs/mcs/generic.cs:152
+#: mcs/mcs/generic.cs:173
 #, csharp-format
 msgid "A constraint cannot be the dynamic type `{0}'"
 msgstr ""
 
-#: mcs/mcs/generic.cs:161
+#: mcs/mcs/generic.cs:182
 #, csharp-format
 msgid ""
 "Inconsistent accessibility: constraint type `{0}' is less accessible than `"
 "{1}'"
 msgstr ""
 
-#: mcs/mcs/generic.cs:168 mcs/mcs/generic.cs:182
+#: mcs/mcs/generic.cs:189 mcs/mcs/generic.cs:203
 #, csharp-format
 msgid "Duplicate constraint `{0}' for type parameter `{1}'"
 msgstr ""
 
-#: mcs/mcs/generic.cs:197
+#: mcs/mcs/generic.cs:218
 #, csharp-format
 msgid "Circular constraint dependency involving `{0}' and `{1}'"
 msgstr ""
 
-#: mcs/mcs/generic.cs:228
+#: mcs/mcs/generic.cs:249
 #, csharp-format
 msgid ""
 "Type parameter `{0}' has the `struct' constraint, so it cannot be used as a "
 "constraint for `{1}'"
 msgstr ""
 
-#: mcs/mcs/generic.cs:239
+#: mcs/mcs/generic.cs:260
 #, csharp-format
 msgid ""
 "The class type constraint `{0}' must be listed before any other constraints. "
 "Consider moving type constraint to the beginning of the constraint list"
 msgstr ""
 
-#: mcs/mcs/generic.cs:245
+#: mcs/mcs/generic.cs:266
 #, csharp-format
 msgid ""
 "`{0}': cannot specify both a constraint class and the `class' or `struct' "
 "constraint"
 msgstr ""
 
-#: mcs/mcs/generic.cs:250
+#: mcs/mcs/generic.cs:271
 msgid "A constraint cannot be the dynamic type"
 msgstr ""
 
-#: mcs/mcs/generic.cs:256
+#: mcs/mcs/generic.cs:277
 #, csharp-format
 msgid ""
 "`{0}' is not a valid constraint. A constraint must be an interface, a non-"
 "sealed class or a type parameter"
 msgstr ""
 
-#: mcs/mcs/generic.cs:263
+#: mcs/mcs/generic.cs:284
 #, csharp-format
 msgid ""
 "`{0}' is not a valid constraint. Static classes cannot be used as constraints"
 msgstr ""
 
-#: mcs/mcs/generic.cs:269
+#: mcs/mcs/generic.cs:290
 #, csharp-format
 msgid "A constraint cannot be special class `{0}'"
 msgstr ""
 
-#: mcs/mcs/generic.cs:511
+#: mcs/mcs/generic.cs:538
 #, csharp-format
 msgid "The {2} type parameter `{0}' must be {3} valid on `{1}{4}'"
 msgstr ""
 
-#: mcs/mcs/generic.cs:1639
+#: mcs/mcs/generic.cs:1738
 #, csharp-format
 msgid "`{0}': static classes cannot be used as generic arguments"
 msgstr ""
 
-#: mcs/mcs/generic.cs:1646
+#: mcs/mcs/generic.cs:1745
 #, csharp-format
 msgid "The type `{0}' may not be used as a type argument"
 msgstr ""
 
-#: mcs/mcs/generic.cs:1885
+#: mcs/mcs/generic.cs:2000
 #, csharp-format
 msgid ""
 "The type `{0}' must be a reference type in order to use it as type parameter "
 "`{1}' in the generic type or method `{2}'"
 msgstr ""
 
-#: mcs/mcs/generic.cs:1895
+#: mcs/mcs/generic.cs:2010
 #, csharp-format
 msgid ""
 "The type `{0}' must be a non-nullable value type in order to use it as type "
 "parameter `{1}' in the generic type or method `{2}'"
 msgstr ""
 
-#: mcs/mcs/generic.cs:1925
+#: mcs/mcs/generic.cs:2049
 #, csharp-format
 msgid ""
 "The type `{0}' cannot be used as type parameter `{1}' in the generic type or "
 "method `{2}'. The nullable type `{0}' never satisfies interface constraint"
 msgstr ""
 
-#: mcs/mcs/generic.cs:1950
+#: mcs/mcs/generic.cs:2101
 #, csharp-format
 msgid ""
 "The type `{0}' must have a public parameterless constructor in order to use "
 "it as parameter `{1}' in the generic type or method `{2}'"
 msgstr ""
 
-#: mcs/mcs/generic.cs:1968
+#: mcs/mcs/generic.cs:2153
 #, csharp-format
 msgid ""
 "The type `{0}' cannot be used as type parameter `{1}' in the generic type or "
 "method `{2}'. There is no boxing conversion from `{0}' to `{3}'"
 msgstr ""
 
-#: mcs/mcs/generic.cs:1971
+#: mcs/mcs/generic.cs:2157
 #, csharp-format
 msgid ""
 "The type `{0}' cannot be used as type parameter `{1}' in the generic type or "
@@ -2270,41 +2727,48 @@ msgid ""
 "{3}'"
 msgstr ""
 
-#: mcs/mcs/generic.cs:1974
+#: mcs/mcs/generic.cs:2161
 #, csharp-format
 msgid ""
 "The type `{0}' cannot be used as type parameter `{1}' in the generic type or "
 "method `{2}'. There is no implicit reference conversion from `{0}' to `{3}'"
 msgstr ""
 
+#: mcs/mcs/import.cs:1711
+#, csharp-format
+msgid ""
+"The type `{0}' is defined in an assembly that is not referenced. Consider "
+"adding a reference to assembly `{1}'"
+msgstr ""
+
 #: mcs/mcs/iterators.cs:44
 msgid "The yield statement cannot be used inside anonymous method blocks"
 msgstr ""
 
-#: mcs/mcs/iterators.cs:869
+#: mcs/mcs/iterators.cs:856
 #, csharp-format
 msgid ""
 "The body of `{0}' cannot be an iterator block because `{1}' is not an "
 "iterator interface type"
 msgstr ""
 
-#: mcs/mcs/iterators.cs:882
+#: mcs/mcs/iterators.cs:869
 msgid "Iterators cannot have ref or out parameters"
 msgstr ""
 
-#: mcs/mcs/iterators.cs:888
+#: mcs/mcs/iterators.cs:875
 msgid "__arglist is not allowed in parameter list of iterators"
 msgstr ""
 
-#: mcs/mcs/iterators.cs:894
+#: mcs/mcs/iterators.cs:881
 msgid "Iterators cannot have unsafe parameters or yield types"
 msgstr ""
 
-#: mcs/mcs/iterators.cs:901 mcs/mcs/statement.cs:4220
+#: mcs/mcs/iterators.cs:888 mcs/mcs/statement.cs:4324
 msgid "Unsafe code may not appear in iterators"
 msgstr ""
 
-#: mcs/mcs/linq.cs:69
+#: mcs/mcs/linq.cs:68
 #, csharp-format
 msgid ""
 "An implementation of `{0}' query expression pattern could not be found. Are "
@@ -2312,27 +2776,27 @@ msgid ""
 "reference?"
 msgstr ""
 
-#: mcs/mcs/linq.cs:94
+#: mcs/mcs/linq.cs:93
 #, csharp-format
 msgid ""
 "Ambiguous implementation of the query pattern `{0}' for source type `{1}'"
 msgstr ""
 
-#: mcs/mcs/linq.cs:125
+#: mcs/mcs/linq.cs:124
 #, csharp-format
 msgid ""
 "An implementation of `{0}' query expression pattern for source type `{1}' "
 "could not be found"
 msgstr ""
 
-#: mcs/mcs/linq.cs:133
+#: mcs/mcs/linq.cs:132
 #, csharp-format
 msgid ""
 "An expression type is incorrect in a subsequent `from' clause in a query "
 "expression with source type `{0}'"
 msgstr ""
 
-#: mcs/mcs/linq.cs:137
+#: mcs/mcs/linq.cs:136
 #, csharp-format
 msgid ""
 "An expression type in `{0}' clause is incorrect. Type inference failed in "
@@ -2344,175 +2808,464 @@ msgstr ""
 msgid "A range variable `{0}' cannot be initialized with `{1}'"
 msgstr ""
 
-#: mcs/mcs/linq.cs:708
+#: mcs/mcs/linq.cs:750
 #, csharp-format
 msgid "A range variable `{0}' conflicts with a previous declaration of `{0}'"
 msgstr ""
 
-#: mcs/mcs/linq.cs:714
+#: mcs/mcs/linq.cs:757
 #, csharp-format
 msgid "A range variable `{0}' has already been declared in this scope"
 msgstr ""
 
-#: mcs/mcs/linq.cs:720
+#: mcs/mcs/linq.cs:764
 #, csharp-format
 msgid "A range variable `{0}' conflicts with a method type parameter"
 msgstr ""
 
-#: mcs/mcs/literal.cs:47
+#: mcs/mcs/linq.cs:796
+#, csharp-format
+msgid ""
+"A range variable `{0}' cannot be assigned to. Consider using `let' clause to "
+"store the value"
+msgstr ""
+
+#: mcs/mcs/literal.cs:49
 #, csharp-format
 msgid ""
 "Cannot convert null to the type parameter `{0}' because it could be a value "
 "type. Consider using `default ({0})' instead"
 msgstr ""
 
-#: mcs/mcs/literal.cs:53
+#: mcs/mcs/literal.cs:55
 #, csharp-format
 msgid "Cannot convert null to `{0}' because it is a value type"
 msgstr ""
 
-#: mcs/mcs/literal.cs:202
+#: mcs/mcs/literal.cs:204
 #, csharp-format
 msgid ""
 "Literal of type double cannot be implicitly converted to type `{0}'. Add "
 "suffix `{1}' to create a literal of this type"
 msgstr ""
 
-#: mcs/mcs/modifiers.cs:260
+#: mcs/mcs/membercache.cs:1241
+msgid ""
+"A partial method declaration and partial method implementation cannot differ "
+"on use of `params' modifier"
+msgstr ""
+
+#: mcs/mcs/membercache.cs:1244
+msgid ""
+"A partial method declaration and partial method implementation must be both "
+"an extension method or neither"
+msgstr ""
+
+#: mcs/mcs/membercache.cs:1248
 #, csharp-format
-msgid "The modifier `{0}' is not valid for this item"
+msgid ""
+"Overloaded contructor `{0}' cannot differ on use of parameter modifiers only"
+msgstr ""
+
+#: mcs/mcs/membercache.cs:1252
+#, csharp-format
+msgid ""
+"Overloaded method `{0}' cannot differ on use of parameter modifiers only"
+msgstr ""
+
+#: mcs/mcs/membercache.cs:1284
+msgid ""
+"A partial method declaration and partial method implementation must be both "
+"`static' or neither"
+msgstr ""
+
+#: mcs/mcs/membercache.cs:1289
+msgid ""
+"A partial method declaration and partial method implementation must be both "
+"`unsafe' or neither"
+msgstr ""
+
+#: mcs/mcs/membercache.cs:1295
+#, csharp-format
+msgid "A partial method `{0}' declaration is already defined"
+msgstr ""
+
+#: mcs/mcs/membercache.cs:1299
+#, csharp-format
+msgid "A partial method `{0}' implementation is already defined"
+msgstr ""
+
+#: mcs/mcs/membercache.cs:1310 mcs/mcs/property.cs:81
+#, csharp-format
+msgid "A member `{0}' is already reserved"
+msgstr ""
+
+#: mcs/mcs/membercache.cs:1321
+#, csharp-format
+msgid "Duplicate user-defined conversion in type `{0}'"
+msgstr ""
+
+#: mcs/mcs/method.cs:495
+msgid ""
+"The DllImport attribute must be specified on a method marked `static' and "
+"`extern'"
+msgstr ""
+
+#: mcs/mcs/method.cs:583
+#, csharp-format
+msgid "`{0}': A partial method parameters cannot use `out' modifier"
+msgstr ""
+
+#: mcs/mcs/method.cs:642
+#, csharp-format
+msgid ""
+"Conditional not valid on `{0}' because it is a constructor, destructor, "
+"operator or explicit interface implementation"
+msgstr ""
+
+#: mcs/mcs/method.cs:860
+#, csharp-format
+msgid "Program `{0}' has more than one entry point defined: `{1}'"
+msgstr ""
+
+#: mcs/mcs/method.cs:904
+#, csharp-format
+msgid "Conditional not valid on `{0}' because it is an override method"
+msgstr ""
+
+#: mcs/mcs/method.cs:909
+#, csharp-format
+msgid "Conditional not valid on `{0}' because its return type is not void"
+msgstr ""
+
+#: mcs/mcs/method.cs:914
+msgid "Conditional not valid on interface members"
+msgstr ""
+
+#: mcs/mcs/method.cs:920
+#, csharp-format
+msgid "Conditional member `{0}' cannot implement interface member `{1}'"
+msgstr ""
+
+#: mcs/mcs/method.cs:927
+#, csharp-format
+msgid "Conditional method `{0}' cannot have an out parameter"
+msgstr ""
+
+#: mcs/mcs/method.cs:1050
+#, csharp-format
+msgid ""
+"The constraints for type parameter `{0}' of method `{1}' must match the "
+"constraints for type parameter `{2}' of interface method `{3}'. Consider "
+"using an explicit interface implementation instead"
 msgstr ""
 
-#: mcs/mcs/namespace.cs:57
+#: mcs/mcs/method.cs:1104
 #, csharp-format
-msgid "An assembly `{0}' is used without being referenced"
+msgid "`{0}': Extension methods cannot be defined in a nested class"
 msgstr ""
 
-#: mcs/mcs/namespace.cs:148
+#: mcs/mcs/method.cs:1110
+#, csharp-format
+msgid ""
+"`{0}': Extension methods cannot be declared without a reference to System."
+"Core.dll assembly. Add the assembly reference or remove `this' modifer from "
+"the first parameter"
+msgstr ""
+
+#: mcs/mcs/method.cs:1119
+#, csharp-format
+msgid "`{0}': Extension methods must be defined in a non-generic static class"
+msgstr ""
+
+#: mcs/mcs/method.cs:1172
+#, csharp-format
+msgid ""
+"A partial method `{0}' implementation is missing a partial method declaration"
+msgstr ""
+
+#: mcs/mcs/method.cs:1219
+#, csharp-format
+msgid "Method or delegate cannot return type `{0}'"
+msgstr ""
+
+#: mcs/mcs/method.cs:1294
+msgid ""
+"The constructor call cannot be dynamically dispatched within constructor "
+"initializer"
+msgstr ""
+
+#: mcs/mcs/method.cs:1308
+#, csharp-format
+msgid "`{0}': Struct constructors cannot call base constructors"
+msgstr ""
+
+#: mcs/mcs/method.cs:1327
+#, csharp-format
+msgid "Constructor `{0}' cannot call itself"
+msgstr ""
+
+#: mcs/mcs/method.cs:1446
+#, csharp-format
+msgid "`{0}': The static constructor must be parameterless"
+msgstr ""
+
+#: mcs/mcs/method.cs:1464
+msgid "Structs cannot contain explicit parameterless constructors"
+msgstr ""
+
+#: mcs/mcs/method.cs:1520
+#, csharp-format
+msgid ""
+"`{0}': A class with the ComImport attribute cannot have a user-defined "
+"constructor"
+msgstr ""
+
+#: mcs/mcs/method.cs:1763
+#, csharp-format
+msgid "`{0}' is an accessor not found in interface member `{1}{2}'"
+msgstr ""
+
+#: mcs/mcs/method.cs:1769
+#, csharp-format
+msgid ""
+"`{0}.{1}' in explicit interface declaration is not a member of interface"
+msgstr ""
+
+#: mcs/mcs/method.cs:1776
+#, csharp-format
+msgid ""
+"`{0}' explicit method implementation cannot implement `{1}' because it is an "
+"accessor"
+msgstr ""
+
+#: mcs/mcs/method.cs:1786
+#, csharp-format
+msgid "Method `{0}' cannot implement interface accessor `{1}'"
+msgstr ""
+
+#: mcs/mcs/method.cs:1792
+#, csharp-format
+msgid ""
+"Accessor `{0}' cannot implement interface member `{1}' for type `{2}'. Use "
+"an explicit interface implementation"
+msgstr ""
+
+#: mcs/mcs/method.cs:1798
+#, csharp-format
+msgid ""
+"Accessor `{0}' must be declared public to implement interface member `{1}'"
+msgstr ""
+
+#: mcs/mcs/method.cs:1822
+#, csharp-format
+msgid ""
+"`{0}': the explicit interface implementation cannot introduce the params "
+"modifier"
+msgstr ""
+
+#: mcs/mcs/method.cs:2140
+#, csharp-format
+msgid ""
+"Attribute `{0}' is not valid on property or event accessors. It is valid on `"
+"{1}' declarations only"
+msgstr ""
+
+#: mcs/mcs/method.cs:2351
+#, csharp-format
+msgid "User-defined operator `{0}' must be declared static and public"
+msgstr ""
+
+#: mcs/mcs/method.cs:2390
+msgid ""
+"User-defined operator cannot take an object of the enclosing type and "
+"convert to an object of the enclosing type"
+msgstr ""
+
+#: mcs/mcs/method.cs:2401
+msgid "User-defined conversion must convert to or from the enclosing type"
+msgstr ""
+
+#: mcs/mcs/method.cs:2407
+#, csharp-format
+msgid ""
+"User-defined conversion `{0}' cannot convert to or from the dynamic type"
+msgstr ""
+
+#: mcs/mcs/method.cs:2414
+#, csharp-format
+msgid ""
+"User-defined conversion `{0}' cannot convert to or from an interface type"
+msgstr ""
+
+#: mcs/mcs/method.cs:2421
+#, csharp-format
+msgid "User-defined conversion `{0}' cannot convert to or from a base class"
+msgstr ""
+
+#: mcs/mcs/method.cs:2427
+#, csharp-format
+msgid "User-defined conversion `{0}' cannot convert to or from a derived class"
+msgstr ""
+
+#: mcs/mcs/method.cs:2434
+msgid ""
+"Overloaded shift operator must have the type of the first operand be the "
+"containing type, and the type of the second operand must be int"
+msgstr ""
+
+#: mcs/mcs/method.cs:2443
+msgid ""
+"The return type for ++ or -- operator must be the containing type or derived "
+"from the containing type"
+msgstr ""
+
+#: mcs/mcs/method.cs:2448
+msgid "The parameter type for ++ or -- operator must be the containing type"
+msgstr ""
+
+#: mcs/mcs/method.cs:2455
+msgid "The parameter type of a unary operator must be the containing type"
+msgstr ""
+
+#: mcs/mcs/method.cs:2463
+msgid "The return type of operator True or False must be bool"
+msgstr ""
+
+#: mcs/mcs/method.cs:2478
+msgid "One of the parameters of a binary operator must be the containing type"
+msgstr ""
+
+#: mcs/mcs/modifiers.cs:275
+#, csharp-format
+msgid "The modifier `{0}' is not valid for this item"
+msgstr ""
+
+#: mcs/mcs/namespace.cs:70
 #, csharp-format
 msgid ""
 "The type or namespace name `{0}' could not be found in the global namespace "
 "(are you missing an assembly reference?)"
 msgstr ""
 
-#: mcs/mcs/namespace.cs:264
+#: mcs/mcs/namespace.cs:177
 #, csharp-format
 msgid ""
 "The type or namespace name `{0}' does not exist in the namespace `{1}'. Are "
 "you missing an assembly reference?"
 msgstr ""
 
-#: mcs/mcs/namespace.cs:343
+#: mcs/mcs/namespace.cs:256
 #, csharp-format
 msgid "The imported type `{0}' is defined multiple times"
 msgstr ""
 
-#: mcs/mcs/namespace.cs:669
+#: mcs/mcs/namespace.cs:583
 #, csharp-format
 msgid ""
 "`{0}' is a type not a namespace. A using namespace directive can only be "
 "applied to namespaces"
 msgstr ""
 
-#: mcs/mcs/namespace.cs:696
+#: mcs/mcs/namespace.cs:610
 #, csharp-format
 msgid "The extern alias `{0}' was not specified in -reference option"
 msgstr ""
 
-#: mcs/mcs/namespace.cs:906 mcs/mcs/namespace.cs:928
+#: mcs/mcs/namespace.cs:820 mcs/mcs/namespace.cs:842
 msgid ""
 "A using clause must precede all other namespace elements except extern alias "
 "declarations"
 msgstr ""
 
-#: mcs/mcs/namespace.cs:952
+#: mcs/mcs/namespace.cs:866
 msgid "An extern alias declaration must precede all other elements"
 msgstr ""
 
-#: mcs/mcs/namespace.cs:970
+#: mcs/mcs/namespace.cs:884
 #, csharp-format
 msgid "The using alias `{0}' appeared previously in this namespace"
 msgstr ""
 
-#: mcs/mcs/namespace.cs:1091
+#: mcs/mcs/namespace.cs:1005
 #, csharp-format
 msgid "Namespace `{0}' contains a definition with same name as alias `{1}'"
 msgstr ""
 
-#: mcs/mcs/namespace.cs:1145
+#: mcs/mcs/namespace.cs:1059
 #, csharp-format
 msgid "`{0}' is an ambiguous reference between `{1}' and `{2}'"
 msgstr ""
 
-#: mcs/mcs/namespace.cs:1213
-msgid "You cannot redefine the global extern alias"
+#: mcs/mcs/namespace.cs:1127
+msgid "The global extern alias cannot be redefined"
 msgstr ""
 
-#: mcs/mcs/namespace.cs:1218
+#: mcs/mcs/namespace.cs:1132
 #, csharp-format
 msgid ""
 "The type or namespace name `{0}' could not be found. Are you missing a using "
 "directive or an assembly reference?"
 msgstr ""
 
-#: mcs/mcs/nullable.cs:922
+#: mcs/mcs/nullable.cs:1036
 msgid ""
 "An expression tree cannot contain a coalescing operator with null left side"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:176
+#: mcs/mcs/parameter.cs:156
 msgid "The params parameter must be a single dimensional array"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:287
+#: mcs/mcs/parameter.cs:288
 msgid "An out parameter cannot have the `In' attribute"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:292
+#: mcs/mcs/parameter.cs:293
 msgid ""
 "Do not use `System.ParamArrayAttribute'. Use the `params' keyword instead"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:299
+#: mcs/mcs/parameter.cs:300
 msgid ""
 "Cannot specify only `Out' attribute on a ref parameter. Use both `In' and "
 "`Out' attributes or neither"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:309
+#: mcs/mcs/parameter.cs:310
 #, csharp-format
 msgid "Cannot specify `{0}' attribute on optional parameter `{1}'"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:319
+#: mcs/mcs/parameter.cs:320
 #, csharp-format
 msgid ""
 "Argument of type `{0}' is not applicable for the DefaultParameterValue "
 "attribute"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:322
+#: mcs/mcs/parameter.cs:323
 #, csharp-format
 msgid ""
 "The DefaultParameterValue attribute is not applicable on parameters of type `"
 "{0}'"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:333
+#: mcs/mcs/parameter.cs:334
 msgid "The type of the default value should match the type of the parameter"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:375
+#: mcs/mcs/parameter.cs:376
 #, csharp-format
 msgid "Method or delegate parameter cannot be of type `{0}'"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:385
+#: mcs/mcs/parameter.cs:386
 #, csharp-format
 msgid "`{0}': static types cannot be used as parameters"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:391
+#: mcs/mcs/parameter.cs:392
 #, csharp-format
 msgid "The extension method cannot be of type `{0}'"
 msgstr ""
@@ -2520,24 +3273,24 @@ msgstr ""
 #: mcs/mcs/parameter.cs:448
 #, csharp-format
 msgid ""
-"The expression being assigned to nullable optional parameter `{0}' must be "
-"default value"
+"The expression being assigned to optional parameter `{0}' must be a constant "
+"or default value"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:452
+#: mcs/mcs/parameter.cs:464
 #, csharp-format
 msgid ""
-"The expression being assigned to optional parameter `{0}' must be a constant "
-"or default value"
+"The expression being assigned to nullable optional parameter `{0}' must be "
+"default value"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:470
+#: mcs/mcs/parameter.cs:472
 #, csharp-format
 msgid ""
 "Optional parameter `{0}' of type `{1}' can only be initialized with `null'"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:481
+#: mcs/mcs/parameter.cs:482
 #, csharp-format
 msgid ""
 "Optional parameter expression of type `{0}' cannot be converted to parameter "
@@ -2548,31 +3301,26 @@ msgstr ""
 msgid "An expression tree parameter cannot use `ref' or `out' modifier"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:1120
+#: mcs/mcs/parameter.cs:1096
 #, csharp-format
 msgid "The parameter name `{0}' conflicts with a compiler generated name"
 msgstr ""
 
-#: mcs/mcs/parameter.cs:1138
-#, csharp-format
-msgid "The parameter name `{0}' is a duplicate"
-msgstr ""
-
-#: mcs/mcs/pending.cs:433
+#: mcs/mcs/pending.cs:443
 #, csharp-format
 msgid ""
 "`{0}' does not implement interface member `{1}' and the best implementing "
 "candidate `{2}' is static"
 msgstr ""
 
-#: mcs/mcs/pending.cs:437
+#: mcs/mcs/pending.cs:447
 #, csharp-format
 msgid ""
 "`{0}' does not implement interface member `{1}' and the best implementing "
 "candidate `{2}' in not public"
 msgstr ""
 
-#: mcs/mcs/pending.cs:441
+#: mcs/mcs/pending.cs:451
 #, csharp-format
 msgid ""
 "`{0}' does not implement interface member `{1}' and the best implementing "
@@ -2580,86 +3328,165 @@ msgid ""
 "type `{4}'"
 msgstr ""
 
-#: mcs/mcs/pending.cs:446
+#: mcs/mcs/pending.cs:456
 #, csharp-format
 msgid "`{0}' does not implement interface member `{1}'"
 msgstr ""
 
-#: mcs/mcs/pending.cs:451
+#: mcs/mcs/pending.cs:461
 #, csharp-format
 msgid "`{0}' does not implement inherited abstract member `{1}'"
 msgstr ""
 
-#: mcs/mcs/rootcontext.cs:240
+#: mcs/mcs/property.cs:352
 #, csharp-format
 msgid ""
-"The compilation may fail due to missing `{0}.SetCorlibTypeBuilders(...)' "
-"method"
+"`{0}': accessibility modifiers may not be used on accessors in an interface"
+msgstr ""
+
+#: mcs/mcs/property.cs:356
+#, csharp-format
+msgid "`{0}': abstract properties cannot have private accessors"
+msgstr ""
+
+#: mcs/mcs/property.cs:401
+#, csharp-format
+msgid ""
+"The accessibility modifier of the `{0}' accessor must be more restrictive "
+"than the modifier of the property or indexer `{1}'"
+msgstr ""
+
+#: mcs/mcs/property.cs:502
+#, csharp-format
+msgid "Explicit interface implementation `{0}' is missing accessor `{1}'"
 msgstr ""
 
-#: mcs/mcs/roottypes.cs:235
+#: mcs/mcs/property.cs:521
+#, csharp-format
+msgid ""
+"`{0}': cannot override because `{1}' does not have an overridable get "
+"accessor"
+msgstr ""
+
+#: mcs/mcs/property.cs:538
+#, csharp-format
+msgid ""
+"`{0}': cannot override because `{1}' does not have an overridable set "
+"accessor"
+msgstr ""
+
+#: mcs/mcs/property.cs:579
+#, csharp-format
 msgid ""
-"Value specified for the argument to 'System.Runtime.InteropServices."
-"DefaultCharSetAttribute' is not valid"
+"`{0}': Cannot specify accessibility modifiers for both accessors of the "
+"property or indexer"
 msgstr ""
 
-#: mcs/mcs/statement.cs:85
+#: mcs/mcs/property.cs:586
+#, csharp-format
+msgid ""
+"`{0}': accessibility modifiers on accessors may only be used if the property "
+"or indexer has both a get and a set accessor"
+msgstr ""
+
+#: mcs/mcs/property.cs:783
+#, csharp-format
+msgid ""
+"Automatically implemented property `{0}' cannot be used inside a type with "
+"an explicit StructLayout attribute"
+msgstr ""
+
+#: mcs/mcs/property.cs:1274
+#, csharp-format
+msgid "`{0}': event must be of a delegate type"
+msgstr ""
+
+#: mcs/mcs/property.cs:1482
+#, csharp-format
+msgid ""
+"The `{0}' attribute is valid only on an indexer that is not an explicit "
+"interface member declaration"
+msgstr ""
+
+#: mcs/mcs/property.cs:1516
+msgid "Cannot set the `IndexerName' attribute on an indexer marked override"
+msgstr ""
+
+#: mcs/mcs/reflection.cs:239
+msgid "Could not access the key inside the container `"
+msgstr ""
+
+#: mcs/mcs/roottypes.cs:434
+msgid ""
+"The compilation may fail due to missing `System.Reflection.Emit."
+"AssemblyBuilder.SetCorlibTypeBuilders(...)' method"
+msgstr ""
+
+#: mcs/mcs/roottypes.cs:529
+#, csharp-format
+msgid "Value specified for the argument to `{0}' is not valid"
+msgstr ""
+
+#: mcs/mcs/statement.cs:87
 msgid ""
 "A lambda expression with statement body cannot be converted to an expresion "
 "tree"
 msgstr ""
 
-#: mcs/mcs/statement.cs:738
+#: mcs/mcs/statement.cs:740
 #, csharp-format
 msgid ""
 "An object of a type convertible to `{0}' is required for the return statement"
 msgstr ""
 
-#: mcs/mcs/statement.cs:751
+#: mcs/mcs/statement.cs:753
 #, csharp-format
 msgid ""
 "`{0}': A return keyword must not be followed by any expression when method "
 "returns void"
 msgstr ""
 
-#: mcs/mcs/statement.cs:776
+#: mcs/mcs/statement.cs:778
 #, csharp-format
 msgid ""
 "Cannot convert `{0}' to delegate type `{1}' because some of the return types "
 "in the block are not implicitly convertible to the delegate return type"
 msgstr ""
 
-#: mcs/mcs/statement.cs:804
+#: mcs/mcs/statement.cs:806
 msgid ""
 "Cannot return a value from iterators. Use the yield return statement to "
 "return a value, or yield break to end the iteration"
 msgstr ""
 
-#: mcs/mcs/statement.cs:950 mcs/mcs/statement.cs:984
+#: mcs/mcs/statement.cs:963 mcs/mcs/statement.cs:997
 msgid "A goto case is only valid inside a switch statement"
 msgstr ""
 
-#: mcs/mcs/statement.cs:1063 mcs/mcs/statement.cs:4593
+#: mcs/mcs/statement.cs:1076 mcs/mcs/statement.cs:4726
 msgid "The type caught or thrown must be derived from System.Exception"
 msgstr ""
 
-#: mcs/mcs/statement.cs:1564
-#, csharp-format
-msgid ""
-"The label `{0}' shadows another label by the same name in a contained scope"
+#: mcs/mcs/statement.cs:1298
+msgid "A fixed statement cannot use an implicitly typed local variable"
 msgstr ""
 
-#: mcs/mcs/statement.cs:1589
-#, csharp-format
-msgid "The label `{0}' is a duplicate"
+#: mcs/mcs/statement.cs:1303
+msgid "An implicitly typed local variable cannot be a constant"
 msgstr ""
 
-#: mcs/mcs/statement.cs:1684
-#, csharp-format
-msgid "`{0}' conflicts with a declaration in a child block"
+#: mcs/mcs/statement.cs:1308
+msgid ""
+"An implicitly typed local variable declarator must include an initializer"
 msgstr ""
 
-#: mcs/mcs/statement.cs:1785
+#: mcs/mcs/statement.cs:1313
+msgid ""
+"An implicitly typed local variable declaration cannot include multiple "
+"declarators"
+msgstr ""
+
+#: mcs/mcs/statement.cs:1883
 #, csharp-format
 msgid ""
 "A local variable named `{0}' cannot be declared in this scope because it "
@@ -2667,96 +3494,111 @@ msgid ""
 "scope to denote something else"
 msgstr ""
 
-#: mcs/mcs/statement.cs:1794
+#: mcs/mcs/statement.cs:1894
+#, csharp-format
+msgid ""
+"`{0}': An anonymous type cannot have multiple properties with the same name"
+msgstr ""
+
+#: mcs/mcs/statement.cs:1897
+#, csharp-format
+msgid "The parameter name `{0}' is a duplicate"
+msgstr ""
+
+#: mcs/mcs/statement.cs:1904
 #, csharp-format
 msgid "A local variable named `{0}' is already defined in this scope"
 msgstr ""
 
-#: mcs/mcs/statement.cs:1799
+#: mcs/mcs/statement.cs:1910
 #, csharp-format
-msgid "The type parameter name `{0}' is the same as `{1}'"
+msgid ""
+"The type parameter name `{0}' is the same as local variable or parameter name"
 msgstr ""
 
-#: mcs/mcs/statement.cs:1944
-msgid "An implicitly typed local variable cannot be a constant"
+#: mcs/mcs/statement.cs:2482
+#, csharp-format
+msgid ""
+"The out parameter `{0}' must be assigned to before control leaves the "
+"current method"
 msgstr ""
 
-#: mcs/mcs/statement.cs:2860
+#: mcs/mcs/statement.cs:2573
 #, csharp-format
 msgid "`{0}': not all code paths return a value"
 msgstr ""
 
-#: mcs/mcs/statement.cs:2863
+#: mcs/mcs/statement.cs:2577
 #, csharp-format
 msgid "Not all code paths return a value in anonymous method of type `{0}'"
 msgstr ""
 
-#: mcs/mcs/statement.cs:2921
+#: mcs/mcs/statement.cs:2748
+#, csharp-format
+msgid "The label `{0}' is a duplicate"
+msgstr ""
+
+#: mcs/mcs/statement.cs:2757 mcs/mcs/statement.cs:2768
 #, csharp-format
 msgid ""
-"The out parameter `{0}' must be assigned to before control leaves the "
-"current method"
+"The label `{0}' shadows another label by the same name in a contained scope"
 msgstr ""
 
-#: mcs/mcs/statement.cs:3101
+#: mcs/mcs/statement.cs:3088
 #, csharp-format
 msgid "The label `case {0}:' already occurs in this switch statement"
 msgstr ""
 
-#: mcs/mcs/statement.cs:3632
+#: mcs/mcs/statement.cs:3629
 #, csharp-format
 msgid ""
 "A switch expression of type `{0}' cannot be converted to an integral type, "
 "bool, char, string, enum or nullable type"
 msgstr ""
 
-#: mcs/mcs/statement.cs:4095
+#: mcs/mcs/statement.cs:4114
 #, csharp-format
 msgid "`{0}' is not a reference type as required by the lock statement"
 msgstr ""
 
-#: mcs/mcs/statement.cs:4358
-msgid "A fixed statement cannot use an implicitly typed local variable"
-msgstr ""
-
-#: mcs/mcs/statement.cs:4368
+#: mcs/mcs/statement.cs:4455
 msgid "The type of locals declared in a fixed statement must be a pointer type"
 msgstr ""
 
-#: mcs/mcs/statement.cs:4392
+#: mcs/mcs/statement.cs:4471
 msgid ""
 "The right hand side of a fixed statement assignment may not be a cast "
 "expression"
 msgstr ""
 
-#: mcs/mcs/statement.cs:4470
+#: mcs/mcs/statement.cs:4542
 msgid ""
 "You cannot use the fixed statement to take the address of an already fixed "
 "expression"
 msgstr ""
 
-#: mcs/mcs/statement.cs:4733
+#: mcs/mcs/statement.cs:4856
 #, csharp-format
 msgid ""
 "A previous catch clause already catches all exceptions of this or a super "
 "type `{0}'"
 msgstr ""
 
-#: mcs/mcs/statement.cs:4937
+#: mcs/mcs/statement.cs:5029
 #, csharp-format
 msgid ""
 "`{0}': type used in a using statement must be implicitly convertible to "
 "`System.IDisposable'"
 msgstr ""
 
-#: mcs/mcs/statement.cs:5322
+#: mcs/mcs/statement.cs:5451
 #, csharp-format
 msgid ""
 "foreach statement requires that the return type `{0}' of `{1}' must have a "
 "suitable public MoveNext method and public Current property"
 msgstr ""
 
-#: mcs/mcs/statement.cs:5360
+#: mcs/mcs/statement.cs:5491
 #, csharp-format
 msgid ""
 "foreach statement cannot operate on variables of type `{0}' because it "
@@ -2764,48 +3606,40 @@ msgid ""
 "implementation"
 msgstr ""
 
-#: mcs/mcs/statement.cs:5379
+#: mcs/mcs/statement.cs:5516
 #, csharp-format
 msgid ""
 "foreach statement cannot operate on variables of type `{0}' because it does "
 "not contain a definition for `{1}' or is inaccessible"
 msgstr ""
 
-#: mcs/mcs/statement.cs:5576
+#: mcs/mcs/statement.cs:5722
 msgid "Use of null is not valid in this context"
 msgstr ""
 
-#: mcs/mcs/statement.cs:5586
+#: mcs/mcs/statement.cs:5732
 #, csharp-format
 msgid "Foreach statement cannot operate on a `{0}'"
 msgstr ""
 
-#: mcs/mcs/typemanager.cs:237
+#: mcs/mcs/typemanager.cs:396
 #, csharp-format
 msgid "The predefined type `{0}.{1}' is not defined or imported"
 msgstr ""
 
-#: mcs/mcs/typemanager.cs:243
+#: mcs/mcs/typemanager.cs:402
 #, csharp-format
 msgid "The predefined type `{0}.{1}' is not declared correctly"
 msgstr ""
 
-#: mcs/mcs/typemanager.cs:262
+#: mcs/mcs/typemanager.cs:581
 #, csharp-format
 msgid ""
 "The compiler required member `{0}.{1}{2}' could not be found or is "
 "inaccessible"
 msgstr ""
 
-#: mcs/mcs/typemanager.cs:721
-#, csharp-format
-msgid ""
-"Friend access was granted to `{0}', but the output assembly is named `{1}'. "
-"Try adding a reference to `{0}' or change the output assembly name to match "
-"it"
-msgstr ""
-
-#: mcs/mcs/typemanager.cs:823
+#: mcs/mcs/typemanager.cs:889
 #, csharp-format
 msgid ""
 "Cannot take the address of, get the size of, or declare a pointer to a "
diff --git a/po/mcs/pt_BR.gmo b/po/mcs/pt_BR.gmo
new file mode 100644
index 0000000..d61d7c3
Binary files /dev/null and b/po/mcs/pt_BR.gmo differ
diff --git a/po/mcs/pt_BR.po b/po/mcs/pt_BR.po
new file mode 100644
index 0000000..d02a330
--- /dev/null
+++ b/po/mcs/pt_BR.po
@@ -0,0 +1,4618 @@
+# Mono C# compiler translation file for Brazilian Portuguese.
+# Copyright (C) 2008 Novell, Inc.
+# This file is distributed under the same license as the Mono package.
+# Rodrigo Luiz Marques Flores <mail at rodrigoflores.org>, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mono 2.1\n"
+"Report-Msgid-Bugs-To: http://www.mono-project.com/Bugs\n"
+"POT-Creation-Date: 2011-01-18 10:45-0700\n"
+"PO-Revision-Date: 2009-03-01 07:52-0300\n"
+"Last-Translator: Rodrigo Luiz Marques Flores <mail at rodrigoflores.org>\n"
+"Language-Team: pt-BR <mono-list at lists.ximian.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: \n"
+
+#: mcs/mcs/anonymous.cs:880
+#, csharp-format
+msgid "Cannot convert `{0}' to an expression tree of non-delegate type `{1}'"
+msgstr ""
+"Não foi possível converter \"{0}\" para uma árvore de expressão de um tipo "
+"não-delegate \"{1}\""
+
+#: mcs/mcs/anonymous.cs:885
+#, csharp-format
+msgid "Cannot convert `{0}' to non-delegate type `{1}'"
+msgstr "Não foi possível converter \"{0}\" para um tipo não-delegate \"{1}\""
+
+#: mcs/mcs/anonymous.cs:897
+#, csharp-format
+msgid ""
+"Cannot convert `{0}' to delegate type `{1}' since there is a parameter "
+"mismatch"
+msgstr ""
+"Não foi possível converter \"{0}\" para um tipo delegate \"{1}\"pois os "
+"parâmetros não conferem"
+
+#: mcs/mcs/anonymous.cs:909 mcs/mcs/ecore.cs:4524
+#, csharp-format
+msgid "Delegate `{0}' does not take `{1}' arguments"
+msgstr "Delegate \"{0}\" não recebe \"{1}\" argumentos"
+
+#: mcs/mcs/anonymous.cs:924
+#, csharp-format
+msgid "Parameter `{0}' should not be declared with the `{1}' keyword"
+msgstr "O parâmetro \"{0}\" não deve ser declarado com a palavra chave \"{1}\""
+
+#: mcs/mcs/anonymous.cs:927
+#, csharp-format
+msgid "Parameter `{0}' must be declared with the `{1}' keyword"
+msgstr "O parâmetro \"{0}\" deve ser declarado com a palavra chave \"{1}\""
+
+#: mcs/mcs/anonymous.cs:948
+#, csharp-format
+msgid "Parameter `{0}' is declared as type `{1}' but should be `{2}'"
+msgstr ""
+"O parâmetro \"{0}\" é declarado como tipo \"{1}\" mas deveria ser \"{2}\""
+
+#: mcs/mcs/anonymous.cs:1103
+msgid "An anonymous method cannot be converted to an expression tree"
+msgstr "Um método anônimo não pode ser convertido para uma árvore de expressão"
+
+#: mcs/mcs/anonymous.cs:1122
+#, fuzzy, csharp-format
+msgid ""
+"Cannot convert anonymous method block without a parameter list to delegate "
+"type `{0}' because it has one or more `out' parameters"
+msgstr ""
+"Não foi possível converter um bloco anônimo de um método sem uma lista de "
+"parâmetros para representar o tipo \"{0}\" por que este possui um ou mais "
+"parâmetros \"externos\"."
+
+#: mcs/mcs/anonymous.cs:1146
+msgid ""
+"Anonymous methods and lambda expressions cannot be used in the current "
+"context"
+msgstr ""
+"Métodos anônimos ou expressões lambdas não podem ser utilizados no contexto "
+"atual"
+
+#: mcs/mcs/anonymous.cs:1188
+#, csharp-format
+msgid ""
+"Local variable or parameter `{0}' cannot have their address taken and be "
+"used inside an anonymous method or lambda expression"
+msgstr ""
+"A variável local ou parâmetro \"{0}\" não pode ter seu endereço obtido e ser "
+"utilizado dentro de um método anônimo ou expressão lambda"
+
+#: mcs/mcs/anonymous.cs:1438
+msgid "An expression tree cannot contain an anonymous method expression"
+msgstr ""
+"Uma árvore de expressão não pode conter uma expressão que seja um método "
+"anônimo"
+
+#: mcs/mcs/argument.cs:101
+#, fuzzy
+msgid ""
+"An expression tree cannot contain an invocation which uses optional parameter"
+msgstr ""
+"Uma árvore de expressão não pode conter um método com argumentos variáveis"
+
+#: mcs/mcs/argument.cs:184
+#, fuzzy
+msgid "An expression tree cannot contain named argument"
+msgstr ""
+"Uma árvore de expressão não pode conter um método com argumentos variáveis"
+
+#: mcs/mcs/argument.cs:303
+#, fuzzy, csharp-format
+msgid ""
+"The method group `{0}' cannot be used as an argument of dynamic operation. "
+"Consider using parentheses to invoke the method"
+msgstr ""
+"Não foi possível converter o grupo de método \"{0}\" para o tipo não-"
+"delegate \"{1}\". Consider a utilização de parênteses quando chamar o método"
+
+#: mcs/mcs/argument.cs:307
+#, fuzzy
+msgid ""
+"An anonymous method or lambda expression cannot be used as an argument of "
+"dynamic operation. Consider using a cast"
+msgstr ""
+"Métodos anônimos ou expressões lambdas não podem ser utilizados no contexto "
+"atual"
+
+#: mcs/mcs/argument.cs:310
+#, fuzzy, csharp-format
+msgid ""
+"An expression of type `{0}' cannot be used as an argument of dynamic "
+"operation"
+msgstr "Uma árvore de expressão não pode conter um operador de atribuição"
+
+#: mcs/mcs/assign.cs:299
+msgid "An expression tree cannot contain an assignment operator"
+msgstr "Uma árvore de expressão não pode conter um operador de atribuição"
+
+#: mcs/mcs/assign.cs:627
+#, csharp-format
+msgid "Cannot assign to `{0}' because it is a `{1}'"
+msgstr "Não foi possível atribuir a \"{0}\" por que este é um \"{1}\""
+
+#: mcs/mcs/attribute.cs:196
+#, csharp-format
+msgid ""
+"`{0}' is not a valid named attribute argument. Named attribute arguments "
+"must be fields which are not readonly, static, const or read-write "
+"properties which are public and not static"
+msgstr ""
+"\"{0}\" não é um argumento de atributo nomeado válido. Argumentos de "
+"atributo nomeado devem ser campos que não são somente leitura, estáticos, "
+"constantes ou possuir propriedades de leitura-escrita que são públicas e não "
+"estáticas"
+
+#: mcs/mcs/attribute.cs:205
+#, csharp-format
+msgid ""
+"`{0}' is not a valid named attribute argument because it is not a valid "
+"attribute parameter type"
+msgstr ""
+"\"{0}\" não é um atributo nomeado válida para um argumento de atributo por "
+"quê não é um tipo de parâmetro de atributo válido"
+
+#: mcs/mcs/attribute.cs:211
+#, fuzzy
+msgid "An attribute argument cannot be dynamic expression"
+msgstr "\"{0}\": um argumento de atributo não pode usar parâmetros de tipo"
+
+#: mcs/mcs/attribute.cs:216
+msgid "The Guid attribute must be specified with the ComImport attribute"
+msgstr "O atributo Guid deve ser especificado com o atributo ComImport"
+
+#: mcs/mcs/attribute.cs:221
+#, csharp-format
+msgid "Do not use `{0}' directly. Use parameter modifier `this' instead"
+msgstr ""
+"Não use \"{0}\" diretamente. Ao invés disso, use o modificador de parâmetro "
+"\"this\""
+
+#: mcs/mcs/attribute.cs:226
+#, fuzzy, csharp-format
+msgid "Do not use `{0}' directly. Use `dynamic' keyword instead"
+msgstr ""
+"Não use \"{0}\" diretamente. Ao invés disso, use o modificador de parâmetro "
+"\"this\""
+
+#: mcs/mcs/attribute.cs:235
+#, csharp-format
+msgid "Error during emitting `{0}' attribute. The reason is `{1}'"
+msgstr "Erro enquanto emitia o atributo \"{0}\". O motivo é \"{1}\""
+
+#: mcs/mcs/attribute.cs:266
+#, csharp-format
+msgid "`{0}': is not an attribute class"
+msgstr "\"{0}\" não é uma classe de atributos"
+
+#: mcs/mcs/attribute.cs:302
+#, fuzzy, csharp-format
+msgid ""
+"`{0}' is ambiguous between `{1}' and `{2}'. Use either `@{0}' or `{0}"
+"Attribute'"
+msgstr ""
+"\"{0}\" está ambíguo entre \"{0}\" e \"{0}Atributo\". Utilize \"@{0}\" ou "
+"\"{0}Atributo\""
+
+#: mcs/mcs/attribute.cs:385
+#, csharp-format
+msgid "Cannot apply attribute class `{0}' because it is abstract"
+msgstr ""
+"Não foi possível aplicar a classe de atributo \"{0}\" por que esta é abstrata"
+
+#: mcs/mcs/attribute.cs:453
+#, fuzzy, csharp-format
+msgid "Duplicate named attribute `{0}' argument"
+msgstr "argumento de atributo nomeado \"{0}\" duplicado"
+
+#: mcs/mcs/attribute.cs:730
+#, csharp-format
+msgid ""
+"`{0}' is not a valid attribute location for this declaration. Valid "
+"attribute locations for this declaration are `{1}'"
+msgstr ""
+"\"{0}\" não é uma localização de atributo válido para esta declaração. "
+"Localizações de atributos válidos para esta declaração são \"{1}\""
+
+#: mcs/mcs/attribute.cs:1004
+#, csharp-format
+msgid ""
+"The attribute `{0}' is not valid on this declaration type. It is valid on `"
+"{1}' declarations only"
+msgstr ""
+"O atributo \"{0}\" não é válido neste tipo de declaração. Isso é válido "
+"somente nas declarações \"{1}\""
+
+#: mcs/mcs/attribute.cs:1022
+#, csharp-format
+msgid "The argument to the `{0}' attribute must be a valid identifier"
+msgstr "O argumento para o atributo \"{0}\" deve ser um identificador válido"
+
+#: mcs/mcs/attribute.cs:1035
+#, fuzzy, csharp-format
+msgid "Invalid value for argument to `{0}' attribute"
+msgstr ""
+"Valor inválido para o argumento para o atributo \"System.AttributeUsage\""
+
+#: mcs/mcs/attribute.cs:1341
+#, csharp-format
+msgid "The attribute `{0}' cannot be applied multiple times"
+msgstr "O atributo \"{0}\" não pode ser aplicado múltiplas vezes"
+
+#: mcs/mcs/attribute.cs:1603
+#, csharp-format
+msgid "`{0}' is obsolete: `{1}'"
+msgstr "\"{0}\" é obsoleto: \"{1}\""
+
+#: mcs/mcs/cs-parser.jay:474
+#, fuzzy
+msgid "A namespace declaration cannot have modifiers or attributes"
+msgstr "Um parâmetro externo não pode ter o atributo \"In\""
+
+#: mcs/mcs/cs-parser.jay:570
+msgid ""
+"Namespace elements cannot be explicitly declared as private, protected or "
+"protected internal"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:613
+#, fuzzy
+msgid ""
+"Assembly and module attributes must precede all other elements except using "
+"clauses and extern alias declarations"
+msgstr ""
+"Uma cláusula em uso deve preceder todos os outros elementos do namespace, "
+"exceto declarações de alias externos"
+
+#: mcs/mcs/cs-parser.jay:752
+msgid "'<' unexpected: attributes cannot be generic"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:800
+msgid "Named attribute arguments must appear after the positional arguments"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:892
+#, csharp-format
+msgid ""
+"Unexpected symbol `{0}' in class, struct, or interface member declaration"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:992
+#, fuzzy, csharp-format
+msgid "The constant `{0}' cannot be marked static"
+msgstr "O método abstrato \"{0}\" não pode ser marcado como virtual"
+
+#: mcs/mcs/cs-parser.jay:1047 mcs/mcs/cs-parser.jay:4792
+msgid "A const field requires a value to be provided"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1066
+#, fuzzy
+msgid "Fields cannot have void type"
+msgstr "Campo ou propriedade não podem ser do tipo \"{0}\""
+
+#: mcs/mcs/cs-parser.jay:1116
+msgid ""
+"A fixed size buffer field must have the array size specifier after the field "
+"name"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1211
+#, fuzzy
+msgid "Value or constant expected"
+msgstr "Um valor constante é esperado"
+
+#: mcs/mcs/cs-parser.jay:1239 mcs/mcs/cs-parser.jay:1800
+#: mcs/mcs/cs-parser.jay:1848 mcs/mcs/cs-parser.jay:2433
+#: mcs/mcs/cs-parser.jay:2461
+#, fuzzy, csharp-format
+msgid "`{0}': interface members cannot have a definition"
+msgstr "\"{0}\": evento abstrato não pode ter um inicializador"
+
+#: mcs/mcs/cs-parser.jay:1276 mcs/mcs/cs-parser.jay:1316 mcs/mcs/decl.cs:1404
+msgid "Constraints are not allowed on non-generic declarations"
+msgstr "Restrições não são permitidas em declarações não genéricas"
+
+#: mcs/mcs/cs-parser.jay:1284
+#, fuzzy, csharp-format
+msgid ""
+"`{0}': Cannot specify constraints for overrides and explicit interface "
+"implementation methods"
+msgstr ""
+"\"{0}\": Não foi possível especificar restrições para sobrescritos ou "
+"métodos de implementação explícitos de interface"
+
+#: mcs/mcs/cs-parser.jay:1335
+msgid ""
+"A partial method cannot define access modifier or any of abstract, extern, "
+"new, override, sealed, or virtual modifiers"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1341
+msgid ""
+"A partial method must be declared within a partial class or partial struct"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1365
+#, csharp-format
+msgid "Member modifier `{0}' must precede the member type and name"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1411 mcs/mcs/cs-parser.jay:1418
+#, fuzzy
+msgid ""
+"A params parameter must be the last parameter in a formal parameter list"
+msgstr "O parâmetro params deve ser um array de uma dimensão"
+
+#: mcs/mcs/cs-parser.jay:1427 mcs/mcs/cs-parser.jay:1433
+msgid ""
+"An __arglist parameter must be the last parameter in a formal parameter list"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1471
+msgid "The parameter modifier `this' can only be used on the first parameter"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1473
+#, fuzzy
+msgid "Optional parameter cannot precede required parameters"
+msgstr "Iteradores não podem ter parâmetros ref ou out"
+
+#: mcs/mcs/cs-parser.jay:1500
+msgid "Array type specifier, [], must appear before parameter name"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1532 mcs/mcs/cs-parser.jay:1537
+#, fuzzy, csharp-format
+msgid "Cannot specify a default value for the `{0}' parameter"
+msgstr ""
+"Não foi possível especificar o atributo \"DefaultMember\" no tipo contendo "
+"um indexador"
+
+#: mcs/mcs/cs-parser.jay:1548
+#, fuzzy
+msgid "Optional parameter is not valid in this context"
+msgstr "Uso do null é inválido neste contexto"
+
+#: mcs/mcs/cs-parser.jay:1578
+msgid "The parameter modifiers `this' and `ref' cannot be used altogether"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1581
+msgid "The parameter modifiers `this' and `out' cannot be used altogether"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1584
+#, fuzzy
+msgid "A parameter cannot have specified more than one modifier"
+msgstr ""
+"Um parâmetro de árvore de expressão não pode usar modificadores \"ref\" ou "
+"\"out\""
+
+#: mcs/mcs/cs-parser.jay:1627
+#, fuzzy
+msgid "Cannot specify a default value for a parameter array"
+msgstr ""
+"Não foi possível especificar o atributo \"DefaultMember\" no tipo contendo "
+"um indexador"
+
+#: mcs/mcs/cs-parser.jay:1643
+#, fuzzy
+msgid "The `params' modifier is not allowed in current context"
+msgstr "O nome \"{0}\" não existe no contexto atual"
+
+#: mcs/mcs/cs-parser.jay:1649
+msgid "The parameter modifiers `this' and `params' cannot be used altogether"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1651
+#, fuzzy
+msgid "The params parameter cannot be declared as ref or out"
+msgstr "O tipo \"{0}\" não pode ser declarado const"
+
+#: mcs/mcs/cs-parser.jay:1664
+#, fuzzy
+msgid "__arglist is not valid in this context"
+msgstr "Uso do null é inválido neste contexto"
+
+#: mcs/mcs/cs-parser.jay:1683
+#, fuzzy, csharp-format
+msgid "`{0}': property or indexer cannot have void type"
+msgstr ""
+"A propriedade ou o indexador somente leitura \"{0}\" não pôde ser atribuído"
+
+#: mcs/mcs/cs-parser.jay:1724
+#, csharp-format
+msgid "`{0}': indexer return type cannot be `void'"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1727
+msgid "Indexers must have at least one parameter"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1760
+#, fuzzy, csharp-format
+msgid "`{0}': property or indexer must have at least one accessor"
+msgstr "\"{0}\": propriedades abstratas não podem ter acessores privados"
+
+#: mcs/mcs/cs-parser.jay:1763
+msgid "Semicolon after method or accessor block is not valid"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1765
+#, fuzzy
+msgid "A get or set accessor expected"
+msgstr "Um valor constante é esperado"
+
+#: mcs/mcs/cs-parser.jay:1778 mcs/mcs/cs-parser.jay:1821
+msgid "Property accessor already defined"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1931 mcs/mcs/cs-parser.jay:1935
+#, fuzzy
+msgid "Interfaces cannot contain fields or constants"
+msgstr "Structs não podem conter construtores explícitos sem parâmetros"
+
+#: mcs/mcs/cs-parser.jay:1943
+#, fuzzy
+msgid "Interfaces cannot contain operators"
+msgstr ""
+"\"{0}\": Classes estáticas não podem conter operadores definidos pelo usuário"
+
+#: mcs/mcs/cs-parser.jay:1947
+#, fuzzy
+msgid "Interfaces cannot contain contructors"
+msgstr "\"{0}\": Classes estáticas não podem conter um destrutor"
+
+#: mcs/mcs/cs-parser.jay:1951
+msgid ""
+"Interfaces cannot declare classes, structs, interfaces, delegates, or "
+"enumerations"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:1992
+#, fuzzy
+msgid "User-defined operators cannot return void"
+msgstr ""
+"Operador definido pelo usuário \"{0}\" deve ser declarado estático e público"
+
+#: mcs/mcs/cs-parser.jay:2020
+msgid "Overloadable binary operator expected"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2022
+#, fuzzy, csharp-format
+msgid "Overloaded unary operator `{0}' takes one parameter"
+msgstr "Sem sobrecarga para o método \"{0}\" aceitar os argumentos \"{1}\""
+
+#: mcs/mcs/cs-parser.jay:2027
+#, fuzzy, csharp-format
+msgid "Overloaded binary operator `{0}' takes two parameters"
+msgstr "Sem sobrecarga para o método \"{0}\" aceitar os argumentos \"{1}\""
+
+#: mcs/mcs/cs-parser.jay:2030
+msgid "Overloadable unary operator expected"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2177
+msgid "Class, struct, or interface method must have a return type"
+msgstr "Classes, structs ou métodos de interface devem ter um tipo de retorno"
+
+#: mcs/mcs/cs-parser.jay:2181
+#, fuzzy, csharp-format
+msgid "`{0}': static constructor cannot have an access modifier"
+msgstr "\"{0}\": propriedades abstratas não podem ter acessores privados"
+
+#: mcs/mcs/cs-parser.jay:2186
+#, fuzzy, csharp-format
+msgid ""
+"`{0}': static constructor cannot have an explicit `this' or `base' "
+"constructor call"
+msgstr "\"{0}\": Construtores de structs não podem chamar construtores da base"
+
+#: mcs/mcs/cs-parser.jay:2249
+msgid "Name of destructor must match name of class"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2251
+#, fuzzy
+msgid "Only class types can contain destructor"
+msgstr "\"{0}\": Classes estáticas não podem conter um destrutor"
+
+#: mcs/mcs/cs-parser.jay:2276
+#, fuzzy, csharp-format
+msgid ""
+"`{0}': An explicit interface implementation of an event must use property "
+"syntax"
+msgstr ""
+"\"{0}\": a implementação explicita da interface não pode fornecer o "
+"modificador de parâmetros"
+
+#: mcs/mcs/cs-parser.jay:2308
+msgid "Event in interface cannot have add or remove accessors"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2377
+#, fuzzy, csharp-format
+msgid "`{0}': event in interface cannot have an initializer"
+msgstr "\"{0}\": evento abstrato não pode ter um inicializador"
+
+#: mcs/mcs/cs-parser.jay:2382
+#, csharp-format
+msgid "`{0}': abstract event cannot have an initializer"
+msgstr "\"{0}\": evento abstrato não pode ter um inicializador"
+
+#: mcs/mcs/cs-parser.jay:2397 mcs/mcs/cs-parser.jay:2402
+#, fuzzy, csharp-format
+msgid "`{0}': event property must have both add and remove accessors"
+msgstr "\"{0}\": propriedades abstratas não podem ter acessores privados"
+
+#: mcs/mcs/cs-parser.jay:2407
+msgid "An add or remove accessor expected"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2416 mcs/mcs/cs-parser.jay:2444
+msgid "Modifiers cannot be placed on event accessor declarations"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2471
+msgid "An add or remove accessor must have a body"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:2493
+#, fuzzy
+msgid "Enums cannot have type parameters"
+msgstr "Iteradores não podem ter parâmetros ref ou out"
+
+#: mcs/mcs/cs-parser.jay:2824
+msgid "Type parameter declaration must be an identifier not a type"
+msgstr ""
+"A declaração de um tipo parâmetro deve ser um identificador e não um tipo"
+
+#: mcs/mcs/cs-parser.jay:2875
+msgid "Invalid parameter type `void'"
+msgstr "Tipo de parâmetro inválido \"void\""
+
+#: mcs/mcs/cs-parser.jay:2940
+#, fuzzy, csharp-format
+msgid "Invalid base type `{0}'"
+msgstr "Tipo de parâmetro inválido \"void\""
+
+#: mcs/mcs/cs-parser.jay:3189
+msgid "An element initializer cannot be empty"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:3227
+#, fuzzy, csharp-format
+msgid "Named argument `{0}' specified multiple times"
+msgstr "Arquivo de código fonte \"{0}\" especificado múltiplas vezes"
+
+#: mcs/mcs/cs-parser.jay:3236 mcs/mcs/cs-parser.jay:3241
+#, fuzzy
+msgid "An argument is missing"
+msgstr "Argumento \"#{0}\" não encontrou o modificador \"{1}\""
+
+#: mcs/mcs/cs-parser.jay:3410
+msgid "Array creation must have array size or array initializer"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:3423
+msgid "Invalid rank specifier, expecting `,' or `]'"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:3503
+msgid ""
+"Invalid anonymous type member declarator. Anonymous type members must be a "
+"member assignment, simple name or member access expression"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:4027
+msgid "All lambda parameters must be typed either explicitly or implicitly"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:4213
+#, csharp-format
+msgid "Duplicate `{0}' modifier"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:4217
+msgid "More than one protection modifier specified"
+msgstr "Mais de um modificador de proteção especificado"
+
+#: mcs/mcs/cs-parser.jay:4231
+#, fuzzy
+msgid "Keyword `new' is not allowed on namespace elements"
+msgstr "Palavra chave \"new\" não é permitida em elementos do namespace"
+
+#: mcs/mcs/cs-parser.jay:4343
+#, fuzzy, csharp-format
+msgid "A constraint clause has already been specified for type parameter `{0}'"
+msgstr ""
+"Um tipo aninhado não pode ser especificado através de um tipo parâmetro \"{0}"
+"\""
+
+#: mcs/mcs/cs-parser.jay:4373
+#, fuzzy
+msgid "The `new()' constraint must be the last constraint specified"
+msgstr "A restrição new() deve ser a última restrição especificada"
+
+#: mcs/mcs/cs-parser.jay:4379
+msgid ""
+"The `class' or `struct' constraint must be the first constraint specified"
+msgstr ""
+"As restrições \"class\" ou \"struct\" devem ser as primeiras restrições "
+"especificadas"
+
+#: mcs/mcs/cs-parser.jay:4383
+msgid "The `new()' constraint cannot be used with the `struct' constraint"
+msgstr ""
+"A restrição \"new()\" não pode ser utilizada com a restrição \"struct\""
+
+#: mcs/mcs/cs-parser.jay:4397
+#, fuzzy, csharp-format
+msgid "Invalid constraint type `{0}'"
+msgstr "Símbolo de definição condicional \"{0}\" inválido"
+
+#: mcs/mcs/cs-parser.jay:4579 mcs/mcs/cs-parser.jay:4584
+msgid "An embedded statement may not be a declaration or labeled statement"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:4751
+msgid ""
+"Syntax error, bad array declarator. To declare a managed array the rank "
+"specifier precedes the variable's identifier. To declare a fixed size buffer "
+"field, use the fixed keyword before the field type"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:4831
+msgid "A stackalloc expression requires [] after type"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:5113
+msgid "Type and identifier are both required in a foreach statement"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:5205 mcs/mcs/cs-parser.jay:5221
+#, fuzzy
+msgid "; expected"
+msgstr "Nome do método esperado"
+
+#: mcs/mcs/cs-parser.jay:5207
+msgid "Expression expected after yield return"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:5254
+msgid "Expected catch or finally"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:5273
+msgid "Try statement already has an empty catch block"
+msgstr "A declaração do try já tem um bloco catch vazio"
+
+#: mcs/mcs/cs-parser.jay:5318
+msgid ""
+"A type that derives from `System.Exception', `object', or `string' expected"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:5426
+msgid ""
+"You must provide an initializer in a fixed or using statement declaration"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:6014
+msgid "Expecting `;'"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:6022
+#, fuzzy, csharp-format
+msgid "The parameter modifier `{0}' is not valid in this context"
+msgstr "Código de página \"{0}\" é inválido ou não está instalado"
+
+#: mcs/mcs/cs-parser.jay:6028
+#, fuzzy, csharp-format
+msgid "Duplicate parameter modifier `{0}'"
+msgstr "Tipo de parâmetro duplicado \"{0}\""
+
+#: mcs/mcs/cs-parser.jay:6034
+#, fuzzy
+msgid "Type expected"
+msgstr "Nome do método esperado"
+
+#: mcs/mcs/cs-parser.jay:6039
+msgid "Unsafe code requires the `unsafe' command line option to be specified"
+msgstr ""
+"Código inseguro requer a opção de linha de comando \"unsafe\" para ser "
+"especificada"
+
+#: mcs/mcs/cs-parser.jay:6049
+msgid "Named arguments must appear after the positional arguments"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:6140
+msgid "Syntax error, "
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:6194
+#, fuzzy
+msgid "Parsing error"
+msgstr "Erro na Análise de Detecção"
+
+#: mcs/mcs/cs-parser.jay:6200
+msgid "Internal compiler error during parsing"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:6211
+#, csharp-format
+msgid "{0}: `{1}' is a keyword"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:6338
+#, fuzzy, csharp-format
+msgid "Identifier expected, `{0}' is a keyword"
+msgstr "Identificador esperado: {0}"
+
+#: mcs/mcs/cs-parser.jay:6352
+#, csharp-format
+msgid "{1} `{0}'"
+msgstr ""
+
+#: mcs/mcs/cs-parser.jay:6354
+#, csharp-format
+msgid "{2} `{0}', expecting {1}"
+msgstr ""
+
+#: mcs/mcs/cs-tokenizer.cs:760
+msgid ""
+"The `partial' modifier can be used only immediately before `class', "
+"`struct', `interface', or `void' keyword"
+msgstr ""
+"O modificador \"parcial\" pode ser utilizado somente imediatamente antesdas "
+"palavras chave \"class\", \"struct\", \"interface\" ou \"void\""
+
+#: mcs/mcs/cs-tokenizer.cs:1395 mcs/mcs/cs-tokenizer.cs:1462
+msgid "Invalid number"
+msgstr "Número inválido"
+
+#: mcs/mcs/cs-tokenizer.cs:1647
+#, csharp-format
+msgid "Unrecognized escape sequence `\\{0}'"
+msgstr "Sequência de escape não reconhecida \"\\{0}\""
+
+#: mcs/mcs/cs-tokenizer.cs:1666
+msgid "Unrecognized escape sequence"
+msgstr "Sequência de escape não reconhecida"
+
+#: mcs/mcs/cs-tokenizer.cs:1887
+msgid "Missing identifier to pre-processor directive"
+msgstr "Identificador faltando para a diretiva do pré-processador"
+
+#: mcs/mcs/cs-tokenizer.cs:1897 mcs/mcs/cs-tokenizer.cs:1901
+#, csharp-format
+msgid "Identifier expected: {0}"
+msgstr "Identificador esperado: {0}"
+
+#: mcs/mcs/cs-tokenizer.cs:2373
+#, fuzzy
+msgid "Integral constant is too large"
+msgstr "Constante numérica muito longa"
+
+#: mcs/mcs/cs-tokenizer.cs:2378
+msgid "Invalid preprocessor directive"
+msgstr "Diretiva de pré-processador inválida"
+
+#: mcs/mcs/cs-tokenizer.cs:2385
+#, csharp-format
+msgid "Unexpected processor directive ({0})"
+msgstr "Diretiva de processador inesperada ({0})"
+
+#: mcs/mcs/cs-tokenizer.cs:2391
+msgid ""
+"Cannot define or undefine preprocessor symbols after first token in file"
+msgstr ""
+"Não foi possível definir ou indefinir símbolos depois do primeiro token no "
+"arquivo"
+
+#: mcs/mcs/cs-tokenizer.cs:2397
+msgid ""
+"Preprocessor directives must appear as the first non-whitespace character on "
+"a line"
+msgstr ""
+"Diretivas de pré-processador devem aparecer como o primeiro caractere não-"
+"branco na linha"
+
+#: mcs/mcs/cs-tokenizer.cs:2402
+msgid "Single-line comment or end-of-line expected"
+msgstr "Comentário de linha única ou fim-de-linha esperado"
+
+#: mcs/mcs/cs-tokenizer.cs:2435 mcs/mcs/cs-tokenizer.cs:3431
+msgid "Expected `#endif' directive"
+msgstr "Esperada diretiva \"#endif\""
+
+#: mcs/mcs/cs-tokenizer.cs:2468 mcs/mcs/cs-tokenizer.cs:2489
+#: mcs/mcs/cs-tokenizer.cs:2520 mcs/mcs/cs-tokenizer.cs:3429
+msgid "#endregion directive expected"
+msgstr "diretiva #endregion esperada"
+
+#: mcs/mcs/cs-tokenizer.cs:2567
+msgid "Wrong preprocessor directive"
+msgstr "Diretiva do pré-processador incorreta"
+
+#: mcs/mcs/cs-tokenizer.cs:2579
+#, csharp-format
+msgid "#error: '{0}'"
+msgstr "#erro: \"{0}\""
+
+#: mcs/mcs/cs-tokenizer.cs:2598
+msgid "The line number specified for #line directive is missing or invalid"
+msgstr ""
+"O número da linha especificada para a diretiva #line está faltando ou está "
+"inválida"
+
+#: mcs/mcs/cs-tokenizer.cs:2625 mcs/mcs/cs-tokenizer.cs:3243
+msgid "Newline in constant"
+msgstr "Quebra de linha em constante"
+
+#: mcs/mcs/cs-tokenizer.cs:2636
+msgid "Unterminated string literal"
+msgstr "Literal de string não terminada"
+
+#: mcs/mcs/cs-tokenizer.cs:2705
+msgid "Identifier too long (limit is 512 chars)"
+msgstr "Identificador muito longo (o limite é 512 caracteres)"
+
+#: mcs/mcs/cs-tokenizer.cs:3092
+msgid "End-of-file found, '*/' expected"
+msgstr "Fim de arquivo encontrado, \"*/\" esperado"
+
+#: mcs/mcs/cs-tokenizer.cs:3201
+msgid "Keyword, identifier, or string expected after verbatim specifier: @"
+msgstr ""
+"Palavra-chave, identificador ou string esperado depois do especificador "
+"verbatim: @"
+
+#: mcs/mcs/cs-tokenizer.cs:3217
+#, fuzzy, csharp-format
+msgid "Unexpected character `{0}'"
+msgstr "Experado \"{0}\""
+
+#: mcs/mcs/cs-tokenizer.cs:3238
+msgid "Empty character literal"
+msgstr ""
+
+#: mcs/mcs/cs-tokenizer.cs:3258
+msgid "Too many characters in character literal"
+msgstr ""
+
+#: mcs/mcs/cfold.cs:84
+msgid "The operation overflows at compile time in checked mode"
+msgstr "A operação estoura em tempo de compilação no modo marcado"
+
+#: mcs/mcs/cfold.cs:764 mcs/mcs/cfold.cs:849
+msgid "Division by constant zero"
+msgstr "Divisão pela constante zero"
+
+#: mcs/mcs/class.cs:371
+#, csharp-format
+msgid ""
+"Partial declarations of `{0}' must be all classes, all structs or all "
+"interfaces"
+msgstr ""
+"Declarações parciais de \"{0}\" devem ser todas as classes, todas structs ou "
+"todas as interfaces"
+
+#: mcs/mcs/class.cs:380
+#, csharp-format
+msgid "Partial declarations of `{0}' have conflicting accessibility modifiers"
+msgstr ""
+"Declarações parciais de \"{0}\" possuim modificadores de acessibilidade "
+"conflitantes"
+
+#: mcs/mcs/class.cs:433
+#, csharp-format
+msgid ""
+"`{0}': explicit interface declaration can only be declared in a class or "
+"struct"
+msgstr ""
+"\"{0}\": declaração explícita de interface pode apenas ser declarada em uma "
+"classe ou struct"
+
+#: mcs/mcs/class.cs:470 mcs/mcs/membercache.cs:1327
+#, csharp-format
+msgid ""
+"A member `{0}' is already defined. Rename this member or use different "
+"parameter types"
+msgstr ""
+"Um membro \"{0}\" já está definido. Renomeie esse membro ou use tipos de "
+"parâmetros distintos"
+
+#: mcs/mcs/class.cs:578
+msgid ""
+"Cannot specify the `DefaultMember' attribute on type containing an indexer"
+msgstr ""
+"Não foi possível especificar o atributo \"DefaultMember\" no tipo contendo "
+"um indexador"
+
+#: mcs/mcs/class.cs:584
+msgid "The RequiredAttribute attribute is not permitted on C# types"
+msgstr "O atributo RequiredAttribute não é permitido em tipos de C#"
+
+#: mcs/mcs/class.cs:855
+#, fuzzy, csharp-format
+msgid "Class `{0}' cannot derive from the dynamic type"
+msgstr "\"{0}\": não foi possível declarar variáveis de tipo estático"
+
+#: mcs/mcs/class.cs:872
+#, csharp-format
+msgid "`{0}' is already listed in interface list"
+msgstr "\"{0}\" já está listado na lista de interfaces"
+
+#: mcs/mcs/class.cs:880
+#, csharp-format
+msgid ""
+"Inconsistent accessibility: base interface `{0}' is less accessible than "
+"interface `{1}'"
+msgstr ""
+"Acessibilidade inconsistente: interface base \"{0}\" é menos acessível que a "
+"interface \"{1}\""
+
+#: mcs/mcs/class.cs:886
+#, csharp-format
+msgid "Type `{0}' in interface list is not an interface"
+msgstr "Tipo \"{0}\" na lista de interfaces não é uma interface"
+
+#: mcs/mcs/class.cs:888
+#, csharp-format
+msgid "`{0}': Classes cannot have multiple base classes (`{1}' and `{2}')"
+msgstr ""
+"\"{0}\": Classes não podem ter múltiplas classes base (\"{1}\" e \"{2}\")"
+
+#: mcs/mcs/class.cs:891
+#, csharp-format
+msgid "`{0}': Base class `{1}' must be specified as first"
+msgstr "\"{0}\": Classe base \"{1}\" deve ser especificada como primeira"
+
+#: mcs/mcs/class.cs:915
+#, csharp-format
+msgid "Partial declarations of `{0}' must not specify different base classes"
+msgstr ""
+"Declarações parciais de \"{0}\" não devem especificar diferentes classes base"
+
+#: mcs/mcs/class.cs:996
+#, csharp-format
+msgid ""
+"The operator `{0}' requires a matching operator `{1}' to also be defined"
+msgstr ""
+"O operador `{0}' necessita um operador correspondente \"{1}\" para também "
+"ser definido"
+
+#: mcs/mcs/class.cs:1021
+#, csharp-format
+msgid "`{0}' clashes with a predefined namespace"
+msgstr ""
+
+#: mcs/mcs/class.cs:1150
+#, csharp-format
+msgid ""
+"Inherited interface `{0}' causes a cycle in the interface hierarchy of `{1}'"
+msgstr ""
+"Interface herdada \"{0}\" causa um ciclo na hierarquia de interfaces de \"{1}"
+"\""
+
+#: mcs/mcs/class.cs:1156
+#, csharp-format
+msgid "Circular base class dependency involving `{0}' and `{1}'"
+msgstr "Dependência circular na classe base envolvendo \"{0}\" e \"{1}\""
+
+#: mcs/mcs/class.cs:1183
+#, csharp-format
+msgid ""
+"`{0}' cannot implement both `{1}' and `{2}' because they may unify for some "
+"type parameter substitutions"
+msgstr ""
+"\"{0}\" não pode implementar ambos \"{1}\" e \"{2}\" por que estes devem "
+"unificar para alguma substituição de tipo de parâmetro"
+
+#: mcs/mcs/class.cs:1329
+#, csharp-format
+msgid ""
+"Partial declarations of `{0}' must have the same type parameter names in the "
+"same order"
+msgstr ""
+"Declarações parciais de \"{0}\" devem ter o mesmo nome de tipos de "
+"parâmetros na mesma ordem"
+
+#: mcs/mcs/class.cs:1336
+#, fuzzy, csharp-format
+msgid ""
+"Partial declarations of `{0}' must have the same type parameter variance "
+"modifiers"
+msgstr ""
+"Declarações parciais de \"{0}\" devem ter o mesmo nome de tipos de "
+"parâmetros na mesma ordem"
+
+#: mcs/mcs/class.cs:1361
+#, csharp-format
+msgid ""
+"Partial declarations of `{0}' have inconsistent constraints for type "
+"parameter `{1}'"
+msgstr ""
+"Declarações parciais \"{0}\" possuem restrições inconsistentes para o tipo "
+"de parâmetro \"{1}\""
+
+#: mcs/mcs/class.cs:1500
+#, fuzzy, csharp-format
+msgid "`{0}': cannot implement a dynamic interface `{1}'"
+msgstr "\"{0}\": tipo contendo não implementa interface \"{1}\""
+
+#: mcs/mcs/class.cs:1618
+msgid ""
+"Two indexers have different names; the IndexerName attribute must be used "
+"with the same name on every indexer within a type"
+msgstr ""
+"Dois indexadores tem nomes diferentes; o atributo IndexerName deve ser "
+"utilizado com o mesmo nome em todo indexador de um tipo"
+
+#: mcs/mcs/class.cs:1952
+#, csharp-format
+msgid "A static member `{0}' cannot be marked as override, virtual or abstract"
+msgstr ""
+"Um membro estático \"{0}\" não pode ser marcado como sobrescrito, virtual ou "
+"abstrato"
+
+#: mcs/mcs/class.cs:1959
+#, csharp-format
+msgid "A member `{0}' marked as override cannot be marked as new or virtual"
+msgstr ""
+"Um membro \"{0}\" marcado como sobrescrito não pode ser marcado como novo ou "
+"virtual"
+
+#: mcs/mcs/class.cs:1971
+#, csharp-format
+msgid "`{0}' cannot be both extern and abstract"
+msgstr "\"{0}\" não pode ser externo e abstrato ao mesmo tempo"
+
+#: mcs/mcs/class.cs:1976
+#, csharp-format
+msgid "`{0}' cannot be both abstract and sealed"
+msgstr "\"{0}\" não pode ser abstrato e selado"
+
+#: mcs/mcs/class.cs:1981
+#, csharp-format
+msgid "The abstract method `{0}' cannot be marked virtual"
+msgstr "O método abstrato \"{0}\" não pode ser marcado como virtual"
+
+#: mcs/mcs/class.cs:1987
+#, csharp-format
+msgid "`{0}' is abstract but it is declared in the non-abstract class `{1}'"
+msgstr "\"{0}\" é abstrato mas está declarado na classe não-abstrata \"{1}\""
+
+#: mcs/mcs/class.cs:1995
+#, csharp-format
+msgid "`{0}': virtual or abstract members cannot be private"
+msgstr "\"{0}\": membros virtuais ou abstratos não podem ser privados"
+
+#: mcs/mcs/class.cs:2002
+#, csharp-format
+msgid "`{0}' cannot be sealed because it is not an override"
+msgstr "\"{0}\" não pode ser selado por que não é um sobrescrito"
+
+#: mcs/mcs/class.cs:2049
+#, csharp-format
+msgid "`{0}': containing type does not implement interface `{1}'"
+msgstr "\"{0}\": tipo contendo não implementa interface \"{1}\""
+
+#: mcs/mcs/class.cs:2225
+#, csharp-format
+msgid "Type parameter `{0}' has same name as containing type, or method"
+msgstr ""
+"Parâmetro de tipo \"{0}\" tem o mesmo nome que o tipo contendo, ou método"
+
+#: mcs/mcs/class.cs:2233
+#, csharp-format
+msgid "`{0}': member names cannot be the same as their enclosing type"
+msgstr ""
+"\"{0}\": nomes de membros não podem ser os mesmos que seus tipos de "
+"fechamento"
+
+#: mcs/mcs/class.cs:2399
+msgid ""
+"The class System.Object cannot have a base class or implement an interface."
+msgstr ""
+"A classe System.Object não pode ter uma classe base ou implementar uma "
+"interface."
+
+#: mcs/mcs/class.cs:2407
+#, csharp-format
+msgid "Attribute `{0}' is only valid on classes derived from System.Attribute"
+msgstr ""
+"Atributo \"{0}\" é válido somente em classes derivadas de System.Attribute"
+
+#: mcs/mcs/class.cs:2412
+msgid ""
+"Attribute `System.Diagnostics.ConditionalAttribute' is only valid on methods "
+"or attribute classes"
+msgstr ""
+"Atributo \"System.Diagnostics.ConditionalAttribute\" é somente válido em "
+"métodos ou classes de atributos"
+
+#: mcs/mcs/class.cs:2450
+#, csharp-format
+msgid "`{0}': Static classes cannot contain user-defined operators"
+msgstr ""
+"\"{0}\": Classes estáticas não podem conter operadores definidos pelo usuário"
+
+#: mcs/mcs/class.cs:2455
+#, csharp-format
+msgid "`{0}': Static classes cannot contain destructor"
+msgstr "\"{0}\": Classes estáticas não podem conter um destrutor"
+
+#: mcs/mcs/class.cs:2460
+#, csharp-format
+msgid "`{0}': cannot declare indexers in a static class"
+msgstr "\"{0}\": não é possível declarar indexadores como uma classe estática"
+
+#: mcs/mcs/class.cs:2468
+#, csharp-format
+msgid "`{0}': Static classes cannot have instance constructors"
+msgstr "\"{0}\": Classes estáticas não podem ter construtores de instâncias"
+
+#: mcs/mcs/class.cs:2474
+#, csharp-format
+msgid "`{0}': Extension methods must be declared static"
+msgstr "\"{0}\": Métodos de extensão devem ser declarados como estáticos"
+
+#: mcs/mcs/class.cs:2478
+#, csharp-format
+msgid "`{0}': cannot declare instance members in a static class"
+msgstr ""
+"\"{0}\": não foi possível declarar membros de instâncias em uma classe "
+"estática"
+
+#: mcs/mcs/class.cs:2487
+#, csharp-format
+msgid "`{0}': an abstract class cannot be sealed or static"
+msgstr "\"{0}\": uma classe abstrata não pode ser selada ou estática"
+
+#: mcs/mcs/class.cs:2491
+#, csharp-format
+msgid "`{0}': a class cannot be both static and sealed"
+msgstr "\"{0}\": uma classe não pode ser estática e selada ao mesmo tempo"
+
+#: mcs/mcs/class.cs:2521
+#, fuzzy, csharp-format
+msgid "`{0}': Cannot derive from type parameter `{1}'"
+msgstr "\"{0}\": Não foi possível derivar da classe estática \"{1}\""
+
+#: mcs/mcs/class.cs:2525
+#, csharp-format
+msgid ""
+"A generic type cannot derive from `{0}' because it is an attribute class"
+msgstr ""
+"Um tipo genérico não pode derivar de \"{0}\" por que é uma classe de atributo"
+
+#: mcs/mcs/class.cs:2529
+#, csharp-format
+msgid "`{0}': Cannot derive from static class `{1}'"
+msgstr "\"{0}\": Não foi possível derivar da classe estática \"{1}\""
+
+#: mcs/mcs/class.cs:2533
+#, fuzzy, csharp-format
+msgid "`{0}': cannot derive from sealed type `{1}'"
+msgstr "\"{0}\": não foi possível derivar da classe selada \"{1}\""
+
+#: mcs/mcs/class.cs:2536
+#, csharp-format
+msgid ""
+"Static class `{0}' cannot derive from type `{1}'. Static classes must derive "
+"from object"
+msgstr ""
+"Classe estática \"{0}\" não pode derivar do tipo \"{1}\". Classes estáticas "
+"devem derivar de objetos"
+
+#: mcs/mcs/class.cs:2543
+#, csharp-format
+msgid "`{0}' cannot derive from special class `{1}'"
+msgstr "\"{0}\" não foi possível derivar da classe especial \"{1}\""
+
+#: mcs/mcs/class.cs:2551
+#, csharp-format
+msgid ""
+"Inconsistent accessibility: base class `{0}' is less accessible than class `"
+"{1}'"
+msgstr ""
+"Acessibilidade inconsistente: classe base \"{0}\" é menos acessível que a "
+"classe \"{1}\""
+
+#: mcs/mcs/class.cs:2559
+#, csharp-format
+msgid "Static class `{0}' cannot implement interfaces"
+msgstr "Classe estática \"{0}\" não pode implementar interfaces"
+
+#: mcs/mcs/class.cs:2678 mcs/mcs/class.cs:2689
+#, csharp-format
+msgid "Struct member `{0}' of type `{1}' causes a cycle in the struct layout"
+msgstr ""
+"Membro da estrutura \"{0}\" do tipo \"{1}\" causou um ciclo na disposição de "
+"structs"
+
+#: mcs/mcs/class.cs:2779
+#, csharp-format
+msgid "`{0}': Structs cannot have instance field initializers"
+msgstr "\"{0}\": Structs não podem ter inicializadores de campos de instância"
+
+#: mcs/mcs/class.cs:2960
+#, fuzzy, csharp-format
+msgid "Do not override `{0}'. Use destructor syntax instead"
+msgstr ""
+"Não use \"{0}\" diretamente. Ao invés disso, use o modificador de parâmetro "
+"\"this\""
+
+#: mcs/mcs/class.cs:2963
+#, csharp-format
+msgid "`{0}' is marked as an override but no suitable {1} found to override"
+msgstr ""
+"\"{0}\" está marcado como uma sobrescrita mas nenhuma {1} foi encontrada "
+"para substituir"
+
+#: mcs/mcs/class.cs:2969
+#, csharp-format
+msgid "`{0}': cannot override because `{1}' is not an event"
+msgstr "\"{0}\": não foi possível sobrescrever pois \"{1}\" não é um evento"
+
+#: mcs/mcs/class.cs:2972
+#, csharp-format
+msgid "`{0}': cannot override because `{1}' is not a property"
+msgstr ""
+"\"{0}\": não foi possível sobrescrever pois \"{1}\" não é uma propriedade"
+
+#: mcs/mcs/class.cs:2975
+#, csharp-format
+msgid "`{0}': cannot override because `{1}' is not a method"
+msgstr "\"{0}\": não foi possível sobrescrever pois \"{1}\" não é um método"
+
+#: mcs/mcs/class.cs:3031 mcs/mcs/field.cs:187
+#, csharp-format
+msgid "`{0}' hides inherited abstract member `{1}'"
+msgstr "\"{0}\" esconde membro abstrato herdado \"{1}\""
+
+#: mcs/mcs/class.cs:3055
+#, csharp-format
+msgid ""
+"`{0}': cannot override inherited member `{1}' because it is not marked "
+"virtual, abstract or override"
+msgstr ""
+"\"{0}\": não foi possível sobrescrever membro herdado \"{1}\" porque este "
+"não está marcado como virtual, abstrato ou substituto"
+
+#: mcs/mcs/class.cs:3063
+#, csharp-format
+msgid "`{0}': cannot override inherited member `{1}' because it is sealed"
+msgstr ""
+"\"{0}\": não foi possível sobrescrever membro herdado \"{1}\" por que está "
+"selado"
+
+#: mcs/mcs/class.cs:3072
+#, csharp-format
+msgid "`{0}': type must be `{1}' to match overridden member `{2}'"
+msgstr ""
+"\"{0}\": o tipo deve ser \"{1}\" para corresponder com o membro da "
+"substituição \"{2}\""
+
+#: mcs/mcs/class.cs:3075
+#, csharp-format
+msgid "`{0}': return type must be `{1}' to match overridden member `{2}'"
+msgstr ""
+"\"{0}\": tipo de retorno deve ser \"{1}\" para corresponder com o membro da "
+"substituição \"{2}\""
+
+#: mcs/mcs/class.cs:3143
+#, csharp-format
+msgid "A partial method `{0}' cannot explicitly implement an interface"
+msgstr ""
+"Um método parcial \"{0}\" não pode implementar uma interface explicitamente"
+
+#: mcs/mcs/class.cs:3151
+#, fuzzy, csharp-format
+msgid "The type `{0}' in explicit interface declaration is not an interface"
+msgstr "\"{0}\" na declaração explícita da interface não é uma interface"
+
+#: mcs/mcs/class.cs:3182
+#, csharp-format
+msgid ""
+"Inconsistent accessibility: parameter type `{0}' is less accessible than "
+"indexer `{1}'"
+msgstr ""
+"Acessibilidade inconsistente: tipo de parâmetro \"{0}\" é menos acessível "
+"que o indexador \"{1}\""
+
+#: mcs/mcs/class.cs:3186
+#, csharp-format
+msgid ""
+"Inconsistent accessibility: parameter type `{0}' is less accessible than "
+"operator `{1}'"
+msgstr ""
+"Acessibilidade inconsistente: tipo de parâmetro \"{0}\" é menos acessível "
+"que o operador \"{1}\""
+
+#: mcs/mcs/class.cs:3190
+#, csharp-format
+msgid ""
+"Inconsistent accessibility: parameter type `{0}' is less accessible than "
+"method `{1}'"
+msgstr ""
+"Acessibilidade inconsistente: tipo de parâmetro \"{0}\" é menos acessível "
+"que o método \"{1}\""
+
+#: mcs/mcs/class.cs:3204
+#, csharp-format
+msgid ""
+"Constructor `{0}' is marked `external' but has no external implementation "
+"specified"
+msgstr ""
+
+#: mcs/mcs/class.cs:3207
+#, csharp-format
+msgid ""
+"`{0}' is marked as an external but has no DllImport attribute. Consider "
+"adding a DllImport attribute to specify the external implementation"
+msgstr ""
+"\"{0}\" está marcado com externo mas não possui atributo DllImport. "
+"Considere adicionar um atributo DllImport para especificar a implementação "
+"externa"
+
+#: mcs/mcs/class.cs:3243
+#, csharp-format
+msgid ""
+"`{0}': cannot change access modifiers when overriding `{1}' inherited member "
+"`{2}'"
+msgstr ""
+"\"{0}\": não foi possível alterar modificadores de acesso ao substituir \"{1}"
+"\" membro herdado \"{2}\""
+
+#: mcs/mcs/class.cs:3252
+#, fuzzy, csharp-format
+msgid "`{0}': static types cannot be used as return types"
+msgstr "\"{0}\": tipos estáticos não podem ser utilizados como parâmetros"
+
+#: mcs/mcs/class.cs:3377
+#, csharp-format
+msgid "New virtual member `{0}' is declared in a sealed class `{1}'"
+msgstr "Novo membro virtual \"{0}\" é declarado em uma classe selada \"{1}\""
+
+#: mcs/mcs/class.cs:3392
+msgid "Inconsistent accessibility: property type `"
+msgstr "Acessibilidade inconsistente: tipo da propriedade \""
+
+#: mcs/mcs/class.cs:3397
+msgid "Inconsistent accessibility: indexer return type `"
+msgstr "Acessibilidade inconsistente: tipo de retorno do indexador \""
+
+#: mcs/mcs/class.cs:3403 mcs/mcs/class.cs:3408 mcs/mcs/delegate.cs:159
+msgid "Inconsistent accessibility: return type `"
+msgstr "Acessibilidade inconsistente: tipo de retorno \""
+
+#: mcs/mcs/class.cs:3413
+msgid "Inconsistent accessibility: field type `"
+msgstr "Acessibilidade inconsistente: tipo de campo \""
+
+#: mcs/mcs/class.cs:3426
+#, csharp-format
+msgid "Field or property cannot be of type `{0}'"
+msgstr "Campo ou propriedade não podem ser do tipo \"{0}\""
+
+#: mcs/mcs/const.cs:103
+#, fuzzy, csharp-format
+msgid "Type parameter `{0}' cannot be declared const"
+msgstr "O tipo \"{0}\" não pode ser declarado const"
+
+#: mcs/mcs/const.cs:106
+#, csharp-format
+msgid "The type `{0}' cannot be declared const"
+msgstr "O tipo \"{0}\" não pode ser declarado const"
+
+#: mcs/mcs/const.cs:181
+#, csharp-format
+msgid ""
+"The evaluation of the constant value for `{0}' involves a circular definition"
+msgstr ""
+"O cálculo do valor constante para \"{0}\" involve uma definição circular"
+
+#: mcs/mcs/constant.cs:68 mcs/mcs/constant.cs:319
+#, csharp-format
+msgid "Constant value `{0}' cannot be converted to a `{1}'"
+msgstr "Valor constante \"{0}\" não pode ser convertido para um \"{1}\""
+
+#: mcs/mcs/constant.cs:187
+#, csharp-format
+msgid ""
+"Constant value `{0}' cannot be converted to a `{1}' (use `unchecked' syntax "
+"to override)"
+msgstr ""
+"Valor constante \"{0}\" não pode ser convertido para um \"{1}\" (use a "
+"sintaxe \"unchecked\" para sobrescrever)"
+
+#: mcs/mcs/convert.cs:1158
+#, csharp-format
+msgid ""
+"Ambiguous user defined operators `{0}' and `{1}' when converting from `{2}' "
+"to `{3}'"
+msgstr ""
+
+#: mcs/mcs/decl.cs:376
+#, csharp-format
+msgid "`{0}' cannot declare a body because it is marked extern"
+msgstr "\"{0}\" não pode declarar um corpo porque está marcada como externa"
+
+#: mcs/mcs/decl.cs:382
+#, csharp-format
+msgid "`{0}' cannot declare a body because it is marked abstract"
+msgstr "\"{0}\" nao pode declarar um corpo porque está marcada como abstrato"
+
+#: mcs/mcs/decl.cs:395
+#, csharp-format
+msgid ""
+"`{0}' must have a body because it is not marked abstract or extern. The "
+"property can be automatically implemented when you define both accessors"
+msgstr ""
+"\"{0}\" deve ter um corpo porque não está marcado como abstrato ou externo. "
+"A propriedade pode ser automaticamente implementada quando você define ambos "
+"os acessores"
+
+#: mcs/mcs/decl.cs:401
+#, csharp-format
+msgid ""
+"`{0}' must have a body because it is not marked abstract, extern, or partial"
+msgstr ""
+"\"{0}\" deve ter um corpo porquê não está marcada como abstrato, externo ou "
+"parcial"
+
+#: mcs/mcs/decl.cs:416
+#, csharp-format
+msgid "`{0}': Structs cannot contain protected members"
+msgstr "\"{0}\": Structs não podem conter membros protegidos"
+
+#: mcs/mcs/decl.cs:422
+#, csharp-format
+msgid "`{0}': Static classes cannot contain protected members"
+msgstr "\"{0}\": Classes estáticas não podem conter membros protegidos"
+
+#: mcs/mcs/decl.cs:1295
+#, csharp-format
+msgid "The namespace `{0}' already contains a definition for `{1}'"
+msgstr "O namespace \"{0}\" já contém uma definição para \"{1}\""
+
+#: mcs/mcs/decl.cs:1299
+#, csharp-format
+msgid "Duplicate type parameter `{0}'"
+msgstr "Tipo de parâmetro duplicado \"{0}\""
+
+#: mcs/mcs/decl.cs:1302
+#, csharp-format
+msgid "The type `{0}' already contains a definition for `{1}'"
+msgstr "O tipo \"{0}\" já contém uma definição para \"{1}\""
+
+#: mcs/mcs/decl.cs:1352
+#, csharp-format
+msgid ""
+"Missing partial modifier on declaration of type `{0}'. Another partial "
+"declaration of this type exists"
+msgstr ""
+"Está faltando o modificador parcial na declaração do tipo \"{0}\". Outra "
+"declaração parcial deste tipo existe"
+
+#: mcs/mcs/decl.cs:1441
+msgid "Variant type parameters can only be used with interfaces and delegates"
+msgstr ""
+
+#: mcs/mcs/decl.cs:1453
+#, csharp-format
+msgid "`{0}': A constraint references nonexistent type parameter `{1}'"
+msgstr "\"{0}\": Uma referência restritiva não existente no parâmetro \"{1}\""
+
+#: mcs/mcs/delegate.cs:141
+#, csharp-format
+msgid ""
+"Inconsistent accessibility: parameter type `{0}' is less accessible than "
+"delegate `{1}'"
+msgstr ""
+"Acessibilidade inconsiste: tipo de parâmetro \"{0}\" é menos acessível que o "
+"delegate \"{1}\""
+
+#: mcs/mcs/delegate.cs:487
+#, csharp-format
+msgid ""
+"Cannot create delegate from method `{0}' because it is a member of System."
+"Nullable<T> type"
+msgstr ""
+"Não foi possível criar delegate do método \"{0}\" porque este é um membro do "
+"tipo do System.Nullable<T>"
+
+#: mcs/mcs/delegate.cs:499
+#, csharp-format
+msgid ""
+"Extension method `{0}' of value type `{1}' cannot be used to create delegates"
+msgstr ""
+"Método de extensão \"{0}\" de tipo de valor \"{1}\" não pode ser utilizado "
+"para criar delegates"
+
+#: mcs/mcs/delegate.cs:514
+#, csharp-format
+msgid "Cannot create delegate from partial method declaration `{0}'"
+msgstr ""
+"Não foi possível criar delegate da declaração de método parcial \"{0}\""
+
+#: mcs/mcs/delegate.cs:517
+#, csharp-format
+msgid ""
+"Cannot create delegate with `{0}' because it has a Conditional attribute"
+msgstr ""
+"Não foi possível criar delegate com \"{0}\" porque este contém um atributo "
+"Conditional"
+
+#: mcs/mcs/delegate.cs:560
+#, csharp-format
+msgid ""
+"A method or delegate `{0} {1}' parameters and return type must be same as "
+"delegate `{2} {3}' parameters and return type"
+msgstr ""
+"Os parâmetros do método ou do delegate \"{0} {1}\" e os tipos de retorno "
+"devem ser os mesmos dos parâmetros do delegate \"{2} {3}\" e dos tipos de "
+"retorno"
+
+#: mcs/mcs/delegate.cs:567
+#, csharp-format
+msgid ""
+"A method or delegate `{0}' parameters do not match delegate `{1}' parameters"
+msgstr ""
+"Os parâmetros do método ou do delegate \"{0}\" não coincidem com os "
+"parâmetros do delegate \"{1}\""
+
+#: mcs/mcs/delegate.cs:572
+#, csharp-format
+msgid ""
+"A method or delegate `{0} {1}' return type does not match delegate `{2} {3}' "
+"return type"
+msgstr ""
+"Os tipos de retorno do método o do delegate \"{0} {1}\" não coincidem com o "
+"tipo de retorno do delegate \"{2} {3}\""
+
+#: mcs/mcs/delegate.cs:655
+msgid "Method name expected"
+msgstr "Nome do método esperado"
+
+#: mcs/mcs/doc.cs:914
+#, csharp-format
+msgid "Error generating XML documentation file `{0}' (`{1}')"
+msgstr "Erro ao gerar arquivo de documentação XML \"{0}\" (\"{1}\")"
+
+#: mcs/mcs/driver.cs:96 mcs/mcs/driver.cs:467 mcs/mcs/driver.cs:470
+msgid "Source file `"
+msgstr "Arquivo fonte \""
+
+#: mcs/mcs/driver.cs:123
+#, csharp-format
+msgid "Source file `{0}' could not be found"
+msgstr "Arquivo fonte \"{0}\" não pôde ser encontrado"
+
+#: mcs/mcs/driver.cs:129
+#, csharp-format
+msgid "Source file `{0}' is a binary file and not a text file"
+msgstr "Arquivo fonte \"{0}\" é um arquivo binário e não um arquivo texto"
+
+#: mcs/mcs/driver.cs:216
+msgid ""
+"Invalid target type for -target. Valid options are `exe', `winexe', "
+"`library' or `module'"
+msgstr ""
+"Tipo alvo inválido para -target. Opções válidas são \"exe\", \"winexe\", "
+"\"library\" ou \"module\""
+
+#: mcs/mcs/driver.cs:363
+msgid "Response file `"
+msgstr "Arquivo de resposta \""
+
+#: mcs/mcs/driver.cs:372
+msgid "Unable to open response file: "
+msgstr "Não foi possível abrir arquivo de resposta: "
+
+#: mcs/mcs/driver.cs:422 mcs/mcs/driver.cs:432
+msgid "No files to compile were specified"
+msgstr "Nenhum arquivo para compilar foi especificado"
+
+#: mcs/mcs/driver.cs:504
+msgid "Warning level must be in the range 0-4"
+msgstr "Nível de avisis deve estar no intervalo 0-4"
+
+#: mcs/mcs/driver.cs:538
+msgid "Compatibility: Use -main:CLASS instead of --main CLASS or -m CLASS"
+msgstr ""
+"Compatibilidade: Utilize -main:CLASSE ao invés de --main CLASSE ou -m CLASSE"
+
+#: mcs/mcs/driver.cs:547
+msgid "Compatibility: Use -unsafe instead of --unsafe"
+msgstr "Compatibilidade: Utilize -unsafe ao invés de --unsafe"
+
+#: mcs/mcs/driver.cs:558
+msgid "Compatibility: Use -d:SYMBOL instead of --define SYMBOL"
+msgstr "Compatibilidade: Utilize -d:SÍMBOLO ao invés de --define SÍMBOLO"
+
+#: mcs/mcs/driver.cs:572
+msgid "Compatibility: Use -out:FILE instead of --output FILE or -o FILE"
+msgstr ""
+"Compatibilidade: Utilize -out ARQUIVO ao invés de --output ARQUIVO ou -o "
+"ARQUIVO"
+
+#: mcs/mcs/driver.cs:581
+msgid "Compatibility: Use -checked instead of --checked"
+msgstr "Compatibilidade: Utilize -checked ao invés de --checked"
+
+#: mcs/mcs/driver.cs:591
+msgid "Compatibility: Use -linkres:VALUE instead of --linkres VALUE"
+msgstr "Compatibilidade: Utilize -linkres:VALOR ao invés de --linkres VALOR"
+
+#: mcs/mcs/driver.cs:594
+msgid "Missing argument to --linkres"
+msgstr "Argumento faltando para --linkres"
+
+#: mcs/mcs/driver.cs:603
+msgid "Compatibility: Use -res:VALUE instead of --res VALUE"
+msgstr "Compatibilidade: Utilize -res:VALOR ao invés de --res VALOR"
+
+#: mcs/mcs/driver.cs:606
+msgid "Missing argument to --resource"
+msgstr "Argumento faltando para --resource"
+
+#: mcs/mcs/driver.cs:614
+msgid "Compatibility: Use -target:KIND instead of --target KIND"
+msgstr "Compatibilidade: Utilize -target:KIND ao invés de --target KIND"
+
+#: mcs/mcs/driver.cs:646
+msgid "Compatibility: Use -r:LIBRARY instead of -r library"
+msgstr "Compatibilidade: Utilize -r:BIBLIOTECA ao invés de -r biblioteca"
+
+#: mcs/mcs/driver.cs:665
+msgid "Compatibility: Use -lib:ARG instead of --L arg"
+msgstr "Compatibilidade: Utilize -lib:ARG ao invés de --L arg"
+
+#: mcs/mcs/driver.cs:678
+msgid "Compatibility: Use -nostdlib instead of --nostdlib"
+msgstr "Compatibilidade: Utilize -nostdlib ao invés de --nostdlib"
+
+#: mcs/mcs/driver.cs:683
+msgid "Compatibility: Use -nowarn instead of --nowarn"
+msgstr "Compatibilidade: Utilize -nowarn ao invés de --nowarn"
+
+#: mcs/mcs/driver.cs:700
+msgid "Compatibility: Use -warn:LEVEL instead of --wlevel LEVEL"
+msgstr "Compatibilidade: Utilize -warn:NÍVEL ao invés de --wlevel NÍVEL"
+
+#: mcs/mcs/driver.cs:704
+msgid "--wlevel requires a value from 0 to 4"
+msgstr "--wlevel requer um valor de 0 a 4"
+
+#: mcs/mcs/driver.cs:713
+msgid "--mcs-debug requires an argument"
+msgstr "--mcs-debug requer um argumento"
+
+#: mcs/mcs/driver.cs:720
+msgid "Invalid argument to --mcs-debug"
+msgstr "Argumento inválido para --mcs-debug"
+
+#: mcs/mcs/driver.cs:730
+msgid "Compatibility: Use -recurse:PATTERN option instead --recurse PATTERN"
+msgstr ""
+"Compatibilidade: Utilize a opção -recurse:PADRÂO ao invés de --recurse PADRÃO"
+
+#: mcs/mcs/driver.cs:732
+msgid "--recurse requires an argument"
+msgstr "--recurse requer um argumento"
+
+#: mcs/mcs/driver.cs:743
+msgid "Compatibility: Use -debug option instead of -g or --debug"
+msgstr "Compatibilidade: Utilize a opção -debug ao invés de -g ou --debug"
+
+#: mcs/mcs/driver.cs:748
+msgid "Compatibility: Use -noconfig option instead of --noconfig"
+msgstr "Compatibilidade: Utilize a opção -noconfig ao invés de --noconfig"
+
+#: mcs/mcs/driver.cs:912
+#, csharp-format
+msgid "Invalid conditional define symbol `{0}'"
+msgstr "Símbolo de definição condicional \"{0}\" inválido"
+
+#: mcs/mcs/driver.cs:963
+#, csharp-format
+msgid ""
+"Invalid resource visibility option `{0}'. Use either `public' or `private' "
+"instead"
+msgstr ""
+"Opção de visibilidade de recurso \"{0}\" inválida. Utilize, ao invés disto, "
+"\"public\" ou \"private\""
+
+#: mcs/mcs/driver.cs:969
+#, csharp-format
+msgid "Wrong number of arguments for option `{0}'"
+msgstr "Número de argumentos incorreto para a opção \"{0}\""
+
+#: mcs/mcs/driver.cs:1007
+msgid "Cannot specify multiple aliases using single /reference option"
+msgstr ""
+
+#: mcs/mcs/driver.cs:1035 mcs/mcs/driver.cs:1047
+msgid ""
+"Cannot specify the `win32res' and the `win32ico' compiler option at the same "
+"time"
+msgstr ""
+"Não se pode especificar as opções de compilador \"win32res\" e o \"win32ico"
+"\" ao mesmo tempo"
+
+#: mcs/mcs/driver.cs:1162
+#, csharp-format
+msgid "`{0}' is not a valid warning number"
+msgstr ""
+
+#: mcs/mcs/driver.cs:1192
+#, fuzzy
+msgid ""
+"Invalid platform type for -platform. Valid options are `anycpu', `x86', "
+"`x64' or `itanium'"
+msgstr ""
+"Tipo alvo inválido para -target. Opções válidas são \"exe\", \"winexe\", "
+"\"library\" ou \"module\""
+
+#: mcs/mcs/driver.cs:1212
+msgid "Invalid sdk version name"
+msgstr ""
+
+#: mcs/mcs/driver.cs:1310
+#, fuzzy, csharp-format
+msgid ""
+"Invalid -langversion option `{0}'. It must be `ISO-1', `ISO-2', `3' or "
+"`Default'"
+msgstr ""
+"Opção \"{0}\" inválida para /langversion. Este deve ser \"ISO-1\" ou \"ISO-2"
+"\" ou \"Default\""
+
+#: mcs/mcs/driver.cs:1330
+#, csharp-format
+msgid "Code page `{0}' is invalid or not installed"
+msgstr "Código de página \"{0}\" é inválido ou não está instalado"
+
+#: mcs/mcs/driver.cs:1345
+#, csharp-format
+msgid "Unrecognized command-line option: `{0}'"
+msgstr "Opção de linha de comando não reconhecida: \"{0}\""
+
+#: mcs/mcs/driver.cs:1350
+#, csharp-format
+msgid "Missing file specification for `{0}' option"
+msgstr ""
+
+#: mcs/mcs/driver.cs:1355
+#, fuzzy, csharp-format
+msgid "Missing argument for `{0}' option"
+msgstr "Argumento faltando para --linkres"
+
+#: mcs/mcs/driver.cs:1390
+#, fuzzy, csharp-format
+msgid "Invalid reference alias `{0}='. Missing filename"
+msgstr "Apelido de referência inválido"
+
+#: mcs/mcs/driver.cs:1395
+#, fuzzy, csharp-format
+msgid ""
+"Invalid extern alias for -reference. Alias `{0}' is not a valid identifier"
+msgstr "Apelido externo inválido para /reference. Apelido \"'"
+
+#: mcs/mcs/driver.cs:1411
+#, csharp-format
+msgid "The resource identifier `{0}' has already been used in this assembly"
+msgstr "O identificador do recurso \"{0}\" já foi utilizado neste assembly"
+
+#: mcs/mcs/driver.cs:1472
+msgid ""
+"If no source files are specified you must specify the output file with -out:"
+msgstr ""
+"Se nenhum código fonte for especificado você deve especificar o arquivo de "
+"saída com -out:"
+
+#: mcs/mcs/dynamic.cs:272
+#, fuzzy
+msgid "An expression tree cannot contain a dynamic operation"
+msgstr ""
+"Uma árvore de expressão não pode conter uma operação de ponteiro insegura"
+
+#: mcs/mcs/dynamic.cs:302
+msgid ""
+"Dynamic operation cannot be compiled without `Microsoft.CSharp.dll' assembly "
+"reference"
+msgstr ""
+
+#: mcs/mcs/ecore.cs:247
+#, csharp-format
+msgid "`{0}' is inaccessible due to its protection level"
+msgstr "\"{0}\" está inacessível devido ao nível de proteção"
+
+#: mcs/mcs/ecore.cs:252
+#, csharp-format
+msgid "The expression being assigned to `{0}' must be constant"
+msgstr "A expressão sendo atribuída a \"{0}\" deve ser constante"
+
+#: mcs/mcs/ecore.cs:257
+#, csharp-format
+msgid ""
+"A constant `{0}' of reference type `{1}' can only be initialized with null"
+msgstr ""
+"A constante \"{0}\" do tipo de referência \"{1}\" só pode ser inicializada "
+"com null"
+
+#: mcs/mcs/ecore.cs:263
+msgid ""
+"Only assignment, call, increment, decrement, and new object expressions can "
+"be used as a statement"
+msgstr ""
+"Apenas expressões de atribuição, chamada, incremento, decretomento e novos "
+"elementos podem ser usadas como uma declaração"
+
+#: mcs/mcs/ecore.cs:274
+msgid "Keyword `void' cannot be used in this context"
+msgstr "Palavra chave \"void\" não pode ser utilizada neste contexto"
+
+#: mcs/mcs/ecore.cs:308
+#, csharp-format
+msgid "Cannot convert type `{0}' to `{1}'"
+msgstr "Não foi possível converter o tipo \"{0}\" para \"{1}\""
+
+#: mcs/mcs/ecore.cs:318
+#, csharp-format
+msgid ""
+"Cannot implicitly convert type `{0}' to `{1}'. An explicit conversion exists "
+"(are you missing a cast?)"
+msgstr ""
+"Não foi possível converter implicitamente o tipo \"{0}\" para \"{1}\". Uma "
+"conversão explícita já existe (você não está esquecendo de um cast?)"
+
+#: mcs/mcs/ecore.cs:324
+#, csharp-format
+msgid "Cannot implicitly convert type `{0}' to `{1}'"
+msgstr "Não foi possível converter implicitamente o tipo \"{0}\" para \"{1}\""
+
+#: mcs/mcs/ecore.cs:365
+#, csharp-format
+msgid "`{0}' does not contain a definition for `{1}'"
+msgstr "\"{0}\" não contém uma definição para \"{1}\""
+
+#: mcs/mcs/ecore.cs:371
+msgid ""
+"The left-hand side of an assignment must be a variable, a property or an "
+"indexer"
+msgstr ""
+"O lado esquerdo de uma atribuição deve ser uma variável, uma propriedade ou "
+"um indexador"
+
+#: mcs/mcs/ecore.cs:376
+msgid "The operation in question is undefined on void pointers"
+msgstr ""
+
+#: mcs/mcs/ecore.cs:438 mcs/mcs/statement.cs:2558 mcs/mcs/statement.cs:2560
+#, csharp-format
+msgid "Internal compiler error: {0}"
+msgstr ""
+
+#: mcs/mcs/ecore.cs:478
+msgid "A ref or out argument must be an assignable variable"
+msgstr "Um argumento ref ou out deve ser uma variável atribuível"
+
+#: mcs/mcs/ecore.cs:497
+msgid ""
+"An attribute argument must be a constant expression, typeof expression or "
+"array creation expression"
+msgstr ""
+"Um argumento de atributo deve ser uma expressão constante, typeof ou "
+"expressão de criação de array"
+
+#: mcs/mcs/ecore.cs:568
+#, csharp-format
+msgid "The class `{0}' has no constructors defined"
+msgstr ""
+
+#: mcs/mcs/ecore.cs:653
+#, csharp-format
+msgid "Ambiguity between `{0}' and `{1}'"
+msgstr "Ambiguidade entre \"{0}\" e \"{1}\""
+
+#: mcs/mcs/ecore.cs:680
+msgid "An expression tree cannot contain an unsafe pointer operation"
+msgstr ""
+"Uma árvore de expressão não pode conter uma operação de ponteiro insegura"
+
+#: mcs/mcs/ecore.cs:801
+#, csharp-format
+msgid "Expression denotes a `{0}', where a `{1}' was expected"
+msgstr "A expressão denota um \"{0}\", onde um \"{1}\" era esperado"
+
+#: mcs/mcs/ecore.cs:811
+msgid "Pointers and fixed size buffers may only be used in an unsafe context"
+msgstr ""
+"Ponteiros e buffers de tamanho fixo devem apenas ser utilizados num contexto "
+"inseguro"
+
+#: mcs/mcs/ecore.cs:846
+#, csharp-format
+msgid ""
+"Members of value type `{0}' cannot be assigned using a property `{1}' object "
+"initializer"
+msgstr ""
+"Membros do tipo de valor \"{0}\" não podem ser atribuidos usando uma "
+"propriedade \"{1}\" inicializadora de objeto"
+
+#: mcs/mcs/ecore.cs:849
+#, csharp-format
+msgid ""
+"Cannot modify a value type return value of `{0}'. Consider storing the value "
+"in a temporary variable"
+msgstr ""
+"Não foi possível modificar o valor do retorno do tipo de valor de \"{0}\". "
+"Considere guardar o valor em uma variável temporária"
+
+#: mcs/mcs/ecore.cs:2275
+#, fuzzy, csharp-format
+msgid ""
+"Dynamic keyword requires `{0}' to be defined. Are you missing System.Core."
+"dll assembly reference?"
+msgstr ""
+"O tipo ou nome de namespace \"{0}\" não pôde ser encontrado. Você está "
+"esquecendo de uma diretiva em uso ou uma referência do assembly?"
+
+#: mcs/mcs/ecore.cs:2349
+#, fuzzy, csharp-format
+msgid ""
+"A local variable `{0}' cannot be used before it is declared. Consider "
+"renaming the local variable when it hides the member `{1}'"
+msgstr ""
+"A variável local \"{0}\" não pode ser utilizada antes de ser declarada. "
+"Considere renomear a variável local quando esta esconder o campo \"{1}\""
+
+#: mcs/mcs/ecore.cs:2364 mcs/mcs/ecore.cs:2408
+#, csharp-format
+msgid "`{0}' conflicts with a declaration in a child block"
+msgstr "\"{0}\" conflita com uma declaração em um bloco filho"
+
+#: mcs/mcs/ecore.cs:2417
+#, csharp-format
+msgid "A local variable `{0}' cannot be used before it is declared"
+msgstr ""
+"Uma variável local \"{0}\" não pode ser utilizada antes de ser declarada"
+
+#: mcs/mcs/ecore.cs:2419
+#, csharp-format
+msgid "The name `{0}' does not exist in the current context"
+msgstr "O nome \"{0}\" não existe no contexto atual"
+
+#: mcs/mcs/ecore.cs:2669
+#, csharp-format
+msgid ""
+"Cannot access protected member `{0}' via a qualifier of type `{1}'. The "
+"qualifier must be of type `{2}' or derived from it"
+msgstr ""
+"Não foi possível acessar membro protegido \"{0}\" a partir de um "
+"qualificador do tipo \"{1}\". O qualificador deve ser do tipo \"{2}\" ou "
+"derivado deste"
+
+#: mcs/mcs/ecore.cs:2718
+#, csharp-format
+msgid "Cannot call an abstract base member `{0}'"
+msgstr "Não foi possível chamar um membro abstrato da base \"{0}\""
+
+#: mcs/mcs/ecore.cs:2762
+#, csharp-format
+msgid ""
+"Static member `{0}' cannot be accessed with an instance reference, qualify "
+"it with a type name instead"
+msgstr ""
+"O membro estático \"{0}\" não pode ser acessado com uma referência de "
+"instância, ao invés disso, qualifique com um nome de tipo"
+
+#: mcs/mcs/ecore.cs:2777
+#, csharp-format
+msgid ""
+"A field initializer cannot reference the nonstatic field, method, or "
+"property `{0}'"
+msgstr ""
+"Um inicializador de campo não pode referenciar um campo não estático, método "
+"ou propriedade \"{0}\""
+
+#: mcs/mcs/ecore.cs:2781
+#, csharp-format
+msgid "An object reference is required to access non-static member `{0}'"
+msgstr ""
+"Uma referência de objeto é necessária para acessar o membro não estático "
+"\"{0}\""
+
+#: mcs/mcs/ecore.cs:2789
+#, csharp-format
+msgid ""
+"Cannot access a nonstatic member of outer type `{0}' via nested type `{1}'"
+msgstr ""
+"Não foi possível acessar um membro não estático de um tipo externo \"{0}\" "
+"de um tipo aninhado \"{1}\""
+
+#: mcs/mcs/ecore.cs:2837
+msgid "Cannot modify the result of an unboxing conversion"
+msgstr "Não foi possível modificar o resultado de uma conversão unboxing"
+
+#: mcs/mcs/ecore.cs:2958
+#, csharp-format
+msgid ""
+"Type `{0}' does not contain a member `{1}' and the best extension method "
+"overload `{2}' has some invalid arguments"
+msgstr ""
+"Tipo \"{0}\" não contém um membro \"{1}\" e o melhor método de extensão "
+"sobrecarregado \"{2}\" tem alguns argumentos inválidos"
+
+#: mcs/mcs/ecore.cs:2963
+#, csharp-format
+msgid "Extension method instance type `{0}' cannot be converted to `{1}'"
+msgstr ""
+"Tipo de instância do método de extensão \"{0}\" não pode ser convertido para "
+"\"{1}\""
+
+#: mcs/mcs/ecore.cs:3087
+msgid "An expression tree cannot contain an expression with method group"
+msgstr ""
+"Uma árvore de expressão não pode conter uma expressão com um grupo de método"
+
+#: mcs/mcs/ecore.cs:3093
+msgid ""
+"Partial methods with only a defining declaration or removed conditional "
+"methods cannot be used in an expression tree"
+msgstr ""
+"Métodos parciais com somente uma declaração de definição ou métodos com "
+"condicionais removidos não podem ser utilizados em uma árvore de expressão"
+
+#: mcs/mcs/ecore.cs:3123
+#, csharp-format
+msgid ""
+"Cannot convert method group `{0}' to non-delegate type `{1}'. Consider using "
+"parentheses to invoke the method"
+msgstr ""
+"Não foi possível converter o grupo de método \"{0}\" para o tipo não-"
+"delegate \"{1}\". Consider a utilização de parênteses quando chamar o método"
+
+#: mcs/mcs/ecore.cs:3719
+#, csharp-format
+msgid ""
+"The type `{0}' does not contain a constructor that takes `{1}' arguments"
+msgstr ""
+"O tipo \"{0}\" não contém um construtor que aceite os argumentos \"{1}\""
+
+#: mcs/mcs/ecore.cs:4334
+#, fuzzy, csharp-format
+msgid ""
+"Type `{0}' does not contain a member `{1}' and the best extension method "
+"overload `{2}' cannot be dynamically dispatched. Consider calling the method "
+"without the extension method syntax"
+msgstr ""
+"Tipo \"{0}\" não contém um membro \"{1}\" e o melhor método de extensão "
+"sobrecarregado \"{2}\" tem alguns argumentos inválidos"
+
+#: mcs/mcs/ecore.cs:4355
+#, csharp-format
+msgid ""
+"The call is ambiguous between the following methods or properties: `{0}' and "
+"`{1}'"
+msgstr ""
+"Essa chamada é ambígua entre os seguintes métodos ou propriedades: \"{0}\" e "
+"\"{1}\""
+
+#: mcs/mcs/ecore.cs:4415
+#, csharp-format
+msgid ""
+"The best overloaded collection initalizer method `{0}' cannot have 'ref', or "
+"`out' modifier"
+msgstr ""
+"O melhor método sobrecarregado de coleção \"{0}\" não pode ter o modificador "
+"\"ref\" ou \"out\""
+
+#: mcs/mcs/ecore.cs:4419
+#, csharp-format
+msgid ""
+"The best overloaded collection initalizer method `{0}' has some invalid "
+"arguments"
+msgstr ""
+"O melhor método sobrecarregado inicializador de coleção \"{0}\" tem alguns "
+"argumentos inválidos"
+
+#: mcs/mcs/ecore.cs:4422
+#, csharp-format
+msgid "Delegate `{0}' has some invalid arguments"
+msgstr "Delegate \"{0}\" tem alguns argumentos inválidos"
+
+#: mcs/mcs/ecore.cs:4426
+#, csharp-format
+msgid "The best overloaded method match for `{0}' has some invalid arguments"
+msgstr ""
+"O melhor método sobrecarregado para \"{0}\" tem alguns argumentos inválidos"
+
+#: mcs/mcs/ecore.cs:4436
+#, csharp-format
+msgid ""
+"Argument `#{0}' does not require `{1}' modifier. Consider removing `{1}' "
+"modifier"
+msgstr ""
+"Argumento \"#{0}\" não requer o modificador \"{1}\". Considere remover o "
+"modificador \"{1}\""
+
+#: mcs/mcs/ecore.cs:4439
+#, csharp-format
+msgid "Argument `#{0}' is missing `{1}' modifier"
+msgstr "Argumento \"#{0}\" não encontrou o modificador \"{1}\""
+
+#: mcs/mcs/ecore.cs:4452
+#, csharp-format
+msgid "Argument `#{0}' cannot convert `{1}' expression to type `{2}'"
+msgstr ""
+"Argumento \"#{0}\" não pôde converter a expressão \"{1}\" para o tipo \"{2}\""
+
+#: mcs/mcs/ecore.cs:4500
+#, csharp-format
+msgid ""
+"The type arguments for method `{0}' cannot be inferred from the usage. Try "
+"specifying the type arguments explicitly"
+msgstr ""
+"O argumentos de tipo para o método \"{0}\" não pôde ser inferido do uso. "
+"Tente especificar os tipos dos argumentos explicitamente"
+
+#: mcs/mcs/ecore.cs:4529
+#, csharp-format
+msgid "No overload for method `{0}' takes `{1}' arguments"
+msgstr "Sem sobrecarga para o método \"{0}\" aceitar os argumentos \"{1}\""
+
+#: mcs/mcs/ecore.cs:4582
+#, fuzzy, csharp-format
+msgid "The delegate `{0}' does not contain a parameter named `{1}'"
+msgstr "O tipo aninhado \"{0}\" não existe no tipo \"{1}\""
+
+#: mcs/mcs/ecore.cs:4587
+#, fuzzy, csharp-format
+msgid ""
+"The best overloaded method match for `{0}' does not contain a parameter "
+"named `{1}'"
+msgstr ""
+"O melhor método sobrecarregado para \"{0}\" tem alguns argumentos inválidos"
+
+#: mcs/mcs/ecore.cs:4597
+#, csharp-format
+msgid ""
+"Named argument `{0}' cannot be used for a parameter which has positional "
+"argument specified"
+msgstr ""
+
+#: mcs/mcs/ecore.cs:4910
+msgid ""
+"You cannot use fixed size buffers contained in unfixed expressions. Try "
+"using the fixed statement"
+msgstr ""
+"Você não pode usar buffers de tamanho fixo contidos em expressões não "
+"fixadas. Tente utilizar a declaração fixa"
+
+#: mcs/mcs/ecore.cs:4915
+#, csharp-format
+msgid "`{0}': Fixed size buffers can only be accessed through locals or fields"
+msgstr ""
+"\"{0}\": Buffers de tamanho fixo podem apenas ser acessados atravéis de "
+"locais ou campos"
+
+#: mcs/mcs/ecore.cs:5310
+#, fuzzy, csharp-format
+msgid "Property or event `{0}' is not supported by the C# language"
+msgstr ""
+"A propriedade \"{0}\" não tem suporte na linguagem C#. Tente chamar o método "
+"acessor \"{1}\" diretamente"
+
+#: mcs/mcs/ecore.cs:5471
+#, csharp-format
+msgid "A range variable `{0}' may not be passes as `ref' or `out' parameter"
+msgstr ""
+"Uma variável de intervalo \"{0}\" não deve ser passada como parâmetros \"ref"
+"\" ou \"out\""
+
+#: mcs/mcs/ecore.cs:5519
+#, csharp-format
+msgid ""
+"The property or indexer `{0}' cannot be used in this context because it "
+"lacks the `get' accessor"
+msgstr ""
+"A propriedade ou indexador \"{0}\" não pôde ser utilizada nesse contexto "
+"porque falta o acessor \"get\""
+
+#: mcs/mcs/ecore.cs:5526
+#, csharp-format
+msgid ""
+"The property or indexer `{0}' cannot be used in this context because the get "
+"accessor is inaccessible"
+msgstr ""
+"A propriedade ou indexador \"{0}\" não pôde ser utilizada nesse contexto "
+"porque o acessor get está inacessível"
+
+#: mcs/mcs/ecore.cs:5545
+#, fuzzy, csharp-format
+msgid "Property or indexer `{0}' cannot be assigned to (it is read-only)"
+msgstr ""
+"Propriedade ou indexador \"{0}\" não pôde ser atribuida (ela é somente "
+"leitura)"
+
+#: mcs/mcs/ecore.cs:5553
+#, csharp-format
+msgid ""
+"The property or indexer `{0}' cannot be used in this context because the set "
+"accessor is inaccessible"
+msgstr ""
+"A propriedade ou indexador \"{0}\" não pôde ser utilizada neste contexto por "
+"que o acessor do conjunto está inacessível"
+
+#: mcs/mcs/ecore.cs:5714
+#, csharp-format
+msgid ""
+"The event `{0}' can only appear on the left hand side of `+=' or `-=' "
+"operator"
+msgstr ""
+"O evento \"{0}\" pode apenas aparecer no lado esquerdo do operador \"+=\" ou "
+"\"-=\""
+
+#: mcs/mcs/ecore.cs:5718
+#, csharp-format
+msgid ""
+"The event `{0}' can only appear on the left hand side of += or -= when used "
+"outside of the type `{1}'"
+msgstr ""
+"O evento \"{0}\" pode apenas aparecer no lado esquerdo do operador += ou -= "
+"quando utilizado fora do tipo \"{1}\""
+
+#: mcs/mcs/ecore.cs:5882
+#, csharp-format
+msgid ""
+"An implicitly typed local variable declaration cannot be initialized with `"
+"{0}'"
+msgstr ""
+"Uma declaração de variável local tipada implicitamente não pode ser "
+"inicializada com \"{0}\""
+
+#: mcs/mcs/ecore.cs:5896
+msgid ""
+"The contextual keyword `var' may only appear within a local variable "
+"declaration"
+msgstr ""
+"A palavra chave contextual \"var\" deve apenas aparecer dentro de uma "
+"declaração de variável local"
+
+#: mcs/mcs/enum.cs:125
+#, fuzzy, csharp-format
+msgid ""
+"The enumerator value `{0}' is outside the range of enumerator underlying "
+"type `{1}'"
+msgstr ""
+"O valor enumerador \"{0}\" é muito grande para caber no seu tipo \"{1}\""
+
+#: mcs/mcs/enum.cs:189
+#, csharp-format
+msgid "An item in an enumeration cannot have an identifier `{0}'"
+msgstr "Um ítem em uma enumeração não pode ter um identificador \"{0}\""
+
+#: mcs/mcs/enum.cs:200
+msgid "Type byte, sbyte, short, ushort, int, uint, long or ulong expected"
+msgstr "Tipo byte, sbyte, short, ushort, int, uint, long ou ulong esperado"
+
+#: mcs/mcs/eval.cs:626
+msgid "Detection Parsing Error"
+msgstr "Erro na Análise de Detecção"
+
+#: mcs/mcs/expression.cs:542
+#, csharp-format
+msgid "The `{0}' operator cannot be applied to operand of type `{1}'"
+msgstr "O operador \"{0}\" não pode ser aplicado ao operando de tipo \"{1}\""
+
+#: mcs/mcs/expression.cs:622
+#, fuzzy
+msgid "Cannot take the address of the given expression"
+msgstr ""
+"Não foi possível encontrar o endereço de \"this\" por que este é somente "
+"leitura"
+
+#: mcs/mcs/expression.cs:656
+msgid ""
+"You can only take the address of unfixed expression inside of a fixed "
+"statement initializer"
+msgstr ""
+
+#: mcs/mcs/expression.cs:745
+#, csharp-format
+msgid "Operator `{0}' is ambiguous on an operand of type `{1}'"
+msgstr "Operador \"{0}\" é ambíguo em um operando de tipo \"{1}\""
+
+#: mcs/mcs/expression.cs:868
+#, fuzzy
+msgid "The * or -> operator must be applied to a pointer"
+msgstr ""
+"O operador \"{0}\" não pode ser aplicado em um operando de tipo ponteiro"
+
+#: mcs/mcs/expression.cs:1070
+msgid ""
+"The operand of an increment or decrement operator must be a variable, "
+"property or indexer"
+msgstr ""
+"O operando de um operador de incremento ou decremento deve ser uma variável, "
+"propriedade ou indexador"
+
+#: mcs/mcs/expression.cs:1260
+#, csharp-format
+msgid "The `{0}' operator cannot be applied to an operand of a static type"
+msgstr ""
+"O operador \"{0}\" não pode ser aplicado a um operando de tipo estático"
+
+#: mcs/mcs/expression.cs:1265
+#, csharp-format
+msgid "The `{0}' operator cannot be applied to an operand of pointer type"
+msgstr ""
+"O operador \"{0}\" não pode ser aplicado em um operando de tipo ponteiro"
+
+#: mcs/mcs/expression.cs:1271
+#, csharp-format
+msgid ""
+"The `{0}' operator cannot be applied to a lambda expression or anonymous "
+"method"
+msgstr ""
+"O operador \"{0}\" não pode ser aplicado a uma expressão lambda ou método "
+"anônimo"
+
+#: mcs/mcs/expression.cs:1505
+#, fuzzy, csharp-format
+msgid ""
+"The `as' operator cannot be used with a non-reference type parameter `{0}'. "
+"Consider adding `class' or a reference type constraint"
+msgstr ""
+"O operador \"as\" não pode ser utilizada com um parâmetro de tipo não "
+"referência \"{0}\""
+
+#: mcs/mcs/expression.cs:1509
+#, csharp-format
+msgid "The `as' operator cannot be used with a non-nullable value type `{0}'"
+msgstr ""
+"O operador \"as\" não pode ser utilizado com um valor não de tipo não NULL "
+"\"{0}\""
+
+#: mcs/mcs/expression.cs:1542
+#, csharp-format
+msgid "Cannot convert type `{0}' to `{1}' via a built-in conversion"
+msgstr ""
+"Não foi possível converter o tipo \"{0}\" para \"{1}\" através de uma "
+"conversão inclusa"
+
+#: mcs/mcs/expression.cs:1583
+#, csharp-format
+msgid "Cannot convert to static type `{0}'"
+msgstr "Não foi possível converter para o tipo estático \"{0}\""
+
+#: mcs/mcs/expression.cs:1673
+msgid ""
+"The `default value' operator cannot be applied to an operand of a static type"
+msgstr ""
+"O operador \"valor padrão\" não pode ser aplicado a um operando de um tipo "
+"estático"
+
+#: mcs/mcs/expression.cs:2178
+#, csharp-format
+msgid "Operator `{0}' cannot be applied to operands of type `{1}' and `{2}'"
+msgstr ""
+"O operador \"{0}\" não pode ser aplicado aos operados do tipo \"{1}\" e \"{2}"
+"\""
+
+#: mcs/mcs/expression.cs:2741
+msgid "To cast a negative value, you must enclose the value in parentheses"
+msgstr ""
+"Para fazer o cast do valor negativo, você deve colocar o valor em parênteses"
+
+#: mcs/mcs/expression.cs:3394
+#, csharp-format
+msgid "Operator `{0}' is ambiguous on operands of type `{1}' and `{2}'"
+msgstr "O operador \"{0}\" é ambíguo em operandos do tipo \"{1}\" e \"{2}\""
+
+#: mcs/mcs/expression.cs:4146
+#, csharp-format
+msgid ""
+"A user-defined operator `{0}' must have parameters and return values of the "
+"same type in order to be applicable as a short circuit operator"
+msgstr ""
+"O operador definido pelo usuário \"{0}\" deve ter parâmetros e valores de "
+"retorno do mesmo tipo, para que seja aplicável como um operador de curto "
+"circuito"
+
+#: mcs/mcs/expression.cs:4156
+#, csharp-format
+msgid ""
+"The type `{0}' must have operator `true' and operator `false' defined when `"
+"{1}' is used as a short circuit operator"
+msgstr ""
+"O tipo \"{0}\" deve ter operadores \"true\" e \"false\" definidos quando "
+"\"{1}\" é utilizado como um operador curto circuito"
+
+#: mcs/mcs/expression.cs:4466
+#, fuzzy, csharp-format
+msgid ""
+"Type of conditional expression cannot be determined as `{0}' and `{1}' "
+"convert implicitly to each other"
+msgstr ""
+"Tipo da expressão condicional não pôde ser determinada por que não há uma "
+"conversão implícita entre \"{0}\" e \"{1}\""
+
+#: mcs/mcs/expression.cs:4476
+#, csharp-format
+msgid ""
+"Type of conditional expression cannot be determined because there is no "
+"implicit conversion between `{0}' and `{1}'"
+msgstr ""
+"Tipo da expressão condicional não pôde ser determinada por que não há uma "
+"conversão implícita entre \"{0}\" e \"{1}\""
+
+#: mcs/mcs/expression.cs:4928
+#, csharp-format
+msgid "Use of unassigned out parameter `{0}'"
+msgstr "Uso do parâmetro removido \"{0}\""
+
+#: mcs/mcs/expression.cs:4958
+#, csharp-format
+msgid ""
+"Parameter `{0}' cannot be used inside `{1}' when using `ref' or `out' "
+"modifier"
+msgstr ""
+"Parâmetro \"{0}\" não pôde ser utilizado dentro de \"{1}\" quando estiver "
+"usando modificadores \"ref\" ou \"out\""
+
+#: mcs/mcs/expression.cs:5159
+#, fuzzy, csharp-format
+msgid "Cannot invoke a non-delegate type `{0}'"
+msgstr "Não foi possível converter \"{0}\" para um tipo não-delegate \"{1}\""
+
+#: mcs/mcs/expression.cs:5170
+#, csharp-format
+msgid "The member `{0}' cannot be used as method or delegate"
+msgstr "O membro \"{0}\" não pode ser utilizado como método ou delegate"
+
+#: mcs/mcs/expression.cs:5190
+msgid ""
+"Do not directly call your base class Finalize method. It is called "
+"automatically from your destructor"
+msgstr ""
+"Não chame diretamente seu método Finalize da classe base. Este é chamado "
+"automaticamente de seu destrutor"
+
+#: mcs/mcs/expression.cs:5192
+msgid ""
+"Destructors and object.Finalize cannot be called directly. Consider calling "
+"IDisposable.Dispose if available"
+msgstr ""
+"Destrutores e o object.Finalize não podem ser chamados diretamente. "
+"Considere chamar IDisposable.Dispose se disponível"
+
+#: mcs/mcs/expression.cs:5221
+#, csharp-format
+msgid ""
+"The base call to method `{0}' cannot be dynamically dispatched. Consider "
+"casting the dynamic arguments or eliminating the base access"
+msgstr ""
+
+#: mcs/mcs/expression.cs:5298
+#, csharp-format
+msgid "`{0}': cannot explicitly call operator or accessor"
+msgstr "\"{0}\": não foi possível chamar explicitamente operador ou acessor"
+
+#: mcs/mcs/expression.cs:5625
+#, csharp-format
+msgid "Unsafe type `{0}' cannot be used in an object creation expression"
+msgstr ""
+"Tipo inseguro \"{0}\" não pode ser utilizado em uma expressão criadora de "
+"objetos"
+
+#: mcs/mcs/expression.cs:5648
+#, csharp-format
+msgid ""
+"Cannot create an instance of the variable type `{0}' because it does not "
+"have the new() constraint"
+msgstr ""
+
+#: mcs/mcs/expression.cs:5654
+#, csharp-format
+msgid ""
+"`{0}': cannot provide arguments when creating an instance of a variable type"
+msgstr ""
+
+#: mcs/mcs/expression.cs:5663
+#, csharp-format
+msgid "Cannot create an instance of the static class `{0}'"
+msgstr "Não foi possível criar uma instância da classe estática \"{0}\""
+
+#: mcs/mcs/expression.cs:5675
+#, csharp-format
+msgid "Cannot create an instance of the abstract class or interface `{0}'"
+msgstr ""
+"Não foi possível criar uma instância da classe abstrata ou interface \"{0}\""
+
+#: mcs/mcs/expression.cs:5971
+msgid ""
+"An implicitly typed local variable declarator cannot use an array initializer"
+msgstr ""
+"Um declarador de variável local tipada implícitamente não pode usar um "
+"inicializador de array"
+
+#: mcs/mcs/expression.cs:6064
+msgid "Cannot create an array with a negative size"
+msgstr "Não foi possível criar um array com um tamanho negativo"
+
+#: mcs/mcs/expression.cs:6096 mcs/mcs/expression.cs:6104
+#: mcs/mcs/statement.cs:1009 mcs/mcs/statement.cs:3055
+msgid "A constant value is expected"
+msgstr "Um valor constante é esperado"
+
+#: mcs/mcs/expression.cs:6110
+#, csharp-format
+msgid "An array initializer of length `{0}' was expected"
+msgstr ""
+
+#: mcs/mcs/expression.cs:6126
+#, fuzzy
+msgid ""
+"Array initializers can only be used in a variable or field initializer. Try "
+"using a new expression instead"
+msgstr ""
+"É possivel apenas utilizar uma expressão de inicialização de array para "
+"atríbui-la a tipos de array. Tente, ao invés disso, utilizar uma nova "
+"expressão"
+
+#: mcs/mcs/expression.cs:6134
+#, fuzzy
+msgid "A nested array initializer was expected"
+msgstr "Um valor constante é esperado"
+
+#: mcs/mcs/expression.cs:6171
+msgid "An expression tree cannot contain a multidimensional array initializer"
+msgstr ""
+"Uma árvore de expressão não pode contar um inicializador de array "
+"multidimensional"
+
+#: mcs/mcs/expression.cs:6273
+msgid ""
+"Can only use array initializer expressions to assign to array types. Try "
+"using a new expression instead"
+msgstr ""
+"É possivel apenas utilizar uma expressão de inicialização de array para "
+"atríbui-la a tipos de array. Tente, ao invés disso, utilizar uma nova "
+"expressão"
+
+#: mcs/mcs/expression.cs:6709
+msgid ""
+"The type of an implicitly typed array cannot be inferred from the "
+"initializer. Try specifying array type explicitly"
+msgstr ""
+"O tipo de um array tipado implicitamente não pode ser inferido do "
+"inicializador. Tente especificar o tipo de array explicitamente"
+
+#: mcs/mcs/expression.cs:6846
+msgid ""
+"The `this' object cannot be used before all of its fields are assigned to"
+msgstr ""
+
+#: mcs/mcs/expression.cs:6853
+msgid ""
+"Keyword `this' is not valid in a static property, static method, or static "
+"field initializer"
+msgstr ""
+
+#: mcs/mcs/expression.cs:6856
+msgid ""
+"Anonymous methods inside structs cannot access instance members of `this'. "
+"Consider copying `this' to a local variable outside the anonymous method and "
+"using the local instead"
+msgstr ""
+"Métodos anônimos dentro de structs não podem acessar instâncias de \"this\". "
+"Considere copiar \"this\" para um variável local fora do método anônimo e "
+"utilizar, ao invés disso, o local"
+
+#: mcs/mcs/expression.cs:6859
+#, fuzzy
+msgid "Keyword `this' is not available in the current context"
+msgstr "O nome \"{0}\" não existe no contexto atual"
+
+#: mcs/mcs/expression.cs:6946
+msgid "Cannot take the address of `this' because it is read-only"
+msgstr ""
+"Não foi possível encontrar o endereço de \"this\" por que este é somente "
+"leitura"
+
+#: mcs/mcs/expression.cs:6948
+msgid "Cannot pass `this' as a ref or out argument because it is read-only"
+msgstr ""
+"Não foi possível passar \"thus\" com uma ref ou argumento out por que este é "
+"somente leitura"
+
+#: mcs/mcs/expression.cs:6950
+msgid "Cannot assign to `this' because it is read-only"
+msgstr "Não foi possível atribuir para \"this\" por que este é somente leitura"
+
+#: mcs/mcs/expression.cs:7003
+msgid "The __arglist construct is valid only within a variable argument method"
+msgstr ""
+
+#: mcs/mcs/expression.cs:7053
+msgid "An expression tree cannot contain a method with variable arguments"
+msgstr ""
+"Uma árvore de expressão não pode conter um método com argumentos variáveis"
+
+#: mcs/mcs/expression.cs:7137
+msgid ""
+"System.Void cannot be used from C#. Use typeof (void) to get the void type "
+"object"
+msgstr ""
+
+#: mcs/mcs/expression.cs:7140
+#, fuzzy
+msgid "The typeof operator cannot be used on the dynamic type"
+msgstr ""
+"O operador \"{0}\" não pode ser aplicado a um operando de tipo estático"
+
+#: mcs/mcs/expression.cs:7191
+#, csharp-format
+msgid "`{0}': an attribute argument cannot use type parameters"
+msgstr "\"{0}\": um argumento de atributo não pode usar parâmetros de tipo"
+
+#: mcs/mcs/expression.cs:7445
+#, csharp-format
+msgid ""
+"`{0}' does not have a predefined size, therefore sizeof can only be used in "
+"an unsafe context (consider using System.Runtime.InteropServices.Marshal."
+"SizeOf)"
+msgstr ""
+"\"{0}\" não tem um tamanho predefinido, portanto sizeof pode apenas ser "
+"utilizado em um contexto inseguro (consider utilizar System.Runtime."
+"InteropServices.Marshal.SizeOf)"
+
+#: mcs/mcs/expression.cs:7501
+#, csharp-format
+msgid "Alias `{0}' not found"
+msgstr "Apelido \"{0}\" não encontrado"
+
+#: mcs/mcs/expression.cs:7512
+#, csharp-format
+msgid ""
+"Alias `{0}' cannot be used with '::' since it denotes a type. Consider "
+"replacing '::' with '.'"
+msgstr ""
+"Apelido \"{0}\" não pôde ser utilizado com \"::\" pois denota um tipo. "
+"Considere substituir \"::\" com \".\""
+
+#: mcs/mcs/expression.cs:7528
+#, csharp-format
+msgid ""
+"A namespace alias qualifier `{0}' did not resolve to a namespace or a type"
+msgstr ""
+"O qualificador de apelidos do namespace \"{0}\" não resolveu para um "
+"namespace ou um tipo"
+
+#: mcs/mcs/expression.cs:7685
+msgid "Cannot perform member binding on `null' value"
+msgstr ""
+
+#: mcs/mcs/expression.cs:7752
+#, csharp-format
+msgid "`{0}': cannot reference a type through an expression; try `{1}' instead"
+msgstr ""
+"\"{0}\" não pôde referenciar um tipo através de uma expressão; tente, ao "
+"invés, \"{1}\""
+
+#: mcs/mcs/expression.cs:7828
+#, csharp-format
+msgid "A nested type cannot be specified through a type parameter `{0}'"
+msgstr ""
+"Um tipo aninhado não pode ser especificado através de um tipo parâmetro \"{0}"
+"\""
+
+#: mcs/mcs/expression.cs:7887
+#, csharp-format
+msgid "The nested type `{0}' does not exist in the type `{1}'"
+msgstr "O tipo aninhado \"{0}\" não existe no tipo \"{1}\""
+
+#: mcs/mcs/expression.cs:7896
+#, csharp-format
+msgid ""
+"Type `{0}' does not contain a definition for `{1}' and no extension method `"
+"{1}' of type `{0}' could be found (are you missing a using directive or an "
+"assembly reference?)"
+msgstr ""
+"O tipo \"{0}\" não contém uma definição para \"{1}\" e nenhuma extensão de "
+"método \"{1}\" do tipo \"{0}\" pôde ser encontrada (você está esquecendo uma "
+"diretiva em uso ou uma referência do assembly?)"
+
+#: mcs/mcs/expression.cs:8076
+#, csharp-format
+msgid "Cannot apply indexing with [] to an expression of type `{0}'"
+msgstr ""
+"Não foi possível aplicar uma indexação com [] para uma expressão do tipo "
+"\"{0}\""
+
+#: mcs/mcs/expression.cs:8092
+msgid "A pointer must be indexed by only one value"
+msgstr ""
+
+#: mcs/mcs/expression.cs:8141
+msgid "An element access expression cannot use named argument"
+msgstr ""
+
+#: mcs/mcs/expression.cs:8197
+#, csharp-format
+msgid "Wrong number of indexes `{0}' inside [], expected `{1}'"
+msgstr "Número incorreto de índices \"{0}\" dentro de [], esperados \"{1}\""
+
+#: mcs/mcs/expression.cs:8533
+msgid ""
+"The indexer base access cannot be dynamically dispatched. Consider casting "
+"the dynamic arguments or eliminating the base access"
+msgstr ""
+
+#: mcs/mcs/expression.cs:8614
+msgid "An expression tree may not contain a base access"
+msgstr "Uma árvore de expressão não deve conter uma acesso de base"
+
+#: mcs/mcs/expression.cs:8631
+#, fuzzy
+msgid "Keyword `base' is not available in a static method"
+msgstr "Palavra chave \"new\" não é permitida em elementos do namespace"
+
+#: mcs/mcs/expression.cs:8633
+#, fuzzy
+msgid "Keyword `base' is not available in the current context"
+msgstr "O nome \"{0}\" não existe no contexto atual"
+
+#: mcs/mcs/expression.cs:8664
+#, fuzzy
+msgid ""
+"A property, indexer or dynamic member access may not be passed as `ref' or "
+"`out' parameter"
+msgstr ""
+"Uma propriedade ou indexador \"{0}\" não deve ser passada como parâmetos "
+"\"ref\" ou \"out\""
+
+#: mcs/mcs/expression.cs:8941
+#, csharp-format
+msgid "Array elements cannot be of type `{0}'"
+msgstr "Elementos de array não podem ser do tipo \"{0}\""
+
+#: mcs/mcs/expression.cs:8944
+#, csharp-format
+msgid "Array elements cannot be of static type `{0}'"
+msgstr "Elementos de array não podem ser do tipo estático \"{0}\""
+
+#: mcs/mcs/expression.cs:9094
+msgid "Cannot use a negative size with stackalloc"
+msgstr "Não é possível utilizar um tamanho negativo com stackalloc"
+
+#: mcs/mcs/expression.cs:9098
+msgid "Cannot use stackalloc in finally or catch"
+msgstr ""
+
+#: mcs/mcs/expression.cs:9203
+#, csharp-format
+msgid ""
+"Member `{0}' cannot be initialized. An object initializer may only be used "
+"for fields, or properties"
+msgstr ""
+"Membro \"{0}\" não pode ser inicializado. Um inicializador de objetos pode "
+"apenas ser utilizado para campos, ou propriedades"
+
+#: mcs/mcs/expression.cs:9212
+#, fuzzy, csharp-format
+msgid ""
+"Static field or property `{0}' cannot be assigned in an object initializer"
+msgstr ""
+" Campo estático ou propriedade \"{0}\" não podem ser atribuídas a um "
+"inicializador de objeto"
+
+#: mcs/mcs/expression.cs:9387
+#, csharp-format
+msgid ""
+"A field or property `{0}' cannot be initialized with a collection object "
+"initializer because type `{1}' does not implement `{2}' interface"
+msgstr ""
+"Um campo ou propriedade \"{0}\" não podem ser inicializados com uma "
+"inicializador de coleção de objetos porque o tipo \"{1}\" não implementa a "
+"interface \"{2}\""
+
+#: mcs/mcs/expression.cs:9398
+#, csharp-format
+msgid "Inconsistent `{0}' member declaration"
+msgstr "Declaração do membro \"{0}\" inconsistente"
+
+#: mcs/mcs/expression.cs:9406
+#, csharp-format
+msgid ""
+"An object initializer includes more than one member `{0}' initialization"
+msgstr ""
+"Um inicializador de objeto inclui mais que um membro \"{0}\" de inicialização"
+
+#: mcs/mcs/expression.cs:9424
+#, csharp-format
+msgid "Cannot initialize object of type `{0}' with a collection initializer"
+msgstr ""
+"Não foi possível inicializar objetos do tipo \"{0}\" com um inicializador de "
+"coleções"
+
+#: mcs/mcs/expression.cs:9661
+msgid "Anonymous types cannot be used in this expression"
+msgstr "Tipos anônimos não podem ser utilizados nesta expressão"
+
+#: mcs/mcs/expression.cs:9749
+#, csharp-format
+msgid "An anonymous type property `{0}' cannot be initialized with `{1}'"
+msgstr ""
+"Uma propriedade anônima de tipo \"{0}\" não pode ser inicializada com \"{1}\""
+
+#: mcs/mcs/field.cs:70
+msgid ""
+"The modifier 'abstract' is not valid on fields. Try using a property instead"
+msgstr ""
+"O modificador \"abstract\" não é válido em campos. Tente, ao invés disso, "
+"utilizar uma propriedade"
+
+#: mcs/mcs/field.cs:121
+msgid ""
+"The FieldOffset attribute can only be placed on members of types marked with "
+"the StructLayout(LayoutKind.Explicit)"
+msgstr ""
+"O atributo FieldOffset pode apenas ser colocado em membros de tipos marcados "
+"com o StructLayout(LayoutKind.Explicit)"
+
+#: mcs/mcs/field.cs:126
+msgid "The FieldOffset attribute is not allowed on static or const fields"
+msgstr ""
+"O atributo FieldOffset não é permitido em campos estáticos ou constantes"
+
+#: mcs/mcs/field.cs:132
+msgid ""
+"Do not use 'System.Runtime.CompilerServices.FixedBuffer' attribute. Use the "
+"'fixed' field modifier instead"
+msgstr ""
+"Não utilize o atributo \"System.Runtime.CompilerServices.FixedBuffer\". "
+"Utilize, ao invés desse, o campo modificador \"fixed\""
+
+#: mcs/mcs/field.cs:237
+#, csharp-format
+msgid ""
+"`{0}': Instance field types marked with StructLayout(LayoutKind.Explicit) "
+"must have a FieldOffset attribute"
+msgstr ""
+"\"{0}\": Tipo de campo de instância marcado com StructLayout(LayoutKind."
+"Explicit) deve ter um atributo FieldOffset"
+
+#: mcs/mcs/field.cs:246
+#, csharp-format
+msgid "`{0}': cannot declare variables of static types"
+msgstr "\"{0}\": não foi possível declarar variáveis de tipo estático"
+
+#: mcs/mcs/field.cs:388
+#, csharp-format
+msgid ""
+"`{0}': Fixed size buffers type must be one of the following: bool, byte, "
+"short, int, long, char, sbyte, ushort, uint, ulong, float or double"
+msgstr ""
+"\"{0}\": Buffers de tamanho fixo deve ser algum desses: bool, byte, short, "
+"int, long, char, sbyte, ushort, uint, ulong, float or double"
+
+#: mcs/mcs/field.cs:424
+#, csharp-format
+msgid "`{0}': Fixed size buffer fields may only be members of structs"
+msgstr ""
+"\"{0}\": Campos de buffer de tamanho fixo devem ser somente membros de "
+"structs"
+
+#: mcs/mcs/field.cs:439
+#, csharp-format
+msgid "`{0}': Fixed size buffers must have a length greater than zero"
+msgstr ""
+"\"{0}\": Buffers de tamanho fixo devem ter um comprimento maior que zero"
+
+#: mcs/mcs/field.cs:446
+#, csharp-format
+msgid ""
+"Fixed size buffer `{0}' of length `{1}' and type `{2}' exceeded 2^31 limit"
+msgstr ""
+"Buffer de tamanho fixo \"{0}\" de comprimento \"{1}\" e tipo \"{2}\" excedeu "
+"o limite de 2^31"
+
+#: mcs/mcs/field.cs:628
+#, csharp-format
+msgid "`{0}': A volatile field cannot be of the type `{1}'"
+msgstr "\"{0}\": Um campo volátil não pode ser do tipo \"{1}\""
+
+#: mcs/mcs/field.cs:633
+#, csharp-format
+msgid "`{0}': A field cannot be both volatile and readonly"
+msgstr ""
+"\"{0}\": Um campo não pode ser volátil e somente leitura ao mesmo tempo"
+
+#: mcs/mcs/flowanalysis.cs:307
+msgid "Control cannot fall through from one case label to another"
+msgstr "Controle não pode passar de um rótulo de caso para outro"
+
+#: mcs/mcs/flowanalysis.cs:536
+#, csharp-format
+msgid ""
+"The label `{0}:' could not be found within the scope of the goto statement"
+msgstr ""
+"O rótulo \"{0}:\" não pôde ser encontrado no escopo do declaração do goto"
+
+#: mcs/mcs/flowanalysis.cs:664
+msgid ""
+"A throw statement with no arguments is not allowed outside of a catch clause"
+msgstr ""
+"Uma declaração throw sem argumentos não é permitida fora de uma cláusula "
+"catch"
+
+#: mcs/mcs/flowanalysis.cs:675 mcs/mcs/flowanalysis.cs:681
+msgid "No enclosing loop out of which to break or continue"
+msgstr "Sem fechamento de loop para break ou continue"
+
+#: mcs/mcs/flowanalysis.cs:709
+msgid "Control cannot leave the body of an anonymous method"
+msgstr "Controle não pode deixar o corpo de um método anônimo"
+
+#: mcs/mcs/flowanalysis.cs:750
+msgid "Cannot yield a value in the body of a try block with a catch clause"
+msgstr ""
+"Não foi possível deixar um valor no corpo de um bloco try com uma cláusula "
+"catch"
+
+#: mcs/mcs/flowanalysis.cs:752
+msgid "Cannot yield a value in the body of a catch clause"
+msgstr "Não foi possível deixar um valor no corpo de um cláusula catch"
+
+#: mcs/mcs/flowanalysis.cs:904
+msgid ""
+"A throw statement with no arguments is not allowed inside of a finally "
+"clause nested inside of the innermost catch clause"
+msgstr ""
+"Uma declaração throw sem argumentos não é permitida dentro de uma clálculsa "
+"finalmente aninhada dentro da cláusula de catch mais interna"
+
+#: mcs/mcs/flowanalysis.cs:916 mcs/mcs/iterators.cs:102
+msgid "Cannot yield in the body of a finally clause"
+msgstr "Não foi possível deixar no corpo uma cláusula final"
+
+#: mcs/mcs/flowanalysis.cs:927 mcs/mcs/flowanalysis.cs:943
+#: mcs/mcs/flowanalysis.cs:979 mcs/mcs/statement.cs:694
+msgid "Control cannot leave the body of a finally clause"
+msgstr "O controle não pode deixar o corpo de uma cláusula final"
+
+#: mcs/mcs/flowanalysis.cs:1130
+#, fuzzy, csharp-format
+msgid ""
+"An automatically implemented property `{0}' must be fully assigned before "
+"control leaves the constructor. Consider calling the default struct "
+"contructor from a constructor initializer"
+msgstr ""
+"Uma propriedade implementada automaticamente \"{0}\" deve ser inteiramente "
+"atríbuida antes que o controle deixe o construtor. Considere chamar o "
+"construtor padrão"
+
+#: mcs/mcs/flowanalysis.cs:1134
+#, csharp-format
+msgid ""
+"Field `{0}' must be fully assigned before control leaves the constructor"
+msgstr ""
+"Campo \"{0}\" deve ser inteiramente atríbuido antes que o controle deixe o "
+"construtor"
+
+#: mcs/mcs/flowanalysis.cs:1376
+msgid "Use of unassigned local variable `"
+msgstr "Uso de variável não atríbuida \""
+
+#: mcs/mcs/flowanalysis.cs:1446
+msgid "Use of possibly unassigned field `"
+msgstr "Uso de campo possivelmente não atribuído \""
+
+#: mcs/mcs/generic.cs:102 mcs/mcs/generic.cs:120
+#, csharp-format
+msgid "Type parameter `{0}' inherits conflicting constraints `{1}' and `{2}'"
+msgstr ""
+"O tipo de parâmetro \"{0}\" herda as restrições conflitantes \"{1}\" e \"{2}"
+"\""
+
+#: mcs/mcs/generic.cs:173
+#, fuzzy, csharp-format
+msgid "A constraint cannot be the dynamic type `{0}'"
+msgstr "Uma restrição não pode ser a classe especial \"{0}\""
+
+#: mcs/mcs/generic.cs:182
+#, csharp-format
+msgid ""
+"Inconsistent accessibility: constraint type `{0}' is less accessible than `"
+"{1}'"
+msgstr ""
+"Accessibilidade inconsistente: tipo de restrição \"{0}\" é menos acessível "
+"que \"{1}\""
+
+#: mcs/mcs/generic.cs:189 mcs/mcs/generic.cs:203
+#, fuzzy, csharp-format
+msgid "Duplicate constraint `{0}' for type parameter `{1}'"
+msgstr "Restrição duplicada \"{0}\" para o tipo de parâmetro \"{1}\"."
+
+#: mcs/mcs/generic.cs:218
+#, csharp-format
+msgid "Circular constraint dependency involving `{0}' and `{1}'"
+msgstr "Dependência circular de restrições envolvendo \"{0}\" e \"{1}\""
+
+#: mcs/mcs/generic.cs:249
+#, csharp-format
+msgid ""
+"Type parameter `{0}' has the `struct' constraint, so it cannot be used as a "
+"constraint for `{1}'"
+msgstr ""
+"O tipo de parâmetro \"{0}\" tem a \"struct\" constraint, então não pode ser "
+"utilizada como restrição para \"{1}\""
+
+#: mcs/mcs/generic.cs:260
+#, csharp-format
+msgid ""
+"The class type constraint `{0}' must be listed before any other constraints. "
+"Consider moving type constraint to the beginning of the constraint list"
+msgstr ""
+"A restrição \"{0}\" do tipo da classe deve ser lista antes de quaisquer "
+"outras restrições. Considere mover a restrição de tipo para o início da "
+"lista de restrições"
+
+#: mcs/mcs/generic.cs:266
+#, csharp-format
+msgid ""
+"`{0}': cannot specify both a constraint class and the `class' or `struct' "
+"constraint"
+msgstr ""
+"\"{0}\": não foi possível especificar uma classe de restrição e a \"classe\" "
+"ou \"struct\" restrita"
+
+#: mcs/mcs/generic.cs:271
+#, fuzzy
+msgid "A constraint cannot be the dynamic type"
+msgstr "Uma restrição não pode ser a classe especial \"{0}\""
+
+#: mcs/mcs/generic.cs:277
+#, csharp-format
+msgid ""
+"`{0}' is not a valid constraint. A constraint must be an interface, a non-"
+"sealed class or a type parameter"
+msgstr ""
+"\"{0}\" não é uma restrição válida. Uma restrição deve ser uma interface, "
+"uma classe não selada ou um tipo parâmetro"
+
+#: mcs/mcs/generic.cs:284
+#, csharp-format
+msgid ""
+"`{0}' is not a valid constraint. Static classes cannot be used as constraints"
+msgstr ""
+"\"{0}\" não é uma restrição válida. Classes estáticas não pode ser "
+"utilizadas como restrições"
+
+#: mcs/mcs/generic.cs:290
+#, csharp-format
+msgid "A constraint cannot be special class `{0}'"
+msgstr "Uma restrição não pode ser a classe especial \"{0}\""
+
+#: mcs/mcs/generic.cs:538
+#, fuzzy, csharp-format
+msgid "The {2} type parameter `{0}' must be {3} valid on `{1}{4}'"
+msgstr "O nome do tipo parâmetro \"{0}\" é o mesmo que \"{1}\""
+
+#: mcs/mcs/generic.cs:1738
+#, csharp-format
+msgid "`{0}': static classes cannot be used as generic arguments"
+msgstr ""
+"\"{0}\": classes estáticas não podem ser utilizadas como argumentos genéricos"
+
+#: mcs/mcs/generic.cs:1745
+#, csharp-format
+msgid "The type `{0}' may not be used as a type argument"
+msgstr "O tipo \"{0}\" não deve ser utilizado como um tipo argumento"
+
+#: mcs/mcs/generic.cs:2000
+#, fuzzy, csharp-format
+msgid ""
+"The type `{0}' must be a reference type in order to use it as type parameter "
+"`{1}' in the generic type or method `{2}'"
+msgstr ""
+"O tipo \"{0}\" deve ser uma refêrencia de tipo para poder utilizá-lo como o "
+"tipo parâmetro \"{1}\" no tipo genérico ou método \"{2}\"."
+
+#: mcs/mcs/generic.cs:2010
+#, fuzzy, csharp-format
+msgid ""
+"The type `{0}' must be a non-nullable value type in order to use it as type "
+"parameter `{1}' in the generic type or method `{2}'"
+msgstr ""
+"O tipo \"{0}\" deve ser um tipo de valor não NULL para poder utilizá-lo como "
+"tipo parâmetro \"{1}\" no tipo genérico ou método \"{2}\"."
+
+#: mcs/mcs/generic.cs:2049
+#, fuzzy, csharp-format
+msgid ""
+"The type `{0}' cannot be used as type parameter `{1}' in the generic type or "
+"method `{2}'. The nullable type `{0}' never satisfies interface constraint"
+msgstr ""
+"O tipo \"{0}\" não pode ser utilizado como tipo parâmetro \"{1}\" no tipo "
+"genérico ou método \"{2}\". O tipo anulável \"{0}\" nunca satisfaz a "
+"restrição de interface do tipo \"{3}\""
+
+#: mcs/mcs/generic.cs:2101
+#, csharp-format
+msgid ""
+"The type `{0}' must have a public parameterless constructor in order to use "
+"it as parameter `{1}' in the generic type or method `{2}'"
+msgstr ""
+"O tipo \"{0}\" deve ter um construtor público sem parâmetros para poder "
+"utilizá-lo como parâmetro \"{1}\" no tipo genérico ou método \"{2}\""
+
+#: mcs/mcs/generic.cs:2153
+#, fuzzy, csharp-format
+msgid ""
+"The type `{0}' cannot be used as type parameter `{1}' in the generic type or "
+"method `{2}'. There is no boxing conversion from `{0}' to `{3}'"
+msgstr ""
+"O tipo \"{0}\" não pode ser utilizado como tipo parâmetro \"{1}\" no tipo "
+"genérico ou método \"{2}\". O tipo anulável \"{0}\" nunca satisfaz a "
+"restrição de interface do tipo \"{3}\""
+
+#: mcs/mcs/generic.cs:2157
+#, fuzzy, csharp-format
+msgid ""
+"The type `{0}' cannot be used as type parameter `{1}' in the generic type or "
+"method `{2}'. There is no boxing or type parameter conversion from `{0}' to `"
+"{3}'"
+msgstr ""
+"O tipo \"{0}\" não pode ser utilizado como tipo parâmetro \"{1}\" no tipo "
+"genérico ou método \"{2}\". O tipo anulável \"{0}\" nunca satisfaz a "
+"restrição de interface do tipo \"{3}\""
+
+#: mcs/mcs/generic.cs:2161
+#, fuzzy, csharp-format
+msgid ""
+"The type `{0}' cannot be used as type parameter `{1}' in the generic type or "
+"method `{2}'. There is no implicit reference conversion from `{0}' to `{3}'"
+msgstr ""
+"O tipo \"{0}\" não pode ser utilizado como tipo parâmetro \"{1}\" no tipo "
+"genérico ou método \"{2}\". O tipo anulável \"{0}\" nunca satisfaz a "
+"restrição de interface do tipo \"{3}\""
+
+#: mcs/mcs/import.cs:1711
+#, csharp-format
+msgid ""
+"The type `{0}' is defined in an assembly that is not referenced. Consider "
+"adding a reference to assembly `{1}'"
+msgstr ""
+
+#: mcs/mcs/iterators.cs:44
+msgid "The yield statement cannot be used inside anonymous method blocks"
+msgstr ""
+"Declaração yield não pode ser utilizada dentro de blocos de método anônimo"
+
+#: mcs/mcs/iterators.cs:856
+#, csharp-format
+msgid ""
+"The body of `{0}' cannot be an iterator block because `{1}' is not an "
+"iterator interface type"
+msgstr ""
+"O corpo de \"{0}\" não pode ser um bloco iterador porque \"{1}\" não é um "
+"tipo de interface iteradora"
+
+#: mcs/mcs/iterators.cs:869
+msgid "Iterators cannot have ref or out parameters"
+msgstr "Iteradores não podem ter parâmetros ref ou out"
+
+#: mcs/mcs/iterators.cs:875
+msgid "__arglist is not allowed in parameter list of iterators"
+msgstr "__arglist não é permitida em parâmetros de listas de iteradores"
+
+#: mcs/mcs/iterators.cs:881
+msgid "Iterators cannot have unsafe parameters or yield types"
+msgstr "Iteradores não podem ter parâmetros inseguros ou tipos yield"
+
+#: mcs/mcs/iterators.cs:888 mcs/mcs/statement.cs:4324
+msgid "Unsafe code may not appear in iterators"
+msgstr "Código inseguro não pode aparecer em iteradores"
+
+#: mcs/mcs/linq.cs:68
+#, csharp-format
+msgid ""
+"An implementation of `{0}' query expression pattern could not be found. Are "
+"you missing `System.Linq' using directive or `System.Core.dll' assembly "
+"reference?"
+msgstr ""
+"Uma implementação da consulta de padrão de expressão \"{0}\" não pode ser "
+"encontrada. Você está esquecendo da diretiva de uso \"System.Linq\" ou da "
+"referência do assembly \"System.Core.dll\" ?"
+
+#: mcs/mcs/linq.cs:93
+#, fuzzy, csharp-format
+msgid ""
+"Ambiguous implementation of the query pattern `{0}' for source type `{1}'"
+msgstr ""
+"Uma implementação da consulta de padrão de expressão \"{0}\" para um código "
+"fonte do tipo \"{1}\" não pôde ser encontrada"
+
+#: mcs/mcs/linq.cs:124
+#, csharp-format
+msgid ""
+"An implementation of `{0}' query expression pattern for source type `{1}' "
+"could not be found"
+msgstr ""
+"Uma implementação da consulta de padrão de expressão \"{0}\" para um código "
+"fonte do tipo \"{1}\" não pôde ser encontrada"
+
+#: mcs/mcs/linq.cs:132
+#, csharp-format
+msgid ""
+"An expression type is incorrect in a subsequent `from' clause in a query "
+"expression with source type `{0}'"
+msgstr ""
+
+#: mcs/mcs/linq.cs:136
+#, csharp-format
+msgid ""
+"An expression type in `{0}' clause is incorrect. Type inference failed in "
+"the call to `{1}'"
+msgstr ""
+
+#: mcs/mcs/linq.cs:248
+#, csharp-format
+msgid "A range variable `{0}' cannot be initialized with `{1}'"
+msgstr ""
+"Uma variável de intervalo \"{0}\" nâo pode ser inicializada com \"{1}\""
+
+#: mcs/mcs/linq.cs:750
+#, csharp-format
+msgid "A range variable `{0}' conflicts with a previous declaration of `{0}'"
+msgstr ""
+"Uma variável de intervalo \"{0}\" conflita com um declaração anterior de "
+"\"{0}\""
+
+#: mcs/mcs/linq.cs:757
+#, csharp-format
+msgid "A range variable `{0}' has already been declared in this scope"
+msgstr "Uma variável de intervalor \"{0}\" já foi declarada neste escopo"
+
+#: mcs/mcs/linq.cs:764
+#, csharp-format
+msgid "A range variable `{0}' conflicts with a method type parameter"
+msgstr ""
+"Uma variável de intervalor \"{0}\" conflita com um método de tipo parâmetro"
+
+#: mcs/mcs/linq.cs:796
+#, csharp-format
+msgid ""
+"A range variable `{0}' cannot be assigned to. Consider using `let' clause to "
+"store the value"
+msgstr ""
+"Uma variável de intervalo \"{0}\" não pôde ser atribuida. Considere a "
+"utilização da claúsula \"let\" para armazenar o valor"
+
+#: mcs/mcs/literal.cs:49
+#, csharp-format
+msgid ""
+"Cannot convert null to the type parameter `{0}' because it could be a value "
+"type. Consider using `default ({0})' instead"
+msgstr ""
+"Não foi possível converter null para o tipo parâmetro \"{0}\" porque este "
+"pode ser um tipo de valor. Considere utilizar, ao invés disso, \"default "
+"({0})\""
+
+#: mcs/mcs/literal.cs:55
+#, csharp-format
+msgid "Cannot convert null to `{0}' because it is a value type"
+msgstr ""
+"Não foi possível converter null para \"{0}\" porque este é um tipo de valor"
+
+#: mcs/mcs/literal.cs:204
+#, csharp-format
+msgid ""
+"Literal of type double cannot be implicitly converted to type `{0}'. Add "
+"suffix `{1}' to create a literal of this type"
+msgstr ""
+"Literal do tipo double não pode ser implicitamente convertido para o tipo "
+"\"{0}\". Adicione o sufixo \"{1}\" para criar um literal desse tipo"
+
+#: mcs/mcs/membercache.cs:1241
+msgid ""
+"A partial method declaration and partial method implementation cannot differ "
+"on use of `params' modifier"
+msgstr ""
+"Uma declaração de método parcial e uma implementação de método parcial não "
+"podem diferir no uso do modificador \"params\""
+
+#: mcs/mcs/membercache.cs:1244
+msgid ""
+"A partial method declaration and partial method implementation must be both "
+"an extension method or neither"
+msgstr ""
+"Uma declaração de método parcial e uma implementação de método parcial ou "
+"devem ser ambas um método de extenção ou ambas não serem"
+
+#: mcs/mcs/membercache.cs:1248
+#, fuzzy, csharp-format
+msgid ""
+"Overloaded contructor `{0}' cannot differ on use of parameter modifiers only"
+msgstr ""
+"Um método sobrecarregado \"{0}\" não pode diferir no uso de modificadores de "
+"parâmetros somente"
+
+#: mcs/mcs/membercache.cs:1252
+#, fuzzy, csharp-format
+msgid ""
+"Overloaded method `{0}' cannot differ on use of parameter modifiers only"
+msgstr ""
+"Um método sobrecarregado \"{0}\" não pode diferir no uso de modificadores de "
+"parâmetros somente"
+
+#: mcs/mcs/membercache.cs:1284
+msgid ""
+"A partial method declaration and partial method implementation must be both "
+"`static' or neither"
+msgstr ""
+"Uma declaração de método parcial e uma implementação de método parcial ou "
+"devem ser ambas estáticas ou ambas não serem"
+
+#: mcs/mcs/membercache.cs:1289
+msgid ""
+"A partial method declaration and partial method implementation must be both "
+"`unsafe' or neither"
+msgstr ""
+"Uma declaração de método parcial e uma implementação de método parcial ou "
+"devem ser ambas inseguras ou ambas não serem"
+
+#: mcs/mcs/membercache.cs:1295
+#, csharp-format
+msgid "A partial method `{0}' declaration is already defined"
+msgstr "Uma declaração do método parcial \"{0}\" já está definida"
+
+#: mcs/mcs/membercache.cs:1299
+#, csharp-format
+msgid "A partial method `{0}' implementation is already defined"
+msgstr "Uma implementação do método parcial \"{0}\" já esa definido"
+
+#: mcs/mcs/membercache.cs:1310 mcs/mcs/property.cs:81
+#, csharp-format
+msgid "A member `{0}' is already reserved"
+msgstr "Um membro \"{0}\" já está reservado"
+
+#: mcs/mcs/membercache.cs:1321
+#, csharp-format
+msgid "Duplicate user-defined conversion in type `{0}'"
+msgstr "Conversão definida pelo usuário duplicada no topo \"{0}\""
+
+#: mcs/mcs/method.cs:495
+msgid ""
+"The DllImport attribute must be specified on a method marked `static' and "
+"`extern'"
+msgstr ""
+"O atributo DllImport deve ser especificado em um método marcado \"estático\" "
+"e \"externo\""
+
+#: mcs/mcs/method.cs:583
+#, csharp-format
+msgid "`{0}': A partial method parameters cannot use `out' modifier"
+msgstr ""
+"\"{0}\": Os parâmetros parciais de um método não podem utilizar o "
+"modificador \"out\""
+
+#: mcs/mcs/method.cs:642
+#, csharp-format
+msgid ""
+"Conditional not valid on `{0}' because it is a constructor, destructor, "
+"operator or explicit interface implementation"
+msgstr ""
+"Condicional inválido em \"{0}\" por que é um construtor, destrutor, operador "
+"ou interface explícita de implementação"
+
+#: mcs/mcs/method.cs:860
+#, csharp-format
+msgid "Program `{0}' has more than one entry point defined: `{1}'"
+msgstr "Programa \"{0}\" possue mais que um ponto de entrada definido \"{1}\""
+
+#: mcs/mcs/method.cs:904
+#, csharp-format
+msgid "Conditional not valid on `{0}' because it is an override method"
+msgstr "Condicional inválido em \"{0}\" por que este é um método sobrescrito"
+
+#: mcs/mcs/method.cs:909
+#, csharp-format
+msgid "Conditional not valid on `{0}' because its return type is not void"
+msgstr "Condicional inválido em \"{0}\" porque seu tipo de retorno não é void"
+
+#: mcs/mcs/method.cs:914
+msgid "Conditional not valid on interface members"
+msgstr "Condicional inválido em membros de interface"
+
+#: mcs/mcs/method.cs:920
+#, csharp-format
+msgid "Conditional member `{0}' cannot implement interface member `{1}'"
+msgstr ""
+"Membro condicional \"{0}\" não podem implementar membros de interface \"{1}\""
+
+#: mcs/mcs/method.cs:927
+#, csharp-format
+msgid "Conditional method `{0}' cannot have an out parameter"
+msgstr "Método condicional \"{0}\" não pode ter um parâmetro externo"
+
+#: mcs/mcs/method.cs:1050
+#, csharp-format
+msgid ""
+"The constraints for type parameter `{0}' of method `{1}' must match the "
+"constraints for type parameter `{2}' of interface method `{3}'. Consider "
+"using an explicit interface implementation instead"
+msgstr ""
+"As restrições para o tipo parâmetro \"{0}\" do método \"{1}\" devem possuir "
+"as mesmas restrições para o tipo parâmetro \"{2}\" do método de interface "
+"\"{3}\". Considere, ao invés disso, utilizar uma implementação de interface "
+"explícita"
+
+#: mcs/mcs/method.cs:1104
+#, csharp-format
+msgid "`{0}': Extension methods cannot be defined in a nested class"
+msgstr ""
+"\"{0}\": Métodos de extensão não podem ser definidos em uma classe aninhada"
+
+#: mcs/mcs/method.cs:1110
+#, csharp-format
+msgid ""
+"`{0}': Extension methods cannot be declared without a reference to System."
+"Core.dll assembly. Add the assembly reference or remove `this' modifer from "
+"the first parameter"
+msgstr ""
+"\"{0}\": Métodos de extensão não podem ser declarados sem uma referência ao "
+"assembly System.Core.dll. Adicione a referência do assembly ou remova o "
+"modificador \"this\" do primeiro parâmetro"
+
+#: mcs/mcs/method.cs:1119
+#, csharp-format
+msgid "`{0}': Extension methods must be defined in a non-generic static class"
+msgstr ""
+"\"{0}\": Métodos de estensão devem ser definidos em uma classe estática não-"
+"genérica"
+
+#: mcs/mcs/method.cs:1172
+#, csharp-format
+msgid ""
+"A partial method `{0}' implementation is missing a partial method declaration"
+msgstr ""
+"Na implementação do método parcial \"{0}\" está faltando a declaração do "
+"método parcial"
+
+#: mcs/mcs/method.cs:1219
+#, csharp-format
+msgid "Method or delegate cannot return type `{0}'"
+msgstr "Método ou delegate não podem ter um tipo de retorno \"{0}\""
+
+#: mcs/mcs/method.cs:1294
+msgid ""
+"The constructor call cannot be dynamically dispatched within constructor "
+"initializer"
+msgstr ""
+
+#: mcs/mcs/method.cs:1308
+#, csharp-format
+msgid "`{0}': Struct constructors cannot call base constructors"
+msgstr "\"{0}\": Construtores de structs não podem chamar construtores da base"
+
+#: mcs/mcs/method.cs:1327
+#, csharp-format
+msgid "Constructor `{0}' cannot call itself"
+msgstr "Construtor \"{0}\" não pode chamar a si mesmo"
+
+#: mcs/mcs/method.cs:1446
+#, csharp-format
+msgid "`{0}': The static constructor must be parameterless"
+msgstr "\"{0}\": O construtor estático não deve ter parâmetros"
+
+#: mcs/mcs/method.cs:1464
+msgid "Structs cannot contain explicit parameterless constructors"
+msgstr "Structs não podem conter construtores explícitos sem parâmetros"
+
+#: mcs/mcs/method.cs:1520
+#, csharp-format
+msgid ""
+"`{0}': A class with the ComImport attribute cannot have a user-defined "
+"constructor"
+msgstr ""
+"\"{0}\": Uma classe com o atributo ComImport não pode ter um construtor "
+"definido pelo usuário"
+
+#: mcs/mcs/method.cs:1763
+#, csharp-format
+msgid "`{0}' is an accessor not found in interface member `{1}{2}'"
+msgstr "\"{0}\" é um acessor não encontrado no membro da interface \"{1}{2}\""
+
+#: mcs/mcs/method.cs:1769
+#, csharp-format
+msgid ""
+"`{0}.{1}' in explicit interface declaration is not a member of interface"
+msgstr ""
+"\"{0}.{1}\" na declaração da interface explícita não é um membro da interface"
+
+#: mcs/mcs/method.cs:1776
+#, csharp-format
+msgid ""
+"`{0}' explicit method implementation cannot implement `{1}' because it is an "
+"accessor"
+msgstr ""
+"\"{0}\" implementação de método explícito não pode implementar \"{1}\" "
+"porque é um acessor"
+
+#: mcs/mcs/method.cs:1786
+#, fuzzy, csharp-format
+msgid "Method `{0}' cannot implement interface accessor `{1}'"
+msgstr "Método \"{0}\" não pode implementar acessor de interface \"{1}.{2}\""
+
+#: mcs/mcs/method.cs:1792
+#, csharp-format
+msgid ""
+"Accessor `{0}' cannot implement interface member `{1}' for type `{2}'. Use "
+"an explicit interface implementation"
+msgstr ""
+"Acessor \"{0}\" não pode implementar o membro da interface \"{1}\" para o "
+"tipo \"{2}\". Utilize uma implementação explícita da interface"
+
+#: mcs/mcs/method.cs:1798
+#, csharp-format
+msgid ""
+"Accessor `{0}' must be declared public to implement interface member `{1}'"
+msgstr ""
+"Acessor \"{0}\" deve ser declarado público para implementar o membro da "
+"interface \"{1}\""
+
+#: mcs/mcs/method.cs:1822
+#, csharp-format
+msgid ""
+"`{0}': the explicit interface implementation cannot introduce the params "
+"modifier"
+msgstr ""
+"\"{0}\": a implementação explicita da interface não pode fornecer o "
+"modificador de parâmetros"
+
+#: mcs/mcs/method.cs:2140
+#, csharp-format
+msgid ""
+"Attribute `{0}' is not valid on property or event accessors. It is valid on `"
+"{1}' declarations only"
+msgstr ""
+"Atributo \"{0}\" não é válido em propriedade ou acessores de evento. É "
+"válido nas declarações \"{1}\" somente"
+
+#: mcs/mcs/method.cs:2351
+#, csharp-format
+msgid "User-defined operator `{0}' must be declared static and public"
+msgstr ""
+"Operador definido pelo usuário \"{0}\" deve ser declarado estático e público"
+
+#: mcs/mcs/method.cs:2390
+msgid ""
+"User-defined operator cannot take an object of the enclosing type and "
+"convert to an object of the enclosing type"
+msgstr ""
+"Operador definido pelo usuário não pode pegar um objeto de um tipo no qual "
+"está definido e converter para um objeto deste tipo"
+
+#: mcs/mcs/method.cs:2401
+msgid "User-defined conversion must convert to or from the enclosing type"
+msgstr ""
+"Converção definida pela usuário deve conver para ou a partir de um tipo no "
+"qual está definido"
+
+#: mcs/mcs/method.cs:2407
+#, fuzzy, csharp-format
+msgid ""
+"User-defined conversion `{0}' cannot convert to or from the dynamic type"
+msgstr ""
+"Conversão definida pelo usuário \"{0}\" não pode converter para ou a partir "
+"de um tipo de interface"
+
+#: mcs/mcs/method.cs:2414
+#, csharp-format
+msgid ""
+"User-defined conversion `{0}' cannot convert to or from an interface type"
+msgstr ""
+"Conversão definida pelo usuário \"{0}\" não pode converter para ou a partir "
+"de um tipo de interface"
+
+#: mcs/mcs/method.cs:2421
+#, csharp-format
+msgid "User-defined conversion `{0}' cannot convert to or from a base class"
+msgstr ""
+"Conversão definida pelo usuário \"{0}\" não pode converter para ou a partir "
+"de uma classe base"
+
+#: mcs/mcs/method.cs:2427
+#, csharp-format
+msgid "User-defined conversion `{0}' cannot convert to or from a derived class"
+msgstr ""
+"Conversão definida pelo usuário \"{0}\" não pode converter para ou a partir "
+"de uma classe derivada"
+
+#: mcs/mcs/method.cs:2434
+msgid ""
+"Overloaded shift operator must have the type of the first operand be the "
+"containing type, and the type of the second operand must be int"
+msgstr ""
+"Operador de shift sobrecarregado deve ter o tipo do primeiro operando como "
+"sendo o próprio tipo, e o tipo do segundo operando deve ser int"
+
+#: mcs/mcs/method.cs:2443
+msgid ""
+"The return type for ++ or -- operator must be the containing type or derived "
+"from the containing type"
+msgstr ""
+"O tipo de retorno para o operador ++ ou -- deve ser do próprio tipo ou "
+"derivadodo próprio tipo"
+
+#: mcs/mcs/method.cs:2448
+msgid "The parameter type for ++ or -- operator must be the containing type"
+msgstr "O tipo de parâmetro para o operador ++ ou -- deve ser do próprio tipo"
+
+#: mcs/mcs/method.cs:2455
+msgid "The parameter type of a unary operator must be the containing type"
+msgstr "O tipo de parâmetro de um operador unário deve ser do próprio tipo"
+
+#: mcs/mcs/method.cs:2463
+msgid "The return type of operator True or False must be bool"
+msgstr "O tipo de retorno do operador True ou False deve ser bool"
+
+#: mcs/mcs/method.cs:2478
+msgid "One of the parameters of a binary operator must be the containing type"
+msgstr "Um dos parâmetros de um operador binário deve ser do próprio tipo"
+
+#: mcs/mcs/modifiers.cs:275
+#, fuzzy, csharp-format
+msgid "The modifier `{0}' is not valid for this item"
+msgstr "Código de página \"{0}\" é inválido ou não está instalado"
+
+#: mcs/mcs/namespace.cs:70
+#, csharp-format
+msgid ""
+"The type or namespace name `{0}' could not be found in the global namespace "
+"(are you missing an assembly reference?)"
+msgstr ""
+"O tipo ou nome de namespace \"{0}\" não pôde ser encontrado no namespace "
+"global (você não está esquecendo de uma referência do assembly?)"
+
+#: mcs/mcs/namespace.cs:177
+#, csharp-format
+msgid ""
+"The type or namespace name `{0}' does not exist in the namespace `{1}'. Are "
+"you missing an assembly reference?"
+msgstr ""
+"O tipo ou nome do namespace \"{0}\" não existe no namespace \"{1}\". Você "
+"não está esquecendo de uma referência do assembly?"
+
+#: mcs/mcs/namespace.cs:256
+#, csharp-format
+msgid "The imported type `{0}' is defined multiple times"
+msgstr "O tipo importado \"{0}\" é definido múltiplas vezes"
+
+#: mcs/mcs/namespace.cs:583
+#, csharp-format
+msgid ""
+"`{0}' is a type not a namespace. A using namespace directive can only be "
+"applied to namespaces"
+msgstr ""
+"\"{0}\" é um tipo e não um namespace. Uma diretiva de namespace em uso pode "
+"apenas ser aplicado a namespaces"
+
+#: mcs/mcs/namespace.cs:610
+#, csharp-format
+msgid "The extern alias `{0}' was not specified in -reference option"
+msgstr "O alias externo \"{0}\" não foi especificado na opção -reference"
+
+#: mcs/mcs/namespace.cs:820 mcs/mcs/namespace.cs:842
+msgid ""
+"A using clause must precede all other namespace elements except extern alias "
+"declarations"
+msgstr ""
+"Uma cláusula em uso deve preceder todos os outros elementos do namespace, "
+"exceto declarações de alias externos"
+
+#: mcs/mcs/namespace.cs:866
+msgid "An extern alias declaration must precede all other elements"
+msgstr "Um alias externo deve preceder todos os outros elementos"
+
+#: mcs/mcs/namespace.cs:884
+#, csharp-format
+msgid "The using alias `{0}' appeared previously in this namespace"
+msgstr "O alias em uso \"{0}\" apareceu antes neste namespace"
+
+#: mcs/mcs/namespace.cs:1005
+#, csharp-format
+msgid "Namespace `{0}' contains a definition with same name as alias `{1}'"
+msgstr ""
+"O namespace \"{0}\" contém uma definição com o mesmo nome do alias \"{1}\""
+
+#: mcs/mcs/namespace.cs:1059
+#, csharp-format
+msgid "`{0}' is an ambiguous reference between `{1}' and `{2}'"
+msgstr "\"{0}\" é uma referência ambígua entre \"{1}\" e \"{2}\""
+
+#: mcs/mcs/namespace.cs:1127
+msgid "The global extern alias cannot be redefined"
+msgstr ""
+
+#: mcs/mcs/namespace.cs:1132
+#, csharp-format
+msgid ""
+"The type or namespace name `{0}' could not be found. Are you missing a using "
+"directive or an assembly reference?"
+msgstr ""
+"O tipo ou nome de namespace \"{0}\" não pôde ser encontrado. Você está "
+"esquecendo de uma diretiva em uso ou uma referência do assembly?"
+
+#: mcs/mcs/nullable.cs:1036
+msgid ""
+"An expression tree cannot contain a coalescing operator with null left side"
+msgstr ""
+"Uma árvore de expressão não pode conter um operador crescente com null no "
+"lado esquerdo"
+
+#: mcs/mcs/parameter.cs:156
+msgid "The params parameter must be a single dimensional array"
+msgstr "O parâmetro params deve ser um array de uma dimensão"
+
+#: mcs/mcs/parameter.cs:288
+msgid "An out parameter cannot have the `In' attribute"
+msgstr "Um parâmetro externo não pode ter o atributo \"In\""
+
+#: mcs/mcs/parameter.cs:293
+msgid ""
+"Do not use `System.ParamArrayAttribute'. Use the `params' keyword instead"
+msgstr ""
+"Não use \"System.ParamArrayAttribute\". Ao invés disso, use a palavra chave "
+"\"params\""
+
+#: mcs/mcs/parameter.cs:300
+msgid ""
+"Cannot specify only `Out' attribute on a ref parameter. Use both `In' and "
+"`Out' attributes or neither"
+msgstr ""
+"Não foi possível especificar somente o atributo \"Out\" em um parâmetro ref. "
+"Utilize ambos os atributos \"In\" e \"Out\" ou nenhum"
+
+#: mcs/mcs/parameter.cs:310
+#, fuzzy, csharp-format
+msgid "Cannot specify `{0}' attribute on optional parameter `{1}'"
+msgstr ""
+"Não foi possível especificar o atributo \"DefaultMember\" no tipo contendo "
+"um indexador"
+
+#: mcs/mcs/parameter.cs:320
+#, fuzzy, csharp-format
+msgid ""
+"Argument of type `{0}' is not applicable for the DefaultParameterValue "
+"attribute"
+msgstr "Argumento do tipo \"{0}\" não é aplicável para o atributo DefaultValue"
+
+#: mcs/mcs/parameter.cs:323
+#, fuzzy, csharp-format
+msgid ""
+"The DefaultParameterValue attribute is not applicable on parameters of type `"
+"{0}'"
+msgstr "O atributo DefaultValue não é aplicável em parâmetros do tipo \"{0}\""
+
+#: mcs/mcs/parameter.cs:334
+msgid "The type of the default value should match the type of the parameter"
+msgstr "O tipo de valor padrão deve ter o mesmo tipo do parâmetro"
+
+#: mcs/mcs/parameter.cs:376
+#, csharp-format
+msgid "Method or delegate parameter cannot be of type `{0}'"
+msgstr "Método ou parâmetro delegate não pode ser do tipo \"{0}\""
+
+#: mcs/mcs/parameter.cs:386
+#, csharp-format
+msgid "`{0}': static types cannot be used as parameters"
+msgstr "\"{0}\": tipos estáticos não podem ser utilizados como parâmetros"
+
+#: mcs/mcs/parameter.cs:392
+#, fuzzy, csharp-format
+msgid "The extension method cannot be of type `{0}'"
+msgstr "O tipo do método de extenção não pode ser \"{0}\""
+
+#: mcs/mcs/parameter.cs:448
+#, fuzzy, csharp-format
+msgid ""
+"The expression being assigned to optional parameter `{0}' must be a constant "
+"or default value"
+msgstr "A expressão sendo atribuída a \"{0}\" deve ser constante"
+
+#: mcs/mcs/parameter.cs:464
+#, fuzzy, csharp-format
+msgid ""
+"The expression being assigned to nullable optional parameter `{0}' must be "
+"default value"
+msgstr "A expressão sendo atribuída a \"{0}\" deve ser constante"
+
+#: mcs/mcs/parameter.cs:472
+#, fuzzy, csharp-format
+msgid ""
+"Optional parameter `{0}' of type `{1}' can only be initialized with `null'"
+msgstr ""
+"A constante \"{0}\" do tipo de referência \"{1}\" só pode ser inicializada "
+"com null"
+
+#: mcs/mcs/parameter.cs:482
+#, fuzzy, csharp-format
+msgid ""
+"Optional parameter expression of type `{0}' cannot be converted to parameter "
+"type `{1}'"
+msgstr ""
+"Tipo de instância do método de extensão \"{0}\" não pode ser convertido para "
+"\"{1}\""
+
+#: mcs/mcs/parameter.cs:624
+msgid "An expression tree parameter cannot use `ref' or `out' modifier"
+msgstr ""
+"Um parâmetro de árvore de expressão não pode usar modificadores \"ref\" ou "
+"\"out\""
+
+#: mcs/mcs/parameter.cs:1096
+#, csharp-format
+msgid "The parameter name `{0}' conflicts with a compiler generated name"
+msgstr ""
+"O nome do parâmetro \"{0}\" conflita com um nome gerado pelo compilador"
+
+#: mcs/mcs/pending.cs:443
+#, csharp-format
+msgid ""
+"`{0}' does not implement interface member `{1}' and the best implementing "
+"candidate `{2}' is static"
+msgstr ""
+"O \"{0}\" não implementa o membro da interface \"{1}\" e o melhor candidato "
+"a implementação \"{2}\" é estático"
+
+#: mcs/mcs/pending.cs:447
+#, csharp-format
+msgid ""
+"`{0}' does not implement interface member `{1}' and the best implementing "
+"candidate `{2}' in not public"
+msgstr ""
+"O \"{0}\" não implementa o membro da interface \"{1}\" e o melhor candidato "
+"a implementação \"{2}\" não é público"
+
+#: mcs/mcs/pending.cs:451
+#, csharp-format
+msgid ""
+"`{0}' does not implement interface member `{1}' and the best implementing "
+"candidate `{2}' return type `{3}' does not match interface member return "
+"type `{4}'"
+msgstr ""
+"O \"{0}\" não implementa o membro da interface \"{1}\" e o melhor candidato "
+"a implementação \"{2}\" devolve o tipo \"{3}\" o que não é o mesmo tipo de "
+"retorno \"{4}\" do membro da interface"
+
+#: mcs/mcs/pending.cs:456
+#, csharp-format
+msgid "`{0}' does not implement interface member `{1}'"
+msgstr "\"{0}\" não implementa o membro da interface \"{1}\""
+
+#: mcs/mcs/pending.cs:461
+#, csharp-format
+msgid "`{0}' does not implement inherited abstract member `{1}'"
+msgstr "\"{0}\" não implementa o membro abstrato herdado \"{1}\""
+
+#: mcs/mcs/property.cs:352
+#, csharp-format
+msgid ""
+"`{0}': accessibility modifiers may not be used on accessors in an interface"
+msgstr ""
+"\"{0}\": modificadores de acessibilidade não devem ser utilizados em "
+"acessores dentro de uma interface"
+
+#: mcs/mcs/property.cs:356
+#, csharp-format
+msgid "`{0}': abstract properties cannot have private accessors"
+msgstr "\"{0}\": propriedades abstratas não podem ter acessores privados"
+
+#: mcs/mcs/property.cs:401
+#, csharp-format
+msgid ""
+"The accessibility modifier of the `{0}' accessor must be more restrictive "
+"than the modifier of the property or indexer `{1}'"
+msgstr ""
+"O modificador de acessibilidade do acessor \"{0}\" deve ser mais restritivo "
+"que o modificador da propriedade ou indexador \"{1}\""
+
+#: mcs/mcs/property.cs:502
+#, csharp-format
+msgid "Explicit interface implementation `{0}' is missing accessor `{1}'"
+msgstr ""
+"Implementação explícita de interface \"{0}\" está faltando acessor \"{1}\""
+
+#: mcs/mcs/property.cs:521
+#, fuzzy, csharp-format
+msgid ""
+"`{0}': cannot override because `{1}' does not have an overridable get "
+"accessor"
+msgstr ""
+"\"{0}.get\": não foi possível sobrescrever porque \"{1}\" não possui um "
+"acessor get que pode ser sobrescrito"
+
+#: mcs/mcs/property.cs:538
+#, fuzzy, csharp-format
+msgid ""
+"`{0}': cannot override because `{1}' does not have an overridable set "
+"accessor"
+msgstr ""
+"\"{0}.set\": não foi possível substituir porque \"{1}\" não possui um "
+"acessor set que pode ser sobrescrito"
+
+#: mcs/mcs/property.cs:579
+#, csharp-format
+msgid ""
+"`{0}': Cannot specify accessibility modifiers for both accessors of the "
+"property or indexer"
+msgstr ""
+"\"{0}\": Não foi possível especificar modificadores de acessibilidade para "
+"ambos os acessores de propriedade ou indexadores"
+
+#: mcs/mcs/property.cs:586
+#, csharp-format
+msgid ""
+"`{0}': accessibility modifiers on accessors may only be used if the property "
+"or indexer has both a get and a set accessor"
+msgstr ""
+"\"{0}\": modificadores de acessibilidade em acessores devem apenas ser "
+"utilizados se a propriedade ou indexador tiverem, ambas, um acessor get e set"
+
+#: mcs/mcs/property.cs:783
+#, csharp-format
+msgid ""
+"Automatically implemented property `{0}' cannot be used inside a type with "
+"an explicit StructLayout attribute"
+msgstr ""
+"Propriedade implementada automaticamente \"{0}\" não pode ser utilizada "
+"dentro de um tipo com um atributo StructLayout explícito"
+
+#: mcs/mcs/property.cs:1274
+#, csharp-format
+msgid "`{0}': event must be of a delegate type"
+msgstr "\"{0}\": evento deve ser de um tipo delegate"
+
+#: mcs/mcs/property.cs:1482
+#, fuzzy, csharp-format
+msgid ""
+"The `{0}' attribute is valid only on an indexer that is not an explicit "
+"interface member declaration"
+msgstr ""
+"O atributo \"IndexerName\" é válido somente em um indexador que não seja uma "
+"declaração explícita de um membro da interface"
+
+#: mcs/mcs/property.cs:1516
+msgid "Cannot set the `IndexerName' attribute on an indexer marked override"
+msgstr ""
+"Não foi possível definir o atributo \"IndexerName\" em um indexador marcado "
+"como sobrescrito"
+
+#: mcs/mcs/reflection.cs:239
+msgid "Could not access the key inside the container `"
+msgstr "Não foi possível acessar a chave dentro do tipo no qual está definido"
+
+#: mcs/mcs/roottypes.cs:434
+#, fuzzy
+msgid ""
+"The compilation may fail due to missing `System.Reflection.Emit."
+"AssemblyBuilder.SetCorlibTypeBuilders(...)' method"
+msgstr ""
+"A compilação deve falhar devedo a um método \"{0}.SetCorlibTypeBuilders({1})"
+"\"faltando"
+
+#: mcs/mcs/roottypes.cs:529
+#, fuzzy, csharp-format
+msgid "Value specified for the argument to `{0}' is not valid"
+msgstr ""
+"Valor especificado para o argumento ao \"System.Runtime.InteropServices."
+"DefaultCharSetAttribute\" não é válido"
+
+#: mcs/mcs/statement.cs:87
+msgid ""
+"A lambda expression with statement body cannot be converted to an expresion "
+"tree"
+msgstr ""
+"Uma expressão lambda com um corpo de declarações não pode ser convertida "
+"para uma árvore de expressão"
+
+#: mcs/mcs/statement.cs:740
+#, csharp-format
+msgid ""
+"An object of a type convertible to `{0}' is required for the return statement"
+msgstr ""
+
+#: mcs/mcs/statement.cs:753
+#, csharp-format
+msgid ""
+"`{0}': A return keyword must not be followed by any expression when method "
+"returns void"
+msgstr ""
+"\"{0}\": Uma palavra chave return não deve ser seguida por nenhuma expressão "
+"quando o método retornar void"
+
+#: mcs/mcs/statement.cs:778
+#, csharp-format
+msgid ""
+"Cannot convert `{0}' to delegate type `{1}' because some of the return types "
+"in the block are not implicitly convertible to the delegate return type"
+msgstr ""
+"Não foi possível converter \"{0}\" para o tipo delegate \"{1}\" porque "
+"alguns dos tipos de retorno no bloco não são implicitamente conversíveis no "
+"tipo de retorno delegate"
+
+#: mcs/mcs/statement.cs:806
+msgid ""
+"Cannot return a value from iterators. Use the yield return statement to "
+"return a value, or yield break to end the iteration"
+msgstr ""
+"Não foi possível devolver um valor de iteradores. Use a declaração yield do "
+"return para devolver um valor, ou yield break para terminar a iteração"
+
+#: mcs/mcs/statement.cs:963 mcs/mcs/statement.cs:997
+msgid "A goto case is only valid inside a switch statement"
+msgstr "Um case do goto é válido somente dentro de uma declaração switch"
+
+#: mcs/mcs/statement.cs:1076 mcs/mcs/statement.cs:4726
+msgid "The type caught or thrown must be derived from System.Exception"
+msgstr ""
+
+#: mcs/mcs/statement.cs:1298
+msgid "A fixed statement cannot use an implicitly typed local variable"
+msgstr ""
+"Uma declaração fixa não pode utilizar uma variável local tipada "
+"implicitamente"
+
+#: mcs/mcs/statement.cs:1303
+msgid "An implicitly typed local variable cannot be a constant"
+msgstr "Uma variável local implicitamente tipada não pode ser uma constante"
+
+#: mcs/mcs/statement.cs:1308
+msgid ""
+"An implicitly typed local variable declarator must include an initializer"
+msgstr ""
+"Uma declaração de variável local tipada implicitamente deve incluir um "
+"inicializador"
+
+#: mcs/mcs/statement.cs:1313
+msgid ""
+"An implicitly typed local variable declaration cannot include multiple "
+"declarators"
+msgstr ""
+"Uma declaração de variável local tipada implicitamente não pode incluir "
+"múltiplos declaradores"
+
+#: mcs/mcs/statement.cs:1883
+#, csharp-format
+msgid ""
+"A local variable named `{0}' cannot be declared in this scope because it "
+"would give a different meaning to `{0}', which is already used in a `{1}' "
+"scope to denote something else"
+msgstr ""
+"Uma variável local nomeada \"{0}\" não pode ser declarada neste escopo pois "
+"esta daria um significado distinto para \"{0}\", que já é usada em um escopo "
+"\"{1}\" para denotar outra coisa"
+
+#: mcs/mcs/statement.cs:1894
+#, csharp-format
+msgid ""
+"`{0}': An anonymous type cannot have multiple properties with the same name"
+msgstr ""
+"\"{0}\": Um tipo anônimo não pode ter múltiplas propriedades com o mesmo nome"
+
+#: mcs/mcs/statement.cs:1897
+#, csharp-format
+msgid "The parameter name `{0}' is a duplicate"
+msgstr "O nome do parâmetro \"{0}\" é uma duplicata"
+
+#: mcs/mcs/statement.cs:1904
+#, csharp-format
+msgid "A local variable named `{0}' is already defined in this scope"
+msgstr "Uma variável local nomeada \"{0}\" já foi definida neste escopo"
+
+#: mcs/mcs/statement.cs:1910
+#, fuzzy, csharp-format
+msgid ""
+"The type parameter name `{0}' is the same as local variable or parameter name"
+msgstr "O nome do tipo parâmetro \"{0}\" é o mesmo que \"{1}\""
+
+#: mcs/mcs/statement.cs:2482
+#, csharp-format
+msgid ""
+"The out parameter `{0}' must be assigned to before control leaves the "
+"current method"
+msgstr ""
+"O parâmetro externo \"{0}\" deve estar atribuída para antes que o controle "
+"deixe o método atual"
+
+#: mcs/mcs/statement.cs:2573
+#, csharp-format
+msgid "`{0}': not all code paths return a value"
+msgstr "\"{0}\": nem todos caminhos de códigos devolvem um valor"
+
+#: mcs/mcs/statement.cs:2577
+#, csharp-format
+msgid "Not all code paths return a value in anonymous method of type `{0}'"
+msgstr ""
+"Nem todos os caminhos de código devolvem um valor num método anônimo do tipo "
+"\"{0}\""
+
+#: mcs/mcs/statement.cs:2748
+#, csharp-format
+msgid "The label `{0}' is a duplicate"
+msgstr "O rótulo \"{0}\" é uma duplicata"
+
+#: mcs/mcs/statement.cs:2757 mcs/mcs/statement.cs:2768
+#, csharp-format
+msgid ""
+"The label `{0}' shadows another label by the same name in a contained scope"
+msgstr ""
+"O rótulo \"{0}\" esconde outro rótulo pelo mesmo nome em um escopo contido"
+
+#: mcs/mcs/statement.cs:3088
+#, csharp-format
+msgid "The label `case {0}:' already occurs in this switch statement"
+msgstr "O rótulo \"case {0}:\" já ocorre nesta declaração de switch"
+
+#: mcs/mcs/statement.cs:3629
+#, csharp-format
+msgid ""
+"A switch expression of type `{0}' cannot be converted to an integral type, "
+"bool, char, string, enum or nullable type"
+msgstr ""
+
+#: mcs/mcs/statement.cs:4114
+#, csharp-format
+msgid "`{0}' is not a reference type as required by the lock statement"
+msgstr ""
+"\"{0}\" não é um tipo de referência como necessário para a declaração lock"
+
+#: mcs/mcs/statement.cs:4455
+msgid "The type of locals declared in a fixed statement must be a pointer type"
+msgstr ""
+"O tipo de locais declarados em uma declaração fixa devem ser tipos ponteiros"
+
+#: mcs/mcs/statement.cs:4471
+msgid ""
+"The right hand side of a fixed statement assignment may not be a cast "
+"expression"
+msgstr "O lado direito de uma declaração fixa não deve ser uma expressão cast"
+
+#: mcs/mcs/statement.cs:4542
+msgid ""
+"You cannot use the fixed statement to take the address of an already fixed "
+"expression"
+msgstr ""
+"Você não pode usar a declaração fixa para pegar o endereço de uma expressão "
+"já fixa"
+
+#: mcs/mcs/statement.cs:4856
+#, csharp-format
+msgid ""
+"A previous catch clause already catches all exceptions of this or a super "
+"type `{0}'"
+msgstr ""
+"Uma cláusula catch anterior já pega todas as exceções do this ou um tipo "
+"super \"{0}\""
+
+#: mcs/mcs/statement.cs:5029
+#, csharp-format
+msgid ""
+"`{0}': type used in a using statement must be implicitly convertible to "
+"`System.IDisposable'"
+msgstr ""
+"\"{0}\": tipo utilizado em uma declaração em uso deve ser implicitamente "
+"conversível para \"System.IDisposable\""
+
+#: mcs/mcs/statement.cs:5451
+#, csharp-format
+msgid ""
+"foreach statement requires that the return type `{0}' of `{1}' must have a "
+"suitable public MoveNext method and public Current property"
+msgstr ""
+"declaração do foreach requer que o tipo de retorno \"{0}\" de \"{1}\" deve "
+"ter um método apropriado público MoveNext e a propriedade pública Current"
+
+#: mcs/mcs/statement.cs:5491
+#, csharp-format
+msgid ""
+"foreach statement cannot operate on variables of type `{0}' because it "
+"contains multiple implementation of `{1}'. Try casting to a specific "
+"implementation"
+msgstr ""
+"declaração do foreach não pode operar em variáveis do tipo \"{0}\" pois "
+"estas contém múltiplas implementações de \"{1}\". Tente um casting para uma "
+"implementação específica"
+
+#: mcs/mcs/statement.cs:5516
+#, fuzzy, csharp-format
+msgid ""
+"foreach statement cannot operate on variables of type `{0}' because it does "
+"not contain a definition for `{1}' or is inaccessible"
+msgstr ""
+"declaração do foreach não pode operar em variáveis do tipo \"{0}\" pois "
+"estas não contém uma definição para \"GetEnumerator\" ou não estão acessíveis"
+
+#: mcs/mcs/statement.cs:5722
+msgid "Use of null is not valid in this context"
+msgstr "Uso do null é inválido neste contexto"
+
+#: mcs/mcs/statement.cs:5732
+#, csharp-format
+msgid "Foreach statement cannot operate on a `{0}'"
+msgstr "Declaração do foreach não pode operar em um \"{0}\""
+
+#: mcs/mcs/typemanager.cs:396
+#, csharp-format
+msgid "The predefined type `{0}.{1}' is not defined or imported"
+msgstr "O tipo predefinido \"{0}.{1}\" não está definido ou importado"
+
+#: mcs/mcs/typemanager.cs:402
+#, csharp-format
+msgid "The predefined type `{0}.{1}' is not declared correctly"
+msgstr "O tipo predefinido \"{0}.{1}\" não está declarado corretamente"
+
+#: mcs/mcs/typemanager.cs:581
+#, csharp-format
+msgid ""
+"The compiler required member `{0}.{1}{2}' could not be found or is "
+"inaccessible"
+msgstr ""
+"O membro necessário para o compilador \"{0}.{1}{2}\" não pode ser encontrado "
+"ou é inacessível"
+
+#: mcs/mcs/typemanager.cs:889
+#, csharp-format
+msgid ""
+"Cannot take the address of, get the size of, or declare a pointer to a "
+"managed type `{0}'"
+msgstr ""
+"Não foi possível obter o acesso de, conseguir o tamanho de, ou declarar um "
+"ponteiro para um tipo gerenciado \"{0}\""
+
+#~ msgid "Can not use a type parameter in an attribute"
+#~ msgstr "Não é possível usar um parâmetro de tipo em um atributo"
+
+#~ msgid ""
+#~ "Added modules must be marked with the CLSCompliant attribute to match the "
+#~ "assembly"
+#~ msgstr ""
+#~ "Módulos adicionados devem ser marcados com o atributo CLSCompliant para "
+#~ "coincidir com o assembly"
+
+#~ msgid ""
+#~ "`{0}': Any identifier with double underscores cannot be used when ISO "
+#~ "language version mode is specified"
+#~ msgstr ""
+#~ "\"{0}\": Qualquer identificador com underline duplo não pode ser "
+#~ "utilizado quando o modo de versão da linguagem ISO é especificado"
+
+#~ msgid "Cannot derive from `{0}' because it is a type parameter"
+#~ msgstr "Não foi possível derivar de \"{0}\" por que é um parâmetro de tipo"
+
+#~ msgid "'{0}' in explicit interface declaration is not an interface"
+#~ msgstr "\"{0}\" na declaração explicita da interface não é uma interface"
+
+#~ msgid "Do not override object.Finalize. Instead, provide a destructor"
+#~ msgstr ""
+#~ "Não sobrescreva objetos. Destrua-os. Ao invés disso, proporcione um "
+#~ "destrutor"
+
+#~ msgid "Assembly generation failed -- Referenced assembly '"
+#~ msgstr "Geração do assembly falhou -- assembly referenciado"
+
+#~ msgid "Could not use the specified key to strongname the assembly."
+#~ msgstr ""
+#~ "Não foi possível utilizar a chave especificada para dar o strongname ao "
+#~ "assembly."
+
+#~ msgid ""
+#~ "Could not find the symbol writer assembly (Mono.CompilerServices."
+#~ "SymbolWriter.dll)"
+#~ msgstr ""
+#~ "Não foi possível encontrar o assembly do symbol writer (Mono."
+#~ "CompilerServices.SymbolWriter.dll)"
+
+#~ msgid "Unexpected debug information initialization error `{0}'"
+#~ msgstr "Erro de inicialização de informação de depuração inesperada \"{0}\""
+
+#~ msgid "Couldn't delay-sign the assembly with the '"
+#~ msgstr "Não foi possível fazer o delay-sign do assembly com o \""
+
+#~ msgid "Could not write to file `"
+#~ msgstr "Não foi possível escrever para o arquivo \""
+
+#~ msgid ""
+#~ "Option `{0}' overrides attribute `{1}' given in a source file or added "
+#~ "module"
+#~ msgstr ""
+#~ "Opção \"{0}\" sobrescreve atributo \"{1}\" dado num código-fonte ou "
+#~ "módulo adicionado"
+
+#~ msgid ""
+#~ "Could not sign the assembly. ECMA key can only be used to delay-sign "
+#~ "assemblies"
+#~ msgstr ""
+#~ "Não foi possível assinar o assembly. Chave ECMA pode apenas ser utilizada "
+#~ "para assinar o adiamento do assembly"
+
+#~ msgid "Error during assembly signing. "
+#~ msgstr "Erro durante a assinatura do assembly. "
+
+#~ msgid "Friend assembly reference `"
+#~ msgstr "Referência amiga do assembly \""
+
+#~ msgid "Invalid type specified as an argument for TypeForwardedTo attribute"
+#~ msgstr ""
+#~ "Tipo inválido especificado com um argumento para um atributo "
+#~ "TypeForwardedTo"
+
+#~ msgid "A duplicate type forward of type `{0}'"
+#~ msgstr "Um encaminhamento de tipo duplicado do tipo \"{0}\""
+
+#~ msgid "Cannot forward type `{0}' because it is defined in this assembly"
+#~ msgstr ""
+#~ "Não foi possível encaminhar o tipo \"{0}\" porque este está definido "
+#~ "neste assembly"
+
+#~ msgid "Cannot forward type `{0}' because it is a nested type"
+#~ msgstr "Não foi possível encaminhar tipo \"{0}\" por que é um tipo aninhado"
+
+#~ msgid "Cannot forward generic type `{0}'"
+#~ msgstr "Não foi possível encaminhar tipo genérico \"{0}\""
+
+#~ msgid "Internal error: could not find delegate constructor!"
+#~ msgstr "Erro interno: não foi possível encontrar o construtor do delegate!"
+
+#~ msgid "Internal error: could not find Invoke method!"
+#~ msgstr "Erro interno: não foi possível encontrar o método Invoke!"
+
+#~ msgid "Compilation aborted in file `{0}', {1}"
+#~ msgstr "Compilação abortada no arquivo \"{0}\", {1}"
+
+#~ msgid "cannot find metadata file `{0}'"
+#~ msgstr "não foi possível encontrar arquivo de metadados \"{0}\""
+
+#~ msgid "file `{0}' has invalid `{1}' metadata"
+#~ msgstr "arquivo \"{0}\" possui metadados inválidos \"{1}\""
+
+#~ msgid ""
+#~ "Referenced file `{0}' is not an assembly. Consider using `-addmodule' "
+#~ "option instead"
+#~ msgstr ""
+#~ "Arquivo referenciado \"{0}\" não é um assembly. Considere, ao invés "
+#~ "disso, utilizar a opção \"-addmodule\""
+
+#~ msgid "Compatibility: Use -warnaserror: option instead of --werror"
+#~ msgstr "Compatibilidade: Utilize a opção -warnaserror: ao invés de --werror"
+
+#~ msgid "Couldn't run pkg-config: "
+#~ msgstr "Não foi possível executar o pkg-config: "
+
+#~ msgid "Specified package did not return any information"
+#~ msgstr "Pacote especificado não devolveu qualquer informação"
+
+#~ msgid "Error running pkg-config. Check the above output."
+#~ msgstr "Erro executando pkg-config. Verifique a saída abaixo."
+
+#~ msgid "-recurse requires an argument"
+#~ msgstr "-recurse requer um argumento"
+
+#~ msgid "-reference requires an argument"
+#~ msgstr "-reference requer um argumento"
+
+#~ msgid " requires an argument"
+#~ msgstr " requer um argumento"
+
+#~ msgid "/lib requires an argument"
+#~ msgstr "/lib requer um argumento"
+
+#~ msgid "/nowarn requires an argument"
+#~ msgstr "/nowarn requer um argumento"
+
+#~ msgid "Could not find `{0}' specified for Main method"
+#~ msgstr ""
+#~ "Não foi possível encontrar o \"{0}\" especificado para o método Main"
+
+#~ msgid "`{0}' specified for Main method must be a valid class or struct"
+#~ msgstr ""
+#~ "\"{0}\" especificado para o método Main deve ser uma classe válida ou "
+#~ "struct"
+
+#~ msgid "`{0}' does not have a suitable static Main method"
+#~ msgstr "\"{0}\" não possue um método Main estático apropriado"
+
+#~ msgid ""
+#~ "Program `{0}' does not contain a static `Main' method suitable for an "
+#~ "entry point"
+#~ msgstr ""
+#~ "Programa \"{0}\" não contém um método estático \"Main\" apropriado para "
+#~ "um ponto de entrada"
+
+#~ msgid "Cannot specify -main if building a module or library"
+#~ msgstr ""
+#~ "Não é possível especificar -main se estiver compilando um módulo ou "
+#~ "biblioteca"
+
+#~ msgid "Cannot link resource file when building a module"
+#~ msgstr ""
+#~ "Não é possível apontar arquivo de recursos quando estiver compilando um "
+#~ "módulo"
+
+#~ msgid "Error reading resource file `{0}'"
+#~ msgstr "Erro ao ler arquivo de recurso \"{0}\""
+
+#~ msgid "Using the generic type `{0}' requires {1} type arguments"
+#~ msgstr "Usar o tipo genérico \"{0}\" requer {1} argumentos de tipo"
+
+#~ msgid "`{0}' is a `{1}' but a `{2}' was expected"
+#~ msgstr "\"{0}\" é um \"{1}\" mas um \"{2}\" era esperado"
+
+#~ msgid "The variable `{0}' cannot be used with type arguments"
+#~ msgstr "A variável \"{0}\" não pode ser utilizada com argumentos de tipo"
+
+#~ msgid "The property `{0}' cannot be used with type arguments"
+#~ msgstr "A propriedade \"{0}\" não pode ser utilizada com argumentos de tipo"
+
+#~ msgid "Method `"
+#~ msgstr "Método \""
+
+#~ msgid "Invoke cannot be called directly on a delegate"
+#~ msgstr "Chamada não pode ser chamada diretamente em um delegate"
+
+#~ msgid "Using the generic method `{0}' requires `{1}' type argument(s)"
+#~ msgstr ""
+#~ "Utilizar o método genérico \"{0}\" requer o(s) argumento(s) de tipo \"{1}"
+#~ "\""
+
+#~ msgid "New invocation: Can not find a constructor for this argument list"
+#~ msgstr ""
+#~ "Nova chamada: Não foi possível achar um construtor para esta lista de "
+#~ "argumentos"
+
+#~ msgid ""
+#~ "Cannot apply indexing with [] to an expression of type `System.Array'"
+#~ msgstr ""
+#~ "Não foi possível aplicar a indexação com [] a uma expressão do tipo "
+#~ "\"System.Array\""
+
+#~ msgid ""
+#~ "A property or indexer `{0}' may not be passed as an out or ref parameter"
+#~ msgstr ""
+#~ "Uma propriedade ou indexador \"{0}\" não devem ser passados como um "
+#~ "parâmetro out ou ref"
+
+#~ msgid ""
+#~ "The property or indexer `{0}' cannot be used in this context because it "
+#~ "lacks a `{1}' accessor"
+#~ msgstr ""
+#~ "A propriedade ou o indexador \"{0}\" não pôde ser utilizado neste "
+#~ "contexto porque faltam um acessor \"{1}\""
+
+#~ msgid ""
+#~ "The property or indexer `{0}' cannot be used in this context because a `"
+#~ "{1}' accessor is inaccessible"
+#~ msgstr ""
+#~ "A propriedade ou o indexador \"{0}\" não podem ser utilizadas neste "
+#~ "contexto porque um acessor \"{1}\" está inacessível"
+
+#~ msgid "Cannot find type `{0}'<...>"
+#~ msgstr "Não foi possível encontrar o tipo \"{0}\"<...>"
+
+#~ msgid "The non-generic type `{0}' cannot be used with type arguments."
+#~ msgstr ""
+#~ "O tipo não genérico \"{0}\" não pode ser utilizado como tipo argumento."
+
+#~ msgid ""
+#~ "The type `{0}' must be convertible to `{1}' in order to use it as "
+#~ "parameter `{2}' in the generic type or method `{3}'"
+#~ msgstr ""
+#~ "O tipo \"{0}\" deve poder ser conversível para \"{1}\" para poder utilizá-"
+#~ "lo como o parâmetro \"{2}\" no tipo genérico ou método \"{3}\""
+
+#~ msgid ""
+#~ "Type inference failed to infer type argument for `{0}' clause. Try "
+#~ "specifying the type argument explicitly"
+#~ msgstr ""
+#~ "Inferência de tipo falhou para inferir o tipo do argumento da cláusula "
+#~ "\"{0}\". Tente especificar o tipo de argumento explicitamente"
+
+#~ msgid "Source filenames `{0}' and `{1}' both refer to the same file: {2}"
+#~ msgstr ""
+#~ "Nomes de arquivos de código fonte \"{0}\" e \"{1}\" se referem ambos ao "
+#~ "mesmo arquivo: {2}"
+
+#~ msgid "The modifier `"
+#~ msgstr "O modificador \""
+
+#~ msgid "An assembly `{0}' is used without being referenced"
+#~ msgstr "Um assembly \"{0}\" é utilizado sem ser referenciado"
+
+#~ msgid "Using the generic type `{0}' requires `{1}' type argument(s)"
+#~ msgstr ""
+#~ "Utilizar o tipo genérico \"{0}\" requer o(s) argumento(s) de tipo \"{1}\""
+
+#~ msgid "The non-generic {0} `{1}' cannot be used with the type arguments"
+#~ msgstr ""
+#~ "O não-genérico {0} \"{1}\" não pode ser utilizado com os argumentos de "
+#~ "tipo"
+
+#~ msgid "You cannot redefine the global extern alias"
+#~ msgstr "Você não pode redefinir o alias externo global"
+
+#~ msgid ""
+#~ "Feature `{0}' is not available in Mono mcs1 compiler. Consider using the "
+#~ "`gmcs' compiler instead"
+#~ msgstr ""
+#~ "O recurso \"{0}\" não está disponível no compilador Mono mcs1. Considere "
+#~ "utilizar, ao invés deste, o compilador \"gmcs\""
+
+#~ msgid ""
+#~ "Feature `{0}' cannot be used because it is not part of the C# {1} "
+#~ "language specification"
+#~ msgstr ""
+#~ "O recurso \"{0}\" não pode ser utilizado por que não faz parte da "
+#~ "especificação da linguagem C# {1}"
+
+#~ msgid ""
+#~ "Your .NET Runtime does not support `{0}'. Please use the latest Mono "
+#~ "runtime instead."
+#~ msgstr ""
+#~ "Seu runtime do .NET não tem suporte a(o) \"{0}\". Por favor, utilize o "
+#~ "runtime do Mono mais recente."
+
+#~ msgid "A value of an integral type or string expected for switch"
+#~ msgstr "Um valor de um tipo integral ou string esperados para o switch"
+
+#~ msgid "Internal error: No Dispose method which takes 0 parameters."
+#~ msgstr "Erro interno: Nenhum método Dispose que pegue 0 parâmetros."
+
+#~ msgid ""
+#~ "Friend access was granted to `{0}', but the output assembly is named `"
+#~ "{1}'. Try adding a reference to `{0}' or change the output assembly name "
+#~ "to match it"
+#~ msgstr ""
+#~ "Acesso amigável foi permitido para \"{0}\", mas a saída do assembly é "
+#~ "nomeada \"{1}\".  Tente adicionar uma referência para \"{0}\"  ou alterar "
+#~ "a saída do assembly para igualar isso"
+
+#~ msgid ""
+#~ "Struct member `{0}.{1}' of type `{2}' causes a cycle in the struct layout"
+#~ msgstr ""
+#~ "Membro da estrutura \"{0}.{1}\" do tipo \"{2}\" causa um ciclo no layout "
+#~ "de structs"
+
+#~ msgid ""
+#~ "Could not find the symbol writer assembly (Mono.CompilerServices."
+#~ "SymbolWriter.dll). This is normally an installation problem. Please make "
+#~ "sure to compile and install the mcs/class/Mono.CompilerServices."
+#~ "SymbolWriter directory."
+#~ msgstr ""
+#~ "Não foi possível encontrar o símbolo escritor do assembly (Mono."
+#~ "CompilerServices.SymbolWriter.dll). Isso é normalmente um problema de "
+#~ "instalação. Por favor tenha certeza de compilar e instalar o diretório "
+#~ "mcs/class/Mono.CompilerServices.SymbolWriter."
diff --git a/runtime/Makefile.am b/runtime/Makefile.am
index 24f9210..ec9f357 100644
--- a/runtime/Makefile.am
+++ b/runtime/Makefile.am
@@ -24,6 +24,20 @@ $(symlinks):
 
 SUPPORT_FILES = $(symlinks) mono-wrapper etc/mono/config
 
+if MOONLIGHT
+moon-do-basic: Makefile $(SUPPORT_FILES)
+	cd $(mcs_topdir)/class/Mono.Cecil && $(MAKE) PROFILE=basic
+	cd $(mcs_topdir)/class/Mono.Cecil.Mdb && $(MAKE) PROFILE=basic
+	cd $(mcs_topdir)/tools/linker && $(MAKE) PROFILE=basic
+	cd $(mcs_topdir)/tools/tuner && $(MAKE) PROFILE=basic
+
+moon-do-basic-clean:
+	cd $(mcs_topdir)/class/Mono.Cecil && $(MAKE) PROFILE=basic clean
+	cd $(mcs_topdir)/class/Mono.Cecil.Mdb && $(MAKE) PROFILE=basic clean
+	cd $(mcs_topdir)/tools/linker && $(MAKE) PROFILE=basic clean
+	cd $(mcs_topdir)/tools/tuner && $(MAKE) PROFILE=basic clean
+endif
+
 if ONLY_MOONLIGHT
 build_profiles = moonlight_raw
 test_profiles = moonlight_raw
@@ -35,6 +49,16 @@ test_profiles = $(build_profiles)
 if MOONLIGHT
 build_profiles += moonlight_raw
 test_profiles += moonlight_raw
+
+moon-do-moonlight-raw: Makefile $(SUPPORT_FILES)
+	cd $(mcs_topdir) && $(MAKE) NO_DIR_CHECK=1 PROFILES='moonlight_raw' CC='$(CC)' all-profiles
+
+moon-do-moonlight-raw-clean:
+	cd $(mcs_topdir) && $(MAKE) NO_DIR_CHECK=1 PROFILES='moonlight_raw' CC='$(CC)' clean-profiles
+
+moon-do-build: moon-do-moonlight-raw moon-do-basic
+moon-do-clean: moon-do-moonlight-raw-clean moon-do-basic-clean
+
 endif
 
 if INSTALL_4_0
@@ -42,6 +66,10 @@ build_profiles += net_4_0
 #test_profiles += net_4_0
 endif
 
+if INSTALL_MONODROID
+build_profiles += monodroid
+endif
+
 if INSTALL_MONOTOUCH
 build_profiles += monotouch
 endif
@@ -78,7 +106,7 @@ clean-local:
 
 endif BUILD_MCS
 
-TEST_SUPPORT_FILES = $(tmpinst)/bin/mono $(tmpinst)/bin/ilasm $(tmpinst)/bin/gmcs $(tmpinst)/bin/dmcs $(tmpinst)/bin/al2
+TEST_SUPPORT_FILES = $(tmpinst)/bin/mono $(tmpinst)/bin/ilasm $(tmpinst)/bin/gmcs $(tmpinst)/bin/dmcs $(tmpinst)/bin/al2 $(tmpinst)/bin/al
 
 # now a misnomer, but it'll go away soon enough.
 if ENABLE_NUNIT_TESTS
@@ -174,6 +202,12 @@ $(tmpinst)/bin/al2: $(tmpinst)/bin/mono Makefile
 	echo 'exec "'"$$r/$(tmpinst)/bin/mono"'" "'"$$m/class/lib/net_2_0/al.exe"'" "$$@"' >> $@ ; \
 	chmod +x $@
 
+$(tmpinst)/bin/al: $(tmpinst)/bin/mono Makefile
+	echo '#! /bin/sh' > $@ ; \
+	r=`pwd`; m=`cd $(mcs_topdir) && pwd`; \
+	echo 'exec "'"$$r/$(tmpinst)/bin/mono"'" "'"$$m/class/lib/net_4_0/al.exe"'" "$$@"' >> $@ ; \
+	chmod +x $@
+
 test-support-files: $(TEST_SUPPORT_FILES)
 	@:
 
diff --git a/runtime/Makefile.in b/runtime/Makefile.in
index 5622f38..f4bca97 100644
--- a/runtime/Makefile.in
+++ b/runtime/Makefile.in
@@ -38,7 +38,8 @@ target_triplet = @target@
 @MOONLIGHT_TRUE@@ONLY_MOONLIGHT_FALSE at am__append_3 = moonlight_raw
 @INSTALL_4_0_TRUE@@ONLY_MOONLIGHT_FALSE at am__append_4 = net_4_0
 #test_profiles += net_4_0
- at INSTALL_MONOTOUCH_TRUE@@ONLY_MOONLIGHT_FALSE at am__append_5 = monotouch
+ at INSTALL_MONODROID_TRUE@@ONLY_MOONLIGHT_FALSE at am__append_5 = monodroid
+ at INSTALL_MONOTOUCH_TRUE@@ONLY_MOONLIGHT_FALSE at am__append_6 = monotouch
 subdir = runtime
 DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
 	$(srcdir)/mono-wrapper.in $(srcdir)/monodis-wrapper.in
@@ -142,6 +143,7 @@ MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
 MONO_DL_NEED_USCORE = @MONO_DL_NEED_USCORE@
 MONO_NACL_ALIGN_MASK_OFF = @MONO_NACL_ALIGN_MASK_OFF@
+MOONLIGHT_DEFINES = @MOONLIGHT_DEFINES@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
@@ -261,13 +263,15 @@ symlinks = etc/mono/1.0/machine.config etc/mono/2.0/machine.config \
 	etc/mono/2.0/Browsers/Compat.browser $(am__append_1)
 SUPPORT_FILES = $(symlinks) mono-wrapper etc/mono/config
 @ONLY_MOONLIGHT_FALSE at build_profiles = net_2_0 net_3_5 $(am__append_2) \
- at ONLY_MOONLIGHT_FALSE@	$(am__append_4) $(am__append_5)
+ at ONLY_MOONLIGHT_FALSE@	$(am__append_4) $(am__append_5) \
+ at ONLY_MOONLIGHT_FALSE@	$(am__append_6)
 @ONLY_MOONLIGHT_TRUE at build_profiles = moonlight_raw $(am__append_2) \
- at ONLY_MOONLIGHT_TRUE@	$(am__append_4) $(am__append_5)
+ at ONLY_MOONLIGHT_TRUE@	$(am__append_4) $(am__append_5) \
+ at ONLY_MOONLIGHT_TRUE@	$(am__append_6)
 @ONLY_MOONLIGHT_FALSE at test_profiles = $(build_profiles) \
 @ONLY_MOONLIGHT_FALSE@	$(am__append_3)
 @ONLY_MOONLIGHT_TRUE at test_profiles = moonlight_raw $(am__append_3)
-TEST_SUPPORT_FILES = $(tmpinst)/bin/mono $(tmpinst)/bin/ilasm $(tmpinst)/bin/gmcs $(tmpinst)/bin/dmcs $(tmpinst)/bin/al2
+TEST_SUPPORT_FILES = $(tmpinst)/bin/mono $(tmpinst)/bin/ilasm $(tmpinst)/bin/gmcs $(tmpinst)/bin/dmcs $(tmpinst)/bin/al2 $(tmpinst)/bin/al
 @ENABLE_NUNIT_TESTS_FALSE at test_select = ONLY_CENTUM_TESTS=yes
 
 # now a misnomer, but it'll go away soon enough.
@@ -441,6 +445,27 @@ etc/mono/4.0/web.config: $(top_srcdir)/data/net_4_0/web.config
 $(symlinks):
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 
+ at MOONLIGHT_TRUE@moon-do-basic: Makefile $(SUPPORT_FILES)
+ at MOONLIGHT_TRUE@	cd $(mcs_topdir)/class/Mono.Cecil && $(MAKE) PROFILE=basic
+ at MOONLIGHT_TRUE@	cd $(mcs_topdir)/class/Mono.Cecil.Mdb && $(MAKE) PROFILE=basic
+ at MOONLIGHT_TRUE@	cd $(mcs_topdir)/tools/linker && $(MAKE) PROFILE=basic
+ at MOONLIGHT_TRUE@	cd $(mcs_topdir)/tools/tuner && $(MAKE) PROFILE=basic
+
+ at MOONLIGHT_TRUE@moon-do-basic-clean:
+ at MOONLIGHT_TRUE@	cd $(mcs_topdir)/class/Mono.Cecil && $(MAKE) PROFILE=basic clean
+ at MOONLIGHT_TRUE@	cd $(mcs_topdir)/class/Mono.Cecil.Mdb && $(MAKE) PROFILE=basic clean
+ at MOONLIGHT_TRUE@	cd $(mcs_topdir)/tools/linker && $(MAKE) PROFILE=basic clean
+ at MOONLIGHT_TRUE@	cd $(mcs_topdir)/tools/tuner && $(MAKE) PROFILE=basic clean
+
+ at MOONLIGHT_TRUE@@ONLY_MOONLIGHT_FALSE at moon-do-moonlight-raw: Makefile $(SUPPORT_FILES)
+ at MOONLIGHT_TRUE@@ONLY_MOONLIGHT_FALSE@	cd $(mcs_topdir) && $(MAKE) NO_DIR_CHECK=1 PROFILES='moonlight_raw' CC='$(CC)' all-profiles
+
+ at MOONLIGHT_TRUE@@ONLY_MOONLIGHT_FALSE at moon-do-moonlight-raw-clean:
+ at MOONLIGHT_TRUE@@ONLY_MOONLIGHT_FALSE@	cd $(mcs_topdir) && $(MAKE) NO_DIR_CHECK=1 PROFILES='moonlight_raw' CC='$(CC)' clean-profiles
+
+ at MOONLIGHT_TRUE@@ONLY_MOONLIGHT_FALSE at moon-do-build: moon-do-moonlight-raw moon-do-basic
+ at MOONLIGHT_TRUE@@ONLY_MOONLIGHT_FALSE at moon-do-clean: moon-do-moonlight-raw-clean moon-do-basic-clean
+
 # The write check is to foil 'make distcheck'
 @BUILD_MCS_TRUE at all-local: $(SUPPORT_FILES) $(TEST_SUPPORT_FILES)
 @BUILD_MCS_TRUE@	if test -w $(mcs_topdir); then :; else chmod -R +w $(mcs_topdir); fi
@@ -538,6 +563,12 @@ $(tmpinst)/bin/al2: $(tmpinst)/bin/mono Makefile
 	echo 'exec "'"$$r/$(tmpinst)/bin/mono"'" "'"$$m/class/lib/net_2_0/al.exe"'" "$$@"' >> $@ ; \
 	chmod +x $@
 
+$(tmpinst)/bin/al: $(tmpinst)/bin/mono Makefile
+	echo '#! /bin/sh' > $@ ; \
+	r=`pwd`; m=`cd $(mcs_topdir) && pwd`; \
+	echo 'exec "'"$$r/$(tmpinst)/bin/mono"'" "'"$$m/class/lib/net_4_0/al.exe"'" "$$@"' >> $@ ; \
+	chmod +x $@
+
 test-support-files: $(TEST_SUPPORT_FILES)
 	@:
 distdir: $(MYDISTFILES)
diff --git a/samples/Makefile.in b/samples/Makefile.in
index 4b4fe37..9ab7645 100644
--- a/samples/Makefile.in
+++ b/samples/Makefile.in
@@ -133,6 +133,7 @@ MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
 MONO_DL_NEED_USCORE = @MONO_DL_NEED_USCORE@
 MONO_NACL_ALIGN_MASK_OFF = @MONO_NACL_ALIGN_MASK_OFF@
+MOONLIGHT_DEFINES = @MOONLIGHT_DEFINES@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
diff --git a/samples/embed/test-invoke.c b/samples/embed/test-invoke.c
index 8779ce3..9d53716 100644
--- a/samples/embed/test-invoke.c
+++ b/samples/embed/test-invoke.c
@@ -5,7 +5,10 @@
 #include <mono/metadata/debug-helpers.h>
 #include <string.h>
 #include <stdlib.h>
-#include <glib.h>
+
+#ifndef FALSE
+#define FALSE 0
+#endif
 
 /*
  * Simple mono embedding example.
@@ -76,7 +79,7 @@ access_reference_field (MonoObject *obj)
 	p = mono_string_to_utf8 (strval);
 	printf ("Value of str is: %s\n", p);
 	/* we need to free the result from mono_string_to_utf8 () */
-	g_free (p);
+	mono_free (p);
 
 	/* string are immutable, so we need to create a different string */
 	strval = mono_string_new (domain, "hello from the embedding API");
@@ -99,8 +102,8 @@ call_methods (MonoObject *obj)
 	MonoObject *result, *exception;
 	MonoString *str;
 	char *p;
-	gpointer iter;
-	gpointer args [2];
+	void* iter;
+	void* args [2];
 	int val;
 
 	klass = mono_object_get_class (obj);
@@ -164,7 +167,7 @@ call_methods (MonoObject *obj)
 	p = mono_string_to_utf8 (str);
 	printf ("Value of str from property is: %s\n", p);
 	/* we need to free the result from mono_string_to_utf8 () */
-	g_free (p);
+	mono_free (p);
 
 	/* Now we'll show two things:
 	 * 1) static methods are invoked with mono_runtime_invoke () as well,
@@ -205,7 +208,7 @@ call_methods (MonoObject *obj)
 	p = mono_string_to_utf8 (str);
 	printf ("Values of str/val from Values () are: %s/%d\n", p, val);
 	/* we need to free the result from mono_string_to_utf8 () */
-	g_free (p);
+	mono_free (p);
 }
 
 static void
@@ -241,7 +244,7 @@ more_methods (MonoDomain *domain)
 	p = mono_string_to_utf8 (str);
 	printf ("25.ToString (): %s\n", p);
 	/* we need to free the result from mono_string_to_utf8 () */
-	g_free (p);
+	mono_free (p);
 
 	/* Now: see how the result is different if we search for the ToString ()
 	 * method in System.Object: mono_runtime_invoke () doesn't do any sort of
@@ -255,7 +258,7 @@ more_methods (MonoDomain *domain)
 	p = mono_string_to_utf8 (str);
 	printf ("25.ToString (), from System.Object: %s\n", p);
 	/* we need to free the result from mono_string_to_utf8 () */
-	g_free (p);
+	mono_free (p);
 
 	/* Now get the method that overrides ToString () in obj */
 	vtmethod = mono_object_get_virtual_method (obj, method);
diff --git a/scripts/Makefile.am b/scripts/Makefile.am
index c15e86e..54b470f 100644
--- a/scripts/Makefile.am
+++ b/scripts/Makefile.am
@@ -31,11 +31,11 @@ bin_SCRIPTS = \
 	$(scripts_service)	\
 	$(scripts_nunit)	\
 	$(scripts_rpmhelpers)	\
-	$(scripts_mcs)		\
 	$(MDOC_SUBCOMMANDS)	\
 	$(MDOC_COMPAT)		\
 	mono-test-install	\
 	peverify			\
+	mcs					\
 	mono-heapviz		\
 	$(scripts_mono_configuration_crypto)
 
@@ -56,6 +56,7 @@ scripts_2_0 = \
 	csharp2$(SCRIPT_SUFFIX)			\
 	gacutil2$(SCRIPT_SUFFIX)		\
 	gmcs$(SCRIPT_SUFFIX)			\
+	mdoc$(SCRIPT_SUFFIX)                    \
 	monop2$(SCRIPT_SUFFIX) 			\
 	resgen2$(SCRIPT_SUFFIX)			\
 	wsdl2$(SCRIPT_SUFFIX)
@@ -68,7 +69,6 @@ scripts_4_0 = \
 	installvst$(SCRIPT_SUFFIX)		\
 	genxs$(SCRIPT_SUFFIX)			\
 	macpack$(SCRIPT_SUFFIX)			\
-	mdoc$(SCRIPT_SUFFIX)                    \
 	mono-cil-strip$(SCRIPT_SUFFIX)		\
 	prj2make$(SCRIPT_SUFFIX)		\
 	soapsuds$(SCRIPT_SUFFIX)		\
@@ -132,10 +132,9 @@ scripts_defaults = 		\
 scripts_service = mono-service mono-service2
 scripts_nunit = nunit-console$(SCRIPT_SUFFIX) nunit-console2$(SCRIPT_SUFFIX)
 scripts_rpmhelpers = mono-find-provides mono-find-requires
-scripts_mcs = mcs$(SCRIPT_SUFFIX)
 scripts_mono_configuration_crypto = mono-configuration-crypto$(SCRIPT_SUFFIX)
 
-CLEANFILES = $(scripts_mono_configuration_crypto) $(scripts_mcs) $(scripts_4_0_umask) $(scripts_2_0) $(scripts_defaults) $(scripts_4_0) mono-service mono-service2 nunit-console nunit-console2 mono-find-provides mono-find-requires mod $(MDOC_SUBCOMMANDS)
+CLEANFILES = $(scripts_mono_configuration_crypto) $(scripts_4_0_umask) $(scripts_2_0) $(scripts_defaults) $(scripts_4_0) mono-service mono-service2 nunit-console nunit-console2 mono-find-provides mono-find-requires mod $(MDOC_SUBCOMMANDS)
 DISTCLEANFILES = $(pkgconfig_DATA) $(scripts_rpmhelpers)
 
 EXTRA_DIST =			\
@@ -148,6 +147,7 @@ EXTRA_DIST =			\
 	mono-find-provides.in	\
 	mono-find-requires.in	\
 	peverify.in			\
+	mcs.in				\
 	mono-test-install	\
 	mono-heapviz		\
 	$(MDOC_COMPAT)		\
@@ -197,6 +197,10 @@ peverify: peverify.in Makefile
 	$(REWRITE_COMMON) $(srcdir)/peverify.in > $@.tmp
 	mv -f $@.tmp $@
 
+mcs: mcs.in Makefile
+	$(REWRITE_COMMON) $(srcdir)/mcs.in > $@.tmp
+	mv -f $@.tmp $@
+
 mono-service: mono-service.in Makefile
 	$(REWRITE4) -e 's,@''exe_name@,$@,g' $(srcdir)/mono-service.in > $@.tmp
 	mv -f $@.tmp $@
@@ -224,10 +228,6 @@ $(scripts_4_0_umask): script_umask.in Makefile
 	$(REWRITE4) -e "s,@""exe_name@,$$n,g" $(srcdir)/script_umask.in | $(FILTER) > $@.tmp
 	mv -f $@.tmp $@
 
-mcs$(SCRIPT_SUFFIX): $(SCRIPT_IN) Makefile
-	$(REWRITE2) -e "s, at exe_name@,gmcs,g" $(srcdir)/$(SCRIPT_IN) > $@.tmp
-	mv -f $@.tmp $@
-
 $(scripts_defaults): $(SCRIPT_IN) Makefile
 	n=`echo $@ | sed 's,$(COMPAT_4_0_SUFFIX)$$,,'`; \
 	$(REWRITE4) -e "s,@""exe_name@,$$n,g" $(srcdir)/$(SCRIPT_IN) | $(FILTER) > $@.tmp
diff --git a/scripts/Makefile.in b/scripts/Makefile.in
index 9900efc..4820790 100644
--- a/scripts/Makefile.in
+++ b/scripts/Makefile.in
@@ -140,6 +140,7 @@ MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
 MONO_DL_NEED_USCORE = @MONO_DL_NEED_USCORE@
 MONO_NACL_ALIGN_MASK_OFF = @MONO_NACL_ALIGN_MASK_OFF@
+MOONLIGHT_DEFINES = @MOONLIGHT_DEFINES@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
@@ -272,9 +273,9 @@ COMPAT_2_0_SUFFIX = 2$(SCRIPT_SUFFIX)
 COMPAT_4_0_SUFFIX = 4$(SCRIPT_SUFFIX)
 bin_SCRIPTS = $(scripts_4_0_umask) $(scripts_defaults) $(scripts_2_0) \
 	$(scripts_service) $(scripts_nunit) $(scripts_rpmhelpers) \
-	$(scripts_mcs) $(MDOC_SUBCOMMANDS) $(MDOC_COMPAT) \
-	mono-test-install peverify mono-heapviz \
-	$(scripts_mono_configuration_crypto) $(am__append_1)
+	$(MDOC_SUBCOMMANDS) $(MDOC_COMPAT) mono-test-install peverify \
+	mcs mono-heapviz $(scripts_mono_configuration_crypto) \
+	$(am__append_1)
 scripts_4_0_umask = \
 	makecert$(SCRIPT_SUFFIX)		\
 	sn$(SCRIPT_SUFFIX)
@@ -288,6 +289,7 @@ scripts_2_0 = \
 	csharp2$(SCRIPT_SUFFIX)			\
 	gacutil2$(SCRIPT_SUFFIX)		\
 	gmcs$(SCRIPT_SUFFIX)			\
+	mdoc$(SCRIPT_SUFFIX)                    \
 	monop2$(SCRIPT_SUFFIX) 			\
 	resgen2$(SCRIPT_SUFFIX)			\
 	wsdl2$(SCRIPT_SUFFIX)
@@ -300,7 +302,6 @@ scripts_4_0 = \
 	installvst$(SCRIPT_SUFFIX)		\
 	genxs$(SCRIPT_SUFFIX)			\
 	macpack$(SCRIPT_SUFFIX)			\
-	mdoc$(SCRIPT_SUFFIX)                    \
 	mono-cil-strip$(SCRIPT_SUFFIX)		\
 	prj2make$(SCRIPT_SUFFIX)		\
 	soapsuds$(SCRIPT_SUFFIX)		\
@@ -365,9 +366,8 @@ scripts_defaults = \
 scripts_service = mono-service mono-service2
 scripts_nunit = nunit-console$(SCRIPT_SUFFIX) nunit-console2$(SCRIPT_SUFFIX)
 scripts_rpmhelpers = mono-find-provides mono-find-requires
-scripts_mcs = mcs$(SCRIPT_SUFFIX)
 scripts_mono_configuration_crypto = mono-configuration-crypto$(SCRIPT_SUFFIX)
-CLEANFILES = $(scripts_mono_configuration_crypto) $(scripts_mcs) $(scripts_4_0_umask) $(scripts_2_0) $(scripts_defaults) $(scripts_4_0) mono-service mono-service2 nunit-console nunit-console2 mono-find-provides mono-find-requires mod $(MDOC_SUBCOMMANDS)
+CLEANFILES = $(scripts_mono_configuration_crypto) $(scripts_4_0_umask) $(scripts_2_0) $(scripts_defaults) $(scripts_4_0) mono-service mono-service2 nunit-console nunit-console2 mono-find-provides mono-find-requires mod $(MDOC_SUBCOMMANDS)
 DISTCLEANFILES = $(pkgconfig_DATA) $(scripts_rpmhelpers)
 EXTRA_DIST = \
 	script.in		\
@@ -379,6 +379,7 @@ EXTRA_DIST = \
 	mono-find-provides.in	\
 	mono-find-requires.in	\
 	peverify.in			\
+	mcs.in				\
 	mono-test-install	\
 	mono-heapviz		\
 	$(MDOC_COMPAT)		\
@@ -607,6 +608,10 @@ peverify: peverify.in Makefile
 	$(REWRITE_COMMON) $(srcdir)/peverify.in > $@.tmp
 	mv -f $@.tmp $@
 
+mcs: mcs.in Makefile
+	$(REWRITE_COMMON) $(srcdir)/mcs.in > $@.tmp
+	mv -f $@.tmp $@
+
 mono-service: mono-service.in Makefile
 	$(REWRITE4) -e 's,@''exe_name@,$@,g' $(srcdir)/mono-service.in > $@.tmp
 	mv -f $@.tmp $@
@@ -634,10 +639,6 @@ $(scripts_4_0_umask): script_umask.in Makefile
 	$(REWRITE4) -e "s,@""exe_name@,$$n,g" $(srcdir)/script_umask.in | $(FILTER) > $@.tmp
 	mv -f $@.tmp $@
 
-mcs$(SCRIPT_SUFFIX): $(SCRIPT_IN) Makefile
-	$(REWRITE2) -e "s, at exe_name@,gmcs,g" $(srcdir)/$(SCRIPT_IN) > $@.tmp
-	mv -f $@.tmp $@
-
 $(scripts_defaults): $(SCRIPT_IN) Makefile
 	n=`echo $@ | sed 's,$(COMPAT_4_0_SUFFIX)$$,,'`; \
 	$(REWRITE4) -e "s,@""exe_name@,$$n,g" $(srcdir)/$(SCRIPT_IN) | $(FILTER) > $@.tmp
diff --git a/scripts/get-cygwin-deps.sh b/scripts/get-cygwin-deps.sh
index 3db8341..679ae3f 100755
--- a/scripts/get-cygwin-deps.sh
+++ b/scripts/get-cygwin-deps.sh
@@ -41,7 +41,6 @@ echo "done."
 
 echo -n "Extracting to cygwin-deps/ ..."
 (cd $dir && for i in *.zip; do unzip -oq $i || exit 1; done) || exit 1
-(cd $dir && for i in *.tar.gz; do tar xzf $i || exit 1; done) || exit 1
 # This is needed because windows can't use dll's without an x flag.
 chmod a+x $dir/bin/*.dll
 echo "done."
@@ -62,4 +61,4 @@ echo "export PATH=\"$PWD/$dir/bin:\$PATH\"" >> $dir/env.sh
 
 echo "Source $dir/env.sh into your environment using:"
 echo ". $dir/env.sh"
-echo "Then run mono's configure."
\ No newline at end of file
+echo "Then run mono's configure."
diff --git a/scripts/mcs.in b/scripts/mcs.in
new file mode 100644
index 0000000..32498fa
--- /dev/null
+++ b/scripts/mcs.in
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec @bindir@/mono $MONO_OPTIONS @mono_instdir@/2.0/mcs.exe -lib:@mono_instdir@/2.0 -lib:@mono_instdir@/3.5 "$@"
diff --git a/scripts/mono-heapviz b/scripts/mono-heapviz
index fe13da6..27b6f7f 100755
--- a/scripts/mono-heapviz
+++ b/scripts/mono-heapviz
@@ -156,6 +156,7 @@ class DocHandler (ContentHandler):
             self.usage = {}
             self.los_usage = {}
             self.pinned_usage = {}
+            self.occupancies = {}
             self.in_los = False
             self.in_pinned = False
             self.heap_used = 0
@@ -169,6 +170,13 @@ class DocHandler (ContentHandler):
             kind = attrs.get('type', None)
             bytes = int(attrs.get('bytes', None))
             print ('Pinned from %s: %d kB<br>' % (kind, bytes / 1024), file = self.collection_file)
+        elif name == 'occupancy':
+            size = int (attrs.get ('size', None))
+            available = int (attrs.get ('available', None))
+            used = int (attrs.get ('used', None))
+            unused = available - used
+
+            print ('Occupancy of %d byte slots: %d / %d (%d kB / %d%% wasted)<br>' % (size, used, available, unused * size / 1024, unused * 100 / available), file = self.collection_file)
         elif name == 'section':
             kind = attrs.get('type', None)
             size = int(attrs.get('size', None))
diff --git a/support/ChangeLog b/support/ChangeLog
index 58224ea..45e9dfc 100644
--- a/support/ChangeLog
+++ b/support/ChangeLog
@@ -1,3 +1,21 @@
+2010-11-14  Zoltan Varga  <vargaz at gmail.com>
+
+	Remove the unused and incomplete CMake build scripts for now.
+
+2010-10-22  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Update mappings after latest changes to Mono.Posix
+
+	New mappings created for the epoll code.
+
+2010-10-22  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Update
+
+2010-10-22  Gonzalo Paniagua Javier  <gonzalo.mono at gmail.com>
+
+	Update zlib to version 1.2.5
+
 2010-06-28  Zoltan Varga  <vargaz at gmail.com>
 
 	* Makefile.am (patch-libtool): Fix this up after the dolt changes.
diff --git a/support/ChangeLog b/support/ChangeLog.old
similarity index 100%
copy from support/ChangeLog
copy to support/ChangeLog.old
diff --git a/support/Makefile.am b/support/Makefile.am
index fbed51a..c64bfc8 100644
--- a/support/Makefile.am
+++ b/support/Makefile.am
@@ -71,7 +71,6 @@ ZLIB_SOURCES = \
 	adler32.c	\
 	compress.c	\
 	crc32.c		\
-	gzio.c		\
 	uncompr.c	\
 	deflate.c	\
 	trees.c		\
diff --git a/support/Makefile.in b/support/Makefile.in
index d4424cc..1c33bb9 100644
--- a/support/Makefile.in
+++ b/support/Makefile.in
@@ -67,7 +67,7 @@ am__libMonoPosixHelper_la_SOURCES_DIST = errno.c map.c map.h mph.h \
 	sys-mman.c sys-sendfile.c sys-stat.c sys-statvfs.c sys-time.c \
 	sys-utsname.c sys-wait.c sys-xattr.c syslog.c time.c unistd.c \
 	utime.c x-struct-str.c zlib-helper.c adler32.c compress.c \
-	crc32.c gzio.c uncompr.c deflate.c trees.c zutil.c inflate.c \
+	crc32.c uncompr.c deflate.c trees.c zutil.c inflate.c \
 	infback.c inftrees.c inffast.c crc32.h deflate.h inffast.h \
 	inffixed.h inflate.h inftrees.h trees.h zconf.h zlib.h zutil.h \
 	minizip/crypt.h minizip/ioapi.c minizip/ioapi.h \
@@ -80,9 +80,8 @@ am__objects_2 = dirent.lo fcntl.lo fstab.lo grp.lo macros.lo \
 	x-struct-str.lo
 @HOST_WIN32_FALSE at am__objects_3 = $(am__objects_1) $(am__objects_2)
 @HOST_WIN32_TRUE at am__objects_3 = $(am__objects_1)
-am__objects_4 = adler32.lo compress.lo crc32.lo gzio.lo uncompr.lo \
-	deflate.lo trees.lo zutil.lo inflate.lo infback.lo inftrees.lo \
-	inffast.lo
+am__objects_4 = adler32.lo compress.lo crc32.lo uncompr.lo deflate.lo \
+	trees.lo zutil.lo inflate.lo infback.lo inftrees.lo inffast.lo
 @HAVE_ZLIB_FALSE at am__objects_5 = zlib-helper.lo $(am__objects_4)
 @HAVE_ZLIB_TRUE at am__objects_5 = zlib-helper.lo
 am__objects_6 = ioapi.lo unzip.lo zip.lo
@@ -199,6 +198,7 @@ MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
 MONO_DL_NEED_USCORE = @MONO_DL_NEED_USCORE@
 MONO_NACL_ALIGN_MASK_OFF = @MONO_NACL_ALIGN_MASK_OFF@
+MOONLIGHT_DEFINES = @MOONLIGHT_DEFINES@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
@@ -375,7 +375,6 @@ ZLIB_SOURCES = \
 	adler32.c	\
 	compress.c	\
 	crc32.c		\
-	gzio.c		\
 	uncompr.c	\
 	deflate.c	\
 	trees.c		\
@@ -501,7 +500,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/fcntl.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/fstab.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grp.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gzio.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/infback.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/inffast.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/inflate.Plo at am__quote@
diff --git a/support/adler32.c b/support/adler32.c
index 8bf7dc4..65ad6a5 100644
--- a/support/adler32.c
+++ b/support/adler32.c
@@ -1,21 +1,15 @@
 /* adler32.c -- compute the Adler-32 checksum of a data stream
- * Copyright (C) 1995-2006 Mark Adler
+ * Copyright (C) 1995-2007 Mark Adler
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
 /* @(#) $Id$ */
 
-#define ZLIB_INTERNAL
-#include "zlib.h"
+#include "zutil.h"
 
 #define local static
 
-#ifdef _LARGEFILE64_SOURCE
-   local uLong adler32_combine_(uLong adler1, uLong adler2, off64_t len2);
-#else
-   local uLong adler32_combine_(uLong adler1, uLong adler2, z_off_t len2);
-#endif
-
+local uLong adler32_combine_(uLong adler1, uLong adler2, z_off64_t len2);
 
 #define BASE 65521UL    /* largest prime smaller than 65536 */
 #define NMAX 5552
@@ -137,11 +131,7 @@ uLong ZEXPORT adler32(adler, buf, len)
 local uLong adler32_combine_(adler1, adler2, len2)
     uLong adler1;
     uLong adler2;
-#ifdef _LARGEFILE64_SOURCE
-    off64_t len2;
-#else
-    z_off_t len2;
-#endif
+    z_off64_t len2;
 {
     unsigned long sum1;
     unsigned long sum2;
@@ -154,10 +144,10 @@ local uLong adler32_combine_(adler1, adler2, len2)
     MOD(sum2);
     sum1 += (adler2 & 0xffff) + BASE - 1;
     sum2 += ((adler1 >> 16) & 0xffff) + ((adler2 >> 16) & 0xffff) + BASE - rem;
-    if (sum1 > BASE) sum1 -= BASE;
-    if (sum1 > BASE) sum1 -= BASE;
-    if (sum2 > (BASE << 1)) sum2 -= (BASE << 1);
-    if (sum2 > BASE) sum2 -= BASE;
+    if (sum1 >= BASE) sum1 -= BASE;
+    if (sum1 >= BASE) sum1 -= BASE;
+    if (sum2 >= (BASE << 1)) sum2 -= (BASE << 1);
+    if (sum2 >= BASE) sum2 -= BASE;
     return sum1 | (sum2 << 16);
 }
 
@@ -170,20 +160,10 @@ uLong ZEXPORT adler32_combine(adler1, adler2, len2)
     return adler32_combine_(adler1, adler2, len2);
 }
 
-#ifdef _LARGEFILE64_SOURCE
 uLong ZEXPORT adler32_combine64(adler1, adler2, len2)
     uLong adler1;
     uLong adler2;
-    off64_t len2;
+    z_off64_t len2;
 {
     return adler32_combine_(adler1, adler2, len2);
 }
-#else
-uLong ZEXPORT adler32_combine64(adler1, adler2, len2)
-    uLong adler1;
-    uLong adler2;
-    z_off_t len2;
-{
-    return adler32_combine_(adler1, adler2, len2);
-}
-#endif
diff --git a/support/crc32.c b/support/crc32.c
index b34a510..91be372 100644
--- a/support/crc32.c
+++ b/support/crc32.c
@@ -1,5 +1,5 @@
 /* crc32.c -- compute the CRC-32 of a data stream
- * Copyright (C) 1995-2006 Mark Adler
+ * Copyright (C) 1995-2006, 2010 Mark Adler
  * For conditions of distribution and use, see copyright notice in zlib.h
  *
  * Thanks to Rodney Brown <rbrown64 at csc.com.au> for his contribution of faster
@@ -53,7 +53,7 @@
 
 /* Definitions for doing the crc four data bytes at a time. */
 #ifdef BYFOUR
-#  define REV(w) (((w)>>24)+(((w)>>8)&0xff00)+ \
+#  define REV(w) ((((w)>>24)&0xff)+(((w)>>8)&0xff00)+ \
                 (((w)&0xff00)<<8)+(((w)&0xff)<<24))
    local unsigned long crc32_little OF((unsigned long,
                         const unsigned char FAR *, unsigned));
@@ -68,11 +68,7 @@
 local unsigned long gf2_matrix_times OF((unsigned long *mat,
                                          unsigned long vec));
 local void gf2_matrix_square OF((unsigned long *square, unsigned long *mat));
-#ifdef _LARGEFILE64_SOURCE
-   local uLong crc32_combine_(uLong crc1, uLong crc2, off64_t len2);
-#else
-   local uLong crc32_combine_(uLong crc1, uLong crc2, z_off_t len2);
-#endif
+local uLong crc32_combine_(uLong crc1, uLong crc2, z_off64_t len2);
 
 
 #ifdef DYNAMIC_CRC_TABLE
@@ -225,7 +221,7 @@ const unsigned long FAR * ZEXPORT get_crc_table()
 unsigned long ZEXPORT crc32(crc, buf, len)
     unsigned long crc;
     const unsigned char FAR *buf;
-    unsigned len;
+    uInt len;
 {
     if (buf == Z_NULL) return 0UL;
 
@@ -376,23 +372,19 @@ local void gf2_matrix_square(square, mat)
 local uLong crc32_combine_(crc1, crc2, len2)
     uLong crc1;
     uLong crc2;
-#ifdef _LARGEFILE64_SOURCE
-    off64_t len2;
-#else
-    z_off_t len2;
-#endif
+    z_off64_t len2;
 {
     int n;
     unsigned long row;
     unsigned long even[GF2_DIM];    /* even-power-of-two zeros operator */
     unsigned long odd[GF2_DIM];     /* odd-power-of-two zeros operator */
 
-    /* degenerate case */
-    if (len2 == 0)
+    /* degenerate case (also disallow negative lengths) */
+    if (len2 <= 0)
         return crc1;
 
     /* put operator for one zero bit in odd */
-    odd[0] = 0xedb88320L;           /* CRC-32 polynomial */
+    odd[0] = 0xedb88320UL;          /* CRC-32 polynomial */
     row = 1;
     for (n = 1; n < GF2_DIM; n++) {
         odd[n] = row;
@@ -441,20 +433,10 @@ uLong ZEXPORT crc32_combine(crc1, crc2, len2)
     return crc32_combine_(crc1, crc2, len2);
 }
 
-#ifdef _LARGEFILE64_SOURCE
-uLong ZEXPORT crc32_combine64(crc1, crc2, len2)
-    uLong crc1;
-    uLong crc2;
-    off64_t len2;
-{
-    return crc32_combine_(crc1, crc2, len2);
-}
-#else
 uLong ZEXPORT crc32_combine64(crc1, crc2, len2)
     uLong crc1;
     uLong crc2;
-    z_off_t len2;
+    z_off64_t len2;
 {
     return crc32_combine_(crc1, crc2, len2);
 }
-#endif
diff --git a/support/deflate.c b/support/deflate.c
index fc41b80..5c4022f 100644
--- a/support/deflate.c
+++ b/support/deflate.c
@@ -1,5 +1,5 @@
 /* deflate.c -- compress data using the deflation algorithm
- * Copyright (C) 1995-2006 Jean-loup Gailly.
+ * Copyright (C) 1995-2010 Jean-loup Gailly and Mark Adler
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
@@ -52,7 +52,7 @@
 #include "deflate.h"
 
 const char deflate_copyright[] =
-   " deflate 1.2.3.3 Copyright 1995-2006 Jean-loup Gailly ";
+   " deflate 1.2.5 Copyright 1995-2010 Jean-loup Gailly and Mark Adler ";
 /*
   If you use the zlib library in a product, an acknowledgment is welcome
   in the documentation of your product. If for some reason you cannot
@@ -79,19 +79,18 @@ local block_state deflate_fast   OF((deflate_state *s, int flush));
 #ifndef FASTEST
 local block_state deflate_slow   OF((deflate_state *s, int flush));
 #endif
+local block_state deflate_rle    OF((deflate_state *s, int flush));
+local block_state deflate_huff   OF((deflate_state *s, int flush));
 local void lm_init        OF((deflate_state *s));
 local void putShortMSB    OF((deflate_state *s, uInt b));
 local void flush_pending  OF((z_streamp strm));
 local int read_buf        OF((z_streamp strm, Bytef *buf, unsigned size));
-#ifndef FASTEST
 #ifdef ASMV
       void match_init OF((void)); /* asm code initialization */
       uInt longest_match  OF((deflate_state *s, IPos cur_match));
 #else
 local uInt longest_match  OF((deflate_state *s, IPos cur_match));
 #endif
-#endif
-local uInt longest_match_fast OF((deflate_state *s, IPos cur_match));
 
 #ifdef DEBUG
 local  void check_match OF((deflate_state *s, IPos start, IPos match,
@@ -110,11 +109,6 @@ local  void check_match OF((deflate_state *s, IPos start, IPos match,
 #endif
 /* Matches of length 3 are discarded if their distance exceeds TOO_FAR */
 
-#define MIN_LOOKAHEAD (MAX_MATCH+MIN_MATCH+1)
-/* Minimum amount of lookahead, except at the end of the input file.
- * See deflate.c for comments about the MIN_MATCH+1.
- */
-
 /* Values for max_lazy_match, good_match and max_chain_length, depending on
  * the desired pack level (0..9). The values given below have been tuned to
  * exclude worst case performance for pathological files. Better values may be
@@ -288,6 +282,8 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
     s->prev   = (Posf *)  ZALLOC(strm, s->w_size, sizeof(Pos));
     s->head   = (Posf *)  ZALLOC(strm, s->hash_size, sizeof(Pos));
 
+    s->high_water = 0;      /* nothing written to s->window yet */
+
     s->lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */
 
     overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);
@@ -332,8 +328,8 @@ int ZEXPORT deflateSetDictionary (strm, dictionary, dictLength)
         strm->adler = adler32(strm->adler, dictionary, dictLength);
 
     if (length < MIN_MATCH) return Z_OK;
-    if (length > MAX_DIST(s)) {
-        length = MAX_DIST(s);
+    if (length > s->w_size) {
+        length = s->w_size;
         dictionary += dictLength - length; /* use the tail of the dictionary */
     }
     zmemcpy(s->window, dictionary, length);
@@ -435,9 +431,10 @@ int ZEXPORT deflateParams(strm, level, strategy)
     }
     func = configuration_table[s->level].func;
 
-    if (func != configuration_table[level].func && strm->total_in != 0) {
+    if ((strategy != s->strategy || func != configuration_table[level].func) &&
+        strm->total_in != 0) {
         /* Flush the last buffer: */
-        err = deflate(strm, Z_PARTIAL_FLUSH);
+        err = deflate(strm, Z_BLOCK);
     }
     if (s->level != level) {
         s->level = level;
@@ -513,16 +510,16 @@ uLong ZEXPORT deflateBound(strm, sourceLen)
         break;
     case 2:                                 /* gzip wrapper */
         wraplen = 18;
-        if (s->gzhead != NULL) {            /* user-supplied gzip header */
-            if (s->gzhead->extra != NULL)
+        if (s->gzhead != Z_NULL) {          /* user-supplied gzip header */
+            if (s->gzhead->extra != Z_NULL)
                 wraplen += 2 + s->gzhead->extra_len;
             str = s->gzhead->name;
-            if (str != NULL)
+            if (str != Z_NULL)
                 do {
                     wraplen++;
                 } while (*str++);
             str = s->gzhead->comment;
-            if (str != NULL)
+            if (str != Z_NULL)
                 do {
                     wraplen++;
                 } while (*str++);
@@ -539,7 +536,8 @@ uLong ZEXPORT deflateBound(strm, sourceLen)
         return complen + wraplen;
 
     /* default settings: return tight bound for that case */
-    return compressBound(sourceLen) - 6 + wraplen;
+    return sourceLen + (sourceLen >> 12) + (sourceLen >> 14) +
+           (sourceLen >> 25) + 13 - 6 + wraplen;
 }
 
 /* =========================================================================
@@ -589,7 +587,7 @@ int ZEXPORT deflate (strm, flush)
     deflate_state *s;
 
     if (strm == Z_NULL || strm->state == Z_NULL ||
-        flush > Z_FINISH || flush < 0) {
+        flush > Z_BLOCK || flush < 0) {
         return Z_STREAM_ERROR;
     }
     s = strm->state;
@@ -613,7 +611,7 @@ int ZEXPORT deflate (strm, flush)
             put_byte(s, 31);
             put_byte(s, 139);
             put_byte(s, 8);
-            if (s->gzhead == NULL) {
+            if (s->gzhead == Z_NULL) {
                 put_byte(s, 0);
                 put_byte(s, 0);
                 put_byte(s, 0);
@@ -640,7 +638,7 @@ int ZEXPORT deflate (strm, flush)
                             (s->strategy >= Z_HUFFMAN_ONLY || s->level < 2 ?
                              4 : 0));
                 put_byte(s, s->gzhead->os & 0xff);
-                if (s->gzhead->extra != NULL) {
+                if (s->gzhead->extra != Z_NULL) {
                     put_byte(s, s->gzhead->extra_len & 0xff);
                     put_byte(s, (s->gzhead->extra_len >> 8) & 0xff);
                 }
@@ -682,7 +680,7 @@ int ZEXPORT deflate (strm, flush)
     }
 #ifdef GZIP
     if (s->status == EXTRA_STATE) {
-        if (s->gzhead->extra != NULL) {
+        if (s->gzhead->extra != Z_NULL) {
             uInt beg = s->pending;  /* start of bytes to update crc */
 
             while (s->gzindex < (s->gzhead->extra_len & 0xffff)) {
@@ -710,7 +708,7 @@ int ZEXPORT deflate (strm, flush)
             s->status = NAME_STATE;
     }
     if (s->status == NAME_STATE) {
-        if (s->gzhead->name != NULL) {
+        if (s->gzhead->name != Z_NULL) {
             uInt beg = s->pending;  /* start of bytes to update crc */
             int val;
 
@@ -741,7 +739,7 @@ int ZEXPORT deflate (strm, flush)
             s->status = COMMENT_STATE;
     }
     if (s->status == COMMENT_STATE) {
-        if (s->gzhead->comment != NULL) {
+        if (s->gzhead->comment != Z_NULL) {
             uInt beg = s->pending;  /* start of bytes to update crc */
             int val;
 
@@ -819,7 +817,9 @@ int ZEXPORT deflate (strm, flush)
         (flush != Z_NO_FLUSH && s->status != FINISH_STATE)) {
         block_state bstate;
 
-        bstate = (*(configuration_table[s->level].func))(s, flush);
+        bstate = s->strategy == Z_HUFFMAN_ONLY ? deflate_huff(s, flush) :
+                    (s->strategy == Z_RLE ? deflate_rle(s, flush) :
+                        (*(configuration_table[s->level].func))(s, flush));
 
         if (bstate == finish_started || bstate == finish_done) {
             s->status = FINISH_STATE;
@@ -840,13 +840,17 @@ int ZEXPORT deflate (strm, flush)
         if (bstate == block_done) {
             if (flush == Z_PARTIAL_FLUSH) {
                 _tr_align(s);
-            } else { /* FULL_FLUSH or SYNC_FLUSH */
+            } else if (flush != Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */
                 _tr_stored_block(s, (char*)0, 0L, 0);
                 /* For a full flush, this empty block will be recognized
                  * as a special marker by inflate_sync().
                  */
                 if (flush == Z_FULL_FLUSH) {
                     CLEAR_HASH(s);             /* forget history */
+                    if (s->lookahead == 0) {
+                        s->strstart = 0;
+                        s->block_start = 0L;
+                    }
                 }
             }
             flush_pending(strm);
@@ -1199,12 +1203,13 @@ local uInt longest_match(s, cur_match)
     return s->lookahead;
 }
 #endif /* ASMV */
-#endif /* FASTEST */
+
+#else /* FASTEST */
 
 /* ---------------------------------------------------------------------------
- * Optimized version for level == 1 or strategy == Z_RLE only
+ * Optimized version for FASTEST only
  */
-local uInt longest_match_fast(s, cur_match)
+local uInt longest_match(s, cur_match)
     deflate_state *s;
     IPos cur_match;                             /* current match */
 {
@@ -1257,6 +1262,8 @@ local uInt longest_match_fast(s, cur_match)
     return (uInt)len <= s->lookahead ? (uInt)len : s->lookahead;
 }
 
+#endif /* FASTEST */
+
 #ifdef DEBUG
 /* ===========================================================================
  * Check that the match at match_start is indeed a match.
@@ -1335,7 +1342,6 @@ local void fill_window(s)
                later. (Using level 0 permanently is not an optimal usage of
                zlib, so we don't care about this pathological case.)
              */
-            /* %%% avoid this when Z_RLE */
             n = s->hash_size;
             p = &s->head[n];
             do {
@@ -1387,27 +1393,61 @@ local void fill_window(s)
          */
 
     } while (s->lookahead < MIN_LOOKAHEAD && s->strm->avail_in != 0);
+
+    /* If the WIN_INIT bytes after the end of the current data have never been
+     * written, then zero those bytes in order to avoid memory check reports of
+     * the use of uninitialized (or uninitialised as Julian writes) bytes by
+     * the longest match routines.  Update the high water mark for the next
+     * time through here.  WIN_INIT is set to MAX_MATCH since the longest match
+     * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.
+     */
+    if (s->high_water < s->window_size) {
+        ulg curr = s->strstart + (ulg)(s->lookahead);
+        ulg init;
+
+        if (s->high_water < curr) {
+            /* Previous high water mark below current data -- zero WIN_INIT
+             * bytes or up to end of window, whichever is less.
+             */
+            init = s->window_size - curr;
+            if (init > WIN_INIT)
+                init = WIN_INIT;
+            zmemzero(s->window + curr, (unsigned)init);
+            s->high_water = curr + init;
+        }
+        else if (s->high_water < (ulg)curr + WIN_INIT) {
+            /* High water mark at or above current data, but below current data
+             * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up
+             * to end of window, whichever is less.
+             */
+            init = (ulg)curr + WIN_INIT - s->high_water;
+            if (init > s->window_size - s->high_water)
+                init = s->window_size - s->high_water;
+            zmemzero(s->window + s->high_water, (unsigned)init);
+            s->high_water += init;
+        }
+    }
 }
 
 /* ===========================================================================
  * Flush the current block, with given end-of-file flag.
  * IN assertion: strstart is set to the end of the current match.
  */
-#define FLUSH_BLOCK_ONLY(s, eof) { \
+#define FLUSH_BLOCK_ONLY(s, last) { \
    _tr_flush_block(s, (s->block_start >= 0L ? \
                    (charf *)&s->window[(unsigned)s->block_start] : \
                    (charf *)Z_NULL), \
                 (ulg)((long)s->strstart - s->block_start), \
-                (eof)); \
+                (last)); \
    s->block_start = s->strstart; \
    flush_pending(s->strm); \
    Tracev((stderr,"[FLUSH]")); \
 }
 
 /* Same but force premature exit if necessary. */
-#define FLUSH_BLOCK(s, eof) { \
-   FLUSH_BLOCK_ONLY(s, eof); \
-   if (s->strm->avail_out == 0) return (eof) ? finish_started : need_more; \
+#define FLUSH_BLOCK(s, last) { \
+   FLUSH_BLOCK_ONLY(s, last); \
+   if (s->strm->avail_out == 0) return (last) ? finish_started : need_more; \
 }
 
 /* ===========================================================================
@@ -1481,7 +1521,7 @@ local block_state deflate_fast(s, flush)
     deflate_state *s;
     int flush;
 {
-    IPos hash_head = NIL; /* head of the hash chain */
+    IPos hash_head;       /* head of the hash chain */
     int bflush;           /* set if current block must be flushed */
 
     for (;;) {
@@ -1501,6 +1541,7 @@ local block_state deflate_fast(s, flush)
         /* Insert the string window[strstart .. strstart+2] in the
          * dictionary, and set hash_head to the head of the hash chain:
          */
+        hash_head = NIL;
         if (s->lookahead >= MIN_MATCH) {
             INSERT_STRING(s, s->strstart, hash_head);
         }
@@ -1513,19 +1554,8 @@ local block_state deflate_fast(s, flush)
              * of window index 0 (in particular we have to avoid a match
              * of the string with itself at the start of the input file).
              */
-#ifdef FASTEST
-            if ((s->strategy != Z_HUFFMAN_ONLY && s->strategy != Z_RLE) ||
-                (s->strategy == Z_RLE && s->strstart - hash_head == 1)) {
-                s->match_length = longest_match_fast (s, hash_head);
-            }
-#else
-            if (s->strategy != Z_HUFFMAN_ONLY && s->strategy != Z_RLE) {
-                s->match_length = longest_match (s, hash_head);
-            } else if (s->strategy == Z_RLE && s->strstart - hash_head == 1) {
-                s->match_length = longest_match_fast (s, hash_head);
-            }
-#endif
-            /* longest_match() or longest_match_fast() sets match_start */
+            s->match_length = longest_match (s, hash_head);
+            /* longest_match() sets match_start */
         }
         if (s->match_length >= MIN_MATCH) {
             check_match(s, s->strstart, s->match_start, s->match_length);
@@ -1587,7 +1617,7 @@ local block_state deflate_slow(s, flush)
     deflate_state *s;
     int flush;
 {
-    IPos hash_head = NIL;    /* head of hash chain */
+    IPos hash_head;          /* head of hash chain */
     int bflush;              /* set if current block must be flushed */
 
     /* Process the input block. */
@@ -1608,6 +1638,7 @@ local block_state deflate_slow(s, flush)
         /* Insert the string window[strstart .. strstart+2] in the
          * dictionary, and set hash_head to the head of the hash chain:
          */
+        hash_head = NIL;
         if (s->lookahead >= MIN_MATCH) {
             INSERT_STRING(s, s->strstart, hash_head);
         }
@@ -1623,12 +1654,8 @@ local block_state deflate_slow(s, flush)
              * of window index 0 (in particular we have to avoid a match
              * of the string with itself at the start of the input file).
              */
-            if (s->strategy != Z_HUFFMAN_ONLY && s->strategy != Z_RLE) {
-                s->match_length = longest_match (s, hash_head);
-            } else if (s->strategy == Z_RLE && s->strstart - hash_head == 1) {
-                s->match_length = longest_match_fast (s, hash_head);
-            }
-            /* longest_match() or longest_match_fast() sets match_start */
+            s->match_length = longest_match (s, hash_head);
+            /* longest_match() sets match_start */
 
             if (s->match_length <= 5 && (s->strategy == Z_FILTERED
 #if TOO_FAR <= 32767
@@ -1706,7 +1733,6 @@ local block_state deflate_slow(s, flush)
 }
 #endif /* FASTEST */
 
-#if 0
 /* ===========================================================================
  * For Z_RLE, simply look for runs of bytes, generate matches only of distance
  * one.  Do not maintain a hash table.  (It will be regenerated if this run of
@@ -1716,11 +1742,9 @@ local block_state deflate_rle(s, flush)
     deflate_state *s;
     int flush;
 {
-    int bflush;         /* set if current block must be flushed */
-    uInt run;           /* length of run */
-    uInt max;           /* maximum length of run */
-    uInt prev;          /* byte at distance one to match */
-    Bytef *scan;        /* scan for end of run */
+    int bflush;             /* set if current block must be flushed */
+    uInt prev;              /* byte at distance one to match */
+    Bytef *scan, *strend;   /* scan goes up to strend for length of run */
 
     for (;;) {
         /* Make sure that we always have enough lookahead, except
@@ -1736,23 +1760,33 @@ local block_state deflate_rle(s, flush)
         }
 
         /* See how many times the previous byte repeats */
-        run = 0;
-        if (s->strstart > 0) {      /* if there is a previous byte, that is */
-            max = s->lookahead < MAX_MATCH ? s->lookahead : MAX_MATCH;
+        s->match_length = 0;
+        if (s->lookahead >= MIN_MATCH && s->strstart > 0) {
             scan = s->window + s->strstart - 1;
-            prev = *scan++;
-            do {
-                if (*scan++ != prev)
-                    break;
-            } while (++run < max);
+            prev = *scan;
+            if (prev == *++scan && prev == *++scan && prev == *++scan) {
+                strend = s->window + s->strstart + MAX_MATCH;
+                do {
+                } while (prev == *++scan && prev == *++scan &&
+                         prev == *++scan && prev == *++scan &&
+                         prev == *++scan && prev == *++scan &&
+                         prev == *++scan && prev == *++scan &&
+                         scan < strend);
+                s->match_length = MAX_MATCH - (int)(strend - scan);
+                if (s->match_length > s->lookahead)
+                    s->match_length = s->lookahead;
+            }
         }
 
         /* Emit match if have run of MIN_MATCH or longer, else emit literal */
-        if (run >= MIN_MATCH) {
-            check_match(s, s->strstart, s->strstart - 1, run);
-            _tr_tally_dist(s, 1, run - MIN_MATCH, bflush);
-            s->lookahead -= run;
-            s->strstart += run;
+        if (s->match_length >= MIN_MATCH) {
+            check_match(s, s->strstart, s->strstart - 1, s->match_length);
+
+            _tr_tally_dist(s, 1, s->match_length - MIN_MATCH, bflush);
+
+            s->lookahead -= s->match_length;
+            s->strstart += s->match_length;
+            s->match_length = 0;
         } else {
             /* No match, output a literal byte */
             Tracevv((stderr,"%c", s->window[s->strstart]));
@@ -1765,4 +1799,36 @@ local block_state deflate_rle(s, flush)
     FLUSH_BLOCK(s, flush == Z_FINISH);
     return flush == Z_FINISH ? finish_done : block_done;
 }
-#endif
+
+/* ===========================================================================
+ * For Z_HUFFMAN_ONLY, do not look for matches.  Do not maintain a hash table.
+ * (It will be regenerated if this run of deflate switches away from Huffman.)
+ */
+local block_state deflate_huff(s, flush)
+    deflate_state *s;
+    int flush;
+{
+    int bflush;             /* set if current block must be flushed */
+
+    for (;;) {
+        /* Make sure that we have a literal to write. */
+        if (s->lookahead == 0) {
+            fill_window(s);
+            if (s->lookahead == 0) {
+                if (flush == Z_NO_FLUSH)
+                    return need_more;
+                break;      /* flush the current block */
+            }
+        }
+
+        /* Output a literal byte */
+        s->match_length = 0;
+        Tracevv((stderr,"%c", s->window[s->strstart]));
+        _tr_tally_lit (s, s->window[s->strstart], bflush);
+        s->lookahead--;
+        s->strstart++;
+        if (bflush) FLUSH_BLOCK(s, 0);
+    }
+    FLUSH_BLOCK(s, flush == Z_FINISH);
+    return flush == Z_FINISH ? finish_done : block_done;
+}
diff --git a/support/deflate.h b/support/deflate.h
index 90077d8..cbf0d1e 100644
--- a/support/deflate.h
+++ b/support/deflate.h
@@ -1,5 +1,5 @@
 /* deflate.h -- internal compression state
- * Copyright (C) 1995-2005 Jean-loup Gailly
+ * Copyright (C) 1995-2010 Jean-loup Gailly
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
@@ -260,6 +260,13 @@ typedef struct internal_state {
      * are always zero.
      */
 
+    ulg high_water;
+    /* High water mark offset in window for initialized bytes -- bytes above
+     * this are set to zero in order to avoid memory check warnings when
+     * longest match routines access bytes past the input.  This is then
+     * updated to the new high water mark.
+     */
+
 } FAR deflate_state;
 
 /* Output a byte on the stream.
@@ -278,14 +285,18 @@ typedef struct internal_state {
  * distances are limited to MAX_DIST instead of WSIZE.
  */
 
+#define WIN_INIT MAX_MATCH
+/* Number of bytes after end of data in window to initialize in order to avoid
+   memory checker errors from longest match routines */
+
         /* in trees.c */
-void _tr_init         OF((deflate_state *s));
-int  _tr_tally        OF((deflate_state *s, unsigned dist, unsigned lc));
-void _tr_flush_block  OF((deflate_state *s, charf *buf, ulg stored_len,
-                          int eof));
-void _tr_align        OF((deflate_state *s));
-void _tr_stored_block OF((deflate_state *s, charf *buf, ulg stored_len,
-                          int eof));
+void ZLIB_INTERNAL _tr_init OF((deflate_state *s));
+int ZLIB_INTERNAL _tr_tally OF((deflate_state *s, unsigned dist, unsigned lc));
+void ZLIB_INTERNAL _tr_flush_block OF((deflate_state *s, charf *buf,
+                        ulg stored_len, int last));
+void ZLIB_INTERNAL _tr_align OF((deflate_state *s));
+void ZLIB_INTERNAL _tr_stored_block OF((deflate_state *s, charf *buf,
+                        ulg stored_len, int last));
 
 #define d_code(dist) \
    ((dist) < 256 ? _dist_code[dist] : _dist_code[256+((dist)>>7)])
@@ -298,11 +309,11 @@ void _tr_stored_block OF((deflate_state *s, charf *buf, ulg stored_len,
 /* Inline versions of _tr_tally for speed: */
 
 #if defined(GEN_TREES_H) || !defined(STDC)
-  extern uch _length_code[];
-  extern uch _dist_code[];
+  extern uch ZLIB_INTERNAL _length_code[];
+  extern uch ZLIB_INTERNAL _dist_code[];
 #else
-  extern const uch _length_code[];
-  extern const uch _dist_code[];
+  extern const uch ZLIB_INTERNAL _length_code[];
+  extern const uch ZLIB_INTERNAL _dist_code[];
 #endif
 
 # define _tr_tally_lit(s, c, flush) \
diff --git a/support/gzio.c b/support/gzio.c
deleted file mode 100644
index 044d38a..0000000
--- a/support/gzio.c
+++ /dev/null
@@ -1,1122 +0,0 @@
-#ifdef MONO_DOES_NOT_NEED_THIS
-/* gzio.c -- IO on .gz files
- * Copyright (C) 1995-2006 Jean-loup Gailly.
- * For conditions of distribution and use, see copyright notice in zlib.h
- *
- * Compile this file with -DNO_GZCOMPRESS to avoid the compression code.
- */
-
-/* @(#) $Id$ */
-
-#ifdef _LARGEFILE64_SOURCE
-#  ifndef _LARGEFILE_SOURCE
-#    define _LARGEFILE_SOURCE
-#  endif
-#  ifdef _FILE_OFFSET_BITS
-#    undef _FILE_OFFSET_BITS
-#  endif
-#endif
-
-#include "zutil.h"
-#include <stdio.h>
-
-#ifdef NO_DEFLATE       /* for compatibility with old definition */
-#  define NO_GZCOMPRESS
-#endif
-
-#ifndef NO_DUMMY_DECL
-struct internal_state {int dummy;}; /* for buggy compilers */
-#endif
-
-#ifndef Z_BUFSIZE
-#  ifdef MAXSEG_64K
-#    define Z_BUFSIZE 4096 /* minimize memory usage for 16-bit DOS */
-#  else
-#    define Z_BUFSIZE 16384
-#  endif
-#endif
-#ifndef Z_PRINTF_BUFSIZE
-#  define Z_PRINTF_BUFSIZE 4096
-#endif
-
-#ifdef __MVS__
-#  pragma map (fdopen , "\174\174FDOPEN")
-   FILE *fdopen(int, const char *);
-#endif
-
-#ifndef STDC
-extern voidp  malloc OF((uInt size));
-extern void   free   OF((voidpf ptr));
-#endif
-
-#ifdef NO_FSEEKO
-#  define FSEEK fseek
-#  define FTELL ftell
-#else
-#  define FSEEK fseeko
-#  define FTELL ftello
-#endif
-
-#define ALLOC(size) malloc(size)
-#define TRYFREE(p) {if (p) free(p);}
-
-static int const gz_magic[2] = {0x1f, 0x8b}; /* gzip magic header */
-
-/* gzip flag byte */
-#define ASCII_FLAG   0x01 /* bit 0 set: file probably ascii text */
-#define HEAD_CRC     0x02 /* bit 1 set: header CRC present */
-#define EXTRA_FIELD  0x04 /* bit 2 set: extra field present */
-#define ORIG_NAME    0x08 /* bit 3 set: original file name present */
-#define COMMENT      0x10 /* bit 4 set: file comment present */
-#define RESERVED     0xE0 /* bits 5..7: reserved */
-
-typedef struct gz_stream {
-    z_stream stream;
-    int      z_err;   /* error code for last stream operation */
-    int      z_eof;   /* set if end of input file */
-    FILE     *file;   /* .gz file */
-    Byte     *inbuf;  /* input buffer */
-    Byte     *outbuf; /* output buffer */
-    uLong    crc;     /* crc32 of uncompressed data */
-    char     *msg;    /* error message */
-    char     *path;   /* path name for debugging only */
-    int      transparent; /* 1 if input file is not a .gz file */
-    char     mode;    /* 'w' or 'r' */
-#ifdef _LARGEFILE64_SOURCE
-    off64_t  start;   /* start of compressed data in file (header skipped) */
-    off64_t  in;      /* bytes into deflate or inflate */
-    off64_t  out;     /* bytes out of deflate or inflate */
-#else
-    z_off_t  start;   /* start of compressed data in file (header skipped) */
-    z_off_t  in;      /* bytes into deflate or inflate */
-    z_off_t  out;     /* bytes out of deflate or inflate */
-#endif
-    int      back;    /* one character push-back */
-    int      last;    /* true if push-back is last character */
-} gz_stream;
-
-
-local gzFile gz_open      OF((const char *path, const char *mode, int fd,
-                              int use64));
-#ifdef _LARGEFILE64_SOURCE
-local off64_t gz_seek OF((gzFile file, off64_t offset, int whence, int use64));
-#else
-local z_off_t gz_seek OF((gzFile file, z_off_t offset, int whence, int use64));
-#endif
-local int do_flush        OF((gzFile file, int flush));
-local int    get_byte     OF((gz_stream *s));
-local void   check_header OF((gz_stream *s));
-local int    destroy      OF((gz_stream *s));
-local void   putLong      OF((FILE *file, uLong x));
-local uLong  getLong      OF((gz_stream *s));
-
-/* ===========================================================================
-     Opens a gzip (.gz) file for reading or writing. The mode parameter
-   is as in fopen ("rb" or "wb"). The file is given either by file descriptor
-   or path name (if fd == -1).
-     gz_open returns NULL if the file could not be opened or if there was
-   insufficient memory to allocate the (de)compression state; errno
-   can be checked to distinguish the two cases (if errno is zero, the
-   zlib error is Z_MEM_ERROR).
-*/
-local gzFile gz_open (path, mode, fd, use64)
-    const char *path;
-    const char *mode;
-    int  fd;
-    int use64;
-{
-    int err;
-    int level = Z_DEFAULT_COMPRESSION; /* compression level */
-    int strategy = Z_DEFAULT_STRATEGY; /* compression strategy */
-    char *p = (char*)mode;
-    gz_stream *s;
-    char fmode[80]; /* copy of mode, without the compression level */
-    char *m = fmode;
-
-    if (!path || !mode) return Z_NULL;
-
-    s = (gz_stream *)ALLOC(sizeof(gz_stream));
-    if (!s) return Z_NULL;
-
-    s->stream.zalloc = (alloc_func)0;
-    s->stream.zfree = (free_func)0;
-    s->stream.opaque = (voidpf)0;
-    s->stream.next_in = s->inbuf = Z_NULL;
-    s->stream.next_out = s->outbuf = Z_NULL;
-    s->stream.avail_in = s->stream.avail_out = 0;
-    s->file = NULL;
-    s->z_err = Z_OK;
-    s->z_eof = 0;
-    s->in = 0;
-    s->out = 0;
-    s->back = EOF;
-    s->crc = crc32(0L, Z_NULL, 0);
-    s->msg = NULL;
-    s->transparent = 0;
-
-    s->path = (char*)ALLOC(strlen(path)+1);
-    if (s->path == NULL) {
-        return destroy(s), (gzFile)Z_NULL;
-    }
-    strcpy(s->path, path); /* do this early for debugging */
-
-    s->mode = '\0';
-    do {
-        if (*p == 'r') s->mode = 'r';
-        if (*p == 'w' || *p == 'a') s->mode = 'w';
-        if (*p >= '0' && *p <= '9') {
-            level = *p - '0';
-        } else if (*p == 'f') {
-          strategy = Z_FILTERED;
-        } else if (*p == 'h') {
-          strategy = Z_HUFFMAN_ONLY;
-        } else if (*p == 'R') {
-          strategy = Z_RLE;
-        } else {
-            *m++ = *p; /* copy the mode */
-        }
-    } while (*p++ && m != fmode + sizeof(fmode));
-    if (s->mode == '\0') return destroy(s), (gzFile)Z_NULL;
-
-    if (s->mode == 'w') {
-#ifdef NO_GZCOMPRESS
-        err = Z_STREAM_ERROR;
-#else
-        err = deflateInit2(&(s->stream), level,
-                           Z_DEFLATED, -MAX_WBITS, DEF_MEM_LEVEL, strategy);
-        /* windowBits is passed < 0 to suppress zlib header */
-
-        s->stream.next_out = s->outbuf = (Byte*)ALLOC(Z_BUFSIZE);
-#endif
-        if (err != Z_OK || s->outbuf == Z_NULL) {
-            return destroy(s), (gzFile)Z_NULL;
-        }
-    } else {
-        s->stream.next_in  = s->inbuf = (Byte*)ALLOC(Z_BUFSIZE);
-
-        err = inflateInit2(&(s->stream), -MAX_WBITS);
-        /* windowBits is passed < 0 to tell that there is no zlib header */
-        if (err != Z_OK || s->inbuf == Z_NULL) {
-            return destroy(s), (gzFile)Z_NULL;
-        }
-    }
-    s->stream.avail_out = Z_BUFSIZE;
-
-    errno = 0;
-    s->file = fd < 0 ? (use64 ? F_OPEN64(path, fmode) : F_OPEN(path, fmode)) :
-              (FILE*)fdopen(fd, fmode);
-
-    if (s->file == NULL) {
-        return destroy(s), (gzFile)Z_NULL;
-    }
-    if (s->mode == 'w') {
-        /* Write a very simple .gz header:
-         */
-        fprintf(s->file, "%c%c%c%c%c%c%c%c%c%c", gz_magic[0], gz_magic[1],
-             Z_DEFLATED, 0 /*flags*/, 0,0,0,0 /*time*/, level == 9 ? 2 :
-                            (strategy >= Z_HUFFMAN_ONLY ||
-                             (level != Z_DEFAULT_COMPRESSION && level < 2) ?
-                             4 : 0) /*xflags*/, OS_CODE);
-        s->start = 10L;
-        /* We use 10L instead of ftell(s->file) to because ftell causes an
-         * fflush on some systems. This version of the library doesn't use
-         * start anyway in write mode, so this initialization is not
-         * necessary.
-         */
-    } else {
-        check_header(s); /* skip the .gz header */
-        s->start = FTELL(s->file) - s->stream.avail_in;
-    }
-
-    return (gzFile)s;
-}
-
-/* ===========================================================================
-     Opens a gzip (.gz) file for reading or writing.
-*/
-gzFile ZEXPORT gzopen (path, mode)
-    const char *path;
-    const char *mode;
-{
-    return gz_open (path, mode, -1, 0);
-}
-
-/* ===========================================================================
-     Opens a gzip (.gz) file for reading or writing for 64-bit offsets
-*/
-gzFile ZEXPORT gzopen64 (path, mode)
-    const char *path;
-    const char *mode;
-{
-    return gz_open (path, mode, -1, 1);
-}
-
-/* ===========================================================================
-     Associate a gzFile with the file descriptor fd. fd is not dup'ed here
-   to mimic the behavio(u)r of fdopen.
-*/
-gzFile ZEXPORT gzdopen (fd, mode)
-    int fd;
-    const char *mode;
-{
-    char name[46];      /* allow for up to 128-bit integers */
-
-    if (fd < 0) return (gzFile)Z_NULL;
-    sprintf(name, "<fd:%d>", fd); /* for debugging */
-
-    return gz_open (name, mode, fd, 0);
-}
-
-/* ===========================================================================
- * Update the compression level and strategy
- */
-int ZEXPORT gzsetparams (file, level, strategy)
-    gzFile file;
-    int level;
-    int strategy;
-{
-    gz_stream *s = (gz_stream*)file;
-
-    if (s == NULL || s->mode != 'w') return Z_STREAM_ERROR;
-
-    /* Make room to allow flushing */
-    if (s->stream.avail_out == 0) {
-
-        s->stream.next_out = s->outbuf;
-        if (fwrite(s->outbuf, 1, Z_BUFSIZE, s->file) != Z_BUFSIZE) {
-            s->z_err = Z_ERRNO;
-        }
-        s->stream.avail_out = Z_BUFSIZE;
-    }
-
-    return deflateParams (&(s->stream), level, strategy);
-}
-
-/* ===========================================================================
-     Read a byte from a gz_stream; update next_in and avail_in. Return EOF
-   for end of file.
-   IN assertion: the stream s has been successfully opened for reading.
-*/
-local int get_byte(s)
-    gz_stream *s;
-{
-    if (s->z_eof) return EOF;
-    if (s->stream.avail_in == 0) {
-        errno = 0;
-        s->stream.avail_in = (uInt)fread(s->inbuf, 1, Z_BUFSIZE, s->file);
-        if (s->stream.avail_in == 0) {
-            s->z_eof = 1;
-            if (ferror(s->file)) s->z_err = Z_ERRNO;
-            return EOF;
-        }
-        s->stream.next_in = s->inbuf;
-    }
-    s->stream.avail_in--;
-    return *(s->stream.next_in)++;
-}
-
-/* ===========================================================================
-      Check the gzip header of a gz_stream opened for reading. Set the stream
-    mode to transparent if the gzip magic header is not present; set s->err
-    to Z_DATA_ERROR if the magic header is present but the rest of the header
-    is incorrect.
-    IN assertion: the stream s has already been created successfully;
-       s->stream.avail_in is zero for the first time, but may be non-zero
-       for concatenated .gz files.
-*/
-local void check_header(s)
-    gz_stream *s;
-{
-    int method; /* method byte */
-    int flags;  /* flags byte */
-    uInt len;
-    int c;
-
-    /* Assure two bytes in the buffer so we can peek ahead -- handle case
-       where first byte of header is at the end of the buffer after the last
-       gzip segment */
-    len = s->stream.avail_in;
-    if (len < 2) {
-        if (len) s->inbuf[0] = s->stream.next_in[0];
-        errno = 0;
-        len = (uInt)fread(s->inbuf + len, 1, Z_BUFSIZE >> len, s->file);
-        if (len == 0) s->z_eof = 1;
-        if (len == 0 && ferror(s->file)) s->z_err = Z_ERRNO;
-        s->stream.avail_in += len;
-        s->stream.next_in = s->inbuf;
-        if (s->stream.avail_in < 2) {
-            s->transparent = s->stream.avail_in;
-            return;
-        }
-    }
-
-    /* Peek ahead to check the gzip magic header */
-    if (s->stream.next_in[0] != gz_magic[0] ||
-        s->stream.next_in[1] != gz_magic[1]) {
-        s->transparent = 1;
-        return;
-    }
-    s->stream.avail_in -= 2;
-    s->stream.next_in += 2;
-
-    /* Check the rest of the gzip header */
-    method = get_byte(s);
-    flags = get_byte(s);
-    if (method != Z_DEFLATED || (flags & RESERVED) != 0) {
-        s->z_err = Z_DATA_ERROR;
-        return;
-    }
-
-    /* Discard time, xflags and OS code: */
-    for (len = 0; len < 6; len++) (void)get_byte(s);
-
-    if ((flags & EXTRA_FIELD) != 0) { /* skip the extra field */
-        len  =  (uInt)get_byte(s);
-        len += ((uInt)get_byte(s))<<8;
-        /* len is garbage if EOF but the loop below will quit anyway */
-        while (len-- != 0 && get_byte(s) != EOF) ;
-    }
-    if ((flags & ORIG_NAME) != 0) { /* skip the original file name */
-        while ((c = get_byte(s)) != 0 && c != EOF) ;
-    }
-    if ((flags & COMMENT) != 0) {   /* skip the .gz file comment */
-        while ((c = get_byte(s)) != 0 && c != EOF) ;
-    }
-    if ((flags & HEAD_CRC) != 0) {  /* skip the header crc */
-        for (len = 0; len < 2; len++) (void)get_byte(s);
-    }
-    s->z_err = s->z_eof ? Z_DATA_ERROR : Z_OK;
-}
-
- /* ===========================================================================
- * Cleanup then free the given gz_stream. Return a zlib error code.
-   Try freeing in the reverse order of allocations.
- */
-local int destroy (s)
-    gz_stream *s;
-{
-    int err = Z_OK;
-
-    if (!s) return Z_STREAM_ERROR;
-
-    TRYFREE(s->msg);
-
-    if (s->stream.state != NULL) {
-        if (s->mode == 'w') {
-#ifdef NO_GZCOMPRESS
-            err = Z_STREAM_ERROR;
-#else
-            err = deflateEnd(&(s->stream));
-#endif
-        } else if (s->mode == 'r') {
-            err = inflateEnd(&(s->stream));
-        }
-    }
-    if (s->file != NULL && fclose(s->file)) {
-#ifdef ESPIPE
-        if (errno != ESPIPE) /* fclose is broken for pipes in HP/UX */
-#endif
-            err = Z_ERRNO;
-    }
-    if (s->z_err < 0) err = s->z_err;
-
-    TRYFREE(s->inbuf);
-    TRYFREE(s->outbuf);
-    TRYFREE(s->path);
-    TRYFREE(s);
-    return err;
-}
-
-/* ===========================================================================
-     Reads the given number of uncompressed bytes from the compressed file.
-   gzread returns the number of bytes actually read (0 for end of file).
-*/
-int ZEXPORT gzread (file, buf, len)
-    gzFile file;
-    voidp buf;
-    unsigned len;
-{
-    gz_stream *s = (gz_stream*)file;
-    Bytef *start = (Bytef*)buf; /* starting point for crc computation */
-    Byte  *next_out; /* == stream.next_out but not forced far (for MSDOS) */
-
-    if (s == NULL || s->mode != 'r') return Z_STREAM_ERROR;
-
-    if (s->z_err == Z_DATA_ERROR || s->z_err == Z_ERRNO) return -1;
-    if (s->z_err == Z_STREAM_END) return 0;  /* EOF */
-
-    next_out = (Byte*)buf;
-    s->stream.next_out = (Bytef*)buf;
-    s->stream.avail_out = len;
-
-    if (s->stream.avail_out && s->back != EOF) {
-        *next_out++ = s->back;
-        s->stream.next_out++;
-        s->stream.avail_out--;
-        s->back = EOF;
-        s->out++;
-        start++;
-        if (s->last) {
-            s->z_err = Z_STREAM_END;
-            return 1;
-        }
-    }
-
-    while (s->stream.avail_out != 0) {
-
-        if (s->transparent) {
-            /* Copy first the lookahead bytes: */
-            uInt n = s->stream.avail_in;
-            if (n > s->stream.avail_out) n = s->stream.avail_out;
-            if (n > 0) {
-                zmemcpy(s->stream.next_out, s->stream.next_in, n);
-                next_out += n;
-                s->stream.next_out = next_out;
-                s->stream.next_in   += n;
-                s->stream.avail_out -= n;
-                s->stream.avail_in  -= n;
-            }
-            if (s->stream.avail_out > 0 && !feof(s->file)) {
-                s->stream.avail_out -=
-                    (uInt)fread(next_out, 1, s->stream.avail_out, s->file);
-            }
-            len -= s->stream.avail_out;
-            s->in  += len;
-            s->out += len;
-            if (len == 0) s->z_eof = 1;
-            return (int)len;
-        }
-        if (s->stream.avail_in == 0 && !s->z_eof) {
-
-            errno = 0;
-            s->stream.avail_in = (uInt)fread(s->inbuf, 1, Z_BUFSIZE, s->file);
-            if (s->stream.avail_in == 0) {
-                s->z_eof = 1;
-                if (ferror(s->file)) {
-                    s->z_err = Z_ERRNO;
-                    break;
-                }
-            }
-            s->stream.next_in = s->inbuf;
-        }
-        s->in += s->stream.avail_in;
-        s->out += s->stream.avail_out;
-        s->z_err = inflate(&(s->stream), Z_NO_FLUSH);
-        s->in -= s->stream.avail_in;
-        s->out -= s->stream.avail_out;
-
-        if (s->z_err == Z_STREAM_END) {
-            /* Check CRC and original size */
-            s->crc = crc32(s->crc, start, (uInt)(s->stream.next_out - start));
-            start = s->stream.next_out;
-
-            if (getLong(s) != s->crc) {
-                s->z_err = Z_DATA_ERROR;
-            } else {
-                (void)getLong(s);
-                /* The uncompressed length returned by above getlong() may be
-                 * different from s->out in case of concatenated .gz files.
-                 * Check for such files:
-                 */
-                check_header(s);
-                if (s->z_err == Z_OK) {
-                    inflateReset(&(s->stream));
-                    s->crc = crc32(0L, Z_NULL, 0);
-                }
-            }
-        }
-        if (s->z_err != Z_OK || s->z_eof) break;
-    }
-    s->crc = crc32(s->crc, start, (uInt)(s->stream.next_out - start));
-
-    if (len == s->stream.avail_out &&
-        (s->z_err == Z_DATA_ERROR || s->z_err == Z_ERRNO))
-        return -1;
-    return (int)(len - s->stream.avail_out);
-}
-
-
-/* ===========================================================================
-      Reads one byte from the compressed file. gzgetc returns this byte
-   or -1 in case of end of file or error.
-*/
-int ZEXPORT gzgetc(file)
-    gzFile file;
-{
-    unsigned char c;
-
-    return gzread(file, &c, 1) == 1 ? c : -1;
-}
-
-
-/* ===========================================================================
-      Push one byte back onto the stream.
-*/
-int ZEXPORT gzungetc(c, file)
-    int c;
-    gzFile file;
-{
-    gz_stream *s = (gz_stream*)file;
-
-    if (s == NULL || s->mode != 'r' || c == EOF || s->back != EOF) return EOF;
-    s->back = c;
-    s->out--;
-    s->last = (s->z_err == Z_STREAM_END);
-    if (s->last) s->z_err = Z_OK;
-    s->z_eof = 0;
-    return c;
-}
-
-
-/* ===========================================================================
-      Reads bytes from the compressed file until len-1 characters are
-   read, or a newline character is read and transferred to buf, or an
-   end-of-file condition is encountered.  The string is then terminated
-   with a null character.
-      gzgets returns buf, or Z_NULL in case of error.
-
-      The current implementation is not optimized at all.
-*/
-char * ZEXPORT gzgets(file, buf, len)
-    gzFile file;
-    char *buf;
-    int len;
-{
-    char *b = buf;
-    if (buf == Z_NULL || len <= 0) return Z_NULL;
-
-    while (--len > 0 && gzread(file, buf, 1) == 1 && *buf++ != '\n') ;
-    *buf = '\0';
-    return b == buf && len > 0 ? Z_NULL : b;
-}
-
-
-#ifndef NO_GZCOMPRESS
-/* ===========================================================================
-     Writes the given number of uncompressed bytes into the compressed file.
-   gzwrite returns the number of bytes actually written (0 in case of error).
-*/
-int ZEXPORT gzwrite (file, buf, len)
-    gzFile file;
-    voidpc buf;
-    unsigned len;
-{
-    gz_stream *s = (gz_stream*)file;
-
-    if (s == NULL || s->mode != 'w') return Z_STREAM_ERROR;
-
-    s->stream.next_in = (Bytef*)buf;
-    s->stream.avail_in = len;
-
-    while (s->stream.avail_in != 0) {
-
-        if (s->stream.avail_out == 0) {
-
-            s->stream.next_out = s->outbuf;
-            if (fwrite(s->outbuf, 1, Z_BUFSIZE, s->file) != Z_BUFSIZE) {
-                s->z_err = Z_ERRNO;
-                break;
-            }
-            s->stream.avail_out = Z_BUFSIZE;
-        }
-        s->in += s->stream.avail_in;
-        s->out += s->stream.avail_out;
-        s->z_err = deflate(&(s->stream), Z_NO_FLUSH);
-        s->in -= s->stream.avail_in;
-        s->out -= s->stream.avail_out;
-        if (s->z_err != Z_OK) break;
-    }
-    s->crc = crc32(s->crc, (const Bytef *)buf, len);
-
-    return (int)(len - s->stream.avail_in);
-}
-
-
-/* ===========================================================================
-     Converts, formats, and writes the args to the compressed file under
-   control of the format string, as in fprintf. gzprintf returns the number of
-   uncompressed bytes actually written (0 in case of error).
-*/
-#ifdef STDC
-#include <stdarg.h>
-
-int ZEXPORTVA gzprintf (gzFile file, const char *format, /* args */ ...)
-{
-    char buf[Z_PRINTF_BUFSIZE];
-    va_list va;
-    int len;
-
-    buf[sizeof(buf) - 1] = 0;
-    va_start(va, format);
-#ifdef NO_vsnprintf
-#  ifdef HAS_vsprintf_void
-    (void)vsprintf(buf, format, va);
-    va_end(va);
-    for (len = 0; len < sizeof(buf); len++)
-        if (buf[len] == 0) break;
-#  else
-    len = vsprintf(buf, format, va);
-    va_end(va);
-#  endif
-#else
-#  ifdef HAS_vsnprintf_void
-    (void)vsnprintf(buf, sizeof(buf), format, va);
-    va_end(va);
-    len = strlen(buf);
-#  else
-    len = vsnprintf(buf, sizeof(buf), format, va);
-    va_end(va);
-#  endif
-#endif
-    if (len <= 0 || len >= (int)sizeof(buf) || buf[sizeof(buf) - 1] != 0)
-        return 0;
-    return gzwrite(file, buf, (unsigned)len);
-}
-#else /* not ANSI C */
-
-int ZEXPORTVA gzprintf (file, format, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10,
-                       a11, a12, a13, a14, a15, a16, a17, a18, a19, a20)
-    gzFile file;
-    const char *format;
-    int a1, a2, a3, a4, a5, a6, a7, a8, a9, a10,
-        a11, a12, a13, a14, a15, a16, a17, a18, a19, a20;
-{
-    char buf[Z_PRINTF_BUFSIZE];
-    int len;
-
-    buf[sizeof(buf) - 1] = 0;
-#ifdef NO_snprintf
-#  ifdef HAS_sprintf_void
-    sprintf(buf, format, a1, a2, a3, a4, a5, a6, a7, a8,
-            a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20);
-    for (len = 0; len < sizeof(buf); len++)
-        if (buf[len] == 0) break;
-#  else
-    len = sprintf(buf, format, a1, a2, a3, a4, a5, a6, a7, a8,
-                a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20);
-#  endif
-#else
-#  ifdef HAS_snprintf_void
-    snprintf(buf, sizeof(buf), format, a1, a2, a3, a4, a5, a6, a7, a8,
-             a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20);
-    len = strlen(buf);
-#  else
-    len = snprintf(buf, sizeof(buf), format, a1, a2, a3, a4, a5, a6, a7, a8,
-                 a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20);
-#  endif
-#endif
-    if (len <= 0 || len >= sizeof(buf) || buf[sizeof(buf) - 1] != 0)
-        return 0;
-    return gzwrite(file, buf, len);
-}
-#endif
-
-/* ===========================================================================
-      Writes c, converted to an unsigned char, into the compressed file.
-   gzputc returns the value that was written, or -1 in case of error.
-*/
-int ZEXPORT gzputc(file, c)
-    gzFile file;
-    int c;
-{
-    unsigned char cc = (unsigned char) c; /* required for big endian systems */
-
-    return gzwrite(file, &cc, 1) == 1 ? (int)cc : -1;
-}
-
-
-/* ===========================================================================
-      Writes the given null-terminated string to the compressed file, excluding
-   the terminating null character.
-      gzputs returns the number of characters written, or -1 in case of error.
-*/
-int ZEXPORT gzputs(file, s)
-    gzFile file;
-    const char *s;
-{
-    return gzwrite(file, (char*)s, (unsigned)strlen(s));
-}
-
-
-/* ===========================================================================
-     Flushes all pending output into the compressed file. The parameter
-   flush is as in the deflate() function.
-*/
-local int do_flush (file, flush)
-    gzFile file;
-    int flush;
-{
-    uInt len;
-    int done = 0;
-    gz_stream *s = (gz_stream*)file;
-
-    if (s == NULL || s->mode != 'w') return Z_STREAM_ERROR;
-
-    s->stream.avail_in = 0; /* should be zero already anyway */
-
-    for (;;) {
-        len = Z_BUFSIZE - s->stream.avail_out;
-
-        if (len != 0) {
-            if ((uInt)fwrite(s->outbuf, 1, len, s->file) != len) {
-                s->z_err = Z_ERRNO;
-                return Z_ERRNO;
-            }
-            s->stream.next_out = s->outbuf;
-            s->stream.avail_out = Z_BUFSIZE;
-        }
-        if (done) break;
-        s->out += s->stream.avail_out;
-        s->z_err = deflate(&(s->stream), flush);
-        s->out -= s->stream.avail_out;
-
-        /* Ignore the second of two consecutive flushes: */
-        if (len == 0 && s->z_err == Z_BUF_ERROR) s->z_err = Z_OK;
-
-        /* deflate has finished flushing only when it hasn't used up
-         * all the available space in the output buffer:
-         */
-        done = (s->stream.avail_out != 0 || s->z_err == Z_STREAM_END);
-
-        if (s->z_err != Z_OK && s->z_err != Z_STREAM_END) break;
-    }
-    return  s->z_err == Z_STREAM_END ? Z_OK : s->z_err;
-}
-
-int ZEXPORT gzflush (file, flush)
-     gzFile file;
-     int flush;
-{
-    gz_stream *s = (gz_stream*)file;
-    int err = do_flush (file, flush);
-
-    if (err) return err;
-    fflush(s->file);
-    return  s->z_err == Z_STREAM_END ? Z_OK : s->z_err;
-}
-#endif /* NO_GZCOMPRESS */
-
-/* ===========================================================================
-      Sets the starting position for the next gzread or gzwrite on the given
-   compressed file. The offset represents a number of bytes in the
-      gzseek returns the resulting offset location as measured in bytes from
-   the beginning of the uncompressed stream, or -1 in case of error.
-      SEEK_END is not implemented, returns error.
-      In this version of the library, gzseek can be extremely slow.
-*/
-#ifdef _LARGEFILE64_SOURCE
-local off64_t gz_seek (file, offset, whence, use64)
-    gzFile file;
-    off64_t offset;
-#else
-local z_off_t gz_seek (file, offset, whence, use64)
-    gzFile file;
-    z_off_t offset;
-#endif
-    int whence;
-    int use64;
-{
-    gz_stream *s = (gz_stream*)file;
-
-    if (s == NULL || whence == SEEK_END ||
-        s->z_err == Z_ERRNO || s->z_err == Z_DATA_ERROR) {
-        return -1L;
-    }
-
-    if (s->mode == 'w') {
-#ifdef NO_GZCOMPRESS
-        return -1L;
-#else
-        if (whence == SEEK_SET) {
-            offset -= s->in;
-        }
-        if (offset < 0) return -1L;
-
-        /* At this point, offset is the number of zero bytes to write. */
-        if (s->inbuf == Z_NULL) {
-            s->inbuf = (Byte*)ALLOC(Z_BUFSIZE); /* for seeking */
-            if (s->inbuf == Z_NULL) return -1L;
-            zmemzero(s->inbuf, Z_BUFSIZE);
-        }
-        while (offset > 0)  {
-            uInt size = Z_BUFSIZE;
-            if (offset < Z_BUFSIZE) size = (uInt)offset;
-
-            size = gzwrite(file, s->inbuf, size);
-            if (size == 0) return -1L;
-
-            offset -= size;
-        }
-        return s->in;
-#endif
-    }
-    /* Rest of function is for reading only */
-
-    /* compute absolute position */
-    if (whence == SEEK_CUR) {
-        offset += s->out;
-    }
-    if (offset < 0) return -1L;
-
-    if (s->transparent) {
-        /* map to fseek */
-        s->back = EOF;
-        s->stream.avail_in = 0;
-        s->stream.next_in = s->inbuf;
-#ifdef _LARGEFILE64_SOURCE
-        if ((use64 ? fseeko64(s->file, offset, SEEK_SET) :
-                     FSEEK(s->file, offset, SEEK_SET)) < 0)
-            return -1L;
-#else
-        if (FSEEK(s->file, offset, SEEK_SET) < 0) return -1L;
-#endif
-
-        s->in = s->out = offset;
-        return offset;
-    }
-
-    /* For a negative seek, rewind and use positive seek */
-    if (offset >= s->out) {
-        offset -= s->out;
-    } else if (gzrewind(file) < 0) {
-        return -1L;
-    }
-    /* offset is now the number of bytes to skip. */
-
-    if (offset != 0 && s->outbuf == Z_NULL) {
-        s->outbuf = (Byte*)ALLOC(Z_BUFSIZE);
-        if (s->outbuf == Z_NULL) return -1L;
-    }
-    if (offset && s->back != EOF) {
-        s->back = EOF;
-        s->out++;
-        offset--;
-        if (s->last) s->z_err = Z_STREAM_END;
-    }
-    while (offset > 0)  {
-        int size = Z_BUFSIZE;
-        if (offset < Z_BUFSIZE) size = (int)offset;
-
-        size = gzread(file, s->outbuf, (uInt)size);
-        if (size <= 0) return -1L;
-        offset -= size;
-    }
-    return s->out;
-}
-
-/* ===========================================================================
-    Define external functions gzseek() and gzseek64() using local gz_seek().
-*/
-z_off_t ZEXPORT gzseek (file, offset, whence)
-    gzFile file;
-    z_off_t offset;
-    int whence;
-{
-    return (z_off_t)gz_seek(file, offset, whence, 0);
-}
-
-#ifdef _LARGEFILE64_SOURCE
-off64_t ZEXPORT gzseek64 (file, offset, whence)
-    gzFile file;
-    off64_t offset;
-    int whence;
-{
-    return gz_seek(file, offset, whence, 1);
-}
-#else
-z_off_t ZEXPORT gzseek64 (file, offset, whence)
-    gzFile file;
-    z_off_t offset;
-    int whence;
-{
-    return gz_seek(file, offset, whence, 0);
-}
-#endif
-
-/* ===========================================================================
-     Rewinds input file.
-*/
-int ZEXPORT gzrewind (file)
-    gzFile file;
-{
-    gz_stream *s = (gz_stream*)file;
-
-    if (s == NULL || s->mode != 'r') return -1;
-
-    s->z_err = Z_OK;
-    s->z_eof = 0;
-    s->back = EOF;
-    s->stream.avail_in = 0;
-    s->stream.next_in = s->inbuf;
-    s->crc = crc32(0L, Z_NULL, 0);
-    if (!s->transparent) (void)inflateReset(&s->stream);
-    s->in = 0;
-    s->out = 0;
-    return FSEEK(s->file, s->start, SEEK_SET);
-}
-
-/* ===========================================================================
-     Returns the starting position for the next gzread or gzwrite on the
-   given compressed file. This position represents a number of bytes in the
-   uncompressed data stream.
-*/
-z_off_t ZEXPORT gztell (file)
-    gzFile file;
-{
-    return gzseek(file, 0L, SEEK_CUR);
-}
-
-/* ===========================================================================
-     64-bit version
-*/
-#ifdef _LARGEFILE64_SOURCE
-off64_t ZEXPORT gztell64 (file)
-#else
-z_off_t ZEXPORT gztell64 (file)
-#endif
-    gzFile file;
-{
-    return gzseek64(file, 0L, SEEK_CUR);
-}
-
-/* ===========================================================================
-     Returns 1 when EOF has previously been detected reading the given
-   input stream, otherwise zero.
-*/
-int ZEXPORT gzeof (file)
-    gzFile file;
-{
-    gz_stream *s = (gz_stream*)file;
-
-    /* With concatenated compressed files that can have embedded
-     * crc trailers, z_eof is no longer the only/best indicator of EOF
-     * on a gz_stream. Handle end-of-stream error explicitly here.
-     */
-    if (s == NULL || s->mode != 'r') return 0;
-    if (s->z_eof) return 1;
-    return s->z_err == Z_STREAM_END;
-}
-
-/* ===========================================================================
-     Returns 1 if reading and doing so transparently, otherwise zero.
-*/
-int ZEXPORT gzdirect (file)
-    gzFile file;
-{
-    gz_stream *s = (gz_stream*)file;
-
-    if (s == NULL || s->mode != 'r') return 0;
-    return s->transparent;
-}
-
-/* ===========================================================================
-   Outputs a long in LSB order to the given file
-*/
-local void putLong (file, x)
-    FILE *file;
-    uLong x;
-{
-    int n;
-    for (n = 0; n < 4; n++) {
-        fputc((int)(x & 0xff), file);
-        x >>= 8;
-    }
-}
-
-/* ===========================================================================
-   Reads a long in LSB order from the given gz_stream. Sets z_err in case
-   of error.
-*/
-local uLong getLong (s)
-    gz_stream *s;
-{
-    uLong x = (uLong)get_byte(s);
-    int c;
-
-    x += ((uLong)get_byte(s))<<8;
-    x += ((uLong)get_byte(s))<<16;
-    c = get_byte(s);
-    if (c == EOF) s->z_err = Z_DATA_ERROR;
-    x += ((uLong)c)<<24;
-    return x;
-}
-
-/* ===========================================================================
-     Flushes all pending output if necessary, closes the compressed file
-   and deallocates all the (de)compression state.
-*/
-int ZEXPORT gzclose (file)
-    gzFile file;
-{
-    gz_stream *s = (gz_stream*)file;
-
-    if (s == NULL) return Z_STREAM_ERROR;
-
-    if (s->mode == 'w') {
-#ifdef NO_GZCOMPRESS
-        return Z_STREAM_ERROR;
-#else
-        if (do_flush (file, Z_FINISH) != Z_OK)
-            return destroy((gz_stream*)file);
-
-        putLong (s->file, s->crc);
-        putLong (s->file, (uLong)(s->in & 0xffffffff));
-#endif
-    }
-    return destroy((gz_stream*)file);
-}
-
-#if defined(STDC) && !defined(_WIN32_WCE)
-#  define zstrerror(errnum) strerror(errnum)
-#else
-#  define zstrerror(errnum) ""
-#endif
-
-/* ===========================================================================
-     Returns the error message for the last error which occurred on the
-   given compressed file. errnum is set to zlib error number. If an
-   error occurred in the file system and not in the compression library,
-   errnum is set to Z_ERRNO and the application may consult errno
-   to get the exact error code.
-*/
-const char * ZEXPORT gzerror (file, errnum)
-    gzFile file;
-    int *errnum;
-{
-    char *m;
-    gz_stream *s = (gz_stream*)file;
-
-    if (s == NULL) {
-        *errnum = Z_STREAM_ERROR;
-        return (const char*)ERR_MSG(Z_STREAM_ERROR);
-    }
-    *errnum = s->z_err;
-    if (*errnum == Z_OK) return (const char*)"";
-
-    m = (char*)(*errnum == Z_ERRNO ? zstrerror(errno) : s->stream.msg);
-
-    if (m == NULL || *m == '\0') m = (char*)ERR_MSG(s->z_err);
-
-    TRYFREE(s->msg);
-    s->msg = (char*)ALLOC(strlen(s->path) + strlen(m) + 3);
-    if (s->msg == Z_NULL) return (const char*)ERR_MSG(Z_MEM_ERROR);
-    strcpy(s->msg, s->path);
-    strcat(s->msg, ": ");
-    strcat(s->msg, m);
-    return (const char*)s->msg;
-}
-
-/* ===========================================================================
-     Clear the error and end-of-file flags, and do the same for the real file.
-*/
-void ZEXPORT gzclearerr (file)
-    gzFile file;
-{
-    gz_stream *s = (gz_stream*)file;
-
-    if (s == NULL) return;
-    if (s->z_err != Z_STREAM_END) s->z_err = Z_OK;
-    s->z_eof = 0;
-    clearerr(s->file);
-}
-#endif
diff --git a/support/infback.c b/support/infback.c
index be0b3dc..af3a8c9 100644
--- a/support/infback.c
+++ b/support/infback.c
@@ -1,5 +1,5 @@
 /* infback.c -- inflate using a call-back interface
- * Copyright (C) 1995-2006 Mark Adler
+ * Copyright (C) 1995-2009 Mark Adler
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
@@ -55,7 +55,7 @@ int stream_size;
     state->wbits = windowBits;
     state->wsize = 1U << windowBits;
     state->window = window;
-    state->write = 0;
+    state->wnext = 0;
     state->whave = 0;
     return Z_OK;
 }
@@ -438,7 +438,16 @@ void FAR *out_desc;
             /* handle error breaks in while */
             if (state->mode == BAD) break;
 
-            /* build code tables */
+            /* check for end-of-block code (better have one) */
+            if (state->lens[256] == 0) {
+                strm->msg = (char *)"invalid code -- missing end-of-block";
+                state->mode = BAD;
+                break;
+            }
+
+            /* build code tables -- note: do not change the lenbits or distbits
+               values here (9 and 6) without reading the comments in inftrees.h
+               concerning the ENOUGH constants, which depend on those values */
             state->next = state->codes;
             state->lencode = (code const FAR *)(state->next);
             state->lenbits = 9;
diff --git a/support/inffast.c b/support/inffast.c
index 0b919bb..2f1d60b 100644
--- a/support/inffast.c
+++ b/support/inffast.c
@@ -1,5 +1,5 @@
 /* inffast.c -- fast decoding
- * Copyright (C) 1995-2006 Mark Adler
+ * Copyright (C) 1995-2008, 2010 Mark Adler
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
@@ -64,7 +64,7 @@
       requires strm->avail_out >= 258 for each loop to avoid checking for
       output space.
  */
-void inflate_fast(strm, start)
+void ZLIB_INTERNAL inflate_fast(strm, start)
 z_streamp strm;
 unsigned start;         /* inflate()'s starting value for strm->avail_out */
 {
@@ -79,7 +79,7 @@ unsigned start;         /* inflate()'s starting value for strm->avail_out */
 #endif
     unsigned wsize;             /* window size or zero if not using window */
     unsigned whave;             /* valid bytes in the window */
-    unsigned write;             /* window write index */
+    unsigned wnext;             /* window write index */
     unsigned char FAR *window;  /* allocated sliding window, if wsize != 0 */
     unsigned long hold;         /* local strm->hold */
     unsigned bits;              /* local strm->bits */
@@ -106,7 +106,7 @@ unsigned start;         /* inflate()'s starting value for strm->avail_out */
 #endif
     wsize = state->wsize;
     whave = state->whave;
-    write = state->write;
+    wnext = state->wnext;
     window = state->window;
     hold = state->hold;
     bits = state->bits;
@@ -188,7 +188,8 @@ unsigned start;         /* inflate()'s starting value for strm->avail_out */
                     op = dist - op;             /* distance back in window */
                     if (op > whave) {
                         if (state->sane) {
-                            strm->msg = (char *)"invalid distance too far back";
+                            strm->msg =
+                                (char *)"invalid distance too far back";
                             state->mode = BAD;
                             break;
                         }
@@ -213,7 +214,7 @@ unsigned start;         /* inflate()'s starting value for strm->avail_out */
 #endif
                     }
                     from = window - OFF;
-                    if (write == 0) {           /* very common case */
+                    if (wnext == 0) {           /* very common case */
                         from += wsize - op;
                         if (op < len) {         /* some from window */
                             len -= op;
@@ -223,17 +224,17 @@ unsigned start;         /* inflate()'s starting value for strm->avail_out */
                             from = out - dist;  /* rest from output */
                         }
                     }
-                    else if (write < op) {      /* wrap around window */
-                        from += wsize + write - op;
-                        op -= write;
+                    else if (wnext < op) {      /* wrap around window */
+                        from += wsize + wnext - op;
+                        op -= wnext;
                         if (op < len) {         /* some from end of window */
                             len -= op;
                             do {
                                 PUP(out) = PUP(from);
                             } while (--op);
                             from = window - OFF;
-                            if (write < len) {  /* some from start of window */
-                                op = write;
+                            if (wnext < len) {  /* some from start of window */
+                                op = wnext;
                                 len -= op;
                                 do {
                                     PUP(out) = PUP(from);
@@ -243,7 +244,7 @@ unsigned start;         /* inflate()'s starting value for strm->avail_out */
                         }
                     }
                     else {                      /* contiguous in window */
-                        from += write - op;
+                        from += wnext - op;
                         if (op < len) {         /* some from window */
                             len -= op;
                             do {
@@ -326,7 +327,7 @@ unsigned start;         /* inflate()'s starting value for strm->avail_out */
    inflate_fast() speedups that turned out slower (on a PowerPC G3 750CXe):
    - Using bit fields for code structure
    - Different op definition to avoid & for extra bits (do & for table bits)
-   - Three separate decoding do-loops for direct, window, and write == 0
+   - Three separate decoding do-loops for direct, window, and wnext == 0
    - Special case for distance > 1 copies to do overlapped load and store copy
    - Explicit branch predictions (based on measured branch probabilities)
    - Deferring match copy and interspersed it with decoding subsequent codes
diff --git a/support/inffast.h b/support/inffast.h
index 1e88d2d..e5c1aa4 100644
--- a/support/inffast.h
+++ b/support/inffast.h
@@ -1,5 +1,5 @@
 /* inffast.h -- header to use inffast.c
- * Copyright (C) 1995-2003 Mark Adler
+ * Copyright (C) 1995-2003, 2010 Mark Adler
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
@@ -8,4 +8,4 @@
    subject to change. Applications should only use zlib.h.
  */
 
-void inflate_fast OF((z_streamp strm, unsigned start));
+void ZLIB_INTERNAL inflate_fast OF((z_streamp strm, unsigned start));
diff --git a/support/inflate.c b/support/inflate.c
index d3c718c..a8431ab 100644
--- a/support/inflate.c
+++ b/support/inflate.c
@@ -1,5 +1,5 @@
 /* inflate.c -- zlib decompression
- * Copyright (C) 1995-2006 Mark Adler
+ * Copyright (C) 1995-2010 Mark Adler
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
@@ -45,7 +45,7 @@
  * - Rearrange window copies in inflate_fast() for speed and simplification
  * - Unroll last copy for window match in inflate_fast()
  * - Use local copies of window variables in inflate_fast() for speed
- * - Pull out common write == 0 case for speed in inflate_fast()
+ * - Pull out common wnext == 0 case for speed in inflate_fast()
  * - Make op and len in inflate_fast() unsigned for consistency
  * - Add FAR to lcode and dcode declarations in inflate_fast()
  * - Simplified bad distance check in inflate_fast()
@@ -117,29 +117,52 @@ z_streamp strm;
     state->head = Z_NULL;
     state->wsize = 0;
     state->whave = 0;
-    state->write = 0;
+    state->wnext = 0;
     state->hold = 0;
     state->bits = 0;
     state->lencode = state->distcode = state->next = state->codes;
     state->sane = 1;
+    state->back = -1;
     Tracev((stderr, "inflate: reset\n"));
     return Z_OK;
 }
 
-int ZEXPORT inflatePrime(strm, bits, value)
+int ZEXPORT inflateReset2(strm, windowBits)
 z_streamp strm;
-int bits;
-int value;
+int windowBits;
 {
+    int wrap;
     struct inflate_state FAR *state;
 
+    /* get the state */
     if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
     state = (struct inflate_state FAR *)strm->state;
-    if (bits > 16 || state->bits + bits > 32) return Z_STREAM_ERROR;
-    value &= (1L << bits) - 1;
-    state->hold += value << state->bits;
-    state->bits += bits;
-    return Z_OK;
+
+    /* extract wrap request from windowBits parameter */
+    if (windowBits < 0) {
+        wrap = 0;
+        windowBits = -windowBits;
+    }
+    else {
+        wrap = (windowBits >> 4) + 1;
+#ifdef GUNZIP
+        if (windowBits < 48)
+            windowBits &= 15;
+#endif
+    }
+
+    /* set number of window bits, free window if different */
+    if (windowBits && (windowBits < 8 || windowBits > 15))
+        return Z_STREAM_ERROR;
+    if (state->window != Z_NULL && state->wbits != (unsigned)windowBits) {
+        ZFREE(strm, state->window);
+        state->window = Z_NULL;
+    }
+
+    /* update state and reset the rest of it */
+    state->wrap = wrap;
+    state->wbits = (unsigned)windowBits;
+    return inflateReset(strm);
 }
 
 int ZEXPORT inflateInit2_(strm, windowBits, version, stream_size)
@@ -148,6 +171,7 @@ int windowBits;
 const char *version;
 int stream_size;
 {
+    int ret;
     struct inflate_state FAR *state;
 
     if (version == Z_NULL || version[0] != ZLIB_VERSION[0] ||
@@ -165,24 +189,13 @@ int stream_size;
     if (state == Z_NULL) return Z_MEM_ERROR;
     Tracev((stderr, "inflate: allocated\n"));
     strm->state = (struct internal_state FAR *)state;
-    if (windowBits < 0) {
-        state->wrap = 0;
-        windowBits = -windowBits;
-    }
-    else {
-        state->wrap = (windowBits >> 4) + 1;
-#ifdef GUNZIP
-        if (windowBits < 48) windowBits &= 15;
-#endif
-    }
-    if (windowBits < 8 || windowBits > 15) {
+    state->window = Z_NULL;
+    ret = inflateReset2(strm, windowBits);
+    if (ret != Z_OK) {
         ZFREE(strm, state);
         strm->state = Z_NULL;
-        return Z_STREAM_ERROR;
     }
-    state->wbits = (unsigned)windowBits;
-    state->window = Z_NULL;
-    return inflateReset(strm);
+    return ret;
 }
 
 int ZEXPORT inflateInit_(strm, version, stream_size)
@@ -193,6 +206,27 @@ int stream_size;
     return inflateInit2_(strm, DEF_WBITS, version, stream_size);
 }
 
+int ZEXPORT inflatePrime(strm, bits, value)
+z_streamp strm;
+int bits;
+int value;
+{
+    struct inflate_state FAR *state;
+
+    if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
+    state = (struct inflate_state FAR *)strm->state;
+    if (bits < 0) {
+        state->hold = 0;
+        state->bits = 0;
+        return Z_OK;
+    }
+    if (bits > 16 || state->bits + bits > 32) return Z_STREAM_ERROR;
+    value &= (1L << bits) - 1;
+    state->hold += value << state->bits;
+    state->bits += bits;
+    return Z_OK;
+}
+
 /*
    Return state with length and distance decoding tables and index sizes set to
    fixed code decoding.  Normally this returns fixed tables from inffixed.h.
@@ -341,7 +375,7 @@ unsigned out;
     /* if window not in use yet, initialize */
     if (state->wsize == 0) {
         state->wsize = 1U << state->wbits;
-        state->write = 0;
+        state->wnext = 0;
         state->whave = 0;
     }
 
@@ -349,22 +383,22 @@ unsigned out;
     copy = out - strm->avail_out;
     if (copy >= state->wsize) {
         zmemcpy(state->window, strm->next_out - state->wsize, state->wsize);
-        state->write = 0;
+        state->wnext = 0;
         state->whave = state->wsize;
     }
     else {
-        dist = state->wsize - state->write;
+        dist = state->wsize - state->wnext;
         if (dist > copy) dist = copy;
-        zmemcpy(state->window + state->write, strm->next_out - copy, dist);
+        zmemcpy(state->window + state->wnext, strm->next_out - copy, dist);
         copy -= dist;
         if (copy) {
             zmemcpy(state->window, strm->next_out - copy, copy);
-            state->write = copy;
+            state->wnext = copy;
             state->whave = state->wsize;
         }
         else {
-            state->write += dist;
-            if (state->write == state->wsize) state->write = 0;
+            state->wnext += dist;
+            if (state->wnext == state->wsize) state->wnext = 0;
             if (state->whave < state->wsize) state->whave += dist;
         }
     }
@@ -620,7 +654,9 @@ int flush;
             }
             DROPBITS(4);
             len = BITS(4) + 8;
-            if (len > state->wbits) {
+            if (state->wbits == 0)
+                state->wbits = len;
+            else if (len > state->wbits) {
                 strm->msg = (char *)"invalid window size";
                 state->mode = BAD;
                 break;
@@ -772,7 +808,7 @@ int flush;
             strm->adler = state->check = adler32(0L, Z_NULL, 0);
             state->mode = TYPE;
         case TYPE:
-            if (flush == Z_BLOCK) goto inf_leave;
+            if (flush == Z_BLOCK || flush == Z_TREES) goto inf_leave;
         case TYPEDO:
             if (state->last) {
                 BYTEBITS();
@@ -792,7 +828,11 @@ int flush;
                 fixedtables(state);
                 Tracev((stderr, "inflate:     fixed codes block%s\n",
                         state->last ? " (last)" : ""));
-                state->mode = LEN;              /* decode codes */
+                state->mode = LEN_;             /* decode codes */
+                if (flush == Z_TREES) {
+                    DROPBITS(2);
+                    goto inf_leave;
+                }
                 break;
             case 2:                             /* dynamic block */
                 Tracev((stderr, "inflate:     dynamic codes block%s\n",
@@ -817,6 +857,9 @@ int flush;
             Tracev((stderr, "inflate:       stored length %u\n",
                     state->length));
             INITBITS();
+            state->mode = COPY_;
+            if (flush == Z_TREES) goto inf_leave;
+        case COPY_:
             state->mode = COPY;
         case COPY:
             copy = state->length;
@@ -926,7 +969,16 @@ int flush;
             /* handle error breaks in while */
             if (state->mode == BAD) break;
 
-            /* build code tables */
+            /* check for end-of-block code (better have one) */
+            if (state->lens[256] == 0) {
+                strm->msg = (char *)"invalid code -- missing end-of-block";
+                state->mode = BAD;
+                break;
+            }
+
+            /* build code tables -- note: do not change the lenbits or distbits
+               values here (9 and 6) without reading the comments in inftrees.h
+               concerning the ENOUGH constants, which depend on those values */
             state->next = state->codes;
             state->lencode = (code const FAR *)(state->next);
             state->lenbits = 9;
@@ -947,14 +999,20 @@ int flush;
                 break;
             }
             Tracev((stderr, "inflate:       codes ok\n"));
+            state->mode = LEN_;
+            if (flush == Z_TREES) goto inf_leave;
+        case LEN_:
             state->mode = LEN;
         case LEN:
             if (have >= 6 && left >= 258) {
                 RESTORE();
                 inflate_fast(strm, out);
                 LOAD();
+                if (state->mode == TYPE)
+                    state->back = -1;
                 break;
             }
+            state->back = 0;
             for (;;) {
                 here = state->lencode[BITS(state->lenbits)];
                 if ((unsigned)(here.bits) <= bits) break;
@@ -969,8 +1027,10 @@ int flush;
                     PULLBYTE();
                 }
                 DROPBITS(last.bits);
+                state->back += last.bits;
             }
             DROPBITS(here.bits);
+            state->back += here.bits;
             state->length = (unsigned)here.val;
             if ((int)(here.op) == 0) {
                 Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?
@@ -981,6 +1041,7 @@ int flush;
             }
             if (here.op & 32) {
                 Tracevv((stderr, "inflate:         end of block\n"));
+                state->back = -1;
                 state->mode = TYPE;
                 break;
             }
@@ -996,8 +1057,10 @@ int flush;
                 NEEDBITS(state->extra);
                 state->length += BITS(state->extra);
                 DROPBITS(state->extra);
+                state->back += state->extra;
             }
             Tracevv((stderr, "inflate:         length %u\n", state->length));
+            state->was = state->length;
             state->mode = DIST;
         case DIST:
             for (;;) {
@@ -1014,8 +1077,10 @@ int flush;
                     PULLBYTE();
                 }
                 DROPBITS(last.bits);
+                state->back += last.bits;
             }
             DROPBITS(here.bits);
+            state->back += here.bits;
             if (here.op & 64) {
                 strm->msg = (char *)"invalid distance code";
                 state->mode = BAD;
@@ -1029,6 +1094,7 @@ int flush;
                 NEEDBITS(state->extra);
                 state->offset += BITS(state->extra);
                 DROPBITS(state->extra);
+                state->back += state->extra;
             }
 #ifdef INFLATE_STRICT
             if (state->offset > state->dmax) {
@@ -1064,12 +1130,12 @@ int flush;
                     break;
 #endif
                 }
-                if (copy > state->write) {
-                    copy -= state->write;
+                if (copy > state->wnext) {
+                    copy -= state->wnext;
                     from = state->window + (state->wsize - copy);
                 }
                 else
-                    from = state->window + (state->write - copy);
+                    from = state->window + (state->wnext - copy);
                 if (copy > state->length) copy = state->length;
             }
             else {                              /* copy from output */
@@ -1162,7 +1228,8 @@ int flush;
         strm->adler = state->check =
             UPDATE(state->check, strm->next_out - out, out);
     strm->data_type = state->bits + (state->last ? 64 : 0) +
-                      (state->mode == TYPE ? 128 : 0);
+                      (state->mode == TYPE ? 128 : 0) +
+                      (state->mode == LEN_ || state->mode == COPY_ ? 256 : 0);
     if (((in == 0 && out == 0) || flush == Z_FINISH) && ret == Z_OK)
         ret = Z_BUF_ERROR;
     return ret;
@@ -1391,11 +1458,23 @@ int subvert;
 
     if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
     state = (struct inflate_state FAR *)strm->state;
-#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR
     state->sane = !subvert;
+#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR
     return Z_OK;
 #else
     state->sane = 1;
     return Z_DATA_ERROR;
 #endif
 }
+
+long ZEXPORT inflateMark(strm)
+z_streamp strm;
+{
+    struct inflate_state FAR *state;
+
+    if (strm == Z_NULL || strm->state == Z_NULL) return -1L << 16;
+    state = (struct inflate_state FAR *)strm->state;
+    return ((long)(state->back) << 16) +
+        (state->mode == COPY ? state->length :
+            (state->mode == MATCH ? state->was - state->length : 0));
+}
diff --git a/support/inflate.h b/support/inflate.h
index d54a868..95f4986 100644
--- a/support/inflate.h
+++ b/support/inflate.h
@@ -1,5 +1,5 @@
 /* inflate.h -- internal inflate state definition
- * Copyright (C) 1995-2006 Mark Adler
+ * Copyright (C) 1995-2009 Mark Adler
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
@@ -32,11 +32,13 @@ typedef enum {
         TYPE,       /* i: waiting for type bits, including last-flag bit */
         TYPEDO,     /* i: same, but skip check to exit inflate on new block */
         STORED,     /* i: waiting for stored size (length and complement) */
+        COPY_,      /* i/o: same as COPY below, but only first time in */
         COPY,       /* i/o: waiting for input or output to copy stored block */
         TABLE,      /* i: waiting for dynamic block table lengths */
         LENLENS,    /* i: waiting for code length code lengths */
         CODELENS,   /* i: waiting for length/lit and distance code lengths */
-            LEN,        /* i: waiting for length/lit code */
+            LEN_,       /* i: same as LEN below, but only first time in */
+            LEN,        /* i: waiting for length/lit/eob code */
             LENEXT,     /* i: waiting for length extra bits */
             DIST,       /* i: waiting for distance code */
             DISTEXT,    /* i: waiting for distance extra bits */
@@ -53,19 +55,21 @@ typedef enum {
 /*
     State transitions between above modes -
 
-    (most modes can go to the BAD or MEM mode -- not shown for clarity)
+    (most modes can go to BAD or MEM on error -- not shown for clarity)
 
     Process header:
-        HEAD -> (gzip) or (zlib)
-        (gzip) -> FLAGS -> TIME -> OS -> EXLEN -> EXTRA -> NAME
-        NAME -> COMMENT -> HCRC -> TYPE
+        HEAD -> (gzip) or (zlib) or (raw)
+        (gzip) -> FLAGS -> TIME -> OS -> EXLEN -> EXTRA -> NAME -> COMMENT ->
+                  HCRC -> TYPE
         (zlib) -> DICTID or TYPE
         DICTID -> DICT -> TYPE
+        (raw) -> TYPEDO
     Read deflate blocks:
-            TYPE -> STORED or TABLE or LEN or CHECK
-            STORED -> COPY -> TYPE
-            TABLE -> LENLENS -> CODELENS -> LEN
-    Read deflate codes:
+            TYPE -> TYPEDO -> STORED or TABLE or LEN_ or CHECK
+            STORED -> COPY_ -> COPY -> TYPE
+            TABLE -> LENLENS -> CODELENS -> LEN_
+            LEN_ -> LEN
+    Read deflate codes in fixed or dynamic block:
                 LEN -> LENEXT or LIT or TYPE
                 LENEXT -> DIST -> DISTEXT -> MATCH -> LEN
                 LIT -> LEN
@@ -88,7 +92,7 @@ struct inflate_state {
     unsigned wbits;             /* log base 2 of requested window size */
     unsigned wsize;             /* window size or zero if not using window */
     unsigned whave;             /* valid bytes in the window */
-    unsigned write;             /* window write index */
+    unsigned wnext;             /* window write index */
     unsigned char FAR *window;  /* allocated sliding window, if needed */
         /* bit accumulator */
     unsigned long hold;         /* input bit accumulator */
@@ -113,4 +117,6 @@ struct inflate_state {
     unsigned short work[288];   /* work area for code table building */
     code codes[ENOUGH];         /* space for code tables */
     int sane;                   /* if false, allow invalid distance too far */
+    int back;                   /* bits back of last unprocessed length/lit */
+    unsigned was;               /* initial length of match */
 };
diff --git a/support/inftrees.c b/support/inftrees.c
index fb8d843..11e9c52 100644
--- a/support/inftrees.c
+++ b/support/inftrees.c
@@ -1,5 +1,5 @@
 /* inftrees.c -- generate Huffman trees for efficient decoding
- * Copyright (C) 1995-2006 Mark Adler
+ * Copyright (C) 1995-2010 Mark Adler
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
@@ -9,7 +9,7 @@
 #define MAXBITS 15
 
 const char inflate_copyright[] =
-   " inflate 1.2.3.3 Copyright 1995-2006 Mark Adler ";
+   " inflate 1.2.5 Copyright 1995-2010 Mark Adler ";
 /*
   If you use the zlib library in a product, an acknowledgment is welcome
   in the documentation of your product. If for some reason you cannot
@@ -29,7 +29,7 @@ const char inflate_copyright[] =
    table index bits.  It will differ if the request is greater than the
    longest code or if it is less than the shortest code.
  */
-int inflate_table(type, lens, codes, table, bits, work)
+int ZLIB_INTERNAL inflate_table(type, lens, codes, table, bits, work)
 codetype type;
 unsigned short FAR *lens;
 unsigned codes;
@@ -62,7 +62,7 @@ unsigned short FAR *work;
         35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0};
     static const unsigned short lext[31] = { /* Length codes 257..285 extra */
         16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,
-        19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 201, 203};
+        19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 73, 195};
     static const unsigned short dbase[32] = { /* Distance codes 0..29 base */
         1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
         257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
@@ -123,7 +123,7 @@ unsigned short FAR *work;
         *bits = 1;
         return 0;     /* no symbols, but wait for decoding to report error */
     }
-    for (min = 1; min <= MAXBITS; min++)
+    for (min = 1; min < max; min++)
         if (count[min] != 0) break;
     if (root < min) root = min;
 
@@ -166,11 +166,10 @@ unsigned short FAR *work;
        entered in the tables.
 
        used keeps track of how many table entries have been allocated from the
-       provided *table space.  It is checked when a LENS table is being made
-       against the space in *table, ENOUGH, minus the maximum space needed by
-       the worst case distance code, MAXD.  This should never happen, but the
-       sufficiency of ENOUGH has not been proven exhaustively, hence the check.
-       This assumes that when type == LENS, bits == 9.
+       provided *table space.  It is checked for LENS and DIST tables against
+       the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in
+       the initial root table size constants.  See the comments in inftrees.h
+       for more information.
 
        sym increments through all symbols, and the loop terminates when
        all codes of length max, i.e. all codes, have been processed.  This
@@ -209,7 +208,8 @@ unsigned short FAR *work;
     mask = used - 1;            /* mask for comparing low */
 
     /* check available table space */
-    if (type == LENS && used >= ENOUGH - MAXD)
+    if ((type == LENS && used >= ENOUGH_LENS) ||
+        (type == DISTS && used >= ENOUGH_DISTS))
         return 1;
 
     /* process all codes and make table entries */
@@ -277,7 +277,8 @@ unsigned short FAR *work;
 
             /* check for enough space */
             used += 1U << curr;
-            if (type == LENS && used >= ENOUGH - MAXD)
+            if ((type == LENS && used >= ENOUGH_LENS) ||
+                (type == DISTS && used >= ENOUGH_DISTS))
                 return 1;
 
             /* point entry in root table to sub-table */
diff --git a/support/inftrees.h b/support/inftrees.h
index b1104c8..baa53a0 100644
--- a/support/inftrees.h
+++ b/support/inftrees.h
@@ -1,5 +1,5 @@
 /* inftrees.h -- header to use inftrees.c
- * Copyright (C) 1995-2005 Mark Adler
+ * Copyright (C) 1995-2005, 2010 Mark Adler
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
@@ -35,21 +35,28 @@ typedef struct {
     01000000 - invalid code
  */
 
-/* Maximum size of dynamic tree.  The maximum found in a long but non-
-   exhaustive search was 1444 code structures (852 for length/literals
-   and 592 for distances, the latter actually the result of an
-   exhaustive search).  The true maximum is not known, but the value
-   below is more than safe. */
-#define ENOUGH 2048
-#define MAXD 592
+/* Maximum size of the dynamic table.  The maximum number of code structures is
+   1444, which is the sum of 852 for literal/length codes and 592 for distance
+   codes.  These values were found by exhaustive searches using the program
+   examples/enough.c found in the zlib distribtution.  The arguments to that
+   program are the number of symbols, the initial root table size, and the
+   maximum bit length of a code.  "enough 286 9 15" for literal/length codes
+   returns returns 852, and "enough 30 6 15" for distance codes returns 592.
+   The initial root table size (9 or 6) is found in the fifth argument of the
+   inflate_table() calls in inflate.c and infback.c.  If the root table size is
+   changed, then these maximum sizes would be need to be recalculated and
+   updated. */
+#define ENOUGH_LENS 852
+#define ENOUGH_DISTS 592
+#define ENOUGH (ENOUGH_LENS+ENOUGH_DISTS)
 
-/* Type of code to build for inftable() */
+/* Type of code to build for inflate_table() */
 typedef enum {
     CODES,
     LENS,
     DISTS
 } codetype;
 
-extern int inflate_table OF((codetype type, unsigned short FAR *lens,
+int ZLIB_INTERNAL inflate_table OF((codetype type, unsigned short FAR *lens,
                              unsigned codes, code FAR * FAR *table,
                              unsigned FAR *bits, unsigned short FAR *work));
diff --git a/support/map.c b/support/map.c
index 0fc5255..cb653bc 100644
--- a/support/map.c
+++ b/support/map.c
@@ -834,6 +834,188 @@ int Mono_Posix_ToDirectoryNotifyFlags (int x, int *r)
 	return 0;
 }
 
+int Mono_Posix_FromEpollEvents (unsigned int x, unsigned int *r)
+{
+	*r = 0;
+	if ((x & Mono_Posix_EpollEvents_EPOLLERR) == Mono_Posix_EpollEvents_EPOLLERR)
+#ifdef EPOLLERR
+		*r |= EPOLLERR;
+#else /* def EPOLLERR */
+		{errno = EINVAL; return -1;}
+#endif /* ndef EPOLLERR */
+	if ((x & Mono_Posix_EpollEvents_EPOLLET) == Mono_Posix_EpollEvents_EPOLLET)
+#ifdef EPOLLET
+		*r |= EPOLLET;
+#else /* def EPOLLET */
+		{errno = EINVAL; return -1;}
+#endif /* ndef EPOLLET */
+	if ((x & Mono_Posix_EpollEvents_EPOLLHUP) == Mono_Posix_EpollEvents_EPOLLHUP)
+#ifdef EPOLLHUP
+		*r |= EPOLLHUP;
+#else /* def EPOLLHUP */
+		{errno = EINVAL; return -1;}
+#endif /* ndef EPOLLHUP */
+	if ((x & Mono_Posix_EpollEvents_EPOLLIN) == Mono_Posix_EpollEvents_EPOLLIN)
+#ifdef EPOLLIN
+		*r |= EPOLLIN;
+#else /* def EPOLLIN */
+		{errno = EINVAL; return -1;}
+#endif /* ndef EPOLLIN */
+	if ((x & Mono_Posix_EpollEvents_EPOLLMSG) == Mono_Posix_EpollEvents_EPOLLMSG)
+#ifdef EPOLLMSG
+		*r |= EPOLLMSG;
+#else /* def EPOLLMSG */
+		{errno = EINVAL; return -1;}
+#endif /* ndef EPOLLMSG */
+	if ((x & Mono_Posix_EpollEvents_EPOLLONESHOT) == Mono_Posix_EpollEvents_EPOLLONESHOT)
+#ifdef EPOLLONESHOT
+		*r |= EPOLLONESHOT;
+#else /* def EPOLLONESHOT */
+		{errno = EINVAL; return -1;}
+#endif /* ndef EPOLLONESHOT */
+	if ((x & Mono_Posix_EpollEvents_EPOLLOUT) == Mono_Posix_EpollEvents_EPOLLOUT)
+#ifdef EPOLLOUT
+		*r |= EPOLLOUT;
+#else /* def EPOLLOUT */
+		{errno = EINVAL; return -1;}
+#endif /* ndef EPOLLOUT */
+	if ((x & Mono_Posix_EpollEvents_EPOLLPRI) == Mono_Posix_EpollEvents_EPOLLPRI)
+#ifdef EPOLLPRI
+		*r |= EPOLLPRI;
+#else /* def EPOLLPRI */
+		{errno = EINVAL; return -1;}
+#endif /* ndef EPOLLPRI */
+	if ((x & Mono_Posix_EpollEvents_EPOLLRDBAND) == Mono_Posix_EpollEvents_EPOLLRDBAND)
+#ifdef EPOLLRDBAND
+		*r |= EPOLLRDBAND;
+#else /* def EPOLLRDBAND */
+		{errno = EINVAL; return -1;}
+#endif /* ndef EPOLLRDBAND */
+	if ((x & Mono_Posix_EpollEvents_EPOLLRDHUP) == Mono_Posix_EpollEvents_EPOLLRDHUP)
+#ifdef EPOLLRDHUP
+		*r |= EPOLLRDHUP;
+#else /* def EPOLLRDHUP */
+		{errno = EINVAL; return -1;}
+#endif /* ndef EPOLLRDHUP */
+	if ((x & Mono_Posix_EpollEvents_EPOLLRDNORM) == Mono_Posix_EpollEvents_EPOLLRDNORM)
+#ifdef EPOLLRDNORM
+		*r |= EPOLLRDNORM;
+#else /* def EPOLLRDNORM */
+		{errno = EINVAL; return -1;}
+#endif /* ndef EPOLLRDNORM */
+	if ((x & Mono_Posix_EpollEvents_EPOLLWRBAND) == Mono_Posix_EpollEvents_EPOLLWRBAND)
+#ifdef EPOLLWRBAND
+		*r |= EPOLLWRBAND;
+#else /* def EPOLLWRBAND */
+		{errno = EINVAL; return -1;}
+#endif /* ndef EPOLLWRBAND */
+	if ((x & Mono_Posix_EpollEvents_EPOLLWRNORM) == Mono_Posix_EpollEvents_EPOLLWRNORM)
+#ifdef EPOLLWRNORM
+		*r |= EPOLLWRNORM;
+#else /* def EPOLLWRNORM */
+		{errno = EINVAL; return -1;}
+#endif /* ndef EPOLLWRNORM */
+	if (x == 0)
+		return 0;
+	return 0;
+}
+
+int Mono_Posix_ToEpollEvents (unsigned int x, unsigned int *r)
+{
+	*r = 0;
+	if (x == 0)
+		return 0;
+#ifdef EPOLLERR
+	if ((x & EPOLLERR) == EPOLLERR)
+		*r |= Mono_Posix_EpollEvents_EPOLLERR;
+#endif /* ndef EPOLLERR */
+#ifdef EPOLLET
+	if ((x & EPOLLET) == EPOLLET)
+		*r |= Mono_Posix_EpollEvents_EPOLLET;
+#endif /* ndef EPOLLET */
+#ifdef EPOLLHUP
+	if ((x & EPOLLHUP) == EPOLLHUP)
+		*r |= Mono_Posix_EpollEvents_EPOLLHUP;
+#endif /* ndef EPOLLHUP */
+#ifdef EPOLLIN
+	if ((x & EPOLLIN) == EPOLLIN)
+		*r |= Mono_Posix_EpollEvents_EPOLLIN;
+#endif /* ndef EPOLLIN */
+#ifdef EPOLLMSG
+	if ((x & EPOLLMSG) == EPOLLMSG)
+		*r |= Mono_Posix_EpollEvents_EPOLLMSG;
+#endif /* ndef EPOLLMSG */
+#ifdef EPOLLONESHOT
+	if ((x & EPOLLONESHOT) == EPOLLONESHOT)
+		*r |= Mono_Posix_EpollEvents_EPOLLONESHOT;
+#endif /* ndef EPOLLONESHOT */
+#ifdef EPOLLOUT
+	if ((x & EPOLLOUT) == EPOLLOUT)
+		*r |= Mono_Posix_EpollEvents_EPOLLOUT;
+#endif /* ndef EPOLLOUT */
+#ifdef EPOLLPRI
+	if ((x & EPOLLPRI) == EPOLLPRI)
+		*r |= Mono_Posix_EpollEvents_EPOLLPRI;
+#endif /* ndef EPOLLPRI */
+#ifdef EPOLLRDBAND
+	if ((x & EPOLLRDBAND) == EPOLLRDBAND)
+		*r |= Mono_Posix_EpollEvents_EPOLLRDBAND;
+#endif /* ndef EPOLLRDBAND */
+#ifdef EPOLLRDHUP
+	if ((x & EPOLLRDHUP) == EPOLLRDHUP)
+		*r |= Mono_Posix_EpollEvents_EPOLLRDHUP;
+#endif /* ndef EPOLLRDHUP */
+#ifdef EPOLLRDNORM
+	if ((x & EPOLLRDNORM) == EPOLLRDNORM)
+		*r |= Mono_Posix_EpollEvents_EPOLLRDNORM;
+#endif /* ndef EPOLLRDNORM */
+#ifdef EPOLLWRBAND
+	if ((x & EPOLLWRBAND) == EPOLLWRBAND)
+		*r |= Mono_Posix_EpollEvents_EPOLLWRBAND;
+#endif /* ndef EPOLLWRBAND */
+#ifdef EPOLLWRNORM
+	if ((x & EPOLLWRNORM) == EPOLLWRNORM)
+		*r |= Mono_Posix_EpollEvents_EPOLLWRNORM;
+#endif /* ndef EPOLLWRNORM */
+	return 0;
+}
+
+int Mono_Posix_FromEpollFlags (int x, int *r)
+{
+	*r = 0;
+	if ((x & Mono_Posix_EpollFlags_EPOLL_CLOEXEC) == Mono_Posix_EpollFlags_EPOLL_CLOEXEC)
+#ifdef EPOLL_CLOEXEC
+		*r |= EPOLL_CLOEXEC;
+#else /* def EPOLL_CLOEXEC */
+		{errno = EINVAL; return -1;}
+#endif /* ndef EPOLL_CLOEXEC */
+	if ((x & Mono_Posix_EpollFlags_EPOLL_NONBLOCK) == Mono_Posix_EpollFlags_EPOLL_NONBLOCK)
+#ifdef EPOLL_NONBLOCK
+		*r |= EPOLL_NONBLOCK;
+#else /* def EPOLL_NONBLOCK */
+		{errno = EINVAL; return -1;}
+#endif /* ndef EPOLL_NONBLOCK */
+	if (x == 0)
+		return 0;
+	return 0;
+}
+
+int Mono_Posix_ToEpollFlags (int x, int *r)
+{
+	*r = 0;
+	if (x == 0)
+		return 0;
+#ifdef EPOLL_CLOEXEC
+	if ((x & EPOLL_CLOEXEC) == EPOLL_CLOEXEC)
+		*r |= Mono_Posix_EpollFlags_EPOLL_CLOEXEC;
+#endif /* ndef EPOLL_CLOEXEC */
+#ifdef EPOLL_NONBLOCK
+	if ((x & EPOLL_NONBLOCK) == EPOLL_NONBLOCK)
+		*r |= Mono_Posix_EpollFlags_EPOLL_NONBLOCK;
+#endif /* ndef EPOLL_NONBLOCK */
+	return 0;
+}
+
 int Mono_Posix_FromErrno (int x, int *r)
 {
 	*r = 0;
diff --git a/support/map.h b/support/map.h
index a2e59fd..aab06b7 100644
--- a/support/map.h
+++ b/support/map.h
@@ -147,6 +147,46 @@ enum Mono_Posix_DirectoryNotifyFlags {
 int Mono_Posix_FromDirectoryNotifyFlags (int x, int *r);
 int Mono_Posix_ToDirectoryNotifyFlags (int x, int *r);
 
+enum Mono_Posix_EpollEvents {
+	Mono_Posix_EpollEvents_EPOLLERR           = 0x00000008,
+	#define Mono_Posix_EpollEvents_EPOLLERR     Mono_Posix_EpollEvents_EPOLLERR
+	Mono_Posix_EpollEvents_EPOLLET            = 0x80000000,
+	#define Mono_Posix_EpollEvents_EPOLLET      Mono_Posix_EpollEvents_EPOLLET
+	Mono_Posix_EpollEvents_EPOLLHUP           = 0x00000010,
+	#define Mono_Posix_EpollEvents_EPOLLHUP     Mono_Posix_EpollEvents_EPOLLHUP
+	Mono_Posix_EpollEvents_EPOLLIN            = 0x00000001,
+	#define Mono_Posix_EpollEvents_EPOLLIN      Mono_Posix_EpollEvents_EPOLLIN
+	Mono_Posix_EpollEvents_EPOLLMSG           = 0x00000400,
+	#define Mono_Posix_EpollEvents_EPOLLMSG     Mono_Posix_EpollEvents_EPOLLMSG
+	Mono_Posix_EpollEvents_EPOLLONESHOT       = 0x40000000,
+	#define Mono_Posix_EpollEvents_EPOLLONESHOT Mono_Posix_EpollEvents_EPOLLONESHOT
+	Mono_Posix_EpollEvents_EPOLLOUT           = 0x00000004,
+	#define Mono_Posix_EpollEvents_EPOLLOUT     Mono_Posix_EpollEvents_EPOLLOUT
+	Mono_Posix_EpollEvents_EPOLLPRI           = 0x00000002,
+	#define Mono_Posix_EpollEvents_EPOLLPRI     Mono_Posix_EpollEvents_EPOLLPRI
+	Mono_Posix_EpollEvents_EPOLLRDBAND        = 0x00000080,
+	#define Mono_Posix_EpollEvents_EPOLLRDBAND  Mono_Posix_EpollEvents_EPOLLRDBAND
+	Mono_Posix_EpollEvents_EPOLLRDHUP         = 0x00002000,
+	#define Mono_Posix_EpollEvents_EPOLLRDHUP   Mono_Posix_EpollEvents_EPOLLRDHUP
+	Mono_Posix_EpollEvents_EPOLLRDNORM        = 0x00000040,
+	#define Mono_Posix_EpollEvents_EPOLLRDNORM  Mono_Posix_EpollEvents_EPOLLRDNORM
+	Mono_Posix_EpollEvents_EPOLLWRBAND        = 0x00000200,
+	#define Mono_Posix_EpollEvents_EPOLLWRBAND  Mono_Posix_EpollEvents_EPOLLWRBAND
+	Mono_Posix_EpollEvents_EPOLLWRNORM        = 0x00000100,
+	#define Mono_Posix_EpollEvents_EPOLLWRNORM  Mono_Posix_EpollEvents_EPOLLWRNORM
+};
+int Mono_Posix_FromEpollEvents (unsigned int x, unsigned int *r);
+int Mono_Posix_ToEpollEvents (unsigned int x, unsigned int *r);
+
+enum Mono_Posix_EpollFlags {
+	Mono_Posix_EpollFlags_EPOLL_CLOEXEC        = 0x001e8480,
+	#define Mono_Posix_EpollFlags_EPOLL_CLOEXEC  Mono_Posix_EpollFlags_EPOLL_CLOEXEC
+	Mono_Posix_EpollFlags_EPOLL_NONBLOCK       = 0x00000fa0,
+	#define Mono_Posix_EpollFlags_EPOLL_NONBLOCK Mono_Posix_EpollFlags_EPOLL_NONBLOCK
+};
+int Mono_Posix_FromEpollFlags (int x, int *r);
+int Mono_Posix_ToEpollFlags (int x, int *r);
+
 enum Mono_Posix_Errno {
 	Mono_Posix_Errno_E2BIG                 = 0x00000007,
 	#define Mono_Posix_Errno_E2BIG           Mono_Posix_Errno_E2BIG
diff --git a/support/trees.c b/support/trees.c
index 94f28bb..56e9bb1 100644
--- a/support/trees.c
+++ b/support/trees.c
@@ -1,5 +1,5 @@
 /* trees.c -- output deflated data using Huffman coding
- * Copyright (C) 1995-2006 Jean-loup Gailly
+ * Copyright (C) 1995-2010 Jean-loup Gailly
  * detect_data_type() function provided freely by Cosmin Truta, 2006
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
@@ -204,12 +204,12 @@ local void send_bits(s, value, length)
      * unused bits in value.
      */
     if (s->bi_valid > (int)Buf_size - length) {
-        s->bi_buf |= (value << s->bi_valid);
+        s->bi_buf |= (ush)value << s->bi_valid;
         put_short(s, s->bi_buf);
         s->bi_buf = (ush)value >> (Buf_size - s->bi_valid);
         s->bi_valid += length - Buf_size;
     } else {
-        s->bi_buf |= value << s->bi_valid;
+        s->bi_buf |= (ush)value << s->bi_valid;
         s->bi_valid += length;
     }
 }
@@ -219,12 +219,12 @@ local void send_bits(s, value, length)
 { int len = length;\
   if (s->bi_valid > (int)Buf_size - len) {\
     int val = value;\
-    s->bi_buf |= (val << s->bi_valid);\
+    s->bi_buf |= (ush)val << s->bi_valid;\
     put_short(s, s->bi_buf);\
     s->bi_buf = (ush)val >> (Buf_size - s->bi_valid);\
     s->bi_valid += len - Buf_size;\
   } else {\
-    s->bi_buf |= (value) << s->bi_valid;\
+    s->bi_buf |= (ush)(value) << s->bi_valid;\
     s->bi_valid += len;\
   }\
 }
@@ -351,13 +351,14 @@ void gen_trees_header()
                 static_dtree[i].Len, SEPARATOR(i, D_CODES-1, 5));
     }
 
-    fprintf(header, "const uch _dist_code[DIST_CODE_LEN] = {\n");
+    fprintf(header, "const uch ZLIB_INTERNAL _dist_code[DIST_CODE_LEN] = {\n");
     for (i = 0; i < DIST_CODE_LEN; i++) {
         fprintf(header, "%2u%s", _dist_code[i],
                 SEPARATOR(i, DIST_CODE_LEN-1, 20));
     }
 
-    fprintf(header, "const uch _length_code[MAX_MATCH-MIN_MATCH+1]= {\n");
+    fprintf(header,
+        "const uch ZLIB_INTERNAL _length_code[MAX_MATCH-MIN_MATCH+1]= {\n");
     for (i = 0; i < MAX_MATCH-MIN_MATCH+1; i++) {
         fprintf(header, "%2u%s", _length_code[i],
                 SEPARATOR(i, MAX_MATCH-MIN_MATCH, 20));
@@ -382,7 +383,7 @@ void gen_trees_header()
 /* ===========================================================================
  * Initialize the tree data structures for a new zlib stream.
  */
-void _tr_init(s)
+void ZLIB_INTERNAL _tr_init(s)
     deflate_state *s;
 {
     tr_static_init();
@@ -867,13 +868,13 @@ local void send_all_trees(s, lcodes, dcodes, blcodes)
 /* ===========================================================================
  * Send a stored block
  */
-void _tr_stored_block(s, buf, stored_len, eof)
+void ZLIB_INTERNAL _tr_stored_block(s, buf, stored_len, last)
     deflate_state *s;
     charf *buf;       /* input block */
     ulg stored_len;   /* length of input block */
-    int eof;          /* true if this is the last block for a file */
+    int last;         /* one if this is the last block for a file */
 {
-    send_bits(s, (STORED_BLOCK<<1)+eof, 3);  /* send block type */
+    send_bits(s, (STORED_BLOCK<<1)+last, 3);    /* send block type */
 #ifdef DEBUG
     s->compressed_len = (s->compressed_len + 3 + 7) & (ulg)~7L;
     s->compressed_len += (stored_len + 4) << 3;
@@ -892,7 +893,7 @@ void _tr_stored_block(s, buf, stored_len, eof)
  * To simplify the code, we assume the worst case of last real code encoded
  * on one bit only.
  */
-void _tr_align(s)
+void ZLIB_INTERNAL _tr_align(s)
     deflate_state *s;
 {
     send_bits(s, STATIC_TREES<<1, 3);
@@ -921,11 +922,11 @@ void _tr_align(s)
  * Determine the best encoding for the current block: dynamic trees, static
  * trees or store, and output the encoded block to the zip file.
  */
-void _tr_flush_block(s, buf, stored_len, eof)
+void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last)
     deflate_state *s;
     charf *buf;       /* input block, or NULL if too old */
     ulg stored_len;   /* length of input block */
-    int eof;          /* true if this is the last block for a file */
+    int last;         /* one if this is the last block for a file */
 {
     ulg opt_lenb, static_lenb; /* opt_len and static_len in bytes */
     int max_blindex = 0;  /* index of last bit length code of non zero freq */
@@ -981,20 +982,20 @@ void _tr_flush_block(s, buf, stored_len, eof)
          * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to
          * transform a block into a stored block.
          */
-        _tr_stored_block(s, buf, stored_len, eof);
+        _tr_stored_block(s, buf, stored_len, last);
 
 #ifdef FORCE_STATIC
     } else if (static_lenb >= 0) { /* force static trees */
 #else
     } else if (s->strategy == Z_FIXED || static_lenb == opt_lenb) {
 #endif
-        send_bits(s, (STATIC_TREES<<1)+eof, 3);
+        send_bits(s, (STATIC_TREES<<1)+last, 3);
         compress_block(s, (ct_data *)static_ltree, (ct_data *)static_dtree);
 #ifdef DEBUG
         s->compressed_len += 3 + s->static_len;
 #endif
     } else {
-        send_bits(s, (DYN_TREES<<1)+eof, 3);
+        send_bits(s, (DYN_TREES<<1)+last, 3);
         send_all_trees(s, s->l_desc.max_code+1, s->d_desc.max_code+1,
                        max_blindex+1);
         compress_block(s, (ct_data *)s->dyn_ltree, (ct_data *)s->dyn_dtree);
@@ -1008,21 +1009,21 @@ void _tr_flush_block(s, buf, stored_len, eof)
      */
     init_block(s);
 
-    if (eof) {
+    if (last) {
         bi_windup(s);
 #ifdef DEBUG
         s->compressed_len += 7;  /* align on byte boundary */
 #endif
     }
     Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len>>3,
-           s->compressed_len-7*eof));
+           s->compressed_len-7*last));
 }
 
 /* ===========================================================================
  * Save the match info and tally the frequency counts. Return true if
  * the current block must be flushed.
  */
-int _tr_tally (s, dist, lc)
+int ZLIB_INTERNAL _tr_tally (s, dist, lc)
     deflate_state *s;
     unsigned dist;  /* distance of matched string */
     unsigned lc;    /* match length-MIN_MATCH or unmatched char (if dist==0) */
diff --git a/support/trees.h b/support/trees.h
index 72facf9..d35639d 100644
--- a/support/trees.h
+++ b/support/trees.h
@@ -70,7 +70,7 @@ local const ct_data static_dtree[D_CODES] = {
 {{19},{ 5}}, {{11},{ 5}}, {{27},{ 5}}, {{ 7},{ 5}}, {{23},{ 5}}
 };
 
-const uch _dist_code[DIST_CODE_LEN] = {
+const uch ZLIB_INTERNAL _dist_code[DIST_CODE_LEN] = {
  0,  1,  2,  3,  4,  4,  5,  5,  6,  6,  6,  6,  7,  7,  7,  7,  8,  8,  8,  8,
  8,  8,  8,  8,  9,  9,  9,  9,  9,  9,  9,  9, 10, 10, 10, 10, 10, 10, 10, 10,
 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
@@ -99,7 +99,7 @@ const uch _dist_code[DIST_CODE_LEN] = {
 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29
 };
 
-const uch _length_code[MAX_MATCH-MIN_MATCH+1]= {
+const uch ZLIB_INTERNAL _length_code[MAX_MATCH-MIN_MATCH+1]= {
  0,  1,  2,  3,  4,  5,  6,  7,  8,  8,  9,  9, 10, 10, 11, 11, 12, 12, 12, 12,
 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16,
 17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19,
diff --git a/support/uncompr.c b/support/uncompr.c
index b59e3d0..ad98be3 100644
--- a/support/uncompr.c
+++ b/support/uncompr.c
@@ -1,5 +1,5 @@
 /* uncompr.c -- decompress a memory buffer
- * Copyright (C) 1995-2003 Jean-loup Gailly.
+ * Copyright (C) 1995-2003, 2010 Jean-loup Gailly.
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
@@ -16,8 +16,6 @@
    been saved previously by the compressor and transmitted to the decompressor
    by some mechanism outside the scope of this compression library.)
    Upon exit, destLen is the actual size of the compressed buffer.
-     This function can be used to decompress a whole file at once if the
-   input file is mmap'ed.
 
      uncompress returns Z_OK if success, Z_MEM_ERROR if there was not
    enough memory, Z_BUF_ERROR if there was not enough room in the output
diff --git a/support/zconf.h b/support/zconf.h
index bfb62c1..02ce56c 100644
--- a/support/zconf.h
+++ b/support/zconf.h
@@ -1,5 +1,5 @@
 /* zconf.h -- configuration of the zlib compression library
- * Copyright (C) 1995-2006 Jean-loup Gailly.
+ * Copyright (C) 1995-2010 Jean-loup Gailly.
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
@@ -26,11 +26,13 @@
 #  define _tr_tally             z__tr_tally
 #  define adler32               z_adler32
 #  define adler32_combine       z_adler32_combine
+#  define adler32_combine64     z_adler32_combine64
 #  define compress              z_compress
 #  define compress2             z_compress2
 #  define compressBound         z_compressBound
 #  define crc32                 z_crc32
 #  define crc32_combine         z_crc32_combine
+#  define crc32_combine64       z_crc32_combine64
 #  define deflate               z_deflate
 #  define deflateBound          z_deflateBound
 #  define deflateCopy           z_deflateCopy
@@ -45,8 +47,14 @@
 #  define deflateTune           z_deflateTune
 #  define deflate_copyright     z_deflate_copyright
 #  define get_crc_table         z_get_crc_table
+#  define gz_error              z_gz_error
+#  define gz_intmax             z_gz_intmax
+#  define gz_strwinerror        z_gz_strwinerror
+#  define gzbuffer              z_gzbuffer
 #  define gzclearerr            z_gzclearerr
 #  define gzclose               z_gzclose
+#  define gzclose_r             z_gzclose_r
+#  define gzclose_w             z_gzclose_w
 #  define gzdirect              z_gzdirect
 #  define gzdopen               z_gzdopen
 #  define gzeof                 z_gzeof
@@ -54,15 +62,20 @@
 #  define gzflush               z_gzflush
 #  define gzgetc                z_gzgetc
 #  define gzgets                z_gzgets
+#  define gzoffset              z_gzoffset
+#  define gzoffset64            z_gzoffset64
 #  define gzopen                z_gzopen
+#  define gzopen64              z_gzopen64
 #  define gzprintf              z_gzprintf
 #  define gzputc                z_gzputc
 #  define gzputs                z_gzputs
 #  define gzread                z_gzread
 #  define gzrewind              z_gzrewind
 #  define gzseek                z_gzseek
+#  define gzseek64              z_gzseek64
 #  define gzsetparams           z_gzsetparams
 #  define gztell                z_gztell
+#  define gztell64              z_gztell64
 #  define gzungetc              z_gzungetc
 #  define gzwrite               z_gzwrite
 #  define inflate               z_inflate
@@ -74,17 +87,19 @@
 #  define inflateGetHeader      z_inflateGetHeader
 #  define inflateInit2_         z_inflateInit2_
 #  define inflateInit_          z_inflateInit_
+#  define inflateMark           z_inflateMark
 #  define inflatePrime          z_inflatePrime
 #  define inflateReset          z_inflateReset
+#  define inflateReset2         z_inflateReset2
 #  define inflateSetDictionary  z_inflateSetDictionary
 #  define inflateSync           z_inflateSync
 #  define inflateSyncPoint      z_inflateSyncPoint
+#  define inflateUndermine      z_inflateUndermine
 #  define inflate_copyright     z_inflate_copyright
 #  define inflate_fast          z_inflate_fast
 #  define inflate_table         z_inflate_table
 #  define uncompress            z_uncompress
 #  define zError                z_zError
-#  define z_errmsg              z_z_errmsg
 #  define zcalloc               z_zcalloc
 #  define zcfree                z_zcfree
 #  define zlibCompileFlags      z_zlibCompileFlags
@@ -107,18 +122,12 @@
 #  define uLong                 z_uLong
 #  define uLongf                z_uLongf
 #  define voidp                 z_voidp
-#  define voidp                 z_voidp
-#  define voidpc                z_voidpc
 #  define voidpc                z_voidpc
 #  define voidpf                z_voidpf
-#  define voidpf                z_voidpf
-#  define z_stream              z_z_stream
-#  define z_streamp             z_z_streamp
 
 /* all zlib structs in zlib.h and zconf.h */
 #  define gz_header_s           z_gz_header_s
 #  define internal_state        z_internal_state
-#  define z_stream_s            z_z_stream_s
 
 #endif
 
@@ -306,10 +315,6 @@
 #  endif
 #endif
 
-#ifdef HAVE_VISIBILITY_PRAGMA
-#  define ZEXTERN __attribute__((visibility ("default"))) extern
-#endif
-
 #ifndef ZEXTERN
 #  define ZEXTERN extern
 #endif
@@ -351,20 +356,50 @@ typedef uLong FAR uLongf;
    typedef Byte       *voidp;
 #endif
 
-/* not needed
- * This is created by zlib's configure script to define off_t
-#include "zlibdefs.h"
-*/
+#ifdef HAVE_UNISTD_H    /* may be set to #if 1 by ./configure */
+#  define Z_HAVE_UNISTD_H
+#endif
+
+#ifdef STDC
+#  include <sys/types.h>    /* for off_t */
+#endif
+
+/* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and
+ * "#define _LARGEFILE64_SOURCE 1" as requesting 64-bit operations, (even
+ * though the former does not conform to the LFS document), but considering
+ * both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as
+ * equivalently requesting no 64-bit operations
+ */
+#if -_LARGEFILE64_SOURCE - -1 == 1
+#  undef _LARGEFILE64_SOURCE
+#endif
+
+#if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE)
+#  include <unistd.h>       /* for SEEK_* and off_t */
+#  ifdef VMS
+#    include <unixio.h>     /* for off_t */
+#  endif
+#  ifndef z_off_t
+#    define z_off_t off_t
+#  endif
+#endif
 
 #ifndef SEEK_SET
 #  define SEEK_SET        0       /* Seek from beginning of file.  */
 #  define SEEK_CUR        1       /* Seek from current position.  */
 #  define SEEK_END        2       /* Set file pointer to EOF plus "offset" */
 #endif
+
 #ifndef z_off_t
 #  define z_off_t long
 #endif
 
+#if defined(_LARGEFILE64_SOURCE) && _LFS64_LARGEFILE-0
+#  define z_off64_t off64_t
+#else
+#  define z_off64_t z_off_t
+#endif
+
 #if defined(__OS400__)
 #  define NO_vsnprintf
 #endif
@@ -375,24 +410,19 @@ typedef uLong FAR uLongf;
 
 /* MVS linker does not support external names larger than 8 bytes */
 #if defined(__MVS__)
-#   pragma map(deflateInit_,"DEIN")
-#   pragma map(deflateInit2_,"DEIN2")
-#   pragma map(deflateEnd,"DEEND")
-#   pragma map(deflateBound,"DEBND")
-#   pragma map(inflateInit_,"ININ")
-#   pragma map(inflateInit2_,"ININ2")
-#   pragma map(inflateEnd,"INEND")
-#   pragma map(inflateSync,"INSY")
-#   pragma map(inflateSetDictionary,"INSEDI")
-#   pragma map(compressBound,"CMBND")
-#   pragma map(inflate_table,"INTABL")
-#   pragma map(inflate_fast,"INFA")
-#   pragma map(inflate_copyright,"INCOPY")
-#endif
-
-#ifdef WINDOWS
-#define NO_FSEEKO 1
-#define NO_vsnprintf 1
+  #pragma map(deflateInit_,"DEIN")
+  #pragma map(deflateInit2_,"DEIN2")
+  #pragma map(deflateEnd,"DEEND")
+  #pragma map(deflateBound,"DEBND")
+  #pragma map(inflateInit_,"ININ")
+  #pragma map(inflateInit2_,"ININ2")
+  #pragma map(inflateEnd,"INEND")
+  #pragma map(inflateSync,"INSY")
+  #pragma map(inflateSetDictionary,"INSEDI")
+  #pragma map(compressBound,"CMBND")
+  #pragma map(inflate_table,"INTABL")
+  #pragma map(inflate_fast,"INFA")
+  #pragma map(inflate_copyright,"INCOPY")
 #endif
-#endif /* ZCONF_H */
 
+#endif /* ZCONF_H */
diff --git a/support/zlib.h b/support/zlib.h
index ab2f11b..bfbba83 100644
--- a/support/zlib.h
+++ b/support/zlib.h
@@ -1,7 +1,7 @@
 /* zlib.h -- interface of the 'zlib' general purpose compression library
-  version 1.2.3.3, October 2nd, 2006
+  version 1.2.5, April 19th, 2010
 
-  Copyright (C) 1995-2006 Jean-loup Gailly and Mark Adler
+  Copyright (C) 1995-2010 Jean-loup Gailly and Mark Adler
 
   This software is provided 'as-is', without any express or implied
   warranty.  In no event will the authors be held liable for any damages
@@ -37,44 +37,44 @@
 extern "C" {
 #endif
 
-#define ZLIB_VERSION "1.2.3.3"
-#define ZLIB_VERNUM 0x1233
+#define ZLIB_VERSION "1.2.5"
+#define ZLIB_VERNUM 0x1250
 #define ZLIB_VER_MAJOR 1
 #define ZLIB_VER_MINOR 2
-#define ZLIB_VER_REVISION 3
+#define ZLIB_VER_REVISION 5
+#define ZLIB_VER_SUBREVISION 0
 
 /*
-     The 'zlib' compression library provides in-memory compression and
-  decompression functions, including integrity checks of the uncompressed
-  data.  This version of the library supports only one compression method
-  (deflation) but other algorithms will be added later and will have the same
-  stream interface.
-
-     Compression can be done in a single step if the buffers are large
-  enough (for example if an input file is mmap'ed), or can be done by
-  repeated calls of the compression function.  In the latter case, the
-  application must provide more input and/or consume the output
+    The 'zlib' compression library provides in-memory compression and
+  decompression functions, including integrity checks of the uncompressed data.
+  This version of the library supports only one compression method (deflation)
+  but other algorithms will be added later and will have the same stream
+  interface.
+
+    Compression can be done in a single step if the buffers are large enough,
+  or can be done by repeated calls of the compression function.  In the latter
+  case, the application must provide more input and/or consume the output
   (providing more output space) before each call.
 
-     The compressed data format used by default by the in-memory functions is
+    The compressed data format used by default by the in-memory functions is
   the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped
   around a deflate stream, which is itself documented in RFC 1951.
 
-     The library also supports reading and writing files in gzip (.gz) format
+    The library also supports reading and writing files in gzip (.gz) format
   with an interface similar to that of stdio using the functions that start
   with "gz".  The gzip format is different from the zlib format.  gzip is a
   gzip wrapper, documented in RFC 1952, wrapped around a deflate stream.
 
-     This library can optionally read and write gzip streams in memory as well.
+    This library can optionally read and write gzip streams in memory as well.
 
-     The zlib format was designed to be compact and fast for use in memory
+    The zlib format was designed to be compact and fast for use in memory
   and on communications channels.  The gzip format was designed for single-
   file compression on file systems, has a larger header than zlib to maintain
   directory information, and uses a different, slower check method than zlib.
 
-     The library does not install any signal handler. The decoder checks
-  the consistency of the compressed data, so the library should never
-  crash even in case of corrupted input.
+    The library does not install any signal handler.  The decoder checks
+  the consistency of the compressed data, so the library should never crash
+  even in case of corrupted input.
 */
 
 typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size));
@@ -129,45 +129,45 @@ typedef struct gz_header_s {
 typedef gz_header FAR *gz_headerp;
 
 /*
-   The application must update next_in and avail_in when avail_in has
-   dropped to zero. It must update next_out and avail_out when avail_out
-   has dropped to zero. The application must initialize zalloc, zfree and
-   opaque before calling the init function. All other fields are set by the
-   compression library and must not be updated by the application.
-
-   The opaque value provided by the application will be passed as the first
-   parameter for calls of zalloc and zfree. This can be useful for custom
-   memory management. The compression library attaches no meaning to the
+     The application must update next_in and avail_in when avail_in has dropped
+   to zero.  It must update next_out and avail_out when avail_out has dropped
+   to zero.  The application must initialize zalloc, zfree and opaque before
+   calling the init function.  All other fields are set by the compression
+   library and must not be updated by the application.
+
+     The opaque value provided by the application will be passed as the first
+   parameter for calls of zalloc and zfree.  This can be useful for custom
+   memory management.  The compression library attaches no meaning to the
    opaque value.
 
-   zalloc must return Z_NULL if there is not enough memory for the object.
+     zalloc must return Z_NULL if there is not enough memory for the object.
    If zlib is used in a multi-threaded application, zalloc and zfree must be
    thread safe.
 
-   On 16-bit systems, the functions zalloc and zfree must be able to allocate
-   exactly 65536 bytes, but will not be required to allocate more than this
-   if the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS,
-   pointers returned by zalloc for objects of exactly 65536 bytes *must*
-   have their offset normalized to zero. The default allocation function
-   provided by this library ensures this (see zutil.c). To reduce memory
-   requirements and avoid any allocation of 64K objects, at the expense of
-   compression ratio, compile the library with -DMAX_WBITS=14 (see zconf.h).
-
-   The fields total_in and total_out can be used for statistics or
-   progress reports. After compression, total_in holds the total size of
-   the uncompressed data and may be saved for use in the decompressor
-   (particularly if the decompressor wants to decompress everything in
-   a single step).
+     On 16-bit systems, the functions zalloc and zfree must be able to allocate
+   exactly 65536 bytes, but will not be required to allocate more than this if
+   the symbol MAXSEG_64K is defined (see zconf.h).  WARNING: On MSDOS, pointers
+   returned by zalloc for objects of exactly 65536 bytes *must* have their
+   offset normalized to zero.  The default allocation function provided by this
+   library ensures this (see zutil.c).  To reduce memory requirements and avoid
+   any allocation of 64K objects, at the expense of compression ratio, compile
+   the library with -DMAX_WBITS=14 (see zconf.h).
+
+     The fields total_in and total_out can be used for statistics or progress
+   reports.  After compression, total_in holds the total size of the
+   uncompressed data and may be saved for use in the decompressor (particularly
+   if the decompressor wants to decompress everything in a single step).
 */
 
                         /* constants */
 
 #define Z_NO_FLUSH      0
-#define Z_PARTIAL_FLUSH 1 /* will be removed, use Z_SYNC_FLUSH instead */
+#define Z_PARTIAL_FLUSH 1
 #define Z_SYNC_FLUSH    2
 #define Z_FULL_FLUSH    3
 #define Z_FINISH        4
 #define Z_BLOCK         5
+#define Z_TREES         6
 /* Allowed flush values; see deflate() and inflate() below for details */
 
 #define Z_OK            0
@@ -179,8 +179,8 @@ typedef gz_header FAR *gz_headerp;
 #define Z_MEM_ERROR    (-4)
 #define Z_BUF_ERROR    (-5)
 #define Z_VERSION_ERROR (-6)
-/* Return codes for the compression/decompression functions. Negative
- * values are errors, positive values are used for special but normal events.
+/* Return codes for the compression/decompression functions. Negative values
+ * are errors, positive values are used for special but normal events.
  */
 
 #define Z_NO_COMPRESSION         0
@@ -210,119 +210,140 @@ typedef gz_header FAR *gz_headerp;
 #define zlib_version zlibVersion()
 /* for compatibility with versions < 1.0.2 */
 
+
                         /* basic functions */
 
 ZEXTERN const char * ZEXPORT zlibVersion OF((void));
 /* The application can compare zlibVersion and ZLIB_VERSION for consistency.
-   If the first character differs, the library code actually used is
-   not compatible with the zlib.h header file used by the application.
-   This check is automatically made by deflateInit and inflateInit.
+   If the first character differs, the library code actually used is not
+   compatible with the zlib.h header file used by the application.  This check
+   is automatically made by deflateInit and inflateInit.
  */
 
 /*
 ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level));
 
-     Initializes the internal stream state for compression. The fields
-   zalloc, zfree and opaque must be initialized before by the caller.
-   If zalloc and zfree are set to Z_NULL, deflateInit updates them to
-   use default allocation functions.
+     Initializes the internal stream state for compression.  The fields
+   zalloc, zfree and opaque must be initialized before by the caller.  If
+   zalloc and zfree are set to Z_NULL, deflateInit updates them to use default
+   allocation functions.
 
      The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9:
-   1 gives best speed, 9 gives best compression, 0 gives no compression at
-   all (the input data is simply copied a block at a time).
-   Z_DEFAULT_COMPRESSION requests a default compromise between speed and
-   compression (currently equivalent to level 6).
+   1 gives best speed, 9 gives best compression, 0 gives no compression at all
+   (the input data is simply copied a block at a time).  Z_DEFAULT_COMPRESSION
+   requests a default compromise between speed and compression (currently
+   equivalent to level 6).
 
-     deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not
-   enough memory, Z_STREAM_ERROR if level is not a valid compression level,
+     deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough
+   memory, Z_STREAM_ERROR if level is not a valid compression level, or
    Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible
-   with the version assumed by the caller (ZLIB_VERSION).
-   msg is set to null if there is no error message.  deflateInit does not
-   perform any compression: this will be done by deflate().
+   with the version assumed by the caller (ZLIB_VERSION).  msg is set to null
+   if there is no error message.  deflateInit does not perform any compression:
+   this will be done by deflate().
 */
 
 
 ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush));
 /*
     deflate compresses as much data as possible, and stops when the input
-  buffer becomes empty or the output buffer becomes full. It may introduce some
-  output latency (reading input without producing any output) except when
+  buffer becomes empty or the output buffer becomes full.  It may introduce
+  some output latency (reading input without producing any output) except when
   forced to flush.
 
-    The detailed semantics are as follows. deflate performs one or both of the
+    The detailed semantics are as follows.  deflate performs one or both of the
   following actions:
 
   - Compress more input starting at next_in and update next_in and avail_in
-    accordingly. If not all input can be processed (because there is not
+    accordingly.  If not all input can be processed (because there is not
     enough room in the output buffer), next_in and avail_in are updated and
     processing will resume at this point for the next call of deflate().
 
   - Provide more output starting at next_out and update next_out and avail_out
-    accordingly. This action is forced if the parameter flush is non zero.
+    accordingly.  This action is forced if the parameter flush is non zero.
     Forcing flush frequently degrades the compression ratio, so this parameter
-    should be set only when necessary (in interactive applications).
-    Some output may be provided even if flush is not set.
-
-  Before the call of deflate(), the application should ensure that at least
-  one of the actions is possible, by providing more input and/or consuming
-  more output, and updating avail_in or avail_out accordingly; avail_out
-  should never be zero before the call. The application can consume the
-  compressed output when it wants, for example when the output buffer is full
-  (avail_out == 0), or after each call of deflate(). If deflate returns Z_OK
-  and with zero avail_out, it must be called again after making room in the
-  output buffer because there might be more output pending.
+    should be set only when necessary (in interactive applications).  Some
+    output may be provided even if flush is not set.
+
+    Before the call of deflate(), the application should ensure that at least
+  one of the actions is possible, by providing more input and/or consuming more
+  output, and updating avail_in or avail_out accordingly; avail_out should
+  never be zero before the call.  The application can consume the compressed
+  output when it wants, for example when the output buffer is full (avail_out
+  == 0), or after each call of deflate().  If deflate returns Z_OK and with
+  zero avail_out, it must be called again after making room in the output
+  buffer because there might be more output pending.
 
     Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to
-  decide how much data to accumualte before producing output, in order to
+  decide how much data to accumulate before producing output, in order to
   maximize compression.
 
     If the parameter flush is set to Z_SYNC_FLUSH, all pending output is
   flushed to the output buffer and the output is aligned on a byte boundary, so
-  that the decompressor can get all input data available so far. (In particular
-  avail_in is zero after the call if enough output space has been provided
-  before the call.)  Flushing may degrade compression for some compression
-  algorithms and so it should be used only when necessary.
+  that the decompressor can get all input data available so far.  (In
+  particular avail_in is zero after the call if enough output space has been
+  provided before the call.) Flushing may degrade compression for some
+  compression algorithms and so it should be used only when necessary.  This
+  completes the current deflate block and follows it with an empty stored block
+  that is three bits plus filler bits to the next byte, followed by four bytes
+  (00 00 ff ff).
+
+    If flush is set to Z_PARTIAL_FLUSH, all pending output is flushed to the
+  output buffer, but the output is not aligned to a byte boundary.  All of the
+  input data so far will be available to the decompressor, as for Z_SYNC_FLUSH.
+  This completes the current deflate block and follows it with an empty fixed
+  codes block that is 10 bits long.  This assures that enough bytes are output
+  in order for the decompressor to finish the block before the empty fixed code
+  block.
+
+    If flush is set to Z_BLOCK, a deflate block is completed and emitted, as
+  for Z_SYNC_FLUSH, but the output is not aligned on a byte boundary, and up to
+  seven bits of the current block are held to be written as the next byte after
+  the next deflate block is completed.  In this case, the decompressor may not
+  be provided enough bits at this point in order to complete decompression of
+  the data provided so far to the compressor.  It may need to wait for the next
+  block to be emitted.  This is for advanced applications that need to control
+  the emission of deflate blocks.
 
     If flush is set to Z_FULL_FLUSH, all output is flushed as with
   Z_SYNC_FLUSH, and the compression state is reset so that decompression can
   restart from this point if previous compressed data has been damaged or if
-  random access is desired. Using Z_FULL_FLUSH too often can seriously degrade
+  random access is desired.  Using Z_FULL_FLUSH too often can seriously degrade
   compression.
 
     If deflate returns with avail_out == 0, this function must be called again
   with the same value of the flush parameter and more output space (updated
   avail_out), until the flush is complete (deflate returns with non-zero
-  avail_out). In the case of a Z_FULL_FLUSH or Z_SYNC_FLUSH, make sure that
+  avail_out).  In the case of a Z_FULL_FLUSH or Z_SYNC_FLUSH, make sure that
   avail_out is greater than six to avoid repeated flush markers due to
   avail_out == 0 on return.
 
     If the parameter flush is set to Z_FINISH, pending input is processed,
-  pending output is flushed and deflate returns with Z_STREAM_END if there
-  was enough output space; if deflate returns with Z_OK, this function must be
+  pending output is flushed and deflate returns with Z_STREAM_END if there was
+  enough output space; if deflate returns with Z_OK, this function must be
   called again with Z_FINISH and more output space (updated avail_out) but no
-  more input data, until it returns with Z_STREAM_END or an error. After
-  deflate has returned Z_STREAM_END, the only possible operations on the
-  stream are deflateReset or deflateEnd.
+  more input data, until it returns with Z_STREAM_END or an error.  After
+  deflate has returned Z_STREAM_END, the only possible operations on the stream
+  are deflateReset or deflateEnd.
 
     Z_FINISH can be used immediately after deflateInit if all the compression
-  is to be done in a single step. In this case, avail_out must be at least
-  the value returned by deflateBound (see below). If deflate does not return
+  is to be done in a single step.  In this case, avail_out must be at least the
+  value returned by deflateBound (see below).  If deflate does not return
   Z_STREAM_END, then it must be called again as described above.
 
     deflate() sets strm->adler to the adler32 checksum of all input read
   so far (that is, total_in bytes).
 
     deflate() may update strm->data_type if it can make a good guess about
-  the input data type (Z_BINARY or Z_TEXT). In doubt, the data is considered
-  binary. This field is only for information purposes and does not affect
-  the compression algorithm in any manner.
+  the input data type (Z_BINARY or Z_TEXT).  In doubt, the data is considered
+  binary.  This field is only for information purposes and does not affect the
+  compression algorithm in any manner.
 
     deflate() returns Z_OK if some progress has been made (more input
   processed or more output produced), Z_STREAM_END if all input has been
   consumed and all output has been produced (only when flush is set to
   Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example
-  if next_in or next_out was NULL), Z_BUF_ERROR if no progress is possible
-  (for example avail_in or avail_out was zero). Note that Z_BUF_ERROR is not
+  if next_in or next_out was Z_NULL), Z_BUF_ERROR if no progress is possible
+  (for example avail_in or avail_out was zero).  Note that Z_BUF_ERROR is not
   fatal, and deflate() can be called again with more input and more output
   space to continue compressing.
 */
@@ -331,13 +352,13 @@ ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush));
 ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm));
 /*
      All dynamically allocated data structures for this stream are freed.
-   This function discards any unprocessed input and does not flush any
-   pending output.
+   This function discards any unprocessed input and does not flush any pending
+   output.
 
      deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the
    stream state was inconsistent, Z_DATA_ERROR if the stream was freed
-   prematurely (some input or output was discarded). In the error case,
-   msg may be set but then points to a static string (which must not be
+   prematurely (some input or output was discarded).  In the error case, msg
+   may be set but then points to a static string (which must not be
    deallocated).
 */
 
@@ -345,10 +366,10 @@ ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm));
 /*
 ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm));
 
-     Initializes the internal stream state for decompression. The fields
+     Initializes the internal stream state for decompression.  The fields
    next_in, avail_in, zalloc, zfree and opaque must be initialized before by
-   the caller. If next_in is not Z_NULL and avail_in is large enough (the exact
-   value depends on the compression method), inflateInit determines the
+   the caller.  If next_in is not Z_NULL and avail_in is large enough (the
+   exact value depends on the compression method), inflateInit determines the
    compression method from the zlib header and allocates all data structures
    accordingly; otherwise the allocation will be deferred to the first call of
    inflate.  If zalloc and zfree are set to Z_NULL, inflateInit updates them to
@@ -358,97 +379,106 @@ ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm));
    memory, Z_VERSION_ERROR if the zlib library version is incompatible with the
    version assumed by the caller, or Z_STREAM_ERROR if the parameters are
    invalid, such as a null pointer to the structure.  msg is set to null if
-   there is no error message. inflateInit does not perform any decompression
+   there is no error message.  inflateInit does not perform any decompression
    apart from possibly reading the zlib header if present: actual decompression
    will be done by inflate().  (So next_in and avail_in may be modified, but
-   next_out and avail_out are unused and unchanged.)  The current
-   implementation of inflateInit() does not process any header information --
-   that is deferred until inflate() is called.
+   next_out and avail_out are unused and unchanged.) The current implementation
+   of inflateInit() does not process any header information -- that is deferred
+   until inflate() is called.
 */
 
 
 ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush));
 /*
     inflate decompresses as much data as possible, and stops when the input
-  buffer becomes empty or the output buffer becomes full. It may introduce
+  buffer becomes empty or the output buffer becomes full.  It may introduce
   some output latency (reading input without producing any output) except when
   forced to flush.
 
-  The detailed semantics are as follows. inflate performs one or both of the
+  The detailed semantics are as follows.  inflate performs one or both of the
   following actions:
 
   - Decompress more input starting at next_in and update next_in and avail_in
-    accordingly. If not all input can be processed (because there is not
-    enough room in the output buffer), next_in is updated and processing
-    will resume at this point for the next call of inflate().
+    accordingly.  If not all input can be processed (because there is not
+    enough room in the output buffer), next_in is updated and processing will
+    resume at this point for the next call of inflate().
 
   - Provide more output starting at next_out and update next_out and avail_out
-    accordingly.  inflate() provides as much output as possible, until there
-    is no more input data or no more space in the output buffer (see below
-    about the flush parameter).
-
-  Before the call of inflate(), the application should ensure that at least
-  one of the actions is possible, by providing more input and/or consuming
-  more output, and updating the next_* and avail_* values accordingly.
-  The application can consume the uncompressed output when it wants, for
-  example when the output buffer is full (avail_out == 0), or after each
-  call of inflate(). If inflate returns Z_OK and with zero avail_out, it
-  must be called again after making room in the output buffer because there
-  might be more output pending.
-
-    The flush parameter of inflate() can be Z_NO_FLUSH, Z_SYNC_FLUSH,
-  Z_FINISH, or Z_BLOCK. Z_SYNC_FLUSH requests that inflate() flush as much
-  output as possible to the output buffer. Z_BLOCK requests that inflate() stop
-  if and when it gets to the next deflate block boundary. When decoding the
-  zlib or gzip format, this will cause inflate() to return immediately after
-  the header and before the first block. When doing a raw inflate, inflate()
-  will go ahead and process the first block, and will return when it gets to
-  the end of that block, or when it runs out of data.
+    accordingly.  inflate() provides as much output as possible, until there is
+    no more input data or no more space in the output buffer (see below about
+    the flush parameter).
+
+    Before the call of inflate(), the application should ensure that at least
+  one of the actions is possible, by providing more input and/or consuming more
+  output, and updating the next_* and avail_* values accordingly.  The
+  application can consume the uncompressed output when it wants, for example
+  when the output buffer is full (avail_out == 0), or after each call of
+  inflate().  If inflate returns Z_OK and with zero avail_out, it must be
+  called again after making room in the output buffer because there might be
+  more output pending.
+
+    The flush parameter of inflate() can be Z_NO_FLUSH, Z_SYNC_FLUSH, Z_FINISH,
+  Z_BLOCK, or Z_TREES.  Z_SYNC_FLUSH requests that inflate() flush as much
+  output as possible to the output buffer.  Z_BLOCK requests that inflate()
+  stop if and when it gets to the next deflate block boundary.  When decoding
+  the zlib or gzip format, this will cause inflate() to return immediately
+  after the header and before the first block.  When doing a raw inflate,
+  inflate() will go ahead and process the first block, and will return when it
+  gets to the end of that block, or when it runs out of data.
 
     The Z_BLOCK option assists in appending to or combining deflate streams.
   Also to assist in this, on return inflate() will set strm->data_type to the
-  number of unused bits in the last byte taken from strm->next_in, plus 64
-  if inflate() is currently decoding the last block in the deflate stream,
-  plus 128 if inflate() returned immediately after decoding an end-of-block
-  code or decoding the complete header up to just before the first byte of the
-  deflate stream. The end-of-block will not be indicated until all of the
-  uncompressed data from that block has been written to strm->next_out.  The
-  number of unused bits may in general be greater than seven, except when
-  bit 7 of data_type is set, in which case the number of unused bits will be
-  less than eight.
+  number of unused bits in the last byte taken from strm->next_in, plus 64 if
+  inflate() is currently decoding the last block in the deflate stream, plus
+  128 if inflate() returned immediately after decoding an end-of-block code or
+  decoding the complete header up to just before the first byte of the deflate
+  stream.  The end-of-block will not be indicated until all of the uncompressed
+  data from that block has been written to strm->next_out.  The number of
+  unused bits may in general be greater than seven, except when bit 7 of
+  data_type is set, in which case the number of unused bits will be less than
+  eight.  data_type is set as noted here every time inflate() returns for all
+  flush options, and so can be used to determine the amount of currently
+  consumed input in bits.
+
+    The Z_TREES option behaves as Z_BLOCK does, but it also returns when the
+  end of each deflate block header is reached, before any actual data in that
+  block is decoded.  This allows the caller to determine the length of the
+  deflate block header for later use in random access within a deflate block.
+  256 is added to the value of strm->data_type when inflate() returns
+  immediately after reaching the end of the deflate block header.
 
     inflate() should normally be called until it returns Z_STREAM_END or an
-  error. However if all decompression is to be performed in a single step
-  (a single call of inflate), the parameter flush should be set to
-  Z_FINISH. In this case all pending input is processed and all pending
-  output is flushed; avail_out must be large enough to hold all the
-  uncompressed data. (The size of the uncompressed data may have been saved
-  by the compressor for this purpose.) The next operation on this stream must
-  be inflateEnd to deallocate the decompression state. The use of Z_FINISH
-  is never required, but can be used to inform inflate that a faster approach
-  may be used for the single inflate() call.
+  error.  However if all decompression is to be performed in a single step (a
+  single call of inflate), the parameter flush should be set to Z_FINISH.  In
+  this case all pending input is processed and all pending output is flushed;
+  avail_out must be large enough to hold all the uncompressed data.  (The size
+  of the uncompressed data may have been saved by the compressor for this
+  purpose.) The next operation on this stream must be inflateEnd to deallocate
+  the decompression state.  The use of Z_FINISH is never required, but can be
+  used to inform inflate that a faster approach may be used for the single
+  inflate() call.
 
      In this implementation, inflate() always flushes as much output as
   possible to the output buffer, and always uses the faster approach on the
-  first call. So the only effect of the flush parameter in this implementation
+  first call.  So the only effect of the flush parameter in this implementation
   is on the return value of inflate(), as noted below, or when it returns early
-  because Z_BLOCK is used.
+  because Z_BLOCK or Z_TREES is used.
 
      If a preset dictionary is needed after this call (see inflateSetDictionary
   below), inflate sets strm->adler to the adler32 checksum of the dictionary
   chosen by the compressor and returns Z_NEED_DICT; otherwise it sets
   strm->adler to the adler32 checksum of all output produced so far (that is,
   total_out bytes) and returns Z_OK, Z_STREAM_END or an error code as described
-  below. At the end of the stream, inflate() checks that its computed adler32
+  below.  At the end of the stream, inflate() checks that its computed adler32
   checksum is equal to that saved by the compressor and returns Z_STREAM_END
   only if the checksum is correct.
 
-    inflate() will decompress and check either zlib-wrapped or gzip-wrapped
-  deflate data.  The header type is detected automatically.  Any information
-  contained in the gzip header is not retained, so applications that need that
-  information should instead use raw inflate, see inflateInit2() below, or
-  inflateBack() and perform their own processing of the gzip header and
-  trailer.
+    inflate() can decompress and check either zlib-wrapped or gzip-wrapped
+  deflate data.  The header type is detected automatically, if requested when
+  initializing with inflateInit2().  Any information contained in the gzip
+  header is not retained, so applications that need that information should
+  instead use raw inflate, see inflateInit2() below, or inflateBack() and
+  perform their own processing of the gzip header and trailer.
 
     inflate() returns Z_OK if some progress has been made (more input processed
   or more output produced), Z_STREAM_END if the end of the compressed data has
@@ -456,27 +486,28 @@ ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush));
   preset dictionary is needed at this point, Z_DATA_ERROR if the input data was
   corrupted (input stream not conforming to the zlib format or incorrect check
   value), Z_STREAM_ERROR if the stream structure was inconsistent (for example
-  if next_in or next_out was NULL), Z_MEM_ERROR if there was not enough memory,
+  next_in or next_out was Z_NULL), Z_MEM_ERROR if there was not enough memory,
   Z_BUF_ERROR if no progress is possible or if there was not enough room in the
-  output buffer when Z_FINISH is used. Note that Z_BUF_ERROR is not fatal, and
+  output buffer when Z_FINISH is used.  Note that Z_BUF_ERROR is not fatal, and
   inflate() can be called again with more input and more output space to
-  continue decompressing. If Z_DATA_ERROR is returned, the application may then
-  call inflateSync() to look for a good compression block if a partial recovery
-  of the data is desired.
+  continue decompressing.  If Z_DATA_ERROR is returned, the application may
+  then call inflateSync() to look for a good compression block if a partial
+  recovery of the data is desired.
 */
 
 
 ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm));
 /*
      All dynamically allocated data structures for this stream are freed.
-   This function discards any unprocessed input and does not flush any
-   pending output.
+   This function discards any unprocessed input and does not flush any pending
+   output.
 
      inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state
-   was inconsistent. In the error case, msg may be set but then points to a
+   was inconsistent.  In the error case, msg may be set but then points to a
    static string (which must not be deallocated).
 */
 
+
                         /* Advanced functions */
 
 /*
@@ -491,55 +522,57 @@ ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm,
                                      int  memLevel,
                                      int  strategy));
 
-     This is another version of deflateInit with more compression options. The
-   fields next_in, zalloc, zfree and opaque must be initialized before by
-   the caller.
+     This is another version of deflateInit with more compression options.  The
+   fields next_in, zalloc, zfree and opaque must be initialized before by the
+   caller.
 
-     The method parameter is the compression method. It must be Z_DEFLATED in
+     The method parameter is the compression method.  It must be Z_DEFLATED in
    this version of the library.
 
      The windowBits parameter is the base two logarithm of the window size
-   (the size of the history buffer). It should be in the range 8..15 for this
-   version of the library. Larger values of this parameter result in better
-   compression at the expense of memory usage. The default value is 15 if
+   (the size of the history buffer).  It should be in the range 8..15 for this
+   version of the library.  Larger values of this parameter result in better
+   compression at the expense of memory usage.  The default value is 15 if
    deflateInit is used instead.
 
-     windowBits can also be -8..-15 for raw deflate. In this case, -windowBits
-   determines the window size. deflate() will then generate raw deflate data
+     windowBits can also be -8..-15 for raw deflate.  In this case, -windowBits
+   determines the window size.  deflate() will then generate raw deflate data
    with no zlib header or trailer, and will not compute an adler32 check value.
 
-     windowBits can also be greater than 15 for optional gzip encoding. Add
+     windowBits can also be greater than 15 for optional gzip encoding.  Add
    16 to windowBits to write a simple gzip header and trailer around the
-   compressed data instead of a zlib wrapper. The gzip header will have no
-   file name, no extra data, no comment, no modification time (set to zero),
-   no header crc, and the operating system will be set to 255 (unknown).  If a
+   compressed data instead of a zlib wrapper.  The gzip header will have no
+   file name, no extra data, no comment, no modification time (set to zero), no
+   header crc, and the operating system will be set to 255 (unknown).  If a
    gzip stream is being written, strm->adler is a crc32 instead of an adler32.
 
      The memLevel parameter specifies how much memory should be allocated
-   for the internal compression state. memLevel=1 uses minimum memory but
-   is slow and reduces compression ratio; memLevel=9 uses maximum memory
-   for optimal speed. The default value is 8. See zconf.h for total memory
-   usage as a function of windowBits and memLevel.
+   for the internal compression state.  memLevel=1 uses minimum memory but is
+   slow and reduces compression ratio; memLevel=9 uses maximum memory for
+   optimal speed.  The default value is 8.  See zconf.h for total memory usage
+   as a function of windowBits and memLevel.
 
-     The strategy parameter is used to tune the compression algorithm. Use the
+     The strategy parameter is used to tune the compression algorithm.  Use the
    value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a
    filter (or predictor), Z_HUFFMAN_ONLY to force Huffman encoding only (no
    string match), or Z_RLE to limit match distances to one (run-length
-   encoding). Filtered data consists mostly of small values with a somewhat
-   random distribution. In this case, the compression algorithm is tuned to
-   compress them better. The effect of Z_FILTERED is to force more Huffman
+   encoding).  Filtered data consists mostly of small values with a somewhat
+   random distribution.  In this case, the compression algorithm is tuned to
+   compress them better.  The effect of Z_FILTERED is to force more Huffman
    coding and less string matching; it is somewhat intermediate between
-   Z_DEFAULT and Z_HUFFMAN_ONLY. Z_RLE is designed to be almost as fast as
-   Z_HUFFMAN_ONLY, but give better compression for PNG image data. The strategy
-   parameter only affects the compression ratio but not the correctness of the
-   compressed output even if it is not set appropriately.  Z_FIXED prevents the
-   use of dynamic Huffman codes, allowing for a simpler decoder for special
-   applications.
-
-      deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
-   memory, Z_STREAM_ERROR if a parameter is invalid (such as an invalid
-   method). msg is set to null if there is no error message.  deflateInit2 does
-   not perform any compression: this will be done by deflate().
+   Z_DEFAULT_STRATEGY and Z_HUFFMAN_ONLY.  Z_RLE is designed to be almost as
+   fast as Z_HUFFMAN_ONLY, but give better compression for PNG image data.  The
+   strategy parameter only affects the compression ratio but not the
+   correctness of the compressed output even if it is not set appropriately.
+   Z_FIXED prevents the use of dynamic Huffman codes, allowing for a simpler
+   decoder for special applications.
+
+     deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
+   memory, Z_STREAM_ERROR if any parameter is invalid (such as an invalid
+   method), or Z_VERSION_ERROR if the zlib library version (zlib_version) is
+   incompatible with the version assumed by the caller (ZLIB_VERSION).  msg is
+   set to null if there is no error message.  deflateInit2 does not perform any
+   compression: this will be done by deflate().
 */
 
 ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm,
@@ -547,37 +580,37 @@ ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm,
                                              uInt  dictLength));
 /*
      Initializes the compression dictionary from the given byte sequence
-   without producing any compressed output. This function must be called
-   immediately after deflateInit, deflateInit2 or deflateReset, before any
-   call of deflate. The compressor and decompressor must use exactly the same
+   without producing any compressed output.  This function must be called
+   immediately after deflateInit, deflateInit2 or deflateReset, before any call
+   of deflate.  The compressor and decompressor must use exactly the same
    dictionary (see inflateSetDictionary).
 
      The dictionary should consist of strings (byte sequences) that are likely
    to be encountered later in the data to be compressed, with the most commonly
-   used strings preferably put towards the end of the dictionary. Using a
+   used strings preferably put towards the end of the dictionary.  Using a
    dictionary is most useful when the data to be compressed is short and can be
    predicted with good accuracy; the data can then be compressed better than
    with the default empty dictionary.
 
      Depending on the size of the compression data structures selected by
    deflateInit or deflateInit2, a part of the dictionary may in effect be
-   discarded, for example if the dictionary is larger than the window size in
-   deflate or deflate2. Thus the strings most likely to be useful should be
-   put at the end of the dictionary, not at the front. In addition, the
-   current implementation of deflate will use at most the window size minus
-   262 bytes of the provided dictionary.
+   discarded, for example if the dictionary is larger than the window size
+   provided in deflateInit or deflateInit2.  Thus the strings most likely to be
+   useful should be put at the end of the dictionary, not at the front.  In
+   addition, the current implementation of deflate will use at most the window
+   size minus 262 bytes of the provided dictionary.
 
      Upon return of this function, strm->adler is set to the adler32 value
    of the dictionary; the decompressor may later use this value to determine
-   which dictionary has been used by the compressor. (The adler32 value
+   which dictionary has been used by the compressor.  (The adler32 value
    applies to the whole dictionary even if only a subset of the dictionary is
    actually used by the compressor.) If a raw deflate was requested, then the
    adler32 value is not computed and strm->adler is not set.
 
      deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a
-   parameter is invalid (such as NULL dictionary) or the stream state is
+   parameter is invalid (e.g.  dictionary being Z_NULL) or the stream state is
    inconsistent (for example if deflate has already been called for this stream
-   or if the compression method is bsort). deflateSetDictionary does not
+   or if the compression method is bsort).  deflateSetDictionary does not
    perform any compression: this will be done by deflate().
 */
 
@@ -588,26 +621,26 @@ ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest,
 
      This function can be useful when several compression strategies will be
    tried, for example when there are several ways of pre-processing the input
-   data with a filter. The streams that will be discarded should then be freed
+   data with a filter.  The streams that will be discarded should then be freed
    by calling deflateEnd.  Note that deflateCopy duplicates the internal
-   compression state which can be quite large, so this strategy is slow and
-   can consume lots of memory.
+   compression state which can be quite large, so this strategy is slow and can
+   consume lots of memory.
 
      deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not
    enough memory, Z_STREAM_ERROR if the source stream state was inconsistent
-   (such as zalloc being NULL). msg is left unchanged in both source and
+   (such as zalloc being Z_NULL).  msg is left unchanged in both source and
    destination.
 */
 
 ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm));
 /*
      This function is equivalent to deflateEnd followed by deflateInit,
-   but does not free and reallocate all the internal compression state.
-   The stream will keep the same compression level and any other attributes
-   that may have been set by deflateInit2.
+   but does not free and reallocate all the internal compression state.  The
+   stream will keep the same compression level and any other attributes that
+   may have been set by deflateInit2.
 
-      deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
-   stream state was inconsistent (such as zalloc or state being NULL).
+     deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
+   stream state was inconsistent (such as zalloc or state being Z_NULL).
 */
 
 ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm,
@@ -617,18 +650,18 @@ ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm,
      Dynamically update the compression level and compression strategy.  The
    interpretation of level and strategy is as in deflateInit2.  This can be
    used to switch between compression and straight copy of the input data, or
-   to switch to a different kind of input data requiring a different
-   strategy. If the compression level is changed, the input available so far
-   is compressed with the old level (and may be flushed); the new level will
-   take effect only at the next call of deflate().
+   to switch to a different kind of input data requiring a different strategy.
+   If the compression level is changed, the input available so far is
+   compressed with the old level (and may be flushed); the new level will take
+   effect only at the next call of deflate().
 
      Before the call of deflateParams, the stream state must be set as for
-   a call of deflate(), since the currently available input may have to
-   be compressed and flushed. In particular, strm->avail_out must be non-zero.
+   a call of deflate(), since the currently available input may have to be
+   compressed and flushed.  In particular, strm->avail_out must be non-zero.
 
      deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source
-   stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR
-   if strm->avail_out was zero.
+   stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR if
+   strm->avail_out was zero.
 */
 
 ZEXTERN int ZEXPORT deflateTune OF((z_streamp strm,
@@ -663,21 +696,21 @@ ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm,
                                      int value));
 /*
      deflatePrime() inserts bits in the deflate output stream.  The intent
-  is that this function is used to start off the deflate output with the
-  bits leftover from a previous deflate stream when appending to it.  As such,
-  this function can only be used for raw deflate, and must be used before the
-  first deflate() call after a deflateInit2() or deflateReset().  bits must be
-  less than or equal to 16, and that many of the least significant bits of
-  value will be inserted in the output.
-
-      deflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source
+   is that this function is used to start off the deflate output with the bits
+   leftover from a previous deflate stream when appending to it.  As such, this
+   function can only be used for raw deflate, and must be used before the first
+   deflate() call after a deflateInit2() or deflateReset().  bits must be less
+   than or equal to 16, and that many of the least significant bits of value
+   will be inserted in the output.
+
+     deflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source
    stream state was inconsistent.
 */
 
 ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm,
                                          gz_headerp head));
 /*
-      deflateSetHeader() provides gzip header information for when a gzip
+     deflateSetHeader() provides gzip header information for when a gzip
    stream is requested by deflateInit2().  deflateSetHeader() may be called
    after deflateInit2() or deflateReset() and before the first call of
    deflate().  The text, time, os, extra field, name, and comment information
@@ -690,11 +723,11 @@ ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm,
    1.3.x) do not support header crc's, and will report that it is a "multi-part
    gzip file" and give up.
 
-      If deflateSetHeader is not used, the default gzip header has text false,
+     If deflateSetHeader is not used, the default gzip header has text false,
    the time set to zero, and os set to 255, with no extra, name, or comment
    fields.  The gzip header is returned to the default state by deflateReset().
 
-      deflateSetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source
+     deflateSetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source
    stream state was inconsistent.
 */
 
@@ -702,47 +735,50 @@ ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm,
 ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm,
                                      int  windowBits));
 
-     This is another version of inflateInit with an extra parameter. The
+     This is another version of inflateInit with an extra parameter.  The
    fields next_in, avail_in, zalloc, zfree and opaque must be initialized
    before by the caller.
 
      The windowBits parameter is the base two logarithm of the maximum window
    size (the size of the history buffer).  It should be in the range 8..15 for
-   this version of the library. The default value is 15 if inflateInit is used
-   instead. windowBits must be greater than or equal to the windowBits value
+   this version of the library.  The default value is 15 if inflateInit is used
+   instead.  windowBits must be greater than or equal to the windowBits value
    provided to deflateInit2() while compressing, or it must be equal to 15 if
-   deflateInit2() was not used. If a compressed stream with a larger window
+   deflateInit2() was not used.  If a compressed stream with a larger window
    size is given as input, inflate() will return with the error code
    Z_DATA_ERROR instead of trying to allocate a larger window.
 
-     windowBits can also be -8..-15 for raw inflate. In this case, -windowBits
-   determines the window size. inflate() will then process raw deflate data,
+     windowBits can also be zero to request that inflate use the window size in
+   the zlib header of the compressed stream.
+
+     windowBits can also be -8..-15 for raw inflate.  In this case, -windowBits
+   determines the window size.  inflate() will then process raw deflate data,
    not looking for a zlib or gzip header, not generating a check value, and not
-   looking for any check values for comparison at the end of the stream. This
+   looking for any check values for comparison at the end of the stream.  This
    is for use with other formats that use the deflate compressed data format
-   such as zip.  Those formats provide their own check values. If a custom
+   such as zip.  Those formats provide their own check values.  If a custom
    format is developed using the raw deflate format for compressed data, it is
    recommended that a check value such as an adler32 or a crc32 be applied to
    the uncompressed data as is done in the zlib, gzip, and zip formats.  For
-   most applications, the zlib format should be used as is. Note that comments
+   most applications, the zlib format should be used as is.  Note that comments
    above on the use in deflateInit2() applies to the magnitude of windowBits.
 
-     windowBits can also be greater than 15 for optional gzip decoding. Add
+     windowBits can also be greater than 15 for optional gzip decoding.  Add
    32 to windowBits to enable zlib and gzip decoding with automatic header
    detection, or add 16 to decode only the gzip format (the zlib format will
-   return a Z_DATA_ERROR).  If a gzip stream is being decoded, strm->adler is
-   a crc32 instead of an adler32.
+   return a Z_DATA_ERROR).  If a gzip stream is being decoded, strm->adler is a
+   crc32 instead of an adler32.
 
      inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
    memory, Z_VERSION_ERROR if the zlib library version is incompatible with the
    version assumed by the caller, or Z_STREAM_ERROR if the parameters are
    invalid, such as a null pointer to the structure.  msg is set to null if
-   there is no error message. inflateInit2 does not perform any decompression
+   there is no error message.  inflateInit2 does not perform any decompression
    apart from possibly reading the zlib header if present: actual decompression
    will be done by inflate().  (So next_in and avail_in may be modified, but
-   next_out and avail_out are unused and unchanged.)  The current
-   implementation of inflateInit2() does not process any header information --
-   that is deferred until inflate() is called.
+   next_out and avail_out are unused and unchanged.) The current implementation
+   of inflateInit2() does not process any header information -- that is
+   deferred until inflate() is called.
 */
 
 ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm,
@@ -750,8 +786,8 @@ ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm,
                                              uInt  dictLength));
 /*
      Initializes the decompression dictionary from the given uncompressed byte
-   sequence. This function must be called immediately after a call of inflate,
-   if that call returned Z_NEED_DICT. The dictionary chosen by the compressor
+   sequence.  This function must be called immediately after a call of inflate,
+   if that call returned Z_NEED_DICT.  The dictionary chosen by the compressor
    can be determined from the adler32 value returned by that call of inflate.
    The compressor and decompressor must use exactly the same dictionary (see
    deflateSetDictionary).  For raw inflate, this function can be called
@@ -760,26 +796,26 @@ ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm,
    dictionary that was used for compression is provided.
 
      inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a
-   parameter is invalid (such as NULL dictionary) or the stream state is
+   parameter is invalid (e.g.  dictionary being Z_NULL) or the stream state is
    inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the
-   expected one (incorrect adler32 value). inflateSetDictionary does not
+   expected one (incorrect adler32 value).  inflateSetDictionary does not
    perform any decompression: this will be done by subsequent calls of
    inflate().
 */
 
 ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm));
 /*
-    Skips invalid compressed data until a full flush point (see above the
-  description of deflate with Z_FULL_FLUSH) can be found, or until all
-  available input is skipped. No output is provided.
-
-    inflateSync returns Z_OK if a full flush point has been found, Z_BUF_ERROR
-  if no more input was provided, Z_DATA_ERROR if no flush point has been found,
-  or Z_STREAM_ERROR if the stream structure was inconsistent. In the success
-  case, the application may save the current current value of total_in which
-  indicates where valid compressed data was found. In the error case, the
-  application may repeatedly call inflateSync, providing more input each time,
-  until success or end of the input data.
+     Skips invalid compressed data until a full flush point (see above the
+   description of deflate with Z_FULL_FLUSH) can be found, or until all
+   available input is skipped.  No output is provided.
+
+     inflateSync returns Z_OK if a full flush point has been found, Z_BUF_ERROR
+   if no more input was provided, Z_DATA_ERROR if no flush point has been
+   found, or Z_STREAM_ERROR if the stream structure was inconsistent.  In the
+   success case, the application may save the current current value of total_in
+   which indicates where valid compressed data was found.  In the error case,
+   the application may repeatedly call inflateSync, providing more input each
+   time, until success or end of the input data.
 */
 
 ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest,
@@ -794,18 +830,30 @@ ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest,
 
      inflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not
    enough memory, Z_STREAM_ERROR if the source stream state was inconsistent
-   (such as zalloc being NULL). msg is left unchanged in both source and
+   (such as zalloc being Z_NULL).  msg is left unchanged in both source and
    destination.
 */
 
 ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm));
 /*
      This function is equivalent to inflateEnd followed by inflateInit,
-   but does not free and reallocate all the internal decompression state.
-   The stream will keep attributes that may have been set by inflateInit2.
+   but does not free and reallocate all the internal decompression state.  The
+   stream will keep attributes that may have been set by inflateInit2.
+
+     inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
+   stream state was inconsistent (such as zalloc or state being Z_NULL).
+*/
+
+ZEXTERN int ZEXPORT inflateReset2 OF((z_streamp strm,
+                                      int windowBits));
+/*
+     This function is the same as inflateReset, but it also permits changing
+   the wrap and window size requests.  The windowBits parameter is interpreted
+   the same as it is for inflateInit2.
 
-      inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
-   stream state was inconsistent (such as zalloc or state being NULL).
+     inflateReset2 returns Z_OK if success, or Z_STREAM_ERROR if the source
+   stream state was inconsistent (such as zalloc or state being Z_NULL), or if
+   the windowBits parameter is invalid.
 */
 
 ZEXTERN int ZEXPORT inflatePrime OF((z_streamp strm,
@@ -813,54 +861,87 @@ ZEXTERN int ZEXPORT inflatePrime OF((z_streamp strm,
                                      int value));
 /*
      This function inserts bits in the inflate input stream.  The intent is
-  that this function is used to start inflating at a bit position in the
-  middle of a byte.  The provided bits will be used before any bytes are used
-  from next_in.  This function should only be used with raw inflate, and
-  should be used before the first inflate() call after inflateInit2() or
-  inflateReset().  bits must be less than or equal to 16, and that many of the
-  least significant bits of value will be inserted in the input.
-
-      inflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source
+   that this function is used to start inflating at a bit position in the
+   middle of a byte.  The provided bits will be used before any bytes are used
+   from next_in.  This function should only be used with raw inflate, and
+   should be used before the first inflate() call after inflateInit2() or
+   inflateReset().  bits must be less than or equal to 16, and that many of the
+   least significant bits of value will be inserted in the input.
+
+     If bits is negative, then the input stream bit buffer is emptied.  Then
+   inflatePrime() can be called again to put bits in the buffer.  This is used
+   to clear out bits leftover after feeding inflate a block description prior
+   to feeding inflate codes.
+
+     inflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source
    stream state was inconsistent.
 */
 
+ZEXTERN long ZEXPORT inflateMark OF((z_streamp strm));
+/*
+     This function returns two values, one in the lower 16 bits of the return
+   value, and the other in the remaining upper bits, obtained by shifting the
+   return value down 16 bits.  If the upper value is -1 and the lower value is
+   zero, then inflate() is currently decoding information outside of a block.
+   If the upper value is -1 and the lower value is non-zero, then inflate is in
+   the middle of a stored block, with the lower value equaling the number of
+   bytes from the input remaining to copy.  If the upper value is not -1, then
+   it is the number of bits back from the current bit position in the input of
+   the code (literal or length/distance pair) currently being processed.  In
+   that case the lower value is the number of bytes already emitted for that
+   code.
+
+     A code is being processed if inflate is waiting for more input to complete
+   decoding of the code, or if it has completed decoding but is waiting for
+   more output space to write the literal or match data.
+
+     inflateMark() is used to mark locations in the input data for random
+   access, which may be at bit positions, and to note those cases where the
+   output of a code may span boundaries of random access blocks.  The current
+   location in the input stream can be determined from avail_in and data_type
+   as noted in the description for the Z_BLOCK flush parameter for inflate.
+
+     inflateMark returns the value noted above or -1 << 16 if the provided
+   source stream state was inconsistent.
+*/
+
 ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm,
                                          gz_headerp head));
 /*
-      inflateGetHeader() requests that gzip header information be stored in the
+     inflateGetHeader() requests that gzip header information be stored in the
    provided gz_header structure.  inflateGetHeader() may be called after
    inflateInit2() or inflateReset(), and before the first call of inflate().
    As inflate() processes the gzip stream, head->done is zero until the header
    is completed, at which time head->done is set to one.  If a zlib stream is
    being decoded, then head->done is set to -1 to indicate that there will be
-   no gzip header information forthcoming.  Note that Z_BLOCK can be used to
-   force inflate() to return immediately after header processing is complete
-   and before any actual data is decompressed.
+   no gzip header information forthcoming.  Note that Z_BLOCK or Z_TREES can be
+   used to force inflate() to return immediately after header processing is
+   complete and before any actual data is decompressed.
 
-      The text, time, xflags, and os fields are filled in with the gzip header
+     The text, time, xflags, and os fields are filled in with the gzip header
    contents.  hcrc is set to true if there is a header CRC.  (The header CRC
-   was valid if done is set to one.)  If extra is not Z_NULL, then extra_max
+   was valid if done is set to one.) If extra is not Z_NULL, then extra_max
    contains the maximum number of bytes to write to extra.  Once done is true,
    extra_len contains the actual extra field length, and extra contains the
    extra field, or that field truncated if extra_max is less than extra_len.
    If name is not Z_NULL, then up to name_max characters are written there,
    terminated with a zero unless the length is greater than name_max.  If
    comment is not Z_NULL, then up to comm_max characters are written there,
-   terminated with a zero unless the length is greater than comm_max.  When
-   any of extra, name, or comment are not Z_NULL and the respective field is
-   not present in the header, then that field is set to Z_NULL to signal its
+   terminated with a zero unless the length is greater than comm_max.  When any
+   of extra, name, or comment are not Z_NULL and the respective field is not
+   present in the header, then that field is set to Z_NULL to signal its
    absence.  This allows the use of deflateSetHeader() with the returned
    structure to duplicate the header.  However if those fields are set to
    allocated memory, then the application will need to save those pointers
    elsewhere so that they can be eventually freed.
 
-      If inflateGetHeader is not used, then the header information is simply
+     If inflateGetHeader is not used, then the header information is simply
    discarded.  The header is always checked for validity, including the header
    CRC if present.  inflateReset() will reset the process to discard the header
    information.  The application would need to call inflateGetHeader() again to
    retrieve the header from the next gzip stream.
 
-      inflateGetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source
+     inflateGetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source
    stream state was inconsistent.
 */
 
@@ -881,9 +962,9 @@ ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits,
      See inflateBack() for the usage of these routines.
 
      inflateBackInit will return Z_OK on success, Z_STREAM_ERROR if any of
-   the paramaters are invalid, Z_MEM_ERROR if the internal state could not
-   be allocated, or Z_VERSION_ERROR if the version of the library does not
-   match the version of the header file.
+   the paramaters are invalid, Z_MEM_ERROR if the internal state could not be
+   allocated, or Z_VERSION_ERROR if the version of the library does not match
+   the version of the header file.
 */
 
 typedef unsigned (*in_func) OF((void FAR *, unsigned char FAR * FAR *));
@@ -903,15 +984,15 @@ ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm,
      inflateBackInit() must be called first to allocate the internal state
    and to initialize the state with the user-provided window buffer.
    inflateBack() may then be used multiple times to inflate a complete, raw
-   deflate stream with each call.  inflateBackEnd() is then called to free
-   the allocated state.
+   deflate stream with each call.  inflateBackEnd() is then called to free the
+   allocated state.
 
      A raw deflate stream is one with no zlib or gzip header or trailer.
    This routine would normally be used in a utility that reads zip or gzip
    files and writes out uncompressed files.  The utility would decode the
-   header and process the trailer on its own, hence this routine expects
-   only the raw deflate stream to decompress.  This is different from the
-   normal behavior of inflate(), which expects either a zlib or gzip header and
+   header and process the trailer on its own, hence this routine expects only
+   the raw deflate stream to decompress.  This is different from the normal
+   behavior of inflate(), which expects either a zlib or gzip header and
    trailer around the deflate stream.
 
      inflateBack() uses two subroutines supplied by the caller that are then
@@ -937,7 +1018,7 @@ ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm,
    calling inflateBack().  If strm->next_in is Z_NULL, then in() will be called
    immediately for input.  If strm->next_in is not Z_NULL, then strm->avail_in
    must also be initialized, and then if strm->avail_in is not zero, input will
-   initially be taken from strm->next_in[0 .. strm->avail_in - 1].
+   initially be taken from strm->next_in[0 ..  strm->avail_in - 1].
 
      The in_desc and out_desc parameters of inflateBack() is passed as the
    first parameter of in() and out() respectively when they are called.  These
@@ -947,15 +1028,15 @@ ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm,
      On return, inflateBack() will set strm->next_in and strm->avail_in to
    pass back any unused input that was provided by the last in() call.  The
    return values of inflateBack() can be Z_STREAM_END on success, Z_BUF_ERROR
-   if in() or out() returned an error, Z_DATA_ERROR if there was a format
-   error in the deflate stream (in which case strm->msg is set to indicate the
-   nature of the error), or Z_STREAM_ERROR if the stream was not properly
-   initialized.  In the case of Z_BUF_ERROR, an input or output error can be
-   distinguished using strm->next_in which will be Z_NULL only if in() returned
-   an error.  If strm->next is not Z_NULL, then the Z_BUF_ERROR was due to
-   out() returning non-zero.  (in() will always be called before out(), so
-   strm->next_in is assured to be defined if out() returns non-zero.)  Note
-   that inflateBack() cannot return Z_OK.
+   if in() or out() returned an error, Z_DATA_ERROR if there was a format error
+   in the deflate stream (in which case strm->msg is set to indicate the nature
+   of the error), or Z_STREAM_ERROR if the stream was not properly initialized.
+   In the case of Z_BUF_ERROR, an input or output error can be distinguished
+   using strm->next_in which will be Z_NULL only if in() returned an error.  If
+   strm->next_in is not Z_NULL, then the Z_BUF_ERROR was due to out() returning
+   non-zero.  (in() will always be called before out(), so strm->next_in is
+   assured to be defined if out() returns non-zero.) Note that inflateBack()
+   cannot return Z_OK.
 */
 
 ZEXTERN int ZEXPORT inflateBackEnd OF((z_streamp strm));
@@ -1011,23 +1092,22 @@ ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void));
                         /* utility functions */
 
 /*
-     The following utility functions are implemented on top of the
-   basic stream-oriented functions. To simplify the interface, some
-   default options are assumed (compression level and memory usage,
-   standard memory allocation functions). The source code of these
-   utility functions can easily be modified if you need special options.
+     The following utility functions are implemented on top of the basic
+   stream-oriented functions.  To simplify the interface, some default options
+   are assumed (compression level and memory usage, standard memory allocation
+   functions).  The source code of these utility functions can be modified if
+   you need special options.
 */
 
 ZEXTERN int ZEXPORT compress OF((Bytef *dest,   uLongf *destLen,
                                  const Bytef *source, uLong sourceLen));
 /*
      Compresses the source buffer into the destination buffer.  sourceLen is
-   the byte length of the source buffer. Upon entry, destLen is the total
-   size of the destination buffer, which must be at least the value returned
-   by compressBound(sourceLen). Upon exit, destLen is the actual size of the
+   the byte length of the source buffer.  Upon entry, destLen is the total size
+   of the destination buffer, which must be at least the value returned by
+   compressBound(sourceLen).  Upon exit, destLen is the actual size of the
    compressed buffer.
-     This function can be used to compress a whole file at once if the
-   input file is mmap'ed.
+
      compress returns Z_OK if success, Z_MEM_ERROR if there was not
    enough memory, Z_BUF_ERROR if there was not enough room in the output
    buffer.
@@ -1037,11 +1117,11 @@ ZEXTERN int ZEXPORT compress2 OF((Bytef *dest,   uLongf *destLen,
                                   const Bytef *source, uLong sourceLen,
                                   int level));
 /*
-     Compresses the source buffer into the destination buffer. The level
+     Compresses the source buffer into the destination buffer.  The level
    parameter has the same meaning as in deflateInit.  sourceLen is the byte
-   length of the source buffer. Upon entry, destLen is the total size of the
+   length of the source buffer.  Upon entry, destLen is the total size of the
    destination buffer, which must be at least the value returned by
-   compressBound(sourceLen). Upon exit, destLen is the actual size of the
+   compressBound(sourceLen).  Upon exit, destLen is the actual size of the
    compressed buffer.
 
      compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
@@ -1052,22 +1132,20 @@ ZEXTERN int ZEXPORT compress2 OF((Bytef *dest,   uLongf *destLen,
 ZEXTERN uLong ZEXPORT compressBound OF((uLong sourceLen));
 /*
      compressBound() returns an upper bound on the compressed size after
-   compress() or compress2() on sourceLen bytes.  It would be used before
-   a compress() or compress2() call to allocate the destination buffer.
+   compress() or compress2() on sourceLen bytes.  It would be used before a
+   compress() or compress2() call to allocate the destination buffer.
 */
 
 ZEXTERN int ZEXPORT uncompress OF((Bytef *dest,   uLongf *destLen,
                                    const Bytef *source, uLong sourceLen));
 /*
      Decompresses the source buffer into the destination buffer.  sourceLen is
-   the byte length of the source buffer. Upon entry, destLen is the total
-   size of the destination buffer, which must be large enough to hold the
-   entire uncompressed data. (The size of the uncompressed data must have
-   been saved previously by the compressor and transmitted to the decompressor
-   by some mechanism outside the scope of this compression library.)
-   Upon exit, destLen is the actual size of the compressed buffer.
-     This function can be used to decompress a whole file at once if the
-   input file is mmap'ed.
+   the byte length of the source buffer.  Upon entry, destLen is the total size
+   of the destination buffer, which must be large enough to hold the entire
+   uncompressed data.  (The size of the uncompressed data must have been saved
+   previously by the compressor and transmitted to the decompressor by some
+   mechanism outside the scope of this compression library.) Upon exit, destLen
+   is the actual size of the uncompressed buffer.
 
      uncompress returns Z_OK if success, Z_MEM_ERROR if there was not
    enough memory, Z_BUF_ERROR if there was not enough room in the output
@@ -1075,138 +1153,199 @@ ZEXTERN int ZEXPORT uncompress OF((Bytef *dest,   uLongf *destLen,
 */
 
 
-typedef voidp gzFile;
+                        /* gzip file access functions */
 
 /*
-ZEXTERN gzFile ZEXPORT gzopen  OF((const char *path, const char *mode));
+     This library supports reading and writing files in gzip (.gz) format with
+   an interface similar to that of stdio, using the functions that start with
+   "gz".  The gzip format is different from the zlib format.  gzip is a gzip
+   wrapper, documented in RFC 1952, wrapped around a deflate stream.
+*/
+
+typedef voidp gzFile;       /* opaque gzip file descriptor */
 
-     Opens a gzip (.gz) file for reading or writing. The mode parameter
-   is as in fopen ("rb" or "wb") but can also include a compression level
-   ("wb9") or a strategy: 'f' for filtered data as in "wb6f", 'h' for
-   Huffman only compression as in "wb1h", or 'R' for run-length encoding
-   as in "wb1R". (See the description of deflateInit2 for more information
-   about the strategy parameter.)
+/*
+ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode));
+
+     Opens a gzip (.gz) file for reading or writing.  The mode parameter is as
+   in fopen ("rb" or "wb") but can also include a compression level ("wb9") or
+   a strategy: 'f' for filtered data as in "wb6f", 'h' for Huffman-only
+   compression as in "wb1h", 'R' for run-length encoding as in "wb1R", or 'F'
+   for fixed code compression as in "wb9F".  (See the description of
+   deflateInit2 for more information about the strategy parameter.) Also "a"
+   can be used instead of "w" to request that the gzip stream that will be
+   written be appended to the file.  "+" will result in an error, since reading
+   and writing to the same gzip file is not supported.
 
      gzopen can be used to read a file which is not in gzip format; in this
    case gzread will directly read from the file without decompression.
 
-     gzopen returns NULL if the file could not be opened or if there was
-   insufficient memory to allocate the (de)compression state; errno
-   can be checked to distinguish the two cases (if errno is zero, the
-   zlib error is Z_MEM_ERROR).  */
+     gzopen returns NULL if the file could not be opened, if there was
+   insufficient memory to allocate the gzFile state, or if an invalid mode was
+   specified (an 'r', 'w', or 'a' was not provided, or '+' was provided).
+   errno can be checked to determine if the reason gzopen failed was that the
+   file could not be opened.
+*/
+
+ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode));
+/*
+     gzdopen associates a gzFile with the file descriptor fd.  File descriptors
+   are obtained from calls like open, dup, creat, pipe or fileno (if the file
+   has been previously opened with fopen).  The mode parameter is as in gzopen.
+
+     The next call of gzclose on the returned gzFile will also close the file
+   descriptor fd, just like fclose(fdopen(fd, mode)) closes the file descriptor
+   fd.  If you want to keep fd open, use fd = dup(fd_keep); gz = gzdopen(fd,
+   mode);.  The duplicated descriptor should be saved to avoid a leak, since
+   gzdopen does not close fd if it fails.
+
+     gzdopen returns NULL if there was insufficient memory to allocate the
+   gzFile state, if an invalid mode was specified (an 'r', 'w', or 'a' was not
+   provided, or '+' was provided), or if fd is -1.  The file descriptor is not
+   used until the next gz* read, write, seek, or close operation, so gzdopen
+   will not detect if fd is invalid (unless fd is -1).
+*/
 
-ZEXTERN gzFile ZEXPORT gzdopen  OF((int fd, const char *mode));
+ZEXTERN int ZEXPORT gzbuffer OF((gzFile file, unsigned size));
 /*
-     gzdopen() associates a gzFile with the file descriptor fd.  File
-   descriptors are obtained from calls like open, dup, creat, pipe or
-   fileno (in the file has been previously opened with fopen).
-   The mode parameter is as in gzopen.
-     The next call of gzclose on the returned gzFile will also close the
-   file descriptor fd, just like fclose(fdopen(fd), mode) closes the file
-   descriptor fd. If you want to keep fd open, use gzdopen(dup(fd), mode).
-     gzdopen returns NULL if there was insufficient memory to allocate
-   the (de)compression state.
+     Set the internal buffer size used by this library's functions.  The
+   default buffer size is 8192 bytes.  This function must be called after
+   gzopen() or gzdopen(), and before any other calls that read or write the
+   file.  The buffer memory allocation is always deferred to the first read or
+   write.  Two buffers are allocated, either both of the specified size when
+   writing, or one of the specified size and the other twice that size when
+   reading.  A larger buffer size of, for example, 64K or 128K bytes will
+   noticeably increase the speed of decompression (reading).
+
+     The new buffer size also affects the maximum length for gzprintf().
+
+     gzbuffer() returns 0 on success, or -1 on failure, such as being called
+   too late.
 */
 
 ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy));
 /*
-     Dynamically update the compression level or strategy. See the description
+     Dynamically update the compression level or strategy.  See the description
    of deflateInit2 for the meaning of these parameters.
+
      gzsetparams returns Z_OK if success, or Z_STREAM_ERROR if the file was not
    opened for writing.
 */
 
-ZEXTERN int ZEXPORT    gzread  OF((gzFile file, voidp buf, unsigned len));
+ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len));
 /*
-     Reads the given number of uncompressed bytes from the compressed file.
-   If the input file was not in gzip format, gzread copies the given number
-   of bytes into the buffer.
-     gzread returns the number of uncompressed bytes actually read (0 for
-   end of file, -1 for error). */
+     Reads the given number of uncompressed bytes from the compressed file.  If
+   the input file was not in gzip format, gzread copies the given number of
+   bytes into the buffer.
+
+     After reaching the end of a gzip stream in the input, gzread will continue
+   to read, looking for another gzip stream, or failing that, reading the rest
+   of the input file directly without decompression.  The entire input file
+   will be read if gzread is called until it returns less than the requested
+   len.
+
+     gzread returns the number of uncompressed bytes actually read, less than
+   len for end of file, or -1 for error.
+*/
 
-ZEXTERN int ZEXPORT    gzwrite OF((gzFile file,
-                                   voidpc buf, unsigned len));
+ZEXTERN int ZEXPORT gzwrite OF((gzFile file,
+                                voidpc buf, unsigned len));
 /*
      Writes the given number of uncompressed bytes into the compressed file.
-   gzwrite returns the number of uncompressed bytes actually written
-   (0 in case of error).
+   gzwrite returns the number of uncompressed bytes written or 0 in case of
+   error.
 */
 
-ZEXTERN int ZEXPORTVA   gzprintf OF((gzFile file, const char *format, ...));
+ZEXTERN int ZEXPORTVA gzprintf OF((gzFile file, const char *format, ...));
 /*
-     Converts, formats, and writes the args to the compressed file under
-   control of the format string, as in fprintf. gzprintf returns the number of
-   uncompressed bytes actually written (0 in case of error).  The number of
-   uncompressed bytes written is limited to 4095. The caller should assure that
-   this limit is not exceeded. If it is exceeded, then gzprintf() will return
-   return an error (0) with nothing written. In this case, there may also be a
-   buffer overflow with unpredictable consequences, which is possible only if
-   zlib was compiled with the insecure functions sprintf() or vsprintf()
-   because the secure snprintf() or vsnprintf() functions were not available.
+     Converts, formats, and writes the arguments to the compressed file under
+   control of the format string, as in fprintf.  gzprintf returns the number of
+   uncompressed bytes actually written, or 0 in case of error.  The number of
+   uncompressed bytes written is limited to 8191, or one less than the buffer
+   size given to gzbuffer().  The caller should assure that this limit is not
+   exceeded.  If it is exceeded, then gzprintf() will return an error (0) with
+   nothing written.  In this case, there may also be a buffer overflow with
+   unpredictable consequences, which is possible only if zlib was compiled with
+   the insecure functions sprintf() or vsprintf() because the secure snprintf()
+   or vsnprintf() functions were not available.  This can be determined using
+   zlibCompileFlags().
 */
 
 ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s));
 /*
-      Writes the given null-terminated string to the compressed file, excluding
+     Writes the given null-terminated string to the compressed file, excluding
    the terminating null character.
-      gzputs returns the number of characters written, or -1 in case of error.
+
+     gzputs returns the number of characters written, or -1 in case of error.
 */
 
 ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len));
 /*
-      Reads bytes from the compressed file until len-1 characters are read, or
-   a newline character is read and transferred to buf, or an end-of-file
-   condition is encountered.  The string is then terminated with a null
-   character.
-      gzgets returns buf, or Z_NULL in case of error.
+     Reads bytes from the compressed file until len-1 characters are read, or a
+   newline character is read and transferred to buf, or an end-of-file
+   condition is encountered.  If any characters are read or if len == 1, the
+   string is terminated with a null character.  If no characters are read due
+   to an end-of-file or len < 1, then the buffer is left untouched.
+
+     gzgets returns buf which is a null-terminated string, or it returns NULL
+   for end-of-file or in case of error.  If there was an error, the contents at
+   buf are indeterminate.
 */
 
-ZEXTERN int ZEXPORT    gzputc OF((gzFile file, int c));
+ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c));
 /*
-      Writes c, converted to an unsigned char, into the compressed file.
-   gzputc returns the value that was written, or -1 in case of error.
+     Writes c, converted to an unsigned char, into the compressed file.  gzputc
+   returns the value that was written, or -1 in case of error.
 */
 
-ZEXTERN int ZEXPORT    gzgetc OF((gzFile file));
+ZEXTERN int ZEXPORT gzgetc OF((gzFile file));
 /*
-      Reads one byte from the compressed file. gzgetc returns this byte
-   or -1 in case of end of file or error.
+     Reads one byte from the compressed file.  gzgetc returns this byte or -1
+   in case of end of file or error.
 */
 
-ZEXTERN int ZEXPORT    gzungetc OF((int c, gzFile file));
+ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file));
 /*
-      Push one character back onto the stream to be read again later.
-   Only one character of push-back is allowed.  gzungetc() returns the
-   character pushed, or -1 on failure.  gzungetc() will fail if a
-   character has been pushed but not read yet, or if c is -1. The pushed
-   character will be discarded if the stream is repositioned with gzseek()
-   or gzrewind().
+     Push one character back onto the stream to be read as the first character
+   on the next read.  At least one character of push-back is allowed.
+   gzungetc() returns the character pushed, or -1 on failure.  gzungetc() will
+   fail if c is -1, and may fail if a character has been pushed but not read
+   yet.  If gzungetc is used immediately after gzopen or gzdopen, at least the
+   output buffer size of pushed characters is allowed.  (See gzbuffer above.)
+   The pushed character will be discarded if the stream is repositioned with
+   gzseek() or gzrewind().
 */
 
-ZEXTERN int ZEXPORT    gzflush OF((gzFile file, int flush));
+ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush));
 /*
-     Flushes all pending output into the compressed file. The parameter
-   flush is as in the deflate() function. The return value is the zlib
-   error number (see function gzerror below). gzflush returns Z_OK if
-   the flush parameter is Z_FINISH and all output could be flushed.
-     gzflush should be called only when strictly necessary because it can
-   degrade compression.
+     Flushes all pending output into the compressed file.  The parameter flush
+   is as in the deflate() function.  The return value is the zlib error number
+   (see function gzerror below).  gzflush is only permitted when writing.
+
+     If the flush parameter is Z_FINISH, the remaining data is written and the
+   gzip stream is completed in the output.  If gzwrite() is called again, a new
+   gzip stream will be started in the output.  gzread() is able to read such
+   concatented gzip streams.
+
+     gzflush should be called only when strictly necessary because it will
+   degrade compression if called too often.
 */
 
 /*
-ZEXTERN z_off_t ZEXPORT    gzseek OF((gzFile file,
-                                      z_off_t offset, int whence));
+ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file,
+                                   z_off_t offset, int whence));
 
-      Sets the starting position for the next gzread or gzwrite on the
-   given compressed file. The offset represents a number of bytes in the
-   uncompressed data stream. The whence parameter is defined as in lseek(2);
+     Sets the starting position for the next gzread or gzwrite on the given
+   compressed file.  The offset represents a number of bytes in the
+   uncompressed data stream.  The whence parameter is defined as in lseek(2);
    the value SEEK_END is not supported.
+
      If the file is opened for reading, this function is emulated but can be
-   extremely slow. If the file is opened for writing, only forward seeks are
+   extremely slow.  If the file is opened for writing, only forward seeks are
    supported; gzseek then compresses a sequence of zeroes up to the new
    starting position.
 
-      gzseek returns the resulting offset location as measured in bytes from
+     gzseek returns the resulting offset location as measured in bytes from
    the beginning of the uncompressed stream, or -1 in case of error, in
    particular if the file is opened for writing and the new starting position
    would be before the current position.
@@ -1216,73 +1355,127 @@ ZEXTERN int ZEXPORT    gzrewind OF((gzFile file));
 /*
      Rewinds the given file. This function is supported only for reading.
 
-   gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET)
+     gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET)
 */
 
 /*
 ZEXTERN z_off_t ZEXPORT    gztell OF((gzFile file));
 
-     Returns the starting position for the next gzread or gzwrite on the
-   given compressed file. This position represents a number of bytes in the
-   uncompressed data stream.
+     Returns the starting position for the next gzread or gzwrite on the given
+   compressed file.  This position represents a number of bytes in the
+   uncompressed data stream, and is zero when starting, even if appending or
+   reading a gzip stream from the middle of a file using gzdopen().
+
+     gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR)
+*/
+
+/*
+ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile file));
 
-   gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR)
+     Returns the current offset in the file being read or written.  This offset
+   includes the count of bytes that precede the gzip stream, for example when
+   appending or when using gzdopen() for reading.  When reading, the offset
+   does not include as yet unused buffered input.  This information can be used
+   for a progress indicator.  On error, gzoffset() returns -1.
 */
 
 ZEXTERN int ZEXPORT gzeof OF((gzFile file));
 /*
-     Returns 1 when EOF has previously been detected reading the given
-   input stream, otherwise zero.
+     Returns true (1) if the end-of-file indicator has been set while reading,
+   false (0) otherwise.  Note that the end-of-file indicator is set only if the
+   read tried to go past the end of the input, but came up short.  Therefore,
+   just like feof(), gzeof() may return false even if there is no more data to
+   read, in the event that the last read request was for the exact number of
+   bytes remaining in the input file.  This will happen if the input file size
+   is an exact multiple of the buffer size.
+
+     If gzeof() returns true, then the read functions will return no more data,
+   unless the end-of-file indicator is reset by gzclearerr() and the input file
+   has grown since the previous end of file was detected.
 */
 
 ZEXTERN int ZEXPORT gzdirect OF((gzFile file));
 /*
-     Returns 1 if file is being read directly without decompression, otherwise
-   zero.
+     Returns true (1) if file is being copied directly while reading, or false
+   (0) if file is a gzip stream being decompressed.  This state can change from
+   false to true while reading the input file if the end of a gzip stream is
+   reached, but is followed by data that is not another gzip stream.
+
+     If the input file is empty, gzdirect() will return true, since the input
+   does not contain a gzip stream.
+
+     If gzdirect() is used immediately after gzopen() or gzdopen() it will
+   cause buffers to be allocated to allow reading the file to determine if it
+   is a gzip file.  Therefore if gzbuffer() is used, it should be called before
+   gzdirect().
 */
 
 ZEXTERN int ZEXPORT    gzclose OF((gzFile file));
 /*
-     Flushes all pending output if necessary, closes the compressed file
-   and deallocates all the (de)compression state. The return value is the zlib
-   error number.  Note that once file is close, you cannot call gzerror with
-   file, since its structures have been deallocated.
+     Flushes all pending output if necessary, closes the compressed file and
+   deallocates the (de)compression state.  Note that once file is closed, you
+   cannot call gzerror with file, since its structures have been deallocated.
+   gzclose must not be called more than once on the same file, just as free
+   must not be called more than once on the same allocation.
+
+     gzclose will return Z_STREAM_ERROR if file is not valid, Z_ERRNO on a
+   file operation error, or Z_OK on success.
 */
 
-ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum));
+ZEXTERN int ZEXPORT gzclose_r OF((gzFile file));
+ZEXTERN int ZEXPORT gzclose_w OF((gzFile file));
 /*
-     Returns the error message for the last error which occurred on the
-   given compressed file. errnum is set to zlib error number. If an
-   error occurred in the file system and not in the compression library,
-   errnum is set to Z_ERRNO and the application may consult errno
-   to get the exact error code.
+     Same as gzclose(), but gzclose_r() is only for use when reading, and
+   gzclose_w() is only for use when writing or appending.  The advantage to
+   using these instead of gzclose() is that they avoid linking in zlib
+   compression or decompression code that is not used when only reading or only
+   writing respectively.  If gzclose() is used, then both compression and
+   decompression code will be included the application when linking to a static
+   zlib library.
+*/
 
-   The application must not modify the returned string and future calls to
-   this function may invalidate the returned string.
+ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum));
+/*
+     Returns the error message for the last error which occurred on the given
+   compressed file.  errnum is set to zlib error number.  If an error occurred
+   in the file system and not in the compression library, errnum is set to
+   Z_ERRNO and the application may consult errno to get the exact error code.
+
+     The application must not modify the returned string.  Future calls to
+   this function may invalidate the previously returned string.  If file is
+   closed, then the string previously returned by gzerror will no longer be
+   available.
+
+     gzerror() should be used to distinguish errors from end-of-file for those
+   functions above that do not distinguish those cases in their return values.
 */
 
 ZEXTERN void ZEXPORT gzclearerr OF((gzFile file));
 /*
-     Clears the error and end-of-file flags for file. This is analogous to the
-   clearerr() function in stdio. This is useful for continuing to read a gzip
+     Clears the error and end-of-file flags for file.  This is analogous to the
+   clearerr() function in stdio.  This is useful for continuing to read a gzip
    file that is being written concurrently.
 */
 
+
                         /* checksum functions */
 
 /*
      These functions are not related to compression but are exported
-   anyway because they might be useful in applications using the
-   compression library.
+   anyway because they might be useful in applications using the compression
+   library.
 */
 
 ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len));
 /*
      Update a running Adler-32 checksum with the bytes buf[0..len-1] and
-   return the updated checksum. If buf is NULL, this function returns
-   the required initial value for the checksum.
-   An Adler-32 checksum is almost as reliable as a CRC32 but can be computed
-   much faster. Usage example:
+   return the updated checksum.  If buf is Z_NULL, this function returns the
+   required initial value for the checksum.
+
+     An Adler-32 checksum is almost as reliable as a CRC32 but can be computed
+   much faster.
+
+   Usage example:
 
      uLong adler = adler32(0L, Z_NULL, 0);
 
@@ -1305,9 +1498,11 @@ ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2,
 ZEXTERN uLong ZEXPORT crc32   OF((uLong crc, const Bytef *buf, uInt len));
 /*
      Update a running CRC-32 with the bytes buf[0..len-1] and return the
-   updated CRC-32. If buf is NULL, this function returns the required initial
-   value for the for the crc. Pre- and post-conditioning (one's complement) is
-   performed within this function so it shouldn't be done by the application.
+   updated CRC-32.  If buf is Z_NULL, this function returns the required
+   initial value for the for the crc.  Pre- and post-conditioning (one's
+   complement) is performed within this function so it shouldn't be done by the
+   application.
+
    Usage example:
 
      uLong crc = crc32(0L, Z_NULL, 0);
@@ -1361,34 +1556,51 @@ ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits,
         inflateBackInit_((strm), (windowBits), (window), \
                                             ZLIB_VERSION, sizeof(z_stream))
 
-#ifdef _LARGEFILE64_SOURCE
+/* provide 64-bit offset functions if _LARGEFILE64_SOURCE defined, and/or
+ * change the regular functions to 64 bits if _FILE_OFFSET_BITS is 64 (if
+ * both are true, the application gets the *64 functions, and the regular
+ * functions are changed to 64 bits) -- in case these are set on systems
+ * without large file support, _LFS64_LARGEFILE must also be true
+ */
+#if defined(_LARGEFILE64_SOURCE) && _LFS64_LARGEFILE-0
    ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *));
-   ZEXTERN off64_t ZEXPORT gzseek64 OF((gzFile, off64_t, int));
-   ZEXTERN off64_t ZEXPORT gztell64 OF((gzFile));
-   ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, off64_t));
-   ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, off64_t));
+   ZEXTERN z_off64_t ZEXPORT gzseek64 OF((gzFile, z_off64_t, int));
+   ZEXTERN z_off64_t ZEXPORT gztell64 OF((gzFile));
+   ZEXTERN z_off64_t ZEXPORT gzoffset64 OF((gzFile));
+   ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off64_t));
+   ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off64_t));
 #endif
 
-/* Mono: disable this. We don't use it and makes compilation fail
-#if _FILE_OFFSET_BITS == 64
+#if !defined(ZLIB_INTERNAL) && _FILE_OFFSET_BITS-0 == 64 && _LFS64_LARGEFILE-0
 #  define gzopen gzopen64
 #  define gzseek gzseek64
 #  define gztell gztell64
+#  define gzoffset gzoffset64
 #  define adler32_combine adler32_combine64
 #  define crc32_combine crc32_combine64
+#  ifdef _LARGEFILE64_SOURCE
+     ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *));
+     ZEXTERN z_off_t ZEXPORT gzseek64 OF((gzFile, z_off_t, int));
+     ZEXTERN z_off_t ZEXPORT gztell64 OF((gzFile));
+     ZEXTERN z_off_t ZEXPORT gzoffset64 OF((gzFile));
+     ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t));
+     ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t));
+#  endif
 #else
-*/
    ZEXTERN gzFile ZEXPORT gzopen OF((const char *, const char *));
    ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile, z_off_t, int));
    ZEXTERN z_off_t ZEXPORT gztell OF((gzFile));
+   ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile));
    ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t));
    ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t));
-/*#endif*/
+#endif
 
+/* hack for buggy compilers */
 #if !defined(ZUTIL_H) && !defined(NO_DUMMY_DECL)
-    struct internal_state {int dummy;}; /* hack for buggy compilers */
+    struct internal_state {int dummy;};
 #endif
 
+/* undocumented functions */
 ZEXTERN const char   * ZEXPORT zError           OF((int));
 ZEXTERN int            ZEXPORT inflateSyncPoint OF((z_streamp));
 ZEXTERN const uLongf * ZEXPORT get_crc_table    OF((void));
diff --git a/support/zutil.c b/support/zutil.c
index d55f594..898ed34 100644
--- a/support/zutil.c
+++ b/support/zutil.c
@@ -1,5 +1,5 @@
 /* zutil.c -- target dependent utility functions for the compression library
- * Copyright (C) 1995-2005 Jean-loup Gailly.
+ * Copyright (C) 1995-2005, 2010 Jean-loup Gailly.
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
@@ -34,25 +34,25 @@ uLong ZEXPORT zlibCompileFlags()
     uLong flags;
 
     flags = 0;
-    switch (sizeof(uInt)) {
+    switch ((int)(sizeof(uInt))) {
     case 2:     break;
     case 4:     flags += 1;     break;
     case 8:     flags += 2;     break;
     default:    flags += 3;
     }
-    switch (sizeof(uLong)) {
+    switch ((int)(sizeof(uLong))) {
     case 2:     break;
     case 4:     flags += 1 << 2;        break;
     case 8:     flags += 2 << 2;        break;
     default:    flags += 3 << 2;
     }
-    switch (sizeof(voidpf)) {
+    switch ((int)(sizeof(voidpf))) {
     case 2:     break;
     case 4:     flags += 1 << 4;        break;
     case 8:     flags += 2 << 4;        break;
     default:    flags += 3 << 4;
     }
-    switch (sizeof(z_off_t)) {
+    switch ((int)(sizeof(z_off_t))) {
     case 2:     break;
     case 4:     flags += 1 << 6;        break;
     case 8:     flags += 2 << 6;        break;
@@ -117,9 +117,9 @@ uLong ZEXPORT zlibCompileFlags()
 #  ifndef verbose
 #    define verbose 0
 #  endif
-int z_verbose = verbose;
+int ZLIB_INTERNAL z_verbose = verbose;
 
-void z_error (m)
+void ZLIB_INTERNAL z_error (m)
     char *m;
 {
     fprintf(stderr, "%s\n", m);
@@ -146,7 +146,7 @@ const char * ZEXPORT zError(err)
 
 #ifndef HAVE_MEMCPY
 
-void zmemcpy(dest, source, len)
+void ZLIB_INTERNAL zmemcpy(dest, source, len)
     Bytef* dest;
     const Bytef* source;
     uInt  len;
@@ -157,7 +157,7 @@ void zmemcpy(dest, source, len)
     } while (--len != 0);
 }
 
-int zmemcmp(s1, s2, len)
+int ZLIB_INTERNAL zmemcmp(s1, s2, len)
     const Bytef* s1;
     const Bytef* s2;
     uInt  len;
@@ -170,7 +170,7 @@ int zmemcmp(s1, s2, len)
     return 0;
 }
 
-void zmemzero(dest, len)
+void ZLIB_INTERNAL zmemzero(dest, len)
     Bytef* dest;
     uInt  len;
 {
@@ -213,7 +213,7 @@ local ptr_table table[MAX_PTR];
  * a protected system like OS/2. Use Microsoft C instead.
  */
 
-voidpf zcalloc (voidpf opaque, unsigned items, unsigned size)
+voidpf ZLIB_INTERNAL zcalloc (voidpf opaque, unsigned items, unsigned size)
 {
     voidpf buf = opaque; /* just to make some compilers happy */
     ulg bsize = (ulg)items*size;
@@ -237,7 +237,7 @@ voidpf zcalloc (voidpf opaque, unsigned items, unsigned size)
     return buf;
 }
 
-void  zcfree (voidpf opaque, voidpf ptr)
+void ZLIB_INTERNAL zcfree (voidpf opaque, voidpf ptr)
 {
     int n;
     if (*(ush*)&ptr != 0) { /* object < 64K */
@@ -272,13 +272,13 @@ void  zcfree (voidpf opaque, voidpf ptr)
 #  define _hfree   hfree
 #endif
 
-voidpf zcalloc (voidpf opaque, unsigned items, unsigned size)
+voidpf ZLIB_INTERNAL zcalloc (voidpf opaque, uInt items, uInt size)
 {
     if (opaque) opaque = 0; /* to make compiler happy */
     return _halloc((long)items, size);
 }
 
-void  zcfree (voidpf opaque, voidpf ptr)
+void ZLIB_INTERNAL zcfree (voidpf opaque, voidpf ptr)
 {
     if (opaque) opaque = 0; /* to make compiler happy */
     _hfree(ptr);
@@ -297,7 +297,7 @@ extern voidp  calloc OF((uInt items, uInt size));
 extern void   free   OF((voidpf ptr));
 #endif
 
-voidpf zcalloc (opaque, items, size)
+voidpf ZLIB_INTERNAL zcalloc (opaque, items, size)
     voidpf opaque;
     unsigned items;
     unsigned size;
@@ -307,7 +307,7 @@ voidpf zcalloc (opaque, items, size)
                               (voidpf)calloc(items, size);
 }
 
-void  zcfree (opaque, ptr)
+void ZLIB_INTERNAL zcfree (opaque, ptr)
     voidpf opaque;
     voidpf ptr;
 {
diff --git a/support/zutil.h b/support/zutil.h
index 32e9c89..258fa88 100644
--- a/support/zutil.h
+++ b/support/zutil.h
@@ -1,5 +1,5 @@
 /* zutil.h -- internal interface and configuration of the compression library
- * Copyright (C) 1995-2006 Jean-loup Gailly.
+ * Copyright (C) 1995-2010 Jean-loup Gailly.
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
@@ -13,29 +13,21 @@
 #ifndef ZUTIL_H
 #define ZUTIL_H
 
-#define ZLIB_INTERNAL
+#if ((__GNUC__-0) * 10 + __GNUC_MINOR__-0 >= 33) && !defined(NO_VIZ)
+#  define ZLIB_INTERNAL __attribute__((visibility ("hidden")))
+#else
+#  define ZLIB_INTERNAL
+#endif
+
 #include "zlib.h"
 
 #ifdef STDC
-#  ifndef _WIN32_WCE
+#  if !(defined(_WIN32_WCE) && defined(_MSC_VER))
 #    include <stddef.h>
 #  endif
 #  include <string.h>
 #  include <stdlib.h>
 #endif
-#if defined(NO_ERRNO_H) || defined(_WIN32_WCE)
-#   ifdef _WIN32_WCE
-      /* The Microsoft C Run-Time Library for Windows CE doesn't have
-       * errno.  We define it as a global variable to simplify porting.
-       * Its value is always 0 and should not be used.  We rename it to
-       * avoid conflict with other libraries that use the same workaround.
-       */
-#     define errno z_errno
-#   endif
-    extern int errno;
-#else
-#   include <errno.h>
-#endif
 
 #ifndef local
 #  define local static
@@ -87,7 +79,7 @@ extern const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
 #if defined(MSDOS) || (defined(WINDOWS) && !defined(WIN32))
 #  define OS_CODE  0x00
 #  if defined(__TURBOC__) || defined(__BORLANDC__)
-#    if(__STDC__ == 1) && (defined(__LARGE__) || defined(__COMPACT__))
+#    if (__STDC__ == 1) && (defined(__LARGE__) || defined(__COMPACT__))
        /* Allow compilation with ANSI keywords only enabled */
        void _Cdecl farfree( void *block );
        void *_Cdecl farmalloc( unsigned long nbytes );
@@ -116,7 +108,7 @@ extern const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
 #ifdef OS2
 #  define OS_CODE  0x06
 #  ifdef M_I86
-     #include <malloc.h>
+#    include <malloc.h>
 #  endif
 #endif
 
@@ -162,9 +154,15 @@ extern const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
 #endif
 
 #if defined(__BORLANDC__)
-#pragma warn -8004
-#pragma warn -8008
-#pragma warn -8066
+  #pragma warn -8004
+  #pragma warn -8008
+  #pragma warn -8066
+#endif
+
+/* provide prototypes for these when building zlib without LFS */
+#if !defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0
+    ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t));
+    ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t));
 #endif
 
         /* common defaults */
@@ -177,12 +175,6 @@ extern const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
 #  define F_OPEN(name, mode) fopen((name), (mode))
 #endif
 
-#ifdef _LARGEFILE64_SOURCE
-#  define F_OPEN64(name, mode) fopen64((name), (mode))
-#else
-#  define F_OPEN64(name, mode) fopen((name), (mode))
-#endif
-
          /* functions */
 
 #if defined(STDC99) || (defined(__TURBOC__) && __TURBOC__ >= 0x550)
@@ -207,7 +199,9 @@ extern const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
 #  ifdef WIN32
      /* In Win32, vsnprintf is available as the "non-ANSI" _vsnprintf. */
 #    if !defined(vsnprintf) && !defined(NO_vsnprintf)
-#      define vsnprintf _vsnprintf
+#      if !defined(_MSC_VER) || ( defined(_MSC_VER) && _MSC_VER < 1500 )
+#         define vsnprintf _vsnprintf
+#      endif
 #    endif
 #  endif
 #  ifdef __SASC
@@ -242,16 +236,16 @@ extern const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
 #    define zmemzero(dest, len) memset(dest, 0, len)
 #  endif
 #else
-   extern void zmemcpy  OF((Bytef* dest, const Bytef* source, uInt len));
-   extern int  zmemcmp  OF((const Bytef* s1, const Bytef* s2, uInt len));
-   extern void zmemzero OF((Bytef* dest, uInt len));
+   void ZLIB_INTERNAL zmemcpy OF((Bytef* dest, const Bytef* source, uInt len));
+   int ZLIB_INTERNAL zmemcmp OF((const Bytef* s1, const Bytef* s2, uInt len));
+   void ZLIB_INTERNAL zmemzero OF((Bytef* dest, uInt len));
 #endif
 
 /* Diagnostic functions */
 #ifdef DEBUG
 #  include <stdio.h>
-   extern int z_verbose;
-   extern void z_error    OF((char *m));
+   extern int ZLIB_INTERNAL z_verbose;
+   extern void ZLIB_INTERNAL z_error OF((char *m));
 #  define Assert(cond,msg) {if(!(cond)) z_error(msg);}
 #  define Trace(x) {if (z_verbose>=0) fprintf x ;}
 #  define Tracev(x) {if (z_verbose>0) fprintf x ;}
@@ -268,8 +262,9 @@ extern const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
 #endif
 
 
-voidpf zcalloc OF((voidpf opaque, unsigned items, unsigned size));
-void   zcfree  OF((voidpf opaque, voidpf ptr));
+voidpf ZLIB_INTERNAL zcalloc OF((voidpf opaque, unsigned items,
+                        unsigned size));
+void ZLIB_INTERNAL zcfree  OF((voidpf opaque, voidpf ptr));
 
 #define ZALLOC(strm, items, size) \
            (*((strm)->zalloc))((strm)->opaque, (items), (size))
diff --git a/tools/Makefile.in b/tools/Makefile.in
index 2f87652..4da999f 100644
--- a/tools/Makefile.in
+++ b/tools/Makefile.in
@@ -145,6 +145,7 @@ MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
 MONO_DL_NEED_USCORE = @MONO_DL_NEED_USCORE@
 MONO_NACL_ALIGN_MASK_OFF = @MONO_NACL_ALIGN_MASK_OFF@
+MOONLIGHT_DEFINES = @MOONLIGHT_DEFINES@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
diff --git a/tools/locale-builder/Makefile.in b/tools/locale-builder/Makefile.in
index 4f7457d..baa5efb 100644
--- a/tools/locale-builder/Makefile.in
+++ b/tools/locale-builder/Makefile.in
@@ -134,6 +134,7 @@ MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
 MONO_DL_NEED_USCORE = @MONO_DL_NEED_USCORE@
 MONO_NACL_ALIGN_MASK_OFF = @MONO_NACL_ALIGN_MASK_OFF@
+MOONLIGHT_DEFINES = @MOONLIGHT_DEFINES@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
diff --git a/tools/sgen/Makefile.in b/tools/sgen/Makefile.in
index 0258693..1bc091a 100644
--- a/tools/sgen/Makefile.in
+++ b/tools/sgen/Makefile.in
@@ -153,6 +153,7 @@ MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
 MONO_DL_NEED_USCORE = @MONO_DL_NEED_USCORE@
 MONO_NACL_ALIGN_MASK_OFF = @MONO_NACL_ALIGN_MASK_OFF@
+MOONLIGHT_DEFINES = @MOONLIGHT_DEFINES@
 MSGFMT = @MSGFMT@
 MSGFMT_015 = @MSGFMT_015@
 MSGMERGE = @MSGMERGE@
diff --git a/web/ChangeLog b/web/ChangeLog
deleted file mode 100644
index f5d7687..0000000
--- a/web/ChangeLog
+++ /dev/null
@@ -1,128 +0,0 @@
-2006-05-26  Zoltan Varga  <vargaz at gmail.com>
-
-	* jit-debug: Fix two other places.
-	
-	* jit-debug: print_method_from_ip -> mono_print_method_from_ip (). Fixes
-	#78514.
-
-2004-12-16  Atsushi Enomoto <atsushi at ximian.com>
-
-	* xml-classes :updates.
-
-2004-12-02  Atsushi Enomoto <atsushi at ximian.com>
-
-	* books : Added Mono: A Developer's Notebook ;-)
-
-2004-11-29  Atsushi Enomoto <atsushi at ximian.com>
-
-	* xml-classes : updates mainly 2.0 stuff (XQuery dropping, etc.)
-
-2004-10-11  Neale Ferguson <Neale.Ferguson at SoftwareAG-usa.com>
-
-	* web/team.xml: Update my info.
-
-2004-10-04  Zoltan Varga  <vargaz at freemail.hu>
-
-	* web/team.xml: Update my info.
-
-2004-09-02  Atsushi Enomoto <atsushi at ximian.com>
-
-	* xml-classes : updates on 2.0 stuff. deprecating XPathDocument,
-	  updating XQuery status etc.
-
-2004-08-03  Atsushi Enomoto <atsushi at ximian.com>
-
-	* xml-classes : some updates on 2.0 stuff.
-
-2004-07-12  Atsushi Enomoto <atsushi at ximian.com>
-
-	* xml-classes : oops, list styles.
-
-2004-07-11  Atsushi Enomoto <atsushi at ximian.com>
-
-	* xml-classes : updates and plans/ideas for Mono 1.2.
-
-2004-06-15  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* crypto: Updated status for beta 3. Removed stuff that is better 
-	documented in monodoc.
-
-2004-06-08  Duncan Mak  <duncan at ximian.com>
-
-	* download: Add MacOS X installer.
-
-2004-06-05  Duncan Mak  <duncan at ximian.com>
-
-	* download: Add section for Fedora Core 2.
-
-2004-06-02  Duncan Mak  <duncan at ximian.com>
-
-	* download: Use the correct yum-repository.
-	
-2004-05-17  Duncan Mak  <duncan at ximian.com>
-
-	* languages: Added section on Nemerle, per request from Kamil
-	Skalski.
-
-2004-05-10  Duncan Mak  <duncan at ximian.com>
-
-	* download: Add link to packagers page.
-
-2004-05-06  Atsushi Enomoto <atsushi at ximian.com>
-
-	* xml-classes : updates
-
-2004-04-10 Daniel Morgan <danielmorgan at verizon.net>
-
-	* ado-net
-	* sqlclient
-	* oracle
-	* postgresql
-	* mysql: clean up Mono ADO.NET web pages
-	
-	* makefile: remove building of obsolete web page tds-providers
-
-2004-03-22 Ben Maurer  <bmaurer at users.sourceforge.net>
-
-	* mono-todo: I finished the vtable task :-).
-
-2004-03-04  Sebastien Pouliot  <sebastien at ximian.com>
-
-	* mono-hacking-roadmap.html: Updated status about assembly
-	signing.
-
-2004-02-05 Aaron Weber <aaron at ximian.com>
-
-	* README: update to describe better how to use the doc/web stuff
-
-	* index: change layout, move old news to oldnews page, rewrite
-	content, add new headings, decrease size of other headings.
-
-	* jit-debug: change link to martin's page; now it points to the
-	dir holding the debugger files. Fix grammar in one sentence.
-
-	* oldnews: erase very old news, add slightly old news removed from
-	index
-
-	* web/htmlify: shrink size of newsitem headings.
-	
-2004-02-03  Atsushi Enomoto <atsushi at ximian.com>
-
-	* xml-classes : updates
-
-2004-01-22  Atsushi Enomoto <atsushi at ximian.com>
-
-	* xml-classes : status update, additional infos.
-
-2004-01-16  Atsushi Enomoto <atsushi at ximian.com>
-
-	* web/commands : Added xml-classes (forgot to commit).
-	* mono-build-w32.sh : Added icu support as well as glib.
-	* ChangeLog : tiny fix
-
-2004-01-11  Atsushi Enomoto <atsushi at ximian.com>
-
-	* xml-classes : added v2 info. schema status updates.
-
-	Added ChangeLog. (There is no reason not to keep ChangeLog for 
-	documents, at least for not a little changes ;-)
diff --git a/web/Makefile.am b/web/Makefile.am
deleted file mode 100644
index 2588b2a..0000000
--- a/web/Makefile.am
+++ /dev/null
@@ -1,37 +0,0 @@
-WEB_FILES=														\
-	ado-net anoncvs asp-net books ccvs c-sharp class-library contact contributing devel-faq documentation download	\
-	embedded-api faq firebird gcc-frontend hackers ideas index							\
-	java jit-debug languages mailing-lists monodoc-xml mysql odbc							\
-	oledb papers													\
-	passport plans porting postgresql ppc projects rationale							\
-	resources roadmap runtime sqlclient sqlite sybase tdsclient							\
-	tds-providers status testing thanks tools								\
-	porting anoncvs monodoc-xml winforms delegate
-
-OTHERS= pending resources-pending todo mono-build.sh mono-build-w32.sh print-stack
-
-EXTRA_DIST = $(WEB_FILES) README $(OTHERS)
-
-all-docs: $(WEB_FILES) 
-	cat rationale roadmap c-sharp tools class-library \
-	runtime documentation download faq contributing \
-	resources status > all-docs
-
-class-status: class-status.in Makefile.am
-	cat class-status.in > class-status
-
-pending-classes:
-
-#pending-classes: pending-classes.in Makefile.am
-#	echo "This is a list of pending classes, and links to their documentation on MSDN.Microsoft.com<p><p>" > pending-classes
-#	for i in `cat pending-classes.in`; do x=`echo $$i | sed s/\\\.//g`; link=`echo http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrf@@@ClassTopic.asp | sed "s/@@@/$$x/"`; echo "	<a href=\"$$link\">$$i</a><br>" >> pending-classes; done
-
-
-webit: dummy
-	(cd web; make && make push)
-
-push-notes:
-	scp release-notes/mono* www at www:/web/cvsmodules/mono/archive
-
-dummy:
-
diff --git a/web/Makefile.in b/web/Makefile.in
deleted file mode 100644
index 0888a80..0000000
--- a/web/Makefile.in
+++ /dev/null
@@ -1,447 +0,0 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
- at SET_MAKE@
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-target_triplet = @target@
-subdir = web
-DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
-	ChangeLog
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/libtool.m4 \
-	$(top_srcdir)/ltoptions.m4 $(top_srcdir)/ltsugar.m4 \
-	$(top_srcdir)/ltversion.m4 $(top_srcdir)/lt~obsolete.m4 \
-	$(top_srcdir)/nls.m4 $(top_srcdir)/po.m4 \
-	$(top_srcdir)/progtest.m4 $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.in
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-SOURCES =
-DIST_SOURCES =
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-API_VER = @API_VER@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-BISON = @BISON@
-BOEHM_DEFINES = @BOEHM_DEFINES@
-BUILD_EXEEXT = @BUILD_EXEEXT@
-BUILD_GLIB_CFLAGS = @BUILD_GLIB_CFLAGS@
-BUILD_GLIB_LIBS = @BUILD_GLIB_LIBS@
-CC = @CC@
-CCAS = @CCAS@
-CCASDEPMODE = @CCASDEPMODE@
-CCASFLAGS = @CCASFLAGS@
-CCDEPMODE = @CCDEPMODE@
-CC_FOR_BUILD = @CC_FOR_BUILD@
-CFLAGS = @CFLAGS@
-CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DISABLE_SHARED_HANDLES = @DISABLE_SHARED_HANDLES@
-DLLTOOL = @DLLTOOL@
-DOLT_BASH = @DOLT_BASH@
-DSYMUTIL = @DSYMUTIL@
-DTRACE = @DTRACE@
-DTRACEFLAGS = @DTRACEFLAGS@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
-GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_LIBS = @GLIB_LIBS@
-GMODULE_CFLAGS = @GMODULE_CFLAGS@
-GMODULE_LIBS = @GMODULE_LIBS@
-GMSGFMT = @GMSGFMT@
-GMSGFMT_015 = @GMSGFMT_015@
-GREP = @GREP@
-HAVE_MSGFMT = @HAVE_MSGFMT@
-HOST_CC = @HOST_CC@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INTL = @INTL@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBC = @LIBC@
-LIBGC_CFLAGS = @LIBGC_CFLAGS@
-LIBGC_LIBS = @LIBGC_LIBS@
-LIBGC_STATIC_LIBS = @LIBGC_STATIC_LIBS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LLVM_CFLAGS = @LLVM_CFLAGS@
-LLVM_CONFIG = @LLVM_CONFIG@
-LLVM_CXXFLAGS = @LLVM_CXXFLAGS@
-LLVM_LDFLAGS = @LLVM_LDFLAGS@
-LLVM_LIBS = @LLVM_LIBS@
-LN_S = @LN_S@
-LTCOMPILE = @LTCOMPILE@
-LTCXXCOMPILE = @LTCXXCOMPILE@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-MONO_DL_NEED_USCORE = @MONO_DL_NEED_USCORE@
-MONO_NACL_ALIGN_MASK_OFF = @MONO_NACL_ALIGN_MASK_OFF@
-MSGFMT = @MSGFMT@
-MSGFMT_015 = @MSGFMT_015@
-MSGMERGE = @MSGMERGE@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OPROFILE_CFLAGS = @OPROFILE_CFLAGS@
-OPROFILE_LIBS = @OPROFILE_LIBS@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PKG_CONFIG = @PKG_CONFIG@
-RANLIB = @RANLIB@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SGEN_DEFINES = @SGEN_DEFINES@
-SHELL = @SHELL@
-SQLITE = @SQLITE@
-SQLITE3 = @SQLITE3@
-STRIP = @STRIP@
-USE_NLS = @USE_NLS@
-VERSION = @VERSION@
-X11 = @X11@
-XATTR_LIB = @XATTR_LIB@
-XGETTEXT = @XGETTEXT@
-XGETTEXT_015 = @XGETTEXT_015@
-XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
-XMKMF = @XMKMF@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-arch_target = @arch_target@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-docs_dir = @docs_dir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-export_ldflags = @export_ldflags@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-ikvm_native_dir = @ikvm_native_dir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-libgc_dir = @libgc_dir@
-libgdiplus_loc = @libgdiplus_loc@
-libmono_cflags = @libmono_cflags@
-libmono_ldflags = @libmono_ldflags@
-libsuffix = @libsuffix@
-localedir = @localedir@
-localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-mcs_topdir = @mcs_topdir@
-mcs_topdir_from_srcdir = @mcs_topdir_from_srcdir@
-mkdir_p = @mkdir_p@
-mono_build_root = @mono_build_root@
-mono_cfg_dir = @mono_cfg_dir@
-mono_runtime = @mono_runtime@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-reloc_libdir = @reloc_libdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-subdirs = @subdirs@
-sysconfdir = @sysconfdir@
-target = @target@
-target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-WEB_FILES = \
-	ado-net anoncvs asp-net books ccvs c-sharp class-library contact contributing devel-faq documentation download	\
-	embedded-api faq firebird gcc-frontend hackers ideas index							\
-	java jit-debug languages mailing-lists monodoc-xml mysql odbc							\
-	oledb papers													\
-	passport plans porting postgresql ppc projects rationale							\
-	resources roadmap runtime sqlclient sqlite sybase tdsclient							\
-	tds-providers status testing thanks tools								\
-	porting anoncvs monodoc-xml winforms delegate
-
-OTHERS = pending resources-pending todo mono-build.sh mono-build-w32.sh print-stack
-EXTRA_DIST = $(WEB_FILES) README $(OTHERS)
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  web/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  web/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-tags: TAGS
-TAGS:
-
-ctags: CTAGS
-CTAGS:
-
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
-	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
-	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-info: install-info-am
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-ps: install-ps-am
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: install-am install-strip
-
-.PHONY: all all-am check check-am clean clean-generic clean-libtool \
-	distclean distclean-generic distclean-libtool distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-data install-data-am install-dvi install-dvi-am \
-	install-exec install-exec-am install-html install-html-am \
-	install-info install-info-am install-man install-pdf \
-	install-pdf-am install-ps install-ps-am install-strip \
-	installcheck installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am
-
-
-all-docs: $(WEB_FILES) 
-	cat rationale roadmap c-sharp tools class-library \
-	runtime documentation download faq contributing \
-	resources status > all-docs
-
-class-status: class-status.in Makefile.am
-	cat class-status.in > class-status
-
-pending-classes:
-
-#pending-classes: pending-classes.in Makefile.am
-#	echo "This is a list of pending classes, and links to their documentation on MSDN.Microsoft.com<p><p>" > pending-classes
-#	for i in `cat pending-classes.in`; do x=`echo $$i | sed s/\\\.//g`; link=`echo http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrf@@@ClassTopic.asp | sed "s/@@@/$$x/"`; echo "	<a href=\"$$link\">$$i</a><br>" >> pending-classes; done
-
-webit: dummy
-	(cd web; make && make push)
-
-push-notes:
-	scp release-notes/mono* www at www:/web/cvsmodules/mono/archive
-
-dummy:
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/web/README b/web/README
deleted file mode 100644
index f10cd5d..0000000
--- a/web/README
+++ /dev/null
@@ -1,54 +0,0 @@
-To edit the website appearance:
-
-cd doc/web
-edit template.html.in
-make
-
-To edit website content:
-
-cd doc (this directory)
-edit files carefully
-cd web
-make
-
-To publish changes:
-
-cd web
-make push
-
-################ Requirements
-
-You must have complete and working "mono" and "mcs" checkouts from
-CVS. You will probably need to bootstrap your Mono installation,
-although an existing install from RPMs may permit you to build the CVS
-versions more easily.
-
-############## Samples 
-
-
-  If you want to add a new item in the left menu 
-  you have to edit mono/doc/web/commands and add
-  the entry there.
-
-    For new files you can add something as:
-    level,entry,path_to_the_file,file.src
-
-    ex: 1,COBOL#,cobol.html,cobol.src
-
-    If you just want to add a link to the menu:
-    1,MyEntry,URL
-    
-    ex: 1,About Linux,http://www.linux.org
-
-  To test the results under Linux:
-    1. Edit mono/doc/web/makefile
-
-    Delete all the references to class status
-    and the deploy/index.rss as well as the
-    mono.exe commands.
-
-    2. make
-    3. Open your browser and point to the 
-       file:///(YOUR PATH HERE)mono/doc/web/deploy/index.html
-
-
diff --git a/web/ado-net b/web/ado-net
deleted file mode 100644
index abaf759..0000000
--- a/web/ado-net
+++ /dev/null
@@ -1,198 +0,0 @@
-* ADO.NET
-
-** Data Access in Mono
-
-<ul>
-	<li>Today, our goal is to be compatible with  .NET 1.1 and .NET 1.0.  We also would like
-   to extend data access beyond what is included with .NET 1.0 and .NET 1.1,
-   such as, include access to more databases, such as, PostgreSQL and MySQL,
-   but also provide classes that help in creating data source-agnostic code, such as, 
-   Mono.Data.ProviderFactory.</li>
-   
-   <li>In the future, we would like to be compatible with .NET 1.2. This includes features 
-   like <a href="http://longhorn.msdn.microsoft.com/lhsdk/ndp/daconworkingwithobjectspacesarchitecture.aspx">ObjectSpaces</a></li>
-	
-</ul>
-
-** Bugs and Feature Requests
-
-<ul>
-
-	<li>Bugs with Mono or any data provider in Mono should be reported 
-	    in Mono's Bugzilla <a href="http://bugzilla.ximian.com/">here</a>.  If you
-	    do not have a Bugzilla user account, it is free 
-	    and easy to create 
-	    one <a href="http://bugzilla.ximian.com/createaccount.cgi">here</a>.</li>
-	
-	<li>Any requests for new features or missing functionality
-	    can entered as a bug in Bugzilla too</li>
-
-</ul>
-	
-** ADO.NET Data Providers
-	
-<p>Mono has many ADO.NET Data Providers to get you connected:
-			
-<ul>
-	<li><a href="http://www.go-mono.com/ibmdb2.html">IBM DB2 Universal Database</a></li>
-	<li><a href="http://www.go-mono.com/mysql.html">MySQL</a></li>
-	<li><a href="http://www.go-mono.com/odbc.html">ODBC</a></li>
-	<li><a href="http://www.go-mono.com/oracle.html">Oracle</a></li>
-	<li><a href="http://www.go-mono.com/oledb.html">OLE DB</a></li>
-	<li><a href="http://www.go-mono.com/postgresql.html">PostgreSQL</a></li>
-	<li><a href="http://www.go-mono.com/sqlclient.html">Microsoft SQL Server</a></li>
-	<li><a href="http://www.go-mono.com/sqlite.html">SQL Lite</a></li>
-	<li><a href="http://www.go-mono.com/sybase.html">Sybase</a></li>
-	<li><a href="http://www.go-mono.com/tdsclient.html">Older Microsoft SQL Server and Sybase databases</a></li>
-</ul>
-
-<p>External Projects that have created ADO.NET Providers that work on Mono:
-
-<ul>
-
-	<li><a href="http://www.go-mono.com/firebird.html">Firebird Interbase</a></li> is a
-	   Firebird SQL Managed data provider. It can be used with Interbase databases too.  It
-	   is written in 100%C# and does not require a client library. Works on .NET and Mono.</a>
-	<li><a href="http://gborg.postgresql.org/project/npgsql/projdisplay.php">Npgsql</a> is a 
-	   PostgreSQL Managed data provider written 
-	   in 100% C#, does not require a client library, and works on .NET and Mono</li>
-	<li><a href="http://sourceforge.net/projects/mysqlnet/">MySQLNet</a> is a 
-	   MySQL Managed data provider written in 100% C#, does not
-	   require a client library, and works on .NET and Mono</li>
-</ul>
-
-** Tools
-
-<p>Some tools that can be used for ADO.NET and other technologies (ASP.NET, XML, etc).
-
-<ul>
-	<li>sqlsharp.exe
-		<ul>
-			<li>SQL# is a command line query tool included with Mono to enter and execute SQL statements</li>
-		</ul>
-	</li>
-	<li>xsd.exe
-		<ul>
-			<li>XML Schema Definition tool</li>
-				<ul>
-					<li><b>XDR to XSD</b> - used to generate an XML schema from an XDR (XML Data Reduced schema) file. 
-						XDR was used by Microsoft prior to XSD becoming a W3C recommendation.  So, this needs
-						to be supported for legacy reasons</li>
-					<li><b>XML to XSD</b> - used to generate an XML schema from an XML file</li> 
-					<li><b>XSD to DataSet</b> - used to generate DataSet classes from an XSD schema file.  The
-						DataSet classes created can then be used with XML data</li>
-					<li><b>XSD to Classes</b> - used to generate classes from an XSD schema file. The 
-						classes created can be used with System.XML.Serialization.XMLSerializer 
-						to read and write XML code that follows the schema</li>
-					<li><b>Classes to XSD</b> - used to generate an XML schema 
-						from type(s) in a assembly file. The 
-						XML schema created by the tool defines the XML format used 
-						by System.XML.Serialization.XMLSerializer</li>
-				</ul>
-			</li>
-		</ul>
-	</li>
-</ul>
-
-** Extra Classes in Mono ADO.NET
-
- <p>An ADO.NET <a href="http://www.go-mono.com/provider-factory.html">Provider Factory</a> 
-    was created by Brian Ritchie.  The 
-	Provider Factory is a way to dynamically create
-	connections, commands, parameters, and data adapters based on configuration 
-	information.
-	
-** Database Access from ASP.NET
-	<ul>
-		<li>Take a look at xsp in cvs and look at the examples in test: dbpage1.aspx
-		and dbpage2.aspx:
-			<ul>
-				<li>Notice that the namespace System.Data is imported via <b>import</b></li>
-				<li>A NameValueCollection is gotten using ConfigurationSettings.AppSetings. These
-				settings are gotten from the file server.exe.config which is a XML file.   The XML
-				file has a section appSettings.  In the appSettings section, you have keys 
-				for DBProviderAssembly, DBConnectionType, and DBConnectionString.
-				<ul>
-					<li><b>DBProviderAssembly</b> is the assembly of the ADO.NET provider.  
-					      For example: 
-					      "ByteFX.Data"</li>
-					<li><b>DBConnectionType</b> is the System.Type of the class that 
-					      implements System.Data.IDbConnection that is found
-				          in the DBProviderAssembly.  
-				          For example: 
-				          "ByteFX.Data.MySqlConnection"</li> 
-				    <li><b>DBConnectionString</b> is the ConnectionString to set to the
-				          IDbConnection object to use in opening a connection to a data source.
-				          For Example: 
-				          "hostaddr=127.0.0.1;user=monotest;password=monotest;dbname=monotest"</li>
-				</ul>
-				<li>The function GetConnectionData() gets the database provider assembly, connection type,
-				and connection string parameters if they exist; otherwise, it uses default values.  This is
-				done during the loading of the web page.</li>
-				<li>With the connection parameters, the assembly is loaded, the connection type is verified that
-				it implements IDbConnection and an instance of the class can be created, creates a instance
-				of the class, sets the connection string, and opens the connection.</li>
-			</ul>
-		</li>
-	</ul>
-
-** Testing
-
-<ul>
-	<li>Testing connection-oriented classes are done 
-	via the provider specific tests
-	found in the mcs source at mcs/class</br>
-		<table border=1>	
-			<tr>
-				<td><b>Name</b></td>
-				<td><b>Assembly /</br> Namespace</b></td>
-				<td><b>Test</b></td>	
-			</tr>		
-			
-			<tr>
-				<td>Microsoft</br> SQL</br> Server</br></td>
-				<td>System.Data /</br> System.Data.SqlClient</td>
-				<td>SqlTest.cs at</br> System.Data/Test</td>
-			</tr>
-
-			<tr>
-				<td>PostgreSQL</br> (Npgsql)</td>
-				<td>Npgsql /</br> Npgsql</td>
-				<td>*.cs at</br> Npgsql/Test</td>
-			</tr>
-
-			<tr>
-				<td>Oracle</br> (Mono)</td>
-				<td>System.Data.OracleClient /</br> System.Data.OracleClient</td>
-				<td>TestOracleClient.cs at</br> System.Data.OracleClient/Test</td>
-			</tr>
-
-			<tr>
-				<td>ODBC</br> (Mono)</td>
-				<td>System.Data.Odbc /</br> System.Data</td>
-				<td>OdbcTest.cs (to connect to MS SQL Server)at</br> System.Data/Test</td>
-			</tr>
-			
-		</table>
-	
-
-	<li><a href="http://www.go-mono.com/testing.html">Testing non-connection classes</a> are 
-	done via mono's modified version of NUnit.
-		<ul>
-			<li>To run all the NUnit tests for Mono, you need the mcs source.  cd to the root
-			of the mcs source.  To run it:
-				<ul>
-					<li>make test</li>
-				</ul>
-			</li>
-			<li>If you just want to run the NUnit tests for System.Data, you would cd into
-			the mcs source at class/System.Data/Test and run it:
-				<ul>
-					<li>make test</li>
-				</ul>
-			</li>
-		</ul>
-	</li>
-		
-</ul>	
-
diff --git a/web/anoncvs b/web/anoncvs
deleted file mode 100644
index c52d510..0000000
--- a/web/anoncvs
+++ /dev/null
@@ -1,73 +0,0 @@
-* Anonymous CVS access
-
-	Anonymous access to the Mono is available currently from three
-	servers (anoncvs-spain-1.go-mono.com,
-	anoncvs-spain-2.go-mono.com and us-anoncvs.go-mono.com).
-
-	You can also use `anoncvs.go-mono.com', and that will pick a
-	server automatically for you.
-
-	Sources are currently being updated every hour.
-
-** Checking out the sources
-
-	To check out the sources for the first time from the
-	repository, use this command:
-
-<pre>
-	export CVSROOT=:pserver:anonymous at anoncvs.go-mono.com:/mono
-	cvs login
-	cvs -z3 co mcs mono gtk-sharp
-</pre>
-
-	That will get you the compiler and class libraries (mcs), the
-	interpreter and JITer (mono) and the Gtk# bindings.
-
-	The server is located in Spain.
-
-** Updating the sources
-
-	To update your sources every day, you use this command:
-
-<pre>
-	export CVSROOT=:pserver:anonymous at anoncvs.go-mono.com:/mono
-	cvs -z3 update -dP mcs mono gtk-sharp
-</pre>
-
-** Thanks
-
-	Thanks to <a href="http://www.hispalinux.es">HispaLinux</a>
-	for providing this Anon CVS server.  The server is located in
-	Spain.
-
-	Special thanks to Jesus Climent, Rodrigo Moya, Juantomás
-	García and Ismael Olea for making this happen.
-
-	Thanks to Matt Liotta of MontaraSoftware for hosting our
-	US-based AnonCVS server.
-
-<a name="#mirror">
-** Becoming an AnonCVS mirror
-
-	To become an AnonCVS mirror, you currently need about 40
-	megabytes of free disk space and bandwidth that you do not
-	mind sharing (you probably want enough to spare).
-
-	I need to be able to rsync to your machine from the main CVS
-	server.  The preferred method to rsync is to setup ssh in your
-	machine.
-
-	The requirements are:
-	<ul>
-		* An account where we can ssh into.
-
-		* rsync.
-
-		* AnonCVS setup with the same paths as the rest of the
-		  servers.
-
-		* Currently, about 40 megabytes of disk space, but this 
-		  will likely grow as the project evolves.
-
-		* A sysadmin contact e-mail address.
-	</ul>
diff --git a/web/asp-net b/web/asp-net
deleted file mode 100755
index 562c7e4..0000000
--- a/web/asp-net
+++ /dev/null
@@ -1,79 +0,0 @@
-* ASP.NET
-
-	ASP.NET support is divided in two pieces:
-	<ul>
-		* Web Forms (Web Applications infrastructure).
-
-		* Web Services (the SOAP-based rpc system).
-	</ul>
-
-	Both are fully functional at this point.
-	
-	Publicly available applications such as <a
-	href="http://www.asp.net/Default.aspx?tabindex=5&tabid=42">
-	IBuySpy</a>, <a href="http://www.ngallery.org/">nGallery</a> and
-	many others are known to work.
-
-	Web Services stack is being used for commercial applications
-	such as <a
-	href="http://www.ximian.com/about_us/press_center/press_releases/index.html?pr=sourcegear">
-	SourceGear</a>'s <a
-	href="http://www.sourcegear.com/vault/index.asp">Vault</a>. They
-	even funded the development of our Web Services classes back in
-	2002. Another example is OpenLink's
-	<a href="http://www.openlinksw.com/virtuoso/">Virtuoso</a>. People
-	from OpenLink also contributed to Mono.
-	
-
-* Hosting ASP.NET
-
-	Using ASP.NET System.Web.Hosting namespace classes you can make
-	your own ASP.NET enabled server.
-
-	However, if you want to take the easy path, we provide two
-	different mechanisms for hosting ASP.NET applications:
-	<ul>
-		* <a href="#xsp">XSP</a>: A light-weight web server
-		written in C#.
-
-		* <a href="#mod_mono">mod_mono</a>: An <a
-		href="http://httpd.apache.org">Apache</a> module that
-		works with both 1.3 and 2.0 versions.
-	</ul>
-
-<a name="xsp">
-** XSP
-
-	XSP is a simple web server written in C# that can be used to
-	run your ASP.NET applications.  The code is available from our
-	<a href="download.html">download page</a> or from the <a
-	href="anoncvs.html">Anonymous CVS</a> repository (module name:
-	xsp).
-	
-	A couple of classes of this new server can be reused/extended
-	to make an apache module/cgi using mono (MonoWorkerRequest and
-	MonoApplicationHost).  This server also uses a couple of
-	plugins distributed with Mono to support gzip HTTP transfers.
-
-	There is also a set of pages, controls and web services that you
-	can use to test the server and see how ASP.NET looks like.
-
-	As XSP is written in C# and uses System.Web classes to perform
-	its job, it also works under MS runtime.
-	
-<a name="mod_mono">
-** mod_mono
-
-	This Apache module is available from our <a
-	href="download.html">download page</a>. The <a href="anoncvs.html">
-	cvs</a> module name is mod_mono.
-
-	It allows apache to serve ASP.NET pages by proxying the requests
-	to a slightly modified version of our XSP called mod-mono-server
-	that is installed along with XSP.
-
-	It does not work on Windows.
-
-<div align="bottom">
-<small>Last updated: Sat, 12 Jun 2004 05:07:31 GMT</small>
-</div>
diff --git a/web/books b/web/books
deleted file mode 100644
index 75f7fb9..0000000
--- a/web/books
+++ /dev/null
@@ -1,68 +0,0 @@
-* Mono
-
-  <a href="http://www.oreilly.com/catalog/monoadn/">
-  Mono: A Developer's Notebook
-  </a>
-
-  <a href="http://www.amazon.de/exec/obidos/ASIN/3827264928/qid=1050051051/sr=2-1/ref=sr_2_3_1/028-2755135-1623712">
-  Mono: .NET-kompatible Anwendungen mit dem Open Source-Framework
-  </a>
-
-* C#
-
-   A Programmer's Introduction to C# - Second Edition: Eric Gunnerson
-
-* .NET Framework
-
-   Avery good techincal book about .NET is Don Box's <a
-   href="http://service.bfast.com/bfast/click?bfmid=2181&sourceid=39391960&isbn=0201734117">Essential
-   .NET</a>
-
-* Remoting
-
-   <a href="http://www.dotnetremoting.cc/book/AdvancedDotNetRemoting.asp">Advanced .NET Remoting: Ingo Rammer</a>
-
-* Threading
-
-   .NET Multithreading: Alan L. Dennis (ISBN 1-930110-54-5)
-
-* Web Services
-
-   Web Services: Architecture and Implementation with .NET: Keith Ballinger
-
-* ASP.NET
-
-   Essential ASP.NET with Examples in C# by Fritz Onion
-
-   ASP.NET in a Nutshell by G. Andrew Duthie & Matthew MacDonald
-
-   Programming ASP.NET by Jessy Liberty & Dan Hurtwitz
-
-* Compiler Implementation
-
-   Compilers - Principles, Techniques, and Tools: Alfred V. Aho, Ravi Sethi,
-   Jeffrey D. Ullman 
-
-   Advanced Compiler Design Implementation: Steven S. Muchnick
-
-   Modern Compiler Implementation in C: Andrew W. Appel
-
-   A Retargetable C Compiler - Design and Implementation: C. Fraser, David
-   Hanson
-
-* Reference Manuals
-
-   <a
-   href="http://developer.intel.com/design/pentium/manuals/24319101.pdf">Intel
-   Architecture Software Developer's Manual, Volume 2 - Instruction Set Reference Manual</a>
-
-   <a
-   href="http://www.caldera.com/developers/devspecs/abi386-4.pdf">System V ABI
-   - i386 Architecture Processor Supplement</a> 
-
-   <a
-   href="http://www.caldera.com/developers/devspecs/mipsabi.pdf">System V ABI -
-   MIPS Processor supplement</a>
-
-   <a href="http://www.sparc.org/standards/V8.pdf">The SPARC Architecture
-   Manual Version 8</a> 
diff --git a/web/c-sharp b/web/c-sharp
deleted file mode 100644
index ffa0b57..0000000
--- a/web/c-sharp
+++ /dev/null
@@ -1,236 +0,0 @@
-* MCS: The Ximian C# compiler
-
-	The Mono C# compiler is considered feature C# 1.0 complete at
-	this point and mature.  MCS is able to compile itself and many
-	more C# programs (there is a test suite included that you can
-	use).  It is routinely used to compile Mono, roughly 1.7
-	million lines of C# code.
-
-	The compiler is also fairly fast.  On a IBM ThinkPad t40 it
-	compiles 18,000 lines of C# code per second.
-
-	Work on C# 2.0 has started: some pieces of it are available on
-	the standard compiler with the -2 switch (iterators, method
-	conversions) and some others are available on the `gmcs'
-	branch on CVS (generics)
-
-** Obtaining MCS
-
-	The Mono C# compiler is part of the `mcs' module in the Mono CVS
-	you can get it from our <a href="anoncvs.html">Anonymous CVS</a> server,
-	or you can get nightly <a href="download.html">download page</a>.
-
-** Running MCS
-
-	MCS is written in C# and uses heavily the .NET APIs.  MCS runs
-	on Linux with the Mono runtime and on Windows with both the
-	.NET runtime and the Mono runtime.
-
-** Reporting Bugs in MCS
-
-	When you report a bug, try to provide a small test case that would
-	show the error so we can include this as part of the Mono C# regression
-	test suite.
-
-	If the bug is an error or a warning that we do not flag, write
-	a sample program called `csXXXX.cs' where XXXX is the code number
-	that is used by the Microsoft C# compiler that illustrates the 
-	problem.  That way we can also do regression tests on the invalid
-	input.  
-
-** Phases of the compiler
-
-	The compiler has a number of phases:
-
-	<ul>
-		* Lexical analyzer: hand-coded lexical analyzer that
-		  provides tokens to the parser.
-
-		* The Parser: the parser is implemented using Jay (A
-		  Berkeley Yacc port to Java, that I ported to C#).
-		  The parser does minimal work and syntax checking,
-		  and only constructs a parsed tree.
-
-		  Each language element gets its own class.  The code
-		  convention is to use an uppercase name for the
-		  language element.  So a C# class and its associated
-		  information is kept in a "Class" class, a "struct"
-		  in a "Struct" class and so on.  Statements derive
-		  from the "Statement" class, and Expressions from the
-		  Expr class.
-
-		* Parent class resolution: before the actual code
-		  generation, we need to resolve the parents and
-		  interfaces for interface, classe and struct
-		  definitions.
-
-		* Semantic analysis: since C# can not resolve in a
-		  top-down pass what identifiers actually mean, we
-		  have to postpone this decision until the above steps
-		  are finished.
-
-		* Code generation: The code generation is done through
-		  the System.Reflection.Emit API.
-	</ul>
-
-** CIL Optimizations.
-
-	The compiler performs a number of simple optimizations on its input:
-	constant folding (this is required by the C# language spec) and 
-	can perform dead code elimination.
-
-	Other more interesting optimizations like hoisting are not possible
-	at this point since the compiler output at this point does not
-	generate an intermediate representation that is suitable to
-	perform basic block computation.  
-
-	Adding an intermediate layer to enable the basic block
-	computation to the compiler should be a simple task, but we
-	are considering having a generic CIL optimizer.  Since all the
-	information that is required to perform basic block-based
-	optimizations is available at the CIL level, we might just skip
-	this step altogether and have just a generic IL optimizer that
-	would perform hoisting on arbitrary CIL programs, not only
-	those produced by MCS.  
-
-	If this tool is further expanded to perform constant folding
-	(not needed for our C# compiler, as it is already in there)
-	and dead code elimination, other compiler authors might be
-	able to use this generic CIL optimizer in their projects
-	reducing their time to develop a production compiler. 
-
-* Open bugs
-
-	See the <a href="bugs.html">bugs page</a> for more information.
-
-	A test suite is maintained to track the progress of
-	the compiler and various programs are routinely compiled and
-	ran.
-
-* Slides
-
-	Slides for the Mono C# Compiler presentation at .NET ONE are
-	available <a
-	href="http://primates.ximian.com/~miguel/slides-europe-nov-2002/Mono_C_Sharp_Overview_1007.sxi">here</a>
-	in StarOffice format.
-
-** History
-
-	MCS was able to parse itself on April 2001, MCS compiled itself
-	for the first time on December 28 2001.  MCS became self hosting
-	on January 3rd, 2002. 
-
-	The Mono Runtime and the Mono execution engine were able to make
-	our compiler self hosting on March 12, 2002.
-
-** Questions and Answers
-
-Q: Does the Mono C# compiler support C# 2.0?
-
-A: At this point the Mono C# compiler supports some of the features of
-   C# 2.0, but the support has not been completed.   To enable 2.0 features
-   you must use the -2 flag to the compiler.
-
-Q: What features are available as of Feb 2004?
-
-A: Iterators have been implemented as well as method group implicit
-   conversion to delegates on the main compiler branch.
-
-   We have a branch of the compiler in the module `mcs/gmcs' which is
-   where we are developing the Generics support for the compiler.  Plenty
-   of tests work (see mcs/tests/gen-*.cs for a list of tests), but work
-   remains to be done.
-
-Q: Will the C# 2.0 features be part of the Mono 1.0 release?
-
-A: Only a few, the generic compiler will not be part of the 1.0
-   stable release, but a beta preview will be distributed.
-
-Q: Why not write a C# front-end for GCC?
-
-A: I wanted to learn about C#, and this was an exercise in this
-   task.  The resulting compiler is highly object-oriented, which has
-   lead to a very nice, easy to follow and simple implementation of
-   the compiler.
-
-   I found that the design of this compiler is very similar to
-   Guavac's implementation.
-
-   Targeting the CIL/MSIL byte codes would require to re-architecting
-   GCC, as GCC is mostly designed to be used for register machines.
-   
-   The GCC Java engine that generates Java byte codes cheats: it does
-   not use the GCC backend; it has a special backend just for Java, so
-   you can not really generate Java bytecodes from the other languages
-   supported by GCC. 
-
-Q: If your C# compiler is written in C#, how do you plan on getting
-   this working on a non-Microsoft environment.
-
-   We will do this through an implementation of the CLI Virtual
-   Execution System for Unix (our JIT engine). 
-
-   Our JIT engine is working for the purposes of using the compiler.
-   The supporting class libraries are being worked on to fully support
-   the compiler.
-
-Q: Do you use Bison?
-
-A: No, currently I am using Jay which is a port of Berkeley Yacc to
-   Java that I later ported to C#.  This means that error recovery is
-   not as nice as I would like to, and for some reason error
-   productions are not being caught.  
-
-   In the future I want to port one of the Bison/Java ports to C# for
-   the parser.
-
-Q: Should someone work on a GCC front-end to C#?
-
-A: I would love if someone does, and we would love to help anyone that
-   takes on that task, but we do not have the time or expertise to
-   build a C# compiler with the GCC engine.  I find it a lot more fun
-   personally to work on C# on a C# compiler, which has an intrinsic
-   beauty.
-
-   We can provide help and assistance to anyone who would like to work
-   on this task.
-
-Q: Should someone make a GCC backend that will generate CIL images?
-
-A: I would love to see a backend to GCC that generates CIL images.  It
-   would provide a ton of free compilers that would generate CIL
-   code.  This is something that people would want to look into
-   anyways for Windows interoperation in the future.
-
-   Again, we would love to provide help and assistance to anyone
-   interested in working in such a project.
-
-Q: What about making a front-end to GCC that takes CIL images and
-   generates native code?
-
-A: I would love to see this, specially since GCC supports this same
-   feature for Java Byte Codes.  You could use the metadata library
-   from Mono to read the byte codes (ie, this would be your
-   "front-end") and generate the trees that get passed to the
-   optimizer.
-
-   Ideally our implementation of the CLI will be available as a shared
-   library that could be linked with your application as its runtime
-   support. 
-
-   Again, we would love to provide help and assistance to anyone
-   interested in working in such a project.
-   
-Q: But would this work around the GPL in the GCC compiler and allow
-   people to work on non-free front-ends?
-
-A: People can already do this by targeting the JVM byte codes (there
-   are about 130 compilers for various languages that target the JVM).
-
-Q: Why are you writing a JIT engine instead of a front-end to GCC?
-
-A: The JIT engine and runtime engine will be able to execute CIL
-   executables generated on Windows.
-
-You might also want to look at the <a href="faq.html#gcc">GCC</a>
-section on the main FAQ
diff --git a/web/ccvs b/web/ccvs
deleted file mode 100644
index e5a5343..0000000
--- a/web/ccvs
+++ /dev/null
@@ -1,443 +0,0 @@
-* CVS Access
-
-	Here we describe how one obtains commit access to the Mono CVS
-	repository and the responsibilities that come with that access
-	privilege.
-
-	These only apply to the Mono CVS repository, and not to the <a
-	href="http://forge.novell.com/modules/xfmod/community/?monocomm">Mono
-	Community</a> repositories at Novell Forge.
-
-** What is CVS?
-
-	Briefly, CVS is a system tool used to store and maintain files and 
-	a history of their changes over time. The Mono source code and related 
-	files are kept on a CVS server at Ximian.
-
-** What Access?
-
-	We mean "commit" access. This is the privilege to make permanent
-	changes to the Mono source code and related files. You need an account
-	created by the CVS server administrator in order to commit changes to
-	the files on that server.
-
-** How Does One Obtain Access?
-
-	Any active Mono developer can get a CVS account. Normally one is
-	considered an 'active' developer after sending several patches to the 
-	mailing lists and/or bugzilla for review.
-
-	If you are not a developer, but want to access the latest sources, 
-	please see the <a href="anoncvs.html">AnonCVS</a>
-	instructions.  If you are not a direct contributor to Mono,
-	but want to host your .NET or Mono-based project, you can use
-	<a href="forge.html">Novell Forge</a>.
-
-
-	If you feel you are ready for a CVS account send an e-mail to
-	<a href="mailto:miguel at ximian.com">miguel</a> with your public OpenSSH 
-	key for this purpose.  We only support SSH2 at this point.
-
-* Policies
-
-	It is necessary that everyone with CVS commit access respect and
-	adhere to the following rules. If you ask for and are granted CVS
-	access, you are agreeing to follow these policies.
-	
-** Code License
-
-	If you are about to commit code to a module, the code that is
-	being committed should be released under the same license as
-	the code that the module has.
-
-	Check the license if you are unsure, but it is basically:
-	class libraries X11; compiler and tools: GPL; runtime: LGPL.
-
-	If in doubt, check with the maintainers of the module, or send
-	mail to mono-hackers-list at ximian.com.
-
-** Changing code
-
-	Even if you have CVS commit access, that doesn't mean you can change 
-	code at will in any directory or module. Directories and Namespaces 
-	have a sort of unofficial ownership. If you are not the owner of a 
-	piece of code and you want to make changes/fixes to it, there are two 
-	cases.
-
-	<ul>
-	<li> The change is a typo fix or a one-liner build or trivial fix. In 
-	this case almost anyone can commit (always remembering to add the 
-	proper changelog entry to explain the change). We say "almost anyone",
-	because changes to certain directories almost always should be reviewed
-	first. Such as changes to core stuff: corlib/System, System.Collections,
-	mini/, metadata/, System.IO.
-
-	<li> The change is larger. In this case the patch *must* be sent to
-	mono-devel-list for review by the owner of the code and by the other
-	hackers. Always submit such patches to the list or bugzilla, although
-	you may put the owner of the code in the CC header. Hackers come and go.
-	Mailing a patch to only a personal address is a good way to get the
-	patch forgotten and missed. Plus, getting the patches reviewed as well
-	as reviewing them, is a good thing, so try to get used to it.
-	</ul>
-
-	Note: If the patch is an addition of code and doesn't change any of the
-	existing code, the rules are slightly relaxed: there is more freedom
-	in committing such changes, if they don't interfere with the existing
-	codebase.
-
-** Owning Code
-
-	Now, how do you get to be the owner of a chunk of code? The answer is
-	simple. You wrote the code, so you're the unofficial owner. There is 
-	also another way. After sending a few patches for the code, the
-	owner (or the core developers of mono, if the owner somehow disappeared)
-	trusts you and tells you you're free to commit without getting his
-	review first.
-
-
-	Here is a (partial) list of namespaces/directories with their owners:
-	<ul>
-        <li>Debugger module and debug code in mono: martin
-        <li>mcs compiler: miguel, martin, ravi
-        <li>Reflection/Reflection.Emit: lupus, zoltan
-        <li>IO-layer: dick
-        <li>mini: lupus, dietmar
-        <li>test suite: nickd (though anyone should feel free to add test cases)
-        <li>System.IO: dick, ville
-        <li>security stuff: spouliot
-        <li>ilasm: jackson
-        <li>System.Web and related: gonzalo
-        <li>System.Xml: eno, piers
-        <li>Remoting: dietmar, lluis
-        <li>interop/marshal: dietmar
-        <li>threads: dick
-	</ul>
-
-	If you are the owner of a piece of code, feel free to commit code, and 
-	delegate the work to others. 
-
-	But, if you're not the owner of the code, committing a rewrite without
-	getting a review first is not good cvsitizenship (especially when the
-	rewrite claimed to fix bugs, but not a single regression test has been
-	added to the suite).
-
-** Commit Rules
-
-	Once you know you can commit a patch (because of the rules above) there
-	are a few other small rules to follow:
-
-	<ul>
-	<li>Always add a ChangeLog entry with a meaningful
-	explanation, this file should be located in the same directory
-	as the change you make.
-
-	<li>The ChangeLog entry <b>must</b> be pasted on the CVS
-	commit log, so the CVS commit log can be used to map to the
-	changes as well.
-
-	<li>The ChangeLog and the files that comprise related changes
-	should be committed together, not one by one, otherwise the
-	history is pretty much useless if related changes are
-	separated during the commit.
-
-	<li>If you fix a bug, add a regression test for it in the regression
-	suite.
-
-	<li>Don't commit unrelated changes together with a fix: do fine-grained
-	commits.
-
-	<li>Always check what you're committing: make sure you're only committing
-	what you need and make sure you don't change line endings and 
-	whitespace.  Do a 'cvs diff -u' of the files you're going to commit and 
-	check the changes.
-
-	<li>Don't do reformatting commits, unless you're the original author of
-	the code.
-
-	<li>When fixing bugs, don't follow the documentation blindly, it may 
-	well be wrong. Test the behavior on the MS runtime or ask on the list 
-	for discussion if unsure. Don't be afraid of having your changes
-	reviewed.
-
-	<li>Never remove copyright notices from the code.
-
-	<li>Never remove licensing info from code.
-
-	<li>Never commit code you didn't write yourself or code that doesn't
-	have a suitable license.
-
-	<li>Follow the style conventions.
-
-	<li>Keep an eye on performance considerations, especially for code in
-	core classes, ask on the list for guidance.
-
-	<li>Do a regression test run and a bootstrapping build if making changes
-	to core functionality before committing. Do not commit code that would 
-	break the compile, because that wastes everybody's time.  Two things 
-	are important in this step: trying to build your sources and making 
-	sure that you add all the new files before you do a commit.
-
-	</ul>
-
-	Also, remember to pat yourself on the back after the commit, smile and
-	think we're a step closer to a better free software world.
-
-* Branches
-
-	We have branched the CVS modules `mono', `mcs' and
-	`libgdiplus', the tag to fetch these branches is: `mono-1-0',
-	so you use the following command to fetch the mono-1-0
-	branches:
-
-<pre>
-	cvs co -r mono-1-0 mono 
-	cvs co -r mono-1-0 mcs
-	cvs co -r mono-1-0 libgdiplus
-</pre>
-
-	I personally use a directory called `mono-1-0' to keep these
-	together and a separate directory keeps my HEAD development,
-	and I configure each one to different prefixes, so I can test
-	and run code with HEAD or mono-1-0.
-
-*** mono-1-0 policy
-
-	This branch will only get bug fixes to critical and major errors.
-	You must still get approval from the maintainer of the code to
-	check-in code into this branch.
-
-	Before submitting a patch for this branch, you should run all
-	appropriate regression tests.  Upcoming mono-1.0.x versions
-	will be produced from this branch.
-
-*** mono HEAD policy
-
-	HEAD should continue to build at all times: HEAD is not a
-	dumping ground for partial work: you still must ensure that
-	the build is not broken, and that no regressions are caused.
-	Unlike the main branch, you do not need approval to minor
-	changes, the same old rules apply.
-
-	But for any large architectural change, you must check with
-	the maintainers and get approval for the patches.  For these
-	large changes, if you are touching someone else's code, you
-	should contact the maintainer of that code and get approval
-	from them.
-
-	You must assume that HEAD will be packaged and distributed at
-	any point, this will be the branch that we use for making the
-	mono-1.1.x releases that will lead to our stable mono-1.2.x
-	release.
-
-	So, the bottom line is: do not check-in known regressions that
-	break the build.  A lot of work is underway, and we must
-	ensure the tree works.
-
-
-* Using CVS.
-
-	This is a small tutorial for using CVS.
-
-** Generating an SSH key
-
-	If you are using SSH version 2, please generate your key using:
-
-<pre>
-	ssh-keygen -t rsa
-</pre>
-
-	And mail <a href="mailto:miguel at ximian.com">miguel</a> the 
-	id_rsa.pub file.
-
-	If you are using SSH version 1, run:
-<pre>
-	ssh-keygen
-</pre>
-
-	And mail <a href="mailto:miguel at ximian.com">miguel</a> your 
-	identity.pub file.
-
-	If you are using SSH from SSH Communications Security (they offer
-	a free SSH client for personal use), you have to use OpenSSH to
-	convert your public key to the required format. You have to use 
-	OpenSSH's ssh-keygen program and write the following:
-
-<pre>
-	ssh-keygen -i -f id_XXX.pub > my_public_key.pub
-</pre>
-	
-	where the file id_XXX.pub is your public key file, 
-	normally located under ~/.ssh/ or ~/.ssh2/.
-	Send to <a href="mailto:miguel at ximian.com">miguel</a> the 
-	my_public_key.pub file. 
-
-	The *exact* format for this file must be:
-
-<pre>
-	ssh-rsa XXXXX....
-</pre>
-
-	You will need CVS and SSH.  Windows users can get both by
-	installing Cygwin (<a
-	href="http://www.cygwin.com">http://www.cygwin.com</a>)
-
-	Unix users will probably have those tools installed already.
-
-** Checking out the sources
-
-	To check out the sources for the first time from the
-	repository, use this command:
-
-<pre>
-	export CVS_RSH=ssh
-	export CVSROOT=username at mono-cvs.ximian.com:/cvs/public
-	cvs -z3 co mcs mono
-</pre>
-
-** Updating your sources
-
-	Every day people will be making changes, to get your latest
-	updated sources, use:
-
-<pre>
-	cvs -z3 update -Pd mcs mono
-</pre>
-
-	Note: The '-z3' enables compression for the whole cvs action.
-	The '-Pd' makes the update operation (P)rune directories that
-	have been deleted and get new (d)irectories added to the
-	repository.
-
-** Making patches
-
-	Usually you will want to make a patch to contribute, and let
-	other people review it before committing it.  To obtain such a
-	"patch", you type:
-	
-<pre>
-	cd directory-you-want-to-diff
-	cvs -z3 diff -u > file.diff
-	mail mono-list at ximian.com < file.diff
-</pre>
-
-** Committing your work
-
-	Once you get approval to commit to the CVS, or if you are
-	committing code that you are the maintainer of, you will want
-	to commit your code to CVS. 
-
-	To do this, you have to "add" any new files that you created:
-
-<pre>
-	cvs add new-file.cs
-</pre>
-
-	And then commit your changes to the repository:
-
-<pre>
-	cvs commit file-1.cs file-2.cs
-</pre>
-
-* Using SVN
-	
-	This is a small tutorial for using SVN (subversion).
-	For a more complete tutorial on subversion, look at
-	<a href="http://svnbook.red-bean.com/">the svn book</a>
-	or <a href="http://subversion.tigris.org">the svn homepage</a>
-
-** Generating a key
-
-	Follow the cvs instructions above.
-
-** Checking out the sources
-
-	To checkout the sources for the first time use the command:
-
-	Note: You should be running 0.35.1 (latest) of svn before attempting
-	anything here.
-
-<pre>
-	svn co svn+ssh://mono-cvs.ximian.com/svn/monodevelop/trunk/MonoDevelop
-</pre>
-	
-	If you have a different username on mono-cvs and the local computer
-	you can do the following:
-
-<pre>
-	svn co svn+ssh://username@mono-cvs.ximian.com/svn/monodevelop/trunk/MonoDevelop
-</pre>
-
-	before checking out.
-
-** Updating your sources
-
-	You can update your repository to the latest copy of MonoDevelop by
-	running the following command:
-
-<pre>
-	svn up
-</pre>
-
-	from inside your repository.
-
-** Committing your work
-
-	Before you commit anything, you should first update to the latest
-	sources by following the updating directions. After you are up to date
-	you need to run a:
-
-<pre>
-	svn add filename
-</pre>
-
-	for every file that you have created. You can get a list of these files
-	by running:
-
-<pre>
-	svn status
-</pre>
-
-	After all the files are added, run:
-
-<pre>
-	svn commit
-</pre>
-
-	to commit your changes.
-
-** For more information
-
-	Look at the MonoDevelop website (coming soon)
-
-* Keeping track of changes.
-
-	We provide two e-mail based mechanisms to keep track of
-	changes to the code base:
-	
-	<ul>
-		* <a href="mailto:mono-patches-request at ximian.com">
-		  mono-patches at ximian.com</a>: This mailing list receives
-		  in patch form all the changes that are being made to the
-		  CVS.
-
-		* <a href="mailto:mono-cvs-list-request at ximian.com">
-		  mono-cvs-list at ximian.com</a>: This mailing list only
-		  receives the CVS commit logs with a list of files
-		  modified.
-	</ul>
-
-	We hope to offer LXR and Bonsai in the future as well.
-
-	To subscribe, send an email message to
-	mono-cvs-list-request at ximian.com and in the body of the
-	message put `subscribe'.
-
-	This will send you an email message every time a change is
-	made to the CVS repository, together with the information that
-	the author of the changes submitted.
-
-	You might also want to track the live changes, subscribe to
-	the <a
-	href="mailto:mono-patches-request at ximian.com">mono-patches at ximian.com</a>
-	to receive the patches as they are checked into CVS. 
diff --git a/web/class-library b/web/class-library
deleted file mode 100644
index 95b56ca..0000000
--- a/web/class-library
+++ /dev/null
@@ -1,190 +0,0 @@
-* The Class Library
-
-	The Class Library should be compatible with Microsoft's .NET
-	implementation.
-
-	Please see the <a href="class-status.html">Class Status</a>
-	page for a status of who is working on which classes.
-	
-	We will write as much code as possible in C#. We may need to
-	interface with code written in C to gain access to the
-	functionality of libraries like libart, Gtk+, and libc.
-
-** Contributing
-
-	We welcome contributions to the the Class Library.  To get
-	started, check the status page for information about which
-	APIs are being worked on, and how to get in touch with 
-	individual maintainers.  
-
-	If you want to work on a class, first check the <a
-	href="download.html">Classes Distribution</a> to see if it is
-	not implemented yet, if not, check the <a
-	href="class-status.html">Class Status</a> to see if someone is
-	already working on it, and maybe contact them.
-
-	If nobody is working on it, mail <a
-	href="mailto:mono-list at ximian.com">mono-list at ximian.com</a>
-   	with the class you want to implement and CC <a
-	href="mailto:miguel at ximian.com">miguel at ximian.com</a>.
-
-	You can also track live the activities of the Mono CVS module
-	by subscribing to the <a
-	href="http://lists.ximian.com/mailman/listinfo/mono-cvs-list">mono-cvs-list</a>
-
-
-** Missing features
-
-	Our class libraries miss some features, for example, most classes
-	do not implement the serialization bits at all, it would be a good
-	contribution to add this to each class.
-
-	This is a simple task, but it needs to be done in a compatible way
-	with the Microsoft.NET classes: using the same arguments to serialize
-	and reincarnate data.
-
-** Layout
-
-	The Class Library resides in the `mcs' module in the directoy
-	`class'.
-	
-	Each directory in the directory represents the assembly where
-	the code belongs to, and inside each directory we divide the
-	code based on the namespace they implement.
-
-	There are two cases when we should consider portability: when
-	we are dealing with a couple of classes only that differ from
-	system to system (Consider System.Net and System.IO for Win32
-	and Unix).  In those cases we will just place the files for
-	example on <t>corlib/System/System.IO/Unix-Console.cs</t> and
-	<t>corlib/System/System.IO/Win32-Console.cs</t>.
-
-	For classes that might differ more (for example, the
-	implementation of Windows.Forms), we might have different
-	directories altogether: <t>System.Windows.Forms/Win32</t>,
-	<t>System.Windows.Forms/Gtk+</t> and
-	<t>System.Windows.Forms/Cocoa</t>.
-
-** Using existing components from GNOME.
-
-	Our current plan is to implement the GUI tools on top of
-	Gtk+.  The only obstacle here is that applications from Windows
-	might expect to be able to pull the HWND property from the
-	widgets and use PInvoke to call Windows functions.
-
-** Class Library and Win32 dependencies.
-
-	There are a few spots where the Win32 foundation is exposed to
-	the class library (for example, the HDC and HWND properties in
-	the GDI+). Casual inspection suggests that these can be
-	safely mapped to Gdk's GC and GdkWindow pointers without
-	breaking anything.
-
-	The only drawback is that support for PInvoke of Win32 code
-	won't be available.  An alternate solution would be to use
-	portions of Wine, or even to use Wine as our toolkit.
-
-*** Initial GDI+ and WinForms implementation
-
-	The initial implementation will use Gtk+ as the underlying
- 	toolkit. Since GTK+ has already been ported to many windowing
-	systems other than X (including frame buffer, Win32, and BeOS)
-	its use should cover most applications for most users. 
-	
-*** Database access
-
-	We will implement ADO.NET functionality by reusing <a
-	href="http://www.gnome-db.org">GNOME-DB</a>. This is an ideal
-	choice, since GNOME-DB was implemented precisely to provide an
-	ADO-like system for GNOME.
-
-*** Component Integration
-
-	We will provide a new namespace to use GNOME specific features
-	as well as a namespace to host Bonobo interfaces and classes
-	in Mono.  
-
-** Licensing
-
-	The class library is being licensed under the terms of the 
-	<a
-	href="http://www.opensource.org/licenses/mit-license.html">MIT
-	license.</a>  This is the same license used by the X11 window
-	system.
-
-** Class Library testing
-
-	We need to write regression tests that will verify
-	the correctness of the class library, compiler, and JIT
-	engine.
-
-	Please write your regression tests using <a
-	href="http://nunit.sourceforge.net">NUnit</a>
-
-** Coding conventions
-
-	Please follow the conventions on the ECMA specification (On
-	the Annex Partition) for your coding your libraries. 
-
-	Use 8 space tabs for writing your code (hopefully we can keep
-	this consistent).  If you are modifying someone else's code, try
-	to keep the coding style similar.
-
-	For a rationale on 8 space tabs, read Linus Torvald's Coding
-	Style guidelines in the Linux kernel source for a rationale. 
-
-*** Missing implementation bits
-
-	If you implement a class and you are missing implementation bits,
-	please put in the code the word "TODO" and a description of what
-	is missing to be implemented.
-
-*** Tagging buggy code
-
-	If there is a bug in your implementation tag the problem by using
-	the word "FIXME" in the code, together with a description of the 
-	problem.
-
-	Do not use XXX or obscure descriptions, because otherwise people
-	will not be able to understand what you mean.
-
-*** Tagging Lame specs
-
-	Sometimes the specification will be lame (consider Version.ToString (fieldCount)
-	where there is no way of knowing how many fields are available, making the API
-	not only stupid, but leading to unreliable code).
-
-	In those cases, use the keyword "LAMESPEC".
-
-** Namespaces
-
-	We are using a number of namespaces in the class libraries for
-	private classes when we need them, you are encouraged to use these:
-
-<pre>
-Mono
- .Languages     // General Compiler classes
-   .CSharp      // Specific C# parsing/tokenizing classes
-   .MonoBASIC   // Specific VB.NET/MonoBASIC parsing/tokenizing classes
-   .Python      // Specific Python parsing/tokenizing classes
- .Runtime
-   .LateBind    // General latebinding-support for MonoBASIC/Python
-   .MonoBASIC   // Specific runtime classes for MonoBASIC programs
-   .Python      // Specific runtime classes for Python programs
- .Web
-   .UI
-     .Utils     // Gaurav utility classes
-</pre>
-
-** FAQ
-
-Frequently asked questions about the class library:
-
-Q: I am writing a new class that overrides one of the system classes,
-   and I am getting a 1595 warning from the compiler.  Should we use a
-   different namespace?
-
-A: There is a quick solution to the problem, you can pass the command
-   line argument /nowarn:1595 and this will effectively let you use
-   your implementation of the code, while overriding the ones from the
-   system assemblies.
\ No newline at end of file
diff --git a/web/contact b/web/contact
deleted file mode 100644
index d9bbda1..0000000
--- a/web/contact
+++ /dev/null
@@ -1,13 +0,0 @@
-* Contacting the Mono team.
-
-	You can contact the general forum of discussion by sending
-	e-mail to <a href="mailto:mono-list at ximian.com">mono-list at ximian.com</a>
-
-	You can contact me (Miguel de Icaza) by sending e-mail to <a
-	href="mailto:miguel at ximian.com">miguel at ximian.com</a>.  My web
-	page is <a
-	href="http://primates.ximian.com/~miguel">http://primates.ximian.com/~miguel"</a>
-
-	You can also <a
-	href="http://www.ximian.com/about_us/contact/">reach Ximian.</a>
-
diff --git a/web/contributing b/web/contributing
deleted file mode 100644
index 0a80bcb..0000000
--- a/web/contributing
+++ /dev/null
@@ -1,275 +0,0 @@
-* Contributing to the Mono project
-
-	Mono has not been completed yet.  It is a project under
-	active development and with a vibrant community.  If you are
-	looking at ways of helping the project, you have come to the
-	right web page. 
-
-	There are three different philosophical approaches to helping
-	the Mono project, the selfish way, the altruistic or the
-	educational way.
-
-	The <b>selfish</b> way is packed with adventure.  You start by
-	building your own software, and start using the compiler and
-	tools that come with Mono.  Eventually you will run into
-	missing features, or a bug in the software.  Since we ship all
-	the source code for Mono, you can start tracking down the
-	problem.  Depending on how much time you have to devote to the
-	problem you could: <a href="http://bugzilla.ximian.com">File a
-	bug report</a> (read <a href="#goodbugreport">this</a>); track
-	down the problem and provide a better
-	<a href="http://bugzilla.ximian.com">bug report</a>;  fix the
-	bug and provide a patch (you can <a
-	href="mailto:mono-list at ximian.com">post it</a> to the <a
-	href="http://lists.ximian.com/mailman/listinfo/mono-list">mono
-	mailing list</a>;  or discuss the solution on the mailing
-	list.   Ideally you will also write a <a
-	href="testing.html">regression test</a> so the bug does not
-	get re-introduced in the future. 
-
-	The <b>altruistic</b> is probably the easiest because you get
-	to pick a piece of Mono that you might want to work on.  You
-	can pick an unfinished <a href="class-library.html">class</a> (from our <a
-	href="class-status.html">class status page</a>); help with the
-	<a href="documentation.html">documentation effort</a> (<a
-	href="http://lists.ximian.com/mailman/listinfo/mono-docs-list">mailing
-	list for the documentation effort</a>); fix existing <a
-	href=http://bugzilla.ximian.com/buglist.cgi?product=Mono%2FClass+Libraries&product=Mono%2FRuntime&component=CORLIB&component=misc&component=System&component=System.Web&component=System.XML&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&changedin=&chfieldfrom=&chfieldto=Now&chfieldvalue=&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&keywords=&keywords_type=anywords&op_sys_details=&op_sys_details_type=substring&version_details=&version_details_type=substring&cmdtype=doit&newqueryname=&order=Reuse+same+sort+as+last+time&form_name=query">runtime
-	bugs</a>; <a
-	href="http://bugzilla.ximian.com/buglist.cgi?product=Mono%2FMCS&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&changedin=&chfieldfrom=&chfieldto=Now&chfieldvalue=&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&keywords=&keywords_type=anywords&op_sys_details=&op_sys_details_type=substring&version_details=&version_details_type=substring&cmdtype=doit&newqueryname=&order=Reuse+same+sort+as+last+time&form_name=query">compiler
-	bugs</a>; help with the <a href="tools.html">tools</a> or
-	writing <a href="testing.html">tests</a> that help make Mono
-	more robust or help with the <a
-	href="http://www.go-mono.com/winforms.html">Winforms
-	effort</a>.
-
-	The <b>educational</b> way is an interesting one, because you
-	pick a technology you are interested in, and work on that
-	technology to learn the technology.  
-
-	Those are just broad things that need to be worked on, but
-	something that would help tremendously would be to help with
-	small duties in the project that need to be addressed. 
-
-	You can see what needs to be done in the class libraries <a href="class-status.html">here</a>
-
-* IRC Channel
-
-	Many developers get together on the <b>#mono</b> irc channel
-	on the <b>irc.gnome.org</b> server.  
-
-** To start contributing
-
-	As a programmer, you can contribute in three different scenarios to Mono:
-
-	<ul>
-		* If you only have Linux/Unix.
-		* If you only have Windows.
-
-		* If you have both Linux and Windows.
-	</ul>
-
-	You might also want to check our <a href="#setup">common
-	setups</a> section that describes some common setups that people
-	use while working on Mono.
-
-*** Contributing to the class library, regression tests or the compiler
-
-	This only requires Windows currently.
-
-	To start developing classes or to contribute to the compiler,
-	you only need Windows and the .NET Framework 1.0 SDK.  Please notice
-	that you do not need Visual Studio (although you can use it if
-	you want).  The .NET Framework SDK requires some version of
-	Windows XP or Windows NT.  If you are running Windows 98, 95
-	or Me, you could use instead the <a
-	href="http://msdn.microsoft.com/downloads/default.asp?url=/downloads/sample.asp?url=/msdn-files/027/001/829/msdncompositedoc.xml">.NET Redist package</a>, but it
-	lacks the documentation browser and the ildasm program (C#, VB, JScript and IL 
-	assembler are included).
-
-	You can get it <a href="http://msdn.microsoft.com/downloads/default.asp?url=/downloads/sample.asp?url=/msdn-files/027/000/976/msdncompositedoc.xml&frame=true">here</a>
-
-	If you are new to .NET, writing regression tests is a good way
-	of starting to contribute: it will help you get used to C# as
-	well as getting comfortable with the .NET APIs.  
-
-	This helps because at this point you might be the best
-	qualified person to fix a problem found by the regression
-	test, or you might have a new class to implement in the .NET
-	world that only has a test suite.  
-	
-	To get started writing tests see the <a href="testing.html">Test Suite</a>
-	section. <a href="mono-contribution-howto.html">Here</a> there is a good All-In-One introduction to the art of writing tests.
-
-
-*** Contributing to the runtime engine
-
-	This only requires Linux, currently some tasks are easier if you
-	have access to Windows as well.
-
-	Here are a few things you can do:
-	<ul>
-		* Port the runtime to other architectures.
-		* Port the runtime to other operating systems.
-		* Finish the IL code verifier in the runtime.
-		* Hack the JIT, improve the code generator, add new
-		  pattern rules, improve the register allocator.
-		* Implement the debugging interfaaces
-	</ul>
-
-** Bug reporting
-
-	If you find bugs in Mono, please make sure you enter a bug
-	report so we can keep track of problems in Mono.
-
-	To enter bug reports go to <a href="http://bugzilla.ximian.com">
-	http://bugzilla.ximian.com</a> and enter bug reports against
-	your favorite component (Mono, Runtime, C# compiler).
-
-	You can review the list of current bugs by going <a href="http://bugzilla.ximian.com/buglist.cgi?product=Mono%2FClass+Libraries&product=Mono%2FMCS&product=Mono%2FRuntime&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&changedin=&chfieldfrom=&chfieldto=Now&chfieldvalue=&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&keywords=&keywords_type=anywords&op_sys_details=&op_sys_details_type=substring&version_details=&version_details_type=substring&cmdtype=doit&order=%27Importance%27&form_name=query">here</a>
-
-	Check our <a href="bugs.html">Bugs</a> that contains links to
-	easily add a bug report, or to query the existing bugs.
-
-<a name="goodbugreport"/>
-** How to make good bug reports
-
-	A mail from Paolo to mono-devel-list contained this check list:
-	<ol>
-		* Submit a test case, the smaller it is, the better
-
-		* Use <a href="http://bugzilla.ximian.com">
-		http://bugzilla.ximian.com</a> to report the bug.
-		
-		<p>In <b>addition</b> to bugzilla, posting to the list is
-		fine if the bug merits larger exposure or design
-		discussions to solve; posting to the list twice or more
-		is just a way to annoy people and make them waste time,
-		specially when you start a new thread about it.
-
-		* If the test involves libraries or assemblies that are
-		not part of mono, add info about where to download all
-		the dependencies, and how to compile/install them.
-
-		* If compiling the test case requires more than:
-		<pre> mcs test.cs </pre>
-		provide the <b>full command line</b> you used to compile
-		the test.
-
-		* If running the test requires more than:
-		<pre> mono test.exe </pre>
-		provide the <b>full command line</b> needed to replicate
-		the bug.
-
-		* Provide info about the version of the software you're
-		using (both mono and the operating system or relevant
-		libraries).
-
-		* Provide the output you expect the test case to produce.
-		
-		* Provide the actual output <b>you</b> get from the test case.
-	</ol>
-
-	A good bug report complies with at least 6 items from the list.
-	If your bug report complies with 3 or less items, it is very
-	poor and it means it will take much more time to fix (when it's
-	not ignored).
-
-** Small tasks
-
-	A few smaller tasks are here, dropped in no particular order:
-	<ul>
-		* <b>Mono/doc and web site:</b> They need to be
-		  packaged up in the official `distribution'
-
-		* Adding serialization support to all the classes.
-
-		  We have many classes, but we have not implemented in
-		  many cases the serialization and re-incarnation support in 
-		  them (this is pretty straight forward code, and simple,
-	  	  but there is a lot to be done here).
-	</ul>
-
-* Emacs support
-
-	Brad Merryl's C# mode for Emacs is available: <a
-	href="http://www.cybercom.net/~zbrad/DotNet/Emacs/">http://www.cybercom.net/~zbrad/DotNet/Emacs/</a>
-
-* Books on C# and DotNet.
-
-	<ul>
-	* Dotnet Books (<a href="http://www.dotnetbooks.com">http://www.dotnetbooks.com</a>)
-
-	* Dotnet Resources (<a href="http://www.dotnetexperts.com/resources/">
-	  http://www.dotnetexperts.com/resources</a>)
-
-	* O'Reilly C# Essentials (<a href="http://www.oreilly.com/catalog/csharpess/">
-	  http://www.oreally.com/catalog/csharpess</a>)
-
-	* O'Really .NET Essentials (<a href="http://www.oreilly.com/catalog/dotnetfrmess/">
-	  http://www.oreally.com/catalog/dotnetfrmess</a>)
-	</ul>
-
-<a name="setup">
-* Common Setups
-
-	People running both Linux and Windows while contributing to
-	Mono use a number of tricks to increase their productivity.
-
-	Scenarios:
-
-	<ul>
-		* <b>Linux host and Windows host</b>
-
-		  The Windows file system is shared (right click on
-		  your hard drive icon, and select sharing, allow this
-		  to be shared).  
-
-		  The Windows machine has the required build tools
-		  (cygwin, and the .NET framework).  On the Windows
-		  machine, you want to setup the ssh server (run the
-		  ssh-host-config program to configure your ssh) and
-		  run it (from a cygwin terminal, type: /usr/sbin/sshd).
-
-		  From the Linux side, you want to mount the Windows
-		  file system, using something like this:
-
-<tt><pre>
-	mount -t smbfs -o uid=miguel,username="Miguel de Icaza" "//quack/c$" /mnt
-</pre></tt>
-
-		  In the above example, my Linux user name is
-		  `miguel', and this will allow this user to have
-		  read/write access to the share.  
-
-		  The host name is `quack', and the name of the share
-		  is `c$' (that is the C: partition).  
-
-		  The file system is accessible on /mnt.
-
-		  You can perform your cvs update and cvs commits from
-		  the /mnt directory, and run Emacs or your favorite
-		  Linux text editor on the Unix side in this way.
-
-		  Then from another terminal, you can ssh into your
-		  Windows box using ssh, like this: ssh "Miguel de Icaza at quack"
-	</ul>
-
-* Special Note
-
-	If you have looked at Microsoft's implementation of .NET or
-	their shared source code, you may not be able to contribute
-	to Mono.  Details will follow when we know more about this.
-
-	In general be careful when you are implementing free software
-	and you have access to proprietary code.  We need to make sure
-	that we are not using someone else's copyrighted code
-	accidentally. 
-
-	Please do not use the <b>ildasm</b> program to disassemble
-	proprietary code when you are planning to reimplement a class
-	for Mono.  If you have done this, we might not be able to use
-	your code.
-
-	Please stick to published documentation for implementing any
-	classes.
diff --git a/web/delegate b/web/delegate
deleted file mode 100644
index 8d2a771..0000000
--- a/web/delegate
+++ /dev/null
@@ -1,23 +0,0 @@
-* Your Delegate Has Been Garbage Collected.
-
-	The program that you are running passed a delegate into the
-	unmanaged world but failed to keep a reference to this
-	delegate in the managed world, so the delegate was garbage
-	collected.
-
-	This means that the the delegate is no longer valid, but the
-	unmanaged library or unmanaged code tried to call it.
-
-	To fix this problem make sure that you keep a handle to the
-	delegate that you are passing into the unmanaged world.
-
-	This happens since Mono has no visibility into the unmanaged
-	world and it does not know that the unmanaged world has kept a
-	reference to your delegate.  As far as the Mono runtime is
-	concerned the delegate must be garbage collected.
-
-	For more information see:
-
-	<a href="http://blogs.msdn.com/dangriff/archive/2003/11/19/51709.aspx">http://blogs.msdn.com/dangriff/archive/2003/11/19/51709.aspx</a>
-
-	
diff --git a/web/devel-faq b/web/devel-faq
deleted file mode 100644
index f947faa..0000000
--- a/web/devel-faq
+++ /dev/null
@@ -1,190 +0,0 @@
-* Developer FAQ
-
-** New classes
-
-Q: Should we write classes which are not part of the .NET or ECMA specs?
-
-A: Yes.  The ECMA and .NET specifications are far from complete, and
-   to produce a complete platform we will need a number of other
-   classes and components.
-
-   Any new classes that are not part of .NET or ECMA should be
-   designed to be reusable on anyone's CLI implementation.  So that
-   Windows developers can also use any new classes that we come up
-   with.
-
-   We have a few existing <a href="ideas.html">Ideas on missing
-   classes</a> 
-
-** Language Compatibility
-
-Q: What is the magic that allow multiple languages to co-exist?
-
-A: From Fergus Henderson:
-
-<i><blockquote>
-There are different levels of interoperability.
-The ECMA spec defines different categories of
-CLS (Common Language Specification) conformance.
-There are also some useful categories that don't
-correspond to any of the levels defined in the ECMA spec.
-In increasing degree of difficulty, your language implementation
-can
-
-	<ul>
-	* (a) just generate IL
-
-	* (b) be a CLS "consumer", which means that it can read in
-	  meta-data describing component interfaces,
-	  and that it provides a way to declare variables of
-	  CLS-complaint types and to call CLS-complaint methods.
-
-	* (c) be a CLS "extender", which means that it can in addition
-	  derive from CLS-compliant classes
-	  and implement CLS-compliant interfaces
-
-	* (d) be able to produce components with *any* CLS-compliant
-	component interface.
-	</ul>
-
-Supporting some of these may require extending your language.  However,
-you can get quite a lot of interoperability by just putting appropriate
-functionality in your compiler, without extending your language.
-
-For some things, e.g. ASP.NET, your language implementation also needs to be
-able to
-
-	<ul>
-	* (e) consume CodeDom trees.  CodeDom trees are an abstract
-	representation of programs in a form similar to a C# parse
-	tree, with embedded code snippets (unparsed strings).
-	Given a CodeDom tree, with the snippets in your language,
-	your language implementation needs to generate a (i) .NET
-	assembly and possibly also (ii) a source file in your language.
-
-	* (f) produce CodeDom trees.  For some applications,
-	your language implementation also needs to be able to
-	round-trip from CodeDom -> your language -> CodeDom.
-	</ul>
-
-and for some things it needs to
-
-	<ul>
-	* (g) generate *verifiable* IL
-	</ul>
-
-So when you hear all the hype about how language XYZ is a
-".NET language", make sure you ask which of these different
-things are supported.
-
-[For the record, Mercury currently supports (a).  We're working on
-(b) and (g), and on parts of (c) and (e).  We're never going to do (f), I very
-strongly doubt we'll ever do (d), and for (c) we might only ever support
-implementing interfaces, not deriving from classes.]
-
-</blockquote></i>
-
-** PInvoke 
-
-Q: What are the two major initiatives to implement PInvoke?
-
-A: Fergus Henderson answers:
-
-<i><blockquote>
-Many of the .NET APIs will need to be implemented using code that calls C/Unix
-APIs, such as stat().  The standard way of interfacing with native code from
-.NET code is to use "PInvoke".  However, there is a difficulty: many of
-these APIs are defined in terms of types such as C's `long' or `size_t'
-or the Posix `struct stat' whose representation varies depending on the
-platform (architecture/OS/C compiler).  There's no *portable* way of
-accessing those from .NET managed code.
-
-So, there are a couple of different approaches.
-One possibility is to access such routines by writing a wrapper, e.g. in C,
-that provides the same functionality without using types with a system-dependent
-representation.  The wrapper can then be directly accessed from portable
-.NET code.  The .NET code remains both source- and binary-portable;
-the wrapper code is source-portable, but needs to be compiled
-seperately for each target platform.  The drawback of this approach is
-that you have to write a lot of cumbersome wrapper code.
-
-Another possibility is to extend the .NET VM with support for an
-additional custom attribute, e.g. "[PosixType]".  The VM would then
-represent types tagged with this attribute in the same way that the
-underlying system represents those types.  With this approach, no
-wrapper code would be needed.  A drawback of this approach is that it
-pushes quite a bit of complexity into the VM; the VM would have to know
-the native representation of all types annotated with this attribute.
-Another drawback is that code using this extension might not work on
-different VMs.
-
-There have also been some other suggestions, but those are the two that
-I think are the best.
-</blockquote></i>
-
-Q: What is the problem implementing PInvoke?
-
-A: Again, from Fergus Henderson:
-
-<i><blockquote>
-There's no problem implementing PInvoke as specified in the ECMA
-specs and/or MS documentation.  It's just that PInvoke by itself
-doesn't solve all of the problems; in particular it doesn't solve
-the problem of C types whose representation is different on different
-systems.
-</blockquote></i>
-
-** CVS use
-
-Q: Why do we keep ChangeLogs and make the CVS commit messages be the
-   same?  One could be generated from the other
-
-A: There are a number of reasons for keeping ChangeLog files as well as
-   CVS commit files:
-
-   <ul>
-	* Offline programming: when people are traveling, CVS logs are
-          not available.
-
-	* Slow CVS access: Many people work over modem lines (very
-          typical for contributors in Europe, Asia, Latin America)
-          using CVS is slow and might not be available to you (cvs
-          server down, no anoncvs server available).
-
-	* ChangeLogs travel in a released tarball package, so it is
-	  possible to study the rationale of changes even after a
-	  project is long "released", or you only have the sources for
-	  the code. 
-
-	* ChangeLog are not metadata for each file, they are live
-          files that you can browse in the package that is being
-          distributed. 
-   </ul>
-
-Making the CVS commit message be the same as the ChangeLog has other
-benefits:
-
-   <ul>
-	* You can track down with `cvs log' what things were changed,
-          and match those to meaningful reports on the intentions of
-          the commit.
-
-	* When reading the commits-list, you can get a glimpse of the
-          changes without having to diff out or cvs update your tree.
-
-	* You can read off-line the changes that are being made
-          (asyncrouns operation).
-   </ul>
-
-This mechanism works very well for GNOME and other projects.
-
-Q: Should I use any of the special RCS keywords like $Id$, $Author$,
-   $Date$, or $Revision: 1.1 $?
-
-A: Please avoid using those in the source code in the CVS.  They
-   are not really useful, and they cause a lot of conflicts when
-   people have separate CVS trees.
-
-   It was a nightmare with the Linux kernel when two people had their
-   private CVS trees and were submitting patches to the core. 
-   
diff --git a/web/documentation b/web/documentation
deleted file mode 100644
index 40085e8..0000000
--- a/web/documentation
+++ /dev/null
@@ -1,260 +0,0 @@
-* Documentation
-
-	Although most of the concepts from Microsoft.NET can
-	be applied to the completed Mono platform, we do need to
-	have a complete set of free documentation written specifically
-	for Mono.
-
-	The documentation license we have chosen is the GNU Free
-	Documentation License (FDL), the standard for most documents
-	in the free software world. 
-
-	We need documentation on a number of topics:
-
-	<ul>
-
-		* The development tools (compilers, assembler tools,
-		  language reference, design time features): these
-	          live in the `monodoc' CVS module.
-
-		* Frequently Asked Question compilations.
-
-		* HOWTO documents.
-
-		* The Class Libraries (Both the original .NET class
-	 	  libraries as well as the class libraries produced by
-		  the project).
-
-		* Tutorials on Mono and the specifics of running it
-		  (The <a href="http://www.monohispano.org">Mono
-		  Hispano</a> team has produced lots of <a
-		  href="http://www.monohispano.org/tutoriales.php">tutorials
-		  in spanish</a>
-
-		* A guide to Mono as compared to the Microsoft.NET
-		  Framework SDK
-
-	</ul>
-
-* Class Library documentation
-
-	We are moving to a new setup for documenting the class libraries, 
-	and you can read about it <a href="classlib-doc.html">here</a>.
-
-	There are two classes of documentation: free documentation for
-	existing .NET classes and documentation for the classes that
-	we have developed on top of .NET.
-
-	There is a large body of documentation that came from the ECMA
-	standarization effort that has been checked into CVS.  It does
-	not contain everything Mono and .NET have, so they need to be
-	updated and augmented.
-
-** Gtk# documentation
-
-	We also have a large body of class libraries that are specific
-	to Mono, for example the documentation for Gtk#.  
-
-	We have checked in stub documentation for Gtk# into the CVS
-	repository (on gtk-sharp/doc) and we need volunteers to help
-	populate the documentation for it.  Since Gtk# is a wrapper
-	for Gtk, plenty of documentation exists in the <a
-	href="http://developer.gnome.org/doc/API">Gnome developer
-	site</a>.
-
-	To get started:
-
-	You need to download Gtk# from the CVS repository.  The module
-        name is `gtk-sharp'.  You can obtain a copy from both the CVS
-        repository or the anonymous CVS repository.
-
-        To pull your copy type:
-
-<pre>
-        	cvs co gtk-sharp
-</pre>
-        Documentation lives in gtk-sharp/doc/en.  The "en" indicates the
-        English language, the first one we are targeting.  We can later
-        do translations, but for now we are focusing on a single
-        language.
-
-        In that directory you will find the documentation organized by
-        namespaces.  One directory per namespace.  In the directories
-        you will find one XML file per class that needs to be
-        documented.  The mission is to fill in the data with useful
-        information.  Feel free to grab liberally information from the
-        Gtk documentation from:
-
-       	<a href="http://developer.gnome.org/doc/API/">http://developer.gnome.org/doc/API/</a>
-
-        Of course, the API does not apply directly.  It only applies at
-        a foundational level, so you can not really just copy and
-        paste.  Summaries, and remarks sections can probably be lifted
-        with little or no effort.
-
-        Gtk# uses properties to represent get/set operations in the C
-        API, so you can also use some bits from there.
-
-        Most of the documentation contains already place holders for
-        text, we use the internationally approved phrase for this
-        purpose, `To be added'.  So the quest is to remove all of the
-        "To be added" strings with information with resembles as closely
-        as possible the toolkit reality.
-
-*** The pieces to be filled.
-
-        Summaries are one or two line descriptions of the element
-        (class, struct, interface, method, field, event, delegate), and
-        its used to render summary pages.  So it has to be short.
-        
-        The "remarks" section is used to describe in detail the element.
-
-**** Tags.
-        
-        As you document Gtk# you will have a number of tags that you can
-        use inside the summary and remarks sections, these are:
-
-<pre>        
-<para> </para>
-</pre>
-        	Used to separate paragraphs.
-      
-<pre>  
-<paramref name="param_name"/>
-</pre>
-        	Used to reference a formal parameter to a function.
-
-<pre>  
-<see cref="T:SomeTypeName"/>
-</pre>
-        	Use this to reference a type, this will include an hyper
-        	link to the page for type SomeTypeName.
-
-        	For example, to reference "System.Enum", do:
-        
-<pre>
-	<see cref="T:System.Enum"/>
-</pre>
-
-<pre>
-<see cref="P:SomeTypeName.Property"/>
-</pre>
-        	Use this to reference a property, this will include an hyper
-        	link to the page for the property `Property' of type `SomeTypeName'.
-
-        	For example, to reference the BaseType property in System.Type, do:
-        
-<pre>
-	<see cref="P:System.Type.BaseType"/>
-</pre>
-
-<pre>
-<see cref="M:SomeTypeName.Method(type,type)"/>
-</pre>
-        	Use this to reference a method, this will include an hyper
-        	link to the page for the method `Method' of type `SomeTypeName'.
-        
-        	For example, to reference the ToString method in System.Object, do:
-        
-<pre>
-	<see cref="M:System.Object.ToString()"/>
-</pre>
-        
-<pre>
-<see langword="keyword"/>
-</pre>
-        	Use this to link to a keyword in the C# language, for
-        	example to link to `true', do:
-
-<pre>
-	<see langword="true"/>
-</pre>
-        
-<pre>
-<example> ... </example>
-</pre>        
-        	Use example to insert an example.  The example can 
-        	contain explanatory text and code.
-        
-<pre>
-<code lang="C#">.. </code>
-</pre>
-        
-        	Use this to provide a sample C# program, typically used
-        	within the <example> tags.
-
-        	When providing examples, try to provide a full example,
-        	we would like to be able to have a button to compile and
-        	run samples embedded into the documentation, or pop up
-        	an editor to let the user play with the sample.
-
-        	You can link to an example like this:
-
-<pre>
-	<code lang="C#" source="file.cs"> </code>
-</pre>
-
-<pre>
-<item>
-</pre>
-        	
-<pre>
-<list type="bullet">  </list>
-</pre>
-        
-        	Use this to create lists.  Lists contains <item>
-        	elements which have to contain <term> containers.
-        
-<pre>
-<list type="table"> </lits>
-            <listheader>
-              <term>YOUR FIRST COLUMN</term>
-              <description>YOUR DESCRIPTION</description>
-            </listheader>
-</pre>
-        	For two-column tables.  Inside use:
-        
-<pre>
-<item>
-	<term>First</term>
-	<description>First descritpion</description>
-</item>
-<item>
-	<term>Second</term>
-	<description>Second descirption</description>
-</item>
-</pre>
-
-** Words of warning.
-
-        A few words of warning and advice for class documentors:
-
-        A well-documented API can ease hours of frustration; as Mono
-        matures, robust and complete class library documentation will
-        become increasingly important.  As you write API documentation,
-        whether it is embedded in source files or in external Monodoc XML,
-        please keep the following in mind:
-
-        Plagarism, even if it's unintentional, is a Bad Thing(TM).
-        Microsoft's .NET Framework Class Library documentation is an
-        excellent resource for understanding the behavior and properties of
-        a type, and a lot of hard work went in to creating this (copyrighted)
-        resource.  Please don't copy from Microsoft's reference when
-        documenting a type.
-
-        To avoid this, I (<a href="mailto:jbarn at httcb.net">jbarn at httcb.net</a>)
-        suggest that you read the complete Microsoft documentation for a type,
-        ponder it for a while, and write the Mono documentation in your own
-        words.  While it's certainly okay to refer to the Microsoft
-        documentation to clarify your understanding of behavior or properties,
-        please don't open the Microsoft docs and refer to them for each member
-        you document.
-
-	The best way of documenting is to read our source code
-	implementation and explain in your own words what our implementation
-	does, and what the user can do with it.
-
-        There's a lot of domain expertise among the class library contributors;
-        let's put the same personal stamp on the class library documentation
-        that we have on the class libraries themselves.
-
diff --git a/web/download b/web/download
deleted file mode 100644
index 6280d1b..0000000
--- a/web/download
+++ /dev/null
@@ -1,1984 +0,0 @@
-* Software Availability
-
-	The Virtual Execution System is available in package `mono'.
-	Please refer to our <a href="runtime.html">Runtime</a>
-	description for more details on this part of the project.
-
-	Optional packages are `libgdiplus' (if you want to do
-	graphics), `winelib' (if you want to run the alpha winforms
-	support).  The package `mcs' contains the C# source code to
-	the compilers and class libraries.
-
-	To run ASP.NET applications you need xsp and if you want to
-	optionally integrate with Apache, get mod_mono.   
-
-	Online API documentation for Mono is available in the `monodoc' package. 
-
-	Gtk# is package to build GUI applications with the Gtk+ toolkit.
-
-	The software is also available on the `Mono' channel in <a href="http://www.ximian.com/products/redcarpet/">Red Carpet</a>.
-
-        Packagers can find RPM Spec files and other resources in the <a
-	href="http://www.go-mono.com/packagers/">packagers page</a>.
-
-	<table>
-	  <tbody>
- 	  <tr bgcolor="#DDDDDD">
-	    <td>
-	      <b>Mono 1.0</b><br>
-	      <a href="archive/1.0/index.html">Release notes</a><br>
-	       June 30th, 2004
-	    </td>
-	    <td>
-	      <table cellspacing="1" cellpadding="3">
-		<tr bgcolor="#BBBBBB">
-		  <td>
-		    <b>Source Code</b>
-	          </td>
-		  <td>
-	 	    <ul>
-	              <li><a href="archive/1.0/mono-1.0.tar.gz">Mono Runtime 1.0</a>
-	 	      <li><a href="archive/1.0/mcs-1.0.tar.gz">Mono Class Libraries and C# Compiler 1.0</a>
- 		      <li><a href="archive/1.0/libgdiplus-1.0.tar.gz">libgdiplus 1.0</a>
-		      <p>                  
-		      <li><a href="archive/1.0/monodoc-1.0.tar.gz">MonoDoc 1.0</a>
- 		      <li><a href="archive/1.0/xsp-1.0.tar.gz">XSP web server 1.0</a>
- 		      <li><a href="archive/1.0/mod_mono-1.0.tar.gz">Apache Mono module 1.0</a>
-		      <p>
-                      <li><a href="archive/1.0/winelib-0.3.tar.gz">Winelib 0.3</a>
-                      <p>
-		      <li><a href="archive/1.0/gtk-sharp-1.0.tar.gz">Gtk# 1.0</a>
-		      <li><a href="archive/1.0/gecko-sharp-0.5.tar.gz">Gecko# 0.5</a>
-                      <li><a href="archive/1.0/gtksourceview-sharp-0.5.tar.gz">Gtk SourceView# 0.5</a>
-                      <li><a href="archive/1.0/monodevelop-0.5.tar.gz">MonoDevelop IDE 0.5</a>                      
-	            </ul>
-		  </td>
-	        </tr>
-		<tr bgcolor="#bbbbbb">
-		  <td bgcolor="#999999">
-                    <img src="images/redhat-36.gif"><b>Red Hat 9.0/x86</b><br>
-		  </td>
-  		  <td>
-		    <a href="archive/1.0/redhat-9-i386">Packages</a>
-		  </td>
-	        </tr>
-		<tr bgcolor="#bbbbbb">
-		  <td bgcolor="#999999">
-                    <img src="images/redhat-36.gif"><b>Fedora Core 1/x86</b><br>
-		  </td>
-  		  <td>
-		    <a href="archive/1.0/fedora-1-i386">Packages</a>
-                    <p><a href="http://www.go-mono.com/archive/yum-repository/fedora-1-i386">YUM Repository</a>
-		  </td>
-	        </tr>
-		<tr bgcolor="#bbbbbb">
-		  <td bgcolor="#999999">
-                    <img src="images/redhat-36.gif"><b>Fedora Core 2/x86</b><br>
-		  </td>
-  		  <td>
-		    <a href="archive/1.0/fedora-2-i386">Packages</a>
-                    <p><a href="http://www.go-mono.com/archive/yum-repository/fedora-2-i386">YUM Repository</a>
-		  </td>
-	        </tr>
-                <tr bgcolor="#bbbbbb">
-                    <td bgcolor="#999999">
-                      <img src="images/suse-36.gif"><b>SLES 8/x86</b><br>
-                    </td>
-                    <td>
-                      <a href="archive/1.0/sles-8-i386/">Packages</a>
-                    </td>
-                </tr>
-		<tr bgcolor="#bbbbbb">
-		  <td bgcolor="#999999">
-                    <img src="images/suse-36.gif"><b>SUSE 9/x86</b><br>
-		  </td>
-  		  <td>
-		    <a href="archive/1.0/suse-90-i586/">Packages</a>
-		  </td>
-	        </tr>
-		<tr bgcolor="#bbbbbb">
-		  <td bgcolor="#999999">
-                    <img src="images/suse-36.gif"><b>SUSE 9.1/x86</b><br>
-		  </td>
-  		  <td>
-		    <a href="archive/1.0/suse-91-i586/">Packages</a>
-		  </td>
-	        </tr>
- 		<tr>
- 		  <td bgcolor="#999999">
- 		    <div align="left"><img src="images/windows-36.gif"></div>
- 		    <div align="right"><b>Windows installer</b><br><small>Win2k and above</small></div>
- 		  </td>
- 		  <td>
- 		    <a href="archive/1.0/windows/mono-1.0-win32-1.exe">Mono Setup</a>
- 		  </td>
- 		</tr>
-		<tr>
-		  <td bgcolor="#999999">
-                    <img src="images/macos-36.gif"><b>Mac OS X package</b>
-		  </td>
-		  <td>
-		    <a href="archive/1.0/macos/MonoFramework-1.0.dmg">MonoFramework-1.0.dmg</a> in /Library/Framework
-		  </td>
-		</tr>
-             </table>
-            </td>
-	</table>
-
-	<hr>
-
-	<table>
-	  <tbody>
- 	  <tr bgcolor="#DDDDDD">
-	    <td>
-	      <b>Release Candidate</b><br>
-	      <!-- <a href="archive/beta3/beta3.html">Release notes</a><br> -->
-	       June 25th, 2004
-	    </td>
-	    <td>
-	      <table cellspacing="1" cellpadding="3">
-		<tr bgcolor="#BBBBBB">
-		  <td>
-		    <b>Source Code</b>
-	          </td>
-		  <td>
-	 	    <ul>
-	              <li><a href="archive/rc/mono-0.97.tar.gz">Mono Runtime 0.97</a>
-	 	      <li><a href="archive/rc/mcs-0.97.tar.gz">Mono Class Libraries and C# Compiler 0.97</a>
- 		      <li><a href="archive/rc/libgdiplus-0.10.tar.gz">libgdiplus 0.10</a>
-		      <p>                  
-		      <li><a href="archive/rc/monodoc-0.18.tar.gz">MonoDoc 0.18</a>
- 		      <li><a href="archive/rc/xsp-0.16.tar.gz">XSP web server 0.16</a>
- 		      <li><a href="archive/rc/mod_mono-0.13.tar.gz">Apache Mono module 0.13</a>
-		      <p>                  
-		      <li><a href="archive/rc/gtk-sharp-0.99.tar.gz">Gtk# 0.99</a>
-		      <!-- <li><a href="archive/rc/gecko-sharp-0.5.tar.gz">Gecko# 0.5</a> -->
-	            </ul>
-		  </td>
-	        </tr>
-		<tr bgcolor="#bbbbbb">
-		  <td bgcolor="#999999">
-                    <img src="images/redhat-36.gif"><b>Red Hat 9.0/x86</b><br>
-		  </td>
-  		  <td>
-		    <a href="archive/rc/redhat-9-i386">Packages</a>
-		  </td>
-	        </tr>
-		<tr bgcolor="#bbbbbb">
-		  <td bgcolor="#999999">
-                    <img src="images/redhat-36.gif"><b>Fedora Core 1/x86</b><br>
-		  </td>
-  		  <td>
-		    <a href="archive/rc/fedora-1-i386">Packages</a>
-                    <p><a href="http://www.go-mono.com/archive/yum-repository/fedora-1-i386">YUM Repository</a>
-		  </td>
-	        </tr>
-		<tr bgcolor="#bbbbbb">
-		  <td bgcolor="#999999">
-                    <img src="images/redhat-36.gif"><b>Fedora Core 2/x86</b><br>
-		  </td>
-  		  <td>
-		    <a href="archive/rc/fedora-2-i386">Packages</a>
-                    <p><a href="http://www.go-mono.com/archive/yum-repository/fedora-2-i386">YUM Repository</a>
-		  </td>
-	        </tr>
-                <tr bgcolor="#bbbbbb">
-                    <td bgcolor="#999999">
-                      <img src="images/suse-36.gif"><b>SLES 8/x86</b><br>
-                    </td>
-                    <td>
-                      <a href="archive/rc/sles-8-i386/">Packages</a>
-                    </td>
-                </tr>
-		<tr bgcolor="#bbbbbb">
-		  <td bgcolor="#999999">
-                    <img src="images/suse-36.gif"><b>SUSE 9/x86</b><br>
-		  </td>
-  		  <td>
-		    <a href="archive/rc/suse-90-i586/">Packages</a>
-		  </td>
-	        </tr>
-		<tr bgcolor="#bbbbbb">
-		  <td bgcolor="#999999">
-                    <img src="images/suse-36.gif"><b>SUSE 9.1/x86</b><br>
-		  </td>
-  		  <td>
-		    <a href="archive/rc/suse-91-i586/">Packages</a>
-		  </td>
-	        </tr>
-<!--  		<tr> -->
-<!--  		  <td bgcolor="#999999"> -->
-<!--  		    <div align="left"><img src="images/windows-36.gif"></div> -->
-<!--  		    <div align="right"><b>Windows installer</b><br><small>Win2k and above</small></div> -->
-<!--  		  </td> -->
-<!--  		  <td> -->
-<!--  		    <a href="archive/beta3/windows/mono-Beta3-win32-1.exe">Mono Setup</a> -->
-<!--  		  </td> -->
-<!--  		</tr> -->
-<!-- 		<tr> -->
-<!-- 		  <td bgcolor="#999999"> -->
-<!--                     <img src="images/macos-36.gif"><b>Mac OS X package</b> -->
-<!-- 		  </td> -->
-<!-- 		  <td> -->
-<!-- 		    <a href="archive/beta3/macos/mono-0.96.dmg">mono-0.96.dmg</a> in /opt. -->
-<!-- 		    <br/><br/> -->
-<!-- 		    <a href="archive/beta3/macos/MonoFramework-0.96.dmg">MonoFramework-0.96.dmg</a> in /Library/Framework -->
-<!-- 		  </td> -->
-<!-- 		</tr> -->
-             </table>
-            </td>
-	</table>
-
-	<table>
-	  <tbody>
- 	  <tr bgcolor="#DDDDDD">
-	    <td>
-	      <b>Beta 3</b><br>
-	      <!-- <a href="archive/beta3/beta3.html">Release notes</a><br> -->
-	       June 15th, 2004
-	    </td>
-	    <td>
-	      <table cellspacing="1" cellpadding="3">
-		<tr bgcolor="#BBBBBB">
-		  <td>
-		    <b>Source Code</b>
-	          </td>
-		  <td>
-	 	    <ul>
-	              <li><a href="archive/beta3/mono-0.96.tar.gz">Mono Runtime 0.96</a>
-	 	      <li><a href="archive/beta3/mcs-0.96.tar.gz">Mono Class Libraries and C# Compiler 0.96</a>
- 		      <li><a href="archive/beta3/libgdiplus-0.9.tar.gz">libgdiplus 0.9</a>
-		      <p>
-		      <li><a href="archive/beta3/monodoc-0.17.tar.gz">MonoDoc 0.17</a>
- 		      <li><a href="archive/beta3/xsp-0.15.tar.gz">XSP web server 0.15</a>
- 		      <li><a href="archive/beta3/mod_mono-0.11.tar.gz">Apache Mono module 0.11</a>
-		      <p>
-		      <li><a href="archive/beta3/gtk-sharp-0.98.tar.gz">Gtk# 0.98</a>
-		      <li><a href="archive/beta3/gecko-sharp-0.5.tar.gz">Gecko# 0.5</a>
-	            </ul>
-		  </td>
-	        </tr>
-		<tr bgcolor="#bbbbbb">
-		  <td bgcolor="#999999">
-                    <img src="images/redhat-36.gif"><b>Red Hat 9.0/x86</b><br>
-		  </td>
-  		  <td>
-		    <a href="archive/beta3/redhat-9-i386">Packages</a>
-		  </td>
-	        </tr>
-		<tr bgcolor="#bbbbbb">
-		  <td bgcolor="#999999">
-                    <img src="images/redhat-36.gif"><b>Fedora Core 1/x86</b><br>
-		  </td>
-  		  <td>
-		    <a href="archive/beta3/fedora-1-i386">Packages</a>
-                    <p><a href="http://www.go-mono.com/archive/yum-repository/fedora-1-i386">YUM Repository</a>
-		  </td>
-	        </tr>
-		<tr bgcolor="#bbbbbb">
-		  <td bgcolor="#999999">
-                    <img src="images/redhat-36.gif"><b>Fedora Core 2/x86</b><br>
-		  </td>
-  		  <td>
-		    <a href="archive/beta3/fedora-2-i386">Packages</a>
-                    <p><a href="http://www.go-mono.com/archive/yum-repository/fedora-2-i386">YUM Repository</a>
-		  </td>
-	        </tr>
-                <tr bgcolor="#bbbbbb">
-                    <td bgcolor="#999999">
-                      <img src="images/suse-36.gif"><b>SLES 8/x86</b><br>
-                    </td>
-                    <td>
-                      <a href="archive/beta3/sles-8-i386/">Packages</a>
-                    </td>
-                </tr>
-		<tr bgcolor="#bbbbbb">
-		  <td bgcolor="#999999">
-                    <img src="images/suse-36.gif"><b>SUSE 9/x86</b><br>
-		  </td>
-  		  <td>
-		    <a href="archive/beta3/suse-90-i586/">Packages</a>
-		  </td>
-	        </tr>
-		<tr bgcolor="#bbbbbb">
-		  <td bgcolor="#999999">
-                    <img src="images/suse-36.gif"><b>SUSE 9.1/x86</b><br>
-		  </td>
-  		  <td>
-		    <a href="archive/beta3/suse-91-i586/">Packages</a>
-		  </td>
-	        </tr>
- 		<tr>
- 		  <td bgcolor="#999999">
- 		    <div align="left"><img src="images/windows-36.gif"></div>
- 		    <div align="right"><b>Windows installer</b><br><small>Win2k and above</small></div>
- 		  </td>
- 		  <td>
- 		    <a href="archive/beta3/windows/mono-Beta3-win32-1.exe">Mono Setup</a>
- 		  </td>
- 		</tr>
-		<tr>
-		  <td bgcolor="#999999">
-                    <img src="images/macos-36.gif"><b>Mac OS X package</b>
-		  </td>
-		  <td>
-		    <a href="archive/beta3/macos/mono-0.96.dmg">mono-0.96.dmg</a> in /opt.
-		    <br/><br/>
-		    <a href="archive/beta3/macos/MonoFramework-0.96.dmg">MonoFramework-0.96.dmg</a> in /Library/Framework
-		  </td>
-		</tr>
-             </table>
-            </td>
-	</table>
-        
-	<table>
-	  <tbody>
- 	  <tr bgcolor="#DDDDDD">
-	    <td>
-	      <b>Beta 2</b><br>
-	      <a href="archive/beta2/beta2.html">Release notes</a><br>
-	       June 1st, 2004
-	    </td>
-	    <td>
-	      <table cellspacing="1" cellpadding="3">
-		<tr bgcolor="#BBBBBB">
-		  <td>
-		    <b>Source Code</b>
-	          </td>
-		  <td>
-	 	    <ul>
-	              <li><a href="archive/beta2/mono-0.95.tar.gz">Mono Runtime 0.95</a>
-	 	      <li><a href="archive/beta2/mcs-0.95.tar.gz">Mono Class Libraries and C# Compiler 0.95</a>
- 		      <li><a href="archive/beta2/libgdiplus-0.8.tar.gz">libgdiplus 0.8</a>
- 		      <li><a href="archive/beta2/winelib-0.3.tar.gz">winelib 0.3</a>
-		      <p>
-		      <li><a href="archive/beta2/monodoc-0.16.tar.gz">MonoDoc 0.16</a>
- 		      <li><a href="archive/beta2/xsp-0.14.tar.gz">XSP web server 0.14</a>
- 		      <li><a href="archive/beta2/mod_mono-0.10.tar.gz">Apache Mono module 0.10</a>
-		      <p>
-		      <li><a href="archive/beta2/gtk-sharp-0.93.tar.gz">Gtk# 0.93</a>
-		      <li><a href="archive/beta2/gecko-sharp-0.4.tar.gz">Gecko# 0.4</a>
-		      <p>
-		      <li><a href="archive/beta2/monodevelop-0.4.tar.gz">MonoDevelop 0.4</a>
-		      <li><a href="archive/beta2/gtksourceview-sharp-0.3.tar.gz">GtkSourceView# 0.93</a>
-	            </ul>
-		  </td>
-	        </tr>
-		<tr bgcolor="#bbbbbb">
-		  <td bgcolor="#999999">
-                    <img src="images/redhat-36.gif"><b>Red Hat 9.0/x86</b><br>
-		  </td>
-  		  <td>
-		    <a href="archive/beta2/redhat-9-i386">Packages</a>
-		  </td>
-	        </tr>
-		<tr bgcolor="#bbbbbb">
-		  <td bgcolor="#999999">
-                    <img src="images/redhat-36.gif"><b>Fedora Core 1/x86</b><br>
-		  </td>
-  		  <td>
-		    <a href="archive/beta2/fedora-1-i386">Packages</a>
-                    <p><a href="http://www.go-mono.com/archive/yum-repository/fedora-1-i386">YUM Repository</a>
-		  </td>
-	        </tr>
-		<tr bgcolor="#bbbbbb">
-		  <td bgcolor="#999999">
-                    <img src="images/redhat-36.gif"><b>Fedora Core 2/x86</b><br>
-		  </td>
-  		  <td>
-		    <a href="archive/beta2/fedora-2-i386">Packages</a>
-                    <p><a href="http://www.go-mono.com/archive/yum-repository/fedora-2-i386">YUM Repository</a>
-		  </td>
-	        </tr>
-                <tr bgcolor="#bbbbbb">
-                    <td bgcolor="#999999">
-                      <img src="images/suse-36.gif"><b>SLES 8/x86</b><br>
-                    </td>
-                    <td>
-                      <a href="archive/beta2/sles-8-i386/">Packages</a>
-                    </td>
-                </tr>
-		<tr bgcolor="#bbbbbb">
-		  <td bgcolor="#999999">
-                    <img src="images/suse-36.gif"><b>SUSE 9/x86</b><br>
-		  </td>
-  		  <td>
-		    <a href="archive/beta2/suse-90-i586/">Packages</a>
-		  </td>
-	        </tr>
-		<tr bgcolor="#bbbbbb">
-		  <td bgcolor="#999999">
-                    <img src="images/suse-36.gif"><b>SUSE 9.1/x86</b><br>
-		  </td>
-  		  <td>
-		    <a href="archive/beta2/suse-91-i586/">Packages</a>
-		  </td>
-	        </tr>
-		<tr>
-		  <td bgcolor="#999999">
-		    <div align="left"><img src="images/windows-36.gif"></div>
-		    <div align="right"><b>Windows installer</b><br><small>Win2k and above</small></div>
-		  </td>
-		  <td>
-		    <a href="archive/beta2/windows/mono-Beta2-win32-1.exe">Mono Setup</a>
-		  </td>
-		</tr>
-		<tr>
-		  <td bgcolor="#999999">
-                    <img src="images/macos-36.gif"><b>Mac OS X package</b>
-		  </td>
-		  <td>
-		    <a href="archive/beta2/macos/Mono_0.95_Beta_2.dmg">Mono_0.95_Beta_2.dmg</a>: on /Library/Framework.<br>
-		    <a href="archive/beta2/macos/mono-0.95.dmg">mono-0.95.dmg</a> On /opt.
-		  </td>
-		</tr>
-             </table>
-            </td>
-	</table>
-
-	<table>
-	  <tbody>
- 	  <tr bgcolor="#DDDDDD">
-	    <td>
-	      <b>Beta 1</b><br>
-	      <a href="archive/beta1/beta1.html">Release notes</a><br>
-	       May 5th, 2004
-	    </td>
-	    <td>
-	      <table cellspacing="1" cellpadding="3">
-		<tr bgcolor="#BBBBBB">
-		  <td>
-		    <b>Source Code</b>
-	          </td>
-		  <td>
-	 	    <ul>
-	              <li><a href="archive/beta1/mono-0.91.tar.gz">Mono Runtime 0.91</a>
-	 	      <li><a href="archive/beta1/mcs-0.91.tar.gz">Mono Class Libraries and C# Compiler 0.91</a>
- 		      <li><a href="archive/beta1/libgdiplus-0.5.tar.gz">libgdiplus 0.5</a>
- 		      <li><a href="archive/beta1/winelib-0.2.tar.gz">winelib 0.2</a>
-		      <p>
-		      <li><a href="archive/beta1/monodoc-0.15.tar.gz">MonoDoc 0.15</a>
- 		      <li><a href="archive/beta1/xsp-0.13.tar.gz">XSP web server 0.13</a>
- 		      <li><a href="archive/beta1/mod_mono-0.9.tar.gz">Apache Mono module 0.9</a>
-	            </ul>
-		  </td>
-	        </tr>
-		<tr bgcolor="#bbbbbb">
-		  <td bgcolor="#999999">
-                    <img src="images/redhat-36.gif"><b>Red Hat 9.0/x86</b><br>
-		  </td>
-  		  <td>
-		    <a href="archive/beta1/redhat-9-i386">Packages</a>
-		  </td>
-	        </tr>
-		<tr bgcolor="#bbbbbb">
-		  <td bgcolor="#999999">
-                    <img src="images/redhat-36.gif"><b>Fedora Core 1/x86</b><br>
-		  </td>
-  		  <td>
-		    <a href="archive/beta1/fedora-1-i386">Packages</a>
-                    <p><a href="http://www.go-mono.com/archive/beta1/fedora-1-i386/">YUM Repository</a>
-		  </td>
-	        </tr>
-                  <tr bgcolor="#bbbbbb">
-                      <td bgcolor="#999999">
-                        <img src="images/suse-36.gif"><b>SLES 8/x86</b><br>
-                      </td>
-                      <td>
-                        <a href="archive/beta1/sles-8-i386/">Packages</a>
-                      </td>
-                </tr>
-		<tr bgcolor="#bbbbbb">
-		  <td bgcolor="#999999">
-                    <img src="images/suse-36.gif"><b>SUSE 9/x86</b><br>
-		  </td>
-  		  <td>
-		    <a href="archive/beta1/suse-90-i586/">Packages</a>
-		  </td>
-	        </tr>
-		<tr bgcolor="#bbbbbb">
-		  <td bgcolor="#999999">
-                    <img src="images/suse-36.gif"><b>SUSE 9.1/x86</b><br>
-		  </td>
-  		  <td>
-		    <a href="archive/beta1/suse-91-i586/">Packages</a>
-		  </td>
-	        </tr>
-		<tr>
-		  <td bgcolor="#999999">
-                    <img src="images/windows-36.gif"><b>Windows installer</b>
-		  </td>
-		  <td>
-		    <a href="archive/beta1/windows/mono-Beta1-win32-2.exe">Mono Setup</a>
-		    Updated on May 12.
-		  </td>
-		</tr>
-		<tr>
-		  <td bgcolor="#999999">
-                    <img src="images/macos-36.gif"><b>Mac OS X package</b>
-		  </td>
-		  <td>
-		    <a href="archive/beta1/macos/mono-0.91.mpkg.tar.gz">mono-0.91.mpkg.tar.gz</a>
-		  </td>
-		</tr>
-             </table>
-            </td>
-	</table>
-
-	<table>
-	  <tbody>
- 	  <tr bgcolor="#DDDDDD">
-	    <td>
-	      <b>Release 0.31</b><br>
-	      <a href="archive/mono-0.31.html">Release notes</a><br>
-	       Mar 18th, 2004
-	    </td>
-	    <td>
-	      <table cellspacing="1" cellpadding="3">
-		<tr bgcolor="#BBBBBB">
-		  <td>
-		    <b>Source Code</b>
-	          </td>
-		  <td>
-	 	    <ul>
-	 	      <li><a href="archive/mcs-0.31.tar.gz">Mono Class Libraries and C# Compiler 0.31</a>
-	              <li><a href="archive/mono-0.31.tar.gz">Mono Runtime 0.31</a>
- 		      <li><a href="archive/libgdiplus-0.2.tar.gz">libgdiplus 0.2</a>
- 		      <li><a href="archive/winelib-0.1.tar.gz">winelib 0.1</a>
-		      <p>
-		      <li><a href="archive/monodoc-0.13.tar.gz">MonoDoc 0.13</a>
- 		      <li><a href="archive/xsp-0.12.tar.gz">XSP web server 0.12</a>
- 		      <li><a href="archive/mod_mono-0.8.tar.gz">Apache Mono module 0.8</a>
-	            </ul>
-		  </td>
-	        </tr>
-		<tr bgcolor="#bbbbbb">
-		  <td bgcolor="#999999">
-                    <img src="images/redhat-36.gif"><b>Red Hat 9.0/x86</b><br>
-		  </td>
-  		  <td>
-		    <a href="archive/0.31/redhat-9-i386">Packages</a>
-		  </td>
-	        </tr>
-		<tr bgcolor="#bbbbbb">
-		  <td bgcolor="#999999">
-                    <img src="images/redhat-36.gif"><b>Fedora Core 1/x86</b><br>
-		  </td>
-  		  <td>
-		    <a href="archive/0.31/fedora-1-i386">Packages</a>
-		  </td>
-	        </tr>
-		<tr bgcolor="#bbbbbb">
-		  <td bgcolor="#999999">
-                    <img src="images/suse-36.gif"><b>SUSE 9/x86</b><br>
-		  </td>
-  		  <td>
-		    <a href="archive/0.31/suse-90-i586/">Packages</a>
-		  </td>
-	        </tr>
-		<tr bgcolor="#bbbbbb">
-		  <td bgcolor="#999999">
-                    <img src="images/debian-36.gif"><b>Debian Packages</b><br>
-		  </td>
-  		  <td>
-		    <a href="http://pkg-mono.alioth.debian.org/">Packages (third party provider)</a>
-		  </td>
-	        </tr>
-		<tr>
-		  <td bgcolor="#999999">
-                    <img src="images/windows-36.gif"><b>Windows installer</b>
-		  </td>
-		  <td>
-		    <a href="archive/0.31/windows/mono-0.31-win32-1.exe">Mono Setup</a>
-		  </td>
-		</tr>
-             </table>
-            </td>
-	</table>
-
-	<table>
-	  <tbody>
- 	  <tr bgcolor="#DDDDDD">
-	    <td>
-	      <b>Release 0.30.2</b><br>
-	      <a href="archive/mono-0.30.1.html">Release notes</a><br>
-	       Feb 27th, 2004
-	    </td>
-	    <td>
-	      <table cellspacing="1" cellpadding="3">
-		<tr bgcolor="#BBBBBB">
-		  <td>
-		    <b>Source Code</b>
-	          </td>
-		  <td>
-	 	    <ul>
-	 	      <li><a href="archive/mcs-0.30.2.tar.gz">Mono Class Libraries and C# Compiler 0.30.2</a>
-	              <li><a href="archive/mono-0.30.2.tar.gz">Mono Runtime 0.30.2</a>
- 		      <li><a href="archive/monodoc-0.11.tar.gz">MonoDoc 0.11</a>
-	            </ul>
-		  </td>
-	        </tr>
-		<tr bgcolor="#bbbbbb">
-		  <td bgcolor="#999999">
-                    <img src="images/redhat-36.gif"><b>Red Hat 9.0/x86</b><br>
-		  </td>
-  		  <td>
-		    <a href="archive/0.30.2/redhat-9-i386">Packages</a>
-		  </td>
-	        </tr>
-		<tr bgcolor="#bbbbbb">
-		  <td bgcolor="#999999">
-                    <img src="images/redhat-36.gif"><b>Fedora Core 1/x86</b><br>
-		  </td>
-  		  <td>
-		    <a href="archive/0.30.2/fedora-1-i386">Packages</a>
-		  </td>
-	        </tr>
-		<tr bgcolor="#bbbbbb">
-		  <td bgcolor="#999999">
-                    <img src="images/suse-36.gif"><b>SUSE 9/x86</b><br>
-		  </td>
-  		  <td>
-		    <a href="archive/0.30.2/suse-90-i586/">Packages</a>
-		  </td>
-	        </tr>
-		<tr bgcolor="#bbbbbb">
-		  <td bgcolor="#999999">
-                    <img src="images/debian-36.gif"><b>Debian Packages</b><br>
-		  </td>
-  		  <td>
-		    <a href="http://pkg-mono.alioth.debian.org/">Packages (third party provider)</a>
-		  </td>
-	        </tr>
-		<tr>
-		  <td bgcolor="#999999">
-                    <img src="images/windows-36.gif"><b>Windows installer</b>
-		  </td>
-		  <td>
- 		    No Windows Installer for 0.30.2 exist yet, you can download 
-		    version 0.30.0 for now:
-
-		    <a href="archive/0.30/windows/mono-0.30-win32-2.exe">Mono Setup</a>
-		    <a href="archive/0.30/windows/mono-0.30-gtksharp-0.15-win32-1.exe">Gtk# Setup</a>
-		  </td>
-		</tr>
-             </table>
-            </td>
-	</table>
-
-	<table>
-	  <tbody>
- 	  <tr bgcolor="#DDDDDD">
-	    <td>
-	      <b>Release 0.30.1</b><br>
-	      <a href="archive/mono-0.30.1.html">Release notes</a><br>
-	       Feb 13th, 2004
-	    </td>
-	    <td>
-	      <table cellspacing="1" cellpadding="3">
-		<tr bgcolor="#BBBBBB">
-		  <td>
-		    <b>Source Code</b>
-	          </td>
-		  <td>
-	 	    <ul>
-	 	      <li><a href="archive/mcs-0.30.1.tar.gz">Mono Class Libraries and C# Compiler 0.30.</a>
-	              <li><a href="archive/mono-0.30.1.tar.gz">Mono Runtime 0.30</a>
- 		      <li><a href="archive/xsp-0.9.tar.gz">XSP web server 0.9</a>
- 		      <li><a href="archive/mod_mono-0.7.tar.gz">Apache Mono module 0.7</a>
- 		      <li><a href="archive/monodoc-0.11.tar.gz">MonoDoc 0.11</a>
-		      <li><a href="archive/libgdiplus-0.1.tar.gz">libgdiplus 0.1</a>
-	            </ul>
-		  </td>
-	        </tr>
-		<tr bgcolor="#bbbbbb">
-		  <td bgcolor="#999999">
-                    <img src="images/redhat-36.gif"><b>Red Hat 9.0/x86</b><br>
-		  </td>
-  		  <td>
-		    <a href="archive/0.30.1/redhat-9-i386">Packages</a>
-		  </td>
-	        </tr>
-		<tr bgcolor="#bbbbbb">
-		  <td bgcolor="#999999">
-                    <img src="images/redhat-36.gif"><b>Fedora Core 1/x86</b><br>
-		  </td>
-  		  <td>
-		    <a href="archive/0.30.1/fedora-1-i386">Packages</a>
-		  </td>
-	        </tr>
-		<tr bgcolor="#bbbbbb">
-		  <td bgcolor="#999999">
-                    <img src="images/suse-36.gif"><b>SUSE 9/x86</b><br>
-		  </td>
-  		  <td>
-		    <a href="archive/0.30.1/suse-90-i586/">Packages</a>
-		  </td>
-	        </tr>
-		<tr bgcolor="#bbbbbb">
-		  <td bgcolor="#999999">
-                    <img src="images/debian-36.gif"><b>Debian Packages</b><br>
-		  </td>
-  		  <td>
-		    <a href="http://pkg-mono.alioth.debian.org/">Packages (third party provider)</a>
-		  </td>
-	        </tr>
-		<tr>
-		  <td bgcolor="#999999">
-                    <img src="images/windows-36.gif"><b>Windows installer</b>
-		  </td>
-		  <td>
- 		    No Windows Installer for 0.30.1 exist yet, you can download 
-		    version 0.30.0 for now:
-
-		    <a href="archive/0.30/windows/mono-0.30-win32-2.exe">Mono Setup</a>
-		    <a href="archive/0.30/windows/mono-0.30-gtksharp-0.15-win32-1.exe">Gtk# Setup</a>
-		  </td>
-		</tr>
-             </table>
-            </td>
-	</table>
-
-	<table>
-	  <tbody>
- 	  <tr bgcolor="#DDDDDD">
-	    <td>
-	      <b>Release 0.30</b><br>
-	      <a href="archive/mono-0.30.html">Release notes</a><br>
-	       Feb 2nd, 2004
-	    </td>
-	    <td>
-	      <table cellspacing="1" cellpadding="3">
-		<tr bgcolor="#BBBBBB">
-		  <td>
-		    <b>Source Code</b>
-	          </td>
-		  <td>
-	 	    <ul>
-	 	      <li><a href="archive/mcs-0.30.tar.gz">Mono Class Libraries and C# Compiler 0.30.</a>
-	              <li><a href="archive/mono-0.30.tar.gz">Mono Runtime 0.30</a>
- 		      <li><a href="archive/xsp-0.9.tar.gz">XSP web server 0.9</a>
- 		      <li><a href="archive/mod_mono-0.7.tar.gz">Apache Mono module 0.7</a>
- 		      <li><a href="archive/monodoc-0.10.tar.gz">MonoDoc 0.10</a>
-	            </ul>
-		  </td>
-	        </tr>
-		<tr bgcolor="#bbbbbb">
-		  <td bgcolor="#999999">
-                    <img src="images/redhat-36.gif"><b>Red Hat 9.0/x86</b><br>
-		  </td>
-  		  <td>
-		    <a href="archive/0.30/redhat-9-i386">Packages</a>
-		  </td>
-	        </tr>
-		<tr bgcolor="#bbbbbb">
-		  <td bgcolor="#999999">
-                    <img src="images/redhat-36.gif"><b>Fedora Core 1/x86</b><br>
-		  </td>
-  		  <td>
-		    <a href="archive/0.30/fedora-1-i386">Packages</a>
-		  </td>
-	        </tr>
-		<tr bgcolor="#bbbbbb">
-		  <td bgcolor="#999999">
-                    <img src="images/suse-36.gif"><b>SUSE 9/x86</b><br>
-		  </td>
-  		  <td>
-		    <a href="archive/0.30/suse-90-i586/">Packages</a>
-		  </td>
-	        </tr>
-		<tr bgcolor="#bbbbbb">
-		  <td bgcolor="#999999">
-                    <img src="images/debian-36.gif"><b>Debian Packages</b><br>
-		  </td>
-  		  <td>
-		    <a href="http://pkg-mono.alioth.debian.org/">Packages (third party provider)</a>
-		  </td>
-	        </tr>
-		<tr>
-		  <td bgcolor="#999999">
-                    <img src="images/windows-36.gif"><b>Windows installer</b>
-		  </td>
-		  <td>
-		    <a href="archive/0.30/windows/mono-0.30-win32-2.exe">Mono Setup</a>
-		    <a href="archive/0.30/windows/mono-0.30-gtksharp-0.15-win32-1.exe">Gtk# Setup</a>
-		  </td>
-		</tr>
-             </table>
-            </td>
-	</table>
-
-	<table>
-	  <tbody>
- 	  <tr bgcolor="#DDDDDD">
-	    <td>
-	      <b>Release 0.29</b><br>
-	      <a href="archive/mono-0.29.html">Release notes</a><br>
-	       Dec 2nd, 2003
-	    </td>
-	    <td>
-	      <table cellspacing="1" cellpadding="3">
-		<tr bgcolor="#BBBBBB">
-		  <td>
-		    <b>Source Code</b>
-	          </td>
-		  <td>
-	 	    <ul>
-	 	      <li><a href="archive/mcs-0.29.tar.gz">Mono Class Libraries and C# Compiler.</a>
-	              <li><a href="archive/mono-0.29.tar.gz">Mono Runtime</a>
- 		      <li><a href="archive/xsp-0.8.tar.gz">XSP web server (0.8)</a>
- 		      <li><a href="archive/mod_mono-0.6.tar.gz">Apache Mono module 0.6 (mod_mono)</a>
- 		      <li><a href="archive/monodoc-0.9.tar.gz">MonoDoc 0.9</a>                        
-	            </ul>
-		  </td>
-	        </tr>
-		<tr bgcolor="#bbbbbb">
-		  <td bgcolor="#999999">
-                    <img src="images/redhat-36.gif"><b>Red Hat 8.0, Red Hat 9.0/x86</b><br>
-		    <img src="images/mandrake-36.gif"><b>Mandrake 9.1/x86</b><br>
-                    <img src="images/suse-36.gif"><b>SuSE 8.2</b><br>
-		  </td>
-  		  <td>
-		    Packages are available on <a
-		    href="http://www.ximian.com/products/redcarpet/download.html">Red
-		    Carpet's</a> Mono channel. 
-
-		  </td>
-	        </tr>
-		<tr>
-		  <td bgcolor="#999999">
-                    <img src="images/windows-36.gif"><b>Windows installer</b>
-		  </td>
-		  <td>
-		    <a href="archive/mono-0.29-win32-1.exe">mono-0.29-win32-1.exe</a>
-		  </td>
-		</tr>
-             </table>
-            </td>
-	</table>
-
-	<table>
-	  <tbody>
- 	  <tr bgcolor="#DDDDDD">
-	    <td>
-	      <b>Release 0.28</b><br>
-	      <a href="archive/mono-0.28.html">Release notes</a><br>
-	       Oct 1st, 2003
-	    </td>
-	    <td>
-	      <table cellspacing="1" cellpadding="3">
-		<tr bgcolor="#BBBBBB">
-		  <td>
-		    <b>Source Code</b>
-	          </td>
-		  <td>
-	 	    <ul>
-	 	      <li><a href="archive/mcs-0.28.tar.gz">Mono Class Libraries and C# Compiler.</a>
-	              <li><a href="archive/mono-0.28.tar.gz">Mono Runtime</a>
- 		      <li><a href="archive/xsp-0.6.tar.gz">XSP web server (0.6)</a>
- 		      <li><a href="archive/mod_mono-0.5.tar.gz">Apache Mono module (mod_mono)</a>                        
- 		      <li><a href="archive/monodoc-0.7.tar.gz">MonoDoc 0.7</a>                        
-	            </ul>
-		  </td>
-	        </tr>
-	        <tr bgcolor="#BBBBBB">
-		  <td>
-		     <b>Source RPMs</b><br>
-		     (No RPMS for XSP).
-	          </td>
-		  <td>
-		    <ul>
-			<li><a href="archive/redhat-90-i386/mono-0.28-1.ximian.6.1.src.rpm">mono-0.28-1.src.rpm (RH9)</a>
-			<li><a href="archive/redhat-90-i386/mono-0.28-1.ximian.6.1.src.rpm">mono-0.28-1.src.rpm (RH8)</a>
-		    </ul>
-		  </td>
-	        </tr>
-		<tr>
-		 <td></td>
-	 	</tr>
-		<tr>
-                  <td bgcolor="#999999">
-                    <img src="images/redhat-36.gif"><b>Red Hat 9.0/x86</b>
-                    <ul>
-                      <li><a href="archive/redhat-90-i386/mono-0.28-1.ximian.6.1.i386.rpm">mono-0.28-1.ximian.6.1.i386.rpm</a>
-                      <li><a href="archive/redhat-90-i386/mono-devel-0.28-1.ximian.6.1.i386.rpm">mono-devel-0.28-1.ximian.6.1.i386.rpm</a>
-                      <li><a href="archive/redhat-90-i386/mono-debuginfo-0.28-1.ximian.6.1.i386.rpm">mono-debuginfo-0.28-1.i386.rpm</a>
-		      <br>
-		      <li><a href="archive/redhat-90-i386/mono-wine-20030318-1.ximian.6.4.i386.rpm">mono-wine-20030318-1.ximian.6.4.i386.rpm</a>
-		      <li><a href="archive/redhat-90-i386/mono-wine-debuginfo-20030318-1.ximian.6.4.i386.rpm">mono-wine-debuginfo-20030318-1.ximian.6.4.i386.rpm</a>
-		    </ul>
-                  </td>
-                  <td bgcolor="#999999">
-                    <img src="images/redhat-36.gif"><b>Red Hat 8.0/x86</b>
-                    <ul>
-                      <li><a href="archive/redhat-80-i386/mono-0.28-1.ximian.5.1.i386.rpm">mono-0.28-1.ximian.5.1.i386.rpm</a>
-                      <li><a href="archive/redhat-80-i386/mono-devel-0.28-1.ximian.5.1.i386.rpm">mono-devel-0.28-1.ximian.5.1.i386.rpm</a>
-	 	      <br>
-                      <li><a href="archive/redhat-80-i386/mono-wine-20030318-1.ximian.5.3.i386.rpm">mono-wine-20030318-1.ximian.5.3.i386.rpm</a>
-                    </ul>
-                  </td>
-		</tr>
-
-  		<tr> 
-		  <td bgcolor="#999999">
-		    <img src="images/mandrake-36.gif"><b>Mandrake 9.1/x86</b>
-                    <ul>
-		      <li><a href="archive/mandrake-91-i586/mono-0.28-1.ximian.6.1.i586.rpm">mono-0.28-1.ximian.6.1.i586.rpm</a>
-		      <li><a href="archive/mandrake-91-i586/mono-devel-0.28-1.ximian.6.1.i586.rpm">mono-devel-0.28-1.ximian.6.1.i586.rpm</a>
-		    </ul>
-		  </td>
-		  <td bgcolor="#999999">
-		    <b>Linux s390</b>
-                    <ul>
-                      <li><a href="archive/s390/libgc-6.1-1.s390.rpm">libgc-6.1-1.s390.rpm</a>
-                      <li><a href="archive/s390/libgc-devel-6.1-1.s390.rpm">libgc-devel-6.1-1.s390.rpm</a>
-		      <li><a href="archive/s390/mono-0.28-1.s390.rpm">mono-0.28-1.s390.rpm</a>
-		      <li><a href="archive/s390/mono-devel-0.28-1.s390.rpm">mono-devel-0.28-1.s390.rpm</a>
-		    </ul>
-		  </td>
-  		</tr>
-                <tr>
-                  <td bgcolor="#999999">
-                    <img src="images/suse-36.gif"><b>SuSE 8.2</b>
-                      <ul>
-                        <li><a href="archive/suse-82-i586/mono-0.28-1.ximian.7.1.i586.rpm">mono-0.28-1.ximian.7.1.i586.rpm</a>
-                        <li><a href="archive/suse-82-i586/mono-devel-0.28-1.ximian.7.1.i586.rpm">mono-devel-0.28-1.ximian.7.1.i586.rpm</a>
-                     </ul>
-                   </td>
-                  <td bgcolor="#999999">
-                    <img src="images/windows-36.gif"><b>Windows installer</b>
-                      <ul>
-                        <li><a href="archive/mono-0.28-win32-1.exe">mono-0.28-win32-1.exe</a>
-                     </ul>
-                   </td>
-                 </tr>
-             </table>
-            </td>
-	</table>
-                    
-	<table>
-	  <tbody>
- 	  <tr bgcolor="#DDDDDD">
-	    <td>
-	      <b>Release 0.26</b><br>
-	      <a href="archive/mono-0.26.html">Release notes</a><br>
-	       Aug 14, 2003
-	    </td>
-	    <td>
-	      <table cellspacing="1" cellpadding="3">
-		<tr bgcolor="#BBBBBB">
-		  <td>
-		    <b>Source Code</b>
-	          </td>
-		  <td>
-	 	    <ul>
-	 	      <li><a href="archive/mcs-0.26.tar.gz">Mono Class Libraries and C# Compiler.</a>
-	              <li><a href="archive/mono-0.26.tar.gz">Mono Runtime</a>
- 		      <li><a href="archive/xsp-0.5.tar.gz">XSP web server (0.5)</a>
- 		      <li><a href="archive/mod_mono-0.4.tar.gz">Apache Mono module (mod_mono)</a>                        
-		      <li><a href="archive/monodoc-0.6.tar.gz">MonoDoc 0.6</a>
-	            </ul>
-		  </td>
-	        </tr>
-	        <tr bgcolor="#BBBBBB">
-		  <td>
-		     <b>Source RPMs</b><br>
-		     (No RPMS for XSP).
-	          </td>
-		  <td>
-		    <ul>
-			<li><a href="archive/redhat-90-i386/mono-0.26-1.ximian.6.1.src.rpm">mono-0.26-1.src.rpm (RH9)</a>
-			<li><a href="archive/redhat-90-i386/mono-0.26-1.ximian.6.1.src.rpm">mono-0.26-1.src.rpm (RH8)</a>
-		    </ul>
-		  </td>
-	        </tr>
-		<tr>
-		 <td></td>
-	 	</tr>
-		<tr>
-                  <td bgcolor="#999999">
-                    <img src="images/redhat-36.gif"><b>Red Hat 9.0/x86</b>
-                    <ul>
-                      <li><a href="archive/redhat-90-i386/mono-0.26-1.ximian.6.1.i386.rpm">mono-0.26-1.ximian.6.1.i386.rpm</a>
-                      <li><a href="archive/redhat-90-i386/mono-devel-0.26-1.ximian.6.1.i386.rpm">mono-devel-0.26-1.ximian.6.1.i386.rpm</a>
-                      <li><a href="archive/redhat-90-i386/mono-debuginfo-0.26-1.ximian.6.1.i386.rpm">mono-debuginfo-0.26-1.i386.rpm</a>
-	 	      <br>
-                      <li><a href="archive/redhat-90-i386/libpixregion-0.1.0-1.ximian.6.1.i386.rpm">libpixregion-0.1.0-1.ximian.6.1.i386.rpm</a>
-                      <li><a href="archive/redhat-90-i386/libpixregion-debuginfo-0.1.0-1.ximian.6.1.i386.rpm">libpixregion-debuginfo-0.1.0-1.ximian.6.1.i386.rpm</a>
-                      <li><a href="archive/redhat-90-i386/libic-0.1.0-1.ximian.6.1.i386.rpm">libic-0.1.0-1.ximian.6.1.i386.rpm</a>
-                      <li><a href="archive/redhat-90-i386/libic-debuginfo-0.1.0-1.ximian.6.1.i386.rpm">libic-debuginfo-0.1.0-1.ximian.6.1.i386.rpm</a>
-                      <li><a href="archive/redhat-90-i386/xc-0.1.0-1.ximian.6.1.i386.rpm">xc-0.1.0-1.ximian.6.1.i386.rpm</a>
-                      <li><a href="archive/redhat-90-i386/xc-debuginfo-0.1.0-1.ximian.6.1.i386.rpm">xc-debuginfo-0.1.0-1.ximian.6.1.i386.rpm</a>
-                      <li><a href="archive/redhat-90-i386/xr-0.1.0-1.ximian.6.1.i386.rpm">xr-0.1.0-1.ximian.6.1.i386.rpm</a>
-                      <li><a href="archive/redhat-90-i386/xr-debuginfo-0.1.0-1.ximian.6.1.i386.rpm">xr-debuginfo-0.1.0-1.ximian.6.1.i386.rpm</a>
-                      <br>
-		      <li><a href="archive/redhat-90-i386/monodoc-0.6-1.ximian.6.1.i386.rpm">monodoc-0.6-1.ximian.6.1.i386.rpm</a> (To be used only with CVS gtk-sharp)                        
-                      <li><a href="archive/redhat-90-i386/monodoc-debuginfo-0.5-1.ximian.6.1.i386.rpm">monodoc-debuginfo-0.5-1.ximian.6.1.i386.rpm</a>
-                      <li><a href="archive/redhat-90-i386/mono-wine-20030318-1.ximian.6.3.i386.rpm">mono-wine-20030318-1.ximian.6.3.i386.rpm</a>
-                      <li><a href="archive/redhat-90-i386/mono-wine-debuginfo-20030318-1.ximian.6.3.i386.rpm">mono-wine-debuginfo-20030318-1.ximian.6.3.i386.rpm</a>
-                    </ul>
-                  </td>
-                  <td bgcolor="#999999">
-                    <img src="images/redhat-36.gif"><b>Red Hat 8.0/x86</b>
-                    <ul>
-                      <li><a href="archive/redhat-80-i386/mono-0.26-2.ximian.5.1.i386.rpm">mono-0.26-2.ximian.5.1.i386.rpm</a>
-                      <li><a href="archive/redhat-80-i386/mono-devel-0.26-2.ximian.5.1.i386.rpm">mono-devel-0.26-2.ximian.5.1.i386.rpm</a>
-	 	      <br>
-                      <li><a href="archive/redhat-80-i386/monodoc-0.5-1.ximian.5.1.i386.rpm">monodoc-0.5-1.ximian.5.1.i386.rpm</a> (To be used only with CVS gtk-sharp)
-                      <li><a href="archive/redhat-80-i386/mono-wine-20030318-1.ximian.5.3.i386.rpm">mono-wine-20030318-1.ximian.5.3.i386.rpm</a>
-                    </ul>
-                  </td>
-		</tr>
-
-  		<tr> 
-                  <td bgcolor="#999999">
-                    <img src="images/debian-36.gif"><b>Debian</b>
-                    <ul>
-                        <li><a href="http://www.debianplanet.com/mono/">Debian Packages here.</a>
-                    </ul>
-                  </td>
-		  <td bgcolor="#999999">
-		    <img src="images/mandrake-36.gif"><b>Mandrake 9.1/x86</b>
-                    <ul>
-		      <li><a href="archive/mandrake-91-i586/mono-0.26-1.ximian.6.1.i586.rpm">mono-0.26-1.ximian.6.1.i586.rpm</a>
-		      <li><a href="archive/mandrake-91-i586/mono-devel-0.26-1.ximian.6.1.i586.rpm">mono-devel-0.26-1.ximian.6.1.i586.rpm</a>
-<!-- 		      <li><a href="archive/mandrake-91-i586/monodoc-0.5-1.ximian.6.1.i586.rpm">monodoc-0.5-1.ximian.6.1.i586.rpm</a> -->
-		    </ul>
-		  </td>
-  		</tr>
-                <tr>
-                  <td bgcolor="#999999">
-                    <img src="images/suse-36.gif"><b>SuSE 8.2</b>
-                      <ul>
-                        <li><a href="archive/suse-82-i586/mono-0.26-2.ximian.7.1.i586.rpm">mono-0.26-2.ximian.7.1.i586.rpm</a>
-                        <li><a href="archive/suse-82-i586/mono-devel-0.26-2.ximian.7.1.i586.rpm">mono-devel-0.26-2.ximian.7.1.i586.rpm</a>
-                     </ul>
-                   </td>
-                  <td bgcolor="#999999">
-                    <img src="images/windows-36.gif"><b>Windows installer</b>
-                      <ul>
-                        <li><a href="archive/mono-0.26-win32-2.exe">mono-0.26-win32-2.exe</a>
-                     </ul>
-                   </td>
-                 </tr>
-             </table>
-            </td>
-	</table>
-	<table>
-	  <tbody>
- 	  <tr bgcolor="#DDDDDD">
-	    <td>
-	      <b>Release 0.25</b><br>
-	      <a href="archive/mono-0.25.html">Release notes</a><br>
-	       Jun 26, 2003
-	    </td>
-	    <td>
-	      <table cellspacing="1" cellpadding="3">
-		<tr bgcolor="#BBBBBB">
-		  <td>
-		    <b>Source Code</b>
-	          </td>
-		  <td>
-	 	    <ul>
-	 	      <li><a href="archive/mcs-0.25.tar.gz">Mono Class Libraries and C# Compiler.</a>
-	              <li><a href="archive/mono-0.25.tar.gz">Mono Runtime</a>
- 		      <li><a href="archive/xsp-0.4.tar.gz">XSP web server (0.4)</a>
-		      <li><a href="archive/monodoc-0.5.tar.gz">MonoDoc 0.5</a>
-		      <li><a href="archive/gtk-sharp-0.11.tar.gz">Gtk# 0.11</a>
-	            </ul>
-		  </td>
-	        </tr>
-	        <tr bgcolor="#BBBBBB">
-		  <td>
-		     <b>Source RPMs</b><br>
-		     (No RPMS for XSP).
-	          </td>
-		  <td>
-		    <ul>
-			<li><a href="archive/redhat-80-i386/mono-0.25-1.ximian.5.1.src.rpm">mono-0.25-1.src.rpm</a>
-		    </ul>
-		  </td>
-	        </tr>
-		<tr>
-		 <td></td>
-	 	</tr>
-
-		<tr>
-                  <td bgcolor="#999999">
-                    <img src="images/redhat-36.gif"><b>Red Hat 9.0/x86</b>
-                    <ul>
-                      <li><a href="archive/redhat-90-i386/mono-0.25-1.ximian.6.1.i386.rpm">mono-0.25-1.ximian.6.1.i386.rpm</a>
-                      <li><a href="archive/redhat-90-i386/mono-devel-0.25-1.ximian.6.1.i386.rpm">mono-devel-0.25-1.ximian.6.1.i386.rpm</a>
-                      <li><a href="archive/redhat-90-i386/mono-debuginfo-0.25-1.ximian.6.1.i386.rpm">mono-debuginfo-0.25-1.i386.rpm</a>
-	 	      <br>
-                      <li><a href="archive/redhat-90-i386/libpixregion-0.1.0-1.ximian.6.1.i386.rpm">libpixregion-0.1.0-1.ximian.6.1.i386.rpm</a>
-                      <li><a href="archive/redhat-90-i386/libpixregion-debuginfo-0.1.0-1.ximian.6.1.i386.rpm">libpixregion-debuginfo-0.1.0-1.ximian.6.1.i386.rpm</a>
-                      <li><a href="archive/redhat-90-i386/libic-0.1.0-1.ximian.6.1.i386.rpm">libic-0.1.0-1.ximian.6.1.i386.rpm</a>
-                      <li><a href="archive/redhat-90-i386/libic-debuginfo-0.1.0-1.ximian.6.1.i386.rpm">libic-debuginfo-0.1.0-1.ximian.6.1.i386.rpm</a>
-                      <li><a href="archive/redhat-90-i386/xc-0.1.0-1.ximian.6.1.i386.rpm">xc-0.1.0-1.ximian.6.1.i386.rpm</a>
-                      <li><a href="archive/redhat-90-i386/xc-debuginfo-0.1.0-1.ximian.6.1.i386.rpm">xc-debuginfo-0.1.0-1.ximian.6.1.i386.rpm</a>
-                      <li><a href="archive/redhat-90-i386/xr-0.1.0-1.ximian.6.1.i386.rpm">xr-0.1.0-1.ximian.6.1.i386.rpm</a>
-                      <li><a href="archive/redhat-90-i386/xr-debuginfo-0.1.0-1.ximian.6.1.i386.rpm">xr-debuginfo-0.1.0-1.ximian.6.1.i386.rpm</a>
-                      <br>
-                      <li><a href="archive/redhat-90-i386/gtk-sharp-0.10-1.ximian.6.1.i386.rpm">gtk-sharp-0.10-1.ximian.6.1.i386.rpm</a>
-		      <li><a href="archive/redhat-90-i386/gtk-sharp-gapi-0.10-1.ximian.6.1.i386.rpm">gtk-sharp-gapi-0.10-1.ximian.6.1.i386.rpm</a>
-		      <li><a href="archive/redhat-90-i386/gtk-sharp-debuginfo-0.10-1.ximian.6.1.i386.rpm">gtk-sharp-debuginfo-0.10-1.ximian.6.1.i386.rpm</a>
-                      <br>
-		      <li><a href="archive/redhat-90-i386/monodoc-0.5-1.ximian.6.1.i386.rpm">monodoc-0.5-1.ximian.6.1.i386.rpm</a>
-                      <li><a href="archive/redhat-90-i386/monodoc-debuginfo-0.5-1.ximian.6.1.i386.rpm">monodoc-debuginfo-0.5-1.ximian.6.1.i386.rpm</a>
-                      <li><a href="archive/mono-wine-20030318-1.ximian.6.2.i386.rpm">mono-wine-20030318-1.ximian.6.2.i386.rpm</a>
-                      <li><a href="archive/mono-wine-debuginfo-20030318-1.ximian.6.2.i386.rpm">mono-wine-debuginfo-20030318-1.ximian.6.2.i386.rpm</a>
-                    </ul>
-                  </td>
-                  <td bgcolor="#999999">
-                    <img src="images/redhat-36.gif"><b>Red Hat 8.0/x86</b>
-                    <ul>
-                      <li><a href="archive/redhat-80-i386/mono-0.25-1.ximian.5.1.i386.rpm">mono-0.25-1.ximian.5.1.i386.rpm</a>
-                      <li><a href="archive/redhat-80-i386/mono-devel-0.25-1.ximian.5.1.i386.rpm">mono-devel-0.25-1.ximian.5.1.i386.rpm</a>
-	 	      <br>
-                      <li><a href="archive/redhat-80-i386/gtk-sharp-0.10-1.ximian.5.1.i386.rpm">gtk-sharp-0.10-1.ximian.5.1.i386.rpm</a>
-                      <li><a href="archive/redhat-80-i386/gtk-sharp-gapi-0.10-1.ximian.5.1.i386.rpm">gtk-sharp-gapi-0.10-1.ximian.5.1.i386.rpm</a>
-                      <li><a href="archive/redhat-80-i386/monodoc-0.5-1.ximian.5.1.i386.rpm">monodoc-0.5-1.ximian.5.1.i386.rpm</a>
-                      <li><a href="archive/mono-wine-20030318-1.ximian.5.2.i386.rpm">mono-wine-20030318-1.ximian.5.2.i386.rpm</a>
-                    </ul>
-                  </td>
-		</tr>
-
-  		<tr> 
-                  <td bgcolor="#999999">
-                    <img src="images/debian-36.gif"><b>Debian</b>
-                    <ul>
-                        <li><a href="http://www.debianplanet.com/mono/">Debian Packages here.</a>
-                    </ul>
-                  </td>
-  		  <td bgcolor="#999999">
- 		    <img src="images/windows-36.gif"><b>Windows Setup Wizard (XP, 2000, NT)</b> 
- 		    <ul>
- 	              <li><a href="archive/mono-0.25-win32-1.exe">Setup program.</a>
- 	            </ul>
-  	          </td>
-  		</tr>
-
-		<tr>
-		  <td bgcolor="#999999">
-		    <img src="images/redhat-36.gif"><b>Red Hat 7.3/x86</b>
-                    <ul>
-		      <li><a href="archive/redhat-73-i386/mono-0.25-1.ximian.4.1.i386.rpm">mono-0.25-1.ximian.4.1.i386.rpm</a>
-		      <li><a href="archive/redhat-73-i386/mono-devel-0.25-1.ximian.4.1.i386.rpm">mono-devel-0.25-1.ximian.4.1.i386.rpm</a>
-		    </ul>
-		  </td>
-		  <td bgcolor="#999999">
-		    <img src="images/mandrake-36.gif"><b>Mandrake 9.1/x86</b>
-                    <ul>
-		      <li><a href="archive/mandrake-91-i586/mono-0.25-1.ximian.6.1.i586.rpm">mono-0.25-1.ximian.6.1.i586.rpm</a>
-		      <li><a href="archive/mandrake-91-i586/mono-devel-0.25-1.ximian.6.1.i586.rpm">mono-devel-0.25-1.ximian.6.1.i586.rpm</a>
-                      <li><a href="archive/mandrake-91-i586/gtk-sharp-0.10-1.ximian.6.1.i586.rpm">gtk-sharp-0.10-1.ximian.6.1.i586.rpm</a>
-		      <li><a href="archive/mandrake-91-i586/gtk-sharp-gapi-0.10-1.ximian.6.1.i586.rpm">gtk-sharp-gapi-0.10-1.ximian.6.1.i586.rpm</a>
-		      <li><a href="archive/mandrake-91-i586/monodoc-0.5-1.ximian.6.1.i586.rpm">monodoc-0.5-1.ximian.6.1.i586.rpm</a>
-		    </ul>
-		  </td>
-		</tr>
-
-                    <!--
-                        We don't have SuSE packages right now
-                      -->
-<!-- 		<tr> -->
-<!--  		  <td bgcolor="#999999">  -->
-<!-- 		     <img src="images/suse-36.gif"><b>SuSE 8.2/x86</b>  -->
-<!--                      <ul>  -->
-<!--  			<li><a href="archive/suse-80-i386/mono-0.25-1.i386.rpm">mono-0.25-1.i386.rpm</a>  -->
-<!--  			<li><a href="archive/suse-80-i386/mono-devel-0.25-1.i386.rpm">mono-devel-0.25-1.i386.rpm</a>  -->
-<!--  		    </ul> -->
-<!--  	          </td> -->
-<!-- 	        </tr> -->
-	      </table>
-	    </td>
-	  </tr>
-	  <tr>
-	    <tr bgcolor="#CCCCC">
-	    <td>
-	      <b>Regression Tests</b><br>
-	    </td>
-	    <td>
-		You can get binaries for the Mono Regression Test
-		Suite <a href="archive/mono-tests.tar.gz">here</a>
-	    </td>
-	  </tr>
-	  </tr>
-	  </tbody>
-	</table>
-
-
-* Older Releases:
-
-	We provide binaries for older releases until we have packages for the new release.
-
-
-	<table>
-	  <tbody>
- 	  <tr bgcolor="#DDDDDD">
-	    <td>
-	      <b>Release 0.24</b><br>
-	      <a href="archive/mono-0.24.html">Release notes</a><br>
-	       May 6, 2003
-	    </td>
-	    <td>
-	      <table cellspacing="1" cellpadding="3">
-		<tr bgcolor="#BBBBBB">
-		  <td>
-		    <b>Source Code</b>
-	          </td>
-		  <td>
-	 	    <ul>
-	 	      <li><a href="archive/mcs-0.24.tar.gz">Mono Class Libraries and C# Compiler.</a>
-	              <li><a href="archive/mono-0.24.tar.gz">Mono Runtime</a>
-		      <li><a href="archive/gc6.1.tar.gz">Boehm GC 6.1</a>
- 		      <li><a href="archive/xsp-0.4.tar.gz">XSP web server (0.4)</a>
-		      <li><a href="archive/monodoc-0.4.tar.gz">MonoDoc 0.4</a>
-		      <li><a href="archive/gtk-sharp-0.9.tar.gz">Gtk# 0.9</a>
-	            </ul>
-		  </td>
-	        </tr>
-	        <tr bgcolor="#BBBBBB">
-		  <td>
-		     <b>Source RPMs</b><br>
-		     (No RPMS for XSP).
-	          </td>
-		  <td>
-		    <ul>
-			<li><a href="archive/libgc-6.1-1.src.rpm">libgc-6.1-1.src.rpm</a>
-			<li><a href="archive/mono-0.24-1.src.rpm">mono-0.24-1.src.rpm</a>
-		    </ul>
-		  </td>
-	        </tr>
-		<tr>
-		 <td></td>
-	 	</tr>
-
-		<tr>
-                  <td bgcolor="#999999">
-                    <img src="images/redhat-36.gif"><b>Red Hat 9.0/x86</b>
-                    <ul>
-                        <li><a href="archive/redhat-90-i386/libgc-6.1-1.i386.rpm">libgc-6.1-1.i386.rpm</a>
-                        <li><a href="archive/redhat-90-i386/libgc-devel-6.1-1.i386.rpm">libgc-devel-6.1-1.i386.rpm</a>
-                        <li><a href="archive/redhat-90-i386/mono-0.24-1.i386.rpm">mono-0.24-1.i386.rpm</a>
-                        <li><a href="archive/redhat-90-i386/mono-devel-0.24-1.i386.rpm">mono-devel-0.24-1.i386.rpm</a>
-                        <li><a href="archive/redhat-90-i386/mono-debuginfo-0.24-1.i386.rpm">mono-debuginfo-0.24-1.i386.rpm</a>
-		 	<br>
-			<li><a href="archive/redhat-90-i386/gtk-sharp-0.9-1.i386.rpm">gtk-sharp-0.9-1.i386.rpm</a>
-			<li><a href="archive/redhat-90-i386/gtk-sharp-debuginfo-0.9-1.i386.rpm">gtk-sharp-debuginfo-0.9-1.i386.rpm</a>
-			<li><a href="archive/redhat-90-i386/monodoc-0.4-1.i386.rpm">monodoc-0.4-1.i386.rpm</a>
-                    </ul>
-                  </td>
-                  <td bgcolor="#999999">
-                    <img src="images/redhat-36.gif"><b>Red Hat 8.0/x86</b>
-                    <ul>
-                        <li><a href="archive/redhat-80-i386/libgc-6.1-1.i386.rpm">libgc-6.1-1.i386.rpm</a>
-                        <li><a href="archive/redhat-80-i386/libgc-devel-6.1-1.i386.rpm">libgc-devel-6.1-1.i386.rpm</a>
-                        <li><a href="archive/redhat-80-i386/mono-0.24-2.i386.rpm">mono-0.24-2.i386.rpm</a>
-                        <li><a href="archive/redhat-80-i386/mono-devel-0.24-2.i386.rpm">mono-devel-0.24-2.i386.rpm</a>
-		 	<br>
-			<li><a href="archive/redhat-80-i386/gtk-sharp-0.9-1.i386.rpm">gtk-sharp-0.9-1.i386.rpm</a>
-			<li><a href="archive/redhat-80-i386/monodoc-0.4-1.i386.rpm">monodoc-0.4-1.i386.rpm</a>
-                    </ul>
-                  </td>
-		</tr>
-
-  		<tr> 
-                  <td bgcolor="#999999">
-                    <img src="images/debian-36.gif"><b>Debian</b>
-                    <ul>
-                        <li><a href="http://www.debianplanet.com/mono/">Debian Packages here.</a>
-                    </ul>
-                  </td>
-  		  <td bgcolor="#999999">
- 		    <img src="images/windows-36.gif"><b>Windows Setup Wizard (XP, 2000, NT)</b> 
- 		    <ul>
- 	              <li><a href="archive/mono-0.24-win32-1.exe">Setup program.</a>
- 	            </ul>
-  	          </td>
-  		</tr>
-
-		<tr>
-		  <td bgcolor="#999999">
-		    <img src="images/redhat-36.gif"><b>Red Hat 7.3/x86</b>
-                    <ul>
-			<li><a href="archive/redhat-73-i386/libgc-6.1-1.i386.rpm">libgc-6.1-1.i386.rpm</a>
-			<li><a href="archive/redhat-73-i386/libgc-devel-6.1-1.i386.rpm">libgc-devel-6.1-1.i386.rpm</a>
-			<li><a href="archive/redhat-73-i386/mono-0.24-1.i386.rpm">mono-0.24-1.i386.rpm</a>
-			<li><a href="archive/redhat-73-i386/mono-devel-0.24-1.i386.rpm">mono-devel-0.24-1.i386.rpm</a>
-		    </ul>
-		  </td>
-		  <td bgcolor="#999999">
-		    <img src="images/mandrake-36.gif"><b>Mandrake 8.2/x86</b>
-                    <ul>
-			<li><a href="archive/mandrake-82-i386/libgc-6.1-1.i586.rpm">libgc-6.1-1.i586.rpm</a>
-			<li><a href="archive/mandrake-82-i386/libgc-devel-6.1-1.i586.rpm">libgc-devel-6.1-1.i586.rpm</a>
-			<li><a href="archive/mandrake-82-i386/mono-0.24-1.i586.rpm">mono-0.24-1.i586.rpm</a>
-			<li><a href="archive/mandrake-82-i386/mono-devel-0.24-1.i586.rpm">mono-devel-0.24-1.i586.rpm</a>
-		    </ul>
-		  </td>
-		</tr>
-
-		<tr>
- 		  <td bgcolor="#999999"> 
-		     <img src="images/suse-36.gif"><b>SuSE 8.0/x86</b> 
-                     <ul> 
- 			<li><a href="archive/suse-80-i386/libgc-6.1-1.i386.rpm">libgc-6.1-1.i386.rpm</a> 
- 			<li><a href="archive/suse-80-i386/libgc-devel-6.1-1.i386.rpm">libgc-devel-6.1-1.i386.rpm</a> 
- 			<li><a href="archive/suse-80-i386/mono-0.24-1.i386.rpm">mono-0.24-1.i386.rpm</a> 
- 			<li><a href="archive/suse-80-i386/mono-devel-0.24-1.i386.rpm">mono-devel-0.24-1.i386.rpm</a> 
- 		    </ul>
- 	          </td>
-	          <td bgcolor="#999999">
-		     <b>Linux s/390</b> 
-		     <ul>
-                        <li><a href="archive/s390/libgc-6.1-1.s390.rpm">libgc-6.1-1.s390.rpm</a>
-                        <li><a href="archive/s390/libgc-devel-6.1-1.s390.rpm">libgc-devel-6.1-1.s390.rpm</a>
-                        <li><a href="archive/s390/mono-0.24-1.s390.rpm">mono-0.24-1.s390.rpm</a>
-                        <li><a href="archive/s390/mono-devel-0.24-1.s390.rpm">mono-devel-0.24-1.s390.rpm</a>
-		     </ul>
-	          </td>
-	        </tr>
-
-	      </table>
-	    </td>
-	  </tr>
-	  <tr>
-	    <tr bgcolor="#CCCCC">
-	    <td>
-	      <b>Regression Tests</b><br>
-	    </td>
-	    <td>
-		You can get binaries for the Mono Regression Test
-		Suite <a href="archive/mono-tests.tar.gz">here</a>
-	    </td>
-	  </tr>
-	  </tr>
-	  </tbody>
-	</table>
-
-	<table>
-	  <tbody>
- 	  <tr bgcolor="#DDDDDD">
-	    <td>
-	      <b>Release 0.23</b><br>
-	      <a href="archive/mono-0.23">Release notes</a><br>
-	       March 5, 2003
-	    </td>
-	    <td>
-	      <table cellspacing="1" cellpadding="3">
-		<tr bgcolor="#BBBBBB">
-		  <td>
-		    <b>Source Code</b>
-	          </td>
-		  <td>
-	 	    <ul>
-	 	      <li><a href="archive/mcs-0.23.tar.gz">Mono Class Libraries and C# Compiler.</a>
-	              <li><a href="archive/mono-0.23.tar.gz">Mono Runtime</a>
-		      <li><a href="archive/gc6.1.tar.gz">Boehm GC 6.1</a>
- 		      <li><a href="archive/xsp-0.3.tar.gz">XSP web server (0.3)</a>
-		      <li><a href="archive/mono-debugger-0.2.2.tar.gz">Mono Debugger 0.2.2</a>
-	            </ul>
-		  </td>
-	        </tr>
-	        <tr bgcolor="#BBBBBB">
-		  <td>
-		     <b>Source RPMs</b><br>
-		     (No RPMS for XSP).
-	          </td>
-		  <td>
-		    <ul>
-			<li><a href="archive/libgc-6.1-1.src.rpm">libgc-6.1-1.src.rpm</a>
-			<li><a href="archive/mono-0.23-1.src.rpm">mono-0.23-1.src.rpm</a>
-		    </ul>
-		  </td>
-	        </tr>
-		<tr>
-		 <td></td>
-	 	</tr>
-		<tr>
-		  <td bgcolor="#999999">
-		    <b>Red Hat 7.3/x86</b>
-                    <ul>
-			<li><a href="archive/redhat-73-i386/libgc-6.1-1.i386.rpm">libgc-6.1-1.i386.rpm</a>
-			<li><a href="archive/redhat-73-i386/libgc-devel-6.1-1.i386.rpm">libgc-devel-6.1-1.i386.rpm</a>
-			<li><a href="archive/redhat-73-i386/mono-0.23-1.i386.rpm">mono-0.23-1.i386.rpm</a>
-			<li><a href="archive/redhat-73-i386/mono-devel-0.23-1.i386.rpm">mono-devel-0.23-1.i386.rpm</a>
-		    </ul>
-		  </td>
-		  <td bgcolor="#999999">
-		    <b>Red Hat 7.2/x86</b>
-                    <ul>
-			<li><a href="archive/redhat-72-i386/libgc-6.1-1.i386.rpm">libgc-6.1-1.i386.rpm</a>
-			<li><a href="archive/redhat-72-i386/libgc-devel-6.1-1.i386.rpm">libgc-devel-6.1-1.i386.rpm</a>
-			<li><a href="archive/redhat-72-i386/mono-0.23-1.i386.rpm">mono-0.23-1.i386.rpm</a>
-			<li><a href="archive/redhat-72-i386/mono-devel-0.23-1.i386.rpm">mono-devel-0.23-1.i386.rpm</a>
-		    </ul>
-		  </td>
-		</tr>
-		<tr>
-		  <td bgcolor="#999999">
-		    <b>Red Hat 7.1/x86</b>
-                    <ul>
-			<li><a href="archive/redhat-71-i386/libgc-6.1-1.i386.rpm">libgc-6.1-1.i386.rpm</a>
-			<li><a href="archive/redhat-71-i386/libgc-devel-6.1-1.i386.rpm">libgc-devel-6.1-1.i386.rpm</a>
-			<li><a href="archive/redhat-71-i386/mono-0.23-1.i386.rpm">mono-0.23-1.i386.rpm</a>
-			<li><a href="archive/redhat-71-i386/mono-devel-0.23-1.i386.rpm">mono-devel-0.23-1.i386.rpm</a>
-		    </ul>
-		  </td>
-		  <td bgcolor="#999999">
-		    <b>Mandrake 8.2/x86</b>
-                    <ul>
-			<li><a href="archive/mandrake-82-i386/libgc-6.1-1.i586.rpm">libgc-6.1-1.i586.rpm</a>
-			<li><a href="archive/mandrake-82-i386/libgc-devel-6.1-1.i586.rpm">libgc-devel-6.1-1.i586.rpm</a>
-			<li><a href="archive/mandrake-82-i386/mono-0.23-1.i586.rpm">mono-0.23-1.i586.rpm</a>
-			<li><a href="archive/mandrake-82-i386/mono-devel-0.23-1.i586.rpm">mono-devel-0.23-1.i586.rpm</a>
-		    </ul>
-		  </td>
-	 	</tr>
-		<tr>
- 		  <td bgcolor="#999999"> 
- 		    <b>SuSE 8.0/x86</b> 
-                     <ul> 
- 			<li><a href="archive/suse-80-i386/libgc-6.1-1.i386.rpm">libgc-6.1-1.i386.rpm</a> 
- 			<li><a href="archive/suse-80-i386/libgc-devel-6.1-1.i386.rpm">libgc-devel-6.1-1.i386.rpm</a> 
- 			<li><a href="archive/suse-80-i386/mono-0.23-1.i386.rpm">mono-0.23-1.i386.rpm</a> 
- 			<li><a href="archive/suse-80-i386/mono-devel-0.23-1.i386.rpm">mono-devel-0.23-1.i386.rpm</a> 
- 		    </ul>
- 	          </td>
-                  <td bgcolor="#999999">
-                    <b>Red Hat 8.0/x86</b>
-                    <ul>
-                        <li><a href="archive/redhat-80-i386/libgc-6.1-1.i386.rpm">libgc-6.1-1.i386.rpm</a>
-                        <li><a href="archive/redhat-80-i386/libgc-devel-6.1-1.i386.rpm">libgc-devel-6.1-1.i386.rpm</a>
-                        <li><a href="archive/redhat-80-i386/mono-0.23-1.i386.rpm">mono-0.23-1.i386.rpm</a>
-                        <li><a href="archive/redhat-80-i386/mono-devel-0.23-1.i386.rpm">mono-devel-0.23-1.i386.rpm</a>
-                    </ul>
-                  </td>
-	        </tr>
-  		<tr> 
-  		  <td bgcolor="#999999">
- 		    <b>Windows Setup Wizard (NT/2000/XP)</b>
- 		    <ul>
- 	              <li><a href="archive/mono-0.23-win32-2.exe">Mono-Setup</a>
- 	            </ul>
-  	          </td>
-                  <td bgcolor="#999999">
-                    <b>Linux S/390</b>
-                    <ul>
-                        <li><a href="archive/s390/libgc-6.1-1.s390.rpm">libgc-6.1-1.s390.rpm</a>
-                        <li><a href="archive/s390/libgc-devel-6.1-1.s390.rpm">libgc-devel-6.1-1.s390.rpm</a>
-                        <li><a href="archive/s390/mono-0.23-1.s390.rpm">mono-0.23-1.s390.rpm</a>
-                        <li><a href="archive/s390/mono-devel-0.23-1.s390.rpm">mono-devel-0.23-1.s390.rpm</a>
-                    </ul>
-                  </td>
-  		</tr>
-	      </table>
-	    </td>
-	  </tr>
-	  <tr>
-	    <tr bgcolor="#CCCCC">
-	    <td>
-	      <b>Regression Tests</b><br>
-	    </td>
-	    <td>
-		You can get binaries for the Mono Regression Test
-		Suite <a href="archive/mono-tests.tar.gz">here</a>
-	    </td>
-	  </tr>
-	  </tr>
-	  </tbody>
-	</table>
-
-
-
-	<table>
-	  <tbody>
- 	  <tr bgcolor="#DDDDDD">
-	    <td>
-	      <b>Release 0.22</b><br>
-	      <a href="archive/mono-0.22">Release notes</a><br>
-	       March 5, 2003
-	    </td>
-	    <td>
-	      <table cellspacing="1" cellpadding="3">
-		<tr bgcolor="#BBBBBB">
-		  <td>
-		    <b>Source Code</b>
-	          </td>
-		  <td>
-	 	    <ul>
-	 	      <li><a href="archive/mcs-0.22.tar.gz">Mono Class Libraries and C# Compiler.</a>
-	              <li><a href="archive/mono-0.22.tar.gz">Mono Runtime</a>
-		      <li><a href="archive/gc6.1.tar.gz">Boehm GC 6.1</a>
- 		      <li><a href="archive/xsp-0.3.tar.gz">XSP web server (0.3)</a>
-	            </ul>
-		  </td>
-	        </tr>
-	        <tr bgcolor="#BBBBBB">
-		  <td>
-		     <b>Source RPMs</b><br>
-		     (No RPMS for XSP).
-	          </td>
-		  <td>
-		    <ul>
-			<li><a href="archive/libgc-6.1-1.src.rpm">libgc-6.1-1.src.rpm</a>
-			<li><a href="archive/mono-0.22-1.src.rpm">mono-0.22-1.src.rpm</a>
-		    </ul>
-		  </td>
-	        </tr>
-		<tr>
-		 <td></td>
-	 	</tr>
-  		<tr> 
-  		  <td bgcolor="#999999">
- 		    <b>Windows Setup Wizard (NT/2000/XP)</b>
- 		    <ul>
- 	              <li><a href="archive/mono-0.22-win32-1.exe">Mono-Setup</a>
- 	            </ul>
-  	          </td>
-  		</tr>
-	      </table>
-	    </td>
-	  </tr>
-	  <tr>
-	    <tr bgcolor="#CCCCC">
-	    <td>
-	      <b>Regression Tests</b><br>
-	    </td>
-	    <td>
-		You can get binaries for the Mono Regression Test
-		Suite <a href="archive/mono-tests.tar.gz">here</a>
-	    </td>
-	  </tr>
-	  </tr>
-	  </tbody>
-	</table>
-
-	<table>
-	  <tbody>
-	  <tr bgcolor="#DDDDDD">
-	    <td>
-	      <b>Release 0.21</b><br>
-	      <a href="archive/mono-0.21">Release notes</a><br>
-	      Feb 27th, 2003
-	    </td>
-	    <td>
-	      <table cellspacing="1" cellpadding="3">
-		<tr bgcolor="#BBBBBB">
-		  <td>
-		    <b>Source Code</b>
-	          </td>
-		  <td>
-	 	    <ul>
-	 	      <li><a href="archive/mcs-0.21.tar.gz">Mono Class Libraries and C# Compiler.</a>
-	              <li><a href="archive/mono-0.21.tar.gz">Mono Runtime</a>
-		      <li><a href="archive/gc6.1.tar.gz">Boehm GC 6.1</a>
-		      <li><a href="archive/xsp-0.3.tar.gz">XSP web server (0.3)</a>
-	            </ul>
-		  </td>
-	        </tr>
-	        <tr bgcolor="#BBBBBB">
-		  <td>
-		     <b>Source RPMs</b><br>
-		     (No RPMS for XSP).
-	          </td>
-		  <td>
-		    <ul>
-			<li><a href="archive/libgc-6.1-1.src.rpm">libgc-6.1-1.src.rpm</a>
-			<li><a href="archive/mono-0.21-1.src.rpm">mono-0.21-1.src.rpm</a>
-		    </ul>
-		  </td>
-	        </tr>
-		<tr>
-		 <td></td>
-	 	</tr>
-		<tr>
-		  <td bgcolor="#999999">
-		    <b>Debian packages</b>
-		    <ul>
-	              <li><a href="http://www.atoker.com/mono/">Alp's web site</a>
-	            </ul>
-	          </td>
-		</tr>
-	      </table>
-	    </td>
-	  </tr>
-	  <tr>
-	    <tr bgcolor="#CCCCC">
-	    <td>
-	      <b>Regression Tests</b><br>
-	    </td>
-	    <td>
-		You can get binaries for the Mono Regression Test
-		Suite <a href="archive/mono-tests.tar.gz">here</a>
-	    </td>
-	  </tr>
-	  </tr>
-	  </tbody>
-	</table>
-
-	<table>
-	  <tbody>
-	  <tr bgcolor="#DDDDDD">
-	    <td>
-	      <b>Release 0.20</b><br>
-	      <a href="archive/mono-0.20">Release notes</a><br>
-	      Feb 20th, 2003
-	    </td>
-	    <td>
-	      <table cellspacing="1" cellpadding="3">
-		<tr bgcolor="#BBBBBB">
-		  <td>
-		    <b>Source Code</b>
-	          </td>
-		  <td>
-	 	    <ul>
-	 	      <li><a href="archive/mcs-0.20.tar.gz">Mono Class Libraries and C# Compiler.</a>
-	              <li><a href="archive/mono-0.20.tar.gz">Mono Runtime</a>
-		      <li><a href="archive/gc6.1.tar.gz">Boehm GC 6.1</a>
-		      <li><a href="archive/xsp-0.3.tar.gz">XSP web server (0.3)</a>
-	            </ul>
-		  </td>
-	        </tr>
-	        <tr bgcolor="#BBBBBB">
-		  <td>
-		     <b>Source RPMs</b><br>
-		     (No RPMS for XSP).
-	          </td>
-		  <td>
-		    <ul>
-			<li><a href="archive/libgc-6.1-1.src.rpm">libgc-6.1-1.src.rpm</a>
-			<li><a href="archive/redhat-73-i386/mono-0.20-1.src.rpm">mono-0.20-1.src.rpm</a>
-		    </ul>
-		  </td>
-	        </tr>
-		<tr>
-		 <td></td>
-	 	</tr>
-		<tr>
-		  <td bgcolor="#999999">
-		    <b>Red Hat 8.0/x86</b>
-                <ul>
-			<li><a href="archive/redhat-80-i386/libgc-6.1-1.i386.rpm">libgc-6.1-1.i386.rpm</a>
-			<li><a href="archive/redhat-80-i386/libgc-devel-6.1-1.i386.rpm">libgc-devel-6.1-1.i386.rpm</a>
-			<li><a href="archive/redhat-80-i386/mono-0.20-1.i386.rpm">mono-0.20-1.i386.rpm</a>
-			<li><a href="archive/redhat-80-i386/mono-devel-0.20-1.i386.rpm">mono-devel-0.20-1.i386.rpm</a>
-		    </ul>
-	          </td>
-		  <td bgcolor="#999999">
-		    <b>Debian packages</b>
-		    <ul>
-	              <li><a href="http://www.atoker.com/mono/">Alp's web site</a>
-	            </ul>
-	          </td>
-	        </tr>
-		<tr>
-		  <td bgcolor="#999999">
-		    <b>Windows Setup Wizard (NT/2000/XP)</b>
-		    <ul>
-	              <li><a href="archive/mono-0.20-stable-win32-2.exe">Mono-Setup</a>
-	            </ul>
-	          </td>
-		</tr>
-	      </table>
-	    </td>
-	  </tr>
-	  <tr>
-	    <tr bgcolor="#CCCCC">
-	    <td>
-	      <b>Regression Tests</b><br>
-	    </td>
-	    <td>
-		You can get binaries for the Mono Regression Test
-		Suite <a href="archive/mono-tests.tar.gz">here</a>
-	    </td>
-	  </tr>
-	  </tr>
-	  </tbody>
-	</table>
-
-	<table>
-	  <tbody>
-	  <tr bgcolor="#DDDDDD">
-	    <td>
-	      <b>Release 0.19</b><br>
-	      <a href="archive/mono-0.19">Release notes</a><br>
-	      Jan 20th, 2003
-	    </td>
-	    <td>
-	      <table cellspacing="1" cellpadding="3">
-		<tr bgcolor="#BBBBBB">
-		  <td>
-		    <b>Source Code</b>
-	          </td>
-		  <td>
-	 	    <ul>
-	 	      <li><a href="archive/mcs-0.19.tar.gz">Mono Class Libraries and C# Compiler.</a>
-	              <li><a href="archive/mono-0.19.tar.gz">Mono Runtime</a>
-	            </ul>
-		  </td>
-	        </tr>
-	        <tr bgcolor="#BBBBBB">
-		  <td>
-		     <b>Source RPMs</b><br>
-		     (No RPMS for XSP).
-	          </td>
-		  <td>
-		    <ul>
-			<li><a href="archive/libgc-6.1-1.src.rpm">libgc-6.1-1.src.rpm</a>
-			<li><a href="archive/mono-0.19-1.src.rpm">mono-0.19-1.src.rpm</a>
-		    </ul>
-		  </td>
-	        </tr>
-		<tr>
-		 <td></td>
-	 	</tr>
-	      </table>
-	    </td>
-	  </tr>
-	  </tbody>
-	</table>
-
-	<table>
-	  <tbody>
-	  <tr bgcolor="#DDDDDD">
-	    <td>
-	      <b>Release 0.18</b><br>
-	      <a href="archive/mono-0.18">Release notes</a><br>
-	      Jan 12th, 2003
-	    </td>
-	    <td>
-	      <table cellspacing="1" cellpadding="3">
-		<tr bgcolor="#BBBBBB">
-		  <td>
-		    <b>Source Code</b>
-	          </td>
-		  <td>
-	 	    <ul>
-	 	      <li><a href="archive/mcs-0.18.tar.gz">Mono Class Libraries and C# Compiler.</a>
-	              <li><a href="archive/mono-0.18.tar.gz">Mono Runtime</a>
-		      <li><a href="archive/gc6.1.tar.gz">Boehm GC 6.1</a>
-		      <li><a href="archive/xsp-0.2.tar.gz">XSP web server</a> <b><font color="#dd0000">New!</font></b> 
-	            </ul>
-		  </td>
-	        </tr>
-	        <tr bgcolor="#BBBBBB">
-		  <td>
-		     <b>Source RPMs</b><br>
-		     (No RPMS for XSP).
-	          </td>
-		  <td>
-		    <ul>
-			<li><a href="archive/libgc-6.1-1.src.rpm">libgc-6.1-1.src.rpm</a>
-			<li><a href="archive/mono-0.18-1.src.rpm">mono-0.18-1.src.rpm</a>
-		    </ul>
-		  </td>
-	        </tr>
-		<tr>
-		 <td></td>
-	 	</tr>
-	      </table>
-	    </td>
-	  </tr>
-	  </tbody>
-	</table>
-
-	<table>
-	  <tbody>
-	  <tr bgcolor="#DDDDDD">
-	    <td>
-	      <b>Release 0.17</b><br>
-	      <a href="archive/mono-0.17">Release notes</a><br>
-	      Dec 9th, 2002.
-	    </td>
-	    <td>
-	      <table cellspacing="1" cellpadding="3">
-		<tr bgcolor="#BBBBBB">
-		  <td>
-		    <b>Source Code</b>
-	          </td>
-		  <td>
-	 	    <ul>
-	 	      <li><a href="archive/mcs-0.17.tar.gz">Mono Class Libraries and C# Compiler.</a>
-	              <li><a href="archive/mono-0.17.tar.gz">Mono Runtime</a>
-		      <li><a href="archive/gc6.1.tar.gz">Boehm GC 6.1</a>
-	            </ul>
-		  </td>
-	        </tr>
-	        <tr bgcolor="#BBBBBB">
-		  <td>
-		     <b>Source RPMs</b><br>
-		     (No RPMS for XSP).
-	          </td>
-		  <td>
-		    <ul>
-			<li><a href="archive/libgc-6.1-1.src.rpm">libgc-6.1-1.src.rpm</a>
-			<li><a href="archive/mono-0.17-2.src.rpm">mono-0.17-2.src.rpm</a>
-		    </ul>
-		  </td>
-	        </tr>
-		<tr>
-		  <td bgcolor="#999999">
-		    <b>Windows Setup Wizard (NT/2000/XP)</b>
-		    <ul>
-	              <li><a href="archive/mono-0.17-stable.exe">Mono-Setup</a>
-	            </ul>
-	          </td>
-		  <td bgcolor="#999999">
-		    <b>Debian packages</b>
-		    <ul>
-	              <li><a href="http://www.atoker.com/mono/">Alp's web site</a>
-	            </ul>
-	          </td>
-		</tr>
-	      </table>
-	    </td>
-	  </tr>
-	  </tr>
-	  </tbody>
-	</table>
-
-	<table>
-	  <tbody>
-	  <tr bgcolor="#DDDDDD">
-	    <td>
-	      <b>Release 0.16</b><br>
-	      <a href="archive/mono-0.16">Release notes</a><br>
-	      Oct 1st, 2002.
-	    </td>
-	    <td>
-	      <table cellspacing="1" cellpadding="3">
-		<tr bgcolor="#BBBBBB">
-		  <td>
-		    <b>Source Code</b>
-	          </td>
-		  <td>
-	 	    <ul>
-	 	      <li><a href="archive/mcs-0.16.tar.gz">Mono Class Libraries and C# Compiler.</a>
-	              <li><a href="archive/mono-0.16.tar.gz">Mono Runtime</a>
-		      <li><a href="archive/gc6.1.tar.gz">Boehm GC 6.1</a>
-	            </ul>
-		  </td>
-	        </tr>
-	        <tr bgcolor="#BBBBBB">
-		  <td>
-		     <b>Source RPMs</b>
-	          </td>
-		  <td>
-		    <ul>
-			<li><a href="archive/libgc-6.1-1.src.rpm">libgc-6.1-1.src.rpm</a>
-			<li><a href="archive/mono-0.16-1.src.rpm">mono-0.16-1.src.rpm</a>
-		    </ul>
-		  </td>
-	        </tr>
-		<tr>
-		 <td></td>
-	 	</tr>
-		<tr>
-		  <td bgcolor="#999999">
-		    <b>Linux s390</b>
-                <ul>
-			<li><a href="archive/s390/glib2-2.0.6-13.s390.rpm">glib2-2.0.6-13.s390.rpm</a>
-			<li><a href="archive/s390/glib2-devel-2.0.6-13.s390.rpm">glib2-devel-2.0.6-13.s390.rpm</a>
-			<li><a href="archive/s390/libgc-6.1alpha5-1.s390.rpm">libgc-6.1alpha5-1.s390.rpm</a>
-			<li><a href="archive/s390/libgc-devel-6.1alpha5-1.s390.rpm">libgc-devel-6.1alpha5-1.s390.rpm</a>
-			<li><a href="archive/s390/mono-0.16-1.s390.rpm">mono-0.16-1.s390.rpm</a>
-			<li><a href="archive/s390/mono-devel-0.16-1.s390.rpm">mono-devel-0.16-1.s390.rpm</a>
-		    </ul>
-	          </td>
-		</tr>
-	      </table>
-	    </td>
-	  </tr>
-	  <tr>
-	  </tr>
-	  </tr>
-	  </tbody>
-	</table>
-
-	<table>
-	  <tbody>
-	  <tr bgcolor="#DDDDDD">
-	    <td>
-	      <b>Release 0.15</b><br>
-	      <a href="archive/mono-0.15">Release notes</a><br>
-	      Aug 23rd, 2002.
-	    </td>
-	    <td>
-	      <table cellspacing="1" cellpadding="3">
-		<tr bgcolor="#BBBBBB">
-		  <td>
-		    <b>Source Code</b>
-	          </td>
-		  <td>
-	 	    <ul>
-	 	      <li><a href="archive/mcs-0.15.tar.gz">Mono Class Libraries and C# Compiler.</a>
-	              <li><a href="archive/mono-0.15.tar.gz">Mono Runtime</a>
-		      <li><a href="archive/gc6.1alpha5.tar.gz">Boehm GC 6.1alpha5</a>
-	            </ul>
-		  </td>
-	        </tr>
-	        <tr bgcolor="#BBBBBB">
-		  <td>
-		     <b>Source RPMs</b>
-	          </td>
-		  <td>
-		    <ul>
-			<li><a href="archive/libgc-6.1alpha5-1.src.rpm">libgc-6.1alpha5-1.src.rpm</a>
-			<li><a href="archive/mono-0.15-1.src.rpm">mono-0.15-1.src.rpm</a>
-		    </ul>
-		  </td>
-	        </tr>
-		<tr>
-		 <td></td>
-	 	</tr>
-		
-		<tr bgcolor="#999999">
-		  <td>
-		    <b>Windows (win95 friendly)</b>
-		    <ul>
-	              <li><a href="archive/mono-w32-Aug_28_2002.zip">Mono-w32</a>
-	            </ul>
-		  </td>
-		  <td bgcolor="#999999">
-		    <b>Red Hat null-8.0/x86</b>
-                <ul>
-			<li><a href="archive/redhat-null-i386/libgc-6.1alpha5-1.i386.rpm">libgc-6.1alpha5-1.i386.rpm</a>
-			<li><a href="archive/redhat-null-i386/libgc-devel-6.1alpha5-1.i386.rpm">libgc-devel-6.1alpha5-1.i386.rpm</a>
-			<li><a href="archive/redhat-null-i386/mono-0.15-1.i386.rpm">mono-0.15-1.i386.rpm</a>
-			<li><a href="archive/redhat-null-i386/mono-devel-0.15-1.i386.rpm">mono-devel-0.15-1.i386.rpm</a>
-		    </ul>
-	          </td>
-	        </tr>
-	      </table>
-	    </td>
-	  </tr>
-	  </tbody>
-	</table>
-
-* Binaries for other platforms.
-
-	Already daily volunteer's made binaries:
-
-	<ul>
-		* <a href="http://pkg-mono.alioth.debian.org/">http://pkg-mono.alioth.debian.org/</a>
-	</ul>
-
-* Snapshots
-
-<a name="snapshots">
-
-	<a href="http://www.go-mono.com/snapshots">Nightly snapshots</a> of 
-	the CVS repository are made every day at 10pm EST (Boston
-	Time).  These are not guaranteed to build, they are just a
-	snapshot of the tree.
-
-	The <a href="anoncvs.html">anoncvs</a> mirrors provided by
-	Hispalinux are updated every six hours.
-
-* Compilation
-
-	For instructions on how to build Mono, please refer to the 
-	<a href="compiling.html">compiling</a> page.
diff --git a/web/embedded-api b/web/embedded-api
deleted file mode 100755
index 3b405c9..0000000
--- a/web/embedded-api
+++ /dev/null
@@ -1,305 +0,0 @@
-* Embedding the Mono runtime, preliminary version
-
-	This document describes how to embed the Mono runtime in your
-	application, and how to invoke CIL methods from C, and how to
-	invoke C code from CIL
-
-	Slides for Paolo's presentation at .NET ONE on the embedding
-	API are available here: <a
-	href="http://primates.ximian.com/~lupus/slides/embed">Hosting the Mono
-	Runtime</a>.  You can also get his <a
-	href="http://primates.ximian.com/~lupus/slides/embed/Mono-0.01.tar.gz">sample
-	Mono module for Perl</a>
-
-	Authors: Paolo Molaro, Miguel de Icaza.
-
-* Embedding the runtime.
-
-	Embedding the runtime consists of various steps: 
-
-	<ul>
-		* Compiling and linking the Mono runtime
-
-		* Initializing the Mono runtime
-
-		* Optionally expose C code to the C#/CIL universe.
-
-	</ul>
-
-	These are discussed in detail next.
-
-** Compiling and Linking
-
-	To embed the runtime, you have to link your code against the
-	Mono runtime libraries.  To do this, you want to pass the
-	flags returned by pkg-config to your compiler:
-
-	<pre>
-		pkg-config --cflags --libs mono
-	</pre>
-
-	Like this:
-
-	<pre>
-		gcc sample.c `pkg-config --cflags --libs mono`
-	</pre>
-
-	You can separate the compilation flags from the linking flags, for 
-	instance, you can use the following macros in your makefile:
-
-	<pre>
-		CFLAGS=`pkg-config --cflags mono`
-		LDFLAGS=`pkg-config --libs mono`
-	</pre>
-
-** Initializing the Mono runtime
-
-	To initialize the runtime, call mono_jit_init, like this:
-
-	<pre>
-		MonoDomain *domain;
-
-		domain = mono_jit_init ("domain-name");
-	</pre>
-
-	That will return a MonoDomain where your code will be
-	executed.  You can create multiple domains.  Each domain is
-	isolated from the other domains and code in one domain will
-	not interfere with code in other domains.  This is useful if
-	you want to host different applications in your program.  
-
-	Now, it is necessary to transfer control to Mono, and setup
-	the threading infrastructure, you do this like this:
-
-	<pre>
-		void *user_data = NULL;
-
-		mono_runtime_exec_managed_code (domain, main_thread_handler, user_data);
-	</pre>
-
-	Where your main_thread_handler can load your assembly and execute it:
-
-	<pre>
-	static void main_thread_handler (gpointer user_data)
-	{	
-		MonoAssembly *assembly;
-
-		assembly = mono_domain_assembly_open (domain, "file.dll");
-		if (!assembly)
-			error ();
-	</pre>
-
-	In the above example, the contents of `file.dll' will be
-	loaded into the domain.  This only loads the code, but it will
-	not execute anything yet.  You can replace `file.dll' with
-	another transport file, like `file.exe'
-
-	To start executing code, you must invoke a method in the
-	assembly, or if you have provided a static Main method (an
-	entry point), you can use the convenience function:
-
-	<pre>
-		retval = mono_jit_exec (domain, assembly, argc - 1, argv + 1);
-	</pre>
-
-	If you want to invoke a different method, look at the
-	`Invoking Methods in the CIL universe' section later on.
-
-** Shutting down the runtime
-
-	To shutdown the Mono runtime, you have to clean up all the
-	domains that were created, use this function:
-
-	<pre>
-		mono_jit_cleanup (domain);
-	</pre>
-
-** Applications that use threads.
-
-	The Boehm GC system needs to catch your calls to the pthreads
-	layer, so in each file where you use pthread.h you should
-	include the <gc/gc.h> file.  
-
-	If you can not do this for any reasons, just remember that you
-	can not store pointers to Mono Objects on the stack, you can
-	store them safely in the heap, or in global variables though
-
-* Exposing C code to the CIL universe
-
-	The Mono runtime provides two mechanisms to expose C code to
-	the CIL universe: internal calls and native C code.   Internal
-	calls are tightly integrated with the runtime, and have the
-	least overhead, as they use the same data types that the
-	runtime uses.
-
-	The other option is to use the Platform Invoke (P/Invoke) to
-	call C code from the CIL universe, using the standard P/Invoke
-	mechanisms.
-
-	To register an internal call, use this call in the C code:
-
-	<pre>
-	mono_add_internal_call ("Hello::Sample", sample);
-	</pre>
-
-	Now, you need to declare this on the C# side:
-
-	<pre>
-		using System;
-		using System.Runtime.CompilerServices;
-	</pre>
-
-
-	<pre>
-	class Hello {
-		[MethodImplAttribute(MethodImplOptions.InternalCall)]
-		extern static string Sample ();
-	}
-	</pre>
-
-	Since this routine returns a string, here is the C definition:
-
-	<pre>
-		static MonoString*
-		Sample () 
-		{
-			return mono_string_new (mono_domain_get (), "Hello!");
-		}
-	</pre>
-
-	Notice that we have to return a `MonoString', and we use the
-	`mono_string_new' API call to obtain this from a string.
-
-* Invoking Methods in the CIL universe
-
-	Calling a method in the CIL universe from C requires a number of steps:
-
-	<ul>
-		* Obtaining the MonoMethod handle to the method.
-
-		* The method invocation.
-	</ul>
-
-** Obtaining a MonoMethod
-
-	To get a MonoMethod there are several ways.
-
-	You can get a MonoClass (the structure representing a type)
-	using:
-
-	<pre>
-	MonoClass *
-	mono_class_from_name (MonoImage *image, const char* name_space, const char *name);
-	</pre>
-
-	and then loop in the returned class method array until you get
-	the one you're looking for. There are examples of such
-	searches as static functions in several C files in
-	metadata/*.c: we need to expose one through the API and remove
-	the duplicates.
-
-	The other, simpler, way is to use the functions in
-	debug-helpers.h: there are examples of their use in monograph,
-	mint and the jit as well.  You basically use a string
-	description of the method, like:
-	
-	<pre>
-	        "System.Object:GetHashCode()"
-	</pre>
-	
-	and create a MonoMethodDesc out of it with:
-	
-	<pre>
-	MonoMethodDesc* mono_method_desc_new (const char *name, gboolean include_namespace);
-	</pre>
-	
-	You can then use:
-	
-	<pre>
-	MonoMethod*     mono_method_desc_search_in_class (MonoMethodDesc *desc, MonoClass *klass);
-	MonoMethod*     mono_method_desc_search_in_image (MonoMethodDesc *desc, MonoImage *image);
-	</pre>
-	
-	to search for the method in a class or in an image.  You would
-	tipically do this just once at the start of the program and
-	store the result for reuse somewhere.
-			
-** Invoking a Method
-
-	There are two functions to call a managed method:
-	
-	<pre>
-	MonoObject*
-	mono_runtime_invoke         (MonoMethod *method, void *obj, void **params,
-	                             MonoObject **exc);
-	and
-	MonoObject*
-	mono_runtime_invoke_array   (MonoMethod *method, void *obj, MonoArray *params,
-	                             MonoObject **exc);
-	</pre>
-	
-	obj is the 'this' pointer, it should be NULL for static
-	methods, a MonoObject* for object instances and a pointer to
-	the value type for value types.
-
-	The params array contains the arguments to the method with the
-	same convention: MonoObject* pointers for object instances and
-	pointers to the value type otherwise. The _invoke_array
-	variant takes a C# object[] as the params argument (MonoArray
-	*params): in this case the value types are boxed inside the
-	respective reference representation.
-	
-	From unmanaged code you'll usually use the
-	mono_runtime_invoke() variant.
-
-	Note that this function doesn't handle virtual methods for
-	you, it will exec the exact method you pass: we still need to
-	expose a function to lookup the derived class implementation
-	of a virtual method (there are examples of this in the code,
-	though).
-
-	You can pass NULL as the exc argument if you don't want to
-	catch exceptions, otherwise, *exc will be set to the exception
-	thrown, if any.  if an exception is thrown, you can't use the
-	MonoObject* result from the function.
-
-	If the method returns a value type, it is boxed in an object
-	reference.
-	
-	We have plans for providing an additional method that returns
-	an unmanaged->managed thunk like this:
-	
-	<pre>
-	void* mono_method_get_unmanaged_thunk (MonoMethod *method);
-	</pre>
-	
-	You'll be able to store the returned pointer in a function
-	pointer with the proper signature and call that directly from
-	C:
-	
-	<pre>
-	typedef gint32 (*GetHashCode) (MonoObject *obj);
-	
-	GetHashCode func = mono_method_get_unmanaged_thunk (System_Object_GetHashCode_method);
-	
-	gint32 hashvalue = func (myobject);
-	</pre>
-	
-	It may not be possible to manage exceptions in that case,
-	though. I need to think more about it.
-
-** Threading issues
-
-	If your application creates threads on its own, and you want them to 
-	be able to call code into the CIL universe with Mono, you have to
-	register the thread with Mono before issuing the call.
-
-	To do so, call the mono_thread_attach() function before you execute
-	any managed code from the thread
-
-* Samples
-
-	See the sample programs in mono/sample/embed for examples of
-	embedding the Mono runtime in your application.
-
-
diff --git a/web/faq b/web/faq
deleted file mode 100644
index 9a45337..0000000
--- a/web/faq
+++ /dev/null
@@ -1,1670 +0,0 @@
-<a href="#basics">Basics</a><br>
-<a href="#novell">The Novell Role in the Mono project</a><br>
-<a href="#gnome">Mono and GNOME</a><br>
-<a href="#gui">Building GUI applications with Mono</a><br>
-<a href="#msft">Mono and Microsoft</a><br>
-<a href="#platforms">Mono platforms</a><br>
-<a href="#compatibility">Compatibility</a></br>
-<a href="#pnpproject">Mono and the Portable.NET Project</a><br>
-<a href="#webservices">Web Services</a><br>
-<a href="#asp">Mono and ASP.NET</a><br>
-<a href="#ado">Mono and ADO.NET</a><br>
-<a href="#monodoc">MonoDoc</a><br>
-<a href="#devel">Development Tools and Issues</a><br>
-<a href="#java">Mono and Java</a><br>
-<a href="#extending">Extending Mono</a><br>
-<a href="#portability">Portability</a><br>
-<a href="#reuse">Reusing Existing Code</a><br>
-<a href="#gcc">Mono and GCC</a><br>
-<a href="#performance">Performance</a><br>
-<a href="#licensing">Licensing</a><br>
-<a href="#patents">Patents</a><br>
-<a href="#etc">Miscellaneous Questions</a><br>
-<a href="#obfuscation">Obfuscation</a></br>
-<a href="#problems">Mono Common Problems</a><br>
-
-A <a
-href="http://www.monohispano.org/tutoriales/mono-puf//">Spanish
-translation</a> is also available (it is outdated though)
-
-<a name="basics"></a>
-** Basics
-
-Q: What is Mono exactly?
-
-A: The Mono Project is an open development initiative sponsored by
-   Ximian that is working to develop an open source, Unix
-   version of the Microsoft .NET development platform.  Its objective
-   is to enable Unix developers to build and
-   deploy cross-platform .NET Applications.  The project will
-   implement various technologies developed by Microsoft that have now
-   been submitted to the ECMA for standardization.
-
-   The Mono project has also sparked a lot of interest in developing
-   C#-based components, libraries and frameworks.  Today Mono is not
-   limited to implement the .NET Framework, but also contains other
-   components.  Some of the components of the Mono platform were
-   developed by the Mono team, and some others we have incorporated
-   from other open source efforts, the most important ones:
-
-   <ul>
-	<li><a
-    	href="http://remoting-corba.sourceforge.net/">Remoting.CORBA</a>: A
-	CORBA implementation for Mono.
-
-	<li>Ginzu: An implementation on top of Remoting for the <a
-	href="http://www.zeroc.com">ICE</a> stack
-
-	<li><a href="http://gtk-sharp.sf.net">Gtk#</a>: Bindings for
-   	the popular Gtk+ GUI toolkit for Unix and Windows systems.
-	Other bindings are available: Diacanvas-Sharp and MrProject.
-
-	<li><a
-	href="http://www.icsharpcode.net/OpenSource/SharpZipLib/Default.aspx">#ZipLib</a>:
-	A library to manipulate various kinds of compressed files and
-	archives (Zip and tar).
-
-	<li>GlGen (available from the Mono CVS): Bindings for OpenGL.
-
-	<li>Mono.LDAP: LDAP access for .NET apps.
-
-	<li>Mono.Data: We ship support for Postgress, MySql, Sybase,
-	DB2, SqlLite, Tds (SQL server protocol) and Oracle databases. 
-
-	<li>Mono.Cairo: Bindings for the <a
-	href="http://www.cairographics.org">Cairo</a> rendering
-	engine (Our System.Drawing is implemented on top of this).
-
-	<li>Mono.Posix: Bindings for building POSIX applications using
-	C#. 
-
-	<li>Mono.Http: Support for creating custom, embedded HTTP
-	servers and common HTTP handlers for your applications.
-   </ul>
-
-Q: What is the difference between Mono and the .NET Initiative?
-
-A: The ".NET Initiative" is a somewhat nebulous company-wide effort by
-   Microsoft, one part of which is a cross-platform development
-   framework.  Mono is an implementation of the development framework,
-   but not an implementation of anything else related to the .NET
-   Initiative, such as Passport or software-as-a-service.
-
-Q: What technologies are included in Mono?
-
-A: Mono contains a number of components useful for building new
-   software:
-
-	<ul>
-		* A Common Language Infrastructure (CLI) virtual
-		  machine that contains a class loader, Just-in-time
-		  compiler, and a garbage collecting runtime.
-
-		* A class library that can work with any language
-		  which works on the CLR.  Both .NET compatible class
-		  libraries as well as Mono-provided class libraries
-		  are included.
-
-		* A compiler for the C# language.  In the future we
-		  might work on other compilers that target the Common
-		  Language Runtime.
-	</ul>
-
-
-   Windows has compilers that target the virtual machine from <a
-   href="http://msdn.microsoft.com/net/thirdparty/default.asp#lang">a
-   number of languages:</a> Managed C++, Java Script, Eiffel,
-   Component Pascal, APL, Cobol, Perl, Python, Scheme,
-   Smalltalk, Standard ML, Haskell, Mercury and Oberon.
-
-   The CLR and the Common Type System (CTS) enables applications and
-   libraries to be written in a collection of different languages that
-   target the byte code
-
-   This means for example that if you define a class to do algebraic
-   manipulation in C#, that class can be reused from any other
-   language that supports the CLI.  You could create a class in C#,
-   subclass it in C++ and instantiate it in an Eiffel program. 
-
-   A single object system, threading system, class libraries, and
-   garbage collection system can be shared across all these languages.
-   
-Q: Where can I find the specification for these technologies?
-
-A: You can find the information here:
- 
-
-   C# <a href="http://www.ecma.ch/ecma1/STAND/ecma-334.htm">http://www.ecma.ch/ecma1/STAND/ecma-334.htm</a>
-
-   CLI <a href="http://www.ecma.ch/ecma1/STAND/ecma-335.htm">http://www.ecma.ch/ecma1/STAND/ecma-335.htm</a>
-
-Q: Will you implement the .NET Framework SDK class libraries?
-
-A: Yes, we will be implementing the APIs of the .NET Framework SDK
-   class libraries. 
-
-Q: Will you offer an ECMA-compliant set of class libraries?
-
-A: Eventually we will.  Our current focus is on inter-operating
-   with the Microsoft SDK, but we will also offer an ECMA compliant
-   subset of the libraries. 
-
-Q: What does the name "Mono" mean?
-
-A: Mono is the word for `monkey' in Spanish. We like monkeys.  
-
-Q: Does Mono work today?
-
-A: The execution engine works on various platforms, we support
-   Just-in-Time and Ahead-of-Time compilations on Intel x86 machines
-   (and soon PowerPC).
-
-   The class libraries are mature enough to run various real
-   applications: our C# compiler, ASP.NET, and Gtk#-based
-   applications.
-
-Q: When will you ship Mono?
-
-A: Please see the <a href="mono-roadmap.html">Mono Roadmap</a> for
-   more details on the release plans.  
-
-Q: How can I contribute?
-
-A: Check the <a href="contributing.html">contributing</a> section. 
-
-Q: Aren't you just copying someone else's work?
-
-A: We are interested in providing the best tools for programmers to
-   develop applications for Free Operating Systems.  We also want to help
-   provide the interoperability that will allow those systems to fit in
-   with other standards.
-
-   For more background, read the <a href="http://www.go-mono.com/rationale.html">Mono
-   Project white paper</a>.
-   the project.
-
-Q: Miguel said once that Mono was being implemented in COBOL. Is that true?.
-
-A: No. It was a joke.
-
-
-<a name="novell"></a> 
-
-** The Novell Role in the Mono Project
-
-Q: Why is Novell working on .NET?
-
-A: Novell is interested in providing the best tools for programmers to
-   develop applications for Free Operating Systems.
-
-   For more information, read the project <a
-   href="rationale.html">rationale</a> page.
-
-Q: Will Novell be able to take on a project of this size?  
-
-A: Of course not.  Novell is a supporter of the Mono project, but the only way
-   to implement something of this size is for the entire free software
-   community to get involved. Visit the <a href="contributing.html">contributing</a> 
-   page if you'd like to help out.
-
-Q: What pieces is Novell working on?
-
-A: We will devote most of our resources to work on the pieces which are
-   on the critical path to release a development and execution
-   environment. Once the project is at a stage where it is useful in
-   the real world, it will achieve a critical mass of developers to
-   improve it further.
-
-Q: Will Novell offer Mono commercially?
-
-A: When Mono is ready to be shipped Ximian will offer a commercial
-   support and services for Mono. Mono components are also
-   available to be licensed commercially. For licensing details,
-   contact <a
-   href="mailto:mono-licensing at ximian.com">mono-licensing at ximian.com</a>
-
-Q: Does Novell provide consulting services around Mono?
-
-A: Yes, Novell does provide consulting services around Mono to
-   make it suitable to your needs.  Porting the runtime engine,
-   customizing it, working on specific classes or tuning the code
-   for your particular needs. 
-
-   Please contact <a
-   href="mailto:mono-licensing at ximian.com">mono-licensing at ximian.com</a>
-   for consulting services information.
-
-Q: Will you wait until Mono is finished?
-
-A: Mono will ship on various stages as they mature.  Some people
-   require only a subset of the technologies, those will ship first,
-   see the <a href="mono-roadmap.html">Mono Roadmap</a> for details
-
-<a name="gnome"></a> 
-** Mono and GNOME
-
-Q: How is Mono related to GNOME?
-
-A: In a number of ways.  This project was born out of the need of
-   providing improved tools for the GNOME community, and will use
-   existing components that have been developed for GNOME when they
-   are available.  For example, we plan to use Gtk+ and Libart to
-   implement Winforms and the Drawing2D API and are considering
-   GObject support.
-
-   Mono team members work actively on the <a
-   href="http://gtk-sharp.sf.net">Gtk#</a> project: a binding of the
-   GNOME class libraries for .NET and Mono.
-
-Q: Has the GNOME Foundation or the GNOME team adopted Mono?
-
-A: Mono is too new to be adopted by those groups. We hope that the
-   tools that we will provide will be adopted by free software
-   programmers including the GNOME Foundation members and the GNOME
-   project generally.
-
-Q: Should GNOME programmers switch over to Mono now?
-
-A: It is still far to early for discussions of "switching over."  No
-   pieces of Mono will be ready within the next six months, and a
-   complete implementation is roughly one year away.
-
-   We encourage GNOME developers to continue using the existing tools,
-   libraries and components.  Improvements made to GNOME will have an
-   impact on Mono, as they would be the "back-end" for various classes.
-
-Q: Will Mono include compatibility with Bonobo components? What is the
-   relationship between Mono and Bonobo?
-
-A: Yes, we will provide a set of classes for implementing and using
-   Bonobo components from within Mono.  Mono should allow you to write
-   Bonobo components more easily, just like .NET on Windows allows you
-   to export .NET components to COM.
-
-Q: Does Mono depend on GNOME?
-
-A: No, Mono does not depend on GNOME.  We use a few packages produced by
-   the GNOME team like the `glib' library, we also use other
-   third-party open source libraries like Cairo and ICU.
-
-Q: But will I be able to build GNOME applications?
-
-A: Yes, we will enable people to write GNOME applications using Mono.
-
-Q: Do you have C# bindings for GNOME?.
-
-A: Yes, the <a href="http://gtk-sharp.sf.net">Gtk# project</a>
-   provides bindings for Gtk+, Gdk, Atk, libgnome, libgnomecanvas, and
-   libgnomeui.  Other libraries under the GNOME framework will be
-   added on an as-needed (and as-requested) basis.
-
-<a name="gui"></a>
-** GUI applications
-
-Q: Will Mono enable GUI applications to be authored?
-
-A: Yes, you will be able to build GUI applications.  Indeed, that is
-   our main focus.  Today you can use Gtk# or #WT to develop GUI
-   applications, and support for Windows.Forms is underway.
-
-Q: What is the difference between Gtk# and System.Windows.Forms?
-
-A: Gtk# is a set of bindings for the Gtk+ toolkit for C# (and other
-   CIL-enabled languages), it integrates natively with the Gnome
-   desktop.  System.Windows.Forms is an API defined by Microsoft to
-   build GUI applications.
-
-Q: What are you using to implement Windows.Forms?
-
-A: Windows.Forms is currently being implemented on top of a modified
-   version of Wine that can be used as a library: WineLib.
-
-   Essentially Wine is used as a library that happens to implement the
-   "Win32" toolkit and our Windows.Forms becomes a managed layer on
-   top of this toolkit.
-
-   There are several advantages in this approach: we get Wndproc
-   message compatibility for free (Wndproc is an overridable method in
-   the Control class and it is used to perform advanced tricks with
-   the GUI toolkit) as well as allowing third-party controls that are
-   used to P/Invoke into Win32 in the Windows world to work out of the
-   box on Linux/MacOS.
-
-Q: Why not implement System.Windows.Forms on top of Gtk# or Qt#?
-
-A: Compatibility.
-
-   Although it is possible to run simple Windows.Forms applications
-   with the Gtk#-based backend of Windows.Forms, it is very unlikely
-   that the implementation will ever implement everything needed for
-   full compatibility with Windows.Forms.
-
-   The reason is that Windows.Forms is not a complete toolkit, and to
-   work around this problem some of the underlying Win32 foundation is
-   exposed to the programmer in the form of exposing the Windows
-   message handler (WndProc).  Any control can override this method.
-   Also developers often P/Invoke into Win32 to get to functionality
-   that was not wrapped. 
-
-   To achieve full compatibility, we would have to emulate this, and
-   it would take too long.
-
-   For more details see the <a href="winforms.html">winforms page</a>
-
-Q: Wine applications do not look like native applications, what are
-   you going to do about this?  
-
-A: We have already a few patches into our version of Windows.Forms
-   that makes Wine use the colors and font settings from your desktop,
-   improving the integration a lot.   In the future, we will continue
-   to improve this interoperability scenario.
-
-Q: Will I be able to run my smart clients on systems powered by Mono?
-
-A: As long as your applications are 100% .NET and do not make use
-   of P/Invoke to call Win32 functions, your smart client applications
-   will run on Mono platforms.
-
-Q: Where can I learn more about Gtk#?
-
-A: The following <a href="http://gtk-sharp.sourceforge.net">link</a> sends you to the page of the project.
-
-Q: What can I do with Gtk#?. 
-
-A: Gtk# is becoming very usable and you can create applications and
-   applets like those you see in a GNOME desktop environment. It's 
-   easy to install so it's worth a try. 
-
-Q: How can I compile my HelloWorld.cs which uses Gtk#?.
-
-A: Try: mcs -r:gtk-sharp HelloWorld.cs
-
-Q: Is there any way how to connect DataAdapter to some GTK# controls?
-
-A: There is a sample file called `DbClient' in gtk-sharp/samples that you
-   might to look at.  It is a sample program in Gtk# that adds/updates/deletes 
-   information on a Postgress database. When we have the new table/tree widgets, 
-   I am sure someone would write an adapter for System.Data (in Gtk2 the 
-   tree/list widgets are written using a view/model, so you only need to write 
-   a model that maps to the database). You can have a look at 
-   gtk-sharp/sample/DbClient, where there is a GTK# application that uses 
-   System.Data. It does not use DataAdapter, but DataReader though.
-
-Q: Do you have an estimate for when Windows.Forms will be released?
-
-A: The plan currently is aimed at Q4/2004.
-
-
-Q: Do you have a comparission chart about the various toolkit
-   offerings?
-
-A: A document explaining this is available at: <a
-   href="http://primates.ximian.com/~miguel/toolkits.html">http://primates.ximian.com/~miguel/toolkits.html</a>.
-
-<a name="msft"></a>
-** Mono and Microsoft
-
-Q: Is Microsoft helping Ximian with this project?
-
-A: There is no high level communication between Ximian and Microsoft
-   at this point, but engineers who work on .NET or the ECMA groups
-   have been very friendly, and very nice to answer our questions, or
-   clarify part of the specification for us. 
-
-   Microsoft is interested in other implementations of .NET and are
-   willing to help make the ECMA spec more accurate for this purpose.
-
-   Ximian was also invited to participate in the ECMA committee
-   meetings for C# and the CLI.
-
-Q: Are Microsoft or Corel paying Ximian to do this?
-
-A: No.
-
-Q: Do you fear that Microsoft will change the spec and render Mono
-   useless?
-
-A: No.  Microsoft proved with the CLI and the C# language that it was
-   possible to create a powerful foundation for many languages to
-   inter-operate.  We will always have that.  
-
-   Even if changes happened in the platform which were undocumented,
-   the existing platform would a value on its own.
-
-Q: Are you writing Mono from the ECMA specs?
-
-A: Yes, we are writing them from the ECMA specs and the published
-   materials in print about .NET.
-
-Q: If my applications use Mono, will I have to pay a service fee?
-
-A: No.  Mono is not related to Microsoft's initiative of
-   software-as-a-service.
-
-Q: Is the Mono Project is related to the Microsoft Hailstorm effort?  Is
-   Ximian endorsing Hailstorm?  
-
-A: No.  The Mono Project is focused on providing a compatible set of
-   tools for the Microsoft .NET development platform.  It does not
-   address, require, or otherwise endorse the MS Passport-based
-   Hailstorm single sign-on system that is part of Windows XP and
-   other services.
-
-Q: Will Mono or .NET applications depend on Microsoft Passport?
-
-A: No. MS Passport is unrelated to running .NET compatible applications
-   produced with the Mono tools.  The only thing you will need is a
-   just-in-time compiler (JIT).
-
-Q: If Microsoft will release a port of their .NET platform under the
-   `Shared Source' license, why should I bother with anything else?
-
-A: The Shared Source implementation will be expensive and its uses
-   will be tightly restricted, especially for commercial use. We are
-   working towards an implementation that will grant a number of
-   important rights to recipients: use for any purpose,
-   redistribution, modification, and redistribution of modifications.
-
-   This is what we call <a
-   href="http://www.gnu.org/philosophy/free-sw.html">Free Software</a>
-
-Q: Is Mono a free implementation of Passport?
-
-A: No. Mono is just a runtime, a compiler and a set of class
-   libraries.
-
-Q: Will the System.Web.Security.PassportIdentity class mean
-   that my software will depend on Passport?
-   
-A: No.  Applications may use that API to contact a Passport site, but
-   are not required to do so.
-
-   As long as your application does not use Passport, you will not
-   need Passport.  
-
-Q: Will Mono running on Linux make Passport available for Linux?
-
-A: No.  However, the Passport toolkit for Linux-based web servers is
-   available from Microsoft.
-
-Q: Will Mono allow me to run Microsoft Office on Linux?
-
-A: No, it will not.  Microsoft Office is a Windows application.  To
-   learn more about running Windows applications on Intel Unix systems
-   refer to <a href="http://www.winehq.com">the Wine Project</a>.
-
-Q: Can mono run the WebMatrix?
-
-A: No. That requires System.Windows.Forms support which is not
-   currently implemented.
-
-Q: Does mono have something like Passport? 
-   Will mono have a server side Passport/Similar framework for XSP as well as client classes?
-
-A: Not yet, but the client side API for authentication is not the problem. 
-   We will likely have a lot of other authentication APIs, like the Liberty
-   Alliance APIs. The problem is people on the web provider end that might use 
-   this for authentication.
-
-<a name="platforms"></a>
-** Mono Platforms 
-
-Q: What operating systems does Mono run on?
-
-A: Mono is known to run on Linux, Unix and Windows systems.   
-
-Q: Can I run Mono applications without using `mono program.exe'?
-
-A: Yes, this is possible on Linux systems, to do this, use something like:
-
-<pre>
-if [ ! -e /proc/sys/fs/binfmt_misc/register ]; then
-	/sbin/modprobe binfmt_misc
-	mount -t binfmt_misc none /proc/sys/fs/binfmt_misc
-fi
-
-if [ -e /proc/sys/fs/binfmt_misc/register ]; then
-	echo ':CLR:M::MZ::/usr/bin/mono:' > /proc/sys/fs/binfmt_misc/register
-else
-	echo "No binfmt_misc support"
-	exit 1
-fi
-</pre>
-
-Q: What architectures does Mono support?
-
-A: Mono today ships with a Just-in-Time compiler for x86, PowerPC and
-   SPARC-based systems.  It is tested regularly on Linux, FreeBSD and
-   Windows (with the XP/NT core).
-
-   There is also an interpreter, which is slower that runs on the
-   s390, SPARC, HPPA, StrongARM and PowerPC architectures.
-
-Q: Can Mono run on Windows 9x, or ME editions?
-
-A: Mono requires Unicode versions of Win32 APIs to run,
-   and only a handful of *W functions is supported under Win9x.
-
-   There is Microsoft Layer for Unicode that provides implementation
-   of these APIs on 9x systems.
-
-   Unfortunately it uses linker trick for delayed load that is not
-   supported by ld, so some sort of adapter is necessary.
-   
-   You will need MSLU and one of the following libs to link Mono to
-   unicows.dll <a
-   href="http://mono.eurosoft.od.ua/files/unimono.zip">http://mono.eurosoft.od.ua/files/unimono.zip</a>
-   or alternatively search the net for "libunicows".
-
-   No changes to Mono source code required, the only thing is to make
-   sure that linker will resolve imports to adapter library instead of
-   Win32 libs. This is achieved by inserting -lunimono before
-   -lkerner32/user32 in the linker's specs file.
-
-Q: Why support Windows, when you can run the real thing?
-
-A: There are various reasons:
-
-   <ul>
-      <li> About half the contributors to Mono are Windows developers.
-           They have many different for contributing to the effort, and
-           we find it very important to let those developers run the runtime on Windows without forcing
-           them to use a new operating system. 
-          
-      <li> Supporting Windows helps us identify the portable portions
-           of Mono from the non-portable versions of it, helping Mono
-           become more portable in the future.
-
-      <li> Mono does not heavily modify the windows registry, update system DLLs,
-	   install DLLs to the Windows/System32 path.  Another words, I knew Mono would
-	   not cause any legacy enterprise applications to stop working - and it
-	   hasn't.  However, our CIO er is againt it because of the changes that would
-	   be made to Windows 2000, such as, affecting security.
-   </ul>
-
-<a name="compatibility"></a>
-** Compatibility
-
-Q: Can Mono run applications developed with the Microsoft.NET framework?
-
-A: Yes, Mono can run applications developed with the Microsoft .NET Framework
-   on Unix.  There are a few caveats to keep in mind: Mono has not
-   been completed yet, so a few API calls might be missing; And in
-   some cases the Mono behavior *might* be incorrect.
-
-Q: Will missing API entry points be implemented?
-
-A: Yes, the goal of Mono is to implement precisely the .NET Framework
-   API (as well as compile-time selectable subsets, for those
-   interested in a lighter version of Mono).
-
-Q: If the behavior of an API call is different, will you fix it?
-
-A: Yes, we will.  But we will need your assistance for this.  If you find a bug
-   in the Mono implementation, please fill a bug report in <a
-   href="http://bugzilla.ximian.com">http://bugzilla.ximian.com</a>.
-   Do not assume we know about the problem, we might not, and using the bug tracking
-   system helps us organize the development process.
-
-Q: Can I develop my applications on Windows, and deploy on a supported
-   Mono platform (like Linux)?
-
-A: Yes, you can.  
-
-   As of today, Mono is not 100% finished, so it is sometimes useful
-   to compile the code with Mono, to find out if your application
-   depends on unimplemented functionality. 
-
-Q: Will applications run out the box with Mono?
-
-A: Sometimes they will.  But sometimes a .NET application might invoke
-   Win32 API calls, or assume certain patterns that are not correct
-   for cross-platform applications.
-
-Q: What is a 100% .NET application?
-
-A: A `100% .NET application' is one that only uses the APIs defined
-   under the System namespace and does not use P/Invoke.  These
-   applications would in theory run unmodified on Windows, Linux,
-   HP-UX, Solaris, MacOS X and others. 
-
-   Note that this requirement also holds for all assemblies used by the
-   application.  If one of them is Windows-specific, then the entire program
-   is not a 100% .NET application.
-
-   Furthermore, a 100% .NET application must not contain non-standard data
-   streams in the assembly.  For example, Visual Studio .NET will insert a 
-   <tt>#-</tt> stream into assemblies built under the "Debug" target.  
-   This stream contains debugging information for use by Visual Studio .NET; 
-   however, this stream can not be interpreted by Mono (unless you're willing 
-   to donate support).
-
-   Thus, it is recommended that all Visual Studio .NET-compiled code be
-   compiled under the Release target before it is executed under Mono.
-
-Q: Can I execute my Visual Studio .NET program (Visual Basic .NET, Visual C#,
-   Managed Extensions for C++, etc.) under Mono?
-
-A: Yes, with some reservations.
-
-   The .NET program must either be a 100% .NET application, or (somehow) have
-   all dependent assemblies available on all desired platforms.  (How to do so
-   is outside the bounds of this FAQ.)
-
-   Mono must also have an implementation for the .NET assemblies used.  For
-   example the System.EnterpriseServices namespace is part of .NET, but it
-   has not been implemented in Mono.  Thus, any applications using this
-   namespace will not run under Mono.
-
-   With regards to languages, C# applications tend to be most portable.
-
-   Visual Basic .NET applications are portable, but Mono's 
-   Microsoft.VisualBasic.dll implementation is incomplete.  It is recommended 
-   to either avoid using this assembly in your own code, only use the 
-   portions that Mono has implemented, or to help implement the missing
-   features.  Additionally, you can set 'Option Strict On', which
-   eliminates the implicit calls to the unimplemented
-   Microsoft.VisualBasic.CompilerServices.ObjectType class.  
-   (Thanks to Jörg Rosenkranz.)
-
-   Managed Extensions for C++ is least likely to operate under Mono.  Mono
-   does not support mixed mode assemblies (that is, assemblies containing both
-   managed and unmanaged code, which Managed C++ can produce).  You need a
-   fully-managed assembly to run under Mono, and getting the Visual C++ .NET
-   compiler to generate such an executable can be difficult.  You need to use
-   only the .NET-framework assemblies, not the C libraries (you can't use
-   <b>printf</b>(3) for example.), and you need to use
-   the linker options <tt>/nodefaultlib /entry:main mscoree.lib</tt> in
-   addition to the <tt>/clr</tt> compiler flag.  You can still use certain
-   compiler intrinsic functions (such as <b>memcpy</b>(3)) and the STL.
-   You should also see <a 
-   href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmex/html/vcgrfconvertingmanagedextensionsforcprojectsfrommixed-modetopureil.asp"
-   >Converting Managed Extensions for C++ Projects from Mixed Mode to Pure
-   Intermediate Language</a> at MSDN.
-   Finally, you can use PEVERIFY.EXE from the .NET SDK to determine if the 
-   assembly is fully managed.
-
-   Thanks to Serge Chaban for the linker flags to use.
-
-<a name="pnpproject"></a>
-** Mono and Portable.NET
-
-Q: What are the differences between Mono and Portable.NET?
-
-A: Most of Mono is being written using C#, with only
-   a few parts written in C (The JIT engine, the runtime, the
-   interfaces to the garbage collection system).  
-
-   It is easier to describe what is unique about Mono:
-   <ul>
-     <li> An advanced native-code compilation engine: Both
-	  just-in-time compilation (JIT) and pre-compilation of CIL
-	  bytecodes into native code are supported.
-
-     <li> A foundation for code optimization: The new code generator in
-	  Mono builds on the experience of our first JIT engine, and enables
-	  us to implement various advanced compiler optimization
-	  tricks.  With an SSA-framework, plenty of new optimizations are possible. 
-
-          The current list of optimizations are: Peephole postpass,
-	  Branch optimizations, Inline method calls, Constant folding, Constant
-	  propagation, Copy propagation, Dead code elimination, Linear scan
-	  global reg allocation, Conditional moves, Emit per-domain code,
-	  Instruction scheduling, Intrinsic method implementations, Tail
-	  recursion and tail calls, Loop related optimizations, Fast x86 FP
-	  compares, Leaf procedures optimizations
-
-     <li> A self-hosting C# compiler written in C#, which is clean, easy
-          to maintain.
-
-     <li> Focus on the .NET Framework: we are tracking down the .NET
-	  Framework API definition, as we believe it is the API people
-	  will be most familiar with.
-
-     <li> A multi-platform runtime engine: both a JIT engine and an
-          interpreter exist.  The JIT engine runs currently on x86,
-          PowerPC Sparc and S390 systems, while the interpreter works on
-          x86, SPARC, StrongARM, s390 and PowerPC systems.  
-
-	  The JIT engine is being ported to amd64 systems as of this
-	  time.	
-
-     <li> Supports Linux, BSD, MacOS, Windows and Solaris at this point.
-
-     <li> The JIT engine is written using a portable instruction
-          selector which not only generates good code but
-          is also the foundation to re-target the JIT engine to other
-          systems.  
-
-     <li> Full support for remoting in the runtime.
-
-     <li> The C# compiler, the JIT engine and the class libraries are
-          mature enough that the whole system has been self-hosting
-	  since April 2002.  This means that we develop Mono
-	  completely with itself at this point.
-
-          By forcing ourselves to use our own code to develop our
-	  tools, we bug fix problems rapidly, and the system is
-	  overall more robust and tested than if we did not.
-
-     <li> Our class libraries are licensed under the terms of the MIT
-          X11 license which is a very liberal license as opposed to
-          the GNU GPL with exceptions, this means that Mono can be
-          used in places where the GPL with exceptions is not
-          permissible.
-
-     <li> Mono has a complete Web Services stack: we implement ASP.NET
-          web servers and web clients as well as implementing the
-          Remoting-based SOAP infrastructure.
-
-     <li> Remoting implementation: Mono has a complete remoting
-          infrastructure that is used in our own codebase to provide
-          added functionality and performance to our ASP.NET engine
-          and more.
-
-     <li> Mono has a complete <a href="c-sharp.html">C# 1.0</a>
-          implementation and has been stress tested a lot more than
-          Portable.NET's compiler.
-
-     <li> Mono's C# compiler has strong error handling and has closer
-          adherence to the specification with support for definite
-	  assignment (required to generate verifiable IL code) and 
-	  CLS conformance checking.
-
-     <li> Mono's C# compiler is written in C# which is easier for new
-          developers to come in and improve, fix and tune.  The Mono
-          C# compiler in C# is faster than their C-based compiler.
-
-     <li> Preview of C# 2.0: a work in progress for a 2.0
-          implementation of our compiler is available (iterators,
-          generics and anonymous methods are available in our
-          "preview" compiler).
-
-     <li> Mono has a complete Reflection and Reflection.Emit: these
-          are important for advanced applications, compilers and
-          dynamic code generation.
-
-     <li> Mono has a <a href="xml-classes.html">complete managed XML
-          stack</a>: XML, XPath, XML Serializer, XML Schema handling
-          are fully functional, feature complete and tuned for
-          performance.
-
-     <li> Mono has a <a href="crypto.html">complete cryptography stack
-	  </a>: we implement the 1.0 and 1.1 APIs as well as using our
-	  fully managed stack to implement the SSL/TLS transports. 
-
-     <li> <a href="ado-net.html">Extensive database support</a>: Mono
-          ships with database provides for <a
-          href="firebird.html">Firebird</a>, <a href="ibmdb2.html">IBM
-          DB2</a>, <a href="oracle.html">Oracle</a>, <a
-          href="sybase.html">Sybase</a>, Microsoft <a
-          href="tdsclient.html">SQL Server</a>, <a
-          href="sqlite.html">SQL Lite</a>, <a
-          href="mysql.html">MySQL</a>, <a
-          href="postgresql.html">PostgresSQL</A>, <a href="oledb.html">Ole
-          DB</a> and <a href="odbc.html">ODBC</a>.
-
-     <li> Mono includes full LDAP support.
-
-     <li> We have a great community of developers, without which Mono
-          would not be possible.
-   </ul>
-
-   In general, Mono is more mature and complete since it has been used
-   to develop itself, which is a big motivator for stability and
-   correctness, while Portable.NET remains pretty much an untested
-   platform.
-
-Q: I hear Mono keeps changing the P/Invoke API, why?
-
-A: We are just fixing our implementation to be compatible with the
-   Microsoft implementation.  In other words, the Mono P/Invoke API is
-   more complete when compared to the Portable.NET version, hence
-   various pieces of software that depend on this extended
-   functionality fail to work properly with Portable.NET.
-
-<a name="webservices"></a>
-** Web Services
-
-Q: How is Mono related to Web Services?
-
-A: Mono is only related to Web Services in that it will implement the
-   same set of classes that have been authored in the .NET Framework
-   to simplify and streamline the process of building Web Services.
-
-   But most importantly, Mono is an Open Source implementation of the
-   .NET Framework.
-
-Q: Can I author Web Services with Mono?
-
-A: You will be able to write Web Services on .NET that run on Mono and
-   vice-versa. 
-
-Q: If Mono implements the SDK classes, will I be able to write and
-   execute .NET Web Services with it?
-   
-A: Yes.  When the project is finished, you will be able to use the
-   same technologies that are available through the .NET Framework SDK
-   on Windows to write Web Services.
-
-Q: What about Soup?  Can I use Soup without Mono?
-
-A: Soup is a library for GNOME applications to create SOAP servers and
-   SOAP clients, and can be used without Mono.  You can browse the
-   source code for soup using <a
-   href="http://cvs.gnome.org/bonsai/">GNOME's Bonsai</a>.
-
-Q: Can I use CORBA?
-
-A: Yes. The CLI contains enough information about a class that
-   exposing it to other RPC systems (like CORBA) is really simple, and
-   does not even require support from an object.  
-
-   <a href="http://remoting-corba.sourceforge.net/">Remoting.CORBA</a> is
-   a CORBA implementation that is gaining momentum.
-
-   Building an implementation of the Bonobo interfaces once this is ready
-   should be relatively simple. 
-
-Q: Can I serialize my objects to other things other than XML?
-
-A: Yes, although the serializing tools have not yet been planned, and
-   you would probably have to implement them yourself.
-
-Q: Will Mono use ORBit?
-
-A: There are a few advantages in using ORBit, like reusing existing code
-   and leveraging all the work done on it.  Michael Meeks has posted
-   a few <a href="http://lists.ximian.com/archives/public/mono-list/2002-September/008592.html">reasons</a>,
-   as well as some <a href="http://lists.ximian.com/archives/public/mono-list/2002-September/008657.html">ideas</a>
-   that could be used to reuse ORBit.
-
-   Most users are likely to choose a native .NET solution, like <a href="http://cvs.gnome.org/bonsai">Remoting.CORBA</a>
-
-
-<a name="monodoc"></a>
-** MonoDoc
-
-Q: What is MonoDoc?
-
-A: MonoDoc is a graphical documentation browser for the Mono class
-   libraries. Currently, monodoc consists of a Gtk# application and is
-   in heavy development.
-
-<a name="devel"></a>
-** Development Tools and Issues
-
-Q: I am having trouble compiling a new version of Mono from CVS, it 
-   complains about my runtime being out of sync.
-
-A: To upgrade your class libraries and compiler, see the 
-   INSTALL.txt in the MCS directory.
-
-   The single biggest source of confusion seems to be the "Your
-   runtime is out of sync" messages.  Realize that this is *normal*
-   while BUILDING.  Think about it: you're building a new class
-   library with the old runtime.  If the new class library references
-   a function that the old runtime knows nothing about, the runtime
-   system issues this warning.
-
-   Basically what needs to happen is for a new mono runtime to be
-   compiled, then the corlib class library be compiled, and once this
-   is done, install the new runtime, followed by corlib.
-
-   Once this is done, you can continue building your entire
-   environment.
-
-   For instance you just need to:
-   1.- Upgrade your Mono runtime (you might better do it with the 
-   mono-build.sh script available in the <a 
-   href="http://www.go-mono.com">download</a> page.
-   2.- Get the latest mono-lite tarball from the daily snapshots 
-   <a href="http://www.go-mono.com/daily/">page</a>, unzip and 
-   untar and copy all the dll files to your install path lib 
-   directory (typically pointed by the $MONO_PATH variable).
-   Copy all the exe files to the install path bin directory.
-   3.- Then checkout or update your mcs CVS copy. Then follow 
-   the steps described in mcs/INSTALL.txt.
-
-Q: Will it be possible to use the CLI features without using byte codes or the JIT?
-
-A: Yes. The CLI engine will be made available as a shared library.
-   The garbage collection engine, the threading abstraction, the
-   object system, the dynamic type code system and the JIT are
-   available for C developers to integrate with their applications if
-   they wish to do so. 
-
-Q: Will you have new development tools?
-
-A: With any luck, Free Software enthusiasts will contribute tools to
-   improve the developer environment.  These tools could be developed
-   initially using the Microsoft implementation of the CLI and then
-   executed later with Mono.
-
-   We are recommending people to use and contribute to existing
-   projects like SharpDevelop, Anjuta and Eclipse.
-
-Q: What kind of rules make the Common Intermediate Language useful for
-   JITers?
-
-A: The main rule is that the stack in the CLI is not a general purpose
-   stack.   You are not allowed to use it for other purposes than
-   computing values and passing arguments to functions or return
-   values.  
-
-   At any given call or return instruction, the types on the stack
-   have to be the same independently of the flow of execution of your
-   code. 
-
-Q: Is it true that the CIL is ideal for JITing and not efficient for
-   interpreters?
-
-A: The CIL is better suited to be JITed than JVM byte codes, but you
-   can interpret them as trivially as you can interpret JVM byte
-   codes. 
-
-Q: Isn't it a little bit confusing to have the name of "XSP" (the same 
-   as in the Apache Project) for the ASP.NET support in Mono?.
-
-A: In Mono, xsp is just the name of the C# code generator for ASP.NET 
-   pages. In the Apache Project, it is a term for the "eXtensible Server 
-   Pages" technology so as they are very different things, they don't 
-   conflict.
-
-Q: Is there any plan to develop an aspx server for Mono?.
-
-A: The XSP reference server is available and you can also use mod_mono
-   with Apache.
-
-Q: Is there any way I can develop the class libraries using Linux yet?
-
-A: Yes.  Mono has been self hosting since May 2002.
-
-Q: Is there any way I can install a known working copy of mono in /usr, 
-   and an experimental copy somewhere else, and have both copies use 
-   their own libraries? (I'm still not very good at library paths in 
-   Linux)
-
-A: Yes. Just use two installation prefixes.
-
-Q: How should I write tests or a tests suite?
-
-A: If you do a test suite for C#, you might want to keep it 
-   independent of the Mono C# compiler, so that other compiler 
-   implementations can later use it.  
-
-Q: Would it be too terrible to have another corlib signed as mscorlib? 
-
-A: We rename corlib to mscorlib also when saving the PE files, in fact, 
-   the runtime can execute program created by mono just fine.  
-
-Q: Is it possible to build a C# file to some sort of intermediate format which 
-   can linked into a final module, like the traditional .c -> .o -> .so path? 
-   
-A: You can use: 
-
-	mcs /target:library file1.cs, mcs /target:library file2.cs, 
-	mcs /target:exe file1.dll file2.dll /out:mybin.exe
-
-Q: Is there any plans for implementing remoting in the near future?
-
-A: The remoting infrastructure is in place.  We have implementations
-   of the TcpChannel, HttpChannel and the Soap and Binary Formatters.
-   They are compatible with .NET.
-
-   However, some classes from the library may have a different binary
-   representation, because they may have a different internal data
-   structure, so for example you won't be able to exchange a Hastable
-   object between Mono and MS.NET. It should not be a problem if you
-   are using primitive types, arrays or your own classes. In any case,
-   could you post a test case?
-
-
-Q: My C code uses the __stdcall which is not availble on Linux, how can I
-   make the code portable Windows/Unix across platforms?
-
-A: Replace the __stdcall attribute with the STDCALL macro, and include this
-   in your C code for newer gcc versions:
-
-	#ifndef STDCALL
-	#define STDCALL __attribute__((stdcall))
-	#endif
-
-Q: I want to be able to execute Mono binaries, without having to use the "mono"
-   command.  How can I do this?
-
-A: From Carlos Perelló:
-
-   <i>I think that the best solution is the binfmt feature with the
-   wrapper that exists with Debian packages at:
-
-   <a href="http://www.debianplanet.org/mono/dists/unstable/main/source/admin/">http://www.debianplanet.org/mono/dists/unstable/main/source/admin/</a>
-
-   If you want use it with Big endian machines, you should apply a patch
-   (<a href="http://carlos.pemas.net/debian/mono/binfmt-detector-cli.c.diff">http://carlos.pemas.net/debian/mono/binfmt-detector-cli.c.diff</a>)
-
-   It works really good and lets you use wine also, it reads the .exe file
-   headers and check if it's a .net executable.
-
-   This way you just execute: ./my-cool-mono-application.exe and it works
-   without the need of any wrapper.</i>
-
-Q: I see funny characters when I run programs, what is the problem?
-
-A: (From Peter Williams and Gonzalo Paniagua):
-
-   This is Red Hat 9 (probably) using UTF8 on its console; the bytes are
-   the UTF8 endianness markers.   You can do:
- 
-	 LC_ALL=C mono myexe.exe
-
-   And they wont show up.
-
-   Alternatively, you can do:
-
-        $ echo -e "\033%G"
-
-   to enable UTF-8 on the console.
-
-<a name="asp">
-** Mono and ASP.NET
-
-Q: Does Mono support ASP.NET?
-
-A: Yes. 
-
-   Mono supports ASP.NET, we have shown an unmodified IBuySpy
-   installation running on Mono as well as various other programs.  You can
-   try it yourself downloading the XSP server. 
-
-Q: Do I need install cygwin to work on ASP.NET in mono or Linux is enough since 
-   it is self host right now.
-
-A: Linux is enough.
-
-Q: How can I run ASP.NET-based applications with Mono?
-
-A: You need the Mono runtime and a hosting web server.  Currently we distribute a 
-   small web server called `xsp' which is used to debug applications, or you can choose
-   to use Daniel's Apache 2 module.
-
-Q: Any plan to make ASP.NET in mono works with Apache in Linux?.
-
-A: Daniel has authored an Apache2 Module for Mono that hosts the ASP.NET runtime
-   and is available here: <a
-   href="http://apacheworld.org/modmono/">http://apacheworld.org/modmono/</a>
-
-Q: Will you support Apache 1?
-
-A: Modules developed for Apache 2 are not compatible with Apache 1.3
-   Daniel plans to support Apache 1.3 in the future but the current focus is on
-   Apache 2, because of the better support for threading and Windows.
-
-Q: Can I run Apache 1 and Apache 2 on the same machine?
-
-   You can always keep a copy of Apache 2 running in parallel with your Apache
-   1.3 (either different port or using a reverse proxy).
-
-   You can also bind the two servers to different IP addresses on the
-   same physical machine.
-
-<a name="ado">
-** Mono and ADO.NET
-
-Q: What is the status of ADO.NET support?. Could I start migrating 
-   applications from MS.NET to Mono?.
-
-A: You could start right now using the ADO.NET support in mono, of course,
-   if you want to help filling the missing gaps while you develop your app
-   :-) Well, what I mean is that we're not that far to having full ADO.NET
-   support in Mono, and we've got a lot of working things, so if we could
-   get more help, we'd finish it really soon :-)
-
-Q: In developing the data architecture for the application are there and
-   objects I should stay away from in order to insure the smoothest possible
-   transition (minimum code rewrite) to Mono's ADO.NET implementation?  (For
-   example, strongly typed datasets versus untyped datasets, etc...)
-
-A: We are implementing all the classes in Microsoft .NET's System.Data, so
-   you can be sure that things will work the same in Mono as with the Microsoft
-   implementation. 
-
-Q: Does Mono can to connect to Sybase by using Mono.Data.*?
-
-A: Yes. use Mono.Data.SybaseClient. First of all you have to create a
-   SybaseConnection, and then, from it, use it as any other
-   IDbConnection-based class.
-
-<a name="java">
-** Mono and Java
-   
-Q: Why don't you use Java?  After all, there are many languages that
-   target the Java VM.
-
-A: You can get very good tools for doing Java development on free
-   systems right now.  <a href="http://www.redhat.com">Red Hat</a> has
-   contributed a <a href="http://gcc.gnu.org">GCC</a> <a
-   href="http://gcc.gnu.org/java/">front-end for Java</a> that can take
-   Java sources or Java byte codes and generate native executables; <a
-   href="http://www.google.com/search?q=transvirtual">Transvirtual</a>
-   implemented
-   <a href="http://www.kaffe.org">Kaffe</a> a JIT engine for Java;
-   Intel also has a Java VM called <a
-   href="http://www.intel.com/research/mrl/orp/">ORP</a>.
-
-   The JVM is not designed to be a general purpose virtual machine.
-   The Common Intermediate Language (CIL), on the other hand, is
-   designed to be a target for a
-   wide variety of programming languages, and has a set of rules
-   designed to be optimal for JITers.
-
-Q: Could Java target the CLI?
-
-A: Yes, Java could target the CLI, Microsoft's J# compiler does that.
-
-   The <a href="http://weblog.ikvm.net/">IKVM</a> project builds a
-   Java runtime that works on top of .NET and on top of Mono.  IKVM is
-   essentially a JIT compiler that translates from JVM bytecodes into
-   CIL instructions, and then lets the native JIT engine take over. 
-
-Q: Is it possible to write a JVM byte code to CIL converter?
-
-A: Yes, this is what <a href="http://weblog.ikvm.net">IKVM</a> does.
-
-Q: Could mono become a hybrid CIL/java platform?
-
-A: This can be obtained easily with IKVM.
-
-Q: Do you plan to implement a Javascript compiler?
-
-A: Yes.  The beginnings of the JScript compiler can be found on CVS.
-   Cesar coordinates this effort.
-
-Q: Can Mono or .NET share system classes (loaded from mscore.dll and other 
-   libs) or will it behave like Sun's Java VM?
-
-A: What you can do with mono is to load different applications in their own
-   application domain: this is a feature of the CLR that allows sandboxing
-   applications inside a single process space. This is usualy exploited to
-   compartmentalize different parts of the same app, but it can also be
-   effectively used to reduce the startup and memory overhead.
-   Using different appdomains the runtime representation of types and
-   methods is shared across applications.
-
-<a name="extending"></a>
-** Extending Mono
-
-Q: Would you allow other classes other than those in the
-   specification?
-
-A: Yes.  The Microsoft class collection is very big, but it is by no
-   means complete.  It would be nice to have a port of `Camel' (the
-   Mail API used by Evolution inspired by Java Mail) for Mono
-   applications.  
-
-   You might also want to look into implementing CORBA for Mono.  Not
-   only because it would be useful, but because it sounds like a fun
-   thing to do, given the fact that the CLI is such a type rich
-   system. 
-
-   For more information on extending Mono, see our <a
-   href="ideas.html">ideas</a> page.
-
-Q: Do you plan to Embrace and Extend .NET?
-
-A: Embracing a good technology is good.  Extending technologies in
-   incompatible ways is bad for the users, so we do not plan on 
-   making incompatible changes to the technologies.
-
-   If you have innovative ideas, and want to create new classes, we 
-   encourage you to make those classes operate correctly well in both
-   Mono and .NET.
-
-   Today Mono ships with a number of extra libraries that were
-   developed either by members of the Mono community, or other
-   groups.  
-
-   In some cases, we have found the bits from Microsoft to be
-   incomplete, but we avoid breaking the API, instead we expose the
-   missing functionality in new assemblies (See Mono.Security and
-   System.Security).
-
-Q: Is there any way I can develop the class libraries using Linux yet?
-
-A: Yes.  Mono has been selfhosting since March 2002. 
-
-Q: Is there any way I can install a known working copy of mono in /usr, 
-   and an experimental copy somewhere else, and have both copies use 
-   their own libraries? (I'm still not very good at library paths in 
-   Linux)
-
-A: Yes. Just use two installation prefixes.
-
-
-<a name="portability"></a>
-** Portability
-
-Q: Will Mono only work on Linux?
-
-A: Currently, we are doing our work on Linux-based systems and
-   Windows.  We do not expect many Linux-isms in the code, so it
-   should be easy to port Mono to other UNIX variants.   
-
-Q: What about Mono on non Linux-based systems?
-
-A: Our main intention at Ximian is to be able to develop GNOME
-   applications with Mono, but if you are interested in providing a
-   port of the Winforms classes to other platforms (frame buffer or
-   MacOS X for example), we would gladly integrate them, as long
-   they are under an open source license.  
-
-Q: What operating systems/CPUs do you support
-
-A: Mono currently runs on Linux, Windows, Solaris, FreeBSD, HP-UX and
-   MacOS X.
-
-   There is a JIT engine available for x86 processors that can
-   generate code and optimizations tailored for a particular CPU.
-
-   Interpreters exist for the SPARC v8, SPARC v9, Itanium, HP-PA,
-   PowerPC and StrongARM CPUs.
-
-Q: Does Mono run on Windows?
-
-A: Yes.   You can get pre-compiled
-   binaries from <a href="http://www.go-mono.com/download.html">http://www.go-mono.com/download.html</a>
-
-Q: Does Mono run on Linux?
-
-A: Yes.  You can get pre-compiled
-   binaries from <a href="http://www.go-mono.com/download.html">http://www.go-mono.com/download.html</a>
-
-Q: Will I require Cygwin to run mono?
-
-A: No.  Cygwin is only required to build Mono.
-
-Q: Will Mono depend on GNOME?
-
-A: It will depend only if you are using a particular assembly (for
-   example, for doing GUI applications).  If you are just interested
-   in Mono for implementing a `Hello World Enterprise P2P Web
-   Service', you will not need any GNOME components.
-
-Q: Do you plan to port Rhino to C#?.
-
-A: Eto Demerzal has started a Rhino port to C#.
-
-Q: Has anyone succeeded in building a Mac version of the C# environment. 
-   If so can you explain how?  
-
-A: Yes, Mono works on Linux/PPC and MacOS X (10.2 and 10.3)
-
-<a name="reuse"></a>
-** Reusing Existing Code
-
-Q: What projects will you reuse or build upon?
-
-A: We want to get Mono in the hands of programmers soon.  We are
-   interested in reusing existing open source software.
-
-Q: Will I be able to use Microsoft SQL Server 2000 or will I need to switch
-   to a specific Open Source Database. Will I need to recode?
-
-A: There is no need to rewrite your code as long as you keep using
-   Microsoft SQL Server.  If you want to use an open source database,
-   you might need to make changes to your code.
-
-Q: What do I need to watch out for when programming in VB.NET so that I'm
-   sure to be able to run those apps on Linux?
-
-A: Not making any P/Invoke or DLL calls should and not using anything in
-   the Microsoft.* namespaces should suffice. Also do not use any 
-   Methods/Classes marked as "This type/method supports the .NET Framework 
-   infrastructure and is not intended to be used directly from your code." 
-   even if you know what these classes/methods do.
-
-Q: Will built-in reporting be supported for crystal reports? This is a
-   heavily used part of our system.
-
-A: . Crystal Reports are propriety. Someone may try to emulate
-   the behavior, but no-one has yet volunteered.
-
-Q: Who about writing to the registry? As I understand it, Linux does not have
-   a counterpart to the registry. Should I avoid relying on that feature?
-
-A: Try to avoid it. Although there would be a emulation for registry in
-   Mono too. GNOME does have a registry like mechanism for configuration. But
-   Even if gnome has a configuration system similar to the registry, the keys 
-   will not be equal, so you will probably end up having to do some runtime 
-   detection, and depending on this load an assembly that has your 
-   platform-specific hacks.
-
-Q: System.Data.SqlClient with FreeTDS, will you port parts of these to C# and 
-   use them?
-
-A: This has been done.
-
-<a name="gcc"></a>
-** Mono and GCC
-
-Q: Are you working on a GCC front-end to C#? 
-
-A: We are not working on a GCC front-end for C#
-
-Q: Will you support C/C++ on the Mono VM?
-
-A:The open64 compiler effort from SGI helps a lot in this direction.
-
-   The Open64 compiler is a modified version of GCC that
-   generates a new intermediate language instead of RTL.  This could be
-   the foundation to generate CIL code, and to implement the upcoming
-   Managed extensions to C++ from ECMA.
-
-   Open64 (and other derivative forks of GCC) split the gcc front-ends
-   from the backends by using the WHIRL intermediate representation.  
-   Kris has begun the implementation of a translator from WHIRL to CIL.
-
-   So it will be possible to use the GCC compilers to target the CIL.
-
-Q: What about Managed C++?
-
-A: Once a full translator for WHIRL exists, we are interested in
-   looking at expanding the GCC frontends to include extensions for
-   Managed C++.
-
-Q: What about making a front-end to GCC that takes CIL images and
-   generates native code?
-
-A: There is no active work on this area, but Mono already provides
-   pre-compilation services (Ahead-of-Time compilation).
-
-
-<a name="performance"></a>
-** Performance
-
-Q: How fast will Mono be?
-
-A: We can not predict the future, but a conservative estimate is that
-   it would be at least `as fast as other JIT engines'.
-
-   Mono's JIT engine has been recently re-architected, and it provides
-   many new features, and layers suitable for optimization.  It is
-   relatively easy to add new optimizations to Mono. 
-
-   The CIL has some advantages over the Java byte code: The existance
-   of structs in addition to classes helps a lot the performance and
-   minimizes the memory footprint of applications.
-
-   Generics in the CLI world are first-class citizens, they are not
-   just a strong-typing addition to the language.  The generic
-   specifications are embedded into the instruction stream, the JIT
-   uses this information to JIT a unique instances of a method that is
-   optimized for the type arguments.
-
-   The CIL is really an intermediate representation and there are a
-   number of restrictions on how you can emit CIL code that simplify
-   creating better JIT engines.
-
-   For example, on the CIL, the stack is not really an abstraction
-   available for the code generator to use at will.  Rather, it is a
-   way of creating a postfix representation of the parsed tree.  At
-   any given call point or return point, the contents of the stack are
-   expected to contain the same object types independently of how the
-   instruction was reached.
-
-<a name="licensing"></a>
-** Licensing
-
-Q: Will I be able to write proprietary applications that run with
-   Mono?
-
-A: Yes.  The licensing scheme is planned to allow proprietary
-   developers to write applications with Mono.
-   
-Q: What license or licenses are you using for the Mono Project?
-
-A: The C# Compiler is released under the terms of the <a 
-   href="http://www.opensource.org/licenses/gpl-license.html">GNU GPL</a>.  The runtime
-   libraries are under the <a
-   href="http://www.opensource.org/licenses/lgpl-license.html">GNU
-   Library GPL</a>.  And the class libraries are released
-   under the terms of the <a
-   href="http://www.opensource.org/licenses/mit-license.html">MIT X11</a>
-   license.
-
-   The Mono runtime and the Mono C# Compiler are also available under
-   a proprietary license for those who can not use the LGPL and the
-   GPL in their code.  
-
-   For licensing details, contact <a
-   href="mailto:mono-licensing at ximian.com">mono-licensing at ximian.com</a>
-
-
-Q: I would like to contribute code to Mono under a particular
-   license. What licenses will you accept?
-
-A: We will have to evaluate the licenses for compatibility first,
-   but as a general rule, we will accept the code under the same
-   terms of the "container" module. 
-
-<a name="patents"></a>
-** Patents
-
-Q: Could patents be used to completely disable Mono (either submarine
-   patents filed now, or changes made by Microsoft specifically to
-   create patent problems)?
-
-A: First some background information.
-
-   The .NET Framework is divided in two parts: the ECMA/ISO covered
-   technologies and the other technologies developed on top of it like
-   ADO.NET, ASP.NET and Windows.Forms.
-
-   Mono implements the ECMA/ISO covered parts, as well as being a
-   project that aims to implement the higher level blocks like
-   ASP.NET, ADO.NET and Windows.Forms.  
-
-   The Mono project has gone beyond both of those components and has
-   developed and integrated third party class libraries, the most
-   important being: Debugging APIs, integration with the Gnome
-   platform (Accessibility, Pango rendering, Gdk/Gtk, Glade, GnomeUI),
-   Mozilla, OpenGL, extensive database support (Microsoft only
-   supports a couple of providers out of the box, while Mono has
-   support for 11 different providers), our POSIX integration
-   libraries and finally the embedded API (used to add scripting to
-   applications and host the CLI, or for example as an embedded
-   runtime in Apache). 
-
-   The core of the .NET Framework, and what has been patented by
-   Microsoft falls under the ECMA/ISO submission.  Jim Miller at
-   Microsoft has made a statement on the patents covering ISO/ECMA,
-   (he is one of the inventors listed in the patent): <a
-   href="http://web.archive.org/web/20030609164123/http://mailserver.di.unipi.it/pipermail/dotnet-sscli/msg00218.html">here</a>.
-
-   Basically a grant is given to anyone who want to implement those
-   components for free and for any purpose.
-
-   The controversial elements are the ASP.NET, ADO.NET and
-   Windows.Forms subsets.  Those are convenient for people who need
-   full compatibility with the Windows platform, but are not required
-   for the open source Mono platform, nor integration with today's
-   Mono's rich support of Linux. 
-
-   The Mono strategy for dealing with these technologies is as
-   follows: (1) work around the patent by using a different
-   implementation technique that retains the API, but changes the
-   mechanism; if that is not possible, we would (2) remove the pieces
-   of code that were covered by those patents, and also (3) find prior
-   art that would render the patent useless.
- 
-   Not providing a patented capability would weaken the
-   interoperability, but it would still provide the free software /
-   open source software community with good development tools, which
-   is the primary reason for developing Mono.  
-
-   The patents do not apply in countries where software patents are
-   not allowed.
-
-   For Linux server and desktop development, we only need the ECMA
-   components, and things that we have developed (like Gtk#) or Apache
-   integration.  
-
-Q: Is Mono only an implementation of the .NET Framework?
-
-A: Mono implements both the .NET Framework, as well as plenty of class
-   libraries that are either Unix specific, <a
-   href="http://www.gnome.org">Gnome</a> specific, or that are not
-   part of the .NET Framework but people find useful. 
-
-   The following map shows the relationship between the components:
-
-   <img src="http://primates.ximian.com/~miguel/tmp/map.png">
-
-<a name="obfuscation"></a>
-** Obfuscation
-
-Q: Are there any obfuscation programs for Mono/Linux?
-
-A: We are not aware of these, but some from Windows might work.
-
-Q: What could I do to avoid people decompiling my program?
-
-A: You can use the bundle functionality in Mono. 
-
-   This would bundle your binary inside a Mono runtime instance, so
-   you distribute a single executable that contains the code inside.
-   Notice that for this to work and be practical, you need to get a
-   commercial license to the Mono runtime.
-
-   The reason is that the bundle functionality is covered by the LGPL:
-   so you would have to distribute your assemblies separatedly to allow
-   developers to relink mono which would defeat the purpose of bundling
-   for obscuring your code.
-
-   It is not impossible to break, just like any other obfuscators.
-
-   That being said, value these days does not lie in particular
-   tiny routines, but lies in the large body of work, and if someone
-   steals your code, you are likely going to find out anyways.
-
-Q: Any other option?
-
-A: You could precompile with --aot your code, then disassemble the
-   original .exe, and remove all the code, then re-assemble and ship
-   both the vessel .exe and the precompiled code.  
-
-   This is not a supported configuration of Mono, and you would be 
-   on your own in terms of dealing with bugs and problems here.
-
-   Get the companies that build the obfuscation packages to read 
-   the ECMA spec and fix the bugs in their products that generate 
-   non-standard binaries (or, if they expose a bug in mono, please
-   file a report in our bugzilla).  
-
-   Pay Ximian/Novell to spend the development time needed to get mono
-   to support the broken binaries that some of the obfuscation
-   packages generate (or contribute that support).
-
-<a name="etc"></a> 
-** Miscellaneous Questions
-
-Q: You say that the CLI allows multiple languages to execute on the
-   same environment.  Isn't this the purpose of CORBA?
-
-A: The key difference between CORBA (and COM) and the CLI is that the
-   CLI allows "data-level interoperability" because every
-   language/component uses the same data layout and memory management.
-
-   This means you can operate directly upon the data types that someone
-   else provides, without having to go via their interfaces.  It also
-   means you don't have to "marshal" (convert) parameters (data
-   layouts are the same, so you can just pass components directly) and
-   you don't have to worry about memory management, because all
-   languages/components share the same garbage collector and address
-   space.  This means much less copying and no need for reference
-   counting.
-
-Q: Will you support COM?
-
-A: The runtime will support XPCOM on Unix systems and COM on Windows.
-   Most of the code for dynamic trampolines exists already.
-
-Q: Will Ximian offer certifications on Mono or related technologies?. 
-
-A: It's possible. But there is no plan about this. So the short answer is no.
-
-Q: How can I report a bug?
-
-A: The best thing is to track down the bug and provide a simple test
-   to reproduce the bug.  You can then add the bug to our bug tracking
-   system.  You can use our <a href="bugs.html">Bug Form</a> to enter
-   bugs for the appropriate component.
-
-   Please provide information about what version of mono you're using
-   and any relevant details to be able to reproduce the bug. Note that
-   bugs reported on the mailing-list may be easily forgotten, so it's
-   better to file them in the <a href="http://bugzilla.ximian.com/enter_bug.cgi">bug tracking system</a>.
-
-Q: Does mcs support the same command line options as the MS C# 
-   compiler?
-
-A: The Mono C# compiler now supports the same command line
-   arguments as the Microsoft C# compiler does.
-
-Q: How about getting searchable archives on lists.ximian.com? 
-
-A: You can perform a search on the mono-related mailing lists 
-   <a href="http://www.go-mono.com/mailing-lists.html">here</a>.
-
-Q: When using mono from cvs or from a snapshot, I get an error messaage
-   saying that Mono and the runtime are out of sync. How do I fix that?
-
-A: If you use mono from cvs, you need to be prepared for changes in the
-   runtime internals. This means that you should keep a working setup 
-   before blindling updating (a working setup may just be the last released
-   tarball or a recent binary snapshot).
-   Usually, compiling corlib with mcs before recompiling the C runtime does
-   the right thing (but occasionally you may need to do it the other 
-   way around).
-
-Q: Why are you going for a GtkHtml implementation?
-
-A: GtkHTML is just a lightweight HTML rendering engine that does not
-   support CSS, so we need it to look decent for those of us that will 
-   be using the documentation in our day-to-day work on Linux. The 
-   Web-based interfaces lack the agility that you get from a native GUI
-   tool to browse your documentation. Probably later on, we will write 
-   scripts and generate a full documentation set that is web-browsable, 
-   but we need a command-line and GUI tools that we can use natively on 
-   Linux when disconnected from the Web (and that has better 
-   interactions than a web page).
-
-Q: Is there a command-line tool that allows me to access .NET interactively?
-
-A: There are several but one that is free software and uses MCS is the one
-   Dennis Lu from Rice University is working on; a REPL C# interpreter.
-
-Q: Is it possible to use Visual C++ with Mono?.
-
-A: It's possible to run VC++ generated apps under Mono, but we do not
-   provide a Manager C++ compiler ourselves.
-
-Q: Does Mono support generics?.
-
-A: Yes, the Mono runtime now supports the new Generics extensions, and
-   there is also support for generics in our new compiler: `gmcs'.
-
-   The Mono C# 1.0 compiler (mcs) will ship with various C# 2.0
-   features, but generics will remain on the separate compiler (gmcs)
-   as this code is not as tested as the main compiler.
-
-<a name="problems"></a>
-** Mono Common Problems
-
-   If you are having problems compiling or running Mono software
-   or if you think that you found a bug, etc. Please visit the
-   <a href="http://monoevo.sf.net/mono-common-problems.html">Mono Common Problems</a> document and try there. 
-
-** Credits
-
-   The FAQ contains material contributed by Miguel de Icaza, Jaime Anguiano, Lluis Sánchez.
diff --git a/web/firebird b/web/firebird
deleted file mode 100755
index 6d3bc0b..0000000
--- a/web/firebird
+++ /dev/null
@@ -1,140 +0,0 @@
-* Firebird and Interbase Data Provider
-
-<ul>
-	<li>ADO.NET Data Provider for Firebird and Interbase databases</li>
-
-	<li>Does not exist in Mono, but is a separate project</li>
-	
-	<li>The <a href="http://firebird.sourceforge.net/index.php">Firebird Relational Database</a> is 
-	is an independent project which uses source code based on the Interbase source code released
-	by Borland under the Interbase Public License</li>
-	
-	<li>Both the Firebird Relational Database and the Firebird .NET Data Provider can be
-	downloaded from <a href="http://sourceforge.net/projects/firebird/">here</a></li>
-	
-	<li>The Firebird .NET Data provider has been made
-    available by Carlos Guzmán Álvarez (aka "Carlos G.A."), who has also made a
-    number of contributions to the OdbcJdbc code</li>
-
-	<li>Bugs with Mono or the data provider should be reported 
-	in Mono's Bugzilla <a href="http://bugzilla.ximian.com/">here</a>.  If you
-	do not have Bugzilla user account, it is free 
-	and easy to create one <a href="http://bugzilla.ximian.com/createaccount.cgi">here</a>.</li>
-	
-</ul>
-
-** Current Status
-
-<ul>  
-	<li>Current stable version: 1.5.1</li>
-	
-	<li>Current developement version: 1.6</li>
-	
-	<li>The new data provider/driver is written in C# and provides a high-performance native
-        implementation of the GDS32/API functions. This means that .Net developers
-        will be able to access Firebird databases without the need of Firebird
-        client install</li>
- 
-    <li>In support of the new module, a new mailing list
-        <a href="http://lists.sourceforge.net/lists/listinfo/firebird-net-provider">firebird-net-provider</a> has 
-        been created. Please use this list for any 
-        questions that you may have about the provider</li>           
-</ul>   
-
-** New features & enhancements in 1.6 version
-
-<ul>
-	<li>Firebird Embedded Server support.</li>
-	<li>New FbScript class implementation.</li>
-	<li>Improved connection pooling.</li>
-	<li>Improved array datatype support.</li>
-</ul>
-   
-** Testing
-
-<ul>
-	
-	<li>Need a working mono and mcs</li>
-	
-	<li>Need access to a Firebird Relational Database or you can download
-	it from <a href="http://firebird.sourceforge.net">here</a></li>
-	
-	<li>Get the Firebird .NET data provider from here as 
-	<a href="http://lists.sourceforge.net/lists/listinfo/firebird-net-provider">firebird-net-provider</a>.  Make
-	sure the Firebird .NET data provider binary assembly FirebirdSql.Data.Firebird.dll is
-	installed in the same place as the mono class libraries.</li>
-	
-	<li>Has a ConnectionString format:
-<pre>
- "Database=databasefile.gdb;User=user;Password=pass;Dialect=3;Server=hostname"
-</pre>
-	
-	</li>
-	
-	<li>C# Example:
-	
-<pre>
- using System;
- using System.Data;
- using FirebirdSql.Data.Firebird;
- 
- public class Test 
- {
-    public static void Main(string[] args)
-    {
-        string connectionString = 
-	       "Database=C:\\PROGRAM FILES\\FIREBIRD\\EXAMPLES\\EMPLOYEE.GDB;" +
-	       "User=SYSDBA;" +
-	       "Password=masterkey;" +
-	       "Dialect=3;" +
-	       "Server=localhost";
-	       
-       IDbConnection dbcon = new FbConnection(connectionString);
-       dbcon.Open();
-       IDbCommand dbcmd = dbcon.CreateCommand();
-       string sql = "SELECT * FROM employee";
-       dbcmd.CommandText = sql;
-       IDataReader reader = dbcmd.ExecuteReader();
-       while(reader.Read()) {
-            object dataValue = reader.GetValue(0);
-            string sValue = dataValue.ToString();
-            Console.WriteLine("Value: " + sValue);
-       }
-       // clean up
-       reader.Close();
-       reader = null;
-       dbcmd.Dispose();
-       dbcmd = null;
-       dbcon.Close();
-       dbcon = null;
-    }
- }
-</pre>
-	</li>
-	<li>Building C# Example:
-	<ul>
-		<li>Save the example to a file, such as, TestExample.cs</li>
-		<li>Build on Linux:
-<pre>
-	mcs TestExample.cs -r System.Data.dll \
-	    -r FirebirdSql.Data.Firebird.dll
-</pre>
-		</li>
-		<li>Build on Windows via Cygwin:
-<pre>
-	mono C:/cygwin/home/MyHome/mono/install/bin/mcs.exe \
-	     TestExample.cs \
-	     -lib:C:/cygwin/home/MyHome/mono/install/lib \
-	     -r System.Data.dll -r FirebirdSql.Data.Firebird.dll
-</pre>
-		</li>
-	</ul>
-	</li>
-	<li>Running the Example:
-<pre>
-mono TestExample.exe
-</pre>
-</li>
-
-</ul>
-
diff --git a/web/gcc-frontend b/web/gcc-frontend
deleted file mode 100644
index c892749..0000000
--- a/web/gcc-frontend
+++ /dev/null
@@ -1,7 +0,0 @@
-* The GCC front-end
-
-	Jeremy Singer has developed a .NET backend for GCC, his
-	research work is available <a
-	href="http://www.cl.cam.ac.uk/~jds31/research/gccnet/">here</a>.
-
-	
diff --git a/web/hackers b/web/hackers
deleted file mode 100644
index abe607e..0000000
--- a/web/hackers
+++ /dev/null
@@ -1,67 +0,0 @@
-* Mono Hackers Hall Of Fame
-
-Without the help, the skills and the time of many passionate developers outside of 
-the Ximian Mono team, Mono would not be where it is today.
-
-Many of them do it for fun, some do it because they really want a nice CLR they 
-can hack on, some do it because they need a working solution to some development 
-issues and mono is the ideal tool for the job. 
-
-Some of them may start contributing because they want a mention in the
-<b>Mono Hackers Hall Of Fame</b>! Whatever the cause, join us in a big<br>
-<h1 align="center">Thank you!</h1>
-
-* Mono Hackers
-
-** John Luke
-
-John Luke has touched many aspects of Mono, including the core
-libraries, Gtk#, MonoDevelop, and Monodoc. His skills are apparent
-from his work. He sets an example by writing documentation along with
-his patches.
-
-** Dan Morgan
-
-Dan Morgan is an important contributor to the System.Data related
-assemblies but their code and has contributions that have touched
-plenty of areas in the Mono project as well as helping with the Win32
-installers on the early Mono days.
-
-** Tim Coleman
-
-Tim Coleman contributions span System.Data and set the foundation for
-some of the later work on System.Web.Services and has contributed all
-around Mono.
-
-** Todd Berman
-
-Todd Berman is a steady contributor to Mono.  He has worked
-everywhere: from the Class Libraries, to the early implementation of
-the GAC and most recently has lead the effort to develop, port and
-maintain MonoDevelop an IDE for the Mono environment.  His help has
-been key to the development of Mono.
-
-** Zoltan Varga
-
-Zoltan has contributed significantly to Mono, with bug reports and bug 
-fixes as well as pushing the envelope of the things that can be done in
-and with the mono runtime: the gcc-based ngen compiler, code coverage
-and more recently his work with Reflection.Emit that got mono to the 
-point of running the IKVM Java virtual machine.
-
-** Sergey Chaban
-
-Sergey has been a long time contributor to the project, from the early
-work on the class libraries that were critical to Mono's origin: every
-time you use a Hashtable in Mono, it runs Sergey's code, to the
-low-level optimizations on the JIT engine and to his work on ILASM and
-the PEToolkit.  And countless other things.
-
-** Nick Drochak
-
-The first, deserved, entry in the <b>Mono Hackers Hall Of Fame</b> is for
-Nick Drochak, who joined us in the first days of Mono and built the testing 
-infrastructure for the C# assemblies, fixed tons of bugs and even adventured 
-himself in the lands of the C runtime. His work is invaluable for keeping
-Mono on the right track through the daily changes in the codebase.
-
diff --git a/web/ideas b/web/ideas
deleted file mode 100644
index 83e4eb3..0000000
--- a/web/ideas
+++ /dev/null
@@ -1,71 +0,0 @@
-* Ideas
-
-	There are many pending classes that need to be implemented.  Those have
-	the highest impact in the Mono project: the sooner they are done,
-	the sooner we can start using this platform to create new and
-	exciting applications.
-
-	That being said, if you are not very excited about working on class
-	libraries, here is a list of other related projects or tools that might
-	be useful to the Mono project.
-
-	Here are a few ideas of tools, classes and projects that you
-	could start. More are forthcoming.
-
-<a name="runtime">
-** Runtime
-
-<a name="classes">
-** Classes
-
-	<ul>
-		* Implement a JXTA protocol implementation:
-		<a href="http://www.jxta.org">http://www.jxta.org</a>
-
-		* Implement a Mail API, similar to Camel or JavaMail (Camel has
-		  significant architecture features that are required on a real
-		  mailer).
-
-		  You can check the current C 
-		<a href="http://cvs.gnome.org/bonsai/rview.cgi?dir=evolution%2Fcamel">
-		Camel implementation</a>.
-
-		  Such an implementation could be used both with
-		  Microsoft .NET and Mono.
-
-		* Interfacing to Multimedia systems.  You might want
-		  to look into the Quicktime API.  I know <a
-		  href="mailto:vladimir at ximian.com">Vladimir</a> has
-		  researched the problem before 
-
-	</ul>
-
-<a name="projects">
-** Projects
-
-	This list of projects ideas is outdated
-
-		* Once <a href="http://remoting-corba.sourceforge.net/">CORBA</a> is done, implement the Bonobo interfaces
-		  to allow people to use Bonobo components in Mono and
-		  Mono components with Bonobo.  The best of both worlds!
-
-		* A naming space for Mono.  An object naming space is
-		  a very powerful tool.  Bonobo implements a moniker
-		  system that is more powerful than the original
-		  moniker concept that was pioneered by COM/OLE in the
-		  Microsoft world.
-
-		  Our implementation builds on a concept, and we have
-		  made it simpler, more powerful, more extensible and
-		  a much better mechanism than the equivalent monikers
-		  on Windows. 
-
-		  Implementing Mono monikers would benefit both
-		  Windows users using .NET and Mono users on Unix and
-		  Windows.  
-
-		  Here is <a
-		  href="http://primates.ximian.com/~miguel/monikers.html">an
-		  overview of the moniker system</a> in Bonobo.
-
-	</ul>
diff --git a/web/index b/web/index
deleted file mode 100644
index 52a8ced..0000000
--- a/web/index
+++ /dev/null
@@ -1,475 +0,0 @@
-<meta http-equiv="Refresh" content="0"; URL=http://www.mono-project.com/">
-<link rel="alternate" type="application/rss+xml" title="RSS" href="index.rss"/>
-
-
-	<table align="right" border=1 padding=0 width=25%>
-	 <tr>
-	    <td colspan="2" bgcolor=lightgrey>
-	      <b><center>Mono Status</center></b>
-	    </td>
-	  </tr>
-	  <tr>
-	    <td>
-	      <b><a href="c-sharp.html">C# Compiler:</a></b>
-	    </td>
-	    <td>
-	      Self hosting on Linux and .NET
-            </td>
-	  </tr>
-	  <tr>
-	    <td>
-	      <b>JIT:</b>
-	    </td>
-	    <td>
-	      Linux/x86<br>
-	      Solaris/SPARC<br>
-	      PowerPC: MacOS and Linux.<br>
-	      S390: Linux.
-	    </td>
-	  </tr>
-	  <tr>
-	    <td>
-	      <b>Interpreter:</b>
-	    </td>
-	    <td>
-	      Works for 
-	      Linux/x86, Linux/PPC, S390, StrongARM, SPARC, HPPA, SPARC v9
-	    </td>
-	  </tr>
-	  <tr>
-	    <td><b><a href="asp-net.html">ASP.NET</a></b></td>
-	    <td>Webforms and WebServices working<br></td>
-	  </tr>
-	  <tr>
-	    <td>
-	      <b><a href="class-status.html">Classes</a></b>
-	    </td>
-	    <td>
-	      All assemblies compile.
-	    </td>
-	  </tr>
-	  <tr>
-	    <td>
-	      RSS feed:
-	    </td>
-	    <td>
-	      <a href="index.rss"><img src="images/xml.gif"></a>
-	    </td>
-	  </tr>
-	  <tr>
-	    <td colspan="2" bgcolor=lightgrey>
-	      <b><center>In the news</center></b>
-	    </td>
-	  </tr>
-	
-	<tr>
-		<td>
-			<b>Beta 1 Press Coverage</b>
-		</td>
-		<td>
-			<a href="http://www.go-mono.com/beta1-press.html" target="blank">May 2004</a>: Mono Beta 1 rallies the press
-		</td>
-	</tr>
- 	 <tr>
-	
-	    <td>
-	      <b>Linux Planet</b>
-	    </td>
-	    <td>
-	      <a href="http://www.linuxplanet.com/linuxplanet/reports/5375/4/">May 3rd, 2004</a>: And then there's Mono
-	    </td>
-	  </tr>
-
-	  <tr>
-	    <td>
-	      <b>DevChannel</b>
-	    </td>
-	    <td>
-	      <a href="http://tools.devchannel.org/devtoolschannel/04/04/21/169234.shtml?tid=46">Apr 26th, 2004</a>: What is Mono and why should you care ?
-	    </td>
-</tr><tr>
-	  </tr>
-	  <tr>
-	    <td>
-	      <img src="images/2003osdirwinnerbadge.gif">
-	    </td>
-	    <td>
-	      <a href="http://osdir.com/Article198.phtml">Dec 19th, 2003</a>: Editor's Choice Award.
-	    </td>
-	  </tr>
-	  <tr>
-	    <td>
-	      <img src="images/netmagazine.png">
-	    </td>
-	    <td>
-		
-	      <a href="http://www.ftponline.com/wss/2003_TE/magazine/columns/trends">May 31st, 2003</a>: CLI integration.
-	    </td>
-	  </tr>
-	  <tr>
-	    <td>
-	      <img src="images/infoworld.png">
-	    </td>
-	    <td>
-	      <a href="http://www.infoworld.com/article/03/05/22/HNmono_1.html">May 22nd, 2003</a>: Mono 1.0 plans.
-	    </td>
-	  </tr>
-	  <tr>
-	    <td>
-	      <img src="images/infoworld.png">
-	    </td>
-	    <td>
-	      <a href="http://www.infoworld.com/article/03/03/14/11stratdev_1.html">Mar 14th, 2003</a>: Whither Mono?
-	    </td>
-	  </tr>
-	  <tr>
-	    <td>
-	      <img src="images/b2.png">
-	    </td>
-	    <td>
-	      <a href="http://www.infoworld.com/article/03/05/22/HNmono_1.html">Dec, 2002</a>: The Penguin takes flight.
-	    </td>
-	  </tr>
- 	</table>
-
-
-<p>
-	The Mono project is an open source effort sponsored by 	<a
-	href="http://novell.com">Novell</a> to create a free
-	implementation of the .NET Development Framework.
-</p>
-
-<p>
-	Mono includes <a href="c-sharp.html">a compiler</a> for the
-	C# language, a <a href="runtime.html">Common Language
-	Runtime</a> (CLR) for the Common Language Infrastructure (CLI) and a
-	set of <a href="class-library.html">class libraries</a>.  The
-	runtime can be <a href="embedded-api.html">embedded</a> into your
-	application.  It implements both <a href="ado-net.html">ADO.NET</a>
-	and <a href="asp-net.html">ASP.NET</a>.
-</p>
-<p>
-	If you have questions about the project, read <a
-	href="rationale.html">the project launch statement</a> 
-	or visit our list of <a href="faq.html">Frequently Asked
-	Questions</a>. 
-</p>
-
-<p>
-	For details on the project's future direction, read the
-	<a href="mono-roadmap.html">roadmap</a>, and <a
-	href="download.html">download</a> the latest software version.
-	You can also get a <a href="snapshots">snapshot</a> of our
-	current work, or <a
-	href="http://cvs.hispalinux.es/cgi-bin/cvsweb/?hidenonreadable=1&f=u&logsort=date&sortby=file&hideattic=1&cvsroot=mono">browse
-	the source tree.</a>
-</p>
-<p>
-	To participate in discussion and development, <a
-	href="mailing-lists.html">subscribe to our mailing lists</a>.
-	You can also visit the <a
-	href="http://www.gotmono.com/cgi-bin/yabb/YaBB.pl">forum</a> at <a
-	href="http://www.gotmono.com">GotMono</a> or the <a
-	href="http://www.nullenvoid.com/gtksharp/wiki">Gtk#</a> and
-	<a href="http://www.nullenvoid.com/mono/wiki">Mono
-	</a> Wikis.
-</p>
-
- at item Jun 30th, 2004: Mono 1.0
-
-	<table>
-	<tr>
-	  <td>
-	    <img
-	    src="http://www.go-mono.com/archive/1.0/mono1.gif"></td>
-	  <td>
-	    <b>Mono 1.0 has been released!</b><br/>
-
-	    <p>Be the first kid in your block to install the
-	    <i>it-took-us-three-years-but-we-did-it</i> development platform.
-
-	    <p>Read the <a
-	    href="http://www.go-mono.com/archive/1.0/index.html">release notes</a>
-	    or <a href="http://www.go-mono.com/download.html">download it</a></p>
-	  </td>
-	</tr>
-	</table>
-	
- at item Jun 23rd, 2004: The Mono Hackers Hall of Fame welcomes John Luke, Dan Morgan and Tim Coleman.
-
-	The <a href="http://www.go-mono.com/hackers.html">Mono Hackers Hall Of Fame</a>
-	continues to show our appreciation to the excellent
-	contributors that make <b>mono::</b> a successful free
-	software project.
-
-	John Luke, Dan Morgan and Tim Coleman are now part of the Mono
-	Hackers Hall of Fame.
-
- at item Jun 15th, 2004: Mono Beta 3 has been released
-
-	<table>
-	<tr>
-	  <td>
-	    <img
-	    src="http://www.go-mono.com/images/beta3.gif"></td>
-	  <td>
-	Our third beta has been released.
-
-	Packages and source code are available <a
-	href="download.html">on our download</a> page.
-	  </td>
-	</tr>
-	</table>
-
- at item Jun 1st, 2004: Mono Beta 2 has been released
-
-	<table>
-	<tr>
-	  <td>
-</td>
-	  <td>Mono Beta 2 has been released.  See our <a
-	   href="http://www.go-mono.com/archive/beta2/beta2.html">Release
-	   Notes</a>, or go directly to the <a href="download.html">download</a> page. 
-	  </td>
-	</tr>
-	</table>
-
- at item May 17th, 2004: Huge press response for Mono 1.0 Beta 1
-
-	Two weeks after the release of Mono 1.0 Beta 1, we take a
-	look at the <a href="http://www.go-mono.com/beta1-press.html" target='_blank'>press coverage</a> that followed the
-	beta release.
-
- at item May 10th, 2004: The Mono Hackers Hall of Fame welcomes Todd Berman
-
-	The <a href="http://www.go-mono.com/hackers.html">Mono Hackers Hall Of Fame</a>
-	continues to show our appreciation to the excellent
-	contributors that make <b>mono::</b> a successful free
-	software project.
-
-	Todd Berman is a steady contributor to Mono.  He has worked
-	everywhere: from the Class Libraries, to the early implementation of
-	the GAC and most recently has lead the effort to develop, port and
-	maintain MonoDevelop an IDE for the Mono environment.  His help has
-	been key to the development of Mono.
-
- at item May 4th, 2004: Mono Beta 1 available 
-
-	<table>
-	<tr>
-	  <td>
-	    <img
-	    src="http://www.go-mono.com/images/beta1-anim.gif"></td>
-	  <td>Mono Beta 1 has been released.  See our <a
-	   href="http://www.go-mono.com/archive/beta1/beta1.html">Release
-	   Notes</a>, or go directly to the <a href="download.html">download</a> page. 
-	  </td>
-	</tr>
-	</table>
-
- at item May 2nd, 2004: mDnsResponder.Net;  Global Assembly Cache.
-
-	Brady Anderson has released the first version of his <a href=
-	"http://forge.novell.com/modules/xfmod/project/?mdnsresponder">multicast
-	DNS responder</a> written in C# for the Mono and .NET
-	platforms.  This is the foundation for implementing
-	rendezvous-like functionality in your applications.
-
-	The tree has started to stabilize after all the changes last
-	week to integrate the Global Assembly Cache work that Jackson,
-	Sebastien, Todd and all the volunteers helped us deploy.
-
- at item Apr 22nd, 2004: XSP 0.12 released.
-
-	A new release of XSP is available. It fixes a bug that made Web Services
-	unusable from client proxies. You can download it from <a
-	href="/archive/xsp-0.12.tar.gz">here</a>.
-	
- at item Apr 21st, 2004: XSP 0.11 and mod_mono 0.8 released.
-
-	Gonzalo has made new releases of XSP and mod_mono (The ASP.NET
-	hosting service for Mono).
-
-	Check the XSP/mod_mono <a href="archive/xsp-0.10.html">
-	Release Notes</a> to see what is new and to obtain the source
-	packages.
-
- at item Apr 20, 2004: S390 port; Interpreted Updated;  Identity classes;  System.Drawing; Mono Debugger.
-
-	Neale who originally wrote the S390 interpreter support for
-	Mono has checked into CVS his port of the S390 JIT engine.
-	Now, if we could only have one of those in our living room.
-
-	Bernie has checked into CVS a new interpreter for the Mono
-	runtime.  This new interpreter translates the CIL opcodes into
-	a new intermediate representation.  The new IL representation
-	avoids doing costly lookups during interpretation which means that the
-	interpreter is a lot faster now.
-
-	Performance wise, the new interpreter is three times faster
-	than the old one when doing a compiler bootstrap.
-
-	Sebastien has recently completed the identity classes in the
-	Mono Runtime, you can see more details on his <a
-	href="http://pages.infinit.net/ctech/poupou.html">blog</a>
-
-	New progress on the GDI+ front: Jordi has completed the region
-	code; Ravindra the various brushes that we must support;
-	Sanjay the Icon and BMP loaders (with Mark) and Vladimir has
-	contributed various codecs and a new fresh implementation of
-	Image.LockBits.
-
-	Lluis and Atsushi in the meantime has been in charge of
-	completing various pending items from our class libraries:
-	basically an API audit of the things missing for the Mono 1.0
-	release, small but important things.
-
-	Martin has replaced the old command-line language in the
-	debugger with our home-grown "Command Line" language, a
-	TCL-like command line language that we built for it (its a
-	tiny .NETized Tcl-like language).  The interaction process is
-	a lot smoother than it used to be and we are focusing on the
-	usability of the command line language to improve the
-	debugging experience.
-
- at item Apr 02, 2004: Mono C# Compiler gets CLS support;   Basic Runtime Contribution from Mainsoft.
-
-	Marek Safar has been working for a few months on adding
-	support to the C# compiler to support the various checks required
-	by the Common Language Specification (CLS).
-
-	In the past the C# compiler was unable to flag any problems
-	related to the creation of cross-language libraries.  Today
-	with this patch the compiler will properly flag errors in CLS
-	compliance.  Tests for all of the errors have also been
-	included on CVS.
-
-	<a href="http://www.mainsoft.com">Mainsoft</a> has contributed
-	an implementation of their Basic runtime to the project.  The
-	runtime they wrote is written in Java and we are translating
-	this into C# code.  The code will reach CVS within the next
-	few weeks.
-
-	Mainsoft also contributed an extensive regression test suite
-	for the Basic runtime, a port of the NIST XML tests and their
-	own in-house developed XML tests. 
-
- at item Mar 31st, 2004: Gtk# 0.18, MonoDoc 0.13, MonoDevelop 0.2 released
-
-	New versions of Gtk# and MonoDoc have been released.
-
-	Gtk# is available from <a
-	href="http://gtk-sharp.sf.net">Gtk# home page</a> and MonoDoc 0.13
-	is available from our <a href="download.html">download</a>
-	page.
-
-	Gtk# now features [ConnectBefore] attribute for hooking up
-	signals; An automake/autoconf setup; the System.Drawing
-	dependency has been dropped and many more docs.
-
-	And <a href="http://www.monodevelop.com/">MonoDevelop 0.2</a>
-	has been released.
-
- at item Mar 18th, 2004: Mono 0.31 has been released
-
-	We have released version 0.31 of Mono.  All the new features
-	and improvements are described in our <a
-	href="archive/mono-0.31.html">Mono 0.31 Release Notes</a>. 
-
-	You can download Mono 0.31 packages using Red Carpet, or pick
-	the individual packages from our <a
-	href="download.html">download</a> page.
-
- at item Mar 15th, 2004: Async IO lands on Mono.
-
-	Gonzalo has completed the implementation of Async I/O for Mono
-	using the kernel aio_* interfaces.  If your operating system supports
-	the aio_ POSIX interface, the FileStream methods that
-	expose asynchronous methods will use this facility instead of
-	emulating it with threads as we have done in the past.
-
-	We had this request come to us from various people in the
-	past, and we are now looking for your help to test and debug
-	this.
-
- at item Mar 11th, 2004: Mono JIT ported to SPARC.
-
-	Zoltan Varga announced today that the SPARC port of the Mono
-	JIT engine has been completed.  Congratulations to Zoltan for
-	this amazing development.
-
- at item Feb 26th, 2004: Agenda: Mono Meeting in Boston.
-
-	The agenda for the Mono Meeting is now available: <a
-	href="http://primates.ximian.com/~miguel/MonoMeet.html">Mono Meeting
-	Agenda</a>
-
- at item Feb 24th, 2004: Mono Meeting in Boston.
-
-	On March 5th-6th (Friday and Saturday) there will be an
-	open-house meeting for people interested in Mono to get
-	together with the Mono developers at the Novell offices in
-	in Cambridge Massachusetts (<a
-	href="http://www.ximian.com/about_us/contact/">directions</a>).
-
-	The whole Novell Mono team will be here (Atsushi Enomoto, Dick
-	Porter, Duncan Mak, Erik Dasque, Gonzalo Paniagua, Jackson
-	Harper, Jordi Mas, Lluis Sanches, Manjula, Martin Baulig,
-	Miguel de Icaza, Mike Kestner, Paolo Molaro, Peter Bartok,
-	Sebastien Pouliot, Sachin Kumar) and hopefully Joe Shaw, Nat
-	Friedman, Peter Williams and Ravi Pratap will be joining us as
-	well.  Expect to see Todd Berman from MonoDevelop as well.
-
-	If you are coming, please notify <a
-	href="mailto:edasque at ximian.com">edasque at ximian.com</a> about it, so
-	we can add you to the security list, and use the `open house
-	confirmation' subject in your email.
-
- at item Feb 13, 2004: Mono 0.30.1 released
-
-	We have released a small bug-fix release of Mono, the release
-	notes are available <a
-	href="archive/mono-0.30.1.html">here</a> and you can download
-	it from our <a href="download.html">download</a> page.
-
- at item Feb 13, 2004: Mono Performance Optimization
-
-	We have a new document that describes some <a
-	href="performance.html">common tricks to improve the
-	performance</a> of your Mono or .NET application.  These are a
-	summary of techniques that we employed to tune our own C#
-	compiler.
-
- at item Feb 2nd, 2004: Mono 0.30 has been released
-
-	Check out the <a
-	href="http://www.go-mono.com/archive/mono-0.30.html">Release
-	notes</a> for details on Mono 0.30.  Or go directly to our <a
-	href="download.html">download</a> section
-
- at item Jan 18th, 2004: LDAP class libraries in Mono tutorial.
-
-	Sunil Kumar has written an <a
-	href="http://www.novell.com/coolsolutions/cooldev/features/a_net_cplus_ldap_library_cdev.html">introduction
-	to Novell.LDAP</a> class libraries, which are part of Mono.
-
- at item Jan 13th, 2004: MonoDoc 0.9 released.
-
-	A new edition of MonoDoc, the Mono Documentation Browser, has been released, available in source form from:
-	<a href="archive/monodoc-0.9.tar.gz">archive/monodoc-0.9.tar.gz</a>
-
- at item Jan 11th, 2004: Call for Stories
-
-	If you have a success story about using Mono or one of the Mono
-	components in any way, we want to hear about you.  Please mail
-	your details to miguel at ximian.com
-
- at item Jan 4th, 2004: Windows Installer for Mono 0.29
-
-	There is a <a href="archive/mono-0.29-win32-1.exe">Windows
-	Installer for Mono 0.29</a> available now.
-	
-<h2>Older News</h2>
-
-	Click <a href="oldnews.html">here</a> to see older news.
-
diff --git a/web/java b/web/java
deleted file mode 100755
index adcd888..0000000
--- a/web/java
+++ /dev/null
@@ -1,66 +0,0 @@
-* Java
-
-	<b>This is an outline on how to support Java, actual
-	implementations of ideas like this can be found <a href="http://radio.weblogs.com/0109845/">here</a></b>
-
-
-	It would be interesting to support the Java language as part
-	of the Mono project.  
-
-	You have to think of Java as various pieces: Java the
-	language and Java the virtual machine.  
-
-	It is possible to compile Java to .NET, as shown by the
-	Microsoft J# compiler.   We could then allow the migration of
-	Java applications to the Mono runtime. 
-
-** Native compiler
-
-	Although a native compiler can be built, and probably should be
-	built using an existing compiler, a short term solution is to 
-	build a translator from Java class files to the ECMA CIL images.
-
-	This has the advantage that we can use an existing and tested
-	Java compiler to generate the code, and then we can use an automated
-	code compiler that compiles Java VM bytecodes to CIL bytecodes.
-
-** The translator.
-
-	It would be interesting to write a semantic translator that
-	converts java byte codes into CIL opcodes.  This is possible
-	because the Java byte codes are a subset of the CIL ones.
-
-	A semantic tree needs to be constructed (very much in the
-	spirit of what is done in mono_analize_stack in
-	<tt>mono/mono/jit/jit.c</tt>.  Once such a semantic tree is
-	constructed, we could generate the equivalent Java code.
-
-	This has a number of interesting side effects: people can
-	continue to use their existing Java compilers to compile their
-	code, and a simple tool that converts their .class files into
-	a .NET assembly can be used.
-
-** Libraries
-
-	We could translate the GNU Classpath libraries with the above
-	tools to provide the Java runtime required to host into the
-	Mono runtime.  Some special treatment would be required for
-	core data types like integers, arrays and strings, and of
-	course reuse where possible existing classes from .NET to make
-	them compatible.
-
-** JILC - Java to IL Compiler
-
-	This is an attempt to make the java bytecode available for the
-	.NET environment.
-
-	The project attempts to generate the IL code / bytecode from the
-	compiled java class files. It has reached the stage of code-generation.
-	The issues that needs to be addressed is the mapping of java objects
-	to the IL objects, eg: java.lang.String to System.String.
-
-	Gaurav Vaish and Abhaya Agarwal are currently leading this project.
-	The project is currently hosted at <a href="http://sourceforge.net/projects/jilc">SourceForge.Net</a>.
-	The official home page of the project is 
-	<a href="http://jilc.sourceforge.net">http://jilc.sourceforge.net</a>.
-
diff --git a/web/jit-debug b/web/jit-debug
deleted file mode 100644
index 66b4411..0000000
--- a/web/jit-debug
+++ /dev/null
@@ -1,78 +0,0 @@
-* Debugging information
-
-	Compile your programs using the `-g' flag in MCS, that will all a special
-	resource containing debugging information to your executable.
-
-	To get stack traces with line number information, you need to run your 
-	program like this:
-
-	<b>
-	mono --debug program.exe
-	</b>
-
-	Notice that the program will need to be compiled with the -g
-	flag and that running with --debug will slow down the execution.
-
-* Debugging with GDB
-
-	If you use GDB to debug your mono process, you can use the function
-	mono_print_method_from_ip(void *address) to obtain the name of a method
-	given an address.
-
-	For example:
-
-	<pre>
-(gdb) where
-#0  ves_icall_System_String_GetHashCode (me=0x80795d0) at string-icalls.c:861
-#1  0x0817f490 in ?? ()
-#2  0x0817f42a in ?? ()
-#3  0x0817f266 in ?? ()
-#4  0x0817f1a5 in ?? ()
-</pre>
-
-	You can now use:
-
-<pre>
-(gdb) p mono_print_method_from_ip (0x0817f490)
-IP 0x817f490 at offset 0x28 of method (wrapper managed-to-native) System.String:GetHashCode () (0x817f468 0x817f4a4)
-$1 = void
-(gdb) p mono_print_method_from_ip (0x0817f42a)
-IP 0x817f42a at offset 0x52 of method System.Collections.Hashtable:GetHash (object) (0x817f3d8 0x817f43b)
-$2 = void
-</pre>
-
-	Mono support libraries use a couple of signals internally that
-	confuse gdb, you might want to add this to your .gdbinit file:
-
-<pre>
-	handle SIGPWR nostop noprint 
-	handle SIGXCPU nostop noprint 
-</pre>
-
-* Mono Debugger 
-
-	The Mono debugger is written in C# and can debug both managed
-	and unmanaged applications, support for multiple-threaded
-	applications and should be relatively easy to port to new
-	platforms.
-
-	Details of the release are available in <a
-	href="http://lists.ximian.com/archives/public/mono-list/2003-January/011415.html">post</a>. 
-	
-	The debugger contains both Gtk# and command line interfaces.
-	The debugging file format used in Dwarf (it's already supported
-	by our class libraries and the Mono C# compiler; To debug C
-	applications, you need a recent GCC, or to pass the -gdwarf-2
-	flag to gcc).
-
-	You can download the releases from <a
-	href="http://primates.ximian.com/~martin/debugger/">Martin Baulig's
-	home page.</a>
-
-
-
-
-	
-	
-
-	
diff --git a/web/languages b/web/languages
deleted file mode 100755
index 1d76ada..0000000
--- a/web/languages
+++ /dev/null
@@ -1,162 +0,0 @@
-* Compilers for other languages
-
-	Here are some other free compilers for other languages that
-	target .NET and should work with Mono with no problem:
-
-	<ul>
-		* <a href="#ComponentPascal">Component Pascal</a>
-		* <a href="#MonoLogo">MonoLogo</a>
-		* <a href="#Oberon">Oberon</a>
-		* <a href="#Forth">Forth</a>
-		* <a href="#mbas">Mono Basic</a> (Mono's VB.NET compiler)
-		* <a href="#dotlist">dotLisp</a>
-                * <a href="#nemerle">Nemerle</a>
-		* <a href="#python">Python</a>
-	</ul>
-
-	Languages which are known to run, but we have not done a
-	complete ran of all their regression tests to validate it:
-
-	<ul>
-		* Kylix.NET.
-	</ul>
-
-	Languages we would like to have supported, with links to resources:
-
-	<ul>
-		* <a href="#JavaScript">Java Script</a>
-		* <a href="#java.html">Java</a>
-		* <a href="#c">C</a>
-	</ul>
-
-	Some experimental bindings:
-
-	<ul>
-		* <a href="#Tachy">Tachy</a> (scheme-like)
-	</ul>
-
-<a name="Java"></a>
-** Java
-
-	Java is supported through the <a href="http://www.ikvm.net">IKVM</a> virtual machine.
-
-	Zoltan worked with Jeroen to get IKVM to work with Mono.
-
-<a name="nemerle">
-* Nemerle
-
-        Nemerle is a new hybrid (functional, object-oriented and
-        imperative) programming language for the .NET platform. It is
-        available from <a
-        href="http://www.nemerle.org/">http://www.nemerle.org</a>.
-        
-<a name="PHP">
-** PHP
-
-	Sterling has code to allow PHP developers to use Mono code, in
-	his <a href="http://www.php.net/~sterling/mono/">site</a>
-
-<a name="MonoLogo">
-** MonoLogo
-
-	An implementation of Logo for Mono (and .NET)
-
-	The <A href="http://monologo.sf.net">Mono Logo</a> compiler is
-	hosted in the <a href="ccvs.html">Mono CVS</a> repository
-	and also available on the <a href="anoncvs.html">AnonCVS</a> mirrors.
-
-<a name="mbas">
-** Mono Basic (Mono's VB.NET compiler)
-
-	Work has resumed on the Mono Visual Basic compiler (currently
-	called mbas).  It is part of the standard Mono distribution,
-	but its still an early compiler.
-
-<a name="Oberon">
-** Oberon
-
-	This Oberon compiler is written in Oberon.NET (another self
-	hosting compiler).
-
-	The main site <a href="http://www.oberon.ethz.ch/oberon.net/">http://www.oberon.ethz.ch/oberon.net/</a>
-
-	Download:
-	<a href="http://www.oberon.ethz.ch/oberon.net/download/">http://www.oberon.ethz.ch/oberon.net/download/</a>
-
-	Examples:
-	<a href="http://www.oberon.ethz.ch/oberon.net/examples/">http://www.oberon.ethz.ch/oberon.net/examples/</a>
-
-<a name="ComponentPascal">
-** Component Pascal
-
-	The Component Pascal compiler: <a
-	href="http://www.citi.qut.edu.au/research/plas/projects/cp_files/cpnet.html">Home
-	Page</a>, you can <a
-	href="http://www.citi.qut.edu.au/research/plas/projects/cp_files/cpdownload.html">
-	download it</a>
-	
-<a name="Forth">
-** Delta Forth
-
-   	 The Delta Forth.NET project: <a href="http://www.dataman.ro/dforth">Home
-	 Page</a> and <a href="http://www.dataman.ro/dforth">more
-	 details here</a>.
-	 
-
-<a name="Tachy">
-** Tachy
-
-	A subset of Scheme language called <a
-	href="http://radio.weblogs.com/0101156/stories/2002/03/19/tachy.html">Tachy</a>
-
-<a name="Python"></a>
-** Python
-
-        <a href="mailto:brian at No.Spam.zope.com">Brian Lloyd</a> is
-	working on linking the Python runtime with the .NET runtime.
-	More information on the PS.NET project can be found <a
-	href="http://www.zope.org/Members/Brian/PythonNet">here</a>.
-
-<a name="dotlisp"></a>
-** dotLisp
-
-	DotLisp is available from: <a
-	href="http://sourceforge.net/projects/dotlisp/">http://sourceforge.net/projects/dotlisp/</a>
-
-<a name="JavaScript">
-* Java Script
-
-	Cesar is working on Mono's implementation of JScript, the code
-	is available on CVS on module `mcs'.
-
-* Missing languages
-
-	Here is a list of a few languages that we would like to see
-	supported.  We will try to maintain a set of links here with 
-	technical information for those interested in porting,
-	implementing or adapting a compiler for any of these
-	languages:
-
-<a name="c">
-* C
-
-	Ideally GCC could be modified to generate CIL, but it is a 
-	big task.  That would give us various compilers in one pass.
-
-	<a href="http://www.cs.princeton.edu/software/lcc">LCC</a> 4.2
-	has been recently released.  This release adds support for compiling
-	ANSI C programs to CIL.  Note that the CIL support only works on Win32
-	right now, but should be easy to convert to Mono/other architectures.
-
-	LCC is not an open source compiler, but it is free as long as you
-	do not profit from selling it. 
-
-<a name="ada"></a>
-* ADA
-
-	A# is an ADA compiler for the CIL platform, it can be downloaded from:
-	<a
-	href="http://www.usafa.af.mil/dfcs/bios/mcc_html/a_sharp.html">http://www.usafa.af.mil/dfcs/bios/mcc_html/a_sharp.html</a>
-
-
-	
diff --git a/web/mailing-lists b/web/mailing-lists
deleted file mode 100644
index ad2aa17..0000000
--- a/web/mailing-lists
+++ /dev/null
@@ -1,271 +0,0 @@
-* Mailing Lists
-
-	Most of the mailing lists are in english, but there is also
-	Mono Hispano that has lists in Spanish.   <a
-	href="http://www.monohispano.org/mailman/listinfo/mono-hispano">Mono Hispano list</a>
-
-	There are a number of mailing lists for Mono in English:
-
-	<table border=1>
-	  <tr>
-	    <td>
-		<b><a
-	href="http://lists.ximian.com/mailman/listinfo/mono-announce-list">mono-announce-list</a></b>
-	    </td>
-	    <td>
-	Announcements of Mono developments.
-	    </td>	
-	  </tr>
-	  <tr>
-	    <td>
-		<b><a
-	href="http://lists.ximian.com/mailman/listinfo/mono-list">mono-list</a></b>
-	    </td>
-	    <td>
-	The general Mono discussion list.
-	    </td>
-	  </tr>
-	  <tr>
-	    <td>
-		<b><a
-	href="http://lists.ximian.com/mailman/listinfo/mono-devel-list">mono-devel-list</a></b>
-	    </td>
-	    <td> 
-	      A mailing list specifically dedicated to discussions
-	      about developing Mono and programming *with* Mono.
-	      Programmers that work on Mono are _strongly_ encouraged
-	      to join this list.  Third-party programmers interested
-	      in running or compiling their managed applications with
-	      Mono or that are interested in using mono-specific
-	      technologies should join the list as well.
-	      <p>
-	      Examples of on-topic arguments are:
-	      <ul>
-		<li>proposals and patches for new features for the mono runtime and programs
-		<li>discussions about bugs in the mono runtime and programs
-		<li>discussions about future directions
-		<li>embedding API, scripting language bridges
-		<li>mono/mcs build issues
-		<li>programming with mono-specific assemblies
-		<li>discussions about third-party compilers that target and/or use directly the CLR
-		<li>discussions about getting a managed application run with mono
-	      </ul>
-		
-              <p>Topics that are better discussed on other mailing lists:
-              <ul>
-		<li> general C# questions (use the specific lists at develop.com)
-		<li> issues that are already covered by a more specific mono
-		     mailing list (like System.Windows.Forms or Gtk#)
-		<li> success reports about new apps running on mono, including
-		     runtime/buildtime support for new programming languages (use
-		     mono-list to reach a wider audience)
-              </ul>
-	    </td>
-	  </tr>
-	  <tr>
-	    <td>
-		<b><a
-	href="http://lists.ximian.com/mailman/listinfo/mono-gc-list">mono-gc-list</a></b>
-	    </td>
-	    <td>
-	Discussion on the GC system of Mono.
-	    </td>
-	  </tr>
-	  <tr>
-	    <td>
-		<b><a
-	href="http://lists.ximian.com/mailman/listinfo/mono-patches">mono-patches</a></b>
-	    </td>
-	    <td>
-	Track the CVS activity of Mono on this mailing list (patches are sent to recipients).  <p>
-	You can get <a href="http://www.go-mono.com/snapshots">daily snapshots</a> as well.
-	    </td>
-	  </tr>
-	  <tr>
-	    <td>
-		<b><a
-	href="http://lists.ximian.com/mailman/listinfo/mono-cvs-list">mono-cvs-list</a></b>
-	    </td>
-	    <td>
-	Track the CVS activity of Mono on this mailing list.  
-	    </td>
-	  </tr>
-	  <tr>
-	    <td>
-		<b><a
-	href="http://lists.ximian.com/mailman/listinfo/mono-docs-list">mono-docs-list</a></b>
-	    </td>
-	    <td>
-	Discussion on the documentation of Mono.
-	    </td>
-	  </tr>
-	  <tr>
-	    <td>
-		<b><a href="http://lists.ximian.com/mailman/listinfo/mono-bugs">mono-bugs</a></b>
-	    </td>
-	    <td>
-	       This mailing list is used to keep track of the bugs in Mono as reported
-	       in <a href="http://bugzilla.ximian.com">Bugzilla.ximian.com</a>
-	    </td>
-	  </tr>
-	  <tr>
-	    <td>
-		<b><a
-	href="http://lists.ximian.com/mailman/listinfo/mono-winforms-list">mono-winforms-list</a></b>
-	    </td>
-	    <td>
-	Used to discuss the Windows.Forms implementatation for Mono using Wine.
-	    </td>
-	  </tr>
-	  <tr>
-	    <td>
-		<b><a
-	href="http://lists.ximian.com/mailman/listinfo/gtk-sharp-list">gtk-sharp-list</a></b>
-	    </td>
-	    <td>
-	Used to discuss the Gtk bindings for Mono (<a href="http://gtk-sharp.sf.net">Gtk#</a>).
-	    </td>
-	  </tr>
-	  <tr>
-	    <td>
-		<b><a
-	href="http://lists.ximian.com/mailman/listinfo/mono-vb">mono-vb</a></b>
-	    </td>
-	    <td>
-	Mono's implementation of Visual Basic.NET.
-	    </td>
-	  </tr>
-	</table>
-
-	Other mailing lists of interest:
-
-	<ul>
-		* <b><a
-	href="http://discuss.develop.com/dotnet.html">Dotnet mailing
-	list at Develop.com:</a></b> The guys at Develop Mentor run
-	this general purpose mailing list.
-	</ul>
-	</ul>
-
-* Alternative archive site
-
-	An alternate site that archives Mono List is available <a
-	href="http://archive.neotonic.com/archive/mono-list">http://archive.neotonic.com/archive/mono-list</a>
-	
-* Google search of the archives
-
-<!-- Google Search with mods -->
-<center>
-
-<table>
-<tr>
-<td><a href="http://www.google.com/search"><img src="images/Logo_40wht.gif" border="0" alt="Google" align="middle"></a></td>
-
-<td>
-<table>
-
-<tr><td>
-<FORM method=GET action=http://www.google.com/custom>
-<TABLE bgcolor=#FFFFFF cellspacing=0 border=0>
-<tr valign=top>
-<td>
-<INPUT TYPE=text name=q size=31 maxlength=255 value="">
-<INPUT TYPE=hidden name=q size=31 maxlength=255 value="mono">
-<INPUT type=submit name=sa VALUE="Search">
-<input type="hidden" name="cof" value="GIMP:#00ff00;T:#ffffff;LW:401;BIMG:http://www.go-mono.com/images/bgsquares.gif;ALC:#ffffff;L:http://www.go-mono.com/images/mono.gif;GFNT:#cc7700;LC:#ee9900;LH:80;BGC:#444444;AH:center;VLC:#cccccc;S:http://www.go-mono.com;GALT:#eeee00;AWFID:45753ce73241ef7a;">
-<font face="arial,sans-serif" size="-1"><input type="hidden" name="domains" value="www.go-mono.com;lists.ximian.com"><br><input type="radio" name="sitesearch" value="www.go-mono.com"> Search www.go-mono.com <input type="radio" name="sitesearch" value="lists.ximian.com"> Search lists.ximian.com </font><br>
-</td></tr></TABLE>
-</FORM>
-</tr></td>
-
-<tr><td>
-<FORM method=GET action=http://www.google.com/custom>
-<TABLE bgcolor=#FFFFFF cellspacing=0 border=0>
-<tr valign=top>
-<td>
-<INPUT TYPE=text name=q size=31 maxlength=255 value="">
-<INPUT TYPE=hidden name=q size=31 maxlength=255 value="mono-list">
-<INPUT type=submit name=sa VALUE="Search">
-<input type="hidden" name="cof" value="GIMP:#00ff00;T:#ffffff;LW:401;BIMG:http://www.go-mono.com/images/bgsquares.gif;ALC:#ffffff;L:http://www.go-mono.com/images/mono.gif;GFNT:#cc7700;LC:#ee9900;LH:80;BGC:#444444;AH:center;VLC:#cccccc;S:http://www.go-mono.com;GALT:#eeee00;AWFID:45753ce73241ef7a;">
-<font face=arial,sans-serif size=-1><input type=hidden name=domains value="lists.ximian.com"><br> <input type=hidden name=sitesearch value="lists.ximian.com"> Search mono-<b>list</b> </font><br>
-</td></tr></TABLE>
-</FORM>
-</tr></td>
-
-<tr><td>
-<FORM method=GET action=http://www.google.com/custom>
-<TABLE bgcolor=#FFFFFF cellspacing=0 border=0>
-<tr valign=top>
-<td>
-<INPUT TYPE=text name=q size=31 maxlength=255 value="">
-<INPUT TYPE=hidden name=q size=31 maxlength=255 value="mono-announce-list">
-<INPUT type=submit name=sa VALUE="Search">
-<input type="hidden" name="cof" value="GIMP:#00ff00;T:#ffffff;LW:401;BIMG:http://www.go-mono.com/images/bgsquares.gif;ALC:#ffffff;L:http://www.go-mono.com/images/mono.gif;GFNT:#cc7700;LC:#ee9900;LH:80;BGC:#444444;AH:center;VLC:#cccccc;S:http://www.go-mono.com;GALT:#eeee00;AWFID:45753ce73241ef7a;">
-<font face=arial,sans-serif size=-1><input type=hidden name=domains value="lists.ximian.com"><br> <input type=hidden name=sitesearch value="lists.ximian.com"> Search mono-<b>announce-list</b> </font><br>
-</td></tr></TABLE>
-</FORM>
-</tr></td>
-
-<tr><td>
-<FORM method=GET action=http://www.google.com/custom>
-<TABLE bgcolor=#FFFFFF cellspacing=0 border=0>
-<tr valign=top>
-<td>
-<INPUT TYPE=text name=q size=31 maxlength=255 value="">
-<INPUT TYPE=hidden name=q size=31 maxlength=255 value="mono-bugs">
-<INPUT type=submit name=sa VALUE="Search">
-<input type="hidden" name="cof" value="GIMP:#00ff00;T:#ffffff;LW:401;BIMG:http://www.go-mono.com/images/bgsquares.gif;ALC:#ffffff;L:http://www.go-mono.com/images/mono.gif;GFNT:#cc7700;LC:#ee9900;LH:80;BGC:#444444;AH:center;VLC:#cccccc;S:http://www.go-mono.com;GALT:#eeee00;AWFID:45753ce73241ef7a;">
-<font face=arial,sans-serif size=-1><input type=hidden name=domains value="lists.ximian.com"><br> <input type=hidden name=sitesearch value="lists.ximian.com"> Search mono-<b>bugs</b> </font><br>
-</td></tr></TABLE>
-</FORM>
-</tr></td>
-
-<tr><td>
-<FORM method=GET action=http://www.google.com/custom>
-<TABLE bgcolor=#FFFFFF cellspacing=0 border=0>
-<tr valign=top>
-<td>
-<INPUT TYPE=text name=q size=31 maxlength=255 value="">
-<INPUT TYPE=hidden name=q size=31 maxlength=255 value="mono-gc-list">
-<INPUT type=submit name=sa VALUE="Search">
-<input type="hidden" name="cof" value="GIMP:#00ff00;T:#ffffff;LW:401;BIMG:http://www.go-mono.com/images/bgsquares.gif;ALC:#ffffff;L:http://www.go-mono.com/images/mono.gif;GFNT:#cc7700;LC:#ee9900;LH:80;BGC:#444444;AH:center;VLC:#cccccc;S:http://www.go-mono.com;GALT:#eeee00;AWFID:45753ce73241ef7a;">
-<font face=arial,sans-serif size=-1><input type=hidden name=domains value="lists.ximian.com"><br> <input type=hidden name=sitesearch value="lists.ximian.com"> Search mono-<b>gc-list</b> </font><br>
-</td></tr></TABLE>
-</FORM>
-</tr></td>
-
-<tr><td>
-<FORM method=GET action=http://www.google.com/custom>
-<TABLE bgcolor=#FFFFFF cellspacing=0 border=0>
-<tr valign=top>
-<td>
-<INPUT TYPE=text name=q size=31 maxlength=255 value="">
-<INPUT TYPE=hidden name=q size=31 maxlength=255 value="mono-cvs-list">
-<INPUT type=submit name=sa VALUE="Search">
-<input type="hidden" name="cof" value="GIMP:#00ff00;T:#ffffff;LW:401;BIMG:http://www.go-mono.com/images/bgsquares.gif;ALC:#ffffff;L:http://www.go-mono.com/images/mono.gif;GFNT:#cc7700;LC:#ee9900;LH:80;BGC:#444444;AH:center;VLC:#cccccc;S:http://www.go-mono.com;GALT:#eeee00;AWFID:45753ce73241ef7a;">
-<font face=arial,sans-serif size=-1><input type=hidden name=domains value="lists.ximian.com"><br> <input type=hidden name=sitesearch value="lists.ximian.com"> Search mono-<b>cvs-list</b> </font><br>
-</td></tr></TABLE>
-</FORM>
-</tr></td>
-
-<tr><td>
-<FORM method=GET action=http://www.google.com/custom>
-<TABLE bgcolor=#FFFFFF cellspacing=0 border=0>
-<tr valign=top>
-<td>
-<INPUT TYPE=text name=q size=31 maxlength=255 value="">
-<INPUT TYPE=hidden name=q size=31 maxlength=255 value="mono-patches">
-<INPUT type=submit name=sa VALUE="Search">
-<input type="hidden" name="cof" value="GIMP:#00ff00;T:#ffffff;LW:401;BIMG:http://www.go-mono.com/images/bgsquares.gif;ALC:#ffffff;L:http://www.go-mono.com/images/mono.gif;GFNT:#cc7700;LC:#ee9900;LH:80;BGC:#444444;AH:center;VLC:#cccccc;S:http://www.go-mono.com;GALT:#eeee00;AWFID:45753ce73241ef7a;">
-<font face=arial,sans-serif size=-1><input type=hidden name=domains value="lists.ximian.com"><br> <input type=hidden name=sitesearch value="lists.ximian.com"> Search mono-<b>patches</b> </font><br>
-</td></tr></TABLE>
-</FORM>
-</tr></td>
-
-
-</table>
-</tr>
-</table>
-
-</center>
-<!-- /Google Search with mods -->
diff --git a/web/mono-build-w32.sh b/web/mono-build-w32.sh
deleted file mode 100755
index fe9d061..0000000
--- a/web/mono-build-w32.sh
+++ /dev/null
@@ -1,202 +0,0 @@
-#!/bin/bash
-
-# Script to automate the building of mono and its dependencies on
-# cygwin.  Relies on wget being installed (could make it fall back to
-# using lynx, links, w3, curl etc), assumes that gcc, make, tar,
-# automake, etc are already installed too (may be worth testing for
-# all that right at the top and bailing out if missing/too old/too new
-# etc).
-
-
-# See where we are.  This will become the top level directory for the
-# installation, unless we are given an alternative location
-here=$1
-test -z "$here" && here=`pwd`
-
-echo "Building Mono and dependencies in $here, installing to $here/install"
-
-PATH=$here/install/bin:$here/install/lib:$PATH
-export C_INCLUDE_PATH=$here/install/include
-
-# Make sure cygwin's libiconv is installed, or libtool blows its tiny mind
-if [ ! -f /usr/lib/libiconv.la ]; then
-    echo "You need to install the cygwin \"libiconv\" package!"
-    exit -1
-fi
-
-# Check mono out first, so we can run aclocal from inside the mono dir (it
-# needs to see which version of the real aclocal to run)
-test -z "$CVSROOT" && CVSROOT=:pserver:anonymous at anoncvs.go-mono.com:/mono
-export CVSROOT
-
-echo "Updating mono"
-
-# cvs checkout does the same as cvs update, except that it copes with
-# new modules being added
-
-# Older versions of cvs insist on a cvs login for :pserver: methods
-# Make sure cvs is using ssh for :ext: methods
-
-if [ ${CVSROOT:0:5} = ":ext:" ]; then
-    CVS_RSH=ssh
-    export CVS_RSH
-elif [ ${CVSROOT:0:9} = ":pserver:" ]; then
-    if ! grep $CVSROOT ~/.cvspass > /dev/null 2>&1 ; then
-	echo "Logging into CVS server.  Anonymous CVS password is probably empty"
-	cvs login || exit -1
-    fi
-fi
-
-cvs checkout mono || exit -1
-
-echo "Checking automake version"
-automake_required="1.6.2"
-automake_version=`automake --version | head -1 | awk '{print $4}' | tr -d '[a-zA-Z]' | sed 's/-.*$//g'`
-echo "Found automake version $automake_version"
-if expr $automake_version \< $automake_required > /dev/null; then
-	echo "Your automake is too old!  You need version $automake_required or newer."
-	exit -1
-else
-	echo "Automake version new enough."
-fi
-
-# This causes libgc-not-found problem
-#
-## Select the stable version anyway...
-#if [ ! -z "${AUTO_STABLE}" -o -e /usr/autotool/stable ]; then
-#    export AUTO_STABLE=${AUTO_STABLE:-/usr/autotool/stable}
-#    export AUTO_DEVEL=${AUTO_STABLE}
-#fi
-
-# Need to install pkgconfig and set ACLOCAL_FLAGS if there is not a
-# pkgconfig installed already.  Otherwise set PKG_CONFIG_PATH to the
-# glib we're about to install in $here/install.
-
-
-# --print-ac-dir was added in 1.2h according to the ChangeLog.  This
-# should mean that any automake new enough for us has it.
-
-# This sets ACLOCAL_FLAGS to point to the freshly installed pkgconfig
-# if it doesnt already exist on the system (otherwise auto* breaks if
-# it finds two copies of the m4 macros).  The GIMP for Windows
-# pkgconfig sets its prefix based on the location of its binary, so we
-# dont need PKG_CONFIG_PATH (the internal pkgconfig config file
-# $prefix is handled similarly). For the cygwin pkgconfig we do need to
-# set it, and we need to edit the mingw pc files too.
-
-function aclocal_scan () {
-    # Quietly ignore the rogue '-I' and other aclocal flags that
-    # aren't actually directories...
-    #
-    # cd into mono/ so that the aclocal wrapper can work out which version
-    # of aclocal to run, and add /usr/share/aclocal too cos aclocal looks there
-    # too.
-    for i in `(cd mono && aclocal --print-ac-dir)` /usr/share/aclocal $ACLOCAL_FLAGS
-    do
-	if [ -f $i/$1 ]; then
-	    return 0
-	fi
-    done
-
-    return 1
-}
-
-function install_icuconfig() {
-    if [ ! -f $here/install/bin/icu-config ]; then
-        wget http://www.go-mono.com/archive/icu-config
-	mv icu-config $here/install/bin
-        chmod 755 $here/install/bin/icu-config
-    fi
-}
-
-
-function install_package() {
-    zipfile=$1
-    markerfile=$2
-    name=$3
-
-    echo "Installing $name..."
-    if [ ! -f $here/$zipfile ]; then
-	wget http://www.go-mono.com/archive/$zipfile
-    fi
-
-    # Assume that the package is installed correctly if the marker
-    # file is there
-    if [ ! -f $here/install/$markerfile ]; then
-	(cd $here/install || exit -1; unzip -o $here/$zipfile || exit -1) || exit -1
-    fi
-}
-
-# pkgconfig is only used during the build, so we can use the cygwin version
-# if it exists
-if aclocal_scan pkg.m4 ; then
-    install_pkgconfig=no
-else
-    install_pkgconfig=yes
-fi
-
-# This causes libgc-not-found problem
-#
-## But we still need to use the mingw libs for glib & co
-#ACLOCAL_FLAGS="-I $here/install/share/aclocal $ACLOCAL_FLAGS"
-
-#export PATH
-#export ACLOCAL_FLAGS
-
-# Grab pkg-config, glib etc
-if [ ! -d $here/install ]; then
-    mkdir $here/install || exit -1
-fi
-
-# Fetch and install pkg-config, glib, iconv, intl
-
-if [ $install_pkgconfig = "yes" ]; then
-    install_package pkgconfig-0.11-20020310.zip bin/pkg-config.exe pkgconfig
-else
-    echo "Not installing pkgconfig, you already seem to have it installed"
-fi
-install_package glib-2.0.4-20020703.zip lib/libglib-2.0-0.dll glib
-install_package glib-dev-2.0.4-20020703.zip lib/glib-2.0.lib glib-dev
-install_package libiconv-1.7.zip lib/iconv.dll iconv
-install_package libintl-0.10.40-20020101.zip lib/libintl-1.dll intl
-install_package libgc-dev.zip lib/gc.dll gc-dev
-install_package icu-2.6.1-Win32_msvc7.zip icu/bin/icuuc26.dll icu
-
-install_icuconfig
-
-if [ $install_pkgconfig = "no" ]; then
-    echo "Fixing up the pkgconfig paths"
-    for i in $here/install/lib/pkgconfig/*.pc
-    do
-	mv $i $i.orig
-	sed -e "s@^prefix=/target\$@prefix=$here/install@" < $i.orig > $i
-    done
-    export PKG_CONFIG_PATH=$here/install/lib/pkgconfig
-fi
-
-# Needed to find the libgc bits
-export CFLAGS="-I $here/install/include -I $here/install/icu/include"
-export LDFLAGS="-L$here/install/lib -L$here/install/icu/lib"
-export PATH="$here/install/icu/bin:$PATH"
-
-# Make sure we build native w32, not cygwin
-#CC="gcc -mno-cygwin"
-#export CC
-
-# --prefix is used to set the class library dir in mono, and it needs
-# to be in windows-native form.  It also needs to have '\' turned into
-# '/' to avoid quoting issues during the build.
-prefix=`cygpath -w $here/install | sed -e 's@\\\\@/@g'`
-
-# Build and install mono
-echo "Building and installing mono"
-
-(cd $here/mono; ./autogen.sh --prefix=$prefix || exit -1; make || exit -1; make install || exit -1) || exit -1
-
-
-echo ""
-echo ""
-echo "All done."
-echo "Add $here/install/bin and $here/install/lib to \$PATH"
-echo "Don't forget to copy the class libraries to $here/install/lib"
-
diff --git a/web/mono-build.sh b/web/mono-build.sh
deleted file mode 100755
index 17b604c..0000000
--- a/web/mono-build.sh
+++ /dev/null
@@ -1,254 +0,0 @@
-#! /usr/bin/env bash
-
-# Script to automate the building of mono and its dependencies.
-# Relies on wget being installed (could make it fall back to using
-# lynx, links, w3, curl etc), assumes that gcc, make, tar, automake,
-# etc are already installed too (may be worth testing for all that
-# right at the top and bailing out if missing/too old/too new etc).
-
-
-# See where we are.  This will become the top level directory for the
-# installation, unless we are given an alternative location
-here=$1
-test -z "$here" && here=`pwd`
-
-echo "Building Mono and dependencies in $here, installing to $here/install"
-
-PATH=$here/install/bin:$PATH
-LD_LIBRARY_PATH=$here/install/lib:$LD_LIBRARY_PATH
-
-# Find a tool to fetch files. It must take an HTTP URL on the command line and
-# save the file in the current directory.  (It must also talk HTTP/1.1, which
-# rules out BSD's ftp(1), at least on FreeBSD 4.4.)
-viable_downloaders="wget fetch"
-for i in $viable_downloaders
-do
-    if which $i > /dev/null; then
-	downloader=`which $i`
-	break
-    fi
-done
-
-if [ -z "$downloader" ]; then
-    echo "Can't find a commandline download tool (tried: $viable_downloaders)"
-    exit -1
-else
-    echo "Using $downloader to fetch files"
-fi 
-
-# We need to prefer GNU make if there's a choice.  BSD make falls over in
-# the glib build if gtk-doc is disabled.
-viable_makers="gmake make"
-for i in $viable_makers
-do
-    if which $i > /dev/null; then
-	MAKE=$i
-	break
-    fi
-done
-
-if [ -z "$MAKE" ]; then
-    echo "Can't find a make tool (tried: $viable_makers)"
-    exit -1
-else
-    echo "Using $MAKE"
-    export MAKE
-fi
-
-# Need to install pkgconfig and set ACLOCAL_FLAGS if there is not a
-# pkgconfig installed already.  Otherwise set PKG_CONFIG_PATH to the
-# glib we're about to install in $here/install.  This script could
-# attempt to be clever and see if glib 2 is already installed, too.
-
-
-# --print-ac-dir was added in 1.2h according to the ChangeLog.  This
-# should mean that any automake new enough for us has it.
-
-function aclocal_scan () {
-    # Quietly ignore the rogue '-I' and other aclocal flags that
-    # aren't actually directories...
-    for i in `aclocal --print-ac-dir` $ACLOCAL_FLAGS
-    do
-	if [ -f $i/$1 ]; then
-	    return 0
-	fi
-    done
-
-    return 1
-}
-
-function pkgconfig_scan () {
-    module=$1
-
-    echo "Finding pkgconfig files for $module..."
-
-    # Should we use locate? or just a list of well-known directories?
-    # locate has the problem of false positives in src dirs
-    for i in /usr/lib/pkgconfig /usr/local/lib/pkgconfig
-    do
-	echo "Looking in $i..."
-	if [ -f $i/${module}.pc ]; then
-	    echo $i
-	    return
-	fi
-    done
-}
-
-function install_package() {
-    tarfile=$1
-    dirname=$2
-    name=$3
-    configure_options=$4
-
-    echo "Installing $name..."
-    if [ ! -f $here/$tarfile ]; then
-	(cd $here && $downloader http://www.go-mono.com/archive/$tarfile)
-    fi
-
-    # Assume that the package built correctly if the dir is there
-    if [ ! -d $here/$dirname ]; then
-	# Build and install package
-	(cd $here && tar xzf $tarfile) || exit -1
-	(cd $here/$dirname; ./configure --prefix=$here/install $configure_options || exit -1; $MAKE || exit -1; $MAKE install || exit -1)
-	success=$?
-	if [ $success -ne 0 ]; then
-	    echo "***** $name build failure. Run rm -rf $here/$dirname to have this script attempt to build $name again next time"
-	    exit -1
-	fi
-    fi
-}
-
-if aclocal_scan pkg.m4 ; then
-    install_pkgconfig=no
-else
-    install_pkgconfig=yes
-fi
-
-if aclocal_scan glib-2.0.m4 ; then
-    install_glib=no
-    if [ $install_pkgconfig = "yes" ]; then
-	# We have to tell the newly-installed pkgconfig about the
-	# system-installed glib
-	PKG_CONFIG_PATH=`pkgconfig_scan glib-2.0`:$PKG_CONFIG_PATH
-    fi
-else
-    install_glib=yes
-    PKG_CONFIG_PATH="$here/install/lib/pkgconfig:$PKG_CONFIG_PATH"
-fi
-
-if [ -f /usr/include/gc/gc.h ]; then
-    install_libgc=no
-else
-    install_libgc=yes
-fi
-
-if [ $install_pkgconfig = "yes" -o $install_glib = "yes" ]; then
-    ACLOCAL_FLAGS="-I $here/install/share/aclocal $ACLOCAL_FLAGS"
-fi
-
-export PATH
-export LD_LIBRARY_PATH
-export ACLOCAL_FLAGS
-export PKG_CONFIG_PATH
-
-# Freebsd puts iconv in /usr/local, so see if we need to add
-# /usr/local/include and /usr/local/lib to CPPFLAGS and LDFLAGS.  We could
-# skip this if it would add /usr/include and /usr/lib, but leaving it
-# shouldnt break anything.
-#
-# Actually, it does break stuff :-(  gcc 3.2 prints gratuitous warnings
-# and configure fails to find header files because of this cpp output.
-
-if [ ! -f /usr/include/iconv.h ]; then
-	iconvdirs="/usr/local/include"
-	for i in $iconvdirs
-	do
-		if [ -f $i/iconv.h ]; then
-			iconvh_dir=$i
-			break
-		fi
-	done
-
-	if [ -z "$iconvh_dir" ]; then
-	    echo "Can't find iconv headers (looked in $iconvdirs)"
-	    exit -1
-	fi
-
-	iconvlib_dir=`echo $iconvh_dir | sed -e 's/include/lib/'`
-
-	echo "Adding $iconvh_dir to CPPFLAGS"
-	echo "Adding $iconvlib_dir to LDFLAGS"
-
-	CPPFLAGS="$CPPFLAGS -I$here/install/include -I$iconvh_dir"
-	LDFLAGS="$LDFLAGS -L$here/install/lib -L$iconvlib_dir"
-else
-	CPPFLAGS="$CPPFLAGS -I$here/install/include"
-	LDFLAGS="$LDFLAGS -L$here/install/lib"
-fi
-
-export CPPFLAGS
-export LDFLAGS
-
-# Grab pkg-config, glib and libgc if necessary
-
-if [ $install_pkgconfig = "yes" ]; then
-    install_package pkgconfig-0.8.0.tar.gz pkgconfig-0.8.0 pkgconfig ""
-else
-    echo "Not installing pkgconfig, you already seem to have it installed"
-fi
-
-if [ $install_glib = "yes" ]; then
-    install_package glib-2.0.6.tar.gz glib-2.0.6 glib ""
-else
-    echo "Not installing glib, you already seem to have it installed"
-fi
-
-if [ $install_libgc = "yes" ]; then
-    install_package gc6.1alpha5.tar.gz gc6.1alpha5 libgc "--enable-threads=pthreads"
-    # make install didnt do the headers!
-    mkdir -p $here/install/include/gc
-    cp -r $here/gc6.1alpha5/include/* $here/install/include/gc
-else
-    echo "Not installing libgc, you already seem to have it installed"
-fi
-
-# End of build dependencies, now get the latest mono checkout and build that
-
-test -z "$CVSROOT" && CVSROOT=:pserver:anonymous at anoncvs.go-mono.com:/mono
-export CVSROOT
-
-echo "Updating mono"
-
-# cvs checkout does the same as cvs update, except that it copes with
-# new modules being added
-
-# Older versions of cvs insist on a cvs login for :pserver: methods
-# Make sure cvs is using ssh for :ext: methods
-
-if [ ${CVSROOT:0:5} = ":ext:" ]; then
-    CVS_RSH=ssh
-    export CVS_RSH
-elif [ ${CVSROOT:0:9} = ":pserver:" ]; then
-    # Chop off the trailing /mono because cvs 1.11 adds the port number
-    # into the .cvspass line
-    if ! grep ${CVSROOT%:/mono} ~/.cvspass > /dev/null 2>&1 ; then
-	echo "Logging into CVS server.  Anonymous CVS password is probably empty"
-	cvs login
-    fi
-fi
-
-(cd $here && cvs checkout mono) || exit -1
-
-# Build and install mono
-echo "Building and installing mono"
-
-(cd $here/mono; ./autogen.sh --prefix=$here/install || exit -1; $MAKE || exit -1; $MAKE install || exit -1) || exit -1
-
-
-echo ""
-echo ""
-echo "All done."
-echo "Add $here/install/bin to \$PATH"
-echo "Add $here/install/lib to \$LD_LIBRARY_PATH"
-echo "Don't forget to copy the class libraries to $here/install/lib"
-
diff --git a/web/monodoc-xml b/web/monodoc-xml
deleted file mode 100644
index e8a5ffe..0000000
--- a/web/monodoc-xml
+++ /dev/null
@@ -1,755 +0,0 @@
-* MonoDoc XML Tag Reference
-
-** Introduction
-
-<em>
-[This documentation is in progress.  Comments to
-<a href="mailto:jbarn at httcb.net">jbarn at httcb.net</a> and/or
-<a href="mailto:mono-docs-list at ximian.com">mono-docs-list at ximian.com</a>.]
-</em>
-
-MonoDoc XML, our format for multilingual API documentation stored outside of
-source files, is very similar to the output of Microsoft's csc /doc.  Minor
-alterations have been made to ease human parsing and hand-editing, but
-the majority of the tags are identical.  In fact, many of the descriptions
-and examples below are taken from the ECMA C# Language Specification with
-little or no alteration.
-
-This document provides a list of all available MonoDoc XML tags, with
-syntax and examples.  A complete example can be found in
-<a href="#appendix-a">Appendix A</a>, and both a <a href="#">DTD</a> and
-<a href="#">XSD schema</a> will be available very shortly.
-
-** MonoDoc XML Tags
-
-<dl>
-<dt><code><a href="#c"><c></a></code></dt>
-<dd>Mark short sections of text as code.</dd>
-
-<dt><code><code><a href="#code"><code></a></code></dt></code>
-<dd>Mark one or more lines as code or output.</dd>
-
-<dt><code><a href="#doc"><doc></a></dt></code>
-<dd>Root element of documentation XML.</dd>
-
-<dt><code><a href="#event"><event></a></dt></code>
-<dd>Describe an event.</dd>
-
-<dt><code><a href="#example"><example></a></dt></code>
-<dd>An example.</dd>
-
-<dt><code><a href="#exception"><exception></a></dt></code>
-<dd>Specify an exception a method can throw.</dd>
-
-<dt><code><a href="#field"><field></a></dt></code>
-<dd>Describe a field.</dd>
-
-<dt><code><a href="#list"><list></a></dt></code>
-<dd>Create a list or table.</dd>
-
-<dt><code><a href="#method"><method></a></dt></code>
-<dd>Describe a method.</dd>
-
-<dt><code><a href="#para"><para></a></dt></code>
-<dd>Allow text to be structured in paragraphs.</dd>
-
-<dt><code><a href="#param"><param></a></dt></code>
-<dd>Specify a parameter for a method.</dd>
-
-<dt><code><a href="#paramref"><paramref></a></dt></code>
-<dd>Mark a word as a parameter.</dd>
-
-<dt><code><a href="#permission"><permission></a></dt></code>		
-<dd>Define the access level of a member.</dd>
-
-<dt><code><a href="#property"><property></a></dt></code>
-<dd>Describe a property.</dd>
-
-<dt><code><a href="#remarks"><remarks></a></dt></code>
-<dd>Provide verbose information for a type or member.</dd>
-
-<dt><code><a href="#returns"><returns></a></dt></code>
-<dd>Specify the return value of a method.</dd>
-
-<dt><code><a href="#see"><see></a></dt></code>
-<dd>Specify a link.</dd>
-
-<dt><code><a href="#seealso"><seealso></a></dt></code>
-<dd>Specify a 'see also' entry.</dd>
-
-<dt><code><a href="#summary"><summary></a></dt></code>
-<dd>Provide a brief (usually one sentence) description of a member or type.</dd>
-
-<dt><code><a href="#type"><type></a></dt></code>
-<dd>Describe a type.</dd>
-</dl>
-
-** Definitions and Examples
-
-*** <a name="c"><c></a>
-
-This tag can be used to mark short, inline fragments of text that should 
-be considered source code or program output.  User agents should render 
-this tag in a special -- likely monospace -- font.  For larger sections, 
-use <a href="#code"><code><code></code></a>.
-
-**** Syntax
-
-<pre>
-<c>code or output text</c>
-</pre>
-
-**** Example
-
-<pre>   
-<remarks>
-    Class <c>Point</c> models a point in two-dimensional space.
-</remarks>
-</pre>
-
-*** <a name="code"><code></a>
-
-This tag can be used to mark one or more lines of text as source code or 
-program output.  User agents should render this tag in a special (likely 
-monospace) font, and preserve both whitespace and newlines.
-
-**** Syntax
-
-	<code><code>source or program output</code></code>
-
-**** Example
-
-<pre>
-<summary>
-    This method changes the point's location by the given
-    x- and y-offsets.
-    <example lang="C#">
-        A C# example:
-        <code>
-            Point p = new Point(3, 5);
-            p.Translate(-1, 3);
-            // p == (2, 8);
-        </code>
-    </example>
-</summary>
-</pre>
-
-*** <a name="doc"><doc></a>
-
-This tag is the root element of the documentation file.  It can contain 
-any number of <type> elements.
-
-**** Syntax
-
-<code><doc lang="language" assembly="assembly">typedocs</doc></code>
-
-<blockquote>
-<em>lang="language"</em><br />
-The two-letter ISO code that specifies what language the contained
-documentation is written in.
-</blockquote>
-
-**** Example
-
-<pre>
-<doc lang="en">
-    <type name="Graphics.Point">
-        <!-- ... -->
-    </type>
-</doc> 
-</pre>
-
-*** <a name="event"><event></a>
-
-This tag documents an event.
-
-**** Syntax
-
-<code><event name="eventname">documentation</event></code>
-
-<blockquote>
-<em>name="eventname"</em><br />
-The name of the event being documented.
-</blockquote>
-		
-**** Example
-
-<pre>
-<event name="Click">
-    <summary>
-        Occurs when the control is clicked.
-    </summary>
-    <data>
-        The event handler receives an argument of type EventArgs
-        containing data related to this event.
-    </data>
-    <remarks>
-        <para>The ControlStyles.StandardClick style must be set 
-        for this event to be raised.</para>
-        <para>For more information about handling events, see 
-        Consuming Events.</para>
-    </remarks>
-</event>
-</pre>
-
-*** <a name="example"><example></a>
-
-This tag marks a section of text as an example, and optionally specifies 
-what programming language <code><a href="#code"><code></a></code> portions of the example are written in.
-
-**** Syntax
-
-<code><example lang="language">example text and code</example></code>
-
-<blockquote>
-<em>lang="language"</em><br />
-(optional) The name of the programming language <code><a href="#code"><code></a></code> blocks in this example
-use.  This information can be used by user agents to provide
-intelligent access to examples in multiple languages.
-</blockquote>
-
-**** Example
-
-See <code><a href="#code"><code><a/></code> for an example.
-
-*** <a name="exception"><exception></a>
-
-This tag provides a way to specify the exceptions a method can throw.
-
-**** Syntax
-
-<code><exception cref="exception-type">description</exception></code>
-
-<blockquote>
-<em>cref="exception-type"</em><br />
-The name of an exception type.
-</blockquote>
-
-**** Example
-
-<pre>
-<exception cref="System.IO.FileNotFoundException">
-    Thrown when the requested file is not found.
-</exception>
-</pre>
-
-*** <a name="field"><field></a>
-
-This tag is used to describe a field.
-
-**** Syntax
-
-<code><field name="fieldname">documentation</field></code>
-
-<blockquote>
-<em>name="fieldname"</em><br />
-The name of the field being documented.
-</blockquote>
-	
-**** Example
-
-<pre>
-<field name="x">
-    <summary>
-        Instance variable <c>x</c> represents the point's 
-	x-coordinate.
-    </summary>
-</field>
-</pre>
-
-*** <a name="list"><list></a>
-
-This tag is used to create a list or table of items.  It may contain a 
-<code><listheader></code> block to define the heading row of either a table or 
-definition list.  (When defining a table, only an entry for 'term' in the 
-heading need be supplied.)
-
-Each item in the list is specified with an <code><item></code> block.  When creating a 
-definition list, both <code><term></code> and <code>&ltdescription></code> must be specified.  
-However, for a table, bulleted list, or numbered list, only <code><description></code>
-need be specified.
-
-**** Syntax
-
-<pre>
-<list type="bullet" | "number" | "table">
-   <listheader>
-       <term>term</term>
-       <description>description</description>
-   </listheader>
-   <item>
-       <term>term</term>
-       <description>description</description>
-   </item>
-   
-   ...
-  
-</list>
-</pre>
-	
-<blockquote>
-<em>term</em><br />
-The term to define, whose definition is in <code><description></code>.
-<br /><br />	
-<em>description</em><br />
-Either an item in a bullet or numbered list, or the definition of a <code><term></code>.
-</blockquote>
-
-**** Example
-
-<pre>
-<list type="bullet">
-    <item>
-        <description>Item 1</description>
-    </item>
-    <item>
-        <description>Item 2</description>
-    </item>
-</list>
-</pre>
-
-*** <a name="method"><method></a>
-
-This tag is the overall containing tag for documenting a method.
-
-**** Syntax
-
-<code><method name="methodname">documentation</method></code>
-
-**** Example
-
-<pre>
-<method name="op_Equality(Graphics.Point,Graphics.Point)">
-    <summary>
-        This operator determines whether two points have
-        the same location.
-    </summary>
-    <param name="p1">
-        <c>p1</c> is the first Point to be compared.
-    </param>
-    <param name="p2">
-        <c>p2</c> is the second Point to be compared.
-    </param>
-    <returns>
-        True if the points have the same location and they
-        have the exact same type; otherwise, false.
-    </returns>
-    <seealso cref="Equals(System.Object)" />
-    <seealso cref="op_Inequality(Graphics.Point,Graphics.Point)" />
-</method>
-</pre>
-
-*** <a name="para"><para></a>
-
-
-This tag is for use inside other tags such as <code><remarks></code> or <code><returns></code>, and 
-allows text to be structured into paragraphs.
-
-**** Syntax
-
-<code><para>text</para></code>
-
-**** Example
-
-<pre>
-<summary>
-    <para>
-    This is the entry point of the <c>Point</c> class testing 
-    program.
-    </para>
-    <para>
-    This program tests each method and operator, and
-    is intended to be run after any non-trivial maintenance has
-    been performed on the <c>Point</c> class.
-    </para>
-</summary>
-</pre>
-
-*** <a name="param"><param></a>
-
-This tag is used to describe a parameter for a method, constructor, or 
-indexer.
-
-**** Syntax
-
-<code><param name="name">description</param></code>
-	
-<blockquote>
-<em>name</em><br />
-The name of the parameter.
-</blockquote>
-
-**** Example
-
-<pre>
-<summary>
-    This is the entry point of the <c>Point</c> 
-    class.
-</summary>
-<param name="xor"><c>xor</c> is the new x-coordinate.</param>
-<param name "yor"><c>yor</c> is the new y-coordinate.</param>
-</pre>
-
-*** <a name="paramref"><paramref></a>
-
-This tag is used to indicate that a word is a parameter.  User agents 
-could use this information for special formatting or hyperlink insertion.
-
-**** Syntax
-
-<code><paramref name="name" /></code>
-
-<blockquote>
-<em>name</em><br />
-The name of the parameter.
-</blockquote>
-
-**** Example
-
-<pre>
-<summary>
-    This constructor initializes the new Point to
-    (<paramref name="xor" />,<paramref name="yor" />).
-</summary>
-<param name="xor"><c>xor</c> is the new x-coordinate.</param>
-<param name "yor"><c>yor</c> is the new y-coordinate.</param>
-</pre>
-
-*** <a name="permission"><permission></a>
-
-This tag allows the security accessibility of a member to be documented.
-
-**** Syntax
-
-<code><permission cref="member">description</permission></code>
-
-<blockquote>
-<em>cref="member"</em><br />
-The name of a member.</br>
-</blockquote>
-
-**** Example
-
-<pre>
-<permission cref="System.Security.PermissionSet">
-    Everyone can access this method.
-</permission>
-</pre>        
-
-*** <a name="property">&ltproperty></a>
-
-This tag is the overall containing tag for documenting a property.
-
-**** Syntax
-
-<code><property name="propertyname">documentation</property></code>
-
-<blockquote>
-<em>name="propertyname"</em><br />
-The name of the property.
-</blockquote>
-
-**** Example
-
-<pre>
-<property name="X">
-    <summary>
-        Gets or sets the point's x-coordinate.
-    <value>
-        The point's x-coordinate.
-    </value>
-</property>
-</pre>
-
-
-*** <a name="remarks"><remarks></a>
-
-This tag contains extended discussion and information about a member or
-a type. <em>[jbarn: This differs from both the ECMA docs and 
-portions of Microsoft's documentation, but seems consistent with both 
-common usage, and, more importantly, NDoc convention.]</em>
-
-**** Syntax
-
-<code><remarks>description</remarks></code>
-	
-**** Example
-
-<pre>
-<type name="Graphics.Point">
-    <summary>
-        Models a point in a two-dimensional plane.
-    </summary>
-    <remarks>
-        Herein I might have an extended discussion of
-        the validity of Cartesian coordinate systems,
-        with examples pro and con, and perhaps
-        some code.
-    </remarks>
-    
-    <!-- ... -->
-</type>
-</pre>
-
-*** <a name="returns"><returns></a>
-
-This tag is used to describe the return value of a method.
-
-**** Syntax
-
-<code><returns>description</returns></code>
-
-**** Example
-
-<pre>
-<method name="op_Inequality(Graphics.Point,Graphics.Point)">
-    <summary>
-        This operator determines whether two points have the
-        same location.
-    </summary>
-    <param name="p1"><c>p1</c> is the first Point to be compared.</param>
-    <param name="p2"><c>p2</c> is the second Point to be compared.</param>
-    <returns>
-        True if the points do not have the same location and they
-        have the exact same type; otherwise, false.
-    </returns>
-</method>
-</pre>
-
-*** <a name="see"><see></a>
-
-This tag allows a link to be specified within documentation text.  (Use 
-<code><seealso></code> to indicate links that should appear in a 'See Also' section.)
-
-**** Syntax
-
-<code><see cref="destination" /></code>
-
-<blockquote>
-<em>cref="destination"</em><br />
-A destination, such as a type or a member of a type.
-</blockquote>
-
-**** Example
-
-<pre>
-<summary>
-    This method changes the point's location to the given
-    coordinates.  This is an asinine way to insert a link,
-    but <see cref="Equals(Object)" /> to understand
-    how points are compared.
-</summary>
-</pre>	
-
-*** <a name="seealso"><seealso></a>
-
-This tag allows an entry to be generated for the 'See Also' section.  (Use 
-<code><see></code> to specify a link from within text.)
-
-**** Syntax
-
-<code><seealso cref="destination" /></code>
-	
-<blockquote>
-<em>cref="destination"</em><br />
-A destination, such as a type or a member of a type.
-</blockquote>
-
-**** Example
-
-<pre>
-<summary>
-    This method determines whether two Points have the
-    same location.
-</summary>
-<seealso cref="op_Equality(Graphics.Point,Graphics.Point)" />
-<seealso cref="op_Inequality(Graphics.Point,Graphics.Point" />
-</pre>
-
-*** <a name="summary"><summary></a>
-
-This tag contains a short summary of a member or type, 
-often one sentence. <em>[jbarn: This differs from both the ECMA docs and 
-portions of Microsoft's documentation, but seems consistent with both 
-common usage, and, more importantly, NDoc convention.]</em>
-
-**** Syntax
-
-<code><summary>description</summary></code>
-
-**** Example
-
-<pre>
-<summary>
-    This is the entry point of the <c>Point</c> class testing
-    program.
-</summary>
-<remarks>
-    This program tests each method an operator, and is intended
-    to be run after any non-trivial maintenance is performed
-    on the <c>Point</c> class.
-</remarks>
-</pre>
-
-*** <a name="type"><type></a>
-
-This tag is the overall containing tag for documenting a type.
-
-**** Syntax
-
-<code>&lttype name="typename" assembly="assemblyname">documentation</type></code>
-
-<blockquote>
-<em>name="typename"</em><br />
-The name of the type being documented.
-<br /><br />
-<em>assembly="assemblyname"</em><br />
-The assembly this type resides in.  This attribute is not required for nested types.
-</blockquote>
-
-**** Example
-
-<pre>
-<type name="Graphics.Point" assembly="Point">
-    <summary>
-        Models a point in two-dimensional space.
-    </summary>
-    
-    <!-- members -->
-    
-    <field name="x">
-        <summary>
-            Represents the point's x-coordinate.
-        </summary>
-    </field>
-</type>
-</pre>
-
-** <a name="appendix-a">Appendix A: Complete Example</a>
-
-<em>[jbarn: Please, please, don't take the human-readable portions of
-this example to be good guidelines for writing your own documentation.
-this XML is intended only to show structure.]</em>
-
-<pre>
-<?xml version="1.0" encoding="UTF-8"?>
-<doc lang="en">
-    <type name="Graphics.Point" assembly="Point">
-        <summary>
-            Models a point in a two-dimensional plane.
-        </summary>
-        <remarks>
-            No useful remarks.
-        </remarks>
-        
-        <!-- fields -->
-        <field name="x">
-            <summary>
-                Instance variable <c>x</c> represents the point's x-coordinate.
-            </summary>
-        </field>
-        
-        <field name="y">
-            <summary>
-                Instance variable <c>y</c> represents the point's y-coordinate.
-            </summary>
-        </field>
-        
-        <!-- methods -->
-        <method name="#ctor">
-            <summary>
-                Initializes the new point to <c>(0,0)</c>.
-            </summary>
-        </method>
-        
-        <method name="#ctor(System.Int32,System.Int32)">
-            <summary>
-                Initializes the new Point to (<paramref name="xor" />,<paramref name="yor" />).
-            </summary>
-            <param name="xor"><c>xor</c> is the new x-coordinate.</param>
-            <param name="yor"><c>yor</c> is the new y-coordinate.</param>
-        </method>
-        
-        <method name="Move(System.Int32,System.Int32)">
-            <summary>
-                This method changes the point's location to the given coordinates.
-            </summary>
-            <param name="xor"><c>xor</c> is the new x-coordinate.</param>
-            <param name="yor"><c>yor</c> is the new y-coordinate.</param>
-            <seealso cref="Translate(System.Int32,System.Int32)" />
-        </method>
-        
-        <method name="Translate(System.Int32,System.Int32)">
-            <summary>This method changes the point's location by the given x- and y-offsets.</summary>
-            <remarks>
-                <example lang="C#">
-                    A C# example:
-                        <code>
-                            Point p = new Point(3, 5);
-                            p.Translate(-1, 3);
-                        </code>
-                    This code results in <c>p</c> having the value (2,8).
-                </example>
-            </remarks>
-            <param name="xor"><c>xor</c> is the relative x-offset.</param>
-            <param name="yor"><c>yor</c> is the relative y-offset.</param>
-            <seealso cref="Move(System.Int32,System.Int32)" />
-        </method>
-        
-        <method name="Equals(System.Object)">
-            <summary>This method determines whether two points have the same location.</summary>
-            <param name="o"><c>o</c> is the object to be compared to the current object.</param>
-            <returns>True if the Points have the same location and they have the exact same
-            type; otherwise, false.</returns>
-            <seealso cref="op_Equality(Graphics.Point,Graphics.Point)" />
-            <seealso cref="op_Inequality(Graphics.Point,Graphics.Point" />
-        </method>
-        
-        <method name="ToString">
-            <summary>Report a point's location as a string.</summary>
-            <returns>A string representing a point's location, in the form (x,y), without any
-            leading, trailing, or embedded whitespace.</returns>
-        </method>
-        
-        <method name="op_Equality(Graphics.Point,Graphics.Point)">
-            <summary>This operator determines whether two points have the same location.</summary>
-            <param name="p1"><c>p1</c> is the first Point to be compared.</param>
-            <param name="p2"><c>p2</c> is the second Point to be compared.</param>
-            <returns>True if the points have the same location and they have the exact same
-            type; otherwise, false.</returns>
-            <seealso cref="Equals(System.Object)" />
-            <seealso cref="op_Inequality(Graphics.Point,Graphics.Point)" />
-        </method>
-
-        <method name="op_Inequality(Graphics.Point,Graphics.Point)">
-            <summary>This operator determines whether two points have the same location.</summary>
-            <param name="p1"><c>p1</c> is the first Point to be compared.</param>
-            <param name="p2"><c>p2</c> is the second Point to be compared.</param>
-            <returns>True if the points do not have the same location and they have the exact same
-            type; otherwise, false.</returns>
-            <seealso cref="Equals(System.Object)" />
-            <seealso cref="op_Equality(Graphics.Point,Graphics.Point)" />
-        </method>
-        
-        <method name="Main">
-            <summary>
-                This is the entry point of the Point class testing program.
-            </summary>
-            <remarks>
-                <para>This program tests each method and operator, and is intended to be run after
-                any non-trivial maintenance has been performed on the Point class.</para>
-            </remarks>
-        </method>
-        
-        <!-- properties -->
-        <property name="X">
-            <value>Property <c>X</c> represents the point's x-coordinate.</value>
-        </property>
-        
-        <property name="Y">
-            <value>Property <c>y</c> represents the point's y-coordinate.</value>
-        </property>
-    </type>
-</doc>
-</pre>
-
diff --git a/web/mysql b/web/mysql
deleted file mode 100755
index 45d03c6..0000000
--- a/web/mysql
+++ /dev/null
@@ -1,181 +0,0 @@
-* MySQL Data Provider
-
- <p>There are two ADO.NET providers in Mono 
- for a <a href="http://www.mysql.com/">MySQL</a> database:
-
-<ul>
-	<li><a href="http://sourceforge.net/projects/mysqlnet/">ByteFX.Data.MySQLClient</a>
-		<ul>
-			<li>Written in 100% C#</li>
-			<li>Does not require a client library</li>
-			<li>Works on Mono and Microsoft .NET</li>
-			<li>Requires at least Mono 0.18 and MySQLNet 0.65 for it to work on Mono</li>
-			<li>Works in the SQL# command-line and GTK# GUI version</li>
-		</ul>
-	</li>
-
-	<li>Mono.Data.MySql (DEPRECATED)
-		<ul>
-			<li>Deprecated in favor of ByteFX.Data.MySQLClient.  Mono.Data.MySql is no longer included in
-			Mono releases.</li>
-		</ul>
-	</li>
-	
-	<li>Bugs with Mono or the data provider should be reported 
-	in Mono's Bugzilla <a href="http://bugzilla.ximian.com/">here</a>.  If you
-	do not have Bugzilla user account, it is free 
-	and easy to 
-	create one <a href="http://bugzilla.ximian.com/createaccount.cgi">here</a>.</li>
-	
-</ul>
-
- <p><a href="http://www.mysql.com/articles/dotnet/">Exploring MySQL 
- in the Microsoft .NET Environment</a> is a nice article to read.</li>
-    
-** Current Status
-
- Current Status of the MySQL providers:
-
-<ul>
-
-	<li>ByteFX.Data.MySqlClient
-		<ul>
-			<li>Build and Runs on Microsoft .NET and Mono</li>
-			<li>Works with SQL# (command-line and GTK# GUI versions)</li>
-			<li>MySQLCommandBuilder now implemented</li>
-			<li>Transaction support now implemented (not all table types support this)</li>
-			<li>GetSchemaTable fixed to not use xsd (for Mono)</li>
-			<li>Driver is now Mono-compatible</li>
-			<li>TIME data type now supported</li>
-			<li>More work to improve Timestamp data type handling</li>
-			<li>Changed signatures of all classes to match corresponding SqlClient classes</li>
-			<li>Protocol compression  using <a href="http://www.icsharpcode.net/OpenSource/SharpZipLib/default.asp">SharpZipLib</a></li>
-			<li>Named pipes on Windows now working properly</li>
-			<li>Work done to improve Timestamp data type handling</li>
-			<li>Implemented IEnumerable on DataReader so DataGrid would work</li>
-			<li>Speed increased dramatically by removing bugging network sync code</li>
-			<li>Driver no longer buffers rows of data (more ADO.Net compliant)</li>
-			<li>Conversion bugs related to TIMESTAMP and DATETIME fields fixed</li>
-			
-		</ul>
-	</li>
-	
-	<li>Mono.Data.MySql (DEPRECATED)
-	</li>
-	
-</ul>
-
-** Action plan
-
- The current plan for the MySQL data providers:
- 
- <ul>
-	<li>ByteFX.Data.MySqlClient
-		<ul>
-			<li>Testing and fixes</li>
-			<li>Implement missing features</li>
-			<li>Only fixes for bugs to build and run MySQLClient on Mono
-			will be accepted in mono-cvs.  Most bugs and any new features will
-			go into sourceforge cvs.  Anytime there is a release of MySQLClient,
-			the source code will be copied from sourceforge cvs to mono-cvs</li>
-			<li>Releases of MySQLClient are determined by Reggie Burnett and releases
-			of Mono are determined by Miguel de Icaza</li>
-			<li>Implement any missing features or fix any bugs in Mono to get new
-			features all of MySQLClient to work on Mono</li>
-		</ul>
-	</li>
-	<li>Mono.Data.MySql (DEPRECATED)
-	</li>
-</ul>
-
-** Testing for MySQLNet provider (ByteFX.Data.MySQLClient)
-
-<ul>
-	<li>Have access to a MySQL database or download it from
-		<ul>
-			<li><a href="http://www.mysql.com/downloads/index.html">MySQL AB</a></li>
-		</ul>
-	</li>
-	
-	<li>MySQLNet can be gotten from <a href="http://sourceforge.net/projects/mysqlnet/">here</a> and the 
-	binary assembly ByteFX.Data.dll needs to be	installed 
-	in the same place as the mono class libraries.</li>
-	
-	<li>MySQLNet requires <a href="http://www.icsharpcode.net/OpenSource/SharpZipLib/default.asp">SharpZipLib</a> which is 
-	a Zip Library written in 100% C#.  This is used for compression/decompression of data
-	sent/received over the network.  The SharpZipLib binary assembly SharpZipLib.dll should 
-	be installed in the same place as the mono class libraries.</li>
-	
-	<li>Has a ConnectionString format: 
-<pre>
-"Server=hostname;" +
-"Database=database;" +
-"User ID=username;" +
-"Password=password"
-</pre>
-	</li>
-	<li>C# Example:
-<pre>
- using System;
- using System.Data;
- using ByteFX.Data.MySqlClient;
- 
- public class Test 
- {
-    public static void Main(string[] args)
-    {
-       string connectionString = 
-          "Server=localhost;" +
-          "Database=test;" +
-          "User ID=myuserid;" +
-          "Password=mypassword;";
-       IDbConnection dbcon;
-       dbcon = new MySqlConnection(connectionString);
-       dbcon.Open();
-       IDbCommand dbcmd = dbcon.CreateCommand();
-       // requires a table to be created named employee
-       // with columns firstname and lastname
-       // such as,
-       //        CREATE TABLE employee (
-       //           firstname varchar(32),
-       //           lastname varchar(32));
-       string sql = 
-           "SELECT firstname, lastname " +
-           "FROM employee";
-       dbcmd.CommandText = sql;
-       IDataReader reader = dbcmd.ExecuteReader();
-       while(reader.Read()) {
-            string FirstName = (string) reader["firstname"];
-            string LastName = (string) reader["lastname"];
-            Console.WriteLine("Name: " + 
-                  FirstName + " " + LastName);
-       }
-       // clean up
-       reader.Close();
-       reader = null;
-       dbcmd.Dispose();
-       dbcmd = null;
-       dbcon.Close();
-       dbcon = null;
-    }
- }
-</pre>
-	</li>
-	<li>Building C# Example:
-	<ul>
-		<li>Save the example to a file, such as, TestExample.cs</li>
-<pre>
-	mcs TestExample.cs -r System.Data.dll \
-	    -r ByteFX.Data.dll
-</pre>
-		</li>
-	</ul>
-	</li>
-	<li>Running the Example:
-<pre>
-mono TestExample.exe
-</pre>
-	</li>
-
-</ul>
-
diff --git a/web/odbc b/web/odbc
deleted file mode 100755
index e29bc44..0000000
--- a/web/odbc
+++ /dev/null
@@ -1,218 +0,0 @@
-* ODBC Data Provider
-
-<ul>
-
-	<li>ADO.NET Data Provider for Data Sources 
-	that have <a href="http://www.microsoft.com/data/odbc/">ODBC</a> support.</li>
-
-	<li>Exists in namespace System.Data.Odbc and assembly System.Data</li>
-	
-	<li>Works on Windows and Linux. Should have no problems working on UNIX too.</li>
-	
-	<li>Works on Windows via the native Windows odbc32.dll</li>
-	
-	<li>Works on Linux via:
-	
-	<ul>
-		<li><a href="http://www.unixodbc.org/">unixODBC</a> which has 
-			commercial support 
-			from <a href="http://www.easysoft.com/">Easysoft</a></li>
-			
-		<li><a href="http://www.iodbc.org/">iODBC</a> which has 
-		    commercial support 
-		    from <a href="http://oplweb.openlinksw.com:8080/download/">OpenLink Software</a></li>
-	</ul>
-	
-	<li>List of unixODBC <a href="http://www.unixodbc.org/drivers.html">drivers</a>
-	
-	<li>List of <a href="http://www.sqlsummit.com/odbcvend.htm">ODBC Vendors</a>
-	
-	<li>ODBC can connect to various databases which has an ODBC driver installed:
-	<ul> 
-		  <li><a href="http://www.mysql.com/">MySQL</a></li>
-		  <li><a href="http://www.postgresql.org/">PostgreSQL</a></li>
-		  <li><a href="http://www.oracle.com/">Oracle</a></li>
-		  <li><a href="http://www.borland.com/products/downloads/download_interbase.html">Interbase</a></li>
-		  <li><a href="http://www.sybase.com/downloads">Sybase</a> (
-		  via <a href="http://www.freetds.org/">FreeTDS</a> on UNIX)</li>
-		  <li><a href="http://www.microsoft.com/sql/default.asp">Microsoft SQL Server</a> (
-		  via <a href="http://www.freetds.org/">FreeTDS</a> on UNIX)</li>
-		  <li><a href="http://www-3.ibm.com/software/data/db2/">IBM DB2 Universal Database</a></li>
-		  <li><a href="http://www.microsoft.com/office/access">MS Access</a>
-		  (via <a href="http://mdbtools.sourceforge.net/">MDB Tools</a> on UNIX)</li>
-	</ul>
-		
-	<li>ODBC Provider created by Brian Ritchie.</li>
-	
-	<li>Does not support trusted connections</li>
-	
-</ul>
-	
-** Current Status
-
-<ul>
-	<li>Can Connect on:
-	<ul>
-		<li>Windows via native Windows odbc32.dll</a></li>
-		<li>Linux via:
-		<ul>
-			<li>unixODBC's libodbc.so</li>
-			<li>iODBC's libiodbc.so</li>
-		</ul>
-		</li>
-	</ul>
-	</li>
-	
-	<li>Various databases have been tested using their
-	   ODBC drivers: MySQL, PostgreSQL, Oracle, IBM DB2, and Microsoft SQL Server</li>
-	   
-	<li>Can execute non-query commands via ExecuteNonQuery of a OdbcCommand</li>
-	
-	<li>Can execute aggreates and retrieve a single row single column result via
-	ExecuteScalar of a OdbcCommand</li>
-	
-	<li>Can execute queries via ExecuteReader of a OdbcCommand and 
-	retrieve results using an OdbcDataReader</li>
-	
-	<li>Can get a DataTable containing schema info via GetSchemaTable() in a OdbcDataReader</li>
-	
-	<li>Can Fill a DataTable in a DataSet via an OdbcDataAdapter</li>
-	
-	<li>Works in SQL#, but Column names don't show up correctly.</li>
-	
-	<li>Bugs with Mono or the data provider should be reported 
-	in Mono's Bugzilla <a href="http://bugzilla.ximian.com/">here</a>.  If you
-	do not have Bugzilla user account, it is free 
-	and easy to 
-	create one <a href="http://bugzilla.ximian.com/createaccount.cgi">here</a>.</li>
-
-	
-</ul>
-	
-** Action Plan
-
-<ul>
-	
-	<li>Fixing bugs
-	
-	<li>Testing with other setups
-</ul>
-
-** Testing ODBC provider with IBM DB2 Universal Database
-
-<ul>
-	<li>You need a working mono and mcs</li>
-	
-	<li>For Unix, you will need unixODBC or iODBC installed</li>
-	
-	<li>Have acess to a <a href="http://www-306.ibm.com/software/data/db2/">IBM DB2 Universal Database</a> or
-	you can download from IBM</li>
-	
-	<li>Read these web pages about Unix, ODBC, and IBM DB2
-
-	<ul>
-		<li><a href="http://www.unixodbc.com/doc/db2.html">unixODBC web page about IBM DB2</a></li>
-		<li><a href="http://www-306.ibm.com/software/data/db2/udb/ad/v8/cli/t0010406.htm">IBM web page about unixODBC and DB2</a></li>
-	</ul>
-	</li>
-	
-	<li>The ODBC provider is similar to the <a href="http://www.go-mono.com/ibmdb2.html">IBM DB2</a> provider.</li>
-</ul>
-
-** Testing ODBC provider with MySQL
-
-<p>You can test Mono's ODBC provider System.Data.Odbc with the MySQL ODBC driver MyODBC
-	
-<p><ul>
-	<li>Take a look at OdbcTest.cs in mcs/class/System.Data/Test</li>
-
-	<li>Here is a ConnectionString format if you have a DSN setup: 
-<pre>
-"DSN=dataSetName;UID=myuserid;PWD=mypassword"
-</pre>
-	</li>
-	<li>Here is a ConnectionString format if you do not have a DSN (have not
-	gotten this to work though):
-<pre>
-"DRIVER={MySQL ODBC 3.51 Driver};" +
-"SERVER=localhost;DATABASE=test;" +
-"UID=myuserid;PASSWORD=mypassword;" +
-"OPTION=3";
-
-</pre>
-	</li>
-	<li>C# Example:
-<pre>
- using System;
- using System.Data;
- using System.Data.Odbc;
- 
- public class Test 
- {
-    public static void Main(string[] args)
-    {
-		// have an ODBC DSN setup named MYSQLDSN
-		// that accesses a MySQL database via
-		// MyODBC driver for ODBC with a
-		// hostname of localhost and database test
-       string connectionString = 
-          "DSN=MYSQLDSN;" +
-          "UID=myuserid;" +
-          "PWD=mypassword";
-       IDbConnection dbcon;
-       dbcon.Open();
-       dbcon = new OdbcConnection(connectionString);
-       IDbCommand dbcmd = dbcon.CreateCommand();
-       // requires a table to be created named employee
-       // with columns firstname and lastname
-       // such as,
-       //        CREATE TABLE employee (
-       //           firstname varchar(32),
-       //           lastname varchar(32));
-       string sql = 
-           "SELECT firstname, lastname " +
-           "FROM employee";
-       dbcmd.CommandText = sql;
-       IDataReader reader = dbcmd.ExecuteReader();
-       while(reader.Read()) {
-            string FirstName = (string) reader["firstname"];
-            string LastName = (string) reader["lastname"];
-            Console.WriteLine("Name: " + 
-                FirstName + " " + LastName);
-       }
-       // clean up
-       reader.Close();
-       reader = null;
-       dbcmd.Dispose();
-       dbcmd = null;
-       dbcon.Close();
-       dbcon = null;
-    }
- }
-</pre>
-	</li>
-	<li>Building C# Example:
-	<ul>
-		<li>Save the example to a file, such as, TestExample.cs</li>
-		<li>Build on Linux:
-<pre>
-	mcs TestExample.cs -r System.Data.dll
-</pre>
-		</li>
-		<li>Build on Windows via Cygwin:
-<pre>
-	mono C:/cygwin/home/MyHome/mono/install/bin/mcs.exe \
-	     TestExample.cs \
-	     -lib:C:/cygwin/home/MyHome/mono/install/lib \
-	     -r System.Data.dll
-</pre>
-		</li>
-	</ul>
-	</li>
-	<li>Running the Example:
-<pre>
-mono TestExample.exe
-</pre>
-	</li>
-	
-</ul>
diff --git a/web/oledb b/web/oledb
deleted file mode 100755
index 1dabe62..0000000
--- a/web/oledb
+++ /dev/null
@@ -1,153 +0,0 @@
-* OLE DB Provider
-
-<ul>
-	<li> Provides a OleDb-like provider for Mono
-	using <a href="http://www.gnome-db.org/">GDA</a> as the data access layer.</li>
-
-	<li> Exists in namespace System.Data.OleDb and assembly System.Data</li>
-	
-	<li>Created by Rodrigo Moya</li>
-	
-	<li>LibGDA has providers for:</li>
-	<ul> 
-		  <li><a href="http://www.mysql.com/">MySQL</a></li>
-		  <li><a href="http://www.postgresql.org/">PostgreSQL</a></li>
-		  <li>XML</li>
-		  <li>ODBC (via <a href="http://www.unixodbc.org/">unixODBC</a>)</li>
-		  <li><a href="http://www.oracle.com/">Oracle</a></li>
-		  <li><a href="http://www.borland.com/products/downloads/download_interbase.html">Interbase</a></li>
-		  <li><a href="http://www.sybase.com/downloads">Sybase</a> and
-		  <a href="http://www.microsoft.com/sql/default.asp">Microsoft SQL Server</a> (
-		  via <a href="http://www.freetds.org/">FreeTDS</a>)</li>
-		  <li><a href="http://www-3.ibm.com/software/data/db2/">IBM DB2 Universal Database</a></li>
-		  <li><a href="http://www.hwaci.com/sw/sqlite/download.html">SQL Lite</a></li>
-		  <li><a href="http://www.microsoft.com/office/access/default.asp">MS Access</a></li>
-		  (via <a href="http://mdbtools.sourceforge.net/">MDB Tools</a>)</li>
-	</ul>
-	</li>
-	
-	<li>Does not support trusted connections</li>
-	
-	<li>Bugs with Mono or the data provider should be reported 
-	in Mono's Bugzilla <a href="http://bugzilla.ximian.com/">here</a>.  If you
-	do not have Bugzilla user account, it is free 
-	and easy to 
-	create one <a href="http://bugzilla.ximian.com/createaccount.cgi">here</a>.</li>
-
-	
-</ul>
-	
-** Current Status
-	<ul>
-		<li>The OleDb provider is working with libgda (an OLE-DB/ADO data access for Unix).  
-		The C-Sharp bindings to libgda currently work - meaning they can compile, run, 
-		and you can connect to a
-		PostgreSQL database via libgda via the C-Sharp bindings to libgda.</li>
-	
-		<li>Basic
-		functionality (execution of commands, data retrieval, transactions, etc) are
-		now working.</li>
-	
-		<li>An inital implementation of GetSchemaTable() for
-		the OleDbDataReader has been checked into cvs.  GetSchemaTable() isn't correct for OleDb,
-		but the foundation is there.</li>
-	</ul>
-
-** Action Plan
-	<ul>
-		<li>Current focus is on filling up the missing pieces (Data adapters
-		mainly) and schema support.</li>
-	
-		<li>We need help building libgda on Windows though.  libgda
-		builds find on linux though.</li>
-
-		<li>Need to make the OleDb provider compatible with the OleDb provider in Microsoft .NET</li>
-	</ul>
-	
-** Testing OleDb with libgda's PostgreSQL provider
-
-<ul>
-	<li>Requires a working mono and mcs</li>
-	<li>Requires Linux because the OleDb provider uses libgda and libgda only
-	works on Linux.</li>
-	<li>Connection String format: "Provider=providerName;...".  providerName is the
-	name of the Provider you use, such as, PostgreSQL, MySQL, etc.  The elipsis ...
-	means that the connection parameters are dependent upon the provider being used and
-	are passed to libgda for connecting.  Such paramters, can be: Database, User ID, Password,
-	Server, etc...</li>
-	<li>See the test TestOleDb.cs found at mcs/class/System.Data/System.Data.OleDb</li>
-	<li>C# Example for Mono's System.Data.OleDb:
-<pre>
- using System;
- using System.Data;
- using System.Data.OleDb;
- 
- public class Test 
- {
-    public static void Main(string[] args)
-    {
-		// there is a libgda PostgreSQL provider
-       string connectionString = 
-          "Provider=PostgreSQL;" +
-          "Addr=127.0.0.1;" +
-          "Database=test;" +
-          "User ID=postgres;" +
-          "Password=fun2db";
-       IDbConnection dbcon;
-       dbcon = new OleDbConnection(connectionString);
-       dbcon.Open();
-       IDbCommand dbcmd = dbcon.CreateCommand();
-       // requires a table to be created named employee
-       // with columns firstname and lastname
-       // such as,
-       //        CREATE TABLE employee (
-       //           firstname varchar(32),
-       //           lastname varchar(32));
-       string sql = 
-            "SELECT firstname, lastname " + 
-            "FROM employee";
-       dbcmd.CommandText = sql;
-       IDataReader reader = dbcmd.ExecuteReader();
-       while(reader.Read()) {
-            string FirstName = (string) reader["firstname"];
-            string LastName = (string) reader["lastname"];
-            Console.WriteLine("Name: " + 
-                 FirstName + " " + LastName);
-       }
-       // clean up
-       reader.Close();
-       reader = null;
-       dbcmd.Dispose();
-       dbcmd = null;
-       dbcon.Close();
-       dbcon = null;
-    }
- }
-</pre>
-	</li>
-	<li>Building C# Example:
-	<ul>
-		<li>Save the example to a file, such as, TestExample.cs</li>
-		<li>Build on Linux:
-<pre>
-	mcs TestExample.cs -r System.Data.dll
-</pre>
-		</li>
-		<li>Build on Windows via Cygwin:
-<pre>
-	mono C:/cygwin/home/MyHome/mono/install/bin/mcs.exe \
-	     TestExample.cs \
-	     -lib:C:/cygwin/home/MyHome/mono/install/lib \
-	     -r System.Data.dll
-</pre>
-		</li>
-	</ul>
-	</li>
-	<li>Running the Example:
-<pre>
-mono TestExample.exe
-</pre>
-</li>
-
-</ul>
-
diff --git a/web/papers b/web/papers
deleted file mode 100644
index 162f79d..0000000
--- a/web/papers
+++ /dev/null
@@ -1,101 +0,0 @@
-* JIT Compiler
-
-  <a
-  href="http://citeseer.nj.nec.com/vitek97efficient.html">
-  Efficient Type Inclusion Tests: Jahn Vitek, R. Nigel Horspool, Andres
-  Krall</a>
-
-  <a
-  href="http://citeseer.nj.nec.com/cytron91efficiently.html">
-  Efficiently Computing Static Single Assignment Form and the Control
-  Dependence Graph: Ron Cytron, Jeanne Ferrante</a> 
-
-  <a
-  href="http://citeseer.nj.nec.com/193349.html">
-  Practical Improvements to the Construction and Destruction of Static Single Assignment Form: Preston Briggs,
-  Keith Cooper, Timothy Harvey, Taylor Simpson</a>
-
-  <a
-  href="http://citeseer.nj.nec.com/krall98efficient.html">
-  Efficient JavaVM Just-in-Time Compilation: Andreas Krall</a>
-
-  <a
-  href="http://citeseer.nj.nec.com/452617.html">Java for
-  Large-Scale Scientific Computations: Andreas Krall, Phillip Thomsich</a> 
-
-  <a
-  href="http://citeseer.nj.nec.com/117522.html">
-  Engineering Simple, Efficient Code Generator Generator: Christopher
-  W. Fraser, David R. Hanson, Todd A. Proebsting</a> 
-
-  <a
-  href="http://citeseer.nj.nec.com/proebsting92code.html">
-  Code Generation Techniques: Todd Alan Proebsting</a>
-
-  <a
-  href="http://citeseer.nj.nec.com/74629.html">Fast,
-  Effective Code Generation in a Just-In-Time Java Compiler: Ali-Reza
-  Adl-Tabatabai Guei-Yuan Lueh, Vishesh M. Parikh, James M. Stichnoth...</a>
-
-  <a
-  href="http://citeseer.nj.nec.com/bodik00abcd.html">
-  ABCD: Eliminating Array-Bounds Checks on Demand: Rastislav Bodik, Rajiv Gupta, Vivek Sarkar</a>
-
-* Register Allocation
-
-  <a
-  href="http://citeseer.nj.nec.com/poletto99linear.html">
-  Linear Scan Register Allocation: Massimiliano Poletto, Vivek Sarkar</a>
-
-  <a
-  href="http://citeseer.nj.nec.com/traub98quality.html">
-  Quality and Speed in Linear-scan Register Allocation: Omri Traub, Glenn
-  Holloway, Michael D. Smith</a> 
-
-* Loop Transformations
-
-  <a
-  href="http://citeseer.nj.nec.com/bacon93compiler.html">
-  Compiler Transformations for High-Performance Computing: David Bacon</a>
-
-* Interpreter
-
-  <a
-  href="http://citeseer.nj.nec.com/470069.html">
-  vmgen-A Generator of Efficient Virtual Machine Interpreters: M. Anton
-  Ertl, David Gregg, Andreas Krall, Bernd Paysan</a>
-
-* Synchronization
-
-  <a
-  href="http://citeseer.nj.nec.com/krall98monitors.html">
-  Monitors and Exceptions - How to implement Java efficiently: Andreas Krall,
-  Mark Probst</a> 
-
-  <a
-  href="http://citeseer.nj.nec.com/bacon98thin.html">
-  Thin Locks: Featherweight Synchronization for Java: David Bacon</a>
-
-  <a
-  href="http://citeseer.nj.nec.com/278639.html">
-  Featherweight Monitors with Bacon Bits: David Bacon</a>
-
-* Garbage Collection
-
-  <a
-  href="http://citeseer.nj.nec.com/wilson92uniprocessor.html">
-  Uniprocessor Garbage Collection Techniques: Paul Wilson</a>
-
-  <a
-  href="http://citeseer.nj.nec.com/41666.html">
-  A Language-Independent Garbage Collector Toolkit: Richard Hudson, Eliot Moss, Amer Diwan, Christopher Weight</a>
-
-  <a
-  href="http://citeseer.nj.nec.com/seligmann95incremental.html">
-  Incremental Collection of Mature Objects: Richard Hudson, Eliot Moss</a>
-
-* Threads
-
-  <a
-   href="http://research.microsoft.com/~birrell/papers/ThreadsCSharp.pdf">
-   Programming with Threads in C#: Andrew Birrell</a>
diff --git a/web/passport b/web/passport
deleted file mode 100644
index 3ffe0df..0000000
--- a/web/passport
+++ /dev/null
@@ -1,298 +0,0 @@
-* Updates
-
-	<b>Sep 20, 2001:</b> Microsoft has just announced some changes
-	to passport that are rather interesting.  This document
-	reflects the Passport system without taking into account the
-	new changes.
-
-	Read about it <a href="http://www.microsoft.com/presspass/features/2001/sep01/09-20passport.asp">here</a>.
-
-	For an analysis of security problems with passport, check <a
-	href="http://avirubin.com/passport.html">http://avirubin.com/passport.html</a>.
-	The bottom line is that you should not put any sensitive
-	information on passport.
-
-	I have received many comments from people, and I have updated
-	the page accordingly.  From removing incorrect statements, to
-	fixing typos, to include mentions to other software pieces.
-
-	I also corrected my statement about IIS and a trojan horse, I
-	should read a more educated press in the future.  My apologies
-	to Microsoft and its employees on this particular topic.  IIS
-	did not have a trojan horse built in.
-
-* Microsoft Hailstorm and Passport
-
-	Microsoft Passport is a centralized database hosted by
-	Microsoft that enhances the consumer experience with the Web
-	by providing a single logon system that they can use across a
-	number of participant web sites.
-
-	As you might know by now from our extensive <a
-	href="faq.html">FAQ</a>, the Mono project has nothing to do
-	with Microsoft Hailstorm or <a
-	href="http://www.passport.com">Microsoft Passport.</a>
-
-	Still a lot of people have asked us our opinion on them.
-
-** Passport
-
-	Passport is important not because of it being a breakthrough
-	technologically speaking, but because the company is in a
-	position to drive most people toward being suscribers of it.
-
-	At the time of this writing passport is required to use the
-	free mail service <a href="http://www.hotmail.com">Hotmail</a>
-	to get customized support for the <a
-	href="http://www.msn.com">MSN portal</a>, <a
-	href="http://msdn.microsoft.com">Microsoft Developers
-	Network</a> and according to the original announcement from
-	Microsoft <a href="http://www.americanexpress.com">American
-	Express</a> and <a href="http://www.ebay.com">EBay</a> will be
-	adopting it. 
-
-	There is already a <a
-	href="http://www.passport.com/Directory/Default.asp?PPDir=C&lc=1033">Large
-	list</a> of participating sites.
-
-	There are many current users of it and Microsoft will be
-	driving more users towards Passport as it <a
-	href="http://news.cnet.com/news/0-1003-200-6343275.html">integrates
-	it</a> in their upcoming release of Windows.  
-
-	Microsoft has also <a
-	href="http://www.passport.com/Business/JoinPassportNetwork.asp?lc=1033">developed
-	a toolkit</a> to enable current web merchants to integrate
-	their services with passport.
-
-	To the end user, there is a clear benefit: they only have to
-	log into a single network and not remember multiple passwords
-	across sites on the internet.  Companies that adopt passport
-	will have a competition advantage over those that dont.
-	Microsoft lists a list of <a
-	href="http://www.passport.com/Business/Default.asp?lc=1033">benefits</a>
-	to companies. 
-
-
-** The problems of Passport
-
-	There are a number of concerns that different groups have over
-	Passport.  Sometimes I have some, sometimes I do not.  But
- 	overall, consumers and businesses can have better solutions.
-
-	<ul>
-		* <b>Single Point of Failure:</b> As more services and
-	 	components depend on remote servers, functionality can
-	 	grind to a halt if there is a failure on the
-	 	centralized Passport system.  
-
-		Such a failure was predicted, and we recently <a
-		href="http://news.cnet.com/news/0-1005-200-6473003.html">witnessed</a> 
-		got a lot of people worried.  
-
-		The outgage lasted for seven days.  Think what this
-	 	could do to your business.
-
-		* <b>Trust:</b> Not everyone trusts Microsoft to keep
-	 	their information confidential.  Concerns are not only
-	 	at the corporate level policy, but also the fact that
-	 	the source code for Microsoft products is not
-	 	available, means that trojans or worms could be built
-	 	into the products by malicious engineers.  
-
-		Various government officials in non-US countries also
-		have a policy that no state sensitive information can
-		be held by foreign companies in foreign soil.   A natural
-		matter of national security to some.
-
-		* <b>Security:</b> With a centralized system like
-	 	Passport, imagine the repercussions of a malicious
-	 	hacker gaining access to the Passport database.
-	 	Personal information and credit card information about
-	 	almost everyone using a computer could be stored there.
-
-		Hackers have already <a
-	 	href="http://slashdot.org/articles/00/10/27/1147248.shtml">broken
-	 	into Microsoft</a> in the past.  And the company was
-	 	unable to figure out for how long their systems had
-		been hacked. 
-
-		Security holes have been found in <a
-		href="http://slashdot.org/articles/00/04/14/0619206.shtml">IIS
-		in the past.</a>  If all the world's data is stored on
-		a central location, when a single security hole is
-		detected, it would allow an intruder to install a
-		backdoor within seconds into the corporate network
-		without people ever noticing. 
-
-		Microsoft itself has been recently hit by worms,
-		imagine if all your business depended on a single
-		provider for providing all or your authentication
-		needs
-	</ul>
-
-	Microsoft might or might not realize this.  The idea behind
-	Passport is indeed a good one (I can start to get rid of my
-	file that keeps track of the 30 logins and passwords or so
-	that I use across the various services on the net myself).
-
-** Alternatives to Microsoft Passport
-
-	An alternative to Microsoft Passport needs to take the above
-	problems into consideration.  Any solution of the form `We
-	will just have a competing offering' will not work.
-
-	The system thus has to be:
-
-	<ul>
-		* <b>Distributed:</b>  The entire authentication
-		system should not create an internet `blackout' in the
-		case of failure.
-
-	 	A distributed system using different software
-		platforms and different vendors would be more
-		resistent to an attack, as holes in a particular
-		implementation of the server software would not affect
-		every person at the same time.  
-
-		A security hole attack might not even be relevant to
-		other software vendors software.
-
-		* <b>Allow for multiple registrars:</b> Users should
-		be able to choose a registrar (their banks, local
-		phone company, service provider, Swiss bank, or any
-		other entity they trust.
-
-		* <b>Mandate good security measures:</b> As a
-		principle, only Open Source software should be used
-		for servers in the registrar, and they should conform
-		to a standard set of tools and software that can be
-		examined by third parties.
-	</ul>
-
-	An implementation of this protocol could use the DNS or a
-	DNS-like setup to distribute the information of users with the
-	possibility of replicating and caching public information
-	about the user.  
-
-	For instant messaging (another piece of the Hailstorm bit),
-	you want to use a non-centralized system like Sun's <a
-	href="http://www.jxta.org">JXTA</a>.  Some people mailed me to
-	mention Jabber as a messaging platform and other people
-	pointed out to the <a
-	href="http://java.sun.com/products/jms/">Java Message
-	Service</a>.   The JMS does support a number of very
-	interesting features that are worth researching.
-
-	It could also just use the user e-mail address as the `key' to
-	choose the registrar (msn.com, hotmail.com -> passport.com;
-	aol.com -> aol.passport.com; you get the idea).
-
-	The <a
-	href="http://www.soapware.org/xmlStorageSystem">xmlStorage</a>
-	idea from <a href="http://www.scripting.com">Dave Winer</a>
-	could be used to store the information.
-
-	A toolkit for various popular web servers could be provided,
-	authenticated and should be open sourced (for those of you who
-	think that a binary program would give more security and would
-	prevent people from tampering: you are wrong.  You can always
-	use a proxy system that "behaves" like the binary, and passes
-	information back and forth from the real program, and snoops
-	in-transit information).
-
-	Good cryptographers need to be involved in this problem to
-	figure out the details and the possible insecure pieces of a
-	proposal like this.
-
-** Implementation: In short
-
-	To keep it short: <b>DNS, JXTA, xmlStorage.</b>
-
-
-** Deploying it
-
-	The implementation of such a system should be a pretty
-	straightforward task once security cryptographers have
-	designed such a beast.  
-
-	The major problems are:
-
-	<ul>
-		* <b>People might just not care:</b> In a poll to US
-		citizens a couple of decades ago, it was found that
-		most people did not care about the rights they were
-		given by the Bill of Rights, which lead to a number of
-		laws to be passed in the US that eliminated most of
-		the rights people had.  
-
-		* <b>The industry will move way too slow:</b>
-		Microsoft's implementation is out in the open now: it
-		is being deployed, and soon it will be insinuated to
-		many, many users.  The industry needs to get together
-		soon if they care about this issue.
-
-		By the time the industry reacts, it might be too
-		late. 
-	</ul>
-
-** Passport and Mono
-
-	The .NET class libraries include a Passport class that
-	applications might use to authenticate with Passport.  Since
-	we do not have information at this point on the exact protocol
-	of Passport, it is not even feasible to implement it.
-
-	If at some point the information is disclosed, it could be
-	implemented.  
-
-	If a competing system to Passport existed, we could probably
-	hide all the authentication information to use a number of
-	different passport-like systems.
-
-	If a user does not want to use Passport at all, he could
-	always turn it off (or completely remove the class from the
-	library).  After all, this is free software.
-
-	Currently, we are too far from the point where this is a real
-	issue. 
-
-** Passport and endangering Open Source.
-
-	A few people have said: `Mono will allow Passport to be
-	available for Linux and that is bad'.  This is plain
-	misinformation.
-
-	Currently, you can obtain Passport for Linux from Microsoft
-	itself and deploy it today on your Web server.  Mono does not
-	even enter the picture here.  Go to passport.com and download
-	the toolkit and you will see with your own eyes that passport
-	is <B>already</b> available for Linux. 
-
-** Disclaimer
-
-	This is just a group of personal thoughts of mine that I have
-	placed here because I get asked this question a lot lately.
-	The views of this page are not a statement from my employer
-	(Ximian, Inc).
-
-	This is not part of Mono.  We are not trying to deal with this
-	problem. 
-
-	Nat Friedman (Ximian's co-founder) has his own ideas on how a
-	competing system to Passport could be designed, but I will let
-	<a href="http://www.nat.org/">him</a> post his own story.
-
-** Other Passport Comments
-
-	An interesting study on the security of passport is available at: <a
-	href="http://avirubin.com/passport.html">http://avirubin.com/passport.html</a>
-
-** Other Alternatives
-
-	Some people have pointed out <a
-	href="http://www.xns.org">XNS</a>
-
-Send comments to me: Miguel de Icaza (<a
-	href="mailto:miguel at ximian.com">miguel at ximian.com</a>)
-
diff --git a/web/pending b/web/pending
deleted file mode 100644
index e243a10..0000000
--- a/web/pending
+++ /dev/null
@@ -1,14 +0,0 @@
-** Microsoft and GNU and Linux.
-
-Q: Does this mean that Microsoft is better than Linux?
-
-A: Many of us are working on <a
-   href="http://www.gnu.org/philosophy/free-sw.html">free software<a>
-   and want to have an <a href="http://www.opensource.org">open
-   source</a> environment that we can change, modify, improve, learn
-   from, and share with others.  Some of us also think that this will
-   lead on the long run to better software: more efficient, faster,
-   more robust and more.  
-
-   We are willing to take good ideas from any source they come from.  
-
diff --git a/web/plans b/web/plans
deleted file mode 100755
index f53aecd..0000000
--- a/web/plans
+++ /dev/null
@@ -1,15 +0,0 @@
-* Plans
-
-	Here we are tracking some plans to particular pieces of
-	technology that are part of Mono.  
-
-	This is just a repository of information that is handy for
-	contributors.
-
-	Currently you can read our plans for <a
-	href="ado-net.html">ADO.NET</a>, <a
-	href="asp-net.html">ASP.NET</a>, <a href="java.html">Java</a> and
-	<a href="winforms.html">WinForms</a>.
-
-
-	
diff --git a/web/porting b/web/porting
deleted file mode 100644
index a09ab69..0000000
--- a/web/porting
+++ /dev/null
@@ -1,63 +0,0 @@
-* How to port Mono to your preferred architecture
-
-** Endian, 64 bits and unaligned access issues
-
-	The first thing to do is to check that the metadata handling
-	library works on your target processor. You may use the disassembler
-	on simple programs and check that you get sensible results
-	(assuming it compiles at all on your system:-).
-
-	The main issue is to write macros that read unaligned
-	little endian shorts/ints/longs/float/doubles: look into
-	mono/metadata/endian.h. There may be other spots in the code that are
-	unsafe at reading/writing to some datatypes that require special
-	alignment, but there should be few such issues and they need to be fixed.
-
-	Once this stuff is sorted out, you should be able to run the interpreter
-	on simple programs that don't require delegates, P/Invoke functions etc..
-
-** Generating assembly bytecodes for the target processor
-
-	Next, you need to provide the support code for generating assembly bytecode
-	for your target platform (in mono/arch/{ppc,sparc,alpha,*}).
-	The code should be more or less like the code in x86-codegen.h:
-	macros that produce fast in-line code. You don't need to provide
-	code to create every possible code, at first, just the code to
-	create trampolines and execute them is fine (you'll need to research
-	how the call convention works on your platform): that would be, for
-	example, the prolog and epilog code in a function, code to pass function
-	parameters and deal with the return value and so on.
-
-	libffi in gcc or the xptcall sources in mozilla may be helpful to
-	understand how the calling convention works, if you can't find a specification.
-	You'd need a processor manual to know how to create the assembly binary data.
-	This requires a lot of reading if you're not familiar with the assembly for your
-	target platform. Manuals for many processors are available as PDF files on the
-	web site of the respective vendors. Note that some processors require you to
-	flush the I-cache before executing the code: have a look at how the same thing is
-	done in GNU lightning.
-
-** Getting the interpreter to work
-
-	Once you can generate binary code, you can start working on a
-	mono_create_trampoline() function for your platform: this function will receive
-	a MonoMethod that describes the arguments and the return type of a C function
-	and will create the code to call such function. When this function is complete
-	you'll be able to run more sample programs, that use System.IO, P/Invoke
-	functions etc.
-
-	To support delegates you'll need to write a mono_create_method_pointer()
-	function that creates a native function: this can be used to call the
-	method using the runtime's calling convention (it's basically the reverse
-	of mono_create_trampoline()).
-
-** The final step: porting the JIT
-
-	At this point you'd need to have a more complete code generation header file
-	and you can start writing the machine description file for the monoburg
-	system. This code (jit/tesjit.c) will require some machine specific tweaks,
-	but hopefully all you have to do is create the grammar that emit assembly
-	code from the IR tree. Work is at the early stages also for x86 on this stuff
-	as we are still testing various solutions: you'd want to read about burg-like
-	code-generator generators (the LCC book is a good starting point).
-
diff --git a/web/postgresql b/web/postgresql
deleted file mode 100644
index 4410131..0000000
--- a/web/postgresql
+++ /dev/null
@@ -1,365 +0,0 @@
-* PostgreSQL and Mono
-
-  When it comes to Mono and PostgreSQL, there are many ways
-  you can access your data.
-
-* Data Providers
-
- There are many ADO.NET data providers for <a href="http://www.postgresql.org/">PostgreSQL</a>:
- 
- There are two providers created specifically for PostgreSQL included with Mono:
-
-<ul>
-
-	<li><a href="http://gborg.postgresql.org/project/npgsql/projdisplay.php">Npgsql</a>
-		<ul>
-			<li>included with Mono</li>
-			
-			<li>a .NET Managed Data Provider for PostgreSQL</li>
-			
-			<li>Written in 100% C#</li>
-			
-			<li>does not require a client library</li>
-			
-			<li>works on Mono and Microsoft .NET</li>
-			
-			<li>created by Francisco Figueiredo jr. and has many developers working on it
-			
-			<li>works in the SQL# (command-line and GTK# GUI versions)</li>
-			
-			<li>in namespace Npgsql and assembly Npgsql and is found in mcs
-			at mcs/class/Npgsql</li>
-		</ul>
-	</li>
-	
-	<li>Mono.Data.PostgreSqlClient (DEPRECATED)
-		<ul>
-	
-			<li>Deprecated in favor of Npgsql.  No longer included in a release of Mono.</li>
-			
-		</ul>
-	</li>
-	
-	<li><a href="http://sourceforge.net/projects/mysqlnet/">ByteFX.Data</a> has a provider for PostgreSQL too, but I do not know how well it works with Mono.</li>
-	
-	<li>There is another .NET data provider for PostgreSQL named <a href="http://sourceforge.net/projects/pgsqlclient/">PgSqlClient</a>, but I do not know if it works with Mono.</li>
-	
-	<li>If none of the above providers meet your needs.  There is the ODBC and OLEDB providers included with Mono.</li>
-			
-	<li>Bugs with Mono or the data provider should be reported 
-	in Mono's Bugzilla <a href="http://bugzilla.ximian.com/">here</a>.  If you
-	do not have Bugzilla user account, it is free 
-	and easy to 
-	create one <a href="http://bugzilla.ximian.com/createaccount.cgi">here</a>.</li>
-
-
-</ul>
-
-** Current Status
-
-<ul>
-	<li>Npgsql
-		<ul>
-			<li>Builds and Runs on both Microsoft .NET and Mono.</li>
-			<li>Works using SQL# (command-line and GTK# versions)</li>
-			<li>You can send insert, update, delete queries 
-				through NpgsqlCommand.ExecuteNonQuery() method.</li>
-			<li>You can send queries like, select count(*) from table, select version()
-				with NpgsqlCommand.ExecuteScalar() method.</li>
-			<li>There is logging support. (Thanks Dave Page)
-				To use it, place code like that in your program:</li>
-
-<pre>      
-      // Enable logging.
-	  NpgsqlEventLog.Level = LogLevel.Debug;            // LogLevel.
-	  NpgsqlEventLog.LogName = "NpgsqlTests.LogFile";   // LogFile.
-</pre>
-    
-			<li>You can use Npgsql with Mono (Thanks Kristis Makris). It is not working perfectly.</li>
-			<li>There is a winforms test suite (Thanks Dave Page).</li>
-			<li>Clearer code in NpgsqlConnection removing *magic* numbers and constants. (Thanks Kristis Makris)</li>
-			<li>Better support of ODBC-like ConnectionString in NpgsqlConnection (Thanks Dave Page)</li>
-			<li>Thanks Ulrich Sprick for all discussion and ideas.</li>
-
-		</ul>
-	</li>
-</ul>
-
-** Action Plan
-	<ul>
-		<li>More testing and fixing bugs</li>
-		
-		<li>Better error handling</li>
-		
-		<li>More Data Types to use</li>
-		
-		<li>Any features for Npgsql should be implemented in Npgsql's main cvs repository at
-		gborg.postgresql.org.  Most bugs should be fixed in gborg.postgresql.org's cvs.
-		Only bugs neccessary for building and running of Npgsql	on Mono can be done in Mono cvs, 
-		but once applied they should be sent to Npgsql's mailing list
-		at gborg.postgresql.org for inclusion into cvs there.  Whenever there is 
-		a release of Npgsql (determined by Francisco Figueiredo jr. or a release
-		of Mono (determined by Miguel de Icaza), then the Npgsql source 
-		in gborg.postgresql.org's cvs will be used to update the Npgsql source in
-		Mono's cvs. 
-		</li>
-	
-		<li>Add any missing functionality to Npgsql. If this funtionality works on
-		.NET but not on Mono, implement the missing features or fix the bugs in Mono</li>
-
-		<li>Npgsql has been replaced Mono.Data.PostgreSqlClient as the provider of
-		choice to use.  Mono.Data.PostgreSqlClient is deprecated and is no longer included in
-		Mono releases.  Please use Npgsql for PostgreSQL data access.</li>
-		
-		<li>Implement new features of PostgreSQL.</li>
-	</ul>
-
-</ul>
-
-** Testing Npgsql
-
-<ul>
-	<li>Have a working mono and mcs</li>
-		
-	<li>Get <a href="http://gborg.postgresql.org/project/npgsql/projdisplay.php">Npgsql</a>
-	and make sure the binary assembly Npgsql.dll is installed in the same place that the
-	mono class libraries are located.
-	
-	<li>C# Example for Npgsql:
-<pre>
- using System;
- using System.Data;
- using Npgsql;
- 
- public class Test 
- {
-    public static void Main(string[] args)
-    {
-       string connectionString = 
-          "Server=localhost;" +
-          "Database=test;" +
-          "User ID=postgres;" +
-          "Password=fun2db;";
-       IDbConnection dbcon;
-       dbcon = new NpgsqlConnection(connectionString);
-       dbcon.Open();
-       IDbCommand dbcmd = dbcon.CreateCommand();
-       // requires a table to be created named employee
-       // with columns firstname and lastname
-       // such as,
-       //        CREATE TABLE employee (
-       //           firstname varchar(32),
-       //           lastname varchar(32));
-       string sql = 
-           "SELECT firstname, lastname " +
-           "FROM employee";
-       dbcmd.CommandText = sql;
-       IDataReader reader = dbcmd.ExecuteReader();
-       while(reader.Read()) {
-            string FirstName = (string) reader["firstname"];
-            string LastName = (string) reader["lastname"];
-            Console.WriteLine("Name: " + 
-                 FirstName + " " + LastName);
-       }
-       // clean up
-       reader.Close();
-       reader = null;
-       dbcmd.Dispose();
-       dbcmd = null;
-       dbcon.Close();
-       dbcon = null;
-    }
- }
-</pre>
-	</li>
-	<li>Building C# Example:
-	<ul>
-		<li>Save the example to a file, such as, TestExample.cs</li>
-<pre>
-	mcs TestExample.cs -r System.Data.dll \
-	    -r Npgsql.dll
-</pre>
-	</ul>
-	</li>
-	<li>Running the Example:
-<pre>
-mono TestExample.exe
-</pre>
-</li>
-</ul>
-
-		
-** Installation instructions for PostgreSQL DBMS:
-	<p><b>On Unix</b>
-
-	<ul>
-		* Read the PostgreSQL Installation Instructions 
-		at \usr\doc\postgresql-x.x.x\html\installation.html
-		
-		* Depending on your Unix system, 
-		PostgreSQL maybe already installed, a database user 'postgres' created, 
-		a linux user 'postgres' created and initdb ran.  Or maybe not.
-
-<pre>
- su
- adduser postgres
- mkdir /usr/local/pgsql/data
- chown postgres /usr/local/pgsql/data
- su - postgres
- initdb -D /usr/local/pgsql/data
- postmaster -i -D /usr/local/pgsql/data
- createdb test
- psql test
-</pre>
-	
-		* Make sure you have a database user named postgres.  It is best to install
-		the PostgreSQL DBMS under linux user postgres.  When you run the postmaster,
-		run it under the user postgres as well.  If this was not done, then you
-		will need to create a user named postgres for the System.Data tests.
-
-		* If you already installed PostgeSQL and you do not have a database
-		user named postgres, then you can create user postgres using psql:
-		
-<pre>		
-psql test
-create user postgres with password 'fun2db';
-</pre>
-				
-		* The postmaster must be run with -i option.
-		
-		* In the /usr/local/pgsql/data/pg_hba.conf file, you need
-		to have the AUTH_TYPE set to md5.  You can read more on this at
-		/usr/doc/postgresql-7.2.1/html/client-authentication.html 
-		or wherever your
-		PostgreSQL html docs are located.  See the 2nd line below,
-		host 127.0.0.1 has an AUTH_TYPE md5 in pg_hba.conf.
-		
-<pre>
- # TYPE     DATABASE    IP_ADDRESS    MASK               AUTH_TYPE
-
- local      all                                          trust
- host       all         127.0.0.1     255.255.255.255    md5
-</pre>
-
-	* If you can not find your PostgreSQL documentation locally or you 
-	did not install it, then you 
-	can get it <a href="http://www.postgresql.org/idocs/">here</a>.
-
-	</ul>
-
-	<b>On Windows</b>
-
-	<ul>
-		* Use the <a href="http://www.cygwin.com/">Cygwin</a> installer to 
-		  install the PostgreSQL DBMS.  It is
-		  found in the database category.
-		  
-		* <p>Read the file postgres-x.x.README at /usr/doc/Cygwin and read 
-		  the requirements to install PostgreSQL.  Those requirements
-		  are included with cygwin except cygipc.  A default installtion
-		  of cygwin does not install everything you will need, so on the 
-		  safe side, just include everything when installing cygwin.
-		
-		* <p>The -x.x in postgres-x.x is the version of your PostgreSQL DBMS.
-		
-		* <p>Once Cygwin has installed the PostgreSQL DBMS on your computer,
-		  read the file FAQ_MSWIN which is available 
-		  in /usr/doc/postgres-x.x 
-				  
-		* <p>Important notes from this file are:
-		  
-		  <ul>
-				<p><b>2.</b> - Install the latest <a href="http://www.neuro.gatech.edu/users/cwilson/cygutils/cygipc/index.html">CygIPC</a> package.
-				Cygwin includes a utility bunzip2 which can be used to unzip it.  Now, change to 
-				the root directory by 
-				typing "cd /" then 
-				you can use "tar xvf cygipc.xxx.tar" to untar it 
-				in the root directory in cygwin.
-			  			  
-				<p>The cygipc package contains the support to run ipc-daemon 
-				that you will need 
-				to run before you can
-				run the PostgreSQL DBMS Server daemon (postmaster) or run
-				initdb which initializes the PostgreSQL database.
-			  
-				<p><b>3.</b>  The Cygwin bin directory has to be placed in 
-				the path before the Windows program directories, 
-				for example, C:\cygwin\bin 
-			  
-				<p><b>My own note.</b>  In the Windows control panel, I set
-				the environment variables PATH to my cygwin /usr/local/bin,
-				/usr/bin, and /bin.  I also set my LD_LIBRARY_PATH to 
-				/usr/local/lib and /usr/lib.  For example:
-			  
-				<p>
-<pre>
-PATH=c:\cygwin\usr\local\bin;c:\cygwin\usr\bin;c:\cygwin\bin;
-LD_LIBRARY_PATH=c:\cygwin\usr\local\lib;c:\cygwin\usr\lib;
-</pre>
-							  
-				<p><b>4.</b> Start the ipc-daemon that came with the cygipc 
-				package.  There
-				are two ways to do this: run it from the command line as:
-			  
-				<p>
-<pre>
-ipc-daemon &
-</pre> 			  
-				<p>or you can set it up as a Windows service.  See the 
-				file cygrunsrv.README at /usr/doc/Cygwin on how to do this
-				for ipc-daemon and postmaster.  Note the
-				troubleshooting section at the end of 
-				the cygrunsrv.README file.
-			  
-				<p>To install ipc-daemon as a service, 
-				you just have to run
-			  
-				<p>
-<pre>
-ipc-daemon --install-as-service' (--remove-as-service) 
-</pre>
-			  
-				<p>and then run
-			  
-<pre>
-net start ipc-daemon
-</pre>
-			</ul>
-			  
-			<p>Read the installation.html file 
-			at /usr/doc/postgresql-x.x/html/installation.html
-		
-			<p>You will see in this file that you will need to 
-			run the following commands:
-		  
-			<p>
-<pre>
-mkdir /usr/local/pgsql/data
-initdb -D /usr/local/pgsql/data
-postmaster -D /usr/local/pgsql/data
-createdb test
-psql test  		
-</pre>
-		  
-			<p>When you need to connect to the database, 
-			you will need ipc-daemon and postmaster running.  Start ipc-daemon
-			before any of the command above.  If you restart your computer, you
-			need to start ipc-daemon and postmaster either manually or as a 
-			service.
-		  
-			<p>psql is a command-line PostgreSQL client tool to 
-			enter and run SQL commands and queries.
-		  
-			<p>If there is no database user named postgres, create a user named
-			postgres with the following SQL command in the client tool psql:
-		  
-			<p>
-<pre>
-psql test
-create user postgres with password 'fun2db';
-</pre>
-			<p>The only reason I say this is so you can easily use the System.Data tests
-			without having to change the database, userid, etc.
-	</ul>
-	
-
diff --git a/web/ppc b/web/ppc
deleted file mode 100644
index bc2295f..0000000
--- a/web/ppc
+++ /dev/null
@@ -1,39 +0,0 @@
-
-* Mono PowerPC Port
-
-** Status
-
-	It passes and compiles the same amount of mono tests as on the x86 architecture.
-
-	mcs is self hosting on Linux/PPC.
-
-*** Interpreter
-
-	Up to date.
-
-*** JIT and code precompiled:
-
-	Works on MacOS X 10.2, 10.3 and Linux/PPC, exception handling
-	is currently broken on the JIT.
-
-** Documentation
-
-*** PowerPC architecture:
-
-    <A HREF="http://e-www.motorola.com/brdata/PDFDB/docs/MPCFPE32B.pdf">PowerPC Programming environments manual</A><BR>
-    <A HREF="http://e-www.motorola.com/brdata/PDFDB/docs/MPC7410UM.pdf">G4 (7410) User's manual</A>
-	
-	There's a very nice introduction to PowerPC assembly language
-	at <a
-	href="http://www-106.ibm.com/developerworks/library/l-ppc/">http://www-106.ibm.com/developerworks/library/l-ppc/</a>.
-
-*** Calling conventions:
-
-	Linux on PPC32 uses the <a
-	href="http://refspecs.freestandards.org/elf/elfspec_ppc.pdf">The
-	PowerPC SystemV ABI specification</a>.
-
-	On MacOS X, the conventions are documented in the <a
-	href="http://developer.apple.com/documentation/DeveloperTools/Conceptual/MachORuntime/MachORuntime.pdf">Mach-O
-	Runtime Architecture</a>.
-
diff --git a/web/print-stack b/web/print-stack
deleted file mode 100755
index 1bf7958..0000000
--- a/web/print-stack
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-MANAGED_CALLS=`gdb -silent $1 -pid $2 << EOF | awk '/.* in \?\? \(\)/ {printf("call print_method_from_ip(%s)\n", $2);}'
-set height 0
-thread apply all bt
-quit
-EOF`
-
-gdb -silent $1 -pid $2 << EOF
-set height 0
-thread apply all bt
-$MANAGED_CALLS
-quit
-EOF
-
diff --git a/web/projects b/web/projects
deleted file mode 100755
index 8f4a40a..0000000
--- a/web/projects
+++ /dev/null
@@ -1,22 +0,0 @@
-* Open Projects
-
-	The .NET framework is a good first in terms of a new
-	development foundation, but it falls short of providing
-	higher-level components or building blocks for people to
-	reuse.  
-
-	A few ideas of projects and classes that would be useful to
-	develop applications follows:
-
-** EOG component
-
-* Gtk# related projects
-
-	Gnome Canvas Bindings.  
-
-	Bezier Canvas Item Binding.
-
-* Graphical bindings
-
-	Binding for the Libart library
-
diff --git a/web/rationale b/web/rationale
deleted file mode 100644
index 91cd3c7..0000000
--- a/web/rationale
+++ /dev/null
@@ -1,199 +0,0 @@
-
-* The Mono Project
-
-** Background.
-
-	The GNOME project goal was to bring missing technologies to
-	Unix and make it competitive in the current market place for
-	desktop applications.  We also realized early on that language
-	independence was important, and that is why GNOME APIs were
-	coded using a standard that allowed the APIs to be easily
-	wrapped for other languages.  Our APIs are available to most
-	programming languages on Unix (Perl, Python, Scheme, C++,
-	Objective-C, Ada). 
-
-	Later on we decided to use better methods for encapsulating
-	our APIs, and we started to use CORBA to define interfaces to
-	components. We complemented it with policy and a set of
-	standard GNOME interfaces for easily creating reusable,
-	language independent components, controls and compound
-	documents.  This technology is known as <a
-	href="http://developer.ximian.com/articles/whitepapers/bonobo">Bonobo</a>.
-	Interfaces to Bonobo exist for C, Perl, Python, and
-	Java.
-
-	CORBA is good when you define coarse interfaces, and most
-	Bonobo interfaces are coarse.  The only problem is that
-	Bonobo/CORBA interfaces are not good for small interfaces.
-	For example, an XML parsing Bonobo/CORBA component would be
-	inefficient compared to a C API.
-
-** Another explanation
-
-	I recently explained our motivations to Dave Winer, and he posted
-	it <a
-	href="http://scriptingnews.userland.com/stories/storyReader$1275">here</a>
-
-** Microsoft's .NET
-
-	The Microsoft .NET initiative is confusing because it is a
-	company wide effort that ranges from development tools to end
-	user applications.  .NET is a branding formative that
-	has been applied to:
-
-	<ul>
-		* The .NET development platform, a new platform for
-		  writing software.
-
-		* Web services.
-
-		* Microsoft Server Applications.
-
-		* New tools that use the new development platform.
-
-		* Hailstorm, the Passport centralized single-signon
-		  system that is being integrated into Windows XP.
-
-	</ul>
-
-	Mono is an implementation of the .NET development platform.
-
-** The Common Language Infrastructure platform. 
-
-	Microsoft has created a new development platform.  The
-	highlights of this new development platform are:
-
-	<ul>
-		* A runtime environment that provides garbage
-		  collection, threading and a virtual machine
-		  specification (The Virtual Execution System, VES)
-
-		* A comprehensive class library.  
-
-		* A new language, C#.  Very similar to Java,  C#
-		  allows programmers to use all the features available
-		  on the .NET runtime.
-
-		* A language specification that compilers can
-		  follow if they want to generate classes and code
-		  that can interoperate with other programming
-		  languages (The Common Language Specification: CLS)
-	</ul>
-
-	The Common Language Infrastructure platform is similar to the
-  	goals we had in GNOME of giving language independence to
-  	programmers.  It is more mature, documented, larger in scope,
-  	and has a consistent design.
-
-	Any API that is written using a CLS provider language can be
-  	used by any language that is a CLS consumer.  Compilers
-  	generate code in a format called Common Intermediate Language
-  	(CIL) which is an intermediate representation of a compiled
-  	program and is easy to compile to native code or compiled
-  	using Just-in-Time (JIT) engines.  The restrictions placed by
-  	the runtime on the CIL byte codes ensures that it is possible
-  	to do a good job at optimizing the code in a JIT compiler.
-
-	There is not really a lot of innovation in this platform: we
-	have seen all of these concepts before, and we are all
-	familiar with how these things work.
-
-	What makes the Common Language Infrastructure development
-  	platform interesting is that it is a good mix of technologies
-  	that have been nicely integrated.
-
-	The .NET development platform is essentially a new foundation
-	for program development that gives Microsoft a room to grow
-  	for the coming years. 
-
-** ECMA standards.
-
-	Microsoft has submitted the
-  	specifications of C#, the runtime, the metadata and the
-  	other various bits of the .NET development platform to the
-  	<a href="http://www.ecma.ch">ECMA</a> for standarization.
-
-	You can get a copy of the specifications submitted to ECMA
-	from: <a href="http://www.dotnetexperts.com/ecma">http://www.dotnetexperts.com/ecma</a>
-
-** Mono: an Open Source Common Language Infrastructure implementation. 
-
-	Ximian has begun work on Mono, a project that aims to bring
-  	the Common Language Infrastructure platform to free systems.  
-
-	When the GNU project was launched, they picked the best
-  	operating system that was available out there, and they
-  	began to clone it: Unix.
-
-	The .NET development platform is a very rich, powerful, and
-  	well designed platform that would help improve the free
-  	software development platform.  Just like the GNU project
-  	began to clone Unix sixteen years ago, we will be cloning the
-  	.NET development platform because it is a great platform to
-  	build on.
-
-** What makes up Mono?
-
-	There are various pieces that make up Mono today:
-
-	<ul>
-		* A C# compiler.
-
-		* The Virtual Execution System: that has the
-  		  Just-in-Time compiler, garbage collector, loader,
-  		  threading engine.
-
-		  A byte code interpreter is provided for quickly
-  		  porting Mono to new systems and debugging the JIT
-		  purposes, but it is not intended to be the ideal
-		  execution environment.
-
-		* An implemenation of the .NET class libraries:
-		  Remoting, Reflection, Reflection.Emit, Xml, Xpath,
-		  Xslt, Xml Serialization, Web Services support. 
-
-		* Cross platform class libraries for data access:
-		  Postgress, MySQL, DB2, TDS, Sybase, Oracle, ODBC and
-		  Gnome's GDA.
-
-		* Unix class libraries: Mono.Posix
-
-		* Gnome-specific class libraries: The Gtk# family. 
-
-		* A code pre-compiler to generate native code ahead of
-		  time.
-
-		* Gtk# a toolkit to develop GNOME applications on Unix
-		  and Windows.
-
-		* An implementation of the Remoting infrastructure in
-		 .NET
-	</ul>
-
-	Other work-in-progress components:
-
-	<ul>
-		* A VB.NET compiler and JScript compilers are in the works.
-
-		* Web services on the server side.
-
-		* We are planning to include Remoting.CORBA as part of
-		  Mono standard distribution.
-	</ul>
-
-** Why use GNOME components?
-
-	GNOME is an umbrella project that consists of infrastructural
-	components (GUI toolkit, XML libraries, CORBA implementation,
-	printing architecture, imaging system), a desktop environment,
-	and productivity applications.
-
-	The GNOME infrastructural components can be used to quickly
-	implement various pieces of the class libraries without reinventing
-	the wheel, and since all those components are licensed under
-	the terms of the GNU LGPL it is a perfect fit.  
-
-	Libart will be used to implement the Drawing.2D API; Gtk+ and
-	the GNOME libraries will be used to implement the WinForms
-	API and of course Glib and libxml will be used in various
-	places.
\ No newline at end of file
diff --git a/web/resources b/web/resources
deleted file mode 100644
index 4e61aa7..0000000
--- a/web/resources
+++ /dev/null
@@ -1,241 +0,0 @@
-
-* Resources
-
-	There are a number of resources available for those of you who
-	want to contribute to the Mono project.  Here are a few links.
-
-	If you want to send suggestions for links, address them to <a
-	mailto="web-mono at ximian.com">web-mono at ximian.com</a>.
-
-** Routine Tests
-
-	Various test results that are run continously on Mono are available
-	at <a
-	href="http://www.go-mono.com/tests/index.php">www.go-mono.com/tests/index.php</a>
-
-** Microsoft .NET
-
-	The <a href="http://msdn.microsoft.com/netframework">Microsoft.NET site.</a>
-
-	The Microsoft .NET Framework can be downloaded <a
-	href="http://msdn.microsoft.com/library/default.asp?url=/downloads/list/netdevframework.asp">here</a>
-
-	New methods that are not documented in 1.0, are documented <a
-	href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/framewrkaddend.asp">here</a>
-
-	The changes between .NET 1.0 and .NET 1.1 are available <a href="http://www.csharphelp.com/archives2/archive406.html">here</a>
-
-** IRC
-
-	Various Mono contributors get together on channel #mono on
-	irc.gnome.org
-
-** International Sites
-
-	See our <a href="other.html">page</a> with information on Mono International Sites.
-
-** Mono related sites.
-
-	The Mono Tutorial:
-
-	<a href="http://go-mono.com/tutorial/">GNOME.NET Tutorial</a>
-
-	and other useful tutorials (Gtk#, Glade#, Embeded, etc) (in Spanish) at
-
-	<a href="http://www.monohispano.org">The Mono Hispano site</a>.
-
-	Community site for Mono at <a href="http://www.gotmono.com">Got Mono</a>
-
-	Wikis: <a href="http://www.nullenvoid.com/gtksharp/wiki">Gtk# Wiki</a>
-	and <a href="http://www.nullenvoid.com/mono/wiki">Mono Wiki</a>.
-
-	Sergey's web page on Mono resources:
-
-	<a href="http://mono.eurosoft.od.ua">http://mono.eurosoft.od.ua</a>
-
-	Got Dot Net:
-
-	<a href="http://www.gotdotnet.com">Got Dot Net</a>
-
-	Got Mono:
-
-	<a href="http://www.gotmono.com">Got Mono</a>
-
-	Zip classes:
-
-	Mike's port to .NET: <a
-	href="http://www.icsharpcode.net/OpenSource/NZipLib/default.asp">NZipLib</a>
-
-	.NET Security:
-
-	A nice overview paper on the <a
-	href="http://www.foundstone.com/pdf/dotnet-security-framework.pdf">.NET
-	security architecture</a>.
-
-** Development Tools
-
-	A tool to compare two assemblies:
-
-	<ul>
-		<li><a href="http://www.gotdotnet.com/userarea/keywordsrch.aspx?keyword=winchurn">http://www.gotdotnet.com/userarea/keywordsrch.aspx?keyword=winchurn</a>
-	</ul>
-
-** ECMA Documentation.
-
-	You can get the documentation for the ECMA specs from:
-
-	<ul>
-		* <a href="http://www.ecma-international.org/publications/standards/Ecma-334.HTM">C# Language Specification</a>
-		* <a href="http://www.ecma-international.org/publications/standards/Ecma-335.HTM">Common Language Infrastructure</a>
-	</ul>
-
-
-	Older copies of the standard are available here:
-
-	<ul>
-		* <a href="http://msdn.microsoft.com/net/ecma">At MSDN</a>
-		* <a href="http://www.dotnetexperts.com">Dot Net Experts</a>
-		* <a href="http://lightning.csse.monash.edu.au/.net/CLI">Monash University</a>
-	</ul>
-
-	These contain specifications for the assembler, the metadata,
-	byte codes supported by the CLI virtual machine, the C#
-	language and the core class libraries.
-
-	For details on the .NET class libraries, you can
-	visit the Microsoft's Developer Network:
-
-	<ul>
-		* <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/cpref_start.asp">.NET Framework Class Library</a>
-	</ul>
-
-	You can also get this information if you install the Beta2
-	release of the .NET Framework.
-
-** Discussion Groups.
-
-	<ul>
-	
-		* <a href="http://www.oreillynet.com">O'Reilly
-		  Network</a> has a <a
-		  href="http://www.oreillynet.com/dotnet">section devoted to
-		  .NET</a>
-		* <a
-		  href="http://msdn.microsoft.com/newsgroups">MSDN</a> also
-		  lists various newsgroups related to .NET</ul>
-	</ul>
-
-** Other .NET related projects
-
-	There are a number of related projects to Mono:
-
-	<li><b>Development tools</b></li>
-	<ul>
-		* <a
-		  href="http://www.icsharpcode.net/OpenSource/SD/default.asp">Sharp
-		  Develop:</a> an IDE for the C# language written in C#.
-
-		* <a href="http://nunit.sourceforge.net">NUnit:</a> A
-		  testing framework for .NET classes.
-
-		* <a
-		  href="http://xmarks.sourceforge.net/doc.html">XMarks DOC.NET:</a> For
-		  creating online documentation you can browse for your own classes. 
-
-		* <a
-		  href="http://www.cl.cam.ac.uk/~jds31/research/gccnet/">GCC .NET backend</a>.
-
-		  Jeremy Singer has developed a .NET backend for GCC.  This is research work.
-	</ul>
-
-	<li><b>Class Libraries</b></li>
-	<ul>
-		* <a href="http://cs-sdl.sourceforge.net/">SDL for
-		.NET:</a> Bindings for the popular SDL graphics library.
-
-
-		* C# bindings for OpenGL and SDL are available here: <a
-		  href="http://csgl.sourceforge.net">http://csgl.sourceforge.net</a>
-
-		* <a
-		  href="http://qtcsharp.sourceforge.net">Qt#:</a> 
-		  C# bindings for the Qt toolkit.
-
-		* <a
-	          href="http://codigolivre.org.br/projects/monoqle">Project MonoQLE:</a> a C# Message Queue Server. 
-		  Sorry only in portuguese, for now.
-
-	</ul>
-
-	<li><b>Programming languages:</b></li>
-	<ul>
-		* <a 
-		  href="http://janet-js.sourceforge.net/">Janet:</a>
-		  an implemention of ECMAScript (the standarized
-		  version of JavaScript) in C#
-	</ul>
-
-	<li><b>Other projects</b></li>
-	<ul>
-		* <a
-		  href="http://www.improve-technologies.com/alpha/esharp/">Eclipse
-	 	  Plugin for C#</a>
-
-		* <a href="http://www.kaffe.org">Kaffe:</a> A popular
-		  Free Software JIT engine for Java.
-
-		* <a href="http://www.intel.com/research/mrl/orp">ORP:</a> A research
-		  JIT/VM/GC system from Intel.
-
-		* <a
-	          href="http://www.southern-storm.com.au/portable_net.html">Portable.NET:</a>
-		  Another implementation of the CLI and C# compiler.
-	</ul>
-
-** GNOME Documentation
-
-	Documentation on GNOME, and the GNOME APIs is available from
-	the <a href="http://developer.gnome.org">developer</a> site at
-	GNOME:
-
-	<ul>
-		* <a href="http://developer.gnome.org/doc/API/">GNOME
-	API documentation</a>
-
-		* <a href="http://developer.gnome.org/doc/books">GNOME
-	Online books</a>
-
-		* <A
-	href="http://developer.gnome.org/arch/">Architecture Overview</a>
-	</ul>
-	
-** Assembly Language Manuals online
-
-	<ul>
-		* <a href="http://www.agner.org/assem/#optimize">
-	Pentium optimization tutorial</a> by Agner Fog
-
-		* <a href="http://webster.cs.ucr.edu/">
-	Art of Assembly</a> (x86 only)
-
-		* Documentation for various CPUs
-	(<a href="http://www.mit.edu/afs/sipb/contrib/doc/specs/ic/cpu/">
-	x86, IA64, MIPS, ARM, Alpha</a>)
-
-		* <a href="http://www.heyrick.co.uk/assembler/">
-	ARM Assembler</a> tutorial
-
-		* PowerPC
-	<a href="http://www-3.ibm.com/chips/techlib/techlib.nsf/techdocs/852569B20050FF7785256996007558C6">
-	Compiler Writer's Guide</a>
-
-		* <a href="http://www.lightsoft.co.uk/Fantasm/Beginners/begin1.html">
-	Beginners Guide to PowerPC Assembler</a>
-	</ul>
-
-** Win32
-
-	<ul>
-		* Win32 <a href="http://www.jorgon.freeserve.co.uk/ExceptFrame.htm">
-	Structured Exception Handling (SEH)</a> internals (x86 specific)
-	</ul>
diff --git a/web/resources-pending b/web/resources-pending
deleted file mode 100644
index fd9b907..0000000
--- a/web/resources-pending
+++ /dev/null
@@ -1,30 +0,0 @@
-** MacOS Documentation
-
-** Assembly Language Manuals online
-		Intel
-		MIPS
-		SPARC
-
-** Microsoft 
-		msdn.microsoft.com/net
-		Research.microsoft.com
-
-** Related Technologies
-
-	<ul>
-
-		* The CLI allows people to create Web Services using the SOAP
-		  protocol.  SOAP is based on XML, XML schemas an the HTTP
-		  protocol.
-		  <ul>
-		* XML specification.
-		* XML Namespaces.
-		* XML Schemas.
-		* SOAP Specification.
-		  </ul>
-	</ul>
-
-** Compiler Information
-	GCC
-	GCC Sample front-end tutorial
-
diff --git a/web/roadmap b/web/roadmap
deleted file mode 100644
index 6cdfa13..0000000
--- a/web/roadmap
+++ /dev/null
@@ -1,12 +0,0 @@
-* Roadmap
-
-	We are working on the following three projects at Ximian:
-
-		The C# Compiler (mcs/mcs)
-
-		A .NET compatible Class Library (mcs/class)
-
-		The JIT/interpreter (mono)
-
-	
-		
\ No newline at end of file
diff --git a/web/runtime b/web/runtime
deleted file mode 100644
index d1dabab..0000000
--- a/web/runtime
+++ /dev/null
@@ -1,204 +0,0 @@
-* The Mono runtime
-
-	The Mono runtime engine is considered feature complete.
-
-	It implements a Just-in-Time compiler engine for the CIL
-	virtual machine, the class loader, the garbage collector,
-	threading system and metadata access libraries.
-
-	We currently have two runtimes:
-
-	<ul>
-		* <b>mono:</b> Our Just-in-Time and Ahead-of-Time code
-		  generator for maximum performance.  This supports
-		  x86, PowerPC and SPARC cpus.
-	
-		* <b>mint:</b> The Mono interpreter.  This is an
-		  easy-to-port runtime engine.
-	</ul>
-
-	We are using the Boehm conservative garbage collector.
-
-	The Mono runtime can be used as a stand-alone process, or it
-	can be <a href="embedded-api.html">embedded into applications</a> (see
-	the documentation in mono/samples/embed for more details).
-
-	Embedding the Mono runtime allows applications to be extended
-	in C# while reusing all of the existing C and C++ code.  
-
-	Paolo Molaro did a presentation on the current JIT engine and
-	the new JIT engine.  You can find his <a
-	href="http://primates.ximian.com/~lupus/slides/jit/">slides
-	here</a>
-
-** Current JIT Engine: technical details (<b>updated, June 28th, 2003</b>)
-
-	We have re-written our JIT compiler. We wanted to support a
-	number of features that were missing:
-
-	<ul>
-		* Ahead-of-time compilation.  
-
-	     The idea is to allow developers to pre-compile their code
-	     to native code to reduce startup time, and the working
-	     set that is used at runtime in the just-in-time compiler.
-
-	     Although in Mono this has not been a visible problem, we
-	     wanted to pro-actively address this problem.
-
-	     When an assembly (a Mono/.NET executable) is installed in
-	     the system, it would then be possible to pre-compile the
-	     code, and have the JIT compiler tune the generated code
-	     to the particular CPU on which the software is
-	     installed. 
-
-	     This is done in the Microsoft.NET world with a tool
-	     called ngen.exe
-
-		* Have a good platform for doing code optimizations. 
-
-	     The design called for a good architecture that would
-	     enable various levels of optimizations: some
-	     optimizations are better performed on high-level
-	     intermediate representations, some on medium-level and
-	     some at low-level representations.
-
-	     Also it should be possible to conditionally turn these on
-	     or off.  Some optimizations are too expensive to be used
-	     in just-in-time compilation scenarios, but these
-	     expensive optimizations can be turned on for
-	     ahead-of-time compilations or when using profile-guided
-	     optimizations on a subset of the executed methods.
-
-		* Reduce the effort required to port the Mono code
-             generator to new architectures.
-
-	     For Mono to gain wide adoption in the Unix world, it is
-	     necessary that the JIT engine works in most of today's
-	     commercial hardware platforms. 
-	</ul>
-
-	The JIT engine implements a number of optimizations:
-
-	<ul>
-		* Opcode cost estimates (our architecture allows
-	 	  us to generate different code paths depending
-		  on the target CPU dynamically).
-		  
-		* Inlining.
-
-		* Constant folding, copy propagation, dead code elimination.
-
-		  Although compilers typically do
-		  constant folding, the combination of inlining with
-		  constant folding gives some very good results.
-
-		* Linear scan register allocation.  In the past,
-		  register allocation was our achilles heel, but now 
-		  we have left this problem behind.
-
-		* SSA-based framework.  Various optimizations are
-		  implemented on top of this framework
-	</ul>
-
-	There are a couple of books that deal with this technique: "A
-	Retargetable C Compiler" and "Advanced Compiler Design and
-	Implementation" are good references.  You can also get a
-        technical description of <a
-        href="http://research.microsoft.com/copyright/accept.asp?path=http://www.research.microsoft.com/~drh/pubs/iburg.pdf&pub=ACM">lbrug</a>.
-
-	The new JIT engines uses three intermediate representations:
-	the source is the CIL which is transformed into a forest of
-	trees; This is fed into a BURS instruction selector that
-	generates the final low-level intermediate representation.
-
-	The instruction selector is documented in the following
-	papers:
-
-	<ul>
-		* <a href="http://research.microsoft.com/copyright/accept.asp?path=http://www.research.microsoft.com/~drh/pubs/interface.pdf&pub=wiley">A code generation interface for ANSI C</a>
-
-
-		* <a href="http://research.microsoft.com/copyright/accept.asp?path=http://www.research.microsoft.com/~drh/pubs/iburg.pdf&pub=ACM">Engineering efficient code generators using tree matching and dynamic programming.</a>
-
-	</ul>
-
-** Garbage Collection
-
-	We are using the Boehm conservative GC.  We might consider
-	adopting other GC engines in the future, like the Intel ORP GC
-	engine.  The Intel ORP GC engine as it provides a precise
-	garbage collector engine, similar to what is available on the
-	.NET environment.
-
-	<ul>
-		* Garbage collection list and FAQ:<br>
-		  <a href="http://www.iecc.com/gclist/">http://www.iecc.com/gclist/</a>
-
-		* "GC points in a Threaded Environment":<br>
-		  <a href="http://research.sun.com/techrep/1998/abstract-70.html">
-		  http://research.sun.com/techrep/1998/abstract-70.html</a>
-
-		* "A Generational Mostly-concurrent Garbage Collector":
-		  <a href="http://research.sun.com/techrep/2000/abstract-88.html">
-		  http://research.sun.com/techrep/2000/abstract-88.html</a>
-
-		* Details on The Microsoft .NET Garbage Collection Implementation:<br>
-		  <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnmag00/html/GCI.asp">http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnmag00/html/GCI.asp</a>
-		  <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnmag00/html/GCI2.asp">http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnmag00/html/GCI2.asp</a>
-	</ul>
-
-** IO and threading
-
-	The ECMA runtime and the .NET runtime assume an IO model and a
-	threading model that is very similar to the Win32 API.  
-
-	Dick Porter has developed WAPI: the Mono abstraction layer
-	that allows our runtime to execute code that depend on this
-	behaviour.
-
-** Useful links
-
-	Paolo Molaro found a few interesting links:
-
-	<ul>
-		* On compilation of stack-based languages:<br>
-		<a href="http://www.complang.tuwien.ac.at/projects/rafts.html">
-		http://www.complang.tuwien.ac.at/projects/rafts.html</a>
-
-		* A paper on fast JIT compilation of a stack-based language:<br>
-		  <a href="http://www.research.microsoft.com/~cwfraser/pldi99codegen.pdf">
-		  http://www.research.microsoft.com/~cwfraser/pldi99codegen.pdf</a>
-
-		* Vmgen generates much of the code for efficient virtual machine (VM)
-		  interpreters from simple descriptions of the VM instructions:<br>
-		  <a href="http://www.complang.tuwien.ac.at/anton/vmgen/">
-		  http://www.complang.tuwien.ac.at/anton/vmgen</a>
-	</ul>
-
-** PInvoke
-
-	PInvoke is the mechanism we are using to wrap Unix API calls
-	as well as talking to system libraries.
-
-	Initially we used libffi, but it was fairly slow, so we have
-	reused parts of the JIT work to create efficient PInvoke
-	trampolines.
-
-** Remoting
-
-	Mono has support for remoting and proxy objects, just like
-	.NET does.  The runtime provides these facilities.
-
-** Porting
-
-	If you are interested in porting the Mono runtime to other
-	platforms, you might find the pre-compiled <a
-	href="archive/mono-tests.tar.gz">Mono regression test
-	suite</a> useful to debug your implementation.
-
-* COM and XPCOM
-
-	We plan on adding support for XPCOM on Unix and COM on Microsoft
-	Windows later in our development process.
-
diff --git a/web/sqlclient b/web/sqlclient
deleted file mode 100755
index d28169b..0000000
--- a/web/sqlclient
+++ /dev/null
@@ -1,263 +0,0 @@
-* Microsoft SQL Server Provider
-
-<ul>
-	<li>ADO.NET Provider for Microsoft SQL Server 7/2000 databases</li>
-
-	<li>Exists in namespace System.Data.SqlClient and assembly System.Data</li>
-	
-	<li>Created by Tim Coleman</li>
-	
-	<li>Used the <a href="http://www.freetds.org/">FreeTDS</a> and 
-	<a href="http://jtds.sourceforge.net/">jTDS</a> projects as resources.</li>
-	
-	<li>Implemented in 100% C#</li>
-	
-	<li>Is similar to the Mono.Data.TdsClient and Mono.Data.SybaseClient providers.</li>
-	
-	<li>Requires the assembly Mono.Data.Tds.dll which implements the TDS protocol in 100% C#.</li>
-	
-	<li>Uses TDS Protocol Version 7.0</li>
-	
-	<li>Bugs with Mono or the data provider should be reported 
-	in Mono's Bugzilla <a href="http://bugzilla.ximian.com/">here</a>.  If you
-	do not have Bugzilla user account, it is free 
-	and easy to 
-	create one <a href="http://bugzilla.ximian.com/createaccount.cgi">here</a>.</li>
-	
-</ul>
-
-
-** Current Status
-
-
-<ul>
-
-	<li>Connect to Microsoft SQL Server 7/2000 databases via SQL Server authentication and NT Authentication.</li>
-	
-	<li>Connection pooling works.</li>
-	
-	<li>Stored Procedures work.</li>
-	
-	<li>Parameters work.</li>
-	
-	<li>Prepare works.</li>
-	
-	<li>SQL commands can be executed
-	via ExecuteNonQuery() of a SqlCommand.</li>
-	
-	<li>SQL aggregates can be executed and a single row and single column
-	result can be retrieved via ExecuteScalar() of a SqlCommand</li>
-	
-	<li>SQL queries can be executed via ExecuteReader() and results 
-	can be retrieved via SqlDataReader.</li>
-	
-	<li>a DataTable with schema info about a result can be gotten via GetSchemaTable()
-	in a SqlDataReader</li>
-	
-	<li>XML can be read via ExecuteXmlReader in a SqlCommand.</li>
-	
-	<li>Data can be filled in a DataTable in a DataSet via a SqlDataAdapter</li>
-	
-	<li>Works in the SQL# command-line and GTK# GUI version</li>
-</ul>
-
-** Action plan
-
-<ul>
-	
-	<li>Needs more testing and fixing bugs</li>
-	
-	<li>Start work on TDS Protocol Version 8.0 support</li>
-	
-	<li>Add support for the .NET Framework 2.0 (Whidbey)</li>
-	
-	<li>Add support for Microsoft SQL Server 2005 (Yukon) support</li>
-
-</ul>
-
-** Testing
-
-<ul>
-	<li>Have a working mono and mcs installed</li>
-	
-	<li>Have access to a Microsoft SQL Server database 
-	or either download it:
-		<ul>
-			<li><a href="http://www.microsoft.com/sql/default.asp">Microsoft SQL Server</a></li>
-		</ul>
-	</li>
-	
-	<li><b>IMPORTANT:</b> If using Microsoft SQL Server 2000, make sure
-	you are using at least Service Pack 3 for Microsoft SQL Server 2000.  If using
-	MSDE 2000, make sure you have the special Service Pack 3 for MSDE 2000.  You
-	can get it from <a href="http://www.microsoft.com/sql/downloads/2000/sp3.asp">here</a></li>
-	
-	<li>For those that only have MSDE installed.  You can change the authentication mode 
-	from Windows Only Authentication to SQL Server and Windows Authentications (also knows as Mixed-mode authentication)
-	via the <a href="http://support.microsoft.com/default.aspx?scid=kb;en-us;Q322336&sd=tech#4">registry</a></li>.  It is
-	the LoginMode you need to change.  By default,
-	MSDE is installed with Windows Only Authentication. If you want SqlClient to work with MSDE via SQL Server authentication, you will
-	need to change the setting. Otherwise, you wil have to use NT Authentication.</a>
-	
-	<li>If using MSDE, you might need to create a new user with password.  Give
-    this user access to various databases in this MSDE instance.  Also, for each
-    database, give this new user at least SELECT access to the various tables you want
-    to retrieve data from.</li>
-	
-	<li>If you have Enterprise Manager, you can easily change the authentication mode
-	for both MSDE and Microsoft SQL Server.  To change the authentication mode in 
-	Enterprise Mananger, select the instance, right-click on it, and select properites.
-	The SQL Server properties dialog for that instance will pop up.  Choose the Security
-	tab.  Change the Authentication from Windows Only to SQL Server and Windows.  If
-	the instance of your database does not show up in Enterprise Manager, Register first
-	by selecting the Action menu and choosing New SQL Server Registration.</li>
-
-	<li>Located at mcs/class/System.Data/Test is a test for System.Data.SqlClient
-	named SqlTest.cs and you could use this as a basis for your test.</li>
-	
-	<li>If you want to use Integrated Security (aka NT Authentication aka Trusted Connection aka Domain Login), you
-	will need to specify the Domain User ID and Password.  This is because Mono is not integrated with Windows
-	nor SQL Server.</li>
-	
-	<li>Has a connection string format for SQL Server Authentication:
-<pre>
- Server=hostname;
- Database=databaseName;
- User ID=sqlServerUserid;
- Password=sqlServerPassword
-</pre>
-	</li>
-	<li>Has a connection string format for NT Authentication:
-<pre>
- Server=hostname;
- Database=databaseName;
- User ID=windowsDomain\windowsUserid;
- Password=windowsPassword;
- Integrated Security=SSPI
-</pre>
-	</li>
-
-	<li>The Server part can be used three ways:
-	
-		<table border=1>
-			<tr>
-				<td><b>Server Definition</b></td> <td><b>Example</b></td>
-			</tr>	
-		
-			<tr>
-				<td>hostname</td> <td>Server=MYHOST</td>
-			</tr>
-			
-			<tr>
-				<td>hostname,port</td> <td>Server=MYHOST,1433</td>
-			</tr>
-			
-			<tr>
-				<td>hostname\instance</td> <td>Server=MYHOST\NETSDK</td>
-			</tr>
-		</table>
-	</li>
-	
-	<li>C# Example using SQL Server Authentication:
-<pre>
- using System;
- using System.Data;
- using System.Data.SqlClient;
- 
- public class Test 
- {
-    public static void Main(string[] args)
-    {
-       string connectionString = 
-          "Server=MyServer;" +
-          "Database=pubs;" +
-          "User ID=MySqlServerUserId;" +
-          "Password=MySqlServerPassword;";
-       IDbConnection dbcon;
-       dbcon = new SqlConnection(connectionString);
-       dbcon.Open();
-       IDbCommand dbcmd = dbcon.CreateCommand();
-       string sql = 
-           "SELECT fname, lname " +
-           "FROM employee";
-       dbcmd.CommandText = sql;
-       IDataReader reader = dbcmd.ExecuteReader();
-       while(reader.Read()) {
-            string FirstName = (string) reader["fname"];
-            string LastName = (string) reader["lname"];
-            Console.WriteLine("Name: " + 
-                 FirstName + " " + LastName);
-       }
-       // clean up
-       reader.Close();
-       reader = null;
-       dbcmd.Dispose();
-       dbcmd = null;
-       dbcon.Close();
-       dbcon = null;
-    }
- }
-</pre>
-	</li>
-
-	<li>C# Example using NT Authentication (Integrated Security)
-<pre>
- using System;
- using System.Data;
- using System.Data.SqlClient;
- 
- public class Test 
- {
-    public static void Main(string[] args)
-    {
-       string connectionString = 
-          "Server=MyServer;" +
-          "Database=pubs;" +
-          "User ID=MyWindowsDomain\\MyWindowsUserid;" +
-          "Password=MyWindowsPassword;" +
-          "Integrated Security=SSPI";
-       IDbConnection dbcon;
-       dbcon = new SqlConnection(connectionString);
-       dbcon.Open();
-       IDbCommand dbcmd = dbcon.CreateCommand();
-       string sql = 
-           "SELECT fname, lname " +
-           "FROM employee";
-       dbcmd.CommandText = sql;
-       IDataReader reader = dbcmd.ExecuteReader();
-       while(reader.Read()) {
-            string FirstName = (string) reader["fname"];
-            string LastName = (string) reader["lname"];
-            Console.WriteLine("Name: " + 
-                 FirstName + " " + LastName);
-       }
-       // clean up
-       reader.Close();
-       reader = null;
-       dbcmd.Dispose();
-       dbcmd = null;
-       dbcon.Close();
-       dbcon = null;
-    }
- }
-</pre>
-	</li>
-
-	<li>Building C# Example:
-	<ul>
-		<li>Save the example to a file, such as, TestExample.cs</li>
-		<li>Build on Linux:
-<pre>
-	mcs TestExample.cs -r System.Data.dll
-</pre>
-		</li>
-	</ul>
-	</li>
-	<li>Running the Example:
-<pre>
-mono TestExample.exe
-</pre>
-	</li>
-
-</ul>
-
diff --git a/web/sqlite b/web/sqlite
deleted file mode 100755
index 88a2f99..0000000
--- a/web/sqlite
+++ /dev/null
@@ -1,143 +0,0 @@
-* SQL Lite Data Provider
-
-<ul>
-	<li>ADO.NET Data Provider for 
-	the <a href"http://www.hwaci.com/sw/sqlite/">SQL Lite</a> which 
-	is an embeddable SQL database engine</li>
-
-	<li>From the SQL Lite web page: SQLite is a C library that 
-	implements an embeddable SQL database engine. Programs that link with 
-	the SQLite library can have SQL database access without 
-	running a separate RDBMS process. The distribution 
-	comes with a standalone command-line access program (sqlite) that 
-	can be used to administer an SQLite database and which serves 
-	as an example of how to use the SQLite library.  SQLite is not a client library 
-	used to connect to a big database server. SQLite is the server. The SQLite 
-	library reads and writes directly to and from the database files on disk.</li>
-
-	<li>SQL Lite can be downloaded 
-	from <a href="http://www.hwaci.com/sw/sqlite/download.html">here</a>.
-	binaries exist for Linux and Windows.  sqlite.dll on Windows 
-	and sqlite.so on Linux.  The source code is available too.</li>
-
-	<li>Exists in namespace and assembly Mono.Data.SqliteClient</li>
-	
-	<li>Created by Vladimir Vukicevic so he could have a database of
-	thumbnail images for mPhoto.  mPhoto is GUI application 
-	for cataloging images.  mPhoto runs on Mono 
-	and uses <a href="http://www.go-mono.com/gtk-sharp.html">GTK#</a> for its GUI.</li>
-
-	<li>Bugs with Mono or the data provider should be reported 
-	in Mono's Bugzilla <a href="http://bugzilla.ximian.com/">here</a>.  If you
-	do not have Bugzilla user account, it is free 
-	and easy to 
-	create one <a href="http://bugzilla.ximian.com/createaccount.cgi">here</a>.</li>
-		
-</ul>
-
-** Current Status
-
-<ul>
-	<li>Able to connect, execute commands, and retrieve data...</li>
-	
-	<li>Works in mPhoto by providing access to a SQL Lite database to store images.</li>
-</ul>
-
-** Action Plan
-
-<ul>
-	<li>Create a DataAdapter for SQL Lite named SqliteDataAdapter that can be used to 
-	Fill a DataTable in a DataSet</li>
-	
-	<li>Get the method GetSchemaTable() in class SqliteDataReader to return a DataTable
-	that works</li>
-</ul>
-
-** Testing
-
-<ul>
-	<li>Have a working mcs and mono</li>
-	
-	<li>Make sure Mono.Data.SqliteClient.dll was built and is installed
-	in the same place as the mono class libraries.</li>
-	
-	<li>If you do not have <a href"http://www.hwaci.com/sw/sqlite/download.html">SQL Lite</a>,
-	download it.  There are binaries for Windows and Linux.</li>
-	
-	<li>There is a test named SqliteTest.cs found at mcs/class/Mono.Data.SqliteTest/Test</li>
-	
-	<li>Has a connection string format of "URI=file:some/path".  For example, 
-	the connection string "URI=file:SqliteTest.db" will use the database file 
-	named SqliteTest.db, if it does not exist, the file will be created.</li>
-	
-	<li>C# Example:
-<pre>
- using System;
- using System.Data;
- using Mono.Data.SqliteClient;
- 
- public class Test 
- {
-    public static void Main(string[] args)
-    {
-       string connectionString = "URI=file:SqliteTest.db";
-       IDbConnection dbcon;
-       dbcon = new SqliteConnection(connectionString);
-       dbcon.Open();
-       IDbCommand dbcmd = dbcon.CreateCommand();
-       // requires a table to be created named employee
-       // with columns firstname and lastname
-       // such as,
-       //        CREATE TABLE employee (
-       //           firstname varchar(32),
-       //           lastname varchar(32));
-       string sql = 
-          "SELECT firstname, lastname " + 
-          "FROM employee";
-       dbcmd.CommandText = sql;
-       IDataReader reader = dbcmd.ExecuteReader();
-       while(reader.Read()) {
-            string FirstName = (string) reader[0];
-            string LastName = (string) reader[1];
-            Console.WriteLine("Name: " + 
-                FirstName + " " + LastName);
-       }
-       // clean up
-       reader.Close();
-       reader = null;
-       dbcmd.Dispose();
-       dbcmd = null;
-       dbcon.Close();
-       dbcon = null;
-    }
- }
-</pre>
-	</li>
-	<li>Building C# Example:
-	<ul>
-		<li>Save the example to a file, such as, TestExample.cs</li>
-		<li>Build on Linux:
-<pre>
-	mcs TestExample.cs -r System.Data.dll \
-	    -r Mono.Data.SqliteClient.dll
-</pre>
-		</li>
-		<li>Build on Windows via Cygwin:
-<pre>
-	mono C:/cygwin/home/MyHome/mono/install/bin/mcs.exe \
-	     TestExample.cs \
-	     -lib:C:/cygwin/home/MyHome/mono/install/lib \
-	     -r System.Data.dll \
-	     -r Mono.Data.SqliteClient.dll
-</pre>
-		</li>
-	</ul>
-	</li>
-	<li>Running the Example:
-<pre>
-mono TestExample.exe
-</pre>
-	</li>
-
-</ul>
-
diff --git a/web/status b/web/status
deleted file mode 100644
index 64948ba..0000000
--- a/web/status
+++ /dev/null
@@ -1,40 +0,0 @@
-* Project Status
-
-
-	Pieces of Mono that have been implemented:
-
-	<ul>
-		* C# compiler: The C# compiler is mostly complete, a 
-	 	few features are still missing (for a list, check the
-		<a href="c-sharp.html">C# compiler</a> web page.
-
-		* The Mono JIT engine (<b>mono</b>.  The JIT engine is
-	        the real
-		virtual machine that we support.  It is
-		currently functional, and we are improving its speed,
-		and making it feature complete.
-
-		* A CIL bytecode interpreter (<b>mint</b>).  This
-		currently can be used to run most .NET programs
-		(modulo the fact that our class libraries are not
-		complete enough).
-
-		<b>mint</b> can currently run the Mono C# compiler and
-		the compiler generates valid code.  
-
-		We use <b>mint</b> as a reference implementation of
-		the runtime environment and to quickly support
-		non-Intel platforms.
-
-		* Metadata library: Can currently parse
-		and load information from .NET modules (executables
-		and DLL files).
-
-		* Disassembler: Can disassemble .NET modules. Still
-		lacking exception handling as well as useful debugging
-		tools (hex dumping, token dumping).
-
-		* Class Libraries: You can check the current status in the
-		  <a href="class-status.html">Class Status page</a>.
-	</ul>
-
diff --git a/web/sybase b/web/sybase
deleted file mode 100755
index 85deca1..0000000
--- a/web/sybase
+++ /dev/null
@@ -1,153 +0,0 @@
-* Sybase Data Provider
-
-<ul>
-	<li>ADO.NET Provider for Sybase SQL Server databases</li>
-
-	<li>Exists in namespace Mono.Data.SybaseClient and assembly Mono.Data.SybaseClient</li>
-	
-	<li>Created by Tim Coleman</li>
-	
-	<li>Used the <a href="http://www.freetds.org/">FreeTDS</a> and 
-	<a href="http://jtds.sourceforge.net/">jTDS</a> projects as resources.</li>
-	
-	<li>Implemented in 100% C#</li>
-	
-	<li>Is similar to the Mono.Data.TdsClient and System.Data.SqlClient providers.</li>
-	
-	<li>Requires the assembly Mono.Data.Tds.dll which implements the TDS protocol in 100% C#.</li>
-	
-	<li>Uses TDS Protocol Version 5.0</li>
-
-	<li>Bugs with Mono or the data provider should be reported 
-	in Mono's Bugzilla <a href="http://bugzilla.ximian.com/">here</a>.  If you
-	do not have Bugzilla user account, it is free 
-	and easy to 
-	create one <a href="http://bugzilla.ximian.com/createaccount.cgi">here</a>.</li>
-
-
-</ul>
-
-** Current Status
-	
-<ul>	
-	<li>Able to connect to Sybase databases</li>
-	
-	<li>SQL commands can be executed
-	via ExecuteNonQuery() of a SybaseCommand.</li>
-	
-	<li>SQL aggregates can be executed and a single row and single column
-	result can be retrieved via ExecuteScalar() of a SybaseCommand</li>
-	
-	<li>SQL queries can be executed via ExecuteReader() and results 
-	can be retrieved via SybaseDataReader.</li>
-	
-	<li>a DataTable with schema info about a result can be gotten via GetSchemaTable()
-	in a SybaseDataReader</li>
-	
-	<li>Data can be filled in a DataTable in a DataSet via a SybaseDataAdapter</li>
-</ul>
-
-** Action plan
-
-<ul>
-	<li>Connection timeouts is being developed now.
-	
-	<li>Needs more testing...
-
-</ul>
-
-** Testing
-
-<ul>
-	<li>Have a working mono and mcs installed</li>
-	
-	<li>Have access to a Sybase database 
-	or either download it:
-		<ul>
-			<li><a href="http://www.sybase.com/downloads">Sybase</a></li>
-		</ul>
-	</li>
-	
-	<li>Located at mcs/class/System.Data/Test is a test for System.Data.SqlClient
-	named SqlTest.cs and you could use this as a basis for your test.</li>
-	
-	<li>Has a connection string format:
-<pre>
- Server=hostname;Database=databaseName;User ID=userid;Password=password
-</pre>
-	</li>
-	<li>The Server part can be used two ways:
-		<ul>
-			<li>hostname - "Server=MYHOST"</li>
-			<li>hostname,port - "Server=MYHOST,1533"</li>
-		</ul>
-	</li>
-		
-	<li>C# Example:
-<pre>
- using System;
- using System.Data;
- using Mono.Data.SybaseClient;
- 
- public class Test 
- {
-    public static void Main(string[] args)
-    {
-       string connectionString = 
-          "Server=localhost;" +
-          "Database=pubs;" +
-          "User ID=myuserid;" +
-          "Password=mypassword;";
-       IDbConnection dbcon;
-       dbcon = new SybaseConnection(connectionString);
-       dbcon.Open();
-       IDbCommand dbcmd = dbcon.CreateCommand();
-       string sql = 
-            "SELECT fname, lname " + 
-            "FROM employee";
-       dbcmd.CommandText = sql;
-       IDataReader reader = dbcmd.ExecuteReader();
-       while(reader.Read()) {
-            string FirstName = (string) reader["fname"];
-            string LastName = (string) reader["lname"];
-            Console.WriteLine("Name: " + 
-                 FirstName + " " + LastName);
-       }
-       // clean up
-       reader.Close();
-       reader = null;
-       dbcmd.Dispose();
-       dbcmd = null;
-       dbcon.Close();
-       dbcon = null;
-    }
- }
-</pre>
-	</li>
-	<li>Building C# Example:
-	<ul>
-		<li>Save the example to a file, such as, TestExample.cs</li>
-		<li>Build on Linux:
-<pre>
-	mcs TestExample.cs -r System.Data.dll \
-	    -r Mono.Data.SybaseClient.dll
-</pre>
-		</li>
-		<li>Build on Windows via Cygwin:
-<pre>
-	mono C:/cygwin/home/MyHome/mono/install/bin/mcs.exe \
-	     TestExample.cs \
-	     -lib:C:/cygwin/home/MyHome/mono/install/lib \
-	     -r System.Data.dll -r Mono.Data.SybaseClient.dll
-</pre>
-		</li>
-	</ul>
-	</li>
-	<li>Running the Example:
-<pre>
-mono TestExample.exe
-</pre>
-	</li>
-
-</ul>
-
diff --git a/web/tds-providers b/web/tds-providers
deleted file mode 100644
index 6442e69..0000000
--- a/web/tds-providers
+++ /dev/null
@@ -1,164 +0,0 @@
-* Design of the Microsoft SQL Server, Sybase, and TDS Data Providers in Mono
-
-	<ul>
-		* After much discussion among the Mono ADO.NET developers,
-		  we have come up with the design of implementing a Sybase, Microsoft 
-		  SQL Server, and TDS Generic ADO.NET providers.  These providers have
-		  been created and are actively developed by Tim Coleman.
-
-		* Since Sybase and Microsoft SQL Server databases both 
-		  use the TDS protocol for data access, and other implementations 
-		  of TDS (FreeTDS and jTDS) have included support for multiple 
-		  versions of the TDS, we have decided to do the same.
-
-		* The TdsClient ADO.NET provider will be Mono's first provider 
-		  written completely in C# without any dependencies except 
-		  the usual suspects: corlib.dll, System.dll, and System.Xml.dll.
-	</ul>
-
-* New ADO.NET Providers
-
-<p>There will be three ADO.NET providers that will use TDS.	
-
-		<ol>
-		  <li><p>Mono.Data.SybaseClient namepace and assembly will 
-		  hold the ADO.NET provider for Sybase SQL Server database.  
-		  This provider uses TDS version 5.0 which 
-		  can only be used with Sybase databases.
-
-		  <li><p>System.Data.SqlClient namespace and System.Data assembly 
-		  will hold the ADO.NET provider
-          for Microsoft SQL Server 7.0/2000 databases.  This provider is to be 
-          compatible with SqlClient in Microsoft .NET and uses TDS version 7.0 
-          which only supports Microsoft SQL Server 7.0/2000.  
-          There is TDS version 8.0 
-          which we will need to support as well, but it is used for 
-          Microsoft SQL Server 2000 databases.
-
-		  <li><p>Mono.Data.TdsClient namespace and assembly is a generic 
-		  provider for older TDS databases.  This provider will default to 
-		  using TDS version 4.2 which can be used by older Sybase and 
-		  Microsoft SQL Server databases.
-		 </ol>
-
-* Building The New Providers
-
- <p> All three providers will use common internal code 
-		at Mono.Data.TdsClient.Internal.  Any classes in 
-		Mono.Data.TdsClient.Internal will have the internal 
-		keyword and will be built with the assembly of that provider.
-		<ol>
-		<li><p>SqlClient will build its assembly System.Data using files 
-		  from System.Data, System.Data.SqlClient, System.Data.SqlTypes, 
-		  System.Data.Common, and Mono.Data.TdsClient.Internal.  
-		 
-		  <p>SqlClient 
-		  will only reference the usual
-		  suspects: corlib.dll, System.dll, and System.Xml.dll. SqlClient will be 
-		  a wrapper around TdsClient.Internal, but provide specific functionality to
-		  Microsoft SQL Server 7.0/2000 databases.
-
-		  <p>SqlClient build example:
-
-<pre>
- mcs -target:library -out:System.Data.dll \
-   System.Data.SqlClient/*.cs \
-   ..\Mono.Data.TdsClient\Mono.Data.TdsClient.Internal\*.cs \
-   [any other classes in System.Data assembly...]  \
-   -r corlib.dll -r System.dll -r System.Xml.dll
-</pre>
-
-		<li><p>SybaseClient will build its assembly Mono.Data.SybaseClient using 
-		  files from Mono.Data.SybaseClient and Mono.Data.TdsClient.Internal.  
-		  SybaseClient will reference
-          the usual suspects plus System.Data.dll  SybaseClient will 
-          be a wrapper around TdsClient.Internal, but provide specific 
-          functionality to Sybase.
-
-		  <p>SybaseClient build example:
-
-<pre>
- mcs -target:library -out:Mono.Data.SybaseClient.dll \
-    Mono.Data.SybaseClient\*.cs \
-    ..\Mono.Data.TdsClient\Mono.Data.TdsClient.Internal\*.cs
-    -r corlib.dll -r System.dll -r System.Xml.dll -r System.Data.dll
-</pre>
-    
-		<li><p>TdsClient will build its assembly Mono.Data.TdsClient 
-		  using files from Mono.Data.TdsClient
-          and Mono.Data.TdsClient.Internal.  TdsClient will reference the 
-          usual suspects plus System.Data.dll  TdsClient is a wrapper 
-          provider around TdsClient.Internal used for generic
-          unit tests.  TdsClient will a wrapper around TdsClient.Internal 
-          as a generic TDS provider 
-          and allow TDS configuration options not exposed in SqlClient 
-          nor SybaseClient, such as, TdsVersion will be exposed in TdsClient 
-          but not in SqlClient nor SybaseClient.
-
-		 <p>TdsClient build example:
-
-<pre>
-mcs -target:library -out:Mono.Data.TdsClient.dll \
-    Mono.Data.TdsClient\*.cs \
-    Mono.Data.TdsClient.Internal\*.cs \
-    -r corlib.dll -r System.dll -r System.Xml.dll -r System.Data.dll
-</pre>
-		</ol>
-    
-* Classes in Mono.Data.TdsClient.Internal will:
-
-	<ul>
-	<li>use the internal keyword to prevent exposing these classes
-          to the System.Data.dll assembly.
-          
-    <li> implement the ADO.NET interfaces just like any other ADO.NET provider, such as,
-          IDbConnection, IDbCommand, IDataReader, IDataRecord, IDataAdapter, etc...
-          
-    <li> be sealed just like other providers
-        
-    <li> provide features to be directly used by the SqlClient and SybaseClient 
-          providers, such
-          as, setting the default TDS version: SqlClient to 7.0 and SybaseClient 
-          to 5.0 and TdsClient to 4.2.
-          
-    <li> be written completely in C# or IL assembly language (if need be).
-        
-    <li> implement the TDS protocol version 4.2, 5.0, 7.0, and 8.0. This 
-          is where most of the
-          work will take place.
-          
-    <li> be an internal ADO.NET provider to the public ADO.NET providers:
-          System.Data.SqlClient, Mono.Data.SybaseClient, and Mono.Data.TdsClient.
-	</ul>
-
-* Implementation Details of the TDS Protocol
-
-	<ul>
-		* will be implemented in pure C# from scratch
-		
-		* will reside in Mono.Data.TdsClient.Internal  
-		
-		* will use FreeTDS and jTDS as rerferences.
-	</ul>
-
-* More Information
-
-	<ul>
-		* <a href="http://www.freetds.org/">FreeTDS</a> is C API that implements
-		the TDS protocol.  Has libraries for tds, ctlib, and dblib.  It builds
-		and runs on Windows, Linux, and other platforms.  FreeTDS provides
-		data access to Microsoft SQL Server and Sybase databases. 
-		
-		* <a href="http://jtds.sf.net/">jTDS</a> is a 100% Java JDBC provider
-		for Microsoft SQL Server and Sybase databases.
-		
-		* <a href="http://www.freetds.org/tds.html">TDS Protocol</a>
-	</ul>
-
-* Contribute
-
-	<p>Anybody willing to help?  If so, 
-		contact any of the people working on the ADO.NET support 
-		in Mono: Rodrigo Moya, Tim Coleman, Daniel Morgan, Brian Ritchie, 
-		Vladimir Vukicevic, Ville Palo, Franklin Wise, and others.
-
diff --git a/web/tdsclient b/web/tdsclient
deleted file mode 100755
index 2c58aea..0000000
--- a/web/tdsclient
+++ /dev/null
@@ -1,157 +0,0 @@
-* TDS Generic Provider
-
-<ul>
-	<li>ADO.NET Provider for older Sybase and Microsoft SQL Server databases</li>
-
-	<li>Exists in namespace Mono.Data.TdsClient and assembly Mono.Data.TdsClient</li>
-	
-	<li>Created by Tim Coleman</li>
-	
-	<li>Used the <a href="http://www.freetds.org/">FreeTDS</a> and 
-	<a href="http://jtds.sourceforge.net/">jTDS</a> projects as resources.</li>
-	
-	<li>Implemented in 100% C#</li>
-	
-	<li>Is similar to the Mono.Data.SybaseClient and System.Data.SqlClient providers.</li>
-	
-	<li>Requires the assembly Mono.Data.Tds.dll which implements the TDS protocol in 100% C#.</li>
-	
-	<li>Uses TDS Protocol Version 4.2 by default</li>
-	
-	<li>Bugs with Mono or the data provider should be reported 
-	in Mono's Bugzilla <a href="http://bugzilla.ximian.com/">here</a>.  If you
-	do not have Bugzilla user account, it is free 
-	and easy to 
-	create one <a href="http://bugzilla.ximian.com/createaccount.cgi">here</a>.</li>
-
-</ul>
-
-** Current Status
-
-
-<ul>
-	<li>Only builds on Windows currently due to mcs does not support modules and mcs
-	has problems with code that is internal.</li>
-	
-	<li>Able to connect to Microsoft SQL Server and Sybase databases</li>
-	
-	<li>SQL commands can be executed
-	via ExecuteNonQuery() of a TdsCommand.</li>
-	
-	<li>SQL aggregates can be executed and a single row and single column
-	result can be retrieved via ExecuteScalar() of a TdsCommand</li>
-	
-	<li>SQL queries can be executed via ExecuteReader() and results 
-	can be retrieved via TdsDataReader.</li>
-	
-	<li>a DataTable with schema info about a result can be gotten via GetSchemaTable()
-	in a TdsDataReader</li>
-	
-	<li>Data can be filled in a DataTable in a DataSet via a TdsDataAdapter</li>
-</ul>
-
-** Action plan
-
-<ul>
-	<li>Connection timeouts is being developed now.</li>
-
-	<li>TODO</li>
-</ul>
-
-** Testing
-
-<ul>
-	<li>Have a working mono and mcs installed</li>
-	
-	<li>Have access to a Sybase or Microsoft SQL Server database 
-	or either download it:
-		<ul>
-			<li><a href="http://www.microsoft.com/sql/default.asp">Microsoft SQL Server</a></li>
-			<li><a href="http://www.sybase.com/downloads">Sybase</a></li>
-		</ul>
-	</li>
-	<li>If using Microsoft SQL Server 2000, make sure
-	you are using at least Service Pack 3 for Microsoft SQL Server 2000</li>
-	
-	<li>Located at mcs/class/System.Data/Test is a test for System.Data.SqlClient
-	named SqlTest.cs and you could use this as a basis for your test.</li>
-	
-		<li>Has a connection string format:
-<pre>
- Server=hostname;Database=databaseName;User ID=userid;Password=password
-</pre>
-	</li>
-	<li>The Server part can be used two ways:
-		<ul>
-			<li>hostname - "Server=MYHOST"</li>
-			<li>hostname,port - "Server=MYHOST,1533"</li>
-		</ul>
-	</li>
-	
-	<li>C# Example:
-<pre>
- using System;
- using System.Data;
- using Mono.Data.TdsClient;
- 
- public class Test 
- {
-    public static void Main(string[] args)
-    {
-       string connectionString = 
-          "Server=localhost;" +
-          "Database=pubs;" +
-          "User ID=myuserid;" +
-          "Password=mypassword;";
-       IDbConnection dbcon;
-       dbcon = new TdsConnection(connectionString);
-       dbcon.Open();
-       IDbCommand dbcmd = dbcon.CreateCommand();
-       string sql = 
-           "SELECT fname, lname " +
-           "FROM employee";
-       dbcmd.CommandText = sql;
-       IDataReader reader = dbcmd.ExecuteReader();
-       while(reader.Read()) {
-            string FirstName = (string) reader["fname"];
-            string LastName = (string) reader["lname"];
-            Console.WriteLine("Name: " + 
-                 FirstName + " " + LastName);
-       }
-       // clean up
-       reader.Close();
-       reader = null;
-       dbcmd.Dispose();
-       dbcmd = null;
-       dbcon.Close();
-       dbcon = null;
-    }
- }
-</pre>
-	</li>
-	<li>Building C# Example:
-	<ul>
-		<li>Save the example to a file, such as, TestExample.cs</li>
-		<li>Build on Linux:
-<pre>
-	mcs TestExample.cs -r System.Data.dll \
-	    -r Mono.Data.TdsClient.dll
-</pre>
-		</li>
-		<li>Build on Windows via Cygwin:
-<pre>
-	mono C:/cygwin/home/MyHome/mono/install/bin/mcs.exe \
-	     TestExample.cs \
-	     -lib:C:/cygwin/home/MyHome/mono/install/lib \
-	     -r System.Data.dll -r Mono.Data.TdsClient.dll
-</pre>
-		</li>
-	</ul>
-	</li>
-	<li>Running the Example:
-<pre>
-mono TestExample.exe
-</pre>
-	</li>
-</ul>
-
diff --git a/web/testing b/web/testing
deleted file mode 100644
index ab60d7f..0000000
--- a/web/testing
+++ /dev/null
@@ -1,273 +0,0 @@
-* Testing
-
-	Daily <a href="http://www.go-mono.com/tests/index.php">test</a> results.
-
-	Testing is an important part of the Mono project: every one of its
-	three major components has a test suite tailored for its needs.  This
-	is very helpful, because in the course of developing the software it
-	is very common to introduce bugs in existing code.  A test suite
-	helps us fix the bugs as soon as they are introduced.
-
-	There are various kinds of tests in Mono:
-	<ul>
-		<li><a href="#unit"><b>Class Library Unit
-		Tests:</b></a> These are used to test the class
-		libraries.
-
-		<li><a href="#compiler"><b>Compiler tests</b></a>: Both
-		tests that should pass and tests that should fail are included. 
-
-		<li><a href="#runtime"><b>Runtime tests</b></a>: Tests for 
-		the virtual machine.
-
-		<li><a href="#aspnet"><b>ASP.NET tests</b></a>: ASP.NET tests.
-
-		<li><a href="#ws"><b>Web Services tests</b></a>: Web Services 
-		client/server tests.
-	</ul>
-
-<a name="unit"></a>
-* Class Library Tests
-
-	All classes in Mono libraries should have comprehensive unit test
-	suites to go with them.  Unit testing is a software engineering
-  	methodology that makes it easier to build correct code.  Every
-  	method in every class should have a set of tests to verify
-  	that they work correctly.  Mono also needs a testing framework
-	to make it easy to write and run lots of tests. 
-
-	In some classes, we might also provide standalone tests because of
-	some reasons such as too huge testcases, another downloading and so on.
-	(For example, managed XSLT has standalone test which downloads and
-	expands some megabytes of OASIS test suite.)
-
-	Here I list them up as long as I know. If you are going to add another
-	standalone tests, please add one line here. It is also recommended that
-	you add some notes on how to build and run tests.
-
-	<ul>
-
-		* Mono.Data/test/
-		* System.Data/Test, and some individual ADO.NET libraries:
-		  there are some standalone tests. See the bottom of <a href="ado-net.html">
-		  ADO.NET page</a> for detail.
-		* System.Web/Test/TestMonoWeb : see README
-		* System.Web.Services/Test/standalone : see README
-		* System.Windows.Forms/SWFTest/
-		* System.XML/Test/System.Xml/standalone_tests : see README
-		* System.XML/Test/System.Xml.Schema/standalone_tests : see README
-		* System.XML/System.Xml.Serialization/standalone_tests/
-		* System.XML/Test/System.Xml.Xsl/standalone_tests : see README
-		* Commons.Xml.Relaxng/Test/standalone_tests : see README
-
-	</ul>
-
-** Getting started
-
-	If you are new to writing NUnit tests, there is a template you may use
-	to help get started. The file is:
-
-		<b>mcs/class/doc/TemplateTest.cs</b>
-
-	Save a copy of this file in the appropriate test subdirecty
-	(see below), and replace all the {text} markers with
-	appropriate code. Comments in the template are there to guide
-	you. You should also look at existing tests to see how other
-	people have written them.
-	mcs/class/corlib/Test/System.Collections/CollectionBaseTest.cs
-	is a small one that might help.
-
-	The directory that will contain your new file depends on the
-	assembly/namespace of the class for which you are creating the
-	tests.  Under mcs/class there is a directory for each
-	assembly. In each assembly there is a Test directory,
-	e.g. mcs/class/corlib/Test. In the Test directory there are
-	sub-directories for each namespace in the assembly,
-	e.g. mcs/class/corlib/Test/Sytem. Put your new test file in
-	the appropriate sub-directory under Test for the class you are
-	testing.
-	
-	Once all of that is done, you can do a 'make test' from the top mcs
-	directory.  Your test class needs also to be listed in the
-	.sources file at the top of the Test directory.
-
-* Tips on writing Unit tests.
-
-	You should look at the <a href="http://nunit.org">NUnit documentation</a>,
-	as it is a fantastic product, and includes fantastic documentation,
-	but here are some tips for those of you who are already reading
-	this web page.
-
-
-** Provide an unique error message for Assert()
-
-	Include an unique message for each Assert() so that when the assert
-	fails, it is trivial to locate it in the source. Otherwise, it may be
-	difficult to determine which part of the test is failing. A good way
-	to ensure unique messages is to use something like #A01, #A02 etc.
-
-	    Ok:
-	<pre>
-	
-		AssertEquals("array match", compare[0], i1[0]);
-		AssertEquals("array match", compare[1], i1[1]);
-		AssertEquals("array match", compare[2], i1[2]);
-		AssertEquals("array match", compare[3], i1[3]);
-	</pre>
-
-	    Excellent:
-	<pre>
-		AssertEquals("#A01", compare[0], i1[0]);
-		AssertEquals("#A02", compare[1], i1[1]);
-		AssertEquals("#A03", compare[2], i1[2]);
-		AssertEquals("#A04", compare[3], i1[3]);
-	</pre>
-	
-	Once you used such a number in an Assert(), don't change it later on -
-	people might use it it identify the test in bug reports or in mailing
-	lists.
-
-** Use AssertEquals() to compare things, not Assert().
-
-	Do not compare two values with Assert() - if the test fails,
-	people have no idea what went wrong while AssertEquals()
-	reports the failed value.
-
-	Ok:
-	<pre>
-	        Assert ("A01", myTicks[0] == t1.Ticks);
-	</pre>
-
-	Excellent:
-	<pre>
-	        AssertEquals ("A01", myTicks[0], t1.Ticks);
-	</pre>
-
-** Test your test with the Microsoft runtime
-	
-	If possible, try to run your testsuite with the Microsoft runtime on
-	.NET on Windows and make sure all tests in it pass. This is especially
-	important if you're writing a totally new testcase - without this
-	check you can never be sure that your testcase contains no bugs ....
-	
-	Don't worry if you're writing your test on Linux, other people can
-	test it for you on Windows.
-	
-	Sometimes you may discover that a test doesn't show the expected
-	result when run with the Microsoft runtime - either because there is a
-	bug in their runtime or something is misleading or wrong in their
-	documentation. In this case, please put a detailed description of the
-	problem to mcs/class/doc/API-notes and do also report it to the 
-	<a href="mailing-lists.html">mailing list</a> - we'll forward this to the
-	Microsoft people from time to time to help them fix their documentation
-	and runtime.
-
-** Unit tests.
-
-	Why do unit testing? It becomes simple to run automated tests
-	for the whole library. Unit tests are a safety net - you can
-	change part of the code and verify that you haven't broken
-	anything. Ideally, tests are written before the actual library
-	code itself. And every time a bug is discovered, a test should
-	be written to demonstrate the bug and its fix. Then, if
-	you ever reintroduce the bug, you will know immediately. For
-	more info, read <a
-	href="http://junit.sourceforge.net/doc/testinfected/testing.htm">
-	JUnit Test Infected: Programmers Love Writing Tests</a>.
-
-
-** Getting Started
-
-	We welcome all contributions to the Class Libary Test Suite.
-
-	There is information to help you get started in CVS at
-	mcs/class/doc/NUnitGuidelines. Once you have written your test, please
-	post it to <a href="mailing-lists.html">mono-list</a>.
-
-	Someone will make sure to add the file or apply the patch as
-	appropriate. If you plan to be an on-going contributor and
-	would like to get cvs account, email <a href="mailto:miguel at ximian.com">miguel</a>.
-
-	Normally, after you send a couple of well-written new files
-	and/or patches to the list, you will be given cvs access.
-
-<a name="compiler"></a>
-* Compiler tests
-
-	Mono ships with three compilers: C#, VB.NET and JScript.  The
-	tests are ran by running the makefile target `make
-	run-test-local' in the appropriate directory.
-
-	The C# compilation tests live in mcs/tests, and the C# error
-	tests live in mcs/errors.
-
-	The VB.NET compilation tests live in mcs/btests. 
-
-<a name="runtime"></a>
-* Runtime Tests
-
-	These tests verify the virtual machine, to run these tests, do:
-
-<pre>
-	cd mono/mono/tests
-	make test
-</pre>
-
-<a name="aspnet"></a>
-* ASP.NET tests
-
-	XSP, the Mono ASP.NET server has tests for ASP.NET pages. It uses
-	<a href="http://nunitasp.sourceforge.net">NUnitAsp</a>. Right now
-	it only has standalone tests, ie., tests that do not need their own
-	global.asax or web.config files.
-
-	If you want to run them, get the xsp CVS module and install it. Then:
-<pre>
-	cd xsp/nunit-tests
-	make
-	cd standalone
-	xsp
-</pre>
-
-	And from another terminal:
-<pre>
-	cd xsp/nunit-tests/standalone
-	nunit-console standalone-tests.dll
-</pre>
-
-<a name="ws"></a>
-* Web Services tests
-
-	The Test directory for the System.Web.Services assembly contains a
-	standalone test suite for testing web services. It tests:
-
-	<ul>
-	<li>Proxy generation using the wsdl tool</li>
-	<li>Access to web services using the generated client proxies</li>
-	<li>Execution of web services in the server</li>
-	</ul>
-
-	This suite not only tests web services running on XSP, but it can also test
-	services running on other platforms and that are available in internet. This
-	will help track down interoperability issues.
-
-	To build the test suite, just run:
-	
-<pre>
-	cd mcs/class/System.Web.Services/Test/standalone
-	xsp --root server
-</pre>
-	
-	And from another terminal:
-<pre>
-	cd mcs/class/System.Web.Services/Test/standalone
-	make
-	nunit-console testclient.dll
-</pre>
-	
-	This will download the wsdl documents, generate the proxies, build a dll with
-	the proxies, and build the nunit tests. Then you can use nunit-console or
-	gnunit to run the tests (the nunit dll is testclient.dll).
-
-	Read the README file in mcs/class/System.Web.Services/Test/standalone for
-	more info.
diff --git a/web/thanks b/web/thanks
deleted file mode 100644
index 5f2df36..0000000
--- a/web/thanks
+++ /dev/null
@@ -1,6 +0,0 @@
-* Thanks
-
-	We would like to thank Tim O'Reilly, Brian Jepson and Nathan
-	Torkington for their help.
-
-	Dave Winer for provided interesting comments and a to read.
diff --git a/web/todo b/web/todo
deleted file mode 100644
index 178950a..0000000
--- a/web/todo
+++ /dev/null
@@ -1,53 +0,0 @@
-** System.Windows.Forms
-
-	Progress on Windows.Forms has been good, but we need more work
-	on this area.  Currently redrawing of controls is not
-	funcional.
-
-** Languages work
-
-	Mono has work-in-progress implementations of JScript and the
-	VB.NET languages
-
-	<ul>
-		<li>Write positive tests for those languages.
-	
-		<li>Write negative tests for those languages.
-
-		<li>Mono-devel-list is the mailing list to discuss
-		improvements and fixes to those compilers.
-	</ul>
-
-** Debugger
-
-	<ul>
-		<li>The Mono debugger needs some better widgets to
-		provide a useful environment, many of those have been
-		authored for Anjuta/gIDE, we should wrap those for the
-		debugger
-
-		<li>Design a small tool-command-language like Tcl to
-		build the debugger on top of it.
-
-		<li>Design work: a new UI design must be done
-		for the debugger and later implemented.
-	</ul>
-
-** Research topics
-
-	<ul>
-		<li>Design and implement a command processor like the
-		Unix shell, but which uses .NET objects as commands.
-		This shell would be a CLS consumer ideally, and only
-		later a CLS producer.  This should make it simple for
-		people to explore the .NET API interactively. 
-	</ul>
-
-** IDE development
-
-	Mono lacks an IDE, and we depend on third-parties to work on
-	these.  
-
-	<ul>
-		Sharp 
-	</ul>
\ No newline at end of file
diff --git a/web/tools b/web/tools
deleted file mode 100644
index 84444ed..0000000
--- a/web/tools
+++ /dev/null
@@ -1,10 +0,0 @@
-* Tools
-
-	The SDK tools have now been built.
-
-	If you are interested in contributing to the IDE effort,
-	please visit the <a href="http://www.monodevelop.com">Mono
-	Develop</a> web site.
-
-	To help on the documentation effort, use the MonoDoc system to
-	contribute from your own computer.
diff --git a/web/winforms b/web/winforms
deleted file mode 100644
index a9a5e8a..0000000
--- a/web/winforms
+++ /dev/null
@@ -1,81 +0,0 @@
-* System.Windows.Forms
-
-	<p>Currently Windows.Forms support is under heavy development. Check Mono's <a 
-	href = "http://www.go-mono.com/mono-roadmap.html">Roadmap</a> for more 
-	details on when it is going to be available.
-
-	<p>System.Windows.Forms in Mono is implemented using System.Drawing. All controls
-	are natively drawn through System.Drawing. System.Windows.Forms implements it's own
-	driver interface to communicate with the host OS windowing system. Currently,
-	we have a driver for Win32 and a driver for X11. 
-	The drivers translate the native window messages into WndProc compatible messages,
-	to provide as much compatibility with native .Net as possible.
-	
-	<p>In terms of integrating visually with the desktop, we have a (still incomplete)
-	themeing interface, currently with a classic Win32 theme and a Gtk theme. 
-
-	<p>The current implementation is still very incomplete, with several large controls
-	(Edit, ListBox, ComboBox, Menus), etc, still being developed. It is too early to
-	file bugs if you cannot compile or run a certain application because of controls
-	missing.
-
-* Why not use Wine?
-
-	<ul>
-
-	<li>Debugging with Wine was extremely hard, and Wine was a moving target, 
-	some of the calls we relied on changed from release to release.
-	<li>Wine/GDI+ interactions were not efficient.
-	<li>Too many cooks contributed to the core, so it was hard to maintain.
-	<li>To many dependencies on install, many people where having problems getting 
-	the very strict winelib requirements right.
-
-	</ul>
-
-	The driver interface should allow us to also create a Wine based driver for 
-	System.Windows.Forms, to support applications performing Win32 P/Invokes, but
-	for now this is not a priority.
-
-
-* Installation
-
-	<p>To get the Windows.Forms support working, you need:
-	
-	<ul>
-	
-	<li> The latest <a href = "http://www.go-mono.com/download.html">Mono</a> package.
-	<li> The latest <a href = "http://www.go-mono.com/download.html">libgdiplus</a> library.
-	<li> The latest <a href = "http://www.cairographics.org/download">Cairo</a> vector graphics library.
-	
-	</ul>
-
-	The current source of System.Windows.Forms resides in mcs/class/Managed.Windows.Forms.
-	The previous version of System.Windows.Forms, based on Wine, still can be found in 
-	mcs/class/System.Windows.Forms, but it is no longer being worked on.
-
-	<p>To use the latest version, go into Managed.Windows.Forms and issue a 'make clean',
-	followed by a 'make install'. Afterwards, the new implementation should be available
-	in the GAC for your use.
-
-* Contributing
-
-	<p>The Winforms effort is being coordinated in the <a
-	href="mailto:mono-winforms-list at ximian.com">mono-winforms-list at ximian.com</a>.
-	If you are interested in helping out with this effort,
-	subscribe to it by sending an email message to <a
-	href="mailto:mono-winforms-list-request at ximian.com">mono-winforms-list-request at ximian.com</a>.
-		
-	<p>If you want to help, you can pick a control and start implementing it's 
-	methods. You can do this either on Windows or on Linux. All controls must be drawn
-	using System.Drawing calls, tied into the themeing interface, and not stubbed.
-
-	<p>If you choose a particular control to work on, send a note to the 
-	winforms list to avoid duplication of effort. 
-	
-
-* System.Drawing
-
-	<p>For details, see the <a
-	href="drawing.html">System.Drawing implementation notes</a>
-	section of the web site.
-

-- 
mono



More information about the Pkg-mono-svn-commits mailing list